summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/char/HPMchar.c7
-rw-r--r--src/char/HPMchar.h2
-rw-r--r--src/char/Makefile.in14
-rw-r--r--src/char/char.c1802
-rw-r--r--src/char/char.h20
-rw-r--r--src/char/geoip.c66
-rw-r--r--src/char/geoip.h2
-rw-r--r--src/char/int_achievement.c252
-rw-r--r--src/char/int_achievement.h53
-rw-r--r--src/char/int_auction.c296
-rw-r--r--src/char/int_auction.h2
-rw-r--r--src/char/int_clan.c155
-rw-r--r--src/char/int_clan.h39
-rw-r--r--src/char/int_elemental.c80
-rw-r--r--src/char/int_elemental.h8
-rw-r--r--src/char/int_guild.c611
-rw-r--r--src/char/int_guild.h18
-rw-r--r--src/char/int_homun.c142
-rw-r--r--src/char/int_homun.h9
-rw-r--r--src/char/int_mail.c297
-rw-r--r--src/char/int_mail.h7
-rw-r--r--src/char/int_mercenary.c89
-rw-r--r--src/char/int_mercenary.h8
-rw-r--r--src/char/int_party.c292
-rw-r--r--src/char/int_party.h10
-rw-r--r--src/char/int_pet.c186
-rw-r--r--src/char/int_pet.h6
-rw-r--r--src/char/int_quest.c110
-rw-r--r--src/char/int_quest.h8
-rw-r--r--src/char/int_rodex.c432
-rw-r--r--src/char/int_rodex.h48
-rw-r--r--src/char/int_storage.c416
-rw-r--r--src/char/int_storage.h10
-rw-r--r--src/char/inter.c436
-rw-r--r--src/char/inter.h15
-rw-r--r--src/char/loginif.c32
-rw-r--r--src/char/loginif.h2
-rw-r--r--src/char/mapif.c2647
-rw-r--r--src/char/mapif.h48
-rw-r--r--src/char/packets_hc_struct.h45
-rw-r--r--src/char/pincode.c333
-rw-r--r--src/char/pincode.h48
-rw-r--r--src/common/HPM.c102
-rw-r--r--src/common/HPM.h8
-rw-r--r--src/common/HPMDataCheck.h260
-rw-r--r--src/common/HPMSymbols.inc.h322
-rw-r--r--src/common/HPMi.h5
-rw-r--r--src/common/Makefile.in28
-rw-r--r--src/common/atomic.h2
-rw-r--r--src/common/cbasetypes.h15
-rw-r--r--src/common/conf.c46
-rw-r--r--src/common/conf.h2
-rw-r--r--src/common/console.c82
-rw-r--r--src/common/core.c86
-rw-r--r--src/common/core.h2
-rw-r--r--src/common/db.c60
-rw-r--r--src/common/db.h2
-rw-r--r--src/common/des.c8
-rw-r--r--src/common/des.h2
-rw-r--r--src/common/ers.c4
-rw-r--r--src/common/ers.h2
-rw-r--r--src/common/grfio.c38
-rw-r--r--src/common/grfio.h2
-rw-r--r--src/common/mapindex.c22
-rw-r--r--src/common/mapindex.h2
-rw-r--r--src/common/md5calc.c10
-rw-r--r--src/common/md5calc.h2
-rw-r--r--src/common/memmgr.c129
-rw-r--r--src/common/memmgr.h7
-rw-r--r--src/common/mmo.h294
-rw-r--r--src/common/mutex.c24
-rw-r--r--src/common/mutex.h2
-rw-r--r--src/common/nullpo.c10
-rw-r--r--src/common/nullpo.h11
-rw-r--r--src/common/packets.c64
-rw-r--r--src/common/packets.h47
-rw-r--r--src/common/packets/packets2003_len_main.h1258
-rw-r--r--src/common/packets/packets2003_len_sak.h1258
-rw-r--r--src/common/packets/packets2004_len_ad.h1620
-rw-r--r--src/common/packets/packets2004_len_main.h1810
-rw-r--r--src/common/packets/packets2004_len_sak.h1734
-rw-r--r--src/common/packets/packets2005_len_ad.h1927
-rw-r--r--src/common/packets/packets2005_len_main.h1935
-rw-r--r--src/common/packets/packets2005_len_sak.h1869
-rw-r--r--src/common/packets/packets2006_len_ad.h1925
-rw-r--r--src/common/packets/packets2006_len_main.h1919
-rw-r--r--src/common/packets/packets2006_len_sak.h1932
-rw-r--r--src/common/packets/packets2007_len_ad.h2223
-rw-r--r--src/common/packets/packets2007_len_main.h2217
-rw-r--r--src/common/packets/packets2007_len_sak.h2203
-rw-r--r--src/common/packets/packets2008_len_ad.h18487
-rw-r--r--src/common/packets/packets2008_len_main.h39478
-rw-r--r--src/common/packets/packets2008_len_re.h2944
-rw-r--r--src/common/packets/packets2008_len_sak.h8968
-rw-r--r--src/common/packets/packets2009_len_main.h15405
-rw-r--r--src/common/packets/packets2009_len_re.h3418
-rw-r--r--src/common/packets/packets2009_len_sak.h3054
-rw-r--r--src/common/packets/packets2010_len_main.h5784
-rw-r--r--src/common/packets/packets2010_len_re.h5291
-rw-r--r--src/common/packets/packets2011_len_main.h7200
-rw-r--r--src/common/packets/packets2011_len_re.h4781
-rw-r--r--src/common/packets/packets2012_len_main.h8486
-rw-r--r--src/common/packets/packets2012_len_re.h8498
-rw-r--r--src/common/packets/packets2013_len_main.h8876
-rw-r--r--src/common/packets/packets2013_len_re.h8941
-rw-r--r--src/common/packets/packets2014_len_main.h9079
-rw-r--r--src/common/packets/packets2014_len_re.h9014
-rw-r--r--src/common/packets/packets2015_len_main.h8641
-rw-r--r--src/common/packets/packets2015_len_re.h8562
-rw-r--r--src/common/packets/packets2016_len_main.h9134
-rw-r--r--src/common/packets/packets2016_len_re.h9140
-rw-r--r--src/common/packets/packets2017_len_main.h9103
-rw-r--r--src/common/packets/packets2017_len_re.h9109
-rw-r--r--src/common/packets/packets2017_len_zero.h5375
-rw-r--r--src/common/packets/packets2018_len_main.h5786
-rw-r--r--src/common/packets/packets2018_len_re.h5670
-rw-r--r--src/common/packets/packets2018_len_zero.h5958
-rw-r--r--src/common/packets/packets2019_len_main.h4381
-rw-r--r--src/common/packets/packets2019_len_re.h4387
-rw-r--r--src/common/packets/packets_len_ad.h39
-rw-r--r--src/common/packets/packets_len_main.h63
-rw-r--r--src/common/packets/packets_len_re.h53
-rw-r--r--src/common/packets/packets_len_sak.h43
-rw-r--r--src/common/packets/packets_len_zero.h33
-rw-r--r--src/common/packets_len.h35
-rw-r--r--src/common/packetsstatic_len.h41
-rw-r--r--src/common/random.c20
-rw-r--r--src/common/random.h2
-rw-r--r--src/common/showmsg.c76
-rw-r--r--src/common/showmsg.h2
-rw-r--r--src/common/socket.c269
-rw-r--r--src/common/socket.h19
-rw-r--r--src/common/spinlock.h2
-rw-r--r--src/common/sql.c194
-rw-r--r--src/common/sql.h4
-rw-r--r--src/common/strlib.c113
-rw-r--r--src/common/strlib.h23
-rw-r--r--src/common/sysinfo.c56
-rw-r--r--src/common/thread.c31
-rw-r--r--src/common/thread.h2
-rw-r--r--src/common/timer.c81
-rw-r--r--src/common/timer.h2
-rw-r--r--src/common/utils.c56
-rw-r--r--src/common/utils.h3
-rw-r--r--src/common/winapi.h2
-rw-r--r--src/config/classes/general.h2
-rw-r--r--src/config/const.h7
-rw-r--r--src/config/core.h6
-rw-r--r--src/config/renewal.h2
-rw-r--r--src/config/secure.h2
-rw-r--r--src/login/HPMlogin.c9
-rw-r--r--src/login/HPMlogin.h2
-rw-r--r--src/login/Makefile.in4
-rw-r--r--src/login/account.c (renamed from src/login/account_sql.c)193
-rw-r--r--src/login/account.h72
-rw-r--r--src/login/ipban.c (renamed from src/login/ipban_sql.c)142
-rw-r--r--src/login/ipban.h48
-rw-r--r--src/login/lclif.c202
-rw-r--r--src/login/lclif.h4
-rw-r--r--src/login/lclif.p.h279
-rw-r--r--src/login/login.c494
-rw-r--r--src/login/login.h44
-rw-r--r--src/login/loginlog.c (renamed from src/login/loginlog_sql.c)121
-rw-r--r--src/login/loginlog.h40
-rw-r--r--src/login/packets_ac_struct.h156
-rw-r--r--src/login/packets_ca_struct.h239
-rw-r--r--src/map/HPMmap.c58
-rw-r--r--src/map/Makefile.in21
-rw-r--r--src/map/achievement.c2002
-rw-r--r--src/map/achievement.h291
-rw-r--r--src/map/atcommand.c1148
-rw-r--r--src/map/atcommand.h8
-rw-r--r--src/map/battle.c627
-rw-r--r--src/map/battle.h40
-rw-r--r--src/map/battleground.c120
-rw-r--r--src/map/battleground.h2
-rw-r--r--src/map/buyingstore.c77
-rw-r--r--src/map/buyingstore.h15
-rw-r--r--src/map/channel.c124
-rw-r--r--src/map/channel.h4
-rw-r--r--src/map/chat.c46
-rw-r--r--src/map/chat.h2
-rw-r--r--src/map/chrif.c254
-rw-r--r--src/map/chrif.h3
-rw-r--r--src/map/clan.c1075
-rw-r--r--src/map/clan.h85
-rw-r--r--src/map/clif.c8168
-rw-r--r--src/map/clif.h373
-rw-r--r--src/map/constants.inc1029
-rw-r--r--src/map/date.c23
-rw-r--r--src/map/date.h4
-rw-r--r--src/map/duel.c53
-rw-r--r--src/map/duel.h2
-rw-r--r--src/map/elemental.c111
-rw-r--r--src/map/elemental.h2
-rw-r--r--src/map/guild.c262
-rw-r--r--src/map/guild.h8
-rw-r--r--src/map/homunculus.c160
-rw-r--r--src/map/homunculus.h4
-rw-r--r--src/map/instance.c137
-rw-r--r--src/map/instance.h3
-rw-r--r--src/map/intif.c955
-rw-r--r--src/map/intif.h32
-rw-r--r--src/map/irc-bot.c61
-rw-r--r--src/map/itemdb.c559
-rw-r--r--src/map/itemdb.h162
-rw-r--r--src/map/log.c116
-rw-r--r--src/map/log.h3
-rw-r--r--src/map/mail.c28
-rw-r--r--src/map/mail.h2
-rw-r--r--src/map/map.c841
-rw-r--r--src/map/map.h105
-rw-r--r--src/map/mapreg.h2
-rw-r--r--src/map/mapreg_sql.c48
-rw-r--r--src/map/mercenary.c79
-rw-r--r--src/map/mercenary.h4
-rw-r--r--src/map/messages.h36
-rw-r--r--src/map/messages_ad.h7311
-rw-r--r--src/map/messages_main.h21471
-rw-r--r--src/map/messages_re.h20950
-rw-r--r--src/map/messages_sak.h8268
-rw-r--r--src/map/messages_zero.h17544
-rw-r--r--src/map/mob.c855
-rw-r--r--src/map/mob.h29
-rw-r--r--src/map/npc.c682
-rw-r--r--src/map/npc.h38
-rw-r--r--src/map/npc_chat.c28
-rw-r--r--src/map/packets.h4368
-rw-r--r--src/map/packets_keys_main.h2078
-rw-r--r--src/map/packets_keys_zero.h185
-rw-r--r--src/map/packets_shuffle_main.h9770
-rw-r--r--src/map/packets_shuffle_re.h9720
-rw-r--r--src/map/packets_shuffle_zero.h784
-rw-r--r--src/map/packets_struct.h2062
-rw-r--r--src/map/party.c145
-rw-r--r--src/map/party.h2
-rw-r--r--src/map/path.c21
-rw-r--r--src/map/path.h2
-rw-r--r--src/map/pc.c2480
-rw-r--r--src/map/pc.h161
-rw-r--r--src/map/pc_groups.c39
-rw-r--r--src/map/pc_groups.h2
-rw-r--r--src/map/pet.c595
-rw-r--r--src/map/pet.h34
-rw-r--r--src/map/quest.c400
-rw-r--r--src/map/quest.h19
-rw-r--r--src/map/rodex.c671
-rw-r--r--src/map/rodex.h85
-rw-r--r--src/map/script.c7315
-rw-r--r--src/map/script.h148
-rw-r--r--src/map/searchstore.c42
-rw-r--r--src/map/searchstore.h19
-rw-r--r--src/map/skill.c2117
-rw-r--r--src/map/skill.h127
-rw-r--r--src/map/status.c2398
-rw-r--r--src/map/status.h150
-rw-r--r--src/map/storage.c374
-rw-r--r--src/map/storage.h2
-rw-r--r--src/map/trade.c50
-rw-r--r--src/map/trade.h2
-rw-r--r--src/map/unit.c170
-rw-r--r--src/map/unit.h16
-rw-r--r--src/map/vending.c32
-rw-r--r--src/map/vending.h4
-rw-r--r--src/plugins/HPMHooking.c21
-rw-r--r--src/plugins/HPMHooking/HPMHooking.Defs.inc1560
-rw-r--r--src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc538
-rw-r--r--src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc141
-rw-r--r--src/plugins/HPMHooking/HPMHooking_char.Hooks.inc10635
-rw-r--r--src/plugins/HPMHooking/HPMHooking_char.sources.inc80
-rw-r--r--src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc259
-rw-r--r--src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc70
-rw-r--r--src/plugins/HPMHooking/HPMHooking_login.Hooks.inc5047
-rw-r--r--src/plugins/HPMHooking/HPMHooking_login.sources.inc53
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc1366
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc346
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.Hooks.inc39631
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.sources.inc132
-rw-r--r--src/plugins/Makefile.in4
-rw-r--r--src/plugins/constdb2doc.c2
-rw-r--r--src/plugins/db2sql.c351
-rw-r--r--src/plugins/dbghelpplug.c2
-rw-r--r--src/plugins/mapcache.c490
-rw-r--r--src/plugins/script_mapquit.c2
-rw-r--r--src/test/Makefile.in2
-rw-r--r--src/test/test_spinlock.c2
-rw-r--r--src/tool/Makefile.in101
-rw-r--r--src/tool/mapcache.c377
288 files changed, 456406 insertions, 40862 deletions
diff --git a/src/char/HPMchar.c b/src/char/HPMchar.c
index e0f81c61f..f3cf2cff4 100644
--- a/src/char/HPMchar.c
+++ b/src/char/HPMchar.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2014-2015 Hercules Dev Team
+ * Copyright (C) 2014-2018 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -27,7 +27,9 @@
#include "char/char.h"
#include "char/geoip.h"
#include "char/inter.h"
+#include "char/int_achievement.h"
#include "char/int_auction.h"
+#include "char/int_clan.h"
#include "char/int_elemental.h"
#include "char/int_guild.h"
#include "char/int_homun.h"
@@ -36,10 +38,12 @@
#include "char/int_party.h"
#include "char/int_pet.h"
#include "char/int_quest.h"
+#include "char/int_rodex.h"
#include "char/int_storage.h"
#include "char/loginif.h"
#include "char/mapif.h"
#include "char/pincode.h"
+
#include "common/HPMi.h"
#include "common/conf.h"
#include "common/console.h"
@@ -53,6 +57,7 @@
#include "common/mapindex.h"
#include "common/mmo.h"
#include "common/nullpo.h"
+#include "common/packets.h"
#include "common/random.h"
#include "common/showmsg.h"
#include "common/socket.h"
diff --git a/src/char/HPMchar.h b/src/char/HPMchar.h
index 2bf2820f8..0de3b88b8 100644
--- a/src/char/HPMchar.h
+++ b/src/char/HPMchar.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2014-2015 Hercules Dev Team
+ * Copyright (C) 2014-2018 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/char/Makefile.in b/src/char/Makefile.in
index 7806ce2bb..f159a443f 100644
--- a/src/char/Makefile.in
+++ b/src/char/Makefile.in
@@ -1,7 +1,7 @@
# This file is part of Hercules.
# http://herc.ws - http://github.com/HerculesWS/Hercules
#
-# Copyright (C) 2012-2016 Hercules Dev Team
+# Copyright (C) 2012-2018 Hercules Dev Team
# Copyright (C) Athena Dev Teams
#
# Hercules is free software: you can redistribute it and/or modify
@@ -40,13 +40,13 @@ MT19937AR_D = $(THIRDPARTY_D)/mt19937ar
MT19937AR_OBJ = $(MT19937AR_D)/mt19937ar.o
MT19937AR_H = $(MT19937AR_D)/mt19937ar.h
-CHAR_C = char.c HPMchar.c loginif.c mapif.c geoip.c inter.c int_auction.c int_elemental.c int_guild.c \
- int_homun.c int_mail.c int_mercenary.c int_party.c int_pet.c \
- int_quest.c int_storage.c pincode.c
+CHAR_C = char.c HPMchar.c loginif.c mapif.c geoip.c inter.c int_achievement.c int_auction.c int_clan.c int_elemental.c \
+ int_guild.c int_homun.c int_mail.c int_mercenary.c int_party.c int_pet.c \
+ int_quest.c int_rodex.c int_storage.c pincode.c
CHAR_OBJ = $(addprefix obj_sql/, $(patsubst %.c,%.o,$(CHAR_C)))
-CHAR_H = char.h HPMchar.h loginif.h mapif.h geoip.h inter.h int_auction.h int_elemental.h int_guild.h \
- int_homun.h int_mail.h int_mercenary.h int_party.h int_pet.h \
- int_quest.h int_storage.h pincode.h
+CHAR_H = char.h HPMchar.h loginif.h mapif.h geoip.h inter.h int_achievement.h int_auction.h int_clan.h int_elemental.h \
+ int_guild.h int_homun.h int_mail.h int_mercenary.h int_party.h int_pet.h \
+ int_quest.h int_rodex.h int_storage.h pincode.h packets_hc_struct.h
CHAR_PH =
HAVE_MYSQL=@HAVE_MYSQL@
diff --git a/src/char/char.c b/src/char/char.c
index 9314e8c81..330b0639f 100644
--- a/src/char/char.c
+++ b/src/char/char.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -21,11 +21,12 @@
#define HERCULES_CORE
#include "config/core.h" // CONSOLE_INPUT
-#include "char.h"
+#include "char/char.h"
#include "char/HPMchar.h"
#include "char/geoip.h"
#include "char/int_auction.h"
+#include "char/int_clan.h"
#include "char/int_elemental.h"
#include "char/int_guild.h"
#include "char/int_homun.h"
@@ -34,10 +35,13 @@
#include "char/int_party.h"
#include "char/int_pet.h"
#include "char/int_quest.h"
+#include "char/int_rodex.h"
#include "char/int_storage.h"
+#include "char/int_achievement.h"
#include "char/inter.h"
#include "char/loginif.h"
#include "char/mapif.h"
+#include "char/packets_hc_struct.h"
#include "char/pincode.h"
#include "common/HPM.h"
@@ -50,6 +54,7 @@
#include "common/mapindex.h"
#include "common/mmo.h"
#include "common/nullpo.h"
+#include "common/packetsstatic_len.h"
#include "common/showmsg.h"
#include "common/socket.h"
#include "common/strlib.h"
@@ -94,50 +99,54 @@ char party_db[256] = "party";
char pet_db[256] = "pet";
char mail_db[256] = "mail"; // MAIL SYSTEM
char auction_db[256] = "auction"; // Auctions System
-char friend_db[256] = "friends";
-char hotkey_db[256] = "hotkey";
+static char friend_db[256] = "friends";
+static char hotkey_db[256] = "hotkey";
char quest_db[256] = "quest";
+char rodex_db[256] = "rodex_mail";
+char rodex_item_db[256] = "rodex_items";
char homunculus_db[256] = "homunculus";
char skill_homunculus_db[256] = "skill_homunculus";
char mercenary_db[256] = "mercenary";
char mercenary_owner_db[256] = "mercenary_owner";
char ragsrvinfo_db[256] = "ragsrvinfo";
char elemental_db[256] = "elemental";
-char account_data_db[256] = "account_data";
+static char account_data_db[256] = "account_data";
char acc_reg_num_db[32] = "acc_reg_num_db";
char acc_reg_str_db[32] = "acc_reg_str_db";
char char_reg_str_db[32] = "char_reg_str_db";
char char_reg_num_db[32] = "char_reg_num_db";
+char char_achievement_db[256] = "char_achievements";
-struct char_interface char_s;
+static struct char_interface char_s;
struct char_interface *chr;
char db_path[1024] = "db";
-char wisp_server_name[NAME_LENGTH] = "Server";
-char login_ip_str[128];
-uint32 login_ip = 0;
-uint16 login_port = 6900;
-char char_ip_str[128];
-char bind_ip_str[128];
-uint32 bind_ip = INADDR_ANY;
-int char_maintenance_min_group_id = 0;
-bool enable_char_creation = true; ///< Whether to allow character creation.
-
-bool name_ignoring_case = false; // Allow or not identical name for characters but with a different case by [Yor]
+static char wisp_server_name[NAME_LENGTH] = "Server";
+static char login_ip_str[128];
+static uint32 login_ip = 0;
+static uint16 login_port = 6900;
+static char char_ip_str[128];
+static char bind_ip_str[128];
+static uint32 bind_ip = INADDR_ANY;
+static int char_maintenance_min_group_id = 0;
+static bool enable_char_creation = true; ///< Whether to allow character creation.
+
+static bool name_ignoring_case = false; // Allow or not identical name for characters but with a different case by [Yor]
int char_name_option = 0; // Option to know which letters/symbols are authorized in the name of a character (0: all, 1: only those in char_name_letters, 2: all EXCEPT those in char_name_letters) by [Yor]
-char unknown_char_name[NAME_LENGTH] = "Unknown"; // Name to use when the requested name cannot be determined
+static char unknown_char_name[NAME_LENGTH] = "Unknown"; // Name to use when the requested name cannot be determined
#define TRIM_CHARS "\255\xA0\032\t\x0A\x0D " //The following characters are trimmed regardless because they cause confusion and problems on the servers. [Skotlex]
char char_name_letters[1024] = ""; // list of letters/symbols allowed (or not) in a character name. by [Yor]
-int char_del_level = 0; ///< From which level you can delete character [Lupus]
-int char_del_delay = 86400;
-bool char_aegis_delete = false; ///< Verify if char is in guild/party or char and reacts as Aegis does (disallow deletion), @see chr->delete2_req.
+static int char_del_level = 0; ///< From which level you can delete character [Lupus]
+static int char_del_delay = 86400;
+static bool char_aegis_delete = false; ///< Verify if char is in guild/party or char and reacts as Aegis does (disallow deletion), @see chr->delete2_req.
+static bool char_aegis_rename = false; // whether or not the player can be renamed while in party/guild
-int max_connect_user = -1;
-int gm_allow_group = -1;
+static int max_connect_user = -1;
+static int gm_allow_group = -1;
int autosave_interval = DEFAULT_AUTOSAVE_INTERVAL;
-int start_zeny = 0;
+static int start_zeny = 0;
/// Start items for new characters
struct start_item_s {
@@ -146,28 +155,28 @@ struct start_item_s {
int loc;
bool stackable;
};
-VECTOR_DECL(struct start_item_s) start_items;
+static VECTOR_DECL(struct start_item_s) start_items;
int guild_exp_rate = 100;
//Custom limits for the fame lists. [Skotlex]
-int fame_list_size_chemist = MAX_FAME_LIST;
-int fame_list_size_smith = MAX_FAME_LIST;
-int fame_list_size_taekwon = MAX_FAME_LIST;
+static int fame_list_size_chemist = MAX_FAME_LIST;
+static int fame_list_size_smith = MAX_FAME_LIST;
+static int fame_list_size_taekwon = MAX_FAME_LIST;
// Char-server-side stored fame lists [DracoRPG]
-struct fame_list smith_fame_list[MAX_FAME_LIST];
-struct fame_list chemist_fame_list[MAX_FAME_LIST];
-struct fame_list taekwon_fame_list[MAX_FAME_LIST];
+static struct fame_list smith_fame_list[MAX_FAME_LIST];
+static struct fame_list chemist_fame_list[MAX_FAME_LIST];
+static struct fame_list taekwon_fame_list[MAX_FAME_LIST];
// Initial position (it's possible to set it in conf file)
#ifdef RENEWAL
- struct point start_point = { 0, 97, 90 };
+static struct point start_point = { 0, 97, 90 };
#else
- struct point start_point = { 0, 53, 111 };
+static struct point start_point = { 0, 53, 111 };
#endif
-unsigned short skillid2idx[MAX_SKILL_ID];
+static unsigned short skillid2idx[MAX_SKILL_ID];
//-----------------------------------------------------
// Auth database
@@ -196,7 +205,7 @@ static struct DBData char_create_online_char_data(union DBKey key, va_list args)
return DB->ptr2data(character);
}
-void char_set_account_online(int account_id)
+static void char_set_account_online(int account_id)
{
WFIFOHEAD(chr->login_fd,6);
WFIFOW(chr->login_fd,0) = 0x272b;
@@ -204,7 +213,7 @@ void char_set_account_online(int account_id)
WFIFOSET(chr->login_fd,6);
}
-void char_set_account_offline(int account_id)
+static void char_set_account_offline(int account_id)
{
WFIFOHEAD(chr->login_fd,6);
WFIFOW(chr->login_fd,0) = 0x272c;
@@ -212,7 +221,7 @@ void char_set_account_offline(int account_id)
WFIFOSET(chr->login_fd,6);
}
-void char_set_char_charselect(int account_id)
+static void char_set_char_charselect(int account_id)
{
struct online_char_data* character;
@@ -236,7 +245,7 @@ void char_set_char_charselect(int account_id)
chr->set_account_online(account_id);
}
-void char_set_char_online(int map_id, int char_id, int account_id)
+static void char_set_char_online(int map_id, int char_id, int account_id)
{
struct online_char_data* character;
struct mmo_charstatus *cp;
@@ -276,7 +285,7 @@ void char_set_char_online(int map_id, int char_id, int account_id)
chr->set_account_online(account_id);
}
-void char_set_char_offline(int char_id, int account_id)
+static void char_set_char_offline(int char_id, int account_id)
{
struct online_char_data* character;
@@ -287,10 +296,18 @@ void char_set_char_offline(int char_id, int account_id)
}
else
{
- struct mmo_charstatus* cp = (struct mmo_charstatus*)idb_get(chr->char_db_,char_id);
+ struct mmo_charstatus *cp = (struct mmo_charstatus*) idb_get(chr->char_db_, char_id);
+ /* Character Achievements */
+ struct char_achievements *c_ach = (struct char_achievements *) idb_get(inter_achievement->char_achievements, char_id);
+
inter_guild->CharOffline(char_id, cp?cp->guild_id:-1);
- if (cp)
+
+ if (cp != NULL)
idb_remove(chr->char_db_,char_id);
+ if (c_ach != NULL) {
+ VECTOR_CLEAR(*c_ach);
+ idb_remove(inter_achievement->char_achievements, char_id);
+ }
if( SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `online`='0' WHERE `char_id`='%d' LIMIT 1", char_db, char_id) )
Sql_ShowDebug(inter->sql_handle);
@@ -365,7 +382,7 @@ static int char_db_kickoffline(union DBKey key, struct DBData *data, va_list ap)
return 1;
}
-void char_set_login_all_offline(void)
+static void char_set_login_all_offline(void)
{
//Tell login-server to also mark all our characters as offline.
WFIFOHEAD(chr->login_fd,2);
@@ -373,7 +390,7 @@ void char_set_login_all_offline(void)
WFIFOSET(chr->login_fd,2);
}
-void char_set_all_offline(int id)
+static void char_set_all_offline(int id)
{
if (id < 0)
ShowNotice("Sending all users offline.\n");
@@ -386,7 +403,7 @@ void char_set_all_offline(int id)
chr->set_login_all_offline();
}
-void char_set_all_offline_sql(void)
+static void char_set_all_offline_sql(void)
{
//Set all players to 'OFFLINE'
if( SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `online` = '0'", char_db) )
@@ -408,7 +425,7 @@ static struct DBData char_create_charstatus(union DBKey key, va_list args)
return DB->ptr2data(cp);
}
-int char_mmo_char_tosql(int char_id, struct mmo_charstatus* p)
+static int char_mmo_char_tosql(int char_id, struct mmo_charstatus *p)
{
int i = 0;
int count = 0;
@@ -428,7 +445,7 @@ int char_mmo_char_tosql(int char_id, struct mmo_charstatus* p)
//map inventory data
if( memcmp(p->inventory, cp->inventory, sizeof(p->inventory)) ) {
- if (!chr->memitemdata_to_sql(p->inventory, MAX_INVENTORY, p->char_id, TABLE_INVENTORY))
+ if (!chr->memitemdata_to_sql(p->inventory, p->char_id, TABLE_INVENTORY))
strcat(save_status, " inventory");
else
errors++;
@@ -436,20 +453,12 @@ int char_mmo_char_tosql(int char_id, struct mmo_charstatus* p)
//map cart data
if( memcmp(p->cart, cp->cart, sizeof(p->cart)) ) {
- if (!chr->memitemdata_to_sql(p->cart, MAX_CART, p->char_id, TABLE_CART))
+ if (!chr->memitemdata_to_sql(p->cart, p->char_id, TABLE_CART))
strcat(save_status, " cart");
else
errors++;
}
- //map storage data
- if( memcmp(p->storage.items, cp->storage.items, sizeof(p->storage.items)) ) {
- if (!chr->memitemdata_to_sql(p->storage.items, MAX_STORAGE, p->account_id, TABLE_STORAGE))
- strcat(save_status, " storage");
- else
- errors++;
- }
-
if (
(p->base_exp != cp->base_exp) || (p->base_level != cp->base_level) ||
(p->job_level != cp->job_level) || (p->job_exp != cp->job_exp) ||
@@ -463,42 +472,53 @@ int char_mmo_char_tosql(int char_id, struct mmo_charstatus* p)
(p->int_ != cp->int_) || (p->dex != cp->dex) || (p->luk != cp->luk) ||
(p->option != cp->option) ||
(p->party_id != cp->party_id) || (p->guild_id != cp->guild_id) ||
- (p->pet_id != cp->pet_id) || (p->weapon != cp->weapon) || (p->hom_id != cp->hom_id) ||
- (p->ele_id != cp->ele_id) || (p->shield != cp->shield) || (p->head_top != cp->head_top) ||
- (p->head_mid != cp->head_mid) || (p->head_bottom != cp->head_bottom) || (p->delete_date != cp->delete_date) ||
- (p->rename != cp->rename) || (p->slotchange != cp->slotchange) || (p->robe != cp->robe) ||
+ (p->pet_id != cp->pet_id) || (p->look.weapon != cp->look.weapon) || (p->hom_id != cp->hom_id) ||
+ (p->ele_id != cp->ele_id) || (p->look.shield != cp->look.shield) || (p->look.head_top != cp->look.head_top) ||
+ (p->look.head_mid != cp->look.head_mid) || (p->look.head_bottom != cp->look.head_bottom) || (p->delete_date != cp->delete_date) ||
+ (p->rename != cp->rename) || (p->slotchange != cp->slotchange) || (p->look.robe != cp->look.robe) ||
(p->show_equip != cp->show_equip) || (p->allow_party != cp->allow_party) || (p->font != cp->font) ||
- (p->uniqueitem_counter != cp->uniqueitem_counter) || (p->hotkey_rowshift != cp->hotkey_rowshift)
+ (p->uniqueitem_counter != cp->uniqueitem_counter) || (p->hotkey_rowshift != cp->hotkey_rowshift) ||
+ (p->clan_id != cp->clan_id) || (p->last_login != cp->last_login) || (p->attendance_count != cp->attendance_count) ||
+ (p->attendance_timer != cp->attendance_timer) || (p->title_id != cp->title_id) || (p->inventorySize != cp->inventorySize)
) {
//Save status
unsigned int opt = 0;
+ if (p->inventorySize <= 0 || p->inventorySize > MAX_INVENTORY) {
+ ShowError("Wrong inventorySize field: %d. Must be in range 1 to %d. Character %s (CID: %d, AID: %d)\n",
+ p->inventorySize, MAX_INVENTORY, p->name, p->char_id, p->account_id);
+ Assert_report(0);
+ p->inventorySize = FIXED_INVENTORY_SIZE;
+ }
+
if( p->allow_party )
opt |= OPT_ALLOW_PARTY;
if( p->show_equip )
opt |= OPT_SHOW_EQUIP;
if( SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `base_level`='%d', `job_level`='%d',"
- "`base_exp`='%u', `job_exp`='%u', `zeny`='%d',"
+ "`base_exp`='%"PRIu64"', `job_exp`='%"PRIu64"', `zeny`='%d',"
"`max_hp`='%d',`hp`='%d',`max_sp`='%d',`sp`='%d',`status_point`='%d',`skill_point`='%d',"
"`str`='%d',`agi`='%d',`vit`='%d',`int`='%d',`dex`='%d',`luk`='%d',"
"`option`='%u',`party_id`='%d',`guild_id`='%d',`pet_id`='%d',`homun_id`='%d',`elemental_id`='%d',"
"`weapon`='%d',`shield`='%d',`head_top`='%d',`head_mid`='%d',`head_bottom`='%d',"
"`last_map`='%s',`last_x`='%d',`last_y`='%d',`save_map`='%s',`save_x`='%d',`save_y`='%d', `rename`='%d',"
"`delete_date`='%lu',`robe`='%d',`slotchange`='%d', `char_opt`='%u', `font`='%u', `uniqueitem_counter` ='%u',"
- "`hotkey_rowshift`='%d'"
+ "`hotkey_rowshift`='%d',`clan_id`='%d',`last_login`='%"PRId64"',`attendance_count`='%d',`attendance_timer`='%"PRId64"',"
+ "`title_id`='%d', `inventory_size`='%d'"
" WHERE `account_id`='%d' AND `char_id` = '%d'",
char_db, p->base_level, p->job_level,
p->base_exp, p->job_exp, p->zeny,
p->max_hp, p->hp, p->max_sp, p->sp, p->status_point, p->skill_point,
p->str, p->agi, p->vit, p->int_, p->dex, p->luk,
p->option, p->party_id, p->guild_id, p->pet_id, p->hom_id, p->ele_id,
- p->weapon, p->shield, p->head_top, p->head_mid, p->head_bottom,
+ p->look.weapon, p->look.shield, p->look.head_top, p->look.head_mid, p->look.head_bottom,
mapindex_id2name(p->last_point.map), p->last_point.x, p->last_point.y,
mapindex_id2name(p->save_point.map), p->save_point.x, p->save_point.y, p->rename,
(unsigned long)p->delete_date, // FIXME: platform-dependent size
- p->robe,p->slotchange,opt,p->font,p->uniqueitem_counter,
- p->hotkey_rowshift,
+ p->look.robe,p->slotchange,opt,p->font,p->uniqueitem_counter,
+ p->hotkey_rowshift,p->clan_id,p->last_login, p->attendance_count, p->attendance_timer,
+ p->title_id, p->inventorySize,
p->account_id, p->char_id) )
{
Sql_ShowDebug(inter->sql_handle);
@@ -603,7 +623,7 @@ int char_mmo_char_tosql(int char_id, struct mmo_charstatus* p)
StrBuf->Clear(&buf);
StrBuf->Printf(&buf, "INSERT INTO `%s`(`char_id`,`id`,`lv`,`flag`) VALUES ", skill_db);
//insert here.
- for( i = 0, count = 0; i < MAX_SKILL; ++i ) {
+ for (i = 0, count = 0; i < MAX_SKILL_DB; ++i) {
if( p->skill[i].id != 0 && p->skill[i].flag != SKILL_FLAG_TEMPORARY ) {
if( p->skill[i].lv == 0 && ( p->skill[i].flag == SKILL_FLAG_PERM_GRANTED || p->skill[i].flag == SKILL_FLAG_PERMANENT ) )
continue;
@@ -702,176 +722,290 @@ int char_mmo_char_tosql(int char_id, struct mmo_charstatus* p)
}
/**
- * Saves an array of 'item' entries into the specified table.
- *
- * @param items The items array.
- * @param max The array size.
- * @param id The character/account/guild ID (depending on tableswitch).
- * @param tableswitch The type of table (@see enum inventory_table_type).
- * @return Error code.
- * @retval 0 in case of success.
+ * Gets a player object's item data from an sql table. [Smokexyz/Hercules]
+ * @param[in|out] items reference to the item list of a character/account/guild.
+ * @param[in] max Max amount of items to be pulled into the list.
+ * @param[in] guid Unique ID of the player object (account_id, char_id, guild_id).
+ * @param[in] table Table to be used for the transaction.
+ * @return -1 on failure or number of items added to the list if successful.
*/
-int char_memitemdata_to_sql(const struct item items[], int max, int id, int tableswitch)
+static int char_getitemdata_from_sql(struct item *items, int max, int guid, enum inventory_table_type table)
{
- StringBuf buf;
+ int i = 0;
struct SqlStmt *stmt = NULL;
- int i, j;
const char *tablename = NULL;
const char *selectoption = NULL;
bool has_favorite = false;
+ StringBuf buf;
struct item item = { 0 }; // temp storage variable
- bool *flag = NULL; // bit array for inventory matching
- bool found;
- int errors = 0;
- nullpo_ret(items);
-
- switch (tableswitch) {
- case TABLE_INVENTORY: tablename = inventory_db; selectoption = "char_id"; has_favorite = true; break;
- case TABLE_CART: tablename = cart_db; selectoption = "char_id"; break;
- case TABLE_STORAGE: tablename = storage_db; selectoption = "account_id"; break;
- case TABLE_GUILD_STORAGE: tablename = guild_storage_db; selectoption = "guild_id"; break;
+ nullpo_retr(-1, items);
+ Assert_retr(-1, guid > 0);
+ Assert_retr(-1, max > 0);
+
+ // Initialize the array.
+ memset(items, 0x0, sizeof(struct item) * max);
+
+ switch (table) {
+ case TABLE_INVENTORY:
+ tablename = inventory_db;
+ selectoption = "char_id";
+ has_favorite = true;
+ break;
+ case TABLE_CART:
+ tablename = cart_db;
+ selectoption = "char_id";
+ break;
+ case TABLE_GUILD_STORAGE:
+ tablename = guild_storage_db;
+ selectoption = "guild_id";
+ break;
default:
- ShowError("Invalid table name!\n");
- Assert_retr(1, tableswitch);
+ ShowError("char_getitemdata_from_sql: Invalid table type %d!\n", (int) table);
+ Assert_retr(-1, table);
+ return -1;
}
- // The following code compares inventory with current database values
- // and performs modification/deletion/insertion only on relevant rows.
- // This approach is more complicated than a trivial delete&insert, but
- // it significantly reduces cpu load on the database server.
-
StrBuf->Init(&buf);
StrBuf->AppendStr(&buf, "SELECT `id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `expire_time`, `bound`, `unique_id`");
- for (j = 0; j < MAX_SLOTS; ++j)
- StrBuf->Printf(&buf, ", `card%d`", j);
+ for(i = 0; i < MAX_SLOTS; i++)
+ StrBuf->Printf(&buf, ", `card%d`", i);
+ for(i = 0; i < MAX_ITEM_OPTIONS; i++)
+ StrBuf->Printf(&buf, ", `opt_idx%d`, `opt_val%d`", i, i);
if (has_favorite)
StrBuf->AppendStr(&buf, ", `favorite`");
- StrBuf->Printf(&buf, " FROM `%s` WHERE `%s`='%d'", tablename, selectoption, id);
+ StrBuf->Printf(&buf, " FROM `%s` WHERE `%s`=?", tablename, selectoption);
stmt = SQL->StmtMalloc(inter->sql_handle);
if (SQL_ERROR == SQL->StmtPrepareStr(stmt, StrBuf->Value(&buf))
- || SQL_ERROR == SQL->StmtExecute(stmt)) {
+ || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_INT, &guid, sizeof guid)
+ || SQL_ERROR == SQL->StmtExecute(stmt)) {
SqlStmt_ShowDebug(stmt);
SQL->StmtFree(stmt);
StrBuf->Destroy(&buf);
- return 1;
+ return -1;
}
- SQL->StmtBindColumn(stmt, 0, SQLDT_INT, &item.id, 0, NULL, NULL);
- SQL->StmtBindColumn(stmt, 1, SQLDT_SHORT, &item.nameid, 0, NULL, NULL);
- SQL->StmtBindColumn(stmt, 2, SQLDT_SHORT, &item.amount, 0, NULL, NULL);
- SQL->StmtBindColumn(stmt, 3, SQLDT_UINT, &item.equip, 0, NULL, NULL);
- SQL->StmtBindColumn(stmt, 4, SQLDT_CHAR, &item.identify, 0, NULL, NULL);
- SQL->StmtBindColumn(stmt, 5, SQLDT_CHAR, &item.refine, 0, NULL, NULL);
- SQL->StmtBindColumn(stmt, 6, SQLDT_CHAR, &item.attribute, 0, NULL, NULL);
- SQL->StmtBindColumn(stmt, 7, SQLDT_UINT, &item.expire_time, 0, NULL, NULL);
- SQL->StmtBindColumn(stmt, 8, SQLDT_UCHAR, &item.bound, 0, NULL, NULL);
- SQL->StmtBindColumn(stmt, 9, SQLDT_UINT64, &item.unique_id, 0, NULL, NULL);
- for (j = 0; j < MAX_SLOTS; ++j)
- SQL->StmtBindColumn(stmt, 10+j, SQLDT_SHORT, &item.card[j], 0, NULL, NULL);
- if (has_favorite)
- SQL->StmtBindColumn(stmt, 10+MAX_SLOTS, SQLDT_UCHAR, &item.favorite, 0, NULL, NULL);
+ if (SQL_ERROR == SQL->StmtBindColumn(stmt, 0, SQLDT_INT, &item.id, sizeof item.id, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 1, SQLDT_INT, &item.nameid, sizeof item.nameid, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 2, SQLDT_SHORT, &item.amount, sizeof item.amount, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 3, SQLDT_UINT, &item.equip, sizeof item.equip, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 4, SQLDT_CHAR, &item.identify, sizeof item.identify, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 5, SQLDT_CHAR, &item.refine, sizeof item.refine, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 6, SQLDT_CHAR, &item.attribute, sizeof item.attribute, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 7, SQLDT_UINT, &item.expire_time, sizeof item.expire_time, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 8, SQLDT_UCHAR, &item.bound, sizeof item.bound, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 9, SQLDT_UINT64, &item.unique_id, sizeof item.unique_id, NULL, NULL)
+ ) {
+ SqlStmt_ShowDebug(stmt);
+ }
- // bit array indicating which inventory items have already been matched
- flag = aCalloc(max, sizeof(bool));
+ for (i = 0; i < MAX_SLOTS; i++) {
+ if (SQL_ERROR == SQL->StmtBindColumn(stmt, 10 + i, SQLDT_INT, &item.card[i], sizeof item.card[i], NULL, NULL))
+ SqlStmt_ShowDebug(stmt);
+ }
- while (SQL_SUCCESS == SQL->StmtNextRow(stmt)) {
- found = false;
- // search for the presence of the item in the char's inventory
- for (i = 0; i < max; ++i) {
- // skip empty and already matched entries
- if (items[i].nameid == 0 || flag[i])
- continue;
+ for (i = 0; i < MAX_ITEM_OPTIONS; i++) {
+ if (SQL_ERROR == SQL->StmtBindColumn(stmt, 10 + MAX_SLOTS + i * 2, SQLDT_INT16, &item.option[i].index, sizeof item.option[i].index, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 11 + MAX_SLOTS + i * 2, SQLDT_INT16, &item.option[i].value, sizeof item.option[i].index, NULL, NULL))
+ SqlStmt_ShowDebug(stmt);
+ }
- if (items[i].nameid == item.nameid
- && items[i].unique_id == item.unique_id
- && items[i].card[0] == item.card[0]
- && items[i].card[2] == item.card[2]
- && items[i].card[3] == item.card[3]
- ) {
- // They are the same item.
- ARR_FIND(0, MAX_SLOTS, j, items[i].card[j] != item.card[j]);
- if (j == MAX_SLOTS
- && items[i].amount == item.amount
- && items[i].equip == item.equip
- && items[i].identify == item.identify
- && items[i].refine == item.refine
- && items[i].attribute == item.attribute
- && items[i].expire_time == item.expire_time
- && items[i].bound == item.bound
- && (!has_favorite || items[i].favorite == item.favorite)
- ) {
- ; //Do nothing.
- } else {
- // update all fields.
- StrBuf->Clear(&buf);
- StrBuf->Printf(&buf, "UPDATE `%s` SET `amount`='%d', `equip`='%u', `identify`='%d', `refine`='%d',`attribute`='%d', `expire_time`='%u', `bound`='%d'",
- tablename, items[i].amount, items[i].equip, items[i].identify, items[i].refine, items[i].attribute, items[i].expire_time, items[i].bound);
- for (j = 0; j < MAX_SLOTS; ++j)
- StrBuf->Printf(&buf, ", `card%d`='%d'", j, items[i].card[j]);
- if (has_favorite)
- StrBuf->Printf(&buf, ", `favorite`='%d'", items[i].favorite);
- StrBuf->Printf(&buf, " WHERE `id`='%d' LIMIT 1", item.id);
+ if (has_favorite) {
+ if (SQL_ERROR == SQL->StmtBindColumn(stmt, 10 + MAX_SLOTS + MAX_ITEM_OPTIONS * 2, SQLDT_CHAR, &item.favorite, sizeof item.favorite, NULL, NULL))
+ SqlStmt_ShowDebug(stmt);
+ }
+
+ if (SQL->StmtNumRows(stmt) > 0 ) {
+ i = 0;
+ while (SQL_SUCCESS == SQL->StmtNextRow(stmt) && i < max) {
+ items[i++] = item;
+ }
+ }
+
+ SQL->StmtFree(stmt);
+ StrBuf->Destroy(&buf);
+
+ return i;
+}
+
+/**
+ * Saves an array of 'item' entries into the specified table. [Smokexyz/Hercules]
+ * @param[in] items The items array.
+ * @param[in] guid The character/account/guild ID (depending on table).
+ * @param[in] tableswitch The type of table (@see enum inventory_table_type).
+ * @retval -1 in case of failure, or number of changes made within the table.
+ */
+static int char_memitemdata_to_sql(const struct item *p_items, int guid, enum inventory_table_type table)
+{
+ StringBuf buf;
+ int i = 0, j = 0;
+ const char *tablename = NULL;
+ const char *selectoption = NULL;
+ bool has_favorite = false;
+ struct item *cp_items = NULL; // temp item storage variable
+ bool *matched_p = NULL;
+ int total_updates = 0, total_deletes = 0, total_inserts = 0, total_changes = 0;
+ int item_count = 0, db_max = 0;
+
+ nullpo_ret(p_items);
+
+ switch (table) {
+ case TABLE_INVENTORY:
+ tablename = inventory_db;
+ selectoption = "char_id";
+ has_favorite = true;
+ item_count = MAX_INVENTORY;
+ break;
+ case TABLE_CART:
+ tablename = cart_db;
+ selectoption = "char_id";
+ item_count = MAX_CART;
+ break;
+ case TABLE_GUILD_STORAGE:
+ tablename = guild_storage_db;
+ selectoption = "guild_id";
+ item_count = MAX_GUILD_STORAGE;
+ break;
+ default:
+ ShowError("Invalid table type %d!\n", (int) table);
+ Assert_retr(-1, table);
+ return -1;
+ }
+
+ cp_items = aCalloc(item_count, sizeof(struct item));
+ matched_p = aCalloc(item_count, sizeof(bool));
+
+ StrBuf->Init(&buf);
+
+ /**
+ * If the storage table is not empty, check for items and replace or delete where needed.
+ */
+ if ((db_max = chr->getitemdata_from_sql(cp_items, item_count, guid, table)) > 0) {
+ int *deletes = aCalloc(db_max, sizeof(struct item));
+
+ for (i = 0; i < db_max; i++) {
+ struct item *cp_it = &cp_items[i];
+
+ ARR_FIND(0, item_count, j,
+ matched_p[j] != true
+ && p_items[j].nameid != 0
+ && cp_it->nameid == p_items[j].nameid
+ && cp_it->unique_id == p_items[j].unique_id
+ && memcmp(p_items[j].card, cp_it->card, sizeof(int) * MAX_SLOTS) == 0
+ && memcmp(p_items[j].option, cp_it->option, 5 * MAX_ITEM_OPTIONS) == 0);
+
+ if (j < item_count) { // Item found.
+ matched_p[j] = true; // Mark the item as matched.
+
+ // If the amount has changed, set for replacement with current item properties.
+ if (memcmp(cp_it, &p_items[j], sizeof(struct item)) != 0) {
+ int k = 0;
+
+ if (total_updates == 0) {
+ StrBuf->Clear(&buf);
+ StrBuf->Printf(&buf, "REPLACE INTO `%s` (`id`, `%s`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`", tablename, selectoption);
+ for (k = 0; k < MAX_SLOTS; k++)
+ StrBuf->Printf(&buf, ", `card%d`", k);
+ for (k = 0; k < MAX_ITEM_OPTIONS; k++)
+ StrBuf->Printf(&buf, ", `opt_idx%d`, `opt_val%d`", k, k);
+ StrBuf->AppendStr(&buf, ", `expire_time`, `bound`, `unique_id`");
+ if (has_favorite)
+ StrBuf->AppendStr(&buf, ", `favorite`");
+
+ StrBuf->AppendStr(&buf, ") VALUES ");
- if (SQL_ERROR == SQL->QueryStr(inter->sql_handle, StrBuf->Value(&buf))) {
- Sql_ShowDebug(inter->sql_handle);
- errors++;
}
- }
- found = flag[i] = true; //Item dealt with,
- break; //skip to next item in the db.
+ StrBuf->Printf(&buf, "%s('%d', '%d', '%d', '%d', '%u', '%d', '%d', '%d'",
+ total_updates > 0 ? ", " : "", cp_it->id, guid, p_items[j].nameid, p_items[j].amount, p_items[j].equip, p_items[j].identify, p_items[j].refine, p_items[j].attribute);
+ for (k = 0; k < MAX_SLOTS; k++)
+ StrBuf->Printf(&buf, ", '%d'", p_items[j].card[k]);
+ for (k = 0; k < MAX_ITEM_OPTIONS; ++k)
+ StrBuf->Printf(&buf, ", '%d', '%d'", p_items[j].option[k].index, p_items[j].option[k].value);
+ StrBuf->Printf(&buf, ", '%u', '%d', '%"PRIu64"'", p_items[j].expire_time, p_items[j].bound, p_items[j].unique_id);
+ if (has_favorite)
+ StrBuf->Printf(&buf, ", %d", p_items[j].favorite);
+
+ StrBuf->AppendStr(&buf, ")");
+
+ total_updates++;
+ }
+ } else { // Doesn't exist in the table, set for deletion.
+ deletes[total_deletes++] = cp_it->id;
}
}
- if (!found) {
- // Item not present in inventory, remove it.
- if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE from `%s` where `id`='%d' LIMIT 1", tablename, item.id)) {
+
+ if (total_updates > 0 && SQL_ERROR == SQL->QueryStr(inter->sql_handle, StrBuf->Value(&buf)))
+ Sql_ShowDebug(inter->sql_handle);
+
+ /**
+ * Handle deletions, if any.
+ */
+ if (total_deletes > 0) {
+ StrBuf->Clear(&buf);
+ StrBuf->Printf(&buf, "DELETE FROM `%s` WHERE `id` IN (", tablename);
+ for (i = 0; i < total_deletes; i++)
+ StrBuf->Printf(&buf, "%s'%d'", i == 0 ? "" : ", ", deletes[i]);
+
+ StrBuf->AppendStr(&buf, ");");
+
+ if (SQL_ERROR == SQL->QueryStr(inter->sql_handle, StrBuf->Value(&buf)))
Sql_ShowDebug(inter->sql_handle);
- errors++;
- }
}
+
+ aFree(deletes);
}
- SQL->StmtFree(stmt);
- StrBuf->Clear(&buf);
- StrBuf->Printf(&buf, "INSERT INTO `%s`(`%s`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `expire_time`, `bound`, `unique_id`", tablename, selectoption);
- for (j = 0; j < MAX_SLOTS; ++j)
- StrBuf->Printf(&buf, ", `card%d`", j);
- if (has_favorite)
- StrBuf->AppendStr(&buf, ", `favorite`");
- StrBuf->AppendStr(&buf, ") VALUES ");
+ /**
+ * Check for new items and add if required.
+ */
+ for (i = 0; i < item_count; i++) {
+ const struct item *p_it = &p_items[i];
- found = false;
- // insert non-matched items into the db as new items
- for (i = 0; i < max; ++i) {
- // skip empty and already matched entries
- if (items[i].nameid == 0 || flag[i])
+ if (matched_p[i] || p_it->nameid == 0)
continue;
- if (found)
- StrBuf->AppendStr(&buf, ",");
- else
- found = true;
+ if (total_inserts == 0) {
+ StrBuf->Clear(&buf);
+ StrBuf->Printf(&buf, "INSERT INTO `%s` (`%s`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `expire_time`, `bound`, `unique_id`", tablename, selectoption);
+ for (j = 0; j < MAX_SLOTS; ++j)
+ StrBuf->Printf(&buf, ", `card%d`", j);
+ for (j = 0; j < MAX_ITEM_OPTIONS; ++j)
+ StrBuf->Printf(&buf, ", `opt_idx%d`, `opt_val%d`", j, j);
+ if (has_favorite)
+ StrBuf->AppendStr(&buf, ", `favorite`");
+ StrBuf->AppendStr(&buf, ") VALUES ");
+ }
+
+ StrBuf->Printf(&buf, "%s('%d', '%d', '%d', '%u', '%d', '%d', '%d', '%u', '%d', '%"PRIu64"'",
+ total_inserts > 0 ? ", " : "", guid, p_it->nameid, p_it->amount, p_it->equip, p_it->identify, p_it->refine,
+ p_it->attribute, p_it->expire_time, p_it->bound, p_it->unique_id);
- StrBuf->Printf(&buf, "('%d', '%d', '%d', '%u', '%d', '%d', '%d', '%u', '%d', '%"PRIu64"'",
- id, items[i].nameid, items[i].amount, items[i].equip, items[i].identify, items[i].refine, items[i].attribute, items[i].expire_time, items[i].bound, items[i].unique_id);
for (j = 0; j < MAX_SLOTS; ++j)
- StrBuf->Printf(&buf, ", '%d'", items[i].card[j]);
+ StrBuf->Printf(&buf, ", '%d'", p_it->card[j]);
+ for (j = 0; j < MAX_ITEM_OPTIONS; ++j)
+ StrBuf->Printf(&buf, ", '%d', '%d'", p_it->option[j].index, p_it->option[j].value);
+
if (has_favorite)
- StrBuf->Printf(&buf, ", '%d'", items[i].favorite);
+ StrBuf->Printf(&buf, ", '%d'", p_it->favorite);
+
StrBuf->AppendStr(&buf, ")");
+
+ total_inserts++;
}
- if (found && SQL_ERROR == SQL->QueryStr(inter->sql_handle, StrBuf->Value(&buf))) {
+ if (total_inserts > 0 && SQL_ERROR == SQL->QueryStr(inter->sql_handle, StrBuf->Value(&buf)))
Sql_ShowDebug(inter->sql_handle);
- errors++;
- }
StrBuf->Destroy(&buf);
- aFree(flag);
- return errors;
+ aFree(cp_items);
+ aFree(matched_p);
+
+ ShowInfo("%s save complete - guid: %d (replace: %d, insert: %d, delete: %d)\n", tablename, guid, total_updates, total_inserts, total_deletes);
+
+ return total_changes;
}
/**
@@ -887,7 +1021,7 @@ int char_memitemdata_to_sql(const struct item items[], int max, int id, int tabl
* @retval SEX_FEMALE if the per-character sex is female
* @retval 99 if the per-character sex is not defined or the current PACKETVER doesn't support it.
*/
-int char_mmo_gender(const struct char_session_data *sd, const struct mmo_charstatus *p, char sex)
+static int char_mmo_gender(const struct char_session_data *sd, const struct mmo_charstatus *p, char sex)
{
#if PACKETVER >= 20141016
(void)sd; (void)p; // Unused
@@ -925,7 +1059,7 @@ int char_mmo_gender(const struct char_session_data *sd, const struct mmo_charsta
//=====================================================================================================
// Loads the basic character rooster for the given account. Returns total buffer used.
-int char_mmo_chars_fromsql(struct char_session_data* sd, uint8* buf)
+static int char_mmo_chars_fromsql(struct char_session_data *sd, uint8 *buf, int *count)
{
struct SqlStmt *stmt;
struct mmo_charstatus p;
@@ -934,6 +1068,9 @@ int char_mmo_chars_fromsql(struct char_session_data* sd, uint8* buf)
time_t unban_time = 0;
char sex[2];
+ if (count)
+ *count = 0;
+
nullpo_ret(sd);
nullpo_ret(buf);
@@ -955,84 +1092,94 @@ int char_mmo_chars_fromsql(struct char_session_data* sd, uint8* buf)
"`str`,`agi`,`vit`,`int`,`dex`,`luk`,`max_hp`,`hp`,`max_sp`,`sp`,"
"`status_point`,`skill_point`,`option`,`karma`,`manner`,`hair`,`hair_color`,"
"`clothes_color`,`body`,`weapon`,`shield`,`head_top`,`head_mid`,`head_bottom`,`last_map`,`rename`,`delete_date`,"
- "`robe`,`slotchange`,`unban_time`,`sex`"
+ "`robe`,`slotchange`,`unban_time`,`sex`,`title_id`,`inventory_size`"
" FROM `%s` WHERE `account_id`='%d' AND `char_num` < '%d'", char_db, sd->account_id, MAX_CHARS)
|| SQL_ERROR == SQL->StmtExecute(stmt)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 0, SQLDT_INT, &p.char_id, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 1, SQLDT_UCHAR, &p.slot, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 2, SQLDT_STRING, &p.name, sizeof(p.name), NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 3, SQLDT_SHORT, &p.class, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 4, SQLDT_INT, &p.base_level, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 5, SQLDT_INT, &p.job_level, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 6, SQLDT_UINT, &p.base_exp, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 7, SQLDT_UINT, &p.job_exp, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 8, SQLDT_INT, &p.zeny, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 9, SQLDT_SHORT, &p.str, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 10, SQLDT_SHORT, &p.agi, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 11, SQLDT_SHORT, &p.vit, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 12, SQLDT_SHORT, &p.int_, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 13, SQLDT_SHORT, &p.dex, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 14, SQLDT_SHORT, &p.luk, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 15, SQLDT_INT, &p.max_hp, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 16, SQLDT_INT, &p.hp, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 17, SQLDT_INT, &p.max_sp, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 18, SQLDT_INT, &p.sp, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 19, SQLDT_INT, &p.status_point, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 20, SQLDT_INT, &p.skill_point, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 21, SQLDT_UINT, &p.option, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 22, SQLDT_UCHAR, &p.karma, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 23, SQLDT_SHORT, &p.manner, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 24, SQLDT_SHORT, &p.hair, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 25, SQLDT_SHORT, &p.hair_color, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 26, SQLDT_SHORT, &p.clothes_color, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 27, SQLDT_SHORT, &p.body, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 28, SQLDT_SHORT, &p.weapon, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 29, SQLDT_SHORT, &p.shield, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 30, SQLDT_SHORT, &p.head_top, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 31, SQLDT_SHORT, &p.head_mid, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 32, SQLDT_SHORT, &p.head_bottom, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 33, SQLDT_STRING, &last_map, sizeof(last_map), NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 34, SQLDT_USHORT, &p.rename, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 35, SQLDT_UINT32, &p.delete_date, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 36, SQLDT_SHORT, &p.robe, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 37, SQLDT_USHORT, &p.slotchange, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 38, SQLDT_LONG, &unban_time, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 39, SQLDT_ENUM, &sex, sizeof(sex), NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 0, SQLDT_INT, &p.char_id, sizeof p.char_id, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 1, SQLDT_UCHAR, &p.slot, sizeof p.slot, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 2, SQLDT_STRING, &p.name, sizeof p.name, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 3, SQLDT_INT16, &p.class, sizeof p.class, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 4, SQLDT_INT, &p.base_level, sizeof p.base_level, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 5, SQLDT_INT, &p.job_level, sizeof p.job_level, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 6, SQLDT_UINT64, &p.base_exp, sizeof p.base_exp, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 7, SQLDT_UINT64, &p.job_exp, sizeof p.job_exp, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 8, SQLDT_INT, &p.zeny, sizeof p.zeny, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 9, SQLDT_SHORT, &p.str, sizeof p.str, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 10, SQLDT_SHORT, &p.agi, sizeof p.agi, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 11, SQLDT_SHORT, &p.vit, sizeof p.vit, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 12, SQLDT_SHORT, &p.int_, sizeof p.int_, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 13, SQLDT_SHORT, &p.dex, sizeof p.dex, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 14, SQLDT_SHORT, &p.luk, sizeof p.luk, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 15, SQLDT_INT, &p.max_hp, sizeof p.max_hp, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 16, SQLDT_INT, &p.hp, sizeof p.hp, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 17, SQLDT_INT, &p.max_sp, sizeof p.max_sp, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 18, SQLDT_INT, &p.sp, sizeof p.sp, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 19, SQLDT_INT, &p.status_point, sizeof p.status_point, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 20, SQLDT_INT, &p.skill_point, sizeof p.skill_point, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 21, SQLDT_UINT, &p.option, sizeof p.option, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 22, SQLDT_UCHAR, &p.karma, sizeof p.karma, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 23, SQLDT_SHORT, &p.manner, sizeof p.manner, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 24, SQLDT_SHORT, &p.hair, sizeof p.hair, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 25, SQLDT_SHORT, &p.hair_color, sizeof p.hair_color, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 26, SQLDT_SHORT, &p.clothes_color, sizeof p.clothes_color, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 27, SQLDT_INT, &p.body, sizeof p.body, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 28, SQLDT_INT, &p.look.weapon, sizeof p.look.weapon, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 29, SQLDT_INT, &p.look.shield, sizeof p.look.shield, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 30, SQLDT_INT, &p.look.head_top, sizeof p.look.head_top, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 31, SQLDT_INT, &p.look.head_mid, sizeof p.look.head_mid, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 32, SQLDT_INT, &p.look.head_bottom, sizeof p.look.head_bottom, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 33, SQLDT_STRING, &last_map, sizeof last_map, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 34, SQLDT_USHORT, &p.rename, sizeof p.rename, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 35, SQLDT_TIME, &p.delete_date, sizeof p.delete_date, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 36, SQLDT_INT, &p.look.robe, sizeof p.look.robe, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 37, SQLDT_USHORT, &p.slotchange, sizeof p.slotchange, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 38, SQLDT_TIME, &unban_time, sizeof unban_time, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 39, SQLDT_ENUM, &sex, sizeof sex, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 40, SQLDT_INT, &p.title_id, sizeof p.title_id, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 41, SQLDT_INT, &p.inventorySize, sizeof p.inventorySize, NULL, NULL)
) {
SqlStmt_ShowDebug(stmt);
SQL->StmtFree(stmt);
return 0;
}
- for( i = 0; i < MAX_CHARS && SQL_SUCCESS == SQL->StmtNextRow(stmt); i++ ) {
+ int tmpCount = 0;
+ for (i = 0; i < MAX_CHARS && SQL_SUCCESS == SQL->StmtNextRow(stmt); i++) {
if (p.slot >= MAX_CHARS)
continue;
+ if (p.inventorySize <= 0 || p.inventorySize > MAX_INVENTORY) {
+ ShowError("Wrong inventorySize field: %d. Must be in range 1 to %d. Character %s (CID: %d, AID: %d)\n",
+ p.inventorySize, MAX_INVENTORY, p.name, p.char_id, p.account_id);
+ Assert_report(0);
+ p.inventorySize = FIXED_INVENTORY_SIZE;
+ }
p.last_point.map = mapindex->name2id(last_map);
sd->found_char[p.slot] = p.char_id;
sd->unban_time[p.slot] = unban_time;
p.sex = chr->mmo_gender(sd, &p, sex[0]);
j += chr->mmo_char_tobuf(WBUFP(buf, j), &p);
+ tmpCount ++;
}
- memset(sd->new_name,0,sizeof(sd->new_name));
+ memset(sd->new_name, 0, sizeof(sd->new_name));
SQL->StmtFree(stmt);
+ if (count)
+ *count = tmpCount;
return j;
}
//=====================================================================================================
-int char_mmo_char_fromsql(int char_id, struct mmo_charstatus* p, bool load_everything)
+static int char_mmo_char_fromsql(int char_id, struct mmo_charstatus *p, bool load_everything)
{
- int i,j;
+ int i = 0;
char t_msg[128] = "";
struct mmo_charstatus* cp;
- StringBuf buf;
struct SqlStmt *stmt;
char last_map[MAP_NAME_LENGTH_EXT];
char save_map[MAP_NAME_LENGTH_EXT];
char point_map[MAP_NAME_LENGTH_EXT];
struct point tmp_point;
- struct item tmp_item;
struct s_skill tmp_skill;
struct s_friend tmp_friend;
#ifdef HOTKEY_SAVING
@@ -1046,6 +1193,7 @@ int char_mmo_char_fromsql(int char_id, struct mmo_charstatus* p, bool load_every
nullpo_ret(p);
memset(p, 0, sizeof(struct mmo_charstatus));
+ p->inventorySize = FIXED_INVENTORY_SIZE;
if (chr->show_save_log)
ShowInfo("Char load request (%d)\n", char_id);
@@ -1064,69 +1212,76 @@ int char_mmo_char_fromsql(int char_id, struct mmo_charstatus* p, bool load_every
"`status_point`,`skill_point`,`option`,`karma`,`manner`,`party_id`,`guild_id`,`pet_id`,`homun_id`,`elemental_id`,`hair`,"
"`hair_color`,`clothes_color`,`body`,`weapon`,`shield`,`head_top`,`head_mid`,`head_bottom`,`last_map`,`last_x`,`last_y`,"
"`save_map`,`save_x`,`save_y`,`partner_id`,`father`,`mother`,`child`,`fame`,`rename`,`delete_date`,`robe`,`slotchange`,"
- "`char_opt`,`font`,`uniqueitem_counter`,`sex`,`hotkey_rowshift`"
+ "`char_opt`,`font`,`uniqueitem_counter`,`sex`,`hotkey_rowshift`,`clan_id`,`last_login`, `attendance_count`, `attendance_timer`,"
+ "`title_id`, `inventory_size`"
" FROM `%s` WHERE `char_id`=? LIMIT 1", char_db)
- || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_INT, &char_id, 0)
+ || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_INT, &char_id, sizeof char_id)
|| SQL_ERROR == SQL->StmtExecute(stmt)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 0, SQLDT_INT, &p->char_id, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 1, SQLDT_INT, &p->account_id, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 2, SQLDT_UCHAR, &p->slot, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 3, SQLDT_STRING, &p->name, sizeof(p->name), NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 4, SQLDT_SHORT, &p->class, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 5, SQLDT_INT, &p->base_level, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 6, SQLDT_INT, &p->job_level, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 7, SQLDT_UINT, &p->base_exp, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 8, SQLDT_UINT, &p->job_exp, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 9, SQLDT_INT, &p->zeny, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 10, SQLDT_SHORT, &p->str, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 11, SQLDT_SHORT, &p->agi, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 12, SQLDT_SHORT, &p->vit, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 13, SQLDT_SHORT, &p->int_, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 14, SQLDT_SHORT, &p->dex, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 15, SQLDT_SHORT, &p->luk, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 16, SQLDT_INT, &p->max_hp, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 17, SQLDT_INT, &p->hp, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 18, SQLDT_INT, &p->max_sp, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 19, SQLDT_INT, &p->sp, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 20, SQLDT_INT, &p->status_point, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 21, SQLDT_INT, &p->skill_point, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 22, SQLDT_UINT, &p->option, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 23, SQLDT_UCHAR, &p->karma, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 24, SQLDT_SHORT, &p->manner, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 25, SQLDT_INT, &p->party_id, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 26, SQLDT_INT, &p->guild_id, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 27, SQLDT_INT, &p->pet_id, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 28, SQLDT_INT, &p->hom_id, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 29, SQLDT_INT, &p->ele_id, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 30, SQLDT_SHORT, &p->hair, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 31, SQLDT_SHORT, &p->hair_color, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 32, SQLDT_SHORT, &p->clothes_color, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 33, SQLDT_SHORT, &p->body, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 34, SQLDT_SHORT, &p->weapon, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 35, SQLDT_SHORT, &p->shield, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 36, SQLDT_SHORT, &p->head_top, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 37, SQLDT_SHORT, &p->head_mid, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 38, SQLDT_SHORT, &p->head_bottom, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 39, SQLDT_STRING, &last_map, sizeof(last_map), NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 40, SQLDT_SHORT, &p->last_point.x, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 41, SQLDT_SHORT, &p->last_point.y, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 42, SQLDT_STRING, &save_map, sizeof(save_map), NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 43, SQLDT_SHORT, &p->save_point.x, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 44, SQLDT_SHORT, &p->save_point.y, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 45, SQLDT_INT, &p->partner_id, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 46, SQLDT_INT, &p->father, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 47, SQLDT_INT, &p->mother, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 48, SQLDT_INT, &p->child, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 49, SQLDT_INT, &p->fame, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 50, SQLDT_USHORT, &p->rename, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 51, SQLDT_UINT32, &p->delete_date, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 52, SQLDT_SHORT, &p->robe, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 53, SQLDT_USHORT, &p->slotchange, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 54, SQLDT_UINT, &opt, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 55, SQLDT_UCHAR, &p->font, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 56, SQLDT_UINT, &p->uniqueitem_counter, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 57, SQLDT_ENUM, &sex, sizeof(sex), NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 58, SQLDT_UCHAR, &p->hotkey_rowshift, 0, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 0, SQLDT_INT, &p->char_id, sizeof p->char_id, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 1, SQLDT_INT, &p->account_id, sizeof p->account_id, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 2, SQLDT_UCHAR, &p->slot, sizeof p->slot, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 3, SQLDT_STRING, &p->name, sizeof p->name, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 4, SQLDT_INT16, &p->class, sizeof p->class, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 5, SQLDT_INT, &p->base_level, sizeof p->base_level, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 6, SQLDT_INT, &p->job_level, sizeof p->job_level, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 7, SQLDT_UINT64, &p->base_exp, sizeof p->base_exp, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 8, SQLDT_UINT64, &p->job_exp, sizeof p->job_exp, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 9, SQLDT_INT, &p->zeny, sizeof p->zeny, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 10, SQLDT_SHORT, &p->str, sizeof p->str, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 11, SQLDT_SHORT, &p->agi, sizeof p->agi, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 12, SQLDT_SHORT, &p->vit, sizeof p->vit, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 13, SQLDT_SHORT, &p->int_, sizeof p->int_, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 14, SQLDT_SHORT, &p->dex, sizeof p->dex, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 15, SQLDT_SHORT, &p->luk, sizeof p->luk, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 16, SQLDT_INT, &p->max_hp, sizeof p->max_hp, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 17, SQLDT_INT, &p->hp, sizeof p->hp, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 18, SQLDT_INT, &p->max_sp, sizeof p->max_sp, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 19, SQLDT_INT, &p->sp, sizeof p->sp, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 20, SQLDT_INT, &p->status_point, sizeof p->status_point, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 21, SQLDT_INT, &p->skill_point, sizeof p->skill_point, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 22, SQLDT_UINT, &p->option, sizeof p->option, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 23, SQLDT_UCHAR, &p->karma, sizeof p->karma, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 24, SQLDT_SHORT, &p->manner, sizeof p->manner, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 25, SQLDT_INT, &p->party_id, sizeof p->party_id, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 26, SQLDT_INT, &p->guild_id, sizeof p->guild_id, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 27, SQLDT_INT, &p->pet_id, sizeof p->pet_id, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 28, SQLDT_INT, &p->hom_id, sizeof p->hom_id, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 29, SQLDT_INT, &p->ele_id, sizeof p->ele_id, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 30, SQLDT_SHORT, &p->hair, sizeof p->hair, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 31, SQLDT_SHORT, &p->hair_color, sizeof p->hair_color, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 32, SQLDT_SHORT, &p->clothes_color, sizeof p->clothes_color, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 33, SQLDT_INT, &p->body, sizeof p->body, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 34, SQLDT_INT, &p->look.weapon, sizeof p->look.weapon, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 35, SQLDT_INT, &p->look.shield, sizeof p->look.shield, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 36, SQLDT_INT, &p->look.head_top, sizeof p->look.head_top, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 37, SQLDT_INT, &p->look.head_mid, sizeof p->look.head_mid, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 38, SQLDT_INT, &p->look.head_bottom, sizeof p->look.head_bottom, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 39, SQLDT_STRING, &last_map, sizeof last_map, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 40, SQLDT_INT16, &p->last_point.x, sizeof p->last_point.x, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 41, SQLDT_INT16, &p->last_point.y, sizeof p->last_point.y, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 42, SQLDT_STRING, &save_map, sizeof save_map, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 43, SQLDT_INT16, &p->save_point.x, sizeof p->save_point.x, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 44, SQLDT_INT16, &p->save_point.y, sizeof p->save_point.y, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 45, SQLDT_INT, &p->partner_id, sizeof p->partner_id, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 46, SQLDT_INT, &p->father, sizeof p->father, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 47, SQLDT_INT, &p->mother, sizeof p->mother, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 48, SQLDT_INT, &p->child, sizeof p->child, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 49, SQLDT_INT, &p->fame, sizeof p->fame, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 50, SQLDT_USHORT, &p->rename, sizeof p->rename, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 51, SQLDT_TIME, &p->delete_date, sizeof p->delete_date, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 52, SQLDT_INT, &p->look.robe, sizeof p->look.robe, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 53, SQLDT_USHORT, &p->slotchange, sizeof p->slotchange, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 54, SQLDT_UINT, &opt, sizeof opt, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 55, SQLDT_UCHAR, &p->font, sizeof p->font, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 56, SQLDT_UINT32, &p->uniqueitem_counter, sizeof p->uniqueitem_counter, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 57, SQLDT_ENUM, &sex, sizeof sex, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 58, SQLDT_UCHAR, &p->hotkey_rowshift, sizeof p->hotkey_rowshift, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 59, SQLDT_INT, &p->clan_id, sizeof p->clan_id, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 60, SQLDT_INT64, &p->last_login, sizeof p->last_login, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 61, SQLDT_SHORT, &p->attendance_count, sizeof p->attendance_count, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 62, SQLDT_INT64, &p->attendance_timer, sizeof p->attendance_timer, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 63, SQLDT_INT, &p->title_id, sizeof p->title_id, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 64, SQLDT_INT, &p->inventorySize, sizeof p->inventorySize, NULL, NULL)
) {
SqlStmt_ShowDebug(stmt);
SQL->StmtFree(stmt);
@@ -1158,6 +1313,13 @@ int char_mmo_char_fromsql(int char_id, struct mmo_charstatus* p, bool load_every
p->save_point.y = mapindex->default_y;
}
+ if (p->inventorySize <= 0 || p->inventorySize > MAX_INVENTORY) {
+ ShowError("Wrong inventorySize field: %d. Must be in range 1 to %d. Character %s (CID: %d, AID: %d)\n",
+ p->inventorySize, MAX_INVENTORY, p->name, p->char_id, p->account_id);
+ Assert_report(0);
+ p->inventorySize = FIXED_INVENTORY_SIZE;
+ }
+
strcat(t_msg, " status");
if (!load_everything) // For quick selection of data when displaying the char menu
@@ -1170,11 +1332,11 @@ int char_mmo_char_fromsql(int char_id, struct mmo_charstatus* p, bool load_every
//`memo` (`memo_id`,`char_id`,`map`,`x`,`y`)
memset(&tmp_point, 0, sizeof(tmp_point));
if (SQL_ERROR == SQL->StmtPrepare(stmt, "SELECT `map`,`x`,`y` FROM `%s` WHERE `char_id`=? ORDER by `memo_id` LIMIT %d", memo_db, MAX_MEMOPOINTS)
- || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_INT, &char_id, 0)
+ || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_INT, &char_id, sizeof char_id)
|| SQL_ERROR == SQL->StmtExecute(stmt)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 0, SQLDT_STRING, &point_map, sizeof(point_map), NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 1, SQLDT_SHORT, &tmp_point.x, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 2, SQLDT_SHORT, &tmp_point.y, 0, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 0, SQLDT_STRING, &point_map, sizeof point_map, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 1, SQLDT_INT16, &tmp_point.x, sizeof tmp_point.x, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 2, SQLDT_INT16, &tmp_point.y, sizeof tmp_point.y, NULL, NULL)
)
SqlStmt_ShowDebug(stmt);
@@ -1184,86 +1346,23 @@ int char_mmo_char_fromsql(int char_id, struct mmo_charstatus* p, bool load_every
}
strcat(t_msg, " memo");
- //read inventory
- //`inventory` (`id`,`char_id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `card0`, `card1`, `card2`, `card3`, `expire_time`, `favorite`, `bound`, `unique_id`)
- StrBuf->Init(&buf);
- StrBuf->AppendStr(&buf, "SELECT `id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `expire_time`, `favorite`, `bound`, `unique_id`");
- for( i = 0; i < MAX_SLOTS; ++i )
- StrBuf->Printf(&buf, ", `card%d`", i);
- StrBuf->Printf(&buf, " FROM `%s` WHERE `char_id`=? LIMIT %d", inventory_db, MAX_INVENTORY);
+ /* read inventory [Smokexyz/Hercules] */
+ if (chr->getitemdata_from_sql(p->inventory, MAX_INVENTORY, p->char_id, TABLE_INVENTORY) > 0)
+ strcat(t_msg, " inventory");
- memset(&tmp_item, 0, sizeof(tmp_item));
- if (SQL_ERROR == SQL->StmtPrepareStr(stmt, StrBuf->Value(&buf))
- || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_INT, &char_id, 0)
- || SQL_ERROR == SQL->StmtExecute(stmt)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 0, SQLDT_INT, &tmp_item.id, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 1, SQLDT_SHORT, &tmp_item.nameid, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 2, SQLDT_SHORT, &tmp_item.amount, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 3, SQLDT_UINT, &tmp_item.equip, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 4, SQLDT_CHAR, &tmp_item.identify, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 5, SQLDT_CHAR, &tmp_item.refine, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 6, SQLDT_CHAR, &tmp_item.attribute, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 7, SQLDT_UINT, &tmp_item.expire_time, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 8, SQLDT_CHAR, &tmp_item.favorite, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 9, SQLDT_UCHAR, &tmp_item.bound, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 10, SQLDT_UINT64, &tmp_item.unique_id, 0, NULL, NULL)
- )
- SqlStmt_ShowDebug(stmt);
- for( i = 0; i < MAX_SLOTS; ++i )
- if( SQL_ERROR == SQL->StmtBindColumn(stmt, 11+i, SQLDT_SHORT, &tmp_item.card[i], 0, NULL, NULL) )
- SqlStmt_ShowDebug(stmt);
-
- for( i = 0; i < MAX_INVENTORY && SQL_SUCCESS == SQL->StmtNextRow(stmt); ++i )
- memcpy(&p->inventory[i], &tmp_item, sizeof(tmp_item));
-
- strcat(t_msg, " inventory");
-
- //read cart
- //`cart_inventory` (`id`,`char_id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `card0`, `card1`, `card2`, `card3`, expire_time`, `bound`, `unique_id`)
- StrBuf->Clear(&buf);
- StrBuf->AppendStr(&buf, "SELECT `id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `expire_time`, `bound`, `unique_id`");
- for( j = 0; j < MAX_SLOTS; ++j )
- StrBuf->Printf(&buf, ", `card%d`", j);
- StrBuf->Printf(&buf, " FROM `%s` WHERE `char_id`=? LIMIT %d", cart_db, MAX_CART);
-
- memset(&tmp_item, 0, sizeof(tmp_item));
- if (SQL_ERROR == SQL->StmtPrepareStr(stmt, StrBuf->Value(&buf))
- || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_INT, &char_id, 0)
- || SQL_ERROR == SQL->StmtExecute(stmt)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 0, SQLDT_INT, &tmp_item.id, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 1, SQLDT_SHORT, &tmp_item.nameid, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 2, SQLDT_SHORT, &tmp_item.amount, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 3, SQLDT_UINT, &tmp_item.equip, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 4, SQLDT_CHAR, &tmp_item.identify, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 5, SQLDT_CHAR, &tmp_item.refine, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 6, SQLDT_CHAR, &tmp_item.attribute, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 7, SQLDT_UINT, &tmp_item.expire_time, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 8, SQLDT_UCHAR, &tmp_item.bound, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 9, SQLDT_UINT64, &tmp_item.unique_id, 0, NULL, NULL)
- ) {
- SqlStmt_ShowDebug(stmt);
- }
- for( i = 0; i < MAX_SLOTS; ++i )
- if( SQL_ERROR == SQL->StmtBindColumn(stmt, 10+i, SQLDT_SHORT, &tmp_item.card[i], 0, NULL, NULL) )
- SqlStmt_ShowDebug(stmt);
-
- for( i = 0; i < MAX_CART && SQL_SUCCESS == SQL->StmtNextRow(stmt); ++i )
- memcpy(&p->cart[i], &tmp_item, sizeof(tmp_item));
- strcat(t_msg, " cart");
-
- //read storage
- inter_storage->fromsql(p->account_id, &p->storage);
- strcat(t_msg, " storage");
+ /* read cart [Smokexyz/Hercules] */
+ if (chr->getitemdata_from_sql(p->cart, MAX_CART, p->char_id, TABLE_CART) > 0)
+ strcat(t_msg, " cart");
//read skill
//`skill` (`char_id`, `id`, `lv`)
memset(&tmp_skill, 0, sizeof(tmp_skill));
- if (SQL_ERROR == SQL->StmtPrepare(stmt, "SELECT `id`, `lv`,`flag` FROM `%s` WHERE `char_id`=? LIMIT %d", skill_db, MAX_SKILL)
- || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_INT, &char_id, 0)
+ if (SQL_ERROR == SQL->StmtPrepare(stmt, "SELECT `id`, `lv`,`flag` FROM `%s` WHERE `char_id`=? LIMIT %d", skill_db, MAX_SKILL_DB)
+ || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_INT, &char_id, sizeof char_id)
|| SQL_ERROR == SQL->StmtExecute(stmt)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 0, SQLDT_USHORT, &tmp_skill.id , 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 1, SQLDT_UCHAR , &tmp_skill.lv , 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 2, SQLDT_UCHAR , &tmp_skill.flag, 0, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 0, SQLDT_USHORT, &tmp_skill.id, sizeof tmp_skill.id, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 1, SQLDT_UCHAR, &tmp_skill.lv, sizeof tmp_skill.lv, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 2, SQLDT_UCHAR, &tmp_skill.flag, sizeof tmp_skill.flag, NULL, NULL)
) {
SqlStmt_ShowDebug(stmt);
}
@@ -1271,7 +1370,7 @@ int char_mmo_char_fromsql(int char_id, struct mmo_charstatus* p, bool load_every
if( tmp_skill.flag != SKILL_FLAG_PERM_GRANTED )
tmp_skill.flag = SKILL_FLAG_PERMANENT;
- for( i = 0; i < MAX_SKILL && SQL_SUCCESS == SQL->StmtNextRow(stmt); ++i ) {
+ for (i = 0; i < MAX_SKILL_DB && SQL_SUCCESS == SQL->StmtNextRow(stmt); ++i) {
if( skillid2idx[tmp_skill.id] )
memcpy(&p->skill[skillid2idx[tmp_skill.id]], &tmp_skill, sizeof(tmp_skill));
else
@@ -1283,11 +1382,11 @@ int char_mmo_char_fromsql(int char_id, struct mmo_charstatus* p, bool load_every
//`friends` (`char_id`, `friend_account`, `friend_id`)
memset(&tmp_friend, 0, sizeof(tmp_friend));
if (SQL_ERROR == SQL->StmtPrepare(stmt, "SELECT c.`account_id`, c.`char_id`, c.`name` FROM `%s` c LEFT JOIN `%s` f ON f.`friend_account` = c.`account_id` AND f.`friend_id` = c.`char_id` WHERE f.`char_id`=? LIMIT %d", char_db, friend_db, MAX_FRIENDS)
- || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_INT, &char_id, 0)
+ || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_INT, &char_id, sizeof char_id)
|| SQL_ERROR == SQL->StmtExecute(stmt)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 0, SQLDT_INT, &tmp_friend.account_id, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 1, SQLDT_INT, &tmp_friend.char_id, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 2, SQLDT_STRING, &tmp_friend.name, sizeof(tmp_friend.name), NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 0, SQLDT_INT, &tmp_friend.account_id, sizeof tmp_friend.account_id, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 1, SQLDT_INT, &tmp_friend.char_id, sizeof tmp_friend.char_id, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 2, SQLDT_STRING, &tmp_friend.name, sizeof tmp_friend.name, NULL, NULL)
) {
SqlStmt_ShowDebug(stmt);
}
@@ -1301,13 +1400,15 @@ int char_mmo_char_fromsql(int char_id, struct mmo_charstatus* p, bool load_every
//`hotkey` (`char_id`, `hotkey`, `type`, `itemskill_id`, `skill_lvl`
memset(&tmp_hotkey, 0, sizeof(tmp_hotkey));
if (SQL_ERROR == SQL->StmtPrepare(stmt, "SELECT `hotkey`, `type`, `itemskill_id`, `skill_lvl` FROM `%s` WHERE `char_id`=?", hotkey_db)
- || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_INT, &char_id, 0)
+ || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_INT, &char_id, sizeof char_id)
|| SQL_ERROR == SQL->StmtExecute(stmt)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 0, SQLDT_INT, &hotkey_num, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 1, SQLDT_UCHAR, &tmp_hotkey.type, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 2, SQLDT_UINT, &tmp_hotkey.id, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 3, SQLDT_USHORT, &tmp_hotkey.lv, 0, NULL, NULL) )
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 0, SQLDT_INT, &hotkey_num, sizeof hotkey_num, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 1, SQLDT_UCHAR, &tmp_hotkey.type, sizeof tmp_hotkey.type, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 2, SQLDT_UINT, &tmp_hotkey.id, sizeof tmp_hotkey.id, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 3, SQLDT_USHORT, &tmp_hotkey.lv, sizeof tmp_hotkey.lv, NULL, NULL)
+ ) {
SqlStmt_ShowDebug(stmt);
+ }
while( SQL_SUCCESS == SQL->StmtNextRow(stmt) )
{
@@ -1328,12 +1429,12 @@ int char_mmo_char_fromsql(int char_id, struct mmo_charstatus* p, bool load_every
//`account_data` (`account_id`,`bank_vault`,`base_exp`,`base_drop`,`base_death`)
if (SQL_ERROR == SQL->StmtPrepare(stmt, "SELECT `bank_vault`,`base_exp`,`base_drop`,`base_death` FROM `%s` WHERE `account_id`=? LIMIT 1", account_data_db)
- || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_INT, &account_id, 0)
+ || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_INT, &account_id, sizeof account_id)
|| SQL_ERROR == SQL->StmtExecute(stmt)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 0, SQLDT_INT, &p->bank_vault, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 1, SQLDT_USHORT, &p->mod_exp, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 2, SQLDT_USHORT, &p->mod_drop, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 3, SQLDT_USHORT, &p->mod_death, 0, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 0, SQLDT_INT, &p->bank_vault, sizeof p->bank_vault, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 1, SQLDT_USHORT, &p->mod_exp, sizeof p->mod_exp, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 2, SQLDT_USHORT, &p->mod_drop, sizeof p->mod_drop, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 3, SQLDT_USHORT, &p->mod_death, sizeof p->mod_death, NULL, NULL)
) {
SqlStmt_ShowDebug(stmt);
}
@@ -1344,7 +1445,6 @@ int char_mmo_char_fromsql(int char_id, struct mmo_charstatus* p, bool load_every
if (chr->show_save_log)
ShowInfo("Loaded char (%d - %s): %s\n", char_id, p->name, t_msg); //ok. all data load successfully!
SQL->StmtFree(stmt);
- StrBuf->Destroy(&buf);
/* load options into proper vars */
if( opt & OPT_ALLOW_PARTY )
@@ -1358,7 +1458,7 @@ int char_mmo_char_fromsql(int char_id, struct mmo_charstatus* p, bool load_every
}
//==========================================================================================================
-int char_mmo_char_sql_init(void)
+static int char_mmo_char_sql_init(void)
{
chr->char_db_= idb_alloc(DB_OPT_RELEASE_DATA);
@@ -1375,7 +1475,8 @@ int char_mmo_char_sql_init(void)
}
/* [Ind/Hercules] - special thanks to Yommy for providing the packet structure/data */
-bool char_char_slotchange(struct char_session_data *sd, int fd, unsigned short from, unsigned short to) {
+static bool char_char_slotchange(struct char_session_data *sd, int fd, unsigned short from, unsigned short to)
+{
struct mmo_charstatus char_dat;
int from_id = 0;
@@ -1427,7 +1528,7 @@ bool char_char_slotchange(struct char_session_data *sd, int fd, unsigned short f
//-----------------------------------
// Function to change character's names
//-----------------------------------
-int char_rename_char_sql(struct char_session_data *sd, int char_id)
+static int char_rename_char_sql(struct char_session_data *sd, int char_id)
{
struct mmo_charstatus char_dat;
char esc_name[NAME_LENGTH*2+1];
@@ -1446,6 +1547,14 @@ int char_rename_char_sql(struct char_session_data *sd, int char_id)
if( char_dat.rename == 0 )
return 1;
+ if (char_aegis_rename) {
+ if (char_dat.guild_id > 0) {
+ return 5; // MSG_FAILED_RENAME_BELONGS_TO_GUILD
+ } else if (char_dat.party_id > 0) {
+ return 6; // MSG_FAILED_RENAME_BELONGS_TO_PARTY
+ }
+ }
+
SQL->EscapeStringLen(inter->sql_handle, esc_name, sd->new_name, strnlen(sd->new_name, NAME_LENGTH));
// check if the char exist
@@ -1471,21 +1580,76 @@ int char_rename_char_sql(struct char_session_data *sd, int char_id)
// log change
if (chr->enable_logs) {
if (SQL_ERROR == SQL->Query(inter->sql_handle,
- "INSERT INTO `%s` (`time`, `char_msg`,`account_id`,`char_id`,`char_num`,`name`,`str`,`agi`,`vit`,`int`,`dex`,`luk`,`hair`,`hair_color`)"
- "VALUES (NOW(), '%s', '%d', '%d', '%d', '%s', '0', '0', '0', '0', '0', '0', '0', '0')",
- charlog_db, "change char name", sd->account_id, char_dat.char_id, char_dat.slot, esc_name))
+ "INSERT INTO `%s` ("
+ " `time`, `char_msg`, `account_id`, `char_id`, `char_num`, `class`, `name`,"
+ " `str`, `agi`, `vit`, `int`, `dex`, `luk`,"
+ " `hair`, `hair_color`"
+ ") VALUES ("
+ " NOW(), 'change char name', '%d', '%d', '%d', '%d', '%s',"
+ " '%d', '%d', '%d', '%d', '%d', '%d',"
+ " '%d', '%d'"
+ ")",
+ charlog_db,
+ sd->account_id, char_dat.char_id, char_dat.slot, char_dat.class, esc_name,
+ char_dat.str, char_dat.agi, char_dat.vit, char_dat.int_, char_dat.dex, char_dat.luk,
+ char_dat.hair, char_dat.hair_color
+ ))
Sql_ShowDebug(inter->sql_handle);
}
return 0;
}
-int char_check_char_name(char * name, char * esc_name)
+/**
+ * Checks if the given name exists in the database.
+ *
+ * @param name The name to check.
+ * @param esc_name Escaped version of the name, optional for faster processing.
+ * @retval true if the character name already exists.
+ */
+static bool char_name_exists(const char *name, const char *esc_name)
+{
+ char esc_name2[NAME_LENGTH * 2 + 1];
+
+ nullpo_retr(true, name);
+
+ if (esc_name == NULL) {
+ SQL->EscapeStringLen(inter->sql_handle, esc_name2, name, strnlen(name, NAME_LENGTH));
+ esc_name = esc_name2;
+ }
+
+ if (name_ignoring_case) {
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT 1 FROM `%s` WHERE BINARY `name` = '%s' LIMIT 1", char_db, esc_name)) {
+ Sql_ShowDebug(inter->sql_handle);
+ return true;
+ }
+ } else {
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT 1 FROM `%s` WHERE `name` = '%s' LIMIT 1", char_db, esc_name)) {
+ Sql_ShowDebug(inter->sql_handle);
+ return true;
+ }
+ }
+ if (SQL->NumRows(inter->sql_handle) > 0)
+ return true;
+
+ return false;
+}
+
+/**
+ * Checks if the given name is valid for a new character.
+ *
+ * @param name The name to check.
+ * @param esc_name Escaped version of the name, optional for faster processing.
+ * @retval 0 if the name is valid.
+ * @retval -1 if the name already exists or is reserved
+ * @retval -2 if the name is too short or contains special characters.
+ * @retval -5 if the name contains forbidden characters.
+ */
+static int char_check_char_name(const char *name, const char *esc_name)
{
int i;
nullpo_retr(-2, name);
- nullpo_retr(-2, esc_name);
// check length of character name
if (name[0] == '\0')
@@ -1496,9 +1660,16 @@ int char_check_char_name(char * name, char * esc_name)
**/
if( strlen( name ) < 4 )
return -2;
- // check content of character name
- if( remove_control_chars(name) )
- return -2; // control chars in name
+
+ {
+ // check content of character name
+ char *name_copy = aStrdup(name);
+ if (remove_control_chars(name_copy)) {
+ aFree(name_copy);
+ return -2; // control chars in name
+ }
+ aFree(name_copy);
+ }
// check for reserved names
if( strcmpi(name, wisp_server_name) == 0 )
@@ -1517,19 +1688,9 @@ int char_check_char_name(char * name, char * esc_name)
if( strchr(char_name_letters, name[i]) != NULL )
return -5;
}
- if( name_ignoring_case ) {
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT 1 FROM `%s` WHERE BINARY `name` = '%s' LIMIT 1", char_db, esc_name) ) {
- Sql_ShowDebug(inter->sql_handle);
- return -2;
- }
- } else {
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT 1 FROM `%s` WHERE `name` = '%s' LIMIT 1", char_db, esc_name) ) {
- Sql_ShowDebug(inter->sql_handle);
- return -2;
- }
- }
- if( SQL->NumRows(inter->sql_handle) > 0 )
- return -1; // name already exists
+
+ if (chr->name_exists(name, esc_name))
+ return -1;
return 0;
}
@@ -1544,7 +1705,7 @@ int char_check_char_name(char * name, char * esc_name)
* -5: 'Symbols in Character Names are forbidden'
* char_id: Success
**/
-int char_make_new_char_sql(struct char_session_data *sd, const char *name_, int str, int agi, int vit, int int_, int dex, int luk, int slot, int hair_color, int hair_style, int16 starting_class)
+static int char_make_new_char_sql(struct char_session_data *sd, const char *name_, int str, int agi, int vit, int int_, int dex, int luk, int slot, int hair_color, int hair_style, int16 starting_class, uint8 sex)
{
char name[NAME_LENGTH];
char esc_name[NAME_LENGTH*2+1];
@@ -1565,7 +1726,7 @@ int char_make_new_char_sql(struct char_session_data *sd, const char *name_, int
case JOB_NOVICE:
break;
default:
- return -2; // Char Creation Denied
+ return -2; // Char Creation Denied
}
//check other inputs
@@ -1587,17 +1748,17 @@ int char_make_new_char_sql(struct char_session_data *sd, const char *name_, int
if( sd->found_char[slot] != -1 )
return -2; /* character account limit exceeded */
+
#if PACKETVER >= 20120307
// Insert the new char entry to the database
if (SQL_ERROR == SQL->Query(inter->sql_handle, "INSERT INTO `%s` (`account_id`, `char_num`, `name`, `class`, `zeny`, `status_point`,`str`, `agi`, `vit`, `int`, `dex`, `luk`, `max_hp`, `hp`,"
- "`max_sp`, `sp`, `hair`, `hair_color`, `last_map`, `last_x`, `last_y`, `save_map`, `save_x`, `save_y`) VALUES ("
- "'%d', '%d', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d','%d', '%d','%d', '%d', '%s', '%d', '%d', '%s', '%d', '%d')",
+ "`max_sp`, `sp`, `hair`, `hair_color`, `last_map`, `last_x`, `last_y`, `save_map`, `save_x`, `save_y`, `sex`) VALUES ("
+ "'%d', '%d', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d','%d', '%d','%d', '%d', '%s', '%d', '%d', '%s', '%d', '%d', '%c')",
char_db, sd->account_id , slot, esc_name, starting_class, start_zeny, 48, str, agi, vit, int_, dex, luk,
(40 * (100 + vit)/100) , (40 * (100 + vit)/100 ), (11 * (100 + int_)/100), (11 * (100 + int_)/100), hair_style, hair_color,
- mapindex_id2name(start_point.map), start_point.x, start_point.y, mapindex_id2name(start_point.map), start_point.x, start_point.y) )
- {
- Sql_ShowDebug(inter->sql_handle);
- return -2; //No, stop the procedure!
+ mapindex_id2name(start_point.map), start_point.x, start_point.y, mapindex_id2name(start_point.map), start_point.x, start_point.y, sex)) {
+ Sql_ShowDebug(inter->sql_handle);
+ return -2; //No, stop the procedure!
}
#else
//Insert the new char entry to the database
@@ -1647,14 +1808,14 @@ int char_make_new_char_sql(struct char_session_data *sd, const char *name_, int
}
}
- ShowInfo("Created char: account: %d, char: %d, slot: %d, name: %s\n", sd->account_id, char_id, slot, name);
+ ShowInfo("Created char: account: %d, char: %d, slot: %d, name: %s, sex: %c\n", sd->account_id, char_id, slot, name, sex);
return char_id;
}
/*----------------------------------------------------------------------------------------------------------*/
/* Divorce Players */
/*----------------------------------------------------------------------------------------------------------*/
-int char_divorce_char_sql(int partner_id1, int partner_id2)
+static int char_divorce_char_sql(int partner_id1, int partner_id2)
{
unsigned char buf[64];
@@ -1677,7 +1838,7 @@ int char_divorce_char_sql(int partner_id1, int partner_id2)
/* Returns 0 if successful
* Returns < 0 for error
*/
-int char_delete_char_sql(int char_id)
+static int char_delete_char_sql(int char_id)
{
char name[NAME_LENGTH];
char esc_name[NAME_LENGTH*2+1]; //Name needs be escaped.
@@ -1757,11 +1918,11 @@ int char_delete_char_sql(int char_id)
/* remove homunculus */
if( hom_id )
- mapif->homunculus_delete(hom_id);
+ inter_homunculus->delete(hom_id);
/* remove elemental */
if (elemental_id)
- mapif->elemental_delete(elemental_id);
+ inter_elemental->delete(elemental_id);
/* remove mercenary data */
inter_mercenary->owner_delete(char_id);
@@ -1833,16 +1994,16 @@ int char_delete_char_sql(int char_id)
if( SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `guild_id` FROM `%s` WHERE `char_id` = '%d'", guild_db, char_id) )
Sql_ShowDebug(inter->sql_handle);
else if( SQL->NumRows(inter->sql_handle) > 0 )
- mapif->parse_BreakGuild(0,guild_id);
+ inter_guild->disband(guild_id);
else if( guild_id )
- inter_guild->leave(guild_id, account_id, char_id);// Leave your guild.
+ inter_guild->leave(guild_id, account_id, char_id, 0, "** Character Deleted **", -1);// Leave your guild.
return 0;
}
//---------------------------------------------------------------------
// This function return the number of online players in all map-servers
//---------------------------------------------------------------------
-int char_count_users(void)
+static int char_count_users(void)
{
int i, users;
@@ -1858,8 +2019,9 @@ int char_count_users(void)
// Writes char data to the buffer in the format used by the client.
// Used in packets 0x6b (chars info) and 0x6d (new char info)
// Returns the size
-#define MAX_CHAR_BUF 150 //Max size (for WFIFOHEAD calls)
-int char_mmo_char_tobuf(uint8* buffer, struct mmo_charstatus* p) {
+#define MAX_CHAR_BUF (PACKET_LEN_0x006d - 2)
+static int char_mmo_char_tobuf(uint8 *buffer, struct mmo_charstatus *p)
+{
unsigned short offset = 0;
uint8* buf;
@@ -1867,10 +2029,23 @@ int char_mmo_char_tobuf(uint8* buffer, struct mmo_charstatus* p) {
return 0;
buf = WBUFP(buffer,0);
+
WBUFL(buf,0) = p->char_id;
- WBUFL(buf,4) = min(p->base_exp, INT32_MAX);
+#if PACKETVER >= 20170830
+ WBUFQ(buf,4) = min(p->base_exp, INT64_MAX);
+ offset += 4;
+ buf = WBUFP(buffer, offset);
+#else
+ WBUFL(buf,4) = min((uint32)(p->base_exp), INT32_MAX);
+#endif
WBUFL(buf,8) = p->zeny;
- WBUFL(buf,12) = min(p->job_exp, INT32_MAX);
+#if PACKETVER >= 20170830
+ WBUFQ(buf,12) = min(p->job_exp, INT64_MAX);
+ offset += 4;
+ buf = WBUFP(buffer, offset);
+#else
+ WBUFL(buf,12) = min((uint32)(p->job_exp), INT32_MAX);
+#endif
WBUFL(buf,16) = p->job_level;
WBUFL(buf,20) = 0; // probably opt1
WBUFL(buf,24) = 0; // probably opt2
@@ -1900,14 +2075,14 @@ int char_mmo_char_tobuf(uint8* buffer, struct mmo_charstatus* p) {
//When the weapon is sent and your option is riding, the client crashes on login!?
// FIXME[Haru]: is OPTION_HANBOK intended to be part of this list? And if it is, should the list also include other OPTION_ costumes?
- WBUFW(buf,56) = (p->option&(OPTION_RIDING|OPTION_DRAGON|OPTION_WUG|OPTION_WUGRIDER|OPTION_MADOGEAR|OPTION_HANBOK)) ? 0 : p->weapon;
+ WBUFW(buf,56) = (p->option&(OPTION_RIDING|OPTION_DRAGON|OPTION_WUG|OPTION_WUGRIDER|OPTION_MADOGEAR|OPTION_HANBOK)) ? 0 : p->look.weapon;
WBUFW(buf,58) = p->base_level;
WBUFW(buf,60) = min(p->skill_point, INT16_MAX);
- WBUFW(buf,62) = p->head_bottom;
- WBUFW(buf,64) = p->shield;
- WBUFW(buf,66) = p->head_top;
- WBUFW(buf,68) = p->head_mid;
+ WBUFW(buf,62) = p->look.head_bottom;
+ WBUFW(buf,64) = p->look.shield;
+ WBUFW(buf,66) = p->look.head_top;
+ WBUFW(buf,68) = p->look.head_mid;
WBUFW(buf,70) = p->hair_color;
WBUFW(buf,72) = p->clothes_color;
memcpy(WBUFP(buf,74), p->name, NAME_LENGTH);
@@ -1931,7 +2106,7 @@ int char_mmo_char_tobuf(uint8* buffer, struct mmo_charstatus* p) {
offset += 4;
#endif
#if PACKETVER >= 20110111
- WBUFL(buf,128) = p->robe;
+ WBUFL(buf,128) = p->look.robe;
offset += 4;
#endif
#if PACKETVER != 20111116 //2011-11-16 wants 136, ask gravity.
@@ -1949,24 +2124,36 @@ int char_mmo_char_tobuf(uint8* buffer, struct mmo_charstatus* p) {
#endif
#endif
- return 106+offset;
+ if (106 + offset != MAX_CHAR_BUF)
+ Assert_report("Wrong buffer size in char_mmo_char_tobuf");
+ return 106 + offset;
}
/* Made Possible by Yommy~! <3 */
-void char_mmo_char_send099d(int fd, struct char_session_data *sd)
-{
-// support added for client between 20121010 and 20130320
-#if PACKETVER > 20120418
- WFIFOHEAD(fd,4 + (MAX_CHARS*MAX_CHAR_BUF));
- WFIFOW(fd,0) = 0x99d;
- WFIFOW(fd,2) = chr->mmo_chars_fromsql(sd, WFIFOP(fd,4)) + 4;
- WFIFOSET(fd,WFIFOW(fd,2));
+static void char_send_HC_ACK_CHARINFO_PER_PAGE(int fd, struct char_session_data *sd)
+{
+#if PACKETVER_MAIN_NUM >= 20130522 || PACKETVER_RE_NUM >= 20130327 || defined(PACKETVER_ZERO)
+ WFIFOHEAD(fd, sizeof(struct PACKET_HC_ACK_CHARINFO_PER_PAGE) + (MAX_CHARS * MAX_CHAR_BUF));
+ struct PACKET_HC_ACK_CHARINFO_PER_PAGE *p = WFIFOP(fd, 0);
+ int count = 0;
+ p->packetId = HEADER_HC_ACK_CHARINFO_PER_PAGE;
+ p->packetLen = chr->mmo_chars_fromsql(sd, WFIFOP(fd, 4), &count) + sizeof(struct PACKET_HC_ACK_CHARINFO_PER_PAGE);
+ WFIFOSET(fd, p->packetLen);
+ // send empty packet if chars count is 3, for trigger final code in client
+ if (count == 3) {
+ WFIFOHEAD(fd, sizeof(struct PACKET_HC_ACK_CHARINFO_PER_PAGE));
+ p = WFIFOP(fd, 0);
+ p->packetId = HEADER_HC_ACK_CHARINFO_PER_PAGE;
+ p->packetLen = sizeof(struct PACKET_HC_ACK_CHARINFO_PER_PAGE);
+ WFIFOSET(fd, p->packetLen);
+ }
#endif
}
/* Sends character ban list */
/* Made Possible by Yommy~! <3 */
-void char_mmo_char_send_ban_list(int fd, struct char_session_data *sd) {
+static void char_mmo_char_send_ban_list(int fd, struct char_session_data *sd)
+{
int i;
time_t now = time(NULL);
@@ -2006,23 +2193,27 @@ void char_mmo_char_send_ban_list(int fd, struct char_session_data *sd) {
//----------------------------------------
// [Ind/Hercules] notify client about charselect window data
//----------------------------------------
-void char_mmo_char_send_slots_info(int fd, struct char_session_data* sd) {
+static void char_mmo_char_send_slots_info(int fd, struct char_session_data *sd)
+{
+// also probably supported client 2013-02-15aRagexe but not 2013-02-15bRagexe [4144]
+#if PACKETVER_MAIN_NUM >= 20130612 || PACKETVER_RE_NUM >= 20130115 || defined(PACKETVER_ZERO)
nullpo_retv(sd);
- WFIFOHEAD(fd,29);
- WFIFOW(fd,0) = 0x82d;
- WFIFOW(fd,2) = 29;
- WFIFOB(fd,4) = sd->char_slots;
- WFIFOB(fd,5) = MAX_CHARS - sd->char_slots;
- WFIFOB(fd,6) = 0;
- WFIFOB(fd,7) = sd->char_slots;
- WFIFOB(fd,8) = sd->char_slots;
- memset(WFIFOP(fd,9), 0, 20); // unused bytes
- WFIFOSET(fd,29);
+ WFIFOHEAD(fd, 29);
+ WFIFOW(fd, 0) = 0x82d;
+ WFIFOW(fd, 2) = 29;
+ WFIFOB(fd, 4) = sd->char_slots;
+ WFIFOB(fd, 5) = MAX_CHARS - sd->char_slots;
+ WFIFOB(fd, 6) = 0;
+ WFIFOB(fd, 7) = sd->char_slots;
+ WFIFOB(fd, 8) = sd->char_slots;
+ memset(WFIFOP(fd, 9), 0, 20); // unused bytes
+ WFIFOSET(fd, 29);
+#endif
}
//----------------------------------------
// Function to send characters to a player
//----------------------------------------
-int char_mmo_char_send_characters(int fd, struct char_session_data* sd)
+static int char_mmo_char_send_characters(int fd, struct char_session_data *sd)
{
int j, offset = 0;
nullpo_ret(sd);
@@ -2041,14 +2232,14 @@ int char_mmo_char_send_characters(int fd, struct char_session_data* sd)
WFIFOB(fd,6) = MAX_CHARS; // Premium slots. AKA any existent chars past sd->char_slots but within MAX_CHARS will show a 'Premium Service' in red
#endif
memset(WFIFOP(fd,4 + offset), 0, 20); // unknown bytes
- j+=chr->mmo_chars_fromsql(sd, WFIFOP(fd,j));
+ j += chr->mmo_chars_fromsql(sd, WFIFOP(fd, j), NULL);
WFIFOW(fd,2) = j; // packet len
WFIFOSET(fd,j);
return 0;
}
-int char_char_married(int pl1, int pl2)
+static int char_char_married(int pl1, int pl2)
{
if( SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `partner_id` FROM `%s` WHERE `char_id` = '%d'", char_db, pl1) )
Sql_ShowDebug(inter->sql_handle);
@@ -2067,7 +2258,7 @@ int char_char_married(int pl1, int pl2)
return 0;
}
-int char_char_child(int parent_id, int child_id)
+static int char_char_child(int parent_id, int child_id)
{
if( SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `child` FROM `%s` WHERE `char_id` = '%d'", char_db, parent_id) )
Sql_ShowDebug(inter->sql_handle);
@@ -2086,7 +2277,7 @@ int char_char_child(int parent_id, int child_id)
return 0;
}
-int char_char_family(int cid1, int cid2, int cid3)
+static int char_char_family(int cid1, int cid2, int cid3)
{
if( SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `char_id`,`partner_id`,`child` FROM `%s` WHERE `char_id` IN ('%d','%d','%d')", char_db, cid1, cid2, cid3) )
Sql_ShowDebug(inter->sql_handle);
@@ -2116,7 +2307,7 @@ int char_char_family(int cid1, int cid2, int cid3)
//----------------------------------------------------------------------
// Force disconnection of an online player (with account value) by [Yor]
//----------------------------------------------------------------------
-void char_disconnect_player(int account_id)
+static void char_disconnect_player(int account_id)
{
int i;
struct char_session_data* sd;
@@ -2127,7 +2318,7 @@ void char_disconnect_player(int account_id)
sockt->eof(i);
}
-void char_authfail_fd(int fd, int type)
+static void char_authfail_fd(int fd, int type)
{
WFIFOHEAD(fd,3);
WFIFOW(fd,0) = 0x81;
@@ -2135,7 +2326,7 @@ void char_authfail_fd(int fd, int type)
WFIFOSET(fd,3);
}
-void char_request_account_data(int account_id)
+static void char_request_account_data(int account_id)
{
WFIFOHEAD(chr->login_fd,6);
WFIFOW(chr->login_fd,0) = 0x2716;
@@ -2181,21 +2372,21 @@ static void char_auth_ok(int fd, struct char_session_data *sd)
// continues when account data is received...
}
-void char_ping_login_server(int fd)
+static void char_ping_login_server(int fd)
{
WFIFOHEAD(fd,2);// sends a ping packet to login server (will receive pong 0x2718)
WFIFOW(fd,0) = 0x2719;
WFIFOSET(fd,2);
}
-int char_parse_fromlogin_connection_state(int fd)
+static int char_parse_fromlogin_connection_state(int fd)
{
if (RFIFOB(fd,2)) {
//printf("connect login server error : %d\n", RFIFOB(fd,2));
ShowError("Can not connect to login-server.\n");
ShowError("The server communication passwords (default s1/p1) are probably invalid.\n");
ShowError("Also, please make sure your login db has the correct communication username/passwords and the gender of the account is S.\n");
- ShowError("The communication passwords are set in /conf/map-server.conf and /conf/char/char-server.conf\n");
+ ShowError("The communication passwords are set in /conf/map/map-server.conf and /conf/char/char-server.conf\n");
sockt->eof(fd);
return 1;
} else {
@@ -2208,7 +2399,7 @@ int char_parse_fromlogin_connection_state(int fd)
// 0 - rejected from server
//
-void char_auth_error(int fd, unsigned char flag)
+static void char_auth_error(int fd, unsigned char flag)
{
WFIFOHEAD(fd,3);
WFIFOW(fd,0) = 0x6c;
@@ -2216,7 +2407,7 @@ void char_auth_error(int fd, unsigned char flag)
WFIFOSET(fd,3);
}
-void char_parse_fromlogin_auth_state(int fd)
+static void char_parse_fromlogin_auth_state(int fd)
{
struct char_session_data* sd = NULL;
int account_id = RFIFOL(fd,2);
@@ -2258,7 +2449,7 @@ void char_parse_fromlogin_auth_state(int fd)
}
}
-void char_parse_fromlogin_account_data(int fd)
+static void char_parse_fromlogin_account_data(int fd)
{
struct char_session_data* sd = (struct char_session_data*)sockt->session[fd]->session_data;
int i;
@@ -2284,12 +2475,8 @@ void char_parse_fromlogin_account_data(int fd)
chr->auth_error(i, 0);
} else {
// send characters to player
- #if PACKETVER >= 20130000
chr->mmo_char_send_slots_info(i, sd);
chr->mmo_char_send_characters(i, sd);
- #else
- chr->mmo_char_send_characters(i, sd);
- #endif
#if PACKETVER >= 20060819
chr->mmo_char_send_ban_list(i, sd);
#endif
@@ -2301,14 +2488,14 @@ void char_parse_fromlogin_account_data(int fd)
RFIFOSKIP(fd,72);
}
-void char_parse_fromlogin_login_pong(int fd)
+static void char_parse_fromlogin_login_pong(int fd)
{
RFIFOSKIP(fd,2);
if (sockt->session[fd])
sockt->session[fd]->flag.ping = 0;
}
-void char_changesex(int account_id, int sex)
+static void char_changesex(int account_id, int sex)
{
unsigned char buf[7];
@@ -2329,7 +2516,7 @@ void char_changesex(int account_id, int sex)
* @param class The character's current job class.
* @param guild_id The character's guild ID.
*/
-void char_change_sex_sub(int sex, int acc, int char_id, int class, int guild_id)
+static void char_change_sex_sub(int sex, int acc, int char_id, int class, int guild_id)
{
// job modification
if (class == JOB_BARD || class == JOB_DANCER)
@@ -2358,7 +2545,7 @@ void char_change_sex_sub(int sex, int acc, int char_id, int class, int guild_id)
inter_guild->sex_changed(guild_id, acc, char_id, sex);
}
-int char_parse_fromlogin_changesex_reply(int fd)
+static int char_parse_fromlogin_changesex_reply(int fd)
{
int char_id = 0, class = 0, guild_id = 0;
int i;
@@ -2384,13 +2571,13 @@ int char_parse_fromlogin_changesex_reply(int fd)
stmt = SQL->StmtMalloc(inter->sql_handle);
if (SQL_ERROR == SQL->StmtPrepare(stmt, "SELECT `char_id`,`class`,`guild_id` FROM `%s` WHERE `account_id` = '%d'", char_db, acc)
|| SQL_ERROR == SQL->StmtExecute(stmt)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 0, SQLDT_INT, &char_id, sizeof char_id, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 1, SQLDT_INT, &class, sizeof class, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 2, SQLDT_INT, &guild_id, sizeof guild_id, NULL, NULL)
) {
SqlStmt_ShowDebug(stmt);
SQL->StmtFree(stmt);
}
- SQL->StmtBindColumn(stmt, 0, SQLDT_INT, &char_id, 0, NULL, NULL);
- SQL->StmtBindColumn(stmt, 1, SQLDT_INT, &class, 0, NULL, NULL);
- SQL->StmtBindColumn(stmt, 2, SQLDT_INT, &guild_id, 0, NULL, NULL);
for (i = 0; i < MAX_CHARS && SQL_SUCCESS == SQL->StmtNextRow(stmt); ++i) {
char_change_sex_sub(sex, acc, char_id, class, guild_id);
@@ -2405,25 +2592,14 @@ int char_parse_fromlogin_changesex_reply(int fd)
return 0;
}
-void char_parse_fromlogin_account_reg2(int fd)
+static void char_parse_fromlogin_account_reg2(int fd)
{
//Receive account_reg2 registry, forward to map servers.
mapif->sendall(RFIFOP(fd, 0), RFIFOW(fd,2));
RFIFOSKIP(fd, RFIFOW(fd,2));
}
-void mapif_ban(int id, unsigned int flag, int status)
-{
- // send to all map-servers to disconnect the player
- unsigned char buf[11];
- WBUFW(buf,0) = 0x2b14;
- WBUFL(buf,2) = id;
- WBUFB(buf,6) = flag; // 0: change of status, 1: ban
- WBUFL(buf,7) = status; // status or final date of a banishment
- mapif->sendall(buf, 11);
-}
-
-void char_parse_fromlogin_ban(int fd)
+static void char_parse_fromlogin_ban(int fd)
{
mapif->ban(RFIFOL(fd,2), RFIFOB(fd,6), RFIFOL(fd,7));
// disconnect player if online on char-server
@@ -2431,7 +2607,7 @@ void char_parse_fromlogin_ban(int fd)
RFIFOSKIP(fd,11);
}
-void char_parse_fromlogin_kick(int fd)
+static void char_parse_fromlogin_kick(int fd)
{
int aid = RFIFOL(fd,2);
struct online_char_data* character = (struct online_char_data*)idb_get(chr->online_char_db, aid);
@@ -2461,7 +2637,7 @@ void char_parse_fromlogin_kick(int fd)
idb_remove(auth_db, aid);// reject auth attempts from map-server
}
-void char_update_ip(int fd)
+static void char_update_ip(int fd)
{
WFIFOHEAD(fd,6);
WFIFOW(fd,0) = 0x2736;
@@ -2469,7 +2645,7 @@ void char_update_ip(int fd)
WFIFOSET(fd,6);
}
-void char_parse_fromlogin_update_ip(int fd)
+static void char_parse_fromlogin_update_ip(int fd)
{
unsigned char buf[2];
uint32 new_ip = 0;
@@ -2492,22 +2668,23 @@ void char_parse_fromlogin_update_ip(int fd)
RFIFOSKIP(fd,2);
}
-void char_parse_fromlogin_accinfo2_failed(int fd)
+static void char_parse_fromlogin_accinfo2_failed(int fd)
{
- mapif->parse_accinfo2(false, RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10), RFIFOL(fd,14),
+ inter->accinfo2(false, RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10), RFIFOL(fd,14),
NULL, NULL, NULL, NULL, NULL, NULL, NULL, -1, 0, 0);
RFIFOSKIP(fd,18);
}
-void char_parse_fromlogin_accinfo2_ok(int fd)
+static void char_parse_fromlogin_accinfo2_ok(int fd)
{
- mapif->parse_accinfo2(true, RFIFOL(fd,167), RFIFOL(fd,171), RFIFOL(fd,175), RFIFOL(fd,179),
+ inter->accinfo2(true, RFIFOL(fd,167), RFIFOL(fd,171), RFIFOL(fd,175), RFIFOL(fd,179),
RFIFOP(fd,2), RFIFOP(fd,26), RFIFOP(fd,59), RFIFOP(fd,99), RFIFOP(fd,119),
RFIFOP(fd,151), RFIFOP(fd,156), RFIFOL(fd,115), RFIFOL(fd,143), RFIFOL(fd,147));
RFIFOSKIP(fd,183);
}
-int char_parse_fromlogin(int fd) {
+static int char_parse_fromlogin(int fd)
+{
// only process data from the login-server
if( fd != chr->login_fd ) {
ShowDebug("chr->parse_fromlogin: Disconnecting invalid session #%d (is not the login-server)\n", fd);
@@ -2639,7 +2816,7 @@ int char_parse_fromlogin(int fd) {
return 0;
}
-int char_request_accreg2(int account_id, int char_id)
+static int char_request_accreg2(int account_id, int char_id)
{
if (chr->login_fd > 0) {
WFIFOHEAD(chr->login_fd,10);
@@ -2655,7 +2832,8 @@ int char_request_accreg2(int account_id, int char_id)
/**
* Handles global account reg saving that continues with chr->global_accreg_to_login_add and global_accreg_to_send
**/
-void char_global_accreg_to_login_start (int account_id, int char_id) {
+static void char_global_accreg_to_login_start(int account_id, int char_id)
+{
WFIFOHEAD(chr->login_fd, 60000 + 300);
WFIFOW(chr->login_fd,0) = 0x2728;
WFIFOW(chr->login_fd,2) = 14;
@@ -2667,14 +2845,16 @@ void char_global_accreg_to_login_start (int account_id, int char_id) {
/**
* Completes global account reg saving that starts chr->global_accreg_to_login_start and continues with chr->global_accreg_to_login_add
**/
-void char_global_accreg_to_login_send (void) {
+static void char_global_accreg_to_login_send(void)
+{
WFIFOSET(chr->login_fd, WFIFOW(chr->login_fd,2));
}
/**
* Handles global account reg saving that starts chr->global_accreg_to_login_start and ends with global_accreg_to_send
**/
-void char_global_accreg_to_login_add (const char *key, unsigned int index, intptr_t val, bool is_string) {
+static void char_global_accreg_to_login_add(const char *key, unsigned int index, intptr_t val, bool is_string)
+{
int nlen = WFIFOW(chr->login_fd, 2);
size_t len = strlen(key)+1;
@@ -2721,7 +2901,8 @@ void char_global_accreg_to_login_add (const char *key, unsigned int index, intpt
}
}
-void char_read_fame_list(void) {
+static void char_read_fame_list(void)
+{
int i;
char* data;
size_t len;
@@ -2779,7 +2960,8 @@ void char_read_fame_list(void) {
}
// Send map-servers the fame ranking lists
-int char_send_fame_list(int fd) {
+static int char_send_fame_list(int fd)
+{
int i, len = 8;
unsigned char buf[32000];
@@ -2814,7 +2996,8 @@ int char_send_fame_list(int fd) {
return 0;
}
-void char_update_fame_list(int type, int index, int fame) {
+static void char_update_fame_list(int type, int index, int fame)
+{
unsigned char buf[8];
WBUFW(buf,0) = 0x2b22;
WBUFB(buf,2) = type;
@@ -2825,7 +3008,7 @@ void char_update_fame_list(int type, int index, int fame) {
//Loads a character's name and stores it in the buffer given (must be NAME_LENGTH in size) and not NULL
//Returns 1 on found, 0 on not found (buffer is filled with Unknown char name)
-int char_loadName(int char_id, char* name)
+static int char_loadName(int char_id, char *name)
{
char* data;
size_t len;
@@ -2845,77 +3028,13 @@ int char_loadName(int char_id, char* name)
return 0;
}
-/// Initializes a server structure.
-void mapif_server_init(int id)
-{
- //memset(&chr->server[id], 0, sizeof(server[id]));
- chr->server[id].fd = -1;
-}
-
-/// Destroys a server structure.
-void mapif_server_destroy(int id)
-{
- if( chr->server[id].fd == -1 )
- {
- sockt->close(chr->server[id].fd);
- chr->server[id].fd = -1;
- }
-}
-
-
-/// Resets all the data related to a server.
-void mapif_server_reset(int id)
-{
- int i,j;
- unsigned char buf[16384];
- int fd = chr->server[id].fd;
- //Notify other map servers that this one is gone. [Skotlex]
- WBUFW(buf,0) = 0x2b20;
- WBUFL(buf,4) = htonl(chr->server[id].ip);
- WBUFW(buf,8) = htons(chr->server[id].port);
- j = 0;
- for (i = 0; i < VECTOR_LENGTH(chr->server[id].maps); i++) {
- uint16 m = VECTOR_INDEX(chr->server[id].maps, i);
- if (m != 0)
- WBUFW(buf,10+(j++)*4) = m;
- }
- if (j > 0) {
- WBUFW(buf,2) = j * 4 + 10;
- mapif->sendallwos(fd, buf, WBUFW(buf,2));
- }
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `index`='%d'", ragsrvinfo_db, chr->server[id].fd) )
- Sql_ShowDebug(inter->sql_handle);
- chr->online_char_db->foreach(chr->online_char_db,chr->db_setoffline,id); //Tag relevant chars as 'in disconnected' server.
- mapif->server_destroy(id);
- mapif->server_init(id);
-}
-
-/// Called when the connection to a Map Server is disconnected.
-void mapif_on_disconnect(int id)
-{
- ShowStatus("Map-server #%d has disconnected.\n", id);
- mapif->server_reset(id);
-}
-
-void mapif_on_parse_accinfo(int account_id, int u_fd, int u_aid, int u_group, int map_fd) {
- Assert_retv(chr->login_fd > 0);
- WFIFOHEAD(chr->login_fd,22);
- WFIFOW(chr->login_fd,0) = 0x2740;
- WFIFOL(chr->login_fd,2) = account_id;
- WFIFOL(chr->login_fd,6) = u_fd;
- WFIFOL(chr->login_fd,10) = u_aid;
- WFIFOL(chr->login_fd,14) = u_group;
- WFIFOL(chr->login_fd,18) = map_fd;
- WFIFOSET(chr->login_fd,22);
-}
-
-void char_parse_frommap_datasync(int fd)
+static void char_parse_frommap_datasync(int fd)
{
sockt->datasync(fd, false);
RFIFOSKIP(fd,RFIFOW(fd,2));
}
-void char_parse_frommap_skillid2idx(int fd)
+static void char_parse_frommap_skillid2idx(int fd)
{
int i;
int j = RFIFOW(fd, 2) - 4;
@@ -2924,8 +3043,8 @@ void char_parse_frommap_skillid2idx(int fd)
if( j )
j /= 4;
for(i = 0; i < j; i++) {
- if( RFIFOW(fd, 4 + (i*4)) > MAX_SKILL_ID ) {
- ShowWarning("Error skillid2dx[%d] = %d failed, %d is higher than MAX_SKILL_ID (%d)\n",RFIFOW(fd, 4 + (i*4)), RFIFOW(fd, 6 + (i*4)),RFIFOW(fd, 4 + (i*4)),MAX_SKILL_ID);
+ if (RFIFOW(fd, 4 + (i*4)) >= MAX_SKILL_ID) {
+ ShowWarning("Error skillid2dx[%d] = %d failed, %d is higher than MAX_SKILL_ID (%d)\n", RFIFOW(fd, 4 + (i*4)), RFIFOW(fd, 6 + (i*4)), RFIFOW(fd, 4 + (i*4)), MAX_SKILL_ID);
continue;
}
skillid2idx[RFIFOW(fd, 4 + (i*4))] = RFIFOW(fd, 6 + (i*4));
@@ -2933,7 +3052,7 @@ void char_parse_frommap_skillid2idx(int fd)
RFIFOSKIP(fd, RFIFOW(fd, 2));
}
-void char_map_received_ok(int fd)
+static void char_map_received_ok(int fd)
{
WFIFOHEAD(fd, 3 + NAME_LENGTH);
WFIFOW(fd,0) = 0x2afb;
@@ -2942,7 +3061,7 @@ void char_map_received_ok(int fd)
WFIFOSET(fd,3+NAME_LENGTH);
}
-void char_send_maps(int fd, int id, int j)
+static void char_send_maps(int fd, int id, int j)
{
int k,i;
@@ -2979,7 +3098,7 @@ void char_send_maps(int fd, int id, int j)
}
}
-void char_parse_frommap_map_names(int fd, int id)
+static void char_parse_frommap_map_names(int fd, int id)
{
int i;
@@ -3000,7 +3119,7 @@ void char_parse_frommap_map_names(int fd, int id)
RFIFOSKIP(fd,RFIFOW(fd,2));
}
-void char_send_scdata(int fd, int aid, int cid)
+static void char_send_scdata(int fd, int aid, int cid)
{
#ifdef ENABLE_SC_SAVING
if( SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `type`, `tick`, `val1`, `val2`, `val3`, `val4` "
@@ -3054,7 +3173,7 @@ void char_send_scdata(int fd, int aid, int cid)
#endif
}
-void char_parse_frommap_request_scdata(int fd)
+static void char_parse_frommap_request_scdata(int fd)
{
#ifdef ENABLE_SC_SAVING
int aid = RFIFOL(fd,2);
@@ -3064,7 +3183,7 @@ void char_parse_frommap_request_scdata(int fd)
RFIFOSKIP(fd, 10);
}
-void char_parse_frommap_set_users_count(int fd, int id)
+static void char_parse_frommap_set_users_count(int fd, int id)
{
if (RFIFOW(fd,2) != chr->server[id].users) {
chr->server[id].users = RFIFOW(fd,2);
@@ -3073,7 +3192,7 @@ void char_parse_frommap_set_users_count(int fd, int id)
RFIFOSKIP(fd, 4);
}
-void char_parse_frommap_set_users(int fd, int id)
+static void char_parse_frommap_set_users(int fd, int id)
{
//TODO: When data mismatches memory, update guild/party online/offline states.
int i;
@@ -3096,7 +3215,7 @@ void char_parse_frommap_set_users(int fd, int id)
RFIFOSKIP(fd,RFIFOW(fd,2));
}
-void char_save_character_ack(int fd, int aid, int cid)
+static void char_save_character_ack(int fd, int aid, int cid)
{
WFIFOHEAD(fd,10);
WFIFOW(fd,0) = 0x2b21; //Save ack only needed on final save.
@@ -3105,7 +3224,7 @@ void char_save_character_ack(int fd, int aid, int cid)
WFIFOSET(fd,10);
}
-void char_parse_frommap_save_character(int fd, int id)
+static void char_parse_frommap_save_character(int fd, int id)
{
int aid = RFIFOL(fd,4), cid = RFIFOL(fd,8), size = RFIFOW(fd,2);
struct online_char_data* character;
@@ -3139,7 +3258,7 @@ void char_parse_frommap_save_character(int fd, int id)
// 0 - not ok
// 1 - ok
-void char_select_ack(int fd, int account_id, uint8 flag)
+static void char_select_ack(int fd, int account_id, uint8 flag)
{
WFIFOHEAD(fd,7);
WFIFOW(fd,0) = 0x2b03;
@@ -3148,7 +3267,7 @@ void char_select_ack(int fd, int account_id, uint8 flag)
WFIFOSET(fd,7);
}
-void char_parse_frommap_char_select_req(int fd)
+static void char_parse_frommap_char_select_req(int fd)
{
int account_id = RFIFOL(fd,2);
uint32 login_id1 = RFIFOL(fd,6);
@@ -3185,7 +3304,7 @@ void char_parse_frommap_char_select_req(int fd)
}
}
-void char_change_map_server_ack(int fd, const uint8 *data, bool ok)
+static void char_change_map_server_ack(int fd, const uint8 *data, bool ok)
{
WFIFOHEAD(fd,30);
WFIFOW(fd,0) = 0x2b06;
@@ -3195,7 +3314,7 @@ void char_change_map_server_ack(int fd, const uint8 *data, bool ok)
WFIFOSET(fd,30);
}
-void char_parse_frommap_change_map_server(int fd)
+static void char_parse_frommap_change_map_server(int fd)
{
int map_id, map_fd = -1;
struct mmo_charstatus* char_data;
@@ -3248,7 +3367,7 @@ void char_parse_frommap_change_map_server(int fd)
RFIFOSKIP(fd,39);
}
-void char_parse_frommap_remove_friend(int fd)
+static void char_parse_frommap_remove_friend(int fd)
{
int char_id = RFIFOL(fd,2);
int friend_id = RFIFOL(fd,6);
@@ -3259,22 +3378,27 @@ void char_parse_frommap_remove_friend(int fd)
RFIFOSKIP(fd,10);
}
-void char_char_name_ack(int fd, int char_id)
+static void char_char_name_ack(int fd, int char_id)
{
WFIFOHEAD(fd,30);
WFIFOW(fd,0) = 0x2b09;
WFIFOL(fd,2) = char_id;
+#if PACKETVER_MAIN_NUM >= 20180307 || PACKETVER_RE_NUM >= 20180221 || PACKETVER_ZERO_NUM >= 20180328
+ if (chr->loadName(char_id, WFIFOP(fd,6)) == 0)
+ WFIFOL(fd, 6) = 0;
+#else
chr->loadName(char_id, WFIFOP(fd,6));
+#endif
WFIFOSET(fd,30);
}
-void char_parse_frommap_char_name_request(int fd)
+static void char_parse_frommap_char_name_request(int fd)
{
chr->char_name_ack(fd, RFIFOL(fd,2));
RFIFOSKIP(fd,6);
}
-void char_parse_frommap_change_email(int fd)
+static void char_parse_frommap_change_email(int fd)
{
if (chr->login_fd > 0) { // don't send request if no login-server
WFIFOHEAD(chr->login_fd,86);
@@ -3285,17 +3409,7 @@ void char_parse_frommap_change_email(int fd)
RFIFOSKIP(fd, 86);
}
-void mapif_char_ban(int char_id, time_t timestamp)
-{
- unsigned char buf[11];
- WBUFW(buf,0) = 0x2b14;
- WBUFL(buf,2) = char_id;
- WBUFB(buf,6) = 2;
- WBUFL(buf,7) = (unsigned int)timestamp;
- mapif->sendall(buf, 11);
-}
-
-void char_ban(int account_id, int char_id, time_t *unban_time, short year, short month, short day, short hour, short minute, short second)
+static void char_ban(int account_id, int char_id, time_t *unban_time, short year, short month, short day, short hour, short minute, short second)
{
time_t timestamp;
struct tm *tmtime;
@@ -3320,8 +3434,8 @@ void char_ban(int account_id, int char_id, time_t *unban_time, short year, short
if( SQL_SUCCESS != SQL->StmtPrepare(stmt,
"UPDATE `%s` SET `unban_time` = ? WHERE `char_id` = ? LIMIT 1",
char_db)
- || SQL_SUCCESS != SQL->StmtBindParam(stmt, 0, SQLDT_LONG, &timestamp, sizeof(timestamp))
- || SQL_SUCCESS != SQL->StmtBindParam(stmt, 1, SQLDT_INT, &char_id, sizeof(char_id))
+ || SQL_SUCCESS != SQL->StmtBindParam(stmt, 0, SQLDT_TIME, &timestamp, sizeof timestamp)
+ || SQL_SUCCESS != SQL->StmtBindParam(stmt, 1, SQLDT_INT, &char_id, sizeof char_id)
|| SQL_SUCCESS != SQL->StmtExecute(stmt)
) {
SqlStmt_ShowDebug(stmt);
@@ -3330,14 +3444,14 @@ void char_ban(int account_id, int char_id, time_t *unban_time, short year, short
SQL->StmtFree(stmt);
// condition applies; send to all map-servers to disconnect the player
- if( timestamp > time(NULL) ) {
+ if (timestamp > time(NULL)) {
mapif->char_ban(char_id, timestamp);
// disconnect player if online on char-server
chr->disconnect_player(account_id);
}
}
-void char_unban(int char_id, int *result)
+static void char_unban(int char_id, int *result)
{
/* handled by char server, so no redirection */
if( SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `unban_time` = '0' WHERE `char_id` = '%d' LIMIT 1", char_db, char_id) ) {
@@ -3347,7 +3461,7 @@ void char_unban(int char_id, int *result)
}
}
-void char_ask_name_ack(int fd, int acc, const char* name, int type, int result)
+static void char_ask_name_ack(int fd, int acc, const char *name, int type, int result)
{
nullpo_retv(name);
WFIFOHEAD(fd,34);
@@ -3369,7 +3483,7 @@ void char_ask_name_ack(int fd, int acc, const char* name, int type, int result)
* @retval 0 in case of success.
* @retval 1 in case of failure.
*/
-int char_changecharsex(int char_id, int sex)
+static int char_changecharsex(int char_id, int sex)
{
int class = 0, guild_id = 0, account_id = 0;
char *data;
@@ -3402,7 +3516,7 @@ int char_changecharsex(int char_id, int sex)
return 0;
}
-void char_parse_frommap_change_account(int fd)
+static void char_parse_frommap_change_account(int fd)
{
int result = 0; // 0-login-server request done, 1-player not found, 2-gm level too low, 3-login-server offline
char esc_name[NAME_LENGTH*2+1];
@@ -3488,7 +3602,7 @@ void char_parse_frommap_change_account(int fd)
}
}
-void char_parse_frommap_fame_list(int fd)
+static void char_parse_frommap_fame_list(int fd)
{
int cid = RFIFOL(fd, 2);
int fame = RFIFOL(fd, 6);
@@ -3539,13 +3653,13 @@ void char_parse_frommap_fame_list(int fd)
RFIFOSKIP(fd,11);
}
-void char_parse_frommap_divorce_char(int fd)
+static void char_parse_frommap_divorce_char(int fd)
{
chr->divorce_char_sql(RFIFOL(fd,2), RFIFOL(fd,6));
RFIFOSKIP(fd,10);
}
-void char_parse_frommap_ragsrvinfo(int fd)
+static void char_parse_frommap_ragsrvinfo(int fd)
{
char esc_server_name[sizeof(chr->server_name)*2+1];
@@ -3559,32 +3673,32 @@ void char_parse_frommap_ragsrvinfo(int fd)
RFIFOSKIP(fd,14);
}
-void char_parse_frommap_set_char_offline(int fd)
+static void char_parse_frommap_set_char_offline(int fd)
{
chr->set_char_offline(RFIFOL(fd,2),RFIFOL(fd,6));
RFIFOSKIP(fd,10);
}
-void char_parse_frommap_set_all_offline(int fd, int id)
+static void char_parse_frommap_set_all_offline(int fd, int id)
{
chr->set_all_offline(id);
RFIFOSKIP(fd,2);
}
-void char_parse_frommap_set_char_online(int fd, int id)
+static void char_parse_frommap_set_char_online(int fd, int id)
{
chr->set_char_online(id, RFIFOL(fd,2),RFIFOL(fd,6));
RFIFOSKIP(fd,10);
}
-void char_parse_frommap_build_fame_list(int fd)
+static void char_parse_frommap_build_fame_list(int fd)
{
chr->read_fame_list();
chr->send_fame_list(-1);
RFIFOSKIP(fd,2);
}
-void char_parse_frommap_save_status_change_data(int fd)
+static void char_parse_frommap_save_status_change_data(int fd)
{
#ifdef ENABLE_SC_SAVING
int aid = RFIFOL(fd, 4);
@@ -3619,20 +3733,20 @@ void char_parse_frommap_save_status_change_data(int fd)
RFIFOSKIP(fd, RFIFOW(fd, 2));
}
-void char_send_pong(int fd)
+static void char_send_pong(int fd)
{
WFIFOHEAD(fd,2);
WFIFOW(fd,0) = 0x2b24;
WFIFOSET(fd,2);
}
-void char_parse_frommap_ping(int fd)
+static void char_parse_frommap_ping(int fd)
{
chr->send_pong(fd);
RFIFOSKIP(fd,2);
}
-void char_map_auth_ok(int fd, int account_id, struct char_auth_node* node, struct mmo_charstatus* cd)
+static void char_map_auth_ok(int fd, int account_id, struct char_auth_node *node, struct mmo_charstatus *cd)
{
nullpo_retv(cd);
WFIFOHEAD(fd,25 + sizeof(struct mmo_charstatus));
@@ -3659,7 +3773,7 @@ void char_map_auth_ok(int fd, int account_id, struct char_auth_node* node, struc
WFIFOSET(fd, WFIFOW(fd,2));
}
-void char_map_auth_failed(int fd, int account_id, int char_id, int login_id1, char sex, uint32 ip)
+static void char_map_auth_failed(int fd, int account_id, int char_id, int login_id1, char sex, uint32 ip)
{
WFIFOHEAD(fd,19);
WFIFOW(fd,0) = 0x2b27;
@@ -3671,7 +3785,7 @@ void char_map_auth_failed(int fd, int account_id, int char_id, int login_id1, ch
WFIFOSET(fd,19);
}
-void char_parse_frommap_auth_request(int fd, int id)
+static void char_parse_frommap_auth_request(int fd, int id)
{
struct mmo_charstatus char_dat;
struct char_auth_node* node;
@@ -3724,49 +3838,14 @@ void char_parse_frommap_auth_request(int fd, int id)
}
}
-void char_parse_frommap_update_ip(int fd, int id)
+static void char_parse_frommap_update_ip(int fd, int id)
{
chr->server[id].ip = ntohl(RFIFOL(fd, 2));
ShowInfo("Updated IP address of map-server #%d to %u.%u.%u.%u.\n", id, CONVIP(chr->server[id].ip));
RFIFOSKIP(fd,6);
}
-void char_parse_frommap_request_stats_report(int fd)
-{
- int sfd;/* stat server fd */
- struct hSockOpt opt;
- RFIFOSKIP(fd, 2);/* we skip first 2 bytes which are the 0x3008, so we end up with a buffer equal to the one we send */
-
- opt.silent = 1;
- opt.setTimeo = 1;
-
- if ((sfd = sockt->make_connection(sockt->host2ip("stats.herc.ws"),(uint16)25427,&opt) ) == -1) {
- RFIFOSKIP(fd, RFIFOW(fd,2) );/* skip this packet */
- RFIFOFLUSH(fd);
- return;/* connection not possible, we drop the report */
- }
-
- sockt->session[sfd]->flag.server = 1;/* to ensure we won't drop our own packet */
- sockt->realloc_fifo(sfd, FIFOSIZE_SERVERLINK, FIFOSIZE_SERVERLINK);
-
- WFIFOHEAD(sfd, RFIFOW(fd,2) );
-
- memcpy(WFIFOP(sfd,0), RFIFOP(fd, 0), RFIFOW(fd,2));
-
- WFIFOSET(sfd, RFIFOW(fd,2) );
-
- do {
- sockt->flush(sfd);
- HSleep(1);
- } while( !sockt->session[sfd]->flag.eof && sockt->session[sfd]->wdata_size );
-
- sockt->close(sfd);
-
- RFIFOSKIP(fd, RFIFOW(fd,2) );/* skip this packet */
- RFIFOFLUSH(fd);
-}
-
-void char_parse_frommap_scdata_update(int fd)
+static void char_parse_frommap_scdata_update(int fd)
{
int account_id = RFIFOL(fd, 2);
int char_id = RFIFOL(fd, 6);
@@ -3786,7 +3865,7 @@ void char_parse_frommap_scdata_update(int fd)
RFIFOSKIP(fd, 28);
}
-void char_parse_frommap_scdata_delete(int fd)
+static void char_parse_frommap_scdata_delete(int fd)
{
int account_id = RFIFOL(fd, 2);
int char_id = RFIFOL(fd, 6);
@@ -3800,7 +3879,7 @@ void char_parse_frommap_scdata_delete(int fd)
RFIFOSKIP(fd, 12);
}
-int char_parse_frommap(int fd)
+static int char_parse_frommap(int fd)
{
int id;
@@ -3996,14 +4075,6 @@ int char_parse_frommap(int fd)
chr->parse_frommap_update_ip(fd, id);
break;
- case 0x3008:
- if( RFIFOREST(fd) < RFIFOW(fd,4) )
- return 0;/* packet wasn't fully received yet (still fragmented) */
- else {
- chr->parse_frommap_request_stats_report(fd);
- }
- break;
-
/* individual sc data insertion/update */
case 0x2740:
if( RFIFOREST(fd) < 28 )
@@ -4040,14 +4111,14 @@ int char_parse_frommap(int fd)
return 0;
}
-void do_init_mapif(void)
+static void do_init_mapif(void)
{
int i;
for( i = 0; i < ARRAYLENGTH(chr->server); ++i )
mapif->server_init(i);
}
-void do_final_mapif(void)
+static void do_final_mapif(void)
{
int i;
for( i = 0; i < ARRAYLENGTH(chr->server); ++i )
@@ -4056,7 +4127,7 @@ void do_final_mapif(void)
// Searches for the mapserver that has a given map (and optionally ip/port, if not -1).
// If found, returns the server's index in the 'server' array (otherwise returns -1).
-int char_search_mapserver(unsigned short map, uint32 ip, uint16 port)
+static int char_search_mapserver(unsigned short map, uint32 ip, uint16 port)
{
int i, j;
@@ -4088,7 +4159,7 @@ static int char_mapif_init(int fd)
* @retval 0 if it is a WAN IP.
* @return the appropriate LAN server address to send, if it is a LAN IP.
*/
-uint32 char_lan_subnet_check(uint32 ip)
+static uint32 char_lan_subnet_check(uint32 ip)
{
struct s_subnet lan = {0};
if (sockt->lan_subnet_check(ip, &lan)) {
@@ -4108,7 +4179,7 @@ uint32 char_lan_subnet_check(uint32 ip)
/// 4 (0x71a): To delete a character you must withdraw from the guild.
/// 5 (0x71b): To delete a character you must withdraw from the party.
/// Any (0x718): An unknown error has occurred.
-void char_delete2_ack(int fd, int char_id, uint32 result, time_t delete_date)
+static void char_delete2_ack(int fd, int char_id, uint32 result, time_t delete_date)
{// HC: <0828>.W <char id>.L <Msg:0-5>.L <deleteDate>.L
WFIFOHEAD(fd,14);
WFIFOW(fd,0) = 0x828;
@@ -4123,7 +4194,7 @@ void char_delete2_ack(int fd, int char_id, uint32 result, time_t delete_date)
WFIFOSET(fd,14);
}
-void char_delete2_accept_actual_ack(int fd, int char_id, uint32 result)
+static void char_delete2_accept_actual_ack(int fd, int char_id, uint32 result)
{
WFIFOHEAD(fd,10);
WFIFOW(fd,0) = 0x82a;
@@ -4140,12 +4211,12 @@ void char_delete2_accept_actual_ack(int fd, int char_id, uint32 result)
/// 4 (0x71d): Deleting not yet possible time.
/// 5 (0x71e): Date of birth do not match.
/// Any (0x718): An unknown error has occurred.
-void char_delete2_accept_ack(int fd, int char_id, uint32 result)
+static void char_delete2_accept_ack(int fd, int char_id, uint32 result)
{// HC: <082a>.W <char id>.L <Msg:0-5>.L
-#if PACKETVER >= 20130000 /* not sure the exact date -- must refresh or client gets stuck */
+#if PACKETVER_MAIN_NUM >= 20130522 || PACKETVER_RE_NUM >= 20130327 || defined(PACKETVER_ZERO)
if( result == 1 ) {
struct char_session_data* sd = (struct char_session_data*)sockt->session[fd]->session_data;
- chr->mmo_char_send099d(fd, sd);
+ chr->send_HC_ACK_CHARINFO_PER_PAGE(fd, sd);
}
#endif
chr->delete2_accept_actual_ack(fd, char_id, result);
@@ -4155,7 +4226,7 @@ void char_delete2_accept_ack(int fd, int char_id, uint32 result)
/// 1 (0x718): none/success, (if char id not in deletion process): An unknown error has occurred.
/// 2 (0x719): A database error occurred.
/// Any (0x718): An unknown error has occurred.
-void char_delete2_cancel_ack(int fd, int char_id, uint32 result)
+static void char_delete2_cancel_ack(int fd, int char_id, uint32 result)
{// HC: <082c>.W <char id>.L <Msg:1-2>.L
WFIFOHEAD(fd,10);
WFIFOW(fd,0) = 0x82c;
@@ -4164,7 +4235,7 @@ void char_delete2_cancel_ack(int fd, int char_id, uint32 result)
WFIFOSET(fd,10);
}
-static void char_delete2_req(int fd, struct char_session_data* sd)
+static void char_delete2_req(int fd, struct char_session_data *sd)
{// CH: <0827>.W <char id>.L
int char_id, i;
char* data;
@@ -4235,7 +4306,7 @@ static void char_delete2_req(int fd, struct char_session_data* sd)
chr->delete2_ack(fd, char_id, 1, delete_date); // 1: success
}
-static void char_delete2_accept(int fd, struct char_session_data* sd)
+static void char_delete2_accept(int fd, struct char_session_data *sd)
{// CH: <0829>.W <char id>.L <birth date:YYMMDD>.6B
char birthdate[8+1];
int char_id, i;
@@ -4307,7 +4378,7 @@ static void char_delete2_accept(int fd, struct char_session_data* sd)
chr->delete2_accept_ack(fd, char_id, 1); // 1: success
}
-static void char_delete2_cancel(int fd, struct char_session_data* sd)
+static void char_delete2_cancel(int fd, struct char_session_data *sd)
{// CH: <082b>.W <char id>.L
int char_id, i;
@@ -4334,14 +4405,14 @@ static void char_delete2_cancel(int fd, struct char_session_data* sd)
chr->delete2_cancel_ack(fd, char_id, 1); // 1: success
}
-void char_send_account_id(int fd, int account_id)
+static void char_send_account_id(int fd, int account_id)
{
- WFIFOHEAD(fd,4);
- WFIFOL(fd,0) = account_id;
- WFIFOSET(fd,4);
+ WFIFOHEAD(fd, 4);
+ WFIFOL(fd, 0) = account_id;
+ WFIFOSET2(fd, 4);
}
-void char_parse_char_connect(int fd, struct char_session_data* sd, uint32 ipl)
+static void char_parse_char_connect(int fd, struct char_session_data *sd, uint32 ipl)
{
int account_id = RFIFOL(fd,2);
uint32 login_id1 = RFIFOL(fd,6);
@@ -4373,6 +4444,7 @@ void char_parse_char_connect(int fd, struct char_session_data* sd, uint32 ipl)
if( core->runflag != CHARSERVER_ST_RUNNING ) {
chr->auth_error(fd, 0);
+ sockt->eof(fd);
return;
}
@@ -4387,11 +4459,13 @@ void char_parse_char_connect(int fd, struct char_session_data* sd, uint32 ipl)
/* restrictions apply */
if( chr->server_type == CST_MAINTENANCE && node->group_id < char_maintenance_min_group_id ) {
chr->auth_error(fd, 0);
+ sockt->eof(fd);
return;
}
/* the client will already deny this request, this check is to avoid someone bypassing. */
if( chr->server_type == CST_PAYING && (time_t)node->expiration_time < time(NULL) ) {
chr->auth_error(fd, 0);
+ sockt->eof(fd);
return;
}
idb_remove(auth_db, account_id);
@@ -4403,23 +4477,38 @@ void char_parse_char_connect(int fd, struct char_session_data* sd, uint32 ipl)
loginif->auth(fd, sd, ipl);
} else { // if no login-server, we must refuse connection
chr->auth_error(fd, 0);
+ sockt->eof(fd);
}
}
}
-void char_send_map_info(int fd, int i, uint32 subnet_map_ip, struct mmo_charstatus *cd)
+static void char_send_map_info(int fd, int i, uint32 subnet_map_ip, struct mmo_charstatus *cd, char *dnsHost)
{
+#if PACKETVER < 20170329
+ const int cmd = 0x71;
+ const int len = 28;
+#else
+ const int cmd = 0xac5;
+ const int len = 156;
+#endif
nullpo_retv(cd);
- WFIFOHEAD(fd,28);
- WFIFOW(fd,0) = 0x71;
- WFIFOL(fd,2) = cd->char_id;
- mapindex->getmapname_ext(mapindex_id2name(cd->last_point.map), WFIFOP(fd,6));
- WFIFOL(fd,22) = htonl((subnet_map_ip) ? subnet_map_ip : chr->server[i].ip);
- WFIFOW(fd,26) = sockt->ntows(htons(chr->server[i].port)); // [!] LE byte order here [!]
- WFIFOSET(fd,28);
+ WFIFOHEAD(fd, len);
+ WFIFOW(fd, 0) = cmd;
+ WFIFOL(fd, 2) = cd->char_id;
+ mapindex->getmapname_ext(mapindex_id2name(cd->last_point.map), WFIFOP(fd, 6));
+ WFIFOL(fd, 22) = htonl((subnet_map_ip) ? subnet_map_ip : chr->server[i].ip);
+ WFIFOW(fd, 26) = sockt->ntows(htons(chr->server[i].port)); // [!] LE byte order here [!]
+#if PACKETVER >= 20170329
+ if (dnsHost != NULL) {
+ safestrncpy(WFIFOP(fd, 28), dnsHost, 128);
+ } else {
+ memset(WFIFOP(fd, 28), 0, 128);
+ }
+#endif
+ WFIFOSET(fd, len);
}
-void char_send_wait_char_server(int fd)
+static void char_send_wait_char_server(int fd)
{
WFIFOHEAD(fd, 24);
WFIFOW(fd, 0) = 0x840;
@@ -4428,7 +4517,7 @@ void char_send_wait_char_server(int fd)
WFIFOSET(fd, 24);
}
-int char_search_default_maps_mapserver(struct mmo_charstatus *cd)
+static int char_search_default_maps_mapserver(struct mmo_charstatus *cd)
{
int i;
int j;
@@ -4460,8 +4549,8 @@ int char_search_default_maps_mapserver(struct mmo_charstatus *cd)
return i;
}
-void char_parse_char_select(int fd, struct char_session_data* sd, uint32 ipl) __attribute__((nonnull (2)));
-void char_parse_char_select(int fd, struct char_session_data* sd, uint32 ipl)
+static void char_parse_char_select(int fd, struct char_session_data *sd, uint32 ipl) __attribute__((nonnull (2)));
+static void char_parse_char_select(int fd, struct char_session_data *sd, uint32 ipl)
{
struct mmo_charstatus char_dat;
struct mmo_charstatus *cd;
@@ -4535,8 +4624,19 @@ void char_parse_char_select(int fd, struct char_session_data* sd, uint32 ipl)
// FIXME: Why are we re-escaping the name if it was already escaped in rename/make_new_char? [Panikon]
SQL->EscapeStringLen(inter->sql_handle, esc_name, char_dat.name, strnlen(char_dat.name, NAME_LENGTH));
if (SQL_ERROR == SQL->Query(inter->sql_handle,
- "INSERT INTO `%s`(`time`, `account_id`, `char_id`, `char_num`, `name`) VALUES (NOW(), '%d', '%d', '%d', '%s')",
- charlog_db, sd->account_id, cd->char_id, slot, esc_name))
+ "INSERT INTO `%s`("
+ " `time`, `char_msg`, `account_id`, `char_id`, `char_num`, `class`, `name`,"
+ " `str`, `agi`, `vit`, `int`, `dex`, `luk`,"
+ " `hair`, `hair_color`"
+ ") VALUES ("
+ " NOW(), 'char select', '%d', '%d', '%d', '%d', '%s',"
+ " '%d', '%d', '%d', '%d', '%d', '%d',"
+ " '%d', '%d')",
+ charlog_db,
+ sd->account_id, cd->char_id, slot, char_dat.class, esc_name,
+ char_dat.str, char_dat.agi, char_dat.vit, char_dat.int_, char_dat.dex, char_dat.luk,
+ char_dat.hair, char_dat.hair_color
+ ))
Sql_ShowDebug(inter->sql_handle);
}
ShowInfo("Selected char: (Account %d: %d - %s)\n", sd->account_id, slot, char_dat.name);
@@ -4576,7 +4676,7 @@ void char_parse_char_select(int fd, struct char_session_data* sd, uint32 ipl)
subnet_map_ip = chr->lan_subnet_check(ipl);
//Send player to map
- chr->send_map_info(fd, i, subnet_map_ip, cd);
+ chr->send_map_info(fd, i, subnet_map_ip, cd, NULL);
// create temporary auth entry
CREATE(node, struct char_auth_node, 1);
@@ -4591,14 +4691,15 @@ void char_parse_char_select(int fd, struct char_session_data* sd, uint32 ipl)
idb_put(auth_db, sd->account_id, node);
}
-void char_creation_failed(int fd, int result)
+static void char_creation_failed(int fd, int result)
{
WFIFOHEAD(fd,3);
WFIFOW(fd,0) = 0x6e;
/* Others I found [Ind] */
/* 0x02 = Symbols in Character Names are forbidden */
/* 0x03 = You are not eligible to open the Character Slot. */
- /* 0x0B = This service is only available for premium users. */
+ /* 0x0B = This service is only available for premium users. */
+ /* 0x0C = Character name is invalid. */
switch (result) {
case -1: WFIFOB(fd,2) = 0x00; break; // 'Charname already exists'
case -2: WFIFOB(fd,2) = 0xFF; break; // 'Char creation denied'
@@ -4614,7 +4715,7 @@ void char_creation_failed(int fd, int result)
WFIFOSET(fd,3);
}
-void char_creation_ok(int fd, struct mmo_charstatus *char_dat)
+static void char_creation_ok(int fd, struct mmo_charstatus *char_dat)
{
int len;
@@ -4625,21 +4726,35 @@ void char_creation_ok(int fd, struct mmo_charstatus *char_dat)
WFIFOSET(fd,len);
}
-void char_parse_char_create_new_char(int fd, struct char_session_data* sd) __attribute__((nonnull (2)));
-void char_parse_char_create_new_char(int fd, struct char_session_data* sd)
+static void char_parse_char_create_new_char(int fd, struct char_session_data *sd) __attribute__((nonnull (2)));
+static void char_parse_char_create_new_char(int fd, struct char_session_data *sd)
{
int result;
if (!enable_char_creation) {
//turn character creation on/off [Kevin]
result = -2;
} else {
- #if PACKETVER >= 20151001
- result = chr->make_new_char_sql(sd, RFIFOP(fd,2), 1, 1, 1, 1, 1, 1, RFIFOB(fd,26), RFIFOW(fd,27), RFIFOW(fd,29), RFIFOW(fd, 31));
- #elif PACKETVER >= 20120307
- result = chr->make_new_char_sql(sd, RFIFOP(fd,2), 1, 1, 1, 1, 1, 1, RFIFOB(fd,26), RFIFOW(fd,27), RFIFOW(fd,29), JOB_NOVICE);
- #else
- result = chr->make_new_char_sql(sd, RFIFOP(fd,2), RFIFOB(fd,26), RFIFOB(fd,27), RFIFOB(fd,28), RFIFOB(fd,29), RFIFOB(fd,30), RFIFOB(fd,31), RFIFOB(fd,32), RFIFOW(fd,33), RFIFOW(fd,35), JOB_NOVICE);
- #endif
+#if PACKETVER >= 20151001
+ uint8 sex = RFIFOB(fd, 35);
+
+ switch (sex) {
+ case SEX_FEMALE:
+ sex = 'F';
+ break;
+ case SEX_MALE:
+ sex = 'M';
+ break;
+ default:
+ chr->creation_failed(fd, -2); // Char Creation Denied
+ RFIFOSKIP(fd, 36);
+ return;
+ }
+ result = chr->make_new_char_sql(sd, RFIFOP(fd, 2), 1, 1, 1, 1, 1, 1, RFIFOB(fd, 26), RFIFOW(fd, 27), RFIFOW(fd, 29), RFIFOL(fd, 31), sex);
+#elif PACKETVER >= 20120307
+ result = chr->make_new_char_sql(sd, RFIFOP(fd, 2), 1, 1, 1, 1, 1, 1, RFIFOB(fd, 26), RFIFOW(fd, 27), RFIFOW(fd, 29), JOB_NOVICE, 'U');
+#else
+ result = chr->make_new_char_sql(sd, RFIFOP(fd, 2), RFIFOB(fd, 26), RFIFOB(fd, 27), RFIFOB(fd, 28), RFIFOB(fd, 29), RFIFOB(fd, 30), RFIFOB(fd, 31), RFIFOB(fd, 32), RFIFOW(fd, 33), RFIFOW(fd, 35), JOB_NOVICE, 'U');
+#endif
}
//'Charname already exists' (-1), 'Char creation denied' (-2) and 'You are underaged' (-3)
@@ -4665,7 +4780,7 @@ void char_parse_char_create_new_char(int fd, struct char_session_data* sd)
// flag:
// 0 = Incorrect Email address
-void char_delete_char_failed(int fd, int flag)
+static void char_delete_char_failed(int fd, int flag)
{
WFIFOHEAD(fd,3);
WFIFOW(fd,0) = 0x70;
@@ -4673,15 +4788,15 @@ void char_delete_char_failed(int fd, int flag)
WFIFOSET(fd,3);
}
-void char_delete_char_ok(int fd)
+static void char_delete_char_ok(int fd)
{
WFIFOHEAD(fd,2);
WFIFOW(fd,0) = 0x6f;
WFIFOSET(fd,2);
}
-void char_parse_char_delete_char(int fd, struct char_session_data* sd, unsigned short cmd) __attribute__((nonnull (2)));
-void char_parse_char_delete_char(int fd, struct char_session_data* sd, unsigned short cmd)
+static void char_parse_char_delete_char(int fd, struct char_session_data *sd, unsigned short cmd) __attribute__((nonnull (2)));
+static void char_parse_char_delete_char(int fd, struct char_session_data *sd, unsigned short cmd)
{
char email[40];
int cid = RFIFOL(fd,2);
@@ -4735,12 +4850,12 @@ void char_parse_char_delete_char(int fd, struct char_session_data* sd, unsigned
chr->delete_char_ok(fd);
}
-void char_parse_char_ping(int fd)
+static void char_parse_char_ping(int fd)
{
RFIFOSKIP(fd,6);
}
-void char_allow_rename(int fd, int flag)
+static void char_allow_rename(int fd, int flag)
{
WFIFOHEAD(fd, 4);
WFIFOW(fd,0) = 0x28e;
@@ -4748,12 +4863,11 @@ void char_allow_rename(int fd, int flag)
WFIFOSET(fd,4);
}
-void char_parse_char_rename_char(int fd, struct char_session_data* sd) __attribute__((nonnull (2)));
-void char_parse_char_rename_char(int fd, struct char_session_data* sd)
+static void char_parse_char_rename_char(int fd, struct char_session_data *sd) __attribute__((nonnull (2)));
+static void char_parse_char_rename_char(int fd, struct char_session_data *sd)
{
int i, cid =RFIFOL(fd,2);
char name[NAME_LENGTH];
- char esc_name[NAME_LENGTH*2+1];
safestrncpy(name, RFIFOP(fd,6), NAME_LENGTH);
RFIFOSKIP(fd,30);
@@ -4762,8 +4876,7 @@ void char_parse_char_rename_char(int fd, struct char_session_data* sd)
return;
normalize_name(name,TRIM_CHARS);
- SQL->EscapeStringLen(inter->sql_handle, esc_name, name, strnlen(name, NAME_LENGTH));
- if( !chr->check_char_name(name,esc_name) ) {
+ if (chr->check_char_name(name, NULL) == 0) {
i = 1;
safestrncpy(sd->new_name, name, NAME_LENGTH);
} else {
@@ -4773,12 +4886,11 @@ void char_parse_char_rename_char(int fd, struct char_session_data* sd)
chr->allow_rename(fd, i);
}
-void char_parse_char_rename_char2(int fd, struct char_session_data* sd) __attribute__((nonnull (2)));
-void char_parse_char_rename_char2(int fd, struct char_session_data* sd)
+static void char_parse_char_rename_char2(int fd, struct char_session_data *sd) __attribute__((nonnull (2)));
+static void char_parse_char_rename_char2(int fd, struct char_session_data *sd)
{
int i, aid = RFIFOL(fd,2), cid =RFIFOL(fd,6);
char name[NAME_LENGTH];
- char esc_name[NAME_LENGTH*2+1];
safestrncpy(name, RFIFOP(fd,10), NAME_LENGTH);
RFIFOSKIP(fd,34);
@@ -4789,19 +4901,17 @@ void char_parse_char_rename_char2(int fd, struct char_session_data* sd)
return;
normalize_name(name,TRIM_CHARS);
- SQL->EscapeStringLen(inter->sql_handle, esc_name, name, strnlen(name, NAME_LENGTH));
- if( !chr->check_char_name(name,esc_name) )
- {
+ if (chr->check_char_name(name, NULL) == 0) {
i = 1;
safestrncpy(sd->new_name, name, NAME_LENGTH);
- }
- else
+ } else {
i = 0;
+ }
chr->allow_rename(fd, i);
}
-void char_rename_char_ack(int fd, int flag)
+static void char_rename_char_ack(int fd, int flag)
{
WFIFOHEAD(fd, 4);
WFIFOW(fd,0) = 0x290;
@@ -4809,8 +4919,8 @@ void char_rename_char_ack(int fd, int flag)
WFIFOSET(fd,4);
}
-void char_parse_char_rename_char_confirm(int fd, struct char_session_data* sd) __attribute__((nonnull (2)));
-void char_parse_char_rename_char_confirm(int fd, struct char_session_data* sd)
+static void char_parse_char_rename_char_confirm(int fd, struct char_session_data *sd) __attribute__((nonnull (2)));
+static void char_parse_char_rename_char_confirm(int fd, struct char_session_data *sd)
{
int i;
int cid = RFIFOL(fd,2);
@@ -4824,7 +4934,7 @@ void char_parse_char_rename_char_confirm(int fd, struct char_session_data* sd)
chr->rename_char_ack(fd, i);
}
-void char_captcha_notsupported(int fd)
+static void char_captcha_notsupported(int fd)
{
WFIFOHEAD(fd,5);
WFIFOW(fd,0) = 0x7e9;
@@ -4833,31 +4943,31 @@ void char_captcha_notsupported(int fd)
WFIFOSET(fd,5);
}
-void char_parse_char_request_captcha(int fd)
+static void char_parse_char_request_captcha(int fd)
{
chr->captcha_notsupported(fd);
RFIFOSKIP(fd,8);
}
-void char_parse_char_check_captcha(int fd)
+static void char_parse_char_check_captcha(int fd)
{
chr->captcha_notsupported(fd);
RFIFOSKIP(fd,32);
}
-void char_parse_char_delete2_req(int fd, struct char_session_data* sd)
+static void char_parse_char_delete2_req(int fd, struct char_session_data *sd)
{
chr->delete2_req(fd, sd);
RFIFOSKIP(fd,6);
}
-void char_parse_char_delete2_accept(int fd, struct char_session_data* sd)
+static void char_parse_char_delete2_accept(int fd, struct char_session_data *sd)
{
chr->delete2_accept(fd, sd);
RFIFOSKIP(fd,12);
}
-void char_parse_char_delete2_cancel(int fd, struct char_session_data* sd)
+static void char_parse_char_delete2_cancel(int fd, struct char_session_data *sd)
{
chr->delete2_cancel(fd, sd);
RFIFOSKIP(fd,6);
@@ -4866,15 +4976,15 @@ void char_parse_char_delete2_cancel(int fd, struct char_session_data* sd)
// flag:
// 0 - ok
// 3 - error
-void char_login_map_server_ack(int fd, uint8 flag)
+static void char_login_map_server_ack(int fd, uint8 flag)
{
- WFIFOHEAD(fd,3);
- WFIFOW(fd,0) = 0x2af9;
- WFIFOB(fd,2) = flag;
- WFIFOSET(fd,3);
+ WFIFOHEAD(fd, 3);
+ WFIFOW(fd, 0) = 0x2af9;
+ WFIFOB(fd, 2) = flag;
+ WFIFOSET2(fd, 3);
}
-void char_parse_char_login_map_server(int fd, uint32 ipl)
+static void char_parse_char_login_map_server(int fd, uint32 ipl)
{
char l_user[24], l_pass[24];
int i;
@@ -4889,6 +4999,7 @@ void char_parse_char_login_map_server(int fd, uint32 ipl)
!sockt->allowed_ip_check(ipl))
{
chr->login_map_server_ack(fd, 3); // Failure
+ sockt->eof(fd);
} else {
chr->login_map_server_ack(fd, 0); // Success
@@ -4898,6 +5009,7 @@ void char_parse_char_login_map_server(int fd, uint32 ipl)
chr->server[i].users = 0;
sockt->session[fd]->func_parse = chr->parse_frommap;
sockt->session[fd]->flag.server = 1;
+ sockt->session[fd]->flag.validate = 0;
sockt->realloc_fifo(fd, FIFOSIZE_SERVERLINK, FIFOSIZE_SERVERLINK);
chr->mapif_init(fd);
}
@@ -4906,8 +5018,8 @@ void char_parse_char_login_map_server(int fd, uint32 ipl)
RFIFOSKIP(fd,60);
}
-void char_parse_char_pincode_check(int fd, struct char_session_data* sd) __attribute__((nonnull (2)));
-void char_parse_char_pincode_check(int fd, struct char_session_data* sd)
+static void char_parse_char_pincode_check(int fd, struct char_session_data *sd) __attribute__((nonnull (2)));
+static void char_parse_char_pincode_check(int fd, struct char_session_data *sd)
{
if (RFIFOL(fd,2) == sd->account_id)
pincode->check(fd, sd);
@@ -4915,17 +5027,17 @@ void char_parse_char_pincode_check(int fd, struct char_session_data* sd)
RFIFOSKIP(fd, 10);
}
-void char_parse_char_pincode_window(int fd, struct char_session_data* sd) __attribute__((nonnull (2)));
-void char_parse_char_pincode_window(int fd, struct char_session_data* sd)
+static void char_parse_char_pincode_window(int fd, struct char_session_data *sd) __attribute__((nonnull (2)));
+static void char_parse_char_pincode_window(int fd, struct char_session_data *sd)
{
if (RFIFOL(fd,2) == sd->account_id)
- pincode->sendstate(fd, sd, PINCODE_NOTSET);
+ pincode->loginstate(fd, sd, PINCODE_LOGIN_NOTSET);
RFIFOSKIP(fd, 6);
}
-void char_parse_char_pincode_change(int fd, struct char_session_data* sd) __attribute__((nonnull (2)));
-void char_parse_char_pincode_change(int fd, struct char_session_data* sd)
+static void char_parse_char_pincode_change(int fd, struct char_session_data *sd) __attribute__((nonnull (2)));
+static void char_parse_char_pincode_change(int fd, struct char_session_data *sd)
{
if (RFIFOL(fd,2) == sd->account_id)
pincode->change(fd, sd);
@@ -4933,21 +5045,21 @@ void char_parse_char_pincode_change(int fd, struct char_session_data* sd)
RFIFOSKIP(fd, 14);
}
-void char_parse_char_pincode_first_pin(int fd, struct char_session_data* sd) __attribute__((nonnull (2)));
-void char_parse_char_pincode_first_pin(int fd, struct char_session_data* sd)
+static void char_parse_char_pincode_first_pin(int fd, struct char_session_data *sd) __attribute__((nonnull (2)));
+static void char_parse_char_pincode_first_pin(int fd, struct char_session_data *sd)
{
if (RFIFOL(fd,2) == sd->account_id)
pincode->setnew (fd, sd);
RFIFOSKIP(fd, 10);
}
-void char_parse_char_request_chars(int fd, struct char_session_data* sd)
+static void char_parse_char_request_chars(int fd, struct char_session_data *sd)
{
- chr->mmo_char_send099d(fd, sd);
+ chr->send_HC_ACK_CHARINFO_PER_PAGE(fd, sd);
RFIFOSKIP(fd,2);
}
-void char_change_character_slot_ack(int fd, bool ret)
+static void char_change_character_slot_ack(int fd, bool ret)
{
WFIFOHEAD(fd, 8);
WFIFOW(fd, 0) = 0x8d5;
@@ -4957,28 +5069,28 @@ void char_change_character_slot_ack(int fd, bool ret)
WFIFOSET(fd, 8);
}
-void char_parse_char_move_character(int fd, struct char_session_data* sd)
+static void char_parse_char_move_character(int fd, struct char_session_data *sd)
{
bool ret = chr->char_slotchange(sd, fd, RFIFOW(fd, 2), RFIFOW(fd, 4));
chr->change_character_slot_ack(fd, ret);
/* for some stupid reason it requires the char data again (gravity -_-) */
if( ret )
-#if PACKETVER >= 20130000
- chr->mmo_char_send099d(fd, sd);
+#if PACKETVER_MAIN_NUM >= 20130522 || PACKETVER_RE_NUM >= 20130327 || defined(PACKETVER_ZERO)
+ chr->send_HC_ACK_CHARINFO_PER_PAGE(fd, sd);
#else
chr->mmo_char_send_characters(fd, sd);
#endif
RFIFOSKIP(fd, 8);
}
-int char_parse_char_unknown_packet(int fd, uint32 ipl)
+static int char_parse_char_unknown_packet(int fd, uint32 ipl)
{
ShowError("chr->parse_char: Received unknown packet "CL_WHITE"0x%x"CL_RESET" from ip '"CL_WHITE"%s"CL_RESET"'! Disconnecting!\n", RFIFOW(fd,0), sockt->ip2str(ipl, NULL));
sockt->eof(fd);
return 1;
}
-int char_parse_char(int fd)
+static int char_parse_char(int fd)
{
unsigned short cmd;
struct char_session_data* sd;
@@ -5042,7 +5154,7 @@ int char_parse_char(int fd)
// S 0a39 <name>.24B <slot>.B <hair color>.W <hair style>.W <starting job class ID>.W <Unknown>.(W or 2 B's)??? <sex>.B
case 0xa39:
{
- FIFOSD_CHECK(36);
+ FIFOSD_CHECK(36);
#elif PACKETVER >= 20120307
// S 0970 <name>.24B <slot>.B <hair color>.W <hair style>.W
case 0x970:
@@ -5195,71 +5307,8 @@ int char_parse_char(int fd)
return 0;
}
-int mapif_sendall(const unsigned char *buf, unsigned int len)
-{
- int i, c;
-
- nullpo_ret(buf);
- c = 0;
- for(i = 0; i < ARRAYLENGTH(chr->server); i++) {
- int fd;
- if ((fd = chr->server[i].fd) > 0) {
- WFIFOHEAD(fd,len);
- memcpy(WFIFOP(fd,0), buf, len);
- WFIFOSET(fd,len);
- c++;
- }
- }
-
- return c;
-}
-
-int mapif_sendallwos(int sfd, unsigned char *buf, unsigned int len)
-{
- int i, c;
-
- nullpo_ret(buf);
- c = 0;
- for(i = 0; i < ARRAYLENGTH(chr->server); i++) {
- int fd;
- if ((fd = chr->server[i].fd) > 0 && fd != sfd) {
- WFIFOHEAD(fd,len);
- memcpy(WFIFOP(fd,0), buf, len);
- WFIFOSET(fd,len);
- c++;
- }
- }
-
- return c;
-}
-
-int mapif_send(int fd, unsigned char *buf, unsigned int len)
-{
- nullpo_ret(buf);
- if (fd >= 0) {
- int i;
- ARR_FIND( 0, ARRAYLENGTH(chr->server), i, fd == chr->server[i].fd );
- if( i < ARRAYLENGTH(chr->server) )
- {
- WFIFOHEAD(fd,len);
- memcpy(WFIFOP(fd,0), buf, len);
- WFIFOSET(fd,len);
- return 1;
- }
- }
- return 0;
-}
-
-void mapif_send_users_count(int users)
+static int char_broadcast_user_count(int tid, int64 tick, int id, intptr_t data)
{
- uint8 buf[6];
- // send number of players to all map-servers
- WBUFW(buf,0) = 0x2b00;
- WBUFL(buf,2) = users;
- mapif->sendall(buf,6);
-}
-
-int char_broadcast_user_count(int tid, int64 tick, int id, intptr_t data) {
int users = chr->count_users();
// only send an update when needed
@@ -5298,7 +5347,8 @@ static int char_send_accounts_tologin_sub(union DBKey key, struct DBData *data,
return 0;
}
-int char_send_accounts_tologin(int tid, int64 tick, int id, intptr_t data) {
+static int char_send_accounts_tologin(int tid, int64 tick, int id, intptr_t data)
+{
if (chr->login_fd > 0 && sockt->session[chr->login_fd])
{
// send account list to login server
@@ -5315,7 +5365,8 @@ int char_send_accounts_tologin(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-int char_check_connect_login_server(int tid, int64 tick, int id, intptr_t data) {
+static int char_check_connect_login_server(int tid, int64 tick, int id, intptr_t data)
+{
if (chr->login_fd > 0 && sockt->session[chr->login_fd] != NULL)
return 0;
@@ -5328,6 +5379,7 @@ int char_check_connect_login_server(int tid, int64 tick, int id, intptr_t data)
sockt->session[chr->login_fd]->func_parse = chr->parse_fromlogin;
sockt->session[chr->login_fd]->flag.server = 1;
+ sockt->session[chr->login_fd]->flag.validate = 0;
sockt->realloc_fifo(chr->login_fd, FIFOSIZE_SERVERLINK, FIFOSIZE_SERVERLINK);
loginif->connect_to_server();
@@ -5339,7 +5391,8 @@ int char_check_connect_login_server(int tid, int64 tick, int id, intptr_t data)
//Invoked 15 seconds after mapif->disconnectplayer in case the map server doesn't
//replies/disconnect the player we tried to kick. [Skotlex]
//------------------------------------------------
-static int char_waiting_disconnect(int tid, int64 tick, int id, intptr_t data) {
+static int char_waiting_disconnect(int tid, int64 tick, int id, intptr_t data)
+{
struct online_char_data* character;
if ((character = (struct online_char_data*)idb_get(chr->online_char_db, id)) != NULL && character->waiting_disconnect == tid) {
//Mark it offline due to timeout.
@@ -5366,7 +5419,8 @@ static int char_online_data_cleanup_sub(union DBKey key, struct DBData *data, va
return 0;
}
-static int char_online_data_cleanup(int tid, int64 tick, int id, intptr_t data) {
+static int char_online_data_cleanup(int tid, int64 tick, int id, intptr_t data)
+{
chr->online_char_db->foreach(chr->online_char_db, chr->online_data_cleanup_sub);
return 0;
}
@@ -5379,7 +5433,7 @@ static int char_online_data_cleanup(int tid, int64 tick, int id, intptr_t data)
*
* @retval false in case of error.
*/
-bool char_sql_config_read(const char *filename, bool imported)
+static bool char_sql_config_read(const char *filename, bool imported)
{
struct config_t config;
const struct config_setting_t *setting = NULL;
@@ -5436,7 +5490,7 @@ bool char_sql_config_read(const char *filename, bool imported)
*
* @retval false in case of error.
*/
-bool char_sql_config_read_registry(const char *filename, const struct config_t *config, bool imported)
+static bool char_sql_config_read_registry(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL;
@@ -5467,7 +5521,7 @@ bool char_sql_config_read_registry(const char *filename, const struct config_t *
*
* @retval false in case of error.
*/
-bool char_sql_config_read_pc(const char *filename, const struct config_t *config, bool imported)
+static bool char_sql_config_read_pc(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL;
@@ -5483,6 +5537,7 @@ bool char_sql_config_read_pc(const char *filename, const struct config_t *config
libconfig->setting_lookup_mutable_string(setting, "hotkey_db", hotkey_db, sizeof(hotkey_db));
libconfig->setting_lookup_mutable_string(setting, "scdata_db", scdata_db, sizeof(scdata_db));
libconfig->setting_lookup_mutable_string(setting, "inventory_db", inventory_db, sizeof(inventory_db));
+ libconfig->setting_lookup_mutable_string(setting, "achievement_db", char_achievement_db, sizeof(char_achievement_db));
libconfig->setting_lookup_mutable_string(setting, "cart_db", cart_db, sizeof(cart_db));
libconfig->setting_lookup_mutable_string(setting, "charlog_db", charlog_db, sizeof(charlog_db));
libconfig->setting_lookup_mutable_string(setting, "storage_db", storage_db, sizeof(storage_db));
@@ -5513,7 +5568,7 @@ bool char_sql_config_read_pc(const char *filename, const struct config_t *config
*
* @retval false in case of error.
*/
-bool char_sql_config_read_guild(const char *filename, const struct config_t *config, bool imported)
+static bool char_sql_config_read_guild(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL;
@@ -5547,7 +5602,7 @@ bool char_sql_config_read_guild(const char *filename, const struct config_t *con
*
* @retval false in case of error.
*/
-bool char_config_read(const char *filename, bool imported)
+static bool char_config_read(const char *filename, bool imported)
{
struct config_t config;
const char *import = NULL;
@@ -5603,7 +5658,7 @@ bool char_config_read(const char *filename, bool imported)
*
* @retval false in case of error.
*/
-bool char_config_read_top(const char *filename, const struct config_t *config, bool imported)
+static bool char_config_read_top(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL;
@@ -5647,7 +5702,7 @@ bool char_config_read_top(const char *filename, const struct config_t *config, b
*
* @retval false in case of error.
*/
-bool char_config_read_inter(const char *filename, const struct config_t *config, bool imported)
+static bool char_config_read_inter(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL;
const char *str = NULL;
@@ -5691,7 +5746,7 @@ bool char_config_read_inter(const char *filename, const struct config_t *config,
*
* @retval false in case of error.
*/
-bool char_config_read_database(const char *filename, const struct config_t *config, bool imported)
+static bool char_config_read_database(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL;
@@ -5723,7 +5778,7 @@ bool char_config_read_database(const char *filename, const struct config_t *conf
*
* @retval false in case of error.
*/
-bool char_config_read_console(const char *filename, const struct config_t *config, bool imported)
+static bool char_config_read_console(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting;
@@ -5756,7 +5811,7 @@ bool char_config_read_console(const char *filename, const struct config_t *confi
*
* @retval false in case of error.
*/
-bool char_config_read_player(const char *filename, const struct config_t *config, bool imported)
+static bool char_config_read_player(const char *filename, const struct config_t *config, bool imported)
{
bool retval = true;
@@ -5784,7 +5839,7 @@ bool char_config_read_player(const char *filename, const struct config_t *config
*
* @retval false in case of error.
*/
-bool char_config_read_player_fame(const char *filename, const struct config_t *config, bool imported)
+static bool char_config_read_player_fame(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL;
@@ -5828,7 +5883,7 @@ bool char_config_read_player_fame(const char *filename, const struct config_t *c
*
* @retval false in case of error.
*/
-bool char_config_read_player_deletion(const char *filename, const struct config_t *config, bool imported)
+static bool char_config_read_player_deletion(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL;
@@ -5857,7 +5912,7 @@ bool char_config_read_player_deletion(const char *filename, const struct config_
*
* @retval false in case of error.
*/
-bool char_config_read_player_name(const char *filename, const struct config_t *config, bool imported)
+static bool char_config_read_player_name(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL;
@@ -5874,6 +5929,7 @@ bool char_config_read_player_name(const char *filename, const struct config_t *c
libconfig->setting_lookup_mutable_string(setting, "name_letters", char_name_letters, sizeof(char_name_letters));
libconfig->setting_lookup_int(setting, "name_option", &char_name_option);
libconfig->setting_lookup_bool_real(setting, "name_ignoring_case", &name_ignoring_case);
+ libconfig->setting_lookup_bool_real(setting, "use_aegis_rename", &char_aegis_rename);
return true;
}
@@ -5883,7 +5939,7 @@ bool char_config_read_player_name(const char *filename, const struct config_t *c
*
* @param setting The already retrieved start_item setting.
*/
-void char_config_set_start_item(const struct config_setting_t *setting)
+static void char_config_set_start_item(const struct config_setting_t *setting)
{
int i, count;
@@ -5932,7 +5988,7 @@ void char_config_set_start_item(const struct config_setting_t *setting)
*
* @retval false in case of error.
*/
-bool char_config_read_player_new(const char *filename, const struct config_t *config, bool imported)
+static bool char_config_read_player_new(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL, *setting2 = NULL;
#ifdef RENEWAL
@@ -5988,7 +6044,7 @@ bool char_config_read_player_new(const char *filename, const struct config_t *co
*
* @retval false in case of error.
*/
-bool char_config_read_permission(const char *filename, const struct config_t *config, bool imported)
+static bool char_config_read_permission(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL;
@@ -6032,7 +6088,7 @@ bool char_config_read_permission(const char *filename, const struct config_t *co
*
* @retval false in case of error.
*/
-bool char_config_set_ip(const char *type, const char *value, uint32 *out_ip, char *out_ip_str)
+static bool char_config_set_ip(const char *type, const char *value, uint32 *out_ip, char *out_ip_str)
{
uint32 ip = 0;
@@ -6050,7 +6106,8 @@ bool char_config_set_ip(const char *type, const char *value, uint32 *out_ip, cha
return true;
}
-int do_final(void) {
+int do_final(void)
+{
int i;
ShowStatus("Terminating...\n");
@@ -6066,6 +6123,7 @@ int do_final(void) {
do_final_mapif();
loginif->final();
+ pincode->final();
if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s`", ragsrvinfo_db) )
Sql_ShowDebug(inter->sql_handle);
@@ -6108,12 +6166,13 @@ void do_abort(void)
{
}
-void set_server_type(void) {
+void set_server_type(void)
+{
SERVER_TYPE = SERVER_TYPE_CHAR;
}
/// Called when a terminate signal is received.
-void do_shutdown(void)
+static void do_shutdown(void)
{
if( core->runflag != CHARSERVER_ST_SHUTDOWN )
{
@@ -6189,7 +6248,8 @@ void cmdline_args_init_local(void)
CMDLINEARG_DEF2(net-config, netconfig, "Alternative network configuration.", CMDLINE_OPT_PARAM);
}
-int do_init(int argc, char **argv) {
+int do_init(int argc, char **argv)
+{
int i;
memset(&skillid2idx, 0, sizeof(skillid2idx));
@@ -6212,6 +6272,7 @@ int do_init(int argc, char **argv) {
//Read map indexes
mapindex->init();
+ pincode->init();
#ifdef RENEWAL
start_point.map = mapindex->name2id("iz_int");
@@ -6311,6 +6372,7 @@ int do_init(int argc, char **argv) {
Sql_ShowDebug(inter->sql_handle);
sockt->set_defaultparse(chr->parse_char);
+ sockt->validate = true;
if ((chr->char_fd = sockt->make_listen_bind(bind_ip,chr->port)) == -1) {
ShowFatalError("Failed to bind to port '"CL_WHITE"%d"CL_RESET"'\n",chr->port);
@@ -6343,6 +6405,7 @@ void char_load_defaults(void)
loginif_defaults();
mapif_defaults();
inter_auction_defaults();
+ inter_clan_defaults();
inter_elemental_defaults();
inter_guild_defaults();
inter_homunculus_defaults();
@@ -6352,6 +6415,8 @@ void char_load_defaults(void)
inter_pet_defaults();
inter_quest_defaults();
inter_storage_defaults();
+ inter_rodex_defaults();
+ inter_achievement_defaults();
inter_defaults();
geoip_defaults();
}
@@ -6395,18 +6460,20 @@ void char_defaults(void)
chr->create_charstatus = char_create_charstatus;
chr->mmo_char_tosql = char_mmo_char_tosql;
chr->memitemdata_to_sql = char_memitemdata_to_sql;
+ chr->getitemdata_from_sql = char_getitemdata_from_sql;
chr->mmo_gender = char_mmo_gender;
chr->mmo_chars_fromsql = char_mmo_chars_fromsql;
chr->mmo_char_fromsql = char_mmo_char_fromsql;
chr->mmo_char_sql_init = char_mmo_char_sql_init;
chr->char_slotchange = char_char_slotchange;
chr->rename_char_sql = char_rename_char_sql;
+ chr->name_exists = char_name_exists;
chr->check_char_name = char_check_char_name;
chr->make_new_char_sql = char_make_new_char_sql;
chr->divorce_char_sql = char_divorce_char_sql;
chr->count_users = char_count_users;
chr->mmo_char_tobuf = char_mmo_char_tobuf;
- chr->mmo_char_send099d = char_mmo_char_send099d;
+ chr->send_HC_ACK_CHARINFO_PER_PAGE = char_send_HC_ACK_CHARINFO_PER_PAGE;
chr->mmo_char_send_ban_list = char_mmo_char_send_ban_list;
chr->mmo_char_send_slots_info = char_mmo_char_send_slots_info;
chr->mmo_char_send_characters = char_mmo_char_send_characters;
@@ -6479,7 +6546,6 @@ void char_defaults(void)
chr->map_auth_failed = char_map_auth_failed;
chr->parse_frommap_auth_request = char_parse_frommap_auth_request;
chr->parse_frommap_update_ip = char_parse_frommap_update_ip;
- chr->parse_frommap_request_stats_report = char_parse_frommap_request_stats_report;
chr->parse_frommap_scdata_update = char_parse_frommap_scdata_update;
chr->parse_frommap_scdata_delete = char_parse_frommap_scdata_delete;
chr->parse_frommap = char_parse_frommap;
diff --git a/src/char/char.h b/src/char/char.h
index d7bc96e13..914530537 100644
--- a/src/char/char.h
+++ b/src/char/char.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -139,19 +139,21 @@ struct char_interface {
void (*set_all_offline_sql) (void);
struct DBData (*create_charstatus) (union DBKey key, va_list args);
int (*mmo_char_tosql) (int char_id, struct mmo_charstatus* p);
- int (*memitemdata_to_sql) (const struct item items[], int max, int id, int tableswitch);
+ int (*getitemdata_from_sql) (struct item *items, int max, int guid, enum inventory_table_type table);
+ int (*memitemdata_to_sql) (const struct item items[], int id, enum inventory_table_type table);
int (*mmo_gender) (const struct char_session_data *sd, const struct mmo_charstatus *p, char sex);
- int (*mmo_chars_fromsql) (struct char_session_data* sd, uint8* buf);
+ int (*mmo_chars_fromsql) (struct char_session_data* sd, uint8* buf, int *count);
int (*mmo_char_fromsql) (int char_id, struct mmo_charstatus* p, bool load_everything);
int (*mmo_char_sql_init) (void);
bool (*char_slotchange) (struct char_session_data *sd, int fd, unsigned short from, unsigned short to);
int (*rename_char_sql) (struct char_session_data *sd, int char_id);
- int (*check_char_name) (char * name, char * esc_name);
- int (*make_new_char_sql) (struct char_session_data *sd, const char *name_, int str, int agi, int vit, int int_, int dex, int luk, int slot, int hair_color, int hair_style, short starting_job);
+ bool (*name_exists) (const char *name, const char *esc_name);
+ int (*check_char_name) (const char *name, const char *esc_name);
+ int (*make_new_char_sql) (struct char_session_data *sd, const char *name_, int str, int agi, int vit, int int_, int dex, int luk, int slot, int hair_color, int hair_style, short starting_job, uint8 sex);
int (*divorce_char_sql) (int partner_id1, int partner_id2);
int (*count_users) (void);
int (*mmo_char_tobuf) (uint8* buffer, struct mmo_charstatus* p);
- void (*mmo_char_send099d) (int fd, struct char_session_data *sd);
+ void (*send_HC_ACK_CHARINFO_PER_PAGE) (int fd, struct char_session_data *sd);
void (*mmo_char_send_ban_list) (int fd, struct char_session_data *sd);
void (*mmo_char_send_slots_info) (int fd, struct char_session_data* sd);
int (*mmo_char_send_characters) (int fd, struct char_session_data* sd);
@@ -224,7 +226,6 @@ struct char_interface {
void (*map_auth_failed) (int fd, int account_id, int char_id, int login_id1, char sex, uint32 ip);
void (*parse_frommap_auth_request) (int fd, int id);
void (*parse_frommap_update_ip) (int fd, int id);
- void (*parse_frommap_request_stats_report) (int fd);
void (*parse_frommap_scdata_update) (int fd);
void (*parse_frommap_scdata_delete) (int fd);
int (*parse_frommap) (int fd);
@@ -240,7 +241,7 @@ struct char_interface {
void (*delete2_cancel) (int fd, struct char_session_data* sd);
void (*send_account_id) (int fd, int account_id);
void (*parse_char_connect) (int fd, struct char_session_data* sd, uint32 ipl);
- void (*send_map_info) (int fd, int i, uint32 subnet_map_ip, struct mmo_charstatus *cd);
+ void (*send_map_info) (int fd, int i, uint32 subnet_map_ip, struct mmo_charstatus *cd, char *dnsHost);
void (*send_wait_char_server) (int fd);
int (*search_default_maps_mapserver) (struct mmo_charstatus *cd);
void (*parse_char_select) (int fd, struct char_session_data* sd, uint32 ipl);
@@ -327,6 +328,8 @@ extern char pet_db[256];
extern char mail_db[256];
extern char auction_db[256];
extern char quest_db[256];
+extern char rodex_db[256];
+extern char rodex_item_db[256];
extern char homunculus_db[256];
extern char skill_homunculus_db[256];
extern char mercenary_db[256];
@@ -337,6 +340,7 @@ extern char acc_reg_num_db[32];
extern char acc_reg_str_db[32];
extern char char_reg_str_db[32];
extern char char_reg_num_db[32];
+extern char char_achievement_db[256];
extern int guild_exp_rate;
diff --git a/src/char/geoip.c b/src/char/geoip.c
index 0b84d2b09..2870e5f0c 100644
--- a/src/char/geoip.c
+++ b/src/char/geoip.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -30,9 +30,9 @@
#include <stdio.h>
#include <sys/stat.h> // for stat/lstat/fstat - [Dekamaster/Ultimate GM Tool]
-struct s_geoip geoip_data;
+static struct s_geoip geoip_data;
-struct geoip_interface geoip_s;
+static struct geoip_interface geoip_s;
struct geoip_interface *geoip;
/* [Dekamaster/Nightroad] */
@@ -40,36 +40,38 @@ struct geoip_interface *geoip;
#define GEOIP_STRUCTURE_INFO_MAX_SIZE 20
#define GEOIP_COUNTRY_BEGIN 16776960
-const char * geoip_countryname[GEOIP_MAX_COUNTRIES] = {"Unknown","Asia/Pacific Region","Europe","Andorra","United Arab Emirates","Afghanistan","Antigua and Barbuda","Anguilla","Albania","Armenia","Netherlands Antilles",
- "Angola","Antarctica","Argentina","American Samoa","Austria","Australia","Aruba","Azerbaijan","Bosnia and Herzegovina","Barbados",
- "Bangladesh","Belgium","Burkina Faso","Bulgaria","Bahrain","Burundi","Benin","Bermuda","Brunei Darussalam","Bolivia",
- "Brazil","Bahamas","Bhutan","Bouvet Island","Botswana","Belarus","Belize","Canada","Cocos (Keeling) Islands","Congo, The Democratic Republic of the",
- "Central African Republic","Congo","Switzerland","Cote D'Ivoire","Cook Islands","Chile","Cameroon","China","Colombia","Costa Rica",
- "Cuba","Cape Verde","Christmas Island","Cyprus","Czech Republic","Germany","Djibouti","Denmark","Dominica","Dominican Republic",
- "Algeria","Ecuador","Estonia","Egypt","Western Sahara","Eritrea","Spain","Ethiopia","Finland","Fiji",
- "Falkland Islands (Malvinas)","Micronesia, Federated States of","Faroe Islands","France","France, Metropolitan","Gabon","United Kingdom","Grenada","Georgia","French Guiana",
- "Ghana","Gibraltar","Greenland","Gambia","Guinea","Guadeloupe","Equatorial Guinea","Greece","South Georgia and the South Sandwich Islands","Guatemala",
- "Guam","Guinea-Bissau","Guyana","Hong Kong","Heard Island and McDonald Islands","Honduras","Croatia","Haiti","Hungary","Indonesia",
- "Ireland","Israel","India","British Indian Ocean Territory","Iraq","Iran, Islamic Republic of","Iceland","Italy","Jamaica","Jordan",
- "Japan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Comoros","Saint Kitts and Nevis","Korea, Democratic People's Republic of","Korea, Republic of","Kuwait",
- "Cayman Islands","Kazakhstan","Lao People's Democratic Republic","Lebanon","Saint Lucia","Liechtenstein","Sri Lanka","Liberia","Lesotho","Lithuania",
- "Luxembourg","Latvia","Libyan Arab Jamahiriya","Morocco","Monaco","Moldova, Republic of","Madagascar","Marshall Islands","Macedonia","Mali",
- "Myanmar","Mongolia","Macau","Northern Mariana Islands","Martinique","Mauritania","Montserrat","Malta","Mauritius","Maldives",
- "Malawi","Mexico","Malaysia","Mozambique","Namibia","New Caledonia","Niger","Norfolk Island","Nigeria","Nicaragua",
- "Netherlands","Norway","Nepal","Nauru","Niue","New Zealand","Oman","Panama","Peru","French Polynesia",
- "Papua New Guinea","Philippines","Pakistan","Poland","Saint Pierre and Miquelon","Pitcairn Islands","Puerto Rico","Palestinian Territory","Portugal","Palau",
- "Paraguay","Qatar","Reunion","Romania","Russian Federation","Rwanda","Saudi Arabia","Solomon Islands","Seychelles","Sudan",
- "Sweden","Singapore","Saint Helena","Slovenia","Svalbard and Jan Mayen","Slovakia","Sierra Leone","San Marino","Senegal","Somalia","Suriname",
- "Sao Tome and Principe","El Salvador","Syrian Arab Republic","Swaziland","Turks and Caicos Islands","Chad","French Southern Territories","Togo","Thailand",
- "Tajikistan","Tokelau","Turkmenistan","Tunisia","Tonga","Timor-Leste","Turkey","Trinidad and Tobago","Tuvalu","Taiwan",
- "Tanzania, United Republic of","Ukraine","Uganda","United States Minor Outlying Islands","United States","Uruguay","Uzbekistan","Holy See (Vatican City State)","Saint Vincent and the Grenadines","Venezuela",
- "Virgin Islands, British","Virgin Islands, U.S.","Vietnam","Vanuatu","Wallis and Futuna","Samoa","Yemen","Mayotte","Serbia","South Africa",
- "Zambia","Montenegro","Zimbabwe","Anonymous Proxy","Satellite Provider","Other","Aland Islands","Guernsey","Isle of Man","Jersey",
- "Saint Barthelemy", "Saint Martin", "Bonaire, Saint Eustatius and Saba", "South Sudan"};
+static const char *geoip_countryname[GEOIP_MAX_COUNTRIES] = {
+ "Unknown","Asia/Pacific Region","Europe","Andorra","United Arab Emirates","Afghanistan","Antigua and Barbuda","Anguilla","Albania","Armenia","Netherlands Antilles",
+ "Angola","Antarctica","Argentina","American Samoa","Austria","Australia","Aruba","Azerbaijan","Bosnia and Herzegovina","Barbados",
+ "Bangladesh","Belgium","Burkina Faso","Bulgaria","Bahrain","Burundi","Benin","Bermuda","Brunei Darussalam","Bolivia",
+ "Brazil","Bahamas","Bhutan","Bouvet Island","Botswana","Belarus","Belize","Canada","Cocos (Keeling) Islands","Congo, The Democratic Republic of the",
+ "Central African Republic","Congo","Switzerland","Cote D'Ivoire","Cook Islands","Chile","Cameroon","China","Colombia","Costa Rica",
+ "Cuba","Cape Verde","Christmas Island","Cyprus","Czech Republic","Germany","Djibouti","Denmark","Dominica","Dominican Republic",
+ "Algeria","Ecuador","Estonia","Egypt","Western Sahara","Eritrea","Spain","Ethiopia","Finland","Fiji",
+ "Falkland Islands (Malvinas)","Micronesia, Federated States of","Faroe Islands","France","France, Metropolitan","Gabon","United Kingdom","Grenada","Georgia","French Guiana",
+ "Ghana","Gibraltar","Greenland","Gambia","Guinea","Guadeloupe","Equatorial Guinea","Greece","South Georgia and the South Sandwich Islands","Guatemala",
+ "Guam","Guinea-Bissau","Guyana","Hong Kong","Heard Island and McDonald Islands","Honduras","Croatia","Haiti","Hungary","Indonesia",
+ "Ireland","Israel","India","British Indian Ocean Territory","Iraq","Iran, Islamic Republic of","Iceland","Italy","Jamaica","Jordan",
+ "Japan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Comoros","Saint Kitts and Nevis","Korea, Democratic People's Republic of","Korea, Republic of","Kuwait",
+ "Cayman Islands","Kazakhstan","Lao People's Democratic Republic","Lebanon","Saint Lucia","Liechtenstein","Sri Lanka","Liberia","Lesotho","Lithuania",
+ "Luxembourg","Latvia","Libyan Arab Jamahiriya","Morocco","Monaco","Moldova, Republic of","Madagascar","Marshall Islands","Macedonia","Mali",
+ "Myanmar","Mongolia","Macau","Northern Mariana Islands","Martinique","Mauritania","Montserrat","Malta","Mauritius","Maldives",
+ "Malawi","Mexico","Malaysia","Mozambique","Namibia","New Caledonia","Niger","Norfolk Island","Nigeria","Nicaragua",
+ "Netherlands","Norway","Nepal","Nauru","Niue","New Zealand","Oman","Panama","Peru","French Polynesia",
+ "Papua New Guinea","Philippines","Pakistan","Poland","Saint Pierre and Miquelon","Pitcairn Islands","Puerto Rico","Palestinian Territory","Portugal","Palau",
+ "Paraguay","Qatar","Reunion","Romania","Russian Federation","Rwanda","Saudi Arabia","Solomon Islands","Seychelles","Sudan",
+ "Sweden","Singapore","Saint Helena","Slovenia","Svalbard and Jan Mayen","Slovakia","Sierra Leone","San Marino","Senegal","Somalia","Suriname",
+ "Sao Tome and Principe","El Salvador","Syrian Arab Republic","Swaziland","Turks and Caicos Islands","Chad","French Southern Territories","Togo","Thailand",
+ "Tajikistan","Tokelau","Turkmenistan","Tunisia","Tonga","Timor-Leste","Turkey","Trinidad and Tobago","Tuvalu","Taiwan",
+ "Tanzania, United Republic of","Ukraine","Uganda","United States Minor Outlying Islands","United States","Uruguay","Uzbekistan","Holy See (Vatican City State)","Saint Vincent and the Grenadines","Venezuela",
+ "Virgin Islands, British","Virgin Islands, U.S.","Vietnam","Vanuatu","Wallis and Futuna","Samoa","Yemen","Mayotte","Serbia","South Africa",
+ "Zambia","Montenegro","Zimbabwe","Anonymous Proxy","Satellite Provider","Other","Aland Islands","Guernsey","Isle of Man","Jersey",
+ "Saint Barthelemy", "Saint Martin", "Bonaire, Saint Eustatius and Saba", "South Sudan"
+};
/* [Dekamaster/Nightroad] */
/* WHY NOT A DBMAP: There are millions of entries in GeoIP and it has its own algorithm to go quickly through them, a DBMap wouldn't be efficient */
-const char* geoip_getcountry(uint32 ipnum)
+static const char *geoip_getcountry(uint32 ipnum)
{
int depth;
unsigned int x;
@@ -111,7 +113,7 @@ const char* geoip_getcountry(uint32 ipnum)
* Disables GeoIP
* frees geoip.cache
**/
-void geoip_final(bool shutdown)
+static void geoip_final(bool shutdown)
{
if (geoip->data->cache) {
aFree(geoip->data->cache);
@@ -130,7 +132,7 @@ void geoip_final(bool shutdown)
* geoip.cache should be freed after use!
* http://dev.maxmind.com/geoip/legacy/geolite/
**/
-void geoip_init(void)
+static void geoip_init(void)
{
int fno;
char db_type = 1;
diff --git a/src/char/geoip.h b/src/char/geoip.h
index c5d71f5e1..be9fe4fff 100644
--- a/src/char/geoip.h
+++ b/src/char/geoip.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/char/int_achievement.c b/src/char/int_achievement.c
new file mode 100644
index 000000000..14311ecf0
--- /dev/null
+++ b/src/char/int_achievement.c
@@ -0,0 +1,252 @@
+/**
+* This file is part of Hercules.
+* http://herc.ws - http://github.com/HerculesWS/Hercules
+*
+* Copyright (C) 2017 Hercules Dev Team
+* Copyright (C) Smokexyz
+*
+* Hercules is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#define HERCULES_CORE
+
+#include "int_achievement.h"
+
+#include "char/char.h"
+#include "char/inter.h"
+#include "char/mapif.h"
+
+#include "common/db.h"
+#include "common/memmgr.h"
+#include "common/mmo.h"
+#include "common/nullpo.h"
+#include "common/showmsg.h"
+#include "common/socket.h"
+#include "common/sql.h"
+#include "common/strlib.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+static struct inter_achievement_interface inter_achievement_s;
+struct inter_achievement_interface *inter_achievement;
+
+/**
+ * Saves changed achievements for a character.
+ * @param[in] char_id character identifier.
+ * @param[out] cp pointer to loaded achievements.
+ * @param[in] p pointer to map-sent character achievements.
+ * @return number of achievements saved.
+ */
+static int inter_achievement_tosql(int char_id, struct char_achievements *cp, const struct char_achievements *p)
+{
+ StringBuf buf;
+ int i = 0, rows = 0;
+
+ nullpo_ret(cp);
+ nullpo_ret(p);
+ Assert_ret(char_id > 0);
+
+ StrBuf->Init(&buf);
+ StrBuf->Printf(&buf, "REPLACE INTO `%s` (`char_id`, `ach_id`, `completed_at`, `rewarded_at`", char_achievement_db);
+ for (i = 0; i < MAX_ACHIEVEMENT_OBJECTIVES; i++)
+ StrBuf->Printf(&buf, ", `obj_%d`", i);
+ StrBuf->AppendStr(&buf, ") VALUES ");
+
+ for (i = 0; i < VECTOR_LENGTH(*p); i++) {
+ int j = 0;
+ bool save = false;
+ struct achievement *pa = &VECTOR_INDEX(*p, i), *cpa = NULL;
+
+ ARR_FIND(0, VECTOR_LENGTH(*cp), j, ((cpa = &VECTOR_INDEX(*cp, j)) && cpa->id == pa->id));
+
+ if (j == VECTOR_LENGTH(*cp))
+ save = true;
+ else if (memcmp(cpa, pa, sizeof(struct achievement)) != 0)
+ save = true;
+
+ if (save) {
+ StrBuf->Printf(&buf, "%s('%d', '%d', '%"PRId64"', '%"PRId64"'", rows ?", ":"", char_id, pa->id, (int64)pa->completed_at, (int64)pa->rewarded_at);
+ for (j = 0; j < MAX_ACHIEVEMENT_OBJECTIVES; j++)
+ StrBuf->Printf(&buf, ", '%d'", pa->objective[j]);
+ StrBuf->AppendStr(&buf, ")");
+ rows++;
+ }
+ }
+
+ if (rows > 0 && SQL_ERROR == SQL->QueryStr(inter->sql_handle, StrBuf->Value(&buf))) {
+ Sql_ShowDebug(inter->sql_handle);
+ StrBuf->Destroy(&buf); // Destroy the buffer.
+ return 0;
+ }
+ // Destroy the buffer.
+ StrBuf->Destroy(&buf);
+
+ if (rows) {
+ ShowInfo("achievements saved for char %d (total: %d, saved: %d)\n", char_id, VECTOR_LENGTH(*p), rows);
+
+ /* Sync with inter-db acheivements. */
+ VECTOR_CLEAR(*cp);
+ VECTOR_ENSURE(*cp, VECTOR_LENGTH(*p), 1);
+ VECTOR_PUSHARRAY(*cp, VECTOR_DATA(*p), VECTOR_LENGTH(*p));
+ }
+
+ return rows;
+}
+
+/**
+ * Retrieves all achievements of a character.
+ * @param[in] char_id character identifier.
+ * @param[out] cp pointer to character achievements structure.
+ * @return true on success, false on failure.
+ */
+static bool inter_achievement_fromsql(int char_id, struct char_achievements *cp)
+{
+ StringBuf buf;
+ char *data;
+ int i = 0, num_rows = 0;
+
+ nullpo_ret(cp);
+
+ Assert_ret(char_id > 0);
+
+ // char_achievements (`char_id`, `ach_id`, `completed_at`, `rewarded_at`, `obj_0`, `obj_2`, ...`obj_9`)
+ StrBuf->Init(&buf);
+ StrBuf->AppendStr(&buf, "SELECT `ach_id`, `completed_at`, `rewarded_at`");
+ for (i = 0; i < MAX_ACHIEVEMENT_OBJECTIVES; i++)
+ StrBuf->Printf(&buf, ", `obj_%d`", i);
+ StrBuf->Printf(&buf, " FROM `%s` WHERE `char_id` = '%d' ORDER BY `ach_id`", char_achievement_db, char_id);
+
+ if (SQL_ERROR == SQL->QueryStr(inter->sql_handle, StrBuf->Value(&buf))) {
+ Sql_ShowDebug(inter->sql_handle);
+ StrBuf->Destroy(&buf);
+ return false;
+ }
+
+ VECTOR_CLEAR(*cp);
+
+ if ((num_rows = (int) SQL->NumRows(inter->sql_handle)) != 0) {
+ int j = 0;
+
+ VECTOR_ENSURE(*cp, num_rows, 1);
+
+ for (i = 0; i < num_rows && SQL_SUCCESS == SQL->NextRow(inter->sql_handle); i++) {
+ struct achievement t_ach = { 0 };
+ SQL->GetData(inter->sql_handle, 0, &data, NULL); t_ach.id = atoi(data);
+ SQL->GetData(inter->sql_handle, 1, &data, NULL); t_ach.completed_at = atoi(data);
+ SQL->GetData(inter->sql_handle, 2, &data, NULL); t_ach.rewarded_at = atoi(data);
+ /* Objectives */
+ for (j = 0; j < MAX_ACHIEVEMENT_OBJECTIVES; j++) {
+ SQL->GetData(inter->sql_handle, j + 3, &data, NULL);
+ t_ach.objective[j] = atoi(data);
+ }
+ /* Add Entry */
+ VECTOR_PUSH(*cp, t_ach);
+ }
+ }
+
+ SQL->FreeResult(inter->sql_handle);
+
+ StrBuf->Destroy(&buf);
+
+ if (num_rows > 0)
+ ShowInfo("achievements loaded for char %d (total: %d)\n", char_id, num_rows);
+
+ return true;
+}
+
+/**
+ * Handles checking of map server packets and calls appropriate functions.
+ * @param fd socket descriptor.
+ * @return 0 on failure, 1 on succes.
+ */
+static int inter_achievement_parse_frommap(int fd)
+{
+ RFIFOHEAD(fd);
+
+ switch (RFIFOW(fd,0)) {
+ case 0x3012:
+ mapif->pLoadAchievements(fd);
+ break;
+ case 0x3013:
+ mapif->pSaveAchievements(fd);
+ break;
+ default:
+ return 0;
+ }
+
+ return 1;
+}
+
+/**
+ * Initialization function
+ */
+static int inter_achievement_sql_init(void)
+{
+ // Initialize the loaded db storage.
+ // used as a comparand against map-server achievement data before saving.
+ inter_achievement->char_achievements = idb_alloc(DB_OPT_RELEASE_DATA);
+ return 1;
+}
+
+/**
+ * This function ensures idb's entry.
+ */
+static struct DBData inter_achievement_ensure_char_achievements(union DBKey key, va_list args)
+{
+ struct char_achievements *ca = NULL;
+
+ CREATE(ca, struct char_achievements, 1);
+ VECTOR_INIT(*ca);
+
+ return DB->ptr2data(ca);
+}
+
+/**
+ * Cleaning function called through db_destroy()
+ */
+static int inter_achievement_char_achievements_clear(union DBKey key, struct DBData *data, va_list args)
+{
+ struct char_achievements *ca = DB->data2ptr(data);
+
+ VECTOR_CLEAR(*ca);
+
+ return 0;
+}
+
+/**
+ * Finalization function.
+ */
+static void inter_achievement_sql_final(void)
+{
+ inter_achievement->char_achievements->destroy(inter_achievement->char_achievements, inter_achievement->char_achievements_clear);
+}
+
+/**
+ * Inter-achievement interface.
+ */
+void inter_achievement_defaults(void)
+{
+ inter_achievement = &inter_achievement_s;
+ /* */
+ inter_achievement->ensure_char_achievements = inter_achievement_ensure_char_achievements;
+ /* */
+ inter_achievement->sql_init = inter_achievement_sql_init;
+ inter_achievement->sql_final = inter_achievement_sql_final;
+ /* */
+ inter_achievement->tosql = inter_achievement_tosql;
+ inter_achievement->fromsql = inter_achievement_fromsql;
+ /* */
+ inter_achievement->parse_frommap = inter_achievement_parse_frommap;
+ inter_achievement->char_achievements_clear = inter_achievement_char_achievements_clear;
+}
diff --git a/src/char/int_achievement.h b/src/char/int_achievement.h
new file mode 100644
index 000000000..4a44a798d
--- /dev/null
+++ b/src/char/int_achievement.h
@@ -0,0 +1,53 @@
+/**
+* This file is part of Hercules.
+* http://herc.ws - http://github.com/HerculesWS/Hercules
+*
+* Copyright (C) 2017 Hercules Dev Team
+* Copyright (C) Smokexyz
+*
+* Hercules is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#ifndef CHAR_INT_ACHIEVEMENT_H
+#define CHAR_INT_ACHIEVEMENT_H
+
+#include "common/hercules.h"
+#include "common/db.h"
+
+struct achievement;
+struct char_achievements;
+
+/**
+ * inter_achievement Interface
+ */
+struct inter_achievement_interface {
+ struct DBMap *char_achievements;
+ /* */
+ int (*sql_init) (void);
+ void (*sql_final) (void);
+ /* */
+ int (*tosql) (int char_id, struct char_achievements *cp, const struct char_achievements *p);
+ bool (*fromsql) (int char_id, struct char_achievements *a);
+ /* */
+ struct DBData(*ensure_char_achievements) (union DBKey key, va_list args);
+ int (*char_achievements_clear) (union DBKey key, struct DBData *data, va_list args);
+ /* */
+ int (*parse_frommap) (int fd);
+};
+
+#ifdef HERCULES_CORE
+void inter_achievement_defaults(void);
+#endif // HERCULES_CORE
+
+HPShared struct inter_achievement_interface *inter_achievement;
+#endif /* CHAR_INT_ACHIEVEMENT_H */
diff --git a/src/char/int_auction.c b/src/char/int_auction.c
index bf690327c..1e5b0a06d 100644
--- a/src/char/int_auction.c
+++ b/src/char/int_auction.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -40,7 +40,7 @@
#include <stdio.h>
#include <stdlib.h>
-struct inter_auction_interface inter_auction_s;
+static struct inter_auction_interface inter_auction_s;
struct inter_auction_interface *inter_auction;
static int inter_auction_count(int char_id, bool buy)
@@ -59,7 +59,7 @@ static int inter_auction_count(int char_id, bool buy)
return i;
}
-void inter_auction_save(struct auction_data *auction)
+static void inter_auction_save(struct auction_data *auction)
{
int j;
StringBuf buf;
@@ -71,8 +71,10 @@ void inter_auction_save(struct auction_data *auction)
StrBuf->Init(&buf);
StrBuf->Printf(&buf, "UPDATE `%s` SET `seller_id` = '%d', `seller_name` = ?, `buyer_id` = '%d', `buyer_name` = ?, `price` = '%d', `buynow` = '%d', `hours` = '%d', `timestamp` = '%lu', `nameid` = '%d', `item_name` = ?, `type` = '%d', `refine` = '%d', `attribute` = '%d'",
auction_db, auction->seller_id, auction->buyer_id, auction->price, auction->buynow, auction->hours, (unsigned long)auction->timestamp, auction->item.nameid, auction->type, auction->item.refine, auction->item.attribute);
- for( j = 0; j < MAX_SLOTS; j++ )
+ for (j = 0; j < MAX_SLOTS; j++)
StrBuf->Printf(&buf, ", `card%d` = '%d'", j, auction->item.card[j]);
+ for (j = 0; j < MAX_ITEM_OPTIONS; j++)
+ StrBuf->Printf(&buf, ", `opt_idx%d` = '%d', `opt_val%d` = '%d'", j, auction->item.option[j].index, j, auction->item.option[j].value);
StrBuf->Printf(&buf, " WHERE `auction_id` = '%u'", auction->auction_id);
stmt = SQL->StmtMalloc(inter->sql_handle);
@@ -89,39 +91,41 @@ void inter_auction_save(struct auction_data *auction)
StrBuf->Destroy(&buf);
}
-unsigned int inter_auction_create(struct auction_data *auction)
+static unsigned int inter_auction_create(struct auction_data *auction)
{
int j;
StringBuf buf;
struct SqlStmt *stmt;
- if( !auction )
- return false;
+ nullpo_ret(auction);
auction->timestamp = time(NULL) + (auction->hours * 3600);
StrBuf->Init(&buf);
StrBuf->Printf(&buf, "INSERT INTO `%s` (`seller_id`,`seller_name`,`buyer_id`,`buyer_name`,`price`,`buynow`,`hours`,`timestamp`,`nameid`,`item_name`,`type`,`refine`,`attribute`,`unique_id`", auction_db);
- for( j = 0; j < MAX_SLOTS; j++ )
+ for (j = 0; j < MAX_SLOTS; j++)
StrBuf->Printf(&buf, ",`card%d`", j);
+ for (j = 0; j < MAX_ITEM_OPTIONS; j++)
+ StrBuf->Printf(&buf, ", `opt_idx%d`, `opt_val%d`", j, j);
StrBuf->Printf(&buf, ") VALUES ('%d',?,'%d',?,'%d','%d','%d','%lu','%d',?,'%d','%d','%d','%"PRIu64"'",
auction->seller_id, auction->buyer_id, auction->price, auction->buynow, auction->hours, (unsigned long)auction->timestamp, auction->item.nameid, auction->type, auction->item.refine, auction->item.attribute, auction->item.unique_id);
- for( j = 0; j < MAX_SLOTS; j++ )
+ for (j = 0; j < MAX_SLOTS; j++)
StrBuf->Printf(&buf, ",'%d'", auction->item.card[j]);
+ for (j = 0; j < MAX_ITEM_OPTIONS; j++)
+ StrBuf->Printf(&buf, ",'%d','%d'", auction->item.option[j].index, auction->item.option[j].value);
+
StrBuf->AppendStr(&buf, ")");
stmt = SQL->StmtMalloc(inter->sql_handle);
- if( SQL_SUCCESS != SQL->StmtPrepareStr(stmt, StrBuf->Value(&buf))
+ if (SQL_SUCCESS != SQL->StmtPrepareStr(stmt, StrBuf->Value(&buf))
|| SQL_SUCCESS != SQL->StmtBindParam(stmt, 0, SQLDT_STRING, auction->seller_name, strnlen(auction->seller_name, NAME_LENGTH))
|| SQL_SUCCESS != SQL->StmtBindParam(stmt, 1, SQLDT_STRING, auction->buyer_name, strnlen(auction->buyer_name, NAME_LENGTH))
|| SQL_SUCCESS != SQL->StmtBindParam(stmt, 2, SQLDT_STRING, auction->item_name, strnlen(auction->item_name, ITEM_NAME_LENGTH))
- || SQL_SUCCESS != SQL->StmtExecute(stmt) )
+ || SQL_SUCCESS != SQL->StmtExecute(stmt))
{
SqlStmt_ShowDebug(stmt);
auction->auction_id = 0;
- }
- else
- {
+ } else {
struct auction_data *auction_;
int64 tick = (int64)auction->hours * 3600000;
@@ -144,17 +148,8 @@ unsigned int inter_auction_create(struct auction_data *auction)
return auction->auction_id;
}
-void mapif_auction_message(int char_id, unsigned char result)
+static int inter_auction_end_timer(int tid, int64 tick, int id, intptr_t data)
{
- unsigned char buf[74];
-
- WBUFW(buf,0) = 0x3854;
- WBUFL(buf,2) = char_id;
- WBUFL(buf,6) = result;
- mapif->sendall(buf,7);
-}
-
-static int inter_auction_end_timer(int tid, int64 tick, int id, intptr_t data) {
struct auction_data *auction;
if( (auction = (struct auction_data *)idb_get(inter_auction->db, id)) != NULL )
{
@@ -176,7 +171,7 @@ static int inter_auction_end_timer(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-void inter_auction_delete(struct auction_data *auction)
+static void inter_auction_delete(struct auction_data *auction)
{
unsigned int auction_id;
nullpo_retv(auction);
@@ -192,7 +187,7 @@ void inter_auction_delete(struct auction_data *auction)
idb_remove(inter_auction->db, auction_id);
}
-void inter_auctions_fromsql(void)
+static void inter_auctions_fromsql(void)
{
int i;
struct auction_data *auction;
@@ -204,8 +199,10 @@ void inter_auctions_fromsql(void)
StrBuf->Init(&buf);
StrBuf->AppendStr(&buf, "SELECT `auction_id`,`seller_id`,`seller_name`,`buyer_id`,`buyer_name`,"
"`price`,`buynow`,`hours`,`timestamp`,`nameid`,`item_name`,`type`,`refine`,`attribute`,`unique_id`");
- for( i = 0; i < MAX_SLOTS; i++ )
+ for (i = 0; i < MAX_SLOTS; i++)
StrBuf->Printf(&buf, ",`card%d`", i);
+ for (i = 0; i < MAX_ITEM_OPTIONS; i++)
+ StrBuf->Printf(&buf, ", `opt_idx%d`, `opt_val%d`", i, i);
StrBuf->Printf(&buf, " FROM `%s` ORDER BY `auction_id` DESC", auction_db);
if (SQL_ERROR == SQL->QueryStr(inter->sql_handle, StrBuf->Value(&buf)))
@@ -238,14 +235,20 @@ void inter_auctions_fromsql(void)
item->identify = 1;
item->amount = 1;
item->expire_time = 0;
-
- for( i = 0; i < MAX_SLOTS; i++ )
- {
+ /* Card Slots */
+ for (i = 0; i < MAX_SLOTS; i++) {
SQL->GetData(inter->sql_handle, 15 + i, &data, NULL);
item->card[i] = atoi(data);
}
+ /* Item Options */
+ for (i = 0; i < MAX_ITEM_OPTIONS; i++) {
+ SQL->GetData(inter->sql_handle, 15 + MAX_SLOTS + i * 2, &data, NULL);
+ item->option[i].index = atoi(data);
+ SQL->GetData(inter->sql_handle, 16 + MAX_SLOTS + i * 2, &data, NULL);
+ item->option[i].value = atoi(data);
+ }
- if( auction->timestamp > now )
+ if (auction->timestamp > now)
endtick = ((int64)(auction->timestamp - now) * 1000) + tick;
else
endtick = tick + 10000; // 10 seconds to process ended auctions
@@ -257,235 +260,10 @@ void inter_auctions_fromsql(void)
SQL->FreeResult(inter->sql_handle);
}
-void mapif_auction_sendlist(int fd, int char_id, short count, short pages, unsigned char *buf)
-{
- int len = (sizeof(struct auction_data) * count) + 12;
-
- nullpo_retv(buf);
-
- WFIFOHEAD(fd, len);
- WFIFOW(fd,0) = 0x3850;
- WFIFOW(fd,2) = len;
- WFIFOL(fd,4) = char_id;
- WFIFOW(fd,8) = count;
- WFIFOW(fd,10) = pages;
- memcpy(WFIFOP(fd,12), buf, len - 12);
- WFIFOSET(fd,len);
-}
-
-void mapif_parse_auction_requestlist(int fd)
-{
- char searchtext[NAME_LENGTH];
- int char_id = RFIFOL(fd,4), len = sizeof(struct auction_data);
- int price = RFIFOL(fd,10);
- short type = RFIFOW(fd,8), page = max(1,RFIFOW(fd,14));
- unsigned char buf[5 * sizeof(struct auction_data)];
- struct DBIterator *iter = db_iterator(inter_auction->db);
- struct auction_data *auction;
- short i = 0, j = 0, pages = 1;
-
- memcpy(searchtext, RFIFOP(fd,16), NAME_LENGTH);
-
- for( auction = dbi_first(iter); dbi_exists(iter); auction = dbi_next(iter) )
- {
- if( (type == 0 && auction->type != IT_ARMOR && auction->type != IT_PETARMOR) ||
- (type == 1 && auction->type != IT_WEAPON) ||
- (type == 2 && auction->type != IT_CARD) ||
- (type == 3 && auction->type != IT_ETC) ||
- (type == 4 && !strstr(auction->item_name, searchtext)) ||
- (type == 5 && auction->price > price) ||
- (type == 6 && auction->seller_id != char_id) ||
- (type == 7 && auction->buyer_id != char_id) )
- continue;
-
- i++;
- if( i > 5 )
- { // Counting Pages of Total Results (5 Results per Page)
- pages++;
- i = 1; // First Result of This Page
- }
-
- if( page != pages )
- continue; // This is not the requested Page
-
- memcpy(WBUFP(buf, j * len), auction, len);
- j++; // Found Results
- }
- dbi_destroy(iter);
-
- mapif->auction_sendlist(fd, char_id, j, pages, buf);
-}
-
-void mapif_auction_register(int fd, struct auction_data *auction)
-{
- int len = sizeof(struct auction_data) + 4;
-
- nullpo_retv(auction);
-
- WFIFOHEAD(fd,len);
- WFIFOW(fd,0) = 0x3851;
- WFIFOW(fd,2) = len;
- memcpy(WFIFOP(fd,4), auction, sizeof(struct auction_data));
- WFIFOSET(fd,len);
-}
-
-void mapif_parse_auction_register(int fd)
-{
- struct auction_data auction;
- if( RFIFOW(fd,2) != sizeof(struct auction_data) + 4 )
- return;
-
- memcpy(&auction, RFIFOP(fd,4), sizeof(struct auction_data));
- if( inter_auction->count(auction.seller_id, false) < 5 )
- auction.auction_id = inter_auction->create(&auction);
-
- mapif->auction_register(fd, &auction);
-}
-
-void mapif_auction_cancel(int fd, int char_id, unsigned char result)
-{
- WFIFOHEAD(fd,7);
- WFIFOW(fd,0) = 0x3852;
- WFIFOL(fd,2) = char_id;
- WFIFOB(fd,6) = result;
- WFIFOSET(fd,7);
-}
-
-void mapif_parse_auction_cancel(int fd)
-{
- int char_id = RFIFOL(fd,2), auction_id = RFIFOL(fd,6);
- struct auction_data *auction;
-
- if( (auction = (struct auction_data *)idb_get(inter_auction->db, auction_id)) == NULL )
- {
- mapif->auction_cancel(fd, char_id, 1); // Bid Number is Incorrect
- return;
- }
-
- if( auction->seller_id != char_id )
- {
- mapif->auction_cancel(fd, char_id, 2); // You cannot end the auction
- return;
- }
-
- if( auction->buyer_id > 0 )
- {
- mapif->auction_cancel(fd, char_id, 3); // An auction with at least one bidder cannot be canceled
- return;
- }
-
- inter_mail->sendmail(0, "Auction Manager", auction->seller_id, auction->seller_name, "Auction", "Auction canceled.", 0, &auction->item);
- inter_auction->delete_(auction);
-
- mapif->auction_cancel(fd, char_id, 0); // The auction has been canceled
-}
-
-void mapif_auction_close(int fd, int char_id, unsigned char result)
-{
- WFIFOHEAD(fd,7);
- WFIFOW(fd,0) = 0x3853;
- WFIFOL(fd,2) = char_id;
- WFIFOB(fd,6) = result;
- WFIFOSET(fd,7);
-}
-
-void mapif_parse_auction_close(int fd)
-{
- int char_id = RFIFOL(fd,2), auction_id = RFIFOL(fd,6);
- struct auction_data *auction;
-
- if( (auction = (struct auction_data *)idb_get(inter_auction->db, auction_id)) == NULL )
- {
- mapif->auction_close(fd, char_id, 2); // Bid Number is Incorrect
- return;
- }
-
- if( auction->seller_id != char_id )
- {
- mapif->auction_close(fd, char_id, 1); // You cannot end the auction
- return;
- }
-
- if( auction->buyer_id == 0 )
- {
- mapif->auction_close(fd, char_id, 1); // You cannot end the auction
- return;
- }
-
- // Send Money to Seller
- inter_mail->sendmail(0, "Auction Manager", auction->seller_id, auction->seller_name, "Auction", "Auction closed.", auction->price, NULL);
- // Send Item to Buyer
- inter_mail->sendmail(0, "Auction Manager", auction->buyer_id, auction->buyer_name, "Auction", "Auction winner.", 0, &auction->item);
- mapif->auction_message(auction->buyer_id, 6); // You have won the auction
- inter_auction->delete_(auction);
-
- mapif->auction_close(fd, char_id, 0); // You have ended the auction
-}
-
-void mapif_auction_bid(int fd, int char_id, int bid, unsigned char result)
-{
- WFIFOHEAD(fd,11);
- WFIFOW(fd,0) = 0x3855;
- WFIFOL(fd,2) = char_id;
- WFIFOL(fd,6) = bid; // To Return Zeny
- WFIFOB(fd,10) = result;
- WFIFOSET(fd,11);
-}
-
-void mapif_parse_auction_bid(int fd)
-{
- int char_id = RFIFOL(fd,4), bid = RFIFOL(fd,12);
- unsigned int auction_id = RFIFOL(fd,8);
- struct auction_data *auction;
-
- if( (auction = (struct auction_data *)idb_get(inter_auction->db, auction_id)) == NULL || auction->price >= bid || auction->seller_id == char_id )
- {
- mapif->auction_bid(fd, char_id, bid, 0); // You have failed to bid in the auction
- return;
- }
-
- if( inter_auction->count(char_id, true) > 4 && bid < auction->buynow && auction->buyer_id != char_id )
- {
- mapif->auction_bid(fd, char_id, bid, 9); // You cannot place more than 5 bids at a time
- return;
- }
-
- if( auction->buyer_id > 0 )
- { // Send Money back to the previous Buyer
- if( auction->buyer_id != char_id )
- {
- inter_mail->sendmail(0, "Auction Manager", auction->buyer_id, auction->buyer_name, "Auction", "Someone has placed a higher bid.", auction->price, NULL);
- mapif->auction_message(auction->buyer_id, 7); // You have failed to win the auction
- }
- else
- inter_mail->sendmail(0, "Auction Manager", auction->buyer_id, auction->buyer_name, "Auction", "You have placed a higher bid.", auction->price, NULL);
- }
-
- auction->buyer_id = char_id;
- safestrncpy(auction->buyer_name, RFIFOP(fd,16), NAME_LENGTH);
- auction->price = bid;
-
- if( bid >= auction->buynow )
- { // Automatic won the auction
- mapif->auction_bid(fd, char_id, bid - auction->buynow, 1); // You have successfully bid in the auction
-
- inter_mail->sendmail(0, "Auction Manager", auction->buyer_id, auction->buyer_name, "Auction", "You have won the auction.", 0, &auction->item);
- mapif->auction_message(char_id, 6); // You have won the auction
- inter_mail->sendmail(0, "Auction Manager", auction->seller_id, auction->seller_name, "Auction", "Payment for your auction!.", auction->buynow, NULL);
-
- inter_auction->delete_(auction);
- return;
- }
-
- inter_auction->save(auction);
-
- mapif->auction_bid(fd, char_id, 0, 1); // You have successfully bid in the auction
-}
-
/*==========================================
* Packets From Map Server
*------------------------------------------*/
-int inter_auction_parse_frommap(int fd)
+static int inter_auction_parse_frommap(int fd)
{
switch(RFIFOW(fd,0))
{
@@ -500,7 +278,7 @@ int inter_auction_parse_frommap(int fd)
return 1;
}
-int inter_auction_sql_init(void)
+static int inter_auction_sql_init(void)
{
inter_auction->db = idb_alloc(DB_OPT_RELEASE_DATA);
inter_auction->fromsql();
@@ -508,7 +286,7 @@ int inter_auction_sql_init(void)
return 0;
}
-void inter_auction_sql_final(void)
+static void inter_auction_sql_final(void)
{
inter_auction->db->destroy(inter_auction->db,NULL);
diff --git a/src/char/int_auction.h b/src/char/int_auction.h
index 9f0ccbd09..720efe22a 100644
--- a/src/char/int_auction.h
+++ b/src/char/int_auction.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/char/int_clan.c b/src/char/int_clan.c
new file mode 100644
index 000000000..9fb8ad95e
--- /dev/null
+++ b/src/char/int_clan.c
@@ -0,0 +1,155 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2017 Hercules Dev Team
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#define HERCULES_CORE
+
+#include "config/core.h" // DBPATH
+#include "int_clan.h"
+
+#include "char/char.h"
+#include "char/inter.h"
+#include "char/mapif.h"
+#include "common/cbasetypes.h"
+#include "common/memmgr.h"
+#include "common/mmo.h"
+#include "common/nullpo.h"
+#include "common/showmsg.h"
+#include "common/socket.h"
+#include "common/sql.h"
+#include "common/strlib.h"
+#include "common/timer.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+static struct inter_clan_interface inter_clan_s;
+struct inter_clan_interface *inter_clan;
+
+/**
+ * Kick offline members of a clan
+ *
+ * Perform the update on the DB to reset clan id to 0
+ * of the members that are inactive for too long
+ *
+ * @param clan_id Id of the clan
+ * @param kick_interval Time needed to consider a player inactive and kick it
+ * @return 0 on failure, 1 on success
+ */
+static int inter_clan_kick_inactive_members(int clan_id, int kick_interval)
+{
+ if (clan_id <= 0) {
+ ShowError("inter_clan_kick_inactive_members: Invalid clan id received '%d'\n", clan_id);
+ Assert_report(clan_id > 0);
+ return 0;
+ } else if (kick_interval <= 0) {
+ ShowError("inter_clan_kick_inactive_members: Invalid kick_interval received '%d'", kick_interval);
+ Assert_report(kick_interval > 0);
+ return 0;
+ }
+
+ // Kick Inactive members
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET "
+ "`clan_id` = 0 WHERE `clan_id` = '%d' AND `online` = 0 AND `last_login` < %"PRId64,
+ char_db, clan_id, (int64)(time(NULL) - kick_interval)))
+ {
+ Sql_ShowDebug(inter->sql_handle);
+ return 0;
+ }
+
+ return 1;
+}
+
+/**
+ * Count members of a clan
+ *
+ * @param clan_id Id of the clan
+ * @param kick_interval Time needed to consider a player inactive and ignore it on the count
+ */
+static int inter_clan_count_members(int clan_id, int kick_interval)
+{
+ struct SqlStmt *stmt;
+ int count = 0;
+
+ if (clan_id <= 0) {
+ ShowError("inter_clan_count_members: Invalid clan id received '%d'\n", clan_id);
+ Assert_report(clan_id > 0);
+ return 0;
+ } else if (kick_interval <= 0) {
+ ShowError("inter_clan_count_member: Invalid kick_interval received '%d'", kick_interval);
+ Assert_report(kick_interval > 0);
+ return 0;
+ }
+
+ stmt = SQL->StmtMalloc(inter->sql_handle);
+ if (stmt == NULL) {
+ SqlStmt_ShowDebug(stmt);
+ return 0;
+ }
+
+ // Count members
+ if (SQL_ERROR == SQL->StmtPrepare(stmt, "SELECT COUNT(*) FROM `%s` WHERE `clan_id` = ? AND `last_login` >= %"PRId64, char_db, (int64)(time(NULL) - kick_interval))
+ || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_INT, &clan_id, sizeof(clan_id))
+ || SQL_ERROR == SQL->StmtExecute(stmt)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 0, SQLDT_INT, &count, sizeof(count), NULL, NULL)
+ ) {
+ SqlStmt_ShowDebug(stmt);
+ SQL->StmtFree(stmt);
+ return 0;
+ }
+
+ if (SQL->StmtNumRows(stmt) > 0 && SQL_SUCCESS != SQL->StmtNextRow(stmt)) {
+ SqlStmt_ShowDebug(stmt);
+ SQL->StmtFree(stmt);
+ return 0;
+ }
+
+ SQL->StmtFree(stmt);
+ return count;
+}
+
+// Communication from the map server
+// - Can analyzed only one by one packet
+// Data packet length that you set to inter.c
+//- Shouldn't do checking and packet length, RFIFOSKIP is done by the caller
+// Must Return
+// 1 : ok
+// 0 : error
+static int inter_clan_parse_frommap(int fd)
+{
+ RFIFOHEAD(fd);
+
+ switch(RFIFOW(fd, 0)) {
+ case 0x3044: mapif->parse_ClanMemberCount(fd, RFIFOL(fd, 2), RFIFOL(fd, 6)); break;
+ case 0x3045: mapif->parse_ClanMemberKick(fd, RFIFOL(fd, 2), RFIFOL(fd, 6)); break;
+
+ default:
+ return 0;
+ }
+
+ return 1;
+}
+
+void inter_clan_defaults(void)
+{
+ inter_clan = &inter_clan_s;
+
+ inter_clan->kick_inactive_members = inter_clan_kick_inactive_members;
+ inter_clan->count_members = inter_clan_count_members;
+ inter_clan->parse_frommap = inter_clan_parse_frommap;
+}
diff --git a/src/char/int_clan.h b/src/char/int_clan.h
new file mode 100644
index 000000000..e7b44ecd3
--- /dev/null
+++ b/src/char/int_clan.h
@@ -0,0 +1,39 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2017 Hercules Dev Team
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef CHAR_INT_CLAN_H
+#define CHAR_INT_CLAN_H
+
+#include "common/mmo.h"
+
+/**
+ * inter clan Interface
+ **/
+struct inter_clan_interface {
+ int (*kick_inactive_members) (int clan_id, int kick_interval);
+ int (*count_members) (int clan_id, int kick_interval);
+ int (*parse_frommap) (int fd);
+};
+
+#ifdef HERCULES_CORE
+void inter_clan_defaults(void);
+#endif // HERCULES_CORE
+
+HPShared struct inter_clan_interface *inter_clan;
+#endif /* CHAR_INT_CLAN_H */
diff --git a/src/char/int_elemental.c b/src/char/int_elemental.c
index aed25febd..175007b66 100644
--- a/src/char/int_elemental.c
+++ b/src/char/int_elemental.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -37,7 +37,7 @@
#include <stdio.h>
#include <stdlib.h>
-struct inter_elemental_interface inter_elemental_s;
+static struct inter_elemental_interface inter_elemental_s;
struct inter_elemental_interface *inter_elemental;
/**
@@ -50,7 +50,7 @@ struct inter_elemental_interface *inter_elemental;
* @param[in,out] ele The new elemental's data.
* @retval false in case of errors.
*/
-bool mapif_elemental_create(struct s_elemental *ele)
+static bool inter_elemental_create(struct s_elemental *ele)
{
nullpo_retr(false, ele);
Assert_retr(false, ele->elemental_id == 0);
@@ -73,7 +73,7 @@ bool mapif_elemental_create(struct s_elemental *ele)
* @param ele The elemental's data.
* @retval false in case of errors.
*/
-bool mapif_elemental_save(const struct s_elemental *ele)
+static bool inter_elemental_save(const struct s_elemental *ele)
{
nullpo_retr(false, ele);
Assert_retr(false, ele->elemental_id > 0);
@@ -90,7 +90,8 @@ bool mapif_elemental_save(const struct s_elemental *ele)
return true;
}
-bool mapif_elemental_load(int ele_id, int char_id, struct s_elemental *ele) {
+static bool inter_elemental_load(int ele_id, int char_id, struct s_elemental *ele)
+{
char* data;
nullpo_retr(false, ele);
@@ -134,7 +135,8 @@ bool mapif_elemental_load(int ele_id, int char_id, struct s_elemental *ele) {
return true;
}
-bool mapif_elemental_delete(int ele_id) {
+static bool inter_elemental_delete(int ele_id)
+{
if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `ele_id` = '%d'", elemental_db, ele_id) ) {
Sql_ShowDebug(inter->sql_handle);
return false;
@@ -143,72 +145,21 @@ bool mapif_elemental_delete(int ele_id) {
return true;
}
-void mapif_elemental_send(int fd, struct s_elemental *ele, unsigned char flag) {
- int size = sizeof(struct s_elemental) + 5;
-
- nullpo_retv(ele);
- WFIFOHEAD(fd,size);
- WFIFOW(fd,0) = 0x387c;
- WFIFOW(fd,2) = size;
- WFIFOB(fd,4) = flag;
- memcpy(WFIFOP(fd,5),ele,sizeof(struct s_elemental));
- WFIFOSET(fd,size);
-}
-
-void mapif_parse_elemental_create(int fd, const struct s_elemental *ele)
+static void inter_elemental_sql_init(void)
{
- struct s_elemental ele_;
- bool result;
-
- memcpy(&ele_, ele, sizeof(ele_));
-
- result = mapif->elemental_create(&ele_);
- mapif->elemental_send(fd, &ele_, result);
-}
-
-void mapif_parse_elemental_load(int fd, int ele_id, int char_id) {
- struct s_elemental ele;
- bool result = mapif->elemental_load(ele_id, char_id, &ele);
- mapif->elemental_send(fd, &ele, result);
-}
-
-void mapif_elemental_deleted(int fd, unsigned char flag) {
- WFIFOHEAD(fd,3);
- WFIFOW(fd,0) = 0x387d;
- WFIFOB(fd,2) = flag;
- WFIFOSET(fd,3);
-}
-
-void mapif_parse_elemental_delete(int fd, int ele_id) {
- bool result = mapif->elemental_delete(ele_id);
- mapif->elemental_deleted(fd, result);
-}
-
-void mapif_elemental_saved(int fd, unsigned char flag) {
- WFIFOHEAD(fd,3);
- WFIFOW(fd,0) = 0x387e;
- WFIFOB(fd,2) = flag;
- WFIFOSET(fd,3);
-}
-
-void mapif_parse_elemental_save(int fd, const struct s_elemental *ele)
-{
- bool result = mapif->elemental_save(ele);
- mapif->elemental_saved(fd, result);
-}
-
-void inter_elemental_sql_init(void) {
return;
}
-void inter_elemental_sql_final(void) {
+static void inter_elemental_sql_final(void)
+{
return;
}
/*==========================================
* Inter Packets
*------------------------------------------*/
-int inter_elemental_parse_frommap(int fd) {
+static int inter_elemental_parse_frommap(int fd)
+{
unsigned short cmd = RFIFOW(fd,0);
switch (cmd) {
@@ -229,4 +180,9 @@ void inter_elemental_defaults(void)
inter_elemental->sql_init = inter_elemental_sql_init;
inter_elemental->sql_final = inter_elemental_sql_final;
inter_elemental->parse_frommap = inter_elemental_parse_frommap;
+
+ inter_elemental->create = inter_elemental_create;
+ inter_elemental->save = inter_elemental_save;
+ inter_elemental->load = inter_elemental_load;
+ inter_elemental->delete = inter_elemental_delete;
}
diff --git a/src/char/int_elemental.h b/src/char/int_elemental.h
index 8a046b0f8..3172dcacf 100644
--- a/src/char/int_elemental.h
+++ b/src/char/int_elemental.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -22,6 +22,7 @@
#define CHAR_INT_ELEMENTAL_H
#include "common/hercules.h"
+#include "common/mmo.h"
/**
* inter_elemental_interface interface
@@ -30,6 +31,11 @@ struct inter_elemental_interface {
void (*sql_init) (void);
void (*sql_final) (void);
int (*parse_frommap) (int fd);
+
+ bool (*create) (struct s_elemental *ele);
+ bool (*save) (const struct s_elemental *ele);
+ bool (*load) (int ele_id, int char_id, struct s_elemental *ele);
+ bool (*delete) (int ele_id);
};
#ifdef HERCULES_CORE
diff --git a/src/char/int_guild.c b/src/char/int_guild.c
index b4b4bdde4..56e1c1ba3 100644
--- a/src/char/int_guild.c
+++ b/src/char/int_guild.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -51,12 +51,13 @@
#define GUILD_ALLIANCE_TYPE_MASK 0x01
#define GUILD_ALLIANCE_REMOVE 0x08
-struct inter_guild_interface inter_guild_s;
+static struct inter_guild_interface inter_guild_s;
struct inter_guild_interface *inter_guild;
static const char dataToHex[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
-int inter_guild_save_timer(int tid, int64 tick, int id, intptr_t data) {
+static int inter_guild_save_timer(int tid, int64 tick, int id, intptr_t data)
+{
static int last_id = 0; //To know in which guild we were.
int state = 0; //0: Have not reached last guild. 1: Reached last guild, ready for save. 2: Some guild saved, don't do further saving.
struct DBIterator *iter = db_iterator(inter_guild->guild_db);
@@ -101,7 +102,7 @@ int inter_guild_save_timer(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-int inter_guild_removemember_tosql(int account_id, int char_id)
+static int inter_guild_removemember_tosql(int account_id, int char_id)
{
if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE from `%s` where `account_id` = '%d' and `char_id` = '%d'", guild_member_db, account_id, char_id) )
Sql_ShowDebug(inter->sql_handle);
@@ -111,7 +112,7 @@ int inter_guild_removemember_tosql(int account_id, int char_id)
}
// Save guild into sql
-int inter_guild_tosql(struct guild *g,int flag)
+static int inter_guild_tosql(struct guild *g, int flag)
{
// Table guild (GS_BASIC_MASK)
// GS_EMBLEM `emblem_len`,`emblem_id`,`emblem_data`
@@ -138,7 +139,7 @@ int inter_guild_tosql(struct guild *g,int flag)
if (g->guild_id<=0 && g->guild_id != -1) return 0;
#ifdef NOISY
- ShowInfo("Save guild request ("CL_BOLD"%d"CL_RESET" - flag 0x%x).",g->guild_id, flag);
+ ShowInfo("Save guild request ("CL_BOLD"%d"CL_RESET" - flag 0x%x).\n",g->guild_id, flag);
#endif
SQL->EscapeStringLen(inter->sql_handle, esc_name, g->name, strnlen(g->name, NAME_LENGTH));
@@ -343,7 +344,7 @@ int inter_guild_tosql(struct guild *g,int flag)
}
// Read guild from sql
-struct guild * inter_guild_fromsql(int guild_id)
+static struct guild *inter_guild_fromsql(int guild_id)
{
struct guild *g;
char* data;
@@ -417,8 +418,8 @@ struct guild * inter_guild_fromsql(int guild_id)
}
// load guild member info
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `account_id`,`char_id`,`hair`,`hair_color`,`gender`,`class`,`lv`,`exp`,`exp_payper`,`online`,`position`,`name` "
- "FROM `%s` WHERE `guild_id`='%d' ORDER BY `position`", guild_member_db, guild_id) )
+ if( SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT g.`account_id`,g.`char_id`,g.`hair`,g.`hair_color`,g.`gender`,g.`class`,g.`lv`,g.`exp`,g.`exp_payper`,g.`online`,g.`position`,g.`name`,c.`last_login`"
+ "FROM `%s` g LEFT JOIN `%s` c ON c.`char_id` = g.`char_id` WHERE g.`guild_id`='%d' ORDER BY `position`", guild_member_db, char_db, guild_id) )
{
Sql_ShowDebug(inter->sql_handle);
aFree(g);
@@ -442,6 +443,9 @@ struct guild * inter_guild_fromsql(int guild_id)
if( m->position >= MAX_GUILDPOSITION ) // Fix reduction of MAX_GUILDPOSITION [PoW]
m->position = MAX_GUILDPOSITION - 1;
SQL->GetData(inter->sql_handle, 11, &data, &len); memcpy(m->name, data, min(len, NAME_LENGTH));
+ SQL->GetData(inter->sql_handle, 12, &data, NULL);
+ if (data != NULL)
+ m->last_login = atoi(data);
m->modified = GS_MEMBER_UNMODIFIED;
}
@@ -532,7 +536,7 @@ struct guild * inter_guild_fromsql(int guild_id)
}
// `guild_castle` (`castle_id`, `guild_id`, `economy`, `defense`, `triggerE`, `triggerD`, `nextTime`, `payTime`, `createTime`, `visibleC`, `visibleG0`, `visibleG1`, `visibleG2`, `visibleG3`, `visibleG4`, `visibleG5`, `visibleG6`, `visibleG7`)
-int inter_guild_castle_tosql(struct guild_castle *gc)
+static int inter_guild_castle_tosql(struct guild_castle *gc)
{
StringBuf buf;
int i;
@@ -556,7 +560,7 @@ int inter_guild_castle_tosql(struct guild_castle *gc)
}
// Read guild_castle from SQL
-struct guild_castle* inter_guild_castle_fromsql(int castle_id)
+static struct guild_castle *inter_guild_castle_fromsql(int castle_id)
{
char *data;
int i;
@@ -608,7 +612,8 @@ struct guild_castle* inter_guild_castle_fromsql(int castle_id)
// Read exp_guild.txt
-bool inter_guild_exp_parse_row(char* split[], int column, int current) {
+static bool inter_guild_exp_parse_row(char *split[], int column, int current)
+{
int64 exp = strtoll(split[0], NULL, 10);
nullpo_retr(true, split);
@@ -622,7 +627,8 @@ bool inter_guild_exp_parse_row(char* split[], int column, int current) {
}
-int inter_guild_CharOnline(int char_id, int guild_id) {
+static int inter_guild_CharOnline(int char_id, int guild_id)
+{
struct guild *g;
int i;
@@ -671,7 +677,7 @@ int inter_guild_CharOnline(int char_id, int guild_id) {
return 1;
}
-int inter_guild_CharOffline(int char_id, int guild_id)
+static int inter_guild_CharOffline(int char_id, int guild_id)
{
struct guild *g=NULL;
int online_count, i;
@@ -727,7 +733,7 @@ int inter_guild_CharOffline(int char_id, int guild_id)
}
// Initialize guild sql
-int inter_guild_sql_init(void)
+static int inter_guild_sql_init(void)
{
//Initialize the guild cache
inter_guild->guild_db= idb_alloc(DB_OPT_RELEASE_DATA);
@@ -744,7 +750,7 @@ int inter_guild_sql_init(void)
/**
* @see DBApply
*/
-int inter_guild_db_final(union DBKey key, struct DBData *data, va_list ap)
+static int inter_guild_db_final(union DBKey key, struct DBData *data, va_list ap)
{
struct guild *g = DB->data2ptr(data);
nullpo_ret(g);
@@ -755,7 +761,7 @@ int inter_guild_db_final(union DBKey key, struct DBData *data, va_list ap)
return 0;
}
-void inter_guild_sql_final(void)
+static void inter_guild_sql_final(void)
{
inter_guild->guild_db->destroy(inter_guild->guild_db, inter_guild->db_final);
db_destroy(inter_guild->castle_db);
@@ -763,7 +769,7 @@ void inter_guild_sql_final(void)
}
// Get guild_id by its name. Returns 0 if not found, -1 on error.
-int inter_guild_search_guildname(const char *str)
+static int inter_guild_search_guildname(const char *str)
{
int guild_id;
char esc_name[NAME_LENGTH*2+1];
@@ -806,7 +812,8 @@ static bool inter_guild_check_empty(struct guild *g)
return true;
}
-unsigned int inter_guild_nextexp(int level) {
+static unsigned int inter_guild_nextexp(int level)
+{
if (level == 0)
return 1;
if (level <= 0 || level > MAX_GUILDLEVEL)
@@ -815,7 +822,7 @@ unsigned int inter_guild_nextexp(int level) {
return inter_guild->exp[level-1];
}
-int inter_guild_checkskill(struct guild *g, int id)
+static int inter_guild_checkskill(struct guild *g, int id)
{
int idx = id - GD_SKILLBASE;
@@ -826,7 +833,7 @@ int inter_guild_checkskill(struct guild *g, int id)
return g->skill[idx].lv;
}
-int inter_guild_calcinfo(struct guild *g)
+static int inter_guild_calcinfo(struct guild *g)
{
int i,c;
unsigned int nextexp;
@@ -890,276 +897,7 @@ int inter_guild_calcinfo(struct guild *g)
return 0;
}
-//-------------------------------------------------------------------
-// Packet sent to map server
-
-int mapif_guild_created(int fd, int account_id, struct guild *g)
-{
- WFIFOHEAD(fd, 10);
- WFIFOW(fd,0)=0x3830;
- WFIFOL(fd,2)=account_id;
- if(g != NULL)
- {
- WFIFOL(fd,6)=g->guild_id;
- ShowInfo("int_guild: Guild created (%d - %s)\n",g->guild_id,g->name);
- } else
- WFIFOL(fd,6)=0;
-
- WFIFOSET(fd,10);
- return 0;
-}
-
-// Guild not found
-int mapif_guild_noinfo(int fd, int guild_id)
-{
- unsigned char buf[12];
- WBUFW(buf,0)=0x3831;
- WBUFW(buf,2)=8;
- WBUFL(buf,4)=guild_id;
- ShowWarning("int_guild: info not found %d\n",guild_id);
- if(fd<0)
- mapif->sendall(buf,8);
- else
- mapif->send(fd,buf,8);
- return 0;
-}
-
-// Send guild info
-int mapif_guild_info(int fd, struct guild *g)
-{
- unsigned char buf[8+sizeof(struct guild)];
- nullpo_ret(g);
- WBUFW(buf,0)=0x3831;
- WBUFW(buf,2)=4+sizeof(struct guild);
- memcpy(buf+4,g,sizeof(struct guild));
- if(fd<0)
- mapif->sendall(buf,WBUFW(buf,2));
- else
- mapif->send(fd,buf,WBUFW(buf,2));
- return 0;
-}
-
-// ACK member add
-int mapif_guild_memberadded(int fd, int guild_id, int account_id, int char_id, int flag)
-{
- WFIFOHEAD(fd, 15);
- WFIFOW(fd,0)=0x3832;
- WFIFOL(fd,2)=guild_id;
- WFIFOL(fd,6)=account_id;
- WFIFOL(fd,10)=char_id;
- WFIFOB(fd,14)=flag;
- WFIFOSET(fd,15);
- return 0;
-}
-
-// ACK member leave
-int mapif_guild_withdraw(int guild_id,int account_id,int char_id,int flag, const char *name, const char *mes)
-{
- unsigned char buf[55+NAME_LENGTH];
-
- nullpo_ret(name);
- nullpo_ret(mes);
-
- WBUFW(buf, 0)=0x3834;
- WBUFL(buf, 2)=guild_id;
- WBUFL(buf, 6)=account_id;
- WBUFL(buf,10)=char_id;
- WBUFB(buf,14)=flag;
- memcpy(WBUFP(buf,15),mes,40);
- memcpy(WBUFP(buf,55),name,NAME_LENGTH);
- mapif->sendall(buf,55+NAME_LENGTH);
- ShowInfo("int_guild: guild withdraw (%d - %d: %s - %s)\n",guild_id,account_id,name,mes);
- return 0;
-}
-
-// Send short member's info
-int mapif_guild_memberinfoshort(struct guild *g, int idx)
-{
- unsigned char buf[19];
- nullpo_ret(g);
- Assert_ret(idx >= 0 && idx < MAX_GUILD);
- WBUFW(buf, 0)=0x3835;
- WBUFL(buf, 2)=g->guild_id;
- WBUFL(buf, 6)=g->member[idx].account_id;
- WBUFL(buf,10)=g->member[idx].char_id;
- WBUFB(buf,14)=(unsigned char)g->member[idx].online;
- WBUFW(buf,15)=g->member[idx].lv;
- WBUFW(buf,17)=g->member[idx].class;
- mapif->sendall(buf,19);
- return 0;
-}
-
-// Send guild broken
-int mapif_guild_broken(int guild_id, int flag)
-{
- unsigned char buf[7];
- WBUFW(buf,0)=0x3836;
- WBUFL(buf,2)=guild_id;
- WBUFB(buf,6)=flag;
- mapif->sendall(buf,7);
- ShowInfo("int_guild: Guild broken (%d)\n",guild_id);
- return 0;
-}
-
-// Send guild message
-int mapif_guild_message(int guild_id, int account_id, const char *mes, int len, int sfd)
-{
- unsigned char buf[512];
- nullpo_ret(mes);
- if (len > 500)
- len = 500;
- WBUFW(buf,0)=0x3837;
- WBUFW(buf,2)=len+12;
- WBUFL(buf,4)=guild_id;
- WBUFL(buf,8)=account_id;
- memcpy(WBUFP(buf,12),mes,len);
- mapif->sendallwos(sfd, buf,len+12);
- return 0;
-}
-
-// Send basic info
-int mapif_guild_basicinfochanged(int guild_id, int type, const void *data, int len)
-{
- unsigned char buf[2048];
- nullpo_ret(data);
- if (len > 2038)
- len = 2038;
- WBUFW(buf, 0)=0x3839;
- WBUFW(buf, 2)=len+10;
- WBUFL(buf, 4)=guild_id;
- WBUFW(buf, 8)=type;
- memcpy(WBUFP(buf,10),data,len);
- mapif->sendall(buf,len+10);
- return 0;
-}
-
-// Send member info
-int mapif_guild_memberinfochanged(int guild_id, int account_id, int char_id, int type, const void *data, int len)
-{
- unsigned char buf[2048];
- nullpo_ret(data);
- if (len > 2030)
- len = 2030;
- WBUFW(buf, 0)=0x383a;
- WBUFW(buf, 2)=len+18;
- WBUFL(buf, 4)=guild_id;
- WBUFL(buf, 8)=account_id;
- WBUFL(buf,12)=char_id;
- WBUFW(buf,16)=type;
- memcpy(WBUFP(buf,18),data,len);
- mapif->sendall(buf,len+18);
- return 0;
-}
-
-// ACK guild skill up
-int mapif_guild_skillupack(int guild_id, uint16 skill_id, int account_id)
-{
- unsigned char buf[14];
- WBUFW(buf, 0)=0x383c;
- WBUFL(buf, 2)=guild_id;
- WBUFL(buf, 6)=skill_id;
- WBUFL(buf,10)=account_id;
- mapif->sendall(buf,14);
- return 0;
-}
-
-// ACK guild alliance
-int mapif_guild_alliance(int guild_id1, int guild_id2, int account_id1, int account_id2, int flag, const char *name1, const char *name2)
-{
- unsigned char buf[19+2*NAME_LENGTH];
- nullpo_ret(name1);
- nullpo_ret(name2);
- WBUFW(buf, 0)=0x383d;
- WBUFL(buf, 2)=guild_id1;
- WBUFL(buf, 6)=guild_id2;
- WBUFL(buf,10)=account_id1;
- WBUFL(buf,14)=account_id2;
- WBUFB(buf,18)=flag;
- memcpy(WBUFP(buf,19),name1,NAME_LENGTH);
- memcpy(WBUFP(buf,19+NAME_LENGTH),name2,NAME_LENGTH);
- mapif->sendall(buf,19+2*NAME_LENGTH);
- return 0;
-}
-
-// Send a guild position desc
-int mapif_guild_position(struct guild *g, int idx)
-{
- unsigned char buf[12 + sizeof(struct guild_position)];
- nullpo_ret(g);
- Assert_ret(idx >= 0 && idx < MAX_GUILDPOSITION);
- WBUFW(buf,0)=0x383b;
- WBUFW(buf,2)=sizeof(struct guild_position)+12;
- WBUFL(buf,4)=g->guild_id;
- WBUFL(buf,8)=idx;
- memcpy(WBUFP(buf,12),&g->position[idx],sizeof(struct guild_position));
- mapif->sendall(buf,WBUFW(buf,2));
- return 0;
-}
-
-// Send the guild notice
-int mapif_guild_notice(struct guild *g)
-{
- unsigned char buf[256];
- nullpo_ret(g);
- WBUFW(buf,0)=0x383e;
- WBUFL(buf,2)=g->guild_id;
- memcpy(WBUFP(buf,6),g->mes1,MAX_GUILDMES1);
- memcpy(WBUFP(buf,66),g->mes2,MAX_GUILDMES2);
- mapif->sendall(buf,186);
- return 0;
-}
-
-// Send emblem data
-int mapif_guild_emblem(struct guild *g)
-{
- unsigned char buf[12 + sizeof(g->emblem_data)];
- nullpo_ret(g);
- WBUFW(buf,0)=0x383f;
- WBUFW(buf,2)=g->emblem_len+12;
- WBUFL(buf,4)=g->guild_id;
- WBUFL(buf,8)=g->emblem_id;
- memcpy(WBUFP(buf,12),g->emblem_data,g->emblem_len);
- mapif->sendall(buf,WBUFW(buf,2));
- return 0;
-}
-
-int mapif_guild_master_changed(struct guild *g, int aid, int cid)
-{
- unsigned char buf[14];
- nullpo_ret(g);
- WBUFW(buf,0)=0x3843;
- WBUFL(buf,2)=g->guild_id;
- WBUFL(buf,6)=aid;
- WBUFL(buf,10)=cid;
- mapif->sendall(buf,14);
- return 0;
-}
-
-int mapif_guild_castle_dataload(int fd, int sz, const int *castle_ids)
-{
- struct guild_castle *gc = NULL;
- int num = (sz - 4) / sizeof(int);
- int len = 4 + num * sizeof(*gc);
- int i;
-
- nullpo_ret(castle_ids);
- WFIFOHEAD(fd, len);
- WFIFOW(fd, 0) = 0x3840;
- WFIFOW(fd, 2) = len;
- for (i = 0; i < num; i++) {
- gc = inter_guild->castle_fromsql(*(castle_ids++));
- memcpy(WFIFOP(fd, 4 + i * sizeof(*gc)), gc, sizeof(*gc));
- }
- WFIFOSET(fd, len);
- return 0;
-}
-
-//-------------------------------------------------------------------
-// Packet received from map server
-
-
-// Guild creation request
-int mapif_parse_CreateGuild(int fd, int account_id, const char *name, const struct guild_member *master)
+static struct guild *inter_guild_create(const char *name, const struct guild_member *master)
{
struct guild *g;
int i=0;
@@ -1170,21 +908,18 @@ int mapif_parse_CreateGuild(int fd, int account_id, const char *name, const stru
nullpo_ret(master);
if(inter_guild->search_guildname(name) != 0){
ShowInfo("int_guild: guild with same name exists [%s]\n",name);
- mapif->guild_created(fd,account_id,NULL);
- return 0;
+ return NULL;
}
// Check Authorized letters/symbols in the name of the character
if (char_name_option == 1) { // only letters/symbols in char_name_letters are authorized
for (i = 0; i < NAME_LENGTH && name[i]; i++)
if (strchr(char_name_letters, name[i]) == NULL) {
- mapif->guild_created(fd,account_id,NULL);
- return 0;
+ return NULL;
}
} else if (char_name_option == 2) { // letters/symbols in char_name_letters are forbidden
for (i = 0; i < NAME_LENGTH && name[i]; i++)
if (strchr(char_name_letters, name[i]) != NULL) {
- mapif->guild_created(fd,account_id,NULL);
- return 0;
+ return NULL;
}
}
@@ -1220,108 +955,84 @@ int mapif_parse_CreateGuild(int fd, int account_id, const char *name, const stru
if (!inter_guild->tosql(g,GS_BASIC|GS_POSITION|GS_SKILL|GS_MEMBER)) {
//Failed to Create guild....
ShowError("Failed to create Guild %s (Guild Master: %s)\n", g->name, g->master);
- mapif->guild_created(fd,account_id,NULL);
aFree(g);
- return 0;
+ return NULL;
}
ShowInfo("Created Guild %d - %s (Guild Master: %s)\n", g->guild_id, g->name, g->master);
//Add to cache
idb_put(inter_guild->guild_db, g->guild_id, g);
- // Report to client
- mapif->guild_created(fd,account_id,g);
- mapif->guild_info(fd,g);
-
if (inter->enable_logs)
inter->log("guild %s (id=%d) created by master %s (id=%d)\n",
name, g->guild_id, master->name, master->account_id);
- return 0;
-}
-
-// Return guild info to client
-int mapif_parse_GuildInfo(int fd, int guild_id)
-{
- struct guild * g = inter_guild->fromsql(guild_id); //We use this because on start-up the info of castle-owned guilds is required. [Skotlex]
- if(g)
- {
- if (!inter_guild->calcinfo(g))
- mapif->guild_info(fd,g);
- }
- else
- mapif->guild_noinfo(fd,guild_id); // Failed to load info
- return 0;
+ return g;
}
// Add member to guild
-int mapif_parse_GuildAddMember(int fd, int guild_id, const struct guild_member *m)
+static bool inter_guild_add_member(int guild_id, const struct guild_member *member, int map_fd)
{
struct guild * g;
int i;
+ nullpo_ret(member);
- nullpo_ret(m);
g = inter_guild->fromsql(guild_id);
- if(g==NULL){
- mapif->guild_memberadded(fd,guild_id,m->account_id,m->char_id,1); // 1: Failed to add
- return 0;
+ if (g == NULL) {
+ mapif->guild_memberadded(map_fd, guild_id, member->account_id, member->char_id, 1); // 1: Failed to add
+ return false;
}
// Find an empty slot
- for(i=0;i<g->max_member;i++)
- {
- if(g->member[i].account_id==0)
- {
- memcpy(&g->member[i],m,sizeof(struct guild_member));
+ for (i = 0; i < g->max_member; i++) {
+ if (g->member[i].account_id == 0) {
+ g->member[i] = *member;
g->member[i].modified = (GS_MEMBER_NEW | GS_MEMBER_MODIFIED);
- mapif->guild_memberadded(fd,guild_id,m->account_id,m->char_id,0); // 0: success
+ mapif->guild_memberadded(map_fd, guild_id, member->account_id, member->char_id, 0); // 0: success
if (!inter_guild->calcinfo(g)) //Send members if it was not invoked.
- mapif->guild_info(-1,g);
+ mapif->guild_info(-1, g);
g->save_flag |= GS_MEMBER;
if (g->save_flag&GS_REMOVE)
g->save_flag&=~GS_REMOVE;
- return 0;
+ return true;
}
}
- mapif->guild_memberadded(fd,guild_id,m->account_id,m->char_id,1); // 1: Failed to add
- return 0;
+ mapif->guild_memberadded(map_fd, guild_id, member->account_id, member->char_id, 1); // 1: Failed to add
+ return false;
}
// Delete member from guild
-int mapif_parse_GuildLeave(int fd, int guild_id, int account_id, int char_id, int flag, const char *mes)
+static bool inter_guild_leave(int guild_id, int account_id, int char_id, int flag, const char *mes, int map_fd)
{
int i;
- struct guild* g = inter_guild->fromsql(guild_id);
- if( g == NULL )
- {
+ struct guild *g = inter_guild->fromsql(guild_id);
+ if (g == NULL) {
// Unknown guild, just update the player
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `guild_id`='0' WHERE `account_id`='%d' AND `char_id`='%d'", char_db, account_id, char_id) )
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `guild_id`='0' WHERE `account_id`='%d' AND `char_id`='%d'", char_db, account_id, char_id))
Sql_ShowDebug(inter->sql_handle);
// mapif->guild_withdraw(guild_id,account_id,char_id,flag,g->member[i].name,mes);
- return 0;
+ return false;
}
nullpo_ret(mes);
// Find the member
- ARR_FIND( 0, g->max_member, i, g->member[i].account_id == account_id && g->member[i].char_id == char_id );
- if( i == g->max_member )
- {
+ ARR_FIND(0, g->max_member, i, g->member[i].account_id == account_id && g->member[i].char_id == char_id);
+ if (i == g->max_member) {
//TODO
- return 0;
+ return false;
}
if (flag) {
// Write expulsion reason
// Find an empty slot
int j;
- ARR_FIND( 0, MAX_GUILDEXPULSION, j, g->expulsion[j].account_id == 0 );
- if( j == MAX_GUILDEXPULSION )
- {
+ ARR_FIND(0, MAX_GUILDEXPULSION, j, g->expulsion[j].account_id == 0);
+ if (j == MAX_GUILDEXPULSION) {
// Expulsion list is full, flush the oldest one
- for( j = 0; j < MAX_GUILDEXPULSION - 1; j++ )
+ for (j = 0; j < MAX_GUILDEXPULSION - 1; j++)
g->expulsion[j] = g->expulsion[j+1];
j = MAX_GUILDEXPULSION-1;
}
@@ -1336,38 +1047,38 @@ int mapif_parse_GuildLeave(int fd, int guild_id, int account_id, int char_id, in
memset(&g->member[i],0,sizeof(struct guild_member));
- if( inter_guild->check_empty(g) )
- mapif->parse_BreakGuild(-1,guild_id); //Break the guild.
- else {
+ if (inter_guild->check_empty(g)) {
+ inter_guild->disband(guild_id);
+ } else {
//Update member info.
if (!inter_guild->calcinfo(g))
- mapif->guild_info(fd,g);
+ mapif->guild_info(map_fd,g);
g->save_flag |= GS_EXPULSION;
}
- return 0;
+ return true;
}
// Change member info
-int mapif_parse_GuildChangeMemberInfoShort(int fd, int guild_id, int account_id, int char_id, int online, int lv, int16 class)
+static bool inter_guild_update_member_info_short(int guild_id, int account_id, int char_id, int online, int lv, int16 class)
{
// Could speed up by manipulating only guild_member
- struct guild * g;
+ struct guild *g;
int i,sum,c;
int prev_count, prev_alv;
g = inter_guild->fromsql(guild_id);
- if(g==NULL)
- return 0;
+ if (g == NULL)
+ return false;
- ARR_FIND( 0, g->max_member, i, g->member[i].account_id == account_id && g->member[i].char_id == char_id );
- if( i < g->max_member )
- {
+ ARR_FIND(0, g->max_member, i, g->member[i].account_id == account_id && g->member[i].char_id == char_id);
+ if (i < g->max_member) {
g->member[i].online = online;
g->member[i].lv = lv;
g->member[i].class = class;
+ g->member[i].last_login = (uint32)time(NULL);
g->member[i].modified = GS_MEMBER_MODIFIED;
- mapif->guild_memberinfoshort(g,i);
+ mapif->guild_memberinfoshort(g, i);
}
prev_count = g->connect_member;
@@ -1378,99 +1089,90 @@ int mapif_parse_GuildChangeMemberInfoShort(int fd, int guild_id, int account_id,
c = 0;
sum = 0;
- for( i = 0; i < g->max_member; i++ )
- {
- if( g->member[i].account_id > 0 )
- {
+ for (i = 0; i < g->max_member; i++) {
+ if (g->member[i].account_id > 0) {
sum += g->member[i].lv;
c++;
}
- if( g->member[i].online )
+ if (g->member[i].online)
g->connect_member++;
}
- if( c ) // this check should always succeed...
- {
+ if (c != 0) { // this check should always succeed...
g->average_lv = sum / c;
- if( g->connect_member != prev_count || g->average_lv != prev_alv )
+ if (g->connect_member != prev_count || g->average_lv != prev_alv)
g->save_flag |= GS_CONNECT;
- if( g->save_flag & GS_REMOVE )
+ if (g->save_flag & GS_REMOVE)
g->save_flag &= ~GS_REMOVE;
}
g->save_flag |= GS_MEMBER; //Update guild member data
- return 0;
+ return true;
}
// BreakGuild
-int mapif_parse_BreakGuild(int fd, int guild_id)
+static bool inter_guild_disband(int guild_id)
{
- struct guild * g;
-
- g = inter_guild->fromsql(guild_id);
- if(g==NULL)
- return 0;
+ struct guild *g = inter_guild->fromsql(guild_id);
+ if (g == NULL)
+ return false;
// Delete guild from sql
//printf("- Delete guild %d from guild\n",guild_id);
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id` = '%d'", guild_db, guild_id) )
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id` = '%d'", guild_db, guild_id))
Sql_ShowDebug(inter->sql_handle);
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id` = '%d'", guild_member_db, guild_id) )
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id` = '%d'", guild_member_db, guild_id))
Sql_ShowDebug(inter->sql_handle);
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id` = '%d'", guild_castle_db, guild_id) )
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id` = '%d'", guild_castle_db, guild_id))
Sql_ShowDebug(inter->sql_handle);
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id` = '%d'", guild_storage_db, guild_id) )
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id` = '%d'", guild_storage_db, guild_id))
Sql_ShowDebug(inter->sql_handle);
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id` = '%d' OR `alliance_id` = '%d'", guild_alliance_db, guild_id, guild_id) )
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id` = '%d' OR `alliance_id` = '%d'", guild_alliance_db, guild_id, guild_id))
Sql_ShowDebug(inter->sql_handle);
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id` = '%d'", guild_position_db, guild_id) )
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id` = '%d'", guild_position_db, guild_id))
Sql_ShowDebug(inter->sql_handle);
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id` = '%d'", guild_skill_db, guild_id) )
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id` = '%d'", guild_skill_db, guild_id))
Sql_ShowDebug(inter->sql_handle);
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id` = '%d'", guild_expulsion_db, guild_id) )
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id` = '%d'", guild_expulsion_db, guild_id))
Sql_ShowDebug(inter->sql_handle);
//printf("- Update guild %d of char\n",guild_id);
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `guild_id`='0' WHERE `guild_id`='%d'", char_db, guild_id) )
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `guild_id`='0' WHERE `guild_id`='%d'", char_db, guild_id))
Sql_ShowDebug(inter->sql_handle);
- mapif->guild_broken(guild_id,0);
+ mapif->guild_broken(guild_id, 0);
if (inter->enable_logs)
inter->log("guild %s (id=%d) broken\n", g->name, guild_id);
//Remove the guild from memory. [Skotlex]
idb_remove(inter_guild->guild_db, guild_id);
- return 0;
-}
-// Forward Guild message to others map servers
-int mapif_parse_GuildMessage(int fd, int guild_id, int account_id, const char *mes, int len)
-{
- return mapif->guild_message(guild_id,account_id,mes,len, fd);
+ return true;
}
/**
* Changes basic guild information
* The types are available in mmo.h::guild_basic_info
**/
-int mapif_parse_GuildBasicInfoChange(int fd, int guild_id, int type, const void *data, int len) {
+static bool inter_guild_update_basic_info(int guild_id, int type, const void *data, int len)
+{
struct guild *g;
struct guild_skill gd_skill;
short value;
g = inter_guild->fromsql(guild_id);
- if( g == NULL )
- return 0;
+ if (g == NULL)
+ return false;
nullpo_ret(data);
- switch(type) {
+ switch (type) {
case GBI_EXP:
value = *((const int16 *)data);
if( value < 0 && abs(value) > g->exp )
@@ -1506,26 +1208,25 @@ int mapif_parse_GuildBasicInfoChange(int fd, int guild_id, int type, const void
default:
ShowError("int_guild: GuildBasicInfoChange: Unknown type %d, see mmo.h::guild_basic_info for more information\n",type);
- return 0;
+ return false;
}
mapif->guild_info(-1,g);
g->save_flag |= GS_LEVEL;
- // Information is already sent in mapif->guild_info
- //mapif->guild_basicinfochanged(guild_id,type,data,len);
- return 0;
+
+ return true;
}
// Modification of the guild
-int mapif_parse_GuildMemberInfoChange(int fd, int guild_id, int account_id, int char_id, int type, const char *data, int len)
+static bool inter_guild_update_member_info(int guild_id, int account_id, int char_id, int type, const char *data, int len)
{
// Could make some improvement in speed, because only change guild_member
int i;
- struct guild * g;
+ struct guild *g;
nullpo_ret(data);
g = inter_guild->fromsql(guild_id);
if(g==NULL)
- return 0;
+ return false;
// Search the member
for (i = 0; i < g->max_member; i++) {
@@ -1537,7 +1238,7 @@ int mapif_parse_GuildMemberInfoChange(int fd, int guild_id, int account_id, int
if(i==g->max_member){
ShowWarning("int_guild: GuildMemberChange: Not found %d,%d in guild (%d - %s)\n",
account_id,char_id,guild_id,g->name);
- return 0;
+ return false;
}
switch(type)
@@ -1618,17 +1319,18 @@ int mapif_parse_GuildMemberInfoChange(int fd, int guild_id, int account_id, int
}
default:
ShowError("int_guild: GuildMemberInfoChange: Unknown type %d\n",type);
+ return false;
break;
}
- return 0;
+ return true;
}
-int inter_guild_sex_changed(int guild_id, int account_id, int char_id, short gender)
+static int inter_guild_sex_changed(int guild_id, int account_id, int char_id, short gender)
{
- return mapif->parse_GuildMemberInfoChange(0, guild_id, account_id, char_id, GMI_GENDER, (const char*)&gender, sizeof(gender));
+ return inter_guild->update_member_info(guild_id, account_id, char_id, GMI_GENDER, (const char*)&gender, sizeof(gender));
}
-int inter_guild_charname_changed(int guild_id, int account_id, int char_id, char *name)
+static int inter_guild_charname_changed(int guild_id, int account_id, int char_id, char *name)
{
struct guild *g;
int i, flag = 0;
@@ -1666,35 +1368,34 @@ int inter_guild_charname_changed(int guild_id, int account_id, int char_id, char
}
// Change a position desc
-int mapif_parse_GuildPosition(int fd, int guild_id, int idx, const struct guild_position *p)
+static bool inter_guild_update_position(int guild_id, int idx, const struct guild_position *p)
{
// Could make some improvement in speed, because only change guild_position
- struct guild * g;
+ struct guild *g;
nullpo_ret(p);
g = inter_guild->fromsql(guild_id);
if(g==NULL || idx<0 || idx>=MAX_GUILDPOSITION)
- return 0;
+ return false;
memcpy(&g->position[idx],p,sizeof(struct guild_position));
mapif->guild_position(g,idx);
g->position[idx].modified = GS_POSITION_MODIFIED;
g->save_flag |= GS_POSITION; // Change guild_position
- return 0;
+ return true;
}
// Guild Skill UP
-int mapif_parse_GuildSkillUp(int fd, int guild_id, uint16 skill_id, int account_id, int max)
+static bool inter_guild_use_skill_point(int guild_id, uint16 skill_id, int account_id, int max)
{
struct guild * g;
int idx = skill_id - GD_SKILLBASE;
g = inter_guild->fromsql(guild_id);
if(g == NULL || idx < 0 || idx >= MAX_GUILDSKILL)
- return 0;
+ return false;
- if(g->skill_point>0 && g->skill[idx].id>0 && g->skill[idx].lv<max )
- {
+ if (g->skill_point > 0 && g->skill[idx].id > 0 && g->skill[idx].lv < max) {
g->skill[idx].lv++;
g->skill_point--;
if (!inter_guild->calcinfo(g))
@@ -1702,11 +1403,11 @@ int mapif_parse_GuildSkillUp(int fd, int guild_id, uint16 skill_id, int account_
mapif->guild_skillupack(guild_id,skill_id,account_id);
g->save_flag |= (GS_LEVEL|GS_SKILL); // Change guild & guild_skill
}
- return 0;
+ return true;
}
//Manual deletion of an alliance when partnering guild does not exists. [Skotlex]
-int mapif_parse_GuildDeleteAlliance(struct guild *g, int guild_id, int account_id1, int account_id2, int flag)
+static bool inter_guild_remove_alliance(struct guild *g, int guild_id, int account_id1, int account_id2, int flag)
{
int i;
char name[NAME_LENGTH];
@@ -1714,18 +1415,18 @@ int mapif_parse_GuildDeleteAlliance(struct guild *g, int guild_id, int account_i
nullpo_retr(-1, g);
ARR_FIND( 0, MAX_GUILDALLIANCE, i, g->alliance[i].guild_id == guild_id );
if( i == MAX_GUILDALLIANCE )
- return -1;
+ return false;
strcpy(name, g->alliance[i].name);
g->alliance[i].guild_id=0;
mapif->guild_alliance(g->guild_id,guild_id,account_id1,account_id2,flag,g->name,name);
g->save_flag |= GS_ALLIANCE;
- return 0;
+ return true;
}
// Alliance modification
-int mapif_parse_GuildAlliance(int fd, int guild_id1, int guild_id2, int account_id1, int account_id2, int flag)
+static bool inter_guild_change_alliance(int guild_id1, int guild_id2, int account_id1, int account_id2, int flag)
{
// Could speed up
struct guild *g[2] = { NULL };
@@ -1734,10 +1435,10 @@ int mapif_parse_GuildAlliance(int fd, int guild_id1, int guild_id2, int account_
g[1] = inter_guild->fromsql(guild_id2);
if(g[0] && g[1]==NULL && (flag & GUILD_ALLIANCE_REMOVE)) //Requested to remove an alliance with a not found guild.
- return mapif->parse_GuildDeleteAlliance(g[0], guild_id2, account_id1, account_id2, flag); //Try to do a manual removal of said guild.
+ return inter_guild->remove_alliance(g[0], guild_id2, account_id1, account_id2, flag); //Try to do a manual removal of said guild.
if(g[0]==NULL || g[1]==NULL)
- return 0;
+ return false;
if( flag&GUILD_ALLIANCE_REMOVE ) {
// Remove alliance/opposition, in case of alliance, remove on both side
@@ -1766,11 +1467,11 @@ int mapif_parse_GuildAlliance(int fd, int guild_id1, int guild_id2, int account_
// Mark the two guild to be saved
g[0]->save_flag |= GS_ALLIANCE;
g[1]->save_flag |= GS_ALLIANCE;
- return 0;
+ return true;
}
// Change guild message
-int mapif_parse_GuildNotice(int fd, int guild_id, const char *mes1, const char *mes2)
+static bool inter_guild_update_notice(int guild_id, const char *mes1, const char *mes2)
{
struct guild *g;
@@ -1778,22 +1479,23 @@ int mapif_parse_GuildNotice(int fd, int guild_id, const char *mes1, const char *
nullpo_ret(mes2);
g = inter_guild->fromsql(guild_id);
if(g==NULL)
- return 0;
+ return false;
memcpy(g->mes1,mes1,MAX_GUILDMES1);
memcpy(g->mes2,mes2,MAX_GUILDMES2);
g->save_flag |= GS_MES; //Change mes of guild
- return mapif->guild_notice(g);
+ mapif->guild_notice(g);
+ return true;
}
-int mapif_parse_GuildEmblem(int fd, int len, int guild_id, int dummy, const char *data)
+static bool inter_guild_update_emblem(int len, int guild_id, const char *data)
{
struct guild * g;
nullpo_ret(data);
g = inter_guild->fromsql(guild_id);
if(g==NULL)
- return 0;
+ return false;
if (len > sizeof(g->emblem_data))
len = sizeof(g->emblem_data);
@@ -1802,21 +1504,17 @@ int mapif_parse_GuildEmblem(int fd, int len, int guild_id, int dummy, const char
g->emblem_len=len;
g->emblem_id++;
g->save_flag |= GS_EMBLEM; //Change guild
- return mapif->guild_emblem(g);
-}
-
-int mapif_parse_GuildCastleDataLoad(int fd, int len, const int *castle_ids)
-{
- return mapif->guild_castle_dataload(fd, len, castle_ids);
+ mapif->guild_emblem(g);
+ return true;
}
-int mapif_parse_GuildCastleDataSave(int fd, int castle_id, int index, int value)
+static bool inter_guild_update_castle_data(int castle_id, int index, int value)
{
struct guild_castle *gc = inter_guild->castle_fromsql(castle_id);
if (gc == NULL) {
- ShowError("mapif->parse_GuildCastleDataSave: castle id=%d not found\n", castle_id);
- return 0;
+ ShowError("inter_guild->update_castle_data: castle id=%d not found\n", castle_id);
+ return false;
}
switch (index) {
@@ -1842,14 +1540,14 @@ int mapif_parse_GuildCastleDataSave(int fd, int castle_id, int index, int value)
gc->guardian[index-10].visible = value;
break;
}
- ShowError("mapif->parse_GuildCastleDataSave: not found index=%d\n", index);
- return 0;
+ ShowError("inter_guild->update_castle_data: not found index=%d\n", index);
+ return false;
}
inter_guild->castle_tosql(gc);
- return 0;
+ return true;
}
-int mapif_parse_GuildMasterChange(int fd, int guild_id, const char* name, int len)
+static bool inter_guild_change_leader(int guild_id, const char *name, int len)
{
struct guild * g;
struct guild_member gm;
@@ -1884,7 +1582,8 @@ int mapif_parse_GuildMasterChange(int fd, int guild_id, const char* name, int le
ShowInfo("int_guild: Guildmaster Changed to %s (Guild %d - %s)\n",g->master, guild_id, g->name);
g->save_flag |= (GS_BASIC|GS_MEMBER); //Save main data and member data.
- return mapif->guild_master_changed(g, g->member[0].account_id, g->member[0].char_id);
+ mapif->guild_master_changed(g, g->member[0].account_id, g->member[0].char_id);
+ return true;
}
// Communication from the map server
@@ -1894,7 +1593,7 @@ int mapif_parse_GuildMasterChange(int fd, int guild_id, const char* name, int le
// Must Return
// 1 : ok
// 0 : error
-int inter_guild_parse_frommap(int fd)
+static int inter_guild_parse_frommap(int fd)
{
RFIFOHEAD(fd);
switch(RFIFOW(fd,0)) {
@@ -1923,13 +1622,7 @@ int inter_guild_parse_frommap(int fd)
return 1;
}
-//Leave request from the server (for deleting character from guild)
-int inter_guild_leave(int guild_id, int account_id, int char_id)
-{
- return mapif->parse_GuildLeave(-1, guild_id, account_id, char_id, 0, "** Character Deleted **");
-}
-
-int inter_guild_broken(int guild_id)
+static int inter_guild_broken(int guild_id)
{
return mapif->guild_broken(guild_id, 0);
}
@@ -1962,6 +1655,20 @@ void inter_guild_defaults(void)
inter_guild->sex_changed = inter_guild_sex_changed;
inter_guild->charname_changed = inter_guild_charname_changed;
inter_guild->parse_frommap = inter_guild_parse_frommap;
- inter_guild->leave = inter_guild_leave;
inter_guild->broken = inter_guild_broken;
+ inter_guild->create = inter_guild_create;
+ inter_guild->add_member = inter_guild_add_member;
+ inter_guild->leave = inter_guild_leave;
+ inter_guild->update_member_info_short = inter_guild_update_member_info_short;
+ inter_guild->update_member_info = inter_guild_update_member_info;
+ inter_guild->disband = inter_guild_disband;
+ inter_guild->update_basic_info = inter_guild_update_basic_info;
+ inter_guild->update_position = inter_guild_update_position;
+ inter_guild->use_skill_point = inter_guild_use_skill_point;
+ inter_guild->remove_alliance = inter_guild_remove_alliance;
+ inter_guild->change_alliance = inter_guild_change_alliance;
+ inter_guild->update_notice = inter_guild_update_notice;
+ inter_guild->update_emblem = inter_guild_update_emblem;
+ inter_guild->update_castle_data = inter_guild_update_castle_data;
+ inter_guild->change_leader = inter_guild_change_leader;
}
diff --git a/src/char/int_guild.h b/src/char/int_guild.h
index 93bf6c699..33873edcd 100644
--- a/src/char/int_guild.h
+++ b/src/char/int_guild.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -68,8 +68,22 @@ struct inter_guild_interface {
int (*sex_changed) (int guild_id, int account_id, int char_id, short gender);
int (*charname_changed) (int guild_id, int account_id, int char_id, char *name);
int (*parse_frommap) (int fd);
- int (*leave) (int guild_id, int account_id, int char_id);
int (*broken) (int guild_id);
+ struct guild *(*create) (const char *name, const struct guild_member *master);
+ bool (*add_member) (int guild_id, const struct guild_member *member, int map_fd);
+ bool (*leave) (int guild_id, int account_id, int char_id, int flag, const char *mes, int map_fd);
+ bool (*update_member_info_short) (int guild_id, int account_id, int char_id, int online, int lv, int16 class);
+ bool (*update_member_info) (int guild_id, int account_id, int char_id, int type, const char *data, int len);
+ bool (*disband) (int guild_id);
+ bool (*update_basic_info) (int guild_id, int type, const void *data, int len);
+ bool (*update_position) (int guild_id, int idx, const struct guild_position *p);
+ bool (*use_skill_point) (int guild_id, uint16 skill_id, int account_id, int max);
+ bool (*remove_alliance) (struct guild *g, int guild_id, int account_id1, int account_id2, int flag);
+ bool (*change_alliance) (int guild_id1, int guild_id2, int account_id1, int account_id2, int flag);
+ bool (*update_notice) (int guild_id, const char *mes1, const char *mes2);
+ bool (*update_emblem) (int len, int guild_id, const char *data);
+ bool (*update_castle_data) (int castle_id, int index, int value);
+ bool (*change_leader) (int guild_id, const char *name, int len);
};
#ifdef HERCULES_CORE
diff --git a/src/char/int_homun.c b/src/char/int_homun.c
index 04f4c8f21..5a1c9d23f 100644
--- a/src/char/int_homun.c
+++ b/src/char/int_homun.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -37,78 +37,18 @@
#include <stdio.h>
#include <stdlib.h>
-struct inter_homunculus_interface inter_homunculus_s;
+static struct inter_homunculus_interface inter_homunculus_s;
struct inter_homunculus_interface *inter_homunculus;
-int inter_homunculus_sql_init(void)
+static int inter_homunculus_sql_init(void)
{
return 0;
}
-void inter_homunculus_sql_final(void)
+static void inter_homunculus_sql_final(void)
{
return;
}
-void mapif_homunculus_created(int fd, int account_id, const struct s_homunculus *sh, unsigned char flag)
-{
- nullpo_retv(sh);
- WFIFOHEAD(fd, sizeof(struct s_homunculus)+9);
- WFIFOW(fd,0) = 0x3890;
- WFIFOW(fd,2) = sizeof(struct s_homunculus)+9;
- WFIFOL(fd,4) = account_id;
- WFIFOB(fd,8)= flag;
- memcpy(WFIFOP(fd,9),sh,sizeof(struct s_homunculus));
- WFIFOSET(fd, WFIFOW(fd,2));
-}
-
-void mapif_homunculus_deleted(int fd, int flag)
-{
- WFIFOHEAD(fd, 3);
- WFIFOW(fd, 0) = 0x3893;
- WFIFOB(fd,2) = flag; //Flag 1 = success
- WFIFOSET(fd, 3);
-}
-
-void mapif_homunculus_loaded(int fd, int account_id, struct s_homunculus *hd)
-{
- WFIFOHEAD(fd, sizeof(struct s_homunculus)+9);
- WFIFOW(fd,0) = 0x3891;
- WFIFOW(fd,2) = sizeof(struct s_homunculus)+9;
- WFIFOL(fd,4) = account_id;
- if( hd != NULL )
- {
- WFIFOB(fd,8) = 1; // success
- memcpy(WFIFOP(fd,9), hd, sizeof(struct s_homunculus));
- }
- else
- {
- WFIFOB(fd,8) = 0; // not found.
- memset(WFIFOP(fd,9), 0, sizeof(struct s_homunculus));
- }
- WFIFOSET(fd, sizeof(struct s_homunculus)+9);
-}
-
-void mapif_homunculus_saved(int fd, int account_id, bool flag)
-{
- WFIFOHEAD(fd, 7);
- WFIFOW(fd,0) = 0x3892;
- WFIFOL(fd,2) = account_id;
- WFIFOB(fd,6) = flag; // 1:success, 0:failure
- WFIFOSET(fd, 7);
-}
-
-void mapif_homunculus_renamed(int fd, int account_id, int char_id, unsigned char flag, const char *name)
-{
- nullpo_retv(name);
- WFIFOHEAD(fd, NAME_LENGTH+12);
- WFIFOW(fd, 0) = 0x3894;
- WFIFOL(fd, 2) = account_id;
- WFIFOL(fd, 6) = char_id;
- WFIFOB(fd,10) = flag;
- safestrncpy(WFIFOP(fd,11), name, NAME_LENGTH);
- WFIFOSET(fd, NAME_LENGTH+12);
-}
-
/**
* Creates a new homunculus with the given data.
*
@@ -119,7 +59,7 @@ void mapif_homunculus_renamed(int fd, int account_id, int char_id, unsigned char
* @param[in,out] hd The new homunculus' data.
* @retval false in case of errors.
*/
-bool mapif_homunculus_create(struct s_homunculus *hd)
+static bool inter_homunculus_create(struct s_homunculus *hd)
{
char esc_name[NAME_LENGTH*2+1];
@@ -129,10 +69,10 @@ bool mapif_homunculus_create(struct s_homunculus *hd)
SQL->EscapeStringLen(inter->sql_handle, esc_name, hd->name, strnlen(hd->name, NAME_LENGTH));
if (SQL_ERROR == SQL->Query(inter->sql_handle, "INSERT INTO `%s` "
- "(`char_id`, `class`,`prev_class`,`name`,`level`,`exp`,`intimacy`,`hunger`, `str`, `agi`, `vit`, `int`, `dex`, `luk`, `hp`,`max_hp`,`sp`,`max_sp`,`skill_point`, `rename_flag`, `vaporize`) "
- "VALUES ('%d', '%d', '%d', '%s', '%d', '%u', '%u', '%d', '%d', %d, '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d')",
+ "(`char_id`, `class`,`prev_class`,`name`,`level`,`exp`,`intimacy`,`hunger`, `str`, `agi`, `vit`, `int`, `dex`, `luk`, `hp`,`max_hp`,`sp`,`max_sp`,`skill_point`, `rename_flag`, `vaporize`, `autofeed`) "
+ "VALUES ('%d', '%d', '%d', '%s', '%d', '%u', '%u', '%d', '%d', %d, '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d')",
homunculus_db, hd->char_id, hd->class_, hd->prev_class, esc_name, hd->level, hd->exp, hd->intimacy, hd->hunger, hd->str, hd->agi, hd->vit, hd->int_, hd->dex, hd->luk,
- hd->hp, hd->max_hp, hd->sp, hd->max_sp, hd->skillpts, hd->rename_flag, hd->vaporize)) {
+ hd->hp, hd->max_hp, hd->sp, hd->max_sp, hd->skillpts, hd->rename_flag, hd->vaporize, hd->autofeed)) {
Sql_ShowDebug(inter->sql_handle);
return false;
}
@@ -146,7 +86,7 @@ bool mapif_homunculus_create(struct s_homunculus *hd)
* @param hd The homunculus' data.
* @retval false in case of errors.
*/
-bool mapif_homunculus_save(const struct s_homunculus *hd)
+static bool inter_homunculus_save(const struct s_homunculus *hd)
{
bool flag = true;
char esc_name[NAME_LENGTH*2+1];
@@ -156,9 +96,9 @@ bool mapif_homunculus_save(const struct s_homunculus *hd)
SQL->EscapeStringLen(inter->sql_handle, esc_name, hd->name, strnlen(hd->name, NAME_LENGTH));
- if (SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `char_id`='%d', `class`='%d',`prev_class`='%d',`name`='%s',`level`='%d',`exp`='%u',`intimacy`='%u',`hunger`='%d', `str`='%d', `agi`='%d', `vit`='%d', `int`='%d', `dex`='%d', `luk`='%d', `hp`='%d',`max_hp`='%d',`sp`='%d',`max_sp`='%d',`skill_point`='%d', `rename_flag`='%d', `vaporize`='%d' WHERE `homun_id`='%d'",
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `char_id`='%d', `class`='%d',`prev_class`='%d',`name`='%s',`level`='%d',`exp`='%u',`intimacy`='%u',`hunger`='%d', `str`='%d', `agi`='%d', `vit`='%d', `int`='%d', `dex`='%d', `luk`='%d', `hp`='%d',`max_hp`='%d',`sp`='%d',`max_sp`='%d',`skill_point`='%d', `rename_flag`='%d', `vaporize`='%d', `autofeed`='%d' WHERE `homun_id`='%d'",
homunculus_db, hd->char_id, hd->class_, hd->prev_class, esc_name, hd->level, hd->exp, hd->intimacy, hd->hunger, hd->str, hd->agi, hd->vit, hd->int_, hd->dex, hd->luk,
- hd->hp, hd->max_hp, hd->sp, hd->max_sp, hd->skillpts, hd->rename_flag, hd->vaporize, hd->hom_id)) {
+ hd->hp, hd->max_hp, hd->sp, hd->max_sp, hd->skillpts, hd->rename_flag, hd->vaporize, hd->autofeed, hd->hom_id)) {
Sql_ShowDebug(inter->sql_handle);
flag = false;
} else {
@@ -171,9 +111,9 @@ bool mapif_homunculus_save(const struct s_homunculus *hd)
} else {
for (i = 0; i < MAX_HOMUNSKILL; ++i) {
if (hd->hskill[i].id > 0 && hd->hskill[i].lv != 0) {
- SQL->StmtBindParam(stmt, 0, SQLDT_USHORT, &hd->hskill[i].id, 0);
- SQL->StmtBindParam(stmt, 1, SQLDT_USHORT, &hd->hskill[i].lv, 0);
- if (SQL_ERROR == SQL->StmtExecute(stmt)) {
+ if (SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_USHORT, &hd->hskill[i].id, sizeof hd->hskill[i].id)
+ || SQL_ERROR == SQL->StmtBindParam(stmt, 1, SQLDT_UCHAR, &hd->hskill[i].lv, sizeof hd->hskill[i].lv)
+ || SQL_ERROR == SQL->StmtExecute(stmt)) {
SqlStmt_ShowDebug(stmt);
flag = false;
break;
@@ -188,7 +128,7 @@ bool mapif_homunculus_save(const struct s_homunculus *hd)
}
// Load an homunculus
-bool mapif_homunculus_load(int homun_id, struct s_homunculus* hd)
+static bool inter_homunculus_load(int homun_id, struct s_homunculus *hd)
{
char* data;
size_t len;
@@ -196,7 +136,7 @@ bool mapif_homunculus_load(int homun_id, struct s_homunculus* hd)
nullpo_ret(hd);
memset(hd, 0, sizeof(*hd));
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `homun_id`,`char_id`,`class`,`prev_class`,`name`,`level`,`exp`,`intimacy`,`hunger`, `str`, `agi`, `vit`, `int`, `dex`, `luk`, `hp`,`max_hp`,`sp`,`max_sp`,`skill_point`,`rename_flag`, `vaporize` FROM `%s` WHERE `homun_id`='%d'", homunculus_db, homun_id) )
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `homun_id`,`char_id`,`class`,`prev_class`,`name`,`level`,`exp`,`intimacy`,`hunger`, `str`, `agi`, `vit`, `int`, `dex`, `luk`, `hp`,`max_hp`,`sp`,`max_sp`,`skill_point`,`rename_flag`, `vaporize`, `autofeed` FROM `%s` WHERE `homun_id`='%d'", homunculus_db, homun_id))
{
Sql_ShowDebug(inter->sql_handle);
return false;
@@ -236,6 +176,7 @@ bool mapif_homunculus_load(int homun_id, struct s_homunculus* hd)
SQL->GetData(inter->sql_handle, 19, &data, NULL); hd->skillpts = atoi(data);
SQL->GetData(inter->sql_handle, 20, &data, NULL); hd->rename_flag = atoi(data);
SQL->GetData(inter->sql_handle, 21, &data, NULL); hd->vaporize = atoi(data);
+ SQL->GetData(inter->sql_handle, 22, &data, NULL); hd->autofeed = atoi(data);
SQL->FreeResult(inter->sql_handle);
hd->intimacy = cap_value(hd->intimacy, 0, 100000);
@@ -268,7 +209,7 @@ bool mapif_homunculus_load(int homun_id, struct s_homunculus* hd)
return true;
}
-bool mapif_homunculus_delete(int homun_id)
+static bool inter_homunculus_delete(int homun_id)
{
if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `homun_id` = '%d'", homunculus_db, homun_id)
|| SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `homun_id` = '%d'", skill_homunculus_db, homun_id)
@@ -279,7 +220,7 @@ bool mapif_homunculus_delete(int homun_id)
return true;
}
-bool mapif_homunculus_rename(const char *name)
+static bool inter_homunculus_rename(const char *name)
{
int i;
@@ -301,47 +242,10 @@ bool mapif_homunculus_rename(const char *name)
return true;
}
-
-void mapif_parse_homunculus_create(int fd, int len, int account_id, const struct s_homunculus *phd)
-{
- struct s_homunculus shd;
- bool result;
-
- memcpy(&shd, phd, sizeof(shd));
-
- result = mapif->homunculus_create(&shd);
- mapif->homunculus_created(fd, account_id, &shd, result);
-}
-
-void mapif_parse_homunculus_delete(int fd, int homun_id)
-{
- bool result = mapif->homunculus_delete(homun_id);
- mapif->homunculus_deleted(fd, result);
-}
-
-void mapif_parse_homunculus_load(int fd, int account_id, int homun_id)
-{
- struct s_homunculus hd;
- bool result = mapif->homunculus_load(homun_id, &hd);
- mapif->homunculus_loaded(fd, account_id, ( result ? &hd : NULL ));
-}
-
-void mapif_parse_homunculus_save(int fd, int len, int account_id, const struct s_homunculus *phd)
-{
- bool result = mapif->homunculus_save(phd);
- mapif->homunculus_saved(fd, account_id, result);
-}
-
-void mapif_parse_homunculus_rename(int fd, int account_id, int char_id, const char *name)
-{
- bool result = mapif->homunculus_rename(name);
- mapif->homunculus_renamed(fd, account_id, char_id, result, name);
-}
-
/*==========================================
* Inter Packets
*------------------------------------------*/
-int inter_homunculus_parse_frommap(int fd)
+static int inter_homunculus_parse_frommap(int fd)
{
unsigned short cmd = RFIFOW(fd,0);
@@ -364,4 +268,10 @@ void inter_homunculus_defaults(void)
inter_homunculus->sql_init = inter_homunculus_sql_init;
inter_homunculus->sql_final = inter_homunculus_sql_final;
inter_homunculus->parse_frommap = inter_homunculus_parse_frommap;
+
+ inter_homunculus->create = inter_homunculus_create;
+ inter_homunculus->save = inter_homunculus_save;
+ inter_homunculus->load = inter_homunculus_load;
+ inter_homunculus->delete = inter_homunculus_delete;
+ inter_homunculus->rename = inter_homunculus_rename;
}
diff --git a/src/char/int_homun.h b/src/char/int_homun.h
index 7ea7331f2..8eba66963 100644
--- a/src/char/int_homun.h
+++ b/src/char/int_homun.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -22,6 +22,7 @@
#define CHAR_INT_HOMUN_H
#include "common/hercules.h"
+#include "common/mmo.h"
/**
* inter_homunculus interface
@@ -30,6 +31,12 @@ struct inter_homunculus_interface {
int (*sql_init) (void);
void (*sql_final) (void);
int (*parse_frommap) (int fd);
+
+ bool (*create) (struct s_homunculus *hd);
+ bool (*save) (const struct s_homunculus *hd);
+ bool (*load) (int homun_id, struct s_homunculus* hd);
+ bool (*delete) (int homun_id);
+ bool (*rename) (const char *name);
};
#ifdef HERCULES_CORE
diff --git a/src/char/int_mail.c b/src/char/int_mail.c
index 10f905a0d..e0625fcab 100644
--- a/src/char/int_mail.c
+++ b/src/char/int_mail.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -37,10 +37,10 @@
#include <stdio.h>
#include <stdlib.h>
-struct inter_mail_interface inter_mail_s;
+static struct inter_mail_interface inter_mail_s;
struct inter_mail_interface *inter_mail;
-static int inter_mail_fromsql(int char_id, struct mail_data* md)
+static int inter_mail_fromsql(int char_id, struct mail_data *md)
{
int i, j;
struct mail_message *msg;
@@ -57,6 +57,8 @@ static int inter_mail_fromsql(int char_id, struct mail_data* md)
"`zeny`,`amount`,`nameid`,`refine`,`attribute`,`identify`,`unique_id`");
for (i = 0; i < MAX_SLOTS; i++)
StrBuf->Printf(&buf, ",`card%d`", i);
+ for (i = 0; i < MAX_ITEM_OPTIONS; i++)
+ StrBuf->Printf(&buf, ", `opt_idx%d`, `opt_val%d`", i, i);
// I keep the `status` < 3 just in case someone forget to apply the sqlfix
StrBuf->Printf(&buf, " FROM `%s` WHERE `dest_id`='%d' AND `status` < 3 ORDER BY `id` LIMIT %d",
@@ -90,12 +92,18 @@ static int inter_mail_fromsql(int char_id, struct mail_data* md)
SQL->GetData(inter->sql_handle,15, &data, NULL); item->unique_id = strtoull(data, NULL, 10);
item->expire_time = 0;
item->bound = 0;
-
- for (j = 0; j < MAX_SLOTS; j++)
- {
+ /* Card Slots */
+ for (j = 0; j < MAX_SLOTS; j++) {
SQL->GetData(inter->sql_handle, 16 + j, &data, NULL);
item->card[j] = atoi(data);
}
+ /* Item Options */
+ for (j = 0; j < MAX_ITEM_OPTIONS; j++) {
+ SQL->GetData(inter->sql_handle, 16 + MAX_SLOTS + j * 2, &data, NULL);
+ item->option[j].index = atoi(data);
+ SQL->GetData(inter->sql_handle, 17 + MAX_SLOTS + j * 2, &data, NULL);
+ item->option[j].value = atoi(data);
+ }
}
md->full = ( SQL->NumRows(inter->sql_handle) > MAIL_MAX_INBOX );
@@ -126,7 +134,7 @@ static int inter_mail_fromsql(int char_id, struct mail_data* md)
/// Stores a single message in the database.
/// Returns the message's ID if successful (or 0 if it fails).
-int inter_mail_savemessage(struct mail_message* msg)
+static int inter_mail_savemessage(struct mail_message *msg)
{
StringBuf buf;
struct SqlStmt *stmt;
@@ -138,25 +146,30 @@ int inter_mail_savemessage(struct mail_message* msg)
StrBuf->Printf(&buf, "INSERT INTO `%s` (`send_name`, `send_id`, `dest_name`, `dest_id`, `title`, `message`, `time`, `status`, `zeny`, `amount`, `nameid`, `refine`, `attribute`, `identify`, `unique_id`", mail_db);
for (j = 0; j < MAX_SLOTS; j++)
StrBuf->Printf(&buf, ", `card%d`", j);
+ for (j = 0; j < MAX_ITEM_OPTIONS; j++)
+ StrBuf->Printf(&buf, ", `opt_idx%d`, `opt_val%d`", j, j);
StrBuf->Printf(&buf, ") VALUES (?, '%d', ?, '%d', ?, ?, '%lu', '%u', '%d', '%d', '%d', '%d', '%d', '%d', '%"PRIu64"'",
msg->send_id, msg->dest_id, (unsigned long)msg->timestamp, msg->status, msg->zeny, msg->item.amount, msg->item.nameid, msg->item.refine, msg->item.attribute, msg->item.identify, msg->item.unique_id);
for (j = 0; j < MAX_SLOTS; j++)
StrBuf->Printf(&buf, ", '%d'", msg->item.card[j]);
+ for (j = 0; j < MAX_ITEM_OPTIONS; j++)
+ StrBuf->Printf(&buf, ", '%d', '%d'", msg->item.option[j].index, msg->item.option[j].value);
StrBuf->AppendStr(&buf, ")");
// prepare and execute query
stmt = SQL->StmtMalloc(inter->sql_handle);
- if( SQL_SUCCESS != SQL->StmtPrepareStr(stmt, StrBuf->Value(&buf))
+ if (SQL_SUCCESS != SQL->StmtPrepareStr(stmt, StrBuf->Value(&buf))
|| SQL_SUCCESS != SQL->StmtBindParam(stmt, 0, SQLDT_STRING, msg->send_name, strnlen(msg->send_name, NAME_LENGTH))
|| SQL_SUCCESS != SQL->StmtBindParam(stmt, 1, SQLDT_STRING, msg->dest_name, strnlen(msg->dest_name, NAME_LENGTH))
|| SQL_SUCCESS != SQL->StmtBindParam(stmt, 2, SQLDT_STRING, msg->title, strnlen(msg->title, MAIL_TITLE_LENGTH))
|| SQL_SUCCESS != SQL->StmtBindParam(stmt, 3, SQLDT_STRING, msg->body, strnlen(msg->body, MAIL_BODY_LENGTH))
- || SQL_SUCCESS != SQL->StmtExecute(stmt) )
+ || SQL_SUCCESS != SQL->StmtExecute(stmt))
{
SqlStmt_ShowDebug(stmt);
msg->id = 0;
- } else
+ } else {
msg->id = (int)SQL->StmtLastInsertId(stmt);
+ }
SQL->StmtFree(stmt);
StrBuf->Destroy(&buf);
@@ -166,7 +179,7 @@ int inter_mail_savemessage(struct mail_message* msg)
/// Retrieves a single message from the database.
/// Returns true if the operation succeeds (or false if it fails).
-static bool inter_mail_loadmessage(int mail_id, struct mail_message* msg)
+static bool inter_mail_loadmessage(int mail_id, struct mail_message *msg)
{
int j;
StringBuf buf;
@@ -176,8 +189,10 @@ static bool inter_mail_loadmessage(int mail_id, struct mail_message* msg)
StrBuf->Init(&buf);
StrBuf->AppendStr(&buf, "SELECT `id`,`send_name`,`send_id`,`dest_name`,`dest_id`,`title`,`message`,`time`,`status`,"
"`zeny`,`amount`,`nameid`,`refine`,`attribute`,`identify`,`unique_id`");
- for( j = 0; j < MAX_SLOTS; j++ )
+ for (j = 0; j < MAX_SLOTS; j++)
StrBuf->Printf(&buf, ",`card%d`", j);
+ for (j = 0; j < MAX_ITEM_OPTIONS; j++)
+ StrBuf->Printf(&buf, ",`opt_idx%d`,`opt_val%d`", j, j);
StrBuf->Printf(&buf, " FROM `%s` WHERE `id` = '%d'", mail_db, mail_id);
if (SQL_ERROR == SQL->QueryStr(inter->sql_handle, StrBuf->Value(&buf))
@@ -207,12 +222,18 @@ static bool inter_mail_loadmessage(int mail_id, struct mail_message* msg)
SQL->GetData(inter->sql_handle,15, &data, NULL); msg->item.unique_id = strtoull(data, NULL, 10);
msg->item.expire_time = 0;
msg->item.bound = 0;
-
- for( j = 0; j < MAX_SLOTS; j++ )
- {
+ /* Card Slots */
+ for (j = 0; j < MAX_SLOTS; j++) {
SQL->GetData(inter->sql_handle,16 + j, &data, NULL);
msg->item.card[j] = atoi(data);
}
+ /* Item Options */
+ for (j = 0 ; j < MAX_ITEM_OPTIONS; j++) {
+ SQL->GetData(inter->sql_handle, 16 + MAX_SLOTS + j * 2, &data, NULL);
+ msg->item.option[j].index = atoi(data);
+ SQL->GetData(inter->sql_handle, 17 + MAX_SLOTS + j * 2, &data, NULL);
+ msg->item.option[j].value = atoi(data);
+ }
}
StrBuf->Destroy(&buf);
@@ -221,40 +242,16 @@ static bool inter_mail_loadmessage(int mail_id, struct mail_message* msg)
return true;
}
-void mapif_mail_sendinbox(int fd, int char_id, unsigned char flag, struct mail_data *md)
-{
- nullpo_retv(md);
- //FIXME: dumping the whole structure like this is unsafe [ultramage]
- WFIFOHEAD(fd, sizeof(struct mail_data) + 9);
- WFIFOW(fd,0) = 0x3848;
- WFIFOW(fd,2) = sizeof(struct mail_data) + 9;
- WFIFOL(fd,4) = char_id;
- WFIFOB(fd,8) = flag;
- memcpy(WFIFOP(fd,9),md,sizeof(struct mail_data));
- WFIFOSET(fd,WFIFOW(fd,2));
-}
-
-/*==========================================
- * Client Inbox Request
- *------------------------------------------*/
-void mapif_parse_mail_requestinbox(int fd)
-{
- int char_id = RFIFOL(fd,2);
- unsigned char flag = RFIFOB(fd,6);
- struct mail_data md;
- memset(&md, 0, sizeof(md));
- inter_mail->fromsql(char_id, &md);
- mapif->mail_sendinbox(fd, char_id, flag, &md);
-}
-
/*==========================================
* Mark mail as 'Read'
*------------------------------------------*/
-void mapif_parse_mail_read(int fd)
+static bool inter_mail_mark_read(int mail_id)
{
- int mail_id = RFIFOL(fd,2);
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `status` = '%d' WHERE `id` = '%d'", mail_db, MAIL_READ, mail_id) )
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `status` = '%d' WHERE `id` = '%d'", mail_db, MAIL_READ, mail_id)) {
Sql_ShowDebug(inter->sql_handle);
+ return false;
+ }
+ return true;
}
/*==========================================
@@ -269,6 +266,8 @@ static bool inter_mail_DeleteAttach(int mail_id)
StrBuf->Printf(&buf, "UPDATE `%s` SET `zeny` = '0', `nameid` = '0', `amount` = '0', `refine` = '0', `attribute` = '0', `identify` = '0'", mail_db);
for (i = 0; i < MAX_SLOTS; i++)
StrBuf->Printf(&buf, ", `card%d` = '0'", i);
+ for (i = 0; i < MAX_ITEM_OPTIONS; i++)
+ StrBuf->Printf(&buf, ", `opt_idx%d` = '0', `opt_val%d` = '0'", i, i);
StrBuf->Printf(&buf, " WHERE `id` = '%d'", mail_id);
if (SQL_ERROR == SQL->QueryStr(inter->sql_handle, StrBuf->Value(&buf))) {
@@ -282,194 +281,103 @@ static bool inter_mail_DeleteAttach(int mail_id)
return true;
}
-void mapif_mail_sendattach(int fd, int char_id, struct mail_message *msg)
+static bool inter_mail_get_attachment(int char_id, int mail_id, struct mail_message *msg)
{
- nullpo_retv(msg);
- WFIFOHEAD(fd, sizeof(struct item) + 12);
- WFIFOW(fd,0) = 0x384a;
- WFIFOW(fd,2) = sizeof(struct item) + 12;
- WFIFOL(fd,4) = char_id;
- WFIFOL(fd,8) = (msg->zeny > 0)?msg->zeny:0;
- memcpy(WFIFOP(fd,12), &msg->item, sizeof(struct item));
- WFIFOSET(fd,WFIFOW(fd,2));
-}
-
-void mapif_mail_getattach(int fd, int char_id, int mail_id)
-{
- struct mail_message msg;
- memset(&msg, 0, sizeof(msg));
-
- if( !inter_mail->loadmessage(mail_id, &msg) )
- return;
-
- if( msg.dest_id != char_id )
- return;
+ nullpo_retr(false, msg);
- if( msg.status != MAIL_READ )
- return;
+ if (!inter_mail->loadmessage(mail_id, msg))
+ return false;
- if( (msg.item.nameid < 1 || msg.item.amount < 1) && msg.zeny < 1 )
- return; // No Attachment
+ if (msg->dest_id != char_id)
+ return false;
- if( !inter_mail->DeleteAttach(mail_id) )
- return;
+ if (msg->status != MAIL_READ)
+ return false;
- mapif->mail_sendattach(fd, char_id, &msg);
-}
+ if ((msg->item.nameid < 1 || msg->item.amount < 1) && msg->zeny < 1)
+ return false; // No Attachment
-void mapif_parse_mail_getattach(int fd)
-{
- mapif->mail_getattach(fd, RFIFOL(fd,2), RFIFOL(fd,6));
-}
+ if (!inter_mail->DeleteAttach(mail_id))
+ return false;
-/*==========================================
- * Delete Mail
- *------------------------------------------*/
-void mapif_mail_delete(int fd, int char_id, int mail_id, bool failed)
-{
- WFIFOHEAD(fd,11);
- WFIFOW(fd,0) = 0x384b;
- WFIFOL(fd,2) = char_id;
- WFIFOL(fd,6) = mail_id;
- WFIFOB(fd,10) = failed;
- WFIFOSET(fd,11);
+ return true;
}
-void mapif_parse_mail_delete(int fd)
+static bool inter_mail_delete(int char_id, int mail_id)
{
- int char_id = RFIFOL(fd,2);
- int mail_id = RFIFOL(fd,6);
- bool failed = false;
- if ( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `id` = '%d'", mail_db, mail_id) )
- {
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `id` = '%d'", mail_db, mail_id)) {
Sql_ShowDebug(inter->sql_handle);
- failed = true;
+ return false;
}
- mapif->mail_delete(fd, char_id, mail_id, failed);
+ return true;
}
-/*==========================================
- * Report New Mail to Map Server
- *------------------------------------------*/
-void mapif_mail_new(struct mail_message *msg)
+static bool inter_mail_return_message(int char_id, int mail_id, int *new_mail)
{
- unsigned char buf[74];
-
- if( !msg || !msg->id )
- return;
-
- WBUFW(buf,0) = 0x3849;
- WBUFL(buf,2) = msg->dest_id;
- WBUFL(buf,6) = msg->id;
- memcpy(WBUFP(buf,10), msg->send_name, NAME_LENGTH);
- memcpy(WBUFP(buf,34), msg->title, MAIL_TITLE_LENGTH);
- mapif->sendall(buf, 74);
-}
+ struct mail_message msg;
+ nullpo_retr(false, new_mail);
-/*==========================================
- * Return Mail
- *------------------------------------------*/
-void mapif_mail_return(int fd, int char_id, int mail_id, int new_mail)
-{
- WFIFOHEAD(fd,11);
- WFIFOW(fd,0) = 0x384c;
- WFIFOL(fd,2) = char_id;
- WFIFOL(fd,6) = mail_id;
- WFIFOB(fd,10) = (new_mail == 0);
- WFIFOSET(fd,11);
-}
+ if (!inter_mail->loadmessage(mail_id, &msg))
+ return false;
-void mapif_parse_mail_return(int fd)
-{
- int char_id = RFIFOL(fd,2);
- int mail_id = RFIFOL(fd,6);
- struct mail_message msg;
- int new_mail = 0;
+ if (msg.dest_id != char_id)
+ return false;
- if( inter_mail->loadmessage(mail_id, &msg) )
- {
- if( msg.dest_id != char_id)
- return;
- else if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `id` = '%d'", mail_db, mail_id) )
- Sql_ShowDebug(inter->sql_handle);
- else
- {
- char temp_[MAIL_TITLE_LENGTH];
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `id` = '%d'", mail_db, mail_id)) {
+ Sql_ShowDebug(inter->sql_handle);
+ } else {
+ char temp_[MAIL_TITLE_LENGTH];
- // swap sender and receiver
- swap(msg.send_id, msg.dest_id);
- safestrncpy(temp_, msg.send_name, NAME_LENGTH);
- safestrncpy(msg.send_name, msg.dest_name, NAME_LENGTH);
- safestrncpy(msg.dest_name, temp_, NAME_LENGTH);
+ // swap sender and receiver
+ swap(msg.send_id, msg.dest_id);
+ safestrncpy(temp_, msg.send_name, NAME_LENGTH);
+ safestrncpy(msg.send_name, msg.dest_name, NAME_LENGTH);
+ safestrncpy(msg.dest_name, temp_, NAME_LENGTH);
- // set reply message title
- snprintf(temp_, MAIL_TITLE_LENGTH, "RE:%s", msg.title);
- safestrncpy(msg.title, temp_, MAIL_TITLE_LENGTH);
+ // set reply message title
+ safesnprintf(temp_, MAIL_TITLE_LENGTH, "RE:%s", msg.title);
+ safestrncpy(msg.title, temp_, MAIL_TITLE_LENGTH);
- msg.status = MAIL_NEW;
- msg.timestamp = time(NULL);
+ msg.status = MAIL_NEW;
+ msg.timestamp = time(NULL);
- new_mail = inter_mail->savemessage(&msg);
- mapif->mail_new(&msg);
- }
+ *new_mail = inter_mail->savemessage(&msg);
+ mapif->mail_new(&msg);
}
- mapif->mail_return(fd, char_id, mail_id, new_mail);
-}
+ return true;
-/*==========================================
- * Send Mail
- *------------------------------------------*/
-void mapif_mail_send(int fd, struct mail_message* msg)
-{
- int len = sizeof(struct mail_message) + 4;
-
- nullpo_retv(msg);
- WFIFOHEAD(fd,len);
- WFIFOW(fd,0) = 0x384d;
- WFIFOW(fd,2) = len;
- memcpy(WFIFOP(fd,4), msg, sizeof(struct mail_message));
- WFIFOSET(fd,len);
}
-void mapif_parse_mail_send(int fd)
+static bool inter_mail_send(int account_id, struct mail_message *msg)
{
- struct mail_message msg;
char esc_name[NAME_LENGTH*2+1];
- int account_id = 0;
-
- if(RFIFOW(fd,2) != 8 + sizeof(struct mail_message))
- return;
- account_id = RFIFOL(fd,4);
- memcpy(&msg, RFIFOP(fd,8), sizeof(struct mail_message));
+ nullpo_retr(false, msg);
// Try to find the Dest Char by Name
- SQL->EscapeStringLen(inter->sql_handle, esc_name, msg.dest_name, strnlen(msg.dest_name, NAME_LENGTH));
- if ( SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `account_id`, `char_id` FROM `%s` WHERE `name` = '%s'", char_db, esc_name) )
+ SQL->EscapeStringLen(inter->sql_handle, esc_name, msg->dest_name, strnlen(msg->dest_name, NAME_LENGTH));
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `account_id`, `char_id` FROM `%s` WHERE `name` = '%s'", char_db, esc_name)) {
Sql_ShowDebug(inter->sql_handle);
- else
- if ( SQL_SUCCESS == SQL->NextRow(inter->sql_handle) )
- {
+ } else if (SQL_SUCCESS == SQL->NextRow(inter->sql_handle)) {
char *data;
SQL->GetData(inter->sql_handle, 0, &data, NULL);
- if (atoi(data) != account_id)
- { // Cannot send mail to char in the same account
+ if (atoi(data) != account_id) {
+ // Cannot send mail to char in the same account
SQL->GetData(inter->sql_handle, 1, &data, NULL);
- msg.dest_id = atoi(data);
+ msg->dest_id = atoi(data);
}
}
SQL->FreeResult(inter->sql_handle);
- msg.status = MAIL_NEW;
+ msg->status = MAIL_NEW;
- if( msg.dest_id > 0 )
- msg.id = inter_mail->savemessage(&msg);
+ if (msg->dest_id > 0)
+ msg->id = inter_mail->savemessage(msg);
- mapif->mail_send(fd, &msg); // notify sender
- mapif->mail_new(&msg); // notify recipient
+ return true;
}
-void inter_mail_sendmail(int send_id, const char* send_name, int dest_id, const char* dest_name, const char* title, const char* body, int zeny, struct item *item)
+static void inter_mail_sendmail(int send_id, const char* send_name, int dest_id, const char *dest_name, const char *title, const char *body, int zeny, struct item *item)
{
struct mail_message msg;
nullpo_retv(send_name);
@@ -497,7 +405,7 @@ void inter_mail_sendmail(int send_id, const char* send_name, int dest_id, const
/*==========================================
* Packets From Map Server
*------------------------------------------*/
-int inter_mail_parse_frommap(int fd)
+static int inter_mail_parse_frommap(int fd)
{
switch(RFIFOW(fd,0))
{
@@ -513,12 +421,12 @@ int inter_mail_parse_frommap(int fd)
return 1;
}
-int inter_mail_sql_init(void)
+static int inter_mail_sql_init(void)
{
return 1;
}
-void inter_mail_sql_final(void)
+static void inter_mail_sql_final(void)
{
return;
}
@@ -535,4 +443,9 @@ void inter_mail_defaults(void)
inter_mail->sql_final = inter_mail_sql_final;
inter_mail->fromsql = inter_mail_fromsql;
inter_mail->loadmessage = inter_mail_loadmessage;
+ inter_mail->mark_read = inter_mail_mark_read;
+ inter_mail->get_attachment = inter_mail_get_attachment;
+ inter_mail->delete = inter_mail_delete;
+ inter_mail->return_message = inter_mail_return_message;
+ inter_mail->send = inter_mail_send;
}
diff --git a/src/char/int_mail.h b/src/char/int_mail.h
index cb72db504..95934d0a1 100644
--- a/src/char/int_mail.h
+++ b/src/char/int_mail.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -39,6 +39,11 @@ struct inter_mail_interface {
bool (*loadmessage) (int mail_id, struct mail_message* msg);
bool (*DeleteAttach) (int mail_id);
void (*sendmail) (int send_id, const char* send_name, int dest_id, const char* dest_name, const char* title, const char* body, int zeny, struct item *item);
+ bool (*mark_read) (int mail_id);
+ bool (*get_attachment) (int char_id, int mail_id, struct mail_message *msg);
+ bool (*delete) (int char_id, int mail_id);
+ bool (*return_message) (int char_id, int mail_id, int *new_mail);
+ bool (*send) (int account_id, struct mail_message *msg);
};
#ifdef HERCULES_CORE
diff --git a/src/char/int_mercenary.c b/src/char/int_mercenary.c
index f96e45a50..21bfb5538 100644
--- a/src/char/int_mercenary.c
+++ b/src/char/int_mercenary.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -38,10 +38,10 @@
#include <stdio.h>
#include <stdlib.h>
-struct inter_mercenary_interface inter_mercenary_s;
+static struct inter_mercenary_interface inter_mercenary_s;
struct inter_mercenary_interface *inter_mercenary;
-bool inter_mercenary_owner_fromsql(int char_id, struct mmo_charstatus *status)
+static bool inter_mercenary_owner_fromsql(int char_id, struct mmo_charstatus *status)
{
char* data;
@@ -70,7 +70,7 @@ bool inter_mercenary_owner_fromsql(int char_id, struct mmo_charstatus *status)
return true;
}
-bool inter_mercenary_owner_tosql(int char_id, struct mmo_charstatus *status)
+static bool inter_mercenary_owner_tosql(int char_id, struct mmo_charstatus *status)
{
nullpo_ret(status);
if( SQL_ERROR == SQL->Query(inter->sql_handle, "REPLACE INTO `%s` (`char_id`, `merc_id`, `arch_calls`, `arch_faith`, `spear_calls`, `spear_faith`, `sword_calls`, `sword_faith`) VALUES ('%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d')",
@@ -83,7 +83,7 @@ bool inter_mercenary_owner_tosql(int char_id, struct mmo_charstatus *status)
return true;
}
-bool inter_mercenary_owner_delete(int char_id)
+static bool inter_mercenary_owner_delete(int char_id)
{
if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `char_id` = '%d'", mercenary_owner_db, char_id) )
Sql_ShowDebug(inter->sql_handle);
@@ -104,7 +104,7 @@ bool inter_mercenary_owner_delete(int char_id)
* @param[in,out] merc The new mercenary's data.
* @retval false in case of errors.
*/
-bool mapif_mercenary_create(struct s_mercenary *merc)
+static bool inter_mercenary_create(struct s_mercenary *merc)
{
nullpo_retr(false, merc);
Assert_retr(false, merc->mercenary_id == 0);
@@ -126,7 +126,7 @@ bool mapif_mercenary_create(struct s_mercenary *merc)
* @param merc The mercenary's data.
* @retval false in case of errors.
*/
-bool mapif_mercenary_save(const struct s_mercenary *merc)
+static bool inter_mercenary_save(const struct s_mercenary *merc)
{
nullpo_retr(false, merc);
Assert_retr(false, merc->mercenary_id > 0);
@@ -141,7 +141,7 @@ bool mapif_mercenary_save(const struct s_mercenary *merc)
return true;
}
-bool mapif_mercenary_load(int merc_id, int char_id, struct s_mercenary *merc)
+static bool inter_mercenary_load(int merc_id, int char_id, struct s_mercenary *merc)
{
char* data;
@@ -174,7 +174,7 @@ bool mapif_mercenary_load(int merc_id, int char_id, struct s_mercenary *merc)
return true;
}
-bool mapif_mercenary_delete(int merc_id)
+static bool inter_mercenary_delete(int merc_id)
{
if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `mer_id` = '%d'", mercenary_db, merc_id) )
{
@@ -185,70 +185,12 @@ bool mapif_mercenary_delete(int merc_id)
return true;
}
-void mapif_mercenary_send(int fd, struct s_mercenary *merc, unsigned char flag)
-{
- int size = sizeof(struct s_mercenary) + 5;
-
- nullpo_retv(merc);
- WFIFOHEAD(fd,size);
- WFIFOW(fd,0) = 0x3870;
- WFIFOW(fd,2) = size;
- WFIFOB(fd,4) = flag;
- memcpy(WFIFOP(fd,5),merc,sizeof(struct s_mercenary));
- WFIFOSET(fd,size);
-}
-
-void mapif_parse_mercenary_create(int fd, const struct s_mercenary *merc)
-{
- struct s_mercenary merc_;
- bool result;
-
- memcpy(&merc_, merc, sizeof(merc_));
-
- result = mapif->mercenary_create(&merc_);
- mapif->mercenary_send(fd, &merc_, result);
-}
-
-void mapif_parse_mercenary_load(int fd, int merc_id, int char_id)
-{
- struct s_mercenary merc;
- bool result = mapif->mercenary_load(merc_id, char_id, &merc);
- mapif->mercenary_send(fd, &merc, result);
-}
-
-void mapif_mercenary_deleted(int fd, unsigned char flag)
-{
- WFIFOHEAD(fd,3);
- WFIFOW(fd,0) = 0x3871;
- WFIFOB(fd,2) = flag;
- WFIFOSET(fd,3);
-}
-
-void mapif_parse_mercenary_delete(int fd, int merc_id)
-{
- bool result = mapif->mercenary_delete(merc_id);
- mapif->mercenary_deleted(fd, result);
-}
-
-void mapif_mercenary_saved(int fd, unsigned char flag)
-{
- WFIFOHEAD(fd,3);
- WFIFOW(fd,0) = 0x3872;
- WFIFOB(fd,2) = flag;
- WFIFOSET(fd,3);
-}
-
-void mapif_parse_mercenary_save(int fd, struct s_mercenary* merc)
-{
- bool result = mapif->mercenary_save(merc);
- mapif->mercenary_saved(fd, result);
-}
-
-int inter_mercenary_sql_init(void)
+static int inter_mercenary_sql_init(void)
{
return 0;
}
-void inter_mercenary_sql_final(void)
+
+static void inter_mercenary_sql_final(void)
{
return;
}
@@ -256,7 +198,7 @@ void inter_mercenary_sql_final(void)
/*==========================================
* Inter Packets
*------------------------------------------*/
-int inter_mercenary_parse_frommap(int fd)
+static int inter_mercenary_parse_frommap(int fd)
{
unsigned short cmd = RFIFOW(fd,0);
@@ -282,4 +224,9 @@ void inter_mercenary_defaults(void)
inter_mercenary->sql_init = inter_mercenary_sql_init;
inter_mercenary->sql_final = inter_mercenary_sql_final;
inter_mercenary->parse_frommap = inter_mercenary_parse_frommap;
+
+ inter_mercenary->create = inter_mercenary_create;
+ inter_mercenary->load = inter_mercenary_load;
+ inter_mercenary->save = inter_mercenary_save;
+ inter_mercenary->delete = inter_mercenary_delete;
}
diff --git a/src/char/int_mercenary.h b/src/char/int_mercenary.h
index 3b1623438..6291bfcf6 100644
--- a/src/char/int_mercenary.h
+++ b/src/char/int_mercenary.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -22,6 +22,7 @@
#define CHAR_INT_MERCENARY_H
#include "common/hercules.h"
+#include "common/mmo.h"
struct mmo_charstatus;
@@ -35,6 +36,11 @@ struct inter_mercenary_interface {
int (*sql_init) (void);
void (*sql_final) (void);
int (*parse_frommap) (int fd);
+
+ bool (*create) (struct s_mercenary *merc);
+ bool (*save) (const struct s_mercenary *merc);
+ bool (*load) (int merc_id, int char_id, struct s_mercenary *merc);
+ bool (*delete) (int merc_id);
};
#ifdef HERCULES_CORE
diff --git a/src/char/int_party.c b/src/char/int_party.c
index 921bf6d9d..8ee03ecc5 100644
--- a/src/char/int_party.c
+++ b/src/char/int_party.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -39,11 +39,12 @@
#include <stdio.h>
#include <stdlib.h>
-struct inter_party_interface inter_party_s;
+static struct inter_party_interface inter_party_s;
struct inter_party_interface *inter_party;
//Updates party's level range and unsets even share if broken.
-static int inter_party_check_lv(struct party_data *p) {
+static int inter_party_check_lv(struct party_data *p)
+{
int i;
unsigned int lv;
nullpo_ret(p);
@@ -121,7 +122,7 @@ static void inter_party_calc_state(struct party_data *p)
}
// Save party to mysql
-int inter_party_tosql(struct party *p, int flag, int index)
+static int inter_party_tosql(struct party *p, int flag, int index)
{
// 'party' ('party_id','name','exp','item','leader_id','leader_char')
char esc_name[NAME_LENGTH*2+1];// escaped party name
@@ -196,7 +197,7 @@ int inter_party_tosql(struct party *p, int flag, int index)
}
// Read party from mysql
-struct party_data *inter_party_fromsql(int party_id)
+static struct party_data *inter_party_fromsql(int party_id)
{
int leader_id = 0;
int leader_char = 0;
@@ -268,7 +269,7 @@ struct party_data *inter_party_fromsql(int party_id)
return p;
}
-int inter_party_sql_init(void)
+static int inter_party_sql_init(void)
{
//memory alloc
inter_party->db = idb_alloc(DB_OPT_RELEASE_DATA);
@@ -287,7 +288,7 @@ int inter_party_sql_init(void)
return 0;
}
-void inter_party_sql_final(void)
+static void inter_party_sql_final(void)
{
inter_party->db->destroy(inter_party->db, NULL);
aFree(inter_party->pt);
@@ -295,7 +296,7 @@ void inter_party_sql_final(void)
}
// Search for the party according to its name
-struct party_data* inter_party_search_partyname(const char *const str)
+static struct party_data *inter_party_search_partyname(const char *const str)
{
char esc_name[NAME_LENGTH*2+1];
char* data;
@@ -314,14 +315,14 @@ struct party_data* inter_party_search_partyname(const char *const str)
}
// Returns whether this party can keep having exp share or not.
-int inter_party_check_exp_share(struct party_data *const p)
+static int inter_party_check_exp_share(struct party_data *const p)
{
nullpo_ret(p);
return (p->party.count < 2 || p->max_lv - p->min_lv <= party_share_level);
}
// Is there any member in the party?
-int inter_party_check_empty(struct party_data *p)
+static int inter_party_check_empty(struct party_data *p)
{
int i;
if (p==NULL||p->party.party_id==0) return 1;
@@ -333,161 +334,16 @@ int inter_party_check_empty(struct party_data *p)
return 1;
}
-//-------------------------------------------------------------------
-// Communication to the map server
-
-
-// Create a party whether or not
-int mapif_party_created(int fd, int account_id, int char_id, struct party *p)
-{
- WFIFOHEAD(fd, 39);
- WFIFOW(fd,0)=0x3820;
- WFIFOL(fd,2)=account_id;
- WFIFOL(fd,6)=char_id;
- if(p!=NULL){
- WFIFOB(fd,10)=0;
- WFIFOL(fd,11)=p->party_id;
- memcpy(WFIFOP(fd,15),p->name,NAME_LENGTH);
- ShowInfo("int_party: Party created (%d - %s)\n",p->party_id,p->name);
- }else{
- WFIFOB(fd,10)=1;
- WFIFOL(fd,11)=0;
- memset(WFIFOP(fd,15),0,NAME_LENGTH);
- }
- WFIFOSET(fd,39);
-
- return 0;
-}
-
-//Party information not found
-void mapif_party_noinfo(int fd, int party_id, int char_id)
-{
- WFIFOHEAD(fd, 12);
- WFIFOW(fd,0) = 0x3821;
- WFIFOW(fd,2) = 12;
- WFIFOL(fd,4) = char_id;
- WFIFOL(fd,8) = party_id;
- WFIFOSET(fd,12);
- ShowWarning("int_party: info not found (party_id=%d char_id=%d)\n", party_id, char_id);
-}
-
-//Digest party information
-void mapif_party_info(int fd, struct party* p, int char_id)
-{
- unsigned char buf[8 + sizeof(struct party)];
- nullpo_retv(p);
- WBUFW(buf,0) = 0x3821;
- WBUFW(buf,2) = 8 + sizeof(struct party);
- WBUFL(buf,4) = char_id;
- memcpy(WBUFP(buf,8), p, sizeof(struct party));
-
- if(fd<0)
- mapif->sendall(buf,WBUFW(buf,2));
- else
- mapif->send(fd,buf,WBUFW(buf,2));
-}
-
-//Whether or not additional party members
-int mapif_party_memberadded(int fd, int party_id, int account_id, int char_id, int flag) {
- WFIFOHEAD(fd, 15);
- WFIFOW(fd,0) = 0x3822;
- WFIFOL(fd,2) = party_id;
- WFIFOL(fd,6) = account_id;
- WFIFOL(fd,10) = char_id;
- WFIFOB(fd,14) = flag;
- WFIFOSET(fd,15);
-
- return 0;
-}
-
-// Party setting change notification
-int mapif_party_optionchanged(int fd, struct party *p, int account_id, int flag)
-{
- unsigned char buf[16];
- nullpo_ret(p);
- WBUFW(buf,0)=0x3823;
- WBUFL(buf,2)=p->party_id;
- WBUFL(buf,6)=account_id;
- WBUFW(buf,10)=p->exp;
- WBUFW(buf,12)=p->item;
- WBUFB(buf,14)=flag;
- if(flag==0)
- mapif->sendall(buf,15);
- else
- mapif->send(fd,buf,15);
- return 0;
-}
-
-//Withdrawal notification party
-int mapif_party_withdraw(int party_id,int account_id, int char_id) {
- unsigned char buf[16];
-
- WBUFW(buf,0) = 0x3824;
- WBUFL(buf,2) = party_id;
- WBUFL(buf,6) = account_id;
- WBUFL(buf,10) = char_id;
- mapif->sendall(buf, 14);
- return 0;
-}
-
-//Party map update notification
-int mapif_party_membermoved(struct party *p, int idx)
-{
- unsigned char buf[20];
-
- nullpo_ret(p);
- Assert_ret(idx >= 0 && idx < MAX_PARTY);
- WBUFW(buf,0) = 0x3825;
- WBUFL(buf,2) = p->party_id;
- WBUFL(buf,6) = p->member[idx].account_id;
- WBUFL(buf,10) = p->member[idx].char_id;
- WBUFW(buf,14) = p->member[idx].map;
- WBUFB(buf,16) = p->member[idx].online;
- WBUFW(buf,17) = p->member[idx].lv;
- mapif->sendall(buf, 19);
- return 0;
-}
-
-//Dissolution party notification
-int mapif_party_broken(int party_id, int flag)
-{
- unsigned char buf[16];
- WBUFW(buf,0)=0x3826;
- WBUFL(buf,2)=party_id;
- WBUFB(buf,6)=flag;
- mapif->sendall(buf,7);
- //printf("int_party: broken %d\n",party_id);
- return 0;
-}
-
-//Remarks in the party
-int mapif_party_message(int party_id, int account_id, const char *mes, int len, int sfd)
-{
- unsigned char buf[512];
- nullpo_ret(mes);
- WBUFW(buf,0)=0x3827;
- WBUFW(buf,2)=len+12;
- WBUFL(buf,4)=party_id;
- WBUFL(buf,8)=account_id;
- memcpy(WBUFP(buf,12),mes,len);
- mapif->sendallwos(sfd, buf,len+12);
- return 0;
-}
-
-//-------------------------------------------------------------------
-// Communication from the map server
-
-
// Create Party
-int mapif_parse_CreateParty(int fd, const char *name, int item, int item2, const struct party_member *leader)
+static struct party_data *inter_party_create(const char *name, int item, int item2, const struct party_member *leader)
{
struct party_data *p;
int i;
nullpo_ret(name);
nullpo_ret(leader);
- if (!*name || (p = inter_party->search_partyname(name)) != NULL) {
- mapif->party_created(fd,leader->account_id,leader->char_id,NULL);
- return 0;
+
+ if (!*name || inter_party->search_partyname(name) != NULL) {
+ return NULL;
}
// Check Authorized letters/symbols in the name of the character
if (char_name_option == 1) { // only letters/symbols in char_name_letters are authorized
@@ -497,18 +353,16 @@ int mapif_parse_CreateParty(int fd, const char *name, int item, int item2, const
char *newname = aStrndup(name, NAME_LENGTH-1);
normalize_name(newname,"\"");
trim(newname);
- mapif->parse_CreateParty(fd, newname, item, item2, leader);
+ p = inter_party->create(newname, item, item2, leader);
aFree(newname);
- return 0;
+ return p;
}
- mapif->party_created(fd,leader->account_id,leader->char_id,NULL);
- return 0;
+ return NULL;
}
} else if (char_name_option == 2) { // letters/symbols in char_name_letters are forbidden
for (i = 0; i < NAME_LENGTH && name[i]; i++)
if (strchr(char_name_letters, name[i]) != NULL) {
- mapif->party_created(fd,leader->account_id,leader->char_id,NULL);
- return 0;
+ return NULL;
}
}
@@ -523,34 +377,20 @@ int mapif_parse_CreateParty(int fd, const char *name, int item, int item2, const
p->party.member[0].online=1;
p->party.party_id=-1;//New party.
- if (inter_party->tosql(&p->party,PS_CREATE|PS_ADDMEMBER,0)) {
- //Add party to db
- inter_party->calc_state(p);
- idb_put(inter_party->db, p->party.party_id, p);
- mapif->party_info(fd, &p->party, 0);
- mapif->party_created(fd,leader->account_id,leader->char_id,&p->party);
- } else { //Failed to create party.
+ if (!inter_party->tosql(&p->party, PS_CREATE | PS_ADDMEMBER, 0)) {
aFree(p);
- mapif->party_created(fd,leader->account_id,leader->char_id,NULL);
+ return NULL;
}
- return 0;
-}
-
-// Party information request
-void mapif_parse_PartyInfo(int fd, int party_id, int char_id)
-{
- struct party_data *p;
- p = inter_party->fromsql(party_id);
+ //Add party to db
+ inter_party->calc_state(p);
+ idb_put(inter_party->db, p->party.party_id, p);
- if (p)
- mapif->party_info(fd, &p->party, char_id);
- else
- mapif->party_noinfo(fd, party_id, char_id);
+ return p;
}
// Add a player to party request
-int mapif_parse_PartyAddMember(int fd, int party_id, const struct party_member *member)
+static bool inter_party_add_member(int party_id, const struct party_member *member)
{
struct party_data *p;
int i;
@@ -558,15 +398,13 @@ int mapif_parse_PartyAddMember(int fd, int party_id, const struct party_member *
nullpo_ret(member);
p = inter_party->fromsql(party_id);
if( p == NULL || p->size == MAX_PARTY ) {
- mapif->party_memberadded(fd, party_id, member->account_id, member->char_id, 1);
- return 0;
+ return false;
}
ARR_FIND( 0, MAX_PARTY, i, p->party.member[i].account_id == 0 );
- if( i == MAX_PARTY )
- {// Party full
- mapif->party_memberadded(fd, party_id, member->account_id, member->char_id, 1);
- return 0;
+ if (i == MAX_PARTY) {
+ // Party full
+ return false;
}
memcpy(&p->party.member[i], member, sizeof(struct party_member));
@@ -582,21 +420,20 @@ int mapif_parse_PartyAddMember(int fd, int party_id, const struct party_member *
}
mapif->party_info(-1, &p->party, 0);
- mapif->party_memberadded(fd, party_id, member->account_id, member->char_id, 0);
inter_party->tosql(&p->party, PS_ADDMEMBER, i);
- return 0;
+ return true;
}
//Party setting change request
-int mapif_parse_PartyChangeOption(int fd,int party_id,int account_id,int exp,int item)
+static bool inter_party_change_option(int party_id, int account_id, int exp, int item, int map_fd)
{
struct party_data *p;
int flag = 0;
p = inter_party->fromsql(party_id);
if(!p)
- return 0;
+ return false;
p->party.exp=exp;
if( exp && !inter_party->check_exp_share(p) ){
@@ -604,13 +441,13 @@ int mapif_parse_PartyChangeOption(int fd,int party_id,int account_id,int exp,int
p->party.exp=0;
}
p->party.item = item&0x3; //Filter out invalid values.
- mapif->party_optionchanged(fd,&p->party,account_id,flag);
+ mapif->party_optionchanged(map_fd, &p->party, account_id, flag);
inter_party->tosql(&p->party, PS_BASIC, 0);
- return 0;
+ return true;
}
//Request leave party
-int mapif_parse_PartyLeave(int fd, int party_id, int account_id, int char_id)
+static bool inter_party_leave(int party_id, int account_id, int char_id)
{
struct party_data *p;
int i,j;
@@ -620,7 +457,7 @@ int mapif_parse_PartyLeave(int fd, int party_id, int account_id, int char_id)
{// Party does not exists?
if( SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `party_id`='0' WHERE `party_id`='%d'", char_db, party_id) )
Sql_ShowDebug(inter->sql_handle);
- return 0;
+ return false;
}
for (i = 0; i < MAX_PARTY; i++) {
@@ -630,10 +467,10 @@ int mapif_parse_PartyLeave(int fd, int party_id, int account_id, int char_id)
}
}
if (i >= MAX_PARTY)
- return 0; //Member not found?
+ return false; //Member not found?
mapif->party_withdraw(party_id, account_id, char_id);
-
+
j = p->party.member[i].lv;
if (p->party.member[i].online > 0)
p->party.count--;
@@ -648,23 +485,25 @@ int mapif_parse_PartyLeave(int fd, int party_id, int account_id, int char_id)
inter_party->tosql(&p->party, PS_DELMEMBER, i);
mapif->party_info(-1, &p->party, 0);
}
- return 0;
+ return true;
}
+
// When member goes to other map or levels up.
-int mapif_parse_PartyChangeMap(int fd, int party_id, int account_id, int char_id, unsigned short map, int online, unsigned int lv)
+static bool inter_party_change_map(int party_id, int account_id, int char_id, unsigned short map, int online, unsigned int lv)
{
struct party_data *p;
int i;
p = inter_party->fromsql(party_id);
if (p == NULL)
- return 0;
+ return false;
for(i = 0; i < MAX_PARTY &&
(p->party.member[i].account_id != account_id ||
p->party.member[i].char_id != char_id); i++);
- if (i == MAX_PARTY) return 0;
+ if (i == MAX_PARTY)
+ return false;
if (p->party.member[i].online != online)
{
@@ -704,30 +543,24 @@ int mapif_parse_PartyChangeMap(int fd, int party_id, int account_id, int char_id
p->party.member[i].map = map;
mapif->party_membermoved(&p->party, i);
}
- return 0;
+ return true;
}
//Request party dissolution
-int mapif_parse_BreakParty(int fd, int party_id)
+static bool inter_party_disband(int party_id)
{
struct party_data *p;
p = inter_party->fromsql(party_id);
if(!p)
- return 0;
+ return false;
inter_party->tosql(&p->party,PS_BREAK,0);
- mapif->party_broken(fd,party_id);
+ mapif->party_broken(party_id, 1);
return 0;
}
-//Party sending the message
-int mapif_parse_PartyMessage(int fd, int party_id, int account_id, const char *mes, int len)
-{
- return mapif->party_message(party_id,account_id,mes,len, fd);
-}
-
-int mapif_parse_PartyLeaderChange(int fd, int party_id, int account_id, int char_id)
+static bool inter_party_change_leader(int party_id, int account_id, int char_id)
{
struct party_data *p;
int i;
@@ -735,7 +568,7 @@ int mapif_parse_PartyLeaderChange(int fd, int party_id, int account_id, int char
p = inter_party->fromsql(party_id);
if(!p)
- return 0;
+ return false;
for (i = 0; i < MAX_PARTY; i++) {
if(p->party.member[i].leader)
@@ -745,10 +578,9 @@ int mapif_parse_PartyLeaderChange(int fd, int party_id, int account_id, int char
inter_party->tosql(&p->party,PS_LEADER, i);
}
}
- return 1;
+ return true;
}
-
// Communication from the map server
//-Analysis that only one packet
// Data packet length is set to inter.c that you
@@ -756,7 +588,7 @@ int mapif_parse_PartyLeaderChange(int fd, int party_id, int account_id, int char
// Return :
// 0 : error
// 1 : ok
-int inter_party_parse_frommap(int fd)
+static int inter_party_parse_frommap(int fd)
{
RFIFOHEAD(fd);
switch(RFIFOW(fd,0)) {
@@ -775,13 +607,7 @@ int inter_party_parse_frommap(int fd)
return 1;
}
-//Leave request from the server (for delete character)
-int inter_party_leave(int party_id,int account_id, int char_id)
-{
- return mapif->parse_PartyLeave(-1,party_id,account_id, char_id);
-}
-
-int inter_party_CharOnline(int char_id, int party_id)
+static int inter_party_CharOnline(int char_id, int party_id)
{
struct party_data* p;
int i;
@@ -828,7 +654,8 @@ int inter_party_CharOnline(int char_id, int party_id)
return 1;
}
-int inter_party_CharOffline(int char_id, int party_id) {
+static int inter_party_CharOffline(int char_id, int party_id)
+{
struct party_data *p=NULL;
int i;
@@ -895,4 +722,11 @@ void inter_party_defaults(void)
inter_party->leave = inter_party_leave;
inter_party->CharOnline = inter_party_CharOnline;
inter_party->CharOffline = inter_party_CharOffline;
+
+ inter_party->create = inter_party_create;
+ inter_party->add_member = inter_party_add_member;
+ inter_party->change_option = inter_party_change_option;
+ inter_party->change_map = inter_party_change_map;
+ inter_party->disband = inter_party_disband;
+ inter_party->change_leader = inter_party_change_leader;
}
diff --git a/src/char/int_party.h b/src/char/int_party.h
index 77363dd45..b9a888cca 100644
--- a/src/char/int_party.h
+++ b/src/char/int_party.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -60,9 +60,15 @@ struct inter_party_interface {
int (*check_exp_share) (struct party_data *p);
int (*check_empty) (struct party_data *p);
int (*parse_frommap) (int fd);
- int (*leave) (int party_id,int account_id, int char_id);
+ bool (*leave) (int party_id,int account_id, int char_id);
int (*CharOnline) (int char_id, int party_id);
int (*CharOffline) (int char_id, int party_id);
+ struct party_data *(*create) (const char *name, int item, int item2, const struct party_member *leader);
+ bool (*add_member) (int party_id, const struct party_member *member);
+ bool (*change_option) (int party_id, int account_id, int exp, int item, int map_fd);
+ bool (*change_map) (int party_id, int account_id, int char_id, unsigned short map, int online, unsigned int lv);
+ bool (*disband) (int party_id);
+ bool (*change_leader) (int party_id, int account_id, int char_id);
};
#ifdef HERCULES_CORE
diff --git a/src/char/int_pet.c b/src/char/int_pet.c
index 489b10e3e..8f87becff 100644
--- a/src/char/int_pet.c
+++ b/src/char/int_pet.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -37,7 +37,7 @@
#include <stdio.h>
#include <stdlib.h>
-struct inter_pet_interface inter_pet_s;
+static struct inter_pet_interface inter_pet_s;
struct inter_pet_interface *inter_pet;
/**
@@ -51,7 +51,7 @@ struct inter_pet_interface *inter_pet;
* @return The ID of the saved pet.
* @retval 0 in case of errors.
*/
-int inter_pet_tosql(const struct s_pet *p)
+static int inter_pet_tosql(const struct s_pet *p)
{
//`pet` (`pet_id`, `class`,`name`,`account_id`,`char_id`,`level`,`egg_id`,`equip`,`intimate`,`hungry`,`rename_flag`,`incubate`)
char esc_name[NAME_LENGTH*2+1];// escaped pet name
@@ -66,19 +66,19 @@ int inter_pet_tosql(const struct s_pet *p)
if (p->pet_id == 0) {
// New pet.
if (SQL_ERROR == SQL->Query(inter->sql_handle, "INSERT INTO `%s` "
- "(`class`,`name`,`account_id`,`char_id`,`level`,`egg_id`,`equip`,`intimate`,`hungry`,`rename_flag`,`incubate`) "
- "VALUES ('%d', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d')",
+ "(`class`,`name`,`account_id`,`char_id`,`level`,`egg_id`,`equip`,`intimate`,`hungry`,`rename_flag`,`incubate`, `autofeed`) "
+ "VALUES ('%d', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d')",
pet_db, p->class_, esc_name, p->account_id, p->char_id, p->level, p->egg_id,
- p->equip, intimate, hungry, p->rename_flag, p->incubate)) {
+ p->equip, intimate, hungry, p->rename_flag, p->incubate, p->autofeed)) {
Sql_ShowDebug(inter->sql_handle);
return 0;
}
pet_id = (int)SQL->LastInsertId(inter->sql_handle);
} else {
// Update pet.
- if (SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `class`='%d',`name`='%s',`account_id`='%d',`char_id`='%d',`level`='%d',`egg_id`='%d',`equip`='%d',`intimate`='%d',`hungry`='%d',`rename_flag`='%d',`incubate`='%d' WHERE `pet_id`='%d'",
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `class`='%d',`name`='%s',`account_id`='%d',`char_id`='%d',`level`='%d',`egg_id`='%d',`equip`='%d',`intimate`='%d',`hungry`='%d',`rename_flag`='%d',`incubate`='%d', `autofeed`='%d' WHERE `pet_id`='%d'",
pet_db, p->class_, esc_name, p->account_id, p->char_id, p->level, p->egg_id,
- p->equip, intimate, hungry, p->rename_flag, p->incubate, p->pet_id)) {
+ p->equip, intimate, hungry, p->rename_flag, p->incubate, p->autofeed, p->pet_id)) {
Sql_ShowDebug(inter->sql_handle);
return 0;
}
@@ -91,7 +91,7 @@ int inter_pet_tosql(const struct s_pet *p)
return pet_id;
}
-int inter_pet_fromsql(int pet_id, struct s_pet* p)
+static int inter_pet_fromsql(int pet_id, struct s_pet *p)
{
char* data;
size_t len;
@@ -102,9 +102,9 @@ int inter_pet_fromsql(int pet_id, struct s_pet* p)
nullpo_ret(p);
memset(p, 0, sizeof(struct s_pet));
- //`pet` (`pet_id`, `class`,`name`,`account_id`,`char_id`,`level`,`egg_id`,`equip`,`intimate`,`hungry`,`rename_flag`,`incubate`)
+ //`pet` (`pet_id`, `class`,`name`,`account_id`,`char_id`,`level`,`egg_id`,`equip`,`intimate`,`hungry`,`rename_flag`,`incubate`, `autofeed`)
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `pet_id`, `class`,`name`,`account_id`,`char_id`,`level`,`egg_id`,`equip`,`intimate`,`hungry`,`rename_flag`,`incubate` FROM `%s` WHERE `pet_id`='%d'", pet_db, pet_id) )
+ if( SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `pet_id`, `class`,`name`,`account_id`,`char_id`,`level`,`egg_id`,`equip`,`intimate`,`hungry`,`rename_flag`,`incubate`,`autofeed` FROM `%s` WHERE `pet_id`='%d'", pet_db, pet_id) )
{
Sql_ShowDebug(inter->sql_handle);
return 0;
@@ -124,6 +124,7 @@ int inter_pet_fromsql(int pet_id, struct s_pet* p)
SQL->GetData(inter->sql_handle, 9, &data, NULL); p->hungry = atoi(data);
SQL->GetData(inter->sql_handle, 10, &data, NULL); p->rename_flag = atoi(data);
SQL->GetData(inter->sql_handle, 11, &data, NULL); p->incubate = atoi(data);
+ SQL->GetData(inter->sql_handle, 12, &data, NULL); p->autofeed = atoi(data);
SQL->FreeResult(inter->sql_handle);
@@ -137,17 +138,21 @@ int inter_pet_fromsql(int pet_id, struct s_pet* p)
}
//----------------------------------------------
-int inter_pet_sql_init(void) {
+static int inter_pet_sql_init(void)
+{
//memory alloc
inter_pet->pt = (struct s_pet*)aCalloc(sizeof(struct s_pet), 1);
return 0;
}
-void inter_pet_sql_final(void) {
+
+static void inter_pet_sql_final(void)
+{
if (inter_pet->pt) aFree(inter_pet->pt);
return;
}
//----------------------------------
-int inter_pet_delete(int pet_id) {
+static int inter_pet_delete(int pet_id)
+{
ShowInfo("delete pet request: %d...\n",pet_id);
if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `pet_id`='%d'", pet_db, pet_id) )
@@ -155,74 +160,8 @@ int inter_pet_delete(int pet_id) {
return 0;
}
//------------------------------------------------------
-int mapif_pet_created(int fd, int account_id, struct s_pet *p)
-{
- WFIFOHEAD(fd, 12);
- WFIFOW(fd, 0) = 0x3880;
- WFIFOL(fd, 2) = account_id;
- if(p!=NULL){
- WFIFOW(fd, 6) = p->class_;
- WFIFOL(fd, 8) = p->pet_id;
- ShowInfo("int_pet: created pet %d - %s\n", p->pet_id, p->name);
- }else{
- WFIFOB(fd, 6) = 0;
- WFIFOL(fd, 8) = 0;
- }
- WFIFOSET(fd, 12);
-
- return 0;
-}
-
-int mapif_pet_info(int fd, int account_id, struct s_pet *p)
-{
- nullpo_ret(p);
- WFIFOHEAD(fd, sizeof(struct s_pet) + 9);
- WFIFOW(fd, 0) =0x3881;
- WFIFOW(fd, 2) =sizeof(struct s_pet) + 9;
- WFIFOL(fd, 4) =account_id;
- WFIFOB(fd, 8)=0;
- memcpy(WFIFOP(fd, 9), p, sizeof(struct s_pet));
- WFIFOSET(fd, WFIFOW(fd, 2));
-
- return 0;
-}
-
-int mapif_pet_noinfo(int fd, int account_id)
-{
- WFIFOHEAD(fd, sizeof(struct s_pet) + 9);
- WFIFOW(fd, 0) =0x3881;
- WFIFOW(fd, 2) =sizeof(struct s_pet) + 9;
- WFIFOL(fd, 4) =account_id;
- WFIFOB(fd, 8)=1;
- memset(WFIFOP(fd, 9), 0, sizeof(struct s_pet));
- WFIFOSET(fd, WFIFOW(fd, 2));
-
- return 0;
-}
-
-int mapif_save_pet_ack(int fd, int account_id, int flag)
-{
- WFIFOHEAD(fd, 7);
- WFIFOW(fd, 0) =0x3882;
- WFIFOL(fd, 2) =account_id;
- WFIFOB(fd, 6) =flag;
- WFIFOSET(fd, 7);
-
- return 0;
-}
-
-int mapif_delete_pet_ack(int fd, int flag)
-{
- WFIFOHEAD(fd, 3);
- WFIFOW(fd, 0) =0x3883;
- WFIFOB(fd, 2) =flag;
- WFIFOSET(fd, 3);
-
- return 0;
-}
-
-int mapif_create_pet(int fd, int account_id, int char_id, short pet_class, short pet_lv, short pet_egg_id,
- short pet_equip, short intimate, short hungry, char rename_flag, char incubate, const char *pet_name)
+static struct s_pet *inter_pet_create(int account_id, int char_id, short pet_class, short pet_lv, int pet_egg_id,
+ int pet_equip, short intimate, short hungry, char rename_flag, char incubate, const char *pet_name)
{
nullpo_ret(pet_name);
memset(inter_pet->pt, 0, sizeof(struct s_pet));
@@ -253,90 +192,32 @@ int mapif_create_pet(int fd, int account_id, int char_id, short pet_class, short
inter_pet->pt->pet_id = 0; //Signal NEW pet.
if ((inter_pet->pt->pet_id = inter_pet->tosql(inter_pet->pt)) != 0)
- mapif->pet_created(fd, account_id, inter_pet->pt);
+ return inter_pet->pt;
else //Failed...
- mapif->pet_created(fd, account_id, NULL);
-
- return 0;
+ return NULL;
}
-int mapif_load_pet(int fd, int account_id, int char_id, int pet_id)
+static struct s_pet *inter_pet_load(int account_id, int char_id, int pet_id)
{
memset(inter_pet->pt, 0, sizeof(struct s_pet));
inter_pet->fromsql(pet_id, inter_pet->pt);
if(inter_pet->pt!=NULL) {
- if(inter_pet->pt->incubate == 1) {
+ if (inter_pet->pt->incubate == 1) {
inter_pet->pt->account_id = inter_pet->pt->char_id = 0;
- mapif->pet_info(fd, account_id, inter_pet->pt);
+ return inter_pet->pt;
+ } else if (account_id == inter_pet->pt->account_id && char_id == inter_pet->pt->char_id) {
+ return inter_pet->pt;
+ } else {
+ return NULL;
}
- else if(account_id == inter_pet->pt->account_id && char_id == inter_pet->pt->char_id)
- mapif->pet_info(fd, account_id, inter_pet->pt);
- else
- mapif->pet_noinfo(fd, account_id);
- }
- else
- mapif->pet_noinfo(fd, account_id);
-
- return 0;
-}
-
-int mapif_save_pet(int fd, int account_id, const struct s_pet *data)
-{
- //here process pet save request.
- int len;
- nullpo_ret(data);
- RFIFOHEAD(fd);
- len=RFIFOW(fd, 2);
- if (sizeof(struct s_pet) != len-8) {
- ShowError("inter pet: data size mismatch: %d != %"PRIuS"\n", len-8, sizeof(struct s_pet));
- return 0;
}
- inter_pet->tosql(data);
- mapif->save_pet_ack(fd, account_id, 0);
-
- return 0;
-}
-
-int mapif_delete_pet(int fd, int pet_id)
-{
- mapif->delete_pet_ack(fd, inter_pet->delete_(pet_id));
-
- return 0;
+ return NULL;
}
-int mapif_parse_CreatePet(int fd)
-{
- RFIFOHEAD(fd);
- mapif->create_pet(fd, RFIFOL(fd, 2), RFIFOL(fd, 6), RFIFOW(fd, 10), RFIFOW(fd, 12), RFIFOW(fd, 14), RFIFOW(fd, 16), RFIFOW(fd, 18),
- RFIFOW(fd, 20), RFIFOB(fd, 22), RFIFOB(fd, 23), RFIFOP(fd, 24));
- return 0;
-}
-
-int mapif_parse_LoadPet(int fd)
-{
- RFIFOHEAD(fd);
- mapif->load_pet(fd, RFIFOL(fd, 2), RFIFOL(fd, 6), RFIFOL(fd, 10));
- return 0;
-}
-
-int mapif_parse_SavePet(int fd)
-{
- RFIFOHEAD(fd);
- mapif->save_pet(fd, RFIFOL(fd, 4), RFIFOP(fd, 8));
- return 0;
-}
-
-int mapif_parse_DeletePet(int fd)
-{
- RFIFOHEAD(fd);
- mapif->delete_pet(fd, RFIFOL(fd, 2));
- return 0;
-}
-
-int inter_pet_parse_frommap(int fd)
+static int inter_pet_parse_frommap(int fd)
{
RFIFOHEAD(fd);
switch(RFIFOW(fd, 0)){
@@ -362,4 +243,7 @@ void inter_pet_defaults(void)
inter_pet->sql_final = inter_pet_sql_final;
inter_pet->delete_ = inter_pet_delete;
inter_pet->parse_frommap = inter_pet_parse_frommap;
+
+ inter_pet->create = inter_pet_create;
+ inter_pet->load = inter_pet_load;
}
diff --git a/src/char/int_pet.h b/src/char/int_pet.h
index 13291e226..104771735 100644
--- a/src/char/int_pet.h
+++ b/src/char/int_pet.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -36,6 +36,10 @@ struct inter_pet_interface {
void (*sql_final) (void);
int (*delete_) (int pet_id);
int (*parse_frommap) (int fd);
+
+ struct s_pet *(*create) (int account_id, int char_id, short pet_class, short pet_lv, int pet_egg_id,
+ int pet_equip, short intimate, short hungry, char rename_flag, char incubate, const char *pet_name);
+ struct s_pet *(*load) (int account_id, int char_id, int pet_id);
};
#ifdef HERCULES_CORE
diff --git a/src/char/int_quest.c b/src/char/int_quest.c
index bd49cb7d4..0fa7771cb 100644
--- a/src/char/int_quest.c
+++ b/src/char/int_quest.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -37,7 +37,7 @@
#include <stdio.h>
#include <stdlib.h>
-struct inter_quest_interface inter_quest_s;
+static struct inter_quest_interface inter_quest_s;
struct inter_quest_interface *inter_quest;
/**
@@ -48,7 +48,7 @@ struct inter_quest_interface *inter_quest;
* @return Array of found entries. It has *count entries, and it is care of the
* caller to aFree() it afterwards.
*/
-struct quest *mapif_quests_fromsql(int char_id, int *count)
+static struct quest *inter_quest_fromsql(int char_id, int *count)
{
struct quest *questlog = NULL;
struct quest tmp_quest;
@@ -56,6 +56,7 @@ struct quest *mapif_quests_fromsql(int char_id, int *count)
StringBuf buf;
int i;
int sqlerror = SQL_SUCCESS;
+ int quest_state = 0;
if (!count)
return NULL;
@@ -77,11 +78,11 @@ struct quest *mapif_quests_fromsql(int char_id, int *count)
memset(&tmp_quest, 0, sizeof(struct quest));
if (SQL_ERROR == SQL->StmtPrepareStr(stmt, StrBuf->Value(&buf))
- || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_INT, &char_id, 0)
+ || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_INT, &char_id, sizeof char_id)
|| SQL_ERROR == SQL->StmtExecute(stmt)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 0, SQLDT_INT, &tmp_quest.quest_id, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 1, SQLDT_INT, &tmp_quest.state, 0, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 2, SQLDT_UINT, &tmp_quest.time, 0, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 0, SQLDT_INT, &tmp_quest.quest_id, sizeof tmp_quest.quest_id, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 1, SQLDT_INT, &quest_state, sizeof quest_state, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 2, SQLDT_UINT, &tmp_quest.time, sizeof tmp_quest.time, NULL, NULL)
) {
sqlerror = SQL_ERROR;
}
@@ -89,7 +90,7 @@ struct quest *mapif_quests_fromsql(int char_id, int *count)
StrBuf->Destroy(&buf);
for (i = 0; sqlerror != SQL_ERROR && i < MAX_QUEST_OBJECTIVES; i++) { // Stop on the first error
- sqlerror = SQL->StmtBindColumn(stmt, 3+i, SQLDT_INT, &tmp_quest.count[i], 0, NULL, NULL);
+ sqlerror = SQL->StmtBindColumn(stmt, 3+i, SQLDT_INT, &tmp_quest.count[i], sizeof tmp_quest.count[i], NULL, NULL);
}
if (sqlerror == SQL_ERROR) {
@@ -105,9 +106,10 @@ struct quest *mapif_quests_fromsql(int char_id, int *count)
questlog = (struct quest *)aCalloc(*count, sizeof(struct quest));
while (SQL_SUCCESS == SQL->StmtNextRow(stmt)) {
+ tmp_quest.state = quest_state;
if (i >= *count) // Sanity check, should never happen
break;
- memcpy(&questlog[i++], &tmp_quest, sizeof(tmp_quest));
+ questlog[i++] = tmp_quest;
}
if (i < *count) {
// Should never happen. Compact array
@@ -127,7 +129,7 @@ struct quest *mapif_quests_fromsql(int char_id, int *count)
* @param quest_id Quest ID
* @return false in case of errors, true otherwise
*/
-bool mapif_quest_delete(int char_id, int quest_id)
+static bool inter_quest_delete(int char_id, int quest_id)
{
if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `quest_id` = '%d' AND `char_id` = '%d'", quest_db, quest_id, char_id)) {
Sql_ShowDebug(inter->sql_handle);
@@ -144,7 +146,7 @@ bool mapif_quest_delete(int char_id, int quest_id)
* @param qd Quest data
* @return false in case of errors, true otherwise
*/
-bool mapif_quest_add(int char_id, struct quest qd)
+static bool inter_quest_add(int char_id, struct quest qd)
{
StringBuf buf;
int i;
@@ -176,7 +178,7 @@ bool mapif_quest_add(int char_id, struct quest qd)
* @param qd Quest data
* @return false in case of errors, true otherwise
*/
-bool mapif_quest_update(int char_id, struct quest qd)
+static bool inter_quest_update(int char_id, struct quest qd)
{
StringBuf buf;
int i;
@@ -198,34 +200,13 @@ bool mapif_quest_update(int char_id, struct quest qd)
return true;
}
-void mapif_quest_save_ack(int fd, int char_id, bool success)
+static bool inter_quest_save(int char_id, const struct quest *new_qd, int new_n)
{
- WFIFOHEAD(fd,7);
- WFIFOW(fd,0) = 0x3861;
- WFIFOL(fd,2) = char_id;
- WFIFOB(fd,6) = success?1:0;
- WFIFOSET(fd,7);
-}
-
-/**
- * Handles the save request from mapserver for a character's questlog.
- *
- * Received quests are saved, and an ack is sent back to the map server.
- *
- * @see inter_parse_frommap
- */
-int mapif_parse_quest_save(int fd)
-{
- int i, j, k, old_n, new_n = (RFIFOW(fd,2)-8)/sizeof(struct quest);
- int char_id = RFIFOL(fd,4);
+ int i, j, k, old_n;
struct quest *old_qd = NULL;
- const struct quest *new_qd = NULL;
bool success = true;
- if (new_n > 0)
- new_qd = RFIFOP(fd,8);
-
- old_qd = mapif->quests_fromsql(char_id, &old_n);
+ old_qd = inter_quest->fromsql(char_id, &old_n);
for (i = 0; i < new_n; i++) {
ARR_FIND( 0, old_n, j, new_qd[i].quest_id == old_qd[j].quest_id );
@@ -235,7 +216,7 @@ int mapif_parse_quest_save(int fd)
// Only states and counts are changeable.
ARR_FIND( 0, MAX_QUEST_OBJECTIVES, k, new_qd[i].count[k] != old_qd[j].count[k] );
if (k != MAX_QUEST_OBJECTIVES || new_qd[i].state != old_qd[j].state)
- success &= mapif->quest_update(char_id, new_qd[i]);
+ success &= inter_quest->update(char_id, new_qd[i]);
if (j < (--old_n)) {
// Compact array
@@ -244,59 +225,17 @@ int mapif_parse_quest_save(int fd)
}
} else {
// Add new quests
- success &= mapif->quest_add(char_id, new_qd[i]);
+ success &= inter_quest->add(char_id, new_qd[i]);
}
}
for (i = 0; i < old_n; i++) // Quests not in new_qd but in old_qd are to be erased.
- success &= mapif->quest_delete(char_id, old_qd[i].quest_id);
+ success &= inter_quest->delete(char_id, old_qd[i].quest_id);
if (old_qd)
aFree(old_qd);
- // Send ack
- mapif->quest_save_ack(fd, char_id, success);
-
- return 0;
-}
-
-void mapif_send_quests(int fd, int char_id, struct quest *tmp_questlog, int num_quests)
-{
- WFIFOHEAD(fd,num_quests*sizeof(struct quest)+8);
- WFIFOW(fd,0) = 0x3860;
- WFIFOW(fd,2) = num_quests*sizeof(struct quest)+8;
- WFIFOL(fd,4) = char_id;
-
- if (num_quests > 0) {
- nullpo_retv(tmp_questlog);
- memcpy(WFIFOP(fd,8), tmp_questlog, sizeof(struct quest)*num_quests);
- }
-
- WFIFOSET(fd,num_quests*sizeof(struct quest)+8);
-}
-
-/**
- * Sends questlog to the map server
- *
- * Note: Completed quests (state == Q_COMPLETE) are guaranteed to be sent last
- * and the map server relies on this behavior (once the first Q_COMPLETE quest,
- * all of them are considered to be Q_COMPLETE)
- *
- * @see inter_parse_frommap
- */
-int mapif_parse_quest_load(int fd)
-{
- int char_id = RFIFOL(fd,2);
- struct quest *tmp_questlog = NULL;
- int num_quests;
-
- tmp_questlog = mapif->quests_fromsql(char_id, &num_quests);
- mapif->send_quests(fd, char_id, tmp_questlog, num_quests);
-
- if (tmp_questlog)
- aFree(tmp_questlog);
-
- return 0;
+ return success;
}
/**
@@ -304,7 +243,7 @@ int mapif_parse_quest_load(int fd)
*
* @see inter_parse_frommap
*/
-int inter_quest_parse_frommap(int fd)
+static int inter_quest_parse_frommap(int fd)
{
switch(RFIFOW(fd,0)) {
case 0x3060: mapif->parse_quest_load(fd); break;
@@ -320,4 +259,9 @@ void inter_quest_defaults(void)
inter_quest = &inter_quest_s;
inter_quest->parse_frommap = inter_quest_parse_frommap;
+ inter_quest->fromsql = inter_quest_fromsql;
+ inter_quest->delete = inter_quest_delete;
+ inter_quest->add = inter_quest_add;
+ inter_quest->update = inter_quest_update;
+ inter_quest->save = inter_quest_save;
}
diff --git a/src/char/int_quest.h b/src/char/int_quest.h
index 737213fff..e71afc561 100644
--- a/src/char/int_quest.h
+++ b/src/char/int_quest.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -28,6 +28,12 @@
**/
struct inter_quest_interface {
int (*parse_frommap) (int fd);
+
+ struct quest *(*fromsql) (int char_id, int *count);
+ bool (*delete) (int char_id, int quest_id);
+ bool (*add) (int char_id, struct quest qd);
+ bool (*update) (int char_id, struct quest qd);
+ bool (*save) (int char_id, const struct quest *new_qd, int new_n);
};
#ifdef HERCULES_CORE
diff --git a/src/char/int_rodex.c b/src/char/int_rodex.c
new file mode 100644
index 000000000..18c277574
--- /dev/null
+++ b/src/char/int_rodex.c
@@ -0,0 +1,432 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2017 Hercules Dev Team
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#define HERCULES_CORE
+
+#include "int_rodex.h"
+
+#include "char/char.h"
+#include "char/inter.h"
+#include "char/mapif.h"
+#include "common/db.h"
+#include "common/memmgr.h"
+#include "common/mmo.h"
+#include "common/nullpo.h"
+#include "common/showmsg.h"
+#include "common/socket.h"
+#include "common/sql.h"
+#include "common/strlib.h"
+#include "common/timer.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+static struct inter_rodex_interface inter_rodex_s;
+struct inter_rodex_interface *inter_rodex;
+
+// Loads new mails of this char_id/account_id
+static int inter_rodex_fromsql(int char_id, int account_id, int8 opentype, int64 mail_id, struct rodex_maillist *mails)
+{
+ int count = 0;
+ struct rodex_message msg = { 0 };
+ struct SqlStmt *stmt;
+
+ nullpo_retr(-1, mails);
+
+ stmt = SQL->StmtMalloc(inter->sql_handle);
+
+ switch (opentype) {
+ case RODEX_OPENTYPE_MAIL:
+ if (SQL_ERROR == SQL->StmtPrepare(stmt,
+ "SELECT `mail_id`, `sender_name`, `sender_id`, `receiver_name`, `receiver_id`, `receiver_accountid`,"
+ "`title`, `body`, `zeny`, `type`, `is_read`, `sender_read`, `send_date`, `expire_date`, `weight`"
+ "FROM `%s` WHERE `expire_date` > '%d' AND `receiver_id` = '%d' AND `mail_id` > '%"PRId64"'"
+ "ORDER BY `mail_id` ASC", rodex_db, (int)time(NULL), char_id, mail_id)
+ ) {
+ SqlStmt_ShowDebug(stmt);
+ SQL->StmtFree(stmt);
+ return -1;
+ }
+ break;
+
+ case RODEX_OPENTYPE_ACCOUNT:
+ if (SQL_ERROR == SQL->StmtPrepare(stmt,
+ "SELECT `mail_id`, `sender_name`, `sender_id`, `receiver_name`, `receiver_id`, `receiver_accountid`,"
+ "`title`, `body`, `zeny`, `type`, `is_read`, `sender_read`, `send_date`, `expire_date`, `weight`"
+ "FROM `%s` WHERE "
+ "`expire_date` > '%d' AND `receiver_accountid` = '%d' AND `mail_id` > '%"PRId64"'"
+ "ORDER BY `mail_id` ASC", rodex_db, (int)time(NULL), account_id, mail_id)
+ ) {
+ SqlStmt_ShowDebug(stmt);
+ SQL->StmtFree(stmt);
+ return -1;
+ }
+ break;
+
+ case RODEX_OPENTYPE_RETURN:
+ if (SQL_ERROR == SQL->StmtPrepare(stmt,
+ "SELECT `mail_id`, `sender_name`, `sender_id`, `receiver_name`, `receiver_id`, `receiver_accountid`,"
+ "`title`, `body`, `zeny`, `type`, `is_read`, `sender_read`, `send_date`, `expire_date`, `weight`"
+ "FROM `%s` WHERE (`is_read` = 0 AND `sender_id` = '%d' AND `expire_date` <= '%d' AND `expire_date` + '%d' > '%d' AND `mail_id` > '%"PRId64"')"
+ "ORDER BY `mail_id` ASC", rodex_db, char_id, (int)time(NULL), RODEX_EXPIRE, (int)time(NULL), mail_id)
+ ) {
+ SqlStmt_ShowDebug(stmt);
+ SQL->StmtFree(stmt);
+ return -1;
+ }
+ break;
+
+ case RODEX_OPENTYPE_UNSET:
+ if (SQL_ERROR == SQL->StmtPrepare(stmt,
+ "SELECT `mail_id`, `sender_name`, `sender_id`, `receiver_name`, `receiver_id`, `receiver_accountid`,"
+ "`title`, `body`, `zeny`, `type`, `is_read`, `sender_read`, `send_date`, `expire_date`, `weight`"
+ "FROM `%s` WHERE "
+ "((`expire_date` > '%d' AND (`receiver_id` = '%d' OR `receiver_accountid` = '%d'))"
+ "OR (`is_read` = 0 AND `sender_id` = '%d' AND `expire_date` <= '%d' AND `expire_date` + '%d' > '%d'))"
+ "ORDER BY `mail_id` ASC", rodex_db, (int)time(NULL), char_id, account_id, char_id, (int)time(NULL), RODEX_EXPIRE, (int)time(NULL))
+ ) {
+ SqlStmt_ShowDebug(stmt);
+ SQL->StmtFree(stmt);
+ return -1;
+ }
+ break;
+ }
+
+ if (SQL_ERROR == SQL->StmtExecute(stmt)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 0, SQLDT_INT64, &msg.id, sizeof msg.id, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 1, SQLDT_STRING, &msg.sender_name, sizeof msg.sender_name, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 2, SQLDT_INT, &msg.sender_id, sizeof msg.sender_id, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 3, SQLDT_STRING, &msg.receiver_name, sizeof msg.receiver_name, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 4, SQLDT_INT, &msg.receiver_id, sizeof msg.receiver_id, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 5, SQLDT_INT, &msg.receiver_accountid, sizeof msg.receiver_accountid, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 6, SQLDT_STRING, &msg.title, sizeof msg.title, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 7, SQLDT_STRING, &msg.body, sizeof msg.body, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 8, SQLDT_INT64, &msg.zeny, sizeof msg.zeny, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 9, SQLDT_UINT8, &msg.type, sizeof msg.type, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 10, SQLDT_BOOL, &msg.is_read, sizeof msg.is_read, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 11, SQLDT_BOOL, &msg.sender_read, sizeof msg.sender_read, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 12, SQLDT_INT, &msg.send_date, sizeof msg.send_date, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 13, SQLDT_INT, &msg.expire_date, sizeof msg.expire_date, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 14, SQLDT_INT, &msg.weight, sizeof msg.weight, NULL, NULL)
+ ) {
+ SqlStmt_ShowDebug(stmt);
+ SQL->StmtFree(stmt);
+ return -1;
+ }
+
+ {
+ struct item it = { 0 };
+ StringBuf buf;
+ struct SqlStmt *stmt_items = SQL->StmtMalloc(inter->sql_handle);
+ int i;
+
+ if (stmt_items == NULL) {
+ SQL->StmtFreeResult(stmt);
+ SQL->StmtFree(stmt);
+ return -1;
+ }
+
+ StrBuf->Init(&buf);
+
+ StrBuf->AppendStr(&buf, "SELECT `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `expire_time`, `bound`, `unique_id`");
+ for (i = 0; i < MAX_SLOTS; i++) {
+ StrBuf->Printf(&buf, ", `card%d`", i);
+ }
+ for (i = 0; i < MAX_ITEM_OPTIONS; i++) {
+ StrBuf->Printf(&buf, ", `opt_idx%d`, `opt_val%d`", i, i);
+ }
+ StrBuf->Printf(&buf, "FROM `%s` WHERE mail_id = ? ORDER BY `mail_id` ASC", rodex_item_db);
+
+ if (SQL_ERROR == SQL->StmtPrepareStr(stmt_items, StrBuf->Value(&buf))
+ || SQL_ERROR == SQL->StmtBindParam(stmt_items, 0, SQLDT_INT64, &msg.id, sizeof msg.id)
+ ) {
+ SqlStmt_ShowDebug(stmt_items);
+ }
+
+ // Read mails
+ while (SQL_SUCCESS == SQL->StmtNextRow(stmt)) {
+
+ if (msg.type & MAIL_TYPE_ITEM) {
+ if (SQL_ERROR == SQL->StmtExecute(stmt_items)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 0, SQLDT_INT, &it.nameid, sizeof it.nameid, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 1, SQLDT_SHORT, &it.amount, sizeof it.amount, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 2, SQLDT_UINT, &it.equip, sizeof it.equip, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 3, SQLDT_CHAR, &it.identify, sizeof it.identify, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 4, SQLDT_CHAR, &it.refine, sizeof it.refine, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 5, SQLDT_CHAR, &it.attribute, sizeof it.attribute, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 6, SQLDT_UINT, &it.expire_time, sizeof it.expire_time, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 7, SQLDT_UCHAR, &it.bound, sizeof it.bound, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 8, SQLDT_UINT64, &it.unique_id, sizeof it.unique_id, NULL, NULL)
+ ) {
+ SqlStmt_ShowDebug(stmt_items);
+ }
+ for (i = 0; i < MAX_SLOTS; i++) {
+ if (SQL_ERROR == SQL->StmtBindColumn(stmt_items, 9 + i, SQLDT_INT, &it.card[i], sizeof it.card[i], NULL, NULL))
+ SqlStmt_ShowDebug(stmt_items);
+ }
+ for (i = 0; i < MAX_ITEM_OPTIONS; i++) {
+ if (SQL_ERROR == SQL->StmtBindColumn(stmt_items, 9 + MAX_SLOTS + i * 2, SQLDT_INT16, &it.option[i].index, sizeof it.option[i].index, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 10 + MAX_SLOTS + i * 2, SQLDT_INT16, &it.option[i].value, sizeof it.option[i].value, NULL, NULL)
+ ) {
+ SqlStmt_ShowDebug(stmt_items);
+ }
+ }
+
+ for (i = 0; i < RODEX_MAX_ITEM && SQL_SUCCESS == SQL->StmtNextRow(stmt_items); ++i) {
+ msg.items[i].item = it;
+ msg.items_count++;
+ }
+ }
+
+ if (msg.items_count == 0) {
+ msg.type &= ~MAIL_TYPE_ITEM;
+ }
+
+ if (msg.zeny == 0) {
+ msg.type &= ~MAIL_TYPE_ZENY;
+ }
+
+#if PACKETVER >= 20170419
+ if (opentype == RODEX_OPENTYPE_UNSET) {
+ if (msg.receiver_id == 0)
+ msg.opentype = RODEX_OPENTYPE_ACCOUNT;
+ else if (msg.expire_date < time(NULL))
+ msg.opentype = RODEX_OPENTYPE_RETURN;
+ else
+ msg.opentype = RODEX_OPENTYPE_MAIL;
+ } else {
+ msg.opentype = opentype;
+ }
+#else
+ msg.opentype = opentype;
+#endif
+#if PACKETVER < 20160601
+ // NPC Message Type isn't supported in old clients
+ msg.type &= ~MAIL_TYPE_NPC;
+#endif
+
+ ++count;
+ VECTOR_ENSURE(*mails, 1, 1);
+ VECTOR_PUSH(*mails, msg);
+ memset(&msg, 0, sizeof(struct rodex_message));
+
+ SQL->StmtFreeResult(stmt_items);
+ }
+ StrBuf->Destroy(&buf);
+ SQL->StmtFree(stmt_items);
+ }
+
+ SQL->StmtFreeResult(stmt);
+ SQL->StmtFree(stmt);
+
+ ShowInfo("rodex load complete from DB - id: %d (total: %d)\n", char_id, count);
+ return count;
+}
+
+// Checks if user has non-read mails
+static bool inter_rodex_hasnew(int char_id, int account_id)
+{
+ int count = 0;
+ char *data;
+
+ if (SQL_ERROR == SQL->Query(inter->sql_handle,
+ "SELECT count(*) FROM `%s` WHERE ("
+ "(`expire_date` > '%d' AND (`receiver_id` = '%d' OR `receiver_accountid` = '%d')) OR"
+ "(`sender_id` = '%d' AND `expire_date` <= '%d' AND `send_date` + '%d' > '%d' AND `is_read` = 0)" // is_read is required in this line because of the OR in next condition
+ ") AND ((`is_read` = 0 AND `sender_read` = 0) OR (`type` > 0 AND `type` != 8))",
+ rodex_db, (int)time(NULL), char_id, account_id,
+ char_id, (int)time(NULL), 2 * RODEX_EXPIRE, (int)time(NULL))
+ ) {
+ Sql_ShowDebug(inter->sql_handle);
+ return -1;
+ }
+
+ if (SQL_SUCCESS != SQL->NextRow(inter->sql_handle))
+ return false;
+
+ SQL->GetData(inter->sql_handle, 0, &data, NULL);
+ count = atoi(data);
+ SQL->FreeResult(inter->sql_handle);
+
+ return count > 0;
+}
+
+/// Checks player name and retrieves some data
+static bool inter_rodex_checkname(const char *name, int *target_char_id, short *target_class, int *target_level)
+{
+ char esc_name[NAME_LENGTH * 2 + 1];
+ bool found = false;
+
+ nullpo_retr(false, name);
+ nullpo_retr(false, target_char_id);
+ nullpo_retr(false, target_class);
+ nullpo_retr(false, target_level);
+
+ // Try to find the Dest Char by Name
+ SQL->EscapeStringLen(inter->sql_handle, esc_name, name, strnlen(name, NAME_LENGTH));
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `char_id`, `class`, `base_level` FROM `%s` WHERE `name` = '%s'", char_db, esc_name)) {
+ Sql_ShowDebug(inter->sql_handle);
+ } else {
+ if (SQL_SUCCESS == SQL->NextRow(inter->sql_handle)) {
+ char *data;
+ SQL->GetData(inter->sql_handle, 0, &data, NULL); *target_char_id = atoi(data);
+ SQL->GetData(inter->sql_handle, 1, &data, NULL); *target_class = (short)atoi(data);
+ SQL->GetData(inter->sql_handle, 2, &data, NULL); *target_level = atoi(data);
+ found = true;
+ }
+ }
+ SQL->FreeResult(inter->sql_handle);
+
+ return found;
+}
+
+/// Stores a single message in the database.
+/// Returns the message's ID if successful (or 0 if it fails).
+static int64 inter_rodex_savemessage(struct rodex_message *msg)
+{
+ char sender_name[NAME_LENGTH * 2 + 1];
+ char receiver_name[NAME_LENGTH * 2 + 1];
+ char body[RODEX_BODY_LENGTH * 2 + 1];
+ char title[RODEX_TITLE_LENGTH * 2 + 1];
+ int i;
+
+ nullpo_retr(false, msg);
+
+ SQL->EscapeStringLen(inter->sql_handle, sender_name, msg->sender_name, strnlen(msg->sender_name, NAME_LENGTH));
+ SQL->EscapeStringLen(inter->sql_handle, receiver_name, msg->receiver_name, strnlen(msg->receiver_name, NAME_LENGTH));
+ SQL->EscapeStringLen(inter->sql_handle, body, msg->body, strnlen(msg->body, RODEX_BODY_LENGTH));
+ SQL->EscapeStringLen(inter->sql_handle, title, msg->title, strnlen(msg->title, RODEX_TITLE_LENGTH));
+
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "INSERT INTO `%s` (`sender_name`, `sender_id`, `receiver_name`, `receiver_id`, `receiver_accountid`, `title`, `body`,"
+ "`zeny`, `type`, `is_read`, `sender_read`, `send_date`, `expire_date`, `weight`) VALUES "
+ "('%s', '%d', '%s', '%d', '%d', '%s', '%s', '%"PRId64"', '%d', '%d', '%d', '%d', '%d', '%d')",
+ rodex_db, sender_name, msg->sender_id, receiver_name, msg->receiver_id, msg->receiver_accountid,
+ title, body, msg->zeny, msg->type, msg->is_read == true ? 1 : 0, msg->sender_read == true ? 1 : 0, msg->send_date, msg->expire_date, msg->weight)) {
+ Sql_ShowDebug(inter->sql_handle);
+ return 0;
+ }
+
+ msg->id = (int64)SQL->LastInsertId(inter->sql_handle);
+
+ for (i = 0; i < RODEX_MAX_ITEM; ++i) {
+ // Should we use statement here? [KIRIEZ]
+ struct item *it = &msg->items[i].item;
+ if (it->nameid == 0)
+ continue;
+
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "INSERT INTO `%s` (`mail_id`, `nameid`, `amount`, `equip`, `identify`,"
+ "`refine`, `attribute`, `card0`, `card1`, `card2`, `card3`, `opt_idx0`, `opt_val0`, `opt_idx1`, `opt_val1`, `opt_idx2`,"
+ "`opt_val2`, `opt_idx3`, `opt_val3`, `opt_idx4`, `opt_val4`,`expire_time`, `bound`, `unique_id`) VALUES "
+ "('%"PRId64"', '%d', '%d', '%u', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%u', '%u', '%"PRIu64"')",
+ rodex_item_db, msg->id, it->nameid, it->amount, it->equip, it->identify, it->refine, it->attribute, it->card[0], it->card[1], it->card[2], it->card[3],
+ it->option[0].index, it->option[0].value, it->option[1].index, it->option[1].value, it->option[2].index, it->option[2].value, it->option[3].index,
+ it->option[3].value, it->option[4].index, it->option[4].value, it->expire_time, it->bound, it->unique_id)
+ ) {
+ Sql_ShowDebug(inter->sql_handle);
+ continue;
+ }
+ }
+
+ return msg->id;
+}
+
+/*==========================================
+ * Update/Delete mail
+ *------------------------------------------*/
+static bool inter_rodex_updatemail(int64 mail_id, int8 flag)
+{
+ Assert_retr(false, mail_id > 0);
+ Assert_retr(false, flag >= 0 && flag <= 4);
+
+ switch (flag) {
+ case 0: // Read
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `is_read` = 1 WHERE `mail_id` = '%"PRId64"'", rodex_db, mail_id))
+ Sql_ShowDebug(inter->sql_handle);
+ break;
+
+ case 1: // Get Zeny
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `zeny` = 0, `type` = `type` & (~2) WHERE `mail_id` = '%"PRId64"'", rodex_db, mail_id))
+ Sql_ShowDebug(inter->sql_handle);
+ break;
+
+ case 2: // Get Items
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `mail_id` = '%"PRId64"'", rodex_item_db, mail_id))
+ Sql_ShowDebug(inter->sql_handle);
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `zeny` = 0, `type` = `type` & (~4) WHERE `mail_id` = '%"PRId64"'", rodex_db, mail_id))
+ Sql_ShowDebug(inter->sql_handle);
+ break;
+
+ case 3: // Delete Mail
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `mail_id` = '%"PRId64"'", rodex_db, mail_id))
+ Sql_ShowDebug(inter->sql_handle);
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `mail_id` = '%"PRId64"'", rodex_item_db, mail_id))
+ Sql_ShowDebug(inter->sql_handle);
+ break;
+
+ case 4: // Sender Read
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `sender_read` = 1 WHERE `mail_id` = '%"PRId64"'", rodex_db, mail_id))
+ Sql_ShowDebug(inter->sql_handle);
+ break;
+ default:
+ return false;
+ }
+ return true;
+}
+
+/*==========================================
+ * Packets From Map Server
+ *------------------------------------------*/
+static int inter_rodex_parse_frommap(int fd)
+{
+ switch(RFIFOW(fd,0))
+ {
+ case 0x3095: mapif->parse_rodex_requestinbox(fd); break;
+ case 0x3096: mapif->parse_rodex_checkhasnew(fd); break;
+ case 0x3097: mapif->parse_rodex_updatemail(fd); break;
+ case 0x3098: mapif->parse_rodex_send(fd); break;
+ case 0x3099: mapif->parse_rodex_checkname(fd); break;
+ default:
+ return 0;
+ }
+ return 1;
+}
+
+static int inter_rodex_sql_init(void)
+{
+ return 1;
+}
+
+static void inter_rodex_sql_final(void)
+{
+ return;
+}
+
+void inter_rodex_defaults(void)
+{
+ inter_rodex = &inter_rodex_s;
+
+ inter_rodex->savemessage = inter_rodex_savemessage;
+ inter_rodex->parse_frommap = inter_rodex_parse_frommap;
+ inter_rodex->sql_init = inter_rodex_sql_init;
+ inter_rodex->sql_final = inter_rodex_sql_final;
+ inter_rodex->fromsql = inter_rodex_fromsql;
+ inter_rodex->hasnew = inter_rodex_hasnew;
+ inter_rodex->checkname = inter_rodex_checkname;
+ inter_rodex->updatemail = inter_rodex_updatemail;
+}
diff --git a/src/char/int_rodex.h b/src/char/int_rodex.h
new file mode 100644
index 000000000..43e2d891c
--- /dev/null
+++ b/src/char/int_rodex.h
@@ -0,0 +1,48 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2017 Hercules Dev Team
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef CHAR_INT_RODEX_H
+#define CHAR_INT_RODEX_H
+
+#include "common/mmo.h"
+#include "common/db.h"
+
+struct item;
+
+/**
+ * inter_rodex interface
+ **/
+struct inter_rodex_interface {
+ int (*sql_init) (void);
+ void (*sql_final) (void);
+ int (*parse_frommap) (int fd);
+ int (*fromsql) (int char_id, int account_id, int8 opentype, int64 mail_id, struct rodex_maillist *mails);
+ bool (*hasnew) (int char_id, int account_id);
+ bool (*checkname) (const char *name, int *target_char_id, short *target_class, int *target_level);
+ int64 (*savemessage) (struct rodex_message* msg);
+ bool (*updatemail) (int64 mail_id, int8 flag);
+};
+
+#ifdef HERCULES_CORE
+void inter_rodex_defaults(void);
+#endif // HERCULES_CORE
+
+HPShared struct inter_rodex_interface *inter_rodex;
+
+#endif /* CHAR_INT_RODEX_H */
diff --git a/src/char/int_storage.c b/src/char/int_storage.c
index 8e3ebdff3..130df5515 100644
--- a/src/char/int_storage.c
+++ b/src/char/int_storage.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -37,34 +37,154 @@
#include <stdio.h>
#include <stdlib.h>
-struct inter_storage_interface inter_storage_s;
+static struct inter_storage_interface inter_storage_s;
struct inter_storage_interface *inter_storage;
/// Save storage data to sql
-int inter_storage_tosql(int account_id, struct storage_data* p)
+static int inter_storage_tosql(int account_id, const struct storage_data *p)
{
+ int i = 0, j = 0;
+ bool matched_p[MAX_STORAGE] = { false };
+ int delete[MAX_STORAGE] = { 0 };
+ int total_deletes = 0, total_updates = 0, total_inserts = 0;
+ int total_changes = 0;
+ struct storage_data cp = { 0 };
+ StringBuf buf;
+
nullpo_ret(p);
- chr->memitemdata_to_sql(p->items, MAX_STORAGE, account_id, TABLE_STORAGE);
- return 0;
+
+ VECTOR_INIT(cp.item);
+ inter_storage->fromsql(account_id, &cp);
+
+ StrBuf->Init(&buf);
+
+ if (VECTOR_LENGTH(cp.item) > 0) {
+ /**
+ * Compare and update items, if any.
+ */
+ for (i = 0; i < VECTOR_LENGTH(cp.item); i++) {
+ struct item *cp_it = &VECTOR_INDEX(cp.item, i);
+ struct item *p_it = NULL;
+
+ ARR_FIND(0, VECTOR_LENGTH(p->item), j,
+ matched_p[j] != true
+ && (p_it = &VECTOR_INDEX(p->item, j)) != NULL
+ && cp_it->nameid == p_it->nameid
+ && cp_it->unique_id == p_it->unique_id
+ && memcmp(p_it->card, cp_it->card, sizeof(int) * MAX_SLOTS) == 0
+ && memcmp(p_it->option, cp_it->option, 5 * MAX_ITEM_OPTIONS) == 0);
+
+ if (j < VECTOR_LENGTH(p->item)) {
+ int k = 0;
+ if (memcmp(cp_it, p_it, sizeof(struct item)) != 0) {
+ if (total_updates == 0) {
+ StrBuf->Printf(&buf, "REPLACE INTO `%s` (`id`, `account_id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`", storage_db);
+ for (k = 0; k < MAX_SLOTS; k++)
+ StrBuf->Printf(&buf, ", `card%d`", k);
+ for (k = 0; k < MAX_ITEM_OPTIONS; k++)
+ StrBuf->Printf(&buf, ", `opt_idx%d`, `opt_val%d`", k, k);
+ StrBuf->AppendStr(&buf, ", `expire_time`, `bound`, `unique_id`) VALUES");
+ }
+
+ StrBuf->Printf(&buf, "%s('%d', '%d', '%d', '%d', '%u', '%d', '%d', '%d'",
+ total_updates > 0 ? ", " : "", cp_it->id, account_id, p_it->nameid, p_it->amount, p_it->equip, p_it->identify, p_it->refine, p_it->attribute);
+ for (k = 0; k < MAX_SLOTS; k++)
+ StrBuf->Printf(&buf, ", '%d'", p_it->card[k]);
+ for (k = 0; k < MAX_ITEM_OPTIONS; ++k)
+ StrBuf->Printf(&buf, ", '%d', '%d'", p_it->option[k].index, p_it->option[k].value);
+ StrBuf->Printf(&buf, ", '%u', '%d', '%"PRIu64"')", p_it->expire_time, p_it->bound, p_it->unique_id);
+
+ total_updates++;
+ }
+ matched_p[j] = true;
+ } else { // Does not exist, so set for deletion.
+ delete[total_deletes++] = cp_it->id;
+ }
+ }
+
+ if (total_updates > 0 && SQL_ERROR == SQL->QueryStr(inter->sql_handle, StrBuf->Value(&buf)))
+ Sql_ShowDebug(inter->sql_handle);
+
+ /**
+ * Handle deletions, if any.
+ */
+ if (total_deletes > 0) {
+ StrBuf->Clear(&buf);
+ StrBuf->Printf(&buf, "DELETE FROM `%s` WHERE `id` IN (", storage_db);
+ for (i = 0; i < total_deletes; i++) {
+ StrBuf->Printf(&buf, "%s'%d'", i == 0 ? "" : ", ", delete[i]);
+ }
+ StrBuf->AppendStr(&buf, ");");
+
+ if (SQL_ERROR == SQL->QueryStr(inter->sql_handle, StrBuf->Value(&buf)))
+ Sql_ShowDebug(inter->sql_handle);
+ }
+ }
+
+ /**
+ * Check for new items.
+ */
+ for (i = 0; i < VECTOR_LENGTH(p->item); i++) {
+ struct item *p_it = &VECTOR_INDEX(p->item, i);
+
+ if (matched_p[i])
+ continue; // Item is not a new entry, so lets continue.
+
+ // Store the remaining items.
+ if (total_inserts == 0) {
+ StrBuf->Clear(&buf);
+ StrBuf->Printf(&buf, "INSERT INTO `%s` (`account_id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `expire_time`, `bound`, `unique_id`", storage_db);
+ for (j = 0; j < MAX_SLOTS; ++j)
+ StrBuf->Printf(&buf, ", `card%d`", j);
+ for (j = 0; j < MAX_ITEM_OPTIONS; ++j)
+ StrBuf->Printf(&buf, ", `opt_idx%d`, `opt_val%d`", j, j);
+ StrBuf->AppendStr(&buf, ") VALUES ");
+ }
+
+ StrBuf->Printf(&buf, "%s('%d', '%d', '%d', '%u', '%d', '%d', '%d', '%u', '%d', '%"PRIu64"'",
+ total_inserts > 0 ? ", " : "", account_id, p_it->nameid, p_it->amount, p_it->equip, p_it->identify, p_it->refine,
+ p_it->attribute, p_it->expire_time, p_it->bound, p_it->unique_id);
+ for (j = 0; j < MAX_SLOTS; ++j)
+ StrBuf->Printf(&buf, ", '%d'", p_it->card[j]);
+ for (j = 0; j < MAX_ITEM_OPTIONS; ++j)
+ StrBuf->Printf(&buf, ", '%d', '%d'", p_it->option[j].index, p_it->option[j].value);
+ StrBuf->AppendStr(&buf, ")");
+
+ total_inserts++;
+ }
+
+ if (total_inserts > 0 && SQL_ERROR == SQL->QueryStr(inter->sql_handle, StrBuf->Value(&buf)))
+ Sql_ShowDebug(inter->sql_handle);
+
+ StrBuf->Destroy(&buf);
+ VECTOR_CLEAR(cp.item);
+
+ total_changes = total_inserts + total_updates + total_deletes;
+ ShowInfo("storage save complete - id: %d (total: %d)\n", account_id, total_changes);
+ return total_changes;
}
/// Load storage data to mem
-int inter_storage_fromsql(int account_id, struct storage_data* p)
+static int inter_storage_fromsql(int account_id, struct storage_data *p)
{
StringBuf buf;
char* data;
int i;
int j;
+ int num_rows = 0;
nullpo_ret(p);
- memset(p, 0, sizeof(struct storage_data)); //clean up memory
- p->storage_amount = 0;
+
+ if (VECTOR_LENGTH(p->item) > 0)
+ VECTOR_CLEAR(p->item);
// storage {`account_id`/`id`/`nameid`/`amount`/`equip`/`identify`/`refine`/`attribute`/`card0`/`card1`/`card2`/`card3`}
StrBuf->Init(&buf);
StrBuf->AppendStr(&buf, "SELECT `id`,`nameid`,`amount`,`equip`,`identify`,`refine`,`attribute`,`expire_time`,`bound`,`unique_id`");
- for( j = 0; j < MAX_SLOTS; ++j )
+ for (j = 0; j < MAX_SLOTS; ++j)
StrBuf->Printf(&buf, ",`card%d`", j);
+ for (j = 0; j < MAX_ITEM_OPTIONS; ++j)
+ StrBuf->Printf(&buf, ",`opt_idx%d`,`opt_val%d`", j, j);
StrBuf->Printf(&buf, " FROM `%s` WHERE `account_id`='%d' ORDER BY `nameid`", storage_db, account_id);
if (SQL_ERROR == SQL->QueryStr(inter->sql_handle, StrBuf->Value(&buf)))
@@ -72,41 +192,70 @@ int inter_storage_fromsql(int account_id, struct storage_data* p)
StrBuf->Destroy(&buf);
- for (i = 0; i < MAX_STORAGE && SQL_SUCCESS == SQL->NextRow(inter->sql_handle); ++i) {
- struct item *item = &p->items[i];
- SQL->GetData(inter->sql_handle, 0, &data, NULL); item->id = atoi(data);
- SQL->GetData(inter->sql_handle, 1, &data, NULL); item->nameid = atoi(data);
- SQL->GetData(inter->sql_handle, 2, &data, NULL); item->amount = atoi(data);
- SQL->GetData(inter->sql_handle, 3, &data, NULL); item->equip = atoi(data);
- SQL->GetData(inter->sql_handle, 4, &data, NULL); item->identify = atoi(data);
- SQL->GetData(inter->sql_handle, 5, &data, NULL); item->refine = atoi(data);
- SQL->GetData(inter->sql_handle, 6, &data, NULL); item->attribute = atoi(data);
- SQL->GetData(inter->sql_handle, 7, &data, NULL); item->expire_time = (unsigned int)atoi(data);
- SQL->GetData(inter->sql_handle, 8, &data, NULL); item->bound = atoi(data);
- SQL->GetData(inter->sql_handle, 9, &data, NULL); item->unique_id = strtoull(data, NULL, 10);
- for( j = 0; j < MAX_SLOTS; ++j )
- {
- SQL->GetData(inter->sql_handle, 10+j, &data, NULL); item->card[j] = atoi(data);
+ if ((num_rows = (int)SQL->NumRows(inter->sql_handle)) != 0) {
+
+ VECTOR_ENSURE(p->item, num_rows > MAX_STORAGE ? MAX_STORAGE : num_rows, 1);
+
+ for (i = 0; i < MAX_STORAGE && SQL_SUCCESS == SQL->NextRow(inter->sql_handle); ++i) {
+ struct item item = { 0 };
+ SQL->GetData(inter->sql_handle, 0, &data, NULL); item.id = atoi(data);
+ SQL->GetData(inter->sql_handle, 1, &data, NULL); item.nameid = atoi(data);
+ SQL->GetData(inter->sql_handle, 2, &data, NULL); item.amount = atoi(data);
+ SQL->GetData(inter->sql_handle, 3, &data, NULL); item.equip = atoi(data);
+ SQL->GetData(inter->sql_handle, 4, &data, NULL); item.identify = atoi(data);
+ SQL->GetData(inter->sql_handle, 5, &data, NULL); item.refine = atoi(data);
+ SQL->GetData(inter->sql_handle, 6, &data, NULL); item.attribute = atoi(data);
+ SQL->GetData(inter->sql_handle, 7, &data, NULL); item.expire_time = (unsigned int)atoi(data);
+ SQL->GetData(inter->sql_handle, 8, &data, NULL); item.bound = atoi(data);
+ SQL->GetData(inter->sql_handle, 9, &data, NULL); item.unique_id = strtoull(data, NULL, 10);
+
+ /* Card Slots */
+ for (j = 0; j < MAX_SLOTS; ++j) {
+ SQL->GetData(inter->sql_handle, 10 + j, &data, NULL);
+ item.card[j] = atoi(data);
+ }
+
+ /* Item Options */
+ for (j = 0; j < MAX_ITEM_OPTIONS; ++j) {
+ SQL->GetData(inter->sql_handle, 10 + MAX_SLOTS + j * 2, &data, NULL);
+ item.option[j].index = atoi(data);
+ SQL->GetData(inter->sql_handle, 11 + MAX_SLOTS + j * 2, &data, NULL);
+ item.option[j].value = atoi(data);
+ }
+
+ VECTOR_PUSH(p->item, item);
}
}
- p->storage_amount = i;
+
SQL->FreeResult(inter->sql_handle);
- ShowInfo("storage load complete from DB - id: %d (total: %d)\n", account_id, p->storage_amount);
- return 1;
+ ShowInfo("storage load complete from DB - id: %d (total: %d)\n", account_id, VECTOR_LENGTH(p->item));
+
+ return VECTOR_LENGTH(p->item);
}
/// Save guild_storage data to sql
-int inter_storage_guild_storage_tosql(int guild_id, const struct guild_storage *p)
+static bool inter_storage_guild_storage_tosql(int guild_id, const struct guild_storage *p)
{
nullpo_ret(p);
- chr->memitemdata_to_sql(p->items, MAX_GUILD_STORAGE, guild_id, TABLE_GUILD_STORAGE);
+
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `guild_id` FROM `%s` WHERE `guild_id`='%d'", guild_db, guild_id)) {
+ Sql_ShowDebug(inter->sql_handle);
+ return false;
+ } else if (SQL->NumRows(inter->sql_handle) < 1) {
+ // guild doesn't exist
+ SQL->FreeResult(inter->sql_handle);
+ return false;
+ }
+ SQL->FreeResult(inter->sql_handle);
+
+ chr->memitemdata_to_sql(p->items, guild_id, TABLE_GUILD_STORAGE);
ShowInfo ("guild storage save to DB - guild: %d\n", guild_id);
- return 0;
+ return true;
}
/// Load guild_storage data to mem
-int inter_storage_guild_storage_fromsql(int guild_id, struct guild_storage* p)
+static int inter_storage_guild_storage_fromsql(int guild_id, struct guild_storage* p)
{
StringBuf buf;
char* data;
@@ -121,8 +270,10 @@ int inter_storage_guild_storage_fromsql(int guild_id, struct guild_storage* p)
// storage {`guild_id`/`id`/`nameid`/`amount`/`equip`/`identify`/`refine`/`attribute`/`card0`/`card1`/`card2`/`card3`}
StrBuf->Init(&buf);
StrBuf->AppendStr(&buf, "SELECT `id`,`nameid`,`amount`,`equip`,`identify`,`refine`,`attribute`,`bound`,`unique_id`");
- for( j = 0; j < MAX_SLOTS; ++j )
+ for (j = 0; j < MAX_SLOTS; ++j)
StrBuf->Printf(&buf, ",`card%d`", j);
+ for (j = 0; j < MAX_ITEM_OPTIONS; ++j)
+ StrBuf->Printf(&buf, ", `opt_idx%d`, `opt_val%d`", j, j);
StrBuf->Printf(&buf, " FROM `%s` WHERE `guild_id`='%d' ORDER BY `nameid`", guild_storage_db, guild_id);
if( SQL_ERROR == SQL->QueryStr(inter->sql_handle, StrBuf->Value(&buf)))
@@ -142,9 +293,17 @@ int inter_storage_guild_storage_fromsql(int guild_id, struct guild_storage* p)
SQL->GetData(inter->sql_handle, 7, &data, NULL); item->bound = atoi(data);
SQL->GetData(inter->sql_handle, 8, &data, NULL); item->unique_id = strtoull(data, NULL, 10);
item->expire_time = 0;
-
- for( j = 0; j < MAX_SLOTS; ++j ) {
- SQL->GetData(inter->sql_handle, 9+j, &data, NULL); item->card[j] = atoi(data);
+ /* Card Slots */
+ for (j = 0; j < MAX_SLOTS; ++j) {
+ SQL->GetData(inter->sql_handle, 9 + j, &data, NULL);
+ item->card[j] = atoi(data);
+ }
+ /* Item Options */
+ for (j = 0; j < MAX_ITEM_OPTIONS; ++j) {
+ SQL->GetData(inter->sql_handle, 9 + MAX_SLOTS + j * 2, &data, NULL);
+ item->option[j].index = atoi(data);
+ SQL->GetData(inter->sql_handle, 10 + MAX_SLOTS + j * 2, &data, NULL);
+ item->option[j].value = atoi(data);
}
}
p->storage_amount = i;
@@ -156,124 +315,35 @@ int inter_storage_guild_storage_fromsql(int guild_id, struct guild_storage* p)
//---------------------------------------------------------
// storage data initialize
-int inter_storage_sql_init(void)
+static int inter_storage_sql_init(void)
{
return 1;
}
// storage data finalize
-void inter_storage_sql_final(void)
+static void inter_storage_sql_final(void)
{
return;
}
// q?f[^?
-int inter_storage_delete(int account_id)
+static int inter_storage_delete(int account_id)
{
if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `account_id`='%d'", storage_db, account_id) )
Sql_ShowDebug(inter->sql_handle);
return 0;
}
-int inter_storage_guild_storage_delete(int guild_id)
+static int inter_storage_guild_storage_delete(int guild_id)
{
if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id`='%d'", guild_storage_db, guild_id) )
Sql_ShowDebug(inter->sql_handle);
return 0;
}
-//---------------------------------------------------------
-// packet from map server
-
-int mapif_load_guild_storage(int fd, int account_id, int guild_id, char flag)
-{
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `guild_id` FROM `%s` WHERE `guild_id`='%d'", guild_db, guild_id) )
- Sql_ShowDebug(inter->sql_handle);
- else if( SQL->NumRows(inter->sql_handle) > 0 )
- {// guild exists
- WFIFOHEAD(fd, sizeof(struct guild_storage)+13);
- WFIFOW(fd,0) = 0x3818;
- WFIFOW(fd,2) = sizeof(struct guild_storage)+13;
- WFIFOL(fd,4) = account_id;
- WFIFOL(fd,8) = guild_id;
- WFIFOB(fd,12) = flag; //1 open storage, 0 don't open
- inter_storage->guild_storage_fromsql(guild_id, WFIFOP(fd,13));
- WFIFOSET(fd, WFIFOW(fd,2));
- return 0;
- }
- // guild does not exist
- SQL->FreeResult(inter->sql_handle);
- WFIFOHEAD(fd, 12);
- WFIFOW(fd,0) = 0x3818;
- WFIFOW(fd,2) = 12;
- WFIFOL(fd,4) = account_id;
- WFIFOL(fd,8) = 0;
- WFIFOSET(fd, 12);
- return 0;
-}
-int mapif_save_guild_storage_ack(int fd, int account_id, int guild_id, int fail)
-{
- WFIFOHEAD(fd,11);
- WFIFOW(fd,0)=0x3819;
- WFIFOL(fd,2)=account_id;
- WFIFOL(fd,6)=guild_id;
- WFIFOB(fd,10)=fail;
- WFIFOSET(fd,11);
- return 0;
-}
-
-//---------------------------------------------------------
-// packet from map server
-
-int mapif_parse_LoadGuildStorage(int fd)
-{
- RFIFOHEAD(fd);
- mapif->load_guild_storage(fd,RFIFOL(fd,2),RFIFOL(fd,6),1);
- return 0;
-}
-
-int mapif_parse_SaveGuildStorage(int fd)
-{
- int guild_id;
- int len;
-
- RFIFOHEAD(fd);
- guild_id = RFIFOL(fd,8);
- len = RFIFOW(fd,2);
-
- if (sizeof(struct guild_storage) != len - 12) {
- ShowError("inter storage: data size mismatch: %d != %"PRIuS"\n", len - 12, sizeof(struct guild_storage));
- } else {
- if (SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `guild_id` FROM `%s` WHERE `guild_id`='%d'", guild_db, guild_id)) {
- Sql_ShowDebug(inter->sql_handle);
- } else if(SQL->NumRows(inter->sql_handle) > 0) {
- // guild exists
- SQL->FreeResult(inter->sql_handle);
- inter_storage->guild_storage_tosql(guild_id, RFIFOP(fd,12));
- mapif->save_guild_storage_ack(fd, RFIFOL(fd,4), guild_id, 0);
- return 0;
- }
- SQL->FreeResult(inter->sql_handle);
- }
- mapif->save_guild_storage_ack(fd, RFIFOL(fd,4), guild_id, 1);
- return 0;
-}
-
-int mapif_itembound_ack(int fd, int aid, int guild_id)
-{
-#ifdef GP_BOUND_ITEMS
- WFIFOHEAD(fd,8);
- WFIFOW(fd,0) = 0x3856;
- WFIFOL(fd,2) = aid;/* the value is not being used, drop? */
- WFIFOW(fd,6) = guild_id;
- WFIFOSET(fd,8);
-#endif
- return 0;
-}
-
//------------------------------------------------
//Guild bound items pull for offline characters [Akinari]
//Revised by [Mhalicot]
//------------------------------------------------
-int mapif_parse_ItemBoundRetrieve_sub(int fd)
+static bool inter_storage_retrieve_bound_items(int char_id, int account_id, int guild_id)
{
#ifdef GP_BOUND_ITEMS
StringBuf buf;
@@ -282,14 +352,13 @@ int mapif_parse_ItemBoundRetrieve_sub(int fd)
int j, i=0, s=0, bound_qt=0;
struct item items[MAX_INVENTORY];
unsigned int bound_item[MAX_INVENTORY] = {0};
- int char_id = RFIFOL(fd,2);
- int aid = RFIFOL(fd,6);
- int guild_id = RFIFOW(fd,10);
StrBuf->Init(&buf);
StrBuf->AppendStr(&buf, "SELECT `id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `expire_time`, `bound`, `unique_id`");
- for( j = 0; j < MAX_SLOTS; ++j )
+ for (j = 0; j < MAX_SLOTS; ++j)
StrBuf->Printf(&buf, ", `card%d`", j);
+ for (j = 0; j < MAX_ITEM_OPTIONS; ++j)
+ StrBuf->Printf(&buf, ", `opt_idx%d`, `opt_val%d`", j, j);
StrBuf->Printf(&buf, " FROM `%s` WHERE `char_id`='%d' AND `bound` = '%d'",inventory_db,char_id,IBT_GUILD);
stmt = SQL->StmtMalloc(inter->sql_handle);
@@ -299,34 +368,39 @@ int mapif_parse_ItemBoundRetrieve_sub(int fd)
Sql_ShowDebug(inter->sql_handle);
SQL->StmtFree(stmt);
StrBuf->Destroy(&buf);
- return 1;
+ return false;
}
memset(&item, 0, sizeof(item));
- SQL->StmtBindColumn(stmt, 0, SQLDT_INT, &item.id, 0, NULL, NULL);
- SQL->StmtBindColumn(stmt, 1, SQLDT_SHORT, &item.nameid, 0, NULL, NULL);
- SQL->StmtBindColumn(stmt, 2, SQLDT_SHORT, &item.amount, 0, NULL, NULL);
- SQL->StmtBindColumn(stmt, 3, SQLDT_USHORT, &item.equip, 0, NULL, NULL);
- SQL->StmtBindColumn(stmt, 4, SQLDT_CHAR, &item.identify, 0, NULL, NULL);
- SQL->StmtBindColumn(stmt, 5, SQLDT_CHAR, &item.refine, 0, NULL, NULL);
- SQL->StmtBindColumn(stmt, 6, SQLDT_CHAR, &item.attribute, 0, NULL, NULL);
- SQL->StmtBindColumn(stmt, 7, SQLDT_UINT, &item.expire_time, 0, NULL, NULL);
- SQL->StmtBindColumn(stmt, 8, SQLDT_UCHAR, &item.bound, 0, NULL, NULL);
- SQL->StmtBindColumn(stmt, 9, SQLDT_UINT64, &item.unique_id, 0, NULL, NULL);
- for( j = 0; j < MAX_SLOTS; ++j )
- SQL->StmtBindColumn(stmt, 10+j, SQLDT_SHORT, &item.card[j], 0, NULL, NULL);
-
- while( SQL_SUCCESS == SQL->StmtNextRow(stmt)) {
+ SQL->StmtBindColumn(stmt, 0, SQLDT_INT, &item.id, sizeof item.id, NULL, NULL);
+ SQL->StmtBindColumn(stmt, 1, SQLDT_INT, &item.nameid, sizeof item.nameid, NULL, NULL);
+ SQL->StmtBindColumn(stmt, 2, SQLDT_SHORT, &item.amount, sizeof item.amount, NULL, NULL);
+ SQL->StmtBindColumn(stmt, 3, SQLDT_UINT, &item.equip, sizeof item.equip, NULL, NULL);
+ SQL->StmtBindColumn(stmt, 4, SQLDT_CHAR, &item.identify, sizeof item.identify, NULL, NULL);
+ SQL->StmtBindColumn(stmt, 5, SQLDT_CHAR, &item.refine, sizeof item.refine, NULL, NULL);
+ SQL->StmtBindColumn(stmt, 6, SQLDT_CHAR, &item.attribute, sizeof item.attribute, NULL, NULL);
+ SQL->StmtBindColumn(stmt, 7, SQLDT_UINT, &item.expire_time, sizeof item.expire_time, NULL, NULL);
+ SQL->StmtBindColumn(stmt, 8, SQLDT_UCHAR, &item.bound, sizeof item.bound, NULL, NULL);
+ SQL->StmtBindColumn(stmt, 9, SQLDT_UINT64, &item.unique_id, sizeof item.unique_id, NULL, NULL);
+ /* Card Slots */
+ for (j = 0; j < MAX_SLOTS; ++j)
+ SQL->StmtBindColumn(stmt, 10 + j, SQLDT_INT, &item.card[j], sizeof item.card[j], NULL, NULL);
+ /* Item Options */
+ for (j = 0; j < MAX_ITEM_OPTIONS; ++j) {
+ SQL->StmtBindColumn(stmt, 10 + MAX_SLOTS + j * 2, SQLDT_INT16, &item.option[j].index, sizeof item.option[j].index, NULL, NULL);
+ SQL->StmtBindColumn(stmt, 11 + MAX_SLOTS + j * 2, SQLDT_INT16, &item.option[j].value, sizeof item.option[j].value, NULL, NULL);
+ }
+ while (SQL_SUCCESS == SQL->StmtNextRow(stmt)) {
Assert_retb(i < MAX_INVENTORY);
memcpy(&items[i],&item,sizeof(struct item));
i++;
}
SQL->FreeResult(inter->sql_handle);
- if(!i) { //No items found - No need to continue
+ if (i == 0) { //No items found - No need to continue
StrBuf->Destroy(&buf);
SQL->StmtFree(stmt);
- return 0;
+ return true;
}
//First we delete the character's items
@@ -359,7 +433,7 @@ int mapif_parse_ItemBoundRetrieve_sub(int fd)
Sql_ShowDebug(inter->sql_handle);
SQL->StmtFree(stmt);
StrBuf->Destroy(&buf);
- return 1;
+ return false;
}
// Removes any view id that was set by an item that was removed
@@ -393,7 +467,7 @@ int mapif_parse_ItemBoundRetrieve_sub(int fd)
Sql_ShowDebug(inter->sql_handle);
SQL->StmtFree(stmt);
StrBuf->Destroy(&buf);
- return 1;
+ return false;
}
#undef CHECK_REMOVE
}
@@ -408,54 +482,47 @@ int mapif_parse_ItemBoundRetrieve_sub(int fd)
StrBuf->Printf(&buf,"INSERT INTO `%s` (`guild_id`,`nameid`,`amount`,`equip`,`identify`,`refine`,"
"`attribute`,`expire_time`,`bound`,`unique_id`",
guild_storage_db);
- for( s = 0; s < MAX_SLOTS; ++s )
+ for (s = 0; s < MAX_SLOTS; ++s)
StrBuf->Printf(&buf, ", `card%d`", s);
+ for (s = 0; s < MAX_ITEM_OPTIONS; ++s)
+ StrBuf->Printf(&buf, ", `opt_idx%d`, `opt_val%d`", s, s);
StrBuf->AppendStr(&buf," ) VALUES ");
- for( j = 0; j < i; ++j ) {
- if( j )
+ for (j = 0; j < i; ++j) {
+ if (j != 0)
StrBuf->AppendStr(&buf, ",");
StrBuf->Printf(&buf, "('%d', '%d', '%d', '%u', '%d', '%d', '%d', '%u', '%d', '%"PRIu64"'",
guild_id, items[j].nameid, items[j].amount, items[j].equip, items[j].identify, items[j].refine,
items[j].attribute, items[j].expire_time, items[j].bound, items[j].unique_id);
- for( s = 0; s < MAX_SLOTS; ++s )
+ for (s = 0; s < MAX_SLOTS; ++s)
StrBuf->Printf(&buf, ", '%d'", items[j].card[s]);
+ for (s = 0; s < MAX_ITEM_OPTIONS; ++s)
+ StrBuf->Printf(&buf, ", '%d', '%d'", items[j].option[s].index, items[j].option[s].value);
StrBuf->AppendStr(&buf, ")");
}
- if( SQL_ERROR == SQL->StmtPrepareStr(stmt, StrBuf->Value(&buf))
- || SQL_ERROR == SQL->StmtExecute(stmt) )
+ if (SQL_ERROR == SQL->StmtPrepareStr(stmt, StrBuf->Value(&buf))
+ || SQL_ERROR == SQL->StmtExecute(stmt))
{
Sql_ShowDebug(inter->sql_handle);
SQL->StmtFree(stmt);
StrBuf->Destroy(&buf);
- return 1;
+ return false;
}
StrBuf->Destroy(&buf);
SQL->StmtFree(stmt);
-
- //Finally reload storage and tell map we're done
- mapif->load_guild_storage(fd,aid,guild_id,0);
-
- // If character is logged in char, disconnect
- chr->disconnect_player(aid);
#endif
- return 0;
-}
-
-void mapif_parse_ItemBoundRetrieve(int fd)
-{
- mapif->parse_ItemBoundRetrieve_sub(fd);
- /* tell map server the operation is over and it can unlock the storage */
- mapif->itembound_ack(fd,RFIFOL(fd,6),RFIFOW(fd,10));
+ return true;
}
-int inter_storage_parse_frommap(int fd)
+static int inter_storage_parse_frommap(int fd)
{
RFIFOHEAD(fd);
switch(RFIFOW(fd,0)){
+ case 0x3010: mapif->pAccountStorageLoad(fd); break;
+ case 0x3011: mapif->pAccountStorageSave(fd); break;
case 0x3018: mapif->parse_LoadGuildStorage(fd); break;
case 0x3019: mapif->parse_SaveGuildStorage(fd); break;
#ifdef GP_BOUND_ITEMS
@@ -480,4 +547,5 @@ void inter_storage_defaults(void)
inter_storage->delete_ = inter_storage_delete;
inter_storage->guild_storage_delete = inter_storage_guild_storage_delete;
inter_storage->parse_frommap = inter_storage_parse_frommap;
+ inter_storage->retrieve_bound_items = inter_storage_retrieve_bound_items;
}
diff --git a/src/char/int_storage.h b/src/char/int_storage.h
index 8c6341e85..918927620 100644
--- a/src/char/int_storage.h
+++ b/src/char/int_storage.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -21,6 +21,7 @@
#ifndef CHAR_INT_STORAGE_H
#define CHAR_INT_STORAGE_H
+#include "common/db.h"
#include "common/hercules.h"
struct storage_data;
@@ -30,15 +31,16 @@ struct guild_storage;
* inter_storage interface
**/
struct inter_storage_interface {
- int (*tosql) (int account_id, struct storage_data* p);
- int (*fromsql) (int account_id, struct storage_data* p);
- int (*guild_storage_tosql) (int guild_id, const struct guild_storage *p);
+ int (*tosql) (int account_id, const struct storage_data *p);
+ int (*fromsql) (int account_id, struct storage_data *p);
+ bool (*guild_storage_tosql) (int guild_id, const struct guild_storage *p);
int (*guild_storage_fromsql) (int guild_id, struct guild_storage* p);
int (*sql_init) (void);
void (*sql_final) (void);
int (*delete_) (int account_id);
int (*guild_storage_delete) (int guild_id);
int (*parse_frommap) (int fd);
+ bool (*retrieve_bound_items) (int char_id, int account_id, int guild_id);
};
#ifdef HERCULES_CORE
diff --git a/src/char/inter.c b/src/char/inter.c
index d076bb657..418c9b0a1 100644
--- a/src/char/inter.c
+++ b/src/char/inter.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -25,6 +25,7 @@
#include "char/char.h"
#include "char/geoip.h"
#include "char/int_auction.h"
+#include "char/int_clan.h"
#include "char/int_elemental.h"
#include "char/int_guild.h"
#include "char/int_homun.h"
@@ -33,7 +34,9 @@
#include "char/int_party.h"
#include "char/int_pet.h"
#include "char/int_quest.h"
+#include "char/int_rodex.h"
#include "char/int_storage.h"
+#include "char/int_achievement.h"
#include "char/mapif.h"
#include "common/cbasetypes.h"
#include "common/conf.h"
@@ -53,44 +56,40 @@
#define WISDATA_TTL (60*1000) // Wis data Time To Live (60 seconds)
#define WISDELLIST_MAX 256 // Number of elements in the list Delete data Wis
-struct inter_interface inter_s;
+static struct inter_interface inter_s;
struct inter_interface *inter;
-int char_server_port = 3306;
-char char_server_ip[32] = "127.0.0.1";
-char char_server_id[32] = "ragnarok";
-char char_server_pw[100] = "ragnarok";
-char char_server_db[32] = "ragnarok";
-char default_codepage[32] = ""; //Feature by irmin.
+static int char_server_port = 3306;
+static char char_server_ip[32] = "127.0.0.1";
+static char char_server_id[32] = "ragnarok";
+static char char_server_pw[100] = "ragnarok";
+static char char_server_db[32] = "ragnarok";
+static char default_codepage[32] = ""; //Feature by irmin.
int party_share_level = 10;
// recv. packet list
-int inter_recv_packet_length[] = {
+static int inter_recv_packet_length[] = {
-1,-1, 7,-1, -1,13,36, (2 + 4 + 4 + 4 + NAME_LENGTH), 0, 0, 0, 0, 0, 0, 0, 0, // 3000-
- 6,-1, 0, 0, 0, 0, 0, 0, 10,-1, 0, 0, 0, 0, 0, 0, // 3010-
+ 6,-1, 6,-1, 0, 0, 0, 0, 10,-1, 0, 0, 0, 0, 0, 0, // 3010- Account Storage, Achievements [Smokexyz]
-1,10,-1,14, 14,19, 6,-1, 14,14, 0, 0, 0, 0, 0, 0, // 3020- Party
-1, 6,-1,-1, 55,19, 6,-1, 14,-1,-1,-1, 18,19,186,-1, // 3030-
- -1, 9, 0, 0, 0, 0, 0, 0, 7, 6,10,10, 10,-1, 0, 0, // 3040-
+ -1, 9, 0, 0, 10,10, 0, 0, 7, 6,10,10, 10,-1, 0, 0, // 3040- Clan System(3044-3045)
-1,-1,10,10, 0,-1,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 3050- Auction System [Zephyrus], Item Bound [Mhalicot]
6,-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 3060- Quest system [Kevin] [Inkfish]
-1,10, 6,-1, 0, 0, 0, 0, 0, 0, 0, 0, -1,10, 6,-1, // 3070- Mercenary packets [Zephyrus], Elemental packets [pakpil]
- 48,14,-1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 3080-
- -1,10,-1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 3090- Homunculus packets [albator]
+ 52,14,-1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 3080-
+ -1,10,-1, 6, 0, 20,10,11, -1,6 + NAME_LENGTH, 0, 0, 0, 0, 0, 0, // 3090- Homunculus packets [albator], RoDEX packets
};
-struct WisData {
- int id, fd, count, len;
- int64 tick;
- unsigned char src[24], dst[24], msg[512];
-};
static struct DBMap *wis_db = NULL; // int wis_id -> struct WisData*
static int wis_dellist[WISDELLIST_MAX], wis_delnum;
#define MAX_JOB_NAMES 150
-static char* msg_table[MAX_JOB_NAMES]; // messages 550 ~ 699 are job names
+static char *msg_table[MAX_JOB_NAMES]; // messages 550 ~ 699 are job names
-const char* inter_msg_txt(int msg_number) {
+static const char *inter_msg_txt(int msg_number)
+{
msg_number -= 550;
if (msg_number >= 0 && msg_number < MAX_JOB_NAMES &&
msg_table[msg_number] != NULL && msg_table[msg_number][0] != '\0')
@@ -109,7 +108,7 @@ const char* inter_msg_txt(int msg_number) {
* @param[in] allow_override whether to allow duplicate message IDs to override the original value.
* @return success state.
*/
-bool inter_msg_config_read(const char *cfg_name, bool allow_override)
+static bool inter_msg_config_read(const char *cfg_name, bool allow_override)
{
int msg_number;
char line[1024], w1[1024], w2[1024];
@@ -161,14 +160,14 @@ bool inter_msg_config_read(const char *cfg_name, bool allow_override)
/*==========================================
* Cleanup Message Data
*------------------------------------------*/
-void inter_do_final_msg(void)
+static void inter_do_final_msg(void)
{
int i;
for (i = 0; i < MAX_JOB_NAMES; i++)
aFree(msg_table[i]);
}
/* from pc.c due to @accinfo. any ideas to replace this crap are more than welcome. */
-const char* inter_job_name(int class)
+static const char *inter_job_name(int class)
{
switch (class) {
case JOB_NOVICE: // 550
@@ -401,7 +400,7 @@ const char* inter_job_name(int class)
* Argument-list version of inter_msg_to_fd
* @see inter_msg_to_fd
*/
-void inter_vmsg_to_fd(int fd, int u_fd, int aid, char* msg, va_list ap)
+static void inter_vmsg_to_fd(int fd, int u_fd, int aid, char *msg, va_list ap)
{
char msg_out[512];
va_list apcopy;
@@ -434,8 +433,8 @@ void inter_vmsg_to_fd(int fd, int u_fd, int aid, char* msg, va_list ap)
* @param msg Message format string
* @param ... Additional parameters for (v)sprinf
*/
-void inter_msg_to_fd(int fd, int u_fd, int aid, char *msg, ...) __attribute__((format(printf, 4, 5)));
-void inter_msg_to_fd(int fd, int u_fd, int aid, char *msg, ...)
+static void inter_msg_to_fd(int fd, int u_fd, int aid, char *msg, ...) __attribute__((format(printf, 4, 5)));
+static void inter_msg_to_fd(int fd, int u_fd, int aid, char *msg, ...)
{
va_list ap;
va_start(ap,msg);
@@ -444,15 +443,12 @@ void inter_msg_to_fd(int fd, int u_fd, int aid, char *msg, ...)
}
/* [Dekamaster/Nightroad] */
-void mapif_parse_accinfo(int fd)
+static void inter_accinfo(int u_fd, int aid, int castergroup, const char *query, int map_fd)
{
- int u_fd = RFIFOL(fd,2), aid = RFIFOL(fd,6), castergroup = RFIFOL(fd,10);
- char query[NAME_LENGTH], query_esq[NAME_LENGTH*2+1];
+ char query_esq[NAME_LENGTH*2+1];
int account_id;
char *data;
- safestrncpy(query, RFIFOP(fd,14), NAME_LENGTH);
-
SQL->EscapeString(inter->sql_handle, query_esq, query);
account_id = atoi(query);
@@ -462,10 +458,10 @@ void mapif_parse_accinfo(int fd)
if ( SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `account_id`,`name`,`class`,`base_level`,`job_level`,`online` FROM `%s` WHERE `name` LIKE '%s' LIMIT 10", char_db, query_esq)
|| SQL->NumRows(inter->sql_handle) == 0 ) {
if( SQL->NumRows(inter->sql_handle) == 0 ) {
- inter->msg_to_fd(fd, u_fd, aid, "No matches were found for your criteria, '%s'",query);
+ inter->msg_to_fd(map_fd, u_fd, aid, "No matches were found for your criteria, '%s'",query);
} else {
Sql_ShowDebug(inter->sql_handle);
- inter->msg_to_fd(fd, u_fd, aid, "An error occurred, bother your admin about it.");
+ inter->msg_to_fd(map_fd, u_fd, aid, "An error occurred, bother your admin about it.");
}
SQL->FreeResult(inter->sql_handle);
return;
@@ -475,7 +471,7 @@ void mapif_parse_accinfo(int fd)
SQL->GetData(inter->sql_handle, 0, &data, NULL); account_id = atoi(data);
SQL->FreeResult(inter->sql_handle);
} else {// more than one, listing... [Dekamaster/Nightroad]
- inter->msg_to_fd(fd, u_fd, aid, "Your query returned the following %d results, please be more specific...",(int)SQL->NumRows(inter->sql_handle));
+ inter->msg_to_fd(map_fd, u_fd, aid, "Your query returned the following %d results, please be more specific...",(int)SQL->NumRows(inter->sql_handle));
while ( SQL_SUCCESS == SQL->NextRow(inter->sql_handle) ) {
int class;
int base_level, job_level, online;
@@ -488,7 +484,7 @@ void mapif_parse_accinfo(int fd)
SQL->GetData(inter->sql_handle, 4, &data, NULL); job_level = atoi(data);
SQL->GetData(inter->sql_handle, 5, &data, NULL); online = atoi(data);
- inter->msg_to_fd(fd, u_fd, aid, "[AID: %d] %s | %s | Level: %d/%d | %s", account_id, name, inter->job_name(class), base_level, job_level, online?"Online":"Offline");
+ inter->msg_to_fd(map_fd, u_fd, aid, "[AID: %d] %s | %s | Level: %d/%d | %s", account_id, name, inter->job_name(class), base_level, job_level, online?"Online":"Offline");
}
SQL->FreeResult(inter->sql_handle);
return;
@@ -499,12 +495,13 @@ void mapif_parse_accinfo(int fd)
/* it will only get here if we have a single match */
/* and we will send packet with account id to login server asking for account info */
if( account_id ) {
- mapif->on_parse_accinfo(account_id, u_fd, aid, castergroup, fd);
+ mapif->on_parse_accinfo(account_id, u_fd, aid, castergroup, map_fd);
}
return;
}
-void mapif_parse_accinfo2(bool success, int map_fd, int u_fd, int u_aid, int account_id, const char *userid, const char *user_pass,
+
+static void inter_accinfo2(bool success, int map_fd, int u_fd, int u_aid, int account_id, const char *userid, const char *user_pass,
const char *email, const char *last_ip, const char *lastlogin, const char *pin_code, const char *birthdate,
int group_id, int logincount, int state)
{
@@ -525,12 +522,15 @@ void mapif_parse_accinfo2(bool success, int map_fd, int u_fd, int u_aid, int acc
inter->msg_to_fd(map_fd, u_fd, u_aid, "-- Account %d --", account_id);
inter->msg_to_fd(map_fd, u_fd, u_aid, "User: %s | GM Group: %d | State: %d", userid, group_id, state);
+// enable this if you really know what you doing.
+#if 0
if (*user_pass != '\0') { /* password is only received if your gm level is greater than the one you're searching for */
if (pin_code && *pin_code != '\0')
inter->msg_to_fd(map_fd, u_fd, u_aid, "Password: %s (PIN:%s)", user_pass, pin_code);
else
inter->msg_to_fd(map_fd, u_fd, u_aid, "Password: %s", user_pass );
}
+#endif
inter->msg_to_fd(map_fd, u_fd, u_aid, "Account e-mail: %s | Birthdate: %s", email, birthdate);
inter->msg_to_fd(map_fd, u_fd, u_aid, "Last IP: %s (%s)", last_ip, geoip->getcountry(sockt->str2ip(last_ip)));
@@ -574,7 +574,7 @@ void mapif_parse_accinfo2(bool success, int map_fd, int u_fd, int u_aid, int acc
* @param val either str or int, depending on type
* @param type false when int, true otherwise
**/
-void inter_savereg(int account_id, int char_id, const char *key, unsigned int index, intptr_t val, bool is_string)
+static void inter_savereg(int account_id, int char_id, const char *key, unsigned int index, intptr_t val, bool is_string)
{
char val_esq[1000];
nullpo_retv(key);
@@ -627,7 +627,7 @@ void inter_savereg(int account_id, int char_id, const char *key, unsigned int in
}
// Load account_reg from sql (type=2)
-int inter_accreg_fromsql(int account_id,int char_id, int fd, int type)
+static int inter_accreg_fromsql(int account_id, int char_id, int fd, int type)
{
char* data;
size_t len;
@@ -804,7 +804,7 @@ int inter_accreg_fromsql(int account_id,int char_id, int fd, int type)
*
* @retval false in case of error.
*/
-bool inter_config_read_log(const char *filename, const struct config_t *config, bool imported)
+static bool inter_config_read_log(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL;
@@ -832,7 +832,7 @@ bool inter_config_read_log(const char *filename, const struct config_t *config,
*
* @retval false in case of error.
*/
-bool inter_config_read_connection(const char *filename, const struct config_t *config, bool imported)
+static bool inter_config_read_connection(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL;
@@ -865,7 +865,7 @@ bool inter_config_read_connection(const char *filename, const struct config_t *c
*
* @retval false in case of error.
*/
-bool inter_config_read(const char *filename, bool imported)
+static bool inter_config_read(const char *filename, bool imported)
{
struct config_t config;
const struct config_setting_t *setting = NULL;
@@ -909,7 +909,7 @@ bool inter_config_read(const char *filename, bool imported)
* Save interlog into sql (arglist version)
* @see inter_log
*/
-int inter_vlog(char* fmt, va_list ap)
+static int inter_vlog(char *fmt, va_list ap)
{
char str[255];
char esc_str[sizeof(str)*2+1];// escaped str
@@ -932,7 +932,7 @@ int inter_vlog(char* fmt, va_list ap)
* @param ... Additional (printf-like) arguments
* @return Always 0 // FIXME
*/
-int inter_log(char* fmt, ...)
+static int inter_log(char *fmt, ...)
{
va_list ap;
int ret;
@@ -945,7 +945,7 @@ int inter_log(char* fmt, ...)
}
// initialize
-int inter_init_sql(const char *file)
+static int inter_init_sql(const char *file)
{
inter->config_read(file, false);
@@ -974,6 +974,8 @@ int inter_init_sql(const char *file)
inter_elemental->sql_init();
inter_mail->sql_init();
inter_auction->sql_init();
+ inter_rodex->sql_init();
+ inter_achievement->sql_init();
geoip->init();
inter->msg_config_read("conf/messages.conf", false);
@@ -981,7 +983,7 @@ int inter_init_sql(const char *file)
}
// finalize
-void inter_final(void)
+static void inter_final(void)
{
wis_db->destroy(wis_db, NULL);
@@ -994,120 +996,26 @@ void inter_final(void)
inter_elemental->sql_final();
inter_mail->sql_final();
inter_auction->sql_final();
+ inter_rodex->sql_final();
+ inter_achievement->sql_final();
geoip->final(true);
inter->do_final_msg();
return;
}
-int inter_mapif_init(int fd)
-{
- return 0;
-}
-
-
-//--------------------------------------------------------
-
-// broadcast sending
-int mapif_broadcast(const unsigned char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY, int sfd)
-{
- unsigned char *buf = (unsigned char*)aMalloc((len)*sizeof(unsigned char));
-
- nullpo_ret(mes);
- Assert_ret(len >= 16);
- WBUFW(buf,0) = 0x3800;
- WBUFW(buf,2) = len;
- WBUFL(buf,4) = fontColor;
- WBUFW(buf,8) = fontType;
- WBUFW(buf,10) = fontSize;
- WBUFW(buf,12) = fontAlign;
- WBUFW(buf,14) = fontY;
- memcpy(WBUFP(buf,16), mes, len - 16);
- mapif->sendallwos(sfd, buf, len);
-
- aFree(buf);
- return 0;
-}
-
-// Wis sending
-int mapif_wis_message(struct WisData *wd)
-{
- unsigned char buf[2048];
- nullpo_ret(wd);
- //if (wd->len > 2047-56) wd->len = 2047-56; //Force it to fit to avoid crashes. [Skotlex]
- if (wd->len < 0)
- wd->len = 0;
- if (wd->len >= (int)sizeof(wd->msg) - 1)
- wd->len = (int)sizeof(wd->msg) - 1;
-
- WBUFW(buf, 0) = 0x3801;
- WBUFW(buf, 2) = 56 +wd->len;
- WBUFL(buf, 4) = wd->id;
- memcpy(WBUFP(buf, 8), wd->src, NAME_LENGTH);
- memcpy(WBUFP(buf,32), wd->dst, NAME_LENGTH);
- memcpy(WBUFP(buf,56), wd->msg, wd->len);
- wd->count = mapif->sendall(buf,WBUFW(buf,2));
-
- return 0;
-}
-
-void mapif_wis_response(int fd, const unsigned char *src, int flag)
-{
- unsigned char buf[27];
- nullpo_retv(src);
- WBUFW(buf, 0)=0x3802;
- memcpy(WBUFP(buf, 2),src,24);
- WBUFB(buf,26)=flag;
- mapif->send(fd,buf,27);
-}
-
-// Wis sending result
-int mapif_wis_end(struct WisData *wd, int flag)
+static int inter_mapif_init(int fd)
{
- nullpo_ret(wd);
- mapif->wis_response(wd->fd, wd->src, flag);
return 0;
}
-#if 0
-// Account registry transfer to map-server
-static void mapif_account_reg(int fd, unsigned char *src)
-{
- nullpo_retv(src);
- WBUFW(src,0)=0x3804; //NOTE: writing to RFIFO
- mapif->sendallwos(fd, src, WBUFW(src,2));
-}
-#endif // 0
-
-// Send the requested account_reg
-int mapif_account_reg_reply(int fd,int account_id,int char_id, int type)
-{
- inter->accreg_fromsql(account_id,char_id,fd,type);
- return 0;
-}
-
-//Request to kick char from a certain map server. [Skotlex]
-int mapif_disconnectplayer(int fd, int account_id, int char_id, int reason)
-{
- if (fd >= 0)
- {
- WFIFOHEAD(fd,7);
- WFIFOW(fd,0) = 0x2b1f;
- WFIFOL(fd,2) = account_id;
- WFIFOB(fd,6) = reason;
- WFIFOSET(fd,7);
- return 0;
- }
- return -1;
-}
-
//--------------------------------------------------------
/**
* Existence check of WISP data
* @see DBApply
*/
-int inter_check_ttl_wisdata_sub(union DBKey key, struct DBData *data, va_list ap)
+static int inter_check_ttl_wisdata_sub(union DBKey key, struct DBData *data, va_list ap)
{
int64 tick;
struct WisData *wd = DB->data2ptr(data);
@@ -1120,7 +1028,7 @@ int inter_check_ttl_wisdata_sub(union DBKey key, struct DBData *data, va_list ap
return 0;
}
-int inter_check_ttl_wisdata(void)
+static int inter_check_ttl_wisdata(void)
{
int64 tick = timer->gettick();
int i;
@@ -1140,225 +1048,36 @@ int inter_check_ttl_wisdata(void)
return 0;
}
-//--------------------------------------------------------
-
-// broadcast sending
-int mapif_parse_broadcast(int fd)
-{
- mapif->broadcast(RFIFOP(fd,16), RFIFOW(fd,2), RFIFOL(fd,4), RFIFOW(fd,8), RFIFOW(fd,10), RFIFOW(fd,12), RFIFOW(fd,14), fd);
- return 0;
-}
-
-
-// Wisp/page request to send
-int mapif_parse_WisRequest(int fd)
-{
- struct WisData* wd;
- char name[NAME_LENGTH];
- char esc_name[NAME_LENGTH*2+1];// escaped name
- char* data;
- size_t len;
-
-
- if ( fd <= 0 ) {return 0;} // check if we have a valid fd
-
- if (RFIFOW(fd,2)-52 >= sizeof(wd->msg)) {
- ShowWarning("inter: Wis message size too long.\n");
- return 0;
- } else if (RFIFOW(fd,2)-52 <= 0) { // normally, impossible, but who knows...
- ShowError("inter: Wis message doesn't exist.\n");
- return 0;
- }
-
- safestrncpy(name, RFIFOP(fd,28), NAME_LENGTH); //Received name may be too large and not contain \0! [Skotlex]
-
- SQL->EscapeStringLen(inter->sql_handle, esc_name, name, strnlen(name, NAME_LENGTH));
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `name` FROM `%s` WHERE `name`='%s'", char_db, esc_name) )
- Sql_ShowDebug(inter->sql_handle);
-
- // search if character exists before to ask all map-servers
- if( SQL_SUCCESS != SQL->NextRow(inter->sql_handle) )
- {
- mapif->wis_response(fd, RFIFOP(fd, 4), 1);
- }
- else
- {// Character exists. So, ask all map-servers
- // to be sure of the correct name, rewrite it
- SQL->GetData(inter->sql_handle, 0, &data, &len);
- memset(name, 0, NAME_LENGTH);
- memcpy(name, data, min(len, NAME_LENGTH));
- // if source is destination, don't ask other servers.
- if (strncmp(RFIFOP(fd,4), name, NAME_LENGTH) == 0) {
- mapif->wis_response(fd, RFIFOP(fd, 4), 1);
- }
- else
- {
- static int wisid = 0;
- CREATE(wd, struct WisData, 1);
-
- // Whether the failure of previous wisp/page transmission (timeout)
- inter->check_ttl_wisdata();
-
- wd->id = ++wisid;
- wd->fd = fd;
- wd->len= RFIFOW(fd,2)-52;
- memcpy(wd->src, RFIFOP(fd, 4), NAME_LENGTH);
- memcpy(wd->dst, RFIFOP(fd,28), NAME_LENGTH);
- memcpy(wd->msg, RFIFOP(fd,52), wd->len);
- wd->tick = timer->gettick();
- idb_put(wis_db, wd->id, wd);
- mapif->wis_message(wd);
- }
- }
-
- SQL->FreeResult(inter->sql_handle);
- return 0;
-}
-
-
-// Wisp/page transmission result
-int mapif_parse_WisReply(int fd)
+static struct WisData *inter_add_wisdata(int fd, const unsigned char *src, const unsigned char *dst, const unsigned char *msg, int msg_len)
{
- int id, flag;
+ static int wisid = 0;
struct WisData *wd;
- id = RFIFOL(fd,2);
- flag = RFIFOB(fd,6);
- wd = (struct WisData*)idb_get(wis_db, id);
- if (wd == NULL)
- return 0; // This wisp was probably suppress before, because it was timeout of because of target was found on another map-server
-
- if ((--wd->count) <= 0 || flag != 1) {
- mapif->wis_end(wd, flag); // flag: 0: success to send whisper, 1: target character is not logged in?, 2: ignored by target
- idb_remove(wis_db, id);
- }
-
- return 0;
-}
-
-// Received wisp message from map-server for ALL gm (just copy the message and resends it to ALL map-servers)
-int mapif_parse_WisToGM(int fd)
-{
- unsigned char buf[2048]; // 0x3003/0x3803 <packet_len>.w <wispname>.24B <min_gm_level>.w <message>.?B
+ CREATE(wd, struct WisData, 1);
- memcpy(WBUFP(buf,0), RFIFOP(fd,0), RFIFOW(fd,2)); // Message contains the NUL terminator (see intif_wis_message_to_gm())
- WBUFW(buf, 0) = 0x3803;
- mapif->sendall(buf, RFIFOW(fd,2));
+ // Whether the failure of previous wisp/page transmission (timeout)
+ inter->check_ttl_wisdata();
- return 0;
-}
-
-// Save account_reg into sql (type=2)
-int mapif_parse_Registry(int fd)
-{
- int account_id = RFIFOL(fd, 4), char_id = RFIFOL(fd, 8), count = RFIFOW(fd, 12);
-
- if( count ) {
- int cursor = 14, i;
- char key[SCRIPT_VARNAME_LENGTH+1], sval[254];
- bool isLoginActive = sockt->session_is_active(chr->login_fd);
-
- if( isLoginActive )
- chr->global_accreg_to_login_start(account_id,char_id);
-
- for(i = 0; i < count; i++) {
- unsigned int index;
- int len = RFIFOB(fd, cursor);
- safestrncpy(key, RFIFOP(fd, cursor + 1), min((int)sizeof(key), len));
- cursor += len + 1;
-
- index = RFIFOL(fd, cursor);
- cursor += 4;
-
- switch (RFIFOB(fd, cursor++)) {
- /* int */
- case 0:
- inter->savereg(account_id,char_id,key,index,RFIFOL(fd, cursor),false);
- cursor += 4;
- break;
- case 1:
- inter->savereg(account_id,char_id,key,index,0,false);
- break;
- /* str */
- case 2:
- len = RFIFOB(fd, cursor);
- safestrncpy(sval, RFIFOP(fd, cursor + 1), min((int)sizeof(sval), len));
- cursor += len + 1;
- inter->savereg(account_id,char_id,key,index,(intptr_t)sval,true);
- break;
- case 3:
- inter->savereg(account_id,char_id,key,index,0,true);
- break;
- default:
- ShowError("mapif->parse_Registry: unknown type %d\n",RFIFOB(fd, cursor - 1));
- return 1;
- }
-
- }
-
- if (isLoginActive)
- chr->global_accreg_to_login_send();
- }
- return 0;
-}
+ wd->id = ++wisid;
+ wd->fd = fd;
+ wd->len = msg_len;
+ memcpy(wd->src, src, NAME_LENGTH);
+ memcpy(wd->dst, dst, NAME_LENGTH);
+ memcpy(wd->msg, msg, wd->len);
+ wd->tick = timer->gettick();
+ idb_put(wis_db, wd->id, wd);
-// Request the value of all registries.
-int mapif_parse_RegistryRequest(int fd)
-{
- //Load Char Registry
- if (RFIFOB(fd,12)) mapif->account_reg_reply(fd,RFIFOL(fd,2),RFIFOL(fd,6),3); // 3: char reg
- //Load Account Registry
- if (RFIFOB(fd,11)) mapif->account_reg_reply(fd,RFIFOL(fd,2),RFIFOL(fd,6),2); // 2: account reg
- //Ask Login Server for Account2 values.
- if (RFIFOB(fd,10)) chr->request_accreg2(RFIFOL(fd,2),RFIFOL(fd,6));
- return 1;
+ return wd;
}
-void mapif_namechange_ack(int fd, int account_id, int char_id, int type, int flag, const char *const name)
+static struct WisData *inter_get_wisdata(int id)
{
- nullpo_retv(name);
- WFIFOHEAD(fd, NAME_LENGTH+13);
- WFIFOW(fd, 0) = 0x3806;
- WFIFOL(fd, 2) = account_id;
- WFIFOL(fd, 6) = char_id;
- WFIFOB(fd,10) = type;
- WFIFOB(fd,11) = flag;
- memcpy(WFIFOP(fd, 12), name, NAME_LENGTH);
- WFIFOSET(fd, NAME_LENGTH+13);
+ return idb_get(wis_db, id);
}
-int mapif_parse_NameChangeRequest(int fd)
+static void inter_remove_wisdata(int id)
{
- int account_id, char_id, type;
- const char *name;
- int i;
-
- account_id = RFIFOL(fd,2);
- char_id = RFIFOL(fd,6);
- type = RFIFOB(fd,10);
- name = RFIFOP(fd,11);
-
- // Check Authorized letters/symbols in the name
- if (char_name_option == 1) { // only letters/symbols in char_name_letters are authorized
- for (i = 0; i < NAME_LENGTH && name[i]; i++)
- if (strchr(char_name_letters, name[i]) == NULL) {
- mapif->namechange_ack(fd, account_id, char_id, type, 0, name);
- return 0;
- }
- } else if (char_name_option == 2) { // letters/symbols in char_name_letters are forbidden
- for (i = 0; i < NAME_LENGTH && name[i]; i++)
- if (strchr(char_name_letters, name[i]) != NULL) {
- mapif->namechange_ack(fd, account_id, char_id, type, 0, name);
- return 0;
- }
- }
- //TODO: type holds the type of object to rename.
- //If it were a player, it needs to have the guild information and db information
- //updated here, because changing it on the map won't make it be saved [Skotlex]
-
- //name allowed.
- mapif->namechange_ack(fd, account_id, char_id, type, 1, name);
- return 0;
+ idb_remove(wis_db, id);
}
//--------------------------------------------------------
@@ -1367,7 +1086,7 @@ int mapif_parse_NameChangeRequest(int fd)
/// or 0 if no complete packet exists in the queue.
///
/// @param length The minimum allowed length, or -1 for dynamic lookup
-int inter_check_length(int fd, int length)
+static int inter_check_length(int fd, int length)
{
if( length == -1 )
{// variable-length packet
@@ -1382,7 +1101,7 @@ int inter_check_length(int fd, int length)
return length;
}
-int inter_parse_frommap(int fd)
+static int inter_parse_frommap(int fd)
{
int cmd;
int len = 0;
@@ -1404,7 +1123,6 @@ int inter_parse_frommap(int fd)
case 0x3005: mapif->parse_RegistryRequest(fd); break;
case 0x3006: mapif->parse_NameChangeRequest(fd); break;
case 0x3007: mapif->parse_accinfo(fd); break;
- /* 0x3008 is used by the report stuff */
default:
if( inter_party->parse_frommap(fd)
|| inter_guild->parse_frommap(fd)
@@ -1416,6 +1134,9 @@ int inter_parse_frommap(int fd)
|| inter_mail->parse_frommap(fd)
|| inter_auction->parse_frommap(fd)
|| inter_quest->parse_frommap(fd)
+ || inter_rodex->parse_frommap(fd)
+ || inter_clan->parse_frommap(fd)
+ || inter_achievement->parse_frommap(fd)
)
break;
else
@@ -1453,4 +1174,9 @@ void inter_defaults(void)
inter->final = inter_final;
inter->config_read_log = inter_config_read_log;
inter->config_read_connection = inter_config_read_connection;
+ inter->accinfo = inter_accinfo;
+ inter->accinfo2 = inter_accinfo2;
+ inter->add_wisdata = inter_add_wisdata;
+ inter->get_wisdata = inter_get_wisdata;
+ inter->remove_wisdata = inter_remove_wisdata;
}
diff --git a/src/char/inter.h b/src/char/inter.h
index 796f89a96..94ee3ab60 100644
--- a/src/char/inter.h
+++ b/src/char/inter.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -30,6 +30,12 @@
struct Sql; // common/sql.h
struct config_t; // common/conf.h
+struct WisData {
+ int id, fd, count, len;
+ int64 tick;
+ unsigned char src[24], dst[24], msg[512];
+};
+
/**
* inter interface
**/
@@ -56,6 +62,13 @@ struct inter_interface {
bool (*config_read) (const char *filename, bool imported);
bool (*config_read_log) (const char *filename, const struct config_t *config, bool imported);
bool (*config_read_connection) (const char *filename, const struct config_t *config, bool imported);
+ void (*accinfo) (int u_fd, int aid, int castergroup, const char *query, int map_fd);
+ void (*accinfo2) (bool success, int map_fd, int u_fd, int u_aid, int account_id, const char *userid, const char *user_pass,
+ const char *email, const char *last_ip, const char *lastlogin, const char *pin_code, const char *birthdate,
+ int group_id, int logincount, int state);
+ struct WisData *(*add_wisdata) (int fd, const unsigned char *src, const unsigned char *dst, const unsigned char *msg, int msg_len);
+ struct WisData *(*get_wisdata) (int id);
+ void (*remove_wisdata) (int id);
};
#ifdef HERCULES_CORE
diff --git a/src/char/loginif.c b/src/char/loginif.c
index b0e18eb1f..a093c8cf5 100644
--- a/src/char/loginif.c
+++ b/src/char/loginif.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -35,12 +35,12 @@
#include <stdlib.h>
#include <string.h>
-struct loginif_interface loginif_s;
+static struct loginif_interface loginif_s;
struct loginif_interface *loginif;
/// Resets all the data.
-void loginif_reset(void) __attribute__ ((noreturn));
-void loginif_reset(void)
+static void loginif_reset(void) __attribute__ ((noreturn));
+static void loginif_reset(void)
{
int id;
// TODO kick everyone out and reset everything or wait for connect and try to reacquire locks [FlavioJS]
@@ -54,7 +54,7 @@ void loginif_reset(void)
/// Checks the conditions for the server to stop.
/// Releases the cookie when all characters are saved.
/// If all the conditions are met, it stops the core loop.
-void loginif_check_shutdown(void)
+static void loginif_check_shutdown(void)
{
if( core->runflag != CHARSERVER_ST_SHUTDOWN )
return;
@@ -63,14 +63,14 @@ void loginif_check_shutdown(void)
/// Called when the connection to Login Server is disconnected.
-void loginif_on_disconnect(void)
+static void loginif_on_disconnect(void)
{
ShowWarning("Connection to Login Server lost.\n\n");
}
/// Called when all the connection steps are completed.
-void loginif_on_ready(void)
+static void loginif_on_ready(void)
{
int i;
@@ -85,7 +85,7 @@ void loginif_on_ready(void)
ShowStatus("Awaiting maps from map-server.\n");
}
-void do_init_loginif(void)
+static void do_init_loginif(void)
{
// establish char-login connection if not present
timer->add_func_list(chr->check_connect_login_server, "chr->check_connect_login_server");
@@ -96,7 +96,7 @@ void do_init_loginif(void)
timer->add_interval(timer->gettick() + 1000, chr->send_accounts_tologin, 0, 0, 3600 * 1000); //Sync online accounts every hour
}
-void do_final_loginif(void)
+static void do_final_loginif(void)
{
if (chr->login_fd != -1) {
sockt->close(chr->login_fd);
@@ -104,7 +104,7 @@ void do_final_loginif(void)
}
}
-void loginif_block_account(int account_id, int flag)
+static void loginif_block_account(int account_id, int flag)
{
Assert_retv(chr->login_fd != -1);
WFIFOHEAD(chr->login_fd,10);
@@ -114,7 +114,7 @@ void loginif_block_account(int account_id, int flag)
WFIFOSET(chr->login_fd,10);
}
-void loginif_ban_account(int account_id, short year, short month, short day, short hour, short minute, short second)
+static void loginif_ban_account(int account_id, short year, short month, short day, short hour, short minute, short second)
{
Assert_retv(chr->login_fd != -1);
WFIFOHEAD(chr->login_fd,18);
@@ -129,7 +129,7 @@ void loginif_ban_account(int account_id, short year, short month, short day, sho
WFIFOSET(chr->login_fd,18);
}
-void loginif_unban_account(int account_id)
+static void loginif_unban_account(int account_id)
{
Assert_retv(chr->login_fd != -1);
WFIFOHEAD(chr->login_fd,6);
@@ -138,7 +138,7 @@ void loginif_unban_account(int account_id)
WFIFOSET(chr->login_fd,6);
}
-void loginif_changesex(int account_id)
+static void loginif_changesex(int account_id)
{
Assert_retv(chr->login_fd != -1);
WFIFOHEAD(chr->login_fd,6);
@@ -147,7 +147,7 @@ void loginif_changesex(int account_id)
WFIFOSET(chr->login_fd,6);
}
-void loginif_auth(int fd, struct char_session_data* sd, uint32 ipl)
+static void loginif_auth(int fd, struct char_session_data *sd, uint32 ipl)
{
Assert_retv(chr->login_fd != -1);
nullpo_retv(sd);
@@ -162,7 +162,7 @@ void loginif_auth(int fd, struct char_session_data* sd, uint32 ipl)
WFIFOSET(chr->login_fd,23);
}
-void loginif_send_users_count(int users)
+static void loginif_send_users_count(int users)
{
Assert_retv(chr->login_fd != -1);
WFIFOHEAD(chr->login_fd,6);
@@ -171,7 +171,7 @@ void loginif_send_users_count(int users)
WFIFOSET(chr->login_fd,6);
}
-void loginif_connect_to_server(void)
+static void loginif_connect_to_server(void)
{
Assert_retv(chr->login_fd != -1);
WFIFOHEAD(chr->login_fd,86);
diff --git a/src/char/loginif.h b/src/char/loginif.h
index daafdf4ac..5dfedb952 100644
--- a/src/char/loginif.h
+++ b/src/char/loginif.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/char/mapif.c b/src/char/mapif.c
index 1dafb79c3..dc5735550 100644
--- a/src/char/mapif.c
+++ b/src/char/mapif.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -20,197 +20,2449 @@
*/
#define HERCULES_CORE
+#include "config/core.h" // GP_BOUND_ITEMS
#include "mapif.h"
#include "char/char.h"
+#include "char/int_achievement.h"
#include "char/int_auction.h"
+#include "char/int_clan.h"
#include "char/int_guild.h"
#include "char/int_homun.h"
+#include "char/int_elemental.h"
+#include "char/int_mail.h"
+#include "char/int_mercenary.h"
+#include "char/int_party.h"
+#include "char/int_pet.h"
+#include "char/int_quest.h"
+#include "char/int_rodex.h"
+#include "char/int_storage.h"
+#include "char/inter.h"
#include "common/cbasetypes.h"
+#include "common/memmgr.h"
#include "common/mmo.h"
+#include "common/nullpo.h"
#include "common/random.h"
#include "common/showmsg.h"
#include "common/socket.h"
+#include "common/sql.h"
#include "common/strlib.h"
#include <stdlib.h>
-void mapif_ban(int id, unsigned int flag, int status);
-void mapif_server_init(int id);
-void mapif_server_destroy(int id);
-void mapif_server_reset(int id);
-void mapif_on_disconnect(int id);
-void mapif_on_parse_accinfo(int account_id, int u_fd, int u_aid, int u_group, int map_fd);
-void mapif_char_ban(int char_id, time_t timestamp);
-int mapif_sendall(const unsigned char *buf, unsigned int len);
-int mapif_sendallwos(int sfd, unsigned char *buf, unsigned int len);
-int mapif_send(int fd, unsigned char *buf, unsigned int len);
-void mapif_send_users_count(int users);
-void mapif_auction_message(int char_id, unsigned char result);
-void mapif_auction_sendlist(int fd, int char_id, short count, short pages, unsigned char *buf);
-void mapif_parse_auction_requestlist(int fd);
-void mapif_auction_register(int fd, struct auction_data *auction);
-void mapif_parse_auction_register(int fd);
-void mapif_auction_cancel(int fd, int char_id, unsigned char result);
-void mapif_parse_auction_cancel(int fd);
-void mapif_auction_close(int fd, int char_id, unsigned char result);
-void mapif_parse_auction_close(int fd);
-void mapif_auction_bid(int fd, int char_id, int bid, unsigned char result);
-void mapif_parse_auction_bid(int fd);
-bool mapif_elemental_create(struct s_elemental *ele);
-bool mapif_elemental_save(const struct s_elemental *ele);
-bool mapif_elemental_load(int ele_id, int char_id, struct s_elemental *ele);
-bool mapif_elemental_delete(int ele_id);
-void mapif_elemental_send(int fd, struct s_elemental *ele, unsigned char flag);
-void mapif_parse_elemental_create(int fd, const struct s_elemental *ele);
-void mapif_parse_elemental_load(int fd, int ele_id, int char_id);
-void mapif_elemental_deleted(int fd, unsigned char flag);
-void mapif_parse_elemental_delete(int fd, int ele_id);
-void mapif_elemental_saved(int fd, unsigned char flag);
-void mapif_parse_elemental_save(int fd, const struct s_elemental *ele);
-int mapif_guild_created(int fd, int account_id, struct guild *g);
-int mapif_guild_noinfo(int fd, int guild_id);
-int mapif_guild_info(int fd, struct guild *g);
-int mapif_guild_memberadded(int fd, int guild_id, int account_id, int char_id, int flag);
-int mapif_guild_withdraw(int guild_id, int account_id, int char_id, int flag, const char *name, const char *mes);
-int mapif_guild_memberinfoshort(struct guild *g, int idx);
-int mapif_guild_broken(int guild_id, int flag);
-int mapif_guild_message(int guild_id, int account_id, const char *mes, int len, int sfd);
-int mapif_guild_basicinfochanged(int guild_id, int type, const void *data, int len);
-int mapif_guild_memberinfochanged(int guild_id, int account_id, int char_id, int type, const void *data, int len);
-int mapif_guild_skillupack(int guild_id, uint16 skill_id, int account_id);
-int mapif_guild_alliance(int guild_id1, int guild_id2, int account_id1, int account_id2, int flag, const char *name1, const char *name2);
-int mapif_guild_position(struct guild *g, int idx);
-int mapif_guild_notice(struct guild *g);
-int mapif_guild_emblem(struct guild *g);
-int mapif_guild_master_changed(struct guild *g, int aid, int cid);
-int mapif_guild_castle_dataload(int fd, int sz, const int *castle_ids);
-int mapif_parse_CreateGuild(int fd, int account_id, const char *name, const struct guild_member *master);
-int mapif_parse_GuildInfo(int fd, int guild_id);
-int mapif_parse_GuildAddMember(int fd, int guild_id, const struct guild_member *m);
-int mapif_parse_GuildLeave(int fd, int guild_id, int account_id, int char_id, int flag, const char *mes);
-int mapif_parse_GuildChangeMemberInfoShort(int fd, int guild_id, int account_id, int char_id, int online, int lv, int16 class);
-int mapif_parse_BreakGuild(int fd, int guild_id);
-int mapif_parse_GuildMessage(int fd, int guild_id, int account_id, const char *mes, int len);
-int mapif_parse_GuildBasicInfoChange(int fd, int guild_id, int type, const void *data, int len);
-int mapif_parse_GuildMemberInfoChange(int fd, int guild_id, int account_id, int char_id, int type, const char *data, int len);
-int mapif_parse_GuildPosition(int fd, int guild_id, int idx, const struct guild_position *p);
-int mapif_parse_GuildSkillUp(int fd, int guild_id, uint16 skill_id, int account_id, int max);
-int mapif_parse_GuildDeleteAlliance(struct guild *g, int guild_id, int account_id1, int account_id2, int flag);
-int mapif_parse_GuildAlliance(int fd, int guild_id1, int guild_id2, int account_id1, int account_id2, int flag);
-int mapif_parse_GuildNotice(int fd, int guild_id, const char *mes1, const char *mes2);
-int mapif_parse_GuildEmblem(int fd, int len, int guild_id, int dummy, const char *data);
-int mapif_parse_GuildCastleDataLoad(int fd, int len, const int *castle_ids);
-int mapif_parse_GuildCastleDataSave(int fd, int castle_id, int index, int value);
-int mapif_parse_GuildMasterChange(int fd, int guild_id, const char* name, int len);
-void mapif_homunculus_created(int fd, int account_id, const struct s_homunculus *sh, unsigned char flag);
-void mapif_homunculus_deleted(int fd, int flag);
-void mapif_homunculus_loaded(int fd, int account_id, struct s_homunculus *hd);
-void mapif_homunculus_saved(int fd, int account_id, bool flag);
-void mapif_homunculus_renamed(int fd, int account_id, int char_id, unsigned char flag, const char *name);
-bool mapif_homunculus_create(struct s_homunculus *hd);
-bool mapif_homunculus_save(const struct s_homunculus *hd);
-bool mapif_homunculus_load(int homun_id, struct s_homunculus* hd);
-bool mapif_homunculus_delete(int homun_id);
-bool mapif_homunculus_rename(const char *name);
-void mapif_parse_homunculus_create(int fd, int len, int account_id, const struct s_homunculus *phd);
-void mapif_parse_homunculus_delete(int fd, int homun_id);
-void mapif_parse_homunculus_load(int fd, int account_id, int homun_id);
-void mapif_parse_homunculus_save(int fd, int len, int account_id, const struct s_homunculus *phd);
-void mapif_parse_homunculus_rename(int fd, int account_id, int char_id, const char *name);
-void mapif_mail_sendinbox(int fd, int char_id, unsigned char flag, struct mail_data *md);
-void mapif_parse_mail_requestinbox(int fd);
-void mapif_parse_mail_read(int fd);
-void mapif_mail_sendattach(int fd, int char_id, struct mail_message *msg);
-void mapif_mail_getattach(int fd, int char_id, int mail_id);
-void mapif_parse_mail_getattach(int fd);
-void mapif_mail_delete(int fd, int char_id, int mail_id, bool failed);
-void mapif_parse_mail_delete(int fd);
-void mapif_mail_new(struct mail_message *msg);
-void mapif_mail_return(int fd, int char_id, int mail_id, int new_mail);
-void mapif_parse_mail_return(int fd);
-void mapif_mail_send(int fd, struct mail_message* msg);
-void mapif_parse_mail_send(int fd);
-bool mapif_mercenary_create(struct s_mercenary *merc);
-bool mapif_mercenary_save(const struct s_mercenary *merc);
-bool mapif_mercenary_load(int merc_id, int char_id, struct s_mercenary *merc);
-bool mapif_mercenary_delete(int merc_id);
-void mapif_mercenary_send(int fd, struct s_mercenary *merc, unsigned char flag);
-void mapif_parse_mercenary_create(int fd, const struct s_mercenary *merc);
-void mapif_parse_mercenary_load(int fd, int merc_id, int char_id);
-void mapif_mercenary_deleted(int fd, unsigned char flag);
-void mapif_parse_mercenary_delete(int fd, int merc_id);
-void mapif_mercenary_saved(int fd, unsigned char flag);
-void mapif_parse_mercenary_save(int fd, const struct s_mercenary *merc);
-int mapif_party_created(int fd, int account_id, int char_id, struct party *p);
-void mapif_party_noinfo(int fd, int party_id, int char_id);
-void mapif_party_info(int fd, struct party* p, int char_id);
-int mapif_party_memberadded(int fd, int party_id, int account_id, int char_id, int flag);
-int mapif_party_optionchanged(int fd, struct party *p, int account_id, int flag);
-int mapif_party_withdraw(int party_id,int account_id, int char_id);
-int mapif_party_membermoved(struct party *p, int idx);
-int mapif_party_broken(int party_id, int flag);
-int mapif_party_message(int party_id, int account_id, const char *mes, int len, int sfd);
-int mapif_parse_CreateParty(int fd, const char *name, int item, int item2, const struct party_member *leader);
-void mapif_parse_PartyInfo(int fd, int party_id, int char_id);
-int mapif_parse_PartyAddMember(int fd, int party_id, const struct party_member *member);
-int mapif_parse_PartyChangeOption(int fd,int party_id,int account_id,int exp,int item);
-int mapif_parse_PartyLeave(int fd, int party_id, int account_id, int char_id);
-int mapif_parse_PartyChangeMap(int fd, int party_id, int account_id, int char_id, unsigned short map, int online, unsigned int lv);
-int mapif_parse_BreakParty(int fd, int party_id);
-int mapif_parse_PartyMessage(int fd, int party_id, int account_id, const char *mes, int len);
-int mapif_parse_PartyLeaderChange(int fd, int party_id, int account_id, int char_id);
-int mapif_pet_created(int fd, int account_id, struct s_pet *p);
-int mapif_pet_info(int fd, int account_id, struct s_pet *p);
-int mapif_pet_noinfo(int fd, int account_id);
-int mapif_save_pet_ack(int fd, int account_id, int flag);
-int mapif_delete_pet_ack(int fd, int flag);
-int mapif_create_pet(int fd, int account_id, int char_id, short pet_class, short pet_lv, short pet_egg_id,
- short pet_equip, short intimate, short hungry, char rename_flag, char incubate, const char *pet_name);
-int mapif_load_pet(int fd, int account_id, int char_id, int pet_id);
-int mapif_save_pet(int fd, int account_id, const struct s_pet *data);
-int mapif_delete_pet(int fd, int pet_id);
-int mapif_parse_CreatePet(int fd);
-int mapif_parse_LoadPet(int fd);
-int mapif_parse_SavePet(int fd);
-int mapif_parse_DeletePet(int fd);
-struct quest *mapif_quests_fromsql(int char_id, int *count);
-bool mapif_quest_delete(int char_id, int quest_id);
-bool mapif_quest_add(int char_id, struct quest qd);
-bool mapif_quest_update(int char_id, struct quest qd);
-void mapif_quest_save_ack(int fd, int char_id, bool success);
-int mapif_parse_quest_save(int fd);
-void mapif_send_quests(int fd, int char_id, struct quest *tmp_questlog, int num_quests);
-int mapif_parse_quest_load(int fd);
-int mapif_load_guild_storage(int fd,int account_id,int guild_id, char flag);
-int mapif_save_guild_storage_ack(int fd, int account_id, int guild_id, int fail);
-int mapif_parse_LoadGuildStorage(int fd);
-int mapif_parse_SaveGuildStorage(int fd);
-int mapif_itembound_ack(int fd, int aid, int guild_id);
-int mapif_parse_ItemBoundRetrieve_sub(int fd);
-void mapif_parse_ItemBoundRetrieve(int fd);
-void mapif_parse_accinfo(int fd);
-void mapif_parse_accinfo2(bool success, int map_fd, int u_fd, int u_aid, int account_id, const char *userid, const char *user_pass,
- const char *email, const char *last_ip, const char *lastlogin, const char *pin_code, const char *birthdate, int group_id, int logincount, int state);
-int mapif_broadcast(const unsigned char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY, int sfd);
-int mapif_wis_message(struct WisData *wd);
-void mapif_wis_response(int fd, const unsigned char *src, int flag);
-int mapif_wis_end(struct WisData *wd, int flag);
-int mapif_account_reg_reply(int fd,int account_id,int char_id, int type);
-int mapif_disconnectplayer(int fd, int account_id, int char_id, int reason);
-int mapif_parse_broadcast(int fd);
-int mapif_parse_WisRequest(int fd);
-int mapif_parse_WisReply(int fd);
-int mapif_parse_WisToGM(int fd);
-int mapif_parse_Registry(int fd);
-int mapif_parse_RegistryRequest(int fd);
-void mapif_namechange_ack(int fd, int account_id, int char_id, int type, int flag, const char *const name);
-int mapif_parse_NameChangeRequest(int fd);
-
-struct mapif_interface mapif_s;
+static struct mapif_interface mapif_s;
struct mapif_interface *mapif;
-void mapif_defaults(void) {
+static void mapif_ban(int id, unsigned int flag, int status)
+{
+ // send to all map-servers to disconnect the player
+ unsigned char buf[11];
+ WBUFW(buf,0) = 0x2b14;
+ WBUFL(buf,2) = id;
+ WBUFB(buf,6) = flag; // 0: change of status, 1: ban
+ WBUFL(buf,7) = status; // status or final date of a banishment
+ mapif->sendall(buf, 11);
+}
+
+/// Initializes a server structure.
+static void mapif_server_init(int id)
+{
+ //memset(&chr->server[id], 0, sizeof(server[id]));
+ chr->server[id].fd = -1;
+}
+
+/// Destroys a server structure.
+static void mapif_server_destroy(int id)
+{
+ if (chr->server[id].fd == -1) {
+ sockt->close(chr->server[id].fd);
+ chr->server[id].fd = -1;
+ }
+}
+
+/// Resets all the data related to a server.
+static void mapif_server_reset(int id)
+{
+ int i, j;
+ unsigned char buf[16384];
+ int fd = chr->server[id].fd;
+ //Notify other map servers that this one is gone. [Skotlex]
+ WBUFW(buf, 0) = 0x2b20;
+ WBUFL(buf, 4) = htonl(chr->server[id].ip);
+ WBUFW(buf, 8) = htons(chr->server[id].port);
+ j = 0;
+ for (i = 0; i < VECTOR_LENGTH(chr->server[id].maps); i++) {
+ uint16 m = VECTOR_INDEX(chr->server[id].maps, i);
+ if (m != 0)
+ WBUFW(buf, 10 + (j++) * 4) = m;
+ }
+ if (j > 0) {
+ WBUFW(buf, 2) = j * 4 + 10;
+ mapif->sendallwos(fd, buf, WBUFW(buf, 2));
+ }
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `index`='%d'", ragsrvinfo_db, chr->server[id].fd))
+ Sql_ShowDebug(inter->sql_handle);
+ chr->online_char_db->foreach(chr->online_char_db, chr->db_setoffline, id); //Tag relevant chars as 'in disconnected' server.
+ mapif->server_destroy(id);
+ mapif->server_init(id);
+}
+
+/// Called when the connection to a Map Server is disconnected.
+static void mapif_on_disconnect(int id)
+{
+ ShowStatus("Map-server #%d has disconnected.\n", id);
+ mapif->server_reset(id);
+}
+
+static void mapif_on_parse_accinfo(int account_id, int u_fd, int u_aid, int u_group, int map_fd)
+{
+ Assert_retv(chr->login_fd > 0);
+ WFIFOHEAD(chr->login_fd, 22);
+ WFIFOW(chr->login_fd, 0) = 0x2740;
+ WFIFOL(chr->login_fd, 2) = account_id;
+ WFIFOL(chr->login_fd, 6) = u_fd;
+ WFIFOL(chr->login_fd, 10) = u_aid;
+ WFIFOL(chr->login_fd, 14) = u_group;
+ WFIFOL(chr->login_fd, 18) = map_fd;
+ WFIFOSET(chr->login_fd, 22);
+}
+
+static void mapif_char_ban(int char_id, time_t timestamp)
+{
+ unsigned char buf[11];
+ WBUFW(buf, 0) = 0x2b14;
+ WBUFL(buf, 2) = char_id;
+ WBUFB(buf, 6) = 2;
+ WBUFL(buf, 7) = (unsigned int)timestamp;
+ mapif->sendall(buf, 11);
+}
+
+static int mapif_sendall(const unsigned char *buf, unsigned int len)
+{
+ int i, c;
+
+ nullpo_ret(buf);
+ c = 0;
+ for (i = 0; i < ARRAYLENGTH(chr->server); i++) {
+ int fd;
+ if ((fd = chr->server[i].fd) > 0) {
+ WFIFOHEAD(fd, len);
+ memcpy(WFIFOP(fd, 0), buf, len);
+ WFIFOSET(fd, len);
+ c++;
+ }
+ }
+
+ return c;
+}
+
+static int mapif_sendallwos(int sfd, unsigned char *buf, unsigned int len)
+{
+ int i, c;
+
+ nullpo_ret(buf);
+ c = 0;
+ for (i = 0; i < ARRAYLENGTH(chr->server); i++) {
+ int fd;
+ if ((fd = chr->server[i].fd) > 0 && fd != sfd) {
+ WFIFOHEAD(fd, len);
+ memcpy(WFIFOP(fd, 0), buf, len);
+ WFIFOSET(fd, len);
+ c++;
+ }
+ }
+
+ return c;
+}
+
+
+static int mapif_send(int fd, unsigned char *buf, unsigned int len)
+{
+ nullpo_ret(buf);
+ if (fd >= 0) {
+ int i;
+ ARR_FIND (0, ARRAYLENGTH(chr->server), i, fd == chr->server[i].fd);
+ if (i < ARRAYLENGTH(chr->server)) {
+ WFIFOHEAD(fd, len);
+ memcpy(WFIFOP(fd, 0), buf, len);
+ WFIFOSET(fd, len);
+ return 1;
+ }
+ }
+ return 0;
+}
+
+static void mapif_send_users_count(int users)
+{
+ uint8 buf[6];
+ // send number of players to all map-servers
+ WBUFW(buf, 0) = 0x2b00;
+ WBUFL(buf, 2) = users;
+ mapif->sendall(buf, 6);
+}
+
+
+static void mapif_auction_message(int char_id, unsigned char result)
+{
+ unsigned char buf[74];
+
+ WBUFW(buf, 0) = 0x3854;
+ WBUFL(buf, 2) = char_id;
+ WBUFL(buf, 6) = result;
+ mapif->sendall(buf, 7);
+}
+
+static void mapif_auction_sendlist(int fd, int char_id, short count, short pages, unsigned char *buf)
+{
+ int len = (sizeof(struct auction_data) * count) + 12;
+
+ nullpo_retv(buf);
+
+ WFIFOHEAD(fd, len);
+ WFIFOW(fd, 0) = 0x3850;
+ WFIFOW(fd, 2) = len;
+ WFIFOL(fd, 4) = char_id;
+ WFIFOW(fd, 8) = count;
+ WFIFOW(fd, 10) = pages;
+ memcpy(WFIFOP(fd, 12), buf, len - 12);
+ WFIFOSET(fd, len);
+}
+
+static void mapif_parse_auction_requestlist(int fd)
+{
+ char searchtext[NAME_LENGTH];
+ int char_id = RFIFOL(fd, 4), len = sizeof(struct auction_data);
+ int price = RFIFOL(fd, 10);
+ short type = RFIFOW(fd, 8), page = max(1, RFIFOW(fd, 14));
+ unsigned char buf[5 * sizeof(struct auction_data)];
+ struct DBIterator *iter = db_iterator(inter_auction->db);
+ struct auction_data *auction;
+ short i = 0, j = 0, pages = 1;
+
+ memcpy(searchtext, RFIFOP(fd, 16), NAME_LENGTH);
+
+ for (auction = dbi_first(iter); dbi_exists(iter); auction = dbi_next(iter)) {
+ if ((type == 0 && auction->type != IT_ARMOR && auction->type != IT_PETARMOR)
+ || (type == 1 && auction->type != IT_WEAPON)
+ || (type == 2 && auction->type != IT_CARD)
+ || (type == 3 && auction->type != IT_ETC)
+ || (type == 4 && !strstr(auction->item_name, searchtext))
+ || (type == 5 && auction->price > price)
+ || (type == 6 && auction->seller_id != char_id)
+ || (type == 7 && auction->buyer_id != char_id))
+ continue;
+
+ i++;
+ if (i > 5) {
+ // Counting Pages of Total Results (5 Results per Page)
+ pages++;
+ i = 1; // First Result of This Page
+ }
+
+ if (page != pages)
+ continue; // This is not the requested Page
+
+ memcpy(WBUFP(buf, j * len), auction, len);
+ j++; // Found Results
+ }
+ dbi_destroy(iter);
+
+ mapif->auction_sendlist(fd, char_id, j, pages, buf);
+}
+
+static void mapif_auction_register(int fd, struct auction_data *auction)
+{
+ int len = sizeof(struct auction_data) + 4;
+
+ nullpo_retv(auction);
+
+ WFIFOHEAD(fd,len);
+ WFIFOW(fd, 0) = 0x3851;
+ WFIFOW(fd, 2) = len;
+ memcpy(WFIFOP(fd, 4), auction, sizeof(struct auction_data));
+ WFIFOSET(fd, len);
+}
+
+static void mapif_parse_auction_register(int fd)
+{
+ struct auction_data auction;
+ if( RFIFOW(fd, 2) != sizeof(struct auction_data) + 4 )
+ return;
+
+ memcpy(&auction, RFIFOP(fd, 4), sizeof(struct auction_data));
+ if( inter_auction->count(auction.seller_id, false) < 5 )
+ auction.auction_id = inter_auction->create(&auction);
+
+ mapif->auction_register(fd, &auction);
+}
+
+static void mapif_auction_cancel(int fd, int char_id, unsigned char result)
+{
+ WFIFOHEAD(fd, 7);
+ WFIFOW(fd, 0) = 0x3852;
+ WFIFOL(fd, 2) = char_id;
+ WFIFOB(fd, 6) = result;
+ WFIFOSET(fd, 7);
+}
+
+static void mapif_parse_auction_cancel(int fd)
+{
+ int char_id = RFIFOL(fd, 2), auction_id = RFIFOL(fd, 6);
+ struct auction_data *auction;
+
+ if ((auction = (struct auction_data *)idb_get(inter_auction->db, auction_id)) == NULL) {
+ mapif->auction_cancel(fd, char_id, 1); // Bid Number is Incorrect
+ return;
+ }
+
+ if (auction->seller_id != char_id) {
+ mapif->auction_cancel(fd, char_id, 2); // You cannot end the auction
+ return;
+ }
+
+ if (auction->buyer_id > 0) {
+ mapif->auction_cancel(fd, char_id, 3); // An auction with at least one bidder cannot be canceled
+ return;
+ }
+
+ inter_mail->sendmail(0, "Auction Manager", auction->seller_id, auction->seller_name, "Auction", "Auction canceled.", 0, &auction->item);
+ inter_auction->delete_(auction);
+
+ mapif->auction_cancel(fd, char_id, 0); // The auction has been canceled
+}
+
+
+static void mapif_auction_close(int fd, int char_id, unsigned char result)
+{
+ WFIFOHEAD(fd, 7);
+ WFIFOW(fd, 0) = 0x3853;
+ WFIFOL(fd, 2) = char_id;
+ WFIFOB(fd, 6) = result;
+ WFIFOSET(fd, 7);
+}
+
+static void mapif_parse_auction_close(int fd)
+{
+ int char_id = RFIFOL(fd, 2), auction_id = RFIFOL(fd, 6);
+ struct auction_data *auction;
+
+ if ((auction = (struct auction_data *)idb_get(inter_auction->db, auction_id)) == NULL) {
+ mapif->auction_close(fd, char_id, 2); // Bid Number is Incorrect
+ return;
+ }
+
+ if (auction->seller_id != char_id) {
+ mapif->auction_close(fd, char_id, 1); // You cannot end the auction
+ return;
+ }
+
+ if (auction->buyer_id == 0) {
+ mapif->auction_close(fd, char_id, 1); // You cannot end the auction
+ return;
+ }
+
+ // Send Money to Seller
+ inter_mail->sendmail(0, "Auction Manager", auction->seller_id, auction->seller_name, "Auction", "Auction closed.", auction->price, NULL);
+ // Send Item to Buyer
+ inter_mail->sendmail(0, "Auction Manager", auction->buyer_id, auction->buyer_name, "Auction", "Auction winner.", 0, &auction->item);
+ mapif->auction_message(auction->buyer_id, 6); // You have won the auction
+ inter_auction->delete_(auction);
+
+ mapif->auction_close(fd, char_id, 0); // You have ended the auction
+}
+
+static void mapif_auction_bid(int fd, int char_id, int bid, unsigned char result)
+{
+ WFIFOHEAD(fd, 11);
+ WFIFOW(fd, 0) = 0x3855;
+ WFIFOL(fd, 2) = char_id;
+ WFIFOL(fd, 6) = bid; // To Return Zeny
+ WFIFOB(fd, 10) = result;
+ WFIFOSET(fd, 11);
+}
+
+static void mapif_parse_auction_bid(int fd)
+{
+ int char_id = RFIFOL(fd, 4), bid = RFIFOL(fd, 12);
+ unsigned int auction_id = RFIFOL(fd, 8);
+ struct auction_data *auction;
+
+ if ((auction = (struct auction_data *)idb_get(inter_auction->db, auction_id)) == NULL || auction->price >= bid || auction->seller_id == char_id) {
+ mapif->auction_bid(fd, char_id, bid, 0); // You have failed to bid in the auction
+ return;
+ }
+
+ if (inter_auction->count(char_id, true) > 4 && bid < auction->buynow && auction->buyer_id != char_id) {
+ mapif->auction_bid(fd, char_id, bid, 9); // You cannot place more than 5 bids at a time
+ return;
+ }
+
+ if (auction->buyer_id > 0) {
+ // Send Money back to the previous Buyer
+ if (auction->buyer_id != char_id) {
+ inter_mail->sendmail(0, "Auction Manager", auction->buyer_id, auction->buyer_name, "Auction", "Someone has placed a higher bid.", auction->price, NULL);
+ mapif->auction_message(auction->buyer_id, 7); // You have failed to win the auction
+ } else {
+ inter_mail->sendmail(0, "Auction Manager", auction->buyer_id, auction->buyer_name, "Auction", "You have placed a higher bid.", auction->price, NULL);
+ }
+ }
+
+ auction->buyer_id = char_id;
+ safestrncpy(auction->buyer_name, RFIFOP(fd, 16), NAME_LENGTH);
+ auction->price = bid;
+
+ if (bid >= auction->buynow) {
+ // Automatic won the auction
+ mapif->auction_bid(fd, char_id, bid - auction->buynow, 1); // You have successfully bid in the auction
+
+ inter_mail->sendmail(0, "Auction Manager", auction->buyer_id, auction->buyer_name, "Auction", "You have won the auction.", 0, &auction->item);
+ mapif->auction_message(char_id, 6); // You have won the auction
+ inter_mail->sendmail(0, "Auction Manager", auction->seller_id, auction->seller_name, "Auction", "Payment for your auction!.", auction->buynow, NULL);
+
+ inter_auction->delete_(auction);
+ return;
+ }
+
+ inter_auction->save(auction);
+
+ mapif->auction_bid(fd, char_id, 0, 1); // You have successfully bid in the auction
+}
+
+static void mapif_elemental_send(int fd, struct s_elemental *ele, unsigned char flag)
+{
+ int size = sizeof(struct s_elemental) + 5;
+
+ nullpo_retv(ele);
+ WFIFOHEAD(fd, size);
+ WFIFOW(fd, 0) = 0x387c;
+ WFIFOW(fd, 2) = size;
+ WFIFOB(fd, 4) = flag;
+ memcpy(WFIFOP(fd, 5), ele, sizeof(struct s_elemental));
+ WFIFOSET(fd, size);
+}
+
+static void mapif_parse_elemental_create(int fd, const struct s_elemental *ele)
+{
+ struct s_elemental ele_;
+ bool result;
+
+ memcpy(&ele_, ele, sizeof(ele_));
+
+ result = inter_elemental->create(&ele_);
+ mapif->elemental_send(fd, &ele_, result);
+}
+
+static void mapif_parse_elemental_load(int fd, int ele_id, int char_id)
+{
+ struct s_elemental ele;
+ bool result = inter_elemental->load(ele_id, char_id, &ele);
+ mapif->elemental_send(fd, &ele, result);
+}
+
+static void mapif_elemental_deleted(int fd, unsigned char flag)
+{
+ WFIFOHEAD(fd, 3);
+ WFIFOW(fd, 0) = 0x387d;
+ WFIFOB(fd, 2) = flag;
+ WFIFOSET(fd, 3);
+}
+
+static void mapif_parse_elemental_delete(int fd, int ele_id)
+{
+ bool result = inter_elemental->delete(ele_id);
+ mapif->elemental_deleted(fd, result);
+}
+
+static void mapif_elemental_saved(int fd, unsigned char flag)
+{
+ WFIFOHEAD(fd, 3);
+ WFIFOW(fd, 0) = 0x387e;
+ WFIFOB(fd, 2) = flag;
+ WFIFOSET(fd, 3);
+}
+
+static void mapif_parse_elemental_save(int fd, const struct s_elemental *ele)
+{
+ bool result = inter_elemental->save(ele);
+ mapif->elemental_saved(fd, result);
+}
+
+static int mapif_guild_created(int fd, int account_id, struct guild *g)
+{
+ WFIFOHEAD(fd, 10);
+ WFIFOW(fd, 0) = 0x3830;
+ WFIFOL(fd, 2) = account_id;
+ if (g != NULL) {
+ WFIFOL(fd, 6) = g->guild_id;
+ ShowInfo("int_guild: Guild created (%d - %s)\n", g->guild_id, g->name);
+ } else {
+ WFIFOL(fd, 6) = 0;
+ }
+
+ WFIFOSET(fd, 10);
+ return 0;
+}
+
+// Guild not found
+static int mapif_guild_noinfo(int fd, int guild_id)
+{
+ unsigned char buf[12];
+ WBUFW(buf, 0) = 0x3831;
+ WBUFW(buf, 2) = 8;
+ WBUFL(buf, 4) = guild_id;
+ ShowWarning("int_guild: info not found %d\n", guild_id);
+ if (fd < 0)
+ mapif->sendall(buf, 8);
+ else
+ mapif->send(fd,buf, 8);
+ return 0;
+}
+
+// Send guild info
+static int mapif_guild_info(int fd, struct guild *g)
+{
+ unsigned char buf[8 + sizeof(struct guild)];
+ nullpo_ret(g);
+ WBUFW(buf, 0) = 0x3831;
+ WBUFW(buf, 2) = 4 + sizeof(struct guild);
+ memcpy(buf + 4, g, sizeof(struct guild));
+ if (fd < 0)
+ mapif->sendall(buf, WBUFW(buf, 2));
+ else
+ mapif->send(fd, buf, WBUFW(buf, 2));
+ return 0;
+}
+
+// ACK member add
+static int mapif_guild_memberadded(int fd, int guild_id, int account_id, int char_id, int flag)
+{
+ WFIFOHEAD(fd, 15);
+ WFIFOW(fd, 0) = 0x3832;
+ WFIFOL(fd, 2) = guild_id;
+ WFIFOL(fd, 6) = account_id;
+ WFIFOL(fd, 10) = char_id;
+ WFIFOB(fd, 14) = flag;
+ WFIFOSET(fd, 15);
+ return 0;
+}
+
+// ACK member leave
+static int mapif_guild_withdraw(int guild_id, int account_id, int char_id, int flag, const char *name, const char *mes)
+{
+ unsigned char buf[55 + NAME_LENGTH];
+
+ nullpo_ret(name);
+ nullpo_ret(mes);
+
+ WBUFW(buf, 0) = 0x3834;
+ WBUFL(buf, 2) = guild_id;
+ WBUFL(buf, 6) = account_id;
+ WBUFL(buf, 10) = char_id;
+ WBUFB(buf, 14) = flag;
+ memcpy(WBUFP(buf, 15), mes, 40);
+ memcpy(WBUFP(buf, 55), name, NAME_LENGTH);
+ mapif->sendall(buf, 55 + NAME_LENGTH);
+ ShowInfo("int_guild: guild withdraw (%d - %d: %s - %s)\n", guild_id, account_id, name, mes);
+ return 0;
+}
+
+// Send short member's info
+static int mapif_guild_memberinfoshort(struct guild *g, int idx)
+{
+ unsigned char buf[23];
+ nullpo_ret(g);
+ Assert_ret(idx >= 0 && idx < MAX_GUILD);
+ WBUFW(buf, 0) = 0x3835;
+ WBUFL(buf, 2) = g->guild_id;
+ WBUFL(buf, 6) = g->member[idx].account_id;
+ WBUFL(buf, 10) = g->member[idx].char_id;
+ WBUFB(buf, 14) = (unsigned char)g->member[idx].online;
+ WBUFW(buf, 15) = g->member[idx].lv;
+ WBUFW(buf, 17) = g->member[idx].class;
+ WBUFL(buf, 19) = g->member[idx].last_login;
+ mapif->sendall(buf, 23);
+ return 0;
+}
+
+// Send guild broken
+static int mapif_guild_broken(int guild_id, int flag)
+{
+ unsigned char buf[7];
+ WBUFW(buf, 0) = 0x3836;
+ WBUFL(buf, 2) = guild_id;
+ WBUFB(buf, 6) = flag;
+ mapif->sendall(buf, 7);
+ ShowInfo("int_guild: Guild broken (%d)\n", guild_id);
+ return 0;
+}
+
+// Send guild message
+static int mapif_guild_message(int guild_id, int account_id, const char *mes, int len, int sfd)
+{
+ unsigned char buf[512];
+ nullpo_ret(mes);
+ if (len > 500)
+ len = 500;
+ WBUFW(buf, 0) = 0x3837;
+ WBUFW(buf, 2) = len + 12;
+ WBUFL(buf, 4) = guild_id;
+ WBUFL(buf, 8) = account_id;
+ memcpy(WBUFP(buf, 12), mes, len);
+ mapif->sendallwos(sfd, buf, len + 12);
+ return 0;
+}
+
+// Send basic info
+static int mapif_guild_basicinfochanged(int guild_id, int type, const void *data, int len)
+{
+ unsigned char buf[2048];
+ nullpo_ret(data);
+ if (len > 2038)
+ len = 2038;
+ WBUFW(buf, 0) = 0x3839;
+ WBUFW(buf, 2) = len + 10;
+ WBUFL(buf, 4) = guild_id;
+ WBUFW(buf, 8) = type;
+ memcpy(WBUFP(buf, 10), data, len);
+ mapif->sendall(buf, len + 10);
+ return 0;
+}
+
+// Send member info
+static int mapif_guild_memberinfochanged(int guild_id, int account_id, int char_id, int type, const void *data, int len)
+{
+ unsigned char buf[2048];
+ nullpo_ret(data);
+ if (len > 2030)
+ len = 2030;
+ WBUFW(buf, 0) = 0x383a;
+ WBUFW(buf, 2) = len + 18;
+ WBUFL(buf, 4) = guild_id;
+ WBUFL(buf, 8) = account_id;
+ WBUFL(buf, 12) = char_id;
+ WBUFW(buf, 16) = type;
+ memcpy(WBUFP(buf, 18), data, len);
+ mapif->sendall(buf, len + 18);
+ return 0;
+}
+
+// ACK guild skill up
+static int mapif_guild_skillupack(int guild_id, uint16 skill_id, int account_id)
+{
+ unsigned char buf[14];
+ WBUFW(buf, 0) = 0x383c;
+ WBUFL(buf, 2) = guild_id;
+ WBUFL(buf, 6) = skill_id;
+ WBUFL(buf,10) = account_id;
+ mapif->sendall(buf, 14);
+ return 0;
+}
+
+// ACK guild alliance
+static int mapif_guild_alliance(int guild_id1, int guild_id2, int account_id1, int account_id2, int flag, const char *name1, const char *name2)
+{
+ unsigned char buf[19 + 2 * NAME_LENGTH];
+ nullpo_ret(name1);
+ nullpo_ret(name2);
+ WBUFW(buf, 0) = 0x383d;
+ WBUFL(buf, 2) = guild_id1;
+ WBUFL(buf, 6) = guild_id2;
+ WBUFL(buf, 10) = account_id1;
+ WBUFL(buf, 14) = account_id2;
+ WBUFB(buf, 18) = flag;
+ memcpy(WBUFP(buf, 19), name1, NAME_LENGTH);
+ memcpy(WBUFP(buf, 19 + NAME_LENGTH), name2, NAME_LENGTH);
+ mapif->sendall(buf,19 + 2 * NAME_LENGTH);
+ return 0;
+}
+
+// Send a guild position desc
+static int mapif_guild_position(struct guild *g, int idx)
+{
+ unsigned char buf[12 + sizeof(struct guild_position)];
+ nullpo_ret(g);
+ Assert_ret(idx >= 0 && idx < MAX_GUILDPOSITION);
+ WBUFW(buf, 0) = 0x383b;
+ WBUFW(buf, 2) = sizeof(struct guild_position)+12;
+ WBUFL(buf, 4) = g->guild_id;
+ WBUFL(buf, 8) = idx;
+ memcpy(WBUFP(buf, 12), &g->position[idx], sizeof(struct guild_position));
+ mapif->sendall(buf, WBUFW(buf, 2));
+ return 0;
+}
+
+// Send the guild notice
+static int mapif_guild_notice(struct guild *g)
+{
+ unsigned char buf[256];
+ nullpo_ret(g);
+ WBUFW(buf, 0) = 0x383e;
+ WBUFL(buf, 2) = g->guild_id;
+ memcpy(WBUFP(buf, 6), g->mes1, MAX_GUILDMES1);
+ memcpy(WBUFP(buf, 66), g->mes2, MAX_GUILDMES2);
+ mapif->sendall(buf, 186);
+ return 0;
+}
+
+// Send emblem data
+static int mapif_guild_emblem(struct guild *g)
+{
+ unsigned char buf[12 + sizeof(g->emblem_data)];
+ nullpo_ret(g);
+ WBUFW(buf, 0) = 0x383f;
+ WBUFW(buf, 2) = g->emblem_len+12;
+ WBUFL(buf, 4) = g->guild_id;
+ WBUFL(buf, 8) = g->emblem_id;
+ memcpy(WBUFP(buf, 12), g->emblem_data, g->emblem_len);
+ mapif->sendall(buf, WBUFW(buf, 2));
+ return 0;
+}
+
+static int mapif_guild_master_changed(struct guild *g, int aid, int cid)
+{
+ unsigned char buf[14];
+ nullpo_ret(g);
+ WBUFW(buf, 0) = 0x3843;
+ WBUFL(buf, 2) = g->guild_id;
+ WBUFL(buf, 6) = aid;
+ WBUFL(buf, 10) = cid;
+ mapif->sendall(buf, 14);
+ return 0;
+}
+
+static int mapif_guild_castle_dataload(int fd, int sz, const int *castle_ids)
+{
+ struct guild_castle *gc = NULL;
+ int num = (sz - 4) / sizeof(int);
+ int len = 4 + num * sizeof(*gc);
+ int i;
+
+ nullpo_ret(castle_ids);
+ WFIFOHEAD(fd, len);
+ WFIFOW(fd, 0) = 0x3840;
+ WFIFOW(fd, 2) = len;
+ for (i = 0; i < num; i++) {
+ gc = inter_guild->castle_fromsql(*(castle_ids++));
+ memcpy(WFIFOP(fd, 4 + i * sizeof(*gc)), gc, sizeof(*gc));
+ }
+ WFIFOSET(fd, len);
+ return 0;
+}
+
+// Guild creation request
+static int mapif_parse_CreateGuild(int fd, int account_id, const char *name, const struct guild_member *master)
+{
+ struct guild *g;
+ nullpo_ret(name);
+ nullpo_ret(master);
+
+ g = inter_guild->create(name, master);
+
+ // Report to client
+ mapif->guild_created(fd,account_id,g);
+ if (g != NULL) {
+ mapif->guild_info(fd,g);
+ }
+
+ return 0;
+}
+
+// Return guild info to client
+static int mapif_parse_GuildInfo(int fd, int guild_id)
+{
+ struct guild * g = inter_guild->fromsql(guild_id); //We use this because on start-up the info of castle-owned guilds is required. [Skotlex]
+ if (g != NULL) {
+ if (!inter_guild->calcinfo(g))
+ mapif->guild_info(fd, g);
+ } else {
+ mapif->guild_noinfo(fd, guild_id); // Failed to load info
+ }
+ return 0;
+}
+
+// Add member to guild
+static int mapif_parse_GuildAddMember(int fd, int guild_id, const struct guild_member *m)
+{
+ nullpo_ret(m);
+
+ inter_guild->add_member(guild_id, m, fd);
+ return 0;
+}
+
+// Delete member from guild
+static int mapif_parse_GuildLeave(int fd, int guild_id, int account_id, int char_id, int flag, const char *mes)
+{
+ inter_guild->leave(guild_id, account_id, char_id, flag, mes, fd);
+ return 0;
+}
+
+// Change member info
+static int mapif_parse_GuildChangeMemberInfoShort(int fd, int guild_id, int account_id, int char_id, int online, int lv, int16 class)
+{
+ inter_guild->update_member_info_short(guild_id, account_id, char_id, online, lv, class);
+ return 0;
+}
+
+// BreakGuild
+static int mapif_parse_BreakGuild(int fd, int guild_id)
+{
+ inter_guild->disband(guild_id);
+ return 0;
+}
+
+// Forward Guild message to others map servers
+static int mapif_parse_GuildMessage(int fd, int guild_id, int account_id, const char *mes, int len)
+{
+ return mapif->guild_message(guild_id,account_id,mes,len, fd);
+}
+
+/**
+ * Changes basic guild information
+ * The types are available in mmo.h::guild_basic_info
+ **/
+static int mapif_parse_GuildBasicInfoChange(int fd, int guild_id, int type, const void *data, int len)
+{
+ inter_guild->update_basic_info(guild_id, type, data, len);
+ // Information is already sent in mapif->guild_info
+ //mapif->guild_basicinfochanged(guild_id,type,data,len);
+ return 0;
+}
+
+// Modification of the guild
+static int mapif_parse_GuildMemberInfoChange(int fd, int guild_id, int account_id, int char_id, int type, const char *data, int len)
+{
+ inter_guild->update_member_info(guild_id, account_id, char_id, type, data, len);
+ return 0;
+}
+
+// Change a position desc
+static int mapif_parse_GuildPosition(int fd, int guild_id, int idx, const struct guild_position *p)
+{
+ nullpo_ret(p);
+ inter_guild->update_position(guild_id, idx, p);
+ return 0;
+}
+
+// Guild Skill UP
+static int mapif_parse_GuildSkillUp(int fd, int guild_id, uint16 skill_id, int account_id, int max)
+{
+ inter_guild->use_skill_point(guild_id, skill_id, account_id, max);
+ return 0;
+}
+
+// Alliance modification
+static int mapif_parse_GuildAlliance(int fd, int guild_id1, int guild_id2, int account_id1, int account_id2, int flag)
+{
+ inter_guild->change_alliance(guild_id1, guild_id2, account_id1, account_id2, flag);
+ return 0;
+}
+
+// Change guild message
+static int mapif_parse_GuildNotice(int fd, int guild_id, const char *mes1, const char *mes2)
+{
+ inter_guild->update_notice(guild_id, mes1, mes2);
+ return 0;
+}
+
+static int mapif_parse_GuildEmblem(int fd, int len, int guild_id, int dummy, const char *data)
+{
+ inter_guild->update_emblem(len, guild_id, data);
+ return 0;
+}
+
+static int mapif_parse_GuildCastleDataLoad(int fd, int len, const int *castle_ids)
+{
+ return mapif->guild_castle_dataload(fd, len, castle_ids);
+}
+
+static int mapif_parse_GuildCastleDataSave(int fd, int castle_id, int index, int value)
+{
+ inter_guild->update_castle_data(castle_id, index, value);
+ return 0;
+}
+
+static int mapif_parse_GuildMasterChange(int fd, int guild_id, const char* name, int len)
+{
+ inter_guild->change_leader(guild_id, name, len);
+ return 0;
+}
+
+static void mapif_homunculus_created(int fd, int account_id, const struct s_homunculus *sh, unsigned char flag)
+{
+ nullpo_retv(sh);
+ WFIFOHEAD(fd, sizeof(struct s_homunculus) + 9);
+ WFIFOW(fd, 0) = 0x3890;
+ WFIFOW(fd, 2) = sizeof(struct s_homunculus) + 9;
+ WFIFOL(fd, 4) = account_id;
+ WFIFOB(fd, 8) = flag;
+ memcpy(WFIFOP(fd, 9), sh, sizeof(struct s_homunculus));
+ WFIFOSET(fd, WFIFOW(fd, 2));
+}
+
+static void mapif_homunculus_deleted(int fd, int flag)
+{
+ WFIFOHEAD(fd, 3);
+ WFIFOW(fd, 0) = 0x3893;
+ WFIFOB(fd,2) = flag; //Flag 1 = success
+ WFIFOSET(fd, 3);
+}
+
+static void mapif_homunculus_loaded(int fd, int account_id, struct s_homunculus *hd)
+{
+ WFIFOHEAD(fd, sizeof(struct s_homunculus) + 9);
+ WFIFOW(fd, 0) = 0x3891;
+ WFIFOW(fd, 2) = sizeof(struct s_homunculus) + 9;
+ WFIFOL(fd, 4) = account_id;
+ if (hd != NULL) {
+ WFIFOB(fd, 8) = 1; // success
+ memcpy(WFIFOP(fd, 9), hd, sizeof(struct s_homunculus));
+ } else {
+ WFIFOB(fd, 8) = 0; // not found.
+ memset(WFIFOP(fd, 9), 0, sizeof(struct s_homunculus));
+ }
+ WFIFOSET(fd, sizeof(struct s_homunculus) + 9);
+}
+
+static void mapif_homunculus_saved(int fd, int account_id, bool flag)
+{
+ WFIFOHEAD(fd, 7);
+ WFIFOW(fd, 0) = 0x3892;
+ WFIFOL(fd, 2) = account_id;
+ WFIFOB(fd, 6) = flag; // 1:success, 0:failure
+ WFIFOSET(fd, 7);
+}
+
+static void mapif_homunculus_renamed(int fd, int account_id, int char_id, unsigned char flag, const char *name)
+{
+ nullpo_retv(name);
+ WFIFOHEAD(fd, NAME_LENGTH + 12);
+ WFIFOW(fd, 0) = 0x3894;
+ WFIFOL(fd, 2) = account_id;
+ WFIFOL(fd, 6) = char_id;
+ WFIFOB(fd, 10) = flag;
+ safestrncpy(WFIFOP(fd, 11), name, NAME_LENGTH);
+ WFIFOSET(fd, NAME_LENGTH + 12);
+}
+
+static void mapif_parse_homunculus_create(int fd, int len, int account_id, const struct s_homunculus *phd)
+{
+ struct s_homunculus shd;
+ bool result;
+
+ memcpy(&shd, phd, sizeof(shd));
+
+ result = inter_homunculus->create(&shd);
+ mapif->homunculus_created(fd, account_id, &shd, result);
+}
+
+static void mapif_parse_homunculus_delete(int fd, int homun_id)
+{
+ bool result = inter_homunculus->delete(homun_id);
+ mapif->homunculus_deleted(fd, result);
+}
+
+static void mapif_parse_homunculus_load(int fd, int account_id, int homun_id)
+{
+ struct s_homunculus hd;
+ bool result = inter_homunculus->load(homun_id, &hd);
+ mapif->homunculus_loaded(fd, account_id, (result ? &hd : NULL));
+}
+
+static void mapif_parse_homunculus_save(int fd, int len, int account_id, const struct s_homunculus *phd)
+{
+ bool result = inter_homunculus->save(phd);
+ mapif->homunculus_saved(fd, account_id, result);
+}
+
+static void mapif_parse_homunculus_rename(int fd, int account_id, int char_id, const char *name)
+{
+ bool result = inter_homunculus->rename(name);
+ mapif->homunculus_renamed(fd, account_id, char_id, result, name);
+}
+
+static void mapif_mail_sendinbox(int fd, int char_id, unsigned char flag, struct mail_data *md)
+{
+ nullpo_retv(md);
+ //FIXME: dumping the whole structure like this is unsafe [ultramage]
+ WFIFOHEAD(fd, sizeof(struct mail_data) + 9);
+ WFIFOW(fd, 0) = 0x3848;
+ WFIFOW(fd, 2) = sizeof(struct mail_data) + 9;
+ WFIFOL(fd, 4) = char_id;
+ WFIFOB(fd, 8) = flag;
+ memcpy(WFIFOP(fd, 9),md,sizeof(struct mail_data));
+ WFIFOSET(fd,WFIFOW(fd, 2));
+}
+
+/*==========================================
+ * Client Inbox Request
+ *------------------------------------------*/
+static void mapif_parse_mail_requestinbox(int fd)
+{
+ int char_id = RFIFOL(fd, 2);
+ unsigned char flag = RFIFOB(fd, 6);
+ struct mail_data md;
+ memset(&md, 0, sizeof(md));
+ inter_mail->fromsql(char_id, &md);
+ mapif->mail_sendinbox(fd, char_id, flag, &md);
+}
+
+/*==========================================
+ * Mark mail as 'Read'
+ *------------------------------------------*/
+static void mapif_parse_mail_read(int fd)
+{
+ int mail_id = RFIFOL(fd, 2);
+ inter_mail->mark_read(mail_id);
+}
+
+static void mapif_mail_sendattach(int fd, int char_id, struct mail_message *msg)
+{
+ nullpo_retv(msg);
+ WFIFOHEAD(fd, sizeof(struct item) + 12);
+ WFIFOW(fd, 0) = 0x384a;
+ WFIFOW(fd, 2) = sizeof(struct item) + 12;
+ WFIFOL(fd, 4) = char_id;
+ WFIFOL(fd, 8) = (msg->zeny > 0) ? msg->zeny : 0;
+ memcpy(WFIFOP(fd, 12), &msg->item, sizeof(struct item));
+ WFIFOSET(fd,WFIFOW(fd, 2));
+}
+
+static void mapif_parse_mail_getattach(int fd)
+{
+ struct mail_message msg = { 0 };
+ int char_id = RFIFOL(fd, 2);
+ int mail_id = RFIFOL(fd, 6);
+
+ if (!inter_mail->get_attachment(char_id, mail_id, &msg))
+ return;
+
+ mapif->mail_sendattach(fd, char_id, &msg);
+}
+
+/*==========================================
+ * Delete Mail
+ *------------------------------------------*/
+static void mapif_mail_delete(int fd, int char_id, int mail_id, bool failed)
+{
+ WFIFOHEAD(fd, 11);
+ WFIFOW(fd, 0) = 0x384b;
+ WFIFOL(fd, 2) = char_id;
+ WFIFOL(fd, 6) = mail_id;
+ WFIFOB(fd, 10) = failed;
+ WFIFOSET(fd, 11);
+}
+
+static void mapif_parse_mail_delete(int fd)
+{
+ int char_id = RFIFOL(fd, 2);
+ int mail_id = RFIFOL(fd, 6);
+ bool failed = !inter_mail->delete(char_id, mail_id);
+ mapif->mail_delete(fd, char_id, mail_id, failed);
+}
+
+/*==========================================
+ * Report New Mail to Map Server
+ *------------------------------------------*/
+static void mapif_mail_new(struct mail_message *msg)
+{
+ unsigned char buf[74];
+
+ if (msg == NULL || msg->id == 0)
+ return;
+
+ WBUFW(buf, 0) = 0x3849;
+ WBUFL(buf, 2) = msg->dest_id;
+ WBUFL(buf, 6) = msg->id;
+ memcpy(WBUFP(buf, 10), msg->send_name, NAME_LENGTH);
+ memcpy(WBUFP(buf, 34), msg->title, MAIL_TITLE_LENGTH);
+ mapif->sendall(buf, 74);
+}
+
+/*==========================================
+ * Return Mail
+ *------------------------------------------*/
+static void mapif_mail_return(int fd, int char_id, int mail_id, int new_mail)
+{
+ WFIFOHEAD(fd, 11);
+ WFIFOW(fd, 0) = 0x384c;
+ WFIFOL(fd, 2) = char_id;
+ WFIFOL(fd, 6) = mail_id;
+ WFIFOB(fd, 10) = (new_mail == 0);
+ WFIFOSET(fd, 11);
+}
+
+static void mapif_parse_mail_return(int fd)
+{
+ int char_id = RFIFOL(fd, 2);
+ int mail_id = RFIFOL(fd, 6);
+ int new_mail = 0;
+
+ if (!inter_mail->return_message(char_id, mail_id, &new_mail))
+ return;
+
+ mapif->mail_return(fd, char_id, mail_id, new_mail);
+}
+
+/*==========================================
+ * Send Mail
+ *------------------------------------------*/
+static void mapif_mail_send(int fd, struct mail_message* msg)
+{
+ int len = sizeof(struct mail_message) + 4;
+
+ nullpo_retv(msg);
+ WFIFOHEAD(fd, len);
+ WFIFOW(fd, 0) = 0x384d;
+ WFIFOW(fd, 2) = len;
+ memcpy(WFIFOP(fd, 4), msg, sizeof(struct mail_message));
+ WFIFOSET(fd,len);
+}
+
+static void mapif_parse_mail_send(int fd)
+{
+ struct mail_message msg;
+ int account_id = 0;
+
+ if (RFIFOW(fd, 2) != 8 + sizeof(struct mail_message))
+ return;
+
+ account_id = RFIFOL(fd, 4);
+ memcpy(&msg, RFIFOP(fd, 8), sizeof(struct mail_message));
+
+ inter_mail->send(account_id, &msg);
+
+ mapif->mail_send(fd, &msg); // notify sender
+ mapif->mail_new(&msg); // notify recipient
+}
+
+static void mapif_mercenary_send(int fd, struct s_mercenary *merc, unsigned char flag)
+{
+ int size = sizeof(struct s_mercenary) + 5;
+
+ nullpo_retv(merc);
+ WFIFOHEAD(fd, size);
+ WFIFOW(fd, 0) = 0x3870;
+ WFIFOW(fd, 2) = size;
+ WFIFOB(fd, 4) = flag;
+ memcpy(WFIFOP(fd, 5), merc, sizeof(struct s_mercenary));
+ WFIFOSET(fd,size);
+}
+
+static void mapif_parse_mercenary_create(int fd, const struct s_mercenary *merc)
+{
+ struct s_mercenary merc_;
+ bool result;
+
+ memcpy(&merc_, merc, sizeof(merc_));
+
+ result = inter_mercenary->create(&merc_);
+ mapif->mercenary_send(fd, &merc_, result);
+}
+
+static void mapif_parse_mercenary_load(int fd, int merc_id, int char_id)
+{
+ struct s_mercenary merc;
+ bool result = inter_mercenary->load(merc_id, char_id, &merc);
+ mapif->mercenary_send(fd, &merc, result);
+}
+
+static void mapif_mercenary_deleted(int fd, unsigned char flag)
+{
+ WFIFOHEAD(fd, 3);
+ WFIFOW(fd, 0) = 0x3871;
+ WFIFOB(fd, 2) = flag;
+ WFIFOSET(fd, 3);
+}
+
+static void mapif_parse_mercenary_delete(int fd, int merc_id)
+{
+ bool result = inter_mercenary->delete(merc_id);
+ mapif->mercenary_deleted(fd, result);
+}
+
+static void mapif_mercenary_saved(int fd, unsigned char flag)
+{
+ WFIFOHEAD(fd, 3);
+ WFIFOW(fd, 0) = 0x3872;
+ WFIFOB(fd, 2) = flag;
+ WFIFOSET(fd, 3);
+}
+
+static void mapif_parse_mercenary_save(int fd, const struct s_mercenary *merc)
+{
+ bool result = inter_mercenary->save(merc);
+ mapif->mercenary_saved(fd, result);
+}
+
+// Create a party whether or not
+static int mapif_party_created(int fd, int account_id, int char_id, struct party *p)
+{
+ WFIFOHEAD(fd, 39);
+ WFIFOW(fd, 0) = 0x3820;
+ WFIFOL(fd, 2) = account_id;
+ WFIFOL(fd, 6) = char_id;
+ if (p != NULL) {
+ WFIFOB(fd, 10) = 0;
+ WFIFOL(fd, 11) = p->party_id;
+ memcpy(WFIFOP(fd, 15), p->name, NAME_LENGTH);
+ ShowInfo("int_party: Party created (%d - %s)\n", p->party_id, p->name);
+ } else {
+ WFIFOB(fd, 10) = 1;
+ WFIFOL(fd, 11) = 0;
+ memset(WFIFOP(fd, 15), 0, NAME_LENGTH);
+ }
+ WFIFOSET(fd, 39);
+
+ return 0;
+}
+
+//Party information not found
+static void mapif_party_noinfo(int fd, int party_id, int char_id)
+{
+ WFIFOHEAD(fd, 12);
+ WFIFOW(fd, 0) = 0x3821;
+ WFIFOW(fd, 2) = 12;
+ WFIFOL(fd, 4) = char_id;
+ WFIFOL(fd, 8) = party_id;
+ WFIFOSET(fd, 12);
+ ShowWarning("int_party: info not found (party_id=%d char_id=%d)\n", party_id, char_id);
+}
+
+//Digest party information
+static void mapif_party_info(int fd, struct party* p, int char_id)
+{
+ unsigned char buf[8 + sizeof(struct party)];
+ nullpo_retv(p);
+ WBUFW(buf, 0) = 0x3821;
+ WBUFW(buf, 2) = 8 + sizeof(struct party);
+ WBUFL(buf, 4) = char_id;
+ memcpy(WBUFP(buf, 8), p, sizeof(struct party));
+
+ if (fd < 0)
+ mapif->sendall(buf, WBUFW(buf, 2));
+ else
+ mapif->send(fd, buf, WBUFW(buf, 2));
+}
+
+//Whether or not additional party members
+static int mapif_party_memberadded(int fd, int party_id, int account_id, int char_id, int flag)
+{
+ WFIFOHEAD(fd, 15);
+ WFIFOW(fd, 0) = 0x3822;
+ WFIFOL(fd, 2) = party_id;
+ WFIFOL(fd, 6) = account_id;
+ WFIFOL(fd, 10) = char_id;
+ WFIFOB(fd, 14) = flag;
+ WFIFOSET(fd, 15);
+
+ return 0;
+}
+
+// Party setting change notification
+static int mapif_party_optionchanged(int fd, struct party *p, int account_id, int flag)
+{
+ unsigned char buf[16];
+ nullpo_ret(p);
+ WBUFW(buf, 0) = 0x3823;
+ WBUFL(buf, 2) = p->party_id;
+ WBUFL(buf, 6) = account_id;
+ WBUFW(buf, 10) = p->exp;
+ WBUFW(buf, 12) = p->item;
+ WBUFB(buf, 14) = flag;
+ if (flag == 0)
+ mapif->sendall(buf, 15);
+ else
+ mapif->send(fd, buf, 15);
+ return 0;
+}
+
+//Withdrawal notification party
+static int mapif_party_withdraw(int party_id, int account_id, int char_id)
+{
+ unsigned char buf[16];
+
+ WBUFW(buf, 0) = 0x3824;
+ WBUFL(buf, 2) = party_id;
+ WBUFL(buf, 6) = account_id;
+ WBUFL(buf, 10) = char_id;
+ mapif->sendall(buf, 14);
+ return 0;
+}
+
+//Party map update notification
+static int mapif_party_membermoved(struct party *p, int idx)
+{
+ unsigned char buf[20];
+
+ nullpo_ret(p);
+ Assert_ret(idx >= 0 && idx < MAX_PARTY);
+ WBUFW(buf, 0) = 0x3825;
+ WBUFL(buf, 2) = p->party_id;
+ WBUFL(buf, 6) = p->member[idx].account_id;
+ WBUFL(buf, 10) = p->member[idx].char_id;
+ WBUFW(buf, 14) = p->member[idx].map;
+ WBUFB(buf, 16) = p->member[idx].online;
+ WBUFW(buf, 17) = p->member[idx].lv;
+ mapif->sendall(buf, 19);
+ return 0;
+}
+
+//Dissolution party notification
+static int mapif_party_broken(int party_id, int flag)
+{
+ unsigned char buf[16];
+ WBUFW(buf, 0) = 0x3826;
+ WBUFL(buf, 2) = party_id;
+ WBUFB(buf, 6) = flag;
+ mapif->sendall(buf, 7);
+ //printf("int_party: broken %d\n",party_id);
+ return 0;
+}
+
+//Remarks in the party
+static int mapif_party_message(int party_id, int account_id, const char *mes, int len, int sfd)
+{
+ unsigned char buf[512];
+ nullpo_ret(mes);
+ WBUFW(buf, 0) = 0x3827;
+ WBUFW(buf, 2) = len + 12;
+ WBUFL(buf, 4) = party_id;
+ WBUFL(buf, 8) = account_id;
+ memcpy(WBUFP(buf, 12), mes, len);
+ mapif->sendallwos(sfd, buf, len + 12);
+ return 0;
+}
+
+// Create Party
+static int mapif_parse_CreateParty(int fd, const char *name, int item, int item2, const struct party_member *leader)
+{
+ struct party_data *p;
+
+ nullpo_ret(name);
+ nullpo_ret(leader);
+
+ p = inter_party->create(name, item, item2, leader);
+
+ if (p == NULL) {
+ mapif->party_created(fd, leader->account_id, leader->char_id, NULL);
+ return 0;
+ }
+
+ mapif->party_info(fd, &p->party, 0);
+ mapif->party_created(fd, leader->account_id, leader->char_id, &p->party);
+
+ return 0;
+}
+
+// Party information request
+static void mapif_parse_PartyInfo(int fd, int party_id, int char_id)
+{
+ struct party_data *p;
+ p = inter_party->fromsql(party_id);
+
+ if (p != NULL)
+ mapif->party_info(fd, &p->party, char_id);
+ else
+ mapif->party_noinfo(fd, party_id, char_id);
+}
+
+// Add a player to party request
+static int mapif_parse_PartyAddMember(int fd, int party_id, const struct party_member *member)
+{
+ nullpo_ret(member);
+
+ if (!inter_party->add_member(party_id, member)) {
+ mapif->party_memberadded(fd, party_id, member->account_id, member->char_id, 1);
+ return 0;
+ }
+ mapif->party_memberadded(fd, party_id, member->account_id, member->char_id, 0);
+
+ return 0;
+}
+
+//Party setting change request
+static int mapif_parse_PartyChangeOption(int fd, int party_id, int account_id, int exp, int item)
+{
+ inter_party->change_option(party_id, account_id, exp, item, fd);
+ return 0;
+}
+
+//Request leave party
+static int mapif_parse_PartyLeave(int fd, int party_id, int account_id, int char_id)
+{
+ inter_party->leave(party_id, account_id, char_id);
+ return 0;
+}
+
+// When member goes to other map or levels up.
+static int mapif_parse_PartyChangeMap(int fd, int party_id, int account_id, int char_id, unsigned short map, int online, unsigned int lv)
+{
+ inter_party->change_map(party_id, account_id, char_id, map, online, lv);
+ return 0;
+}
+
+//Request party dissolution
+static int mapif_parse_BreakParty(int fd, int party_id)
+{
+ inter_party->disband(party_id);
+ return 0;
+}
+
+//Party sending the message
+static int mapif_parse_PartyMessage(int fd, int party_id, int account_id, const char *mes, int len)
+{
+ return mapif->party_message(party_id, account_id, mes, len, fd);
+}
+
+static int mapif_parse_PartyLeaderChange(int fd, int party_id, int account_id, int char_id)
+{
+ if (!inter_party->change_leader(party_id, account_id, char_id))
+ return 0;
+ return 1;
+}
+
+static int mapif_pet_created(int fd, int account_id, struct s_pet *p)
+{
+ WFIFOHEAD(fd, 12);
+ WFIFOW(fd, 0) = 0x3880;
+ WFIFOL(fd, 2) = account_id;
+ if (p != NULL){
+ WFIFOW(fd, 6) = p->class_;
+ WFIFOL(fd, 8) = p->pet_id;
+ ShowInfo("int_pet: created pet %d - %s\n", p->pet_id, p->name);
+ } else {
+ WFIFOB(fd, 6) = 0;
+ WFIFOL(fd, 8) = 0;
+ }
+ WFIFOSET(fd, 12);
+
+ return 0;
+}
+
+static int mapif_pet_info(int fd, int account_id, struct s_pet *p)
+{
+ nullpo_ret(p);
+ WFIFOHEAD(fd, sizeof(struct s_pet) + 9);
+ WFIFOW(fd, 0) = 0x3881;
+ WFIFOW(fd, 2) = sizeof(struct s_pet) + 9;
+ WFIFOL(fd, 4) = account_id;
+ WFIFOB(fd, 8) = 0;
+ memcpy(WFIFOP(fd, 9), p, sizeof(struct s_pet));
+ WFIFOSET(fd, WFIFOW(fd, 2));
+
+ return 0;
+}
+
+static int mapif_pet_noinfo(int fd, int account_id)
+{
+ WFIFOHEAD(fd, sizeof(struct s_pet) + 9);
+ WFIFOW(fd, 0) = 0x3881;
+ WFIFOW(fd, 2) = sizeof(struct s_pet) + 9;
+ WFIFOL(fd, 4) = account_id;
+ WFIFOB(fd, 8) = 1;
+ memset(WFIFOP(fd, 9), 0, sizeof(struct s_pet));
+ WFIFOSET(fd, WFIFOW(fd, 2));
+
+ return 0;
+}
+
+static int mapif_save_pet_ack(int fd, int account_id, int flag)
+{
+ WFIFOHEAD(fd, 7);
+ WFIFOW(fd, 0) = 0x3882;
+ WFIFOL(fd, 2) = account_id;
+ WFIFOB(fd, 6) = flag;
+ WFIFOSET(fd, 7);
+
+ return 0;
+}
+
+static int mapif_delete_pet_ack(int fd, int flag)
+{
+ WFIFOHEAD(fd, 3);
+ WFIFOW(fd, 0) = 0x3883;
+ WFIFOB(fd, 2) = flag;
+ WFIFOSET(fd, 3);
+
+ return 0;
+}
+
+static int mapif_save_pet(int fd, int account_id, const struct s_pet *data)
+{
+ //here process pet save request.
+ int len;
+ nullpo_ret(data);
+ RFIFOHEAD(fd);
+ len = RFIFOW(fd, 2);
+ if (sizeof(struct s_pet) != len-8) {
+ ShowError("inter pet: data size mismatch: %d != %"PRIuS"\n", len-8, sizeof(struct s_pet));
+ return 0;
+ }
+
+ inter_pet->tosql(data);
+ mapif->save_pet_ack(fd, account_id, 0);
+
+ return 0;
+}
+
+static int mapif_delete_pet(int fd, int pet_id)
+{
+ mapif->delete_pet_ack(fd, inter_pet->delete_(pet_id));
+
+ return 0;
+}
+
+static int mapif_parse_CreatePet(int fd)
+{
+ int account_id;
+ struct s_pet *pet;
+
+ RFIFOHEAD(fd);
+ account_id = RFIFOL(fd, 2);
+ pet = inter_pet->create(account_id,
+ RFIFOL(fd, 6),
+ RFIFOW(fd, 10),
+ RFIFOW(fd, 12),
+ RFIFOL(fd, 14),
+ RFIFOL(fd, 18),
+ RFIFOW(fd, 22),
+ RFIFOW(fd, 24),
+ RFIFOB(fd, 26),
+ RFIFOB(fd, 27),
+ RFIFOP(fd, 28));
+
+ if (pet != NULL)
+ mapif->pet_created(fd, account_id, pet);
+ else
+ mapif->pet_created(fd, account_id, NULL);
+
+ return 0;
+}
+
+static int mapif_parse_LoadPet(int fd)
+{
+ int account_id;
+ struct s_pet *pet;
+
+ RFIFOHEAD(fd);
+ account_id = RFIFOL(fd, 2);
+ pet = inter_pet->load(account_id, RFIFOL(fd, 6), RFIFOL(fd, 10));
+
+ if (pet != NULL)
+ mapif->pet_info(fd, account_id, pet);
+ else
+ mapif->pet_noinfo(fd, account_id);
+ return 0;
+}
+
+static int mapif_parse_SavePet(int fd)
+{
+ RFIFOHEAD(fd);
+ mapif->save_pet(fd, RFIFOL(fd, 4), RFIFOP(fd, 8));
+ return 0;
+}
+
+static int mapif_parse_DeletePet(int fd)
+{
+ RFIFOHEAD(fd);
+ mapif->delete_pet(fd, RFIFOL(fd, 2));
+ return 0;
+}
+
+static void mapif_quest_save_ack(int fd, int char_id, bool success)
+{
+ WFIFOHEAD(fd, 7);
+ WFIFOW(fd, 0) = 0x3861;
+ WFIFOL(fd, 2) = char_id;
+ WFIFOB(fd, 6) = success ? 1 : 0;
+ WFIFOSET(fd, 7);
+}
+
+/**
+ * Handles the save request from mapserver for a character's questlog.
+ *
+ * Received quests are saved, and an ack is sent back to the map server.
+ *
+ * @see inter_parse_frommap
+ */
+static int mapif_parse_quest_save(int fd)
+{
+ int num = (RFIFOW(fd, 2) - 8) / sizeof(struct quest);
+ int char_id = RFIFOL(fd, 4);
+ const struct quest *qd = NULL;
+ bool success;
+
+ if (num > 0)
+ qd = RFIFOP(fd,8);
+
+ success = inter_quest->save(char_id, qd, num);
+
+ // Send ack
+ mapif->quest_save_ack(fd, char_id, success);
+
+ return 0;
+}
+
+static void mapif_send_quests(int fd, int char_id, struct quest *tmp_questlog, int num_quests)
+{
+ WFIFOHEAD(fd,num_quests*sizeof(struct quest) + 8);
+ WFIFOW(fd, 0) = 0x3860;
+ WFIFOW(fd, 2) = num_quests*sizeof(struct quest) + 8;
+ WFIFOL(fd, 4) = char_id;
+
+ if (num_quests > 0) {
+ nullpo_retv(tmp_questlog);
+ memcpy(WFIFOP(fd, 8), tmp_questlog, sizeof(struct quest) * num_quests);
+ }
+
+ WFIFOSET(fd, num_quests * sizeof(struct quest) + 8);
+}
+
+/**
+ * Sends questlog to the map server
+ *
+ * Note: Completed quests (state == Q_COMPLETE) are guaranteed to be sent last
+ * and the map server relies on this behavior (once the first Q_COMPLETE quest,
+ * all of them are considered to be Q_COMPLETE)
+ *
+ * @see inter_parse_frommap
+ */
+static int mapif_parse_quest_load(int fd)
+{
+ int char_id = RFIFOL(fd,2);
+ struct quest *tmp_questlog = NULL;
+ int num_quests;
+
+ tmp_questlog = inter_quest->fromsql(char_id, &num_quests);
+ mapif->send_quests(fd, char_id, tmp_questlog, num_quests);
+
+ if (tmp_questlog != NULL)
+ aFree(tmp_questlog);
+
+ return 0;
+}
+
+/* RoDEX */
+
+/*==========================================
+ * Inbox Request
+ *------------------------------------------*/
+static void mapif_parse_rodex_requestinbox(int fd)
+{
+ int count;
+ int char_id = RFIFOL(fd,2);
+ int account_id = RFIFOL(fd, 6);
+ int8 flag = RFIFOB(fd, 10);
+ int8 opentype = RFIFOB(fd, 11);
+ int64 mail_id = RFIFOQ(fd, 12);
+ struct rodex_maillist mails = { 0 };
+
+ VECTOR_INIT(mails);
+ if (flag == 0)
+ count = inter_rodex->fromsql(char_id, account_id, opentype, 0, &mails);
+ else
+ count = inter_rodex->fromsql(char_id, account_id, opentype, mail_id, &mails);
+ mapif->rodex_sendinbox(fd, char_id, opentype, flag, count, mail_id, &mails);
+ VECTOR_CLEAR(mails);
+}
+
+static void mapif_rodex_sendinbox(int fd, int char_id, int8 opentype, int8 flag, int count, int64 mail_id, struct rodex_maillist *mails)
+{
+ int per_packet = (UINT16_MAX - 24) / sizeof(struct rodex_message);
+ int sent = 0;
+ bool is_first = true;
+ nullpo_retv(mails);
+ Assert_retv(char_id > 0);
+ Assert_retv(count >= 0);
+ Assert_retv(mail_id >= 0);
+
+ do {
+ int i = 24, j, size, limit;
+ int to_send = count - sent;
+ bool is_last = true;
+
+ if (to_send <= per_packet) {
+ size = to_send * sizeof(struct rodex_message) + 24;
+ limit = to_send;
+ is_last = true;
+ } else {
+ limit = min(to_send, per_packet);
+ if (limit != to_send) {
+ is_last = false;
+ }
+ size = limit * sizeof(struct rodex_message) + 24;
+ }
+
+ WFIFOHEAD(fd, size);
+ WFIFOW(fd, 0) = 0x3895;
+ WFIFOW(fd, 2) = size;
+ WFIFOL(fd, 4) = char_id;
+ WFIFOB(fd, 8) = opentype;
+ WFIFOB(fd, 9) = flag;
+ WFIFOB(fd, 10) = is_last;
+ WFIFOB(fd, 11) = is_first;
+ WFIFOL(fd, 12) = limit;
+ WFIFOQ(fd, 16) = mail_id;
+ for (j = 0; j < limit; ++j, ++sent, i += sizeof(struct rodex_message)) {
+ memcpy(WFIFOP(fd, i), &VECTOR_INDEX(*mails, sent), sizeof(struct rodex_message));
+ }
+ WFIFOSET(fd, size);
+
+ is_first = false;
+ } while (sent < count);
+}
+
+/*==========================================
+ * Checks if there are new mails
+ *------------------------------------------*/
+static void mapif_parse_rodex_checkhasnew(int fd)
+{
+ int char_id = RFIFOL(fd, 2);
+ int account_id = RFIFOL(fd, 6);
+ bool has_new;
+
+ Assert_retv(account_id >= START_ACCOUNT_NUM && account_id <= END_ACCOUNT_NUM);
+ Assert_retv(char_id >= START_CHAR_NUM);
+
+ has_new = inter_rodex->hasnew(char_id, account_id);
+ mapif->rodex_sendhasnew(fd, char_id, has_new);
+}
+
+static void mapif_rodex_sendhasnew(int fd, int char_id, bool has_new)
+{
+ Assert_retv(char_id > 0);
+
+ WFIFOHEAD(fd, 7);
+ WFIFOW(fd, 0) = 0x3896;
+ WFIFOL(fd, 2) = char_id;
+ WFIFOB(fd, 6) = has_new;
+ WFIFOSET(fd, 7);
+}
+
+/*==========================================
+ * Update/Delete mail
+ *------------------------------------------*/
+static void mapif_parse_rodex_updatemail(int fd)
+{
+ int64 mail_id = RFIFOL(fd, 2);
+ int8 flag = RFIFOB(fd, 10);
+
+ inter_rodex->updatemail(mail_id, flag);
+}
+
+/*==========================================
+ * Send Mail
+ *------------------------------------------*/
+static void mapif_parse_rodex_send(int fd)
+{
+ struct rodex_message msg = { 0 };
+
+ if (RFIFOW(fd,2) != 4 + sizeof(struct rodex_message))
+ return;
+
+ memcpy(&msg, RFIFOP(fd,4), sizeof(struct rodex_message));
+ if (msg.receiver_id > 0 || msg.receiver_accountid > 0)
+ msg.id = inter_rodex->savemessage(&msg);
+
+ mapif->rodex_send(fd, msg.sender_id, msg.receiver_id, msg.receiver_accountid, msg.id > 0 ? true : false);
+}
+
+static void mapif_rodex_send(int fd, int sender_id, int receiver_id, int receiver_accountid, bool result)
+{
+ Assert_retv(sender_id >= 0);
+ Assert_retv(receiver_id + receiver_accountid > 0);
+
+ WFIFOHEAD(fd,15);
+ WFIFOW(fd,0) = 0x3897;
+ WFIFOL(fd,2) = sender_id;
+ WFIFOL(fd,6) = receiver_id;
+ WFIFOL(fd,10) = receiver_accountid;
+ WFIFOB(fd,14) = result;
+ WFIFOSET(fd,15);
+}
+
+/*------------------------------------------
+ * Check Player
+ *------------------------------------------*/
+static void mapif_parse_rodex_checkname(int fd)
+{
+ int reqchar_id = RFIFOL(fd, 2);
+ char name[NAME_LENGTH];
+ int target_char_id, target_level;
+ short target_class;
+
+ safestrncpy(name, RFIFOP(fd, 6), NAME_LENGTH);
+
+ if (inter_rodex->checkname(name, &target_char_id, &target_class, &target_level) == true)
+ mapif->rodex_checkname(fd, reqchar_id, target_char_id, target_class, target_level, name);
+ else
+ mapif->rodex_checkname(fd, reqchar_id, 0, 0, 0, name);
+}
+
+static void mapif_rodex_checkname(int fd, int reqchar_id, int target_char_id, short target_class, int target_level, char *name)
+{
+ nullpo_retv(name);
+ Assert_retv(reqchar_id > 0);
+ Assert_retv(target_char_id >= 0);
+
+ WFIFOHEAD(fd, 16 + NAME_LENGTH);
+ WFIFOW(fd, 0) = 0x3898;
+ WFIFOL(fd, 2) = reqchar_id;
+ WFIFOL(fd, 6) = target_char_id;
+ WFIFOW(fd, 10) = target_class;
+ WFIFOL(fd, 12) = target_level;
+ safestrncpy(WFIFOP(fd, 16), name, NAME_LENGTH);
+ WFIFOSET(fd, 16 + NAME_LENGTH);
+}
+
+static int mapif_load_guild_storage(int fd, int account_id, int guild_id, char flag)
+{
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `guild_id` FROM `%s` WHERE `guild_id`='%d'", guild_db, guild_id)) {
+ Sql_ShowDebug(inter->sql_handle);
+ } else if (SQL->NumRows(inter->sql_handle) > 0) {
+ // guild exists
+ WFIFOHEAD(fd, sizeof(struct guild_storage) + 13);
+ WFIFOW(fd, 0) = 0x3818;
+ WFIFOW(fd, 2) = sizeof(struct guild_storage)+13;
+ WFIFOL(fd, 4) = account_id;
+ WFIFOL(fd, 8) = guild_id;
+ WFIFOB(fd, 12) = flag; //1 open storage, 0 don't open
+ inter_storage->guild_storage_fromsql(guild_id, WFIFOP(fd, 13));
+ WFIFOSET(fd, WFIFOW(fd, 2));
+ return 0;
+ }
+ // guild does not exist
+ SQL->FreeResult(inter->sql_handle);
+ WFIFOHEAD(fd, 12);
+ WFIFOW(fd, 0) = 0x3818;
+ WFIFOW(fd, 2) = 12;
+ WFIFOL(fd, 4) = account_id;
+ WFIFOL(fd, 8) = 0;
+ WFIFOSET(fd, 12);
+ return 0;
+}
+
+static int mapif_save_guild_storage_ack(int fd, int account_id, int guild_id, int fail)
+{
+ WFIFOHEAD(fd, 11);
+ WFIFOW(fd, 0) = 0x3819;
+ WFIFOL(fd, 2) = account_id;
+ WFIFOL(fd, 6) = guild_id;
+ WFIFOB(fd, 10) = fail;
+ WFIFOSET(fd, 11);
+ return 0;
+}
+
+/**
+ * Loads the account storage and send to the map server.
+ * @packet 0x3805 [out] <account_id>.L <struct item[]>.P
+ * @param fd [in] file/socket descriptor.
+ * @param account_id [in] account id of the session.
+ * @return 1 on success, 0 on failure.
+ */
+static int mapif_account_storage_load(int fd, int account_id)
+{
+ struct storage_data stor = { 0 };
+ int count = 0, i = 0, len = 0;
+
+ Assert_ret(account_id > 0);
+
+ VECTOR_INIT(stor.item);
+ count = inter_storage->fromsql(account_id, &stor);
+
+ len = 8 + count * sizeof(struct item);
+
+ WFIFOHEAD(fd, len);
+ WFIFOW(fd, 0) = 0x3805;
+ WFIFOW(fd, 2) = (uint16) len;
+ WFIFOL(fd, 4) = account_id;
+ for (i = 0; i < count; i++)
+ memcpy(WFIFOP(fd, 8 + i * sizeof(struct item)), &VECTOR_INDEX(stor.item, i), sizeof(struct item));
+ WFIFOSET(fd, len);
+
+ VECTOR_CLEAR(stor.item);
+
+ return 1;
+}
+
+/**
+ * Parses account storage load request from map server.
+ * @packet 0x3010 [in] <account_id>.L
+ * @param fd [in] file/socket descriptor
+ * @return 1 on success, 0 on failure.
+ */
+static int mapif_parse_AccountStorageLoad(int fd)
+{
+ int account_id = RFIFOL(fd, 2);
+
+ Assert_ret(fd > 0);
+ Assert_ret(account_id > 0);
+
+ mapif->account_storage_load(fd, account_id);
+
+ return 1;
+}
+
+/**
+ * Parses an account storage save request from the map server.
+ * @packet 0x3011 [in] <packet_len>.W <account_id>.L <struct item[]>.P
+ * @param fd [in] file/socket descriptor.
+ * @return 1 on success, 0 on failure.
+ */
+static int mapif_parse_AccountStorageSave(int fd)
+{
+ int payload_size = RFIFOW(fd, 2) - 8, account_id = RFIFOL(fd, 4);
+ int i = 0, count = 0;
+ struct storage_data p_stor = { 0 };
+
+ Assert_ret(fd > 0);
+ Assert_ret(account_id > 0);
+
+ count = payload_size/sizeof(struct item);
+
+ VECTOR_INIT(p_stor.item);
+
+ if (count > 0) {
+ VECTOR_ENSURE(p_stor.item, count, 1);
+
+ for (i = 0; i < count; i++) {
+ const struct item *it = RFIFOP(fd, 8 + i * sizeof(struct item));
+
+ VECTOR_PUSH(p_stor.item, *it);
+ }
+
+ p_stor.aggregate = count;
+ }
+
+ inter_storage->tosql(account_id, &p_stor);
+
+ VECTOR_CLEAR(p_stor.item);
+
+ mapif->sAccountStorageSaveAck(fd, account_id, true);
+
+ return 1;
+}
+
+/**
+ * Sends an acknowledgement for the save
+ * status of the account storage.
+ * @packet 0x3808 [out] <account_id>.L <save_flag>.B
+ * @param fd [in] File/Socket Descriptor.
+ * @param account_id [in] Account ID of the storage in question.
+ * @param flag [in] Save flag, true for success and false for failure.
+ */
+static void mapif_send_AccountStorageSaveAck(int fd, int account_id, bool flag)
+{
+ WFIFOHEAD(fd, 7);
+ WFIFOW(fd, 0) = 0x3808;
+ WFIFOL(fd, 2) = account_id;
+ WFIFOB(fd, 6) = flag ? 1 : 0;
+ WFIFOSET(fd, 7);
+}
+
+static int mapif_parse_LoadGuildStorage(int fd)
+{
+ RFIFOHEAD(fd);
+
+ mapif->load_guild_storage(fd, RFIFOL(fd, 2), RFIFOL(fd, 6), 1);
+
+ return 0;
+}
+
+static int mapif_parse_SaveGuildStorage(int fd)
+{
+ int guild_id;
+ int len;
+
+ RFIFOHEAD(fd);
+ guild_id = RFIFOL(fd, 8);
+ len = RFIFOW(fd, 2);
+
+ if (sizeof(struct guild_storage) != len - 12) {
+ ShowError("inter storage: data size mismatch: %d != %"PRIuS"\n", len - 12, sizeof(struct guild_storage));
+ } else if (inter_storage->guild_storage_tosql(guild_id, RFIFOP(fd, 12))) {
+ mapif->save_guild_storage_ack(fd, RFIFOL(fd, 4), guild_id, 0);
+ return 0;
+ }
+ mapif->save_guild_storage_ack(fd, RFIFOL(fd, 4), guild_id, 1);
+
+ return 0;
+}
+
+static int mapif_itembound_ack(int fd, int aid, int guild_id)
+{
+#ifdef GP_BOUND_ITEMS
+ WFIFOHEAD(fd, 8);
+ WFIFOW(fd, 0) = 0x3856;
+ WFIFOL(fd, 2) = aid;/* the value is not being used, drop? */
+ WFIFOW(fd, 6) = guild_id;
+ WFIFOSET(fd, 8);
+#endif
+ return 0;
+}
+
+static void mapif_parse_ItemBoundRetrieve(int fd)
+{
+#ifdef GP_BOUND_ITEMS
+ int char_id = RFIFOL(fd, 2);
+ int account_id = RFIFOL(fd, 6);
+ int guild_id = RFIFOW(fd, 10);
+
+ inter_storage->retrieve_bound_items(char_id, account_id, guild_id);
+
+ //Finally reload storage and tell map we're done
+ mapif->load_guild_storage(fd, account_id, guild_id, 0);
+
+ // If character is logged in char, disconnect
+ chr->disconnect_player(account_id);
+#endif // GP_BOUND_ITEMS
+
+ /* tell map server the operation is over and it can unlock the storage */
+ mapif->itembound_ack(fd, RFIFOL(fd, 6), RFIFOW(fd, 10));
+}
+
+static void mapif_parse_accinfo(int fd)
+{
+ char query[NAME_LENGTH];
+ int u_fd = RFIFOL(fd, 2), aid = RFIFOL(fd, 6), castergroup = RFIFOL(fd, 10);
+
+ safestrncpy(query, RFIFOP(fd, 14), NAME_LENGTH);
+
+ inter->accinfo(u_fd, aid, castergroup, query, fd);
+}
+
+// broadcast sending
+static int mapif_broadcast(const unsigned char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY, int sfd)
+{
+ unsigned char *buf = (unsigned char*)aMalloc((len)*sizeof(unsigned char));
+
+ nullpo_ret(mes);
+ Assert_ret(len >= 16);
+ WBUFW(buf, 0) = 0x3800;
+ WBUFW(buf, 2) = len;
+ WBUFL(buf, 4) = fontColor;
+ WBUFW(buf, 8) = fontType;
+ WBUFW(buf, 10) = fontSize;
+ WBUFW(buf, 12) = fontAlign;
+ WBUFW(buf, 14) = fontY;
+ memcpy(WBUFP(buf, 16), mes, len - 16);
+ mapif->sendallwos(sfd, buf, len);
+
+ aFree(buf);
+ return 0;
+}
+
+// Wis sending
+static int mapif_wis_message(struct WisData *wd)
+{
+ unsigned char buf[2048];
+ nullpo_ret(wd);
+ //if (wd->len > 2047-56) wd->len = 2047-56; //Force it to fit to avoid crashes. [Skotlex]
+ if (wd->len < 0)
+ wd->len = 0;
+ if (wd->len >= (int)sizeof(wd->msg) - 1)
+ wd->len = (int)sizeof(wd->msg) - 1;
+
+ WBUFW(buf, 0) = 0x3801;
+ WBUFW(buf, 2) = 56 + wd->len;
+ WBUFL(buf, 4) = wd->id;
+ memcpy(WBUFP(buf, 8), wd->src, NAME_LENGTH);
+ memcpy(WBUFP(buf, 32), wd->dst, NAME_LENGTH);
+ memcpy(WBUFP(buf, 56), wd->msg, wd->len);
+ wd->count = mapif->sendall(buf, WBUFW(buf, 2));
+
+ return 0;
+}
+
+static void mapif_wis_response(int fd, const unsigned char *src, int flag)
+{
+ unsigned char buf[27];
+ nullpo_retv(src);
+ WBUFW(buf, 0) = 0x3802;
+ memcpy(WBUFP(buf, 2), src, 24);
+ WBUFB(buf, 26) = flag;
+ mapif->send(fd, buf, 27);
+}
+
+// Wis sending result
+static int mapif_wis_end(struct WisData *wd, int flag)
+{
+ nullpo_ret(wd);
+ mapif->wis_response(wd->fd, wd->src, flag);
+ return 0;
+}
+
+#if 0
+// Account registry transfer to map-server
+static void mapif_account_reg(int fd, unsigned char *src)
+{
+ nullpo_retv(src);
+ WBUFW(src, 0) = 0x3804; //NOTE: writing to RFIFO
+ mapif->sendallwos(fd, src, WBUFW(src, 2));
+}
+#endif // 0
+
+// Send the requested account_reg
+static int mapif_account_reg_reply(int fd,int account_id,int char_id, int type)
+{
+ inter->accreg_fromsql(account_id, char_id, fd, type);
+ return 0;
+}
+
+//Request to kick char from a certain map server. [Skotlex]
+static int mapif_disconnectplayer(int fd, int account_id, int char_id, int reason)
+{
+ if (fd < 0)
+ return -1;
+
+ WFIFOHEAD(fd, 7);
+ WFIFOW(fd, 0) = 0x2b1f;
+ WFIFOL(fd, 2) = account_id;
+ WFIFOB(fd, 6) = reason;
+ WFIFOSET(fd, 7);
+ return 0;
+}
+
+// broadcast sending
+static int mapif_parse_broadcast(int fd)
+{
+ mapif->broadcast(RFIFOP(fd, 16), RFIFOW(fd, 2), RFIFOL(fd, 4), RFIFOW(fd, 8), RFIFOW(fd, 10), RFIFOW(fd, 12), RFIFOW(fd, 14), fd);
+ return 0;
+}
+
+// Wisp/page request to send
+static int mapif_parse_WisRequest(int fd)
+{
+ struct WisData* wd;
+ char name[NAME_LENGTH];
+ char *data;
+ size_t len;
+
+ if (fd <= 0) // check if we have a valid fd
+ return 0;
+
+ if (RFIFOW(fd, 2) - 52 >= sizeof(wd->msg)) {
+ ShowWarning("inter: Wis message size too long.\n");
+ return 0;
+ } else if (RFIFOW(fd, 2) - 52 <= 0) { // normally, impossible, but who knows...
+ ShowError("inter: Wis message doesn't exist.\n");
+ return 0;
+ }
+
+ safestrncpy(name, RFIFOP(fd, 28), NAME_LENGTH); //Received name may be too large and not contain \0! [Skotlex]
+
+ // search if character exists before to ask all map-servers
+ if (!chr->name_exists(name, NULL)) {
+ mapif->wis_response(fd, RFIFOP(fd, 4), 1);
+ } else {
+ // Character exists. So, ask all map-servers
+
+ // to be sure of the correct name, rewrite it
+ SQL->GetData(inter->sql_handle, 0, &data, &len);
+ memset(name, 0, NAME_LENGTH);
+ memcpy(name, data, min(len, NAME_LENGTH));
+ // if source is destination, don't ask other servers.
+ if (strncmp(RFIFOP(fd, 4), name, NAME_LENGTH) == 0) {
+ mapif->wis_response(fd, RFIFOP(fd, 4), 1);
+ } else {
+ wd = inter->add_wisdata(fd, RFIFOP(fd, 4), RFIFOP(fd, 28), RFIFOP(fd, 52), RFIFOW(fd, 2) - 52);
+ mapif->wis_message(wd);
+ }
+ }
+
+ SQL->FreeResult(inter->sql_handle);
+ return 0;
+}
+
+// Wisp/page transmission result
+static int mapif_parse_WisReply(int fd)
+{
+ int id, flag;
+ struct WisData *wd;
+
+ id = RFIFOL(fd,2);
+ flag = RFIFOB(fd,6);
+ wd = inter->get_wisdata(id);
+ if (wd == NULL)
+ return 0; // This wisp was probably suppress before, because it was timeout of because of target was found on another map-server
+
+ if ((--wd->count) <= 0 || flag != 1) {
+ mapif->wis_end(wd, flag); // flag: 0: success to send whisper, 1: target character is not logged in?, 2: ignored by target
+ inter->remove_wisdata(id);
+ }
+
+ return 0;
+}
+
+// Received wisp message from map-server for ALL gm (just copy the message and resends it to ALL map-servers)
+static int mapif_parse_WisToGM(int fd)
+{
+ unsigned char buf[2048]; // 0x3003/0x3803 <packet_len>.w <wispname>.24B <min_gm_level>.w <message>.?B
+
+ memcpy(WBUFP(buf,0), RFIFOP(fd,0), RFIFOW(fd,2)); // Message contains the NUL terminator (see intif_wis_message_to_gm())
+ WBUFW(buf, 0) = 0x3803;
+ mapif->sendall(buf, RFIFOW(fd,2));
+
+ return 0;
+}
+
+// Save account_reg into sql (type=2)
+static int mapif_parse_Registry(int fd)
+{
+ int account_id = RFIFOL(fd, 4), char_id = RFIFOL(fd, 8), count = RFIFOW(fd, 12);
+
+ if (count != 0) {
+ int cursor = 14, i;
+ char key[SCRIPT_VARNAME_LENGTH+1], sval[254];
+ bool isLoginActive = sockt->session_is_active(chr->login_fd);
+
+ if (isLoginActive)
+ chr->global_accreg_to_login_start(account_id, char_id);
+
+ for (i = 0; i < count; i++) {
+ unsigned int index;
+ int len = RFIFOB(fd, cursor);
+ safestrncpy(key, RFIFOP(fd, cursor + 1), min((int)sizeof(key), len));
+ cursor += len + 1;
+
+ index = RFIFOL(fd, cursor);
+ cursor += 4;
+
+ switch (RFIFOB(fd, cursor++)) {
+ /* int */
+ case 0:
+ inter->savereg(account_id, char_id, key, index, RFIFOL(fd, cursor), false);
+ cursor += 4;
+ break;
+ case 1:
+ inter->savereg(account_id, char_id, key, index, 0, false);
+ break;
+ /* str */
+ case 2:
+ len = RFIFOB(fd, cursor);
+ safestrncpy(sval, RFIFOP(fd, cursor + 1), min((int)sizeof(sval), len));
+ cursor += len + 1;
+ inter->savereg(account_id, char_id, key, index, (intptr_t)sval, true);
+ break;
+ case 3:
+ inter->savereg(account_id, char_id, key, index, 0, true);
+ break;
+ default:
+ ShowError("mapif->parse_Registry: unknown type %d\n", RFIFOB(fd, cursor - 1));
+ return 1;
+ }
+ }
+
+ if (isLoginActive)
+ chr->global_accreg_to_login_send();
+ }
+ return 0;
+}
+
+// Request the value of all registries.
+static int mapif_parse_RegistryRequest(int fd)
+{
+ //Load Char Registry
+ if (RFIFOB(fd, 12))
+ mapif->account_reg_reply(fd, RFIFOL(fd, 2), RFIFOL(fd, 6), 3); // 3: char reg
+ //Load Account Registry
+ if (RFIFOB(fd, 11) != 0)
+ mapif->account_reg_reply(fd, RFIFOL(fd, 2), RFIFOL(fd, 6), 2); // 2: account reg
+ //Ask Login Server for Account2 values.
+ if (RFIFOB(fd, 10) != 0)
+ chr->request_accreg2(RFIFOL(fd, 2), RFIFOL(fd, 6));
+ return 1;
+}
+
+static void mapif_namechange_ack(int fd, int account_id, int char_id, int type, int flag, const char *const name)
+{
+ nullpo_retv(name);
+ WFIFOHEAD(fd, NAME_LENGTH+13);
+ WFIFOW(fd, 0) = 0x3806;
+ WFIFOL(fd, 2) = account_id;
+ WFIFOL(fd, 6) = char_id;
+ WFIFOB(fd, 10) = type;
+ WFIFOB(fd, 11) = flag;
+ memcpy(WFIFOP(fd, 12), name, NAME_LENGTH);
+ WFIFOSET(fd, NAME_LENGTH + 13);
+}
+
+static int mapif_parse_NameChangeRequest(int fd)
+{
+ int account_id, char_id, type;
+ const char *name;
+ int i;
+
+ account_id = RFIFOL(fd, 2);
+ char_id = RFIFOL(fd, 6);
+ type = RFIFOB(fd, 10);
+ name = RFIFOP(fd, 11);
+
+ // Check Authorized letters/symbols in the name
+ if (char_name_option == 1) { // only letters/symbols in char_name_letters are authorized
+ for (i = 0; i < NAME_LENGTH && name[i]; i++)
+ if (strchr(char_name_letters, name[i]) == NULL) {
+ mapif->namechange_ack(fd, account_id, char_id, type, 0, name);
+ return 0;
+ }
+ } else if (char_name_option == 2) { // letters/symbols in char_name_letters are forbidden
+ for (i = 0; i < NAME_LENGTH && name[i]; i++)
+ if (strchr(char_name_letters, name[i]) != NULL) {
+ mapif->namechange_ack(fd, account_id, char_id, type, 0, name);
+ return 0;
+ }
+ }
+ //TODO: type holds the type of object to rename.
+ //If it were a player, it needs to have the guild information and db information
+ //updated here, because changing it on the map won't make it be saved [Skotlex]
+
+ //name allowed.
+ mapif->namechange_ack(fd, account_id, char_id, type, 1, name);
+ return 0;
+}
+
+// Clan System
+static int mapif_parse_ClanMemberKick(int fd, int clan_id, int kick_interval)
+{
+ int count = 0;
+
+ if (inter_clan->kick_inactive_members(clan_id, kick_interval) == 1)
+ count = inter_clan->count_members(clan_id, kick_interval);
+
+ WFIFOHEAD(fd, 10);
+ WFIFOW(fd, 0) = 0x3858;
+ WFIFOL(fd, 2) = clan_id;
+ WFIFOL(fd, 6) = count;
+ WFIFOSET(fd, 10);
+ return 0;
+}
+
+static int mapif_parse_ClanMemberCount(int fd, int clan_id, int kick_interval)
+{
+ WFIFOHEAD(fd, 10);
+ WFIFOW(fd, 0) = 0x3858;
+ WFIFOL(fd, 2) = clan_id;
+ WFIFOL(fd, 6) = inter_clan->count_members(clan_id, kick_interval);
+ WFIFOSET(fd, 10);
+ return 0;
+}
+
+// Achievement System
+/**
+ * Parse achievement load request from the map server
+ * @param[in] fd socket descriptor.
+ */
+static void mapif_parse_load_achievements(int fd)
+{
+ int char_id = 0;
+
+ /* Read received information from map-server. */
+ RFIFOHEAD(fd);
+ char_id = RFIFOL(fd, 2);
+
+ /* Load and send achievements to map */
+ mapif->achievement_load(fd, char_id);
+}
+
+/**
+ * Loads achievements and sends to the map server.
+ * @param[in] fd socket descriptor
+ * @param[in] char_id character Id.
+ */
+static void mapif_achievement_load(int fd, int char_id)
+{
+ struct char_achievements *cp = NULL;
+
+ /* Ensure data exists */
+ cp = idb_ensure(inter_achievement->char_achievements, char_id, inter_achievement->ensure_char_achievements);
+
+ /* Load storage for char-server. */
+ inter_achievement->fromsql(char_id, cp);
+
+ /* Send Achievements to map server. */
+ mapif->sAchievementsToMap(fd, char_id, cp);
+}
+
+/**
+ * Sends achievement data of a character to the map server.
+ * @packet[out] 0x3810 <packet_id>.W <payload_size>.W <char_id>.L <char_achievements[]>.P
+ * @param[in] fd socket descriptor.
+ * @param[in] char_id Character ID.
+ * @param[in] cp Pointer to character's achievement data vector.
+ */
+static void mapif_send_achievements_to_map(int fd, int char_id, const struct char_achievements *cp)
+{
+ int i = 0;
+ int data_size = 0;
+
+ nullpo_retv(cp);
+
+ data_size = sizeof(struct achievement) * VECTOR_LENGTH(*cp);
+
+STATIC_ASSERT((sizeof(struct achievement) * MAX_ACHIEVEMENT_DB + 8 <= UINT16_MAX),
+ "The achievements data can potentially be larger than the maximum packet size. This may cause errors at run-time.");
+
+ /* Send to the map server. */
+ WFIFOHEAD(fd, (8 + data_size));
+ WFIFOW(fd, 0) = 0x3810;
+ WFIFOW(fd, 2) = (8 + data_size);
+ WFIFOL(fd, 4) = char_id;
+ for (i = 0; i < VECTOR_LENGTH(*cp); i++)
+ memcpy(WFIFOP(fd, 8 + i * sizeof(struct achievement)), &VECTOR_INDEX(*cp, i), sizeof(struct achievement));
+ WFIFOSET(fd, 8 + data_size);
+}
+
+/**
+ * Handles achievement request and saves data from map server.
+ * @packet[in] 0x3013 <packet_size>.W <char_id>.L <char_achievement>.P
+ * @param[in] fd session socket descriptor.
+ */
+static void mapif_parse_save_achievements(int fd)
+{
+ int size = 0, char_id = 0, payload_count = 0, i = 0;
+ struct char_achievements p = { 0 };
+
+ RFIFOHEAD(fd);
+ size = RFIFOW(fd, 2);
+ char_id = RFIFOL(fd, 4);
+
+ payload_count = (size - 8) / sizeof(struct achievement);
+
+ VECTOR_INIT(p);
+ VECTOR_ENSURE(p, payload_count, 1);
+
+ for (i = 0; i < payload_count; i++) {
+ struct achievement ach = { 0 };
+ memcpy(&ach, RFIFOP(fd, 8 + i * sizeof(struct achievement)), sizeof(struct achievement));
+ VECTOR_PUSH(p, ach);
+ }
+
+ mapif->achievement_save(char_id, &p);
+
+ VECTOR_CLEAR(p);
+}
+
+/**
+ * Handles inter-server achievement db ensuring
+ * and saves current achievements to sql.
+ * @param[in] char_id character identifier.
+ * @param[out] p pointer to character achievements vector.
+ */
+static void mapif_achievement_save(int char_id, struct char_achievements *p)
+{
+ struct char_achievements *cp = NULL;
+
+ nullpo_retv(p);
+
+ /* Get loaded achievements. */
+ cp = idb_ensure(inter_achievement->char_achievements, char_id, inter_achievement->ensure_char_achievements);
+
+ if (VECTOR_LENGTH(*p)) /* Save current achievements. */
+ inter_achievement->tosql(char_id, cp, p);
+}
+
+void mapif_defaults(void)
+{
mapif = &mapif_s;
mapif->ban = mapif_ban;
@@ -224,6 +2476,11 @@ void mapif_defaults(void) {
mapif->sendallwos = mapif_sendallwos;
mapif->send = mapif_send;
mapif->send_users_count = mapif_send_users_count;
+ mapif->pLoadAchievements = mapif_parse_load_achievements;
+ mapif->sAchievementsToMap = mapif_send_achievements_to_map;
+ mapif->pSaveAchievements = mapif_parse_save_achievements;
+ mapif->achievement_load = mapif_achievement_load;
+ mapif->achievement_save = mapif_achievement_save;
mapif->auction_message = mapif_auction_message;
mapif->auction_sendlist = mapif_auction_sendlist;
mapif->parse_auction_requestlist = mapif_parse_auction_requestlist;
@@ -235,10 +2492,6 @@ void mapif_defaults(void) {
mapif->parse_auction_close = mapif_parse_auction_close;
mapif->auction_bid = mapif_auction_bid;
mapif->parse_auction_bid = mapif_parse_auction_bid;
- mapif->elemental_create = mapif_elemental_create;
- mapif->elemental_save = mapif_elemental_save;
- mapif->elemental_load = mapif_elemental_load;
- mapif->elemental_delete = mapif_elemental_delete;
mapif->elemental_send = mapif_elemental_send;
mapif->parse_elemental_create = mapif_parse_elemental_create;
mapif->parse_elemental_load = mapif_parse_elemental_load;
@@ -274,7 +2527,6 @@ void mapif_defaults(void) {
mapif->parse_GuildMemberInfoChange = mapif_parse_GuildMemberInfoChange;
mapif->parse_GuildPosition = mapif_parse_GuildPosition;
mapif->parse_GuildSkillUp = mapif_parse_GuildSkillUp;
- mapif->parse_GuildDeleteAlliance = mapif_parse_GuildDeleteAlliance;
mapif->parse_GuildAlliance = mapif_parse_GuildAlliance;
mapif->parse_GuildNotice = mapif_parse_GuildNotice;
mapif->parse_GuildEmblem = mapif_parse_GuildEmblem;
@@ -286,11 +2538,6 @@ void mapif_defaults(void) {
mapif->homunculus_loaded = mapif_homunculus_loaded;
mapif->homunculus_saved = mapif_homunculus_saved;
mapif->homunculus_renamed = mapif_homunculus_renamed;
- mapif->homunculus_create = mapif_homunculus_create;
- mapif->homunculus_save = mapif_homunculus_save;
- mapif->homunculus_load = mapif_homunculus_load;
- mapif->homunculus_delete = mapif_homunculus_delete;
- mapif->homunculus_rename = mapif_homunculus_rename;
mapif->parse_homunculus_create = mapif_parse_homunculus_create;
mapif->parse_homunculus_delete = mapif_parse_homunculus_delete;
mapif->parse_homunculus_load = mapif_parse_homunculus_load;
@@ -300,7 +2547,6 @@ void mapif_defaults(void) {
mapif->parse_mail_requestinbox = mapif_parse_mail_requestinbox;
mapif->parse_mail_read = mapif_parse_mail_read;
mapif->mail_sendattach = mapif_mail_sendattach;
- mapif->mail_getattach = mapif_mail_getattach;
mapif->parse_mail_getattach = mapif_parse_mail_getattach;
mapif->mail_delete = mapif_mail_delete;
mapif->parse_mail_delete = mapif_parse_mail_delete;
@@ -309,10 +2555,6 @@ void mapif_defaults(void) {
mapif->parse_mail_return = mapif_parse_mail_return;
mapif->mail_send = mapif_mail_send;
mapif->parse_mail_send = mapif_parse_mail_send;
- mapif->mercenary_create = mapif_mercenary_create;
- mapif->mercenary_save = mapif_mercenary_save;
- mapif->mercenary_load = mapif_mercenary_load;
- mapif->mercenary_delete = mapif_mercenary_delete;
mapif->mercenary_send = mapif_mercenary_send;
mapif->parse_mercenary_create = mapif_parse_mercenary_create;
mapif->parse_mercenary_load = mapif_parse_mercenary_load;
@@ -343,31 +2585,37 @@ void mapif_defaults(void) {
mapif->pet_noinfo = mapif_pet_noinfo;
mapif->save_pet_ack = mapif_save_pet_ack;
mapif->delete_pet_ack = mapif_delete_pet_ack;
- mapif->create_pet = mapif_create_pet;
- mapif->load_pet = mapif_load_pet;
mapif->save_pet = mapif_save_pet;
mapif->delete_pet = mapif_delete_pet;
mapif->parse_CreatePet = mapif_parse_CreatePet;
mapif->parse_LoadPet = mapif_parse_LoadPet;
mapif->parse_SavePet = mapif_parse_SavePet;
mapif->parse_DeletePet = mapif_parse_DeletePet;
- mapif->quests_fromsql = mapif_quests_fromsql;
- mapif->quest_delete = mapif_quest_delete;
- mapif->quest_add = mapif_quest_add;
- mapif->quest_update = mapif_quest_update;
mapif->quest_save_ack = mapif_quest_save_ack;
mapif->parse_quest_save = mapif_parse_quest_save;
mapif->send_quests = mapif_send_quests;
mapif->parse_quest_load = mapif_parse_quest_load;
+ /* RoDEX */
+ mapif->parse_rodex_requestinbox = mapif_parse_rodex_requestinbox;
+ mapif->rodex_sendinbox = mapif_rodex_sendinbox;
+ mapif->parse_rodex_checkhasnew = mapif_parse_rodex_checkhasnew;
+ mapif->rodex_sendhasnew = mapif_rodex_sendhasnew;
+ mapif->parse_rodex_updatemail = mapif_parse_rodex_updatemail;
+ mapif->parse_rodex_send = mapif_parse_rodex_send;
+ mapif->rodex_send = mapif_rodex_send;
+ mapif->parse_rodex_checkname = mapif_parse_rodex_checkname;
+ mapif->rodex_checkname = mapif_rodex_checkname;
mapif->load_guild_storage = mapif_load_guild_storage;
mapif->save_guild_storage_ack = mapif_save_guild_storage_ack;
mapif->parse_LoadGuildStorage = mapif_parse_LoadGuildStorage;
mapif->parse_SaveGuildStorage = mapif_parse_SaveGuildStorage;
+ mapif->pAccountStorageLoad = mapif_parse_AccountStorageLoad;
+ mapif->pAccountStorageSave = mapif_parse_AccountStorageSave;
+ mapif->sAccountStorageSaveAck = mapif_send_AccountStorageSaveAck;
+ mapif->account_storage_load = mapif_account_storage_load;
mapif->itembound_ack = mapif_itembound_ack;
- mapif->parse_ItemBoundRetrieve_sub = mapif_parse_ItemBoundRetrieve_sub;
mapif->parse_ItemBoundRetrieve = mapif_parse_ItemBoundRetrieve;
mapif->parse_accinfo = mapif_parse_accinfo;
- mapif->parse_accinfo2 = mapif_parse_accinfo2;
mapif->broadcast = mapif_broadcast;
mapif->wis_message = mapif_wis_message;
mapif->wis_response = mapif_wis_response;
@@ -382,4 +2630,7 @@ void mapif_defaults(void) {
mapif->parse_RegistryRequest = mapif_parse_RegistryRequest;
mapif->namechange_ack = mapif_namechange_ack;
mapif->parse_NameChangeRequest = mapif_parse_NameChangeRequest;
+ /* Clan System */
+ mapif->parse_ClanMemberKick = mapif_parse_ClanMemberKick;
+ mapif->parse_ClanMemberCount = mapif_parse_ClanMemberCount;
}
diff --git a/src/char/mapif.h b/src/char/mapif.h
index ebbddead0..bfdefe4ea 100644
--- a/src/char/mapif.h
+++ b/src/char/mapif.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -40,6 +40,11 @@ struct mapif_interface {
int (*sendallwos) (int sfd, unsigned char *buf, unsigned int len);
int (*send) (int fd, unsigned char *buf, unsigned int len);
void (*send_users_count) (int users);
+ void (*pLoadAchievements) (int fd);
+ void (*sAchievementsToMap) (int fd, int char_id, const struct char_achievements *p);
+ void (*pSaveAchievements) (int fd);
+ void (*achievement_load) (int fd, int char_id);
+ void (*achievement_save) (int char_id, struct char_achievements *p);
void (*auction_message) (int char_id, unsigned char result);
void (*auction_sendlist) (int fd, int char_id, short count, short pages, unsigned char *buf);
void (*parse_auction_requestlist) (int fd);
@@ -51,10 +56,6 @@ struct mapif_interface {
void (*parse_auction_close) (int fd);
void (*auction_bid) (int fd, int char_id, int bid, unsigned char result);
void (*parse_auction_bid) (int fd);
- bool (*elemental_create) (struct s_elemental *ele);
- bool (*elemental_save) (const struct s_elemental *ele);
- bool (*elemental_load) (int ele_id, int char_id, struct s_elemental *ele);
- bool (*elemental_delete) (int ele_id);
void (*elemental_send) (int fd, struct s_elemental *ele, unsigned char flag);
void (*parse_elemental_create) (int fd, const struct s_elemental *ele);
void (*parse_elemental_load) (int fd, int ele_id, int char_id);
@@ -90,7 +91,6 @@ struct mapif_interface {
int (*parse_GuildMemberInfoChange) (int fd, int guild_id, int account_id, int char_id, int type, const char *data, int len);
int (*parse_GuildPosition) (int fd, int guild_id, int idx, const struct guild_position *p);
int (*parse_GuildSkillUp) (int fd, int guild_id, uint16 skill_id, int account_id, int max);
- int (*parse_GuildDeleteAlliance) (struct guild *g, int guild_id, int account_id1, int account_id2, int flag);
int (*parse_GuildAlliance) (int fd, int guild_id1, int guild_id2, int account_id1, int account_id2, int flag);
int (*parse_GuildNotice) (int fd, int guild_id, const char *mes1, const char *mes2);
int (*parse_GuildEmblem) (int fd, int len, int guild_id, int dummy, const char *data);
@@ -102,11 +102,6 @@ struct mapif_interface {
void (*homunculus_loaded) (int fd, int account_id, struct s_homunculus *hd);
void (*homunculus_saved) (int fd, int account_id, bool flag);
void (*homunculus_renamed) (int fd, int account_id, int char_id, unsigned char flag, const char *name);
- bool (*homunculus_create) (struct s_homunculus *hd);
- bool (*homunculus_save) (const struct s_homunculus *hd);
- bool (*homunculus_load) (int homun_id, struct s_homunculus* hd);
- bool (*homunculus_delete) (int homun_id);
- bool (*homunculus_rename) (const char *name);
void (*parse_homunculus_create) (int fd, int len, int account_id, const struct s_homunculus *phd);
void (*parse_homunculus_delete) (int fd, int homun_id);
void (*parse_homunculus_load) (int fd, int account_id, int homun_id);
@@ -116,7 +111,6 @@ struct mapif_interface {
void (*parse_mail_requestinbox) (int fd);
void (*parse_mail_read) (int fd);
void (*mail_sendattach) (int fd, int char_id, struct mail_message *msg);
- void (*mail_getattach) (int fd, int char_id, int mail_id);
void (*parse_mail_getattach) (int fd);
void (*mail_delete) (int fd, int char_id, int mail_id, bool failed);
void (*parse_mail_delete) (int fd);
@@ -125,10 +119,6 @@ struct mapif_interface {
void (*parse_mail_return) (int fd);
void (*mail_send) (int fd, struct mail_message* msg);
void (*parse_mail_send) (int fd);
- bool (*mercenary_create) (struct s_mercenary *merc);
- bool (*mercenary_save) (const struct s_mercenary *merc);
- bool (*mercenary_load) (int merc_id, int char_id, struct s_mercenary *merc);
- bool (*mercenary_delete) (int merc_id);
void (*mercenary_send) (int fd, struct s_mercenary *merc, unsigned char flag);
void (*parse_mercenary_create) (int fd, const struct s_mercenary *merc);
void (*parse_mercenary_load) (int fd, int merc_id, int char_id);
@@ -159,33 +149,36 @@ struct mapif_interface {
int (*pet_noinfo) (int fd, int account_id);
int (*save_pet_ack) (int fd, int account_id, int flag);
int (*delete_pet_ack) (int fd, int flag);
- int (*create_pet) (int fd, int account_id, int char_id, short pet_class, short pet_lv, short pet_egg_id,
- short pet_equip, short intimate, short hungry, char rename_flag, char incubate, const char *pet_name);
- int (*load_pet) (int fd, int account_id, int char_id, int pet_id);
int (*save_pet) (int fd, int account_id, const struct s_pet *data);
int (*delete_pet) (int fd, int pet_id);
int (*parse_CreatePet) (int fd);
int (*parse_LoadPet) (int fd);
int (*parse_SavePet) (int fd);
int (*parse_DeletePet) (int fd);
- struct quest *(*quests_fromsql) (int char_id, int *count);
- bool (*quest_delete) (int char_id, int quest_id);
- bool (*quest_add) (int char_id, struct quest qd);
- bool (*quest_update) (int char_id, struct quest qd);
void (*quest_save_ack) (int fd, int char_id, bool success);
int (*parse_quest_save) (int fd);
void (*send_quests) (int fd, int char_id, struct quest *tmp_questlog, int num_quests);
int (*parse_quest_load) (int fd);
+ void (*parse_rodex_requestinbox) (int fd);
+ void (*rodex_sendinbox) (int fd, int char_id, int8 opentype, int8 flag, int count, int64 mail_id, struct rodex_maillist *mails);
+ void (*parse_rodex_checkhasnew) (int fd);
+ void (*rodex_sendhasnew) (int fd, int char_id, bool has_new);
+ void (*parse_rodex_updatemail) (int fd);
+ void (*parse_rodex_send) (int fd);
+ void (*rodex_send) (int fd, int sender_id, int receiver_id, int receiver_accountid, bool result);
+ void (*parse_rodex_checkname) (int fd);
+ void (*rodex_checkname) (int fd, int reqchar_id, int target_char_id, short target_class, int target_level, char *name);
int (*load_guild_storage) (int fd, int account_id, int guild_id, char flag);
int (*save_guild_storage_ack) (int fd, int account_id, int guild_id, int fail);
int (*parse_LoadGuildStorage) (int fd);
int (*parse_SaveGuildStorage) (int fd);
+ int (*account_storage_load) (int fd, int account_id);
+ int (*pAccountStorageLoad) (int fd);
+ int (*pAccountStorageSave) (int fd);
+ void (*sAccountStorageSaveAck) (int fd, int account_id, bool save);
int (*itembound_ack) (int fd, int aid, int guild_id);
- int (*parse_ItemBoundRetrieve_sub) (int fd);
void (*parse_ItemBoundRetrieve) (int fd);
void (*parse_accinfo) (int fd);
- void (*parse_accinfo2) (bool success, int map_fd, int u_fd, int u_aid, int account_id, const char *userid, const char *user_pass,
- const char *email, const char *last_ip, const char *lastlogin, const char *pin_code, const char *birthdate, int group_id, int logincount, int state);
int (*broadcast) (const unsigned char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY, int sfd);
int (*wis_message) (struct WisData *wd);
void (*wis_response) (int fd, const unsigned char *src, int flag);
@@ -200,6 +193,9 @@ struct mapif_interface {
int (*parse_RegistryRequest) (int fd);
void (*namechange_ack) (int fd, int account_id, int char_id, int type, int flag, const char *name);
int (*parse_NameChangeRequest) (int fd);
+ // Clan System
+ int (*parse_ClanMemberKick) (int fd, int clan_id, int kick_interval);
+ int (*parse_ClanMemberCount) (int fd, int clan_id, int kick_interval);
};
#ifdef HERCULES_CORE
diff --git a/src/char/packets_hc_struct.h b/src/char/packets_hc_struct.h
new file mode 100644
index 000000000..196493cac
--- /dev/null
+++ b/src/char/packets_hc_struct.h
@@ -0,0 +1,45 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2016-2018 Hercules Dev Team
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef CHAR_PACKETS_HC_STRUCT_H
+#define CHAR_PACKETS_HC_STRUCT_H
+
+#include "common/hercules.h"
+#include "common/mmo.h"
+#include "common/packetsstatic_len.h"
+
+/* Packets Structs */
+#if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
+#pragma pack(push, 1)
+#endif // not NetBSD < 6 / Solaris
+
+#if PACKETVER_MAIN_NUM >= 20130522 || PACKETVER_RE_NUM >= 20130327 || defined(PACKETVER_ZERO)
+struct PACKET_HC_ACK_CHARINFO_PER_PAGE {
+ int16 packetId;
+ int16 packetLen;
+ // chars list[]
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(HC_ACK_CHARINFO_PER_PAGE, 0x099d);
+#endif
+
+#if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
+#pragma pack(pop)
+#endif // not NetBSD < 6 / Solaris
+
+#endif // CHAR_PACKETS_HC_STRUCT_H
diff --git a/src/char/pincode.c b/src/char/pincode.c
index fc1a4c037..5a7eb1cab 100644
--- a/src/char/pincode.c
+++ b/src/char/pincode.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -26,6 +26,7 @@
#include "common/cbasetypes.h"
#include "common/conf.h"
#include "common/db.h"
+#include "common/memmgr.h"
#include "common/mmo.h"
#include "common/nullpo.h"
#include "common/random.h"
@@ -36,88 +37,200 @@
#include <stdio.h>
#include <stdlib.h>
-struct pincode_interface pincode_s;
+static struct pincode_interface pincode_s;
struct pincode_interface *pincode;
-void pincode_handle (int fd, struct char_session_data* sd) {
+static void pincode_handle(int fd, struct char_session_data *sd)
+{
struct online_char_data* character;
nullpo_retv(sd);
+
character = (struct online_char_data*)idb_get(chr->online_char_db, sd->account_id);
- if( character && character->pincode_enable > pincode->charselect ){
+
+ if (character && character->pincode_enable > pincode->charselect) {
character->pincode_enable = pincode->charselect * 2;
- }else{
- pincode->sendstate( fd, sd, PINCODE_OK );
+ } else {
+ pincode->loginstate(fd, sd, PINCODE_LOGIN_OK);
return;
}
- if( strlen(sd->pincode) == 4 ){
- if( pincode->changetime && time(NULL) > (sd->pincode_change+pincode->changetime) ){ // User hasn't changed his PIN code for a long time
- pincode->sendstate( fd, sd, PINCODE_EXPIRED );
+ if (strlen(sd->pincode) == 4) {
+ if (pincode->check_blacklist && pincode->isBlacklisted(sd->pincode)) {
+ // Ask player to change pincode to be able to connect
+ pincode->loginstate(fd, sd, PINCODE_LOGIN_EXPIRED);
+ } else if (pincode->changetime && time(NULL) > (sd->pincode_change + pincode->changetime)) {
+ // User hasn't changed his PIN code for a long time
+ pincode->loginstate(fd, sd, PINCODE_LOGIN_EXPIRED);
} else { // Ask user for his PIN code
- pincode->sendstate( fd, sd, PINCODE_ASK );
+ pincode->loginstate(fd, sd, PINCODE_LOGIN_ASK);
}
} else // No PIN code has been set yet
- pincode->sendstate( fd, sd, PINCODE_NOTSET );
+ pincode->loginstate(fd, sd, PINCODE_LOGIN_NOTSET);
- if( character )
+ if (character)
character->pincode_enable = -1;
}
-void pincode_check(int fd, struct char_session_data* sd) {
+static void pincode_check(int fd, struct char_session_data *sd)
+{
char pin[5] = "\0\0\0\0";
nullpo_retv(sd);
+
+ if (strlen(sd->pincode) != 4)
+ return;
+
safestrncpy(pin, RFIFOP(fd, 6), sizeof(pin));
pincode->decrypt(sd->pincode_seed, pin);
- if( pincode->compare( fd, sd, pin ) ){
+
+ if (pincode->check_blacklist && pincode->isBlacklisted(pin)) {
+ pincode->loginstate(fd, sd, PINCODE_LOGIN_RESTRICT_PW);
+ return;
+ }
+
+ if (pincode->compare(fd, sd, pin)) {
struct online_char_data* character;
- if( (character = (struct online_char_data*)idb_get(chr->online_char_db, sd->account_id)) )
+ if ((character = (struct online_char_data*)idb_get(chr->online_char_db, sd->account_id)))
character->pincode_enable = pincode->charselect * 2;
- pincode->sendstate( fd, sd, PINCODE_OK );
+ pincode->loginstate(fd, sd, PINCODE_LOGIN_OK);
+ } else {
+#if PACKETVER_MAIN_NUM >= 20180124 || PACKETVER_RE_NUM >= 20180124 || PACKETVER_ZERO_NUM >= 20180131
+ pincode->loginstate2(fd, sd, PINCODE_LOGIN_WRONG, PINCODE_LOGIN_FLAG_WRONG);
+#else
+ pincode->loginstate(fd, sd, PINCODE_LOGIN_WRONG);
+#endif
}
}
-int pincode_compare(int fd, struct char_session_data* sd, char* pin) {
+/**
+ * Check if this pincode is blacklisted or not
+ *
+ * @param (const char *) pin The pin to be verified
+ * @return bool
+ */
+static bool pincode_isBlacklisted(const char *pin)
+{
+ int i;
+
+ nullpo_retr(false, pin);
+
+ ARR_FIND(0, VECTOR_LENGTH(pincode->blacklist), i, strcmp(VECTOR_INDEX(pincode->blacklist, i), pin) == 0);
+
+ if (i < VECTOR_LENGTH(pincode->blacklist)) {
+ return true;
+ }
+
+ return false;
+}
+
+static int pincode_compare(int fd, struct char_session_data *sd, char *pin)
+{
nullpo_ret(sd);
nullpo_ret(pin);
- if( strcmp( sd->pincode, pin ) == 0 ){
+
+ if (strcmp(sd->pincode, pin) == 0) {
sd->pincode_try = 0;
return 1;
} else {
- pincode->sendstate( fd, sd, PINCODE_WRONG );
- if( pincode->maxtry && ++sd->pincode_try >= pincode->maxtry ){
- pincode->error( sd->account_id );
+ if (pincode->maxtry && ++sd->pincode_try >= pincode->maxtry) {
+ pincode->error(sd->account_id);
+ chr->authfail_fd(fd, 0);
+ chr->disconnect_player(sd->account_id);
}
return 0;
}
}
-void pincode_change(int fd, struct char_session_data* sd) {
+static void pincode_change(int fd, struct char_session_data *sd)
+{
char oldpin[5] = "\0\0\0\0", newpin[5] = "\0\0\0\0";
nullpo_retv(sd);
- safestrncpy(oldpin, RFIFOP(fd,6), sizeof(oldpin));
- pincode->decrypt(sd->pincode_seed,oldpin);
- if( !pincode->compare( fd, sd, oldpin ) )
+
+ if (strlen(sd->pincode) != 4)
return;
- safestrncpy(newpin, RFIFOP(fd,10), sizeof(newpin));
- pincode->decrypt(sd->pincode_seed,newpin);
- pincode->update( sd->account_id, newpin );
+ safestrncpy(oldpin, RFIFOP(fd, 6), sizeof(oldpin));
+ pincode->decrypt(sd->pincode_seed, oldpin);
+
+ if (!pincode->compare(fd, sd, oldpin)) {
+ pincode->editstate(fd, sd, PINCODE_EDIT_FAILED);
+ pincode->loginstate(fd, sd, PINCODE_LOGIN_ASK);
+ return;
+ }
+
+ safestrncpy(newpin, RFIFOP(fd, 10), sizeof(newpin));
+ pincode->decrypt(sd->pincode_seed, newpin);
+
+ if (pincode->check_blacklist && pincode->isBlacklisted(newpin)) {
+ pincode->editstate(fd, sd, PINCODE_EDIT_RESTRICT_PW);
+ return;
+ }
+
+ pincode->update(sd->account_id, newpin);
safestrncpy(sd->pincode, newpin, sizeof(sd->pincode));
- pincode->sendstate( fd, sd, PINCODE_ASK );
+ pincode->editstate(fd, sd, PINCODE_EDIT_SUCCESS);
+ pincode->loginstate(fd, sd, PINCODE_LOGIN_ASK);
}
-void pincode_setnew(int fd, struct char_session_data* sd) {
+static void pincode_setnew(int fd, struct char_session_data *sd)
+{
char newpin[5] = "\0\0\0\0";
nullpo_retv(sd);
- safestrncpy(newpin, RFIFOP(fd,6), sizeof(newpin));
- pincode->decrypt(sd->pincode_seed,newpin);
- pincode->update( sd->account_id, newpin );
+
+ if (strlen(sd->pincode) == 4)
+ return;
+
+ safestrncpy(newpin, RFIFOP(fd, 6), sizeof(newpin));
+ pincode->decrypt(sd->pincode_seed, newpin);
+
+ if (pincode->check_blacklist && pincode->isBlacklisted(newpin)) {
+ pincode->makestate(fd, sd, PINCODE_MAKE_RESTRICT_PW);
+ return;
+ }
+
+ pincode->update(sd->account_id, newpin);
safestrncpy(sd->pincode, newpin, sizeof(sd->pincode));
- pincode->sendstate( fd, sd, PINCODE_ASK );
+ pincode->makestate(fd, sd, PINCODE_MAKE_SUCCESS);
+ pincode->loginstate(fd, sd, PINCODE_LOGIN_ASK);
+}
+
+/**
+ * Send state of making new pincode
+ *
+ * @param[in] fd
+ * @param[in, out] sd Session Data
+ * @param[in] state Pincode Edit State
+ */
+static void pincode_makestate(int fd, struct char_session_data *sd, enum pincode_make_response state)
+{
+ nullpo_retv(sd);
+
+ WFIFOHEAD(fd, 8);
+ WFIFOW(fd, 0) = 0x8bb;
+ WFIFOW(fd, 2) = state;
+ WFIFOL(fd, 4) = sd->pincode_seed;
+ WFIFOSET(fd, 8);
+}
+
+/**
+ * Send state of editing pincode
+ *
+ * @param[in] fd
+ * @param[in, out] sd Session Data
+ * @param[in] state Pincode Edit State
+ */
+static void pincode_editstate(int fd, struct char_session_data *sd, enum pincode_edit_response state)
+{
+ nullpo_retv(sd);
+
+ WFIFOHEAD(fd, 8);
+ WFIFOW(fd, 0) = 0x8bf;
+ WFIFOW(fd, 2) = state;
+ WFIFOL(fd, 4) = sd->pincode_seed = rnd() % 0xFFFF;
+ WFIFOSET(fd, 8);
}
// 0 = pin is correct
@@ -129,51 +242,87 @@ void pincode_setnew(int fd, struct char_session_data* sd) {
// 6 = client shows msgstr(1897) Unable to use your KSSN number
// 7 = char select window shows a button - client sends 0x8c5
// 8 = pincode was incorrect
-void pincode_sendstate(int fd, struct char_session_data* sd, uint16 state) {
+static void pincode_loginstate(int fd, struct char_session_data *sd, enum pincode_login_response state)
+{
nullpo_retv(sd);
+
WFIFOHEAD(fd, 12);
WFIFOW(fd, 0) = 0x8b9;
WFIFOL(fd, 2) = sd->pincode_seed = rnd() % 0xFFFF;
WFIFOL(fd, 6) = sd->account_id;
- WFIFOW(fd,10) = state;
- WFIFOSET(fd,12);
+ WFIFOW(fd, 10) = state;
+ WFIFOSET(fd, 12);
}
-void pincode_notifyLoginPinUpdate(int account_id, char* pin) {
+// 0 = pin is correct
+// 1 = ask for pin - client sends 0x8b8
+// 2 = create new pin - client sends 0x8ba
+// 3 = pin must be changed - client 0x8be
+// 4 = create new pin ?? - client sends 0x8ba
+// 5 = client shows msgstr(1896)
+// 6 = client shows msgstr(1897) Unable to use your KSSN number
+// 7 = char select window shows a button - client sends 0x8c5
+// 8 = pincode was incorrect
+// [4144] pincode_loginstate2 can replace pincode_loginstate,
+// but kro using pincode_loginstate2 only for send wrong pin error or locked after 3 pins wrong
+static void pincode_loginstate2(int fd, struct char_session_data *sd, enum pincode_login_response state, enum pincode_login_response2 flag)
+{
+#if PACKETVER_MAIN_NUM >= 20180124 || PACKETVER_RE_NUM >= 20180124 || PACKETVER_ZERO_NUM >= 20180131
+ nullpo_retv(sd);
+
+ WFIFOHEAD(fd, 13);
+ WFIFOW(fd, 0) = 0xae9;
+ WFIFOL(fd, 2) = sd->pincode_seed = rnd() % 0xFFFF;
+ WFIFOL(fd, 6) = sd->account_id;
+ WFIFOW(fd, 10) = state;
+ WFIFOW(fd, 12) = flag;
+ WFIFOSET(fd, 13);
+#endif
+}
+
+static void pincode_notifyLoginPinUpdate(int account_id, char *pin)
+{
nullpo_retv(pin);
+
Assert_retv(chr->login_fd != -1);
- WFIFOHEAD(chr->login_fd,11);
- WFIFOW(chr->login_fd,0) = 0x2738;
- WFIFOL(chr->login_fd,2) = account_id;
- safestrncpy(WFIFOP(chr->login_fd,6), pin, 5);
- WFIFOSET(chr->login_fd,11);
+ WFIFOHEAD(chr->login_fd, 11);
+ WFIFOW(chr->login_fd, 0) = 0x2738;
+ WFIFOL(chr->login_fd, 2) = account_id;
+ safestrncpy(WFIFOP(chr->login_fd, 6), pin, 5);
+ WFIFOSET(chr->login_fd, 11);
}
-void pincode_notifyLoginPinError(int account_id) {
- WFIFOHEAD(chr->login_fd,6);
- WFIFOW(chr->login_fd,0) = 0x2739;
- WFIFOL(chr->login_fd,2) = account_id;
- WFIFOSET(chr->login_fd,6);
+static void pincode_notifyLoginPinError(int account_id)
+{
+ WFIFOHEAD(chr->login_fd, 6);
+ WFIFOW(chr->login_fd, 0) = 0x2739;
+ WFIFOL(chr->login_fd, 2) = account_id;
+ WFIFOSET(chr->login_fd, 6);
}
-void pincode_decrypt(unsigned int userSeed, char* pin) {
+static void pincode_decrypt(unsigned int userSeed, char *pin)
+{
int i;
- char tab[10] = {0,1,2,3,4,5,6,7,8,9};
+ char tab[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
nullpo_retv(pin);
+
for (i = 1; i < 10; i++) {
int pos;
userSeed = pincode->baseSeed + userSeed * pincode->multiplier;
pos = userSeed % (i + 1);
- if( i != pos ){
+ if (i != pos) {
tab[i] ^= tab[pos];
tab[pos] ^= tab[i];
tab[i] ^= tab[pos];
}
}
- for( i = 0; i < 4; i++ ){
- pin[i] = tab[pin[i] - '0'];
+ for (i = 0; i < 4; i++) {
+ if (pin[i] < '0' || pin[i] > '9')
+ pin[i] = '0';
+ else
+ pin[i] = tab[pin[i] - '0'];
}
sprintf(pin, "%d%d%d%d", pin[0], pin[1], pin[2], pin[3]);
@@ -188,9 +337,11 @@ void pincode_decrypt(unsigned int userSeed, char* pin) {
*
* @retval false in case of error.
*/
-bool pincode_config_read(const char *filename, const struct config_t *config, bool imported)
+static bool pincode_config_read(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL;
+ const struct config_setting_t *temp = NULL;
+
nullpo_retr(false, filename);
nullpo_retr(false, config);
@@ -227,28 +378,94 @@ bool pincode_config_read(const char *filename, const struct config_t *config, bo
}
}
+ if (libconfig->setting_lookup_bool_real(setting, "check_blacklisted", &pincode->check_blacklist) == CONFIG_FALSE) {
+ if (!imported) {
+ ShowWarning("pincode 'check_blaclisted' not found, defaulting to false...\n");
+ pincode->check_blacklist = false;
+ }
+ }
+
+ if (pincode->check_blacklist) {
+ if ((temp = libconfig->setting_get_member(setting, "blacklist")) != NULL) {
+ VECTOR_DECL(char *) duplicate;
+ int i, j, size = libconfig->setting_length(temp);
+ VECTOR_INIT(duplicate);
+ VECTOR_ENSURE(duplicate, size, 1);
+ for (i = 0; i < size; i++) {
+ const char *pin = libconfig->setting_get_string_elem(temp, i);
+
+ if (pin == NULL)
+ continue;
+
+ if (strlen(pin) != 4) {
+ ShowError("Wrong size on element %d of blacklist. Desired size = 4, received = %d\n", i, (int)strlen(pin));
+ continue;
+ }
+
+ ARR_FIND(0, VECTOR_LENGTH(duplicate), j, strcmp(VECTOR_INDEX(duplicate, j), pin) == 0);
+
+ if (j < VECTOR_LENGTH(duplicate)) {
+ ShowWarning("Duplicate pin on pincode blacklist. Item #%d\n", i);
+ continue;
+ }
+
+ VECTOR_ENSURE(pincode->blacklist, 1, 1);
+ VECTOR_PUSH(pincode->blacklist, aStrdup(pin));
+ VECTOR_PUSH(duplicate, aStrdup(pin));
+ }
+ while (VECTOR_LENGTH(duplicate) > 0) {
+ aFree(VECTOR_POP(duplicate));
+ }
+ VECTOR_CLEAR(duplicate);
+ } else if (!imported) {
+ ShowError("Pincode Blacklist Check is enabled but there's no blacklist setting! Disabling check.\n");
+ pincode->check_blacklist = false;
+ }
+ }
+
return true;
}
-void pincode_defaults(void) {
+static void do_pincode_init(void)
+{
+ VECTOR_INIT(pincode->blacklist);
+}
+
+static void do_pincode_final(void)
+{
+ while (VECTOR_LENGTH(pincode->blacklist) > 0) {
+ aFree(VECTOR_POP(pincode->blacklist));
+ }
+ VECTOR_CLEAR(pincode->blacklist);
+}
+
+void pincode_defaults(void)
+{
pincode = &pincode_s;
- pincode->enabled = PINCODE_OK;
+ pincode->enabled = 0;
pincode->changetime = 0;
pincode->maxtry = 3;
pincode->charselect = 0;
+ pincode->check_blacklist = false;
pincode->multiplier = 0x3498;
pincode->baseSeed = 0x881234;
+ pincode->init = do_pincode_init;
+ pincode->final = do_pincode_final;
+
pincode->handle = pincode_handle;
pincode->decrypt = pincode_decrypt;
pincode->error = pincode_notifyLoginPinError;
pincode->update = pincode_notifyLoginPinUpdate;
- pincode->sendstate = pincode_sendstate;
+ pincode->makestate = pincode_makestate;
+ pincode->editstate = pincode_editstate;
+ pincode->loginstate = pincode_loginstate;
+ pincode->loginstate2 = pincode_loginstate2;
pincode->setnew = pincode_setnew;
pincode->change = pincode_change;
+ pincode->isBlacklisted = pincode_isBlacklisted;
pincode->compare = pincode_compare;
pincode->check = pincode_check;
pincode->config_read = pincode_config_read;
-
}
diff --git a/src/char/pincode.h b/src/char/pincode.h
index cffaa3054..699758179 100644
--- a/src/char/pincode.h
+++ b/src/char/pincode.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -22,18 +22,40 @@
#define CHAR_PINCODE_H
#include "common/hercules.h"
+#include "common/db.h"
/* Forward Declarations */
struct char_session_data;
struct config_t; // common/conf.h
-enum PincodeResponseCode {
- PINCODE_OK = 0,
- PINCODE_ASK = 1,
- PINCODE_NOTSET = 2,
- PINCODE_EXPIRED = 3,
- PINCODE_UNUSED = 7,
- PINCODE_WRONG = 8,
+enum pincode_make_response {
+ PINCODE_MAKE_SUCCESS = 0,
+ PINCODE_MAKE_DUPLICATED = 1,
+ PINCODE_MAKE_RESTRICT_PW = 2,
+ PINCODE_MAKE_PERSONALNUM_PW = 3,
+ PINCODE_MAKE_FAILED = 4,
+};
+
+enum pincode_edit_response {
+ PINCODE_EDIT_SUCCESS = 0x0,
+ PINCODE_EDIT_FAILED = 0x1,
+ PINCODE_EDIT_RESTRICT_PW = 0x2,
+ PINCODE_EDIT_PERSONALNUM_PW = 0x3,
+};
+
+enum pincode_login_response {
+ PINCODE_LOGIN_OK = 0,
+ PINCODE_LOGIN_ASK = 1,
+ PINCODE_LOGIN_NOTSET = 2,
+ PINCODE_LOGIN_EXPIRED = 3,
+ PINCODE_LOGIN_RESTRICT_PW = 5,
+ PINCODE_LOGIN_UNUSED = 7,
+ PINCODE_LOGIN_WRONG = 8,
+};
+
+enum pincode_login_response2 {
+ PINCODE_LOGIN_FLAG_LOCKED = 0,
+ PINCODE_LOGIN_FLAG_WRONG = 2,
};
/**
@@ -45,6 +67,8 @@ struct pincode_interface {
int changetime;
int maxtry;
int charselect;
+ bool check_blacklist;
+ VECTOR_DECL(char *) blacklist;
unsigned int multiplier;
unsigned int baseSeed;
/* handler */
@@ -52,12 +76,18 @@ struct pincode_interface {
void (*decrypt) (unsigned int userSeed, char* pin);
void (*error) (int account_id);
void (*update) (int account_id, char* pin);
- void (*sendstate) (int fd, struct char_session_data* sd, uint16 state);
+ void (*makestate) (int fd, struct char_session_data *sd, enum pincode_make_response state);
+ void (*editstate) (int fd, struct char_session_data *sd, enum pincode_edit_response state);
+ void (*loginstate) (int fd, struct char_session_data *sd, enum pincode_login_response state);
+ void (*loginstate2) (int fd, struct char_session_data *sd, enum pincode_login_response state, enum pincode_login_response2 flag);
void (*setnew) (int fd, struct char_session_data* sd);
void (*change) (int fd, struct char_session_data* sd);
+ bool (*isBlacklisted) (const char *pin);
int (*compare) (int fd, struct char_session_data* sd, char* pin);
void (*check) (int fd, struct char_session_data* sd);
bool (*config_read) (const char *filename, const struct config_t *config, bool imported);
+ void (*init) (void);
+ void (*final) (void);
};
#ifdef HERCULES_CORE
diff --git a/src/common/HPM.c b/src/common/HPM.c
index c84b447e8..a579a0926 100644
--- a/src/common/HPM.c
+++ b/src/common/HPM.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2016 Hercules Dev Team
+ * Copyright (C) 2013-2018 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -30,6 +30,7 @@
#include "common/memmgr.h"
#include "common/mapindex.h"
#include "common/mmo.h"
+#include "common/packets.h"
#include "common/showmsg.h"
#include "common/socket.h"
#include "common/sql.h"
@@ -48,25 +49,25 @@
# include <unistd.h>
#endif
-struct malloc_interface iMalloc_HPM;
-struct malloc_interface *HPMiMalloc;
-struct HPM_interface HPM_s;
+static struct malloc_interface iMalloc_HPM;
+static struct malloc_interface *HPMiMalloc;
+static struct HPM_interface HPM_s;
struct HPM_interface *HPM;
-struct HPMHooking_core_interface HPMHooking_core_s;
+static struct HPMHooking_core_interface HPMHooking_core_s;
/**
* (char*) data name -> (unsigned int) HPMDataCheck[] index
**/
-struct DBMap *datacheck_db;
-int datacheck_version;
-const struct s_HPMDataCheck *datacheck_data;
+static struct DBMap *datacheck_db;
+static int datacheck_version;
+static const struct s_HPMDataCheck *datacheck_data;
/**
* Executes an event on all loaded plugins.
*
* @param type The event type to trigger.
*/
-void hplugin_trigger_event(enum hp_event_types type)
+static void hplugin_trigger_event(enum hp_event_types type)
{
int i;
for (i = 0; i < VECTOR_LENGTH(HPM->plugins); i++) {
@@ -82,7 +83,7 @@ void hplugin_trigger_event(enum hp_event_types type)
* @param value The symbol value.
* @param name The symbol name.
*/
-void hplugin_export_symbol(void *value, const char *name)
+static void hplugin_export_symbol(void *value, const char *name)
{
struct hpm_symbol *symbol = NULL;
CREATE(symbol ,struct hpm_symbol, 1);
@@ -100,7 +101,7 @@ void hplugin_export_symbol(void *value, const char *name)
* @return The symbol value.
* @retval NULL if the symbol wasn't found.
*/
-void *hplugin_import_symbol(char *name, unsigned int pID)
+static void *hplugin_import_symbol(char *name, unsigned int pID)
{
int i;
nullpo_retr(NULL, name);
@@ -113,7 +114,8 @@ void *hplugin_import_symbol(char *name, unsigned int pID)
return NULL;
}
-bool hplugin_iscompatible(char* version) {
+static bool hplugin_iscompatible(char *version)
+{
unsigned int req_major = 0, req_minor = 0;
if( version == NULL )
@@ -131,7 +133,7 @@ bool hplugin_iscompatible(char* version) {
* @retval true if the plugin exists and is currently loaded.
* @retval false otherwise.
*/
-bool hplugin_exists(const char *filename)
+static bool hplugin_exists(const char *filename)
{
int i;
nullpo_retr(false, filename);
@@ -147,7 +149,7 @@ bool hplugin_exists(const char *filename)
*
* @return A (retained) pointer to the initialized data.
*/
-struct hplugin *hplugin_create(void)
+static struct hplugin *hplugin_create(void)
{
struct hplugin *plugin = NULL;
CREATE(plugin, struct hplugin, 1);
@@ -158,7 +160,7 @@ struct hplugin *hplugin_create(void)
return plugin;
}
-bool hplugins_addpacket(unsigned short cmd, unsigned short length, void (*receive) (int fd), unsigned int point, unsigned int pluginID)
+static bool hplugins_addpacket(unsigned short cmd, unsigned short length, void (*receive) (int fd), unsigned int point, unsigned int pluginID)
{
struct HPluginPacket *packet;
int i;
@@ -185,6 +187,10 @@ bool hplugins_addpacket(unsigned short cmd, unsigned short length, void (*receiv
packet->len = length;
packet->receive = receive;
+ if (cmd <= MAX_PACKET_DB && cmd >= MIN_PACKET_DB) {
+ packets->db[cmd] = length;
+ }
+
return true;
}
@@ -204,7 +210,7 @@ bool hplugins_addpacket(unsigned short cmd, unsigned short length, void (*receiv
* initialized through \c HPM->data_store_create() and ownership is passed
* to the caller.
*/
-bool hplugin_data_store_validate(enum HPluginDataTypes type, struct hplugin_data_store **storeptr, bool initialize)
+static bool hplugin_data_store_validate(enum HPluginDataTypes type, struct hplugin_data_store **storeptr, bool initialize)
{
struct hplugin_data_store *store;
nullpo_retr(false, storeptr);
@@ -248,7 +254,7 @@ bool hplugin_data_store_validate(enum HPluginDataTypes type, struct hplugin_data
* @param classid[in] The entry class identifier.
* @param autofree[in] Whether the entry should be automatically freed when removed.
*/
-void hplugins_addToHPData(enum HPluginDataTypes type, uint32 pluginID, struct hplugin_data_store **storeptr, void *data, uint32 classid, bool autofree)
+static void hplugins_addToHPData(enum HPluginDataTypes type, uint32 pluginID, struct hplugin_data_store **storeptr, void *data, uint32 classid, bool autofree)
{
struct hplugin_data_store *store;
struct hplugin_data_entry *entry;
@@ -293,7 +299,7 @@ void hplugins_addToHPData(enum HPluginDataTypes type, uint32 pluginID, struct hp
*
* @return The retrieved entry, or NULL.
*/
-void *hplugins_getFromHPData(enum HPluginDataTypes type, uint32 pluginID, struct hplugin_data_store *store, uint32 classid)
+static void *hplugins_getFromHPData(enum HPluginDataTypes type, uint32 pluginID, struct hplugin_data_store *store, uint32 classid)
{
int i;
@@ -320,7 +326,7 @@ void *hplugins_getFromHPData(enum HPluginDataTypes type, uint32 pluginID, struct
* @param store[in] The store.
* @param classid[in] The entry class identifier.
*/
-void hplugins_removeFromHPData(enum HPluginDataTypes type, uint32 pluginID, struct hplugin_data_store *store, uint32 classid)
+static void hplugins_removeFromHPData(enum HPluginDataTypes type, uint32 pluginID, struct hplugin_data_store *store, uint32 classid)
{
struct hplugin_data_entry *entry;
int i;
@@ -344,7 +350,7 @@ void hplugins_removeFromHPData(enum HPluginDataTypes type, uint32 pluginID, stru
}
/* TODO: add ability for tracking using pID for the upcoming runtime load/unload support. */
-bool HPM_AddHook(enum HPluginHookType type, const char *target, void *hook, unsigned int pID)
+static bool HPM_AddHook(enum HPluginHookType type, const char *target, void *hook, unsigned int pID)
{
if (!HPM->hooking->enabled) {
ShowError("HPM:AddHook Fail! '%s' tried to hook to '%s' but HPMHooking is disabled!\n",HPM->pid2name(pID),target);
@@ -360,13 +366,13 @@ bool HPM_AddHook(enum HPluginHookType type, const char *target, void *hook, unsi
return false;
}
-void HPM_HookStop(const char *func, unsigned int pID)
+static void HPM_HookStop(const char *func, unsigned int pID)
{
/* track? */
HPM->hooking->force_return = true;
}
-bool HPM_HookStopped(void)
+static bool HPM_HookStopped(void)
{
return HPM->hooking->force_return;
}
@@ -381,7 +387,7 @@ bool HPM_HookStopped(void)
* @param help the help string to be displayed by '--help', if any.
* @return the success status.
*/
-bool hpm_add_arg(unsigned int pluginID, char *name, bool has_param, CmdlineExecFunc func, const char *help)
+static bool hpm_add_arg(unsigned int pluginID, char *name, bool has_param, CmdlineExecFunc func, const char *help)
{
int i;
@@ -410,7 +416,7 @@ bool hpm_add_arg(unsigned int pluginID, char *name, bool has_param, CmdlineExecF
* @retval true if the listener was added successfully.
* @retval false in case of error.
*/
-bool hplugins_addconf(unsigned int pluginID, enum HPluginConfType type, char *name, void (*parse_func) (const char *key, const char *val), int (*return_func) (const char *key), bool required)
+static bool hplugins_addconf(unsigned int pluginID, enum HPluginConfType type, char *name, void (*parse_func) (const char *key, const char *val), int (*return_func) (const char *key), bool required)
{
struct HPConfListenStorage *conf;
int i;
@@ -450,7 +456,7 @@ bool hplugins_addconf(unsigned int pluginID, enum HPluginConfType type, char *na
return true;
}
-struct hplugin *hplugin_load(const char* filename)
+static struct hplugin *hplugin_load(const char *filename)
{
struct hplugin *plugin;
struct hplugin_info *info;
@@ -598,7 +604,7 @@ struct hplugin *hplugin_load(const char* filename)
*
* @param plugin The plugin data.
*/
-void hplugin_unload(struct hplugin* plugin)
+static void hplugin_unload(struct hplugin *plugin)
{
int i;
nullpo_retv(plugin);
@@ -628,7 +634,7 @@ CMDLINEARG(loadplugin)
/**
* Reads the plugin configuration and loads the plugins as necessary.
*/
-void hplugins_config_read(void)
+static void hplugins_config_read(void)
{
struct config_t plugins_conf;
struct config_setting_t *plist = NULL;
@@ -707,7 +713,7 @@ void hplugins_config_read(void)
*
* @see CPCMD()
*/
-CPCMD(plugins)
+static CPCMD(plugins)
{
int i;
@@ -733,7 +739,7 @@ CPCMD(plugins)
* @retval 1 OK
* @retval 2 incomplete packet
*/
-unsigned char hplugins_parse_packets(int fd, int packet_id, enum HPluginPacketHookingPoints point)
+static unsigned char hplugins_parse_packets(int fd, int packet_id, enum HPluginPacketHookingPoints point)
{
struct HPluginPacket *packet = NULL;
int i;
@@ -765,7 +771,7 @@ unsigned char hplugins_parse_packets(int fd, int packet_id, enum HPluginPacketHo
* @retval "core" if the plugin ID belongs to the Hercules core.
* @retval "UnknownPlugin" if the plugin wasn't found.
*/
-char *hplugins_id2name(unsigned int pid)
+static char *hplugins_id2name(unsigned int pid)
{
int i;
@@ -791,7 +797,7 @@ char *hplugins_id2name(unsigned int pid)
* @param file The string/filename to retain
* @return A retained copy of the source string.
*/
-const char *HPM_file2ptr(const char *file)
+static const char *HPM_file2ptr(const char *file)
{
int i;
@@ -810,27 +816,27 @@ const char *HPM_file2ptr(const char *file)
return HPM->filenames.data[i].name;
}
-void* HPM_mmalloc(size_t size, const char *file, int line, const char *func)
+static void *HPM_mmalloc(size_t size, const char *file, int line, const char *func)
{
return iMalloc->malloc(size,HPM_file2ptr(file),line,func);
}
-void* HPM_calloc(size_t num, size_t size, const char *file, int line, const char *func)
+static void *HPM_calloc(size_t num, size_t size, const char *file, int line, const char *func)
{
return iMalloc->calloc(num,size,HPM_file2ptr(file),line,func);
}
-void* HPM_realloc(void *p, size_t size, const char *file, int line, const char *func)
+static void *HPM_realloc(void *p, size_t size, const char *file, int line, const char *func)
{
return iMalloc->realloc(p,size,HPM_file2ptr(file),line,func);
}
-void* HPM_reallocz(void *p, size_t size, const char *file, int line, const char *func)
+static void *HPM_reallocz(void *p, size_t size, const char *file, int line, const char *func)
{
return iMalloc->reallocz(p,size,HPM_file2ptr(file),line,func);
}
-char* HPM_astrdup(const char *p, const char *file, int line, const char *func)
+static char *HPM_astrdup(const char *p, const char *file, int line, const char *func)
{
return iMalloc->astrdup(p,HPM_file2ptr(file),line,func);
}
@@ -844,7 +850,7 @@ char* HPM_astrdup(const char *p, const char *file, int line, const char *func)
* @retval true if a registered plugin was found to handle the entry.
* @retval false if no registered plugins could be found.
*/
-bool hplugins_parse_conf_entry(const char *w1, const char *w2, enum HPluginConfType point)
+static bool hplugins_parse_conf_entry(const char *w1, const char *w2, enum HPluginConfType point)
{
int i;
ARR_FIND(0, VECTOR_LENGTH(HPM->config_listeners[point]), i, strcmpi(w1, VECTOR_INDEX(HPM->config_listeners[point], i).key) == 0);
@@ -863,7 +869,7 @@ bool hplugins_parse_conf_entry(const char *w1, const char *w2, enum HPluginConfT
* @retval true in case of data found
* @retval false in case of no data found
*/
-bool hplugins_get_battle_conf(const char *w1, int *value)
+static bool hplugins_get_battle_conf(const char *w1, int *value)
{
int i;
@@ -887,7 +893,7 @@ bool hplugins_get_battle_conf(const char *w1, int *value)
* @param imported Whether the current config is imported from another file.
* @retval false in case of error.
*/
-bool hplugins_parse_conf(const struct config_t *config, const char *filename, enum HPluginConfType point, bool imported)
+static bool hplugins_parse_conf(const struct config_t *config, const char *filename, enum HPluginConfType point, bool imported)
{
const struct config_setting_t *setting = NULL;
int i, val, type;
@@ -940,7 +946,7 @@ bool hplugins_parse_conf(const struct config_t *config, const char *filename, en
* @param imported whether the current config is imported from another file.
* @retval false in case of error.
*/
-bool hplugins_parse_battle_conf(const struct config_t *config, const char *filename, bool imported)
+static bool hplugins_parse_battle_conf(const struct config_t *config, const char *filename, bool imported)
{
const struct config_setting_t *setting = NULL;
int i, val, type;
@@ -985,7 +991,7 @@ bool hplugins_parse_battle_conf(const struct config_t *config, const char *filen
*
* @param storeptr[in,out] A pointer to the plugin data store.
*/
-void hplugin_data_store_destroy(struct hplugin_data_store **storeptr)
+static void hplugin_data_store_destroy(struct hplugin_data_store **storeptr)
{
struct hplugin_data_store *store;
nullpo_retv(storeptr);
@@ -1014,7 +1020,7 @@ void hplugin_data_store_destroy(struct hplugin_data_store **storeptr)
* @param storeptr[in,out] A pointer to the data store to initialize.
* @param type[in] The store type.
*/
-void hplugin_data_store_create(struct hplugin_data_store **storeptr, enum HPluginDataTypes type)
+static void hplugin_data_store_create(struct hplugin_data_store **storeptr, enum HPluginDataTypes type)
{
struct hplugin_data_store *store;
nullpo_retv(storeptr);
@@ -1031,7 +1037,7 @@ void hplugin_data_store_create(struct hplugin_data_store **storeptr, enum HPlugi
/**
* Called by HPM->DataCheck on a plugins incoming data, ensures data structs in use are matching!
**/
-bool HPM_DataCheck(struct s_HPMDataCheck *src, unsigned int size, int version, char *name)
+static bool HPM_DataCheck(struct s_HPMDataCheck *src, unsigned int size, int version, char *name)
{
unsigned int i, j;
@@ -1060,7 +1066,7 @@ bool HPM_DataCheck(struct s_HPMDataCheck *src, unsigned int size, int version, c
return true;
}
-void HPM_datacheck_init(const struct s_HPMDataCheck *src, unsigned int length, int version)
+static void HPM_datacheck_init(const struct s_HPMDataCheck *src, unsigned int length, int version)
{
unsigned int i;
@@ -1077,12 +1083,12 @@ void HPM_datacheck_init(const struct s_HPMDataCheck *src, unsigned int length, i
}
}
-void HPM_datacheck_final(void)
+static void HPM_datacheck_final(void)
{
db_destroy(datacheck_db);
}
-void hpm_init(void)
+static void hpm_init(void)
{
int i;
datacheck_db = NULL;
@@ -1126,7 +1132,7 @@ void hpm_init(void)
/**
* Releases the retained filenames cache.
*/
-void hpm_memdown(void)
+static void hpm_memdown(void)
{
/* this memory is handled outside of the server's memory manager and
* thus cleared after memory manager goes down */
@@ -1141,7 +1147,7 @@ void hpm_memdown(void)
}
}
-void hpm_final(void)
+static void hpm_final(void)
{
int i;
diff --git a/src/common/HPM.h b/src/common/HPM.h
index e55397022..a4e3e46cc 100644
--- a/src/common/HPM.h
+++ b/src/common/HPM.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2016 Hercules Dev Team
+ * Copyright (C) 2013-2018 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -42,11 +42,7 @@
#define DLL HINSTANCE
#else // ! WIN32
#include <dlfcn.h>
- #ifdef RTLD_DEEPBIND // Certain linux distributions require this, but it's not available everywhere
- #define plugin_open(x) dlopen((x),RTLD_NOW|RTLD_DEEPBIND)
- #else // ! RTLD_DEEPBIND
- #define plugin_open(x) dlopen((x),RTLD_NOW)
- #endif // RTLD_DEEPBIND
+ #define plugin_open(x) dlopen((x), RTLD_NOW)
#define plugin_import(x,y,z) (z)dlsym((x),(y))
#define plugin_close(x) dlclose(x)
#define plugin_geterror(buf) ((void)buf, dlerror())
diff --git a/src/common/HPMDataCheck.h b/src/common/HPMDataCheck.h
index 0a4af75dd..ecbfc9f2c 100644
--- a/src/common/HPMDataCheck.h
+++ b/src/common/HPMDataCheck.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2014-2017 Hercules Dev Team
+ * Copyright (C) 2014-2019 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -52,15 +52,26 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
#define CHAR_GEOIP_H
#endif // CHAR_GEOIP_H
#ifdef CHAR_INTER_H
+ { "WisData", sizeof(struct WisData), SERVER_TYPE_CHAR },
{ "inter_interface", sizeof(struct inter_interface), SERVER_TYPE_CHAR },
#else
#define CHAR_INTER_H
#endif // CHAR_INTER_H
+ #ifdef CHAR_INT_ACHIEVEMENT_H
+ { "inter_achievement_interface", sizeof(struct inter_achievement_interface), SERVER_TYPE_CHAR },
+ #else
+ #define CHAR_INT_ACHIEVEMENT_H
+ #endif // CHAR_INT_ACHIEVEMENT_H
#ifdef CHAR_INT_AUCTION_H
{ "inter_auction_interface", sizeof(struct inter_auction_interface), SERVER_TYPE_CHAR },
#else
#define CHAR_INT_AUCTION_H
#endif // CHAR_INT_AUCTION_H
+ #ifdef CHAR_INT_CLAN_H
+ { "inter_clan_interface", sizeof(struct inter_clan_interface), SERVER_TYPE_CHAR },
+ #else
+ #define CHAR_INT_CLAN_H
+ #endif // CHAR_INT_CLAN_H
#ifdef CHAR_INT_ELEMENTAL_H
{ "inter_elemental_interface", sizeof(struct inter_elemental_interface), SERVER_TYPE_CHAR },
#else
@@ -101,6 +112,11 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
#else
#define CHAR_INT_QUEST_H
#endif // CHAR_INT_QUEST_H
+ #ifdef CHAR_INT_RODEX_H
+ { "inter_rodex_interface", sizeof(struct inter_rodex_interface), SERVER_TYPE_CHAR },
+ #else
+ #define CHAR_INT_RODEX_H
+ #endif // CHAR_INT_RODEX_H
#ifdef CHAR_INT_STORAGE_H
{ "inter_storage_interface", sizeof(struct inter_storage_interface), SERVER_TYPE_CHAR },
#else
@@ -188,7 +204,13 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
#define COMMON_MEMMGR_H
#endif // COMMON_MEMMGR_H
#ifdef COMMON_MMO_H
+ { "achievement", sizeof(struct achievement), SERVER_TYPE_ALL },
{ "auction_data", sizeof(struct auction_data), SERVER_TYPE_ALL },
+ { "char_achievements", sizeof(struct char_achievements), SERVER_TYPE_ALL },
+ { "clan", sizeof(struct clan), SERVER_TYPE_ALL },
+ { "clan_buff", sizeof(struct clan_buff), SERVER_TYPE_ALL },
+ { "clan_member", sizeof(struct clan_member), SERVER_TYPE_ALL },
+ { "clan_relationship", sizeof(struct clan_relationship), SERVER_TYPE_ALL },
{ "fame_list", sizeof(struct fame_list), SERVER_TYPE_ALL },
{ "guild", sizeof(struct guild), SERVER_TYPE_ALL },
{ "guild_alliance", sizeof(struct guild_alliance), SERVER_TYPE_ALL },
@@ -200,6 +222,7 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
{ "guild_storage", sizeof(struct guild_storage), SERVER_TYPE_ALL },
{ "hotkey", sizeof(struct hotkey), SERVER_TYPE_ALL },
{ "item", sizeof(struct item), SERVER_TYPE_ALL },
+ { "item_option", sizeof(struct item_option), SERVER_TYPE_ALL },
{ "mail_data", sizeof(struct mail_data), SERVER_TYPE_ALL },
{ "mail_message", sizeof(struct mail_message), SERVER_TYPE_ALL },
{ "mmo_charstatus", sizeof(struct mmo_charstatus), SERVER_TYPE_ALL },
@@ -207,6 +230,8 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
{ "party_member", sizeof(struct party_member), SERVER_TYPE_ALL },
{ "point", sizeof(struct point), SERVER_TYPE_ALL },
{ "quest", sizeof(struct quest), SERVER_TYPE_ALL },
+ { "rodex_maillist", sizeof(struct rodex_maillist), SERVER_TYPE_ALL },
+ { "rodex_message", sizeof(struct rodex_message), SERVER_TYPE_ALL },
{ "s_elemental", sizeof(struct s_elemental), SERVER_TYPE_ALL },
{ "s_friend", sizeof(struct s_friend), SERVER_TYPE_ALL },
{ "s_homunculus", sizeof(struct s_homunculus), SERVER_TYPE_ALL },
@@ -231,6 +256,11 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
#else
#define COMMON_NULLPO_H
#endif // COMMON_NULLPO_H
+ #ifdef COMMON_PACKETS_H
+ { "packets_interface", sizeof(struct packets_interface), SERVER_TYPE_ALL },
+ #else
+ #define COMMON_PACKETS_H
+ #endif // COMMON_PACKETS_H
#ifdef COMMON_RANDOM_H
{ "rnd_interface", sizeof(struct rnd_interface), SERVER_TYPE_ALL },
#else
@@ -293,11 +323,20 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
#ifdef LOGIN_ACCOUNT_H
{ "Account_engine", sizeof(struct Account_engine), SERVER_TYPE_LOGIN },
{ "AccountDB", sizeof(struct AccountDB), SERVER_TYPE_LOGIN },
+ { "AccountDB_SQL", sizeof(struct AccountDB_SQL), SERVER_TYPE_LOGIN },
{ "AccountDBIterator", sizeof(struct AccountDBIterator), SERVER_TYPE_LOGIN },
+ { "AccountDBIterator_SQL", sizeof(struct AccountDBIterator_SQL), SERVER_TYPE_LOGIN },
+ { "account_interface", sizeof(struct account_interface), SERVER_TYPE_LOGIN },
{ "mmo_account", sizeof(struct mmo_account), SERVER_TYPE_LOGIN },
#else
#define LOGIN_ACCOUNT_H
#endif // LOGIN_ACCOUNT_H
+ #ifdef LOGIN_IPBAN_H
+ { "ipban_interface", sizeof(struct ipban_interface), SERVER_TYPE_LOGIN },
+ { "s_ipban_dbs", sizeof(struct s_ipban_dbs), SERVER_TYPE_LOGIN },
+ #else
+ #define LOGIN_IPBAN_H
+ #endif // LOGIN_IPBAN_H
#ifdef LOGIN_LCLIF_H
{ "lclif_interface", sizeof(struct lclif_interface), SERVER_TYPE_LOGIN },
{ "login_packet_db", sizeof(struct login_packet_db), SERVER_TYPE_LOGIN },
@@ -307,34 +346,60 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
#ifdef LOGIN_LCLIF_P_H
{ "lclif_interface_dbs", sizeof(struct lclif_interface_dbs), SERVER_TYPE_LOGIN },
{ "lclif_interface_private", sizeof(struct lclif_interface_private), SERVER_TYPE_LOGIN },
- { "packet_AC_ACCEPT_LOGIN", sizeof(struct packet_AC_ACCEPT_LOGIN), SERVER_TYPE_LOGIN },
- { "packet_AC_REFUSE_LOGIN", sizeof(struct packet_AC_REFUSE_LOGIN), SERVER_TYPE_LOGIN },
- { "packet_AC_REFUSE_LOGIN_R2", sizeof(struct packet_AC_REFUSE_LOGIN_R2), SERVER_TYPE_LOGIN },
- { "packet_CA_CHARSERVERCONNECT", sizeof(struct packet_CA_CHARSERVERCONNECT), SERVER_TYPE_LOGIN },
- { "packet_CA_CONNECT_INFO_CHANGED", sizeof(struct packet_CA_CONNECT_INFO_CHANGED), SERVER_TYPE_LOGIN },
- { "packet_CA_EXE_HASHCHECK", sizeof(struct packet_CA_EXE_HASHCHECK), SERVER_TYPE_LOGIN },
- { "packet_CA_LOGIN", sizeof(struct packet_CA_LOGIN), SERVER_TYPE_LOGIN },
- { "packet_CA_LOGIN2", sizeof(struct packet_CA_LOGIN2), SERVER_TYPE_LOGIN },
- { "packet_CA_LOGIN3", sizeof(struct packet_CA_LOGIN3), SERVER_TYPE_LOGIN },
- { "packet_CA_LOGIN4", sizeof(struct packet_CA_LOGIN4), SERVER_TYPE_LOGIN },
- { "packet_CA_LOGIN_HAN", sizeof(struct packet_CA_LOGIN_HAN), SERVER_TYPE_LOGIN },
- { "packet_CA_LOGIN_PCBANG", sizeof(struct packet_CA_LOGIN_PCBANG), SERVER_TYPE_LOGIN },
- { "packet_CA_SSO_LOGIN_REQ", sizeof(struct packet_CA_SSO_LOGIN_REQ), SERVER_TYPE_LOGIN },
- { "packet_SC_NOTIFY_BAN", sizeof(struct packet_SC_NOTIFY_BAN), SERVER_TYPE_LOGIN },
#else
#define LOGIN_LCLIF_P_H
#endif // LOGIN_LCLIF_P_H
+ #ifdef LOGIN_LOGINLOG_H
+ { "loginlog_interface", sizeof(struct loginlog_interface), SERVER_TYPE_LOGIN },
+ { "s_loginlog_dbs", sizeof(struct s_loginlog_dbs), SERVER_TYPE_LOGIN },
+ #else
+ #define LOGIN_LOGINLOG_H
+ #endif // LOGIN_LOGINLOG_H
#ifdef LOGIN_LOGIN_H
{ "Login_Config", sizeof(struct Login_Config), SERVER_TYPE_LOGIN },
{ "client_hash_node", sizeof(struct client_hash_node), SERVER_TYPE_LOGIN },
+ { "lchrif_interface", sizeof(struct lchrif_interface), SERVER_TYPE_LOGIN },
{ "login_auth_node", sizeof(struct login_auth_node), SERVER_TYPE_LOGIN },
{ "login_interface", sizeof(struct login_interface), SERVER_TYPE_LOGIN },
{ "login_session_data", sizeof(struct login_session_data), SERVER_TYPE_LOGIN },
{ "mmo_char_server", sizeof(struct mmo_char_server), SERVER_TYPE_LOGIN },
{ "online_login_data", sizeof(struct online_login_data), SERVER_TYPE_LOGIN },
+ { "s_login_dbs", sizeof(struct s_login_dbs), SERVER_TYPE_LOGIN },
#else
#define LOGIN_LOGIN_H
#endif // LOGIN_LOGIN_H
+ #ifdef LOGIN_PACKETS_AC_STRUCT_H
+ { "PACKET_AC_ACCEPT_LOGIN", sizeof(struct PACKET_AC_ACCEPT_LOGIN), SERVER_TYPE_LOGIN },
+ { "PACKET_AC_REFUSE_LOGIN", sizeof(struct PACKET_AC_REFUSE_LOGIN), SERVER_TYPE_LOGIN },
+ { "PACKET_AC_REFUSE_LOGIN_R2", sizeof(struct PACKET_AC_REFUSE_LOGIN_R2), SERVER_TYPE_LOGIN },
+ { "PACKET_SC_NOTIFY_BAN", sizeof(struct PACKET_SC_NOTIFY_BAN), SERVER_TYPE_LOGIN },
+ #else
+ #define LOGIN_PACKETS_AC_STRUCT_H
+ #endif // LOGIN_PACKETS_AC_STRUCT_H
+ #ifdef LOGIN_PACKETS_CA_STRUCT_H
+ { "PACKET_CA_CHARSERVERCONNECT", sizeof(struct PACKET_CA_CHARSERVERCONNECT), SERVER_TYPE_LOGIN },
+ { "PACKET_CA_CONNECT_INFO_CHANGED", sizeof(struct PACKET_CA_CONNECT_INFO_CHANGED), SERVER_TYPE_LOGIN },
+ { "PACKET_CA_EXE_HASHCHECK", sizeof(struct PACKET_CA_EXE_HASHCHECK), SERVER_TYPE_LOGIN },
+ { "PACKET_CA_LOGIN", sizeof(struct PACKET_CA_LOGIN), SERVER_TYPE_LOGIN },
+ { "PACKET_CA_LOGIN2", sizeof(struct PACKET_CA_LOGIN2), SERVER_TYPE_LOGIN },
+ { "PACKET_CA_LOGIN3", sizeof(struct PACKET_CA_LOGIN3), SERVER_TYPE_LOGIN },
+ { "PACKET_CA_LOGIN4", sizeof(struct PACKET_CA_LOGIN4), SERVER_TYPE_LOGIN },
+ { "PACKET_CA_LOGIN_HAN", sizeof(struct PACKET_CA_LOGIN_HAN), SERVER_TYPE_LOGIN },
+ { "PACKET_CA_LOGIN_OTP", sizeof(struct PACKET_CA_LOGIN_OTP), SERVER_TYPE_LOGIN },
+ { "PACKET_CA_LOGIN_PCBANG", sizeof(struct PACKET_CA_LOGIN_PCBANG), SERVER_TYPE_LOGIN },
+ { "PACKET_CA_SSO_LOGIN_REQ", sizeof(struct PACKET_CA_SSO_LOGIN_REQ), SERVER_TYPE_LOGIN },
+ #else
+ #define LOGIN_PACKETS_CA_STRUCT_H
+ #endif // LOGIN_PACKETS_CA_STRUCT_H
+ #ifdef MAP_ACHIEVEMENT_H
+ { "achievement_data", sizeof(struct achievement_data), SERVER_TYPE_MAP },
+ { "achievement_interface", sizeof(struct achievement_interface), SERVER_TYPE_MAP },
+ { "achievement_objective", sizeof(struct achievement_objective), SERVER_TYPE_MAP },
+ { "achievement_reward_item", sizeof(struct achievement_reward_item), SERVER_TYPE_MAP },
+ { "achievement_rewards", sizeof(struct achievement_rewards), SERVER_TYPE_MAP },
+ #else
+ #define MAP_ACHIEVEMENT_H
+ #endif // MAP_ACHIEVEMENT_H
#ifdef MAP_ATCOMMAND_H
{ "AliasInfo", sizeof(struct AliasInfo), SERVER_TYPE_MAP },
{ "AtCommandInfo", sizeof(struct AtCommandInfo), SERVER_TYPE_MAP },
@@ -386,12 +451,21 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
#else
#define MAP_CHRIF_H
#endif // MAP_CHRIF_H
+ #ifdef MAP_CLAN_H
+ { "clan_interface", sizeof(struct clan_interface), SERVER_TYPE_MAP },
+ #else
+ #define MAP_CLAN_H
+ #endif // MAP_CLAN_H
#ifdef MAP_CLIF_H
+ { "attendance_entry", sizeof(struct attendance_entry), SERVER_TYPE_MAP },
+ { "barter_itemlist_entry", sizeof(struct barter_itemlist_entry), SERVER_TYPE_MAP },
+ { "barteritemlist", sizeof(struct barteritemlist), SERVER_TYPE_MAP },
{ "cdelayed_damage", sizeof(struct cdelayed_damage), SERVER_TYPE_MAP },
{ "clif_interface", sizeof(struct clif_interface), SERVER_TYPE_MAP },
{ "hCSData", sizeof(struct hCSData), SERVER_TYPE_MAP },
{ "merge_item", sizeof(struct merge_item), SERVER_TYPE_MAP },
{ "s_packet_db", sizeof(struct s_packet_db), SERVER_TYPE_MAP },
+ { "stylist_data_entry", sizeof(struct stylist_data_entry), SERVER_TYPE_MAP },
#else
#define MAP_CLIF_H
#endif // MAP_CLIF_H
@@ -457,6 +531,7 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
{ "item_package_rand_entry", sizeof(struct item_package_rand_entry), SERVER_TYPE_MAP },
{ "item_package_rand_group", sizeof(struct item_package_rand_group), SERVER_TYPE_MAP },
{ "itemdb_interface", sizeof(struct itemdb_interface), SERVER_TYPE_MAP },
+ { "itemdb_option", sizeof(struct itemdb_option), SERVER_TYPE_MAP },
{ "itemlist", sizeof(struct itemlist), SERVER_TYPE_MAP },
{ "itemlist_entry", sizeof(struct itemlist_entry), SERVER_TYPE_MAP },
#else
@@ -484,8 +559,7 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
{ "charid_request", sizeof(struct charid_request), SERVER_TYPE_MAP },
{ "flooritem_data", sizeof(struct flooritem_data), SERVER_TYPE_MAP },
{ "iwall_data", sizeof(struct iwall_data), SERVER_TYPE_MAP },
- { "map_cache_main_header", sizeof(struct map_cache_main_header), SERVER_TYPE_MAP },
- { "map_cache_map_info", sizeof(struct map_cache_map_info), SERVER_TYPE_MAP },
+ { "map_cache_header", sizeof(struct map_cache_header), SERVER_TYPE_MAP },
{ "map_data", sizeof(struct map_data), SERVER_TYPE_MAP },
{ "map_data_other_server", sizeof(struct map_data_other_server), SERVER_TYPE_MAP },
{ "map_drop_list", sizeof(struct map_drop_list), SERVER_TYPE_MAP },
@@ -498,6 +572,8 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
{ "mapflag_skill_adjust", sizeof(struct mapflag_skill_adjust), SERVER_TYPE_MAP },
{ "mapit_interface", sizeof(struct mapit_interface), SERVER_TYPE_MAP },
{ "questinfo", sizeof(struct questinfo), SERVER_TYPE_MAP },
+ { "questinfo_itemreq", sizeof(struct questinfo_itemreq), SERVER_TYPE_MAP },
+ { "questinfo_qreq", sizeof(struct questinfo_qreq), SERVER_TYPE_MAP },
{ "spawn_data", sizeof(struct spawn_data), SERVER_TYPE_MAP },
#else
#define MAP_MAP_H
@@ -542,8 +618,136 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
#ifdef MAP_PACKETS_STRUCT_H
{ "EQUIPITEM_INFO", sizeof(struct EQUIPITEM_INFO), SERVER_TYPE_MAP },
{ "EQUIPSLOTINFO", sizeof(struct EQUIPSLOTINFO), SERVER_TYPE_MAP },
+ { "ItemOptions", sizeof(struct ItemOptions), SERVER_TYPE_MAP },
{ "NORMALITEM_INFO", sizeof(struct NORMALITEM_INFO), SERVER_TYPE_MAP },
- { "RndOptions", sizeof(struct RndOptions), SERVER_TYPE_MAP },
+ { "PACKET_CZ_ADD_ITEM_TO_MAIL", sizeof(struct PACKET_CZ_ADD_ITEM_TO_MAIL), SERVER_TYPE_MAP },
+ { "PACKET_CZ_CHECKNAME", sizeof(struct PACKET_CZ_CHECKNAME), SERVER_TYPE_MAP },
+ { "PACKET_CZ_MEMORIALDUNGEON_COMMAND", sizeof(struct PACKET_CZ_MEMORIALDUNGEON_COMMAND), SERVER_TYPE_MAP },
+ { "PACKET_CZ_OPEN_UI", sizeof(struct PACKET_CZ_OPEN_UI), SERVER_TYPE_MAP },
+ { "PACKET_CZ_PARTY_CONFIG", sizeof(struct PACKET_CZ_PARTY_CONFIG), SERVER_TYPE_MAP },
+ { "PACKET_CZ_PC_BUY_CASH_POINT_ITEM", sizeof(struct PACKET_CZ_PC_BUY_CASH_POINT_ITEM), SERVER_TYPE_MAP },
+ { "PACKET_CZ_PC_BUY_CASH_POINT_ITEM_sub", sizeof(struct PACKET_CZ_PC_BUY_CASH_POINT_ITEM_sub), SERVER_TYPE_MAP },
+ { "PACKET_CZ_PC_PURCHASE_ITEMLIST", sizeof(struct PACKET_CZ_PC_PURCHASE_ITEMLIST), SERVER_TYPE_MAP },
+ { "PACKET_CZ_PC_PURCHASE_ITEMLIST_sub", sizeof(struct PACKET_CZ_PC_PURCHASE_ITEMLIST_sub), SERVER_TYPE_MAP },
+ { "PACKET_CZ_PET_EVOLUTION", sizeof(struct PACKET_CZ_PET_EVOLUTION), SERVER_TYPE_MAP },
+ { "PACKET_CZ_PRIVATE_AIRSHIP_REQUEST", sizeof(struct PACKET_CZ_PRIVATE_AIRSHIP_REQUEST), SERVER_TYPE_MAP },
+ { "PACKET_CZ_REQ_DELETE_MAIL", sizeof(struct PACKET_CZ_REQ_DELETE_MAIL), SERVER_TYPE_MAP },
+ { "PACKET_CZ_REQ_ITEM_FROM_MAIL", sizeof(struct PACKET_CZ_REQ_ITEM_FROM_MAIL), SERVER_TYPE_MAP },
+ { "PACKET_CZ_REQ_ITEMREPAIR", sizeof(struct PACKET_CZ_REQ_ITEMREPAIR), SERVER_TYPE_MAP },
+ { "PACKET_CZ_REQ_MAKINGITEM", sizeof(struct PACKET_CZ_REQ_MAKINGITEM), SERVER_TYPE_MAP },
+ { "PACKET_CZ_REQ_NEXT_MAIL_LIST", sizeof(struct PACKET_CZ_REQ_NEXT_MAIL_LIST), SERVER_TYPE_MAP },
+ { "PACKET_CZ_REQ_OPEN_BUYING_STORE", sizeof(struct PACKET_CZ_REQ_OPEN_BUYING_STORE), SERVER_TYPE_MAP },
+ { "PACKET_CZ_REQ_OPEN_BUYING_STORE_sub", sizeof(struct PACKET_CZ_REQ_OPEN_BUYING_STORE_sub), SERVER_TYPE_MAP },
+ { "PACKET_CZ_REQ_OPEN_MAIL", sizeof(struct PACKET_CZ_REQ_OPEN_MAIL), SERVER_TYPE_MAP },
+ { "PACKET_CZ_REQ_OPEN_WRITE_MAIL", sizeof(struct PACKET_CZ_REQ_OPEN_WRITE_MAIL), SERVER_TYPE_MAP },
+ { "PACKET_CZ_REQ_READ_MAIL", sizeof(struct PACKET_CZ_REQ_READ_MAIL), SERVER_TYPE_MAP },
+ { "PACKET_CZ_REQ_REFRESH_MAIL_LIST", sizeof(struct PACKET_CZ_REQ_REFRESH_MAIL_LIST), SERVER_TYPE_MAP },
+ { "PACKET_CZ_REQ_REMAINTIME", sizeof(struct PACKET_CZ_REQ_REMAINTIME), SERVER_TYPE_MAP },
+ { "PACKET_CZ_REQ_REMOVE_ITEM_MAIL", sizeof(struct PACKET_CZ_REQ_REMOVE_ITEM_MAIL), SERVER_TYPE_MAP },
+ { "PACKET_CZ_REQ_STYLE_CHANGE", sizeof(struct PACKET_CZ_REQ_STYLE_CHANGE), SERVER_TYPE_MAP },
+ { "PACKET_CZ_REQ_STYLE_CHANGE2", sizeof(struct PACKET_CZ_REQ_STYLE_CHANGE2), SERVER_TYPE_MAP },
+ { "PACKET_CZ_REQ_TRADE_BUYING_STORE", sizeof(struct PACKET_CZ_REQ_TRADE_BUYING_STORE), SERVER_TYPE_MAP },
+ { "PACKET_CZ_REQ_TRADE_BUYING_STORE_sub", sizeof(struct PACKET_CZ_REQ_TRADE_BUYING_STORE_sub), SERVER_TYPE_MAP },
+ { "PACKET_CZ_REQ_ZENY_FROM_MAIL", sizeof(struct PACKET_CZ_REQ_ZENY_FROM_MAIL), SERVER_TYPE_MAP },
+ { "PACKET_CZ_REQMAKINGITEM", sizeof(struct PACKET_CZ_REQMAKINGITEM), SERVER_TYPE_MAP },
+ { "PACKET_CZ_SEARCH_STORE_INFO", sizeof(struct PACKET_CZ_SEARCH_STORE_INFO), SERVER_TYPE_MAP },
+ { "PACKET_CZ_SEARCH_STORE_INFO_item", sizeof(struct PACKET_CZ_SEARCH_STORE_INFO_item), SERVER_TYPE_MAP },
+ { "PACKET_CZ_SEND_MAIL", sizeof(struct PACKET_CZ_SEND_MAIL), SERVER_TYPE_MAP },
+ { "PACKET_CZ_SSILIST_ITEM_CLICK", sizeof(struct PACKET_CZ_SSILIST_ITEM_CLICK), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ACK_BAN_GUILD1", sizeof(struct PACKET_ZC_ACK_BAN_GUILD1), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ACK_BAN_GUILD2", sizeof(struct PACKET_ZC_ACK_BAN_GUILD2), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ACK_BAN_GUILD3", sizeof(struct PACKET_ZC_ACK_BAN_GUILD3), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ACK_CLAN_LEAVE", sizeof(struct PACKET_ZC_ACK_CLAN_LEAVE), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ACK_DELETE_MAIL", sizeof(struct PACKET_ZC_ACK_DELETE_MAIL), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ACK_ITEM_FROM_MAIL", sizeof(struct PACKET_ZC_ACK_ITEM_FROM_MAIL), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ACK_ITEMLIST_BUYING_STORE", sizeof(struct PACKET_ZC_ACK_ITEMLIST_BUYING_STORE), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ACK_ITEMLIST_BUYING_STORE_sub", sizeof(struct PACKET_ZC_ACK_ITEMLIST_BUYING_STORE_sub), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ACK_LEAVE_GUILD1", sizeof(struct PACKET_ZC_ACK_LEAVE_GUILD1), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ACK_LEAVE_GUILD2", sizeof(struct PACKET_ZC_ACK_LEAVE_GUILD2), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ACK_OPEN_WRITE_MAIL", sizeof(struct PACKET_ZC_ACK_OPEN_WRITE_MAIL), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ACK_REMOVE_ITEM_MAIL", sizeof(struct PACKET_ZC_ACK_REMOVE_ITEM_MAIL), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ACK_REQMAKINGITEM", sizeof(struct PACKET_ZC_ACK_REQMAKINGITEM), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ACK_SCHEDULER_CASHITEM", sizeof(struct PACKET_ZC_ACK_SCHEDULER_CASHITEM), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ACK_SCHEDULER_CASHITEM_sub", sizeof(struct PACKET_ZC_ACK_SCHEDULER_CASHITEM_sub), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ACK_TOUSESKILL", sizeof(struct PACKET_ZC_ACK_TOUSESKILL), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ACK_WEAPONREFINE", sizeof(struct PACKET_ZC_ACK_WEAPONREFINE), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ACK_ZENY_FROM_MAIL", sizeof(struct PACKET_ZC_ACK_ZENY_FROM_MAIL), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ADD_EXCHANGE_ITEM", sizeof(struct PACKET_ZC_ADD_EXCHANGE_ITEM), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ADD_ITEM_TO_CART", sizeof(struct PACKET_ZC_ADD_ITEM_TO_CART), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ADD_ITEM_TO_MAIL", sizeof(struct PACKET_ZC_ADD_ITEM_TO_MAIL), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ADD_ITEM_TO_STORE", sizeof(struct PACKET_ZC_ADD_ITEM_TO_STORE), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ADD_MEMBER_TO_GROUP", sizeof(struct PACKET_ZC_ADD_MEMBER_TO_GROUP), SERVER_TYPE_MAP },
+ { "PACKET_ZC_CASH_ITEM_DELETE", sizeof(struct PACKET_ZC_CASH_ITEM_DELETE), SERVER_TYPE_MAP },
+ { "PACKET_ZC_CASH_TIME_COUNTER", sizeof(struct PACKET_ZC_CASH_TIME_COUNTER), SERVER_TYPE_MAP },
+ { "PACKET_ZC_CHECKNAME", sizeof(struct PACKET_ZC_CHECKNAME), SERVER_TYPE_MAP },
+ { "PACKET_ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER", sizeof(struct PACKET_ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER), SERVER_TYPE_MAP },
+ { "PACKET_ZC_FEED_MER", sizeof(struct PACKET_ZC_FEED_MER), SERVER_TYPE_MAP },
+ { "PACKET_ZC_FEED_PET", sizeof(struct PACKET_ZC_FEED_PET), SERVER_TYPE_MAP },
+ { "PACKET_ZC_FORMATSTRING_MSG", sizeof(struct PACKET_ZC_FORMATSTRING_MSG), SERVER_TYPE_MAP },
+ { "PACKET_ZC_FORMATSTRING_MSG_COLOR", sizeof(struct PACKET_ZC_FORMATSTRING_MSG_COLOR), SERVER_TYPE_MAP },
+ { "PACKET_ZC_GROUP_ISALIVE", sizeof(struct PACKET_ZC_GROUP_ISALIVE), SERVER_TYPE_MAP },
+ { "PACKET_ZC_GROUP_LIST", sizeof(struct PACKET_ZC_GROUP_LIST), SERVER_TYPE_MAP },
+ { "PACKET_ZC_GROUP_LIST_SUB", sizeof(struct PACKET_ZC_GROUP_LIST_SUB), SERVER_TYPE_MAP },
+ { "PACKET_ZC_GUILD_POSITION", sizeof(struct PACKET_ZC_GUILD_POSITION), SERVER_TYPE_MAP },
+ { "PACKET_ZC_INVENTORY_MOVE_FAILED", sizeof(struct PACKET_ZC_INVENTORY_MOVE_FAILED), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ITEM_ENTRY", sizeof(struct PACKET_ZC_ITEM_ENTRY), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ITEM_PICKUP_PARTY", sizeof(struct PACKET_ZC_ITEM_PICKUP_PARTY), SERVER_TYPE_MAP },
+ { "PACKET_ZC_MAIL_LIST", sizeof(struct PACKET_ZC_MAIL_LIST), SERVER_TYPE_MAP },
+ { "PACKET_ZC_MAKABLEITEMLIST", sizeof(struct PACKET_ZC_MAKABLEITEMLIST), SERVER_TYPE_MAP },
+ { "PACKET_ZC_MAKABLEITEMLIST_sub", sizeof(struct PACKET_ZC_MAKABLEITEMLIST_sub), SERVER_TYPE_MAP },
+ { "PACKET_ZC_MAKINGARROW_LIST", sizeof(struct PACKET_ZC_MAKINGARROW_LIST), SERVER_TYPE_MAP },
+ { "PACKET_ZC_MAKINGARROW_LIST_sub", sizeof(struct PACKET_ZC_MAKINGARROW_LIST_sub), SERVER_TYPE_MAP },
+ { "PACKET_ZC_MAKINGITEM_LIST", sizeof(struct PACKET_ZC_MAKINGITEM_LIST), SERVER_TYPE_MAP },
+ { "PACKET_ZC_MAKINGITEM_LIST_sub", sizeof(struct PACKET_ZC_MAKINGITEM_LIST_sub), SERVER_TYPE_MAP },
+ { "PACKET_ZC_MSG_COLOR", sizeof(struct PACKET_ZC_MSG_COLOR), SERVER_TYPE_MAP },
+ { "PACKET_ZC_MVP_GETTING_ITEM", sizeof(struct PACKET_ZC_MVP_GETTING_ITEM), SERVER_TYPE_MAP },
+ { "PACKET_ZC_MYITEMLIST_BUYING_STORE", sizeof(struct PACKET_ZC_MYITEMLIST_BUYING_STORE), SERVER_TYPE_MAP },
+ { "PACKET_ZC_MYITEMLIST_BUYING_STORE_sub", sizeof(struct PACKET_ZC_MYITEMLIST_BUYING_STORE_sub), SERVER_TYPE_MAP },
+ { "PACKET_ZC_NOTIFY_CHAT", sizeof(struct PACKET_ZC_NOTIFY_CHAT), SERVER_TYPE_MAP },
+ { "PACKET_ZC_NOTIFY_CLAN_CHAT", sizeof(struct PACKET_ZC_NOTIFY_CLAN_CHAT), SERVER_TYPE_MAP },
+ { "PACKET_ZC_NOTIFY_CLAN_CONNECTINFO", sizeof(struct PACKET_ZC_NOTIFY_CLAN_CONNECTINFO), SERVER_TYPE_MAP },
+ { "PACKET_ZC_NOTIFY_PLAYERCHAT", sizeof(struct PACKET_ZC_NOTIFY_PLAYERCHAT), SERVER_TYPE_MAP },
+ { "PACKET_ZC_NOTIFY_UNREADMAIL", sizeof(struct PACKET_ZC_NOTIFY_UNREADMAIL), SERVER_TYPE_MAP },
+ { "PACKET_ZC_NOTIFY_WEAPONITEMLIST", sizeof(struct PACKET_ZC_NOTIFY_WEAPONITEMLIST), SERVER_TYPE_MAP },
+ { "PACKET_ZC_NOTIFY_WEAPONITEMLIST_sub", sizeof(struct PACKET_ZC_NOTIFY_WEAPONITEMLIST_sub), SERVER_TYPE_MAP },
+ { "PACKET_ZC_OPEN_UI", sizeof(struct PACKET_ZC_OPEN_UI), SERVER_TYPE_MAP },
+ { "PACKET_ZC_OVERWEIGHT_PERCENT", sizeof(struct PACKET_ZC_OVERWEIGHT_PERCENT), SERVER_TYPE_MAP },
+ { "PACKET_ZC_PC_CASH_POINT_ITEMLIST", sizeof(struct PACKET_ZC_PC_CASH_POINT_ITEMLIST), SERVER_TYPE_MAP },
+ { "PACKET_ZC_PC_CASH_POINT_ITEMLIST_sub", sizeof(struct PACKET_ZC_PC_CASH_POINT_ITEMLIST_sub), SERVER_TYPE_MAP },
+ { "PACKET_ZC_PC_PURCHASE_ITEMLIST", sizeof(struct PACKET_ZC_PC_PURCHASE_ITEMLIST), SERVER_TYPE_MAP },
+ { "PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC", sizeof(struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC), SERVER_TYPE_MAP },
+ { "PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC_sub", sizeof(struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC_sub), SERVER_TYPE_MAP },
+ { "PACKET_ZC_PC_PURCHASE_ITEMLIST_sub", sizeof(struct PACKET_ZC_PC_PURCHASE_ITEMLIST_sub), SERVER_TYPE_MAP },
+ { "PACKET_ZC_PC_PURCHASE_MYITEMLIST", sizeof(struct PACKET_ZC_PC_PURCHASE_MYITEMLIST), SERVER_TYPE_MAP },
+ { "PACKET_ZC_PC_PURCHASE_MYITEMLIST_sub", sizeof(struct PACKET_ZC_PC_PURCHASE_MYITEMLIST_sub), SERVER_TYPE_MAP },
+ { "PACKET_ZC_PRIVATE_AIRSHIP_RESPONSE", sizeof(struct PACKET_ZC_PRIVATE_AIRSHIP_RESPONSE), SERVER_TYPE_MAP },
+ { "PACKET_ZC_READ_MAIL", sizeof(struct PACKET_ZC_READ_MAIL), SERVER_TYPE_MAP },
+ { "PACKET_ZC_REMOVE_EFFECT", sizeof(struct PACKET_ZC_REMOVE_EFFECT), SERVER_TYPE_MAP },
+ { "PACKET_ZC_REPAIRITEMLIST", sizeof(struct PACKET_ZC_REPAIRITEMLIST), SERVER_TYPE_MAP },
+ { "PACKET_ZC_REPAIRITEMLIST_sub", sizeof(struct PACKET_ZC_REPAIRITEMLIST_sub), SERVER_TYPE_MAP },
+ { "PACKET_ZC_SEARCH_STORE_INFO_ACK", sizeof(struct PACKET_ZC_SEARCH_STORE_INFO_ACK), SERVER_TYPE_MAP },
+ { "PACKET_ZC_SEARCH_STORE_INFO_ACK_sub", sizeof(struct PACKET_ZC_SEARCH_STORE_INFO_ACK_sub), SERVER_TYPE_MAP },
+ { "PACKET_ZC_SKILL_SCALE", sizeof(struct PACKET_ZC_SKILL_SCALE), SERVER_TYPE_MAP },
+ { "PACKET_ZC_SPRITE_CHANGE", sizeof(struct PACKET_ZC_SPRITE_CHANGE), SERVER_TYPE_MAP },
+ { "PACKET_ZC_STYLE_CHANGE_RES", sizeof(struct PACKET_ZC_STYLE_CHANGE_RES), SERVER_TYPE_MAP },
+ { "PACKET_ZC_UI_ACTION", sizeof(struct PACKET_ZC_UI_ACTION), SERVER_TYPE_MAP },
+ { "PACKET_ZC_UPDATE_ITEM_FROM_BUYING_STORE", sizeof(struct PACKET_ZC_UPDATE_ITEM_FROM_BUYING_STORE), SERVER_TYPE_MAP },
+ { "PACKET_ZC_USE_ITEM_ACK", sizeof(struct PACKET_ZC_USE_ITEM_ACK), SERVER_TYPE_MAP },
+ { "PACKET_ZC_WARPLIST", sizeof(struct PACKET_ZC_WARPLIST), SERVER_TYPE_MAP },
+ { "PACKET_ZC_WARPLIST_sub", sizeof(struct PACKET_ZC_WARPLIST_sub), SERVER_TYPE_MAP },
+ { "PACKET_ZC_WRITE_MAIL_RESULT", sizeof(struct PACKET_ZC_WRITE_MAIL_RESULT), SERVER_TYPE_MAP },
+ { "ZC_INVENTORY_END", sizeof(struct ZC_INVENTORY_END), SERVER_TYPE_MAP },
+ { "ZC_INVENTORY_START", sizeof(struct ZC_INVENTORY_START), SERVER_TYPE_MAP },
+ { "ZC_PROGRESS_ACTOR", sizeof(struct ZC_PROGRESS_ACTOR), SERVER_TYPE_MAP },
+ { "ZC_STORE_ITEMLIST_EQUIP", sizeof(struct ZC_STORE_ITEMLIST_EQUIP), SERVER_TYPE_MAP },
+ { "ZC_STORE_ITEMLIST_NORMAL", sizeof(struct ZC_STORE_ITEMLIST_NORMAL), SERVER_TYPE_MAP },
+ { "ach_list_info", sizeof(struct ach_list_info), SERVER_TYPE_MAP },
+ { "mail_item", sizeof(struct mail_item), SERVER_TYPE_MAP },
+ { "maillistinfo", sizeof(struct maillistinfo), SERVER_TYPE_MAP },
+ { "packet_ZC_REFUSE_LOGIN", sizeof(struct packet_ZC_REFUSE_LOGIN), SERVER_TYPE_MAP },
+ { "packet_achievement_list", sizeof(struct packet_achievement_list), SERVER_TYPE_MAP },
+ { "packet_achievement_reward_ack", sizeof(struct packet_achievement_reward_ack), SERVER_TYPE_MAP },
+ { "packet_achievement_update", sizeof(struct packet_achievement_update), SERVER_TYPE_MAP },
{ "packet_additem", sizeof(struct packet_additem), SERVER_TYPE_MAP },
{ "packet_authok", sizeof(struct packet_authok), SERVER_TYPE_MAP },
{ "packet_banking_check", sizeof(struct packet_banking_check), SERVER_TYPE_MAP },
@@ -578,13 +782,20 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
{ "packet_mission_info_sub", sizeof(struct packet_mission_info_sub), SERVER_TYPE_MAP },
{ "packet_monster_hp", sizeof(struct packet_monster_hp), SERVER_TYPE_MAP },
{ "packet_notify_bounditem", sizeof(struct packet_notify_bounditem), SERVER_TYPE_MAP },
- { "packet_npc_market_open", sizeof(struct packet_npc_market_open), SERVER_TYPE_MAP },
{ "packet_npc_market_purchase", sizeof(struct packet_npc_market_purchase), SERVER_TYPE_MAP },
{ "packet_npc_market_result_ack", sizeof(struct packet_npc_market_result_ack), SERVER_TYPE_MAP },
{ "packet_package_item_announce", sizeof(struct packet_package_item_announce), SERVER_TYPE_MAP },
{ "packet_party_leader_changed", sizeof(struct packet_party_leader_changed), SERVER_TYPE_MAP },
+ { "packet_quest_add_header", sizeof(struct packet_quest_add_header), SERVER_TYPE_MAP },
+ { "packet_quest_hunt_info", sizeof(struct packet_quest_hunt_info), SERVER_TYPE_MAP },
+ { "packet_quest_hunt_info_sub", sizeof(struct packet_quest_hunt_info_sub), SERVER_TYPE_MAP },
+ { "packet_quest_hunt_sub", sizeof(struct packet_quest_hunt_sub), SERVER_TYPE_MAP },
{ "packet_quest_list_header", sizeof(struct packet_quest_list_header), SERVER_TYPE_MAP },
{ "packet_quest_list_info", sizeof(struct packet_quest_list_info), SERVER_TYPE_MAP },
+ { "packet_quest_update_header", sizeof(struct packet_quest_update_header), SERVER_TYPE_MAP },
+ { "packet_quest_update_hunt", sizeof(struct packet_quest_update_hunt), SERVER_TYPE_MAP },
+ { "packet_reqname_ack", sizeof(struct packet_reqname_ack), SERVER_TYPE_MAP },
+ { "packet_reqnameall_ack", sizeof(struct packet_reqnameall_ack), SERVER_TYPE_MAP },
{ "packet_roulette_close_ack", sizeof(struct packet_roulette_close_ack), SERVER_TYPE_MAP },
{ "packet_roulette_generate_ack", sizeof(struct packet_roulette_generate_ack), SERVER_TYPE_MAP },
{ "packet_roulette_info_ack", sizeof(struct packet_roulette_info_ack), SERVER_TYPE_MAP },
@@ -599,13 +810,12 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
{ "packet_status_change", sizeof(struct packet_status_change), SERVER_TYPE_MAP },
{ "packet_status_change2", sizeof(struct packet_status_change2), SERVER_TYPE_MAP },
{ "packet_status_change_end", sizeof(struct packet_status_change_end), SERVER_TYPE_MAP },
- { "packet_storelist_equip", sizeof(struct packet_storelist_equip), SERVER_TYPE_MAP },
- { "packet_storelist_normal", sizeof(struct packet_storelist_normal), SERVER_TYPE_MAP },
{ "packet_unequipitem_ack", sizeof(struct packet_unequipitem_ack), SERVER_TYPE_MAP },
{ "packet_unit_walking", sizeof(struct packet_unit_walking), SERVER_TYPE_MAP },
{ "packet_viewequip_ack", sizeof(struct packet_viewequip_ack), SERVER_TYPE_MAP },
{ "packet_whisper_message", sizeof(struct packet_whisper_message), SERVER_TYPE_MAP },
{ "packet_wis_end", sizeof(struct packet_wis_end), SERVER_TYPE_MAP },
+ { "pet_evolution_items", sizeof(struct pet_evolution_items), SERVER_TYPE_MAP },
#else
#define MAP_PACKETS_STRUCT_H
#endif // MAP_PACKETS_STRUCT_H
@@ -635,6 +845,8 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
#endif // MAP_PC_GROUPS_H
#ifdef MAP_PC_H
{ "autotrade_vending", sizeof(struct autotrade_vending), SERVER_TYPE_MAP },
+ { "class_exp_group", sizeof(struct class_exp_group), SERVER_TYPE_MAP },
+ { "class_exp_tables", sizeof(struct class_exp_tables), SERVER_TYPE_MAP },
{ "item_cd", sizeof(struct item_cd), SERVER_TYPE_MAP },
{ "map_session_data", sizeof(struct map_session_data), SERVER_TYPE_MAP },
{ "pc_combos", sizeof(struct pc_combos), SERVER_TYPE_MAP },
@@ -654,6 +866,7 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
#ifdef MAP_PET_H
{ "pet_bonus", sizeof(struct pet_bonus), SERVER_TYPE_MAP },
{ "pet_data", sizeof(struct pet_data), SERVER_TYPE_MAP },
+ { "pet_evolve_data", sizeof(struct pet_evolve_data), SERVER_TYPE_MAP },
{ "pet_interface", sizeof(struct pet_interface), SERVER_TYPE_MAP },
{ "pet_loot", sizeof(struct pet_loot), SERVER_TYPE_MAP },
{ "pet_recovery", sizeof(struct pet_recovery), SERVER_TYPE_MAP },
@@ -671,6 +884,11 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
#else
#define MAP_QUEST_H
#endif // MAP_QUEST_H
+ #ifdef MAP_RODEX_H
+ { "rodex_interface", sizeof(struct rodex_interface), SERVER_TYPE_MAP },
+ #else
+ #define MAP_RODEX_H
+ #endif // MAP_RODEX_H
#ifdef MAP_SCRIPT_H
{ "Script_Config", sizeof(struct Script_Config), SERVER_TYPE_MAP },
{ "casecheck_data", sizeof(struct casecheck_data), SERVER_TYPE_MAP },
diff --git a/src/common/HPMSymbols.inc.h b/src/common/HPMSymbols.inc.h
index d4a103b88..6b02b005a 100644
--- a/src/common/HPMSymbols.inc.h
+++ b/src/common/HPMSymbols.inc.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2017 Hercules Dev Team
+ * Copyright (C) 2013-2019 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -29,6 +29,12 @@
#ifdef COMMON_UTILS_H /* HCache */
struct HCache_interface *HCache;
#endif // COMMON_UTILS_H
+#ifdef LOGIN_ACCOUNT_H /* account */
+struct account_interface *account;
+#endif // LOGIN_ACCOUNT_H
+#ifdef MAP_ACHIEVEMENT_H /* achievement */
+struct achievement_interface *achievement;
+#endif // MAP_ACHIEVEMENT_H
#ifdef MAP_ATCOMMAND_H /* atcommand */
struct atcommand_interface *atcommand;
#endif // MAP_ATCOMMAND_H
@@ -53,6 +59,9 @@ struct chat_interface *chat;
#ifdef MAP_CHRIF_H /* chrif */
struct chrif_interface *chrif;
#endif // MAP_CHRIF_H
+#ifdef MAP_CLAN_H /* clan */
+struct clan_interface *clan;
+#endif // MAP_CLAN_H
#ifdef MAP_CLIF_H /* clif */
struct clif_interface *clif;
#endif // MAP_CLIF_H
@@ -95,9 +104,15 @@ struct homunculus_interface *homun;
#ifdef MAP_INSTANCE_H /* instance */
struct instance_interface *instance;
#endif // MAP_INSTANCE_H
+#ifdef CHAR_INT_ACHIEVEMENT_H /* inter_achievement */
+struct inter_achievement_interface *inter_achievement;
+#endif // CHAR_INT_ACHIEVEMENT_H
#ifdef CHAR_INT_AUCTION_H /* inter_auction */
struct inter_auction_interface *inter_auction;
#endif // CHAR_INT_AUCTION_H
+#ifdef CHAR_INT_CLAN_H /* inter_clan */
+struct inter_clan_interface *inter_clan;
+#endif // CHAR_INT_CLAN_H
#ifdef CHAR_INT_ELEMENTAL_H /* inter_elemental */
struct inter_elemental_interface *inter_elemental;
#endif // CHAR_INT_ELEMENTAL_H
@@ -125,18 +140,27 @@ struct inter_pet_interface *inter_pet;
#ifdef CHAR_INT_QUEST_H /* inter_quest */
struct inter_quest_interface *inter_quest;
#endif // CHAR_INT_QUEST_H
+#ifdef CHAR_INT_RODEX_H /* inter_rodex */
+struct inter_rodex_interface *inter_rodex;
+#endif // CHAR_INT_RODEX_H
#ifdef CHAR_INT_STORAGE_H /* inter_storage */
struct inter_storage_interface *inter_storage;
#endif // CHAR_INT_STORAGE_H
#ifdef MAP_INTIF_H /* intif */
struct intif_interface *intif;
#endif // MAP_INTIF_H
+#ifdef LOGIN_IPBAN_H /* ipban */
+struct ipban_interface *ipban;
+#endif // LOGIN_IPBAN_H
#ifdef MAP_IRC_BOT_H /* ircbot */
struct irc_bot_interface *ircbot;
#endif // MAP_IRC_BOT_H
#ifdef MAP_ITEMDB_H /* itemdb */
struct itemdb_interface *itemdb;
#endif // MAP_ITEMDB_H
+#ifdef LOGIN_LOGIN_H /* lchrif */
+struct lchrif_interface *lchrif;
+#endif // LOGIN_LOGIN_H
#ifdef LOGIN_LCLIF_H /* lclif */
struct lclif_interface *lclif;
#endif // LOGIN_LCLIF_H
@@ -152,6 +176,9 @@ struct login_interface *login;
#ifdef CHAR_LOGINIF_H /* loginif */
struct loginif_interface *loginif;
#endif // CHAR_LOGINIF_H
+#ifdef LOGIN_LOGINLOG_H /* loginlog */
+struct loginlog_interface *loginlog;
+#endif // LOGIN_LOGINLOG_H
#ifdef MAP_MAIL_H /* mail */
struct mail_interface *mail;
#endif // MAP_MAIL_H
@@ -191,6 +218,9 @@ struct npc_interface *npc;
#ifdef COMMON_NULLPO_H /* nullpo */
struct nullpo_interface *nullpo;
#endif // COMMON_NULLPO_H
+#ifdef COMMON_PACKETS_H /* packets */
+struct packets_interface *packets;
+#endif // COMMON_PACKETS_H
#ifdef MAP_PARTY_H /* party */
struct party_interface *party;
#endif // MAP_PARTY_H
@@ -218,6 +248,9 @@ struct quest_interface *quest;
#ifdef COMMON_RANDOM_H /* rnd */
struct rnd_interface *rnd;
#endif // COMMON_RANDOM_H
+#ifdef MAP_RODEX_H /* rodex */
+struct rodex_interface *rodex;
+#endif // MAP_RODEX_H
#ifdef MAP_SCRIPT_H /* script */
struct script_interface *script;
#endif // MAP_SCRIPT_H
@@ -274,247 +307,372 @@ struct vending_interface *vending;
HPExport const char *HPM_shared_symbols(int server_type)
{
#ifdef COMMON_UTILS_H /* HCache */
-if ((server_type&(SERVER_TYPE_ALL)) && !HPM_SYMBOL("HCache", HCache)) return "HCache";
+ if ((server_type&(SERVER_TYPE_ALL)) != 0 && !HPM_SYMBOL("HCache", HCache))
+ return "HCache";
#endif // COMMON_UTILS_H
+#ifdef LOGIN_ACCOUNT_H /* account */
+ if ((server_type&(SERVER_TYPE_LOGIN)) != 0 && !HPM_SYMBOL("account", account))
+ return "account";
+#endif // LOGIN_ACCOUNT_H
+#ifdef MAP_ACHIEVEMENT_H /* achievement */
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("achievement", achievement))
+ return "achievement";
+#endif // MAP_ACHIEVEMENT_H
#ifdef MAP_ATCOMMAND_H /* atcommand */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("atcommand", atcommand)) return "atcommand";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("atcommand", atcommand))
+ return "atcommand";
#endif // MAP_ATCOMMAND_H
#ifdef MAP_BATTLE_H /* battle */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("battle", battle)) return "battle";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("battle", battle))
+ return "battle";
#endif // MAP_BATTLE_H
#ifdef MAP_BATTLEGROUND_H /* bg */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("battlegrounds", bg)) return "battlegrounds";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("battlegrounds", bg))
+ return "battlegrounds";
#endif // MAP_BATTLEGROUND_H
#ifdef MAP_BUYINGSTORE_H /* buyingstore */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("buyingstore", buyingstore)) return "buyingstore";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("buyingstore", buyingstore))
+ return "buyingstore";
#endif // MAP_BUYINGSTORE_H
#ifdef MAP_CHANNEL_H /* channel */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("channel", channel)) return "channel";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("channel", channel))
+ return "channel";
#endif // MAP_CHANNEL_H
#ifdef CHAR_CHAR_H /* chr */
-if ((server_type&(SERVER_TYPE_CHAR)) && !HPM_SYMBOL("chr", chr)) return "chr";
+ if ((server_type&(SERVER_TYPE_CHAR)) != 0 && !HPM_SYMBOL("chr", chr))
+ return "chr";
#endif // CHAR_CHAR_H
#ifdef MAP_CHAT_H /* chat */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("chat", chat)) return "chat";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("chat", chat))
+ return "chat";
#endif // MAP_CHAT_H
#ifdef MAP_CHRIF_H /* chrif */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("chrif", chrif)) return "chrif";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("chrif", chrif))
+ return "chrif";
#endif // MAP_CHRIF_H
+#ifdef MAP_CLAN_H /* clan */
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("clan", clan))
+ return "clan";
+#endif // MAP_CLAN_H
#ifdef MAP_CLIF_H /* clif */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("clif", clif)) return "clif";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("clif", clif))
+ return "clif";
#endif // MAP_CLIF_H
#ifdef COMMON_CORE_H /* cmdline */
-if ((server_type&(SERVER_TYPE_ALL)) && !HPM_SYMBOL("cmdline", cmdline)) return "cmdline";
+ if ((server_type&(SERVER_TYPE_ALL)) != 0 && !HPM_SYMBOL("cmdline", cmdline))
+ return "cmdline";
#endif // COMMON_CORE_H
#ifdef COMMON_CONSOLE_H /* console */
-if ((server_type&(SERVER_TYPE_ALL)) && !HPM_SYMBOL("console", console)) return "console";
+ if ((server_type&(SERVER_TYPE_ALL)) != 0 && !HPM_SYMBOL("console", console))
+ return "console";
#endif // COMMON_CONSOLE_H
#ifdef COMMON_CORE_H /* core */
-if ((server_type&(SERVER_TYPE_ALL)) && !HPM_SYMBOL("core", core)) return "core";
+ if ((server_type&(SERVER_TYPE_ALL)) != 0 && !HPM_SYMBOL("core", core))
+ return "core";
#endif // COMMON_CORE_H
#ifdef COMMON_DB_H /* DB */
-if ((server_type&(SERVER_TYPE_ALL)) && !HPM_SYMBOL("DB", DB)) return "DB";
+ if ((server_type&(SERVER_TYPE_ALL)) != 0 && !HPM_SYMBOL("DB", DB))
+ return "DB";
#endif // COMMON_DB_H
#ifdef COMMON_DES_H /* des */
-if ((server_type&(SERVER_TYPE_ALL)) && !HPM_SYMBOL("des", des)) return "des";
+ if ((server_type&(SERVER_TYPE_ALL)) != 0 && !HPM_SYMBOL("des", des))
+ return "des";
#endif // COMMON_DES_H
#ifdef MAP_DUEL_H /* duel */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("duel", duel)) return "duel";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("duel", duel))
+ return "duel";
#endif // MAP_DUEL_H
#ifdef MAP_ELEMENTAL_H /* elemental */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("elemental", elemental)) return "elemental";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("elemental", elemental))
+ return "elemental";
#endif // MAP_ELEMENTAL_H
#ifdef CHAR_GEOIP_H /* geoip */
-if ((server_type&(SERVER_TYPE_CHAR)) && !HPM_SYMBOL("geoip", geoip)) return "geoip";
+ if ((server_type&(SERVER_TYPE_CHAR)) != 0 && !HPM_SYMBOL("geoip", geoip))
+ return "geoip";
#endif // CHAR_GEOIP_H
#ifdef COMMON_GRFIO_H /* grfio */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("grfio", grfio)) return "grfio";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("grfio", grfio))
+ return "grfio";
#endif // COMMON_GRFIO_H
#ifdef MAP_GUILD_H /* guild */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("guild", guild)) return "guild";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("guild", guild))
+ return "guild";
#endif // MAP_GUILD_H
#ifdef MAP_STORAGE_H /* gstorage */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("gstorage", gstorage)) return "gstorage";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("gstorage", gstorage))
+ return "gstorage";
#endif // MAP_STORAGE_H
#ifdef MAP_HOMUNCULUS_H /* homun */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("homun", homun)) return "homun";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("homun", homun))
+ return "homun";
#endif // MAP_HOMUNCULUS_H
#ifdef MAP_INSTANCE_H /* instance */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("instance", instance)) return "instance";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("instance", instance))
+ return "instance";
#endif // MAP_INSTANCE_H
+#ifdef CHAR_INT_ACHIEVEMENT_H /* inter_achievement */
+ if ((server_type&(SERVER_TYPE_CHAR)) != 0 && !HPM_SYMBOL("inter_achievement", inter_achievement))
+ return "inter_achievement";
+#endif // CHAR_INT_ACHIEVEMENT_H
#ifdef CHAR_INT_AUCTION_H /* inter_auction */
-if ((server_type&(SERVER_TYPE_CHAR)) && !HPM_SYMBOL("inter_auction", inter_auction)) return "inter_auction";
+ if ((server_type&(SERVER_TYPE_CHAR)) != 0 && !HPM_SYMBOL("inter_auction", inter_auction))
+ return "inter_auction";
#endif // CHAR_INT_AUCTION_H
+#ifdef CHAR_INT_CLAN_H /* inter_clan */
+ if ((server_type&(SERVER_TYPE_CHAR)) != 0 && !HPM_SYMBOL("inter_clan", inter_clan))
+ return "inter_clan";
+#endif // CHAR_INT_CLAN_H
#ifdef CHAR_INT_ELEMENTAL_H /* inter_elemental */
-if ((server_type&(SERVER_TYPE_CHAR)) && !HPM_SYMBOL("inter_elemental", inter_elemental)) return "inter_elemental";
+ if ((server_type&(SERVER_TYPE_CHAR)) != 0 && !HPM_SYMBOL("inter_elemental", inter_elemental))
+ return "inter_elemental";
#endif // CHAR_INT_ELEMENTAL_H
#ifdef CHAR_INT_GUILD_H /* inter_guild */
-if ((server_type&(SERVER_TYPE_CHAR)) && !HPM_SYMBOL("inter_guild", inter_guild)) return "inter_guild";
+ if ((server_type&(SERVER_TYPE_CHAR)) != 0 && !HPM_SYMBOL("inter_guild", inter_guild))
+ return "inter_guild";
#endif // CHAR_INT_GUILD_H
#ifdef CHAR_INT_HOMUN_H /* inter_homunculus */
-if ((server_type&(SERVER_TYPE_CHAR)) && !HPM_SYMBOL("inter_homunculus", inter_homunculus)) return "inter_homunculus";
+ if ((server_type&(SERVER_TYPE_CHAR)) != 0 && !HPM_SYMBOL("inter_homunculus", inter_homunculus))
+ return "inter_homunculus";
#endif // CHAR_INT_HOMUN_H
#ifdef CHAR_INTER_H /* inter */
-if ((server_type&(SERVER_TYPE_CHAR)) && !HPM_SYMBOL("inter", inter)) return "inter";
+ if ((server_type&(SERVER_TYPE_CHAR)) != 0 && !HPM_SYMBOL("inter", inter))
+ return "inter";
#endif // CHAR_INTER_H
#ifdef CHAR_INT_MAIL_H /* inter_mail */
-if ((server_type&(SERVER_TYPE_CHAR)) && !HPM_SYMBOL("inter_mail", inter_mail)) return "inter_mail";
+ if ((server_type&(SERVER_TYPE_CHAR)) != 0 && !HPM_SYMBOL("inter_mail", inter_mail))
+ return "inter_mail";
#endif // CHAR_INT_MAIL_H
#ifdef CHAR_INT_MERCENARY_H /* inter_mercenary */
-if ((server_type&(SERVER_TYPE_CHAR)) && !HPM_SYMBOL("inter_mercenary", inter_mercenary)) return "inter_mercenary";
+ if ((server_type&(SERVER_TYPE_CHAR)) != 0 && !HPM_SYMBOL("inter_mercenary", inter_mercenary))
+ return "inter_mercenary";
#endif // CHAR_INT_MERCENARY_H
#ifdef CHAR_INT_PARTY_H /* inter_party */
-if ((server_type&(SERVER_TYPE_CHAR)) && !HPM_SYMBOL("inter_party", inter_party)) return "inter_party";
+ if ((server_type&(SERVER_TYPE_CHAR)) != 0 && !HPM_SYMBOL("inter_party", inter_party))
+ return "inter_party";
#endif // CHAR_INT_PARTY_H
#ifdef CHAR_INT_PET_H /* inter_pet */
-if ((server_type&(SERVER_TYPE_CHAR)) && !HPM_SYMBOL("inter_pet", inter_pet)) return "inter_pet";
+ if ((server_type&(SERVER_TYPE_CHAR)) != 0 && !HPM_SYMBOL("inter_pet", inter_pet))
+ return "inter_pet";
#endif // CHAR_INT_PET_H
#ifdef CHAR_INT_QUEST_H /* inter_quest */
-if ((server_type&(SERVER_TYPE_CHAR)) && !HPM_SYMBOL("inter_quest", inter_quest)) return "inter_quest";
+ if ((server_type&(SERVER_TYPE_CHAR)) != 0 && !HPM_SYMBOL("inter_quest", inter_quest))
+ return "inter_quest";
#endif // CHAR_INT_QUEST_H
+#ifdef CHAR_INT_RODEX_H /* inter_rodex */
+ if ((server_type&(SERVER_TYPE_CHAR)) != 0 && !HPM_SYMBOL("inter_rodex", inter_rodex))
+ return "inter_rodex";
+#endif // CHAR_INT_RODEX_H
#ifdef CHAR_INT_STORAGE_H /* inter_storage */
-if ((server_type&(SERVER_TYPE_CHAR)) && !HPM_SYMBOL("inter_storage", inter_storage)) return "inter_storage";
+ if ((server_type&(SERVER_TYPE_CHAR)) != 0 && !HPM_SYMBOL("inter_storage", inter_storage))
+ return "inter_storage";
#endif // CHAR_INT_STORAGE_H
#ifdef MAP_INTIF_H /* intif */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("intif", intif)) return "intif";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("intif", intif))
+ return "intif";
#endif // MAP_INTIF_H
+#ifdef LOGIN_IPBAN_H /* ipban */
+ if ((server_type&(SERVER_TYPE_LOGIN)) != 0 && !HPM_SYMBOL("ipban", ipban))
+ return "ipban";
+#endif // LOGIN_IPBAN_H
#ifdef MAP_IRC_BOT_H /* ircbot */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("ircbot", ircbot)) return "ircbot";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("ircbot", ircbot))
+ return "ircbot";
#endif // MAP_IRC_BOT_H
#ifdef MAP_ITEMDB_H /* itemdb */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("itemdb", itemdb)) return "itemdb";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("itemdb", itemdb))
+ return "itemdb";
#endif // MAP_ITEMDB_H
+#ifdef LOGIN_LOGIN_H /* lchrif */
+ if ((server_type&(SERVER_TYPE_LOGIN)) != 0 && !HPM_SYMBOL("lchrif", lchrif))
+ return "lchrif";
+#endif // LOGIN_LOGIN_H
#ifdef LOGIN_LCLIF_H /* lclif */
-if ((server_type&(SERVER_TYPE_LOGIN)) && !HPM_SYMBOL("lclif", lclif)) return "lclif";
+ if ((server_type&(SERVER_TYPE_LOGIN)) != 0 && !HPM_SYMBOL("lclif", lclif))
+ return "lclif";
#endif // LOGIN_LCLIF_H
#ifdef COMMON_CONF_H /* libconfig */
-if ((server_type&(SERVER_TYPE_ALL)) && !HPM_SYMBOL("libconfig", libconfig)) return "libconfig";
+ if ((server_type&(SERVER_TYPE_ALL)) != 0 && !HPM_SYMBOL("libconfig", libconfig))
+ return "libconfig";
#endif // COMMON_CONF_H
#ifdef MAP_LOG_H /* logs */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("logs", logs)) return "logs";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("logs", logs))
+ return "logs";
#endif // MAP_LOG_H
#ifdef LOGIN_LOGIN_H /* login */
-if ((server_type&(SERVER_TYPE_LOGIN)) && !HPM_SYMBOL("login", login)) return "login";
+ if ((server_type&(SERVER_TYPE_LOGIN)) != 0 && !HPM_SYMBOL("login", login))
+ return "login";
#endif // LOGIN_LOGIN_H
#ifdef CHAR_LOGINIF_H /* loginif */
-if ((server_type&(SERVER_TYPE_CHAR)) && !HPM_SYMBOL("loginif", loginif)) return "loginif";
+ if ((server_type&(SERVER_TYPE_CHAR)) != 0 && !HPM_SYMBOL("loginif", loginif))
+ return "loginif";
#endif // CHAR_LOGINIF_H
+#ifdef LOGIN_LOGINLOG_H /* loginlog */
+ if ((server_type&(SERVER_TYPE_LOGIN)) != 0 && !HPM_SYMBOL("loginlog", loginlog))
+ return "loginlog";
+#endif // LOGIN_LOGINLOG_H
#ifdef MAP_MAIL_H /* mail */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("mail", mail)) return "mail";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("mail", mail))
+ return "mail";
#endif // MAP_MAIL_H
#ifdef MAP_MAP_H /* map */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("map", map)) return "map";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("map", map))
+ return "map";
#endif // MAP_MAP_H
#ifdef CHAR_MAPIF_H /* mapif */
-if ((server_type&(SERVER_TYPE_CHAR)) && !HPM_SYMBOL("mapif", mapif)) return "mapif";
+ if ((server_type&(SERVER_TYPE_CHAR)) != 0 && !HPM_SYMBOL("mapif", mapif))
+ return "mapif";
#endif // CHAR_MAPIF_H
#ifdef COMMON_MAPINDEX_H /* mapindex */
-if ((server_type&(SERVER_TYPE_MAP|SERVER_TYPE_CHAR)) && !HPM_SYMBOL("mapindex", mapindex)) return "mapindex";
+ if ((server_type&(SERVER_TYPE_MAP|SERVER_TYPE_CHAR)) != 0 && !HPM_SYMBOL("mapindex", mapindex))
+ return "mapindex";
#endif // COMMON_MAPINDEX_H
#ifdef MAP_MAP_H /* mapit */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("mapit", mapit)) return "mapit";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("mapit", mapit))
+ return "mapit";
#endif // MAP_MAP_H
#ifdef MAP_MAPREG_H /* mapreg */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("mapreg", mapreg)) return "mapreg";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("mapreg", mapreg))
+ return "mapreg";
#endif // MAP_MAPREG_H
#ifdef COMMON_MD5CALC_H /* md5 */
-if ((server_type&(SERVER_TYPE_ALL)) && !HPM_SYMBOL("md5", md5)) return "md5";
+ if ((server_type&(SERVER_TYPE_ALL)) != 0 && !HPM_SYMBOL("md5", md5))
+ return "md5";
#endif // COMMON_MD5CALC_H
#ifdef MAP_MERCENARY_H /* mercenary */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("mercenary", mercenary)) return "mercenary";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("mercenary", mercenary))
+ return "mercenary";
#endif // MAP_MERCENARY_H
#ifdef MAP_MOB_H /* mob */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("mob", mob)) return "mob";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("mob", mob))
+ return "mob";
#endif // MAP_MOB_H
#ifdef COMMON_MUTEX_H /* mutex */
-if ((server_type&(SERVER_TYPE_ALL)) && !HPM_SYMBOL("mutex", mutex)) return "mutex";
+ if ((server_type&(SERVER_TYPE_ALL)) != 0 && !HPM_SYMBOL("mutex", mutex))
+ return "mutex";
#endif // COMMON_MUTEX_H
#ifdef MAP_NPC_H /* npc_chat */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("npc_chat", npc_chat)) return "npc_chat";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("npc_chat", npc_chat))
+ return "npc_chat";
#endif // MAP_NPC_H
#ifdef MAP_NPC_H /* npc */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("npc", npc)) return "npc";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("npc", npc))
+ return "npc";
#endif // MAP_NPC_H
#ifdef COMMON_NULLPO_H /* nullpo */
-if ((server_type&(SERVER_TYPE_ALL)) && !HPM_SYMBOL("nullpo", nullpo)) return "nullpo";
+ if ((server_type&(SERVER_TYPE_ALL)) != 0 && !HPM_SYMBOL("nullpo", nullpo))
+ return "nullpo";
#endif // COMMON_NULLPO_H
+#ifdef COMMON_PACKETS_H /* packets */
+ if ((server_type&(SERVER_TYPE_ALL)) != 0 && !HPM_SYMBOL("packets", packets))
+ return "packets";
+#endif // COMMON_PACKETS_H
#ifdef MAP_PARTY_H /* party */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("party", party)) return "party";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("party", party))
+ return "party";
#endif // MAP_PARTY_H
#ifdef MAP_PATH_H /* path */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("path", path)) return "path";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("path", path))
+ return "path";
#endif // MAP_PATH_H
#ifdef MAP_PC_GROUPS_H /* pcg */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("pc_groups", pcg)) return "pc_groups";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("pc_groups", pcg))
+ return "pc_groups";
#endif // MAP_PC_GROUPS_H
#ifdef MAP_PC_H /* pc */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("pc", pc)) return "pc";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("pc", pc))
+ return "pc";
#endif // MAP_PC_H
#ifdef MAP_NPC_H /* libpcre */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("libpcre", libpcre)) return "libpcre";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("libpcre", libpcre))
+ return "libpcre";
#endif // MAP_NPC_H
#ifdef MAP_PET_H /* pet */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("pet", pet)) return "pet";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("pet", pet))
+ return "pet";
#endif // MAP_PET_H
#ifdef CHAR_PINCODE_H /* pincode */
-if ((server_type&(SERVER_TYPE_CHAR)) && !HPM_SYMBOL("pincode", pincode)) return "pincode";
+ if ((server_type&(SERVER_TYPE_CHAR)) != 0 && !HPM_SYMBOL("pincode", pincode))
+ return "pincode";
#endif // CHAR_PINCODE_H
#ifdef MAP_QUEST_H /* quest */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("quest", quest)) return "quest";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("quest", quest))
+ return "quest";
#endif // MAP_QUEST_H
#ifdef COMMON_RANDOM_H /* rnd */
-if ((server_type&(SERVER_TYPE_ALL)) && !HPM_SYMBOL("rnd", rnd)) return "rnd";
+ if ((server_type&(SERVER_TYPE_ALL)) != 0 && !HPM_SYMBOL("rnd", rnd))
+ return "rnd";
#endif // COMMON_RANDOM_H
+#ifdef MAP_RODEX_H /* rodex */
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("rodex", rodex))
+ return "rodex";
+#endif // MAP_RODEX_H
#ifdef MAP_SCRIPT_H /* script */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("script", script)) return "script";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("script", script))
+ return "script";
#endif // MAP_SCRIPT_H
#ifdef MAP_SEARCHSTORE_H /* searchstore */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("searchstore", searchstore)) return "searchstore";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("searchstore", searchstore))
+ return "searchstore";
#endif // MAP_SEARCHSTORE_H
#ifdef COMMON_SHOWMSG_H /* showmsg */
-if ((server_type&(SERVER_TYPE_ALL)) && !HPM_SYMBOL("showmsg", showmsg)) return "showmsg";
+ if ((server_type&(SERVER_TYPE_ALL)) != 0 && !HPM_SYMBOL("showmsg", showmsg))
+ return "showmsg";
#endif // COMMON_SHOWMSG_H
#ifdef MAP_SKILL_H /* skill */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("skill", skill)) return "skill";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("skill", skill))
+ return "skill";
#endif // MAP_SKILL_H
#ifdef COMMON_SOCKET_H /* sockt */
-if ((server_type&(SERVER_TYPE_ALL)) && !HPM_SYMBOL("sockt", sockt)) return "sockt";
+ if ((server_type&(SERVER_TYPE_ALL)) != 0 && !HPM_SYMBOL("sockt", sockt))
+ return "sockt";
#endif // COMMON_SOCKET_H
#ifdef COMMON_SQL_H /* SQL */
-if ((server_type&(SERVER_TYPE_ALL)) && !HPM_SYMBOL("SQL", SQL)) return "SQL";
+ if ((server_type&(SERVER_TYPE_ALL)) != 0 && !HPM_SYMBOL("SQL", SQL))
+ return "SQL";
#endif // COMMON_SQL_H
#ifdef MAP_STATUS_H /* status */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("status", status)) return "status";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("status", status))
+ return "status";
#endif // MAP_STATUS_H
#ifdef MAP_STORAGE_H /* storage */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("storage", storage)) return "storage";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("storage", storage))
+ return "storage";
#endif // MAP_STORAGE_H
#ifdef COMMON_STRLIB_H /* StrBuf */
-if ((server_type&(SERVER_TYPE_ALL)) && !HPM_SYMBOL("StrBuf", StrBuf)) return "StrBuf";
+ if ((server_type&(SERVER_TYPE_ALL)) != 0 && !HPM_SYMBOL("StrBuf", StrBuf))
+ return "StrBuf";
#endif // COMMON_STRLIB_H
#ifdef COMMON_STRLIB_H /* strlib */
-if ((server_type&(SERVER_TYPE_ALL)) && !HPM_SYMBOL("strlib", strlib)) return "strlib";
+ if ((server_type&(SERVER_TYPE_ALL)) != 0 && !HPM_SYMBOL("strlib", strlib))
+ return "strlib";
#endif // COMMON_STRLIB_H
#ifdef COMMON_STRLIB_H /* sv */
-if ((server_type&(SERVER_TYPE_ALL)) && !HPM_SYMBOL("sv", sv)) return "sv";
+ if ((server_type&(SERVER_TYPE_ALL)) != 0 && !HPM_SYMBOL("sv", sv))
+ return "sv";
#endif // COMMON_STRLIB_H
#ifdef COMMON_SYSINFO_H /* sysinfo */
-if ((server_type&(SERVER_TYPE_ALL)) && !HPM_SYMBOL("sysinfo", sysinfo)) return "sysinfo";
+ if ((server_type&(SERVER_TYPE_ALL)) != 0 && !HPM_SYMBOL("sysinfo", sysinfo))
+ return "sysinfo";
#endif // COMMON_SYSINFO_H
#ifdef COMMON_THREAD_H /* thread */
-if ((server_type&(SERVER_TYPE_ALL)) && !HPM_SYMBOL("thread", thread)) return "thread";
+ if ((server_type&(SERVER_TYPE_ALL)) != 0 && !HPM_SYMBOL("thread", thread))
+ return "thread";
#endif // COMMON_THREAD_H
#ifdef COMMON_TIMER_H /* timer */
-if ((server_type&(SERVER_TYPE_ALL)) && !HPM_SYMBOL("timer", timer)) return "timer";
+ if ((server_type&(SERVER_TYPE_ALL)) != 0 && !HPM_SYMBOL("timer", timer))
+ return "timer";
#endif // COMMON_TIMER_H
#ifdef MAP_TRADE_H /* trade */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("trade", trade)) return "trade";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("trade", trade))
+ return "trade";
#endif // MAP_TRADE_H
#ifdef MAP_UNIT_H /* unit */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("unit", unit)) return "unit";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("unit", unit))
+ return "unit";
#endif // MAP_UNIT_H
#ifdef MAP_VENDING_H /* vending */
-if ((server_type&(SERVER_TYPE_MAP)) && !HPM_SYMBOL("vending", vending)) return "vending";
+ if ((server_type&(SERVER_TYPE_MAP)) != 0 && !HPM_SYMBOL("vending", vending))
+ return "vending";
#endif // MAP_VENDING_H
return NULL;
}
diff --git a/src/common/HPMi.h b/src/common/HPMi.h
index 143c325c1..7698d3ca7 100644
--- a/src/common/HPMi.h
+++ b/src/common/HPMi.h
@@ -89,6 +89,7 @@ enum HPluginDataTypes {
HPDT_ITEMDATA, ///< For struct item_data.
HPDT_BGDATA, ///< For struct battleground_data.
HPDT_AUTOTRADE_VEND, ///< For struct autotrade_vending.
+ HPDT_CLAN, ///< For struct clan.
};
/* used in macros and conf storage */
@@ -153,6 +154,10 @@ enum HPluginConfType {
#define addToATVEND(ptr,data,classid,autofree) (HPMi->addToHPData(HPDT_AUTOTRADE_VEND,HPMi->pid,&(ptr)->hdata,(data),(classid),(autofree)))
#define getFromATVEND(ptr,classid) (HPMi->getFromHPData(HPDT_AUTOTRADE_VEND,HPMi->pid,(ptr)->hdata,(classid)))
#define removeFromATVEND(ptr,classid) (HPMi->removeFromHPData(HPDT_AUTOTRADE_VEND,HPMi->pid,(ptr)->hdata,(classid)))
+/* clan */
+#define addtoCLAN(ptr,data,classid,autofree) (HPMi->addToHPData(HPDT_CLAN,HPMi->pid,&(ptr)->hdata,(data),(classid),(autofree)))
+#define getfromCLAN(ptr,classid) (HPMi->getFromHPData(HPDT_CLAN,HPMi->pid,(ptr)->hdata,(classid)))
+#define removefromCLAN(ptr,classid) (HPMi->removeFromHPData(HPDT_CLAN,HPMi->pid,(ptr)->hdata,(classid)))
/// HPMi->addCommand
#define addAtcommand(cname,funcname) do { \
diff --git a/src/common/Makefile.in b/src/common/Makefile.in
index 6e7ffa088..708780595 100644
--- a/src/common/Makefile.in
+++ b/src/common/Makefile.in
@@ -1,7 +1,7 @@
# This file is part of Hercules.
# http://herc.ws - http://github.com/HerculesWS/Hercules
#
-# Copyright (C) 2012-2016 Hercules Dev Team
+# Copyright (C) 2012-2018 Hercules Dev Team
# Copyright (C) Athena Dev Teams
#
# Hercules is free software: you can redistribute it and/or modify
@@ -38,20 +38,18 @@ MT19937AR_OBJ = $(MT19937AR_D)/mt19937ar.o
MT19937AR_H = $(MT19937AR_D)/mt19937ar.h
COMMON_SHARED_C = conf.c db.c des.c ers.c grfio.c HPM.c mapindex.c md5calc.c \
- mutex.c nullpo.c random.c showmsg.c strlib.c sysinfo.c \
- thread.c timer.c utils.c
+ mutex.c nullpo.c packets.c random.c showmsg.c strlib.c \
+ sysinfo.c thread.c timer.c utils.c
COMMON_C = $(COMMON_SHARED_C)
COMMON_SHARED_OBJ = $(patsubst %.c,%.o,$(COMMON_SHARED_C))
COMMON_OBJ = $(addprefix obj_all/, $(COMMON_SHARED_OBJ) \
console.o core.o memmgr.o socket.o)
-COMMON_MINI_OBJ = $(addprefix obj_all/, $(COMMON_SHARED_OBJ) \
- miniconsole.o minicore.o minimemmgr.o minisocket.o)
COMMON_C += console.c core.c memmgr.c socket.c
COMMON_H = atomic.h cbasetypes.h conf.h console.h core.h db.h des.h ers.h \
grfio.h hercules.h HPM.h HPMi.h memmgr.h mapindex.h md5calc.h \
- mmo.h mutex.h nullpo.h random.h showmsg.h socket.h spinlock.h \
- sql.h strlib.h sysinfo.h thread.h timer.h utils.h winapi.h \
- ../plugins/HPMHooking.h
+ mmo.h mutex.h nullpo.h packets.h packets_len.h random.h showmsg.h \
+ socket.h spinlock.h sql.h strlib.h sysinfo.h thread.h timer.h \
+ utils.h winapi.h ../plugins/HPMHooking.h
COMMON_PH =
COMMON_SQL_OBJ = obj_sql/sql.o
@@ -61,7 +59,7 @@ SYSINFO_INC = sysinfo.inc
HAVE_MYSQL=@HAVE_MYSQL@
ifeq ($(HAVE_MYSQL),yes)
- SQL_DEPENDS=common common_sql common_mini
+ SQL_DEPENDS=common common_sql
else
SQL_DEPENDS=needs_mysql
endif
@@ -72,7 +70,7 @@ CC = @CC@
export CC
#####################################################################
-.PHONY: all sql common common_sql common_mini clean buildclean help
+.PHONY: all sql common common_sql clean buildclean help
all: sql
@@ -119,18 +117,12 @@ obj_all/common.a: $(COMMON_OBJ) Makefile
@echo " AR $@"
@@AR@ rcs obj_all/common.a $(COMMON_OBJ)
-obj_all/common_mini.a: $(COMMON_MINI_OBJ) Makefile
- @echo " AR $@"
- @@AR@ rcs obj_all/common_mini.a $(COMMON_MINI_OBJ)
-
obj_sql/common_sql.a: $(COMMON_SQL_OBJ) Makefile
@echo " AR $@"
@@AR@ rcs obj_sql/common_sql.a $(COMMON_SQL_OBJ)
common: $(COMMON_OBJ) $(MT19937AR_OBJ) $(LIBCONFIG_OBJ) obj_all/common.a Makefile
-common_mini: $(COMMON_MINI_OBJ) $(MT19937AR_OBJ) $(LIBCONFIG_OBJ) obj_all/common_mini.a Makefile
-
common_sql: $(COMMON_SQL_OBJ) obj_sql/common_sql.a Makefile
# missing object files
@@ -150,10 +142,6 @@ obj_all/%.o: %.c $(COMMON_H) $(CONFIG_H) $(MT19937AR_H) $(LIBCONFIG_H) | $(SYSIN
@echo " CC $<"
@$(CC) @CFLAGS@ @DEFS@ $(COMMON_INCLUDE) $(THIRDPARTY_INCLUDE) @CPPFLAGS@ -c $(OUTPUT_OPTION) $<
-obj_all/mini%.o: %.c $$(filter %.p.h, $(COMMON_PH)) $(COMMON_H) $(CONFIG_H) $(MT19937AR_H) $(LIBCONFIG_H) | $(SYSINFO_INC) obj_all
- @echo " CC $<"
- @$(CC) @CFLAGS@ @DEFS@ $(COMMON_INCLUDE) $(THIRDPARTY_INCLUDE) -DMINICORE @CPPFLAGS@ -c $(OUTPUT_OPTION) $<
-
obj_sql/%.o: %.c $$(filter %.p.h, $(COMMON_PH)) $(COMMON_H) $(COMMON_SQL_H) $(CONFIG_H) $(LIBCONFIG_H) | $(SYSINFO_INC) obj_sql
@echo " CC $<"
@$(CC) @CFLAGS@ @DEFS@ $(COMMON_INCLUDE) $(THIRDPARTY_INCLUDE) @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $<
diff --git a/src/common/atomic.h b/src/common/atomic.h
index b370052a9..fdff6e6ab 100644
--- a/src/common/atomic.h
+++ b/src/common/atomic.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) rAthena Project (www.rathena.org)
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/common/cbasetypes.h b/src/common/cbasetypes.h
index 2c36c23bc..89f7f8588 100644
--- a/src/common/cbasetypes.h
+++ b/src/common/cbasetypes.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -306,6 +306,13 @@ typedef uintptr_t uintptr;
#define PRAGMA_GCC46(str)
#endif // ! defined(__GNUC__) && (defined(__clang__) || GCC_VERSION >= 40600)
+// Pragma macro only enabled on gcc >= 5 or clang - borrowed from Mana Plus
+#if defined(__GNUC__) && (GCC_VERSION >= 50000)
+#define PRAGMA_GCC5(str) _Pragma(#str)
+#else // ! defined(__GNUC__) && (GCC_VERSION >= 50000)
+#define PRAGMA_GCC5(str)
+#endif // ! defined(__GNUC__) && (GCC_VERSION >= 50000)
+
// fallthrough attribute only enabled on gcc >= 7.0
#if defined(__GNUC__) && (GCC_VERSION >= 70000)
#define FALLTHROUGH __attribute__ ((fallthrough));
@@ -453,12 +460,6 @@ typedef char bool;
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
// C11 version
#define STATIC_ASSERT(ex, msg) _Static_assert(ex, msg)
-#elif __has_feature(c_static_assert)
-// Clang support (as per http://clang.llvm.org/docs/LanguageExtensions.html)
-#define STATIC_ASSERT(ex, msg) _Static_assert(ex, msg)
-#elif defined(__GNUC__) && GCC_VERSION >= 40700
-// GCC >= 4.7 is known to support it
-#define STATIC_ASSERT(ex, msg) _Static_assert(ex, msg)
#elif defined(_MSC_VER)
// MSVC doesn't support it, but it accepts the C++ style version
#define STATIC_ASSERT(ex, msg) static_assert(ex, msg)
diff --git a/src/common/conf.c b/src/common/conf.c
index 96b9bff9f..0ad350057 100644
--- a/src/common/conf.c
+++ b/src/common/conf.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -29,7 +29,7 @@
#include <libconfig/libconfig.h>
/* interface source */
-struct libconfig_interface libconfig_s;
+static struct libconfig_interface libconfig_s;
struct libconfig_interface *libconfig;
/**
@@ -44,7 +44,7 @@ struct libconfig_interface *libconfig;
* @retval CONFIG_TRUE in case of success.
* @retval CONFIG_FALSE in case of failure.
*/
-int config_load_file(struct config_t *config, const char *config_filename)
+static int config_load_file(struct config_t *config, const char *config_filename)
{
libconfig->init(config);
if (!exists(config_filename)) {
@@ -63,7 +63,7 @@ int config_load_file(struct config_t *config, const char *config_filename)
//
// Functions to copy settings from libconfig/contrib
//
-void config_setting_copy_simple(struct config_setting_t *parent, const struct config_setting_t *src)
+static void config_setting_copy_simple(struct config_setting_t *parent, const struct config_setting_t *src)
{
if (config_setting_is_aggregate(src)) {
libconfig->setting_copy_aggregate(parent, src);
@@ -92,7 +92,7 @@ void config_setting_copy_simple(struct config_setting_t *parent, const struct co
}
}
-void config_setting_copy_elem(struct config_setting_t *parent, const struct config_setting_t *src)
+static void config_setting_copy_elem(struct config_setting_t *parent, const struct config_setting_t *src)
{
struct config_setting_t *set = NULL;
@@ -113,7 +113,7 @@ void config_setting_copy_elem(struct config_setting_t *parent, const struct conf
}
}
-void config_setting_copy_aggregate(struct config_setting_t *parent, const struct config_setting_t *src)
+static void config_setting_copy_aggregate(struct config_setting_t *parent, const struct config_setting_t *src)
{
struct config_setting_t *newAgg;
int i, n;
@@ -137,7 +137,7 @@ void config_setting_copy_aggregate(struct config_setting_t *parent, const struct
}
}
-int config_setting_copy(struct config_setting_t *parent, const struct config_setting_t *src)
+static int config_setting_copy(struct config_setting_t *parent, const struct config_setting_t *src)
{
if (!config_setting_is_group(parent) && !config_setting_is_list(parent))
return CONFIG_FALSE;
@@ -158,7 +158,7 @@ int config_setting_copy(struct config_setting_t *parent, const struct config_set
* @return The converted value.
* @retval false in case of failure.
*/
-bool config_setting_get_bool_real(const struct config_setting_t *setting)
+static bool config_setting_get_bool_real(const struct config_setting_t *setting)
{
if (setting == NULL || setting->type != CONFIG_TYPE_BOOL)
return false;
@@ -176,7 +176,7 @@ bool config_setting_get_bool_real(const struct config_setting_t *setting)
* @retval CONFIG_TRUE in case of success.
* @retval CONFIG_FALSE in case of failure.
*/
-int config_setting_lookup_bool_real(const struct config_setting_t *setting, const char *name, bool *value)
+static int config_setting_lookup_bool_real(const struct config_setting_t *setting, const char *name, bool *value)
{
struct config_setting_t *member = config_setting_get_member(setting, name);
@@ -199,7 +199,7 @@ int config_setting_lookup_bool_real(const struct config_setting_t *setting, cons
* @return The converted value.
* @retval 0 in case of failure.
*/
-uint32 config_setting_get_uint32(const struct config_setting_t *setting)
+static uint32 config_setting_get_uint32(const struct config_setting_t *setting)
{
if (setting == NULL || setting->type != CONFIG_TYPE_INT)
return 0;
@@ -220,7 +220,7 @@ uint32 config_setting_get_uint32(const struct config_setting_t *setting)
* @retval CONFIG_TRUE in case of success.
* @retval CONFIG_FALSE in case of failure.
*/
-int config_setting_lookup_uint32(const struct config_setting_t *setting, const char *name, uint32 *value)
+static int config_setting_lookup_uint32(const struct config_setting_t *setting, const char *name, uint32 *value)
{
struct config_setting_t *member = config_setting_get_member(setting, name);
@@ -243,7 +243,7 @@ int config_setting_lookup_uint32(const struct config_setting_t *setting, const c
* @return The converted value.
* @retval 0 in case of failure.
*/
-uint16 config_setting_get_uint16(const struct config_setting_t *setting)
+static uint16 config_setting_get_uint16(const struct config_setting_t *setting)
{
if (setting == NULL || setting->type != CONFIG_TYPE_INT)
return 0;
@@ -266,7 +266,7 @@ uint16 config_setting_get_uint16(const struct config_setting_t *setting)
* @retval CONFIG_TRUE in case of success.
* @retval CONFIG_FALSE in case of failure.
*/
-int config_setting_lookup_uint16(const struct config_setting_t *setting, const char *name, uint16 *value)
+static int config_setting_lookup_uint16(const struct config_setting_t *setting, const char *name, uint16 *value)
{
struct config_setting_t *member = config_setting_get_member(setting, name);
@@ -289,7 +289,7 @@ int config_setting_lookup_uint16(const struct config_setting_t *setting, const c
* @return The converted value.
* @retval 0 in case of failure.
*/
-int16 config_setting_get_int16(const struct config_setting_t *setting)
+static int16 config_setting_get_int16(const struct config_setting_t *setting)
{
if (setting == NULL || setting->type != CONFIG_TYPE_INT)
return 0;
@@ -312,7 +312,7 @@ int16 config_setting_get_int16(const struct config_setting_t *setting)
* @retval CONFIG_TRUE in case of success.
* @retval CONFIG_FALSE in case of failure.
*/
-int config_setting_lookup_int16(const struct config_setting_t *setting, const char *name, int16 *value)
+static int config_setting_lookup_int16(const struct config_setting_t *setting, const char *name, int16 *value)
{
struct config_setting_t *member = config_setting_get_member(setting, name);
@@ -338,7 +338,7 @@ int config_setting_lookup_int16(const struct config_setting_t *setting, const ch
* @retval CONFIG_TRUE in case of success.
* @retval CONFIG_FALSE in case of failure.
*/
-int config_setting_lookup_mutable_string(const struct config_setting_t *setting, const char *name, char *out, size_t out_size)
+static int config_setting_lookup_mutable_string(const struct config_setting_t *setting, const char *name, char *out, size_t out_size)
{
const char *str = NULL;
@@ -361,7 +361,7 @@ int config_setting_lookup_mutable_string(const struct config_setting_t *setting,
* @retval CONFIG_TRUE in case of success.
* @retval CONFIG_FALSE in case of failure.
*/
-int config_lookup_mutable_string(const struct config_t *config, const char *name, char *out, size_t out_size)
+static int config_lookup_mutable_string(const struct config_t *config, const char *name, char *out, size_t out_size)
{
const char *str = NULL;
@@ -378,7 +378,7 @@ int config_lookup_mutable_string(const struct config_t *config, const char *name
*
* @see config_setting_get_int64_real()
*/
-int64 config_setting_get_int64_real(const struct config_setting_t *setting)
+static int64 config_setting_get_int64_real(const struct config_setting_t *setting)
{
return (int64)config_setting_get_int64(setting);
}
@@ -388,7 +388,7 @@ int64 config_setting_get_int64_real(const struct config_setting_t *setting)
*
* @see config_setting_lookup_int64()
*/
-int config_setting_lookup_int64_real(const struct config_setting_t *setting, const char *name, int64 *value)
+static int config_setting_lookup_int64_real(const struct config_setting_t *setting, const char *name, int64 *value)
{
long long int lli = 0;
@@ -405,7 +405,7 @@ int config_setting_lookup_int64_real(const struct config_setting_t *setting, con
*
* @see config_setting_set_int64()
*/
-int config_setting_set_int64_real(struct config_setting_t *setting, int64 value)
+static int config_setting_set_int64_real(struct config_setting_t *setting, int64 value)
{
return config_setting_set_int64(setting, (long long int)value);
}
@@ -415,7 +415,7 @@ int config_setting_set_int64_real(struct config_setting_t *setting, int64 value)
*
* @see config_setting_get_int64_elem()
*/
-int64 config_setting_get_int64_elem_real(const struct config_setting_t *setting, int idx)
+static int64 config_setting_get_int64_elem_real(const struct config_setting_t *setting, int idx)
{
return (int64)config_setting_get_int64_elem(setting, idx);
}
@@ -425,7 +425,7 @@ int64 config_setting_get_int64_elem_real(const struct config_setting_t *setting,
*
* @see config_setting_set_int64_elem()
*/
-struct config_setting_t *config_setting_set_int64_elem_real(struct config_setting_t *setting, int idx, int64 value)
+static struct config_setting_t *config_setting_set_int64_elem_real(struct config_setting_t *setting, int idx, int64 value)
{
return config_setting_set_int64_elem(setting, idx, (long long int)value);
}
@@ -435,7 +435,7 @@ struct config_setting_t *config_setting_set_int64_elem_real(struct config_settin
*
* @see config_lookup_int64()
*/
-int config_lookup_int64_real(const struct config_t *config, const char *filepath, int64 *value)
+static int config_lookup_int64_real(const struct config_t *config, const char *filepath, int64 *value)
{
long long int lli = 0;
diff --git a/src/common/conf.h b/src/common/conf.h
index bd6acc4be..66960c0ec 100644
--- a/src/common/conf.h
+++ b/src/common/conf.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/common/console.c b/src/common/console.c
index 0f79b9494..a990d86b3 100644
--- a/src/common/console.c
+++ b/src/common/console.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -23,23 +23,21 @@
#include "config/core.h" // CONSOLE_INPUT, MAX_CONSOLE_INPUT
#include "console.h"
+#include "common/atomic.h"
#include "common/cbasetypes.h"
#include "common/core.h"
+#include "common/ers.h"
+#include "common/memmgr.h"
+#include "common/mmo.h"
+#include "common/mutex.h"
#include "common/nullpo.h"
#include "common/showmsg.h"
+#include "common/spinlock.h"
+#include "common/sql.h"
+#include "common/strlib.h"
#include "common/sysinfo.h"
-
-#ifndef MINICORE
-# include "common/atomic.h"
-# include "common/ers.h"
-# include "common/memmgr.h"
-# include "common/mutex.h"
-# include "common/spinlock.h"
-# include "common/sql.h"
-# include "common/strlib.h"
-# include "common/thread.h"
-# include "common/timer.h"
-#endif
+#include "common/thread.h"
+#include "common/timer.h"
#include <stdio.h>
#include <stdlib.h>
@@ -53,13 +51,13 @@
# endif
#endif
-struct console_interface console_s;
+static struct console_interface console_s;
struct console_interface *console;
#ifdef CONSOLE_INPUT
-struct console_input_interface console_input_s;
-struct spin_lock console_ptlock_s;
+static struct console_input_interface console_input_s;
+static struct spin_lock console_ptlock_s;
-struct {
+static struct {
char queue[CONSOLE_PARSE_SIZE][MAX_CONSOLE_INPUT];
unsigned short count;
} cinput;
@@ -68,7 +66,7 @@ struct {
/*======================================
* CORE : Display title
*--------------------------------------*/
-void display_title(void)
+static void display_title(void)
{
const char *vcstype = sysinfo->vcstype();
@@ -93,19 +91,20 @@ void display_title(void)
ShowInfo("Compiled with %s\n", sysinfo->compiler());
ShowInfo("Compile Flags: %s\n", sysinfo->cflags());
ShowInfo("Timer Function Type: %s\n", sysinfo->time());
+ ShowInfo("Packet version: %d " PACKETTYPE "\n", PACKETVER);
}
/**
* Shows a license notice as per GNU GPL recommendation.
*/
-void display_gplnotice(void)
+static void display_gplnotice(void)
{
- ShowInfo("Hercules, Copyright (C) 2012-2016, Hercules Dev Team and others.\n");
+ ShowInfo("Hercules, Copyright (C) 2012-2018, Hercules Dev Team and others.\n");
ShowInfo("Licensed under the GNU General Public License, version 3 or later.\n");
}
#ifdef CONSOLE_INPUT
-int console_parse_key_pressed(void)
+static int console_parse_key_pressed(void)
{
#ifdef WIN32
return _kbhit();
@@ -131,15 +130,18 @@ int console_parse_key_pressed(void)
/**
* Stops server
**/
-CPCMD_C(exit, server)
+static CPCMD_C(exit, server)
{
- core->runflag = 0;
+ if (core->shutdown_callback != NULL)
+ core->shutdown_callback();
+ else
+ core->runflag = CORE_ST_STOP;
}
/**
* Displays ERS-related statistics (Entry Reusage System)
**/
-CPCMD_C(ers_report, server)
+static CPCMD_C(ers_report, server)
{
ers_report();
}
@@ -147,7 +149,7 @@ CPCMD_C(ers_report, server)
/**
* Displays memory usage
**/
-CPCMD_C(mem_report, server)
+static CPCMD_C(mem_report, server)
{
#ifdef USE_MEMMGR
memmgr_report(line?atoi(line):0);
@@ -157,7 +159,7 @@ CPCMD_C(mem_report, server)
/**
* Displays command list
**/
-CPCMD(help)
+static CPCMD(help)
{
int i;
for (i = 0; i < VECTOR_LENGTH(console->input->command_list); i++) {
@@ -175,7 +177,7 @@ CPCMD(help)
* [Ind/Hercules]
* Displays current malloc usage
*/
-CPCMD_C(malloc_usage, server)
+static CPCMD_C(malloc_usage, server)
{
unsigned int val = (unsigned int)iMalloc->usage();
ShowInfo("malloc_usage: %.2f MB\n",(double)(val)/1024);
@@ -185,7 +187,7 @@ CPCMD_C(malloc_usage, server)
* Skips an sql update
* Usage: sql update skip UPDATE-FILE.sql
**/
-CPCMD_C(skip, update)
+static CPCMD_C(skip, update)
{
if( !line ) {
ShowDebug("usage example: sql update skip 2013-02-14--16-15.sql\n");
@@ -197,7 +199,7 @@ CPCMD_C(skip, update)
/**
* Loads console commands list
**/
-void console_load_defaults(void)
+static void console_load_defaults(void)
{
/**
* Defines a main category.
@@ -310,7 +312,7 @@ void console_load_defaults(void)
* @param name The command name.
* @param func The command callback.
*/
-void console_parse_create(char *name, CParseFunc func)
+static void console_parse_create(char *name, CParseFunc func)
{
int i;
char *tok;
@@ -367,7 +369,7 @@ void console_parse_create(char *name, CParseFunc func)
* @param cmd The command entry.
* @param depth The current tree depth (for display purposes).
*/
-void console_parse_list_subs(struct CParseEntry *cmd, unsigned char depth)
+static void console_parse_list_subs(struct CParseEntry *cmd, unsigned char depth)
{
int i;
char msg[CP_CMD_LENGTH * 2];
@@ -391,7 +393,7 @@ void console_parse_list_subs(struct CParseEntry *cmd, unsigned char depth)
*
* @param line The input line.
*/
-void console_parse_sub(char *line)
+static void console_parse_sub(char *line)
{
struct CParseEntry *cmd;
char bline[200];
@@ -454,7 +456,7 @@ void console_parse_sub(char *line)
ShowError("Is only a category, type '"CL_WHITE"%s help"CL_RESET"' to list its subcommands\n",sublist);
}
-void console_parse(char *line)
+static void console_parse(char *line)
{
int c, i = 0, len = MAX_CONSOLE_INPUT - 1;/* we leave room for the \0 :P */
@@ -471,7 +473,7 @@ void console_parse(char *line)
line[i++] = '\0';
}
-void *cThread_main(void *x)
+static void *cThread_main(void *x)
{
while( console->input->ptstate ) {/* loopx */
if( console->input->key_pressed() ) {
@@ -498,7 +500,7 @@ void *cThread_main(void *x)
return NULL;
}
-int console_parse_timer(int tid, int64 tick, int id, intptr_t data)
+static int console_parse_timer(int tid, int64 tick, int id, intptr_t data)
{
int i;
EnterSpinLock(console->input->ptlock);
@@ -511,7 +513,7 @@ int console_parse_timer(int tid, int64 tick, int id, intptr_t data)
return 0;
}
-void console_parse_final(void)
+static void console_parse_final(void)
{
if( console->input->ptstate ) {
InterlockedDecrement(&console->input->ptstate);
@@ -525,7 +527,7 @@ void console_parse_final(void)
}
}
-void console_parse_init(void)
+static void console_parse_init(void)
{
cinput.count = 0;
@@ -545,13 +547,13 @@ void console_parse_init(void)
timer->add_interval(timer->gettick() + 1000, console->input->parse_timer, 0, 0, 500);/* start listening in 1s; re-try every 0.5s */
}
-void console_setSQL(struct Sql *SQL_handle)
+static void console_setSQL(struct Sql *SQL_handle)
{
console->input->SQL = SQL_handle;
}
#endif /* CONSOLE_INPUT */
-void console_init(void)
+static void console_init(void)
{
#ifdef CONSOLE_INPUT
VECTOR_INIT(console->input->command_list);
@@ -561,7 +563,7 @@ void console_init(void)
#endif
}
-void console_final(void)
+static void console_final(void)
{
#ifdef CONSOLE_INPUT
console->input->parse_final();
diff --git a/src/common/core.c b/src/common/core.c
index 9a131d042..dbd1d2596 100644
--- a/src/common/core.c
+++ b/src/common/core.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -23,32 +23,30 @@
#include "config/core.h"
#include "core.h"
+#include "common/HPM.h"
#include "common/cbasetypes.h"
+#include "common/conf.h"
#include "common/console.h"
#include "common/db.h"
#include "common/des.h"
+#include "common/ers.h"
#include "common/grfio.h"
+#include "common/md5calc.h"
#include "common/memmgr.h"
#include "common/mmo.h"
+#include "common/mutex.h"
#include "common/nullpo.h"
+#include "common/packets.h"
+#include "common/random.h"
#include "common/showmsg.h"
+#include "common/socket.h"
+#include "common/sql.h"
#include "common/strlib.h"
#include "common/sysinfo.h"
+#include "common/thread.h"
#include "common/timer.h"
#include "common/utils.h"
-#ifndef MINICORE
-# include "common/HPM.h"
-# include "common/conf.h"
-# include "common/ers.h"
-# include "common/md5calc.h"
-# include "common/mutex.h"
-# include "common/random.h"
-# include "common/socket.h"
-# include "common/sql.h"
-# include "common/thread.h"
-#endif
-
#ifndef _WIN32
# include <unistd.h>
#else
@@ -80,13 +78,9 @@
// And don't complain to us if the XYZ plugin you installed wiped your hard disk, or worse.
// Note: This feature is deprecated, and should not be used.
-/// Called when a terminate signal is received.
-void (*shutdown_callback)(void) = NULL;
-
-struct core_interface core_s;
+static struct core_interface core_s;
struct core_interface *core = &core_s;
-#ifndef MINICORE // minimalist Core
// Added by Gabuzomeu
//
// This is an implementation of signal() using sigaction() for portability.
@@ -100,7 +94,7 @@ struct core_interface *core = &core_s;
#ifndef POSIX
#define compat_signal(signo, func) signal((signo), (func))
#else
-sigfunc *compat_signal(int signo, sigfunc *func)
+static sigfunc *compat_signal(int signo, sigfunc *func)
{
struct sigaction sact, oact;
@@ -128,8 +122,8 @@ static BOOL WINAPI console_handler(DWORD c_event)
case CTRL_CLOSE_EVENT:
case CTRL_LOGOFF_EVENT:
case CTRL_SHUTDOWN_EVENT:
- if( shutdown_callback != NULL )
- shutdown_callback();
+ if (core->shutdown_callback != NULL)
+ core->shutdown_callback();
else
core->runflag = CORE_ST_STOP;// auto-shutdown
break;
@@ -158,8 +152,8 @@ static void sig_proc(int sn)
case SIGTERM:
if (++is_called > 3)
exit(EXIT_SUCCESS);
- if( shutdown_callback != NULL )
- shutdown_callback();
+ if (core->shutdown_callback != NULL)
+ core->shutdown_callback();
else
core->runflag = CORE_ST_STOP;// auto-shutdown
break;
@@ -183,7 +177,7 @@ static void sig_proc(int sn)
}
}
-void signals_init (void)
+static void signals_init(void)
{
compat_signal(SIGTERM, sig_proc);
compat_signal(SIGINT, sig_proc);
@@ -199,14 +193,13 @@ void signals_init (void)
compat_signal(SIGTRAP, SIG_DFL);
#endif
}
-#endif
/**
* Warns the user if executed as superuser (root)
*
* @retval false if the check didn't pass and the program should be terminated.
*/
-bool usercheck(void)
+static bool usercheck(void)
{
#ifndef _WIN32
if (sysinfo->is_superuser()) {
@@ -250,13 +243,11 @@ bool usercheck(void)
return true;
}
-void core_defaults(void)
+static void core_defaults(void)
{
nullpo_defaults();
-#ifndef MINICORE
hpm_defaults();
HCache_defaults();
-#endif
sysinfo_defaults();
console_defaults();
strlib_defaults();
@@ -265,30 +256,25 @@ void core_defaults(void)
cmdline_defaults();
des_defaults();
grfio_defaults(); // Note: grfio is lazily loaded. grfio->init() and grfio->final() are not automatically called.
-#ifndef MINICORE
mutex_defaults();
libconfig_defaults();
sql_defaults();
timer_defaults();
db_defaults();
socket_defaults();
+ packets_defaults();
rnd_defaults();
md5_defaults();
thread_defaults();
-#endif
}
/**
* Returns the source (core or plugin name) for the given command-line argument
*/
-const char *cmdline_arg_source(struct CmdlineArgData *arg)
+static const char *cmdline_arg_source(struct CmdlineArgData *arg)
{
-#ifdef MINICORE
- return "core";
-#else // !MINICORE
nullpo_retr(NULL, arg);
return HPM->pid2name(arg->pluginID);
-#endif // MINICORE
}
/**
@@ -302,7 +288,7 @@ const char *cmdline_arg_source(struct CmdlineArgData *arg)
* @param options options associated to the command-line argument. @see enum cmdline_options.
* @return the success status.
*/
-bool cmdline_arg_add(unsigned int pluginID, const char *name, char shortname, CmdlineExecFunc func, const char *help, unsigned int options)
+static bool cmdline_arg_add(unsigned int pluginID, const char *name, char shortname, CmdlineExecFunc func, const char *help, unsigned int options)
{
struct CmdlineArgData *data = NULL;
@@ -366,7 +352,7 @@ static CMDLINEARG(version)
* @param argc the program's argc.
* @return true if a value for the current argument is available on the command line.
*/
-bool cmdline_arg_next_value(const char *name, int current_arg, int argc)
+static bool cmdline_arg_next_value(const char *name, int current_arg, int argc)
{
if (current_arg >= argc-1) {
ShowError("Missing value for option '%s'.\n", name);
@@ -394,7 +380,7 @@ bool cmdline_arg_next_value(const char *name, int current_arg, int argc)
* line arguments or handler's failure cause the program to abort.
* @return the amount of command line handlers successfully executed.
*/
-int cmdline_exec(int argc, char **argv, unsigned int options)
+static int cmdline_exec(int argc, char **argv, unsigned int options)
{
int count = 0, i;
@@ -447,21 +433,15 @@ int cmdline_exec(int argc, char **argv, unsigned int options)
/**
* Defines the global command-line arguments.
*/
-void cmdline_init(void)
+static void cmdline_init(void)
{
-#ifdef MINICORE
- // Minicore has no HPM. This value isn't used, but the arg_add function requires it, so we're (re)defining it here
-#define HPM_PID_CORE ((unsigned int)-1)
-#endif
CMDLINEARG_DEF(help, 'h', "Displays this help screen", CMDLINE_OPT_NORMAL);
CMDLINEARG_DEF(version, 'v', "Displays the server's version.", CMDLINE_OPT_NORMAL);
-#ifndef MINICORE
CMDLINEARG_DEF2(load-plugin, loadplugin, "Loads an additional plugin (can be repeated).", CMDLINE_OPT_PARAM|CMDLINE_OPT_PREINIT);
-#endif // !MINICORE
cmdline_args_init_local();
}
-void cmdline_final(void)
+static void cmdline_final(void)
{
while (VECTOR_LENGTH(cmdline->args_data) > 0) {
struct CmdlineArgData *data = &VECTOR_POP(cmdline->args_data);
@@ -471,7 +451,7 @@ void cmdline_final(void)
VECTOR_CLEAR(cmdline->args_data);
}
-struct cmdline_interface cmdline_s;
+static struct cmdline_interface cmdline_s;
struct cmdline_interface *cmdline;
void cmdline_defaults(void)
@@ -491,7 +471,7 @@ void cmdline_defaults(void)
/*======================================
* CORE : MAINROUTINE
*--------------------------------------*/
-int main (int argc, char **argv)
+int main(int argc, char **argv)
{
int retval = EXIT_SUCCESS;
{// initialize program arguments
@@ -524,10 +504,6 @@ int main (int argc, char **argv)
if (!usercheck())
return EXIT_FAILURE;
-#ifdef MINICORE // minimalist Core
- do_init(argc,argv);
- do_final();
-#else// not MINICORE
set_server_type();
Sql_Init();
@@ -552,6 +528,8 @@ int main (int argc, char **argv)
sockt->init();
+ packets->init();
+
do_init(argc,argv);
// Main runtime cycle
@@ -565,12 +543,12 @@ int main (int argc, char **argv)
retval = do_final();
HPM->final();
timer->final();
+ packets->final();
sockt->final();
DB->final();
thread->final();
ers_final();
rnd->final();
-#endif
cmdline->final();
//sysinfo->final(); Called by iMalloc->final()
diff --git a/src/common/core.h b/src/common/core.h
index a8726fcef..0622a987d 100644
--- a/src/common/core.h
+++ b/src/common/core.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/common/db.c b/src/common/db.c
index 91592fdac..c28ad1f7c 100644
--- a/src/common/db.c
+++ b/src/common/db.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -100,7 +100,7 @@
#include <stdio.h>
#include <stdlib.h>
-struct db_interface DB_s;
+static struct db_interface DB_s;
struct db_interface *DB;
/*****************************************************************************
@@ -358,8 +358,8 @@ static struct db_stats {
#endif /* !defined(DB_ENABLE_STATS) */
/* [Ind/Hercules] */
-struct eri *db_iterator_ers;
-struct eri *db_alloc_ers;
+static struct eri *db_iterator_ers;
+static struct eri *db_alloc_ers;
/*****************************************************************************\
* (2) Section of private functions used by the database system. *
@@ -1250,7 +1250,7 @@ static void db_release_both(union DBKey key, struct DBData data, enum DBReleaseO
* @protected
* @see struct DBIterator#first()
*/
-struct DBData *dbit_obj_first(struct DBIterator *self, union DBKey *out_key)
+static struct DBData *dbit_obj_first(struct DBIterator *self, union DBKey *out_key)
{
struct DBIterator_impl *it = (struct DBIterator_impl *)self;
@@ -1272,7 +1272,7 @@ struct DBData *dbit_obj_first(struct DBIterator *self, union DBKey *out_key)
* @protected
* @see struct DBIterator#last()
*/
-struct DBData *dbit_obj_last(struct DBIterator *self, union DBKey *out_key)
+static struct DBData *dbit_obj_last(struct DBIterator *self, union DBKey *out_key)
{
struct DBIterator_impl *it = (struct DBIterator_impl *)self;
@@ -1294,7 +1294,7 @@ struct DBData *dbit_obj_last(struct DBIterator *self, union DBKey *out_key)
* @protected
* @see struct DBIterator#next()
*/
-struct DBData *dbit_obj_next(struct DBIterator *self, union DBKey *out_key)
+static struct DBData *dbit_obj_next(struct DBIterator *self, union DBKey *out_key)
{
struct DBIterator_impl *it = (struct DBIterator_impl *)self;
struct DBNode *node;
@@ -1370,7 +1370,7 @@ struct DBData *dbit_obj_next(struct DBIterator *self, union DBKey *out_key)
* @protected
* @see struct DBIterator#prev()
*/
-struct DBData *dbit_obj_prev(struct DBIterator *self, union DBKey *out_key)
+static struct DBData *dbit_obj_prev(struct DBIterator *self, union DBKey *out_key)
{
struct DBIterator_impl *it = (struct DBIterator_impl *)self;
struct DBNode *node;
@@ -1445,7 +1445,7 @@ struct DBData *dbit_obj_prev(struct DBIterator *self, union DBKey *out_key)
* @protected
* @see struct DBIterator#exists()
*/
-bool dbit_obj_exists(struct DBIterator *self)
+static bool dbit_obj_exists(struct DBIterator *self)
{
struct DBIterator_impl *it = (struct DBIterator_impl *)self;
@@ -1467,7 +1467,7 @@ bool dbit_obj_exists(struct DBIterator *self)
* @see struct DBMap#remove()
* @see struct DBIterator#remove()
*/
-int dbit_obj_remove(struct DBIterator *self, struct DBData *out_data)
+static int dbit_obj_remove(struct DBIterator *self, struct DBData *out_data)
{
struct DBIterator_impl *it = (struct DBIterator_impl *)self;
struct DBNode *node;
@@ -1494,7 +1494,7 @@ int dbit_obj_remove(struct DBIterator *self, struct DBData *out_data)
* @param self Iterator
* @protected
*/
-void dbit_obj_destroy(struct DBIterator *self)
+static void dbit_obj_destroy(struct DBIterator *self)
{
struct DBIterator_impl *it = (struct DBIterator_impl *)self;
@@ -2407,7 +2407,7 @@ static enum DBOptions db_obj_options(struct DBMap *self)
* @see #db_default_release()
* @see #db_alloc()
*/
-enum DBOptions db_fix_options(enum DBType type, enum DBOptions options)
+static enum DBOptions db_fix_options(enum DBType type, enum DBOptions options)
{
DB_COUNTSTAT(db_fix_options);
switch (type) {
@@ -2438,7 +2438,7 @@ enum DBOptions db_fix_options(enum DBType type, enum DBOptions options)
* @see #db_int64_cmp()
* @see #db_uint64_cmp()
*/
-DBComparator db_default_cmp(enum DBType type)
+static DBComparator db_default_cmp(enum DBType type)
{
DB_COUNTSTAT(db_default_cmp);
switch (type) {
@@ -2466,7 +2466,7 @@ DBComparator db_default_cmp(enum DBType type)
* @see #db_int64_hash()
* @see #db_uint64_hash()
*/
-DBHasher db_default_hash(enum DBType type)
+static DBHasher db_default_hash(enum DBType type)
{
DB_COUNTSTAT(db_default_hash);
switch (type) {
@@ -2499,7 +2499,7 @@ DBHasher db_default_hash(enum DBType type)
* @see #db_release_both()
* @see #db_custom_release()
*/
-DBReleaser db_default_release(enum DBType type, enum DBOptions options)
+static DBReleaser db_default_release(enum DBType type, enum DBOptions options)
{
DB_COUNTSTAT(db_default_release);
options = DB->fix_options(type, options);
@@ -2524,7 +2524,7 @@ DBReleaser db_default_release(enum DBType type, enum DBOptions options)
* @see #db_release_both()
* @see #db_default_release()
*/
-DBReleaser db_custom_release(enum DBReleaseOption which)
+static DBReleaser db_custom_release(enum DBReleaseOption which)
{
DB_COUNTSTAT(db_custom_release);
switch (which) {
@@ -2555,7 +2555,7 @@ DBReleaser db_custom_release(enum DBReleaseOption which)
* @see struct DBMap_impl
* @see #db_fix_options()
*/
-struct DBMap *db_alloc(const char *file, const char *func, int line, enum DBType type, enum DBOptions options, unsigned short maxlen)
+static struct DBMap *db_alloc(const char *file, const char *func, int line, enum DBType type, enum DBOptions options, unsigned short maxlen)
{
struct DBMap_impl *db;
unsigned int i;
@@ -2629,7 +2629,7 @@ struct DBMap *db_alloc(const char *file, const char *func, int line, enum DBType
* @return The key as a DBKey union
* @public
*/
-union DBKey db_i2key(int key)
+static union DBKey db_i2key(int key)
{
union DBKey ret;
@@ -2644,7 +2644,7 @@ union DBKey db_i2key(int key)
* @return The key as a DBKey union
* @public
*/
-union DBKey db_ui2key(unsigned int key)
+static union DBKey db_ui2key(unsigned int key)
{
union DBKey ret;
@@ -2659,7 +2659,7 @@ union DBKey db_ui2key(unsigned int key)
* @return The key as a DBKey union
* @public
*/
-union DBKey db_str2key(const char *key)
+static union DBKey db_str2key(const char *key)
{
union DBKey ret;
@@ -2674,7 +2674,7 @@ union DBKey db_str2key(const char *key)
* @return The key as a DBKey union
* @public
*/
-union DBKey db_i642key(int64 key)
+static union DBKey db_i642key(int64 key)
{
union DBKey ret;
@@ -2689,7 +2689,7 @@ union DBKey db_i642key(int64 key)
* @return The key as a DBKey union
* @public
*/
-union DBKey db_ui642key(uint64 key)
+static union DBKey db_ui642key(uint64 key)
{
union DBKey ret;
@@ -2704,7 +2704,7 @@ union DBKey db_ui642key(uint64 key)
* @return The data as a DBData struct
* @public
*/
-struct DBData db_i2data(int data)
+static struct DBData db_i2data(int data)
{
struct DBData ret;
@@ -2720,7 +2720,7 @@ struct DBData db_i2data(int data)
* @return The data as a DBData struct
* @public
*/
-struct DBData db_ui2data(unsigned int data)
+static struct DBData db_ui2data(unsigned int data)
{
struct DBData ret;
@@ -2736,7 +2736,7 @@ struct DBData db_ui2data(unsigned int data)
* @return The data as a DBData struct
* @public
*/
-struct DBData db_ptr2data(void *data)
+static struct DBData db_ptr2data(void *data)
{
struct DBData ret;
@@ -2753,7 +2753,7 @@ struct DBData db_ptr2data(void *data)
* @return Integer value of the data.
* @public
*/
-int db_data2i(struct DBData *data)
+static int db_data2i(struct DBData *data)
{
DB_COUNTSTAT(db_data2i);
if (data && DB_DATA_INT == data->type)
@@ -2768,7 +2768,7 @@ int db_data2i(struct DBData *data)
* @return Unsigned int value of the data.
* @public
*/
-unsigned int db_data2ui(struct DBData *data)
+static unsigned int db_data2ui(struct DBData *data)
{
DB_COUNTSTAT(db_data2ui);
if (data && DB_DATA_UINT == data->type)
@@ -2783,7 +2783,7 @@ unsigned int db_data2ui(struct DBData *data)
* @return Void* value of the data.
* @public
*/
-void *db_data2ptr(struct DBData *data)
+static void *db_data2ptr(struct DBData *data)
{
DB_COUNTSTAT(db_data2ptr);
if (data && DB_DATA_PTR == data->type)
@@ -2796,7 +2796,7 @@ void *db_data2ptr(struct DBData *data)
* @public
* @see #db_final(void)
*/
-void db_init(void)
+static void db_init(void)
{
db_iterator_ers = ers_new(sizeof(struct DBIterator_impl),"db.c::db_iterator_ers",ERS_OPT_CLEAN|ERS_OPT_FLEX_CHUNK);
db_alloc_ers = ers_new(sizeof(struct DBMap_impl),"db.c::db_alloc_ers",ERS_OPT_CLEAN|ERS_OPT_FLEX_CHUNK);
@@ -2810,7 +2810,7 @@ void db_init(void)
* @public
* @see #db_init(void)
*/
-void db_final(void)
+static void db_final(void)
{
#ifdef DB_ENABLE_STATS
DB_COUNTSTAT(db_final);
diff --git a/src/common/db.h b/src/common/db.h
index 2918e5acb..2af47567e 100644
--- a/src/common/db.h
+++ b/src/common/db.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/common/des.c b/src/common/des.c
index 73297ab70..fbd158265 100644
--- a/src/common/des.c
+++ b/src/common/des.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -29,7 +29,7 @@
* Implementation of the des interface.
*/
-struct des_interface des_s;
+static struct des_interface des_s;
struct des_interface *des;
/// Bitmask for accessing individual bits of a byte.
@@ -228,7 +228,7 @@ static void des_RoundFunction(struct des_bit64 *src)
}
/// @copydoc des_interface::decrypt_block()
-void des_decrypt_block(struct des_bit64 *block)
+static void des_decrypt_block(struct des_bit64 *block)
{
des_IP(block);
des_RoundFunction(block);
@@ -236,7 +236,7 @@ void des_decrypt_block(struct des_bit64 *block)
}
/// @copydoc des_interface::decrypt()
-void des_decrypt(unsigned char *data, size_t size)
+static void des_decrypt(unsigned char *data, size_t size)
{
struct des_bit64 *p = (struct des_bit64 *)data;
size_t i;
diff --git a/src/common/des.h b/src/common/des.h
index 9924a044b..79fe05603 100644
--- a/src/common/des.h
+++ b/src/common/des.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/common/ers.c b/src/common/ers.c
index f2256cf30..e421c47c9 100644
--- a/src/common/ers.c
+++ b/src/common/ers.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -309,7 +309,7 @@ static void ers_obj_destroy(ERS *self)
aFree(instance);
}
-void ers_cache_size(ERS *self, unsigned int new_size)
+static void ers_cache_size(ERS *self, unsigned int new_size)
{
struct ers_instance_t *instance = (struct ers_instance_t *)self;
diff --git a/src/common/ers.h b/src/common/ers.h
index 5f9516ad6..612a98dd4 100644
--- a/src/common/ers.h
+++ b/src/common/ers.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/common/grfio.c b/src/common/grfio.c
index fba3dda86..79154d191 100644
--- a/src/common/grfio.c
+++ b/src/common/grfio.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -68,19 +68,19 @@ enum grf_filelist_type {
//#define GRFIO_LOCAL
// stores info about every loaded file
-struct grf_filelist *filelist = NULL;
-int filelist_entrys = 0;
-int filelist_maxentry = 0;
+static struct grf_filelist *filelist = NULL;
+static int filelist_entrys = 0;
+static int filelist_maxentry = 0;
// stores grf file names
-char** gentry_table = NULL;
-int gentry_entrys = 0;
-int gentry_maxentry = 0;
+static char** gentry_table = NULL;
+static int gentry_entrys = 0;
+static int gentry_maxentry = 0;
// the path to the data directory
-char data_dir[1024] = "";
+static char data_dir[1024] = "";
-struct grfio_interface grfio_s;
+static struct grfio_interface grfio_s;
struct grfio_interface *grfio;
// little endian char array to uint conversion
@@ -273,19 +273,19 @@ static void grf_decode(unsigned char *buf, size_t len, char entry_type, int entr
/* Zlib Subroutines */
/// @copydoc grfio_interface::crc32()
-unsigned long grfio_crc32(const unsigned char *buf, unsigned int len)
+static unsigned long grfio_crc32(const unsigned char *buf, unsigned int len)
{
return crc32(crc32(0L, Z_NULL, 0), buf, len);
}
/// @copydoc grfio_interface::decode_zip
-int grfio_decode_zip(void *dest, unsigned long *dest_len, const void *source, unsigned long source_len)
+static int grfio_decode_zip(void *dest, unsigned long *dest_len, const void *source, unsigned long source_len)
{
return uncompress(dest, dest_len, source, source_len);
}
/// @copydoc grfio_interface::encode_zip
-int grfio_encode_zip(void *dest, unsigned long *dest_len, const void *source, unsigned long source_len)
+static int grfio_encode_zip(void *dest, unsigned long *dest_len, const void *source, unsigned long source_len)
{
if (*dest_len == 0) /* [Ind/Hercules] */
*dest_len = compressBound(source_len);
@@ -299,7 +299,7 @@ int grfio_encode_zip(void *dest, unsigned long *dest_len, const void *source, un
/* File List Subroutines */
/// File list hash table
-int filelist_hash[256];
+static int filelist_hash[256];
/**
* Initializes the table that holds the first elements of all hash chains
@@ -351,7 +351,7 @@ static struct grf_filelist *grfio_filelist_find(const char *fname)
}
/// @copydoc grfio_interface::find_file()
-const char *grfio_find_file(const char *fname)
+static const char *grfio_find_file(const char *fname)
{
struct grf_filelist *flist = grfio_filelist_find(fname);
if (flist == NULL)
@@ -458,7 +458,7 @@ static void grfio_localpath_create(char *buffer, size_t size, const char *filena
}
/// @copydoc grfio_interface::reads()
-void *grfio_reads(const char *fname, int *size)
+static void *grfio_reads(const char *fname, int *size)
{
struct grf_filelist *entry = grfio_filelist_find(fname);
if (entry == NULL || entry->gentry <= 0) {
@@ -786,8 +786,8 @@ static bool grfio_parse_restable_row(const char *row)
if (strstr(w2, ".gat") == NULL && strstr(w2, ".rsw") == NULL)
return false; // we only need the maps' GAT and RSW files
- sprintf(src, "data\\%s", w1);
- sprintf(dst, "data\\%s", w2);
+ safesnprintf(src, 256, "data\\%s", w1);
+ safesnprintf(dst, 256, "data\\%s", w2);
entry = grfio_filelist_find(dst);
if (entry != NULL) {
@@ -885,7 +885,7 @@ static int grfio_add(const char *fname)
}
/// @copydoc grfio_interface::final()
-void grfio_final(void)
+static void grfio_final(void)
{
if (filelist != NULL) {
int i;
@@ -911,7 +911,7 @@ void grfio_final(void)
}
/// @copydoc grfio_interface::init()
-void grfio_init(const char *fname)
+static void grfio_init(const char *fname)
{
FILE *data_conf;
int grf_num = 0;
diff --git a/src/common/grfio.h b/src/common/grfio.h
index 857bc507e..13e7201fe 100644
--- a/src/common/grfio.h
+++ b/src/common/grfio.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/common/mapindex.c b/src/common/mapindex.c
index e16eb4216..d5cda5c22 100644
--- a/src/common/mapindex.c
+++ b/src/common/mapindex.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -33,12 +33,12 @@
#include <stdlib.h>
/* mapindex.c interface source */
-struct mapindex_interface mapindex_s;
+static struct mapindex_interface mapindex_s;
struct mapindex_interface *mapindex;
/// Retrieves the map name from 'string' (removing .gat extension if present).
/// Result gets placed either into 'buf' or in a static local buffer.
-const char* mapindex_getmapname(const char* string, char* output)
+static const char *mapindex_getmapname(const char *string, char *output)
{
static char buf[MAP_NAME_LENGTH];
char* dest = (output != NULL) ? output : buf;
@@ -62,7 +62,7 @@ const char* mapindex_getmapname(const char* string, char* output)
/// Retrieves the map name from 'string' (adding .gat extension if not already present).
/// Result gets placed either into 'buf' or in a static local buffer.
-const char* mapindex_getmapname_ext(const char* string, char* output)
+static const char *mapindex_getmapname_ext(const char *string, char *output)
{
static char buf[MAP_NAME_LENGTH_EXT];
char* dest = (output != NULL) ? output : buf;
@@ -94,7 +94,7 @@ const char* mapindex_getmapname_ext(const char* string, char* output)
/// Adds a map to the specified index
/// Returns 1 if successful, 0 otherwise
-int mapindex_addmap(int index, const char* name)
+static int mapindex_addmap(int index, const char *name)
{
char map_name[MAP_NAME_LENGTH];
@@ -136,7 +136,7 @@ int mapindex_addmap(int index, const char* name)
return index;
}
-unsigned short mapindex_name2id(const char* name)
+static unsigned short mapindex_name2id(const char *name)
{
int i;
char map_name[MAP_NAME_LENGTH];
@@ -150,7 +150,7 @@ unsigned short mapindex_name2id(const char* name)
return 0;
}
-const char *mapindex_id2name_sub(uint16 id, const char *file, int line, const char *func)
+static const char *mapindex_id2name_sub(uint16 id, const char *file, int line, const char *func)
{
if (id >= MAX_MAPINDEX || !mapindex_exists(id)) {
ShowDebug("mapindex_id2name: Requested name for non-existant map index [%d] in cache. %s:%s:%d\n", id,file,func,line);
@@ -159,7 +159,7 @@ const char *mapindex_id2name_sub(uint16 id, const char *file, int line, const ch
return mapindex->list[id].name;
}
-int mapindex_init(void)
+static int mapindex_init(void)
{
FILE *fp;
char line[1024];
@@ -198,7 +198,7 @@ int mapindex_init(void)
return total;
}
-bool mapindex_check_default(void)
+static bool mapindex_check_default(void)
{
if (!strdb_iget(mapindex->db, mapindex->default_map)) {
ShowError("mapindex_init: MAP_DEFAULT '%s' not found in cache! update mapindex.h MAP_DEFAULT var!!!\n", mapindex->default_map);
@@ -207,14 +207,14 @@ bool mapindex_check_default(void)
return true;
}
-void mapindex_removemap(int index)
+static void mapindex_removemap(int index)
{
Assert_retv(index < MAX_MAPINDEX);
strdb_remove(mapindex->db, mapindex->list[index].name);
mapindex->list[index].name[0] = '\0';
}
-void mapindex_final(void)
+static void mapindex_final(void)
{
db_destroy(mapindex->db);
}
diff --git a/src/common/mapindex.h b/src/common/mapindex.h
index 91f59aeaf..27cbc5e37 100644
--- a/src/common/mapindex.h
+++ b/src/common/mapindex.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/common/md5calc.c b/src/common/md5calc.c
index d2fc32371..3f9ccdc41 100644
--- a/src/common/md5calc.c
+++ b/src/common/md5calc.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -34,7 +34,7 @@
* Implementation of the md5 interface.
*/
-struct md5_interface md5_s;
+static struct md5_interface md5_s;
struct md5_interface *md5;
/// Global variable
@@ -202,7 +202,7 @@ static void md5_buf2binary(const uint8 *buf, const int buf_size, uint8 *output)
//1-3
copy_len = buf_size % 64; //The number of bytes which remained is computed.
- strncpy((char *)padding_message, (const char *)pbuf, copy_len); // A message is copied to an extended bit sequence.
+ memcpy((char *)padding_message, (const char *)pbuf, copy_len); // A message is copied to an extended bit sequence.
memset(padding_message+copy_len, 0, 64 - copy_len); //It buries by 0 until it becomes extended bit length.
padding_message[copy_len] |= 0x80; //The next of a message is 1.
@@ -233,7 +233,7 @@ static void md5_buf2binary(const uint8 *buf, const int buf_size, uint8 *output)
}
/// @copydoc md5_interface::string()
-void md5_string(const char *string, char *output)
+static void md5_string(const char *string, char *output)
{
uint8 digest[16];
@@ -249,7 +249,7 @@ void md5_string(const char *string, char *output)
}
/// @copydoc md5_interface::salt();
-void md5_salt(int len, char *output)
+static void md5_salt(int len, char *output)
{
int i;
Assert_retv(len > 0);
diff --git a/src/common/md5calc.h b/src/common/md5calc.h
index f55ebe312..bd06f1fbc 100644
--- a/src/common/md5calc.h
+++ b/src/common/md5calc.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/common/memmgr.c b/src/common/memmgr.c
index b80b4d4e9..3c645e7fa 100644
--- a/src/common/memmgr.c
+++ b/src/common/memmgr.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -31,7 +31,7 @@
#include <stdlib.h>
#include <string.h>
-struct malloc_interface iMalloc_s;
+static struct malloc_interface iMalloc_s;
struct malloc_interface *iMalloc;
////////////// Memory Libraries //////////////////
@@ -113,9 +113,7 @@ struct malloc_interface *iMalloc;
#error Unsupported OS
#endif
-#endif
-
-void* aMalloc_(size_t size, const char *file, int line, const char *func)
+static void *aMalloc_(size_t size, const char *file, int line, const char *func)
{
void *ret = MALLOC(size, file, line, func);
// ShowMessage("%s:%d: in func %s: aMalloc %d\n",file,line,func,size);
@@ -126,7 +124,7 @@ void* aMalloc_(size_t size, const char *file, int line, const char *func)
return ret;
}
-void* aCalloc_(size_t num, size_t size, const char *file, int line, const char *func)
+static void *aCalloc_(size_t num, size_t size, const char *file, int line, const char *func)
{
void *ret = CALLOC(num, size, file, line, func);
// ShowMessage("%s:%d: in func %s: aCalloc %d %d\n",file,line,func,num,size);
@@ -136,7 +134,7 @@ void* aCalloc_(size_t num, size_t size, const char *file, int line, const char *
}
return ret;
}
-void* aRealloc_(void *p, size_t size, const char *file, int line, const char *func)
+static void *aRealloc_(void *p, size_t size, const char *file, int line, const char *func)
{
void *ret = REALLOC(p, size, file, line, func);
// ShowMessage("%s:%d: in func %s: aRealloc %p %d\n",file,line,func,p,size);
@@ -147,13 +145,10 @@ void* aRealloc_(void *p, size_t size, const char *file, int line, const char *fu
return ret;
}
-void* aReallocz_(void *p, size_t size, const char *file, int line, const char *func)
+static void *aReallocz_(void *p, size_t size, const char *file, int line, const char *func)
{
unsigned char *ret = NULL;
// ShowMessage("%s:%d: in func %s: aReallocz %p %ld\n",file,line,func,p,size);
-#ifdef USE_MEMMGR
- ret = REALLOC(p, size, file, line, func);
-#else
if (p != NULL) {
size_t newSize;
size_t oldSize = BUFFER_SIZE(p);
@@ -166,7 +161,6 @@ void* aReallocz_(void *p, size_t size, const char *file, int line, const char *f
if (ret != NULL)
memset(ret, 0, BUFFER_SIZE(ret));
}
-#endif
if (ret == NULL) {
ShowFatalError("%s:%d: in func %s: aRealloc error out of memory!\n",file,line,func);
exit(EXIT_FAILURE);
@@ -174,7 +168,7 @@ void* aReallocz_(void *p, size_t size, const char *file, int line, const char *f
return ret;
}
-char* aStrdup_(const char *p, const char *file, int line, const char *func)
+static char *aStrdup_(const char *p, const char *file, int line, const char *func)
{
char *ret = STRDUP(p, file, line, func);
// ShowMessage("%s:%d: in func %s: aStrdup %p\n",file,line,func,p);
@@ -201,7 +195,7 @@ char* aStrdup_(const char *p, const char *file, int line, const char *func)
* @param func @see ALC_MARK.
* @return the copied string.
*/
-char *aStrndup_(const char *p, size_t size, const char *file, int line, const char *func)
+static char *aStrndup_(const char *p, size_t size, const char *file, int line, const char *func)
{
size_t len = strnlen(p, size);
char *ret = MALLOC(len + 1, file, line, func);
@@ -214,7 +208,7 @@ char *aStrndup_(const char *p, size_t size, const char *file, int line, const ch
return ret;
}
-void aFree_(void *p, const char *file, int line, const char *func)
+static void aFree_(void *p, const char *file, int line, const char *func)
{
// ShowMessage("%s:%d: in func %s: aFree %p\n",file,line,func,p);
if (p)
@@ -222,8 +216,7 @@ void aFree_(void *p, const char *file, int line, const char *func)
//p = NULL;
}
-
-#ifdef USE_MEMMGR
+#else // USE_MEMMGR
#if defined(DEBUG)
#define DEBUG_MEMMGR
@@ -232,21 +225,21 @@ void aFree_(void *p, const char *file, int line, const char *func)
/* USE_MEMMGR */
/*
-* Memory manager
-* able to handle malloc and free efficiently
-* Since the complex processing, I might be slightly heavier.
-*
-* (I'm sorry for the poor description ^ ^;) such as data structures
-* Divided into "blocks" of a plurality of memory, "unit" of a plurality of blocks further
-* I have to divide. Size of the unit, a plurality of distribution equal to the capacity of one block
-* That's what you have. For example, if one unit of 32KB, one block 1 Yu 32Byte
-* Knit, or are able to gather 1024, gathered 512 units 64Byte
-* I can be or have. (Excluding padding, the unit_head)
-*
-* Lead-linked list (block_prev, block_next) in each other is the same size block
-* Linked list (hash_prev, hash_nect) even among such one in the block with the figure
-* I like to have. Thus, reuse of memory no longer needed can be performed efficiently.
-*/
+ * Memory manager
+ * able to handle malloc and free efficiently
+ * Since the complex processing, I might be slightly heavier.
+ *
+ * (I'm sorry for the poor description ^ ^;) such as data structures
+ * Divided into "blocks" of a plurality of memory, "unit" of a plurality of blocks further
+ * I have to divide. Size of the unit, a plurality of distribution equal to the capacity of one block
+ * That's what you have. For example, if one unit of 32KB, one block 1 Yu 32Byte
+ * Knit, or are able to gather 1024, gathered 512 units 64Byte
+ * I can be or have. (Excluding padding, the unit_head)
+ *
+ * Lead-linked list (block_prev, block_next) in each other is the same size block
+ * Linked list (hash_prev, hash_nect) even among such one in the block with the figure
+ * I like to have. Thus, reuse of memory no longer needed can be performed efficiently.
+ */
/* Alignment of the block */
#define BLOCK_ALIGNMENT1 16
@@ -286,8 +279,8 @@ struct unit_head {
long checksum;
};
-static struct block* hash_unfill[BLOCK_DATA_COUNT1 + BLOCK_DATA_COUNT2 + 1];
-static struct block* block_first, *block_last, block_head;
+static struct block *hash_unfill[BLOCK_DATA_COUNT1 + BLOCK_DATA_COUNT2 + 1];
+static struct block *block_first, *block_last, block_head;
/* Data for areas that do not use the memory be turned */
struct unit_head_large {
@@ -299,8 +292,8 @@ struct unit_head_large {
static struct unit_head_large *unit_head_large_first = NULL;
-static struct block* block_malloc(unsigned short hash);
-static void block_free(struct block* p);
+static struct block *block_malloc(unsigned short hash);
+static void block_free(struct block *p);
static size_t memmgr_usage_bytes;
static size_t memmgr_usage_bytes_t;
@@ -308,7 +301,7 @@ static size_t memmgr_usage_bytes_t;
#define block2unit(p, n) ((struct unit_head*)(&(p)->data[ p->unit_size * (n) ]))
#define memmgr_assert(v) do { if(!(v)) { ShowError("Memory manager: assertion '" #v "' failed!\n"); } } while(0)
-static unsigned short size2hash( size_t size )
+static unsigned short size2hash(size_t size)
{
if( size <= BLOCK_DATA_SIZE1 ) {
return (unsigned short)(size + BLOCK_ALIGNMENT1 - 1) / BLOCK_ALIGNMENT1;
@@ -320,7 +313,7 @@ static unsigned short size2hash( size_t size )
}
}
-static size_t hash2size( unsigned short hash )
+static size_t hash2size(unsigned short hash)
{
if( hash <= BLOCK_DATA_COUNT1) {
return hash * BLOCK_ALIGNMENT1;
@@ -329,7 +322,8 @@ static size_t hash2size( unsigned short hash )
}
}
-void *mmalloc_(size_t size, const char *file, int line, const char *func) {
+static void *mmalloc_(size_t size, const char *file, int line, const char *func)
+{
struct block *block;
short size_hash = size2hash( size );
struct unit_head *head;
@@ -435,14 +429,16 @@ void *mmalloc_(size_t size, const char *file, int line, const char *func) {
return (char *)head + sizeof(struct unit_head) - sizeof(long);
}
-void *mcalloc_(size_t num, size_t size, const char *file, int line, const char *func) {
+static void *mcalloc_(size_t num, size_t size, const char *file, int line, const char *func)
+{
void *p = iMalloc->malloc(num * size,file,line,func);
if (p)
memset(p, 0, num * size);
return p;
}
-void *mrealloc_(void *memblock, size_t size, const char *file, int line, const char *func) {
+static void *mrealloc_(void *memblock, size_t size, const char *file, int line, const char *func)
+{
size_t old_size;
if(memblock == NULL) {
return iMalloc->malloc(size,file,line,func);
@@ -467,7 +463,8 @@ void *mrealloc_(void *memblock, size_t size, const char *file, int line, const c
}
/* a mrealloc_ clone with the difference it 'z'eroes the newly created memory */
-void *mreallocz_(void *memblock, size_t size, const char *file, int line, const char *func) {
+static void *mreallocz_(void *memblock, size_t size, const char *file, int line, const char *func)
+{
size_t old_size;
void *p = NULL;
@@ -497,7 +494,8 @@ void *mreallocz_(void *memblock, size_t size, const char *file, int line, const
}
-char *mstrdup_(const char *p, const char *file, int line, const char *func) {
+static char *mstrdup_(const char *p, const char *file, int line, const char *func)
+{
if(p == NULL) {
return NULL;
} else {
@@ -525,7 +523,7 @@ char *mstrdup_(const char *p, const char *file, int line, const char *func) {
* @return the copied string.
* @retval NULL if the source string is NULL or in case of error.
*/
-char *mstrndup_(const char *p, size_t size, const char *file, int line, const char *func)
+static char *mstrndup_(const char *p, size_t size, const char *file, int line, const char *func)
{
if (p == NULL) {
return NULL;
@@ -539,7 +537,8 @@ char *mstrndup_(const char *p, size_t size, const char *file, int line, const ch
}
-void mfree_(void *ptr, const char *file, int line, const char *func) {
+static void mfree_(void *ptr, const char *file, int line, const char *func)
+{
struct unit_head *head;
if (ptr == NULL)
@@ -611,7 +610,7 @@ void mfree_(void *ptr, const char *file, int line, const char *func) {
}
/* Allocating blocks */
-static struct block* block_malloc(unsigned short hash)
+static struct block *block_malloc(unsigned short hash)
{
struct block *p;
if(hash_unfill[0] != NULL) {
@@ -668,7 +667,7 @@ static struct block* block_malloc(unsigned short hash)
return p;
}
-static void block_free(struct block* p)
+static void block_free(struct block *p)
{
if( p->unfill_prev ) {
if( p->unfill_prev == &block_head) {
@@ -686,7 +685,7 @@ static void block_free(struct block* p)
hash_unfill[0] = p;
}
-size_t memmgr_usage (void)
+static size_t memmgr_usage(void)
{
return memmgr_usage_bytes / 1024;
}
@@ -695,7 +694,8 @@ size_t memmgr_usage (void)
static char memmer_logfile[128];
static FILE *log_fp;
-static void memmgr_log(char *buf, char *vcsinfo) {
+static void memmgr_log(char *buf, char *vcsinfo)
+{
if( !log_fp ) {
time_t raw;
struct tm* t;
@@ -718,7 +718,7 @@ static void memmgr_log(char *buf, char *vcsinfo) {
///
/// @param ptr Pointer to the memory
/// @return true if the memory is active
-bool memmgr_verify(void* ptr)
+static bool memmgr_verify(void *ptr)
{
struct block* block = block_first;
struct unit_head_large* large = unit_head_large_first;
@@ -759,7 +759,7 @@ bool memmgr_verify(void* ptr)
return false;
}
-static void memmgr_final (void)
+static void memmgr_final(void)
{
struct block *block = block_first;
struct unit_head_large *large = unit_head_large_first;
@@ -815,7 +815,8 @@ static void memmgr_final (void)
#endif /* LOG_MEMMGR */
}
/* [Ind/Hercules] */
-void memmgr_report (int extra) {
+void memmgr_report(int extra)
+{
struct block *block = block_first;
struct unit_head_large *large = unit_head_large_first;
unsigned int count = 0, size = 0;
@@ -919,13 +920,13 @@ static void memmgr_init_messages(void)
/*======================================
-* Initialize
-*--------------------------------------
-*/
+ * Initialize
+ *--------------------------------------
+ */
/// Tests the memory for errors and memory leaks.
-void malloc_memory_check(void)
+static void malloc_memory_check(void)
{
MEMORY_CHECK();
}
@@ -933,7 +934,8 @@ void malloc_memory_check(void)
/// Returns true if a pointer is valid.
/// The check is best-effort, false positives are possible.
-bool malloc_verify_ptr(void* ptr) {
+static bool malloc_verify_ptr(void *ptr)
+{
#ifdef USE_MEMMGR
return memmgr_verify(ptr) && MEMORY_VERIFY(ptr);
#else
@@ -942,7 +944,8 @@ bool malloc_verify_ptr(void* ptr) {
}
-size_t malloc_usage (void) {
+static size_t malloc_usage(void)
+{
#ifdef USE_MEMMGR
return memmgr_usage ();
#else
@@ -950,7 +953,8 @@ size_t malloc_usage (void) {
#endif
}
-void malloc_final (void) {
+static void malloc_final(void)
+{
#ifdef USE_MEMMGR
memmgr_final ();
#endif
@@ -966,14 +970,14 @@ void malloc_final (void) {
* chance to other modules to initialize, in case they want to silence any
* status messages, but at the same time require malloc.
*/
-void malloc_init_messages(void)
+static void malloc_init_messages(void)
{
#ifdef USE_MEMMGR
memmgr_init_messages();
#endif
}
-void malloc_init(void)
+static void malloc_init(void)
{
#ifdef USE_MEMMGR
memmgr_usage_bytes_t = 0;
@@ -993,7 +997,8 @@ void malloc_init(void)
#endif
}
-void malloc_defaults(void) {
+void malloc_defaults(void)
+{
iMalloc = &iMalloc_s;
iMalloc->init = malloc_init;
iMalloc->final = malloc_final;
diff --git a/src/common/memmgr.h b/src/common/memmgr.h
index 6381c5bfa..c7147cc5e 100644
--- a/src/common/memmgr.h
+++ b/src/common/memmgr.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -42,11 +42,6 @@
// Enable memory manager logging by default
#define LOG_MEMMGR
-// no logging for minicore
-#if defined(MINICORE) && defined(LOG_MEMMGR)
- #undef LOG_MEMMGR
-#endif
-
# define aMalloc(n) (iMalloc->malloc((n),ALC_MARK))
# define aCalloc(m,n) (iMalloc->calloc((m),(n),ALC_MARK))
# define aRealloc(p,n) (iMalloc->realloc((p),(n),ALC_MARK))
diff --git a/src/common/mmo.h b/src/common/mmo.h
index 9c29b8a0e..c29da580c 100644
--- a/src/common/mmo.h
+++ b/src/common/mmo.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -23,6 +23,7 @@
#include "config/core.h"
#include "common/cbasetypes.h"
+#include "common/db.h" // VECTORS
// server->client protocol version
// 0 - pre-?
@@ -73,6 +74,58 @@
#undef ENABLE_PACKETVER_RE
#endif // DISABLE_PACKETVER_RE
+//Uncomment the following line if your client is zero ragexe instead of normal kro clients
+//#define ENABLE_PACKETVER_ZERO
+#ifdef ENABLE_PACKETVER_ZERO
+ #define PACKETVER_ZERO
+ #undef ENABLE_PACKETVER_ZERO
+#endif // DISABLE_PACKETVER_ZERO
+
+//Uncomment the following line if your client is sakexe
+//#define ENABLE_PACKETVER_SAK
+#ifdef ENABLE_PACKETVER_SAK
+ #define PACKETVER_SAK
+ #undef ENABLE_PACKETVER_SAK
+#endif // DISABLE_PACKETVER_SAK
+
+//Uncomment the following line if your client is ragexeAD
+//#define ENABLE_PACKETVER_AD
+#ifdef ENABLE_PACKETVER_AD
+ #define PACKETVER_AD
+ #undef ENABLE_PACKETVER_AD
+#endif // DISABLE_PACKETVER_AD
+
+#if !defined(PACKETVER_RE) && !defined(PACKETVER_ZERO) && !defined(PACKETVER_SAK) && !defined(PACKETVER_AD)
+ #define PACKETVER_MAIN_NUM PACKETVER
+ #define PACKETTYPE "main"
+#else
+ #define PACKETVER_MAIN_NUM 0
+#endif
+#ifdef PACKETVER_RE
+ #define PACKETVER_RE_NUM PACKETVER
+ #define PACKETTYPE "RE"
+#else
+ #define PACKETVER_RE_NUM 0
+#endif
+#ifdef PACKETVER_ZERO
+ #define PACKETVER_ZERO_NUM PACKETVER
+ #define PACKETTYPE "zero"
+#else
+ #define PACKETVER_ZERO_NUM 0
+#endif
+#ifdef PACKETVER_SAK
+ #define PACKETVER_SAK_NUM PACKETVER
+ #define PACKETTYPE "sak"
+#else
+ #define PACKETVER_SAK_NUM 0
+#endif
+#ifdef PACKETVER_AD
+ #define PACKETVER_AD_NUM PACKETVER
+ #define PACKETTYPE "ad"
+#else
+ #define PACKETVER_AD_NUM 0
+#endif
+
// Client support for experimental RagexeRE UI present in 2012-04-10 and 2012-04-18
#if defined(PACKETVER_RE) && ( PACKETVER == 20120410 || PACKETVER == 20120418 )
#define PARTY_RECRUIT
@@ -112,9 +165,32 @@
#endif
#define MAX_CARTS (MAX_BASE_CARTS + MAX_CARTDECORATION_CARTS)
+#ifndef MAX_INVENTORY
+#if PACKETVER_MAIN_NUM >= 20181219 || PACKETVER_RE_NUM >= 20181219 || PACKETVER_ZERO_NUM >= 20181212
+#define MAX_INVENTORY 200
+#else
#define MAX_INVENTORY 100
+#endif // PACKETVER_MAIN_NUM >= 20181219 || PACKETVER_RE_NUM >= 20181219 || PACKETVER_ZERO_NUM >= 20181212
+#endif // MAX_INVENTORY
+
+#ifndef FIXED_INVENTORY_SIZE
+#define FIXED_INVENTORY_SIZE 100
+#endif
+
+#if FIXED_INVENTORY_SIZE > MAX_INVENTORY
+#error FIXED_INVENTORY_SIZE must be same or smaller than MAX_INVENTORY
+#endif
+
//Max number of characters per account. Note that changing this setting alone is not enough if the client is not hexed to support more characters as well.
-#define MAX_CHARS 9
+#if PACKETVER >= 20100413
+#ifndef MAX_CHARS
+ #define MAX_CHARS 12
+#endif
+#else
+#ifndef MAX_CHARS
+ #define MAX_CHARS 9
+#endif
+#endif
//Number of slots carded equipment can have. Never set to less than 4 as they are also used to keep the data of forged items/equipment. [Skotlex]
//Note: The client seems unable to receive data for more than 4 slots due to all related packets having a fixed size.
#define MAX_SLOTS 4
@@ -130,8 +206,8 @@
#endif
#define MAX_FAME 1000000000
#define MAX_CART 100
-#ifndef MAX_SKILL
-#define MAX_SKILL 1510
+#ifndef MAX_SKILL_DB
+#define MAX_SKILL_DB 1510 ///< Maximum number of skills in the skill DB (compacted array size)
#endif
#ifndef MAX_SKILL_ID
#define MAX_SKILL_ID 10015 // [Ind/Hercules] max used skill ID
@@ -186,6 +262,16 @@
#define MAX_QUEST_OBJECTIVES 3 // Max quest objectives for a quest
#endif
+// Achievements [Smokexyz/Hercules]
+#ifndef MAX_ACHIEVEMENT_DB
+#define MAX_ACHIEVEMENT_DB 360 // Maximum number of achievements
+#define MAX_ACHIEVEMENT_OBJECTIVES 10 // Maximum number of achievement objectives
+STATIC_ASSERT(MAX_ACHIEVEMENT_OBJECTIVES <= 10, "This value is limited by the client and database layout and should only be increased if you know the consequences.");
+#define MAX_ACHIEVEMENT_RANKS 20 // Achievement Ranks
+STATIC_ASSERT(MAX_ACHIEVEMENT_RANKS <= 255, "This value is limited by the client and database layout and should only be increased if you know the consequences.");
+#define MAX_ACHIEVEMENT_ITEM_REWARDS 10 // Achievement Rewards
+#endif
+
// for produce
#define MIN_ATTRIBUTE 0
#define MAX_ATTRIBUTE 4
@@ -256,6 +342,23 @@
#define MAX_ELESKILLTREE 3
#endif
+// Maximum item options [Smokexyz]
+#ifndef MAX_ITEM_OPTIONS
+#define MAX_ITEM_OPTIONS 5
+#endif
+STATIC_ASSERT(MAX_ITEM_OPTIONS <= 5, "This value is limited by the client and database layout and should only be increased if you know the consequences.");
+
+// RoDEX
+#define RODEX_TITLE_LENGTH (40 + 1)
+#define RODEX_BODY_LENGTH (500 + 1)
+#define RODEX_MAX_ITEM (5)
+#define RODEX_EXPIRE (1 * 15 * 24 * 60 * 60)
+#if PACKETVER >= 20170419
+#define RODEX_MAIL_PER_PAGE 32
+#else
+#define RODEX_MAIL_PER_PAGE 7
+#endif
+
// The following system marks a different job ID system used by the map server,
// which makes a lot more sense than the normal one. [Skotlex]
// These marks the "level" of the job.
@@ -271,6 +374,7 @@
#define INFINITE_DURATION (-1) // Infinite duration for status changes
struct hplugin_data_store;
+struct script_code;
enum item_types {
IT_HEALING = 0,
@@ -313,19 +417,26 @@ enum attribute_flag {
ATTR_BROKEN = 1,
};
+struct item_option {
+ int16 index;
+ int16 value;
+ uint8 param;
+};
+
struct item {
int id;
- short nameid;
+ int nameid;
short amount;
unsigned int equip; // Location(s) where item is equipped (using enum equip_pos for bitmasking).
char identify;
char refine;
char attribute;
- short card[MAX_SLOTS];
+ int card[MAX_SLOTS];
unsigned int expire_time;
char favorite;
unsigned char bound;
uint64 unique_id;
+ struct item_option option[MAX_ITEM_OPTIONS];
};
//Equip position constants
@@ -390,7 +501,7 @@ enum e_item_bound_type {
#endif
};
-enum {
+enum e_option {
OPTION_NOTHING = 0x00000000,
OPTION_SIGHT = 0x00000001,
OPTION_HIDE = 0x00000002,
@@ -416,6 +527,7 @@ enum {
OPTION_DRAGON5 = 0x04000000,
OPTION_HANBOK = 0x08000000,
OPTION_OKTOBERFEST = 0x10000000,
+ OPTION_SUMMER2 = 0x20000000,
#ifndef NEW_CARTS
OPTION_CART1 = 0x00000008,
OPTION_CART2 = 0x00000080,
@@ -427,7 +539,7 @@ enum {
#endif
// compound constants
OPTION_DRAGON = OPTION_DRAGON1|OPTION_DRAGON2|OPTION_DRAGON3|OPTION_DRAGON4|OPTION_DRAGON5,
- OPTION_COSTUME = OPTION_WEDDING|OPTION_XMAS|OPTION_SUMMER|OPTION_HANBOK|OPTION_OKTOBERFEST,
+ OPTION_COSTUME = OPTION_WEDDING | OPTION_XMAS | OPTION_SUMMER | OPTION_HANBOK | OPTION_OKTOBERFEST | OPTION_SUMMER2,
};
struct s_skill {
@@ -459,8 +571,10 @@ struct status_change_data {
};
struct storage_data {
- int storage_amount;
- struct item items[MAX_STORAGE];
+ bool save; ///< save flag.
+ bool received; ///< received flag.
+ int aggregate; ///< total item count.
+ VECTOR_DECL(struct item) item; ///< item vector.
};
struct guild_storage {
@@ -478,13 +592,14 @@ struct s_pet {
int pet_id;
short class_;
short level;
- short egg_id;//pet egg id
- short equip;//pet equip name_id
+ int egg_id;//pet egg id
+ int equip;//pet equip name_id
short intimate;//pet friendly
short hungry;//pet hungry
char name[NAME_LENGTH];
char rename_flag;
char incubate;
+ int autofeed;
};
struct s_homunculus { //[orn]
@@ -517,6 +632,7 @@ struct s_homunculus { //[orn]
int luk_value;
int8 spiritball; //for homun S [lighta]
+ int autofeed;
};
struct s_mercenary {
@@ -554,6 +670,14 @@ struct hotkey {
#endif
};
+struct achievement { // Achievements [Smokexyz/Hercules]
+ int id;
+ int objective[MAX_ACHIEVEMENT_OBJECTIVES];
+ time_t completed_at, rewarded_at;
+};
+
+VECTOR_STRUCT_DECL(char_achievements, struct achievement);
+
struct mmo_charstatus {
int char_id;
int account_id;
@@ -562,7 +686,7 @@ struct mmo_charstatus {
int mother;
int child;
- unsigned int base_exp,job_exp;
+ uint64 base_exp, job_exp;
int zeny;
int bank_vault;
@@ -572,8 +696,9 @@ struct mmo_charstatus {
unsigned int option;
short manner; // Defines how many minutes a char will be muted, each negative point is equivalent to a minute.
unsigned char karma;
- short hair,hair_color,clothes_color,body;
- int party_id,guild_id,pet_id,hom_id,mer_id,ele_id;
+ short hair, hair_color, clothes_color;
+ int body;
+ int party_id,guild_id,clan_id,pet_id,hom_id,mer_id,ele_id;
int fame;
// Mercenary Guilds Rank
@@ -581,10 +706,14 @@ struct mmo_charstatus {
int spear_faith, spear_calls;
int sword_faith, sword_calls;
- short weapon; // enum weapon_type
- short shield; // view-id
- short head_top,head_mid,head_bottom;
- short robe;
+ struct {
+ int weapon; ///< Weapon view sprite id.
+ int shield; ///< Shield view sprite id.
+ int head_top; ///< Top headgear view sprite id.
+ int head_mid; ///< Middle headgear view sprite id.
+ int head_bottom; ///< Bottom headgear view sprite id.
+ int robe; ///< Robe view sprite id.
+ } look;
char name[NAME_LENGTH];
int base_level, job_level;
@@ -594,10 +723,11 @@ struct mmo_charstatus {
uint32 mapip;
uint16 mapport;
+ int64 last_login;
struct point last_point,save_point,memo_point[MAX_MEMOPOINTS];
+ int inventorySize;
struct item inventory[MAX_INVENTORY],cart[MAX_CART];
- struct storage_data storage;
- struct s_skill skill[MAX_SKILL];
+ struct s_skill skill[MAX_SKILL_DB];
struct s_friend friends[MAX_FRIENDS]; //New friend system [Skotlex]
#ifdef HOTKEY_SAVING
@@ -616,7 +746,12 @@ struct mmo_charstatus {
uint32 uniqueitem_counter;
+ int64 attendance_timer;
+ short attendance_count;
+
unsigned char hotkey_rowshift;
+
+ int32 title_id; // Achievement Title[Dastgir/Hercules]
};
typedef enum mail_status {
@@ -698,6 +833,7 @@ struct guild_member {
char name[NAME_LENGTH];
struct map_session_data *sd;
unsigned char modified;
+ uint32 last_login;
};
struct guild_position {
@@ -772,6 +908,59 @@ struct guild_castle {
int temp_guardians_max;
};
+/**
+ * Clan Member Struct
+ */
+struct clan_member {
+ int char_id; ///< Char Id of member
+ short online; ///< Flag to know if the player is online or not
+ int64 last_login; ///< Last login of this member, used to kick if inactive for long time
+ struct map_session_data *sd; ///< Player data of member
+};
+
+/**
+ * Clan Buff Struct
+ */
+struct clan_buff {
+ int icon; ///< Status Icon to be shown in client (Use one of the 'SI_' constants)
+ struct script_code *script; ///< The script to be executed as CLan Buff
+};
+
+/**
+ * Clan Relationship Struct
+ */
+struct clan_relationship {
+ char constant[NAME_LENGTH]; ///< Unique name of the related clan
+ int clan_id; ///< Id of the related clan
+};
+
+/**
+ * Clan Struct
+ */
+struct clan {
+ int clan_id; ///< CLan's Id
+ char constant[NAME_LENGTH]; ///< Clan's Unique Name
+ char name[NAME_LENGTH]; ///< Clan's Name
+ char master[NAME_LENGTH]; ///< Name of the clan's master (used for clan information on client)
+ char map[MAP_NAME_LENGTH_EXT]; ///< The map of that clan (used for clan information on client)
+ struct clan_buff buff; ///< The buff for a clan when a member joins it
+ short max_member; ///< Limit of Members
+ short member_count; ///< Holds the amount of members in this clan, online and offline
+ short connect_member; ///< Members that are Online
+ VECTOR_DECL(struct clan_member) members; ///< Vector of Members
+ VECTOR_DECL(struct clan_relationship) allies; ///< Vector of Allies
+ VECTOR_DECL(struct clan_relationship) antagonists; ///< Vector of Antagonists
+ int kick_time; /// Needed inactive time to be kicked
+ int check_time; ///< Interval to check for inactive players
+ int tid; ///< Timer ID for inactivity kick
+ bool received; ///< Whether or not the requested data was received
+ int req_state; ///< Flag for knowing what to do after receiving the data from inter server
+ int req_count_tid; ///< Timer ID for the timer that handles the timeout of requests for interserver to count members
+ int req_kick_tid; ///< Timer ID for the timer that handles the timeout of requests for interserver to kick inactive members
+
+ struct hplugin_data_store *hdata; ///< HPM Plugin Data Store
+};
+
struct fame_list {
int id;
int fame;
@@ -786,6 +975,47 @@ enum fame_list_type {
RANKTYPE_PK = 3, //Not supported yet
};
+struct rodex_message {
+ int64 id;
+ int sender_id;
+ char sender_name[NAME_LENGTH];
+ int receiver_id;
+ int receiver_accountid;
+ char receiver_name[NAME_LENGTH];
+ char title[RODEX_TITLE_LENGTH];
+ char body[RODEX_BODY_LENGTH];
+ struct {
+ struct item item;
+ int idx;
+ } items[RODEX_MAX_ITEM];
+ int64 zeny;
+ uint8 type;
+ int8 opentype;
+ bool is_read;
+ bool sender_read;
+ bool is_deleted;
+ int send_date;
+ int expire_date;
+ int weight;
+ int items_count;
+};
+
+VECTOR_STRUCT_DECL(rodex_maillist, struct rodex_message);
+
+enum rodex_opentype {
+ RODEX_OPENTYPE_MAIL = 0,
+ RODEX_OPENTYPE_ACCOUNT = 1,
+ RODEX_OPENTYPE_RETURN = 2,
+ RODEX_OPENTYPE_UNSET = 3,
+};
+
+enum MAIL_TYPE {
+ MAIL_TYPE_TEXT = 0x0,
+ MAIL_TYPE_ZENY = 0x2,
+ MAIL_TYPE_ITEM = 0x4,
+ MAIL_TYPE_NPC = 0x8
+};
+
/**
* Guild Basic Information
* It is used to request changes via intif_guild_change_basicinfo in map-server and to
@@ -843,7 +1073,7 @@ enum {
};
//These mark the ID of the jobs, as expected by the client. [Skotlex]
-enum {
+enum e_class {
JOB_NOVICE,
JOB_SWORDMAN,
JOB_MAGE,
@@ -1062,6 +1292,7 @@ enum ammo_type {
A_KUNAI, //7
A_CANNONBALL, //8
A_THROWWEAPON, //9
+ MAX_AMMO_TYPE
};
enum e_char_server_type {
@@ -1105,6 +1336,21 @@ enum hz_char_ask_name_answer {
CHAR_ASK_NAME_ANS_OFFLINE = 3, // login-server offline
};
+/**
+ * Quest Info Types
+ */
+enum questinfo_type {
+ QINFO_JOB,
+ QINFO_SEX,
+ QINFO_BASE_LEVEL,
+ QINFO_JOB_LEVEL,
+ QINFO_ITEM,
+ QINFO_HOMUN_LEVEL,
+ QINFO_HOMUN_TYPE,
+ QINFO_QUEST,
+ QINFO_MERCENARY_CLASS
+};
+
/* packet size constant for itemlist */
#if MAX_INVENTORY > MAX_STORAGE && MAX_INVENTORY > MAX_CART
#define MAX_ITEMLIST MAX_INVENTORY
@@ -1123,4 +1369,8 @@ enum hz_char_ask_name_answer {
#error MAX_SLOTS it too small
#endif
+#ifdef MAX_SKILL
+#error MAX_SKILL has been replaced by MAX_SKILL_DB. Please update your custom definitions.
+#endif
+
#endif /* COMMON_MMO_H */
diff --git a/src/common/mutex.c b/src/common/mutex.c
index 464a54161..dd63d2adc 100644
--- a/src/common/mutex.c
+++ b/src/common/mutex.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) rAthena Project (www.rathena.org)
*
* Hercules is free software: you can redistribute it and/or modify
@@ -39,7 +39,7 @@
* Implementation of the mutex interface.
*/
-struct mutex_interface mutex_s;
+static struct mutex_interface mutex_s;
struct mutex_interface *mutex;
struct mutex_data {
@@ -65,7 +65,7 @@ struct cond_data {
/* Mutex */
/// @copydoc mutex_interface::create()
-struct mutex_data *mutex_create(void)
+static struct mutex_data *mutex_create(void)
{
struct mutex_data *m = aMalloc(sizeof(struct mutex_data));
if (m == NULL) {
@@ -83,7 +83,7 @@ struct mutex_data *mutex_create(void)
}
/// @copydoc mutex_interface::destroy()
-void mutex_destroy(struct mutex_data *m)
+static void mutex_destroy(struct mutex_data *m)
{
nullpo_retv(m);
#ifdef WIN32
@@ -96,7 +96,7 @@ void mutex_destroy(struct mutex_data *m)
}
/// @copydoc mutex_interface::lock()
-void mutex_lock(struct mutex_data *m)
+static void mutex_lock(struct mutex_data *m)
{
nullpo_retv(m);
#ifdef WIN32
@@ -107,7 +107,7 @@ void mutex_lock(struct mutex_data *m)
}
/// @copydoc mutex_interface::trylock()
-bool mutex_trylock(struct mutex_data *m)
+static bool mutex_trylock(struct mutex_data *m)
{
nullpo_retr(false, m);
#ifdef WIN32
@@ -121,7 +121,7 @@ bool mutex_trylock(struct mutex_data *m)
}
/// @copydoc mutex_interface::unlock()
-void mutex_unlock(struct mutex_data *m)
+static void mutex_unlock(struct mutex_data *m)
{
nullpo_retv(m);
#ifdef WIN32
@@ -134,7 +134,7 @@ void mutex_unlock(struct mutex_data *m)
/* Conditional variable */
/// @copydoc mutex_interface::cond_create()
-struct cond_data *cond_create(void)
+static struct cond_data *cond_create(void)
{
struct cond_data *c = aMalloc(sizeof(struct cond_data));
if (c == NULL) {
@@ -155,7 +155,7 @@ struct cond_data *cond_create(void)
}
/// @copydoc mutex_interface::cond_destroy()
-void cond_destroy(struct cond_data *c)
+static void cond_destroy(struct cond_data *c)
{
nullpo_retv(c);
#ifdef WIN32
@@ -170,7 +170,7 @@ void cond_destroy(struct cond_data *c)
}
/// @copydoc mutex_interface::cond_wait()
-void cond_wait(struct cond_data *c, struct mutex_data *m, sysint timeout_ticks)
+static void cond_wait(struct cond_data *c, struct mutex_data *m, sysint timeout_ticks)
{
#ifdef WIN32
register DWORD ms;
@@ -224,7 +224,7 @@ void cond_wait(struct cond_data *c, struct mutex_data *m, sysint timeout_ticks)
}
/// @copydoc mutex_interface::cond_signal()
-void cond_signal(struct cond_data *c)
+static void cond_signal(struct cond_data *c)
{
#ifdef WIN32
# if 0
@@ -245,7 +245,7 @@ void cond_signal(struct cond_data *c)
}
/// @copydoc mutex_interface::cond_broadcast()
-void cond_broadcast(struct cond_data *c)
+static void cond_broadcast(struct cond_data *c)
{
#ifdef WIN32
# if 0
diff --git a/src/common/mutex.h b/src/common/mutex.h
index 0569fb0da..fc3ef4abc 100644
--- a/src/common/mutex.h
+++ b/src/common/mutex.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) rAthena Project (www.rathena.org)
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/common/nullpo.c b/src/common/nullpo.c
index 6525793bf..e19f7f846 100644
--- a/src/common/nullpo.c
+++ b/src/common/nullpo.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -32,7 +32,7 @@
#include <execinfo.h>
#endif // HAVE_EXECINFO
-struct nullpo_interface nullpo_s;
+static struct nullpo_interface nullpo_s;
struct nullpo_interface *nullpo;
/**
@@ -44,7 +44,8 @@ struct nullpo_interface *nullpo;
* @param targetname Name of the checked symbol
* @param title Message title to display (i.e. failed assertion or nullpo info)
*/
-void assert_report(const char *file, int line, const char *func, const char *targetname, const char *title) {
+static void assert_report(const char *file, int line, const char *func, const char *targetname, const char *title)
+{
#ifdef HAVE_EXECINFO
void *array[10];
int size;
@@ -72,7 +73,8 @@ void assert_report(const char *file, int line, const char *func, const char *tar
/**
*
**/
-void nullpo_defaults(void) {
+void nullpo_defaults(void)
+{
nullpo = &nullpo_s;
nullpo->assert_report = assert_report;
}
diff --git a/src/common/nullpo.h b/src/common/nullpo.h
index 28d058dc0..398531f13 100644
--- a/src/common/nullpo.h
+++ b/src/common/nullpo.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -23,15 +23,10 @@
#include "common/hercules.h"
-// enabled by default on debug builds
-#if defined(DEBUG) && !defined(NULLPO_CHECK)
+// if need disable nullpo checks this line can be commented
#define NULLPO_CHECK
-#endif
-
-// Skip assert checks on release builds
-#if !defined(RELEASE) && !defined(ASSERT_CHECK)
+// if need disable asserts checks this line can be commented
#define ASSERT_CHECK
-#endif
/** Assert */
diff --git a/src/common/packets.c b/src/common/packets.c
new file mode 100644
index 000000000..429418e0a
--- /dev/null
+++ b/src/common/packets.c
@@ -0,0 +1,64 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2012-2018 Hercules Dev Team
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#define HERCULES_CORE
+
+#include "config/core.h" // CONSOLE_INPUT, MAX_CONSOLE_INPUT
+#include "common/packets.h"
+
+#include "common/cbasetypes.h"
+#include "common/mmo.h"
+#include "common/nullpo.h"
+
+#include <string.h>
+
+static struct packets_interface packets_s;
+struct packets_interface *packets;
+
+static void packets_init(void)
+{
+ packets->addLens();
+}
+
+static void packets_addLens(void)
+{
+#define packetLen(id, len) packets->addLen(id, len);
+#include "common/packets_len.h"
+}
+
+static void packets_addLen(int id, int len)
+{
+ Assert_retv(id <= MAX_PACKET_DB && id >= MIN_PACKET_DB);
+ packets->db[id] = len;
+}
+
+static void packets_final(void)
+{
+}
+
+void packets_defaults(void)
+{
+ packets = &packets_s;
+ packets->init = packets_init;
+ packets->final = packets_final;
+ packets->addLens = packets_addLens;
+ packets->addLen = packets_addLen;
+
+ memset(&packets->db, 0, sizeof(packets->db));
+}
diff --git a/src/common/packets.h b/src/common/packets.h
new file mode 100644
index 000000000..83c92c7fa
--- /dev/null
+++ b/src/common/packets.h
@@ -0,0 +1,47 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2013-2018 Hercules Dev Team
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef COMMON_PACKETS_H
+#define COMMON_PACKETS_H
+
+#include "common/hercules.h"
+
+#ifndef MIN_PACKET_DB
+#define MIN_PACKET_DB 0x0064
+#endif
+
+#ifndef MAX_PACKET_DB
+#define MAX_PACKET_DB 0x0F00
+#endif
+
+struct packets_interface {
+ void (*init) (void);
+ void (*final) (void);
+ void (*addLens) (void);
+ void (*addLen) (int id, int len);
+ int db[MAX_PACKET_DB + 1];
+};
+
+#ifdef HERCULES_CORE
+void packets_defaults(void);
+#endif // HERCULES_CORE
+
+HPShared struct packets_interface *packets;
+
+#endif /* COMMON_PACKETS_H */
diff --git a/src/common/packets/packets2003_len_main.h b/src/common/packets/packets2003_len_main.h
new file mode 100644
index 000000000..a4ff38e18
--- /dev/null
+++ b/src/common/packets/packets2003_len_main.h
@@ -0,0 +1,1258 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2003_LEN_MAIN_H
+#define COMMON_PACKETS2003_LEN_MAIN_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 108) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 19) // CZ_ENTER
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 54) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 41) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+packetLen(0x007e, 6) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 5) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+packetLen(0x0089, 7) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+packetLen(0x0094, 6) // CZ_REQNAME
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+packetLen(0x009b, 5) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+packetLen(0x009f, 6) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+packetLen(0x00a2, 6) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+packetLen(0x00a7, 8) // CZ_USE_ITEM
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 7) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+packetLen(0x00f5, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+packetLen(0x00f7, 2) // CZ_CLOSE_STORE
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+#if PACKETVER >= 20031117
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20031110
+packetLen(0x00f9, 28) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20031028
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+#endif
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+#if PACKETVER >= 20031117
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20031110
+packetLen(0x0104, 81) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20031028
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+#endif
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+packetLen(0x0113, 10) // CZ_USE_SKILL
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 10) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0158
+packetLen(0x0158, -1) // ZC_ACK_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+packetLen(0x0190, 90) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 6) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, 4) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 35) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, 8) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+#if PACKETVER >= 20031110
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+#elif PACKETVER >= 20031028
+packetLen(0x01e6, 28) // ZC_COUPLENAME
+#endif
+
+// Packet: 0x01e7
+#if PACKETVER >= 20031110
+packetLen(0x01e7, 2) // CZ_DORIDORI
+#elif PACKETVER >= 20031028
+packetLen(0x01e7, 81) // CZ_DORIDORI
+#endif
+
+// Packet: 0x01e8
+#if PACKETVER >= 20031117
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20031110
+// removed
+#elif PACKETVER >= 20031028
+packetLen(0x01e8, 26) // CZ_MAKE_GROUP2
+#endif
+
+// Packet: 0x01e9
+#if PACKETVER >= 20031117
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20031110
+// removed
+#elif PACKETVER >= 20031103
+packetLen(0x01e9, 2) // ZC_ADD_MEMBER_TO_GROUP2
+#endif
+
+// Packet: 0x01ea
+#if PACKETVER >= 20031117
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+#endif
+
+// Packet: 0x01eb
+#if PACKETVER >= 20031124
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+#endif
+
+// Packet: 0x01ec
+#if PACKETVER >= 20031124
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+#endif
+
+// Packet: 0x01ed
+#if PACKETVER >= 20031124
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+#endif
+
+// Packet: 0x01ee
+#if PACKETVER >= 20031208
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+#endif
+
+// Packet: 0x01ef
+#if PACKETVER >= 20031218
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+#endif
+
+// Packet: 0x01f0
+#if PACKETVER >= 20031218
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+#endif
+
+// Packet: 0x01f1
+#if PACKETVER >= 20031223
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+#endif
+
+
+#endif /* COMMON_PACKETS2003_LEN_MAIN_H */
diff --git a/src/common/packets/packets2003_len_sak.h b/src/common/packets/packets2003_len_sak.h
new file mode 100644
index 000000000..9f393b8cf
--- /dev/null
+++ b/src/common/packets/packets2003_len_sak.h
@@ -0,0 +1,1258 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2003_LEN_SAK_H
+#define COMMON_PACKETS2003_LEN_SAK_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 108) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 19) // CZ_ENTER
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 54) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 41) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+packetLen(0x007e, 6) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 5) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+packetLen(0x0089, 7) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+packetLen(0x0094, 6) // CZ_REQNAME
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+packetLen(0x009b, 5) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+packetLen(0x009f, 6) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+packetLen(0x00a2, 6) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+packetLen(0x00a7, 8) // CZ_USE_ITEM
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 7) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+packetLen(0x00f5, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+packetLen(0x00f7, 2) // CZ_CLOSE_STORE
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+#if PACKETVER >= 20031117
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20031110
+packetLen(0x00f9, 28) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20031029
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+#endif
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+#if PACKETVER >= 20031117
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20031110
+packetLen(0x0104, 81) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20031029
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+#endif
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+packetLen(0x0113, 10) // CZ_USE_SKILL
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 10) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0158
+packetLen(0x0158, -1) // ZC_ACK_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+packetLen(0x0190, 90) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 6) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, 4) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 35) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, 8) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+#if PACKETVER >= 20031110
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+#elif PACKETVER >= 20031029
+packetLen(0x01e6, 28) // ZC_COUPLENAME
+#endif
+
+// Packet: 0x01e7
+#if PACKETVER >= 20031110
+packetLen(0x01e7, 2) // CZ_DORIDORI
+#elif PACKETVER >= 20031029
+packetLen(0x01e7, 81) // CZ_DORIDORI
+#endif
+
+// Packet: 0x01e8
+#if PACKETVER >= 20031117
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20031110
+// removed
+#elif PACKETVER >= 20031029
+packetLen(0x01e8, 26) // CZ_MAKE_GROUP2
+#endif
+
+// Packet: 0x01e9
+#if PACKETVER >= 20031117
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20031110
+// removed
+#elif PACKETVER >= 20031103
+packetLen(0x01e9, 2) // ZC_ADD_MEMBER_TO_GROUP2
+#endif
+
+// Packet: 0x01ea
+#if PACKETVER >= 20031117
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+#endif
+
+// Packet: 0x01eb
+#if PACKETVER >= 20031124
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+#endif
+
+// Packet: 0x01ec
+#if PACKETVER >= 20031124
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+#endif
+
+// Packet: 0x01ed
+#if PACKETVER >= 20031124
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+#endif
+
+// Packet: 0x01ee
+#if PACKETVER >= 20031208
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+#endif
+
+// Packet: 0x01ef
+#if PACKETVER >= 20031218
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+#endif
+
+// Packet: 0x01f0
+#if PACKETVER >= 20031218
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+#endif
+
+// Packet: 0x01f1
+#if PACKETVER >= 20031223
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+#endif
+
+
+#endif /* COMMON_PACKETS2003_LEN_SAK_H */
diff --git a/src/common/packets/packets2004_len_ad.h b/src/common/packets/packets2004_len_ad.h
new file mode 100644
index 000000000..18ab6d9ee
--- /dev/null
+++ b/src/common/packets/packets2004_len_ad.h
@@ -0,0 +1,1620 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2004_LEN_AD_H
+#define COMMON_PACKETS2004_LEN_AD_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 108) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+#if PACKETVER >= 20041129
+packetLen(0x0072, 26) // CZ_ENTER
+#elif PACKETVER >= 20041025
+packetLen(0x0072, 14) // CZ_ENTER
+#elif PACKETVER >= 20041005
+packetLen(0x0072, 15) // CZ_ENTER
+#elif PACKETVER >= 20040920
+packetLen(0x0072, 13) // CZ_ENTER
+#elif PACKETVER >= 20040906
+packetLen(0x0072, 17) // CZ_ENTER
+#elif PACKETVER >= 20040809
+packetLen(0x0072, 10) // CZ_ENTER
+#elif PACKETVER >= 20040804
+packetLen(0x0072, 14) // CZ_ENTER
+#endif
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 54) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 41) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+#if PACKETVER >= 20041129
+packetLen(0x007e, 34) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20041005
+packetLen(0x007e, 14) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20040920
+packetLen(0x007e, 13) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20040906
+packetLen(0x007e, 15) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20040809
+packetLen(0x007e, 26) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20040804
+packetLen(0x007e, 33) // CZ_REQUEST_TIME
+#endif
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+#if PACKETVER >= 20041129
+packetLen(0x0085, -1) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20041025
+packetLen(0x0085, 19) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20041005
+packetLen(0x0085, 18) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20040920
+packetLen(0x0085, 15) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20040906
+packetLen(0x0085, 17) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20040809
+packetLen(0x0085, 25) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20040804
+packetLen(0x0085, 20) // CZ_REQUEST_MOVE
+#endif
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+#if PACKETVER >= 20041129
+packetLen(0x0089, 9) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20041025
+packetLen(0x0089, 8) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20041005
+packetLen(0x0089, 7) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20040920
+packetLen(0x0089, 6) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20040906
+packetLen(0x0089, 7) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20040809
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20040804
+packetLen(0x0089, 15) // CZ_REQUEST_ACT
+#endif
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+#if PACKETVER >= 20041129
+packetLen(0x008c, 8)
+#elif PACKETVER >= 20041025
+packetLen(0x008c, 102)
+#elif PACKETVER >= 20041005
+packetLen(0x008c, 110)
+#elif PACKETVER >= 20040920
+packetLen(0x008c, 108)
+#elif PACKETVER >= 20040906
+packetLen(0x008c, 110)
+#elif PACKETVER >= 20040809
+packetLen(0x008c, 22)
+#elif PACKETVER >= 20040804
+packetLen(0x008c, 23)
+#endif
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+#if PACKETVER >= 20041129
+packetLen(0x0094, 20) // CZ_REQNAME
+#elif PACKETVER >= 20041025
+packetLen(0x0094, 10) // CZ_REQNAME
+#elif PACKETVER >= 20040920
+packetLen(0x0094, 12) // CZ_REQNAME
+#elif PACKETVER >= 20040906
+packetLen(0x0094, 10) // CZ_REQNAME
+#elif PACKETVER >= 20040809
+packetLen(0x0094, 8) // CZ_REQNAME
+#elif PACKETVER >= 20040804
+packetLen(0x0094, 10) // CZ_REQNAME
+#endif
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+#if PACKETVER >= 20041129
+packetLen(0x009b, 2) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20041025
+packetLen(0x009b, 11) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20041005
+packetLen(0x009b, 13) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20040920
+packetLen(0x009b, 10) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20040906
+packetLen(0x009b, 16) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20040809
+packetLen(0x009b, 8) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20040804
+packetLen(0x009b, 6) // CZ_CHANGE_DIRECTION
+#endif
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+#if PACKETVER >= 20041129
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20040906
+packetLen(0x009f, -1) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20040809
+packetLen(0x009f, 11) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20040804
+packetLen(0x009f, 13) // CZ_ITEM_PICKUP
+#endif
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+#if PACKETVER >= 20041129
+packetLen(0x00a2, 9) // CZ_ITEM_THROW
+#elif PACKETVER >= 20041025
+packetLen(0x00a2, 15) // CZ_ITEM_THROW
+#elif PACKETVER >= 20041005
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+#elif PACKETVER >= 20040920
+packetLen(0x00a2, 16) // CZ_ITEM_THROW
+#elif PACKETVER >= 20040906
+packetLen(0x00a2, 7) // CZ_ITEM_THROW
+#elif PACKETVER >= 20040809
+packetLen(0x00a2, 102) // CZ_ITEM_THROW
+#elif PACKETVER >= 20040804
+packetLen(0x00a2, 103) // CZ_ITEM_THROW
+#endif
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+#if PACKETVER >= 20041129
+packetLen(0x00a7, 13)
+#elif PACKETVER >= 20041025
+packetLen(0x00a7, 22)
+#elif PACKETVER >= 20041005
+packetLen(0x00a7, 30)
+#elif PACKETVER >= 20040920
+packetLen(0x00a7, 28)
+#elif PACKETVER >= 20040906
+packetLen(0x00a7, 30)
+#elif PACKETVER >= 20040809
+packetLen(0x00a7, 15)
+#elif PACKETVER >= 20040804
+packetLen(0x00a7, 12)
+#endif
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 7) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+#if PACKETVER >= 20041129
+packetLen(0x00f3, 23) // CZ_REQUEST_CHAT
+#elif PACKETVER >= 20041025
+packetLen(0x00f3, 11) // CZ_REQUEST_CHAT
+#elif PACKETVER >= 20041005
+packetLen(0x00f3, 8) // CZ_REQUEST_CHAT
+#elif PACKETVER >= 20040920
+packetLen(0x00f3, 15) // CZ_REQUEST_CHAT
+#elif PACKETVER >= 20040906
+packetLen(0x00f3, 12) // CZ_REQUEST_CHAT
+#elif PACKETVER >= 20040804
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+#endif
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+#if PACKETVER >= 20041129
+packetLen(0x00f5, 32) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20041025
+packetLen(0x00f5, 26) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20040920
+packetLen(0x00f5, 29) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20040906
+packetLen(0x00f5, 43) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20040809
+packetLen(0x00f5, 14) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20040804
+packetLen(0x00f5, 17) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#endif
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+#if PACKETVER >= 20041129
+packetLen(0x00f7, 11) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20040906
+packetLen(0x00f7, 2) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20040809
+packetLen(0x00f7, 8) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20040804
+packetLen(0x00f7, 10) // CZ_REQUEST_TIME
+#endif
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+#if PACKETVER >= 20041129
+packetLen(0x0113, 114) // CZ_USE_SKILL
+#elif PACKETVER >= 20041025
+packetLen(0x0113, 8) // CZ_USE_SKILL
+#elif PACKETVER >= 20041005
+packetLen(0x0113, 7) // CZ_USE_SKILL
+#elif PACKETVER >= 20040920
+packetLen(0x0113, 9) // CZ_USE_SKILL
+#elif PACKETVER >= 20040906
+packetLen(0x0113, 10) // CZ_USE_SKILL
+#elif PACKETVER >= 20040809
+packetLen(0x0113, 14) // CZ_USE_SKILL
+#elif PACKETVER >= 20040804
+packetLen(0x0113, 16) // CZ_USE_SKILL
+#endif
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+#if PACKETVER >= 20041129
+packetLen(0x0116, 20) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20041025
+packetLen(0x0116, 8) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20041005
+packetLen(0x0116, 7) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20040920
+packetLen(0x0116, 9) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20040906
+packetLen(0x0116, 10) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20040804
+packetLen(0x0116, 2) // CZ_USE_SKILL_TOGROUND
+#endif
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0158
+packetLen(0x0158, -1) // ZC_ACK_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+#if PACKETVER >= 20041129
+packetLen(0x0190, 17) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20041025
+packetLen(0x0190, 25) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20041005
+packetLen(0x0190, 22) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20040920
+packetLen(0x0190, 26) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20040906
+packetLen(0x0190, 24) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20040809
+packetLen(0x0190, 22) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20040804
+packetLen(0x0190, 26) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#endif
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+#if PACKETVER >= 20041129
+packetLen(0x0193, 21) // CZ_REQNAME_BYGID
+#elif PACKETVER >= 20041025
+packetLen(0x0193, 22) // CZ_REQNAME_BYGID
+#elif PACKETVER >= 20041005
+packetLen(0x0193, 21) // CZ_REQNAME_BYGID
+#elif PACKETVER >= 20040920
+packetLen(0x0193, 22) // CZ_REQNAME_BYGID
+#elif PACKETVER >= 20040906
+packetLen(0x0193, 21) // CZ_REQNAME_BYGID
+#elif PACKETVER >= 20040809
+packetLen(0x0193, 19) // CZ_REQNAME_BYGID
+#elif PACKETVER >= 20040804
+packetLen(0x0193, 9) // CZ_REQNAME_BYGID
+#endif
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+#if PACKETVER >= 20041213
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20040804
+packetLen(0x019c, 4) // CZ_LOCALBROADCAST
+#endif
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 35) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+#if PACKETVER >= 20041213
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+#endif
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+#if PACKETVER >= 20041213
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20040804
+packetLen(0x01d5, 8) // CZ_INPUT_EDITDLGSTR
+#endif
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+packetLen(0x01fd, 4) // CZ_REQ_ITEMREPAIR
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 24) // ZC_STARSKILL
+
+// Packet: 0x020f
+#if PACKETVER >= 20040817
+packetLen(0x020f, 10) // CZ_REQ_PVPPOINT
+#endif
+
+// Packet: 0x0210
+#if PACKETVER >= 20040817
+packetLen(0x0210, 22) // ZC_ACK_PVPPOINT
+#endif
+
+// Packet: 0x0212
+#if PACKETVER >= 20040816
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+#endif
+
+// Packet: 0x0213
+#if PACKETVER >= 20040816
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+#endif
+
+// Packet: 0x0214
+#if PACKETVER >= 20040816
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+#endif
+
+// Packet: 0x0215
+#if PACKETVER >= 20041101
+packetLen(0x0215, 6) // ZC_SKILLMSG
+#endif
+
+// Packet: 0x0216
+#if PACKETVER >= 20041108
+packetLen(0x0216, 6) // ZC_BABYMSG
+#endif
+
+// Packet: 0x0217
+#if PACKETVER >= 20041108
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+#endif
+
+// Packet: 0x0218
+#if PACKETVER >= 20041108
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+#endif
+
+// Packet: 0x0219
+#if PACKETVER >= 20041108
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+#endif
+
+// Packet: 0x021a
+#if PACKETVER >= 20041108
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+#endif
+
+// Packet: 0x021b
+#if PACKETVER >= 20041108
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+#endif
+
+// Packet: 0x021c
+#if PACKETVER >= 20041108
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+#endif
+
+// Packet: 0x021d
+#if PACKETVER >= 20041115
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+#endif
+
+// Packet: 0x021e
+#if PACKETVER >= 20041213
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+#endif
+
+// Packet: 0x021f
+#if PACKETVER >= 20041213
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+#endif
+
+// Packet: 0x0220
+#if PACKETVER >= 20041213
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+#endif
+
+// Packet: 0x0221
+#if PACKETVER >= 20041129
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+#endif
+
+// Packet: 0x0222
+#if PACKETVER >= 20041129
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+#endif
+
+// Packet: 0x0223
+#if PACKETVER >= 20041129
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+#endif
+
+
+#endif /* COMMON_PACKETS2004_LEN_AD_H */
diff --git a/src/common/packets/packets2004_len_main.h b/src/common/packets/packets2004_len_main.h
new file mode 100644
index 000000000..3963dd0a2
--- /dev/null
+++ b/src/common/packets/packets2004_len_main.h
@@ -0,0 +1,1810 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2004_LEN_MAIN_H
+#define COMMON_PACKETS2004_LEN_MAIN_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 108) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+#if PACKETVER >= 20041220
+packetLen(0x0072, 26) // CZ_ENTER
+#elif PACKETVER >= 20041216
+packetLen(0x0072, 19) // CZ_ENTER
+#elif PACKETVER >= 20041129
+packetLen(0x0072, 26) // CZ_ENTER
+#elif PACKETVER >= 20041025
+packetLen(0x0072, 14) // CZ_ENTER
+#elif PACKETVER >= 20041005
+packetLen(0x0072, 15) // CZ_ENTER
+#elif PACKETVER >= 20040920
+packetLen(0x0072, 13) // CZ_ENTER
+#elif PACKETVER >= 20040906
+packetLen(0x0072, 17) // CZ_ENTER
+#elif PACKETVER >= 20040809
+packetLen(0x0072, 10) // CZ_ENTER
+#elif PACKETVER >= 20040726
+packetLen(0x0072, 14) // CZ_ENTER
+#elif PACKETVER >= 20040712
+packetLen(0x0072, 39) // CZ_ENTER
+#elif PACKETVER >= 20040705
+packetLen(0x0072, 22) // CZ_ENTER
+#elif PACKETVER >= 20040107
+packetLen(0x0072, 19) // CZ_ENTER
+#endif
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 54) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 41) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+#if PACKETVER >= 20041220
+packetLen(0x007e, 34) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20041216
+packetLen(0x007e, 6) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20041129
+packetLen(0x007e, 34) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20041005
+packetLen(0x007e, 14) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20040920
+packetLen(0x007e, 13) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20040906
+packetLen(0x007e, 15) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20040809
+packetLen(0x007e, 26) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20040726
+packetLen(0x007e, 33) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20040107
+packetLen(0x007e, 6) // CZ_REQUEST_TIME
+#endif
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+#if PACKETVER >= 20041220
+packetLen(0x0085, -1) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20041216
+packetLen(0x0085, 5) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20041129
+packetLen(0x0085, -1) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20041025
+packetLen(0x0085, 19) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20041005
+packetLen(0x0085, 18) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20040920
+packetLen(0x0085, 15) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20040906
+packetLen(0x0085, 17) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20040809
+packetLen(0x0085, 25) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20040726
+packetLen(0x0085, 20) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20040712
+packetLen(0x0085, 9) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20040705
+packetLen(0x0085, 8) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20040107
+packetLen(0x0085, 5) // CZ_REQUEST_MOVE
+#endif
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+#if PACKETVER >= 20041220
+packetLen(0x0089, 9) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20041216
+packetLen(0x0089, 7) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20041129
+packetLen(0x0089, 9) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20041025
+packetLen(0x0089, 8) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20041005
+packetLen(0x0089, 7) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20040920
+packetLen(0x0089, 6) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20040906
+packetLen(0x0089, 7) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20040809
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20040726
+packetLen(0x0089, 15) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20040107
+packetLen(0x0089, 7) // CZ_REQUEST_ACT
+#endif
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+#if PACKETVER >= 20041220
+packetLen(0x008c, 8)
+#elif PACKETVER >= 20041216
+packetLen(0x008c, -1)
+#elif PACKETVER >= 20041129
+packetLen(0x008c, 8)
+#elif PACKETVER >= 20041025
+packetLen(0x008c, 102)
+#elif PACKETVER >= 20041005
+packetLen(0x008c, 110)
+#elif PACKETVER >= 20040920
+packetLen(0x008c, 108)
+#elif PACKETVER >= 20040906
+packetLen(0x008c, 110)
+#elif PACKETVER >= 20040809
+packetLen(0x008c, 22)
+#elif PACKETVER >= 20040726
+packetLen(0x008c, 23)
+#elif PACKETVER >= 20040107
+packetLen(0x008c, -1) // CZ_REQUEST_CHAT
+#endif
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+#if PACKETVER >= 20041220
+packetLen(0x0094, 20) // CZ_REQNAME
+#elif PACKETVER >= 20041216
+packetLen(0x0094, 6) // CZ_REQNAME
+#elif PACKETVER >= 20041129
+packetLen(0x0094, 20) // CZ_REQNAME
+#elif PACKETVER >= 20041025
+packetLen(0x0094, 10) // CZ_REQNAME
+#elif PACKETVER >= 20040920
+packetLen(0x0094, 12) // CZ_REQNAME
+#elif PACKETVER >= 20040906
+packetLen(0x0094, 10) // CZ_REQNAME
+#elif PACKETVER >= 20040809
+packetLen(0x0094, 8) // CZ_REQNAME
+#elif PACKETVER >= 20040726
+packetLen(0x0094, 10) // CZ_REQNAME
+#elif PACKETVER >= 20040107
+packetLen(0x0094, 6) // CZ_REQNAME
+#endif
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+#if PACKETVER >= 20041220
+packetLen(0x009b, 2) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20041216
+packetLen(0x009b, 5) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20041129
+packetLen(0x009b, 2) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20041025
+packetLen(0x009b, 11) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20041005
+packetLen(0x009b, 13) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20040920
+packetLen(0x009b, 10) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20040906
+packetLen(0x009b, 16) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20040809
+packetLen(0x009b, 8) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20040726
+packetLen(0x009b, 6) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20040712
+packetLen(0x009b, 13) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20040107
+packetLen(0x009b, 5) // CZ_CHANGE_DIRECTION
+#endif
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+#if PACKETVER >= 20041220
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20041216
+packetLen(0x009f, 6) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20041129
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20040906
+packetLen(0x009f, -1) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20040809
+packetLen(0x009f, 11) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20040726
+packetLen(0x009f, 13) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20040712
+packetLen(0x009f, 10) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20040107
+packetLen(0x009f, 6) // CZ_ITEM_PICKUP
+#endif
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+#if PACKETVER >= 20041220
+packetLen(0x00a2, 9) // CZ_ITEM_THROW
+#elif PACKETVER >= 20041216
+packetLen(0x00a2, 6) // CZ_ITEM_THROW
+#elif PACKETVER >= 20041129
+packetLen(0x00a2, 9) // CZ_ITEM_THROW
+#elif PACKETVER >= 20041025
+packetLen(0x00a2, 15) // CZ_ITEM_THROW
+#elif PACKETVER >= 20041005
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+#elif PACKETVER >= 20040920
+packetLen(0x00a2, 16) // CZ_ITEM_THROW
+#elif PACKETVER >= 20040906
+packetLen(0x00a2, 7) // CZ_ITEM_THROW
+#elif PACKETVER >= 20040809
+packetLen(0x00a2, 102) // CZ_ITEM_THROW
+#elif PACKETVER >= 20040726
+packetLen(0x00a2, 103) // CZ_ITEM_THROW
+#elif PACKETVER >= 20040107
+packetLen(0x00a2, 6) // CZ_ITEM_THROW
+#endif
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+#if PACKETVER >= 20041220
+packetLen(0x00a7, 13)
+#elif PACKETVER >= 20041216
+packetLen(0x00a7, 8)
+#elif PACKETVER >= 20041129
+packetLen(0x00a7, 13)
+#elif PACKETVER >= 20041025
+packetLen(0x00a7, 22)
+#elif PACKETVER >= 20041005
+packetLen(0x00a7, 30)
+#elif PACKETVER >= 20040920
+packetLen(0x00a7, 28)
+#elif PACKETVER >= 20040906
+packetLen(0x00a7, 30)
+#elif PACKETVER >= 20040809
+packetLen(0x00a7, 15)
+#elif PACKETVER >= 20040726
+packetLen(0x00a7, 12)
+#elif PACKETVER >= 20040712
+packetLen(0x00a7, 17)
+#elif PACKETVER >= 20040705
+packetLen(0x00a7, 13)
+#elif PACKETVER >= 20040107
+packetLen(0x00a7, 8) // CZ_USE_ITEM
+#endif
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 7) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+#if PACKETVER >= 20041220
+packetLen(0x00f3, 23) // CZ_REQUEST_CHAT
+#elif PACKETVER >= 20041216
+packetLen(0x00f3, 8) // CZ_REQUEST_CHAT
+#elif PACKETVER >= 20041129
+packetLen(0x00f3, 23) // CZ_REQUEST_CHAT
+#elif PACKETVER >= 20041025
+packetLen(0x00f3, 11) // CZ_REQUEST_CHAT
+#elif PACKETVER >= 20041005
+packetLen(0x00f3, 8) // CZ_REQUEST_CHAT
+#elif PACKETVER >= 20040920
+packetLen(0x00f3, 15) // CZ_REQUEST_CHAT
+#elif PACKETVER >= 20040906
+packetLen(0x00f3, 12) // CZ_REQUEST_CHAT
+#elif PACKETVER >= 20040726
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+#elif PACKETVER >= 20040107
+packetLen(0x00f3, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+#endif
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+#if PACKETVER >= 20041220
+packetLen(0x00f5, 32) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20041216
+packetLen(0x00f5, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20041129
+packetLen(0x00f5, 32) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20041025
+packetLen(0x00f5, 26) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20040920
+packetLen(0x00f5, 29) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20040906
+packetLen(0x00f5, 43) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20040809
+packetLen(0x00f5, 14) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20040726
+packetLen(0x00f5, 17) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20040107
+packetLen(0x00f5, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#endif
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+#if PACKETVER >= 20041220
+packetLen(0x00f7, 11) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20041216
+packetLen(0x00f7, 2) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20041129
+packetLen(0x00f7, 11) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20040906
+packetLen(0x00f7, 2) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20040809
+packetLen(0x00f7, 8) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20040726
+packetLen(0x00f7, 10) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20040107
+packetLen(0x00f7, 2) // CZ_CLOSE_STORE
+#endif
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+#if PACKETVER >= 20041220
+packetLen(0x0113, 114) // CZ_USE_SKILL
+#elif PACKETVER >= 20041216
+packetLen(0x0113, 10) // CZ_USE_SKILL
+#elif PACKETVER >= 20041129
+packetLen(0x0113, 114) // CZ_USE_SKILL
+#elif PACKETVER >= 20041025
+packetLen(0x0113, 8) // CZ_USE_SKILL
+#elif PACKETVER >= 20041005
+packetLen(0x0113, 7) // CZ_USE_SKILL
+#elif PACKETVER >= 20040920
+packetLen(0x0113, 9) // CZ_USE_SKILL
+#elif PACKETVER >= 20040906
+packetLen(0x0113, 10) // CZ_USE_SKILL
+#elif PACKETVER >= 20040809
+packetLen(0x0113, 14) // CZ_USE_SKILL
+#elif PACKETVER >= 20040726
+packetLen(0x0113, 16) // CZ_USE_SKILL
+#elif PACKETVER >= 20040712
+packetLen(0x0113, 19) // CZ_USE_SKILL
+#elif PACKETVER >= 20040705
+packetLen(0x0113, 15) // CZ_USE_SKILL
+#elif PACKETVER >= 20040107
+packetLen(0x0113, 10) // CZ_USE_SKILL
+#endif
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+#if PACKETVER >= 20041220
+packetLen(0x0116, 20) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20041216
+packetLen(0x0116, 10) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20041129
+packetLen(0x0116, 20) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20041025
+packetLen(0x0116, 8) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20041005
+packetLen(0x0116, 7) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20040920
+packetLen(0x0116, 9) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20040906
+packetLen(0x0116, 10) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20040726
+packetLen(0x0116, 2) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20040712
+packetLen(0x0116, 19) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20040705
+packetLen(0x0116, 15) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20040107
+packetLen(0x0116, 10) // CZ_USE_SKILL_TOGROUND
+#endif
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0158
+packetLen(0x0158, -1) // ZC_ACK_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+#if PACKETVER >= 20041220
+packetLen(0x0190, 17) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20041216
+packetLen(0x0190, 90) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20041129
+packetLen(0x0190, 17) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20041025
+packetLen(0x0190, 25) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20041005
+packetLen(0x0190, 22) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20040920
+packetLen(0x0190, 26) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20040906
+packetLen(0x0190, 24) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20040809
+packetLen(0x0190, 22) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20040726
+packetLen(0x0190, 26) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20040712
+packetLen(0x0190, 99) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20040705
+packetLen(0x0190, 95) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20040107
+packetLen(0x0190, 90) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#endif
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+#if PACKETVER >= 20041220
+packetLen(0x0193, 21) // CZ_REQNAME_BYGID
+#elif PACKETVER >= 20041216
+packetLen(0x0193, 6) // CZ_REQNAME_BYGID
+#elif PACKETVER >= 20041129
+packetLen(0x0193, 21) // CZ_REQNAME_BYGID
+#elif PACKETVER >= 20041025
+packetLen(0x0193, 22) // CZ_REQNAME_BYGID
+#elif PACKETVER >= 20041005
+packetLen(0x0193, 21) // CZ_REQNAME_BYGID
+#elif PACKETVER >= 20040920
+packetLen(0x0193, 22) // CZ_REQNAME_BYGID
+#elif PACKETVER >= 20040906
+packetLen(0x0193, 21) // CZ_REQNAME_BYGID
+#elif PACKETVER >= 20040809
+packetLen(0x0193, 19) // CZ_REQNAME_BYGID
+#elif PACKETVER >= 20040726
+packetLen(0x0193, 9) // CZ_REQNAME_BYGID
+#elif PACKETVER >= 20040107
+packetLen(0x0193, 6) // CZ_REQNAME_BYGID
+#endif
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+#if PACKETVER >= 20041213
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20040107
+packetLen(0x019c, 4) // CZ_LOCALBROADCAST
+#endif
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 35) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+#if PACKETVER >= 20041213
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+#endif
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+#if PACKETVER >= 20041213
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20040107
+packetLen(0x01d5, 8) // CZ_INPUT_EDITDLGSTR
+#endif
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+#if PACKETVER >= 20040216
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+#endif
+
+// Packet: 0x01f4
+#if PACKETVER >= 20040302
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+#endif
+
+// Packet: 0x01f5
+#if PACKETVER >= 20040302
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+#endif
+
+// Packet: 0x01f6
+#if PACKETVER >= 20040308
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+#endif
+
+// Packet: 0x01f7
+#if PACKETVER >= 20040308
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+#endif
+
+// Packet: 0x01f8
+#if PACKETVER >= 20040308
+packetLen(0x01f8, 2) // ZC_START_BABY
+#endif
+
+// Packet: 0x01f9
+#if PACKETVER >= 20040308
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+#endif
+
+// Packet: 0x01fa
+#if PACKETVER >= 20040322
+packetLen(0x01fa, 48) // CA_LOGIN3
+#endif
+
+// Packet: 0x01fb
+#if PACKETVER >= 20040419
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+#endif
+
+// Packet: 0x01fc
+#if PACKETVER >= 20040420
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+#endif
+
+// Packet: 0x01fd
+#if PACKETVER >= 20040423
+packetLen(0x01fd, 4) // CZ_REQ_ITEMREPAIR
+#endif
+
+// Packet: 0x01fe
+#if PACKETVER >= 20040426
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+#endif
+
+// Packet: 0x01ff
+#if PACKETVER >= 20040422
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+#endif
+
+// Packet: 0x0200
+#if PACKETVER >= 20040517
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+#endif
+
+// Packet: 0x0201
+#if PACKETVER >= 20040705
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+#endif
+
+// Packet: 0x0202
+#if PACKETVER >= 20040705
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0203
+#if PACKETVER >= 20040705
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+#endif
+
+// Packet: 0x0204
+#if PACKETVER >= 20040531
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+#endif
+
+// Packet: 0x0205
+#if PACKETVER >= 20040628
+packetLen(0x0205, 26) // ZC_DIVORCE
+#endif
+
+// Packet: 0x0206
+#if PACKETVER >= 20040705
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+#endif
+
+// Packet: 0x0207
+#if PACKETVER >= 20040705
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0208
+#if PACKETVER >= 20040705
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0209
+#if PACKETVER >= 20040705
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+#endif
+
+// Packet: 0x020a
+#if PACKETVER >= 20040705
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+#endif
+
+// Packet: 0x020d
+#if PACKETVER >= 20040621
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+#endif
+
+// Packet: 0x020e
+#if PACKETVER >= 20040705
+packetLen(0x020e, 24) // ZC_STARSKILL
+#endif
+
+// Packet: 0x020f
+#if PACKETVER >= 20041220
+packetLen(0x020f, 10) // CZ_REQ_PVPPOINT
+#elif PACKETVER >= 20041216
+// removed
+#elif PACKETVER >= 20040817
+packetLen(0x020f, 10) // CZ_REQ_PVPPOINT
+#endif
+
+// Packet: 0x0210
+#if PACKETVER >= 20041220
+packetLen(0x0210, 22) // ZC_ACK_PVPPOINT
+#elif PACKETVER >= 20041216
+// removed
+#elif PACKETVER >= 20040817
+packetLen(0x0210, 22) // ZC_ACK_PVPPOINT
+#endif
+
+// Packet: 0x0212
+#if PACKETVER >= 20040816
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+#endif
+
+// Packet: 0x0213
+#if PACKETVER >= 20040816
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+#endif
+
+// Packet: 0x0214
+#if PACKETVER >= 20040816
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+#endif
+
+// Packet: 0x0215
+#if PACKETVER >= 20041101
+packetLen(0x0215, 6) // ZC_SKILLMSG
+#endif
+
+// Packet: 0x0216
+#if PACKETVER >= 20041108
+packetLen(0x0216, 6) // ZC_BABYMSG
+#endif
+
+// Packet: 0x0217
+#if PACKETVER >= 20041108
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+#endif
+
+// Packet: 0x0218
+#if PACKETVER >= 20041108
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+#endif
+
+// Packet: 0x0219
+#if PACKETVER >= 20041108
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+#endif
+
+// Packet: 0x021a
+#if PACKETVER >= 20041108
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+#endif
+
+// Packet: 0x021b
+#if PACKETVER >= 20041108
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+#endif
+
+// Packet: 0x021c
+#if PACKETVER >= 20041108
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+#endif
+
+// Packet: 0x021d
+#if PACKETVER >= 20041115
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+#endif
+
+// Packet: 0x021e
+#if PACKETVER >= 20041213
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+#endif
+
+// Packet: 0x021f
+#if PACKETVER >= 20041213
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+#endif
+
+// Packet: 0x0220
+#if PACKETVER >= 20041213
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+#endif
+
+// Packet: 0x0221
+#if PACKETVER >= 20041129
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+#endif
+
+// Packet: 0x0222
+#if PACKETVER >= 20041129
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+#endif
+
+// Packet: 0x0223
+#if PACKETVER >= 20041129
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+#endif
+
+
+#endif /* COMMON_PACKETS2004_LEN_MAIN_H */
diff --git a/src/common/packets/packets2004_len_sak.h b/src/common/packets/packets2004_len_sak.h
new file mode 100644
index 000000000..71573c376
--- /dev/null
+++ b/src/common/packets/packets2004_len_sak.h
@@ -0,0 +1,1734 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2004_LEN_SAK_H
+#define COMMON_PACKETS2004_LEN_SAK_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 108) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+#if PACKETVER >= 20041129
+packetLen(0x0072, 22) // CZ_ENTER
+#elif PACKETVER >= 20041025
+packetLen(0x0072, 13) // CZ_ENTER
+#elif PACKETVER >= 20041005
+packetLen(0x0072, 17) // CZ_ENTER
+#elif PACKETVER >= 20040920
+packetLen(0x0072, 18) // CZ_ENTER
+#elif PACKETVER >= 20040906
+packetLen(0x0072, 20) // CZ_ENTER
+#elif PACKETVER >= 20040809
+packetLen(0x0072, 17) // CZ_ENTER
+#elif PACKETVER >= 20040726
+packetLen(0x0072, 14) // CZ_ENTER
+#elif PACKETVER >= 20040713
+packetLen(0x0072, 39) // CZ_ENTER
+#elif PACKETVER >= 20040705
+packetLen(0x0072, 22) // CZ_ENTER
+#elif PACKETVER >= 20040107
+packetLen(0x0072, 19) // CZ_ENTER
+#endif
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 54) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 41) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+#if PACKETVER >= 20041129
+packetLen(0x007e, 30) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20041025
+packetLen(0x007e, 13) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20041005
+packetLen(0x007e, 16) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20040920
+packetLen(0x007e, 25) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20040906
+packetLen(0x007e, 19) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20040809
+packetLen(0x007e, 37) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20040726
+packetLen(0x007e, 33) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20040107
+packetLen(0x007e, 6) // CZ_REQUEST_TIME
+#endif
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+#if PACKETVER >= 20041129
+packetLen(0x0085, -1) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20041025
+packetLen(0x0085, 15) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20040920
+packetLen(0x0085, 9) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20040906
+packetLen(0x0085, 23) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20040809
+packetLen(0x0085, 26) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20040726
+packetLen(0x0085, 20) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20040713
+packetLen(0x0085, 9) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20040705
+packetLen(0x0085, 8) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20040107
+packetLen(0x0085, 5) // CZ_REQUEST_MOVE
+#endif
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+#if PACKETVER >= 20041129
+packetLen(0x0089, 7) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20041005
+packetLen(0x0089, 6) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20040920
+packetLen(0x0089, 14) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20040906
+packetLen(0x0089, 9) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20040809
+packetLen(0x0089, 12) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20040726
+packetLen(0x0089, 15) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20040107
+packetLen(0x0089, 7) // CZ_REQUEST_ACT
+#endif
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+#if PACKETVER >= 20041129
+packetLen(0x008c, 13)
+#elif PACKETVER >= 20041025
+packetLen(0x008c, 108)
+#elif PACKETVER >= 20041005
+packetLen(0x008c, 103)
+#elif PACKETVER >= 20040920
+packetLen(0x008c, 109)
+#elif PACKETVER >= 20040906
+packetLen(0x008c, 105)
+#elif PACKETVER >= 20040809
+packetLen(0x008c, 40)
+#elif PACKETVER >= 20040726
+packetLen(0x008c, 23)
+#elif PACKETVER >= 20040107
+packetLen(0x008c, -1) // CZ_REQUEST_CHAT
+#endif
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+#if PACKETVER >= 20041129
+packetLen(0x0094, 14) // CZ_REQNAME
+#elif PACKETVER >= 20041025
+packetLen(0x0094, 12) // CZ_REQNAME
+#elif PACKETVER >= 20041005
+packetLen(0x0094, 14) // CZ_REQNAME
+#elif PACKETVER >= 20040920
+packetLen(0x0094, 19) // CZ_REQNAME
+#elif PACKETVER >= 20040906
+packetLen(0x0094, 17) // CZ_REQNAME
+#elif PACKETVER >= 20040809
+packetLen(0x0094, 13) // CZ_REQNAME
+#elif PACKETVER >= 20040726
+packetLen(0x0094, 10) // CZ_REQNAME
+#elif PACKETVER >= 20040107
+packetLen(0x0094, 6) // CZ_REQNAME
+#endif
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+#if PACKETVER >= 20041129
+packetLen(0x009b, 2) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20041025
+packetLen(0x009b, 10) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20041005
+packetLen(0x009b, 15) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20040920
+packetLen(0x009b, 10) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20040906
+packetLen(0x009b, 14) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20040809
+packetLen(0x009b, 15) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20040726
+packetLen(0x009b, 6) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20040713
+packetLen(0x009b, 13) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20040107
+packetLen(0x009b, 5) // CZ_CHANGE_DIRECTION
+#endif
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+#if PACKETVER >= 20041129
+packetLen(0x009f, 18) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20040906
+packetLen(0x009f, -1) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20040809
+packetLen(0x009f, 12) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20040726
+packetLen(0x009f, 13) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20040713
+packetLen(0x009f, 10) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20040107
+packetLen(0x009f, 6) // CZ_ITEM_PICKUP
+#endif
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+#if PACKETVER >= 20041129
+packetLen(0x00a2, 7) // CZ_ITEM_THROW
+#elif PACKETVER >= 20041025
+packetLen(0x00a2, 16) // CZ_ITEM_THROW
+#elif PACKETVER >= 20041005
+packetLen(0x00a2, 12) // CZ_ITEM_THROW
+#elif PACKETVER >= 20040920
+packetLen(0x00a2, 10) // CZ_ITEM_THROW
+#elif PACKETVER >= 20040906
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+#elif PACKETVER >= 20040809
+packetLen(0x00a2, 120) // CZ_ITEM_THROW
+#elif PACKETVER >= 20040726
+packetLen(0x00a2, 103) // CZ_ITEM_THROW
+#elif PACKETVER >= 20040107
+packetLen(0x00a2, 6) // CZ_ITEM_THROW
+#endif
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+#if PACKETVER >= 20041129
+packetLen(0x00a7, 7)
+#elif PACKETVER >= 20041025
+packetLen(0x00a7, 28)
+#elif PACKETVER >= 20041005
+packetLen(0x00a7, 23)
+#elif PACKETVER >= 20040920
+packetLen(0x00a7, 29)
+#elif PACKETVER >= 20040906
+packetLen(0x00a7, 25)
+#elif PACKETVER >= 20040809
+packetLen(0x00a7, 11)
+#elif PACKETVER >= 20040726
+packetLen(0x00a7, 12)
+#elif PACKETVER >= 20040713
+packetLen(0x00a7, 17)
+#elif PACKETVER >= 20040705
+packetLen(0x00a7, 13)
+#elif PACKETVER >= 20040107
+packetLen(0x00a7, 8) // CZ_USE_ITEM
+#endif
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 7) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+#if PACKETVER >= 20041129
+packetLen(0x00f3, 8) // CZ_REQUEST_CHAT
+#elif PACKETVER >= 20041025
+packetLen(0x00f3, 15) // CZ_REQUEST_CHAT
+#elif PACKETVER >= 20041005
+packetLen(0x00f3, 13) // CZ_REQUEST_CHAT
+#elif PACKETVER >= 20040920
+packetLen(0x00f3, 18) // CZ_REQUEST_CHAT
+#elif PACKETVER >= 20040906
+packetLen(0x00f3, 10) // CZ_REQUEST_CHAT
+#elif PACKETVER >= 20040726
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+#elif PACKETVER >= 20040107
+packetLen(0x00f3, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+#endif
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+#if PACKETVER >= 20041025
+packetLen(0x00f5, 29) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20041005
+packetLen(0x00f5, 33) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20040920
+packetLen(0x00f5, 32) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20040906
+packetLen(0x00f5, 34) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20040809
+packetLen(0x00f5, 24) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20040726
+packetLen(0x00f5, 17) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20040107
+packetLen(0x00f5, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#endif
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+#if PACKETVER >= 20041129
+packetLen(0x00f7, 14) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20040906
+packetLen(0x00f7, 2) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20040809
+packetLen(0x00f7, 13) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20040726
+packetLen(0x00f7, 10) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20040107
+packetLen(0x00f7, 2) // CZ_CLOSE_STORE
+#endif
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+#if PACKETVER >= 20041129
+packetLen(0x0113, 110) // CZ_USE_SKILL
+#elif PACKETVER >= 20041025
+packetLen(0x0113, 9) // CZ_USE_SKILL
+#elif PACKETVER >= 20041005
+packetLen(0x0113, 10) // CZ_USE_SKILL
+#elif PACKETVER >= 20040920
+packetLen(0x0113, 14) // CZ_USE_SKILL
+#elif PACKETVER >= 20040906
+packetLen(0x0113, 11) // CZ_USE_SKILL
+#elif PACKETVER >= 20040809
+packetLen(0x0113, 23) // CZ_USE_SKILL
+#elif PACKETVER >= 20040726
+packetLen(0x0113, 16) // CZ_USE_SKILL
+#elif PACKETVER >= 20040713
+packetLen(0x0113, 19) // CZ_USE_SKILL
+#elif PACKETVER >= 20040705
+packetLen(0x0113, 15) // CZ_USE_SKILL
+#elif PACKETVER >= 20040107
+packetLen(0x0113, 10) // CZ_USE_SKILL
+#endif
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+#if PACKETVER >= 20041129
+packetLen(0x0116, 12) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20041025
+packetLen(0x0116, 9) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20041005
+packetLen(0x0116, 10) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20040920
+packetLen(0x0116, 14) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20040906
+packetLen(0x0116, 11) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20040726
+packetLen(0x0116, 2) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20040713
+packetLen(0x0116, 19) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20040705
+packetLen(0x0116, 15) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20040107
+packetLen(0x0116, 10) // CZ_USE_SKILL_TOGROUND
+#endif
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0158
+packetLen(0x0158, -1) // ZC_ACK_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+#if PACKETVER >= 20041129
+packetLen(0x0190, 15) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20041025
+packetLen(0x0190, 26) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20041005
+packetLen(0x0190, 20) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20040920
+packetLen(0x0190, 14) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20040906
+packetLen(0x0190, 22) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20040726
+packetLen(0x0190, 26) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20040713
+packetLen(0x0190, 99) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20040705
+packetLen(0x0190, 95) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20040107
+packetLen(0x0190, 90) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#endif
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+#if PACKETVER >= 20041129
+packetLen(0x0193, 21) // CZ_REQNAME_BYGID
+#elif PACKETVER >= 20041025
+packetLen(0x0193, 22) // CZ_REQNAME_BYGID
+#elif PACKETVER >= 20041005
+packetLen(0x0193, 26) // CZ_REQNAME_BYGID
+#elif PACKETVER >= 20040920
+packetLen(0x0193, 12) // CZ_REQNAME_BYGID
+#elif PACKETVER >= 20040906
+packetLen(0x0193, 17) // CZ_REQNAME_BYGID
+#elif PACKETVER >= 20040809
+packetLen(0x0193, 18) // CZ_REQNAME_BYGID
+#elif PACKETVER >= 20040726
+packetLen(0x0193, 9) // CZ_REQNAME_BYGID
+#elif PACKETVER >= 20040107
+packetLen(0x0193, 6) // CZ_REQNAME_BYGID
+#endif
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+#if PACKETVER >= 20041213
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20040107
+packetLen(0x019c, 4) // CZ_LOCALBROADCAST
+#endif
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 35) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+#if PACKETVER >= 20041213
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+#endif
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+#if PACKETVER >= 20041213
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20040107
+packetLen(0x01d5, 8) // CZ_INPUT_EDITDLGSTR
+#endif
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+#if PACKETVER >= 20040216
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+#endif
+
+// Packet: 0x01f4
+#if PACKETVER >= 20040302
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+#endif
+
+// Packet: 0x01f5
+#if PACKETVER >= 20040302
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+#endif
+
+// Packet: 0x01f6
+#if PACKETVER >= 20040308
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+#endif
+
+// Packet: 0x01f7
+#if PACKETVER >= 20040308
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+#endif
+
+// Packet: 0x01f8
+#if PACKETVER >= 20040308
+packetLen(0x01f8, 2) // ZC_START_BABY
+#endif
+
+// Packet: 0x01f9
+#if PACKETVER >= 20040308
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+#endif
+
+// Packet: 0x01fa
+#if PACKETVER >= 20040322
+packetLen(0x01fa, 48) // CA_LOGIN3
+#endif
+
+// Packet: 0x01fb
+#if PACKETVER >= 20040419
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+#endif
+
+// Packet: 0x01fc
+#if PACKETVER >= 20040420
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+#endif
+
+// Packet: 0x01fd
+#if PACKETVER >= 20040423
+packetLen(0x01fd, 4) // CZ_REQ_ITEMREPAIR
+#endif
+
+// Packet: 0x01fe
+#if PACKETVER >= 20040426
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+#endif
+
+// Packet: 0x01ff
+#if PACKETVER >= 20040422
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+#endif
+
+// Packet: 0x0200
+#if PACKETVER >= 20040517
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+#endif
+
+// Packet: 0x0201
+#if PACKETVER >= 20040628
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+#endif
+
+// Packet: 0x0202
+#if PACKETVER >= 20040628
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0203
+#if PACKETVER >= 20040628
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+#endif
+
+// Packet: 0x0204
+#if PACKETVER >= 20040531
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+#endif
+
+// Packet: 0x0205
+#if PACKETVER >= 20040628
+packetLen(0x0205, 26) // ZC_DIVORCE
+#endif
+
+// Packet: 0x0206
+#if PACKETVER >= 20040628
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+#endif
+
+// Packet: 0x0207
+#if PACKETVER >= 20040628
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0208
+#if PACKETVER >= 20040705
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20040628
+packetLen(0x0208, 11) // CZ_ACK_REQ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0209
+#if PACKETVER >= 20040628
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+#endif
+
+// Packet: 0x020a
+#if PACKETVER >= 20040628
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+#endif
+
+// Packet: 0x020d
+#if PACKETVER >= 20040621
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+#endif
+
+// Packet: 0x020e
+#if PACKETVER >= 20040705
+packetLen(0x020e, 24) // ZC_STARSKILL
+#endif
+
+// Packet: 0x020f
+#if PACKETVER >= 20040817
+packetLen(0x020f, 10) // CZ_REQ_PVPPOINT
+#endif
+
+// Packet: 0x0210
+#if PACKETVER >= 20040817
+packetLen(0x0210, 22) // ZC_ACK_PVPPOINT
+#endif
+
+// Packet: 0x0212
+#if PACKETVER >= 20040816
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+#endif
+
+// Packet: 0x0213
+#if PACKETVER >= 20040816
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+#endif
+
+// Packet: 0x0214
+#if PACKETVER >= 20040816
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+#endif
+
+// Packet: 0x0215
+#if PACKETVER >= 20041101
+packetLen(0x0215, 6) // ZC_SKILLMSG
+#endif
+
+// Packet: 0x0216
+#if PACKETVER >= 20041108
+packetLen(0x0216, 6) // ZC_BABYMSG
+#endif
+
+// Packet: 0x0217
+#if PACKETVER >= 20041108
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+#endif
+
+// Packet: 0x0218
+#if PACKETVER >= 20041108
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+#endif
+
+// Packet: 0x0219
+#if PACKETVER >= 20041108
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+#endif
+
+// Packet: 0x021a
+#if PACKETVER >= 20041108
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+#endif
+
+// Packet: 0x021b
+#if PACKETVER >= 20041108
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+#endif
+
+// Packet: 0x021c
+#if PACKETVER >= 20041108
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+#endif
+
+// Packet: 0x021d
+#if PACKETVER >= 20041115
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+#endif
+
+// Packet: 0x021e
+#if PACKETVER >= 20041213
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+#endif
+
+// Packet: 0x021f
+#if PACKETVER >= 20041213
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+#endif
+
+// Packet: 0x0220
+#if PACKETVER >= 20041213
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+#endif
+
+// Packet: 0x0221
+#if PACKETVER >= 20041129
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+#endif
+
+// Packet: 0x0222
+#if PACKETVER >= 20041129
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+#endif
+
+// Packet: 0x0223
+#if PACKETVER >= 20041129
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+#endif
+
+
+#endif /* COMMON_PACKETS2004_LEN_SAK_H */
diff --git a/src/common/packets/packets2005_len_ad.h b/src/common/packets/packets2005_len_ad.h
new file mode 100644
index 000000000..fd428cef4
--- /dev/null
+++ b/src/common/packets/packets2005_len_ad.h
@@ -0,0 +1,1927 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2005_LEN_AD_H
+#define COMMON_PACKETS2005_LEN_AD_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 108) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+#if PACKETVER >= 20051010
+packetLen(0x0072, 20) // CZ_ENTER
+#elif PACKETVER >= 20050719
+packetLen(0x0072, 30) // CZ_ENTER
+#elif PACKETVER >= 20050718
+packetLen(0x0072, 20) // CZ_ENTER
+#elif PACKETVER >= 20050628
+packetLen(0x0072, 30) // CZ_ENTER
+#elif PACKETVER >= 20050509
+packetLen(0x0072, 22) // CZ_ENTER
+#elif PACKETVER >= 20050411
+packetLen(0x0072, 14) // CZ_ENTER
+#elif PACKETVER >= 20050104
+packetLen(0x0072, 26) // CZ_ENTER
+#endif
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 54) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 41) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+#if PACKETVER >= 20051010
+packetLen(0x007e, 103) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050719
+packetLen(0x007e, 120) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050718
+packetLen(0x007e, 103) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050628
+packetLen(0x007e, 120) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050509
+packetLen(0x007e, 110) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050411
+packetLen(0x007e, 109) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050110
+packetLen(0x007e, 108) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050104
+packetLen(0x007e, 34) // CZ_REQUEST_TIME
+#endif
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+#if PACKETVER >= 20051010
+packetLen(0x0085, 13) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20050719
+packetLen(0x0085, 14) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20050718
+packetLen(0x0085, 13) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20050628
+packetLen(0x0085, 14) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20050509
+packetLen(0x0085, 8) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20050411
+packetLen(0x0085, 18) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20050110
+packetLen(0x0085, 15) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20050104
+packetLen(0x0085, -1) // CZ_REQUEST_MOVE
+#endif
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+#if PACKETVER >= 20051010
+packetLen(0x0089, 10) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20050719
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20050718
+packetLen(0x0089, 10) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20050628
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20050509
+packetLen(0x0089, 7) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20050411
+packetLen(0x0089, 14) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20050104
+packetLen(0x0089, 9) // CZ_REQUEST_ACT
+#endif
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+#if PACKETVER >= 20051010
+packetLen(0x008c, 15)
+#elif PACKETVER >= 20050719
+packetLen(0x008c, 17)
+#elif PACKETVER >= 20050718
+packetLen(0x008c, 15)
+#elif PACKETVER >= 20050628
+packetLen(0x008c, 17)
+#elif PACKETVER >= 20050509
+packetLen(0x008c, 13)
+#elif PACKETVER >= 20050110
+packetLen(0x008c, 10)
+#elif PACKETVER >= 20050104
+packetLen(0x008c, 8)
+#endif
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+#if PACKETVER >= 20051010
+packetLen(0x0094, 16) // CZ_REQNAME
+#elif PACKETVER >= 20050719
+packetLen(0x0094, 17) // CZ_REQNAME
+#elif PACKETVER >= 20050718
+packetLen(0x0094, 16) // CZ_REQNAME
+#elif PACKETVER >= 20050628
+packetLen(0x0094, 17) // CZ_REQNAME
+#elif PACKETVER >= 20050509
+packetLen(0x0094, 14) // CZ_REQNAME
+#elif PACKETVER >= 20050411
+packetLen(0x0094, 25) // CZ_REQNAME
+#elif PACKETVER >= 20050110
+packetLen(0x0094, 13) // CZ_REQNAME
+#elif PACKETVER >= 20050104
+packetLen(0x0094, 20) // CZ_REQNAME
+#endif
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+#if PACKETVER >= 20051010
+packetLen(0x009b, 33) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20050719
+packetLen(0x009b, 35) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20050718
+packetLen(0x009b, 33) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20050628
+packetLen(0x009b, 35) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20050509
+packetLen(0x009b, 29) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20050411
+packetLen(0x009b, 32) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20050110
+packetLen(0x009b, 29) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20050104
+packetLen(0x009b, 2) // CZ_CHANGE_DIRECTION
+#endif
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+#if PACKETVER >= 20051010
+packetLen(0x009f, 17) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20050719
+packetLen(0x009f, 21) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20050718
+packetLen(0x009f, 17) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20050628
+packetLen(0x009f, 21) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20050509
+packetLen(0x009f, 15) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20050411
+packetLen(0x009f, 18) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20050110
+packetLen(0x009f, 13) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20050104
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+#endif
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+#if PACKETVER >= 20051010
+packetLen(0x00a2, 12) // CZ_ITEM_THROW
+#elif PACKETVER >= 20050719
+packetLen(0x00a2, 10) // CZ_ITEM_THROW
+#elif PACKETVER >= 20050718
+packetLen(0x00a2, 12) // CZ_ITEM_THROW
+#elif PACKETVER >= 20050628
+packetLen(0x00a2, 10) // CZ_ITEM_THROW
+#elif PACKETVER >= 20050509
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+#elif PACKETVER >= 20050411
+packetLen(0x00a2, 10) // CZ_ITEM_THROW
+#elif PACKETVER >= 20050110
+packetLen(0x00a2, 16) // CZ_ITEM_THROW
+#elif PACKETVER >= 20050104
+packetLen(0x00a2, 9) // CZ_ITEM_THROW
+#endif
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+#if PACKETVER >= 20051010
+packetLen(0x00a7, 6)
+#elif PACKETVER >= 20050719
+packetLen(0x00a7, 8)
+#elif PACKETVER >= 20050718
+packetLen(0x00a7, 6)
+#elif PACKETVER >= 20050628
+packetLen(0x00a7, 8)
+#elif PACKETVER >= 20050509
+packetLen(0x00a7, 7)
+#elif PACKETVER >= 20050411
+packetLen(0x00a7, 14)
+#elif PACKETVER >= 20050110
+packetLen(0x00a7, 6)
+#elif PACKETVER >= 20050104
+packetLen(0x00a7, 13)
+#endif
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 7) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+#if PACKETVER >= 20050110
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+#elif PACKETVER >= 20050104
+packetLen(0x00f3, 23) // CZ_REQUEST_CHAT
+#endif
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+#if PACKETVER >= 20051010
+packetLen(0x00f5, 10) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20050719
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20050718
+packetLen(0x00f5, 10) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20050628
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20050509
+packetLen(0x00f5, 7) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20050411
+packetLen(0x00f5, 14) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20050110
+packetLen(0x00f5, 9) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20050104
+packetLen(0x00f5, 32) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#endif
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+#if PACKETVER >= 20051010
+packetLen(0x00f7, 26) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050719
+packetLen(0x00f7, 15) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050718
+packetLen(0x00f7, 26) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050628
+packetLen(0x00f7, 15) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050509
+packetLen(0x00f7, 21) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050411
+packetLen(0x00f7, 12) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050110
+packetLen(0x00f7, 22) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050104
+packetLen(0x00f7, 11) // CZ_REQUEST_TIME
+#endif
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+#if PACKETVER >= 20051010
+packetLen(0x0113, 23) // CZ_USE_SKILL
+#elif PACKETVER >= 20050719
+packetLen(0x0113, 40) // CZ_USE_SKILL
+#elif PACKETVER >= 20050718
+packetLen(0x0113, 23) // CZ_USE_SKILL
+#elif PACKETVER >= 20050628
+packetLen(0x0113, 40) // CZ_USE_SKILL
+#elif PACKETVER >= 20050509
+packetLen(0x0113, 30) // CZ_USE_SKILL
+#elif PACKETVER >= 20050411
+packetLen(0x0113, 29) // CZ_USE_SKILL
+#elif PACKETVER >= 20050110
+packetLen(0x0113, 28) // CZ_USE_SKILL
+#elif PACKETVER >= 20050104
+packetLen(0x0113, 114) // CZ_USE_SKILL
+#endif
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+#if PACKETVER >= 20051010
+packetLen(0x0116, 14) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20050719
+packetLen(0x0116, 19) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20050718
+packetLen(0x0116, 14) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20050628
+packetLen(0x0116, 19) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20050509
+packetLen(0x0116, 12) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20050411
+packetLen(0x0116, 19) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20050110
+packetLen(0x0116, 12) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20050104
+packetLen(0x0116, 20) // CZ_USE_SKILL_TOGROUND
+#endif
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0158
+packetLen(0x0158, -1) // ZC_ACK_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+#if PACKETVER >= 20051010
+packetLen(0x0190, 9) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20050719
+packetLen(0x0190, 10) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20050718
+packetLen(0x0190, 9) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20050628
+packetLen(0x0190, 10) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20050509
+packetLen(0x0190, 18) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20050411
+packetLen(0x0190, 9) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20050110
+packetLen(0x0190, 15) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20050104
+packetLen(0x0190, 17) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#endif
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+#if PACKETVER >= 20050110
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+#elif PACKETVER >= 20050104
+packetLen(0x0193, 21) // CZ_REQNAME_BYGID
+#endif
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 35) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+packetLen(0x01fd, 4) // CZ_REQ_ITEMREPAIR
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+#if PACKETVER >= 20051010
+packetLen(0x020e, 32) // ZC_STARSKILL
+#elif PACKETVER >= 20050104
+packetLen(0x020e, 24) // ZC_STARSKILL
+#endif
+
+// Packet: 0x020f
+packetLen(0x020f, 10) // CZ_REQ_PVPPOINT
+
+// Packet: 0x0210
+packetLen(0x0210, 22) // ZC_ACK_PVPPOINT
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+#if PACKETVER >= 20050328
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+#endif
+
+// Packet: 0x0225
+#if PACKETVER >= 20050328
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+#endif
+
+// Packet: 0x0226
+#if PACKETVER >= 20050328
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+#endif
+
+// Packet: 0x0227
+#if PACKETVER >= 20050404
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+#endif
+
+// Packet: 0x0228
+#if PACKETVER >= 20050404
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+#endif
+
+// Packet: 0x0229
+#if PACKETVER >= 20050411
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+#endif
+
+// Packet: 0x022a
+#if PACKETVER >= 20050411
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+#endif
+
+// Packet: 0x022b
+#if PACKETVER >= 20050411
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+#endif
+
+// Packet: 0x022c
+#if PACKETVER >= 20050411
+packetLen(0x022c, 64) // ZC_NOTIFY_MOVEENTRY3
+#endif
+
+// Packet: 0x022d
+#if PACKETVER >= 20050425
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+#endif
+
+// Packet: 0x022e
+#if PACKETVER >= 20050624
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20050530
+packetLen(0x022e, 69) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20050523
+packetLen(0x022e, 67) // ZC_PROPERTY_HOMUN
+#endif
+
+// Packet: 0x022f
+#if PACKETVER >= 20050608
+packetLen(0x022f, 5) // ZC_FEED_MER
+#endif
+
+// Packet: 0x0230
+#if PACKETVER >= 20050523
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+#endif
+
+// Packet: 0x0231
+#if PACKETVER >= 20050608
+packetLen(0x0231, 26) // CZ_RENAME_MER
+#endif
+
+// Packet: 0x0232
+#if PACKETVER >= 20050425
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+#endif
+
+// Packet: 0x0233
+#if PACKETVER >= 20050425
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+#endif
+
+// Packet: 0x0234
+#if PACKETVER >= 20050425
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+#endif
+
+// Packet: 0x0235
+#if PACKETVER >= 20050530
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+#endif
+
+// Packet: 0x0236
+#if PACKETVER >= 20050530
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+#endif
+
+// Packet: 0x0237
+#if PACKETVER >= 20050530
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+#endif
+
+// Packet: 0x0238
+#if PACKETVER >= 20050530
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+#endif
+
+// Packet: 0x0239
+#if PACKETVER >= 20050530
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+#endif
+
+// Packet: 0x023a
+#if PACKETVER >= 20050608
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+#endif
+
+// Packet: 0x023b
+#if PACKETVER >= 20050608
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+#endif
+
+// Packet: 0x023c
+#if PACKETVER >= 20050608
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+#endif
+
+// Packet: 0x023d
+#if PACKETVER >= 20050628
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+#endif
+
+// Packet: 0x023e
+#if PACKETVER >= 20050628
+packetLen(0x023e, 4) // HC_REQUEST_CHARACTER_PASSWORD
+#endif
+
+// Packet: 0x023f
+#if PACKETVER >= 20050718
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+#endif
+
+// Packet: 0x0240
+#if PACKETVER >= 20050829
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+#elif PACKETVER >= 20050718
+packetLen(0x0240, 8) // ZC_MAIL_REQ_GET_LIST
+#endif
+
+// Packet: 0x0241
+#if PACKETVER >= 20050718
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+#endif
+
+// Packet: 0x0242
+#if PACKETVER >= 20050718
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+#endif
+
+// Packet: 0x0243
+#if PACKETVER >= 20050718
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+#endif
+
+// Packet: 0x0244
+#if PACKETVER >= 20050718
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+#endif
+
+// Packet: 0x0245
+#if PACKETVER >= 20050801
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+#elif PACKETVER >= 20050718
+packetLen(0x0245, 7) // ZC_MAIL_REQ_GET_ITEM
+#endif
+
+// Packet: 0x0246
+#if PACKETVER >= 20050718
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+#endif
+
+// Packet: 0x0247
+#if PACKETVER >= 20050718
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+#endif
+
+// Packet: 0x0248
+#if PACKETVER >= 20050829
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+#elif PACKETVER >= 20050718
+packetLen(0x0248, 68) // CZ_MAIL_SEND
+#endif
+
+// Packet: 0x0249
+#if PACKETVER >= 20050718
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+#endif
+
+// Packet: 0x024a
+#if PACKETVER >= 20050718
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+#endif
+
+// Packet: 0x024b
+#if PACKETVER >= 20050718
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+#endif
+
+// Packet: 0x024c
+#if PACKETVER >= 20050718
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+#endif
+
+// Packet: 0x024d
+#if PACKETVER >= 20050808
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+#elif PACKETVER >= 20050718
+packetLen(0x024d, 14) // CZ_AUCTION_ADD
+#endif
+
+// Packet: 0x024e
+#if PACKETVER >= 20051107
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+#elif PACKETVER >= 20050808
+packetLen(0x024e, 4) // CZ_AUCTION_ADD_CANCEL
+#elif PACKETVER >= 20050718
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+#endif
+
+// Packet: 0x024f
+#if PACKETVER >= 20050718
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+#endif
+
+// Packet: 0x0250
+#if PACKETVER >= 20050718
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+#endif
+
+// Packet: 0x0251
+#if PACKETVER >= 20051107
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+#elif PACKETVER >= 20051013
+packetLen(0x0251, 32) // CZ_AUCTION_ITEM_SEARCH
+#elif PACKETVER >= 20050801
+packetLen(0x0251, 4) // CZ_AUCTION_ITEM_SEARCH
+#elif PACKETVER >= 20050718
+packetLen(0x0251, 2) // CZ_AUCTION_ITEM_SEARCH
+#endif
+
+// Packet: 0x0252
+#if PACKETVER >= 20050718
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+#endif
+
+// Packet: 0x0253
+#if PACKETVER >= 20050822
+packetLen(0x0253, 3) // ZC_STARPLACE
+#endif
+
+// Packet: 0x0254
+#if PACKETVER >= 20050822
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+#endif
+
+// Packet: 0x0255
+#if PACKETVER >= 20050829
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+#endif
+
+// Packet: 0x0256
+#if PACKETVER >= 20050829
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+#endif
+
+// Packet: 0x0257
+#if PACKETVER >= 20050829
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+#endif
+
+// Packet: 0x0258
+#if PACKETVER >= 20050912
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+#endif
+
+// Packet: 0x0259
+#if PACKETVER >= 20050912
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+#endif
+
+// Packet: 0x025a
+#if PACKETVER >= 20051010
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+#endif
+
+// Packet: 0x025b
+#if PACKETVER >= 20051010
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+#endif
+
+// Packet: 0x025c
+#if PACKETVER >= 20051013
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+#endif
+
+// Packet: 0x025d
+#if PACKETVER >= 20051017
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+#endif
+
+// Packet: 0x025e
+#if PACKETVER >= 20051017
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+#endif
+
+// Packet: 0x025f
+#if PACKETVER >= 20051024
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+#endif
+
+// Packet: 0x0260
+#if PACKETVER >= 20051024
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+#endif
+
+
+#endif /* COMMON_PACKETS2005_LEN_AD_H */
diff --git a/src/common/packets/packets2005_len_main.h b/src/common/packets/packets2005_len_main.h
new file mode 100644
index 000000000..bad35d459
--- /dev/null
+++ b/src/common/packets/packets2005_len_main.h
@@ -0,0 +1,1935 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2005_LEN_MAIN_H
+#define COMMON_PACKETS2005_LEN_MAIN_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 108) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+#if PACKETVER >= 20051010
+packetLen(0x0072, 20) // CZ_ENTER
+#elif PACKETVER >= 20050719
+packetLen(0x0072, 30) // CZ_ENTER
+#elif PACKETVER >= 20050718
+packetLen(0x0072, 20) // CZ_ENTER
+#elif PACKETVER >= 20050628
+packetLen(0x0072, 30) // CZ_ENTER
+#elif PACKETVER >= 20050509
+packetLen(0x0072, 22) // CZ_ENTER
+#elif PACKETVER >= 20050411
+packetLen(0x0072, 14) // CZ_ENTER
+#elif PACKETVER >= 20050103
+packetLen(0x0072, 26) // CZ_ENTER
+#endif
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 54) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 41) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+#if PACKETVER >= 20051010
+packetLen(0x007e, 103) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050719
+packetLen(0x007e, 120) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050718
+packetLen(0x007e, 103) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050628
+packetLen(0x007e, 120) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050509
+packetLen(0x007e, 110) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050411
+packetLen(0x007e, 109) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050110
+packetLen(0x007e, 108) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050103
+packetLen(0x007e, 34) // CZ_REQUEST_TIME
+#endif
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+#if PACKETVER >= 20051010
+packetLen(0x0085, 13) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20050719
+packetLen(0x0085, 14) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20050718
+packetLen(0x0085, 13) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20050628
+packetLen(0x0085, 14) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20050509
+packetLen(0x0085, 8) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20050411
+packetLen(0x0085, 18) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20050110
+packetLen(0x0085, 15) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20050103
+packetLen(0x0085, -1) // CZ_REQUEST_MOVE
+#endif
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+#if PACKETVER >= 20051010
+packetLen(0x0089, 10) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20050719
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20050718
+packetLen(0x0089, 10) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20050628
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20050509
+packetLen(0x0089, 7) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20050411
+packetLen(0x0089, 14) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20050103
+packetLen(0x0089, 9) // CZ_REQUEST_ACT
+#endif
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+#if PACKETVER >= 20051010
+packetLen(0x008c, 15)
+#elif PACKETVER >= 20050719
+packetLen(0x008c, 17)
+#elif PACKETVER >= 20050718
+packetLen(0x008c, 15)
+#elif PACKETVER >= 20050628
+packetLen(0x008c, 17)
+#elif PACKETVER >= 20050509
+packetLen(0x008c, 13)
+#elif PACKETVER >= 20050110
+packetLen(0x008c, 10)
+#elif PACKETVER >= 20050103
+packetLen(0x008c, 8)
+#endif
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+#if PACKETVER >= 20051010
+packetLen(0x0094, 16) // CZ_REQNAME
+#elif PACKETVER >= 20050719
+packetLen(0x0094, 17) // CZ_REQNAME
+#elif PACKETVER >= 20050718
+packetLen(0x0094, 16) // CZ_REQNAME
+#elif PACKETVER >= 20050628
+packetLen(0x0094, 17) // CZ_REQNAME
+#elif PACKETVER >= 20050509
+packetLen(0x0094, 14) // CZ_REQNAME
+#elif PACKETVER >= 20050411
+packetLen(0x0094, 25) // CZ_REQNAME
+#elif PACKETVER >= 20050110
+packetLen(0x0094, 13) // CZ_REQNAME
+#elif PACKETVER >= 20050103
+packetLen(0x0094, 20) // CZ_REQNAME
+#endif
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+#if PACKETVER >= 20051010
+packetLen(0x009b, 33) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20050719
+packetLen(0x009b, 35) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20050718
+packetLen(0x009b, 33) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20050628
+packetLen(0x009b, 35) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20050509
+packetLen(0x009b, 29) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20050411
+packetLen(0x009b, 32) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20050110
+packetLen(0x009b, 29) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20050103
+packetLen(0x009b, 2) // CZ_CHANGE_DIRECTION
+#endif
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+#if PACKETVER >= 20051010
+packetLen(0x009f, 17) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20050719
+packetLen(0x009f, 21) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20050718
+packetLen(0x009f, 17) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20050628
+packetLen(0x009f, 21) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20050509
+packetLen(0x009f, 15) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20050411
+packetLen(0x009f, 18) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20050110
+packetLen(0x009f, 13) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20050103
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+#endif
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+#if PACKETVER >= 20051010
+packetLen(0x00a2, 12) // CZ_ITEM_THROW
+#elif PACKETVER >= 20050719
+packetLen(0x00a2, 10) // CZ_ITEM_THROW
+#elif PACKETVER >= 20050718
+packetLen(0x00a2, 12) // CZ_ITEM_THROW
+#elif PACKETVER >= 20050628
+packetLen(0x00a2, 10) // CZ_ITEM_THROW
+#elif PACKETVER >= 20050509
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+#elif PACKETVER >= 20050411
+packetLen(0x00a2, 10) // CZ_ITEM_THROW
+#elif PACKETVER >= 20050110
+packetLen(0x00a2, 16) // CZ_ITEM_THROW
+#elif PACKETVER >= 20050103
+packetLen(0x00a2, 9) // CZ_ITEM_THROW
+#endif
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+#if PACKETVER >= 20051010
+packetLen(0x00a7, 6)
+#elif PACKETVER >= 20050719
+packetLen(0x00a7, 8)
+#elif PACKETVER >= 20050718
+packetLen(0x00a7, 6)
+#elif PACKETVER >= 20050628
+packetLen(0x00a7, 8)
+#elif PACKETVER >= 20050509
+packetLen(0x00a7, 7)
+#elif PACKETVER >= 20050411
+packetLen(0x00a7, 14)
+#elif PACKETVER >= 20050110
+packetLen(0x00a7, 6)
+#elif PACKETVER >= 20050103
+packetLen(0x00a7, 13)
+#endif
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 7) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+#if PACKETVER >= 20050110
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+#elif PACKETVER >= 20050103
+packetLen(0x00f3, 23) // CZ_REQUEST_CHAT
+#endif
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+#if PACKETVER >= 20051010
+packetLen(0x00f5, 10) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20050719
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20050718
+packetLen(0x00f5, 10) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20050628
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20050509
+packetLen(0x00f5, 7) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20050411
+packetLen(0x00f5, 14) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20050110
+packetLen(0x00f5, 9) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20050103
+packetLen(0x00f5, 32) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#endif
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+#if PACKETVER >= 20051010
+packetLen(0x00f7, 26) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050719
+packetLen(0x00f7, 15) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050718
+packetLen(0x00f7, 26) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050628
+packetLen(0x00f7, 15) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050509
+packetLen(0x00f7, 21) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050411
+packetLen(0x00f7, 12) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050110
+packetLen(0x00f7, 22) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050103
+packetLen(0x00f7, 11) // CZ_REQUEST_TIME
+#endif
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+#if PACKETVER >= 20051010
+packetLen(0x0113, 23) // CZ_USE_SKILL
+#elif PACKETVER >= 20050719
+packetLen(0x0113, 40) // CZ_USE_SKILL
+#elif PACKETVER >= 20050718
+packetLen(0x0113, 23) // CZ_USE_SKILL
+#elif PACKETVER >= 20050628
+packetLen(0x0113, 40) // CZ_USE_SKILL
+#elif PACKETVER >= 20050509
+packetLen(0x0113, 30) // CZ_USE_SKILL
+#elif PACKETVER >= 20050411
+packetLen(0x0113, 29) // CZ_USE_SKILL
+#elif PACKETVER >= 20050110
+packetLen(0x0113, 28) // CZ_USE_SKILL
+#elif PACKETVER >= 20050103
+packetLen(0x0113, 114) // CZ_USE_SKILL
+#endif
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+#if PACKETVER >= 20051010
+packetLen(0x0116, 14) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20050719
+packetLen(0x0116, 19) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20050718
+packetLen(0x0116, 14) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20050628
+packetLen(0x0116, 19) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20050509
+packetLen(0x0116, 12) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20050411
+packetLen(0x0116, 19) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20050110
+packetLen(0x0116, 12) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20050103
+packetLen(0x0116, 20) // CZ_USE_SKILL_TOGROUND
+#endif
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0158
+packetLen(0x0158, -1) // ZC_ACK_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+#if PACKETVER >= 20051010
+packetLen(0x0190, 9) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20050719
+packetLen(0x0190, 10) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20050718
+packetLen(0x0190, 9) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20050628
+packetLen(0x0190, 10) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20050509
+packetLen(0x0190, 18) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20050411
+packetLen(0x0190, 9) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20050110
+packetLen(0x0190, 15) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20050103
+packetLen(0x0190, 17) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#endif
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+#if PACKETVER >= 20050110
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+#elif PACKETVER >= 20050103
+packetLen(0x0193, 21) // CZ_REQNAME_BYGID
+#endif
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 35) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+packetLen(0x01fd, 4) // CZ_REQ_ITEMREPAIR
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+#if PACKETVER >= 20051010
+packetLen(0x020e, 32) // ZC_STARSKILL
+#elif PACKETVER >= 20050103
+packetLen(0x020e, 24) // ZC_STARSKILL
+#endif
+
+// Packet: 0x020f
+#if PACKETVER >= 20050221
+// removed
+#elif PACKETVER >= 20050103
+packetLen(0x020f, 10) // CZ_REQ_PVPPOINT
+#endif
+
+// Packet: 0x0210
+#if PACKETVER >= 20050221
+// removed
+#elif PACKETVER >= 20050103
+packetLen(0x0210, 22) // ZC_ACK_PVPPOINT
+#endif
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+#if PACKETVER >= 20050328
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+#endif
+
+// Packet: 0x0225
+#if PACKETVER >= 20050328
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+#endif
+
+// Packet: 0x0226
+#if PACKETVER >= 20050328
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+#endif
+
+// Packet: 0x0227
+#if PACKETVER >= 20050404
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+#endif
+
+// Packet: 0x0228
+#if PACKETVER >= 20050404
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+#endif
+
+// Packet: 0x0229
+#if PACKETVER >= 20050411
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+#endif
+
+// Packet: 0x022a
+#if PACKETVER >= 20050411
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+#endif
+
+// Packet: 0x022b
+#if PACKETVER >= 20050411
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+#endif
+
+// Packet: 0x022c
+#if PACKETVER >= 20050411
+packetLen(0x022c, 64) // ZC_NOTIFY_MOVEENTRY3
+#endif
+
+// Packet: 0x022d
+#if PACKETVER >= 20050425
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+#endif
+
+// Packet: 0x022e
+#if PACKETVER >= 20050624
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20050530
+packetLen(0x022e, 69) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20050523
+packetLen(0x022e, 67) // ZC_PROPERTY_HOMUN
+#endif
+
+// Packet: 0x022f
+#if PACKETVER >= 20050608
+packetLen(0x022f, 5) // ZC_FEED_MER
+#endif
+
+// Packet: 0x0230
+#if PACKETVER >= 20050523
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+#endif
+
+// Packet: 0x0231
+#if PACKETVER >= 20050608
+packetLen(0x0231, 26) // CZ_RENAME_MER
+#endif
+
+// Packet: 0x0232
+#if PACKETVER >= 20050425
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+#endif
+
+// Packet: 0x0233
+#if PACKETVER >= 20050425
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+#endif
+
+// Packet: 0x0234
+#if PACKETVER >= 20050425
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+#endif
+
+// Packet: 0x0235
+#if PACKETVER >= 20050530
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+#endif
+
+// Packet: 0x0236
+#if PACKETVER >= 20050530
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+#endif
+
+// Packet: 0x0237
+#if PACKETVER >= 20050530
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+#endif
+
+// Packet: 0x0238
+#if PACKETVER >= 20050530
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+#endif
+
+// Packet: 0x0239
+#if PACKETVER >= 20050530
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+#endif
+
+// Packet: 0x023a
+#if PACKETVER >= 20050608
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+#endif
+
+// Packet: 0x023b
+#if PACKETVER >= 20050608
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+#endif
+
+// Packet: 0x023c
+#if PACKETVER >= 20050608
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+#endif
+
+// Packet: 0x023d
+#if PACKETVER >= 20050628
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+#endif
+
+// Packet: 0x023e
+#if PACKETVER >= 20050628
+packetLen(0x023e, 4) // HC_REQUEST_CHARACTER_PASSWORD
+#endif
+
+// Packet: 0x023f
+#if PACKETVER >= 20050718
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+#endif
+
+// Packet: 0x0240
+#if PACKETVER >= 20050829
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+#elif PACKETVER >= 20050718
+packetLen(0x0240, 8) // ZC_MAIL_REQ_GET_LIST
+#endif
+
+// Packet: 0x0241
+#if PACKETVER >= 20050718
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+#endif
+
+// Packet: 0x0242
+#if PACKETVER >= 20050718
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+#endif
+
+// Packet: 0x0243
+#if PACKETVER >= 20050718
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+#endif
+
+// Packet: 0x0244
+#if PACKETVER >= 20050718
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+#endif
+
+// Packet: 0x0245
+#if PACKETVER >= 20050801
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+#elif PACKETVER >= 20050718
+packetLen(0x0245, 7) // ZC_MAIL_REQ_GET_ITEM
+#endif
+
+// Packet: 0x0246
+#if PACKETVER >= 20050718
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+#endif
+
+// Packet: 0x0247
+#if PACKETVER >= 20050718
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+#endif
+
+// Packet: 0x0248
+#if PACKETVER >= 20050829
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+#elif PACKETVER >= 20050718
+packetLen(0x0248, 68) // CZ_MAIL_SEND
+#endif
+
+// Packet: 0x0249
+#if PACKETVER >= 20050718
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+#endif
+
+// Packet: 0x024a
+#if PACKETVER >= 20050718
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+#endif
+
+// Packet: 0x024b
+#if PACKETVER >= 20050718
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+#endif
+
+// Packet: 0x024c
+#if PACKETVER >= 20050718
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+#endif
+
+// Packet: 0x024d
+#if PACKETVER >= 20050808
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+#elif PACKETVER >= 20050718
+packetLen(0x024d, 14) // CZ_AUCTION_ADD
+#endif
+
+// Packet: 0x024e
+#if PACKETVER >= 20051107
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+#elif PACKETVER >= 20050808
+packetLen(0x024e, 4) // CZ_AUCTION_ADD_CANCEL
+#elif PACKETVER >= 20050718
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+#endif
+
+// Packet: 0x024f
+#if PACKETVER >= 20050718
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+#endif
+
+// Packet: 0x0250
+#if PACKETVER >= 20050718
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+#endif
+
+// Packet: 0x0251
+#if PACKETVER >= 20051107
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+#elif PACKETVER >= 20051013
+packetLen(0x0251, 32) // CZ_AUCTION_ITEM_SEARCH
+#elif PACKETVER >= 20050801
+packetLen(0x0251, 4) // CZ_AUCTION_ITEM_SEARCH
+#elif PACKETVER >= 20050718
+packetLen(0x0251, 2) // CZ_AUCTION_ITEM_SEARCH
+#endif
+
+// Packet: 0x0252
+#if PACKETVER >= 20050718
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+#endif
+
+// Packet: 0x0253
+#if PACKETVER >= 20050822
+packetLen(0x0253, 3) // ZC_STARPLACE
+#endif
+
+// Packet: 0x0254
+#if PACKETVER >= 20050822
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+#endif
+
+// Packet: 0x0255
+#if PACKETVER >= 20050829
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+#endif
+
+// Packet: 0x0256
+#if PACKETVER >= 20050829
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+#endif
+
+// Packet: 0x0257
+#if PACKETVER >= 20050829
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+#endif
+
+// Packet: 0x0258
+#if PACKETVER >= 20050912
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+#endif
+
+// Packet: 0x0259
+#if PACKETVER >= 20050912
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+#endif
+
+// Packet: 0x025a
+#if PACKETVER >= 20051010
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+#endif
+
+// Packet: 0x025b
+#if PACKETVER >= 20051010
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+#endif
+
+// Packet: 0x025c
+#if PACKETVER >= 20051013
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+#endif
+
+// Packet: 0x025d
+#if PACKETVER >= 20051017
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+#endif
+
+// Packet: 0x025e
+#if PACKETVER >= 20051017
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+#endif
+
+// Packet: 0x025f
+#if PACKETVER >= 20051024
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+#endif
+
+// Packet: 0x0260
+#if PACKETVER >= 20051024
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+#endif
+
+
+#endif /* COMMON_PACKETS2005_LEN_MAIN_H */
diff --git a/src/common/packets/packets2005_len_sak.h b/src/common/packets/packets2005_len_sak.h
new file mode 100644
index 000000000..7684be048
--- /dev/null
+++ b/src/common/packets/packets2005_len_sak.h
@@ -0,0 +1,1869 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2005_LEN_SAK_H
+#define COMMON_PACKETS2005_LEN_SAK_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 108) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+#if PACKETVER >= 20050719
+packetLen(0x0072, 34) // CZ_ENTER
+#elif PACKETVER >= 20050718
+packetLen(0x0072, 19) // CZ_ENTER
+#elif PACKETVER >= 20050628
+packetLen(0x0072, 34) // CZ_ENTER
+#elif PACKETVER >= 20050509
+packetLen(0x0072, 25) // CZ_ENTER
+#elif PACKETVER >= 20050110
+packetLen(0x0072, 26) // CZ_ENTER
+#elif PACKETVER >= 20050103
+packetLen(0x0072, 22) // CZ_ENTER
+#endif
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 54) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 41) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+#if PACKETVER >= 20050719
+packetLen(0x007e, 113) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050718
+packetLen(0x007e, 110) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050628
+packetLen(0x007e, 113) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050509
+packetLen(0x007e, 102) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050110
+packetLen(0x007e, 114) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050103
+packetLen(0x007e, 30) // CZ_REQUEST_TIME
+#endif
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+#if PACKETVER >= 20050719
+packetLen(0x0085, 17) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20050718
+packetLen(0x0085, 11) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20050628
+packetLen(0x0085, 17) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20050509
+packetLen(0x0085, 11) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20050110
+packetLen(0x0085, 23) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20050103
+packetLen(0x0085, -1) // CZ_REQUEST_MOVE
+#endif
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+#if PACKETVER >= 20050719
+packetLen(0x0089, 13) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20050718
+packetLen(0x0089, 7) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20050628
+packetLen(0x0089, 13) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20050509
+packetLen(0x0089, 8) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20050110
+packetLen(0x0089, 9) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20050103
+packetLen(0x0089, 7) // CZ_REQUEST_ACT
+#endif
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+#if PACKETVER >= 20050719
+packetLen(0x008c, 8)
+#elif PACKETVER >= 20050718
+packetLen(0x008c, 11)
+#elif PACKETVER >= 20050628
+packetLen(0x008c, 8)
+#elif PACKETVER >= 20050509
+packetLen(0x008c, 11)
+#elif PACKETVER >= 20050110
+packetLen(0x008c, 8)
+#elif PACKETVER >= 20050103
+packetLen(0x008c, 13)
+#endif
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+#if PACKETVER >= 20050719
+packetLen(0x0094, 31) // CZ_REQNAME
+#elif PACKETVER >= 20050718
+packetLen(0x0094, 21) // CZ_REQNAME
+#elif PACKETVER >= 20050628
+packetLen(0x0094, 31) // CZ_REQNAME
+#elif PACKETVER >= 20050509
+packetLen(0x0094, 14) // CZ_REQNAME
+#elif PACKETVER >= 20050110
+packetLen(0x0094, 20) // CZ_REQNAME
+#elif PACKETVER >= 20050103
+packetLen(0x0094, 14) // CZ_REQNAME
+#endif
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+#if PACKETVER >= 20050719
+packetLen(0x009b, 32) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20050718
+packetLen(0x009b, 31) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20050628
+packetLen(0x009b, 32) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20050509
+packetLen(0x009b, 26) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20050110
+packetLen(0x009b, 32) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20050103
+packetLen(0x009b, 2) // CZ_CHANGE_DIRECTION
+#endif
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+#if PACKETVER >= 20050719
+packetLen(0x009f, 19) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20050718
+packetLen(0x009f, 12) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20050628
+packetLen(0x009f, 19) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20050509
+packetLen(0x009f, 14) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20050110
+packetLen(0x009f, 17) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20050103
+packetLen(0x009f, 18) // CZ_ITEM_PICKUP
+#endif
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+#if PACKETVER >= 20050719
+packetLen(0x00a2, 9) // CZ_ITEM_THROW
+#elif PACKETVER >= 20050718
+packetLen(0x00a2, 18) // CZ_ITEM_THROW
+#elif PACKETVER >= 20050628
+packetLen(0x00a2, 9) // CZ_ITEM_THROW
+#elif PACKETVER >= 20050509
+packetLen(0x00a2, 15) // CZ_ITEM_THROW
+#elif PACKETVER >= 20050110
+packetLen(0x00a2, 11) // CZ_ITEM_THROW
+#elif PACKETVER >= 20050103
+packetLen(0x00a2, 7) // CZ_ITEM_THROW
+#endif
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+#if PACKETVER >= 20050719
+packetLen(0x00a7, 11)
+#elif PACKETVER >= 20050718
+packetLen(0x00a7, 15)
+#elif PACKETVER >= 20050628
+packetLen(0x00a7, 11)
+#elif PACKETVER >= 20050509
+packetLen(0x00a7, 8)
+#elif PACKETVER >= 20050110
+packetLen(0x00a7, 13)
+#elif PACKETVER >= 20050103
+packetLen(0x00a7, 7)
+#endif
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 7) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+#if PACKETVER >= 20050110
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+#elif PACKETVER >= 20050103
+packetLen(0x00f3, 8) // CZ_REQUEST_CHAT
+#endif
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+#if PACKETVER >= 20050719
+packetLen(0x00f5, 13) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20050718
+packetLen(0x00f5, 7) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20050628
+packetLen(0x00f5, 13) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20050509
+packetLen(0x00f5, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20050110
+packetLen(0x00f5, 9) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20050103
+packetLen(0x00f5, 29) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#endif
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+#if PACKETVER >= 20050719
+packetLen(0x00f7, 18) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050718
+packetLen(0x00f7, 13) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050628
+packetLen(0x00f7, 18) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050509
+packetLen(0x00f7, 22) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050110
+packetLen(0x00f7, 21) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20050103
+packetLen(0x00f7, 14) // CZ_REQUEST_TIME
+#endif
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+#if PACKETVER >= 20050719
+packetLen(0x0113, 33) // CZ_USE_SKILL
+#elif PACKETVER >= 20050718
+packetLen(0x0113, 30) // CZ_USE_SKILL
+#elif PACKETVER >= 20050628
+packetLen(0x0113, 33) // CZ_USE_SKILL
+#elif PACKETVER >= 20050509
+packetLen(0x0113, 22) // CZ_USE_SKILL
+#elif PACKETVER >= 20050110
+packetLen(0x0113, 34) // CZ_USE_SKILL
+#elif PACKETVER >= 20050103
+packetLen(0x0113, 110) // CZ_USE_SKILL
+#endif
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+#if PACKETVER >= 20050628
+packetLen(0x0116, 12) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20050509
+packetLen(0x0116, 10) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20050110
+packetLen(0x0116, 20) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20050103
+packetLen(0x0116, 12) // CZ_USE_SKILL_TOGROUND
+#endif
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0158
+packetLen(0x0158, -1) // ZC_ACK_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+#if PACKETVER >= 20050719
+packetLen(0x0190, 24) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20050718
+packetLen(0x0190, 21) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20050628
+packetLen(0x0190, 24) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20050509
+packetLen(0x0190, 19) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20050110
+packetLen(0x0190, 20) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20050103
+packetLen(0x0190, 15) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#endif
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+#if PACKETVER >= 20050110
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+#elif PACKETVER >= 20050103
+packetLen(0x0193, 21) // CZ_REQNAME_BYGID
+#endif
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 35) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+packetLen(0x01fd, 4) // CZ_REQ_ITEMREPAIR
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+#if PACKETVER >= 20051010
+packetLen(0x020e, 32) // ZC_STARSKILL
+#elif PACKETVER >= 20050103
+packetLen(0x020e, 24) // ZC_STARSKILL
+#endif
+
+// Packet: 0x020f
+packetLen(0x020f, 10) // CZ_REQ_PVPPOINT
+
+// Packet: 0x0210
+packetLen(0x0210, 22) // ZC_ACK_PVPPOINT
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+#if PACKETVER >= 20050328
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+#endif
+
+// Packet: 0x0225
+#if PACKETVER >= 20050328
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+#endif
+
+// Packet: 0x0226
+#if PACKETVER >= 20050328
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+#endif
+
+// Packet: 0x0227
+#if PACKETVER >= 20050404
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+#endif
+
+// Packet: 0x0228
+#if PACKETVER >= 20050404
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+#endif
+
+// Packet: 0x0229
+#if PACKETVER >= 20050411
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+#endif
+
+// Packet: 0x022a
+#if PACKETVER >= 20050411
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+#endif
+
+// Packet: 0x022b
+#if PACKETVER >= 20050411
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+#endif
+
+// Packet: 0x022c
+#if PACKETVER >= 20050411
+packetLen(0x022c, 64) // ZC_NOTIFY_MOVEENTRY3
+#endif
+
+// Packet: 0x022d
+#if PACKETVER >= 20050425
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+#endif
+
+// Packet: 0x022e
+#if PACKETVER >= 20050622
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20050530
+packetLen(0x022e, 69) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20050523
+packetLen(0x022e, 67) // ZC_PROPERTY_HOMUN
+#endif
+
+// Packet: 0x022f
+#if PACKETVER >= 20050608
+packetLen(0x022f, 5) // ZC_FEED_MER
+#endif
+
+// Packet: 0x0230
+#if PACKETVER >= 20050523
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+#endif
+
+// Packet: 0x0231
+#if PACKETVER >= 20050608
+packetLen(0x0231, 26) // CZ_RENAME_MER
+#endif
+
+// Packet: 0x0232
+#if PACKETVER >= 20050425
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+#endif
+
+// Packet: 0x0233
+#if PACKETVER >= 20050425
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+#endif
+
+// Packet: 0x0234
+#if PACKETVER >= 20050425
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+#endif
+
+// Packet: 0x0235
+#if PACKETVER >= 20050530
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+#endif
+
+// Packet: 0x0236
+#if PACKETVER >= 20050530
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+#endif
+
+// Packet: 0x0237
+#if PACKETVER >= 20050530
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+#endif
+
+// Packet: 0x0238
+#if PACKETVER >= 20050530
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+#endif
+
+// Packet: 0x0239
+#if PACKETVER >= 20050531
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+#endif
+
+// Packet: 0x023a
+#if PACKETVER >= 20050608
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+#endif
+
+// Packet: 0x023b
+#if PACKETVER >= 20050608
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+#endif
+
+// Packet: 0x023c
+#if PACKETVER >= 20050608
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+#endif
+
+// Packet: 0x023d
+#if PACKETVER >= 20050628
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+#endif
+
+// Packet: 0x023e
+#if PACKETVER >= 20050628
+packetLen(0x023e, 4) // HC_REQUEST_CHARACTER_PASSWORD
+#endif
+
+// Packet: 0x023f
+#if PACKETVER >= 20050718
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+#endif
+
+// Packet: 0x0240
+#if PACKETVER >= 20050829
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+#elif PACKETVER >= 20050718
+packetLen(0x0240, 8) // ZC_MAIL_REQ_GET_LIST
+#endif
+
+// Packet: 0x0241
+#if PACKETVER >= 20050718
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+#endif
+
+// Packet: 0x0242
+#if PACKETVER >= 20050718
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+#endif
+
+// Packet: 0x0243
+#if PACKETVER >= 20050718
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+#endif
+
+// Packet: 0x0244
+#if PACKETVER >= 20050718
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+#endif
+
+// Packet: 0x0245
+#if PACKETVER >= 20050801
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+#elif PACKETVER >= 20050718
+packetLen(0x0245, 7) // ZC_MAIL_REQ_GET_ITEM
+#endif
+
+// Packet: 0x0246
+#if PACKETVER >= 20050718
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+#endif
+
+// Packet: 0x0247
+#if PACKETVER >= 20050718
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+#endif
+
+// Packet: 0x0248
+#if PACKETVER >= 20050829
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+#elif PACKETVER >= 20050718
+packetLen(0x0248, 68) // CZ_MAIL_SEND
+#endif
+
+// Packet: 0x0249
+#if PACKETVER >= 20050718
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+#endif
+
+// Packet: 0x024a
+#if PACKETVER >= 20050718
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+#endif
+
+// Packet: 0x024b
+#if PACKETVER >= 20050718
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+#endif
+
+// Packet: 0x024c
+#if PACKETVER >= 20050718
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+#endif
+
+// Packet: 0x024d
+#if PACKETVER >= 20050808
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+#elif PACKETVER >= 20050718
+packetLen(0x024d, 14) // CZ_AUCTION_ADD
+#endif
+
+// Packet: 0x024e
+#if PACKETVER >= 20051107
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+#elif PACKETVER >= 20050808
+packetLen(0x024e, 4) // CZ_AUCTION_ADD_CANCEL
+#elif PACKETVER >= 20050718
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+#endif
+
+// Packet: 0x024f
+#if PACKETVER >= 20050718
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+#endif
+
+// Packet: 0x0250
+#if PACKETVER >= 20050718
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+#endif
+
+// Packet: 0x0251
+#if PACKETVER >= 20051107
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+#elif PACKETVER >= 20051013
+packetLen(0x0251, 32) // CZ_AUCTION_ITEM_SEARCH
+#elif PACKETVER >= 20050801
+packetLen(0x0251, 4) // CZ_AUCTION_ITEM_SEARCH
+#elif PACKETVER >= 20050718
+packetLen(0x0251, 2) // CZ_AUCTION_ITEM_SEARCH
+#endif
+
+// Packet: 0x0252
+#if PACKETVER >= 20050718
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+#endif
+
+// Packet: 0x0253
+#if PACKETVER >= 20050817
+packetLen(0x0253, 3) // ZC_STARPLACE
+#endif
+
+// Packet: 0x0254
+#if PACKETVER >= 20050817
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+#endif
+
+// Packet: 0x0255
+#if PACKETVER >= 20050829
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+#endif
+
+// Packet: 0x0256
+#if PACKETVER >= 20050829
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+#endif
+
+// Packet: 0x0257
+#if PACKETVER >= 20050829
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+#endif
+
+// Packet: 0x0258
+#if PACKETVER >= 20050912
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+#endif
+
+// Packet: 0x0259
+#if PACKETVER >= 20050912
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+#endif
+
+// Packet: 0x025a
+#if PACKETVER >= 20051010
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+#endif
+
+// Packet: 0x025b
+#if PACKETVER >= 20051010
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+#endif
+
+// Packet: 0x025c
+#if PACKETVER >= 20051013
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+#endif
+
+// Packet: 0x025d
+#if PACKETVER >= 20051017
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+#endif
+
+// Packet: 0x025e
+#if PACKETVER >= 20051017
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+#endif
+
+// Packet: 0x025f
+#if PACKETVER >= 20051024
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+#endif
+
+// Packet: 0x0260
+#if PACKETVER >= 20051024
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+#endif
+
+
+#endif /* COMMON_PACKETS2005_LEN_SAK_H */
diff --git a/src/common/packets/packets2006_len_ad.h b/src/common/packets/packets2006_len_ad.h
new file mode 100644
index 000000000..a8eef10d5
--- /dev/null
+++ b/src/common/packets/packets2006_len_ad.h
@@ -0,0 +1,1925 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2006_LEN_AD_H
+#define COMMON_PACKETS2006_LEN_AD_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+#if PACKETVER >= 20061030
+packetLen(0x006d, 110) // HC_ACCEPT_MAKECHAR
+#elif PACKETVER >= 20060102
+packetLen(0x006d, 108) // HC_ACCEPT_MAKECHAR
+#endif
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+#if PACKETVER >= 20060327
+packetLen(0x0072, 25) // CZ_ENTER
+#elif PACKETVER >= 20060102
+packetLen(0x0072, 20) // CZ_ENTER
+#endif
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 54) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 41) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+#if PACKETVER >= 20060327
+packetLen(0x007e, 102) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20060102
+packetLen(0x007e, 103) // CZ_REQUEST_TIME
+#endif
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+#if PACKETVER >= 20060327
+packetLen(0x0085, 11) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20060102
+packetLen(0x0085, 13) // CZ_REQUEST_MOVE
+#endif
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+#if PACKETVER >= 20060327
+packetLen(0x0089, 8) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20060102
+packetLen(0x0089, 10) // CZ_REQUEST_ACT
+#endif
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+#if PACKETVER >= 20060327
+packetLen(0x008c, 11)
+#elif PACKETVER >= 20060102
+packetLen(0x008c, 15)
+#endif
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+#if PACKETVER >= 20060327
+packetLen(0x0094, 14) // CZ_REQNAME
+#elif PACKETVER >= 20060102
+packetLen(0x0094, 16) // CZ_REQNAME
+#endif
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+#if PACKETVER >= 20060327
+packetLen(0x009b, 26) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20060102
+packetLen(0x009b, 33) // CZ_CHANGE_DIRECTION
+#endif
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+#if PACKETVER >= 20060327
+packetLen(0x009f, 14) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20060102
+packetLen(0x009f, 17) // CZ_ITEM_PICKUP
+#endif
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+#if PACKETVER >= 20060327
+packetLen(0x00a2, 15) // CZ_ITEM_THROW
+#elif PACKETVER >= 20060102
+packetLen(0x00a2, 12) // CZ_ITEM_THROW
+#endif
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+#if PACKETVER >= 20060327
+packetLen(0x00a7, 8)
+#elif PACKETVER >= 20060102
+packetLen(0x00a7, 6)
+#endif
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 7) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+#if PACKETVER >= 20060327
+packetLen(0x00f5, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20060102
+packetLen(0x00f5, 10) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#endif
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+#if PACKETVER >= 20060327
+packetLen(0x00f7, 22) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20060102
+packetLen(0x00f7, 26) // CZ_REQUEST_TIME
+#endif
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+#if PACKETVER >= 20060327
+packetLen(0x0113, 22) // CZ_USE_SKILL
+#elif PACKETVER >= 20060102
+packetLen(0x0113, 23) // CZ_USE_SKILL
+#endif
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+#if PACKETVER >= 20060327
+packetLen(0x0116, 10) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20060102
+packetLen(0x0116, 14) // CZ_USE_SKILL_TOGROUND
+#endif
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0158
+packetLen(0x0158, -1) // ZC_ACK_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+#if PACKETVER >= 20060327
+packetLen(0x0190, 19) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20060102
+packetLen(0x0190, 9) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#endif
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 35) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+packetLen(0x01fd, 4) // CZ_REQ_ITEMREPAIR
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x020f
+packetLen(0x020f, 10) // CZ_REQ_PVPPOINT
+
+// Packet: 0x0210
+packetLen(0x0210, 22) // ZC_ACK_PVPPOINT
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+
+// Packet: 0x022b
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+
+// Packet: 0x022c
+packetLen(0x022c, 64) // ZC_NOTIFY_MOVEENTRY3
+
+// Packet: 0x022d
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+
+// Packet: 0x022e
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+
+// Packet: 0x022f
+packetLen(0x022f, 5) // ZC_FEED_MER
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+#if PACKETVER >= 20061207
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+#elif PACKETVER >= 20060102
+packetLen(0x023e, 4) // HC_REQUEST_CHARACTER_PASSWORD
+#endif
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+#if PACKETVER >= 20060109
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+#endif
+
+// Packet: 0x0262
+#if PACKETVER >= 20060109
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+#endif
+
+// Packet: 0x0263
+#if PACKETVER >= 20060109
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+#endif
+
+// Packet: 0x0264
+#if PACKETVER >= 20060109
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+#endif
+
+// Packet: 0x0265
+#if PACKETVER >= 20060109
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+#endif
+
+// Packet: 0x0266
+#if PACKETVER >= 20060109
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+#endif
+
+// Packet: 0x0267
+#if PACKETVER >= 20060109
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+#endif
+
+// Packet: 0x0268
+#if PACKETVER >= 20060109
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+#endif
+
+// Packet: 0x0269
+#if PACKETVER >= 20060109
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+#endif
+
+// Packet: 0x026a
+#if PACKETVER >= 20060109
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+#endif
+
+// Packet: 0x026b
+#if PACKETVER >= 20060109
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+#endif
+
+// Packet: 0x026c
+#if PACKETVER >= 20060109
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+#endif
+
+// Packet: 0x026d
+#if PACKETVER >= 20060109
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+#endif
+
+// Packet: 0x026f
+#if PACKETVER >= 20060109
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+#endif
+
+// Packet: 0x0270
+#if PACKETVER >= 20060109
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+#endif
+
+// Packet: 0x0271
+#if PACKETVER >= 20060126
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+#elif PACKETVER >= 20060109
+packetLen(0x0271, 38) // CA_ACK_LOGIN_ACCOUNT_INFO
+#endif
+
+// Packet: 0x0272
+#if PACKETVER >= 20060109
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+#endif
+
+// Packet: 0x0273
+#if PACKETVER >= 20060313
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+#elif PACKETVER >= 20060306
+packetLen(0x0273, 6) // CZ_REQ_MAIL_RETURN
+#endif
+
+// Packet: 0x0274
+#if PACKETVER >= 20060306
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+#endif
+
+// Packet: 0x0277
+#if PACKETVER >= 20060424
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+#endif
+
+// Packet: 0x0278
+#if PACKETVER >= 20060607
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+#endif
+
+// Packet: 0x0279
+#if PACKETVER >= 20060607
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+#endif
+
+// Packet: 0x027a
+#if PACKETVER >= 20060607
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+#endif
+
+// Packet: 0x027b
+#if PACKETVER >= 20060626
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+#endif
+
+// Packet: 0x027c
+#if PACKETVER >= 20060626
+packetLen(0x027c, 60) // CA_LOGIN4
+#endif
+
+// Packet: 0x027d
+#if PACKETVER >= 20060703
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+#endif
+
+// Packet: 0x027e
+#if PACKETVER >= 20060710
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+#endif
+
+// Packet: 0x027f
+#if PACKETVER >= 20060821
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+#elif PACKETVER >= 20060731
+packetLen(0x027f, 4) // CA_CLIENT_TYPE
+#endif
+
+// Packet: 0x0280
+#if PACKETVER >= 20060918
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+#elif PACKETVER >= 20060904
+packetLen(0x0280, 10) // ZC_GANGSI_POINT
+#endif
+
+// Packet: 0x0281
+#if PACKETVER >= 20060918
+packetLen(0x0281, 4) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20060904
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#endif
+
+// Packet: 0x0282
+#if PACKETVER >= 20060918
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+#elif PACKETVER >= 20060904
+packetLen(0x0282, 282) // ZC_GANGSI_RANK
+#endif
+
+// Packet: 0x0283
+#if PACKETVER >= 20060904
+packetLen(0x0283, 6) // ZC_AID
+#endif
+
+// Packet: 0x0284
+#if PACKETVER >= 20060911
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+#endif
+
+// Packet: 0x0285
+#if PACKETVER >= 20060918
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+#endif
+
+// Packet: 0x0286
+#if PACKETVER >= 20060918
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+#endif
+
+// Packet: 0x028a
+#if PACKETVER >= 20060927
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+#endif
+
+// Packet: 0x028b
+#if PACKETVER >= 20061030
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+#endif
+
+// Packet: 0x028c
+#if PACKETVER >= 20061030
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+#endif
+
+// Packet: 0x028d
+#if PACKETVER >= 20061030
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+#endif
+
+// Packet: 0x028e
+#if PACKETVER >= 20061030
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+#endif
+
+// Packet: 0x028f
+#if PACKETVER >= 20061030
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+#endif
+
+// Packet: 0x0290
+#if PACKETVER >= 20061030
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+#endif
+
+// Packet: 0x0291
+#if PACKETVER >= 20061030
+packetLen(0x0291, 4) // ZC_MSG
+#endif
+
+// Packet: 0x0292
+#if PACKETVER >= 20061030
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+#endif
+
+// Packet: 0x0293
+#if PACKETVER >= 20061204
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+#elif PACKETVER >= 20061030
+packetLen(0x0293, 66) // ZC_BOSS_INFO
+#endif
+
+// Packet: 0x0294
+#if PACKETVER >= 20061204
+packetLen(0x0294, 10) // ZC_READ_BOOK
+#endif
+
+// Packet: 0x0295
+#if PACKETVER >= 20061218
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20061211
+packetLen(0x0295, 4) // ZC_EQUIPMENT_ITEMLIST2
+#endif
+
+// Packet: 0x0296
+#if PACKETVER >= 20061218
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20061211
+packetLen(0x0296, 4) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#endif
+
+// Packet: 0x0297
+#if PACKETVER >= 20061218
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20061211
+packetLen(0x0297, 4) // ZC_CART_EQUIPMENT_ITEMLIST2
+#endif
+
+// Packet: 0x0298
+#if PACKETVER >= 20061211
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+#endif
+
+// Packet: 0x0299
+#if PACKETVER >= 20061211
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+#endif
+
+// Packet: 0x029a
+#if PACKETVER >= 20061218
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+#endif
+
+// Packet: 0x029b
+#if PACKETVER >= 20061226
+packetLen(0x029b, 70) // ZC_MER_INIT
+#endif
+
+// Packet: 0x029c
+#if PACKETVER >= 20061226
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+#endif
+
+// Packet: 0x029d
+#if PACKETVER >= 20061226
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+#endif
+
+// Packet: 0x029e
+#if PACKETVER >= 20061226
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+#endif
+
+// Packet: 0x029f
+#if PACKETVER >= 20061226
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+#endif
+
+// Packet: 0x02a0
+#if PACKETVER >= 20061226
+packetLen(0x02a0, 10) // CZ_UNUSED_MER_USE_SKILL
+#endif
+
+// Packet: 0x02a1
+#if PACKETVER >= 20061226
+packetLen(0x02a1, 4) // CZ_UNUSED_MER_UPGRADE_SKILLLEVEL
+#endif
+
+// Packet: 0x02a2
+#if PACKETVER >= 20061226
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+#endif
+
+
+#endif /* COMMON_PACKETS2006_LEN_AD_H */
diff --git a/src/common/packets/packets2006_len_main.h b/src/common/packets/packets2006_len_main.h
new file mode 100644
index 000000000..1b6debfd0
--- /dev/null
+++ b/src/common/packets/packets2006_len_main.h
@@ -0,0 +1,1919 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2006_LEN_MAIN_H
+#define COMMON_PACKETS2006_LEN_MAIN_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+#if PACKETVER >= 20061030
+packetLen(0x006d, 110) // HC_ACCEPT_MAKECHAR
+#elif PACKETVER >= 20060102
+packetLen(0x006d, 108) // HC_ACCEPT_MAKECHAR
+#endif
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+#if PACKETVER >= 20060327
+packetLen(0x0072, 25) // CZ_ENTER
+#elif PACKETVER >= 20060102
+packetLen(0x0072, 20) // CZ_ENTER
+#endif
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 54) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 41) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+#if PACKETVER >= 20060327
+packetLen(0x007e, 102) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20060102
+packetLen(0x007e, 103) // CZ_REQUEST_TIME
+#endif
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+#if PACKETVER >= 20060327
+packetLen(0x0085, 11) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20060102
+packetLen(0x0085, 13) // CZ_REQUEST_MOVE
+#endif
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+#if PACKETVER >= 20060327
+packetLen(0x0089, 8) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20060102
+packetLen(0x0089, 10) // CZ_REQUEST_ACT
+#endif
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+#if PACKETVER >= 20060327
+packetLen(0x008c, 11)
+#elif PACKETVER >= 20060102
+packetLen(0x008c, 15)
+#endif
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+#if PACKETVER >= 20060327
+packetLen(0x0094, 14) // CZ_REQNAME
+#elif PACKETVER >= 20060102
+packetLen(0x0094, 16) // CZ_REQNAME
+#endif
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+#if PACKETVER >= 20060327
+packetLen(0x009b, 26) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20060102
+packetLen(0x009b, 33) // CZ_CHANGE_DIRECTION
+#endif
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+#if PACKETVER >= 20060327
+packetLen(0x009f, 14) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20060102
+packetLen(0x009f, 17) // CZ_ITEM_PICKUP
+#endif
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+#if PACKETVER >= 20060327
+packetLen(0x00a2, 15) // CZ_ITEM_THROW
+#elif PACKETVER >= 20060102
+packetLen(0x00a2, 12) // CZ_ITEM_THROW
+#endif
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+#if PACKETVER >= 20060327
+packetLen(0x00a7, 8)
+#elif PACKETVER >= 20060102
+packetLen(0x00a7, 6)
+#endif
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 7) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+#if PACKETVER >= 20060327
+packetLen(0x00f5, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20060102
+packetLen(0x00f5, 10) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#endif
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+#if PACKETVER >= 20060327
+packetLen(0x00f7, 22) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20060102
+packetLen(0x00f7, 26) // CZ_REQUEST_TIME
+#endif
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+#if PACKETVER >= 20060327
+packetLen(0x0113, 22) // CZ_USE_SKILL
+#elif PACKETVER >= 20060102
+packetLen(0x0113, 23) // CZ_USE_SKILL
+#endif
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+#if PACKETVER >= 20060327
+packetLen(0x0116, 10) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20060102
+packetLen(0x0116, 14) // CZ_USE_SKILL_TOGROUND
+#endif
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0158
+packetLen(0x0158, -1) // ZC_ACK_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+#if PACKETVER >= 20060327
+packetLen(0x0190, 19) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20060102
+packetLen(0x0190, 9) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#endif
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 35) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+packetLen(0x01fd, 4) // CZ_REQ_ITEMREPAIR
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+
+// Packet: 0x022b
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+
+// Packet: 0x022c
+packetLen(0x022c, 64) // ZC_NOTIFY_MOVEENTRY3
+
+// Packet: 0x022d
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+
+// Packet: 0x022e
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+
+// Packet: 0x022f
+packetLen(0x022f, 5) // ZC_FEED_MER
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+#if PACKETVER >= 20061207
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+#elif PACKETVER >= 20060102
+packetLen(0x023e, 4) // HC_REQUEST_CHARACTER_PASSWORD
+#endif
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+#if PACKETVER >= 20060109
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+#endif
+
+// Packet: 0x0262
+#if PACKETVER >= 20060109
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+#endif
+
+// Packet: 0x0263
+#if PACKETVER >= 20060109
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+#endif
+
+// Packet: 0x0264
+#if PACKETVER >= 20060109
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+#endif
+
+// Packet: 0x0265
+#if PACKETVER >= 20060109
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+#endif
+
+// Packet: 0x0266
+#if PACKETVER >= 20060109
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+#endif
+
+// Packet: 0x0267
+#if PACKETVER >= 20060109
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+#endif
+
+// Packet: 0x0268
+#if PACKETVER >= 20060109
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+#endif
+
+// Packet: 0x0269
+#if PACKETVER >= 20060109
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+#endif
+
+// Packet: 0x026a
+#if PACKETVER >= 20060109
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+#endif
+
+// Packet: 0x026b
+#if PACKETVER >= 20060109
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+#endif
+
+// Packet: 0x026c
+#if PACKETVER >= 20060109
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+#endif
+
+// Packet: 0x026d
+#if PACKETVER >= 20060109
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+#endif
+
+// Packet: 0x026f
+#if PACKETVER >= 20060109
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+#endif
+
+// Packet: 0x0270
+#if PACKETVER >= 20060109
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+#endif
+
+// Packet: 0x0271
+#if PACKETVER >= 20060126
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+#elif PACKETVER >= 20060109
+packetLen(0x0271, 38) // CA_ACK_LOGIN_ACCOUNT_INFO
+#endif
+
+// Packet: 0x0272
+#if PACKETVER >= 20060109
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+#endif
+
+// Packet: 0x0273
+#if PACKETVER >= 20060313
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+#elif PACKETVER >= 20060306
+packetLen(0x0273, 6) // CZ_REQ_MAIL_RETURN
+#endif
+
+// Packet: 0x0274
+#if PACKETVER >= 20060306
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+#endif
+
+// Packet: 0x0277
+#if PACKETVER >= 20060424
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+#endif
+
+// Packet: 0x0278
+#if PACKETVER >= 20060607
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+#endif
+
+// Packet: 0x0279
+#if PACKETVER >= 20060607
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+#endif
+
+// Packet: 0x027a
+#if PACKETVER >= 20060607
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+#endif
+
+// Packet: 0x027b
+#if PACKETVER >= 20060626
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+#endif
+
+// Packet: 0x027c
+#if PACKETVER >= 20060626
+packetLen(0x027c, 60) // CA_LOGIN4
+#endif
+
+// Packet: 0x027d
+#if PACKETVER >= 20060703
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+#endif
+
+// Packet: 0x027e
+#if PACKETVER >= 20060710
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+#endif
+
+// Packet: 0x027f
+#if PACKETVER >= 20060821
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+#elif PACKETVER >= 20060731
+packetLen(0x027f, 4) // CA_CLIENT_TYPE
+#endif
+
+// Packet: 0x0280
+#if PACKETVER >= 20060918
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+#elif PACKETVER >= 20060904
+packetLen(0x0280, 10) // ZC_GANGSI_POINT
+#endif
+
+// Packet: 0x0281
+#if PACKETVER >= 20060918
+packetLen(0x0281, 4) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20060904
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#endif
+
+// Packet: 0x0282
+#if PACKETVER >= 20060918
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+#elif PACKETVER >= 20060904
+packetLen(0x0282, 282) // ZC_GANGSI_RANK
+#endif
+
+// Packet: 0x0283
+#if PACKETVER >= 20060904
+packetLen(0x0283, 6) // ZC_AID
+#endif
+
+// Packet: 0x0284
+#if PACKETVER >= 20060911
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+#endif
+
+// Packet: 0x0285
+#if PACKETVER >= 20060918
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+#endif
+
+// Packet: 0x0286
+#if PACKETVER >= 20060918
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+#endif
+
+// Packet: 0x028a
+#if PACKETVER >= 20060927
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+#endif
+
+// Packet: 0x028b
+#if PACKETVER >= 20061030
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+#endif
+
+// Packet: 0x028c
+#if PACKETVER >= 20061030
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+#endif
+
+// Packet: 0x028d
+#if PACKETVER >= 20061030
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+#endif
+
+// Packet: 0x028e
+#if PACKETVER >= 20061030
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+#endif
+
+// Packet: 0x028f
+#if PACKETVER >= 20061030
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+#endif
+
+// Packet: 0x0290
+#if PACKETVER >= 20061030
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+#endif
+
+// Packet: 0x0291
+#if PACKETVER >= 20061030
+packetLen(0x0291, 4) // ZC_MSG
+#endif
+
+// Packet: 0x0292
+#if PACKETVER >= 20061030
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+#endif
+
+// Packet: 0x0293
+#if PACKETVER >= 20061204
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+#elif PACKETVER >= 20061030
+packetLen(0x0293, 66) // ZC_BOSS_INFO
+#endif
+
+// Packet: 0x0294
+#if PACKETVER >= 20061204
+packetLen(0x0294, 10) // ZC_READ_BOOK
+#endif
+
+// Packet: 0x0295
+#if PACKETVER >= 20061218
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20061211
+packetLen(0x0295, 4) // ZC_EQUIPMENT_ITEMLIST2
+#endif
+
+// Packet: 0x0296
+#if PACKETVER >= 20061218
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20061211
+packetLen(0x0296, 4) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#endif
+
+// Packet: 0x0297
+#if PACKETVER >= 20061218
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20061211
+packetLen(0x0297, 4) // ZC_CART_EQUIPMENT_ITEMLIST2
+#endif
+
+// Packet: 0x0298
+#if PACKETVER >= 20061211
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+#endif
+
+// Packet: 0x0299
+#if PACKETVER >= 20061211
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+#endif
+
+// Packet: 0x029a
+#if PACKETVER >= 20061218
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+#endif
+
+// Packet: 0x029b
+#if PACKETVER >= 20061226
+packetLen(0x029b, 70) // ZC_MER_INIT
+#endif
+
+// Packet: 0x029c
+#if PACKETVER >= 20061226
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+#endif
+
+// Packet: 0x029d
+#if PACKETVER >= 20061226
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+#endif
+
+// Packet: 0x029e
+#if PACKETVER >= 20061226
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+#endif
+
+// Packet: 0x029f
+#if PACKETVER >= 20061226
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+#endif
+
+// Packet: 0x02a0
+#if PACKETVER >= 20061226
+packetLen(0x02a0, 10) // CZ_UNUSED_MER_USE_SKILL
+#endif
+
+// Packet: 0x02a1
+#if PACKETVER >= 20061226
+packetLen(0x02a1, 4) // CZ_UNUSED_MER_UPGRADE_SKILLLEVEL
+#endif
+
+// Packet: 0x02a2
+#if PACKETVER >= 20061226
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+#endif
+
+
+#endif /* COMMON_PACKETS2006_LEN_MAIN_H */
diff --git a/src/common/packets/packets2006_len_sak.h b/src/common/packets/packets2006_len_sak.h
new file mode 100644
index 000000000..8b48e1d1d
--- /dev/null
+++ b/src/common/packets/packets2006_len_sak.h
@@ -0,0 +1,1932 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2006_LEN_SAK_H
+#define COMMON_PACKETS2006_LEN_SAK_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+#if PACKETVER >= 20061023
+packetLen(0x006d, 110) // HC_ACCEPT_MAKECHAR
+#elif PACKETVER >= 20060102
+packetLen(0x006d, 108) // HC_ACCEPT_MAKECHAR
+#endif
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+#if PACKETVER >= 20060327
+packetLen(0x0072, 26) // CZ_ENTER
+#elif PACKETVER >= 20060102
+packetLen(0x0072, 34) // CZ_ENTER
+#endif
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 54) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 41) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+#if PACKETVER >= 20060327
+packetLen(0x007e, 120) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20060102
+packetLen(0x007e, 113) // CZ_REQUEST_TIME
+#endif
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+#if PACKETVER >= 20060327
+packetLen(0x0085, 12) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20060102
+packetLen(0x0085, 17) // CZ_REQUEST_MOVE
+#endif
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+packetLen(0x0089, 13) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+#if PACKETVER >= 20060327
+packetLen(0x008c, 12)
+#elif PACKETVER >= 20060102
+packetLen(0x008c, 8)
+#endif
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+#if PACKETVER >= 20060327
+packetLen(0x0094, 23) // CZ_REQNAME
+#elif PACKETVER >= 20060102
+packetLen(0x0094, 31) // CZ_REQNAME
+#endif
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+#if PACKETVER >= 20060327
+packetLen(0x009b, 37) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20060102
+packetLen(0x009b, 32) // CZ_CHANGE_DIRECTION
+#endif
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+#if PACKETVER >= 20060327
+packetLen(0x009f, 24) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20060102
+packetLen(0x009f, 19) // CZ_ITEM_PICKUP
+#endif
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+#if PACKETVER >= 20060327
+packetLen(0x00a2, 11) // CZ_ITEM_THROW
+#elif PACKETVER >= 20060102
+packetLen(0x00a2, 9) // CZ_ITEM_THROW
+#endif
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+#if PACKETVER >= 20060327
+packetLen(0x00a7, 15)
+#elif PACKETVER >= 20060102
+packetLen(0x00a7, 11)
+#endif
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 7) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+packetLen(0x00f5, 13) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+#if PACKETVER >= 20060327
+packetLen(0x00f7, 26) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20060102
+packetLen(0x00f7, 18) // CZ_REQUEST_TIME
+#endif
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+#if PACKETVER >= 20060327
+packetLen(0x0113, 40) // CZ_USE_SKILL
+#elif PACKETVER >= 20060102
+packetLen(0x0113, 33) // CZ_USE_SKILL
+#endif
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+#if PACKETVER >= 20060327
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20060102
+packetLen(0x0116, 12) // CZ_USE_SKILL_TOGROUND
+#endif
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0158
+packetLen(0x0158, -1) // ZC_ACK_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+#if PACKETVER >= 20060327
+packetLen(0x0190, 18) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20060102
+packetLen(0x0190, 24) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#endif
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 35) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+packetLen(0x01fd, 4) // CZ_REQ_ITEMREPAIR
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x020f
+packetLen(0x020f, 10) // CZ_REQ_PVPPOINT
+
+// Packet: 0x0210
+packetLen(0x0210, 22) // ZC_ACK_PVPPOINT
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+
+// Packet: 0x022b
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+
+// Packet: 0x022c
+packetLen(0x022c, 64) // ZC_NOTIFY_MOVEENTRY3
+
+// Packet: 0x022d
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+
+// Packet: 0x022e
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+
+// Packet: 0x022f
+packetLen(0x022f, 5) // ZC_FEED_MER
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+#if PACKETVER >= 20061207
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+#elif PACKETVER >= 20060102
+packetLen(0x023e, 4) // HC_REQUEST_CHARACTER_PASSWORD
+#endif
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+#if PACKETVER >= 20060109
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+#endif
+
+// Packet: 0x0262
+#if PACKETVER >= 20060109
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+#endif
+
+// Packet: 0x0263
+#if PACKETVER >= 20060109
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+#endif
+
+// Packet: 0x0264
+#if PACKETVER >= 20060109
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+#endif
+
+// Packet: 0x0265
+#if PACKETVER >= 20060109
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+#endif
+
+// Packet: 0x0266
+#if PACKETVER >= 20060109
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+#endif
+
+// Packet: 0x0267
+#if PACKETVER >= 20060109
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+#endif
+
+// Packet: 0x0268
+#if PACKETVER >= 20060109
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+#endif
+
+// Packet: 0x0269
+#if PACKETVER >= 20060109
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+#endif
+
+// Packet: 0x026a
+#if PACKETVER >= 20060109
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+#endif
+
+// Packet: 0x026b
+#if PACKETVER >= 20060109
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+#endif
+
+// Packet: 0x026c
+#if PACKETVER >= 20060109
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+#endif
+
+// Packet: 0x026d
+#if PACKETVER >= 20060109
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+#endif
+
+// Packet: 0x026f
+#if PACKETVER >= 20060109
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+#endif
+
+// Packet: 0x0270
+#if PACKETVER >= 20060109
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+#endif
+
+// Packet: 0x0271
+#if PACKETVER >= 20060126
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+#elif PACKETVER >= 20060109
+packetLen(0x0271, 38) // CA_ACK_LOGIN_ACCOUNT_INFO
+#endif
+
+// Packet: 0x0272
+#if PACKETVER >= 20060109
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+#endif
+
+// Packet: 0x0273
+#if PACKETVER >= 20060313
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+#elif PACKETVER >= 20060306
+packetLen(0x0273, 6) // CZ_REQ_MAIL_RETURN
+#endif
+
+// Packet: 0x0274
+#if PACKETVER >= 20060306
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+#endif
+
+// Packet: 0x0277
+#if PACKETVER >= 20060424
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+#endif
+
+// Packet: 0x0278
+#if PACKETVER >= 20060607
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+#endif
+
+// Packet: 0x0279
+#if PACKETVER >= 20060607
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+#endif
+
+// Packet: 0x027a
+#if PACKETVER >= 20060607
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+#endif
+
+// Packet: 0x027b
+#if PACKETVER >= 20060626
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+#endif
+
+// Packet: 0x027c
+#if PACKETVER >= 20060626
+packetLen(0x027c, 60) // CA_LOGIN4
+#endif
+
+// Packet: 0x027d
+#if PACKETVER >= 20060703
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+#endif
+
+// Packet: 0x027e
+#if PACKETVER >= 20060710
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+#endif
+
+// Packet: 0x027f
+#if PACKETVER >= 20060821
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+#elif PACKETVER >= 20060731
+packetLen(0x027f, 4) // CA_CLIENT_TYPE
+#endif
+
+// Packet: 0x0280
+#if PACKETVER >= 20060918
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+#elif PACKETVER >= 20060904
+packetLen(0x0280, 10) // ZC_GANGSI_POINT
+#endif
+
+// Packet: 0x0281
+#if PACKETVER >= 20060918
+packetLen(0x0281, 4) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20060904
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#endif
+
+// Packet: 0x0282
+#if PACKETVER >= 20060918
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+#elif PACKETVER >= 20060904
+packetLen(0x0282, 282) // ZC_GANGSI_RANK
+#endif
+
+// Packet: 0x0283
+#if PACKETVER >= 20060904
+packetLen(0x0283, 6) // ZC_AID
+#endif
+
+// Packet: 0x0284
+#if PACKETVER >= 20060911
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+#endif
+
+// Packet: 0x0285
+#if PACKETVER >= 20060918
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+#endif
+
+// Packet: 0x0286
+#if PACKETVER >= 20060918
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+#endif
+
+// Packet: 0x0287
+#if PACKETVER >= 20061204
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+#endif
+
+// Packet: 0x0288
+#if PACKETVER >= 20061204
+packetLen(0x0288, 6) // CZ_PC_BUY_CASH_POINT_ITEM
+#endif
+
+// Packet: 0x0289
+#if PACKETVER >= 20061204
+packetLen(0x0289, 8) // ZC_PC_CASH_POINT_UPDATE
+#endif
+
+// Packet: 0x028a
+#if PACKETVER >= 20060927
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+#endif
+
+// Packet: 0x028b
+#if PACKETVER >= 20061023
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+#endif
+
+// Packet: 0x028c
+#if PACKETVER >= 20061023
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+#endif
+
+// Packet: 0x028d
+#if PACKETVER >= 20061023
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+#endif
+
+// Packet: 0x028e
+#if PACKETVER >= 20061023
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+#endif
+
+// Packet: 0x028f
+#if PACKETVER >= 20061023
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+#endif
+
+// Packet: 0x0290
+#if PACKETVER >= 20061023
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+#endif
+
+// Packet: 0x0291
+#if PACKETVER >= 20061030
+packetLen(0x0291, 4) // ZC_MSG
+#endif
+
+// Packet: 0x0292
+#if PACKETVER >= 20061030
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+#endif
+
+// Packet: 0x0293
+#if PACKETVER >= 20061204
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+#elif PACKETVER >= 20061030
+packetLen(0x0293, 66) // ZC_BOSS_INFO
+#endif
+
+// Packet: 0x0294
+#if PACKETVER >= 20061204
+packetLen(0x0294, 10) // ZC_READ_BOOK
+#endif
+
+// Packet: 0x0295
+#if PACKETVER >= 20061218
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20061211
+packetLen(0x0295, 4) // ZC_EQUIPMENT_ITEMLIST2
+#endif
+
+// Packet: 0x0296
+#if PACKETVER >= 20061218
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20061211
+packetLen(0x0296, 4) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#endif
+
+// Packet: 0x0297
+#if PACKETVER >= 20061218
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20061211
+packetLen(0x0297, 4) // ZC_CART_EQUIPMENT_ITEMLIST2
+#endif
+
+// Packet: 0x0298
+#if PACKETVER >= 20061211
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+#endif
+
+// Packet: 0x0299
+#if PACKETVER >= 20061211
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+#endif
+
+// Packet: 0x029a
+#if PACKETVER >= 20061218
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+#endif
+
+// Packet: 0x029b
+#if PACKETVER >= 20061226
+packetLen(0x029b, 70) // ZC_MER_INIT
+#endif
+
+// Packet: 0x029c
+#if PACKETVER >= 20061226
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+#endif
+
+// Packet: 0x029d
+#if PACKETVER >= 20061226
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+#endif
+
+// Packet: 0x029e
+#if PACKETVER >= 20061226
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+#endif
+
+// Packet: 0x029f
+#if PACKETVER >= 20061226
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+#endif
+
+// Packet: 0x02a0
+#if PACKETVER >= 20061226
+packetLen(0x02a0, 10) // CZ_UNUSED_MER_USE_SKILL
+#endif
+
+// Packet: 0x02a1
+#if PACKETVER >= 20061226
+packetLen(0x02a1, 4) // CZ_UNUSED_MER_UPGRADE_SKILLLEVEL
+#endif
+
+// Packet: 0x02a2
+#if PACKETVER >= 20061226
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+#endif
+
+
+#endif /* COMMON_PACKETS2006_LEN_SAK_H */
diff --git a/src/common/packets/packets2007_len_ad.h b/src/common/packets/packets2007_len_ad.h
new file mode 100644
index 000000000..1d952b2da
--- /dev/null
+++ b/src/common/packets/packets2007_len_ad.h
@@ -0,0 +1,2223 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2007_LEN_AD_H
+#define COMMON_PACKETS2007_LEN_AD_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 110) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+#if PACKETVER >= 20070212
+packetLen(0x0072, 22) // CZ_ENTER
+#elif PACKETVER >= 20070108
+packetLen(0x0072, 14) // CZ_ENTER
+#elif PACKETVER >= 20070102
+packetLen(0x0072, 25) // CZ_ENTER
+#endif
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+#if PACKETVER >= 20071127
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20070102
+packetLen(0x0078, 54) // ZC_NOTIFY_STANDENTRY
+#endif
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+#if PACKETVER >= 20071127
+packetLen(0x007c, 42) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20070102
+packetLen(0x007c, 41) // ZC_NOTIFY_STANDENTRY_NPC
+#endif
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+#if PACKETVER >= 20070212
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20070108
+packetLen(0x007e, 109) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20070102
+packetLen(0x007e, 102) // CZ_REQUEST_TIME
+#endif
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+#if PACKETVER >= 20070212
+packetLen(0x0085, 10) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20070108
+packetLen(0x0085, 18) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20070102
+packetLen(0x0085, 11) // CZ_REQUEST_MOVE
+#endif
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+#if PACKETVER >= 20070212
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20070108
+packetLen(0x0089, 14) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20070102
+packetLen(0x0089, 8) // CZ_REQUEST_ACT
+#endif
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+#if PACKETVER >= 20070212
+packetLen(0x008c, 14)
+#elif PACKETVER >= 20070108
+packetLen(0x008c, 10)
+#elif PACKETVER >= 20070102
+packetLen(0x008c, 11)
+#endif
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+#if PACKETVER >= 20070212
+packetLen(0x0094, 19) // CZ_REQNAME
+#elif PACKETVER >= 20070108
+packetLen(0x0094, 25) // CZ_REQNAME
+#elif PACKETVER >= 20070102
+packetLen(0x0094, 14) // CZ_REQNAME
+#endif
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+#if PACKETVER >= 20070212
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20070108
+packetLen(0x009b, 32) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20070102
+packetLen(0x009b, 26) // CZ_CHANGE_DIRECTION
+#endif
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+#if PACKETVER >= 20070212
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20070108
+packetLen(0x009f, 18) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20070102
+packetLen(0x009f, 14) // CZ_ITEM_PICKUP
+#endif
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+#if PACKETVER >= 20070212
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+#elif PACKETVER >= 20070108
+packetLen(0x00a2, 10) // CZ_ITEM_THROW
+#elif PACKETVER >= 20070102
+packetLen(0x00a2, 15) // CZ_ITEM_THROW
+#endif
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+#if PACKETVER >= 20070212
+packetLen(0x00a7, 9)
+#elif PACKETVER >= 20070108
+packetLen(0x00a7, 14)
+#elif PACKETVER >= 20070102
+packetLen(0x00a7, 8)
+#endif
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 7) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+#if PACKETVER >= 20070212
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20070108
+packetLen(0x00f5, 14) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20070102
+packetLen(0x00f5, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#endif
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+#if PACKETVER >= 20070212
+packetLen(0x00f7, 17) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20070108
+packetLen(0x00f7, 12) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20070102
+packetLen(0x00f7, 22) // CZ_REQUEST_TIME
+#endif
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+#if PACKETVER >= 20070212
+packetLen(0x0113, 25) // CZ_USE_SKILL
+#elif PACKETVER >= 20070108
+packetLen(0x0113, 29) // CZ_USE_SKILL
+#elif PACKETVER >= 20070102
+packetLen(0x0113, 22) // CZ_USE_SKILL
+#endif
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+#if PACKETVER >= 20070212
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20070108
+packetLen(0x0116, 19) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20070102
+packetLen(0x0116, 10) // CZ_USE_SKILL_TOGROUND
+#endif
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0158
+packetLen(0x0158, -1) // ZC_ACK_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+#if PACKETVER >= 20070212
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20070108
+packetLen(0x0190, 9) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20070102
+packetLen(0x0190, 19) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#endif
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 35) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+#if PACKETVER >= 20070528
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20070102
+packetLen(0x01fd, 4) // CZ_REQ_ITEMREPAIR
+#endif
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x020f
+packetLen(0x020f, 10) // CZ_REQ_PVPPOINT
+
+// Packet: 0x0210
+packetLen(0x0210, 22) // ZC_ACK_PVPPOINT
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+
+// Packet: 0x022b
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+
+// Packet: 0x022c
+#if PACKETVER >= 20071127
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20070102
+packetLen(0x022c, 64) // ZC_NOTIFY_MOVEENTRY3
+#endif
+
+// Packet: 0x022d
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+
+// Packet: 0x022e
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+
+// Packet: 0x022f
+packetLen(0x022f, 5) // ZC_FEED_MER
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+packetLen(0x0281, 4) // CZ_GANGSI_RANK
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+#if PACKETVER >= 20070423
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20070416
+// removed
+#elif PACKETVER >= 20070227
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+#endif
+
+// Packet: 0x0288
+#if PACKETVER >= 20070711
+packetLen(0x0288, 10) // CZ_PC_BUY_CASH_POINT_ITEM
+#elif PACKETVER >= 20070423
+packetLen(0x0288, 6) // CZ_PC_BUY_CASH_POINT_ITEM
+#elif PACKETVER >= 20070416
+// removed
+#elif PACKETVER >= 20070227
+packetLen(0x0288, 6) // CZ_PC_BUY_CASH_POINT_ITEM
+#endif
+
+// Packet: 0x0289
+#if PACKETVER >= 20070711
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+#elif PACKETVER >= 20070423
+packetLen(0x0289, 8) // ZC_PC_CASH_POINT_UPDATE
+#elif PACKETVER >= 20070416
+// removed
+#elif PACKETVER >= 20070227
+packetLen(0x0289, 8) // ZC_PC_CASH_POINT_UPDATE
+#endif
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0296
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0297
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0298
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+
+// Packet: 0x0299
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+
+// Packet: 0x029a
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+
+// Packet: 0x029b
+#if PACKETVER >= 20071127
+packetLen(0x029b, 80) // ZC_MER_INIT
+#elif PACKETVER >= 20070122
+packetLen(0x029b, 72) // ZC_MER_INIT
+#elif PACKETVER >= 20070102
+packetLen(0x029b, 70) // ZC_MER_INIT
+#endif
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a3
+#if PACKETVER >= 20070129
+// removed
+#elif PACKETVER >= 20070122
+packetLen(0x02a3, 18) // ZC_GAMEGUARD_LINGO_KEY
+#endif
+
+// Packet: 0x02a4
+#if PACKETVER >= 20070129
+// removed
+#elif PACKETVER >= 20070122
+packetLen(0x02a4, 2) // CZ_GAMEGUARD_LINGO_READY
+#endif
+
+// Packet: 0x02a5
+#if PACKETVER >= 20070129
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+#endif
+
+// Packet: 0x02a6
+#if PACKETVER >= 20070611
+packetLen(0x02a6, 22) // ZC_HACKSH_CPX_MSG
+#endif
+
+// Packet: 0x02a7
+#if PACKETVER >= 20070611
+packetLen(0x02a7, 22) // CZ_HACKSH_CPX_MSG
+#endif
+
+// Packet: 0x02a8
+#if PACKETVER >= 20070611
+packetLen(0x02a8, 162) // ZC_HACKSHIELD_CRC_MSG
+#endif
+
+// Packet: 0x02a9
+#if PACKETVER >= 20070611
+packetLen(0x02a9, 58) // CZ_HACKSHIELD_CRC_MSG
+#endif
+
+// Packet: 0x02aa
+#if PACKETVER >= 20070205
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+#endif
+
+// Packet: 0x02ab
+#if PACKETVER >= 20070205
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+#endif
+
+// Packet: 0x02ac
+#if PACKETVER >= 20070205
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+#endif
+
+// Packet: 0x02ad
+#if PACKETVER >= 20070227
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+#endif
+
+// Packet: 0x02ae
+#if PACKETVER >= 20070807
+// removed
+#elif PACKETVER >= 20070711
+packetLen(0x02ae, 10) // ZC_UNUSED_SRPACKET_INIT
+#endif
+
+// Packet: 0x02af
+#if PACKETVER >= 20070807
+// removed
+#elif PACKETVER >= 20070711
+packetLen(0x02af, 2) // CZ_SRPACKET_START
+#endif
+
+// Packet: 0x02b0
+#if PACKETVER >= 20070514
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+#endif
+
+// Packet: 0x02b1
+#if PACKETVER >= 20070724
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+#endif
+
+// Packet: 0x02b2
+#if PACKETVER >= 20070807
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+#endif
+
+// Packet: 0x02b3
+#if PACKETVER >= 20070821
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+#elif PACKETVER >= 20070813
+packetLen(0x02b3, 103) // ZC_ADD_QUEST
+#elif PACKETVER >= 20070731
+packetLen(0x02b3, 31) // ZC_ADD_QUEST
+#elif PACKETVER >= 20070703
+packetLen(0x02b3, 7) // ZC_ADD_QUEST
+#elif PACKETVER >= 20070622
+packetLen(0x02b3, 26) // ZC_ADD_QUEST
+#endif
+
+// Packet: 0x02b4
+#if PACKETVER >= 20070622
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+#endif
+
+// Packet: 0x02b5
+#if PACKETVER >= 20070813
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+#elif PACKETVER >= 20070807
+// removed
+#elif PACKETVER >= 20070703
+packetLen(0x02b5, 12) // ZC_UPDATE_MISSION_HUNT
+#elif PACKETVER >= 20070622
+packetLen(0x02b5, 18) // ZC_UPDATE_MISSION_HUNT
+#endif
+
+// Packet: 0x02b6
+#if PACKETVER >= 20070622
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+#endif
+
+// Packet: 0x02b7
+#if PACKETVER >= 20070807
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+#elif PACKETVER >= 20070622
+packetLen(0x02b7, 10) // ZC_ACTIVE_QUEST
+#endif
+
+// Packet: 0x02b8
+#if PACKETVER >= 20070604
+packetLen(0x02b8, 22) // ZC_ITEM_PICKUP_PARTY
+#endif
+
+// Packet: 0x02b9
+#if PACKETVER >= 20070611
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+#endif
+
+// Packet: 0x02ba
+#if PACKETVER >= 20070618
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+#elif PACKETVER >= 20070611
+packetLen(0x02ba, 9) // CZ_SHORTCUT_KEY_CHANGE
+#endif
+
+// Packet: 0x02bb
+#if PACKETVER >= 20070622
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+#elif PACKETVER >= 20070605
+packetLen(0x02bb, 4) // ZC_EQUIPITEM_DAMAGED
+#endif
+
+// Packet: 0x02bc
+#if PACKETVER >= 20070622
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+#endif
+
+// Packet: 0x02bf
+#if PACKETVER >= 20070807
+packetLen(0x02bf, 10) // ZC_SRPACKETR2_INIT
+#endif
+
+// Packet: 0x02c0
+#if PACKETVER >= 20070807
+packetLen(0x02c0, 2) // CZ_SRPACKETR2_START
+#endif
+
+// Packet: 0x02c1
+#if PACKETVER >= 20070813
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+#endif
+
+// Packet: 0x02c2
+#if PACKETVER >= 20070821
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+#endif
+
+// Packet: 0x02c3
+#if PACKETVER >= 20070828
+// removed
+#elif PACKETVER >= 20070821
+packetLen(0x02c3, 4)
+#endif
+
+// Packet: 0x02c4
+#if PACKETVER >= 20070821
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+#endif
+
+// Packet: 0x02c5
+#if PACKETVER >= 20070821
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+#endif
+
+// Packet: 0x02c6
+#if PACKETVER >= 20070821
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+#endif
+
+// Packet: 0x02c7
+#if PACKETVER >= 20070821
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+#endif
+
+// Packet: 0x02c8
+#if PACKETVER >= 20070821
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+#endif
+
+// Packet: 0x02c9
+#if PACKETVER >= 20070821
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+#endif
+
+// Packet: 0x02ca
+#if PACKETVER >= 20070821
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+#endif
+
+// Packet: 0x02cb
+#if PACKETVER >= 20071023
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+#elif PACKETVER >= 20070828
+packetLen(0x02cb, 20) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+#endif
+
+// Packet: 0x02cc
+#if PACKETVER >= 20070828
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+#endif
+
+// Packet: 0x02cd
+#if PACKETVER >= 20071023
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+#elif PACKETVER >= 20070828
+packetLen(0x02cd, 26) // ZC_MEMORIALDUNGEON_INFO
+#endif
+
+// Packet: 0x02ce
+#if PACKETVER >= 20070828
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+#endif
+
+// Packet: 0x02cf
+#if PACKETVER >= 20070828
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+#endif
+
+// Packet: 0x02d0
+#if PACKETVER >= 20070904
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+#endif
+
+// Packet: 0x02d1
+#if PACKETVER >= 20070904
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+#endif
+
+// Packet: 0x02d2
+#if PACKETVER >= 20070904
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+#endif
+
+// Packet: 0x02d3
+#if PACKETVER >= 20070904
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+#endif
+
+// Packet: 0x02d4
+#if PACKETVER >= 20070904
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+#endif
+
+// Packet: 0x02d5
+#if PACKETVER >= 20070911
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+#endif
+
+// Packet: 0x02d6
+#if PACKETVER >= 20070918
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+#endif
+
+// Packet: 0x02d7
+#if PACKETVER >= 20070918
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+#endif
+
+// Packet: 0x02d8
+#if PACKETVER >= 20070918
+packetLen(0x02d8, 10) // CZ_CONFIG
+#endif
+
+// Packet: 0x02d9
+#if PACKETVER >= 20070918
+packetLen(0x02d9, 10) // ZC_CONFIG
+#endif
+
+// Packet: 0x02da
+#if PACKETVER >= 20070918
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+#endif
+
+// Packet: 0x02db
+#if PACKETVER >= 20071002
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+#endif
+
+// Packet: 0x02dc
+#if PACKETVER >= 20071002
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+#endif
+
+// Packet: 0x02dd
+#if PACKETVER >= 20071002
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+#endif
+
+// Packet: 0x02de
+#if PACKETVER >= 20071002
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+#endif
+
+// Packet: 0x02df
+#if PACKETVER >= 20071002
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+#endif
+
+// Packet: 0x02e0
+#if PACKETVER >= 20071002
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+#endif
+
+// Packet: 0x02e1
+#if PACKETVER >= 20071113
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+#endif
+
+// Packet: 0x02e2
+#if PACKETVER >= 20071120
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+#endif
+
+// Packet: 0x02e3
+#if PACKETVER >= 20071120
+packetLen(0x02e3, 22) // CZ_USE_SKILL_NEW_JAPEN
+#endif
+
+// Packet: 0x02e4
+#if PACKETVER >= 20071120
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+#endif
+
+// Packet: 0x02e5
+#if PACKETVER >= 20071120
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+#endif
+
+// Packet: 0x02e6
+#if PACKETVER >= 20071120
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+#endif
+
+// Packet: 0x02e7
+#if PACKETVER >= 20071127
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+#endif
+
+
+#endif /* COMMON_PACKETS2007_LEN_AD_H */
diff --git a/src/common/packets/packets2007_len_main.h b/src/common/packets/packets2007_len_main.h
new file mode 100644
index 000000000..f7c5faaf0
--- /dev/null
+++ b/src/common/packets/packets2007_len_main.h
@@ -0,0 +1,2217 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2007_LEN_MAIN_H
+#define COMMON_PACKETS2007_LEN_MAIN_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 110) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+#if PACKETVER >= 20070212
+packetLen(0x0072, 22) // CZ_ENTER
+#elif PACKETVER >= 20070108
+packetLen(0x0072, 14) // CZ_ENTER
+#elif PACKETVER >= 20070102
+packetLen(0x0072, 25) // CZ_ENTER
+#endif
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+#if PACKETVER >= 20071127
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20070102
+packetLen(0x0078, 54) // ZC_NOTIFY_STANDENTRY
+#endif
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+#if PACKETVER >= 20071127
+packetLen(0x007c, 42) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20070102
+packetLen(0x007c, 41) // ZC_NOTIFY_STANDENTRY_NPC
+#endif
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+#if PACKETVER >= 20070212
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20070108
+packetLen(0x007e, 109) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20070102
+packetLen(0x007e, 102) // CZ_REQUEST_TIME
+#endif
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+#if PACKETVER >= 20070212
+packetLen(0x0085, 10) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20070108
+packetLen(0x0085, 18) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20070102
+packetLen(0x0085, 11) // CZ_REQUEST_MOVE
+#endif
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+#if PACKETVER >= 20070212
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20070108
+packetLen(0x0089, 14) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20070102
+packetLen(0x0089, 8) // CZ_REQUEST_ACT
+#endif
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+#if PACKETVER >= 20070212
+packetLen(0x008c, 14)
+#elif PACKETVER >= 20070108
+packetLen(0x008c, 10)
+#elif PACKETVER >= 20070102
+packetLen(0x008c, 11)
+#endif
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+#if PACKETVER >= 20070212
+packetLen(0x0094, 19) // CZ_REQNAME
+#elif PACKETVER >= 20070108
+packetLen(0x0094, 25) // CZ_REQNAME
+#elif PACKETVER >= 20070102
+packetLen(0x0094, 14) // CZ_REQNAME
+#endif
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+#if PACKETVER >= 20070212
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20070108
+packetLen(0x009b, 32) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20070102
+packetLen(0x009b, 26) // CZ_CHANGE_DIRECTION
+#endif
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+#if PACKETVER >= 20070212
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20070108
+packetLen(0x009f, 18) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20070102
+packetLen(0x009f, 14) // CZ_ITEM_PICKUP
+#endif
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+#if PACKETVER >= 20070212
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+#elif PACKETVER >= 20070108
+packetLen(0x00a2, 10) // CZ_ITEM_THROW
+#elif PACKETVER >= 20070102
+packetLen(0x00a2, 15) // CZ_ITEM_THROW
+#endif
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+#if PACKETVER >= 20070212
+packetLen(0x00a7, 9)
+#elif PACKETVER >= 20070108
+packetLen(0x00a7, 14)
+#elif PACKETVER >= 20070102
+packetLen(0x00a7, 8)
+#endif
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 7) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+#if PACKETVER >= 20070212
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20070108
+packetLen(0x00f5, 14) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20070102
+packetLen(0x00f5, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#endif
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+#if PACKETVER >= 20070212
+packetLen(0x00f7, 17) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20070108
+packetLen(0x00f7, 12) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20070102
+packetLen(0x00f7, 22) // CZ_REQUEST_TIME
+#endif
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+#if PACKETVER >= 20070212
+packetLen(0x0113, 25) // CZ_USE_SKILL
+#elif PACKETVER >= 20070108
+packetLen(0x0113, 29) // CZ_USE_SKILL
+#elif PACKETVER >= 20070102
+packetLen(0x0113, 22) // CZ_USE_SKILL
+#endif
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+#if PACKETVER >= 20070212
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20070108
+packetLen(0x0116, 19) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20070102
+packetLen(0x0116, 10) // CZ_USE_SKILL_TOGROUND
+#endif
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0158
+packetLen(0x0158, -1) // ZC_ACK_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+#if PACKETVER >= 20070212
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20070108
+packetLen(0x0190, 9) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20070102
+packetLen(0x0190, 19) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#endif
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 35) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+#if PACKETVER >= 20070528
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20070102
+packetLen(0x01fd, 4) // CZ_REQ_ITEMREPAIR
+#endif
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+
+// Packet: 0x022b
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+
+// Packet: 0x022c
+#if PACKETVER >= 20071127
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20070102
+packetLen(0x022c, 64) // ZC_NOTIFY_MOVEENTRY3
+#endif
+
+// Packet: 0x022d
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+
+// Packet: 0x022e
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+
+// Packet: 0x022f
+packetLen(0x022f, 5) // ZC_FEED_MER
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+packetLen(0x0281, 4) // CZ_GANGSI_RANK
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+#if PACKETVER >= 20070423
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20070416
+// removed
+#elif PACKETVER >= 20070227
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+#endif
+
+// Packet: 0x0288
+#if PACKETVER >= 20070711
+packetLen(0x0288, 10) // CZ_PC_BUY_CASH_POINT_ITEM
+#elif PACKETVER >= 20070423
+packetLen(0x0288, 6) // CZ_PC_BUY_CASH_POINT_ITEM
+#elif PACKETVER >= 20070416
+// removed
+#elif PACKETVER >= 20070227
+packetLen(0x0288, 6) // CZ_PC_BUY_CASH_POINT_ITEM
+#endif
+
+// Packet: 0x0289
+#if PACKETVER >= 20070711
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+#elif PACKETVER >= 20070423
+packetLen(0x0289, 8) // ZC_PC_CASH_POINT_UPDATE
+#elif PACKETVER >= 20070416
+// removed
+#elif PACKETVER >= 20070227
+packetLen(0x0289, 8) // ZC_PC_CASH_POINT_UPDATE
+#endif
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0296
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0297
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0298
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+
+// Packet: 0x0299
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+
+// Packet: 0x029a
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+
+// Packet: 0x029b
+#if PACKETVER >= 20071127
+packetLen(0x029b, 80) // ZC_MER_INIT
+#elif PACKETVER >= 20070122
+packetLen(0x029b, 72) // ZC_MER_INIT
+#elif PACKETVER >= 20070102
+packetLen(0x029b, 70) // ZC_MER_INIT
+#endif
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a3
+#if PACKETVER >= 20070129
+// removed
+#elif PACKETVER >= 20070122
+packetLen(0x02a3, 18) // ZC_GAMEGUARD_LINGO_KEY
+#endif
+
+// Packet: 0x02a4
+#if PACKETVER >= 20070129
+// removed
+#elif PACKETVER >= 20070122
+packetLen(0x02a4, 2) // CZ_GAMEGUARD_LINGO_READY
+#endif
+
+// Packet: 0x02a5
+#if PACKETVER >= 20070129
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+#endif
+
+// Packet: 0x02a6
+#if PACKETVER >= 20070611
+packetLen(0x02a6, 22) // ZC_HACKSH_CPX_MSG
+#endif
+
+// Packet: 0x02a7
+#if PACKETVER >= 20070611
+packetLen(0x02a7, 22) // CZ_HACKSH_CPX_MSG
+#endif
+
+// Packet: 0x02a8
+#if PACKETVER >= 20070611
+packetLen(0x02a8, 162) // ZC_HACKSHIELD_CRC_MSG
+#endif
+
+// Packet: 0x02a9
+#if PACKETVER >= 20070611
+packetLen(0x02a9, 58) // CZ_HACKSHIELD_CRC_MSG
+#endif
+
+// Packet: 0x02aa
+#if PACKETVER >= 20070205
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+#endif
+
+// Packet: 0x02ab
+#if PACKETVER >= 20070205
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+#endif
+
+// Packet: 0x02ac
+#if PACKETVER >= 20070205
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+#endif
+
+// Packet: 0x02ad
+#if PACKETVER >= 20070227
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+#endif
+
+// Packet: 0x02ae
+#if PACKETVER >= 20070807
+// removed
+#elif PACKETVER >= 20070711
+packetLen(0x02ae, 10) // ZC_UNUSED_SRPACKET_INIT
+#endif
+
+// Packet: 0x02af
+#if PACKETVER >= 20070807
+// removed
+#elif PACKETVER >= 20070711
+packetLen(0x02af, 2) // CZ_SRPACKET_START
+#endif
+
+// Packet: 0x02b0
+#if PACKETVER >= 20070514
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+#endif
+
+// Packet: 0x02b1
+#if PACKETVER >= 20070724
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+#endif
+
+// Packet: 0x02b2
+#if PACKETVER >= 20070807
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+#endif
+
+// Packet: 0x02b3
+#if PACKETVER >= 20070821
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+#elif PACKETVER >= 20070813
+packetLen(0x02b3, 103) // ZC_ADD_QUEST
+#elif PACKETVER >= 20070731
+packetLen(0x02b3, 31) // ZC_ADD_QUEST
+#elif PACKETVER >= 20070703
+packetLen(0x02b3, 7) // ZC_ADD_QUEST
+#elif PACKETVER >= 20070622
+packetLen(0x02b3, 26) // ZC_ADD_QUEST
+#endif
+
+// Packet: 0x02b4
+#if PACKETVER >= 20070622
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+#endif
+
+// Packet: 0x02b5
+#if PACKETVER >= 20070813
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+#elif PACKETVER >= 20070807
+// removed
+#elif PACKETVER >= 20070703
+packetLen(0x02b5, 12) // ZC_UPDATE_MISSION_HUNT
+#elif PACKETVER >= 20070622
+packetLen(0x02b5, 18) // ZC_UPDATE_MISSION_HUNT
+#endif
+
+// Packet: 0x02b6
+#if PACKETVER >= 20070622
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+#endif
+
+// Packet: 0x02b7
+#if PACKETVER >= 20070807
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+#elif PACKETVER >= 20070622
+packetLen(0x02b7, 10) // ZC_ACTIVE_QUEST
+#endif
+
+// Packet: 0x02b8
+#if PACKETVER >= 20070604
+packetLen(0x02b8, 22) // ZC_ITEM_PICKUP_PARTY
+#endif
+
+// Packet: 0x02b9
+#if PACKETVER >= 20070611
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+#endif
+
+// Packet: 0x02ba
+#if PACKETVER >= 20070618
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+#elif PACKETVER >= 20070611
+packetLen(0x02ba, 9) // CZ_SHORTCUT_KEY_CHANGE
+#endif
+
+// Packet: 0x02bb
+#if PACKETVER >= 20070622
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+#elif PACKETVER >= 20070605
+packetLen(0x02bb, 4) // ZC_EQUIPITEM_DAMAGED
+#endif
+
+// Packet: 0x02bc
+#if PACKETVER >= 20070622
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+#endif
+
+// Packet: 0x02bf
+#if PACKETVER >= 20070807
+packetLen(0x02bf, 10) // ZC_SRPACKETR2_INIT
+#endif
+
+// Packet: 0x02c0
+#if PACKETVER >= 20070807
+packetLen(0x02c0, 2) // CZ_SRPACKETR2_START
+#endif
+
+// Packet: 0x02c1
+#if PACKETVER >= 20070813
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+#endif
+
+// Packet: 0x02c2
+#if PACKETVER >= 20070821
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+#endif
+
+// Packet: 0x02c3
+#if PACKETVER >= 20070828
+// removed
+#elif PACKETVER >= 20070821
+packetLen(0x02c3, 4)
+#endif
+
+// Packet: 0x02c4
+#if PACKETVER >= 20070821
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+#endif
+
+// Packet: 0x02c5
+#if PACKETVER >= 20070821
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+#endif
+
+// Packet: 0x02c6
+#if PACKETVER >= 20070821
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+#endif
+
+// Packet: 0x02c7
+#if PACKETVER >= 20070821
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+#endif
+
+// Packet: 0x02c8
+#if PACKETVER >= 20070821
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+#endif
+
+// Packet: 0x02c9
+#if PACKETVER >= 20070821
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+#endif
+
+// Packet: 0x02ca
+#if PACKETVER >= 20070821
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+#endif
+
+// Packet: 0x02cb
+#if PACKETVER >= 20071023
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+#elif PACKETVER >= 20070828
+packetLen(0x02cb, 20) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+#endif
+
+// Packet: 0x02cc
+#if PACKETVER >= 20070828
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+#endif
+
+// Packet: 0x02cd
+#if PACKETVER >= 20071023
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+#elif PACKETVER >= 20070828
+packetLen(0x02cd, 26) // ZC_MEMORIALDUNGEON_INFO
+#endif
+
+// Packet: 0x02ce
+#if PACKETVER >= 20070828
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+#endif
+
+// Packet: 0x02cf
+#if PACKETVER >= 20070828
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+#endif
+
+// Packet: 0x02d0
+#if PACKETVER >= 20070904
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+#endif
+
+// Packet: 0x02d1
+#if PACKETVER >= 20070904
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+#endif
+
+// Packet: 0x02d2
+#if PACKETVER >= 20070904
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+#endif
+
+// Packet: 0x02d3
+#if PACKETVER >= 20070904
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+#endif
+
+// Packet: 0x02d4
+#if PACKETVER >= 20070904
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+#endif
+
+// Packet: 0x02d5
+#if PACKETVER >= 20070911
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+#endif
+
+// Packet: 0x02d6
+#if PACKETVER >= 20070918
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+#endif
+
+// Packet: 0x02d7
+#if PACKETVER >= 20070918
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+#endif
+
+// Packet: 0x02d8
+#if PACKETVER >= 20070918
+packetLen(0x02d8, 10) // CZ_CONFIG
+#endif
+
+// Packet: 0x02d9
+#if PACKETVER >= 20070918
+packetLen(0x02d9, 10) // ZC_CONFIG
+#endif
+
+// Packet: 0x02da
+#if PACKETVER >= 20070918
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+#endif
+
+// Packet: 0x02db
+#if PACKETVER >= 20071002
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+#endif
+
+// Packet: 0x02dc
+#if PACKETVER >= 20071002
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+#endif
+
+// Packet: 0x02dd
+#if PACKETVER >= 20071002
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+#endif
+
+// Packet: 0x02de
+#if PACKETVER >= 20071002
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+#endif
+
+// Packet: 0x02df
+#if PACKETVER >= 20071002
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+#endif
+
+// Packet: 0x02e0
+#if PACKETVER >= 20071002
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+#endif
+
+// Packet: 0x02e1
+#if PACKETVER >= 20071113
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+#endif
+
+// Packet: 0x02e2
+#if PACKETVER >= 20071120
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+#endif
+
+// Packet: 0x02e3
+#if PACKETVER >= 20071120
+packetLen(0x02e3, 22) // CZ_USE_SKILL_NEW_JAPEN
+#endif
+
+// Packet: 0x02e4
+#if PACKETVER >= 20071120
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+#endif
+
+// Packet: 0x02e5
+#if PACKETVER >= 20071120
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+#endif
+
+// Packet: 0x02e6
+#if PACKETVER >= 20071120
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+#endif
+
+// Packet: 0x02e7
+#if PACKETVER >= 20071127
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+#endif
+
+
+#endif /* COMMON_PACKETS2007_LEN_MAIN_H */
diff --git a/src/common/packets/packets2007_len_sak.h b/src/common/packets/packets2007_len_sak.h
new file mode 100644
index 000000000..61bb5cd6d
--- /dev/null
+++ b/src/common/packets/packets2007_len_sak.h
@@ -0,0 +1,2203 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2007_LEN_SAK_H
+#define COMMON_PACKETS2007_LEN_SAK_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 110) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+#if PACKETVER >= 20070212
+packetLen(0x0072, 25) // CZ_ENTER
+#elif PACKETVER >= 20070108
+packetLen(0x0072, 30) // CZ_ENTER
+#elif PACKETVER >= 20070102
+packetLen(0x0072, 26) // CZ_ENTER
+#endif
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+#if PACKETVER >= 20071106
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20070102
+packetLen(0x0078, 54) // ZC_NOTIFY_STANDENTRY
+#endif
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+#if PACKETVER >= 20071106
+packetLen(0x007c, 42) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20070102
+packetLen(0x007c, 41) // ZC_NOTIFY_STANDENTRY_NPC
+#endif
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+#if PACKETVER >= 20070212
+packetLen(0x007e, 102) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20070102
+packetLen(0x007e, 120) // CZ_REQUEST_TIME
+#endif
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+#if PACKETVER >= 20070212
+packetLen(0x0085, 11) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20070108
+packetLen(0x0085, 14) // CZ_REQUEST_MOVE
+#elif PACKETVER >= 20070102
+packetLen(0x0085, 12) // CZ_REQUEST_MOVE
+#endif
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+#if PACKETVER >= 20070212
+packetLen(0x0089, 8) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20070108
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+#elif PACKETVER >= 20070102
+packetLen(0x0089, 13) // CZ_REQUEST_ACT
+#endif
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+#if PACKETVER >= 20070212
+packetLen(0x008c, 11)
+#elif PACKETVER >= 20070108
+packetLen(0x008c, 17)
+#elif PACKETVER >= 20070102
+packetLen(0x008c, 12)
+#endif
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+#if PACKETVER >= 20070212
+packetLen(0x0094, 14) // CZ_REQNAME
+#elif PACKETVER >= 20070108
+packetLen(0x0094, 17) // CZ_REQNAME
+#elif PACKETVER >= 20070102
+packetLen(0x0094, 23) // CZ_REQNAME
+#endif
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+#if PACKETVER >= 20070212
+packetLen(0x009b, 26) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20070108
+packetLen(0x009b, 35) // CZ_CHANGE_DIRECTION
+#elif PACKETVER >= 20070102
+packetLen(0x009b, 37) // CZ_CHANGE_DIRECTION
+#endif
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+#if PACKETVER >= 20070212
+packetLen(0x009f, 14) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20070108
+packetLen(0x009f, 21) // CZ_ITEM_PICKUP
+#elif PACKETVER >= 20070102
+packetLen(0x009f, 24) // CZ_ITEM_PICKUP
+#endif
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+#if PACKETVER >= 20070212
+packetLen(0x00a2, 15) // CZ_ITEM_THROW
+#elif PACKETVER >= 20070108
+packetLen(0x00a2, 10) // CZ_ITEM_THROW
+#elif PACKETVER >= 20070102
+packetLen(0x00a2, 11) // CZ_ITEM_THROW
+#endif
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+#if PACKETVER >= 20070108
+packetLen(0x00a7, 8)
+#elif PACKETVER >= 20070102
+packetLen(0x00a7, 15)
+#endif
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 7) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+#if PACKETVER >= 20070212
+packetLen(0x00f5, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20070108
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#elif PACKETVER >= 20070102
+packetLen(0x00f5, 13) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#endif
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+#if PACKETVER >= 20070212
+packetLen(0x00f7, 22) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20070108
+packetLen(0x00f7, 15) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20070102
+packetLen(0x00f7, 26) // CZ_REQUEST_TIME
+#endif
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+#if PACKETVER >= 20070212
+packetLen(0x0113, 22) // CZ_USE_SKILL
+#elif PACKETVER >= 20070102
+packetLen(0x0113, 40) // CZ_USE_SKILL
+#endif
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+#if PACKETVER >= 20070212
+packetLen(0x0116, 10) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20070108
+packetLen(0x0116, 19) // CZ_USE_SKILL_TOGROUND
+#elif PACKETVER >= 20070102
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+#endif
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0158
+packetLen(0x0158, -1) // ZC_ACK_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+#if PACKETVER >= 20070212
+packetLen(0x0190, 19) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20070108
+packetLen(0x0190, 10) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#elif PACKETVER >= 20070102
+packetLen(0x0190, 18) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#endif
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 35) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+#if PACKETVER >= 20070507
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20070102
+packetLen(0x01fd, 4) // CZ_REQ_ITEMREPAIR
+#endif
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x020f
+packetLen(0x020f, 10) // CZ_REQ_PVPPOINT
+
+// Packet: 0x0210
+packetLen(0x0210, 22) // ZC_ACK_PVPPOINT
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+
+// Packet: 0x022b
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+
+// Packet: 0x022c
+#if PACKETVER >= 20071106
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20070102
+packetLen(0x022c, 64) // ZC_NOTIFY_MOVEENTRY3
+#endif
+
+// Packet: 0x022d
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+
+// Packet: 0x022e
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+
+// Packet: 0x022f
+packetLen(0x022f, 5) // ZC_FEED_MER
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+packetLen(0x0281, 4) // CZ_GANGSI_RANK
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+
+// Packet: 0x0288
+#if PACKETVER >= 20070711
+packetLen(0x0288, 10) // CZ_PC_BUY_CASH_POINT_ITEM
+#elif PACKETVER >= 20070102
+packetLen(0x0288, 6) // CZ_PC_BUY_CASH_POINT_ITEM
+#endif
+
+// Packet: 0x0289
+#if PACKETVER >= 20070711
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+#elif PACKETVER >= 20070102
+packetLen(0x0289, 8) // ZC_PC_CASH_POINT_UPDATE
+#endif
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0296
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0297
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0298
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+
+// Packet: 0x0299
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+
+// Packet: 0x029a
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+
+// Packet: 0x029b
+#if PACKETVER >= 20071106
+packetLen(0x029b, 80) // ZC_MER_INIT
+#elif PACKETVER >= 20070122
+packetLen(0x029b, 72) // ZC_MER_INIT
+#elif PACKETVER >= 20070102
+packetLen(0x029b, 70) // ZC_MER_INIT
+#endif
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a3
+#if PACKETVER >= 20070129
+// removed
+#elif PACKETVER >= 20070122
+packetLen(0x02a3, 18) // ZC_GAMEGUARD_LINGO_KEY
+#endif
+
+// Packet: 0x02a4
+#if PACKETVER >= 20070129
+// removed
+#elif PACKETVER >= 20070122
+packetLen(0x02a4, 2) // CZ_GAMEGUARD_LINGO_READY
+#endif
+
+// Packet: 0x02a5
+#if PACKETVER >= 20070129
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+#endif
+
+// Packet: 0x02a6
+#if PACKETVER >= 20070611
+packetLen(0x02a6, 22) // ZC_HACKSH_CPX_MSG
+#endif
+
+// Packet: 0x02a7
+#if PACKETVER >= 20070611
+packetLen(0x02a7, 22) // CZ_HACKSH_CPX_MSG
+#endif
+
+// Packet: 0x02a8
+#if PACKETVER >= 20070611
+packetLen(0x02a8, 162) // ZC_HACKSHIELD_CRC_MSG
+#endif
+
+// Packet: 0x02a9
+#if PACKETVER >= 20070611
+packetLen(0x02a9, 58) // CZ_HACKSHIELD_CRC_MSG
+#endif
+
+// Packet: 0x02aa
+#if PACKETVER >= 20070205
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+#endif
+
+// Packet: 0x02ab
+#if PACKETVER >= 20070205
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+#endif
+
+// Packet: 0x02ac
+#if PACKETVER >= 20070205
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+#endif
+
+// Packet: 0x02ad
+#if PACKETVER >= 20070227
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+#endif
+
+// Packet: 0x02ae
+#if PACKETVER >= 20070807
+// removed
+#elif PACKETVER >= 20070711
+packetLen(0x02ae, 10) // ZC_UNUSED_SRPACKET_INIT
+#endif
+
+// Packet: 0x02af
+#if PACKETVER >= 20070807
+// removed
+#elif PACKETVER >= 20070711
+packetLen(0x02af, 2) // CZ_SRPACKET_START
+#endif
+
+// Packet: 0x02b0
+#if PACKETVER >= 20070514
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+#endif
+
+// Packet: 0x02b1
+#if PACKETVER >= 20070724
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+#endif
+
+// Packet: 0x02b2
+#if PACKETVER >= 20070807
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+#endif
+
+// Packet: 0x02b3
+#if PACKETVER >= 20070821
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+#elif PACKETVER >= 20070813
+packetLen(0x02b3, 103) // ZC_ADD_QUEST
+#elif PACKETVER >= 20070731
+packetLen(0x02b3, 31) // ZC_ADD_QUEST
+#elif PACKETVER >= 20070628
+packetLen(0x02b3, 7) // ZC_ADD_QUEST
+#elif PACKETVER >= 20070622
+packetLen(0x02b3, 26) // ZC_ADD_QUEST
+#endif
+
+// Packet: 0x02b4
+#if PACKETVER >= 20070622
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+#endif
+
+// Packet: 0x02b5
+#if PACKETVER >= 20070813
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+#elif PACKETVER >= 20070807
+// removed
+#elif PACKETVER >= 20070628
+packetLen(0x02b5, 12) // ZC_UPDATE_MISSION_HUNT
+#elif PACKETVER >= 20070622
+packetLen(0x02b5, 18) // ZC_UPDATE_MISSION_HUNT
+#endif
+
+// Packet: 0x02b6
+#if PACKETVER >= 20070622
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+#endif
+
+// Packet: 0x02b7
+#if PACKETVER >= 20070807
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+#elif PACKETVER >= 20070622
+packetLen(0x02b7, 10) // ZC_ACTIVE_QUEST
+#endif
+
+// Packet: 0x02b8
+#if PACKETVER >= 20070604
+packetLen(0x02b8, 22) // ZC_ITEM_PICKUP_PARTY
+#endif
+
+// Packet: 0x02b9
+#if PACKETVER >= 20070611
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+#endif
+
+// Packet: 0x02ba
+#if PACKETVER >= 20070618
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+#elif PACKETVER >= 20070611
+packetLen(0x02ba, 9) // CZ_SHORTCUT_KEY_CHANGE
+#endif
+
+// Packet: 0x02bb
+#if PACKETVER >= 20070622
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+#elif PACKETVER >= 20070605
+packetLen(0x02bb, 4) // ZC_EQUIPITEM_DAMAGED
+#endif
+
+// Packet: 0x02bc
+#if PACKETVER >= 20070622
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+#endif
+
+// Packet: 0x02bf
+#if PACKETVER >= 20070807
+packetLen(0x02bf, 10) // ZC_SRPACKETR2_INIT
+#endif
+
+// Packet: 0x02c0
+#if PACKETVER >= 20070807
+packetLen(0x02c0, 2) // CZ_SRPACKETR2_START
+#endif
+
+// Packet: 0x02c1
+#if PACKETVER >= 20070813
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+#endif
+
+// Packet: 0x02c2
+#if PACKETVER >= 20070821
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+#endif
+
+// Packet: 0x02c3
+#if PACKETVER >= 20070828
+// removed
+#elif PACKETVER >= 20070821
+packetLen(0x02c3, 4)
+#endif
+
+// Packet: 0x02c4
+#if PACKETVER >= 20070821
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+#endif
+
+// Packet: 0x02c5
+#if PACKETVER >= 20070821
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+#endif
+
+// Packet: 0x02c6
+#if PACKETVER >= 20070821
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+#endif
+
+// Packet: 0x02c7
+#if PACKETVER >= 20070821
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+#endif
+
+// Packet: 0x02c8
+#if PACKETVER >= 20070821
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+#endif
+
+// Packet: 0x02c9
+#if PACKETVER >= 20070821
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+#endif
+
+// Packet: 0x02ca
+#if PACKETVER >= 20070821
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+#endif
+
+// Packet: 0x02cb
+#if PACKETVER >= 20071023
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+#elif PACKETVER >= 20070828
+packetLen(0x02cb, 20) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+#endif
+
+// Packet: 0x02cc
+#if PACKETVER >= 20070828
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+#endif
+
+// Packet: 0x02cd
+#if PACKETVER >= 20071023
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+#elif PACKETVER >= 20070828
+packetLen(0x02cd, 26) // ZC_MEMORIALDUNGEON_INFO
+#endif
+
+// Packet: 0x02ce
+#if PACKETVER >= 20070828
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+#endif
+
+// Packet: 0x02cf
+#if PACKETVER >= 20070828
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+#endif
+
+// Packet: 0x02d0
+#if PACKETVER >= 20070904
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+#endif
+
+// Packet: 0x02d1
+#if PACKETVER >= 20070904
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+#endif
+
+// Packet: 0x02d2
+#if PACKETVER >= 20070904
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+#endif
+
+// Packet: 0x02d3
+#if PACKETVER >= 20070904
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+#endif
+
+// Packet: 0x02d4
+#if PACKETVER >= 20070904
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+#endif
+
+// Packet: 0x02d5
+#if PACKETVER >= 20070911
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+#endif
+
+// Packet: 0x02d6
+#if PACKETVER >= 20070918
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+#endif
+
+// Packet: 0x02d7
+#if PACKETVER >= 20070918
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+#endif
+
+// Packet: 0x02d8
+#if PACKETVER >= 20070918
+packetLen(0x02d8, 10) // CZ_CONFIG
+#endif
+
+// Packet: 0x02d9
+#if PACKETVER >= 20070918
+packetLen(0x02d9, 10) // ZC_CONFIG
+#endif
+
+// Packet: 0x02da
+#if PACKETVER >= 20070918
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+#endif
+
+// Packet: 0x02db
+#if PACKETVER >= 20071002
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+#endif
+
+// Packet: 0x02dc
+#if PACKETVER >= 20071002
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+#endif
+
+// Packet: 0x02dd
+#if PACKETVER >= 20071002
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+#endif
+
+// Packet: 0x02de
+#if PACKETVER >= 20071002
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+#endif
+
+// Packet: 0x02df
+#if PACKETVER >= 20071002
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+#endif
+
+// Packet: 0x02e0
+#if PACKETVER >= 20071002
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+#endif
+
+// Packet: 0x02e1
+#if PACKETVER >= 20071113
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+#endif
+
+// Packet: 0x02e2
+#if PACKETVER >= 20071120
+packetLen(0x02e2, 14) // CZ_USE_ITEM_NEW_JAPEN
+#endif
+
+// Packet: 0x02e3
+#if PACKETVER >= 20071120
+packetLen(0x02e3, 25) // CZ_USE_SKILL_NEW_JAPEN
+#endif
+
+// Packet: 0x02e4
+#if PACKETVER >= 20071120
+packetLen(0x02e4, 8) // CZ_ITEM_PICKUP_NEW_JAPEN
+#endif
+
+// Packet: 0x02e5
+#if PACKETVER >= 20071120
+packetLen(0x02e5, 8) // CZ_REQUEST_MOVE_NEW_JAPEN
+#endif
+
+// Packet: 0x02e6
+#if PACKETVER >= 20071120
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+#endif
+
+// Packet: 0x02e7
+#if PACKETVER >= 20071127
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+#endif
+
+
+#endif /* COMMON_PACKETS2007_LEN_SAK_H */
diff --git a/src/common/packets/packets2008_len_ad.h b/src/common/packets/packets2008_len_ad.h
new file mode 100644
index 000000000..82679ec63
--- /dev/null
+++ b/src/common/packets/packets2008_len_ad.h
@@ -0,0 +1,18487 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2008_LEN_AD_H
+#define COMMON_PACKETS2008_LEN_AD_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 110) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 22) // CZ_ENTER
+
+// Packet: 0x0073
+#if PACKETVER >= 20080701
+packetLen(0x0073, 71) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080624
+packetLen(0x0073, -1) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080617
+packetLen(0x0073, 32) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080603
+packetLen(0x0073, -1) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080528
+packetLen(0x0073, 6) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080520
+packetLen(0x0073, 2) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080513
+packetLen(0x0073, -1) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080507
+packetLen(0x0073, 97) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080429
+packetLen(0x0073, 2) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080422
+packetLen(0x0073, 4) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080415
+packetLen(0x0073, -1) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080408
+packetLen(0x0073, 24) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080401
+packetLen(0x0073, 10) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080325
+packetLen(0x0073, 5) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080318
+packetLen(0x0073, 3) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080311
+packetLen(0x0073, 6) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080304
+packetLen(0x0073, 14) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080226
+packetLen(0x0073, 53) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080219
+packetLen(0x0073, 22) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080124
+packetLen(0x0073, 66) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080102
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+#endif
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+#if PACKETVER >= 20080701
+packetLen(0x0075, 30) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080624
+packetLen(0x0075, 5) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080617
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080610
+packetLen(0x0075, 8) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080603
+packetLen(0x0075, 6) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080528
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080520
+packetLen(0x0075, 12) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080513
+packetLen(0x0075, 30) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080507
+packetLen(0x0075, 8) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080429
+packetLen(0x0075, 26) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080422
+packetLen(0x0075, 6) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080408
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080401
+packetLen(0x0075, 39) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080325
+packetLen(0x0075, 4) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080318
+packetLen(0x0075, 2) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080311
+packetLen(0x0075, 30) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080304
+packetLen(0x0075, 6) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080226
+packetLen(0x0075, 8) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080219
+packetLen(0x0075, 28) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080124
+packetLen(0x0075, 6) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080102
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+#endif
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+#if PACKETVER >= 20080701
+packetLen(0x0077, 2) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080624
+packetLen(0x0077, 6) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080617
+packetLen(0x0077, -1) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080610
+packetLen(0x0077, 14) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080603
+packetLen(0x0077, 86) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080528
+packetLen(0x0077, 8) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080520
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080422
+packetLen(0x0077, -1) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080415
+packetLen(0x0077, 4) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080408
+packetLen(0x0077, 13) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080401
+packetLen(0x0077, -1) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080325
+packetLen(0x0077, 10) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080318
+packetLen(0x0077, 8) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080311
+packetLen(0x0077, 30) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080304
+packetLen(0x0077, 10) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080226
+packetLen(0x0077, 14) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080219
+packetLen(0x0077, 2) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080124
+packetLen(0x0077, 3) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080102
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+#endif
+
+// Packet: 0x0078
+#if PACKETVER >= 20080701
+packetLen(0x0078, 20) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080617
+packetLen(0x0078, -1) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080603
+packetLen(0x0078, 14) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080528
+packetLen(0x0078, 22) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080520
+packetLen(0x0078, 14) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080507
+packetLen(0x0078, -1) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080429
+packetLen(0x0078, 8) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080415
+packetLen(0x0078, -1) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080408
+packetLen(0x0078, 14) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080325
+packetLen(0x0078, 8) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080318
+packetLen(0x0078, 2) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080311
+packetLen(0x0078, 53) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x0078, 11) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080226
+packetLen(0x0078, 6) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080219
+packetLen(0x0078, -1) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080124
+packetLen(0x0078, 32) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+#endif
+
+// Packet: 0x0079
+#if PACKETVER >= 20080701
+packetLen(0x0079, 4) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080617
+packetLen(0x0079, -1) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080610
+packetLen(0x0079, 3) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080528
+packetLen(0x0079, -1) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080520
+packetLen(0x0079, 54) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080513
+packetLen(0x0079, -1) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080507
+packetLen(0x0079, 57) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080429
+packetLen(0x0079, 10) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080422
+packetLen(0x0079, 14) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080415
+packetLen(0x0079, -1) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080401
+packetLen(0x0079, 6) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080325
+packetLen(0x0079, 7) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080318
+packetLen(0x0079, -1) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080311
+packetLen(0x0079, 8) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x0079, 4) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080226
+packetLen(0x0079, 2) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080219
+packetLen(0x0079, 27) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080124
+packetLen(0x0079, 2) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+#endif
+
+// Packet: 0x007a
+#if PACKETVER >= 20080701
+packetLen(0x007a, 2) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080617
+packetLen(0x007a, 6) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080610
+packetLen(0x007a, 53) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080513
+packetLen(0x007a, -1) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080507
+packetLen(0x007a, 3) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080429
+packetLen(0x007a, 8) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080408
+packetLen(0x007a, -1) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080401
+packetLen(0x007a, 114) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080325
+packetLen(0x007a, 22) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080318
+packetLen(0x007a, 282) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080311
+packetLen(0x007a, 5) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x007a, 2) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080226
+packetLen(0x007a, -1) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080219
+packetLen(0x007a, 29) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080124
+packetLen(0x007a, 2) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+#endif
+
+// Packet: 0x007b
+#if PACKETVER >= 20080603
+packetLen(0x007b, -1) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080528
+packetLen(0x007b, 42) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080520
+packetLen(0x007b, -1) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080513
+packetLen(0x007b, 11) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080507
+packetLen(0x007b, -1) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080429
+packetLen(0x007b, 6) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080415
+packetLen(0x007b, -1) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080408
+packetLen(0x007b, 2) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080325
+packetLen(0x007b, 6) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080318
+packetLen(0x007b, 11) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080311
+packetLen(0x007b, 186) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x007b, 30) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080226
+packetLen(0x007b, 5) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080219
+packetLen(0x007b, 2) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080124
+packetLen(0x007b, 14) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+#endif
+
+// Packet: 0x007c
+#if PACKETVER >= 20080701
+packetLen(0x007c, 5) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080624
+packetLen(0x007c, 16) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080528
+packetLen(0x007c, -1) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080520
+packetLen(0x007c, 3) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080513
+packetLen(0x007c, 7) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080429
+packetLen(0x007c, -1) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080422
+packetLen(0x007c, 65) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080415
+packetLen(0x007c, 8) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080408
+packetLen(0x007c, 11) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080401
+packetLen(0x007c, 8) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080325
+packetLen(0x007c, 10) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080318
+packetLen(0x007c, 2) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080311
+packetLen(0x007c, -1) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080304
+packetLen(0x007c, 3) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080226
+packetLen(0x007c, 8) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080219
+packetLen(0x007c, 186) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080124
+packetLen(0x007c, 31) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080102
+packetLen(0x007c, 42) // ZC_NOTIFY_STANDENTRY_NPC
+#endif
+
+// Packet: 0x007d
+#if PACKETVER >= 20080617
+packetLen(0x007d, -1) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080610
+packetLen(0x007d, 26) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080603
+packetLen(0x007d, 6) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080528
+packetLen(0x007d, -1) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080520
+packetLen(0x007d, 9) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080513
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080507
+packetLen(0x007d, 10) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080429
+packetLen(0x007d, 11) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080422
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080415
+packetLen(0x007d, 30) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080401
+packetLen(0x007d, -1) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080325
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080311
+packetLen(0x007d, -1) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080304
+packetLen(0x007d, 14) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080226
+packetLen(0x007d, 26) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080219
+packetLen(0x007d, 3) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080124
+packetLen(0x007d, 22) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080102
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+#endif
+
+// Packet: 0x007e
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+#if PACKETVER >= 20080624
+packetLen(0x007f, -1) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080617
+packetLen(0x007f, 5) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080603
+packetLen(0x007f, -1) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080528
+packetLen(0x007f, 13) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080520
+packetLen(0x007f, -1) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080513
+packetLen(0x007f, 10) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080507
+packetLen(0x007f, 3) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080429
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080422
+packetLen(0x007f, -1) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080415
+packetLen(0x007f, 7) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080408
+packetLen(0x007f, 3) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080401
+packetLen(0x007f, 182) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080325
+packetLen(0x007f, 10) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080318
+packetLen(0x007f, -1) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080311
+packetLen(0x007f, 10) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080304
+packetLen(0x007f, -1) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080226
+packetLen(0x007f, 54) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080219
+packetLen(0x007f, 4) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080124
+packetLen(0x007f, -1) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080102
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+#endif
+
+// Packet: 0x0080
+#if PACKETVER >= 20080624
+packetLen(0x0080, -1) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080617
+packetLen(0x0080, 2) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080603
+packetLen(0x0080, -1) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080528
+packetLen(0x0080, 22) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080520
+packetLen(0x0080, 10) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080513
+packetLen(0x0080, 6) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080422
+packetLen(0x0080, -1) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080415
+packetLen(0x0080, 5) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080325
+packetLen(0x0080, -1) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080318
+packetLen(0x0080, 60) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080311
+packetLen(0x0080, -1) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080304
+packetLen(0x0080, 28) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080226
+packetLen(0x0080, 4) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080219
+packetLen(0x0080, 10) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080124
+packetLen(0x0080, -1) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080102
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+#endif
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+#if PACKETVER >= 20080624
+packetLen(0x0083, -1) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080617
+packetLen(0x0083, 34) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080610
+packetLen(0x0083, 6) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080603
+packetLen(0x0083, 13) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080528
+packetLen(0x0083, -1) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080520
+packetLen(0x0083, 4) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080513
+packetLen(0x0083, 5) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080507
+packetLen(0x0083, 30) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080429
+packetLen(0x0083, 282) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080422
+packetLen(0x0083, -1) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080415
+packetLen(0x0083, 5) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080408
+packetLen(0x0083, 28) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080325
+packetLen(0x0083, 30) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080318
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080311
+packetLen(0x0083, 21) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080304
+packetLen(0x0083, 10) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080226
+packetLen(0x0083, 6) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080219
+packetLen(0x0083, 10) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080102
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+#endif
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 10) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+#if PACKETVER >= 20080701
+packetLen(0x0086, 2) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080610
+packetLen(0x0086, -1) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080603
+packetLen(0x0086, 3) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080528
+packetLen(0x0086, 17) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080520
+packetLen(0x0086, 30) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080513
+packetLen(0x0086, -1) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080507
+packetLen(0x0086, 32) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080429
+packetLen(0x0086, -1) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080422
+packetLen(0x0086, 24) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080415
+packetLen(0x0086, 8) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080408
+packetLen(0x0086, 10) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080401
+packetLen(0x0086, 22) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080325
+packetLen(0x0086, 2) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080318
+packetLen(0x0086, 22) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080311
+packetLen(0x0086, 14) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080304
+packetLen(0x0086, 79) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080226
+packetLen(0x0086, 14) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080219
+packetLen(0x0086, 10) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080124
+packetLen(0x0086, 7) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080102
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+#endif
+
+// Packet: 0x0087
+#if PACKETVER >= 20080701
+packetLen(0x0087, -1) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080624
+packetLen(0x0087, 4) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080610
+packetLen(0x0087, -1) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080603
+packetLen(0x0087, 27) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080528
+packetLen(0x0087, 282) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080520
+packetLen(0x0087, 10) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080513
+packetLen(0x0087, -1) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080429
+packetLen(0x0087, 2) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080422
+packetLen(0x0087, 6) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080415
+packetLen(0x0087, 14) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080408
+packetLen(0x0087, 11) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080401
+packetLen(0x0087, -1) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080325
+packetLen(0x0087, 14) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080318
+packetLen(0x0087, -1) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080311
+packetLen(0x0087, 26) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080304
+packetLen(0x0087, -1) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080226
+packetLen(0x0087, 6) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080219
+packetLen(0x0087, 14) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080124
+packetLen(0x0087, 31) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080102
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+#endif
+
+// Packet: 0x0088
+#if PACKETVER >= 20080701
+packetLen(0x0088, 19) // ZC_STOPMOVE
+#elif PACKETVER >= 20080624
+packetLen(0x0088, -1) // ZC_STOPMOVE
+#elif PACKETVER >= 20080617
+packetLen(0x0088, 10) // ZC_STOPMOVE
+#elif PACKETVER >= 20080610
+packetLen(0x0088, 19) // ZC_STOPMOVE
+#elif PACKETVER >= 20080603
+packetLen(0x0088, 60) // ZC_STOPMOVE
+#elif PACKETVER >= 20080528
+packetLen(0x0088, 15) // ZC_STOPMOVE
+#elif PACKETVER >= 20080520
+packetLen(0x0088, 6) // ZC_STOPMOVE
+#elif PACKETVER >= 20080513
+packetLen(0x0088, 7) // ZC_STOPMOVE
+#elif PACKETVER >= 20080429
+packetLen(0x0088, -1) // ZC_STOPMOVE
+#elif PACKETVER >= 20080422
+packetLen(0x0088, 3) // ZC_STOPMOVE
+#elif PACKETVER >= 20080415
+packetLen(0x0088, 86) // ZC_STOPMOVE
+#elif PACKETVER >= 20080408
+packetLen(0x0088, 10) // ZC_STOPMOVE
+#elif PACKETVER >= 20080401
+packetLen(0x0088, 282) // ZC_STOPMOVE
+#elif PACKETVER >= 20080325
+packetLen(0x0088, 3) // ZC_STOPMOVE
+#elif PACKETVER >= 20080311
+packetLen(0x0088, -1) // ZC_STOPMOVE
+#elif PACKETVER >= 20080304
+packetLen(0x0088, 97) // ZC_STOPMOVE
+#elif PACKETVER >= 20080219
+packetLen(0x0088, 30) // ZC_STOPMOVE
+#elif PACKETVER >= 20080124
+packetLen(0x0088, 4) // ZC_STOPMOVE
+#elif PACKETVER >= 20080102
+packetLen(0x0088, 10) // ZC_STOPMOVE
+#endif
+
+// Packet: 0x0089
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+#if PACKETVER >= 20080624
+packetLen(0x008a, 6) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080617
+packetLen(0x008a, 2) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080610
+packetLen(0x008a, 28) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080603
+packetLen(0x008a, 68) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080528
+packetLen(0x008a, 9) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080520
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080513
+packetLen(0x008a, 11) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080507
+packetLen(0x008a, 26) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080429
+packetLen(0x008a, 23) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080422
+packetLen(0x008a, 6) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080408
+packetLen(0x008a, -1) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080401
+packetLen(0x008a, 28) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080325
+packetLen(0x008a, 30) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080318
+packetLen(0x008a, 5) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080304
+packetLen(0x008a, 6) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080226
+packetLen(0x008a, 10) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080219
+packetLen(0x008a, 6) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080124
+packetLen(0x008a, -1) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080102
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+#endif
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, 14)
+
+// Packet: 0x008d
+#if PACKETVER >= 20080701
+packetLen(0x008d, 2) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080624
+packetLen(0x008d, 10) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080617
+packetLen(0x008d, 282) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080610
+packetLen(0x008d, 60) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080603
+packetLen(0x008d, 6) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080528
+packetLen(0x008d, 2) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080520
+packetLen(0x008d, 4) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080513
+packetLen(0x008d, 2) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080507
+packetLen(0x008d, 66) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080429
+packetLen(0x008d, 2) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080422
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080415
+packetLen(0x008d, 2) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080408
+packetLen(0x008d, 6) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080401
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080325
+packetLen(0x008d, 7) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080318
+packetLen(0x008d, 8) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080311
+packetLen(0x008d, 7) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080304
+packetLen(0x008d, 4) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080226
+packetLen(0x008d, 6) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080219
+packetLen(0x008d, 79) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080124
+packetLen(0x008d, 6) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080102
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+#endif
+
+// Packet: 0x008e
+#if PACKETVER >= 20080701
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080624
+packetLen(0x008e, 5) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080617
+packetLen(0x008e, 6) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080610
+packetLen(0x008e, 10) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080603
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080528
+packetLen(0x008e, 7) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080520
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080513
+packetLen(0x008e, 282) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080507
+packetLen(0x008e, 2) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080429
+packetLen(0x008e, 6) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080422
+packetLen(0x008e, 3) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080415
+packetLen(0x008e, 2) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080408
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080401
+packetLen(0x008e, 4) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080325
+packetLen(0x008e, 28) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080318
+packetLen(0x008e, 186) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080311
+packetLen(0x008e, 7) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080304
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080226
+packetLen(0x008e, 7) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080219
+packetLen(0x008e, 33) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080102
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+#endif
+
+// Packet: 0x0090
+#if PACKETVER >= 20080701
+packetLen(0x0090, 10) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080617
+packetLen(0x0090, -1) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080610
+packetLen(0x0090, 6) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080528
+packetLen(0x0090, -1) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080520
+packetLen(0x0090, 3) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080513
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080507
+packetLen(0x0090, 4) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080429
+packetLen(0x0090, 19) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080422
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080415
+packetLen(0x0090, 36) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080408
+packetLen(0x0090, 20) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080401
+packetLen(0x0090, 53) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080325
+packetLen(0x0090, 5) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080318
+packetLen(0x0090, 6) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080311
+packetLen(0x0090, 2) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080304
+packetLen(0x0090, 17) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080226
+packetLen(0x0090, 4) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080219
+packetLen(0x0090, 2) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080124
+packetLen(0x0090, 24) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080102
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+#endif
+
+// Packet: 0x0091
+#if PACKETVER >= 20080701
+packetLen(0x0091, -1) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080624
+packetLen(0x0091, 8) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080617
+packetLen(0x0091, 2) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080610
+packetLen(0x0091, 21) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080603
+packetLen(0x0091, -1) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080528
+packetLen(0x0091, 14) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080520
+packetLen(0x0091, -1) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080513
+packetLen(0x0091, 5) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080507
+packetLen(0x0091, 6) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080429
+packetLen(0x0091, 30) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080422
+packetLen(0x0091, -1) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080415
+packetLen(0x0091, 182) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080408
+packetLen(0x0091, 58) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080401
+packetLen(0x0091, 15) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080325
+packetLen(0x0091, 2) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080318
+packetLen(0x0091, 6) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080311
+packetLen(0x0091, 8) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080304
+packetLen(0x0091, 57) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080226
+packetLen(0x0091, 4) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080219
+packetLen(0x0091, -1) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080124
+packetLen(0x0091, 79) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080102
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+#endif
+
+// Packet: 0x0092
+#if PACKETVER >= 20080701
+packetLen(0x0092, -1) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080624
+packetLen(0x0092, 15) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080617
+packetLen(0x0092, 7) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080610
+packetLen(0x0092, 20) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080603
+packetLen(0x0092, 26) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080528
+packetLen(0x0092, -1) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080520
+packetLen(0x0092, 6) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080513
+packetLen(0x0092, -1) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080507
+packetLen(0x0092, 7) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080429
+packetLen(0x0092, 32) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080422
+packetLen(0x0092, 6) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080415
+packetLen(0x0092, -1) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080408
+packetLen(0x0092, 21) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080401
+packetLen(0x0092, -1) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080325
+packetLen(0x0092, 26) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080318
+packetLen(0x0092, 81) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080311
+packetLen(0x0092, 10) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080304
+packetLen(0x0092, 5) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080226
+packetLen(0x0092, 3) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080219
+packetLen(0x0092, -1) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080124
+packetLen(0x0092, 4) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080102
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+#endif
+
+// Packet: 0x0093
+#if PACKETVER >= 20080701
+packetLen(0x0093, 4) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080624
+packetLen(0x0093, 6) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080617
+packetLen(0x0093, -1) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080610
+packetLen(0x0093, 5) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080528
+packetLen(0x0093, 3) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080520
+packetLen(0x0093, 22) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080513
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080507
+packetLen(0x0093, 26) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080422
+packetLen(0x0093, 6) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080415
+packetLen(0x0093, 3) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080408
+packetLen(0x0093, -1) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080401
+packetLen(0x0093, 3) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080325
+packetLen(0x0093, -1) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080318
+packetLen(0x0093, 8) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080311
+packetLen(0x0093, 11) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080304
+packetLen(0x0093, 26) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080226
+packetLen(0x0093, 5) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080219
+packetLen(0x0093, 67) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080124
+packetLen(0x0093, -1) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080102
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+#endif
+
+// Packet: 0x0094
+packetLen(0x0094, 19) // CZ_REQNAME
+
+// Packet: 0x0095
+#if PACKETVER >= 20080701
+packetLen(0x0095, 6) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080624
+packetLen(0x0095, 10) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080610
+packetLen(0x0095, -1) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080603
+packetLen(0x0095, 54) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080528
+packetLen(0x0095, 2) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080520
+packetLen(0x0095, -1) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080513
+packetLen(0x0095, 9) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080507
+packetLen(0x0095, 22) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080408
+packetLen(0x0095, -1) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080401
+packetLen(0x0095, 10) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080325
+packetLen(0x0095, 4) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080318
+packetLen(0x0095, 3) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080311
+packetLen(0x0095, 59) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080304
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080226
+packetLen(0x0095, 39) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080219
+packetLen(0x0095, 2) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080102
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+#endif
+
+// Packet: 0x0096
+#if PACKETVER >= 20080701
+packetLen(0x0096, 10) // CZ_WHISPER
+#elif PACKETVER >= 20080610
+packetLen(0x0096, -1) // CZ_WHISPER
+#elif PACKETVER >= 20080603
+packetLen(0x0096, 10) // CZ_WHISPER
+#elif PACKETVER >= 20080528
+packetLen(0x0096, 31) // CZ_WHISPER
+#elif PACKETVER >= 20080513
+packetLen(0x0096, 6) // CZ_WHISPER
+#elif PACKETVER >= 20080422
+packetLen(0x0096, -1) // CZ_WHISPER
+#elif PACKETVER >= 20080415
+packetLen(0x0096, 26) // CZ_WHISPER
+#elif PACKETVER >= 20080401
+packetLen(0x0096, -1) // CZ_WHISPER
+#elif PACKETVER >= 20080325
+packetLen(0x0096, 5) // CZ_WHISPER
+#elif PACKETVER >= 20080318
+packetLen(0x0096, 7) // CZ_WHISPER
+#elif PACKETVER >= 20080311
+packetLen(0x0096, 10) // CZ_WHISPER
+#elif PACKETVER >= 20080226
+packetLen(0x0096, -1) // CZ_WHISPER
+#elif PACKETVER >= 20080219
+packetLen(0x0096, 3) // CZ_WHISPER
+#elif PACKETVER >= 20080124
+packetLen(0x0096, 6) // CZ_WHISPER
+#elif PACKETVER >= 20080102
+packetLen(0x0096, -1) // CZ_WHISPER
+#endif
+
+// Packet: 0x0097
+#if PACKETVER >= 20080701
+packetLen(0x0097, 282) // ZC_WHISPER
+#elif PACKETVER >= 20080624
+packetLen(0x0097, -1) // ZC_WHISPER
+#elif PACKETVER >= 20080617
+packetLen(0x0097, 10) // ZC_WHISPER
+#elif PACKETVER >= 20080610
+packetLen(0x0097, 8) // ZC_WHISPER
+#elif PACKETVER >= 20080603
+packetLen(0x0097, 5) // ZC_WHISPER
+#elif PACKETVER >= 20080528
+packetLen(0x0097, 7) // ZC_WHISPER
+#elif PACKETVER >= 20080520
+packetLen(0x0097, 8) // ZC_WHISPER
+#elif PACKETVER >= 20080513
+packetLen(0x0097, -1) // ZC_WHISPER
+#elif PACKETVER >= 20080507
+packetLen(0x0097, 30) // ZC_WHISPER
+#elif PACKETVER >= 20080429
+packetLen(0x0097, -1) // ZC_WHISPER
+#elif PACKETVER >= 20080422
+packetLen(0x0097, 29) // ZC_WHISPER
+#elif PACKETVER >= 20080415
+packetLen(0x0097, 16) // ZC_WHISPER
+#elif PACKETVER >= 20080408
+packetLen(0x0097, 30) // ZC_WHISPER
+#elif PACKETVER >= 20080401
+packetLen(0x0097, 53) // ZC_WHISPER
+#elif PACKETVER >= 20080325
+packetLen(0x0097, 26) // ZC_WHISPER
+#elif PACKETVER >= 20080318
+packetLen(0x0097, 3) // ZC_WHISPER
+#elif PACKETVER >= 20080311
+packetLen(0x0097, 33) // ZC_WHISPER
+#elif PACKETVER >= 20080304
+packetLen(0x0097, 7) // ZC_WHISPER
+#elif PACKETVER >= 20080219
+packetLen(0x0097, 23) // ZC_WHISPER
+#elif PACKETVER >= 20080102
+packetLen(0x0097, -1) // ZC_WHISPER
+#endif
+
+// Packet: 0x0098
+#if PACKETVER >= 20080701
+packetLen(0x0098, 8) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080624
+packetLen(0x0098, -1) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080617
+packetLen(0x0098, 24) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080610
+packetLen(0x0098, 26) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080528
+packetLen(0x0098, -1) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080520
+packetLen(0x0098, 16) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080513
+packetLen(0x0098, -1) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080507
+packetLen(0x0098, 13) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080429
+packetLen(0x0098, 58) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080408
+packetLen(0x0098, -1) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080401
+packetLen(0x0098, 26) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080325
+packetLen(0x0098, -1) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080318
+packetLen(0x0098, 26) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080311
+packetLen(0x0098, 60) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080304
+packetLen(0x0098, 182) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080226
+packetLen(0x0098, 2) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080219
+packetLen(0x0098, 8) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080124
+packetLen(0x0098, 10) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080102
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+#endif
+
+// Packet: 0x0099
+#if PACKETVER >= 20080701
+packetLen(0x0099, -1) // CZ_BROADCAST
+#elif PACKETVER >= 20080624
+packetLen(0x0099, 30) // CZ_BROADCAST
+#elif PACKETVER >= 20080617
+packetLen(0x0099, -1) // CZ_BROADCAST
+#elif PACKETVER >= 20080610
+packetLen(0x0099, 9) // CZ_BROADCAST
+#elif PACKETVER >= 20080603
+packetLen(0x0099, 4) // CZ_BROADCAST
+#elif PACKETVER >= 20080528
+packetLen(0x0099, 60) // CZ_BROADCAST
+#elif PACKETVER >= 20080520
+packetLen(0x0099, -1) // CZ_BROADCAST
+#elif PACKETVER >= 20080507
+packetLen(0x0099, 8) // CZ_BROADCAST
+#elif PACKETVER >= 20080429
+packetLen(0x0099, 2) // CZ_BROADCAST
+#elif PACKETVER >= 20080408
+packetLen(0x0099, -1) // CZ_BROADCAST
+#elif PACKETVER >= 20080401
+packetLen(0x0099, 6) // CZ_BROADCAST
+#elif PACKETVER >= 20080325
+packetLen(0x0099, 54) // CZ_BROADCAST
+#elif PACKETVER >= 20080318
+packetLen(0x0099, 6) // CZ_BROADCAST
+#elif PACKETVER >= 20080311
+packetLen(0x0099, 66) // CZ_BROADCAST
+#elif PACKETVER >= 20080304
+packetLen(0x0099, 10) // CZ_BROADCAST
+#elif PACKETVER >= 20080226
+packetLen(0x0099, 34) // CZ_BROADCAST
+#elif PACKETVER >= 20080219
+packetLen(0x0099, 2) // CZ_BROADCAST
+#elif PACKETVER >= 20080102
+packetLen(0x0099, -1) // CZ_BROADCAST
+#endif
+
+// Packet: 0x009a
+#if PACKETVER >= 20080701
+packetLen(0x009a, 3) // ZC_BROADCAST
+#elif PACKETVER >= 20080617
+packetLen(0x009a, -1) // ZC_BROADCAST
+#elif PACKETVER >= 20080610
+packetLen(0x009a, 90) // ZC_BROADCAST
+#elif PACKETVER >= 20080603
+packetLen(0x009a, 29) // ZC_BROADCAST
+#elif PACKETVER >= 20080528
+packetLen(0x009a, -1) // ZC_BROADCAST
+#elif PACKETVER >= 20080520
+packetLen(0x009a, 10) // ZC_BROADCAST
+#elif PACKETVER >= 20080513
+packetLen(0x009a, 28) // ZC_BROADCAST
+#elif PACKETVER >= 20080422
+packetLen(0x009a, -1) // ZC_BROADCAST
+#elif PACKETVER >= 20080415
+packetLen(0x009a, 33) // ZC_BROADCAST
+#elif PACKETVER >= 20080408
+packetLen(0x009a, 9) // ZC_BROADCAST
+#elif PACKETVER >= 20080325
+packetLen(0x009a, -1) // ZC_BROADCAST
+#elif PACKETVER >= 20080318
+packetLen(0x009a, 59) // ZC_BROADCAST
+#elif PACKETVER >= 20080311
+packetLen(0x009a, 57) // ZC_BROADCAST
+#elif PACKETVER >= 20080304
+packetLen(0x009a, -1) // ZC_BROADCAST
+#elif PACKETVER >= 20080226
+packetLen(0x009a, 4) // ZC_BROADCAST
+#elif PACKETVER >= 20080219
+packetLen(0x009a, 10) // ZC_BROADCAST
+#elif PACKETVER >= 20080124
+packetLen(0x009a, 4) // ZC_BROADCAST
+#elif PACKETVER >= 20080102
+packetLen(0x009a, -1) // ZC_BROADCAST
+#endif
+
+// Packet: 0x009b
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+#if PACKETVER >= 20080701
+packetLen(0x009c, 67) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080617
+packetLen(0x009c, -1) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080610
+packetLen(0x009c, 6) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080603
+packetLen(0x009c, 4) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080528
+packetLen(0x009c, 26) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080520
+packetLen(0x009c, 67) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080513
+packetLen(0x009c, -1) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080507
+packetLen(0x009c, 6) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080429
+packetLen(0x009c, -1) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080422
+packetLen(0x009c, 10) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080415
+packetLen(0x009c, 66) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080408
+packetLen(0x009c, -1) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080401
+packetLen(0x009c, 8) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080325
+packetLen(0x009c, 3) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080318
+packetLen(0x009c, 282) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080311
+packetLen(0x009c, -1) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080304
+packetLen(0x009c, 71) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080226
+packetLen(0x009c, 4) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080219
+packetLen(0x009c, 7) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080124
+packetLen(0x009c, -1) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080102
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+#endif
+
+// Packet: 0x009d
+#if PACKETVER >= 20080701
+packetLen(0x009d, -1) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080624
+packetLen(0x009d, 10) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080617
+packetLen(0x009d, 13) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080610
+packetLen(0x009d, 3) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080603
+packetLen(0x009d, 6) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080528
+packetLen(0x009d, 8) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080520
+packetLen(0x009d, 10) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080513
+packetLen(0x009d, 29) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080507
+packetLen(0x009d, 59) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080429
+packetLen(0x009d, -1) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080422
+packetLen(0x009d, 6) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080415
+packetLen(0x009d, 32) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080408
+packetLen(0x009d, -1) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080401
+packetLen(0x009d, 26) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080325
+packetLen(0x009d, 57) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080318
+packetLen(0x009d, -1) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080311
+packetLen(0x009d, 13) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x009d, 19) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080226
+packetLen(0x009d, 57) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080219
+packetLen(0x009d, 10) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080124
+packetLen(0x009d, -1) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+#endif
+
+// Packet: 0x009e
+#if PACKETVER >= 20080701
+packetLen(0x009e, -1) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080624
+packetLen(0x009e, 3) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080617
+packetLen(0x009e, -1) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080610
+packetLen(0x009e, 10) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080603
+packetLen(0x009e, 4) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080528
+packetLen(0x009e, 3) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080520
+packetLen(0x009e, 186) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080513
+packetLen(0x009e, -1) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080507
+packetLen(0x009e, 6) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080429
+packetLen(0x009e, 2) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080422
+packetLen(0x009e, 11) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080415
+packetLen(0x009e, 9) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080408
+packetLen(0x009e, 39) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080401
+packetLen(0x009e, 5) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080318
+packetLen(0x009e, 10) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080311
+packetLen(0x009e, -1) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x009e, 282) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080226
+packetLen(0x009e, 11) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080219
+packetLen(0x009e, -1) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080124
+packetLen(0x009e, 97) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+#endif
+
+// Packet: 0x009f
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+#if PACKETVER >= 20080701
+packetLen(0x00a0, 30) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080624
+packetLen(0x00a0, -1) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080617
+packetLen(0x00a0, 6) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080610
+packetLen(0x00a0, 26) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080603
+packetLen(0x00a0, 8) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080528
+packetLen(0x00a0, -1) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080520
+packetLen(0x00a0, 3) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080513
+packetLen(0x00a0, 14) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080507
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080429
+packetLen(0x00a0, 12) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080422
+packetLen(0x00a0, 8) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080408
+packetLen(0x00a0, -1) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080401
+packetLen(0x00a0, 8) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080325
+packetLen(0x00a0, 6) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080318
+packetLen(0x00a0, 13) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080311
+packetLen(0x00a0, 28) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080226
+packetLen(0x00a0, 27) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080219
+packetLen(0x00a0, 39) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080124
+packetLen(0x00a0, 5) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080102
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+#endif
+
+// Packet: 0x00a1
+#if PACKETVER >= 20080701
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080624
+packetLen(0x00a1, 44) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080617
+packetLen(0x00a1, 60) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080528
+packetLen(0x00a1, -1) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080520
+packetLen(0x00a1, 60) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080513
+packetLen(0x00a1, -1) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080507
+packetLen(0x00a1, 11) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080422
+packetLen(0x00a1, -1) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080415
+packetLen(0x00a1, 16) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080408
+packetLen(0x00a1, 3) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080401
+packetLen(0x00a1, -1) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080325
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080318
+packetLen(0x00a1, 53) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080311
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080304
+packetLen(0x00a1, 21) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080226
+packetLen(0x00a1, -1) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080219
+packetLen(0x00a1, 60) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080124
+packetLen(0x00a1, 30) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080102
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+#endif
+
+// Packet: 0x00a2
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+#if PACKETVER >= 20080701
+packetLen(0x00a3, 28) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080624
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080617
+packetLen(0x00a3, 3) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080610
+packetLen(0x00a3, 10) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080528
+packetLen(0x00a3, 4) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080520
+packetLen(0x00a3, 15) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080513
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080507
+packetLen(0x00a3, 10) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080429
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080422
+packetLen(0x00a3, 16) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080415
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080408
+packetLen(0x00a3, 8) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080401
+packetLen(0x00a3, 28) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080325
+packetLen(0x00a3, 4) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080318
+packetLen(0x00a3, 2) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x00a3, 65) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x00a3, 6) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x00a3, 30) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x00a3, 44) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+#endif
+
+// Packet: 0x00a4
+#if PACKETVER >= 20080701
+packetLen(0x00a4, 86) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080617
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080610
+packetLen(0x00a4, 10) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080528
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080520
+packetLen(0x00a4, 3) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080513
+packetLen(0x00a4, 14) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080507
+packetLen(0x00a4, 33) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080429
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080422
+packetLen(0x00a4, 60) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080415
+packetLen(0x00a4, 22) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080408
+packetLen(0x00a4, 2) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080401
+packetLen(0x00a4, 6) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080325
+packetLen(0x00a4, 7) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080318
+packetLen(0x00a4, 27) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x00a4, 6) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x00a4, 15) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x00a4, 30) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080124
+packetLen(0x00a4, 10) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+#endif
+
+// Packet: 0x00a5
+#if PACKETVER >= 20080617
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080610
+packetLen(0x00a5, 7) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080603
+packetLen(0x00a5, 9) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080528
+packetLen(0x00a5, 28) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080520
+packetLen(0x00a5, 6) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080513
+packetLen(0x00a5, 4) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080415
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080408
+packetLen(0x00a5, 6) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080401
+packetLen(0x00a5, 8) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080325
+packetLen(0x00a5, 9) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080318
+packetLen(0x00a5, 6) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x00a5, 282) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x00a5, 30) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x00a5, 28) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x00a5, 3) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080124
+packetLen(0x00a5, 4) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+#endif
+
+// Packet: 0x00a6
+#if PACKETVER >= 20080701
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080624
+packetLen(0x00a6, 16) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080610
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080603
+packetLen(0x00a6, 10) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080528
+packetLen(0x00a6, 2) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080520
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080513
+packetLen(0x00a6, 30) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080507
+packetLen(0x00a6, 10) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080429
+packetLen(0x00a6, 282) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080415
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080408
+packetLen(0x00a6, 59) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080401
+packetLen(0x00a6, 7) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080325
+packetLen(0x00a6, 10) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080318
+packetLen(0x00a6, 3) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x00a6, 26) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x00a6, 16) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080124
+packetLen(0x00a6, 2) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+#endif
+
+// Packet: 0x00a7
+packetLen(0x00a7, 9)
+
+// Packet: 0x00a8
+#if PACKETVER >= 20080701
+packetLen(0x00a8, -1) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080624
+packetLen(0x00a8, 6) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080610
+packetLen(0x00a8, -1) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080528
+packetLen(0x00a8, 6) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080520
+packetLen(0x00a8, 10) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080513
+packetLen(0x00a8, 90) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080507
+packetLen(0x00a8, 3) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080429
+packetLen(0x00a8, -1) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080422
+packetLen(0x00a8, 13) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080408
+packetLen(0x00a8, -1) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080401
+packetLen(0x00a8, 4) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080325
+packetLen(0x00a8, 2) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080318
+packetLen(0x00a8, 30) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080311
+packetLen(0x00a8, 6) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080304
+packetLen(0x00a8, 3) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080219
+packetLen(0x00a8, 10) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080124
+packetLen(0x00a8, 20) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080102
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+#endif
+
+// Packet: 0x00a9
+#if PACKETVER >= 20080701
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080617
+packetLen(0x00a9, -1) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080610
+packetLen(0x00a9, 282) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080603
+packetLen(0x00a9, 114) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080528
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080520
+packetLen(0x00a9, 79) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080513
+packetLen(0x00a9, 3) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080507
+packetLen(0x00a9, 26) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080429
+packetLen(0x00a9, 8) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080422
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080415
+packetLen(0x00a9, -1) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080408
+packetLen(0x00a9, 2) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080401
+packetLen(0x00a9, -1) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080325
+packetLen(0x00a9, 8) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080311
+packetLen(0x00a9, -1) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080304
+packetLen(0x00a9, 11) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080226
+packetLen(0x00a9, 26) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080219
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080124
+packetLen(0x00a9, 10) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080102
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+#endif
+
+// Packet: 0x00aa
+#if PACKETVER >= 20080624
+packetLen(0x00aa, -1) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080610
+packetLen(0x00aa, 4) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080603
+packetLen(0x00aa, 10) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080528
+packetLen(0x00aa, 6) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080520
+packetLen(0x00aa, 2) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080513
+packetLen(0x00aa, 4) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080507
+packetLen(0x00aa, 6) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080429
+packetLen(0x00aa, -1) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080422
+packetLen(0x00aa, 9) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080415
+packetLen(0x00aa, 3) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080408
+packetLen(0x00aa, 31) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080401
+packetLen(0x00aa, 16) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080325
+packetLen(0x00aa, 55) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080318
+packetLen(0x00aa, 3) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080311
+packetLen(0x00aa, 11) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080304
+packetLen(0x00aa, -1) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080219
+packetLen(0x00aa, 2) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080124
+packetLen(0x00aa, 6) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080102
+packetLen(0x00aa, 7) // ZC_REQ_WEAR_EQUIP_ACK
+#endif
+
+// Packet: 0x00ab
+#if PACKETVER >= 20080701
+packetLen(0x00ab, -1) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080617
+packetLen(0x00ab, 6) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080610
+packetLen(0x00ab, 16) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080603
+packetLen(0x00ab, -1) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080528
+packetLen(0x00ab, 53) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080520
+packetLen(0x00ab, 36) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080513
+packetLen(0x00ab, 26) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080507
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080429
+packetLen(0x00ab, -1) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080422
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080415
+packetLen(0x00ab, 7) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080401
+packetLen(0x00ab, -1) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080325
+packetLen(0x00ab, 8) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080318
+packetLen(0x00ab, 9) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080311
+packetLen(0x00ab, 14) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080304
+packetLen(0x00ab, 2) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080226
+packetLen(0x00ab, -1) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080219
+packetLen(0x00ab, 57) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080124
+packetLen(0x00ab, 86) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080102
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+#endif
+
+// Packet: 0x00ac
+#if PACKETVER >= 20080701
+packetLen(0x00ac, -1) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080624
+packetLen(0x00ac, 8) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080617
+packetLen(0x00ac, 6) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080610
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080603
+packetLen(0x00ac, 3) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080528
+packetLen(0x00ac, -1) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080513
+packetLen(0x00ac, 10) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080507
+packetLen(0x00ac, 67) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080429
+packetLen(0x00ac, -1) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080415
+packetLen(0x00ac, 6) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080408
+packetLen(0x00ac, 8) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080401
+packetLen(0x00ac, 3) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080325
+packetLen(0x00ac, 6) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080318
+packetLen(0x00ac, 10) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080226
+packetLen(0x00ac, 6) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080219
+packetLen(0x00ac, 3) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080124
+packetLen(0x00ac, -1) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080102
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#endif
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+#if PACKETVER >= 20080701
+packetLen(0x00af, -1) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080624
+packetLen(0x00af, 5) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080610
+packetLen(0x00af, -1) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080603
+packetLen(0x00af, 10) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080528
+packetLen(0x00af, 29) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080520
+packetLen(0x00af, -1) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080513
+packetLen(0x00af, 2) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080507
+packetLen(0x00af, -1) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080429
+packetLen(0x00af, 10) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080422
+packetLen(0x00af, -1) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080408
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080401
+packetLen(0x00af, 2) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080325
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080318
+packetLen(0x00af, -1) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080311
+packetLen(0x00af, 26) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080304
+packetLen(0x00af, 2) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080226
+packetLen(0x00af, 7) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080219
+packetLen(0x00af, 4) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080124
+packetLen(0x00af, -1) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080102
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+#endif
+
+// Packet: 0x00b0
+#if PACKETVER >= 20080701
+packetLen(0x00b0, 7) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080624
+packetLen(0x00b0, 3) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080617
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080610
+packetLen(0x00b0, -1) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080603
+packetLen(0x00b0, 6) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080528
+packetLen(0x00b0, -1) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080520
+packetLen(0x00b0, 3) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080513
+packetLen(0x00b0, 6) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080429
+packetLen(0x00b0, -1) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080422
+packetLen(0x00b0, 28) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080415
+packetLen(0x00b0, 12) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080408
+packetLen(0x00b0, -1) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080401
+packetLen(0x00b0, 4) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080325
+packetLen(0x00b0, 2) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080318
+packetLen(0x00b0, -1) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080311
+packetLen(0x00b0, 10) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080226
+packetLen(0x00b0, 11) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080219
+packetLen(0x00b0, 7) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080124
+packetLen(0x00b0, 2) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+#endif
+
+// Packet: 0x00b1
+#if PACKETVER >= 20080701
+packetLen(0x00b1, 3) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080617
+packetLen(0x00b1, -1) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080610
+packetLen(0x00b1, 11) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080603
+packetLen(0x00b1, 2) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080528
+packetLen(0x00b1, 6) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080507
+packetLen(0x00b1, -1) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080429
+packetLen(0x00b1, 97) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080422
+packetLen(0x00b1, -1) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080415
+packetLen(0x00b1, 26) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080401
+packetLen(0x00b1, -1) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080325
+packetLen(0x00b1, 58) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080318
+packetLen(0x00b1, 30) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080311
+packetLen(0x00b1, 2) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080304
+packetLen(0x00b1, -1) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080226
+packetLen(0x00b1, 30) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080219
+packetLen(0x00b1, 14) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080124
+packetLen(0x00b1, 9) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+#endif
+
+// Packet: 0x00b2
+#if PACKETVER >= 20080624
+packetLen(0x00b2, -1) // CZ_RESTART
+#elif PACKETVER >= 20080617
+packetLen(0x00b2, 10) // CZ_RESTART
+#elif PACKETVER >= 20080610
+packetLen(0x00b2, 13) // CZ_RESTART
+#elif PACKETVER >= 20080603
+packetLen(0x00b2, -1) // CZ_RESTART
+#elif PACKETVER >= 20080528
+packetLen(0x00b2, 2) // CZ_RESTART
+#elif PACKETVER >= 20080520
+packetLen(0x00b2, 6) // CZ_RESTART
+#elif PACKETVER >= 20080513
+packetLen(0x00b2, 58) // CZ_RESTART
+#elif PACKETVER >= 20080507
+packetLen(0x00b2, 6) // CZ_RESTART
+#elif PACKETVER >= 20080429
+packetLen(0x00b2, -1) // CZ_RESTART
+#elif PACKETVER >= 20080422
+packetLen(0x00b2, 3) // CZ_RESTART
+#elif PACKETVER >= 20080415
+packetLen(0x00b2, 14) // CZ_RESTART
+#elif PACKETVER >= 20080408
+packetLen(0x00b2, 67) // CZ_RESTART
+#elif PACKETVER >= 20080401
+packetLen(0x00b2, 4) // CZ_RESTART
+#elif PACKETVER >= 20080325
+packetLen(0x00b2, 5) // CZ_RESTART
+#elif PACKETVER >= 20080318
+packetLen(0x00b2, 3) // CZ_RESTART
+#elif PACKETVER >= 20080311
+packetLen(0x00b2, 5) // CZ_RESTART
+#elif PACKETVER >= 20080304
+packetLen(0x00b2, 8) // CZ_RESTART
+#elif PACKETVER >= 20080226
+packetLen(0x00b2, 9) // CZ_RESTART
+#elif PACKETVER >= 20080219
+packetLen(0x00b2, -1) // CZ_RESTART
+#elif PACKETVER >= 20080124
+packetLen(0x00b2, 2) // CZ_RESTART
+#elif PACKETVER >= 20080102
+packetLen(0x00b2, 3) // CZ_RESTART
+#endif
+
+// Packet: 0x00b3
+#if PACKETVER >= 20080701
+packetLen(0x00b3, 14) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080617
+packetLen(0x00b3, -1) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080610
+packetLen(0x00b3, 6) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080603
+packetLen(0x00b3, 30) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080528
+packetLen(0x00b3, 6) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080520
+packetLen(0x00b3, 2) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080513
+packetLen(0x00b3, -1) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080507
+packetLen(0x00b3, 4) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080422
+packetLen(0x00b3, -1) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080415
+packetLen(0x00b3, 6) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080408
+packetLen(0x00b3, 5) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080325
+packetLen(0x00b3, -1) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080318
+packetLen(0x00b3, 35) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080311
+packetLen(0x00b3, -1) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080304
+packetLen(0x00b3, 7) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080226
+packetLen(0x00b3, 10) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080219
+packetLen(0x00b3, 55) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080124
+packetLen(0x00b3, 28) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080102
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+#endif
+
+// Packet: 0x00b4
+#if PACKETVER >= 20080617
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080610
+packetLen(0x00b4, 6) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080603
+packetLen(0x00b4, 33) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080528
+packetLen(0x00b4, 3) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080520
+packetLen(0x00b4, 10) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080513
+packetLen(0x00b4, 4) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080429
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080422
+packetLen(0x00b4, 6) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080415
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080408
+packetLen(0x00b4, 282) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080401
+packetLen(0x00b4, 34) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080325
+packetLen(0x00b4, 6) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080318
+packetLen(0x00b4, 2) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080311
+packetLen(0x00b4, 36) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080304
+packetLen(0x00b4, 2) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080226
+packetLen(0x00b4, 43) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080219
+packetLen(0x00b4, 4) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080102
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+#endif
+
+// Packet: 0x00b5
+#if PACKETVER >= 20080701
+packetLen(0x00b5, -1) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080624
+packetLen(0x00b5, 12) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080617
+packetLen(0x00b5, -1) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080610
+packetLen(0x00b5, 3) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080603
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080528
+packetLen(0x00b5, -1) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080520
+packetLen(0x00b5, 2) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080513
+packetLen(0x00b5, -1) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080507
+packetLen(0x00b5, 5) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080429
+packetLen(0x00b5, -1) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080422
+packetLen(0x00b5, 19) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080415
+packetLen(0x00b5, 14) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080408
+packetLen(0x00b5, 90) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080401
+packetLen(0x00b5, 14) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080325
+packetLen(0x00b5, -1) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080318
+packetLen(0x00b5, 11) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080311
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080304
+packetLen(0x00b5, 8) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080226
+packetLen(0x00b5, 4) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080219
+packetLen(0x00b5, 30) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080124
+packetLen(0x00b5, -1) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080102
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+#endif
+
+// Packet: 0x00b6
+#if PACKETVER >= 20080701
+packetLen(0x00b6, 8) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080624
+packetLen(0x00b6, 7) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080617
+packetLen(0x00b6, -1) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080610
+packetLen(0x00b6, 3) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080603
+packetLen(0x00b6, 39) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080528
+packetLen(0x00b6, 11) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080429
+packetLen(0x00b6, -1) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080422
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080415
+packetLen(0x00b6, 3) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080408
+packetLen(0x00b6, 8) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080401
+packetLen(0x00b6, 3) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080325
+packetLen(0x00b6, 16) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080318
+packetLen(0x00b6, 12) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080311
+packetLen(0x00b6, -1) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080304
+packetLen(0x00b6, 4) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080226
+packetLen(0x00b6, -1) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080219
+packetLen(0x00b6, 3) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080124
+packetLen(0x00b6, 14) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080102
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+#endif
+
+// Packet: 0x00b7
+#if PACKETVER >= 20080701
+packetLen(0x00b7, 22) // ZC_MENU_LIST
+#elif PACKETVER >= 20080617
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+#elif PACKETVER >= 20080610
+packetLen(0x00b7, 2) // ZC_MENU_LIST
+#elif PACKETVER >= 20080528
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+#elif PACKETVER >= 20080520
+packetLen(0x00b7, 58) // ZC_MENU_LIST
+#elif PACKETVER >= 20080513
+packetLen(0x00b7, 6) // ZC_MENU_LIST
+#elif PACKETVER >= 20080507
+packetLen(0x00b7, 20) // ZC_MENU_LIST
+#elif PACKETVER >= 20080429
+packetLen(0x00b7, 2) // ZC_MENU_LIST
+#elif PACKETVER >= 20080422
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+#elif PACKETVER >= 20080415
+packetLen(0x00b7, 5) // ZC_MENU_LIST
+#elif PACKETVER >= 20080408
+packetLen(0x00b7, 14) // ZC_MENU_LIST
+#elif PACKETVER >= 20080401
+packetLen(0x00b7, 8) // ZC_MENU_LIST
+#elif PACKETVER >= 20080325
+packetLen(0x00b7, 6) // ZC_MENU_LIST
+#elif PACKETVER >= 20080318
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x00b7, 42) // ZC_MENU_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x00b7, 13) // ZC_MENU_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x00b7, 32) // ZC_MENU_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x00b7, 3) // ZC_MENU_LIST
+#elif PACKETVER >= 20080124
+packetLen(0x00b7, 21) // ZC_MENU_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+#endif
+
+// Packet: 0x00b8
+#if PACKETVER >= 20080701
+packetLen(0x00b8, 20) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080624
+packetLen(0x00b8, -1) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080617
+packetLen(0x00b8, 9) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080610
+packetLen(0x00b8, -1) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080603
+packetLen(0x00b8, 6) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080528
+packetLen(0x00b8, -1) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080520
+packetLen(0x00b8, 53) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080513
+packetLen(0x00b8, 8) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080507
+packetLen(0x00b8, -1) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080429
+packetLen(0x00b8, 4) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080422
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080415
+packetLen(0x00b8, 11) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080408
+packetLen(0x00b8, 9) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080401
+packetLen(0x00b8, 30) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080325
+packetLen(0x00b8, 5) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080318
+packetLen(0x00b8, 6) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080311
+packetLen(0x00b8, 16) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080304
+packetLen(0x00b8, 28) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080226
+packetLen(0x00b8, 5) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080219
+packetLen(0x00b8, -1) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080124
+packetLen(0x00b8, 4) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080102
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+#endif
+
+// Packet: 0x00b9
+#if PACKETVER >= 20080701
+packetLen(0x00b9, -1) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080624
+packetLen(0x00b9, 2) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080617
+packetLen(0x00b9, 9) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080610
+packetLen(0x00b9, -1) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080603
+packetLen(0x00b9, 66) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080513
+packetLen(0x00b9, -1) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080507
+packetLen(0x00b9, 30) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080429
+packetLen(0x00b9, 26) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080415
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080408
+packetLen(0x00b9, 2) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080401
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080325
+packetLen(0x00b9, 9) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080318
+packetLen(0x00b9, 11) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080311
+packetLen(0x00b9, 29) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080304
+packetLen(0x00b9, 10) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080226
+packetLen(0x00b9, 58) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080219
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080124
+packetLen(0x00b9, 8) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080102
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+#endif
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+#if PACKETVER >= 20080701
+packetLen(0x00bb, 60) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080624
+packetLen(0x00bb, 4) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080617
+packetLen(0x00bb, -1) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080610
+packetLen(0x00bb, 36) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080603
+packetLen(0x00bb, 6) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080528
+packetLen(0x00bb, 10) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080520
+packetLen(0x00bb, 13) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080507
+packetLen(0x00bb, -1) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080429
+packetLen(0x00bb, 55) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080422
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080415
+packetLen(0x00bb, 6) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080408
+packetLen(0x00bb, -1) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080401
+packetLen(0x00bb, 3) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080325
+packetLen(0x00bb, 20) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080318
+packetLen(0x00bb, 2) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080226
+packetLen(0x00bb, -1) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080219
+packetLen(0x00bb, 182) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080124
+packetLen(0x00bb, 12) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+#endif
+
+// Packet: 0x00bc
+#if PACKETVER >= 20080701
+packetLen(0x00bc, -1) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080624
+packetLen(0x00bc, 4) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080617
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080610
+packetLen(0x00bc, 2) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080603
+packetLen(0x00bc, 26) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080528
+packetLen(0x00bc, 14) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080520
+packetLen(0x00bc, -1) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080513
+packetLen(0x00bc, 22) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080507
+packetLen(0x00bc, 14) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080429
+packetLen(0x00bc, -1) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080422
+packetLen(0x00bc, 2) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080415
+packetLen(0x00bc, 44) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080408
+packetLen(0x00bc, -1) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080401
+packetLen(0x00bc, 2) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080325
+packetLen(0x00bc, 11) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080318
+packetLen(0x00bc, 3) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080311
+packetLen(0x00bc, 2) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080304
+packetLen(0x00bc, 7) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080226
+packetLen(0x00bc, 3) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080219
+packetLen(0x00bc, -1) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080124
+packetLen(0x00bc, 14) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080102
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+#endif
+
+// Packet: 0x00bd
+#if PACKETVER >= 20080701
+packetLen(0x00bd, 60) // ZC_STATUS
+#elif PACKETVER >= 20080624
+packetLen(0x00bd, -1) // ZC_STATUS
+#elif PACKETVER >= 20080617
+packetLen(0x00bd, 79) // ZC_STATUS
+#elif PACKETVER >= 20080610
+packetLen(0x00bd, 18) // ZC_STATUS
+#elif PACKETVER >= 20080603
+packetLen(0x00bd, 6) // ZC_STATUS
+#elif PACKETVER >= 20080528
+packetLen(0x00bd, -1) // ZC_STATUS
+#elif PACKETVER >= 20080520
+packetLen(0x00bd, 26) // ZC_STATUS
+#elif PACKETVER >= 20080513
+packetLen(0x00bd, -1) // ZC_STATUS
+#elif PACKETVER >= 20080507
+packetLen(0x00bd, 7) // ZC_STATUS
+#elif PACKETVER >= 20080422
+packetLen(0x00bd, -1) // ZC_STATUS
+#elif PACKETVER >= 20080415
+packetLen(0x00bd, 6) // ZC_STATUS
+#elif PACKETVER >= 20080401
+packetLen(0x00bd, 4) // ZC_STATUS
+#elif PACKETVER >= 20080325
+packetLen(0x00bd, 7) // ZC_STATUS
+#elif PACKETVER >= 20080318
+packetLen(0x00bd, 12) // ZC_STATUS
+#elif PACKETVER >= 20080304
+packetLen(0x00bd, 2) // ZC_STATUS
+#elif PACKETVER >= 20080226
+packetLen(0x00bd, 58) // ZC_STATUS
+#elif PACKETVER >= 20080219
+packetLen(0x00bd, 6) // ZC_STATUS
+#elif PACKETVER >= 20080124
+packetLen(0x00bd, 4) // ZC_STATUS
+#elif PACKETVER >= 20080102
+packetLen(0x00bd, 44) // ZC_STATUS
+#endif
+
+// Packet: 0x00be
+#if PACKETVER >= 20080701
+packetLen(0x00be, 6) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080624
+packetLen(0x00be, 57) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080617
+packetLen(0x00be, -1) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080610
+packetLen(0x00be, 44) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080603
+packetLen(0x00be, 3) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080528
+packetLen(0x00be, 54) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080520
+packetLen(0x00be, 8) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080507
+packetLen(0x00be, -1) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080429
+packetLen(0x00be, 30) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080422
+packetLen(0x00be, 4) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080415
+packetLen(0x00be, -1) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080408
+packetLen(0x00be, 4) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080325
+packetLen(0x00be, -1) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080318
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080311
+packetLen(0x00be, 11) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080304
+packetLen(0x00be, 10) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080124
+packetLen(0x00be, -1) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+#endif
+
+// Packet: 0x00bf
+#if PACKETVER >= 20080610
+packetLen(0x00bf, -1) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080603
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080528
+packetLen(0x00bf, 65) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080520
+packetLen(0x00bf, 8) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080513
+packetLen(0x00bf, -1) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080507
+packetLen(0x00bf, 11) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080429
+packetLen(0x00bf, -1) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080422
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080408
+packetLen(0x00bf, -1) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080401
+packetLen(0x00bf, 32) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080325
+packetLen(0x00bf, 60) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080304
+packetLen(0x00bf, -1) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080226
+packetLen(0x00bf, 29) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080219
+packetLen(0x00bf, 12) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080124
+packetLen(0x00bf, 6) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080102
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+#endif
+
+// Packet: 0x00c0
+#if PACKETVER >= 20080701
+packetLen(0x00c0, -1) // ZC_EMOTION
+#elif PACKETVER >= 20080624
+packetLen(0x00c0, 10) // ZC_EMOTION
+#elif PACKETVER >= 20080617
+packetLen(0x00c0, 60) // ZC_EMOTION
+#elif PACKETVER >= 20080610
+packetLen(0x00c0, 39) // ZC_EMOTION
+#elif PACKETVER >= 20080603
+packetLen(0x00c0, 26) // ZC_EMOTION
+#elif PACKETVER >= 20080528
+packetLen(0x00c0, 30) // ZC_EMOTION
+#elif PACKETVER >= 20080520
+packetLen(0x00c0, 2) // ZC_EMOTION
+#elif PACKETVER >= 20080513
+packetLen(0x00c0, 186) // ZC_EMOTION
+#elif PACKETVER >= 20080507
+packetLen(0x00c0, -1) // ZC_EMOTION
+#elif PACKETVER >= 20080429
+packetLen(0x00c0, 13) // ZC_EMOTION
+#elif PACKETVER >= 20080422
+packetLen(0x00c0, 9) // ZC_EMOTION
+#elif PACKETVER >= 20080415
+packetLen(0x00c0, -1) // ZC_EMOTION
+#elif PACKETVER >= 20080408
+packetLen(0x00c0, 7) // ZC_EMOTION
+#elif PACKETVER >= 20080401
+packetLen(0x00c0, 2) // ZC_EMOTION
+#elif PACKETVER >= 20080325
+packetLen(0x00c0, 10) // ZC_EMOTION
+#elif PACKETVER >= 20080318
+packetLen(0x00c0, 26) // ZC_EMOTION
+#elif PACKETVER >= 20080304
+packetLen(0x00c0, -1) // ZC_EMOTION
+#elif PACKETVER >= 20080226
+packetLen(0x00c0, 21) // ZC_EMOTION
+#elif PACKETVER >= 20080219
+packetLen(0x00c0, 6) // ZC_EMOTION
+#elif PACKETVER >= 20080124
+packetLen(0x00c0, -1) // ZC_EMOTION
+#elif PACKETVER >= 20080102
+packetLen(0x00c0, 7) // ZC_EMOTION
+#endif
+
+// Packet: 0x00c1
+#if PACKETVER >= 20080701
+packetLen(0x00c1, 6) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080610
+packetLen(0x00c1, -1) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080603
+packetLen(0x00c1, 81) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080507
+packetLen(0x00c1, -1) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080422
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080415
+packetLen(0x00c1, 57) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080401
+packetLen(0x00c1, -1) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080325
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080318
+packetLen(0x00c1, 4) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080311
+packetLen(0x00c1, 16) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080304
+packetLen(0x00c1, 9) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080226
+packetLen(0x00c1, 6) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080219
+packetLen(0x00c1, -1) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080124
+packetLen(0x00c1, 282) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080102
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+#endif
+
+// Packet: 0x00c2
+#if PACKETVER >= 20080701
+packetLen(0x00c2, -1) // ZC_USER_COUNT
+#elif PACKETVER >= 20080624
+packetLen(0x00c2, 8) // ZC_USER_COUNT
+#elif PACKETVER >= 20080617
+packetLen(0x00c2, -1) // ZC_USER_COUNT
+#elif PACKETVER >= 20080610
+packetLen(0x00c2, 2) // ZC_USER_COUNT
+#elif PACKETVER >= 20080603
+packetLen(0x00c2, 90) // ZC_USER_COUNT
+#elif PACKETVER >= 20080507
+packetLen(0x00c2, -1) // ZC_USER_COUNT
+#elif PACKETVER >= 20080429
+packetLen(0x00c2, 16) // ZC_USER_COUNT
+#elif PACKETVER >= 20080422
+packetLen(0x00c2, 4) // ZC_USER_COUNT
+#elif PACKETVER >= 20080415
+packetLen(0x00c2, 5) // ZC_USER_COUNT
+#elif PACKETVER >= 20080408
+packetLen(0x00c2, 2) // ZC_USER_COUNT
+#elif PACKETVER >= 20080401
+packetLen(0x00c2, 26) // ZC_USER_COUNT
+#elif PACKETVER >= 20080325
+packetLen(0x00c2, 10) // ZC_USER_COUNT
+#elif PACKETVER >= 20080318
+packetLen(0x00c2, 54) // ZC_USER_COUNT
+#elif PACKETVER >= 20080311
+packetLen(0x00c2, 4) // ZC_USER_COUNT
+#elif PACKETVER >= 20080304
+packetLen(0x00c2, 39) // ZC_USER_COUNT
+#elif PACKETVER >= 20080226
+packetLen(0x00c2, 282) // ZC_USER_COUNT
+#elif PACKETVER >= 20080219
+packetLen(0x00c2, 4) // ZC_USER_COUNT
+#elif PACKETVER >= 20080124
+packetLen(0x00c2, 3) // ZC_USER_COUNT
+#elif PACKETVER >= 20080102
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+#endif
+
+// Packet: 0x00c3
+#if PACKETVER >= 20080701
+packetLen(0x00c3, -1) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080624
+packetLen(0x00c3, 3) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080617
+packetLen(0x00c3, -1) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080610
+packetLen(0x00c3, 42) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080603
+packetLen(0x00c3, -1) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080520
+packetLen(0x00c3, 10) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080415
+packetLen(0x00c3, -1) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080408
+packetLen(0x00c3, 4) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080401
+packetLen(0x00c3, 66) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080325
+packetLen(0x00c3, -1) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080318
+packetLen(0x00c3, 3) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080311
+packetLen(0x00c3, 68) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080304
+packetLen(0x00c3, 26) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080226
+packetLen(0x00c3, 28) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080219
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080124
+packetLen(0x00c3, 10) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+#endif
+
+// Packet: 0x00c4
+#if PACKETVER >= 20080701
+packetLen(0x00c4, -1) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080624
+packetLen(0x00c4, 14) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080617
+packetLen(0x00c4, -1) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080603
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080528
+packetLen(0x00c4, -1) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080520
+packetLen(0x00c4, 2) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080513
+packetLen(0x00c4, -1) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080507
+packetLen(0x00c4, 29) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080429
+packetLen(0x00c4, 71) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080422
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080415
+packetLen(0x00c4, 11) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080408
+packetLen(0x00c4, 2) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080401
+packetLen(0x00c4, -1) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080325
+packetLen(0x00c4, 3) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080318
+packetLen(0x00c4, -1) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080304
+packetLen(0x00c4, 4) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080226
+packetLen(0x00c4, 114) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080219
+packetLen(0x00c4, 2) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080124
+packetLen(0x00c4, 4) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080102
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+#endif
+
+// Packet: 0x00c5
+#if PACKETVER >= 20080624
+packetLen(0x00c5, -1) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080617
+packetLen(0x00c5, 9) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080610
+packetLen(0x00c5, 114) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080603
+packetLen(0x00c5, -1) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080528
+packetLen(0x00c5, 10) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080520
+packetLen(0x00c5, 4) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080513
+packetLen(0x00c5, 6) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080507
+packetLen(0x00c5, 8) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080429
+packetLen(0x00c5, -1) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080422
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080401
+packetLen(0x00c5, -1) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080325
+packetLen(0x00c5, 30) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080318
+packetLen(0x00c5, 3) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080311
+packetLen(0x00c5, 9) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080124
+packetLen(0x00c5, -1) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080102
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+#endif
+
+// Packet: 0x00c6
+#if PACKETVER >= 20080617
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080610
+packetLen(0x00c6, 8) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080520
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080513
+packetLen(0x00c6, 8) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080507
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080429
+packetLen(0x00c6, 21) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080422
+packetLen(0x00c6, 4) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080325
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080318
+packetLen(0x00c6, 31) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x00c6, 5) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x00c6, 13) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x00c6, 3) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+#endif
+
+// Packet: 0x00c7
+#if PACKETVER >= 20080701
+packetLen(0x00c7, 182) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080624
+packetLen(0x00c7, 6) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080603
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080528
+packetLen(0x00c7, 3) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080520
+packetLen(0x00c7, 22) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080513
+packetLen(0x00c7, 4) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080429
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080422
+packetLen(0x00c7, 53) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080415
+packetLen(0x00c7, 6) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080408
+packetLen(0x00c7, 26) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080325
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080318
+packetLen(0x00c7, 58) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x00c7, 90) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x00c7, 67) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x00c7, 5) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x00c7, 90) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080124
+packetLen(0x00c7, 6) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+#endif
+
+// Packet: 0x00c8
+#if PACKETVER >= 20080701
+packetLen(0x00c8, 2) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080624
+packetLen(0x00c8, 4) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080617
+packetLen(0x00c8, 15) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080603
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080528
+packetLen(0x00c8, 6) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080507
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080429
+packetLen(0x00c8, 66) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080325
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080318
+packetLen(0x00c8, 2) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x00c8, 14) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x00c8, 53) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x00c8, 10) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080124
+packetLen(0x00c8, 6) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+#endif
+
+// Packet: 0x00c9
+#if PACKETVER >= 20080701
+packetLen(0x00c9, 39) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080624
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080617
+packetLen(0x00c9, 36) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080610
+packetLen(0x00c9, 9) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080603
+packetLen(0x00c9, 30) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080520
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080513
+packetLen(0x00c9, 10) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080318
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x00c9, 6) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x00c9, 6) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x00c9, 10) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080124
+packetLen(0x00c9, 5) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+#endif
+
+// Packet: 0x00ca
+#if PACKETVER >= 20080610
+packetLen(0x00ca, -1) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080603
+packetLen(0x00ca, 31) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080513
+packetLen(0x00ca, -1) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080507
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080429
+packetLen(0x00ca, 7) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080422
+packetLen(0x00ca, 6) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080415
+packetLen(0x00ca, 17) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080408
+packetLen(0x00ca, 14) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080401
+packetLen(0x00ca, 2) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080325
+packetLen(0x00ca, -1) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080318
+packetLen(0x00ca, 4) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080311
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080304
+packetLen(0x00ca, 9) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080226
+packetLen(0x00ca, 23) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080219
+packetLen(0x00ca, 86) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080124
+packetLen(0x00ca, 36) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080102
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+#endif
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+#if PACKETVER >= 20080701
+packetLen(0x00cc, 33) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080617
+packetLen(0x00cc, -1) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080610
+packetLen(0x00cc, 28) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080603
+packetLen(0x00cc, 2) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080520
+packetLen(0x00cc, -1) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080513
+packetLen(0x00cc, 26) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080507
+packetLen(0x00cc, -1) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080429
+packetLen(0x00cc, 10) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080422
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080415
+packetLen(0x00cc, 2) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080401
+packetLen(0x00cc, 3) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080325
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080318
+packetLen(0x00cc, 10) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080311
+packetLen(0x00cc, 14) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080304
+packetLen(0x00cc, -1) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080226
+packetLen(0x00cc, 7) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080124
+packetLen(0x00cc, -1) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080102
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+#endif
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+#if PACKETVER >= 20080701
+packetLen(0x00ce, -1) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080624
+packetLen(0x00ce, 4) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080617
+packetLen(0x00ce, 11) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080610
+packetLen(0x00ce, 22) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080603
+packetLen(0x00ce, 102) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080528
+packetLen(0x00ce, 11) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080520
+packetLen(0x00ce, 3) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080513
+packetLen(0x00ce, 9) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080507
+packetLen(0x00ce, -1) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080429
+packetLen(0x00ce, 114) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080422
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080415
+packetLen(0x00ce, 10) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080408
+packetLen(0x00ce, -1) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080401
+packetLen(0x00ce, 30) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080325
+packetLen(0x00ce, 10) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080318
+packetLen(0x00ce, 7) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080311
+packetLen(0x00ce, 10) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080304
+packetLen(0x00ce, 8) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080226
+packetLen(0x00ce, -1) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080124
+packetLen(0x00ce, 6) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080102
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+#endif
+
+// Packet: 0x00cf
+#if PACKETVER >= 20080624
+packetLen(0x00cf, -1) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080617
+packetLen(0x00cf, 30) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080610
+packetLen(0x00cf, 57) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080603
+packetLen(0x00cf, 6) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080528
+packetLen(0x00cf, 5) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080520
+packetLen(0x00cf, 8) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080513
+packetLen(0x00cf, 2) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080507
+packetLen(0x00cf, -1) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080429
+packetLen(0x00cf, 5) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080422
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080415
+packetLen(0x00cf, -1) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080408
+packetLen(0x00cf, 6) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080401
+packetLen(0x00cf, 60) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080325
+packetLen(0x00cf, 2) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080318
+packetLen(0x00cf, -1) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080311
+packetLen(0x00cf, 6) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080304
+packetLen(0x00cf, -1) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080226
+packetLen(0x00cf, 16) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080219
+packetLen(0x00cf, 9) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080124
+packetLen(0x00cf, 11) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080102
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+#endif
+
+// Packet: 0x00d0
+#if PACKETVER >= 20080610
+packetLen(0x00d0, -1) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080603
+packetLen(0x00d0, 10) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080528
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080520
+packetLen(0x00d0, 30) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080513
+packetLen(0x00d0, 114) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080507
+packetLen(0x00d0, 14) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080429
+packetLen(0x00d0, -1) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080422
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080415
+packetLen(0x00d0, -1) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080408
+packetLen(0x00d0, 4) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080401
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080325
+packetLen(0x00d0, 8) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080318
+packetLen(0x00d0, 14) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080311
+packetLen(0x00d0, 10) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080226
+packetLen(0x00d0, 2) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080219
+packetLen(0x00d0, -1) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080124
+packetLen(0x00d0, 182) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080102
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+#endif
+
+// Packet: 0x00d1
+#if PACKETVER >= 20080701
+packetLen(0x00d1, 26) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080624
+packetLen(0x00d1, -1) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080610
+packetLen(0x00d1, 6) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080603
+packetLen(0x00d1, 5) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080528
+packetLen(0x00d1, 10) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080520
+packetLen(0x00d1, -1) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080513
+packetLen(0x00d1, 54) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080507
+packetLen(0x00d1, -1) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080429
+packetLen(0x00d1, 3) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080422
+packetLen(0x00d1, -1) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080415
+packetLen(0x00d1, 43) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080408
+packetLen(0x00d1, 67) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080401
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080325
+packetLen(0x00d1, -1) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080318
+packetLen(0x00d1, 6) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080304
+packetLen(0x00d1, -1) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080226
+packetLen(0x00d1, 10) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080219
+packetLen(0x00d1, 13) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080124
+packetLen(0x00d1, 6) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080102
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+#endif
+
+// Packet: 0x00d2
+#if PACKETVER >= 20080701
+packetLen(0x00d2, 16) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080610
+packetLen(0x00d2, -1) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080603
+packetLen(0x00d2, 7) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080528
+packetLen(0x00d2, 11) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080520
+packetLen(0x00d2, 9) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080513
+packetLen(0x00d2, 6) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080507
+packetLen(0x00d2, -1) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080422
+packetLen(0x00d2, 10) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080415
+packetLen(0x00d2, 8) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080408
+packetLen(0x00d2, 6) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080401
+packetLen(0x00d2, -1) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080325
+packetLen(0x00d2, 7) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080318
+packetLen(0x00d2, 6) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080311
+packetLen(0x00d2, 30) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080304
+packetLen(0x00d2, 16) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080226
+packetLen(0x00d2, 14) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080219
+packetLen(0x00d2, 20) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080102
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+#endif
+
+// Packet: 0x00d3
+#if PACKETVER >= 20080701
+packetLen(0x00d3, -1) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080624
+packetLen(0x00d3, 6) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080603
+packetLen(0x00d3, -1) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080528
+packetLen(0x00d3, 6) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080520
+packetLen(0x00d3, 3) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080513
+packetLen(0x00d3, 26) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080429
+packetLen(0x00d3, 3) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080422
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080415
+packetLen(0x00d3, 20) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080408
+packetLen(0x00d3, 19) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080401
+packetLen(0x00d3, 33) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080325
+packetLen(0x00d3, 6) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080318
+packetLen(0x00d3, 12) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x00d3, 14) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x00d3, -1) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x00d3, 26) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080124
+packetLen(0x00d3, 6) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+#endif
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+#if PACKETVER >= 20080701
+packetLen(0x00d5, 7) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080603
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080528
+packetLen(0x00d5, 81) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080513
+packetLen(0x00d5, 8) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080507
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080429
+packetLen(0x00d5, 26) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080415
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080408
+packetLen(0x00d5, 60) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080401
+packetLen(0x00d5, 21) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080325
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080318
+packetLen(0x00d5, 114) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080311
+packetLen(0x00d5, 2) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080304
+packetLen(0x00d5, 3) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080226
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080219
+packetLen(0x00d5, 10) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080124
+packetLen(0x00d5, 7) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080102
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+#endif
+
+// Packet: 0x00d6
+#if PACKETVER >= 20080701
+packetLen(0x00d6, 15) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080624
+packetLen(0x00d6, 6) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080617
+packetLen(0x00d6, -1) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080610
+packetLen(0x00d6, 26) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080603
+packetLen(0x00d6, -1) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080528
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080520
+packetLen(0x00d6, 26) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080513
+packetLen(0x00d6, 16) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080429
+packetLen(0x00d6, -1) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080422
+packetLen(0x00d6, 282) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080415
+packetLen(0x00d6, 21) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080408
+packetLen(0x00d6, -1) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080401
+packetLen(0x00d6, 10) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080325
+packetLen(0x00d6, 58) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080318
+packetLen(0x00d6, 6) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080311
+packetLen(0x00d6, 8) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080304
+packetLen(0x00d6, 68) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080226
+packetLen(0x00d6, 30) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080219
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080124
+packetLen(0x00d6, -1) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080102
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+#endif
+
+// Packet: 0x00d7
+#if PACKETVER >= 20080701
+packetLen(0x00d7, 10) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080624
+packetLen(0x00d7, 26) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080603
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080528
+packetLen(0x00d7, 8) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080520
+packetLen(0x00d7, 9) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080513
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080507
+packetLen(0x00d7, 39) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080408
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080401
+packetLen(0x00d7, 8) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080325
+packetLen(0x00d7, 5) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080318
+packetLen(0x00d7, 4) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080311
+packetLen(0x00d7, 67) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x00d7, 24) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080226
+packetLen(0x00d7, 28) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080219
+packetLen(0x00d7, 3) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080124
+packetLen(0x00d7, 8) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+#endif
+
+// Packet: 0x00d8
+#if PACKETVER >= 20080617
+packetLen(0x00d8, -1) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080610
+packetLen(0x00d8, 30) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080603
+packetLen(0x00d8, -1) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080528
+packetLen(0x00d8, 5) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080520
+packetLen(0x00d8, 7) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080513
+packetLen(0x00d8, 53) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080507
+packetLen(0x00d8, 17) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080422
+packetLen(0x00d8, -1) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080415
+packetLen(0x00d8, 9) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080408
+packetLen(0x00d8, 26) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080325
+packetLen(0x00d8, 2) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080318
+packetLen(0x00d8, 30) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080311
+packetLen(0x00d8, 2) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080304
+packetLen(0x00d8, -1) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080226
+packetLen(0x00d8, 16) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080219
+packetLen(0x00d8, 2) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080124
+packetLen(0x00d8, 4) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080102
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+#endif
+
+// Packet: 0x00d9
+#if PACKETVER >= 20080603
+packetLen(0x00d9, -1) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080528
+packetLen(0x00d9, 4) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080520
+packetLen(0x00d9, 5) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080513
+packetLen(0x00d9, 10) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080507
+packetLen(0x00d9, 3) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080429
+packetLen(0x00d9, 6) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080422
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080401
+packetLen(0x00d9, -1) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080325
+packetLen(0x00d9, 6) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080318
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080311
+packetLen(0x00d9, 6) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080304
+packetLen(0x00d9, 7) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080226
+packetLen(0x00d9, 6) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080219
+packetLen(0x00d9, 3) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080124
+packetLen(0x00d9, 282) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080102
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+#endif
+
+// Packet: 0x00da
+#if PACKETVER >= 20080701
+packetLen(0x00da, -1) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080624
+packetLen(0x00da, 53) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080610
+packetLen(0x00da, -1) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080603
+packetLen(0x00da, 24) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080513
+packetLen(0x00da, -1) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080507
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080422
+packetLen(0x00da, -1) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080415
+packetLen(0x00da, 6) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080408
+packetLen(0x00da, 31) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080401
+packetLen(0x00da, 13) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080325
+packetLen(0x00da, -1) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080318
+packetLen(0x00da, 30) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080311
+packetLen(0x00da, 8) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080226
+packetLen(0x00da, 14) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080219
+packetLen(0x00da, 54) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080124
+packetLen(0x00da, 18) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080102
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+#endif
+
+// Packet: 0x00db
+#if PACKETVER >= 20080701
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080624
+packetLen(0x00db, 7) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080603
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080528
+packetLen(0x00db, 3) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080520
+packetLen(0x00db, 4) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080513
+packetLen(0x00db, 30) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080429
+packetLen(0x00db, 2) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080422
+packetLen(0x00db, 67) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080415
+packetLen(0x00db, 33) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080408
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080401
+packetLen(0x00db, 18) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080325
+packetLen(0x00db, 2) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080311
+packetLen(0x00db, 6) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080304
+packetLen(0x00db, 31) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080226
+packetLen(0x00db, 26) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080219
+packetLen(0x00db, 4) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080102
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+#endif
+
+// Packet: 0x00dc
+#if PACKETVER >= 20080701
+packetLen(0x00dc, 6) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080617
+packetLen(0x00dc, -1) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080610
+packetLen(0x00dc, 2) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080603
+packetLen(0x00dc, 11) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080528
+packetLen(0x00dc, 27) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080520
+packetLen(0x00dc, 30) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080513
+packetLen(0x00dc, 12) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080429
+packetLen(0x00dc, -1) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080422
+packetLen(0x00dc, 32) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080415
+packetLen(0x00dc, 6) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080408
+packetLen(0x00dc, -1) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080401
+packetLen(0x00dc, 30) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080325
+packetLen(0x00dc, -1) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080318
+packetLen(0x00dc, 29) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080311
+packetLen(0x00dc, 6) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x00dc, -1) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080226
+packetLen(0x00dc, 3) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080219
+packetLen(0x00dc, 29) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080124
+packetLen(0x00dc, 13) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+#endif
+
+// Packet: 0x00dd
+#if PACKETVER >= 20080701
+packetLen(0x00dd, 6) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080610
+packetLen(0x00dd, -1) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080603
+packetLen(0x00dd, 20) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080528
+packetLen(0x00dd, 7) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080520
+packetLen(0x00dd, 28) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080429
+packetLen(0x00dd, -1) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080422
+packetLen(0x00dd, 28) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080415
+packetLen(0x00dd, -1) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080408
+packetLen(0x00dd, 15) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080325
+packetLen(0x00dd, -1) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080318
+packetLen(0x00dd, 22) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080311
+packetLen(0x00dd, 10) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080304
+packetLen(0x00dd, 6) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080226
+packetLen(0x00dd, -1) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080219
+packetLen(0x00dd, 3) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080124
+packetLen(0x00dd, 8) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080102
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+#endif
+
+// Packet: 0x00de
+#if PACKETVER >= 20080701
+packetLen(0x00de, 5) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080624
+packetLen(0x00de, 54) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080603
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080528
+packetLen(0x00de, 57) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080520
+packetLen(0x00de, 4) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080513
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080507
+packetLen(0x00de, 15) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080429
+packetLen(0x00de, 11) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080415
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080408
+packetLen(0x00de, 18) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080401
+packetLen(0x00de, 5) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080325
+packetLen(0x00de, 6) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080318
+packetLen(0x00de, 8) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080304
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080226
+packetLen(0x00de, 6) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080219
+packetLen(0x00de, 34) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080124
+packetLen(0x00de, 3) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080102
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+#endif
+
+// Packet: 0x00df
+#if PACKETVER >= 20080701
+packetLen(0x00df, 34) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080624
+packetLen(0x00df, 11) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080617
+packetLen(0x00df, 30) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080610
+packetLen(0x00df, 10) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080603
+packetLen(0x00df, 4) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080528
+packetLen(0x00df, 90) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080520
+packetLen(0x00df, 23) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080513
+packetLen(0x00df, 6) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080507
+packetLen(0x00df, 3) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080429
+packetLen(0x00df, 8) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080422
+packetLen(0x00df, 12) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080415
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080408
+packetLen(0x00df, 282) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080401
+packetLen(0x00df, 3) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080325
+packetLen(0x00df, 5) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080318
+packetLen(0x00df, 23) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080304
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080226
+packetLen(0x00df, 9) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080219
+packetLen(0x00df, 7) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080124
+packetLen(0x00df, 27) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080102
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+#endif
+
+// Packet: 0x00e0
+#if PACKETVER >= 20080701
+packetLen(0x00e0, 9) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080617
+packetLen(0x00e0, -1) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080610
+packetLen(0x00e0, 6) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080603
+packetLen(0x00e0, 2) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080520
+packetLen(0x00e0, -1) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080513
+packetLen(0x00e0, 10) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080429
+packetLen(0x00e0, -1) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080422
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080415
+packetLen(0x00e0, 2) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080408
+packetLen(0x00e0, 4) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080401
+packetLen(0x00e0, 21) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080325
+packetLen(0x00e0, 71) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080318
+packetLen(0x00e0, 7) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080311
+packetLen(0x00e0, 2) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080304
+packetLen(0x00e0, 43) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080226
+packetLen(0x00e0, 2) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080219
+packetLen(0x00e0, 31) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080124
+packetLen(0x00e0, 18) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+#endif
+
+// Packet: 0x00e1
+#if PACKETVER >= 20080610
+packetLen(0x00e1, -1) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080528
+packetLen(0x00e1, 2) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080520
+packetLen(0x00e1, 20) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080513
+packetLen(0x00e1, -1) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080507
+packetLen(0x00e1, 4) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080429
+packetLen(0x00e1, 6) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080422
+packetLen(0x00e1, 43) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080415
+packetLen(0x00e1, -1) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080408
+packetLen(0x00e1, 2) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080401
+packetLen(0x00e1, 60) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080325
+packetLen(0x00e1, 22) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080318
+packetLen(0x00e1, 21) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080311
+packetLen(0x00e1, 2) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080304
+packetLen(0x00e1, 60) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080226
+packetLen(0x00e1, -1) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080219
+packetLen(0x00e1, 81) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080124
+packetLen(0x00e1, 12) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+#endif
+
+// Packet: 0x00e2
+#if PACKETVER >= 20080624
+packetLen(0x00e2, -1) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080617
+packetLen(0x00e2, 6) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080610
+packetLen(0x00e2, 282) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080603
+packetLen(0x00e2, -1) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080528
+packetLen(0x00e2, 6) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080520
+packetLen(0x00e2, -1) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080513
+packetLen(0x00e2, 2) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080507
+packetLen(0x00e2, -1) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080429
+packetLen(0x00e2, 6) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080422
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080415
+packetLen(0x00e2, 282) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080408
+packetLen(0x00e2, 11) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080401
+packetLen(0x00e2, 5) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080325
+packetLen(0x00e2, -1) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080318
+packetLen(0x00e2, 79) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080311
+packetLen(0x00e2, -1) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080304
+packetLen(0x00e2, 31) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080226
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080219
+packetLen(0x00e2, 30) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080124
+packetLen(0x00e2, 10) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080102
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+#endif
+
+// Packet: 0x00e3
+#if PACKETVER >= 20080701
+packetLen(0x00e3, 26) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080624
+packetLen(0x00e3, 6) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080617
+packetLen(0x00e3, 58) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080610
+packetLen(0x00e3, -1) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080603
+packetLen(0x00e3, 30) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080528
+packetLen(0x00e3, 35) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080429
+packetLen(0x00e3, -1) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080422
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080415
+packetLen(0x00e3, 8) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080408
+packetLen(0x00e3, -1) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080401
+packetLen(0x00e3, 58) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080325
+packetLen(0x00e3, 10) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080318
+packetLen(0x00e3, 7) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080311
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080304
+packetLen(0x00e3, -1) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080219
+packetLen(0x00e3, 12) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080124
+packetLen(0x00e3, 14) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080102
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+#endif
+
+// Packet: 0x00e4
+#if PACKETVER >= 20080701
+packetLen(0x00e4, -1) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080624
+packetLen(0x00e4, 36) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080617
+packetLen(0x00e4, 86) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080520
+packetLen(0x00e4, -1) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080513
+packetLen(0x00e4, 33) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080507
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080429
+packetLen(0x00e4, 58) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080422
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080415
+packetLen(0x00e4, 13) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080408
+packetLen(0x00e4, 10) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080401
+packetLen(0x00e4, 14) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080325
+packetLen(0x00e4, -1) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080318
+packetLen(0x00e4, 10) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00e4, 54) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00e4, 14) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080124
+packetLen(0x00e4, 7) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00e5
+#if PACKETVER >= 20080701
+packetLen(0x00e5, -1) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080624
+packetLen(0x00e5, 3) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080617
+packetLen(0x00e5, 28) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080610
+packetLen(0x00e5, -1) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080603
+packetLen(0x00e5, 2) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080528
+packetLen(0x00e5, -1) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080520
+packetLen(0x00e5, 6) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080507
+packetLen(0x00e5, -1) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080429
+packetLen(0x00e5, 28) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080422
+packetLen(0x00e5, 5) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080415
+packetLen(0x00e5, 3) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080408
+packetLen(0x00e5, 2) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080401
+packetLen(0x00e5, 10) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080325
+packetLen(0x00e5, 6) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080318
+packetLen(0x00e5, 5) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00e5, 10) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00e5, 6) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00e5, 11) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080124
+packetLen(0x00e5, 29) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00e6
+#if PACKETVER >= 20080701
+packetLen(0x00e6, 6) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080624
+packetLen(0x00e6, 14) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080617
+packetLen(0x00e6, 9) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080610
+packetLen(0x00e6, 6) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080603
+packetLen(0x00e6, 2) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080528
+packetLen(0x00e6, -1) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080520
+packetLen(0x00e6, 43) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080513
+packetLen(0x00e6, 26) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080507
+packetLen(0x00e6, 79) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080429
+packetLen(0x00e6, 11) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080422
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080408
+packetLen(0x00e6, -1) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080401
+packetLen(0x00e6, 67) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080325
+packetLen(0x00e6, -1) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080318
+packetLen(0x00e6, 15) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00e6, 16) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00e6, -1) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x00e6, 53) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00e6, 10) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080124
+packetLen(0x00e6, 114) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00e7
+#if PACKETVER >= 20080701
+packetLen(0x00e7, -1) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080624
+packetLen(0x00e7, 30) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080617
+packetLen(0x00e7, -1) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080610
+packetLen(0x00e7, 14) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080603
+packetLen(0x00e7, -1) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080528
+packetLen(0x00e7, 182) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080520
+packetLen(0x00e7, 14) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080513
+packetLen(0x00e7, -1) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080507
+packetLen(0x00e7, 90) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080429
+packetLen(0x00e7, 182) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080422
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080415
+packetLen(0x00e7, -1) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080408
+packetLen(0x00e7, 6) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080401
+packetLen(0x00e7, 4) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080325
+packetLen(0x00e7, 8) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080318
+packetLen(0x00e7, 6) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x00e7, 68) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080124
+packetLen(0x00e7, -1) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00e8
+#if PACKETVER >= 20080701
+packetLen(0x00e8, -1) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080624
+packetLen(0x00e8, 114) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080610
+packetLen(0x00e8, -1) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080603
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080528
+packetLen(0x00e8, 5) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080520
+packetLen(0x00e8, 66) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080513
+packetLen(0x00e8, 10) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080507
+packetLen(0x00e8, 86) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080429
+packetLen(0x00e8, -1) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080422
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080415
+packetLen(0x00e8, 6) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080408
+packetLen(0x00e8, -1) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080401
+packetLen(0x00e8, 2) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080325
+packetLen(0x00e8, 30) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080318
+packetLen(0x00e8, 4) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00e8, 6) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00e8, -1) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x00e8, 6) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00e8, 2) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080124
+packetLen(0x00e8, 26) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00e9
+#if PACKETVER >= 20080617
+packetLen(0x00e9, -1) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080610
+packetLen(0x00e9, 8) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080603
+packetLen(0x00e9, 4) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080520
+packetLen(0x00e9, -1) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080513
+packetLen(0x00e9, 2) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080422
+packetLen(0x00e9, -1) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080415
+packetLen(0x00e9, 7) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080408
+packetLen(0x00e9, 4) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080401
+packetLen(0x00e9, 8) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080325
+packetLen(0x00e9, 2) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080318
+packetLen(0x00e9, 6) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00e9, -1) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x00e9, 30) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00e9, 2) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080124
+packetLen(0x00e9, 21) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00ea
+#if PACKETVER >= 20080701
+packetLen(0x00ea, -1) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080624
+packetLen(0x00ea, 39) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080617
+packetLen(0x00ea, 90) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080603
+packetLen(0x00ea, -1) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080528
+packetLen(0x00ea, 30) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080520
+packetLen(0x00ea, 3) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080513
+packetLen(0x00ea, -1) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080507
+packetLen(0x00ea, 26) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080429
+packetLen(0x00ea, 6) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080422
+packetLen(0x00ea, -1) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080415
+packetLen(0x00ea, 4) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080408
+packetLen(0x00ea, -1) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080401
+packetLen(0x00ea, 15) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080325
+packetLen(0x00ea, 3) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080318
+packetLen(0x00ea, 2) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00ea, 10) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00ea, 6) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00ea, -1) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080124
+packetLen(0x00ea, 14) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00eb
+#if PACKETVER >= 20080624
+packetLen(0x00eb, -1) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080617
+packetLen(0x00eb, 5) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080610
+packetLen(0x00eb, -1) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080603
+packetLen(0x00eb, 54) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080528
+packetLen(0x00eb, -1) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080520
+packetLen(0x00eb, 11) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080513
+packetLen(0x00eb, 6) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080507
+packetLen(0x00eb, 36) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080429
+packetLen(0x00eb, -1) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080422
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080415
+packetLen(0x00eb, 5) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080408
+packetLen(0x00eb, 15) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080325
+packetLen(0x00eb, -1) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080318
+packetLen(0x00eb, 86) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00eb, 12) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00eb, 6) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x00eb, 19) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00eb, 17) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080124
+packetLen(0x00eb, 6) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00ec
+#if PACKETVER >= 20080701
+packetLen(0x00ec, 55) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080624
+packetLen(0x00ec, 4) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080610
+packetLen(0x00ec, 6) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080603
+packetLen(0x00ec, -1) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080528
+packetLen(0x00ec, 14) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080520
+packetLen(0x00ec, 81) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080513
+packetLen(0x00ec, 11) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080507
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080429
+packetLen(0x00ec, 34) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080422
+packetLen(0x00ec, 10) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080415
+packetLen(0x00ec, 14) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080408
+packetLen(0x00ec, -1) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080401
+packetLen(0x00ec, 11) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080325
+packetLen(0x00ec, 9) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080318
+packetLen(0x00ec, 30) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00ec, 20) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00ec, 2) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x00ec, 11) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00ec, -1) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080124
+packetLen(0x00ec, 9) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00ed
+#if PACKETVER >= 20080701
+packetLen(0x00ed, -1) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080624
+packetLen(0x00ed, 20) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080610
+packetLen(0x00ed, -1) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080603
+packetLen(0x00ed, 7) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080528
+packetLen(0x00ed, -1) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080520
+packetLen(0x00ed, 3) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080513
+packetLen(0x00ed, 8) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080507
+packetLen(0x00ed, 6) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080429
+packetLen(0x00ed, -1) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080422
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080415
+packetLen(0x00ed, 3) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080408
+packetLen(0x00ed, 5) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080401
+packetLen(0x00ed, 3) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080325
+packetLen(0x00ed, 7) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080318
+packetLen(0x00ed, 4) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00ed, -1) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00ed, 86) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x00ed, 30) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080124
+packetLen(0x00ed, -1) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00ee
+#if PACKETVER >= 20080701
+packetLen(0x00ee, 14) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080624
+packetLen(0x00ee, -1) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080617
+packetLen(0x00ee, 81) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080610
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080603
+packetLen(0x00ee, 6) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080528
+packetLen(0x00ee, 18) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080520
+packetLen(0x00ee, 3) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080429
+packetLen(0x00ee, -1) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080422
+packetLen(0x00ee, 3) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080415
+packetLen(0x00ee, 30) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080408
+packetLen(0x00ee, 8) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080401
+packetLen(0x00ee, 26) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080325
+packetLen(0x00ee, -1) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080318
+packetLen(0x00ee, 5) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00ee, 11) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00ee, 10) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x00ee, 90) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00ee, -1) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080124
+packetLen(0x00ee, 4) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00ef
+#if PACKETVER >= 20080701
+packetLen(0x00ef, -1) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080624
+packetLen(0x00ef, 10) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080617
+packetLen(0x00ef, 30) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080610
+packetLen(0x00ef, 9) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080603
+packetLen(0x00ef, 11) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080528
+packetLen(0x00ef, 30) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080520
+packetLen(0x00ef, 26) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080513
+packetLen(0x00ef, 28) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080507
+packetLen(0x00ef, 4) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080429
+packetLen(0x00ef, 7) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080422
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080408
+packetLen(0x00ef, -1) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080401
+packetLen(0x00ef, 57) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080325
+packetLen(0x00ef, 10) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080318
+packetLen(0x00ef, 90) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00ef, -1) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00ef, 6) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x00ef, -1) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080124
+packetLen(0x00ef, 7) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00f0
+#if PACKETVER >= 20080701
+packetLen(0x00f0, 11) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080617
+packetLen(0x00f0, -1) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080610
+packetLen(0x00f0, 60) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080603
+packetLen(0x00f0, 6) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080528
+packetLen(0x00f0, -1) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080520
+packetLen(0x00f0, 14) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080513
+packetLen(0x00f0, 43) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080429
+packetLen(0x00f0, -1) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080422
+packetLen(0x00f0, 30) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080415
+packetLen(0x00f0, 2) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080408
+packetLen(0x00f0, -1) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080401
+packetLen(0x00f0, 90) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080325
+packetLen(0x00f0, 24) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080318
+packetLen(0x00f0, 6) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00f0, 7) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00f0, 27) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080124
+packetLen(0x00f0, 6) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+#if PACKETVER >= 20080701
+packetLen(0x00f2, 4) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080624
+packetLen(0x00f2, -1) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080617
+packetLen(0x00f2, 10) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080610
+packetLen(0x00f2, 39) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080603
+packetLen(0x00f2, -1) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080528
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080520
+packetLen(0x00f2, -1) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080513
+packetLen(0x00f2, 39) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080507
+packetLen(0x00f2, 54) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080429
+packetLen(0x00f2, -1) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080422
+packetLen(0x00f2, 31) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080415
+packetLen(0x00f2, 10) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080408
+packetLen(0x00f2, -1) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080401
+packetLen(0x00f2, 86) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080325
+packetLen(0x00f2, 60) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080318
+packetLen(0x00f2, -1) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080311
+packetLen(0x00f2, 26) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080304
+packetLen(0x00f2, -1) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080226
+packetLen(0x00f2, 14) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080219
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080124
+packetLen(0x00f2, 13) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080102
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#endif
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+#if PACKETVER >= 20080624
+packetLen(0x00f4, -1) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080617
+packetLen(0x00f4, 11) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080528
+packetLen(0x00f4, -1) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080513
+packetLen(0x00f4, 3) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080507
+packetLen(0x00f4, 8) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080429
+packetLen(0x00f4, 2) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080422
+packetLen(0x00f4, 3) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080415
+packetLen(0x00f4, -1) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080408
+packetLen(0x00f4, 35) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080401
+packetLen(0x00f4, 282) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080325
+packetLen(0x00f4, 6) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080318
+packetLen(0x00f4, 8) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080311
+packetLen(0x00f4, 2) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080304
+packetLen(0x00f4, 8) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080226
+packetLen(0x00f4, 6) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080219
+packetLen(0x00f4, -1) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080124
+packetLen(0x00f4, 10) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080102
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+#endif
+
+// Packet: 0x00f5
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+#if PACKETVER >= 20080701
+packetLen(0x00f6, 11) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080624
+packetLen(0x00f6, 6) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080617
+packetLen(0x00f6, 26) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080610
+packetLen(0x00f6, 6) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080603
+packetLen(0x00f6, -1) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080528
+packetLen(0x00f6, 10) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080520
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080513
+packetLen(0x00f6, 6) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080422
+packetLen(0x00f6, -1) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080415
+packetLen(0x00f6, 4) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080408
+packetLen(0x00f6, 65) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080401
+packetLen(0x00f6, 7) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080325
+packetLen(0x00f6, 6) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080318
+packetLen(0x00f6, 2) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080311
+packetLen(0x00f6, 7) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080304
+packetLen(0x00f6, 65) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080226
+packetLen(0x00f6, -1) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080219
+packetLen(0x00f6, 23) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080124
+packetLen(0x00f6, 39) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080102
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+#endif
+
+// Packet: 0x00f7
+packetLen(0x00f7, 17) // CZ_REQUEST_TIME
+
+// Packet: 0x00f8
+#if PACKETVER >= 20080701
+packetLen(0x00f8, -1) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080624
+packetLen(0x00f8, 26) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080617
+packetLen(0x00f8, 17) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080610
+packetLen(0x00f8, 30) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080603
+packetLen(0x00f8, 10) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080528
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080513
+packetLen(0x00f8, -1) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080507
+packetLen(0x00f8, 6) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080422
+packetLen(0x00f8, -1) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080415
+packetLen(0x00f8, 6) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080408
+packetLen(0x00f8, -1) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080401
+packetLen(0x00f8, 3) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080325
+packetLen(0x00f8, 6) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080318
+packetLen(0x00f8, -1) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080311
+packetLen(0x00f8, 12) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080304
+packetLen(0x00f8, -1) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080226
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080219
+packetLen(0x00f8, 12) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080124
+packetLen(0x00f8, 43) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080102
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+#endif
+
+// Packet: 0x00f9
+#if PACKETVER >= 20080701
+packetLen(0x00f9, 6) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080610
+packetLen(0x00f9, -1) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080603
+packetLen(0x00f9, 10) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080528
+packetLen(0x00f9, 6) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080520
+packetLen(0x00f9, 3) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080513
+packetLen(0x00f9, -1) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080507
+packetLen(0x00f9, 5) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080429
+packetLen(0x00f9, -1) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080422
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080415
+packetLen(0x00f9, 13) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080408
+packetLen(0x00f9, 6) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080401
+packetLen(0x00f9, 8) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080325
+packetLen(0x00f9, -1) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080318
+packetLen(0x00f9, 10) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080311
+packetLen(0x00f9, 114) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080304
+packetLen(0x00f9, 12) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080226
+packetLen(0x00f9, 4) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080219
+packetLen(0x00f9, 8) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080124
+packetLen(0x00f9, 10) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080102
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+#endif
+
+// Packet: 0x00fa
+#if PACKETVER >= 20080603
+packetLen(0x00fa, -1) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080528
+packetLen(0x00fa, 8) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080520
+packetLen(0x00fa, -1) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080513
+packetLen(0x00fa, 4) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080507
+packetLen(0x00fa, 30) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080429
+packetLen(0x00fa, 26) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080422
+packetLen(0x00fa, -1) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080415
+packetLen(0x00fa, 15) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080408
+packetLen(0x00fa, 30) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080401
+packetLen(0x00fa, 29) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080325
+packetLen(0x00fa, 30) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080318
+packetLen(0x00fa, 10) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080311
+packetLen(0x00fa, -1) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080304
+packetLen(0x00fa, 20) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080226
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080219
+packetLen(0x00fa, 10) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080124
+packetLen(0x00fa, 6) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080102
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+#endif
+
+// Packet: 0x00fb
+#if PACKETVER >= 20080701
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080624
+packetLen(0x00fb, 26) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080617
+packetLen(0x00fb, 3) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080610
+packetLen(0x00fb, 4) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080603
+packetLen(0x00fb, 17) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080528
+packetLen(0x00fb, 4) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080520
+packetLen(0x00fb, 29) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080513
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080507
+packetLen(0x00fb, 28) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080429
+packetLen(0x00fb, 6) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080408
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080401
+packetLen(0x00fb, 3) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080318
+packetLen(0x00fb, 26) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x00fb, 2) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x00fb, 4) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x00fb, 5) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x00fb, 10) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080124
+packetLen(0x00fb, 5) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+#endif
+
+// Packet: 0x00fc
+#if PACKETVER >= 20080701
+packetLen(0x00fc, 22) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080610
+packetLen(0x00fc, -1) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080603
+packetLen(0x00fc, 18) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080528
+packetLen(0x00fc, -1) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080520
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080507
+packetLen(0x00fc, -1) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080429
+packetLen(0x00fc, 53) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080422
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080401
+packetLen(0x00fc, -1) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080325
+packetLen(0x00fc, 17) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080318
+packetLen(0x00fc, 27) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080311
+packetLen(0x00fc, 24) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080304
+packetLen(0x00fc, 30) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080226
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080219
+packetLen(0x00fc, 19) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080124
+packetLen(0x00fc, 2) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080102
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+#endif
+
+// Packet: 0x00fd
+#if PACKETVER >= 20080617
+packetLen(0x00fd, -1) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080610
+packetLen(0x00fd, 6) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080603
+packetLen(0x00fd, 97) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080528
+packetLen(0x00fd, 3) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080520
+packetLen(0x00fd, -1) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080513
+packetLen(0x00fd, 2) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080507
+packetLen(0x00fd, 8) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080415
+packetLen(0x00fd, -1) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080408
+packetLen(0x00fd, 2) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080401
+packetLen(0x00fd, -1) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080325
+packetLen(0x00fd, 8) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080318
+packetLen(0x00fd, 18) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080311
+packetLen(0x00fd, 3) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080304
+packetLen(0x00fd, -1) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080226
+packetLen(0x00fd, 20) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080219
+packetLen(0x00fd, 11) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080124
+packetLen(0x00fd, 42) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080102
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+#endif
+
+// Packet: 0x00fe
+#if PACKETVER >= 20080617
+packetLen(0x00fe, -1) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080610
+packetLen(0x00fe, 2) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080520
+packetLen(0x00fe, -1) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080513
+packetLen(0x00fe, 6) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080429
+packetLen(0x00fe, -1) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080422
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080415
+packetLen(0x00fe, -1) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080408
+packetLen(0x00fe, 6) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080401
+packetLen(0x00fe, 186) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080325
+packetLen(0x00fe, 4) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080318
+packetLen(0x00fe, 32) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080311
+packetLen(0x00fe, 4) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080304
+packetLen(0x00fe, 186) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080226
+packetLen(0x00fe, 7) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080219
+packetLen(0x00fe, 6) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080124
+packetLen(0x00fe, 4) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080102
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+#endif
+
+// Packet: 0x00ff
+#if PACKETVER >= 20080701
+packetLen(0x00ff, 5) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080610
+packetLen(0x00ff, -1) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080603
+packetLen(0x00ff, 7) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080528
+packetLen(0x00ff, -1) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080520
+packetLen(0x00ff, 4) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080513
+packetLen(0x00ff, 22) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080507
+packetLen(0x00ff, 282) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080429
+packetLen(0x00ff, 6) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080422
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080408
+packetLen(0x00ff, -1) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080401
+packetLen(0x00ff, 79) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080325
+packetLen(0x00ff, 2) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080318
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080311
+packetLen(0x00ff, 3) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080304
+packetLen(0x00ff, 59) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080226
+packetLen(0x00ff, 282) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080219
+packetLen(0x00ff, 6) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080124
+packetLen(0x00ff, 32) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080102
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+#endif
+
+// Packet: 0x0100
+#if PACKETVER >= 20080617
+packetLen(0x0100, -1) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080610
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080603
+packetLen(0x0100, -1) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080528
+packetLen(0x0100, 186) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080520
+packetLen(0x0100, 14) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080513
+packetLen(0x0100, 6) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080507
+packetLen(0x0100, 27) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080429
+packetLen(0x0100, 8) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080422
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080415
+packetLen(0x0100, 17) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080408
+packetLen(0x0100, -1) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080401
+packetLen(0x0100, 30) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080325
+packetLen(0x0100, 28) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080318
+packetLen(0x0100, 54) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080311
+packetLen(0x0100, 3) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080304
+packetLen(0x0100, 54) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080124
+packetLen(0x0100, 3) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080102
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+#endif
+
+// Packet: 0x0101
+#if PACKETVER >= 20080701
+packetLen(0x0101, 5) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080624
+packetLen(0x0101, 24) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080617
+packetLen(0x0101, -1) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080610
+packetLen(0x0101, 2) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080520
+packetLen(0x0101, -1) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080513
+packetLen(0x0101, 2) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080507
+packetLen(0x0101, 58) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080429
+packetLen(0x0101, 11) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080422
+packetLen(0x0101, 5) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080415
+packetLen(0x0101, -1) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080408
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080401
+packetLen(0x0101, 11) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080325
+packetLen(0x0101, 26) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080318
+packetLen(0x0101, 5) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080311
+packetLen(0x0101, 97) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080304
+packetLen(0x0101, 23) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080226
+packetLen(0x0101, 10) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080219
+packetLen(0x0101, -1) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080124
+packetLen(0x0101, 4) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+#endif
+
+// Packet: 0x0102
+#if PACKETVER >= 20080610
+packetLen(0x0102, -1) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080603
+packetLen(0x0102, 26) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080528
+packetLen(0x0102, 17) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080520
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080513
+packetLen(0x0102, 11) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080422
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080415
+packetLen(0x0102, 81) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080408
+packetLen(0x0102, 2) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080401
+packetLen(0x0102, -1) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080325
+packetLen(0x0102, 54) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080318
+packetLen(0x0102, 4) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080311
+packetLen(0x0102, 2) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080304
+packetLen(0x0102, 14) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080226
+packetLen(0x0102, 26) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080219
+packetLen(0x0102, 68) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080124
+packetLen(0x0102, 15) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+#endif
+
+// Packet: 0x0103
+#if PACKETVER >= 20080701
+packetLen(0x0103, -1) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080624
+packetLen(0x0103, 8) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080617
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080610
+packetLen(0x0103, -1) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080603
+packetLen(0x0103, 10) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080528
+packetLen(0x0103, 79) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080520
+packetLen(0x0103, 6) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080513
+packetLen(0x0103, 16) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080507
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080429
+packetLen(0x0103, 6) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080422
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080415
+packetLen(0x0103, -1) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080408
+packetLen(0x0103, 11) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080401
+packetLen(0x0103, 4) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080318
+packetLen(0x0103, -1) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080311
+packetLen(0x0103, 8) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080226
+packetLen(0x0103, -1) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080219
+packetLen(0x0103, 5) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080124
+packetLen(0x0103, 58) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080102
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+#endif
+
+// Packet: 0x0104
+#if PACKETVER >= 20080701
+packetLen(0x0104, -1) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080624
+packetLen(0x0104, 60) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080610
+packetLen(0x0104, -1) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080603
+packetLen(0x0104, 3) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080528
+packetLen(0x0104, 26) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080520
+packetLen(0x0104, 17) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080513
+packetLen(0x0104, 8) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080429
+packetLen(0x0104, -1) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080422
+packetLen(0x0104, 282) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080415
+packetLen(0x0104, 12) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080408
+packetLen(0x0104, 30) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080401
+packetLen(0x0104, 26) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080325
+packetLen(0x0104, 11) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080318
+packetLen(0x0104, 8) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080311
+packetLen(0x0104, 15) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080304
+packetLen(0x0104, 8) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080226
+packetLen(0x0104, 6) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080219
+packetLen(0x0104, 21) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080124
+packetLen(0x0104, 6) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080102
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+#endif
+
+// Packet: 0x0105
+#if PACKETVER >= 20080617
+packetLen(0x0105, -1) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080610
+packetLen(0x0105, 26) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080528
+packetLen(0x0105, 6) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080520
+packetLen(0x0105, 3) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080513
+packetLen(0x0105, 5) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080507
+packetLen(0x0105, -1) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080429
+packetLen(0x0105, 4) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080401
+packetLen(0x0105, -1) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080325
+packetLen(0x0105, 23) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080318
+packetLen(0x0105, 4) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080311
+packetLen(0x0105, 3) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080304
+packetLen(0x0105, 10) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080226
+packetLen(0x0105, 26) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080219
+packetLen(0x0105, 6) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080124
+packetLen(0x0105, -1) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080102
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+#endif
+
+// Packet: 0x0106
+#if PACKETVER >= 20080701
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080617
+packetLen(0x0106, -1) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080610
+packetLen(0x0106, 9) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080528
+packetLen(0x0106, -1) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080513
+packetLen(0x0106, 2) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080507
+packetLen(0x0106, -1) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080429
+packetLen(0x0106, 27) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080422
+packetLen(0x0106, 29) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080415
+packetLen(0x0106, 282) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080408
+packetLen(0x0106, -1) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080401
+packetLen(0x0106, 5) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080325
+packetLen(0x0106, -1) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080318
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080311
+packetLen(0x0106, 26) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080226
+packetLen(0x0106, -1) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080219
+packetLen(0x0106, 21) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080124
+packetLen(0x0106, 8) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080102
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+#endif
+
+// Packet: 0x0107
+#if PACKETVER >= 20080624
+packetLen(0x0107, -1) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080617
+packetLen(0x0107, 3) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080603
+packetLen(0x0107, -1) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080528
+packetLen(0x0107, 6) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080520
+packetLen(0x0107, -1) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080513
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080507
+packetLen(0x0107, 6) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080429
+packetLen(0x0107, 2) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080325
+packetLen(0x0107, -1) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080318
+packetLen(0x0107, 6) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080226
+packetLen(0x0107, -1) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080219
+packetLen(0x0107, 5) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080124
+packetLen(0x0107, 3) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080102
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+#endif
+
+// Packet: 0x0108
+#if PACKETVER >= 20080624
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080617
+packetLen(0x0108, 54) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080610
+packetLen(0x0108, 2) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080528
+packetLen(0x0108, 11) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080520
+packetLen(0x0108, 97) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080513
+packetLen(0x0108, 30) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080507
+packetLen(0x0108, 6) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080429
+packetLen(0x0108, 32) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080415
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080408
+packetLen(0x0108, 3) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080401
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080325
+packetLen(0x0108, 7) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080318
+packetLen(0x0108, 182) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080311
+packetLen(0x0108, 4) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080226
+packetLen(0x0108, 3) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080219
+packetLen(0x0108, 97) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080124
+packetLen(0x0108, 6) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080102
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+#endif
+
+// Packet: 0x0109
+#if PACKETVER >= 20080701
+packetLen(0x0109, 31) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080624
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080617
+packetLen(0x0109, 7) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080610
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080603
+packetLen(0x0109, 5) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080528
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080513
+packetLen(0x0109, 6) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080507
+packetLen(0x0109, 26) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080429
+packetLen(0x0109, 67) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080422
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080415
+packetLen(0x0109, 102) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080408
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080401
+packetLen(0x0109, 33) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080325
+packetLen(0x0109, 26) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080318
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080311
+packetLen(0x0109, 10) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080304
+packetLen(0x0109, 4) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080226
+packetLen(0x0109, 2) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080219
+packetLen(0x0109, 14) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080124
+packetLen(0x0109, 12) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080102
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+#endif
+
+// Packet: 0x010a
+#if PACKETVER >= 20080610
+packetLen(0x010a, -1) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080603
+packetLen(0x010a, 34) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080528
+packetLen(0x010a, 102) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080520
+packetLen(0x010a, 3) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080513
+packetLen(0x010a, 30) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080507
+packetLen(0x010a, 31) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080429
+packetLen(0x010a, -1) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080415
+packetLen(0x010a, 6) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080408
+packetLen(0x010a, 114) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080401
+packetLen(0x010a, 27) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080325
+packetLen(0x010a, 12) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080318
+packetLen(0x010a, 8) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x010a, -1) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x010a, 6) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x010a, -1) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080124
+packetLen(0x010a, 6) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+#endif
+
+// Packet: 0x010b
+#if PACKETVER >= 20080701
+packetLen(0x010b, 3) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080624
+packetLen(0x010b, -1) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080617
+packetLen(0x010b, 8) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080610
+packetLen(0x010b, 26) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080603
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080520
+packetLen(0x010b, -1) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080513
+packetLen(0x010b, 4) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080429
+packetLen(0x010b, 3) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080422
+packetLen(0x010b, -1) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080415
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080408
+packetLen(0x010b, -1) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080401
+packetLen(0x010b, 28) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080325
+packetLen(0x010b, -1) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080318
+packetLen(0x010b, 17) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080311
+packetLen(0x010b, 3) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080304
+packetLen(0x010b, 114) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080226
+packetLen(0x010b, 9) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080219
+packetLen(0x010b, 24) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080102
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+#endif
+
+// Packet: 0x010c
+#if PACKETVER >= 20080701
+packetLen(0x010c, 7) // ZC_MVP
+#elif PACKETVER >= 20080624
+packetLen(0x010c, 23) // ZC_MVP
+#elif PACKETVER >= 20080610
+packetLen(0x010c, -1) // ZC_MVP
+#elif PACKETVER >= 20080603
+packetLen(0x010c, 31) // ZC_MVP
+#elif PACKETVER >= 20080528
+packetLen(0x010c, 30) // ZC_MVP
+#elif PACKETVER >= 20080520
+packetLen(0x010c, 8) // ZC_MVP
+#elif PACKETVER >= 20080507
+packetLen(0x010c, 2) // ZC_MVP
+#elif PACKETVER >= 20080429
+packetLen(0x010c, -1) // ZC_MVP
+#elif PACKETVER >= 20080422
+packetLen(0x010c, 26) // ZC_MVP
+#elif PACKETVER >= 20080408
+packetLen(0x010c, -1) // ZC_MVP
+#elif PACKETVER >= 20080401
+packetLen(0x010c, 6) // ZC_MVP
+#elif PACKETVER >= 20080325
+packetLen(0x010c, 11) // ZC_MVP
+#elif PACKETVER >= 20080318
+packetLen(0x010c, -1) // ZC_MVP
+#elif PACKETVER >= 20080311
+packetLen(0x010c, 282) // ZC_MVP
+#elif PACKETVER >= 20080304
+packetLen(0x010c, 2) // ZC_MVP
+#elif PACKETVER >= 20080226
+packetLen(0x010c, 14) // ZC_MVP
+#elif PACKETVER >= 20080219
+packetLen(0x010c, -1) // ZC_MVP
+#elif PACKETVER >= 20080124
+packetLen(0x010c, 4) // ZC_MVP
+#elif PACKETVER >= 20080102
+packetLen(0x010c, 6) // ZC_MVP
+#endif
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+#if PACKETVER >= 20080701
+packetLen(0x010e, -1) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080624
+packetLen(0x010e, 33) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080617
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080610
+packetLen(0x010e, 8) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080603
+packetLen(0x010e, 6) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080528
+packetLen(0x010e, 2) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080520
+packetLen(0x010e, 6) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080513
+packetLen(0x010e, 14) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080507
+packetLen(0x010e, 10) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080429
+packetLen(0x010e, 67) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080415
+packetLen(0x010e, -1) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080408
+packetLen(0x010e, 12) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080401
+packetLen(0x010e, -1) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080325
+packetLen(0x010e, 30) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080318
+packetLen(0x010e, 53) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080311
+packetLen(0x010e, 71) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080304
+packetLen(0x010e, 26) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080226
+packetLen(0x010e, 7) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080219
+packetLen(0x010e, -1) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080124
+packetLen(0x010e, 6) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080102
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+#endif
+
+// Packet: 0x010f
+#if PACKETVER >= 20080701
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080624
+packetLen(0x010f, 2) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080617
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080610
+packetLen(0x010f, 30) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080603
+packetLen(0x010f, 5) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080528
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080520
+packetLen(0x010f, 6) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080513
+packetLen(0x010f, 17) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080507
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080429
+packetLen(0x010f, 11) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080422
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080415
+packetLen(0x010f, 4) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080408
+packetLen(0x010f, 8) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080325
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080318
+packetLen(0x010f, 6) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x010f, 2) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x010f, 17) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x010f, 30) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080124
+packetLen(0x010f, 11) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+#endif
+
+// Packet: 0x0110
+#if PACKETVER >= 20080617
+packetLen(0x0110, -1) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080610
+packetLen(0x0110, 3) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080603
+packetLen(0x0110, -1) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080528
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080520
+packetLen(0x0110, -1) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080513
+packetLen(0x0110, 4) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080507
+packetLen(0x0110, 3) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080408
+packetLen(0x0110, -1) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080401
+packetLen(0x0110, 6) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080325
+packetLen(0x0110, 35) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080318
+packetLen(0x0110, 8) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080311
+packetLen(0x0110, 4) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080226
+packetLen(0x0110, 8) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080219
+packetLen(0x0110, -1) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080124
+packetLen(0x0110, 2) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080102
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+#endif
+
+// Packet: 0x0111
+#if PACKETVER >= 20080701
+packetLen(0x0111, 17) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080624
+packetLen(0x0111, -1) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080617
+packetLen(0x0111, 2) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080610
+packetLen(0x0111, -1) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080603
+packetLen(0x0111, 11) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080528
+packetLen(0x0111, 23) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080507
+packetLen(0x0111, -1) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080429
+packetLen(0x0111, 10) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080422
+packetLen(0x0111, 4) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080415
+packetLen(0x0111, -1) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080408
+packetLen(0x0111, 26) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080401
+packetLen(0x0111, -1) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080325
+packetLen(0x0111, 282) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080318
+packetLen(0x0111, 23) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080311
+packetLen(0x0111, 6) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080304
+packetLen(0x0111, 4) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080226
+packetLen(0x0111, 60) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080219
+packetLen(0x0111, 32) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080124
+packetLen(0x0111, -1) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080102
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+#endif
+
+// Packet: 0x0112
+#if PACKETVER >= 20080701
+packetLen(0x0112, -1) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080624
+packetLen(0x0112, 15) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080617
+packetLen(0x0112, 59) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080610
+packetLen(0x0112, 6) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080603
+packetLen(0x0112, 14) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080528
+packetLen(0x0112, 7) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080520
+packetLen(0x0112, 30) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080513
+packetLen(0x0112, 10) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080429
+packetLen(0x0112, -1) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080422
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080408
+packetLen(0x0112, -1) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080401
+packetLen(0x0112, 6) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080325
+packetLen(0x0112, 11) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080318
+packetLen(0x0112, 6) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080311
+packetLen(0x0112, -1) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080304
+packetLen(0x0112, 29) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080226
+packetLen(0x0112, 13) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080219
+packetLen(0x0112, 7) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080124
+packetLen(0x0112, 26) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080102
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+#endif
+
+// Packet: 0x0113
+packetLen(0x0113, 25) // CZ_USE_SKILL
+
+// Packet: 0x0114
+#if PACKETVER >= 20080701
+packetLen(0x0114, 10) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080624
+packetLen(0x0114, -1) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080617
+packetLen(0x0114, 15) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080610
+packetLen(0x0114, 11) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080603
+packetLen(0x0114, 7) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080528
+packetLen(0x0114, 6) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080520
+packetLen(0x0114, 30) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080513
+packetLen(0x0114, -1) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080507
+packetLen(0x0114, 4) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080429
+packetLen(0x0114, 3) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080408
+packetLen(0x0114, -1) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080401
+packetLen(0x0114, 26) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080325
+packetLen(0x0114, 182) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080318
+packetLen(0x0114, 6) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080311
+packetLen(0x0114, -1) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080304
+packetLen(0x0114, 29) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080226
+packetLen(0x0114, 10) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080219
+packetLen(0x0114, -1) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080124
+packetLen(0x0114, 8) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080102
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+#endif
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+#if PACKETVER >= 20080603
+packetLen(0x0117, -1) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080528
+packetLen(0x0117, 6) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080520
+packetLen(0x0117, -1) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080513
+packetLen(0x0117, 5) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080507
+packetLen(0x0117, 6) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080422
+packetLen(0x0117, -1) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080415
+packetLen(0x0117, 29) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080408
+packetLen(0x0117, 28) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080401
+packetLen(0x0117, 26) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080325
+packetLen(0x0117, 29) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080318
+packetLen(0x0117, -1) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080311
+packetLen(0x0117, 11) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080304
+packetLen(0x0117, 6) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080226
+packetLen(0x0117, -1) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080219
+packetLen(0x0117, 10) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080124
+packetLen(0x0117, 8) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080102
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+#endif
+
+// Packet: 0x0118
+#if PACKETVER >= 20080701
+packetLen(0x0118, 67) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080617
+packetLen(0x0118, -1) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080610
+packetLen(0x0118, 22) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080603
+packetLen(0x0118, -1) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080528
+packetLen(0x0118, 8) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080520
+packetLen(0x0118, 90) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080513
+packetLen(0x0118, -1) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080507
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080429
+packetLen(0x0118, 29) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080422
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080401
+packetLen(0x0118, -1) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080325
+packetLen(0x0118, 14) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080318
+packetLen(0x0118, 5) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080311
+packetLen(0x0118, 282) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080304
+packetLen(0x0118, -1) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080226
+packetLen(0x0118, 54) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080219
+packetLen(0x0118, 7) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080124
+packetLen(0x0118, 54) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080102
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+#endif
+
+// Packet: 0x0119
+#if PACKETVER >= 20080603
+packetLen(0x0119, -1) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080528
+packetLen(0x0119, 10) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080520
+packetLen(0x0119, 4) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080513
+packetLen(0x0119, 23) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080415
+packetLen(0x0119, -1) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080408
+packetLen(0x0119, 6) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080401
+packetLen(0x0119, 17) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080325
+packetLen(0x0119, 2) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080318
+packetLen(0x0119, 3) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080311
+packetLen(0x0119, 8) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080304
+packetLen(0x0119, 282) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080226
+packetLen(0x0119, 2) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080219
+packetLen(0x0119, 58) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080124
+packetLen(0x0119, 6) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+#endif
+
+// Packet: 0x011a
+#if PACKETVER >= 20080701
+packetLen(0x011a, 11) // ZC_USE_SKILL
+#elif PACKETVER >= 20080624
+packetLen(0x011a, 3) // ZC_USE_SKILL
+#elif PACKETVER >= 20080617
+packetLen(0x011a, 6) // ZC_USE_SKILL
+#elif PACKETVER >= 20080610
+packetLen(0x011a, 26) // ZC_USE_SKILL
+#elif PACKETVER >= 20080603
+packetLen(0x011a, -1) // ZC_USE_SKILL
+#elif PACKETVER >= 20080528
+packetLen(0x011a, 8) // ZC_USE_SKILL
+#elif PACKETVER >= 20080520
+packetLen(0x011a, 6) // ZC_USE_SKILL
+#elif PACKETVER >= 20080513
+packetLen(0x011a, -1) // ZC_USE_SKILL
+#elif PACKETVER >= 20080507
+packetLen(0x011a, 3) // ZC_USE_SKILL
+#elif PACKETVER >= 20080429
+packetLen(0x011a, 17) // ZC_USE_SKILL
+#elif PACKETVER >= 20080408
+packetLen(0x011a, 4) // ZC_USE_SKILL
+#elif PACKETVER >= 20080401
+packetLen(0x011a, 8) // ZC_USE_SKILL
+#elif PACKETVER >= 20080325
+packetLen(0x011a, 36) // ZC_USE_SKILL
+#elif PACKETVER >= 20080318
+packetLen(0x011a, -1) // ZC_USE_SKILL
+#elif PACKETVER >= 20080311
+packetLen(0x011a, 6) // ZC_USE_SKILL
+#elif PACKETVER >= 20080304
+packetLen(0x011a, 2) // ZC_USE_SKILL
+#elif PACKETVER >= 20080226
+packetLen(0x011a, 10) // ZC_USE_SKILL
+#elif PACKETVER >= 20080219
+packetLen(0x011a, 11) // ZC_USE_SKILL
+#elif PACKETVER >= 20080124
+packetLen(0x011a, 2) // ZC_USE_SKILL
+#elif PACKETVER >= 20080102
+packetLen(0x011a, 15) // ZC_USE_SKILL
+#endif
+
+// Packet: 0x011b
+#if PACKETVER >= 20080528
+packetLen(0x011b, -1) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080520
+packetLen(0x011b, 2) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080513
+packetLen(0x011b, 58) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080507
+packetLen(0x011b, -1) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080429
+packetLen(0x011b, 10) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080422
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080415
+packetLen(0x011b, -1) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080408
+packetLen(0x011b, 4) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080401
+packetLen(0x011b, -1) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080325
+packetLen(0x011b, 39) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080311
+packetLen(0x011b, -1) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080304
+packetLen(0x011b, 58) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080226
+packetLen(0x011b, 2) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080124
+packetLen(0x011b, -1) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080102
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+#endif
+
+// Packet: 0x011c
+#if PACKETVER >= 20080617
+packetLen(0x011c, -1) // ZC_WARPLIST
+#elif PACKETVER >= 20080610
+packetLen(0x011c, 14) // ZC_WARPLIST
+#elif PACKETVER >= 20080603
+packetLen(0x011c, 8) // ZC_WARPLIST
+#elif PACKETVER >= 20080528
+packetLen(0x011c, -1) // ZC_WARPLIST
+#elif PACKETVER >= 20080520
+packetLen(0x011c, 2) // ZC_WARPLIST
+#elif PACKETVER >= 20080513
+packetLen(0x011c, 8) // ZC_WARPLIST
+#elif PACKETVER >= 20080507
+packetLen(0x011c, 282) // ZC_WARPLIST
+#elif PACKETVER >= 20080429
+packetLen(0x011c, 5) // ZC_WARPLIST
+#elif PACKETVER >= 20080422
+packetLen(0x011c, -1) // ZC_WARPLIST
+#elif PACKETVER >= 20080415
+packetLen(0x011c, 31) // ZC_WARPLIST
+#elif PACKETVER >= 20080408
+packetLen(0x011c, 3) // ZC_WARPLIST
+#elif PACKETVER >= 20080401
+packetLen(0x011c, 7) // ZC_WARPLIST
+#elif PACKETVER >= 20080325
+packetLen(0x011c, 26) // ZC_WARPLIST
+#elif PACKETVER >= 20080318
+packetLen(0x011c, 6) // ZC_WARPLIST
+#elif PACKETVER >= 20080311
+packetLen(0x011c, 3) // ZC_WARPLIST
+#elif PACKETVER >= 20080304
+packetLen(0x011c, 32) // ZC_WARPLIST
+#elif PACKETVER >= 20080226
+packetLen(0x011c, 6) // ZC_WARPLIST
+#elif PACKETVER >= 20080219
+packetLen(0x011c, 4) // ZC_WARPLIST
+#elif PACKETVER >= 20080124
+packetLen(0x011c, 2) // ZC_WARPLIST
+#elif PACKETVER >= 20080102
+packetLen(0x011c, 68) // ZC_WARPLIST
+#endif
+
+// Packet: 0x011d
+#if PACKETVER >= 20080624
+packetLen(0x011d, -1) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080617
+packetLen(0x011d, 10) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080610
+packetLen(0x011d, 28) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080603
+packetLen(0x011d, 3) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080528
+packetLen(0x011d, 14) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080520
+packetLen(0x011d, 23) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080513
+packetLen(0x011d, -1) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080507
+packetLen(0x011d, 81) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080422
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080415
+packetLen(0x011d, 6) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080408
+packetLen(0x011d, 4) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080325
+packetLen(0x011d, 10) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080318
+packetLen(0x011d, 7) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080311
+packetLen(0x011d, 3) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080304
+packetLen(0x011d, 7) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080219
+packetLen(0x011d, -1) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080124
+packetLen(0x011d, 26) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080102
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+#endif
+
+// Packet: 0x011e
+#if PACKETVER >= 20080624
+packetLen(0x011e, -1) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080617
+packetLen(0x011e, 33) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080610
+packetLen(0x011e, 5) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080603
+packetLen(0x011e, -1) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080528
+packetLen(0x011e, 6) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080513
+packetLen(0x011e, -1) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080507
+packetLen(0x011e, 9) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080429
+packetLen(0x011e, 10) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080422
+packetLen(0x011e, 282) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080415
+packetLen(0x011e, 30) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080408
+packetLen(0x011e, 32) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080401
+packetLen(0x011e, 9) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080325
+packetLen(0x011e, 18) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080318
+packetLen(0x011e, -1) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080311
+packetLen(0x011e, 6) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080304
+packetLen(0x011e, 18) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080219
+packetLen(0x011e, -1) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080124
+packetLen(0x011e, 7) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080102
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+#endif
+
+// Packet: 0x011f
+#if PACKETVER >= 20080701
+packetLen(0x011f, 11) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080624
+packetLen(0x011f, -1) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080617
+packetLen(0x011f, 30) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080610
+packetLen(0x011f, 10) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080603
+packetLen(0x011f, 3) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080528
+packetLen(0x011f, 282) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080520
+packetLen(0x011f, -1) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080513
+packetLen(0x011f, 30) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080507
+packetLen(0x011f, 6) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080429
+packetLen(0x011f, -1) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080422
+packetLen(0x011f, 12) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080415
+packetLen(0x011f, 2) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080408
+packetLen(0x011f, 6) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080401
+packetLen(0x011f, -1) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080325
+packetLen(0x011f, 10) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080318
+packetLen(0x011f, -1) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080311
+packetLen(0x011f, 60) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x011f, 2) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080226
+packetLen(0x011f, 8) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080219
+packetLen(0x011f, 5) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080124
+packetLen(0x011f, 2) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+#endif
+
+// Packet: 0x0120
+#if PACKETVER >= 20080701
+packetLen(0x0120, -1) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080624
+packetLen(0x0120, 27) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080617
+packetLen(0x0120, 14) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080610
+packetLen(0x0120, 79) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080603
+packetLen(0x0120, -1) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080528
+packetLen(0x0120, 28) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080520
+packetLen(0x0120, 5) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080513
+packetLen(0x0120, -1) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080507
+packetLen(0x0120, 54) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080429
+packetLen(0x0120, 7) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080422
+packetLen(0x0120, 4) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080408
+packetLen(0x0120, -1) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080401
+packetLen(0x0120, 5) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080318
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080311
+packetLen(0x0120, 5) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080304
+packetLen(0x0120, 54) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080226
+packetLen(0x0120, 7) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080219
+packetLen(0x0120, -1) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080124
+packetLen(0x0120, 39) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080102
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+#endif
+
+// Packet: 0x0121
+#if PACKETVER >= 20080701
+packetLen(0x0121, 8) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080624
+packetLen(0x0121, -1) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080610
+packetLen(0x0121, 5) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080603
+packetLen(0x0121, -1) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080528
+packetLen(0x0121, 4) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080520
+packetLen(0x0121, 26) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080513
+packetLen(0x0121, 27) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080507
+packetLen(0x0121, -1) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080429
+packetLen(0x0121, 60) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080415
+packetLen(0x0121, 6) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080408
+packetLen(0x0121, -1) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080401
+packetLen(0x0121, 2) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080325
+packetLen(0x0121, -1) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080318
+packetLen(0x0121, 29) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080311
+packetLen(0x0121, 2) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080304
+packetLen(0x0121, 29) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080226
+packetLen(0x0121, 282) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080219
+packetLen(0x0121, 6) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080124
+packetLen(0x0121, 60) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080102
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#endif
+
+// Packet: 0x0122
+#if PACKETVER >= 20080701
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080624
+packetLen(0x0122, 58) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080617
+packetLen(0x0122, 12) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080610
+packetLen(0x0122, 15) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080603
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080528
+packetLen(0x0122, 4) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080520
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080513
+packetLen(0x0122, 10) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080507
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080429
+packetLen(0x0122, 30) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080422
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080415
+packetLen(0x0122, 186) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080408
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080401
+packetLen(0x0122, 30) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080325
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080318
+packetLen(0x0122, 16) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x0122, 7) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x0122, 28) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x0122, 8) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+#endif
+
+// Packet: 0x0123
+#if PACKETVER >= 20080701
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080617
+packetLen(0x0123, 6) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080610
+packetLen(0x0123, 23) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080603
+packetLen(0x0123, 30) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080528
+packetLen(0x0123, 28) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080520
+packetLen(0x0123, 6) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080513
+packetLen(0x0123, 2) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080507
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080429
+packetLen(0x0123, 8) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080415
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080408
+packetLen(0x0123, 26) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080401
+packetLen(0x0123, 35) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080325
+packetLen(0x0123, 33) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080318
+packetLen(0x0123, 14) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x0123, 5) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x0123, 9) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x0123, 6) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x0123, 16) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080124
+packetLen(0x0123, 58) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+#endif
+
+// Packet: 0x0124
+#if PACKETVER >= 20080701
+packetLen(0x0124, -1) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080624
+packetLen(0x0124, 26) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080617
+packetLen(0x0124, 4) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080610
+packetLen(0x0124, 58) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080603
+packetLen(0x0124, 54) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080528
+packetLen(0x0124, 32) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080520
+packetLen(0x0124, -1) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080513
+packetLen(0x0124, 22) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080507
+packetLen(0x0124, 2) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080429
+packetLen(0x0124, 31) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080422
+packetLen(0x0124, 71) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080415
+packetLen(0x0124, 22) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080408
+packetLen(0x0124, 6) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080325
+packetLen(0x0124, -1) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080318
+packetLen(0x0124, 6) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080311
+packetLen(0x0124, 4) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080304
+packetLen(0x0124, 3) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080226
+packetLen(0x0124, 36) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080219
+packetLen(0x0124, 6) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080124
+packetLen(0x0124, 11) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080102
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+#endif
+
+// Packet: 0x0125
+#if PACKETVER >= 20080701
+packetLen(0x0125, 10) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080624
+packetLen(0x0125, 7) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080617
+packetLen(0x0125, 6) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080610
+packetLen(0x0125, 86) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080603
+packetLen(0x0125, 6) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080528
+packetLen(0x0125, 2) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080520
+packetLen(0x0125, 44) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080513
+packetLen(0x0125, 57) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080507
+packetLen(0x0125, 2) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080429
+packetLen(0x0125, 6) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080422
+packetLen(0x0125, 32) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080415
+packetLen(0x0125, 29) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080408
+packetLen(0x0125, -1) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080401
+packetLen(0x0125, 11) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080325
+packetLen(0x0125, 53) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080318
+packetLen(0x0125, 2) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080311
+packetLen(0x0125, -1) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080304
+packetLen(0x0125, 6) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080219
+packetLen(0x0125, -1) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080124
+packetLen(0x0125, 26) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080102
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+#endif
+
+// Packet: 0x0126
+#if PACKETVER >= 20080701
+packetLen(0x0126, 3) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080624
+packetLen(0x0126, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080617
+packetLen(0x0126, 43) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080610
+packetLen(0x0126, 97) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080603
+packetLen(0x0126, 12) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080507
+packetLen(0x0126, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080429
+packetLen(0x0126, 5) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080422
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080415
+packetLen(0x0126, 4) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080408
+packetLen(0x0126, 14) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080401
+packetLen(0x0126, 3) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080325
+packetLen(0x0126, 30) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080318
+packetLen(0x0126, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080311
+packetLen(0x0126, 7) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080304
+packetLen(0x0126, 27) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080226
+packetLen(0x0126, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080219
+packetLen(0x0126, 11) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080124
+packetLen(0x0126, 26) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080102
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#endif
+
+// Packet: 0x0127
+#if PACKETVER >= 20080701
+packetLen(0x0127, 9) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080528
+packetLen(0x0127, -1) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080520
+packetLen(0x0127, 2) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080513
+packetLen(0x0127, -1) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080507
+packetLen(0x0127, 6) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080429
+packetLen(0x0127, 10) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080422
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080415
+packetLen(0x0127, -1) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080408
+packetLen(0x0127, 26) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080401
+packetLen(0x0127, 2) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080325
+packetLen(0x0127, 6) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080318
+packetLen(0x0127, 67) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080311
+packetLen(0x0127, 5) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080304
+packetLen(0x0127, 18) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080226
+packetLen(0x0127, 12) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080219
+packetLen(0x0127, 4) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080124
+packetLen(0x0127, -1) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080102
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#endif
+
+// Packet: 0x0128
+#if PACKETVER >= 20080701
+packetLen(0x0128, 5) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080624
+packetLen(0x0128, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080617
+packetLen(0x0128, 3) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080610
+packetLen(0x0128, 31) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080603
+packetLen(0x0128, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080528
+packetLen(0x0128, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080520
+packetLen(0x0128, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080507
+packetLen(0x0128, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080429
+packetLen(0x0128, 13) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080422
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080415
+packetLen(0x0128, 22) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080408
+packetLen(0x0128, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080401
+packetLen(0x0128, 6) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080318
+packetLen(0x0128, 3) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080311
+packetLen(0x0128, 58) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080304
+packetLen(0x0128, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080226
+packetLen(0x0128, 17) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080124
+packetLen(0x0128, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080102
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#endif
+
+// Packet: 0x0129
+#if PACKETVER >= 20080701
+packetLen(0x0129, -1) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080624
+packetLen(0x0129, 182) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080617
+packetLen(0x0129, -1) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080610
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080603
+packetLen(0x0129, 6) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080520
+packetLen(0x0129, -1) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080513
+packetLen(0x0129, 7) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080507
+packetLen(0x0129, -1) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080429
+packetLen(0x0129, 4) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080422
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080415
+packetLen(0x0129, 60) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080408
+packetLen(0x0129, 6) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080401
+packetLen(0x0129, 14) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080325
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080318
+packetLen(0x0129, 3) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080304
+packetLen(0x0129, 4) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080226
+packetLen(0x0129, -1) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080219
+packetLen(0x0129, 10) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080124
+packetLen(0x0129, 28) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080102
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#endif
+
+// Packet: 0x012a
+#if PACKETVER >= 20080624
+packetLen(0x012a, -1) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080617
+packetLen(0x012a, 6) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080610
+packetLen(0x012a, -1) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080603
+packetLen(0x012a, 11) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080528
+packetLen(0x012a, 8) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080520
+packetLen(0x012a, 9) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080513
+packetLen(0x012a, 6) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080507
+packetLen(0x012a, 14) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080429
+packetLen(0x012a, 22) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080422
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080415
+packetLen(0x012a, 3) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080408
+packetLen(0x012a, 282) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080401
+packetLen(0x012a, -1) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080325
+packetLen(0x012a, 3) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080318
+packetLen(0x012a, 4) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080304
+packetLen(0x012a, 8) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080226
+packetLen(0x012a, 3) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080219
+packetLen(0x012a, 5) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080102
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+#endif
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+#if PACKETVER >= 20080610
+packetLen(0x012c, -1) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080603
+packetLen(0x012c, 5) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080528
+packetLen(0x012c, 58) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080520
+packetLen(0x012c, -1) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080513
+packetLen(0x012c, 2) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080507
+packetLen(0x012c, 10) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080429
+packetLen(0x012c, 39) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080422
+packetLen(0x012c, 8) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080415
+packetLen(0x012c, -1) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080408
+packetLen(0x012c, 30) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080401
+packetLen(0x012c, 8) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080325
+packetLen(0x012c, 4) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080318
+packetLen(0x012c, 10) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080311
+packetLen(0x012c, 14) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080304
+packetLen(0x012c, 30) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080226
+packetLen(0x012c, 20) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080219
+packetLen(0x012c, 9) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080124
+packetLen(0x012c, 19) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080102
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+#endif
+
+// Packet: 0x012d
+#if PACKETVER >= 20080701
+packetLen(0x012d, -1) // ZC_OPENSTORE
+#elif PACKETVER >= 20080624
+packetLen(0x012d, 26) // ZC_OPENSTORE
+#elif PACKETVER >= 20080617
+packetLen(0x012d, 3) // ZC_OPENSTORE
+#elif PACKETVER >= 20080610
+packetLen(0x012d, 8) // ZC_OPENSTORE
+#elif PACKETVER >= 20080603
+packetLen(0x012d, -1) // ZC_OPENSTORE
+#elif PACKETVER >= 20080528
+packetLen(0x012d, 30) // ZC_OPENSTORE
+#elif PACKETVER >= 20080520
+packetLen(0x012d, -1) // ZC_OPENSTORE
+#elif PACKETVER >= 20080513
+packetLen(0x012d, 34) // ZC_OPENSTORE
+#elif PACKETVER >= 20080507
+packetLen(0x012d, -1) // ZC_OPENSTORE
+#elif PACKETVER >= 20080429
+packetLen(0x012d, 4) // ZC_OPENSTORE
+#elif PACKETVER >= 20080422
+packetLen(0x012d, 81) // ZC_OPENSTORE
+#elif PACKETVER >= 20080415
+packetLen(0x012d, -1) // ZC_OPENSTORE
+#elif PACKETVER >= 20080408
+packetLen(0x012d, 33) // ZC_OPENSTORE
+#elif PACKETVER >= 20080401
+packetLen(0x012d, 3) // ZC_OPENSTORE
+#elif PACKETVER >= 20080325
+packetLen(0x012d, 6) // ZC_OPENSTORE
+#elif PACKETVER >= 20080318
+packetLen(0x012d, 2) // ZC_OPENSTORE
+#elif PACKETVER >= 20080311
+packetLen(0x012d, 30) // ZC_OPENSTORE
+#elif PACKETVER >= 20080304
+packetLen(0x012d, -1) // ZC_OPENSTORE
+#elif PACKETVER >= 20080219
+packetLen(0x012d, 14) // ZC_OPENSTORE
+#elif PACKETVER >= 20080124
+packetLen(0x012d, 26) // ZC_OPENSTORE
+#elif PACKETVER >= 20080102
+packetLen(0x012d, 4) // ZC_OPENSTORE
+#endif
+
+// Packet: 0x012e
+#if PACKETVER >= 20080701
+packetLen(0x012e, -1) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080624
+packetLen(0x012e, 6) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080617
+packetLen(0x012e, 31) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080520
+packetLen(0x012e, -1) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080513
+packetLen(0x012e, 5) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080507
+packetLen(0x012e, 102) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080429
+packetLen(0x012e, 3) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080422
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080415
+packetLen(0x012e, -1) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080408
+packetLen(0x012e, 26) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080401
+packetLen(0x012e, 7) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080325
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080318
+packetLen(0x012e, 4) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080311
+packetLen(0x012e, 14) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080304
+packetLen(0x012e, 6) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080219
+packetLen(0x012e, -1) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080102
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+#endif
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+#if PACKETVER >= 20080617
+packetLen(0x0130, -1) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080610
+packetLen(0x0130, 30) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080603
+packetLen(0x0130, 4) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080528
+packetLen(0x0130, -1) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080520
+packetLen(0x0130, 282) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080507
+packetLen(0x0130, -1) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080429
+packetLen(0x0130, 4) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080422
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080415
+packetLen(0x0130, 2) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080408
+packetLen(0x0130, -1) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080401
+packetLen(0x0130, 81) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080325
+packetLen(0x0130, 4) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080318
+packetLen(0x0130, 66) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080311
+packetLen(0x0130, -1) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080304
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080226
+packetLen(0x0130, 28) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080219
+packetLen(0x0130, 5) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080124
+packetLen(0x0130, 8) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080102
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+#endif
+
+// Packet: 0x0131
+#if PACKETVER >= 20080624
+packetLen(0x0131, -1) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080617
+packetLen(0x0131, 3) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080610
+packetLen(0x0131, 12) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080603
+packetLen(0x0131, 35) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080528
+packetLen(0x0131, -1) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080520
+packetLen(0x0131, 3) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080513
+packetLen(0x0131, -1) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080507
+packetLen(0x0131, 35) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080429
+packetLen(0x0131, 14) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080422
+packetLen(0x0131, 8) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080415
+packetLen(0x0131, 3) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080408
+packetLen(0x0131, -1) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080401
+packetLen(0x0131, 11) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080325
+packetLen(0x0131, 4) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080318
+packetLen(0x0131, 6) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080311
+packetLen(0x0131, -1) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x0131, 14) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080226
+packetLen(0x0131, 29) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080219
+packetLen(0x0131, 26) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080124
+packetLen(0x0131, -1) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+#endif
+
+// Packet: 0x0132
+#if PACKETVER >= 20080701
+packetLen(0x0132, -1) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080624
+packetLen(0x0132, 4) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080617
+packetLen(0x0132, 10) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080610
+packetLen(0x0132, 14) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080603
+packetLen(0x0132, 16) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080422
+packetLen(0x0132, -1) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080408
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080401
+packetLen(0x0132, -1) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080325
+packetLen(0x0132, 30) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080318
+packetLen(0x0132, 11) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080311
+packetLen(0x0132, -1) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x0132, 36) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080219
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080124
+packetLen(0x0132, 2) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+#endif
+
+// Packet: 0x0133
+#if PACKETVER >= 20080701
+packetLen(0x0133, 11) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080617
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080610
+packetLen(0x0133, 7) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080603
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080528
+packetLen(0x0133, 8) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080520
+packetLen(0x0133, 57) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080513
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080507
+packetLen(0x0133, 26) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080429
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080422
+packetLen(0x0133, 14) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080415
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080408
+packetLen(0x0133, 5) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080401
+packetLen(0x0133, 24) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080311
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080304
+packetLen(0x0133, 26) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080226
+packetLen(0x0133, 10) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080219
+packetLen(0x0133, 8) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080124
+packetLen(0x0133, 3) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080102
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#endif
+
+// Packet: 0x0134
+#if PACKETVER >= 20080701
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080624
+packetLen(0x0134, 29) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080617
+packetLen(0x0134, 8) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080610
+packetLen(0x0134, 67) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080603
+packetLen(0x0134, 30) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080528
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080520
+packetLen(0x0134, 7) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080513
+packetLen(0x0134, 282) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080507
+packetLen(0x0134, 16) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080422
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080415
+packetLen(0x0134, 71) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080408
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080401
+packetLen(0x0134, 28) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080325
+packetLen(0x0134, 7) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080318
+packetLen(0x0134, 20) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080311
+packetLen(0x0134, 26) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080226
+packetLen(0x0134, 3) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080219
+packetLen(0x0134, 4) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080102
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#endif
+
+// Packet: 0x0135
+#if PACKETVER >= 20080624
+packetLen(0x0135, -1) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080617
+packetLen(0x0135, 13) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080610
+packetLen(0x0135, -1) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080603
+packetLen(0x0135, 60) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080520
+packetLen(0x0135, -1) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080513
+packetLen(0x0135, 9) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080507
+packetLen(0x0135, 8) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080429
+packetLen(0x0135, 29) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080422
+packetLen(0x0135, 4) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080415
+packetLen(0x0135, 2) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080401
+packetLen(0x0135, -1) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080325
+packetLen(0x0135, 6) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080311
+packetLen(0x0135, 2) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080226
+packetLen(0x0135, 6) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080219
+packetLen(0x0135, 65) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080124
+packetLen(0x0135, -1) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080102
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+#endif
+
+// Packet: 0x0136
+#if PACKETVER >= 20080701
+packetLen(0x0136, 54) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080624
+packetLen(0x0136, 5) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080617
+packetLen(0x0136, 8) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080610
+packetLen(0x0136, 11) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080603
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080528
+packetLen(0x0136, 10) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080520
+packetLen(0x0136, 30) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080507
+packetLen(0x0136, 3) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080429
+packetLen(0x0136, 28) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080408
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080401
+packetLen(0x0136, 10) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080325
+packetLen(0x0136, 6) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080318
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x0136, 30) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x0136, 10) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x0136, 2) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+#endif
+
+// Packet: 0x0137
+#if PACKETVER >= 20080701
+packetLen(0x0137, 9) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080624
+packetLen(0x0137, -1) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080617
+packetLen(0x0137, 71) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080610
+packetLen(0x0137, -1) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080603
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080528
+packetLen(0x0137, 8) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080429
+packetLen(0x0137, -1) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080422
+packetLen(0x0137, 30) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080415
+packetLen(0x0137, 27) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080408
+packetLen(0x0137, 7) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080401
+packetLen(0x0137, -1) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080325
+packetLen(0x0137, 32) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080318
+packetLen(0x0137, 22) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080311
+packetLen(0x0137, 86) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080226
+packetLen(0x0137, 5) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080219
+packetLen(0x0137, 10) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080124
+packetLen(0x0137, 7) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080102
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+#endif
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+#if PACKETVER >= 20080701
+packetLen(0x0139, 26) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080624
+packetLen(0x0139, 10) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080617
+packetLen(0x0139, -1) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080610
+packetLen(0x0139, 5) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080603
+packetLen(0x0139, 2) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080513
+packetLen(0x0139, -1) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080507
+packetLen(0x0139, 9) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080429
+packetLen(0x0139, 28) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080422
+packetLen(0x0139, 29) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080415
+packetLen(0x0139, -1) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080408
+packetLen(0x0139, 11) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080401
+packetLen(0x0139, -1) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080325
+packetLen(0x0139, 3) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080318
+packetLen(0x0139, 14) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080311
+packetLen(0x0139, 31) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080304
+packetLen(0x0139, 6) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080226
+packetLen(0x0139, 81) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080219
+packetLen(0x0139, 6) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080124
+packetLen(0x0139, -1) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080102
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#endif
+
+// Packet: 0x013a
+#if PACKETVER >= 20080701
+packetLen(0x013a, -1) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080624
+packetLen(0x013a, 2) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080617
+packetLen(0x013a, 3) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080610
+packetLen(0x013a, 30) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080603
+packetLen(0x013a, 39) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080513
+packetLen(0x013a, -1) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080507
+packetLen(0x013a, 182) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080429
+packetLen(0x013a, 6) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080422
+packetLen(0x013a, -1) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080415
+packetLen(0x013a, 6) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080408
+packetLen(0x013a, 55) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080401
+packetLen(0x013a, 12) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080325
+packetLen(0x013a, 3) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080318
+packetLen(0x013a, -1) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080311
+packetLen(0x013a, 6) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080304
+packetLen(0x013a, 32) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080226
+packetLen(0x013a, 58) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080124
+packetLen(0x013a, -1) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080102
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+#endif
+
+// Packet: 0x013b
+#if PACKETVER >= 20080701
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080624
+packetLen(0x013b, 22) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080617
+packetLen(0x013b, -1) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080610
+packetLen(0x013b, 22) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080603
+packetLen(0x013b, -1) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080528
+packetLen(0x013b, 5) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080520
+packetLen(0x013b, 10) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080513
+packetLen(0x013b, 18) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080507
+packetLen(0x013b, 2) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080429
+packetLen(0x013b, -1) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080422
+packetLen(0x013b, 15) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080415
+packetLen(0x013b, 7) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080408
+packetLen(0x013b, 30) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080401
+packetLen(0x013b, 6) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080325
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080318
+packetLen(0x013b, 6) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080311
+packetLen(0x013b, 23) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080304
+packetLen(0x013b, 22) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080226
+packetLen(0x013b, 6) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080219
+packetLen(0x013b, 16) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080124
+packetLen(0x013b, 2) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080102
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+#endif
+
+// Packet: 0x013c
+#if PACKETVER >= 20080701
+packetLen(0x013c, 6) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080624
+packetLen(0x013c, -1) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080617
+packetLen(0x013c, 12) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080610
+packetLen(0x013c, -1) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080603
+packetLen(0x013c, 53) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080528
+packetLen(0x013c, 8) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080520
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080513
+packetLen(0x013c, 11) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080507
+packetLen(0x013c, 6) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080429
+packetLen(0x013c, -1) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080422
+packetLen(0x013c, 33) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080415
+packetLen(0x013c, 8) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080408
+packetLen(0x013c, 6) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080401
+packetLen(0x013c, 12) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080325
+packetLen(0x013c, 3) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080318
+packetLen(0x013c, -1) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080311
+packetLen(0x013c, 6) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080304
+packetLen(0x013c, 66) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080226
+packetLen(0x013c, -1) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080219
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080124
+packetLen(0x013c, 11) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080102
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+#endif
+
+// Packet: 0x013d
+#if PACKETVER >= 20080701
+packetLen(0x013d, -1) // ZC_RECOVERY
+#elif PACKETVER >= 20080624
+packetLen(0x013d, 3) // ZC_RECOVERY
+#elif PACKETVER >= 20080617
+packetLen(0x013d, -1) // ZC_RECOVERY
+#elif PACKETVER >= 20080610
+packetLen(0x013d, 7) // ZC_RECOVERY
+#elif PACKETVER >= 20080603
+packetLen(0x013d, 2) // ZC_RECOVERY
+#elif PACKETVER >= 20080528
+packetLen(0x013d, -1) // ZC_RECOVERY
+#elif PACKETVER >= 20080520
+packetLen(0x013d, 8) // ZC_RECOVERY
+#elif PACKETVER >= 20080513
+packetLen(0x013d, 31) // ZC_RECOVERY
+#elif PACKETVER >= 20080507
+packetLen(0x013d, -1) // ZC_RECOVERY
+#elif PACKETVER >= 20080429
+packetLen(0x013d, 10) // ZC_RECOVERY
+#elif PACKETVER >= 20080422
+packetLen(0x013d, -1) // ZC_RECOVERY
+#elif PACKETVER >= 20080415
+packetLen(0x013d, 26) // ZC_RECOVERY
+#elif PACKETVER >= 20080408
+packetLen(0x013d, -1) // ZC_RECOVERY
+#elif PACKETVER >= 20080401
+packetLen(0x013d, 6) // ZC_RECOVERY
+#elif PACKETVER >= 20080325
+packetLen(0x013d, 3) // ZC_RECOVERY
+#elif PACKETVER >= 20080318
+packetLen(0x013d, 282) // ZC_RECOVERY
+#elif PACKETVER >= 20080311
+packetLen(0x013d, 6) // ZC_RECOVERY
+#elif PACKETVER >= 20080304
+packetLen(0x013d, 3) // ZC_RECOVERY
+#elif PACKETVER >= 20080226
+packetLen(0x013d, 2) // ZC_RECOVERY
+#elif PACKETVER >= 20080219
+packetLen(0x013d, 6) // ZC_RECOVERY
+#elif PACKETVER >= 20080124
+packetLen(0x013d, -1) // ZC_RECOVERY
+#elif PACKETVER >= 20080102
+packetLen(0x013d, 6) // ZC_RECOVERY
+#endif
+
+// Packet: 0x013e
+#if PACKETVER >= 20080701
+packetLen(0x013e, 26) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080624
+packetLen(0x013e, 3) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080603
+packetLen(0x013e, -1) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080528
+packetLen(0x013e, 6) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080520
+packetLen(0x013e, 20) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080513
+packetLen(0x013e, 7) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080507
+packetLen(0x013e, 21) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080429
+packetLen(0x013e, 8) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080422
+packetLen(0x013e, 7) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080408
+packetLen(0x013e, 6) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080401
+packetLen(0x013e, -1) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080325
+packetLen(0x013e, 15) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080318
+packetLen(0x013e, 11) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080311
+packetLen(0x013e, 2) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080304
+packetLen(0x013e, 4) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080226
+packetLen(0x013e, -1) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080219
+packetLen(0x013e, 30) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080124
+packetLen(0x013e, -1) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080102
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+#endif
+
+// Packet: 0x013f
+#if PACKETVER >= 20080701
+packetLen(0x013f, 30) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080624
+packetLen(0x013f, -1) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080617
+packetLen(0x013f, 2) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080610
+packetLen(0x013f, 7) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080603
+packetLen(0x013f, 11) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080528
+packetLen(0x013f, 2) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080520
+packetLen(0x013f, -1) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080513
+packetLen(0x013f, 29) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080507
+packetLen(0x013f, 20) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080422
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080415
+packetLen(0x013f, -1) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080408
+packetLen(0x013f, 8) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080401
+packetLen(0x013f, -1) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080325
+packetLen(0x013f, 28) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080318
+packetLen(0x013f, 54) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080311
+packetLen(0x013f, 282) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080304
+packetLen(0x013f, 6) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080226
+packetLen(0x013f, 5) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080219
+packetLen(0x013f, 58) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080124
+packetLen(0x013f, 9) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080102
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+#endif
+
+// Packet: 0x0140
+#if PACKETVER >= 20080701
+packetLen(0x0140, -1) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080624
+packetLen(0x0140, 2) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080617
+packetLen(0x0140, -1) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080610
+packetLen(0x0140, 11) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080603
+packetLen(0x0140, -1) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080528
+packetLen(0x0140, 6) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080520
+packetLen(0x0140, 8) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080513
+packetLen(0x0140, 6) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080507
+packetLen(0x0140, 4) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080429
+packetLen(0x0140, 3) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080422
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080415
+packetLen(0x0140, 7) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080408
+packetLen(0x0140, 53) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080401
+packetLen(0x0140, 10) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080325
+packetLen(0x0140, 27) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080318
+packetLen(0x0140, 33) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080311
+packetLen(0x0140, 3) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080304
+packetLen(0x0140, 6) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080226
+packetLen(0x0140, 11) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080219
+packetLen(0x0140, -1) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080124
+packetLen(0x0140, 2) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080102
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+#endif
+
+// Packet: 0x0141
+#if PACKETVER >= 20080624
+packetLen(0x0141, 4) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080617
+packetLen(0x0141, -1) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080610
+packetLen(0x0141, 6) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080603
+packetLen(0x0141, 5) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080528
+packetLen(0x0141, 18) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080520
+packetLen(0x0141, 4) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080513
+packetLen(0x0141, -1) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080507
+packetLen(0x0141, 6) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080429
+packetLen(0x0141, 60) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080422
+packetLen(0x0141, -1) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080415
+packetLen(0x0141, 7) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080408
+packetLen(0x0141, -1) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080401
+packetLen(0x0141, 3) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080325
+packetLen(0x0141, -1) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080318
+packetLen(0x0141, 11) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080311
+packetLen(0x0141, 9) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080304
+packetLen(0x0141, 30) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080226
+packetLen(0x0141, 22) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080219
+packetLen(0x0141, 6) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080124
+packetLen(0x0141, 35) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080102
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+#endif
+
+// Packet: 0x0142
+#if PACKETVER >= 20080701
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080617
+packetLen(0x0142, -1) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080610
+packetLen(0x0142, 32) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080603
+packetLen(0x0142, 2) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080528
+packetLen(0x0142, -1) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080520
+packetLen(0x0142, 7) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080513
+packetLen(0x0142, 15) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080422
+packetLen(0x0142, -1) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080408
+packetLen(0x0142, 11) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080401
+packetLen(0x0142, 9) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080325
+packetLen(0x0142, 67) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080318
+packetLen(0x0142, 26) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080311
+packetLen(0x0142, 30) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080304
+packetLen(0x0142, 4) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080226
+packetLen(0x0142, -1) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080219
+packetLen(0x0142, 2) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080124
+packetLen(0x0142, 3) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080102
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+#endif
+
+// Packet: 0x0143
+#if PACKETVER >= 20080617
+packetLen(0x0143, -1) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080610
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080603
+packetLen(0x0143, 7) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080528
+packetLen(0x0143, 26) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080520
+packetLen(0x0143, -1) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080513
+packetLen(0x0143, 97) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080507
+packetLen(0x0143, 2) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080422
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080415
+packetLen(0x0143, 2) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080408
+packetLen(0x0143, 53) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080401
+packetLen(0x0143, 27) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080325
+packetLen(0x0143, 28) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080318
+packetLen(0x0143, -1) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080304
+packetLen(0x0143, 3) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080226
+packetLen(0x0143, 8) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080219
+packetLen(0x0143, -1) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080124
+packetLen(0x0143, 67) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080102
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+#endif
+
+// Packet: 0x0144
+#if PACKETVER >= 20080701
+packetLen(0x0144, -1) // ZC_COMPASS
+#elif PACKETVER >= 20080624
+packetLen(0x0144, 2) // ZC_COMPASS
+#elif PACKETVER >= 20080617
+packetLen(0x0144, -1) // ZC_COMPASS
+#elif PACKETVER >= 20080610
+packetLen(0x0144, 81) // ZC_COMPASS
+#elif PACKETVER >= 20080603
+packetLen(0x0144, 22) // ZC_COMPASS
+#elif PACKETVER >= 20080528
+packetLen(0x0144, 3) // ZC_COMPASS
+#elif PACKETVER >= 20080520
+packetLen(0x0144, -1) // ZC_COMPASS
+#elif PACKETVER >= 20080513
+packetLen(0x0144, 4) // ZC_COMPASS
+#elif PACKETVER >= 20080507
+packetLen(0x0144, 7) // ZC_COMPASS
+#elif PACKETVER >= 20080415
+packetLen(0x0144, -1) // ZC_COMPASS
+#elif PACKETVER >= 20080408
+packetLen(0x0144, 6) // ZC_COMPASS
+#elif PACKETVER >= 20080401
+packetLen(0x0144, 65) // ZC_COMPASS
+#elif PACKETVER >= 20080325
+packetLen(0x0144, 282) // ZC_COMPASS
+#elif PACKETVER >= 20080318
+packetLen(0x0144, 7) // ZC_COMPASS
+#elif PACKETVER >= 20080311
+packetLen(0x0144, 6) // ZC_COMPASS
+#elif PACKETVER >= 20080304
+packetLen(0x0144, 2) // ZC_COMPASS
+#elif PACKETVER >= 20080226
+packetLen(0x0144, 6) // ZC_COMPASS
+#elif PACKETVER >= 20080219
+packetLen(0x0144, 10) // ZC_COMPASS
+#elif PACKETVER >= 20080124
+packetLen(0x0144, 2) // ZC_COMPASS
+#elif PACKETVER >= 20080102
+packetLen(0x0144, 23) // ZC_COMPASS
+#endif
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+#if PACKETVER >= 20080624
+packetLen(0x0146, -1) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080617
+packetLen(0x0146, 23) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080610
+packetLen(0x0146, 5) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080603
+packetLen(0x0146, -1) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080528
+packetLen(0x0146, 10) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080513
+packetLen(0x0146, -1) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080507
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080429
+packetLen(0x0146, 65) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080422
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080408
+packetLen(0x0146, -1) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080401
+packetLen(0x0146, 10) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080325
+packetLen(0x0146, 2) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080318
+packetLen(0x0146, 42) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080311
+packetLen(0x0146, 10) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080226
+packetLen(0x0146, 7) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080219
+packetLen(0x0146, 10) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080124
+packetLen(0x0146, 8) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080102
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+#endif
+
+// Packet: 0x0147
+#if PACKETVER >= 20080701
+packetLen(0x0147, 282) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080624
+packetLen(0x0147, -1) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080617
+packetLen(0x0147, 18) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080610
+packetLen(0x0147, 8) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080528
+packetLen(0x0147, -1) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080520
+packetLen(0x0147, 114) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080513
+packetLen(0x0147, 282) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080507
+packetLen(0x0147, 4) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080429
+packetLen(0x0147, 20) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080422
+packetLen(0x0147, -1) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080415
+packetLen(0x0147, 8) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080401
+packetLen(0x0147, -1) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080325
+packetLen(0x0147, 90) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080311
+packetLen(0x0147, 6) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080304
+packetLen(0x0147, 16) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080226
+packetLen(0x0147, 11) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080219
+packetLen(0x0147, -1) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080124
+packetLen(0x0147, 2) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080102
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+#endif
+
+// Packet: 0x0148
+#if PACKETVER >= 20080617
+packetLen(0x0148, -1) // ZC_RESURRECTION
+#elif PACKETVER >= 20080610
+packetLen(0x0148, 2) // ZC_RESURRECTION
+#elif PACKETVER >= 20080528
+packetLen(0x0148, -1) // ZC_RESURRECTION
+#elif PACKETVER >= 20080513
+packetLen(0x0148, 6) // ZC_RESURRECTION
+#elif PACKETVER >= 20080507
+packetLen(0x0148, -1) // ZC_RESURRECTION
+#elif PACKETVER >= 20080429
+packetLen(0x0148, 14) // ZC_RESURRECTION
+#elif PACKETVER >= 20080422
+packetLen(0x0148, 2) // ZC_RESURRECTION
+#elif PACKETVER >= 20080415
+packetLen(0x0148, 39) // ZC_RESURRECTION
+#elif PACKETVER >= 20080408
+packetLen(0x0148, 10) // ZC_RESURRECTION
+#elif PACKETVER >= 20080401
+packetLen(0x0148, 7) // ZC_RESURRECTION
+#elif PACKETVER >= 20080325
+packetLen(0x0148, 10) // ZC_RESURRECTION
+#elif PACKETVER >= 20080318
+packetLen(0x0148, 6) // ZC_RESURRECTION
+#elif PACKETVER >= 20080311
+packetLen(0x0148, 54) // ZC_RESURRECTION
+#elif PACKETVER >= 20080304
+packetLen(0x0148, 282) // ZC_RESURRECTION
+#elif PACKETVER >= 20080226
+packetLen(0x0148, 6) // ZC_RESURRECTION
+#elif PACKETVER >= 20080219
+packetLen(0x0148, 4) // ZC_RESURRECTION
+#elif PACKETVER >= 20080124
+packetLen(0x0148, 3) // ZC_RESURRECTION
+#elif PACKETVER >= 20080102
+packetLen(0x0148, 8) // ZC_RESURRECTION
+#endif
+
+// Packet: 0x0149
+#if PACKETVER >= 20080701
+packetLen(0x0149, 14) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080624
+packetLen(0x0149, -1) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080610
+packetLen(0x0149, 8) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080603
+packetLen(0x0149, 7) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080528
+packetLen(0x0149, 6) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080520
+packetLen(0x0149, 27) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080513
+packetLen(0x0149, 71) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080429
+packetLen(0x0149, 6) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080422
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080415
+packetLen(0x0149, 5) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080408
+packetLen(0x0149, 17) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080401
+packetLen(0x0149, 6) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080325
+packetLen(0x0149, 2) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080318
+packetLen(0x0149, -1) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080311
+packetLen(0x0149, 6) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080304
+packetLen(0x0149, 5) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080226
+packetLen(0x0149, -1) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080219
+packetLen(0x0149, 53) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080124
+packetLen(0x0149, 4) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080102
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+#endif
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+#if PACKETVER >= 20080701
+packetLen(0x014c, 26) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080624
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080617
+packetLen(0x014c, 17) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080610
+packetLen(0x014c, 4) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080603
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080528
+packetLen(0x014c, 16) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080507
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080429
+packetLen(0x014c, 12) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080415
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080408
+packetLen(0x014c, 4) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080401
+packetLen(0x014c, 55) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080325
+packetLen(0x014c, 10) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080318
+packetLen(0x014c, 9) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080311
+packetLen(0x014c, 17) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080226
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080219
+packetLen(0x014c, 4) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080102
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+#endif
+
+// Packet: 0x014d
+#if PACKETVER >= 20080701
+packetLen(0x014d, -1) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080624
+packetLen(0x014d, 9) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080603
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080528
+packetLen(0x014d, 30) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080520
+packetLen(0x014d, 282) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080513
+packetLen(0x014d, -1) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080507
+packetLen(0x014d, 3) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080429
+packetLen(0x014d, 4) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080422
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080415
+packetLen(0x014d, 6) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080401
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080318
+packetLen(0x014d, 10) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080311
+packetLen(0x014d, 9) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080304
+packetLen(0x014d, 11) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080226
+packetLen(0x014d, 8) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080219
+packetLen(0x014d, 10) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080124
+packetLen(0x014d, 8) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080102
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+#endif
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+#if PACKETVER >= 20080617
+packetLen(0x014f, -1) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080603
+packetLen(0x014f, 3) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080528
+packetLen(0x014f, 13) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080507
+packetLen(0x014f, -1) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080429
+packetLen(0x014f, 23) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080422
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080408
+packetLen(0x014f, -1) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080401
+packetLen(0x014f, 58) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080325
+packetLen(0x014f, 4) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080318
+packetLen(0x014f, 3) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080304
+packetLen(0x014f, -1) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080226
+packetLen(0x014f, 97) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080219
+packetLen(0x014f, -1) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080124
+packetLen(0x014f, 30) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080102
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+#endif
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+#if PACKETVER >= 20080701
+packetLen(0x0154, 11) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080617
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080610
+packetLen(0x0154, 13) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080603
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080528
+packetLen(0x0154, 5) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080513
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080507
+packetLen(0x0154, 16) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080422
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080415
+packetLen(0x0154, 6) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080408
+packetLen(0x0154, 10) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080401
+packetLen(0x0154, 39) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080325
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080318
+packetLen(0x0154, 30) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080311
+packetLen(0x0154, 7) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080304
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080226
+packetLen(0x0154, 6) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080219
+packetLen(0x0154, 8) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080102
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+#endif
+
+// Packet: 0x0155
+#if PACKETVER >= 20080624
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080617
+packetLen(0x0155, 12) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080610
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080603
+packetLen(0x0155, 12) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080520
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080513
+packetLen(0x0155, 27) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080507
+packetLen(0x0155, 10) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080422
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080408
+packetLen(0x0155, 6) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080325
+packetLen(0x0155, 22) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080311
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080304
+packetLen(0x0155, 8) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080226
+packetLen(0x0155, 66) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080219
+packetLen(0x0155, 15) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080102
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+#endif
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0158
+packetLen(0x0158, -1) // ZC_ACK_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+#if PACKETVER >= 20080701
+packetLen(0x0159, 7) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080624
+packetLen(0x0159, 26) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080617
+packetLen(0x0159, -1) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080610
+packetLen(0x0159, 3) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080528
+packetLen(0x0159, -1) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080520
+packetLen(0x0159, 27) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080513
+packetLen(0x0159, -1) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080507
+packetLen(0x0159, 15) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080429
+packetLen(0x0159, 30) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080422
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080415
+packetLen(0x0159, -1) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080408
+packetLen(0x0159, 29) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080325
+packetLen(0x0159, -1) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080318
+packetLen(0x0159, 10) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x0159, 39) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x0159, 6) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x0159, 186) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x0159, -1) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080124
+packetLen(0x0159, 33) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+#endif
+
+// Packet: 0x015a
+#if PACKETVER >= 20080617
+packetLen(0x015a, -1) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080610
+packetLen(0x015a, 24) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080603
+packetLen(0x015a, 2) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080528
+packetLen(0x015a, 31) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080520
+packetLen(0x015a, -1) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080513
+packetLen(0x015a, 15) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080429
+packetLen(0x015a, -1) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080422
+packetLen(0x015a, 4) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080415
+packetLen(0x015a, -1) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080408
+packetLen(0x015a, 14) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080401
+packetLen(0x015a, 23) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080325
+packetLen(0x015a, 33) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080318
+packetLen(0x015a, 26) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x015a, 27) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x015a, 3) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x015a, 6) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x015a, 8) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080124
+packetLen(0x015a, 26) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+#endif
+
+// Packet: 0x015b
+#if PACKETVER >= 20080701
+packetLen(0x015b, 6) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080624
+packetLen(0x015b, -1) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080617
+packetLen(0x015b, 20) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080610
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080603
+packetLen(0x015b, 32) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080528
+packetLen(0x015b, -1) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080520
+packetLen(0x015b, 59) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080513
+packetLen(0x015b, 79) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080507
+packetLen(0x015b, 4) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080429
+packetLen(0x015b, -1) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080422
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080415
+packetLen(0x015b, 97) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080408
+packetLen(0x015b, 26) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080401
+packetLen(0x015b, 30) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080325
+packetLen(0x015b, 2) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080318
+packetLen(0x015b, 24) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x015b, 4) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x015b, 33) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x015b, 22) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x015b, 6) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080124
+packetLen(0x015b, -1) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+#endif
+
+// Packet: 0x015c
+#if PACKETVER >= 20080624
+packetLen(0x015c, -1) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080603
+packetLen(0x015c, 6) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080528
+packetLen(0x015c, -1) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080520
+packetLen(0x015c, 7) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080507
+packetLen(0x015c, 6) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080429
+packetLen(0x015c, 2) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080415
+packetLen(0x015c, 8) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080401
+packetLen(0x015c, -1) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080325
+packetLen(0x015c, 18) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080318
+packetLen(0x015c, 57) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x015c, 30) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x015c, 15) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x015c, 3) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x015c, 5) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080124
+packetLen(0x015c, 14) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+#endif
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+#if PACKETVER >= 20080701
+packetLen(0x015e, -1) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080624
+packetLen(0x015e, 30) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080610
+packetLen(0x015e, -1) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080603
+packetLen(0x015e, 4) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080520
+packetLen(0x015e, 3) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080513
+packetLen(0x015e, 2) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080507
+packetLen(0x015e, 9) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080429
+packetLen(0x015e, 10) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080422
+packetLen(0x015e, -1) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080415
+packetLen(0x015e, 32) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080408
+packetLen(0x015e, 30) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080401
+packetLen(0x015e, 10) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080325
+packetLen(0x015e, 15) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080318
+packetLen(0x015e, 28) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080311
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080304
+packetLen(0x015e, 3) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080226
+packetLen(0x015e, 54) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080219
+packetLen(0x015e, -1) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080124
+packetLen(0x015e, 16) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080102
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#endif
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+#if PACKETVER >= 20080701
+packetLen(0x0160, 5) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080624
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080617
+packetLen(0x0160, 11) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080610
+packetLen(0x0160, 5) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080603
+packetLen(0x0160, 186) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080528
+packetLen(0x0160, 2) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080520
+packetLen(0x0160, 8) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080507
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080429
+packetLen(0x0160, 6) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080408
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080401
+packetLen(0x0160, 8) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080325
+packetLen(0x0160, 4) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080318
+packetLen(0x0160, 14) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080304
+packetLen(0x0160, 26) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080226
+packetLen(0x0160, 2) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080219
+packetLen(0x0160, 102) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080124
+packetLen(0x0160, 6) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080102
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+#endif
+
+// Packet: 0x0161
+#if PACKETVER >= 20080701
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080624
+packetLen(0x0161, 16) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080617
+packetLen(0x0161, 2) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080610
+packetLen(0x0161, 5) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080603
+packetLen(0x0161, 16) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080528
+packetLen(0x0161, 6) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080520
+packetLen(0x0161, 2) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080513
+packetLen(0x0161, 6) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080507
+packetLen(0x0161, 4) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080422
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080415
+packetLen(0x0161, 15) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080408
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080401
+packetLen(0x0161, 6) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080325
+packetLen(0x0161, 282) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080318
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080311
+packetLen(0x0161, 30) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080304
+packetLen(0x0161, 7) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080226
+packetLen(0x0161, 21) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080219
+packetLen(0x0161, 2) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080124
+packetLen(0x0161, 8) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080102
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#endif
+
+// Packet: 0x0162
+#if PACKETVER >= 20080701
+packetLen(0x0162, 81) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080624
+packetLen(0x0162, 23) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080617
+packetLen(0x0162, 22) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080610
+packetLen(0x0162, 18) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080603
+packetLen(0x0162, 30) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080528
+packetLen(0x0162, 66) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080520
+packetLen(0x0162, 10) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080513
+packetLen(0x0162, 3) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080507
+packetLen(0x0162, 30) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080429
+packetLen(0x0162, 6) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080422
+packetLen(0x0162, 13) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080415
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080408
+packetLen(0x0162, 3) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080401
+packetLen(0x0162, 282) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080325
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080311
+packetLen(0x0162, 6) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080226
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080219
+packetLen(0x0162, 26) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080124
+packetLen(0x0162, 6) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080102
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+#endif
+
+// Packet: 0x0163
+#if PACKETVER >= 20080610
+packetLen(0x0163, -1) // ZC_BAN_LIST
+#elif PACKETVER >= 20080603
+packetLen(0x0163, 44) // ZC_BAN_LIST
+#elif PACKETVER >= 20080528
+packetLen(0x0163, 68) // ZC_BAN_LIST
+#elif PACKETVER >= 20080520
+packetLen(0x0163, -1) // ZC_BAN_LIST
+#elif PACKETVER >= 20080513
+packetLen(0x0163, 42) // ZC_BAN_LIST
+#elif PACKETVER >= 20080507
+packetLen(0x0163, -1) // ZC_BAN_LIST
+#elif PACKETVER >= 20080429
+packetLen(0x0163, 2) // ZC_BAN_LIST
+#elif PACKETVER >= 20080422
+packetLen(0x0163, 86) // ZC_BAN_LIST
+#elif PACKETVER >= 20080415
+packetLen(0x0163, 6) // ZC_BAN_LIST
+#elif PACKETVER >= 20080318
+packetLen(0x0163, -1) // ZC_BAN_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x0163, 8) // ZC_BAN_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x0163, 6) // ZC_BAN_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x0163, 4) // ZC_BAN_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x0163, 6) // ZC_BAN_LIST
+#elif PACKETVER >= 20080124
+packetLen(0x0163, 30) // ZC_BAN_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x0163, -1) // ZC_BAN_LIST
+#endif
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+#if PACKETVER >= 20080701
+packetLen(0x0165, 54) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080617
+packetLen(0x0165, -1) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080610
+packetLen(0x0165, 4) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080603
+packetLen(0x0165, -1) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080528
+packetLen(0x0165, 114) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080507
+packetLen(0x0165, -1) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080429
+packetLen(0x0165, 11) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080422
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080415
+packetLen(0x0165, 10) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080408
+packetLen(0x0165, 182) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080401
+packetLen(0x0165, 5) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080325
+packetLen(0x0165, 97) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080318
+packetLen(0x0165, 26) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x0165, 102) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x0165, -1) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x0165, 4) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x0165, 29) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080124
+packetLen(0x0165, 6) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+#endif
+
+// Packet: 0x0166
+#if PACKETVER >= 20080701
+packetLen(0x0166, 4) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080617
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080610
+packetLen(0x0166, 27) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080603
+packetLen(0x0166, 2) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080528
+packetLen(0x0166, 4) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080520
+packetLen(0x0166, 16) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080513
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080507
+packetLen(0x0166, 7) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080429
+packetLen(0x0166, 6) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080415
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080401
+packetLen(0x0166, 6) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080325
+packetLen(0x0166, 3) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080318
+packetLen(0x0166, 68) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080311
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080304
+packetLen(0x0166, 5) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080226
+packetLen(0x0166, 18) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080102
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+#endif
+
+// Packet: 0x0167
+#if PACKETVER >= 20080617
+packetLen(0x0167, -1) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080610
+packetLen(0x0167, 9) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080603
+packetLen(0x0167, 67) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080528
+packetLen(0x0167, 26) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080520
+packetLen(0x0167, 86) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080513
+packetLen(0x0167, 6) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080507
+packetLen(0x0167, 4) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080429
+packetLen(0x0167, -1) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080422
+packetLen(0x0167, 42) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080415
+packetLen(0x0167, 7) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080408
+packetLen(0x0167, -1) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080401
+packetLen(0x0167, 4) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080318
+packetLen(0x0167, 14) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x0167, 7) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x0167, 6) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x0167, 71) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x0167, 2) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080124
+packetLen(0x0167, 58) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+#endif
+
+// Packet: 0x0168
+#if PACKETVER >= 20080701
+packetLen(0x0168, 6) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080624
+packetLen(0x0168, 9) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080617
+packetLen(0x0168, -1) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080610
+packetLen(0x0168, 11) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080603
+packetLen(0x0168, -1) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080528
+packetLen(0x0168, 282) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080520
+packetLen(0x0168, 15) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080513
+packetLen(0x0168, 2) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080507
+packetLen(0x0168, 10) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080429
+packetLen(0x0168, -1) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080422
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080415
+packetLen(0x0168, 2) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080408
+packetLen(0x0168, -1) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080401
+packetLen(0x0168, 10) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080325
+packetLen(0x0168, 11) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080318
+packetLen(0x0168, -1) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x0168, 10) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x0168, 22) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x0168, 3) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x0168, 6) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080124
+packetLen(0x0168, 4) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+#endif
+
+// Packet: 0x0169
+#if PACKETVER >= 20080701
+packetLen(0x0169, 5) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080610
+packetLen(0x0169, -1) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080603
+packetLen(0x0169, 4) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080528
+packetLen(0x0169, 2) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080520
+packetLen(0x0169, -1) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080513
+packetLen(0x0169, 9) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080507
+packetLen(0x0169, 282) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080429
+packetLen(0x0169, 5) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080422
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080408
+packetLen(0x0169, -1) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080401
+packetLen(0x0169, 2) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080325
+packetLen(0x0169, 5) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080318
+packetLen(0x0169, 6) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x0169, -1) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x0169, 4) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x0169, 6) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080124
+packetLen(0x0169, -1) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+#endif
+
+// Packet: 0x016a
+#if PACKETVER >= 20080701
+packetLen(0x016a, -1) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080624
+packetLen(0x016a, 6) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080617
+packetLen(0x016a, 10) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080610
+packetLen(0x016a, 4) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080603
+packetLen(0x016a, -1) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080528
+packetLen(0x016a, 6) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080520
+packetLen(0x016a, 24) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080513
+packetLen(0x016a, 6) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080429
+packetLen(0x016a, -1) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080422
+packetLen(0x016a, 22) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080415
+packetLen(0x016a, -1) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080408
+packetLen(0x016a, 97) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080401
+packetLen(0x016a, 7) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080325
+packetLen(0x016a, -1) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080318
+packetLen(0x016a, 44) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x016a, 32) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x016a, 26) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x016a, 2) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x016a, 4) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080124
+packetLen(0x016a, 3) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+#endif
+
+// Packet: 0x016b
+#if PACKETVER >= 20080624
+packetLen(0x016b, -1) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080617
+packetLen(0x016b, 6) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080429
+packetLen(0x016b, -1) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080422
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080415
+packetLen(0x016b, 4) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080408
+packetLen(0x016b, 8) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080401
+packetLen(0x016b, -1) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080325
+packetLen(0x016b, 27) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080318
+packetLen(0x016b, -1) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x016b, 22) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x016b, 20) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x016b, 6) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x016b, -1) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080124
+packetLen(0x016b, 11) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+#endif
+
+// Packet: 0x016c
+#if PACKETVER >= 20080701
+packetLen(0x016c, 7) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080624
+packetLen(0x016c, 6) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080617
+packetLen(0x016c, 10) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080610
+packetLen(0x016c, 28) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080603
+packetLen(0x016c, -1) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080528
+packetLen(0x016c, 54) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080520
+packetLen(0x016c, 30) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080513
+packetLen(0x016c, 14) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080507
+packetLen(0x016c, -1) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080429
+packetLen(0x016c, 57) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080422
+packetLen(0x016c, 10) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080408
+packetLen(0x016c, -1) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080401
+packetLen(0x016c, 6) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080325
+packetLen(0x016c, 32) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080318
+packetLen(0x016c, 22) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080311
+packetLen(0x016c, 4) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080304
+packetLen(0x016c, 2) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080226
+packetLen(0x016c, 8) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080219
+packetLen(0x016c, 6) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080124
+packetLen(0x016c, 9) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080102
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+#endif
+
+// Packet: 0x016d
+#if PACKETVER >= 20080701
+packetLen(0x016d, 3) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080617
+packetLen(0x016d, -1) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080610
+packetLen(0x016d, 3) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080603
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080528
+packetLen(0x016d, -1) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080520
+packetLen(0x016d, 13) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080507
+packetLen(0x016d, -1) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080429
+packetLen(0x016d, 10) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080422
+packetLen(0x016d, -1) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080415
+packetLen(0x016d, 4) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080408
+packetLen(0x016d, 3) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080401
+packetLen(0x016d, 4) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080325
+packetLen(0x016d, 6) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080318
+packetLen(0x016d, 19) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080311
+packetLen(0x016d, 22) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080304
+packetLen(0x016d, 8) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080226
+packetLen(0x016d, 3) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080219
+packetLen(0x016d, 30) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080124
+packetLen(0x016d, 2) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080102
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+#endif
+
+// Packet: 0x016e
+#if PACKETVER >= 20080701
+packetLen(0x016e, -1) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080624
+packetLen(0x016e, 2) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080617
+packetLen(0x016e, 39) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080520
+packetLen(0x016e, -1) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080513
+packetLen(0x016e, 15) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080429
+packetLen(0x016e, -1) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080422
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080415
+packetLen(0x016e, 42) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080401
+packetLen(0x016e, -1) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080325
+packetLen(0x016e, 2) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080318
+packetLen(0x016e, 3) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080311
+packetLen(0x016e, 4) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080304
+packetLen(0x016e, 30) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080226
+packetLen(0x016e, 4) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080219
+packetLen(0x016e, 3) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080124
+packetLen(0x016e, -1) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080102
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+#endif
+
+// Packet: 0x016f
+#if PACKETVER >= 20080701
+packetLen(0x016f, 44) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080624
+packetLen(0x016f, -1) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080617
+packetLen(0x016f, 2) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080603
+packetLen(0x016f, -1) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080528
+packetLen(0x016f, 2) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080507
+packetLen(0x016f, -1) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080429
+packetLen(0x016f, 14) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080422
+packetLen(0x016f, -1) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080415
+packetLen(0x016f, 6) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080408
+packetLen(0x016f, 7) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080401
+packetLen(0x016f, -1) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080325
+packetLen(0x016f, 22) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080318
+packetLen(0x016f, 9) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080311
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080304
+packetLen(0x016f, 12) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080226
+packetLen(0x016f, 6) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080219
+packetLen(0x016f, 4) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080124
+packetLen(0x016f, 29) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080102
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+#endif
+
+// Packet: 0x0170
+#if PACKETVER >= 20080701
+packetLen(0x0170, -1) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080624
+packetLen(0x0170, 20) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080528
+packetLen(0x0170, -1) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080520
+packetLen(0x0170, 30) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080513
+packetLen(0x0170, 102) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080429
+packetLen(0x0170, 6) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080422
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080415
+packetLen(0x0170, 26) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080408
+packetLen(0x0170, 22) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080401
+packetLen(0x0170, 282) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080318
+packetLen(0x0170, 6) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x0170, 4) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x0170, 81) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x0170, 30) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x0170, 60) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080124
+packetLen(0x0170, -1) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+#endif
+
+// Packet: 0x0171
+#if PACKETVER >= 20080701
+packetLen(0x0171, 8) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080624
+packetLen(0x0171, 3) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080617
+packetLen(0x0171, -1) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080610
+packetLen(0x0171, 10) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080603
+packetLen(0x0171, 282) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080528
+packetLen(0x0171, 6) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080520
+packetLen(0x0171, 7) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080415
+packetLen(0x0171, -1) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080408
+packetLen(0x0171, 5) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080401
+packetLen(0x0171, 23) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080325
+packetLen(0x0171, 8) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080318
+packetLen(0x0171, -1) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x0171, 3) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x0171, 6) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x0171, 67) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x0171, 6) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080124
+packetLen(0x0171, 10) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+#endif
+
+// Packet: 0x0172
+#if PACKETVER >= 20080624
+packetLen(0x0172, -1) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080617
+packetLen(0x0172, 102) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080610
+packetLen(0x0172, 3) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080520
+packetLen(0x0172, -1) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080513
+packetLen(0x0172, 6) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080507
+packetLen(0x0172, 28) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080429
+packetLen(0x0172, -1) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080422
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080415
+packetLen(0x0172, 2) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080408
+packetLen(0x0172, -1) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080401
+packetLen(0x0172, 6) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080325
+packetLen(0x0172, 14) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080318
+packetLen(0x0172, -1) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x0172, 3) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x0172, 53) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x0172, -1) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x0172, 22) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080124
+packetLen(0x0172, 14) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+#endif
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+#if PACKETVER >= 20080701
+packetLen(0x0177, 2) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080624
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080617
+packetLen(0x0177, 4) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080610
+packetLen(0x0177, 31) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080603
+packetLen(0x0177, 58) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080528
+packetLen(0x0177, 4) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080513
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080507
+packetLen(0x0177, 30) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080429
+packetLen(0x0177, 26) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080422
+packetLen(0x0177, 28) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080415
+packetLen(0x0177, 114) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080408
+packetLen(0x0177, 10) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080401
+packetLen(0x0177, 4) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080325
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080318
+packetLen(0x0177, 11) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x0177, 27) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x0177, 34) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x0177, 3) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x0177, 2) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080124
+packetLen(0x0177, 30) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+#endif
+
+// Packet: 0x0178
+#if PACKETVER >= 20080624
+packetLen(0x0178, -1) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080617
+packetLen(0x0178, 10) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080603
+packetLen(0x0178, -1) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080528
+packetLen(0x0178, 33) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080520
+packetLen(0x0178, 7) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080513
+packetLen(0x0178, -1) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080429
+packetLen(0x0178, 6) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080415
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080408
+packetLen(0x0178, -1) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080401
+packetLen(0x0178, 7) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080325
+packetLen(0x0178, 6) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080318
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080311
+packetLen(0x0178, 11) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080304
+packetLen(0x0178, 6) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080226
+packetLen(0x0178, -1) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080219
+packetLen(0x0178, 30) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080124
+packetLen(0x0178, 68) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080102
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+#endif
+
+// Packet: 0x0179
+#if PACKETVER >= 20080701
+packetLen(0x0179, 59) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080624
+packetLen(0x0179, -1) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080617
+packetLen(0x0179, 6) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080610
+packetLen(0x0179, -1) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080603
+packetLen(0x0179, 27) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080528
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080520
+packetLen(0x0179, 11) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080513
+packetLen(0x0179, -1) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080507
+packetLen(0x0179, 43) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080429
+packetLen(0x0179, 6) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080422
+packetLen(0x0179, 55) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080415
+packetLen(0x0179, 4) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080408
+packetLen(0x0179, 6) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080401
+packetLen(0x0179, 10) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080325
+packetLen(0x0179, -1) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080318
+packetLen(0x0179, 8) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080311
+packetLen(0x0179, 2) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080304
+packetLen(0x0179, 6) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080219
+packetLen(0x0179, 3) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080124
+packetLen(0x0179, 15) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080102
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+#endif
+
+// Packet: 0x017a
+#if PACKETVER >= 20080701
+packetLen(0x017a, 29) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080610
+packetLen(0x017a, -1) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080603
+packetLen(0x017a, 28) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080528
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080520
+packetLen(0x017a, 6) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080513
+packetLen(0x017a, -1) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080507
+packetLen(0x017a, 6) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080429
+packetLen(0x017a, 5) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080415
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080408
+packetLen(0x017a, 2) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080401
+packetLen(0x017a, 31) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080325
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080318
+packetLen(0x017a, 8) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x017a, 6) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x017a, 13) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x017a, 30) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080124
+packetLen(0x017a, 7) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+#endif
+
+// Packet: 0x017b
+#if PACKETVER >= 20080701
+packetLen(0x017b, 2) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080617
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080610
+packetLen(0x017b, 2) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080603
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080528
+packetLen(0x017b, 4) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080520
+packetLen(0x017b, 68) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080513
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080507
+packetLen(0x017b, 53) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080429
+packetLen(0x017b, 8) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080415
+packetLen(0x017b, 6) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080408
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080401
+packetLen(0x017b, 6) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080325
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080318
+packetLen(0x017b, 11) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x017b, 3) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x017b, 4) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x017b, 9) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x017b, 18) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080124
+packetLen(0x017b, 3) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+#endif
+
+// Packet: 0x017c
+#if PACKETVER >= 20080701
+packetLen(0x017c, -1) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080624
+packetLen(0x017c, 55) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080617
+packetLen(0x017c, 26) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080610
+packetLen(0x017c, -1) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080603
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080528
+packetLen(0x017c, 21) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080520
+packetLen(0x017c, 39) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080513
+packetLen(0x017c, 7) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080422
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080408
+packetLen(0x017c, -1) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080401
+packetLen(0x017c, 31) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080311
+packetLen(0x017c, -1) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080304
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080226
+packetLen(0x017c, -1) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080219
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080124
+packetLen(0x017c, -1) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080102
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+#endif
+
+// Packet: 0x017d
+#if PACKETVER >= 20080701
+packetLen(0x017d, 33) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080610
+packetLen(0x017d, -1) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080603
+packetLen(0x017d, 3) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080528
+packetLen(0x017d, -1) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080520
+packetLen(0x017d, 4) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080422
+packetLen(0x017d, -1) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080415
+packetLen(0x017d, 11) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080408
+packetLen(0x017d, 6) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080401
+packetLen(0x017d, 8) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080325
+packetLen(0x017d, -1) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080318
+packetLen(0x017d, 28) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080311
+packetLen(0x017d, 34) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080304
+packetLen(0x017d, 30) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080219
+packetLen(0x017d, 8) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080124
+packetLen(0x017d, 10) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080102
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+#endif
+
+// Packet: 0x017e
+#if PACKETVER >= 20080701
+packetLen(0x017e, 4) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080624
+packetLen(0x017e, 6) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080617
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080610
+packetLen(0x017e, 2) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080603
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080528
+packetLen(0x017e, 29) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080520
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080513
+packetLen(0x017e, 3) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080507
+packetLen(0x017e, 32) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080429
+packetLen(0x017e, 3) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080422
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080415
+packetLen(0x017e, 14) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080408
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080401
+packetLen(0x017e, 4) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080325
+packetLen(0x017e, 14) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080318
+packetLen(0x017e, 3) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080311
+packetLen(0x017e, 31) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080304
+packetLen(0x017e, 10) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080226
+packetLen(0x017e, 7) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080219
+packetLen(0x017e, 28) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080124
+packetLen(0x017e, 7) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080102
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+#endif
+
+// Packet: 0x017f
+#if PACKETVER >= 20080624
+packetLen(0x017f, 2) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080520
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080513
+packetLen(0x017f, 54) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080507
+packetLen(0x017f, 11) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080429
+packetLen(0x017f, 4) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080415
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080408
+packetLen(0x017f, 20) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080401
+packetLen(0x017f, 6) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080325
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080318
+packetLen(0x017f, 4) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080311
+packetLen(0x017f, 35) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080304
+packetLen(0x017f, 14) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080226
+packetLen(0x017f, 30) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080219
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080124
+packetLen(0x017f, 30) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080102
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+#endif
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+#if PACKETVER >= 20080617
+packetLen(0x0188, -1) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080610
+packetLen(0x0188, 29) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080603
+packetLen(0x0188, 14) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080528
+packetLen(0x0188, 3) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080520
+packetLen(0x0188, -1) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080513
+packetLen(0x0188, 10) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080507
+packetLen(0x0188, 2) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080415
+packetLen(0x0188, -1) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080408
+packetLen(0x0188, 7) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080401
+packetLen(0x0188, 6) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080325
+packetLen(0x0188, 30) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080318
+packetLen(0x0188, 3) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080311
+packetLen(0x0188, -1) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080304
+packetLen(0x0188, 2) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080226
+packetLen(0x0188, 30) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080219
+packetLen(0x0188, 27) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080124
+packetLen(0x0188, -1) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080102
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+#endif
+
+// Packet: 0x0189
+#if PACKETVER >= 20080624
+packetLen(0x0189, -1) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080617
+packetLen(0x0189, 55) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080610
+packetLen(0x0189, -1) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080603
+packetLen(0x0189, 7) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080528
+packetLen(0x0189, 24) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080520
+packetLen(0x0189, -1) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080513
+packetLen(0x0189, 10) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080415
+packetLen(0x0189, -1) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080408
+packetLen(0x0189, 58) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080401
+packetLen(0x0189, -1) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080325
+packetLen(0x0189, 31) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080318
+packetLen(0x0189, 30) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080311
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080304
+packetLen(0x0189, -1) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080226
+packetLen(0x0189, 17) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080219
+packetLen(0x0189, 8) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080124
+packetLen(0x0189, -1) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080102
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+#endif
+
+// Packet: 0x018a
+#if PACKETVER >= 20080701
+packetLen(0x018a, 6) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080624
+packetLen(0x018a, 14) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080617
+packetLen(0x018a, 18) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080610
+packetLen(0x018a, -1) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080603
+packetLen(0x018a, 2) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080528
+packetLen(0x018a, -1) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080520
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080429
+packetLen(0x018a, -1) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080422
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080415
+packetLen(0x018a, 2) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080408
+packetLen(0x018a, -1) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080401
+packetLen(0x018a, 32) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080325
+packetLen(0x018a, 6) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080318
+packetLen(0x018a, 14) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080311
+packetLen(0x018a, -1) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080304
+packetLen(0x018a, 7) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080226
+packetLen(0x018a, 2) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080219
+packetLen(0x018a, 7) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080124
+packetLen(0x018a, 5) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080102
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+#endif
+
+// Packet: 0x018b
+#if PACKETVER >= 20080701
+packetLen(0x018b, 66) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080610
+packetLen(0x018b, -1) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080603
+packetLen(0x018b, 182) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080528
+packetLen(0x018b, 12) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080520
+packetLen(0x018b, -1) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080513
+packetLen(0x018b, 3) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080507
+packetLen(0x018b, -1) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080429
+packetLen(0x018b, 102) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080408
+packetLen(0x018b, -1) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080401
+packetLen(0x018b, 3) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080325
+packetLen(0x018b, 6) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080318
+packetLen(0x018b, 30) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080311
+packetLen(0x018b, 7) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080304
+packetLen(0x018b, -1) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080226
+packetLen(0x018b, 10) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080124
+packetLen(0x018b, 6) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080102
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+#endif
+
+// Packet: 0x018c
+#if PACKETVER >= 20080701
+packetLen(0x018c, 14) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080624
+packetLen(0x018c, 8) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080617
+packetLen(0x018c, 31) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080610
+packetLen(0x018c, 282) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080603
+packetLen(0x018c, 8) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080528
+packetLen(0x018c, -1) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080520
+packetLen(0x018c, 102) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080513
+packetLen(0x018c, -1) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080507
+packetLen(0x018c, 21) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080401
+packetLen(0x018c, -1) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080325
+packetLen(0x018c, 8) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080318
+packetLen(0x018c, 6) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080304
+packetLen(0x018c, -1) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080226
+packetLen(0x018c, 2) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080219
+packetLen(0x018c, -1) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080124
+packetLen(0x018c, 6) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080102
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+#endif
+
+// Packet: 0x018d
+#if PACKETVER >= 20080701
+packetLen(0x018d, 2) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080624
+packetLen(0x018d, 8) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080617
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080610
+packetLen(0x018d, 65) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080603
+packetLen(0x018d, 9) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080520
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080513
+packetLen(0x018d, 2) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080507
+packetLen(0x018d, 6) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080429
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080422
+packetLen(0x018d, 59) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080415
+packetLen(0x018d, 79) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080408
+packetLen(0x018d, 7) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080401
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080318
+packetLen(0x018d, 6) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x018d, 8) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x018d, 39) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x018d, 22) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x018d, 4) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+#endif
+
+// Packet: 0x018e
+#if PACKETVER >= 20080701
+packetLen(0x018e, -1) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080624
+packetLen(0x018e, 14) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080617
+packetLen(0x018e, -1) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080610
+packetLen(0x018e, 59) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080603
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080528
+packetLen(0x018e, 5) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080520
+packetLen(0x018e, 11) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080513
+packetLen(0x018e, 2) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080429
+packetLen(0x018e, -1) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080422
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080415
+packetLen(0x018e, -1) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080408
+packetLen(0x018e, 27) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080401
+packetLen(0x018e, 3) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080325
+packetLen(0x018e, -1) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080318
+packetLen(0x018e, 65) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080311
+packetLen(0x018e, -1) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080304
+packetLen(0x018e, 58) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080226
+packetLen(0x018e, 4) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080219
+packetLen(0x018e, 39) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080124
+packetLen(0x018e, 3) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080102
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+#endif
+
+// Packet: 0x018f
+#if PACKETVER >= 20080617
+packetLen(0x018f, -1) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080610
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080603
+packetLen(0x018f, 12) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080520
+packetLen(0x018f, -1) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080513
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080507
+packetLen(0x018f, 7) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080429
+packetLen(0x018f, 14) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080422
+packetLen(0x018f, 10) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080415
+packetLen(0x018f, 30) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080408
+packetLen(0x018f, -1) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080401
+packetLen(0x018f, 11) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080325
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080318
+packetLen(0x018f, 7) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080311
+packetLen(0x018f, 11) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080304
+packetLen(0x018f, 3) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080226
+packetLen(0x018f, -1) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080219
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080124
+packetLen(0x018f, 8) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080102
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+#endif
+
+// Packet: 0x0190
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+#if PACKETVER >= 20080701
+packetLen(0x0194, 42) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080624
+packetLen(0x0194, 26) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080617
+packetLen(0x0194, -1) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080610
+packetLen(0x0194, 2) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080528
+packetLen(0x0194, -1) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080520
+packetLen(0x0194, 2) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080513
+packetLen(0x0194, 4) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080507
+packetLen(0x0194, 53) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080429
+packetLen(0x0194, 59) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080422
+packetLen(0x0194, 8) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080415
+packetLen(0x0194, 11) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080408
+packetLen(0x0194, 21) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080401
+packetLen(0x0194, 3) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080325
+packetLen(0x0194, -1) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080318
+packetLen(0x0194, 16) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080311
+packetLen(0x0194, 8) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080304
+packetLen(0x0194, 3) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080226
+packetLen(0x0194, 4) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080219
+packetLen(0x0194, 14) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080124
+packetLen(0x0194, 282) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080102
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+#endif
+
+// Packet: 0x0195
+#if PACKETVER >= 20080701
+packetLen(0x0195, 26) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080610
+packetLen(0x0195, -1) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080603
+packetLen(0x0195, 53) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080528
+packetLen(0x0195, 2) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080513
+packetLen(0x0195, -1) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080507
+packetLen(0x0195, 2) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080429
+packetLen(0x0195, 31) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080422
+packetLen(0x0195, 66) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080415
+packetLen(0x0195, 2) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080408
+packetLen(0x0195, -1) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080401
+packetLen(0x0195, 2) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080325
+packetLen(0x0195, 60) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080318
+packetLen(0x0195, 29) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080311
+packetLen(0x0195, 15) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080304
+packetLen(0x0195, 28) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080226
+packetLen(0x0195, 3) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080219
+packetLen(0x0195, 43) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080124
+packetLen(0x0195, 6) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080102
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+#endif
+
+// Packet: 0x0196
+#if PACKETVER >= 20080701
+packetLen(0x0196, 15) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080617
+packetLen(0x0196, -1) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080610
+packetLen(0x0196, 10) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080603
+packetLen(0x0196, -1) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080528
+packetLen(0x0196, 67) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080520
+packetLen(0x0196, 22) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080513
+packetLen(0x0196, 3) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080507
+packetLen(0x0196, 10) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080429
+packetLen(0x0196, -1) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080422
+packetLen(0x0196, 31) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080415
+packetLen(0x0196, 30) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080408
+packetLen(0x0196, 11) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080401
+packetLen(0x0196, -1) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080325
+packetLen(0x0196, 6) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080318
+packetLen(0x0196, 27) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080311
+packetLen(0x0196, -1) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080304
+packetLen(0x0196, 6) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080226
+packetLen(0x0196, 2) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080219
+packetLen(0x0196, 4) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080124
+packetLen(0x0196, 26) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+#endif
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+#if PACKETVER >= 20080701
+packetLen(0x0199, 7) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080624
+packetLen(0x0199, 29) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080617
+packetLen(0x0199, -1) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080610
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080603
+packetLen(0x0199, 33) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080528
+packetLen(0x0199, 11) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080520
+packetLen(0x0199, 5) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080513
+packetLen(0x0199, 28) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080507
+packetLen(0x0199, 8) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080415
+packetLen(0x0199, -1) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080408
+packetLen(0x0199, 6) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080401
+packetLen(0x0199, -1) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080325
+packetLen(0x0199, 44) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080318
+packetLen(0x0199, 2) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080311
+packetLen(0x0199, 17) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080304
+packetLen(0x0199, 8) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080226
+packetLen(0x0199, 6) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080219
+packetLen(0x0199, -1) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080124
+packetLen(0x0199, 5) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080102
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+#endif
+
+// Packet: 0x019a
+#if PACKETVER >= 20080701
+packetLen(0x019a, 58) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080624
+packetLen(0x019a, -1) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080617
+packetLen(0x019a, 11) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080610
+packetLen(0x019a, 6) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080603
+packetLen(0x019a, -1) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080528
+packetLen(0x019a, 6) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080520
+packetLen(0x019a, 17) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080513
+packetLen(0x019a, 3) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080507
+packetLen(0x019a, 8) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080429
+packetLen(0x019a, 2) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080415
+packetLen(0x019a, -1) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080408
+packetLen(0x019a, 3) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080401
+packetLen(0x019a, 6) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080325
+packetLen(0x019a, 11) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080318
+packetLen(0x019a, 4) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080311
+packetLen(0x019a, 30) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080304
+packetLen(0x019a, 35) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080226
+packetLen(0x019a, 42) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080219
+packetLen(0x019a, 10) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080124
+packetLen(0x019a, 57) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080102
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+#endif
+
+// Packet: 0x019b
+#if PACKETVER >= 20080624
+packetLen(0x019b, -1) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080617
+packetLen(0x019b, 4) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080610
+packetLen(0x019b, -1) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080603
+packetLen(0x019b, 2) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080528
+packetLen(0x019b, 27) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080520
+packetLen(0x019b, 18) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080513
+packetLen(0x019b, 68) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080507
+packetLen(0x019b, -1) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080429
+packetLen(0x019b, 17) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080415
+packetLen(0x019b, -1) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080408
+packetLen(0x019b, 29) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080401
+packetLen(0x019b, 54) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080318
+packetLen(0x019b, 8) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080311
+packetLen(0x019b, 6) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080304
+packetLen(0x019b, 2) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080226
+packetLen(0x019b, 65) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080219
+packetLen(0x019b, 2) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080124
+packetLen(0x019b, 30) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080102
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+#endif
+
+// Packet: 0x019c
+#if PACKETVER >= 20080701
+packetLen(0x019c, 282) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080624
+packetLen(0x019c, 29) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080617
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080610
+packetLen(0x019c, 6) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080603
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080528
+packetLen(0x019c, 55) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080520
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080513
+packetLen(0x019c, 81) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080507
+packetLen(0x019c, 18) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080429
+packetLen(0x019c, 79) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080422
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080415
+packetLen(0x019c, 8) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080408
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080401
+packetLen(0x019c, 54) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080325
+packetLen(0x019c, 23) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080318
+packetLen(0x019c, 43) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080311
+packetLen(0x019c, 8) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080226
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080219
+packetLen(0x019c, 2) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080124
+packetLen(0x019c, 186) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080102
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#endif
+
+// Packet: 0x019d
+#if PACKETVER >= 20080701
+packetLen(0x019d, -1) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080624
+packetLen(0x019d, 30) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080603
+packetLen(0x019d, -1) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080528
+packetLen(0x019d, 2) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080520
+packetLen(0x019d, 8) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080513
+packetLen(0x019d, 11) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080429
+packetLen(0x019d, -1) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080422
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080415
+packetLen(0x019d, 18) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080408
+packetLen(0x019d, -1) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080401
+packetLen(0x019d, 68) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080325
+packetLen(0x019d, 4) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080318
+packetLen(0x019d, 14) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080311
+packetLen(0x019d, 4) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080226
+packetLen(0x019d, -1) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080219
+packetLen(0x019d, 18) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080124
+packetLen(0x019d, 22) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080102
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+#endif
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+#if PACKETVER >= 20080701
+packetLen(0x019f, 36) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080610
+packetLen(0x019f, -1) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080603
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080528
+packetLen(0x019f, 20) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080520
+packetLen(0x019f, 18) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080513
+packetLen(0x019f, -1) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080507
+packetLen(0x019f, 26) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080429
+packetLen(0x019f, 3) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080422
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080415
+packetLen(0x019f, 8) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080408
+packetLen(0x019f, -1) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080401
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080325
+packetLen(0x019f, 34) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080318
+packetLen(0x019f, 10) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080311
+packetLen(0x019f, -1) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080304
+packetLen(0x019f, 23) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080226
+packetLen(0x019f, 79) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080124
+packetLen(0x019f, 2) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080102
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+#endif
+
+// Packet: 0x01a0
+#if PACKETVER >= 20080701
+packetLen(0x01a0, -1) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080624
+packetLen(0x01a0, 5) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080617
+packetLen(0x01a0, -1) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080610
+packetLen(0x01a0, 11) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080603
+packetLen(0x01a0, 29) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080528
+packetLen(0x01a0, 4) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080520
+packetLen(0x01a0, 42) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080513
+packetLen(0x01a0, 24) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080507
+packetLen(0x01a0, 23) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080429
+packetLen(0x01a0, 11) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080408
+packetLen(0x01a0, -1) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080401
+packetLen(0x01a0, 30) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080325
+packetLen(0x01a0, -1) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080318
+packetLen(0x01a0, 17) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080311
+packetLen(0x01a0, -1) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080304
+packetLen(0x01a0, 22) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080226
+packetLen(0x01a0, 8) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080219
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080124
+packetLen(0x01a0, 7) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080102
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+#endif
+
+// Packet: 0x01a1
+#if PACKETVER >= 20080701
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080617
+packetLen(0x01a1, -1) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080610
+packetLen(0x01a1, 10) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080603
+packetLen(0x01a1, -1) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080528
+packetLen(0x01a1, 7) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080520
+packetLen(0x01a1, 21) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080507
+packetLen(0x01a1, -1) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080429
+packetLen(0x01a1, 7) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080422
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080415
+packetLen(0x01a1, 28) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080408
+packetLen(0x01a1, 282) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080401
+packetLen(0x01a1, 30) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080325
+packetLen(0x01a1, 7) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080318
+packetLen(0x01a1, 4) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080311
+packetLen(0x01a1, 53) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080304
+packetLen(0x01a1, 26) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080226
+packetLen(0x01a1, -1) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080219
+packetLen(0x01a1, 6) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080124
+packetLen(0x01a1, 5) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080102
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+#endif
+
+// Packet: 0x01a2
+#if PACKETVER >= 20080701
+packetLen(0x01a2, 2) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080624
+packetLen(0x01a2, 3) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080610
+packetLen(0x01a2, -1) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080603
+packetLen(0x01a2, 28) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080520
+packetLen(0x01a2, -1) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080513
+packetLen(0x01a2, 54) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080507
+packetLen(0x01a2, 27) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080429
+packetLen(0x01a2, 2) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080422
+packetLen(0x01a2, 30) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080415
+packetLen(0x01a2, 68) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080408
+packetLen(0x01a2, 6) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080401
+packetLen(0x01a2, -1) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080318
+packetLen(0x01a2, 2) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080311
+packetLen(0x01a2, 4) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080304
+packetLen(0x01a2, 6) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080226
+packetLen(0x01a2, 7) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080219
+packetLen(0x01a2, 8) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080124
+packetLen(0x01a2, 6) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080102
+packetLen(0x01a2, 35) // ZC_PROPERTY_PET
+#endif
+
+// Packet: 0x01a3
+#if PACKETVER >= 20080701
+packetLen(0x01a3, 31) // ZC_FEED_PET
+#elif PACKETVER >= 20080624
+packetLen(0x01a3, 8) // ZC_FEED_PET
+#elif PACKETVER >= 20080610
+packetLen(0x01a3, -1) // ZC_FEED_PET
+#elif PACKETVER >= 20080603
+packetLen(0x01a3, 26) // ZC_FEED_PET
+#elif PACKETVER >= 20080528
+packetLen(0x01a3, -1) // ZC_FEED_PET
+#elif PACKETVER >= 20080520
+packetLen(0x01a3, 26) // ZC_FEED_PET
+#elif PACKETVER >= 20080513
+packetLen(0x01a3, -1) // ZC_FEED_PET
+#elif PACKETVER >= 20080507
+packetLen(0x01a3, 5) // ZC_FEED_PET
+#elif PACKETVER >= 20080429
+packetLen(0x01a3, 9) // ZC_FEED_PET
+#elif PACKETVER >= 20080422
+packetLen(0x01a3, 30) // ZC_FEED_PET
+#elif PACKETVER >= 20080415
+packetLen(0x01a3, 3) // ZC_FEED_PET
+#elif PACKETVER >= 20080318
+packetLen(0x01a3, -1) // ZC_FEED_PET
+#elif PACKETVER >= 20080311
+packetLen(0x01a3, 32) // ZC_FEED_PET
+#elif PACKETVER >= 20080304
+packetLen(0x01a3, 6) // ZC_FEED_PET
+#elif PACKETVER >= 20080226
+packetLen(0x01a3, 4) // ZC_FEED_PET
+#elif PACKETVER >= 20080219
+packetLen(0x01a3, 11) // ZC_FEED_PET
+#elif PACKETVER >= 20080124
+packetLen(0x01a3, -1) // ZC_FEED_PET
+#elif PACKETVER >= 20080102
+packetLen(0x01a3, 5) // ZC_FEED_PET
+#endif
+
+// Packet: 0x01a4
+#if PACKETVER >= 20080617
+packetLen(0x01a4, -1) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080610
+packetLen(0x01a4, 4) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080603
+packetLen(0x01a4, 10) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080528
+packetLen(0x01a4, -1) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080520
+packetLen(0x01a4, 34) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080513
+packetLen(0x01a4, 2) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080507
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080429
+packetLen(0x01a4, -1) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080422
+packetLen(0x01a4, 102) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080415
+packetLen(0x01a4, -1) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080408
+packetLen(0x01a4, 16) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080401
+packetLen(0x01a4, 36) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080325
+packetLen(0x01a4, 8) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080318
+packetLen(0x01a4, 2) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080311
+packetLen(0x01a4, -1) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080304
+packetLen(0x01a4, 4) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080226
+packetLen(0x01a4, 10) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080124
+packetLen(0x01a4, 8) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080102
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+#endif
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+#if PACKETVER >= 20080701
+packetLen(0x01a6, 4) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080617
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080610
+packetLen(0x01a6, 3) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080603
+packetLen(0x01a6, 10) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080520
+packetLen(0x01a6, 6) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080513
+packetLen(0x01a6, 4) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080507
+packetLen(0x01a6, 6) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080429
+packetLen(0x01a6, 30) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080422
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080415
+packetLen(0x01a6, 6) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080401
+packetLen(0x01a6, 2) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080325
+packetLen(0x01a6, 3) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080318
+packetLen(0x01a6, 26) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x01a6, 2) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x01a6, 10) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080124
+packetLen(0x01a6, 27) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+#endif
+
+// Packet: 0x01a7
+#if PACKETVER >= 20080701
+packetLen(0x01a7, 2) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080617
+packetLen(0x01a7, 6) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080603
+packetLen(0x01a7, -1) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080528
+packetLen(0x01a7, 30) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080520
+packetLen(0x01a7, -1) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080513
+packetLen(0x01a7, 18) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080507
+packetLen(0x01a7, -1) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080429
+packetLen(0x01a7, 6) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080422
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080415
+packetLen(0x01a7, 18) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080408
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080401
+packetLen(0x01a7, 22) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080325
+packetLen(0x01a7, 16) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080318
+packetLen(0x01a7, 26) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080311
+packetLen(0x01a7, 6) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080226
+packetLen(0x01a7, 2) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080219
+packetLen(0x01a7, 6) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080124
+packetLen(0x01a7, 3) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080102
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+#endif
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+#if PACKETVER >= 20080624
+packetLen(0x01aa, -1) // ZC_PET_ACT
+#elif PACKETVER >= 20080610
+packetLen(0x01aa, 6) // ZC_PET_ACT
+#elif PACKETVER >= 20080603
+packetLen(0x01aa, 43) // ZC_PET_ACT
+#elif PACKETVER >= 20080528
+packetLen(0x01aa, -1) // ZC_PET_ACT
+#elif PACKETVER >= 20080520
+packetLen(0x01aa, 28) // ZC_PET_ACT
+#elif PACKETVER >= 20080513
+packetLen(0x01aa, 60) // ZC_PET_ACT
+#elif PACKETVER >= 20080507
+packetLen(0x01aa, 6) // ZC_PET_ACT
+#elif PACKETVER >= 20080422
+packetLen(0x01aa, -1) // ZC_PET_ACT
+#elif PACKETVER >= 20080415
+packetLen(0x01aa, 8) // ZC_PET_ACT
+#elif PACKETVER >= 20080408
+packetLen(0x01aa, 28) // ZC_PET_ACT
+#elif PACKETVER >= 20080401
+packetLen(0x01aa, 7) // ZC_PET_ACT
+#elif PACKETVER >= 20080318
+packetLen(0x01aa, -1) // ZC_PET_ACT
+#elif PACKETVER >= 20080311
+packetLen(0x01aa, 9) // ZC_PET_ACT
+#elif PACKETVER >= 20080304
+packetLen(0x01aa, 67) // ZC_PET_ACT
+#elif PACKETVER >= 20080219
+packetLen(0x01aa, 6) // ZC_PET_ACT
+#elif PACKETVER >= 20080124
+packetLen(0x01aa, 54) // ZC_PET_ACT
+#elif PACKETVER >= 20080102
+packetLen(0x01aa, 10) // ZC_PET_ACT
+#endif
+
+// Packet: 0x01ab
+#if PACKETVER >= 20080701
+packetLen(0x01ab, 10) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080624
+packetLen(0x01ab, 60) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080617
+packetLen(0x01ab, -1) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080610
+packetLen(0x01ab, 11) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080528
+packetLen(0x01ab, 6) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080520
+packetLen(0x01ab, -1) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080513
+packetLen(0x01ab, 30) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080507
+packetLen(0x01ab, -1) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080429
+packetLen(0x01ab, 10) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080422
+packetLen(0x01ab, -1) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080415
+packetLen(0x01ab, 35) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080408
+packetLen(0x01ab, 79) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080401
+packetLen(0x01ab, 18) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080325
+packetLen(0x01ab, 10) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080311
+packetLen(0x01ab, -1) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080304
+packetLen(0x01ab, 4) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080226
+packetLen(0x01ab, 10) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080219
+packetLen(0x01ab, 3) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080124
+packetLen(0x01ab, -1) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080102
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+#endif
+
+// Packet: 0x01ac
+#if PACKETVER >= 20080610
+packetLen(0x01ac, -1) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080603
+packetLen(0x01ac, 59) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080528
+packetLen(0x01ac, -1) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080520
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080513
+packetLen(0x01ac, 44) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080507
+packetLen(0x01ac, 10) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080429
+packetLen(0x01ac, 14) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080422
+packetLen(0x01ac, 3) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080415
+packetLen(0x01ac, -1) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080408
+packetLen(0x01ac, 29) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080325
+packetLen(0x01ac, -1) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080318
+packetLen(0x01ac, 97) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080311
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080304
+packetLen(0x01ac, 2) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080226
+packetLen(0x01ac, 4) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080219
+packetLen(0x01ac, 26) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080124
+packetLen(0x01ac, 17) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080102
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+#endif
+
+// Packet: 0x01ad
+#if PACKETVER >= 20080624
+packetLen(0x01ad, 2) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080617
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080610
+packetLen(0x01ad, 10) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080603
+packetLen(0x01ad, 4) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080528
+packetLen(0x01ad, 8) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080429
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080422
+packetLen(0x01ad, 6) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080415
+packetLen(0x01ad, 26) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080408
+packetLen(0x01ad, 4) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080401
+packetLen(0x01ad, 14) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080325
+packetLen(0x01ad, 39) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080318
+packetLen(0x01ad, 6) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x01ad, 10) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x01ad, 4) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x01ad, 54) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080124
+packetLen(0x01ad, 5) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+#endif
+
+// Packet: 0x01ae
+#if PACKETVER >= 20080701
+packetLen(0x01ae, 7) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080624
+packetLen(0x01ae, -1) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080617
+packetLen(0x01ae, 2) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080610
+packetLen(0x01ae, 43) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080528
+packetLen(0x01ae, -1) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080520
+packetLen(0x01ae, 8) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080429
+packetLen(0x01ae, -1) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080422
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080415
+packetLen(0x01ae, 6) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080408
+packetLen(0x01ae, -1) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080401
+packetLen(0x01ae, 14) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080318
+packetLen(0x01ae, -1) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080311
+packetLen(0x01ae, 26) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080304
+packetLen(0x01ae, 15) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080226
+packetLen(0x01ae, 2) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080219
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080124
+packetLen(0x01ae, -1) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080102
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+#endif
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+#if PACKETVER >= 20080701
+packetLen(0x01b0, 8) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080617
+packetLen(0x01b0, -1) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080610
+packetLen(0x01b0, 4) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080603
+packetLen(0x01b0, -1) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080528
+packetLen(0x01b0, 8) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080520
+packetLen(0x01b0, -1) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080507
+packetLen(0x01b0, 6) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080429
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080422
+packetLen(0x01b0, 21) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080415
+packetLen(0x01b0, -1) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080408
+packetLen(0x01b0, 3) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080401
+packetLen(0x01b0, 6) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080325
+packetLen(0x01b0, 16) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080318
+packetLen(0x01b0, 6) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080311
+packetLen(0x01b0, 2) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080304
+packetLen(0x01b0, 3) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080226
+packetLen(0x01b0, 6) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080219
+packetLen(0x01b0, 2) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080124
+packetLen(0x01b0, 3) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+#endif
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+#if PACKETVER >= 20080624
+packetLen(0x01b2, 6) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080617
+packetLen(0x01b2, 3) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080610
+packetLen(0x01b2, 2) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080603
+packetLen(0x01b2, 57) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080528
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080520
+packetLen(0x01b2, 54) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080507
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080429
+packetLen(0x01b2, 14) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080401
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080325
+packetLen(0x01b2, 14) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080318
+packetLen(0x01b2, 28) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080311
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080304
+packetLen(0x01b2, 10) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080226
+packetLen(0x01b2, 282) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080219
+packetLen(0x01b2, 26) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080124
+packetLen(0x01b2, 11) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080102
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+#endif
+
+// Packet: 0x01b3
+#if PACKETVER >= 20080610
+packetLen(0x01b3, -1) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080603
+packetLen(0x01b3, 2) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080528
+packetLen(0x01b3, 60) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080520
+packetLen(0x01b3, 71) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080513
+packetLen(0x01b3, -1) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080507
+packetLen(0x01b3, 2) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080422
+packetLen(0x01b3, -1) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080415
+packetLen(0x01b3, 22) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080408
+packetLen(0x01b3, 6) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080401
+packetLen(0x01b3, 4) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080325
+packetLen(0x01b3, -1) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080318
+packetLen(0x01b3, 33) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080311
+packetLen(0x01b3, -1) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080304
+packetLen(0x01b3, 9) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080226
+packetLen(0x01b3, 2) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080219
+packetLen(0x01b3, -1) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080124
+packetLen(0x01b3, 20) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080102
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+#endif
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+#if PACKETVER >= 20080701
+packetLen(0x01b6, 12) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080624
+packetLen(0x01b6, 31) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080617
+packetLen(0x01b6, 26) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080610
+packetLen(0x01b6, 55) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080603
+packetLen(0x01b6, -1) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080528
+packetLen(0x01b6, 33) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080513
+packetLen(0x01b6, -1) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080507
+packetLen(0x01b6, 7) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080429
+packetLen(0x01b6, 86) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080422
+packetLen(0x01b6, 23) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080408
+packetLen(0x01b6, -1) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080401
+packetLen(0x01b6, 60) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080325
+packetLen(0x01b6, 12) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080318
+packetLen(0x01b6, -1) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080311
+packetLen(0x01b6, 3) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080304
+packetLen(0x01b6, 2) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080226
+packetLen(0x01b6, 18) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080219
+packetLen(0x01b6, 22) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080124
+packetLen(0x01b6, 6) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080102
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+#endif
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+#if PACKETVER >= 20080701
+packetLen(0x01b9, 14) // ZC_DISPEL
+#elif PACKETVER >= 20080617
+packetLen(0x01b9, -1) // ZC_DISPEL
+#elif PACKETVER >= 20080610
+packetLen(0x01b9, 6) // ZC_DISPEL
+#elif PACKETVER >= 20080603
+packetLen(0x01b9, 8) // ZC_DISPEL
+#elif PACKETVER >= 20080429
+packetLen(0x01b9, -1) // ZC_DISPEL
+#elif PACKETVER >= 20080422
+packetLen(0x01b9, 7) // ZC_DISPEL
+#elif PACKETVER >= 20080415
+packetLen(0x01b9, -1) // ZC_DISPEL
+#elif PACKETVER >= 20080408
+packetLen(0x01b9, 4) // ZC_DISPEL
+#elif PACKETVER >= 20080401
+packetLen(0x01b9, 10) // ZC_DISPEL
+#elif PACKETVER >= 20080325
+packetLen(0x01b9, 26) // ZC_DISPEL
+#elif PACKETVER >= 20080318
+packetLen(0x01b9, 9) // ZC_DISPEL
+#elif PACKETVER >= 20080311
+packetLen(0x01b9, 3) // ZC_DISPEL
+#elif PACKETVER >= 20080304
+packetLen(0x01b9, 30) // ZC_DISPEL
+#elif PACKETVER >= 20080226
+packetLen(0x01b9, 60) // ZC_DISPEL
+#elif PACKETVER >= 20080219
+packetLen(0x01b9, 2) // ZC_DISPEL
+#elif PACKETVER >= 20080124
+packetLen(0x01b9, -1) // ZC_DISPEL
+#elif PACKETVER >= 20080102
+packetLen(0x01b9, 6) // ZC_DISPEL
+#endif
+
+// Packet: 0x01ba
+#if PACKETVER >= 20080701
+packetLen(0x01ba, -1) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080624
+packetLen(0x01ba, 6) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080617
+packetLen(0x01ba, 3) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080528
+packetLen(0x01ba, -1) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080520
+packetLen(0x01ba, 7) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080513
+packetLen(0x01ba, 22) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080507
+packetLen(0x01ba, -1) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080429
+packetLen(0x01ba, 3) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080415
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080408
+packetLen(0x01ba, 6) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080401
+packetLen(0x01ba, 4) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080325
+packetLen(0x01ba, 81) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080311
+packetLen(0x01ba, -1) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080304
+packetLen(0x01ba, 8) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080226
+packetLen(0x01ba, -1) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080219
+packetLen(0x01ba, 14) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080124
+packetLen(0x01ba, 60) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080102
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+#endif
+
+// Packet: 0x01bb
+#if PACKETVER >= 20080603
+packetLen(0x01bb, -1) // CZ_SHIFT
+#elif PACKETVER >= 20080528
+packetLen(0x01bb, 16) // CZ_SHIFT
+#elif PACKETVER >= 20080513
+packetLen(0x01bb, -1) // CZ_SHIFT
+#elif PACKETVER >= 20080429
+packetLen(0x01bb, 2) // CZ_SHIFT
+#elif PACKETVER >= 20080422
+packetLen(0x01bb, 26) // CZ_SHIFT
+#elif PACKETVER >= 20080415
+packetLen(0x01bb, -1) // CZ_SHIFT
+#elif PACKETVER >= 20080408
+packetLen(0x01bb, 3) // CZ_SHIFT
+#elif PACKETVER >= 20080401
+packetLen(0x01bb, 4) // CZ_SHIFT
+#elif PACKETVER >= 20080325
+packetLen(0x01bb, 43) // CZ_SHIFT
+#elif PACKETVER >= 20080318
+packetLen(0x01bb, 31) // CZ_SHIFT
+#elif PACKETVER >= 20080311
+packetLen(0x01bb, 4) // CZ_SHIFT
+#elif PACKETVER >= 20080304
+packetLen(0x01bb, 8) // CZ_SHIFT
+#elif PACKETVER >= 20080226
+packetLen(0x01bb, 6) // CZ_SHIFT
+#elif PACKETVER >= 20080219
+packetLen(0x01bb, 3) // CZ_SHIFT
+#elif PACKETVER >= 20080124
+packetLen(0x01bb, 81) // CZ_SHIFT
+#elif PACKETVER >= 20080102
+packetLen(0x01bb, 26) // CZ_SHIFT
+#endif
+
+// Packet: 0x01bc
+#if PACKETVER >= 20080617
+packetLen(0x01bc, -1) // CZ_RECALL
+#elif PACKETVER >= 20080610
+packetLen(0x01bc, 2) // CZ_RECALL
+#elif PACKETVER >= 20080603
+packetLen(0x01bc, 282) // CZ_RECALL
+#elif PACKETVER >= 20080528
+packetLen(0x01bc, 7) // CZ_RECALL
+#elif PACKETVER >= 20080520
+packetLen(0x01bc, 10) // CZ_RECALL
+#elif PACKETVER >= 20080513
+packetLen(0x01bc, 20) // CZ_RECALL
+#elif PACKETVER >= 20080507
+packetLen(0x01bc, 39) // CZ_RECALL
+#elif PACKETVER >= 20080429
+packetLen(0x01bc, -1) // CZ_RECALL
+#elif PACKETVER >= 20080422
+packetLen(0x01bc, 26) // CZ_RECALL
+#elif PACKETVER >= 20080415
+packetLen(0x01bc, -1) // CZ_RECALL
+#elif PACKETVER >= 20080408
+packetLen(0x01bc, 8) // CZ_RECALL
+#elif PACKETVER >= 20080401
+packetLen(0x01bc, 4) // CZ_RECALL
+#elif PACKETVER >= 20080325
+packetLen(0x01bc, 26) // CZ_RECALL
+#elif PACKETVER >= 20080318
+packetLen(0x01bc, 4) // CZ_RECALL
+#elif PACKETVER >= 20080311
+packetLen(0x01bc, 9) // CZ_RECALL
+#elif PACKETVER >= 20080304
+packetLen(0x01bc, 6) // CZ_RECALL
+#elif PACKETVER >= 20080226
+packetLen(0x01bc, 86) // CZ_RECALL
+#elif PACKETVER >= 20080219
+packetLen(0x01bc, 9) // CZ_RECALL
+#elif PACKETVER >= 20080124
+packetLen(0x01bc, 10) // CZ_RECALL
+#elif PACKETVER >= 20080102
+packetLen(0x01bc, 26) // CZ_RECALL
+#endif
+
+// Packet: 0x01bd
+#if PACKETVER >= 20080701
+packetLen(0x01bd, 6) // CZ_RECALL_GID
+#elif PACKETVER >= 20080624
+packetLen(0x01bd, 22) // CZ_RECALL_GID
+#elif PACKETVER >= 20080617
+packetLen(0x01bd, 44) // CZ_RECALL_GID
+#elif PACKETVER >= 20080610
+packetLen(0x01bd, 3) // CZ_RECALL_GID
+#elif PACKETVER >= 20080603
+packetLen(0x01bd, -1) // CZ_RECALL_GID
+#elif PACKETVER >= 20080528
+packetLen(0x01bd, 9) // CZ_RECALL_GID
+#elif PACKETVER >= 20080520
+packetLen(0x01bd, 35) // CZ_RECALL_GID
+#elif PACKETVER >= 20080507
+packetLen(0x01bd, 4) // CZ_RECALL_GID
+#elif PACKETVER >= 20080429
+packetLen(0x01bd, -1) // CZ_RECALL_GID
+#elif PACKETVER >= 20080422
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+#elif PACKETVER >= 20080415
+packetLen(0x01bd, -1) // CZ_RECALL_GID
+#elif PACKETVER >= 20080408
+packetLen(0x01bd, 102) // CZ_RECALL_GID
+#elif PACKETVER >= 20080401
+packetLen(0x01bd, -1) // CZ_RECALL_GID
+#elif PACKETVER >= 20080325
+packetLen(0x01bd, 21) // CZ_RECALL_GID
+#elif PACKETVER >= 20080311
+packetLen(0x01bd, 6) // CZ_RECALL_GID
+#elif PACKETVER >= 20080304
+packetLen(0x01bd, 102) // CZ_RECALL_GID
+#elif PACKETVER >= 20080226
+packetLen(0x01bd, -1) // CZ_RECALL_GID
+#elif PACKETVER >= 20080219
+packetLen(0x01bd, 6) // CZ_RECALL_GID
+#elif PACKETVER >= 20080124
+packetLen(0x01bd, 2) // CZ_RECALL_GID
+#elif PACKETVER >= 20080102
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+#endif
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+#if PACKETVER >= 20080701
+packetLen(0x01c3, 10) // ZC_BROADCAST2
+#elif PACKETVER >= 20080624
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+#elif PACKETVER >= 20080617
+packetLen(0x01c3, 6) // ZC_BROADCAST2
+#elif PACKETVER >= 20080610
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+#elif PACKETVER >= 20080603
+packetLen(0x01c3, 58) // ZC_BROADCAST2
+#elif PACKETVER >= 20080520
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+#elif PACKETVER >= 20080513
+packetLen(0x01c3, 66) // ZC_BROADCAST2
+#elif PACKETVER >= 20080507
+packetLen(0x01c3, 7) // ZC_BROADCAST2
+#elif PACKETVER >= 20080429
+packetLen(0x01c3, 3) // ZC_BROADCAST2
+#elif PACKETVER >= 20080422
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+#elif PACKETVER >= 20080415
+packetLen(0x01c3, 30) // ZC_BROADCAST2
+#elif PACKETVER >= 20080408
+packetLen(0x01c3, 6) // ZC_BROADCAST2
+#elif PACKETVER >= 20080401
+packetLen(0x01c3, 14) // ZC_BROADCAST2
+#elif PACKETVER >= 20080325
+packetLen(0x01c3, 30) // ZC_BROADCAST2
+#elif PACKETVER >= 20080318
+packetLen(0x01c3, 9) // ZC_BROADCAST2
+#elif PACKETVER >= 20080311
+packetLen(0x01c3, 58) // ZC_BROADCAST2
+#elif PACKETVER >= 20080304
+packetLen(0x01c3, 4) // ZC_BROADCAST2
+#elif PACKETVER >= 20080226
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+#elif PACKETVER >= 20080219
+packetLen(0x01c3, 14) // ZC_BROADCAST2
+#elif PACKETVER >= 20080124
+packetLen(0x01c3, 3) // ZC_BROADCAST2
+#elif PACKETVER >= 20080102
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+#endif
+
+// Packet: 0x01c4
+#if PACKETVER >= 20080617
+packetLen(0x01c4, -1) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080610
+packetLen(0x01c4, 33) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080528
+packetLen(0x01c4, 6) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080520
+packetLen(0x01c4, -1) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080513
+packetLen(0x01c4, 3) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080507
+packetLen(0x01c4, 31) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080429
+packetLen(0x01c4, 53) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080422
+packetLen(0x01c4, 34) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080415
+packetLen(0x01c4, 11) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080408
+packetLen(0x01c4, -1) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080401
+packetLen(0x01c4, 2) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080325
+packetLen(0x01c4, 21) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080311
+packetLen(0x01c4, 2) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080219
+packetLen(0x01c4, -1) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080124
+packetLen(0x01c4, 28) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080102
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+#endif
+
+// Packet: 0x01c5
+#if PACKETVER >= 20080624
+packetLen(0x01c5, -1) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080617
+packetLen(0x01c5, 8) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080610
+packetLen(0x01c5, 26) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080603
+packetLen(0x01c5, 30) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080528
+packetLen(0x01c5, -1) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080520
+packetLen(0x01c5, 11) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080513
+packetLen(0x01c5, 3) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080429
+packetLen(0x01c5, -1) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080422
+packetLen(0x01c5, 4) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080415
+packetLen(0x01c5, -1) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080408
+packetLen(0x01c5, 7) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080401
+packetLen(0x01c5, -1) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080325
+packetLen(0x01c5, 31) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080318
+packetLen(0x01c5, -1) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080311
+packetLen(0x01c5, 10) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080226
+packetLen(0x01c5, -1) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080219
+packetLen(0x01c5, 28) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080124
+packetLen(0x01c5, 90) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080102
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+#endif
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+#if PACKETVER >= 20080624
+packetLen(0x01c8, -1) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080617
+packetLen(0x01c8, 65) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080610
+packetLen(0x01c8, -1) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080603
+packetLen(0x01c8, 8) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080513
+packetLen(0x01c8, -1) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080507
+packetLen(0x01c8, 29) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080429
+packetLen(0x01c8, 8) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080415
+packetLen(0x01c8, -1) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080408
+packetLen(0x01c8, 26) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080401
+packetLen(0x01c8, 2) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080325
+packetLen(0x01c8, 4) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080318
+packetLen(0x01c8, 6) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080311
+packetLen(0x01c8, 4) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080304
+packetLen(0x01c8, 11) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080226
+packetLen(0x01c8, 8) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080219
+packetLen(0x01c8, 6) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080124
+packetLen(0x01c8, 5) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080102
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+#endif
+
+// Packet: 0x01c9
+#if PACKETVER >= 20080701
+packetLen(0x01c9, -1) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080624
+packetLen(0x01c9, 11) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080617
+packetLen(0x01c9, 3) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080610
+packetLen(0x01c9, -1) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080603
+packetLen(0x01c9, 4) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080528
+packetLen(0x01c9, 14) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080513
+packetLen(0x01c9, -1) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080507
+packetLen(0x01c9, 6) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080429
+packetLen(0x01c9, 4) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080415
+packetLen(0x01c9, 58) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080408
+packetLen(0x01c9, -1) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080401
+packetLen(0x01c9, 7) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080325
+packetLen(0x01c9, 2) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080318
+packetLen(0x01c9, -1) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080304
+packetLen(0x01c9, 2) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080226
+packetLen(0x01c9, 22) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080219
+packetLen(0x01c9, 26) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080124
+packetLen(0x01c9, -1) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080102
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+#endif
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+#if PACKETVER >= 20080701
+packetLen(0x01cd, 10) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080617
+packetLen(0x01cd, -1) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080610
+packetLen(0x01cd, 102) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080603
+packetLen(0x01cd, 4) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080513
+packetLen(0x01cd, -1) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080507
+packetLen(0x01cd, 10) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080429
+packetLen(0x01cd, 3) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080422
+packetLen(0x01cd, 10) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080415
+packetLen(0x01cd, -1) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080408
+packetLen(0x01cd, 12) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080401
+packetLen(0x01cd, 6) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080325
+packetLen(0x01cd, 14) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080318
+packetLen(0x01cd, 2) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080311
+packetLen(0x01cd, 6) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080304
+packetLen(0x01cd, 5) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080226
+packetLen(0x01cd, -1) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080219
+packetLen(0x01cd, 8) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080124
+packetLen(0x01cd, 10) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080102
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+#endif
+
+// Packet: 0x01ce
+#if PACKETVER >= 20080624
+packetLen(0x01ce, -1) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080617
+packetLen(0x01ce, 27) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080610
+packetLen(0x01ce, 3) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080603
+packetLen(0x01ce, -1) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080528
+packetLen(0x01ce, 22) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080520
+packetLen(0x01ce, 53) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080513
+packetLen(0x01ce, 4) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080507
+packetLen(0x01ce, 65) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080429
+packetLen(0x01ce, 2) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080422
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080408
+packetLen(0x01ce, -1) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080401
+packetLen(0x01ce, 26) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080325
+packetLen(0x01ce, 3) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080318
+packetLen(0x01ce, 21) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080304
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080226
+packetLen(0x01ce, 2) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080219
+packetLen(0x01ce, 28) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080102
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+#endif
+
+// Packet: 0x01cf
+#if PACKETVER >= 20080701
+packetLen(0x01cf, 3) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080624
+packetLen(0x01cf, 11) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080617
+packetLen(0x01cf, -1) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080610
+packetLen(0x01cf, 2) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080603
+packetLen(0x01cf, -1) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080528
+packetLen(0x01cf, 15) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080520
+packetLen(0x01cf, 26) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080513
+packetLen(0x01cf, -1) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080507
+packetLen(0x01cf, 2) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080415
+packetLen(0x01cf, -1) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080408
+packetLen(0x01cf, 39) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080401
+packetLen(0x01cf, -1) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080325
+packetLen(0x01cf, 186) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080318
+packetLen(0x01cf, 6) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080311
+packetLen(0x01cf, 23) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080304
+packetLen(0x01cf, -1) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080226
+packetLen(0x01cf, 102) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080124
+packetLen(0x01cf, 5) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080102
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+#endif
+
+// Packet: 0x01d0
+#if PACKETVER >= 20080701
+packetLen(0x01d0, 3) // ZC_SPIRITS
+#elif PACKETVER >= 20080624
+packetLen(0x01d0, 9) // ZC_SPIRITS
+#elif PACKETVER >= 20080617
+packetLen(0x01d0, 53) // ZC_SPIRITS
+#elif PACKETVER >= 20080610
+packetLen(0x01d0, 7) // ZC_SPIRITS
+#elif PACKETVER >= 20080603
+packetLen(0x01d0, 2) // ZC_SPIRITS
+#elif PACKETVER >= 20080528
+packetLen(0x01d0, -1) // ZC_SPIRITS
+#elif PACKETVER >= 20080520
+packetLen(0x01d0, 2) // ZC_SPIRITS
+#elif PACKETVER >= 20080513
+packetLen(0x01d0, 10) // ZC_SPIRITS
+#elif PACKETVER >= 20080422
+packetLen(0x01d0, -1) // ZC_SPIRITS
+#elif PACKETVER >= 20080415
+packetLen(0x01d0, 2) // ZC_SPIRITS
+#elif PACKETVER >= 20080408
+packetLen(0x01d0, -1) // ZC_SPIRITS
+#elif PACKETVER >= 20080401
+packetLen(0x01d0, 2) // ZC_SPIRITS
+#elif PACKETVER >= 20080325
+packetLen(0x01d0, 65) // ZC_SPIRITS
+#elif PACKETVER >= 20080318
+packetLen(0x01d0, 39) // ZC_SPIRITS
+#elif PACKETVER >= 20080304
+packetLen(0x01d0, -1) // ZC_SPIRITS
+#elif PACKETVER >= 20080226
+packetLen(0x01d0, 26) // ZC_SPIRITS
+#elif PACKETVER >= 20080219
+packetLen(0x01d0, 2) // ZC_SPIRITS
+#elif PACKETVER >= 20080124
+packetLen(0x01d0, 6) // ZC_SPIRITS
+#elif PACKETVER >= 20080102
+packetLen(0x01d0, 8) // ZC_SPIRITS
+#endif
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+#if PACKETVER >= 20080701
+packetLen(0x01d2, 2) // ZC_COMBODELAY
+#elif PACKETVER >= 20080624
+packetLen(0x01d2, -1) // ZC_COMBODELAY
+#elif PACKETVER >= 20080617
+packetLen(0x01d2, 7) // ZC_COMBODELAY
+#elif PACKETVER >= 20080603
+packetLen(0x01d2, 4) // ZC_COMBODELAY
+#elif PACKETVER >= 20080520
+packetLen(0x01d2, -1) // ZC_COMBODELAY
+#elif PACKETVER >= 20080513
+packetLen(0x01d2, 8) // ZC_COMBODELAY
+#elif PACKETVER >= 20080507
+packetLen(0x01d2, 58) // ZC_COMBODELAY
+#elif PACKETVER >= 20080415
+packetLen(0x01d2, -1) // ZC_COMBODELAY
+#elif PACKETVER >= 20080408
+packetLen(0x01d2, 18) // ZC_COMBODELAY
+#elif PACKETVER >= 20080401
+packetLen(0x01d2, 6) // ZC_COMBODELAY
+#elif PACKETVER >= 20080325
+packetLen(0x01d2, 12) // ZC_COMBODELAY
+#elif PACKETVER >= 20080318
+packetLen(0x01d2, 30) // ZC_COMBODELAY
+#elif PACKETVER >= 20080311
+packetLen(0x01d2, 19) // ZC_COMBODELAY
+#elif PACKETVER >= 20080304
+packetLen(0x01d2, 6) // ZC_COMBODELAY
+#elif PACKETVER >= 20080226
+packetLen(0x01d2, 8) // ZC_COMBODELAY
+#elif PACKETVER >= 20080219
+packetLen(0x01d2, -1) // ZC_COMBODELAY
+#elif PACKETVER >= 20080124
+packetLen(0x01d2, 53) // ZC_COMBODELAY
+#elif PACKETVER >= 20080102
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+#endif
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+#if PACKETVER >= 20080701
+packetLen(0x01d4, 8) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080624
+packetLen(0x01d4, 54) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080617
+packetLen(0x01d4, -1) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080610
+packetLen(0x01d4, 20) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080520
+packetLen(0x01d4, -1) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080513
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080401
+packetLen(0x01d4, -1) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080325
+packetLen(0x01d4, 19) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080318
+packetLen(0x01d4, 60) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080311
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080304
+packetLen(0x01d4, 3) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080226
+packetLen(0x01d4, -1) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080219
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080124
+packetLen(0x01d4, 15) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080102
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+#endif
+
+// Packet: 0x01d5
+#if PACKETVER >= 20080701
+packetLen(0x01d5, 3) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080624
+packetLen(0x01d5, 27) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080610
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080603
+packetLen(0x01d5, 9) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080528
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080520
+packetLen(0x01d5, 6) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080507
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080429
+packetLen(0x01d5, 4) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080408
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080401
+packetLen(0x01d5, 97) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080325
+packetLen(0x01d5, 6) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080318
+packetLen(0x01d5, 34) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080311
+packetLen(0x01d5, 13) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080304
+packetLen(0x01d5, 5) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080226
+packetLen(0x01d5, 6) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080219
+packetLen(0x01d5, 16) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080102
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+#endif
+
+// Packet: 0x01d6
+#if PACKETVER >= 20080701
+packetLen(0x01d6, 30) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080624
+packetLen(0x01d6, 3) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080617
+packetLen(0x01d6, -1) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080610
+packetLen(0x01d6, 6) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080603
+packetLen(0x01d6, -1) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080528
+packetLen(0x01d6, 8) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080520
+packetLen(0x01d6, 2) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080513
+packetLen(0x01d6, 35) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080507
+packetLen(0x01d6, -1) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080429
+packetLen(0x01d6, 6) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080422
+packetLen(0x01d6, -1) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080415
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080408
+packetLen(0x01d6, 54) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080401
+packetLen(0x01d6, 11) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080325
+packetLen(0x01d6, 54) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080318
+packetLen(0x01d6, 58) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080311
+packetLen(0x01d6, 5) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080304
+packetLen(0x01d6, 6) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080226
+packetLen(0x01d6, 10) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080219
+packetLen(0x01d6, 6) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080124
+packetLen(0x01d6, 16) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080102
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+#endif
+
+// Packet: 0x01d7
+#if PACKETVER >= 20080701
+packetLen(0x01d7, 14) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080624
+packetLen(0x01d7, -1) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080617
+packetLen(0x01d7, 8) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080610
+packetLen(0x01d7, -1) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080603
+packetLen(0x01d7, 5) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080528
+packetLen(0x01d7, 9) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080520
+packetLen(0x01d7, 282) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080513
+packetLen(0x01d7, -1) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080507
+packetLen(0x01d7, 2) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080408
+packetLen(0x01d7, -1) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080401
+packetLen(0x01d7, 3) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080325
+packetLen(0x01d7, -1) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080318
+packetLen(0x01d7, 4) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080311
+packetLen(0x01d7, 28) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080304
+packetLen(0x01d7, 54) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080226
+packetLen(0x01d7, 2) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080219
+packetLen(0x01d7, 35) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080124
+packetLen(0x01d7, 2) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080102
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+#endif
+
+// Packet: 0x01d8
+#if PACKETVER >= 20080701
+packetLen(0x01d8, 6) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080624
+packetLen(0x01d8, -1) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080617
+packetLen(0x01d8, 6) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080610
+packetLen(0x01d8, -1) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080603
+packetLen(0x01d8, 11) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080528
+packetLen(0x01d8, 3) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080520
+packetLen(0x01d8, 6) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080513
+packetLen(0x01d8, -1) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080507
+packetLen(0x01d8, 6) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080429
+packetLen(0x01d8, 186) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080415
+packetLen(0x01d8, -1) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080408
+packetLen(0x01d8, 4) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080401
+packetLen(0x01d8, 27) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080325
+packetLen(0x01d8, -1) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080318
+packetLen(0x01d8, 5) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080311
+packetLen(0x01d8, 2) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080304
+packetLen(0x01d8, 10) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080226
+packetLen(0x01d8, 15) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080219
+packetLen(0x01d8, -1) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080124
+packetLen(0x01d8, 3) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080102
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+#endif
+
+// Packet: 0x01d9
+#if PACKETVER >= 20080701
+packetLen(0x01d9, 39) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080624
+packetLen(0x01d9, 15) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080617
+packetLen(0x01d9, 22) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080610
+packetLen(0x01d9, 8) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080528
+packetLen(0x01d9, -1) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080520
+packetLen(0x01d9, 4) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080513
+packetLen(0x01d9, -1) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080507
+packetLen(0x01d9, 60) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080429
+packetLen(0x01d9, -1) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080422
+packetLen(0x01d9, 6) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080415
+packetLen(0x01d9, 26) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080408
+packetLen(0x01d9, 2) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080325
+packetLen(0x01d9, -1) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080318
+packetLen(0x01d9, 282) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080311
+packetLen(0x01d9, 28) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080304
+packetLen(0x01d9, 42) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080226
+packetLen(0x01d9, 8) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080219
+packetLen(0x01d9, 282) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080124
+packetLen(0x01d9, 8) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080102
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+#endif
+
+// Packet: 0x01da
+#if PACKETVER >= 20080701
+packetLen(0x01da, 32) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080624
+packetLen(0x01da, -1) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080617
+packetLen(0x01da, 2) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080610
+packetLen(0x01da, 12) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080603
+packetLen(0x01da, 10) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080528
+packetLen(0x01da, -1) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080520
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080513
+packetLen(0x01da, 5) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080507
+packetLen(0x01da, 10) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080429
+packetLen(0x01da, 6) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080422
+packetLen(0x01da, 2) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080415
+packetLen(0x01da, 6) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080408
+packetLen(0x01da, 8) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080401
+packetLen(0x01da, 9) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080325
+packetLen(0x01da, 6) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080318
+packetLen(0x01da, 2) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080311
+packetLen(0x01da, 79) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080226
+packetLen(0x01da, 6) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080219
+packetLen(0x01da, 2) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080124
+packetLen(0x01da, 12) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080102
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+#endif
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+#if PACKETVER >= 20080701
+packetLen(0x01de, -1) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080624
+packetLen(0x01de, 22) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080617
+packetLen(0x01de, 14) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080603
+packetLen(0x01de, 6) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080528
+packetLen(0x01de, 14) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080520
+packetLen(0x01de, -1) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080513
+packetLen(0x01de, 8) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080507
+packetLen(0x01de, -1) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080429
+packetLen(0x01de, 3) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080422
+packetLen(0x01de, -1) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080415
+packetLen(0x01de, 30) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080408
+packetLen(0x01de, 2) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080401
+packetLen(0x01de, 15) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080325
+packetLen(0x01de, -1) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080318
+packetLen(0x01de, 15) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080311
+packetLen(0x01de, -1) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080304
+packetLen(0x01de, 7) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080226
+packetLen(0x01de, -1) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080219
+packetLen(0x01de, 3) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080124
+packetLen(0x01de, 2) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080102
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+#endif
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+#if PACKETVER >= 20080701
+packetLen(0x01e1, -1) // ZC_SPIRITS2
+#elif PACKETVER >= 20080624
+packetLen(0x01e1, 6) // ZC_SPIRITS2
+#elif PACKETVER >= 20080603
+packetLen(0x01e1, -1) // ZC_SPIRITS2
+#elif PACKETVER >= 20080528
+packetLen(0x01e1, 43) // ZC_SPIRITS2
+#elif PACKETVER >= 20080520
+packetLen(0x01e1, 32) // ZC_SPIRITS2
+#elif PACKETVER >= 20080513
+packetLen(0x01e1, -1) // ZC_SPIRITS2
+#elif PACKETVER >= 20080507
+packetLen(0x01e1, 3) // ZC_SPIRITS2
+#elif PACKETVER >= 20080429
+packetLen(0x01e1, -1) // ZC_SPIRITS2
+#elif PACKETVER >= 20080422
+packetLen(0x01e1, 6) // ZC_SPIRITS2
+#elif PACKETVER >= 20080415
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+#elif PACKETVER >= 20080408
+packetLen(0x01e1, 71) // ZC_SPIRITS2
+#elif PACKETVER >= 20080401
+packetLen(0x01e1, 2) // ZC_SPIRITS2
+#elif PACKETVER >= 20080325
+packetLen(0x01e1, 17) // ZC_SPIRITS2
+#elif PACKETVER >= 20080318
+packetLen(0x01e1, 60) // ZC_SPIRITS2
+#elif PACKETVER >= 20080304
+packetLen(0x01e1, -1) // ZC_SPIRITS2
+#elif PACKETVER >= 20080226
+packetLen(0x01e1, 32) // ZC_SPIRITS2
+#elif PACKETVER >= 20080219
+packetLen(0x01e1, -1) // ZC_SPIRITS2
+#elif PACKETVER >= 20080124
+packetLen(0x01e1, 11) // ZC_SPIRITS2
+#elif PACKETVER >= 20080102
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+#endif
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+#if PACKETVER >= 20080624
+packetLen(0x01e7, -1) // CZ_DORIDORI
+#elif PACKETVER >= 20080617
+packetLen(0x01e7, 6) // CZ_DORIDORI
+#elif PACKETVER >= 20080610
+packetLen(0x01e7, 4) // CZ_DORIDORI
+#elif PACKETVER >= 20080603
+packetLen(0x01e7, 14) // CZ_DORIDORI
+#elif PACKETVER >= 20080528
+packetLen(0x01e7, 39) // CZ_DORIDORI
+#elif PACKETVER >= 20080520
+packetLen(0x01e7, 22) // CZ_DORIDORI
+#elif PACKETVER >= 20080513
+packetLen(0x01e7, 6) // CZ_DORIDORI
+#elif PACKETVER >= 20080507
+packetLen(0x01e7, 54) // CZ_DORIDORI
+#elif PACKETVER >= 20080429
+packetLen(0x01e7, -1) // CZ_DORIDORI
+#elif PACKETVER >= 20080422
+packetLen(0x01e7, 2) // CZ_DORIDORI
+#elif PACKETVER >= 20080415
+packetLen(0x01e7, -1) // CZ_DORIDORI
+#elif PACKETVER >= 20080408
+packetLen(0x01e7, 60) // CZ_DORIDORI
+#elif PACKETVER >= 20080401
+packetLen(0x01e7, 5) // CZ_DORIDORI
+#elif PACKETVER >= 20080325
+packetLen(0x01e7, 20) // CZ_DORIDORI
+#elif PACKETVER >= 20080318
+packetLen(0x01e7, 18) // CZ_DORIDORI
+#elif PACKETVER >= 20080311
+packetLen(0x01e7, 55) // CZ_DORIDORI
+#elif PACKETVER >= 20080304
+packetLen(0x01e7, 26) // CZ_DORIDORI
+#elif PACKETVER >= 20080219
+packetLen(0x01e7, 2) // CZ_DORIDORI
+#elif PACKETVER >= 20080124
+packetLen(0x01e7, -1) // CZ_DORIDORI
+#elif PACKETVER >= 20080102
+packetLen(0x01e7, 2) // CZ_DORIDORI
+#endif
+
+// Packet: 0x01e8
+#if PACKETVER >= 20080701
+packetLen(0x01e8, -1) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080624
+packetLen(0x01e8, 22) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080617
+packetLen(0x01e8, 14) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080610
+packetLen(0x01e8, 27) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080603
+packetLen(0x01e8, -1) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080528
+packetLen(0x01e8, 53) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080520
+packetLen(0x01e8, 3) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080513
+packetLen(0x01e8, 10) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080507
+packetLen(0x01e8, 14) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080429
+packetLen(0x01e8, 10) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080422
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080415
+packetLen(0x01e8, -1) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080408
+packetLen(0x01e8, 16) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080401
+packetLen(0x01e8, 10) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080318
+packetLen(0x01e8, 4) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080311
+packetLen(0x01e8, 6) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080304
+packetLen(0x01e8, 4) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080226
+packetLen(0x01e8, -1) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080219
+packetLen(0x01e8, 6) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080124
+packetLen(0x01e8, 44) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080102
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+#endif
+
+// Packet: 0x01e9
+#if PACKETVER >= 20080701
+packetLen(0x01e9, -1) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080624
+packetLen(0x01e9, 282) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080617
+packetLen(0x01e9, 6) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080610
+packetLen(0x01e9, -1) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080528
+packetLen(0x01e9, 3) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080507
+packetLen(0x01e9, -1) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080429
+packetLen(0x01e9, 5) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080422
+packetLen(0x01e9, 3) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080415
+packetLen(0x01e9, 2) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080408
+packetLen(0x01e9, 34) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080401
+packetLen(0x01e9, 8) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080325
+packetLen(0x01e9, -1) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080318
+packetLen(0x01e9, 8) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080311
+packetLen(0x01e9, 2) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080304
+packetLen(0x01e9, 4) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080226
+packetLen(0x01e9, 12) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080219
+packetLen(0x01e9, -1) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080124
+packetLen(0x01e9, 6) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080102
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+#endif
+
+// Packet: 0x01ea
+#if PACKETVER >= 20080701
+packetLen(0x01ea, 97) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080624
+packetLen(0x01ea, 79) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080617
+packetLen(0x01ea, -1) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080610
+packetLen(0x01ea, 4) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080603
+packetLen(0x01ea, -1) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080528
+packetLen(0x01ea, 2) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080513
+packetLen(0x01ea, -1) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080507
+packetLen(0x01ea, 12) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080429
+packetLen(0x01ea, 22) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080422
+packetLen(0x01ea, -1) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080415
+packetLen(0x01ea, 282) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080401
+packetLen(0x01ea, -1) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080325
+packetLen(0x01ea, 27) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080318
+packetLen(0x01ea, -1) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080311
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080304
+packetLen(0x01ea, 60) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080219
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080124
+packetLen(0x01ea, 10) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080102
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+#endif
+
+// Packet: 0x01eb
+#if PACKETVER >= 20080624
+packetLen(0x01eb, -1) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080617
+packetLen(0x01eb, 7) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080610
+packetLen(0x01eb, 4) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080528
+packetLen(0x01eb, -1) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080520
+packetLen(0x01eb, 4) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080513
+packetLen(0x01eb, 30) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080507
+packetLen(0x01eb, 114) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080429
+packetLen(0x01eb, 27) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080422
+packetLen(0x01eb, 30) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080415
+packetLen(0x01eb, 9) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080408
+packetLen(0x01eb, 13) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080401
+packetLen(0x01eb, 5) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080311
+packetLen(0x01eb, -1) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080304
+packetLen(0x01eb, 30) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080226
+packetLen(0x01eb, 11) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080219
+packetLen(0x01eb, 26) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080124
+packetLen(0x01eb, 53) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080102
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+#endif
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+#if PACKETVER >= 20080701
+packetLen(0x01ed, 14) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080624
+packetLen(0x01ed, 6) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080610
+packetLen(0x01ed, -1) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080603
+packetLen(0x01ed, 30) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080528
+packetLen(0x01ed, 4) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080520
+packetLen(0x01ed, -1) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080513
+packetLen(0x01ed, 14) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080507
+packetLen(0x01ed, -1) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080429
+packetLen(0x01ed, 30) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080422
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080415
+packetLen(0x01ed, 3) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080408
+packetLen(0x01ed, 22) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080325
+packetLen(0x01ed, -1) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080318
+packetLen(0x01ed, 10) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080311
+packetLen(0x01ed, 5) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080304
+packetLen(0x01ed, 4) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080226
+packetLen(0x01ed, 10) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080219
+packetLen(0x01ed, 22) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080124
+packetLen(0x01ed, 6) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080102
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+#endif
+
+// Packet: 0x01ee
+#if PACKETVER >= 20080701
+packetLen(0x01ee, 8) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080624
+packetLen(0x01ee, 6) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080617
+packetLen(0x01ee, 23) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080610
+packetLen(0x01ee, 8) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080528
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080520
+packetLen(0x01ee, 26) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080513
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080507
+packetLen(0x01ee, 2) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080408
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080401
+packetLen(0x01ee, 2) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080325
+packetLen(0x01ee, 6) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080318
+packetLen(0x01ee, 71) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080311
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080304
+packetLen(0x01ee, 6) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080226
+packetLen(0x01ee, 11) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080219
+packetLen(0x01ee, 8) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080124
+packetLen(0x01ee, 6) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080102
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+#endif
+
+// Packet: 0x01ef
+#if PACKETVER >= 20080701
+packetLen(0x01ef, 7) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080624
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080617
+packetLen(0x01ef, 10) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080603
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080528
+packetLen(0x01ef, 6) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080520
+packetLen(0x01ef, 14) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080513
+packetLen(0x01ef, 8) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080507
+packetLen(0x01ef, 7) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080429
+packetLen(0x01ef, 30) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080422
+packetLen(0x01ef, 16) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080415
+packetLen(0x01ef, 3) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080401
+packetLen(0x01ef, 6) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080325
+packetLen(0x01ef, 29) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080318
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080304
+packetLen(0x01ef, 8) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080226
+packetLen(0x01ef, 35) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080124
+packetLen(0x01ef, 6) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080102
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+#endif
+
+// Packet: 0x01f0
+#if PACKETVER >= 20080701
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080624
+packetLen(0x01f0, 8) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080617
+packetLen(0x01f0, 16) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080603
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080528
+packetLen(0x01f0, 8) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080520
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080513
+packetLen(0x01f0, 26) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080507
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080429
+packetLen(0x01f0, 7) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080422
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080415
+packetLen(0x01f0, 53) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080408
+packetLen(0x01f0, 22) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080401
+packetLen(0x01f0, 44) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080325
+packetLen(0x01f0, 13) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080318
+packetLen(0x01f0, 39) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080311
+packetLen(0x01f0, 4) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080304
+packetLen(0x01f0, 2) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080219
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080124
+packetLen(0x01f0, 30) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080102
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+#endif
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+#if PACKETVER >= 20080701
+packetLen(0x01f2, 12) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080603
+packetLen(0x01f2, -1) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080528
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080513
+packetLen(0x01f2, -1) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080507
+packetLen(0x01f2, 22) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080429
+packetLen(0x01f2, -1) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080422
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080415
+packetLen(0x01f2, 8) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080408
+packetLen(0x01f2, 186) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080401
+packetLen(0x01f2, -1) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080325
+packetLen(0x01f2, 6) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080318
+packetLen(0x01f2, 2) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080311
+packetLen(0x01f2, 28) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080304
+packetLen(0x01f2, 26) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080226
+packetLen(0x01f2, 27) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080219
+packetLen(0x01f2, 31) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080124
+packetLen(0x01f2, 14) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080102
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+#endif
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+#if PACKETVER >= 20080701
+packetLen(0x01f4, -1) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080624
+packetLen(0x01f4, 54) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080610
+packetLen(0x01f4, -1) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080603
+packetLen(0x01f4, 7) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080520
+packetLen(0x01f4, -1) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080513
+packetLen(0x01f4, 67) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080507
+packetLen(0x01f4, -1) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080429
+packetLen(0x01f4, 28) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080422
+packetLen(0x01f4, 22) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080415
+packetLen(0x01f4, 6) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080408
+packetLen(0x01f4, 14) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080401
+packetLen(0x01f4, 6) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080325
+packetLen(0x01f4, 3) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080318
+packetLen(0x01f4, 10) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080311
+packetLen(0x01f4, 7) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080304
+packetLen(0x01f4, 12) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080226
+packetLen(0x01f4, -1) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080124
+packetLen(0x01f4, 6) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080102
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+#endif
+
+// Packet: 0x01f5
+#if PACKETVER >= 20080624
+packetLen(0x01f5, -1) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080617
+packetLen(0x01f5, 6) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080603
+packetLen(0x01f5, -1) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080528
+packetLen(0x01f5, 60) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080520
+packetLen(0x01f5, 5) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080513
+packetLen(0x01f5, 60) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080507
+packetLen(0x01f5, 4) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080429
+packetLen(0x01f5, -1) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080422
+packetLen(0x01f5, 11) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080415
+packetLen(0x01f5, 4) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080408
+packetLen(0x01f5, -1) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080401
+packetLen(0x01f5, 6) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080325
+packetLen(0x01f5, 14) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080318
+packetLen(0x01f5, 55) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080311
+packetLen(0x01f5, 30) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080304
+packetLen(0x01f5, 3) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080226
+packetLen(0x01f5, 10) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080219
+packetLen(0x01f5, 114) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080124
+packetLen(0x01f5, 7) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080102
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+#endif
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+#if PACKETVER >= 20080701
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080624
+packetLen(0x01fc, 7) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080617
+packetLen(0x01fc, 186) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080610
+packetLen(0x01fc, 10) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080603
+packetLen(0x01fc, 71) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080528
+packetLen(0x01fc, 4) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080520
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080513
+packetLen(0x01fc, 26) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080507
+packetLen(0x01fc, 10) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080429
+packetLen(0x01fc, 4) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080422
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080415
+packetLen(0x01fc, 10) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080408
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080401
+packetLen(0x01fc, 10) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080325
+packetLen(0x01fc, 59) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080318
+packetLen(0x01fc, 7) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x01fc, 6) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x01fc, 4) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x01fc, 282) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080124
+packetLen(0x01fc, 10) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+#endif
+
+// Packet: 0x01fd
+#if PACKETVER >= 20080701
+packetLen(0x01fd, 13) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080617
+packetLen(0x01fd, -1) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080610
+packetLen(0x01fd, 10) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080603
+packetLen(0x01fd, -1) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080528
+packetLen(0x01fd, 26) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080520
+packetLen(0x01fd, 8) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080513
+packetLen(0x01fd, -1) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080507
+packetLen(0x01fd, 6) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080429
+packetLen(0x01fd, -1) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080422
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080415
+packetLen(0x01fd, 54) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080408
+packetLen(0x01fd, -1) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080401
+packetLen(0x01fd, 6) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080325
+packetLen(0x01fd, 8) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080318
+packetLen(0x01fd, 6) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080311
+packetLen(0x01fd, 39) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080304
+packetLen(0x01fd, 6) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080226
+packetLen(0x01fd, 8) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080219
+packetLen(0x01fd, 26) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080124
+packetLen(0x01fd, -1) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080102
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+#endif
+
+// Packet: 0x01fe
+#if PACKETVER >= 20080701
+packetLen(0x01fe, 30) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080624
+packetLen(0x01fe, -1) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080617
+packetLen(0x01fe, 11) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080610
+packetLen(0x01fe, -1) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080603
+packetLen(0x01fe, 4) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080513
+packetLen(0x01fe, -1) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080507
+packetLen(0x01fe, 7) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080415
+packetLen(0x01fe, -1) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080408
+packetLen(0x01fe, 8) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080401
+packetLen(0x01fe, 54) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080325
+packetLen(0x01fe, -1) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080318
+packetLen(0x01fe, 20) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080311
+packetLen(0x01fe, 18) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080304
+packetLen(0x01fe, 22) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080226
+packetLen(0x01fe, 2) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080219
+packetLen(0x01fe, 13) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080124
+packetLen(0x01fe, 16) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080102
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+#endif
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+#if PACKETVER >= 20080701
+packetLen(0x0201, 9) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080624
+packetLen(0x0201, 3) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080610
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080603
+packetLen(0x0201, 29) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080528
+packetLen(0x0201, 26) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080513
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080507
+packetLen(0x0201, 67) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080429
+packetLen(0x0201, 33) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080422
+packetLen(0x0201, 68) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080415
+packetLen(0x0201, 58) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080408
+packetLen(0x0201, 54) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080401
+packetLen(0x0201, 7) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080325
+packetLen(0x0201, 5) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080318
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x0201, 11) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x0201, 282) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x0201, 6) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x0201, 7) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080124
+packetLen(0x0201, 282) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+#endif
+
+// Packet: 0x0202
+#if PACKETVER >= 20080610
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080603
+packetLen(0x0202, 6) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080528
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080520
+packetLen(0x0202, 11) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080513
+packetLen(0x0202, 3) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080507
+packetLen(0x0202, 19) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080429
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080422
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080415
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080408
+packetLen(0x0202, 3) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080325
+packetLen(0x0202, 6) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080318
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080311
+packetLen(0x0202, 33) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080304
+packetLen(0x0202, 11) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080226
+packetLen(0x0202, 44) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080219
+packetLen(0x0202, 4) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080124
+packetLen(0x0202, 10) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080102
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0203
+#if PACKETVER >= 20080701
+packetLen(0x0203, -1) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080624
+packetLen(0x0203, 3) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080610
+packetLen(0x0203, -1) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080603
+packetLen(0x0203, 7) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080528
+packetLen(0x0203, 34) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080520
+packetLen(0x0203, -1) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080513
+packetLen(0x0203, 4) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080507
+packetLen(0x0203, 7) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080429
+packetLen(0x0203, -1) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080422
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080401
+packetLen(0x0203, -1) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080325
+packetLen(0x0203, 3) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080318
+packetLen(0x0203, 67) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080311
+packetLen(0x0203, 60) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080304
+packetLen(0x0203, -1) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080226
+packetLen(0x0203, 7) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080219
+packetLen(0x0203, 4) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080124
+packetLen(0x0203, 6) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080102
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+#endif
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+#if PACKETVER >= 20080701
+packetLen(0x0206, 2) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080624
+packetLen(0x0206, -1) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080617
+packetLen(0x0206, 30) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080603
+packetLen(0x0206, 3) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080520
+packetLen(0x0206, -1) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080513
+packetLen(0x0206, 6) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080429
+packetLen(0x0206, -1) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080422
+packetLen(0x0206, 7) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080415
+packetLen(0x0206, 4) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080408
+packetLen(0x0206, -1) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080401
+packetLen(0x0206, 59) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080325
+packetLen(0x0206, -1) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080318
+packetLen(0x0206, 30) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080311
+packetLen(0x0206, -1) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080304
+packetLen(0x0206, 9) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080226
+packetLen(0x0206, 8) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080219
+packetLen(0x0206, 7) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080124
+packetLen(0x0206, -1) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080102
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+#endif
+
+// Packet: 0x0207
+#if PACKETVER >= 20080701
+packetLen(0x0207, -1) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080624
+packetLen(0x0207, 2) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080617
+packetLen(0x0207, 11) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080610
+packetLen(0x0207, 7) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080528
+packetLen(0x0207, -1) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080520
+packetLen(0x0207, 28) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080513
+packetLen(0x0207, -1) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080507
+packetLen(0x0207, 2) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080429
+packetLen(0x0207, 5) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080422
+packetLen(0x0207, 2) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080408
+packetLen(0x0207, -1) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080401
+packetLen(0x0207, 102) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080325
+packetLen(0x0207, 8) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080318
+packetLen(0x0207, 2) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080311
+packetLen(0x0207, -1) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080304
+packetLen(0x0207, 6) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080226
+packetLen(0x0207, 26) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080219
+packetLen(0x0207, 66) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080124
+packetLen(0x0207, 28) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080102
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0208
+#if PACKETVER >= 20080701
+packetLen(0x0208, 2) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080624
+packetLen(0x0208, 6) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080617
+packetLen(0x0208, -1) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080610
+packetLen(0x0208, 15) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080603
+packetLen(0x0208, 10) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080528
+packetLen(0x0208, 26) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080520
+packetLen(0x0208, 10) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080513
+packetLen(0x0208, -1) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080507
+packetLen(0x0208, 60) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080429
+packetLen(0x0208, 6) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080415
+packetLen(0x0208, -1) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080408
+packetLen(0x0208, 5) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080401
+packetLen(0x0208, 22) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080325
+packetLen(0x0208, 6) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080318
+packetLen(0x0208, 10) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080311
+packetLen(0x0208, 6) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080226
+packetLen(0x0208, -1) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080219
+packetLen(0x0208, 71) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080124
+packetLen(0x0208, 65) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080102
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0209
+#if PACKETVER >= 20080701
+packetLen(0x0209, -1) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080624
+packetLen(0x0209, 9) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080617
+packetLen(0x0209, -1) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080610
+packetLen(0x0209, 6) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080603
+packetLen(0x0209, -1) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080528
+packetLen(0x0209, 39) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080520
+packetLen(0x0209, 6) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080513
+packetLen(0x0209, 8) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080507
+packetLen(0x0209, 5) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080429
+packetLen(0x0209, -1) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080422
+packetLen(0x0209, 18) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080415
+packetLen(0x0209, -1) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080408
+packetLen(0x0209, 6) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080401
+packetLen(0x0209, 10) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080325
+packetLen(0x0209, 3) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080318
+packetLen(0x0209, 4) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x0209, 10) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x0209, -1) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x0209, 6) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x0209, 30) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080124
+packetLen(0x0209, 10) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+#endif
+
+// Packet: 0x020a
+#if PACKETVER >= 20080701
+packetLen(0x020a, -1) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080624
+packetLen(0x020a, 68) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080617
+packetLen(0x020a, -1) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080610
+packetLen(0x020a, 186) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080603
+packetLen(0x020a, 11) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080528
+packetLen(0x020a, 32) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080520
+packetLen(0x020a, 30) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080513
+packetLen(0x020a, 2) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080507
+packetLen(0x020a, 71) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080422
+packetLen(0x020a, -1) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080415
+packetLen(0x020a, 6) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080408
+packetLen(0x020a, -1) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080401
+packetLen(0x020a, 14) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080325
+packetLen(0x020a, 13) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080318
+packetLen(0x020a, 7) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080311
+packetLen(0x020a, 6) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080304
+packetLen(0x020a, 11) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080226
+packetLen(0x020a, -1) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080219
+packetLen(0x020a, 20) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080124
+packetLen(0x020a, 2) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080102
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+#endif
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+#if PACKETVER >= 20080701
+packetLen(0x020e, 10) // ZC_STARSKILL
+#elif PACKETVER >= 20080624
+packetLen(0x020e, 5) // ZC_STARSKILL
+#elif PACKETVER >= 20080603
+packetLen(0x020e, -1) // ZC_STARSKILL
+#elif PACKETVER >= 20080528
+packetLen(0x020e, 7) // ZC_STARSKILL
+#elif PACKETVER >= 20080520
+packetLen(0x020e, -1) // ZC_STARSKILL
+#elif PACKETVER >= 20080513
+packetLen(0x020e, 32) // ZC_STARSKILL
+#elif PACKETVER >= 20080507
+packetLen(0x020e, -1) // ZC_STARSKILL
+#elif PACKETVER >= 20080429
+packetLen(0x020e, 54) // ZC_STARSKILL
+#elif PACKETVER >= 20080415
+packetLen(0x020e, 4) // ZC_STARSKILL
+#elif PACKETVER >= 20080408
+packetLen(0x020e, 3) // ZC_STARSKILL
+#elif PACKETVER >= 20080401
+packetLen(0x020e, 6) // ZC_STARSKILL
+#elif PACKETVER >= 20080318
+packetLen(0x020e, -1) // ZC_STARSKILL
+#elif PACKETVER >= 20080311
+packetLen(0x020e, 6) // ZC_STARSKILL
+#elif PACKETVER >= 20080304
+packetLen(0x020e, 27) // ZC_STARSKILL
+#elif PACKETVER >= 20080226
+packetLen(0x020e, -1) // ZC_STARSKILL
+#elif PACKETVER >= 20080219
+packetLen(0x020e, 8) // ZC_STARSKILL
+#elif PACKETVER >= 20080124
+packetLen(0x020e, 102) // ZC_STARSKILL
+#elif PACKETVER >= 20080102
+packetLen(0x020e, 32) // ZC_STARSKILL
+#endif
+
+// Packet: 0x020f
+packetLen(0x020f, 10) // CZ_REQ_PVPPOINT
+
+// Packet: 0x0210
+packetLen(0x0210, 22) // ZC_ACK_PVPPOINT
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+#if PACKETVER >= 20080701
+packetLen(0x0217, 7) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080617
+packetLen(0x0217, 4) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080610
+packetLen(0x0217, 53) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080603
+packetLen(0x0217, 6) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080528
+packetLen(0x0217, -1) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080520
+packetLen(0x0217, 8) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080513
+packetLen(0x0217, 65) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080507
+packetLen(0x0217, 8) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080429
+packetLen(0x0217, 15) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080422
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080415
+packetLen(0x0217, 8) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080408
+packetLen(0x0217, -1) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080401
+packetLen(0x0217, 13) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080325
+packetLen(0x0217, -1) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080318
+packetLen(0x0217, 4) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080311
+packetLen(0x0217, 26) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080304
+packetLen(0x0217, 44) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080226
+packetLen(0x0217, 5) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080219
+packetLen(0x0217, -1) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080124
+packetLen(0x0217, 3) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080102
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+#endif
+
+// Packet: 0x0218
+#if PACKETVER >= 20080701
+packetLen(0x0218, -1) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080624
+packetLen(0x0218, 10) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080617
+packetLen(0x0218, 68) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080610
+packetLen(0x0218, 30) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080603
+packetLen(0x0218, 5) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080520
+packetLen(0x0218, -1) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080513
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080507
+packetLen(0x0218, -1) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080429
+packetLen(0x0218, 18) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080422
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080408
+packetLen(0x0218, -1) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080401
+packetLen(0x0218, 67) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080325
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080318
+packetLen(0x0218, 6) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080311
+packetLen(0x0218, 14) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080304
+packetLen(0x0218, 4) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080226
+packetLen(0x0218, 8) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080219
+packetLen(0x0218, 26) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080124
+packetLen(0x0218, 6) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080102
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+#endif
+
+// Packet: 0x0219
+#if PACKETVER >= 20080624
+packetLen(0x0219, -1) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080617
+packetLen(0x0219, 8) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080610
+packetLen(0x0219, 6) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080603
+packetLen(0x0219, 4) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080528
+packetLen(0x0219, 30) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080513
+packetLen(0x0219, 6) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080507
+packetLen(0x0219, 12) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080429
+packetLen(0x0219, 6) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080422
+packetLen(0x0219, -1) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080415
+packetLen(0x0219, 9) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080408
+packetLen(0x0219, 28) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080401
+packetLen(0x0219, 4) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080325
+packetLen(0x0219, 15) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080318
+packetLen(0x0219, -1) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080311
+packetLen(0x0219, 6) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080304
+packetLen(0x0219, 3) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080226
+packetLen(0x0219, -1) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080219
+packetLen(0x0219, 17) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080124
+packetLen(0x0219, 8) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080102
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+#endif
+
+// Packet: 0x021a
+#if PACKETVER >= 20080701
+packetLen(0x021a, 6) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080624
+packetLen(0x021a, 11) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080617
+packetLen(0x021a, 97) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080610
+packetLen(0x021a, 23) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080603
+packetLen(0x021a, 30) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080528
+packetLen(0x021a, 26) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080513
+packetLen(0x021a, -1) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080507
+packetLen(0x021a, 3) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080429
+packetLen(0x021a, -1) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080422
+packetLen(0x021a, 16) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080408
+packetLen(0x021a, -1) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080401
+packetLen(0x021a, 11) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080325
+packetLen(0x021a, 8) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080318
+packetLen(0x021a, 6) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080311
+packetLen(0x021a, 8) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080304
+packetLen(0x021a, 5) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080226
+packetLen(0x021a, 30) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080219
+packetLen(0x021a, -1) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080124
+packetLen(0x021a, 10) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080102
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+#endif
+
+// Packet: 0x021b
+#if PACKETVER >= 20080701
+packetLen(0x021b, -1) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080624
+packetLen(0x021b, 4) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080617
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080610
+packetLen(0x021b, -1) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080603
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080520
+packetLen(0x021b, -1) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080513
+packetLen(0x021b, 4) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080507
+packetLen(0x021b, 8) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080429
+packetLen(0x021b, 2) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080422
+packetLen(0x021b, 44) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080415
+packetLen(0x021b, -1) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080408
+packetLen(0x021b, 9) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080401
+packetLen(0x021b, 6) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080325
+packetLen(0x021b, 11) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080318
+packetLen(0x021b, 3) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080311
+packetLen(0x021b, 15) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080304
+packetLen(0x021b, 14) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080226
+packetLen(0x021b, 6) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080219
+packetLen(0x021b, 15) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080124
+packetLen(0x021b, 54) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080102
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+#endif
+
+// Packet: 0x021c
+#if PACKETVER >= 20080617
+packetLen(0x021c, -1) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080610
+packetLen(0x021c, 8) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080603
+packetLen(0x021c, 13) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080528
+packetLen(0x021c, -1) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080520
+packetLen(0x021c, 2) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080513
+packetLen(0x021c, 5) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080507
+packetLen(0x021c, 8) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080429
+packetLen(0x021c, 18) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080422
+packetLen(0x021c, 3) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080415
+packetLen(0x021c, 5) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080408
+packetLen(0x021c, -1) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080401
+packetLen(0x021c, 4) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080325
+packetLen(0x021c, 102) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080318
+packetLen(0x021c, -1) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080311
+packetLen(0x021c, 6) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080304
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080226
+packetLen(0x021c, 4) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080219
+packetLen(0x021c, -1) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080124
+packetLen(0x021c, 30) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080102
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+#endif
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+#if PACKETVER >= 20080701
+packetLen(0x0224, 4) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080624
+packetLen(0x0224, 42) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080610
+packetLen(0x0224, 4) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080603
+packetLen(0x0224, 14) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080528
+packetLen(0x0224, 9) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080520
+packetLen(0x0224, -1) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080513
+packetLen(0x0224, 3) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080507
+packetLen(0x0224, -1) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080429
+packetLen(0x0224, 6) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080422
+packetLen(0x0224, 8) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080415
+packetLen(0x0224, 27) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080408
+packetLen(0x0224, 81) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080401
+packetLen(0x0224, 6) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080325
+packetLen(0x0224, 2) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080318
+packetLen(0x0224, 6) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080311
+packetLen(0x0224, 20) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080304
+packetLen(0x0224, 6) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080226
+packetLen(0x0224, 2) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080219
+packetLen(0x0224, 12) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080124
+packetLen(0x0224, 9) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080102
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+#endif
+
+// Packet: 0x0225
+#if PACKETVER >= 20080701
+packetLen(0x0225, -1) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080624
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080617
+packetLen(0x0225, 7) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080610
+packetLen(0x0225, 32) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080603
+packetLen(0x0225, 14) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080520
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080513
+packetLen(0x0225, 10) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080507
+packetLen(0x0225, 9) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080429
+packetLen(0x0225, 3) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080422
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080415
+packetLen(0x0225, 4) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080408
+packetLen(0x0225, 3) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080401
+packetLen(0x0225, 5) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080325
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080318
+packetLen(0x0225, 5) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080311
+packetLen(0x0225, 29) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080304
+packetLen(0x0225, 10) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080226
+packetLen(0x0225, 3) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080124
+packetLen(0x0225, 6) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080102
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+#endif
+
+// Packet: 0x0226
+#if PACKETVER >= 20080624
+packetLen(0x0226, -1) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080617
+packetLen(0x0226, 3) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080610
+packetLen(0x0226, -1) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080603
+packetLen(0x0226, 2) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080528
+packetLen(0x0226, 36) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080422
+packetLen(0x0226, -1) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080415
+packetLen(0x0226, 2) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080408
+packetLen(0x0226, 30) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080401
+packetLen(0x0226, 2) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080325
+packetLen(0x0226, 9) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080318
+packetLen(0x0226, 3) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080311
+packetLen(0x0226, 22) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080226
+packetLen(0x0226, 3) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080219
+packetLen(0x0226, 42) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080124
+packetLen(0x0226, 4) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080102
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+#endif
+
+// Packet: 0x0227
+#if PACKETVER >= 20080701
+packetLen(0x0227, 2) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080617
+packetLen(0x0227, -1) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080610
+packetLen(0x0227, 10) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080603
+packetLen(0x0227, 6) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080528
+packetLen(0x0227, -1) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080520
+packetLen(0x0227, 10) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080513
+packetLen(0x0227, 4) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080507
+packetLen(0x0227, -1) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080429
+packetLen(0x0227, 26) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080422
+packetLen(0x0227, 8) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080415
+packetLen(0x0227, 2) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080408
+packetLen(0x0227, -1) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080325
+packetLen(0x0227, 6) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080318
+packetLen(0x0227, 15) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080311
+packetLen(0x0227, 7) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080304
+packetLen(0x0227, 2) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080226
+packetLen(0x0227, 31) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080219
+packetLen(0x0227, 4) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080124
+packetLen(0x0227, -1) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080102
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+#endif
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+#if PACKETVER >= 20080701
+packetLen(0x0229, -1) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080624
+packetLen(0x0229, 2) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080617
+packetLen(0x0229, -1) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080610
+packetLen(0x0229, 21) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080603
+packetLen(0x0229, -1) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080528
+packetLen(0x0229, 2) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080520
+packetLen(0x0229, 31) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080507
+packetLen(0x0229, 5) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080429
+packetLen(0x0229, 2) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080422
+packetLen(0x0229, 3) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080415
+packetLen(0x0229, 7) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080408
+packetLen(0x0229, 5) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080401
+packetLen(0x0229, -1) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080325
+packetLen(0x0229, 6) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080318
+packetLen(0x0229, -1) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080311
+packetLen(0x0229, 22) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080304
+packetLen(0x0229, 33) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080226
+packetLen(0x0229, 182) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080219
+packetLen(0x0229, 6) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080124
+packetLen(0x0229, 22) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080102
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+#endif
+
+// Packet: 0x022a
+#if PACKETVER >= 20080701
+packetLen(0x022a, -1) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080624
+packetLen(0x022a, 2) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080617
+packetLen(0x022a, 8) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080520
+packetLen(0x022a, -1) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080513
+packetLen(0x022a, 5) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080507
+packetLen(0x022a, -1) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080429
+packetLen(0x022a, 3) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080422
+packetLen(0x022a, 23) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080415
+packetLen(0x022a, 3) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080408
+packetLen(0x022a, 10) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080401
+packetLen(0x022a, 8) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080325
+packetLen(0x022a, 114) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080318
+packetLen(0x022a, 2) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080311
+packetLen(0x022a, 10) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080304
+packetLen(0x022a, 2) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080226
+packetLen(0x022a, -1) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080219
+packetLen(0x022a, 2) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080124
+packetLen(0x022a, 8) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080102
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+#endif
+
+// Packet: 0x022b
+#if PACKETVER >= 20080701
+packetLen(0x022b, -1) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080624
+packetLen(0x022b, 90) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080617
+packetLen(0x022b, 6) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080610
+packetLen(0x022b, 2) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080603
+packetLen(0x022b, 18) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080528
+packetLen(0x022b, 7) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080520
+packetLen(0x022b, 10) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080513
+packetLen(0x022b, -1) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080507
+packetLen(0x022b, 6) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080429
+packetLen(0x022b, 26) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080415
+packetLen(0x022b, -1) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080408
+packetLen(0x022b, 27) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080401
+packetLen(0x022b, 6) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080325
+packetLen(0x022b, 282) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080318
+packetLen(0x022b, 102) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080311
+packetLen(0x022b, 10) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080304
+packetLen(0x022b, 8) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080219
+packetLen(0x022b, -1) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080124
+packetLen(0x022b, 23) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080102
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+#endif
+
+// Packet: 0x022c
+#if PACKETVER >= 20080603
+packetLen(0x022c, -1) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080520
+packetLen(0x022c, 6) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080513
+packetLen(0x022c, 8) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080507
+packetLen(0x022c, 6) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080429
+packetLen(0x022c, -1) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080422
+packetLen(0x022c, 33) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080415
+packetLen(0x022c, 6) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080408
+packetLen(0x022c, -1) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080401
+packetLen(0x022c, 4) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080325
+packetLen(0x022c, 68) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080318
+packetLen(0x022c, 6) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080304
+packetLen(0x022c, 10) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080226
+packetLen(0x022c, 31) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080219
+packetLen(0x022c, 53) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080124
+packetLen(0x022c, 22) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080102
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+#endif
+
+// Packet: 0x022d
+#if PACKETVER >= 20080701
+packetLen(0x022d, 10) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080520
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080513
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080507
+packetLen(0x022d, 29) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080429
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080422
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080408
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080401
+packetLen(0x022d, 30) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080325
+packetLen(0x022d, 11) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080318
+packetLen(0x022d, 10) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080311
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080226
+packetLen(0x022d, 10) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080219
+packetLen(0x022d, 9) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080124
+packetLen(0x022d, 10) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080102
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+#endif
+
+// Packet: 0x022e
+#if PACKETVER >= 20080701
+packetLen(0x022e, 30) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080624
+packetLen(0x022e, 4) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080610
+packetLen(0x022e, -1) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080603
+packetLen(0x022e, 10) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080520
+packetLen(0x022e, -1) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080513
+packetLen(0x022e, 4) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080507
+packetLen(0x022e, 8) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080429
+packetLen(0x022e, 3) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080422
+packetLen(0x022e, 7) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080415
+packetLen(0x022e, 30) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080408
+packetLen(0x022e, 9) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080401
+packetLen(0x022e, 2) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080325
+packetLen(0x022e, 4) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080318
+packetLen(0x022e, 28) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080311
+packetLen(0x022e, 5) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080304
+packetLen(0x022e, 55) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080226
+packetLen(0x022e, 9) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080219
+packetLen(0x022e, -1) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080124
+packetLen(0x022e, 4) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080102
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+#endif
+
+// Packet: 0x022f
+#if PACKETVER >= 20080701
+packetLen(0x022f, -1) // ZC_FEED_MER
+#elif PACKETVER >= 20080624
+packetLen(0x022f, 10) // ZC_FEED_MER
+#elif PACKETVER >= 20080617
+packetLen(0x022f, 4) // ZC_FEED_MER
+#elif PACKETVER >= 20080610
+packetLen(0x022f, -1) // ZC_FEED_MER
+#elif PACKETVER >= 20080603
+packetLen(0x022f, 22) // ZC_FEED_MER
+#elif PACKETVER >= 20080528
+packetLen(0x022f, -1) // ZC_FEED_MER
+#elif PACKETVER >= 20080520
+packetLen(0x022f, 26) // ZC_FEED_MER
+#elif PACKETVER >= 20080429
+packetLen(0x022f, -1) // ZC_FEED_MER
+#elif PACKETVER >= 20080422
+packetLen(0x022f, 7) // ZC_FEED_MER
+#elif PACKETVER >= 20080415
+packetLen(0x022f, 3) // ZC_FEED_MER
+#elif PACKETVER >= 20080401
+packetLen(0x022f, 10) // ZC_FEED_MER
+#elif PACKETVER >= 20080325
+packetLen(0x022f, 67) // ZC_FEED_MER
+#elif PACKETVER >= 20080318
+packetLen(0x022f, 7) // ZC_FEED_MER
+#elif PACKETVER >= 20080304
+packetLen(0x022f, -1) // ZC_FEED_MER
+#elif PACKETVER >= 20080226
+packetLen(0x022f, 26) // ZC_FEED_MER
+#elif PACKETVER >= 20080219
+packetLen(0x022f, 282) // ZC_FEED_MER
+#elif PACKETVER >= 20080124
+packetLen(0x022f, 6) // ZC_FEED_MER
+#elif PACKETVER >= 20080102
+packetLen(0x022f, 5) // ZC_FEED_MER
+#endif
+
+// Packet: 0x0230
+#if PACKETVER >= 20080624
+packetLen(0x0230, -1) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080617
+packetLen(0x0230, 4) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080520
+packetLen(0x0230, -1) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080513
+packetLen(0x0230, 6) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080507
+packetLen(0x0230, -1) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080429
+packetLen(0x0230, 6) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080415
+packetLen(0x0230, -1) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080401
+packetLen(0x0230, 43) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080325
+packetLen(0x0230, 8) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080318
+packetLen(0x0230, 4) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080311
+packetLen(0x0230, 3) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080304
+packetLen(0x0230, 16) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080226
+packetLen(0x0230, 28) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080219
+packetLen(0x0230, 54) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080124
+packetLen(0x0230, 3) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080102
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+#endif
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+#if PACKETVER >= 20080701
+packetLen(0x0232, 28) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080624
+packetLen(0x0232, -1) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080617
+packetLen(0x0232, 6) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080610
+packetLen(0x0232, 30) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080603
+packetLen(0x0232, 2) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080528
+packetLen(0x0232, 4) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080520
+packetLen(0x0232, -1) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080513
+packetLen(0x0232, 17) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080429
+packetLen(0x0232, -1) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080422
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080415
+packetLen(0x0232, 10) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080408
+packetLen(0x0232, -1) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080401
+packetLen(0x0232, 2) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080325
+packetLen(0x0232, 10) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080318
+packetLen(0x0232, -1) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080311
+packetLen(0x0232, 5) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080304
+packetLen(0x0232, -1) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080226
+packetLen(0x0232, 2) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080219
+packetLen(0x0232, 36) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080124
+packetLen(0x0232, 17) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080102
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+#endif
+
+// Packet: 0x0233
+#if PACKETVER >= 20080624
+packetLen(0x0233, -1) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080617
+packetLen(0x0233, 10) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080610
+packetLen(0x0233, 66) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080603
+packetLen(0x0233, 6) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080528
+packetLen(0x0233, -1) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080520
+packetLen(0x0233, 15) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080513
+packetLen(0x0233, 6) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080507
+packetLen(0x0233, 68) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080429
+packetLen(0x0233, -1) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080422
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080415
+packetLen(0x0233, 10) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080408
+packetLen(0x0233, 22) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080325
+packetLen(0x0233, 6) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080318
+packetLen(0x0233, 2) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080311
+packetLen(0x0233, -1) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080304
+packetLen(0x0233, 2) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080226
+packetLen(0x0233, 4) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080219
+packetLen(0x0233, 8) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080124
+packetLen(0x0233, 23) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080102
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+#endif
+
+// Packet: 0x0234
+#if PACKETVER >= 20080624
+packetLen(0x0234, -1) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080617
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080528
+packetLen(0x0234, -1) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080520
+packetLen(0x0234, 10) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080429
+packetLen(0x0234, -1) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080422
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080415
+packetLen(0x0234, -1) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080408
+packetLen(0x0234, 2) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080401
+packetLen(0x0234, 16) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080325
+packetLen(0x0234, -1) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080318
+packetLen(0x0234, 3) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080311
+packetLen(0x0234, 43) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080304
+packetLen(0x0234, 4) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080226
+packetLen(0x0234, 15) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080219
+packetLen(0x0234, 282) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080124
+packetLen(0x0234, 26) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080102
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+#endif
+
+// Packet: 0x0235
+#if PACKETVER >= 20080701
+packetLen(0x0235, 6) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080617
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080610
+packetLen(0x0235, 6) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080603
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080528
+packetLen(0x0235, 12) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080520
+packetLen(0x0235, 5) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080422
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080415
+packetLen(0x0235, 28) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080408
+packetLen(0x0235, 2) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080401
+packetLen(0x0235, 19) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080325
+packetLen(0x0235, 42) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080318
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x0235, 44) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x0235, 10) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x0235, 33) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x0235, 15) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080124
+packetLen(0x0235, 30) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+#endif
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+#if PACKETVER >= 20080701
+packetLen(0x0237, 29) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080624
+packetLen(0x0237, 14) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080617
+packetLen(0x0237, 5) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080610
+packetLen(0x0237, 4) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080603
+packetLen(0x0237, -1) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080528
+packetLen(0x0237, 19) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080520
+packetLen(0x0237, 3) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080507
+packetLen(0x0237, -1) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080429
+packetLen(0x0237, 24) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080422
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080415
+packetLen(0x0237, -1) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080408
+packetLen(0x0237, 60) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080401
+packetLen(0x0237, 20) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080325
+packetLen(0x0237, -1) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080318
+packetLen(0x0237, 8) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080311
+packetLen(0x0237, 54) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080304
+packetLen(0x0237, 3) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080226
+packetLen(0x0237, 10) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080219
+packetLen(0x0237, 3) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080124
+packetLen(0x0237, 4) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080102
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+#endif
+
+// Packet: 0x0238
+#if PACKETVER >= 20080624
+packetLen(0x0238, -1) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080617
+packetLen(0x0238, 6) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080610
+packetLen(0x0238, -1) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080603
+packetLen(0x0238, 21) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080513
+packetLen(0x0238, -1) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080429
+packetLen(0x0238, 10) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080415
+packetLen(0x0238, -1) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080401
+packetLen(0x0238, 10) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080318
+packetLen(0x0238, -1) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080311
+packetLen(0x0238, 27) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080304
+packetLen(0x0238, 14) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080226
+packetLen(0x0238, 6) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080219
+packetLen(0x0238, -1) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080124
+packetLen(0x0238, 6) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080102
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+#endif
+
+// Packet: 0x0239
+#if PACKETVER >= 20080701
+packetLen(0x0239, 30) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080624
+packetLen(0x0239, 8) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080610
+packetLen(0x0239, -1) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080603
+packetLen(0x0239, 2) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080528
+packetLen(0x0239, 29) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080520
+packetLen(0x0239, 282) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080513
+packetLen(0x0239, -1) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080507
+packetLen(0x0239, 5) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080429
+packetLen(0x0239, 10) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080422
+packetLen(0x0239, 5) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080415
+packetLen(0x0239, 10) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080408
+packetLen(0x0239, 36) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080401
+packetLen(0x0239, -1) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080325
+packetLen(0x0239, 10) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080318
+packetLen(0x0239, 26) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080311
+packetLen(0x0239, 8) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080304
+packetLen(0x0239, -1) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080226
+packetLen(0x0239, 39) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080219
+packetLen(0x0239, 8) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080124
+packetLen(0x0239, 10) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080102
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+#endif
+
+// Packet: 0x023a
+#if PACKETVER >= 20080701
+packetLen(0x023a, 13) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080624
+packetLen(0x023a, -1) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080617
+packetLen(0x023a, 10) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080513
+packetLen(0x023a, -1) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080507
+packetLen(0x023a, 28) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080429
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080422
+packetLen(0x023a, -1) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080415
+packetLen(0x023a, 2) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080401
+packetLen(0x023a, 6) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080325
+packetLen(0x023a, -1) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080318
+packetLen(0x023a, 8) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080311
+packetLen(0x023a, 10) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080304
+packetLen(0x023a, 2) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080226
+packetLen(0x023a, 6) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080219
+packetLen(0x023a, 11) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080124
+packetLen(0x023a, 71) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080102
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+#endif
+
+// Packet: 0x023b
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+
+// Packet: 0x023c
+#if PACKETVER >= 20080701
+packetLen(0x023c, 60) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080617
+packetLen(0x023c, -1) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080610
+packetLen(0x023c, 4) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080513
+packetLen(0x023c, -1) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080507
+packetLen(0x023c, 30) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080429
+packetLen(0x023c, 3) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080422
+packetLen(0x023c, -1) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080415
+packetLen(0x023c, 10) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080408
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080401
+packetLen(0x023c, 12) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080325
+packetLen(0x023c, 79) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080318
+packetLen(0x023c, 10) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080311
+packetLen(0x023c, 21) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080226
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080219
+packetLen(0x023c, 5) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080124
+packetLen(0x023c, -1) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080102
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+#endif
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+#if PACKETVER >= 20080617
+packetLen(0x0274, -1) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080610
+packetLen(0x0274, 4) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080603
+packetLen(0x0274, -1) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080528
+packetLen(0x0274, 10) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080520
+packetLen(0x0274, 30) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080513
+packetLen(0x0274, 7) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080507
+packetLen(0x0274, -1) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080429
+packetLen(0x0274, 7) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080422
+packetLen(0x0274, 282) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080415
+packetLen(0x0274, 6) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080408
+packetLen(0x0274, 3) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080401
+packetLen(0x0274, 2) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080325
+packetLen(0x0274, 53) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080318
+packetLen(0x0274, -1) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080311
+packetLen(0x0274, 67) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080304
+packetLen(0x0274, -1) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080226
+packetLen(0x0274, 24) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080219
+packetLen(0x0274, 32) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080124
+packetLen(0x0274, 3) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080102
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+#endif
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+packetLen(0x0281, 4) // CZ_GANGSI_RANK
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+#if PACKETVER >= 20080701
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080624
+packetLen(0x0287, 26) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080617
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080610
+packetLen(0x0287, 2) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080513
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080507
+packetLen(0x0287, 11) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080422
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080415
+packetLen(0x0287, 31) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080408
+packetLen(0x0287, 3) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080401
+packetLen(0x0287, 2) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080325
+packetLen(0x0287, 4) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080318
+packetLen(0x0287, 32) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x0287, 18) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x0287, 10) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x0287, 11) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080124
+packetLen(0x0287, 3) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+#endif
+
+// Packet: 0x0288
+packetLen(0x0288, 10) // CZ_PC_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0289
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+#if PACKETVER >= 20080701
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080624
+packetLen(0x0295, 31) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080610
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080603
+packetLen(0x0295, 30) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080513
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080507
+packetLen(0x0295, 6) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080429
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080422
+packetLen(0x0295, 53) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080415
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080408
+packetLen(0x0295, 10) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080401
+packetLen(0x0295, 2) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080325
+packetLen(0x0295, 66) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080318
+packetLen(0x0295, 8) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080311
+packetLen(0x0295, 4) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080304
+packetLen(0x0295, 5) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080226
+packetLen(0x0295, 3) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080219
+packetLen(0x0295, 6) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080124
+packetLen(0x0295, 34) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080102
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+#endif
+
+// Packet: 0x0296
+#if PACKETVER >= 20080624
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080617
+packetLen(0x0296, 19) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080610
+packetLen(0x0296, 17) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080528
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080520
+packetLen(0x0296, 5) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080513
+packetLen(0x0296, 53) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080507
+packetLen(0x0296, 3) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080422
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080415
+packetLen(0x0296, 28) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080408
+packetLen(0x0296, 14) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080401
+packetLen(0x0296, 20) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080325
+packetLen(0x0296, 9) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080318
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080311
+packetLen(0x0296, 29) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080304
+packetLen(0x0296, 90) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080226
+packetLen(0x0296, 6) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080219
+packetLen(0x0296, 5) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080124
+packetLen(0x0296, 4) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080102
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#endif
+
+// Packet: 0x0297
+#if PACKETVER >= 20080701
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080624
+packetLen(0x0297, 4) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080610
+packetLen(0x0297, 6) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080603
+packetLen(0x0297, 9) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080513
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080429
+packetLen(0x0297, 2) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080422
+packetLen(0x0297, 8) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080408
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080401
+packetLen(0x0297, 3) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080325
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080318
+packetLen(0x0297, 36) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080311
+packetLen(0x0297, 2) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080304
+packetLen(0x0297, 11) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080226
+packetLen(0x0297, 5) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080219
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080124
+packetLen(0x0297, 29) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080102
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+#endif
+
+// Packet: 0x0298
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+
+// Packet: 0x0299
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+
+// Packet: 0x029a
+#if PACKETVER >= 20080610
+packetLen(0x029a, -1) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080603
+packetLen(0x029a, 28) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080528
+packetLen(0x029a, 7) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080520
+packetLen(0x029a, 55) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080513
+packetLen(0x029a, -1) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080507
+packetLen(0x029a, 12) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080429
+packetLen(0x029a, 44) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080422
+packetLen(0x029a, 11) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080408
+packetLen(0x029a, -1) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080401
+packetLen(0x029a, 14) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080325
+packetLen(0x029a, 2) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080318
+packetLen(0x029a, 16) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080311
+packetLen(0x029a, 8) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080304
+packetLen(0x029a, 21) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080226
+packetLen(0x029a, 3) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080219
+packetLen(0x029a, -1) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080124
+packetLen(0x029a, 30) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080102
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+#endif
+
+// Packet: 0x029b
+packetLen(0x029b, 80) // ZC_MER_INIT
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a5
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+
+// Packet: 0x02a6
+#if PACKETVER >= 20080122
+// removed
+#elif PACKETVER >= 20080108
+packetLen(0x02a6, 204) // ZC_HACKSH_CPX_MSG
+#elif PACKETVER >= 20080102
+packetLen(0x02a6, 22) // ZC_HACKSH_CPX_MSG
+#endif
+
+// Packet: 0x02a7
+#if PACKETVER >= 20080122
+// removed
+#elif PACKETVER >= 20080108
+packetLen(0x02a7, 204) // CZ_HACKSH_CPX_MSG
+#elif PACKETVER >= 20080102
+packetLen(0x02a7, 22) // CZ_HACKSH_CPX_MSG
+#endif
+
+// Packet: 0x02a8
+#if PACKETVER >= 20080108
+// removed
+#elif PACKETVER >= 20080102
+packetLen(0x02a8, 162) // ZC_HACKSHIELD_CRC_MSG
+#endif
+
+// Packet: 0x02a9
+#if PACKETVER >= 20080108
+// removed
+#elif PACKETVER >= 20080102
+packetLen(0x02a9, 58) // CZ_HACKSHIELD_CRC_MSG
+#endif
+
+// Packet: 0x02aa
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+
+// Packet: 0x02ab
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+
+// Packet: 0x02ac
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+
+// Packet: 0x02ad
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+
+// Packet: 0x02b0
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+
+// Packet: 0x02b1
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+
+// Packet: 0x02b2
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+
+// Packet: 0x02b3
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+
+// Packet: 0x02b4
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+
+// Packet: 0x02b5
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+
+// Packet: 0x02b6
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+
+// Packet: 0x02b7
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+
+// Packet: 0x02b8
+packetLen(0x02b8, 22) // ZC_ITEM_PICKUP_PARTY
+
+// Packet: 0x02b9
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+
+// Packet: 0x02ba
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+
+// Packet: 0x02bb
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+
+// Packet: 0x02bc
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+
+// Packet: 0x02bf
+#if PACKETVER >= 20080318
+// removed
+#elif PACKETVER >= 20080102
+packetLen(0x02bf, 10) // ZC_SRPACKETR2_INIT
+#endif
+
+// Packet: 0x02c0
+#if PACKETVER >= 20080318
+// removed
+#elif PACKETVER >= 20080102
+packetLen(0x02c0, 2) // CZ_SRPACKETR2_START
+#endif
+
+// Packet: 0x02c1
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+
+// Packet: 0x02c2
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+
+// Packet: 0x02c4
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+
+// Packet: 0x02c5
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c6
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+
+// Packet: 0x02c7
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c8
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+
+// Packet: 0x02c9
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+
+// Packet: 0x02ca
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+
+// Packet: 0x02cb
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+
+// Packet: 0x02cc
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+
+// Packet: 0x02cd
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+
+// Packet: 0x02ce
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+
+// Packet: 0x02cf
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+
+// Packet: 0x02d0
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d1
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d2
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d3
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+
+// Packet: 0x02d4
+#if PACKETVER >= 20080304
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+#elif PACKETVER >= 20080226
+packetLen(0x02d4, 30) // ZC_ITEM_PICKUP_ACK3
+#elif PACKETVER >= 20080219
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+#elif PACKETVER >= 20080124
+packetLen(0x02d4, 32) // ZC_ITEM_PICKUP_ACK3
+#elif PACKETVER >= 20080102
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+#endif
+
+// Packet: 0x02d5
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+
+// Packet: 0x02d6
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d7
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d8
+packetLen(0x02d8, 10) // CZ_CONFIG
+
+// Packet: 0x02d9
+packetLen(0x02d9, 10) // ZC_CONFIG
+
+// Packet: 0x02da
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+
+// Packet: 0x02db
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+
+// Packet: 0x02dc
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+
+// Packet: 0x02dd
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+
+// Packet: 0x02de
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+
+// Packet: 0x02df
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+
+// Packet: 0x02e0
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+
+// Packet: 0x02e1
+#if PACKETVER >= 20080617
+packetLen(0x02e1, -1) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080610
+packetLen(0x02e1, 26) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080603
+packetLen(0x02e1, 8) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080528
+packetLen(0x02e1, 10) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080520
+packetLen(0x02e1, 6) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080513
+packetLen(0x02e1, 55) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080507
+packetLen(0x02e1, 22) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080408
+packetLen(0x02e1, -1) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080401
+packetLen(0x02e1, 9) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080325
+packetLen(0x02e1, 26) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080311
+packetLen(0x02e1, -1) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080304
+packetLen(0x02e1, 8) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080102
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+#endif
+
+// Packet: 0x02e2
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+
+// Packet: 0x02e3
+packetLen(0x02e3, 22) // CZ_USE_SKILL_NEW_JAPEN
+
+// Packet: 0x02e4
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+
+// Packet: 0x02e5
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+
+// Packet: 0x02e6
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+
+// Packet: 0x02e7
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+
+// Packet: 0x02e8
+packetLen(0x02e8, -1) // ZC_NORMAL_ITEMLIST3
+
+// Packet: 0x02e9
+packetLen(0x02e9, -1) // ZC_CART_NORMAL_ITEMLIST3
+
+// Packet: 0x02ea
+packetLen(0x02ea, -1) // ZC_STORE_NORMAL_ITEMLIST3
+
+// Packet: 0x02eb
+packetLen(0x02eb, 13) // ZC_ACCEPT_ENTER2
+
+// Packet: 0x02ec
+#if PACKETVER >= 20080624
+packetLen(0x02ec, -1) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080617
+packetLen(0x02ec, 42) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080610
+packetLen(0x02ec, 6) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080603
+packetLen(0x02ec, 4) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080528
+packetLen(0x02ec, 6) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080520
+packetLen(0x02ec, 14) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080513
+packetLen(0x02ec, 11) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080507
+packetLen(0x02ec, -1) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080429
+packetLen(0x02ec, 43) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080422
+packetLen(0x02ec, 60) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080415
+packetLen(0x02ec, 3) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080408
+packetLen(0x02ec, 6) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080401
+packetLen(0x02ec, 17) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080325
+packetLen(0x02ec, 29) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080318
+packetLen(0x02ec, 10) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080311
+packetLen(0x02ec, 12) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080304
+packetLen(0x02ec, 60) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080102
+packetLen(0x02ec, 67) // ZC_NOTIFY_MOVEENTRY4
+#endif
+
+// Packet: 0x02ed
+#if PACKETVER >= 20080624
+packetLen(0x02ed, -1) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080617
+packetLen(0x02ed, 60) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080610
+packetLen(0x02ed, 7) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080603
+packetLen(0x02ed, -1) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080528
+packetLen(0x02ed, 97) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080520
+packetLen(0x02ed, 11) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080513
+packetLen(0x02ed, 21) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080507
+packetLen(0x02ed, 10) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080429
+packetLen(0x02ed, -1) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080422
+packetLen(0x02ed, 30) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080415
+packetLen(0x02ed, 53) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080408
+packetLen(0x02ed, 7) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080401
+packetLen(0x02ed, 11) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080325
+packetLen(0x02ed, -1) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080318
+packetLen(0x02ed, 6) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080304
+packetLen(0x02ed, -1) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080102
+packetLen(0x02ed, 59) // ZC_NOTIFY_NEWENTRY4
+#endif
+
+// Packet: 0x02ee
+#if PACKETVER >= 20080610
+packetLen(0x02ee, -1) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080603
+packetLen(0x02ee, 2) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080528
+packetLen(0x02ee, 3) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080520
+packetLen(0x02ee, 28) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080507
+packetLen(0x02ee, -1) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080429
+packetLen(0x02ee, 4) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080422
+packetLen(0x02ee, 97) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080415
+packetLen(0x02ee, 60) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080408
+packetLen(0x02ee, -1) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080401
+packetLen(0x02ee, 42) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080325
+packetLen(0x02ee, 4) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080318
+packetLen(0x02ee, 13) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080311
+packetLen(0x02ee, 81) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080304
+packetLen(0x02ee, -1) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080102
+packetLen(0x02ee, 60) // ZC_NOTIFY_STANDENTRY4
+#endif
+
+// Packet: 0x02ef
+packetLen(0x02ef, 8) // ZC_NOTIFY_FONT
+
+// Packet: 0x02f0
+#if PACKETVER >= 20080318
+packetLen(0x02f0, 10) // ZC_PROGRESS
+#endif
+
+// Packet: 0x02f1
+#if PACKETVER >= 20080318
+packetLen(0x02f1, 2) // CZ_PROGRESS
+#endif
+
+// Packet: 0x02f2
+#if PACKETVER >= 20080318
+packetLen(0x02f2, 2) // ZC_PROGRESS_CANCEL
+#endif
+
+// Packet: 0x02f3
+#if PACKETVER >= 20080701
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080624
+packetLen(0x02f3, 2) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080617
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080610
+packetLen(0x02f3, 30) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080603
+packetLen(0x02f3, 9) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080528
+packetLen(0x02f3, 26) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080520
+packetLen(0x02f3, 5) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080513
+packetLen(0x02f3, 3) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080507
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080429
+packetLen(0x02f3, 7) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080422
+packetLen(0x02f3, 3) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080415
+packetLen(0x02f3, 67) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080408
+packetLen(0x02f3, 23) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080401
+packetLen(0x02f3, 71) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080325
+packetLen(0x02f3, 2) // CZ_IRMAIL_SEND
+#endif
+
+// Packet: 0x02f4
+#if PACKETVER >= 20080617
+packetLen(0x02f4, -1) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20080610
+packetLen(0x02f4, 30) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20080507
+packetLen(0x02f4, -1) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20080429
+packetLen(0x02f4, 29) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20080422
+packetLen(0x02f4, 6) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20080408
+packetLen(0x02f4, -1) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20080401
+packetLen(0x02f4, 9) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20080325
+packetLen(0x02f4, 4) // ZC_IRMAIL_SEND_RES
+#endif
+
+// Packet: 0x02f5
+#if PACKETVER >= 20080701
+packetLen(0x02f5, 8) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080624
+packetLen(0x02f5, 7) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080617
+packetLen(0x02f5, 26) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080610
+packetLen(0x02f5, -1) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080603
+packetLen(0x02f5, 28) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080528
+packetLen(0x02f5, -1) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080520
+packetLen(0x02f5, 2) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080513
+packetLen(0x02f5, 3) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080507
+packetLen(0x02f5, 5) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080429
+packetLen(0x02f5, 8) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080422
+packetLen(0x02f5, -1) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080415
+packetLen(0x02f5, 60) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080401
+packetLen(0x02f5, -1) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080325
+packetLen(0x02f5, 86) // ZC_IRMAIL_NOTIFY
+#endif
+
+// Packet: 0x02f6
+#if PACKETVER >= 20080624
+packetLen(0x02f6, 8) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080617
+packetLen(0x02f6, -1) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080610
+packetLen(0x02f6, 5) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080603
+packetLen(0x02f6, -1) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080528
+packetLen(0x02f6, 2) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080520
+packetLen(0x02f6, 12) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080513
+packetLen(0x02f6, -1) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080507
+packetLen(0x02f6, 5) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080429
+packetLen(0x02f6, 22) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080422
+packetLen(0x02f6, 5) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080415
+packetLen(0x02f6, 2) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080408
+packetLen(0x02f6, 8) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080401
+packetLen(0x02f6, 6) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080325
+packetLen(0x02f6, 4) // CZ_IRMAIL_LIST
+#endif
+
+// Packet: 0x02f7
+#if PACKETVER >= 20080624
+packetLen(0x02f7, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x02f7, 26)
+#elif PACKETVER >= 20080610
+packetLen(0x02f7, 12)
+#elif PACKETVER >= 20080603
+packetLen(0x02f7, 22)
+#elif PACKETVER >= 20080528
+packetLen(0x02f7, 8)
+#elif PACKETVER >= 20080520
+packetLen(0x02f7, 6)
+#elif PACKETVER >= 20080513
+packetLen(0x02f7, 10)
+#elif PACKETVER >= 20080507
+packetLen(0x02f7, 30)
+#elif PACKETVER >= 20080429
+packetLen(0x02f7, 7)
+#elif PACKETVER >= 20080422
+packetLen(0x02f7, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x02f7, 6)
+#elif PACKETVER >= 20080408
+packetLen(0x02f7, -1)
+#elif PACKETVER >= 20080401
+packetLen(0x02f7, 26)
+#elif PACKETVER >= 20080325
+packetLen(0x02f7, -1)
+#endif
+
+// Packet: 0x02f8
+#if PACKETVER >= 20080701
+packetLen(0x02f8, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x02f8, 12)
+#elif PACKETVER >= 20080617
+packetLen(0x02f8, 3)
+#elif PACKETVER >= 20080610
+packetLen(0x02f8, 2)
+#elif PACKETVER >= 20080520
+packetLen(0x02f8, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x02f8, 30)
+#elif PACKETVER >= 20080422
+packetLen(0x02f8, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x02f8, 3)
+#elif PACKETVER >= 20080408
+packetLen(0x02f8, 10)
+#elif PACKETVER >= 20080401
+packetLen(0x02f8, 29)
+#elif PACKETVER >= 20080325
+packetLen(0x02f8, 7)
+#endif
+
+// Packet: 0x02f9
+#if PACKETVER >= 20080701
+packetLen(0x02f9, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x02f9, 43)
+#elif PACKETVER >= 20080617
+packetLen(0x02f9, 2)
+#elif PACKETVER >= 20080610
+packetLen(0x02f9, 71)
+#elif PACKETVER >= 20080528
+packetLen(0x02f9, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x02f9, 4)
+#elif PACKETVER >= 20080513
+packetLen(0x02f9, 28)
+#elif PACKETVER >= 20080507
+packetLen(0x02f9, 26)
+#elif PACKETVER >= 20080429
+packetLen(0x02f9, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x02f9, 5)
+#elif PACKETVER >= 20080415
+packetLen(0x02f9, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x02f9, 8)
+#elif PACKETVER >= 20080325
+packetLen(0x02f9, 6)
+#endif
+
+// Packet: 0x02fa
+#if PACKETVER >= 20080701
+packetLen(0x02fa, 8)
+#elif PACKETVER >= 20080617
+packetLen(0x02fa, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x02fa, 6)
+#elif PACKETVER >= 20080603
+packetLen(0x02fa, 65)
+#elif PACKETVER >= 20080528
+packetLen(0x02fa, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x02fa, 6)
+#elif PACKETVER >= 20080513
+packetLen(0x02fa, 27)
+#elif PACKETVER >= 20080507
+packetLen(0x02fa, 33)
+#elif PACKETVER >= 20080429
+packetLen(0x02fa, 68)
+#elif PACKETVER >= 20080422
+packetLen(0x02fa, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x02fa, 54)
+#elif PACKETVER >= 20080408
+packetLen(0x02fa, 2)
+#elif PACKETVER >= 20080401
+packetLen(0x02fa, 16)
+#elif PACKETVER >= 20080325
+packetLen(0x02fa, 3)
+#endif
+
+// Packet: 0x02fb
+#if PACKETVER >= 20080701
+packetLen(0x02fb, 4)
+#elif PACKETVER >= 20080624
+packetLen(0x02fb, 11)
+#elif PACKETVER >= 20080617
+packetLen(0x02fb, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x02fb, 29)
+#elif PACKETVER >= 20080603
+packetLen(0x02fb, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x02fb, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x02fb, 6)
+#elif PACKETVER >= 20080507
+packetLen(0x02fb, 8)
+#elif PACKETVER >= 20080422
+packetLen(0x02fb, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x02fb, 10)
+#elif PACKETVER >= 20080408
+packetLen(0x02fb, 4)
+#elif PACKETVER >= 20080401
+packetLen(0x02fb, 10)
+#elif PACKETVER >= 20080325
+packetLen(0x02fb, 3)
+#endif
+
+// Packet: 0x02fc
+#if PACKETVER >= 20080701
+packetLen(0x02fc, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x02fc, 8)
+#elif PACKETVER >= 20080617
+packetLen(0x02fc, 5)
+#elif PACKETVER >= 20080520
+packetLen(0x02fc, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x02fc, 2)
+#elif PACKETVER >= 20080507
+packetLen(0x02fc, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x02fc, 4)
+#elif PACKETVER >= 20080408
+packetLen(0x02fc, -1)
+#elif PACKETVER >= 20080401
+packetLen(0x02fc, 3)
+#elif PACKETVER >= 20080325
+packetLen(0x02fc, -1)
+#endif
+
+// Packet: 0x02fd
+#if PACKETVER >= 20080701
+packetLen(0x02fd, 30)
+#elif PACKETVER >= 20080624
+packetLen(0x02fd, 18)
+#elif PACKETVER >= 20080617
+packetLen(0x02fd, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x02fd, 54)
+#elif PACKETVER >= 20080528
+packetLen(0x02fd, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x02fd, 8)
+#elif PACKETVER >= 20080507
+packetLen(0x02fd, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x02fd, 2)
+#elif PACKETVER >= 20080415
+packetLen(0x02fd, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x02fd, 30)
+#elif PACKETVER >= 20080401
+packetLen(0x02fd, 29)
+#elif PACKETVER >= 20080325
+packetLen(0x02fd, 3)
+#endif
+
+// Packet: 0x02fe
+#if PACKETVER >= 20080617
+packetLen(0x02fe, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x02fe, 2)
+#elif PACKETVER >= 20080528
+packetLen(0x02fe, 6)
+#elif PACKETVER >= 20080513
+packetLen(0x02fe, -1)
+#elif PACKETVER >= 20080507
+packetLen(0x02fe, 4)
+#elif PACKETVER >= 20080429
+packetLen(0x02fe, 8)
+#elif PACKETVER >= 20080422
+packetLen(0x02fe, 11)
+#elif PACKETVER >= 20080415
+packetLen(0x02fe, 28)
+#elif PACKETVER >= 20080408
+packetLen(0x02fe, -1)
+#elif PACKETVER >= 20080401
+packetLen(0x02fe, 2)
+#elif PACKETVER >= 20080325
+packetLen(0x02fe, -1)
+#endif
+
+// Packet: 0x02ff
+#if PACKETVER >= 20080624
+packetLen(0x02ff, 2)
+#elif PACKETVER >= 20080617
+packetLen(0x02ff, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x02ff, 11)
+#elif PACKETVER >= 20080603
+packetLen(0x02ff, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x02ff, 6)
+#elif PACKETVER >= 20080520
+packetLen(0x02ff, 12)
+#elif PACKETVER >= 20080507
+packetLen(0x02ff, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x02ff, 4)
+#elif PACKETVER >= 20080422
+packetLen(0x02ff, 8)
+#elif PACKETVER >= 20080415
+packetLen(0x02ff, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x02ff, 30)
+#elif PACKETVER >= 20080325
+packetLen(0x02ff, 6)
+#endif
+
+// Packet: 0x0300
+#if PACKETVER >= 20080701
+packetLen(0x0300, 4)
+#elif PACKETVER >= 20080624
+packetLen(0x0300, 13)
+#elif PACKETVER >= 20080617
+packetLen(0x0300, 16)
+#elif PACKETVER >= 20080610
+packetLen(0x0300, 3)
+#elif PACKETVER >= 20080603
+packetLen(0x0300, 26)
+#elif PACKETVER >= 20080520
+packetLen(0x0300, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x0300, 13)
+#elif PACKETVER >= 20080507
+packetLen(0x0300, 14)
+#elif PACKETVER >= 20080429
+packetLen(0x0300, 6)
+#elif PACKETVER >= 20080422
+packetLen(0x0300, 17)
+#elif PACKETVER >= 20080415
+packetLen(0x0300, 20)
+#elif PACKETVER >= 20080325
+packetLen(0x0300, -1)
+#endif
+
+// Packet: 0x0301
+#if PACKETVER >= 20080701
+packetLen(0x0301, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0301, 6)
+#elif PACKETVER >= 20080617
+packetLen(0x0301, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0301, 3)
+#elif PACKETVER >= 20080603
+packetLen(0x0301, 15)
+#elif PACKETVER >= 20080513
+packetLen(0x0301, -1)
+#elif PACKETVER >= 20080507
+packetLen(0x0301, 10)
+#elif PACKETVER >= 20080429
+packetLen(0x0301, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x0301, 14)
+#elif PACKETVER >= 20080415
+packetLen(0x0301, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x0301, 6)
+#elif PACKETVER >= 20080401
+packetLen(0x0301, -1)
+#endif
+
+// Packet: 0x0302
+#if PACKETVER >= 20080701
+packetLen(0x0302, 5)
+#elif PACKETVER >= 20080624
+packetLen(0x0302, 21)
+#elif PACKETVER >= 20080617
+packetLen(0x0302, 3)
+#elif PACKETVER >= 20080610
+packetLen(0x0302, 68)
+#elif PACKETVER >= 20080528
+packetLen(0x0302, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x0302, 58)
+#elif PACKETVER >= 20080513
+packetLen(0x0302, 6)
+#elif PACKETVER >= 20080507
+packetLen(0x0302, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0302, 2)
+#elif PACKETVER >= 20080422
+packetLen(0x0302, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0302, 3)
+#elif PACKETVER >= 20080401
+packetLen(0x0302, -1)
+#endif
+
+// Packet: 0x0303
+#if PACKETVER >= 20080701
+packetLen(0x0303, 3)
+#elif PACKETVER >= 20080624
+packetLen(0x0303, 58)
+#elif PACKETVER >= 20080617
+packetLen(0x0303, 30)
+#elif PACKETVER >= 20080610
+packetLen(0x0303, 22)
+#elif PACKETVER >= 20080603
+packetLen(0x0303, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x0303, 3)
+#elif PACKETVER >= 20080520
+packetLen(0x0303, 14)
+#elif PACKETVER >= 20080513
+packetLen(0x0303, 4)
+#elif PACKETVER >= 20080507
+packetLen(0x0303, 10)
+#elif PACKETVER >= 20080422
+packetLen(0x0303, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0303, 282)
+#elif PACKETVER >= 20080401
+packetLen(0x0303, -1)
+#endif
+
+// Packet: 0x0304
+#if PACKETVER >= 20080624
+packetLen(0x0304, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0304, 20)
+#elif PACKETVER >= 20080610
+packetLen(0x0304, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x0304, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x0304, 2)
+#elif PACKETVER >= 20080520
+packetLen(0x0304, 14)
+#elif PACKETVER >= 20080513
+packetLen(0x0304, 10)
+#elif PACKETVER >= 20080507
+packetLen(0x0304, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0304, 16)
+#elif PACKETVER >= 20080415
+packetLen(0x0304, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x0304, 6)
+#elif PACKETVER >= 20080401
+packetLen(0x0304, -1)
+#endif
+
+// Packet: 0x0305
+#if PACKETVER >= 20080701
+packetLen(0x0305, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0305, 2)
+#elif PACKETVER >= 20080617
+packetLen(0x0305, 4)
+#elif PACKETVER >= 20080610
+packetLen(0x0305, 15)
+#elif PACKETVER >= 20080603
+packetLen(0x0305, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x0305, 10)
+#elif PACKETVER >= 20080520
+packetLen(0x0305, 2)
+#elif PACKETVER >= 20080513
+packetLen(0x0305, 6)
+#elif PACKETVER >= 20080507
+packetLen(0x0305, 8)
+#elif PACKETVER >= 20080429
+packetLen(0x0305, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x0305, 27)
+#elif PACKETVER >= 20080401
+packetLen(0x0305, -1)
+#endif
+
+// Packet: 0x0306
+#if PACKETVER >= 20080701
+packetLen(0x0306, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0306, 6)
+#elif PACKETVER >= 20080603
+packetLen(0x0306, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x0306, 23)
+#elif PACKETVER >= 20080520
+packetLen(0x0306, 3)
+#elif PACKETVER >= 20080507
+packetLen(0x0306, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0306, 10)
+#elif PACKETVER >= 20080422
+packetLen(0x0306, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0306, 10)
+#elif PACKETVER >= 20080408
+packetLen(0x0306, 5)
+#elif PACKETVER >= 20080401
+packetLen(0x0306, -1)
+#endif
+
+// Packet: 0x0307
+#if PACKETVER >= 20080624
+packetLen(0x0307, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0307, 30)
+#elif PACKETVER >= 20080610
+packetLen(0x0307, 58)
+#elif PACKETVER >= 20080603
+packetLen(0x0307, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x0307, 15)
+#elif PACKETVER >= 20080520
+packetLen(0x0307, 10)
+#elif PACKETVER >= 20080513
+packetLen(0x0307, -1)
+#elif PACKETVER >= 20080507
+packetLen(0x0307, 16)
+#elif PACKETVER >= 20080422
+packetLen(0x0307, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0307, 2)
+#elif PACKETVER >= 20080401
+packetLen(0x0307, -1)
+#endif
+
+// Packet: 0x0308
+#if PACKETVER >= 20080617
+packetLen(0x0308, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0308, 182)
+#elif PACKETVER >= 20080603
+packetLen(0x0308, 15)
+#elif PACKETVER >= 20080528
+packetLen(0x0308, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x0308, 5)
+#elif PACKETVER >= 20080513
+packetLen(0x0308, 7)
+#elif PACKETVER >= 20080507
+packetLen(0x0308, 4)
+#elif PACKETVER >= 20080429
+packetLen(0x0308, 15)
+#elif PACKETVER >= 20080422
+packetLen(0x0308, 7)
+#elif PACKETVER >= 20080415
+packetLen(0x0308, 6)
+#elif PACKETVER >= 20080408
+packetLen(0x0308, 10)
+#endif
+
+// Packet: 0x0309
+#if PACKETVER >= 20080701
+packetLen(0x0309, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0309, 14)
+#elif PACKETVER >= 20080617
+packetLen(0x0309, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0309, 10)
+#elif PACKETVER >= 20080528
+packetLen(0x0309, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x0309, 2)
+#elif PACKETVER >= 20080513
+packetLen(0x0309, 6)
+#elif PACKETVER >= 20080507
+packetLen(0x0309, 14)
+#elif PACKETVER >= 20080429
+packetLen(0x0309, 15)
+#elif PACKETVER >= 20080422
+packetLen(0x0309, 5)
+#elif PACKETVER >= 20080415
+packetLen(0x0309, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x0309, 6)
+#endif
+
+// Packet: 0x030a
+#if PACKETVER >= 20080701
+packetLen(0x030a, 6)
+#elif PACKETVER >= 20080624
+packetLen(0x030a, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x030a, 35)
+#elif PACKETVER >= 20080610
+packetLen(0x030a, 10)
+#elif PACKETVER >= 20080528
+packetLen(0x030a, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x030a, 16)
+#elif PACKETVER >= 20080513
+packetLen(0x030a, 6)
+#elif PACKETVER >= 20080507
+packetLen(0x030a, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x030a, 9)
+#elif PACKETVER >= 20080408
+packetLen(0x030a, -1)
+#endif
+
+// Packet: 0x030b
+#if PACKETVER >= 20080701
+packetLen(0x030b, 6)
+#elif PACKETVER >= 20080624
+packetLen(0x030b, 7)
+#elif PACKETVER >= 20080610
+packetLen(0x030b, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x030b, 10)
+#elif PACKETVER >= 20080528
+packetLen(0x030b, 6)
+#elif PACKETVER >= 20080520
+packetLen(0x030b, 65)
+#elif PACKETVER >= 20080513
+packetLen(0x030b, 16)
+#elif PACKETVER >= 20080507
+packetLen(0x030b, 15)
+#elif PACKETVER >= 20080429
+packetLen(0x030b, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x030b, 17)
+#elif PACKETVER >= 20080408
+packetLen(0x030b, 10)
+#endif
+
+// Packet: 0x030c
+#if PACKETVER >= 20080701
+packetLen(0x030c, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x030c, 2)
+#elif PACKETVER >= 20080617
+packetLen(0x030c, 6)
+#elif PACKETVER >= 20080610
+packetLen(0x030c, 282)
+#elif PACKETVER >= 20080603
+packetLen(0x030c, 36)
+#elif PACKETVER >= 20080520
+packetLen(0x030c, 2)
+#elif PACKETVER >= 20080513
+packetLen(0x030c, 12)
+#elif PACKETVER >= 20080422
+packetLen(0x030c, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x030c, 10)
+#elif PACKETVER >= 20080408
+packetLen(0x030c, 66)
+#endif
+
+// Packet: 0x030d
+#if PACKETVER >= 20080701
+packetLen(0x030d, 16)
+#elif PACKETVER >= 20080624
+packetLen(0x030d, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x030d, 282)
+#elif PACKETVER >= 20080610
+packetLen(0x030d, 10)
+#elif PACKETVER >= 20080603
+packetLen(0x030d, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x030d, 71)
+#elif PACKETVER >= 20080520
+packetLen(0x030d, 4)
+#elif PACKETVER >= 20080513
+packetLen(0x030d, 6)
+#elif PACKETVER >= 20080422
+packetLen(0x030d, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x030d, 19)
+#elif PACKETVER >= 20080408
+packetLen(0x030d, 10)
+#endif
+
+// Packet: 0x030e
+#if PACKETVER >= 20080701
+packetLen(0x030e, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x030e, 13)
+#elif PACKETVER >= 20080617
+packetLen(0x030e, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x030e, 2)
+#elif PACKETVER >= 20080603
+packetLen(0x030e, 21)
+#elif PACKETVER >= 20080528
+packetLen(0x030e, 10)
+#elif PACKETVER >= 20080520
+packetLen(0x030e, 2)
+#elif PACKETVER >= 20080513
+packetLen(0x030e, 10)
+#elif PACKETVER >= 20080507
+packetLen(0x030e, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x030e, 6)
+#elif PACKETVER >= 20080415
+packetLen(0x030e, 2)
+#elif PACKETVER >= 20080408
+packetLen(0x030e, 3)
+#endif
+
+// Packet: 0x030f
+#if PACKETVER >= 20080701
+packetLen(0x030f, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x030f, 17)
+#elif PACKETVER >= 20080617
+packetLen(0x030f, 10)
+#elif PACKETVER >= 20080603
+packetLen(0x030f, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x030f, 2)
+#elif PACKETVER >= 20080520
+packetLen(0x030f, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x030f, 67)
+#elif PACKETVER >= 20080507
+packetLen(0x030f, 2)
+#elif PACKETVER >= 20080429
+packetLen(0x030f, 6)
+#elif PACKETVER >= 20080422
+packetLen(0x030f, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x030f, 14)
+#elif PACKETVER >= 20080408
+packetLen(0x030f, -1)
+#endif
+
+// Packet: 0x0310
+#if PACKETVER >= 20080701
+packetLen(0x0310, 27)
+#elif PACKETVER >= 20080624
+packetLen(0x0310, 10)
+#elif PACKETVER >= 20080617
+packetLen(0x0310, 16)
+#elif PACKETVER >= 20080610
+packetLen(0x0310, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x0310, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x0310, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x0310, 182)
+#elif PACKETVER >= 20080507
+packetLen(0x0310, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0310, 2)
+#elif PACKETVER >= 20080422
+packetLen(0x0310, 57)
+#elif PACKETVER >= 20080415
+packetLen(0x0310, 59)
+#elif PACKETVER >= 20080408
+packetLen(0x0310, -1)
+#endif
+
+// Packet: 0x0311
+#if PACKETVER >= 20080701
+packetLen(0x0311, 2)
+#elif PACKETVER >= 20080624
+packetLen(0x0311, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0311, 6)
+#elif PACKETVER >= 20080610
+packetLen(0x0311, 30)
+#elif PACKETVER >= 20080603
+packetLen(0x0311, 7)
+#elif PACKETVER >= 20080528
+packetLen(0x0311, 6)
+#elif PACKETVER >= 20080507
+packetLen(0x0311, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0311, 4)
+#elif PACKETVER >= 20080415
+packetLen(0x0311, 7)
+#elif PACKETVER >= 20080408
+packetLen(0x0311, 10)
+#endif
+
+// Packet: 0x0312
+#if PACKETVER >= 20080617
+packetLen(0x0312, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0312, 34)
+#elif PACKETVER >= 20080603
+packetLen(0x0312, 3)
+#elif PACKETVER >= 20080520
+packetLen(0x0312, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x0312, 13)
+#elif PACKETVER >= 20080507
+packetLen(0x0312, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0312, 81)
+#elif PACKETVER >= 20080422
+packetLen(0x0312, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0312, 67)
+#elif PACKETVER >= 20080408
+packetLen(0x0312, 6)
+#endif
+
+// Packet: 0x0313
+#if PACKETVER >= 20080701
+packetLen(0x0313, 3)
+#elif PACKETVER >= 20080624
+packetLen(0x0313, 2)
+#elif PACKETVER >= 20080610
+packetLen(0x0313, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x0313, 3)
+#elif PACKETVER >= 20080528
+packetLen(0x0313, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x0313, 6)
+#elif PACKETVER >= 20080507
+packetLen(0x0313, 26)
+#elif PACKETVER >= 20080429
+packetLen(0x0313, 282)
+#elif PACKETVER >= 20080422
+packetLen(0x0313, 10)
+#elif PACKETVER >= 20080415
+packetLen(0x0313, 26)
+#elif PACKETVER >= 20080408
+packetLen(0x0313, 2)
+#endif
+
+// Packet: 0x0314
+#if PACKETVER >= 20080624
+packetLen(0x0314, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0314, 3)
+#elif PACKETVER >= 20080603
+packetLen(0x0314, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x0314, 4)
+#elif PACKETVER >= 20080520
+packetLen(0x0314, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x0314, 6)
+#elif PACKETVER >= 20080507
+packetLen(0x0314, 2)
+#elif PACKETVER >= 20080429
+packetLen(0x0314, 4)
+#elif PACKETVER >= 20080422
+packetLen(0x0314, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0314, 29)
+#elif PACKETVER >= 20080408
+packetLen(0x0314, 12)
+#endif
+
+// Packet: 0x0315
+#if PACKETVER >= 20080701
+packetLen(0x0315, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0315, 14)
+#elif PACKETVER >= 20080617
+packetLen(0x0315, 8)
+#elif PACKETVER >= 20080610
+packetLen(0x0315, 10)
+#elif PACKETVER >= 20080528
+packetLen(0x0315, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x0315, 67)
+#elif PACKETVER >= 20080513
+packetLen(0x0315, 60)
+#elif PACKETVER >= 20080429
+packetLen(0x0315, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x0315, 10)
+#elif PACKETVER >= 20080415
+packetLen(0x0315, 14)
+#elif PACKETVER >= 20080408
+packetLen(0x0315, 44)
+#endif
+
+// Packet: 0x0316
+#if PACKETVER >= 20080701
+packetLen(0x0316, 8)
+#elif PACKETVER >= 20080624
+packetLen(0x0316, 97)
+#elif PACKETVER >= 20080617
+packetLen(0x0316, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0316, 8)
+#elif PACKETVER >= 20080603
+packetLen(0x0316, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x0316, 30)
+#elif PACKETVER >= 20080520
+packetLen(0x0316, 11)
+#elif PACKETVER >= 20080513
+packetLen(0x0316, 23)
+#elif PACKETVER >= 20080507
+packetLen(0x0316, 14)
+#elif PACKETVER >= 20080429
+packetLen(0x0316, 9)
+#elif PACKETVER >= 20080422
+packetLen(0x0316, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0316, 6)
+#elif PACKETVER >= 20080408
+packetLen(0x0316, 16)
+#endif
+
+// Packet: 0x0317
+#if PACKETVER >= 20080701
+packetLen(0x0317, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0317, 4)
+#elif PACKETVER >= 20080610
+packetLen(0x0317, 6)
+#elif PACKETVER >= 20080603
+packetLen(0x0317, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x0317, 21)
+#elif PACKETVER >= 20080520
+packetLen(0x0317, 6)
+#elif PACKETVER >= 20080513
+packetLen(0x0317, 7)
+#elif PACKETVER >= 20080507
+packetLen(0x0317, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0317, 6)
+#elif PACKETVER >= 20080415
+packetLen(0x0317, 14)
+#elif PACKETVER >= 20080408
+packetLen(0x0317, -1)
+#endif
+
+// Packet: 0x0318
+#if PACKETVER >= 20080701
+packetLen(0x0318, 6)
+#elif PACKETVER >= 20080610
+packetLen(0x0318, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x0318, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x0318, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x0318, 6)
+#elif PACKETVER >= 20080507
+packetLen(0x0318, 2)
+#elif PACKETVER >= 20080429
+packetLen(0x0318, 6)
+#elif PACKETVER >= 20080422
+packetLen(0x0318, 54)
+#elif PACKETVER >= 20080415
+packetLen(0x0318, 4)
+#elif PACKETVER >= 20080408
+packetLen(0x0318, 26)
+#endif
+
+// Packet: 0x0319
+#if PACKETVER >= 20080610
+packetLen(0x0319, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x0319, 19)
+#elif PACKETVER >= 20080528
+packetLen(0x0319, 6)
+#elif PACKETVER >= 20080507
+packetLen(0x0319, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0319, 22)
+#elif PACKETVER >= 20080422
+packetLen(0x0319, 6)
+#elif PACKETVER >= 20080415
+packetLen(0x0319, 2)
+#elif PACKETVER >= 20080408
+packetLen(0x0319, 17)
+#endif
+
+// Packet: 0x031a
+#if PACKETVER >= 20080701
+packetLen(0x031a, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x031a, 4)
+#elif PACKETVER >= 20080617
+packetLen(0x031a, 5)
+#elif PACKETVER >= 20080610
+packetLen(0x031a, 6)
+#elif PACKETVER >= 20080603
+packetLen(0x031a, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x031a, 6)
+#elif PACKETVER >= 20080520
+packetLen(0x031a, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x031a, 86)
+#elif PACKETVER >= 20080507
+packetLen(0x031a, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x031a, 4)
+#elif PACKETVER >= 20080422
+packetLen(0x031a, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x031a, 7)
+#elif PACKETVER >= 20080408
+packetLen(0x031a, 4)
+#endif
+
+// Packet: 0x031b
+#if PACKETVER >= 20080610
+packetLen(0x031b, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x031b, 2)
+#elif PACKETVER >= 20080528
+packetLen(0x031b, 10)
+#elif PACKETVER >= 20080520
+packetLen(0x031b, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x031b, 2)
+#elif PACKETVER >= 20080507
+packetLen(0x031b, 42)
+#elif PACKETVER >= 20080429
+packetLen(0x031b, 6)
+#elif PACKETVER >= 20080422
+packetLen(0x031b, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x031b, 6)
+#elif PACKETVER >= 20080408
+packetLen(0x031b, 10)
+#endif
+
+// Packet: 0x031c
+#if PACKETVER >= 20080701
+packetLen(0x031c, 6)
+#elif PACKETVER >= 20080624
+packetLen(0x031c, 7)
+#elif PACKETVER >= 20080617
+packetLen(0x031c, 54)
+#elif PACKETVER >= 20080610
+packetLen(0x031c, 6)
+#elif PACKETVER >= 20080603
+packetLen(0x031c, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x031c, 44)
+#elif PACKETVER >= 20080513
+packetLen(0x031c, -1)
+#elif PACKETVER >= 20080507
+packetLen(0x031c, 17)
+#elif PACKETVER >= 20080429
+packetLen(0x031c, 4)
+#elif PACKETVER >= 20080422
+packetLen(0x031c, 9)
+#elif PACKETVER >= 20080415
+packetLen(0x031c, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x031c, 23)
+#endif
+
+// Packet: 0x031d
+#if PACKETVER >= 20080701
+packetLen(0x031d, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x031d, 28)
+#elif PACKETVER >= 20080507
+packetLen(0x031d, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x031d, 35)
+#elif PACKETVER >= 20080422
+packetLen(0x031d, 12)
+#elif PACKETVER >= 20080415
+packetLen(0x031d, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x031d, 2)
+#endif
+
+// Packet: 0x031e
+#if PACKETVER >= 20080701
+packetLen(0x031e, 4)
+#elif PACKETVER >= 20080610
+packetLen(0x031e, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x031e, 26)
+#elif PACKETVER >= 20080507
+packetLen(0x031e, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x031e, 7)
+#elif PACKETVER >= 20080422
+packetLen(0x031e, 11)
+#elif PACKETVER >= 20080415
+packetLen(0x031e, 30)
+#elif PACKETVER >= 20080408
+packetLen(0x031e, -1)
+#endif
+
+// Packet: 0x031f
+#if PACKETVER >= 20080701
+packetLen(0x031f, 4)
+#elif PACKETVER >= 20080624
+packetLen(0x031f, 32)
+#elif PACKETVER >= 20080617
+packetLen(0x031f, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x031f, 54)
+#elif PACKETVER >= 20080603
+packetLen(0x031f, 26)
+#elif PACKETVER >= 20080528
+packetLen(0x031f, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x031f, 2)
+#elif PACKETVER >= 20080513
+packetLen(0x031f, 4)
+#elif PACKETVER >= 20080507
+packetLen(0x031f, 8)
+#elif PACKETVER >= 20080429
+packetLen(0x031f, 282)
+#elif PACKETVER >= 20080415
+packetLen(0x031f, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x031f, 30)
+#endif
+
+// Packet: 0x0320
+#if PACKETVER >= 20080701
+packetLen(0x0320, 3)
+#elif PACKETVER >= 20080617
+packetLen(0x0320, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0320, 14)
+#elif PACKETVER >= 20080603
+packetLen(0x0320, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x0320, 22)
+#elif PACKETVER >= 20080429
+packetLen(0x0320, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x0320, 15)
+#elif PACKETVER >= 20080415
+packetLen(0x0320, 10)
+#elif PACKETVER >= 20080408
+packetLen(0x0320, 15)
+#endif
+
+// Packet: 0x0321
+#if PACKETVER >= 20080701
+packetLen(0x0321, 10)
+#elif PACKETVER >= 20080610
+packetLen(0x0321, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x0321, 23)
+#elif PACKETVER >= 20080507
+packetLen(0x0321, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0321, 30)
+#elif PACKETVER >= 20080422
+packetLen(0x0321, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0321, 24)
+#elif PACKETVER >= 20080408
+packetLen(0x0321, -1)
+#endif
+
+// Packet: 0x0322
+#if PACKETVER >= 20080701
+packetLen(0x0322, 26)
+#elif PACKETVER >= 20080624
+packetLen(0x0322, 5)
+#elif PACKETVER >= 20080617
+packetLen(0x0322, 4)
+#elif PACKETVER >= 20080610
+packetLen(0x0322, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x0322, 282)
+#elif PACKETVER >= 20080528
+packetLen(0x0322, 2)
+#elif PACKETVER >= 20080520
+packetLen(0x0322, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x0322, 14)
+#elif PACKETVER >= 20080507
+packetLen(0x0322, 5)
+#elif PACKETVER >= 20080429
+packetLen(0x0322, 12)
+#elif PACKETVER >= 20080422
+packetLen(0x0322, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0322, 10)
+#elif PACKETVER >= 20080408
+packetLen(0x0322, 68)
+#endif
+
+// Packet: 0x0323
+#if PACKETVER >= 20080701
+packetLen(0x0323, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0323, 4)
+#elif PACKETVER >= 20080610
+packetLen(0x0323, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x0323, 67)
+#elif PACKETVER >= 20080528
+packetLen(0x0323, 14)
+#elif PACKETVER >= 20080520
+packetLen(0x0323, 4)
+#elif PACKETVER >= 20080513
+packetLen(0x0323, 14)
+#elif PACKETVER >= 20080507
+packetLen(0x0323, 186)
+#elif PACKETVER >= 20080429
+packetLen(0x0323, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x0323, 6)
+#elif PACKETVER >= 20080415
+packetLen(0x0323, 34)
+#elif PACKETVER >= 20080408
+packetLen(0x0323, 7)
+#endif
+
+// Packet: 0x0324
+#if PACKETVER >= 20080701
+packetLen(0x0324, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0324, 3)
+#elif PACKETVER >= 20080617
+packetLen(0x0324, 66)
+#elif PACKETVER >= 20080610
+packetLen(0x0324, 2)
+#elif PACKETVER >= 20080603
+packetLen(0x0324, 32)
+#elif PACKETVER >= 20080528
+packetLen(0x0324, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x0324, 6)
+#elif PACKETVER >= 20080513
+packetLen(0x0324, -1)
+#elif PACKETVER >= 20080507
+packetLen(0x0324, 13)
+#elif PACKETVER >= 20080429
+packetLen(0x0324, 26)
+#elif PACKETVER >= 20080422
+packetLen(0x0324, 3)
+#elif PACKETVER >= 20080415
+packetLen(0x0324, 26)
+#elif PACKETVER >= 20080408
+packetLen(0x0324, -1)
+#endif
+
+// Packet: 0x0325
+#if PACKETVER >= 20080701
+packetLen(0x0325, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0325, 7)
+#elif PACKETVER >= 20080528
+packetLen(0x0325, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x0325, 39)
+#elif PACKETVER >= 20080513
+packetLen(0x0325, -1)
+#elif PACKETVER >= 20080507
+packetLen(0x0325, 2)
+#elif PACKETVER >= 20080415
+packetLen(0x0325, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x0325, 6)
+#endif
+
+// Packet: 0x0326
+#if PACKETVER >= 20080617
+packetLen(0x0326, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0326, 6)
+#elif PACKETVER >= 20080603
+packetLen(0x0326, 42)
+#elif PACKETVER >= 20080528
+packetLen(0x0326, 282)
+#elif PACKETVER >= 20080520
+packetLen(0x0326, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x0326, 21)
+#elif PACKETVER >= 20080507
+packetLen(0x0326, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0326, 7)
+#elif PACKETVER >= 20080422
+packetLen(0x0326, 39)
+#elif PACKETVER >= 20080408
+packetLen(0x0326, -1)
+#endif
+
+// Packet: 0x0327
+#if PACKETVER >= 20080701
+packetLen(0x0327, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0327, 4)
+#elif PACKETVER >= 20080617
+packetLen(0x0327, 3)
+#elif PACKETVER >= 20080610
+packetLen(0x0327, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x0327, 4)
+#elif PACKETVER >= 20080528
+packetLen(0x0327, 6)
+#elif PACKETVER >= 20080513
+packetLen(0x0327, -1)
+#elif PACKETVER >= 20080507
+packetLen(0x0327, 6)
+#elif PACKETVER >= 20080422
+packetLen(0x0327, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0327, 6)
+#elif PACKETVER >= 20080408
+packetLen(0x0327, 5)
+#endif
+
+// Packet: 0x0328
+#if PACKETVER >= 20080701
+packetLen(0x0328, 30)
+#elif PACKETVER >= 20080624
+packetLen(0x0328, 282)
+#elif PACKETVER >= 20080617
+packetLen(0x0328, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x0328, 3)
+#elif PACKETVER >= 20080520
+packetLen(0x0328, 54)
+#elif PACKETVER >= 20080513
+packetLen(0x0328, 19)
+#elif PACKETVER >= 20080507
+packetLen(0x0328, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0328, 90)
+#elif PACKETVER >= 20080422
+packetLen(0x0328, 22)
+#elif PACKETVER >= 20080415
+packetLen(0x0328, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x0328, 14)
+#endif
+
+// Packet: 0x0329
+#if PACKETVER >= 20080701
+packetLen(0x0329, 186)
+#elif PACKETVER >= 20080624
+packetLen(0x0329, 66)
+#elif PACKETVER >= 20080610
+packetLen(0x0329, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x0329, 23)
+#elif PACKETVER >= 20080528
+packetLen(0x0329, 4)
+#elif PACKETVER >= 20080520
+packetLen(0x0329, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x0329, 8)
+#elif PACKETVER >= 20080429
+packetLen(0x0329, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x0329, 3)
+#elif PACKETVER >= 20080415
+packetLen(0x0329, 30)
+#elif PACKETVER >= 20080408
+packetLen(0x0329, -1)
+#endif
+
+// Packet: 0x032a
+#if PACKETVER >= 20080701
+packetLen(0x032a, 17)
+#elif PACKETVER >= 20080624
+packetLen(0x032a, 10)
+#elif PACKETVER >= 20080617
+packetLen(0x032a, 9)
+#elif PACKETVER >= 20080610
+packetLen(0x032a, 14)
+#elif PACKETVER >= 20080603
+packetLen(0x032a, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x032a, 5)
+#elif PACKETVER >= 20080520
+packetLen(0x032a, 32)
+#elif PACKETVER >= 20080507
+packetLen(0x032a, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x032a, 6)
+#elif PACKETVER >= 20080422
+packetLen(0x032a, 11)
+#elif PACKETVER >= 20080415
+packetLen(0x032a, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x032a, 8)
+#endif
+
+// Packet: 0x032b
+#if PACKETVER >= 20080701
+packetLen(0x032b, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x032b, 3)
+#elif PACKETVER >= 20080610
+packetLen(0x032b, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x032b, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x032b, 3)
+#elif PACKETVER >= 20080520
+packetLen(0x032b, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x032b, 7)
+#elif PACKETVER >= 20080507
+packetLen(0x032b, 44)
+#elif PACKETVER >= 20080429
+packetLen(0x032b, 14)
+#elif PACKETVER >= 20080422
+packetLen(0x032b, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x032b, 4)
+#elif PACKETVER >= 20080408
+packetLen(0x032b, -1)
+#endif
+
+// Packet: 0x032c
+#if PACKETVER >= 20080701
+packetLen(0x032c, 27)
+#elif PACKETVER >= 20080624
+packetLen(0x032c, 18)
+#elif PACKETVER >= 20080617
+packetLen(0x032c, 2)
+#elif PACKETVER >= 20080603
+packetLen(0x032c, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x032c, 12)
+#elif PACKETVER >= 20080520
+packetLen(0x032c, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x032c, 3)
+#elif PACKETVER >= 20080429
+packetLen(0x032c, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x032c, 8)
+#elif PACKETVER >= 20080415
+packetLen(0x032c, 6)
+#elif PACKETVER >= 20080408
+packetLen(0x032c, -1)
+#endif
+
+// Packet: 0x032d
+#if PACKETVER >= 20080701
+packetLen(0x032d, 10)
+#elif PACKETVER >= 20080624
+packetLen(0x032d, 32)
+#elif PACKETVER >= 20080617
+packetLen(0x032d, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x032d, 4)
+#elif PACKETVER >= 20080603
+packetLen(0x032d, 3)
+#elif PACKETVER >= 20080528
+packetLen(0x032d, 10)
+#elif PACKETVER >= 20080520
+packetLen(0x032d, 6)
+#elif PACKETVER >= 20080513
+packetLen(0x032d, 30)
+#elif PACKETVER >= 20080429
+packetLen(0x032d, 3)
+#elif PACKETVER >= 20080422
+packetLen(0x032d, 90)
+#elif PACKETVER >= 20080415
+packetLen(0x032d, 8)
+#elif PACKETVER >= 20080408
+packetLen(0x032d, -1)
+#endif
+
+// Packet: 0x032e
+#if PACKETVER >= 20080701
+packetLen(0x032e, 26)
+#elif PACKETVER >= 20080624
+packetLen(0x032e, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x032e, 10)
+#elif PACKETVER >= 20080610
+packetLen(0x032e, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x032e, 3)
+#elif PACKETVER >= 20080520
+packetLen(0x032e, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x032e, 20)
+#elif PACKETVER >= 20080507
+packetLen(0x032e, 24)
+#elif PACKETVER >= 20080429
+packetLen(0x032e, 42)
+#elif PACKETVER >= 20080422
+packetLen(0x032e, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x032e, 10)
+#elif PACKETVER >= 20080408
+packetLen(0x032e, 27)
+#endif
+
+// Packet: 0x032f
+#if PACKETVER >= 20080701
+packetLen(0x032f, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x032f, 53)
+#elif PACKETVER >= 20080603
+packetLen(0x032f, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x032f, 58)
+#elif PACKETVER >= 20080520
+packetLen(0x032f, 10)
+#elif PACKETVER >= 20080513
+packetLen(0x032f, 26)
+#elif PACKETVER >= 20080507
+packetLen(0x032f, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x032f, 8)
+#elif PACKETVER >= 20080422
+packetLen(0x032f, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x032f, 27)
+#elif PACKETVER >= 20080408
+packetLen(0x032f, -1)
+#endif
+
+// Packet: 0x0330
+#if PACKETVER >= 20080701
+packetLen(0x0330, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0330, 10)
+#elif PACKETVER >= 20080617
+packetLen(0x0330, 8)
+#elif PACKETVER >= 20080610
+packetLen(0x0330, 67)
+#elif PACKETVER >= 20080603
+packetLen(0x0330, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x0330, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x0330, 4)
+#elif PACKETVER >= 20080429
+packetLen(0x0330, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x0330, 10)
+#elif PACKETVER >= 20080415
+packetLen(0x0330, 16)
+#elif PACKETVER >= 20080408
+packetLen(0x0330, 54)
+#endif
+
+// Packet: 0x0331
+#if PACKETVER >= 20080701
+packetLen(0x0331, 18)
+#elif PACKETVER >= 20080617
+packetLen(0x0331, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0331, 8)
+#elif PACKETVER >= 20080603
+packetLen(0x0331, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x0331, 10)
+#elif PACKETVER >= 20080520
+packetLen(0x0331, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x0331, 12)
+#elif PACKETVER >= 20080507
+packetLen(0x0331, 4)
+#elif PACKETVER >= 20080429
+packetLen(0x0331, 54)
+#elif PACKETVER >= 20080422
+packetLen(0x0331, 6)
+#elif PACKETVER >= 20080415
+packetLen(0x0331, 12)
+#elif PACKETVER >= 20080408
+packetLen(0x0331, -1)
+#endif
+
+// Packet: 0x0332
+#if PACKETVER >= 20080701
+packetLen(0x0332, 15)
+#elif PACKETVER >= 20080624
+packetLen(0x0332, 282)
+#elif PACKETVER >= 20080429
+packetLen(0x0332, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x0332, 114)
+#elif PACKETVER >= 20080415
+packetLen(0x0332, 8)
+#elif PACKETVER >= 20080408
+packetLen(0x0332, 4)
+#endif
+
+// Packet: 0x0333
+#if PACKETVER >= 20080701
+packetLen(0x0333, 28)
+#elif PACKETVER >= 20080610
+packetLen(0x0333, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x0333, 17)
+#elif PACKETVER >= 20080528
+packetLen(0x0333, 2)
+#elif PACKETVER >= 20080520
+packetLen(0x0333, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x0333, 29)
+#elif PACKETVER >= 20080507
+packetLen(0x0333, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0333, 9)
+#elif PACKETVER >= 20080422
+packetLen(0x0333, 35)
+#elif PACKETVER >= 20080415
+packetLen(0x0333, 5)
+#elif PACKETVER >= 20080408
+packetLen(0x0333, -1)
+#endif
+
+// Packet: 0x0334
+#if PACKETVER >= 20080624
+packetLen(0x0334, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0334, 2)
+#elif PACKETVER >= 20080610
+packetLen(0x0334, 7)
+#elif PACKETVER >= 20080603
+packetLen(0x0334, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x0334, 28)
+#elif PACKETVER >= 20080520
+packetLen(0x0334, 60)
+#elif PACKETVER >= 20080507
+packetLen(0x0334, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0334, 6)
+#elif PACKETVER >= 20080422
+packetLen(0x0334, 60)
+#elif PACKETVER >= 20080415
+packetLen(0x0334, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x0334, 5)
+#endif
+
+// Packet: 0x0335
+#if PACKETVER >= 20080701
+packetLen(0x0335, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0335, 3)
+#elif PACKETVER >= 20080617
+packetLen(0x0335, 22)
+#elif PACKETVER >= 20080610
+packetLen(0x0335, 4)
+#elif PACKETVER >= 20080603
+packetLen(0x0335, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x0335, 7)
+#elif PACKETVER >= 20080520
+packetLen(0x0335, 4)
+#elif PACKETVER >= 20080513
+packetLen(0x0335, -1)
+#elif PACKETVER >= 20080507
+packetLen(0x0335, 28)
+#elif PACKETVER >= 20080408
+packetLen(0x0335, -1)
+#endif
+
+// Packet: 0x0336
+#if PACKETVER >= 20080624
+packetLen(0x0336, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0336, 30)
+#elif PACKETVER >= 20080610
+packetLen(0x0336, 33)
+#elif PACKETVER >= 20080603
+packetLen(0x0336, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x0336, 6)
+#elif PACKETVER >= 20080520
+packetLen(0x0336, 7)
+#elif PACKETVER >= 20080513
+packetLen(0x0336, 3)
+#elif PACKETVER >= 20080507
+packetLen(0x0336, 11)
+#elif PACKETVER >= 20080429
+packetLen(0x0336, 27)
+#elif PACKETVER >= 20080415
+packetLen(0x0336, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x0336, 6)
+#endif
+
+// Packet: 0x0337
+#if PACKETVER >= 20080624
+packetLen(0x0337, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0337, 2)
+#elif PACKETVER >= 20080610
+packetLen(0x0337, 4)
+#elif PACKETVER >= 20080603
+packetLen(0x0337, 282)
+#elif PACKETVER >= 20080528
+packetLen(0x0337, 11)
+#elif PACKETVER >= 20080520
+packetLen(0x0337, 2)
+#elif PACKETVER >= 20080507
+packetLen(0x0337, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0337, 8)
+#elif PACKETVER >= 20080422
+packetLen(0x0337, 58)
+#elif PACKETVER >= 20080415
+packetLen(0x0337, 9)
+#elif PACKETVER >= 20080408
+packetLen(0x0337, 42)
+#endif
+
+// Packet: 0x0338
+#if PACKETVER >= 20080701
+packetLen(0x0338, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0338, 10)
+#elif PACKETVER >= 20080520
+packetLen(0x0338, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x0338, 32)
+#elif PACKETVER >= 20080507
+packetLen(0x0338, 11)
+#elif PACKETVER >= 20080429
+packetLen(0x0338, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x0338, 67)
+#elif PACKETVER >= 20080415
+packetLen(0x0338, 6)
+#elif PACKETVER >= 20080408
+packetLen(0x0338, -1)
+#endif
+
+// Packet: 0x0339
+#if PACKETVER >= 20080701
+packetLen(0x0339, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0339, 39)
+#elif PACKETVER >= 20080617
+packetLen(0x0339, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0339, 27)
+#elif PACKETVER >= 20080603
+packetLen(0x0339, 79)
+#elif PACKETVER >= 20080528
+packetLen(0x0339, 3)
+#elif PACKETVER >= 20080520
+packetLen(0x0339, 7)
+#elif PACKETVER >= 20080415
+packetLen(0x0339, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x0339, 7)
+#endif
+
+// Packet: 0x033a
+#if PACKETVER >= 20080701
+packetLen(0x033a, 3)
+#elif PACKETVER >= 20080610
+packetLen(0x033a, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x033a, 5)
+#elif PACKETVER >= 20080528
+packetLen(0x033a, 67)
+#elif PACKETVER >= 20080520
+packetLen(0x033a, 33)
+#elif PACKETVER >= 20080513
+packetLen(0x033a, 39)
+#elif PACKETVER >= 20080507
+packetLen(0x033a, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x033a, 6)
+#elif PACKETVER >= 20080422
+packetLen(0x033a, 4)
+#elif PACKETVER >= 20080415
+packetLen(0x033a, 6)
+#elif PACKETVER >= 20080408
+packetLen(0x033a, 32)
+#endif
+
+// Packet: 0x033b
+#if PACKETVER >= 20080701
+packetLen(0x033b, 6)
+#elif PACKETVER >= 20080617
+packetLen(0x033b, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x033b, 14)
+#elif PACKETVER >= 20080603
+packetLen(0x033b, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x033b, 4)
+#elif PACKETVER >= 20080520
+packetLen(0x033b, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x033b, 182)
+#elif PACKETVER >= 20080507
+packetLen(0x033b, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x033b, 20)
+#elif PACKETVER >= 20080422
+packetLen(0x033b, 6)
+#elif PACKETVER >= 20080415
+packetLen(0x033b, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x033b, 3)
+#endif
+
+// Packet: 0x033c
+#if PACKETVER >= 20080701
+packetLen(0x033c, 53)
+#elif PACKETVER >= 20080624
+packetLen(0x033c, 12)
+#elif PACKETVER >= 20080610
+packetLen(0x033c, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x033c, 4)
+#elif PACKETVER >= 20080528
+packetLen(0x033c, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x033c, 10)
+#elif PACKETVER >= 20080513
+packetLen(0x033c, -1)
+#elif PACKETVER >= 20080507
+packetLen(0x033c, 30)
+#elif PACKETVER >= 20080429
+packetLen(0x033c, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x033c, 10)
+#elif PACKETVER >= 20080415
+packetLen(0x033c, 21)
+#elif PACKETVER >= 20080408
+packetLen(0x033c, 86)
+#endif
+
+// Packet: 0x033d
+#if PACKETVER >= 20080701
+packetLen(0x033d, 32)
+#elif PACKETVER >= 20080624
+packetLen(0x033d, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x033d, 28)
+#elif PACKETVER >= 20080528
+packetLen(0x033d, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x033d, 11)
+#elif PACKETVER >= 20080513
+packetLen(0x033d, -1)
+#elif PACKETVER >= 20080507
+packetLen(0x033d, 10)
+#elif PACKETVER >= 20080429
+packetLen(0x033d, 21)
+#elif PACKETVER >= 20080415
+packetLen(0x033d, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x033d, 10)
+#endif
+
+// Packet: 0x033e
+#if PACKETVER >= 20080624
+packetLen(0x033e, 6)
+#elif PACKETVER >= 20080603
+packetLen(0x033e, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x033e, 11)
+#elif PACKETVER >= 20080520
+packetLen(0x033e, 33)
+#elif PACKETVER >= 20080513
+packetLen(0x033e, 6)
+#elif PACKETVER >= 20080507
+packetLen(0x033e, 4)
+#elif PACKETVER >= 20080429
+packetLen(0x033e, 33)
+#elif PACKETVER >= 20080422
+packetLen(0x033e, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x033e, 3)
+#elif PACKETVER >= 20080408
+packetLen(0x033e, 9)
+#endif
+
+// Packet: 0x033f
+#if PACKETVER >= 20080701
+packetLen(0x033f, 3)
+#elif PACKETVER >= 20080624
+packetLen(0x033f, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x033f, 3)
+#elif PACKETVER >= 20080610
+packetLen(0x033f, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x033f, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x033f, 5)
+#elif PACKETVER >= 20080520
+packetLen(0x033f, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x033f, 282)
+#elif PACKETVER >= 20080507
+packetLen(0x033f, 27)
+#elif PACKETVER >= 20080429
+packetLen(0x033f, 3)
+#elif PACKETVER >= 20080422
+packetLen(0x033f, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x033f, 2)
+#elif PACKETVER >= 20080408
+packetLen(0x033f, -1)
+#endif
+
+// Packet: 0x0340
+#if PACKETVER >= 20080701
+packetLen(0x0340, 2)
+#elif PACKETVER >= 20080610
+packetLen(0x0340, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x0340, 27)
+#elif PACKETVER >= 20080528
+packetLen(0x0340, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x0340, 19)
+#elif PACKETVER >= 20080513
+packetLen(0x0340, 4)
+#elif PACKETVER >= 20080507
+packetLen(0x0340, 18)
+#elif PACKETVER >= 20080429
+packetLen(0x0340, 8)
+#elif PACKETVER >= 20080422
+packetLen(0x0340, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0340, 23)
+#elif PACKETVER >= 20080408
+packetLen(0x0340, -1)
+#endif
+
+// Packet: 0x0341
+#if PACKETVER >= 20080617
+packetLen(0x0341, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0341, 16)
+#elif PACKETVER >= 20080429
+packetLen(0x0341, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x0341, 11)
+#elif PACKETVER >= 20080415
+packetLen(0x0341, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x0341, 2)
+#endif
+
+// Packet: 0x0342
+#if PACKETVER >= 20080701
+packetLen(0x0342, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0342, 186)
+#elif PACKETVER >= 20080610
+packetLen(0x0342, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x0342, 2)
+#elif PACKETVER >= 20080528
+packetLen(0x0342, 4)
+#elif PACKETVER >= 20080513
+packetLen(0x0342, -1)
+#elif PACKETVER >= 20080507
+packetLen(0x0342, 14)
+#elif PACKETVER >= 20080429
+packetLen(0x0342, 30)
+#elif PACKETVER >= 20080422
+packetLen(0x0342, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0342, 5)
+#elif PACKETVER >= 20080408
+packetLen(0x0342, 4)
+#endif
+
+// Packet: 0x0343
+#if PACKETVER >= 20080701
+packetLen(0x0343, 4)
+#elif PACKETVER >= 20080617
+packetLen(0x0343, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0343, 17)
+#elif PACKETVER >= 20080422
+packetLen(0x0343, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0343, 2)
+#elif PACKETVER >= 20080408
+packetLen(0x0343, -1)
+#endif
+
+// Packet: 0x0344
+#if PACKETVER >= 20080701
+packetLen(0x0344, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0344, 6)
+#elif PACKETVER >= 20080617
+packetLen(0x0344, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0344, 35)
+#elif PACKETVER >= 20080603
+packetLen(0x0344, 2)
+#elif PACKETVER >= 20080528
+packetLen(0x0344, 4)
+#elif PACKETVER >= 20080520
+packetLen(0x0344, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x0344, 10)
+#elif PACKETVER >= 20080507
+packetLen(0x0344, 2)
+#elif PACKETVER >= 20080422
+packetLen(0x0344, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0344, 3)
+#elif PACKETVER >= 20080408
+packetLen(0x0344, -1)
+#endif
+
+// Packet: 0x0345
+#if PACKETVER >= 20080701
+packetLen(0x0345, 3)
+#elif PACKETVER >= 20080624
+packetLen(0x0345, 60)
+#elif PACKETVER >= 20080617
+packetLen(0x0345, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0345, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x0345, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x0345, 9)
+#elif PACKETVER >= 20080513
+packetLen(0x0345, -1)
+#elif PACKETVER >= 20080507
+packetLen(0x0345, 6)
+#elif PACKETVER >= 20080429
+packetLen(0x0345, 14)
+#elif PACKETVER >= 20080408
+packetLen(0x0345, -1)
+#endif
+
+// Packet: 0x0346
+#if PACKETVER >= 20080617
+packetLen(0x0346, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0346, 16)
+#elif PACKETVER >= 20080603
+packetLen(0x0346, 3)
+#elif PACKETVER >= 20080520
+packetLen(0x0346, 6)
+#elif PACKETVER >= 20080513
+packetLen(0x0346, 26)
+#elif PACKETVER >= 20080507
+packetLen(0x0346, 11)
+#elif PACKETVER >= 20080429
+packetLen(0x0346, 5)
+#elif PACKETVER >= 20080422
+packetLen(0x0346, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0346, 55)
+#elif PACKETVER >= 20080408
+packetLen(0x0346, 8)
+#endif
+
+// Packet: 0x0347
+#if PACKETVER >= 20080701
+packetLen(0x0347, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0347, 4)
+#elif PACKETVER >= 20080617
+packetLen(0x0347, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0347, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x0347, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x0347, 29)
+#elif PACKETVER >= 20080513
+packetLen(0x0347, 8)
+#elif PACKETVER >= 20080507
+packetLen(0x0347, 6)
+#elif PACKETVER >= 20080429
+packetLen(0x0347, 39)
+#elif PACKETVER >= 20080422
+packetLen(0x0347, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0347, 39)
+#elif PACKETVER >= 20080408
+packetLen(0x0347, -1)
+#endif
+
+// Packet: 0x0348
+#if PACKETVER >= 20080701
+packetLen(0x0348, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0348, 3)
+#elif PACKETVER >= 20080610
+packetLen(0x0348, 6)
+#elif PACKETVER >= 20080603
+packetLen(0x0348, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x0348, 2)
+#elif PACKETVER >= 20080520
+packetLen(0x0348, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x0348, 26)
+#elif PACKETVER >= 20080507
+packetLen(0x0348, 3)
+#elif PACKETVER >= 20080415
+packetLen(0x0348, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x0348, 6)
+#endif
+
+// Packet: 0x0349
+#if PACKETVER >= 20080701
+packetLen(0x0349, 3)
+#elif PACKETVER >= 20080610
+packetLen(0x0349, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x0349, 4)
+#elif PACKETVER >= 20080528
+packetLen(0x0349, 10)
+#elif PACKETVER >= 20080520
+packetLen(0x0349, 26)
+#elif PACKETVER >= 20080513
+packetLen(0x0349, 36)
+#elif PACKETVER >= 20080507
+packetLen(0x0349, 4)
+#elif PACKETVER >= 20080429
+packetLen(0x0349, 54)
+#elif PACKETVER >= 20080422
+packetLen(0x0349, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0349, 11)
+#elif PACKETVER >= 20080408
+packetLen(0x0349, 4)
+#endif
+
+// Packet: 0x034a
+#if PACKETVER >= 20080701
+packetLen(0x034a, 57)
+#elif PACKETVER >= 20080624
+packetLen(0x034a, 34)
+#elif PACKETVER >= 20080617
+packetLen(0x034a, 10)
+#elif PACKETVER >= 20080610
+packetLen(0x034a, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x034a, 26)
+#elif PACKETVER >= 20080528
+packetLen(0x034a, 9)
+#elif PACKETVER >= 20080520
+packetLen(0x034a, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x034a, 59)
+#elif PACKETVER >= 20080429
+packetLen(0x034a, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x034a, 6)
+#elif PACKETVER >= 20080408
+packetLen(0x034a, -1)
+#endif
+
+// Packet: 0x034b
+#if PACKETVER >= 20080701
+packetLen(0x034b, 24)
+#elif PACKETVER >= 20080624
+packetLen(0x034b, 33)
+#elif PACKETVER >= 20080617
+packetLen(0x034b, 26)
+#elif PACKETVER >= 20080610
+packetLen(0x034b, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x034b, 10)
+#elif PACKETVER >= 20080513
+packetLen(0x034b, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x034b, 60)
+#elif PACKETVER >= 20080422
+packetLen(0x034b, 14)
+#elif PACKETVER >= 20080415
+packetLen(0x034b, 65)
+#elif PACKETVER >= 20080408
+packetLen(0x034b, 7)
+#endif
+
+// Packet: 0x034c
+#if PACKETVER >= 20080701
+packetLen(0x034c, 10)
+#elif PACKETVER >= 20080624
+packetLen(0x034c, 6)
+#elif PACKETVER >= 20080610
+packetLen(0x034c, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x034c, 10)
+#elif PACKETVER >= 20080528
+packetLen(0x034c, 86)
+#elif PACKETVER >= 20080520
+packetLen(0x034c, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x034c, 14)
+#elif PACKETVER >= 20080507
+packetLen(0x034c, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x034c, 16)
+#elif PACKETVER >= 20080408
+packetLen(0x034c, -1)
+#endif
+
+// Packet: 0x034d
+#if PACKETVER >= 20080624
+packetLen(0x034d, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x034d, 2)
+#elif PACKETVER >= 20080603
+packetLen(0x034d, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x034d, 6)
+#elif PACKETVER >= 20080429
+packetLen(0x034d, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x034d, 36)
+#elif PACKETVER >= 20080415
+packetLen(0x034d, 23)
+#elif PACKETVER >= 20080408
+packetLen(0x034d, 2)
+#endif
+
+// Packet: 0x034e
+#if PACKETVER >= 20080624
+packetLen(0x034e, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x034e, 2)
+#elif PACKETVER >= 20080603
+packetLen(0x034e, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x034e, 59)
+#elif PACKETVER >= 20080520
+packetLen(0x034e, 7)
+#elif PACKETVER >= 20080429
+packetLen(0x034e, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x034e, 27)
+#elif PACKETVER >= 20080415
+packetLen(0x034e, 90)
+#elif PACKETVER >= 20080408
+packetLen(0x034e, 11)
+#endif
+
+// Packet: 0x034f
+#if PACKETVER >= 20080701
+packetLen(0x034f, 6)
+#elif PACKETVER >= 20080624
+packetLen(0x034f, 71)
+#elif PACKETVER >= 20080617
+packetLen(0x034f, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x034f, 2)
+#elif PACKETVER >= 20080603
+packetLen(0x034f, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x034f, 27)
+#elif PACKETVER >= 20080520
+packetLen(0x034f, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x034f, 8)
+#elif PACKETVER >= 20080429
+packetLen(0x034f, 4)
+#elif PACKETVER >= 20080422
+packetLen(0x034f, 18)
+#elif PACKETVER >= 20080415
+packetLen(0x034f, 11)
+#elif PACKETVER >= 20080408
+packetLen(0x034f, 2)
+#endif
+
+// Packet: 0x0350
+#if PACKETVER >= 20080624
+packetLen(0x0350, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0350, 4)
+#elif PACKETVER >= 20080610
+packetLen(0x0350, 6)
+#elif PACKETVER >= 20080603
+packetLen(0x0350, 60)
+#elif PACKETVER >= 20080520
+packetLen(0x0350, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x0350, 3)
+#elif PACKETVER >= 20080507
+packetLen(0x0350, 6)
+#elif PACKETVER >= 20080429
+packetLen(0x0350, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x0350, 6)
+#elif PACKETVER >= 20080415
+packetLen(0x0350, 10)
+#elif PACKETVER >= 20080408
+packetLen(0x0350, -1)
+#endif
+
+// Packet: 0x0351
+#if PACKETVER >= 20080701
+packetLen(0x0351, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0351, 282)
+#elif PACKETVER >= 20080617
+packetLen(0x0351, 30)
+#elif PACKETVER >= 20080610
+packetLen(0x0351, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x0351, 20)
+#elif PACKETVER >= 20080513
+packetLen(0x0351, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0351, 6)
+#elif PACKETVER >= 20080422
+packetLen(0x0351, 5)
+#elif PACKETVER >= 20080415
+packetLen(0x0351, 15)
+#elif PACKETVER >= 20080408
+packetLen(0x0351, -1)
+#endif
+
+// Packet: 0x0352
+#if PACKETVER >= 20080701
+packetLen(0x0352, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0352, 2)
+#elif PACKETVER >= 20080617
+packetLen(0x0352, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0352, 60)
+#elif PACKETVER >= 20080603
+packetLen(0x0352, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x0352, 54)
+#elif PACKETVER >= 20080520
+packetLen(0x0352, 6)
+#elif PACKETVER >= 20080513
+packetLen(0x0352, 9)
+#elif PACKETVER >= 20080507
+packetLen(0x0352, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0352, 3)
+#elif PACKETVER >= 20080422
+packetLen(0x0352, 10)
+#elif PACKETVER >= 20080415
+packetLen(0x0352, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x0352, 8)
+#endif
+
+// Packet: 0x0353
+#if PACKETVER >= 20080701
+packetLen(0x0353, 6)
+#elif PACKETVER >= 20080610
+packetLen(0x0353, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x0353, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x0353, 30)
+#elif PACKETVER >= 20080520
+packetLen(0x0353, 4)
+#elif PACKETVER >= 20080513
+packetLen(0x0353, 2)
+#elif PACKETVER >= 20080507
+packetLen(0x0353, 34)
+#elif PACKETVER >= 20080429
+packetLen(0x0353, 9)
+#elif PACKETVER >= 20080422
+packetLen(0x0353, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0353, 4)
+#elif PACKETVER >= 20080408
+packetLen(0x0353, -1)
+#endif
+
+// Packet: 0x0354
+#if PACKETVER >= 20080701
+packetLen(0x0354, 23)
+#elif PACKETVER >= 20080624
+packetLen(0x0354, 2)
+#elif PACKETVER >= 20080617
+packetLen(0x0354, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0354, 3)
+#elif PACKETVER >= 20080603
+packetLen(0x0354, 22)
+#elif PACKETVER >= 20080528
+packetLen(0x0354, 10)
+#elif PACKETVER >= 20080520
+packetLen(0x0354, 6)
+#elif PACKETVER >= 20080513
+packetLen(0x0354, 3)
+#elif PACKETVER >= 20080507
+packetLen(0x0354, 6)
+#elif PACKETVER >= 20080429
+packetLen(0x0354, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x0354, 182)
+#elif PACKETVER >= 20080415
+packetLen(0x0354, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x0354, 3)
+#endif
+
+// Packet: 0x0355
+#if PACKETVER >= 20080701
+packetLen(0x0355, 58)
+#elif PACKETVER >= 20080624
+packetLen(0x0355, 30)
+#elif PACKETVER >= 20080617
+packetLen(0x0355, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0355, 7)
+#elif PACKETVER >= 20080603
+packetLen(0x0355, 55)
+#elif PACKETVER >= 20080528
+packetLen(0x0355, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x0355, 6)
+#elif PACKETVER >= 20080513
+packetLen(0x0355, 33)
+#elif PACKETVER >= 20080507
+packetLen(0x0355, 10)
+#elif PACKETVER >= 20080429
+packetLen(0x0355, 36)
+#elif PACKETVER >= 20080422
+packetLen(0x0355, 39)
+#elif PACKETVER >= 20080415
+packetLen(0x0355, 10)
+#elif PACKETVER >= 20080408
+packetLen(0x0355, 2)
+#endif
+
+// Packet: 0x0356
+#if PACKETVER >= 20080617
+packetLen(0x0356, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0356, 29)
+#elif PACKETVER >= 20080603
+packetLen(0x0356, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x0356, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x0356, 27)
+#elif PACKETVER >= 20080513
+packetLen(0x0356, -1)
+#elif PACKETVER >= 20080507
+packetLen(0x0356, 2)
+#elif PACKETVER >= 20080429
+packetLen(0x0356, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x0356, 10)
+#elif PACKETVER >= 20080415
+packetLen(0x0356, 54)
+#elif PACKETVER >= 20080408
+packetLen(0x0356, 57)
+#endif
+
+// Packet: 0x0357
+#if PACKETVER >= 20080617
+packetLen(0x0357, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0357, 3)
+#elif PACKETVER >= 20080603
+packetLen(0x0357, 15)
+#elif PACKETVER >= 20080528
+packetLen(0x0357, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x0357, 21)
+#elif PACKETVER >= 20080513
+packetLen(0x0357, 31)
+#elif PACKETVER >= 20080507
+packetLen(0x0357, 22)
+#elif PACKETVER >= 20080429
+packetLen(0x0357, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x0357, 21)
+#elif PACKETVER >= 20080415
+packetLen(0x0357, 10)
+#elif PACKETVER >= 20080408
+packetLen(0x0357, 33)
+#endif
+
+// Packet: 0x0358
+#if PACKETVER >= 20080624
+packetLen(0x0358, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0358, 14)
+#elif PACKETVER >= 20080610
+packetLen(0x0358, 5)
+#elif PACKETVER >= 20080603
+packetLen(0x0358, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x0358, 14)
+#elif PACKETVER >= 20080513
+packetLen(0x0358, 6)
+#elif PACKETVER >= 20080507
+packetLen(0x0358, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0358, 10)
+#elif PACKETVER >= 20080422
+packetLen(0x0358, 3)
+#elif PACKETVER >= 20080415
+packetLen(0x0358, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x0358, 10)
+#endif
+
+// Packet: 0x0359
+#if PACKETVER >= 20080701
+packetLen(0x0359, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0359, 102)
+#elif PACKETVER >= 20080617
+packetLen(0x0359, 2)
+#elif PACKETVER >= 20080610
+packetLen(0x0359, 6)
+#elif PACKETVER >= 20080603
+packetLen(0x0359, 16)
+#elif PACKETVER >= 20080520
+packetLen(0x0359, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x0359, 3)
+#elif PACKETVER >= 20080507
+packetLen(0x0359, 55)
+#elif PACKETVER >= 20080429
+packetLen(0x0359, 30)
+#elif PACKETVER >= 20080422
+packetLen(0x0359, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0359, 3)
+#elif PACKETVER >= 20080408
+packetLen(0x0359, -1)
+#endif
+
+// Packet: 0x035a
+#if PACKETVER >= 20080624
+packetLen(0x035a, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x035a, 28)
+#elif PACKETVER >= 20080603
+packetLen(0x035a, 3)
+#elif PACKETVER >= 20080528
+packetLen(0x035a, 4)
+#elif PACKETVER >= 20080520
+packetLen(0x035a, 31)
+#elif PACKETVER >= 20080513
+packetLen(0x035a, -1)
+#elif PACKETVER >= 20080507
+packetLen(0x035a, 282)
+#elif PACKETVER >= 20080429
+packetLen(0x035a, 8)
+#elif PACKETVER >= 20080422
+packetLen(0x035a, 79)
+#elif PACKETVER >= 20080415
+packetLen(0x035a, 3)
+#elif PACKETVER >= 20080408
+packetLen(0x035a, -1)
+#endif
+
+// Packet: 0x035b
+#if PACKETVER >= 20080701
+packetLen(0x035b, 6)
+#elif PACKETVER >= 20080624
+packetLen(0x035b, 30)
+#elif PACKETVER >= 20080617
+packetLen(0x035b, 29)
+#elif PACKETVER >= 20080610
+packetLen(0x035b, 6)
+#elif PACKETVER >= 20080603
+packetLen(0x035b, 14)
+#elif PACKETVER >= 20080528
+packetLen(0x035b, 16)
+#elif PACKETVER >= 20080520
+packetLen(0x035b, 6)
+#elif PACKETVER >= 20080513
+packetLen(0x035b, 11)
+#elif PACKETVER >= 20080507
+packetLen(0x035b, 9)
+#elif PACKETVER >= 20080429
+packetLen(0x035b, 5)
+#elif PACKETVER >= 20080415
+packetLen(0x035b, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x035b, 3)
+#endif
+
+// Packet: 0x035c
+#if PACKETVER >= 20080520
+packetLen(0x035c, 2) // CZ_OPEN_SIMPLE_CASHSHOP_ITEMLIST
+#endif
+
+// Packet: 0x035d
+#if PACKETVER >= 20080521
+packetLen(0x035d, -1) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+#elif PACKETVER >= 20080520
+packetLen(0x035d, 10) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+#endif
+
+// Packet: 0x035e
+#if PACKETVER >= 20080521
+packetLen(0x035e, 2) // CZ_CLOSE_WINDOW
+#elif PACKETVER >= 20080520
+packetLen(0x035e, -1) // CZ_CLOSE_WINDOW
+#endif
+
+// Packet: 0x035f
+#if PACKETVER >= 20080624
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20080617
+packetLen(0x035f, 4) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20080528
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+#endif
+
+// Packet: 0x0360
+#if PACKETVER >= 20080701
+packetLen(0x0360, 10) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20080624
+packetLen(0x0360, 11) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20080528
+packetLen(0x0360, -1) // CZ_REQUEST_TIME2
+#endif
+
+// Packet: 0x0361
+#if PACKETVER >= 20080701
+packetLen(0x0361, 27) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20080624
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20080617
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20080528
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#endif
+
+// Packet: 0x0362
+#if PACKETVER >= 20080701
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20080624
+packetLen(0x0362, 4) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20080528
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#endif
+
+// Packet: 0x0363
+#if PACKETVER >= 20080701
+packetLen(0x0363, -1) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20080624
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20080617
+packetLen(0x0363, 58) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20080528
+packetLen(0x0363, -1) // CZ_ITEM_THROW2
+#endif
+
+// Packet: 0x0364
+#if PACKETVER >= 20080701
+packetLen(0x0364, 43) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20080624
+packetLen(0x0364, 5) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20080617
+packetLen(0x0364, 15) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20080528
+packetLen(0x0364, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#endif
+
+// Packet: 0x0365
+#if PACKETVER >= 20080701
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20080528
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#endif
+
+// Packet: 0x0366
+#if PACKETVER >= 20080701
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20080624
+packetLen(0x0366, 67) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20080528
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#endif
+
+// Packet: 0x0367
+#if PACKETVER >= 20080624
+packetLen(0x0367, 10) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20080617
+packetLen(0x0367, 29) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20080528
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#endif
+
+// Packet: 0x0368
+#if PACKETVER >= 20080528
+packetLen(0x0368, -1) // CZ_REQNAME2
+#endif
+
+// Packet: 0x0369
+#if PACKETVER >= 20080701
+packetLen(0x0369, 26) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20080624
+packetLen(0x0369, 28) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20080528
+packetLen(0x0369, -1) // CZ_REQNAME_BYGID2
+#endif
+
+// Packet: 0x036a
+#if PACKETVER >= 20080701
+packetLen(0x036a, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x036a, 2)
+#elif PACKETVER >= 20080528
+packetLen(0x036a, -1)
+#endif
+
+// Packet: 0x036b
+#if PACKETVER >= 20080701
+packetLen(0x036b, 6)
+#elif PACKETVER >= 20080624
+packetLen(0x036b, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x036b, 28)
+#elif PACKETVER >= 20080528
+packetLen(0x036b, -1)
+#endif
+
+// Packet: 0x036c
+#if PACKETVER >= 20080701
+packetLen(0x036c, 4)
+#elif PACKETVER >= 20080624
+packetLen(0x036c, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x036c, -1)
+#endif
+
+// Packet: 0x036d
+#if PACKETVER >= 20080701
+packetLen(0x036d, 5)
+#elif PACKETVER >= 20080624
+packetLen(0x036d, 21)
+#elif PACKETVER >= 20080617
+packetLen(0x036d, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x036d, -1)
+#endif
+
+// Packet: 0x036e
+#if PACKETVER >= 20080624
+packetLen(0x036e, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x036e, 3)
+#elif PACKETVER >= 20080528
+packetLen(0x036e, -1)
+#endif
+
+// Packet: 0x036f
+#if PACKETVER >= 20080701
+packetLen(0x036f, 3)
+#elif PACKETVER >= 20080624
+packetLen(0x036f, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x036f, -1)
+#endif
+
+// Packet: 0x0370
+#if PACKETVER >= 20080701
+packetLen(0x0370, 4)
+#elif PACKETVER >= 20080624
+packetLen(0x0370, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0370, 10)
+#elif PACKETVER >= 20080528
+packetLen(0x0370, -1)
+#endif
+
+// Packet: 0x0371
+#if PACKETVER >= 20080701
+packetLen(0x0371, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x0371, -1)
+#endif
+
+// Packet: 0x0372
+#if PACKETVER >= 20080701
+packetLen(0x0372, 4)
+#elif PACKETVER >= 20080528
+packetLen(0x0372, -1)
+#endif
+
+// Packet: 0x0373
+#if PACKETVER >= 20080701
+packetLen(0x0373, 9)
+#elif PACKETVER >= 20080624
+packetLen(0x0373, 86)
+#elif PACKETVER >= 20080528
+packetLen(0x0373, -1)
+#endif
+
+// Packet: 0x0374
+#if PACKETVER >= 20080701
+packetLen(0x0374, 21)
+#elif PACKETVER >= 20080528
+packetLen(0x0374, -1)
+#endif
+
+// Packet: 0x0375
+#if PACKETVER >= 20080624
+packetLen(0x0375, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0375, 2)
+#elif PACKETVER >= 20080528
+packetLen(0x0375, -1)
+#endif
+
+// Packet: 0x0376
+#if PACKETVER >= 20080528
+packetLen(0x0376, -1)
+#endif
+
+// Packet: 0x0377
+#if PACKETVER >= 20080528
+packetLen(0x0377, -1)
+#endif
+
+// Packet: 0x0378
+#if PACKETVER >= 20080528
+packetLen(0x0378, -1)
+#endif
+
+// Packet: 0x0379
+#if PACKETVER >= 20080701
+packetLen(0x0379, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0379, 10)
+#elif PACKETVER >= 20080617
+packetLen(0x0379, 2)
+#elif PACKETVER >= 20080528
+packetLen(0x0379, -1)
+#endif
+
+// Packet: 0x037a
+#if PACKETVER >= 20080528
+packetLen(0x037a, -1)
+#endif
+
+// Packet: 0x037b
+#if PACKETVER >= 20080701
+packetLen(0x037b, 6)
+#elif PACKETVER >= 20080624
+packetLen(0x037b, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x037b, 11)
+#elif PACKETVER >= 20080528
+packetLen(0x037b, -1)
+#endif
+
+// Packet: 0x037c
+#if PACKETVER >= 20080701
+packetLen(0x037c, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x037c, 10)
+#elif PACKETVER >= 20080617
+packetLen(0x037c, 53)
+#elif PACKETVER >= 20080528
+packetLen(0x037c, -1)
+#endif
+
+// Packet: 0x037d
+#if PACKETVER >= 20080701
+packetLen(0x037d, 3)
+#elif PACKETVER >= 20080528
+packetLen(0x037d, -1)
+#endif
+
+// Packet: 0x037e
+#if PACKETVER >= 20080701
+packetLen(0x037e, 8)
+#elif PACKETVER >= 20080624
+packetLen(0x037e, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x037e, -1)
+#endif
+
+// Packet: 0x037f
+#if PACKETVER >= 20080701
+packetLen(0x037f, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x037f, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x037f, -1)
+#endif
+
+// Packet: 0x0380
+#if PACKETVER >= 20080701
+packetLen(0x0380, 11)
+#elif PACKETVER >= 20080528
+packetLen(0x0380, -1)
+#endif
+
+// Packet: 0x0381
+#if PACKETVER >= 20080624
+packetLen(0x0381, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0381, 14)
+#elif PACKETVER >= 20080528
+packetLen(0x0381, -1)
+#endif
+
+// Packet: 0x0382
+#if PACKETVER >= 20080624
+packetLen(0x0382, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0382, 2)
+#elif PACKETVER >= 20080528
+packetLen(0x0382, -1)
+#endif
+
+// Packet: 0x0383
+#if PACKETVER >= 20080624
+packetLen(0x0383, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0383, 5)
+#elif PACKETVER >= 20080528
+packetLen(0x0383, -1)
+#endif
+
+// Packet: 0x0384
+#if PACKETVER >= 20080701
+packetLen(0x0384, 30)
+#elif PACKETVER >= 20080624
+packetLen(0x0384, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x0384, -1)
+#endif
+
+// Packet: 0x0385
+#if PACKETVER >= 20080624
+packetLen(0x0385, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0385, 4)
+#elif PACKETVER >= 20080528
+packetLen(0x0385, -1)
+#endif
+
+// Packet: 0x0386
+#if PACKETVER >= 20080701
+packetLen(0x0386, 6)
+#elif PACKETVER >= 20080624
+packetLen(0x0386, 9)
+#elif PACKETVER >= 20080617
+packetLen(0x0386, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x0386, -1)
+#endif
+
+// Packet: 0x0387
+#if PACKETVER >= 20080701
+packetLen(0x0387, 22)
+#elif PACKETVER >= 20080624
+packetLen(0x0387, 30)
+#elif PACKETVER >= 20080617
+packetLen(0x0387, 21)
+#elif PACKETVER >= 20080528
+packetLen(0x0387, -1)
+#endif
+
+// Packet: 0x0388
+#if PACKETVER >= 20080624
+packetLen(0x0388, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0388, 22)
+#elif PACKETVER >= 20080528
+packetLen(0x0388, -1)
+#endif
+
+// Packet: 0x0389
+#if PACKETVER >= 20080701
+packetLen(0x0389, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0389, 8)
+#elif PACKETVER >= 20080617
+packetLen(0x0389, 4)
+#elif PACKETVER >= 20080528
+packetLen(0x0389, -1)
+#endif
+
+// Packet: 0x038a
+#if PACKETVER >= 20080701
+packetLen(0x038a, 102)
+#elif PACKETVER >= 20080624
+packetLen(0x038a, 26)
+#elif PACKETVER >= 20080617
+packetLen(0x038a, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x038a, -1)
+#endif
+
+// Packet: 0x038b
+#if PACKETVER >= 20080701
+packetLen(0x038b, 2)
+#elif PACKETVER >= 20080624
+packetLen(0x038b, 11)
+#elif PACKETVER >= 20080617
+packetLen(0x038b, 4)
+#elif PACKETVER >= 20080528
+packetLen(0x038b, -1)
+#endif
+
+// Packet: 0x038c
+#if PACKETVER >= 20080701
+packetLen(0x038c, 4)
+#elif PACKETVER >= 20080624
+packetLen(0x038c, 30)
+#elif PACKETVER >= 20080617
+packetLen(0x038c, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x038c, -1)
+#endif
+
+// Packet: 0x038d
+#if PACKETVER >= 20080701
+packetLen(0x038d, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x038d, 10)
+#elif PACKETVER >= 20080617
+packetLen(0x038d, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x038d, -1)
+#endif
+
+// Packet: 0x038e
+#if PACKETVER >= 20080701
+packetLen(0x038e, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x038e, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x038e, -1)
+#endif
+
+// Packet: 0x038f
+#if PACKETVER >= 20080701
+packetLen(0x038f, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x038f, 2)
+#elif PACKETVER >= 20080528
+packetLen(0x038f, -1)
+#endif
+
+// Packet: 0x0390
+#if PACKETVER >= 20080701
+packetLen(0x0390, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0390, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x0390, -1)
+#endif
+
+// Packet: 0x0391
+#if PACKETVER >= 20080528
+packetLen(0x0391, -1)
+#endif
+
+// Packet: 0x0392
+#if PACKETVER >= 20080624
+packetLen(0x0392, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0392, 26)
+#elif PACKETVER >= 20080528
+packetLen(0x0392, -1)
+#endif
+
+// Packet: 0x0393
+#if PACKETVER >= 20080701
+packetLen(0x0393, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0393, 17)
+#elif PACKETVER >= 20080617
+packetLen(0x0393, 14)
+#elif PACKETVER >= 20080528
+packetLen(0x0393, -1)
+#endif
+
+// Packet: 0x0394
+#if PACKETVER >= 20080701
+packetLen(0x0394, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x0394, -1)
+#endif
+
+// Packet: 0x0395
+#if PACKETVER >= 20080701
+packetLen(0x0395, 4)
+#elif PACKETVER >= 20080624
+packetLen(0x0395, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0395, 3)
+#elif PACKETVER >= 20080528
+packetLen(0x0395, -1)
+#endif
+
+// Packet: 0x0396
+#if PACKETVER >= 20080701
+packetLen(0x0396, 2)
+#elif PACKETVER >= 20080624
+packetLen(0x0396, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0396, 33)
+#elif PACKETVER >= 20080528
+packetLen(0x0396, -1)
+#endif
+
+// Packet: 0x0397
+#if PACKETVER >= 20080701
+packetLen(0x0397, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0397, 5)
+#elif PACKETVER >= 20080528
+packetLen(0x0397, -1)
+#endif
+
+// Packet: 0x0398
+#if PACKETVER >= 20080701
+packetLen(0x0398, 53)
+#elif PACKETVER >= 20080624
+packetLen(0x0398, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0398, 282)
+#elif PACKETVER >= 20080528
+packetLen(0x0398, -1)
+#endif
+
+// Packet: 0x0399
+#if PACKETVER >= 20080701
+packetLen(0x0399, 16)
+#elif PACKETVER >= 20080624
+packetLen(0x0399, 65)
+#elif PACKETVER >= 20080528
+packetLen(0x0399, -1)
+#endif
+
+// Packet: 0x039a
+#if PACKETVER >= 20080701
+packetLen(0x039a, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x039a, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x039a, -1)
+#endif
+
+// Packet: 0x039b
+#if PACKETVER >= 20080624
+packetLen(0x039b, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x039b, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x039b, -1)
+#endif
+
+// Packet: 0x039c
+#if PACKETVER >= 20080701
+packetLen(0x039c, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x039c, 6)
+#elif PACKETVER >= 20080617
+packetLen(0x039c, 26)
+#elif PACKETVER >= 20080528
+packetLen(0x039c, -1)
+#endif
+
+// Packet: 0x039d
+#if PACKETVER >= 20080701
+packetLen(0x039d, 6)
+#elif PACKETVER >= 20080624
+packetLen(0x039d, 3)
+#elif PACKETVER >= 20080617
+packetLen(0x039d, 7)
+#elif PACKETVER >= 20080528
+packetLen(0x039d, -1)
+#endif
+
+// Packet: 0x039e
+#if PACKETVER >= 20080701
+packetLen(0x039e, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x039e, 6)
+#elif PACKETVER >= 20080617
+packetLen(0x039e, 10)
+#elif PACKETVER >= 20080528
+packetLen(0x039e, -1)
+#endif
+
+// Packet: 0x039f
+#if PACKETVER >= 20080701
+packetLen(0x039f, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x039f, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x039f, -1)
+#endif
+
+// Packet: 0x03a0
+#if PACKETVER >= 20080624
+packetLen(0x03a0, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03a0, 2)
+#elif PACKETVER >= 20080528
+packetLen(0x03a0, -1)
+#endif
+
+// Packet: 0x03a1
+#if PACKETVER >= 20080701
+packetLen(0x03a1, 6)
+#elif PACKETVER >= 20080624
+packetLen(0x03a1, 30)
+#elif PACKETVER >= 20080528
+packetLen(0x03a1, -1)
+#endif
+
+// Packet: 0x03a2
+#if PACKETVER >= 20080528
+packetLen(0x03a2, -1)
+#endif
+
+// Packet: 0x03a3
+#if PACKETVER >= 20080701
+packetLen(0x03a3, 21)
+#elif PACKETVER >= 20080624
+packetLen(0x03a3, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03a3, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x03a3, -1)
+#endif
+
+// Packet: 0x03a4
+#if PACKETVER >= 20080701
+packetLen(0x03a4, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x03a4, 2)
+#elif PACKETVER >= 20080528
+packetLen(0x03a4, -1)
+#endif
+
+// Packet: 0x03a5
+#if PACKETVER >= 20080701
+packetLen(0x03a5, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x03a5, 28)
+#elif PACKETVER >= 20080617
+packetLen(0x03a5, 5)
+#elif PACKETVER >= 20080528
+packetLen(0x03a5, -1)
+#endif
+
+// Packet: 0x03a6
+#if PACKETVER >= 20080701
+packetLen(0x03a6, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x03a6, 59)
+#elif PACKETVER >= 20080528
+packetLen(0x03a6, -1)
+#endif
+
+// Packet: 0x03a7
+#if PACKETVER >= 20080701
+packetLen(0x03a7, 68)
+#elif PACKETVER >= 20080624
+packetLen(0x03a7, 11)
+#elif PACKETVER >= 20080528
+packetLen(0x03a7, -1)
+#endif
+
+// Packet: 0x03a8
+#if PACKETVER >= 20080701
+packetLen(0x03a8, 3)
+#elif PACKETVER >= 20080624
+packetLen(0x03a8, 6)
+#elif PACKETVER >= 20080617
+packetLen(0x03a8, 4)
+#elif PACKETVER >= 20080528
+packetLen(0x03a8, -1)
+#endif
+
+// Packet: 0x03a9
+#if PACKETVER >= 20080624
+packetLen(0x03a9, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03a9, 67)
+#elif PACKETVER >= 20080528
+packetLen(0x03a9, -1)
+#endif
+
+// Packet: 0x03aa
+#if PACKETVER >= 20080701
+packetLen(0x03aa, 11)
+#elif PACKETVER >= 20080528
+packetLen(0x03aa, -1)
+#endif
+
+// Packet: 0x03ab
+#if PACKETVER >= 20080624
+packetLen(0x03ab, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03ab, 14)
+#elif PACKETVER >= 20080528
+packetLen(0x03ab, -1)
+#endif
+
+// Packet: 0x03ac
+#if PACKETVER >= 20080624
+packetLen(0x03ac, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03ac, 282)
+#elif PACKETVER >= 20080528
+packetLen(0x03ac, -1)
+#endif
+
+// Packet: 0x03ad
+#if PACKETVER >= 20080701
+packetLen(0x03ad, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x03ad, 2)
+#elif PACKETVER >= 20080617
+packetLen(0x03ad, 21)
+#elif PACKETVER >= 20080528
+packetLen(0x03ad, -1)
+#endif
+
+// Packet: 0x03ae
+#if PACKETVER >= 20080701
+packetLen(0x03ae, 8)
+#elif PACKETVER >= 20080624
+packetLen(0x03ae, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03ae, 57)
+#elif PACKETVER >= 20080528
+packetLen(0x03ae, -1)
+#endif
+
+// Packet: 0x03af
+#if PACKETVER >= 20080701
+packetLen(0x03af, 2)
+#elif PACKETVER >= 20080624
+packetLen(0x03af, 10)
+#elif PACKETVER >= 20080617
+packetLen(0x03af, 14)
+#elif PACKETVER >= 20080528
+packetLen(0x03af, -1)
+#endif
+
+// Packet: 0x03b0
+#if PACKETVER >= 20080701
+packetLen(0x03b0, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x03b0, -1)
+#endif
+
+// Packet: 0x03b1
+#if PACKETVER >= 20080528
+packetLen(0x03b1, -1)
+#endif
+
+// Packet: 0x03b2
+#if PACKETVER >= 20080624
+packetLen(0x03b2, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03b2, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x03b2, -1)
+#endif
+
+// Packet: 0x03b3
+#if PACKETVER >= 20080624
+packetLen(0x03b3, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03b3, 32)
+#elif PACKETVER >= 20080528
+packetLen(0x03b3, -1)
+#endif
+
+// Packet: 0x03b4
+#if PACKETVER >= 20080701
+packetLen(0x03b4, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x03b4, 27)
+#elif PACKETVER >= 20080617
+packetLen(0x03b4, 29)
+#elif PACKETVER >= 20080528
+packetLen(0x03b4, -1)
+#endif
+
+// Packet: 0x03b5
+#if PACKETVER >= 20080528
+packetLen(0x03b5, -1)
+#endif
+
+// Packet: 0x03b6
+#if PACKETVER >= 20080701
+packetLen(0x03b6, 10)
+#elif PACKETVER >= 20080624
+packetLen(0x03b6, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03b6, 114)
+#elif PACKETVER >= 20080528
+packetLen(0x03b6, -1)
+#endif
+
+// Packet: 0x03b7
+#if PACKETVER >= 20080701
+packetLen(0x03b7, 2)
+#elif PACKETVER >= 20080624
+packetLen(0x03b7, 4)
+#elif PACKETVER >= 20080617
+packetLen(0x03b7, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x03b7, -1)
+#endif
+
+// Packet: 0x03b8
+#if PACKETVER >= 20080528
+packetLen(0x03b8, -1)
+#endif
+
+// Packet: 0x03b9
+#if PACKETVER >= 20080701
+packetLen(0x03b9, 28)
+#elif PACKETVER >= 20080624
+packetLen(0x03b9, 19)
+#elif PACKETVER >= 20080528
+packetLen(0x03b9, -1)
+#endif
+
+// Packet: 0x03ba
+#if PACKETVER >= 20080701
+packetLen(0x03ba, 14)
+#elif PACKETVER >= 20080624
+packetLen(0x03ba, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03ba, 26)
+#elif PACKETVER >= 20080528
+packetLen(0x03ba, -1)
+#endif
+
+// Packet: 0x03bb
+#if PACKETVER >= 20080701
+packetLen(0x03bb, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x03bb, 28)
+#elif PACKETVER >= 20080528
+packetLen(0x03bb, -1)
+#endif
+
+// Packet: 0x03bc
+#if PACKETVER >= 20080701
+packetLen(0x03bc, 54)
+#elif PACKETVER >= 20080624
+packetLen(0x03bc, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03bc, 182)
+#elif PACKETVER >= 20080528
+packetLen(0x03bc, -1)
+#endif
+
+// Packet: 0x03bd
+#if PACKETVER >= 20080701
+packetLen(0x03bd, 29)
+#elif PACKETVER >= 20080528
+packetLen(0x03bd, -1)
+#endif
+
+// Packet: 0x03be
+#if PACKETVER >= 20080701
+packetLen(0x03be, 282)
+#elif PACKETVER >= 20080624
+packetLen(0x03be, 3)
+#elif PACKETVER >= 20080528
+packetLen(0x03be, -1)
+#endif
+
+// Packet: 0x03bf
+#if PACKETVER >= 20080701
+packetLen(0x03bf, 22)
+#elif PACKETVER >= 20080528
+packetLen(0x03bf, -1)
+#endif
+
+// Packet: 0x03c0
+#if PACKETVER >= 20080701
+packetLen(0x03c0, 2)
+#elif PACKETVER >= 20080528
+packetLen(0x03c0, -1)
+#endif
+
+// Packet: 0x03c1
+#if PACKETVER >= 20080624
+packetLen(0x03c1, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03c1, 7)
+#elif PACKETVER >= 20080528
+packetLen(0x03c1, -1)
+#endif
+
+// Packet: 0x03c2
+#if PACKETVER >= 20080701
+packetLen(0x03c2, 10)
+#elif PACKETVER >= 20080624
+packetLen(0x03c2, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03c2, 67)
+#elif PACKETVER >= 20080528
+packetLen(0x03c2, -1)
+#endif
+
+// Packet: 0x03c3
+#if PACKETVER >= 20080528
+packetLen(0x03c3, -1)
+#endif
+
+// Packet: 0x03c4
+#if PACKETVER >= 20080528
+packetLen(0x03c4, -1)
+#endif
+
+// Packet: 0x03c5
+#if PACKETVER >= 20080701
+packetLen(0x03c5, 35)
+#elif PACKETVER >= 20080624
+packetLen(0x03c5, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03c5, 2)
+#elif PACKETVER >= 20080528
+packetLen(0x03c5, -1)
+#endif
+
+// Packet: 0x03c6
+#if PACKETVER >= 20080624
+packetLen(0x03c6, 6)
+#elif PACKETVER >= 20080617
+packetLen(0x03c6, 7)
+#elif PACKETVER >= 20080528
+packetLen(0x03c6, -1)
+#endif
+
+// Packet: 0x03c7
+#if PACKETVER >= 20080624
+packetLen(0x03c7, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03c7, 5)
+#elif PACKETVER >= 20080528
+packetLen(0x03c7, -1)
+#endif
+
+// Packet: 0x03c8
+#if PACKETVER >= 20080528
+packetLen(0x03c8, -1)
+#endif
+
+// Packet: 0x03c9
+#if PACKETVER >= 20080528
+packetLen(0x03c9, -1)
+#endif
+
+// Packet: 0x03ca
+#if PACKETVER >= 20080528
+packetLen(0x03ca, -1)
+#endif
+
+// Packet: 0x03cb
+#if PACKETVER >= 20080701
+packetLen(0x03cb, 7)
+#elif PACKETVER >= 20080528
+packetLen(0x03cb, -1)
+#endif
+
+// Packet: 0x03cc
+#if PACKETVER >= 20080701
+packetLen(0x03cc, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x03cc, 35)
+#elif PACKETVER >= 20080617
+packetLen(0x03cc, 7)
+#elif PACKETVER >= 20080528
+packetLen(0x03cc, -1)
+#endif
+
+// Packet: 0x03cd
+#if PACKETVER >= 20080701
+packetLen(0x03cd, 65)
+#elif PACKETVER >= 20080624
+packetLen(0x03cd, 7)
+#elif PACKETVER >= 20080528
+packetLen(0x03cd, -1)
+#endif
+
+// Packet: 0x03ce
+#if PACKETVER >= 20080701
+packetLen(0x03ce, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x03ce, 7)
+#elif PACKETVER >= 20080617
+packetLen(0x03ce, 39)
+#elif PACKETVER >= 20080528
+packetLen(0x03ce, -1)
+#endif
+
+// Packet: 0x03cf
+#if PACKETVER >= 20080701
+packetLen(0x03cf, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x03cf, 67)
+#elif PACKETVER >= 20080617
+packetLen(0x03cf, 27)
+#elif PACKETVER >= 20080528
+packetLen(0x03cf, -1)
+#endif
+
+// Packet: 0x03d0
+#if PACKETVER >= 20080701
+packetLen(0x03d0, 8)
+#elif PACKETVER >= 20080624
+packetLen(0x03d0, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03d0, 4)
+#elif PACKETVER >= 20080528
+packetLen(0x03d0, -1)
+#endif
+
+// Packet: 0x03d1
+#if PACKETVER >= 20080701
+packetLen(0x03d1, 6)
+#elif PACKETVER >= 20080624
+packetLen(0x03d1, 81)
+#elif PACKETVER >= 20080617
+packetLen(0x03d1, 7)
+#elif PACKETVER >= 20080528
+packetLen(0x03d1, -1)
+#endif
+
+// Packet: 0x03d2
+#if PACKETVER >= 20080701
+packetLen(0x03d2, 90)
+#elif PACKETVER >= 20080624
+packetLen(0x03d2, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03d2, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x03d2, -1)
+#endif
+
+// Packet: 0x03d3
+#if PACKETVER >= 20080701
+packetLen(0x03d3, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x03d3, 2)
+#elif PACKETVER >= 20080528
+packetLen(0x03d3, -1)
+#endif
+
+// Packet: 0x03d4
+#if PACKETVER >= 20080701
+packetLen(0x03d4, 12)
+#elif PACKETVER >= 20080624
+packetLen(0x03d4, 14)
+#elif PACKETVER >= 20080617
+packetLen(0x03d4, 27)
+#elif PACKETVER >= 20080528
+packetLen(0x03d4, -1)
+#endif
+
+// Packet: 0x03d5
+#if PACKETVER >= 20080624
+packetLen(0x03d5, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03d5, 4)
+#elif PACKETVER >= 20080528
+packetLen(0x03d5, -1)
+#endif
+
+// Packet: 0x03d6
+#if PACKETVER >= 20080701
+packetLen(0x03d6, 114)
+#elif PACKETVER >= 20080528
+packetLen(0x03d6, -1)
+#endif
+
+// Packet: 0x03d7
+#if PACKETVER >= 20080701
+packetLen(0x03d7, 23)
+#elif PACKETVER >= 20080528
+packetLen(0x03d7, -1)
+#endif
+
+// Packet: 0x03d8
+#if PACKETVER >= 20080701
+packetLen(0x03d8, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x03d8, 3)
+#elif PACKETVER >= 20080617
+packetLen(0x03d8, 2)
+#elif PACKETVER >= 20080528
+packetLen(0x03d8, -1)
+#endif
+
+// Packet: 0x03d9
+#if PACKETVER >= 20080701
+packetLen(0x03d9, 6)
+#elif PACKETVER >= 20080624
+packetLen(0x03d9, 30)
+#elif PACKETVER >= 20080528
+packetLen(0x03d9, -1)
+#endif
+
+// Packet: 0x03da
+#if PACKETVER >= 20080528
+packetLen(0x03da, -1)
+#endif
+
+// Packet: 0x03db
+#if PACKETVER >= 20080701
+packetLen(0x03db, 79)
+#elif PACKETVER >= 20080624
+packetLen(0x03db, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03db, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x03db, -1)
+#endif
+
+// Packet: 0x03dc
+#if PACKETVER >= 20080701
+packetLen(0x03dc, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x03dc, 10)
+#elif PACKETVER >= 20080617
+packetLen(0x03dc, 54)
+#elif PACKETVER >= 20080528
+packetLen(0x03dc, -1)
+#endif
+
+// Packet: 0x03dd
+#if PACKETVER >= 20080624
+packetLen(0x03dd, 18) // AHC_GAME_GUARD
+#endif
+
+// Packet: 0x03de
+#if PACKETVER >= 20080624
+packetLen(0x03de, 18) // CAH_ACK_GAME_GUARD
+#endif
+
+
+#endif /* COMMON_PACKETS2008_LEN_AD_H */
diff --git a/src/common/packets/packets2008_len_main.h b/src/common/packets/packets2008_len_main.h
new file mode 100644
index 000000000..4eafe5e89
--- /dev/null
+++ b/src/common/packets/packets2008_len_main.h
@@ -0,0 +1,39478 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2008_LEN_MAIN_H
+#define COMMON_PACKETS2008_LEN_MAIN_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 110) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 22) // CZ_ENTER
+
+// Packet: 0x0073
+#if PACKETVER >= 20081217
+packetLen(0x0073, -1) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20081203
+packetLen(0x0073, 10) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20081126
+packetLen(0x0073, 30) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20081112
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0073, 7) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20081029
+packetLen(0x0073, -1) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20081022
+packetLen(0x0073, 12) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20081015
+packetLen(0x0073, -1) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20081008
+packetLen(0x0073, 33) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20081001
+packetLen(0x0073, 60) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080917
+packetLen(0x0073, -1) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080910
+packetLen(0x0073, 7) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080827
+packetLen(0x0073, -1) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080820
+packetLen(0x0073, 15) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080813
+packetLen(0x0073, 6) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080806
+packetLen(0x0073, 7) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080715
+packetLen(0x0073, -1) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080708
+packetLen(0x0073, 6) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080701
+packetLen(0x0073, 71) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080624
+packetLen(0x0073, -1) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080617
+packetLen(0x0073, 32) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080603
+packetLen(0x0073, -1) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080528
+packetLen(0x0073, 6) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080520
+packetLen(0x0073, 2) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080513
+packetLen(0x0073, -1) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080507
+packetLen(0x0073, 97) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080429
+packetLen(0x0073, 2) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080422
+packetLen(0x0073, 4) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080415
+packetLen(0x0073, -1) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080408
+packetLen(0x0073, 24) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080401
+packetLen(0x0073, 10) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080325
+packetLen(0x0073, 5) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080318
+packetLen(0x0073, 3) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080311
+packetLen(0x0073, 6) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080304
+packetLen(0x0073, 14) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080226
+packetLen(0x0073, 53) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080219
+packetLen(0x0073, 22) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080124
+packetLen(0x0073, 66) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080102
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+#endif
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+#if PACKETVER >= 20081217
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20081203
+packetLen(0x0075, 7) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20081126
+packetLen(0x0075, 2) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20081112
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20081105
+packetLen(0x0075, 8) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20081022
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20081015
+packetLen(0x0075, 29) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20081008
+packetLen(0x0075, 32) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20081001
+packetLen(0x0075, 2) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080924
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080910
+packetLen(0x0075, 3) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080827
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080820
+packetLen(0x0075, 2) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080813
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080806
+packetLen(0x0075, 3) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080730
+packetLen(0x0075, 26) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080722
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080715
+packetLen(0x0075, 8) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080708
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080701
+packetLen(0x0075, 30) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080624
+packetLen(0x0075, 5) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080617
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080610
+packetLen(0x0075, 8) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080603
+packetLen(0x0075, 6) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080528
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080520
+packetLen(0x0075, 12) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080513
+packetLen(0x0075, 30) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080507
+packetLen(0x0075, 8) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080429
+packetLen(0x0075, 26) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080422
+packetLen(0x0075, 6) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080408
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080401
+packetLen(0x0075, 39) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080325
+packetLen(0x0075, 4) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080318
+packetLen(0x0075, 2) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080311
+packetLen(0x0075, 30) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080304
+packetLen(0x0075, 6) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080226
+packetLen(0x0075, 8) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080219
+packetLen(0x0075, 28) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080124
+packetLen(0x0075, 6) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080102
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+#endif
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+#if PACKETVER >= 20081203
+packetLen(0x0077, -1) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20081126
+packetLen(0x0077, 53) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20081119
+packetLen(0x0077, 186) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20081112
+packetLen(0x0077, 28) // ZC_NOTIFY_UPDATEPLAYER
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0077, -1) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20081029
+packetLen(0x0077, 6) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20081022
+packetLen(0x0077, 4) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20081015
+packetLen(0x0077, -1) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20081001
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080924
+packetLen(0x0077, 3) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080917
+packetLen(0x0077, 4) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080910
+packetLen(0x0077, 26) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080903
+packetLen(0x0077, -1) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080827
+packetLen(0x0077, 14) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080820
+packetLen(0x0077, 7) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080813
+packetLen(0x0077, 31) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080806
+packetLen(0x0077, 11) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080730
+packetLen(0x0077, 14) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080722
+packetLen(0x0077, 2) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080708
+packetLen(0x0077, -1) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080701
+packetLen(0x0077, 2) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080624
+packetLen(0x0077, 6) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080617
+packetLen(0x0077, -1) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080610
+packetLen(0x0077, 14) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080603
+packetLen(0x0077, 86) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080528
+packetLen(0x0077, 8) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080520
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080422
+packetLen(0x0077, -1) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080415
+packetLen(0x0077, 4) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080408
+packetLen(0x0077, 13) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080401
+packetLen(0x0077, -1) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080325
+packetLen(0x0077, 10) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080318
+packetLen(0x0077, 8) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080311
+packetLen(0x0077, 30) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080304
+packetLen(0x0077, 10) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080226
+packetLen(0x0077, 14) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080219
+packetLen(0x0077, 2) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080124
+packetLen(0x0077, 3) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080102
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+#endif
+
+// Packet: 0x0078
+#if PACKETVER >= 20081217
+packetLen(0x0078, -1) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20081203
+packetLen(0x0078, 26) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20081126
+packetLen(0x0078, 10) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20081119
+packetLen(0x0078, 8) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20081112
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0078, 7) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20081022
+packetLen(0x0078, -1) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20081015
+packetLen(0x0078, 10) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080917
+packetLen(0x0078, -1) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080910
+packetLen(0x0078, 10) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080715
+packetLen(0x0078, -1) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080708
+packetLen(0x0078, 4) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080701
+packetLen(0x0078, 20) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080617
+packetLen(0x0078, -1) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080603
+packetLen(0x0078, 14) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080528
+packetLen(0x0078, 22) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080520
+packetLen(0x0078, 14) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080507
+packetLen(0x0078, -1) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080429
+packetLen(0x0078, 8) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080415
+packetLen(0x0078, -1) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080408
+packetLen(0x0078, 14) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080325
+packetLen(0x0078, 8) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080318
+packetLen(0x0078, 2) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080311
+packetLen(0x0078, 53) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x0078, 11) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080226
+packetLen(0x0078, 6) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080219
+packetLen(0x0078, -1) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080124
+packetLen(0x0078, 32) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+#endif
+
+// Packet: 0x0079
+#if PACKETVER >= 20081112
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0079, 30) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20081029
+packetLen(0x0079, -1) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20081022
+packetLen(0x0079, 28) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20081015
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20081008
+packetLen(0x0079, -1) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20081001
+packetLen(0x0079, 7) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080924
+packetLen(0x0079, 3) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080917
+packetLen(0x0079, 29) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080827
+packetLen(0x0079, -1) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080820
+packetLen(0x0079, 5) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080813
+packetLen(0x0079, 6) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080730
+packetLen(0x0079, -1) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080722
+packetLen(0x0079, 10) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080715
+packetLen(0x0079, 58) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080708
+packetLen(0x0079, 114) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080701
+packetLen(0x0079, 4) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080617
+packetLen(0x0079, -1) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080610
+packetLen(0x0079, 3) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080528
+packetLen(0x0079, -1) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080520
+packetLen(0x0079, 54) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080513
+packetLen(0x0079, -1) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080507
+packetLen(0x0079, 57) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080429
+packetLen(0x0079, 10) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080422
+packetLen(0x0079, 14) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080415
+packetLen(0x0079, -1) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080401
+packetLen(0x0079, 6) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080325
+packetLen(0x0079, 7) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080318
+packetLen(0x0079, -1) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080311
+packetLen(0x0079, 8) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x0079, 4) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080226
+packetLen(0x0079, 2) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080219
+packetLen(0x0079, 27) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080124
+packetLen(0x0079, 2) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+#endif
+
+// Packet: 0x007a
+#if PACKETVER >= 20081112
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x007a, -1) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20081029
+packetLen(0x007a, 26) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20081022
+packetLen(0x007a, 53) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20081015
+packetLen(0x007a, 6) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20081008
+packetLen(0x007a, 2) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20081001
+packetLen(0x007a, 3) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080917
+packetLen(0x007a, -1) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080910
+packetLen(0x007a, 27) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080903
+packetLen(0x007a, -1) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080827
+packetLen(0x007a, 282) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080820
+packetLen(0x007a, -1) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080813
+packetLen(0x007a, 4) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080806
+packetLen(0x007a, 39) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080708
+packetLen(0x007a, -1) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080701
+packetLen(0x007a, 2) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080617
+packetLen(0x007a, 6) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080610
+packetLen(0x007a, 53) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080513
+packetLen(0x007a, -1) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080507
+packetLen(0x007a, 3) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080429
+packetLen(0x007a, 8) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080408
+packetLen(0x007a, -1) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080401
+packetLen(0x007a, 114) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080325
+packetLen(0x007a, 22) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080318
+packetLen(0x007a, 282) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080311
+packetLen(0x007a, 5) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x007a, 2) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080226
+packetLen(0x007a, -1) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080219
+packetLen(0x007a, 29) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080124
+packetLen(0x007a, 2) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+#endif
+
+// Packet: 0x007b
+#if PACKETVER >= 20081217
+packetLen(0x007b, -1) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20081203
+packetLen(0x007b, 20) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20081126
+packetLen(0x007b, 30) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20081119
+packetLen(0x007b, -1) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20081112
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081015
+packetLen(0x007b, -1) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20081008
+packetLen(0x007b, 3) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20081001
+packetLen(0x007b, -1) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080924
+packetLen(0x007b, 27) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080917
+packetLen(0x007b, 7) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080910
+packetLen(0x007b, 6) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080806
+packetLen(0x007b, -1) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080730
+packetLen(0x007b, 13) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080722
+packetLen(0x007b, 2) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080715
+packetLen(0x007b, -1) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080708
+packetLen(0x007b, 4) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080603
+packetLen(0x007b, -1) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080528
+packetLen(0x007b, 42) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080520
+packetLen(0x007b, -1) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080513
+packetLen(0x007b, 11) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080507
+packetLen(0x007b, -1) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080429
+packetLen(0x007b, 6) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080415
+packetLen(0x007b, -1) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080408
+packetLen(0x007b, 2) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080325
+packetLen(0x007b, 6) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080318
+packetLen(0x007b, 11) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080311
+packetLen(0x007b, 186) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x007b, 30) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080226
+packetLen(0x007b, 5) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080219
+packetLen(0x007b, 2) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080124
+packetLen(0x007b, 14) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+#endif
+
+// Packet: 0x007c
+#if PACKETVER >= 20081217
+packetLen(0x007c, 2) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20081112
+packetLen(0x007c, 42) // ZC_NOTIFY_STANDENTRY_NPC
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x007c, -1) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20081015
+packetLen(0x007c, 10) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080924
+packetLen(0x007c, -1) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080917
+packetLen(0x007c, 53) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080910
+packetLen(0x007c, 6) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080903
+packetLen(0x007c, -1) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080820
+packetLen(0x007c, 6) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080708
+packetLen(0x007c, -1) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080701
+packetLen(0x007c, 5) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080624
+packetLen(0x007c, 16) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080528
+packetLen(0x007c, -1) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080520
+packetLen(0x007c, 3) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080513
+packetLen(0x007c, 7) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080429
+packetLen(0x007c, -1) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080422
+packetLen(0x007c, 65) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080415
+packetLen(0x007c, 8) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080408
+packetLen(0x007c, 11) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080401
+packetLen(0x007c, 8) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080325
+packetLen(0x007c, 10) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080318
+packetLen(0x007c, 2) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080311
+packetLen(0x007c, -1) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080304
+packetLen(0x007c, 3) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080226
+packetLen(0x007c, 8) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080219
+packetLen(0x007c, 186) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080124
+packetLen(0x007c, 31) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080102
+packetLen(0x007c, 42) // ZC_NOTIFY_STANDENTRY_NPC
+#endif
+
+// Packet: 0x007d
+#if PACKETVER >= 20081203
+packetLen(0x007d, -1) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20081126
+packetLen(0x007d, 22) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20081119
+packetLen(0x007d, 16) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20081112
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20081029
+packetLen(0x007d, -1) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20081022
+packetLen(0x007d, 6) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20081008
+packetLen(0x007d, -1) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20081001
+packetLen(0x007d, 10) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080917
+packetLen(0x007d, -1) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080910
+packetLen(0x007d, 6) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080903
+packetLen(0x007d, 57) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080820
+packetLen(0x007d, -1) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080813
+packetLen(0x007d, 4) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080617
+packetLen(0x007d, -1) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080610
+packetLen(0x007d, 26) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080603
+packetLen(0x007d, 6) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080528
+packetLen(0x007d, -1) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080520
+packetLen(0x007d, 9) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080513
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080507
+packetLen(0x007d, 10) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080429
+packetLen(0x007d, 11) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080422
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080415
+packetLen(0x007d, 30) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080401
+packetLen(0x007d, -1) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080325
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080311
+packetLen(0x007d, -1) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080304
+packetLen(0x007d, 14) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080226
+packetLen(0x007d, 26) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080219
+packetLen(0x007d, 3) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080124
+packetLen(0x007d, 22) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080102
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+#endif
+
+// Packet: 0x007e
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+#if PACKETVER >= 20081119
+packetLen(0x007f, -1) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20081112
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20081105
+packetLen(0x007f, -1) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20081029
+packetLen(0x007f, 2) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20081022
+packetLen(0x007f, 10) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20081015
+packetLen(0x007f, -1) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20081008
+packetLen(0x007f, 2) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080903
+packetLen(0x007f, -1) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080827
+packetLen(0x007f, 4) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080820
+packetLen(0x007f, 53) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080813
+packetLen(0x007f, 26) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080806
+packetLen(0x007f, -1) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080730
+packetLen(0x007f, 10) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080722
+packetLen(0x007f, -1) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080715
+packetLen(0x007f, 22) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080624
+packetLen(0x007f, -1) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080617
+packetLen(0x007f, 5) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080603
+packetLen(0x007f, -1) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080528
+packetLen(0x007f, 13) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080520
+packetLen(0x007f, -1) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080513
+packetLen(0x007f, 10) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080507
+packetLen(0x007f, 3) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080429
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080422
+packetLen(0x007f, -1) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080415
+packetLen(0x007f, 7) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080408
+packetLen(0x007f, 3) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080401
+packetLen(0x007f, 182) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080325
+packetLen(0x007f, 10) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080318
+packetLen(0x007f, -1) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080311
+packetLen(0x007f, 10) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080304
+packetLen(0x007f, -1) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080226
+packetLen(0x007f, 54) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080219
+packetLen(0x007f, 4) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080124
+packetLen(0x007f, -1) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080102
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+#endif
+
+// Packet: 0x0080
+#if PACKETVER >= 20081217
+packetLen(0x0080, -1) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20081203
+packetLen(0x0080, 3) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20081119
+packetLen(0x0080, -1) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20081112
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0080, -1) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20081029
+packetLen(0x0080, 9) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20081001
+packetLen(0x0080, -1) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080924
+packetLen(0x0080, 27) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080917
+packetLen(0x0080, 11) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080910
+packetLen(0x0080, -1) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080903
+packetLen(0x0080, 22) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080827
+packetLen(0x0080, 58) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080624
+packetLen(0x0080, -1) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080617
+packetLen(0x0080, 2) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080603
+packetLen(0x0080, -1) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080528
+packetLen(0x0080, 22) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080520
+packetLen(0x0080, 10) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080513
+packetLen(0x0080, 6) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080422
+packetLen(0x0080, -1) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080415
+packetLen(0x0080, 5) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080325
+packetLen(0x0080, -1) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080318
+packetLen(0x0080, 60) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080311
+packetLen(0x0080, -1) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080304
+packetLen(0x0080, 28) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080226
+packetLen(0x0080, 4) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080219
+packetLen(0x0080, 10) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080124
+packetLen(0x0080, -1) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080102
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+#endif
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+#if PACKETVER >= 20081217
+packetLen(0x0083, 3) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20081203
+packetLen(0x0083, -1) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20081126
+packetLen(0x0083, 6) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20081119
+packetLen(0x0083, 282) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20081112
+packetLen(0x0083, 58) // ZC_ACCEPT_QUIT
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0083, 4) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20081029
+packetLen(0x0083, 33) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20081022
+packetLen(0x0083, 282) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20081015
+packetLen(0x0083, 26) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20081008
+packetLen(0x0083, 21) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20081001
+packetLen(0x0083, -1) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080924
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080910
+packetLen(0x0083, -1) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080903
+packetLen(0x0083, 10) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080820
+packetLen(0x0083, -1) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080813
+packetLen(0x0083, 39) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080806
+packetLen(0x0083, 6) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080715
+packetLen(0x0083, -1) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080708
+packetLen(0x0083, 10) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080624
+packetLen(0x0083, -1) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080617
+packetLen(0x0083, 34) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080610
+packetLen(0x0083, 6) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080603
+packetLen(0x0083, 13) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080528
+packetLen(0x0083, -1) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080520
+packetLen(0x0083, 4) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080513
+packetLen(0x0083, 5) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080507
+packetLen(0x0083, 30) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080429
+packetLen(0x0083, 282) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080422
+packetLen(0x0083, -1) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080415
+packetLen(0x0083, 5) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080408
+packetLen(0x0083, 28) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080325
+packetLen(0x0083, 30) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080318
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080311
+packetLen(0x0083, 21) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080304
+packetLen(0x0083, 10) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080226
+packetLen(0x0083, 6) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080219
+packetLen(0x0083, 10) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080102
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+#endif
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 10) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+#if PACKETVER >= 20081217
+packetLen(0x0086, 17) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20081203
+packetLen(0x0086, 36) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20081112
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0086, -1) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20081029
+packetLen(0x0086, 6) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20081008
+packetLen(0x0086, -1) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20081001
+packetLen(0x0086, 8) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080924
+packetLen(0x0086, 7) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080903
+packetLen(0x0086, -1) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080827
+packetLen(0x0086, 6) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080820
+packetLen(0x0086, -1) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080813
+packetLen(0x0086, 4) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080806
+packetLen(0x0086, 53) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080730
+packetLen(0x0086, -1) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080722
+packetLen(0x0086, 3) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080715
+packetLen(0x0086, -1) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080708
+packetLen(0x0086, 8) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080701
+packetLen(0x0086, 2) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080610
+packetLen(0x0086, -1) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080603
+packetLen(0x0086, 3) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080528
+packetLen(0x0086, 17) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080520
+packetLen(0x0086, 30) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080513
+packetLen(0x0086, -1) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080507
+packetLen(0x0086, 32) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080429
+packetLen(0x0086, -1) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080422
+packetLen(0x0086, 24) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080415
+packetLen(0x0086, 8) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080408
+packetLen(0x0086, 10) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080401
+packetLen(0x0086, 22) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080325
+packetLen(0x0086, 2) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080318
+packetLen(0x0086, 22) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080311
+packetLen(0x0086, 14) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080304
+packetLen(0x0086, 79) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080226
+packetLen(0x0086, 14) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080219
+packetLen(0x0086, 10) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080124
+packetLen(0x0086, 7) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080102
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+#endif
+
+// Packet: 0x0087
+#if PACKETVER >= 20081217
+packetLen(0x0087, 8) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20081119
+packetLen(0x0087, -1) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20081112
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x0087, -1) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20081022
+packetLen(0x0087, 44) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20081001
+packetLen(0x0087, -1) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080924
+packetLen(0x0087, 60) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080910
+packetLen(0x0087, -1) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080903
+packetLen(0x0087, 8) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080827
+packetLen(0x0087, 2) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080820
+packetLen(0x0087, 10) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080730
+packetLen(0x0087, -1) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080722
+packetLen(0x0087, 90) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080715
+packetLen(0x0087, 4) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080708
+packetLen(0x0087, 5) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080701
+packetLen(0x0087, -1) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080624
+packetLen(0x0087, 4) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080610
+packetLen(0x0087, -1) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080603
+packetLen(0x0087, 27) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080528
+packetLen(0x0087, 282) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080520
+packetLen(0x0087, 10) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080513
+packetLen(0x0087, -1) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080429
+packetLen(0x0087, 2) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080422
+packetLen(0x0087, 6) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080415
+packetLen(0x0087, 14) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080408
+packetLen(0x0087, 11) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080401
+packetLen(0x0087, -1) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080325
+packetLen(0x0087, 14) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080318
+packetLen(0x0087, -1) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080311
+packetLen(0x0087, 26) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080304
+packetLen(0x0087, -1) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080226
+packetLen(0x0087, 6) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080219
+packetLen(0x0087, 14) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080124
+packetLen(0x0087, 31) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080102
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+#endif
+
+// Packet: 0x0088
+#if PACKETVER >= 20081126
+packetLen(0x0088, -1) // ZC_STOPMOVE
+#elif PACKETVER >= 20081119
+packetLen(0x0088, 4) // ZC_STOPMOVE
+#elif PACKETVER >= 20081112
+packetLen(0x0088, 18) // ZC_STOPMOVE
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0088, 2) // ZC_STOPMOVE
+#elif PACKETVER >= 20081029
+packetLen(0x0088, -1) // ZC_STOPMOVE
+#elif PACKETVER >= 20081022
+packetLen(0x0088, 11) // ZC_STOPMOVE
+#elif PACKETVER >= 20081001
+packetLen(0x0088, -1) // ZC_STOPMOVE
+#elif PACKETVER >= 20080924
+packetLen(0x0088, 60) // ZC_STOPMOVE
+#elif PACKETVER >= 20080910
+packetLen(0x0088, -1) // ZC_STOPMOVE
+#elif PACKETVER >= 20080903
+packetLen(0x0088, 15) // ZC_STOPMOVE
+#elif PACKETVER >= 20080806
+packetLen(0x0088, -1) // ZC_STOPMOVE
+#elif PACKETVER >= 20080730
+packetLen(0x0088, 22) // ZC_STOPMOVE
+#elif PACKETVER >= 20080722
+packetLen(0x0088, 26) // ZC_STOPMOVE
+#elif PACKETVER >= 20080708
+packetLen(0x0088, -1) // ZC_STOPMOVE
+#elif PACKETVER >= 20080701
+packetLen(0x0088, 19) // ZC_STOPMOVE
+#elif PACKETVER >= 20080624
+packetLen(0x0088, -1) // ZC_STOPMOVE
+#elif PACKETVER >= 20080617
+packetLen(0x0088, 10) // ZC_STOPMOVE
+#elif PACKETVER >= 20080610
+packetLen(0x0088, 19) // ZC_STOPMOVE
+#elif PACKETVER >= 20080603
+packetLen(0x0088, 60) // ZC_STOPMOVE
+#elif PACKETVER >= 20080528
+packetLen(0x0088, 15) // ZC_STOPMOVE
+#elif PACKETVER >= 20080520
+packetLen(0x0088, 6) // ZC_STOPMOVE
+#elif PACKETVER >= 20080513
+packetLen(0x0088, 7) // ZC_STOPMOVE
+#elif PACKETVER >= 20080429
+packetLen(0x0088, -1) // ZC_STOPMOVE
+#elif PACKETVER >= 20080422
+packetLen(0x0088, 3) // ZC_STOPMOVE
+#elif PACKETVER >= 20080415
+packetLen(0x0088, 86) // ZC_STOPMOVE
+#elif PACKETVER >= 20080408
+packetLen(0x0088, 10) // ZC_STOPMOVE
+#elif PACKETVER >= 20080401
+packetLen(0x0088, 282) // ZC_STOPMOVE
+#elif PACKETVER >= 20080325
+packetLen(0x0088, 3) // ZC_STOPMOVE
+#elif PACKETVER >= 20080311
+packetLen(0x0088, -1) // ZC_STOPMOVE
+#elif PACKETVER >= 20080304
+packetLen(0x0088, 97) // ZC_STOPMOVE
+#elif PACKETVER >= 20080219
+packetLen(0x0088, 30) // ZC_STOPMOVE
+#elif PACKETVER >= 20080124
+packetLen(0x0088, 4) // ZC_STOPMOVE
+#elif PACKETVER >= 20080102
+packetLen(0x0088, 10) // ZC_STOPMOVE
+#endif
+
+// Packet: 0x0089
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+#if PACKETVER >= 20081126
+packetLen(0x008a, -1) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20081119
+packetLen(0x008a, 7) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20081112
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x008a, -1) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20081029
+packetLen(0x008a, 10) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20081022
+packetLen(0x008a, -1) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20081015
+packetLen(0x008a, 30) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20081001
+packetLen(0x008a, -1) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080924
+packetLen(0x008a, 10) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080917
+packetLen(0x008a, -1) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080910
+packetLen(0x008a, 79) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080827
+packetLen(0x008a, -1) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080820
+packetLen(0x008a, 7) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080813
+packetLen(0x008a, 2) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080730
+packetLen(0x008a, -1) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080722
+packetLen(0x008a, 10) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080715
+packetLen(0x008a, -1) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080708
+packetLen(0x008a, 53) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080624
+packetLen(0x008a, 6) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080617
+packetLen(0x008a, 2) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080610
+packetLen(0x008a, 28) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080603
+packetLen(0x008a, 68) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080528
+packetLen(0x008a, 9) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080520
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080513
+packetLen(0x008a, 11) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080507
+packetLen(0x008a, 26) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080429
+packetLen(0x008a, 23) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080422
+packetLen(0x008a, 6) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080408
+packetLen(0x008a, -1) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080401
+packetLen(0x008a, 28) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080325
+packetLen(0x008a, 30) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080318
+packetLen(0x008a, 5) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080304
+packetLen(0x008a, 6) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080226
+packetLen(0x008a, 10) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080219
+packetLen(0x008a, 6) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080124
+packetLen(0x008a, -1) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080102
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+#endif
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, 14)
+
+// Packet: 0x008d
+#if PACKETVER >= 20081112
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20081105
+packetLen(0x008d, 79) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20081022
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20081015
+packetLen(0x008d, 20) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080924
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080917
+packetLen(0x008d, 4) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080910
+packetLen(0x008d, 3) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080903
+packetLen(0x008d, 14) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080806
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080730
+packetLen(0x008d, 31) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080722
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080715
+packetLen(0x008d, 4) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080708
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080701
+packetLen(0x008d, 2) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080624
+packetLen(0x008d, 10) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080617
+packetLen(0x008d, 282) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080610
+packetLen(0x008d, 60) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080603
+packetLen(0x008d, 6) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080528
+packetLen(0x008d, 2) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080520
+packetLen(0x008d, 4) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080513
+packetLen(0x008d, 2) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080507
+packetLen(0x008d, 66) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080429
+packetLen(0x008d, 2) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080422
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080415
+packetLen(0x008d, 2) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080408
+packetLen(0x008d, 6) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080401
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080325
+packetLen(0x008d, 7) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080318
+packetLen(0x008d, 8) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080311
+packetLen(0x008d, 7) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080304
+packetLen(0x008d, 4) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080226
+packetLen(0x008d, 6) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080219
+packetLen(0x008d, 79) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080124
+packetLen(0x008d, 6) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080102
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+#endif
+
+// Packet: 0x008e
+#if PACKETVER >= 20081203
+packetLen(0x008e, 4) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20081119
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20081112
+packetLen(0x008e, 30) // ZC_NOTIFY_PLAYERCHAT
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x008e, 5) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20081029
+packetLen(0x008e, 12) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20081022
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20081015
+packetLen(0x008e, 66) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20081008
+packetLen(0x008e, 4) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080924
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080917
+packetLen(0x008e, 39) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080910
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080903
+packetLen(0x008e, 2) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080827
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080820
+packetLen(0x008e, 8) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080806
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080730
+packetLen(0x008e, 7) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080722
+packetLen(0x008e, 54) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080715
+packetLen(0x008e, 6) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080708
+packetLen(0x008e, 28) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080701
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080624
+packetLen(0x008e, 5) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080617
+packetLen(0x008e, 6) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080610
+packetLen(0x008e, 10) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080603
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080528
+packetLen(0x008e, 7) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080520
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080513
+packetLen(0x008e, 282) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080507
+packetLen(0x008e, 2) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080429
+packetLen(0x008e, 6) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080422
+packetLen(0x008e, 3) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080415
+packetLen(0x008e, 2) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080408
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080401
+packetLen(0x008e, 4) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080325
+packetLen(0x008e, 28) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080318
+packetLen(0x008e, 186) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080311
+packetLen(0x008e, 7) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080304
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080226
+packetLen(0x008e, 7) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080219
+packetLen(0x008e, 33) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080102
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+#endif
+
+// Packet: 0x0090
+#if PACKETVER >= 20081217
+packetLen(0x0090, -1) // CZ_CONTACTNPC
+#elif PACKETVER >= 20081203
+packetLen(0x0090, 6) // CZ_CONTACTNPC
+#elif PACKETVER >= 20081126
+packetLen(0x0090, -1) // CZ_CONTACTNPC
+#elif PACKETVER >= 20081119
+packetLen(0x0090, 30) // CZ_CONTACTNPC
+#elif PACKETVER >= 20081112
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0090, -1) // CZ_CONTACTNPC
+#elif PACKETVER >= 20081029
+packetLen(0x0090, 8) // CZ_CONTACTNPC
+#elif PACKETVER >= 20081015
+packetLen(0x0090, -1) // CZ_CONTACTNPC
+#elif PACKETVER >= 20081008
+packetLen(0x0090, 2) // CZ_CONTACTNPC
+#elif PACKETVER >= 20081001
+packetLen(0x0090, -1) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080924
+packetLen(0x0090, 5) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080917
+packetLen(0x0090, 26) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080910
+packetLen(0x0090, 282) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080827
+packetLen(0x0090, 3) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080820
+packetLen(0x0090, -1) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080813
+packetLen(0x0090, 33) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080806
+packetLen(0x0090, -1) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080730
+packetLen(0x0090, 3) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080708
+packetLen(0x0090, -1) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080701
+packetLen(0x0090, 10) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080617
+packetLen(0x0090, -1) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080610
+packetLen(0x0090, 6) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080528
+packetLen(0x0090, -1) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080520
+packetLen(0x0090, 3) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080513
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080507
+packetLen(0x0090, 4) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080429
+packetLen(0x0090, 19) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080422
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080415
+packetLen(0x0090, 36) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080408
+packetLen(0x0090, 20) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080401
+packetLen(0x0090, 53) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080325
+packetLen(0x0090, 5) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080318
+packetLen(0x0090, 6) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080311
+packetLen(0x0090, 2) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080304
+packetLen(0x0090, 17) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080226
+packetLen(0x0090, 4) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080219
+packetLen(0x0090, 2) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080124
+packetLen(0x0090, 24) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080102
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+#endif
+
+// Packet: 0x0091
+#if PACKETVER >= 20081217
+packetLen(0x0091, 3) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20081203
+packetLen(0x0091, 27) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20081126
+packetLen(0x0091, 26) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20081112
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20081022
+packetLen(0x0091, -1) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20081015
+packetLen(0x0091, 7) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20081008
+packetLen(0x0091, 14) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080910
+packetLen(0x0091, -1) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080903
+packetLen(0x0091, 10) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080806
+packetLen(0x0091, -1) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080730
+packetLen(0x0091, 10) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080722
+packetLen(0x0091, -1) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080715
+packetLen(0x0091, 16) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080701
+packetLen(0x0091, -1) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080624
+packetLen(0x0091, 8) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080617
+packetLen(0x0091, 2) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080610
+packetLen(0x0091, 21) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080603
+packetLen(0x0091, -1) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080528
+packetLen(0x0091, 14) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080520
+packetLen(0x0091, -1) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080513
+packetLen(0x0091, 5) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080507
+packetLen(0x0091, 6) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080429
+packetLen(0x0091, 30) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080422
+packetLen(0x0091, -1) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080415
+packetLen(0x0091, 182) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080408
+packetLen(0x0091, 58) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080401
+packetLen(0x0091, 15) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080325
+packetLen(0x0091, 2) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080318
+packetLen(0x0091, 6) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080311
+packetLen(0x0091, 8) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080304
+packetLen(0x0091, 57) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080226
+packetLen(0x0091, 4) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080219
+packetLen(0x0091, -1) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080124
+packetLen(0x0091, 79) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080102
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+#endif
+
+// Packet: 0x0092
+#if PACKETVER >= 20081112
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0092, -1) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20081029
+packetLen(0x0092, 29) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20081015
+packetLen(0x0092, -1) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20081008
+packetLen(0x0092, 2) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080924
+packetLen(0x0092, -1) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080917
+packetLen(0x0092, 2) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080910
+packetLen(0x0092, 114) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080827
+packetLen(0x0092, -1) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080820
+packetLen(0x0092, 7) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080813
+packetLen(0x0092, 6) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080806
+packetLen(0x0092, -1) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080730
+packetLen(0x0092, 7) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080722
+packetLen(0x0092, 13) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080715
+packetLen(0x0092, -1) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080708
+packetLen(0x0092, 18) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080701
+packetLen(0x0092, -1) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080624
+packetLen(0x0092, 15) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080617
+packetLen(0x0092, 7) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080610
+packetLen(0x0092, 20) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080603
+packetLen(0x0092, 26) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080528
+packetLen(0x0092, -1) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080520
+packetLen(0x0092, 6) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080513
+packetLen(0x0092, -1) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080507
+packetLen(0x0092, 7) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080429
+packetLen(0x0092, 32) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080422
+packetLen(0x0092, 6) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080415
+packetLen(0x0092, -1) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080408
+packetLen(0x0092, 21) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080401
+packetLen(0x0092, -1) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080325
+packetLen(0x0092, 26) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080318
+packetLen(0x0092, 81) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080311
+packetLen(0x0092, 10) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080304
+packetLen(0x0092, 5) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080226
+packetLen(0x0092, 3) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080219
+packetLen(0x0092, -1) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080124
+packetLen(0x0092, 4) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080102
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+#endif
+
+// Packet: 0x0093
+#if PACKETVER >= 20081203
+packetLen(0x0093, -1) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20081126
+packetLen(0x0093, 14) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20081119
+packetLen(0x0093, -1) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20081112
+packetLen(0x0093, 15) // ZC_NPCACK_ENABLE
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x0093, -1) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20081022
+packetLen(0x0093, 29) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20081015
+packetLen(0x0093, 9) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20081001
+packetLen(0x0093, -1) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080924
+packetLen(0x0093, 6) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080820
+packetLen(0x0093, -1) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080813
+packetLen(0x0093, 3) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080806
+packetLen(0x0093, 7) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080730
+packetLen(0x0093, 5) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080722
+packetLen(0x0093, 3) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080715
+packetLen(0x0093, -1) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080708
+packetLen(0x0093, 9) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080701
+packetLen(0x0093, 4) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080624
+packetLen(0x0093, 6) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080617
+packetLen(0x0093, -1) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080610
+packetLen(0x0093, 5) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080528
+packetLen(0x0093, 3) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080520
+packetLen(0x0093, 22) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080513
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080507
+packetLen(0x0093, 26) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080422
+packetLen(0x0093, 6) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080415
+packetLen(0x0093, 3) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080408
+packetLen(0x0093, -1) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080401
+packetLen(0x0093, 3) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080325
+packetLen(0x0093, -1) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080318
+packetLen(0x0093, 8) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080311
+packetLen(0x0093, 11) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080304
+packetLen(0x0093, 26) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080226
+packetLen(0x0093, 5) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080219
+packetLen(0x0093, 67) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080124
+packetLen(0x0093, -1) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080102
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+#endif
+
+// Packet: 0x0094
+packetLen(0x0094, 19) // CZ_REQNAME
+
+// Packet: 0x0095
+#if PACKETVER >= 20081217
+packetLen(0x0095, -1) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20081203
+packetLen(0x0095, 6) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20081126
+packetLen(0x0095, -1) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20081119
+packetLen(0x0095, 3) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20081112
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x0095, -1) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20081022
+packetLen(0x0095, 8) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20081015
+packetLen(0x0095, 6) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080917
+packetLen(0x0095, -1) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080910
+packetLen(0x0095, 6) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080903
+packetLen(0x0095, -1) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080827
+packetLen(0x0095, 28) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080820
+packetLen(0x0095, 58) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080806
+packetLen(0x0095, -1) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080730
+packetLen(0x0095, 28) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080722
+packetLen(0x0095, -1) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080715
+packetLen(0x0095, 3) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080708
+packetLen(0x0095, -1) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080701
+packetLen(0x0095, 6) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080624
+packetLen(0x0095, 10) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080610
+packetLen(0x0095, -1) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080603
+packetLen(0x0095, 54) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080528
+packetLen(0x0095, 2) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080520
+packetLen(0x0095, -1) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080513
+packetLen(0x0095, 9) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080507
+packetLen(0x0095, 22) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080408
+packetLen(0x0095, -1) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080401
+packetLen(0x0095, 10) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080325
+packetLen(0x0095, 4) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080318
+packetLen(0x0095, 3) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080311
+packetLen(0x0095, 59) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080304
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080226
+packetLen(0x0095, 39) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080219
+packetLen(0x0095, 2) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080102
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+#endif
+
+// Packet: 0x0096
+#if PACKETVER >= 20081105
+packetLen(0x0096, -1) // CZ_WHISPER
+#elif PACKETVER >= 20081029
+packetLen(0x0096, 6) // CZ_WHISPER
+#elif PACKETVER >= 20081022
+packetLen(0x0096, -1) // CZ_WHISPER
+#elif PACKETVER >= 20081015
+packetLen(0x0096, 12) // CZ_WHISPER
+#elif PACKETVER >= 20081008
+packetLen(0x0096, 57) // CZ_WHISPER
+#elif PACKETVER >= 20081001
+packetLen(0x0096, 55) // CZ_WHISPER
+#elif PACKETVER >= 20080910
+packetLen(0x0096, -1) // CZ_WHISPER
+#elif PACKETVER >= 20080903
+packetLen(0x0096, 60) // CZ_WHISPER
+#elif PACKETVER >= 20080820
+packetLen(0x0096, -1) // CZ_WHISPER
+#elif PACKETVER >= 20080813
+packetLen(0x0096, 30) // CZ_WHISPER
+#elif PACKETVER >= 20080806
+packetLen(0x0096, 10) // CZ_WHISPER
+#elif PACKETVER >= 20080730
+packetLen(0x0096, 6) // CZ_WHISPER
+#elif PACKETVER >= 20080708
+packetLen(0x0096, -1) // CZ_WHISPER
+#elif PACKETVER >= 20080701
+packetLen(0x0096, 10) // CZ_WHISPER
+#elif PACKETVER >= 20080610
+packetLen(0x0096, -1) // CZ_WHISPER
+#elif PACKETVER >= 20080603
+packetLen(0x0096, 10) // CZ_WHISPER
+#elif PACKETVER >= 20080528
+packetLen(0x0096, 31) // CZ_WHISPER
+#elif PACKETVER >= 20080513
+packetLen(0x0096, 6) // CZ_WHISPER
+#elif PACKETVER >= 20080422
+packetLen(0x0096, -1) // CZ_WHISPER
+#elif PACKETVER >= 20080415
+packetLen(0x0096, 26) // CZ_WHISPER
+#elif PACKETVER >= 20080401
+packetLen(0x0096, -1) // CZ_WHISPER
+#elif PACKETVER >= 20080325
+packetLen(0x0096, 5) // CZ_WHISPER
+#elif PACKETVER >= 20080318
+packetLen(0x0096, 7) // CZ_WHISPER
+#elif PACKETVER >= 20080311
+packetLen(0x0096, 10) // CZ_WHISPER
+#elif PACKETVER >= 20080226
+packetLen(0x0096, -1) // CZ_WHISPER
+#elif PACKETVER >= 20080219
+packetLen(0x0096, 3) // CZ_WHISPER
+#elif PACKETVER >= 20080124
+packetLen(0x0096, 6) // CZ_WHISPER
+#elif PACKETVER >= 20080102
+packetLen(0x0096, -1) // CZ_WHISPER
+#endif
+
+// Packet: 0x0097
+#if PACKETVER >= 20081119
+packetLen(0x0097, -1) // ZC_WHISPER
+#elif PACKETVER >= 20081112
+packetLen(0x0097, 19) // ZC_WHISPER
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0097, -1) // ZC_WHISPER
+#elif PACKETVER >= 20081029
+packetLen(0x0097, 3) // ZC_WHISPER
+#elif PACKETVER >= 20081022
+packetLen(0x0097, 6) // ZC_WHISPER
+#elif PACKETVER >= 20081015
+packetLen(0x0097, -1) // ZC_WHISPER
+#elif PACKETVER >= 20081008
+packetLen(0x0097, 6) // ZC_WHISPER
+#elif PACKETVER >= 20081001
+packetLen(0x0097, 4) // ZC_WHISPER
+#elif PACKETVER >= 20080917
+packetLen(0x0097, -1) // ZC_WHISPER
+#elif PACKETVER >= 20080910
+packetLen(0x0097, 58) // ZC_WHISPER
+#elif PACKETVER >= 20080730
+packetLen(0x0097, -1) // ZC_WHISPER
+#elif PACKETVER >= 20080722
+packetLen(0x0097, 23) // ZC_WHISPER
+#elif PACKETVER >= 20080715
+packetLen(0x0097, 10) // ZC_WHISPER
+#elif PACKETVER >= 20080708
+packetLen(0x0097, 26) // ZC_WHISPER
+#elif PACKETVER >= 20080701
+packetLen(0x0097, 282) // ZC_WHISPER
+#elif PACKETVER >= 20080624
+packetLen(0x0097, -1) // ZC_WHISPER
+#elif PACKETVER >= 20080617
+packetLen(0x0097, 10) // ZC_WHISPER
+#elif PACKETVER >= 20080610
+packetLen(0x0097, 8) // ZC_WHISPER
+#elif PACKETVER >= 20080603
+packetLen(0x0097, 5) // ZC_WHISPER
+#elif PACKETVER >= 20080528
+packetLen(0x0097, 7) // ZC_WHISPER
+#elif PACKETVER >= 20080520
+packetLen(0x0097, 8) // ZC_WHISPER
+#elif PACKETVER >= 20080513
+packetLen(0x0097, -1) // ZC_WHISPER
+#elif PACKETVER >= 20080507
+packetLen(0x0097, 30) // ZC_WHISPER
+#elif PACKETVER >= 20080429
+packetLen(0x0097, -1) // ZC_WHISPER
+#elif PACKETVER >= 20080422
+packetLen(0x0097, 29) // ZC_WHISPER
+#elif PACKETVER >= 20080415
+packetLen(0x0097, 16) // ZC_WHISPER
+#elif PACKETVER >= 20080408
+packetLen(0x0097, 30) // ZC_WHISPER
+#elif PACKETVER >= 20080401
+packetLen(0x0097, 53) // ZC_WHISPER
+#elif PACKETVER >= 20080325
+packetLen(0x0097, 26) // ZC_WHISPER
+#elif PACKETVER >= 20080318
+packetLen(0x0097, 3) // ZC_WHISPER
+#elif PACKETVER >= 20080311
+packetLen(0x0097, 33) // ZC_WHISPER
+#elif PACKETVER >= 20080304
+packetLen(0x0097, 7) // ZC_WHISPER
+#elif PACKETVER >= 20080219
+packetLen(0x0097, 23) // ZC_WHISPER
+#elif PACKETVER >= 20080102
+packetLen(0x0097, -1) // ZC_WHISPER
+#endif
+
+// Packet: 0x0098
+#if PACKETVER >= 20081217
+packetLen(0x0098, 9) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20081119
+packetLen(0x0098, -1) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20081112
+packetLen(0x0098, 8) // ZC_ACK_WHISPER
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0098, 16) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20081029
+packetLen(0x0098, -1) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20081022
+packetLen(0x0098, 30) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20081015
+packetLen(0x0098, -1) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20081008
+packetLen(0x0098, 2) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080820
+packetLen(0x0098, -1) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080813
+packetLen(0x0098, 14) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080730
+packetLen(0x0098, -1) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080722
+packetLen(0x0098, 19) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080715
+packetLen(0x0098, 54) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080708
+packetLen(0x0098, 39) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080701
+packetLen(0x0098, 8) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080624
+packetLen(0x0098, -1) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080617
+packetLen(0x0098, 24) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080610
+packetLen(0x0098, 26) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080528
+packetLen(0x0098, -1) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080520
+packetLen(0x0098, 16) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080513
+packetLen(0x0098, -1) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080507
+packetLen(0x0098, 13) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080429
+packetLen(0x0098, 58) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080408
+packetLen(0x0098, -1) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080401
+packetLen(0x0098, 26) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080325
+packetLen(0x0098, -1) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080318
+packetLen(0x0098, 26) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080311
+packetLen(0x0098, 60) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080304
+packetLen(0x0098, 182) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080226
+packetLen(0x0098, 2) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080219
+packetLen(0x0098, 8) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080124
+packetLen(0x0098, 10) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080102
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+#endif
+
+// Packet: 0x0099
+#if PACKETVER >= 20081217
+packetLen(0x0099, 31) // CZ_BROADCAST
+#elif PACKETVER >= 20081119
+packetLen(0x0099, -1) // CZ_BROADCAST
+#elif PACKETVER >= 20081112
+packetLen(0x0099, 6) // CZ_BROADCAST
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x0099, 6) // CZ_BROADCAST
+#elif PACKETVER >= 20081022
+packetLen(0x0099, 26) // CZ_BROADCAST
+#elif PACKETVER >= 20081015
+packetLen(0x0099, 3) // CZ_BROADCAST
+#elif PACKETVER >= 20081008
+packetLen(0x0099, -1) // CZ_BROADCAST
+#elif PACKETVER >= 20081001
+packetLen(0x0099, 4) // CZ_BROADCAST
+#elif PACKETVER >= 20080924
+packetLen(0x0099, -1) // CZ_BROADCAST
+#elif PACKETVER >= 20080917
+packetLen(0x0099, 14) // CZ_BROADCAST
+#elif PACKETVER >= 20080903
+packetLen(0x0099, -1) // CZ_BROADCAST
+#elif PACKETVER >= 20080827
+packetLen(0x0099, 4) // CZ_BROADCAST
+#elif PACKETVER >= 20080813
+packetLen(0x0099, -1) // CZ_BROADCAST
+#elif PACKETVER >= 20080806
+packetLen(0x0099, 3) // CZ_BROADCAST
+#elif PACKETVER >= 20080730
+packetLen(0x0099, -1) // CZ_BROADCAST
+#elif PACKETVER >= 20080722
+packetLen(0x0099, 5) // CZ_BROADCAST
+#elif PACKETVER >= 20080715
+packetLen(0x0099, 2) // CZ_BROADCAST
+#elif PACKETVER >= 20080708
+packetLen(0x0099, 182) // CZ_BROADCAST
+#elif PACKETVER >= 20080701
+packetLen(0x0099, -1) // CZ_BROADCAST
+#elif PACKETVER >= 20080624
+packetLen(0x0099, 30) // CZ_BROADCAST
+#elif PACKETVER >= 20080617
+packetLen(0x0099, -1) // CZ_BROADCAST
+#elif PACKETVER >= 20080610
+packetLen(0x0099, 9) // CZ_BROADCAST
+#elif PACKETVER >= 20080603
+packetLen(0x0099, 4) // CZ_BROADCAST
+#elif PACKETVER >= 20080528
+packetLen(0x0099, 60) // CZ_BROADCAST
+#elif PACKETVER >= 20080520
+packetLen(0x0099, -1) // CZ_BROADCAST
+#elif PACKETVER >= 20080507
+packetLen(0x0099, 8) // CZ_BROADCAST
+#elif PACKETVER >= 20080429
+packetLen(0x0099, 2) // CZ_BROADCAST
+#elif PACKETVER >= 20080408
+packetLen(0x0099, -1) // CZ_BROADCAST
+#elif PACKETVER >= 20080401
+packetLen(0x0099, 6) // CZ_BROADCAST
+#elif PACKETVER >= 20080325
+packetLen(0x0099, 54) // CZ_BROADCAST
+#elif PACKETVER >= 20080318
+packetLen(0x0099, 6) // CZ_BROADCAST
+#elif PACKETVER >= 20080311
+packetLen(0x0099, 66) // CZ_BROADCAST
+#elif PACKETVER >= 20080304
+packetLen(0x0099, 10) // CZ_BROADCAST
+#elif PACKETVER >= 20080226
+packetLen(0x0099, 34) // CZ_BROADCAST
+#elif PACKETVER >= 20080219
+packetLen(0x0099, 2) // CZ_BROADCAST
+#elif PACKETVER >= 20080102
+packetLen(0x0099, -1) // CZ_BROADCAST
+#endif
+
+// Packet: 0x009a
+#if PACKETVER >= 20081217
+packetLen(0x009a, 65) // ZC_BROADCAST
+#elif PACKETVER >= 20081203
+packetLen(0x009a, 4) // ZC_BROADCAST
+#elif PACKETVER >= 20081105
+packetLen(0x009a, -1) // ZC_BROADCAST
+#elif PACKETVER >= 20081029
+packetLen(0x009a, 19) // ZC_BROADCAST
+#elif PACKETVER >= 20081022
+packetLen(0x009a, 2) // ZC_BROADCAST
+#elif PACKETVER >= 20081015
+packetLen(0x009a, 5) // ZC_BROADCAST
+#elif PACKETVER >= 20081008
+packetLen(0x009a, 6) // ZC_BROADCAST
+#elif PACKETVER >= 20081001
+packetLen(0x009a, -1) // ZC_BROADCAST
+#elif PACKETVER >= 20080924
+packetLen(0x009a, 2) // ZC_BROADCAST
+#elif PACKETVER >= 20080917
+packetLen(0x009a, 4) // ZC_BROADCAST
+#elif PACKETVER >= 20080910
+packetLen(0x009a, 20) // ZC_BROADCAST
+#elif PACKETVER >= 20080903
+packetLen(0x009a, 30) // ZC_BROADCAST
+#elif PACKETVER >= 20080827
+packetLen(0x009a, -1) // ZC_BROADCAST
+#elif PACKETVER >= 20080820
+packetLen(0x009a, 11) // ZC_BROADCAST
+#elif PACKETVER >= 20080813
+packetLen(0x009a, -1) // ZC_BROADCAST
+#elif PACKETVER >= 20080806
+packetLen(0x009a, 6) // ZC_BROADCAST
+#elif PACKETVER >= 20080722
+packetLen(0x009a, -1) // ZC_BROADCAST
+#elif PACKETVER >= 20080715
+packetLen(0x009a, 7) // ZC_BROADCAST
+#elif PACKETVER >= 20080708
+packetLen(0x009a, -1) // ZC_BROADCAST
+#elif PACKETVER >= 20080701
+packetLen(0x009a, 3) // ZC_BROADCAST
+#elif PACKETVER >= 20080617
+packetLen(0x009a, -1) // ZC_BROADCAST
+#elif PACKETVER >= 20080610
+packetLen(0x009a, 90) // ZC_BROADCAST
+#elif PACKETVER >= 20080603
+packetLen(0x009a, 29) // ZC_BROADCAST
+#elif PACKETVER >= 20080528
+packetLen(0x009a, -1) // ZC_BROADCAST
+#elif PACKETVER >= 20080520
+packetLen(0x009a, 10) // ZC_BROADCAST
+#elif PACKETVER >= 20080513
+packetLen(0x009a, 28) // ZC_BROADCAST
+#elif PACKETVER >= 20080422
+packetLen(0x009a, -1) // ZC_BROADCAST
+#elif PACKETVER >= 20080415
+packetLen(0x009a, 33) // ZC_BROADCAST
+#elif PACKETVER >= 20080408
+packetLen(0x009a, 9) // ZC_BROADCAST
+#elif PACKETVER >= 20080325
+packetLen(0x009a, -1) // ZC_BROADCAST
+#elif PACKETVER >= 20080318
+packetLen(0x009a, 59) // ZC_BROADCAST
+#elif PACKETVER >= 20080311
+packetLen(0x009a, 57) // ZC_BROADCAST
+#elif PACKETVER >= 20080304
+packetLen(0x009a, -1) // ZC_BROADCAST
+#elif PACKETVER >= 20080226
+packetLen(0x009a, 4) // ZC_BROADCAST
+#elif PACKETVER >= 20080219
+packetLen(0x009a, 10) // ZC_BROADCAST
+#elif PACKETVER >= 20080124
+packetLen(0x009a, 4) // ZC_BROADCAST
+#elif PACKETVER >= 20080102
+packetLen(0x009a, -1) // ZC_BROADCAST
+#endif
+
+// Packet: 0x009b
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+#if PACKETVER >= 20081203
+packetLen(0x009c, -1) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20081126
+packetLen(0x009c, 7) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20081119
+packetLen(0x009c, 14) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20081112
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x009c, 30) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20081029
+packetLen(0x009c, 6) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20081008
+packetLen(0x009c, -1) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20081001
+packetLen(0x009c, 14) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080924
+packetLen(0x009c, 2) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080910
+packetLen(0x009c, -1) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080903
+packetLen(0x009c, 2) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080827
+packetLen(0x009c, 59) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080813
+packetLen(0x009c, -1) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080806
+packetLen(0x009c, 44) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080708
+packetLen(0x009c, -1) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080701
+packetLen(0x009c, 67) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080617
+packetLen(0x009c, -1) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080610
+packetLen(0x009c, 6) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080603
+packetLen(0x009c, 4) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080528
+packetLen(0x009c, 26) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080520
+packetLen(0x009c, 67) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080513
+packetLen(0x009c, -1) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080507
+packetLen(0x009c, 6) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080429
+packetLen(0x009c, -1) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080422
+packetLen(0x009c, 10) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080415
+packetLen(0x009c, 66) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080408
+packetLen(0x009c, -1) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080401
+packetLen(0x009c, 8) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080325
+packetLen(0x009c, 3) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080318
+packetLen(0x009c, 282) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080311
+packetLen(0x009c, -1) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080304
+packetLen(0x009c, 71) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080226
+packetLen(0x009c, 4) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080219
+packetLen(0x009c, 7) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080124
+packetLen(0x009c, -1) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080102
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+#endif
+
+// Packet: 0x009d
+#if PACKETVER >= 20081119
+packetLen(0x009d, -1) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20081112
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081015
+packetLen(0x009d, -1) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20081008
+packetLen(0x009d, 6) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20081001
+packetLen(0x009d, 27) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080924
+packetLen(0x009d, 6) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080917
+packetLen(0x009d, -1) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080910
+packetLen(0x009d, 4) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080722
+packetLen(0x009d, -1) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080715
+packetLen(0x009d, 2) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080708
+packetLen(0x009d, 14) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080701
+packetLen(0x009d, -1) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080624
+packetLen(0x009d, 10) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080617
+packetLen(0x009d, 13) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080610
+packetLen(0x009d, 3) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080603
+packetLen(0x009d, 6) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080528
+packetLen(0x009d, 8) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080520
+packetLen(0x009d, 10) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080513
+packetLen(0x009d, 29) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080507
+packetLen(0x009d, 59) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080429
+packetLen(0x009d, -1) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080422
+packetLen(0x009d, 6) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080415
+packetLen(0x009d, 32) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080408
+packetLen(0x009d, -1) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080401
+packetLen(0x009d, 26) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080325
+packetLen(0x009d, 57) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080318
+packetLen(0x009d, -1) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080311
+packetLen(0x009d, 13) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x009d, 19) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080226
+packetLen(0x009d, 57) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080219
+packetLen(0x009d, 10) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080124
+packetLen(0x009d, -1) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+#endif
+
+// Packet: 0x009e
+#if PACKETVER >= 20081217
+packetLen(0x009e, -1) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20081203
+packetLen(0x009e, 10) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20081126
+packetLen(0x009e, 26) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20081119
+packetLen(0x009e, 5) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20081112
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x009e, -1) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20081022
+packetLen(0x009e, 6) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20081001
+packetLen(0x009e, -1) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080924
+packetLen(0x009e, 3) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080827
+packetLen(0x009e, -1) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080820
+packetLen(0x009e, 6) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080813
+packetLen(0x009e, 5) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080701
+packetLen(0x009e, -1) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080624
+packetLen(0x009e, 3) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080617
+packetLen(0x009e, -1) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080610
+packetLen(0x009e, 10) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080603
+packetLen(0x009e, 4) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080528
+packetLen(0x009e, 3) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080520
+packetLen(0x009e, 186) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080513
+packetLen(0x009e, -1) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080507
+packetLen(0x009e, 6) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080429
+packetLen(0x009e, 2) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080422
+packetLen(0x009e, 11) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080415
+packetLen(0x009e, 9) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080408
+packetLen(0x009e, 39) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080401
+packetLen(0x009e, 5) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080318
+packetLen(0x009e, 10) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080311
+packetLen(0x009e, -1) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x009e, 282) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080226
+packetLen(0x009e, 11) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080219
+packetLen(0x009e, -1) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080124
+packetLen(0x009e, 97) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+#endif
+
+// Packet: 0x009f
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+#if PACKETVER >= 20081112
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081008
+packetLen(0x00a0, -1) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20081001
+packetLen(0x00a0, 32) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080903
+packetLen(0x00a0, -1) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080827
+packetLen(0x00a0, 14) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080820
+packetLen(0x00a0, 3) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080813
+packetLen(0x00a0, -1) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080806
+packetLen(0x00a0, 21) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080715
+packetLen(0x00a0, -1) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080708
+packetLen(0x00a0, 90) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080701
+packetLen(0x00a0, 30) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080624
+packetLen(0x00a0, -1) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080617
+packetLen(0x00a0, 6) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080610
+packetLen(0x00a0, 26) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080603
+packetLen(0x00a0, 8) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080528
+packetLen(0x00a0, -1) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080520
+packetLen(0x00a0, 3) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080513
+packetLen(0x00a0, 14) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080507
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080429
+packetLen(0x00a0, 12) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080422
+packetLen(0x00a0, 8) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080408
+packetLen(0x00a0, -1) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080401
+packetLen(0x00a0, 8) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080325
+packetLen(0x00a0, 6) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080318
+packetLen(0x00a0, 13) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080311
+packetLen(0x00a0, 28) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080226
+packetLen(0x00a0, 27) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080219
+packetLen(0x00a0, 39) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080124
+packetLen(0x00a0, 5) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080102
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+#endif
+
+// Packet: 0x00a1
+#if PACKETVER >= 20081112
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00a1, 8) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20081022
+packetLen(0x00a1, -1) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20081008
+packetLen(0x00a1, 2) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20081001
+packetLen(0x00a1, 26) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080903
+packetLen(0x00a1, -1) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080827
+packetLen(0x00a1, 68) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080820
+packetLen(0x00a1, -1) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080813
+packetLen(0x00a1, 36) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080806
+packetLen(0x00a1, 4) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080722
+packetLen(0x00a1, -1) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080715
+packetLen(0x00a1, 21) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080708
+packetLen(0x00a1, -1) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080701
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080624
+packetLen(0x00a1, 44) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080617
+packetLen(0x00a1, 60) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080528
+packetLen(0x00a1, -1) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080520
+packetLen(0x00a1, 60) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080513
+packetLen(0x00a1, -1) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080507
+packetLen(0x00a1, 11) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080422
+packetLen(0x00a1, -1) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080415
+packetLen(0x00a1, 16) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080408
+packetLen(0x00a1, 3) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080401
+packetLen(0x00a1, -1) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080325
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080318
+packetLen(0x00a1, 53) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080311
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080304
+packetLen(0x00a1, 21) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080226
+packetLen(0x00a1, -1) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080219
+packetLen(0x00a1, 60) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080124
+packetLen(0x00a1, 30) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080102
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+#endif
+
+// Packet: 0x00a2
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+#if PACKETVER >= 20081126
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20081119
+packetLen(0x00a3, 8) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20081105
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20081029
+packetLen(0x00a3, 30) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20081015
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20081008
+packetLen(0x00a3, 8) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20081001
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080924
+packetLen(0x00a3, 6) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080917
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080910
+packetLen(0x00a3, 4) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080903
+packetLen(0x00a3, 60) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080806
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080730
+packetLen(0x00a3, 10) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080722
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080715
+packetLen(0x00a3, 42) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080708
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080701
+packetLen(0x00a3, 28) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080624
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080617
+packetLen(0x00a3, 3) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080610
+packetLen(0x00a3, 10) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080528
+packetLen(0x00a3, 4) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080520
+packetLen(0x00a3, 15) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080513
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080507
+packetLen(0x00a3, 10) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080429
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080422
+packetLen(0x00a3, 16) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080415
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080408
+packetLen(0x00a3, 8) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080401
+packetLen(0x00a3, 28) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080325
+packetLen(0x00a3, 4) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080318
+packetLen(0x00a3, 2) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x00a3, 65) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x00a3, 6) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x00a3, 30) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x00a3, 44) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+#endif
+
+// Packet: 0x00a4
+#if PACKETVER >= 20081112
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20081105
+packetLen(0x00a4, 10) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20081022
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20081015
+packetLen(0x00a4, 8) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20081001
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080924
+packetLen(0x00a4, 6) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080917
+packetLen(0x00a4, 4) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080903
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080827
+packetLen(0x00a4, 8) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080820
+packetLen(0x00a4, 58) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080806
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080730
+packetLen(0x00a4, 6) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080722
+packetLen(0x00a4, 21) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080708
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080701
+packetLen(0x00a4, 86) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080617
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080610
+packetLen(0x00a4, 10) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080528
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080520
+packetLen(0x00a4, 3) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080513
+packetLen(0x00a4, 14) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080507
+packetLen(0x00a4, 33) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080429
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080422
+packetLen(0x00a4, 60) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080415
+packetLen(0x00a4, 22) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080408
+packetLen(0x00a4, 2) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080401
+packetLen(0x00a4, 6) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080325
+packetLen(0x00a4, 7) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080318
+packetLen(0x00a4, 27) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x00a4, 6) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x00a4, 15) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x00a4, 30) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080124
+packetLen(0x00a4, 10) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+#endif
+
+// Packet: 0x00a5
+#if PACKETVER >= 20081217
+packetLen(0x00a5, 6) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20081203
+packetLen(0x00a5, 102) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20081119
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20081112
+packetLen(0x00a5, 102) // ZC_STORE_NORMAL_ITEMLIST
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00a5, 42) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20081022
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20081015
+packetLen(0x00a5, 10) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20081001
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080924
+packetLen(0x00a5, 2) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080827
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080820
+packetLen(0x00a5, 3) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080813
+packetLen(0x00a5, 10) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080806
+packetLen(0x00a5, 3) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080730
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080722
+packetLen(0x00a5, 6) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080715
+packetLen(0x00a5, 28) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080617
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080610
+packetLen(0x00a5, 7) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080603
+packetLen(0x00a5, 9) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080528
+packetLen(0x00a5, 28) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080520
+packetLen(0x00a5, 6) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080513
+packetLen(0x00a5, 4) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080415
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080408
+packetLen(0x00a5, 6) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080401
+packetLen(0x00a5, 8) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080325
+packetLen(0x00a5, 9) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080318
+packetLen(0x00a5, 6) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x00a5, 282) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x00a5, 30) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x00a5, 28) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x00a5, 3) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080124
+packetLen(0x00a5, 4) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+#endif
+
+// Packet: 0x00a6
+#if PACKETVER >= 20081217
+packetLen(0x00a6, 20) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20081203
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20081126
+packetLen(0x00a6, 6) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20081029
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20081022
+packetLen(0x00a6, 6) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20081008
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20081001
+packetLen(0x00a6, 11) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080917
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080910
+packetLen(0x00a6, 10) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080903
+packetLen(0x00a6, 6) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080827
+packetLen(0x00a6, 29) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080813
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080806
+packetLen(0x00a6, 6) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080730
+packetLen(0x00a6, 22) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080715
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080708
+packetLen(0x00a6, 30) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080701
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080624
+packetLen(0x00a6, 16) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080610
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080603
+packetLen(0x00a6, 10) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080528
+packetLen(0x00a6, 2) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080520
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080513
+packetLen(0x00a6, 30) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080507
+packetLen(0x00a6, 10) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080429
+packetLen(0x00a6, 282) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080415
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080408
+packetLen(0x00a6, 59) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080401
+packetLen(0x00a6, 7) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080325
+packetLen(0x00a6, 10) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080318
+packetLen(0x00a6, 3) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x00a6, 26) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x00a6, 16) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080124
+packetLen(0x00a6, 2) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+#endif
+
+// Packet: 0x00a7
+packetLen(0x00a7, 9)
+
+// Packet: 0x00a8
+#if PACKETVER >= 20081217
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20081203
+packetLen(0x00a8, 43) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20081126
+packetLen(0x00a8, 10) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20081119
+packetLen(0x00a8, 5) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20081112
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x00a8, -1) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20081022
+packetLen(0x00a8, 3) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20081015
+packetLen(0x00a8, -1) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20081008
+packetLen(0x00a8, 42) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20081001
+packetLen(0x00a8, 59) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080924
+packetLen(0x00a8, 10) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080917
+packetLen(0x00a8, 8) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080910
+packetLen(0x00a8, 282) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080827
+packetLen(0x00a8, -1) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080820
+packetLen(0x00a8, 15) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080813
+packetLen(0x00a8, 2) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080806
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080701
+packetLen(0x00a8, -1) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080624
+packetLen(0x00a8, 6) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080610
+packetLen(0x00a8, -1) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080528
+packetLen(0x00a8, 6) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080520
+packetLen(0x00a8, 10) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080513
+packetLen(0x00a8, 90) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080507
+packetLen(0x00a8, 3) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080429
+packetLen(0x00a8, -1) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080422
+packetLen(0x00a8, 13) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080408
+packetLen(0x00a8, -1) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080401
+packetLen(0x00a8, 4) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080325
+packetLen(0x00a8, 2) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080318
+packetLen(0x00a8, 30) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080311
+packetLen(0x00a8, 6) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080304
+packetLen(0x00a8, 3) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080219
+packetLen(0x00a8, 10) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080124
+packetLen(0x00a8, 20) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080102
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+#endif
+
+// Packet: 0x00a9
+#if PACKETVER >= 20081217
+packetLen(0x00a9, 30) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20081203
+packetLen(0x00a9, -1) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20081126
+packetLen(0x00a9, 28) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20081119
+packetLen(0x00a9, 4) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20081112
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x00a9, -1) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20081022
+packetLen(0x00a9, 8) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20081015
+packetLen(0x00a9, -1) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20081008
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20081001
+packetLen(0x00a9, -1) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080924
+packetLen(0x00a9, 18) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080917
+packetLen(0x00a9, 4) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080827
+packetLen(0x00a9, -1) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080820
+packetLen(0x00a9, 11) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080806
+packetLen(0x00a9, -1) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080730
+packetLen(0x00a9, 3) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080722
+packetLen(0x00a9, -1) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080715
+packetLen(0x00a9, 44) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080708
+packetLen(0x00a9, 10) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080701
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080617
+packetLen(0x00a9, -1) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080610
+packetLen(0x00a9, 282) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080603
+packetLen(0x00a9, 114) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080528
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080520
+packetLen(0x00a9, 79) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080513
+packetLen(0x00a9, 3) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080507
+packetLen(0x00a9, 26) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080429
+packetLen(0x00a9, 8) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080422
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080415
+packetLen(0x00a9, -1) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080408
+packetLen(0x00a9, 2) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080401
+packetLen(0x00a9, -1) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080325
+packetLen(0x00a9, 8) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080311
+packetLen(0x00a9, -1) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080304
+packetLen(0x00a9, 11) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080226
+packetLen(0x00a9, 26) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080219
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080124
+packetLen(0x00a9, 10) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080102
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+#endif
+
+// Packet: 0x00aa
+#if PACKETVER >= 20081112
+packetLen(0x00aa, 7) // ZC_REQ_WEAR_EQUIP_ACK
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00aa, 4) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20081001
+packetLen(0x00aa, -1) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080924
+packetLen(0x00aa, 39) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080903
+packetLen(0x00aa, -1) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080827
+packetLen(0x00aa, 10) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080820
+packetLen(0x00aa, 11) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080813
+packetLen(0x00aa, 4) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080806
+packetLen(0x00aa, -1) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080730
+packetLen(0x00aa, 71) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080722
+packetLen(0x00aa, -1) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080715
+packetLen(0x00aa, 2) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080708
+packetLen(0x00aa, 3) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080624
+packetLen(0x00aa, -1) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080610
+packetLen(0x00aa, 4) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080603
+packetLen(0x00aa, 10) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080528
+packetLen(0x00aa, 6) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080520
+packetLen(0x00aa, 2) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080513
+packetLen(0x00aa, 4) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080507
+packetLen(0x00aa, 6) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080429
+packetLen(0x00aa, -1) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080422
+packetLen(0x00aa, 9) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080415
+packetLen(0x00aa, 3) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080408
+packetLen(0x00aa, 31) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080401
+packetLen(0x00aa, 16) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080325
+packetLen(0x00aa, 55) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080318
+packetLen(0x00aa, 3) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080311
+packetLen(0x00aa, 11) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080304
+packetLen(0x00aa, -1) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080219
+packetLen(0x00aa, 2) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080124
+packetLen(0x00aa, 6) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080102
+packetLen(0x00aa, 7) // ZC_REQ_WEAR_EQUIP_ACK
+#endif
+
+// Packet: 0x00ab
+#if PACKETVER >= 20081203
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20081119
+packetLen(0x00ab, -1) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20081112
+packetLen(0x00ab, 5) // CZ_REQ_TAKEOFF_EQUIP
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00ab, -1) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20081029
+packetLen(0x00ab, 30) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20081022
+packetLen(0x00ab, 60) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20081001
+packetLen(0x00ab, -1) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080924
+packetLen(0x00ab, 79) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080910
+packetLen(0x00ab, -1) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080903
+packetLen(0x00ab, 67) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080827
+packetLen(0x00ab, 282) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080730
+packetLen(0x00ab, -1) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080722
+packetLen(0x00ab, 8) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080715
+packetLen(0x00ab, 14) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080701
+packetLen(0x00ab, -1) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080617
+packetLen(0x00ab, 6) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080610
+packetLen(0x00ab, 16) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080603
+packetLen(0x00ab, -1) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080528
+packetLen(0x00ab, 53) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080520
+packetLen(0x00ab, 36) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080513
+packetLen(0x00ab, 26) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080507
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080429
+packetLen(0x00ab, -1) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080422
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080415
+packetLen(0x00ab, 7) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080401
+packetLen(0x00ab, -1) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080325
+packetLen(0x00ab, 8) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080318
+packetLen(0x00ab, 9) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080311
+packetLen(0x00ab, 14) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080304
+packetLen(0x00ab, 2) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080226
+packetLen(0x00ab, -1) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080219
+packetLen(0x00ab, 57) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080124
+packetLen(0x00ab, 86) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080102
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+#endif
+
+// Packet: 0x00ac
+#if PACKETVER >= 20081217
+packetLen(0x00ac, -1) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20081203
+packetLen(0x00ac, 30) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20081126
+packetLen(0x00ac, 6) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20081112
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x00ac, -1) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20081015
+packetLen(0x00ac, 3) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20081008
+packetLen(0x00ac, 30) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20081001
+packetLen(0x00ac, -1) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080924
+packetLen(0x00ac, 59) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080917
+packetLen(0x00ac, -1) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080910
+packetLen(0x00ac, 6) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080903
+packetLen(0x00ac, -1) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080827
+packetLen(0x00ac, 10) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080820
+packetLen(0x00ac, -1) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080813
+packetLen(0x00ac, 13) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080806
+packetLen(0x00ac, -1) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080730
+packetLen(0x00ac, 20) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080722
+packetLen(0x00ac, 44) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080715
+packetLen(0x00ac, -1) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080708
+packetLen(0x00ac, 11) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080701
+packetLen(0x00ac, -1) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080624
+packetLen(0x00ac, 8) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080617
+packetLen(0x00ac, 6) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080610
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080603
+packetLen(0x00ac, 3) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080528
+packetLen(0x00ac, -1) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080513
+packetLen(0x00ac, 10) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080507
+packetLen(0x00ac, 67) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080429
+packetLen(0x00ac, -1) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080415
+packetLen(0x00ac, 6) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080408
+packetLen(0x00ac, 8) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080401
+packetLen(0x00ac, 3) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080325
+packetLen(0x00ac, 6) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080318
+packetLen(0x00ac, 10) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080226
+packetLen(0x00ac, 6) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080219
+packetLen(0x00ac, 3) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080124
+packetLen(0x00ac, -1) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080102
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#endif
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+#if PACKETVER >= 20081119
+packetLen(0x00af, -1) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20081105
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20081029
+packetLen(0x00af, -1) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20081022
+packetLen(0x00af, 16) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20081015
+packetLen(0x00af, 81) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20081008
+packetLen(0x00af, -1) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20081001
+packetLen(0x00af, 16) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080910
+packetLen(0x00af, -1) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080827
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080820
+packetLen(0x00af, -1) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080813
+packetLen(0x00af, 14) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080730
+packetLen(0x00af, -1) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080722
+packetLen(0x00af, 28) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080715
+packetLen(0x00af, 102) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080708
+packetLen(0x00af, 42) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080701
+packetLen(0x00af, -1) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080624
+packetLen(0x00af, 5) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080610
+packetLen(0x00af, -1) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080603
+packetLen(0x00af, 10) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080528
+packetLen(0x00af, 29) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080520
+packetLen(0x00af, -1) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080513
+packetLen(0x00af, 2) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080507
+packetLen(0x00af, -1) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080429
+packetLen(0x00af, 10) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080422
+packetLen(0x00af, -1) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080408
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080401
+packetLen(0x00af, 2) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080325
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080318
+packetLen(0x00af, -1) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080311
+packetLen(0x00af, 26) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080304
+packetLen(0x00af, 2) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080226
+packetLen(0x00af, 7) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080219
+packetLen(0x00af, 4) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080124
+packetLen(0x00af, -1) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080102
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+#endif
+
+// Packet: 0x00b0
+#if PACKETVER >= 20081217
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20081112
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x00b0, -1) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20081015
+packetLen(0x00b0, 30) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20081008
+packetLen(0x00b0, 5) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080813
+packetLen(0x00b0, -1) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080806
+packetLen(0x00b0, 10) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080730
+packetLen(0x00b0, 3) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080722
+packetLen(0x00b0, -1) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080715
+packetLen(0x00b0, 86) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080708
+packetLen(0x00b0, -1) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080701
+packetLen(0x00b0, 7) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080624
+packetLen(0x00b0, 3) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080617
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080610
+packetLen(0x00b0, -1) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080603
+packetLen(0x00b0, 6) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080528
+packetLen(0x00b0, -1) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080520
+packetLen(0x00b0, 3) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080513
+packetLen(0x00b0, 6) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080429
+packetLen(0x00b0, -1) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080422
+packetLen(0x00b0, 28) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080415
+packetLen(0x00b0, 12) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080408
+packetLen(0x00b0, -1) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080401
+packetLen(0x00b0, 4) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080325
+packetLen(0x00b0, 2) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080318
+packetLen(0x00b0, -1) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080311
+packetLen(0x00b0, 10) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080226
+packetLen(0x00b0, 11) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080219
+packetLen(0x00b0, 7) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080124
+packetLen(0x00b0, 2) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+#endif
+
+// Packet: 0x00b1
+#if PACKETVER >= 20081217
+packetLen(0x00b1, 11) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20081203
+packetLen(0x00b1, 14) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20081126
+packetLen(0x00b1, 16) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20081119
+packetLen(0x00b1, -1) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20081112
+packetLen(0x00b1, 16) // ZC_LONGPAR_CHANGE
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081008
+packetLen(0x00b1, -1) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20081001
+packetLen(0x00b1, 5) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080924
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080917
+packetLen(0x00b1, -1) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080910
+packetLen(0x00b1, 55) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080903
+packetLen(0x00b1, 39) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080827
+packetLen(0x00b1, -1) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080820
+packetLen(0x00b1, 7) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080813
+packetLen(0x00b1, 30) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080730
+packetLen(0x00b1, -1) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080722
+packetLen(0x00b1, 30) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080708
+packetLen(0x00b1, -1) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080701
+packetLen(0x00b1, 3) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080617
+packetLen(0x00b1, -1) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080610
+packetLen(0x00b1, 11) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080603
+packetLen(0x00b1, 2) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080528
+packetLen(0x00b1, 6) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080507
+packetLen(0x00b1, -1) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080429
+packetLen(0x00b1, 97) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080422
+packetLen(0x00b1, -1) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080415
+packetLen(0x00b1, 26) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080401
+packetLen(0x00b1, -1) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080325
+packetLen(0x00b1, 58) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080318
+packetLen(0x00b1, 30) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080311
+packetLen(0x00b1, 2) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080304
+packetLen(0x00b1, -1) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080226
+packetLen(0x00b1, 30) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080219
+packetLen(0x00b1, 14) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080124
+packetLen(0x00b1, 9) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+#endif
+
+// Packet: 0x00b2
+#if PACKETVER >= 20081217
+packetLen(0x00b2, 23) // CZ_RESTART
+#elif PACKETVER >= 20081203
+packetLen(0x00b2, 2) // CZ_RESTART
+#elif PACKETVER >= 20081126
+packetLen(0x00b2, -1) // CZ_RESTART
+#elif PACKETVER >= 20081119
+packetLen(0x00b2, 54) // CZ_RESTART
+#elif PACKETVER >= 20081112
+packetLen(0x00b2, 26) // CZ_RESTART
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00b2, 11) // CZ_RESTART
+#elif PACKETVER >= 20081029
+packetLen(0x00b2, 42) // CZ_RESTART
+#elif PACKETVER >= 20081022
+packetLen(0x00b2, 10) // CZ_RESTART
+#elif PACKETVER >= 20081015
+packetLen(0x00b2, -1) // CZ_RESTART
+#elif PACKETVER >= 20081008
+packetLen(0x00b2, 282) // CZ_RESTART
+#elif PACKETVER >= 20081001
+packetLen(0x00b2, 3) // CZ_RESTART
+#elif PACKETVER >= 20080917
+packetLen(0x00b2, -1) // CZ_RESTART
+#elif PACKETVER >= 20080910
+packetLen(0x00b2, 14) // CZ_RESTART
+#elif PACKETVER >= 20080903
+packetLen(0x00b2, -1) // CZ_RESTART
+#elif PACKETVER >= 20080827
+packetLen(0x00b2, 102) // CZ_RESTART
+#elif PACKETVER >= 20080820
+packetLen(0x00b2, 14) // CZ_RESTART
+#elif PACKETVER >= 20080813
+packetLen(0x00b2, -1) // CZ_RESTART
+#elif PACKETVER >= 20080806
+packetLen(0x00b2, 7) // CZ_RESTART
+#elif PACKETVER >= 20080730
+packetLen(0x00b2, 30) // CZ_RESTART
+#elif PACKETVER >= 20080722
+packetLen(0x00b2, 3) // CZ_RESTART
+#elif PACKETVER >= 20080715
+packetLen(0x00b2, 6) // CZ_RESTART
+#elif PACKETVER >= 20080708
+packetLen(0x00b2, 3) // CZ_RESTART
+#elif PACKETVER >= 20080624
+packetLen(0x00b2, -1) // CZ_RESTART
+#elif PACKETVER >= 20080617
+packetLen(0x00b2, 10) // CZ_RESTART
+#elif PACKETVER >= 20080610
+packetLen(0x00b2, 13) // CZ_RESTART
+#elif PACKETVER >= 20080603
+packetLen(0x00b2, -1) // CZ_RESTART
+#elif PACKETVER >= 20080528
+packetLen(0x00b2, 2) // CZ_RESTART
+#elif PACKETVER >= 20080520
+packetLen(0x00b2, 6) // CZ_RESTART
+#elif PACKETVER >= 20080513
+packetLen(0x00b2, 58) // CZ_RESTART
+#elif PACKETVER >= 20080507
+packetLen(0x00b2, 6) // CZ_RESTART
+#elif PACKETVER >= 20080429
+packetLen(0x00b2, -1) // CZ_RESTART
+#elif PACKETVER >= 20080422
+packetLen(0x00b2, 3) // CZ_RESTART
+#elif PACKETVER >= 20080415
+packetLen(0x00b2, 14) // CZ_RESTART
+#elif PACKETVER >= 20080408
+packetLen(0x00b2, 67) // CZ_RESTART
+#elif PACKETVER >= 20080401
+packetLen(0x00b2, 4) // CZ_RESTART
+#elif PACKETVER >= 20080325
+packetLen(0x00b2, 5) // CZ_RESTART
+#elif PACKETVER >= 20080318
+packetLen(0x00b2, 3) // CZ_RESTART
+#elif PACKETVER >= 20080311
+packetLen(0x00b2, 5) // CZ_RESTART
+#elif PACKETVER >= 20080304
+packetLen(0x00b2, 8) // CZ_RESTART
+#elif PACKETVER >= 20080226
+packetLen(0x00b2, 9) // CZ_RESTART
+#elif PACKETVER >= 20080219
+packetLen(0x00b2, -1) // CZ_RESTART
+#elif PACKETVER >= 20080124
+packetLen(0x00b2, 2) // CZ_RESTART
+#elif PACKETVER >= 20080102
+packetLen(0x00b2, 3) // CZ_RESTART
+#endif
+
+// Packet: 0x00b3
+#if PACKETVER >= 20081203
+packetLen(0x00b3, -1) // ZC_RESTART_ACK
+#elif PACKETVER >= 20081126
+packetLen(0x00b3, 2) // ZC_RESTART_ACK
+#elif PACKETVER >= 20081119
+packetLen(0x00b3, 14) // ZC_RESTART_ACK
+#elif PACKETVER >= 20081112
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00b3, 11) // ZC_RESTART_ACK
+#elif PACKETVER >= 20081029
+packetLen(0x00b3, -1) // ZC_RESTART_ACK
+#elif PACKETVER >= 20081022
+packetLen(0x00b3, 2) // ZC_RESTART_ACK
+#elif PACKETVER >= 20081015
+packetLen(0x00b3, -1) // ZC_RESTART_ACK
+#elif PACKETVER >= 20081008
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+#elif PACKETVER >= 20081001
+packetLen(0x00b3, -1) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080924
+packetLen(0x00b3, 30) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080917
+packetLen(0x00b3, -1) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080910
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080820
+packetLen(0x00b3, -1) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080813
+packetLen(0x00b3, 18) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080722
+packetLen(0x00b3, -1) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080708
+packetLen(0x00b3, 6) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080701
+packetLen(0x00b3, 14) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080617
+packetLen(0x00b3, -1) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080610
+packetLen(0x00b3, 6) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080603
+packetLen(0x00b3, 30) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080528
+packetLen(0x00b3, 6) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080520
+packetLen(0x00b3, 2) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080513
+packetLen(0x00b3, -1) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080507
+packetLen(0x00b3, 4) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080422
+packetLen(0x00b3, -1) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080415
+packetLen(0x00b3, 6) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080408
+packetLen(0x00b3, 5) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080325
+packetLen(0x00b3, -1) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080318
+packetLen(0x00b3, 35) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080311
+packetLen(0x00b3, -1) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080304
+packetLen(0x00b3, 7) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080226
+packetLen(0x00b3, 10) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080219
+packetLen(0x00b3, 55) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080124
+packetLen(0x00b3, 28) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080102
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+#endif
+
+// Packet: 0x00b4
+#if PACKETVER >= 20081217
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20081203
+packetLen(0x00b4, 81) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20081126
+packetLen(0x00b4, 10) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20081119
+packetLen(0x00b4, 19) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20081112
+packetLen(0x00b4, 282) // ZC_SAY_DIALOG
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00b4, 32) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20081029
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20081022
+packetLen(0x00b4, 81) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080820
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080813
+packetLen(0x00b4, 3) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080806
+packetLen(0x00b4, 57) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080722
+packetLen(0x00b4, 30) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080715
+packetLen(0x00b4, 15) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080617
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080610
+packetLen(0x00b4, 6) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080603
+packetLen(0x00b4, 33) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080528
+packetLen(0x00b4, 3) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080520
+packetLen(0x00b4, 10) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080513
+packetLen(0x00b4, 4) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080429
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080422
+packetLen(0x00b4, 6) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080415
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080408
+packetLen(0x00b4, 282) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080401
+packetLen(0x00b4, 34) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080325
+packetLen(0x00b4, 6) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080318
+packetLen(0x00b4, 2) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080311
+packetLen(0x00b4, 36) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080304
+packetLen(0x00b4, 2) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080226
+packetLen(0x00b4, 43) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080219
+packetLen(0x00b4, 4) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080102
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+#endif
+
+// Packet: 0x00b5
+#if PACKETVER >= 20081217
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20081203
+packetLen(0x00b5, -1) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20081126
+packetLen(0x00b5, 3) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20081119
+packetLen(0x00b5, -1) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20081112
+packetLen(0x00b5, 8) // ZC_WAIT_DIALOG
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00b5, 4) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20081029
+packetLen(0x00b5, 26) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20081022
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20081008
+packetLen(0x00b5, -1) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20081001
+packetLen(0x00b5, 4) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080924
+packetLen(0x00b5, 71) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080917
+packetLen(0x00b5, 282) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080910
+packetLen(0x00b5, -1) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080903
+packetLen(0x00b5, 3) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080820
+packetLen(0x00b5, -1) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080813
+packetLen(0x00b5, 16) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080806
+packetLen(0x00b5, -1) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080730
+packetLen(0x00b5, 282) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080722
+packetLen(0x00b5, 11) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080715
+packetLen(0x00b5, -1) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080708
+packetLen(0x00b5, 58) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080701
+packetLen(0x00b5, -1) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080624
+packetLen(0x00b5, 12) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080617
+packetLen(0x00b5, -1) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080610
+packetLen(0x00b5, 3) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080603
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080528
+packetLen(0x00b5, -1) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080520
+packetLen(0x00b5, 2) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080513
+packetLen(0x00b5, -1) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080507
+packetLen(0x00b5, 5) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080429
+packetLen(0x00b5, -1) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080422
+packetLen(0x00b5, 19) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080415
+packetLen(0x00b5, 14) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080408
+packetLen(0x00b5, 90) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080401
+packetLen(0x00b5, 14) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080325
+packetLen(0x00b5, -1) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080318
+packetLen(0x00b5, 11) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080311
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080304
+packetLen(0x00b5, 8) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080226
+packetLen(0x00b5, 4) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080219
+packetLen(0x00b5, 30) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080124
+packetLen(0x00b5, -1) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080102
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+#endif
+
+// Packet: 0x00b6
+#if PACKETVER >= 20081217
+packetLen(0x00b6, 26) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20081203
+packetLen(0x00b6, 79) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20081112
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00b6, 2) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20081029
+packetLen(0x00b6, 7) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20081022
+packetLen(0x00b6, 8) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20081015
+packetLen(0x00b6, 79) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20081001
+packetLen(0x00b6, -1) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080924
+packetLen(0x00b6, 4) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080917
+packetLen(0x00b6, -1) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080910
+packetLen(0x00b6, 2) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080903
+packetLen(0x00b6, -1) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080827
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080813
+packetLen(0x00b6, -1) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080806
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080730
+packetLen(0x00b6, 2) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080722
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080715
+packetLen(0x00b6, 60) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080708
+packetLen(0x00b6, 2) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080701
+packetLen(0x00b6, 8) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080624
+packetLen(0x00b6, 7) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080617
+packetLen(0x00b6, -1) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080610
+packetLen(0x00b6, 3) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080603
+packetLen(0x00b6, 39) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080528
+packetLen(0x00b6, 11) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080429
+packetLen(0x00b6, -1) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080422
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080415
+packetLen(0x00b6, 3) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080408
+packetLen(0x00b6, 8) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080401
+packetLen(0x00b6, 3) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080325
+packetLen(0x00b6, 16) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080318
+packetLen(0x00b6, 12) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080311
+packetLen(0x00b6, -1) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080304
+packetLen(0x00b6, 4) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080226
+packetLen(0x00b6, -1) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080219
+packetLen(0x00b6, 3) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080124
+packetLen(0x00b6, 14) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080102
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+#endif
+
+// Packet: 0x00b7
+#if PACKETVER >= 20081203
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+#elif PACKETVER >= 20081126
+packetLen(0x00b7, 26) // ZC_MENU_LIST
+#elif PACKETVER >= 20081112
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+#elif PACKETVER >= 20081029
+packetLen(0x00b7, 10) // ZC_MENU_LIST
+#elif PACKETVER >= 20081022
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+#elif PACKETVER >= 20081015
+packetLen(0x00b7, 22) // ZC_MENU_LIST
+#elif PACKETVER >= 20081001
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+#elif PACKETVER >= 20080924
+packetLen(0x00b7, 6) // ZC_MENU_LIST
+#elif PACKETVER >= 20080903
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+#elif PACKETVER >= 20080827
+packetLen(0x00b7, 6) // ZC_MENU_LIST
+#elif PACKETVER >= 20080820
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+#elif PACKETVER >= 20080813
+packetLen(0x00b7, 6) // ZC_MENU_LIST
+#elif PACKETVER >= 20080715
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+#elif PACKETVER >= 20080708
+packetLen(0x00b7, 21) // ZC_MENU_LIST
+#elif PACKETVER >= 20080701
+packetLen(0x00b7, 22) // ZC_MENU_LIST
+#elif PACKETVER >= 20080617
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+#elif PACKETVER >= 20080610
+packetLen(0x00b7, 2) // ZC_MENU_LIST
+#elif PACKETVER >= 20080528
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+#elif PACKETVER >= 20080520
+packetLen(0x00b7, 58) // ZC_MENU_LIST
+#elif PACKETVER >= 20080513
+packetLen(0x00b7, 6) // ZC_MENU_LIST
+#elif PACKETVER >= 20080507
+packetLen(0x00b7, 20) // ZC_MENU_LIST
+#elif PACKETVER >= 20080429
+packetLen(0x00b7, 2) // ZC_MENU_LIST
+#elif PACKETVER >= 20080422
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+#elif PACKETVER >= 20080415
+packetLen(0x00b7, 5) // ZC_MENU_LIST
+#elif PACKETVER >= 20080408
+packetLen(0x00b7, 14) // ZC_MENU_LIST
+#elif PACKETVER >= 20080401
+packetLen(0x00b7, 8) // ZC_MENU_LIST
+#elif PACKETVER >= 20080325
+packetLen(0x00b7, 6) // ZC_MENU_LIST
+#elif PACKETVER >= 20080318
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x00b7, 42) // ZC_MENU_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x00b7, 13) // ZC_MENU_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x00b7, 32) // ZC_MENU_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x00b7, 3) // ZC_MENU_LIST
+#elif PACKETVER >= 20080124
+packetLen(0x00b7, 21) // ZC_MENU_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+#endif
+
+// Packet: 0x00b8
+#if PACKETVER >= 20081203
+packetLen(0x00b8, -1) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20081126
+packetLen(0x00b8, 2) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20081112
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00b8, -1) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20081029
+packetLen(0x00b8, 44) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20081015
+packetLen(0x00b8, -1) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20081008
+packetLen(0x00b8, 10) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20081001
+packetLen(0x00b8, -1) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080924
+packetLen(0x00b8, 2) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080917
+packetLen(0x00b8, 3) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080820
+packetLen(0x00b8, -1) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080813
+packetLen(0x00b8, 4) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080806
+packetLen(0x00b8, -1) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080730
+packetLen(0x00b8, 14) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080708
+packetLen(0x00b8, -1) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080701
+packetLen(0x00b8, 20) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080624
+packetLen(0x00b8, -1) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080617
+packetLen(0x00b8, 9) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080610
+packetLen(0x00b8, -1) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080603
+packetLen(0x00b8, 6) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080528
+packetLen(0x00b8, -1) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080520
+packetLen(0x00b8, 53) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080513
+packetLen(0x00b8, 8) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080507
+packetLen(0x00b8, -1) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080429
+packetLen(0x00b8, 4) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080422
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080415
+packetLen(0x00b8, 11) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080408
+packetLen(0x00b8, 9) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080401
+packetLen(0x00b8, 30) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080325
+packetLen(0x00b8, 5) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080318
+packetLen(0x00b8, 6) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080311
+packetLen(0x00b8, 16) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080304
+packetLen(0x00b8, 28) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080226
+packetLen(0x00b8, 5) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080219
+packetLen(0x00b8, -1) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080124
+packetLen(0x00b8, 4) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080102
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+#endif
+
+// Packet: 0x00b9
+#if PACKETVER >= 20081217
+packetLen(0x00b9, -1) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20081203
+packetLen(0x00b9, 26) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20081112
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00b9, 2) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20081015
+packetLen(0x00b9, -1) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20081008
+packetLen(0x00b9, 97) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20081001
+packetLen(0x00b9, 20) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080924
+packetLen(0x00b9, -1) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080917
+packetLen(0x00b9, 60) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080813
+packetLen(0x00b9, -1) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080806
+packetLen(0x00b9, 2) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080730
+packetLen(0x00b9, -1) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080722
+packetLen(0x00b9, 22) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080701
+packetLen(0x00b9, -1) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080624
+packetLen(0x00b9, 2) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080617
+packetLen(0x00b9, 9) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080610
+packetLen(0x00b9, -1) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080603
+packetLen(0x00b9, 66) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080513
+packetLen(0x00b9, -1) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080507
+packetLen(0x00b9, 30) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080429
+packetLen(0x00b9, 26) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080415
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080408
+packetLen(0x00b9, 2) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080401
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080325
+packetLen(0x00b9, 9) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080318
+packetLen(0x00b9, 11) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080311
+packetLen(0x00b9, 29) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080304
+packetLen(0x00b9, 10) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080226
+packetLen(0x00b9, 58) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080219
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080124
+packetLen(0x00b9, 8) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080102
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+#endif
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+#if PACKETVER >= 20081112
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00bb, -1) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20081029
+packetLen(0x00bb, 30) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20081022
+packetLen(0x00bb, -1) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20081015
+packetLen(0x00bb, 11) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080903
+packetLen(0x00bb, -1) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080827
+packetLen(0x00bb, 14) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080722
+packetLen(0x00bb, -1) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080715
+packetLen(0x00bb, 3) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080708
+packetLen(0x00bb, -1) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080701
+packetLen(0x00bb, 60) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080624
+packetLen(0x00bb, 4) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080617
+packetLen(0x00bb, -1) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080610
+packetLen(0x00bb, 36) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080603
+packetLen(0x00bb, 6) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080528
+packetLen(0x00bb, 10) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080520
+packetLen(0x00bb, 13) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080507
+packetLen(0x00bb, -1) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080429
+packetLen(0x00bb, 55) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080422
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080415
+packetLen(0x00bb, 6) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080408
+packetLen(0x00bb, -1) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080401
+packetLen(0x00bb, 3) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080325
+packetLen(0x00bb, 20) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080318
+packetLen(0x00bb, 2) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080226
+packetLen(0x00bb, -1) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080219
+packetLen(0x00bb, 182) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080124
+packetLen(0x00bb, 12) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+#endif
+
+// Packet: 0x00bc
+#if PACKETVER >= 20081217
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20081203
+packetLen(0x00bc, 2) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20081126
+packetLen(0x00bc, 4) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20081119
+packetLen(0x00bc, 7) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20081112
+packetLen(0x00bc, 26) // ZC_STATUS_CHANGE_ACK
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x00bc, -1) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20081022
+packetLen(0x00bc, 4) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20081015
+packetLen(0x00bc, 8) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080910
+packetLen(0x00bc, -1) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080903
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080827
+packetLen(0x00bc, -1) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080820
+packetLen(0x00bc, 114) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080806
+packetLen(0x00bc, -1) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080730
+packetLen(0x00bc, 53) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080722
+packetLen(0x00bc, 10) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080708
+packetLen(0x00bc, 2) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080701
+packetLen(0x00bc, -1) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080624
+packetLen(0x00bc, 4) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080617
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080610
+packetLen(0x00bc, 2) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080603
+packetLen(0x00bc, 26) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080528
+packetLen(0x00bc, 14) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080520
+packetLen(0x00bc, -1) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080513
+packetLen(0x00bc, 22) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080507
+packetLen(0x00bc, 14) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080429
+packetLen(0x00bc, -1) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080422
+packetLen(0x00bc, 2) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080415
+packetLen(0x00bc, 44) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080408
+packetLen(0x00bc, -1) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080401
+packetLen(0x00bc, 2) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080325
+packetLen(0x00bc, 11) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080318
+packetLen(0x00bc, 3) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080311
+packetLen(0x00bc, 2) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080304
+packetLen(0x00bc, 7) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080226
+packetLen(0x00bc, 3) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080219
+packetLen(0x00bc, -1) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080124
+packetLen(0x00bc, 14) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080102
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+#endif
+
+// Packet: 0x00bd
+#if PACKETVER >= 20081217
+packetLen(0x00bd, 14) // ZC_STATUS
+#elif PACKETVER >= 20081203
+packetLen(0x00bd, 3) // ZC_STATUS
+#elif PACKETVER >= 20081126
+packetLen(0x00bd, -1) // ZC_STATUS
+#elif PACKETVER >= 20081119
+packetLen(0x00bd, 13) // ZC_STATUS
+#elif PACKETVER >= 20081112
+packetLen(0x00bd, 44) // ZC_STATUS
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00bd, 6) // ZC_STATUS
+#elif PACKETVER >= 20081029
+packetLen(0x00bd, -1) // ZC_STATUS
+#elif PACKETVER >= 20081022
+packetLen(0x00bd, 4) // ZC_STATUS
+#elif PACKETVER >= 20081015
+packetLen(0x00bd, 6) // ZC_STATUS
+#elif PACKETVER >= 20081008
+packetLen(0x00bd, -1) // ZC_STATUS
+#elif PACKETVER >= 20081001
+packetLen(0x00bd, 23) // ZC_STATUS
+#elif PACKETVER >= 20080924
+packetLen(0x00bd, 3) // ZC_STATUS
+#elif PACKETVER >= 20080917
+packetLen(0x00bd, 10) // ZC_STATUS
+#elif PACKETVER >= 20080910
+packetLen(0x00bd, -1) // ZC_STATUS
+#elif PACKETVER >= 20080903
+packetLen(0x00bd, 26) // ZC_STATUS
+#elif PACKETVER >= 20080820
+packetLen(0x00bd, -1) // ZC_STATUS
+#elif PACKETVER >= 20080813
+packetLen(0x00bd, 90) // ZC_STATUS
+#elif PACKETVER >= 20080715
+packetLen(0x00bd, -1) // ZC_STATUS
+#elif PACKETVER >= 20080708
+packetLen(0x00bd, 6) // ZC_STATUS
+#elif PACKETVER >= 20080701
+packetLen(0x00bd, 60) // ZC_STATUS
+#elif PACKETVER >= 20080624
+packetLen(0x00bd, -1) // ZC_STATUS
+#elif PACKETVER >= 20080617
+packetLen(0x00bd, 79) // ZC_STATUS
+#elif PACKETVER >= 20080610
+packetLen(0x00bd, 18) // ZC_STATUS
+#elif PACKETVER >= 20080603
+packetLen(0x00bd, 6) // ZC_STATUS
+#elif PACKETVER >= 20080528
+packetLen(0x00bd, -1) // ZC_STATUS
+#elif PACKETVER >= 20080520
+packetLen(0x00bd, 26) // ZC_STATUS
+#elif PACKETVER >= 20080513
+packetLen(0x00bd, -1) // ZC_STATUS
+#elif PACKETVER >= 20080507
+packetLen(0x00bd, 7) // ZC_STATUS
+#elif PACKETVER >= 20080422
+packetLen(0x00bd, -1) // ZC_STATUS
+#elif PACKETVER >= 20080415
+packetLen(0x00bd, 6) // ZC_STATUS
+#elif PACKETVER >= 20080401
+packetLen(0x00bd, 4) // ZC_STATUS
+#elif PACKETVER >= 20080325
+packetLen(0x00bd, 7) // ZC_STATUS
+#elif PACKETVER >= 20080318
+packetLen(0x00bd, 12) // ZC_STATUS
+#elif PACKETVER >= 20080304
+packetLen(0x00bd, 2) // ZC_STATUS
+#elif PACKETVER >= 20080226
+packetLen(0x00bd, 58) // ZC_STATUS
+#elif PACKETVER >= 20080219
+packetLen(0x00bd, 6) // ZC_STATUS
+#elif PACKETVER >= 20080124
+packetLen(0x00bd, 4) // ZC_STATUS
+#elif PACKETVER >= 20080102
+packetLen(0x00bd, 44) // ZC_STATUS
+#endif
+
+// Packet: 0x00be
+#if PACKETVER >= 20081126
+packetLen(0x00be, -1) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20081119
+packetLen(0x00be, 2) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20081112
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x00be, -1) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20081022
+packetLen(0x00be, 28) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20081001
+packetLen(0x00be, -1) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080924
+packetLen(0x00be, 19) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080903
+packetLen(0x00be, -1) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080827
+packetLen(0x00be, 6) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080820
+packetLen(0x00be, 10) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080813
+packetLen(0x00be, 65) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080806
+packetLen(0x00be, 3) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080730
+packetLen(0x00be, -1) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080722
+packetLen(0x00be, 17) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080715
+packetLen(0x00be, 30) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080708
+packetLen(0x00be, 2) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080701
+packetLen(0x00be, 6) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080624
+packetLen(0x00be, 57) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080617
+packetLen(0x00be, -1) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080610
+packetLen(0x00be, 44) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080603
+packetLen(0x00be, 3) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080528
+packetLen(0x00be, 54) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080520
+packetLen(0x00be, 8) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080507
+packetLen(0x00be, -1) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080429
+packetLen(0x00be, 30) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080422
+packetLen(0x00be, 4) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080415
+packetLen(0x00be, -1) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080408
+packetLen(0x00be, 4) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080325
+packetLen(0x00be, -1) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080318
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080311
+packetLen(0x00be, 11) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080304
+packetLen(0x00be, 10) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080124
+packetLen(0x00be, -1) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+#endif
+
+// Packet: 0x00bf
+#if PACKETVER >= 20081217
+packetLen(0x00bf, -1) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20081203
+packetLen(0x00bf, 8) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20081119
+packetLen(0x00bf, -1) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20081112
+packetLen(0x00bf, 22) // CZ_REQ_EMOTION
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00bf, -1) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20081029
+packetLen(0x00bf, 16) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20081022
+packetLen(0x00bf, -1) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20081015
+packetLen(0x00bf, 21) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20081008
+packetLen(0x00bf, 7) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080924
+packetLen(0x00bf, -1) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080917
+packetLen(0x00bf, 8) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080910
+packetLen(0x00bf, 44) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080827
+packetLen(0x00bf, -1) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080820
+packetLen(0x00bf, 6) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080813
+packetLen(0x00bf, -1) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080806
+packetLen(0x00bf, 8) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080722
+packetLen(0x00bf, -1) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080715
+packetLen(0x00bf, 4) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080708
+packetLen(0x00bf, 54) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080610
+packetLen(0x00bf, -1) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080603
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080528
+packetLen(0x00bf, 65) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080520
+packetLen(0x00bf, 8) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080513
+packetLen(0x00bf, -1) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080507
+packetLen(0x00bf, 11) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080429
+packetLen(0x00bf, -1) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080422
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080408
+packetLen(0x00bf, -1) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080401
+packetLen(0x00bf, 32) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080325
+packetLen(0x00bf, 60) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080304
+packetLen(0x00bf, -1) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080226
+packetLen(0x00bf, 29) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080219
+packetLen(0x00bf, 12) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080124
+packetLen(0x00bf, 6) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080102
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+#endif
+
+// Packet: 0x00c0
+#if PACKETVER >= 20081217
+packetLen(0x00c0, 54) // ZC_EMOTION
+#elif PACKETVER >= 20081203
+packetLen(0x00c0, 5) // ZC_EMOTION
+#elif PACKETVER >= 20081126
+packetLen(0x00c0, 6) // ZC_EMOTION
+#elif PACKETVER >= 20081119
+packetLen(0x00c0, 2) // ZC_EMOTION
+#elif PACKETVER >= 20081112
+packetLen(0x00c0, 7) // ZC_EMOTION
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x00c0, -1) // ZC_EMOTION
+#elif PACKETVER >= 20081022
+packetLen(0x00c0, 36) // ZC_EMOTION
+#elif PACKETVER >= 20081015
+packetLen(0x00c0, 182) // ZC_EMOTION
+#elif PACKETVER >= 20080827
+packetLen(0x00c0, -1) // ZC_EMOTION
+#elif PACKETVER >= 20080820
+packetLen(0x00c0, 79) // ZC_EMOTION
+#elif PACKETVER >= 20080813
+packetLen(0x00c0, -1) // ZC_EMOTION
+#elif PACKETVER >= 20080806
+packetLen(0x00c0, 3) // ZC_EMOTION
+#elif PACKETVER >= 20080730
+packetLen(0x00c0, -1) // ZC_EMOTION
+#elif PACKETVER >= 20080722
+packetLen(0x00c0, 6) // ZC_EMOTION
+#elif PACKETVER >= 20080715
+packetLen(0x00c0, 4) // ZC_EMOTION
+#elif PACKETVER >= 20080708
+packetLen(0x00c0, 6) // ZC_EMOTION
+#elif PACKETVER >= 20080701
+packetLen(0x00c0, -1) // ZC_EMOTION
+#elif PACKETVER >= 20080624
+packetLen(0x00c0, 10) // ZC_EMOTION
+#elif PACKETVER >= 20080617
+packetLen(0x00c0, 60) // ZC_EMOTION
+#elif PACKETVER >= 20080610
+packetLen(0x00c0, 39) // ZC_EMOTION
+#elif PACKETVER >= 20080603
+packetLen(0x00c0, 26) // ZC_EMOTION
+#elif PACKETVER >= 20080528
+packetLen(0x00c0, 30) // ZC_EMOTION
+#elif PACKETVER >= 20080520
+packetLen(0x00c0, 2) // ZC_EMOTION
+#elif PACKETVER >= 20080513
+packetLen(0x00c0, 186) // ZC_EMOTION
+#elif PACKETVER >= 20080507
+packetLen(0x00c0, -1) // ZC_EMOTION
+#elif PACKETVER >= 20080429
+packetLen(0x00c0, 13) // ZC_EMOTION
+#elif PACKETVER >= 20080422
+packetLen(0x00c0, 9) // ZC_EMOTION
+#elif PACKETVER >= 20080415
+packetLen(0x00c0, -1) // ZC_EMOTION
+#elif PACKETVER >= 20080408
+packetLen(0x00c0, 7) // ZC_EMOTION
+#elif PACKETVER >= 20080401
+packetLen(0x00c0, 2) // ZC_EMOTION
+#elif PACKETVER >= 20080325
+packetLen(0x00c0, 10) // ZC_EMOTION
+#elif PACKETVER >= 20080318
+packetLen(0x00c0, 26) // ZC_EMOTION
+#elif PACKETVER >= 20080304
+packetLen(0x00c0, -1) // ZC_EMOTION
+#elif PACKETVER >= 20080226
+packetLen(0x00c0, 21) // ZC_EMOTION
+#elif PACKETVER >= 20080219
+packetLen(0x00c0, 6) // ZC_EMOTION
+#elif PACKETVER >= 20080124
+packetLen(0x00c0, -1) // ZC_EMOTION
+#elif PACKETVER >= 20080102
+packetLen(0x00c0, 7) // ZC_EMOTION
+#endif
+
+// Packet: 0x00c1
+#if PACKETVER >= 20081112
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00c1, 9) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20081015
+packetLen(0x00c1, -1) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20081008
+packetLen(0x00c1, 26) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20081001
+packetLen(0x00c1, 6) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080924
+packetLen(0x00c1, 21) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080917
+packetLen(0x00c1, 8) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080903
+packetLen(0x00c1, -1) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080827
+packetLen(0x00c1, 66) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080820
+packetLen(0x00c1, -1) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080813
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080806
+packetLen(0x00c1, -1) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080730
+packetLen(0x00c1, 186) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080715
+packetLen(0x00c1, -1) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080708
+packetLen(0x00c1, 29) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080701
+packetLen(0x00c1, 6) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080610
+packetLen(0x00c1, -1) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080603
+packetLen(0x00c1, 81) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080507
+packetLen(0x00c1, -1) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080422
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080415
+packetLen(0x00c1, 57) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080401
+packetLen(0x00c1, -1) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080325
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080318
+packetLen(0x00c1, 4) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080311
+packetLen(0x00c1, 16) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080304
+packetLen(0x00c1, 9) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080226
+packetLen(0x00c1, 6) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080219
+packetLen(0x00c1, -1) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080124
+packetLen(0x00c1, 282) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080102
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+#endif
+
+// Packet: 0x00c2
+#if PACKETVER >= 20081203
+packetLen(0x00c2, -1) // ZC_USER_COUNT
+#elif PACKETVER >= 20081126
+packetLen(0x00c2, 2) // ZC_USER_COUNT
+#elif PACKETVER >= 20081119
+packetLen(0x00c2, -1) // ZC_USER_COUNT
+#elif PACKETVER >= 20081112
+packetLen(0x00c2, 10) // ZC_USER_COUNT
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x00c2, -1) // ZC_USER_COUNT
+#elif PACKETVER >= 20081015
+packetLen(0x00c2, 5) // ZC_USER_COUNT
+#elif PACKETVER >= 20081001
+packetLen(0x00c2, -1) // ZC_USER_COUNT
+#elif PACKETVER >= 20080917
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+#elif PACKETVER >= 20080910
+packetLen(0x00c2, -1) // ZC_USER_COUNT
+#elif PACKETVER >= 20080903
+packetLen(0x00c2, 26) // ZC_USER_COUNT
+#elif PACKETVER >= 20080827
+packetLen(0x00c2, 17) // ZC_USER_COUNT
+#elif PACKETVER >= 20080820
+packetLen(0x00c2, -1) // ZC_USER_COUNT
+#elif PACKETVER >= 20080813
+packetLen(0x00c2, 14) // ZC_USER_COUNT
+#elif PACKETVER >= 20080701
+packetLen(0x00c2, -1) // ZC_USER_COUNT
+#elif PACKETVER >= 20080624
+packetLen(0x00c2, 8) // ZC_USER_COUNT
+#elif PACKETVER >= 20080617
+packetLen(0x00c2, -1) // ZC_USER_COUNT
+#elif PACKETVER >= 20080610
+packetLen(0x00c2, 2) // ZC_USER_COUNT
+#elif PACKETVER >= 20080603
+packetLen(0x00c2, 90) // ZC_USER_COUNT
+#elif PACKETVER >= 20080507
+packetLen(0x00c2, -1) // ZC_USER_COUNT
+#elif PACKETVER >= 20080429
+packetLen(0x00c2, 16) // ZC_USER_COUNT
+#elif PACKETVER >= 20080422
+packetLen(0x00c2, 4) // ZC_USER_COUNT
+#elif PACKETVER >= 20080415
+packetLen(0x00c2, 5) // ZC_USER_COUNT
+#elif PACKETVER >= 20080408
+packetLen(0x00c2, 2) // ZC_USER_COUNT
+#elif PACKETVER >= 20080401
+packetLen(0x00c2, 26) // ZC_USER_COUNT
+#elif PACKETVER >= 20080325
+packetLen(0x00c2, 10) // ZC_USER_COUNT
+#elif PACKETVER >= 20080318
+packetLen(0x00c2, 54) // ZC_USER_COUNT
+#elif PACKETVER >= 20080311
+packetLen(0x00c2, 4) // ZC_USER_COUNT
+#elif PACKETVER >= 20080304
+packetLen(0x00c2, 39) // ZC_USER_COUNT
+#elif PACKETVER >= 20080226
+packetLen(0x00c2, 282) // ZC_USER_COUNT
+#elif PACKETVER >= 20080219
+packetLen(0x00c2, 4) // ZC_USER_COUNT
+#elif PACKETVER >= 20080124
+packetLen(0x00c2, 3) // ZC_USER_COUNT
+#elif PACKETVER >= 20080102
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+#endif
+
+// Packet: 0x00c3
+#if PACKETVER >= 20081217
+packetLen(0x00c3, 5) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20081112
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00c3, 10) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20081029
+packetLen(0x00c3, 2) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20081015
+packetLen(0x00c3, -1) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20081008
+packetLen(0x00c3, 24) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080917
+packetLen(0x00c3, -1) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080910
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080903
+packetLen(0x00c3, 22) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080813
+packetLen(0x00c3, -1) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080806
+packetLen(0x00c3, 6) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080715
+packetLen(0x00c3, -1) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080708
+packetLen(0x00c3, 9) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080701
+packetLen(0x00c3, -1) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080624
+packetLen(0x00c3, 3) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080617
+packetLen(0x00c3, -1) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080610
+packetLen(0x00c3, 42) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080603
+packetLen(0x00c3, -1) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080520
+packetLen(0x00c3, 10) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080415
+packetLen(0x00c3, -1) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080408
+packetLen(0x00c3, 4) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080401
+packetLen(0x00c3, 66) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080325
+packetLen(0x00c3, -1) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080318
+packetLen(0x00c3, 3) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080311
+packetLen(0x00c3, 68) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080304
+packetLen(0x00c3, 26) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080226
+packetLen(0x00c3, 28) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080219
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080124
+packetLen(0x00c3, 10) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+#endif
+
+// Packet: 0x00c4
+#if PACKETVER >= 20081203
+packetLen(0x00c4, -1) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20081126
+packetLen(0x00c4, 15) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20081119
+packetLen(0x00c4, 71) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20081112
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00c4, -1) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20081029
+packetLen(0x00c4, 67) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20081022
+packetLen(0x00c4, -1) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20081015
+packetLen(0x00c4, 26) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20081008
+packetLen(0x00c4, -1) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20081001
+packetLen(0x00c4, 10) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080924
+packetLen(0x00c4, 26) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080917
+packetLen(0x00c4, 5) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080806
+packetLen(0x00c4, -1) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080730
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080722
+packetLen(0x00c4, 7) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080715
+packetLen(0x00c4, -1) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080708
+packetLen(0x00c4, 186) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080701
+packetLen(0x00c4, -1) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080624
+packetLen(0x00c4, 14) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080617
+packetLen(0x00c4, -1) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080603
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080528
+packetLen(0x00c4, -1) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080520
+packetLen(0x00c4, 2) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080513
+packetLen(0x00c4, -1) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080507
+packetLen(0x00c4, 29) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080429
+packetLen(0x00c4, 71) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080422
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080415
+packetLen(0x00c4, 11) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080408
+packetLen(0x00c4, 2) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080401
+packetLen(0x00c4, -1) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080325
+packetLen(0x00c4, 3) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080318
+packetLen(0x00c4, -1) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080304
+packetLen(0x00c4, 4) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080226
+packetLen(0x00c4, 114) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080219
+packetLen(0x00c4, 2) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080124
+packetLen(0x00c4, 4) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080102
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+#endif
+
+// Packet: 0x00c5
+#if PACKETVER >= 20081217
+packetLen(0x00c5, -1) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20081203
+packetLen(0x00c5, 16) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20081112
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00c5, -1) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20081029
+packetLen(0x00c5, 8) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20081022
+packetLen(0x00c5, 5) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20081015
+packetLen(0x00c5, -1) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20081008
+packetLen(0x00c5, 28) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20081001
+packetLen(0x00c5, 8) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080924
+packetLen(0x00c5, -1) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080917
+packetLen(0x00c5, 6) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080827
+packetLen(0x00c5, -1) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080820
+packetLen(0x00c5, 2) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080806
+packetLen(0x00c5, -1) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080730
+packetLen(0x00c5, 4) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080722
+packetLen(0x00c5, 30) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080715
+packetLen(0x00c5, -1) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080708
+packetLen(0x00c5, 16) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080624
+packetLen(0x00c5, -1) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080617
+packetLen(0x00c5, 9) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080610
+packetLen(0x00c5, 114) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080603
+packetLen(0x00c5, -1) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080528
+packetLen(0x00c5, 10) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080520
+packetLen(0x00c5, 4) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080513
+packetLen(0x00c5, 6) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080507
+packetLen(0x00c5, 8) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080429
+packetLen(0x00c5, -1) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080422
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080401
+packetLen(0x00c5, -1) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080325
+packetLen(0x00c5, 30) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080318
+packetLen(0x00c5, 3) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080311
+packetLen(0x00c5, 9) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080124
+packetLen(0x00c5, -1) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080102
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+#endif
+
+// Packet: 0x00c6
+#if PACKETVER >= 20081126
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20081119
+packetLen(0x00c6, 6) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20081112
+packetLen(0x00c6, 14) // ZC_PC_PURCHASE_ITEMLIST
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081015
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20081008
+packetLen(0x00c6, 5) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080917
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080910
+packetLen(0x00c6, 19) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080813
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080806
+packetLen(0x00c6, 6) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080730
+packetLen(0x00c6, 18) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080722
+packetLen(0x00c6, 11) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080715
+packetLen(0x00c6, 26) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080617
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080610
+packetLen(0x00c6, 8) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080520
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080513
+packetLen(0x00c6, 8) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080507
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080429
+packetLen(0x00c6, 21) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080422
+packetLen(0x00c6, 4) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080325
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080318
+packetLen(0x00c6, 31) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x00c6, 5) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x00c6, 13) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x00c6, 3) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+#endif
+
+// Packet: 0x00c7
+#if PACKETVER >= 20081126
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20081119
+packetLen(0x00c7, 6) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20081112
+packetLen(0x00c7, 10) // ZC_PC_SELL_ITEMLIST
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20081022
+packetLen(0x00c7, 2) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20081015
+packetLen(0x00c7, 15) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20081008
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20081001
+packetLen(0x00c7, 13) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080924
+packetLen(0x00c7, 6) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080917
+packetLen(0x00c7, 14) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080910
+packetLen(0x00c7, 10) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080903
+packetLen(0x00c7, 6) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080827
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080820
+packetLen(0x00c7, 6) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080813
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080806
+packetLen(0x00c7, 26) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080722
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080715
+packetLen(0x00c7, 18) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080708
+packetLen(0x00c7, 27) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080701
+packetLen(0x00c7, 182) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080624
+packetLen(0x00c7, 6) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080603
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080528
+packetLen(0x00c7, 3) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080520
+packetLen(0x00c7, 22) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080513
+packetLen(0x00c7, 4) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080429
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080422
+packetLen(0x00c7, 53) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080415
+packetLen(0x00c7, 6) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080408
+packetLen(0x00c7, 26) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080325
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080318
+packetLen(0x00c7, 58) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x00c7, 90) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x00c7, 67) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x00c7, 5) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x00c7, 90) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080124
+packetLen(0x00c7, 6) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+#endif
+
+// Packet: 0x00c8
+#if PACKETVER >= 20081105
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20081029
+packetLen(0x00c8, 6) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20081022
+packetLen(0x00c8, 8) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080917
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080910
+packetLen(0x00c8, 6) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080903
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080827
+packetLen(0x00c8, 3) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080813
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080806
+packetLen(0x00c8, 11) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080730
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080722
+packetLen(0x00c8, 20) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080715
+packetLen(0x00c8, 11) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080708
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080701
+packetLen(0x00c8, 2) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080624
+packetLen(0x00c8, 4) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080617
+packetLen(0x00c8, 15) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080603
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080528
+packetLen(0x00c8, 6) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080507
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080429
+packetLen(0x00c8, 66) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080325
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080318
+packetLen(0x00c8, 2) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x00c8, 14) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x00c8, 53) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x00c8, 10) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080124
+packetLen(0x00c8, 6) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+#endif
+
+// Packet: 0x00c9
+#if PACKETVER >= 20081119
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20081112
+packetLen(0x00c9, 3) // CZ_PC_SELL_ITEMLIST
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00c9, 9) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20081029
+packetLen(0x00c9, 26) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20081022
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20081015
+packetLen(0x00c9, 30) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20081008
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20081001
+packetLen(0x00c9, 7) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080924
+packetLen(0x00c9, 4) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080903
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080827
+packetLen(0x00c9, 14) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080820
+packetLen(0x00c9, 2) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080813
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080806
+packetLen(0x00c9, 3) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080730
+packetLen(0x00c9, 8) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080722
+packetLen(0x00c9, 29) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080715
+packetLen(0x00c9, 14) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080708
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080701
+packetLen(0x00c9, 39) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080624
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080617
+packetLen(0x00c9, 36) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080610
+packetLen(0x00c9, 9) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080603
+packetLen(0x00c9, 30) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080520
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080513
+packetLen(0x00c9, 10) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080318
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x00c9, 6) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x00c9, 6) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x00c9, 10) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080124
+packetLen(0x00c9, 5) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+#endif
+
+// Packet: 0x00ca
+#if PACKETVER >= 20081126
+packetLen(0x00ca, -1) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20081119
+packetLen(0x00ca, 29) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20081112
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00ca, -1) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20081029
+packetLen(0x00ca, 2) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20081015
+packetLen(0x00ca, -1) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20081008
+packetLen(0x00ca, 4) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20081001
+packetLen(0x00ca, 10) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080924
+packetLen(0x00ca, -1) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080917
+packetLen(0x00ca, 30) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080903
+packetLen(0x00ca, -1) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080827
+packetLen(0x00ca, 30) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080820
+packetLen(0x00ca, 86) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080813
+packetLen(0x00ca, -1) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080806
+packetLen(0x00ca, 2) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080715
+packetLen(0x00ca, -1) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080708
+packetLen(0x00ca, 8) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080610
+packetLen(0x00ca, -1) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080603
+packetLen(0x00ca, 31) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080513
+packetLen(0x00ca, -1) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080507
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080429
+packetLen(0x00ca, 7) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080422
+packetLen(0x00ca, 6) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080415
+packetLen(0x00ca, 17) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080408
+packetLen(0x00ca, 14) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080401
+packetLen(0x00ca, 2) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080325
+packetLen(0x00ca, -1) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080318
+packetLen(0x00ca, 4) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080311
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080304
+packetLen(0x00ca, 9) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080226
+packetLen(0x00ca, 23) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080219
+packetLen(0x00ca, 86) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080124
+packetLen(0x00ca, 36) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080102
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+#endif
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+#if PACKETVER >= 20081217
+packetLen(0x00cc, -1) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20081203
+packetLen(0x00cc, 4) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20081126
+packetLen(0x00cc, 14) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20081112
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00cc, -1) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20081029
+packetLen(0x00cc, 10) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20081022
+packetLen(0x00cc, 15) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20081001
+packetLen(0x00cc, -1) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080924
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080903
+packetLen(0x00cc, -1) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080827
+packetLen(0x00cc, 10) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080813
+packetLen(0x00cc, -1) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080806
+packetLen(0x00cc, 33) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080730
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080708
+packetLen(0x00cc, -1) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080701
+packetLen(0x00cc, 33) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080617
+packetLen(0x00cc, -1) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080610
+packetLen(0x00cc, 28) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080603
+packetLen(0x00cc, 2) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080520
+packetLen(0x00cc, -1) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080513
+packetLen(0x00cc, 26) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080507
+packetLen(0x00cc, -1) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080429
+packetLen(0x00cc, 10) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080422
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080415
+packetLen(0x00cc, 2) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080401
+packetLen(0x00cc, 3) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080325
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080318
+packetLen(0x00cc, 10) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080311
+packetLen(0x00cc, 14) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080304
+packetLen(0x00cc, -1) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080226
+packetLen(0x00cc, 7) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080124
+packetLen(0x00cc, -1) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080102
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+#endif
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+#if PACKETVER >= 20081217
+packetLen(0x00ce, 8) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20081112
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x00ce, 282) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20081022
+packetLen(0x00ce, -1) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20081015
+packetLen(0x00ce, 6) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20081008
+packetLen(0x00ce, 8) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20081001
+packetLen(0x00ce, 6) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080924
+packetLen(0x00ce, 9) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080917
+packetLen(0x00ce, -1) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080910
+packetLen(0x00ce, 5) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080903
+packetLen(0x00ce, 53) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080820
+packetLen(0x00ce, -1) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080813
+packetLen(0x00ce, 60) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080806
+packetLen(0x00ce, 15) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080730
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080722
+packetLen(0x00ce, 8) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080715
+packetLen(0x00ce, -1) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080708
+packetLen(0x00ce, 8) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080701
+packetLen(0x00ce, -1) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080624
+packetLen(0x00ce, 4) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080617
+packetLen(0x00ce, 11) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080610
+packetLen(0x00ce, 22) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080603
+packetLen(0x00ce, 102) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080528
+packetLen(0x00ce, 11) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080520
+packetLen(0x00ce, 3) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080513
+packetLen(0x00ce, 9) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080507
+packetLen(0x00ce, -1) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080429
+packetLen(0x00ce, 114) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080422
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080415
+packetLen(0x00ce, 10) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080408
+packetLen(0x00ce, -1) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080401
+packetLen(0x00ce, 30) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080325
+packetLen(0x00ce, 10) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080318
+packetLen(0x00ce, 7) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080311
+packetLen(0x00ce, 10) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080304
+packetLen(0x00ce, 8) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080226
+packetLen(0x00ce, -1) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080124
+packetLen(0x00ce, 6) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080102
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+#endif
+
+// Packet: 0x00cf
+#if PACKETVER >= 20081126
+packetLen(0x00cf, -1) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20081119
+packetLen(0x00cf, 5) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20081112
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x00cf, -1) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20081022
+packetLen(0x00cf, 5) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20081015
+packetLen(0x00cf, 4) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20081008
+packetLen(0x00cf, 6) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080924
+packetLen(0x00cf, -1) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080917
+packetLen(0x00cf, 90) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080910
+packetLen(0x00cf, 30) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080827
+packetLen(0x00cf, -1) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080820
+packetLen(0x00cf, 2) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080730
+packetLen(0x00cf, -1) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080722
+packetLen(0x00cf, 7) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080624
+packetLen(0x00cf, -1) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080617
+packetLen(0x00cf, 30) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080610
+packetLen(0x00cf, 57) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080603
+packetLen(0x00cf, 6) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080528
+packetLen(0x00cf, 5) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080520
+packetLen(0x00cf, 8) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080513
+packetLen(0x00cf, 2) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080507
+packetLen(0x00cf, -1) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080429
+packetLen(0x00cf, 5) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080422
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080415
+packetLen(0x00cf, -1) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080408
+packetLen(0x00cf, 6) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080401
+packetLen(0x00cf, 60) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080325
+packetLen(0x00cf, 2) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080318
+packetLen(0x00cf, -1) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080311
+packetLen(0x00cf, 6) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080304
+packetLen(0x00cf, -1) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080226
+packetLen(0x00cf, 16) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080219
+packetLen(0x00cf, 9) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080124
+packetLen(0x00cf, 11) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080102
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+#endif
+
+// Packet: 0x00d0
+#if PACKETVER >= 20081112
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00d0, 6) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20081029
+packetLen(0x00d0, -1) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20081022
+packetLen(0x00d0, 6) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20081001
+packetLen(0x00d0, -1) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080924
+packetLen(0x00d0, 29) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080917
+packetLen(0x00d0, -1) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080910
+packetLen(0x00d0, 10) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080903
+packetLen(0x00d0, -1) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080827
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080820
+packetLen(0x00d0, -1) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080813
+packetLen(0x00d0, 55) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080806
+packetLen(0x00d0, 60) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080730
+packetLen(0x00d0, 11) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080722
+packetLen(0x00d0, -1) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080715
+packetLen(0x00d0, 6) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080708
+packetLen(0x00d0, 68) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080610
+packetLen(0x00d0, -1) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080603
+packetLen(0x00d0, 10) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080528
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080520
+packetLen(0x00d0, 30) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080513
+packetLen(0x00d0, 114) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080507
+packetLen(0x00d0, 14) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080429
+packetLen(0x00d0, -1) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080422
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080415
+packetLen(0x00d0, -1) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080408
+packetLen(0x00d0, 4) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080401
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080325
+packetLen(0x00d0, 8) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080318
+packetLen(0x00d0, 14) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080311
+packetLen(0x00d0, 10) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080226
+packetLen(0x00d0, 2) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080219
+packetLen(0x00d0, -1) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080124
+packetLen(0x00d0, 182) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080102
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+#endif
+
+// Packet: 0x00d1
+#if PACKETVER >= 20081217
+packetLen(0x00d1, 16) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20081203
+packetLen(0x00d1, 8) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20081126
+packetLen(0x00d1, 11) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20081119
+packetLen(0x00d1, -1) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20081112
+packetLen(0x00d1, 282) // ZC_SETTING_WHISPER_PC
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00d1, 23) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20081022
+packetLen(0x00d1, -1) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20081015
+packetLen(0x00d1, 3) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20081008
+packetLen(0x00d1, -1) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20081001
+packetLen(0x00d1, 6) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080924
+packetLen(0x00d1, 9) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080820
+packetLen(0x00d1, -1) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080813
+packetLen(0x00d1, 11) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080806
+packetLen(0x00d1, -1) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080730
+packetLen(0x00d1, 53) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080708
+packetLen(0x00d1, -1) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080701
+packetLen(0x00d1, 26) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080624
+packetLen(0x00d1, -1) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080610
+packetLen(0x00d1, 6) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080603
+packetLen(0x00d1, 5) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080528
+packetLen(0x00d1, 10) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080520
+packetLen(0x00d1, -1) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080513
+packetLen(0x00d1, 54) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080507
+packetLen(0x00d1, -1) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080429
+packetLen(0x00d1, 3) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080422
+packetLen(0x00d1, -1) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080415
+packetLen(0x00d1, 43) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080408
+packetLen(0x00d1, 67) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080401
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080325
+packetLen(0x00d1, -1) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080318
+packetLen(0x00d1, 6) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080304
+packetLen(0x00d1, -1) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080226
+packetLen(0x00d1, 10) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080219
+packetLen(0x00d1, 13) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080124
+packetLen(0x00d1, 6) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080102
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+#endif
+
+// Packet: 0x00d2
+#if PACKETVER >= 20081217
+packetLen(0x00d2, 8) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20081203
+packetLen(0x00d2, 6) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20081126
+packetLen(0x00d2, 2) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20081119
+packetLen(0x00d2, -1) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20081112
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20081105
+packetLen(0x00d2, 6) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20081008
+packetLen(0x00d2, -1) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20081001
+packetLen(0x00d2, 10) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080924
+packetLen(0x00d2, 15) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080917
+packetLen(0x00d2, 30) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080910
+packetLen(0x00d2, 2) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080903
+packetLen(0x00d2, -1) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080827
+packetLen(0x00d2, 6) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080820
+packetLen(0x00d2, 9) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080813
+packetLen(0x00d2, -1) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080806
+packetLen(0x00d2, 2) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080730
+packetLen(0x00d2, 6) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080722
+packetLen(0x00d2, 30) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080708
+packetLen(0x00d2, -1) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080701
+packetLen(0x00d2, 16) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080610
+packetLen(0x00d2, -1) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080603
+packetLen(0x00d2, 7) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080528
+packetLen(0x00d2, 11) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080520
+packetLen(0x00d2, 9) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080513
+packetLen(0x00d2, 6) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080507
+packetLen(0x00d2, -1) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080422
+packetLen(0x00d2, 10) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080415
+packetLen(0x00d2, 8) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080408
+packetLen(0x00d2, 6) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080401
+packetLen(0x00d2, -1) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080325
+packetLen(0x00d2, 7) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080318
+packetLen(0x00d2, 6) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080311
+packetLen(0x00d2, 30) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080304
+packetLen(0x00d2, 16) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080226
+packetLen(0x00d2, 14) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080219
+packetLen(0x00d2, 20) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080102
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+#endif
+
+// Packet: 0x00d3
+#if PACKETVER >= 20081217
+packetLen(0x00d3, -1) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20081203
+packetLen(0x00d3, 10) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20081126
+packetLen(0x00d3, -1) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20081119
+packetLen(0x00d3, 4) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20081112
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081015
+packetLen(0x00d3, -1) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20081008
+packetLen(0x00d3, 8) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20081001
+packetLen(0x00d3, 18) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080924
+packetLen(0x00d3, 10) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080917
+packetLen(0x00d3, 35) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080813
+packetLen(0x00d3, -1) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080806
+packetLen(0x00d3, 3) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080730
+packetLen(0x00d3, 6) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080722
+packetLen(0x00d3, 7) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080715
+packetLen(0x00d3, 23) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080701
+packetLen(0x00d3, -1) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080624
+packetLen(0x00d3, 6) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080603
+packetLen(0x00d3, -1) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080528
+packetLen(0x00d3, 6) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080520
+packetLen(0x00d3, 3) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080513
+packetLen(0x00d3, 26) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080429
+packetLen(0x00d3, 3) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080422
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080415
+packetLen(0x00d3, 20) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080408
+packetLen(0x00d3, 19) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080401
+packetLen(0x00d3, 33) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080325
+packetLen(0x00d3, 6) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080318
+packetLen(0x00d3, 12) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x00d3, 14) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x00d3, -1) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x00d3, 26) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080124
+packetLen(0x00d3, 6) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+#endif
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+#if PACKETVER >= 20081217
+packetLen(0x00d5, 58) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20081203
+packetLen(0x00d5, 6) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20081126
+packetLen(0x00d5, 19) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20081119
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20081112
+packetLen(0x00d5, 6) // CZ_CREATE_CHATROOM
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20081029
+packetLen(0x00d5, 2) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20081022
+packetLen(0x00d5, 26) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20081015
+packetLen(0x00d5, 6) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20081008
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20081001
+packetLen(0x00d5, 2) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080820
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080813
+packetLen(0x00d5, 29) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080730
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080722
+packetLen(0x00d5, 10) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080715
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080708
+packetLen(0x00d5, 10) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080701
+packetLen(0x00d5, 7) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080603
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080528
+packetLen(0x00d5, 81) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080513
+packetLen(0x00d5, 8) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080507
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080429
+packetLen(0x00d5, 26) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080415
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080408
+packetLen(0x00d5, 60) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080401
+packetLen(0x00d5, 21) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080325
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080318
+packetLen(0x00d5, 114) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080311
+packetLen(0x00d5, 2) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080304
+packetLen(0x00d5, 3) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080226
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080219
+packetLen(0x00d5, 10) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080124
+packetLen(0x00d5, 7) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080102
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+#endif
+
+// Packet: 0x00d6
+#if PACKETVER >= 20081217
+packetLen(0x00d6, 6) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20081203
+packetLen(0x00d6, -1) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20081126
+packetLen(0x00d6, 10) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20081119
+packetLen(0x00d6, -1) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20081112
+packetLen(0x00d6, 16) // ZC_ACK_CREATE_CHATROOM
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00d6, 6) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20081029
+packetLen(0x00d6, 11) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20081022
+packetLen(0x00d6, 8) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20081015
+packetLen(0x00d6, 7) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20081008
+packetLen(0x00d6, 8) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080924
+packetLen(0x00d6, -1) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080917
+packetLen(0x00d6, 27) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080903
+packetLen(0x00d6, -1) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080827
+packetLen(0x00d6, 7) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080820
+packetLen(0x00d6, -1) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080813
+packetLen(0x00d6, 86) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080730
+packetLen(0x00d6, 2) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080715
+packetLen(0x00d6, -1) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080708
+packetLen(0x00d6, 6) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080701
+packetLen(0x00d6, 15) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080624
+packetLen(0x00d6, 6) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080617
+packetLen(0x00d6, -1) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080610
+packetLen(0x00d6, 26) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080603
+packetLen(0x00d6, -1) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080528
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080520
+packetLen(0x00d6, 26) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080513
+packetLen(0x00d6, 16) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080429
+packetLen(0x00d6, -1) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080422
+packetLen(0x00d6, 282) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080415
+packetLen(0x00d6, 21) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080408
+packetLen(0x00d6, -1) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080401
+packetLen(0x00d6, 10) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080325
+packetLen(0x00d6, 58) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080318
+packetLen(0x00d6, 6) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080311
+packetLen(0x00d6, 8) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080304
+packetLen(0x00d6, 68) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080226
+packetLen(0x00d6, 30) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080219
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080124
+packetLen(0x00d6, -1) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080102
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+#endif
+
+// Packet: 0x00d7
+#if PACKETVER >= 20081126
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20081119
+packetLen(0x00d7, 22) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20081112
+packetLen(0x00d7, 27) // ZC_ROOM_NEWENTRY
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20081015
+packetLen(0x00d7, 35) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20081008
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20081001
+packetLen(0x00d7, 28) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080924
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080917
+packetLen(0x00d7, 10) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080903
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080827
+packetLen(0x00d7, 2) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080820
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080813
+packetLen(0x00d7, 9) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080806
+packetLen(0x00d7, 2) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080730
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080722
+packetLen(0x00d7, 10) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080708
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080701
+packetLen(0x00d7, 10) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080624
+packetLen(0x00d7, 26) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080603
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080528
+packetLen(0x00d7, 8) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080520
+packetLen(0x00d7, 9) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080513
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080507
+packetLen(0x00d7, 39) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080408
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080401
+packetLen(0x00d7, 8) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080325
+packetLen(0x00d7, 5) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080318
+packetLen(0x00d7, 4) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080311
+packetLen(0x00d7, 67) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x00d7, 24) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080226
+packetLen(0x00d7, 28) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080219
+packetLen(0x00d7, 3) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080124
+packetLen(0x00d7, 8) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+#endif
+
+// Packet: 0x00d8
+#if PACKETVER >= 20081217
+packetLen(0x00d8, -1) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20081203
+packetLen(0x00d8, 3) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20081126
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20081119
+packetLen(0x00d8, -1) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20081112
+packetLen(0x00d8, 28) // ZC_DESTROY_ROOM
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00d8, 26) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20081029
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20081008
+packetLen(0x00d8, -1) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20081001
+packetLen(0x00d8, 2) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080910
+packetLen(0x00d8, -1) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080903
+packetLen(0x00d8, 7) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080722
+packetLen(0x00d8, -1) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080715
+packetLen(0x00d8, 57) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080617
+packetLen(0x00d8, -1) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080610
+packetLen(0x00d8, 30) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080603
+packetLen(0x00d8, -1) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080528
+packetLen(0x00d8, 5) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080520
+packetLen(0x00d8, 7) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080513
+packetLen(0x00d8, 53) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080507
+packetLen(0x00d8, 17) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080422
+packetLen(0x00d8, -1) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080415
+packetLen(0x00d8, 9) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080408
+packetLen(0x00d8, 26) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080325
+packetLen(0x00d8, 2) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080318
+packetLen(0x00d8, 30) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080311
+packetLen(0x00d8, 2) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080304
+packetLen(0x00d8, -1) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080226
+packetLen(0x00d8, 16) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080219
+packetLen(0x00d8, 2) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080124
+packetLen(0x00d8, 4) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080102
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+#endif
+
+// Packet: 0x00d9
+#if PACKETVER >= 20081217
+packetLen(0x00d9, 55) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20081112
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081015
+packetLen(0x00d9, -1) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20081008
+packetLen(0x00d9, 4) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080917
+packetLen(0x00d9, -1) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080910
+packetLen(0x00d9, 6) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080827
+packetLen(0x00d9, -1) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080820
+packetLen(0x00d9, 10) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080813
+packetLen(0x00d9, -1) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080806
+packetLen(0x00d9, 8) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080730
+packetLen(0x00d9, -1) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080722
+packetLen(0x00d9, 26) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080715
+packetLen(0x00d9, -1) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080708
+packetLen(0x00d9, 28) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080603
+packetLen(0x00d9, -1) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080528
+packetLen(0x00d9, 4) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080520
+packetLen(0x00d9, 5) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080513
+packetLen(0x00d9, 10) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080507
+packetLen(0x00d9, 3) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080429
+packetLen(0x00d9, 6) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080422
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080401
+packetLen(0x00d9, -1) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080325
+packetLen(0x00d9, 6) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080318
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080311
+packetLen(0x00d9, 6) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080304
+packetLen(0x00d9, 7) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080226
+packetLen(0x00d9, 6) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080219
+packetLen(0x00d9, 3) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080124
+packetLen(0x00d9, 282) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080102
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+#endif
+
+// Packet: 0x00da
+#if PACKETVER >= 20081217
+packetLen(0x00da, 21) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20081126
+packetLen(0x00da, -1) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20081119
+packetLen(0x00da, 2) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20081112
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00da, -1) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20081029
+packetLen(0x00da, 8) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20081022
+packetLen(0x00da, 28) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20081008
+packetLen(0x00da, -1) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20081001
+packetLen(0x00da, 19) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080924
+packetLen(0x00da, 90) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080917
+packetLen(0x00da, -1) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080910
+packetLen(0x00da, 6) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080820
+packetLen(0x00da, -1) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080813
+packetLen(0x00da, 26) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080806
+packetLen(0x00da, 6) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080730
+packetLen(0x00da, 10) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080722
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080715
+packetLen(0x00da, -1) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080708
+packetLen(0x00da, 19) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080701
+packetLen(0x00da, -1) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080624
+packetLen(0x00da, 53) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080610
+packetLen(0x00da, -1) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080603
+packetLen(0x00da, 24) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080513
+packetLen(0x00da, -1) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080507
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080422
+packetLen(0x00da, -1) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080415
+packetLen(0x00da, 6) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080408
+packetLen(0x00da, 31) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080401
+packetLen(0x00da, 13) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080325
+packetLen(0x00da, -1) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080318
+packetLen(0x00da, 30) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080311
+packetLen(0x00da, 8) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080226
+packetLen(0x00da, 14) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080219
+packetLen(0x00da, 54) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080124
+packetLen(0x00da, 18) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080102
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+#endif
+
+// Packet: 0x00db
+#if PACKETVER >= 20081217
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20081203
+packetLen(0x00db, 6) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20081112
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20081105
+packetLen(0x00db, 28) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20081029
+packetLen(0x00db, 14) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20081022
+packetLen(0x00db, 6) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20081015
+packetLen(0x00db, 2) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20081008
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20081001
+packetLen(0x00db, 4) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080917
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080910
+packetLen(0x00db, 28) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080827
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080820
+packetLen(0x00db, 6) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080730
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080722
+packetLen(0x00db, 23) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080715
+packetLen(0x00db, 7) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080708
+packetLen(0x00db, 10) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080701
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080624
+packetLen(0x00db, 7) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080603
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080528
+packetLen(0x00db, 3) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080520
+packetLen(0x00db, 4) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080513
+packetLen(0x00db, 30) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080429
+packetLen(0x00db, 2) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080422
+packetLen(0x00db, 67) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080415
+packetLen(0x00db, 33) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080408
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080401
+packetLen(0x00db, 18) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080325
+packetLen(0x00db, 2) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080311
+packetLen(0x00db, 6) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080304
+packetLen(0x00db, 31) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080226
+packetLen(0x00db, 26) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080219
+packetLen(0x00db, 4) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080102
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+#endif
+
+// Packet: 0x00dc
+#if PACKETVER >= 20081112
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00dc, 5) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20081029
+packetLen(0x00dc, -1) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20081022
+packetLen(0x00dc, 5) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20081015
+packetLen(0x00dc, 7) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20081008
+packetLen(0x00dc, 33) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080917
+packetLen(0x00dc, -1) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080910
+packetLen(0x00dc, 15) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080903
+packetLen(0x00dc, -1) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080827
+packetLen(0x00dc, 7) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080820
+packetLen(0x00dc, 2) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080806
+packetLen(0x00dc, -1) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080730
+packetLen(0x00dc, 10) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080722
+packetLen(0x00dc, 5) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080715
+packetLen(0x00dc, 4) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080708
+packetLen(0x00dc, -1) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080701
+packetLen(0x00dc, 6) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080617
+packetLen(0x00dc, -1) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080610
+packetLen(0x00dc, 2) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080603
+packetLen(0x00dc, 11) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080528
+packetLen(0x00dc, 27) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080520
+packetLen(0x00dc, 30) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080513
+packetLen(0x00dc, 12) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080429
+packetLen(0x00dc, -1) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080422
+packetLen(0x00dc, 32) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080415
+packetLen(0x00dc, 6) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080408
+packetLen(0x00dc, -1) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080401
+packetLen(0x00dc, 30) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080325
+packetLen(0x00dc, -1) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080318
+packetLen(0x00dc, 29) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080311
+packetLen(0x00dc, 6) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x00dc, -1) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080226
+packetLen(0x00dc, 3) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080219
+packetLen(0x00dc, 29) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080124
+packetLen(0x00dc, 13) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+#endif
+
+// Packet: 0x00dd
+#if PACKETVER >= 20081217
+packetLen(0x00dd, 30) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20081203
+packetLen(0x00dd, -1) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20081126
+packetLen(0x00dd, 97) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20081119
+packetLen(0x00dd, 6) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20081112
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00dd, 26) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20081008
+packetLen(0x00dd, -1) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20081001
+packetLen(0x00dd, 282) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080924
+packetLen(0x00dd, -1) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080917
+packetLen(0x00dd, 3) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080910
+packetLen(0x00dd, 10) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080903
+packetLen(0x00dd, 4) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080827
+packetLen(0x00dd, -1) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080820
+packetLen(0x00dd, 2) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080813
+packetLen(0x00dd, 282) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080806
+packetLen(0x00dd, 10) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080722
+packetLen(0x00dd, -1) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080715
+packetLen(0x00dd, 67) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080708
+packetLen(0x00dd, 11) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080701
+packetLen(0x00dd, 6) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080610
+packetLen(0x00dd, -1) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080603
+packetLen(0x00dd, 20) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080528
+packetLen(0x00dd, 7) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080520
+packetLen(0x00dd, 28) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080429
+packetLen(0x00dd, -1) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080422
+packetLen(0x00dd, 28) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080415
+packetLen(0x00dd, -1) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080408
+packetLen(0x00dd, 15) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080325
+packetLen(0x00dd, -1) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080318
+packetLen(0x00dd, 22) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080311
+packetLen(0x00dd, 10) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080304
+packetLen(0x00dd, 6) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080226
+packetLen(0x00dd, -1) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080219
+packetLen(0x00dd, 3) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080124
+packetLen(0x00dd, 8) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080102
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+#endif
+
+// Packet: 0x00de
+#if PACKETVER >= 20081217
+packetLen(0x00de, 13) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20081203
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20081126
+packetLen(0x00de, 27) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20081119
+packetLen(0x00de, 44) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20081112
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20081105
+packetLen(0x00de, 16) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20081029
+packetLen(0x00de, 67) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20081022
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20081015
+packetLen(0x00de, 8) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20081008
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20081001
+packetLen(0x00de, 4) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080924
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080917
+packetLen(0x00de, 6) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080903
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080827
+packetLen(0x00de, 15) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080820
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080813
+packetLen(0x00de, 67) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080806
+packetLen(0x00de, 6) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080730
+packetLen(0x00de, 34) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080722
+packetLen(0x00de, 57) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080715
+packetLen(0x00de, 26) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080708
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080701
+packetLen(0x00de, 5) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080624
+packetLen(0x00de, 54) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080603
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080528
+packetLen(0x00de, 57) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080520
+packetLen(0x00de, 4) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080513
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080507
+packetLen(0x00de, 15) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080429
+packetLen(0x00de, 11) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080415
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080408
+packetLen(0x00de, 18) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080401
+packetLen(0x00de, 5) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080325
+packetLen(0x00de, 6) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080318
+packetLen(0x00de, 8) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080304
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080226
+packetLen(0x00de, 6) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080219
+packetLen(0x00de, 34) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080124
+packetLen(0x00de, 3) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080102
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+#endif
+
+// Packet: 0x00df
+#if PACKETVER >= 20081217
+packetLen(0x00df, 22) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20081203
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20081126
+packetLen(0x00df, 86) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20081119
+packetLen(0x00df, 53) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20081029
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20081022
+packetLen(0x00df, 4) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080903
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080827
+packetLen(0x00df, 6) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080813
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080806
+packetLen(0x00df, 6) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080730
+packetLen(0x00df, 3) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080722
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080715
+packetLen(0x00df, 10) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080708
+packetLen(0x00df, 29) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080701
+packetLen(0x00df, 34) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080624
+packetLen(0x00df, 11) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080617
+packetLen(0x00df, 30) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080610
+packetLen(0x00df, 10) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080603
+packetLen(0x00df, 4) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080528
+packetLen(0x00df, 90) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080520
+packetLen(0x00df, 23) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080513
+packetLen(0x00df, 6) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080507
+packetLen(0x00df, 3) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080429
+packetLen(0x00df, 8) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080422
+packetLen(0x00df, 12) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080415
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080408
+packetLen(0x00df, 282) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080401
+packetLen(0x00df, 3) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080325
+packetLen(0x00df, 5) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080318
+packetLen(0x00df, 23) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080304
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080226
+packetLen(0x00df, 9) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080219
+packetLen(0x00df, 7) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080124
+packetLen(0x00df, 27) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080102
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+#endif
+
+// Packet: 0x00e0
+#if PACKETVER >= 20081203
+packetLen(0x00e0, -1) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20081126
+packetLen(0x00e0, 6) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20081119
+packetLen(0x00e0, 5) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20081112
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081015
+packetLen(0x00e0, -1) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20081008
+packetLen(0x00e0, 9) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080924
+packetLen(0x00e0, -1) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080917
+packetLen(0x00e0, 58) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080910
+packetLen(0x00e0, 3) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080903
+packetLen(0x00e0, -1) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080827
+packetLen(0x00e0, 15) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080820
+packetLen(0x00e0, -1) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080813
+packetLen(0x00e0, 2) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080806
+packetLen(0x00e0, 4) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080715
+packetLen(0x00e0, -1) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080708
+packetLen(0x00e0, 16) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080701
+packetLen(0x00e0, 9) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080617
+packetLen(0x00e0, -1) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080610
+packetLen(0x00e0, 6) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080603
+packetLen(0x00e0, 2) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080520
+packetLen(0x00e0, -1) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080513
+packetLen(0x00e0, 10) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080429
+packetLen(0x00e0, -1) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080422
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080415
+packetLen(0x00e0, 2) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080408
+packetLen(0x00e0, 4) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080401
+packetLen(0x00e0, 21) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080325
+packetLen(0x00e0, 71) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080318
+packetLen(0x00e0, 7) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080311
+packetLen(0x00e0, 2) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080304
+packetLen(0x00e0, 43) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080226
+packetLen(0x00e0, 2) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080219
+packetLen(0x00e0, 31) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080124
+packetLen(0x00e0, 18) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+#endif
+
+// Packet: 0x00e1
+#if PACKETVER >= 20081203
+packetLen(0x00e1, -1) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20081126
+packetLen(0x00e1, 2) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20081119
+packetLen(0x00e1, -1) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20081112
+packetLen(0x00e1, 59) // ZC_ROLE_CHANGE
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00e1, 28) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20081022
+packetLen(0x00e1, -1) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20081015
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20081008
+packetLen(0x00e1, -1) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20081001
+packetLen(0x00e1, 10) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080924
+packetLen(0x00e1, -1) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080917
+packetLen(0x00e1, 6) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080910
+packetLen(0x00e1, -1) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080903
+packetLen(0x00e1, 23) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080827
+packetLen(0x00e1, 11) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080813
+packetLen(0x00e1, -1) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080806
+packetLen(0x00e1, 8) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080722
+packetLen(0x00e1, -1) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080715
+packetLen(0x00e1, 21) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080708
+packetLen(0x00e1, 10) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080610
+packetLen(0x00e1, -1) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080528
+packetLen(0x00e1, 2) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080520
+packetLen(0x00e1, 20) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080513
+packetLen(0x00e1, -1) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080507
+packetLen(0x00e1, 4) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080429
+packetLen(0x00e1, 6) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080422
+packetLen(0x00e1, 43) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080415
+packetLen(0x00e1, -1) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080408
+packetLen(0x00e1, 2) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080401
+packetLen(0x00e1, 60) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080325
+packetLen(0x00e1, 22) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080318
+packetLen(0x00e1, 21) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080311
+packetLen(0x00e1, 2) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080304
+packetLen(0x00e1, 60) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080226
+packetLen(0x00e1, -1) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080219
+packetLen(0x00e1, 81) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080124
+packetLen(0x00e1, 12) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+#endif
+
+// Packet: 0x00e2
+#if PACKETVER >= 20081217
+packetLen(0x00e2, 8) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20081126
+packetLen(0x00e2, -1) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20081119
+packetLen(0x00e2, 6) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20081112
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00e2, 6) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20081029
+packetLen(0x00e2, -1) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20081022
+packetLen(0x00e2, 2) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20081008
+packetLen(0x00e2, -1) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20081001
+packetLen(0x00e2, 3) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080910
+packetLen(0x00e2, -1) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080903
+packetLen(0x00e2, 11) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080820
+packetLen(0x00e2, 6) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080813
+packetLen(0x00e2, -1) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080806
+packetLen(0x00e2, 10) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080730
+packetLen(0x00e2, 27) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080722
+packetLen(0x00e2, 6) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080715
+packetLen(0x00e2, -1) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080708
+packetLen(0x00e2, 6) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080624
+packetLen(0x00e2, -1) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080617
+packetLen(0x00e2, 6) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080610
+packetLen(0x00e2, 282) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080603
+packetLen(0x00e2, -1) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080528
+packetLen(0x00e2, 6) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080520
+packetLen(0x00e2, -1) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080513
+packetLen(0x00e2, 2) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080507
+packetLen(0x00e2, -1) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080429
+packetLen(0x00e2, 6) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080422
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080415
+packetLen(0x00e2, 282) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080408
+packetLen(0x00e2, 11) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080401
+packetLen(0x00e2, 5) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080325
+packetLen(0x00e2, -1) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080318
+packetLen(0x00e2, 79) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080311
+packetLen(0x00e2, -1) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080304
+packetLen(0x00e2, 31) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080226
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080219
+packetLen(0x00e2, 30) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080124
+packetLen(0x00e2, 10) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080102
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+#endif
+
+// Packet: 0x00e3
+#if PACKETVER >= 20081217
+packetLen(0x00e3, -1) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20081203
+packetLen(0x00e3, 11) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20081126
+packetLen(0x00e3, 8) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20081112
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00e3, 15) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20081029
+packetLen(0x00e3, 6) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20081015
+packetLen(0x00e3, -1) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20081008
+packetLen(0x00e3, 6) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20081001
+packetLen(0x00e3, 4) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080813
+packetLen(0x00e3, -1) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080806
+packetLen(0x00e3, 10) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080730
+packetLen(0x00e3, 6) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080722
+packetLen(0x00e3, -1) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080715
+packetLen(0x00e3, 22) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080708
+packetLen(0x00e3, -1) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080701
+packetLen(0x00e3, 26) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080624
+packetLen(0x00e3, 6) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080617
+packetLen(0x00e3, 58) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080610
+packetLen(0x00e3, -1) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080603
+packetLen(0x00e3, 30) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080528
+packetLen(0x00e3, 35) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080429
+packetLen(0x00e3, -1) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080422
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080415
+packetLen(0x00e3, 8) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080408
+packetLen(0x00e3, -1) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080401
+packetLen(0x00e3, 58) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080325
+packetLen(0x00e3, 10) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080318
+packetLen(0x00e3, 7) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080311
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080304
+packetLen(0x00e3, -1) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080219
+packetLen(0x00e3, 12) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080124
+packetLen(0x00e3, 14) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080102
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+#endif
+
+// Packet: 0x00e4
+#if PACKETVER >= 20081217
+packetLen(0x00e4, 7) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20081203
+packetLen(0x00e4, 16) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20081126
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20081112
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00e4, 12) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20081029
+packetLen(0x00e4, 26) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20081022
+packetLen(0x00e4, 10) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20081015
+packetLen(0x00e4, 27) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20081008
+packetLen(0x00e4, -1) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20081001
+packetLen(0x00e4, 11) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080827
+packetLen(0x00e4, -1) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080820
+packetLen(0x00e4, 31) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080813
+packetLen(0x00e4, -1) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080806
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080730
+packetLen(0x00e4, 4) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080715
+packetLen(0x00e4, -1) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080708
+packetLen(0x00e4, 15) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080701
+packetLen(0x00e4, -1) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080624
+packetLen(0x00e4, 36) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080617
+packetLen(0x00e4, 86) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080520
+packetLen(0x00e4, -1) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080513
+packetLen(0x00e4, 33) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080507
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080429
+packetLen(0x00e4, 58) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080422
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080415
+packetLen(0x00e4, 13) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080408
+packetLen(0x00e4, 10) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080401
+packetLen(0x00e4, 14) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080325
+packetLen(0x00e4, -1) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080318
+packetLen(0x00e4, 10) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00e4, 54) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00e4, 14) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080124
+packetLen(0x00e4, 7) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00e5
+#if PACKETVER >= 20081217
+packetLen(0x00e5, 2) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20081203
+packetLen(0x00e5, 8) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20081112
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x00e5, 3) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20081022
+packetLen(0x00e5, -1) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20081015
+packetLen(0x00e5, 6) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20081008
+packetLen(0x00e5, 3) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20081001
+packetLen(0x00e5, -1) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080924
+packetLen(0x00e5, 23) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080917
+packetLen(0x00e5, -1) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080910
+packetLen(0x00e5, 35) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080820
+packetLen(0x00e5, -1) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080813
+packetLen(0x00e5, 6) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080806
+packetLen(0x00e5, -1) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080730
+packetLen(0x00e5, 8) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080701
+packetLen(0x00e5, -1) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080624
+packetLen(0x00e5, 3) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080617
+packetLen(0x00e5, 28) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080610
+packetLen(0x00e5, -1) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080603
+packetLen(0x00e5, 2) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080528
+packetLen(0x00e5, -1) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080520
+packetLen(0x00e5, 6) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080507
+packetLen(0x00e5, -1) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080429
+packetLen(0x00e5, 28) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080422
+packetLen(0x00e5, 5) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080415
+packetLen(0x00e5, 3) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080408
+packetLen(0x00e5, 2) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080401
+packetLen(0x00e5, 10) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080325
+packetLen(0x00e5, 6) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080318
+packetLen(0x00e5, 5) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00e5, 10) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00e5, 6) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00e5, 11) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080124
+packetLen(0x00e5, 29) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00e6
+#if PACKETVER >= 20081203
+packetLen(0x00e6, -1) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20081126
+packetLen(0x00e6, 68) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20081119
+packetLen(0x00e6, -1) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20081112
+packetLen(0x00e6, 6) // CZ_ACK_EXCHANGE_ITEM
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00e6, 39) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20081022
+packetLen(0x00e6, -1) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20081015
+packetLen(0x00e6, 4) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20081008
+packetLen(0x00e6, 10) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080910
+packetLen(0x00e6, -1) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080903
+packetLen(0x00e6, 8) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080722
+packetLen(0x00e6, -1) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080715
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080708
+packetLen(0x00e6, 33) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080701
+packetLen(0x00e6, 6) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080624
+packetLen(0x00e6, 14) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080617
+packetLen(0x00e6, 9) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080610
+packetLen(0x00e6, 6) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080603
+packetLen(0x00e6, 2) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080528
+packetLen(0x00e6, -1) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080520
+packetLen(0x00e6, 43) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080513
+packetLen(0x00e6, 26) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080507
+packetLen(0x00e6, 79) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080429
+packetLen(0x00e6, 11) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080422
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080408
+packetLen(0x00e6, -1) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080401
+packetLen(0x00e6, 67) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080325
+packetLen(0x00e6, -1) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080318
+packetLen(0x00e6, 15) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00e6, 16) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00e6, -1) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x00e6, 53) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00e6, 10) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080124
+packetLen(0x00e6, 114) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00e7
+#if PACKETVER >= 20081217
+packetLen(0x00e7, 42) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20081203
+packetLen(0x00e7, 30) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20081126
+packetLen(0x00e7, 7) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20081119
+packetLen(0x00e7, -1) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20081112
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20081022
+packetLen(0x00e7, -1) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20081015
+packetLen(0x00e7, 10) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20081008
+packetLen(0x00e7, 2) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20081001
+packetLen(0x00e7, -1) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080924
+packetLen(0x00e7, 33) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080917
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080827
+packetLen(0x00e7, -1) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080820
+packetLen(0x00e7, 44) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080813
+packetLen(0x00e7, 19) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080806
+packetLen(0x00e7, 59) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080730
+packetLen(0x00e7, 24) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080722
+packetLen(0x00e7, 2) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080715
+packetLen(0x00e7, -1) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080708
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080701
+packetLen(0x00e7, -1) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080624
+packetLen(0x00e7, 30) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080617
+packetLen(0x00e7, -1) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080610
+packetLen(0x00e7, 14) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080603
+packetLen(0x00e7, -1) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080528
+packetLen(0x00e7, 182) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080520
+packetLen(0x00e7, 14) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080513
+packetLen(0x00e7, -1) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080507
+packetLen(0x00e7, 90) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080429
+packetLen(0x00e7, 182) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080422
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080415
+packetLen(0x00e7, -1) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080408
+packetLen(0x00e7, 6) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080401
+packetLen(0x00e7, 4) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080325
+packetLen(0x00e7, 8) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080318
+packetLen(0x00e7, 6) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x00e7, 68) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080124
+packetLen(0x00e7, -1) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00e8
+#if PACKETVER >= 20081217
+packetLen(0x00e8, -1) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20081203
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20081126
+packetLen(0x00e8, 30) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20081112
+packetLen(0x00e8, 10) // CZ_ADD_EXCHANGE_ITEM
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00e8, -1) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20081029
+packetLen(0x00e8, 39) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20081022
+packetLen(0x00e8, 27) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20081008
+packetLen(0x00e8, -1) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20081001
+packetLen(0x00e8, 2) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080924
+packetLen(0x00e8, 282) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080917
+packetLen(0x00e8, 6) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080903
+packetLen(0x00e8, -1) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080827
+packetLen(0x00e8, 10) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080820
+packetLen(0x00e8, -1) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080813
+packetLen(0x00e8, 282) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080806
+packetLen(0x00e8, 10) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080701
+packetLen(0x00e8, -1) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080624
+packetLen(0x00e8, 114) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080610
+packetLen(0x00e8, -1) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080603
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080528
+packetLen(0x00e8, 5) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080520
+packetLen(0x00e8, 66) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080513
+packetLen(0x00e8, 10) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080507
+packetLen(0x00e8, 86) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080429
+packetLen(0x00e8, -1) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080422
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080415
+packetLen(0x00e8, 6) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080408
+packetLen(0x00e8, -1) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080401
+packetLen(0x00e8, 2) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080325
+packetLen(0x00e8, 30) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080318
+packetLen(0x00e8, 4) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00e8, 6) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00e8, -1) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x00e8, 6) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00e8, 2) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080124
+packetLen(0x00e8, 26) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00e9
+#if PACKETVER >= 20081217
+packetLen(0x00e9, -1) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20081203
+packetLen(0x00e9, 11) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20081126
+packetLen(0x00e9, -1) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20081119
+packetLen(0x00e9, 6) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20081112
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00e9, 10) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20081022
+packetLen(0x00e9, -1) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20081015
+packetLen(0x00e9, 15) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20081008
+packetLen(0x00e9, 6) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20081001
+packetLen(0x00e9, 102) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080924
+packetLen(0x00e9, 6) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080917
+packetLen(0x00e9, -1) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080910
+packetLen(0x00e9, 5) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080903
+packetLen(0x00e9, -1) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080827
+packetLen(0x00e9, 54) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080813
+packetLen(0x00e9, -1) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080806
+packetLen(0x00e9, 60) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080730
+packetLen(0x00e9, 6) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080722
+packetLen(0x00e9, 4) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080708
+packetLen(0x00e9, 10) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080617
+packetLen(0x00e9, -1) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080610
+packetLen(0x00e9, 8) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080603
+packetLen(0x00e9, 4) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080520
+packetLen(0x00e9, -1) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080513
+packetLen(0x00e9, 2) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080422
+packetLen(0x00e9, -1) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080415
+packetLen(0x00e9, 7) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080408
+packetLen(0x00e9, 4) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080401
+packetLen(0x00e9, 8) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080325
+packetLen(0x00e9, 2) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080318
+packetLen(0x00e9, 6) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00e9, -1) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x00e9, 30) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00e9, 2) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080124
+packetLen(0x00e9, 21) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00ea
+#if PACKETVER >= 20081217
+packetLen(0x00ea, -1) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20081203
+packetLen(0x00ea, 14) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20081126
+packetLen(0x00ea, 3) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20081119
+packetLen(0x00ea, 42) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20081112
+packetLen(0x00ea, 6) // ZC_ACK_ADD_EXCHANGE_ITEM
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00ea, 11) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20081029
+packetLen(0x00ea, -1) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20081022
+packetLen(0x00ea, 6) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20081015
+packetLen(0x00ea, -1) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20081008
+packetLen(0x00ea, 28) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20081001
+packetLen(0x00ea, -1) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080924
+packetLen(0x00ea, 4) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080917
+packetLen(0x00ea, 10) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080827
+packetLen(0x00ea, -1) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080820
+packetLen(0x00ea, 2) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080806
+packetLen(0x00ea, -1) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080730
+packetLen(0x00ea, 6) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080722
+packetLen(0x00ea, -1) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080715
+packetLen(0x00ea, 8) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080708
+packetLen(0x00ea, 81) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080701
+packetLen(0x00ea, -1) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080624
+packetLen(0x00ea, 39) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080617
+packetLen(0x00ea, 90) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080603
+packetLen(0x00ea, -1) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080528
+packetLen(0x00ea, 30) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080520
+packetLen(0x00ea, 3) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080513
+packetLen(0x00ea, -1) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080507
+packetLen(0x00ea, 26) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080429
+packetLen(0x00ea, 6) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080422
+packetLen(0x00ea, -1) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080415
+packetLen(0x00ea, 4) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080408
+packetLen(0x00ea, -1) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080401
+packetLen(0x00ea, 15) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080325
+packetLen(0x00ea, 3) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080318
+packetLen(0x00ea, 2) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00ea, 10) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00ea, 6) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00ea, -1) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080124
+packetLen(0x00ea, 14) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00eb
+#if PACKETVER >= 20081217
+packetLen(0x00eb, 6) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20081112
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00eb, -1) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20081029
+packetLen(0x00eb, 3) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20081015
+packetLen(0x00eb, 10) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20081008
+packetLen(0x00eb, 19) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20081001
+packetLen(0x00eb, 22) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080917
+packetLen(0x00eb, 6) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080910
+packetLen(0x00eb, -1) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080903
+packetLen(0x00eb, 4) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080813
+packetLen(0x00eb, -1) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080806
+packetLen(0x00eb, 6) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080730
+packetLen(0x00eb, 22) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080624
+packetLen(0x00eb, -1) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080617
+packetLen(0x00eb, 5) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080610
+packetLen(0x00eb, -1) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080603
+packetLen(0x00eb, 54) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080528
+packetLen(0x00eb, -1) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080520
+packetLen(0x00eb, 11) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080513
+packetLen(0x00eb, 6) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080507
+packetLen(0x00eb, 36) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080429
+packetLen(0x00eb, -1) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080422
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080415
+packetLen(0x00eb, 5) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080408
+packetLen(0x00eb, 15) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080325
+packetLen(0x00eb, -1) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080318
+packetLen(0x00eb, 86) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00eb, 12) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00eb, 6) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x00eb, 19) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00eb, 17) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080124
+packetLen(0x00eb, 6) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00ec
+#if PACKETVER >= 20081217
+packetLen(0x00ec, 18) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20081203
+packetLen(0x00ec, -1) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20081126
+packetLen(0x00ec, 4) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20081119
+packetLen(0x00ec, 30) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20081112
+packetLen(0x00ec, 4) // ZC_CONCLUDE_EXCHANGE_ITEM
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00ec, 86) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20081022
+packetLen(0x00ec, -1) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20081015
+packetLen(0x00ec, 14) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20081008
+packetLen(0x00ec, 20) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20081001
+packetLen(0x00ec, 30) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080924
+packetLen(0x00ec, -1) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080917
+packetLen(0x00ec, 2) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080910
+packetLen(0x00ec, -1) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080903
+packetLen(0x00ec, 60) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080820
+packetLen(0x00ec, -1) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080813
+packetLen(0x00ec, 28) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080730
+packetLen(0x00ec, -1) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080722
+packetLen(0x00ec, 30) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080715
+packetLen(0x00ec, 10) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080708
+packetLen(0x00ec, -1) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080701
+packetLen(0x00ec, 55) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080624
+packetLen(0x00ec, 4) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080610
+packetLen(0x00ec, 6) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080603
+packetLen(0x00ec, -1) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080528
+packetLen(0x00ec, 14) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080520
+packetLen(0x00ec, 81) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080513
+packetLen(0x00ec, 11) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080507
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080429
+packetLen(0x00ec, 34) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080422
+packetLen(0x00ec, 10) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080415
+packetLen(0x00ec, 14) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080408
+packetLen(0x00ec, -1) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080401
+packetLen(0x00ec, 11) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080325
+packetLen(0x00ec, 9) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080318
+packetLen(0x00ec, 30) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00ec, 20) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00ec, 2) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x00ec, 11) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00ec, -1) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080124
+packetLen(0x00ec, 9) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00ed
+#if PACKETVER >= 20081217
+packetLen(0x00ed, 4) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20081203
+packetLen(0x00ed, 28) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20081112
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00ed, -1) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20081029
+packetLen(0x00ed, 30) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20081022
+packetLen(0x00ed, -1) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20081015
+packetLen(0x00ed, 11) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080924
+packetLen(0x00ed, -1) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080917
+packetLen(0x00ed, 34) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080827
+packetLen(0x00ed, -1) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080820
+packetLen(0x00ed, 53) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080813
+packetLen(0x00ed, -1) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080806
+packetLen(0x00ed, 65) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080730
+packetLen(0x00ed, 8) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080722
+packetLen(0x00ed, -1) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080715
+packetLen(0x00ed, 10) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080701
+packetLen(0x00ed, -1) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080624
+packetLen(0x00ed, 20) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080610
+packetLen(0x00ed, -1) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080603
+packetLen(0x00ed, 7) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080528
+packetLen(0x00ed, -1) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080520
+packetLen(0x00ed, 3) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080513
+packetLen(0x00ed, 8) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080507
+packetLen(0x00ed, 6) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080429
+packetLen(0x00ed, -1) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080422
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080415
+packetLen(0x00ed, 3) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080408
+packetLen(0x00ed, 5) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080401
+packetLen(0x00ed, 3) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080325
+packetLen(0x00ed, 7) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080318
+packetLen(0x00ed, 4) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00ed, -1) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00ed, 86) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x00ed, 30) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080124
+packetLen(0x00ed, -1) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00ee
+#if PACKETVER >= 20081112
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x00ee, -1) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20081015
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20081001
+packetLen(0x00ee, -1) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080924
+packetLen(0x00ee, 10) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080910
+packetLen(0x00ee, -1) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080903
+packetLen(0x00ee, 8) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080813
+packetLen(0x00ee, -1) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080806
+packetLen(0x00ee, 12) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080730
+packetLen(0x00ee, -1) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080722
+packetLen(0x00ee, 8) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080715
+packetLen(0x00ee, 31) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080708
+packetLen(0x00ee, 6) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080701
+packetLen(0x00ee, 14) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080624
+packetLen(0x00ee, -1) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080617
+packetLen(0x00ee, 81) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080610
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080603
+packetLen(0x00ee, 6) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080528
+packetLen(0x00ee, 18) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080520
+packetLen(0x00ee, 3) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080429
+packetLen(0x00ee, -1) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080422
+packetLen(0x00ee, 3) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080415
+packetLen(0x00ee, 30) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080408
+packetLen(0x00ee, 8) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080401
+packetLen(0x00ee, 26) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080325
+packetLen(0x00ee, -1) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080318
+packetLen(0x00ee, 5) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00ee, 11) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00ee, 10) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x00ee, 90) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00ee, -1) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080124
+packetLen(0x00ee, 4) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00ef
+#if PACKETVER >= 20081217
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20081119
+packetLen(0x00ef, -1) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20081112
+packetLen(0x00ef, 4) // CZ_EXEC_EXCHANGE_ITEM
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00ef, 14) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20081029
+packetLen(0x00ef, -1) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20081022
+packetLen(0x00ef, 11) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20081015
+packetLen(0x00ef, 3) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20081008
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20081001
+packetLen(0x00ef, 6) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080924
+packetLen(0x00ef, 8) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080910
+packetLen(0x00ef, -1) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080903
+packetLen(0x00ef, 10) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080827
+packetLen(0x00ef, 8) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080820
+packetLen(0x00ef, -1) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080813
+packetLen(0x00ef, 53) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080806
+packetLen(0x00ef, 28) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080730
+packetLen(0x00ef, 6) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080722
+packetLen(0x00ef, -1) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080715
+packetLen(0x00ef, 35) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080708
+packetLen(0x00ef, 30) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080701
+packetLen(0x00ef, -1) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080624
+packetLen(0x00ef, 10) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080617
+packetLen(0x00ef, 30) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080610
+packetLen(0x00ef, 9) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080603
+packetLen(0x00ef, 11) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080528
+packetLen(0x00ef, 30) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080520
+packetLen(0x00ef, 26) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080513
+packetLen(0x00ef, 28) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080507
+packetLen(0x00ef, 4) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080429
+packetLen(0x00ef, 7) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080422
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080408
+packetLen(0x00ef, -1) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080401
+packetLen(0x00ef, 57) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080325
+packetLen(0x00ef, 10) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080318
+packetLen(0x00ef, 90) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00ef, -1) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00ef, 6) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x00ef, -1) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080124
+packetLen(0x00ef, 7) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00f0
+#if PACKETVER >= 20081217
+packetLen(0x00f0, 26) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20081203
+packetLen(0x00f0, 5) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20081126
+packetLen(0x00f0, 2) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20081112
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00f0, 8) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20081022
+packetLen(0x00f0, -1) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20081015
+packetLen(0x00f0, 27) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20081008
+packetLen(0x00f0, 7) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20081001
+packetLen(0x00f0, 2) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080924
+packetLen(0x00f0, -1) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080917
+packetLen(0x00f0, 66) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080903
+packetLen(0x00f0, -1) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080827
+packetLen(0x00f0, 11) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080820
+packetLen(0x00f0, 2) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080806
+packetLen(0x00f0, -1) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080730
+packetLen(0x00f0, 6) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080722
+packetLen(0x00f0, 11) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080715
+packetLen(0x00f0, 6) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080708
+packetLen(0x00f0, 26) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080701
+packetLen(0x00f0, 11) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080617
+packetLen(0x00f0, -1) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080610
+packetLen(0x00f0, 60) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080603
+packetLen(0x00f0, 6) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080528
+packetLen(0x00f0, -1) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080520
+packetLen(0x00f0, 14) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080513
+packetLen(0x00f0, 43) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080429
+packetLen(0x00f0, -1) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080422
+packetLen(0x00f0, 30) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080415
+packetLen(0x00f0, 2) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080408
+packetLen(0x00f0, -1) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080401
+packetLen(0x00f0, 90) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080325
+packetLen(0x00f0, 24) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080318
+packetLen(0x00f0, 6) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00f0, 7) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00f0, 27) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080124
+packetLen(0x00f0, 6) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+#if PACKETVER >= 20081217
+packetLen(0x00f2, -1) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20081203
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20081126
+packetLen(0x00f2, -1) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20081119
+packetLen(0x00f2, 10) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20081112
+packetLen(0x00f2, 27) // ZC_NOTIFY_STOREITEM_COUNTINFO
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x00f2, -1) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20081022
+packetLen(0x00f2, 7) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20081015
+packetLen(0x00f2, 3) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080917
+packetLen(0x00f2, -1) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080910
+packetLen(0x00f2, 4) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080903
+packetLen(0x00f2, 8) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080827
+packetLen(0x00f2, 10) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080806
+packetLen(0x00f2, -1) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080730
+packetLen(0x00f2, 29) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080708
+packetLen(0x00f2, -1) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080701
+packetLen(0x00f2, 4) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080624
+packetLen(0x00f2, -1) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080617
+packetLen(0x00f2, 10) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080610
+packetLen(0x00f2, 39) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080603
+packetLen(0x00f2, -1) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080528
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080520
+packetLen(0x00f2, -1) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080513
+packetLen(0x00f2, 39) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080507
+packetLen(0x00f2, 54) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080429
+packetLen(0x00f2, -1) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080422
+packetLen(0x00f2, 31) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080415
+packetLen(0x00f2, 10) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080408
+packetLen(0x00f2, -1) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080401
+packetLen(0x00f2, 86) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080325
+packetLen(0x00f2, 60) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080318
+packetLen(0x00f2, -1) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080311
+packetLen(0x00f2, 26) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080304
+packetLen(0x00f2, -1) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080226
+packetLen(0x00f2, 14) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080219
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080124
+packetLen(0x00f2, 13) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080102
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#endif
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+#if PACKETVER >= 20081217
+packetLen(0x00f4, 14) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20081203
+packetLen(0x00f4, -1) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20081126
+packetLen(0x00f4, 3) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20081119
+packetLen(0x00f4, 65) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20081112
+packetLen(0x00f4, 30) // ZC_ADD_ITEM_TO_STORE
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00f4, 2) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20081029
+packetLen(0x00f4, -1) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20081022
+packetLen(0x00f4, 2) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20081001
+packetLen(0x00f4, -1) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080924
+packetLen(0x00f4, 4) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080917
+packetLen(0x00f4, -1) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080910
+packetLen(0x00f4, 8) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080903
+packetLen(0x00f4, 15) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080827
+packetLen(0x00f4, 2) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080820
+packetLen(0x00f4, -1) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080813
+packetLen(0x00f4, 10) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080730
+packetLen(0x00f4, -1) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080722
+packetLen(0x00f4, 6) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080715
+packetLen(0x00f4, -1) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080708
+packetLen(0x00f4, 8) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080624
+packetLen(0x00f4, -1) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080617
+packetLen(0x00f4, 11) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080528
+packetLen(0x00f4, -1) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080513
+packetLen(0x00f4, 3) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080507
+packetLen(0x00f4, 8) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080429
+packetLen(0x00f4, 2) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080422
+packetLen(0x00f4, 3) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080415
+packetLen(0x00f4, -1) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080408
+packetLen(0x00f4, 35) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080401
+packetLen(0x00f4, 282) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080325
+packetLen(0x00f4, 6) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080318
+packetLen(0x00f4, 8) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080311
+packetLen(0x00f4, 2) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080304
+packetLen(0x00f4, 8) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080226
+packetLen(0x00f4, 6) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080219
+packetLen(0x00f4, -1) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080124
+packetLen(0x00f4, 10) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080102
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+#endif
+
+// Packet: 0x00f5
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+#if PACKETVER >= 20081217
+packetLen(0x00f6, 26) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20081203
+packetLen(0x00f6, -1) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20081126
+packetLen(0x00f6, 7) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20081119
+packetLen(0x00f6, 5) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20081112
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20081105
+packetLen(0x00f6, -1) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20081029
+packetLen(0x00f6, 57) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080924
+packetLen(0x00f6, -1) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080917
+packetLen(0x00f6, 2) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080903
+packetLen(0x00f6, -1) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080827
+packetLen(0x00f6, 6) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080820
+packetLen(0x00f6, -1) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080813
+packetLen(0x00f6, 2) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080806
+packetLen(0x00f6, -1) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080730
+packetLen(0x00f6, 11) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080722
+packetLen(0x00f6, 2) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080708
+packetLen(0x00f6, -1) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080701
+packetLen(0x00f6, 11) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080624
+packetLen(0x00f6, 6) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080617
+packetLen(0x00f6, 26) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080610
+packetLen(0x00f6, 6) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080603
+packetLen(0x00f6, -1) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080528
+packetLen(0x00f6, 10) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080520
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080513
+packetLen(0x00f6, 6) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080422
+packetLen(0x00f6, -1) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080415
+packetLen(0x00f6, 4) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080408
+packetLen(0x00f6, 65) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080401
+packetLen(0x00f6, 7) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080325
+packetLen(0x00f6, 6) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080318
+packetLen(0x00f6, 2) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080311
+packetLen(0x00f6, 7) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080304
+packetLen(0x00f6, 65) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080226
+packetLen(0x00f6, -1) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080219
+packetLen(0x00f6, 23) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080124
+packetLen(0x00f6, 39) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080102
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+#endif
+
+// Packet: 0x00f7
+packetLen(0x00f7, 17) // CZ_REQUEST_TIME
+
+// Packet: 0x00f8
+#if PACKETVER >= 20081203
+packetLen(0x00f8, -1) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20081119
+packetLen(0x00f8, 3) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20081112
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x00f8, -1) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20081015
+packetLen(0x00f8, 5) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080917
+packetLen(0x00f8, -1) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080910
+packetLen(0x00f8, 6) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080903
+packetLen(0x00f8, 3) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080827
+packetLen(0x00f8, -1) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080820
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080813
+packetLen(0x00f8, -1) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080806
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080730
+packetLen(0x00f8, 30) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080722
+packetLen(0x00f8, 10) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080701
+packetLen(0x00f8, -1) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080624
+packetLen(0x00f8, 26) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080617
+packetLen(0x00f8, 17) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080610
+packetLen(0x00f8, 30) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080603
+packetLen(0x00f8, 10) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080528
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080513
+packetLen(0x00f8, -1) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080507
+packetLen(0x00f8, 6) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080422
+packetLen(0x00f8, -1) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080415
+packetLen(0x00f8, 6) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080408
+packetLen(0x00f8, -1) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080401
+packetLen(0x00f8, 3) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080325
+packetLen(0x00f8, 6) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080318
+packetLen(0x00f8, -1) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080311
+packetLen(0x00f8, 12) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080304
+packetLen(0x00f8, -1) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080226
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080219
+packetLen(0x00f8, 12) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080124
+packetLen(0x00f8, 43) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080102
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+#endif
+
+// Packet: 0x00f9
+#if PACKETVER >= 20081126
+packetLen(0x00f9, -1) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20081119
+packetLen(0x00f9, 2) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20081112
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00f9, -1) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20081022
+packetLen(0x00f9, 3) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20081015
+packetLen(0x00f9, 22) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20081008
+packetLen(0x00f9, -1) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20081001
+packetLen(0x00f9, 7) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080917
+packetLen(0x00f9, -1) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080910
+packetLen(0x00f9, 4) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080827
+packetLen(0x00f9, -1) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080820
+packetLen(0x00f9, 3) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080813
+packetLen(0x00f9, -1) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080806
+packetLen(0x00f9, 5) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080730
+packetLen(0x00f9, 54) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080722
+packetLen(0x00f9, -1) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080715
+packetLen(0x00f9, 11) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080708
+packetLen(0x00f9, 30) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080701
+packetLen(0x00f9, 6) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080610
+packetLen(0x00f9, -1) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080603
+packetLen(0x00f9, 10) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080528
+packetLen(0x00f9, 6) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080520
+packetLen(0x00f9, 3) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080513
+packetLen(0x00f9, -1) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080507
+packetLen(0x00f9, 5) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080429
+packetLen(0x00f9, -1) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080422
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080415
+packetLen(0x00f9, 13) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080408
+packetLen(0x00f9, 6) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080401
+packetLen(0x00f9, 8) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080325
+packetLen(0x00f9, -1) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080318
+packetLen(0x00f9, 10) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080311
+packetLen(0x00f9, 114) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080304
+packetLen(0x00f9, 12) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080226
+packetLen(0x00f9, 4) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080219
+packetLen(0x00f9, 8) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080124
+packetLen(0x00f9, 10) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080102
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+#endif
+
+// Packet: 0x00fa
+#if PACKETVER >= 20081112
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00fa, -1) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20081029
+packetLen(0x00fa, 65) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20081015
+packetLen(0x00fa, -1) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20081008
+packetLen(0x00fa, 2) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080924
+packetLen(0x00fa, -1) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080917
+packetLen(0x00fa, 21) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080820
+packetLen(0x00fa, -1) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080813
+packetLen(0x00fa, 10) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080715
+packetLen(0x00fa, -1) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080708
+packetLen(0x00fa, 6) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080603
+packetLen(0x00fa, -1) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080528
+packetLen(0x00fa, 8) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080520
+packetLen(0x00fa, -1) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080513
+packetLen(0x00fa, 4) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080507
+packetLen(0x00fa, 30) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080429
+packetLen(0x00fa, 26) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080422
+packetLen(0x00fa, -1) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080415
+packetLen(0x00fa, 15) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080408
+packetLen(0x00fa, 30) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080401
+packetLen(0x00fa, 29) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080325
+packetLen(0x00fa, 30) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080318
+packetLen(0x00fa, 10) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080311
+packetLen(0x00fa, -1) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080304
+packetLen(0x00fa, 20) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080226
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080219
+packetLen(0x00fa, 10) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080124
+packetLen(0x00fa, 6) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080102
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+#endif
+
+// Packet: 0x00fb
+#if PACKETVER >= 20081217
+packetLen(0x00fb, 7) // ZC_GROUP_LIST
+#elif PACKETVER >= 20081203
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+#elif PACKETVER >= 20081126
+packetLen(0x00fb, 3) // ZC_GROUP_LIST
+#elif PACKETVER >= 20081029
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+#elif PACKETVER >= 20081022
+packetLen(0x00fb, 60) // ZC_GROUP_LIST
+#elif PACKETVER >= 20081015
+packetLen(0x00fb, 17) // ZC_GROUP_LIST
+#elif PACKETVER >= 20081008
+packetLen(0x00fb, 28) // ZC_GROUP_LIST
+#elif PACKETVER >= 20081001
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080924
+packetLen(0x00fb, 8) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080917
+packetLen(0x00fb, 60) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080910
+packetLen(0x00fb, 3) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080903
+packetLen(0x00fb, 67) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080820
+packetLen(0x00fb, 6) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080730
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080722
+packetLen(0x00fb, 4) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080715
+packetLen(0x00fb, 26) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080708
+packetLen(0x00fb, 6) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080701
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080624
+packetLen(0x00fb, 26) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080617
+packetLen(0x00fb, 3) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080610
+packetLen(0x00fb, 4) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080603
+packetLen(0x00fb, 17) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080528
+packetLen(0x00fb, 4) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080520
+packetLen(0x00fb, 29) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080513
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080507
+packetLen(0x00fb, 28) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080429
+packetLen(0x00fb, 6) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080408
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080401
+packetLen(0x00fb, 3) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080318
+packetLen(0x00fb, 26) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x00fb, 2) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x00fb, 4) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x00fb, 5) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x00fb, 10) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080124
+packetLen(0x00fb, 5) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+#endif
+
+// Packet: 0x00fc
+#if PACKETVER >= 20081126
+packetLen(0x00fc, -1) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20081119
+packetLen(0x00fc, 2) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20081112
+packetLen(0x00fc, 32) // CZ_REQ_JOIN_GROUP
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081008
+packetLen(0x00fc, -1) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20081001
+packetLen(0x00fc, 8) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080917
+packetLen(0x00fc, 2) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080910
+packetLen(0x00fc, 30) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080827
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080820
+packetLen(0x00fc, -1) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080813
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080806
+packetLen(0x00fc, 9) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080730
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080722
+packetLen(0x00fc, 3) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080708
+packetLen(0x00fc, -1) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080701
+packetLen(0x00fc, 22) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080610
+packetLen(0x00fc, -1) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080603
+packetLen(0x00fc, 18) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080528
+packetLen(0x00fc, -1) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080520
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080507
+packetLen(0x00fc, -1) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080429
+packetLen(0x00fc, 53) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080422
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080401
+packetLen(0x00fc, -1) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080325
+packetLen(0x00fc, 17) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080318
+packetLen(0x00fc, 27) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080311
+packetLen(0x00fc, 24) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080304
+packetLen(0x00fc, 30) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080226
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080219
+packetLen(0x00fc, 19) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080124
+packetLen(0x00fc, 2) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080102
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+#endif
+
+// Packet: 0x00fd
+#if PACKETVER >= 20081217
+packetLen(0x00fd, 10) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20081203
+packetLen(0x00fd, -1) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20081126
+packetLen(0x00fd, 31) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20081112
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00fd, -1) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20081029
+packetLen(0x00fd, 10) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20081022
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20081015
+packetLen(0x00fd, 3) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20081008
+packetLen(0x00fd, 10) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20081001
+packetLen(0x00fd, -1) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080924
+packetLen(0x00fd, 6) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080917
+packetLen(0x00fd, 2) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080910
+packetLen(0x00fd, 24) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080903
+packetLen(0x00fd, 86) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080617
+packetLen(0x00fd, -1) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080610
+packetLen(0x00fd, 6) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080603
+packetLen(0x00fd, 97) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080528
+packetLen(0x00fd, 3) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080520
+packetLen(0x00fd, -1) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080513
+packetLen(0x00fd, 2) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080507
+packetLen(0x00fd, 8) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080415
+packetLen(0x00fd, -1) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080408
+packetLen(0x00fd, 2) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080401
+packetLen(0x00fd, -1) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080325
+packetLen(0x00fd, 8) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080318
+packetLen(0x00fd, 18) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080311
+packetLen(0x00fd, 3) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080304
+packetLen(0x00fd, -1) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080226
+packetLen(0x00fd, 20) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080219
+packetLen(0x00fd, 11) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080124
+packetLen(0x00fd, 42) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080102
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+#endif
+
+// Packet: 0x00fe
+#if PACKETVER >= 20081217
+packetLen(0x00fe, 7) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20081203
+packetLen(0x00fe, 37) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20081126
+packetLen(0x00fe, 27) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20081119
+packetLen(0x00fe, 53) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20081112
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x00fe, 5) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20081029
+packetLen(0x00fe, -1) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20081022
+packetLen(0x00fe, 2) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20081008
+packetLen(0x00fe, -1) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20081001
+packetLen(0x00fe, 22) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080924
+packetLen(0x00fe, 10) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080827
+packetLen(0x00fe, -1) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080820
+packetLen(0x00fe, 26) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080806
+packetLen(0x00fe, -1) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080730
+packetLen(0x00fe, 282) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080722
+packetLen(0x00fe, 28) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080617
+packetLen(0x00fe, -1) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080610
+packetLen(0x00fe, 2) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080520
+packetLen(0x00fe, -1) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080513
+packetLen(0x00fe, 6) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080429
+packetLen(0x00fe, -1) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080422
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080415
+packetLen(0x00fe, -1) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080408
+packetLen(0x00fe, 6) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080401
+packetLen(0x00fe, 186) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080325
+packetLen(0x00fe, 4) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080318
+packetLen(0x00fe, 32) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080311
+packetLen(0x00fe, 4) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080304
+packetLen(0x00fe, 186) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080226
+packetLen(0x00fe, 7) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080219
+packetLen(0x00fe, 6) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080124
+packetLen(0x00fe, 4) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080102
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+#endif
+
+// Packet: 0x00ff
+#if PACKETVER >= 20081217
+packetLen(0x00ff, 5) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20081203
+packetLen(0x00ff, 11) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20081126
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20081119
+packetLen(0x00ff, -1) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20081112
+packetLen(0x00ff, 14) // CZ_JOIN_GROUP
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081008
+packetLen(0x00ff, -1) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20081001
+packetLen(0x00ff, 12) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080924
+packetLen(0x00ff, -1) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080917
+packetLen(0x00ff, 102) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080910
+packetLen(0x00ff, 4) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080806
+packetLen(0x00ff, -1) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080730
+packetLen(0x00ff, 15) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080722
+packetLen(0x00ff, 14) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080708
+packetLen(0x00ff, -1) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080701
+packetLen(0x00ff, 5) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080610
+packetLen(0x00ff, -1) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080603
+packetLen(0x00ff, 7) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080528
+packetLen(0x00ff, -1) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080520
+packetLen(0x00ff, 4) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080513
+packetLen(0x00ff, 22) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080507
+packetLen(0x00ff, 282) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080429
+packetLen(0x00ff, 6) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080422
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080408
+packetLen(0x00ff, -1) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080401
+packetLen(0x00ff, 79) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080325
+packetLen(0x00ff, 2) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080318
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080311
+packetLen(0x00ff, 3) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080304
+packetLen(0x00ff, 59) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080226
+packetLen(0x00ff, 282) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080219
+packetLen(0x00ff, 6) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080124
+packetLen(0x00ff, 32) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080102
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+#endif
+
+// Packet: 0x0100
+#if PACKETVER >= 20081112
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0100, 6) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20081029
+packetLen(0x0100, -1) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20081022
+packetLen(0x0100, 14) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20081015
+packetLen(0x0100, -1) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20081008
+packetLen(0x0100, 26) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20081001
+packetLen(0x0100, 67) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080924
+packetLen(0x0100, -1) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080917
+packetLen(0x0100, 26) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080820
+packetLen(0x0100, -1) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080813
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080806
+packetLen(0x0100, -1) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080730
+packetLen(0x0100, 6) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080715
+packetLen(0x0100, -1) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080708
+packetLen(0x0100, 22) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080617
+packetLen(0x0100, -1) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080610
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080603
+packetLen(0x0100, -1) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080528
+packetLen(0x0100, 186) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080520
+packetLen(0x0100, 14) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080513
+packetLen(0x0100, 6) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080507
+packetLen(0x0100, 27) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080429
+packetLen(0x0100, 8) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080422
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080415
+packetLen(0x0100, 17) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080408
+packetLen(0x0100, -1) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080401
+packetLen(0x0100, 30) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080325
+packetLen(0x0100, 28) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080318
+packetLen(0x0100, 54) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080311
+packetLen(0x0100, 3) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080304
+packetLen(0x0100, 54) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080124
+packetLen(0x0100, 3) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080102
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+#endif
+
+// Packet: 0x0101
+#if PACKETVER >= 20081217
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20081126
+packetLen(0x0101, -1) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20081119
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20081112
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0101, -1) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20081029
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20081022
+packetLen(0x0101, -1) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20081015
+packetLen(0x0101, 3) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20081001
+packetLen(0x0101, -1) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080924
+packetLen(0x0101, 10) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080827
+packetLen(0x0101, -1) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080820
+packetLen(0x0101, 2) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080813
+packetLen(0x0101, 35) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080806
+packetLen(0x0101, 66) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080708
+packetLen(0x0101, -1) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080701
+packetLen(0x0101, 5) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080624
+packetLen(0x0101, 24) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080617
+packetLen(0x0101, -1) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080610
+packetLen(0x0101, 2) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080520
+packetLen(0x0101, -1) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080513
+packetLen(0x0101, 2) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080507
+packetLen(0x0101, 58) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080429
+packetLen(0x0101, 11) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080422
+packetLen(0x0101, 5) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080415
+packetLen(0x0101, -1) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080408
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080401
+packetLen(0x0101, 11) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080325
+packetLen(0x0101, 26) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080318
+packetLen(0x0101, 5) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080311
+packetLen(0x0101, 97) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080304
+packetLen(0x0101, 23) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080226
+packetLen(0x0101, 10) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080219
+packetLen(0x0101, -1) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080124
+packetLen(0x0101, 4) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+#endif
+
+// Packet: 0x0102
+#if PACKETVER >= 20081217
+packetLen(0x0102, -1) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20081203
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20081119
+packetLen(0x0102, -1) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20081112
+packetLen(0x0102, 14) // CZ_CHANGE_GROUPEXPOPTION
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0102, 8) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20081029
+packetLen(0x0102, -1) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20081022
+packetLen(0x0102, 22) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20081015
+packetLen(0x0102, -1) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20081008
+packetLen(0x0102, 9) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20081001
+packetLen(0x0102, -1) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080924
+packetLen(0x0102, 7) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080917
+packetLen(0x0102, 182) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080910
+packetLen(0x0102, 7) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080820
+packetLen(0x0102, -1) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080813
+packetLen(0x0102, 10) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080722
+packetLen(0x0102, -1) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080715
+packetLen(0x0102, 4) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080610
+packetLen(0x0102, -1) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080603
+packetLen(0x0102, 26) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080528
+packetLen(0x0102, 17) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080520
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080513
+packetLen(0x0102, 11) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080422
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080415
+packetLen(0x0102, 81) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080408
+packetLen(0x0102, 2) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080401
+packetLen(0x0102, -1) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080325
+packetLen(0x0102, 54) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080318
+packetLen(0x0102, 4) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080311
+packetLen(0x0102, 2) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080304
+packetLen(0x0102, 14) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080226
+packetLen(0x0102, 26) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080219
+packetLen(0x0102, 68) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080124
+packetLen(0x0102, 15) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+#endif
+
+// Packet: 0x0103
+#if PACKETVER >= 20081217
+packetLen(0x0103, 6) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20081203
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20081126
+packetLen(0x0103, 5) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20081119
+packetLen(0x0103, 6) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20081112
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0103, -1) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20081029
+packetLen(0x0103, 10) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20081022
+packetLen(0x0103, 3) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20081015
+packetLen(0x0103, 8) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20081008
+packetLen(0x0103, 27) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080910
+packetLen(0x0103, -1) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080903
+packetLen(0x0103, 5) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080827
+packetLen(0x0103, 2) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080813
+packetLen(0x0103, -1) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080806
+packetLen(0x0103, 60) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080730
+packetLen(0x0103, 36) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080722
+packetLen(0x0103, 2) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080715
+packetLen(0x0103, 6) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080708
+packetLen(0x0103, 2) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080701
+packetLen(0x0103, -1) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080624
+packetLen(0x0103, 8) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080617
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080610
+packetLen(0x0103, -1) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080603
+packetLen(0x0103, 10) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080528
+packetLen(0x0103, 79) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080520
+packetLen(0x0103, 6) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080513
+packetLen(0x0103, 16) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080507
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080429
+packetLen(0x0103, 6) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080422
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080415
+packetLen(0x0103, -1) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080408
+packetLen(0x0103, 11) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080401
+packetLen(0x0103, 4) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080318
+packetLen(0x0103, -1) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080311
+packetLen(0x0103, 8) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080226
+packetLen(0x0103, -1) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080219
+packetLen(0x0103, 5) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080124
+packetLen(0x0103, 58) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080102
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+#endif
+
+// Packet: 0x0104
+#if PACKETVER >= 20081112
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0104, -1) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20081029
+packetLen(0x0104, 11) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20081015
+packetLen(0x0104, -1) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20081008
+packetLen(0x0104, 8) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080910
+packetLen(0x0104, -1) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080903
+packetLen(0x0104, 6) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080827
+packetLen(0x0104, 4) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080820
+packetLen(0x0104, 17) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080730
+packetLen(0x0104, -1) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080722
+packetLen(0x0104, 30) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080701
+packetLen(0x0104, -1) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080624
+packetLen(0x0104, 60) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080610
+packetLen(0x0104, -1) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080603
+packetLen(0x0104, 3) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080528
+packetLen(0x0104, 26) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080520
+packetLen(0x0104, 17) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080513
+packetLen(0x0104, 8) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080429
+packetLen(0x0104, -1) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080422
+packetLen(0x0104, 282) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080415
+packetLen(0x0104, 12) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080408
+packetLen(0x0104, 30) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080401
+packetLen(0x0104, 26) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080325
+packetLen(0x0104, 11) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080318
+packetLen(0x0104, 8) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080311
+packetLen(0x0104, 15) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080304
+packetLen(0x0104, 8) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080226
+packetLen(0x0104, 6) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080219
+packetLen(0x0104, 21) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080124
+packetLen(0x0104, 6) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080102
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+#endif
+
+// Packet: 0x0105
+#if PACKETVER >= 20081126
+packetLen(0x0105, -1) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20081119
+packetLen(0x0105, 30) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20081112
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081008
+packetLen(0x0105, -1) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20081001
+packetLen(0x0105, 58) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080910
+packetLen(0x0105, -1) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080903
+packetLen(0x0105, 7) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080827
+packetLen(0x0105, 30) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080820
+packetLen(0x0105, 3) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080813
+packetLen(0x0105, 2) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080722
+packetLen(0x0105, -1) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080715
+packetLen(0x0105, 97) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080617
+packetLen(0x0105, -1) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080610
+packetLen(0x0105, 26) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080528
+packetLen(0x0105, 6) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080520
+packetLen(0x0105, 3) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080513
+packetLen(0x0105, 5) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080507
+packetLen(0x0105, -1) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080429
+packetLen(0x0105, 4) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080401
+packetLen(0x0105, -1) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080325
+packetLen(0x0105, 23) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080318
+packetLen(0x0105, 4) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080311
+packetLen(0x0105, 3) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080304
+packetLen(0x0105, 10) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080226
+packetLen(0x0105, 26) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080219
+packetLen(0x0105, 6) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080124
+packetLen(0x0105, -1) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080102
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+#endif
+
+// Packet: 0x0106
+#if PACKETVER >= 20081217
+packetLen(0x0106, 2) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20081203
+packetLen(0x0106, 7) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20081126
+packetLen(0x0106, 8) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20081119
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20081112
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0106, -1) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20081029
+packetLen(0x0106, 3) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20081015
+packetLen(0x0106, -1) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20081008
+packetLen(0x0106, 60) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20081001
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080924
+packetLen(0x0106, -1) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080917
+packetLen(0x0106, 6) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080827
+packetLen(0x0106, -1) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080813
+packetLen(0x0106, 6) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080806
+packetLen(0x0106, -1) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080730
+packetLen(0x0106, 17) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080722
+packetLen(0x0106, 29) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080708
+packetLen(0x0106, -1) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080701
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080617
+packetLen(0x0106, -1) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080610
+packetLen(0x0106, 9) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080528
+packetLen(0x0106, -1) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080513
+packetLen(0x0106, 2) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080507
+packetLen(0x0106, -1) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080429
+packetLen(0x0106, 27) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080422
+packetLen(0x0106, 29) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080415
+packetLen(0x0106, 282) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080408
+packetLen(0x0106, -1) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080401
+packetLen(0x0106, 5) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080325
+packetLen(0x0106, -1) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080318
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080311
+packetLen(0x0106, 26) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080226
+packetLen(0x0106, -1) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080219
+packetLen(0x0106, 21) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080124
+packetLen(0x0106, 8) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080102
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+#endif
+
+// Packet: 0x0107
+#if PACKETVER >= 20081217
+packetLen(0x0107, -1) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20081203
+packetLen(0x0107, 24) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20081126
+packetLen(0x0107, 6) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20081119
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20081112
+packetLen(0x0107, 30) // ZC_NOTIFY_POSITION_TO_GROUPM
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0107, 5) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20081029
+packetLen(0x0107, -1) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20081022
+packetLen(0x0107, 14) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20081015
+packetLen(0x0107, -1) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20081008
+packetLen(0x0107, 3) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20081001
+packetLen(0x0107, 30) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080924
+packetLen(0x0107, -1) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080917
+packetLen(0x0107, 2) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080910
+packetLen(0x0107, 3) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080903
+packetLen(0x0107, 5) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080827
+packetLen(0x0107, -1) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080820
+packetLen(0x0107, 16) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080813
+packetLen(0x0107, 17) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080806
+packetLen(0x0107, 23) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080730
+packetLen(0x0107, 59) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080722
+packetLen(0x0107, 282) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080624
+packetLen(0x0107, -1) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080617
+packetLen(0x0107, 3) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080603
+packetLen(0x0107, -1) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080528
+packetLen(0x0107, 6) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080520
+packetLen(0x0107, -1) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080513
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080507
+packetLen(0x0107, 6) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080429
+packetLen(0x0107, 2) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080325
+packetLen(0x0107, -1) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080318
+packetLen(0x0107, 6) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080226
+packetLen(0x0107, -1) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080219
+packetLen(0x0107, 5) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080124
+packetLen(0x0107, 3) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080102
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+#endif
+
+// Packet: 0x0108
+#if PACKETVER >= 20081029
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20081022
+packetLen(0x0108, 9) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20081015
+packetLen(0x0108, 22) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20081008
+packetLen(0x0108, 11) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080924
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080917
+packetLen(0x0108, 14) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080827
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080820
+packetLen(0x0108, 8) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080813
+packetLen(0x0108, 10) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080730
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080722
+packetLen(0x0108, 12) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080715
+packetLen(0x0108, 6) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080624
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080617
+packetLen(0x0108, 54) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080610
+packetLen(0x0108, 2) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080528
+packetLen(0x0108, 11) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080520
+packetLen(0x0108, 97) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080513
+packetLen(0x0108, 30) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080507
+packetLen(0x0108, 6) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080429
+packetLen(0x0108, 32) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080415
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080408
+packetLen(0x0108, 3) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080401
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080325
+packetLen(0x0108, 7) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080318
+packetLen(0x0108, 182) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080311
+packetLen(0x0108, 4) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080226
+packetLen(0x0108, 3) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080219
+packetLen(0x0108, 97) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080124
+packetLen(0x0108, 6) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080102
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+#endif
+
+// Packet: 0x0109
+#if PACKETVER >= 20081112
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20081105
+packetLen(0x0109, 6) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20081029
+packetLen(0x0109, 3) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20081022
+packetLen(0x0109, 43) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20081001
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080924
+packetLen(0x0109, 17) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080917
+packetLen(0x0109, 6) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080910
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080903
+packetLen(0x0109, 81) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080708
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080701
+packetLen(0x0109, 31) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080624
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080617
+packetLen(0x0109, 7) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080610
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080603
+packetLen(0x0109, 5) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080528
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080513
+packetLen(0x0109, 6) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080507
+packetLen(0x0109, 26) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080429
+packetLen(0x0109, 67) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080422
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080415
+packetLen(0x0109, 102) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080408
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080401
+packetLen(0x0109, 33) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080325
+packetLen(0x0109, 26) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080318
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080311
+packetLen(0x0109, 10) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080304
+packetLen(0x0109, 4) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080226
+packetLen(0x0109, 2) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080219
+packetLen(0x0109, 14) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080124
+packetLen(0x0109, 12) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080102
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+#endif
+
+// Packet: 0x010a
+#if PACKETVER >= 20081217
+packetLen(0x010a, 8) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20081126
+packetLen(0x010a, -1) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20081119
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20081112
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x010a, 36) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20081022
+packetLen(0x010a, -1) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20081015
+packetLen(0x010a, 16) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20081008
+packetLen(0x010a, 10) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080917
+packetLen(0x010a, -1) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080910
+packetLen(0x010a, 6) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080903
+packetLen(0x010a, 7) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080827
+packetLen(0x010a, 2) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080820
+packetLen(0x010a, -1) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080813
+packetLen(0x010a, 3) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080806
+packetLen(0x010a, 30) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080722
+packetLen(0x010a, -1) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080715
+packetLen(0x010a, 3) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080610
+packetLen(0x010a, -1) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080603
+packetLen(0x010a, 34) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080528
+packetLen(0x010a, 102) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080520
+packetLen(0x010a, 3) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080513
+packetLen(0x010a, 30) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080507
+packetLen(0x010a, 31) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080429
+packetLen(0x010a, -1) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080415
+packetLen(0x010a, 6) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080408
+packetLen(0x010a, 114) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080401
+packetLen(0x010a, 27) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080325
+packetLen(0x010a, 12) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080318
+packetLen(0x010a, 8) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x010a, -1) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x010a, 6) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x010a, -1) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080124
+packetLen(0x010a, 6) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+#endif
+
+// Packet: 0x010b
+#if PACKETVER >= 20081217
+packetLen(0x010b, 23) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20081203
+packetLen(0x010b, 14) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20081112
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x010b, 2) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20081022
+packetLen(0x010b, -1) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20081015
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20081001
+packetLen(0x010b, -1) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080924
+packetLen(0x010b, 14) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080820
+packetLen(0x010b, -1) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080813
+packetLen(0x010b, 58) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080806
+packetLen(0x010b, -1) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080730
+packetLen(0x010b, 33) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080722
+packetLen(0x010b, 4) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080715
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080708
+packetLen(0x010b, -1) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080701
+packetLen(0x010b, 3) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080624
+packetLen(0x010b, -1) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080617
+packetLen(0x010b, 8) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080610
+packetLen(0x010b, 26) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080603
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080520
+packetLen(0x010b, -1) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080513
+packetLen(0x010b, 4) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080429
+packetLen(0x010b, 3) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080422
+packetLen(0x010b, -1) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080415
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080408
+packetLen(0x010b, -1) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080401
+packetLen(0x010b, 28) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080325
+packetLen(0x010b, -1) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080318
+packetLen(0x010b, 17) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080311
+packetLen(0x010b, 3) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080304
+packetLen(0x010b, 114) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080226
+packetLen(0x010b, 9) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080219
+packetLen(0x010b, 24) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080102
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+#endif
+
+// Packet: 0x010c
+#if PACKETVER >= 20081203
+packetLen(0x010c, 6) // ZC_MVP
+#elif PACKETVER >= 20081119
+packetLen(0x010c, 3) // ZC_MVP
+#elif PACKETVER >= 20081112
+packetLen(0x010c, 6) // ZC_MVP
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x010c, -1) // ZC_MVP
+#elif PACKETVER >= 20081029
+packetLen(0x010c, 2) // ZC_MVP
+#elif PACKETVER >= 20081022
+packetLen(0x010c, 11) // ZC_MVP
+#elif PACKETVER >= 20081008
+packetLen(0x010c, -1) // ZC_MVP
+#elif PACKETVER >= 20081001
+packetLen(0x010c, 9) // ZC_MVP
+#elif PACKETVER >= 20080917
+packetLen(0x010c, -1) // ZC_MVP
+#elif PACKETVER >= 20080910
+packetLen(0x010c, 33) // ZC_MVP
+#elif PACKETVER >= 20080827
+packetLen(0x010c, -1) // ZC_MVP
+#elif PACKETVER >= 20080820
+packetLen(0x010c, 6) // ZC_MVP
+#elif PACKETVER >= 20080813
+packetLen(0x010c, 26) // ZC_MVP
+#elif PACKETVER >= 20080730
+packetLen(0x010c, -1) // ZC_MVP
+#elif PACKETVER >= 20080722
+packetLen(0x010c, 6) // ZC_MVP
+#elif PACKETVER >= 20080715
+packetLen(0x010c, 10) // ZC_MVP
+#elif PACKETVER >= 20080708
+packetLen(0x010c, -1) // ZC_MVP
+#elif PACKETVER >= 20080701
+packetLen(0x010c, 7) // ZC_MVP
+#elif PACKETVER >= 20080624
+packetLen(0x010c, 23) // ZC_MVP
+#elif PACKETVER >= 20080610
+packetLen(0x010c, -1) // ZC_MVP
+#elif PACKETVER >= 20080603
+packetLen(0x010c, 31) // ZC_MVP
+#elif PACKETVER >= 20080528
+packetLen(0x010c, 30) // ZC_MVP
+#elif PACKETVER >= 20080520
+packetLen(0x010c, 8) // ZC_MVP
+#elif PACKETVER >= 20080507
+packetLen(0x010c, 2) // ZC_MVP
+#elif PACKETVER >= 20080429
+packetLen(0x010c, -1) // ZC_MVP
+#elif PACKETVER >= 20080422
+packetLen(0x010c, 26) // ZC_MVP
+#elif PACKETVER >= 20080408
+packetLen(0x010c, -1) // ZC_MVP
+#elif PACKETVER >= 20080401
+packetLen(0x010c, 6) // ZC_MVP
+#elif PACKETVER >= 20080325
+packetLen(0x010c, 11) // ZC_MVP
+#elif PACKETVER >= 20080318
+packetLen(0x010c, -1) // ZC_MVP
+#elif PACKETVER >= 20080311
+packetLen(0x010c, 282) // ZC_MVP
+#elif PACKETVER >= 20080304
+packetLen(0x010c, 2) // ZC_MVP
+#elif PACKETVER >= 20080226
+packetLen(0x010c, 14) // ZC_MVP
+#elif PACKETVER >= 20080219
+packetLen(0x010c, -1) // ZC_MVP
+#elif PACKETVER >= 20080124
+packetLen(0x010c, 4) // ZC_MVP
+#elif PACKETVER >= 20080102
+packetLen(0x010c, 6) // ZC_MVP
+#endif
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+#if PACKETVER >= 20081203
+packetLen(0x010e, 6) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20081126
+packetLen(0x010e, -1) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20081119
+packetLen(0x010e, 81) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20081112
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x010e, 30) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20081029
+packetLen(0x010e, 10) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20081022
+packetLen(0x010e, -1) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20081015
+packetLen(0x010e, 53) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080806
+packetLen(0x010e, -1) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080730
+packetLen(0x010e, 26) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080722
+packetLen(0x010e, -1) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080715
+packetLen(0x010e, 24) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080701
+packetLen(0x010e, -1) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080624
+packetLen(0x010e, 33) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080617
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080610
+packetLen(0x010e, 8) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080603
+packetLen(0x010e, 6) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080528
+packetLen(0x010e, 2) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080520
+packetLen(0x010e, 6) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080513
+packetLen(0x010e, 14) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080507
+packetLen(0x010e, 10) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080429
+packetLen(0x010e, 67) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080415
+packetLen(0x010e, -1) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080408
+packetLen(0x010e, 12) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080401
+packetLen(0x010e, -1) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080325
+packetLen(0x010e, 30) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080318
+packetLen(0x010e, 53) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080311
+packetLen(0x010e, 71) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080304
+packetLen(0x010e, 26) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080226
+packetLen(0x010e, 7) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080219
+packetLen(0x010e, -1) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080124
+packetLen(0x010e, 6) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080102
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+#endif
+
+// Packet: 0x010f
+#if PACKETVER >= 20081217
+packetLen(0x010f, 81) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20081203
+packetLen(0x010f, 10) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20081015
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20081008
+packetLen(0x010f, 2) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20081001
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080924
+packetLen(0x010f, 4) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080827
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080820
+packetLen(0x010f, 67) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080806
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080730
+packetLen(0x010f, 4) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080715
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080708
+packetLen(0x010f, 35) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080701
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080624
+packetLen(0x010f, 2) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080617
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080610
+packetLen(0x010f, 30) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080603
+packetLen(0x010f, 5) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080528
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080520
+packetLen(0x010f, 6) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080513
+packetLen(0x010f, 17) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080507
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080429
+packetLen(0x010f, 11) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080422
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080415
+packetLen(0x010f, 4) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080408
+packetLen(0x010f, 8) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080325
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080318
+packetLen(0x010f, 6) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x010f, 2) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x010f, 17) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x010f, 30) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080124
+packetLen(0x010f, 11) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+#endif
+
+// Packet: 0x0110
+#if PACKETVER >= 20081126
+packetLen(0x0110, -1) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20081119
+packetLen(0x0110, 6) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20081112
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x0110, -1) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20081015
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20081001
+packetLen(0x0110, -1) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080924
+packetLen(0x0110, 16) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080910
+packetLen(0x0110, -1) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080903
+packetLen(0x0110, 6) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080827
+packetLen(0x0110, -1) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080820
+packetLen(0x0110, 3) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080813
+packetLen(0x0110, 24) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080722
+packetLen(0x0110, -1) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080715
+packetLen(0x0110, 34) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080617
+packetLen(0x0110, -1) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080610
+packetLen(0x0110, 3) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080603
+packetLen(0x0110, -1) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080528
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080520
+packetLen(0x0110, -1) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080513
+packetLen(0x0110, 4) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080507
+packetLen(0x0110, 3) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080408
+packetLen(0x0110, -1) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080401
+packetLen(0x0110, 6) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080325
+packetLen(0x0110, 35) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080318
+packetLen(0x0110, 8) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080311
+packetLen(0x0110, 4) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080226
+packetLen(0x0110, 8) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080219
+packetLen(0x0110, -1) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080124
+packetLen(0x0110, 2) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080102
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+#endif
+
+// Packet: 0x0111
+#if PACKETVER >= 20081217
+packetLen(0x0111, -1) // ZC_ADD_SKILL
+#elif PACKETVER >= 20081203
+packetLen(0x0111, 6) // ZC_ADD_SKILL
+#elif PACKETVER >= 20081112
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0111, 10) // ZC_ADD_SKILL
+#elif PACKETVER >= 20081029
+packetLen(0x0111, 97) // ZC_ADD_SKILL
+#elif PACKETVER >= 20081015
+packetLen(0x0111, -1) // ZC_ADD_SKILL
+#elif PACKETVER >= 20081008
+packetLen(0x0111, 6) // ZC_ADD_SKILL
+#elif PACKETVER >= 20081001
+packetLen(0x0111, 4) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080903
+packetLen(0x0111, -1) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080827
+packetLen(0x0111, 5) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080820
+packetLen(0x0111, 66) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080813
+packetLen(0x0111, 27) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080806
+packetLen(0x0111, 282) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080730
+packetLen(0x0111, 11) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080722
+packetLen(0x0111, -1) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080715
+packetLen(0x0111, 10) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080708
+packetLen(0x0111, -1) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080701
+packetLen(0x0111, 17) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080624
+packetLen(0x0111, -1) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080617
+packetLen(0x0111, 2) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080610
+packetLen(0x0111, -1) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080603
+packetLen(0x0111, 11) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080528
+packetLen(0x0111, 23) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080507
+packetLen(0x0111, -1) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080429
+packetLen(0x0111, 10) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080422
+packetLen(0x0111, 4) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080415
+packetLen(0x0111, -1) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080408
+packetLen(0x0111, 26) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080401
+packetLen(0x0111, -1) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080325
+packetLen(0x0111, 282) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080318
+packetLen(0x0111, 23) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080311
+packetLen(0x0111, 6) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080304
+packetLen(0x0111, 4) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080226
+packetLen(0x0111, 60) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080219
+packetLen(0x0111, 32) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080124
+packetLen(0x0111, -1) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080102
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+#endif
+
+// Packet: 0x0112
+#if PACKETVER >= 20081217
+packetLen(0x0112, -1) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20081203
+packetLen(0x0112, 8) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20081112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081001
+packetLen(0x0112, -1) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080924
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080910
+packetLen(0x0112, -1) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080903
+packetLen(0x0112, 10) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080827
+packetLen(0x0112, -1) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080820
+packetLen(0x0112, 9) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080701
+packetLen(0x0112, -1) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080624
+packetLen(0x0112, 15) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080617
+packetLen(0x0112, 59) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080610
+packetLen(0x0112, 6) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080603
+packetLen(0x0112, 14) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080528
+packetLen(0x0112, 7) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080520
+packetLen(0x0112, 30) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080513
+packetLen(0x0112, 10) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080429
+packetLen(0x0112, -1) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080422
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080408
+packetLen(0x0112, -1) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080401
+packetLen(0x0112, 6) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080325
+packetLen(0x0112, 11) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080318
+packetLen(0x0112, 6) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080311
+packetLen(0x0112, -1) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080304
+packetLen(0x0112, 29) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080226
+packetLen(0x0112, 13) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080219
+packetLen(0x0112, 7) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080124
+packetLen(0x0112, 26) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080102
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+#endif
+
+// Packet: 0x0113
+packetLen(0x0113, 25) // CZ_USE_SKILL
+
+// Packet: 0x0114
+#if PACKETVER >= 20081203
+packetLen(0x0114, -1) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20081119
+packetLen(0x0114, 11) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20081112
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0114, 10) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20081008
+packetLen(0x0114, -1) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20081001
+packetLen(0x0114, 11) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080806
+packetLen(0x0114, -1) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080730
+packetLen(0x0114, 6) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080722
+packetLen(0x0114, -1) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080715
+packetLen(0x0114, 10) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080708
+packetLen(0x0114, 7) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080701
+packetLen(0x0114, 10) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080624
+packetLen(0x0114, -1) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080617
+packetLen(0x0114, 15) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080610
+packetLen(0x0114, 11) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080603
+packetLen(0x0114, 7) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080528
+packetLen(0x0114, 6) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080520
+packetLen(0x0114, 30) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080513
+packetLen(0x0114, -1) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080507
+packetLen(0x0114, 4) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080429
+packetLen(0x0114, 3) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080408
+packetLen(0x0114, -1) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080401
+packetLen(0x0114, 26) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080325
+packetLen(0x0114, 182) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080318
+packetLen(0x0114, 6) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080311
+packetLen(0x0114, -1) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080304
+packetLen(0x0114, 29) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080226
+packetLen(0x0114, 10) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080219
+packetLen(0x0114, -1) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080124
+packetLen(0x0114, 8) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080102
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+#endif
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+#if PACKETVER >= 20081203
+packetLen(0x0117, -1) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20081126
+packetLen(0x0117, 81) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20081112
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0117, 14) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20081029
+packetLen(0x0117, 13) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20081022
+packetLen(0x0117, 14) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20081015
+packetLen(0x0117, 32) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20081008
+packetLen(0x0117, 6) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080917
+packetLen(0x0117, -1) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080910
+packetLen(0x0117, 22) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080903
+packetLen(0x0117, 2) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080827
+packetLen(0x0117, 30) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080820
+packetLen(0x0117, -1) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080813
+packetLen(0x0117, 4) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080806
+packetLen(0x0117, -1) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080730
+packetLen(0x0117, 30) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080722
+packetLen(0x0117, 6) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080603
+packetLen(0x0117, -1) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080528
+packetLen(0x0117, 6) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080520
+packetLen(0x0117, -1) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080513
+packetLen(0x0117, 5) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080507
+packetLen(0x0117, 6) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080422
+packetLen(0x0117, -1) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080415
+packetLen(0x0117, 29) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080408
+packetLen(0x0117, 28) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080401
+packetLen(0x0117, 26) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080325
+packetLen(0x0117, 29) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080318
+packetLen(0x0117, -1) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080311
+packetLen(0x0117, 11) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080304
+packetLen(0x0117, 6) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080226
+packetLen(0x0117, -1) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080219
+packetLen(0x0117, 10) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080124
+packetLen(0x0117, 8) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080102
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+#endif
+
+// Packet: 0x0118
+#if PACKETVER >= 20081217
+packetLen(0x0118, -1) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20081203
+packetLen(0x0118, 4) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20081126
+packetLen(0x0118, 54) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20081119
+packetLen(0x0118, 11) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20081112
+packetLen(0x0118, 10) // CZ_CANCEL_LOCKON
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0118, -1) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20081029
+packetLen(0x0118, 4) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20081022
+packetLen(0x0118, -1) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20081015
+packetLen(0x0118, 6) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20081008
+packetLen(0x0118, 182) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20081001
+packetLen(0x0118, 26) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080910
+packetLen(0x0118, -1) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080903
+packetLen(0x0118, 54) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080730
+packetLen(0x0118, -1) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080722
+packetLen(0x0118, 18) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080715
+packetLen(0x0118, -1) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080708
+packetLen(0x0118, 4) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080701
+packetLen(0x0118, 67) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080617
+packetLen(0x0118, -1) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080610
+packetLen(0x0118, 22) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080603
+packetLen(0x0118, -1) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080528
+packetLen(0x0118, 8) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080520
+packetLen(0x0118, 90) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080513
+packetLen(0x0118, -1) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080507
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080429
+packetLen(0x0118, 29) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080422
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080401
+packetLen(0x0118, -1) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080325
+packetLen(0x0118, 14) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080318
+packetLen(0x0118, 5) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080311
+packetLen(0x0118, 282) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080304
+packetLen(0x0118, -1) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080226
+packetLen(0x0118, 54) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080219
+packetLen(0x0118, 7) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080124
+packetLen(0x0118, 54) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080102
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+#endif
+
+// Packet: 0x0119
+#if PACKETVER >= 20081217
+packetLen(0x0119, 30) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20081203
+packetLen(0x0119, 7) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20081126
+packetLen(0x0119, 11) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20081119
+packetLen(0x0119, 6) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20081112
+packetLen(0x0119, 43) // ZC_STATE_CHANGE
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x0119, -1) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20081015
+packetLen(0x0119, 6) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20081008
+packetLen(0x0119, 7) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080924
+packetLen(0x0119, -1) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080917
+packetLen(0x0119, 30) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080910
+packetLen(0x0119, 29) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080903
+packetLen(0x0119, 30) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080827
+packetLen(0x0119, -1) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080820
+packetLen(0x0119, 3) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080813
+packetLen(0x0119, 14) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080730
+packetLen(0x0119, -1) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080715
+packetLen(0x0119, 2) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080708
+packetLen(0x0119, 4) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080603
+packetLen(0x0119, -1) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080528
+packetLen(0x0119, 10) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080520
+packetLen(0x0119, 4) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080513
+packetLen(0x0119, 23) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080415
+packetLen(0x0119, -1) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080408
+packetLen(0x0119, 6) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080401
+packetLen(0x0119, 17) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080325
+packetLen(0x0119, 2) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080318
+packetLen(0x0119, 3) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080311
+packetLen(0x0119, 8) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080304
+packetLen(0x0119, 282) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080226
+packetLen(0x0119, 2) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080219
+packetLen(0x0119, 58) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080124
+packetLen(0x0119, 6) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+#endif
+
+// Packet: 0x011a
+#if PACKETVER >= 20081217
+packetLen(0x011a, -1) // ZC_USE_SKILL
+#elif PACKETVER >= 20081203
+packetLen(0x011a, 19) // ZC_USE_SKILL
+#elif PACKETVER >= 20081112
+packetLen(0x011a, 15) // ZC_USE_SKILL
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x011a, 7) // ZC_USE_SKILL
+#elif PACKETVER >= 20081029
+packetLen(0x011a, -1) // ZC_USE_SKILL
+#elif PACKETVER >= 20081022
+packetLen(0x011a, 26) // ZC_USE_SKILL
+#elif PACKETVER >= 20081008
+packetLen(0x011a, -1) // ZC_USE_SKILL
+#elif PACKETVER >= 20081001
+packetLen(0x011a, 6) // ZC_USE_SKILL
+#elif PACKETVER >= 20080924
+packetLen(0x011a, 58) // ZC_USE_SKILL
+#elif PACKETVER >= 20080917
+packetLen(0x011a, 15) // ZC_USE_SKILL
+#elif PACKETVER >= 20080903
+packetLen(0x011a, -1) // ZC_USE_SKILL
+#elif PACKETVER >= 20080827
+packetLen(0x011a, 8) // ZC_USE_SKILL
+#elif PACKETVER >= 20080813
+packetLen(0x011a, -1) // ZC_USE_SKILL
+#elif PACKETVER >= 20080806
+packetLen(0x011a, 14) // ZC_USE_SKILL
+#elif PACKETVER >= 20080715
+packetLen(0x011a, -1) // ZC_USE_SKILL
+#elif PACKETVER >= 20080708
+packetLen(0x011a, 2) // ZC_USE_SKILL
+#elif PACKETVER >= 20080701
+packetLen(0x011a, 11) // ZC_USE_SKILL
+#elif PACKETVER >= 20080624
+packetLen(0x011a, 3) // ZC_USE_SKILL
+#elif PACKETVER >= 20080617
+packetLen(0x011a, 6) // ZC_USE_SKILL
+#elif PACKETVER >= 20080610
+packetLen(0x011a, 26) // ZC_USE_SKILL
+#elif PACKETVER >= 20080603
+packetLen(0x011a, -1) // ZC_USE_SKILL
+#elif PACKETVER >= 20080528
+packetLen(0x011a, 8) // ZC_USE_SKILL
+#elif PACKETVER >= 20080520
+packetLen(0x011a, 6) // ZC_USE_SKILL
+#elif PACKETVER >= 20080513
+packetLen(0x011a, -1) // ZC_USE_SKILL
+#elif PACKETVER >= 20080507
+packetLen(0x011a, 3) // ZC_USE_SKILL
+#elif PACKETVER >= 20080429
+packetLen(0x011a, 17) // ZC_USE_SKILL
+#elif PACKETVER >= 20080408
+packetLen(0x011a, 4) // ZC_USE_SKILL
+#elif PACKETVER >= 20080401
+packetLen(0x011a, 8) // ZC_USE_SKILL
+#elif PACKETVER >= 20080325
+packetLen(0x011a, 36) // ZC_USE_SKILL
+#elif PACKETVER >= 20080318
+packetLen(0x011a, -1) // ZC_USE_SKILL
+#elif PACKETVER >= 20080311
+packetLen(0x011a, 6) // ZC_USE_SKILL
+#elif PACKETVER >= 20080304
+packetLen(0x011a, 2) // ZC_USE_SKILL
+#elif PACKETVER >= 20080226
+packetLen(0x011a, 10) // ZC_USE_SKILL
+#elif PACKETVER >= 20080219
+packetLen(0x011a, 11) // ZC_USE_SKILL
+#elif PACKETVER >= 20080124
+packetLen(0x011a, 2) // ZC_USE_SKILL
+#elif PACKETVER >= 20080102
+packetLen(0x011a, 15) // ZC_USE_SKILL
+#endif
+
+// Packet: 0x011b
+#if PACKETVER >= 20081217
+packetLen(0x011b, -1) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20081203
+packetLen(0x011b, 30) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20081119
+packetLen(0x011b, -1) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20081112
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x011b, 15) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20081029
+packetLen(0x011b, 4) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20081022
+packetLen(0x011b, -1) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20081015
+packetLen(0x011b, 4) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080924
+packetLen(0x011b, -1) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080917
+packetLen(0x011b, 3) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080903
+packetLen(0x011b, -1) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080827
+packetLen(0x011b, 53) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080820
+packetLen(0x011b, 23) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080813
+packetLen(0x011b, 2) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080806
+packetLen(0x011b, -1) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080730
+packetLen(0x011b, 79) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080722
+packetLen(0x011b, 6) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080715
+packetLen(0x011b, -1) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080708
+packetLen(0x011b, 14) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080528
+packetLen(0x011b, -1) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080520
+packetLen(0x011b, 2) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080513
+packetLen(0x011b, 58) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080507
+packetLen(0x011b, -1) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080429
+packetLen(0x011b, 10) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080422
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080415
+packetLen(0x011b, -1) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080408
+packetLen(0x011b, 4) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080401
+packetLen(0x011b, -1) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080325
+packetLen(0x011b, 39) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080311
+packetLen(0x011b, -1) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080304
+packetLen(0x011b, 58) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080226
+packetLen(0x011b, 2) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080124
+packetLen(0x011b, -1) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080102
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+#endif
+
+// Packet: 0x011c
+#if PACKETVER >= 20081217
+packetLen(0x011c, -1) // ZC_WARPLIST
+#elif PACKETVER >= 20081203
+packetLen(0x011c, 2) // ZC_WARPLIST
+#elif PACKETVER >= 20081119
+packetLen(0x011c, -1) // ZC_WARPLIST
+#elif PACKETVER >= 20081112
+packetLen(0x011c, 68) // ZC_WARPLIST
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x011c, 26) // ZC_WARPLIST
+#elif PACKETVER >= 20081022
+packetLen(0x011c, -1) // ZC_WARPLIST
+#elif PACKETVER >= 20081015
+packetLen(0x011c, 3) // ZC_WARPLIST
+#elif PACKETVER >= 20081001
+packetLen(0x011c, -1) // ZC_WARPLIST
+#elif PACKETVER >= 20080924
+packetLen(0x011c, 3) // ZC_WARPLIST
+#elif PACKETVER >= 20080917
+packetLen(0x011c, 60) // ZC_WARPLIST
+#elif PACKETVER >= 20080910
+packetLen(0x011c, -1) // ZC_WARPLIST
+#elif PACKETVER >= 20080903
+packetLen(0x011c, 66) // ZC_WARPLIST
+#elif PACKETVER >= 20080806
+packetLen(0x011c, -1) // ZC_WARPLIST
+#elif PACKETVER >= 20080730
+packetLen(0x011c, 39) // ZC_WARPLIST
+#elif PACKETVER >= 20080722
+packetLen(0x011c, 7) // ZC_WARPLIST
+#elif PACKETVER >= 20080715
+packetLen(0x011c, -1) // ZC_WARPLIST
+#elif PACKETVER >= 20080708
+packetLen(0x011c, 15) // ZC_WARPLIST
+#elif PACKETVER >= 20080617
+packetLen(0x011c, -1) // ZC_WARPLIST
+#elif PACKETVER >= 20080610
+packetLen(0x011c, 14) // ZC_WARPLIST
+#elif PACKETVER >= 20080603
+packetLen(0x011c, 8) // ZC_WARPLIST
+#elif PACKETVER >= 20080528
+packetLen(0x011c, -1) // ZC_WARPLIST
+#elif PACKETVER >= 20080520
+packetLen(0x011c, 2) // ZC_WARPLIST
+#elif PACKETVER >= 20080513
+packetLen(0x011c, 8) // ZC_WARPLIST
+#elif PACKETVER >= 20080507
+packetLen(0x011c, 282) // ZC_WARPLIST
+#elif PACKETVER >= 20080429
+packetLen(0x011c, 5) // ZC_WARPLIST
+#elif PACKETVER >= 20080422
+packetLen(0x011c, -1) // ZC_WARPLIST
+#elif PACKETVER >= 20080415
+packetLen(0x011c, 31) // ZC_WARPLIST
+#elif PACKETVER >= 20080408
+packetLen(0x011c, 3) // ZC_WARPLIST
+#elif PACKETVER >= 20080401
+packetLen(0x011c, 7) // ZC_WARPLIST
+#elif PACKETVER >= 20080325
+packetLen(0x011c, 26) // ZC_WARPLIST
+#elif PACKETVER >= 20080318
+packetLen(0x011c, 6) // ZC_WARPLIST
+#elif PACKETVER >= 20080311
+packetLen(0x011c, 3) // ZC_WARPLIST
+#elif PACKETVER >= 20080304
+packetLen(0x011c, 32) // ZC_WARPLIST
+#elif PACKETVER >= 20080226
+packetLen(0x011c, 6) // ZC_WARPLIST
+#elif PACKETVER >= 20080219
+packetLen(0x011c, 4) // ZC_WARPLIST
+#elif PACKETVER >= 20080124
+packetLen(0x011c, 2) // ZC_WARPLIST
+#elif PACKETVER >= 20080102
+packetLen(0x011c, 68) // ZC_WARPLIST
+#endif
+
+// Packet: 0x011d
+#if PACKETVER >= 20081217
+packetLen(0x011d, -1) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20081203
+packetLen(0x011d, 16) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20081126
+packetLen(0x011d, -1) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20081119
+packetLen(0x011d, 14) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20081112
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x011d, -1) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20081029
+packetLen(0x011d, 8) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20081022
+packetLen(0x011d, 16) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20081015
+packetLen(0x011d, 21) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20081008
+packetLen(0x011d, 14) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080827
+packetLen(0x011d, -1) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080820
+packetLen(0x011d, 24) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080813
+packetLen(0x011d, 11) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080730
+packetLen(0x011d, -1) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080722
+packetLen(0x011d, 9) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080715
+packetLen(0x011d, 8) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080708
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080624
+packetLen(0x011d, -1) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080617
+packetLen(0x011d, 10) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080610
+packetLen(0x011d, 28) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080603
+packetLen(0x011d, 3) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080528
+packetLen(0x011d, 14) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080520
+packetLen(0x011d, 23) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080513
+packetLen(0x011d, -1) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080507
+packetLen(0x011d, 81) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080422
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080415
+packetLen(0x011d, 6) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080408
+packetLen(0x011d, 4) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080325
+packetLen(0x011d, 10) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080318
+packetLen(0x011d, 7) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080311
+packetLen(0x011d, 3) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080304
+packetLen(0x011d, 7) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080219
+packetLen(0x011d, -1) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080124
+packetLen(0x011d, 26) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080102
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+#endif
+
+// Packet: 0x011e
+#if PACKETVER >= 20081112
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x011e, -1) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20081029
+packetLen(0x011e, 30) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080813
+packetLen(0x011e, -1) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080806
+packetLen(0x011e, 4) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080730
+packetLen(0x011e, -1) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080722
+packetLen(0x011e, 12) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080624
+packetLen(0x011e, -1) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080617
+packetLen(0x011e, 33) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080610
+packetLen(0x011e, 5) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080603
+packetLen(0x011e, -1) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080528
+packetLen(0x011e, 6) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080513
+packetLen(0x011e, -1) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080507
+packetLen(0x011e, 9) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080429
+packetLen(0x011e, 10) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080422
+packetLen(0x011e, 282) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080415
+packetLen(0x011e, 30) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080408
+packetLen(0x011e, 32) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080401
+packetLen(0x011e, 9) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080325
+packetLen(0x011e, 18) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080318
+packetLen(0x011e, -1) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080311
+packetLen(0x011e, 6) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080304
+packetLen(0x011e, 18) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080219
+packetLen(0x011e, -1) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080124
+packetLen(0x011e, 7) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080102
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+#endif
+
+// Packet: 0x011f
+#if PACKETVER >= 20081203
+packetLen(0x011f, -1) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20081126
+packetLen(0x011f, 60) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20081112
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x011f, 2) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20081022
+packetLen(0x011f, -1) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20081015
+packetLen(0x011f, 6) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080924
+packetLen(0x011f, -1) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080917
+packetLen(0x011f, 282) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080910
+packetLen(0x011f, -1) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080903
+packetLen(0x011f, 10) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080827
+packetLen(0x011f, -1) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080820
+packetLen(0x011f, 5) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080813
+packetLen(0x011f, 58) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080806
+packetLen(0x011f, 28) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080708
+packetLen(0x011f, -1) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080701
+packetLen(0x011f, 11) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080624
+packetLen(0x011f, -1) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080617
+packetLen(0x011f, 30) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080610
+packetLen(0x011f, 10) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080603
+packetLen(0x011f, 3) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080528
+packetLen(0x011f, 282) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080520
+packetLen(0x011f, -1) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080513
+packetLen(0x011f, 30) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080507
+packetLen(0x011f, 6) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080429
+packetLen(0x011f, -1) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080422
+packetLen(0x011f, 12) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080415
+packetLen(0x011f, 2) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080408
+packetLen(0x011f, 6) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080401
+packetLen(0x011f, -1) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080325
+packetLen(0x011f, 10) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080318
+packetLen(0x011f, -1) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080311
+packetLen(0x011f, 60) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x011f, 2) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080226
+packetLen(0x011f, 8) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080219
+packetLen(0x011f, 5) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080124
+packetLen(0x011f, 2) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+#endif
+
+// Packet: 0x0120
+#if PACKETVER >= 20081126
+packetLen(0x0120, -1) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20081119
+packetLen(0x0120, 10) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20081112
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20080924
+packetLen(0x0120, -1) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080917
+packetLen(0x0120, 9) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080903
+packetLen(0x0120, -1) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080827
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080820
+packetLen(0x0120, -1) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080813
+packetLen(0x0120, 60) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080806
+packetLen(0x0120, 22) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080730
+packetLen(0x0120, 4) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080715
+packetLen(0x0120, -1) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080708
+packetLen(0x0120, 30) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080701
+packetLen(0x0120, -1) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080624
+packetLen(0x0120, 27) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080617
+packetLen(0x0120, 14) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080610
+packetLen(0x0120, 79) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080603
+packetLen(0x0120, -1) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080528
+packetLen(0x0120, 28) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080520
+packetLen(0x0120, 5) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080513
+packetLen(0x0120, -1) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080507
+packetLen(0x0120, 54) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080429
+packetLen(0x0120, 7) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080422
+packetLen(0x0120, 4) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080408
+packetLen(0x0120, -1) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080401
+packetLen(0x0120, 5) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080318
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080311
+packetLen(0x0120, 5) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080304
+packetLen(0x0120, 54) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080226
+packetLen(0x0120, 7) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080219
+packetLen(0x0120, -1) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080124
+packetLen(0x0120, 39) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080102
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+#endif
+
+// Packet: 0x0121
+#if PACKETVER >= 20081217
+packetLen(0x0121, 3) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20081112
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0121, 3) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20081029
+packetLen(0x0121, 6) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20081022
+packetLen(0x0121, 5) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080917
+packetLen(0x0121, -1) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080910
+packetLen(0x0121, 3) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080903
+packetLen(0x0121, 13) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080813
+packetLen(0x0121, -1) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080722
+packetLen(0x0121, 2) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080708
+packetLen(0x0121, -1) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080701
+packetLen(0x0121, 8) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080624
+packetLen(0x0121, -1) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080610
+packetLen(0x0121, 5) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080603
+packetLen(0x0121, -1) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080528
+packetLen(0x0121, 4) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080520
+packetLen(0x0121, 26) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080513
+packetLen(0x0121, 27) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080507
+packetLen(0x0121, -1) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080429
+packetLen(0x0121, 60) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080415
+packetLen(0x0121, 6) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080408
+packetLen(0x0121, -1) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080401
+packetLen(0x0121, 2) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080325
+packetLen(0x0121, -1) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080318
+packetLen(0x0121, 29) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080311
+packetLen(0x0121, 2) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080304
+packetLen(0x0121, 29) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080226
+packetLen(0x0121, 282) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080219
+packetLen(0x0121, 6) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080124
+packetLen(0x0121, 60) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080102
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#endif
+
+// Packet: 0x0122
+#if PACKETVER >= 20081217
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20081203
+packetLen(0x0122, 2) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20081126
+packetLen(0x0122, 66) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20081119
+packetLen(0x0122, 2) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20081112
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20081105
+packetLen(0x0122, 10) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20081029
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20081022
+packetLen(0x0122, 6) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20081001
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080924
+packetLen(0x0122, 65) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080917
+packetLen(0x0122, 30) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080910
+packetLen(0x0122, 7) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080903
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080827
+packetLen(0x0122, 3) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080813
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080806
+packetLen(0x0122, 5) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080730
+packetLen(0x0122, 3) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080715
+packetLen(0x0122, 10) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080708
+packetLen(0x0122, 282) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080701
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080624
+packetLen(0x0122, 58) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080617
+packetLen(0x0122, 12) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080610
+packetLen(0x0122, 15) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080603
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080528
+packetLen(0x0122, 4) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080520
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080513
+packetLen(0x0122, 10) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080507
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080429
+packetLen(0x0122, 30) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080422
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080415
+packetLen(0x0122, 186) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080408
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080401
+packetLen(0x0122, 30) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080325
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080318
+packetLen(0x0122, 16) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x0122, 7) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x0122, 28) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x0122, 8) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+#endif
+
+// Packet: 0x0123
+#if PACKETVER >= 20081217
+packetLen(0x0123, 26) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20081203
+packetLen(0x0123, 22) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20081126
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20081119
+packetLen(0x0123, 58) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20081105
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20081029
+packetLen(0x0123, 26) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080924
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080917
+packetLen(0x0123, 4) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080910
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080903
+packetLen(0x0123, 19) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080827
+packetLen(0x0123, 3) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080820
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080813
+packetLen(0x0123, 4) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080806
+packetLen(0x0123, 2) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080722
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080715
+packetLen(0x0123, 11) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080708
+packetLen(0x0123, 2) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080701
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080617
+packetLen(0x0123, 6) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080610
+packetLen(0x0123, 23) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080603
+packetLen(0x0123, 30) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080528
+packetLen(0x0123, 28) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080520
+packetLen(0x0123, 6) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080513
+packetLen(0x0123, 2) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080507
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080429
+packetLen(0x0123, 8) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080415
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080408
+packetLen(0x0123, 26) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080401
+packetLen(0x0123, 35) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080325
+packetLen(0x0123, 33) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080318
+packetLen(0x0123, 14) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x0123, 5) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x0123, 9) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x0123, 6) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x0123, 16) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080124
+packetLen(0x0123, 58) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+#endif
+
+// Packet: 0x0124
+#if PACKETVER >= 20081217
+packetLen(0x0124, -1) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20081203
+packetLen(0x0124, 26) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20081126
+packetLen(0x0124, -1) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20081119
+packetLen(0x0124, 182) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20081112
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x0124, -1) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20081022
+packetLen(0x0124, 6) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20081008
+packetLen(0x0124, -1) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20081001
+packetLen(0x0124, 3) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080924
+packetLen(0x0124, 4) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080917
+packetLen(0x0124, -1) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080910
+packetLen(0x0124, 29) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080903
+packetLen(0x0124, 10) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080827
+packetLen(0x0124, -1) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080820
+packetLen(0x0124, 282) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080813
+packetLen(0x0124, 8) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080730
+packetLen(0x0124, 6) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080722
+packetLen(0x0124, -1) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080715
+packetLen(0x0124, 5) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080701
+packetLen(0x0124, -1) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080624
+packetLen(0x0124, 26) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080617
+packetLen(0x0124, 4) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080610
+packetLen(0x0124, 58) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080603
+packetLen(0x0124, 54) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080528
+packetLen(0x0124, 32) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080520
+packetLen(0x0124, -1) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080513
+packetLen(0x0124, 22) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080507
+packetLen(0x0124, 2) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080429
+packetLen(0x0124, 31) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080422
+packetLen(0x0124, 71) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080415
+packetLen(0x0124, 22) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080408
+packetLen(0x0124, 6) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080325
+packetLen(0x0124, -1) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080318
+packetLen(0x0124, 6) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080311
+packetLen(0x0124, 4) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080304
+packetLen(0x0124, 3) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080226
+packetLen(0x0124, 36) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080219
+packetLen(0x0124, 6) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080124
+packetLen(0x0124, 11) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080102
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+#endif
+
+// Packet: 0x0125
+#if PACKETVER >= 20081112
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0125, 4) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20081022
+packetLen(0x0125, -1) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20081015
+packetLen(0x0125, 4) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20081001
+packetLen(0x0125, -1) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080924
+packetLen(0x0125, 4) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080903
+packetLen(0x0125, -1) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080827
+packetLen(0x0125, 6) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080820
+packetLen(0x0125, -1) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080813
+packetLen(0x0125, 2) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080730
+packetLen(0x0125, -1) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080722
+packetLen(0x0125, 4) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080715
+packetLen(0x0125, -1) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080708
+packetLen(0x0125, 3) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080701
+packetLen(0x0125, 10) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080624
+packetLen(0x0125, 7) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080617
+packetLen(0x0125, 6) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080610
+packetLen(0x0125, 86) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080603
+packetLen(0x0125, 6) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080528
+packetLen(0x0125, 2) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080520
+packetLen(0x0125, 44) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080513
+packetLen(0x0125, 57) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080507
+packetLen(0x0125, 2) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080429
+packetLen(0x0125, 6) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080422
+packetLen(0x0125, 32) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080415
+packetLen(0x0125, 29) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080408
+packetLen(0x0125, -1) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080401
+packetLen(0x0125, 11) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080325
+packetLen(0x0125, 53) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080318
+packetLen(0x0125, 2) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080311
+packetLen(0x0125, -1) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080304
+packetLen(0x0125, 6) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080219
+packetLen(0x0125, -1) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080124
+packetLen(0x0125, 26) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080102
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+#endif
+
+// Packet: 0x0126
+#if PACKETVER >= 20081217
+packetLen(0x0126, 14) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20081203
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20081126
+packetLen(0x0126, 10) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20081119
+packetLen(0x0126, 14) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20081112
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0126, 60) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20081029
+packetLen(0x0126, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20081022
+packetLen(0x0126, 4) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20081008
+packetLen(0x0126, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20081001
+packetLen(0x0126, 3) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080813
+packetLen(0x0126, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080806
+packetLen(0x0126, 3) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080722
+packetLen(0x0126, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080715
+packetLen(0x0126, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080708
+packetLen(0x0126, 24) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080701
+packetLen(0x0126, 3) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080624
+packetLen(0x0126, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080617
+packetLen(0x0126, 43) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080610
+packetLen(0x0126, 97) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080603
+packetLen(0x0126, 12) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080507
+packetLen(0x0126, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080429
+packetLen(0x0126, 5) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080422
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080415
+packetLen(0x0126, 4) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080408
+packetLen(0x0126, 14) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080401
+packetLen(0x0126, 3) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080325
+packetLen(0x0126, 30) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080318
+packetLen(0x0126, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080311
+packetLen(0x0126, 7) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080304
+packetLen(0x0126, 27) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080226
+packetLen(0x0126, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080219
+packetLen(0x0126, 11) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080124
+packetLen(0x0126, 26) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080102
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#endif
+
+// Packet: 0x0127
+#if PACKETVER >= 20081217
+packetLen(0x0127, -1) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20081203
+packetLen(0x0127, 4) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20081112
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20080917
+packetLen(0x0127, -1) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080910
+packetLen(0x0127, 81) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080820
+packetLen(0x0127, -1) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080813
+packetLen(0x0127, 17) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080806
+packetLen(0x0127, 18) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080730
+packetLen(0x0127, -1) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080722
+packetLen(0x0127, 2) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080715
+packetLen(0x0127, -1) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080708
+packetLen(0x0127, 4) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080701
+packetLen(0x0127, 9) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080528
+packetLen(0x0127, -1) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080520
+packetLen(0x0127, 2) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080513
+packetLen(0x0127, -1) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080507
+packetLen(0x0127, 6) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080429
+packetLen(0x0127, 10) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080422
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080415
+packetLen(0x0127, -1) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080408
+packetLen(0x0127, 26) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080401
+packetLen(0x0127, 2) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080325
+packetLen(0x0127, 6) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080318
+packetLen(0x0127, 67) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080311
+packetLen(0x0127, 5) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080304
+packetLen(0x0127, 18) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080226
+packetLen(0x0127, 12) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080219
+packetLen(0x0127, 4) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080124
+packetLen(0x0127, -1) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080102
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#endif
+
+// Packet: 0x0128
+#if PACKETVER >= 20081217
+packetLen(0x0128, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20081203
+packetLen(0x0128, 10) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20081126
+packetLen(0x0128, 29) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20081119
+packetLen(0x0128, 10) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20081112
+packetLen(0x0128, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0128, 3) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20081029
+packetLen(0x0128, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20081022
+packetLen(0x0128, 7) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20081008
+packetLen(0x0128, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20081001
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080903
+packetLen(0x0128, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080827
+packetLen(0x0128, 4) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080820
+packetLen(0x0128, 30) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080813
+packetLen(0x0128, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080806
+packetLen(0x0128, 97) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080730
+packetLen(0x0128, 31) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080722
+packetLen(0x0128, 27) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080715
+packetLen(0x0128, 3) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080708
+packetLen(0x0128, 7) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080701
+packetLen(0x0128, 5) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080624
+packetLen(0x0128, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080617
+packetLen(0x0128, 3) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080610
+packetLen(0x0128, 31) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080603
+packetLen(0x0128, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080528
+packetLen(0x0128, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080520
+packetLen(0x0128, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080507
+packetLen(0x0128, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080429
+packetLen(0x0128, 13) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080422
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080415
+packetLen(0x0128, 22) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080408
+packetLen(0x0128, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080401
+packetLen(0x0128, 6) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080318
+packetLen(0x0128, 3) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080311
+packetLen(0x0128, 58) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080304
+packetLen(0x0128, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080226
+packetLen(0x0128, 17) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080124
+packetLen(0x0128, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080102
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#endif
+
+// Packet: 0x0129
+#if PACKETVER >= 20081217
+packetLen(0x0129, 7) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20081203
+packetLen(0x0129, -1) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20081126
+packetLen(0x0129, 2) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20081119
+packetLen(0x0129, 3) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20081112
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0129, -1) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20081029
+packetLen(0x0129, 2) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20081022
+packetLen(0x0129, -1) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20081015
+packetLen(0x0129, 3) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080910
+packetLen(0x0129, -1) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080903
+packetLen(0x0129, 3) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080827
+packetLen(0x0129, 10) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080813
+packetLen(0x0129, -1) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080806
+packetLen(0x0129, 14) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080701
+packetLen(0x0129, -1) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080624
+packetLen(0x0129, 182) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080617
+packetLen(0x0129, -1) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080610
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080603
+packetLen(0x0129, 6) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080520
+packetLen(0x0129, -1) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080513
+packetLen(0x0129, 7) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080507
+packetLen(0x0129, -1) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080429
+packetLen(0x0129, 4) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080422
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080415
+packetLen(0x0129, 60) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080408
+packetLen(0x0129, 6) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080401
+packetLen(0x0129, 14) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080325
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080318
+packetLen(0x0129, 3) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080304
+packetLen(0x0129, 4) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080226
+packetLen(0x0129, -1) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080219
+packetLen(0x0129, 10) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080124
+packetLen(0x0129, 28) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080102
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#endif
+
+// Packet: 0x012a
+#if PACKETVER >= 20081119
+packetLen(0x012a, -1) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20081112
+packetLen(0x012a, 54) // CZ_REQ_CARTOFF
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x012a, 54) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20081022
+packetLen(0x012a, -1) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20081015
+packetLen(0x012a, 30) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20081008
+packetLen(0x012a, -1) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20081001
+packetLen(0x012a, 10) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080924
+packetLen(0x012a, 8) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080917
+packetLen(0x012a, 29) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080813
+packetLen(0x012a, -1) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080806
+packetLen(0x012a, 39) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080730
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080624
+packetLen(0x012a, -1) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080617
+packetLen(0x012a, 6) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080610
+packetLen(0x012a, -1) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080603
+packetLen(0x012a, 11) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080528
+packetLen(0x012a, 8) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080520
+packetLen(0x012a, 9) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080513
+packetLen(0x012a, 6) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080507
+packetLen(0x012a, 14) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080429
+packetLen(0x012a, 22) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080422
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080415
+packetLen(0x012a, 3) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080408
+packetLen(0x012a, 282) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080401
+packetLen(0x012a, -1) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080325
+packetLen(0x012a, 3) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080318
+packetLen(0x012a, 4) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080304
+packetLen(0x012a, 8) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080226
+packetLen(0x012a, 3) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080219
+packetLen(0x012a, 5) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080102
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+#endif
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+#if PACKETVER >= 20081217
+packetLen(0x012c, 79) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20081203
+packetLen(0x012c, 5) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20081126
+packetLen(0x012c, 6) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20081112
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x012c, -1) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20081029
+packetLen(0x012c, 5) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20081022
+packetLen(0x012c, -1) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20081015
+packetLen(0x012c, 2) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20081008
+packetLen(0x012c, 14) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080924
+packetLen(0x012c, -1) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080917
+packetLen(0x012c, 6) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080903
+packetLen(0x012c, -1) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080827
+packetLen(0x012c, 26) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080813
+packetLen(0x012c, -1) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080806
+packetLen(0x012c, 36) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080715
+packetLen(0x012c, -1) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080708
+packetLen(0x012c, 8) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080610
+packetLen(0x012c, -1) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080603
+packetLen(0x012c, 5) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080528
+packetLen(0x012c, 58) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080520
+packetLen(0x012c, -1) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080513
+packetLen(0x012c, 2) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080507
+packetLen(0x012c, 10) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080429
+packetLen(0x012c, 39) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080422
+packetLen(0x012c, 8) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080415
+packetLen(0x012c, -1) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080408
+packetLen(0x012c, 30) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080401
+packetLen(0x012c, 8) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080325
+packetLen(0x012c, 4) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080318
+packetLen(0x012c, 10) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080311
+packetLen(0x012c, 14) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080304
+packetLen(0x012c, 30) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080226
+packetLen(0x012c, 20) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080219
+packetLen(0x012c, 9) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080124
+packetLen(0x012c, 19) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080102
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+#endif
+
+// Packet: 0x012d
+#if PACKETVER >= 20081119
+packetLen(0x012d, -1) // ZC_OPENSTORE
+#elif PACKETVER >= 20081112
+packetLen(0x012d, 67) // ZC_OPENSTORE
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20080910
+packetLen(0x012d, -1) // ZC_OPENSTORE
+#elif PACKETVER >= 20080903
+packetLen(0x012d, 11) // ZC_OPENSTORE
+#elif PACKETVER >= 20080813
+packetLen(0x012d, -1) // ZC_OPENSTORE
+#elif PACKETVER >= 20080806
+packetLen(0x012d, 8) // ZC_OPENSTORE
+#elif PACKETVER >= 20080730
+packetLen(0x012d, 26) // ZC_OPENSTORE
+#elif PACKETVER >= 20080722
+packetLen(0x012d, 3) // ZC_OPENSTORE
+#elif PACKETVER >= 20080701
+packetLen(0x012d, -1) // ZC_OPENSTORE
+#elif PACKETVER >= 20080624
+packetLen(0x012d, 26) // ZC_OPENSTORE
+#elif PACKETVER >= 20080617
+packetLen(0x012d, 3) // ZC_OPENSTORE
+#elif PACKETVER >= 20080610
+packetLen(0x012d, 8) // ZC_OPENSTORE
+#elif PACKETVER >= 20080603
+packetLen(0x012d, -1) // ZC_OPENSTORE
+#elif PACKETVER >= 20080528
+packetLen(0x012d, 30) // ZC_OPENSTORE
+#elif PACKETVER >= 20080520
+packetLen(0x012d, -1) // ZC_OPENSTORE
+#elif PACKETVER >= 20080513
+packetLen(0x012d, 34) // ZC_OPENSTORE
+#elif PACKETVER >= 20080507
+packetLen(0x012d, -1) // ZC_OPENSTORE
+#elif PACKETVER >= 20080429
+packetLen(0x012d, 4) // ZC_OPENSTORE
+#elif PACKETVER >= 20080422
+packetLen(0x012d, 81) // ZC_OPENSTORE
+#elif PACKETVER >= 20080415
+packetLen(0x012d, -1) // ZC_OPENSTORE
+#elif PACKETVER >= 20080408
+packetLen(0x012d, 33) // ZC_OPENSTORE
+#elif PACKETVER >= 20080401
+packetLen(0x012d, 3) // ZC_OPENSTORE
+#elif PACKETVER >= 20080325
+packetLen(0x012d, 6) // ZC_OPENSTORE
+#elif PACKETVER >= 20080318
+packetLen(0x012d, 2) // ZC_OPENSTORE
+#elif PACKETVER >= 20080311
+packetLen(0x012d, 30) // ZC_OPENSTORE
+#elif PACKETVER >= 20080304
+packetLen(0x012d, -1) // ZC_OPENSTORE
+#elif PACKETVER >= 20080219
+packetLen(0x012d, 14) // ZC_OPENSTORE
+#elif PACKETVER >= 20080124
+packetLen(0x012d, 26) // ZC_OPENSTORE
+#elif PACKETVER >= 20080102
+packetLen(0x012d, 4) // ZC_OPENSTORE
+#endif
+
+// Packet: 0x012e
+#if PACKETVER >= 20081217
+packetLen(0x012e, 7) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20081203
+packetLen(0x012e, 10) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20081119
+packetLen(0x012e, -1) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20081112
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20081105
+packetLen(0x012e, 6) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20081029
+packetLen(0x012e, -1) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20081022
+packetLen(0x012e, 33) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20081015
+packetLen(0x012e, -1) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20081008
+packetLen(0x012e, 5) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080910
+packetLen(0x012e, -1) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080903
+packetLen(0x012e, 6) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080827
+packetLen(0x012e, 4) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080820
+packetLen(0x012e, 3) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080806
+packetLen(0x012e, -1) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080730
+packetLen(0x012e, 6) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080722
+packetLen(0x012e, -1) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080715
+packetLen(0x012e, 5) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080708
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080701
+packetLen(0x012e, -1) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080624
+packetLen(0x012e, 6) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080617
+packetLen(0x012e, 31) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080520
+packetLen(0x012e, -1) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080513
+packetLen(0x012e, 5) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080507
+packetLen(0x012e, 102) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080429
+packetLen(0x012e, 3) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080422
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080415
+packetLen(0x012e, -1) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080408
+packetLen(0x012e, 26) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080401
+packetLen(0x012e, 7) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080325
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080318
+packetLen(0x012e, 4) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080311
+packetLen(0x012e, 14) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080304
+packetLen(0x012e, 6) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080219
+packetLen(0x012e, -1) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080102
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+#endif
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+#if PACKETVER >= 20081203
+packetLen(0x0130, -1) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20081126
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20081112
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0130, -1) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20081029
+packetLen(0x0130, 5) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20081015
+packetLen(0x0130, -1) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20081008
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080924
+packetLen(0x0130, -1) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080917
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080910
+packetLen(0x0130, 12) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080827
+packetLen(0x0130, -1) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080820
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080813
+packetLen(0x0130, -1) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080806
+packetLen(0x0130, 4) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080730
+packetLen(0x0130, -1) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080722
+packetLen(0x0130, 55) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080715
+packetLen(0x0130, -1) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080708
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080617
+packetLen(0x0130, -1) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080610
+packetLen(0x0130, 30) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080603
+packetLen(0x0130, 4) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080528
+packetLen(0x0130, -1) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080520
+packetLen(0x0130, 282) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080507
+packetLen(0x0130, -1) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080429
+packetLen(0x0130, 4) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080422
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080415
+packetLen(0x0130, 2) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080408
+packetLen(0x0130, -1) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080401
+packetLen(0x0130, 81) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080325
+packetLen(0x0130, 4) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080318
+packetLen(0x0130, 66) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080311
+packetLen(0x0130, -1) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080304
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080226
+packetLen(0x0130, 28) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080219
+packetLen(0x0130, 5) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080124
+packetLen(0x0130, 8) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080102
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+#endif
+
+// Packet: 0x0131
+#if PACKETVER >= 20081203
+packetLen(0x0131, -1) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20081126
+packetLen(0x0131, 15) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20081119
+packetLen(0x0131, -1) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20081112
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0131, -1) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20081029
+packetLen(0x0131, 3) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20081022
+packetLen(0x0131, 5) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20081015
+packetLen(0x0131, 10) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20081008
+packetLen(0x0131, 4) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080910
+packetLen(0x0131, -1) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080903
+packetLen(0x0131, 97) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080730
+packetLen(0x0131, -1) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080722
+packetLen(0x0131, 26) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080624
+packetLen(0x0131, -1) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080617
+packetLen(0x0131, 3) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080610
+packetLen(0x0131, 12) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080603
+packetLen(0x0131, 35) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080528
+packetLen(0x0131, -1) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080520
+packetLen(0x0131, 3) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080513
+packetLen(0x0131, -1) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080507
+packetLen(0x0131, 35) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080429
+packetLen(0x0131, 14) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080422
+packetLen(0x0131, 8) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080415
+packetLen(0x0131, 3) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080408
+packetLen(0x0131, -1) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080401
+packetLen(0x0131, 11) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080325
+packetLen(0x0131, 4) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080318
+packetLen(0x0131, 6) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080311
+packetLen(0x0131, -1) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x0131, 14) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080226
+packetLen(0x0131, 29) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080219
+packetLen(0x0131, 26) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080124
+packetLen(0x0131, -1) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+#endif
+
+// Packet: 0x0132
+#if PACKETVER >= 20081203
+packetLen(0x0132, -1) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20081126
+packetLen(0x0132, 55) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20081112
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0132, -1) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20081029
+packetLen(0x0132, 8) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20081022
+packetLen(0x0132, -1) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20081015
+packetLen(0x0132, 9) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080924
+packetLen(0x0132, -1) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080917
+packetLen(0x0132, 3) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080820
+packetLen(0x0132, -1) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080813
+packetLen(0x0132, 4) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080730
+packetLen(0x0132, -1) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080722
+packetLen(0x0132, 5) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080715
+packetLen(0x0132, 2) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080701
+packetLen(0x0132, -1) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080624
+packetLen(0x0132, 4) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080617
+packetLen(0x0132, 10) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080610
+packetLen(0x0132, 14) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080603
+packetLen(0x0132, 16) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080422
+packetLen(0x0132, -1) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080408
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080401
+packetLen(0x0132, -1) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080325
+packetLen(0x0132, 30) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080318
+packetLen(0x0132, 11) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080311
+packetLen(0x0132, -1) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x0132, 36) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080219
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080124
+packetLen(0x0132, 2) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+#endif
+
+// Packet: 0x0133
+#if PACKETVER >= 20081105
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20081029
+packetLen(0x0133, 102) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20081022
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20081015
+packetLen(0x0133, 28) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080910
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080903
+packetLen(0x0133, 6) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080827
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080820
+packetLen(0x0133, 59) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080813
+packetLen(0x0133, 67) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080806
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080730
+packetLen(0x0133, 11) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080722
+packetLen(0x0133, 5) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080715
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080708
+packetLen(0x0133, 4) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080701
+packetLen(0x0133, 11) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080617
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080610
+packetLen(0x0133, 7) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080603
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080528
+packetLen(0x0133, 8) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080520
+packetLen(0x0133, 57) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080513
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080507
+packetLen(0x0133, 26) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080429
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080422
+packetLen(0x0133, 14) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080415
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080408
+packetLen(0x0133, 5) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080401
+packetLen(0x0133, 24) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080311
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080304
+packetLen(0x0133, 26) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080226
+packetLen(0x0133, 10) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080219
+packetLen(0x0133, 8) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080124
+packetLen(0x0133, 3) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080102
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#endif
+
+// Packet: 0x0134
+#if PACKETVER >= 20081217
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20081203
+packetLen(0x0134, 6) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20081126
+packetLen(0x0134, 282) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20081119
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20081112
+packetLen(0x0134, 11) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20081029
+packetLen(0x0134, 15) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20081022
+packetLen(0x0134, 6) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20081015
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20081008
+packetLen(0x0134, 29) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20081001
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080924
+packetLen(0x0134, 6) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080917
+packetLen(0x0134, 21) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080910
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080903
+packetLen(0x0134, 282) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080827
+packetLen(0x0134, 6) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080820
+packetLen(0x0134, 39) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080722
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080715
+packetLen(0x0134, 10) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080701
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080624
+packetLen(0x0134, 29) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080617
+packetLen(0x0134, 8) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080610
+packetLen(0x0134, 67) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080603
+packetLen(0x0134, 30) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080528
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080520
+packetLen(0x0134, 7) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080513
+packetLen(0x0134, 282) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080507
+packetLen(0x0134, 16) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080422
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080415
+packetLen(0x0134, 71) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080408
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080401
+packetLen(0x0134, 28) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080325
+packetLen(0x0134, 7) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080318
+packetLen(0x0134, 20) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080311
+packetLen(0x0134, 26) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080226
+packetLen(0x0134, 3) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080219
+packetLen(0x0134, 4) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080102
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#endif
+
+// Packet: 0x0135
+#if PACKETVER >= 20081112
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0135, 3) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20081029
+packetLen(0x0135, 4) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20081001
+packetLen(0x0135, -1) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080924
+packetLen(0x0135, 114) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080917
+packetLen(0x0135, 12) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080910
+packetLen(0x0135, -1) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080903
+packetLen(0x0135, 22) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080827
+packetLen(0x0135, 16) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080820
+packetLen(0x0135, 71) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080813
+packetLen(0x0135, 14) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080715
+packetLen(0x0135, -1) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080708
+packetLen(0x0135, 5) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080624
+packetLen(0x0135, -1) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080617
+packetLen(0x0135, 13) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080610
+packetLen(0x0135, -1) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080603
+packetLen(0x0135, 60) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080520
+packetLen(0x0135, -1) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080513
+packetLen(0x0135, 9) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080507
+packetLen(0x0135, 8) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080429
+packetLen(0x0135, 29) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080422
+packetLen(0x0135, 4) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080415
+packetLen(0x0135, 2) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080401
+packetLen(0x0135, -1) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080325
+packetLen(0x0135, 6) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080311
+packetLen(0x0135, 2) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080226
+packetLen(0x0135, 6) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080219
+packetLen(0x0135, 65) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080124
+packetLen(0x0135, -1) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080102
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+#endif
+
+// Packet: 0x0136
+#if PACKETVER >= 20081217
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20081203
+packetLen(0x0136, 6) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20081112
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20081105
+packetLen(0x0136, 7) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20081029
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20081022
+packetLen(0x0136, 6) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20081015
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20081008
+packetLen(0x0136, 6) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080910
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080903
+packetLen(0x0136, 10) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080827
+packetLen(0x0136, 5) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080820
+packetLen(0x0136, 19) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080708
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080701
+packetLen(0x0136, 54) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080624
+packetLen(0x0136, 5) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080617
+packetLen(0x0136, 8) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080610
+packetLen(0x0136, 11) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080603
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080528
+packetLen(0x0136, 10) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080520
+packetLen(0x0136, 30) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080507
+packetLen(0x0136, 3) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080429
+packetLen(0x0136, 28) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080408
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080401
+packetLen(0x0136, 10) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080325
+packetLen(0x0136, 6) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080318
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x0136, 30) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x0136, 10) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x0136, 2) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+#endif
+
+// Packet: 0x0137
+#if PACKETVER >= 20081217
+packetLen(0x0137, -1) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20081203
+packetLen(0x0137, 2) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20081119
+packetLen(0x0137, -1) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20081112
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20081015
+packetLen(0x0137, -1) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20081008
+packetLen(0x0137, 10) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20081001
+packetLen(0x0137, 5) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080910
+packetLen(0x0137, -1) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080903
+packetLen(0x0137, 29) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080813
+packetLen(0x0137, -1) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080806
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080730
+packetLen(0x0137, 17) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080722
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080715
+packetLen(0x0137, -1) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080708
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080701
+packetLen(0x0137, 9) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080624
+packetLen(0x0137, -1) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080617
+packetLen(0x0137, 71) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080610
+packetLen(0x0137, -1) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080603
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080528
+packetLen(0x0137, 8) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080429
+packetLen(0x0137, -1) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080422
+packetLen(0x0137, 30) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080415
+packetLen(0x0137, 27) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080408
+packetLen(0x0137, 7) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080401
+packetLen(0x0137, -1) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080325
+packetLen(0x0137, 32) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080318
+packetLen(0x0137, 22) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080311
+packetLen(0x0137, 86) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080226
+packetLen(0x0137, 5) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080219
+packetLen(0x0137, 10) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080124
+packetLen(0x0137, 7) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080102
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+#endif
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+#if PACKETVER >= 20081203
+packetLen(0x0139, -1) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20081126
+packetLen(0x0139, 18) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20081112
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x0139, -1) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20081022
+packetLen(0x0139, 67) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20081015
+packetLen(0x0139, 18) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20081008
+packetLen(0x0139, -1) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20081001
+packetLen(0x0139, 6) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080924
+packetLen(0x0139, 7) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080903
+packetLen(0x0139, -1) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080827
+packetLen(0x0139, 30) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080820
+packetLen(0x0139, 2) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080813
+packetLen(0x0139, 10) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080806
+packetLen(0x0139, -1) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080730
+packetLen(0x0139, 7) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080722
+packetLen(0x0139, 26) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080715
+packetLen(0x0139, 6) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080708
+packetLen(0x0139, 12) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080701
+packetLen(0x0139, 26) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080624
+packetLen(0x0139, 10) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080617
+packetLen(0x0139, -1) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080610
+packetLen(0x0139, 5) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080603
+packetLen(0x0139, 2) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080513
+packetLen(0x0139, -1) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080507
+packetLen(0x0139, 9) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080429
+packetLen(0x0139, 28) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080422
+packetLen(0x0139, 29) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080415
+packetLen(0x0139, -1) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080408
+packetLen(0x0139, 11) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080401
+packetLen(0x0139, -1) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080325
+packetLen(0x0139, 3) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080318
+packetLen(0x0139, 14) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080311
+packetLen(0x0139, 31) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080304
+packetLen(0x0139, 6) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080226
+packetLen(0x0139, 81) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080219
+packetLen(0x0139, 6) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080124
+packetLen(0x0139, -1) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080102
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#endif
+
+// Packet: 0x013a
+#if PACKETVER >= 20081119
+packetLen(0x013a, -1) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20081112
+packetLen(0x013a, 39) // ZC_ATTACK_RANGE
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x013a, 8) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20081029
+packetLen(0x013a, 5) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20081022
+packetLen(0x013a, -1) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20081015
+packetLen(0x013a, 10) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20081008
+packetLen(0x013a, -1) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20081001
+packetLen(0x013a, 3) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080924
+packetLen(0x013a, 11) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080917
+packetLen(0x013a, -1) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080910
+packetLen(0x013a, 7) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080903
+packetLen(0x013a, -1) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080827
+packetLen(0x013a, 5) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080820
+packetLen(0x013a, 10) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080813
+packetLen(0x013a, 6) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080806
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080730
+packetLen(0x013a, 14) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080722
+packetLen(0x013a, 43) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080715
+packetLen(0x013a, -1) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080708
+packetLen(0x013a, 8) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080701
+packetLen(0x013a, -1) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080624
+packetLen(0x013a, 2) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080617
+packetLen(0x013a, 3) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080610
+packetLen(0x013a, 30) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080603
+packetLen(0x013a, 39) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080513
+packetLen(0x013a, -1) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080507
+packetLen(0x013a, 182) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080429
+packetLen(0x013a, 6) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080422
+packetLen(0x013a, -1) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080415
+packetLen(0x013a, 6) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080408
+packetLen(0x013a, 55) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080401
+packetLen(0x013a, 12) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080325
+packetLen(0x013a, 3) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080318
+packetLen(0x013a, -1) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080311
+packetLen(0x013a, 6) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080304
+packetLen(0x013a, 32) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080226
+packetLen(0x013a, 58) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080124
+packetLen(0x013a, -1) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080102
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+#endif
+
+// Packet: 0x013b
+#if PACKETVER >= 20081119
+packetLen(0x013b, -1) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20081112
+packetLen(0x013b, 33) // ZC_ACTION_FAILURE
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x013b, 6) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20081015
+packetLen(0x013b, -1) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20081008
+packetLen(0x013b, 2) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080924
+packetLen(0x013b, -1) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080917
+packetLen(0x013b, 6) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080827
+packetLen(0x013b, -1) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080820
+packetLen(0x013b, 11) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080813
+packetLen(0x013b, -1) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080806
+packetLen(0x013b, 7) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080730
+packetLen(0x013b, -1) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080722
+packetLen(0x013b, 65) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080715
+packetLen(0x013b, -1) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080708
+packetLen(0x013b, 6) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080701
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080624
+packetLen(0x013b, 22) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080617
+packetLen(0x013b, -1) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080610
+packetLen(0x013b, 22) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080603
+packetLen(0x013b, -1) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080528
+packetLen(0x013b, 5) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080520
+packetLen(0x013b, 10) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080513
+packetLen(0x013b, 18) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080507
+packetLen(0x013b, 2) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080429
+packetLen(0x013b, -1) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080422
+packetLen(0x013b, 15) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080415
+packetLen(0x013b, 7) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080408
+packetLen(0x013b, 30) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080401
+packetLen(0x013b, 6) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080325
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080318
+packetLen(0x013b, 6) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080311
+packetLen(0x013b, 23) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080304
+packetLen(0x013b, 22) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080226
+packetLen(0x013b, 6) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080219
+packetLen(0x013b, 16) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080124
+packetLen(0x013b, 2) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080102
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+#endif
+
+// Packet: 0x013c
+#if PACKETVER >= 20081203
+packetLen(0x013c, -1) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20081126
+packetLen(0x013c, 16) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20081112
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x013c, -1) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20081022
+packetLen(0x013c, 30) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20081008
+packetLen(0x013c, -1) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20081001
+packetLen(0x013c, 54) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080917
+packetLen(0x013c, -1) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080910
+packetLen(0x013c, 14) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080903
+packetLen(0x013c, 2) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080820
+packetLen(0x013c, -1) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080813
+packetLen(0x013c, 23) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080806
+packetLen(0x013c, 2) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080730
+packetLen(0x013c, 12) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080722
+packetLen(0x013c, -1) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080715
+packetLen(0x013c, 3) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080708
+packetLen(0x013c, -1) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080701
+packetLen(0x013c, 6) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080624
+packetLen(0x013c, -1) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080617
+packetLen(0x013c, 12) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080610
+packetLen(0x013c, -1) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080603
+packetLen(0x013c, 53) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080528
+packetLen(0x013c, 8) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080520
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080513
+packetLen(0x013c, 11) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080507
+packetLen(0x013c, 6) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080429
+packetLen(0x013c, -1) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080422
+packetLen(0x013c, 33) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080415
+packetLen(0x013c, 8) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080408
+packetLen(0x013c, 6) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080401
+packetLen(0x013c, 12) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080325
+packetLen(0x013c, 3) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080318
+packetLen(0x013c, -1) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080311
+packetLen(0x013c, 6) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080304
+packetLen(0x013c, 66) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080226
+packetLen(0x013c, -1) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080219
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080124
+packetLen(0x013c, 11) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080102
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+#endif
+
+// Packet: 0x013d
+#if PACKETVER >= 20081126
+packetLen(0x013d, -1) // ZC_RECOVERY
+#elif PACKETVER >= 20081119
+packetLen(0x013d, 79) // ZC_RECOVERY
+#elif PACKETVER >= 20081112
+packetLen(0x013d, 13) // ZC_RECOVERY
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x013d, -1) // ZC_RECOVERY
+#elif PACKETVER >= 20081029
+packetLen(0x013d, 53) // ZC_RECOVERY
+#elif PACKETVER >= 20080924
+packetLen(0x013d, -1) // ZC_RECOVERY
+#elif PACKETVER >= 20080917
+packetLen(0x013d, 6) // ZC_RECOVERY
+#elif PACKETVER >= 20080910
+packetLen(0x013d, -1) // ZC_RECOVERY
+#elif PACKETVER >= 20080903
+packetLen(0x013d, 2) // ZC_RECOVERY
+#elif PACKETVER >= 20080813
+packetLen(0x013d, -1) // ZC_RECOVERY
+#elif PACKETVER >= 20080806
+packetLen(0x013d, 3) // ZC_RECOVERY
+#elif PACKETVER >= 20080730
+packetLen(0x013d, 26) // ZC_RECOVERY
+#elif PACKETVER >= 20080722
+packetLen(0x013d, 6) // ZC_RECOVERY
+#elif PACKETVER >= 20080701
+packetLen(0x013d, -1) // ZC_RECOVERY
+#elif PACKETVER >= 20080624
+packetLen(0x013d, 3) // ZC_RECOVERY
+#elif PACKETVER >= 20080617
+packetLen(0x013d, -1) // ZC_RECOVERY
+#elif PACKETVER >= 20080610
+packetLen(0x013d, 7) // ZC_RECOVERY
+#elif PACKETVER >= 20080603
+packetLen(0x013d, 2) // ZC_RECOVERY
+#elif PACKETVER >= 20080528
+packetLen(0x013d, -1) // ZC_RECOVERY
+#elif PACKETVER >= 20080520
+packetLen(0x013d, 8) // ZC_RECOVERY
+#elif PACKETVER >= 20080513
+packetLen(0x013d, 31) // ZC_RECOVERY
+#elif PACKETVER >= 20080507
+packetLen(0x013d, -1) // ZC_RECOVERY
+#elif PACKETVER >= 20080429
+packetLen(0x013d, 10) // ZC_RECOVERY
+#elif PACKETVER >= 20080422
+packetLen(0x013d, -1) // ZC_RECOVERY
+#elif PACKETVER >= 20080415
+packetLen(0x013d, 26) // ZC_RECOVERY
+#elif PACKETVER >= 20080408
+packetLen(0x013d, -1) // ZC_RECOVERY
+#elif PACKETVER >= 20080401
+packetLen(0x013d, 6) // ZC_RECOVERY
+#elif PACKETVER >= 20080325
+packetLen(0x013d, 3) // ZC_RECOVERY
+#elif PACKETVER >= 20080318
+packetLen(0x013d, 282) // ZC_RECOVERY
+#elif PACKETVER >= 20080311
+packetLen(0x013d, 6) // ZC_RECOVERY
+#elif PACKETVER >= 20080304
+packetLen(0x013d, 3) // ZC_RECOVERY
+#elif PACKETVER >= 20080226
+packetLen(0x013d, 2) // ZC_RECOVERY
+#elif PACKETVER >= 20080219
+packetLen(0x013d, 6) // ZC_RECOVERY
+#elif PACKETVER >= 20080124
+packetLen(0x013d, -1) // ZC_RECOVERY
+#elif PACKETVER >= 20080102
+packetLen(0x013d, 6) // ZC_RECOVERY
+#endif
+
+// Packet: 0x013e
+#if PACKETVER >= 20081217
+packetLen(0x013e, 182) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20081203
+packetLen(0x013e, 186) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20081126
+packetLen(0x013e, -1) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20081119
+packetLen(0x013e, 32) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20081112
+packetLen(0x013e, 68) // ZC_USESKILL_ACK
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x013e, 6) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20081001
+packetLen(0x013e, -1) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080924
+packetLen(0x013e, 30) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080806
+packetLen(0x013e, -1) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080730
+packetLen(0x013e, 32) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080722
+packetLen(0x013e, -1) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080715
+packetLen(0x013e, 6) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080708
+packetLen(0x013e, -1) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080701
+packetLen(0x013e, 26) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080624
+packetLen(0x013e, 3) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080603
+packetLen(0x013e, -1) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080528
+packetLen(0x013e, 6) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080520
+packetLen(0x013e, 20) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080513
+packetLen(0x013e, 7) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080507
+packetLen(0x013e, 21) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080429
+packetLen(0x013e, 8) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080422
+packetLen(0x013e, 7) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080408
+packetLen(0x013e, 6) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080401
+packetLen(0x013e, -1) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080325
+packetLen(0x013e, 15) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080318
+packetLen(0x013e, 11) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080311
+packetLen(0x013e, 2) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080304
+packetLen(0x013e, 4) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080226
+packetLen(0x013e, -1) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080219
+packetLen(0x013e, 30) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080124
+packetLen(0x013e, -1) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080102
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+#endif
+
+// Packet: 0x013f
+#if PACKETVER >= 20081217
+packetLen(0x013f, -1) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20081203
+packetLen(0x013f, 2) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20081112
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x013f, 29) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20081015
+packetLen(0x013f, -1) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20081008
+packetLen(0x013f, 10) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080924
+packetLen(0x013f, -1) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080917
+packetLen(0x013f, 7) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080820
+packetLen(0x013f, -1) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080813
+packetLen(0x013f, 4) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080806
+packetLen(0x013f, 29) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080722
+packetLen(0x013f, -1) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080715
+packetLen(0x013f, 6) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080708
+packetLen(0x013f, 4) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080701
+packetLen(0x013f, 30) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080624
+packetLen(0x013f, -1) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080617
+packetLen(0x013f, 2) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080610
+packetLen(0x013f, 7) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080603
+packetLen(0x013f, 11) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080528
+packetLen(0x013f, 2) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080520
+packetLen(0x013f, -1) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080513
+packetLen(0x013f, 29) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080507
+packetLen(0x013f, 20) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080422
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080415
+packetLen(0x013f, -1) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080408
+packetLen(0x013f, 8) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080401
+packetLen(0x013f, -1) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080325
+packetLen(0x013f, 28) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080318
+packetLen(0x013f, 54) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080311
+packetLen(0x013f, 282) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080304
+packetLen(0x013f, 6) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080226
+packetLen(0x013f, 5) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080219
+packetLen(0x013f, 58) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080124
+packetLen(0x013f, 9) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080102
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+#endif
+
+// Packet: 0x0140
+#if PACKETVER >= 20081119
+packetLen(0x0140, -1) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20081112
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0140, 28) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20081029
+packetLen(0x0140, 18) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20081008
+packetLen(0x0140, -1) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20081001
+packetLen(0x0140, 10) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080924
+packetLen(0x0140, -1) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080917
+packetLen(0x0140, 12) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080910
+packetLen(0x0140, 60) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080903
+packetLen(0x0140, 10) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080827
+packetLen(0x0140, 14) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080820
+packetLen(0x0140, -1) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080813
+packetLen(0x0140, 30) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080806
+packetLen(0x0140, 4) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080730
+packetLen(0x0140, 6) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080722
+packetLen(0x0140, -1) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080715
+packetLen(0x0140, 6) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080701
+packetLen(0x0140, -1) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080624
+packetLen(0x0140, 2) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080617
+packetLen(0x0140, -1) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080610
+packetLen(0x0140, 11) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080603
+packetLen(0x0140, -1) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080528
+packetLen(0x0140, 6) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080520
+packetLen(0x0140, 8) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080513
+packetLen(0x0140, 6) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080507
+packetLen(0x0140, 4) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080429
+packetLen(0x0140, 3) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080422
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080415
+packetLen(0x0140, 7) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080408
+packetLen(0x0140, 53) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080401
+packetLen(0x0140, 10) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080325
+packetLen(0x0140, 27) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080318
+packetLen(0x0140, 33) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080311
+packetLen(0x0140, 3) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080304
+packetLen(0x0140, 6) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080226
+packetLen(0x0140, 11) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080219
+packetLen(0x0140, -1) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080124
+packetLen(0x0140, 2) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080102
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+#endif
+
+// Packet: 0x0141
+#if PACKETVER >= 20081217
+packetLen(0x0141, 8) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20081119
+packetLen(0x0141, -1) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20081112
+packetLen(0x0141, 26) // ZC_COUPLESTATUS
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0141, 57) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20081029
+packetLen(0x0141, -1) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20081022
+packetLen(0x0141, 3) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20081015
+packetLen(0x0141, -1) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20081008
+packetLen(0x0141, 8) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20081001
+packetLen(0x0141, 6) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080924
+packetLen(0x0141, -1) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080917
+packetLen(0x0141, 2) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080910
+packetLen(0x0141, -1) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080903
+packetLen(0x0141, 10) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080827
+packetLen(0x0141, -1) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080820
+packetLen(0x0141, 2) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080813
+packetLen(0x0141, 26) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080806
+packetLen(0x0141, 2) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080730
+packetLen(0x0141, 30) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080722
+packetLen(0x0141, 10) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080715
+packetLen(0x0141, 26) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080708
+packetLen(0x0141, -1) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080624
+packetLen(0x0141, 4) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080617
+packetLen(0x0141, -1) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080610
+packetLen(0x0141, 6) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080603
+packetLen(0x0141, 5) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080528
+packetLen(0x0141, 18) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080520
+packetLen(0x0141, 4) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080513
+packetLen(0x0141, -1) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080507
+packetLen(0x0141, 6) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080429
+packetLen(0x0141, 60) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080422
+packetLen(0x0141, -1) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080415
+packetLen(0x0141, 7) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080408
+packetLen(0x0141, -1) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080401
+packetLen(0x0141, 3) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080325
+packetLen(0x0141, -1) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080318
+packetLen(0x0141, 11) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080311
+packetLen(0x0141, 9) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080304
+packetLen(0x0141, 30) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080226
+packetLen(0x0141, 22) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080219
+packetLen(0x0141, 6) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080124
+packetLen(0x0141, 35) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080102
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+#endif
+
+// Packet: 0x0142
+#if PACKETVER >= 20081203
+packetLen(0x0142, -1) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20081126
+packetLen(0x0142, 2) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20081119
+packetLen(0x0142, -1) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20081112
+packetLen(0x0142, 11) // ZC_OPEN_EDITDLG
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0142, 3) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20081029
+packetLen(0x0142, 8) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20081022
+packetLen(0x0142, 10) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20081015
+packetLen(0x0142, -1) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20081008
+packetLen(0x0142, 43) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080827
+packetLen(0x0142, -1) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080820
+packetLen(0x0142, 10) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080730
+packetLen(0x0142, -1) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080722
+packetLen(0x0142, 8) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080715
+packetLen(0x0142, 7) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080708
+packetLen(0x0142, -1) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080701
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080617
+packetLen(0x0142, -1) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080610
+packetLen(0x0142, 32) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080603
+packetLen(0x0142, 2) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080528
+packetLen(0x0142, -1) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080520
+packetLen(0x0142, 7) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080513
+packetLen(0x0142, 15) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080422
+packetLen(0x0142, -1) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080408
+packetLen(0x0142, 11) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080401
+packetLen(0x0142, 9) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080325
+packetLen(0x0142, 67) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080318
+packetLen(0x0142, 26) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080311
+packetLen(0x0142, 30) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080304
+packetLen(0x0142, 4) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080226
+packetLen(0x0142, -1) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080219
+packetLen(0x0142, 2) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080124
+packetLen(0x0142, 3) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080102
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+#endif
+
+// Packet: 0x0143
+#if PACKETVER >= 20081112
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x0143, -1) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20081022
+packetLen(0x0143, 22) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20081015
+packetLen(0x0143, -1) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20081008
+packetLen(0x0143, 7) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080924
+packetLen(0x0143, 6) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080910
+packetLen(0x0143, -1) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080903
+packetLen(0x0143, 5) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080827
+packetLen(0x0143, 6) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080820
+packetLen(0x0143, -1) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080813
+packetLen(0x0143, 26) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080730
+packetLen(0x0143, -1) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080722
+packetLen(0x0143, 6) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080715
+packetLen(0x0143, 11) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080708
+packetLen(0x0143, 2) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080617
+packetLen(0x0143, -1) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080610
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080603
+packetLen(0x0143, 7) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080528
+packetLen(0x0143, 26) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080520
+packetLen(0x0143, -1) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080513
+packetLen(0x0143, 97) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080507
+packetLen(0x0143, 2) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080422
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080415
+packetLen(0x0143, 2) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080408
+packetLen(0x0143, 53) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080401
+packetLen(0x0143, 27) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080325
+packetLen(0x0143, 28) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080318
+packetLen(0x0143, -1) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080304
+packetLen(0x0143, 3) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080226
+packetLen(0x0143, 8) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080219
+packetLen(0x0143, -1) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080124
+packetLen(0x0143, 67) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080102
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+#endif
+
+// Packet: 0x0144
+#if PACKETVER >= 20081203
+packetLen(0x0144, 6) // ZC_COMPASS
+#elif PACKETVER >= 20081126
+packetLen(0x0144, -1) // ZC_COMPASS
+#elif PACKETVER >= 20081119
+packetLen(0x0144, 6) // ZC_COMPASS
+#elif PACKETVER >= 20081112
+packetLen(0x0144, 23) // ZC_COMPASS
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0144, 53) // ZC_COMPASS
+#elif PACKETVER >= 20081029
+packetLen(0x0144, 6) // ZC_COMPASS
+#elif PACKETVER >= 20081022
+packetLen(0x0144, 4) // ZC_COMPASS
+#elif PACKETVER >= 20081001
+packetLen(0x0144, -1) // ZC_COMPASS
+#elif PACKETVER >= 20080924
+packetLen(0x0144, 5) // ZC_COMPASS
+#elif PACKETVER >= 20080917
+packetLen(0x0144, 6) // ZC_COMPASS
+#elif PACKETVER >= 20080903
+packetLen(0x0144, 2) // ZC_COMPASS
+#elif PACKETVER >= 20080827
+packetLen(0x0144, -1) // ZC_COMPASS
+#elif PACKETVER >= 20080820
+packetLen(0x0144, 10) // ZC_COMPASS
+#elif PACKETVER >= 20080813
+packetLen(0x0144, 68) // ZC_COMPASS
+#elif PACKETVER >= 20080730
+packetLen(0x0144, -1) // ZC_COMPASS
+#elif PACKETVER >= 20080722
+packetLen(0x0144, 3) // ZC_COMPASS
+#elif PACKETVER >= 20080701
+packetLen(0x0144, -1) // ZC_COMPASS
+#elif PACKETVER >= 20080624
+packetLen(0x0144, 2) // ZC_COMPASS
+#elif PACKETVER >= 20080617
+packetLen(0x0144, -1) // ZC_COMPASS
+#elif PACKETVER >= 20080610
+packetLen(0x0144, 81) // ZC_COMPASS
+#elif PACKETVER >= 20080603
+packetLen(0x0144, 22) // ZC_COMPASS
+#elif PACKETVER >= 20080528
+packetLen(0x0144, 3) // ZC_COMPASS
+#elif PACKETVER >= 20080520
+packetLen(0x0144, -1) // ZC_COMPASS
+#elif PACKETVER >= 20080513
+packetLen(0x0144, 4) // ZC_COMPASS
+#elif PACKETVER >= 20080507
+packetLen(0x0144, 7) // ZC_COMPASS
+#elif PACKETVER >= 20080415
+packetLen(0x0144, -1) // ZC_COMPASS
+#elif PACKETVER >= 20080408
+packetLen(0x0144, 6) // ZC_COMPASS
+#elif PACKETVER >= 20080401
+packetLen(0x0144, 65) // ZC_COMPASS
+#elif PACKETVER >= 20080325
+packetLen(0x0144, 282) // ZC_COMPASS
+#elif PACKETVER >= 20080318
+packetLen(0x0144, 7) // ZC_COMPASS
+#elif PACKETVER >= 20080311
+packetLen(0x0144, 6) // ZC_COMPASS
+#elif PACKETVER >= 20080304
+packetLen(0x0144, 2) // ZC_COMPASS
+#elif PACKETVER >= 20080226
+packetLen(0x0144, 6) // ZC_COMPASS
+#elif PACKETVER >= 20080219
+packetLen(0x0144, 10) // ZC_COMPASS
+#elif PACKETVER >= 20080124
+packetLen(0x0144, 2) // ZC_COMPASS
+#elif PACKETVER >= 20080102
+packetLen(0x0144, 23) // ZC_COMPASS
+#endif
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+#if PACKETVER >= 20081203
+packetLen(0x0146, -1) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20081126
+packetLen(0x0146, 60) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20081119
+packetLen(0x0146, 14) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20081112
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x0146, -1) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20081015
+packetLen(0x0146, 20) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20081001
+packetLen(0x0146, -1) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080924
+packetLen(0x0146, 3) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080827
+packetLen(0x0146, -1) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080820
+packetLen(0x0146, 3) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080813
+packetLen(0x0146, -1) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080806
+packetLen(0x0146, 282) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080722
+packetLen(0x0146, -1) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080715
+packetLen(0x0146, 5) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080708
+packetLen(0x0146, 28) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080624
+packetLen(0x0146, -1) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080617
+packetLen(0x0146, 23) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080610
+packetLen(0x0146, 5) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080603
+packetLen(0x0146, -1) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080528
+packetLen(0x0146, 10) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080513
+packetLen(0x0146, -1) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080507
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080429
+packetLen(0x0146, 65) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080422
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080408
+packetLen(0x0146, -1) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080401
+packetLen(0x0146, 10) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080325
+packetLen(0x0146, 2) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080318
+packetLen(0x0146, 42) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080311
+packetLen(0x0146, 10) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080226
+packetLen(0x0146, 7) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080219
+packetLen(0x0146, 10) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080124
+packetLen(0x0146, 8) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080102
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+#endif
+
+// Packet: 0x0147
+#if PACKETVER >= 20081217
+packetLen(0x0147, 2) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20081126
+packetLen(0x0147, -1) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20081119
+packetLen(0x0147, 31) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20081112
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081008
+packetLen(0x0147, -1) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20081001
+packetLen(0x0147, 11) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080924
+packetLen(0x0147, -1) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080917
+packetLen(0x0147, 14) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080910
+packetLen(0x0147, -1) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080903
+packetLen(0x0147, 26) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080827
+packetLen(0x0147, 12) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080813
+packetLen(0x0147, -1) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080806
+packetLen(0x0147, 8) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080730
+packetLen(0x0147, 10) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080722
+packetLen(0x0147, -1) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080715
+packetLen(0x0147, 5) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080708
+packetLen(0x0147, -1) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080701
+packetLen(0x0147, 282) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080624
+packetLen(0x0147, -1) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080617
+packetLen(0x0147, 18) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080610
+packetLen(0x0147, 8) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080528
+packetLen(0x0147, -1) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080520
+packetLen(0x0147, 114) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080513
+packetLen(0x0147, 282) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080507
+packetLen(0x0147, 4) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080429
+packetLen(0x0147, 20) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080422
+packetLen(0x0147, -1) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080415
+packetLen(0x0147, 8) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080401
+packetLen(0x0147, -1) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080325
+packetLen(0x0147, 90) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080311
+packetLen(0x0147, 6) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080304
+packetLen(0x0147, 16) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080226
+packetLen(0x0147, 11) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080219
+packetLen(0x0147, -1) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080124
+packetLen(0x0147, 2) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080102
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+#endif
+
+// Packet: 0x0148
+#if PACKETVER >= 20081126
+packetLen(0x0148, -1) // ZC_RESURRECTION
+#elif PACKETVER >= 20081119
+packetLen(0x0148, 2) // ZC_RESURRECTION
+#elif PACKETVER >= 20081112
+packetLen(0x0148, 8) // ZC_RESURRECTION
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x0148, -1) // ZC_RESURRECTION
+#elif PACKETVER >= 20081022
+packetLen(0x0148, 4) // ZC_RESURRECTION
+#elif PACKETVER >= 20081008
+packetLen(0x0148, -1) // ZC_RESURRECTION
+#elif PACKETVER >= 20081001
+packetLen(0x0148, 81) // ZC_RESURRECTION
+#elif PACKETVER >= 20080924
+packetLen(0x0148, 4) // ZC_RESURRECTION
+#elif PACKETVER >= 20080820
+packetLen(0x0148, -1) // ZC_RESURRECTION
+#elif PACKETVER >= 20080813
+packetLen(0x0148, 6) // ZC_RESURRECTION
+#elif PACKETVER >= 20080806
+packetLen(0x0148, 2) // ZC_RESURRECTION
+#elif PACKETVER >= 20080730
+packetLen(0x0148, 26) // ZC_RESURRECTION
+#elif PACKETVER >= 20080722
+packetLen(0x0148, 54) // ZC_RESURRECTION
+#elif PACKETVER >= 20080715
+packetLen(0x0148, 10) // ZC_RESURRECTION
+#elif PACKETVER >= 20080708
+packetLen(0x0148, 2) // ZC_RESURRECTION
+#elif PACKETVER >= 20080617
+packetLen(0x0148, -1) // ZC_RESURRECTION
+#elif PACKETVER >= 20080610
+packetLen(0x0148, 2) // ZC_RESURRECTION
+#elif PACKETVER >= 20080528
+packetLen(0x0148, -1) // ZC_RESURRECTION
+#elif PACKETVER >= 20080513
+packetLen(0x0148, 6) // ZC_RESURRECTION
+#elif PACKETVER >= 20080507
+packetLen(0x0148, -1) // ZC_RESURRECTION
+#elif PACKETVER >= 20080429
+packetLen(0x0148, 14) // ZC_RESURRECTION
+#elif PACKETVER >= 20080422
+packetLen(0x0148, 2) // ZC_RESURRECTION
+#elif PACKETVER >= 20080415
+packetLen(0x0148, 39) // ZC_RESURRECTION
+#elif PACKETVER >= 20080408
+packetLen(0x0148, 10) // ZC_RESURRECTION
+#elif PACKETVER >= 20080401
+packetLen(0x0148, 7) // ZC_RESURRECTION
+#elif PACKETVER >= 20080325
+packetLen(0x0148, 10) // ZC_RESURRECTION
+#elif PACKETVER >= 20080318
+packetLen(0x0148, 6) // ZC_RESURRECTION
+#elif PACKETVER >= 20080311
+packetLen(0x0148, 54) // ZC_RESURRECTION
+#elif PACKETVER >= 20080304
+packetLen(0x0148, 282) // ZC_RESURRECTION
+#elif PACKETVER >= 20080226
+packetLen(0x0148, 6) // ZC_RESURRECTION
+#elif PACKETVER >= 20080219
+packetLen(0x0148, 4) // ZC_RESURRECTION
+#elif PACKETVER >= 20080124
+packetLen(0x0148, 3) // ZC_RESURRECTION
+#elif PACKETVER >= 20080102
+packetLen(0x0148, 8) // ZC_RESURRECTION
+#endif
+
+// Packet: 0x0149
+#if PACKETVER >= 20081126
+packetLen(0x0149, -1) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20081119
+packetLen(0x0149, 18) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20081112
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0149, -1) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20081029
+packetLen(0x0149, 3) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20081022
+packetLen(0x0149, -1) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20081015
+packetLen(0x0149, 6) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20081008
+packetLen(0x0149, 58) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20081001
+packetLen(0x0149, 35) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080917
+packetLen(0x0149, -1) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080910
+packetLen(0x0149, 20) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080903
+packetLen(0x0149, 7) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080708
+packetLen(0x0149, -1) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080701
+packetLen(0x0149, 14) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080624
+packetLen(0x0149, -1) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080610
+packetLen(0x0149, 8) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080603
+packetLen(0x0149, 7) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080528
+packetLen(0x0149, 6) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080520
+packetLen(0x0149, 27) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080513
+packetLen(0x0149, 71) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080429
+packetLen(0x0149, 6) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080422
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080415
+packetLen(0x0149, 5) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080408
+packetLen(0x0149, 17) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080401
+packetLen(0x0149, 6) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080325
+packetLen(0x0149, 2) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080318
+packetLen(0x0149, -1) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080311
+packetLen(0x0149, 6) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080304
+packetLen(0x0149, 5) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080226
+packetLen(0x0149, -1) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080219
+packetLen(0x0149, 53) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080124
+packetLen(0x0149, 4) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080102
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+#endif
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+#if PACKETVER >= 20081217
+packetLen(0x014c, 6) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20081112
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20081105
+packetLen(0x014c, 3) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20081029
+packetLen(0x014c, 26) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20081022
+packetLen(0x014c, 2) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080924
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080917
+packetLen(0x014c, 14) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080910
+packetLen(0x014c, 6) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080903
+packetLen(0x014c, 8) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080813
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080806
+packetLen(0x014c, 6) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080730
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080722
+packetLen(0x014c, 35) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080715
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080708
+packetLen(0x014c, 6) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080701
+packetLen(0x014c, 26) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080624
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080617
+packetLen(0x014c, 17) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080610
+packetLen(0x014c, 4) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080603
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080528
+packetLen(0x014c, 16) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080507
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080429
+packetLen(0x014c, 12) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080415
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080408
+packetLen(0x014c, 4) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080401
+packetLen(0x014c, 55) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080325
+packetLen(0x014c, 10) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080318
+packetLen(0x014c, 9) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080311
+packetLen(0x014c, 17) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080226
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080219
+packetLen(0x014c, 4) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080102
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+#endif
+
+// Packet: 0x014d
+#if PACKETVER >= 20081217
+packetLen(0x014d, 6) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20081203
+packetLen(0x014d, 27) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20081112
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x014d, 6) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20081022
+packetLen(0x014d, 65) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20081015
+packetLen(0x014d, 5) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20081008
+packetLen(0x014d, 10) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20081001
+packetLen(0x014d, -1) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080924
+packetLen(0x014d, 282) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080917
+packetLen(0x014d, -1) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080910
+packetLen(0x014d, 26) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080903
+packetLen(0x014d, 3) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080827
+packetLen(0x014d, -1) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080820
+packetLen(0x014d, 27) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080813
+packetLen(0x014d, 10) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080806
+packetLen(0x014d, 9) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080722
+packetLen(0x014d, -1) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080715
+packetLen(0x014d, 8) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080701
+packetLen(0x014d, -1) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080624
+packetLen(0x014d, 9) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080603
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080528
+packetLen(0x014d, 30) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080520
+packetLen(0x014d, 282) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080513
+packetLen(0x014d, -1) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080507
+packetLen(0x014d, 3) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080429
+packetLen(0x014d, 4) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080422
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080415
+packetLen(0x014d, 6) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080401
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080318
+packetLen(0x014d, 10) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080311
+packetLen(0x014d, 9) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080304
+packetLen(0x014d, 11) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080226
+packetLen(0x014d, 8) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080219
+packetLen(0x014d, 10) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080124
+packetLen(0x014d, 8) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080102
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+#endif
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+#if PACKETVER >= 20081217
+packetLen(0x014f, -1) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20081203
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20081112
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081008
+packetLen(0x014f, -1) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20081001
+packetLen(0x014f, 16) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080917
+packetLen(0x014f, -1) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080910
+packetLen(0x014f, 4) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080903
+packetLen(0x014f, -1) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080827
+packetLen(0x014f, 9) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080722
+packetLen(0x014f, -1) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080715
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080617
+packetLen(0x014f, -1) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080603
+packetLen(0x014f, 3) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080528
+packetLen(0x014f, 13) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080507
+packetLen(0x014f, -1) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080429
+packetLen(0x014f, 23) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080422
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080408
+packetLen(0x014f, -1) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080401
+packetLen(0x014f, 58) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080325
+packetLen(0x014f, 4) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080318
+packetLen(0x014f, 3) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080304
+packetLen(0x014f, -1) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080226
+packetLen(0x014f, 97) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080219
+packetLen(0x014f, -1) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080124
+packetLen(0x014f, 30) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080102
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+#endif
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+#if PACKETVER >= 20081217
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20081203
+packetLen(0x0154, 4) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20081119
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20081112
+packetLen(0x0154, 282) // ZC_MEMBERMGR_INFO
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0154, 4) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20081001
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080924
+packetLen(0x0154, 7) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080903
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080827
+packetLen(0x0154, 27) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080820
+packetLen(0x0154, 5) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080813
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080806
+packetLen(0x0154, 186) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080722
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080715
+packetLen(0x0154, 30) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080708
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080701
+packetLen(0x0154, 11) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080617
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080610
+packetLen(0x0154, 13) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080603
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080528
+packetLen(0x0154, 5) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080513
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080507
+packetLen(0x0154, 16) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080422
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080415
+packetLen(0x0154, 6) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080408
+packetLen(0x0154, 10) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080401
+packetLen(0x0154, 39) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080325
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080318
+packetLen(0x0154, 30) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080311
+packetLen(0x0154, 7) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080304
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080226
+packetLen(0x0154, 6) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080219
+packetLen(0x0154, 8) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080102
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+#endif
+
+// Packet: 0x0155
+#if PACKETVER >= 20081217
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20081203
+packetLen(0x0155, 8) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20081126
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20081119
+packetLen(0x0155, 7) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20081112
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20081105
+packetLen(0x0155, 30) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20081029
+packetLen(0x0155, 4) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20081015
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20081008
+packetLen(0x0155, 81) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20081001
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080924
+packetLen(0x0155, 2) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080917
+packetLen(0x0155, 3) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080910
+packetLen(0x0155, 12) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080813
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080806
+packetLen(0x0155, 3) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080730
+packetLen(0x0155, 11) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080715
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080708
+packetLen(0x0155, 8) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080624
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080617
+packetLen(0x0155, 12) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080610
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080603
+packetLen(0x0155, 12) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080520
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080513
+packetLen(0x0155, 27) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080507
+packetLen(0x0155, 10) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080422
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080408
+packetLen(0x0155, 6) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080325
+packetLen(0x0155, 22) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080311
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080304
+packetLen(0x0155, 8) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080226
+packetLen(0x0155, 66) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080219
+packetLen(0x0155, 15) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080102
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+#endif
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0158
+packetLen(0x0158, -1) // ZC_ACK_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+#if PACKETVER >= 20081217
+packetLen(0x0159, -1) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20081203
+packetLen(0x0159, 3) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20081112
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x0159, -1) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20081022
+packetLen(0x0159, 3) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20081008
+packetLen(0x0159, -1) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20081001
+packetLen(0x0159, 8) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080924
+packetLen(0x0159, -1) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080917
+packetLen(0x0159, 44) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080910
+packetLen(0x0159, 39) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080903
+packetLen(0x0159, -1) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080827
+packetLen(0x0159, 79) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080820
+packetLen(0x0159, 26) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080813
+packetLen(0x0159, 4) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080806
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080722
+packetLen(0x0159, -1) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080715
+packetLen(0x0159, 65) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080708
+packetLen(0x0159, -1) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080701
+packetLen(0x0159, 7) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080624
+packetLen(0x0159, 26) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080617
+packetLen(0x0159, -1) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080610
+packetLen(0x0159, 3) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080528
+packetLen(0x0159, -1) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080520
+packetLen(0x0159, 27) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080513
+packetLen(0x0159, -1) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080507
+packetLen(0x0159, 15) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080429
+packetLen(0x0159, 30) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080422
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080415
+packetLen(0x0159, -1) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080408
+packetLen(0x0159, 29) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080325
+packetLen(0x0159, -1) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080318
+packetLen(0x0159, 10) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x0159, 39) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x0159, 6) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x0159, 186) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x0159, -1) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080124
+packetLen(0x0159, 33) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+#endif
+
+// Packet: 0x015a
+#if PACKETVER >= 20081217
+packetLen(0x015a, 3) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20081203
+packetLen(0x015a, 60) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20081112
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x015a, -1) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20081029
+packetLen(0x015a, 30) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20081022
+packetLen(0x015a, 8) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20081015
+packetLen(0x015a, 26) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080827
+packetLen(0x015a, -1) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080820
+packetLen(0x015a, 28) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080806
+packetLen(0x015a, -1) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080730
+packetLen(0x015a, 6) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080722
+packetLen(0x015a, -1) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080715
+packetLen(0x015a, 6) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080617
+packetLen(0x015a, -1) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080610
+packetLen(0x015a, 24) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080603
+packetLen(0x015a, 2) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080528
+packetLen(0x015a, 31) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080520
+packetLen(0x015a, -1) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080513
+packetLen(0x015a, 15) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080429
+packetLen(0x015a, -1) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080422
+packetLen(0x015a, 4) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080415
+packetLen(0x015a, -1) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080408
+packetLen(0x015a, 14) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080401
+packetLen(0x015a, 23) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080325
+packetLen(0x015a, 33) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080318
+packetLen(0x015a, 26) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x015a, 27) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x015a, 3) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x015a, 6) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x015a, 8) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080124
+packetLen(0x015a, 26) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+#endif
+
+// Packet: 0x015b
+#if PACKETVER >= 20081217
+packetLen(0x015b, 11) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20081203
+packetLen(0x015b, 60) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20081126
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20081119
+packetLen(0x015b, 10) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20081112
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x015b, -1) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20081029
+packetLen(0x015b, 27) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20081008
+packetLen(0x015b, -1) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20081001
+packetLen(0x015b, 11) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080924
+packetLen(0x015b, -1) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080917
+packetLen(0x015b, 7) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080903
+packetLen(0x015b, -1) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080827
+packetLen(0x015b, 43) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080813
+packetLen(0x015b, -1) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080730
+packetLen(0x015b, 15) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080715
+packetLen(0x015b, -1) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080708
+packetLen(0x015b, 8) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080701
+packetLen(0x015b, 6) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080624
+packetLen(0x015b, -1) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080617
+packetLen(0x015b, 20) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080610
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080603
+packetLen(0x015b, 32) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080528
+packetLen(0x015b, -1) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080520
+packetLen(0x015b, 59) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080513
+packetLen(0x015b, 79) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080507
+packetLen(0x015b, 4) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080429
+packetLen(0x015b, -1) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080422
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080415
+packetLen(0x015b, 97) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080408
+packetLen(0x015b, 26) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080401
+packetLen(0x015b, 30) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080325
+packetLen(0x015b, 2) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080318
+packetLen(0x015b, 24) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x015b, 4) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x015b, 33) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x015b, 22) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x015b, 6) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080124
+packetLen(0x015b, -1) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+#endif
+
+// Packet: 0x015c
+#if PACKETVER >= 20081217
+packetLen(0x015c, -1) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20081203
+packetLen(0x015c, 8) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20081126
+packetLen(0x015c, -1) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20081119
+packetLen(0x015c, 10) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20081112
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x015c, 6) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20081029
+packetLen(0x015c, 27) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20081015
+packetLen(0x015c, -1) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20081008
+packetLen(0x015c, 2) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080917
+packetLen(0x015c, -1) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080910
+packetLen(0x015c, 23) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080903
+packetLen(0x015c, -1) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080827
+packetLen(0x015c, 4) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080813
+packetLen(0x015c, -1) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080806
+packetLen(0x015c, 14) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080730
+packetLen(0x015c, -1) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080722
+packetLen(0x015c, 27) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080715
+packetLen(0x015c, 7) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080708
+packetLen(0x015c, 15) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080624
+packetLen(0x015c, -1) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080603
+packetLen(0x015c, 6) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080528
+packetLen(0x015c, -1) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080520
+packetLen(0x015c, 7) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080507
+packetLen(0x015c, 6) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080429
+packetLen(0x015c, 2) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080415
+packetLen(0x015c, 8) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080401
+packetLen(0x015c, -1) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080325
+packetLen(0x015c, 18) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080318
+packetLen(0x015c, 57) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x015c, 30) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x015c, 15) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x015c, 3) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x015c, 5) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080124
+packetLen(0x015c, 14) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+#endif
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+#if PACKETVER >= 20081112
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x015e, -1) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20081015
+packetLen(0x015e, 8) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20081008
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20081001
+packetLen(0x015e, 14) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080924
+packetLen(0x015e, 32) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080910
+packetLen(0x015e, -1) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080903
+packetLen(0x015e, 24) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080827
+packetLen(0x015e, -1) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080820
+packetLen(0x015e, 30) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080722
+packetLen(0x015e, -1) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080715
+packetLen(0x015e, 10) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080701
+packetLen(0x015e, -1) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080624
+packetLen(0x015e, 30) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080610
+packetLen(0x015e, -1) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080603
+packetLen(0x015e, 4) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080520
+packetLen(0x015e, 3) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080513
+packetLen(0x015e, 2) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080507
+packetLen(0x015e, 9) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080429
+packetLen(0x015e, 10) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080422
+packetLen(0x015e, -1) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080415
+packetLen(0x015e, 32) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080408
+packetLen(0x015e, 30) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080401
+packetLen(0x015e, 10) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080325
+packetLen(0x015e, 15) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080318
+packetLen(0x015e, 28) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080311
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080304
+packetLen(0x015e, 3) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080226
+packetLen(0x015e, 54) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080219
+packetLen(0x015e, -1) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080124
+packetLen(0x015e, 16) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080102
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#endif
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+#if PACKETVER >= 20081217
+packetLen(0x0160, 37) // ZC_POSITION_INFO
+#elif PACKETVER >= 20081203
+packetLen(0x0160, 11) // ZC_POSITION_INFO
+#elif PACKETVER >= 20081112
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+#elif PACKETVER >= 20081105
+packetLen(0x0160, 2) // ZC_POSITION_INFO
+#elif PACKETVER >= 20081029
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+#elif PACKETVER >= 20081022
+packetLen(0x0160, 8) // ZC_POSITION_INFO
+#elif PACKETVER >= 20081008
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+#elif PACKETVER >= 20081001
+packetLen(0x0160, 6) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080924
+packetLen(0x0160, 102) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080917
+packetLen(0x0160, 8) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080910
+packetLen(0x0160, 6) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080903
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080827
+packetLen(0x0160, 67) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080806
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080730
+packetLen(0x0160, 9) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080722
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080715
+packetLen(0x0160, 14) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080708
+packetLen(0x0160, 26) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080701
+packetLen(0x0160, 5) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080624
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080617
+packetLen(0x0160, 11) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080610
+packetLen(0x0160, 5) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080603
+packetLen(0x0160, 186) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080528
+packetLen(0x0160, 2) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080520
+packetLen(0x0160, 8) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080507
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080429
+packetLen(0x0160, 6) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080408
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080401
+packetLen(0x0160, 8) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080325
+packetLen(0x0160, 4) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080318
+packetLen(0x0160, 14) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080304
+packetLen(0x0160, 26) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080226
+packetLen(0x0160, 2) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080219
+packetLen(0x0160, 102) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080124
+packetLen(0x0160, 6) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080102
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+#endif
+
+// Packet: 0x0161
+#if PACKETVER >= 20081126
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20081119
+packetLen(0x0161, 67) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20081112
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20081105
+packetLen(0x0161, 2) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20081029
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20081022
+packetLen(0x0161, 3) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20081015
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20081008
+packetLen(0x0161, 10) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20081001
+packetLen(0x0161, 30) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080917
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080910
+packetLen(0x0161, 3) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080903
+packetLen(0x0161, 7) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080827
+packetLen(0x0161, 3) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080806
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080730
+packetLen(0x0161, 14) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080722
+packetLen(0x0161, 39) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080701
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080624
+packetLen(0x0161, 16) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080617
+packetLen(0x0161, 2) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080610
+packetLen(0x0161, 5) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080603
+packetLen(0x0161, 16) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080528
+packetLen(0x0161, 6) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080520
+packetLen(0x0161, 2) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080513
+packetLen(0x0161, 6) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080507
+packetLen(0x0161, 4) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080422
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080415
+packetLen(0x0161, 15) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080408
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080401
+packetLen(0x0161, 6) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080325
+packetLen(0x0161, 282) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080318
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080311
+packetLen(0x0161, 30) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080304
+packetLen(0x0161, 7) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080226
+packetLen(0x0161, 21) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080219
+packetLen(0x0161, 2) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080124
+packetLen(0x0161, 8) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080102
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#endif
+
+// Packet: 0x0162
+#if PACKETVER >= 20081119
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20081112
+packetLen(0x0162, 11) // ZC_GUILD_SKILLINFO
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0162, 8) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20081022
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20081015
+packetLen(0x0162, 2) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20081008
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20081001
+packetLen(0x0162, 6) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080924
+packetLen(0x0162, 7) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080917
+packetLen(0x0162, 79) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080806
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080730
+packetLen(0x0162, 44) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080708
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080701
+packetLen(0x0162, 81) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080624
+packetLen(0x0162, 23) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080617
+packetLen(0x0162, 22) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080610
+packetLen(0x0162, 18) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080603
+packetLen(0x0162, 30) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080528
+packetLen(0x0162, 66) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080520
+packetLen(0x0162, 10) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080513
+packetLen(0x0162, 3) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080507
+packetLen(0x0162, 30) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080429
+packetLen(0x0162, 6) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080422
+packetLen(0x0162, 13) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080415
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080408
+packetLen(0x0162, 3) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080401
+packetLen(0x0162, 282) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080325
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080311
+packetLen(0x0162, 6) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080226
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080219
+packetLen(0x0162, 26) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080124
+packetLen(0x0162, 6) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080102
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+#endif
+
+// Packet: 0x0163
+#if PACKETVER >= 20081203
+packetLen(0x0163, -1) // ZC_BAN_LIST
+#elif PACKETVER >= 20081126
+packetLen(0x0163, 30) // ZC_BAN_LIST
+#elif PACKETVER >= 20081119
+packetLen(0x0163, -1) // ZC_BAN_LIST
+#elif PACKETVER >= 20081112
+packetLen(0x0163, 86) // ZC_BAN_LIST
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0163, 28) // ZC_BAN_LIST
+#elif PACKETVER >= 20081029
+packetLen(0x0163, 6) // ZC_BAN_LIST
+#elif PACKETVER >= 20081022
+packetLen(0x0163, 54) // ZC_BAN_LIST
+#elif PACKETVER >= 20081015
+packetLen(0x0163, 2) // ZC_BAN_LIST
+#elif PACKETVER >= 20081008
+packetLen(0x0163, -1) // ZC_BAN_LIST
+#elif PACKETVER >= 20081001
+packetLen(0x0163, 282) // ZC_BAN_LIST
+#elif PACKETVER >= 20080910
+packetLen(0x0163, -1) // ZC_BAN_LIST
+#elif PACKETVER >= 20080903
+packetLen(0x0163, 20) // ZC_BAN_LIST
+#elif PACKETVER >= 20080820
+packetLen(0x0163, 3) // ZC_BAN_LIST
+#elif PACKETVER >= 20080813
+packetLen(0x0163, 6) // ZC_BAN_LIST
+#elif PACKETVER >= 20080806
+packetLen(0x0163, -1) // ZC_BAN_LIST
+#elif PACKETVER >= 20080730
+packetLen(0x0163, 114) // ZC_BAN_LIST
+#elif PACKETVER >= 20080722
+packetLen(0x0163, 71) // ZC_BAN_LIST
+#elif PACKETVER >= 20080715
+packetLen(0x0163, -1) // ZC_BAN_LIST
+#elif PACKETVER >= 20080708
+packetLen(0x0163, 6) // ZC_BAN_LIST
+#elif PACKETVER >= 20080610
+packetLen(0x0163, -1) // ZC_BAN_LIST
+#elif PACKETVER >= 20080603
+packetLen(0x0163, 44) // ZC_BAN_LIST
+#elif PACKETVER >= 20080528
+packetLen(0x0163, 68) // ZC_BAN_LIST
+#elif PACKETVER >= 20080520
+packetLen(0x0163, -1) // ZC_BAN_LIST
+#elif PACKETVER >= 20080513
+packetLen(0x0163, 42) // ZC_BAN_LIST
+#elif PACKETVER >= 20080507
+packetLen(0x0163, -1) // ZC_BAN_LIST
+#elif PACKETVER >= 20080429
+packetLen(0x0163, 2) // ZC_BAN_LIST
+#elif PACKETVER >= 20080422
+packetLen(0x0163, 86) // ZC_BAN_LIST
+#elif PACKETVER >= 20080415
+packetLen(0x0163, 6) // ZC_BAN_LIST
+#elif PACKETVER >= 20080318
+packetLen(0x0163, -1) // ZC_BAN_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x0163, 8) // ZC_BAN_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x0163, 6) // ZC_BAN_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x0163, 4) // ZC_BAN_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x0163, 6) // ZC_BAN_LIST
+#elif PACKETVER >= 20080124
+packetLen(0x0163, 30) // ZC_BAN_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x0163, -1) // ZC_BAN_LIST
+#endif
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+#if PACKETVER >= 20081203
+packetLen(0x0165, -1) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20081126
+packetLen(0x0165, 21) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20081119
+packetLen(0x0165, 17) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20081112
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x0165, 7) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20081022
+packetLen(0x0165, -1) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20081015
+packetLen(0x0165, 8) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080903
+packetLen(0x0165, -1) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080827
+packetLen(0x0165, 39) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080820
+packetLen(0x0165, 6) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080813
+packetLen(0x0165, -1) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080806
+packetLen(0x0165, 4) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080708
+packetLen(0x0165, -1) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080701
+packetLen(0x0165, 54) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080617
+packetLen(0x0165, -1) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080610
+packetLen(0x0165, 4) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080603
+packetLen(0x0165, -1) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080528
+packetLen(0x0165, 114) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080507
+packetLen(0x0165, -1) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080429
+packetLen(0x0165, 11) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080422
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080415
+packetLen(0x0165, 10) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080408
+packetLen(0x0165, 182) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080401
+packetLen(0x0165, 5) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080325
+packetLen(0x0165, 97) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080318
+packetLen(0x0165, 26) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x0165, 102) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x0165, -1) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x0165, 4) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x0165, 29) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080124
+packetLen(0x0165, 6) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+#endif
+
+// Packet: 0x0166
+#if PACKETVER >= 20081217
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20081203
+packetLen(0x0166, 8) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20081119
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20081112
+packetLen(0x0166, 114) // ZC_POSITION_ID_NAME_INFO
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0166, 6) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20081015
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20081008
+packetLen(0x0166, 3) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080924
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080917
+packetLen(0x0166, 30) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080910
+packetLen(0x0166, 13) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080820
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080813
+packetLen(0x0166, 14) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080806
+packetLen(0x0166, 11) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080730
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080722
+packetLen(0x0166, 2) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080715
+packetLen(0x0166, 14) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080708
+packetLen(0x0166, 2) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080701
+packetLen(0x0166, 4) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080617
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080610
+packetLen(0x0166, 27) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080603
+packetLen(0x0166, 2) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080528
+packetLen(0x0166, 4) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080520
+packetLen(0x0166, 16) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080513
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080507
+packetLen(0x0166, 7) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080429
+packetLen(0x0166, 6) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080415
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080401
+packetLen(0x0166, 6) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080325
+packetLen(0x0166, 3) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080318
+packetLen(0x0166, 68) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080311
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080304
+packetLen(0x0166, 5) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080226
+packetLen(0x0166, 18) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080102
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+#endif
+
+// Packet: 0x0167
+#if PACKETVER >= 20081217
+packetLen(0x0167, 26) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20081203
+packetLen(0x0167, 7) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20081112
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x0167, -1) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20081015
+packetLen(0x0167, 30) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20081008
+packetLen(0x0167, 14) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20081001
+packetLen(0x0167, 2) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080917
+packetLen(0x0167, -1) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080910
+packetLen(0x0167, 11) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080813
+packetLen(0x0167, -1) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080806
+packetLen(0x0167, 7) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080730
+packetLen(0x0167, 282) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080617
+packetLen(0x0167, -1) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080610
+packetLen(0x0167, 9) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080603
+packetLen(0x0167, 67) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080528
+packetLen(0x0167, 26) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080520
+packetLen(0x0167, 86) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080513
+packetLen(0x0167, 6) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080507
+packetLen(0x0167, 4) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080429
+packetLen(0x0167, -1) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080422
+packetLen(0x0167, 42) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080415
+packetLen(0x0167, 7) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080408
+packetLen(0x0167, -1) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080401
+packetLen(0x0167, 4) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080318
+packetLen(0x0167, 14) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x0167, 7) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x0167, 6) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x0167, 71) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x0167, 2) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080124
+packetLen(0x0167, 58) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+#endif
+
+// Packet: 0x0168
+#if PACKETVER >= 20081203
+packetLen(0x0168, -1) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20081126
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20081119
+packetLen(0x0168, 8) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20081112
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081008
+packetLen(0x0168, -1) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20081001
+packetLen(0x0168, 7) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080827
+packetLen(0x0168, -1) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080813
+packetLen(0x0168, 6) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080730
+packetLen(0x0168, -1) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080722
+packetLen(0x0168, 2) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080715
+packetLen(0x0168, 11) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080708
+packetLen(0x0168, -1) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080701
+packetLen(0x0168, 6) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080624
+packetLen(0x0168, 9) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080617
+packetLen(0x0168, -1) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080610
+packetLen(0x0168, 11) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080603
+packetLen(0x0168, -1) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080528
+packetLen(0x0168, 282) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080520
+packetLen(0x0168, 15) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080513
+packetLen(0x0168, 2) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080507
+packetLen(0x0168, 10) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080429
+packetLen(0x0168, -1) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080422
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080415
+packetLen(0x0168, 2) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080408
+packetLen(0x0168, -1) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080401
+packetLen(0x0168, 10) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080325
+packetLen(0x0168, 11) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080318
+packetLen(0x0168, -1) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x0168, 10) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x0168, 22) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x0168, 3) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x0168, 6) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080124
+packetLen(0x0168, 4) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+#endif
+
+// Packet: 0x0169
+#if PACKETVER >= 20081217
+packetLen(0x0169, 2) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20081203
+packetLen(0x0169, 6) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20081126
+packetLen(0x0169, 10) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20081112
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0169, -1) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20081029
+packetLen(0x0169, 8) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20081022
+packetLen(0x0169, -1) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20081015
+packetLen(0x0169, 6) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20081008
+packetLen(0x0169, -1) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20081001
+packetLen(0x0169, 39) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080924
+packetLen(0x0169, 53) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080917
+packetLen(0x0169, 19) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080827
+packetLen(0x0169, -1) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080820
+packetLen(0x0169, 5) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080813
+packetLen(0x0169, 4) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080806
+packetLen(0x0169, 30) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080730
+packetLen(0x0169, 10) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080722
+packetLen(0x0169, -1) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080715
+packetLen(0x0169, 5) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080708
+packetLen(0x0169, 9) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080701
+packetLen(0x0169, 5) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080610
+packetLen(0x0169, -1) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080603
+packetLen(0x0169, 4) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080528
+packetLen(0x0169, 2) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080520
+packetLen(0x0169, -1) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080513
+packetLen(0x0169, 9) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080507
+packetLen(0x0169, 282) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080429
+packetLen(0x0169, 5) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080422
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080408
+packetLen(0x0169, -1) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080401
+packetLen(0x0169, 2) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080325
+packetLen(0x0169, 5) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080318
+packetLen(0x0169, 6) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x0169, -1) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x0169, 4) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x0169, 6) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080124
+packetLen(0x0169, -1) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+#endif
+
+// Packet: 0x016a
+#if PACKETVER >= 20081217
+packetLen(0x016a, 5) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20081203
+packetLen(0x016a, -1) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20081126
+packetLen(0x016a, 26) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20081112
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x016a, 102) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20081029
+packetLen(0x016a, 19) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20081022
+packetLen(0x016a, 7) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080917
+packetLen(0x016a, -1) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080910
+packetLen(0x016a, 8) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080820
+packetLen(0x016a, -1) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080813
+packetLen(0x016a, 6) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080722
+packetLen(0x016a, -1) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080715
+packetLen(0x016a, 4) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080701
+packetLen(0x016a, -1) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080624
+packetLen(0x016a, 6) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080617
+packetLen(0x016a, 10) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080610
+packetLen(0x016a, 4) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080603
+packetLen(0x016a, -1) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080528
+packetLen(0x016a, 6) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080520
+packetLen(0x016a, 24) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080513
+packetLen(0x016a, 6) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080429
+packetLen(0x016a, -1) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080422
+packetLen(0x016a, 22) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080415
+packetLen(0x016a, -1) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080408
+packetLen(0x016a, 97) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080401
+packetLen(0x016a, 7) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080325
+packetLen(0x016a, -1) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080318
+packetLen(0x016a, 44) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x016a, 32) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x016a, 26) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x016a, 2) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x016a, 4) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080124
+packetLen(0x016a, 3) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+#endif
+
+// Packet: 0x016b
+#if PACKETVER >= 20081217
+packetLen(0x016b, 6) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20081203
+packetLen(0x016b, 34) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20081126
+packetLen(0x016b, -1) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20081112
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x016b, 43) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080924
+packetLen(0x016b, -1) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080917
+packetLen(0x016b, 30) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080910
+packetLen(0x016b, 5) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080813
+packetLen(0x016b, -1) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080806
+packetLen(0x016b, 11) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080722
+packetLen(0x016b, -1) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080715
+packetLen(0x016b, 26) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080708
+packetLen(0x016b, 8) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080624
+packetLen(0x016b, -1) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080617
+packetLen(0x016b, 6) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080429
+packetLen(0x016b, -1) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080422
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080415
+packetLen(0x016b, 4) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080408
+packetLen(0x016b, 8) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080401
+packetLen(0x016b, -1) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080325
+packetLen(0x016b, 27) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080318
+packetLen(0x016b, -1) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x016b, 22) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x016b, 20) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x016b, 6) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x016b, -1) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080124
+packetLen(0x016b, 11) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+#endif
+
+// Packet: 0x016c
+#if PACKETVER >= 20081217
+packetLen(0x016c, -1) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20081126
+packetLen(0x016c, 6) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20081112
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x016c, 29) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20081008
+packetLen(0x016c, -1) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20081001
+packetLen(0x016c, 8) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080917
+packetLen(0x016c, -1) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080910
+packetLen(0x016c, 6) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080903
+packetLen(0x016c, 26) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080820
+packetLen(0x016c, -1) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080813
+packetLen(0x016c, 14) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080806
+packetLen(0x016c, -1) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080730
+packetLen(0x016c, 7) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080722
+packetLen(0x016c, 18) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080715
+packetLen(0x016c, 90) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080708
+packetLen(0x016c, 6) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080701
+packetLen(0x016c, 7) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080624
+packetLen(0x016c, 6) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080617
+packetLen(0x016c, 10) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080610
+packetLen(0x016c, 28) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080603
+packetLen(0x016c, -1) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080528
+packetLen(0x016c, 54) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080520
+packetLen(0x016c, 30) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080513
+packetLen(0x016c, 14) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080507
+packetLen(0x016c, -1) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080429
+packetLen(0x016c, 57) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080422
+packetLen(0x016c, 10) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080408
+packetLen(0x016c, -1) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080401
+packetLen(0x016c, 6) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080325
+packetLen(0x016c, 32) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080318
+packetLen(0x016c, 22) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080311
+packetLen(0x016c, 4) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080304
+packetLen(0x016c, 2) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080226
+packetLen(0x016c, 8) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080219
+packetLen(0x016c, 6) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080124
+packetLen(0x016c, 9) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080102
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+#endif
+
+// Packet: 0x016d
+#if PACKETVER >= 20081217
+packetLen(0x016d, 11) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20081112
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x016d, 10) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20081029
+packetLen(0x016d, -1) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20081022
+packetLen(0x016d, 30) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20081015
+packetLen(0x016d, -1) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20081008
+packetLen(0x016d, 15) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20081001
+packetLen(0x016d, 10) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080917
+packetLen(0x016d, -1) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080910
+packetLen(0x016d, 97) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080827
+packetLen(0x016d, -1) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080820
+packetLen(0x016d, 67) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080813
+packetLen(0x016d, 2) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080806
+packetLen(0x016d, -1) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080730
+packetLen(0x016d, 20) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080715
+packetLen(0x016d, -1) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080708
+packetLen(0x016d, 7) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080701
+packetLen(0x016d, 3) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080617
+packetLen(0x016d, -1) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080610
+packetLen(0x016d, 3) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080603
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080528
+packetLen(0x016d, -1) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080520
+packetLen(0x016d, 13) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080507
+packetLen(0x016d, -1) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080429
+packetLen(0x016d, 10) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080422
+packetLen(0x016d, -1) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080415
+packetLen(0x016d, 4) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080408
+packetLen(0x016d, 3) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080401
+packetLen(0x016d, 4) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080325
+packetLen(0x016d, 6) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080318
+packetLen(0x016d, 19) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080311
+packetLen(0x016d, 22) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080304
+packetLen(0x016d, 8) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080226
+packetLen(0x016d, 3) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080219
+packetLen(0x016d, 30) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080124
+packetLen(0x016d, 2) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080102
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+#endif
+
+// Packet: 0x016e
+#if PACKETVER >= 20081217
+packetLen(0x016e, 2) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20081203
+packetLen(0x016e, -1) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20081126
+packetLen(0x016e, 3) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20081119
+packetLen(0x016e, -1) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20081112
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x016e, 6) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20081029
+packetLen(0x016e, 10) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20081022
+packetLen(0x016e, -1) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20081015
+packetLen(0x016e, 7) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20081008
+packetLen(0x016e, 39) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20081001
+packetLen(0x016e, -1) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080924
+packetLen(0x016e, 6) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080917
+packetLen(0x016e, -1) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080910
+packetLen(0x016e, 4) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080903
+packetLen(0x016e, 3) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080827
+packetLen(0x016e, -1) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080820
+packetLen(0x016e, 12) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080813
+packetLen(0x016e, 9) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080806
+packetLen(0x016e, -1) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080730
+packetLen(0x016e, 2) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080715
+packetLen(0x016e, -1) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080708
+packetLen(0x016e, 5) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080701
+packetLen(0x016e, -1) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080624
+packetLen(0x016e, 2) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080617
+packetLen(0x016e, 39) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080520
+packetLen(0x016e, -1) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080513
+packetLen(0x016e, 15) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080429
+packetLen(0x016e, -1) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080422
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080415
+packetLen(0x016e, 42) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080401
+packetLen(0x016e, -1) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080325
+packetLen(0x016e, 2) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080318
+packetLen(0x016e, 3) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080311
+packetLen(0x016e, 4) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080304
+packetLen(0x016e, 30) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080226
+packetLen(0x016e, 4) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080219
+packetLen(0x016e, 3) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080124
+packetLen(0x016e, -1) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080102
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+#endif
+
+// Packet: 0x016f
+#if PACKETVER >= 20081217
+packetLen(0x016f, -1) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20081203
+packetLen(0x016f, 2) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20081126
+packetLen(0x016f, 32) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20081112
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x016f, 26) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20081029
+packetLen(0x016f, 7) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20081001
+packetLen(0x016f, -1) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080924
+packetLen(0x016f, 11) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080917
+packetLen(0x016f, 43) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080903
+packetLen(0x016f, -1) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080827
+packetLen(0x016f, 2) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080820
+packetLen(0x016f, 9) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080806
+packetLen(0x016f, -1) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080730
+packetLen(0x016f, 81) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080715
+packetLen(0x016f, -1) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080708
+packetLen(0x016f, 30) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080701
+packetLen(0x016f, 44) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080624
+packetLen(0x016f, -1) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080617
+packetLen(0x016f, 2) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080603
+packetLen(0x016f, -1) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080528
+packetLen(0x016f, 2) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080507
+packetLen(0x016f, -1) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080429
+packetLen(0x016f, 14) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080422
+packetLen(0x016f, -1) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080415
+packetLen(0x016f, 6) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080408
+packetLen(0x016f, 7) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080401
+packetLen(0x016f, -1) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080325
+packetLen(0x016f, 22) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080318
+packetLen(0x016f, 9) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080311
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080304
+packetLen(0x016f, 12) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080226
+packetLen(0x016f, 6) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080219
+packetLen(0x016f, 4) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080124
+packetLen(0x016f, 29) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080102
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+#endif
+
+// Packet: 0x0170
+#if PACKETVER >= 20081217
+packetLen(0x0170, 26) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20081126
+packetLen(0x0170, -1) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20081119
+packetLen(0x0170, 30) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20081112
+packetLen(0x0170, 44) // CZ_REQ_ALLY_GUILD
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x0170, -1) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20081022
+packetLen(0x0170, 19) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20081015
+packetLen(0x0170, 23) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20081008
+packetLen(0x0170, 10) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20081001
+packetLen(0x0170, 2) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080917
+packetLen(0x0170, -1) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080910
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080903
+packetLen(0x0170, 3) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080813
+packetLen(0x0170, -1) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080806
+packetLen(0x0170, 4) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080730
+packetLen(0x0170, 6) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080722
+packetLen(0x0170, 17) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080715
+packetLen(0x0170, -1) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080708
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080701
+packetLen(0x0170, -1) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080624
+packetLen(0x0170, 20) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080528
+packetLen(0x0170, -1) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080520
+packetLen(0x0170, 30) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080513
+packetLen(0x0170, 102) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080429
+packetLen(0x0170, 6) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080422
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080415
+packetLen(0x0170, 26) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080408
+packetLen(0x0170, 22) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080401
+packetLen(0x0170, 282) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080318
+packetLen(0x0170, 6) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x0170, 4) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x0170, 81) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x0170, 30) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x0170, 60) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080124
+packetLen(0x0170, -1) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+#endif
+
+// Packet: 0x0171
+#if PACKETVER >= 20081217
+packetLen(0x0171, 6) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20081126
+packetLen(0x0171, -1) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20081112
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x0171, -1) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20081022
+packetLen(0x0171, 8) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20081015
+packetLen(0x0171, -1) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20081008
+packetLen(0x0171, 17) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20081001
+packetLen(0x0171, 282) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080924
+packetLen(0x0171, -1) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080917
+packetLen(0x0171, 4) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080910
+packetLen(0x0171, -1) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080903
+packetLen(0x0171, 10) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080827
+packetLen(0x0171, -1) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080820
+packetLen(0x0171, 282) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080813
+packetLen(0x0171, 2) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080806
+packetLen(0x0171, -1) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080730
+packetLen(0x0171, 58) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080708
+packetLen(0x0171, -1) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080701
+packetLen(0x0171, 8) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080624
+packetLen(0x0171, 3) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080617
+packetLen(0x0171, -1) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080610
+packetLen(0x0171, 10) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080603
+packetLen(0x0171, 282) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080528
+packetLen(0x0171, 6) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080520
+packetLen(0x0171, 7) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080415
+packetLen(0x0171, -1) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080408
+packetLen(0x0171, 5) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080401
+packetLen(0x0171, 23) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080325
+packetLen(0x0171, 8) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080318
+packetLen(0x0171, -1) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x0171, 3) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x0171, 6) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x0171, 67) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x0171, 6) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080124
+packetLen(0x0171, 10) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+#endif
+
+// Packet: 0x0172
+#if PACKETVER >= 20081217
+packetLen(0x0172, -1) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20081203
+packetLen(0x0172, 5) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20081126
+packetLen(0x0172, 282) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20081112
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0172, 30) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080730
+packetLen(0x0172, -1) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080722
+packetLen(0x0172, 14) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080715
+packetLen(0x0172, -1) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080708
+packetLen(0x0172, 102) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080624
+packetLen(0x0172, -1) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080617
+packetLen(0x0172, 102) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080610
+packetLen(0x0172, 3) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080520
+packetLen(0x0172, -1) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080513
+packetLen(0x0172, 6) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080507
+packetLen(0x0172, 28) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080429
+packetLen(0x0172, -1) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080422
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080415
+packetLen(0x0172, 2) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080408
+packetLen(0x0172, -1) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080401
+packetLen(0x0172, 6) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080325
+packetLen(0x0172, 14) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080318
+packetLen(0x0172, -1) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x0172, 3) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x0172, 53) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x0172, -1) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x0172, 22) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080124
+packetLen(0x0172, 14) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+#endif
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+#if PACKETVER >= 20081126
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20081119
+packetLen(0x0177, 7) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20081112
+packetLen(0x0177, 3) // ZC_ITEMIDENTIFY_LIST
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0177, 8) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20081015
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20081008
+packetLen(0x0177, 6) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20081001
+packetLen(0x0177, 5) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080924
+packetLen(0x0177, 3) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080917
+packetLen(0x0177, 8) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080910
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080903
+packetLen(0x0177, 7) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080827
+packetLen(0x0177, 182) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080820
+packetLen(0x0177, 6) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080813
+packetLen(0x0177, 71) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080730
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080722
+packetLen(0x0177, 3) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080715
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080708
+packetLen(0x0177, 7) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080701
+packetLen(0x0177, 2) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080624
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080617
+packetLen(0x0177, 4) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080610
+packetLen(0x0177, 31) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080603
+packetLen(0x0177, 58) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080528
+packetLen(0x0177, 4) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080513
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080507
+packetLen(0x0177, 30) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080429
+packetLen(0x0177, 26) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080422
+packetLen(0x0177, 28) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080415
+packetLen(0x0177, 114) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080408
+packetLen(0x0177, 10) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080401
+packetLen(0x0177, 4) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080325
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080318
+packetLen(0x0177, 11) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x0177, 27) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x0177, 34) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x0177, 3) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x0177, 2) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080124
+packetLen(0x0177, 30) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+#endif
+
+// Packet: 0x0178
+#if PACKETVER >= 20081112
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081008
+packetLen(0x0178, -1) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20081001
+packetLen(0x0178, 14) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080917
+packetLen(0x0178, -1) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080910
+packetLen(0x0178, 6) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080827
+packetLen(0x0178, -1) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080820
+packetLen(0x0178, 90) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080806
+packetLen(0x0178, -1) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080730
+packetLen(0x0178, 2) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080722
+packetLen(0x0178, 8) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080715
+packetLen(0x0178, 55) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080624
+packetLen(0x0178, -1) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080617
+packetLen(0x0178, 10) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080603
+packetLen(0x0178, -1) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080528
+packetLen(0x0178, 33) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080520
+packetLen(0x0178, 7) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080513
+packetLen(0x0178, -1) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080429
+packetLen(0x0178, 6) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080415
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080408
+packetLen(0x0178, -1) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080401
+packetLen(0x0178, 7) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080325
+packetLen(0x0178, 6) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080318
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080311
+packetLen(0x0178, 11) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080304
+packetLen(0x0178, 6) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080226
+packetLen(0x0178, -1) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080219
+packetLen(0x0178, 30) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080124
+packetLen(0x0178, 68) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080102
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+#endif
+
+// Packet: 0x0179
+#if PACKETVER >= 20081217
+packetLen(0x0179, 53) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20081203
+packetLen(0x0179, -1) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20081126
+packetLen(0x0179, 26) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20081119
+packetLen(0x0179, 10) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20081112
+packetLen(0x0179, 6) // ZC_ACK_ITEMIDENTIFY
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0179, 3) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20081022
+packetLen(0x0179, -1) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20081015
+packetLen(0x0179, 26) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20081008
+packetLen(0x0179, 6) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20081001
+packetLen(0x0179, -1) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080924
+packetLen(0x0179, 4) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080917
+packetLen(0x0179, 9) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080910
+packetLen(0x0179, 8) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080903
+packetLen(0x0179, -1) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080827
+packetLen(0x0179, 60) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080820
+packetLen(0x0179, -1) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080813
+packetLen(0x0179, 102) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080806
+packetLen(0x0179, 28) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080730
+packetLen(0x0179, 27) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080722
+packetLen(0x0179, 2) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080715
+packetLen(0x0179, 29) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080708
+packetLen(0x0179, -1) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080701
+packetLen(0x0179, 59) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080624
+packetLen(0x0179, -1) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080617
+packetLen(0x0179, 6) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080610
+packetLen(0x0179, -1) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080603
+packetLen(0x0179, 27) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080528
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080520
+packetLen(0x0179, 11) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080513
+packetLen(0x0179, -1) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080507
+packetLen(0x0179, 43) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080429
+packetLen(0x0179, 6) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080422
+packetLen(0x0179, 55) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080415
+packetLen(0x0179, 4) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080408
+packetLen(0x0179, 6) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080401
+packetLen(0x0179, 10) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080325
+packetLen(0x0179, -1) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080318
+packetLen(0x0179, 8) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080311
+packetLen(0x0179, 2) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080304
+packetLen(0x0179, 6) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080219
+packetLen(0x0179, 3) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080124
+packetLen(0x0179, 15) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080102
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+#endif
+
+// Packet: 0x017a
+#if PACKETVER >= 20081217
+packetLen(0x017a, 24) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20081203
+packetLen(0x017a, -1) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20081126
+packetLen(0x017a, 3) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20081112
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x017a, 71) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20081022
+packetLen(0x017a, -1) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20081015
+packetLen(0x017a, 6) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080917
+packetLen(0x017a, -1) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080910
+packetLen(0x017a, 26) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080820
+packetLen(0x017a, -1) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080813
+packetLen(0x017a, 66) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080730
+packetLen(0x017a, -1) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080722
+packetLen(0x017a, 22) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080708
+packetLen(0x017a, -1) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080701
+packetLen(0x017a, 29) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080610
+packetLen(0x017a, -1) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080603
+packetLen(0x017a, 28) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080528
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080520
+packetLen(0x017a, 6) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080513
+packetLen(0x017a, -1) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080507
+packetLen(0x017a, 6) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080429
+packetLen(0x017a, 5) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080415
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080408
+packetLen(0x017a, 2) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080401
+packetLen(0x017a, 31) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080325
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080318
+packetLen(0x017a, 8) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x017a, 6) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x017a, 13) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x017a, 30) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080124
+packetLen(0x017a, 7) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+#endif
+
+// Packet: 0x017b
+#if PACKETVER >= 20081217
+packetLen(0x017b, 10) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20081203
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20081126
+packetLen(0x017b, 4) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20081119
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20081112
+packetLen(0x017b, 10) // ZC_ITEMCOMPOSITION_LIST
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20081015
+packetLen(0x017b, 3) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20081008
+packetLen(0x017b, 6) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080917
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080910
+packetLen(0x017b, 32) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080827
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080820
+packetLen(0x017b, 10) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080813
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080806
+packetLen(0x017b, 282) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080730
+packetLen(0x017b, 8) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080708
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080701
+packetLen(0x017b, 2) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080617
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080610
+packetLen(0x017b, 2) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080603
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080528
+packetLen(0x017b, 4) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080520
+packetLen(0x017b, 68) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080513
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080507
+packetLen(0x017b, 53) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080429
+packetLen(0x017b, 8) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080415
+packetLen(0x017b, 6) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080408
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080401
+packetLen(0x017b, 6) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080325
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080318
+packetLen(0x017b, 11) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x017b, 3) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x017b, 4) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x017b, 9) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x017b, 18) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080124
+packetLen(0x017b, 3) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+#endif
+
+// Packet: 0x017c
+#if PACKETVER >= 20081119
+packetLen(0x017c, -1) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20081112
+packetLen(0x017c, 79) // CZ_REQ_ITEMCOMPOSITION
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x017c, 2) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20081029
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20081022
+packetLen(0x017c, 8) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20081015
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20081008
+packetLen(0x017c, -1) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20081001
+packetLen(0x017c, 4) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080924
+packetLen(0x017c, 5) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080917
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080910
+packetLen(0x017c, 54) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080903
+packetLen(0x017c, 4) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080813
+packetLen(0x017c, -1) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080806
+packetLen(0x017c, 12) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080730
+packetLen(0x017c, 102) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080715
+packetLen(0x017c, -1) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080708
+packetLen(0x017c, 7) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080701
+packetLen(0x017c, -1) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080624
+packetLen(0x017c, 55) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080617
+packetLen(0x017c, 26) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080610
+packetLen(0x017c, -1) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080603
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080528
+packetLen(0x017c, 21) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080520
+packetLen(0x017c, 39) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080513
+packetLen(0x017c, 7) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080422
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080408
+packetLen(0x017c, -1) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080401
+packetLen(0x017c, 31) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080311
+packetLen(0x017c, -1) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080304
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080226
+packetLen(0x017c, -1) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080219
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080124
+packetLen(0x017c, -1) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080102
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+#endif
+
+// Packet: 0x017d
+#if PACKETVER >= 20081217
+packetLen(0x017d, 2) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20081203
+packetLen(0x017d, -1) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20081126
+packetLen(0x017d, 6) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20081112
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x017d, -1) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20081029
+packetLen(0x017d, 9) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20081022
+packetLen(0x017d, 14) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20081015
+packetLen(0x017d, 16) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20081008
+packetLen(0x017d, 53) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20081001
+packetLen(0x017d, 71) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080910
+packetLen(0x017d, -1) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080903
+packetLen(0x017d, 4) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080827
+packetLen(0x017d, 18) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080813
+packetLen(0x017d, -1) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080806
+packetLen(0x017d, 10) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080730
+packetLen(0x017d, -1) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080722
+packetLen(0x017d, 97) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080715
+packetLen(0x017d, -1) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080708
+packetLen(0x017d, 31) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080701
+packetLen(0x017d, 33) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080610
+packetLen(0x017d, -1) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080603
+packetLen(0x017d, 3) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080528
+packetLen(0x017d, -1) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080520
+packetLen(0x017d, 4) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080422
+packetLen(0x017d, -1) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080415
+packetLen(0x017d, 11) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080408
+packetLen(0x017d, 6) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080401
+packetLen(0x017d, 8) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080325
+packetLen(0x017d, -1) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080318
+packetLen(0x017d, 28) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080311
+packetLen(0x017d, 34) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080304
+packetLen(0x017d, 30) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080219
+packetLen(0x017d, 8) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080124
+packetLen(0x017d, 10) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080102
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+#endif
+
+// Packet: 0x017e
+#if PACKETVER >= 20081217
+packetLen(0x017e, 2) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20081203
+packetLen(0x017e, 3) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20081119
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20081112
+packetLen(0x017e, 282) // CZ_GUILD_CHAT
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x017e, 67) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20081022
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20081015
+packetLen(0x017e, 10) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20081008
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20081001
+packetLen(0x017e, 9) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080924
+packetLen(0x017e, 6) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080917
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080910
+packetLen(0x017e, 8) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080903
+packetLen(0x017e, 32) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080827
+packetLen(0x017e, 11) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080820
+packetLen(0x017e, 4) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080813
+packetLen(0x017e, 8) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080806
+packetLen(0x017e, 30) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080730
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080722
+packetLen(0x017e, 26) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080715
+packetLen(0x017e, 6) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080708
+packetLen(0x017e, 11) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080701
+packetLen(0x017e, 4) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080624
+packetLen(0x017e, 6) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080617
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080610
+packetLen(0x017e, 2) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080603
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080528
+packetLen(0x017e, 29) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080520
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080513
+packetLen(0x017e, 3) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080507
+packetLen(0x017e, 32) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080429
+packetLen(0x017e, 3) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080422
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080415
+packetLen(0x017e, 14) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080408
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080401
+packetLen(0x017e, 4) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080325
+packetLen(0x017e, 14) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080318
+packetLen(0x017e, 3) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080311
+packetLen(0x017e, 31) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080304
+packetLen(0x017e, 10) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080226
+packetLen(0x017e, 7) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080219
+packetLen(0x017e, 28) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080124
+packetLen(0x017e, 7) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080102
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+#endif
+
+// Packet: 0x017f
+#if PACKETVER >= 20081217
+packetLen(0x017f, 30) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20081203
+packetLen(0x017f, 54) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20081126
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20081119
+packetLen(0x017f, 4) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20081112
+packetLen(0x017f, 20) // ZC_GUILD_CHAT
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20081022
+packetLen(0x017f, 10) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20081008
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20081001
+packetLen(0x017f, 8) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080924
+packetLen(0x017f, 30) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080917
+packetLen(0x017f, 11) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080910
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080903
+packetLen(0x017f, 10) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080730
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080722
+packetLen(0x017f, 282) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080715
+packetLen(0x017f, 53) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080708
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080624
+packetLen(0x017f, 2) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080520
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080513
+packetLen(0x017f, 54) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080507
+packetLen(0x017f, 11) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080429
+packetLen(0x017f, 4) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080415
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080408
+packetLen(0x017f, 20) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080401
+packetLen(0x017f, 6) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080325
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080318
+packetLen(0x017f, 4) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080311
+packetLen(0x017f, 35) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080304
+packetLen(0x017f, 14) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080226
+packetLen(0x017f, 30) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080219
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080124
+packetLen(0x017f, 30) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080102
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+#endif
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+#if PACKETVER >= 20081126
+packetLen(0x0188, -1) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20081119
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20081112
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0188, -1) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20081029
+packetLen(0x0188, 10) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20081022
+packetLen(0x0188, -1) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20081015
+packetLen(0x0188, 67) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20081001
+packetLen(0x0188, -1) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080924
+packetLen(0x0188, 3) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080917
+packetLen(0x0188, 6) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080910
+packetLen(0x0188, -1) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080903
+packetLen(0x0188, 6) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080827
+packetLen(0x0188, -1) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080820
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080813
+packetLen(0x0188, -1) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080806
+packetLen(0x0188, 4) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080715
+packetLen(0x0188, -1) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080708
+packetLen(0x0188, 2) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080617
+packetLen(0x0188, -1) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080610
+packetLen(0x0188, 29) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080603
+packetLen(0x0188, 14) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080528
+packetLen(0x0188, 3) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080520
+packetLen(0x0188, -1) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080513
+packetLen(0x0188, 10) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080507
+packetLen(0x0188, 2) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080415
+packetLen(0x0188, -1) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080408
+packetLen(0x0188, 7) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080401
+packetLen(0x0188, 6) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080325
+packetLen(0x0188, 30) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080318
+packetLen(0x0188, 3) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080311
+packetLen(0x0188, -1) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080304
+packetLen(0x0188, 2) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080226
+packetLen(0x0188, 30) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080219
+packetLen(0x0188, 27) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080124
+packetLen(0x0188, -1) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080102
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+#endif
+
+// Packet: 0x0189
+#if PACKETVER >= 20081217
+packetLen(0x0189, -1) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20081203
+packetLen(0x0189, 5) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20081119
+packetLen(0x0189, -1) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20081112
+packetLen(0x0189, 9) // ZC_NOTIFY_MAPINFO
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x0189, -1) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20081015
+packetLen(0x0189, 90) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080917
+packetLen(0x0189, -1) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080910
+packetLen(0x0189, 16) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080903
+packetLen(0x0189, -1) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080827
+packetLen(0x0189, 2) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080820
+packetLen(0x0189, -1) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080813
+packetLen(0x0189, 2) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080806
+packetLen(0x0189, 6) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080730
+packetLen(0x0189, 10) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080722
+packetLen(0x0189, 7) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080715
+packetLen(0x0189, 6) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080624
+packetLen(0x0189, -1) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080617
+packetLen(0x0189, 55) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080610
+packetLen(0x0189, -1) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080603
+packetLen(0x0189, 7) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080528
+packetLen(0x0189, 24) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080520
+packetLen(0x0189, -1) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080513
+packetLen(0x0189, 10) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080415
+packetLen(0x0189, -1) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080408
+packetLen(0x0189, 58) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080401
+packetLen(0x0189, -1) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080325
+packetLen(0x0189, 31) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080318
+packetLen(0x0189, 30) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080311
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080304
+packetLen(0x0189, -1) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080226
+packetLen(0x0189, 17) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080219
+packetLen(0x0189, 8) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080124
+packetLen(0x0189, -1) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080102
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+#endif
+
+// Packet: 0x018a
+#if PACKETVER >= 20081217
+packetLen(0x018a, 8) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20081112
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081008
+packetLen(0x018a, -1) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20081001
+packetLen(0x018a, 3) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080924
+packetLen(0x018a, 186) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080910
+packetLen(0x018a, 2) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080806
+packetLen(0x018a, -1) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080730
+packetLen(0x018a, 14) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080722
+packetLen(0x018a, -1) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080715
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080708
+packetLen(0x018a, 10) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080701
+packetLen(0x018a, 6) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080624
+packetLen(0x018a, 14) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080617
+packetLen(0x018a, 18) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080610
+packetLen(0x018a, -1) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080603
+packetLen(0x018a, 2) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080528
+packetLen(0x018a, -1) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080520
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080429
+packetLen(0x018a, -1) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080422
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080415
+packetLen(0x018a, 2) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080408
+packetLen(0x018a, -1) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080401
+packetLen(0x018a, 32) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080325
+packetLen(0x018a, 6) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080318
+packetLen(0x018a, 14) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080311
+packetLen(0x018a, -1) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080304
+packetLen(0x018a, 7) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080226
+packetLen(0x018a, 2) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080219
+packetLen(0x018a, 7) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080124
+packetLen(0x018a, 5) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080102
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+#endif
+
+// Packet: 0x018b
+#if PACKETVER >= 20081203
+packetLen(0x018b, -1) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20081126
+packetLen(0x018b, 14) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20081119
+packetLen(0x018b, 60) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20081112
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x018b, 18) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20081029
+packetLen(0x018b, 5) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20081008
+packetLen(0x018b, -1) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20081001
+packetLen(0x018b, 2) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080924
+packetLen(0x018b, -1) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080917
+packetLen(0x018b, 10) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080903
+packetLen(0x018b, -1) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080827
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080820
+packetLen(0x018b, 3) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080813
+packetLen(0x018b, 30) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080722
+packetLen(0x018b, -1) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080715
+packetLen(0x018b, 8) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080708
+packetLen(0x018b, 65) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080701
+packetLen(0x018b, 66) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080610
+packetLen(0x018b, -1) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080603
+packetLen(0x018b, 182) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080528
+packetLen(0x018b, 12) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080520
+packetLen(0x018b, -1) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080513
+packetLen(0x018b, 3) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080507
+packetLen(0x018b, -1) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080429
+packetLen(0x018b, 102) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080408
+packetLen(0x018b, -1) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080401
+packetLen(0x018b, 3) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080325
+packetLen(0x018b, 6) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080318
+packetLen(0x018b, 30) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080311
+packetLen(0x018b, 7) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080304
+packetLen(0x018b, -1) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080226
+packetLen(0x018b, 10) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080124
+packetLen(0x018b, 6) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080102
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+#endif
+
+// Packet: 0x018c
+#if PACKETVER >= 20081217
+packetLen(0x018c, -1) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20081203
+packetLen(0x018c, 4) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20081126
+packetLen(0x018c, -1) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20081119
+packetLen(0x018c, 26) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20081112
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x018c, 4) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20081029
+packetLen(0x018c, 33) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20081022
+packetLen(0x018c, -1) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20081015
+packetLen(0x018c, 2) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20081008
+packetLen(0x018c, 58) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20081001
+packetLen(0x018c, -1) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080924
+packetLen(0x018c, 26) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080917
+packetLen(0x018c, 33) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080910
+packetLen(0x018c, -1) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080903
+packetLen(0x018c, 2) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080827
+packetLen(0x018c, -1) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080820
+packetLen(0x018c, 7) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080813
+packetLen(0x018c, -1) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080806
+packetLen(0x018c, 30) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080722
+packetLen(0x018c, -1) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080715
+packetLen(0x018c, 59) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080708
+packetLen(0x018c, 4) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080701
+packetLen(0x018c, 14) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080624
+packetLen(0x018c, 8) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080617
+packetLen(0x018c, 31) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080610
+packetLen(0x018c, 282) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080603
+packetLen(0x018c, 8) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080528
+packetLen(0x018c, -1) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080520
+packetLen(0x018c, 102) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080513
+packetLen(0x018c, -1) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080507
+packetLen(0x018c, 21) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080401
+packetLen(0x018c, -1) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080325
+packetLen(0x018c, 8) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080318
+packetLen(0x018c, 6) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080304
+packetLen(0x018c, -1) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080226
+packetLen(0x018c, 2) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080219
+packetLen(0x018c, -1) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080124
+packetLen(0x018c, 6) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080102
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+#endif
+
+// Packet: 0x018d
+#if PACKETVER >= 20081203
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20081126
+packetLen(0x018d, 6) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080910
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080903
+packetLen(0x018d, 8) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080827
+packetLen(0x018d, 14) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080820
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080813
+packetLen(0x018d, 3) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080806
+packetLen(0x018d, 6) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080730
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080722
+packetLen(0x018d, 6) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080715
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080708
+packetLen(0x018d, 3) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080701
+packetLen(0x018d, 2) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080624
+packetLen(0x018d, 8) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080617
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080610
+packetLen(0x018d, 65) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080603
+packetLen(0x018d, 9) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080520
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080513
+packetLen(0x018d, 2) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080507
+packetLen(0x018d, 6) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080429
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080422
+packetLen(0x018d, 59) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080415
+packetLen(0x018d, 79) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080408
+packetLen(0x018d, 7) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080401
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080318
+packetLen(0x018d, 6) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x018d, 8) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x018d, 39) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x018d, 22) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x018d, 4) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+#endif
+
+// Packet: 0x018e
+#if PACKETVER >= 20081217
+packetLen(0x018e, -1) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20081203
+packetLen(0x018e, 71) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20081126
+packetLen(0x018e, -1) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20081119
+packetLen(0x018e, 3) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20081112
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x018e, -1) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20081015
+packetLen(0x018e, 14) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20081008
+packetLen(0x018e, -1) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20081001
+packetLen(0x018e, 16) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080924
+packetLen(0x018e, 4) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080917
+packetLen(0x018e, -1) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080910
+packetLen(0x018e, 11) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080827
+packetLen(0x018e, -1) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080820
+packetLen(0x018e, 6) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080813
+packetLen(0x018e, -1) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080806
+packetLen(0x018e, 58) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080730
+packetLen(0x018e, 23) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080722
+packetLen(0x018e, 30) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080715
+packetLen(0x018e, 6) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080708
+packetLen(0x018e, 4) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080701
+packetLen(0x018e, -1) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080624
+packetLen(0x018e, 14) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080617
+packetLen(0x018e, -1) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080610
+packetLen(0x018e, 59) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080603
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080528
+packetLen(0x018e, 5) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080520
+packetLen(0x018e, 11) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080513
+packetLen(0x018e, 2) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080429
+packetLen(0x018e, -1) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080422
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080415
+packetLen(0x018e, -1) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080408
+packetLen(0x018e, 27) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080401
+packetLen(0x018e, 3) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080325
+packetLen(0x018e, -1) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080318
+packetLen(0x018e, 65) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080311
+packetLen(0x018e, -1) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080304
+packetLen(0x018e, 58) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080226
+packetLen(0x018e, 4) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080219
+packetLen(0x018e, 39) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080124
+packetLen(0x018e, 3) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080102
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+#endif
+
+// Packet: 0x018f
+#if PACKETVER >= 20081217
+packetLen(0x018f, -1) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20081203
+packetLen(0x018f, 3) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20081126
+packetLen(0x018f, -1) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20081119
+packetLen(0x018f, 28) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20081112
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x018f, -1) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20081029
+packetLen(0x018f, 14) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20081022
+packetLen(0x018f, -1) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20081015
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20081008
+packetLen(0x018f, -1) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20081001
+packetLen(0x018f, 4) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080924
+packetLen(0x018f, -1) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080917
+packetLen(0x018f, 3) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080827
+packetLen(0x018f, -1) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080820
+packetLen(0x018f, 18) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080806
+packetLen(0x018f, -1) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080730
+packetLen(0x018f, 32) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080722
+packetLen(0x018f, -1) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080715
+packetLen(0x018f, 4) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080708
+packetLen(0x018f, 21) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080617
+packetLen(0x018f, -1) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080610
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080603
+packetLen(0x018f, 12) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080520
+packetLen(0x018f, -1) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080513
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080507
+packetLen(0x018f, 7) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080429
+packetLen(0x018f, 14) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080422
+packetLen(0x018f, 10) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080415
+packetLen(0x018f, 30) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080408
+packetLen(0x018f, -1) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080401
+packetLen(0x018f, 11) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080325
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080318
+packetLen(0x018f, 7) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080311
+packetLen(0x018f, 11) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080304
+packetLen(0x018f, 3) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080226
+packetLen(0x018f, -1) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080219
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080124
+packetLen(0x018f, 8) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080102
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+#endif
+
+// Packet: 0x0190
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+#if PACKETVER >= 20081217
+packetLen(0x0194, 3) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20081203
+packetLen(0x0194, -1) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20081126
+packetLen(0x0194, 3) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20081112
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0194, 20) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20081022
+packetLen(0x0194, -1) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20081015
+packetLen(0x0194, 114) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20081008
+packetLen(0x0194, -1) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20081001
+packetLen(0x0194, 8) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080820
+packetLen(0x0194, -1) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080813
+packetLen(0x0194, 7) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080806
+packetLen(0x0194, 13) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080730
+packetLen(0x0194, 182) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080722
+packetLen(0x0194, 15) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080715
+packetLen(0x0194, -1) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080708
+packetLen(0x0194, 10) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080701
+packetLen(0x0194, 42) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080624
+packetLen(0x0194, 26) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080617
+packetLen(0x0194, -1) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080610
+packetLen(0x0194, 2) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080528
+packetLen(0x0194, -1) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080520
+packetLen(0x0194, 2) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080513
+packetLen(0x0194, 4) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080507
+packetLen(0x0194, 53) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080429
+packetLen(0x0194, 59) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080422
+packetLen(0x0194, 8) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080415
+packetLen(0x0194, 11) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080408
+packetLen(0x0194, 21) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080401
+packetLen(0x0194, 3) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080325
+packetLen(0x0194, -1) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080318
+packetLen(0x0194, 16) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080311
+packetLen(0x0194, 8) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080304
+packetLen(0x0194, 3) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080226
+packetLen(0x0194, 4) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080219
+packetLen(0x0194, 14) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080124
+packetLen(0x0194, 282) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080102
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+#endif
+
+// Packet: 0x0195
+#if PACKETVER >= 20081217
+packetLen(0x0195, 29) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20081203
+packetLen(0x0195, 23) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20081112
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0195, -1) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20081029
+packetLen(0x0195, 6) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20081022
+packetLen(0x0195, 2) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20081015
+packetLen(0x0195, -1) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20081008
+packetLen(0x0195, 39) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080924
+packetLen(0x0195, -1) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080917
+packetLen(0x0195, 10) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080910
+packetLen(0x0195, -1) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080903
+packetLen(0x0195, 14) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080827
+packetLen(0x0195, 6) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080730
+packetLen(0x0195, -1) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080722
+packetLen(0x0195, 182) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080708
+packetLen(0x0195, -1) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080701
+packetLen(0x0195, 26) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080610
+packetLen(0x0195, -1) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080603
+packetLen(0x0195, 53) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080528
+packetLen(0x0195, 2) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080513
+packetLen(0x0195, -1) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080507
+packetLen(0x0195, 2) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080429
+packetLen(0x0195, 31) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080422
+packetLen(0x0195, 66) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080415
+packetLen(0x0195, 2) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080408
+packetLen(0x0195, -1) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080401
+packetLen(0x0195, 2) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080325
+packetLen(0x0195, 60) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080318
+packetLen(0x0195, 29) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080311
+packetLen(0x0195, 15) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080304
+packetLen(0x0195, 28) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080226
+packetLen(0x0195, 3) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080219
+packetLen(0x0195, 43) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080124
+packetLen(0x0195, 6) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080102
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+#endif
+
+// Packet: 0x0196
+#if PACKETVER >= 20081126
+packetLen(0x0196, -1) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20081119
+packetLen(0x0196, 26) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20081112
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0196, 21) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20081022
+packetLen(0x0196, -1) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20081015
+packetLen(0x0196, 8) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20081001
+packetLen(0x0196, -1) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080924
+packetLen(0x0196, 5) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080917
+packetLen(0x0196, 10) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080910
+packetLen(0x0196, 7) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080903
+packetLen(0x0196, 4) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080827
+packetLen(0x0196, -1) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080820
+packetLen(0x0196, 4) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080813
+packetLen(0x0196, 8) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080806
+packetLen(0x0196, 26) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080708
+packetLen(0x0196, -1) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080701
+packetLen(0x0196, 15) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080617
+packetLen(0x0196, -1) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080610
+packetLen(0x0196, 10) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080603
+packetLen(0x0196, -1) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080528
+packetLen(0x0196, 67) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080520
+packetLen(0x0196, 22) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080513
+packetLen(0x0196, 3) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080507
+packetLen(0x0196, 10) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080429
+packetLen(0x0196, -1) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080422
+packetLen(0x0196, 31) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080415
+packetLen(0x0196, 30) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080408
+packetLen(0x0196, 11) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080401
+packetLen(0x0196, -1) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080325
+packetLen(0x0196, 6) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080318
+packetLen(0x0196, 27) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080311
+packetLen(0x0196, -1) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080304
+packetLen(0x0196, 6) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080226
+packetLen(0x0196, 2) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080219
+packetLen(0x0196, 4) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080124
+packetLen(0x0196, 26) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+#endif
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+#if PACKETVER >= 20081217
+packetLen(0x0199, -1) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20081203
+packetLen(0x0199, 30) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20081119
+packetLen(0x0199, -1) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20081112
+packetLen(0x0199, 6) // ZC_NOTIFY_MAPPROPERTY
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0199, -1) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20081029
+packetLen(0x0199, 8) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20081022
+packetLen(0x0199, -1) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20081015
+packetLen(0x0199, 7) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20081008
+packetLen(0x0199, 67) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20081001
+packetLen(0x0199, -1) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080924
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080917
+packetLen(0x0199, 11) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080903
+packetLen(0x0199, -1) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080827
+packetLen(0x0199, 11) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080813
+packetLen(0x0199, -1) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080806
+packetLen(0x0199, 2) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080708
+packetLen(0x0199, -1) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080701
+packetLen(0x0199, 7) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080624
+packetLen(0x0199, 29) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080617
+packetLen(0x0199, -1) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080610
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080603
+packetLen(0x0199, 33) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080528
+packetLen(0x0199, 11) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080520
+packetLen(0x0199, 5) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080513
+packetLen(0x0199, 28) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080507
+packetLen(0x0199, 8) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080415
+packetLen(0x0199, -1) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080408
+packetLen(0x0199, 6) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080401
+packetLen(0x0199, -1) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080325
+packetLen(0x0199, 44) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080318
+packetLen(0x0199, 2) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080311
+packetLen(0x0199, 17) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080304
+packetLen(0x0199, 8) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080226
+packetLen(0x0199, 6) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080219
+packetLen(0x0199, -1) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080124
+packetLen(0x0199, 5) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080102
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+#endif
+
+// Packet: 0x019a
+#if PACKETVER >= 20081217
+packetLen(0x019a, 17) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20081126
+packetLen(0x019a, -1) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20081119
+packetLen(0x019a, 23) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20081112
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20081029
+packetLen(0x019a, 11) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20081015
+packetLen(0x019a, -1) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20081008
+packetLen(0x019a, 4) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080924
+packetLen(0x019a, -1) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080917
+packetLen(0x019a, 12) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080903
+packetLen(0x019a, -1) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080827
+packetLen(0x019a, 8) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080820
+packetLen(0x019a, 3) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080813
+packetLen(0x019a, 6) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080806
+packetLen(0x019a, 8) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080730
+packetLen(0x019a, 6) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080722
+packetLen(0x019a, -1) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080715
+packetLen(0x019a, 30) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080708
+packetLen(0x019a, -1) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080701
+packetLen(0x019a, 58) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080624
+packetLen(0x019a, -1) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080617
+packetLen(0x019a, 11) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080610
+packetLen(0x019a, 6) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080603
+packetLen(0x019a, -1) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080528
+packetLen(0x019a, 6) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080520
+packetLen(0x019a, 17) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080513
+packetLen(0x019a, 3) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080507
+packetLen(0x019a, 8) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080429
+packetLen(0x019a, 2) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080415
+packetLen(0x019a, -1) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080408
+packetLen(0x019a, 3) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080401
+packetLen(0x019a, 6) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080325
+packetLen(0x019a, 11) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080318
+packetLen(0x019a, 4) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080311
+packetLen(0x019a, 30) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080304
+packetLen(0x019a, 35) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080226
+packetLen(0x019a, 42) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080219
+packetLen(0x019a, 10) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080124
+packetLen(0x019a, 57) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080102
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+#endif
+
+// Packet: 0x019b
+#if PACKETVER >= 20081217
+packetLen(0x019b, 8) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20081203
+packetLen(0x019b, 28) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20081126
+packetLen(0x019b, -1) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20081119
+packetLen(0x019b, 3) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20081112
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081015
+packetLen(0x019b, -1) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20081008
+packetLen(0x019b, 8) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20081001
+packetLen(0x019b, -1) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080924
+packetLen(0x019b, 8) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080917
+packetLen(0x019b, 16) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080910
+packetLen(0x019b, 14) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080903
+packetLen(0x019b, -1) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080827
+packetLen(0x019b, 39) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080813
+packetLen(0x019b, -1) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080806
+packetLen(0x019b, 81) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080730
+packetLen(0x019b, -1) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080722
+packetLen(0x019b, 8) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080715
+packetLen(0x019b, 14) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080708
+packetLen(0x019b, 29) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080624
+packetLen(0x019b, -1) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080617
+packetLen(0x019b, 4) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080610
+packetLen(0x019b, -1) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080603
+packetLen(0x019b, 2) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080528
+packetLen(0x019b, 27) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080520
+packetLen(0x019b, 18) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080513
+packetLen(0x019b, 68) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080507
+packetLen(0x019b, -1) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080429
+packetLen(0x019b, 17) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080415
+packetLen(0x019b, -1) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080408
+packetLen(0x019b, 29) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080401
+packetLen(0x019b, 54) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080318
+packetLen(0x019b, 8) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080311
+packetLen(0x019b, 6) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080304
+packetLen(0x019b, 2) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080226
+packetLen(0x019b, 65) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080219
+packetLen(0x019b, 2) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080124
+packetLen(0x019b, 30) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080102
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+#endif
+
+// Packet: 0x019c
+#if PACKETVER >= 20081217
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20081203
+packetLen(0x019c, 7) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20081126
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20081119
+packetLen(0x019c, 30) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20081112
+packetLen(0x019c, 4) // CZ_LOCALBROADCAST
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20081022
+packetLen(0x019c, 2) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20081008
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20081001
+packetLen(0x019c, 13) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080903
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080827
+packetLen(0x019c, 8) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080813
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080806
+packetLen(0x019c, 3) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080722
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080715
+packetLen(0x019c, 14) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080708
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080701
+packetLen(0x019c, 282) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080624
+packetLen(0x019c, 29) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080617
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080610
+packetLen(0x019c, 6) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080603
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080528
+packetLen(0x019c, 55) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080520
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080513
+packetLen(0x019c, 81) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080507
+packetLen(0x019c, 18) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080429
+packetLen(0x019c, 79) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080422
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080415
+packetLen(0x019c, 8) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080408
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080401
+packetLen(0x019c, 54) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080325
+packetLen(0x019c, 23) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080318
+packetLen(0x019c, 43) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080311
+packetLen(0x019c, 8) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080226
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080219
+packetLen(0x019c, 2) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080124
+packetLen(0x019c, 186) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080102
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#endif
+
+// Packet: 0x019d
+#if PACKETVER >= 20081217
+packetLen(0x019d, 60) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20081203
+packetLen(0x019d, -1) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20081126
+packetLen(0x019d, 18) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20081119
+packetLen(0x019d, 9) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20081112
+packetLen(0x019d, 7) // CZ_CHANGE_EFFECTSTATE
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x019d, 8) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20081029
+packetLen(0x019d, -1) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20081022
+packetLen(0x019d, 15) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080924
+packetLen(0x019d, -1) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080917
+packetLen(0x019d, 23) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080910
+packetLen(0x019d, 30) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080903
+packetLen(0x019d, -1) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080827
+packetLen(0x019d, 97) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080820
+packetLen(0x019d, -1) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080813
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080806
+packetLen(0x019d, -1) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080730
+packetLen(0x019d, 2) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080701
+packetLen(0x019d, -1) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080624
+packetLen(0x019d, 30) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080603
+packetLen(0x019d, -1) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080528
+packetLen(0x019d, 2) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080520
+packetLen(0x019d, 8) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080513
+packetLen(0x019d, 11) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080429
+packetLen(0x019d, -1) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080422
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080415
+packetLen(0x019d, 18) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080408
+packetLen(0x019d, -1) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080401
+packetLen(0x019d, 68) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080325
+packetLen(0x019d, 4) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080318
+packetLen(0x019d, 14) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080311
+packetLen(0x019d, 4) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080226
+packetLen(0x019d, -1) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080219
+packetLen(0x019d, 18) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080124
+packetLen(0x019d, 22) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080102
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+#endif
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+#if PACKETVER >= 20081203
+packetLen(0x019f, -1) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20081126
+packetLen(0x019f, 7) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20081119
+packetLen(0x019f, -1) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20081112
+packetLen(0x019f, 81) // CZ_TRYCAPTURE_MONSTER
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20081029
+packetLen(0x019f, 20) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20081015
+packetLen(0x019f, -1) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20081008
+packetLen(0x019f, 8) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080924
+packetLen(0x019f, -1) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080917
+packetLen(0x019f, 28) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080903
+packetLen(0x019f, -1) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080827
+packetLen(0x019f, 26) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080722
+packetLen(0x019f, -1) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080715
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080708
+packetLen(0x019f, -1) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080701
+packetLen(0x019f, 36) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080610
+packetLen(0x019f, -1) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080603
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080528
+packetLen(0x019f, 20) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080520
+packetLen(0x019f, 18) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080513
+packetLen(0x019f, -1) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080507
+packetLen(0x019f, 26) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080429
+packetLen(0x019f, 3) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080422
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080415
+packetLen(0x019f, 8) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080408
+packetLen(0x019f, -1) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080401
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080325
+packetLen(0x019f, 34) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080318
+packetLen(0x019f, 10) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080311
+packetLen(0x019f, -1) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080304
+packetLen(0x019f, 23) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080226
+packetLen(0x019f, 79) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080124
+packetLen(0x019f, 2) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080102
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+#endif
+
+// Packet: 0x01a0
+#if PACKETVER >= 20081217
+packetLen(0x01a0, -1) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20081203
+packetLen(0x01a0, 42) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20081126
+packetLen(0x01a0, 4) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20081112
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01a0, -1) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20081029
+packetLen(0x01a0, 4) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20081008
+packetLen(0x01a0, -1) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20081001
+packetLen(0x01a0, 2) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080917
+packetLen(0x01a0, -1) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080910
+packetLen(0x01a0, 2) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080903
+packetLen(0x01a0, 282) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080827
+packetLen(0x01a0, 8) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080813
+packetLen(0x01a0, 6) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080806
+packetLen(0x01a0, -1) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080730
+packetLen(0x01a0, 5) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080722
+packetLen(0x01a0, 10) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080715
+packetLen(0x01a0, -1) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080708
+packetLen(0x01a0, 10) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080701
+packetLen(0x01a0, -1) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080624
+packetLen(0x01a0, 5) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080617
+packetLen(0x01a0, -1) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080610
+packetLen(0x01a0, 11) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080603
+packetLen(0x01a0, 29) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080528
+packetLen(0x01a0, 4) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080520
+packetLen(0x01a0, 42) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080513
+packetLen(0x01a0, 24) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080507
+packetLen(0x01a0, 23) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080429
+packetLen(0x01a0, 11) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080408
+packetLen(0x01a0, -1) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080401
+packetLen(0x01a0, 30) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080325
+packetLen(0x01a0, -1) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080318
+packetLen(0x01a0, 17) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080311
+packetLen(0x01a0, -1) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080304
+packetLen(0x01a0, 22) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080226
+packetLen(0x01a0, 8) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080219
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080124
+packetLen(0x01a0, 7) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080102
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+#endif
+
+// Packet: 0x01a1
+#if PACKETVER >= 20081112
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01a1, 2) // CZ_COMMAND_PET
+#elif PACKETVER >= 20081008
+packetLen(0x01a1, -1) // CZ_COMMAND_PET
+#elif PACKETVER >= 20081001
+packetLen(0x01a1, 2) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080924
+packetLen(0x01a1, -1) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080917
+packetLen(0x01a1, 4) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080910
+packetLen(0x01a1, 27) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080806
+packetLen(0x01a1, -1) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080730
+packetLen(0x01a1, 30) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080722
+packetLen(0x01a1, 14) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080715
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080708
+packetLen(0x01a1, -1) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080701
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080617
+packetLen(0x01a1, -1) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080610
+packetLen(0x01a1, 10) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080603
+packetLen(0x01a1, -1) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080528
+packetLen(0x01a1, 7) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080520
+packetLen(0x01a1, 21) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080507
+packetLen(0x01a1, -1) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080429
+packetLen(0x01a1, 7) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080422
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080415
+packetLen(0x01a1, 28) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080408
+packetLen(0x01a1, 282) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080401
+packetLen(0x01a1, 30) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080325
+packetLen(0x01a1, 7) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080318
+packetLen(0x01a1, 4) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080311
+packetLen(0x01a1, 53) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080304
+packetLen(0x01a1, 26) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080226
+packetLen(0x01a1, -1) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080219
+packetLen(0x01a1, 6) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080124
+packetLen(0x01a1, 5) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080102
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+#endif
+
+// Packet: 0x01a2
+#if PACKETVER >= 20081217
+packetLen(0x01a2, -1) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20081203
+packetLen(0x01a2, 2) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20081126
+packetLen(0x01a2, 7) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20081112
+packetLen(0x01a2, 35) // ZC_PROPERTY_PET
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01a2, 282) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20081029
+packetLen(0x01a2, -1) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20081022
+packetLen(0x01a2, 79) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20081015
+packetLen(0x01a2, 34) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20081008
+packetLen(0x01a2, 2) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20081001
+packetLen(0x01a2, 6) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080924
+packetLen(0x01a2, 26) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080910
+packetLen(0x01a2, -1) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080903
+packetLen(0x01a2, 21) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080827
+packetLen(0x01a2, 5) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080820
+packetLen(0x01a2, -1) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080806
+packetLen(0x01a2, 6) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080730
+packetLen(0x01a2, 60) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080722
+packetLen(0x01a2, 30) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080708
+packetLen(0x01a2, -1) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080701
+packetLen(0x01a2, 2) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080624
+packetLen(0x01a2, 3) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080610
+packetLen(0x01a2, -1) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080603
+packetLen(0x01a2, 28) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080520
+packetLen(0x01a2, -1) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080513
+packetLen(0x01a2, 54) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080507
+packetLen(0x01a2, 27) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080429
+packetLen(0x01a2, 2) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080422
+packetLen(0x01a2, 30) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080415
+packetLen(0x01a2, 68) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080408
+packetLen(0x01a2, 6) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080401
+packetLen(0x01a2, -1) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080318
+packetLen(0x01a2, 2) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080311
+packetLen(0x01a2, 4) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080304
+packetLen(0x01a2, 6) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080226
+packetLen(0x01a2, 7) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080219
+packetLen(0x01a2, 8) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080124
+packetLen(0x01a2, 6) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080102
+packetLen(0x01a2, 35) // ZC_PROPERTY_PET
+#endif
+
+// Packet: 0x01a3
+#if PACKETVER >= 20081126
+packetLen(0x01a3, -1) // ZC_FEED_PET
+#elif PACKETVER >= 20081119
+packetLen(0x01a3, 6) // ZC_FEED_PET
+#elif PACKETVER >= 20081112
+packetLen(0x01a3, 5) // ZC_FEED_PET
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01a3, -1) // ZC_FEED_PET
+#elif PACKETVER >= 20081029
+packetLen(0x01a3, 58) // ZC_FEED_PET
+#elif PACKETVER >= 20081015
+packetLen(0x01a3, -1) // ZC_FEED_PET
+#elif PACKETVER >= 20081008
+packetLen(0x01a3, 3) // ZC_FEED_PET
+#elif PACKETVER >= 20081001
+packetLen(0x01a3, -1) // ZC_FEED_PET
+#elif PACKETVER >= 20080924
+packetLen(0x01a3, 10) // ZC_FEED_PET
+#elif PACKETVER >= 20080903
+packetLen(0x01a3, -1) // ZC_FEED_PET
+#elif PACKETVER >= 20080827
+packetLen(0x01a3, 2) // ZC_FEED_PET
+#elif PACKETVER >= 20080820
+packetLen(0x01a3, 8) // ZC_FEED_PET
+#elif PACKETVER >= 20080813
+packetLen(0x01a3, 2) // ZC_FEED_PET
+#elif PACKETVER >= 20080806
+packetLen(0x01a3, -1) // ZC_FEED_PET
+#elif PACKETVER >= 20080730
+packetLen(0x01a3, 28) // ZC_FEED_PET
+#elif PACKETVER >= 20080722
+packetLen(0x01a3, 15) // ZC_FEED_PET
+#elif PACKETVER >= 20080715
+packetLen(0x01a3, 6) // ZC_FEED_PET
+#elif PACKETVER >= 20080708
+packetLen(0x01a3, -1) // ZC_FEED_PET
+#elif PACKETVER >= 20080701
+packetLen(0x01a3, 31) // ZC_FEED_PET
+#elif PACKETVER >= 20080624
+packetLen(0x01a3, 8) // ZC_FEED_PET
+#elif PACKETVER >= 20080610
+packetLen(0x01a3, -1) // ZC_FEED_PET
+#elif PACKETVER >= 20080603
+packetLen(0x01a3, 26) // ZC_FEED_PET
+#elif PACKETVER >= 20080528
+packetLen(0x01a3, -1) // ZC_FEED_PET
+#elif PACKETVER >= 20080520
+packetLen(0x01a3, 26) // ZC_FEED_PET
+#elif PACKETVER >= 20080513
+packetLen(0x01a3, -1) // ZC_FEED_PET
+#elif PACKETVER >= 20080507
+packetLen(0x01a3, 5) // ZC_FEED_PET
+#elif PACKETVER >= 20080429
+packetLen(0x01a3, 9) // ZC_FEED_PET
+#elif PACKETVER >= 20080422
+packetLen(0x01a3, 30) // ZC_FEED_PET
+#elif PACKETVER >= 20080415
+packetLen(0x01a3, 3) // ZC_FEED_PET
+#elif PACKETVER >= 20080318
+packetLen(0x01a3, -1) // ZC_FEED_PET
+#elif PACKETVER >= 20080311
+packetLen(0x01a3, 32) // ZC_FEED_PET
+#elif PACKETVER >= 20080304
+packetLen(0x01a3, 6) // ZC_FEED_PET
+#elif PACKETVER >= 20080226
+packetLen(0x01a3, 4) // ZC_FEED_PET
+#elif PACKETVER >= 20080219
+packetLen(0x01a3, 11) // ZC_FEED_PET
+#elif PACKETVER >= 20080124
+packetLen(0x01a3, -1) // ZC_FEED_PET
+#elif PACKETVER >= 20080102
+packetLen(0x01a3, 5) // ZC_FEED_PET
+#endif
+
+// Packet: 0x01a4
+#if PACKETVER >= 20081217
+packetLen(0x01a4, 3) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20081203
+packetLen(0x01a4, 6) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20081126
+packetLen(0x01a4, -1) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20081119
+packetLen(0x01a4, 2) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20081112
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01a4, -1) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20081029
+packetLen(0x01a4, 22) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20081001
+packetLen(0x01a4, -1) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080924
+packetLen(0x01a4, 10) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080820
+packetLen(0x01a4, -1) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080813
+packetLen(0x01a4, 22) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080806
+packetLen(0x01a4, 67) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080730
+packetLen(0x01a4, 8) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080722
+packetLen(0x01a4, 16) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080715
+packetLen(0x01a4, 20) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080617
+packetLen(0x01a4, -1) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080610
+packetLen(0x01a4, 4) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080603
+packetLen(0x01a4, 10) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080528
+packetLen(0x01a4, -1) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080520
+packetLen(0x01a4, 34) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080513
+packetLen(0x01a4, 2) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080507
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080429
+packetLen(0x01a4, -1) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080422
+packetLen(0x01a4, 102) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080415
+packetLen(0x01a4, -1) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080408
+packetLen(0x01a4, 16) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080401
+packetLen(0x01a4, 36) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080325
+packetLen(0x01a4, 8) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080318
+packetLen(0x01a4, 2) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080311
+packetLen(0x01a4, -1) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080304
+packetLen(0x01a4, 4) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080226
+packetLen(0x01a4, 10) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080124
+packetLen(0x01a4, 8) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080102
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+#endif
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+#if PACKETVER >= 20081217
+packetLen(0x01a6, 58) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20081203
+packetLen(0x01a6, 26) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20081126
+packetLen(0x01a6, 2) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20081119
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20081112
+packetLen(0x01a6, 39) // ZC_PETEGG_LIST
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01a6, 58) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20081029
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20081022
+packetLen(0x01a6, 3) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20081015
+packetLen(0x01a6, 12) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20081008
+packetLen(0x01a6, 30) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20081001
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080924
+packetLen(0x01a6, 14) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080917
+packetLen(0x01a6, 6) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080827
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080820
+packetLen(0x01a6, 6) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080813
+packetLen(0x01a6, 5) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080806
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080730
+packetLen(0x01a6, 22) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080722
+packetLen(0x01a6, 6) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080715
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080708
+packetLen(0x01a6, 57) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080701
+packetLen(0x01a6, 4) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080617
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080610
+packetLen(0x01a6, 3) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080603
+packetLen(0x01a6, 10) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080520
+packetLen(0x01a6, 6) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080513
+packetLen(0x01a6, 4) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080507
+packetLen(0x01a6, 6) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080429
+packetLen(0x01a6, 30) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080422
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080415
+packetLen(0x01a6, 6) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080401
+packetLen(0x01a6, 2) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080325
+packetLen(0x01a6, 3) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080318
+packetLen(0x01a6, 26) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x01a6, 2) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x01a6, 10) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080124
+packetLen(0x01a6, 27) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+#endif
+
+// Packet: 0x01a7
+#if PACKETVER >= 20081217
+packetLen(0x01a7, -1) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20081203
+packetLen(0x01a7, 3) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20081126
+packetLen(0x01a7, 5) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20081119
+packetLen(0x01a7, -1) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20081112
+packetLen(0x01a7, 23) // CZ_SELECT_PETEGG
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081015
+packetLen(0x01a7, -1) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20081008
+packetLen(0x01a7, 14) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20081001
+packetLen(0x01a7, 7) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080924
+packetLen(0x01a7, -1) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080917
+packetLen(0x01a7, 8) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080910
+packetLen(0x01a7, -1) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080903
+packetLen(0x01a7, 5) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080827
+packetLen(0x01a7, 6) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080820
+packetLen(0x01a7, 10) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080813
+packetLen(0x01a7, -1) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080806
+packetLen(0x01a7, 29) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080730
+packetLen(0x01a7, 6) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080722
+packetLen(0x01a7, -1) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080715
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080708
+packetLen(0x01a7, 6) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080701
+packetLen(0x01a7, 2) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080617
+packetLen(0x01a7, 6) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080603
+packetLen(0x01a7, -1) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080528
+packetLen(0x01a7, 30) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080520
+packetLen(0x01a7, -1) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080513
+packetLen(0x01a7, 18) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080507
+packetLen(0x01a7, -1) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080429
+packetLen(0x01a7, 6) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080422
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080415
+packetLen(0x01a7, 18) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080408
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080401
+packetLen(0x01a7, 22) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080325
+packetLen(0x01a7, 16) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080318
+packetLen(0x01a7, 26) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080311
+packetLen(0x01a7, 6) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080226
+packetLen(0x01a7, 2) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080219
+packetLen(0x01a7, 6) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080124
+packetLen(0x01a7, 3) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080102
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+#endif
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+#if PACKETVER >= 20081203
+packetLen(0x01aa, -1) // ZC_PET_ACT
+#elif PACKETVER >= 20081126
+packetLen(0x01aa, 29) // ZC_PET_ACT
+#elif PACKETVER >= 20081112
+packetLen(0x01aa, 10) // ZC_PET_ACT
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01aa, 29) // ZC_PET_ACT
+#elif PACKETVER >= 20081029
+packetLen(0x01aa, 30) // ZC_PET_ACT
+#elif PACKETVER >= 20081015
+packetLen(0x01aa, -1) // ZC_PET_ACT
+#elif PACKETVER >= 20081008
+packetLen(0x01aa, 12) // ZC_PET_ACT
+#elif PACKETVER >= 20081001
+packetLen(0x01aa, -1) // ZC_PET_ACT
+#elif PACKETVER >= 20080924
+packetLen(0x01aa, 2) // ZC_PET_ACT
+#elif PACKETVER >= 20080917
+packetLen(0x01aa, 6) // ZC_PET_ACT
+#elif PACKETVER >= 20080910
+packetLen(0x01aa, -1) // ZC_PET_ACT
+#elif PACKETVER >= 20080827
+packetLen(0x01aa, 6) // ZC_PET_ACT
+#elif PACKETVER >= 20080820
+packetLen(0x01aa, 30) // ZC_PET_ACT
+#elif PACKETVER >= 20080813
+packetLen(0x01aa, 282) // ZC_PET_ACT
+#elif PACKETVER >= 20080806
+packetLen(0x01aa, 6) // ZC_PET_ACT
+#elif PACKETVER >= 20080715
+packetLen(0x01aa, -1) // ZC_PET_ACT
+#elif PACKETVER >= 20080708
+packetLen(0x01aa, 2) // ZC_PET_ACT
+#elif PACKETVER >= 20080624
+packetLen(0x01aa, -1) // ZC_PET_ACT
+#elif PACKETVER >= 20080610
+packetLen(0x01aa, 6) // ZC_PET_ACT
+#elif PACKETVER >= 20080603
+packetLen(0x01aa, 43) // ZC_PET_ACT
+#elif PACKETVER >= 20080528
+packetLen(0x01aa, -1) // ZC_PET_ACT
+#elif PACKETVER >= 20080520
+packetLen(0x01aa, 28) // ZC_PET_ACT
+#elif PACKETVER >= 20080513
+packetLen(0x01aa, 60) // ZC_PET_ACT
+#elif PACKETVER >= 20080507
+packetLen(0x01aa, 6) // ZC_PET_ACT
+#elif PACKETVER >= 20080422
+packetLen(0x01aa, -1) // ZC_PET_ACT
+#elif PACKETVER >= 20080415
+packetLen(0x01aa, 8) // ZC_PET_ACT
+#elif PACKETVER >= 20080408
+packetLen(0x01aa, 28) // ZC_PET_ACT
+#elif PACKETVER >= 20080401
+packetLen(0x01aa, 7) // ZC_PET_ACT
+#elif PACKETVER >= 20080318
+packetLen(0x01aa, -1) // ZC_PET_ACT
+#elif PACKETVER >= 20080311
+packetLen(0x01aa, 9) // ZC_PET_ACT
+#elif PACKETVER >= 20080304
+packetLen(0x01aa, 67) // ZC_PET_ACT
+#elif PACKETVER >= 20080219
+packetLen(0x01aa, 6) // ZC_PET_ACT
+#elif PACKETVER >= 20080124
+packetLen(0x01aa, 54) // ZC_PET_ACT
+#elif PACKETVER >= 20080102
+packetLen(0x01aa, 10) // ZC_PET_ACT
+#endif
+
+// Packet: 0x01ab
+#if PACKETVER >= 20081217
+packetLen(0x01ab, 5) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20081126
+packetLen(0x01ab, -1) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20081119
+packetLen(0x01ab, 7) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20081112
+packetLen(0x01ab, 30) // ZC_PAR_CHANGE_USER
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01ab, 3) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20081029
+packetLen(0x01ab, -1) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20081022
+packetLen(0x01ab, 6) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20081015
+packetLen(0x01ab, 2) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080917
+packetLen(0x01ab, -1) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080910
+packetLen(0x01ab, 16) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080722
+packetLen(0x01ab, -1) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080715
+packetLen(0x01ab, 282) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080708
+packetLen(0x01ab, -1) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080701
+packetLen(0x01ab, 10) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080624
+packetLen(0x01ab, 60) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080617
+packetLen(0x01ab, -1) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080610
+packetLen(0x01ab, 11) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080528
+packetLen(0x01ab, 6) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080520
+packetLen(0x01ab, -1) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080513
+packetLen(0x01ab, 30) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080507
+packetLen(0x01ab, -1) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080429
+packetLen(0x01ab, 10) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080422
+packetLen(0x01ab, -1) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080415
+packetLen(0x01ab, 35) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080408
+packetLen(0x01ab, 79) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080401
+packetLen(0x01ab, 18) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080325
+packetLen(0x01ab, 10) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080311
+packetLen(0x01ab, -1) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080304
+packetLen(0x01ab, 4) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080226
+packetLen(0x01ab, 10) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080219
+packetLen(0x01ab, 3) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080124
+packetLen(0x01ab, -1) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080102
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+#endif
+
+// Packet: 0x01ac
+#if PACKETVER >= 20081217
+packetLen(0x01ac, -1) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20081203
+packetLen(0x01ac, 10) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20081119
+packetLen(0x01ac, -1) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20081112
+packetLen(0x01ac, 30) // ZC_SKILL_UPDATE
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x01ac, -1) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20081015
+packetLen(0x01ac, 8) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20081008
+packetLen(0x01ac, 5) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080917
+packetLen(0x01ac, -1) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080910
+packetLen(0x01ac, 28) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080813
+packetLen(0x01ac, -1) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080806
+packetLen(0x01ac, 30) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080730
+packetLen(0x01ac, 2) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080722
+packetLen(0x01ac, -1) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080715
+packetLen(0x01ac, 26) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080610
+packetLen(0x01ac, -1) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080603
+packetLen(0x01ac, 59) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080528
+packetLen(0x01ac, -1) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080520
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080513
+packetLen(0x01ac, 44) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080507
+packetLen(0x01ac, 10) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080429
+packetLen(0x01ac, 14) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080422
+packetLen(0x01ac, 3) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080415
+packetLen(0x01ac, -1) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080408
+packetLen(0x01ac, 29) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080325
+packetLen(0x01ac, -1) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080318
+packetLen(0x01ac, 97) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080311
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080304
+packetLen(0x01ac, 2) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080226
+packetLen(0x01ac, 4) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080219
+packetLen(0x01ac, 26) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080124
+packetLen(0x01ac, 17) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080102
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+#endif
+
+// Packet: 0x01ad
+#if PACKETVER >= 20081203
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20081126
+packetLen(0x01ad, 8) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20081022
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20081015
+packetLen(0x01ad, 26) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080827
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080820
+packetLen(0x01ad, 2) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080806
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080730
+packetLen(0x01ad, 10) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080715
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080708
+packetLen(0x01ad, 66) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080624
+packetLen(0x01ad, 2) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080617
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080610
+packetLen(0x01ad, 10) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080603
+packetLen(0x01ad, 4) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080528
+packetLen(0x01ad, 8) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080429
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080422
+packetLen(0x01ad, 6) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080415
+packetLen(0x01ad, 26) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080408
+packetLen(0x01ad, 4) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080401
+packetLen(0x01ad, 14) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080325
+packetLen(0x01ad, 39) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080318
+packetLen(0x01ad, 6) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x01ad, 10) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x01ad, 4) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x01ad, 54) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080124
+packetLen(0x01ad, 5) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+#endif
+
+// Packet: 0x01ae
+#if PACKETVER >= 20081217
+packetLen(0x01ae, 2) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20081203
+packetLen(0x01ae, 55) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20081126
+packetLen(0x01ae, 10) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20081112
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01ae, -1) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20081029
+packetLen(0x01ae, 2) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20081022
+packetLen(0x01ae, 26) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20081015
+packetLen(0x01ae, 2) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20081001
+packetLen(0x01ae, -1) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080924
+packetLen(0x01ae, 22) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080827
+packetLen(0x01ae, -1) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080820
+packetLen(0x01ae, 27) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080806
+packetLen(0x01ae, -1) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080730
+packetLen(0x01ae, 35) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080708
+packetLen(0x01ae, -1) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080701
+packetLen(0x01ae, 7) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080624
+packetLen(0x01ae, -1) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080617
+packetLen(0x01ae, 2) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080610
+packetLen(0x01ae, 43) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080528
+packetLen(0x01ae, -1) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080520
+packetLen(0x01ae, 8) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080429
+packetLen(0x01ae, -1) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080422
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080415
+packetLen(0x01ae, 6) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080408
+packetLen(0x01ae, -1) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080401
+packetLen(0x01ae, 14) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080318
+packetLen(0x01ae, -1) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080311
+packetLen(0x01ae, 26) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080304
+packetLen(0x01ae, 15) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080226
+packetLen(0x01ae, 2) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080219
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080124
+packetLen(0x01ae, -1) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080102
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+#endif
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+#if PACKETVER >= 20081203
+packetLen(0x01b0, -1) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20081126
+packetLen(0x01b0, 10) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20081119
+packetLen(0x01b0, -1) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20081112
+packetLen(0x01b0, 32) // ZC_NPCSPRITE_CHANGE
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x01b0, -1) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20081015
+packetLen(0x01b0, 30) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20081008
+packetLen(0x01b0, 4) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080827
+packetLen(0x01b0, -1) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080820
+packetLen(0x01b0, 3) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080813
+packetLen(0x01b0, 8) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080730
+packetLen(0x01b0, -1) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080722
+packetLen(0x01b0, 53) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080715
+packetLen(0x01b0, 30) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080708
+packetLen(0x01b0, -1) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080701
+packetLen(0x01b0, 8) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080617
+packetLen(0x01b0, -1) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080610
+packetLen(0x01b0, 4) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080603
+packetLen(0x01b0, -1) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080528
+packetLen(0x01b0, 8) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080520
+packetLen(0x01b0, -1) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080507
+packetLen(0x01b0, 6) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080429
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080422
+packetLen(0x01b0, 21) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080415
+packetLen(0x01b0, -1) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080408
+packetLen(0x01b0, 3) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080401
+packetLen(0x01b0, 6) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080325
+packetLen(0x01b0, 16) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080318
+packetLen(0x01b0, 6) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080311
+packetLen(0x01b0, 2) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080304
+packetLen(0x01b0, 3) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080226
+packetLen(0x01b0, 6) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080219
+packetLen(0x01b0, 2) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080124
+packetLen(0x01b0, 3) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+#endif
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+#if PACKETVER >= 20081203
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20081126
+packetLen(0x01b2, 182) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20081029
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20081022
+packetLen(0x01b2, 30) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20081008
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20081001
+packetLen(0x01b2, 10) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080924
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080917
+packetLen(0x01b2, 59) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080910
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080903
+packetLen(0x01b2, 11) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080708
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080624
+packetLen(0x01b2, 6) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080617
+packetLen(0x01b2, 3) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080610
+packetLen(0x01b2, 2) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080603
+packetLen(0x01b2, 57) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080528
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080520
+packetLen(0x01b2, 54) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080507
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080429
+packetLen(0x01b2, 14) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080401
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080325
+packetLen(0x01b2, 14) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080318
+packetLen(0x01b2, 28) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080311
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080304
+packetLen(0x01b2, 10) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080226
+packetLen(0x01b2, 282) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080219
+packetLen(0x01b2, 26) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080124
+packetLen(0x01b2, 11) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080102
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+#endif
+
+// Packet: 0x01b3
+#if PACKETVER >= 20081203
+packetLen(0x01b3, -1) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20081126
+packetLen(0x01b3, 12) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20081119
+packetLen(0x01b3, 2) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20081112
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01b3, -1) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20081029
+packetLen(0x01b3, 36) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20081022
+packetLen(0x01b3, 10) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20081015
+packetLen(0x01b3, 2) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20081008
+packetLen(0x01b3, -1) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20081001
+packetLen(0x01b3, 22) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080924
+packetLen(0x01b3, -1) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080917
+packetLen(0x01b3, 16) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080820
+packetLen(0x01b3, -1) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080813
+packetLen(0x01b3, 6) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080715
+packetLen(0x01b3, -1) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080708
+packetLen(0x01b3, 6) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080610
+packetLen(0x01b3, -1) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080603
+packetLen(0x01b3, 2) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080528
+packetLen(0x01b3, 60) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080520
+packetLen(0x01b3, 71) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080513
+packetLen(0x01b3, -1) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080507
+packetLen(0x01b3, 2) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080422
+packetLen(0x01b3, -1) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080415
+packetLen(0x01b3, 22) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080408
+packetLen(0x01b3, 6) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080401
+packetLen(0x01b3, 4) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080325
+packetLen(0x01b3, -1) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080318
+packetLen(0x01b3, 33) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080311
+packetLen(0x01b3, -1) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080304
+packetLen(0x01b3, 9) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080226
+packetLen(0x01b3, 2) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080219
+packetLen(0x01b3, -1) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080124
+packetLen(0x01b3, 20) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080102
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+#endif
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+#if PACKETVER >= 20081203
+packetLen(0x01b6, -1) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20081126
+packetLen(0x01b6, 65) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20081119
+packetLen(0x01b6, 31) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20081112
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01b6, -1) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20081029
+packetLen(0x01b6, 2) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20081022
+packetLen(0x01b6, 31) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20081015
+packetLen(0x01b6, 26) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20081008
+packetLen(0x01b6, 31) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20081001
+packetLen(0x01b6, 6) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080924
+packetLen(0x01b6, -1) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080917
+packetLen(0x01b6, 2) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080827
+packetLen(0x01b6, -1) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080820
+packetLen(0x01b6, 4) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080806
+packetLen(0x01b6, -1) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080730
+packetLen(0x01b6, 58) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080715
+packetLen(0x01b6, -1) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080708
+packetLen(0x01b6, 10) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080701
+packetLen(0x01b6, 12) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080624
+packetLen(0x01b6, 31) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080617
+packetLen(0x01b6, 26) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080610
+packetLen(0x01b6, 55) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080603
+packetLen(0x01b6, -1) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080528
+packetLen(0x01b6, 33) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080513
+packetLen(0x01b6, -1) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080507
+packetLen(0x01b6, 7) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080429
+packetLen(0x01b6, 86) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080422
+packetLen(0x01b6, 23) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080408
+packetLen(0x01b6, -1) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080401
+packetLen(0x01b6, 60) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080325
+packetLen(0x01b6, 12) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080318
+packetLen(0x01b6, -1) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080311
+packetLen(0x01b6, 3) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080304
+packetLen(0x01b6, 2) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080226
+packetLen(0x01b6, 18) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080219
+packetLen(0x01b6, 22) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080124
+packetLen(0x01b6, 6) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080102
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+#endif
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+#if PACKETVER >= 20081203
+packetLen(0x01b9, -1) // ZC_DISPEL
+#elif PACKETVER >= 20081126
+packetLen(0x01b9, 24) // ZC_DISPEL
+#elif PACKETVER >= 20081119
+packetLen(0x01b9, -1) // ZC_DISPEL
+#elif PACKETVER >= 20081112
+packetLen(0x01b9, 8) // ZC_DISPEL
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x01b9, -1) // ZC_DISPEL
+#elif PACKETVER >= 20081022
+packetLen(0x01b9, 21) // ZC_DISPEL
+#elif PACKETVER >= 20081015
+packetLen(0x01b9, 6) // ZC_DISPEL
+#elif PACKETVER >= 20081008
+packetLen(0x01b9, 18) // ZC_DISPEL
+#elif PACKETVER >= 20080917
+packetLen(0x01b9, -1) // ZC_DISPEL
+#elif PACKETVER >= 20080910
+packetLen(0x01b9, 6) // ZC_DISPEL
+#elif PACKETVER >= 20080813
+packetLen(0x01b9, -1) // ZC_DISPEL
+#elif PACKETVER >= 20080806
+packetLen(0x01b9, 14) // ZC_DISPEL
+#elif PACKETVER >= 20080730
+packetLen(0x01b9, -1) // ZC_DISPEL
+#elif PACKETVER >= 20080715
+packetLen(0x01b9, 68) // ZC_DISPEL
+#elif PACKETVER >= 20080708
+packetLen(0x01b9, -1) // ZC_DISPEL
+#elif PACKETVER >= 20080701
+packetLen(0x01b9, 14) // ZC_DISPEL
+#elif PACKETVER >= 20080617
+packetLen(0x01b9, -1) // ZC_DISPEL
+#elif PACKETVER >= 20080610
+packetLen(0x01b9, 6) // ZC_DISPEL
+#elif PACKETVER >= 20080603
+packetLen(0x01b9, 8) // ZC_DISPEL
+#elif PACKETVER >= 20080429
+packetLen(0x01b9, -1) // ZC_DISPEL
+#elif PACKETVER >= 20080422
+packetLen(0x01b9, 7) // ZC_DISPEL
+#elif PACKETVER >= 20080415
+packetLen(0x01b9, -1) // ZC_DISPEL
+#elif PACKETVER >= 20080408
+packetLen(0x01b9, 4) // ZC_DISPEL
+#elif PACKETVER >= 20080401
+packetLen(0x01b9, 10) // ZC_DISPEL
+#elif PACKETVER >= 20080325
+packetLen(0x01b9, 26) // ZC_DISPEL
+#elif PACKETVER >= 20080318
+packetLen(0x01b9, 9) // ZC_DISPEL
+#elif PACKETVER >= 20080311
+packetLen(0x01b9, 3) // ZC_DISPEL
+#elif PACKETVER >= 20080304
+packetLen(0x01b9, 30) // ZC_DISPEL
+#elif PACKETVER >= 20080226
+packetLen(0x01b9, 60) // ZC_DISPEL
+#elif PACKETVER >= 20080219
+packetLen(0x01b9, 2) // ZC_DISPEL
+#elif PACKETVER >= 20080124
+packetLen(0x01b9, -1) // ZC_DISPEL
+#elif PACKETVER >= 20080102
+packetLen(0x01b9, 6) // ZC_DISPEL
+#endif
+
+// Packet: 0x01ba
+#if PACKETVER >= 20081217
+packetLen(0x01ba, 15) // CZ_REMOVE_AID
+#elif PACKETVER >= 20081203
+packetLen(0x01ba, -1) // CZ_REMOVE_AID
+#elif PACKETVER >= 20081126
+packetLen(0x01ba, 5) // CZ_REMOVE_AID
+#elif PACKETVER >= 20081112
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081008
+packetLen(0x01ba, -1) // CZ_REMOVE_AID
+#elif PACKETVER >= 20081001
+packetLen(0x01ba, 5) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080924
+packetLen(0x01ba, 7) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080910
+packetLen(0x01ba, -1) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080903
+packetLen(0x01ba, 9) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080813
+packetLen(0x01ba, -1) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080806
+packetLen(0x01ba, 6) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080730
+packetLen(0x01ba, 2) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080722
+packetLen(0x01ba, 42) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080715
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080701
+packetLen(0x01ba, -1) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080624
+packetLen(0x01ba, 6) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080617
+packetLen(0x01ba, 3) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080528
+packetLen(0x01ba, -1) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080520
+packetLen(0x01ba, 7) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080513
+packetLen(0x01ba, 22) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080507
+packetLen(0x01ba, -1) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080429
+packetLen(0x01ba, 3) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080415
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080408
+packetLen(0x01ba, 6) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080401
+packetLen(0x01ba, 4) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080325
+packetLen(0x01ba, 81) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080311
+packetLen(0x01ba, -1) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080304
+packetLen(0x01ba, 8) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080226
+packetLen(0x01ba, -1) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080219
+packetLen(0x01ba, 14) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080124
+packetLen(0x01ba, 60) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080102
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+#endif
+
+// Packet: 0x01bb
+#if PACKETVER >= 20081217
+packetLen(0x01bb, -1) // CZ_SHIFT
+#elif PACKETVER >= 20081203
+packetLen(0x01bb, 30) // CZ_SHIFT
+#elif PACKETVER >= 20081119
+packetLen(0x01bb, -1) // CZ_SHIFT
+#elif PACKETVER >= 20081112
+packetLen(0x01bb, 65) // CZ_SHIFT
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01bb, -1) // CZ_SHIFT
+#elif PACKETVER >= 20081029
+packetLen(0x01bb, 90) // CZ_SHIFT
+#elif PACKETVER >= 20081022
+packetLen(0x01bb, 6) // CZ_SHIFT
+#elif PACKETVER >= 20081015
+packetLen(0x01bb, -1) // CZ_SHIFT
+#elif PACKETVER >= 20081008
+packetLen(0x01bb, 7) // CZ_SHIFT
+#elif PACKETVER >= 20081001
+packetLen(0x01bb, 32) // CZ_SHIFT
+#elif PACKETVER >= 20080924
+packetLen(0x01bb, 27) // CZ_SHIFT
+#elif PACKETVER >= 20080910
+packetLen(0x01bb, -1) // CZ_SHIFT
+#elif PACKETVER >= 20080903
+packetLen(0x01bb, 7) // CZ_SHIFT
+#elif PACKETVER >= 20080827
+packetLen(0x01bb, -1) // CZ_SHIFT
+#elif PACKETVER >= 20080820
+packetLen(0x01bb, 2) // CZ_SHIFT
+#elif PACKETVER >= 20080813
+packetLen(0x01bb, 79) // CZ_SHIFT
+#elif PACKETVER >= 20080730
+packetLen(0x01bb, -1) // CZ_SHIFT
+#elif PACKETVER >= 20080722
+packetLen(0x01bb, 10) // CZ_SHIFT
+#elif PACKETVER >= 20080715
+packetLen(0x01bb, 20) // CZ_SHIFT
+#elif PACKETVER >= 20080708
+packetLen(0x01bb, 6) // CZ_SHIFT
+#elif PACKETVER >= 20080603
+packetLen(0x01bb, -1) // CZ_SHIFT
+#elif PACKETVER >= 20080528
+packetLen(0x01bb, 16) // CZ_SHIFT
+#elif PACKETVER >= 20080513
+packetLen(0x01bb, -1) // CZ_SHIFT
+#elif PACKETVER >= 20080429
+packetLen(0x01bb, 2) // CZ_SHIFT
+#elif PACKETVER >= 20080422
+packetLen(0x01bb, 26) // CZ_SHIFT
+#elif PACKETVER >= 20080415
+packetLen(0x01bb, -1) // CZ_SHIFT
+#elif PACKETVER >= 20080408
+packetLen(0x01bb, 3) // CZ_SHIFT
+#elif PACKETVER >= 20080401
+packetLen(0x01bb, 4) // CZ_SHIFT
+#elif PACKETVER >= 20080325
+packetLen(0x01bb, 43) // CZ_SHIFT
+#elif PACKETVER >= 20080318
+packetLen(0x01bb, 31) // CZ_SHIFT
+#elif PACKETVER >= 20080311
+packetLen(0x01bb, 4) // CZ_SHIFT
+#elif PACKETVER >= 20080304
+packetLen(0x01bb, 8) // CZ_SHIFT
+#elif PACKETVER >= 20080226
+packetLen(0x01bb, 6) // CZ_SHIFT
+#elif PACKETVER >= 20080219
+packetLen(0x01bb, 3) // CZ_SHIFT
+#elif PACKETVER >= 20080124
+packetLen(0x01bb, 81) // CZ_SHIFT
+#elif PACKETVER >= 20080102
+packetLen(0x01bb, 26) // CZ_SHIFT
+#endif
+
+// Packet: 0x01bc
+#if PACKETVER >= 20081217
+packetLen(0x01bc, 4) // CZ_RECALL
+#elif PACKETVER >= 20081203
+packetLen(0x01bc, 9) // CZ_RECALL
+#elif PACKETVER >= 20081119
+packetLen(0x01bc, -1) // CZ_RECALL
+#elif PACKETVER >= 20081112
+packetLen(0x01bc, 26) // CZ_RECALL
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01bc, -1) // CZ_RECALL
+#elif PACKETVER >= 20081029
+packetLen(0x01bc, 14) // CZ_RECALL
+#elif PACKETVER >= 20081022
+packetLen(0x01bc, -1) // CZ_RECALL
+#elif PACKETVER >= 20081015
+packetLen(0x01bc, 2) // CZ_RECALL
+#elif PACKETVER >= 20081008
+packetLen(0x01bc, -1) // CZ_RECALL
+#elif PACKETVER >= 20081001
+packetLen(0x01bc, 6) // CZ_RECALL
+#elif PACKETVER >= 20080917
+packetLen(0x01bc, -1) // CZ_RECALL
+#elif PACKETVER >= 20080910
+packetLen(0x01bc, 3) // CZ_RECALL
+#elif PACKETVER >= 20080903
+packetLen(0x01bc, 55) // CZ_RECALL
+#elif PACKETVER >= 20080820
+packetLen(0x01bc, -1) // CZ_RECALL
+#elif PACKETVER >= 20080813
+packetLen(0x01bc, 43) // CZ_RECALL
+#elif PACKETVER >= 20080806
+packetLen(0x01bc, -1) // CZ_RECALL
+#elif PACKETVER >= 20080730
+packetLen(0x01bc, 16) // CZ_RECALL
+#elif PACKETVER >= 20080722
+packetLen(0x01bc, -1) // CZ_RECALL
+#elif PACKETVER >= 20080715
+packetLen(0x01bc, 28) // CZ_RECALL
+#elif PACKETVER >= 20080708
+packetLen(0x01bc, 6) // CZ_RECALL
+#elif PACKETVER >= 20080617
+packetLen(0x01bc, -1) // CZ_RECALL
+#elif PACKETVER >= 20080610
+packetLen(0x01bc, 2) // CZ_RECALL
+#elif PACKETVER >= 20080603
+packetLen(0x01bc, 282) // CZ_RECALL
+#elif PACKETVER >= 20080528
+packetLen(0x01bc, 7) // CZ_RECALL
+#elif PACKETVER >= 20080520
+packetLen(0x01bc, 10) // CZ_RECALL
+#elif PACKETVER >= 20080513
+packetLen(0x01bc, 20) // CZ_RECALL
+#elif PACKETVER >= 20080507
+packetLen(0x01bc, 39) // CZ_RECALL
+#elif PACKETVER >= 20080429
+packetLen(0x01bc, -1) // CZ_RECALL
+#elif PACKETVER >= 20080422
+packetLen(0x01bc, 26) // CZ_RECALL
+#elif PACKETVER >= 20080415
+packetLen(0x01bc, -1) // CZ_RECALL
+#elif PACKETVER >= 20080408
+packetLen(0x01bc, 8) // CZ_RECALL
+#elif PACKETVER >= 20080401
+packetLen(0x01bc, 4) // CZ_RECALL
+#elif PACKETVER >= 20080325
+packetLen(0x01bc, 26) // CZ_RECALL
+#elif PACKETVER >= 20080318
+packetLen(0x01bc, 4) // CZ_RECALL
+#elif PACKETVER >= 20080311
+packetLen(0x01bc, 9) // CZ_RECALL
+#elif PACKETVER >= 20080304
+packetLen(0x01bc, 6) // CZ_RECALL
+#elif PACKETVER >= 20080226
+packetLen(0x01bc, 86) // CZ_RECALL
+#elif PACKETVER >= 20080219
+packetLen(0x01bc, 9) // CZ_RECALL
+#elif PACKETVER >= 20080124
+packetLen(0x01bc, 10) // CZ_RECALL
+#elif PACKETVER >= 20080102
+packetLen(0x01bc, 26) // CZ_RECALL
+#endif
+
+// Packet: 0x01bd
+#if PACKETVER >= 20081217
+packetLen(0x01bd, -1) // CZ_RECALL_GID
+#elif PACKETVER >= 20081203
+packetLen(0x01bd, 6) // CZ_RECALL_GID
+#elif PACKETVER >= 20081112
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01bd, 4) // CZ_RECALL_GID
+#elif PACKETVER >= 20081015
+packetLen(0x01bd, -1) // CZ_RECALL_GID
+#elif PACKETVER >= 20081008
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+#elif PACKETVER >= 20081001
+packetLen(0x01bd, 6) // CZ_RECALL_GID
+#elif PACKETVER >= 20080924
+packetLen(0x01bd, 97) // CZ_RECALL_GID
+#elif PACKETVER >= 20080820
+packetLen(0x01bd, -1) // CZ_RECALL_GID
+#elif PACKETVER >= 20080813
+packetLen(0x01bd, 22) // CZ_RECALL_GID
+#elif PACKETVER >= 20080730
+packetLen(0x01bd, 6) // CZ_RECALL_GID
+#elif PACKETVER >= 20080715
+packetLen(0x01bd, -1) // CZ_RECALL_GID
+#elif PACKETVER >= 20080708
+packetLen(0x01bd, 43) // CZ_RECALL_GID
+#elif PACKETVER >= 20080701
+packetLen(0x01bd, 6) // CZ_RECALL_GID
+#elif PACKETVER >= 20080624
+packetLen(0x01bd, 22) // CZ_RECALL_GID
+#elif PACKETVER >= 20080617
+packetLen(0x01bd, 44) // CZ_RECALL_GID
+#elif PACKETVER >= 20080610
+packetLen(0x01bd, 3) // CZ_RECALL_GID
+#elif PACKETVER >= 20080603
+packetLen(0x01bd, -1) // CZ_RECALL_GID
+#elif PACKETVER >= 20080528
+packetLen(0x01bd, 9) // CZ_RECALL_GID
+#elif PACKETVER >= 20080520
+packetLen(0x01bd, 35) // CZ_RECALL_GID
+#elif PACKETVER >= 20080507
+packetLen(0x01bd, 4) // CZ_RECALL_GID
+#elif PACKETVER >= 20080429
+packetLen(0x01bd, -1) // CZ_RECALL_GID
+#elif PACKETVER >= 20080422
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+#elif PACKETVER >= 20080415
+packetLen(0x01bd, -1) // CZ_RECALL_GID
+#elif PACKETVER >= 20080408
+packetLen(0x01bd, 102) // CZ_RECALL_GID
+#elif PACKETVER >= 20080401
+packetLen(0x01bd, -1) // CZ_RECALL_GID
+#elif PACKETVER >= 20080325
+packetLen(0x01bd, 21) // CZ_RECALL_GID
+#elif PACKETVER >= 20080311
+packetLen(0x01bd, 6) // CZ_RECALL_GID
+#elif PACKETVER >= 20080304
+packetLen(0x01bd, 102) // CZ_RECALL_GID
+#elif PACKETVER >= 20080226
+packetLen(0x01bd, -1) // CZ_RECALL_GID
+#elif PACKETVER >= 20080219
+packetLen(0x01bd, 6) // CZ_RECALL_GID
+#elif PACKETVER >= 20080124
+packetLen(0x01bd, 2) // CZ_RECALL_GID
+#elif PACKETVER >= 20080102
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+#endif
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+#if PACKETVER >= 20081217
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+#elif PACKETVER >= 20081203
+packetLen(0x01c3, 6) // ZC_BROADCAST2
+#elif PACKETVER >= 20081126
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+#elif PACKETVER >= 20081119
+packetLen(0x01c3, 4) // ZC_BROADCAST2
+#elif PACKETVER >= 20081112
+packetLen(0x01c3, 2) // ZC_BROADCAST2
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+#elif PACKETVER >= 20081029
+packetLen(0x01c3, 3) // ZC_BROADCAST2
+#elif PACKETVER >= 20081022
+packetLen(0x01c3, 26) // ZC_BROADCAST2
+#elif PACKETVER >= 20081015
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+#elif PACKETVER >= 20081008
+packetLen(0x01c3, 186) // ZC_BROADCAST2
+#elif PACKETVER >= 20080924
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+#elif PACKETVER >= 20080917
+packetLen(0x01c3, 31) // ZC_BROADCAST2
+#elif PACKETVER >= 20080910
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+#elif PACKETVER >= 20080903
+packetLen(0x01c3, 59) // ZC_BROADCAST2
+#elif PACKETVER >= 20080827
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+#elif PACKETVER >= 20080820
+packetLen(0x01c3, 43) // ZC_BROADCAST2
+#elif PACKETVER >= 20080813
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+#elif PACKETVER >= 20080806
+packetLen(0x01c3, 11) // ZC_BROADCAST2
+#elif PACKETVER >= 20080730
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+#elif PACKETVER >= 20080722
+packetLen(0x01c3, 26) // ZC_BROADCAST2
+#elif PACKETVER >= 20080708
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+#elif PACKETVER >= 20080701
+packetLen(0x01c3, 10) // ZC_BROADCAST2
+#elif PACKETVER >= 20080624
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+#elif PACKETVER >= 20080617
+packetLen(0x01c3, 6) // ZC_BROADCAST2
+#elif PACKETVER >= 20080610
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+#elif PACKETVER >= 20080603
+packetLen(0x01c3, 58) // ZC_BROADCAST2
+#elif PACKETVER >= 20080520
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+#elif PACKETVER >= 20080513
+packetLen(0x01c3, 66) // ZC_BROADCAST2
+#elif PACKETVER >= 20080507
+packetLen(0x01c3, 7) // ZC_BROADCAST2
+#elif PACKETVER >= 20080429
+packetLen(0x01c3, 3) // ZC_BROADCAST2
+#elif PACKETVER >= 20080422
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+#elif PACKETVER >= 20080415
+packetLen(0x01c3, 30) // ZC_BROADCAST2
+#elif PACKETVER >= 20080408
+packetLen(0x01c3, 6) // ZC_BROADCAST2
+#elif PACKETVER >= 20080401
+packetLen(0x01c3, 14) // ZC_BROADCAST2
+#elif PACKETVER >= 20080325
+packetLen(0x01c3, 30) // ZC_BROADCAST2
+#elif PACKETVER >= 20080318
+packetLen(0x01c3, 9) // ZC_BROADCAST2
+#elif PACKETVER >= 20080311
+packetLen(0x01c3, 58) // ZC_BROADCAST2
+#elif PACKETVER >= 20080304
+packetLen(0x01c3, 4) // ZC_BROADCAST2
+#elif PACKETVER >= 20080226
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+#elif PACKETVER >= 20080219
+packetLen(0x01c3, 14) // ZC_BROADCAST2
+#elif PACKETVER >= 20080124
+packetLen(0x01c3, 3) // ZC_BROADCAST2
+#elif PACKETVER >= 20080102
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+#endif
+
+// Packet: 0x01c4
+#if PACKETVER >= 20081217
+packetLen(0x01c4, 9) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20081112
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01c4, 6) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20081008
+packetLen(0x01c4, -1) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20081001
+packetLen(0x01c4, 5) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080924
+packetLen(0x01c4, 10) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080917
+packetLen(0x01c4, 282) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080910
+packetLen(0x01c4, -1) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080903
+packetLen(0x01c4, 11) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080820
+packetLen(0x01c4, -1) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080813
+packetLen(0x01c4, 4) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080730
+packetLen(0x01c4, -1) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080722
+packetLen(0x01c4, 34) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080715
+packetLen(0x01c4, -1) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080708
+packetLen(0x01c4, 5) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080617
+packetLen(0x01c4, -1) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080610
+packetLen(0x01c4, 33) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080528
+packetLen(0x01c4, 6) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080520
+packetLen(0x01c4, -1) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080513
+packetLen(0x01c4, 3) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080507
+packetLen(0x01c4, 31) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080429
+packetLen(0x01c4, 53) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080422
+packetLen(0x01c4, 34) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080415
+packetLen(0x01c4, 11) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080408
+packetLen(0x01c4, -1) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080401
+packetLen(0x01c4, 2) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080325
+packetLen(0x01c4, 21) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080311
+packetLen(0x01c4, 2) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080219
+packetLen(0x01c4, -1) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080124
+packetLen(0x01c4, 28) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080102
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+#endif
+
+// Packet: 0x01c5
+#if PACKETVER >= 20081126
+packetLen(0x01c5, -1) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20081119
+packetLen(0x01c5, 97) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20081112
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01c5, 14) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20081029
+packetLen(0x01c5, 15) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20081008
+packetLen(0x01c5, -1) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20081001
+packetLen(0x01c5, 2) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080924
+packetLen(0x01c5, 3) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080917
+packetLen(0x01c5, -1) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080910
+packetLen(0x01c5, 13) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080827
+packetLen(0x01c5, -1) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080820
+packetLen(0x01c5, 6) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080813
+packetLen(0x01c5, 23) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080730
+packetLen(0x01c5, -1) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080722
+packetLen(0x01c5, 11) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080715
+packetLen(0x01c5, -1) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080708
+packetLen(0x01c5, 10) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080624
+packetLen(0x01c5, -1) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080617
+packetLen(0x01c5, 8) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080610
+packetLen(0x01c5, 26) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080603
+packetLen(0x01c5, 30) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080528
+packetLen(0x01c5, -1) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080520
+packetLen(0x01c5, 11) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080513
+packetLen(0x01c5, 3) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080429
+packetLen(0x01c5, -1) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080422
+packetLen(0x01c5, 4) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080415
+packetLen(0x01c5, -1) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080408
+packetLen(0x01c5, 7) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080401
+packetLen(0x01c5, -1) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080325
+packetLen(0x01c5, 31) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080318
+packetLen(0x01c5, -1) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080311
+packetLen(0x01c5, 10) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080226
+packetLen(0x01c5, -1) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080219
+packetLen(0x01c5, 28) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080124
+packetLen(0x01c5, 90) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080102
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+#endif
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+#if PACKETVER >= 20081126
+packetLen(0x01c8, -1) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20081119
+packetLen(0x01c8, 10) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20081112
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01c8, -1) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20081029
+packetLen(0x01c8, 35) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20081015
+packetLen(0x01c8, 6) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20081008
+packetLen(0x01c8, 35) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20081001
+packetLen(0x01c8, 6) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080910
+packetLen(0x01c8, -1) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080903
+packetLen(0x01c8, 8) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080806
+packetLen(0x01c8, -1) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080730
+packetLen(0x01c8, 4) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080722
+packetLen(0x01c8, -1) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080708
+packetLen(0x01c8, 2) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080624
+packetLen(0x01c8, -1) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080617
+packetLen(0x01c8, 65) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080610
+packetLen(0x01c8, -1) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080603
+packetLen(0x01c8, 8) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080513
+packetLen(0x01c8, -1) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080507
+packetLen(0x01c8, 29) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080429
+packetLen(0x01c8, 8) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080415
+packetLen(0x01c8, -1) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080408
+packetLen(0x01c8, 26) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080401
+packetLen(0x01c8, 2) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080325
+packetLen(0x01c8, 4) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080318
+packetLen(0x01c8, 6) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080311
+packetLen(0x01c8, 4) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080304
+packetLen(0x01c8, 11) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080226
+packetLen(0x01c8, 8) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080219
+packetLen(0x01c8, 6) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080124
+packetLen(0x01c8, 5) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080102
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+#endif
+
+// Packet: 0x01c9
+#if PACKETVER >= 20081217
+packetLen(0x01c9, 6) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20081203
+packetLen(0x01c9, -1) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20081126
+packetLen(0x01c9, 4) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20081112
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01c9, -1) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20081029
+packetLen(0x01c9, 14) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080917
+packetLen(0x01c9, -1) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080910
+packetLen(0x01c9, 6) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080903
+packetLen(0x01c9, -1) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080827
+packetLen(0x01c9, 6) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080813
+packetLen(0x01c9, -1) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080806
+packetLen(0x01c9, 7) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080730
+packetLen(0x01c9, 26) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080722
+packetLen(0x01c9, 6) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080715
+packetLen(0x01c9, -1) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080708
+packetLen(0x01c9, 4) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080701
+packetLen(0x01c9, -1) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080624
+packetLen(0x01c9, 11) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080617
+packetLen(0x01c9, 3) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080610
+packetLen(0x01c9, -1) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080603
+packetLen(0x01c9, 4) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080528
+packetLen(0x01c9, 14) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080513
+packetLen(0x01c9, -1) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080507
+packetLen(0x01c9, 6) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080429
+packetLen(0x01c9, 4) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080415
+packetLen(0x01c9, 58) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080408
+packetLen(0x01c9, -1) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080401
+packetLen(0x01c9, 7) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080325
+packetLen(0x01c9, 2) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080318
+packetLen(0x01c9, -1) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080304
+packetLen(0x01c9, 2) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080226
+packetLen(0x01c9, 22) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080219
+packetLen(0x01c9, 26) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080124
+packetLen(0x01c9, -1) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080102
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+#endif
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+#if PACKETVER >= 20081217
+packetLen(0x01cd, 20) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20081203
+packetLen(0x01cd, 114) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20081126
+packetLen(0x01cd, 5) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20081112
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01cd, -1) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20081029
+packetLen(0x01cd, 26) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080917
+packetLen(0x01cd, -1) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080910
+packetLen(0x01cd, 33) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080903
+packetLen(0x01cd, 2) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080813
+packetLen(0x01cd, -1) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080806
+packetLen(0x01cd, 11) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080708
+packetLen(0x01cd, -1) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080701
+packetLen(0x01cd, 10) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080617
+packetLen(0x01cd, -1) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080610
+packetLen(0x01cd, 102) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080603
+packetLen(0x01cd, 4) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080513
+packetLen(0x01cd, -1) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080507
+packetLen(0x01cd, 10) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080429
+packetLen(0x01cd, 3) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080422
+packetLen(0x01cd, 10) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080415
+packetLen(0x01cd, -1) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080408
+packetLen(0x01cd, 12) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080401
+packetLen(0x01cd, 6) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080325
+packetLen(0x01cd, 14) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080318
+packetLen(0x01cd, 2) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080311
+packetLen(0x01cd, 6) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080304
+packetLen(0x01cd, 5) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080226
+packetLen(0x01cd, -1) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080219
+packetLen(0x01cd, 8) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080124
+packetLen(0x01cd, 10) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080102
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+#endif
+
+// Packet: 0x01ce
+#if PACKETVER >= 20081203
+packetLen(0x01ce, -1) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20081126
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20081119
+packetLen(0x01ce, 15) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20081112
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01ce, -1) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20081029
+packetLen(0x01ce, 10) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20081015
+packetLen(0x01ce, -1) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20081008
+packetLen(0x01ce, 53) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080917
+packetLen(0x01ce, -1) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080910
+packetLen(0x01ce, 10) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080903
+packetLen(0x01ce, 30) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080827
+packetLen(0x01ce, 8) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080820
+packetLen(0x01ce, -1) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080813
+packetLen(0x01ce, 7) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080806
+packetLen(0x01ce, 13) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080624
+packetLen(0x01ce, -1) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080617
+packetLen(0x01ce, 27) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080610
+packetLen(0x01ce, 3) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080603
+packetLen(0x01ce, -1) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080528
+packetLen(0x01ce, 22) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080520
+packetLen(0x01ce, 53) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080513
+packetLen(0x01ce, 4) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080507
+packetLen(0x01ce, 65) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080429
+packetLen(0x01ce, 2) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080422
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080408
+packetLen(0x01ce, -1) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080401
+packetLen(0x01ce, 26) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080325
+packetLen(0x01ce, 3) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080318
+packetLen(0x01ce, 21) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080304
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080226
+packetLen(0x01ce, 2) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080219
+packetLen(0x01ce, 28) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080102
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+#endif
+
+// Packet: 0x01cf
+#if PACKETVER >= 20081217
+packetLen(0x01cf, -1) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20081203
+packetLen(0x01cf, 54) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20081126
+packetLen(0x01cf, 8) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20081119
+packetLen(0x01cf, -1) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20081112
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x01cf, -1) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20081022
+packetLen(0x01cf, 6) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20081008
+packetLen(0x01cf, -1) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20081001
+packetLen(0x01cf, 15) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080924
+packetLen(0x01cf, -1) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080917
+packetLen(0x01cf, 5) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080903
+packetLen(0x01cf, -1) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080827
+packetLen(0x01cf, 3) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080806
+packetLen(0x01cf, -1) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080730
+packetLen(0x01cf, 5) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080722
+packetLen(0x01cf, 7) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080715
+packetLen(0x01cf, -1) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080708
+packetLen(0x01cf, 14) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080701
+packetLen(0x01cf, 3) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080624
+packetLen(0x01cf, 11) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080617
+packetLen(0x01cf, -1) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080610
+packetLen(0x01cf, 2) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080603
+packetLen(0x01cf, -1) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080528
+packetLen(0x01cf, 15) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080520
+packetLen(0x01cf, 26) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080513
+packetLen(0x01cf, -1) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080507
+packetLen(0x01cf, 2) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080415
+packetLen(0x01cf, -1) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080408
+packetLen(0x01cf, 39) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080401
+packetLen(0x01cf, -1) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080325
+packetLen(0x01cf, 186) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080318
+packetLen(0x01cf, 6) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080311
+packetLen(0x01cf, 23) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080304
+packetLen(0x01cf, -1) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080226
+packetLen(0x01cf, 102) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080124
+packetLen(0x01cf, 5) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080102
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+#endif
+
+// Packet: 0x01d0
+#if PACKETVER >= 20081217
+packetLen(0x01d0, -1) // ZC_SPIRITS
+#elif PACKETVER >= 20081203
+packetLen(0x01d0, 282) // ZC_SPIRITS
+#elif PACKETVER >= 20081126
+packetLen(0x01d0, 31) // ZC_SPIRITS
+#elif PACKETVER >= 20081119
+packetLen(0x01d0, 27) // ZC_SPIRITS
+#elif PACKETVER >= 20081112
+packetLen(0x01d0, 8) // ZC_SPIRITS
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01d0, -1) // ZC_SPIRITS
+#elif PACKETVER >= 20081029
+packetLen(0x01d0, 21) // ZC_SPIRITS
+#elif PACKETVER >= 20081015
+packetLen(0x01d0, -1) // ZC_SPIRITS
+#elif PACKETVER >= 20081008
+packetLen(0x01d0, 10) // ZC_SPIRITS
+#elif PACKETVER >= 20080917
+packetLen(0x01d0, -1) // ZC_SPIRITS
+#elif PACKETVER >= 20080910
+packetLen(0x01d0, 31) // ZC_SPIRITS
+#elif PACKETVER >= 20080820
+packetLen(0x01d0, -1) // ZC_SPIRITS
+#elif PACKETVER >= 20080813
+packetLen(0x01d0, 32) // ZC_SPIRITS
+#elif PACKETVER >= 20080806
+packetLen(0x01d0, 6) // ZC_SPIRITS
+#elif PACKETVER >= 20080715
+packetLen(0x01d0, -1) // ZC_SPIRITS
+#elif PACKETVER >= 20080708
+packetLen(0x01d0, 33) // ZC_SPIRITS
+#elif PACKETVER >= 20080701
+packetLen(0x01d0, 3) // ZC_SPIRITS
+#elif PACKETVER >= 20080624
+packetLen(0x01d0, 9) // ZC_SPIRITS
+#elif PACKETVER >= 20080617
+packetLen(0x01d0, 53) // ZC_SPIRITS
+#elif PACKETVER >= 20080610
+packetLen(0x01d0, 7) // ZC_SPIRITS
+#elif PACKETVER >= 20080603
+packetLen(0x01d0, 2) // ZC_SPIRITS
+#elif PACKETVER >= 20080528
+packetLen(0x01d0, -1) // ZC_SPIRITS
+#elif PACKETVER >= 20080520
+packetLen(0x01d0, 2) // ZC_SPIRITS
+#elif PACKETVER >= 20080513
+packetLen(0x01d0, 10) // ZC_SPIRITS
+#elif PACKETVER >= 20080422
+packetLen(0x01d0, -1) // ZC_SPIRITS
+#elif PACKETVER >= 20080415
+packetLen(0x01d0, 2) // ZC_SPIRITS
+#elif PACKETVER >= 20080408
+packetLen(0x01d0, -1) // ZC_SPIRITS
+#elif PACKETVER >= 20080401
+packetLen(0x01d0, 2) // ZC_SPIRITS
+#elif PACKETVER >= 20080325
+packetLen(0x01d0, 65) // ZC_SPIRITS
+#elif PACKETVER >= 20080318
+packetLen(0x01d0, 39) // ZC_SPIRITS
+#elif PACKETVER >= 20080304
+packetLen(0x01d0, -1) // ZC_SPIRITS
+#elif PACKETVER >= 20080226
+packetLen(0x01d0, 26) // ZC_SPIRITS
+#elif PACKETVER >= 20080219
+packetLen(0x01d0, 2) // ZC_SPIRITS
+#elif PACKETVER >= 20080124
+packetLen(0x01d0, 6) // ZC_SPIRITS
+#elif PACKETVER >= 20080102
+packetLen(0x01d0, 8) // ZC_SPIRITS
+#endif
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+#if PACKETVER >= 20081217
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+#elif PACKETVER >= 20081119
+packetLen(0x01d2, -1) // ZC_COMBODELAY
+#elif PACKETVER >= 20081112
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+#elif PACKETVER >= 20081029
+packetLen(0x01d2, 4) // ZC_COMBODELAY
+#elif PACKETVER >= 20081022
+packetLen(0x01d2, 29) // ZC_COMBODELAY
+#elif PACKETVER >= 20081015
+packetLen(0x01d2, -1) // ZC_COMBODELAY
+#elif PACKETVER >= 20081008
+packetLen(0x01d2, 4) // ZC_COMBODELAY
+#elif PACKETVER >= 20081001
+packetLen(0x01d2, 28) // ZC_COMBODELAY
+#elif PACKETVER >= 20080917
+packetLen(0x01d2, 6) // ZC_COMBODELAY
+#elif PACKETVER >= 20080910
+packetLen(0x01d2, -1) // ZC_COMBODELAY
+#elif PACKETVER >= 20080903
+packetLen(0x01d2, 4) // ZC_COMBODELAY
+#elif PACKETVER >= 20080827
+packetLen(0x01d2, -1) // ZC_COMBODELAY
+#elif PACKETVER >= 20080820
+packetLen(0x01d2, 7) // ZC_COMBODELAY
+#elif PACKETVER >= 20080806
+packetLen(0x01d2, -1) // ZC_COMBODELAY
+#elif PACKETVER >= 20080730
+packetLen(0x01d2, 21) // ZC_COMBODELAY
+#elif PACKETVER >= 20080722
+packetLen(0x01d2, 28) // ZC_COMBODELAY
+#elif PACKETVER >= 20080708
+packetLen(0x01d2, -1) // ZC_COMBODELAY
+#elif PACKETVER >= 20080701
+packetLen(0x01d2, 2) // ZC_COMBODELAY
+#elif PACKETVER >= 20080624
+packetLen(0x01d2, -1) // ZC_COMBODELAY
+#elif PACKETVER >= 20080617
+packetLen(0x01d2, 7) // ZC_COMBODELAY
+#elif PACKETVER >= 20080603
+packetLen(0x01d2, 4) // ZC_COMBODELAY
+#elif PACKETVER >= 20080520
+packetLen(0x01d2, -1) // ZC_COMBODELAY
+#elif PACKETVER >= 20080513
+packetLen(0x01d2, 8) // ZC_COMBODELAY
+#elif PACKETVER >= 20080507
+packetLen(0x01d2, 58) // ZC_COMBODELAY
+#elif PACKETVER >= 20080415
+packetLen(0x01d2, -1) // ZC_COMBODELAY
+#elif PACKETVER >= 20080408
+packetLen(0x01d2, 18) // ZC_COMBODELAY
+#elif PACKETVER >= 20080401
+packetLen(0x01d2, 6) // ZC_COMBODELAY
+#elif PACKETVER >= 20080325
+packetLen(0x01d2, 12) // ZC_COMBODELAY
+#elif PACKETVER >= 20080318
+packetLen(0x01d2, 30) // ZC_COMBODELAY
+#elif PACKETVER >= 20080311
+packetLen(0x01d2, 19) // ZC_COMBODELAY
+#elif PACKETVER >= 20080304
+packetLen(0x01d2, 6) // ZC_COMBODELAY
+#elif PACKETVER >= 20080226
+packetLen(0x01d2, 8) // ZC_COMBODELAY
+#elif PACKETVER >= 20080219
+packetLen(0x01d2, -1) // ZC_COMBODELAY
+#elif PACKETVER >= 20080124
+packetLen(0x01d2, 53) // ZC_COMBODELAY
+#elif PACKETVER >= 20080102
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+#endif
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+#if PACKETVER >= 20081203
+packetLen(0x01d4, -1) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20081126
+packetLen(0x01d4, 29) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20081112
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01d4, 2) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20081008
+packetLen(0x01d4, -1) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20081001
+packetLen(0x01d4, 12) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080924
+packetLen(0x01d4, -1) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080917
+packetLen(0x01d4, 28) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080910
+packetLen(0x01d4, 26) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080827
+packetLen(0x01d4, -1) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080820
+packetLen(0x01d4, 22) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080813
+packetLen(0x01d4, -1) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080806
+packetLen(0x01d4, 2) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080708
+packetLen(0x01d4, -1) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080701
+packetLen(0x01d4, 8) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080624
+packetLen(0x01d4, 54) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080617
+packetLen(0x01d4, -1) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080610
+packetLen(0x01d4, 20) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080520
+packetLen(0x01d4, -1) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080513
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080401
+packetLen(0x01d4, -1) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080325
+packetLen(0x01d4, 19) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080318
+packetLen(0x01d4, 60) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080311
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080304
+packetLen(0x01d4, 3) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080226
+packetLen(0x01d4, -1) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080219
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080124
+packetLen(0x01d4, 15) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080102
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+#endif
+
+// Packet: 0x01d5
+#if PACKETVER >= 20081217
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20081203
+packetLen(0x01d5, 26) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20081126
+packetLen(0x01d5, 8) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20081119
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20081112
+packetLen(0x01d5, 8) // CZ_INPUT_EDITDLGSTR
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01d5, 2) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20081029
+packetLen(0x01d5, 11) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20081022
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20081015
+packetLen(0x01d5, 4) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20081008
+packetLen(0x01d5, 6) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20081001
+packetLen(0x01d5, 21) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080924
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080917
+packetLen(0x01d5, 18) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080910
+packetLen(0x01d5, 10) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080903
+packetLen(0x01d5, 29) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080827
+packetLen(0x01d5, 10) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080813
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080806
+packetLen(0x01d5, 53) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080715
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080708
+packetLen(0x01d5, 10) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080701
+packetLen(0x01d5, 3) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080624
+packetLen(0x01d5, 27) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080610
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080603
+packetLen(0x01d5, 9) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080528
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080520
+packetLen(0x01d5, 6) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080507
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080429
+packetLen(0x01d5, 4) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080408
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080401
+packetLen(0x01d5, 97) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080325
+packetLen(0x01d5, 6) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080318
+packetLen(0x01d5, 34) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080311
+packetLen(0x01d5, 13) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080304
+packetLen(0x01d5, 5) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080226
+packetLen(0x01d5, 6) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080219
+packetLen(0x01d5, 16) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080102
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+#endif
+
+// Packet: 0x01d6
+#if PACKETVER >= 20081217
+packetLen(0x01d6, 11) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20081203
+packetLen(0x01d6, 3) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20081126
+packetLen(0x01d6, 11) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20081119
+packetLen(0x01d6, 86) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20081112
+packetLen(0x01d6, 14) // ZC_NOTIFY_MAPPROPERTY2
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081001
+packetLen(0x01d6, -1) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080924
+packetLen(0x01d6, 28) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080917
+packetLen(0x01d6, -1) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080910
+packetLen(0x01d6, 22) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080903
+packetLen(0x01d6, 58) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080827
+packetLen(0x01d6, -1) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080820
+packetLen(0x01d6, 10) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080813
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080806
+packetLen(0x01d6, 6) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080722
+packetLen(0x01d6, -1) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080715
+packetLen(0x01d6, 6) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080708
+packetLen(0x01d6, 3) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080701
+packetLen(0x01d6, 30) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080624
+packetLen(0x01d6, 3) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080617
+packetLen(0x01d6, -1) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080610
+packetLen(0x01d6, 6) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080603
+packetLen(0x01d6, -1) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080528
+packetLen(0x01d6, 8) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080520
+packetLen(0x01d6, 2) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080513
+packetLen(0x01d6, 35) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080507
+packetLen(0x01d6, -1) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080429
+packetLen(0x01d6, 6) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080422
+packetLen(0x01d6, -1) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080415
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080408
+packetLen(0x01d6, 54) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080401
+packetLen(0x01d6, 11) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080325
+packetLen(0x01d6, 54) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080318
+packetLen(0x01d6, 58) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080311
+packetLen(0x01d6, 5) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080304
+packetLen(0x01d6, 6) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080226
+packetLen(0x01d6, 10) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080219
+packetLen(0x01d6, 6) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080124
+packetLen(0x01d6, 16) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080102
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+#endif
+
+// Packet: 0x01d7
+#if PACKETVER >= 20081217
+packetLen(0x01d7, 114) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20081203
+packetLen(0x01d7, 6) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20081112
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x01d7, -1) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20081022
+packetLen(0x01d7, 55) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20081015
+packetLen(0x01d7, 60) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20081008
+packetLen(0x01d7, -1) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20081001
+packetLen(0x01d7, 4) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080910
+packetLen(0x01d7, -1) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080903
+packetLen(0x01d7, 102) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080827
+packetLen(0x01d7, 4) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080820
+packetLen(0x01d7, 8) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080806
+packetLen(0x01d7, -1) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080722
+packetLen(0x01d7, 6) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080715
+packetLen(0x01d7, -1) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080708
+packetLen(0x01d7, 27) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080701
+packetLen(0x01d7, 14) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080624
+packetLen(0x01d7, -1) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080617
+packetLen(0x01d7, 8) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080610
+packetLen(0x01d7, -1) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080603
+packetLen(0x01d7, 5) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080528
+packetLen(0x01d7, 9) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080520
+packetLen(0x01d7, 282) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080513
+packetLen(0x01d7, -1) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080507
+packetLen(0x01d7, 2) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080408
+packetLen(0x01d7, -1) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080401
+packetLen(0x01d7, 3) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080325
+packetLen(0x01d7, -1) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080318
+packetLen(0x01d7, 4) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080311
+packetLen(0x01d7, 28) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080304
+packetLen(0x01d7, 54) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080226
+packetLen(0x01d7, 2) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080219
+packetLen(0x01d7, 35) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080124
+packetLen(0x01d7, 2) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080102
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+#endif
+
+// Packet: 0x01d8
+#if PACKETVER >= 20081217
+packetLen(0x01d8, 39) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20081203
+packetLen(0x01d8, 5) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20081126
+packetLen(0x01d8, -1) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20081119
+packetLen(0x01d8, 9) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20081112
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01d8, 30) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20081008
+packetLen(0x01d8, -1) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20081001
+packetLen(0x01d8, 8) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080917
+packetLen(0x01d8, -1) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080910
+packetLen(0x01d8, 6) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080820
+packetLen(0x01d8, -1) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080813
+packetLen(0x01d8, 3) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080806
+packetLen(0x01d8, 34) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080722
+packetLen(0x01d8, -1) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080715
+packetLen(0x01d8, 10) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080708
+packetLen(0x01d8, -1) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080701
+packetLen(0x01d8, 6) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080624
+packetLen(0x01d8, -1) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080617
+packetLen(0x01d8, 6) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080610
+packetLen(0x01d8, -1) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080603
+packetLen(0x01d8, 11) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080528
+packetLen(0x01d8, 3) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080520
+packetLen(0x01d8, 6) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080513
+packetLen(0x01d8, -1) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080507
+packetLen(0x01d8, 6) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080429
+packetLen(0x01d8, 186) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080415
+packetLen(0x01d8, -1) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080408
+packetLen(0x01d8, 4) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080401
+packetLen(0x01d8, 27) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080325
+packetLen(0x01d8, -1) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080318
+packetLen(0x01d8, 5) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080311
+packetLen(0x01d8, 2) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080304
+packetLen(0x01d8, 10) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080226
+packetLen(0x01d8, 15) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080219
+packetLen(0x01d8, -1) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080124
+packetLen(0x01d8, 3) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080102
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+#endif
+
+// Packet: 0x01d9
+#if PACKETVER >= 20081217
+packetLen(0x01d9, 28) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20081203
+packetLen(0x01d9, 14) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20081126
+packetLen(0x01d9, 8) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20081119
+packetLen(0x01d9, 10) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20081112
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01d9, -1) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20081029
+packetLen(0x01d9, 23) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20081008
+packetLen(0x01d9, -1) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20081001
+packetLen(0x01d9, 14) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080917
+packetLen(0x01d9, -1) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080910
+packetLen(0x01d9, 282) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080903
+packetLen(0x01d9, 2) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080820
+packetLen(0x01d9, -1) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080813
+packetLen(0x01d9, 7) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080806
+packetLen(0x01d9, 27) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080730
+packetLen(0x01d9, 13) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080708
+packetLen(0x01d9, -1) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080701
+packetLen(0x01d9, 39) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080624
+packetLen(0x01d9, 15) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080617
+packetLen(0x01d9, 22) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080610
+packetLen(0x01d9, 8) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080528
+packetLen(0x01d9, -1) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080520
+packetLen(0x01d9, 4) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080513
+packetLen(0x01d9, -1) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080507
+packetLen(0x01d9, 60) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080429
+packetLen(0x01d9, -1) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080422
+packetLen(0x01d9, 6) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080415
+packetLen(0x01d9, 26) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080408
+packetLen(0x01d9, 2) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080325
+packetLen(0x01d9, -1) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080318
+packetLen(0x01d9, 282) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080311
+packetLen(0x01d9, 28) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080304
+packetLen(0x01d9, 42) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080226
+packetLen(0x01d9, 8) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080219
+packetLen(0x01d9, 282) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080124
+packetLen(0x01d9, 8) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080102
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+#endif
+
+// Packet: 0x01da
+#if PACKETVER >= 20081217
+packetLen(0x01da, -1) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20081203
+packetLen(0x01da, 28) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20081126
+packetLen(0x01da, -1) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20081119
+packetLen(0x01da, 4) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20081112
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01da, -1) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20081029
+packetLen(0x01da, 6) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20081022
+packetLen(0x01da, -1) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20081015
+packetLen(0x01da, 282) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20081008
+packetLen(0x01da, 55) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20081001
+packetLen(0x01da, 8) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080924
+packetLen(0x01da, 3) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080917
+packetLen(0x01da, 2) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080910
+packetLen(0x01da, 3) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080903
+packetLen(0x01da, -1) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080827
+packetLen(0x01da, 2) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080820
+packetLen(0x01da, 14) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080813
+packetLen(0x01da, -1) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080806
+packetLen(0x01da, 2) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080730
+packetLen(0x01da, -1) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080722
+packetLen(0x01da, 8) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080708
+packetLen(0x01da, -1) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080701
+packetLen(0x01da, 32) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080624
+packetLen(0x01da, -1) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080617
+packetLen(0x01da, 2) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080610
+packetLen(0x01da, 12) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080603
+packetLen(0x01da, 10) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080528
+packetLen(0x01da, -1) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080520
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080513
+packetLen(0x01da, 5) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080507
+packetLen(0x01da, 10) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080429
+packetLen(0x01da, 6) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080422
+packetLen(0x01da, 2) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080415
+packetLen(0x01da, 6) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080408
+packetLen(0x01da, 8) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080401
+packetLen(0x01da, 9) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080325
+packetLen(0x01da, 6) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080318
+packetLen(0x01da, 2) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080311
+packetLen(0x01da, 79) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080226
+packetLen(0x01da, 6) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080219
+packetLen(0x01da, 2) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080124
+packetLen(0x01da, 12) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080102
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+#endif
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+#if PACKETVER >= 20081126
+packetLen(0x01de, -1) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20081119
+packetLen(0x01de, 16) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20081112
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01de, 22) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20081029
+packetLen(0x01de, -1) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20081022
+packetLen(0x01de, 2) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20081015
+packetLen(0x01de, -1) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20081008
+packetLen(0x01de, 7) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20081001
+packetLen(0x01de, -1) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080924
+packetLen(0x01de, 2) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080917
+packetLen(0x01de, 86) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080827
+packetLen(0x01de, -1) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080820
+packetLen(0x01de, 60) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080813
+packetLen(0x01de, 3) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080806
+packetLen(0x01de, -1) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080730
+packetLen(0x01de, 27) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080722
+packetLen(0x01de, -1) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080715
+packetLen(0x01de, 2) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080708
+packetLen(0x01de, 3) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080701
+packetLen(0x01de, -1) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080624
+packetLen(0x01de, 22) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080617
+packetLen(0x01de, 14) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080603
+packetLen(0x01de, 6) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080528
+packetLen(0x01de, 14) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080520
+packetLen(0x01de, -1) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080513
+packetLen(0x01de, 8) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080507
+packetLen(0x01de, -1) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080429
+packetLen(0x01de, 3) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080422
+packetLen(0x01de, -1) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080415
+packetLen(0x01de, 30) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080408
+packetLen(0x01de, 2) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080401
+packetLen(0x01de, 15) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080325
+packetLen(0x01de, -1) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080318
+packetLen(0x01de, 15) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080311
+packetLen(0x01de, -1) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080304
+packetLen(0x01de, 7) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080226
+packetLen(0x01de, -1) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080219
+packetLen(0x01de, 3) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080124
+packetLen(0x01de, 2) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080102
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+#endif
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+#if PACKETVER >= 20081217
+packetLen(0x01e1, -1) // ZC_SPIRITS2
+#elif PACKETVER >= 20081203
+packetLen(0x01e1, 10) // ZC_SPIRITS2
+#elif PACKETVER >= 20081112
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01e1, 3) // ZC_SPIRITS2
+#elif PACKETVER >= 20081029
+packetLen(0x01e1, 86) // ZC_SPIRITS2
+#elif PACKETVER >= 20081022
+packetLen(0x01e1, 39) // ZC_SPIRITS2
+#elif PACKETVER >= 20081008
+packetLen(0x01e1, -1) // ZC_SPIRITS2
+#elif PACKETVER >= 20081001
+packetLen(0x01e1, 14) // ZC_SPIRITS2
+#elif PACKETVER >= 20080924
+packetLen(0x01e1, 19) // ZC_SPIRITS2
+#elif PACKETVER >= 20080917
+packetLen(0x01e1, -1) // ZC_SPIRITS2
+#elif PACKETVER >= 20080910
+packetLen(0x01e1, 4) // ZC_SPIRITS2
+#elif PACKETVER >= 20080820
+packetLen(0x01e1, -1) // ZC_SPIRITS2
+#elif PACKETVER >= 20080813
+packetLen(0x01e1, 5) // ZC_SPIRITS2
+#elif PACKETVER >= 20080806
+packetLen(0x01e1, 14) // ZC_SPIRITS2
+#elif PACKETVER >= 20080730
+packetLen(0x01e1, 4) // ZC_SPIRITS2
+#elif PACKETVER >= 20080701
+packetLen(0x01e1, -1) // ZC_SPIRITS2
+#elif PACKETVER >= 20080624
+packetLen(0x01e1, 6) // ZC_SPIRITS2
+#elif PACKETVER >= 20080603
+packetLen(0x01e1, -1) // ZC_SPIRITS2
+#elif PACKETVER >= 20080528
+packetLen(0x01e1, 43) // ZC_SPIRITS2
+#elif PACKETVER >= 20080520
+packetLen(0x01e1, 32) // ZC_SPIRITS2
+#elif PACKETVER >= 20080513
+packetLen(0x01e1, -1) // ZC_SPIRITS2
+#elif PACKETVER >= 20080507
+packetLen(0x01e1, 3) // ZC_SPIRITS2
+#elif PACKETVER >= 20080429
+packetLen(0x01e1, -1) // ZC_SPIRITS2
+#elif PACKETVER >= 20080422
+packetLen(0x01e1, 6) // ZC_SPIRITS2
+#elif PACKETVER >= 20080415
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+#elif PACKETVER >= 20080408
+packetLen(0x01e1, 71) // ZC_SPIRITS2
+#elif PACKETVER >= 20080401
+packetLen(0x01e1, 2) // ZC_SPIRITS2
+#elif PACKETVER >= 20080325
+packetLen(0x01e1, 17) // ZC_SPIRITS2
+#elif PACKETVER >= 20080318
+packetLen(0x01e1, 60) // ZC_SPIRITS2
+#elif PACKETVER >= 20080304
+packetLen(0x01e1, -1) // ZC_SPIRITS2
+#elif PACKETVER >= 20080226
+packetLen(0x01e1, 32) // ZC_SPIRITS2
+#elif PACKETVER >= 20080219
+packetLen(0x01e1, -1) // ZC_SPIRITS2
+#elif PACKETVER >= 20080124
+packetLen(0x01e1, 11) // ZC_SPIRITS2
+#elif PACKETVER >= 20080102
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+#endif
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+#if PACKETVER >= 20081126
+packetLen(0x01e7, 6) // CZ_DORIDORI
+#elif PACKETVER >= 20081112
+packetLen(0x01e7, 2) // CZ_DORIDORI
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01e7, 8) // CZ_DORIDORI
+#elif PACKETVER >= 20081029
+packetLen(0x01e7, 26) // CZ_DORIDORI
+#elif PACKETVER >= 20081022
+packetLen(0x01e7, -1) // CZ_DORIDORI
+#elif PACKETVER >= 20081015
+packetLen(0x01e7, 4) // CZ_DORIDORI
+#elif PACKETVER >= 20081001
+packetLen(0x01e7, -1) // CZ_DORIDORI
+#elif PACKETVER >= 20080924
+packetLen(0x01e7, 8) // CZ_DORIDORI
+#elif PACKETVER >= 20080917
+packetLen(0x01e7, -1) // CZ_DORIDORI
+#elif PACKETVER >= 20080910
+packetLen(0x01e7, 11) // CZ_DORIDORI
+#elif PACKETVER >= 20080903
+packetLen(0x01e7, 6) // CZ_DORIDORI
+#elif PACKETVER >= 20080827
+packetLen(0x01e7, 34) // CZ_DORIDORI
+#elif PACKETVER >= 20080820
+packetLen(0x01e7, 4) // CZ_DORIDORI
+#elif PACKETVER >= 20080813
+packetLen(0x01e7, 7) // CZ_DORIDORI
+#elif PACKETVER >= 20080806
+packetLen(0x01e7, 3) // CZ_DORIDORI
+#elif PACKETVER >= 20080730
+packetLen(0x01e7, 26) // CZ_DORIDORI
+#elif PACKETVER >= 20080722
+packetLen(0x01e7, 21) // CZ_DORIDORI
+#elif PACKETVER >= 20080715
+packetLen(0x01e7, -1) // CZ_DORIDORI
+#elif PACKETVER >= 20080708
+packetLen(0x01e7, 27) // CZ_DORIDORI
+#elif PACKETVER >= 20080624
+packetLen(0x01e7, -1) // CZ_DORIDORI
+#elif PACKETVER >= 20080617
+packetLen(0x01e7, 6) // CZ_DORIDORI
+#elif PACKETVER >= 20080610
+packetLen(0x01e7, 4) // CZ_DORIDORI
+#elif PACKETVER >= 20080603
+packetLen(0x01e7, 14) // CZ_DORIDORI
+#elif PACKETVER >= 20080528
+packetLen(0x01e7, 39) // CZ_DORIDORI
+#elif PACKETVER >= 20080520
+packetLen(0x01e7, 22) // CZ_DORIDORI
+#elif PACKETVER >= 20080513
+packetLen(0x01e7, 6) // CZ_DORIDORI
+#elif PACKETVER >= 20080507
+packetLen(0x01e7, 54) // CZ_DORIDORI
+#elif PACKETVER >= 20080429
+packetLen(0x01e7, -1) // CZ_DORIDORI
+#elif PACKETVER >= 20080422
+packetLen(0x01e7, 2) // CZ_DORIDORI
+#elif PACKETVER >= 20080415
+packetLen(0x01e7, -1) // CZ_DORIDORI
+#elif PACKETVER >= 20080408
+packetLen(0x01e7, 60) // CZ_DORIDORI
+#elif PACKETVER >= 20080401
+packetLen(0x01e7, 5) // CZ_DORIDORI
+#elif PACKETVER >= 20080325
+packetLen(0x01e7, 20) // CZ_DORIDORI
+#elif PACKETVER >= 20080318
+packetLen(0x01e7, 18) // CZ_DORIDORI
+#elif PACKETVER >= 20080311
+packetLen(0x01e7, 55) // CZ_DORIDORI
+#elif PACKETVER >= 20080304
+packetLen(0x01e7, 26) // CZ_DORIDORI
+#elif PACKETVER >= 20080219
+packetLen(0x01e7, 2) // CZ_DORIDORI
+#elif PACKETVER >= 20080124
+packetLen(0x01e7, -1) // CZ_DORIDORI
+#elif PACKETVER >= 20080102
+packetLen(0x01e7, 2) // CZ_DORIDORI
+#endif
+
+// Packet: 0x01e8
+#if PACKETVER >= 20081203
+packetLen(0x01e8, -1) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20081126
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20081112
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01e8, 8) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20081029
+packetLen(0x01e8, 59) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20081022
+packetLen(0x01e8, 6) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20081008
+packetLen(0x01e8, -1) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20081001
+packetLen(0x01e8, 54) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080924
+packetLen(0x01e8, -1) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080917
+packetLen(0x01e8, 33) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080730
+packetLen(0x01e8, -1) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080722
+packetLen(0x01e8, 59) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080715
+packetLen(0x01e8, -1) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080708
+packetLen(0x01e8, 8) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080701
+packetLen(0x01e8, -1) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080624
+packetLen(0x01e8, 22) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080617
+packetLen(0x01e8, 14) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080610
+packetLen(0x01e8, 27) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080603
+packetLen(0x01e8, -1) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080528
+packetLen(0x01e8, 53) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080520
+packetLen(0x01e8, 3) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080513
+packetLen(0x01e8, 10) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080507
+packetLen(0x01e8, 14) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080429
+packetLen(0x01e8, 10) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080422
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080415
+packetLen(0x01e8, -1) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080408
+packetLen(0x01e8, 16) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080401
+packetLen(0x01e8, 10) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080318
+packetLen(0x01e8, 4) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080311
+packetLen(0x01e8, 6) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080304
+packetLen(0x01e8, 4) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080226
+packetLen(0x01e8, -1) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080219
+packetLen(0x01e8, 6) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080124
+packetLen(0x01e8, 44) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080102
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+#endif
+
+// Packet: 0x01e9
+#if PACKETVER >= 20081217
+packetLen(0x01e9, -1) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20081203
+packetLen(0x01e9, 10) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20081126
+packetLen(0x01e9, 186) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20081119
+packetLen(0x01e9, -1) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20081112
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01e9, -1) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20081029
+packetLen(0x01e9, 28) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080910
+packetLen(0x01e9, -1) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080903
+packetLen(0x01e9, 9) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080820
+packetLen(0x01e9, -1) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080813
+packetLen(0x01e9, 15) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080806
+packetLen(0x01e9, 26) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080730
+packetLen(0x01e9, 8) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080715
+packetLen(0x01e9, -1) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080708
+packetLen(0x01e9, 3) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080701
+packetLen(0x01e9, -1) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080624
+packetLen(0x01e9, 282) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080617
+packetLen(0x01e9, 6) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080610
+packetLen(0x01e9, -1) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080528
+packetLen(0x01e9, 3) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080507
+packetLen(0x01e9, -1) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080429
+packetLen(0x01e9, 5) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080422
+packetLen(0x01e9, 3) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080415
+packetLen(0x01e9, 2) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080408
+packetLen(0x01e9, 34) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080401
+packetLen(0x01e9, 8) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080325
+packetLen(0x01e9, -1) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080318
+packetLen(0x01e9, 8) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080311
+packetLen(0x01e9, 2) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080304
+packetLen(0x01e9, 4) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080226
+packetLen(0x01e9, 12) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080219
+packetLen(0x01e9, -1) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080124
+packetLen(0x01e9, 6) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080102
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+#endif
+
+// Packet: 0x01ea
+#if PACKETVER >= 20081217
+packetLen(0x01ea, -1) // ZC_CONGRATULATION
+#elif PACKETVER >= 20081203
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+#elif PACKETVER >= 20081126
+packetLen(0x01ea, 4) // ZC_CONGRATULATION
+#elif PACKETVER >= 20081112
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01ea, -1) // ZC_CONGRATULATION
+#elif PACKETVER >= 20081029
+packetLen(0x01ea, 2) // ZC_CONGRATULATION
+#elif PACKETVER >= 20081022
+packetLen(0x01ea, -1) // ZC_CONGRATULATION
+#elif PACKETVER >= 20081015
+packetLen(0x01ea, 39) // ZC_CONGRATULATION
+#elif PACKETVER >= 20081008
+packetLen(0x01ea, 11) // ZC_CONGRATULATION
+#elif PACKETVER >= 20081001
+packetLen(0x01ea, 3) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080924
+packetLen(0x01ea, 8) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080917
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080910
+packetLen(0x01ea, 4) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080806
+packetLen(0x01ea, -1) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080730
+packetLen(0x01ea, 33) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080722
+packetLen(0x01ea, 2) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080708
+packetLen(0x01ea, -1) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080701
+packetLen(0x01ea, 97) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080624
+packetLen(0x01ea, 79) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080617
+packetLen(0x01ea, -1) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080610
+packetLen(0x01ea, 4) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080603
+packetLen(0x01ea, -1) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080528
+packetLen(0x01ea, 2) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080513
+packetLen(0x01ea, -1) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080507
+packetLen(0x01ea, 12) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080429
+packetLen(0x01ea, 22) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080422
+packetLen(0x01ea, -1) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080415
+packetLen(0x01ea, 282) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080401
+packetLen(0x01ea, -1) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080325
+packetLen(0x01ea, 27) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080318
+packetLen(0x01ea, -1) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080311
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080304
+packetLen(0x01ea, 60) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080219
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080124
+packetLen(0x01ea, 10) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080102
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+#endif
+
+// Packet: 0x01eb
+#if PACKETVER >= 20081126
+packetLen(0x01eb, -1) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20081119
+packetLen(0x01eb, 2) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20081112
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x01eb, -1) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20081015
+packetLen(0x01eb, 2) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20081008
+packetLen(0x01eb, -1) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20081001
+packetLen(0x01eb, 30) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080924
+packetLen(0x01eb, -1) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080917
+packetLen(0x01eb, 2) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080910
+packetLen(0x01eb, -1) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080903
+packetLen(0x01eb, 16) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080827
+packetLen(0x01eb, 6) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080820
+packetLen(0x01eb, -1) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080813
+packetLen(0x01eb, 6) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080722
+packetLen(0x01eb, -1) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080715
+packetLen(0x01eb, 16) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080624
+packetLen(0x01eb, -1) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080617
+packetLen(0x01eb, 7) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080610
+packetLen(0x01eb, 4) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080528
+packetLen(0x01eb, -1) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080520
+packetLen(0x01eb, 4) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080513
+packetLen(0x01eb, 30) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080507
+packetLen(0x01eb, 114) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080429
+packetLen(0x01eb, 27) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080422
+packetLen(0x01eb, 30) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080415
+packetLen(0x01eb, 9) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080408
+packetLen(0x01eb, 13) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080401
+packetLen(0x01eb, 5) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080311
+packetLen(0x01eb, -1) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080304
+packetLen(0x01eb, 30) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080226
+packetLen(0x01eb, 11) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080219
+packetLen(0x01eb, 26) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080124
+packetLen(0x01eb, 53) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080102
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+#endif
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+#if PACKETVER >= 20081217
+packetLen(0x01ed, 67) // CZ_CHOPOKGI
+#elif PACKETVER >= 20081203
+packetLen(0x01ed, -1) // CZ_CHOPOKGI
+#elif PACKETVER >= 20081126
+packetLen(0x01ed, 5) // CZ_CHOPOKGI
+#elif PACKETVER >= 20081112
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x01ed, -1) // CZ_CHOPOKGI
+#elif PACKETVER >= 20081015
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+#elif PACKETVER >= 20081008
+packetLen(0x01ed, 8) // CZ_CHOPOKGI
+#elif PACKETVER >= 20081001
+packetLen(0x01ed, -1) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080924
+packetLen(0x01ed, 10) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080917
+packetLen(0x01ed, 8) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080910
+packetLen(0x01ed, 14) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080903
+packetLen(0x01ed, -1) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080827
+packetLen(0x01ed, 4) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080820
+packetLen(0x01ed, 31) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080813
+packetLen(0x01ed, 11) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080806
+packetLen(0x01ed, 27) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080730
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080722
+packetLen(0x01ed, -1) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080715
+packetLen(0x01ed, 15) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080708
+packetLen(0x01ed, 54) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080701
+packetLen(0x01ed, 14) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080624
+packetLen(0x01ed, 6) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080610
+packetLen(0x01ed, -1) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080603
+packetLen(0x01ed, 30) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080528
+packetLen(0x01ed, 4) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080520
+packetLen(0x01ed, -1) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080513
+packetLen(0x01ed, 14) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080507
+packetLen(0x01ed, -1) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080429
+packetLen(0x01ed, 30) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080422
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080415
+packetLen(0x01ed, 3) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080408
+packetLen(0x01ed, 22) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080325
+packetLen(0x01ed, -1) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080318
+packetLen(0x01ed, 10) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080311
+packetLen(0x01ed, 5) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080304
+packetLen(0x01ed, 4) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080226
+packetLen(0x01ed, 10) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080219
+packetLen(0x01ed, 22) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080124
+packetLen(0x01ed, 6) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080102
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+#endif
+
+// Packet: 0x01ee
+#if PACKETVER >= 20081217
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20081203
+packetLen(0x01ee, 39) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20081126
+packetLen(0x01ee, 17) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20081112
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20081105
+packetLen(0x01ee, 10) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20081029
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20081022
+packetLen(0x01ee, 23) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080903
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080827
+packetLen(0x01ee, 31) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080820
+packetLen(0x01ee, 10) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080813
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080806
+packetLen(0x01ee, 10) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080730
+packetLen(0x01ee, 5) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080715
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080708
+packetLen(0x01ee, 23) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080701
+packetLen(0x01ee, 8) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080624
+packetLen(0x01ee, 6) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080617
+packetLen(0x01ee, 23) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080610
+packetLen(0x01ee, 8) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080528
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080520
+packetLen(0x01ee, 26) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080513
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080507
+packetLen(0x01ee, 2) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080408
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080401
+packetLen(0x01ee, 2) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080325
+packetLen(0x01ee, 6) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080318
+packetLen(0x01ee, 71) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080311
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080304
+packetLen(0x01ee, 6) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080226
+packetLen(0x01ee, 11) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080219
+packetLen(0x01ee, 8) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080124
+packetLen(0x01ee, 6) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080102
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+#endif
+
+// Packet: 0x01ef
+#if PACKETVER >= 20081217
+packetLen(0x01ef, 10) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20081126
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20081119
+packetLen(0x01ef, 10) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20081112
+packetLen(0x01ef, 4) // ZC_CART_NORMAL_ITEMLIST2
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01ef, 24) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20081029
+packetLen(0x01ef, 18) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20081001
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080917
+packetLen(0x01ef, 2) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080910
+packetLen(0x01ef, 90) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080813
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080806
+packetLen(0x01ef, 58) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080730
+packetLen(0x01ef, 10) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080722
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080715
+packetLen(0x01ef, 3) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080708
+packetLen(0x01ef, 6) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080701
+packetLen(0x01ef, 7) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080624
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080617
+packetLen(0x01ef, 10) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080603
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080528
+packetLen(0x01ef, 6) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080520
+packetLen(0x01ef, 14) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080513
+packetLen(0x01ef, 8) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080507
+packetLen(0x01ef, 7) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080429
+packetLen(0x01ef, 30) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080422
+packetLen(0x01ef, 16) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080415
+packetLen(0x01ef, 3) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080401
+packetLen(0x01ef, 6) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080325
+packetLen(0x01ef, 29) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080318
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080304
+packetLen(0x01ef, 8) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080226
+packetLen(0x01ef, 35) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080124
+packetLen(0x01ef, 6) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080102
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+#endif
+
+// Packet: 0x01f0
+#if PACKETVER >= 20081217
+packetLen(0x01f0, 10) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20081126
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20081119
+packetLen(0x01f0, 3) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20081112
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20081105
+packetLen(0x01f0, 3) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20081015
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20081008
+packetLen(0x01f0, 9) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080924
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080917
+packetLen(0x01f0, 65) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080903
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080827
+packetLen(0x01f0, 12) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080820
+packetLen(0x01f0, 4) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080813
+packetLen(0x01f0, 26) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080730
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080722
+packetLen(0x01f0, 4) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080715
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080708
+packetLen(0x01f0, 55) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080701
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080624
+packetLen(0x01f0, 8) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080617
+packetLen(0x01f0, 16) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080603
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080528
+packetLen(0x01f0, 8) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080520
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080513
+packetLen(0x01f0, 26) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080507
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080429
+packetLen(0x01f0, 7) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080422
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080415
+packetLen(0x01f0, 53) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080408
+packetLen(0x01f0, 22) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080401
+packetLen(0x01f0, 44) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080325
+packetLen(0x01f0, 13) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080318
+packetLen(0x01f0, 39) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080311
+packetLen(0x01f0, 4) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080304
+packetLen(0x01f0, 2) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080219
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080124
+packetLen(0x01f0, 30) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080102
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+#endif
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+#if PACKETVER >= 20081126
+packetLen(0x01f2, -1) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20081119
+packetLen(0x01f2, 90) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20081112
+packetLen(0x01f2, 42) // ZC_UPDATE_CHARSTAT2
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01f2, -1) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20081029
+packetLen(0x01f2, 6) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20081022
+packetLen(0x01f2, 59) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20081015
+packetLen(0x01f2, 8) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080924
+packetLen(0x01f2, -1) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080917
+packetLen(0x01f2, 32) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080910
+packetLen(0x01f2, 6) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080903
+packetLen(0x01f2, -1) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080827
+packetLen(0x01f2, 86) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080806
+packetLen(0x01f2, -1) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080730
+packetLen(0x01f2, 3) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080722
+packetLen(0x01f2, 9) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080715
+packetLen(0x01f2, 2) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080708
+packetLen(0x01f2, 30) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080701
+packetLen(0x01f2, 12) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080603
+packetLen(0x01f2, -1) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080528
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080513
+packetLen(0x01f2, -1) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080507
+packetLen(0x01f2, 22) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080429
+packetLen(0x01f2, -1) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080422
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080415
+packetLen(0x01f2, 8) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080408
+packetLen(0x01f2, 186) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080401
+packetLen(0x01f2, -1) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080325
+packetLen(0x01f2, 6) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080318
+packetLen(0x01f2, 2) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080311
+packetLen(0x01f2, 28) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080304
+packetLen(0x01f2, 26) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080226
+packetLen(0x01f2, 27) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080219
+packetLen(0x01f2, 31) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080124
+packetLen(0x01f2, 14) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080102
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+#endif
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+#if PACKETVER >= 20081217
+packetLen(0x01f4, 12) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20081203
+packetLen(0x01f4, 2) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20081119
+packetLen(0x01f4, -1) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20081112
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081015
+packetLen(0x01f4, -1) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20081008
+packetLen(0x01f4, 3) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20081001
+packetLen(0x01f4, 10) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080924
+packetLen(0x01f4, -1) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080917
+packetLen(0x01f4, 4) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080910
+packetLen(0x01f4, 10) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080903
+packetLen(0x01f4, 14) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080820
+packetLen(0x01f4, -1) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080813
+packetLen(0x01f4, 53) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080806
+packetLen(0x01f4, 7) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080715
+packetLen(0x01f4, 4) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080708
+packetLen(0x01f4, 6) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080701
+packetLen(0x01f4, -1) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080624
+packetLen(0x01f4, 54) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080610
+packetLen(0x01f4, -1) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080603
+packetLen(0x01f4, 7) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080520
+packetLen(0x01f4, -1) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080513
+packetLen(0x01f4, 67) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080507
+packetLen(0x01f4, -1) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080429
+packetLen(0x01f4, 28) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080422
+packetLen(0x01f4, 22) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080415
+packetLen(0x01f4, 6) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080408
+packetLen(0x01f4, 14) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080401
+packetLen(0x01f4, 6) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080325
+packetLen(0x01f4, 3) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080318
+packetLen(0x01f4, 10) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080311
+packetLen(0x01f4, 7) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080304
+packetLen(0x01f4, 12) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080226
+packetLen(0x01f4, -1) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080124
+packetLen(0x01f4, 6) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080102
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+#endif
+
+// Packet: 0x01f5
+#if PACKETVER >= 20081112
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20080924
+packetLen(0x01f5, -1) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080917
+packetLen(0x01f5, 23) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080910
+packetLen(0x01f5, 102) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080903
+packetLen(0x01f5, 4) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080820
+packetLen(0x01f5, -1) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080813
+packetLen(0x01f5, 4) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080722
+packetLen(0x01f5, -1) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080715
+packetLen(0x01f5, 11) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080624
+packetLen(0x01f5, -1) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080617
+packetLen(0x01f5, 6) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080603
+packetLen(0x01f5, -1) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080528
+packetLen(0x01f5, 60) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080520
+packetLen(0x01f5, 5) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080513
+packetLen(0x01f5, 60) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080507
+packetLen(0x01f5, 4) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080429
+packetLen(0x01f5, -1) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080422
+packetLen(0x01f5, 11) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080415
+packetLen(0x01f5, 4) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080408
+packetLen(0x01f5, -1) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080401
+packetLen(0x01f5, 6) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080325
+packetLen(0x01f5, 14) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080318
+packetLen(0x01f5, 55) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080311
+packetLen(0x01f5, 30) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080304
+packetLen(0x01f5, 3) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080226
+packetLen(0x01f5, 10) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080219
+packetLen(0x01f5, 114) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080124
+packetLen(0x01f5, 7) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080102
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+#endif
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+#if PACKETVER >= 20081217
+packetLen(0x01fc, 11) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20081203
+packetLen(0x01fc, 15) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20081126
+packetLen(0x01fc, 2) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20081029
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20081022
+packetLen(0x01fc, 6) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20081015
+packetLen(0x01fc, 44) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20081001
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080924
+packetLen(0x01fc, 3) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080917
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080910
+packetLen(0x01fc, 16) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080903
+packetLen(0x01fc, 27) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080827
+packetLen(0x01fc, 90) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080820
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080813
+packetLen(0x01fc, 16) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080806
+packetLen(0x01fc, 30) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080701
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080624
+packetLen(0x01fc, 7) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080617
+packetLen(0x01fc, 186) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080610
+packetLen(0x01fc, 10) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080603
+packetLen(0x01fc, 71) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080528
+packetLen(0x01fc, 4) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080520
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080513
+packetLen(0x01fc, 26) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080507
+packetLen(0x01fc, 10) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080429
+packetLen(0x01fc, 4) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080422
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080415
+packetLen(0x01fc, 10) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080408
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080401
+packetLen(0x01fc, 10) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080325
+packetLen(0x01fc, 59) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080318
+packetLen(0x01fc, 7) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x01fc, 6) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x01fc, 4) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x01fc, 282) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080124
+packetLen(0x01fc, 10) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+#endif
+
+// Packet: 0x01fd
+#if PACKETVER >= 20081203
+packetLen(0x01fd, -1) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20081126
+packetLen(0x01fd, 32) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20081119
+packetLen(0x01fd, 20) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20081112
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01fd, 2) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20081029
+packetLen(0x01fd, 8) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20081001
+packetLen(0x01fd, -1) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080924
+packetLen(0x01fd, 32) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080917
+packetLen(0x01fd, 27) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080910
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080903
+packetLen(0x01fd, -1) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080827
+packetLen(0x01fd, 16) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080730
+packetLen(0x01fd, -1) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080722
+packetLen(0x01fd, 7) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080715
+packetLen(0x01fd, -1) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080708
+packetLen(0x01fd, 2) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080701
+packetLen(0x01fd, 13) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080617
+packetLen(0x01fd, -1) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080610
+packetLen(0x01fd, 10) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080603
+packetLen(0x01fd, -1) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080528
+packetLen(0x01fd, 26) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080520
+packetLen(0x01fd, 8) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080513
+packetLen(0x01fd, -1) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080507
+packetLen(0x01fd, 6) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080429
+packetLen(0x01fd, -1) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080422
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080415
+packetLen(0x01fd, 54) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080408
+packetLen(0x01fd, -1) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080401
+packetLen(0x01fd, 6) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080325
+packetLen(0x01fd, 8) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080318
+packetLen(0x01fd, 6) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080311
+packetLen(0x01fd, 39) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080304
+packetLen(0x01fd, 6) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080226
+packetLen(0x01fd, 8) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080219
+packetLen(0x01fd, 26) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080124
+packetLen(0x01fd, -1) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080102
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+#endif
+
+// Packet: 0x01fe
+#if PACKETVER >= 20081217
+packetLen(0x01fe, 15) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20081119
+packetLen(0x01fe, -1) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20081112
+packetLen(0x01fe, 8) // ZC_ACK_ITEMREPAIR
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x01fe, -1) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20081029
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080924
+packetLen(0x01fe, -1) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080917
+packetLen(0x01fe, 97) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080910
+packetLen(0x01fe, -1) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080903
+packetLen(0x01fe, 8) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080827
+packetLen(0x01fe, -1) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080820
+packetLen(0x01fe, 30) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080813
+packetLen(0x01fe, 20) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080806
+packetLen(0x01fe, 4) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080708
+packetLen(0x01fe, -1) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080701
+packetLen(0x01fe, 30) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080624
+packetLen(0x01fe, -1) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080617
+packetLen(0x01fe, 11) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080610
+packetLen(0x01fe, -1) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080603
+packetLen(0x01fe, 4) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080513
+packetLen(0x01fe, -1) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080507
+packetLen(0x01fe, 7) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080415
+packetLen(0x01fe, -1) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080408
+packetLen(0x01fe, 8) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080401
+packetLen(0x01fe, 54) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080325
+packetLen(0x01fe, -1) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080318
+packetLen(0x01fe, 20) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080311
+packetLen(0x01fe, 18) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080304
+packetLen(0x01fe, 22) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080226
+packetLen(0x01fe, 2) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080219
+packetLen(0x01fe, 13) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080124
+packetLen(0x01fe, 16) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080102
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+#endif
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+#if PACKETVER >= 20081217
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20081203
+packetLen(0x0201, 8) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20081126
+packetLen(0x0201, 67) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20081119
+packetLen(0x0201, 11) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20081105
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20081022
+packetLen(0x0201, 6) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20081015
+packetLen(0x0201, 8) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080813
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080806
+packetLen(0x0201, 3) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080715
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080708
+packetLen(0x0201, 22) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080701
+packetLen(0x0201, 9) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080624
+packetLen(0x0201, 3) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080610
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080603
+packetLen(0x0201, 29) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080528
+packetLen(0x0201, 26) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080513
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080507
+packetLen(0x0201, 67) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080429
+packetLen(0x0201, 33) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080422
+packetLen(0x0201, 68) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080415
+packetLen(0x0201, 58) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080408
+packetLen(0x0201, 54) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080401
+packetLen(0x0201, 7) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080325
+packetLen(0x0201, 5) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080318
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x0201, 11) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x0201, 282) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x0201, 6) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x0201, 7) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080124
+packetLen(0x0201, 282) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+#endif
+
+// Packet: 0x0202
+#if PACKETVER >= 20081217
+packetLen(0x0202, 9) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20081203
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20081126
+packetLen(0x0202, 14) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20081119
+packetLen(0x0202, 7) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20081112
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20081022
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20081015
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20081008
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080910
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080903
+packetLen(0x0202, 9) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080820
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080813
+packetLen(0x0202, 60) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080806
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080730
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080722
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080610
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080603
+packetLen(0x0202, 6) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080528
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080520
+packetLen(0x0202, 11) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080513
+packetLen(0x0202, 3) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080507
+packetLen(0x0202, 19) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080429
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080422
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080415
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080408
+packetLen(0x0202, 3) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080325
+packetLen(0x0202, 6) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080318
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080311
+packetLen(0x0202, 33) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080304
+packetLen(0x0202, 11) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080226
+packetLen(0x0202, 44) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080219
+packetLen(0x0202, 4) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080124
+packetLen(0x0202, 10) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080102
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0203
+#if PACKETVER >= 20081112
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081015
+packetLen(0x0203, -1) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20081008
+packetLen(0x0203, 6) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20081001
+packetLen(0x0203, -1) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080924
+packetLen(0x0203, 6) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080917
+packetLen(0x0203, -1) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080910
+packetLen(0x0203, 58) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080903
+packetLen(0x0203, 11) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080827
+packetLen(0x0203, 6) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080813
+packetLen(0x0203, -1) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080806
+packetLen(0x0203, 2) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080730
+packetLen(0x0203, -1) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080722
+packetLen(0x0203, 282) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080715
+packetLen(0x0203, -1) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080708
+packetLen(0x0203, 4) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080701
+packetLen(0x0203, -1) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080624
+packetLen(0x0203, 3) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080610
+packetLen(0x0203, -1) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080603
+packetLen(0x0203, 7) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080528
+packetLen(0x0203, 34) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080520
+packetLen(0x0203, -1) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080513
+packetLen(0x0203, 4) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080507
+packetLen(0x0203, 7) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080429
+packetLen(0x0203, -1) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080422
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080401
+packetLen(0x0203, -1) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080325
+packetLen(0x0203, 3) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080318
+packetLen(0x0203, 67) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080311
+packetLen(0x0203, 60) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080304
+packetLen(0x0203, -1) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080226
+packetLen(0x0203, 7) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080219
+packetLen(0x0203, 4) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080124
+packetLen(0x0203, 6) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080102
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+#endif
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+#if PACKETVER >= 20081217
+packetLen(0x0206, 6) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20081203
+packetLen(0x0206, -1) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20081126
+packetLen(0x0206, 3) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20081119
+packetLen(0x0206, 8) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20081112
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0206, 44) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20081029
+packetLen(0x0206, 22) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20081001
+packetLen(0x0206, -1) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080924
+packetLen(0x0206, 8) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080917
+packetLen(0x0206, 81) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080910
+packetLen(0x0206, 2) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080903
+packetLen(0x0206, 65) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080827
+packetLen(0x0206, 8) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080813
+packetLen(0x0206, -1) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080806
+packetLen(0x0206, 8) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080730
+packetLen(0x0206, 6) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080722
+packetLen(0x0206, -1) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080715
+packetLen(0x0206, 282) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080708
+packetLen(0x0206, -1) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080701
+packetLen(0x0206, 2) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080624
+packetLen(0x0206, -1) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080617
+packetLen(0x0206, 30) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080603
+packetLen(0x0206, 3) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080520
+packetLen(0x0206, -1) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080513
+packetLen(0x0206, 6) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080429
+packetLen(0x0206, -1) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080422
+packetLen(0x0206, 7) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080415
+packetLen(0x0206, 4) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080408
+packetLen(0x0206, -1) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080401
+packetLen(0x0206, 59) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080325
+packetLen(0x0206, -1) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080318
+packetLen(0x0206, 30) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080311
+packetLen(0x0206, -1) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080304
+packetLen(0x0206, 9) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080226
+packetLen(0x0206, 8) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080219
+packetLen(0x0206, 7) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080124
+packetLen(0x0206, -1) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080102
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+#endif
+
+// Packet: 0x0207
+#if PACKETVER >= 20081112
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0207, 5) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20081015
+packetLen(0x0207, -1) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20081008
+packetLen(0x0207, 2) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20081001
+packetLen(0x0207, -1) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080924
+packetLen(0x0207, 30) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080910
+packetLen(0x0207, -1) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080903
+packetLen(0x0207, 54) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080820
+packetLen(0x0207, -1) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080813
+packetLen(0x0207, 11) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080806
+packetLen(0x0207, 6) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080730
+packetLen(0x0207, 60) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080722
+packetLen(0x0207, 6) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080715
+packetLen(0x0207, -1) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080708
+packetLen(0x0207, 14) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080701
+packetLen(0x0207, -1) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080624
+packetLen(0x0207, 2) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080617
+packetLen(0x0207, 11) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080610
+packetLen(0x0207, 7) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080528
+packetLen(0x0207, -1) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080520
+packetLen(0x0207, 28) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080513
+packetLen(0x0207, -1) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080507
+packetLen(0x0207, 2) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080429
+packetLen(0x0207, 5) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080422
+packetLen(0x0207, 2) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080408
+packetLen(0x0207, -1) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080401
+packetLen(0x0207, 102) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080325
+packetLen(0x0207, 8) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080318
+packetLen(0x0207, 2) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080311
+packetLen(0x0207, -1) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080304
+packetLen(0x0207, 6) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080226
+packetLen(0x0207, 26) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080219
+packetLen(0x0207, 66) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080124
+packetLen(0x0207, 28) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080102
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0208
+#if PACKETVER >= 20081112
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x0208, -1) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20081022
+packetLen(0x0208, 27) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20081015
+packetLen(0x0208, -1) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20081008
+packetLen(0x0208, 3) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20081001
+packetLen(0x0208, 6) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080924
+packetLen(0x0208, 18) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080820
+packetLen(0x0208, -1) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080813
+packetLen(0x0208, 3) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080730
+packetLen(0x0208, -1) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080722
+packetLen(0x0208, 2) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080715
+packetLen(0x0208, 12) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080708
+packetLen(0x0208, 16) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080701
+packetLen(0x0208, 2) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080624
+packetLen(0x0208, 6) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080617
+packetLen(0x0208, -1) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080610
+packetLen(0x0208, 15) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080603
+packetLen(0x0208, 10) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080528
+packetLen(0x0208, 26) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080520
+packetLen(0x0208, 10) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080513
+packetLen(0x0208, -1) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080507
+packetLen(0x0208, 60) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080429
+packetLen(0x0208, 6) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080415
+packetLen(0x0208, -1) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080408
+packetLen(0x0208, 5) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080401
+packetLen(0x0208, 22) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080325
+packetLen(0x0208, 6) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080318
+packetLen(0x0208, 10) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080311
+packetLen(0x0208, 6) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080226
+packetLen(0x0208, -1) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080219
+packetLen(0x0208, 71) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080124
+packetLen(0x0208, 65) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080102
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0209
+#if PACKETVER >= 20081112
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0209, -1) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20081029
+packetLen(0x0209, 4) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20081022
+packetLen(0x0209, 10) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20081015
+packetLen(0x0209, 4) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20081001
+packetLen(0x0209, -1) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080924
+packetLen(0x0209, 3) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080917
+packetLen(0x0209, -1) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080910
+packetLen(0x0209, 12) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080827
+packetLen(0x0209, -1) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080820
+packetLen(0x0209, 20) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080730
+packetLen(0x0209, -1) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080722
+packetLen(0x0209, 5) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080715
+packetLen(0x0209, 8) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080708
+packetLen(0x0209, 6) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080701
+packetLen(0x0209, -1) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080624
+packetLen(0x0209, 9) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080617
+packetLen(0x0209, -1) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080610
+packetLen(0x0209, 6) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080603
+packetLen(0x0209, -1) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080528
+packetLen(0x0209, 39) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080520
+packetLen(0x0209, 6) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080513
+packetLen(0x0209, 8) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080507
+packetLen(0x0209, 5) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080429
+packetLen(0x0209, -1) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080422
+packetLen(0x0209, 18) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080415
+packetLen(0x0209, -1) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080408
+packetLen(0x0209, 6) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080401
+packetLen(0x0209, 10) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080325
+packetLen(0x0209, 3) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080318
+packetLen(0x0209, 4) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x0209, 10) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x0209, -1) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x0209, 6) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x0209, 30) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080124
+packetLen(0x0209, 10) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+#endif
+
+// Packet: 0x020a
+#if PACKETVER >= 20081217
+packetLen(0x020a, 4) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20081119
+packetLen(0x020a, -1) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20081112
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x020a, -1) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20081022
+packetLen(0x020a, 7) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20081015
+packetLen(0x020a, -1) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20081008
+packetLen(0x020a, 5) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20081001
+packetLen(0x020a, 27) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080924
+packetLen(0x020a, 4) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080917
+packetLen(0x020a, -1) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080910
+packetLen(0x020a, 7) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080903
+packetLen(0x020a, -1) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080827
+packetLen(0x020a, 7) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080820
+packetLen(0x020a, 29) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080813
+packetLen(0x020a, -1) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080730
+packetLen(0x020a, 3) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080722
+packetLen(0x020a, 6) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080715
+packetLen(0x020a, 30) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080701
+packetLen(0x020a, -1) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080624
+packetLen(0x020a, 68) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080617
+packetLen(0x020a, -1) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080610
+packetLen(0x020a, 186) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080603
+packetLen(0x020a, 11) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080528
+packetLen(0x020a, 32) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080520
+packetLen(0x020a, 30) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080513
+packetLen(0x020a, 2) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080507
+packetLen(0x020a, 71) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080422
+packetLen(0x020a, -1) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080415
+packetLen(0x020a, 6) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080408
+packetLen(0x020a, -1) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080401
+packetLen(0x020a, 14) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080325
+packetLen(0x020a, 13) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080318
+packetLen(0x020a, 7) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080311
+packetLen(0x020a, 6) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080304
+packetLen(0x020a, 11) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080226
+packetLen(0x020a, -1) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080219
+packetLen(0x020a, 20) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080124
+packetLen(0x020a, 2) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080102
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+#endif
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+#if PACKETVER >= 20081217
+packetLen(0x020e, 6) // ZC_STARSKILL
+#elif PACKETVER >= 20081203
+packetLen(0x020e, -1) // ZC_STARSKILL
+#elif PACKETVER >= 20081126
+packetLen(0x020e, 10) // ZC_STARSKILL
+#elif PACKETVER >= 20081112
+packetLen(0x020e, 32) // ZC_STARSKILL
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x020e, -1) // ZC_STARSKILL
+#elif PACKETVER >= 20081022
+packetLen(0x020e, 67) // ZC_STARSKILL
+#elif PACKETVER >= 20081015
+packetLen(0x020e, -1) // ZC_STARSKILL
+#elif PACKETVER >= 20081001
+packetLen(0x020e, 2) // ZC_STARSKILL
+#elif PACKETVER >= 20080910
+packetLen(0x020e, -1) // ZC_STARSKILL
+#elif PACKETVER >= 20080903
+packetLen(0x020e, 30) // ZC_STARSKILL
+#elif PACKETVER >= 20080827
+packetLen(0x020e, -1) // ZC_STARSKILL
+#elif PACKETVER >= 20080820
+packetLen(0x020e, 4) // ZC_STARSKILL
+#elif PACKETVER >= 20080813
+packetLen(0x020e, 6) // ZC_STARSKILL
+#elif PACKETVER >= 20080806
+packetLen(0x020e, 2) // ZC_STARSKILL
+#elif PACKETVER >= 20080730
+packetLen(0x020e, 3) // ZC_STARSKILL
+#elif PACKETVER >= 20080722
+packetLen(0x020e, -1) // ZC_STARSKILL
+#elif PACKETVER >= 20080715
+packetLen(0x020e, 2) // ZC_STARSKILL
+#elif PACKETVER >= 20080708
+packetLen(0x020e, -1) // ZC_STARSKILL
+#elif PACKETVER >= 20080701
+packetLen(0x020e, 10) // ZC_STARSKILL
+#elif PACKETVER >= 20080624
+packetLen(0x020e, 5) // ZC_STARSKILL
+#elif PACKETVER >= 20080603
+packetLen(0x020e, -1) // ZC_STARSKILL
+#elif PACKETVER >= 20080528
+packetLen(0x020e, 7) // ZC_STARSKILL
+#elif PACKETVER >= 20080520
+packetLen(0x020e, -1) // ZC_STARSKILL
+#elif PACKETVER >= 20080513
+packetLen(0x020e, 32) // ZC_STARSKILL
+#elif PACKETVER >= 20080507
+packetLen(0x020e, -1) // ZC_STARSKILL
+#elif PACKETVER >= 20080429
+packetLen(0x020e, 54) // ZC_STARSKILL
+#elif PACKETVER >= 20080415
+packetLen(0x020e, 4) // ZC_STARSKILL
+#elif PACKETVER >= 20080408
+packetLen(0x020e, 3) // ZC_STARSKILL
+#elif PACKETVER >= 20080401
+packetLen(0x020e, 6) // ZC_STARSKILL
+#elif PACKETVER >= 20080318
+packetLen(0x020e, -1) // ZC_STARSKILL
+#elif PACKETVER >= 20080311
+packetLen(0x020e, 6) // ZC_STARSKILL
+#elif PACKETVER >= 20080304
+packetLen(0x020e, 27) // ZC_STARSKILL
+#elif PACKETVER >= 20080226
+packetLen(0x020e, -1) // ZC_STARSKILL
+#elif PACKETVER >= 20080219
+packetLen(0x020e, 8) // ZC_STARSKILL
+#elif PACKETVER >= 20080124
+packetLen(0x020e, 102) // ZC_STARSKILL
+#elif PACKETVER >= 20080102
+packetLen(0x020e, 32) // ZC_STARSKILL
+#endif
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+#if PACKETVER >= 20081126
+packetLen(0x0217, -1) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20081119
+packetLen(0x0217, 28) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20081112
+packetLen(0x0217, 30) // CZ_BLACKSMITH_RANK
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0217, 10) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20081008
+packetLen(0x0217, -1) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20081001
+packetLen(0x0217, 7) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080924
+packetLen(0x0217, -1) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080917
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080903
+packetLen(0x0217, -1) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080827
+packetLen(0x0217, 26) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080820
+packetLen(0x0217, 55) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080806
+packetLen(0x0217, -1) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080730
+packetLen(0x0217, 7) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080722
+packetLen(0x0217, -1) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080715
+packetLen(0x0217, 54) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080708
+packetLen(0x0217, -1) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080701
+packetLen(0x0217, 7) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080617
+packetLen(0x0217, 4) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080610
+packetLen(0x0217, 53) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080603
+packetLen(0x0217, 6) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080528
+packetLen(0x0217, -1) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080520
+packetLen(0x0217, 8) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080513
+packetLen(0x0217, 65) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080507
+packetLen(0x0217, 8) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080429
+packetLen(0x0217, 15) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080422
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080415
+packetLen(0x0217, 8) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080408
+packetLen(0x0217, -1) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080401
+packetLen(0x0217, 13) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080325
+packetLen(0x0217, -1) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080318
+packetLen(0x0217, 4) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080311
+packetLen(0x0217, 26) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080304
+packetLen(0x0217, 44) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080226
+packetLen(0x0217, 5) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080219
+packetLen(0x0217, -1) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080124
+packetLen(0x0217, 3) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080102
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+#endif
+
+// Packet: 0x0218
+#if PACKETVER >= 20081203
+packetLen(0x0218, -1) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20081126
+packetLen(0x0218, 102) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20081119
+packetLen(0x0218, 13) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20081112
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20081105
+packetLen(0x0218, 30) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20081015
+packetLen(0x0218, -1) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20081008
+packetLen(0x0218, 3) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080917
+packetLen(0x0218, -1) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080910
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080820
+packetLen(0x0218, -1) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080813
+packetLen(0x0218, 11) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080806
+packetLen(0x0218, -1) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080730
+packetLen(0x0218, 4) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080722
+packetLen(0x0218, 33) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080715
+packetLen(0x0218, 8) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080701
+packetLen(0x0218, -1) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080624
+packetLen(0x0218, 10) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080617
+packetLen(0x0218, 68) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080610
+packetLen(0x0218, 30) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080603
+packetLen(0x0218, 5) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080520
+packetLen(0x0218, -1) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080513
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080507
+packetLen(0x0218, -1) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080429
+packetLen(0x0218, 18) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080422
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080408
+packetLen(0x0218, -1) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080401
+packetLen(0x0218, 67) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080325
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080318
+packetLen(0x0218, 6) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080311
+packetLen(0x0218, 14) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080304
+packetLen(0x0218, 4) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080226
+packetLen(0x0218, 8) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080219
+packetLen(0x0218, 26) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080124
+packetLen(0x0218, 6) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080102
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+#endif
+
+// Packet: 0x0219
+#if PACKETVER >= 20081217
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20081203
+packetLen(0x0219, 26) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20081119
+packetLen(0x0219, 8) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20081112
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0219, 5) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20081015
+packetLen(0x0219, -1) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20081008
+packetLen(0x0219, 6) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080924
+packetLen(0x0219, -1) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080917
+packetLen(0x0219, 2) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080910
+packetLen(0x0219, 4) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080903
+packetLen(0x0219, 8) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080827
+packetLen(0x0219, -1) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080820
+packetLen(0x0219, 5) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080813
+packetLen(0x0219, 186) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080722
+packetLen(0x0219, -1) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080715
+packetLen(0x0219, 6) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080624
+packetLen(0x0219, -1) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080617
+packetLen(0x0219, 8) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080610
+packetLen(0x0219, 6) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080603
+packetLen(0x0219, 4) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080528
+packetLen(0x0219, 30) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080513
+packetLen(0x0219, 6) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080507
+packetLen(0x0219, 12) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080429
+packetLen(0x0219, 6) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080422
+packetLen(0x0219, -1) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080415
+packetLen(0x0219, 9) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080408
+packetLen(0x0219, 28) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080401
+packetLen(0x0219, 4) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080325
+packetLen(0x0219, 15) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080318
+packetLen(0x0219, -1) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080311
+packetLen(0x0219, 6) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080304
+packetLen(0x0219, 3) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080226
+packetLen(0x0219, -1) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080219
+packetLen(0x0219, 17) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080124
+packetLen(0x0219, 8) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080102
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+#endif
+
+// Packet: 0x021a
+#if PACKETVER >= 20081217
+packetLen(0x021a, -1) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20081203
+packetLen(0x021a, 13) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20081126
+packetLen(0x021a, -1) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20081119
+packetLen(0x021a, 60) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20081112
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x021a, -1) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20081029
+packetLen(0x021a, 10) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20081022
+packetLen(0x021a, 9) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080917
+packetLen(0x021a, -1) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080910
+packetLen(0x021a, 26) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080813
+packetLen(0x021a, -1) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080806
+packetLen(0x021a, 3) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080730
+packetLen(0x021a, 39) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080715
+packetLen(0x021a, -1) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080708
+packetLen(0x021a, 79) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080701
+packetLen(0x021a, 6) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080624
+packetLen(0x021a, 11) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080617
+packetLen(0x021a, 97) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080610
+packetLen(0x021a, 23) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080603
+packetLen(0x021a, 30) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080528
+packetLen(0x021a, 26) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080513
+packetLen(0x021a, -1) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080507
+packetLen(0x021a, 3) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080429
+packetLen(0x021a, -1) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080422
+packetLen(0x021a, 16) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080408
+packetLen(0x021a, -1) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080401
+packetLen(0x021a, 11) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080325
+packetLen(0x021a, 8) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080318
+packetLen(0x021a, 6) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080311
+packetLen(0x021a, 8) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080304
+packetLen(0x021a, 5) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080226
+packetLen(0x021a, 30) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080219
+packetLen(0x021a, -1) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080124
+packetLen(0x021a, 10) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080102
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+#endif
+
+// Packet: 0x021b
+#if PACKETVER >= 20081217
+packetLen(0x021b, 28) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20081203
+packetLen(0x021b, 14) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20081119
+packetLen(0x021b, -1) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20081112
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x021b, 3) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20081008
+packetLen(0x021b, -1) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20081001
+packetLen(0x021b, 58) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080903
+packetLen(0x021b, -1) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080827
+packetLen(0x021b, 33) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080820
+packetLen(0x021b, 7) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080813
+packetLen(0x021b, -1) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080806
+packetLen(0x021b, 26) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080730
+packetLen(0x021b, -1) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080722
+packetLen(0x021b, 22) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080715
+packetLen(0x021b, 29) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080701
+packetLen(0x021b, -1) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080624
+packetLen(0x021b, 4) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080617
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080610
+packetLen(0x021b, -1) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080603
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080520
+packetLen(0x021b, -1) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080513
+packetLen(0x021b, 4) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080507
+packetLen(0x021b, 8) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080429
+packetLen(0x021b, 2) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080422
+packetLen(0x021b, 44) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080415
+packetLen(0x021b, -1) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080408
+packetLen(0x021b, 9) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080401
+packetLen(0x021b, 6) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080325
+packetLen(0x021b, 11) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080318
+packetLen(0x021b, 3) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080311
+packetLen(0x021b, 15) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080304
+packetLen(0x021b, 14) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080226
+packetLen(0x021b, 6) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080219
+packetLen(0x021b, 15) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080124
+packetLen(0x021b, 54) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080102
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+#endif
+
+// Packet: 0x021c
+#if PACKETVER >= 20081119
+packetLen(0x021c, -1) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20081112
+packetLen(0x021c, 33) // ZC_ALCHEMIST_POINT
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x021c, -1) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20081029
+packetLen(0x021c, 6) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20081008
+packetLen(0x021c, -1) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20081001
+packetLen(0x021c, 39) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080917
+packetLen(0x021c, -1) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080910
+packetLen(0x021c, 9) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080827
+packetLen(0x021c, -1) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080820
+packetLen(0x021c, 26) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080730
+packetLen(0x021c, -1) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080722
+packetLen(0x021c, 4) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080715
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080617
+packetLen(0x021c, -1) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080610
+packetLen(0x021c, 8) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080603
+packetLen(0x021c, 13) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080528
+packetLen(0x021c, -1) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080520
+packetLen(0x021c, 2) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080513
+packetLen(0x021c, 5) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080507
+packetLen(0x021c, 8) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080429
+packetLen(0x021c, 18) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080422
+packetLen(0x021c, 3) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080415
+packetLen(0x021c, 5) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080408
+packetLen(0x021c, -1) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080401
+packetLen(0x021c, 4) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080325
+packetLen(0x021c, 102) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080318
+packetLen(0x021c, -1) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080311
+packetLen(0x021c, 6) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080304
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080226
+packetLen(0x021c, 4) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080219
+packetLen(0x021c, -1) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080124
+packetLen(0x021c, 30) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080102
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+#endif
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+#if PACKETVER >= 20081217
+packetLen(0x0224, 60) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20081203
+packetLen(0x0224, -1) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20081126
+packetLen(0x0224, 26) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20081112
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0224, -1) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20081029
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20081022
+packetLen(0x0224, -1) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20081015
+packetLen(0x0224, 11) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20081008
+packetLen(0x0224, 282) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20081001
+packetLen(0x0224, -1) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080924
+packetLen(0x0224, 6) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080917
+packetLen(0x0224, -1) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080910
+packetLen(0x0224, 66) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080903
+packetLen(0x0224, -1) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080827
+packetLen(0x0224, 42) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080820
+packetLen(0x0224, 4) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080813
+packetLen(0x0224, -1) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080806
+packetLen(0x0224, 17) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080730
+packetLen(0x0224, -1) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080722
+packetLen(0x0224, 11) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080715
+packetLen(0x0224, 8) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080708
+packetLen(0x0224, -1) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080701
+packetLen(0x0224, 4) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080624
+packetLen(0x0224, 42) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080610
+packetLen(0x0224, 4) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080603
+packetLen(0x0224, 14) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080528
+packetLen(0x0224, 9) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080520
+packetLen(0x0224, -1) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080513
+packetLen(0x0224, 3) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080507
+packetLen(0x0224, -1) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080429
+packetLen(0x0224, 6) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080422
+packetLen(0x0224, 8) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080415
+packetLen(0x0224, 27) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080408
+packetLen(0x0224, 81) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080401
+packetLen(0x0224, 6) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080325
+packetLen(0x0224, 2) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080318
+packetLen(0x0224, 6) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080311
+packetLen(0x0224, 20) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080304
+packetLen(0x0224, 6) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080226
+packetLen(0x0224, 2) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080219
+packetLen(0x0224, 12) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080124
+packetLen(0x0224, 9) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080102
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+#endif
+
+// Packet: 0x0225
+#if PACKETVER >= 20081203
+packetLen(0x0225, -1) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20081126
+packetLen(0x0225, 23) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20081119
+packetLen(0x0225, -1) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20081112
+packetLen(0x0225, 28) // CZ_TAEKWON_RANK
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x0225, -1) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20081015
+packetLen(0x0225, 10) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20081001
+packetLen(0x0225, -1) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080924
+packetLen(0x0225, 5) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080917
+packetLen(0x0225, 10) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080813
+packetLen(0x0225, -1) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080806
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080730
+packetLen(0x0225, -1) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080722
+packetLen(0x0225, 6) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080701
+packetLen(0x0225, -1) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080624
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080617
+packetLen(0x0225, 7) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080610
+packetLen(0x0225, 32) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080603
+packetLen(0x0225, 14) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080520
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080513
+packetLen(0x0225, 10) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080507
+packetLen(0x0225, 9) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080429
+packetLen(0x0225, 3) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080422
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080415
+packetLen(0x0225, 4) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080408
+packetLen(0x0225, 3) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080401
+packetLen(0x0225, 5) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080325
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080318
+packetLen(0x0225, 5) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080311
+packetLen(0x0225, 29) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080304
+packetLen(0x0225, 10) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080226
+packetLen(0x0225, 3) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080124
+packetLen(0x0225, 6) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080102
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+#endif
+
+// Packet: 0x0226
+#if PACKETVER >= 20081217
+packetLen(0x0226, 102) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20081203
+packetLen(0x0226, 7) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20081112
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x0226, -1) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20081022
+packetLen(0x0226, 5) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20081008
+packetLen(0x0226, -1) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20081001
+packetLen(0x0226, 3) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080903
+packetLen(0x0226, -1) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080827
+packetLen(0x0226, 65) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080820
+packetLen(0x0226, -1) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080813
+packetLen(0x0226, 8) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080806
+packetLen(0x0226, 43) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080722
+packetLen(0x0226, -1) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080715
+packetLen(0x0226, 2) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080708
+packetLen(0x0226, 6) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080624
+packetLen(0x0226, -1) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080617
+packetLen(0x0226, 3) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080610
+packetLen(0x0226, -1) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080603
+packetLen(0x0226, 2) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080528
+packetLen(0x0226, 36) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080422
+packetLen(0x0226, -1) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080415
+packetLen(0x0226, 2) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080408
+packetLen(0x0226, 30) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080401
+packetLen(0x0226, 2) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080325
+packetLen(0x0226, 9) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080318
+packetLen(0x0226, 3) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080311
+packetLen(0x0226, 22) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080226
+packetLen(0x0226, 3) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080219
+packetLen(0x0226, 42) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080124
+packetLen(0x0226, 4) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080102
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+#endif
+
+// Packet: 0x0227
+#if PACKETVER >= 20081217
+packetLen(0x0227, -1) // ZC_GAME_GUARD
+#elif PACKETVER >= 20081203
+packetLen(0x0227, 68) // ZC_GAME_GUARD
+#elif PACKETVER >= 20081126
+packetLen(0x0227, 39) // ZC_GAME_GUARD
+#elif PACKETVER >= 20081119
+packetLen(0x0227, -1) // ZC_GAME_GUARD
+#elif PACKETVER >= 20081112
+packetLen(0x0227, 26) // ZC_GAME_GUARD
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081015
+packetLen(0x0227, -1) // ZC_GAME_GUARD
+#elif PACKETVER >= 20081008
+packetLen(0x0227, 4) // ZC_GAME_GUARD
+#elif PACKETVER >= 20081001
+packetLen(0x0227, -1) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080924
+packetLen(0x0227, 9) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080917
+packetLen(0x0227, -1) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080910
+packetLen(0x0227, 11) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080903
+packetLen(0x0227, -1) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080827
+packetLen(0x0227, 6) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080820
+packetLen(0x0227, 36) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080813
+packetLen(0x0227, 2) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080708
+packetLen(0x0227, -1) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080701
+packetLen(0x0227, 2) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080617
+packetLen(0x0227, -1) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080610
+packetLen(0x0227, 10) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080603
+packetLen(0x0227, 6) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080528
+packetLen(0x0227, -1) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080520
+packetLen(0x0227, 10) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080513
+packetLen(0x0227, 4) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080507
+packetLen(0x0227, -1) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080429
+packetLen(0x0227, 26) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080422
+packetLen(0x0227, 8) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080415
+packetLen(0x0227, 2) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080408
+packetLen(0x0227, -1) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080325
+packetLen(0x0227, 6) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080318
+packetLen(0x0227, 15) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080311
+packetLen(0x0227, 7) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080304
+packetLen(0x0227, 2) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080226
+packetLen(0x0227, 31) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080219
+packetLen(0x0227, 4) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080124
+packetLen(0x0227, -1) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080102
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+#endif
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+#if PACKETVER >= 20081217
+packetLen(0x0229, -1) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20081203
+packetLen(0x0229, 18) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20081126
+packetLen(0x0229, 7) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20081119
+packetLen(0x0229, 11) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20081112
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0229, 2) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20081029
+packetLen(0x0229, 6) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20081022
+packetLen(0x0229, 2) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20081015
+packetLen(0x0229, 6) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20081008
+packetLen(0x0229, -1) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20081001
+packetLen(0x0229, 6) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080910
+packetLen(0x0229, -1) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080903
+packetLen(0x0229, 10) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080820
+packetLen(0x0229, -1) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080813
+packetLen(0x0229, 3) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080806
+packetLen(0x0229, 8) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080730
+packetLen(0x0229, 12) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080715
+packetLen(0x0229, -1) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080708
+packetLen(0x0229, 20) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080701
+packetLen(0x0229, -1) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080624
+packetLen(0x0229, 2) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080617
+packetLen(0x0229, -1) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080610
+packetLen(0x0229, 21) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080603
+packetLen(0x0229, -1) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080528
+packetLen(0x0229, 2) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080520
+packetLen(0x0229, 31) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080507
+packetLen(0x0229, 5) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080429
+packetLen(0x0229, 2) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080422
+packetLen(0x0229, 3) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080415
+packetLen(0x0229, 7) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080408
+packetLen(0x0229, 5) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080401
+packetLen(0x0229, -1) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080325
+packetLen(0x0229, 6) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080318
+packetLen(0x0229, -1) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080311
+packetLen(0x0229, 22) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080304
+packetLen(0x0229, 33) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080226
+packetLen(0x0229, 182) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080219
+packetLen(0x0229, 6) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080124
+packetLen(0x0229, 22) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080102
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+#endif
+
+// Packet: 0x022a
+#if PACKETVER >= 20081217
+packetLen(0x022a, 30) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20081126
+packetLen(0x022a, -1) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20081119
+packetLen(0x022a, 8) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20081112
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x022a, -1) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20081029
+packetLen(0x022a, 4) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20081022
+packetLen(0x022a, 282) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20081015
+packetLen(0x022a, 19) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20081008
+packetLen(0x022a, 6) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080917
+packetLen(0x022a, -1) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080910
+packetLen(0x022a, 21) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080903
+packetLen(0x022a, 26) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080827
+packetLen(0x022a, 13) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080806
+packetLen(0x022a, -1) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080730
+packetLen(0x022a, 26) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080722
+packetLen(0x022a, 66) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080701
+packetLen(0x022a, -1) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080624
+packetLen(0x022a, 2) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080617
+packetLen(0x022a, 8) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080520
+packetLen(0x022a, -1) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080513
+packetLen(0x022a, 5) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080507
+packetLen(0x022a, -1) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080429
+packetLen(0x022a, 3) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080422
+packetLen(0x022a, 23) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080415
+packetLen(0x022a, 3) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080408
+packetLen(0x022a, 10) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080401
+packetLen(0x022a, 8) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080325
+packetLen(0x022a, 114) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080318
+packetLen(0x022a, 2) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080311
+packetLen(0x022a, 10) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080304
+packetLen(0x022a, 2) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080226
+packetLen(0x022a, -1) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080219
+packetLen(0x022a, 2) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080124
+packetLen(0x022a, 8) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080102
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+#endif
+
+// Packet: 0x022b
+#if PACKETVER >= 20081217
+packetLen(0x022b, -1) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20081126
+packetLen(0x022b, 6) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20081119
+packetLen(0x022b, 2) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20081112
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x022b, -1) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20081015
+packetLen(0x022b, 282) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20081008
+packetLen(0x022b, 3) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20081001
+packetLen(0x022b, 6) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080806
+packetLen(0x022b, -1) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080730
+packetLen(0x022b, 4) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080701
+packetLen(0x022b, -1) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080624
+packetLen(0x022b, 90) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080617
+packetLen(0x022b, 6) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080610
+packetLen(0x022b, 2) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080603
+packetLen(0x022b, 18) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080528
+packetLen(0x022b, 7) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080520
+packetLen(0x022b, 10) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080513
+packetLen(0x022b, -1) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080507
+packetLen(0x022b, 6) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080429
+packetLen(0x022b, 26) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080415
+packetLen(0x022b, -1) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080408
+packetLen(0x022b, 27) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080401
+packetLen(0x022b, 6) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080325
+packetLen(0x022b, 282) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080318
+packetLen(0x022b, 102) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080311
+packetLen(0x022b, 10) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080304
+packetLen(0x022b, 8) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080219
+packetLen(0x022b, -1) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080124
+packetLen(0x022b, 23) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080102
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+#endif
+
+// Packet: 0x022c
+#if PACKETVER >= 20081217
+packetLen(0x022c, -1) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20081203
+packetLen(0x022c, 54) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20081126
+packetLen(0x022c, -1) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20081119
+packetLen(0x022c, 60) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20081112
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x022c, -1) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20081029
+packetLen(0x022c, 8) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20081022
+packetLen(0x022c, 6) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20081015
+packetLen(0x022c, -1) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20081008
+packetLen(0x022c, 13) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20081001
+packetLen(0x022c, -1) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080924
+packetLen(0x022c, 15) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080917
+packetLen(0x022c, 10) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080910
+packetLen(0x022c, -1) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080903
+packetLen(0x022c, 6) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080827
+packetLen(0x022c, 282) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080730
+packetLen(0x022c, -1) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080722
+packetLen(0x022c, 2) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080715
+packetLen(0x022c, -1) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080708
+packetLen(0x022c, 59) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080603
+packetLen(0x022c, -1) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080520
+packetLen(0x022c, 6) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080513
+packetLen(0x022c, 8) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080507
+packetLen(0x022c, 6) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080429
+packetLen(0x022c, -1) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080422
+packetLen(0x022c, 33) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080415
+packetLen(0x022c, 6) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080408
+packetLen(0x022c, -1) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080401
+packetLen(0x022c, 4) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080325
+packetLen(0x022c, 68) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080318
+packetLen(0x022c, 6) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080304
+packetLen(0x022c, 10) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080226
+packetLen(0x022c, 31) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080219
+packetLen(0x022c, 53) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080124
+packetLen(0x022c, 22) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080102
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+#endif
+
+// Packet: 0x022d
+#if PACKETVER >= 20081217
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20081203
+packetLen(0x022d, 44) // CZ_COMMAND_MER
+#elif PACKETVER >= 20081126
+packetLen(0x022d, 20) // CZ_COMMAND_MER
+#elif PACKETVER >= 20081112
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20081022
+packetLen(0x022d, 4) // CZ_COMMAND_MER
+#elif PACKETVER >= 20081015
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+#elif PACKETVER >= 20081008
+packetLen(0x022d, 26) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080730
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080722
+packetLen(0x022d, 4) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080715
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080708
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080701
+packetLen(0x022d, 10) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080520
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080513
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080507
+packetLen(0x022d, 29) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080429
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080422
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080408
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080401
+packetLen(0x022d, 30) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080325
+packetLen(0x022d, 11) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080318
+packetLen(0x022d, 10) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080311
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080226
+packetLen(0x022d, 10) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080219
+packetLen(0x022d, 9) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080124
+packetLen(0x022d, 10) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080102
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+#endif
+
+// Packet: 0x022e
+#if PACKETVER >= 20081217
+packetLen(0x022e, 186) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20081203
+packetLen(0x022e, 3) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20081126
+packetLen(0x022e, 9) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20081119
+packetLen(0x022e, -1) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20081112
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x022e, -1) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20081029
+packetLen(0x022e, 60) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20081022
+packetLen(0x022e, 3) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20081015
+packetLen(0x022e, -1) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20081008
+packetLen(0x022e, 17) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080924
+packetLen(0x022e, -1) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080917
+packetLen(0x022e, 10) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080910
+packetLen(0x022e, -1) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080903
+packetLen(0x022e, 30) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080820
+packetLen(0x022e, -1) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080813
+packetLen(0x022e, 18) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080730
+packetLen(0x022e, -1) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080722
+packetLen(0x022e, 4) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080708
+packetLen(0x022e, -1) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080701
+packetLen(0x022e, 30) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080624
+packetLen(0x022e, 4) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080610
+packetLen(0x022e, -1) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080603
+packetLen(0x022e, 10) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080520
+packetLen(0x022e, -1) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080513
+packetLen(0x022e, 4) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080507
+packetLen(0x022e, 8) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080429
+packetLen(0x022e, 3) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080422
+packetLen(0x022e, 7) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080415
+packetLen(0x022e, 30) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080408
+packetLen(0x022e, 9) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080401
+packetLen(0x022e, 2) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080325
+packetLen(0x022e, 4) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080318
+packetLen(0x022e, 28) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080311
+packetLen(0x022e, 5) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080304
+packetLen(0x022e, 55) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080226
+packetLen(0x022e, 9) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080219
+packetLen(0x022e, -1) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080124
+packetLen(0x022e, 4) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080102
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+#endif
+
+// Packet: 0x022f
+#if PACKETVER >= 20081217
+packetLen(0x022f, -1) // ZC_FEED_MER
+#elif PACKETVER >= 20081203
+packetLen(0x022f, 9) // ZC_FEED_MER
+#elif PACKETVER >= 20081126
+packetLen(0x022f, -1) // ZC_FEED_MER
+#elif PACKETVER >= 20081119
+packetLen(0x022f, 30) // ZC_FEED_MER
+#elif PACKETVER >= 20081112
+packetLen(0x022f, 5) // ZC_FEED_MER
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x022f, -1) // ZC_FEED_MER
+#elif PACKETVER >= 20081029
+packetLen(0x022f, 10) // ZC_FEED_MER
+#elif PACKETVER >= 20081015
+packetLen(0x022f, -1) // ZC_FEED_MER
+#elif PACKETVER >= 20081008
+packetLen(0x022f, 30) // ZC_FEED_MER
+#elif PACKETVER >= 20081001
+packetLen(0x022f, 182) // ZC_FEED_MER
+#elif PACKETVER >= 20080924
+packetLen(0x022f, -1) // ZC_FEED_MER
+#elif PACKETVER >= 20080917
+packetLen(0x022f, 6) // ZC_FEED_MER
+#elif PACKETVER >= 20080813
+packetLen(0x022f, -1) // ZC_FEED_MER
+#elif PACKETVER >= 20080806
+packetLen(0x022f, 10) // ZC_FEED_MER
+#elif PACKETVER >= 20080722
+packetLen(0x022f, -1) // ZC_FEED_MER
+#elif PACKETVER >= 20080715
+packetLen(0x022f, 10) // ZC_FEED_MER
+#elif PACKETVER >= 20080701
+packetLen(0x022f, -1) // ZC_FEED_MER
+#elif PACKETVER >= 20080624
+packetLen(0x022f, 10) // ZC_FEED_MER
+#elif PACKETVER >= 20080617
+packetLen(0x022f, 4) // ZC_FEED_MER
+#elif PACKETVER >= 20080610
+packetLen(0x022f, -1) // ZC_FEED_MER
+#elif PACKETVER >= 20080603
+packetLen(0x022f, 22) // ZC_FEED_MER
+#elif PACKETVER >= 20080528
+packetLen(0x022f, -1) // ZC_FEED_MER
+#elif PACKETVER >= 20080520
+packetLen(0x022f, 26) // ZC_FEED_MER
+#elif PACKETVER >= 20080429
+packetLen(0x022f, -1) // ZC_FEED_MER
+#elif PACKETVER >= 20080422
+packetLen(0x022f, 7) // ZC_FEED_MER
+#elif PACKETVER >= 20080415
+packetLen(0x022f, 3) // ZC_FEED_MER
+#elif PACKETVER >= 20080401
+packetLen(0x022f, 10) // ZC_FEED_MER
+#elif PACKETVER >= 20080325
+packetLen(0x022f, 67) // ZC_FEED_MER
+#elif PACKETVER >= 20080318
+packetLen(0x022f, 7) // ZC_FEED_MER
+#elif PACKETVER >= 20080304
+packetLen(0x022f, -1) // ZC_FEED_MER
+#elif PACKETVER >= 20080226
+packetLen(0x022f, 26) // ZC_FEED_MER
+#elif PACKETVER >= 20080219
+packetLen(0x022f, 282) // ZC_FEED_MER
+#elif PACKETVER >= 20080124
+packetLen(0x022f, 6) // ZC_FEED_MER
+#elif PACKETVER >= 20080102
+packetLen(0x022f, 5) // ZC_FEED_MER
+#endif
+
+// Packet: 0x0230
+#if PACKETVER >= 20081217
+packetLen(0x0230, -1) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20081203
+packetLen(0x0230, 2) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20081126
+packetLen(0x0230, -1) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20081119
+packetLen(0x0230, 4) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20081112
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0230, 10) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20081029
+packetLen(0x0230, -1) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20081022
+packetLen(0x0230, 8) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20081015
+packetLen(0x0230, -1) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20081008
+packetLen(0x0230, 10) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080924
+packetLen(0x0230, -1) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080917
+packetLen(0x0230, 71) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080903
+packetLen(0x0230, -1) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080827
+packetLen(0x0230, 22) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080813
+packetLen(0x0230, 6) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080722
+packetLen(0x0230, -1) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080715
+packetLen(0x0230, 6) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080624
+packetLen(0x0230, -1) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080617
+packetLen(0x0230, 4) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080520
+packetLen(0x0230, -1) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080513
+packetLen(0x0230, 6) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080507
+packetLen(0x0230, -1) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080429
+packetLen(0x0230, 6) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080415
+packetLen(0x0230, -1) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080401
+packetLen(0x0230, 43) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080325
+packetLen(0x0230, 8) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080318
+packetLen(0x0230, 4) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080311
+packetLen(0x0230, 3) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080304
+packetLen(0x0230, 16) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080226
+packetLen(0x0230, 28) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080219
+packetLen(0x0230, 54) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080124
+packetLen(0x0230, 3) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080102
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+#endif
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+#if PACKETVER >= 20081217
+packetLen(0x0232, 3) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20081203
+packetLen(0x0232, 58) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20081126
+packetLen(0x0232, -1) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20081119
+packetLen(0x0232, 8) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20081112
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x0232, -1) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20081022
+packetLen(0x0232, 102) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20081008
+packetLen(0x0232, -1) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20081001
+packetLen(0x0232, 8) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080910
+packetLen(0x0232, -1) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080903
+packetLen(0x0232, 6) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080730
+packetLen(0x0232, -1) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080722
+packetLen(0x0232, 2) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080715
+packetLen(0x0232, 28) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080708
+packetLen(0x0232, 12) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080701
+packetLen(0x0232, 28) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080624
+packetLen(0x0232, -1) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080617
+packetLen(0x0232, 6) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080610
+packetLen(0x0232, 30) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080603
+packetLen(0x0232, 2) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080528
+packetLen(0x0232, 4) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080520
+packetLen(0x0232, -1) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080513
+packetLen(0x0232, 17) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080429
+packetLen(0x0232, -1) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080422
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080415
+packetLen(0x0232, 10) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080408
+packetLen(0x0232, -1) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080401
+packetLen(0x0232, 2) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080325
+packetLen(0x0232, 10) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080318
+packetLen(0x0232, -1) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080311
+packetLen(0x0232, 5) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080304
+packetLen(0x0232, -1) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080226
+packetLen(0x0232, 2) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080219
+packetLen(0x0232, 36) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080124
+packetLen(0x0232, 17) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080102
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+#endif
+
+// Packet: 0x0233
+#if PACKETVER >= 20081217
+packetLen(0x0233, -1) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20081203
+packetLen(0x0233, 32) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20081112
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0233, 6) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20081029
+packetLen(0x0233, 16) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20081022
+packetLen(0x0233, -1) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20081015
+packetLen(0x0233, 3) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20081001
+packetLen(0x0233, -1) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080924
+packetLen(0x0233, 5) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080910
+packetLen(0x0233, -1) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080903
+packetLen(0x0233, 2) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080827
+packetLen(0x0233, 6) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080813
+packetLen(0x0233, -1) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080806
+packetLen(0x0233, 42) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080722
+packetLen(0x0233, -1) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080715
+packetLen(0x0233, 9) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080624
+packetLen(0x0233, -1) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080617
+packetLen(0x0233, 10) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080610
+packetLen(0x0233, 66) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080603
+packetLen(0x0233, 6) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080528
+packetLen(0x0233, -1) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080520
+packetLen(0x0233, 15) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080513
+packetLen(0x0233, 6) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080507
+packetLen(0x0233, 68) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080429
+packetLen(0x0233, -1) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080422
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080415
+packetLen(0x0233, 10) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080408
+packetLen(0x0233, 22) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080325
+packetLen(0x0233, 6) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080318
+packetLen(0x0233, 2) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080311
+packetLen(0x0233, -1) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080304
+packetLen(0x0233, 2) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080226
+packetLen(0x0233, 4) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080219
+packetLen(0x0233, 8) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080124
+packetLen(0x0233, 23) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080102
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+#endif
+
+// Packet: 0x0234
+#if PACKETVER >= 20081217
+packetLen(0x0234, 10) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20081112
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0234, 20) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20081029
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20081015
+packetLen(0x0234, -1) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20081008
+packetLen(0x0234, 60) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080910
+packetLen(0x0234, -1) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080903
+packetLen(0x0234, 3) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080813
+packetLen(0x0234, -1) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080806
+packetLen(0x0234, 4) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080730
+packetLen(0x0234, -1) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080722
+packetLen(0x0234, 58) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080715
+packetLen(0x0234, 26) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080624
+packetLen(0x0234, -1) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080617
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080528
+packetLen(0x0234, -1) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080520
+packetLen(0x0234, 10) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080429
+packetLen(0x0234, -1) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080422
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080415
+packetLen(0x0234, -1) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080408
+packetLen(0x0234, 2) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080401
+packetLen(0x0234, 16) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080325
+packetLen(0x0234, -1) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080318
+packetLen(0x0234, 3) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080311
+packetLen(0x0234, 43) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080304
+packetLen(0x0234, 4) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080226
+packetLen(0x0234, 15) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080219
+packetLen(0x0234, 282) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080124
+packetLen(0x0234, 26) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080102
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+#endif
+
+// Packet: 0x0235
+#if PACKETVER >= 20081217
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20081203
+packetLen(0x0235, 5) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20081126
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20081119
+packetLen(0x0235, 58) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20081112
+packetLen(0x0235, 30) // ZC_HOSKILLINFO_LIST
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0235, 59) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20081029
+packetLen(0x0235, 282) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20081022
+packetLen(0x0235, 3) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20081015
+packetLen(0x0235, 26) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20081008
+packetLen(0x0235, 6) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080903
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080827
+packetLen(0x0235, 7) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080813
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080730
+packetLen(0x0235, 9) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080722
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080715
+packetLen(0x0235, 9) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080708
+packetLen(0x0235, 2) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080701
+packetLen(0x0235, 6) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080617
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080610
+packetLen(0x0235, 6) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080603
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080528
+packetLen(0x0235, 12) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080520
+packetLen(0x0235, 5) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080422
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080415
+packetLen(0x0235, 28) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080408
+packetLen(0x0235, 2) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080401
+packetLen(0x0235, 19) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080325
+packetLen(0x0235, 42) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080318
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x0235, 44) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x0235, 10) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x0235, 33) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x0235, 15) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080124
+packetLen(0x0235, 30) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+#endif
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+#if PACKETVER >= 20081217
+packetLen(0x0237, -1) // CZ_KILLER_RANK
+#elif PACKETVER >= 20081203
+packetLen(0x0237, 3) // CZ_KILLER_RANK
+#elif PACKETVER >= 20081119
+packetLen(0x0237, -1) // CZ_KILLER_RANK
+#elif PACKETVER >= 20081112
+packetLen(0x0237, 15) // CZ_KILLER_RANK
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081015
+packetLen(0x0237, -1) // CZ_KILLER_RANK
+#elif PACKETVER >= 20081008
+packetLen(0x0237, 23) // CZ_KILLER_RANK
+#elif PACKETVER >= 20081001
+packetLen(0x0237, -1) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080924
+packetLen(0x0237, 5) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080917
+packetLen(0x0237, -1) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080910
+packetLen(0x0237, 9) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080820
+packetLen(0x0237, -1) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080813
+packetLen(0x0237, 54) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080806
+packetLen(0x0237, 8) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080730
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080722
+packetLen(0x0237, 6) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080715
+packetLen(0x0237, -1) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080708
+packetLen(0x0237, 11) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080701
+packetLen(0x0237, 29) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080624
+packetLen(0x0237, 14) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080617
+packetLen(0x0237, 5) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080610
+packetLen(0x0237, 4) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080603
+packetLen(0x0237, -1) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080528
+packetLen(0x0237, 19) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080520
+packetLen(0x0237, 3) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080507
+packetLen(0x0237, -1) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080429
+packetLen(0x0237, 24) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080422
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080415
+packetLen(0x0237, -1) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080408
+packetLen(0x0237, 60) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080401
+packetLen(0x0237, 20) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080325
+packetLen(0x0237, -1) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080318
+packetLen(0x0237, 8) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080311
+packetLen(0x0237, 54) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080304
+packetLen(0x0237, 3) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080226
+packetLen(0x0237, 10) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080219
+packetLen(0x0237, 3) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080124
+packetLen(0x0237, 4) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080102
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+#endif
+
+// Packet: 0x0238
+#if PACKETVER >= 20081217
+packetLen(0x0238, 22) // ZC_KILLER_RANK
+#elif PACKETVER >= 20081203
+packetLen(0x0238, 9) // ZC_KILLER_RANK
+#elif PACKETVER >= 20081126
+packetLen(0x0238, 2) // ZC_KILLER_RANK
+#elif PACKETVER >= 20081119
+packetLen(0x0238, 35) // ZC_KILLER_RANK
+#elif PACKETVER >= 20081112
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x0238, -1) // ZC_KILLER_RANK
+#elif PACKETVER >= 20081015
+packetLen(0x0238, 8) // ZC_KILLER_RANK
+#elif PACKETVER >= 20081008
+packetLen(0x0238, -1) // ZC_KILLER_RANK
+#elif PACKETVER >= 20081001
+packetLen(0x0238, 14) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080917
+packetLen(0x0238, -1) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080910
+packetLen(0x0238, 71) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080903
+packetLen(0x0238, -1) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080827
+packetLen(0x0238, 10) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080813
+packetLen(0x0238, -1) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080806
+packetLen(0x0238, 71) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080722
+packetLen(0x0238, -1) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080715
+packetLen(0x0238, 6) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080624
+packetLen(0x0238, -1) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080617
+packetLen(0x0238, 6) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080610
+packetLen(0x0238, -1) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080603
+packetLen(0x0238, 21) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080513
+packetLen(0x0238, -1) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080429
+packetLen(0x0238, 10) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080415
+packetLen(0x0238, -1) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080401
+packetLen(0x0238, 10) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080318
+packetLen(0x0238, -1) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080311
+packetLen(0x0238, 27) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080304
+packetLen(0x0238, 14) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080226
+packetLen(0x0238, 6) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080219
+packetLen(0x0238, -1) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080124
+packetLen(0x0238, 6) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080102
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+#endif
+
+// Packet: 0x0239
+#if PACKETVER >= 20081217
+packetLen(0x0239, -1) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20081203
+packetLen(0x0239, 86) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20081126
+packetLen(0x0239, -1) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20081119
+packetLen(0x0239, 29) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20081112
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081015
+packetLen(0x0239, -1) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20081008
+packetLen(0x0239, 19) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080917
+packetLen(0x0239, -1) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080910
+packetLen(0x0239, 3) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080903
+packetLen(0x0239, -1) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080827
+packetLen(0x0239, 10) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080820
+packetLen(0x0239, -1) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080813
+packetLen(0x0239, 12) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080806
+packetLen(0x0239, 32) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080730
+packetLen(0x0239, 3) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080722
+packetLen(0x0239, 6) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080715
+packetLen(0x0239, -1) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080701
+packetLen(0x0239, 30) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080624
+packetLen(0x0239, 8) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080610
+packetLen(0x0239, -1) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080603
+packetLen(0x0239, 2) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080528
+packetLen(0x0239, 29) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080520
+packetLen(0x0239, 282) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080513
+packetLen(0x0239, -1) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080507
+packetLen(0x0239, 5) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080429
+packetLen(0x0239, 10) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080422
+packetLen(0x0239, 5) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080415
+packetLen(0x0239, 10) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080408
+packetLen(0x0239, 36) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080401
+packetLen(0x0239, -1) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080325
+packetLen(0x0239, 10) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080318
+packetLen(0x0239, 26) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080311
+packetLen(0x0239, 8) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080304
+packetLen(0x0239, -1) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080226
+packetLen(0x0239, 39) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080219
+packetLen(0x0239, 8) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080124
+packetLen(0x0239, 10) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080102
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+#endif
+
+// Packet: 0x023a
+#if PACKETVER >= 20081217
+packetLen(0x023a, 90) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20081203
+packetLen(0x023a, 97) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20081126
+packetLen(0x023a, 10) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20081119
+packetLen(0x023a, -1) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20081112
+packetLen(0x023a, 6) // ZC_REQ_STORE_PASSWORD
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x023a, -1) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20081029
+packetLen(0x023a, 2) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20081022
+packetLen(0x023a, -1) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20081015
+packetLen(0x023a, 54) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080910
+packetLen(0x023a, -1) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080903
+packetLen(0x023a, 3) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080827
+packetLen(0x023a, -1) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080820
+packetLen(0x023a, 26) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080813
+packetLen(0x023a, -1) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080806
+packetLen(0x023a, 28) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080715
+packetLen(0x023a, -1) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080708
+packetLen(0x023a, 9) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080701
+packetLen(0x023a, 13) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080624
+packetLen(0x023a, -1) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080617
+packetLen(0x023a, 10) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080513
+packetLen(0x023a, -1) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080507
+packetLen(0x023a, 28) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080429
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080422
+packetLen(0x023a, -1) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080415
+packetLen(0x023a, 2) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080401
+packetLen(0x023a, 6) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080325
+packetLen(0x023a, -1) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080318
+packetLen(0x023a, 8) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080311
+packetLen(0x023a, 10) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080304
+packetLen(0x023a, 2) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080226
+packetLen(0x023a, 6) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080219
+packetLen(0x023a, 11) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080124
+packetLen(0x023a, 71) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080102
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+#endif
+
+// Packet: 0x023b
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+
+// Packet: 0x023c
+#if PACKETVER >= 20081217
+packetLen(0x023c, -1) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20081203
+packetLen(0x023c, 30) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20081126
+packetLen(0x023c, -1) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20081119
+packetLen(0x023c, 5) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20081112
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20081022
+packetLen(0x023c, -1) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20081015
+packetLen(0x023c, 18) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20081008
+packetLen(0x023c, 3) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080910
+packetLen(0x023c, -1) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080903
+packetLen(0x023c, 10) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080827
+packetLen(0x023c, -1) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080820
+packetLen(0x023c, 4) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080813
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080730
+packetLen(0x023c, -1) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080722
+packetLen(0x023c, 3) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080708
+packetLen(0x023c, -1) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080701
+packetLen(0x023c, 60) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080617
+packetLen(0x023c, -1) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080610
+packetLen(0x023c, 4) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080513
+packetLen(0x023c, -1) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080507
+packetLen(0x023c, 30) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080429
+packetLen(0x023c, 3) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080422
+packetLen(0x023c, -1) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080415
+packetLen(0x023c, 10) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080408
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080401
+packetLen(0x023c, 12) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080325
+packetLen(0x023c, 79) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080318
+packetLen(0x023c, 10) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080311
+packetLen(0x023c, 21) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080226
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080219
+packetLen(0x023c, 5) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080124
+packetLen(0x023c, -1) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080102
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+#endif
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+#if PACKETVER >= 20081126
+packetLen(0x0274, -1) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20081119
+packetLen(0x0274, 11) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20081112
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0274, 3) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20081015
+packetLen(0x0274, -1) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20081008
+packetLen(0x0274, 6) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20081001
+packetLen(0x0274, 186) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080924
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080917
+packetLen(0x0274, -1) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080910
+packetLen(0x0274, 6) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080903
+packetLen(0x0274, 35) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080715
+packetLen(0x0274, -1) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080708
+packetLen(0x0274, 67) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080617
+packetLen(0x0274, -1) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080610
+packetLen(0x0274, 4) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080603
+packetLen(0x0274, -1) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080528
+packetLen(0x0274, 10) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080520
+packetLen(0x0274, 30) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080513
+packetLen(0x0274, 7) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080507
+packetLen(0x0274, -1) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080429
+packetLen(0x0274, 7) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080422
+packetLen(0x0274, 282) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080415
+packetLen(0x0274, 6) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080408
+packetLen(0x0274, 3) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080401
+packetLen(0x0274, 2) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080325
+packetLen(0x0274, 53) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080318
+packetLen(0x0274, -1) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080311
+packetLen(0x0274, 67) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080304
+packetLen(0x0274, -1) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080226
+packetLen(0x0274, 24) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080219
+packetLen(0x0274, 32) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080124
+packetLen(0x0274, 3) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080102
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+#endif
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+#if PACKETVER >= 20080722
+packetLen(0x027c, 60) // CA_LOGIN4
+#elif PACKETVER >= 20080715
+packetLen(0x027c, 96) // CA_LOGIN4
+#elif PACKETVER >= 20080102
+packetLen(0x027c, 60) // CA_LOGIN4
+#endif
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+packetLen(0x0281, 4) // CZ_GANGSI_RANK
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+#if PACKETVER >= 20081105
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20081029
+packetLen(0x0287, 60) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20081022
+packetLen(0x0287, 42) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20081015
+packetLen(0x0287, 4) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080924
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080917
+packetLen(0x0287, 114) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080820
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080813
+packetLen(0x0287, 97) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080806
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080730
+packetLen(0x0287, 5) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080722
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080715
+packetLen(0x0287, 6) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080708
+packetLen(0x0287, 30) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080701
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080624
+packetLen(0x0287, 26) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080617
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080610
+packetLen(0x0287, 2) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080513
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080507
+packetLen(0x0287, 11) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080422
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080415
+packetLen(0x0287, 31) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080408
+packetLen(0x0287, 3) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080401
+packetLen(0x0287, 2) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080325
+packetLen(0x0287, 4) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080318
+packetLen(0x0287, 32) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x0287, 18) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x0287, 10) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x0287, 11) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080124
+packetLen(0x0287, 3) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+#endif
+
+// Packet: 0x0288
+packetLen(0x0288, 10) // CZ_PC_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0289
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+#if PACKETVER >= 20081203
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20081126
+packetLen(0x0295, 7) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20081119
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20081112
+packetLen(0x0295, 8) // ZC_EQUIPMENT_ITEMLIST2
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0295, 6) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20081029
+packetLen(0x0295, 5) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20081015
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20081008
+packetLen(0x0295, 6) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20081001
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080924
+packetLen(0x0295, 14) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080910
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080903
+packetLen(0x0295, 2) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080827
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080813
+packetLen(0x0295, 6) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080806
+packetLen(0x0295, 54) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080715
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080708
+packetLen(0x0295, 11) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080701
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080624
+packetLen(0x0295, 31) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080610
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080603
+packetLen(0x0295, 30) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080513
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080507
+packetLen(0x0295, 6) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080429
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080422
+packetLen(0x0295, 53) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080415
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080408
+packetLen(0x0295, 10) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080401
+packetLen(0x0295, 2) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080325
+packetLen(0x0295, 66) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080318
+packetLen(0x0295, 8) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080311
+packetLen(0x0295, 4) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080304
+packetLen(0x0295, 5) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080226
+packetLen(0x0295, 3) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080219
+packetLen(0x0295, 6) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080124
+packetLen(0x0295, 34) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080102
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+#endif
+
+// Packet: 0x0296
+#if PACKETVER >= 20081217
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20081203
+packetLen(0x0296, 23) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20081126
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20081119
+packetLen(0x0296, 6) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20081112
+packetLen(0x0296, 21) // ZC_STORE_EQUIPMENT_ITEMLIST2
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20081022
+packetLen(0x0296, 16) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20081008
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20081001
+packetLen(0x0296, 19) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080924
+packetLen(0x0296, 14) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080813
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080806
+packetLen(0x0296, 86) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080730
+packetLen(0x0296, 4) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080715
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080708
+packetLen(0x0296, 282) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080624
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080617
+packetLen(0x0296, 19) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080610
+packetLen(0x0296, 17) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080528
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080520
+packetLen(0x0296, 5) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080513
+packetLen(0x0296, 53) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080507
+packetLen(0x0296, 3) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080422
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080415
+packetLen(0x0296, 28) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080408
+packetLen(0x0296, 14) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080401
+packetLen(0x0296, 20) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080325
+packetLen(0x0296, 9) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080318
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080311
+packetLen(0x0296, 29) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080304
+packetLen(0x0296, 90) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080226
+packetLen(0x0296, 6) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080219
+packetLen(0x0296, 5) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080124
+packetLen(0x0296, 4) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080102
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#endif
+
+// Packet: 0x0297
+#if PACKETVER >= 20081217
+packetLen(0x0297, 6) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20081203
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20081126
+packetLen(0x0297, 9) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20081105
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20081029
+packetLen(0x0297, 2) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20081022
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20081008
+packetLen(0x0297, 6) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080910
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080903
+packetLen(0x0297, 6) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080820
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080813
+packetLen(0x0297, 14) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080806
+packetLen(0x0297, 8) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080730
+packetLen(0x0297, 86) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080715
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080708
+packetLen(0x0297, 67) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080701
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080624
+packetLen(0x0297, 4) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080610
+packetLen(0x0297, 6) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080603
+packetLen(0x0297, 9) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080513
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080429
+packetLen(0x0297, 2) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080422
+packetLen(0x0297, 8) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080408
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080401
+packetLen(0x0297, 3) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080325
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080318
+packetLen(0x0297, 36) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080311
+packetLen(0x0297, 2) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080304
+packetLen(0x0297, 11) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080226
+packetLen(0x0297, 5) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080219
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080124
+packetLen(0x0297, 29) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080102
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+#endif
+
+// Packet: 0x0298
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+
+// Packet: 0x0299
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+
+// Packet: 0x029a
+#if PACKETVER >= 20081217
+packetLen(0x029a, -1) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20081203
+packetLen(0x029a, 7) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20081119
+packetLen(0x029a, -1) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20081112
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x029a, -1) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20081029
+packetLen(0x029a, 20) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20081022
+packetLen(0x029a, 6) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080924
+packetLen(0x029a, -1) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080917
+packetLen(0x029a, 4) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080910
+packetLen(0x029a, 2) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080813
+packetLen(0x029a, -1) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080806
+packetLen(0x029a, 9) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080715
+packetLen(0x029a, -1) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080708
+packetLen(0x029a, 6) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080610
+packetLen(0x029a, -1) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080603
+packetLen(0x029a, 28) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080528
+packetLen(0x029a, 7) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080520
+packetLen(0x029a, 55) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080513
+packetLen(0x029a, -1) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080507
+packetLen(0x029a, 12) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080429
+packetLen(0x029a, 44) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080422
+packetLen(0x029a, 11) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080408
+packetLen(0x029a, -1) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080401
+packetLen(0x029a, 14) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080325
+packetLen(0x029a, 2) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080318
+packetLen(0x029a, 16) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080311
+packetLen(0x029a, 8) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080304
+packetLen(0x029a, 21) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080226
+packetLen(0x029a, 3) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080219
+packetLen(0x029a, -1) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080124
+packetLen(0x029a, 30) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080102
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+#endif
+
+// Packet: 0x029b
+packetLen(0x029b, 80) // ZC_MER_INIT
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a5
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+
+// Packet: 0x02a6
+#if PACKETVER >= 20080122
+// removed
+#elif PACKETVER >= 20080108
+packetLen(0x02a6, 204) // ZC_HACKSH_CPX_MSG
+#elif PACKETVER >= 20080102
+packetLen(0x02a6, 22) // ZC_HACKSH_CPX_MSG
+#endif
+
+// Packet: 0x02a7
+#if PACKETVER >= 20080122
+// removed
+#elif PACKETVER >= 20080108
+packetLen(0x02a7, 204) // CZ_HACKSH_CPX_MSG
+#elif PACKETVER >= 20080102
+packetLen(0x02a7, 22) // CZ_HACKSH_CPX_MSG
+#endif
+
+// Packet: 0x02a8
+#if PACKETVER >= 20080108
+// removed
+#elif PACKETVER >= 20080102
+packetLen(0x02a8, 162) // ZC_HACKSHIELD_CRC_MSG
+#endif
+
+// Packet: 0x02a9
+#if PACKETVER >= 20080108
+// removed
+#elif PACKETVER >= 20080102
+packetLen(0x02a9, 58) // CZ_HACKSHIELD_CRC_MSG
+#endif
+
+// Packet: 0x02aa
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+
+// Packet: 0x02ab
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+
+// Packet: 0x02ac
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+
+// Packet: 0x02ad
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+
+// Packet: 0x02b0
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+
+// Packet: 0x02b1
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+
+// Packet: 0x02b2
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+
+// Packet: 0x02b3
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+
+// Packet: 0x02b4
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+
+// Packet: 0x02b5
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+
+// Packet: 0x02b6
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+
+// Packet: 0x02b7
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+
+// Packet: 0x02b8
+packetLen(0x02b8, 22) // ZC_ITEM_PICKUP_PARTY
+
+// Packet: 0x02b9
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+
+// Packet: 0x02ba
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+
+// Packet: 0x02bb
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+
+// Packet: 0x02bc
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+
+// Packet: 0x02bf
+#if PACKETVER >= 20080318
+// removed
+#elif PACKETVER >= 20080102
+packetLen(0x02bf, 10) // ZC_SRPACKETR2_INIT
+#endif
+
+// Packet: 0x02c0
+#if PACKETVER >= 20080318
+// removed
+#elif PACKETVER >= 20080102
+packetLen(0x02c0, 2) // CZ_SRPACKETR2_START
+#endif
+
+// Packet: 0x02c1
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+
+// Packet: 0x02c2
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+
+// Packet: 0x02c4
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+
+// Packet: 0x02c5
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c6
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+
+// Packet: 0x02c7
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c8
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+
+// Packet: 0x02c9
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+
+// Packet: 0x02ca
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+
+// Packet: 0x02cb
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+
+// Packet: 0x02cc
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+
+// Packet: 0x02cd
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+
+// Packet: 0x02ce
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+
+// Packet: 0x02cf
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+
+// Packet: 0x02d0
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d1
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d2
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d3
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+
+// Packet: 0x02d4
+#if PACKETVER >= 20080304
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+#elif PACKETVER >= 20080226
+packetLen(0x02d4, 30) // ZC_ITEM_PICKUP_ACK3
+#elif PACKETVER >= 20080219
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+#elif PACKETVER >= 20080124
+packetLen(0x02d4, 32) // ZC_ITEM_PICKUP_ACK3
+#elif PACKETVER >= 20080102
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+#endif
+
+// Packet: 0x02d5
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+
+// Packet: 0x02d6
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d7
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d8
+packetLen(0x02d8, 10) // CZ_CONFIG
+
+// Packet: 0x02d9
+packetLen(0x02d9, 10) // ZC_CONFIG
+
+// Packet: 0x02da
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+
+// Packet: 0x02db
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+
+// Packet: 0x02dc
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+
+// Packet: 0x02dd
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+
+// Packet: 0x02de
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+
+// Packet: 0x02df
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+
+// Packet: 0x02e0
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+
+// Packet: 0x02e1
+#if PACKETVER >= 20081217
+packetLen(0x02e1, 6) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20081112
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x02e1, -1) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20081029
+packetLen(0x02e1, 5) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20081022
+packetLen(0x02e1, 90) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20081008
+packetLen(0x02e1, -1) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20081001
+packetLen(0x02e1, 6) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080924
+packetLen(0x02e1, -1) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080917
+packetLen(0x02e1, 6) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080910
+packetLen(0x02e1, 2) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080903
+packetLen(0x02e1, 5) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080827
+packetLen(0x02e1, -1) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080820
+packetLen(0x02e1, 13) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080813
+packetLen(0x02e1, 2) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080730
+packetLen(0x02e1, -1) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080722
+packetLen(0x02e1, 102) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080715
+packetLen(0x02e1, 3) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080617
+packetLen(0x02e1, -1) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080610
+packetLen(0x02e1, 26) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080603
+packetLen(0x02e1, 8) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080528
+packetLen(0x02e1, 10) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080520
+packetLen(0x02e1, 6) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080513
+packetLen(0x02e1, 55) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080507
+packetLen(0x02e1, 22) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080408
+packetLen(0x02e1, -1) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080401
+packetLen(0x02e1, 9) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080325
+packetLen(0x02e1, 26) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080311
+packetLen(0x02e1, -1) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080304
+packetLen(0x02e1, 8) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080102
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+#endif
+
+// Packet: 0x02e2
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+
+// Packet: 0x02e3
+packetLen(0x02e3, 22) // CZ_USE_SKILL_NEW_JAPEN
+
+// Packet: 0x02e4
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+
+// Packet: 0x02e5
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+
+// Packet: 0x02e6
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+
+// Packet: 0x02e7
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+
+// Packet: 0x02e8
+packetLen(0x02e8, -1) // ZC_NORMAL_ITEMLIST3
+
+// Packet: 0x02e9
+packetLen(0x02e9, -1) // ZC_CART_NORMAL_ITEMLIST3
+
+// Packet: 0x02ea
+packetLen(0x02ea, -1) // ZC_STORE_NORMAL_ITEMLIST3
+
+// Packet: 0x02eb
+packetLen(0x02eb, 13) // ZC_ACCEPT_ENTER2
+
+// Packet: 0x02ec
+#if PACKETVER >= 20081203
+packetLen(0x02ec, -1) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20081119
+packetLen(0x02ec, 6) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20081112
+packetLen(0x02ec, 67) // ZC_NOTIFY_MOVEENTRY4
+// ignored packet from 2008-11-12dRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x02ec, -1) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20081029
+packetLen(0x02ec, 68) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20081022
+packetLen(0x02ec, 30) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20081008
+packetLen(0x02ec, 4) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080917
+packetLen(0x02ec, -1) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080910
+packetLen(0x02ec, 30) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080903
+packetLen(0x02ec, -1) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080827
+packetLen(0x02ec, 26) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080820
+packetLen(0x02ec, -1) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080813
+packetLen(0x02ec, 28) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080806
+packetLen(0x02ec, 68) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080730
+packetLen(0x02ec, 2) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080722
+packetLen(0x02ec, 29) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080715
+packetLen(0x02ec, 3) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080708
+packetLen(0x02ec, 32) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080624
+packetLen(0x02ec, -1) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080617
+packetLen(0x02ec, 42) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080610
+packetLen(0x02ec, 6) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080603
+packetLen(0x02ec, 4) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080528
+packetLen(0x02ec, 6) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080520
+packetLen(0x02ec, 14) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080513
+packetLen(0x02ec, 11) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080507
+packetLen(0x02ec, -1) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080429
+packetLen(0x02ec, 43) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080422
+packetLen(0x02ec, 60) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080415
+packetLen(0x02ec, 3) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080408
+packetLen(0x02ec, 6) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080401
+packetLen(0x02ec, 17) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080325
+packetLen(0x02ec, 29) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080318
+packetLen(0x02ec, 10) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080311
+packetLen(0x02ec, 12) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080304
+packetLen(0x02ec, 60) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080102
+packetLen(0x02ec, 67) // ZC_NOTIFY_MOVEENTRY4
+#endif
+
+// Packet: 0x02ed
+#if PACKETVER >= 20081119
+packetLen(0x02ed, -1) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20081112
+packetLen(0x02ed, 59) // ZC_NOTIFY_NEWENTRY4
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x02ed, -1) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20081022
+packetLen(0x02ed, 30) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20081015
+packetLen(0x02ed, 5) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20081008
+packetLen(0x02ed, 4) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20081001
+packetLen(0x02ed, -1) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080924
+packetLen(0x02ed, 17) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080917
+packetLen(0x02ed, 10) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080910
+packetLen(0x02ed, -1) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080903
+packetLen(0x02ed, 15) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080827
+packetLen(0x02ed, 2) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080813
+packetLen(0x02ed, -1) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080806
+packetLen(0x02ed, 6) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080730
+packetLen(0x02ed, 29) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080715
+packetLen(0x02ed, -1) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080708
+packetLen(0x02ed, 6) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080624
+packetLen(0x02ed, -1) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080617
+packetLen(0x02ed, 60) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080610
+packetLen(0x02ed, 7) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080603
+packetLen(0x02ed, -1) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080528
+packetLen(0x02ed, 97) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080520
+packetLen(0x02ed, 11) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080513
+packetLen(0x02ed, 21) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080507
+packetLen(0x02ed, 10) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080429
+packetLen(0x02ed, -1) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080422
+packetLen(0x02ed, 30) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080415
+packetLen(0x02ed, 53) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080408
+packetLen(0x02ed, 7) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080401
+packetLen(0x02ed, 11) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080325
+packetLen(0x02ed, -1) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080318
+packetLen(0x02ed, 6) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080304
+packetLen(0x02ed, -1) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080102
+packetLen(0x02ed, 59) // ZC_NOTIFY_NEWENTRY4
+#endif
+
+// Packet: 0x02ee
+#if PACKETVER >= 20081203
+packetLen(0x02ee, -1) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20081126
+packetLen(0x02ee, 6) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20081119
+packetLen(0x02ee, 26) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20081112
+packetLen(0x02ee, 60) // ZC_NOTIFY_STANDENTRY4
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x02ee, 14) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20081029
+packetLen(0x02ee, 60) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20081008
+packetLen(0x02ee, -1) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20081001
+packetLen(0x02ee, 6) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080924
+packetLen(0x02ee, -1) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080910
+packetLen(0x02ee, 3) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080903
+packetLen(0x02ee, 2) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080827
+packetLen(0x02ee, -1) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080820
+packetLen(0x02ee, 8) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080813
+packetLen(0x02ee, -1) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080806
+packetLen(0x02ee, 6) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080730
+packetLen(0x02ee, 4) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080715
+packetLen(0x02ee, -1) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080708
+packetLen(0x02ee, 36) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080610
+packetLen(0x02ee, -1) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080603
+packetLen(0x02ee, 2) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080528
+packetLen(0x02ee, 3) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080520
+packetLen(0x02ee, 28) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080507
+packetLen(0x02ee, -1) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080429
+packetLen(0x02ee, 4) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080422
+packetLen(0x02ee, 97) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080415
+packetLen(0x02ee, 60) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080408
+packetLen(0x02ee, -1) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080401
+packetLen(0x02ee, 42) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080325
+packetLen(0x02ee, 4) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080318
+packetLen(0x02ee, 13) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080311
+packetLen(0x02ee, 81) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080304
+packetLen(0x02ee, -1) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080102
+packetLen(0x02ee, 60) // ZC_NOTIFY_STANDENTRY4
+#endif
+
+// Packet: 0x02ef
+packetLen(0x02ef, 8) // ZC_NOTIFY_FONT
+
+// Packet: 0x02f0
+#if PACKETVER >= 20080318
+packetLen(0x02f0, 10) // ZC_PROGRESS
+#endif
+
+// Packet: 0x02f1
+#if PACKETVER >= 20080318
+packetLen(0x02f1, 2) // CZ_PROGRESS
+#endif
+
+// Packet: 0x02f2
+#if PACKETVER >= 20080318
+packetLen(0x02f2, 2) // ZC_PROGRESS_CANCEL
+#endif
+
+// Packet: 0x02f3
+#if PACKETVER >= 20081217
+packetLen(0x02f3, 3) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20081203
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20081126
+packetLen(0x02f3, 4) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20081022
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20081015
+packetLen(0x02f3, 7) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20081008
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20081001
+packetLen(0x02f3, 10) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080924
+packetLen(0x02f3, 58) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080910
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080903
+packetLen(0x02f3, 21) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080827
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080820
+packetLen(0x02f3, 2) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080813
+packetLen(0x02f3, 10) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080806
+packetLen(0x02f3, 4) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080730
+packetLen(0x02f3, 10) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080722
+packetLen(0x02f3, 2) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080715
+packetLen(0x02f3, 30) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080701
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080624
+packetLen(0x02f3, 2) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080617
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080610
+packetLen(0x02f3, 30) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080603
+packetLen(0x02f3, 9) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080528
+packetLen(0x02f3, 26) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080520
+packetLen(0x02f3, 5) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080513
+packetLen(0x02f3, 3) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080507
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080429
+packetLen(0x02f3, 7) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080422
+packetLen(0x02f3, 3) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080415
+packetLen(0x02f3, 67) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080408
+packetLen(0x02f3, 23) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080401
+packetLen(0x02f3, 71) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20080325
+packetLen(0x02f3, 2) // CZ_IRMAIL_SEND
+#endif
+
+// Packet: 0x02f4
+#if PACKETVER >= 20081217
+packetLen(0x02f4, -1) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20081203
+packetLen(0x02f4, 15) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20081126
+packetLen(0x02f4, 11) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20081112
+packetLen(0x02f4, -1) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20081105
+packetLen(0x02f4, 2) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20081029
+packetLen(0x02f4, -1) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20081015
+packetLen(0x02f4, 6) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20081008
+packetLen(0x02f4, 7) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20081001
+packetLen(0x02f4, 8) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20080924
+packetLen(0x02f4, -1) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20080917
+packetLen(0x02f4, 55) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20080910
+packetLen(0x02f4, 11) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20080813
+packetLen(0x02f4, -1) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20080806
+packetLen(0x02f4, 35) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20080715
+packetLen(0x02f4, -1) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20080708
+packetLen(0x02f4, 6) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20080617
+packetLen(0x02f4, -1) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20080610
+packetLen(0x02f4, 30) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20080507
+packetLen(0x02f4, -1) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20080429
+packetLen(0x02f4, 29) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20080422
+packetLen(0x02f4, 6) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20080408
+packetLen(0x02f4, -1) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20080401
+packetLen(0x02f4, 9) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20080325
+packetLen(0x02f4, 4) // ZC_IRMAIL_SEND_RES
+#endif
+
+// Packet: 0x02f5
+#if PACKETVER >= 20081217
+packetLen(0x02f5, 6) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20081126
+packetLen(0x02f5, -1) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20081119
+packetLen(0x02f5, 2) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20081112
+packetLen(0x02f5, -1) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20081105
+packetLen(0x02f5, 90) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20081029
+packetLen(0x02f5, 6) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20081022
+packetLen(0x02f5, -1) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20081015
+packetLen(0x02f5, 71) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20081001
+packetLen(0x02f5, -1) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080924
+packetLen(0x02f5, 10) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080910
+packetLen(0x02f5, -1) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080903
+packetLen(0x02f5, 3) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080813
+packetLen(0x02f5, -1) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080806
+packetLen(0x02f5, 11) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080722
+packetLen(0x02f5, -1) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080715
+packetLen(0x02f5, 2) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080708
+packetLen(0x02f5, 26) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080701
+packetLen(0x02f5, 8) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080624
+packetLen(0x02f5, 7) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080617
+packetLen(0x02f5, 26) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080610
+packetLen(0x02f5, -1) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080603
+packetLen(0x02f5, 28) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080528
+packetLen(0x02f5, -1) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080520
+packetLen(0x02f5, 2) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080513
+packetLen(0x02f5, 3) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080507
+packetLen(0x02f5, 5) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080429
+packetLen(0x02f5, 8) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080422
+packetLen(0x02f5, -1) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080415
+packetLen(0x02f5, 60) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080401
+packetLen(0x02f5, -1) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20080325
+packetLen(0x02f5, 86) // ZC_IRMAIL_NOTIFY
+#endif
+
+// Packet: 0x02f6
+#if PACKETVER >= 20081217
+packetLen(0x02f6, 4) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20081126
+packetLen(0x02f6, -1) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20081119
+packetLen(0x02f6, 2) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20081112
+packetLen(0x02f6, 29) // CZ_IRMAIL_LIST
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x02f6, 10) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20081015
+packetLen(0x02f6, -1) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20081008
+packetLen(0x02f6, 30) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20081001
+packetLen(0x02f6, -1) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080924
+packetLen(0x02f6, 11) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080827
+packetLen(0x02f6, -1) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080820
+packetLen(0x02f6, 22) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080806
+packetLen(0x02f6, -1) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080730
+packetLen(0x02f6, 4) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080708
+packetLen(0x02f6, -1) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080624
+packetLen(0x02f6, 8) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080617
+packetLen(0x02f6, -1) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080610
+packetLen(0x02f6, 5) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080603
+packetLen(0x02f6, -1) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080528
+packetLen(0x02f6, 2) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080520
+packetLen(0x02f6, 12) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080513
+packetLen(0x02f6, -1) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080507
+packetLen(0x02f6, 5) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080429
+packetLen(0x02f6, 22) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080422
+packetLen(0x02f6, 5) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080415
+packetLen(0x02f6, 2) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080408
+packetLen(0x02f6, 8) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080401
+packetLen(0x02f6, 6) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080325
+packetLen(0x02f6, 4) // CZ_IRMAIL_LIST
+#endif
+
+// Packet: 0x02f7
+#if PACKETVER >= 20081217
+packetLen(0x02f7, 6)
+#elif PACKETVER >= 20081119
+packetLen(0x02f7, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x02f7, 2)
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x02f7, 2)
+#elif PACKETVER >= 20081029
+packetLen(0x02f7, 3)
+#elif PACKETVER >= 20081022
+packetLen(0x02f7, 11)
+#elif PACKETVER >= 20081015
+packetLen(0x02f7, 6)
+#elif PACKETVER >= 20081008
+packetLen(0x02f7, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x02f7, 4)
+#elif PACKETVER >= 20080910
+packetLen(0x02f7, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x02f7, 6)
+#elif PACKETVER >= 20080827
+packetLen(0x02f7, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x02f7, 54)
+#elif PACKETVER >= 20080730
+packetLen(0x02f7, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x02f7, 11)
+#elif PACKETVER >= 20080715
+packetLen(0x02f7, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x02f7, 14)
+#elif PACKETVER >= 20080624
+packetLen(0x02f7, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x02f7, 26)
+#elif PACKETVER >= 20080610
+packetLen(0x02f7, 12)
+#elif PACKETVER >= 20080603
+packetLen(0x02f7, 22)
+#elif PACKETVER >= 20080528
+packetLen(0x02f7, 8)
+#elif PACKETVER >= 20080520
+packetLen(0x02f7, 6)
+#elif PACKETVER >= 20080513
+packetLen(0x02f7, 10)
+#elif PACKETVER >= 20080507
+packetLen(0x02f7, 30)
+#elif PACKETVER >= 20080429
+packetLen(0x02f7, 7)
+#elif PACKETVER >= 20080422
+packetLen(0x02f7, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x02f7, 6)
+#elif PACKETVER >= 20080408
+packetLen(0x02f7, -1)
+#elif PACKETVER >= 20080401
+packetLen(0x02f7, 26)
+#elif PACKETVER >= 20080325
+packetLen(0x02f7, -1)
+#endif
+
+// Packet: 0x02f8
+#if PACKETVER >= 20081126
+packetLen(0x02f8, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x02f8, 26)
+#elif PACKETVER >= 20081105
+packetLen(0x02f8, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x02f8, 43)
+#elif PACKETVER >= 20081015
+packetLen(0x02f8, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x02f8, 6)
+#elif PACKETVER >= 20081001
+packetLen(0x02f8, 10)
+#elif PACKETVER >= 20080827
+packetLen(0x02f8, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x02f8, 39)
+#elif PACKETVER >= 20080806
+packetLen(0x02f8, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x02f8, 8)
+#elif PACKETVER >= 20080722
+packetLen(0x02f8, 4)
+#elif PACKETVER >= 20080715
+packetLen(0x02f8, 8)
+#elif PACKETVER >= 20080708
+packetLen(0x02f8, 22)
+#elif PACKETVER >= 20080701
+packetLen(0x02f8, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x02f8, 12)
+#elif PACKETVER >= 20080617
+packetLen(0x02f8, 3)
+#elif PACKETVER >= 20080610
+packetLen(0x02f8, 2)
+#elif PACKETVER >= 20080520
+packetLen(0x02f8, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x02f8, 30)
+#elif PACKETVER >= 20080422
+packetLen(0x02f8, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x02f8, 3)
+#elif PACKETVER >= 20080408
+packetLen(0x02f8, 10)
+#elif PACKETVER >= 20080401
+packetLen(0x02f8, 29)
+#elif PACKETVER >= 20080325
+packetLen(0x02f8, 7)
+#endif
+
+// Packet: 0x02f9
+#if PACKETVER >= 20081217
+packetLen(0x02f9, 4)
+#elif PACKETVER >= 20081203
+packetLen(0x02f9, 11)
+#elif PACKETVER >= 20081126
+packetLen(0x02f9, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x02f9, 8)
+#elif PACKETVER >= 20081112
+packetLen(0x02f9, 7)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081015
+packetLen(0x02f9, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x02f9, 8)
+#elif PACKETVER >= 20080924
+packetLen(0x02f9, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x02f9, 6)
+#elif PACKETVER >= 20080903
+packetLen(0x02f9, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x02f9, 17)
+#elif PACKETVER >= 20080806
+packetLen(0x02f9, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x02f9, 6)
+#elif PACKETVER >= 20080722
+packetLen(0x02f9, 3)
+#elif PACKETVER >= 20080701
+packetLen(0x02f9, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x02f9, 43)
+#elif PACKETVER >= 20080617
+packetLen(0x02f9, 2)
+#elif PACKETVER >= 20080610
+packetLen(0x02f9, 71)
+#elif PACKETVER >= 20080528
+packetLen(0x02f9, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x02f9, 4)
+#elif PACKETVER >= 20080513
+packetLen(0x02f9, 28)
+#elif PACKETVER >= 20080507
+packetLen(0x02f9, 26)
+#elif PACKETVER >= 20080429
+packetLen(0x02f9, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x02f9, 5)
+#elif PACKETVER >= 20080415
+packetLen(0x02f9, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x02f9, 8)
+#elif PACKETVER >= 20080325
+packetLen(0x02f9, 6)
+#endif
+
+// Packet: 0x02fa
+#if PACKETVER >= 20081217
+packetLen(0x02fa, 3)
+#elif PACKETVER >= 20081119
+packetLen(0x02fa, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x02fa, 14)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x02fa, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x02fa, 23)
+#elif PACKETVER >= 20081022
+packetLen(0x02fa, 6)
+#elif PACKETVER >= 20081001
+packetLen(0x02fa, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x02fa, 2)
+#elif PACKETVER >= 20080917
+packetLen(0x02fa, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x02fa, 54)
+#elif PACKETVER >= 20080903
+packetLen(0x02fa, 6)
+#elif PACKETVER >= 20080827
+packetLen(0x02fa, 4)
+#elif PACKETVER >= 20080820
+packetLen(0x02fa, 97)
+#elif PACKETVER >= 20080813
+packetLen(0x02fa, 7)
+#elif PACKETVER >= 20080806
+packetLen(0x02fa, 27)
+#elif PACKETVER >= 20080715
+packetLen(0x02fa, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x02fa, 26)
+#elif PACKETVER >= 20080701
+packetLen(0x02fa, 8)
+#elif PACKETVER >= 20080617
+packetLen(0x02fa, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x02fa, 6)
+#elif PACKETVER >= 20080603
+packetLen(0x02fa, 65)
+#elif PACKETVER >= 20080528
+packetLen(0x02fa, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x02fa, 6)
+#elif PACKETVER >= 20080513
+packetLen(0x02fa, 27)
+#elif PACKETVER >= 20080507
+packetLen(0x02fa, 33)
+#elif PACKETVER >= 20080429
+packetLen(0x02fa, 68)
+#elif PACKETVER >= 20080422
+packetLen(0x02fa, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x02fa, 54)
+#elif PACKETVER >= 20080408
+packetLen(0x02fa, 2)
+#elif PACKETVER >= 20080401
+packetLen(0x02fa, 16)
+#elif PACKETVER >= 20080325
+packetLen(0x02fa, 3)
+#endif
+
+// Packet: 0x02fb
+#if PACKETVER >= 20081217
+packetLen(0x02fb, 10)
+#elif PACKETVER >= 20081203
+packetLen(0x02fb, 33)
+#elif PACKETVER >= 20081126
+packetLen(0x02fb, 20)
+#elif PACKETVER >= 20081112
+packetLen(0x02fb, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x02fb, 54)
+#elif PACKETVER >= 20081022
+packetLen(0x02fb, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x02fb, 8)
+#elif PACKETVER >= 20080917
+packetLen(0x02fb, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x02fb, 4)
+#elif PACKETVER >= 20080903
+packetLen(0x02fb, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x02fb, 2)
+#elif PACKETVER >= 20080820
+packetLen(0x02fb, 6)
+#elif PACKETVER >= 20080715
+packetLen(0x02fb, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x02fb, 3)
+#elif PACKETVER >= 20080701
+packetLen(0x02fb, 4)
+#elif PACKETVER >= 20080624
+packetLen(0x02fb, 11)
+#elif PACKETVER >= 20080617
+packetLen(0x02fb, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x02fb, 29)
+#elif PACKETVER >= 20080603
+packetLen(0x02fb, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x02fb, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x02fb, 6)
+#elif PACKETVER >= 20080507
+packetLen(0x02fb, 8)
+#elif PACKETVER >= 20080422
+packetLen(0x02fb, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x02fb, 10)
+#elif PACKETVER >= 20080408
+packetLen(0x02fb, 4)
+#elif PACKETVER >= 20080401
+packetLen(0x02fb, 10)
+#elif PACKETVER >= 20080325
+packetLen(0x02fb, 3)
+#endif
+
+// Packet: 0x02fc
+#if PACKETVER >= 20081217
+packetLen(0x02fc, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x02fc, 6)
+#elif PACKETVER >= 20081119
+packetLen(0x02fc, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x02fc, 54)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x02fc, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x02fc, 8)
+#elif PACKETVER >= 20080917
+packetLen(0x02fc, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x02fc, 42)
+#elif PACKETVER >= 20080903
+packetLen(0x02fc, 2)
+#elif PACKETVER >= 20080827
+packetLen(0x02fc, 27)
+#elif PACKETVER >= 20080806
+packetLen(0x02fc, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x02fc, 6)
+#elif PACKETVER >= 20080715
+packetLen(0x02fc, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x02fc, 17)
+#elif PACKETVER >= 20080701
+packetLen(0x02fc, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x02fc, 8)
+#elif PACKETVER >= 20080617
+packetLen(0x02fc, 5)
+#elif PACKETVER >= 20080520
+packetLen(0x02fc, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x02fc, 2)
+#elif PACKETVER >= 20080507
+packetLen(0x02fc, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x02fc, 4)
+#elif PACKETVER >= 20080408
+packetLen(0x02fc, -1)
+#elif PACKETVER >= 20080401
+packetLen(0x02fc, 3)
+#elif PACKETVER >= 20080325
+packetLen(0x02fc, -1)
+#endif
+
+// Packet: 0x02fd
+#if PACKETVER >= 20081217
+packetLen(0x02fd, 11)
+#elif PACKETVER >= 20081203
+packetLen(0x02fd, 10)
+#elif PACKETVER >= 20081119
+packetLen(0x02fd, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x02fd, 55)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x02fd, 10)
+#elif PACKETVER >= 20081029
+packetLen(0x02fd, 3)
+#elif PACKETVER >= 20081008
+packetLen(0x02fd, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x02fd, 6)
+#elif PACKETVER >= 20080924
+packetLen(0x02fd, 5)
+#elif PACKETVER >= 20080820
+packetLen(0x02fd, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x02fd, 2)
+#elif PACKETVER >= 20080806
+packetLen(0x02fd, 20)
+#elif PACKETVER >= 20080715
+packetLen(0x02fd, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x02fd, 2)
+#elif PACKETVER >= 20080701
+packetLen(0x02fd, 30)
+#elif PACKETVER >= 20080624
+packetLen(0x02fd, 18)
+#elif PACKETVER >= 20080617
+packetLen(0x02fd, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x02fd, 54)
+#elif PACKETVER >= 20080528
+packetLen(0x02fd, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x02fd, 8)
+#elif PACKETVER >= 20080507
+packetLen(0x02fd, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x02fd, 2)
+#elif PACKETVER >= 20080415
+packetLen(0x02fd, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x02fd, 30)
+#elif PACKETVER >= 20080401
+packetLen(0x02fd, 29)
+#elif PACKETVER >= 20080325
+packetLen(0x02fd, 3)
+#endif
+
+// Packet: 0x02fe
+#if PACKETVER >= 20081217
+packetLen(0x02fe, 2)
+#elif PACKETVER >= 20081203
+packetLen(0x02fe, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x02fe, 4)
+#elif PACKETVER >= 20081119
+packetLen(0x02fe, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x02fe, 6)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x02fe, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x02fe, 34)
+#elif PACKETVER >= 20081008
+packetLen(0x02fe, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x02fe, 53)
+#elif PACKETVER >= 20080910
+packetLen(0x02fe, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x02fe, 2)
+#elif PACKETVER >= 20080820
+packetLen(0x02fe, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x02fe, 2)
+#elif PACKETVER >= 20080617
+packetLen(0x02fe, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x02fe, 2)
+#elif PACKETVER >= 20080528
+packetLen(0x02fe, 6)
+#elif PACKETVER >= 20080513
+packetLen(0x02fe, -1)
+#elif PACKETVER >= 20080507
+packetLen(0x02fe, 4)
+#elif PACKETVER >= 20080429
+packetLen(0x02fe, 8)
+#elif PACKETVER >= 20080422
+packetLen(0x02fe, 11)
+#elif PACKETVER >= 20080415
+packetLen(0x02fe, 28)
+#elif PACKETVER >= 20080408
+packetLen(0x02fe, -1)
+#elif PACKETVER >= 20080401
+packetLen(0x02fe, 2)
+#elif PACKETVER >= 20080325
+packetLen(0x02fe, -1)
+#endif
+
+// Packet: 0x02ff
+#if PACKETVER >= 20081112
+packetLen(0x02ff, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x02ff, 2)
+#elif PACKETVER >= 20081015
+packetLen(0x02ff, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x02ff, 16)
+#elif PACKETVER >= 20081001
+packetLen(0x02ff, 9)
+#elif PACKETVER >= 20080924
+packetLen(0x02ff, 8)
+#elif PACKETVER >= 20080917
+packetLen(0x02ff, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x02ff, 7)
+#elif PACKETVER >= 20080903
+packetLen(0x02ff, 6)
+#elif PACKETVER >= 20080827
+packetLen(0x02ff, 18)
+#elif PACKETVER >= 20080820
+packetLen(0x02ff, 10)
+#elif PACKETVER >= 20080813
+packetLen(0x02ff, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x02ff, 54)
+#elif PACKETVER >= 20080715
+packetLen(0x02ff, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x02ff, 4)
+#elif PACKETVER >= 20080624
+packetLen(0x02ff, 2)
+#elif PACKETVER >= 20080617
+packetLen(0x02ff, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x02ff, 11)
+#elif PACKETVER >= 20080603
+packetLen(0x02ff, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x02ff, 6)
+#elif PACKETVER >= 20080520
+packetLen(0x02ff, 12)
+#elif PACKETVER >= 20080507
+packetLen(0x02ff, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x02ff, 4)
+#elif PACKETVER >= 20080422
+packetLen(0x02ff, 8)
+#elif PACKETVER >= 20080415
+packetLen(0x02ff, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x02ff, 30)
+#elif PACKETVER >= 20080325
+packetLen(0x02ff, 6)
+#endif
+
+// Packet: 0x0300
+#if PACKETVER >= 20081217
+packetLen(0x0300, 10)
+#elif PACKETVER >= 20081119
+packetLen(0x0300, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x0300, 28)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x0300, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0300, 67)
+#elif PACKETVER >= 20081008
+packetLen(0x0300, 22)
+#elif PACKETVER >= 20080910
+packetLen(0x0300, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x0300, 5)
+#elif PACKETVER >= 20080820
+packetLen(0x0300, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x0300, 39)
+#elif PACKETVER >= 20080806
+packetLen(0x0300, 8)
+#elif PACKETVER >= 20080730
+packetLen(0x0300, 3)
+#elif PACKETVER >= 20080715
+packetLen(0x0300, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x0300, 2)
+#elif PACKETVER >= 20080701
+packetLen(0x0300, 4)
+#elif PACKETVER >= 20080624
+packetLen(0x0300, 13)
+#elif PACKETVER >= 20080617
+packetLen(0x0300, 16)
+#elif PACKETVER >= 20080610
+packetLen(0x0300, 3)
+#elif PACKETVER >= 20080603
+packetLen(0x0300, 26)
+#elif PACKETVER >= 20080520
+packetLen(0x0300, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x0300, 13)
+#elif PACKETVER >= 20080507
+packetLen(0x0300, 14)
+#elif PACKETVER >= 20080429
+packetLen(0x0300, 6)
+#elif PACKETVER >= 20080422
+packetLen(0x0300, 17)
+#elif PACKETVER >= 20080415
+packetLen(0x0300, 20)
+#elif PACKETVER >= 20080325
+packetLen(0x0300, -1)
+#endif
+
+// Packet: 0x0301
+#if PACKETVER >= 20081203
+packetLen(0x0301, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x0301, 30)
+#elif PACKETVER >= 20081105
+packetLen(0x0301, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x0301, 17)
+#elif PACKETVER >= 20081022
+packetLen(0x0301, 33)
+#elif PACKETVER >= 20081015
+packetLen(0x0301, 8)
+#elif PACKETVER >= 20081008
+packetLen(0x0301, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x0301, 2)
+#elif PACKETVER >= 20080917
+packetLen(0x0301, 4)
+#elif PACKETVER >= 20080910
+packetLen(0x0301, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x0301, 6)
+#elif PACKETVER >= 20080806
+packetLen(0x0301, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x0301, 6)
+#elif PACKETVER >= 20080715
+packetLen(0x0301, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x0301, 26)
+#elif PACKETVER >= 20080701
+packetLen(0x0301, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0301, 6)
+#elif PACKETVER >= 20080617
+packetLen(0x0301, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0301, 3)
+#elif PACKETVER >= 20080603
+packetLen(0x0301, 15)
+#elif PACKETVER >= 20080513
+packetLen(0x0301, -1)
+#elif PACKETVER >= 20080507
+packetLen(0x0301, 10)
+#elif PACKETVER >= 20080429
+packetLen(0x0301, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x0301, 14)
+#elif PACKETVER >= 20080415
+packetLen(0x0301, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x0301, 6)
+#elif PACKETVER >= 20080401
+packetLen(0x0301, -1)
+#endif
+
+// Packet: 0x0302
+#if PACKETVER >= 20081217
+packetLen(0x0302, 6)
+#elif PACKETVER >= 20081203
+packetLen(0x0302, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x0302, 8)
+#elif PACKETVER >= 20081112
+packetLen(0x0302, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x0302, 8)
+#elif PACKETVER >= 20081022
+packetLen(0x0302, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0302, 6)
+#elif PACKETVER >= 20080924
+packetLen(0x0302, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x0302, 11)
+#elif PACKETVER >= 20080903
+packetLen(0x0302, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x0302, 6)
+#elif PACKETVER >= 20080820
+packetLen(0x0302, 3)
+#elif PACKETVER >= 20080813
+packetLen(0x0302, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x0302, 10)
+#elif PACKETVER >= 20080722
+packetLen(0x0302, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x0302, 7)
+#elif PACKETVER >= 20080708
+packetLen(0x0302, 10)
+#elif PACKETVER >= 20080701
+packetLen(0x0302, 5)
+#elif PACKETVER >= 20080624
+packetLen(0x0302, 21)
+#elif PACKETVER >= 20080617
+packetLen(0x0302, 3)
+#elif PACKETVER >= 20080610
+packetLen(0x0302, 68)
+#elif PACKETVER >= 20080528
+packetLen(0x0302, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x0302, 58)
+#elif PACKETVER >= 20080513
+packetLen(0x0302, 6)
+#elif PACKETVER >= 20080507
+packetLen(0x0302, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0302, 2)
+#elif PACKETVER >= 20080422
+packetLen(0x0302, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0302, 3)
+#elif PACKETVER >= 20080401
+packetLen(0x0302, -1)
+#endif
+
+// Packet: 0x0303
+#if PACKETVER >= 20081203
+packetLen(0x0303, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x0303, 13)
+#elif PACKETVER >= 20081119
+packetLen(0x0303, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x0303, 11)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x0303, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x0303, 6)
+#elif PACKETVER >= 20080903
+packetLen(0x0303, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x0303, 54)
+#elif PACKETVER >= 20080820
+packetLen(0x0303, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x0303, 5)
+#elif PACKETVER >= 20080806
+packetLen(0x0303, 10)
+#elif PACKETVER >= 20080730
+packetLen(0x0303, 12)
+#elif PACKETVER >= 20080715
+packetLen(0x0303, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x0303, 6)
+#elif PACKETVER >= 20080701
+packetLen(0x0303, 3)
+#elif PACKETVER >= 20080624
+packetLen(0x0303, 58)
+#elif PACKETVER >= 20080617
+packetLen(0x0303, 30)
+#elif PACKETVER >= 20080610
+packetLen(0x0303, 22)
+#elif PACKETVER >= 20080603
+packetLen(0x0303, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x0303, 3)
+#elif PACKETVER >= 20080520
+packetLen(0x0303, 14)
+#elif PACKETVER >= 20080513
+packetLen(0x0303, 4)
+#elif PACKETVER >= 20080507
+packetLen(0x0303, 10)
+#elif PACKETVER >= 20080422
+packetLen(0x0303, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0303, 282)
+#elif PACKETVER >= 20080401
+packetLen(0x0303, -1)
+#endif
+
+// Packet: 0x0304
+#if PACKETVER >= 20081217
+packetLen(0x0304, 26)
+#elif PACKETVER >= 20081203
+packetLen(0x0304, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x0304, 2)
+#elif PACKETVER >= 20081119
+packetLen(0x0304, 6)
+#elif PACKETVER >= 20081112
+packetLen(0x0304, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x0304, 53)
+#elif PACKETVER >= 20081029
+packetLen(0x0304, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x0304, 57)
+#elif PACKETVER >= 20081008
+packetLen(0x0304, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x0304, 6)
+#elif PACKETVER >= 20080924
+packetLen(0x0304, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x0304, 30)
+#elif PACKETVER >= 20080910
+packetLen(0x0304, 8)
+#elif PACKETVER >= 20080827
+packetLen(0x0304, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0304, 30)
+#elif PACKETVER >= 20080730
+packetLen(0x0304, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x0304, 14)
+#elif PACKETVER >= 20080715
+packetLen(0x0304, 3)
+#elif PACKETVER >= 20080624
+packetLen(0x0304, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0304, 20)
+#elif PACKETVER >= 20080610
+packetLen(0x0304, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x0304, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x0304, 2)
+#elif PACKETVER >= 20080520
+packetLen(0x0304, 14)
+#elif PACKETVER >= 20080513
+packetLen(0x0304, 10)
+#elif PACKETVER >= 20080507
+packetLen(0x0304, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0304, 16)
+#elif PACKETVER >= 20080415
+packetLen(0x0304, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x0304, 6)
+#elif PACKETVER >= 20080401
+packetLen(0x0304, -1)
+#endif
+
+// Packet: 0x0305
+#if PACKETVER >= 20081217
+packetLen(0x0305, 282)
+#elif PACKETVER >= 20081203
+packetLen(0x0305, 11)
+#elif PACKETVER >= 20081126
+packetLen(0x0305, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x0305, 4)
+#elif PACKETVER >= 20081105
+packetLen(0x0305, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x0305, 24)
+#elif PACKETVER >= 20081008
+packetLen(0x0305, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x0305, 26)
+#elif PACKETVER >= 20080924
+packetLen(0x0305, 11)
+#elif PACKETVER >= 20080910
+packetLen(0x0305, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x0305, 11)
+#elif PACKETVER >= 20080820
+packetLen(0x0305, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x0305, 7)
+#elif PACKETVER >= 20080730
+packetLen(0x0305, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x0305, 2)
+#elif PACKETVER >= 20080715
+packetLen(0x0305, 6)
+#elif PACKETVER >= 20080708
+packetLen(0x0305, 22)
+#elif PACKETVER >= 20080701
+packetLen(0x0305, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0305, 2)
+#elif PACKETVER >= 20080617
+packetLen(0x0305, 4)
+#elif PACKETVER >= 20080610
+packetLen(0x0305, 15)
+#elif PACKETVER >= 20080603
+packetLen(0x0305, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x0305, 10)
+#elif PACKETVER >= 20080520
+packetLen(0x0305, 2)
+#elif PACKETVER >= 20080513
+packetLen(0x0305, 6)
+#elif PACKETVER >= 20080507
+packetLen(0x0305, 8)
+#elif PACKETVER >= 20080429
+packetLen(0x0305, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x0305, 27)
+#elif PACKETVER >= 20080401
+packetLen(0x0305, -1)
+#endif
+
+// Packet: 0x0306
+#if PACKETVER >= 20081217
+packetLen(0x0306, 33)
+#elif PACKETVER >= 20081126
+packetLen(0x0306, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x0306, 10)
+#elif PACKETVER >= 20081112
+packetLen(0x0306, 5)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0306, 10)
+#elif PACKETVER >= 20081029
+packetLen(0x0306, 39)
+#elif PACKETVER >= 20081022
+packetLen(0x0306, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0306, 11)
+#elif PACKETVER >= 20080924
+packetLen(0x0306, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x0306, 18)
+#elif PACKETVER >= 20080910
+packetLen(0x0306, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x0306, 34)
+#elif PACKETVER >= 20080827
+packetLen(0x0306, 2)
+#elif PACKETVER >= 20080820
+packetLen(0x0306, 30)
+#elif PACKETVER >= 20080813
+packetLen(0x0306, 3)
+#elif PACKETVER >= 20080806
+packetLen(0x0306, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x0306, 10)
+#elif PACKETVER >= 20080722
+packetLen(0x0306, 14)
+#elif PACKETVER >= 20080715
+packetLen(0x0306, 12)
+#elif PACKETVER >= 20080701
+packetLen(0x0306, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0306, 6)
+#elif PACKETVER >= 20080603
+packetLen(0x0306, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x0306, 23)
+#elif PACKETVER >= 20080520
+packetLen(0x0306, 3)
+#elif PACKETVER >= 20080507
+packetLen(0x0306, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0306, 10)
+#elif PACKETVER >= 20080422
+packetLen(0x0306, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0306, 10)
+#elif PACKETVER >= 20080408
+packetLen(0x0306, 5)
+#elif PACKETVER >= 20080401
+packetLen(0x0306, -1)
+#endif
+
+// Packet: 0x0307
+#if PACKETVER >= 20081203
+packetLen(0x0307, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x0307, 10)
+#elif PACKETVER >= 20081119
+packetLen(0x0307, 21)
+#elif PACKETVER >= 20081112
+packetLen(0x0307, 11)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0307, 6)
+#elif PACKETVER >= 20081029
+packetLen(0x0307, 29)
+#elif PACKETVER >= 20081022
+packetLen(0x0307, 30)
+#elif PACKETVER >= 20080917
+packetLen(0x0307, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x0307, 67)
+#elif PACKETVER >= 20080903
+packetLen(0x0307, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x0307, 186)
+#elif PACKETVER >= 20080820
+packetLen(0x0307, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x0307, 10)
+#elif PACKETVER >= 20080806
+packetLen(0x0307, 6)
+#elif PACKETVER >= 20080715
+packetLen(0x0307, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x0307, 6)
+#elif PACKETVER >= 20080624
+packetLen(0x0307, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0307, 30)
+#elif PACKETVER >= 20080610
+packetLen(0x0307, 58)
+#elif PACKETVER >= 20080603
+packetLen(0x0307, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x0307, 15)
+#elif PACKETVER >= 20080520
+packetLen(0x0307, 10)
+#elif PACKETVER >= 20080513
+packetLen(0x0307, -1)
+#elif PACKETVER >= 20080507
+packetLen(0x0307, 16)
+#elif PACKETVER >= 20080422
+packetLen(0x0307, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0307, 2)
+#elif PACKETVER >= 20080401
+packetLen(0x0307, -1)
+#endif
+
+// Packet: 0x0308
+#if PACKETVER >= 20081217
+packetLen(0x0308, 6)
+#elif PACKETVER >= 20081203
+packetLen(0x0308, 13)
+#elif PACKETVER >= 20081119
+packetLen(0x0308, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x0308, 10)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0308, 33)
+#elif PACKETVER >= 20081022
+packetLen(0x0308, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0308, 14)
+#elif PACKETVER >= 20081008
+packetLen(0x0308, 44)
+#elif PACKETVER >= 20080917
+packetLen(0x0308, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x0308, 2)
+#elif PACKETVER >= 20080820
+packetLen(0x0308, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x0308, 54)
+#elif PACKETVER >= 20080806
+packetLen(0x0308, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x0308, 67)
+#elif PACKETVER >= 20080722
+packetLen(0x0308, 54)
+#elif PACKETVER >= 20080617
+packetLen(0x0308, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0308, 182)
+#elif PACKETVER >= 20080603
+packetLen(0x0308, 15)
+#elif PACKETVER >= 20080528
+packetLen(0x0308, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x0308, 5)
+#elif PACKETVER >= 20080513
+packetLen(0x0308, 7)
+#elif PACKETVER >= 20080507
+packetLen(0x0308, 4)
+#elif PACKETVER >= 20080429
+packetLen(0x0308, 15)
+#elif PACKETVER >= 20080422
+packetLen(0x0308, 7)
+#elif PACKETVER >= 20080415
+packetLen(0x0308, 6)
+#elif PACKETVER >= 20080408
+packetLen(0x0308, 10)
+#endif
+
+// Packet: 0x0309
+#if PACKETVER >= 20081217
+packetLen(0x0309, 4)
+#elif PACKETVER >= 20081126
+packetLen(0x0309, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x0309, 7)
+#elif PACKETVER >= 20081112
+packetLen(0x0309, 3)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0309, 22)
+#elif PACKETVER >= 20081029
+packetLen(0x0309, 2)
+#elif PACKETVER >= 20081022
+packetLen(0x0309, 6)
+#elif PACKETVER >= 20081001
+packetLen(0x0309, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x0309, 8)
+#elif PACKETVER >= 20080917
+packetLen(0x0309, 26)
+#elif PACKETVER >= 20080910
+packetLen(0x0309, 182)
+#elif PACKETVER >= 20080827
+packetLen(0x0309, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0309, 26)
+#elif PACKETVER >= 20080813
+packetLen(0x0309, 6)
+#elif PACKETVER >= 20080730
+packetLen(0x0309, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x0309, 4)
+#elif PACKETVER >= 20080715
+packetLen(0x0309, 3)
+#elif PACKETVER >= 20080701
+packetLen(0x0309, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0309, 14)
+#elif PACKETVER >= 20080617
+packetLen(0x0309, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0309, 10)
+#elif PACKETVER >= 20080528
+packetLen(0x0309, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x0309, 2)
+#elif PACKETVER >= 20080513
+packetLen(0x0309, 6)
+#elif PACKETVER >= 20080507
+packetLen(0x0309, 14)
+#elif PACKETVER >= 20080429
+packetLen(0x0309, 15)
+#elif PACKETVER >= 20080422
+packetLen(0x0309, 5)
+#elif PACKETVER >= 20080415
+packetLen(0x0309, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x0309, 6)
+#endif
+
+// Packet: 0x030a
+#if PACKETVER >= 20081217
+packetLen(0x030a, 32)
+#elif PACKETVER >= 20081203
+packetLen(0x030a, 2)
+#elif PACKETVER >= 20081126
+packetLen(0x030a, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x030a, 282)
+#elif PACKETVER >= 20081112
+packetLen(0x030a, 3)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x030a, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x030a, 3)
+#elif PACKETVER >= 20081015
+packetLen(0x030a, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x030a, 11)
+#elif PACKETVER >= 20081001
+packetLen(0x030a, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x030a, 282)
+#elif PACKETVER >= 20080910
+packetLen(0x030a, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x030a, 3)
+#elif PACKETVER >= 20080813
+packetLen(0x030a, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x030a, 3)
+#elif PACKETVER >= 20080730
+packetLen(0x030a, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x030a, 4)
+#elif PACKETVER >= 20080715
+packetLen(0x030a, 8)
+#elif PACKETVER >= 20080708
+packetLen(0x030a, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x030a, 6)
+#elif PACKETVER >= 20080624
+packetLen(0x030a, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x030a, 35)
+#elif PACKETVER >= 20080610
+packetLen(0x030a, 10)
+#elif PACKETVER >= 20080528
+packetLen(0x030a, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x030a, 16)
+#elif PACKETVER >= 20080513
+packetLen(0x030a, 6)
+#elif PACKETVER >= 20080507
+packetLen(0x030a, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x030a, 9)
+#elif PACKETVER >= 20080408
+packetLen(0x030a, -1)
+#endif
+
+// Packet: 0x030b
+#if PACKETVER >= 20081203
+packetLen(0x030b, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x030b, 2)
+#elif PACKETVER >= 20081119
+packetLen(0x030b, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x030b, 6)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x030b, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x030b, 7)
+#elif PACKETVER >= 20080813
+packetLen(0x030b, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x030b, 32)
+#elif PACKETVER >= 20080730
+packetLen(0x030b, 4)
+#elif PACKETVER >= 20080722
+packetLen(0x030b, 9)
+#elif PACKETVER >= 20080715
+packetLen(0x030b, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x030b, 5)
+#elif PACKETVER >= 20080701
+packetLen(0x030b, 6)
+#elif PACKETVER >= 20080624
+packetLen(0x030b, 7)
+#elif PACKETVER >= 20080610
+packetLen(0x030b, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x030b, 10)
+#elif PACKETVER >= 20080528
+packetLen(0x030b, 6)
+#elif PACKETVER >= 20080520
+packetLen(0x030b, 65)
+#elif PACKETVER >= 20080513
+packetLen(0x030b, 16)
+#elif PACKETVER >= 20080507
+packetLen(0x030b, 15)
+#elif PACKETVER >= 20080429
+packetLen(0x030b, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x030b, 17)
+#elif PACKETVER >= 20080408
+packetLen(0x030b, 10)
+#endif
+
+// Packet: 0x030c
+#if PACKETVER >= 20081217
+packetLen(0x030c, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x030c, 66)
+#elif PACKETVER >= 20081112
+packetLen(0x030c, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x030c, 3)
+#elif PACKETVER >= 20081029
+packetLen(0x030c, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x030c, 21)
+#elif PACKETVER >= 20081008
+packetLen(0x030c, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x030c, 29)
+#elif PACKETVER >= 20080924
+packetLen(0x030c, 4)
+#elif PACKETVER >= 20080917
+packetLen(0x030c, 27)
+#elif PACKETVER >= 20080910
+packetLen(0x030c, 8)
+#elif PACKETVER >= 20080903
+packetLen(0x030c, 3)
+#elif PACKETVER >= 20080827
+packetLen(0x030c, 10)
+#elif PACKETVER >= 20080701
+packetLen(0x030c, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x030c, 2)
+#elif PACKETVER >= 20080617
+packetLen(0x030c, 6)
+#elif PACKETVER >= 20080610
+packetLen(0x030c, 282)
+#elif PACKETVER >= 20080603
+packetLen(0x030c, 36)
+#elif PACKETVER >= 20080520
+packetLen(0x030c, 2)
+#elif PACKETVER >= 20080513
+packetLen(0x030c, 12)
+#elif PACKETVER >= 20080422
+packetLen(0x030c, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x030c, 10)
+#elif PACKETVER >= 20080408
+packetLen(0x030c, 66)
+#endif
+
+// Packet: 0x030d
+#if PACKETVER >= 20081217
+packetLen(0x030d, 2)
+#elif PACKETVER >= 20081203
+packetLen(0x030d, 6)
+#elif PACKETVER >= 20081119
+packetLen(0x030d, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x030d, 3)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x030d, 10)
+#elif PACKETVER >= 20081029
+packetLen(0x030d, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x030d, 54)
+#elif PACKETVER >= 20081015
+packetLen(0x030d, 4)
+#elif PACKETVER >= 20081008
+packetLen(0x030d, 3)
+#elif PACKETVER >= 20081001
+packetLen(0x030d, 97)
+#elif PACKETVER >= 20080924
+packetLen(0x030d, 28)
+#elif PACKETVER >= 20080903
+packetLen(0x030d, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x030d, 2)
+#elif PACKETVER >= 20080820
+packetLen(0x030d, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x030d, 31)
+#elif PACKETVER >= 20080806
+packetLen(0x030d, 14)
+#elif PACKETVER >= 20080730
+packetLen(0x030d, 8)
+#elif PACKETVER >= 20080722
+packetLen(0x030d, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x030d, 32)
+#elif PACKETVER >= 20080708
+packetLen(0x030d, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x030d, 16)
+#elif PACKETVER >= 20080624
+packetLen(0x030d, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x030d, 282)
+#elif PACKETVER >= 20080610
+packetLen(0x030d, 10)
+#elif PACKETVER >= 20080603
+packetLen(0x030d, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x030d, 71)
+#elif PACKETVER >= 20080520
+packetLen(0x030d, 4)
+#elif PACKETVER >= 20080513
+packetLen(0x030d, 6)
+#elif PACKETVER >= 20080422
+packetLen(0x030d, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x030d, 19)
+#elif PACKETVER >= 20080408
+packetLen(0x030d, 10)
+#endif
+
+// Packet: 0x030e
+#if PACKETVER >= 20081217
+packetLen(0x030e, 5)
+#elif PACKETVER >= 20081022
+packetLen(0x030e, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x030e, 10)
+#elif PACKETVER >= 20081008
+packetLen(0x030e, 4)
+#elif PACKETVER >= 20081001
+packetLen(0x030e, 6)
+#elif PACKETVER >= 20080924
+packetLen(0x030e, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x030e, 58)
+#elif PACKETVER >= 20080910
+packetLen(0x030e, 6)
+#elif PACKETVER >= 20080820
+packetLen(0x030e, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x030e, 21)
+#elif PACKETVER >= 20080730
+packetLen(0x030e, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x030e, 6)
+#elif PACKETVER >= 20080715
+packetLen(0x030e, 27)
+#elif PACKETVER >= 20080701
+packetLen(0x030e, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x030e, 13)
+#elif PACKETVER >= 20080617
+packetLen(0x030e, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x030e, 2)
+#elif PACKETVER >= 20080603
+packetLen(0x030e, 21)
+#elif PACKETVER >= 20080528
+packetLen(0x030e, 10)
+#elif PACKETVER >= 20080520
+packetLen(0x030e, 2)
+#elif PACKETVER >= 20080513
+packetLen(0x030e, 10)
+#elif PACKETVER >= 20080507
+packetLen(0x030e, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x030e, 6)
+#elif PACKETVER >= 20080415
+packetLen(0x030e, 2)
+#elif PACKETVER >= 20080408
+packetLen(0x030e, 3)
+#endif
+
+// Packet: 0x030f
+#if PACKETVER >= 20081217
+packetLen(0x030f, 53)
+#elif PACKETVER >= 20081203
+packetLen(0x030f, 28)
+#elif PACKETVER >= 20081029
+packetLen(0x030f, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x030f, 11)
+#elif PACKETVER >= 20080924
+packetLen(0x030f, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x030f, 54)
+#elif PACKETVER >= 20080910
+packetLen(0x030f, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x030f, 10)
+#elif PACKETVER >= 20080827
+packetLen(0x030f, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x030f, 6)
+#elif PACKETVER >= 20080806
+packetLen(0x030f, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x030f, 4)
+#elif PACKETVER >= 20080722
+packetLen(0x030f, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x030f, 10)
+#elif PACKETVER >= 20080701
+packetLen(0x030f, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x030f, 17)
+#elif PACKETVER >= 20080617
+packetLen(0x030f, 10)
+#elif PACKETVER >= 20080603
+packetLen(0x030f, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x030f, 2)
+#elif PACKETVER >= 20080520
+packetLen(0x030f, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x030f, 67)
+#elif PACKETVER >= 20080507
+packetLen(0x030f, 2)
+#elif PACKETVER >= 20080429
+packetLen(0x030f, 6)
+#elif PACKETVER >= 20080422
+packetLen(0x030f, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x030f, 14)
+#elif PACKETVER >= 20080408
+packetLen(0x030f, -1)
+#endif
+
+// Packet: 0x0310
+#if PACKETVER >= 20081217
+packetLen(0x0310, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x0310, 3)
+#elif PACKETVER >= 20081126
+packetLen(0x0310, 6)
+#elif PACKETVER >= 20081029
+packetLen(0x0310, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x0310, 4)
+#elif PACKETVER >= 20081015
+packetLen(0x0310, 3)
+#elif PACKETVER >= 20081008
+packetLen(0x0310, 6)
+#elif PACKETVER >= 20081001
+packetLen(0x0310, 17)
+#elif PACKETVER >= 20080924
+packetLen(0x0310, 2)
+#elif PACKETVER >= 20080917
+packetLen(0x0310, 7)
+#elif PACKETVER >= 20080910
+packetLen(0x0310, 27)
+#elif PACKETVER >= 20080820
+packetLen(0x0310, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x0310, 8)
+#elif PACKETVER >= 20080806
+packetLen(0x0310, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x0310, 7)
+#elif PACKETVER >= 20080722
+packetLen(0x0310, 2)
+#elif PACKETVER >= 20080715
+packetLen(0x0310, 13)
+#elif PACKETVER >= 20080708
+packetLen(0x0310, 10)
+#elif PACKETVER >= 20080701
+packetLen(0x0310, 27)
+#elif PACKETVER >= 20080624
+packetLen(0x0310, 10)
+#elif PACKETVER >= 20080617
+packetLen(0x0310, 16)
+#elif PACKETVER >= 20080610
+packetLen(0x0310, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x0310, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x0310, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x0310, 182)
+#elif PACKETVER >= 20080507
+packetLen(0x0310, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0310, 2)
+#elif PACKETVER >= 20080422
+packetLen(0x0310, 57)
+#elif PACKETVER >= 20080415
+packetLen(0x0310, 59)
+#elif PACKETVER >= 20080408
+packetLen(0x0310, -1)
+#endif
+
+// Packet: 0x0311
+#if PACKETVER >= 20081217
+packetLen(0x0311, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x0311, 15)
+#elif PACKETVER >= 20081126
+packetLen(0x0311, 10)
+#elif PACKETVER >= 20081119
+packetLen(0x0311, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x0311, 30)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0311, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x0311, 10)
+#elif PACKETVER >= 20081022
+packetLen(0x0311, 6)
+#elif PACKETVER >= 20080924
+packetLen(0x0311, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x0311, 2)
+#elif PACKETVER >= 20080910
+packetLen(0x0311, 5)
+#elif PACKETVER >= 20080903
+packetLen(0x0311, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x0311, 71)
+#elif PACKETVER >= 20080820
+packetLen(0x0311, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x0311, 5)
+#elif PACKETVER >= 20080806
+packetLen(0x0311, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x0311, 8)
+#elif PACKETVER >= 20080722
+packetLen(0x0311, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x0311, 2)
+#elif PACKETVER >= 20080708
+packetLen(0x0311, 30)
+#elif PACKETVER >= 20080701
+packetLen(0x0311, 2)
+#elif PACKETVER >= 20080624
+packetLen(0x0311, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0311, 6)
+#elif PACKETVER >= 20080610
+packetLen(0x0311, 30)
+#elif PACKETVER >= 20080603
+packetLen(0x0311, 7)
+#elif PACKETVER >= 20080528
+packetLen(0x0311, 6)
+#elif PACKETVER >= 20080507
+packetLen(0x0311, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0311, 4)
+#elif PACKETVER >= 20080415
+packetLen(0x0311, 7)
+#elif PACKETVER >= 20080408
+packetLen(0x0311, 10)
+#endif
+
+// Packet: 0x0312
+#if PACKETVER >= 20081022
+packetLen(0x0312, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0312, 10)
+#elif PACKETVER >= 20080917
+packetLen(0x0312, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x0312, 8)
+#elif PACKETVER >= 20080827
+packetLen(0x0312, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0312, 33)
+#elif PACKETVER >= 20080617
+packetLen(0x0312, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0312, 34)
+#elif PACKETVER >= 20080603
+packetLen(0x0312, 3)
+#elif PACKETVER >= 20080520
+packetLen(0x0312, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x0312, 13)
+#elif PACKETVER >= 20080507
+packetLen(0x0312, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0312, 81)
+#elif PACKETVER >= 20080422
+packetLen(0x0312, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0312, 67)
+#elif PACKETVER >= 20080408
+packetLen(0x0312, 6)
+#endif
+
+// Packet: 0x0313
+#if PACKETVER >= 20081126
+packetLen(0x0313, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x0313, 282)
+#elif PACKETVER >= 20081112
+packetLen(0x0313, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x0313, 4)
+#elif PACKETVER >= 20081022
+packetLen(0x0313, 7)
+#elif PACKETVER >= 20081015
+packetLen(0x0313, 3)
+#elif PACKETVER >= 20081008
+packetLen(0x0313, 7)
+#elif PACKETVER >= 20080917
+packetLen(0x0313, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x0313, 9)
+#elif PACKETVER >= 20080903
+packetLen(0x0313, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x0313, 5)
+#elif PACKETVER >= 20080813
+packetLen(0x0313, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x0313, 8)
+#elif PACKETVER >= 20080722
+packetLen(0x0313, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x0313, 3)
+#elif PACKETVER >= 20080708
+packetLen(0x0313, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x0313, 3)
+#elif PACKETVER >= 20080624
+packetLen(0x0313, 2)
+#elif PACKETVER >= 20080610
+packetLen(0x0313, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x0313, 3)
+#elif PACKETVER >= 20080528
+packetLen(0x0313, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x0313, 6)
+#elif PACKETVER >= 20080507
+packetLen(0x0313, 26)
+#elif PACKETVER >= 20080429
+packetLen(0x0313, 282)
+#elif PACKETVER >= 20080422
+packetLen(0x0313, 10)
+#elif PACKETVER >= 20080415
+packetLen(0x0313, 26)
+#elif PACKETVER >= 20080408
+packetLen(0x0313, 2)
+#endif
+
+// Packet: 0x0314
+#if PACKETVER >= 20081217
+packetLen(0x0314, 6)
+#elif PACKETVER >= 20081203
+packetLen(0x0314, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x0314, 26)
+#elif PACKETVER >= 20081119
+packetLen(0x0314, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x0314, 4)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x0314, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0314, 2)
+#elif PACKETVER >= 20081008
+packetLen(0x0314, 32)
+#elif PACKETVER >= 20081001
+packetLen(0x0314, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x0314, 7)
+#elif PACKETVER >= 20080917
+packetLen(0x0314, 42)
+#elif PACKETVER >= 20080903
+packetLen(0x0314, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x0314, 13)
+#elif PACKETVER >= 20080820
+packetLen(0x0314, 14)
+#elif PACKETVER >= 20080806
+packetLen(0x0314, 6)
+#elif PACKETVER >= 20080730
+packetLen(0x0314, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x0314, 4)
+#elif PACKETVER >= 20080624
+packetLen(0x0314, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0314, 3)
+#elif PACKETVER >= 20080603
+packetLen(0x0314, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x0314, 4)
+#elif PACKETVER >= 20080520
+packetLen(0x0314, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x0314, 6)
+#elif PACKETVER >= 20080507
+packetLen(0x0314, 2)
+#elif PACKETVER >= 20080429
+packetLen(0x0314, 4)
+#elif PACKETVER >= 20080422
+packetLen(0x0314, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0314, 29)
+#elif PACKETVER >= 20080408
+packetLen(0x0314, 12)
+#endif
+
+// Packet: 0x0315
+#if PACKETVER >= 20081217
+packetLen(0x0315, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x0315, 30)
+#elif PACKETVER >= 20081119
+packetLen(0x0315, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x0315, 10)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0315, 18)
+#elif PACKETVER >= 20081029
+packetLen(0x0315, 12)
+#elif PACKETVER >= 20081022
+packetLen(0x0315, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0315, 54)
+#elif PACKETVER >= 20081008
+packetLen(0x0315, 7)
+#elif PACKETVER >= 20081001
+packetLen(0x0315, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x0315, 6)
+#elif PACKETVER >= 20080917
+packetLen(0x0315, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x0315, 6)
+#elif PACKETVER >= 20080827
+packetLen(0x0315, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0315, 11)
+#elif PACKETVER >= 20080813
+packetLen(0x0315, 7)
+#elif PACKETVER >= 20080806
+packetLen(0x0315, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x0315, 8)
+#elif PACKETVER >= 20080722
+packetLen(0x0315, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x0315, 4)
+#elif PACKETVER >= 20080708
+packetLen(0x0315, 6)
+#elif PACKETVER >= 20080701
+packetLen(0x0315, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0315, 14)
+#elif PACKETVER >= 20080617
+packetLen(0x0315, 8)
+#elif PACKETVER >= 20080610
+packetLen(0x0315, 10)
+#elif PACKETVER >= 20080528
+packetLen(0x0315, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x0315, 67)
+#elif PACKETVER >= 20080513
+packetLen(0x0315, 60)
+#elif PACKETVER >= 20080429
+packetLen(0x0315, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x0315, 10)
+#elif PACKETVER >= 20080415
+packetLen(0x0315, 14)
+#elif PACKETVER >= 20080408
+packetLen(0x0315, 44)
+#endif
+
+// Packet: 0x0316
+#if PACKETVER >= 20081217
+packetLen(0x0316, 4)
+#elif PACKETVER >= 20081203
+packetLen(0x0316, 31)
+#elif PACKETVER >= 20081126
+packetLen(0x0316, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x0316, 6)
+#elif PACKETVER >= 20081112
+packetLen(0x0316, 8)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0316, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x0316, 4)
+#elif PACKETVER >= 20081022
+packetLen(0x0316, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0316, 4)
+#elif PACKETVER >= 20080910
+packetLen(0x0316, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x0316, 9)
+#elif PACKETVER >= 20080827
+packetLen(0x0316, 282)
+#elif PACKETVER >= 20080820
+packetLen(0x0316, 3)
+#elif PACKETVER >= 20080708
+packetLen(0x0316, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x0316, 8)
+#elif PACKETVER >= 20080624
+packetLen(0x0316, 97)
+#elif PACKETVER >= 20080617
+packetLen(0x0316, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0316, 8)
+#elif PACKETVER >= 20080603
+packetLen(0x0316, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x0316, 30)
+#elif PACKETVER >= 20080520
+packetLen(0x0316, 11)
+#elif PACKETVER >= 20080513
+packetLen(0x0316, 23)
+#elif PACKETVER >= 20080507
+packetLen(0x0316, 14)
+#elif PACKETVER >= 20080429
+packetLen(0x0316, 9)
+#elif PACKETVER >= 20080422
+packetLen(0x0316, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0316, 6)
+#elif PACKETVER >= 20080408
+packetLen(0x0316, 16)
+#endif
+
+// Packet: 0x0317
+#if PACKETVER >= 20081022
+packetLen(0x0317, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0317, 30)
+#elif PACKETVER >= 20081008
+packetLen(0x0317, 11)
+#elif PACKETVER >= 20081001
+packetLen(0x0317, 9)
+#elif PACKETVER >= 20080924
+packetLen(0x0317, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x0317, 5)
+#elif PACKETVER >= 20080910
+packetLen(0x0317, 18)
+#elif PACKETVER >= 20080903
+packetLen(0x0317, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0317, 8)
+#elif PACKETVER >= 20080813
+packetLen(0x0317, 6)
+#elif PACKETVER >= 20080806
+packetLen(0x0317, 3)
+#elif PACKETVER >= 20080730
+packetLen(0x0317, 2)
+#elif PACKETVER >= 20080722
+packetLen(0x0317, 79)
+#elif PACKETVER >= 20080715
+packetLen(0x0317, 60)
+#elif PACKETVER >= 20080701
+packetLen(0x0317, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0317, 4)
+#elif PACKETVER >= 20080610
+packetLen(0x0317, 6)
+#elif PACKETVER >= 20080603
+packetLen(0x0317, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x0317, 21)
+#elif PACKETVER >= 20080520
+packetLen(0x0317, 6)
+#elif PACKETVER >= 20080513
+packetLen(0x0317, 7)
+#elif PACKETVER >= 20080507
+packetLen(0x0317, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0317, 6)
+#elif PACKETVER >= 20080415
+packetLen(0x0317, 14)
+#elif PACKETVER >= 20080408
+packetLen(0x0317, -1)
+#endif
+
+// Packet: 0x0318
+#if PACKETVER >= 20081217
+packetLen(0x0318, 59)
+#elif PACKETVER >= 20081126
+packetLen(0x0318, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x0318, 2)
+#elif PACKETVER >= 20081112
+packetLen(0x0318, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x0318, 282)
+#elif PACKETVER >= 20081015
+packetLen(0x0318, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x0318, 11)
+#elif PACKETVER >= 20080924
+packetLen(0x0318, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x0318, 22)
+#elif PACKETVER >= 20080903
+packetLen(0x0318, 42)
+#elif PACKETVER >= 20080827
+packetLen(0x0318, 8)
+#elif PACKETVER >= 20080806
+packetLen(0x0318, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x0318, 3)
+#elif PACKETVER >= 20080722
+packetLen(0x0318, 6)
+#elif PACKETVER >= 20080708
+packetLen(0x0318, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x0318, 6)
+#elif PACKETVER >= 20080610
+packetLen(0x0318, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x0318, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x0318, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x0318, 6)
+#elif PACKETVER >= 20080507
+packetLen(0x0318, 2)
+#elif PACKETVER >= 20080429
+packetLen(0x0318, 6)
+#elif PACKETVER >= 20080422
+packetLen(0x0318, 54)
+#elif PACKETVER >= 20080415
+packetLen(0x0318, 4)
+#elif PACKETVER >= 20080408
+packetLen(0x0318, 26)
+#endif
+
+// Packet: 0x0319
+#if PACKETVER >= 20081112
+packetLen(0x0319, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x0319, 12)
+#elif PACKETVER >= 20081022
+packetLen(0x0319, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0319, 2)
+#elif PACKETVER >= 20081008
+packetLen(0x0319, 29)
+#elif PACKETVER >= 20081001
+packetLen(0x0319, 3)
+#elif PACKETVER >= 20080910
+packetLen(0x0319, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x0319, 30)
+#elif PACKETVER >= 20080827
+packetLen(0x0319, 4)
+#elif PACKETVER >= 20080820
+packetLen(0x0319, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x0319, 2)
+#elif PACKETVER >= 20080722
+packetLen(0x0319, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x0319, 12)
+#elif PACKETVER >= 20080610
+packetLen(0x0319, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x0319, 19)
+#elif PACKETVER >= 20080528
+packetLen(0x0319, 6)
+#elif PACKETVER >= 20080507
+packetLen(0x0319, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0319, 22)
+#elif PACKETVER >= 20080422
+packetLen(0x0319, 6)
+#elif PACKETVER >= 20080415
+packetLen(0x0319, 2)
+#elif PACKETVER >= 20080408
+packetLen(0x0319, 17)
+#endif
+
+// Packet: 0x031a
+#if PACKETVER >= 20081217
+packetLen(0x031a, 8)
+#elif PACKETVER >= 20081203
+packetLen(0x031a, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x031a, 6)
+#elif PACKETVER >= 20081119
+packetLen(0x031a, 5)
+#elif PACKETVER >= 20081112
+packetLen(0x031a, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x031a, 26)
+#elif PACKETVER >= 20081001
+packetLen(0x031a, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x031a, 30)
+#elif PACKETVER >= 20080903
+packetLen(0x031a, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x031a, 26)
+#elif PACKETVER >= 20080820
+packetLen(0x031a, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x031a, 8)
+#elif PACKETVER >= 20080730
+packetLen(0x031a, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x031a, 12)
+#elif PACKETVER >= 20080701
+packetLen(0x031a, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x031a, 4)
+#elif PACKETVER >= 20080617
+packetLen(0x031a, 5)
+#elif PACKETVER >= 20080610
+packetLen(0x031a, 6)
+#elif PACKETVER >= 20080603
+packetLen(0x031a, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x031a, 6)
+#elif PACKETVER >= 20080520
+packetLen(0x031a, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x031a, 86)
+#elif PACKETVER >= 20080507
+packetLen(0x031a, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x031a, 4)
+#elif PACKETVER >= 20080422
+packetLen(0x031a, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x031a, 7)
+#elif PACKETVER >= 20080408
+packetLen(0x031a, 4)
+#endif
+
+// Packet: 0x031b
+#if PACKETVER >= 20081217
+packetLen(0x031b, 282)
+#elif PACKETVER >= 20081203
+packetLen(0x031b, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x031b, 30)
+#elif PACKETVER >= 20081119
+packetLen(0x031b, 18)
+#elif PACKETVER >= 20081105
+packetLen(0x031b, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x031b, 4)
+#elif PACKETVER >= 20081022
+packetLen(0x031b, 6)
+#elif PACKETVER >= 20081015
+packetLen(0x031b, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x031b, 18)
+#elif PACKETVER >= 20081001
+packetLen(0x031b, 2)
+#elif PACKETVER >= 20080924
+packetLen(0x031b, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x031b, 20)
+#elif PACKETVER >= 20080910
+packetLen(0x031b, 6)
+#elif PACKETVER >= 20080903
+packetLen(0x031b, 2)
+#elif PACKETVER >= 20080820
+packetLen(0x031b, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x031b, 2)
+#elif PACKETVER >= 20080806
+packetLen(0x031b, 30)
+#elif PACKETVER >= 20080730
+packetLen(0x031b, 11)
+#elif PACKETVER >= 20080722
+packetLen(0x031b, 60)
+#elif PACKETVER >= 20080715
+packetLen(0x031b, 114)
+#elif PACKETVER >= 20080610
+packetLen(0x031b, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x031b, 2)
+#elif PACKETVER >= 20080528
+packetLen(0x031b, 10)
+#elif PACKETVER >= 20080520
+packetLen(0x031b, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x031b, 2)
+#elif PACKETVER >= 20080507
+packetLen(0x031b, 42)
+#elif PACKETVER >= 20080429
+packetLen(0x031b, 6)
+#elif PACKETVER >= 20080422
+packetLen(0x031b, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x031b, 6)
+#elif PACKETVER >= 20080408
+packetLen(0x031b, 10)
+#endif
+
+// Packet: 0x031c
+#if PACKETVER >= 20081126
+packetLen(0x031c, 6)
+#elif PACKETVER >= 20081105
+packetLen(0x031c, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x031c, 2)
+#elif PACKETVER >= 20081008
+packetLen(0x031c, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x031c, 2)
+#elif PACKETVER >= 20080917
+packetLen(0x031c, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x031c, 30)
+#elif PACKETVER >= 20080820
+packetLen(0x031c, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x031c, 7)
+#elif PACKETVER >= 20080806
+packetLen(0x031c, 4)
+#elif PACKETVER >= 20080730
+packetLen(0x031c, 14)
+#elif PACKETVER >= 20080722
+packetLen(0x031c, 2)
+#elif PACKETVER >= 20080715
+packetLen(0x031c, 39)
+#elif PACKETVER >= 20080708
+packetLen(0x031c, 10)
+#elif PACKETVER >= 20080701
+packetLen(0x031c, 6)
+#elif PACKETVER >= 20080624
+packetLen(0x031c, 7)
+#elif PACKETVER >= 20080617
+packetLen(0x031c, 54)
+#elif PACKETVER >= 20080610
+packetLen(0x031c, 6)
+#elif PACKETVER >= 20080603
+packetLen(0x031c, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x031c, 44)
+#elif PACKETVER >= 20080513
+packetLen(0x031c, -1)
+#elif PACKETVER >= 20080507
+packetLen(0x031c, 17)
+#elif PACKETVER >= 20080429
+packetLen(0x031c, 4)
+#elif PACKETVER >= 20080422
+packetLen(0x031c, 9)
+#elif PACKETVER >= 20080415
+packetLen(0x031c, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x031c, 23)
+#endif
+
+// Packet: 0x031d
+#if PACKETVER >= 20081217
+packetLen(0x031d, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x031d, 60)
+#elif PACKETVER >= 20081126
+packetLen(0x031d, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x031d, 22)
+#elif PACKETVER >= 20081105
+packetLen(0x031d, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x031d, 2)
+#elif PACKETVER >= 20081022
+packetLen(0x031d, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x031d, 30)
+#elif PACKETVER >= 20081008
+packetLen(0x031d, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x031d, 3)
+#elif PACKETVER >= 20080924
+packetLen(0x031d, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x031d, 3)
+#elif PACKETVER >= 20080903
+packetLen(0x031d, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x031d, 3)
+#elif PACKETVER >= 20080820
+packetLen(0x031d, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x031d, 8)
+#elif PACKETVER >= 20080806
+packetLen(0x031d, 2)
+#elif PACKETVER >= 20080730
+packetLen(0x031d, 4)
+#elif PACKETVER >= 20080722
+packetLen(0x031d, 31)
+#elif PACKETVER >= 20080715
+packetLen(0x031d, 282)
+#elif PACKETVER >= 20080708
+packetLen(0x031d, 8)
+#elif PACKETVER >= 20080701
+packetLen(0x031d, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x031d, 28)
+#elif PACKETVER >= 20080507
+packetLen(0x031d, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x031d, 35)
+#elif PACKETVER >= 20080422
+packetLen(0x031d, 12)
+#elif PACKETVER >= 20080415
+packetLen(0x031d, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x031d, 2)
+#endif
+
+// Packet: 0x031e
+#if PACKETVER >= 20081217
+packetLen(0x031e, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x031e, 10)
+#elif PACKETVER >= 20081126
+packetLen(0x031e, 26)
+#elif PACKETVER >= 20081119
+packetLen(0x031e, 12)
+#elif PACKETVER >= 20081029
+packetLen(0x031e, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x031e, 2)
+#elif PACKETVER >= 20081008
+packetLen(0x031e, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x031e, 15)
+#elif PACKETVER >= 20080924
+packetLen(0x031e, 2)
+#elif PACKETVER >= 20080917
+packetLen(0x031e, 5)
+#elif PACKETVER >= 20080813
+packetLen(0x031e, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x031e, 6)
+#elif PACKETVER >= 20080730
+packetLen(0x031e, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x031e, 13)
+#elif PACKETVER >= 20080715
+packetLen(0x031e, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x031e, 5)
+#elif PACKETVER >= 20080701
+packetLen(0x031e, 4)
+#elif PACKETVER >= 20080610
+packetLen(0x031e, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x031e, 26)
+#elif PACKETVER >= 20080507
+packetLen(0x031e, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x031e, 7)
+#elif PACKETVER >= 20080422
+packetLen(0x031e, 11)
+#elif PACKETVER >= 20080415
+packetLen(0x031e, 30)
+#elif PACKETVER >= 20080408
+packetLen(0x031e, -1)
+#endif
+
+// Packet: 0x031f
+#if PACKETVER >= 20081203
+packetLen(0x031f, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x031f, 11)
+#elif PACKETVER >= 20081119
+packetLen(0x031f, 3)
+#elif PACKETVER >= 20081112
+packetLen(0x031f, 11)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x031f, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x031f, 28)
+#elif PACKETVER >= 20081001
+packetLen(0x031f, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x031f, 8)
+#elif PACKETVER >= 20080820
+packetLen(0x031f, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x031f, 30)
+#elif PACKETVER >= 20080806
+packetLen(0x031f, 10)
+#elif PACKETVER >= 20080722
+packetLen(0x031f, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x031f, 6)
+#elif PACKETVER >= 20080708
+packetLen(0x031f, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x031f, 4)
+#elif PACKETVER >= 20080624
+packetLen(0x031f, 32)
+#elif PACKETVER >= 20080617
+packetLen(0x031f, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x031f, 54)
+#elif PACKETVER >= 20080603
+packetLen(0x031f, 26)
+#elif PACKETVER >= 20080528
+packetLen(0x031f, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x031f, 2)
+#elif PACKETVER >= 20080513
+packetLen(0x031f, 4)
+#elif PACKETVER >= 20080507
+packetLen(0x031f, 8)
+#elif PACKETVER >= 20080429
+packetLen(0x031f, 282)
+#elif PACKETVER >= 20080415
+packetLen(0x031f, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x031f, 30)
+#endif
+
+// Packet: 0x0320
+#if PACKETVER >= 20081217
+packetLen(0x0320, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x0320, 21)
+#elif PACKETVER >= 20081126
+packetLen(0x0320, 4)
+#elif PACKETVER >= 20081112
+packetLen(0x0320, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x0320, 35)
+#elif PACKETVER >= 20081029
+packetLen(0x0320, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x0320, 14)
+#elif PACKETVER >= 20080813
+packetLen(0x0320, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x0320, 6)
+#elif PACKETVER >= 20080730
+packetLen(0x0320, 7)
+#elif PACKETVER >= 20080722
+packetLen(0x0320, 28)
+#elif PACKETVER >= 20080708
+packetLen(0x0320, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x0320, 3)
+#elif PACKETVER >= 20080617
+packetLen(0x0320, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0320, 14)
+#elif PACKETVER >= 20080603
+packetLen(0x0320, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x0320, 22)
+#elif PACKETVER >= 20080429
+packetLen(0x0320, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x0320, 15)
+#elif PACKETVER >= 20080415
+packetLen(0x0320, 10)
+#elif PACKETVER >= 20080408
+packetLen(0x0320, 15)
+#endif
+
+// Packet: 0x0321
+#if PACKETVER >= 20081217
+packetLen(0x0321, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x0321, 53)
+#elif PACKETVER >= 20081126
+packetLen(0x0321, 37)
+#elif PACKETVER >= 20081119
+packetLen(0x0321, 68)
+#elif PACKETVER >= 20081029
+packetLen(0x0321, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x0321, 3)
+#elif PACKETVER >= 20081015
+packetLen(0x0321, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x0321, 3)
+#elif PACKETVER >= 20080924
+packetLen(0x0321, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x0321, 29)
+#elif PACKETVER >= 20080910
+packetLen(0x0321, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x0321, 6)
+#elif PACKETVER >= 20080827
+packetLen(0x0321, 29)
+#elif PACKETVER >= 20080820
+packetLen(0x0321, 6)
+#elif PACKETVER >= 20080730
+packetLen(0x0321, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x0321, 3)
+#elif PACKETVER >= 20080715
+packetLen(0x0321, 6)
+#elif PACKETVER >= 20080708
+packetLen(0x0321, 7)
+#elif PACKETVER >= 20080701
+packetLen(0x0321, 10)
+#elif PACKETVER >= 20080610
+packetLen(0x0321, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x0321, 23)
+#elif PACKETVER >= 20080507
+packetLen(0x0321, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0321, 30)
+#elif PACKETVER >= 20080422
+packetLen(0x0321, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0321, 24)
+#elif PACKETVER >= 20080408
+packetLen(0x0321, -1)
+#endif
+
+// Packet: 0x0322
+#if PACKETVER >= 20081217
+packetLen(0x0322, 27)
+#elif PACKETVER >= 20081126
+packetLen(0x0322, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x0322, 3)
+#elif PACKETVER >= 20081105
+packetLen(0x0322, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x0322, 2)
+#elif PACKETVER >= 20081022
+packetLen(0x0322, 31)
+#elif PACKETVER >= 20081015
+packetLen(0x0322, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x0322, 7)
+#elif PACKETVER >= 20081001
+packetLen(0x0322, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x0322, 6)
+#elif PACKETVER >= 20080917
+packetLen(0x0322, 10)
+#elif PACKETVER >= 20080827
+packetLen(0x0322, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0322, 5)
+#elif PACKETVER >= 20080806
+packetLen(0x0322, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x0322, 5)
+#elif PACKETVER >= 20080722
+packetLen(0x0322, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x0322, 8)
+#elif PACKETVER >= 20080708
+packetLen(0x0322, 6)
+#elif PACKETVER >= 20080701
+packetLen(0x0322, 26)
+#elif PACKETVER >= 20080624
+packetLen(0x0322, 5)
+#elif PACKETVER >= 20080617
+packetLen(0x0322, 4)
+#elif PACKETVER >= 20080610
+packetLen(0x0322, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x0322, 282)
+#elif PACKETVER >= 20080528
+packetLen(0x0322, 2)
+#elif PACKETVER >= 20080520
+packetLen(0x0322, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x0322, 14)
+#elif PACKETVER >= 20080507
+packetLen(0x0322, 5)
+#elif PACKETVER >= 20080429
+packetLen(0x0322, 12)
+#elif PACKETVER >= 20080422
+packetLen(0x0322, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0322, 10)
+#elif PACKETVER >= 20080408
+packetLen(0x0322, 68)
+#endif
+
+// Packet: 0x0323
+#if PACKETVER >= 20081217
+packetLen(0x0323, 7)
+#elif PACKETVER >= 20081203
+packetLen(0x0323, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x0323, 30)
+#elif PACKETVER >= 20081119
+packetLen(0x0323, 3)
+#elif PACKETVER >= 20081112
+packetLen(0x0323, 54)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x0323, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0323, 3)
+#elif PACKETVER >= 20080827
+packetLen(0x0323, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0323, 30)
+#elif PACKETVER >= 20080813
+packetLen(0x0323, 10)
+#elif PACKETVER >= 20080806
+packetLen(0x0323, 182)
+#elif PACKETVER >= 20080730
+packetLen(0x0323, 68)
+#elif PACKETVER >= 20080701
+packetLen(0x0323, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0323, 4)
+#elif PACKETVER >= 20080610
+packetLen(0x0323, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x0323, 67)
+#elif PACKETVER >= 20080528
+packetLen(0x0323, 14)
+#elif PACKETVER >= 20080520
+packetLen(0x0323, 4)
+#elif PACKETVER >= 20080513
+packetLen(0x0323, 14)
+#elif PACKETVER >= 20080507
+packetLen(0x0323, 186)
+#elif PACKETVER >= 20080429
+packetLen(0x0323, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x0323, 6)
+#elif PACKETVER >= 20080415
+packetLen(0x0323, 34)
+#elif PACKETVER >= 20080408
+packetLen(0x0323, 7)
+#endif
+
+// Packet: 0x0324
+#if PACKETVER >= 20081217
+packetLen(0x0324, 10)
+#elif PACKETVER >= 20081203
+packetLen(0x0324, 21)
+#elif PACKETVER >= 20081126
+packetLen(0x0324, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x0324, 6)
+#elif PACKETVER >= 20081112
+packetLen(0x0324, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x0324, 4)
+#elif PACKETVER >= 20081029
+packetLen(0x0324, 8)
+#elif PACKETVER >= 20080910
+packetLen(0x0324, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x0324, 8)
+#elif PACKETVER >= 20080827
+packetLen(0x0324, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0324, 26)
+#elif PACKETVER >= 20080813
+packetLen(0x0324, 4)
+#elif PACKETVER >= 20080806
+packetLen(0x0324, 10)
+#elif PACKETVER >= 20080730
+packetLen(0x0324, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x0324, 31)
+#elif PACKETVER >= 20080715
+packetLen(0x0324, 22)
+#elif PACKETVER >= 20080701
+packetLen(0x0324, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0324, 3)
+#elif PACKETVER >= 20080617
+packetLen(0x0324, 66)
+#elif PACKETVER >= 20080610
+packetLen(0x0324, 2)
+#elif PACKETVER >= 20080603
+packetLen(0x0324, 32)
+#elif PACKETVER >= 20080528
+packetLen(0x0324, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x0324, 6)
+#elif PACKETVER >= 20080513
+packetLen(0x0324, -1)
+#elif PACKETVER >= 20080507
+packetLen(0x0324, 13)
+#elif PACKETVER >= 20080429
+packetLen(0x0324, 26)
+#elif PACKETVER >= 20080422
+packetLen(0x0324, 3)
+#elif PACKETVER >= 20080415
+packetLen(0x0324, 26)
+#elif PACKETVER >= 20080408
+packetLen(0x0324, -1)
+#endif
+
+// Packet: 0x0325
+#if PACKETVER >= 20081203
+packetLen(0x0325, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x0325, 6)
+#elif PACKETVER >= 20081105
+packetLen(0x0325, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x0325, 31)
+#elif PACKETVER >= 20081022
+packetLen(0x0325, 5)
+#elif PACKETVER >= 20081015
+packetLen(0x0325, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x0325, 6)
+#elif PACKETVER >= 20081001
+packetLen(0x0325, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x0325, 3)
+#elif PACKETVER >= 20080827
+packetLen(0x0325, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0325, 4)
+#elif PACKETVER >= 20080806
+packetLen(0x0325, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x0325, 8)
+#elif PACKETVER >= 20080715
+packetLen(0x0325, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x0325, 13)
+#elif PACKETVER >= 20080701
+packetLen(0x0325, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0325, 7)
+#elif PACKETVER >= 20080528
+packetLen(0x0325, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x0325, 39)
+#elif PACKETVER >= 20080513
+packetLen(0x0325, -1)
+#elif PACKETVER >= 20080507
+packetLen(0x0325, 2)
+#elif PACKETVER >= 20080415
+packetLen(0x0325, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x0325, 6)
+#endif
+
+// Packet: 0x0326
+#if PACKETVER >= 20081217
+packetLen(0x0326, 14)
+#elif PACKETVER >= 20081203
+packetLen(0x0326, 2)
+#elif PACKETVER >= 20081126
+packetLen(0x0326, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x0326, 39)
+#elif PACKETVER >= 20081008
+packetLen(0x0326, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x0326, 6)
+#elif PACKETVER >= 20080910
+packetLen(0x0326, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x0326, 6)
+#elif PACKETVER >= 20080827
+packetLen(0x0326, 2)
+#elif PACKETVER >= 20080820
+packetLen(0x0326, 28)
+#elif PACKETVER >= 20080813
+packetLen(0x0326, 6)
+#elif PACKETVER >= 20080730
+packetLen(0x0326, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x0326, 60)
+#elif PACKETVER >= 20080715
+packetLen(0x0326, 36)
+#elif PACKETVER >= 20080617
+packetLen(0x0326, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0326, 6)
+#elif PACKETVER >= 20080603
+packetLen(0x0326, 42)
+#elif PACKETVER >= 20080528
+packetLen(0x0326, 282)
+#elif PACKETVER >= 20080520
+packetLen(0x0326, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x0326, 21)
+#elif PACKETVER >= 20080507
+packetLen(0x0326, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0326, 7)
+#elif PACKETVER >= 20080422
+packetLen(0x0326, 39)
+#elif PACKETVER >= 20080408
+packetLen(0x0326, -1)
+#endif
+
+// Packet: 0x0327
+#if PACKETVER >= 20080917
+packetLen(0x0327, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x0327, 10)
+#elif PACKETVER >= 20080903
+packetLen(0x0327, 4)
+#elif PACKETVER >= 20080827
+packetLen(0x0327, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0327, 8)
+#elif PACKETVER >= 20080813
+packetLen(0x0327, 7)
+#elif PACKETVER >= 20080806
+packetLen(0x0327, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x0327, 3)
+#elif PACKETVER >= 20080722
+packetLen(0x0327, 60)
+#elif PACKETVER >= 20080715
+packetLen(0x0327, 54)
+#elif PACKETVER >= 20080701
+packetLen(0x0327, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0327, 4)
+#elif PACKETVER >= 20080617
+packetLen(0x0327, 3)
+#elif PACKETVER >= 20080610
+packetLen(0x0327, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x0327, 4)
+#elif PACKETVER >= 20080528
+packetLen(0x0327, 6)
+#elif PACKETVER >= 20080513
+packetLen(0x0327, -1)
+#elif PACKETVER >= 20080507
+packetLen(0x0327, 6)
+#elif PACKETVER >= 20080422
+packetLen(0x0327, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0327, 6)
+#elif PACKETVER >= 20080408
+packetLen(0x0327, 5)
+#endif
+
+// Packet: 0x0328
+#if PACKETVER >= 20081217
+packetLen(0x0328, 26)
+#elif PACKETVER >= 20081203
+packetLen(0x0328, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x0328, 19)
+#elif PACKETVER >= 20081119
+packetLen(0x0328, 8)
+#elif PACKETVER >= 20081029
+packetLen(0x0328, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x0328, 2)
+#elif PACKETVER >= 20081015
+packetLen(0x0328, 58)
+#elif PACKETVER >= 20081008
+packetLen(0x0328, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x0328, 14)
+#elif PACKETVER >= 20080924
+packetLen(0x0328, 26)
+#elif PACKETVER >= 20080917
+packetLen(0x0328, 11)
+#elif PACKETVER >= 20080910
+packetLen(0x0328, 65)
+#elif PACKETVER >= 20080903
+packetLen(0x0328, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x0328, 55)
+#elif PACKETVER >= 20080708
+packetLen(0x0328, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x0328, 30)
+#elif PACKETVER >= 20080624
+packetLen(0x0328, 282)
+#elif PACKETVER >= 20080617
+packetLen(0x0328, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x0328, 3)
+#elif PACKETVER >= 20080520
+packetLen(0x0328, 54)
+#elif PACKETVER >= 20080513
+packetLen(0x0328, 19)
+#elif PACKETVER >= 20080507
+packetLen(0x0328, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0328, 90)
+#elif PACKETVER >= 20080422
+packetLen(0x0328, 22)
+#elif PACKETVER >= 20080415
+packetLen(0x0328, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x0328, 14)
+#endif
+
+// Packet: 0x0329
+#if PACKETVER >= 20081203
+packetLen(0x0329, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x0329, 2)
+#elif PACKETVER >= 20081119
+packetLen(0x0329, 6)
+#elif PACKETVER >= 20081105
+packetLen(0x0329, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x0329, 22)
+#elif PACKETVER >= 20081008
+packetLen(0x0329, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x0329, 8)
+#elif PACKETVER >= 20080910
+packetLen(0x0329, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x0329, 2)
+#elif PACKETVER >= 20080806
+packetLen(0x0329, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x0329, 54)
+#elif PACKETVER >= 20080708
+packetLen(0x0329, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x0329, 186)
+#elif PACKETVER >= 20080624
+packetLen(0x0329, 66)
+#elif PACKETVER >= 20080610
+packetLen(0x0329, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x0329, 23)
+#elif PACKETVER >= 20080528
+packetLen(0x0329, 4)
+#elif PACKETVER >= 20080520
+packetLen(0x0329, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x0329, 8)
+#elif PACKETVER >= 20080429
+packetLen(0x0329, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x0329, 3)
+#elif PACKETVER >= 20080415
+packetLen(0x0329, 30)
+#elif PACKETVER >= 20080408
+packetLen(0x0329, -1)
+#endif
+
+// Packet: 0x032a
+#if PACKETVER >= 20081217
+packetLen(0x032a, 7)
+#elif PACKETVER >= 20081203
+packetLen(0x032a, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x032a, 22)
+#elif PACKETVER >= 20081112
+packetLen(0x032a, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x032a, 21)
+#elif PACKETVER >= 20081022
+packetLen(0x032a, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x032a, 8)
+#elif PACKETVER >= 20081008
+packetLen(0x032a, 29)
+#elif PACKETVER >= 20080910
+packetLen(0x032a, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x032a, 114)
+#elif PACKETVER >= 20080827
+packetLen(0x032a, 3)
+#elif PACKETVER >= 20080820
+packetLen(0x032a, 14)
+#elif PACKETVER >= 20080813
+packetLen(0x032a, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x032a, 5)
+#elif PACKETVER >= 20080730
+packetLen(0x032a, 6)
+#elif PACKETVER >= 20080708
+packetLen(0x032a, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x032a, 17)
+#elif PACKETVER >= 20080624
+packetLen(0x032a, 10)
+#elif PACKETVER >= 20080617
+packetLen(0x032a, 9)
+#elif PACKETVER >= 20080610
+packetLen(0x032a, 14)
+#elif PACKETVER >= 20080603
+packetLen(0x032a, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x032a, 5)
+#elif PACKETVER >= 20080520
+packetLen(0x032a, 32)
+#elif PACKETVER >= 20080507
+packetLen(0x032a, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x032a, 6)
+#elif PACKETVER >= 20080422
+packetLen(0x032a, 11)
+#elif PACKETVER >= 20080415
+packetLen(0x032a, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x032a, 8)
+#endif
+
+// Packet: 0x032b
+#if PACKETVER >= 20081203
+packetLen(0x032b, 4)
+#elif PACKETVER >= 20081126
+packetLen(0x032b, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x032b, 3)
+#elif PACKETVER >= 20081112
+packetLen(0x032b, 4)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x032b, 2)
+#elif PACKETVER >= 20081029
+packetLen(0x032b, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x032b, 7)
+#elif PACKETVER >= 20081015
+packetLen(0x032b, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x032b, 10)
+#elif PACKETVER >= 20081001
+packetLen(0x032b, 30)
+#elif PACKETVER >= 20080924
+packetLen(0x032b, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x032b, 14)
+#elif PACKETVER >= 20080903
+packetLen(0x032b, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x032b, 7)
+#elif PACKETVER >= 20080813
+packetLen(0x032b, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x032b, 2)
+#elif PACKETVER >= 20080730
+packetLen(0x032b, 3)
+#elif PACKETVER >= 20080722
+packetLen(0x032b, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x032b, 6)
+#elif PACKETVER >= 20080708
+packetLen(0x032b, 2)
+#elif PACKETVER >= 20080701
+packetLen(0x032b, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x032b, 3)
+#elif PACKETVER >= 20080610
+packetLen(0x032b, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x032b, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x032b, 3)
+#elif PACKETVER >= 20080520
+packetLen(0x032b, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x032b, 7)
+#elif PACKETVER >= 20080507
+packetLen(0x032b, 44)
+#elif PACKETVER >= 20080429
+packetLen(0x032b, 14)
+#elif PACKETVER >= 20080422
+packetLen(0x032b, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x032b, 4)
+#elif PACKETVER >= 20080408
+packetLen(0x032b, -1)
+#endif
+
+// Packet: 0x032c
+#if PACKETVER >= 20081126
+packetLen(0x032c, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x032c, 9)
+#elif PACKETVER >= 20081112
+packetLen(0x032c, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x032c, 5)
+#elif PACKETVER >= 20081029
+packetLen(0x032c, 22)
+#elif PACKETVER >= 20081022
+packetLen(0x032c, 2)
+#elif PACKETVER >= 20081015
+packetLen(0x032c, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x032c, 4)
+#elif PACKETVER >= 20081001
+packetLen(0x032c, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x032c, 67)
+#elif PACKETVER >= 20080917
+packetLen(0x032c, 30)
+#elif PACKETVER >= 20080910
+packetLen(0x032c, 15)
+#elif PACKETVER >= 20080903
+packetLen(0x032c, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x032c, 2)
+#elif PACKETVER >= 20080820
+packetLen(0x032c, 22)
+#elif PACKETVER >= 20080813
+packetLen(0x032c, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x032c, 22)
+#elif PACKETVER >= 20080730
+packetLen(0x032c, 2)
+#elif PACKETVER >= 20080722
+packetLen(0x032c, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x032c, 6)
+#elif PACKETVER >= 20080708
+packetLen(0x032c, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x032c, 27)
+#elif PACKETVER >= 20080624
+packetLen(0x032c, 18)
+#elif PACKETVER >= 20080617
+packetLen(0x032c, 2)
+#elif PACKETVER >= 20080603
+packetLen(0x032c, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x032c, 12)
+#elif PACKETVER >= 20080520
+packetLen(0x032c, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x032c, 3)
+#elif PACKETVER >= 20080429
+packetLen(0x032c, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x032c, 8)
+#elif PACKETVER >= 20080415
+packetLen(0x032c, 6)
+#elif PACKETVER >= 20080408
+packetLen(0x032c, -1)
+#endif
+
+// Packet: 0x032d
+#if PACKETVER >= 20081217
+packetLen(0x032d, 6)
+#elif PACKETVER >= 20081203
+packetLen(0x032d, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x032d, 4)
+#elif PACKETVER >= 20081119
+packetLen(0x032d, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x032d, 6)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x032d, 17)
+#elif PACKETVER >= 20081029
+packetLen(0x032d, 282)
+#elif PACKETVER >= 20081022
+packetLen(0x032d, 3)
+#elif PACKETVER >= 20081001
+packetLen(0x032d, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x032d, 11)
+#elif PACKETVER >= 20080917
+packetLen(0x032d, 6)
+#elif PACKETVER >= 20080903
+packetLen(0x032d, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x032d, 58)
+#elif PACKETVER >= 20080820
+packetLen(0x032d, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x032d, 12)
+#elif PACKETVER >= 20080806
+packetLen(0x032d, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x032d, 2)
+#elif PACKETVER >= 20080708
+packetLen(0x032d, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x032d, 10)
+#elif PACKETVER >= 20080624
+packetLen(0x032d, 32)
+#elif PACKETVER >= 20080617
+packetLen(0x032d, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x032d, 4)
+#elif PACKETVER >= 20080603
+packetLen(0x032d, 3)
+#elif PACKETVER >= 20080528
+packetLen(0x032d, 10)
+#elif PACKETVER >= 20080520
+packetLen(0x032d, 6)
+#elif PACKETVER >= 20080513
+packetLen(0x032d, 30)
+#elif PACKETVER >= 20080429
+packetLen(0x032d, 3)
+#elif PACKETVER >= 20080422
+packetLen(0x032d, 90)
+#elif PACKETVER >= 20080415
+packetLen(0x032d, 8)
+#elif PACKETVER >= 20080408
+packetLen(0x032d, -1)
+#endif
+
+// Packet: 0x032e
+#if PACKETVER >= 20081203
+packetLen(0x032e, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x032e, 44)
+#elif PACKETVER >= 20081015
+packetLen(0x032e, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x032e, 22)
+#elif PACKETVER >= 20081001
+packetLen(0x032e, 30)
+#elif PACKETVER >= 20080924
+packetLen(0x032e, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x032e, 6)
+#elif PACKETVER >= 20080910
+packetLen(0x032e, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x032e, 30)
+#elif PACKETVER >= 20080820
+packetLen(0x032e, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x032e, 11)
+#elif PACKETVER >= 20080730
+packetLen(0x032e, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x032e, 67)
+#elif PACKETVER >= 20080708
+packetLen(0x032e, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x032e, 26)
+#elif PACKETVER >= 20080624
+packetLen(0x032e, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x032e, 10)
+#elif PACKETVER >= 20080610
+packetLen(0x032e, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x032e, 3)
+#elif PACKETVER >= 20080520
+packetLen(0x032e, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x032e, 20)
+#elif PACKETVER >= 20080507
+packetLen(0x032e, 24)
+#elif PACKETVER >= 20080429
+packetLen(0x032e, 42)
+#elif PACKETVER >= 20080422
+packetLen(0x032e, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x032e, 10)
+#elif PACKETVER >= 20080408
+packetLen(0x032e, 27)
+#endif
+
+// Packet: 0x032f
+#if PACKETVER >= 20081126
+packetLen(0x032f, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x032f, 2)
+#elif PACKETVER >= 20081112
+packetLen(0x032f, 3)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x032f, 6)
+#elif PACKETVER >= 20081029
+packetLen(0x032f, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x032f, 8)
+#elif PACKETVER >= 20081015
+packetLen(0x032f, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x032f, 4)
+#elif PACKETVER >= 20080924
+packetLen(0x032f, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x032f, 2)
+#elif PACKETVER >= 20080813
+packetLen(0x032f, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x032f, 3)
+#elif PACKETVER >= 20080701
+packetLen(0x032f, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x032f, 53)
+#elif PACKETVER >= 20080603
+packetLen(0x032f, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x032f, 58)
+#elif PACKETVER >= 20080520
+packetLen(0x032f, 10)
+#elif PACKETVER >= 20080513
+packetLen(0x032f, 26)
+#elif PACKETVER >= 20080507
+packetLen(0x032f, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x032f, 8)
+#elif PACKETVER >= 20080422
+packetLen(0x032f, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x032f, 27)
+#elif PACKETVER >= 20080408
+packetLen(0x032f, -1)
+#endif
+
+// Packet: 0x0330
+#if PACKETVER >= 20081217
+packetLen(0x0330, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x0330, 6)
+#elif PACKETVER >= 20081119
+packetLen(0x0330, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x0330, 3)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081001
+packetLen(0x0330, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x0330, 2)
+#elif PACKETVER >= 20080910
+packetLen(0x0330, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x0330, 2)
+#elif PACKETVER >= 20080827
+packetLen(0x0330, 22)
+#elif PACKETVER >= 20080820
+packetLen(0x0330, 6)
+#elif PACKETVER >= 20080813
+packetLen(0x0330, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x0330, 7)
+#elif PACKETVER >= 20080730
+packetLen(0x0330, 54)
+#elif PACKETVER >= 20080722
+packetLen(0x0330, 6)
+#elif PACKETVER >= 20080715
+packetLen(0x0330, 15)
+#elif PACKETVER >= 20080708
+packetLen(0x0330, 11)
+#elif PACKETVER >= 20080701
+packetLen(0x0330, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0330, 10)
+#elif PACKETVER >= 20080617
+packetLen(0x0330, 8)
+#elif PACKETVER >= 20080610
+packetLen(0x0330, 67)
+#elif PACKETVER >= 20080603
+packetLen(0x0330, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x0330, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x0330, 4)
+#elif PACKETVER >= 20080429
+packetLen(0x0330, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x0330, 10)
+#elif PACKETVER >= 20080415
+packetLen(0x0330, 16)
+#elif PACKETVER >= 20080408
+packetLen(0x0330, 54)
+#endif
+
+// Packet: 0x0331
+#if PACKETVER >= 20081217
+packetLen(0x0331, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x0331, 2)
+#elif PACKETVER >= 20081126
+packetLen(0x0331, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x0331, 2)
+#elif PACKETVER >= 20081112
+packetLen(0x0331, 60)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0331, 15)
+#elif PACKETVER >= 20081029
+packetLen(0x0331, 4)
+#elif PACKETVER >= 20081022
+packetLen(0x0331, 186)
+#elif PACKETVER >= 20081015
+packetLen(0x0331, 4)
+#elif PACKETVER >= 20081008
+packetLen(0x0331, 10)
+#elif PACKETVER >= 20080917
+packetLen(0x0331, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x0331, 10)
+#elif PACKETVER >= 20080903
+packetLen(0x0331, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x0331, 4)
+#elif PACKETVER >= 20080820
+packetLen(0x0331, 16)
+#elif PACKETVER >= 20080722
+packetLen(0x0331, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x0331, 6)
+#elif PACKETVER >= 20080708
+packetLen(0x0331, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x0331, 18)
+#elif PACKETVER >= 20080617
+packetLen(0x0331, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0331, 8)
+#elif PACKETVER >= 20080603
+packetLen(0x0331, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x0331, 10)
+#elif PACKETVER >= 20080520
+packetLen(0x0331, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x0331, 12)
+#elif PACKETVER >= 20080507
+packetLen(0x0331, 4)
+#elif PACKETVER >= 20080429
+packetLen(0x0331, 54)
+#elif PACKETVER >= 20080422
+packetLen(0x0331, 6)
+#elif PACKETVER >= 20080415
+packetLen(0x0331, 12)
+#elif PACKETVER >= 20080408
+packetLen(0x0331, -1)
+#endif
+
+// Packet: 0x0332
+#if PACKETVER >= 20081217
+packetLen(0x0332, 3)
+#elif PACKETVER >= 20081203
+packetLen(0x0332, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x0332, 4)
+#elif PACKETVER >= 20081119
+packetLen(0x0332, 26)
+#elif PACKETVER >= 20081112
+packetLen(0x0332, 58)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0332, 6)
+#elif PACKETVER >= 20081022
+packetLen(0x0332, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0332, 10)
+#elif PACKETVER >= 20081008
+packetLen(0x0332, 60)
+#elif PACKETVER >= 20081001
+packetLen(0x0332, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x0332, 30)
+#elif PACKETVER >= 20080827
+packetLen(0x0332, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0332, 6)
+#elif PACKETVER >= 20080708
+packetLen(0x0332, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x0332, 15)
+#elif PACKETVER >= 20080624
+packetLen(0x0332, 282)
+#elif PACKETVER >= 20080429
+packetLen(0x0332, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x0332, 114)
+#elif PACKETVER >= 20080415
+packetLen(0x0332, 8)
+#elif PACKETVER >= 20080408
+packetLen(0x0332, 4)
+#endif
+
+// Packet: 0x0333
+#if PACKETVER >= 20081217
+packetLen(0x0333, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x0333, 3)
+#elif PACKETVER >= 20081119
+packetLen(0x0333, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x0333, 8)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0333, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x0333, 5)
+#elif PACKETVER >= 20081008
+packetLen(0x0333, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x0333, 6)
+#elif PACKETVER >= 20080924
+packetLen(0x0333, 2)
+#elif PACKETVER >= 20080910
+packetLen(0x0333, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x0333, 2)
+#elif PACKETVER >= 20080813
+packetLen(0x0333, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x0333, 16)
+#elif PACKETVER >= 20080730
+packetLen(0x0333, 90)
+#elif PACKETVER >= 20080722
+packetLen(0x0333, 186)
+#elif PACKETVER >= 20080715
+packetLen(0x0333, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x0333, 18)
+#elif PACKETVER >= 20080701
+packetLen(0x0333, 28)
+#elif PACKETVER >= 20080610
+packetLen(0x0333, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x0333, 17)
+#elif PACKETVER >= 20080528
+packetLen(0x0333, 2)
+#elif PACKETVER >= 20080520
+packetLen(0x0333, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x0333, 29)
+#elif PACKETVER >= 20080507
+packetLen(0x0333, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0333, 9)
+#elif PACKETVER >= 20080422
+packetLen(0x0333, 35)
+#elif PACKETVER >= 20080415
+packetLen(0x0333, 5)
+#elif PACKETVER >= 20080408
+packetLen(0x0333, -1)
+#endif
+
+// Packet: 0x0334
+#if PACKETVER >= 20081217
+packetLen(0x0334, 27)
+#elif PACKETVER >= 20081203
+packetLen(0x0334, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x0334, 2)
+#elif PACKETVER >= 20081112
+packetLen(0x0334, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x0334, 6)
+#elif PACKETVER >= 20081029
+packetLen(0x0334, 14)
+#elif PACKETVER >= 20081022
+packetLen(0x0334, 4)
+#elif PACKETVER >= 20081008
+packetLen(0x0334, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x0334, 26)
+#elif PACKETVER >= 20080917
+packetLen(0x0334, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x0334, 28)
+#elif PACKETVER >= 20080813
+packetLen(0x0334, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x0334, 6)
+#elif PACKETVER >= 20080730
+packetLen(0x0334, 3)
+#elif PACKETVER >= 20080715
+packetLen(0x0334, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x0334, 26)
+#elif PACKETVER >= 20080624
+packetLen(0x0334, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0334, 2)
+#elif PACKETVER >= 20080610
+packetLen(0x0334, 7)
+#elif PACKETVER >= 20080603
+packetLen(0x0334, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x0334, 28)
+#elif PACKETVER >= 20080520
+packetLen(0x0334, 60)
+#elif PACKETVER >= 20080507
+packetLen(0x0334, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0334, 6)
+#elif PACKETVER >= 20080422
+packetLen(0x0334, 60)
+#elif PACKETVER >= 20080415
+packetLen(0x0334, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x0334, 5)
+#endif
+
+// Packet: 0x0335
+#if PACKETVER >= 20081217
+packetLen(0x0335, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x0335, 9)
+#elif PACKETVER >= 20081126
+packetLen(0x0335, 36)
+#elif PACKETVER >= 20081119
+packetLen(0x0335, 282)
+#elif PACKETVER >= 20081022
+packetLen(0x0335, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0335, 60)
+#elif PACKETVER >= 20081008
+packetLen(0x0335, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x0335, 7)
+#elif PACKETVER >= 20080924
+packetLen(0x0335, 10)
+#elif PACKETVER >= 20080827
+packetLen(0x0335, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0335, 2)
+#elif PACKETVER >= 20080806
+packetLen(0x0335, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x0335, 28)
+#elif PACKETVER >= 20080701
+packetLen(0x0335, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0335, 3)
+#elif PACKETVER >= 20080617
+packetLen(0x0335, 22)
+#elif PACKETVER >= 20080610
+packetLen(0x0335, 4)
+#elif PACKETVER >= 20080603
+packetLen(0x0335, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x0335, 7)
+#elif PACKETVER >= 20080520
+packetLen(0x0335, 4)
+#elif PACKETVER >= 20080513
+packetLen(0x0335, -1)
+#elif PACKETVER >= 20080507
+packetLen(0x0335, 28)
+#elif PACKETVER >= 20080408
+packetLen(0x0335, -1)
+#endif
+
+// Packet: 0x0336
+#if PACKETVER >= 20081126
+packetLen(0x0336, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x0336, 4)
+#elif PACKETVER >= 20081022
+packetLen(0x0336, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0336, 2)
+#elif PACKETVER >= 20081008
+packetLen(0x0336, 23)
+#elif PACKETVER >= 20081001
+packetLen(0x0336, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x0336, 4)
+#elif PACKETVER >= 20080917
+packetLen(0x0336, 2)
+#elif PACKETVER >= 20080910
+packetLen(0x0336, 26)
+#elif PACKETVER >= 20080827
+packetLen(0x0336, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0336, 4)
+#elif PACKETVER >= 20080813
+packetLen(0x0336, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x0336, 6)
+#elif PACKETVER >= 20080730
+packetLen(0x0336, 97)
+#elif PACKETVER >= 20080722
+packetLen(0x0336, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x0336, 8)
+#elif PACKETVER >= 20080708
+packetLen(0x0336, 2)
+#elif PACKETVER >= 20080624
+packetLen(0x0336, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0336, 30)
+#elif PACKETVER >= 20080610
+packetLen(0x0336, 33)
+#elif PACKETVER >= 20080603
+packetLen(0x0336, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x0336, 6)
+#elif PACKETVER >= 20080520
+packetLen(0x0336, 7)
+#elif PACKETVER >= 20080513
+packetLen(0x0336, 3)
+#elif PACKETVER >= 20080507
+packetLen(0x0336, 11)
+#elif PACKETVER >= 20080429
+packetLen(0x0336, 27)
+#elif PACKETVER >= 20080415
+packetLen(0x0336, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x0336, 6)
+#endif
+
+// Packet: 0x0337
+#if PACKETVER >= 20081217
+packetLen(0x0337, 6)
+#elif PACKETVER >= 20081008
+packetLen(0x0337, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x0337, 36)
+#elif PACKETVER >= 20080924
+packetLen(0x0337, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x0337, 54)
+#elif PACKETVER >= 20080910
+packetLen(0x0337, 5)
+#elif PACKETVER >= 20080903
+packetLen(0x0337, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x0337, 30)
+#elif PACKETVER >= 20080820
+packetLen(0x0337, 5)
+#elif PACKETVER >= 20080806
+packetLen(0x0337, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x0337, 43)
+#elif PACKETVER >= 20080722
+packetLen(0x0337, 33)
+#elif PACKETVER >= 20080715
+packetLen(0x0337, 23)
+#elif PACKETVER >= 20080708
+packetLen(0x0337, 32)
+#elif PACKETVER >= 20080624
+packetLen(0x0337, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0337, 2)
+#elif PACKETVER >= 20080610
+packetLen(0x0337, 4)
+#elif PACKETVER >= 20080603
+packetLen(0x0337, 282)
+#elif PACKETVER >= 20080528
+packetLen(0x0337, 11)
+#elif PACKETVER >= 20080520
+packetLen(0x0337, 2)
+#elif PACKETVER >= 20080507
+packetLen(0x0337, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0337, 8)
+#elif PACKETVER >= 20080422
+packetLen(0x0337, 58)
+#elif PACKETVER >= 20080415
+packetLen(0x0337, 9)
+#elif PACKETVER >= 20080408
+packetLen(0x0337, 42)
+#endif
+
+// Packet: 0x0338
+#if PACKETVER >= 20081001
+packetLen(0x0338, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x0338, 6)
+#elif PACKETVER >= 20080917
+packetLen(0x0338, 4)
+#elif PACKETVER >= 20080910
+packetLen(0x0338, 28)
+#elif PACKETVER >= 20080903
+packetLen(0x0338, 26)
+#elif PACKETVER >= 20080827
+packetLen(0x0338, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0338, 10)
+#elif PACKETVER >= 20080813
+packetLen(0x0338, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x0338, 6)
+#elif PACKETVER >= 20080730
+packetLen(0x0338, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x0338, 10)
+#elif PACKETVER >= 20080715
+packetLen(0x0338, 3)
+#elif PACKETVER >= 20080708
+packetLen(0x0338, 44)
+#elif PACKETVER >= 20080701
+packetLen(0x0338, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0338, 10)
+#elif PACKETVER >= 20080520
+packetLen(0x0338, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x0338, 32)
+#elif PACKETVER >= 20080507
+packetLen(0x0338, 11)
+#elif PACKETVER >= 20080429
+packetLen(0x0338, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x0338, 67)
+#elif PACKETVER >= 20080415
+packetLen(0x0338, 6)
+#elif PACKETVER >= 20080408
+packetLen(0x0338, -1)
+#endif
+
+// Packet: 0x0339
+#if PACKETVER >= 20081217
+packetLen(0x0339, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x0339, 17)
+#elif PACKETVER >= 20081126
+packetLen(0x0339, 10)
+#elif PACKETVER >= 20081029
+packetLen(0x0339, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x0339, 3)
+#elif PACKETVER >= 20081008
+packetLen(0x0339, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x0339, 2)
+#elif PACKETVER >= 20080910
+packetLen(0x0339, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x0339, 6)
+#elif PACKETVER >= 20080820
+packetLen(0x0339, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x0339, 16)
+#elif PACKETVER >= 20080806
+packetLen(0x0339, 17)
+#elif PACKETVER >= 20080730
+packetLen(0x0339, 4)
+#elif PACKETVER >= 20080722
+packetLen(0x0339, 7)
+#elif PACKETVER >= 20080715
+packetLen(0x0339, 4)
+#elif PACKETVER >= 20080701
+packetLen(0x0339, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0339, 39)
+#elif PACKETVER >= 20080617
+packetLen(0x0339, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0339, 27)
+#elif PACKETVER >= 20080603
+packetLen(0x0339, 79)
+#elif PACKETVER >= 20080528
+packetLen(0x0339, 3)
+#elif PACKETVER >= 20080520
+packetLen(0x0339, 7)
+#elif PACKETVER >= 20080415
+packetLen(0x0339, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x0339, 7)
+#endif
+
+// Packet: 0x033a
+#if PACKETVER >= 20081217
+packetLen(0x033a, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x033a, 10)
+#elif PACKETVER >= 20081126
+packetLen(0x033a, 114)
+#elif PACKETVER >= 20081119
+packetLen(0x033a, 6)
+#elif PACKETVER >= 20081112
+packetLen(0x033a, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x033a, 11)
+#elif PACKETVER >= 20080924
+packetLen(0x033a, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x033a, 57)
+#elif PACKETVER >= 20080903
+packetLen(0x033a, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x033a, 9)
+#elif PACKETVER >= 20080820
+packetLen(0x033a, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x033a, 6)
+#elif PACKETVER >= 20080806
+packetLen(0x033a, 67)
+#elif PACKETVER >= 20080730
+packetLen(0x033a, 30)
+#elif PACKETVER >= 20080722
+packetLen(0x033a, 3)
+#elif PACKETVER >= 20080708
+packetLen(0x033a, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x033a, 3)
+#elif PACKETVER >= 20080610
+packetLen(0x033a, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x033a, 5)
+#elif PACKETVER >= 20080528
+packetLen(0x033a, 67)
+#elif PACKETVER >= 20080520
+packetLen(0x033a, 33)
+#elif PACKETVER >= 20080513
+packetLen(0x033a, 39)
+#elif PACKETVER >= 20080507
+packetLen(0x033a, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x033a, 6)
+#elif PACKETVER >= 20080422
+packetLen(0x033a, 4)
+#elif PACKETVER >= 20080415
+packetLen(0x033a, 6)
+#elif PACKETVER >= 20080408
+packetLen(0x033a, 32)
+#endif
+
+// Packet: 0x033b
+#if PACKETVER >= 20081217
+packetLen(0x033b, 97)
+#elif PACKETVER >= 20081203
+packetLen(0x033b, 67)
+#elif PACKETVER >= 20081126
+packetLen(0x033b, 30)
+#elif PACKETVER >= 20081119
+packetLen(0x033b, 8)
+#elif PACKETVER >= 20081112
+packetLen(0x033b, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x033b, 186)
+#elif PACKETVER >= 20081029
+packetLen(0x033b, 6)
+#elif PACKETVER >= 20081022
+packetLen(0x033b, 7)
+#elif PACKETVER >= 20081015
+packetLen(0x033b, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x033b, 6)
+#elif PACKETVER >= 20080917
+packetLen(0x033b, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x033b, 30)
+#elif PACKETVER >= 20080903
+packetLen(0x033b, 2)
+#elif PACKETVER >= 20080730
+packetLen(0x033b, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x033b, 6)
+#elif PACKETVER >= 20080708
+packetLen(0x033b, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x033b, 6)
+#elif PACKETVER >= 20080617
+packetLen(0x033b, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x033b, 14)
+#elif PACKETVER >= 20080603
+packetLen(0x033b, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x033b, 4)
+#elif PACKETVER >= 20080520
+packetLen(0x033b, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x033b, 182)
+#elif PACKETVER >= 20080507
+packetLen(0x033b, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x033b, 20)
+#elif PACKETVER >= 20080422
+packetLen(0x033b, 6)
+#elif PACKETVER >= 20080415
+packetLen(0x033b, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x033b, 3)
+#endif
+
+// Packet: 0x033c
+#if PACKETVER >= 20081203
+packetLen(0x033c, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x033c, 282)
+#elif PACKETVER >= 20081105
+packetLen(0x033c, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x033c, 2)
+#elif PACKETVER >= 20081022
+packetLen(0x033c, 11)
+#elif PACKETVER >= 20081015
+packetLen(0x033c, 3)
+#elif PACKETVER >= 20081008
+packetLen(0x033c, 59)
+#elif PACKETVER >= 20081001
+packetLen(0x033c, 3)
+#elif PACKETVER >= 20080924
+packetLen(0x033c, 6)
+#elif PACKETVER >= 20080903
+packetLen(0x033c, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x033c, 6)
+#elif PACKETVER >= 20080813
+packetLen(0x033c, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x033c, 16)
+#elif PACKETVER >= 20080730
+packetLen(0x033c, 5)
+#elif PACKETVER >= 20080722
+packetLen(0x033c, 8)
+#elif PACKETVER >= 20080715
+packetLen(0x033c, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x033c, 6)
+#elif PACKETVER >= 20080701
+packetLen(0x033c, 53)
+#elif PACKETVER >= 20080624
+packetLen(0x033c, 12)
+#elif PACKETVER >= 20080610
+packetLen(0x033c, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x033c, 4)
+#elif PACKETVER >= 20080528
+packetLen(0x033c, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x033c, 10)
+#elif PACKETVER >= 20080513
+packetLen(0x033c, -1)
+#elif PACKETVER >= 20080507
+packetLen(0x033c, 30)
+#elif PACKETVER >= 20080429
+packetLen(0x033c, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x033c, 10)
+#elif PACKETVER >= 20080415
+packetLen(0x033c, 21)
+#elif PACKETVER >= 20080408
+packetLen(0x033c, 86)
+#endif
+
+// Packet: 0x033d
+#if PACKETVER >= 20081217
+packetLen(0x033d, 43)
+#elif PACKETVER >= 20081203
+packetLen(0x033d, 4)
+#elif PACKETVER >= 20081119
+packetLen(0x033d, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x033d, 6)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081008
+packetLen(0x033d, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x033d, 29)
+#elif PACKETVER >= 20080924
+packetLen(0x033d, 11)
+#elif PACKETVER >= 20080917
+packetLen(0x033d, 10)
+#elif PACKETVER >= 20080910
+packetLen(0x033d, 14)
+#elif PACKETVER >= 20080903
+packetLen(0x033d, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x033d, 26)
+#elif PACKETVER >= 20080806
+packetLen(0x033d, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x033d, 5)
+#elif PACKETVER >= 20080722
+packetLen(0x033d, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x033d, 5)
+#elif PACKETVER >= 20080701
+packetLen(0x033d, 32)
+#elif PACKETVER >= 20080624
+packetLen(0x033d, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x033d, 28)
+#elif PACKETVER >= 20080528
+packetLen(0x033d, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x033d, 11)
+#elif PACKETVER >= 20080513
+packetLen(0x033d, -1)
+#elif PACKETVER >= 20080507
+packetLen(0x033d, 10)
+#elif PACKETVER >= 20080429
+packetLen(0x033d, 21)
+#elif PACKETVER >= 20080415
+packetLen(0x033d, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x033d, 10)
+#endif
+
+// Packet: 0x033e
+#if PACKETVER >= 20081203
+packetLen(0x033e, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x033e, 7)
+#elif PACKETVER >= 20081119
+packetLen(0x033e, 3)
+#elif PACKETVER >= 20081112
+packetLen(0x033e, 5)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x033e, 3)
+#elif PACKETVER >= 20081029
+packetLen(0x033e, 71)
+#elif PACKETVER >= 20080924
+packetLen(0x033e, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x033e, 26)
+#elif PACKETVER >= 20080910
+packetLen(0x033e, 6)
+#elif PACKETVER >= 20080903
+packetLen(0x033e, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x033e, 22)
+#elif PACKETVER >= 20080820
+packetLen(0x033e, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x033e, 12)
+#elif PACKETVER >= 20080806
+packetLen(0x033e, 10)
+#elif PACKETVER >= 20080708
+packetLen(0x033e, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x033e, 6)
+#elif PACKETVER >= 20080603
+packetLen(0x033e, -1)
+#elif PACKETVER >= 20080528
+packetLen(0x033e, 11)
+#elif PACKETVER >= 20080520
+packetLen(0x033e, 33)
+#elif PACKETVER >= 20080513
+packetLen(0x033e, 6)
+#elif PACKETVER >= 20080507
+packetLen(0x033e, 4)
+#elif PACKETVER >= 20080429
+packetLen(0x033e, 33)
+#elif PACKETVER >= 20080422
+packetLen(0x033e, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x033e, 3)
+#elif PACKETVER >= 20080408
+packetLen(0x033e, 9)
+#endif
+
+// Packet: 0x033f
+#if PACKETVER >= 20081126
+packetLen(0x033f, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x033f, 12)
+#elif PACKETVER >= 20081112
+packetLen(0x033f, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x033f, 6)
+#elif PACKETVER >= 20081029
+packetLen(0x033f, 54)
+#elif PACKETVER >= 20081022
+packetLen(0x033f, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x033f, 33)
+#elif PACKETVER >= 20081008
+packetLen(0x033f, 3)
+#elif PACKETVER >= 20081001
+packetLen(0x033f, 31)
+#elif PACKETVER >= 20080924
+packetLen(0x033f, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x033f, 8)
+#elif PACKETVER >= 20080910
+packetLen(0x033f, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x033f, 12)
+#elif PACKETVER >= 20080813
+packetLen(0x033f, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x033f, 8)
+#elif PACKETVER >= 20080730
+packetLen(0x033f, 57)
+#elif PACKETVER >= 20080722
+packetLen(0x033f, 3)
+#elif PACKETVER >= 20080715
+packetLen(0x033f, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x033f, 17)
+#elif PACKETVER >= 20080701
+packetLen(0x033f, 3)
+#elif PACKETVER >= 20080624
+packetLen(0x033f, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x033f, 3)
+#elif PACKETVER >= 20080610
+packetLen(0x033f, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x033f, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x033f, 5)
+#elif PACKETVER >= 20080520
+packetLen(0x033f, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x033f, 282)
+#elif PACKETVER >= 20080507
+packetLen(0x033f, 27)
+#elif PACKETVER >= 20080429
+packetLen(0x033f, 3)
+#elif PACKETVER >= 20080422
+packetLen(0x033f, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x033f, 2)
+#elif PACKETVER >= 20080408
+packetLen(0x033f, -1)
+#endif
+
+// Packet: 0x0340
+#if PACKETVER >= 20081217
+packetLen(0x0340, 10)
+#elif PACKETVER >= 20081119
+packetLen(0x0340, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x0340, 66)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x0340, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0340, 12)
+#elif PACKETVER >= 20080917
+packetLen(0x0340, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x0340, 4)
+#elif PACKETVER >= 20080827
+packetLen(0x0340, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0340, 6)
+#elif PACKETVER >= 20080730
+packetLen(0x0340, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x0340, 32)
+#elif PACKETVER >= 20080715
+packetLen(0x0340, 2)
+#elif PACKETVER >= 20080708
+packetLen(0x0340, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x0340, 2)
+#elif PACKETVER >= 20080610
+packetLen(0x0340, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x0340, 27)
+#elif PACKETVER >= 20080528
+packetLen(0x0340, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x0340, 19)
+#elif PACKETVER >= 20080513
+packetLen(0x0340, 4)
+#elif PACKETVER >= 20080507
+packetLen(0x0340, 18)
+#elif PACKETVER >= 20080429
+packetLen(0x0340, 8)
+#elif PACKETVER >= 20080422
+packetLen(0x0340, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0340, 23)
+#elif PACKETVER >= 20080408
+packetLen(0x0340, -1)
+#endif
+
+// Packet: 0x0341
+#if PACKETVER >= 20081112
+packetLen(0x0341, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x0341, 27)
+#elif PACKETVER >= 20081029
+packetLen(0x0341, 10)
+#elif PACKETVER >= 20081008
+packetLen(0x0341, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x0341, 30)
+#elif PACKETVER >= 20080924
+packetLen(0x0341, 10)
+#elif PACKETVER >= 20080917
+packetLen(0x0341, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x0341, 6)
+#elif PACKETVER >= 20080827
+packetLen(0x0341, 57)
+#elif PACKETVER >= 20080813
+packetLen(0x0341, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x0341, 33)
+#elif PACKETVER >= 20080722
+packetLen(0x0341, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x0341, 30)
+#elif PACKETVER >= 20080708
+packetLen(0x0341, 58)
+#elif PACKETVER >= 20080617
+packetLen(0x0341, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0341, 16)
+#elif PACKETVER >= 20080429
+packetLen(0x0341, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x0341, 11)
+#elif PACKETVER >= 20080415
+packetLen(0x0341, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x0341, 2)
+#endif
+
+// Packet: 0x0342
+#if PACKETVER >= 20081203
+packetLen(0x0342, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x0342, 60)
+#elif PACKETVER >= 20081112
+packetLen(0x0342, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x0342, 11)
+#elif PACKETVER >= 20080910
+packetLen(0x0342, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x0342, 6)
+#elif PACKETVER >= 20080827
+packetLen(0x0342, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0342, 9)
+#elif PACKETVER >= 20080813
+packetLen(0x0342, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x0342, 3)
+#elif PACKETVER >= 20080722
+packetLen(0x0342, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x0342, 3)
+#elif PACKETVER >= 20080701
+packetLen(0x0342, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0342, 186)
+#elif PACKETVER >= 20080610
+packetLen(0x0342, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x0342, 2)
+#elif PACKETVER >= 20080528
+packetLen(0x0342, 4)
+#elif PACKETVER >= 20080513
+packetLen(0x0342, -1)
+#elif PACKETVER >= 20080507
+packetLen(0x0342, 14)
+#elif PACKETVER >= 20080429
+packetLen(0x0342, 30)
+#elif PACKETVER >= 20080422
+packetLen(0x0342, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0342, 5)
+#elif PACKETVER >= 20080408
+packetLen(0x0342, 4)
+#endif
+
+// Packet: 0x0343
+#if PACKETVER >= 20081217
+packetLen(0x0343, 21)
+#elif PACKETVER >= 20081203
+packetLen(0x0343, 10)
+#elif PACKETVER >= 20081126
+packetLen(0x0343, 3)
+#elif PACKETVER >= 20081119
+packetLen(0x0343, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x0343, 3)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0343, 67)
+#elif PACKETVER >= 20081029
+packetLen(0x0343, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x0343, 10)
+#elif PACKETVER >= 20081015
+packetLen(0x0343, 97)
+#elif PACKETVER >= 20081008
+packetLen(0x0343, 3)
+#elif PACKETVER >= 20081001
+packetLen(0x0343, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x0343, 6)
+#elif PACKETVER >= 20080917
+packetLen(0x0343, 26)
+#elif PACKETVER >= 20080910
+packetLen(0x0343, 6)
+#elif PACKETVER >= 20080903
+packetLen(0x0343, 71)
+#elif PACKETVER >= 20080827
+packetLen(0x0343, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0343, 22)
+#elif PACKETVER >= 20080730
+packetLen(0x0343, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x0343, 6)
+#elif PACKETVER >= 20080715
+packetLen(0x0343, 14)
+#elif PACKETVER >= 20080708
+packetLen(0x0343, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x0343, 4)
+#elif PACKETVER >= 20080617
+packetLen(0x0343, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0343, 17)
+#elif PACKETVER >= 20080422
+packetLen(0x0343, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0343, 2)
+#elif PACKETVER >= 20080408
+packetLen(0x0343, -1)
+#endif
+
+// Packet: 0x0344
+#if PACKETVER >= 20081217
+packetLen(0x0344, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x0344, 2)
+#elif PACKETVER >= 20081119
+packetLen(0x0344, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x0344, 7)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x0344, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0344, 32)
+#elif PACKETVER >= 20080924
+packetLen(0x0344, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x0344, 6)
+#elif PACKETVER >= 20080910
+packetLen(0x0344, 14)
+#elif PACKETVER >= 20080903
+packetLen(0x0344, 3)
+#elif PACKETVER >= 20080820
+packetLen(0x0344, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x0344, 5)
+#elif PACKETVER >= 20080806
+packetLen(0x0344, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x0344, 14)
+#elif PACKETVER >= 20080701
+packetLen(0x0344, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0344, 6)
+#elif PACKETVER >= 20080617
+packetLen(0x0344, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0344, 35)
+#elif PACKETVER >= 20080603
+packetLen(0x0344, 2)
+#elif PACKETVER >= 20080528
+packetLen(0x0344, 4)
+#elif PACKETVER >= 20080520
+packetLen(0x0344, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x0344, 10)
+#elif PACKETVER >= 20080507
+packetLen(0x0344, 2)
+#elif PACKETVER >= 20080422
+packetLen(0x0344, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0344, 3)
+#elif PACKETVER >= 20080408
+packetLen(0x0344, -1)
+#endif
+
+// Packet: 0x0345
+#if PACKETVER >= 20081217
+packetLen(0x0345, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x0345, 4)
+#elif PACKETVER >= 20081008
+packetLen(0x0345, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x0345, 9)
+#elif PACKETVER >= 20080924
+packetLen(0x0345, 6)
+#elif PACKETVER >= 20080917
+packetLen(0x0345, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x0345, 11)
+#elif PACKETVER >= 20080903
+packetLen(0x0345, 186)
+#elif PACKETVER >= 20080827
+packetLen(0x0345, 2)
+#elif PACKETVER >= 20080820
+packetLen(0x0345, 10)
+#elif PACKETVER >= 20080813
+packetLen(0x0345, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x0345, 5)
+#elif PACKETVER >= 20080730
+packetLen(0x0345, 9)
+#elif PACKETVER >= 20080722
+packetLen(0x0345, 11)
+#elif PACKETVER >= 20080715
+packetLen(0x0345, 27)
+#elif PACKETVER >= 20080708
+packetLen(0x0345, 4)
+#elif PACKETVER >= 20080701
+packetLen(0x0345, 3)
+#elif PACKETVER >= 20080624
+packetLen(0x0345, 60)
+#elif PACKETVER >= 20080617
+packetLen(0x0345, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0345, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x0345, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x0345, 9)
+#elif PACKETVER >= 20080513
+packetLen(0x0345, -1)
+#elif PACKETVER >= 20080507
+packetLen(0x0345, 6)
+#elif PACKETVER >= 20080429
+packetLen(0x0345, 14)
+#elif PACKETVER >= 20080408
+packetLen(0x0345, -1)
+#endif
+
+// Packet: 0x0346
+#if PACKETVER >= 20081217
+packetLen(0x0346, 13)
+#elif PACKETVER >= 20081126
+packetLen(0x0346, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x0346, 2)
+#elif PACKETVER >= 20081112
+packetLen(0x0346, 6)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x0346, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0346, 31)
+#elif PACKETVER >= 20080924
+packetLen(0x0346, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x0346, 5)
+#elif PACKETVER >= 20080903
+packetLen(0x0346, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x0346, 4)
+#elif PACKETVER >= 20080820
+packetLen(0x0346, 5)
+#elif PACKETVER >= 20080813
+packetLen(0x0346, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x0346, 15)
+#elif PACKETVER >= 20080617
+packetLen(0x0346, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0346, 16)
+#elif PACKETVER >= 20080603
+packetLen(0x0346, 3)
+#elif PACKETVER >= 20080520
+packetLen(0x0346, 6)
+#elif PACKETVER >= 20080513
+packetLen(0x0346, 26)
+#elif PACKETVER >= 20080507
+packetLen(0x0346, 11)
+#elif PACKETVER >= 20080429
+packetLen(0x0346, 5)
+#elif PACKETVER >= 20080422
+packetLen(0x0346, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0346, 55)
+#elif PACKETVER >= 20080408
+packetLen(0x0346, 8)
+#endif
+
+// Packet: 0x0347
+#if PACKETVER >= 20081217
+packetLen(0x0347, 8)
+#elif PACKETVER >= 20081126
+packetLen(0x0347, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x0347, 4)
+#elif PACKETVER >= 20081112
+packetLen(0x0347, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x0347, 10)
+#elif PACKETVER >= 20080827
+packetLen(0x0347, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0347, 32)
+#elif PACKETVER >= 20080813
+packetLen(0x0347, 3)
+#elif PACKETVER >= 20080806
+packetLen(0x0347, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x0347, 6)
+#elif PACKETVER >= 20080722
+packetLen(0x0347, 16)
+#elif PACKETVER >= 20080701
+packetLen(0x0347, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0347, 4)
+#elif PACKETVER >= 20080617
+packetLen(0x0347, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0347, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x0347, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x0347, 29)
+#elif PACKETVER >= 20080513
+packetLen(0x0347, 8)
+#elif PACKETVER >= 20080507
+packetLen(0x0347, 6)
+#elif PACKETVER >= 20080429
+packetLen(0x0347, 39)
+#elif PACKETVER >= 20080422
+packetLen(0x0347, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0347, 39)
+#elif PACKETVER >= 20080408
+packetLen(0x0347, -1)
+#endif
+
+// Packet: 0x0348
+#if PACKETVER >= 20081217
+packetLen(0x0348, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x0348, 6)
+#elif PACKETVER >= 20081126
+packetLen(0x0348, 5)
+#elif PACKETVER >= 20081105
+packetLen(0x0348, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x0348, 31)
+#elif PACKETVER >= 20081015
+packetLen(0x0348, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x0348, 2)
+#elif PACKETVER >= 20081001
+packetLen(0x0348, 4)
+#elif PACKETVER >= 20080917
+packetLen(0x0348, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x0348, 17)
+#elif PACKETVER >= 20080827
+packetLen(0x0348, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0348, 26)
+#elif PACKETVER >= 20080806
+packetLen(0x0348, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x0348, 10)
+#elif PACKETVER >= 20080722
+packetLen(0x0348, 6)
+#elif PACKETVER >= 20080715
+packetLen(0x0348, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x0348, 11)
+#elif PACKETVER >= 20080701
+packetLen(0x0348, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0348, 3)
+#elif PACKETVER >= 20080610
+packetLen(0x0348, 6)
+#elif PACKETVER >= 20080603
+packetLen(0x0348, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x0348, 2)
+#elif PACKETVER >= 20080520
+packetLen(0x0348, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x0348, 26)
+#elif PACKETVER >= 20080507
+packetLen(0x0348, 3)
+#elif PACKETVER >= 20080415
+packetLen(0x0348, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x0348, 6)
+#endif
+
+// Packet: 0x0349
+#if PACKETVER >= 20081217
+packetLen(0x0349, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x0349, 6)
+#elif PACKETVER >= 20081126
+packetLen(0x0349, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x0349, 2)
+#elif PACKETVER >= 20081029
+packetLen(0x0349, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x0349, 2)
+#elif PACKETVER >= 20081015
+packetLen(0x0349, 30)
+#elif PACKETVER >= 20081001
+packetLen(0x0349, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x0349, 31)
+#elif PACKETVER >= 20080917
+packetLen(0x0349, 32)
+#elif PACKETVER >= 20080910
+packetLen(0x0349, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x0349, 11)
+#elif PACKETVER >= 20080827
+packetLen(0x0349, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0349, 10)
+#elif PACKETVER >= 20080813
+packetLen(0x0349, 20)
+#elif PACKETVER >= 20080806
+packetLen(0x0349, 16)
+#elif PACKETVER >= 20080730
+packetLen(0x0349, 26)
+#elif PACKETVER >= 20080722
+packetLen(0x0349, 10)
+#elif PACKETVER >= 20080715
+packetLen(0x0349, 30)
+#elif PACKETVER >= 20080708
+packetLen(0x0349, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x0349, 3)
+#elif PACKETVER >= 20080610
+packetLen(0x0349, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x0349, 4)
+#elif PACKETVER >= 20080528
+packetLen(0x0349, 10)
+#elif PACKETVER >= 20080520
+packetLen(0x0349, 26)
+#elif PACKETVER >= 20080513
+packetLen(0x0349, 36)
+#elif PACKETVER >= 20080507
+packetLen(0x0349, 4)
+#elif PACKETVER >= 20080429
+packetLen(0x0349, 54)
+#elif PACKETVER >= 20080422
+packetLen(0x0349, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0349, 11)
+#elif PACKETVER >= 20080408
+packetLen(0x0349, 4)
+#endif
+
+// Packet: 0x034a
+#if PACKETVER >= 20081217
+packetLen(0x034a, 2)
+#elif PACKETVER >= 20081203
+packetLen(0x034a, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x034a, 2)
+#elif PACKETVER >= 20081119
+packetLen(0x034a, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x034a, 5)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x034a, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x034a, 4)
+#elif PACKETVER >= 20080924
+packetLen(0x034a, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x034a, 8)
+#elif PACKETVER >= 20080910
+packetLen(0x034a, 3)
+#elif PACKETVER >= 20080903
+packetLen(0x034a, 6)
+#elif PACKETVER >= 20080820
+packetLen(0x034a, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x034a, 3)
+#elif PACKETVER >= 20080722
+packetLen(0x034a, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x034a, 6)
+#elif PACKETVER >= 20080708
+packetLen(0x034a, 7)
+#elif PACKETVER >= 20080701
+packetLen(0x034a, 57)
+#elif PACKETVER >= 20080624
+packetLen(0x034a, 34)
+#elif PACKETVER >= 20080617
+packetLen(0x034a, 10)
+#elif PACKETVER >= 20080610
+packetLen(0x034a, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x034a, 26)
+#elif PACKETVER >= 20080528
+packetLen(0x034a, 9)
+#elif PACKETVER >= 20080520
+packetLen(0x034a, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x034a, 59)
+#elif PACKETVER >= 20080429
+packetLen(0x034a, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x034a, 6)
+#elif PACKETVER >= 20080408
+packetLen(0x034a, -1)
+#endif
+
+// Packet: 0x034b
+#if PACKETVER >= 20081203
+packetLen(0x034b, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x034b, 27)
+#elif PACKETVER >= 20081119
+packetLen(0x034b, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x034b, 14)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081008
+packetLen(0x034b, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x034b, 6)
+#elif PACKETVER >= 20080924
+packetLen(0x034b, 3)
+#elif PACKETVER >= 20080917
+packetLen(0x034b, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x034b, 2)
+#elif PACKETVER >= 20080903
+packetLen(0x034b, 4)
+#elif PACKETVER >= 20080827
+packetLen(0x034b, 26)
+#elif PACKETVER >= 20080820
+packetLen(0x034b, 28)
+#elif PACKETVER >= 20080813
+packetLen(0x034b, 5)
+#elif PACKETVER >= 20080806
+packetLen(0x034b, 282)
+#elif PACKETVER >= 20080730
+packetLen(0x034b, 18)
+#elif PACKETVER >= 20080715
+packetLen(0x034b, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x034b, 8)
+#elif PACKETVER >= 20080701
+packetLen(0x034b, 24)
+#elif PACKETVER >= 20080624
+packetLen(0x034b, 33)
+#elif PACKETVER >= 20080617
+packetLen(0x034b, 26)
+#elif PACKETVER >= 20080610
+packetLen(0x034b, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x034b, 10)
+#elif PACKETVER >= 20080513
+packetLen(0x034b, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x034b, 60)
+#elif PACKETVER >= 20080422
+packetLen(0x034b, 14)
+#elif PACKETVER >= 20080415
+packetLen(0x034b, 65)
+#elif PACKETVER >= 20080408
+packetLen(0x034b, 7)
+#endif
+
+// Packet: 0x034c
+#if PACKETVER >= 20081217
+packetLen(0x034c, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x034c, 33)
+#elif PACKETVER >= 20081126
+packetLen(0x034c, 6)
+#elif PACKETVER >= 20081119
+packetLen(0x034c, 2)
+#elif PACKETVER >= 20081105
+packetLen(0x034c, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x034c, 282)
+#elif PACKETVER >= 20080924
+packetLen(0x034c, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x034c, 6)
+#elif PACKETVER >= 20080827
+packetLen(0x034c, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x034c, 21)
+#elif PACKETVER >= 20080813
+packetLen(0x034c, 4)
+#elif PACKETVER >= 20080715
+packetLen(0x034c, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x034c, 3)
+#elif PACKETVER >= 20080701
+packetLen(0x034c, 10)
+#elif PACKETVER >= 20080624
+packetLen(0x034c, 6)
+#elif PACKETVER >= 20080610
+packetLen(0x034c, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x034c, 10)
+#elif PACKETVER >= 20080528
+packetLen(0x034c, 86)
+#elif PACKETVER >= 20080520
+packetLen(0x034c, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x034c, 14)
+#elif PACKETVER >= 20080507
+packetLen(0x034c, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x034c, 16)
+#elif PACKETVER >= 20080408
+packetLen(0x034c, -1)
+#endif
+
+// Packet: 0x034d
+#if PACKETVER >= 20081217
+packetLen(0x034d, 60)
+#elif PACKETVER >= 20081126
+packetLen(0x034d, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x034d, 6)
+#elif PACKETVER >= 20081105
+packetLen(0x034d, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x034d, 3)
+#elif PACKETVER >= 20081022
+packetLen(0x034d, 7)
+#elif PACKETVER >= 20081015
+packetLen(0x034d, 3)
+#elif PACKETVER >= 20080827
+packetLen(0x034d, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x034d, 26)
+#elif PACKETVER >= 20080730
+packetLen(0x034d, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x034d, 36)
+#elif PACKETVER >= 20080715
+packetLen(0x034d, 2)
+#elif PACKETVER >= 20080624
+packetLen(0x034d, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x034d, 2)
+#elif PACKETVER >= 20080603
+packetLen(0x034d, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x034d, 6)
+#elif PACKETVER >= 20080429
+packetLen(0x034d, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x034d, 36)
+#elif PACKETVER >= 20080415
+packetLen(0x034d, 23)
+#elif PACKETVER >= 20080408
+packetLen(0x034d, 2)
+#endif
+
+// Packet: 0x034e
+#if PACKETVER >= 20081217
+packetLen(0x034e, 30)
+#elif PACKETVER >= 20081126
+packetLen(0x034e, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x034e, 6)
+#elif PACKETVER >= 20081112
+packetLen(0x034e, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x034e, 4)
+#elif PACKETVER >= 20081029
+packetLen(0x034e, 32)
+#elif PACKETVER >= 20081022
+packetLen(0x034e, 4)
+#elif PACKETVER >= 20080910
+packetLen(0x034e, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x034e, 6)
+#elif PACKETVER >= 20080806
+packetLen(0x034e, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x034e, 19)
+#elif PACKETVER >= 20080722
+packetLen(0x034e, 6)
+#elif PACKETVER >= 20080624
+packetLen(0x034e, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x034e, 2)
+#elif PACKETVER >= 20080603
+packetLen(0x034e, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x034e, 59)
+#elif PACKETVER >= 20080520
+packetLen(0x034e, 7)
+#elif PACKETVER >= 20080429
+packetLen(0x034e, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x034e, 27)
+#elif PACKETVER >= 20080415
+packetLen(0x034e, 90)
+#elif PACKETVER >= 20080408
+packetLen(0x034e, 11)
+#endif
+
+// Packet: 0x034f
+#if PACKETVER >= 20081217
+packetLen(0x034f, 2)
+#elif PACKETVER >= 20081126
+packetLen(0x034f, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x034f, 14)
+#elif PACKETVER >= 20081112
+packetLen(0x034f, 2)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081008
+packetLen(0x034f, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x034f, 67)
+#elif PACKETVER >= 20080924
+packetLen(0x034f, 2)
+#elif PACKETVER >= 20080903
+packetLen(0x034f, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x034f, 35)
+#elif PACKETVER >= 20080820
+packetLen(0x034f, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x034f, 10)
+#elif PACKETVER >= 20080715
+packetLen(0x034f, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x034f, 20)
+#elif PACKETVER >= 20080701
+packetLen(0x034f, 6)
+#elif PACKETVER >= 20080624
+packetLen(0x034f, 71)
+#elif PACKETVER >= 20080617
+packetLen(0x034f, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x034f, 2)
+#elif PACKETVER >= 20080603
+packetLen(0x034f, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x034f, 27)
+#elif PACKETVER >= 20080520
+packetLen(0x034f, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x034f, 8)
+#elif PACKETVER >= 20080429
+packetLen(0x034f, 4)
+#elif PACKETVER >= 20080422
+packetLen(0x034f, 18)
+#elif PACKETVER >= 20080415
+packetLen(0x034f, 11)
+#elif PACKETVER >= 20080408
+packetLen(0x034f, 2)
+#endif
+
+// Packet: 0x0350
+#if PACKETVER >= 20081203
+packetLen(0x0350, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x0350, 4)
+#elif PACKETVER >= 20081119
+packetLen(0x0350, 11)
+#elif PACKETVER >= 20081112
+packetLen(0x0350, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x0350, 2)
+#elif PACKETVER >= 20081029
+packetLen(0x0350, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x0350, 15)
+#elif PACKETVER >= 20081015
+packetLen(0x0350, 3)
+#elif PACKETVER >= 20081008
+packetLen(0x0350, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x0350, 6)
+#elif PACKETVER >= 20080910
+packetLen(0x0350, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x0350, 6)
+#elif PACKETVER >= 20080820
+packetLen(0x0350, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x0350, 30)
+#elif PACKETVER >= 20080806
+packetLen(0x0350, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x0350, 66)
+#elif PACKETVER >= 20080722
+packetLen(0x0350, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x0350, 43)
+#elif PACKETVER >= 20080708
+packetLen(0x0350, 13)
+#elif PACKETVER >= 20080624
+packetLen(0x0350, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0350, 4)
+#elif PACKETVER >= 20080610
+packetLen(0x0350, 6)
+#elif PACKETVER >= 20080603
+packetLen(0x0350, 60)
+#elif PACKETVER >= 20080520
+packetLen(0x0350, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x0350, 3)
+#elif PACKETVER >= 20080507
+packetLen(0x0350, 6)
+#elif PACKETVER >= 20080429
+packetLen(0x0350, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x0350, 6)
+#elif PACKETVER >= 20080415
+packetLen(0x0350, 10)
+#elif PACKETVER >= 20080408
+packetLen(0x0350, -1)
+#endif
+
+// Packet: 0x0351
+#if PACKETVER >= 20081217
+packetLen(0x0351, 30)
+#elif PACKETVER >= 20081203
+packetLen(0x0351, 6)
+#elif PACKETVER >= 20081112
+packetLen(0x0351, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x0351, 33)
+#elif PACKETVER >= 20081029
+packetLen(0x0351, 66)
+#elif PACKETVER >= 20081022
+packetLen(0x0351, 11)
+#elif PACKETVER >= 20081015
+packetLen(0x0351, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x0351, 27)
+#elif PACKETVER >= 20081001
+packetLen(0x0351, 23)
+#elif PACKETVER >= 20080917
+packetLen(0x0351, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x0351, 10)
+#elif PACKETVER >= 20080903
+packetLen(0x0351, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x0351, 5)
+#elif PACKETVER >= 20080813
+packetLen(0x0351, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x0351, 4)
+#elif PACKETVER >= 20080730
+packetLen(0x0351, 10)
+#elif PACKETVER >= 20080722
+packetLen(0x0351, 5)
+#elif PACKETVER >= 20080715
+packetLen(0x0351, 16)
+#elif PACKETVER >= 20080708
+packetLen(0x0351, 3)
+#elif PACKETVER >= 20080701
+packetLen(0x0351, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0351, 282)
+#elif PACKETVER >= 20080617
+packetLen(0x0351, 30)
+#elif PACKETVER >= 20080610
+packetLen(0x0351, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x0351, 20)
+#elif PACKETVER >= 20080513
+packetLen(0x0351, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0351, 6)
+#elif PACKETVER >= 20080422
+packetLen(0x0351, 5)
+#elif PACKETVER >= 20080415
+packetLen(0x0351, 15)
+#elif PACKETVER >= 20080408
+packetLen(0x0351, -1)
+#endif
+
+// Packet: 0x0352
+#if PACKETVER >= 20081217
+packetLen(0x0352, 14)
+#elif PACKETVER >= 20081203
+packetLen(0x0352, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x0352, 5)
+#elif PACKETVER >= 20081119
+packetLen(0x0352, 28)
+#elif PACKETVER >= 20081112
+packetLen(0x0352, 22)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0352, 66)
+#elif PACKETVER >= 20081029
+packetLen(0x0352, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x0352, 17)
+#elif PACKETVER >= 20081001
+packetLen(0x0352, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x0352, 12)
+#elif PACKETVER >= 20080917
+packetLen(0x0352, 10)
+#elif PACKETVER >= 20080910
+packetLen(0x0352, 3)
+#elif PACKETVER >= 20080820
+packetLen(0x0352, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x0352, 10)
+#elif PACKETVER >= 20080806
+packetLen(0x0352, 6)
+#elif PACKETVER >= 20080730
+packetLen(0x0352, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x0352, 9)
+#elif PACKETVER >= 20080715
+packetLen(0x0352, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x0352, 2)
+#elif PACKETVER >= 20080701
+packetLen(0x0352, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0352, 2)
+#elif PACKETVER >= 20080617
+packetLen(0x0352, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0352, 60)
+#elif PACKETVER >= 20080603
+packetLen(0x0352, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x0352, 54)
+#elif PACKETVER >= 20080520
+packetLen(0x0352, 6)
+#elif PACKETVER >= 20080513
+packetLen(0x0352, 9)
+#elif PACKETVER >= 20080507
+packetLen(0x0352, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0352, 3)
+#elif PACKETVER >= 20080422
+packetLen(0x0352, 10)
+#elif PACKETVER >= 20080415
+packetLen(0x0352, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x0352, 8)
+#endif
+
+// Packet: 0x0353
+#if PACKETVER >= 20081217
+packetLen(0x0353, 6)
+#elif PACKETVER >= 20081126
+packetLen(0x0353, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x0353, 30)
+#elif PACKETVER >= 20081112
+packetLen(0x0353, 29)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0353, 26)
+#elif PACKETVER >= 20081029
+packetLen(0x0353, 14)
+#elif PACKETVER >= 20081022
+packetLen(0x0353, 2)
+#elif PACKETVER >= 20081015
+packetLen(0x0353, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x0353, 30)
+#elif PACKETVER >= 20080924
+packetLen(0x0353, 10)
+#elif PACKETVER >= 20080917
+packetLen(0x0353, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x0353, 4)
+#elif PACKETVER >= 20080820
+packetLen(0x0353, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x0353, 10)
+#elif PACKETVER >= 20080806
+packetLen(0x0353, 4)
+#elif PACKETVER >= 20080730
+packetLen(0x0353, 29)
+#elif PACKETVER >= 20080722
+packetLen(0x0353, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x0353, 7)
+#elif PACKETVER >= 20080701
+packetLen(0x0353, 6)
+#elif PACKETVER >= 20080610
+packetLen(0x0353, -1)
+#elif PACKETVER >= 20080603
+packetLen(0x0353, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x0353, 30)
+#elif PACKETVER >= 20080520
+packetLen(0x0353, 4)
+#elif PACKETVER >= 20080513
+packetLen(0x0353, 2)
+#elif PACKETVER >= 20080507
+packetLen(0x0353, 34)
+#elif PACKETVER >= 20080429
+packetLen(0x0353, 9)
+#elif PACKETVER >= 20080422
+packetLen(0x0353, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0353, 4)
+#elif PACKETVER >= 20080408
+packetLen(0x0353, -1)
+#endif
+
+// Packet: 0x0354
+#if PACKETVER >= 20081217
+packetLen(0x0354, 19)
+#elif PACKETVER >= 20081126
+packetLen(0x0354, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x0354, 2)
+#elif PACKETVER >= 20081112
+packetLen(0x0354, 7)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081008
+packetLen(0x0354, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x0354, 6)
+#elif PACKETVER >= 20080924
+packetLen(0x0354, 36)
+#elif PACKETVER >= 20080910
+packetLen(0x0354, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x0354, 2)
+#elif PACKETVER >= 20080827
+packetLen(0x0354, 4)
+#elif PACKETVER >= 20080820
+packetLen(0x0354, 2)
+#elif PACKETVER >= 20080708
+packetLen(0x0354, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x0354, 23)
+#elif PACKETVER >= 20080624
+packetLen(0x0354, 2)
+#elif PACKETVER >= 20080617
+packetLen(0x0354, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0354, 3)
+#elif PACKETVER >= 20080603
+packetLen(0x0354, 22)
+#elif PACKETVER >= 20080528
+packetLen(0x0354, 10)
+#elif PACKETVER >= 20080520
+packetLen(0x0354, 6)
+#elif PACKETVER >= 20080513
+packetLen(0x0354, 3)
+#elif PACKETVER >= 20080507
+packetLen(0x0354, 6)
+#elif PACKETVER >= 20080429
+packetLen(0x0354, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x0354, 182)
+#elif PACKETVER >= 20080415
+packetLen(0x0354, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x0354, 3)
+#endif
+
+// Packet: 0x0355
+#if PACKETVER >= 20081217
+packetLen(0x0355, 16)
+#elif PACKETVER >= 20081203
+packetLen(0x0355, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x0355, 26)
+#elif PACKETVER >= 20081119
+packetLen(0x0355, 2)
+#elif PACKETVER >= 20081112
+packetLen(0x0355, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x0355, 60)
+#elif PACKETVER >= 20081029
+packetLen(0x0355, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x0355, 20)
+#elif PACKETVER >= 20081015
+packetLen(0x0355, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x0355, 54)
+#elif PACKETVER >= 20080917
+packetLen(0x0355, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x0355, 53)
+#elif PACKETVER >= 20080903
+packetLen(0x0355, 3)
+#elif PACKETVER >= 20080827
+packetLen(0x0355, 10)
+#elif PACKETVER >= 20080730
+packetLen(0x0355, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x0355, 26)
+#elif PACKETVER >= 20080715
+packetLen(0x0355, 7)
+#elif PACKETVER >= 20080708
+packetLen(0x0355, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x0355, 58)
+#elif PACKETVER >= 20080624
+packetLen(0x0355, 30)
+#elif PACKETVER >= 20080617
+packetLen(0x0355, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0355, 7)
+#elif PACKETVER >= 20080603
+packetLen(0x0355, 55)
+#elif PACKETVER >= 20080528
+packetLen(0x0355, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x0355, 6)
+#elif PACKETVER >= 20080513
+packetLen(0x0355, 33)
+#elif PACKETVER >= 20080507
+packetLen(0x0355, 10)
+#elif PACKETVER >= 20080429
+packetLen(0x0355, 36)
+#elif PACKETVER >= 20080422
+packetLen(0x0355, 39)
+#elif PACKETVER >= 20080415
+packetLen(0x0355, 10)
+#elif PACKETVER >= 20080408
+packetLen(0x0355, 2)
+#endif
+
+// Packet: 0x0356
+#if PACKETVER >= 20081119
+packetLen(0x0356, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x0356, 4)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0356, 30)
+#elif PACKETVER >= 20081029
+packetLen(0x0356, 11)
+#elif PACKETVER >= 20081008
+packetLen(0x0356, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x0356, 3)
+#elif PACKETVER >= 20080924
+packetLen(0x0356, 26)
+#elif PACKETVER >= 20080827
+packetLen(0x0356, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x0356, 4)
+#elif PACKETVER >= 20080722
+packetLen(0x0356, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x0356, 8)
+#elif PACKETVER >= 20080617
+packetLen(0x0356, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0356, 29)
+#elif PACKETVER >= 20080603
+packetLen(0x0356, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x0356, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x0356, 27)
+#elif PACKETVER >= 20080513
+packetLen(0x0356, -1)
+#elif PACKETVER >= 20080507
+packetLen(0x0356, 2)
+#elif PACKETVER >= 20080429
+packetLen(0x0356, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x0356, 10)
+#elif PACKETVER >= 20080415
+packetLen(0x0356, 54)
+#elif PACKETVER >= 20080408
+packetLen(0x0356, 57)
+#endif
+
+// Packet: 0x0357
+#if PACKETVER >= 20081126
+packetLen(0x0357, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x0357, 54)
+#elif PACKETVER >= 20081112
+packetLen(0x0357, 2)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0357, 7)
+#elif PACKETVER >= 20081029
+packetLen(0x0357, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x0357, 23)
+#elif PACKETVER >= 20081015
+packetLen(0x0357, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x0357, 36)
+#elif PACKETVER >= 20081001
+packetLen(0x0357, 6)
+#elif PACKETVER >= 20080924
+packetLen(0x0357, 67)
+#elif PACKETVER >= 20080917
+packetLen(0x0357, 3)
+#elif PACKETVER >= 20080910
+packetLen(0x0357, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x0357, 23)
+#elif PACKETVER >= 20080827
+packetLen(0x0357, 6)
+#elif PACKETVER >= 20080730
+packetLen(0x0357, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x0357, 6)
+#elif PACKETVER >= 20080715
+packetLen(0x0357, 282)
+#elif PACKETVER >= 20080708
+packetLen(0x0357, 10)
+#elif PACKETVER >= 20080617
+packetLen(0x0357, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0357, 3)
+#elif PACKETVER >= 20080603
+packetLen(0x0357, 15)
+#elif PACKETVER >= 20080528
+packetLen(0x0357, -1)
+#elif PACKETVER >= 20080520
+packetLen(0x0357, 21)
+#elif PACKETVER >= 20080513
+packetLen(0x0357, 31)
+#elif PACKETVER >= 20080507
+packetLen(0x0357, 22)
+#elif PACKETVER >= 20080429
+packetLen(0x0357, -1)
+#elif PACKETVER >= 20080422
+packetLen(0x0357, 21)
+#elif PACKETVER >= 20080415
+packetLen(0x0357, 10)
+#elif PACKETVER >= 20080408
+packetLen(0x0357, 33)
+#endif
+
+// Packet: 0x0358
+#if PACKETVER >= 20081119
+packetLen(0x0358, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x0358, 13)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0358, 27)
+#elif PACKETVER >= 20080924
+packetLen(0x0358, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x0358, 4)
+#elif PACKETVER >= 20080903
+packetLen(0x0358, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x0358, 6)
+#elif PACKETVER >= 20080730
+packetLen(0x0358, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x0358, 20)
+#elif PACKETVER >= 20080624
+packetLen(0x0358, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0358, 14)
+#elif PACKETVER >= 20080610
+packetLen(0x0358, 5)
+#elif PACKETVER >= 20080603
+packetLen(0x0358, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x0358, 14)
+#elif PACKETVER >= 20080513
+packetLen(0x0358, 6)
+#elif PACKETVER >= 20080507
+packetLen(0x0358, -1)
+#elif PACKETVER >= 20080429
+packetLen(0x0358, 10)
+#elif PACKETVER >= 20080422
+packetLen(0x0358, 3)
+#elif PACKETVER >= 20080415
+packetLen(0x0358, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x0358, 10)
+#endif
+
+// Packet: 0x0359
+#if PACKETVER >= 20081105
+packetLen(0x0359, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x0359, 16)
+#elif PACKETVER >= 20081022
+packetLen(0x0359, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0359, 2)
+#elif PACKETVER >= 20081001
+packetLen(0x0359, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x0359, 11)
+#elif PACKETVER >= 20080917
+packetLen(0x0359, 8)
+#elif PACKETVER >= 20080820
+packetLen(0x0359, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x0359, 6)
+#elif PACKETVER >= 20080806
+packetLen(0x0359, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x0359, 6)
+#elif PACKETVER >= 20080722
+packetLen(0x0359, 3)
+#elif PACKETVER >= 20080715
+packetLen(0x0359, 10)
+#elif PACKETVER >= 20080701
+packetLen(0x0359, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0359, 102)
+#elif PACKETVER >= 20080617
+packetLen(0x0359, 2)
+#elif PACKETVER >= 20080610
+packetLen(0x0359, 6)
+#elif PACKETVER >= 20080603
+packetLen(0x0359, 16)
+#elif PACKETVER >= 20080520
+packetLen(0x0359, -1)
+#elif PACKETVER >= 20080513
+packetLen(0x0359, 3)
+#elif PACKETVER >= 20080507
+packetLen(0x0359, 55)
+#elif PACKETVER >= 20080429
+packetLen(0x0359, 30)
+#elif PACKETVER >= 20080422
+packetLen(0x0359, -1)
+#elif PACKETVER >= 20080415
+packetLen(0x0359, 3)
+#elif PACKETVER >= 20080408
+packetLen(0x0359, -1)
+#endif
+
+// Packet: 0x035a
+#if PACKETVER >= 20081217
+packetLen(0x035a, 12)
+#elif PACKETVER >= 20081119
+packetLen(0x035a, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x035a, 20)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x035a, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x035a, 6)
+#elif PACKETVER >= 20080924
+packetLen(0x035a, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x035a, 53)
+#elif PACKETVER >= 20080910
+packetLen(0x035a, 2)
+#elif PACKETVER >= 20080903
+packetLen(0x035a, 8)
+#elif PACKETVER >= 20080820
+packetLen(0x035a, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x035a, 6)
+#elif PACKETVER >= 20080806
+packetLen(0x035a, 55)
+#elif PACKETVER >= 20080730
+packetLen(0x035a, 6)
+#elif PACKETVER >= 20080722
+packetLen(0x035a, 4)
+#elif PACKETVER >= 20080715
+packetLen(0x035a, 8)
+#elif PACKETVER >= 20080624
+packetLen(0x035a, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x035a, 28)
+#elif PACKETVER >= 20080603
+packetLen(0x035a, 3)
+#elif PACKETVER >= 20080528
+packetLen(0x035a, 4)
+#elif PACKETVER >= 20080520
+packetLen(0x035a, 31)
+#elif PACKETVER >= 20080513
+packetLen(0x035a, -1)
+#elif PACKETVER >= 20080507
+packetLen(0x035a, 282)
+#elif PACKETVER >= 20080429
+packetLen(0x035a, 8)
+#elif PACKETVER >= 20080422
+packetLen(0x035a, 79)
+#elif PACKETVER >= 20080415
+packetLen(0x035a, 3)
+#elif PACKETVER >= 20080408
+packetLen(0x035a, -1)
+#endif
+
+// Packet: 0x035b
+#if PACKETVER >= 20081203
+packetLen(0x035b, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x035b, 3)
+#elif PACKETVER >= 20081119
+packetLen(0x035b, 6)
+#elif PACKETVER >= 20081112
+packetLen(0x035b, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x035b, 31)
+#elif PACKETVER >= 20081022
+packetLen(0x035b, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x035b, 24)
+#elif PACKETVER >= 20081001
+packetLen(0x035b, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x035b, 29)
+#elif PACKETVER >= 20080910
+packetLen(0x035b, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x035b, 3)
+#elif PACKETVER >= 20080827
+packetLen(0x035b, 19)
+#elif PACKETVER >= 20080813
+packetLen(0x035b, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x035b, 11)
+#elif PACKETVER >= 20080730
+packetLen(0x035b, 4)
+#elif PACKETVER >= 20080715
+packetLen(0x035b, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x035b, 3)
+#elif PACKETVER >= 20080701
+packetLen(0x035b, 6)
+#elif PACKETVER >= 20080624
+packetLen(0x035b, 30)
+#elif PACKETVER >= 20080617
+packetLen(0x035b, 29)
+#elif PACKETVER >= 20080610
+packetLen(0x035b, 6)
+#elif PACKETVER >= 20080603
+packetLen(0x035b, 14)
+#elif PACKETVER >= 20080528
+packetLen(0x035b, 16)
+#elif PACKETVER >= 20080520
+packetLen(0x035b, 6)
+#elif PACKETVER >= 20080513
+packetLen(0x035b, 11)
+#elif PACKETVER >= 20080507
+packetLen(0x035b, 9)
+#elif PACKETVER >= 20080429
+packetLen(0x035b, 5)
+#elif PACKETVER >= 20080415
+packetLen(0x035b, -1)
+#elif PACKETVER >= 20080408
+packetLen(0x035b, 3)
+#endif
+
+// Packet: 0x035c
+#if PACKETVER >= 20080520
+packetLen(0x035c, 2) // CZ_OPEN_SIMPLE_CASHSHOP_ITEMLIST
+#endif
+
+// Packet: 0x035d
+#if PACKETVER >= 20080521
+packetLen(0x035d, -1) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+#elif PACKETVER >= 20080520
+packetLen(0x035d, 10) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+#endif
+
+// Packet: 0x035e
+#if PACKETVER >= 20080521
+packetLen(0x035e, 2) // CZ_CLOSE_WINDOW
+#elif PACKETVER >= 20080520
+packetLen(0x035e, -1) // CZ_CLOSE_WINDOW
+#endif
+
+// Packet: 0x035f
+#if PACKETVER >= 20081126
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20081119
+packetLen(0x035f, 59) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20081112
+packetLen(0x035f, 186) // CZ_REQUEST_MOVE2
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x035f, 30) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20081029
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20081008
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20081001
+packetLen(0x035f, 30) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20080924
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20080917
+packetLen(0x035f, 3) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20080910
+packetLen(0x035f, 8) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20080730
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20080722
+packetLen(0x035f, 282) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20080715
+packetLen(0x035f, 9) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20080708
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20080624
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20080617
+packetLen(0x035f, 4) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20080528
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+#endif
+
+// Packet: 0x0360
+#if PACKETVER >= 20081217
+packetLen(0x0360, -1) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20081203
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20081112
+packetLen(0x0360, -1) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20081105
+packetLen(0x0360, 14) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20081029
+packetLen(0x0360, 28) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20081022
+packetLen(0x0360, 26) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20081001
+packetLen(0x0360, -1) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20080924
+packetLen(0x0360, 16) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20080917
+packetLen(0x0360, 5) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20080910
+packetLen(0x0360, 8) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20080903
+packetLen(0x0360, 28) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20080827
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20080820
+packetLen(0x0360, 12) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20080806
+packetLen(0x0360, -1) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20080730
+packetLen(0x0360, 21) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20080722
+packetLen(0x0360, 4) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20080715
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20080708
+packetLen(0x0360, -1) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20080701
+packetLen(0x0360, 10) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20080624
+packetLen(0x0360, 11) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20080528
+packetLen(0x0360, -1) // CZ_REQUEST_TIME2
+#endif
+
+// Packet: 0x0361
+#if PACKETVER >= 20081217
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20081203
+packetLen(0x0361, 8) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20081126
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20081119
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20081112
+packetLen(0x0361, 9) // CZ_CHANGE_DIRECTION2
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0361, 6) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20081029
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20081022
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20081015
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20081008
+packetLen(0x0361, 6) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20080910
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20080903
+packetLen(0x0361, 8) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20080827
+packetLen(0x0361, 60) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20080813
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20080806
+packetLen(0x0361, 6) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20080730
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20080722
+packetLen(0x0361, 81) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20080708
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20080701
+packetLen(0x0361, 27) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20080624
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20080617
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20080528
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#endif
+
+// Packet: 0x0362
+#if PACKETVER >= 20081112
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20081105
+packetLen(0x0362, 5) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20081029
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20081022
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20081008
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20081001
+packetLen(0x0362, 5) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20080903
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20080827
+packetLen(0x0362, 11) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20080820
+packetLen(0x0362, 34) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20080813
+packetLen(0x0362, 3) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20080806
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20080730
+packetLen(0x0362, 7) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20080722
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20080715
+packetLen(0x0362, 66) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20080708
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20080701
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20080624
+packetLen(0x0362, 4) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20080528
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#endif
+
+// Packet: 0x0363
+#if PACKETVER >= 20081203
+packetLen(0x0363, -1) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20081126
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20081112
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x0363, -1) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20081015
+packetLen(0x0363, 17) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20081008
+packetLen(0x0363, -1) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20081001
+packetLen(0x0363, 5) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20080924
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20080917
+packetLen(0x0363, 13) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20080910
+packetLen(0x0363, -1) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20080903
+packetLen(0x0363, 26) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20080813
+packetLen(0x0363, -1) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20080806
+packetLen(0x0363, 5) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20080730
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20080715
+packetLen(0x0363, -1) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20080708
+packetLen(0x0363, 4) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20080701
+packetLen(0x0363, -1) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20080624
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20080617
+packetLen(0x0363, 58) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20080528
+packetLen(0x0363, -1) // CZ_ITEM_THROW2
+#endif
+
+// Packet: 0x0364
+#if PACKETVER >= 20081203
+packetLen(0x0364, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20081126
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20081119
+packetLen(0x0364, 4) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20081112
+packetLen(0x0364, 10) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0364, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20081029
+packetLen(0x0364, 29) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20081022
+packetLen(0x0364, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20081015
+packetLen(0x0364, 11) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20081008
+packetLen(0x0364, 22) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20081001
+packetLen(0x0364, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20080924
+packetLen(0x0364, 10) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20080917
+packetLen(0x0364, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20080910
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20080903
+packetLen(0x0364, 182) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20080708
+packetLen(0x0364, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20080701
+packetLen(0x0364, 43) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20080624
+packetLen(0x0364, 5) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20080617
+packetLen(0x0364, 15) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20080528
+packetLen(0x0364, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#endif
+
+// Packet: 0x0365
+#if PACKETVER >= 20081217
+packetLen(0x0365, 4) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20081203
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20081126
+packetLen(0x0365, 4) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20081119
+packetLen(0x0365, 6) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20081112
+packetLen(0x0365, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0365, 6) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20081029
+packetLen(0x0365, 9) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20081001
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20080924
+packetLen(0x0365, 86) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20080917
+packetLen(0x0365, 13) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20080910
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20080903
+packetLen(0x0365, 7) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20080820
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20080813
+packetLen(0x0365, 30) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20080806
+packetLen(0x0365, 79) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20080708
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20080701
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20080528
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#endif
+
+// Packet: 0x0366
+#if PACKETVER >= 20081105
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20081029
+packetLen(0x0366, 6) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20081015
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20081008
+packetLen(0x0366, 14) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20081001
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20080924
+packetLen(0x0366, 14) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20080910
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20080903
+packetLen(0x0366, 4) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20080827
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20080820
+packetLen(0x0366, 6) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20080715
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20080708
+packetLen(0x0366, 71) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20080701
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20080624
+packetLen(0x0366, 67) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20080528
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#endif
+
+// Packet: 0x0367
+#if PACKETVER >= 20081217
+packetLen(0x0367, 6) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20081105
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20081029
+packetLen(0x0367, 6) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20081022
+packetLen(0x0367, 10) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20081015
+packetLen(0x0367, 58) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20081001
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20080924
+packetLen(0x0367, 11) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20080917
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20080910
+packetLen(0x0367, 30) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20080827
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20080820
+packetLen(0x0367, 282) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20080813
+packetLen(0x0367, 59) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20080708
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20080624
+packetLen(0x0367, 10) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20080617
+packetLen(0x0367, 29) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20080528
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#endif
+
+// Packet: 0x0368
+#if PACKETVER >= 20081217
+packetLen(0x0368, 4) // CZ_REQNAME2
+#elif PACKETVER >= 20081126
+packetLen(0x0368, -1) // CZ_REQNAME2
+#elif PACKETVER >= 20081119
+packetLen(0x0368, 34) // CZ_REQNAME2
+#elif PACKETVER >= 20081105
+packetLen(0x0368, -1) // CZ_REQNAME2
+#elif PACKETVER >= 20081029
+packetLen(0x0368, 8) // CZ_REQNAME2
+#elif PACKETVER >= 20081022
+packetLen(0x0368, 10) // CZ_REQNAME2
+#elif PACKETVER >= 20081008
+packetLen(0x0368, -1) // CZ_REQNAME2
+#elif PACKETVER >= 20081001
+packetLen(0x0368, 3) // CZ_REQNAME2
+#elif PACKETVER >= 20080924
+packetLen(0x0368, 13) // CZ_REQNAME2
+#elif PACKETVER >= 20080917
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20080910
+packetLen(0x0368, -1) // CZ_REQNAME2
+#elif PACKETVER >= 20080903
+packetLen(0x0368, 43) // CZ_REQNAME2
+#elif PACKETVER >= 20080827
+packetLen(0x0368, 21) // CZ_REQNAME2
+#elif PACKETVER >= 20080820
+packetLen(0x0368, 4) // CZ_REQNAME2
+#elif PACKETVER >= 20080806
+packetLen(0x0368, -1) // CZ_REQNAME2
+#elif PACKETVER >= 20080730
+packetLen(0x0368, 16) // CZ_REQNAME2
+#elif PACKETVER >= 20080722
+packetLen(0x0368, -1) // CZ_REQNAME2
+#elif PACKETVER >= 20080715
+packetLen(0x0368, 3) // CZ_REQNAME2
+#elif PACKETVER >= 20080528
+packetLen(0x0368, -1) // CZ_REQNAME2
+#endif
+
+// Packet: 0x0369
+#if PACKETVER >= 20081126
+packetLen(0x0369, -1) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20081119
+packetLen(0x0369, 10) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20081112
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x0369, -1) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20081022
+packetLen(0x0369, 53) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20080924
+packetLen(0x0369, -1) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20080917
+packetLen(0x0369, 15) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20080910
+packetLen(0x0369, -1) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20080903
+packetLen(0x0369, 33) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20080827
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20080813
+packetLen(0x0369, -1) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20080806
+packetLen(0x0369, 30) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20080722
+packetLen(0x0369, -1) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20080715
+packetLen(0x0369, 29) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20080708
+packetLen(0x0369, 39) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20080701
+packetLen(0x0369, 26) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20080624
+packetLen(0x0369, 28) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20080528
+packetLen(0x0369, -1) // CZ_REQNAME_BYGID2
+#endif
+
+// Packet: 0x036a
+#if PACKETVER >= 20081217
+packetLen(0x036a, 6)
+#elif PACKETVER >= 20081119
+packetLen(0x036a, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x036a, 2)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x036a, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x036a, 32)
+#elif PACKETVER >= 20081001
+packetLen(0x036a, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x036a, 26)
+#elif PACKETVER >= 20080917
+packetLen(0x036a, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x036a, 68)
+#elif PACKETVER >= 20080903
+packetLen(0x036a, 54)
+#elif PACKETVER >= 20080827
+packetLen(0x036a, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x036a, 12)
+#elif PACKETVER >= 20080813
+packetLen(0x036a, 30)
+#elif PACKETVER >= 20080730
+packetLen(0x036a, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x036a, 26)
+#elif PACKETVER >= 20080715
+packetLen(0x036a, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x036a, 2)
+#elif PACKETVER >= 20080701
+packetLen(0x036a, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x036a, 2)
+#elif PACKETVER >= 20080528
+packetLen(0x036a, -1)
+#endif
+
+// Packet: 0x036b
+#if PACKETVER >= 20081217
+packetLen(0x036b, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x036b, 7)
+#elif PACKETVER >= 20081112
+packetLen(0x036b, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x036b, 97)
+#elif PACKETVER >= 20081029
+packetLen(0x036b, 8)
+#elif PACKETVER >= 20081015
+packetLen(0x036b, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x036b, 10)
+#elif PACKETVER >= 20080924
+packetLen(0x036b, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x036b, 8)
+#elif PACKETVER >= 20080910
+packetLen(0x036b, 32)
+#elif PACKETVER >= 20080903
+packetLen(0x036b, 4)
+#elif PACKETVER >= 20080708
+packetLen(0x036b, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x036b, 6)
+#elif PACKETVER >= 20080624
+packetLen(0x036b, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x036b, 28)
+#elif PACKETVER >= 20080528
+packetLen(0x036b, -1)
+#endif
+
+// Packet: 0x036c
+#if PACKETVER >= 20081217
+packetLen(0x036c, 5)
+#elif PACKETVER >= 20081119
+packetLen(0x036c, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x036c, 6)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x036c, 4)
+#elif PACKETVER >= 20081029
+packetLen(0x036c, 10)
+#elif PACKETVER >= 20081022
+packetLen(0x036c, 35)
+#elif PACKETVER >= 20081015
+packetLen(0x036c, 42)
+#elif PACKETVER >= 20081001
+packetLen(0x036c, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x036c, 6)
+#elif PACKETVER >= 20080917
+packetLen(0x036c, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x036c, 8)
+#elif PACKETVER >= 20080903
+packetLen(0x036c, 4)
+#elif PACKETVER >= 20080827
+packetLen(0x036c, 11)
+#elif PACKETVER >= 20080820
+packetLen(0x036c, 8)
+#elif PACKETVER >= 20080813
+packetLen(0x036c, 32)
+#elif PACKETVER >= 20080806
+packetLen(0x036c, 6)
+#elif PACKETVER >= 20080722
+packetLen(0x036c, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x036c, 9)
+#elif PACKETVER >= 20080708
+packetLen(0x036c, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x036c, 4)
+#elif PACKETVER >= 20080624
+packetLen(0x036c, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x036c, -1)
+#endif
+
+// Packet: 0x036d
+#if PACKETVER >= 20081217
+packetLen(0x036d, 2)
+#elif PACKETVER >= 20081112
+packetLen(0x036d, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x036d, 6)
+#elif PACKETVER >= 20081022
+packetLen(0x036d, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x036d, 16)
+#elif PACKETVER >= 20081001
+packetLen(0x036d, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x036d, 60)
+#elif PACKETVER >= 20080917
+packetLen(0x036d, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x036d, 2)
+#elif PACKETVER >= 20080903
+packetLen(0x036d, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x036d, 9)
+#elif PACKETVER >= 20080820
+packetLen(0x036d, 33)
+#elif PACKETVER >= 20080813
+packetLen(0x036d, 6)
+#elif PACKETVER >= 20080806
+packetLen(0x036d, 20)
+#elif PACKETVER >= 20080730
+packetLen(0x036d, 10)
+#elif PACKETVER >= 20080708
+packetLen(0x036d, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x036d, 5)
+#elif PACKETVER >= 20080624
+packetLen(0x036d, 21)
+#elif PACKETVER >= 20080617
+packetLen(0x036d, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x036d, -1)
+#endif
+
+// Packet: 0x036e
+#if PACKETVER >= 20081217
+packetLen(0x036e, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x036e, 2)
+#elif PACKETVER >= 20081119
+packetLen(0x036e, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x036e, 53)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x036e, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x036e, 31)
+#elif PACKETVER >= 20080917
+packetLen(0x036e, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x036e, 2)
+#elif PACKETVER >= 20080903
+packetLen(0x036e, 6)
+#elif PACKETVER >= 20080813
+packetLen(0x036e, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x036e, 2)
+#elif PACKETVER >= 20080722
+packetLen(0x036e, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x036e, 6)
+#elif PACKETVER >= 20080624
+packetLen(0x036e, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x036e, 3)
+#elif PACKETVER >= 20080528
+packetLen(0x036e, -1)
+#endif
+
+// Packet: 0x036f
+#if PACKETVER >= 20081217
+packetLen(0x036f, 28)
+#elif PACKETVER >= 20081203
+packetLen(0x036f, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x036f, 8)
+#elif PACKETVER >= 20081119
+packetLen(0x036f, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x036f, 4)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x036f, 6)
+#elif PACKETVER >= 20081022
+packetLen(0x036f, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x036f, 14)
+#elif PACKETVER >= 20081008
+packetLen(0x036f, 20)
+#elif PACKETVER >= 20081001
+packetLen(0x036f, 7)
+#elif PACKETVER >= 20080910
+packetLen(0x036f, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x036f, 6)
+#elif PACKETVER >= 20080813
+packetLen(0x036f, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x036f, 5)
+#elif PACKETVER >= 20080730
+packetLen(0x036f, 30)
+#elif PACKETVER >= 20080722
+packetLen(0x036f, 114)
+#elif PACKETVER >= 20080708
+packetLen(0x036f, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x036f, 3)
+#elif PACKETVER >= 20080624
+packetLen(0x036f, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x036f, -1)
+#endif
+
+// Packet: 0x0370
+#if PACKETVER >= 20081217
+packetLen(0x0370, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x0370, 4)
+#elif PACKETVER >= 20081126
+packetLen(0x0370, 11)
+#elif PACKETVER >= 20081119
+packetLen(0x0370, 19)
+#elif PACKETVER >= 20081112
+packetLen(0x0370, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x0370, 8)
+#elif PACKETVER >= 20081029
+packetLen(0x0370, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x0370, 8)
+#elif PACKETVER >= 20081001
+packetLen(0x0370, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x0370, 31)
+#elif PACKETVER >= 20080910
+packetLen(0x0370, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x0370, 16)
+#elif PACKETVER >= 20080806
+packetLen(0x0370, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x0370, 2)
+#elif PACKETVER >= 20080708
+packetLen(0x0370, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x0370, 4)
+#elif PACKETVER >= 20080624
+packetLen(0x0370, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0370, 10)
+#elif PACKETVER >= 20080528
+packetLen(0x0370, -1)
+#endif
+
+// Packet: 0x0371
+#if PACKETVER >= 20081203
+packetLen(0x0371, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x0371, 282)
+#elif PACKETVER >= 20081105
+packetLen(0x0371, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x0371, 55)
+#elif PACKETVER >= 20080924
+packetLen(0x0371, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x0371, 6)
+#elif PACKETVER >= 20080910
+packetLen(0x0371, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x0371, 282)
+#elif PACKETVER >= 20080827
+packetLen(0x0371, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0371, 20)
+#elif PACKETVER >= 20080813
+packetLen(0x0371, 8)
+#elif PACKETVER >= 20080806
+packetLen(0x0371, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x0371, 55)
+#elif PACKETVER >= 20080715
+packetLen(0x0371, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x0371, 14)
+#elif PACKETVER >= 20080701
+packetLen(0x0371, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x0371, -1)
+#endif
+
+// Packet: 0x0372
+#if PACKETVER >= 20081203
+packetLen(0x0372, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x0372, 23)
+#elif PACKETVER >= 20081119
+packetLen(0x0372, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x0372, 17)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x0372, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x0372, 6)
+#elif PACKETVER >= 20081015
+packetLen(0x0372, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x0372, 66)
+#elif PACKETVER >= 20080917
+packetLen(0x0372, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x0372, 23)
+#elif PACKETVER >= 20080903
+packetLen(0x0372, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x0372, 10)
+#elif PACKETVER >= 20080820
+packetLen(0x0372, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x0372, 15)
+#elif PACKETVER >= 20080730
+packetLen(0x0372, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x0372, 67)
+#elif PACKETVER >= 20080715
+packetLen(0x0372, 2)
+#elif PACKETVER >= 20080708
+packetLen(0x0372, 34)
+#elif PACKETVER >= 20080701
+packetLen(0x0372, 4)
+#elif PACKETVER >= 20080528
+packetLen(0x0372, -1)
+#endif
+
+// Packet: 0x0373
+#if PACKETVER >= 20081217
+packetLen(0x0373, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x0373, 12)
+#elif PACKETVER >= 20081126
+packetLen(0x0373, 4)
+#elif PACKETVER >= 20081008
+packetLen(0x0373, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x0373, 10)
+#elif PACKETVER >= 20080827
+packetLen(0x0373, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0373, 14)
+#elif PACKETVER >= 20080722
+packetLen(0x0373, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x0373, 33)
+#elif PACKETVER >= 20080708
+packetLen(0x0373, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x0373, 9)
+#elif PACKETVER >= 20080624
+packetLen(0x0373, 86)
+#elif PACKETVER >= 20080528
+packetLen(0x0373, -1)
+#endif
+
+// Packet: 0x0374
+#if PACKETVER >= 20081217
+packetLen(0x0374, 36)
+#elif PACKETVER >= 20081126
+packetLen(0x0374, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x0374, 3)
+#elif PACKETVER >= 20081029
+packetLen(0x0374, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x0374, 4)
+#elif PACKETVER >= 20081001
+packetLen(0x0374, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x0374, 68)
+#elif PACKETVER >= 20080917
+packetLen(0x0374, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x0374, 22)
+#elif PACKETVER >= 20080903
+packetLen(0x0374, 14)
+#elif PACKETVER >= 20080827
+packetLen(0x0374, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0374, 17)
+#elif PACKETVER >= 20080813
+packetLen(0x0374, 3)
+#elif PACKETVER >= 20080806
+packetLen(0x0374, 90)
+#elif PACKETVER >= 20080730
+packetLen(0x0374, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x0374, 8)
+#elif PACKETVER >= 20080708
+packetLen(0x0374, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x0374, 21)
+#elif PACKETVER >= 20080528
+packetLen(0x0374, -1)
+#endif
+
+// Packet: 0x0375
+#if PACKETVER >= 20081217
+packetLen(0x0375, 6)
+#elif PACKETVER >= 20081203
+packetLen(0x0375, 29)
+#elif PACKETVER >= 20081126
+packetLen(0x0375, 8)
+#elif PACKETVER >= 20081119
+packetLen(0x0375, 15)
+#elif PACKETVER >= 20081112
+packetLen(0x0375, 5)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x0375, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0375, 28)
+#elif PACKETVER >= 20081008
+packetLen(0x0375, 4)
+#elif PACKETVER >= 20080924
+packetLen(0x0375, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x0375, 3)
+#elif PACKETVER >= 20080827
+packetLen(0x0375, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0375, 8)
+#elif PACKETVER >= 20080813
+packetLen(0x0375, 3)
+#elif PACKETVER >= 20080806
+packetLen(0x0375, 6)
+#elif PACKETVER >= 20080730
+packetLen(0x0375, 11)
+#elif PACKETVER >= 20080722
+packetLen(0x0375, 5)
+#elif PACKETVER >= 20080624
+packetLen(0x0375, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0375, 2)
+#elif PACKETVER >= 20080528
+packetLen(0x0375, -1)
+#endif
+
+// Packet: 0x0376
+#if PACKETVER >= 20081217
+packetLen(0x0376, 10)
+#elif PACKETVER >= 20081119
+packetLen(0x0376, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x0376, 26)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081015
+packetLen(0x0376, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x0376, 31)
+#elif PACKETVER >= 20081001
+packetLen(0x0376, 6)
+#elif PACKETVER >= 20080924
+packetLen(0x0376, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x0376, 6)
+#elif PACKETVER >= 20080910
+packetLen(0x0376, 31)
+#elif PACKETVER >= 20080903
+packetLen(0x0376, 6)
+#elif PACKETVER >= 20080827
+packetLen(0x0376, 10)
+#elif PACKETVER >= 20080820
+packetLen(0x0376, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x0376, 3)
+#elif PACKETVER >= 20080722
+packetLen(0x0376, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x0376, 6)
+#elif PACKETVER >= 20080708
+packetLen(0x0376, 12)
+#elif PACKETVER >= 20080528
+packetLen(0x0376, -1)
+#endif
+
+// Packet: 0x0377
+#if PACKETVER >= 20081203
+packetLen(0x0377, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x0377, 8)
+#elif PACKETVER >= 20081119
+packetLen(0x0377, 33)
+#elif PACKETVER >= 20081112
+packetLen(0x0377, 5)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x0377, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0377, 6)
+#elif PACKETVER >= 20080910
+packetLen(0x0377, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x0377, 3)
+#elif PACKETVER >= 20080827
+packetLen(0x0377, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0377, 60)
+#elif PACKETVER >= 20080806
+packetLen(0x0377, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x0377, 8)
+#elif PACKETVER >= 20080722
+packetLen(0x0377, 3)
+#elif PACKETVER >= 20080528
+packetLen(0x0377, -1)
+#endif
+
+// Packet: 0x0378
+#if PACKETVER >= 20081126
+packetLen(0x0378, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x0378, 6)
+#elif PACKETVER >= 20081112
+packetLen(0x0378, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x0378, 7)
+#elif PACKETVER >= 20081022
+packetLen(0x0378, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0378, 4)
+#elif PACKETVER >= 20081008
+packetLen(0x0378, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x0378, 2)
+#elif PACKETVER >= 20080924
+packetLen(0x0378, 3)
+#elif PACKETVER >= 20080910
+packetLen(0x0378, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x0378, 5)
+#elif PACKETVER >= 20080827
+packetLen(0x0378, 4)
+#elif PACKETVER >= 20080820
+packetLen(0x0378, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x0378, 2)
+#elif PACKETVER >= 20080806
+packetLen(0x0378, 22)
+#elif PACKETVER >= 20080715
+packetLen(0x0378, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x0378, 30)
+#elif PACKETVER >= 20080528
+packetLen(0x0378, -1)
+#endif
+
+// Packet: 0x0379
+#if PACKETVER >= 20081126
+packetLen(0x0379, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x0379, 10)
+#elif PACKETVER >= 20081105
+packetLen(0x0379, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x0379, 34)
+#elif PACKETVER >= 20081015
+packetLen(0x0379, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x0379, 28)
+#elif PACKETVER >= 20080917
+packetLen(0x0379, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x0379, 54)
+#elif PACKETVER >= 20080820
+packetLen(0x0379, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x0379, 9)
+#elif PACKETVER >= 20080806
+packetLen(0x0379, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x0379, 6)
+#elif PACKETVER >= 20080722
+packetLen(0x0379, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x0379, 4)
+#elif PACKETVER >= 20080708
+packetLen(0x0379, 6)
+#elif PACKETVER >= 20080701
+packetLen(0x0379, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0379, 10)
+#elif PACKETVER >= 20080617
+packetLen(0x0379, 2)
+#elif PACKETVER >= 20080528
+packetLen(0x0379, -1)
+#endif
+
+// Packet: 0x037a
+#if PACKETVER >= 20081217
+packetLen(0x037a, 3)
+#elif PACKETVER >= 20081203
+packetLen(0x037a, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x037a, 2)
+#elif PACKETVER >= 20081119
+packetLen(0x037a, 6)
+#elif PACKETVER >= 20081112
+packetLen(0x037a, 71)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x037a, 8)
+#elif PACKETVER >= 20081029
+packetLen(0x037a, 15)
+#elif PACKETVER >= 20080903
+packetLen(0x037a, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x037a, 30)
+#elif PACKETVER >= 20080813
+packetLen(0x037a, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x037a, 10)
+#elif PACKETVER >= 20080730
+packetLen(0x037a, 30)
+#elif PACKETVER >= 20080722
+packetLen(0x037a, 4)
+#elif PACKETVER >= 20080715
+packetLen(0x037a, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x037a, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x037a, -1)
+#endif
+
+// Packet: 0x037b
+#if PACKETVER >= 20081126
+packetLen(0x037b, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x037b, 10)
+#elif PACKETVER >= 20081105
+packetLen(0x037b, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x037b, 4)
+#elif PACKETVER >= 20081022
+packetLen(0x037b, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x037b, 6)
+#elif PACKETVER >= 20081001
+packetLen(0x037b, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x037b, 2)
+#elif PACKETVER >= 20080917
+packetLen(0x037b, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x037b, 39)
+#elif PACKETVER >= 20080903
+packetLen(0x037b, 22)
+#elif PACKETVER >= 20080827
+packetLen(0x037b, 26)
+#elif PACKETVER >= 20080820
+packetLen(0x037b, 6)
+#elif PACKETVER >= 20080813
+packetLen(0x037b, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x037b, 10)
+#elif PACKETVER >= 20080722
+packetLen(0x037b, 8)
+#elif PACKETVER >= 20080715
+packetLen(0x037b, 81)
+#elif PACKETVER >= 20080708
+packetLen(0x037b, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x037b, 6)
+#elif PACKETVER >= 20080624
+packetLen(0x037b, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x037b, 11)
+#elif PACKETVER >= 20080528
+packetLen(0x037b, -1)
+#endif
+
+// Packet: 0x037c
+#if PACKETVER >= 20081217
+packetLen(0x037c, 3)
+#elif PACKETVER >= 20081119
+packetLen(0x037c, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x037c, 6)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x037c, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x037c, 5)
+#elif PACKETVER >= 20081001
+packetLen(0x037c, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x037c, 6)
+#elif PACKETVER >= 20080903
+packetLen(0x037c, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x037c, 26)
+#elif PACKETVER >= 20080806
+packetLen(0x037c, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x037c, 6)
+#elif PACKETVER >= 20080715
+packetLen(0x037c, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x037c, 4)
+#elif PACKETVER >= 20080701
+packetLen(0x037c, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x037c, 10)
+#elif PACKETVER >= 20080617
+packetLen(0x037c, 53)
+#elif PACKETVER >= 20080528
+packetLen(0x037c, -1)
+#endif
+
+// Packet: 0x037d
+#if PACKETVER >= 20081126
+packetLen(0x037d, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x037d, 27)
+#elif PACKETVER >= 20081029
+packetLen(0x037d, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x037d, 17)
+#elif PACKETVER >= 20081001
+packetLen(0x037d, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x037d, 282)
+#elif PACKETVER >= 20080903
+packetLen(0x037d, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x037d, 4)
+#elif PACKETVER >= 20080722
+packetLen(0x037d, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x037d, 5)
+#elif PACKETVER >= 20080708
+packetLen(0x037d, 60)
+#elif PACKETVER >= 20080701
+packetLen(0x037d, 3)
+#elif PACKETVER >= 20080528
+packetLen(0x037d, -1)
+#endif
+
+// Packet: 0x037e
+#if PACKETVER >= 20081217
+packetLen(0x037e, 4)
+#elif PACKETVER >= 20081203
+packetLen(0x037e, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x037e, 6)
+#elif PACKETVER >= 20081119
+packetLen(0x037e, 3)
+#elif PACKETVER >= 20081008
+packetLen(0x037e, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x037e, 2)
+#elif PACKETVER >= 20080924
+packetLen(0x037e, 26)
+#elif PACKETVER >= 20080917
+packetLen(0x037e, 67)
+#elif PACKETVER >= 20080910
+packetLen(0x037e, 5)
+#elif PACKETVER >= 20080903
+packetLen(0x037e, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x037e, 9)
+#elif PACKETVER >= 20080820
+packetLen(0x037e, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x037e, 114)
+#elif PACKETVER >= 20080715
+packetLen(0x037e, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x037e, 10)
+#elif PACKETVER >= 20080701
+packetLen(0x037e, 8)
+#elif PACKETVER >= 20080624
+packetLen(0x037e, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x037e, -1)
+#endif
+
+// Packet: 0x037f
+#if PACKETVER >= 20081217
+packetLen(0x037f, 22)
+#elif PACKETVER >= 20081126
+packetLen(0x037f, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x037f, 26)
+#elif PACKETVER >= 20081112
+packetLen(0x037f, 10)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081008
+packetLen(0x037f, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x037f, 68)
+#elif PACKETVER >= 20080917
+packetLen(0x037f, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x037f, 6)
+#elif PACKETVER >= 20080903
+packetLen(0x037f, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x037f, 10)
+#elif PACKETVER >= 20080820
+packetLen(0x037f, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x037f, 10)
+#elif PACKETVER >= 20080722
+packetLen(0x037f, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x037f, 30)
+#elif PACKETVER >= 20080701
+packetLen(0x037f, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x037f, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x037f, -1)
+#endif
+
+// Packet: 0x0380
+#if PACKETVER >= 20081126
+packetLen(0x0380, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x0380, 4)
+#elif PACKETVER >= 20081112
+packetLen(0x0380, 7)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0380, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x0380, 5)
+#elif PACKETVER >= 20081022
+packetLen(0x0380, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0380, 282)
+#elif PACKETVER >= 20081008
+packetLen(0x0380, 3)
+#elif PACKETVER >= 20080910
+packetLen(0x0380, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x0380, 28)
+#elif PACKETVER >= 20080827
+packetLen(0x0380, 30)
+#elif PACKETVER >= 20080820
+packetLen(0x0380, 2)
+#elif PACKETVER >= 20080730
+packetLen(0x0380, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x0380, 32)
+#elif PACKETVER >= 20080708
+packetLen(0x0380, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x0380, 11)
+#elif PACKETVER >= 20080528
+packetLen(0x0380, -1)
+#endif
+
+// Packet: 0x0381
+#if PACKETVER >= 20081217
+packetLen(0x0381, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x0381, 14)
+#elif PACKETVER >= 20081119
+packetLen(0x0381, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x0381, 8)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0381, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x0381, 53)
+#elif PACKETVER >= 20081022
+packetLen(0x0381, 6)
+#elif PACKETVER >= 20080924
+packetLen(0x0381, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x0381, 10)
+#elif PACKETVER >= 20080903
+packetLen(0x0381, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x0381, 9)
+#elif PACKETVER >= 20080820
+packetLen(0x0381, 35)
+#elif PACKETVER >= 20080813
+packetLen(0x0381, 6)
+#elif PACKETVER >= 20080806
+packetLen(0x0381, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x0381, 28)
+#elif PACKETVER >= 20080624
+packetLen(0x0381, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0381, 14)
+#elif PACKETVER >= 20080528
+packetLen(0x0381, -1)
+#endif
+
+// Packet: 0x0382
+#if PACKETVER >= 20081217
+packetLen(0x0382, 2)
+#elif PACKETVER >= 20081203
+packetLen(0x0382, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x0382, 9)
+#elif PACKETVER >= 20081119
+packetLen(0x0382, 54)
+#elif PACKETVER >= 20081022
+packetLen(0x0382, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0382, 14)
+#elif PACKETVER >= 20081008
+packetLen(0x0382, 2)
+#elif PACKETVER >= 20080917
+packetLen(0x0382, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x0382, 10)
+#elif PACKETVER >= 20080903
+packetLen(0x0382, 14)
+#elif PACKETVER >= 20080820
+packetLen(0x0382, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x0382, 10)
+#elif PACKETVER >= 20080730
+packetLen(0x0382, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x0382, 14)
+#elif PACKETVER >= 20080715
+packetLen(0x0382, 2)
+#elif PACKETVER >= 20080708
+packetLen(0x0382, 3)
+#elif PACKETVER >= 20080624
+packetLen(0x0382, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0382, 2)
+#elif PACKETVER >= 20080528
+packetLen(0x0382, -1)
+#endif
+
+// Packet: 0x0383
+#if PACKETVER >= 20081217
+packetLen(0x0383, 3)
+#elif PACKETVER >= 20081029
+packetLen(0x0383, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x0383, 114)
+#elif PACKETVER >= 20080910
+packetLen(0x0383, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x0383, 18)
+#elif PACKETVER >= 20080827
+packetLen(0x0383, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0383, 30)
+#elif PACKETVER >= 20080813
+packetLen(0x0383, 57)
+#elif PACKETVER >= 20080806
+packetLen(0x0383, 4)
+#elif PACKETVER >= 20080722
+packetLen(0x0383, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x0383, 58)
+#elif PACKETVER >= 20080624
+packetLen(0x0383, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0383, 5)
+#elif PACKETVER >= 20080528
+packetLen(0x0383, -1)
+#endif
+
+// Packet: 0x0384
+#if PACKETVER >= 20081126
+packetLen(0x0384, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x0384, 2)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0384, 7)
+#elif PACKETVER >= 20081022
+packetLen(0x0384, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0384, 54)
+#elif PACKETVER >= 20081001
+packetLen(0x0384, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x0384, 34)
+#elif PACKETVER >= 20080917
+packetLen(0x0384, 7)
+#elif PACKETVER >= 20080910
+packetLen(0x0384, 2)
+#elif PACKETVER >= 20080827
+packetLen(0x0384, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0384, 14)
+#elif PACKETVER >= 20080813
+packetLen(0x0384, 9)
+#elif PACKETVER >= 20080806
+packetLen(0x0384, 4)
+#elif PACKETVER >= 20080722
+packetLen(0x0384, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x0384, 11)
+#elif PACKETVER >= 20080708
+packetLen(0x0384, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x0384, 30)
+#elif PACKETVER >= 20080624
+packetLen(0x0384, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x0384, -1)
+#endif
+
+// Packet: 0x0385
+#if PACKETVER >= 20081217
+packetLen(0x0385, 2)
+#elif PACKETVER >= 20081203
+packetLen(0x0385, 53)
+#elif PACKETVER >= 20081029
+packetLen(0x0385, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x0385, 39)
+#elif PACKETVER >= 20081001
+packetLen(0x0385, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x0385, 6)
+#elif PACKETVER >= 20080903
+packetLen(0x0385, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x0385, 8)
+#elif PACKETVER >= 20080820
+packetLen(0x0385, 28)
+#elif PACKETVER >= 20080813
+packetLen(0x0385, 2)
+#elif PACKETVER >= 20080806
+packetLen(0x0385, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x0385, 6)
+#elif PACKETVER >= 20080722
+packetLen(0x0385, 2)
+#elif PACKETVER >= 20080715
+packetLen(0x0385, 67)
+#elif PACKETVER >= 20080708
+packetLen(0x0385, 97)
+#elif PACKETVER >= 20080624
+packetLen(0x0385, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0385, 4)
+#elif PACKETVER >= 20080528
+packetLen(0x0385, -1)
+#endif
+
+// Packet: 0x0386
+#if PACKETVER >= 20081217
+packetLen(0x0386, 30)
+#elif PACKETVER >= 20081203
+packetLen(0x0386, 2)
+#elif PACKETVER >= 20081029
+packetLen(0x0386, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x0386, 4)
+#elif PACKETVER >= 20081015
+packetLen(0x0386, 23)
+#elif PACKETVER >= 20081001
+packetLen(0x0386, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x0386, 43)
+#elif PACKETVER >= 20080917
+packetLen(0x0386, 22)
+#elif PACKETVER >= 20080730
+packetLen(0x0386, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x0386, 8)
+#elif PACKETVER >= 20080715
+packetLen(0x0386, 2)
+#elif PACKETVER >= 20080708
+packetLen(0x0386, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x0386, 6)
+#elif PACKETVER >= 20080624
+packetLen(0x0386, 9)
+#elif PACKETVER >= 20080617
+packetLen(0x0386, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x0386, -1)
+#endif
+
+// Packet: 0x0387
+#if PACKETVER >= 20081217
+packetLen(0x0387, 71)
+#elif PACKETVER >= 20081203
+packetLen(0x0387, 8)
+#elif PACKETVER >= 20081126
+packetLen(0x0387, 90)
+#elif PACKETVER >= 20081119
+packetLen(0x0387, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x0387, 60)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0387, 8)
+#elif PACKETVER >= 20081029
+packetLen(0x0387, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x0387, 282)
+#elif PACKETVER >= 20081015
+packetLen(0x0387, 4)
+#elif PACKETVER >= 20081008
+packetLen(0x0387, 8)
+#elif PACKETVER >= 20081001
+packetLen(0x0387, 53)
+#elif PACKETVER >= 20080924
+packetLen(0x0387, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x0387, 28)
+#elif PACKETVER >= 20080910
+packetLen(0x0387, 4)
+#elif PACKETVER >= 20080903
+packetLen(0x0387, 7)
+#elif PACKETVER >= 20080827
+packetLen(0x0387, 114)
+#elif PACKETVER >= 20080722
+packetLen(0x0387, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x0387, 17)
+#elif PACKETVER >= 20080708
+packetLen(0x0387, 4)
+#elif PACKETVER >= 20080701
+packetLen(0x0387, 22)
+#elif PACKETVER >= 20080624
+packetLen(0x0387, 30)
+#elif PACKETVER >= 20080617
+packetLen(0x0387, 21)
+#elif PACKETVER >= 20080528
+packetLen(0x0387, -1)
+#endif
+
+// Packet: 0x0388
+#if PACKETVER >= 20081217
+packetLen(0x0388, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x0388, 4)
+#elif PACKETVER >= 20081112
+packetLen(0x0388, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x0388, 13)
+#elif PACKETVER >= 20081029
+packetLen(0x0388, 11)
+#elif PACKETVER >= 20081022
+packetLen(0x0388, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0388, 11)
+#elif PACKETVER >= 20081008
+packetLen(0x0388, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x0388, 8)
+#elif PACKETVER >= 20080924
+packetLen(0x0388, 29)
+#elif PACKETVER >= 20080917
+packetLen(0x0388, 4)
+#elif PACKETVER >= 20080910
+packetLen(0x0388, 10)
+#elif PACKETVER >= 20080903
+packetLen(0x0388, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x0388, 6)
+#elif PACKETVER >= 20080820
+packetLen(0x0388, 10)
+#elif PACKETVER >= 20080722
+packetLen(0x0388, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x0388, 30)
+#elif PACKETVER >= 20080624
+packetLen(0x0388, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0388, 22)
+#elif PACKETVER >= 20080528
+packetLen(0x0388, -1)
+#endif
+
+// Packet: 0x0389
+#if PACKETVER >= 20081217
+packetLen(0x0389, 2)
+#elif PACKETVER >= 20081126
+packetLen(0x0389, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x0389, 2)
+#elif PACKETVER >= 20081001
+packetLen(0x0389, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x0389, 10)
+#elif PACKETVER >= 20080903
+packetLen(0x0389, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x0389, 3)
+#elif PACKETVER >= 20080820
+packetLen(0x0389, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x0389, 21)
+#elif PACKETVER >= 20080806
+packetLen(0x0389, 102)
+#elif PACKETVER >= 20080730
+packetLen(0x0389, 7)
+#elif PACKETVER >= 20080722
+packetLen(0x0389, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x0389, 39)
+#elif PACKETVER >= 20080701
+packetLen(0x0389, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0389, 8)
+#elif PACKETVER >= 20080617
+packetLen(0x0389, 4)
+#elif PACKETVER >= 20080528
+packetLen(0x0389, -1)
+#endif
+
+// Packet: 0x038a
+#if PACKETVER >= 20081217
+packetLen(0x038a, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x038a, 10)
+#elif PACKETVER >= 20081022
+packetLen(0x038a, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x038a, 4)
+#elif PACKETVER >= 20081008
+packetLen(0x038a, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x038a, 6)
+#elif PACKETVER >= 20080924
+packetLen(0x038a, 54)
+#elif PACKETVER >= 20080827
+packetLen(0x038a, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x038a, 2)
+#elif PACKETVER >= 20080806
+packetLen(0x038a, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x038a, 9)
+#elif PACKETVER >= 20080722
+packetLen(0x038a, 24)
+#elif PACKETVER >= 20080715
+packetLen(0x038a, 2)
+#elif PACKETVER >= 20080708
+packetLen(0x038a, 3)
+#elif PACKETVER >= 20080701
+packetLen(0x038a, 102)
+#elif PACKETVER >= 20080624
+packetLen(0x038a, 26)
+#elif PACKETVER >= 20080617
+packetLen(0x038a, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x038a, -1)
+#endif
+
+// Packet: 0x038b
+#if PACKETVER >= 20081217
+packetLen(0x038b, 27)
+#elif PACKETVER >= 20081203
+packetLen(0x038b, 3)
+#elif PACKETVER >= 20081126
+packetLen(0x038b, 10)
+#elif PACKETVER >= 20081119
+packetLen(0x038b, 6)
+#elif PACKETVER >= 20081022
+packetLen(0x038b, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x038b, 2)
+#elif PACKETVER >= 20081008
+packetLen(0x038b, 9)
+#elif PACKETVER >= 20080917
+packetLen(0x038b, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x038b, 6)
+#elif PACKETVER >= 20080903
+packetLen(0x038b, 30)
+#elif PACKETVER >= 20080813
+packetLen(0x038b, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x038b, 26)
+#elif PACKETVER >= 20080730
+packetLen(0x038b, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x038b, 6)
+#elif PACKETVER >= 20080715
+packetLen(0x038b, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x038b, 26)
+#elif PACKETVER >= 20080701
+packetLen(0x038b, 2)
+#elif PACKETVER >= 20080624
+packetLen(0x038b, 11)
+#elif PACKETVER >= 20080617
+packetLen(0x038b, 4)
+#elif PACKETVER >= 20080528
+packetLen(0x038b, -1)
+#endif
+
+// Packet: 0x038c
+#if PACKETVER >= 20081217
+packetLen(0x038c, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x038c, 29)
+#elif PACKETVER >= 20081126
+packetLen(0x038c, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x038c, 6)
+#elif PACKETVER >= 20081112
+packetLen(0x038c, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x038c, 5)
+#elif PACKETVER >= 20081029
+packetLen(0x038c, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x038c, 14)
+#elif PACKETVER >= 20081015
+packetLen(0x038c, 102)
+#elif PACKETVER >= 20081008
+packetLen(0x038c, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x038c, 2)
+#elif PACKETVER >= 20080910
+packetLen(0x038c, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x038c, 10)
+#elif PACKETVER >= 20080827
+packetLen(0x038c, 3)
+#elif PACKETVER >= 20080820
+packetLen(0x038c, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x038c, 11)
+#elif PACKETVER >= 20080806
+packetLen(0x038c, 26)
+#elif PACKETVER >= 20080730
+packetLen(0x038c, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x038c, 14)
+#elif PACKETVER >= 20080708
+packetLen(0x038c, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x038c, 4)
+#elif PACKETVER >= 20080624
+packetLen(0x038c, 30)
+#elif PACKETVER >= 20080617
+packetLen(0x038c, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x038c, -1)
+#endif
+
+// Packet: 0x038d
+#if PACKETVER >= 20081217
+packetLen(0x038d, 32)
+#elif PACKETVER >= 20081203
+packetLen(0x038d, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x038d, 33)
+#elif PACKETVER >= 20081119
+packetLen(0x038d, 6)
+#elif PACKETVER >= 20081112
+packetLen(0x038d, 3)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x038d, 9)
+#elif PACKETVER >= 20081022
+packetLen(0x038d, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x038d, 6)
+#elif PACKETVER >= 20081008
+packetLen(0x038d, 2)
+#elif PACKETVER >= 20080924
+packetLen(0x038d, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x038d, 30)
+#elif PACKETVER >= 20080910
+packetLen(0x038d, 21)
+#elif PACKETVER >= 20080903
+packetLen(0x038d, 27)
+#elif PACKETVER >= 20080827
+packetLen(0x038d, 28)
+#elif PACKETVER >= 20080820
+packetLen(0x038d, 182)
+#elif PACKETVER >= 20080722
+packetLen(0x038d, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x038d, 60)
+#elif PACKETVER >= 20080701
+packetLen(0x038d, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x038d, 10)
+#elif PACKETVER >= 20080617
+packetLen(0x038d, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x038d, -1)
+#endif
+
+// Packet: 0x038e
+#if PACKETVER >= 20081217
+packetLen(0x038e, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x038e, 4)
+#elif PACKETVER >= 20081119
+packetLen(0x038e, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x038e, 30)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081001
+packetLen(0x038e, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x038e, 3)
+#elif PACKETVER >= 20080917
+packetLen(0x038e, 5)
+#elif PACKETVER >= 20080903
+packetLen(0x038e, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x038e, 28)
+#elif PACKETVER >= 20080820
+packetLen(0x038e, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x038e, 44)
+#elif PACKETVER >= 20080730
+packetLen(0x038e, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x038e, 6)
+#elif PACKETVER >= 20080715
+packetLen(0x038e, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x038e, 282)
+#elif PACKETVER >= 20080701
+packetLen(0x038e, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x038e, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x038e, -1)
+#endif
+
+// Packet: 0x038f
+#if PACKETVER >= 20081217
+packetLen(0x038f, 39)
+#elif PACKETVER >= 20081203
+packetLen(0x038f, 22)
+#elif PACKETVER >= 20081126
+packetLen(0x038f, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x038f, 4)
+#elif PACKETVER >= 20081029
+packetLen(0x038f, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x038f, 19)
+#elif PACKETVER >= 20081008
+packetLen(0x038f, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x038f, 4)
+#elif PACKETVER >= 20080924
+packetLen(0x038f, 22)
+#elif PACKETVER >= 20080917
+packetLen(0x038f, 8)
+#elif PACKETVER >= 20080910
+packetLen(0x038f, 4)
+#elif PACKETVER >= 20080903
+packetLen(0x038f, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x038f, 16)
+#elif PACKETVER >= 20080820
+packetLen(0x038f, 14)
+#elif PACKETVER >= 20080813
+packetLen(0x038f, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x038f, 114)
+#elif PACKETVER >= 20080701
+packetLen(0x038f, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x038f, 2)
+#elif PACKETVER >= 20080528
+packetLen(0x038f, -1)
+#endif
+
+// Packet: 0x0390
+#if PACKETVER >= 20081203
+packetLen(0x0390, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x0390, 2)
+#elif PACKETVER >= 20081119
+packetLen(0x0390, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x0390, 3)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x0390, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x0390, 2)
+#elif PACKETVER >= 20081015
+packetLen(0x0390, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x0390, 2)
+#elif PACKETVER >= 20080903
+packetLen(0x0390, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x0390, 10)
+#elif PACKETVER >= 20080722
+packetLen(0x0390, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x0390, 182)
+#elif PACKETVER >= 20080708
+packetLen(0x0390, 4)
+#elif PACKETVER >= 20080701
+packetLen(0x0390, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0390, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x0390, -1)
+#endif
+
+// Packet: 0x0391
+#if PACKETVER >= 20081217
+packetLen(0x0391, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x0391, 5)
+#elif PACKETVER >= 20081126
+packetLen(0x0391, 3)
+#elif PACKETVER >= 20081119
+packetLen(0x0391, 30)
+#elif PACKETVER >= 20081112
+packetLen(0x0391, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x0391, 8)
+#elif PACKETVER >= 20081029
+packetLen(0x0391, 7)
+#elif PACKETVER >= 20081022
+packetLen(0x0391, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0391, 5)
+#elif PACKETVER >= 20081008
+packetLen(0x0391, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x0391, 11)
+#elif PACKETVER >= 20080910
+packetLen(0x0391, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x0391, 16)
+#elif PACKETVER >= 20080813
+packetLen(0x0391, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x0391, 29)
+#elif PACKETVER >= 20080722
+packetLen(0x0391, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x0391, 26)
+#elif PACKETVER >= 20080528
+packetLen(0x0391, -1)
+#endif
+
+// Packet: 0x0392
+#if PACKETVER >= 20081217
+packetLen(0x0392, 8)
+#elif PACKETVER >= 20081203
+packetLen(0x0392, 10)
+#elif PACKETVER >= 20081126
+packetLen(0x0392, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x0392, 3)
+#elif PACKETVER >= 20081112
+packetLen(0x0392, 4)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0392, 11)
+#elif PACKETVER >= 20081029
+packetLen(0x0392, 3)
+#elif PACKETVER >= 20081022
+packetLen(0x0392, 24)
+#elif PACKETVER >= 20081015
+packetLen(0x0392, 14)
+#elif PACKETVER >= 20080924
+packetLen(0x0392, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x0392, 2)
+#elif PACKETVER >= 20080910
+packetLen(0x0392, 6)
+#elif PACKETVER >= 20080903
+packetLen(0x0392, 17)
+#elif PACKETVER >= 20080820
+packetLen(0x0392, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x0392, 29)
+#elif PACKETVER >= 20080806
+packetLen(0x0392, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x0392, 2)
+#elif PACKETVER >= 20080722
+packetLen(0x0392, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x0392, 22)
+#elif PACKETVER >= 20080708
+packetLen(0x0392, 60)
+#elif PACKETVER >= 20080624
+packetLen(0x0392, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0392, 26)
+#elif PACKETVER >= 20080528
+packetLen(0x0392, -1)
+#endif
+
+// Packet: 0x0393
+#if PACKETVER >= 20081217
+packetLen(0x0393, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x0393, 6)
+#elif PACKETVER >= 20081112
+packetLen(0x0393, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x0393, 4)
+#elif PACKETVER >= 20081029
+packetLen(0x0393, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x0393, 60)
+#elif PACKETVER >= 20081015
+packetLen(0x0393, 26)
+#elif PACKETVER >= 20081008
+packetLen(0x0393, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x0393, 33)
+#elif PACKETVER >= 20080924
+packetLen(0x0393, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x0393, 26)
+#elif PACKETVER >= 20080820
+packetLen(0x0393, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x0393, 6)
+#elif PACKETVER >= 20080806
+packetLen(0x0393, 7)
+#elif PACKETVER >= 20080730
+packetLen(0x0393, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x0393, 7)
+#elif PACKETVER >= 20080715
+packetLen(0x0393, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x0393, 26)
+#elif PACKETVER >= 20080701
+packetLen(0x0393, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0393, 17)
+#elif PACKETVER >= 20080617
+packetLen(0x0393, 14)
+#elif PACKETVER >= 20080528
+packetLen(0x0393, -1)
+#endif
+
+// Packet: 0x0394
+#if PACKETVER >= 20081203
+packetLen(0x0394, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x0394, 28)
+#elif PACKETVER >= 20081105
+packetLen(0x0394, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x0394, 9)
+#elif PACKETVER >= 20081022
+packetLen(0x0394, 58)
+#elif PACKETVER >= 20081015
+packetLen(0x0394, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x0394, 26)
+#elif PACKETVER >= 20081001
+packetLen(0x0394, 4)
+#elif PACKETVER >= 20080917
+packetLen(0x0394, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x0394, 6)
+#elif PACKETVER >= 20080827
+packetLen(0x0394, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0394, 54)
+#elif PACKETVER >= 20080813
+packetLen(0x0394, 15)
+#elif PACKETVER >= 20080806
+packetLen(0x0394, 19)
+#elif PACKETVER >= 20080730
+packetLen(0x0394, 282)
+#elif PACKETVER >= 20080722
+packetLen(0x0394, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x0394, 19)
+#elif PACKETVER >= 20080708
+packetLen(0x0394, 5)
+#elif PACKETVER >= 20080701
+packetLen(0x0394, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x0394, -1)
+#endif
+
+// Packet: 0x0395
+#if PACKETVER >= 20081217
+packetLen(0x0395, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x0395, 6)
+#elif PACKETVER >= 20081126
+packetLen(0x0395, 8)
+#elif PACKETVER >= 20081119
+packetLen(0x0395, 55)
+#elif PACKETVER >= 20081112
+packetLen(0x0395, 3)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0395, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x0395, 58)
+#elif PACKETVER >= 20081022
+packetLen(0x0395, 4)
+#elif PACKETVER >= 20081015
+packetLen(0x0395, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x0395, 21)
+#elif PACKETVER >= 20081001
+packetLen(0x0395, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x0395, 35)
+#elif PACKETVER >= 20080903
+packetLen(0x0395, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x0395, 32)
+#elif PACKETVER >= 20080813
+packetLen(0x0395, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x0395, 8)
+#elif PACKETVER >= 20080730
+packetLen(0x0395, 10)
+#elif PACKETVER >= 20080722
+packetLen(0x0395, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x0395, 4)
+#elif PACKETVER >= 20080708
+packetLen(0x0395, 5)
+#elif PACKETVER >= 20080701
+packetLen(0x0395, 4)
+#elif PACKETVER >= 20080624
+packetLen(0x0395, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0395, 3)
+#elif PACKETVER >= 20080528
+packetLen(0x0395, -1)
+#endif
+
+// Packet: 0x0396
+#if PACKETVER >= 20081217
+packetLen(0x0396, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x0396, 26)
+#elif PACKETVER >= 20081001
+packetLen(0x0396, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x0396, 6)
+#elif PACKETVER >= 20080917
+packetLen(0x0396, 10)
+#elif PACKETVER >= 20080910
+packetLen(0x0396, 8)
+#elif PACKETVER >= 20080903
+packetLen(0x0396, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x0396, 6)
+#elif PACKETVER >= 20080820
+packetLen(0x0396, 11)
+#elif PACKETVER >= 20080813
+packetLen(0x0396, 6)
+#elif PACKETVER >= 20080722
+packetLen(0x0396, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x0396, 186)
+#elif PACKETVER >= 20080708
+packetLen(0x0396, 60)
+#elif PACKETVER >= 20080701
+packetLen(0x0396, 2)
+#elif PACKETVER >= 20080624
+packetLen(0x0396, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0396, 33)
+#elif PACKETVER >= 20080528
+packetLen(0x0396, -1)
+#endif
+
+// Packet: 0x0397
+#if PACKETVER >= 20081217
+packetLen(0x0397, 6)
+#elif PACKETVER >= 20081203
+packetLen(0x0397, 282)
+#elif PACKETVER >= 20081112
+packetLen(0x0397, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x0397, 3)
+#elif PACKETVER >= 20081029
+packetLen(0x0397, 114)
+#elif PACKETVER >= 20081022
+packetLen(0x0397, 5)
+#elif PACKETVER >= 20081001
+packetLen(0x0397, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x0397, 12)
+#elif PACKETVER >= 20080910
+packetLen(0x0397, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x0397, 13)
+#elif PACKETVER >= 20080827
+packetLen(0x0397, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0397, 11)
+#elif PACKETVER >= 20080813
+packetLen(0x0397, 26)
+#elif PACKETVER >= 20080730
+packetLen(0x0397, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x0397, 3)
+#elif PACKETVER >= 20080715
+packetLen(0x0397, 53)
+#elif PACKETVER >= 20080708
+packetLen(0x0397, 6)
+#elif PACKETVER >= 20080701
+packetLen(0x0397, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x0397, 5)
+#elif PACKETVER >= 20080528
+packetLen(0x0397, -1)
+#endif
+
+// Packet: 0x0398
+#if PACKETVER >= 20081203
+packetLen(0x0398, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x0398, 3)
+#elif PACKETVER >= 20081119
+packetLen(0x0398, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x0398, 6)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0398, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x0398, 6)
+#elif PACKETVER >= 20081015
+packetLen(0x0398, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x0398, 14)
+#elif PACKETVER >= 20081001
+packetLen(0x0398, 26)
+#elif PACKETVER >= 20080910
+packetLen(0x0398, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x0398, 6)
+#elif PACKETVER >= 20080820
+packetLen(0x0398, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x0398, 10)
+#elif PACKETVER >= 20080806
+packetLen(0x0398, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x0398, 10)
+#elif PACKETVER >= 20080722
+packetLen(0x0398, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x0398, 3)
+#elif PACKETVER >= 20080708
+packetLen(0x0398, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x0398, 53)
+#elif PACKETVER >= 20080624
+packetLen(0x0398, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x0398, 282)
+#elif PACKETVER >= 20080528
+packetLen(0x0398, -1)
+#endif
+
+// Packet: 0x0399
+#if PACKETVER >= 20081217
+packetLen(0x0399, 9)
+#elif PACKETVER >= 20081203
+packetLen(0x0399, 4)
+#elif PACKETVER >= 20081126
+packetLen(0x0399, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x0399, 8)
+#elif PACKETVER >= 20081022
+packetLen(0x0399, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0399, 2)
+#elif PACKETVER >= 20080924
+packetLen(0x0399, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x0399, 4)
+#elif PACKETVER >= 20080903
+packetLen(0x0399, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x0399, 7)
+#elif PACKETVER >= 20080820
+packetLen(0x0399, 9)
+#elif PACKETVER >= 20080806
+packetLen(0x0399, 30)
+#elif PACKETVER >= 20080730
+packetLen(0x0399, 2)
+#elif PACKETVER >= 20080722
+packetLen(0x0399, 3)
+#elif PACKETVER >= 20080715
+packetLen(0x0399, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x0399, 3)
+#elif PACKETVER >= 20080701
+packetLen(0x0399, 16)
+#elif PACKETVER >= 20080624
+packetLen(0x0399, 65)
+#elif PACKETVER >= 20080528
+packetLen(0x0399, -1)
+#endif
+
+// Packet: 0x039a
+#if PACKETVER >= 20081217
+packetLen(0x039a, 3)
+#elif PACKETVER >= 20081203
+packetLen(0x039a, 17)
+#elif PACKETVER >= 20081126
+packetLen(0x039a, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x039a, 6)
+#elif PACKETVER >= 20081112
+packetLen(0x039a, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x039a, 4)
+#elif PACKETVER >= 20081022
+packetLen(0x039a, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x039a, 29)
+#elif PACKETVER >= 20081008
+packetLen(0x039a, 2)
+#elif PACKETVER >= 20080910
+packetLen(0x039a, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x039a, 27)
+#elif PACKETVER >= 20080701
+packetLen(0x039a, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x039a, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x039a, -1)
+#endif
+
+// Packet: 0x039b
+#if PACKETVER >= 20081217
+packetLen(0x039b, 10)
+#elif PACKETVER >= 20081203
+packetLen(0x039b, 6)
+#elif PACKETVER >= 20081126
+packetLen(0x039b, 43)
+#elif PACKETVER >= 20081119
+packetLen(0x039b, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x039b, 36)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x039b, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x039b, 3)
+#elif PACKETVER >= 20081008
+packetLen(0x039b, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x039b, 6)
+#elif PACKETVER >= 20080924
+packetLen(0x039b, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x039b, 6)
+#elif PACKETVER >= 20080910
+packetLen(0x039b, 3)
+#elif PACKETVER >= 20080903
+packetLen(0x039b, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x039b, 5)
+#elif PACKETVER >= 20080820
+packetLen(0x039b, 30)
+#elif PACKETVER >= 20080715
+packetLen(0x039b, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x039b, 8)
+#elif PACKETVER >= 20080624
+packetLen(0x039b, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x039b, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x039b, -1)
+#endif
+
+// Packet: 0x039c
+#if PACKETVER >= 20081217
+packetLen(0x039c, 86)
+#elif PACKETVER >= 20081203
+packetLen(0x039c, 4)
+#elif PACKETVER >= 20081126
+packetLen(0x039c, 12)
+#elif PACKETVER >= 20081105
+packetLen(0x039c, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x039c, 14)
+#elif PACKETVER >= 20081022
+packetLen(0x039c, 18)
+#elif PACKETVER >= 20081015
+packetLen(0x039c, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x039c, 6)
+#elif PACKETVER >= 20081001
+packetLen(0x039c, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x039c, 6)
+#elif PACKETVER >= 20080903
+packetLen(0x039c, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x039c, 67)
+#elif PACKETVER >= 20080820
+packetLen(0x039c, 4)
+#elif PACKETVER >= 20080813
+packetLen(0x039c, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x039c, 31)
+#elif PACKETVER >= 20080730
+packetLen(0x039c, 3)
+#elif PACKETVER >= 20080715
+packetLen(0x039c, 6)
+#elif PACKETVER >= 20080701
+packetLen(0x039c, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x039c, 6)
+#elif PACKETVER >= 20080617
+packetLen(0x039c, 26)
+#elif PACKETVER >= 20080528
+packetLen(0x039c, -1)
+#endif
+
+// Packet: 0x039d
+#if PACKETVER >= 20081217
+packetLen(0x039d, 30)
+#elif PACKETVER >= 20081203
+packetLen(0x039d, 8)
+#elif PACKETVER >= 20081126
+packetLen(0x039d, 30)
+#elif PACKETVER >= 20081119
+packetLen(0x039d, 7)
+#elif PACKETVER >= 20081112
+packetLen(0x039d, 27)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081001
+packetLen(0x039d, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x039d, 3)
+#elif PACKETVER >= 20080910
+packetLen(0x039d, 7)
+#elif PACKETVER >= 20080903
+packetLen(0x039d, 17)
+#elif PACKETVER >= 20080827
+packetLen(0x039d, 24)
+#elif PACKETVER >= 20080820
+packetLen(0x039d, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x039d, 26)
+#elif PACKETVER >= 20080730
+packetLen(0x039d, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x039d, 10)
+#elif PACKETVER >= 20080715
+packetLen(0x039d, 2)
+#elif PACKETVER >= 20080708
+packetLen(0x039d, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x039d, 6)
+#elif PACKETVER >= 20080624
+packetLen(0x039d, 3)
+#elif PACKETVER >= 20080617
+packetLen(0x039d, 7)
+#elif PACKETVER >= 20080528
+packetLen(0x039d, -1)
+#endif
+
+// Packet: 0x039e
+#if PACKETVER >= 20081119
+packetLen(0x039e, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x039e, 182)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x039e, 11)
+#elif PACKETVER >= 20081001
+packetLen(0x039e, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x039e, 2)
+#elif PACKETVER >= 20080917
+packetLen(0x039e, 39)
+#elif PACKETVER >= 20080910
+packetLen(0x039e, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x039e, 14)
+#elif PACKETVER >= 20080827
+packetLen(0x039e, 54)
+#elif PACKETVER >= 20080806
+packetLen(0x039e, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x039e, 42)
+#elif PACKETVER >= 20080722
+packetLen(0x039e, 6)
+#elif PACKETVER >= 20080715
+packetLen(0x039e, 27)
+#elif PACKETVER >= 20080701
+packetLen(0x039e, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x039e, 6)
+#elif PACKETVER >= 20080617
+packetLen(0x039e, 10)
+#elif PACKETVER >= 20080528
+packetLen(0x039e, -1)
+#endif
+
+// Packet: 0x039f
+#if PACKETVER >= 20081217
+packetLen(0x039f, 30)
+#elif PACKETVER >= 20081203
+packetLen(0x039f, 39)
+#elif PACKETVER >= 20081126
+packetLen(0x039f, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x039f, 26)
+#elif PACKETVER >= 20081029
+packetLen(0x039f, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x039f, 10)
+#elif PACKETVER >= 20081015
+packetLen(0x039f, 2)
+#elif PACKETVER >= 20081008
+packetLen(0x039f, 282)
+#elif PACKETVER >= 20081001
+packetLen(0x039f, 14)
+#elif PACKETVER >= 20080924
+packetLen(0x039f, 2)
+#elif PACKETVER >= 20080917
+packetLen(0x039f, 8)
+#elif PACKETVER >= 20080910
+packetLen(0x039f, 14)
+#elif PACKETVER >= 20080820
+packetLen(0x039f, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x039f, 2)
+#elif PACKETVER >= 20080806
+packetLen(0x039f, 8)
+#elif PACKETVER >= 20080722
+packetLen(0x039f, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x039f, 7)
+#elif PACKETVER >= 20080701
+packetLen(0x039f, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x039f, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x039f, -1)
+#endif
+
+// Packet: 0x03a0
+#if PACKETVER >= 20081203
+packetLen(0x03a0, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x03a0, 2)
+#elif PACKETVER >= 20081119
+packetLen(0x03a0, 17)
+#elif PACKETVER >= 20081112
+packetLen(0x03a0, 10)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x03a0, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x03a0, 11)
+#elif PACKETVER >= 20081022
+packetLen(0x03a0, 22)
+#elif PACKETVER >= 20081015
+packetLen(0x03a0, 3)
+#elif PACKETVER >= 20080917
+packetLen(0x03a0, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x03a0, 2)
+#elif PACKETVER >= 20080827
+packetLen(0x03a0, 5)
+#elif PACKETVER >= 20080813
+packetLen(0x03a0, 6)
+#elif PACKETVER >= 20080730
+packetLen(0x03a0, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x03a0, 16)
+#elif PACKETVER >= 20080715
+packetLen(0x03a0, 5)
+#elif PACKETVER >= 20080708
+packetLen(0x03a0, 2)
+#elif PACKETVER >= 20080624
+packetLen(0x03a0, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03a0, 2)
+#elif PACKETVER >= 20080528
+packetLen(0x03a0, -1)
+#endif
+
+// Packet: 0x03a1
+#if PACKETVER >= 20081203
+packetLen(0x03a1, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x03a1, 6)
+#elif PACKETVER >= 20081119
+packetLen(0x03a1, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x03a1, 6)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x03a1, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x03a1, 32)
+#elif PACKETVER >= 20081022
+packetLen(0x03a1, 10)
+#elif PACKETVER >= 20080924
+packetLen(0x03a1, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x03a1, 6)
+#elif PACKETVER >= 20080910
+packetLen(0x03a1, 5)
+#elif PACKETVER >= 20080806
+packetLen(0x03a1, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x03a1, 3)
+#elif PACKETVER >= 20080722
+packetLen(0x03a1, 15)
+#elif PACKETVER >= 20080715
+packetLen(0x03a1, 71)
+#elif PACKETVER >= 20080708
+packetLen(0x03a1, 3)
+#elif PACKETVER >= 20080701
+packetLen(0x03a1, 6)
+#elif PACKETVER >= 20080624
+packetLen(0x03a1, 30)
+#elif PACKETVER >= 20080528
+packetLen(0x03a1, -1)
+#endif
+
+// Packet: 0x03a2
+#if PACKETVER >= 20081217
+packetLen(0x03a2, 282)
+#elif PACKETVER >= 20081203
+packetLen(0x03a2, 6)
+#elif PACKETVER >= 20081112
+packetLen(0x03a2, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x03a2, 14)
+#elif PACKETVER >= 20081015
+packetLen(0x03a2, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x03a2, 8)
+#elif PACKETVER >= 20081001
+packetLen(0x03a2, 2)
+#elif PACKETVER >= 20080924
+packetLen(0x03a2, 10)
+#elif PACKETVER >= 20080917
+packetLen(0x03a2, 3)
+#elif PACKETVER >= 20080910
+packetLen(0x03a2, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x03a2, 11)
+#elif PACKETVER >= 20080827
+packetLen(0x03a2, 3)
+#elif PACKETVER >= 20080820
+packetLen(0x03a2, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x03a2, 13)
+#elif PACKETVER >= 20080806
+packetLen(0x03a2, 26)
+#elif PACKETVER >= 20080730
+packetLen(0x03a2, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x03a2, 26)
+#elif PACKETVER >= 20080715
+packetLen(0x03a2, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x03a2, 7)
+#elif PACKETVER >= 20080528
+packetLen(0x03a2, -1)
+#endif
+
+// Packet: 0x03a3
+#if PACKETVER >= 20081126
+packetLen(0x03a3, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x03a3, 6)
+#elif PACKETVER >= 20081029
+packetLen(0x03a3, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x03a3, 20)
+#elif PACKETVER >= 20080910
+packetLen(0x03a3, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x03a3, 28)
+#elif PACKETVER >= 20080827
+packetLen(0x03a3, 21)
+#elif PACKETVER >= 20080820
+packetLen(0x03a3, 6)
+#elif PACKETVER >= 20080813
+packetLen(0x03a3, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x03a3, 26)
+#elif PACKETVER >= 20080730
+packetLen(0x03a3, 23)
+#elif PACKETVER >= 20080722
+packetLen(0x03a3, 6)
+#elif PACKETVER >= 20080715
+packetLen(0x03a3, 2)
+#elif PACKETVER >= 20080708
+packetLen(0x03a3, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x03a3, 21)
+#elif PACKETVER >= 20080624
+packetLen(0x03a3, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03a3, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x03a3, -1)
+#endif
+
+// Packet: 0x03a4
+#if PACKETVER >= 20081217
+packetLen(0x03a4, 44)
+#elif PACKETVER >= 20081203
+packetLen(0x03a4, 4)
+#elif PACKETVER >= 20081126
+packetLen(0x03a4, 58)
+#elif PACKETVER >= 20081119
+packetLen(0x03a4, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x03a4, 2)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x03a4, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x03a4, 6)
+#elif PACKETVER >= 20081022
+packetLen(0x03a4, 12)
+#elif PACKETVER >= 20080910
+packetLen(0x03a4, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x03a4, 3)
+#elif PACKETVER >= 20080827
+packetLen(0x03a4, 33)
+#elif PACKETVER >= 20080820
+packetLen(0x03a4, 14)
+#elif PACKETVER >= 20080730
+packetLen(0x03a4, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x03a4, 30)
+#elif PACKETVER >= 20080701
+packetLen(0x03a4, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x03a4, 2)
+#elif PACKETVER >= 20080528
+packetLen(0x03a4, -1)
+#endif
+
+// Packet: 0x03a5
+#if PACKETVER >= 20081217
+packetLen(0x03a5, 8)
+#elif PACKETVER >= 20081203
+packetLen(0x03a5, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x03a5, 3)
+#elif PACKETVER >= 20081105
+packetLen(0x03a5, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x03a5, 54)
+#elif PACKETVER >= 20081022
+packetLen(0x03a5, 6)
+#elif PACKETVER >= 20081015
+packetLen(0x03a5, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x03a5, 2)
+#elif PACKETVER >= 20080924
+packetLen(0x03a5, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x03a5, 3)
+#elif PACKETVER >= 20080910
+packetLen(0x03a5, 26)
+#elif PACKETVER >= 20080903
+packetLen(0x03a5, 6)
+#elif PACKETVER >= 20080827
+packetLen(0x03a5, 8)
+#elif PACKETVER >= 20080820
+packetLen(0x03a5, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x03a5, 26)
+#elif PACKETVER >= 20080730
+packetLen(0x03a5, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x03a5, 8)
+#elif PACKETVER >= 20080715
+packetLen(0x03a5, 2)
+#elif PACKETVER >= 20080708
+packetLen(0x03a5, 28)
+#elif PACKETVER >= 20080701
+packetLen(0x03a5, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x03a5, 28)
+#elif PACKETVER >= 20080617
+packetLen(0x03a5, 5)
+#elif PACKETVER >= 20080528
+packetLen(0x03a5, -1)
+#endif
+
+// Packet: 0x03a6
+#if PACKETVER >= 20081203
+packetLen(0x03a6, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x03a6, 14)
+#elif PACKETVER >= 20081029
+packetLen(0x03a6, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x03a6, 8)
+#elif PACKETVER >= 20081001
+packetLen(0x03a6, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x03a6, 8)
+#elif PACKETVER >= 20080917
+packetLen(0x03a6, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x03a6, 18)
+#elif PACKETVER >= 20080903
+packetLen(0x03a6, 4)
+#elif PACKETVER >= 20080820
+packetLen(0x03a6, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x03a6, 27)
+#elif PACKETVER >= 20080730
+packetLen(0x03a6, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x03a6, 10)
+#elif PACKETVER >= 20080715
+packetLen(0x03a6, 3)
+#elif PACKETVER >= 20080708
+packetLen(0x03a6, 31)
+#elif PACKETVER >= 20080701
+packetLen(0x03a6, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x03a6, 59)
+#elif PACKETVER >= 20080528
+packetLen(0x03a6, -1)
+#endif
+
+// Packet: 0x03a7
+#if PACKETVER >= 20081217
+packetLen(0x03a7, 8)
+#elif PACKETVER >= 20081203
+packetLen(0x03a7, 2)
+#elif PACKETVER >= 20081126
+packetLen(0x03a7, 67)
+#elif PACKETVER >= 20081119
+packetLen(0x03a7, 6)
+#elif PACKETVER >= 20081105
+packetLen(0x03a7, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x03a7, 6)
+#elif PACKETVER >= 20081022
+packetLen(0x03a7, 4)
+#elif PACKETVER >= 20081015
+packetLen(0x03a7, 60)
+#elif PACKETVER >= 20080917
+packetLen(0x03a7, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x03a7, 17)
+#elif PACKETVER >= 20080820
+packetLen(0x03a7, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x03a7, 28)
+#elif PACKETVER >= 20080806
+packetLen(0x03a7, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x03a7, 8)
+#elif PACKETVER >= 20080722
+packetLen(0x03a7, 5)
+#elif PACKETVER >= 20080715
+packetLen(0x03a7, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x03a7, 6)
+#elif PACKETVER >= 20080701
+packetLen(0x03a7, 68)
+#elif PACKETVER >= 20080624
+packetLen(0x03a7, 11)
+#elif PACKETVER >= 20080528
+packetLen(0x03a7, -1)
+#endif
+
+// Packet: 0x03a8
+#if PACKETVER >= 20081203
+packetLen(0x03a8, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x03a8, 59)
+#elif PACKETVER >= 20081119
+packetLen(0x03a8, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x03a8, 6)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x03a8, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x03a8, 26)
+#elif PACKETVER >= 20080813
+packetLen(0x03a8, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x03a8, 2)
+#elif PACKETVER >= 20080715
+packetLen(0x03a8, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x03a8, 2)
+#elif PACKETVER >= 20080701
+packetLen(0x03a8, 3)
+#elif PACKETVER >= 20080624
+packetLen(0x03a8, 6)
+#elif PACKETVER >= 20080617
+packetLen(0x03a8, 4)
+#elif PACKETVER >= 20080528
+packetLen(0x03a8, -1)
+#endif
+
+// Packet: 0x03a9
+#if PACKETVER >= 20081217
+packetLen(0x03a9, 15)
+#elif PACKETVER >= 20081203
+packetLen(0x03a9, 18)
+#elif PACKETVER >= 20081119
+packetLen(0x03a9, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x03a9, 6)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x03a9, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x03a9, 7)
+#elif PACKETVER >= 20080813
+packetLen(0x03a9, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x03a9, 2)
+#elif PACKETVER >= 20080730
+packetLen(0x03a9, 3)
+#elif PACKETVER >= 20080715
+packetLen(0x03a9, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x03a9, 8)
+#elif PACKETVER >= 20080624
+packetLen(0x03a9, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03a9, 67)
+#elif PACKETVER >= 20080528
+packetLen(0x03a9, -1)
+#endif
+
+// Packet: 0x03aa
+#if PACKETVER >= 20081217
+packetLen(0x03aa, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x03aa, 6)
+#elif PACKETVER >= 20081112
+packetLen(0x03aa, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x03aa, 2)
+#elif PACKETVER >= 20081029
+packetLen(0x03aa, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x03aa, 3)
+#elif PACKETVER >= 20081015
+packetLen(0x03aa, 7)
+#elif PACKETVER >= 20081008
+packetLen(0x03aa, 26)
+#elif PACKETVER >= 20081001
+packetLen(0x03aa, 10)
+#elif PACKETVER >= 20080917
+packetLen(0x03aa, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x03aa, 30)
+#elif PACKETVER >= 20080903
+packetLen(0x03aa, 20)
+#elif PACKETVER >= 20080827
+packetLen(0x03aa, 10)
+#elif PACKETVER >= 20080813
+packetLen(0x03aa, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x03aa, 2)
+#elif PACKETVER >= 20080730
+packetLen(0x03aa, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x03aa, 39)
+#elif PACKETVER >= 20080715
+packetLen(0x03aa, 7)
+#elif PACKETVER >= 20080708
+packetLen(0x03aa, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x03aa, 11)
+#elif PACKETVER >= 20080528
+packetLen(0x03aa, -1)
+#endif
+
+// Packet: 0x03ab
+#if PACKETVER >= 20081217
+packetLen(0x03ab, 8)
+#elif PACKETVER >= 20081203
+packetLen(0x03ab, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x03ab, 9)
+#elif PACKETVER >= 20081119
+packetLen(0x03ab, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x03ab, 2)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x03ab, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x03ab, 30)
+#elif PACKETVER >= 20081015
+packetLen(0x03ab, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x03ab, 6)
+#elif PACKETVER >= 20081001
+packetLen(0x03ab, 10)
+#elif PACKETVER >= 20080917
+packetLen(0x03ab, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x03ab, 2)
+#elif PACKETVER >= 20080827
+packetLen(0x03ab, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x03ab, 23)
+#elif PACKETVER >= 20080813
+packetLen(0x03ab, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x03ab, 18)
+#elif PACKETVER >= 20080730
+packetLen(0x03ab, 11)
+#elif PACKETVER >= 20080722
+packetLen(0x03ab, 53)
+#elif PACKETVER >= 20080715
+packetLen(0x03ab, 8)
+#elif PACKETVER >= 20080708
+packetLen(0x03ab, 86)
+#elif PACKETVER >= 20080624
+packetLen(0x03ab, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03ab, 14)
+#elif PACKETVER >= 20080528
+packetLen(0x03ab, -1)
+#endif
+
+// Packet: 0x03ac
+#if PACKETVER >= 20081203
+packetLen(0x03ac, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x03ac, 10)
+#elif PACKETVER >= 20081112
+packetLen(0x03ac, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x03ac, 6)
+#elif PACKETVER >= 20081015
+packetLen(0x03ac, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x03ac, 5)
+#elif PACKETVER >= 20081001
+packetLen(0x03ac, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x03ac, 54)
+#elif PACKETVER >= 20080917
+packetLen(0x03ac, 28)
+#elif PACKETVER >= 20080910
+packetLen(0x03ac, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x03ac, 58)
+#elif PACKETVER >= 20080827
+packetLen(0x03ac, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x03ac, 6)
+#elif PACKETVER >= 20080813
+packetLen(0x03ac, 9)
+#elif PACKETVER >= 20080730
+packetLen(0x03ac, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x03ac, 8)
+#elif PACKETVER >= 20080624
+packetLen(0x03ac, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03ac, 282)
+#elif PACKETVER >= 20080528
+packetLen(0x03ac, -1)
+#endif
+
+// Packet: 0x03ad
+#if PACKETVER >= 20081217
+packetLen(0x03ad, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x03ad, 6)
+#elif PACKETVER >= 20081126
+packetLen(0x03ad, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x03ad, 22)
+#elif PACKETVER >= 20081112
+packetLen(0x03ad, 16)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x03ad, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x03ad, 10)
+#elif PACKETVER >= 20081022
+packetLen(0x03ad, 8)
+#elif PACKETVER >= 20081008
+packetLen(0x03ad, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x03ad, 7)
+#elif PACKETVER >= 20080827
+packetLen(0x03ad, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x03ad, 7)
+#elif PACKETVER >= 20080813
+packetLen(0x03ad, 8)
+#elif PACKETVER >= 20080722
+packetLen(0x03ad, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x03ad, 10)
+#elif PACKETVER >= 20080701
+packetLen(0x03ad, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x03ad, 2)
+#elif PACKETVER >= 20080617
+packetLen(0x03ad, 21)
+#elif PACKETVER >= 20080528
+packetLen(0x03ad, -1)
+#endif
+
+// Packet: 0x03ae
+#if PACKETVER >= 20081217
+packetLen(0x03ae, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x03ae, 30)
+#elif PACKETVER >= 20081126
+packetLen(0x03ae, 14)
+#elif PACKETVER >= 20081112
+packetLen(0x03ae, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x03ae, 4)
+#elif PACKETVER >= 20081029
+packetLen(0x03ae, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x03ae, 58)
+#elif PACKETVER >= 20081008
+packetLen(0x03ae, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x03ae, 20)
+#elif PACKETVER >= 20080917
+packetLen(0x03ae, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x03ae, 4)
+#elif PACKETVER >= 20080813
+packetLen(0x03ae, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x03ae, 4)
+#elif PACKETVER >= 20080730
+packetLen(0x03ae, 7)
+#elif PACKETVER >= 20080708
+packetLen(0x03ae, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x03ae, 8)
+#elif PACKETVER >= 20080624
+packetLen(0x03ae, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03ae, 57)
+#elif PACKETVER >= 20080528
+packetLen(0x03ae, -1)
+#endif
+
+// Packet: 0x03af
+#if PACKETVER >= 20081217
+packetLen(0x03af, 10)
+#elif PACKETVER >= 20081119
+packetLen(0x03af, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x03af, 6)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x03af, 22)
+#elif PACKETVER >= 20081029
+packetLen(0x03af, 7)
+#elif PACKETVER >= 20081022
+packetLen(0x03af, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x03af, 13)
+#elif PACKETVER >= 20081001
+packetLen(0x03af, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x03af, 4)
+#elif PACKETVER >= 20080917
+packetLen(0x03af, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x03af, 5)
+#elif PACKETVER >= 20080903
+packetLen(0x03af, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x03af, 6)
+#elif PACKETVER >= 20080820
+packetLen(0x03af, 60)
+#elif PACKETVER >= 20080813
+packetLen(0x03af, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x03af, 23)
+#elif PACKETVER >= 20080730
+packetLen(0x03af, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x03af, 10)
+#elif PACKETVER >= 20080715
+packetLen(0x03af, 3)
+#elif PACKETVER >= 20080708
+packetLen(0x03af, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x03af, 2)
+#elif PACKETVER >= 20080624
+packetLen(0x03af, 10)
+#elif PACKETVER >= 20080617
+packetLen(0x03af, 14)
+#elif PACKETVER >= 20080528
+packetLen(0x03af, -1)
+#endif
+
+// Packet: 0x03b0
+#if PACKETVER >= 20081217
+packetLen(0x03b0, 26)
+#elif PACKETVER >= 20081126
+packetLen(0x03b0, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x03b0, 4)
+#elif PACKETVER >= 20081029
+packetLen(0x03b0, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x03b0, 6)
+#elif PACKETVER >= 20081015
+packetLen(0x03b0, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x03b0, 2)
+#elif PACKETVER >= 20080910
+packetLen(0x03b0, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x03b0, 33)
+#elif PACKETVER >= 20080827
+packetLen(0x03b0, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x03b0, 81)
+#elif PACKETVER >= 20080813
+packetLen(0x03b0, 282)
+#elif PACKETVER >= 20080806
+packetLen(0x03b0, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x03b0, 10)
+#elif PACKETVER >= 20080722
+packetLen(0x03b0, 4)
+#elif PACKETVER >= 20080708
+packetLen(0x03b0, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x03b0, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x03b0, -1)
+#endif
+
+// Packet: 0x03b1
+#if PACKETVER >= 20081217
+packetLen(0x03b1, 22)
+#elif PACKETVER >= 20081029
+packetLen(0x03b1, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x03b1, 6)
+#elif PACKETVER >= 20081008
+packetLen(0x03b1, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x03b1, 7)
+#elif PACKETVER >= 20080924
+packetLen(0x03b1, 20)
+#elif PACKETVER >= 20080917
+packetLen(0x03b1, 6)
+#elif PACKETVER >= 20080910
+packetLen(0x03b1, 10)
+#elif PACKETVER >= 20080903
+packetLen(0x03b1, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x03b1, 2)
+#elif PACKETVER >= 20080730
+packetLen(0x03b1, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x03b1, 4)
+#elif PACKETVER >= 20080715
+packetLen(0x03b1, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x03b1, 4)
+#elif PACKETVER >= 20080528
+packetLen(0x03b1, -1)
+#endif
+
+// Packet: 0x03b2
+#if PACKETVER >= 20081217
+packetLen(0x03b2, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x03b2, 6)
+#elif PACKETVER >= 20081126
+packetLen(0x03b2, 4)
+#elif PACKETVER >= 20081119
+packetLen(0x03b2, 32)
+#elif PACKETVER >= 20081029
+packetLen(0x03b2, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x03b2, 10)
+#elif PACKETVER >= 20081015
+packetLen(0x03b2, 282)
+#elif PACKETVER >= 20081008
+packetLen(0x03b2, 2)
+#elif PACKETVER >= 20081001
+packetLen(0x03b2, 6)
+#elif PACKETVER >= 20080806
+packetLen(0x03b2, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x03b2, 2)
+#elif PACKETVER >= 20080722
+packetLen(0x03b2, 86)
+#elif PACKETVER >= 20080715
+packetLen(0x03b2, 4)
+#elif PACKETVER >= 20080624
+packetLen(0x03b2, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03b2, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x03b2, -1)
+#endif
+
+// Packet: 0x03b3
+#if PACKETVER >= 20081203
+packetLen(0x03b3, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x03b3, 6)
+#elif PACKETVER >= 20081119
+packetLen(0x03b3, 8)
+#elif PACKETVER >= 20081112
+packetLen(0x03b3, 26)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x03b3, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x03b3, 6)
+#elif PACKETVER >= 20081008
+packetLen(0x03b3, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x03b3, 17)
+#elif PACKETVER >= 20080924
+packetLen(0x03b3, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x03b3, 11)
+#elif PACKETVER >= 20080903
+packetLen(0x03b3, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x03b3, 3)
+#elif PACKETVER >= 20080820
+packetLen(0x03b3, 6)
+#elif PACKETVER >= 20080813
+packetLen(0x03b3, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x03b3, 24)
+#elif PACKETVER >= 20080730
+packetLen(0x03b3, 4)
+#elif PACKETVER >= 20080624
+packetLen(0x03b3, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03b3, 32)
+#elif PACKETVER >= 20080528
+packetLen(0x03b3, -1)
+#endif
+
+// Packet: 0x03b4
+#if PACKETVER >= 20081203
+packetLen(0x03b4, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x03b4, 42)
+#elif PACKETVER >= 20081119
+packetLen(0x03b4, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x03b4, 8)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x03b4, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x03b4, 8)
+#elif PACKETVER >= 20081022
+packetLen(0x03b4, 14)
+#elif PACKETVER >= 20081015
+packetLen(0x03b4, 2)
+#elif PACKETVER >= 20081008
+packetLen(0x03b4, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x03b4, 60)
+#elif PACKETVER >= 20080924
+packetLen(0x03b4, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x03b4, 54)
+#elif PACKETVER >= 20080910
+packetLen(0x03b4, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x03b4, 4)
+#elif PACKETVER >= 20080827
+packetLen(0x03b4, 15)
+#elif PACKETVER >= 20080820
+packetLen(0x03b4, 6)
+#elif PACKETVER >= 20080813
+packetLen(0x03b4, 8)
+#elif PACKETVER >= 20080806
+packetLen(0x03b4, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x03b4, 15)
+#elif PACKETVER >= 20080722
+packetLen(0x03b4, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x03b4, 2)
+#elif PACKETVER >= 20080701
+packetLen(0x03b4, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x03b4, 27)
+#elif PACKETVER >= 20080617
+packetLen(0x03b4, 29)
+#elif PACKETVER >= 20080528
+packetLen(0x03b4, -1)
+#endif
+
+// Packet: 0x03b5
+#if PACKETVER >= 20081217
+packetLen(0x03b5, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x03b5, 20)
+#elif PACKETVER >= 20081126
+packetLen(0x03b5, 33)
+#elif PACKETVER >= 20081119
+packetLen(0x03b5, 8)
+#elif PACKETVER >= 20081112
+packetLen(0x03b5, 2)
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x03b5, 2)
+#elif PACKETVER >= 20081001
+packetLen(0x03b5, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x03b5, 66)
+#elif PACKETVER >= 20080917
+packetLen(0x03b5, 31)
+#elif PACKETVER >= 20080910
+packetLen(0x03b5, 10)
+#elif PACKETVER >= 20080813
+packetLen(0x03b5, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x03b5, 14)
+#elif PACKETVER >= 20080730
+packetLen(0x03b5, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x03b5, 2)
+#elif PACKETVER >= 20080715
+packetLen(0x03b5, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x03b5, 11)
+#elif PACKETVER >= 20080528
+packetLen(0x03b5, -1)
+#endif
+
+// Packet: 0x03b6
+#if PACKETVER >= 20081112
+packetLen(0x03b6, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x03b6, 16)
+#elif PACKETVER >= 20081029
+packetLen(0x03b6, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x03b6, 6)
+#elif PACKETVER >= 20081015
+packetLen(0x03b6, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x03b6, 10)
+#elif PACKETVER >= 20081001
+packetLen(0x03b6, 86)
+#elif PACKETVER >= 20080924
+packetLen(0x03b6, 6)
+#elif PACKETVER >= 20080917
+packetLen(0x03b6, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x03b6, 8)
+#elif PACKETVER >= 20080820
+packetLen(0x03b6, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x03b6, 28)
+#elif PACKETVER >= 20080806
+packetLen(0x03b6, 5)
+#elif PACKETVER >= 20080708
+packetLen(0x03b6, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x03b6, 10)
+#elif PACKETVER >= 20080624
+packetLen(0x03b6, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03b6, 114)
+#elif PACKETVER >= 20080528
+packetLen(0x03b6, -1)
+#endif
+
+// Packet: 0x03b7
+#if PACKETVER >= 20081217
+packetLen(0x03b7, 29)
+#elif PACKETVER >= 20081203
+packetLen(0x03b7, 182)
+#elif PACKETVER >= 20081126
+packetLen(0x03b7, 2)
+#elif PACKETVER >= 20081119
+packetLen(0x03b7, 6)
+#elif PACKETVER >= 20081112
+packetLen(0x03b7, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x03b7, 7)
+#elif PACKETVER >= 20081022
+packetLen(0x03b7, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x03b7, 28)
+#elif PACKETVER >= 20081008
+packetLen(0x03b7, 34)
+#elif PACKETVER >= 20081001
+packetLen(0x03b7, 30)
+#elif PACKETVER >= 20080924
+packetLen(0x03b7, 21)
+#elif PACKETVER >= 20080903
+packetLen(0x03b7, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x03b7, 2)
+#elif PACKETVER >= 20080820
+packetLen(0x03b7, 68)
+#elif PACKETVER >= 20080813
+packetLen(0x03b7, 34)
+#elif PACKETVER >= 20080806
+packetLen(0x03b7, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x03b7, 67)
+#elif PACKETVER >= 20080722
+packetLen(0x03b7, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x03b7, 9)
+#elif PACKETVER >= 20080708
+packetLen(0x03b7, 4)
+#elif PACKETVER >= 20080701
+packetLen(0x03b7, 2)
+#elif PACKETVER >= 20080624
+packetLen(0x03b7, 4)
+#elif PACKETVER >= 20080617
+packetLen(0x03b7, 8)
+#elif PACKETVER >= 20080528
+packetLen(0x03b7, -1)
+#endif
+
+// Packet: 0x03b8
+#if PACKETVER >= 20081119
+packetLen(0x03b8, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x03b8, 2)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x03b8, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x03b8, 3)
+#elif PACKETVER >= 20081008
+packetLen(0x03b8, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x03b8, 11)
+#elif PACKETVER >= 20080924
+packetLen(0x03b8, 4)
+#elif PACKETVER >= 20080910
+packetLen(0x03b8, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x03b8, 53)
+#elif PACKETVER >= 20080827
+packetLen(0x03b8, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x03b8, 6)
+#elif PACKETVER >= 20080730
+packetLen(0x03b8, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x03b8, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x03b8, -1)
+#endif
+
+// Packet: 0x03b9
+#if PACKETVER >= 20081217
+packetLen(0x03b9, 18)
+#elif PACKETVER >= 20081203
+packetLen(0x03b9, 3)
+#elif PACKETVER >= 20081126
+packetLen(0x03b9, 2)
+#elif PACKETVER >= 20081119
+packetLen(0x03b9, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x03b9, 30)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x03b9, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x03b9, 7)
+#elif PACKETVER >= 20081015
+packetLen(0x03b9, 10)
+#elif PACKETVER >= 20081008
+packetLen(0x03b9, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x03b9, 6)
+#elif PACKETVER >= 20080917
+packetLen(0x03b9, 22)
+#elif PACKETVER >= 20080910
+packetLen(0x03b9, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x03b9, 18)
+#elif PACKETVER >= 20080827
+packetLen(0x03b9, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x03b9, 10)
+#elif PACKETVER >= 20080806
+packetLen(0x03b9, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x03b9, 14)
+#elif PACKETVER >= 20080722
+packetLen(0x03b9, 5)
+#elif PACKETVER >= 20080715
+packetLen(0x03b9, 79)
+#elif PACKETVER >= 20080708
+packetLen(0x03b9, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x03b9, 28)
+#elif PACKETVER >= 20080624
+packetLen(0x03b9, 19)
+#elif PACKETVER >= 20080528
+packetLen(0x03b9, -1)
+#endif
+
+// Packet: 0x03ba
+#if PACKETVER >= 20081217
+packetLen(0x03ba, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x03ba, 7)
+#elif PACKETVER >= 20081126
+packetLen(0x03ba, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x03ba, 6)
+#elif PACKETVER >= 20081105
+packetLen(0x03ba, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x03ba, 3)
+#elif PACKETVER >= 20081022
+packetLen(0x03ba, 13)
+#elif PACKETVER >= 20081015
+packetLen(0x03ba, 65)
+#elif PACKETVER >= 20081008
+packetLen(0x03ba, 30)
+#elif PACKETVER >= 20081001
+packetLen(0x03ba, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x03ba, 4)
+#elif PACKETVER >= 20080917
+packetLen(0x03ba, 7)
+#elif PACKETVER >= 20080910
+packetLen(0x03ba, 60)
+#elif PACKETVER >= 20080903
+packetLen(0x03ba, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x03ba, 30)
+#elif PACKETVER >= 20080820
+packetLen(0x03ba, 8)
+#elif PACKETVER >= 20080813
+packetLen(0x03ba, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x03ba, 6)
+#elif PACKETVER >= 20080730
+packetLen(0x03ba, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x03ba, 6)
+#elif PACKETVER >= 20080715
+packetLen(0x03ba, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x03ba, 7)
+#elif PACKETVER >= 20080701
+packetLen(0x03ba, 14)
+#elif PACKETVER >= 20080624
+packetLen(0x03ba, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03ba, 26)
+#elif PACKETVER >= 20080528
+packetLen(0x03ba, -1)
+#endif
+
+// Packet: 0x03bb
+#if PACKETVER >= 20081217
+packetLen(0x03bb, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x03bb, 30)
+#elif PACKETVER >= 20081126
+packetLen(0x03bb, 34)
+#elif PACKETVER >= 20081119
+packetLen(0x03bb, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x03bb, 6)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x03bb, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x03bb, 17)
+#elif PACKETVER >= 20081015
+packetLen(0x03bb, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x03bb, 26)
+#elif PACKETVER >= 20080924
+packetLen(0x03bb, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x03bb, 3)
+#elif PACKETVER >= 20080910
+packetLen(0x03bb, 8)
+#elif PACKETVER >= 20080903
+packetLen(0x03bb, 6)
+#elif PACKETVER >= 20080813
+packetLen(0x03bb, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x03bb, 4)
+#elif PACKETVER >= 20080730
+packetLen(0x03bb, 9)
+#elif PACKETVER >= 20080722
+packetLen(0x03bb, 10)
+#elif PACKETVER >= 20080701
+packetLen(0x03bb, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x03bb, 28)
+#elif PACKETVER >= 20080528
+packetLen(0x03bb, -1)
+#endif
+
+// Packet: 0x03bc
+#if PACKETVER >= 20081126
+packetLen(0x03bc, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x03bc, 3)
+#elif PACKETVER >= 20081105
+packetLen(0x03bc, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x03bc, 6)
+#elif PACKETVER >= 20081022
+packetLen(0x03bc, 3)
+#elif PACKETVER >= 20081015
+packetLen(0x03bc, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x03bc, 14)
+#elif PACKETVER >= 20081001
+packetLen(0x03bc, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x03bc, 26)
+#elif PACKETVER >= 20080917
+packetLen(0x03bc, 4)
+#elif PACKETVER >= 20080910
+packetLen(0x03bc, 10)
+#elif PACKETVER >= 20080903
+packetLen(0x03bc, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x03bc, 4)
+#elif PACKETVER >= 20080820
+packetLen(0x03bc, 2)
+#elif PACKETVER >= 20080730
+packetLen(0x03bc, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x03bc, 10)
+#elif PACKETVER >= 20080715
+packetLen(0x03bc, 13)
+#elif PACKETVER >= 20080708
+packetLen(0x03bc, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x03bc, 54)
+#elif PACKETVER >= 20080624
+packetLen(0x03bc, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03bc, 182)
+#elif PACKETVER >= 20080528
+packetLen(0x03bc, -1)
+#endif
+
+// Packet: 0x03bd
+#if PACKETVER >= 20081203
+packetLen(0x03bd, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x03bd, 3)
+#elif PACKETVER >= 20081112
+packetLen(0x03bd, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x03bd, 3)
+#elif PACKETVER >= 20081029
+packetLen(0x03bd, 6)
+#elif PACKETVER >= 20081008
+packetLen(0x03bd, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x03bd, 4)
+#elif PACKETVER >= 20080910
+packetLen(0x03bd, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x03bd, 6)
+#elif PACKETVER >= 20080827
+packetLen(0x03bd, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x03bd, 27)
+#elif PACKETVER >= 20080813
+packetLen(0x03bd, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x03bd, 31)
+#elif PACKETVER >= 20080730
+packetLen(0x03bd, 6)
+#elif PACKETVER >= 20080708
+packetLen(0x03bd, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x03bd, 29)
+#elif PACKETVER >= 20080528
+packetLen(0x03bd, -1)
+#endif
+
+// Packet: 0x03be
+#if PACKETVER >= 20081217
+packetLen(0x03be, 6)
+#elif PACKETVER >= 20081203
+packetLen(0x03be, 31)
+#elif PACKETVER >= 20081112
+packetLen(0x03be, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x03be, 2)
+#elif PACKETVER >= 20081029
+packetLen(0x03be, 28)
+#elif PACKETVER >= 20081022
+packetLen(0x03be, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x03be, 6)
+#elif PACKETVER >= 20081008
+packetLen(0x03be, 26)
+#elif PACKETVER >= 20080924
+packetLen(0x03be, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x03be, 19)
+#elif PACKETVER >= 20080910
+packetLen(0x03be, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x03be, 6)
+#elif PACKETVER >= 20080820
+packetLen(0x03be, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x03be, 22)
+#elif PACKETVER >= 20080806
+packetLen(0x03be, 5)
+#elif PACKETVER >= 20080730
+packetLen(0x03be, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x03be, 27)
+#elif PACKETVER >= 20080715
+packetLen(0x03be, 6)
+#elif PACKETVER >= 20080708
+packetLen(0x03be, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x03be, 282)
+#elif PACKETVER >= 20080624
+packetLen(0x03be, 3)
+#elif PACKETVER >= 20080528
+packetLen(0x03be, -1)
+#endif
+
+// Packet: 0x03bf
+#if PACKETVER >= 20081217
+packetLen(0x03bf, 28)
+#elif PACKETVER >= 20081203
+packetLen(0x03bf, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x03bf, 14)
+#elif PACKETVER >= 20081112
+packetLen(0x03bf, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x03bf, 4)
+#elif PACKETVER >= 20081029
+packetLen(0x03bf, 10)
+#elif PACKETVER >= 20081022
+packetLen(0x03bf, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x03bf, 2)
+#elif PACKETVER >= 20081001
+packetLen(0x03bf, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x03bf, 9)
+#elif PACKETVER >= 20080910
+packetLen(0x03bf, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x03bf, 14)
+#elif PACKETVER >= 20080827
+packetLen(0x03bf, 7)
+#elif PACKETVER >= 20080820
+packetLen(0x03bf, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x03bf, 2)
+#elif PACKETVER >= 20080806
+packetLen(0x03bf, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x03bf, 6)
+#elif PACKETVER >= 20080722
+packetLen(0x03bf, 8)
+#elif PACKETVER >= 20080715
+packetLen(0x03bf, 6)
+#elif PACKETVER >= 20080708
+packetLen(0x03bf, 23)
+#elif PACKETVER >= 20080701
+packetLen(0x03bf, 22)
+#elif PACKETVER >= 20080528
+packetLen(0x03bf, -1)
+#endif
+
+// Packet: 0x03c0
+#if PACKETVER >= 20081119
+packetLen(0x03c0, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x03c0, 17)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x03c0, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x03c0, 7)
+#elif PACKETVER >= 20081022
+packetLen(0x03c0, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x03c0, 36)
+#elif PACKETVER >= 20081008
+packetLen(0x03c0, 10)
+#elif PACKETVER >= 20081001
+packetLen(0x03c0, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x03c0, 20)
+#elif PACKETVER >= 20080917
+packetLen(0x03c0, 7)
+#elif PACKETVER >= 20080903
+packetLen(0x03c0, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x03c0, 14)
+#elif PACKETVER >= 20080820
+packetLen(0x03c0, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x03c0, 7)
+#elif PACKETVER >= 20080806
+packetLen(0x03c0, 12)
+#elif PACKETVER >= 20080722
+packetLen(0x03c0, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x03c0, 4)
+#elif PACKETVER >= 20080708
+packetLen(0x03c0, 6)
+#elif PACKETVER >= 20080701
+packetLen(0x03c0, 2)
+#elif PACKETVER >= 20080528
+packetLen(0x03c0, -1)
+#endif
+
+// Packet: 0x03c1
+#if PACKETVER >= 20081203
+packetLen(0x03c1, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x03c1, 4)
+#elif PACKETVER >= 20081119
+packetLen(0x03c1, 10)
+#elif PACKETVER >= 20081015
+packetLen(0x03c1, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x03c1, 6)
+#elif PACKETVER >= 20081001
+packetLen(0x03c1, 18)
+#elif PACKETVER >= 20080924
+packetLen(0x03c1, 15)
+#elif PACKETVER >= 20080917
+packetLen(0x03c1, 17)
+#elif PACKETVER >= 20080910
+packetLen(0x03c1, 60)
+#elif PACKETVER >= 20080806
+packetLen(0x03c1, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x03c1, 2)
+#elif PACKETVER >= 20080722
+packetLen(0x03c1, 58)
+#elif PACKETVER >= 20080624
+packetLen(0x03c1, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03c1, 7)
+#elif PACKETVER >= 20080528
+packetLen(0x03c1, -1)
+#endif
+
+// Packet: 0x03c2
+#if PACKETVER >= 20081126
+packetLen(0x03c2, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x03c2, 20)
+#elif PACKETVER >= 20081112
+packetLen(0x03c2, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x03c2, 3)
+#elif PACKETVER >= 20081029
+packetLen(0x03c2, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x03c2, 29)
+#elif PACKETVER >= 20081015
+packetLen(0x03c2, 6)
+#elif PACKETVER >= 20081008
+packetLen(0x03c2, 4)
+#elif PACKETVER >= 20080917
+packetLen(0x03c2, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x03c2, 7)
+#elif PACKETVER >= 20080903
+packetLen(0x03c2, 8)
+#elif PACKETVER >= 20080827
+packetLen(0x03c2, 6)
+#elif PACKETVER >= 20080806
+packetLen(0x03c2, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x03c2, 3)
+#elif PACKETVER >= 20080722
+packetLen(0x03c2, 9)
+#elif PACKETVER >= 20080715
+packetLen(0x03c2, 14)
+#elif PACKETVER >= 20080708
+packetLen(0x03c2, 3)
+#elif PACKETVER >= 20080701
+packetLen(0x03c2, 10)
+#elif PACKETVER >= 20080624
+packetLen(0x03c2, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03c2, 67)
+#elif PACKETVER >= 20080528
+packetLen(0x03c2, -1)
+#endif
+
+// Packet: 0x03c3
+#if PACKETVER >= 20081217
+packetLen(0x03c3, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x03c3, 14)
+#elif PACKETVER >= 20081119
+packetLen(0x03c3, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x03c3, 6)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x03c3, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x03c3, 11)
+#elif PACKETVER >= 20081015
+packetLen(0x03c3, 13)
+#elif PACKETVER >= 20081008
+packetLen(0x03c3, 90)
+#elif PACKETVER >= 20081001
+packetLen(0x03c3, 4)
+#elif PACKETVER >= 20080924
+packetLen(0x03c3, 5)
+#elif PACKETVER >= 20080806
+packetLen(0x03c3, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x03c3, 6)
+#elif PACKETVER >= 20080715
+packetLen(0x03c3, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x03c3, 3)
+#elif PACKETVER >= 20080528
+packetLen(0x03c3, -1)
+#endif
+
+// Packet: 0x03c4
+#if PACKETVER >= 20081217
+packetLen(0x03c4, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x03c4, 29)
+#elif PACKETVER >= 20081126
+packetLen(0x03c4, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x03c4, 33)
+#elif PACKETVER >= 20081112
+packetLen(0x03c4, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x03c4, 7)
+#elif PACKETVER >= 20081029
+packetLen(0x03c4, 186)
+#elif PACKETVER >= 20080827
+packetLen(0x03c4, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x03c4, 65)
+#elif PACKETVER >= 20080813
+packetLen(0x03c4, 29)
+#elif PACKETVER >= 20080806
+packetLen(0x03c4, 5)
+#elif PACKETVER >= 20080730
+packetLen(0x03c4, 6)
+#elif PACKETVER >= 20080722
+packetLen(0x03c4, 7)
+#elif PACKETVER >= 20080715
+packetLen(0x03c4, 28)
+#elif PACKETVER >= 20080528
+packetLen(0x03c4, -1)
+#endif
+
+// Packet: 0x03c5
+#if PACKETVER >= 20081217
+packetLen(0x03c5, 12)
+#elif PACKETVER >= 20081029
+packetLen(0x03c5, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x03c5, 18)
+#elif PACKETVER >= 20080708
+packetLen(0x03c5, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x03c5, 35)
+#elif PACKETVER >= 20080624
+packetLen(0x03c5, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03c5, 2)
+#elif PACKETVER >= 20080528
+packetLen(0x03c5, -1)
+#endif
+
+// Packet: 0x03c6
+#if PACKETVER >= 20081217
+packetLen(0x03c6, 7)
+#elif PACKETVER >= 20081015
+packetLen(0x03c6, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x03c6, 54)
+#elif PACKETVER >= 20081001
+packetLen(0x03c6, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x03c6, 6)
+#elif PACKETVER >= 20080917
+packetLen(0x03c6, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x03c6, 6)
+#elif PACKETVER >= 20080903
+packetLen(0x03c6, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x03c6, 29)
+#elif PACKETVER >= 20080820
+packetLen(0x03c6, 32)
+#elif PACKETVER >= 20080715
+packetLen(0x03c6, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x03c6, 53)
+#elif PACKETVER >= 20080624
+packetLen(0x03c6, 6)
+#elif PACKETVER >= 20080617
+packetLen(0x03c6, 7)
+#elif PACKETVER >= 20080528
+packetLen(0x03c6, -1)
+#endif
+
+// Packet: 0x03c7
+#if PACKETVER >= 20081217
+packetLen(0x03c7, 9)
+#elif PACKETVER >= 20081203
+packetLen(0x03c7, 6)
+#elif PACKETVER >= 20081119
+packetLen(0x03c7, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x03c7, 26)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x03c7, 14)
+#elif PACKETVER >= 20081015
+packetLen(0x03c7, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x03c7, 16)
+#elif PACKETVER >= 20081001
+packetLen(0x03c7, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x03c7, 10)
+#elif PACKETVER >= 20080917
+packetLen(0x03c7, 5)
+#elif PACKETVER >= 20080806
+packetLen(0x03c7, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x03c7, 5)
+#elif PACKETVER >= 20080722
+packetLen(0x03c7, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x03c7, 4)
+#elif PACKETVER >= 20080624
+packetLen(0x03c7, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03c7, 5)
+#elif PACKETVER >= 20080528
+packetLen(0x03c7, -1)
+#endif
+
+// Packet: 0x03c8
+#if PACKETVER >= 20081022
+packetLen(0x03c8, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x03c8, 15)
+#elif PACKETVER >= 20081008
+packetLen(0x03c8, 67)
+#elif PACKETVER >= 20081001
+packetLen(0x03c8, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x03c8, 53)
+#elif PACKETVER >= 20080917
+packetLen(0x03c8, 3)
+#elif PACKETVER >= 20080910
+packetLen(0x03c8, 2)
+#elif PACKETVER >= 20080903
+packetLen(0x03c8, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x03c8, 22)
+#elif PACKETVER >= 20080820
+packetLen(0x03c8, 8)
+#elif PACKETVER >= 20080813
+packetLen(0x03c8, 54)
+#elif PACKETVER >= 20080806
+packetLen(0x03c8, 6)
+#elif PACKETVER >= 20080730
+packetLen(0x03c8, 2)
+#elif PACKETVER >= 20080722
+packetLen(0x03c8, 6)
+#elif PACKETVER >= 20080715
+packetLen(0x03c8, 32)
+#elif PACKETVER >= 20080708
+packetLen(0x03c8, 9)
+#elif PACKETVER >= 20080528
+packetLen(0x03c8, -1)
+#endif
+
+// Packet: 0x03c9
+#if PACKETVER >= 20081217
+packetLen(0x03c9, 68)
+#elif PACKETVER >= 20081119
+packetLen(0x03c9, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x03c9, 10)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081015
+packetLen(0x03c9, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x03c9, 4)
+#elif PACKETVER >= 20080917
+packetLen(0x03c9, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x03c9, 6)
+#elif PACKETVER >= 20080903
+packetLen(0x03c9, 4)
+#elif PACKETVER >= 20080827
+packetLen(0x03c9, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x03c9, 2)
+#elif PACKETVER >= 20080813
+packetLen(0x03c9, 8)
+#elif PACKETVER >= 20080806
+packetLen(0x03c9, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x03c9, 16)
+#elif PACKETVER >= 20080722
+packetLen(0x03c9, 2)
+#elif PACKETVER >= 20080715
+packetLen(0x03c9, 33)
+#elif PACKETVER >= 20080528
+packetLen(0x03c9, -1)
+#endif
+
+// Packet: 0x03ca
+#if PACKETVER >= 20081217
+packetLen(0x03ca, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x03ca, 5)
+#elif PACKETVER >= 20081126
+packetLen(0x03ca, 53)
+#elif PACKETVER >= 20081119
+packetLen(0x03ca, 4)
+#elif PACKETVER >= 20081105
+packetLen(0x03ca, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x03ca, 14)
+#elif PACKETVER >= 20081022
+packetLen(0x03ca, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x03ca, 8)
+#elif PACKETVER >= 20081008
+packetLen(0x03ca, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x03ca, 29)
+#elif PACKETVER >= 20080924
+packetLen(0x03ca, 6)
+#elif PACKETVER >= 20080917
+packetLen(0x03ca, 8)
+#elif PACKETVER >= 20080910
+packetLen(0x03ca, 53)
+#elif PACKETVER >= 20080903
+packetLen(0x03ca, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x03ca, 30)
+#elif PACKETVER >= 20080820
+packetLen(0x03ca, 4)
+#elif PACKETVER >= 20080813
+packetLen(0x03ca, 5)
+#elif PACKETVER >= 20080806
+packetLen(0x03ca, 10)
+#elif PACKETVER >= 20080528
+packetLen(0x03ca, -1)
+#endif
+
+// Packet: 0x03cb
+#if PACKETVER >= 20081217
+packetLen(0x03cb, 2)
+#elif PACKETVER >= 20081126
+packetLen(0x03cb, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x03cb, 30)
+#elif PACKETVER >= 20081112
+packetLen(0x03cb, 6)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x03cb, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x03cb, 26)
+#elif PACKETVER >= 20081022
+packetLen(0x03cb, 4)
+#elif PACKETVER >= 20081015
+packetLen(0x03cb, 5)
+#elif PACKETVER >= 20081008
+packetLen(0x03cb, 9)
+#elif PACKETVER >= 20080924
+packetLen(0x03cb, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x03cb, 4)
+#elif PACKETVER >= 20080730
+packetLen(0x03cb, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x03cb, 22)
+#elif PACKETVER >= 20080708
+packetLen(0x03cb, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x03cb, 7)
+#elif PACKETVER >= 20080528
+packetLen(0x03cb, -1)
+#endif
+
+// Packet: 0x03cc
+#if PACKETVER >= 20081203
+packetLen(0x03cc, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x03cc, 2)
+#elif PACKETVER >= 20081105
+packetLen(0x03cc, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x03cc, 4)
+#elif PACKETVER >= 20081022
+packetLen(0x03cc, 10)
+#elif PACKETVER >= 20081015
+packetLen(0x03cc, 9)
+#elif PACKETVER >= 20080910
+packetLen(0x03cc, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x03cc, 36)
+#elif PACKETVER >= 20080827
+packetLen(0x03cc, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x03cc, 2)
+#elif PACKETVER >= 20080813
+packetLen(0x03cc, 4)
+#elif PACKETVER >= 20080806
+packetLen(0x03cc, 14)
+#elif PACKETVER >= 20080730
+packetLen(0x03cc, 4)
+#elif PACKETVER >= 20080722
+packetLen(0x03cc, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x03cc, 31)
+#elif PACKETVER >= 20080708
+packetLen(0x03cc, 7)
+#elif PACKETVER >= 20080701
+packetLen(0x03cc, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x03cc, 35)
+#elif PACKETVER >= 20080617
+packetLen(0x03cc, 7)
+#elif PACKETVER >= 20080528
+packetLen(0x03cc, -1)
+#endif
+
+// Packet: 0x03cd
+#if PACKETVER >= 20081203
+packetLen(0x03cd, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x03cd, 6)
+#elif PACKETVER >= 20081119
+packetLen(0x03cd, 43)
+#elif PACKETVER >= 20081112
+packetLen(0x03cd, 6)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x03cd, 81)
+#elif PACKETVER >= 20081015
+packetLen(0x03cd, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x03cd, 79)
+#elif PACKETVER >= 20081001
+packetLen(0x03cd, 10)
+#elif PACKETVER >= 20080924
+packetLen(0x03cd, 6)
+#elif PACKETVER >= 20080903
+packetLen(0x03cd, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x03cd, 31)
+#elif PACKETVER >= 20080820
+packetLen(0x03cd, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x03cd, 8)
+#elif PACKETVER >= 20080806
+packetLen(0x03cd, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x03cd, 60)
+#elif PACKETVER >= 20080722
+packetLen(0x03cd, 4)
+#elif PACKETVER >= 20080708
+packetLen(0x03cd, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x03cd, 65)
+#elif PACKETVER >= 20080624
+packetLen(0x03cd, 7)
+#elif PACKETVER >= 20080528
+packetLen(0x03cd, -1)
+#endif
+
+// Packet: 0x03ce
+#if PACKETVER >= 20081119
+packetLen(0x03ce, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x03ce, 6)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x03ce, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x03ce, 30)
+#elif PACKETVER >= 20081015
+packetLen(0x03ce, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x03ce, 6)
+#elif PACKETVER >= 20080924
+packetLen(0x03ce, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x03ce, 9)
+#elif PACKETVER >= 20080910
+packetLen(0x03ce, 8)
+#elif PACKETVER >= 20080827
+packetLen(0x03ce, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x03ce, 6)
+#elif PACKETVER >= 20080701
+packetLen(0x03ce, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x03ce, 7)
+#elif PACKETVER >= 20080617
+packetLen(0x03ce, 39)
+#elif PACKETVER >= 20080528
+packetLen(0x03ce, -1)
+#endif
+
+// Packet: 0x03cf
+#if PACKETVER >= 20081217
+packetLen(0x03cf, 3)
+#elif PACKETVER >= 20081203
+packetLen(0x03cf, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x03cf, 6)
+#elif PACKETVER >= 20081022
+packetLen(0x03cf, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x03cf, 22)
+#elif PACKETVER >= 20081008
+packetLen(0x03cf, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x03cf, 26)
+#elif PACKETVER >= 20080924
+packetLen(0x03cf, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x03cf, 8)
+#elif PACKETVER >= 20080910
+packetLen(0x03cf, 2)
+#elif PACKETVER >= 20080827
+packetLen(0x03cf, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x03cf, 29)
+#elif PACKETVER >= 20080806
+packetLen(0x03cf, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x03cf, 65)
+#elif PACKETVER >= 20080722
+packetLen(0x03cf, 10)
+#elif PACKETVER >= 20080715
+packetLen(0x03cf, 4)
+#elif PACKETVER >= 20080701
+packetLen(0x03cf, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x03cf, 67)
+#elif PACKETVER >= 20080617
+packetLen(0x03cf, 27)
+#elif PACKETVER >= 20080528
+packetLen(0x03cf, -1)
+#endif
+
+// Packet: 0x03d0
+#if PACKETVER >= 20081217
+packetLen(0x03d0, 2)
+#elif PACKETVER >= 20081112
+packetLen(0x03d0, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x03d0, 3)
+#elif PACKETVER >= 20081029
+packetLen(0x03d0, 10)
+#elif PACKETVER >= 20081022
+packetLen(0x03d0, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x03d0, 10)
+#elif PACKETVER >= 20080820
+packetLen(0x03d0, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x03d0, 10)
+#elif PACKETVER >= 20080806
+packetLen(0x03d0, 9)
+#elif PACKETVER >= 20080730
+packetLen(0x03d0, 6)
+#elif PACKETVER >= 20080722
+packetLen(0x03d0, 14)
+#elif PACKETVER >= 20080715
+packetLen(0x03d0, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x03d0, 10)
+#elif PACKETVER >= 20080701
+packetLen(0x03d0, 8)
+#elif PACKETVER >= 20080624
+packetLen(0x03d0, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03d0, 4)
+#elif PACKETVER >= 20080528
+packetLen(0x03d0, -1)
+#endif
+
+// Packet: 0x03d1
+#if PACKETVER >= 20081203
+packetLen(0x03d1, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x03d1, 12)
+#elif PACKETVER >= 20081119
+packetLen(0x03d1, 28)
+#elif PACKETVER >= 20081112
+packetLen(0x03d1, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x03d1, 13)
+#elif PACKETVER >= 20081029
+packetLen(0x03d1, 4)
+#elif PACKETVER >= 20081022
+packetLen(0x03d1, 10)
+#elif PACKETVER >= 20081015
+packetLen(0x03d1, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x03d1, 86)
+#elif PACKETVER >= 20081001
+packetLen(0x03d1, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x03d1, 42)
+#elif PACKETVER >= 20080917
+packetLen(0x03d1, 26)
+#elif PACKETVER >= 20080910
+packetLen(0x03d1, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x03d1, 2)
+#elif PACKETVER >= 20080827
+packetLen(0x03d1, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x03d1, 26)
+#elif PACKETVER >= 20080813
+packetLen(0x03d1, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x03d1, 22)
+#elif PACKETVER >= 20080730
+packetLen(0x03d1, 2)
+#elif PACKETVER >= 20080722
+packetLen(0x03d1, 30)
+#elif PACKETVER >= 20080715
+packetLen(0x03d1, 17)
+#elif PACKETVER >= 20080708
+packetLen(0x03d1, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x03d1, 6)
+#elif PACKETVER >= 20080624
+packetLen(0x03d1, 81)
+#elif PACKETVER >= 20080617
+packetLen(0x03d1, 7)
+#elif PACKETVER >= 20080528
+packetLen(0x03d1, -1)
+#endif
+
+// Packet: 0x03d2
+#if PACKETVER >= 20081217
+packetLen(0x03d2, 29)
+#elif PACKETVER >= 20081126
+packetLen(0x03d2, 3)
+#elif PACKETVER >= 20081119
+packetLen(0x03d2, 29)
+#elif PACKETVER >= 20081112
+packetLen(0x03d2, 4)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081015
+packetLen(0x03d2, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x03d2, 2)
+#elif PACKETVER >= 20080924
+packetLen(0x03d2, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x03d2, 6)
+#elif PACKETVER >= 20080820
+packetLen(0x03d2, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x03d2, 27)
+#elif PACKETVER >= 20080806
+packetLen(0x03d2, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x03d2, 3)
+#elif PACKETVER >= 20080708
+packetLen(0x03d2, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x03d2, 90)
+#elif PACKETVER >= 20080624
+packetLen(0x03d2, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03d2, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x03d2, -1)
+#endif
+
+// Packet: 0x03d3
+#if PACKETVER >= 20081217
+packetLen(0x03d3, 6)
+#elif PACKETVER >= 20081203
+packetLen(0x03d3, 12)
+#elif PACKETVER >= 20081119
+packetLen(0x03d3, 4)
+#elif PACKETVER >= 20081112
+packetLen(0x03d3, 24)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x03d3, 26)
+#elif PACKETVER >= 20081029
+packetLen(0x03d3, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x03d3, 71)
+#elif PACKETVER >= 20081015
+packetLen(0x03d3, 8)
+#elif PACKETVER >= 20081008
+packetLen(0x03d3, 16)
+#elif PACKETVER >= 20081001
+packetLen(0x03d3, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x03d3, 16)
+#elif PACKETVER >= 20080910
+packetLen(0x03d3, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x03d3, 3)
+#elif PACKETVER >= 20080827
+packetLen(0x03d3, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x03d3, 42)
+#elif PACKETVER >= 20080813
+packetLen(0x03d3, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x03d3, 30)
+#elif PACKETVER >= 20080722
+packetLen(0x03d3, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x03d3, 7)
+#elif PACKETVER >= 20080701
+packetLen(0x03d3, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x03d3, 2)
+#elif PACKETVER >= 20080528
+packetLen(0x03d3, -1)
+#endif
+
+// Packet: 0x03d4
+#if PACKETVER >= 20081203
+packetLen(0x03d4, 14)
+#elif PACKETVER >= 20081126
+packetLen(0x03d4, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x03d4, 114)
+#elif PACKETVER >= 20081105
+packetLen(0x03d4, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x03d4, 2)
+#elif PACKETVER >= 20081022
+packetLen(0x03d4, 30)
+#elif PACKETVER >= 20081008
+packetLen(0x03d4, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x03d4, 31)
+#elif PACKETVER >= 20080924
+packetLen(0x03d4, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x03d4, 2)
+#elif PACKETVER >= 20080910
+packetLen(0x03d4, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x03d4, 32)
+#elif PACKETVER >= 20080827
+packetLen(0x03d4, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x03d4, 4)
+#elif PACKETVER >= 20080806
+packetLen(0x03d4, -1)
+#elif PACKETVER >= 20080730
+packetLen(0x03d4, 8)
+#elif PACKETVER >= 20080715
+packetLen(0x03d4, -1)
+#elif PACKETVER >= 20080708
+packetLen(0x03d4, 54)
+#elif PACKETVER >= 20080701
+packetLen(0x03d4, 12)
+#elif PACKETVER >= 20080624
+packetLen(0x03d4, 14)
+#elif PACKETVER >= 20080617
+packetLen(0x03d4, 27)
+#elif PACKETVER >= 20080528
+packetLen(0x03d4, -1)
+#endif
+
+// Packet: 0x03d5
+#if PACKETVER >= 20081217
+packetLen(0x03d5, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x03d5, 8)
+#elif PACKETVER >= 20081126
+packetLen(0x03d5, 6)
+#elif PACKETVER >= 20081119
+packetLen(0x03d5, 102)
+#elif PACKETVER >= 20081112
+packetLen(0x03d5, 60)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x03d5, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x03d5, 10)
+#elif PACKETVER >= 20081008
+packetLen(0x03d5, 30)
+#elif PACKETVER >= 20081001
+packetLen(0x03d5, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x03d5, 6)
+#elif PACKETVER >= 20080917
+packetLen(0x03d5, 4)
+#elif PACKETVER >= 20080910
+packetLen(0x03d5, 7)
+#elif PACKETVER >= 20080903
+packetLen(0x03d5, 8)
+#elif PACKETVER >= 20080827
+packetLen(0x03d5, 3)
+#elif PACKETVER >= 20080820
+packetLen(0x03d5, 4)
+#elif PACKETVER >= 20080813
+packetLen(0x03d5, -1)
+#elif PACKETVER >= 20080806
+packetLen(0x03d5, 21)
+#elif PACKETVER >= 20080730
+packetLen(0x03d5, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x03d5, 11)
+#elif PACKETVER >= 20080624
+packetLen(0x03d5, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03d5, 4)
+#elif PACKETVER >= 20080528
+packetLen(0x03d5, -1)
+#endif
+
+// Packet: 0x03d6
+#if PACKETVER >= 20081203
+packetLen(0x03d6, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x03d6, 79)
+#elif PACKETVER >= 20081029
+packetLen(0x03d6, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x03d6, 66)
+#elif PACKETVER >= 20081015
+packetLen(0x03d6, 7)
+#elif PACKETVER >= 20081008
+packetLen(0x03d6, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x03d6, 79)
+#elif PACKETVER >= 20080924
+packetLen(0x03d6, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x03d6, 186)
+#elif PACKETVER >= 20080910
+packetLen(0x03d6, 2)
+#elif PACKETVER >= 20080903
+packetLen(0x03d6, 30)
+#elif PACKETVER >= 20080827
+packetLen(0x03d6, 2)
+#elif PACKETVER >= 20080820
+packetLen(0x03d6, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x03d6, 5)
+#elif PACKETVER >= 20080730
+packetLen(0x03d6, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x03d6, 6)
+#elif PACKETVER >= 20080715
+packetLen(0x03d6, 11)
+#elif PACKETVER >= 20080708
+packetLen(0x03d6, 14)
+#elif PACKETVER >= 20080701
+packetLen(0x03d6, 114)
+#elif PACKETVER >= 20080528
+packetLen(0x03d6, -1)
+#endif
+
+// Packet: 0x03d7
+#if PACKETVER >= 20081217
+packetLen(0x03d7, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x03d7, 57)
+#elif PACKETVER >= 20081126
+packetLen(0x03d7, 10)
+#elif PACKETVER >= 20081119
+packetLen(0x03d7, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x03d7, 31)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x03d7, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x03d7, 11)
+#elif PACKETVER >= 20081015
+packetLen(0x03d7, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x03d7, 8)
+#elif PACKETVER >= 20081001
+packetLen(0x03d7, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x03d7, 8)
+#elif PACKETVER >= 20080910
+packetLen(0x03d7, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x03d7, 3)
+#elif PACKETVER >= 20080730
+packetLen(0x03d7, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x03d7, 3)
+#elif PACKETVER >= 20080715
+packetLen(0x03d7, 5)
+#elif PACKETVER >= 20080708
+packetLen(0x03d7, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x03d7, 23)
+#elif PACKETVER >= 20080528
+packetLen(0x03d7, -1)
+#endif
+
+// Packet: 0x03d8
+#if PACKETVER >= 20081217
+packetLen(0x03d8, 10)
+#elif PACKETVER >= 20081203
+packetLen(0x03d8, 2)
+#elif PACKETVER >= 20081126
+packetLen(0x03d8, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x03d8, 10)
+#elif PACKETVER >= 20081029
+packetLen(0x03d8, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x03d8, 14)
+#elif PACKETVER >= 20081015
+packetLen(0x03d8, 7)
+#elif PACKETVER >= 20081008
+packetLen(0x03d8, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x03d8, 60)
+#elif PACKETVER >= 20080917
+packetLen(0x03d8, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x03d8, 29)
+#elif PACKETVER >= 20080827
+packetLen(0x03d8, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x03d8, 6)
+#elif PACKETVER >= 20080813
+packetLen(0x03d8, 3)
+#elif PACKETVER >= 20080730
+packetLen(0x03d8, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x03d8, 8)
+#elif PACKETVER >= 20080715
+packetLen(0x03d8, 18)
+#elif PACKETVER >= 20080708
+packetLen(0x03d8, 282)
+#elif PACKETVER >= 20080701
+packetLen(0x03d8, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x03d8, 3)
+#elif PACKETVER >= 20080617
+packetLen(0x03d8, 2)
+#elif PACKETVER >= 20080528
+packetLen(0x03d8, -1)
+#endif
+
+// Packet: 0x03d9
+#if PACKETVER >= 20081217
+packetLen(0x03d9, 4)
+#elif PACKETVER >= 20081015
+packetLen(0x03d9, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x03d9, 30)
+#elif PACKETVER >= 20081001
+packetLen(0x03d9, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x03d9, 30)
+#elif PACKETVER >= 20080917
+packetLen(0x03d9, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x03d9, 6)
+#elif PACKETVER >= 20080903
+packetLen(0x03d9, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x03d9, 7)
+#elif PACKETVER >= 20080722
+packetLen(0x03d9, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x03d9, 6)
+#elif PACKETVER >= 20080708
+packetLen(0x03d9, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x03d9, 6)
+#elif PACKETVER >= 20080624
+packetLen(0x03d9, 30)
+#elif PACKETVER >= 20080528
+packetLen(0x03d9, -1)
+#endif
+
+// Packet: 0x03da
+#if PACKETVER >= 20081217
+packetLen(0x03da, 3)
+#elif PACKETVER >= 20081119
+packetLen(0x03da, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x03da, 5)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x03da, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x03da, 10)
+#elif PACKETVER >= 20081015
+packetLen(0x03da, 29)
+#elif PACKETVER >= 20081008
+packetLen(0x03da, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x03da, 22)
+#elif PACKETVER >= 20080924
+packetLen(0x03da, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x03da, 11)
+#elif PACKETVER >= 20080528
+packetLen(0x03da, -1)
+#endif
+
+// Packet: 0x03db
+#if PACKETVER >= 20081105
+packetLen(0x03db, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x03db, 8)
+#elif PACKETVER >= 20081022
+packetLen(0x03db, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x03db, 10)
+#elif PACKETVER >= 20081008
+packetLen(0x03db, 30)
+#elif PACKETVER >= 20081001
+packetLen(0x03db, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x03db, 23)
+#elif PACKETVER >= 20080917
+packetLen(0x03db, 7)
+#elif PACKETVER >= 20080910
+packetLen(0x03db, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x03db, 30)
+#elif PACKETVER >= 20080827
+packetLen(0x03db, 6)
+#elif PACKETVER >= 20080820
+packetLen(0x03db, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x03db, 3)
+#elif PACKETVER >= 20080730
+packetLen(0x03db, -1)
+#elif PACKETVER >= 20080722
+packetLen(0x03db, 3)
+#elif PACKETVER >= 20080708
+packetLen(0x03db, -1)
+#elif PACKETVER >= 20080701
+packetLen(0x03db, 79)
+#elif PACKETVER >= 20080624
+packetLen(0x03db, -1)
+#elif PACKETVER >= 20080617
+packetLen(0x03db, 6)
+#elif PACKETVER >= 20080528
+packetLen(0x03db, -1)
+#endif
+
+// Packet: 0x03dc
+#if PACKETVER >= 20081217
+packetLen(0x03dc, 10)
+#elif PACKETVER >= 20081203
+packetLen(0x03dc, 32)
+#elif PACKETVER >= 20081126
+packetLen(0x03dc, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x03dc, 26)
+#elif PACKETVER >= 20081112
+packetLen(0x03dc, 7)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x03dc, 68)
+#elif PACKETVER >= 20081022
+packetLen(0x03dc, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x03dc, 7)
+#elif PACKETVER >= 20080924
+packetLen(0x03dc, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x03dc, 2)
+#elif PACKETVER >= 20080910
+packetLen(0x03dc, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x03dc, 6)
+#elif PACKETVER >= 20080827
+packetLen(0x03dc, 12)
+#elif PACKETVER >= 20080820
+packetLen(0x03dc, 3)
+#elif PACKETVER >= 20080806
+packetLen(0x03dc, 6)
+#elif PACKETVER >= 20080730
+packetLen(0x03dc, 30)
+#elif PACKETVER >= 20080722
+packetLen(0x03dc, -1)
+#elif PACKETVER >= 20080715
+packetLen(0x03dc, 6)
+#elif PACKETVER >= 20080701
+packetLen(0x03dc, -1)
+#elif PACKETVER >= 20080624
+packetLen(0x03dc, 10)
+#elif PACKETVER >= 20080617
+packetLen(0x03dc, 54)
+#elif PACKETVER >= 20080528
+packetLen(0x03dc, -1)
+#endif
+
+// Packet: 0x03dd
+#if PACKETVER >= 20080624
+packetLen(0x03dd, 18) // AHC_GAME_GUARD
+#endif
+
+// Packet: 0x03de
+#if PACKETVER >= 20080624
+packetLen(0x03de, 18) // CAH_ACK_GAME_GUARD
+#endif
+
+// Packet: 0x03e2
+#if PACKETVER >= 20081217
+packetLen(0x03e2, 10)
+#elif PACKETVER >= 20081126
+packetLen(0x03e2, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x03e2, 4)
+#elif PACKETVER >= 20081112
+packetLen(0x03e2, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x03e2, 8)
+#elif PACKETVER >= 20081029
+packetLen(0x03e2, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x03e2, 22)
+#elif PACKETVER >= 20081015
+packetLen(0x03e2, 57)
+#elif PACKETVER >= 20081001
+packetLen(0x03e2, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x03e2, 28)
+#elif PACKETVER >= 20080910
+packetLen(0x03e2, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x03e2, 5)
+#elif PACKETVER >= 20080827
+packetLen(0x03e2, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x03e2, 7)
+#elif PACKETVER >= 20080813
+packetLen(0x03e2, -1)
+#endif
+
+// Packet: 0x03e3
+#if PACKETVER >= 20081217
+packetLen(0x03e3, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x03e3, 3)
+#elif PACKETVER >= 20081001
+packetLen(0x03e3, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x03e3, 30)
+#elif PACKETVER >= 20080903
+packetLen(0x03e3, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x03e3, 6)
+#elif PACKETVER >= 20080820
+packetLen(0x03e3, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x03e3, 22)
+#endif
+
+// Packet: 0x03e4
+#if PACKETVER >= 20081105
+packetLen(0x03e4, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x03e4, 2)
+#elif PACKETVER >= 20081022
+packetLen(0x03e4, 3)
+#elif PACKETVER >= 20081015
+packetLen(0x03e4, 19)
+#elif PACKETVER >= 20081008
+packetLen(0x03e4, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x03e4, 28)
+#elif PACKETVER >= 20080924
+packetLen(0x03e4, 14)
+#elif PACKETVER >= 20080917
+packetLen(0x03e4, 7)
+#elif PACKETVER >= 20080903
+packetLen(0x03e4, 6)
+#elif PACKETVER >= 20080827
+packetLen(0x03e4, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x03e4, 4)
+#elif PACKETVER >= 20080813
+packetLen(0x03e4, -1)
+#endif
+
+// Packet: 0x03e5
+#if PACKETVER >= 20081217
+packetLen(0x03e5, 3)
+#elif PACKETVER >= 20081203
+packetLen(0x03e5, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x03e5, 58)
+#elif PACKETVER >= 20081119
+packetLen(0x03e5, 23)
+#elif PACKETVER >= 20081112
+packetLen(0x03e5, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x03e5, 10)
+#elif PACKETVER >= 20081029
+packetLen(0x03e5, 4)
+#elif PACKETVER >= 20081022
+packetLen(0x03e5, 6)
+#elif PACKETVER >= 20081015
+packetLen(0x03e5, 28)
+#elif PACKETVER >= 20081001
+packetLen(0x03e5, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x03e5, 44)
+#elif PACKETVER >= 20080910
+packetLen(0x03e5, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x03e5, 12)
+#elif PACKETVER >= 20080813
+packetLen(0x03e5, -1)
+#endif
+
+// Packet: 0x03e6
+#if PACKETVER >= 20081217
+packetLen(0x03e6, 6)
+#elif PACKETVER >= 20081203
+packetLen(0x03e6, 8)
+#elif PACKETVER >= 20081126
+packetLen(0x03e6, 71)
+#elif PACKETVER >= 20081119
+packetLen(0x03e6, 7)
+#elif PACKETVER >= 20081112
+packetLen(0x03e6, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x03e6, 2)
+#elif PACKETVER >= 20081022
+packetLen(0x03e6, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x03e6, 6)
+#elif PACKETVER >= 20081008
+packetLen(0x03e6, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x03e6, 3)
+#elif PACKETVER >= 20080924
+packetLen(0x03e6, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x03e6, 4)
+#elif PACKETVER >= 20080910
+packetLen(0x03e6, 2)
+#elif PACKETVER >= 20080903
+packetLen(0x03e6, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x03e6, 2)
+#elif PACKETVER >= 20080813
+packetLen(0x03e6, 30)
+#endif
+
+// Packet: 0x03e7
+#if PACKETVER >= 20081217
+packetLen(0x03e7, 66)
+#elif PACKETVER >= 20081203
+packetLen(0x03e7, 90)
+#elif PACKETVER >= 20081119
+packetLen(0x03e7, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x03e7, 21)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x03e7, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x03e7, 3)
+#elif PACKETVER >= 20081001
+packetLen(0x03e7, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x03e7, 6)
+#elif PACKETVER >= 20080903
+packetLen(0x03e7, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x03e7, 7)
+#elif PACKETVER >= 20080820
+packetLen(0x03e7, 3)
+#elif PACKETVER >= 20080813
+packetLen(0x03e7, -1)
+#endif
+
+// Packet: 0x03e8
+#if PACKETVER >= 20081217
+packetLen(0x03e8, 2)
+#elif PACKETVER >= 20081105
+packetLen(0x03e8, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x03e8, 2)
+#elif PACKETVER >= 20081022
+packetLen(0x03e8, 10)
+#elif PACKETVER >= 20081015
+packetLen(0x03e8, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x03e8, 6)
+#elif PACKETVER >= 20081001
+packetLen(0x03e8, 34)
+#elif PACKETVER >= 20080827
+packetLen(0x03e8, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x03e8, 6)
+#elif PACKETVER >= 20080813
+packetLen(0x03e8, -1)
+#endif
+
+// Packet: 0x03e9
+#if PACKETVER >= 20081105
+packetLen(0x03e9, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x03e9, 54)
+#elif PACKETVER >= 20081022
+packetLen(0x03e9, 6)
+#elif PACKETVER >= 20081008
+packetLen(0x03e9, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x03e9, 6)
+#elif PACKETVER >= 20080924
+packetLen(0x03e9, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x03e9, 68)
+#elif PACKETVER >= 20080910
+packetLen(0x03e9, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x03e9, 39)
+#elif PACKETVER >= 20080813
+packetLen(0x03e9, -1)
+#endif
+
+// Packet: 0x03ea
+#if PACKETVER >= 20081217
+packetLen(0x03ea, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x03ea, 4)
+#elif PACKETVER >= 20081126
+packetLen(0x03ea, 5)
+#elif PACKETVER >= 20081119
+packetLen(0x03ea, 4)
+#elif PACKETVER >= 20081022
+packetLen(0x03ea, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x03ea, 10)
+#elif PACKETVER >= 20081001
+packetLen(0x03ea, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x03ea, 24)
+#elif PACKETVER >= 20080827
+packetLen(0x03ea, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x03ea, 2)
+#elif PACKETVER >= 20080813
+packetLen(0x03ea, -1)
+#endif
+
+// Packet: 0x03eb
+#if PACKETVER >= 20081126
+packetLen(0x03eb, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x03eb, 3)
+#elif PACKETVER >= 20081112
+packetLen(0x03eb, 12)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081001
+packetLen(0x03eb, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x03eb, 55)
+#elif PACKETVER >= 20080903
+packetLen(0x03eb, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x03eb, 20)
+#elif PACKETVER >= 20080813
+packetLen(0x03eb, -1)
+#endif
+
+// Packet: 0x03ec
+#if PACKETVER >= 20081217
+packetLen(0x03ec, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x03ec, 7)
+#elif PACKETVER >= 20081126
+packetLen(0x03ec, 5)
+#elif PACKETVER >= 20081119
+packetLen(0x03ec, 9)
+#elif PACKETVER >= 20081022
+packetLen(0x03ec, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x03ec, 6)
+#elif PACKETVER >= 20081008
+packetLen(0x03ec, 5)
+#elif PACKETVER >= 20081001
+packetLen(0x03ec, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x03ec, 14)
+#elif PACKETVER >= 20080917
+packetLen(0x03ec, 6)
+#elif PACKETVER >= 20080910
+packetLen(0x03ec, 3)
+#elif PACKETVER >= 20080903
+packetLen(0x03ec, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x03ec, 36)
+#elif PACKETVER >= 20080813
+packetLen(0x03ec, -1)
+#endif
+
+// Packet: 0x03ed
+#if PACKETVER >= 20081217
+packetLen(0x03ed, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x03ed, 282)
+#elif PACKETVER >= 20081015
+packetLen(0x03ed, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x03ed, 3)
+#elif PACKETVER >= 20081001
+packetLen(0x03ed, 11)
+#elif PACKETVER >= 20080827
+packetLen(0x03ed, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x03ed, 13)
+#elif PACKETVER >= 20080813
+packetLen(0x03ed, -1)
+#endif
+
+// Packet: 0x03ee
+#if PACKETVER >= 20081217
+packetLen(0x03ee, 10)
+#elif PACKETVER >= 20081203
+packetLen(0x03ee, 59)
+#elif PACKETVER >= 20081112
+packetLen(0x03ee, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x03ee, 6)
+#elif PACKETVER >= 20081029
+packetLen(0x03ee, 81)
+#elif PACKETVER >= 20081022
+packetLen(0x03ee, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x03ee, 3)
+#elif PACKETVER >= 20081008
+packetLen(0x03ee, 7)
+#elif PACKETVER >= 20081001
+packetLen(0x03ee, 27)
+#elif PACKETVER >= 20080813
+packetLen(0x03ee, -1)
+#endif
+
+// Packet: 0x03ef
+#if PACKETVER >= 20081217
+packetLen(0x03ef, 6)
+#elif PACKETVER >= 20081203
+packetLen(0x03ef, 10)
+#elif PACKETVER >= 20081119
+packetLen(0x03ef, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x03ef, 6)
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x03ef, 6)
+#elif PACKETVER >= 20081015
+packetLen(0x03ef, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x03ef, 8)
+#elif PACKETVER >= 20080917
+packetLen(0x03ef, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x03ef, 59)
+#elif PACKETVER >= 20080903
+packetLen(0x03ef, 10)
+#elif PACKETVER >= 20080827
+packetLen(0x03ef, 8)
+#elif PACKETVER >= 20080820
+packetLen(0x03ef, 11)
+#elif PACKETVER >= 20080813
+packetLen(0x03ef, 3)
+#endif
+
+// Packet: 0x03f0
+#if PACKETVER >= 20081217
+packetLen(0x03f0, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x03f0, 22)
+#elif PACKETVER >= 20081126
+packetLen(0x03f0, 3)
+#elif PACKETVER >= 20081105
+packetLen(0x03f0, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x03f0, 21)
+#elif PACKETVER >= 20081022
+packetLen(0x03f0, 26)
+#elif PACKETVER >= 20080924
+packetLen(0x03f0, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x03f0, 6)
+#elif PACKETVER >= 20080903
+packetLen(0x03f0, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x03f0, 11)
+#elif PACKETVER >= 20080820
+packetLen(0x03f0, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x03f0, 42)
+#endif
+
+// Packet: 0x03f1
+#if PACKETVER >= 20081105
+packetLen(0x03f1, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x03f1, 4)
+#elif PACKETVER >= 20081015
+packetLen(0x03f1, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x03f1, 4)
+#elif PACKETVER >= 20080910
+packetLen(0x03f1, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x03f1, 79)
+#elif PACKETVER >= 20080827
+packetLen(0x03f1, 10)
+#elif PACKETVER >= 20080813
+packetLen(0x03f1, -1)
+#endif
+
+// Packet: 0x03f2
+#if PACKETVER >= 20081126
+packetLen(0x03f2, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x03f2, 26)
+#elif PACKETVER >= 20081105
+packetLen(0x03f2, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x03f2, 4)
+#elif PACKETVER >= 20081022
+packetLen(0x03f2, 8)
+#elif PACKETVER >= 20081015
+packetLen(0x03f2, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x03f2, 22)
+#elif PACKETVER >= 20081001
+packetLen(0x03f2, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x03f2, 7)
+#elif PACKETVER >= 20080910
+packetLen(0x03f2, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x03f2, 14)
+#elif PACKETVER >= 20080827
+packetLen(0x03f2, 23)
+#elif PACKETVER >= 20080813
+packetLen(0x03f2, -1)
+#endif
+
+// Packet: 0x03f3
+#if PACKETVER >= 20081203
+packetLen(0x03f3, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x03f3, 6)
+#elif PACKETVER >= 20081119
+packetLen(0x03f3, 9)
+#elif PACKETVER >= 20081112
+packetLen(0x03f3, 34)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081001
+packetLen(0x03f3, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x03f3, 3)
+#elif PACKETVER >= 20080917
+packetLen(0x03f3, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x03f3, 30)
+#elif PACKETVER >= 20080903
+packetLen(0x03f3, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x03f3, 3)
+#elif PACKETVER >= 20080813
+packetLen(0x03f3, -1)
+#endif
+
+// Packet: 0x03f4
+#if PACKETVER >= 20081217
+packetLen(0x03f4, 5)
+#elif PACKETVER >= 20081203
+packetLen(0x03f4, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x03f4, 7)
+#elif PACKETVER >= 20080924
+packetLen(0x03f4, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x03f4, 14)
+#elif PACKETVER >= 20080910
+packetLen(0x03f4, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x03f4, 6)
+#elif PACKETVER >= 20080820
+packetLen(0x03f4, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x03f4, 6)
+#endif
+
+// Packet: 0x03f5
+#if PACKETVER >= 20081217
+packetLen(0x03f5, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x03f5, 19)
+#elif PACKETVER >= 20081126
+packetLen(0x03f5, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x03f5, 7)
+#elif PACKETVER >= 20081112
+packetLen(0x03f5, 11)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x03f5, 54)
+#elif PACKETVER >= 20081029
+packetLen(0x03f5, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x03f5, 2)
+#elif PACKETVER >= 20081015
+packetLen(0x03f5, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x03f5, 30)
+#elif PACKETVER >= 20081001
+packetLen(0x03f5, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x03f5, 33)
+#elif PACKETVER >= 20080917
+packetLen(0x03f5, 30)
+#elif PACKETVER >= 20080910
+packetLen(0x03f5, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x03f5, 282)
+#elif PACKETVER >= 20080827
+packetLen(0x03f5, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x03f5, 3)
+#elif PACKETVER >= 20080813
+packetLen(0x03f5, 8)
+#endif
+
+// Packet: 0x03f6
+#if PACKETVER >= 20081217
+packetLen(0x03f6, 4)
+#elif PACKETVER >= 20081203
+packetLen(0x03f6, 22)
+#elif PACKETVER >= 20081119
+packetLen(0x03f6, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x03f6, 4)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x03f6, 6)
+#elif PACKETVER >= 20081022
+packetLen(0x03f6, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x03f6, 6)
+#elif PACKETVER >= 20081008
+packetLen(0x03f6, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x03f6, 44)
+#elif PACKETVER >= 20080910
+packetLen(0x03f6, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x03f6, 10)
+#elif PACKETVER >= 20080813
+packetLen(0x03f6, -1)
+#endif
+
+// Packet: 0x03f7
+#if PACKETVER >= 20081217
+packetLen(0x03f7, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x03f7, 27)
+#elif PACKETVER >= 20081126
+packetLen(0x03f7, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x03f7, 66)
+#elif PACKETVER >= 20081112
+packetLen(0x03f7, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x03f7, 19)
+#elif PACKETVER >= 20081029
+packetLen(0x03f7, 7)
+#elif PACKETVER >= 20081022
+packetLen(0x03f7, 3)
+#elif PACKETVER >= 20081015
+packetLen(0x03f7, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x03f7, 10)
+#elif PACKETVER >= 20081001
+packetLen(0x03f7, 7)
+#elif PACKETVER >= 20080924
+packetLen(0x03f7, 39)
+#elif PACKETVER >= 20080917
+packetLen(0x03f7, 15)
+#elif PACKETVER >= 20080910
+packetLen(0x03f7, 9)
+#elif PACKETVER >= 20080903
+packetLen(0x03f7, 2)
+#elif PACKETVER >= 20080827
+packetLen(0x03f7, 30)
+#elif PACKETVER >= 20080820
+packetLen(0x03f7, 8)
+#elif PACKETVER >= 20080813
+packetLen(0x03f7, 6)
+#endif
+
+// Packet: 0x03f8
+#if PACKETVER >= 20081126
+packetLen(0x03f8, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x03f8, 39)
+#elif PACKETVER >= 20081112
+packetLen(0x03f8, 7)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x03f8, 32)
+#elif PACKETVER >= 20081029
+packetLen(0x03f8, 27)
+#elif PACKETVER >= 20081022
+packetLen(0x03f8, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x03f8, 6)
+#elif PACKETVER >= 20081001
+packetLen(0x03f8, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x03f8, 14)
+#elif PACKETVER >= 20080917
+packetLen(0x03f8, 3)
+#elif PACKETVER >= 20080910
+packetLen(0x03f8, 6)
+#elif PACKETVER >= 20080820
+packetLen(0x03f8, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x03f8, 4)
+#endif
+
+// Packet: 0x03f9
+#if PACKETVER >= 20081203
+packetLen(0x03f9, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x03f9, 21)
+#elif PACKETVER >= 20081119
+packetLen(0x03f9, 22)
+#elif PACKETVER >= 20081112
+packetLen(0x03f9, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x03f9, 6)
+#elif PACKETVER >= 20081029
+packetLen(0x03f9, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x03f9, 10)
+#elif PACKETVER >= 20080820
+packetLen(0x03f9, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x03f9, 3)
+#endif
+
+// Packet: 0x03fa
+#if PACKETVER >= 20081217
+packetLen(0x03fa, 33)
+#elif PACKETVER >= 20081126
+packetLen(0x03fa, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x03fa, 2)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x03fa, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x03fa, 5)
+#elif PACKETVER >= 20081008
+packetLen(0x03fa, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x03fa, 21)
+#elif PACKETVER >= 20080924
+packetLen(0x03fa, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x03fa, 6)
+#elif PACKETVER >= 20080820
+packetLen(0x03fa, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x03fa, 81)
+#endif
+
+// Packet: 0x03fb
+#if PACKETVER >= 20081217
+packetLen(0x03fb, 2)
+#elif PACKETVER >= 20081112
+packetLen(0x03fb, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x03fb, 17)
+#elif PACKETVER >= 20081029
+packetLen(0x03fb, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x03fb, 5)
+#elif PACKETVER >= 20081015
+packetLen(0x03fb, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x03fb, 12)
+#elif PACKETVER >= 20081001
+packetLen(0x03fb, 30)
+#elif PACKETVER >= 20080917
+packetLen(0x03fb, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x03fb, 67)
+#elif PACKETVER >= 20080903
+packetLen(0x03fb, 4)
+#elif PACKETVER >= 20080827
+packetLen(0x03fb, 11)
+#elif PACKETVER >= 20080820
+packetLen(0x03fb, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x03fb, 33)
+#endif
+
+// Packet: 0x03fc
+#if PACKETVER >= 20081217
+packetLen(0x03fc, 54)
+#elif PACKETVER >= 20081119
+packetLen(0x03fc, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x03fc, 8)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081015
+packetLen(0x03fc, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x03fc, 10)
+#elif PACKETVER >= 20081001
+packetLen(0x03fc, 5)
+#elif PACKETVER >= 20080924
+packetLen(0x03fc, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x03fc, 67)
+#elif PACKETVER >= 20080820
+packetLen(0x03fc, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x03fc, 11)
+#endif
+
+// Packet: 0x03fd
+#if PACKETVER >= 20081203
+packetLen(0x03fd, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x03fd, 2)
+#elif PACKETVER >= 20081112
+packetLen(0x03fd, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x03fd, 114)
+#elif PACKETVER >= 20081029
+packetLen(0x03fd, 6)
+#elif PACKETVER >= 20081022
+packetLen(0x03fd, 32)
+#elif PACKETVER >= 20081015
+packetLen(0x03fd, 4)
+#elif PACKETVER >= 20081008
+packetLen(0x03fd, 27)
+#elif PACKETVER >= 20081001
+packetLen(0x03fd, 282)
+#elif PACKETVER >= 20080924
+packetLen(0x03fd, 182)
+#elif PACKETVER >= 20080917
+packetLen(0x03fd, 2)
+#elif PACKETVER >= 20080910
+packetLen(0x03fd, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x03fd, 68)
+#elif PACKETVER >= 20080827
+packetLen(0x03fd, 7)
+#elif PACKETVER >= 20080820
+packetLen(0x03fd, 2)
+#elif PACKETVER >= 20080813
+packetLen(0x03fd, 182)
+#endif
+
+// Packet: 0x03fe
+#if PACKETVER >= 20081119
+packetLen(0x03fe, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x03fe, 67)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x03fe, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x03fe, 4)
+#elif PACKETVER >= 20081022
+packetLen(0x03fe, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x03fe, 2)
+#elif PACKETVER >= 20081008
+packetLen(0x03fe, 11)
+#elif PACKETVER >= 20080924
+packetLen(0x03fe, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x03fe, 6)
+#elif PACKETVER >= 20080910
+packetLen(0x03fe, 57)
+#elif PACKETVER >= 20080903
+packetLen(0x03fe, 10)
+#elif PACKETVER >= 20080827
+packetLen(0x03fe, 23)
+#elif PACKETVER >= 20080813
+packetLen(0x03fe, -1)
+#endif
+
+// Packet: 0x03ff
+#if PACKETVER >= 20081217
+packetLen(0x03ff, 4)
+#elif PACKETVER >= 20081203
+packetLen(0x03ff, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x03ff, 6)
+#elif PACKETVER >= 20080917
+packetLen(0x03ff, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x03ff, 2)
+#elif PACKETVER >= 20080903
+packetLen(0x03ff, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x03ff, 14)
+#elif PACKETVER >= 20080813
+packetLen(0x03ff, -1)
+#endif
+
+// Packet: 0x0400
+#if PACKETVER >= 20081217
+packetLen(0x0400, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x0400, 12)
+#elif PACKETVER >= 20081029
+packetLen(0x0400, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x0400, 4)
+#elif PACKETVER >= 20081008
+packetLen(0x0400, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x0400, 2)
+#elif PACKETVER >= 20080813
+packetLen(0x0400, -1)
+#endif
+
+// Packet: 0x0401
+#if PACKETVER >= 20081217
+packetLen(0x0401, 2)
+#elif PACKETVER >= 20081203
+packetLen(0x0401, 26)
+#elif PACKETVER >= 20081126
+packetLen(0x0401, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x0401, 11)
+#elif PACKETVER >= 20081112
+packetLen(0x0401, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x0401, 34)
+#elif PACKETVER >= 20081029
+packetLen(0x0401, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x0401, 2)
+#elif PACKETVER >= 20081015
+packetLen(0x0401, 9)
+#elif PACKETVER >= 20081008
+packetLen(0x0401, 4)
+#elif PACKETVER >= 20081001
+packetLen(0x0401, 65)
+#elif PACKETVER >= 20080917
+packetLen(0x0401, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x0401, 10)
+#elif PACKETVER >= 20080903
+packetLen(0x0401, 6)
+#elif PACKETVER >= 20080813
+packetLen(0x0401, -1)
+#endif
+
+// Packet: 0x0402
+#if PACKETVER >= 20081217
+packetLen(0x0402, 14)
+#elif PACKETVER >= 20081203
+packetLen(0x0402, 2)
+#elif PACKETVER >= 20081119
+packetLen(0x0402, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x0402, 3)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x0402, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0402, 4)
+#elif PACKETVER >= 20081008
+packetLen(0x0402, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x0402, 114)
+#elif PACKETVER >= 20080924
+packetLen(0x0402, 4)
+#elif PACKETVER >= 20080917
+packetLen(0x0402, 10)
+#elif PACKETVER >= 20080910
+packetLen(0x0402, 43)
+#elif PACKETVER >= 20080827
+packetLen(0x0402, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0402, 16)
+#elif PACKETVER >= 20080813
+packetLen(0x0402, 6)
+#endif
+
+// Packet: 0x0403
+#if PACKETVER >= 20081119
+packetLen(0x0403, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x0403, 19)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0403, 6)
+#elif PACKETVER >= 20080910
+packetLen(0x0403, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x0403, 4)
+#elif PACKETVER >= 20080813
+packetLen(0x0403, -1)
+#endif
+
+// Packet: 0x0404
+#if PACKETVER >= 20081217
+packetLen(0x0404, 4)
+#elif PACKETVER >= 20081203
+packetLen(0x0404, 11)
+#elif PACKETVER >= 20081022
+packetLen(0x0404, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0404, 27)
+#elif PACKETVER >= 20081008
+packetLen(0x0404, 13)
+#elif PACKETVER >= 20080924
+packetLen(0x0404, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x0404, 26)
+#elif PACKETVER >= 20080910
+packetLen(0x0404, 3)
+#elif PACKETVER >= 20080827
+packetLen(0x0404, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0404, 3)
+#elif PACKETVER >= 20080813
+packetLen(0x0404, -1)
+#endif
+
+// Packet: 0x0405
+#if PACKETVER >= 20081217
+packetLen(0x0405, 4)
+#elif PACKETVER >= 20081119
+packetLen(0x0405, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x0405, 57)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0405, 6)
+#elif PACKETVER >= 20081022
+packetLen(0x0405, 9)
+#elif PACKETVER >= 20081015
+packetLen(0x0405, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x0405, 6)
+#elif PACKETVER >= 20080924
+packetLen(0x0405, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x0405, 14)
+#elif PACKETVER >= 20080903
+packetLen(0x0405, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x0405, 4)
+#elif PACKETVER >= 20080820
+packetLen(0x0405, 3)
+#elif PACKETVER >= 20080813
+packetLen(0x0405, 10)
+#endif
+
+// Packet: 0x0406
+#if PACKETVER >= 20081217
+packetLen(0x0406, 16)
+#elif PACKETVER >= 20081203
+packetLen(0x0406, 26)
+#elif PACKETVER >= 20081112
+packetLen(0x0406, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x0406, 10)
+#elif PACKETVER >= 20081022
+packetLen(0x0406, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0406, 43)
+#elif PACKETVER >= 20081001
+packetLen(0x0406, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x0406, 3)
+#elif PACKETVER >= 20080910
+packetLen(0x0406, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x0406, 2)
+#elif PACKETVER >= 20080820
+packetLen(0x0406, -1)
+#elif PACKETVER >= 20080813
+packetLen(0x0406, 8)
+#endif
+
+// Packet: 0x0407
+#if PACKETVER >= 20081203
+packetLen(0x0407, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x0407, 28)
+#elif PACKETVER >= 20081119
+packetLen(0x0407, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x0407, 12)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0407, 2)
+#elif PACKETVER >= 20081029
+packetLen(0x0407, 6)
+#elif PACKETVER >= 20081015
+packetLen(0x0407, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x0407, 102)
+#elif PACKETVER >= 20081001
+packetLen(0x0407, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x0407, 7)
+#elif PACKETVER >= 20080903
+packetLen(0x0407, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x0407, 10)
+#elif PACKETVER >= 20080820
+packetLen(0x0407, 6)
+#elif PACKETVER >= 20080813
+packetLen(0x0407, -1)
+#endif
+
+// Packet: 0x0408
+#if PACKETVER >= 20081022
+packetLen(0x0408, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0408, 59)
+#elif PACKETVER >= 20081008
+packetLen(0x0408, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x0408, 26)
+#elif PACKETVER >= 20080924
+packetLen(0x0408, 12)
+#elif PACKETVER >= 20080917
+packetLen(0x0408, 22)
+#elif PACKETVER >= 20080910
+packetLen(0x0408, 5)
+#elif PACKETVER >= 20080903
+packetLen(0x0408, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x0408, 28)
+#elif PACKETVER >= 20080820
+packetLen(0x0408, 29)
+#elif PACKETVER >= 20080813
+packetLen(0x0408, 2)
+#endif
+
+// Packet: 0x0409
+#if PACKETVER >= 20081217
+packetLen(0x0409, 7)
+#elif PACKETVER >= 20081203
+packetLen(0x0409, 10)
+#elif PACKETVER >= 20081126
+packetLen(0x0409, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x0409, 6)
+#elif PACKETVER >= 20081112
+packetLen(0x0409, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x0409, 9)
+#elif PACKETVER >= 20081029
+packetLen(0x0409, 2)
+#elif PACKETVER >= 20081022
+packetLen(0x0409, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0409, 86)
+#elif PACKETVER >= 20081008
+packetLen(0x0409, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x0409, 26)
+#elif PACKETVER >= 20080813
+packetLen(0x0409, -1)
+#endif
+
+// Packet: 0x040a
+#if PACKETVER >= 20081217
+packetLen(0x040a, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x040a, 3)
+#elif PACKETVER >= 20081119
+packetLen(0x040a, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x040a, 10)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x040a, 19)
+#elif PACKETVER >= 20081029
+packetLen(0x040a, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x040a, 6)
+#elif PACKETVER >= 20081015
+packetLen(0x040a, 186)
+#elif PACKETVER >= 20081008
+packetLen(0x040a, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x040a, 3)
+#elif PACKETVER >= 20080917
+packetLen(0x040a, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x040a, 11)
+#elif PACKETVER >= 20080903
+packetLen(0x040a, 4)
+#elif PACKETVER >= 20080813
+packetLen(0x040a, -1)
+#endif
+
+// Packet: 0x040b
+#if PACKETVER >= 20081217
+packetLen(0x040b, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x040b, 67)
+#elif PACKETVER >= 20081126
+packetLen(0x040b, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x040b, 5)
+#elif PACKETVER >= 20081112
+packetLen(0x040b, 97)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x040b, 27)
+#elif PACKETVER >= 20081008
+packetLen(0x040b, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x040b, 26)
+#elif PACKETVER >= 20080924
+packetLen(0x040b, 9)
+#elif PACKETVER >= 20080917
+packetLen(0x040b, 10)
+#elif PACKETVER >= 20080903
+packetLen(0x040b, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x040b, 4)
+#elif PACKETVER >= 20080820
+packetLen(0x040b, 57)
+#elif PACKETVER >= 20080813
+packetLen(0x040b, -1)
+#endif
+
+// Packet: 0x040c
+#if PACKETVER >= 20081203
+packetLen(0x040c, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x040c, 39)
+#elif PACKETVER >= 20081119
+packetLen(0x040c, 21)
+#elif PACKETVER >= 20081112
+packetLen(0x040c, 31)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x040c, 65)
+#elif PACKETVER >= 20081029
+packetLen(0x040c, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x040c, 4)
+#elif PACKETVER >= 20081008
+packetLen(0x040c, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x040c, 4)
+#elif PACKETVER >= 20080924
+packetLen(0x040c, 28)
+#elif PACKETVER >= 20080917
+packetLen(0x040c, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x040c, 11)
+#elif PACKETVER >= 20080903
+packetLen(0x040c, 26)
+#elif PACKETVER >= 20080827
+packetLen(0x040c, 20)
+#elif PACKETVER >= 20080820
+packetLen(0x040c, -1)
+#endif
+
+// Packet: 0x040d
+#if PACKETVER >= 20081217
+packetLen(0x040d, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x040d, 8)
+#elif PACKETVER >= 20081126
+packetLen(0x040d, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x040d, 57)
+#elif PACKETVER >= 20081105
+packetLen(0x040d, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x040d, 7)
+#elif PACKETVER >= 20081008
+packetLen(0x040d, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x040d, 3)
+#elif PACKETVER >= 20080924
+packetLen(0x040d, 8)
+#elif PACKETVER >= 20080917
+packetLen(0x040d, 7)
+#elif PACKETVER >= 20080910
+packetLen(0x040d, 4)
+#elif PACKETVER >= 20080903
+packetLen(0x040d, 28)
+#elif PACKETVER >= 20080827
+packetLen(0x040d, 6)
+#elif PACKETVER >= 20080820
+packetLen(0x040d, 5)
+#endif
+
+// Packet: 0x040e
+#if PACKETVER >= 20081203
+packetLen(0x040e, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x040e, 7)
+#elif PACKETVER >= 20081119
+packetLen(0x040e, 6)
+#elif PACKETVER >= 20081112
+packetLen(0x040e, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x040e, 58)
+#elif PACKETVER >= 20081029
+packetLen(0x040e, 6)
+#elif PACKETVER >= 20081015
+packetLen(0x040e, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x040e, 6)
+#elif PACKETVER >= 20080917
+packetLen(0x040e, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x040e, 86)
+#elif PACKETVER >= 20080827
+packetLen(0x040e, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x040e, 6)
+#endif
+
+// Packet: 0x040f
+#if PACKETVER >= 20081217
+packetLen(0x040f, 6)
+#elif PACKETVER >= 20081203
+packetLen(0x040f, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x040f, 6)
+#elif PACKETVER >= 20081119
+packetLen(0x040f, 8)
+#elif PACKETVER >= 20081105
+packetLen(0x040f, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x040f, 2)
+#elif PACKETVER >= 20081022
+packetLen(0x040f, 68)
+#elif PACKETVER >= 20081015
+packetLen(0x040f, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x040f, 6)
+#elif PACKETVER >= 20080917
+packetLen(0x040f, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x040f, 4)
+#elif PACKETVER >= 20080827
+packetLen(0x040f, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x040f, 8)
+#endif
+
+// Packet: 0x0410
+#if PACKETVER >= 20081203
+packetLen(0x0410, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x0410, 10)
+#elif PACKETVER >= 20081105
+packetLen(0x0410, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x0410, 6)
+#elif PACKETVER >= 20081022
+packetLen(0x0410, 9)
+#elif PACKETVER >= 20081015
+packetLen(0x0410, 33)
+#elif PACKETVER >= 20081008
+packetLen(0x0410, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x0410, 3)
+#elif PACKETVER >= 20080917
+packetLen(0x0410, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x0410, 186)
+#elif PACKETVER >= 20080903
+packetLen(0x0410, 12)
+#elif PACKETVER >= 20080827
+packetLen(0x0410, 81)
+#elif PACKETVER >= 20080820
+packetLen(0x0410, -1)
+#endif
+
+// Packet: 0x0411
+#if PACKETVER >= 20081217
+packetLen(0x0411, 11)
+#elif PACKETVER >= 20081119
+packetLen(0x0411, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x0411, 90)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0411, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x0411, 30)
+#elif PACKETVER >= 20081008
+packetLen(0x0411, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x0411, 28)
+#elif PACKETVER >= 20080924
+packetLen(0x0411, 7)
+#elif PACKETVER >= 20080917
+packetLen(0x0411, 11)
+#elif PACKETVER >= 20080820
+packetLen(0x0411, -1)
+#endif
+
+// Packet: 0x0412
+#if PACKETVER >= 20081217
+packetLen(0x0412, 2)
+#elif PACKETVER >= 20081203
+packetLen(0x0412, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x0412, 8)
+#elif PACKETVER >= 20081119
+packetLen(0x0412, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x0412, 10)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0412, 9)
+#elif PACKETVER >= 20081029
+packetLen(0x0412, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x0412, 7)
+#elif PACKETVER >= 20081008
+packetLen(0x0412, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x0412, 15)
+#elif PACKETVER >= 20080924
+packetLen(0x0412, 6)
+#elif PACKETVER >= 20080917
+packetLen(0x0412, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x0412, 7)
+#elif PACKETVER >= 20080827
+packetLen(0x0412, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0412, 282)
+#endif
+
+// Packet: 0x0413
+#if PACKETVER >= 20081112
+packetLen(0x0413, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x0413, 4)
+#elif PACKETVER >= 20081022
+packetLen(0x0413, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0413, 4)
+#elif PACKETVER >= 20081008
+packetLen(0x0413, 65)
+#elif PACKETVER >= 20081001
+packetLen(0x0413, 54)
+#elif PACKETVER >= 20080903
+packetLen(0x0413, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x0413, 3)
+#elif PACKETVER >= 20080820
+packetLen(0x0413, -1)
+#endif
+
+// Packet: 0x0414
+#if PACKETVER >= 20081203
+packetLen(0x0414, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x0414, 16)
+#elif PACKETVER >= 20081105
+packetLen(0x0414, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x0414, 4)
+#elif PACKETVER >= 20081022
+packetLen(0x0414, 97)
+#elif PACKETVER >= 20081015
+packetLen(0x0414, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x0414, 15)
+#elif PACKETVER >= 20081001
+packetLen(0x0414, 8)
+#elif PACKETVER >= 20080924
+packetLen(0x0414, 6)
+#elif PACKETVER >= 20080820
+packetLen(0x0414, -1)
+#endif
+
+// Packet: 0x0415
+#if PACKETVER >= 20081217
+packetLen(0x0415, 8)
+#elif PACKETVER >= 20081029
+packetLen(0x0415, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x0415, 2)
+#elif PACKETVER >= 20081015
+packetLen(0x0415, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x0415, 5)
+#elif PACKETVER >= 20081001
+packetLen(0x0415, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x0415, 26)
+#elif PACKETVER >= 20080917
+packetLen(0x0415, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x0415, 19)
+#elif PACKETVER >= 20080820
+packetLen(0x0415, -1)
+#endif
+
+// Packet: 0x0416
+#if PACKETVER >= 20081217
+packetLen(0x0416, 5)
+#elif PACKETVER >= 20081105
+packetLen(0x0416, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x0416, 3)
+#elif PACKETVER >= 20081022
+packetLen(0x0416, 26)
+#elif PACKETVER >= 20080917
+packetLen(0x0416, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x0416, 6)
+#elif PACKETVER >= 20080820
+packetLen(0x0416, -1)
+#endif
+
+// Packet: 0x0417
+#if PACKETVER >= 20081217
+packetLen(0x0417, 10)
+#elif PACKETVER >= 20081203
+packetLen(0x0417, 4)
+#elif PACKETVER >= 20081119
+packetLen(0x0417, 30)
+#elif PACKETVER >= 20081112
+packetLen(0x0417, 9)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0417, 26)
+#elif PACKETVER >= 20081022
+packetLen(0x0417, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0417, 6)
+#elif PACKETVER >= 20081008
+packetLen(0x0417, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x0417, 57)
+#elif PACKETVER >= 20080924
+packetLen(0x0417, 81)
+#elif PACKETVER >= 20080917
+packetLen(0x0417, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x0417, 6)
+#elif PACKETVER >= 20080827
+packetLen(0x0417, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0417, 4)
+#endif
+
+// Packet: 0x0418
+#if PACKETVER >= 20081203
+packetLen(0x0418, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x0418, 10)
+#elif PACKETVER >= 20081029
+packetLen(0x0418, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x0418, 182)
+#elif PACKETVER >= 20080924
+packetLen(0x0418, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x0418, 36)
+#elif PACKETVER >= 20080910
+packetLen(0x0418, 8)
+#elif PACKETVER >= 20080827
+packetLen(0x0418, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0418, 7)
+#endif
+
+// Packet: 0x0419
+#if PACKETVER >= 20081217
+packetLen(0x0419, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x0419, 10)
+#elif PACKETVER >= 20081126
+packetLen(0x0419, 6)
+#elif PACKETVER >= 20081119
+packetLen(0x0419, 14)
+#elif PACKETVER >= 20081112
+packetLen(0x0419, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x0419, 55)
+#elif PACKETVER >= 20081022
+packetLen(0x0419, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0419, 14)
+#elif PACKETVER >= 20081008
+packetLen(0x0419, 10)
+#elif PACKETVER >= 20081001
+packetLen(0x0419, 42)
+#elif PACKETVER >= 20080924
+packetLen(0x0419, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x0419, 24)
+#elif PACKETVER >= 20080903
+packetLen(0x0419, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x0419, 2)
+#elif PACKETVER >= 20080820
+packetLen(0x0419, 4)
+#endif
+
+// Packet: 0x041a
+#if PACKETVER >= 20081217
+packetLen(0x041a, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x041a, 7)
+#elif PACKETVER >= 20081119
+packetLen(0x041a, 3)
+#elif PACKETVER >= 20081112
+packetLen(0x041a, 26)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x041a, 182)
+#elif PACKETVER >= 20081029
+packetLen(0x041a, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x041a, 6)
+#elif PACKETVER >= 20081008
+packetLen(0x041a, 11)
+#elif PACKETVER >= 20080924
+packetLen(0x041a, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x041a, 9)
+#elif PACKETVER >= 20080827
+packetLen(0x041a, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x041a, 8)
+#endif
+
+// Packet: 0x041b
+#if PACKETVER >= 20081217
+packetLen(0x041b, 54)
+#elif PACKETVER >= 20081203
+packetLen(0x041b, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x041b, 6)
+#elif PACKETVER >= 20081119
+packetLen(0x041b, 27)
+#elif PACKETVER >= 20081112
+packetLen(0x041b, 3)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081008
+packetLen(0x041b, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x041b, 2)
+#elif PACKETVER >= 20080924
+packetLen(0x041b, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x041b, 8)
+#elif PACKETVER >= 20080903
+packetLen(0x041b, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x041b, 44)
+#elif PACKETVER >= 20080820
+packetLen(0x041b, 6)
+#endif
+
+// Packet: 0x041c
+#if PACKETVER >= 20081217
+packetLen(0x041c, 34)
+#elif PACKETVER >= 20081203
+packetLen(0x041c, 3)
+#elif PACKETVER >= 20081126
+packetLen(0x041c, 6)
+#elif PACKETVER >= 20081029
+packetLen(0x041c, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x041c, 3)
+#elif PACKETVER >= 20081015
+packetLen(0x041c, 6)
+#elif PACKETVER >= 20081008
+packetLen(0x041c, 3)
+#elif PACKETVER >= 20080924
+packetLen(0x041c, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x041c, 6)
+#elif PACKETVER >= 20080903
+packetLen(0x041c, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x041c, 3)
+#elif PACKETVER >= 20080820
+packetLen(0x041c, 54)
+#endif
+
+// Packet: 0x041d
+#if PACKETVER >= 20081217
+packetLen(0x041d, 67)
+#elif PACKETVER >= 20081203
+packetLen(0x041d, 2)
+#elif PACKETVER >= 20081126
+packetLen(0x041d, 4)
+#elif PACKETVER >= 20081112
+packetLen(0x041d, 7)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x041d, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x041d, 39)
+#elif PACKETVER >= 20081008
+packetLen(0x041d, 71)
+#elif PACKETVER >= 20081001
+packetLen(0x041d, 90)
+#elif PACKETVER >= 20080924
+packetLen(0x041d, 2)
+#elif PACKETVER >= 20080917
+packetLen(0x041d, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x041d, 10)
+#elif PACKETVER >= 20080903
+packetLen(0x041d, 26)
+#elif PACKETVER >= 20080820
+packetLen(0x041d, -1)
+#endif
+
+// Packet: 0x041e
+#if PACKETVER >= 20081112
+packetLen(0x041e, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x041e, 4)
+#elif PACKETVER >= 20081029
+packetLen(0x041e, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x041e, 12)
+#elif PACKETVER >= 20081015
+packetLen(0x041e, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x041e, 6)
+#elif PACKETVER >= 20081001
+packetLen(0x041e, 66)
+#elif PACKETVER >= 20080924
+packetLen(0x041e, 6)
+#elif PACKETVER >= 20080910
+packetLen(0x041e, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x041e, 90)
+#elif PACKETVER >= 20080827
+packetLen(0x041e, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x041e, 15)
+#endif
+
+// Packet: 0x041f
+#if PACKETVER >= 20081203
+packetLen(0x041f, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x041f, 57)
+#elif PACKETVER >= 20081119
+packetLen(0x041f, 6)
+#elif PACKETVER >= 20081029
+packetLen(0x041f, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x041f, 282)
+#elif PACKETVER >= 20081015
+packetLen(0x041f, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x041f, 54)
+#elif PACKETVER >= 20081001
+packetLen(0x041f, 3)
+#elif PACKETVER >= 20080924
+packetLen(0x041f, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x041f, 20)
+#elif PACKETVER >= 20080910
+packetLen(0x041f, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x041f, 9)
+#elif PACKETVER >= 20080827
+packetLen(0x041f, 8)
+#elif PACKETVER >= 20080820
+packetLen(0x041f, -1)
+#endif
+
+// Packet: 0x0420
+#if PACKETVER >= 20081217
+packetLen(0x0420, 14)
+#elif PACKETVER >= 20081203
+packetLen(0x0420, 282)
+#elif PACKETVER >= 20081126
+packetLen(0x0420, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x0420, 10)
+#elif PACKETVER >= 20081105
+packetLen(0x0420, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x0420, 79)
+#elif PACKETVER >= 20081022
+packetLen(0x0420, 3)
+#elif PACKETVER >= 20080924
+packetLen(0x0420, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x0420, 2)
+#elif PACKETVER >= 20080910
+packetLen(0x0420, 6)
+#elif PACKETVER >= 20080820
+packetLen(0x0420, -1)
+#endif
+
+// Packet: 0x0421
+#if PACKETVER >= 20081217
+packetLen(0x0421, 4)
+#elif PACKETVER >= 20081203
+packetLen(0x0421, 3)
+#elif PACKETVER >= 20081126
+packetLen(0x0421, 22)
+#elif PACKETVER >= 20081112
+packetLen(0x0421, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x0421, 12)
+#elif PACKETVER >= 20080917
+packetLen(0x0421, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x0421, 3)
+#elif PACKETVER >= 20080903
+packetLen(0x0421, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x0421, 2)
+#elif PACKETVER >= 20080820
+packetLen(0x0421, -1)
+#endif
+
+// Packet: 0x0422
+#if PACKETVER >= 20081203
+packetLen(0x0422, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x0422, 54)
+#elif PACKETVER >= 20081119
+packetLen(0x0422, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x0422, 10)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0422, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x0422, 182)
+#elif PACKETVER >= 20081022
+packetLen(0x0422, 54)
+#elif PACKETVER >= 20080917
+packetLen(0x0422, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x0422, 26)
+#elif PACKETVER >= 20080820
+packetLen(0x0422, -1)
+#endif
+
+// Packet: 0x0423
+#if PACKETVER >= 20081217
+packetLen(0x0423, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x0423, 11)
+#elif PACKETVER >= 20081126
+packetLen(0x0423, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x0423, 6)
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0423, 6)
+#elif PACKETVER >= 20081029
+packetLen(0x0423, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x0423, 3)
+#elif PACKETVER >= 20081015
+packetLen(0x0423, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x0423, 15)
+#elif PACKETVER >= 20080917
+packetLen(0x0423, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x0423, 282)
+#elif PACKETVER >= 20080903
+packetLen(0x0423, 31)
+#elif PACKETVER >= 20080820
+packetLen(0x0423, -1)
+#endif
+
+// Packet: 0x0424
+#if PACKETVER >= 20081217
+packetLen(0x0424, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x0424, 2)
+#elif PACKETVER >= 20081126
+packetLen(0x0424, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x0424, 11)
+#elif PACKETVER >= 20081105
+packetLen(0x0424, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x0424, 6)
+#elif PACKETVER >= 20081022
+packetLen(0x0424, 28)
+#elif PACKETVER >= 20081015
+packetLen(0x0424, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x0424, 6)
+#elif PACKETVER >= 20081001
+packetLen(0x0424, 4)
+#elif PACKETVER >= 20080924
+packetLen(0x0424, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x0424, 10)
+#elif PACKETVER >= 20080910
+packetLen(0x0424, 34)
+#elif PACKETVER >= 20080903
+packetLen(0x0424, 44)
+#elif PACKETVER >= 20080820
+packetLen(0x0424, -1)
+#endif
+
+// Packet: 0x0425
+#if PACKETVER >= 20081217
+packetLen(0x0425, 57)
+#elif PACKETVER >= 20081203
+packetLen(0x0425, 9)
+#elif PACKETVER >= 20081126
+packetLen(0x0425, 11)
+#elif PACKETVER >= 20081119
+packetLen(0x0425, 6)
+#elif PACKETVER >= 20081112
+packetLen(0x0425, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x0425, 3)
+#elif PACKETVER >= 20081022
+packetLen(0x0425, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0425, 68)
+#elif PACKETVER >= 20081008
+packetLen(0x0425, 12)
+#elif PACKETVER >= 20081001
+packetLen(0x0425, 6)
+#elif PACKETVER >= 20080827
+packetLen(0x0425, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0425, 10)
+#endif
+
+// Packet: 0x0426
+#if PACKETVER >= 20081203
+packetLen(0x0426, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x0426, 8)
+#elif PACKETVER >= 20081119
+packetLen(0x0426, 16)
+#elif PACKETVER >= 20081112
+packetLen(0x0426, 5)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0426, 23)
+#elif PACKETVER >= 20081029
+packetLen(0x0426, 6)
+#elif PACKETVER >= 20081022
+packetLen(0x0426, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0426, 6)
+#elif PACKETVER >= 20081008
+packetLen(0x0426, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x0426, 2)
+#elif PACKETVER >= 20080924
+packetLen(0x0426, 22)
+#elif PACKETVER >= 20080917
+packetLen(0x0426, 9)
+#elif PACKETVER >= 20080910
+packetLen(0x0426, 36)
+#elif PACKETVER >= 20080903
+packetLen(0x0426, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x0426, 6)
+#elif PACKETVER >= 20080820
+packetLen(0x0426, 102)
+#endif
+
+// Packet: 0x0427
+#if PACKETVER >= 20081217
+packetLen(0x0427, 5)
+#elif PACKETVER >= 20081126
+packetLen(0x0427, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x0427, 15)
+#elif PACKETVER >= 20081112
+packetLen(0x0427, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x0427, 6)
+#elif PACKETVER >= 20081015
+packetLen(0x0427, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x0427, 8)
+#elif PACKETVER >= 20080924
+packetLen(0x0427, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x0427, 282)
+#elif PACKETVER >= 20080820
+packetLen(0x0427, -1)
+#endif
+
+// Packet: 0x0428
+#if PACKETVER >= 20081217
+packetLen(0x0428, 19)
+#elif PACKETVER >= 20081203
+packetLen(0x0428, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x0428, 17)
+#elif PACKETVER >= 20081119
+packetLen(0x0428, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x0428, 6)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081008
+packetLen(0x0428, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x0428, 24)
+#elif PACKETVER >= 20080910
+packetLen(0x0428, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x0428, 7)
+#elif PACKETVER >= 20080827
+packetLen(0x0428, 60)
+#elif PACKETVER >= 20080820
+packetLen(0x0428, 21)
+#endif
+
+// Packet: 0x0429
+#if PACKETVER >= 20081217
+packetLen(0x0429, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x0429, 10)
+#elif PACKETVER >= 20081119
+packetLen(0x0429, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x0429, 4)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0429, 30)
+#elif PACKETVER >= 20081029
+packetLen(0x0429, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x0429, 8)
+#elif PACKETVER >= 20081008
+packetLen(0x0429, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x0429, 2)
+#elif PACKETVER >= 20080924
+packetLen(0x0429, 6)
+#elif PACKETVER >= 20080903
+packetLen(0x0429, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x0429, 53)
+#elif PACKETVER >= 20080820
+packetLen(0x0429, -1)
+#endif
+
+// Packet: 0x042a
+#if PACKETVER >= 20081203
+packetLen(0x042a, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x042a, 7)
+#elif PACKETVER >= 20081119
+packetLen(0x042a, 67)
+#elif PACKETVER >= 20081112
+packetLen(0x042a, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x042a, 31)
+#elif PACKETVER >= 20081029
+packetLen(0x042a, 13)
+#elif PACKETVER >= 20081022
+packetLen(0x042a, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x042a, 26)
+#elif PACKETVER >= 20081008
+packetLen(0x042a, 68)
+#elif PACKETVER >= 20080910
+packetLen(0x042a, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x042a, 8)
+#elif PACKETVER >= 20080827
+packetLen(0x042a, 6)
+#elif PACKETVER >= 20080820
+packetLen(0x042a, -1)
+#endif
+
+// Packet: 0x042b
+#if PACKETVER >= 20081217
+packetLen(0x042b, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x042b, 58)
+#elif PACKETVER >= 20081126
+packetLen(0x042b, 13)
+#elif PACKETVER >= 20081022
+packetLen(0x042b, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x042b, 9)
+#elif PACKETVER >= 20081008
+packetLen(0x042b, 282)
+#elif PACKETVER >= 20081001
+packetLen(0x042b, 6)
+#elif PACKETVER >= 20080903
+packetLen(0x042b, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x042b, 3)
+#elif PACKETVER >= 20080820
+packetLen(0x042b, -1)
+#endif
+
+// Packet: 0x042c
+#if PACKETVER >= 20081217
+packetLen(0x042c, 31)
+#elif PACKETVER >= 20081203
+packetLen(0x042c, 6)
+#elif PACKETVER >= 20081126
+packetLen(0x042c, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x042c, 36)
+#elif PACKETVER >= 20081105
+packetLen(0x042c, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x042c, 10)
+#elif PACKETVER >= 20081022
+packetLen(0x042c, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x042c, 4)
+#elif PACKETVER >= 20081008
+packetLen(0x042c, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x042c, 4)
+#elif PACKETVER >= 20080924
+packetLen(0x042c, 2)
+#elif PACKETVER >= 20080917
+packetLen(0x042c, 16)
+#elif PACKETVER >= 20080910
+packetLen(0x042c, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x042c, 29)
+#elif PACKETVER >= 20080820
+packetLen(0x042c, -1)
+#endif
+
+// Packet: 0x042d
+#if PACKETVER >= 20081203
+packetLen(0x042d, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x042d, 8)
+#elif PACKETVER >= 20081119
+packetLen(0x042d, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x042d, 2)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x042d, 7)
+#elif PACKETVER >= 20081029
+packetLen(0x042d, 6)
+#elif PACKETVER >= 20080924
+packetLen(0x042d, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x042d, 5)
+#elif PACKETVER >= 20080910
+packetLen(0x042d, 10)
+#elif PACKETVER >= 20080827
+packetLen(0x042d, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x042d, 186)
+#endif
+
+// Packet: 0x042e
+#if PACKETVER >= 20081203
+packetLen(0x042e, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x042e, 6)
+#elif PACKETVER >= 20081119
+packetLen(0x042e, 12)
+#elif PACKETVER >= 20081112
+packetLen(0x042e, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x042e, 14)
+#elif PACKETVER >= 20081029
+packetLen(0x042e, 7)
+#elif PACKETVER >= 20081001
+packetLen(0x042e, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x042e, 57)
+#elif PACKETVER >= 20080903
+packetLen(0x042e, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x042e, 6)
+#elif PACKETVER >= 20080820
+packetLen(0x042e, -1)
+#endif
+
+// Packet: 0x042f
+#if PACKETVER >= 20081217
+packetLen(0x042f, 11)
+#elif PACKETVER >= 20081119
+packetLen(0x042f, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x042f, 10)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081029
+packetLen(0x042f, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x042f, 30)
+#elif PACKETVER >= 20081015
+packetLen(0x042f, 6)
+#elif PACKETVER >= 20081008
+packetLen(0x042f, 4)
+#elif PACKETVER >= 20081001
+packetLen(0x042f, 6)
+#elif PACKETVER >= 20080924
+packetLen(0x042f, -1)
+#elif PACKETVER >= 20080917
+packetLen(0x042f, 2)
+#elif PACKETVER >= 20080903
+packetLen(0x042f, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x042f, 5)
+#elif PACKETVER >= 20080820
+packetLen(0x042f, -1)
+#endif
+
+// Packet: 0x0430
+#if PACKETVER >= 20081217
+packetLen(0x0430, -1)
+#elif PACKETVER >= 20081203
+packetLen(0x0430, 2)
+#elif PACKETVER >= 20081126
+packetLen(0x0430, 22)
+#elif PACKETVER >= 20081112
+packetLen(0x0430, -1)
+#elif PACKETVER >= 20081105
+packetLen(0x0430, 26)
+#elif PACKETVER >= 20081029
+packetLen(0x0430, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x0430, 86)
+#elif PACKETVER >= 20081008
+packetLen(0x0430, -1)
+#elif PACKETVER >= 20081001
+packetLen(0x0430, 43)
+#elif PACKETVER >= 20080924
+packetLen(0x0430, 13)
+#elif PACKETVER >= 20080917
+packetLen(0x0430, -1)
+#elif PACKETVER >= 20080910
+packetLen(0x0430, 4)
+#elif PACKETVER >= 20080903
+packetLen(0x0430, 31)
+#elif PACKETVER >= 20080827
+packetLen(0x0430, -1)
+#elif PACKETVER >= 20080820
+packetLen(0x0430, 10)
+#endif
+
+// Packet: 0x0431
+#if PACKETVER >= 20081105
+packetLen(0x0431, -1)
+#elif PACKETVER >= 20081029
+packetLen(0x0431, 2)
+#elif PACKETVER >= 20081022
+packetLen(0x0431, 9)
+#elif PACKETVER >= 20081015
+packetLen(0x0431, 6)
+#elif PACKETVER >= 20081008
+packetLen(0x0431, 8)
+#elif PACKETVER >= 20080910
+packetLen(0x0431, -1)
+#elif PACKETVER >= 20080903
+packetLen(0x0431, 2)
+#elif PACKETVER >= 20080827
+packetLen(0x0431, 32)
+#elif PACKETVER >= 20080820
+packetLen(0x0431, -1)
+#endif
+
+// Packet: 0x0432
+#if PACKETVER >= 20081119
+packetLen(0x0432, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x0432, 26)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081022
+packetLen(0x0432, -1)
+#elif PACKETVER >= 20081015
+packetLen(0x0432, 10)
+#elif PACKETVER >= 20081001
+packetLen(0x0432, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x0432, 30)
+#elif PACKETVER >= 20080917
+packetLen(0x0432, 26)
+#elif PACKETVER >= 20080910
+packetLen(0x0432, 2)
+#elif PACKETVER >= 20080903
+packetLen(0x0432, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x0432, 27)
+#elif PACKETVER >= 20080820
+packetLen(0x0432, 18)
+#endif
+
+// Packet: 0x0433
+#if PACKETVER >= 20081217
+packetLen(0x0433, 7)
+#elif PACKETVER >= 20081203
+packetLen(0x0433, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x0433, 8)
+#elif PACKETVER >= 20081119
+packetLen(0x0433, -1)
+#elif PACKETVER >= 20081112
+packetLen(0x0433, 4)
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0433, 39)
+#elif PACKETVER >= 20081029
+packetLen(0x0433, -1)
+#elif PACKETVER >= 20081022
+packetLen(0x0433, 2)
+#elif PACKETVER >= 20081015
+packetLen(0x0433, 14)
+#elif PACKETVER >= 20081008
+packetLen(0x0433, 3)
+#elif PACKETVER >= 20081001
+packetLen(0x0433, -1)
+#elif PACKETVER >= 20080924
+packetLen(0x0433, 54)
+#elif PACKETVER >= 20080917
+packetLen(0x0433, 17)
+#elif PACKETVER >= 20080910
+packetLen(0x0433, 26)
+#elif PACKETVER >= 20080820
+packetLen(0x0433, -1)
+#endif
+
+// Packet: 0x0434
+#if PACKETVER >= 20081217
+packetLen(0x0434, 6)
+#elif PACKETVER >= 20081203
+packetLen(0x0434, -1)
+#elif PACKETVER >= 20081126
+packetLen(0x0434, 15)
+#elif PACKETVER >= 20080903
+packetLen(0x0434, -1)
+#elif PACKETVER >= 20080827
+packetLen(0x0434, 8)
+#elif PACKETVER >= 20080820
+packetLen(0x0434, -1)
+#endif
+
+// Packet: 0x0435
+#if PACKETVER >= 20081217
+packetLen(0x0435, 3)
+#elif PACKETVER >= 20081126
+packetLen(0x0435, -1)
+#elif PACKETVER >= 20081119
+packetLen(0x0435, 24)
+#elif PACKETVER >= 20081015
+packetLen(0x0435, -1)
+#elif PACKETVER >= 20081008
+packetLen(0x0435, 11)
+#elif PACKETVER >= 20081001
+packetLen(0x0435, 10)
+#elif PACKETVER >= 20080924
+packetLen(0x0435, 7)
+#elif PACKETVER >= 20080917
+packetLen(0x0435, 6)
+#elif PACKETVER >= 20080820
+packetLen(0x0435, -1)
+#endif
+
+// Packet: 0x0436
+#if PACKETVER >= 20081217
+packetLen(0x0436, -1) // CZ_ENTER2
+#elif PACKETVER >= 20081203
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20081126
+packetLen(0x0436, 9) // CZ_ENTER2
+#elif PACKETVER >= 20081112
+packetLen(0x0436, 19) // CZ_ENTER2
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0436, 60) // CZ_ENTER2
+#elif PACKETVER >= 20081029
+packetLen(0x0436, -1) // CZ_ENTER2
+#elif PACKETVER >= 20081022
+packetLen(0x0436, 13) // CZ_ENTER2
+#elif PACKETVER >= 20081015
+packetLen(0x0436, 7) // CZ_ENTER2
+#elif PACKETVER >= 20080924
+packetLen(0x0436, -1) // CZ_ENTER2
+#elif PACKETVER >= 20080917
+packetLen(0x0436, 7) // CZ_ENTER2
+#elif PACKETVER >= 20080910
+packetLen(0x0436, 3) // CZ_ENTER2
+#endif
+
+// Packet: 0x0437
+#if PACKETVER >= 20081112
+packetLen(0x0437, 7) // CZ_REQUEST_ACT2
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0437, 282) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20081029
+packetLen(0x0437, -1) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20081022
+packetLen(0x0437, 6) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20081015
+packetLen(0x0437, 55) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20081008
+packetLen(0x0437, -1) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20081001
+packetLen(0x0437, 33) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20080924
+packetLen(0x0437, -1) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20080917
+packetLen(0x0437, 10) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20080910
+packetLen(0x0437, -1) // CZ_REQUEST_ACT2
+#endif
+
+// Packet: 0x0438
+#if PACKETVER >= 20081217
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20081203
+packetLen(0x0438, 65) // CZ_USE_SKILL2
+#elif PACKETVER >= 20081119
+packetLen(0x0438, -1) // CZ_USE_SKILL2
+#elif PACKETVER >= 20081112
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+// ignored packet from 2008-11-12dRagexe
+// ignored packet from 2008-11-12aRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0438, 4) // CZ_USE_SKILL2
+#elif PACKETVER >= 20081029
+packetLen(0x0438, 12) // CZ_USE_SKILL2
+#elif PACKETVER >= 20081022
+packetLen(0x0438, 30) // CZ_USE_SKILL2
+#elif PACKETVER >= 20081001
+packetLen(0x0438, -1) // CZ_USE_SKILL2
+#elif PACKETVER >= 20080924
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20080917
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20080910
+packetLen(0x0438, -1) // CZ_USE_SKILL2
+#endif
+
+// Packet: 0x0439
+#if PACKETVER >= 20081217
+packetLen(0x0439, 3) // CZ_USE_ITEM2
+#elif PACKETVER >= 20081119
+packetLen(0x0439, -1) // CZ_USE_ITEM2
+#elif PACKETVER >= 20081112
+packetLen(0x0439, 22) // CZ_USE_ITEM2
+// ignored packet from 2008-11-12aRagexe
+// ignored packet from 2008-11-12cRagexe
+#elif PACKETVER >= 20081105
+packetLen(0x0439, 4) // CZ_USE_ITEM2
+#elif PACKETVER >= 20081022
+packetLen(0x0439, -1) // CZ_USE_ITEM2
+#elif PACKETVER >= 20081015
+packetLen(0x0439, 11) // CZ_USE_ITEM2
+#elif PACKETVER >= 20081008
+packetLen(0x0439, 114) // CZ_USE_ITEM2
+#elif PACKETVER >= 20081001
+packetLen(0x0439, 12) // CZ_USE_ITEM2
+#elif PACKETVER >= 20080924
+packetLen(0x0439, 30) // CZ_USE_ITEM2
+#elif PACKETVER >= 20080917
+packetLen(0x0439, -1) // CZ_USE_ITEM2
+#elif PACKETVER >= 20080910
+packetLen(0x0439, 30) // CZ_USE_ITEM2
+#endif
+
+// Packet: 0x043d
+#if PACKETVER >= 20081112
+packetLen(0x043d, 8) // ZC_SKILL_POSTDELAY
+#endif
+
+// Packet: 0x043e
+#if PACKETVER >= 20081112
+packetLen(0x043e, -1) // ZC_SKILL_POSTDELAY_LIST
+#endif
+
+// Packet: 0x043f
+#if PACKETVER >= 20081112
+packetLen(0x043f, 8) // ZC_MSG_STATE_CHANGE2
+#endif
+
+// Packet: 0x0440
+#if PACKETVER >= 20081126
+packetLen(0x0440, 10) // ZC_MILLENNIUMSHIELD
+#endif
+
+// Packet: 0x0441
+#if PACKETVER >= 20081126
+packetLen(0x0441, 4) // ZC_SKILLINFO_DELETE
+#endif
+
+// Packet: 0x0442
+#if PACKETVER >= 20081210
+packetLen(0x0442, 8) // ZC_SKILL_SELECT_REQUEST
+#endif
+
+// Packet: 0x0443
+#if PACKETVER >= 20081210
+packetLen(0x0443, 8) // CZ_SKILL_SELECT_RESPONSE
+#endif
+
+
+#endif /* COMMON_PACKETS2008_LEN_MAIN_H */
diff --git a/src/common/packets/packets2008_len_re.h b/src/common/packets/packets2008_len_re.h
new file mode 100644
index 000000000..37ee848eb
--- /dev/null
+++ b/src/common/packets/packets2008_len_re.h
@@ -0,0 +1,2944 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2008_LEN_RE_H
+#define COMMON_PACKETS2008_LEN_RE_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+#if PACKETVER >= 20081217
+packetLen(0x006d, 114) // HC_ACCEPT_MAKECHAR
+#elif PACKETVER >= 20080827
+packetLen(0x006d, 110) // HC_ACCEPT_MAKECHAR
+#endif
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 22) // CZ_ENTER
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 44) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 10) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, 14)
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+packetLen(0x0094, 19) // CZ_REQNAME
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+packetLen(0x00a7, 9)
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 7) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+packetLen(0x00f7, 17) // CZ_REQUEST_TIME
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+packetLen(0x0113, 25) // CZ_USE_SKILL
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0158
+packetLen(0x0158, -1) // ZC_ACK_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+#if PACKETVER >= 20081126
+packetLen(0x01a2, 37) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080827
+packetLen(0x01a2, 35) // ZC_PROPERTY_PET
+#endif
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x020f
+packetLen(0x020f, 10) // CZ_REQ_PVPPOINT
+
+// Packet: 0x0210
+packetLen(0x0210, 22) // ZC_ACK_PVPPOINT
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+
+// Packet: 0x022b
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+
+// Packet: 0x022c
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+
+// Packet: 0x022d
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+
+// Packet: 0x022e
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+
+// Packet: 0x022f
+packetLen(0x022f, 5) // ZC_FEED_MER
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+packetLen(0x0281, 4) // CZ_GANGSI_RANK
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+
+// Packet: 0x0288
+packetLen(0x0288, 10) // CZ_PC_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0289
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0296
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0297
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0298
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+
+// Packet: 0x0299
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+
+// Packet: 0x029a
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+
+// Packet: 0x029b
+packetLen(0x029b, 80) // ZC_MER_INIT
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a5
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+
+// Packet: 0x02aa
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+
+// Packet: 0x02ab
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+
+// Packet: 0x02ac
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+
+// Packet: 0x02ad
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+
+// Packet: 0x02b0
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+
+// Packet: 0x02b1
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+
+// Packet: 0x02b2
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+
+// Packet: 0x02b3
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+
+// Packet: 0x02b4
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+
+// Packet: 0x02b5
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+
+// Packet: 0x02b6
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+
+// Packet: 0x02b7
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+
+// Packet: 0x02b8
+packetLen(0x02b8, 22) // ZC_ITEM_PICKUP_PARTY
+
+// Packet: 0x02b9
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+
+// Packet: 0x02ba
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+
+// Packet: 0x02bb
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+
+// Packet: 0x02bc
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+
+// Packet: 0x02c1
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+
+// Packet: 0x02c2
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+
+// Packet: 0x02c4
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+
+// Packet: 0x02c5
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c6
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+
+// Packet: 0x02c7
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c8
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+
+// Packet: 0x02c9
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+
+// Packet: 0x02ca
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+
+// Packet: 0x02cb
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+
+// Packet: 0x02cc
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+
+// Packet: 0x02cd
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+
+// Packet: 0x02ce
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+
+// Packet: 0x02cf
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+
+// Packet: 0x02d0
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d1
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d2
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d3
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+
+// Packet: 0x02d4
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+
+// Packet: 0x02d5
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+
+// Packet: 0x02d6
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d7
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d8
+packetLen(0x02d8, 10) // CZ_CONFIG
+
+// Packet: 0x02d9
+packetLen(0x02d9, 10) // ZC_CONFIG
+
+// Packet: 0x02da
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+
+// Packet: 0x02db
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+
+// Packet: 0x02dc
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+
+// Packet: 0x02dd
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+
+// Packet: 0x02de
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+
+// Packet: 0x02df
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+
+// Packet: 0x02e0
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+
+// Packet: 0x02e1
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+
+// Packet: 0x02e2
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+
+// Packet: 0x02e3
+packetLen(0x02e3, 22) // CZ_USE_SKILL_NEW_JAPEN
+
+// Packet: 0x02e4
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+
+// Packet: 0x02e5
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+
+// Packet: 0x02e6
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+
+// Packet: 0x02e7
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+
+// Packet: 0x02e8
+packetLen(0x02e8, -1) // ZC_NORMAL_ITEMLIST3
+
+// Packet: 0x02e9
+packetLen(0x02e9, -1) // ZC_CART_NORMAL_ITEMLIST3
+
+// Packet: 0x02ea
+packetLen(0x02ea, -1) // ZC_STORE_NORMAL_ITEMLIST3
+
+// Packet: 0x02eb
+packetLen(0x02eb, 13) // ZC_ACCEPT_ENTER2
+
+// Packet: 0x02ec
+packetLen(0x02ec, 67) // ZC_NOTIFY_MOVEENTRY4
+
+// Packet: 0x02ed
+packetLen(0x02ed, 59) // ZC_NOTIFY_NEWENTRY4
+
+// Packet: 0x02ee
+packetLen(0x02ee, 60) // ZC_NOTIFY_STANDENTRY4
+
+// Packet: 0x02ef
+packetLen(0x02ef, 8) // ZC_NOTIFY_FONT
+
+// Packet: 0x02f0
+packetLen(0x02f0, 10) // ZC_PROGRESS
+
+// Packet: 0x02f1
+packetLen(0x02f1, 2) // CZ_PROGRESS
+
+// Packet: 0x02f2
+packetLen(0x02f2, 2) // ZC_PROGRESS_CANCEL
+
+// Packet: 0x02f3
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+
+// Packet: 0x02f4
+packetLen(0x02f4, -1) // ZC_IRMAIL_SEND_RES
+
+// Packet: 0x02f5
+packetLen(0x02f5, -1) // ZC_IRMAIL_NOTIFY
+
+// Packet: 0x02f6
+packetLen(0x02f6, -1) // CZ_IRMAIL_LIST
+
+// Packet: 0x02f7
+packetLen(0x02f7, -1)
+
+// Packet: 0x02f8
+packetLen(0x02f8, -1)
+
+// Packet: 0x02f9
+packetLen(0x02f9, -1)
+
+// Packet: 0x02fa
+packetLen(0x02fa, -1)
+
+// Packet: 0x02fb
+packetLen(0x02fb, -1)
+
+// Packet: 0x02fc
+packetLen(0x02fc, -1)
+
+// Packet: 0x02fd
+packetLen(0x02fd, -1)
+
+// Packet: 0x02fe
+packetLen(0x02fe, -1)
+
+// Packet: 0x02ff
+packetLen(0x02ff, -1)
+
+// Packet: 0x0300
+packetLen(0x0300, -1)
+
+// Packet: 0x0301
+packetLen(0x0301, -1)
+
+// Packet: 0x0302
+packetLen(0x0302, -1)
+
+// Packet: 0x0303
+packetLen(0x0303, -1)
+
+// Packet: 0x0304
+packetLen(0x0304, -1)
+
+// Packet: 0x0305
+packetLen(0x0305, -1)
+
+// Packet: 0x0306
+packetLen(0x0306, -1)
+
+// Packet: 0x0307
+packetLen(0x0307, -1)
+
+// Packet: 0x0308
+packetLen(0x0308, -1)
+
+// Packet: 0x0309
+packetLen(0x0309, -1)
+
+// Packet: 0x030a
+packetLen(0x030a, -1)
+
+// Packet: 0x030b
+packetLen(0x030b, -1)
+
+// Packet: 0x030c
+packetLen(0x030c, -1)
+
+// Packet: 0x030d
+packetLen(0x030d, -1)
+
+// Packet: 0x030e
+packetLen(0x030e, -1)
+
+// Packet: 0x030f
+packetLen(0x030f, -1)
+
+// Packet: 0x0310
+packetLen(0x0310, -1)
+
+// Packet: 0x0311
+packetLen(0x0311, -1)
+
+// Packet: 0x0312
+packetLen(0x0312, -1)
+
+// Packet: 0x0313
+packetLen(0x0313, -1)
+
+// Packet: 0x0314
+packetLen(0x0314, -1)
+
+// Packet: 0x0315
+packetLen(0x0315, -1)
+
+// Packet: 0x0316
+packetLen(0x0316, -1)
+
+// Packet: 0x0317
+packetLen(0x0317, -1)
+
+// Packet: 0x0318
+packetLen(0x0318, -1)
+
+// Packet: 0x0319
+packetLen(0x0319, -1)
+
+// Packet: 0x031a
+packetLen(0x031a, -1)
+
+// Packet: 0x031b
+packetLen(0x031b, -1)
+
+// Packet: 0x031c
+packetLen(0x031c, -1)
+
+// Packet: 0x031d
+packetLen(0x031d, -1)
+
+// Packet: 0x031e
+packetLen(0x031e, -1)
+
+// Packet: 0x031f
+packetLen(0x031f, -1)
+
+// Packet: 0x0320
+packetLen(0x0320, -1)
+
+// Packet: 0x0321
+packetLen(0x0321, -1)
+
+// Packet: 0x0322
+packetLen(0x0322, -1)
+
+// Packet: 0x0323
+packetLen(0x0323, -1)
+
+// Packet: 0x0324
+packetLen(0x0324, -1)
+
+// Packet: 0x0325
+packetLen(0x0325, -1)
+
+// Packet: 0x0326
+packetLen(0x0326, -1)
+
+// Packet: 0x0327
+packetLen(0x0327, -1)
+
+// Packet: 0x0328
+packetLen(0x0328, -1)
+
+// Packet: 0x0329
+packetLen(0x0329, -1)
+
+// Packet: 0x032a
+packetLen(0x032a, -1)
+
+// Packet: 0x032b
+packetLen(0x032b, -1)
+
+// Packet: 0x032c
+packetLen(0x032c, -1)
+
+// Packet: 0x032d
+packetLen(0x032d, -1)
+
+// Packet: 0x032e
+packetLen(0x032e, -1)
+
+// Packet: 0x032f
+packetLen(0x032f, -1)
+
+// Packet: 0x0330
+packetLen(0x0330, -1)
+
+// Packet: 0x0331
+packetLen(0x0331, -1)
+
+// Packet: 0x0332
+packetLen(0x0332, -1)
+
+// Packet: 0x0333
+packetLen(0x0333, -1)
+
+// Packet: 0x0334
+packetLen(0x0334, -1)
+
+// Packet: 0x0335
+packetLen(0x0335, -1)
+
+// Packet: 0x0336
+packetLen(0x0336, -1)
+
+// Packet: 0x0337
+packetLen(0x0337, -1)
+
+// Packet: 0x0338
+packetLen(0x0338, -1)
+
+// Packet: 0x0339
+packetLen(0x0339, -1)
+
+// Packet: 0x033a
+packetLen(0x033a, -1)
+
+// Packet: 0x033b
+packetLen(0x033b, -1)
+
+// Packet: 0x033c
+packetLen(0x033c, -1)
+
+// Packet: 0x033d
+packetLen(0x033d, -1)
+
+// Packet: 0x033e
+packetLen(0x033e, -1)
+
+// Packet: 0x033f
+packetLen(0x033f, -1)
+
+// Packet: 0x0340
+packetLen(0x0340, -1)
+
+// Packet: 0x0341
+packetLen(0x0341, -1)
+
+// Packet: 0x0342
+packetLen(0x0342, -1)
+
+// Packet: 0x0343
+packetLen(0x0343, -1)
+
+// Packet: 0x0344
+packetLen(0x0344, -1)
+
+// Packet: 0x0345
+packetLen(0x0345, -1)
+
+// Packet: 0x0346
+packetLen(0x0346, -1)
+
+// Packet: 0x0347
+packetLen(0x0347, -1)
+
+// Packet: 0x0348
+packetLen(0x0348, -1)
+
+// Packet: 0x0349
+packetLen(0x0349, -1)
+
+// Packet: 0x034a
+packetLen(0x034a, -1)
+
+// Packet: 0x034b
+packetLen(0x034b, -1)
+
+// Packet: 0x034c
+packetLen(0x034c, -1)
+
+// Packet: 0x034d
+packetLen(0x034d, -1)
+
+// Packet: 0x034e
+packetLen(0x034e, -1)
+
+// Packet: 0x034f
+packetLen(0x034f, -1)
+
+// Packet: 0x0350
+packetLen(0x0350, -1)
+
+// Packet: 0x0351
+packetLen(0x0351, -1)
+
+// Packet: 0x0352
+packetLen(0x0352, -1)
+
+// Packet: 0x0353
+packetLen(0x0353, -1)
+
+// Packet: 0x0354
+packetLen(0x0354, -1)
+
+// Packet: 0x0355
+packetLen(0x0355, -1)
+
+// Packet: 0x0356
+packetLen(0x0356, -1)
+
+// Packet: 0x0357
+packetLen(0x0357, -1)
+
+// Packet: 0x0358
+packetLen(0x0358, -1)
+
+// Packet: 0x0359
+packetLen(0x0359, -1)
+
+// Packet: 0x035a
+packetLen(0x035a, -1)
+
+// Packet: 0x035b
+packetLen(0x035b, -1)
+
+// Packet: 0x035c
+packetLen(0x035c, 2) // CZ_OPEN_SIMPLE_CASHSHOP_ITEMLIST
+
+// Packet: 0x035d
+packetLen(0x035d, -1) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+
+// Packet: 0x035e
+packetLen(0x035e, 2) // CZ_CLOSE_WINDOW
+
+// Packet: 0x035f
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+
+// Packet: 0x0360
+packetLen(0x0360, -1) // CZ_REQUEST_TIME2
+
+// Packet: 0x0361
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+
+// Packet: 0x0362
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+
+// Packet: 0x0363
+packetLen(0x0363, -1) // CZ_ITEM_THROW2
+
+// Packet: 0x0364
+packetLen(0x0364, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+
+// Packet: 0x0365
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+
+// Packet: 0x0366
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+
+// Packet: 0x0367
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+
+// Packet: 0x0368
+packetLen(0x0368, -1) // CZ_REQNAME2
+
+// Packet: 0x0369
+packetLen(0x0369, -1) // CZ_REQNAME_BYGID2
+
+// Packet: 0x036a
+packetLen(0x036a, -1)
+
+// Packet: 0x036b
+packetLen(0x036b, -1)
+
+// Packet: 0x036c
+packetLen(0x036c, -1)
+
+// Packet: 0x036d
+packetLen(0x036d, -1)
+
+// Packet: 0x036e
+packetLen(0x036e, -1)
+
+// Packet: 0x036f
+packetLen(0x036f, -1)
+
+// Packet: 0x0370
+packetLen(0x0370, -1)
+
+// Packet: 0x0371
+packetLen(0x0371, -1)
+
+// Packet: 0x0372
+packetLen(0x0372, -1)
+
+// Packet: 0x0373
+packetLen(0x0373, -1)
+
+// Packet: 0x0374
+packetLen(0x0374, -1)
+
+// Packet: 0x0375
+packetLen(0x0375, -1)
+
+// Packet: 0x0376
+packetLen(0x0376, -1)
+
+// Packet: 0x0377
+packetLen(0x0377, -1)
+
+// Packet: 0x0378
+packetLen(0x0378, -1)
+
+// Packet: 0x0379
+packetLen(0x0379, -1)
+
+// Packet: 0x037a
+packetLen(0x037a, -1)
+
+// Packet: 0x037b
+packetLen(0x037b, -1)
+
+// Packet: 0x037c
+packetLen(0x037c, -1)
+
+// Packet: 0x037d
+packetLen(0x037d, -1)
+
+// Packet: 0x037e
+packetLen(0x037e, -1)
+
+// Packet: 0x037f
+packetLen(0x037f, -1)
+
+// Packet: 0x0380
+packetLen(0x0380, -1)
+
+// Packet: 0x0381
+packetLen(0x0381, -1)
+
+// Packet: 0x0382
+packetLen(0x0382, -1)
+
+// Packet: 0x0383
+packetLen(0x0383, -1)
+
+// Packet: 0x0384
+packetLen(0x0384, -1)
+
+// Packet: 0x0385
+packetLen(0x0385, -1)
+
+// Packet: 0x0386
+packetLen(0x0386, -1)
+
+// Packet: 0x0387
+packetLen(0x0387, -1)
+
+// Packet: 0x0388
+packetLen(0x0388, -1)
+
+// Packet: 0x0389
+packetLen(0x0389, -1)
+
+// Packet: 0x038a
+packetLen(0x038a, -1)
+
+// Packet: 0x038b
+packetLen(0x038b, -1)
+
+// Packet: 0x038c
+packetLen(0x038c, -1)
+
+// Packet: 0x038d
+packetLen(0x038d, -1)
+
+// Packet: 0x038e
+packetLen(0x038e, -1)
+
+// Packet: 0x038f
+packetLen(0x038f, -1)
+
+// Packet: 0x0390
+packetLen(0x0390, -1)
+
+// Packet: 0x0391
+packetLen(0x0391, -1)
+
+// Packet: 0x0392
+packetLen(0x0392, -1)
+
+// Packet: 0x0393
+packetLen(0x0393, -1)
+
+// Packet: 0x0394
+packetLen(0x0394, -1)
+
+// Packet: 0x0395
+packetLen(0x0395, -1)
+
+// Packet: 0x0396
+packetLen(0x0396, -1)
+
+// Packet: 0x0397
+packetLen(0x0397, -1)
+
+// Packet: 0x0398
+packetLen(0x0398, -1)
+
+// Packet: 0x0399
+packetLen(0x0399, -1)
+
+// Packet: 0x039a
+packetLen(0x039a, -1)
+
+// Packet: 0x039b
+packetLen(0x039b, -1)
+
+// Packet: 0x039c
+packetLen(0x039c, -1)
+
+// Packet: 0x039d
+packetLen(0x039d, -1)
+
+// Packet: 0x039e
+packetLen(0x039e, -1)
+
+// Packet: 0x039f
+packetLen(0x039f, -1)
+
+// Packet: 0x03a0
+packetLen(0x03a0, -1)
+
+// Packet: 0x03a1
+packetLen(0x03a1, -1)
+
+// Packet: 0x03a2
+packetLen(0x03a2, -1)
+
+// Packet: 0x03a3
+packetLen(0x03a3, -1)
+
+// Packet: 0x03a4
+packetLen(0x03a4, -1)
+
+// Packet: 0x03a5
+packetLen(0x03a5, -1)
+
+// Packet: 0x03a6
+packetLen(0x03a6, -1)
+
+// Packet: 0x03a7
+packetLen(0x03a7, -1)
+
+// Packet: 0x03a8
+packetLen(0x03a8, -1)
+
+// Packet: 0x03a9
+packetLen(0x03a9, -1)
+
+// Packet: 0x03aa
+packetLen(0x03aa, -1)
+
+// Packet: 0x03ab
+packetLen(0x03ab, -1)
+
+// Packet: 0x03ac
+packetLen(0x03ac, -1)
+
+// Packet: 0x03ad
+packetLen(0x03ad, -1)
+
+// Packet: 0x03ae
+packetLen(0x03ae, -1)
+
+// Packet: 0x03af
+packetLen(0x03af, -1)
+
+// Packet: 0x03b0
+packetLen(0x03b0, -1)
+
+// Packet: 0x03b1
+packetLen(0x03b1, -1)
+
+// Packet: 0x03b2
+packetLen(0x03b2, -1)
+
+// Packet: 0x03b3
+packetLen(0x03b3, -1)
+
+// Packet: 0x03b4
+packetLen(0x03b4, -1)
+
+// Packet: 0x03b5
+packetLen(0x03b5, -1)
+
+// Packet: 0x03b6
+packetLen(0x03b6, -1)
+
+// Packet: 0x03b7
+packetLen(0x03b7, -1)
+
+// Packet: 0x03b8
+packetLen(0x03b8, -1)
+
+// Packet: 0x03b9
+packetLen(0x03b9, -1)
+
+// Packet: 0x03ba
+packetLen(0x03ba, -1)
+
+// Packet: 0x03bb
+packetLen(0x03bb, -1)
+
+// Packet: 0x03bc
+packetLen(0x03bc, -1)
+
+// Packet: 0x03bd
+packetLen(0x03bd, -1)
+
+// Packet: 0x03be
+packetLen(0x03be, -1)
+
+// Packet: 0x03bf
+packetLen(0x03bf, -1)
+
+// Packet: 0x03c0
+packetLen(0x03c0, -1)
+
+// Packet: 0x03c1
+packetLen(0x03c1, -1)
+
+// Packet: 0x03c2
+packetLen(0x03c2, -1)
+
+// Packet: 0x03c3
+packetLen(0x03c3, -1)
+
+// Packet: 0x03c4
+packetLen(0x03c4, -1)
+
+// Packet: 0x03c5
+packetLen(0x03c5, -1)
+
+// Packet: 0x03c6
+packetLen(0x03c6, -1)
+
+// Packet: 0x03c7
+packetLen(0x03c7, -1)
+
+// Packet: 0x03c8
+packetLen(0x03c8, -1)
+
+// Packet: 0x03c9
+packetLen(0x03c9, -1)
+
+// Packet: 0x03ca
+packetLen(0x03ca, -1)
+
+// Packet: 0x03cb
+packetLen(0x03cb, -1)
+
+// Packet: 0x03cc
+packetLen(0x03cc, -1)
+
+// Packet: 0x03cd
+packetLen(0x03cd, -1)
+
+// Packet: 0x03ce
+packetLen(0x03ce, -1)
+
+// Packet: 0x03cf
+packetLen(0x03cf, -1)
+
+// Packet: 0x03d0
+packetLen(0x03d0, -1)
+
+// Packet: 0x03d1
+packetLen(0x03d1, -1)
+
+// Packet: 0x03d2
+packetLen(0x03d2, -1)
+
+// Packet: 0x03d3
+packetLen(0x03d3, -1)
+
+// Packet: 0x03d4
+packetLen(0x03d4, -1)
+
+// Packet: 0x03d5
+packetLen(0x03d5, -1)
+
+// Packet: 0x03d6
+packetLen(0x03d6, -1)
+
+// Packet: 0x03d7
+packetLen(0x03d7, -1)
+
+// Packet: 0x03d8
+packetLen(0x03d8, -1)
+
+// Packet: 0x03d9
+packetLen(0x03d9, -1)
+
+// Packet: 0x03da
+packetLen(0x03da, -1)
+
+// Packet: 0x03db
+packetLen(0x03db, -1)
+
+// Packet: 0x03dc
+packetLen(0x03dc, -1)
+
+// Packet: 0x03dd
+packetLen(0x03dd, 18) // AHC_GAME_GUARD
+
+// Packet: 0x03de
+packetLen(0x03de, 18) // CAH_ACK_GAME_GUARD
+
+// Packet: 0x03e2
+packetLen(0x03e2, -1)
+
+// Packet: 0x03e3
+packetLen(0x03e3, -1)
+
+// Packet: 0x03e4
+packetLen(0x03e4, -1)
+
+// Packet: 0x03e5
+packetLen(0x03e5, -1)
+
+// Packet: 0x03e6
+packetLen(0x03e6, -1)
+
+// Packet: 0x03e7
+packetLen(0x03e7, -1)
+
+// Packet: 0x03e8
+packetLen(0x03e8, -1)
+
+// Packet: 0x03e9
+packetLen(0x03e9, -1)
+
+// Packet: 0x03ea
+packetLen(0x03ea, -1)
+
+// Packet: 0x03eb
+packetLen(0x03eb, -1)
+
+// Packet: 0x03ec
+packetLen(0x03ec, -1)
+
+// Packet: 0x03ed
+packetLen(0x03ed, -1)
+
+// Packet: 0x03ee
+packetLen(0x03ee, -1)
+
+// Packet: 0x03ef
+packetLen(0x03ef, -1)
+
+// Packet: 0x03f0
+packetLen(0x03f0, -1)
+
+// Packet: 0x03f1
+packetLen(0x03f1, -1)
+
+// Packet: 0x03f2
+packetLen(0x03f2, -1)
+
+// Packet: 0x03f3
+packetLen(0x03f3, -1)
+
+// Packet: 0x03f4
+packetLen(0x03f4, -1)
+
+// Packet: 0x03f5
+packetLen(0x03f5, -1)
+
+// Packet: 0x03f6
+packetLen(0x03f6, -1)
+
+// Packet: 0x03f7
+packetLen(0x03f7, -1)
+
+// Packet: 0x03f8
+packetLen(0x03f8, -1)
+
+// Packet: 0x03f9
+packetLen(0x03f9, -1)
+
+// Packet: 0x03fa
+packetLen(0x03fa, -1)
+
+// Packet: 0x03fb
+packetLen(0x03fb, -1)
+
+// Packet: 0x03fc
+packetLen(0x03fc, -1)
+
+// Packet: 0x03fd
+packetLen(0x03fd, -1)
+
+// Packet: 0x03fe
+packetLen(0x03fe, -1)
+
+// Packet: 0x03ff
+packetLen(0x03ff, -1)
+
+// Packet: 0x0400
+packetLen(0x0400, -1)
+
+// Packet: 0x0401
+packetLen(0x0401, -1)
+
+// Packet: 0x0402
+packetLen(0x0402, -1)
+
+// Packet: 0x0403
+packetLen(0x0403, -1)
+
+// Packet: 0x0404
+packetLen(0x0404, -1)
+
+// Packet: 0x0405
+packetLen(0x0405, -1)
+
+// Packet: 0x0406
+packetLen(0x0406, -1)
+
+// Packet: 0x0407
+packetLen(0x0407, -1)
+
+// Packet: 0x0408
+packetLen(0x0408, -1)
+
+// Packet: 0x0409
+packetLen(0x0409, -1)
+
+// Packet: 0x040a
+packetLen(0x040a, -1)
+
+// Packet: 0x040b
+packetLen(0x040b, -1)
+
+// Packet: 0x040c
+packetLen(0x040c, -1)
+
+// Packet: 0x040d
+packetLen(0x040d, -1)
+
+// Packet: 0x040e
+packetLen(0x040e, -1)
+
+// Packet: 0x040f
+packetLen(0x040f, -1)
+
+// Packet: 0x0410
+packetLen(0x0410, -1)
+
+// Packet: 0x0411
+packetLen(0x0411, -1)
+
+// Packet: 0x0412
+packetLen(0x0412, -1)
+
+// Packet: 0x0413
+packetLen(0x0413, -1)
+
+// Packet: 0x0414
+packetLen(0x0414, -1)
+
+// Packet: 0x0415
+packetLen(0x0415, -1)
+
+// Packet: 0x0416
+packetLen(0x0416, -1)
+
+// Packet: 0x0417
+packetLen(0x0417, -1)
+
+// Packet: 0x0418
+packetLen(0x0418, -1)
+
+// Packet: 0x0419
+packetLen(0x0419, -1)
+
+// Packet: 0x041a
+packetLen(0x041a, -1)
+
+// Packet: 0x041b
+packetLen(0x041b, -1)
+
+// Packet: 0x041c
+packetLen(0x041c, -1)
+
+// Packet: 0x041d
+packetLen(0x041d, -1)
+
+// Packet: 0x041e
+packetLen(0x041e, -1)
+
+// Packet: 0x041f
+packetLen(0x041f, -1)
+
+// Packet: 0x0420
+packetLen(0x0420, -1)
+
+// Packet: 0x0421
+packetLen(0x0421, -1)
+
+// Packet: 0x0422
+packetLen(0x0422, -1)
+
+// Packet: 0x0423
+packetLen(0x0423, -1)
+
+// Packet: 0x0424
+packetLen(0x0424, -1)
+
+// Packet: 0x0425
+packetLen(0x0425, -1)
+
+// Packet: 0x0426
+packetLen(0x0426, -1)
+
+// Packet: 0x0427
+packetLen(0x0427, -1)
+
+// Packet: 0x0428
+packetLen(0x0428, -1)
+
+// Packet: 0x0429
+packetLen(0x0429, -1)
+
+// Packet: 0x042a
+packetLen(0x042a, -1)
+
+// Packet: 0x042b
+packetLen(0x042b, -1)
+
+// Packet: 0x042c
+packetLen(0x042c, -1)
+
+// Packet: 0x042d
+packetLen(0x042d, -1)
+
+// Packet: 0x042e
+packetLen(0x042e, -1)
+
+// Packet: 0x042f
+packetLen(0x042f, -1)
+
+// Packet: 0x0430
+packetLen(0x0430, -1)
+
+// Packet: 0x0431
+packetLen(0x0431, -1)
+
+// Packet: 0x0432
+packetLen(0x0432, -1)
+
+// Packet: 0x0433
+packetLen(0x0433, -1)
+
+// Packet: 0x0434
+packetLen(0x0434, -1)
+
+// Packet: 0x0435
+packetLen(0x0435, -1)
+
+// Packet: 0x0436
+#if PACKETVER >= 20080910
+packetLen(0x0436, 19) // CZ_ENTER2
+#endif
+
+// Packet: 0x0437
+#if PACKETVER >= 20080910
+packetLen(0x0437, 7) // CZ_REQUEST_ACT2
+#endif
+
+// Packet: 0x0438
+#if PACKETVER >= 20080910
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#endif
+
+// Packet: 0x0439
+#if PACKETVER >= 20080910
+packetLen(0x0439, 8) // CZ_USE_ITEM2
+#endif
+
+// Packet: 0x043d
+#if PACKETVER >= 20081111
+packetLen(0x043d, 8) // ZC_SKILL_POSTDELAY
+#endif
+
+// Packet: 0x043e
+#if PACKETVER >= 20081111
+packetLen(0x043e, -1) // ZC_SKILL_POSTDELAY_LIST
+#endif
+
+// Packet: 0x043f
+#if PACKETVER >= 20081111
+packetLen(0x043f, 8) // ZC_MSG_STATE_CHANGE2
+#endif
+
+// Packet: 0x0440
+#if PACKETVER >= 20081126
+packetLen(0x0440, 10) // ZC_MILLENNIUMSHIELD
+#endif
+
+// Packet: 0x0441
+#if PACKETVER >= 20081126
+packetLen(0x0441, 4) // ZC_SKILLINFO_DELETE
+#endif
+
+// Packet: 0x0442
+#if PACKETVER >= 20081217
+packetLen(0x0442, 8) // ZC_SKILL_SELECT_REQUEST
+#endif
+
+// Packet: 0x0443
+#if PACKETVER >= 20081217
+packetLen(0x0443, 8) // CZ_SKILL_SELECT_RESPONSE
+#endif
+
+
+#endif /* COMMON_PACKETS2008_LEN_RE_H */
diff --git a/src/common/packets/packets2008_len_sak.h b/src/common/packets/packets2008_len_sak.h
new file mode 100644
index 000000000..cf20cf753
--- /dev/null
+++ b/src/common/packets/packets2008_len_sak.h
@@ -0,0 +1,8968 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2008_LEN_SAK_H
+#define COMMON_PACKETS2008_LEN_SAK_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 110) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 25) // CZ_ENTER
+
+// Packet: 0x0073
+#if PACKETVER >= 20080618
+packetLen(0x0073, 32) // ZC_ACCEPT_ENTER
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0073, 6) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080311
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080304
+packetLen(0x0073, 26) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080226
+packetLen(0x0073, 53) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080219
+packetLen(0x0073, 22) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20080102
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+#endif
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+#if PACKETVER >= 20080618
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080610
+packetLen(0x0075, 6) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080311
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080304
+packetLen(0x0075, 11) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080226
+packetLen(0x0075, 8) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080219
+packetLen(0x0075, 28) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20080102
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+#endif
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+#if PACKETVER >= 20080618
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0077, 10) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080311
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080304
+packetLen(0x0077, 54) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080226
+packetLen(0x0077, 14) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080219
+packetLen(0x0077, 2) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20080102
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+#endif
+
+// Packet: 0x0078
+#if PACKETVER >= 20080618
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0078, 6) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080311
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x0078, 3) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080226
+packetLen(0x0078, 6) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080219
+packetLen(0x0078, -1) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+#endif
+
+// Packet: 0x0079
+#if PACKETVER >= 20080618
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080610
+packetLen(0x0079, -1) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080311
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x0079, 6) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080226
+packetLen(0x0079, 2) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080219
+packetLen(0x0079, 27) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+#endif
+
+// Packet: 0x007a
+#if PACKETVER >= 20080618
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x007a, -1) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080311
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x007a, 4) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080226
+packetLen(0x007a, -1) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080219
+packetLen(0x007a, 29) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+#endif
+
+// Packet: 0x007b
+#if PACKETVER >= 20080618
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x007b, 7) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080311
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x007b, 56) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080226
+packetLen(0x007b, 5) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080219
+packetLen(0x007b, 2) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+#endif
+
+// Packet: 0x007c
+#if PACKETVER >= 20080618
+packetLen(0x007c, 42) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080610
+packetLen(0x007c, -1) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080311
+packetLen(0x007c, 42) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080304
+packetLen(0x007c, -1) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080226
+packetLen(0x007c, 8) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080219
+packetLen(0x007c, 186) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20080102
+packetLen(0x007c, 42) // ZC_NOTIFY_STANDENTRY_NPC
+#endif
+
+// Packet: 0x007d
+#if PACKETVER >= 20080618
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x007d, 54) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080311
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080304
+packetLen(0x007d, -1) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080226
+packetLen(0x007d, 26) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080219
+packetLen(0x007d, 3) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20080102
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+#endif
+
+// Packet: 0x007e
+packetLen(0x007e, 102) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+#if PACKETVER >= 20080618
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x007f, -1) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080311
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080304
+packetLen(0x007f, -1) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080226
+packetLen(0x007f, 54) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080219
+packetLen(0x007f, 4) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20080102
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+#endif
+
+// Packet: 0x0080
+#if PACKETVER >= 20080618
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0080, -1) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080311
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080304
+packetLen(0x0080, -1) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080226
+packetLen(0x0080, 4) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080219
+packetLen(0x0080, 10) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20080102
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+#endif
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+#if PACKETVER >= 20080618
+packetLen(0x0083, 34) // ZC_ACCEPT_QUIT
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0083, -1) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080311
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080304
+packetLen(0x0083, 32) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080226
+packetLen(0x0083, 6) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080219
+packetLen(0x0083, 10) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20080102
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+#endif
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 11) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+#if PACKETVER >= 20080618
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0086, 3) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080311
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080304
+packetLen(0x0086, 4) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080226
+packetLen(0x0086, 14) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080219
+packetLen(0x0086, 10) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20080102
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+#endif
+
+// Packet: 0x0087
+#if PACKETVER >= 20080618
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0087, 8) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080311
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080304
+packetLen(0x0087, 4) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080226
+packetLen(0x0087, 6) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080219
+packetLen(0x0087, 14) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20080102
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+#endif
+
+// Packet: 0x0088
+#if PACKETVER >= 20080618
+packetLen(0x0088, 10) // ZC_STOPMOVE
+#elif PACKETVER >= 20080610
+packetLen(0x0088, -1) // ZC_STOPMOVE
+#elif PACKETVER >= 20080311
+packetLen(0x0088, 10) // ZC_STOPMOVE
+#elif PACKETVER >= 20080304
+packetLen(0x0088, 6) // ZC_STOPMOVE
+#elif PACKETVER >= 20080219
+packetLen(0x0088, 30) // ZC_STOPMOVE
+#elif PACKETVER >= 20080102
+packetLen(0x0088, 10) // ZC_STOPMOVE
+#endif
+
+// Packet: 0x0089
+packetLen(0x0089, 8) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+#if PACKETVER >= 20080618
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x008a, -1) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080311
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080304
+packetLen(0x008a, 5) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080226
+packetLen(0x008a, 10) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080219
+packetLen(0x008a, 6) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20080102
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+#endif
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, 11)
+
+// Packet: 0x008d
+#if PACKETVER >= 20080618
+packetLen(0x008d, 282) // ZC_NOTIFY_CHAT
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080311
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080304
+packetLen(0x008d, 3) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080226
+packetLen(0x008d, 6) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080219
+packetLen(0x008d, 79) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20080102
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+#endif
+
+// Packet: 0x008e
+#if PACKETVER >= 20080618
+packetLen(0x008e, 6) // ZC_NOTIFY_PLAYERCHAT
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080311
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080304
+packetLen(0x008e, 12) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080226
+packetLen(0x008e, 7) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080219
+packetLen(0x008e, 33) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20080102
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+#endif
+
+// Packet: 0x0090
+#if PACKETVER >= 20080618
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0090, 12) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080311
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080304
+packetLen(0x0090, 6) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080226
+packetLen(0x0090, 4) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080219
+packetLen(0x0090, 2) // CZ_CONTACTNPC
+#elif PACKETVER >= 20080102
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+#endif
+
+// Packet: 0x0091
+#if PACKETVER >= 20080618
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0091, 26) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080311
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080226
+packetLen(0x0091, 4) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080219
+packetLen(0x0091, -1) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20080102
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+#endif
+
+// Packet: 0x0092
+#if PACKETVER >= 20080618
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0092, -1) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080311
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080304
+packetLen(0x0092, 10) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080226
+packetLen(0x0092, 3) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080219
+packetLen(0x0092, -1) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20080102
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+#endif
+
+// Packet: 0x0093
+#if PACKETVER >= 20080618
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080610
+packetLen(0x0093, -1) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080304
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080226
+packetLen(0x0093, 5) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080219
+packetLen(0x0093, 67) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20080102
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+#endif
+
+// Packet: 0x0094
+packetLen(0x0094, 14) // CZ_REQNAME
+
+// Packet: 0x0095
+#if PACKETVER >= 20080618
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080610
+packetLen(0x0095, -1) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080311
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080304
+packetLen(0x0095, 10) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080226
+packetLen(0x0095, 39) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080219
+packetLen(0x0095, 2) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20080102
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+#endif
+
+// Packet: 0x0096
+#if PACKETVER >= 20080311
+packetLen(0x0096, -1) // CZ_WHISPER
+#elif PACKETVER >= 20080304
+packetLen(0x0096, 4) // CZ_WHISPER
+#elif PACKETVER >= 20080226
+packetLen(0x0096, -1) // CZ_WHISPER
+#elif PACKETVER >= 20080219
+packetLen(0x0096, 3) // CZ_WHISPER
+#elif PACKETVER >= 20080102
+packetLen(0x0096, -1) // CZ_WHISPER
+#endif
+
+// Packet: 0x0097
+#if PACKETVER >= 20080618
+packetLen(0x0097, 10) // ZC_WHISPER
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080304
+packetLen(0x0097, -1) // ZC_WHISPER
+#elif PACKETVER >= 20080219
+packetLen(0x0097, 23) // ZC_WHISPER
+#elif PACKETVER >= 20080102
+packetLen(0x0097, -1) // ZC_WHISPER
+#endif
+
+// Packet: 0x0098
+#if PACKETVER >= 20080618
+packetLen(0x0098, 24) // ZC_ACK_WHISPER
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0098, -1) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080311
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080304
+packetLen(0x0098, 6) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080226
+packetLen(0x0098, 2) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080219
+packetLen(0x0098, 8) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20080102
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+#endif
+
+// Packet: 0x0099
+#if PACKETVER >= 20080311
+packetLen(0x0099, -1) // CZ_BROADCAST
+#elif PACKETVER >= 20080304
+packetLen(0x0099, 4) // CZ_BROADCAST
+#elif PACKETVER >= 20080226
+packetLen(0x0099, 34) // CZ_BROADCAST
+#elif PACKETVER >= 20080219
+packetLen(0x0099, 2) // CZ_BROADCAST
+#elif PACKETVER >= 20080102
+packetLen(0x0099, -1) // CZ_BROADCAST
+#endif
+
+// Packet: 0x009a
+#if PACKETVER >= 20080304
+packetLen(0x009a, -1) // ZC_BROADCAST
+#elif PACKETVER >= 20080226
+packetLen(0x009a, 4) // ZC_BROADCAST
+#elif PACKETVER >= 20080219
+packetLen(0x009a, 10) // ZC_BROADCAST
+#elif PACKETVER >= 20080102
+packetLen(0x009a, -1) // ZC_BROADCAST
+#endif
+
+// Packet: 0x009b
+packetLen(0x009b, 26) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+#if PACKETVER >= 20080618
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080610
+packetLen(0x009c, -1) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080311
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080304
+packetLen(0x009c, 6) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080226
+packetLen(0x009c, 4) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080219
+packetLen(0x009c, 7) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20080102
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+#endif
+
+// Packet: 0x009d
+#if PACKETVER >= 20080618
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x009d, -1) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080311
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x009d, 6) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080226
+packetLen(0x009d, 57) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080219
+packetLen(0x009d, 10) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+#endif
+
+// Packet: 0x009e
+#if PACKETVER >= 20080618
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x009e, 8) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080311
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x009e, 36) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080226
+packetLen(0x009e, 11) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080219
+packetLen(0x009e, -1) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+#endif
+
+// Packet: 0x009f
+packetLen(0x009f, 14) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+#if PACKETVER >= 20080618
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00a0, 3) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080311
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080304
+packetLen(0x00a0, -1) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080226
+packetLen(0x00a0, 27) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080219
+packetLen(0x00a0, 39) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20080102
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+#endif
+
+// Packet: 0x00a1
+#if PACKETVER >= 20080618
+packetLen(0x00a1, 60) // ZC_ITEM_DISAPPEAR
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080311
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080304
+packetLen(0x00a1, 7) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080226
+packetLen(0x00a1, -1) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080219
+packetLen(0x00a1, 60) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20080102
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+#endif
+
+// Packet: 0x00a2
+packetLen(0x00a2, 15) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+#if PACKETVER >= 20080618
+packetLen(0x00a3, 3) // ZC_NORMAL_ITEMLIST
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080311
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x00a3, 2) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x00a3, 30) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x00a3, 44) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+#endif
+
+// Packet: 0x00a4
+#if PACKETVER >= 20080618
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080610
+packetLen(0x00a4, 12) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x00a4, 27) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x00a4, 15) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x00a4, 30) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+#endif
+
+// Packet: 0x00a5
+#if PACKETVER >= 20080618
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080610
+packetLen(0x00a5, 6) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x00a5, 6) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x00a5, 28) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x00a5, 3) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+#endif
+
+// Packet: 0x00a6
+#if PACKETVER >= 20080304
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x00a6, 16) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+#endif
+
+// Packet: 0x00a7
+packetLen(0x00a7, 8)
+
+// Packet: 0x00a8
+#if PACKETVER >= 20080618
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00a8, 11) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080311
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080304
+packetLen(0x00a8, 2) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080219
+packetLen(0x00a8, 10) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20080102
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+#endif
+
+// Packet: 0x00a9
+#if PACKETVER >= 20080618
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080610
+packetLen(0x00a9, -1) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080311
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080304
+packetLen(0x00a9, 35) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080226
+packetLen(0x00a9, 26) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20080102
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+#endif
+
+// Packet: 0x00aa
+#if PACKETVER >= 20080618
+packetLen(0x00aa, 7) // ZC_REQ_WEAR_EQUIP_ACK
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00aa, 3) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080311
+packetLen(0x00aa, 7) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080304
+packetLen(0x00aa, 14) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080219
+packetLen(0x00aa, 2) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20080102
+packetLen(0x00aa, 7) // ZC_REQ_WEAR_EQUIP_ACK
+#endif
+
+// Packet: 0x00ab
+#if PACKETVER >= 20080618
+packetLen(0x00ab, 6) // CZ_REQ_TAKEOFF_EQUIP
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00ab, -1) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080311
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080226
+packetLen(0x00ab, -1) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080219
+packetLen(0x00ab, 57) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20080102
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+#endif
+
+// Packet: 0x00ac
+#if PACKETVER >= 20080618
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00ac, -1) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080311
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080304
+packetLen(0x00ac, 14) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080226
+packetLen(0x00ac, 6) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080219
+packetLen(0x00ac, 3) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20080102
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#endif
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+#if PACKETVER >= 20080618
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080610
+packetLen(0x00af, -1) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080304
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080226
+packetLen(0x00af, 7) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080219
+packetLen(0x00af, 4) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20080102
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+#endif
+
+// Packet: 0x00b0
+#if PACKETVER >= 20080618
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080610
+packetLen(0x00b0, -1) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080311
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080304
+packetLen(0x00b0, 7) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080226
+packetLen(0x00b0, 11) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080219
+packetLen(0x00b0, 7) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+#endif
+
+// Packet: 0x00b1
+#if PACKETVER >= 20080618
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00b1, 21) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080304
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080226
+packetLen(0x00b1, 30) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080219
+packetLen(0x00b1, 14) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+#endif
+
+// Packet: 0x00b2
+#if PACKETVER >= 20080618
+packetLen(0x00b2, 10) // CZ_RESTART
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00b2, 60) // CZ_RESTART
+#elif PACKETVER >= 20080311
+packetLen(0x00b2, 3) // CZ_RESTART
+#elif PACKETVER >= 20080304
+packetLen(0x00b2, 2) // CZ_RESTART
+#elif PACKETVER >= 20080226
+packetLen(0x00b2, 9) // CZ_RESTART
+#elif PACKETVER >= 20080219
+packetLen(0x00b2, -1) // CZ_RESTART
+#elif PACKETVER >= 20080102
+packetLen(0x00b2, 3) // CZ_RESTART
+#endif
+
+// Packet: 0x00b3
+#if PACKETVER >= 20080618
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080610
+packetLen(0x00b3, -1) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080311
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080304
+packetLen(0x00b3, 16) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080226
+packetLen(0x00b3, 10) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080219
+packetLen(0x00b3, 55) // ZC_RESTART_ACK
+#elif PACKETVER >= 20080102
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+#endif
+
+// Packet: 0x00b4
+#if PACKETVER >= 20080618
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080610
+packetLen(0x00b4, 67) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080304
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080226
+packetLen(0x00b4, 43) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080219
+packetLen(0x00b4, 4) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20080102
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+#endif
+
+// Packet: 0x00b5
+#if PACKETVER >= 20080618
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00b5, 10) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080311
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080304
+packetLen(0x00b5, 182) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080226
+packetLen(0x00b5, 4) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080219
+packetLen(0x00b5, 30) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20080102
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+#endif
+
+// Packet: 0x00b6
+#if PACKETVER >= 20080618
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00b6, 8) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080304
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080226
+packetLen(0x00b6, -1) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080219
+packetLen(0x00b6, 3) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20080102
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+#endif
+
+// Packet: 0x00b7
+#if PACKETVER >= 20080618
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+#elif PACKETVER >= 20080610
+packetLen(0x00b7, 12) // ZC_MENU_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x00b7, 2) // ZC_MENU_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x00b7, 32) // ZC_MENU_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x00b7, 3) // ZC_MENU_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+#endif
+
+// Packet: 0x00b8
+#if PACKETVER >= 20080618
+packetLen(0x00b8, 9) // CZ_CHOOSE_MENU
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00b8, 6) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080311
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080304
+packetLen(0x00b8, 6) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080226
+packetLen(0x00b8, 5) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080219
+packetLen(0x00b8, -1) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20080102
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+#endif
+
+// Packet: 0x00b9
+#if PACKETVER >= 20080618
+packetLen(0x00b9, 9) // CZ_REQ_NEXT_SCRIPT
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00b9, -1) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080311
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080304
+packetLen(0x00b9, 44) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080226
+packetLen(0x00b9, 58) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20080102
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+#endif
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+#if PACKETVER >= 20080618
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080610
+packetLen(0x00bb, -1) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080311
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080304
+packetLen(0x00bb, 3) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080226
+packetLen(0x00bb, -1) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080219
+packetLen(0x00bb, 182) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+#endif
+
+// Packet: 0x00bc
+#if PACKETVER >= 20080618
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080610
+packetLen(0x00bc, 58) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080311
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080226
+packetLen(0x00bc, 3) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080219
+packetLen(0x00bc, -1) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20080102
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+#endif
+
+// Packet: 0x00bd
+#if PACKETVER >= 20080618
+packetLen(0x00bd, 79) // ZC_STATUS
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00bd, -1) // ZC_STATUS
+#elif PACKETVER >= 20080311
+packetLen(0x00bd, 44) // ZC_STATUS
+#elif PACKETVER >= 20080304
+packetLen(0x00bd, -1) // ZC_STATUS
+#elif PACKETVER >= 20080226
+packetLen(0x00bd, 58) // ZC_STATUS
+#elif PACKETVER >= 20080219
+packetLen(0x00bd, 6) // ZC_STATUS
+#elif PACKETVER >= 20080102
+packetLen(0x00bd, 44) // ZC_STATUS
+#endif
+
+// Packet: 0x00be
+#if PACKETVER >= 20080618
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080610
+packetLen(0x00be, -1) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080311
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080304
+packetLen(0x00be, 186) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080219
+packetLen(0x00be, -1) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+#endif
+
+// Packet: 0x00bf
+#if PACKETVER >= 20080618
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080610
+packetLen(0x00bf, -1) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080304
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080226
+packetLen(0x00bf, 29) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080219
+packetLen(0x00bf, 12) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20080102
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+#endif
+
+// Packet: 0x00c0
+#if PACKETVER >= 20080618
+packetLen(0x00c0, 60) // ZC_EMOTION
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00c0, 4) // ZC_EMOTION
+#elif PACKETVER >= 20080311
+packetLen(0x00c0, 7) // ZC_EMOTION
+#elif PACKETVER >= 20080304
+packetLen(0x00c0, 2) // ZC_EMOTION
+#elif PACKETVER >= 20080226
+packetLen(0x00c0, 21) // ZC_EMOTION
+#elif PACKETVER >= 20080219
+packetLen(0x00c0, 6) // ZC_EMOTION
+#elif PACKETVER >= 20080102
+packetLen(0x00c0, 7) // ZC_EMOTION
+#endif
+
+// Packet: 0x00c1
+#if PACKETVER >= 20080618
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080311
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080304
+packetLen(0x00c1, 28) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080226
+packetLen(0x00c1, 6) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080219
+packetLen(0x00c1, -1) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20080102
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+#endif
+
+// Packet: 0x00c2
+#if PACKETVER >= 20080618
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00c2, 2) // ZC_USER_COUNT
+#elif PACKETVER >= 20080311
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+#elif PACKETVER >= 20080304
+packetLen(0x00c2, -1) // ZC_USER_COUNT
+#elif PACKETVER >= 20080226
+packetLen(0x00c2, 282) // ZC_USER_COUNT
+#elif PACKETVER >= 20080219
+packetLen(0x00c2, 4) // ZC_USER_COUNT
+#elif PACKETVER >= 20080102
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+#endif
+
+// Packet: 0x00c3
+#if PACKETVER >= 20080618
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080610
+packetLen(0x00c3, -1) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080311
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080304
+packetLen(0x00c3, 30) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080226
+packetLen(0x00c3, 28) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+#endif
+
+// Packet: 0x00c4
+#if PACKETVER >= 20080618
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00c4, 7) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080311
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080304
+packetLen(0x00c4, 3) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080226
+packetLen(0x00c4, 114) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080219
+packetLen(0x00c4, 2) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20080102
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+#endif
+
+// Packet: 0x00c5
+#if PACKETVER >= 20080618
+packetLen(0x00c5, 9) // CZ_ACK_SELECT_DEALTYPE
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00c5, 14) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080311
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080304
+packetLen(0x00c5, 67) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080219
+packetLen(0x00c5, -1) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20080102
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+#endif
+
+// Packet: 0x00c6
+#if PACKETVER >= 20080618
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080610
+packetLen(0x00c6, 11) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x00c6, 53) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x00c6, 13) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x00c6, 3) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+#endif
+
+// Packet: 0x00c7
+#if PACKETVER >= 20080304
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x00c7, 5) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x00c7, 90) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+#endif
+
+// Packet: 0x00c8
+#if PACKETVER >= 20080618
+packetLen(0x00c8, 15) // CZ_PC_PURCHASE_ITEMLIST
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080311
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x00c8, 86) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x00c8, 10) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+#endif
+
+// Packet: 0x00c9
+#if PACKETVER >= 20080618
+packetLen(0x00c9, 36) // CZ_PC_SELL_ITEMLIST
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080311
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x00c9, 27) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x00c9, 6) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x00c9, 10) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+#endif
+
+// Packet: 0x00ca
+#if PACKETVER >= 20080618
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080610
+packetLen(0x00ca, -1) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080311
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080304
+packetLen(0x00ca, 20) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080226
+packetLen(0x00ca, 23) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080219
+packetLen(0x00ca, 86) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20080102
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+#endif
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+#if PACKETVER >= 20080618
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00cc, 4) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080304
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080226
+packetLen(0x00cc, 7) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080219
+packetLen(0x00cc, -1) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20080102
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+#endif
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+#if PACKETVER >= 20080618
+packetLen(0x00ce, 11) // CZ_DISCONNECT_ALL_CHARACTER
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00ce, -1) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080304
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080226
+packetLen(0x00ce, -1) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080219
+packetLen(0x00ce, 6) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20080102
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+#endif
+
+// Packet: 0x00cf
+#if PACKETVER >= 20080618
+packetLen(0x00cf, 30) // CZ_SETTING_WHISPER_PC
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00cf, 9) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080311
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080304
+packetLen(0x00cf, 60) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080226
+packetLen(0x00cf, 16) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080219
+packetLen(0x00cf, 9) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080102
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+#endif
+
+// Packet: 0x00d0
+#if PACKETVER >= 20080618
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00d0, 14) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080311
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080304
+packetLen(0x00d0, -1) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080226
+packetLen(0x00d0, 2) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080219
+packetLen(0x00d0, -1) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080102
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+#endif
+
+// Packet: 0x00d1
+#if PACKETVER >= 20080618
+packetLen(0x00d1, 6) // ZC_SETTING_WHISPER_PC
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00d1, -1) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080311
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080304
+packetLen(0x00d1, 3) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080226
+packetLen(0x00d1, 10) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080219
+packetLen(0x00d1, 13) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20080102
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+#endif
+
+// Packet: 0x00d2
+#if PACKETVER >= 20080618
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080610
+packetLen(0x00d2, -1) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080311
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080304
+packetLen(0x00d2, 6) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080226
+packetLen(0x00d2, 14) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080219
+packetLen(0x00d2, 20) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20080102
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+#endif
+
+// Packet: 0x00d3
+#if PACKETVER >= 20080618
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080610
+packetLen(0x00d3, -1) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x00d3, 23) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x00d3, -1) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x00d3, 26) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+#endif
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+#if PACKETVER >= 20080618
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080610
+packetLen(0x00d5, 3) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080311
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080304
+packetLen(0x00d5, 10) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080226
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080219
+packetLen(0x00d5, 10) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20080102
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+#endif
+
+// Packet: 0x00d6
+#if PACKETVER >= 20080618
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080610
+packetLen(0x00d6, -1) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080311
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080304
+packetLen(0x00d6, -1) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080226
+packetLen(0x00d6, 30) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20080102
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+#endif
+
+// Packet: 0x00d7
+#if PACKETVER >= 20080311
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x00d7, 14) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080226
+packetLen(0x00d7, 28) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080219
+packetLen(0x00d7, 3) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+#endif
+
+// Packet: 0x00d8
+#if PACKETVER >= 20080618
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080610
+packetLen(0x00d8, -1) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080311
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080304
+packetLen(0x00d8, 10) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080226
+packetLen(0x00d8, 16) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080219
+packetLen(0x00d8, 2) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20080102
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+#endif
+
+// Packet: 0x00d9
+#if PACKETVER >= 20080618
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080610
+packetLen(0x00d9, -1) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080311
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080304
+packetLen(0x00d9, 66) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080226
+packetLen(0x00d9, 6) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080219
+packetLen(0x00d9, 3) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20080102
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+#endif
+
+// Packet: 0x00da
+#if PACKETVER >= 20080618
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080610
+packetLen(0x00da, -1) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080311
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080304
+packetLen(0x00da, 2) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080226
+packetLen(0x00da, 14) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080219
+packetLen(0x00da, 54) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20080102
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+#endif
+
+// Packet: 0x00db
+#if PACKETVER >= 20080618
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080610
+packetLen(0x00db, 2) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080304
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080226
+packetLen(0x00db, 26) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080219
+packetLen(0x00db, 4) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20080102
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+#endif
+
+// Packet: 0x00dc
+#if PACKETVER >= 20080618
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080610
+packetLen(0x00dc, -1) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080311
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x00dc, 11) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080226
+packetLen(0x00dc, 3) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080219
+packetLen(0x00dc, 29) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+#endif
+
+// Packet: 0x00dd
+#if PACKETVER >= 20080618
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00dd, 10) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080311
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080304
+packetLen(0x00dd, 14) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080226
+packetLen(0x00dd, -1) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080219
+packetLen(0x00dd, 3) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20080102
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+#endif
+
+// Packet: 0x00de
+#if PACKETVER >= 20080311
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080304
+packetLen(0x00de, 24) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080226
+packetLen(0x00de, 6) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080219
+packetLen(0x00de, 34) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20080102
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+#endif
+
+// Packet: 0x00df
+#if PACKETVER >= 20080618
+packetLen(0x00df, 30) // ZC_CHANGE_CHATROOM
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080311
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080304
+packetLen(0x00df, 53) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080226
+packetLen(0x00df, 9) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080219
+packetLen(0x00df, 7) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20080102
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+#endif
+
+// Packet: 0x00e0
+#if PACKETVER >= 20080618
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080610
+packetLen(0x00e0, -1) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080311
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080304
+packetLen(0x00e0, 8) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080226
+packetLen(0x00e0, 2) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080219
+packetLen(0x00e0, 31) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+#endif
+
+// Packet: 0x00e1
+#if PACKETVER >= 20080618
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080610
+packetLen(0x00e1, -1) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080311
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080226
+packetLen(0x00e1, -1) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080219
+packetLen(0x00e1, 81) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+#endif
+
+// Packet: 0x00e2
+#if PACKETVER >= 20080618
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00e2, -1) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080311
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080304
+packetLen(0x00e2, 13) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080226
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080219
+packetLen(0x00e2, 30) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20080102
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+#endif
+
+// Packet: 0x00e3
+#if PACKETVER >= 20080618
+packetLen(0x00e3, 58) // CZ_EXIT_ROOM
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00e3, 3) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080311
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080304
+packetLen(0x00e3, 8) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080219
+packetLen(0x00e3, 12) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20080102
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+#endif
+
+// Packet: 0x00e4
+#if PACKETVER >= 20080618
+packetLen(0x00e4, 86) // CZ_REQ_EXCHANGE_ITEM
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00e4, 79) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00e4, 2) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00e4, 14) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00e5
+#if PACKETVER >= 20080618
+packetLen(0x00e5, 28) // ZC_REQ_EXCHANGE_ITEM
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00e5, -1) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00e5, 14) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00e5, 11) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00e6
+#if PACKETVER >= 20080618
+packetLen(0x00e6, 9) // CZ_ACK_EXCHANGE_ITEM
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00e6, -1) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00e6, -1) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x00e6, 53) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00e6, 10) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00e7
+#if PACKETVER >= 20080618
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00e7, 6) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00e7, 4) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x00e7, 68) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00e7, -1) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00e8
+#if PACKETVER >= 20080618
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080610
+packetLen(0x00e8, -1) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00e8, 9) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x00e8, 6) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00e8, 2) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00e9
+#if PACKETVER >= 20080618
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080610
+packetLen(0x00e9, -1) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00e9, 28) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x00e9, 30) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00e9, 2) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00ea
+#if PACKETVER >= 20080618
+packetLen(0x00ea, 90) // ZC_ACK_ADD_EXCHANGE_ITEM
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00ea, 54) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00ea, -1) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00eb
+#if PACKETVER >= 20080618
+packetLen(0x00eb, 5) // CZ_CONCLUDE_EXCHANGE_ITEM
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00eb, -1) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00eb, 6) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x00eb, 19) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00eb, 17) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00ec
+#if PACKETVER >= 20080618
+packetLen(0x00ec, 6) // ZC_CONCLUDE_EXCHANGE_ITEM
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00ec, -1) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00ec, 28) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x00ec, 11) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00ec, -1) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00ed
+#if PACKETVER >= 20080618
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080610
+packetLen(0x00ed, -1) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00ed, 26) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x00ed, 30) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00ed, -1) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00ee
+#if PACKETVER >= 20080618
+packetLen(0x00ee, 81) // ZC_CANCEL_EXCHANGE_ITEM
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00ee, 6) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00ee, 4) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x00ee, 90) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00ee, -1) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00ef
+#if PACKETVER >= 20080618
+packetLen(0x00ef, 30) // CZ_EXEC_EXCHANGE_ITEM
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00ef, -1) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00ef, 6) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x00ef, -1) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00ef, 7) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00f0
+#if PACKETVER >= 20080618
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00f0, 6) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x00f0, -1) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x00f0, 27) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+#if PACKETVER >= 20080618
+packetLen(0x00f2, 10) // ZC_NOTIFY_STOREITEM_COUNTINFO
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00f2, -1) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080311
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080304
+packetLen(0x00f2, 5) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080226
+packetLen(0x00f2, 14) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20080102
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#endif
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+#if PACKETVER >= 20080618
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00f4, -1) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080311
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080304
+packetLen(0x00f4, -1) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080226
+packetLen(0x00f4, 6) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080219
+packetLen(0x00f4, -1) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20080102
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+#endif
+
+// Packet: 0x00f5
+packetLen(0x00f5, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+#if PACKETVER >= 20080618
+packetLen(0x00f6, 26) // ZC_DELETE_ITEM_FROM_STORE
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00f6, 4) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080311
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080226
+packetLen(0x00f6, -1) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080219
+packetLen(0x00f6, 23) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20080102
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+#endif
+
+// Packet: 0x00f7
+packetLen(0x00f7, 22) // CZ_REQUEST_TIME
+
+// Packet: 0x00f8
+#if PACKETVER >= 20080618
+packetLen(0x00f8, 17) // ZC_CLOSE_STORE
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00f8, 6) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080311
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080304
+packetLen(0x00f8, 5) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080226
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080219
+packetLen(0x00f8, 12) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20080102
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+#endif
+
+// Packet: 0x00f9
+#if PACKETVER >= 20080618
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080610
+packetLen(0x00f9, -1) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080311
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080304
+packetLen(0x00f9, 19) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080226
+packetLen(0x00f9, 4) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080219
+packetLen(0x00f9, 8) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20080102
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+#endif
+
+// Packet: 0x00fa
+#if PACKETVER >= 20080618
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080610
+packetLen(0x00fa, -1) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080311
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080304
+packetLen(0x00fa, 10) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080226
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080219
+packetLen(0x00fa, 10) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20080102
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+#endif
+
+// Packet: 0x00fb
+#if PACKETVER >= 20080618
+packetLen(0x00fb, 3) // ZC_GROUP_LIST
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00fb, 26) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x00fb, 54) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x00fb, 5) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x00fb, 10) // ZC_GROUP_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+#endif
+
+// Packet: 0x00fc
+#if PACKETVER >= 20080618
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00fc, 8) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080311
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080304
+packetLen(0x00fc, -1) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080226
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080219
+packetLen(0x00fc, 19) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080102
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+#endif
+
+// Packet: 0x00fd
+#if PACKETVER >= 20080618
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x00fd, 2) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080311
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080304
+packetLen(0x00fd, 7) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080226
+packetLen(0x00fd, 20) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080219
+packetLen(0x00fd, 11) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080102
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+#endif
+
+// Packet: 0x00fe
+#if PACKETVER >= 20080618
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080610
+packetLen(0x00fe, -1) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080304
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080226
+packetLen(0x00fe, 7) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080219
+packetLen(0x00fe, 6) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20080102
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+#endif
+
+// Packet: 0x00ff
+#if PACKETVER >= 20080618
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080610
+packetLen(0x00ff, -1) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080311
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080304
+packetLen(0x00ff, 6) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080226
+packetLen(0x00ff, 282) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080219
+packetLen(0x00ff, 6) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20080102
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+#endif
+
+// Packet: 0x0100
+#if PACKETVER >= 20080618
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080610
+packetLen(0x0100, -1) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080304
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080219
+packetLen(0x0100, 3) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20080102
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+#endif
+
+// Packet: 0x0101
+#if PACKETVER >= 20080618
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080610
+packetLen(0x0101, -1) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080311
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080304
+packetLen(0x0101, 11) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080226
+packetLen(0x0101, 10) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080219
+packetLen(0x0101, -1) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+#endif
+
+// Packet: 0x0102
+#if PACKETVER >= 20080618
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080610
+packetLen(0x0102, -1) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080311
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080304
+packetLen(0x0102, 3) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080226
+packetLen(0x0102, 26) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080219
+packetLen(0x0102, 68) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20080102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+#endif
+
+// Packet: 0x0103
+#if PACKETVER >= 20080618
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080610
+packetLen(0x0103, -1) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080311
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080304
+packetLen(0x0103, 6) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080226
+packetLen(0x0103, -1) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080219
+packetLen(0x0103, 5) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20080102
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+#endif
+
+// Packet: 0x0104
+#if PACKETVER >= 20080618
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080610
+packetLen(0x0104, -1) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080311
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080304
+packetLen(0x0104, 2) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080226
+packetLen(0x0104, 6) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080219
+packetLen(0x0104, 21) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20080102
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+#endif
+
+// Packet: 0x0105
+#if PACKETVER >= 20080618
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080610
+packetLen(0x0105, -1) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080311
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080304
+packetLen(0x0105, 102) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080226
+packetLen(0x0105, 26) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080219
+packetLen(0x0105, 6) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20080102
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+#endif
+
+// Packet: 0x0106
+#if PACKETVER >= 20080618
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080610
+packetLen(0x0106, -1) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080311
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080304
+packetLen(0x0106, 6) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080226
+packetLen(0x0106, -1) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080219
+packetLen(0x0106, 21) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20080102
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+#endif
+
+// Packet: 0x0107
+#if PACKETVER >= 20080618
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0107, 11) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080311
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080304
+packetLen(0x0107, 21) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080226
+packetLen(0x0107, -1) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080219
+packetLen(0x0107, 5) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20080102
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+#endif
+
+// Packet: 0x0108
+#if PACKETVER >= 20080618
+packetLen(0x0108, 54) // CZ_REQUEST_CHAT_PARTY
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0108, 15) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080311
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080304
+packetLen(0x0108, 4) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080226
+packetLen(0x0108, 3) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080219
+packetLen(0x0108, 97) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20080102
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+#endif
+
+// Packet: 0x0109
+#if PACKETVER >= 20080618
+packetLen(0x0109, 7) // ZC_NOTIFY_CHAT_PARTY
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080311
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080304
+packetLen(0x0109, 33) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080226
+packetLen(0x0109, 2) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080219
+packetLen(0x0109, 14) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20080102
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+#endif
+
+// Packet: 0x010a
+#if PACKETVER >= 20080618
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080610
+packetLen(0x010a, -1) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080311
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080304
+packetLen(0x010a, -1) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080226
+packetLen(0x010a, 6) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080219
+packetLen(0x010a, -1) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20080102
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+#endif
+
+// Packet: 0x010b
+#if PACKETVER >= 20080618
+packetLen(0x010b, 8) // ZC_MVP_GETTING_SPECIAL_EXP
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x010b, 55) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080311
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080304
+packetLen(0x010b, -1) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080226
+packetLen(0x010b, 9) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080219
+packetLen(0x010b, 24) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20080102
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+#endif
+
+// Packet: 0x010c
+#if PACKETVER >= 20080618
+packetLen(0x010c, 6) // ZC_MVP
+#elif PACKETVER >= 20080610
+packetLen(0x010c, -1) // ZC_MVP
+#elif PACKETVER >= 20080311
+packetLen(0x010c, 6) // ZC_MVP
+#elif PACKETVER >= 20080304
+packetLen(0x010c, 4) // ZC_MVP
+#elif PACKETVER >= 20080226
+packetLen(0x010c, 14) // ZC_MVP
+#elif PACKETVER >= 20080219
+packetLen(0x010c, -1) // ZC_MVP
+#elif PACKETVER >= 20080102
+packetLen(0x010c, 6) // ZC_MVP
+#endif
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+#if PACKETVER >= 20080618
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080610
+packetLen(0x010e, -1) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080311
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080304
+packetLen(0x010e, 282) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080226
+packetLen(0x010e, 7) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080219
+packetLen(0x010e, -1) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20080102
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+#endif
+
+// Packet: 0x010f
+#if PACKETVER >= 20080311
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x010f, 30) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x010f, 30) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+#endif
+
+// Packet: 0x0110
+#if PACKETVER >= 20080618
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080610
+packetLen(0x0110, -1) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080311
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080304
+packetLen(0x0110, 29) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080226
+packetLen(0x0110, 8) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080219
+packetLen(0x0110, -1) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20080102
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+#endif
+
+// Packet: 0x0111
+#if PACKETVER >= 20080618
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0111, 6) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080311
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080304
+packetLen(0x0111, 3) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080226
+packetLen(0x0111, 60) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080219
+packetLen(0x0111, 32) // ZC_ADD_SKILL
+#elif PACKETVER >= 20080102
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+#endif
+
+// Packet: 0x0112
+#if PACKETVER >= 20080618
+packetLen(0x0112, 59) // CZ_UPGRADE_SKILLLEVEL
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0112, -1) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080311
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080226
+packetLen(0x0112, 13) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080219
+packetLen(0x0112, 7) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20080102
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+#endif
+
+// Packet: 0x0113
+packetLen(0x0113, 22) // CZ_USE_SKILL
+
+// Packet: 0x0114
+#if PACKETVER >= 20080618
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0114, 7) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080311
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080304
+packetLen(0x0114, 8) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080226
+packetLen(0x0114, 10) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080219
+packetLen(0x0114, -1) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20080102
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+#endif
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 10) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+#if PACKETVER >= 20080618
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0117, 31) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080311
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080304
+packetLen(0x0117, 282) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080226
+packetLen(0x0117, -1) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080219
+packetLen(0x0117, 10) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20080102
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+#endif
+
+// Packet: 0x0118
+#if PACKETVER >= 20080618
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080610
+packetLen(0x0118, -1) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080311
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080304
+packetLen(0x0118, 34) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080226
+packetLen(0x0118, 54) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080219
+packetLen(0x0118, 7) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20080102
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+#endif
+
+// Packet: 0x0119
+#if PACKETVER >= 20080618
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0119, 10) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080311
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080304
+packetLen(0x0119, 10) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080226
+packetLen(0x0119, 2) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080219
+packetLen(0x0119, 58) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+#endif
+
+// Packet: 0x011a
+#if PACKETVER >= 20080618
+packetLen(0x011a, 15) // ZC_USE_SKILL
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x011a, -1) // ZC_USE_SKILL
+#elif PACKETVER >= 20080311
+packetLen(0x011a, 15) // ZC_USE_SKILL
+#elif PACKETVER >= 20080304
+packetLen(0x011a, 2) // ZC_USE_SKILL
+#elif PACKETVER >= 20080226
+packetLen(0x011a, 10) // ZC_USE_SKILL
+#elif PACKETVER >= 20080219
+packetLen(0x011a, 11) // ZC_USE_SKILL
+#elif PACKETVER >= 20080102
+packetLen(0x011a, 15) // ZC_USE_SKILL
+#endif
+
+// Packet: 0x011b
+#if PACKETVER >= 20080618
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x011b, 15) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080311
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080304
+packetLen(0x011b, 8) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080226
+packetLen(0x011b, 2) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080219
+packetLen(0x011b, -1) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20080102
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+#endif
+
+// Packet: 0x011c
+#if PACKETVER >= 20080618
+packetLen(0x011c, 68) // ZC_WARPLIST
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x011c, 2) // ZC_WARPLIST
+#elif PACKETVER >= 20080311
+packetLen(0x011c, 68) // ZC_WARPLIST
+#elif PACKETVER >= 20080304
+packetLen(0x011c, 11) // ZC_WARPLIST
+#elif PACKETVER >= 20080226
+packetLen(0x011c, 6) // ZC_WARPLIST
+#elif PACKETVER >= 20080219
+packetLen(0x011c, 4) // ZC_WARPLIST
+#elif PACKETVER >= 20080102
+packetLen(0x011c, 68) // ZC_WARPLIST
+#endif
+
+// Packet: 0x011d
+#if PACKETVER >= 20080618
+packetLen(0x011d, 10) // CZ_REMEMBER_WARPPOINT
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x011d, -1) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080311
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080304
+packetLen(0x011d, 8) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080219
+packetLen(0x011d, -1) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080102
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+#endif
+
+// Packet: 0x011e
+#if PACKETVER >= 20080618
+packetLen(0x011e, 33) // ZC_ACK_REMEMBER_WARPPOINT
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x011e, -1) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080311
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080304
+packetLen(0x011e, 16) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080219
+packetLen(0x011e, -1) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20080102
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+#endif
+
+// Packet: 0x011f
+#if PACKETVER >= 20080618
+packetLen(0x011f, 30) // ZC_SKILL_ENTRY
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x011f, 9) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080311
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x011f, -1) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080226
+packetLen(0x011f, 8) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080219
+packetLen(0x011f, 5) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+#endif
+
+// Packet: 0x0120
+#if PACKETVER >= 20080618
+packetLen(0x0120, 14) // ZC_SKILL_DISAPPEAR
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0120, -1) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080311
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080304
+packetLen(0x0120, 5) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080226
+packetLen(0x0120, 7) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080219
+packetLen(0x0120, -1) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20080102
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+#endif
+
+// Packet: 0x0121
+#if PACKETVER >= 20080618
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0121, -1) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080311
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080304
+packetLen(0x0121, 6) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080226
+packetLen(0x0121, 282) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080219
+packetLen(0x0121, 6) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20080102
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#endif
+
+// Packet: 0x0122
+#if PACKETVER >= 20080618
+packetLen(0x0122, 12) // ZC_CART_EQUIPMENT_ITEMLIST
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0122, 6) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x0122, 30) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x0122, 8) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+#endif
+
+// Packet: 0x0123
+#if PACKETVER >= 20080618
+packetLen(0x0123, 6) // ZC_CART_NORMAL_ITEMLIST
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0123, 33) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080311
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x0123, 8) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x0123, 6) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x0123, 16) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+#endif
+
+// Packet: 0x0124
+#if PACKETVER >= 20080618
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0124, -1) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080311
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080304
+packetLen(0x0124, 8) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080226
+packetLen(0x0124, 36) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080219
+packetLen(0x0124, 6) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20080102
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+#endif
+
+// Packet: 0x0125
+#if PACKETVER >= 20080618
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0125, 2) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080311
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080304
+packetLen(0x0125, 17) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080219
+packetLen(0x0125, -1) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20080102
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+#endif
+
+// Packet: 0x0126
+#if PACKETVER >= 20080618
+packetLen(0x0126, 43) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0126, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080311
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080304
+packetLen(0x0126, 4) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080226
+packetLen(0x0126, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080219
+packetLen(0x0126, 11) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20080102
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#endif
+
+// Packet: 0x0127
+#if PACKETVER >= 20080618
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0127, 2) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080311
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080304
+packetLen(0x0127, -1) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080226
+packetLen(0x0127, 12) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080219
+packetLen(0x0127, 4) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20080102
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#endif
+
+// Packet: 0x0128
+#if PACKETVER >= 20080618
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0128, 6) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080311
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080304
+packetLen(0x0128, 5) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080226
+packetLen(0x0128, 17) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080219
+packetLen(0x0128, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20080102
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#endif
+
+// Packet: 0x0129
+#if PACKETVER >= 20080618
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080610
+packetLen(0x0129, -1) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080311
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080226
+packetLen(0x0129, -1) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080219
+packetLen(0x0129, 10) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20080102
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#endif
+
+// Packet: 0x012a
+#if PACKETVER >= 20080618
+packetLen(0x012a, 6) // CZ_REQ_CARTOFF
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x012a, -1) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080311
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080304
+packetLen(0x012a, 6) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080226
+packetLen(0x012a, 3) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080219
+packetLen(0x012a, 5) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20080102
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+#endif
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+#if PACKETVER >= 20080618
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x012c, 34) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080311
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080304
+packetLen(0x012c, 39) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080226
+packetLen(0x012c, 20) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080219
+packetLen(0x012c, 9) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20080102
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+#endif
+
+// Packet: 0x012d
+#if PACKETVER >= 20080618
+packetLen(0x012d, 4) // ZC_OPENSTORE
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x012d, -1) // ZC_OPENSTORE
+#elif PACKETVER >= 20080311
+packetLen(0x012d, 4) // ZC_OPENSTORE
+#elif PACKETVER >= 20080304
+packetLen(0x012d, 16) // ZC_OPENSTORE
+#elif PACKETVER >= 20080219
+packetLen(0x012d, 14) // ZC_OPENSTORE
+#elif PACKETVER >= 20080102
+packetLen(0x012d, 4) // ZC_OPENSTORE
+#endif
+
+// Packet: 0x012e
+#if PACKETVER >= 20080618
+packetLen(0x012e, 31) // CZ_REQ_CLOSESTORE
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x012e, -1) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080311
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080304
+packetLen(0x012e, 10) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080219
+packetLen(0x012e, -1) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20080102
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+#endif
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+#if PACKETVER >= 20080618
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0130, 86) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080311
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080304
+packetLen(0x0130, -1) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080226
+packetLen(0x0130, 28) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080219
+packetLen(0x0130, 5) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20080102
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+#endif
+
+// Packet: 0x0131
+#if PACKETVER >= 20080618
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0131, 2) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080311
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x0131, 4) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080226
+packetLen(0x0131, 29) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080219
+packetLen(0x0131, 26) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+#endif
+
+// Packet: 0x0132
+#if PACKETVER >= 20080618
+packetLen(0x0132, 10) // ZC_DISAPPEAR_ENTRY
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0132, 8) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080311
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080304
+packetLen(0x0132, 14) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20080102
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+#endif
+
+// Packet: 0x0133
+#if PACKETVER >= 20080304
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080226
+packetLen(0x0133, 10) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080219
+packetLen(0x0133, 8) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080102
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#endif
+
+// Packet: 0x0134
+#if PACKETVER >= 20080618
+packetLen(0x0134, 8) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0134, 16) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080311
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080304
+packetLen(0x0134, 4) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080226
+packetLen(0x0134, 3) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080219
+packetLen(0x0134, 4) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20080102
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#endif
+
+// Packet: 0x0135
+#if PACKETVER >= 20080618
+packetLen(0x0135, 13) // ZC_PC_PURCHASE_RESULT_FROMMC
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0135, -1) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080311
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080304
+packetLen(0x0135, -1) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080226
+packetLen(0x0135, 6) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080219
+packetLen(0x0135, 65) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20080102
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+#endif
+
+// Packet: 0x0136
+#if PACKETVER >= 20080618
+packetLen(0x0136, 8) // ZC_PC_PURCHASE_MYITEMLIST
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080311
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x0136, 26) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x0136, 10) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x0136, 2) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+#endif
+
+// Packet: 0x0137
+#if PACKETVER >= 20080618
+packetLen(0x0137, 71) // ZC_DELETEITEM_FROM_MCSTORE
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0137, -1) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080311
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080304
+packetLen(0x0137, 2) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080226
+packetLen(0x0137, 5) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080219
+packetLen(0x0137, 10) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20080102
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+#endif
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+#if PACKETVER >= 20080618
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0139, 59) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080311
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080304
+packetLen(0x0139, 3) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080226
+packetLen(0x0139, 81) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080219
+packetLen(0x0139, 6) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20080102
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#endif
+
+// Packet: 0x013a
+#if PACKETVER >= 20080618
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x013a, 8) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080311
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080304
+packetLen(0x013a, 5) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080226
+packetLen(0x013a, 58) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080219
+packetLen(0x013a, -1) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20080102
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+#endif
+
+// Packet: 0x013b
+#if PACKETVER >= 20080618
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080311
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080304
+packetLen(0x013b, 26) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080226
+packetLen(0x013b, 6) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080219
+packetLen(0x013b, 16) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20080102
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+#endif
+
+// Packet: 0x013c
+#if PACKETVER >= 20080618
+packetLen(0x013c, 12) // ZC_EQUIP_ARROW
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x013c, -1) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080311
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080304
+packetLen(0x013c, 12) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080226
+packetLen(0x013c, -1) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20080102
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+#endif
+
+// Packet: 0x013d
+#if PACKETVER >= 20080618
+packetLen(0x013d, 6) // ZC_RECOVERY
+#elif PACKETVER >= 20080610
+packetLen(0x013d, -1) // ZC_RECOVERY
+#elif PACKETVER >= 20080311
+packetLen(0x013d, 6) // ZC_RECOVERY
+#elif PACKETVER >= 20080304
+packetLen(0x013d, 43) // ZC_RECOVERY
+#elif PACKETVER >= 20080226
+packetLen(0x013d, 2) // ZC_RECOVERY
+#elif PACKETVER >= 20080102
+packetLen(0x013d, 6) // ZC_RECOVERY
+#endif
+
+// Packet: 0x013e
+#if PACKETVER >= 20080618
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080610
+packetLen(0x013e, -1) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080311
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080304
+packetLen(0x013e, 5) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080226
+packetLen(0x013e, -1) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080219
+packetLen(0x013e, 30) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20080102
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+#endif
+
+// Packet: 0x013f
+#if PACKETVER >= 20080618
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x013f, -1) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080311
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080304
+packetLen(0x013f, 11) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080226
+packetLen(0x013f, 5) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080219
+packetLen(0x013f, 58) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20080102
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+#endif
+
+// Packet: 0x0140
+#if PACKETVER >= 20080618
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0140, 30) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080311
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080304
+packetLen(0x0140, 8) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080226
+packetLen(0x0140, 11) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080219
+packetLen(0x0140, -1) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20080102
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+#endif
+
+// Packet: 0x0141
+#if PACKETVER >= 20080618
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080610
+packetLen(0x0141, -1) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080311
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080304
+packetLen(0x0141, -1) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080226
+packetLen(0x0141, 22) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080219
+packetLen(0x0141, 6) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20080102
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+#endif
+
+// Packet: 0x0142
+#if PACKETVER >= 20080618
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0142, 8) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080311
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080304
+packetLen(0x0142, 31) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080226
+packetLen(0x0142, -1) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080219
+packetLen(0x0142, 2) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20080102
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+#endif
+
+// Packet: 0x0143
+#if PACKETVER >= 20080618
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0143, 11) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080311
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080304
+packetLen(0x0143, 282) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080226
+packetLen(0x0143, 8) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080219
+packetLen(0x0143, -1) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20080102
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+#endif
+
+// Packet: 0x0144
+#if PACKETVER >= 20080618
+packetLen(0x0144, 23) // ZC_COMPASS
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0144, 30) // ZC_COMPASS
+#elif PACKETVER >= 20080311
+packetLen(0x0144, 23) // ZC_COMPASS
+#elif PACKETVER >= 20080304
+packetLen(0x0144, 79) // ZC_COMPASS
+#elif PACKETVER >= 20080226
+packetLen(0x0144, 6) // ZC_COMPASS
+#elif PACKETVER >= 20080219
+packetLen(0x0144, 10) // ZC_COMPASS
+#elif PACKETVER >= 20080102
+packetLen(0x0144, 23) // ZC_COMPASS
+#endif
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+#if PACKETVER >= 20080618
+packetLen(0x0146, 23) // CZ_CLOSE_DIALOG
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0146, -1) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080311
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080304
+packetLen(0x0146, 5) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080226
+packetLen(0x0146, 7) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080219
+packetLen(0x0146, 10) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20080102
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+#endif
+
+// Packet: 0x0147
+#if PACKETVER >= 20080618
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0147, -1) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080311
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080304
+packetLen(0x0147, 22) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080226
+packetLen(0x0147, 11) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080219
+packetLen(0x0147, -1) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20080102
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+#endif
+
+// Packet: 0x0148
+#if PACKETVER >= 20080618
+packetLen(0x0148, 8) // ZC_RESURRECTION
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0148, 6) // ZC_RESURRECTION
+#elif PACKETVER >= 20080311
+packetLen(0x0148, 8) // ZC_RESURRECTION
+#elif PACKETVER >= 20080304
+packetLen(0x0148, 10) // ZC_RESURRECTION
+#elif PACKETVER >= 20080226
+packetLen(0x0148, 6) // ZC_RESURRECTION
+#elif PACKETVER >= 20080219
+packetLen(0x0148, 4) // ZC_RESURRECTION
+#elif PACKETVER >= 20080102
+packetLen(0x0148, 8) // ZC_RESURRECTION
+#endif
+
+// Packet: 0x0149
+#if PACKETVER >= 20080618
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0149, -1) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080311
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080304
+packetLen(0x0149, 15) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080226
+packetLen(0x0149, -1) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080219
+packetLen(0x0149, 53) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20080102
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+#endif
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+#if PACKETVER >= 20080618
+packetLen(0x014c, 17) // ZC_MYGUILD_BASIC_INFO
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x014c, 53) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080226
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080219
+packetLen(0x014c, 4) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20080102
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+#endif
+
+// Packet: 0x014d
+#if PACKETVER >= 20080618
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080610
+packetLen(0x014d, 26) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080311
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080304
+packetLen(0x014d, 6) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080226
+packetLen(0x014d, 8) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080219
+packetLen(0x014d, 10) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20080102
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+#endif
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+#if PACKETVER >= 20080618
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080610
+packetLen(0x014f, -1) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080311
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080304
+packetLen(0x014f, 10) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080226
+packetLen(0x014f, 97) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080219
+packetLen(0x014f, -1) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20080102
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+#endif
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+#if PACKETVER >= 20080618
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080610
+packetLen(0x0154, 27) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080311
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080226
+packetLen(0x0154, 6) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080219
+packetLen(0x0154, 8) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20080102
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+#endif
+
+// Packet: 0x0155
+#if PACKETVER >= 20080618
+packetLen(0x0155, 12) // CZ_REQ_CHANGE_MEMBERPOS
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080311
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080304
+packetLen(0x0155, 54) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080226
+packetLen(0x0155, 66) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080219
+packetLen(0x0155, 15) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20080102
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+#endif
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0158
+packetLen(0x0158, -1) // ZC_ACK_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+#if PACKETVER >= 20080618
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080610
+packetLen(0x0159, -1) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x0159, -1) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x0159, 186) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x0159, -1) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+#endif
+
+// Packet: 0x015a
+#if PACKETVER >= 20080618
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x015a, 6) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x015a, 14) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x015a, 6) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x015a, 8) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+#endif
+
+// Packet: 0x015b
+#if PACKETVER >= 20080618
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x015b, 42) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x015b, 2) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x015b, 22) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x015b, 6) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+#endif
+
+// Packet: 0x015c
+#if PACKETVER >= 20080618
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x015c, 18) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x015c, 30) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x015c, 3) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x015c, 5) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+#endif
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+#if PACKETVER >= 20080618
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080311
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080304
+packetLen(0x015e, 3) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080226
+packetLen(0x015e, 54) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080219
+packetLen(0x015e, -1) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20080102
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#endif
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+#if PACKETVER >= 20080618
+packetLen(0x0160, 11) // ZC_POSITION_INFO
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080311
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080304
+packetLen(0x0160, 29) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080226
+packetLen(0x0160, 2) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080219
+packetLen(0x0160, 102) // ZC_POSITION_INFO
+#elif PACKETVER >= 20080102
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+#endif
+
+// Packet: 0x0161
+#if PACKETVER >= 20080618
+packetLen(0x0161, 2) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0161, 10) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080311
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080304
+packetLen(0x0161, 58) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080226
+packetLen(0x0161, 21) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080219
+packetLen(0x0161, 2) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20080102
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#endif
+
+// Packet: 0x0162
+#if PACKETVER >= 20080618
+packetLen(0x0162, 22) // ZC_GUILD_SKILLINFO
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0162, 4) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080311
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080304
+packetLen(0x0162, 27) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080226
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080219
+packetLen(0x0162, 26) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20080102
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+#endif
+
+// Packet: 0x0163
+#if PACKETVER >= 20080618
+packetLen(0x0163, -1) // ZC_BAN_LIST
+#elif PACKETVER >= 20080610
+packetLen(0x0163, 8) // ZC_BAN_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x0163, -1) // ZC_BAN_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x0163, 21) // ZC_BAN_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x0163, 4) // ZC_BAN_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x0163, 6) // ZC_BAN_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x0163, -1) // ZC_BAN_LIST
+#endif
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+#if PACKETVER >= 20080618
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0165, 114) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x0165, -1) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x0165, 4) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x0165, 29) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+#endif
+
+// Packet: 0x0166
+#if PACKETVER >= 20080618
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080610
+packetLen(0x0166, 28) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080304
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080226
+packetLen(0x0166, 18) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20080102
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+#endif
+
+// Packet: 0x0167
+#if PACKETVER >= 20080618
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080610
+packetLen(0x0167, -1) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x0167, 71) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x0167, 2) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+#endif
+
+// Packet: 0x0168
+#if PACKETVER >= 20080618
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080610
+packetLen(0x0168, -1) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x0168, 9) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x0168, 3) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x0168, 6) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+#endif
+
+// Packet: 0x0169
+#if PACKETVER >= 20080618
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080610
+packetLen(0x0169, -1) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x0169, 81) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x0169, 4) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x0169, 6) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+#endif
+
+// Packet: 0x016a
+#if PACKETVER >= 20080618
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x016a, -1) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x016a, 6) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x016a, 2) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x016a, 4) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+#endif
+
+// Packet: 0x016b
+#if PACKETVER >= 20080618
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x016b, 35) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x016b, 6) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x016b, -1) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+#endif
+
+// Packet: 0x016c
+#if PACKETVER >= 20080618
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x016c, -1) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080311
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080304
+packetLen(0x016c, 10) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080226
+packetLen(0x016c, 8) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080219
+packetLen(0x016c, 6) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20080102
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+#endif
+
+// Packet: 0x016d
+#if PACKETVER >= 20080618
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080610
+packetLen(0x016d, -1) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080311
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080304
+packetLen(0x016d, 11) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080226
+packetLen(0x016d, 3) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080219
+packetLen(0x016d, 30) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20080102
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+#endif
+
+// Packet: 0x016e
+#if PACKETVER >= 20080618
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x016e, 6) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080311
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080304
+packetLen(0x016e, 26) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080226
+packetLen(0x016e, 4) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080219
+packetLen(0x016e, 3) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20080102
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+#endif
+
+// Packet: 0x016f
+#if PACKETVER >= 20080618
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x016f, 9) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080311
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080304
+packetLen(0x016f, 17) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080226
+packetLen(0x016f, 6) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080219
+packetLen(0x016f, 4) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20080102
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+#endif
+
+// Packet: 0x0170
+#if PACKETVER >= 20080618
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080610
+packetLen(0x0170, -1) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x0170, -1) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x0170, 30) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x0170, 60) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+#endif
+
+// Packet: 0x0171
+#if PACKETVER >= 20080618
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0171, 67) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x0171, 10) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x0171, 67) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x0171, 6) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+#endif
+
+// Packet: 0x0172
+#if PACKETVER >= 20080618
+packetLen(0x0172, 102) // CZ_ALLY_GUILD
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0172, -1) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080311
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080304
+packetLen(0x0172, 30) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080226
+packetLen(0x0172, -1) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080219
+packetLen(0x0172, 22) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20080102
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+#endif
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+#if PACKETVER >= 20080618
+packetLen(0x0177, 4) // ZC_ITEMIDENTIFY_LIST
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0177, 282) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x0177, 3) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x0177, 2) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+#endif
+
+// Packet: 0x0178
+#if PACKETVER >= 20080618
+packetLen(0x0178, 10) // CZ_REQ_ITEMIDENTIFY
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0178, -1) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080311
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080304
+packetLen(0x0178, 7) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080226
+packetLen(0x0178, -1) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080219
+packetLen(0x0178, 30) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20080102
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+#endif
+
+// Packet: 0x0179
+#if PACKETVER >= 20080618
+packetLen(0x0179, 6) // ZC_ACK_ITEMIDENTIFY
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0179, -1) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080311
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080304
+packetLen(0x0179, 12) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080219
+packetLen(0x0179, 3) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20080102
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+#endif
+
+// Packet: 0x017a
+#if PACKETVER >= 20080618
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x017a, 6) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x017a, 10) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x017a, 30) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+#endif
+
+// Packet: 0x017b
+#if PACKETVER >= 20080311
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x017b, 3) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x017b, 9) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x017b, 18) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+#endif
+
+// Packet: 0x017c
+#if PACKETVER >= 20080618
+packetLen(0x017c, 26) // CZ_REQ_ITEMCOMPOSITION
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x017c, -1) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080311
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080226
+packetLen(0x017c, -1) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20080102
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+#endif
+
+// Packet: 0x017d
+#if PACKETVER >= 20080618
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x017d, 27) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080311
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080304
+packetLen(0x017d, -1) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080219
+packetLen(0x017d, 8) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20080102
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+#endif
+
+// Packet: 0x017e
+#if PACKETVER >= 20080618
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080610
+packetLen(0x017e, 90) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080304
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080226
+packetLen(0x017e, 7) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080219
+packetLen(0x017e, 28) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20080102
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+#endif
+
+// Packet: 0x017f
+#if PACKETVER >= 20080618
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080610
+packetLen(0x017f, 13) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080311
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080304
+packetLen(0x017f, 4) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080226
+packetLen(0x017f, 30) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20080102
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+#endif
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+#if PACKETVER >= 20080618
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080610
+packetLen(0x0188, -1) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080311
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080304
+packetLen(0x0188, 26) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080226
+packetLen(0x0188, 30) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080219
+packetLen(0x0188, 27) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20080102
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+#endif
+
+// Packet: 0x0189
+#if PACKETVER >= 20080618
+packetLen(0x0189, 55) // ZC_NOTIFY_MAPINFO
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080311
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080304
+packetLen(0x0189, 60) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080226
+packetLen(0x0189, 17) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080219
+packetLen(0x0189, 8) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20080102
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+#endif
+
+// Packet: 0x018a
+#if PACKETVER >= 20080618
+packetLen(0x018a, 18) // CZ_REQ_DISCONNECT
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x018a, 22) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080311
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080304
+packetLen(0x018a, 11) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080226
+packetLen(0x018a, 2) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080219
+packetLen(0x018a, 7) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20080102
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+#endif
+
+// Packet: 0x018b
+#if PACKETVER >= 20080618
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080610
+packetLen(0x018b, -1) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080311
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080304
+packetLen(0x018b, -1) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080226
+packetLen(0x018b, 10) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080219
+packetLen(0x018b, 6) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20080102
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+#endif
+
+// Packet: 0x018c
+#if PACKETVER >= 20080618
+packetLen(0x018c, 31) // ZC_MONSTER_INFO
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x018c, -1) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080311
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080304
+packetLen(0x018c, 8) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080226
+packetLen(0x018c, 2) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080219
+packetLen(0x018c, -1) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20080102
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+#endif
+
+// Packet: 0x018d
+#if PACKETVER >= 20080311
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x018d, 32) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x018d, 22) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x018d, 4) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+#endif
+
+// Packet: 0x018e
+#if PACKETVER >= 20080618
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x018e, 6) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080311
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080304
+packetLen(0x018e, 7) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080226
+packetLen(0x018e, 4) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080219
+packetLen(0x018e, 39) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20080102
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+#endif
+
+// Packet: 0x018f
+#if PACKETVER >= 20080618
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080610
+packetLen(0x018f, -1) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080311
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080304
+packetLen(0x018f, 65) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080226
+packetLen(0x018f, -1) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20080102
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+#endif
+
+// Packet: 0x0190
+packetLen(0x0190, 19) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+#if PACKETVER >= 20080618
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080610
+packetLen(0x0194, -1) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080311
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080304
+packetLen(0x0194, -1) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080226
+packetLen(0x0194, 4) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080219
+packetLen(0x0194, 14) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20080102
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+#endif
+
+// Packet: 0x0195
+#if PACKETVER >= 20080618
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0195, 44) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080311
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080304
+packetLen(0x0195, 6) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080226
+packetLen(0x0195, 3) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080219
+packetLen(0x0195, 43) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20080102
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+#endif
+
+// Packet: 0x0196
+#if PACKETVER >= 20080618
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080610
+packetLen(0x0196, -1) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080311
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080304
+packetLen(0x0196, -1) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080226
+packetLen(0x0196, 2) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080219
+packetLen(0x0196, 4) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+#endif
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+#if PACKETVER >= 20080618
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080610
+packetLen(0x0199, -1) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080304
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080226
+packetLen(0x0199, 6) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080219
+packetLen(0x0199, -1) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20080102
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+#endif
+
+// Packet: 0x019a
+#if PACKETVER >= 20080618
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x019a, 5) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080311
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080304
+packetLen(0x019a, 8) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080226
+packetLen(0x019a, 42) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080219
+packetLen(0x019a, 10) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20080102
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+#endif
+
+// Packet: 0x019b
+#if PACKETVER >= 20080618
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080610
+packetLen(0x019b, 4) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080311
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080304
+packetLen(0x019b, 39) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080226
+packetLen(0x019b, 65) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080219
+packetLen(0x019b, 2) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20080102
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+#endif
+
+// Packet: 0x019c
+#if PACKETVER >= 20080618
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080610
+packetLen(0x019c, 5) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080311
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080304
+packetLen(0x019c, 9) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080226
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080219
+packetLen(0x019c, 2) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20080102
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#endif
+
+// Packet: 0x019d
+#if PACKETVER >= 20080618
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x019d, 32) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080311
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080304
+packetLen(0x019d, 2) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080226
+packetLen(0x019d, -1) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080219
+packetLen(0x019d, 18) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20080102
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+#endif
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+#if PACKETVER >= 20080618
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x019f, 19) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080311
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080304
+packetLen(0x019f, 11) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080226
+packetLen(0x019f, 79) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080219
+packetLen(0x019f, 2) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080102
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+#endif
+
+// Packet: 0x01a0
+#if PACKETVER >= 20080618
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080610
+packetLen(0x01a0, -1) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080311
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080304
+packetLen(0x01a0, -1) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080226
+packetLen(0x01a0, 8) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20080102
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+#endif
+
+// Packet: 0x01a1
+#if PACKETVER >= 20080618
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01a1, 6) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080311
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080304
+packetLen(0x01a1, 42) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080226
+packetLen(0x01a1, -1) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080219
+packetLen(0x01a1, 6) // CZ_COMMAND_PET
+#elif PACKETVER >= 20080102
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+#endif
+
+// Packet: 0x01a2
+#if PACKETVER >= 20081126
+packetLen(0x01a2, 37) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080618
+packetLen(0x01a2, 35) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080610
+packetLen(0x01a2, -1) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080311
+packetLen(0x01a2, 35) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080304
+packetLen(0x01a2, 6) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080226
+packetLen(0x01a2, 7) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080219
+packetLen(0x01a2, 8) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20080102
+packetLen(0x01a2, 35) // ZC_PROPERTY_PET
+#endif
+
+// Packet: 0x01a3
+#if PACKETVER >= 20080618
+packetLen(0x01a3, 5) // ZC_FEED_PET
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01a3, 11) // ZC_FEED_PET
+#elif PACKETVER >= 20080311
+packetLen(0x01a3, 5) // ZC_FEED_PET
+#elif PACKETVER >= 20080304
+packetLen(0x01a3, 10) // ZC_FEED_PET
+#elif PACKETVER >= 20080226
+packetLen(0x01a3, 4) // ZC_FEED_PET
+#elif PACKETVER >= 20080219
+packetLen(0x01a3, 11) // ZC_FEED_PET
+#elif PACKETVER >= 20080102
+packetLen(0x01a3, 5) // ZC_FEED_PET
+#endif
+
+// Packet: 0x01a4
+#if PACKETVER >= 20080618
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01a4, 10) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080311
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080304
+packetLen(0x01a4, 6) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080226
+packetLen(0x01a4, 10) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080219
+packetLen(0x01a4, 8) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20080102
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+#endif
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+#if PACKETVER >= 20080618
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080610
+packetLen(0x01a6, 6) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x01a6, 9) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x01a6, 10) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+#endif
+
+// Packet: 0x01a7
+#if PACKETVER >= 20080618
+packetLen(0x01a7, 6) // CZ_SELECT_PETEGG
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01a7, -1) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080311
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080304
+packetLen(0x01a7, -1) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080226
+packetLen(0x01a7, 2) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080219
+packetLen(0x01a7, 6) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20080102
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+#endif
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+#if PACKETVER >= 20080618
+packetLen(0x01aa, 10) // ZC_PET_ACT
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01aa, -1) // ZC_PET_ACT
+#elif PACKETVER >= 20080311
+packetLen(0x01aa, 10) // ZC_PET_ACT
+#elif PACKETVER >= 20080304
+packetLen(0x01aa, 18) // ZC_PET_ACT
+#elif PACKETVER >= 20080219
+packetLen(0x01aa, 6) // ZC_PET_ACT
+#elif PACKETVER >= 20080102
+packetLen(0x01aa, 10) // ZC_PET_ACT
+#endif
+
+// Packet: 0x01ab
+#if PACKETVER >= 20080618
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080610
+packetLen(0x01ab, -1) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080311
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080304
+packetLen(0x01ab, 68) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080226
+packetLen(0x01ab, 10) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080219
+packetLen(0x01ab, 3) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20080102
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+#endif
+
+// Packet: 0x01ac
+#if PACKETVER >= 20080618
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01ac, 10) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080311
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080304
+packetLen(0x01ac, 90) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080226
+packetLen(0x01ac, 4) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080219
+packetLen(0x01ac, 26) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20080102
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+#endif
+
+// Packet: 0x01ad
+#if PACKETVER >= 20080618
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080610
+packetLen(0x01ad, 14) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x01ad, 2) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x01ad, 4) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x01ad, 54) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+#endif
+
+// Packet: 0x01ae
+#if PACKETVER >= 20080618
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01ae, 6) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080311
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080304
+packetLen(0x01ae, -1) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080226
+packetLen(0x01ae, 2) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20080102
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+#endif
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+#if PACKETVER >= 20080618
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080610
+packetLen(0x01b0, -1) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080311
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080304
+packetLen(0x01b0, 7) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080226
+packetLen(0x01b0, 6) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080219
+packetLen(0x01b0, 2) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20080102
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+#endif
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+#if PACKETVER >= 20080618
+packetLen(0x01b2, 3) // CZ_REQ_OPENSTORE2
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080311
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080304
+packetLen(0x01b2, 6) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080226
+packetLen(0x01b2, 282) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080219
+packetLen(0x01b2, 26) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20080102
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+#endif
+
+// Packet: 0x01b3
+#if PACKETVER >= 20080618
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080610
+packetLen(0x01b3, -1) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080311
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080304
+packetLen(0x01b3, 32) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080226
+packetLen(0x01b3, 2) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080219
+packetLen(0x01b3, -1) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20080102
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+#endif
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+#if PACKETVER >= 20080618
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01b6, 3) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080311
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080304
+packetLen(0x01b6, 6) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080226
+packetLen(0x01b6, 18) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080219
+packetLen(0x01b6, 22) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20080102
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+#endif
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+#if PACKETVER >= 20080618
+packetLen(0x01b9, 6) // ZC_DISPEL
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01b9, 14) // ZC_DISPEL
+#elif PACKETVER >= 20080311
+packetLen(0x01b9, 6) // ZC_DISPEL
+#elif PACKETVER >= 20080304
+packetLen(0x01b9, 26) // ZC_DISPEL
+#elif PACKETVER >= 20080226
+packetLen(0x01b9, 60) // ZC_DISPEL
+#elif PACKETVER >= 20080219
+packetLen(0x01b9, 2) // ZC_DISPEL
+#elif PACKETVER >= 20080102
+packetLen(0x01b9, 6) // ZC_DISPEL
+#endif
+
+// Packet: 0x01ba
+#if PACKETVER >= 20080618
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01ba, -1) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080311
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080304
+packetLen(0x01ba, 3) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080226
+packetLen(0x01ba, -1) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080219
+packetLen(0x01ba, 14) // CZ_REMOVE_AID
+#elif PACKETVER >= 20080102
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+#endif
+
+// Packet: 0x01bb
+#if PACKETVER >= 20080618
+packetLen(0x01bb, 26) // CZ_SHIFT
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01bb, 22) // CZ_SHIFT
+#elif PACKETVER >= 20080311
+packetLen(0x01bb, 26) // CZ_SHIFT
+#elif PACKETVER >= 20080304
+packetLen(0x01bb, -1) // CZ_SHIFT
+#elif PACKETVER >= 20080226
+packetLen(0x01bb, 6) // CZ_SHIFT
+#elif PACKETVER >= 20080219
+packetLen(0x01bb, 3) // CZ_SHIFT
+#elif PACKETVER >= 20080102
+packetLen(0x01bb, 26) // CZ_SHIFT
+#endif
+
+// Packet: 0x01bc
+#if PACKETVER >= 20080618
+packetLen(0x01bc, 26) // CZ_RECALL
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01bc, 4) // CZ_RECALL
+#elif PACKETVER >= 20080311
+packetLen(0x01bc, 26) // CZ_RECALL
+#elif PACKETVER >= 20080304
+packetLen(0x01bc, 3) // CZ_RECALL
+#elif PACKETVER >= 20080226
+packetLen(0x01bc, 86) // CZ_RECALL
+#elif PACKETVER >= 20080219
+packetLen(0x01bc, 9) // CZ_RECALL
+#elif PACKETVER >= 20080102
+packetLen(0x01bc, 26) // CZ_RECALL
+#endif
+
+// Packet: 0x01bd
+#if PACKETVER >= 20080618
+packetLen(0x01bd, 44) // CZ_RECALL_GID
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01bd, -1) // CZ_RECALL_GID
+#elif PACKETVER >= 20080311
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+#elif PACKETVER >= 20080304
+packetLen(0x01bd, 3) // CZ_RECALL_GID
+#elif PACKETVER >= 20080226
+packetLen(0x01bd, -1) // CZ_RECALL_GID
+#elif PACKETVER >= 20080219
+packetLen(0x01bd, 6) // CZ_RECALL_GID
+#elif PACKETVER >= 20080102
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+#endif
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+#if PACKETVER >= 20080618
+packetLen(0x01c3, 6) // ZC_BROADCAST2
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01c3, 3) // ZC_BROADCAST2
+#elif PACKETVER >= 20080311
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+#elif PACKETVER >= 20080304
+packetLen(0x01c3, 26) // ZC_BROADCAST2
+#elif PACKETVER >= 20080226
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+#elif PACKETVER >= 20080219
+packetLen(0x01c3, 14) // ZC_BROADCAST2
+#elif PACKETVER >= 20080102
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+#endif
+
+// Packet: 0x01c4
+#if PACKETVER >= 20080618
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080610
+packetLen(0x01c4, -1) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080311
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080304
+packetLen(0x01c4, 2) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080219
+packetLen(0x01c4, -1) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20080102
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+#endif
+
+// Packet: 0x01c5
+#if PACKETVER >= 20080618
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01c5, -1) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080311
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080304
+packetLen(0x01c5, 6) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080226
+packetLen(0x01c5, -1) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080219
+packetLen(0x01c5, 28) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20080102
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+#endif
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+#if PACKETVER >= 20080618
+packetLen(0x01c8, 65) // ZC_USE_ITEM_ACK2
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01c8, -1) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080311
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080304
+packetLen(0x01c8, 2) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080226
+packetLen(0x01c8, 8) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080219
+packetLen(0x01c8, 6) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20080102
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+#endif
+
+// Packet: 0x01c9
+#if PACKETVER >= 20080618
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01c9, 27) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080311
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080304
+packetLen(0x01c9, 8) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080226
+packetLen(0x01c9, 22) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080219
+packetLen(0x01c9, 26) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20080102
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+#endif
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+#if PACKETVER >= 20080618
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080610
+packetLen(0x01cd, -1) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080311
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080304
+packetLen(0x01cd, 3) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080226
+packetLen(0x01cd, -1) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080219
+packetLen(0x01cd, 8) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20080102
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+#endif
+
+// Packet: 0x01ce
+#if PACKETVER >= 20080618
+packetLen(0x01ce, 27) // CZ_SELECTAUTOSPELL
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01ce, 282) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080311
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080304
+packetLen(0x01ce, 3) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080226
+packetLen(0x01ce, 2) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080219
+packetLen(0x01ce, 28) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20080102
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+#endif
+
+// Packet: 0x01cf
+#if PACKETVER >= 20080618
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01cf, 3) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080311
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080304
+packetLen(0x01cf, 8) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080226
+packetLen(0x01cf, 102) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080219
+packetLen(0x01cf, 5) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20080102
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+#endif
+
+// Packet: 0x01d0
+#if PACKETVER >= 20080618
+packetLen(0x01d0, 53) // ZC_SPIRITS
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01d0, -1) // ZC_SPIRITS
+#elif PACKETVER >= 20080311
+packetLen(0x01d0, 8) // ZC_SPIRITS
+#elif PACKETVER >= 20080304
+packetLen(0x01d0, 18) // ZC_SPIRITS
+#elif PACKETVER >= 20080226
+packetLen(0x01d0, 26) // ZC_SPIRITS
+#elif PACKETVER >= 20080219
+packetLen(0x01d0, 2) // ZC_SPIRITS
+#elif PACKETVER >= 20080102
+packetLen(0x01d0, 8) // ZC_SPIRITS
+#endif
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+#if PACKETVER >= 20080618
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01d2, -1) // ZC_COMBODELAY
+#elif PACKETVER >= 20080311
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+#elif PACKETVER >= 20080304
+packetLen(0x01d2, 4) // ZC_COMBODELAY
+#elif PACKETVER >= 20080226
+packetLen(0x01d2, 8) // ZC_COMBODELAY
+#elif PACKETVER >= 20080219
+packetLen(0x01d2, -1) // ZC_COMBODELAY
+#elif PACKETVER >= 20080102
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+#endif
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+#if PACKETVER >= 20080618
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01d4, 2) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080304
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080226
+packetLen(0x01d4, -1) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20080102
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+#endif
+
+// Packet: 0x01d5
+#if PACKETVER >= 20080304
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080226
+packetLen(0x01d5, 6) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080219
+packetLen(0x01d5, 16) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20080102
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+#endif
+
+// Packet: 0x01d6
+#if PACKETVER >= 20080618
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080610
+packetLen(0x01d6, -1) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080311
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080304
+packetLen(0x01d6, 2) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080226
+packetLen(0x01d6, 10) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080219
+packetLen(0x01d6, 6) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20080102
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+#endif
+
+// Packet: 0x01d7
+#if PACKETVER >= 20080618
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01d7, 10) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080311
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080304
+packetLen(0x01d7, 15) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080226
+packetLen(0x01d7, 2) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080219
+packetLen(0x01d7, 35) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20080102
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+#endif
+
+// Packet: 0x01d8
+#if PACKETVER >= 20080618
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01d8, -1) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080311
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080304
+packetLen(0x01d8, 7) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080226
+packetLen(0x01d8, 15) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080219
+packetLen(0x01d8, -1) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20080102
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+#endif
+
+// Packet: 0x01d9
+#if PACKETVER >= 20080618
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01d9, -1) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080311
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080304
+packetLen(0x01d9, 10) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080226
+packetLen(0x01d9, 8) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080219
+packetLen(0x01d9, 282) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20080102
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+#endif
+
+// Packet: 0x01da
+#if PACKETVER >= 20080618
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01da, -1) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080311
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080304
+packetLen(0x01da, -1) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080226
+packetLen(0x01da, 6) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080219
+packetLen(0x01da, 2) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20080102
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+#endif
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+#if PACKETVER >= 20080618
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01de, 28) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080311
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080304
+packetLen(0x01de, 8) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080226
+packetLen(0x01de, -1) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080219
+packetLen(0x01de, 3) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20080102
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+#endif
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+#if PACKETVER >= 20080618
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01e1, 102) // ZC_SPIRITS2
+#elif PACKETVER >= 20080311
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+#elif PACKETVER >= 20080304
+packetLen(0x01e1, -1) // ZC_SPIRITS2
+#elif PACKETVER >= 20080226
+packetLen(0x01e1, 32) // ZC_SPIRITS2
+#elif PACKETVER >= 20080219
+packetLen(0x01e1, -1) // ZC_SPIRITS2
+#elif PACKETVER >= 20080102
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+#endif
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+#if PACKETVER >= 20080618
+packetLen(0x01e7, 6) // CZ_DORIDORI
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01e7, -1) // CZ_DORIDORI
+#elif PACKETVER >= 20080311
+packetLen(0x01e7, 2) // CZ_DORIDORI
+#elif PACKETVER >= 20080304
+packetLen(0x01e7, 6) // CZ_DORIDORI
+#elif PACKETVER >= 20080102
+packetLen(0x01e7, 2) // CZ_DORIDORI
+#endif
+
+// Packet: 0x01e8
+#if PACKETVER >= 20080618
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01e8, 39) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080311
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080304
+packetLen(0x01e8, 26) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080226
+packetLen(0x01e8, -1) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080219
+packetLen(0x01e8, 6) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20080102
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+#endif
+
+// Packet: 0x01e9
+#if PACKETVER >= 20080618
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080610
+packetLen(0x01e9, 6) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080311
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080304
+packetLen(0x01e9, -1) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080226
+packetLen(0x01e9, 12) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080219
+packetLen(0x01e9, -1) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20080102
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+#endif
+
+// Packet: 0x01ea
+#if PACKETVER >= 20080618
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080610
+packetLen(0x01ea, -1) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080311
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080304
+packetLen(0x01ea, 8) // ZC_CONGRATULATION
+#elif PACKETVER >= 20080102
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+#endif
+
+// Packet: 0x01eb
+#if PACKETVER >= 20080618
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01eb, 21) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080311
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080304
+packetLen(0x01eb, 7) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080226
+packetLen(0x01eb, 11) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080219
+packetLen(0x01eb, 26) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20080102
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+#endif
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+#if PACKETVER >= 20080618
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01ed, 53) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080311
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080304
+packetLen(0x01ed, -1) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080226
+packetLen(0x01ed, 10) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080219
+packetLen(0x01ed, 22) // CZ_CHOPOKGI
+#elif PACKETVER >= 20080102
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+#endif
+
+// Packet: 0x01ee
+#if PACKETVER >= 20080618
+packetLen(0x01ee, 23) // ZC_NORMAL_ITEMLIST2
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080311
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080304
+packetLen(0x01ee, 57) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080226
+packetLen(0x01ee, 11) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080219
+packetLen(0x01ee, 8) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080102
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+#endif
+
+// Packet: 0x01ef
+#if PACKETVER >= 20080618
+packetLen(0x01ef, 10) // ZC_CART_NORMAL_ITEMLIST2
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01ef, 66) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080311
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080304
+packetLen(0x01ef, 6) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080226
+packetLen(0x01ef, 35) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080219
+packetLen(0x01ef, 6) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080102
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+#endif
+
+// Packet: 0x01f0
+#if PACKETVER >= 20080618
+packetLen(0x01f0, 16) // ZC_STORE_NORMAL_ITEMLIST2
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080311
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080304
+packetLen(0x01f0, 10) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20080102
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+#endif
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+#if PACKETVER >= 20080618
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080610
+packetLen(0x01f2, -1) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080311
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080304
+packetLen(0x01f2, 28) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080226
+packetLen(0x01f2, 27) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080219
+packetLen(0x01f2, 31) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20080102
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+#endif
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+#if PACKETVER >= 20080618
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01f4, 24) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080311
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080304
+packetLen(0x01f4, 3) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080226
+packetLen(0x01f4, -1) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080219
+packetLen(0x01f4, 6) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080102
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+#endif
+
+// Packet: 0x01f5
+#if PACKETVER >= 20080618
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01f5, -1) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080311
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080304
+packetLen(0x01f5, 2) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080226
+packetLen(0x01f5, 10) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080219
+packetLen(0x01f5, 114) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20080102
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+#endif
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+#if PACKETVER >= 20080618
+packetLen(0x01fc, 186) // ZC_REPAIRITEMLIST
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080304
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x01fc, 4) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x01fc, 282) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+#endif
+
+// Packet: 0x01fd
+#if PACKETVER >= 20080618
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080610
+packetLen(0x01fd, -1) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080311
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080304
+packetLen(0x01fd, 2) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080226
+packetLen(0x01fd, 8) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080219
+packetLen(0x01fd, 26) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20080102
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+#endif
+
+// Packet: 0x01fe
+#if PACKETVER >= 20080618
+packetLen(0x01fe, 11) // ZC_ACK_ITEMREPAIR
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x01fe, 6) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080311
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080304
+packetLen(0x01fe, 114) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080226
+packetLen(0x01fe, 2) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080219
+packetLen(0x01fe, 13) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20080102
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+#endif
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+#if PACKETVER >= 20080311
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x0201, 6) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x0201, 7) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+#endif
+
+// Packet: 0x0202
+#if PACKETVER >= 20080618
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080610
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080311
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080304
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080226
+packetLen(0x0202, 44) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080219
+packetLen(0x0202, 4) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20080102
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0203
+#if PACKETVER >= 20080618
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080610
+packetLen(0x0203, -1) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080311
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080304
+packetLen(0x0203, -1) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080226
+packetLen(0x0203, 7) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080219
+packetLen(0x0203, 4) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20080102
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+#endif
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+#if PACKETVER >= 20080618
+packetLen(0x0206, 30) // ZC_FRIENDS_STATE
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0206, -1) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080311
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080304
+packetLen(0x0206, 6) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080226
+packetLen(0x0206, 8) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080219
+packetLen(0x0206, 7) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20080102
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+#endif
+
+// Packet: 0x0207
+#if PACKETVER >= 20080618
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0207, -1) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080311
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080304
+packetLen(0x0207, -1) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080226
+packetLen(0x0207, 26) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080219
+packetLen(0x0207, 66) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080102
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0208
+#if PACKETVER >= 20080618
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080610
+packetLen(0x0208, -1) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080311
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080226
+packetLen(0x0208, -1) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080219
+packetLen(0x0208, 71) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20080102
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0209
+#if PACKETVER >= 20080618
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0209, 30) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x0209, 22) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x0209, 6) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x0209, 30) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+#endif
+
+// Packet: 0x020a
+#if PACKETVER >= 20080618
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080610
+packetLen(0x020a, -1) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080311
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080304
+packetLen(0x020a, 7) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080226
+packetLen(0x020a, -1) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080219
+packetLen(0x020a, 20) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20080102
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+#endif
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+#if PACKETVER >= 20080618
+packetLen(0x020e, 32) // ZC_STARSKILL
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x020e, 7) // ZC_STARSKILL
+#elif PACKETVER >= 20080311
+packetLen(0x020e, 32) // ZC_STARSKILL
+#elif PACKETVER >= 20080304
+packetLen(0x020e, 4) // ZC_STARSKILL
+#elif PACKETVER >= 20080226
+packetLen(0x020e, -1) // ZC_STARSKILL
+#elif PACKETVER >= 20080219
+packetLen(0x020e, 8) // ZC_STARSKILL
+#elif PACKETVER >= 20080102
+packetLen(0x020e, 32) // ZC_STARSKILL
+#endif
+
+// Packet: 0x020f
+packetLen(0x020f, 10) // CZ_REQ_PVPPOINT
+
+// Packet: 0x0210
+packetLen(0x0210, 22) // ZC_ACK_PVPPOINT
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+#if PACKETVER >= 20080618
+packetLen(0x0217, 4) // CZ_BLACKSMITH_RANK
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0217, 39) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080311
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080304
+packetLen(0x0217, 9) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080226
+packetLen(0x0217, 5) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080219
+packetLen(0x0217, -1) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20080102
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+#endif
+
+// Packet: 0x0218
+#if PACKETVER >= 20080618
+packetLen(0x0218, 68) // CZ_ALCHEMIST_RANK
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0218, 16) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080311
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080304
+packetLen(0x0218, 15) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080226
+packetLen(0x0218, 8) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080219
+packetLen(0x0218, 26) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20080102
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+#endif
+
+// Packet: 0x0219
+#if PACKETVER >= 20080618
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0219, -1) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080311
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080304
+packetLen(0x0219, 6) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080226
+packetLen(0x0219, -1) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080219
+packetLen(0x0219, 17) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20080102
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+#endif
+
+// Packet: 0x021a
+#if PACKETVER >= 20080618
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x021a, -1) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080311
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080304
+packetLen(0x021a, 6) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080226
+packetLen(0x021a, 30) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080219
+packetLen(0x021a, -1) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20080102
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+#endif
+
+// Packet: 0x021b
+#if PACKETVER >= 20080618
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080610
+packetLen(0x021b, -1) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080311
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080304
+packetLen(0x021b, 30) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080226
+packetLen(0x021b, 6) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080219
+packetLen(0x021b, 15) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20080102
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+#endif
+
+// Packet: 0x021c
+#if PACKETVER >= 20080618
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x021c, 26) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080311
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080304
+packetLen(0x021c, 5) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080226
+packetLen(0x021c, 4) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080219
+packetLen(0x021c, -1) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20080102
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+#endif
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+#if PACKETVER >= 20080618
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0224, -1) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080311
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080304
+packetLen(0x0224, 22) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080226
+packetLen(0x0224, 2) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080219
+packetLen(0x0224, 12) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20080102
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+#endif
+
+// Packet: 0x0225
+#if PACKETVER >= 20080618
+packetLen(0x0225, 7) // CZ_TAEKWON_RANK
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0225, -1) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080311
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080304
+packetLen(0x0225, -1) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080226
+packetLen(0x0225, 3) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080219
+packetLen(0x0225, 6) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20080102
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+#endif
+
+// Packet: 0x0226
+#if PACKETVER >= 20080618
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0226, 28) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080311
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080304
+packetLen(0x0226, 31) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080226
+packetLen(0x0226, 3) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080219
+packetLen(0x0226, 42) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20080102
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+#endif
+
+// Packet: 0x0227
+#if PACKETVER >= 20080618
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080610
+packetLen(0x0227, -1) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080311
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080304
+packetLen(0x0227, -1) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080226
+packetLen(0x0227, 31) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080219
+packetLen(0x0227, 4) // ZC_GAME_GUARD
+#elif PACKETVER >= 20080102
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+#endif
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+#if PACKETVER >= 20080618
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0229, 2) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080311
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080304
+packetLen(0x0229, 10) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080226
+packetLen(0x0229, 182) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080219
+packetLen(0x0229, 6) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20080102
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+#endif
+
+// Packet: 0x022a
+#if PACKETVER >= 20080618
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x022a, -1) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080311
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080304
+packetLen(0x022a, 14) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080226
+packetLen(0x022a, -1) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080219
+packetLen(0x022a, 2) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20080102
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+#endif
+
+// Packet: 0x022b
+#if PACKETVER >= 20080618
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080610
+packetLen(0x022b, 6) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080311
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080219
+packetLen(0x022b, -1) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20080102
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+#endif
+
+// Packet: 0x022c
+#if PACKETVER >= 20080618
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080610
+packetLen(0x022c, -1) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080311
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080304
+packetLen(0x022c, 6) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080226
+packetLen(0x022c, 31) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080219
+packetLen(0x022c, 53) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20080102
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+#endif
+
+// Packet: 0x022d
+#if PACKETVER >= 20080618
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x022d, 26) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080311
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080304
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080226
+packetLen(0x022d, 10) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080219
+packetLen(0x022d, 9) // CZ_COMMAND_MER
+#elif PACKETVER >= 20080102
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+#endif
+
+// Packet: 0x022e
+#if PACKETVER >= 20080618
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x022e, 6) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080311
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080304
+packetLen(0x022e, 22) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080226
+packetLen(0x022e, 9) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080219
+packetLen(0x022e, -1) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20080102
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+#endif
+
+// Packet: 0x022f
+#if PACKETVER >= 20080618
+packetLen(0x022f, 5) // ZC_FEED_MER
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x022f, 10) // ZC_FEED_MER
+#elif PACKETVER >= 20080311
+packetLen(0x022f, 5) // ZC_FEED_MER
+#elif PACKETVER >= 20080304
+packetLen(0x022f, 4) // ZC_FEED_MER
+#elif PACKETVER >= 20080226
+packetLen(0x022f, 26) // ZC_FEED_MER
+#elif PACKETVER >= 20080219
+packetLen(0x022f, 282) // ZC_FEED_MER
+#elif PACKETVER >= 20080102
+packetLen(0x022f, 5) // ZC_FEED_MER
+#endif
+
+// Packet: 0x0230
+#if PACKETVER >= 20080618
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0230, 10) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080311
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080304
+packetLen(0x0230, 282) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080226
+packetLen(0x0230, 28) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080219
+packetLen(0x0230, 54) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20080102
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+#endif
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+#if PACKETVER >= 20080618
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0232, -1) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080311
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080304
+packetLen(0x0232, 3) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080226
+packetLen(0x0232, 2) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080219
+packetLen(0x0232, 36) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20080102
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+#endif
+
+// Packet: 0x0233
+#if PACKETVER >= 20080618
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0233, 6) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080311
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080304
+packetLen(0x0233, 2) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080226
+packetLen(0x0233, 4) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080219
+packetLen(0x0233, 8) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20080102
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+#endif
+
+// Packet: 0x0234
+#if PACKETVER >= 20080618
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080610
+packetLen(0x0234, -1) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080304
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080226
+packetLen(0x0234, 15) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080219
+packetLen(0x0234, 282) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20080102
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+#endif
+
+// Packet: 0x0235
+#if PACKETVER >= 20080618
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080610
+packetLen(0x0235, 7) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080311
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080304
+packetLen(0x0235, 6) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080226
+packetLen(0x0235, 33) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080219
+packetLen(0x0235, 15) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20080102
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+#endif
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+#if PACKETVER >= 20080618
+packetLen(0x0237, 5) // CZ_KILLER_RANK
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0237, -1) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080311
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080304
+packetLen(0x0237, 23) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080226
+packetLen(0x0237, 10) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080219
+packetLen(0x0237, 3) // CZ_KILLER_RANK
+#elif PACKETVER >= 20080102
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+#endif
+
+// Packet: 0x0238
+#if PACKETVER >= 20080618
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0238, -1) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080311
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080304
+packetLen(0x0238, 20) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080226
+packetLen(0x0238, 6) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080219
+packetLen(0x0238, -1) // ZC_KILLER_RANK
+#elif PACKETVER >= 20080102
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+#endif
+
+// Packet: 0x0239
+#if PACKETVER >= 20080618
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0239, 14) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080311
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080304
+packetLen(0x0239, 10) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080226
+packetLen(0x0239, 39) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080219
+packetLen(0x0239, 8) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20080102
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+#endif
+
+// Packet: 0x023a
+#if PACKETVER >= 20080618
+packetLen(0x023a, 10) // ZC_REQ_STORE_PASSWORD
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x023a, -1) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080311
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080304
+packetLen(0x023a, 8) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080226
+packetLen(0x023a, 6) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080219
+packetLen(0x023a, 11) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20080102
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+#endif
+
+// Packet: 0x023b
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+
+// Packet: 0x023c
+#if PACKETVER >= 20080618
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080610
+packetLen(0x023c, -1) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080311
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080304
+packetLen(0x023c, 30) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080226
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080219
+packetLen(0x023c, 5) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20080102
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+#endif
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+#if PACKETVER >= 20080618
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0274, 4) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080311
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080304
+packetLen(0x0274, 2) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080226
+packetLen(0x0274, 24) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080219
+packetLen(0x0274, 32) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20080102
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+#endif
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+#if PACKETVER >= 20080722
+packetLen(0x027c, 60) // CA_LOGIN4
+#elif PACKETVER >= 20080715
+packetLen(0x027c, 96) // CA_LOGIN4
+#elif PACKETVER >= 20080102
+packetLen(0x027c, 60) // CA_LOGIN4
+#endif
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+packetLen(0x0281, 4) // CZ_GANGSI_RANK
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+#if PACKETVER >= 20080311
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080304
+packetLen(0x0287, 4) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080226
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080219
+packetLen(0x0287, 11) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20080102
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+#endif
+
+// Packet: 0x0288
+packetLen(0x0288, 10) // CZ_PC_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0289
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+#if PACKETVER >= 20080618
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080610
+packetLen(0x0295, 2) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080311
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080304
+packetLen(0x0295, 30) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080226
+packetLen(0x0295, 3) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080219
+packetLen(0x0295, 6) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080102
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+#endif
+
+// Packet: 0x0296
+#if PACKETVER >= 20080618
+packetLen(0x0296, 19) // ZC_STORE_EQUIPMENT_ITEMLIST2
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080311
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080304
+packetLen(0x0296, 58) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080226
+packetLen(0x0296, 6) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080219
+packetLen(0x0296, 5) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080102
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#endif
+
+// Packet: 0x0297
+#if PACKETVER >= 20080618
+packetLen(0x0297, 6) // ZC_CART_EQUIPMENT_ITEMLIST2
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0297, 4) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080311
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080304
+packetLen(0x0297, 97) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080226
+packetLen(0x0297, 5) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20080102
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+#endif
+
+// Packet: 0x0298
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+
+// Packet: 0x0299
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+
+// Packet: 0x029a
+#if PACKETVER >= 20080618
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080610
+packetLen(0x029a, -1) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080311
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080304
+packetLen(0x029a, 30) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080226
+packetLen(0x029a, 3) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080219
+packetLen(0x029a, -1) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20080102
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+#endif
+
+// Packet: 0x029b
+packetLen(0x029b, 80) // ZC_MER_INIT
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a5
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+
+// Packet: 0x02a6
+#if PACKETVER >= 20080122
+// removed
+#elif PACKETVER >= 20080108
+packetLen(0x02a6, 204) // ZC_HACKSH_CPX_MSG
+#elif PACKETVER >= 20080102
+packetLen(0x02a6, 22) // ZC_HACKSH_CPX_MSG
+#endif
+
+// Packet: 0x02a7
+#if PACKETVER >= 20080122
+// removed
+#elif PACKETVER >= 20080108
+packetLen(0x02a7, 204) // CZ_HACKSH_CPX_MSG
+#elif PACKETVER >= 20080102
+packetLen(0x02a7, 22) // CZ_HACKSH_CPX_MSG
+#endif
+
+// Packet: 0x02a8
+#if PACKETVER >= 20080108
+// removed
+#elif PACKETVER >= 20080102
+packetLen(0x02a8, 162) // ZC_HACKSHIELD_CRC_MSG
+#endif
+
+// Packet: 0x02a9
+#if PACKETVER >= 20080108
+// removed
+#elif PACKETVER >= 20080102
+packetLen(0x02a9, 58) // CZ_HACKSHIELD_CRC_MSG
+#endif
+
+// Packet: 0x02aa
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+
+// Packet: 0x02ab
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+
+// Packet: 0x02ac
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+
+// Packet: 0x02ad
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+
+// Packet: 0x02b0
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+
+// Packet: 0x02b1
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+
+// Packet: 0x02b2
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+
+// Packet: 0x02b3
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+
+// Packet: 0x02b4
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+
+// Packet: 0x02b5
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+
+// Packet: 0x02b6
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+
+// Packet: 0x02b7
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+
+// Packet: 0x02b8
+packetLen(0x02b8, 22) // ZC_ITEM_PICKUP_PARTY
+
+// Packet: 0x02b9
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+
+// Packet: 0x02ba
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+
+// Packet: 0x02bb
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+
+// Packet: 0x02bc
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+
+// Packet: 0x02bf
+#if PACKETVER >= 20080318
+// removed
+#elif PACKETVER >= 20080102
+packetLen(0x02bf, 10) // ZC_SRPACKETR2_INIT
+#endif
+
+// Packet: 0x02c0
+#if PACKETVER >= 20080318
+// removed
+#elif PACKETVER >= 20080102
+packetLen(0x02c0, 2) // CZ_SRPACKETR2_START
+#endif
+
+// Packet: 0x02c1
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+
+// Packet: 0x02c2
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+
+// Packet: 0x02c4
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+
+// Packet: 0x02c5
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c6
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+
+// Packet: 0x02c7
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c8
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+
+// Packet: 0x02c9
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+
+// Packet: 0x02ca
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+
+// Packet: 0x02cb
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+
+// Packet: 0x02cc
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+
+// Packet: 0x02cd
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+
+// Packet: 0x02ce
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+
+// Packet: 0x02cf
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+
+// Packet: 0x02d0
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d1
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d2
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d3
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+
+// Packet: 0x02d4
+#if PACKETVER >= 20080304
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+#elif PACKETVER >= 20080226
+packetLen(0x02d4, 30) // ZC_ITEM_PICKUP_ACK3
+#elif PACKETVER >= 20080102
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+#endif
+
+// Packet: 0x02d5
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+
+// Packet: 0x02d6
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d7
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d8
+packetLen(0x02d8, 10) // CZ_CONFIG
+
+// Packet: 0x02d9
+packetLen(0x02d9, 10) // ZC_CONFIG
+
+// Packet: 0x02da
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+
+// Packet: 0x02db
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+
+// Packet: 0x02dc
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+
+// Packet: 0x02dd
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+
+// Packet: 0x02de
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+
+// Packet: 0x02df
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+
+// Packet: 0x02e0
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+
+// Packet: 0x02e1
+#if PACKETVER >= 20080618
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x02e1, 32) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20080102
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+#endif
+
+// Packet: 0x02e2
+packetLen(0x02e2, 14) // CZ_USE_ITEM_NEW_JAPEN
+
+// Packet: 0x02e3
+packetLen(0x02e3, 25) // CZ_USE_SKILL_NEW_JAPEN
+
+// Packet: 0x02e4
+packetLen(0x02e4, 8) // CZ_ITEM_PICKUP_NEW_JAPEN
+
+// Packet: 0x02e5
+packetLen(0x02e5, 8) // CZ_REQUEST_MOVE_NEW_JAPEN
+
+// Packet: 0x02e6
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+
+// Packet: 0x02e7
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+
+// Packet: 0x02e8
+packetLen(0x02e8, -1) // ZC_NORMAL_ITEMLIST3
+
+// Packet: 0x02e9
+packetLen(0x02e9, -1) // ZC_CART_NORMAL_ITEMLIST3
+
+// Packet: 0x02ea
+packetLen(0x02ea, -1) // ZC_STORE_NORMAL_ITEMLIST3
+
+// Packet: 0x02eb
+packetLen(0x02eb, 13) // ZC_ACCEPT_ENTER2
+
+// Packet: 0x02ec
+#if PACKETVER >= 20080618
+packetLen(0x02ec, 67) // ZC_NOTIFY_MOVEENTRY4
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x02ec, 2) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20080102
+packetLen(0x02ec, 67) // ZC_NOTIFY_MOVEENTRY4
+#endif
+
+// Packet: 0x02ed
+#if PACKETVER >= 20080618
+packetLen(0x02ed, 59) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080610
+packetLen(0x02ed, 60) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20080102
+packetLen(0x02ed, 59) // ZC_NOTIFY_NEWENTRY4
+#endif
+
+// Packet: 0x02ee
+#if PACKETVER >= 20080618
+packetLen(0x02ee, 60) // ZC_NOTIFY_STANDENTRY4
+// ignored packet from 2008-06-18aSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x02ee, 3) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20080102
+packetLen(0x02ee, 60) // ZC_NOTIFY_STANDENTRY4
+#endif
+
+// Packet: 0x02ef
+packetLen(0x02ef, 8) // ZC_NOTIFY_FONT
+
+// Packet: 0x02f0
+#if PACKETVER >= 20080318
+packetLen(0x02f0, 10) // ZC_PROGRESS
+#endif
+
+// Packet: 0x02f1
+#if PACKETVER >= 20080318
+packetLen(0x02f1, 2) // CZ_PROGRESS
+#endif
+
+// Packet: 0x02f2
+#if PACKETVER >= 20080318
+packetLen(0x02f2, 2) // ZC_PROGRESS_CANCEL
+#endif
+
+// Packet: 0x02f3
+#if PACKETVER >= 20080325
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+#endif
+
+// Packet: 0x02f4
+#if PACKETVER >= 20080618
+packetLen(0x02f4, -1) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20080610
+packetLen(0x02f4, 282) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20080325
+packetLen(0x02f4, -1) // ZC_IRMAIL_SEND_RES
+#endif
+
+// Packet: 0x02f5
+#if PACKETVER >= 20080618
+packetLen(0x02f5, 26) // ZC_IRMAIL_NOTIFY
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080325
+packetLen(0x02f5, -1) // ZC_IRMAIL_NOTIFY
+#endif
+
+// Packet: 0x02f6
+#if PACKETVER >= 20080618
+packetLen(0x02f6, -1) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080610
+packetLen(0x02f6, 3) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20080325
+packetLen(0x02f6, -1) // CZ_IRMAIL_LIST
+#endif
+
+// Packet: 0x02f7
+#if PACKETVER >= 20080618
+packetLen(0x02f7, 26)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080325
+packetLen(0x02f7, -1)
+#endif
+
+// Packet: 0x02f8
+#if PACKETVER >= 20080618
+packetLen(0x02f8, 3)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080325
+packetLen(0x02f8, -1)
+#endif
+
+// Packet: 0x02f9
+#if PACKETVER >= 20080618
+packetLen(0x02f9, 2)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080325
+packetLen(0x02f9, -1)
+#endif
+
+// Packet: 0x02fa
+#if PACKETVER >= 20080325
+packetLen(0x02fa, -1)
+#endif
+
+// Packet: 0x02fb
+#if PACKETVER >= 20080618
+packetLen(0x02fb, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x02fb, 2)
+#elif PACKETVER >= 20080325
+packetLen(0x02fb, -1)
+#endif
+
+// Packet: 0x02fc
+#if PACKETVER >= 20080618
+packetLen(0x02fc, 5)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x02fc, 4)
+#elif PACKETVER >= 20080325
+packetLen(0x02fc, -1)
+#endif
+
+// Packet: 0x02fd
+#if PACKETVER >= 20080325
+packetLen(0x02fd, -1)
+#endif
+
+// Packet: 0x02fe
+#if PACKETVER >= 20080325
+packetLen(0x02fe, -1)
+#endif
+
+// Packet: 0x02ff
+#if PACKETVER >= 20080618
+packetLen(0x02ff, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x02ff, 30)
+#elif PACKETVER >= 20080325
+packetLen(0x02ff, -1)
+#endif
+
+// Packet: 0x0300
+#if PACKETVER >= 20080618
+packetLen(0x0300, 16)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080325
+packetLen(0x0300, -1)
+#endif
+
+// Packet: 0x0301
+#if PACKETVER >= 20080401
+packetLen(0x0301, -1)
+#endif
+
+// Packet: 0x0302
+#if PACKETVER >= 20080618
+packetLen(0x0302, 3)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0302, 30)
+#elif PACKETVER >= 20080401
+packetLen(0x0302, -1)
+#endif
+
+// Packet: 0x0303
+#if PACKETVER >= 20080618
+packetLen(0x0303, 30)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0303, 8)
+#elif PACKETVER >= 20080401
+packetLen(0x0303, -1)
+#endif
+
+// Packet: 0x0304
+#if PACKETVER >= 20080618
+packetLen(0x0304, 20)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080401
+packetLen(0x0304, -1)
+#endif
+
+// Packet: 0x0305
+#if PACKETVER >= 20080618
+packetLen(0x0305, 4)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080401
+packetLen(0x0305, -1)
+#endif
+
+// Packet: 0x0306
+#if PACKETVER >= 20080618
+packetLen(0x0306, 6)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0306, 8)
+#elif PACKETVER >= 20080401
+packetLen(0x0306, -1)
+#endif
+
+// Packet: 0x0307
+#if PACKETVER >= 20080618
+packetLen(0x0307, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0307, 30)
+#elif PACKETVER >= 20080401
+packetLen(0x0307, -1)
+#endif
+
+// Packet: 0x0308
+#if PACKETVER >= 20080618
+packetLen(0x0308, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0308, 17)
+#elif PACKETVER >= 20080401
+packetLen(0x0308, -1)
+#endif
+
+// Packet: 0x0309
+#if PACKETVER >= 20080401
+packetLen(0x0309, -1)
+#endif
+
+// Packet: 0x030a
+#if PACKETVER >= 20080618
+packetLen(0x030a, 35)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080401
+packetLen(0x030a, -1)
+#endif
+
+// Packet: 0x030b
+#if PACKETVER >= 20080618
+packetLen(0x030b, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x030b, 7)
+#elif PACKETVER >= 20080401
+packetLen(0x030b, -1)
+#endif
+
+// Packet: 0x030c
+#if PACKETVER >= 20080618
+packetLen(0x030c, 6)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x030c, 7)
+#elif PACKETVER >= 20080401
+packetLen(0x030c, -1)
+#endif
+
+// Packet: 0x030d
+#if PACKETVER >= 20080618
+packetLen(0x030d, 282)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080401
+packetLen(0x030d, -1)
+#endif
+
+// Packet: 0x030e
+#if PACKETVER >= 20080401
+packetLen(0x030e, -1)
+#endif
+
+// Packet: 0x030f
+#if PACKETVER >= 20080618
+packetLen(0x030f, 10)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080401
+packetLen(0x030f, -1)
+#endif
+
+// Packet: 0x0310
+#if PACKETVER >= 20080618
+packetLen(0x0310, 16)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0310, 6)
+#elif PACKETVER >= 20080401
+packetLen(0x0310, -1)
+#endif
+
+// Packet: 0x0311
+#if PACKETVER >= 20080618
+packetLen(0x0311, 6)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0311, 17)
+#elif PACKETVER >= 20080401
+packetLen(0x0311, -1)
+#endif
+
+// Packet: 0x0312
+#if PACKETVER >= 20080618
+packetLen(0x0312, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0312, 11)
+#elif PACKETVER >= 20080401
+packetLen(0x0312, -1)
+#endif
+
+// Packet: 0x0313
+#if PACKETVER >= 20080618
+packetLen(0x0313, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0313, 16)
+#elif PACKETVER >= 20080401
+packetLen(0x0313, -1)
+#endif
+
+// Packet: 0x0314
+#if PACKETVER >= 20080618
+packetLen(0x0314, 3)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0314, 29)
+#elif PACKETVER >= 20080401
+packetLen(0x0314, -1)
+#endif
+
+// Packet: 0x0315
+#if PACKETVER >= 20080618
+packetLen(0x0315, 8)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0315, 9)
+#elif PACKETVER >= 20080401
+packetLen(0x0315, -1)
+#endif
+
+// Packet: 0x0316
+#if PACKETVER >= 20080401
+packetLen(0x0316, -1)
+#endif
+
+// Packet: 0x0317
+#if PACKETVER >= 20080618
+packetLen(0x0317, 4)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0317, 8)
+#elif PACKETVER >= 20080401
+packetLen(0x0317, -1)
+#endif
+
+// Packet: 0x0318
+#if PACKETVER >= 20080618
+packetLen(0x0318, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0318, 54)
+#elif PACKETVER >= 20080401
+packetLen(0x0318, -1)
+#endif
+
+// Packet: 0x0319
+#if PACKETVER >= 20080401
+packetLen(0x0319, -1)
+#endif
+
+// Packet: 0x031a
+#if PACKETVER >= 20080618
+packetLen(0x031a, 5)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080401
+packetLen(0x031a, -1)
+#endif
+
+// Packet: 0x031b
+#if PACKETVER >= 20080618
+packetLen(0x031b, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x031b, 23)
+#elif PACKETVER >= 20080401
+packetLen(0x031b, -1)
+#endif
+
+// Packet: 0x031c
+#if PACKETVER >= 20080618
+packetLen(0x031c, 54)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x031c, 29)
+#elif PACKETVER >= 20080401
+packetLen(0x031c, -1)
+#endif
+
+// Packet: 0x031d
+#if PACKETVER >= 20080401
+packetLen(0x031d, -1)
+#endif
+
+// Packet: 0x031e
+#if PACKETVER >= 20080401
+packetLen(0x031e, -1)
+#endif
+
+// Packet: 0x031f
+#if PACKETVER >= 20080401
+packetLen(0x031f, -1)
+#endif
+
+// Packet: 0x0320
+#if PACKETVER >= 20080618
+packetLen(0x0320, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0320, 6)
+#elif PACKETVER >= 20080401
+packetLen(0x0320, -1)
+#endif
+
+// Packet: 0x0321
+#if PACKETVER >= 20080618
+packetLen(0x0321, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0321, 5)
+#elif PACKETVER >= 20080401
+packetLen(0x0321, -1)
+#endif
+
+// Packet: 0x0322
+#if PACKETVER >= 20080618
+packetLen(0x0322, 4)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0322, 3)
+#elif PACKETVER >= 20080401
+packetLen(0x0322, -1)
+#endif
+
+// Packet: 0x0323
+#if PACKETVER >= 20080618
+packetLen(0x0323, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0323, 10)
+#elif PACKETVER >= 20080401
+packetLen(0x0323, -1)
+#endif
+
+// Packet: 0x0324
+#if PACKETVER >= 20080618
+packetLen(0x0324, 66)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0324, 10)
+#elif PACKETVER >= 20080401
+packetLen(0x0324, -1)
+#endif
+
+// Packet: 0x0325
+#if PACKETVER >= 20080618
+packetLen(0x0325, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0325, 10)
+#elif PACKETVER >= 20080401
+packetLen(0x0325, -1)
+#endif
+
+// Packet: 0x0326
+#if PACKETVER >= 20080401
+packetLen(0x0326, -1)
+#endif
+
+// Packet: 0x0327
+#if PACKETVER >= 20080618
+packetLen(0x0327, 3)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0327, 22)
+#elif PACKETVER >= 20080401
+packetLen(0x0327, -1)
+#endif
+
+// Packet: 0x0328
+#if PACKETVER >= 20080618
+packetLen(0x0328, 6)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0328, 2)
+#elif PACKETVER >= 20080401
+packetLen(0x0328, -1)
+#endif
+
+// Packet: 0x0329
+#if PACKETVER >= 20080401
+packetLen(0x0329, -1)
+#endif
+
+// Packet: 0x032a
+#if PACKETVER >= 20080618
+packetLen(0x032a, 9)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x032a, 3)
+#elif PACKETVER >= 20080401
+packetLen(0x032a, -1)
+#endif
+
+// Packet: 0x032b
+#if PACKETVER >= 20080618
+packetLen(0x032b, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x032b, 10)
+#elif PACKETVER >= 20080401
+packetLen(0x032b, -1)
+#endif
+
+// Packet: 0x032c
+#if PACKETVER >= 20080618
+packetLen(0x032c, 2)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080401
+packetLen(0x032c, -1)
+#endif
+
+// Packet: 0x032d
+#if PACKETVER >= 20080618
+packetLen(0x032d, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x032d, 10)
+#elif PACKETVER >= 20080401
+packetLen(0x032d, -1)
+#endif
+
+// Packet: 0x032e
+#if PACKETVER >= 20080618
+packetLen(0x032e, 10)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x032e, 3)
+#elif PACKETVER >= 20080401
+packetLen(0x032e, -1)
+#endif
+
+// Packet: 0x032f
+#if PACKETVER >= 20080618
+packetLen(0x032f, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x032f, 3)
+#elif PACKETVER >= 20080401
+packetLen(0x032f, -1)
+#endif
+
+// Packet: 0x0330
+#if PACKETVER >= 20080618
+packetLen(0x0330, 8)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080401
+packetLen(0x0330, -1)
+#endif
+
+// Packet: 0x0331
+#if PACKETVER >= 20080401
+packetLen(0x0331, -1)
+#endif
+
+// Packet: 0x0332
+#if PACKETVER >= 20080618
+packetLen(0x0332, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0332, 6)
+#elif PACKETVER >= 20080401
+packetLen(0x0332, -1)
+#endif
+
+// Packet: 0x0333
+#if PACKETVER >= 20080401
+packetLen(0x0333, -1)
+#endif
+
+// Packet: 0x0334
+#if PACKETVER >= 20080618
+packetLen(0x0334, 2)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0334, 3)
+#elif PACKETVER >= 20080401
+packetLen(0x0334, -1)
+#endif
+
+// Packet: 0x0335
+#if PACKETVER >= 20080618
+packetLen(0x0335, 22)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080401
+packetLen(0x0335, -1)
+#endif
+
+// Packet: 0x0336
+#if PACKETVER >= 20080618
+packetLen(0x0336, 30)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0336, 10)
+#elif PACKETVER >= 20080401
+packetLen(0x0336, -1)
+#endif
+
+// Packet: 0x0337
+#if PACKETVER >= 20080618
+packetLen(0x0337, 2)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080401
+packetLen(0x0337, -1)
+#endif
+
+// Packet: 0x0338
+#if PACKETVER >= 20080618
+packetLen(0x0338, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0338, 5)
+#elif PACKETVER >= 20080401
+packetLen(0x0338, -1)
+#endif
+
+// Packet: 0x0339
+#if PACKETVER >= 20080401
+packetLen(0x0339, -1)
+#endif
+
+// Packet: 0x033a
+#if PACKETVER >= 20080401
+packetLen(0x033a, -1)
+#endif
+
+// Packet: 0x033b
+#if PACKETVER >= 20080618
+packetLen(0x033b, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x033b, 6)
+#elif PACKETVER >= 20080401
+packetLen(0x033b, -1)
+#endif
+
+// Packet: 0x033c
+#if PACKETVER >= 20080618
+packetLen(0x033c, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x033c, 30)
+#elif PACKETVER >= 20080401
+packetLen(0x033c, -1)
+#endif
+
+// Packet: 0x033d
+#if PACKETVER >= 20080618
+packetLen(0x033d, 28)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080401
+packetLen(0x033d, -1)
+#endif
+
+// Packet: 0x033e
+#if PACKETVER >= 20080401
+packetLen(0x033e, -1)
+#endif
+
+// Packet: 0x033f
+#if PACKETVER >= 20080618
+packetLen(0x033f, 3)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x033f, 2)
+#elif PACKETVER >= 20080401
+packetLen(0x033f, -1)
+#endif
+
+// Packet: 0x0340
+#if PACKETVER >= 20080618
+packetLen(0x0340, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0340, 29)
+#elif PACKETVER >= 20080401
+packetLen(0x0340, -1)
+#endif
+
+// Packet: 0x0341
+#if PACKETVER >= 20080618
+packetLen(0x0341, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0341, 186)
+#elif PACKETVER >= 20080401
+packetLen(0x0341, -1)
+#endif
+
+// Packet: 0x0342
+#if PACKETVER >= 20080401
+packetLen(0x0342, -1)
+#endif
+
+// Packet: 0x0343
+#if PACKETVER >= 20080401
+packetLen(0x0343, -1)
+#endif
+
+// Packet: 0x0344
+#if PACKETVER >= 20080401
+packetLen(0x0344, -1)
+#endif
+
+// Packet: 0x0345
+#if PACKETVER >= 20080401
+packetLen(0x0345, -1)
+#endif
+
+// Packet: 0x0346
+#if PACKETVER >= 20080618
+packetLen(0x0346, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0346, 23)
+#elif PACKETVER >= 20080401
+packetLen(0x0346, -1)
+#endif
+
+// Packet: 0x0347
+#if PACKETVER >= 20080618
+packetLen(0x0347, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0347, 4)
+#elif PACKETVER >= 20080401
+packetLen(0x0347, -1)
+#endif
+
+// Packet: 0x0348
+#if PACKETVER >= 20080618
+packetLen(0x0348, 3)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080401
+packetLen(0x0348, -1)
+#endif
+
+// Packet: 0x0349
+#if PACKETVER >= 20080618
+packetLen(0x0349, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0349, 6)
+#elif PACKETVER >= 20080401
+packetLen(0x0349, -1)
+#endif
+
+// Packet: 0x034a
+#if PACKETVER >= 20080618
+packetLen(0x034a, 10)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x034a, 4)
+#elif PACKETVER >= 20080401
+packetLen(0x034a, -1)
+#endif
+
+// Packet: 0x034b
+#if PACKETVER >= 20080618
+packetLen(0x034b, 26)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x034b, 36)
+#elif PACKETVER >= 20080401
+packetLen(0x034b, -1)
+#endif
+
+// Packet: 0x034c
+#if PACKETVER >= 20080618
+packetLen(0x034c, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x034c, 5)
+#elif PACKETVER >= 20080401
+packetLen(0x034c, -1)
+#endif
+
+// Packet: 0x034d
+#if PACKETVER >= 20080618
+packetLen(0x034d, 2)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x034d, 4)
+#elif PACKETVER >= 20080401
+packetLen(0x034d, -1)
+#endif
+
+// Packet: 0x034e
+#if PACKETVER >= 20080618
+packetLen(0x034e, 2)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080401
+packetLen(0x034e, -1)
+#endif
+
+// Packet: 0x034f
+#if PACKETVER >= 20080401
+packetLen(0x034f, -1)
+#endif
+
+// Packet: 0x0350
+#if PACKETVER >= 20080618
+packetLen(0x0350, 4)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0350, 10)
+#elif PACKETVER >= 20080401
+packetLen(0x0350, -1)
+#endif
+
+// Packet: 0x0351
+#if PACKETVER >= 20080618
+packetLen(0x0351, 30)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080401
+packetLen(0x0351, -1)
+#endif
+
+// Packet: 0x0352
+#if PACKETVER >= 20080618
+packetLen(0x0352, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0352, 4)
+#elif PACKETVER >= 20080401
+packetLen(0x0352, -1)
+#endif
+
+// Packet: 0x0353
+#if PACKETVER >= 20080401
+packetLen(0x0353, -1)
+#endif
+
+// Packet: 0x0354
+#if PACKETVER >= 20080618
+packetLen(0x0354, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0354, 68)
+#elif PACKETVER >= 20080401
+packetLen(0x0354, -1)
+#endif
+
+// Packet: 0x0355
+#if PACKETVER >= 20080618
+packetLen(0x0355, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0355, 26)
+#elif PACKETVER >= 20080401
+packetLen(0x0355, -1)
+#endif
+
+// Packet: 0x0356
+#if PACKETVER >= 20080618
+packetLen(0x0356, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0356, 20)
+#elif PACKETVER >= 20080401
+packetLen(0x0356, -1)
+#endif
+
+// Packet: 0x0357
+#if PACKETVER >= 20080401
+packetLen(0x0357, -1)
+#endif
+
+// Packet: 0x0358
+#if PACKETVER >= 20080618
+packetLen(0x0358, 14)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0358, 7)
+#elif PACKETVER >= 20080401
+packetLen(0x0358, -1)
+#endif
+
+// Packet: 0x0359
+#if PACKETVER >= 20080618
+packetLen(0x0359, 2)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0359, 43)
+#elif PACKETVER >= 20080401
+packetLen(0x0359, -1)
+#endif
+
+// Packet: 0x035a
+#if PACKETVER >= 20080618
+packetLen(0x035a, 28)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080401
+packetLen(0x035a, -1)
+#endif
+
+// Packet: 0x035b
+#if PACKETVER >= 20080618
+packetLen(0x035b, 29)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080401
+packetLen(0x035b, -1)
+#endif
+
+// Packet: 0x035c
+#if PACKETVER >= 20080527
+packetLen(0x035c, 2) // CZ_OPEN_SIMPLE_CASHSHOP_ITEMLIST
+#endif
+
+// Packet: 0x035d
+#if PACKETVER >= 20080527
+packetLen(0x035d, -1) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+#endif
+
+// Packet: 0x035e
+#if PACKETVER >= 20080527
+packetLen(0x035e, 2) // CZ_CLOSE_WINDOW
+#endif
+
+// Packet: 0x035f
+#if PACKETVER >= 20080618
+packetLen(0x035f, 4) // CZ_REQUEST_MOVE2
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x035f, 7) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20080527
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+#endif
+
+// Packet: 0x0360
+#if PACKETVER >= 20080618
+packetLen(0x0360, -1) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20080610
+packetLen(0x0360, 57) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20080527
+packetLen(0x0360, -1) // CZ_REQUEST_TIME2
+#endif
+
+// Packet: 0x0361
+#if PACKETVER >= 20080618
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0361, 65) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20080527
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#endif
+
+// Packet: 0x0362
+#if PACKETVER >= 20080527
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#endif
+
+// Packet: 0x0363
+#if PACKETVER >= 20080618
+packetLen(0x0363, 58) // CZ_ITEM_THROW2
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x0363, -1) // CZ_ITEM_THROW2
+#endif
+
+// Packet: 0x0364
+#if PACKETVER >= 20080618
+packetLen(0x0364, 15) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20080527
+packetLen(0x0364, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#endif
+
+// Packet: 0x0365
+#if PACKETVER >= 20080618
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20080610
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20080527
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#endif
+
+// Packet: 0x0366
+#if PACKETVER >= 20080527
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#endif
+
+// Packet: 0x0367
+#if PACKETVER >= 20080618
+packetLen(0x0367, 29) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#endif
+
+// Packet: 0x0368
+#if PACKETVER >= 20080618
+packetLen(0x0368, -1) // CZ_REQNAME2
+#elif PACKETVER >= 20080610
+packetLen(0x0368, 7) // CZ_REQNAME2
+#elif PACKETVER >= 20080527
+packetLen(0x0368, -1) // CZ_REQNAME2
+#endif
+
+// Packet: 0x0369
+#if PACKETVER >= 20080618
+packetLen(0x0369, -1) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20080610
+packetLen(0x0369, 14) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20080527
+packetLen(0x0369, -1) // CZ_REQNAME_BYGID2
+#endif
+
+// Packet: 0x036a
+#if PACKETVER >= 20080527
+packetLen(0x036a, -1)
+#endif
+
+// Packet: 0x036b
+#if PACKETVER >= 20080618
+packetLen(0x036b, 28)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x036b, -1)
+#endif
+
+// Packet: 0x036c
+#if PACKETVER >= 20080618
+packetLen(0x036c, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x036c, 4)
+#elif PACKETVER >= 20080527
+packetLen(0x036c, -1)
+#endif
+
+// Packet: 0x036d
+#if PACKETVER >= 20080618
+packetLen(0x036d, 6)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x036d, 2)
+#elif PACKETVER >= 20080527
+packetLen(0x036d, -1)
+#endif
+
+// Packet: 0x036e
+#if PACKETVER >= 20080618
+packetLen(0x036e, 3)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x036e, -1)
+#endif
+
+// Packet: 0x036f
+#if PACKETVER >= 20080527
+packetLen(0x036f, -1)
+#endif
+
+// Packet: 0x0370
+#if PACKETVER >= 20080618
+packetLen(0x0370, 10)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x0370, -1)
+#endif
+
+// Packet: 0x0371
+#if PACKETVER >= 20080527
+packetLen(0x0371, -1)
+#endif
+
+// Packet: 0x0372
+#if PACKETVER >= 20080618
+packetLen(0x0372, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0372, 5)
+#elif PACKETVER >= 20080527
+packetLen(0x0372, -1)
+#endif
+
+// Packet: 0x0373
+#if PACKETVER >= 20080527
+packetLen(0x0373, -1)
+#endif
+
+// Packet: 0x0374
+#if PACKETVER >= 20080527
+packetLen(0x0374, -1)
+#endif
+
+// Packet: 0x0375
+#if PACKETVER >= 20080618
+packetLen(0x0375, 2)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x0375, -1)
+#endif
+
+// Packet: 0x0376
+#if PACKETVER >= 20080618
+packetLen(0x0376, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0376, 20)
+#elif PACKETVER >= 20080527
+packetLen(0x0376, -1)
+#endif
+
+// Packet: 0x0377
+#if PACKETVER >= 20080527
+packetLen(0x0377, -1)
+#endif
+
+// Packet: 0x0378
+#if PACKETVER >= 20080618
+packetLen(0x0378, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0378, 3)
+#elif PACKETVER >= 20080527
+packetLen(0x0378, -1)
+#endif
+
+// Packet: 0x0379
+#if PACKETVER >= 20080618
+packetLen(0x0379, 2)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0379, 60)
+#elif PACKETVER >= 20080527
+packetLen(0x0379, -1)
+#endif
+
+// Packet: 0x037a
+#if PACKETVER >= 20080618
+packetLen(0x037a, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x037a, 6)
+#elif PACKETVER >= 20080527
+packetLen(0x037a, -1)
+#endif
+
+// Packet: 0x037b
+#if PACKETVER >= 20080618
+packetLen(0x037b, 11)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x037b, 6)
+#elif PACKETVER >= 20080527
+packetLen(0x037b, -1)
+#endif
+
+// Packet: 0x037c
+#if PACKETVER >= 20080618
+packetLen(0x037c, 53)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x037c, -1)
+#endif
+
+// Packet: 0x037d
+#if PACKETVER >= 20080527
+packetLen(0x037d, -1)
+#endif
+
+// Packet: 0x037e
+#if PACKETVER >= 20080618
+packetLen(0x037e, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x037e, 2)
+#elif PACKETVER >= 20080527
+packetLen(0x037e, -1)
+#endif
+
+// Packet: 0x037f
+#if PACKETVER >= 20080618
+packetLen(0x037f, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x037f, 282)
+#elif PACKETVER >= 20080527
+packetLen(0x037f, -1)
+#endif
+
+// Packet: 0x0380
+#if PACKETVER >= 20080618
+packetLen(0x0380, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0380, 4)
+#elif PACKETVER >= 20080527
+packetLen(0x0380, -1)
+#endif
+
+// Packet: 0x0381
+#if PACKETVER >= 20080618
+packetLen(0x0381, 14)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x0381, -1)
+#endif
+
+// Packet: 0x0382
+#if PACKETVER >= 20080618
+packetLen(0x0382, 2)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0382, 15)
+#elif PACKETVER >= 20080527
+packetLen(0x0382, -1)
+#endif
+
+// Packet: 0x0383
+#if PACKETVER >= 20080618
+packetLen(0x0383, 5)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x0383, -1)
+#endif
+
+// Packet: 0x0384
+#if PACKETVER >= 20080527
+packetLen(0x0384, -1)
+#endif
+
+// Packet: 0x0385
+#if PACKETVER >= 20080618
+packetLen(0x0385, 4)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0385, 30)
+#elif PACKETVER >= 20080527
+packetLen(0x0385, -1)
+#endif
+
+// Packet: 0x0386
+#if PACKETVER >= 20080618
+packetLen(0x0386, 6)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0386, 26)
+#elif PACKETVER >= 20080527
+packetLen(0x0386, -1)
+#endif
+
+// Packet: 0x0387
+#if PACKETVER >= 20080618
+packetLen(0x0387, 21)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0387, 4)
+#elif PACKETVER >= 20080527
+packetLen(0x0387, -1)
+#endif
+
+// Packet: 0x0388
+#if PACKETVER >= 20080618
+packetLen(0x0388, 22)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x0388, -1)
+#endif
+
+// Packet: 0x0389
+#if PACKETVER >= 20080618
+packetLen(0x0389, 4)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x0389, -1)
+#endif
+
+// Packet: 0x038a
+#if PACKETVER >= 20080618
+packetLen(0x038a, 6)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x038a, 14)
+#elif PACKETVER >= 20080527
+packetLen(0x038a, -1)
+#endif
+
+// Packet: 0x038b
+#if PACKETVER >= 20080618
+packetLen(0x038b, 4)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x038b, -1)
+#endif
+
+// Packet: 0x038c
+#if PACKETVER >= 20080618
+packetLen(0x038c, 8)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x038c, -1)
+#endif
+
+// Packet: 0x038d
+#if PACKETVER >= 20080618
+packetLen(0x038d, 8)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x038d, -1)
+#endif
+
+// Packet: 0x038e
+#if PACKETVER >= 20080527
+packetLen(0x038e, -1)
+#endif
+
+// Packet: 0x038f
+#if PACKETVER >= 20080618
+packetLen(0x038f, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x038f, 71)
+#elif PACKETVER >= 20080527
+packetLen(0x038f, -1)
+#endif
+
+// Packet: 0x0390
+#if PACKETVER >= 20080527
+packetLen(0x0390, -1)
+#endif
+
+// Packet: 0x0391
+#if PACKETVER >= 20080618
+packetLen(0x0391, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x0391, 5)
+#elif PACKETVER >= 20080527
+packetLen(0x0391, -1)
+#endif
+
+// Packet: 0x0392
+#if PACKETVER >= 20080618
+packetLen(0x0392, 26)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0392, 2)
+#elif PACKETVER >= 20080527
+packetLen(0x0392, -1)
+#endif
+
+// Packet: 0x0393
+#if PACKETVER >= 20080618
+packetLen(0x0393, 14)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x0393, -1)
+#endif
+
+// Packet: 0x0394
+#if PACKETVER >= 20080527
+packetLen(0x0394, -1)
+#endif
+
+// Packet: 0x0395
+#if PACKETVER >= 20080618
+packetLen(0x0395, 3)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0395, 11)
+#elif PACKETVER >= 20080527
+packetLen(0x0395, -1)
+#endif
+
+// Packet: 0x0396
+#if PACKETVER >= 20080618
+packetLen(0x0396, 33)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x0396, -1)
+#endif
+
+// Packet: 0x0397
+#if PACKETVER >= 20080527
+packetLen(0x0397, -1)
+#endif
+
+// Packet: 0x0398
+#if PACKETVER >= 20080618
+packetLen(0x0398, 282)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x0398, 4)
+#elif PACKETVER >= 20080527
+packetLen(0x0398, -1)
+#endif
+
+// Packet: 0x0399
+#if PACKETVER >= 20080527
+packetLen(0x0399, -1)
+#endif
+
+// Packet: 0x039a
+#if PACKETVER >= 20080618
+packetLen(0x039a, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x039a, 3)
+#elif PACKETVER >= 20080527
+packetLen(0x039a, -1)
+#endif
+
+// Packet: 0x039b
+#if PACKETVER >= 20080618
+packetLen(0x039b, 6)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x039b, -1)
+#endif
+
+// Packet: 0x039c
+#if PACKETVER >= 20080618
+packetLen(0x039c, 26)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x039c, -1)
+#endif
+
+// Packet: 0x039d
+#if PACKETVER >= 20080618
+packetLen(0x039d, 7)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x039d, 8)
+#elif PACKETVER >= 20080527
+packetLen(0x039d, -1)
+#endif
+
+// Packet: 0x039e
+#if PACKETVER >= 20080618
+packetLen(0x039e, 10)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x039e, 5)
+#elif PACKETVER >= 20080527
+packetLen(0x039e, -1)
+#endif
+
+// Packet: 0x039f
+#if PACKETVER >= 20080618
+packetLen(0x039f, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x039f, 14)
+#elif PACKETVER >= 20080527
+packetLen(0x039f, -1)
+#endif
+
+// Packet: 0x03a0
+#if PACKETVER >= 20080618
+packetLen(0x03a0, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x03a0, 2)
+#elif PACKETVER >= 20080527
+packetLen(0x03a0, -1)
+#endif
+
+// Packet: 0x03a1
+#if PACKETVER >= 20080527
+packetLen(0x03a1, -1)
+#endif
+
+// Packet: 0x03a2
+#if PACKETVER >= 20080618
+packetLen(0x03a2, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x03a2, 5)
+#elif PACKETVER >= 20080527
+packetLen(0x03a2, -1)
+#endif
+
+// Packet: 0x03a3
+#if PACKETVER >= 20080618
+packetLen(0x03a3, 8)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x03a3, 58)
+#elif PACKETVER >= 20080527
+packetLen(0x03a3, -1)
+#endif
+
+// Packet: 0x03a4
+#if PACKETVER >= 20080618
+packetLen(0x03a4, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x03a4, 6)
+#elif PACKETVER >= 20080527
+packetLen(0x03a4, -1)
+#endif
+
+// Packet: 0x03a5
+#if PACKETVER >= 20080618
+packetLen(0x03a5, 5)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x03a5, -1)
+#endif
+
+// Packet: 0x03a6
+#if PACKETVER >= 20080618
+packetLen(0x03a6, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x03a6, 22)
+#elif PACKETVER >= 20080527
+packetLen(0x03a6, -1)
+#endif
+
+// Packet: 0x03a7
+#if PACKETVER >= 20080527
+packetLen(0x03a7, -1)
+#endif
+
+// Packet: 0x03a8
+#if PACKETVER >= 20080618
+packetLen(0x03a8, 4)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x03a8, 28)
+#elif PACKETVER >= 20080527
+packetLen(0x03a8, -1)
+#endif
+
+// Packet: 0x03a9
+#if PACKETVER >= 20080618
+packetLen(0x03a9, 67)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x03a9, 2)
+#elif PACKETVER >= 20080527
+packetLen(0x03a9, -1)
+#endif
+
+// Packet: 0x03aa
+#if PACKETVER >= 20080527
+packetLen(0x03aa, -1)
+#endif
+
+// Packet: 0x03ab
+#if PACKETVER >= 20080618
+packetLen(0x03ab, 14)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x03ab, -1)
+#endif
+
+// Packet: 0x03ac
+#if PACKETVER >= 20080618
+packetLen(0x03ac, 282)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x03ac, -1)
+#endif
+
+// Packet: 0x03ad
+#if PACKETVER >= 20080618
+packetLen(0x03ad, 21)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x03ad, -1)
+#endif
+
+// Packet: 0x03ae
+#if PACKETVER >= 20080618
+packetLen(0x03ae, 57)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x03ae, -1)
+#endif
+
+// Packet: 0x03af
+#if PACKETVER >= 20080618
+packetLen(0x03af, 14)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x03af, 3)
+#elif PACKETVER >= 20080527
+packetLen(0x03af, -1)
+#endif
+
+// Packet: 0x03b0
+#if PACKETVER >= 20080618
+packetLen(0x03b0, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x03b0, 6)
+#elif PACKETVER >= 20080527
+packetLen(0x03b0, -1)
+#endif
+
+// Packet: 0x03b1
+#if PACKETVER >= 20080618
+packetLen(0x03b1, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x03b1, 30)
+#elif PACKETVER >= 20080527
+packetLen(0x03b1, -1)
+#endif
+
+// Packet: 0x03b2
+#if PACKETVER >= 20080618
+packetLen(0x03b2, 6)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x03b2, 81)
+#elif PACKETVER >= 20080527
+packetLen(0x03b2, -1)
+#endif
+
+// Packet: 0x03b3
+#if PACKETVER >= 20080618
+packetLen(0x03b3, 32)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x03b3, 3)
+#elif PACKETVER >= 20080527
+packetLen(0x03b3, -1)
+#endif
+
+// Packet: 0x03b4
+#if PACKETVER >= 20080618
+packetLen(0x03b4, 29)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x03b4, -1)
+#endif
+
+// Packet: 0x03b5
+#if PACKETVER >= 20080618
+packetLen(0x03b5, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x03b5, 11)
+#elif PACKETVER >= 20080527
+packetLen(0x03b5, -1)
+#endif
+
+// Packet: 0x03b6
+#if PACKETVER >= 20080618
+packetLen(0x03b6, 114)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x03b6, 9)
+#elif PACKETVER >= 20080527
+packetLen(0x03b6, -1)
+#endif
+
+// Packet: 0x03b7
+#if PACKETVER >= 20080618
+packetLen(0x03b7, 8)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x03b7, 2)
+#elif PACKETVER >= 20080527
+packetLen(0x03b7, -1)
+#endif
+
+// Packet: 0x03b8
+#if PACKETVER >= 20080618
+packetLen(0x03b8, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x03b8, 31)
+#elif PACKETVER >= 20080527
+packetLen(0x03b8, -1)
+#endif
+
+// Packet: 0x03b9
+#if PACKETVER >= 20080527
+packetLen(0x03b9, -1)
+#endif
+
+// Packet: 0x03ba
+#if PACKETVER >= 20080618
+packetLen(0x03ba, 26)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x03ba, 33)
+#elif PACKETVER >= 20080527
+packetLen(0x03ba, -1)
+#endif
+
+// Packet: 0x03bb
+#if PACKETVER >= 20080527
+packetLen(0x03bb, -1)
+#endif
+
+// Packet: 0x03bc
+#if PACKETVER >= 20080618
+packetLen(0x03bc, 182)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x03bc, 2)
+#elif PACKETVER >= 20080527
+packetLen(0x03bc, -1)
+#endif
+
+// Packet: 0x03bd
+#if PACKETVER >= 20080527
+packetLen(0x03bd, -1)
+#endif
+
+// Packet: 0x03be
+#if PACKETVER >= 20080527
+packetLen(0x03be, -1)
+#endif
+
+// Packet: 0x03bf
+#if PACKETVER >= 20080527
+packetLen(0x03bf, -1)
+#endif
+
+// Packet: 0x03c0
+#if PACKETVER >= 20080618
+packetLen(0x03c0, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x03c0, 6)
+#elif PACKETVER >= 20080527
+packetLen(0x03c0, -1)
+#endif
+
+// Packet: 0x03c1
+#if PACKETVER >= 20080618
+packetLen(0x03c1, 7)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x03c1, 2)
+#elif PACKETVER >= 20080527
+packetLen(0x03c1, -1)
+#endif
+
+// Packet: 0x03c2
+#if PACKETVER >= 20080618
+packetLen(0x03c2, 67)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x03c2, -1)
+#endif
+
+// Packet: 0x03c3
+#if PACKETVER >= 20080618
+packetLen(0x03c3, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x03c3, 97)
+#elif PACKETVER >= 20080527
+packetLen(0x03c3, -1)
+#endif
+
+// Packet: 0x03c4
+#if PACKETVER >= 20080618
+packetLen(0x03c4, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x03c4, 26)
+#elif PACKETVER >= 20080527
+packetLen(0x03c4, -1)
+#endif
+
+// Packet: 0x03c5
+#if PACKETVER >= 20080618
+packetLen(0x03c5, 2)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x03c5, -1)
+#endif
+
+// Packet: 0x03c6
+#if PACKETVER >= 20080618
+packetLen(0x03c6, 7)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x03c6, 26)
+#elif PACKETVER >= 20080527
+packetLen(0x03c6, -1)
+#endif
+
+// Packet: 0x03c7
+#if PACKETVER >= 20080618
+packetLen(0x03c7, 5)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x03c7, -1)
+#endif
+
+// Packet: 0x03c8
+#if PACKETVER >= 20080527
+packetLen(0x03c8, -1)
+#endif
+
+// Packet: 0x03c9
+#if PACKETVER >= 20080618
+packetLen(0x03c9, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x03c9, 6)
+#elif PACKETVER >= 20080527
+packetLen(0x03c9, -1)
+#endif
+
+// Packet: 0x03ca
+#if PACKETVER >= 20080618
+packetLen(0x03ca, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x03ca, 10)
+#elif PACKETVER >= 20080527
+packetLen(0x03ca, -1)
+#endif
+
+// Packet: 0x03cb
+#if PACKETVER >= 20080618
+packetLen(0x03cb, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x03cb, 8)
+#elif PACKETVER >= 20080527
+packetLen(0x03cb, -1)
+#endif
+
+// Packet: 0x03cc
+#if PACKETVER >= 20080618
+packetLen(0x03cc, 7)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x03cc, -1)
+#endif
+
+// Packet: 0x03cd
+#if PACKETVER >= 20080527
+packetLen(0x03cd, -1)
+#endif
+
+// Packet: 0x03ce
+#if PACKETVER >= 20080618
+packetLen(0x03ce, 39)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x03ce, -1)
+#endif
+
+// Packet: 0x03cf
+#if PACKETVER >= 20080618
+packetLen(0x03cf, 27)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x03cf, -1)
+#endif
+
+// Packet: 0x03d0
+#if PACKETVER >= 20080618
+packetLen(0x03d0, 4)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x03d0, -1)
+#endif
+
+// Packet: 0x03d1
+#if PACKETVER >= 20080618
+packetLen(0x03d1, 7)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x03d1, 8)
+#elif PACKETVER >= 20080527
+packetLen(0x03d1, -1)
+#endif
+
+// Packet: 0x03d2
+#if PACKETVER >= 20080618
+packetLen(0x03d2, 6)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x03d2, -1)
+#endif
+
+// Packet: 0x03d3
+#if PACKETVER >= 20080527
+packetLen(0x03d3, -1)
+#endif
+
+// Packet: 0x03d4
+#if PACKETVER >= 20080618
+packetLen(0x03d4, 27)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x03d4, 182)
+#elif PACKETVER >= 20080527
+packetLen(0x03d4, -1)
+#endif
+
+// Packet: 0x03d5
+#if PACKETVER >= 20080618
+packetLen(0x03d5, 4)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x03d5, 18)
+#elif PACKETVER >= 20080527
+packetLen(0x03d5, -1)
+#endif
+
+// Packet: 0x03d6
+#if PACKETVER >= 20080618
+packetLen(0x03d6, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x03d6, 30)
+#elif PACKETVER >= 20080527
+packetLen(0x03d6, -1)
+#endif
+
+// Packet: 0x03d7
+#if PACKETVER >= 20080527
+packetLen(0x03d7, -1)
+#endif
+
+// Packet: 0x03d8
+#if PACKETVER >= 20080618
+packetLen(0x03d8, 2)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x03d8, -1)
+#endif
+
+// Packet: 0x03d9
+#if PACKETVER >= 20080618
+packetLen(0x03d9, -1)
+#elif PACKETVER >= 20080610
+packetLen(0x03d9, 13)
+#elif PACKETVER >= 20080527
+packetLen(0x03d9, -1)
+#endif
+
+// Packet: 0x03da
+#if PACKETVER >= 20080527
+packetLen(0x03da, -1)
+#endif
+
+// Packet: 0x03db
+#if PACKETVER >= 20080618
+packetLen(0x03db, 6)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080527
+packetLen(0x03db, -1)
+#endif
+
+// Packet: 0x03dc
+#if PACKETVER >= 20080618
+packetLen(0x03dc, 54)
+// ignored packet from 2008-06-18bSakexe
+#elif PACKETVER >= 20080610
+packetLen(0x03dc, 6)
+#elif PACKETVER >= 20080527
+packetLen(0x03dc, -1)
+#endif
+
+// Packet: 0x03dd
+#if PACKETVER >= 20080624
+packetLen(0x03dd, 18) // AHC_GAME_GUARD
+#endif
+
+// Packet: 0x03de
+#if PACKETVER >= 20080624
+packetLen(0x03de, 18) // CAH_ACK_GAME_GUARD
+#endif
+
+// Packet: 0x03e2
+#if PACKETVER >= 20080813
+packetLen(0x03e2, -1)
+#endif
+
+// Packet: 0x03e3
+#if PACKETVER >= 20080813
+packetLen(0x03e3, -1)
+#endif
+
+// Packet: 0x03e4
+#if PACKETVER >= 20080813
+packetLen(0x03e4, -1)
+#endif
+
+// Packet: 0x03e5
+#if PACKETVER >= 20080813
+packetLen(0x03e5, -1)
+#endif
+
+// Packet: 0x03e6
+#if PACKETVER >= 20080813
+packetLen(0x03e6, -1)
+#endif
+
+// Packet: 0x03e7
+#if PACKETVER >= 20080813
+packetLen(0x03e7, -1)
+#endif
+
+// Packet: 0x03e8
+#if PACKETVER >= 20080813
+packetLen(0x03e8, -1)
+#endif
+
+// Packet: 0x03e9
+#if PACKETVER >= 20080813
+packetLen(0x03e9, -1)
+#endif
+
+// Packet: 0x03ea
+#if PACKETVER >= 20080813
+packetLen(0x03ea, -1)
+#endif
+
+// Packet: 0x03eb
+#if PACKETVER >= 20080813
+packetLen(0x03eb, -1)
+#endif
+
+// Packet: 0x03ec
+#if PACKETVER >= 20080813
+packetLen(0x03ec, -1)
+#endif
+
+// Packet: 0x03ed
+#if PACKETVER >= 20080813
+packetLen(0x03ed, -1)
+#endif
+
+// Packet: 0x03ee
+#if PACKETVER >= 20080813
+packetLen(0x03ee, -1)
+#endif
+
+// Packet: 0x03ef
+#if PACKETVER >= 20080813
+packetLen(0x03ef, -1)
+#endif
+
+// Packet: 0x03f0
+#if PACKETVER >= 20080813
+packetLen(0x03f0, -1)
+#endif
+
+// Packet: 0x03f1
+#if PACKETVER >= 20080813
+packetLen(0x03f1, -1)
+#endif
+
+// Packet: 0x03f2
+#if PACKETVER >= 20080813
+packetLen(0x03f2, -1)
+#endif
+
+// Packet: 0x03f3
+#if PACKETVER >= 20080813
+packetLen(0x03f3, -1)
+#endif
+
+// Packet: 0x03f4
+#if PACKETVER >= 20080813
+packetLen(0x03f4, -1)
+#endif
+
+// Packet: 0x03f5
+#if PACKETVER >= 20080813
+packetLen(0x03f5, -1)
+#endif
+
+// Packet: 0x03f6
+#if PACKETVER >= 20080813
+packetLen(0x03f6, -1)
+#endif
+
+// Packet: 0x03f7
+#if PACKETVER >= 20080813
+packetLen(0x03f7, -1)
+#endif
+
+// Packet: 0x03f8
+#if PACKETVER >= 20080813
+packetLen(0x03f8, -1)
+#endif
+
+// Packet: 0x03f9
+#if PACKETVER >= 20080813
+packetLen(0x03f9, -1)
+#endif
+
+// Packet: 0x03fa
+#if PACKETVER >= 20080813
+packetLen(0x03fa, -1)
+#endif
+
+// Packet: 0x03fb
+#if PACKETVER >= 20080813
+packetLen(0x03fb, -1)
+#endif
+
+// Packet: 0x03fc
+#if PACKETVER >= 20080813
+packetLen(0x03fc, -1)
+#endif
+
+// Packet: 0x03fd
+#if PACKETVER >= 20080813
+packetLen(0x03fd, -1)
+#endif
+
+// Packet: 0x03fe
+#if PACKETVER >= 20080813
+packetLen(0x03fe, -1)
+#endif
+
+// Packet: 0x03ff
+#if PACKETVER >= 20080813
+packetLen(0x03ff, -1)
+#endif
+
+// Packet: 0x0400
+#if PACKETVER >= 20080813
+packetLen(0x0400, -1)
+#endif
+
+// Packet: 0x0401
+#if PACKETVER >= 20080813
+packetLen(0x0401, -1)
+#endif
+
+// Packet: 0x0402
+#if PACKETVER >= 20080813
+packetLen(0x0402, -1)
+#endif
+
+// Packet: 0x0403
+#if PACKETVER >= 20080813
+packetLen(0x0403, -1)
+#endif
+
+// Packet: 0x0404
+#if PACKETVER >= 20080813
+packetLen(0x0404, -1)
+#endif
+
+// Packet: 0x0405
+#if PACKETVER >= 20080813
+packetLen(0x0405, -1)
+#endif
+
+// Packet: 0x0406
+#if PACKETVER >= 20080813
+packetLen(0x0406, -1)
+#endif
+
+// Packet: 0x0407
+#if PACKETVER >= 20080813
+packetLen(0x0407, -1)
+#endif
+
+// Packet: 0x0408
+#if PACKETVER >= 20080813
+packetLen(0x0408, -1)
+#endif
+
+// Packet: 0x0409
+#if PACKETVER >= 20080813
+packetLen(0x0409, -1)
+#endif
+
+// Packet: 0x040a
+#if PACKETVER >= 20080813
+packetLen(0x040a, -1)
+#endif
+
+// Packet: 0x040b
+#if PACKETVER >= 20080813
+packetLen(0x040b, -1)
+#endif
+
+// Packet: 0x040c
+#if PACKETVER >= 20080820
+packetLen(0x040c, -1)
+#endif
+
+// Packet: 0x040d
+#if PACKETVER >= 20080820
+packetLen(0x040d, -1)
+#endif
+
+// Packet: 0x040e
+#if PACKETVER >= 20080820
+packetLen(0x040e, -1)
+#endif
+
+// Packet: 0x040f
+#if PACKETVER >= 20080820
+packetLen(0x040f, -1)
+#endif
+
+// Packet: 0x0410
+#if PACKETVER >= 20080820
+packetLen(0x0410, -1)
+#endif
+
+// Packet: 0x0411
+#if PACKETVER >= 20080820
+packetLen(0x0411, -1)
+#endif
+
+// Packet: 0x0412
+#if PACKETVER >= 20080820
+packetLen(0x0412, -1)
+#endif
+
+// Packet: 0x0413
+#if PACKETVER >= 20080820
+packetLen(0x0413, -1)
+#endif
+
+// Packet: 0x0414
+#if PACKETVER >= 20080820
+packetLen(0x0414, -1)
+#endif
+
+// Packet: 0x0415
+#if PACKETVER >= 20080820
+packetLen(0x0415, -1)
+#endif
+
+// Packet: 0x0416
+#if PACKETVER >= 20080820
+packetLen(0x0416, -1)
+#endif
+
+// Packet: 0x0417
+#if PACKETVER >= 20080820
+packetLen(0x0417, -1)
+#endif
+
+// Packet: 0x0418
+#if PACKETVER >= 20080820
+packetLen(0x0418, -1)
+#endif
+
+// Packet: 0x0419
+#if PACKETVER >= 20080820
+packetLen(0x0419, -1)
+#endif
+
+// Packet: 0x041a
+#if PACKETVER >= 20080820
+packetLen(0x041a, -1)
+#endif
+
+// Packet: 0x041b
+#if PACKETVER >= 20080820
+packetLen(0x041b, -1)
+#endif
+
+// Packet: 0x041c
+#if PACKETVER >= 20080820
+packetLen(0x041c, -1)
+#endif
+
+// Packet: 0x041d
+#if PACKETVER >= 20080820
+packetLen(0x041d, -1)
+#endif
+
+// Packet: 0x041e
+#if PACKETVER >= 20080820
+packetLen(0x041e, -1)
+#endif
+
+// Packet: 0x041f
+#if PACKETVER >= 20080820
+packetLen(0x041f, -1)
+#endif
+
+// Packet: 0x0420
+#if PACKETVER >= 20080820
+packetLen(0x0420, -1)
+#endif
+
+// Packet: 0x0421
+#if PACKETVER >= 20080820
+packetLen(0x0421, -1)
+#endif
+
+// Packet: 0x0422
+#if PACKETVER >= 20080820
+packetLen(0x0422, -1)
+#endif
+
+// Packet: 0x0423
+#if PACKETVER >= 20080820
+packetLen(0x0423, -1)
+#endif
+
+// Packet: 0x0424
+#if PACKETVER >= 20080820
+packetLen(0x0424, -1)
+#endif
+
+// Packet: 0x0425
+#if PACKETVER >= 20080820
+packetLen(0x0425, -1)
+#endif
+
+// Packet: 0x0426
+#if PACKETVER >= 20080820
+packetLen(0x0426, -1)
+#endif
+
+// Packet: 0x0427
+#if PACKETVER >= 20080820
+packetLen(0x0427, -1)
+#endif
+
+// Packet: 0x0428
+#if PACKETVER >= 20080820
+packetLen(0x0428, -1)
+#endif
+
+// Packet: 0x0429
+#if PACKETVER >= 20080820
+packetLen(0x0429, -1)
+#endif
+
+// Packet: 0x042a
+#if PACKETVER >= 20080820
+packetLen(0x042a, -1)
+#endif
+
+// Packet: 0x042b
+#if PACKETVER >= 20080820
+packetLen(0x042b, -1)
+#endif
+
+// Packet: 0x042c
+#if PACKETVER >= 20080820
+packetLen(0x042c, -1)
+#endif
+
+// Packet: 0x042d
+#if PACKETVER >= 20080820
+packetLen(0x042d, -1)
+#endif
+
+// Packet: 0x042e
+#if PACKETVER >= 20080820
+packetLen(0x042e, -1)
+#endif
+
+// Packet: 0x042f
+#if PACKETVER >= 20080820
+packetLen(0x042f, -1)
+#endif
+
+// Packet: 0x0430
+#if PACKETVER >= 20080820
+packetLen(0x0430, -1)
+#endif
+
+// Packet: 0x0431
+#if PACKETVER >= 20080820
+packetLen(0x0431, -1)
+#endif
+
+// Packet: 0x0432
+#if PACKETVER >= 20080820
+packetLen(0x0432, -1)
+#endif
+
+// Packet: 0x0433
+#if PACKETVER >= 20080820
+packetLen(0x0433, -1)
+#endif
+
+// Packet: 0x0434
+#if PACKETVER >= 20080820
+packetLen(0x0434, -1)
+#endif
+
+// Packet: 0x0435
+#if PACKETVER >= 20080820
+packetLen(0x0435, -1)
+#endif
+
+// Packet: 0x0436
+#if PACKETVER >= 20080910
+packetLen(0x0436, 19) // CZ_ENTER2
+#endif
+
+// Packet: 0x0437
+#if PACKETVER >= 20080910
+packetLen(0x0437, 7) // CZ_REQUEST_ACT2
+#endif
+
+// Packet: 0x0438
+#if PACKETVER >= 20080910
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#endif
+
+// Packet: 0x0439
+#if PACKETVER >= 20080910
+packetLen(0x0439, 8) // CZ_USE_ITEM2
+#endif
+
+// Packet: 0x043d
+#if PACKETVER >= 20081112
+packetLen(0x043d, 8) // ZC_SKILL_POSTDELAY
+#endif
+
+// Packet: 0x043e
+#if PACKETVER >= 20081112
+packetLen(0x043e, -1) // ZC_SKILL_POSTDELAY_LIST
+#endif
+
+// Packet: 0x043f
+#if PACKETVER >= 20081112
+packetLen(0x043f, 8) // ZC_MSG_STATE_CHANGE2
+#endif
+
+// Packet: 0x0440
+#if PACKETVER >= 20081126
+packetLen(0x0440, 10) // ZC_MILLENNIUMSHIELD
+#endif
+
+// Packet: 0x0441
+#if PACKETVER >= 20081126
+packetLen(0x0441, 4) // ZC_SKILLINFO_DELETE
+#endif
+
+// Packet: 0x0442
+#if PACKETVER >= 20081210
+packetLen(0x0442, 8) // ZC_SKILL_SELECT_REQUEST
+#endif
+
+// Packet: 0x0443
+#if PACKETVER >= 20081210
+packetLen(0x0443, 8) // CZ_SKILL_SELECT_RESPONSE
+#endif
+
+
+#endif /* COMMON_PACKETS2008_LEN_SAK_H */
diff --git a/src/common/packets/packets2009_len_main.h b/src/common/packets/packets2009_len_main.h
new file mode 100644
index 000000000..de9919468
--- /dev/null
+++ b/src/common/packets/packets2009_len_main.h
@@ -0,0 +1,15405 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2009_LEN_MAIN_H
+#define COMMON_PACKETS2009_LEN_MAIN_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+#if PACKETVER >= 20090617
+packetLen(0x006d, 114) // HC_ACCEPT_MAKECHAR
+#elif PACKETVER >= 20090107
+packetLen(0x006d, 110) // HC_ACCEPT_MAKECHAR
+#endif
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 22) // CZ_ENTER
+
+// Packet: 0x0073
+#if PACKETVER >= 20090406
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20090401
+packetLen(0x0073, 6) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20090311
+packetLen(0x0073, -1) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20090225
+packetLen(0x0073, 282) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20090218
+packetLen(0x0073, 2) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20090211
+packetLen(0x0073, 8) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20090120
+packetLen(0x0073, -1) // ZC_ACCEPT_ENTER
+#elif PACKETVER >= 20090107
+packetLen(0x0073, 8) // ZC_ACCEPT_ENTER
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+#if PACKETVER >= 20090401
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20090325
+packetLen(0x0075, 22) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20090225
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20090218
+packetLen(0x0075, 2) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20090114
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+#elif PACKETVER >= 20090107
+packetLen(0x0075, 6) // ZC_NOTIFY_INITCHAR
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+#if PACKETVER >= 20090406
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20090401
+packetLen(0x0077, -1) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20090325
+packetLen(0x0077, 4) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20090311
+packetLen(0x0077, -1) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20090225
+packetLen(0x0077, 7) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20090211
+packetLen(0x0077, -1) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20090204
+packetLen(0x0077, 7) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20090129
+packetLen(0x0077, 3) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20090120
+packetLen(0x0077, -1) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20090114
+packetLen(0x0077, 7) // ZC_NOTIFY_UPDATEPLAYER
+#elif PACKETVER >= 20090107
+packetLen(0x0077, -1) // ZC_NOTIFY_UPDATEPLAYER
+#endif
+
+// Packet: 0x0078
+#if PACKETVER >= 20090406
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20090318
+packetLen(0x0078, -1) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20090311
+packetLen(0x0078, 2) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20090114
+packetLen(0x0078, -1) // ZC_NOTIFY_STANDENTRY
+#elif PACKETVER >= 20090107
+packetLen(0x0078, 22) // ZC_NOTIFY_STANDENTRY
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0079
+#if PACKETVER >= 20090406
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20090318
+packetLen(0x0079, -1) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20090311
+packetLen(0x0079, 15) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20090225
+packetLen(0x0079, 20) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20090218
+packetLen(0x0079, 2) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20090129
+packetLen(0x0079, -1) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20090120
+packetLen(0x0079, 3) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20090114
+packetLen(0x0079, 21) // ZC_NOTIFY_NEWENTRY
+#elif PACKETVER >= 20090107
+packetLen(0x0079, -1) // ZC_NOTIFY_NEWENTRY
+#endif
+
+// Packet: 0x007a
+#if PACKETVER >= 20090406
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20090325
+packetLen(0x007a, -1) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20090318
+packetLen(0x007a, 3) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20090225
+packetLen(0x007a, -1) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20090218
+packetLen(0x007a, 6) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20090120
+packetLen(0x007a, -1) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20090114
+packetLen(0x007a, 6) // ZC_NOTIFY_ACTENTRY
+#elif PACKETVER >= 20090107
+packetLen(0x007a, -1) // ZC_NOTIFY_ACTENTRY
+#endif
+
+// Packet: 0x007b
+#if PACKETVER >= 20090406
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20090401
+packetLen(0x007b, 8) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20090325
+packetLen(0x007b, 3) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20090218
+packetLen(0x007b, -1) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20090211
+packetLen(0x007b, 2) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20090204
+packetLen(0x007b, 5) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20090129
+packetLen(0x007b, 14) // ZC_NOTIFY_MOVEENTRY
+#elif PACKETVER >= 20090107
+packetLen(0x007b, -1) // ZC_NOTIFY_MOVEENTRY
+#endif
+
+// Packet: 0x007c
+#if PACKETVER >= 20090617
+packetLen(0x007c, 44) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20090406
+packetLen(0x007c, 42) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20090401
+packetLen(0x007c, 14) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20090325
+packetLen(0x007c, 182) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20090311
+packetLen(0x007c, -1) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20090225
+packetLen(0x007c, 19) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20090218
+packetLen(0x007c, 10) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20090211
+packetLen(0x007c, -1) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20090204
+packetLen(0x007c, 5) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20090120
+packetLen(0x007c, -1) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20090114
+packetLen(0x007c, 2) // ZC_NOTIFY_STANDENTRY_NPC
+#elif PACKETVER >= 20090107
+packetLen(0x007c, 2) // ZC_NOTIFY_STANDENTRY_NPC
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x007d
+#if PACKETVER >= 20090406
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20090401
+packetLen(0x007d, -1) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20090325
+packetLen(0x007d, 10) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20090114
+packetLen(0x007d, -1) // CZ_NOTIFY_ACTORINIT
+#elif PACKETVER >= 20090107
+packetLen(0x007d, 282) // CZ_NOTIFY_ACTORINIT
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x007e
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+#if PACKETVER >= 20090406
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20090401
+packetLen(0x007f, -1) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20090325
+packetLen(0x007f, 2) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20090318
+packetLen(0x007f, 10) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20090204
+packetLen(0x007f, -1) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20090129
+packetLen(0x007f, 8) // ZC_NOTIFY_TIME
+#elif PACKETVER >= 20090107
+packetLen(0x007f, -1) // ZC_NOTIFY_TIME
+#endif
+
+// Packet: 0x0080
+#if PACKETVER >= 20090406
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20090318
+packetLen(0x0080, -1) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20090311
+packetLen(0x0080, 6) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20090225
+packetLen(0x0080, 36) // ZC_NOTIFY_VANISH
+#elif PACKETVER >= 20090107
+packetLen(0x0080, -1) // ZC_NOTIFY_VANISH
+#endif
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+#if PACKETVER >= 20090406
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20090325
+packetLen(0x0083, 6) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20090318
+packetLen(0x0083, 65) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20090311
+packetLen(0x0083, -1) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20090225
+packetLen(0x0083, 8) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20090211
+packetLen(0x0083, -1) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20090204
+packetLen(0x0083, 6) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20090129
+packetLen(0x0083, -1) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20090120
+packetLen(0x0083, 6) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20090114
+packetLen(0x0083, 10) // ZC_ACCEPT_QUIT
+#elif PACKETVER >= 20090107
+packetLen(0x0083, 5) // ZC_ACCEPT_QUIT
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 10) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+#if PACKETVER >= 20090406
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20090325
+packetLen(0x0086, -1) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20090318
+packetLen(0x0086, 4) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20090225
+packetLen(0x0086, -1) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20090218
+packetLen(0x0086, 7) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20090129
+packetLen(0x0086, -1) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20090120
+packetLen(0x0086, 10) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20090114
+packetLen(0x0086, -1) // ZC_NOTIFY_MOVE
+#elif PACKETVER >= 20090107
+packetLen(0x0086, 17) // ZC_NOTIFY_MOVE
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0087
+#if PACKETVER >= 20090406
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20090401
+packetLen(0x0087, 39) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20090325
+packetLen(0x0087, 15) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20090318
+packetLen(0x0087, 3) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20090311
+packetLen(0x0087, -1) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20090225
+packetLen(0x0087, 6) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20090218
+packetLen(0x0087, 21) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20090211
+packetLen(0x0087, 8) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20090204
+packetLen(0x0087, -1) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20090129
+packetLen(0x0087, 8) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20090114
+packetLen(0x0087, -1) // ZC_NOTIFY_PLAYERMOVE
+#elif PACKETVER >= 20090107
+packetLen(0x0087, 8) // ZC_NOTIFY_PLAYERMOVE
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0088
+#if PACKETVER >= 20090406
+packetLen(0x0088, 10) // ZC_STOPMOVE
+#elif PACKETVER >= 20090318
+packetLen(0x0088, -1) // ZC_STOPMOVE
+#elif PACKETVER >= 20090311
+packetLen(0x0088, 4) // ZC_STOPMOVE
+#elif PACKETVER >= 20090225
+packetLen(0x0088, -1) // ZC_STOPMOVE
+#elif PACKETVER >= 20090218
+packetLen(0x0088, 4) // ZC_STOPMOVE
+#elif PACKETVER >= 20090211
+packetLen(0x0088, 37) // ZC_STOPMOVE
+#elif PACKETVER >= 20090204
+packetLen(0x0088, -1) // ZC_STOPMOVE
+#elif PACKETVER >= 20090129
+packetLen(0x0088, 6) // ZC_STOPMOVE
+#elif PACKETVER >= 20090120
+packetLen(0x0088, -1) // ZC_STOPMOVE
+#elif PACKETVER >= 20090114
+packetLen(0x0088, 60) // ZC_STOPMOVE
+#elif PACKETVER >= 20090107
+packetLen(0x0088, 26) // ZC_STOPMOVE
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0089
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+#if PACKETVER >= 20090406
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20090401
+packetLen(0x008a, 15) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20090325
+packetLen(0x008a, -1) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20090318
+packetLen(0x008a, 7) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20090311
+packetLen(0x008a, 21) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20090218
+packetLen(0x008a, -1) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20090211
+packetLen(0x008a, 282) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20090204
+packetLen(0x008a, 2) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20090114
+packetLen(0x008a, -1) // ZC_NOTIFY_ACT
+#elif PACKETVER >= 20090107
+packetLen(0x008a, 10) // ZC_NOTIFY_ACT
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, 14)
+
+// Packet: 0x008d
+#if PACKETVER >= 20090311
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20090225
+packetLen(0x008d, 34) // ZC_NOTIFY_CHAT
+#elif PACKETVER >= 20090107
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+#endif
+
+// Packet: 0x008e
+#if PACKETVER >= 20090401
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20090325
+packetLen(0x008e, 3) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20090204
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20090129
+packetLen(0x008e, 6) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20090120
+packetLen(0x008e, 8) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20090114
+packetLen(0x008e, 12) // ZC_NOTIFY_PLAYERCHAT
+#elif PACKETVER >= 20090107
+packetLen(0x008e, 60) // ZC_NOTIFY_PLAYERCHAT
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0090
+#if PACKETVER >= 20090406
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+#elif PACKETVER >= 20090318
+packetLen(0x0090, -1) // CZ_CONTACTNPC
+#elif PACKETVER >= 20090311
+packetLen(0x0090, 26) // CZ_CONTACTNPC
+#elif PACKETVER >= 20090225
+packetLen(0x0090, -1) // CZ_CONTACTNPC
+#elif PACKETVER >= 20090218
+packetLen(0x0090, 2) // CZ_CONTACTNPC
+#elif PACKETVER >= 20090211
+packetLen(0x0090, 4) // CZ_CONTACTNPC
+#elif PACKETVER >= 20090204
+packetLen(0x0090, 44) // CZ_CONTACTNPC
+#elif PACKETVER >= 20090129
+packetLen(0x0090, -1) // CZ_CONTACTNPC
+#elif PACKETVER >= 20090120
+packetLen(0x0090, 3) // CZ_CONTACTNPC
+#elif PACKETVER >= 20090114
+packetLen(0x0090, -1) // CZ_CONTACTNPC
+#elif PACKETVER >= 20090107
+packetLen(0x0090, 36) // CZ_CONTACTNPC
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0091
+#if PACKETVER >= 20090406
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20090401
+packetLen(0x0091, -1) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20090325
+packetLen(0x0091, 21) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20090114
+packetLen(0x0091, -1) // ZC_NPCACK_MAPMOVE
+#elif PACKETVER >= 20090107
+packetLen(0x0091, 8) // ZC_NPCACK_MAPMOVE
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0092
+#if PACKETVER >= 20090406
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20090401
+packetLen(0x0092, 26) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20090325
+packetLen(0x0092, 6) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20090318
+packetLen(0x0092, 30) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20090218
+packetLen(0x0092, -1) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20090211
+packetLen(0x0092, 6) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20090204
+packetLen(0x0092, -1) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20090129
+packetLen(0x0092, 2) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20090120
+packetLen(0x0092, -1) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20090114
+packetLen(0x0092, 3) // ZC_NPCACK_SERVERMOVE
+#elif PACKETVER >= 20090107
+packetLen(0x0092, 6) // ZC_NPCACK_SERVERMOVE
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0093
+#if PACKETVER >= 20090401
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20090225
+packetLen(0x0093, -1) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20090218
+packetLen(0x0093, 14) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20090211
+packetLen(0x0093, -1) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20090204
+packetLen(0x0093, 3) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20090129
+packetLen(0x0093, 8) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20090120
+packetLen(0x0093, 4) // ZC_NPCACK_ENABLE
+#elif PACKETVER >= 20090107
+packetLen(0x0093, -1) // ZC_NPCACK_ENABLE
+#endif
+
+// Packet: 0x0094
+packetLen(0x0094, 19) // CZ_REQNAME
+
+// Packet: 0x0095
+#if PACKETVER >= 20090406
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20090401
+packetLen(0x0095, -1) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20090325
+packetLen(0x0095, 4) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20090311
+packetLen(0x0095, -1) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20090225
+packetLen(0x0095, 33) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20090218
+packetLen(0x0095, 60) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20090211
+packetLen(0x0095, 11) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20090129
+packetLen(0x0095, -1) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20090120
+packetLen(0x0095, 53) // ZC_ACK_REQNAME
+#elif PACKETVER >= 20090107
+packetLen(0x0095, -1) // ZC_ACK_REQNAME
+#endif
+
+// Packet: 0x0096
+#if PACKETVER >= 20090406
+packetLen(0x0096, -1) // CZ_WHISPER
+#elif PACKETVER >= 20090401
+packetLen(0x0096, 6) // CZ_WHISPER
+#elif PACKETVER >= 20090325
+packetLen(0x0096, 71) // CZ_WHISPER
+#elif PACKETVER >= 20090318
+packetLen(0x0096, 11) // CZ_WHISPER
+#elif PACKETVER >= 20090311
+packetLen(0x0096, 9) // CZ_WHISPER
+#elif PACKETVER >= 20090225
+packetLen(0x0096, -1) // CZ_WHISPER
+#elif PACKETVER >= 20090218
+packetLen(0x0096, 39) // CZ_WHISPER
+#elif PACKETVER >= 20090211
+packetLen(0x0096, -1) // CZ_WHISPER
+#elif PACKETVER >= 20090204
+packetLen(0x0096, 2) // CZ_WHISPER
+#elif PACKETVER >= 20090129
+packetLen(0x0096, 3) // CZ_WHISPER
+#elif PACKETVER >= 20090120
+packetLen(0x0096, 30) // CZ_WHISPER
+#elif PACKETVER >= 20090107
+packetLen(0x0096, -1) // CZ_WHISPER
+#endif
+
+// Packet: 0x0097
+#if PACKETVER >= 20090406
+packetLen(0x0097, -1) // ZC_WHISPER
+#elif PACKETVER >= 20090401
+packetLen(0x0097, 30) // ZC_WHISPER
+#elif PACKETVER >= 20090325
+packetLen(0x0097, -1) // ZC_WHISPER
+#elif PACKETVER >= 20090318
+packetLen(0x0097, 6) // ZC_WHISPER
+#elif PACKETVER >= 20090311
+packetLen(0x0097, -1) // ZC_WHISPER
+#elif PACKETVER >= 20090225
+packetLen(0x0097, 4) // ZC_WHISPER
+#elif PACKETVER >= 20090211
+packetLen(0x0097, -1) // ZC_WHISPER
+#elif PACKETVER >= 20090204
+packetLen(0x0097, 4) // ZC_WHISPER
+#elif PACKETVER >= 20090120
+packetLen(0x0097, -1) // ZC_WHISPER
+#elif PACKETVER >= 20090114
+packetLen(0x0097, 10) // ZC_WHISPER
+#elif PACKETVER >= 20090107
+packetLen(0x0097, 37) // ZC_WHISPER
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0098
+#if PACKETVER >= 20090406
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20090401
+packetLen(0x0098, -1) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20090325
+packetLen(0x0098, 26) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20090318
+packetLen(0x0098, 10) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20090225
+packetLen(0x0098, -1) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20090218
+packetLen(0x0098, 26) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20090129
+packetLen(0x0098, -1) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20090120
+packetLen(0x0098, 20) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20090114
+packetLen(0x0098, 8) // ZC_ACK_WHISPER
+#elif PACKETVER >= 20090107
+packetLen(0x0098, 9) // ZC_ACK_WHISPER
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0099
+#if PACKETVER >= 20090318
+packetLen(0x0099, -1) // CZ_BROADCAST
+#elif PACKETVER >= 20090311
+packetLen(0x0099, 6) // CZ_BROADCAST
+#elif PACKETVER >= 20090225
+packetLen(0x0099, -1) // CZ_BROADCAST
+#elif PACKETVER >= 20090218
+packetLen(0x0099, 8) // CZ_BROADCAST
+#elif PACKETVER >= 20090211
+packetLen(0x0099, 6) // CZ_BROADCAST
+#elif PACKETVER >= 20090204
+packetLen(0x0099, 2) // CZ_BROADCAST
+#elif PACKETVER >= 20090129
+packetLen(0x0099, -1) // CZ_BROADCAST
+#elif PACKETVER >= 20090120
+packetLen(0x0099, 4) // CZ_BROADCAST
+#elif PACKETVER >= 20090107
+packetLen(0x0099, 31) // CZ_BROADCAST
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x009a
+#if PACKETVER >= 20090311
+packetLen(0x009a, -1) // ZC_BROADCAST
+#elif PACKETVER >= 20090225
+packetLen(0x009a, 2) // ZC_BROADCAST
+#elif PACKETVER >= 20090218
+packetLen(0x009a, 10) // ZC_BROADCAST
+#elif PACKETVER >= 20090211
+packetLen(0x009a, 4) // ZC_BROADCAST
+#elif PACKETVER >= 20090129
+packetLen(0x009a, -1) // ZC_BROADCAST
+#elif PACKETVER >= 20090120
+packetLen(0x009a, 6) // ZC_BROADCAST
+#elif PACKETVER >= 20090114
+packetLen(0x009a, -1) // ZC_BROADCAST
+#elif PACKETVER >= 20090107
+packetLen(0x009a, 65) // ZC_BROADCAST
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x009b
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+#if PACKETVER >= 20090406
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20090401
+packetLen(0x009c, -1) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20090325
+packetLen(0x009c, 79) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20090318
+packetLen(0x009c, -1) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20090311
+packetLen(0x009c, 29) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20090225
+packetLen(0x009c, 65) // ZC_CHANGE_DIRECTION
+#elif PACKETVER >= 20090107
+packetLen(0x009c, -1) // ZC_CHANGE_DIRECTION
+#endif
+
+// Packet: 0x009d
+#if PACKETVER >= 20090406
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20090401
+packetLen(0x009d, 2) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20090318
+packetLen(0x009d, -1) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20090311
+packetLen(0x009d, 54) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20090225
+packetLen(0x009d, -1) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20090218
+packetLen(0x009d, 68) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20090211
+packetLen(0x009d, -1) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20090204
+packetLen(0x009d, 3) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20090120
+packetLen(0x009d, -1) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20090114
+packetLen(0x009d, 3) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20090107
+packetLen(0x009d, -1) // ZC_ITEM_ENTRY
+#endif
+
+// Packet: 0x009e
+#if PACKETVER >= 20090406
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20090401
+packetLen(0x009e, -1) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20090325
+packetLen(0x009e, 8) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20090318
+packetLen(0x009e, -1) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20090311
+packetLen(0x009e, 114) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20090225
+packetLen(0x009e, 6) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20090218
+packetLen(0x009e, -1) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20090211
+packetLen(0x009e, 10) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20090204
+packetLen(0x009e, -1) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20090129
+packetLen(0x009e, 7) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20090120
+packetLen(0x009e, -1) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20090114
+packetLen(0x009e, 3) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20090107
+packetLen(0x009e, -1) // ZC_ITEM_FALL_ENTRY
+#endif
+
+// Packet: 0x009f
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+#if PACKETVER >= 20090406
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20090325
+packetLen(0x00a0, -1) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20090318
+packetLen(0x00a0, 10) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20090211
+packetLen(0x00a0, -1) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20090204
+packetLen(0x00a0, 2) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20090107
+packetLen(0x00a0, -1) // ZC_ITEM_PICKUP_ACK
+#endif
+
+// Packet: 0x00a1
+#if PACKETVER >= 20090406
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20090401
+packetLen(0x00a1, 8) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20090325
+packetLen(0x00a1, -1) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20090318
+packetLen(0x00a1, 4) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20090311
+packetLen(0x00a1, 27) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20090225
+packetLen(0x00a1, -1) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20090218
+packetLen(0x00a1, 4) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20090211
+packetLen(0x00a1, 30) // ZC_ITEM_DISAPPEAR
+#elif PACKETVER >= 20090107
+packetLen(0x00a1, -1) // ZC_ITEM_DISAPPEAR
+#endif
+
+// Packet: 0x00a2
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+#if PACKETVER >= 20090406
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20090401
+packetLen(0x00a3, 4) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20090129
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20090120
+packetLen(0x00a3, 5) // ZC_NORMAL_ITEMLIST
+#elif PACKETVER >= 20090107
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+#endif
+
+// Packet: 0x00a4
+#if PACKETVER >= 20090401
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20090325
+packetLen(0x00a4, 10) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20090318
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20090311
+packetLen(0x00a4, 3) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20090225
+packetLen(0x00a4, 31) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20090114
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20090107
+packetLen(0x00a4, 54) // ZC_EQUIPMENT_ITEMLIST
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x00a5
+#if PACKETVER >= 20090406
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20090401
+packetLen(0x00a5, 6) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20090311
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20090225
+packetLen(0x00a5, 12) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20090129
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20090120
+packetLen(0x00a5, 54) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20090114
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+#elif PACKETVER >= 20090107
+packetLen(0x00a5, 24) // ZC_STORE_NORMAL_ITEMLIST
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x00a6
+#if PACKETVER >= 20090406
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20090401
+packetLen(0x00a6, 59) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20090325
+packetLen(0x00a6, 4) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20090311
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20090225
+packetLen(0x00a6, 10) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20090218
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20090211
+packetLen(0x00a6, 6) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20090204
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20090129
+packetLen(0x00a6, 2) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20090120
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20090114
+packetLen(0x00a6, 18) // ZC_STORE_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20090107
+packetLen(0x00a6, 20) // ZC_STORE_EQUIPMENT_ITEMLIST
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x00a7
+packetLen(0x00a7, 9)
+
+// Packet: 0x00a8
+#if PACKETVER >= 20090406
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20090401
+packetLen(0x00a8, -1) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20090325
+packetLen(0x00a8, 6) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20090318
+packetLen(0x00a8, -1) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20090311
+packetLen(0x00a8, 30) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20090218
+packetLen(0x00a8, -1) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20090211
+packetLen(0x00a8, 20) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20090204
+packetLen(0x00a8, -1) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20090129
+packetLen(0x00a8, 54) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20090120
+packetLen(0x00a8, -1) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20090114
+packetLen(0x00a8, 27) // ZC_USE_ITEM_ACK
+#elif PACKETVER >= 20090107
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x00a9
+#if PACKETVER >= 20090406
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20090401
+packetLen(0x00a9, -1) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20090325
+packetLen(0x00a9, 8) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20090318
+packetLen(0x00a9, -1) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20090311
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+#elif PACKETVER >= 20090107
+packetLen(0x00a9, 30) // CZ_REQ_WEAR_EQUIP
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x00aa
+#if PACKETVER >= 20090406
+packetLen(0x00aa, 7) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20090325
+packetLen(0x00aa, -1) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20090318
+packetLen(0x00aa, 8) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20090311
+packetLen(0x00aa, -1) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20090225
+packetLen(0x00aa, 2) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20090218
+packetLen(0x00aa, 5) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20090211
+packetLen(0x00aa, -1) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20090204
+packetLen(0x00aa, 4) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20090129
+packetLen(0x00aa, -1) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20090120
+packetLen(0x00aa, 53) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20090114
+packetLen(0x00aa, 26) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20090107
+packetLen(0x00aa, -1) // ZC_REQ_WEAR_EQUIP_ACK
+#endif
+
+// Packet: 0x00ab
+#if PACKETVER >= 20090406
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20090325
+packetLen(0x00ab, -1) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20090318
+packetLen(0x00ab, 14) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20090204
+packetLen(0x00ab, -1) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20090129
+packetLen(0x00ab, 6) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20090120
+packetLen(0x00ab, -1) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20090114
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+#elif PACKETVER >= 20090107
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x00ac
+#if PACKETVER >= 20090325
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20090311
+packetLen(0x00ac, -1) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20090225
+packetLen(0x00ac, 14) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20090211
+packetLen(0x00ac, 6) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20090114
+packetLen(0x00ac, -1) // ZC_REQ_TAKEOFF_EQUIP_ACK
+#elif PACKETVER >= 20090107
+packetLen(0x00ac, 3) // ZC_REQ_TAKEOFF_EQUIP_ACK
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+#if PACKETVER >= 20090406
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20090401
+packetLen(0x00af, 54) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20090325
+packetLen(0x00af, -1) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20090318
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20090225
+packetLen(0x00af, -1) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20090218
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20090211
+packetLen(0x00af, -1) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20090204
+packetLen(0x00af, 14) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20090129
+packetLen(0x00af, 4) // ZC_ITEM_THROW_ACK
+#elif PACKETVER >= 20090107
+packetLen(0x00af, -1) // ZC_ITEM_THROW_ACK
+#endif
+
+// Packet: 0x00b0
+#if PACKETVER >= 20090406
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20090401
+packetLen(0x00b0, 10) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20090318
+packetLen(0x00b0, -1) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20090311
+packetLen(0x00b0, 57) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20090114
+packetLen(0x00b0, -1) // ZC_PAR_CHANGE
+#elif PACKETVER >= 20090107
+packetLen(0x00b0, 30) // ZC_PAR_CHANGE
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x00b1
+#if PACKETVER >= 20090406
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20090401
+packetLen(0x00b1, 3) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20090325
+packetLen(0x00b1, 27) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20090311
+packetLen(0x00b1, -1) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20090225
+packetLen(0x00b1, 30) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20090204
+packetLen(0x00b1, -1) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20090129
+packetLen(0x00b1, 29) // ZC_LONGPAR_CHANGE
+#elif PACKETVER >= 20090107
+packetLen(0x00b1, 11) // ZC_LONGPAR_CHANGE
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x00b2
+#if PACKETVER >= 20090406
+packetLen(0x00b2, 3) // CZ_RESTART
+#elif PACKETVER >= 20090401
+packetLen(0x00b2, 42) // CZ_RESTART
+#elif PACKETVER >= 20090325
+packetLen(0x00b2, 32) // CZ_RESTART
+#elif PACKETVER >= 20090318
+packetLen(0x00b2, -1) // CZ_RESTART
+#elif PACKETVER >= 20090311
+packetLen(0x00b2, 186) // CZ_RESTART
+#elif PACKETVER >= 20090225
+packetLen(0x00b2, 6) // CZ_RESTART
+#elif PACKETVER >= 20090218
+packetLen(0x00b2, -1) // CZ_RESTART
+#elif PACKETVER >= 20090211
+packetLen(0x00b2, 2) // CZ_RESTART
+#elif PACKETVER >= 20090129
+packetLen(0x00b2, -1) // CZ_RESTART
+#elif PACKETVER >= 20090120
+packetLen(0x00b2, 97) // CZ_RESTART
+#elif PACKETVER >= 20090107
+packetLen(0x00b2, 23) // CZ_RESTART
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x00b3
+#if PACKETVER >= 20090406
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+#elif PACKETVER >= 20090401
+packetLen(0x00b3, 4) // ZC_RESTART_ACK
+#elif PACKETVER >= 20090318
+packetLen(0x00b3, -1) // ZC_RESTART_ACK
+#elif PACKETVER >= 20090311
+packetLen(0x00b3, 6) // ZC_RESTART_ACK
+#elif PACKETVER >= 20090204
+packetLen(0x00b3, -1) // ZC_RESTART_ACK
+#elif PACKETVER >= 20090129
+packetLen(0x00b3, 2) // ZC_RESTART_ACK
+#elif PACKETVER >= 20090114
+packetLen(0x00b3, -1) // ZC_RESTART_ACK
+#elif PACKETVER >= 20090107
+packetLen(0x00b3, 2) // ZC_RESTART_ACK
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x00b4
+#if PACKETVER >= 20090325
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20090318
+packetLen(0x00b4, 6) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20090311
+packetLen(0x00b4, 37) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20090225
+packetLen(0x00b4, 30) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20090211
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20090204
+packetLen(0x00b4, 7) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20090129
+packetLen(0x00b4, 2) // ZC_SAY_DIALOG
+#elif PACKETVER >= 20090107
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+#endif
+
+// Packet: 0x00b5
+#if PACKETVER >= 20090406
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20090318
+packetLen(0x00b5, -1) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20090311
+packetLen(0x00b5, 3) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20090225
+packetLen(0x00b5, 32) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20090211
+packetLen(0x00b5, -1) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20090204
+packetLen(0x00b5, 2) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20090120
+packetLen(0x00b5, -1) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20090114
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+#elif PACKETVER >= 20090107
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x00b6
+#if PACKETVER >= 20090406
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20090311
+packetLen(0x00b6, -1) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20090225
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20090218
+packetLen(0x00b6, -1) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20090211
+packetLen(0x00b6, 2) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20090204
+packetLen(0x00b6, -1) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20090129
+packetLen(0x00b6, 2) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20090120
+packetLen(0x00b6, -1) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20090114
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+#elif PACKETVER >= 20090107
+packetLen(0x00b6, 26) // ZC_CLOSE_DIALOG
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x00b7
+#if PACKETVER >= 20090406
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+#elif PACKETVER >= 20090401
+packetLen(0x00b7, 3) // ZC_MENU_LIST
+#elif PACKETVER >= 20090325
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+#elif PACKETVER >= 20090318
+packetLen(0x00b7, 29) // ZC_MENU_LIST
+#elif PACKETVER >= 20090311
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+#elif PACKETVER >= 20090225
+packetLen(0x00b7, 2) // ZC_MENU_LIST
+#elif PACKETVER >= 20090218
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+#elif PACKETVER >= 20090211
+packetLen(0x00b7, 54) // ZC_MENU_LIST
+#elif PACKETVER >= 20090204
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+#elif PACKETVER >= 20090129
+packetLen(0x00b7, 2) // ZC_MENU_LIST
+#elif PACKETVER >= 20090107
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+#endif
+
+// Packet: 0x00b8
+#if PACKETVER >= 20090406
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20090311
+packetLen(0x00b8, -1) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20090225
+packetLen(0x00b8, 2) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20090218
+packetLen(0x00b8, -1) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20090211
+packetLen(0x00b8, 33) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20090129
+packetLen(0x00b8, -1) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20090120
+packetLen(0x00b8, 10) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20090114
+packetLen(0x00b8, 2) // CZ_CHOOSE_MENU
+#elif PACKETVER >= 20090107
+packetLen(0x00b8, 3) // CZ_CHOOSE_MENU
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x00b9
+#if PACKETVER >= 20090406
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20090401
+packetLen(0x00b9, 9) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20090311
+packetLen(0x00b9, -1) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20090225
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20090204
+packetLen(0x00b9, -1) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20090129
+packetLen(0x00b9, 31) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20090114
+packetLen(0x00b9, -1) // CZ_REQ_NEXT_SCRIPT
+#elif PACKETVER >= 20090107
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+#if PACKETVER >= 20090406
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20090401
+packetLen(0x00bb, -1) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20090318
+packetLen(0x00bb, 7) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20090311
+packetLen(0x00bb, 43) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20090211
+packetLen(0x00bb, -1) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20090204
+packetLen(0x00bb, 4) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20090129
+packetLen(0x00bb, 9) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20090120
+packetLen(0x00bb, -1) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20090114
+packetLen(0x00bb, 10) // CZ_STATUS_CHANGE
+#elif PACKETVER >= 20090107
+packetLen(0x00bb, 2) // CZ_STATUS_CHANGE
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x00bc
+#if PACKETVER >= 20090406
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20090401
+packetLen(0x00bc, 65) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20090325
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20090318
+packetLen(0x00bc, 2) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20090311
+packetLen(0x00bc, -1) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20090225
+packetLen(0x00bc, 27) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20090218
+packetLen(0x00bc, -1) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20090211
+packetLen(0x00bc, 81) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20090204
+packetLen(0x00bc, 15) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20090129
+packetLen(0x00bc, 8) // ZC_STATUS_CHANGE_ACK
+#elif PACKETVER >= 20090107
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x00bd
+#if PACKETVER >= 20090406
+packetLen(0x00bd, 44) // ZC_STATUS
+#elif PACKETVER >= 20090225
+packetLen(0x00bd, -1) // ZC_STATUS
+#elif PACKETVER >= 20090218
+packetLen(0x00bd, 2) // ZC_STATUS
+#elif PACKETVER >= 20090211
+packetLen(0x00bd, -1) // ZC_STATUS
+#elif PACKETVER >= 20090204
+packetLen(0x00bd, 60) // ZC_STATUS
+#elif PACKETVER >= 20090120
+packetLen(0x00bd, -1) // ZC_STATUS
+#elif PACKETVER >= 20090114
+packetLen(0x00bd, 10) // ZC_STATUS
+#elif PACKETVER >= 20090107
+packetLen(0x00bd, 14) // ZC_STATUS
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x00be
+#if PACKETVER >= 20090406
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20090401
+packetLen(0x00be, 30) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20090325
+packetLen(0x00be, 6) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20090318
+packetLen(0x00be, 10) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20090311
+packetLen(0x00be, 2) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20090218
+packetLen(0x00be, -1) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20090211
+packetLen(0x00be, 6) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20090120
+packetLen(0x00be, -1) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20090114
+packetLen(0x00be, 14) // ZC_STATUS_CHANGE
+#elif PACKETVER >= 20090107
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x00bf
+#if PACKETVER >= 20090406
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20090325
+packetLen(0x00bf, -1) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20090318
+packetLen(0x00bf, 18) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20090311
+packetLen(0x00bf, -1) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20090225
+packetLen(0x00bf, 4) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20090211
+packetLen(0x00bf, -1) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20090204
+packetLen(0x00bf, 28) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20090129
+packetLen(0x00bf, -1) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20090114
+packetLen(0x00bf, 6) // CZ_REQ_EMOTION
+#elif PACKETVER >= 20090107
+packetLen(0x00bf, 86) // CZ_REQ_EMOTION
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x00c0
+#if PACKETVER >= 20090406
+packetLen(0x00c0, 7) // ZC_EMOTION
+#elif PACKETVER >= 20090401
+packetLen(0x00c0, 10) // ZC_EMOTION
+#elif PACKETVER >= 20090325
+packetLen(0x00c0, -1) // ZC_EMOTION
+#elif PACKETVER >= 20090318
+packetLen(0x00c0, 4) // ZC_EMOTION
+#elif PACKETVER >= 20090129
+packetLen(0x00c0, -1) // ZC_EMOTION
+#elif PACKETVER >= 20090120
+packetLen(0x00c0, 6) // ZC_EMOTION
+#elif PACKETVER >= 20090114
+packetLen(0x00c0, 31) // ZC_EMOTION
+#elif PACKETVER >= 20090107
+packetLen(0x00c0, 54) // ZC_EMOTION
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x00c1
+#if PACKETVER >= 20090406
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20090401
+packetLen(0x00c1, 67) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20090318
+packetLen(0x00c1, -1) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20090311
+packetLen(0x00c1, 10) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20090225
+packetLen(0x00c1, -1) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20090218
+packetLen(0x00c1, 54) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20090211
+packetLen(0x00c1, 30) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20090204
+packetLen(0x00c1, -1) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20090129
+packetLen(0x00c1, 8) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20090120
+packetLen(0x00c1, 6) // CZ_REQ_USER_COUNT
+#elif PACKETVER >= 20090107
+packetLen(0x00c1, -1) // CZ_REQ_USER_COUNT
+#endif
+
+// Packet: 0x00c2
+#if PACKETVER >= 20090406
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+#elif PACKETVER >= 20090401
+packetLen(0x00c2, 30) // ZC_USER_COUNT
+#elif PACKETVER >= 20090318
+packetLen(0x00c2, -1) // ZC_USER_COUNT
+#elif PACKETVER >= 20090311
+packetLen(0x00c2, 12) // ZC_USER_COUNT
+#elif PACKETVER >= 20090225
+packetLen(0x00c2, 9) // ZC_USER_COUNT
+#elif PACKETVER >= 20090218
+packetLen(0x00c2, 14) // ZC_USER_COUNT
+#elif PACKETVER >= 20090204
+packetLen(0x00c2, -1) // ZC_USER_COUNT
+#elif PACKETVER >= 20090129
+packetLen(0x00c2, 60) // ZC_USER_COUNT
+#elif PACKETVER >= 20090120
+packetLen(0x00c2, 5) // ZC_USER_COUNT
+#elif PACKETVER >= 20090114
+packetLen(0x00c2, 4) // ZC_USER_COUNT
+#elif PACKETVER >= 20090107
+packetLen(0x00c2, 2) // ZC_USER_COUNT
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x00c3
+#if PACKETVER >= 20090406
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20090401
+packetLen(0x00c3, 10) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20090325
+packetLen(0x00c3, -1) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20090318
+packetLen(0x00c3, 6) // ZC_SPRITE_CHANGE
+#elif PACKETVER >= 20090107
+packetLen(0x00c3, 5) // ZC_SPRITE_CHANGE
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x00c4
+#if PACKETVER >= 20090406
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20090401
+packetLen(0x00c4, 9) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20090218
+packetLen(0x00c4, -1) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20090211
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20090114
+packetLen(0x00c4, -1) // ZC_SELECT_DEALTYPE
+#elif PACKETVER >= 20090107
+packetLen(0x00c4, 3) // ZC_SELECT_DEALTYPE
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x00c5
+#if PACKETVER >= 20090406
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20090318
+packetLen(0x00c5, -1) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20090311
+packetLen(0x00c5, 8) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20090218
+packetLen(0x00c5, 2) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20090211
+packetLen(0x00c5, 32) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20090129
+packetLen(0x00c5, -1) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20090120
+packetLen(0x00c5, 2) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20090114
+packetLen(0x00c5, 6) // CZ_ACK_SELECT_DEALTYPE
+#elif PACKETVER >= 20090107
+packetLen(0x00c5, -1) // CZ_ACK_SELECT_DEALTYPE
+#endif
+
+// Packet: 0x00c6
+#if PACKETVER >= 20090325
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20090318
+packetLen(0x00c6, 6) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20090311
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20090225
+packetLen(0x00c6, 14) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20090218
+packetLen(0x00c6, 8) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20090204
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20090129
+packetLen(0x00c6, 57) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20090120
+packetLen(0x00c6, 6) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20090114
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20090107
+packetLen(0x00c6, 6) // ZC_PC_PURCHASE_ITEMLIST
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x00c7
+#if PACKETVER >= 20090406
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20090401
+packetLen(0x00c7, 5) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20090325
+packetLen(0x00c7, 53) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20090318
+packetLen(0x00c7, 54) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20090311
+packetLen(0x00c7, 27) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20090225
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20090218
+packetLen(0x00c7, 23) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20090211
+packetLen(0x00c7, 57) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20090129
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20090120
+packetLen(0x00c7, 2) // ZC_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20090107
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+#endif
+
+// Packet: 0x00c8
+#if PACKETVER >= 20090401
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20090325
+packetLen(0x00c8, 58) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20090318
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20090311
+packetLen(0x00c8, 8) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20090218
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20090211
+packetLen(0x00c8, 9) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20090204
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20090129
+packetLen(0x00c8, 26) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20090120
+packetLen(0x00c8, 8) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20090114
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+#elif PACKETVER >= 20090107
+packetLen(0x00c8, 42) // CZ_PC_PURCHASE_ITEMLIST
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x00c9
+#if PACKETVER >= 20090401
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20090325
+packetLen(0x00c9, 2) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20090318
+packetLen(0x00c9, 8) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20090311
+packetLen(0x00c9, 29) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20090218
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20090211
+packetLen(0x00c9, 30) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20090204
+packetLen(0x00c9, 22) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20090120
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20090114
+packetLen(0x00c9, 15) // CZ_PC_SELL_ITEMLIST
+#elif PACKETVER >= 20090107
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+#endif
+
+// Packet: 0x00ca
+#if PACKETVER >= 20090406
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20090401
+packetLen(0x00ca, -1) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20090325
+packetLen(0x00ca, 282) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20090318
+packetLen(0x00ca, 4) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20090311
+packetLen(0x00ca, 7) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20090225
+packetLen(0x00ca, -1) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20090218
+packetLen(0x00ca, 22) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20090211
+packetLen(0x00ca, 21) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20090204
+packetLen(0x00ca, 6) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20090114
+packetLen(0x00ca, -1) // ZC_PC_PURCHASE_RESULT
+#elif PACKETVER >= 20090107
+packetLen(0x00ca, 10) // ZC_PC_PURCHASE_RESULT
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+#if PACKETVER >= 20090406
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20090401
+packetLen(0x00cc, 7) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20090325
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20090318
+packetLen(0x00cc, 9) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20090204
+packetLen(0x00cc, -1) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20090129
+packetLen(0x00cc, 12) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20090120
+packetLen(0x00cc, 39) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20090114
+packetLen(0x00cc, 8) // CZ_DISCONNECT_CHARACTER
+#elif PACKETVER >= 20090107
+packetLen(0x00cc, 5) // CZ_DISCONNECT_CHARACTER
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+#if PACKETVER >= 20090406
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20090401
+packetLen(0x00ce, -1) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20090325
+packetLen(0x00ce, 4) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20090318
+packetLen(0x00ce, -1) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20090311
+packetLen(0x00ce, 3) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20090204
+packetLen(0x00ce, -1) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20090129
+packetLen(0x00ce, 14) // CZ_DISCONNECT_ALL_CHARACTER
+#elif PACKETVER >= 20090107
+packetLen(0x00ce, 8) // CZ_DISCONNECT_ALL_CHARACTER
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x00cf
+#if PACKETVER >= 20090406
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20090401
+packetLen(0x00cf, 16) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20090325
+packetLen(0x00cf, 282) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20090318
+packetLen(0x00cf, 44) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20090311
+packetLen(0x00cf, 14) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20090225
+packetLen(0x00cf, 79) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20090211
+packetLen(0x00cf, -1) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20090204
+packetLen(0x00cf, 2) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20090129
+packetLen(0x00cf, 10) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20090120
+packetLen(0x00cf, -1) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20090114
+packetLen(0x00cf, 2) // CZ_SETTING_WHISPER_PC
+#elif PACKETVER >= 20090107
+packetLen(0x00cf, 14) // CZ_SETTING_WHISPER_PC
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x00d0
+#if PACKETVER >= 20090406
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20090401
+packetLen(0x00d0, 8) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20090325
+packetLen(0x00d0, 37) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20090318
+packetLen(0x00d0, 30) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20090225
+packetLen(0x00d0, -1) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20090218
+packetLen(0x00d0, 2) // CZ_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20090107
+packetLen(0x00d0, -1) // CZ_SETTING_WHISPER_STATE
+#endif
+
+// Packet: 0x00d1
+#if PACKETVER >= 20090406
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20090325
+packetLen(0x00d1, -1) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20090318
+packetLen(0x00d1, 2) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20090311
+packetLen(0x00d1, 6) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20090218
+packetLen(0x00d1, -1) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20090211
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20090129
+packetLen(0x00d1, -1) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20090120
+packetLen(0x00d1, 6) // ZC_SETTING_WHISPER_PC
+#elif PACKETVER >= 20090107
+packetLen(0x00d1, 16) // ZC_SETTING_WHISPER_PC
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x00d2
+#if PACKETVER >= 20090406
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20090401
+packetLen(0x00d2, 30) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20090325
+packetLen(0x00d2, 5) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20090311
+packetLen(0x00d2, -1) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20090225
+packetLen(0x00d2, 2) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20090120
+packetLen(0x00d2, -1) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20090114
+packetLen(0x00d2, 6) // ZC_SETTING_WHISPER_STATE
+#elif PACKETVER >= 20090107
+packetLen(0x00d2, 8) // ZC_SETTING_WHISPER_STATE
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x00d3
+#if PACKETVER >= 20090401
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20090325
+packetLen(0x00d3, 6) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20090318
+packetLen(0x00d3, -1) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20090311
+packetLen(0x00d3, 12) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20090225
+packetLen(0x00d3, 10) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20090218
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20090204
+packetLen(0x00d3, -1) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20090129
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20090120
+packetLen(0x00d3, 7) // CZ_REQ_WHISPER_LIST
+#elif PACKETVER >= 20090107
+packetLen(0x00d3, 6) // CZ_REQ_WHISPER_LIST
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+#if PACKETVER >= 20090401
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20090325
+packetLen(0x00d5, 12) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20090318
+packetLen(0x00d5, 26) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20090311
+packetLen(0x00d5, 30) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20090114
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+#elif PACKETVER >= 20090107
+packetLen(0x00d5, 58) // CZ_CREATE_CHATROOM
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x00d6
+#if PACKETVER >= 20090406
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20090401
+packetLen(0x00d6, 11) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20090318
+packetLen(0x00d6, -1) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20090311
+packetLen(0x00d6, 2) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20090225
+packetLen(0x00d6, 4) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20090218
+packetLen(0x00d6, -1) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20090211
+packetLen(0x00d6, 59) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20090204
+packetLen(0x00d6, 8) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20090114
+packetLen(0x00d6, -1) // ZC_ACK_CREATE_CHATROOM
+#elif PACKETVER >= 20090107
+packetLen(0x00d6, 18) // ZC_ACK_CREATE_CHATROOM
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x00d7
+#if PACKETVER >= 20090406
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20090401
+packetLen(0x00d7, 6) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20090325
+packetLen(0x00d7, 10) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20090318
+packetLen(0x00d7, 11) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20090225
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20090218
+packetLen(0x00d7, 26) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20090211
+packetLen(0x00d7, 10) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20090204
+packetLen(0x00d7, 23) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20090129
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20090120
+packetLen(0x00d7, 2) // ZC_ROOM_NEWENTRY
+#elif PACKETVER >= 20090107
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+#endif
+
+// Packet: 0x00d8
+#if PACKETVER >= 20090406
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20090401
+packetLen(0x00d8, 14) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20090325
+packetLen(0x00d8, -1) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20090311
+packetLen(0x00d8, 2) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20090225
+packetLen(0x00d8, 97) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20090218
+packetLen(0x00d8, -1) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20090211
+packetLen(0x00d8, 3) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20090204
+packetLen(0x00d8, 42) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20090129
+packetLen(0x00d8, 15) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20090120
+packetLen(0x00d8, 4) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20090114
+packetLen(0x00d8, -1) // ZC_DESTROY_ROOM
+#elif PACKETVER >= 20090107
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x00d9
+#if PACKETVER >= 20090406
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20090401
+packetLen(0x00d9, 3) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20090325
+packetLen(0x00d9, 26) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20090318
+packetLen(0x00d9, 4) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20090311
+packetLen(0x00d9, 2) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20090225
+packetLen(0x00d9, 58) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20090218
+packetLen(0x00d9, 7) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20090211
+packetLen(0x00d9, 5) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20090204
+packetLen(0x00d9, 3) // CZ_REQ_ENTER_ROOM
+#elif PACKETVER >= 20090107
+packetLen(0x00d9, 55) // CZ_REQ_ENTER_ROOM
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x00da
+#if PACKETVER >= 20090406
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20090311
+packetLen(0x00da, -1) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20090225
+packetLen(0x00da, 6) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20090218
+packetLen(0x00da, -1) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20090211
+packetLen(0x00da, 19) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20090204
+packetLen(0x00da, -1) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20090129
+packetLen(0x00da, 2) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20090114
+packetLen(0x00da, -1) // ZC_REFUSE_ENTER_ROOM
+#elif PACKETVER >= 20090107
+packetLen(0x00da, 31) // ZC_REFUSE_ENTER_ROOM
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x00db
+#if PACKETVER >= 20090401
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20090325
+packetLen(0x00db, 9) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20090311
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20090225
+packetLen(0x00db, 10) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20090218
+packetLen(0x00db, 8) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20090120
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20090114
+packetLen(0x00db, 8) // ZC_ENTER_ROOM
+#elif PACKETVER >= 20090107
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+#endif
+
+// Packet: 0x00dc
+#if PACKETVER >= 20090406
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20090401
+packetLen(0x00dc, 282) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20090318
+packetLen(0x00dc, 3) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20090311
+packetLen(0x00dc, -1) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20090225
+packetLen(0x00dc, 26) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20090218
+packetLen(0x00dc, -1) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20090211
+packetLen(0x00dc, 67) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20090129
+packetLen(0x00dc, -1) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20090120
+packetLen(0x00dc, 26) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20090114
+packetLen(0x00dc, 4) // ZC_MEMBER_NEWENTRY
+#elif PACKETVER >= 20090107
+packetLen(0x00dc, -1) // ZC_MEMBER_NEWENTRY
+#endif
+
+// Packet: 0x00dd
+#if PACKETVER >= 20090406
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20090401
+packetLen(0x00dd, -1) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20090325
+packetLen(0x00dd, 30) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20090225
+packetLen(0x00dd, -1) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20090218
+packetLen(0x00dd, 8) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20090129
+packetLen(0x00dd, -1) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20090120
+packetLen(0x00dd, 11) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20090114
+packetLen(0x00dd, -1) // ZC_MEMBER_EXIT
+#elif PACKETVER >= 20090107
+packetLen(0x00dd, 30) // ZC_MEMBER_EXIT
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x00de
+#if PACKETVER >= 20090406
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20090401
+packetLen(0x00de, 10) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20090325
+packetLen(0x00de, 6) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20090311
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20090225
+packetLen(0x00de, 5) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20090218
+packetLen(0x00de, 4) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20090211
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20090204
+packetLen(0x00de, 32) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20090129
+packetLen(0x00de, 5) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20090120
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20090114
+packetLen(0x00de, 282) // CZ_CHANGE_CHATROOM
+#elif PACKETVER >= 20090107
+packetLen(0x00de, 26) // CZ_CHANGE_CHATROOM
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x00df
+#if PACKETVER >= 20090406
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20090401
+packetLen(0x00df, 33) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20090325
+packetLen(0x00df, 6) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20090311
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20090225
+packetLen(0x00df, 2) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20090218
+packetLen(0x00df, 27) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20090211
+packetLen(0x00df, 3) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20090204
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20090129
+packetLen(0x00df, 2) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20090120
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20090114
+packetLen(0x00df, 3) // ZC_CHANGE_CHATROOM
+#elif PACKETVER >= 20090107
+packetLen(0x00df, 22) // ZC_CHANGE_CHATROOM
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x00e0
+#if PACKETVER >= 20090406
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20090401
+packetLen(0x00e0, -1) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20090311
+packetLen(0x00e0, 5) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20090218
+packetLen(0x00e0, -1) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20090211
+packetLen(0x00e0, 11) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20090204
+packetLen(0x00e0, 33) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20090114
+packetLen(0x00e0, -1) // CZ_REQ_ROLE_CHANGE
+#elif PACKETVER >= 20090107
+packetLen(0x00e0, 10) // CZ_REQ_ROLE_CHANGE
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x00e1
+#if PACKETVER >= 20090406
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20090401
+packetLen(0x00e1, 6) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20090325
+packetLen(0x00e1, 7) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20090318
+packetLen(0x00e1, -1) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20090311
+packetLen(0x00e1, 14) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20090218
+packetLen(0x00e1, -1) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20090211
+packetLen(0x00e1, 23) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20090120
+packetLen(0x00e1, -1) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20090114
+packetLen(0x00e1, 28) // ZC_ROLE_CHANGE
+#elif PACKETVER >= 20090107
+packetLen(0x00e1, -1) // ZC_ROLE_CHANGE
+#endif
+
+// Packet: 0x00e2
+#if PACKETVER >= 20090406
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20090401
+packetLen(0x00e2, 3) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20090225
+packetLen(0x00e2, -1) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20090218
+packetLen(0x00e2, 3) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20090120
+packetLen(0x00e2, -1) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20090114
+packetLen(0x00e2, 7) // CZ_REQ_EXPEL_MEMBER
+#elif PACKETVER >= 20090107
+packetLen(0x00e2, 8) // CZ_REQ_EXPEL_MEMBER
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x00e3
+#if PACKETVER >= 20090406
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20090401
+packetLen(0x00e3, -1) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20090325
+packetLen(0x00e3, 7) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20090318
+packetLen(0x00e3, 55) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20090311
+packetLen(0x00e3, 15) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20090225
+packetLen(0x00e3, 7) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20090218
+packetLen(0x00e3, -1) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20090211
+packetLen(0x00e3, 21) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20090129
+packetLen(0x00e3, -1) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20090120
+packetLen(0x00e3, 6) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20090114
+packetLen(0x00e3, -1) // CZ_EXIT_ROOM
+#elif PACKETVER >= 20090107
+packetLen(0x00e3, 26) // CZ_EXIT_ROOM
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x00e4
+#if PACKETVER >= 20090401
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20090325
+packetLen(0x00e4, 8) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20090218
+packetLen(0x00e4, -1) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20090211
+packetLen(0x00e4, 10) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20090204
+packetLen(0x00e4, -1) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20090129
+packetLen(0x00e4, 20) // CZ_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20090107
+packetLen(0x00e4, 7) // CZ_REQ_EXCHANGE_ITEM
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x00e5
+#if PACKETVER >= 20090406
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20090325
+packetLen(0x00e5, -1) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20090318
+packetLen(0x00e5, 68) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20090311
+packetLen(0x00e5, 11) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20090225
+packetLen(0x00e5, -1) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20090218
+packetLen(0x00e5, 37) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20090211
+packetLen(0x00e5, 6) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20090129
+packetLen(0x00e5, -1) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20090120
+packetLen(0x00e5, 5) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20090114
+packetLen(0x00e5, 2) // ZC_REQ_EXCHANGE_ITEM
+#elif PACKETVER >= 20090107
+packetLen(0x00e5, 2) // ZC_REQ_EXCHANGE_ITEM
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x00e6
+#if PACKETVER >= 20090406
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20090401
+packetLen(0x00e6, -1) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20090325
+packetLen(0x00e6, 86) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20090204
+packetLen(0x00e6, -1) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20090129
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20090120
+packetLen(0x00e6, 58) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20090114
+packetLen(0x00e6, 57) // CZ_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20090107
+packetLen(0x00e6, -1) // CZ_ACK_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00e7
+#if PACKETVER >= 20090406
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20090401
+packetLen(0x00e7, -1) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20090325
+packetLen(0x00e7, 55) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20090218
+packetLen(0x00e7, -1) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20090211
+packetLen(0x00e7, 2) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20090129
+packetLen(0x00e7, -1) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20090120
+packetLen(0x00e7, 68) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20090114
+packetLen(0x00e7, 6) // ZC_ACK_EXCHANGE_ITEM
+#elif PACKETVER >= 20090107
+packetLen(0x00e7, 42) // ZC_ACK_EXCHANGE_ITEM
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x00e8
+#if PACKETVER >= 20090406
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20090311
+packetLen(0x00e8, -1) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20090225
+packetLen(0x00e8, 7) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20090211
+packetLen(0x00e8, -1) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20090204
+packetLen(0x00e8, 58) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20090129
+packetLen(0x00e8, 14) // CZ_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20090107
+packetLen(0x00e8, -1) // CZ_ADD_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00e9
+#if PACKETVER >= 20090406
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20090325
+packetLen(0x00e9, -1) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20090318
+packetLen(0x00e9, 2) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20090311
+packetLen(0x00e9, 22) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20090225
+packetLen(0x00e9, -1) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20090218
+packetLen(0x00e9, 5) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20090211
+packetLen(0x00e9, 10) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20090204
+packetLen(0x00e9, 33) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20090129
+packetLen(0x00e9, 32) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20090120
+packetLen(0x00e9, 54) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20090107
+packetLen(0x00e9, -1) // ZC_ADD_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00ea
+#if PACKETVER >= 20090406
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20090401
+packetLen(0x00ea, -1) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20090325
+packetLen(0x00ea, 4) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20090318
+packetLen(0x00ea, 6) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20090311
+packetLen(0x00ea, -1) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20090225
+packetLen(0x00ea, 12) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20090218
+packetLen(0x00ea, -1) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20090211
+packetLen(0x00ea, 282) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20090129
+packetLen(0x00ea, -1) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20090120
+packetLen(0x00ea, 3) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20090114
+packetLen(0x00ea, 6) // ZC_ACK_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20090107
+packetLen(0x00ea, -1) // ZC_ACK_ADD_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00eb
+#if PACKETVER >= 20090406
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20090401
+packetLen(0x00eb, -1) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20090325
+packetLen(0x00eb, 10) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20090318
+packetLen(0x00eb, 15) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20090311
+packetLen(0x00eb, 11) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20090225
+packetLen(0x00eb, 6) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20090218
+packetLen(0x00eb, 10) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20090211
+packetLen(0x00eb, 6) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20090204
+packetLen(0x00eb, -1) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20090129
+packetLen(0x00eb, 71) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20090114
+packetLen(0x00eb, -1) // CZ_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20090107
+packetLen(0x00eb, 14) // CZ_CONCLUDE_EXCHANGE_ITEM
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x00ec
+#if PACKETVER >= 20090406
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20090401
+packetLen(0x00ec, 60) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20090325
+packetLen(0x00ec, -1) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20090318
+packetLen(0x00ec, 27) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20090311
+packetLen(0x00ec, -1) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20090225
+packetLen(0x00ec, 5) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20090218
+packetLen(0x00ec, -1) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20090211
+packetLen(0x00ec, 15) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20090204
+packetLen(0x00ec, -1) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20090129
+packetLen(0x00ec, 4) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20090120
+packetLen(0x00ec, 2) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20090114
+packetLen(0x00ec, 6) // ZC_CONCLUDE_EXCHANGE_ITEM
+#elif PACKETVER >= 20090107
+packetLen(0x00ec, 18) // ZC_CONCLUDE_EXCHANGE_ITEM
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x00ed
+#if PACKETVER >= 20090406
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20090225
+packetLen(0x00ed, -1) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20090218
+packetLen(0x00ed, 3) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20090211
+packetLen(0x00ed, 22) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20090204
+packetLen(0x00ed, 6) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20090129
+packetLen(0x00ed, 282) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20090114
+packetLen(0x00ed, 8) // CZ_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20090107
+packetLen(0x00ed, 7) // CZ_CANCEL_EXCHANGE_ITEM
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x00ee
+#if PACKETVER >= 20090401
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20090325
+packetLen(0x00ee, 8) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20090318
+packetLen(0x00ee, 282) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20090311
+packetLen(0x00ee, -1) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20090225
+packetLen(0x00ee, 4) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20090204
+packetLen(0x00ee, -1) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20090129
+packetLen(0x00ee, 24) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20090120
+packetLen(0x00ee, 8) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20090114
+packetLen(0x00ee, -1) // ZC_CANCEL_EXCHANGE_ITEM
+#elif PACKETVER >= 20090107
+packetLen(0x00ee, 16) // ZC_CANCEL_EXCHANGE_ITEM
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x00ef
+#if PACKETVER >= 20090406
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20090401
+packetLen(0x00ef, 8) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20090325
+packetLen(0x00ef, 30) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20090311
+packetLen(0x00ef, -1) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20090225
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20090218
+packetLen(0x00ef, 16) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20090211
+packetLen(0x00ef, -1) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20090204
+packetLen(0x00ef, 43) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20090129
+packetLen(0x00ef, 30) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20090120
+packetLen(0x00ef, 81) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20090114
+packetLen(0x00ef, -1) // CZ_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20090107
+packetLen(0x00ef, 39) // CZ_EXEC_EXCHANGE_ITEM
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x00f0
+#if PACKETVER >= 20090406
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20090401
+packetLen(0x00f0, 7) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20090318
+packetLen(0x00f0, -1) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20090311
+packetLen(0x00f0, 34) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20090211
+packetLen(0x00f0, -1) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20090204
+packetLen(0x00f0, 31) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20090129
+packetLen(0x00f0, 26) // ZC_EXEC_EXCHANGE_ITEM
+#elif PACKETVER >= 20090107
+packetLen(0x00f0, 26) // ZC_EXEC_EXCHANGE_ITEM
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+#if PACKETVER >= 20090406
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20090401
+packetLen(0x00f2, 2) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20090325
+packetLen(0x00f2, 32) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20090318
+packetLen(0x00f2, 8) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20090311
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20090225
+packetLen(0x00f2, 8) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20090218
+packetLen(0x00f2, 3) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20090211
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20090204
+packetLen(0x00f2, 10) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20090129
+packetLen(0x00f2, -1) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20090120
+packetLen(0x00f2, 11) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#elif PACKETVER >= 20090107
+packetLen(0x00f2, -1) // ZC_NOTIFY_STOREITEM_COUNTINFO
+#endif
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+#if PACKETVER >= 20090406
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20090401
+packetLen(0x00f4, 18) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20090311
+packetLen(0x00f4, -1) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20090225
+packetLen(0x00f4, 2) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20090218
+packetLen(0x00f4, 14) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20090211
+packetLen(0x00f4, 53) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20090129
+packetLen(0x00f4, -1) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20090120
+packetLen(0x00f4, 43) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20090114
+packetLen(0x00f4, 26) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20090107
+packetLen(0x00f4, 14) // ZC_ADD_ITEM_TO_STORE
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x00f5
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+#if PACKETVER >= 20090406
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20090401
+packetLen(0x00f6, 4) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20090318
+packetLen(0x00f6, -1) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20090311
+packetLen(0x00f6, 10) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20090225
+packetLen(0x00f6, 2) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20090218
+packetLen(0x00f6, 30) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20090129
+packetLen(0x00f6, -1) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20090120
+packetLen(0x00f6, 21) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20090114
+packetLen(0x00f6, -1) // ZC_DELETE_ITEM_FROM_STORE
+#elif PACKETVER >= 20090107
+packetLen(0x00f6, 26) // ZC_DELETE_ITEM_FROM_STORE
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x00f7
+packetLen(0x00f7, 17) // CZ_REQUEST_TIME
+
+// Packet: 0x00f8
+#if PACKETVER >= 20090401
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20090318
+packetLen(0x00f8, -1) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20090311
+packetLen(0x00f8, 10) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20090225
+packetLen(0x00f8, 3) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20090218
+packetLen(0x00f8, -1) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20090211
+packetLen(0x00f8, 65) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20090204
+packetLen(0x00f8, -1) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20090129
+packetLen(0x00f8, 60) // ZC_CLOSE_STORE
+#elif PACKETVER >= 20090107
+packetLen(0x00f8, -1) // ZC_CLOSE_STORE
+#endif
+
+// Packet: 0x00f9
+#if PACKETVER >= 20090406
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20090325
+packetLen(0x00f9, -1) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20090318
+packetLen(0x00f9, 11) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20090225
+packetLen(0x00f9, -1) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20090218
+packetLen(0x00f9, 8) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20090211
+packetLen(0x00f9, -1) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20090204
+packetLen(0x00f9, 39) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20090129
+packetLen(0x00f9, 10) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20090120
+packetLen(0x00f9, 12) // CZ_MAKE_GROUP
+#elif PACKETVER >= 20090107
+packetLen(0x00f9, -1) // CZ_MAKE_GROUP
+#endif
+
+// Packet: 0x00fa
+#if PACKETVER >= 20090406
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20090325
+packetLen(0x00fa, -1) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20090318
+packetLen(0x00fa, 20) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20090311
+packetLen(0x00fa, -1) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20090225
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20090218
+packetLen(0x00fa, -1) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20090211
+packetLen(0x00fa, 114) // ZC_ACK_MAKE_GROUP
+#elif PACKETVER >= 20090107
+packetLen(0x00fa, -1) // ZC_ACK_MAKE_GROUP
+#endif
+
+// Packet: 0x00fb
+#if PACKETVER >= 20090406
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+#elif PACKETVER >= 20090401
+packetLen(0x00fb, 7) // ZC_GROUP_LIST
+#elif PACKETVER >= 20090318
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+#elif PACKETVER >= 20090311
+packetLen(0x00fb, 36) // ZC_GROUP_LIST
+#elif PACKETVER >= 20090225
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+#elif PACKETVER >= 20090218
+packetLen(0x00fb, 8) // ZC_GROUP_LIST
+#elif PACKETVER >= 20090211
+packetLen(0x00fb, 7) // ZC_GROUP_LIST
+#elif PACKETVER >= 20090204
+packetLen(0x00fb, 6) // ZC_GROUP_LIST
+#elif PACKETVER >= 20090129
+packetLen(0x00fb, 3) // ZC_GROUP_LIST
+#elif PACKETVER >= 20090120
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+#elif PACKETVER >= 20090114
+packetLen(0x00fb, 16) // ZC_GROUP_LIST
+#elif PACKETVER >= 20090107
+packetLen(0x00fb, 282) // ZC_GROUP_LIST
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x00fc
+#if PACKETVER >= 20090406
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20090401
+packetLen(0x00fc, -1) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20090325
+packetLen(0x00fc, 22) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20090120
+packetLen(0x00fc, -1) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20090114
+packetLen(0x00fc, 3) // CZ_REQ_JOIN_GROUP
+#elif PACKETVER >= 20090107
+packetLen(0x00fc, -1) // CZ_REQ_JOIN_GROUP
+#endif
+
+// Packet: 0x00fd
+#if PACKETVER >= 20090406
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20090218
+packetLen(0x00fd, -1) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20090211
+packetLen(0x00fd, 2) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20090204
+packetLen(0x00fd, -1) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20090129
+packetLen(0x00fd, 7) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20090114
+packetLen(0x00fd, -1) // ZC_ACK_REQ_JOIN_GROUP
+#elif PACKETVER >= 20090107
+packetLen(0x00fd, 10) // ZC_ACK_REQ_JOIN_GROUP
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x00fe
+#if PACKETVER >= 20090406
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20090401
+packetLen(0x00fe, -1) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20090325
+packetLen(0x00fe, 67) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20090211
+packetLen(0x00fe, -1) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20090204
+packetLen(0x00fe, 29) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20090129
+packetLen(0x00fe, 2) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20090114
+packetLen(0x00fe, -1) // ZC_REQ_JOIN_GROUP
+#elif PACKETVER >= 20090107
+packetLen(0x00fe, 21) // ZC_REQ_JOIN_GROUP
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x00ff
+#if PACKETVER >= 20090406
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20090401
+packetLen(0x00ff, -1) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20090325
+packetLen(0x00ff, 6) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20090318
+packetLen(0x00ff, 4) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20090218
+packetLen(0x00ff, 6) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20090211
+packetLen(0x00ff, 30) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20090204
+packetLen(0x00ff, -1) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20090129
+packetLen(0x00ff, 6) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20090120
+packetLen(0x00ff, -1) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20090114
+packetLen(0x00ff, 3) // CZ_JOIN_GROUP
+#elif PACKETVER >= 20090107
+packetLen(0x00ff, 5) // CZ_JOIN_GROUP
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0100
+#if PACKETVER >= 20090406
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20090401
+packetLen(0x0100, 10) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20090311
+packetLen(0x0100, -1) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20090225
+packetLen(0x0100, 6) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20090218
+packetLen(0x0100, 81) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20090211
+packetLen(0x0100, -1) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20090204
+packetLen(0x0100, 5) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20090114
+packetLen(0x0100, -1) // CZ_REQ_LEAVE_GROUP
+#elif PACKETVER >= 20090107
+packetLen(0x0100, 6) // CZ_REQ_LEAVE_GROUP
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0101
+#if PACKETVER >= 20090406
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20090225
+packetLen(0x0101, -1) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20090218
+packetLen(0x0101, 20) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20090120
+packetLen(0x0101, -1) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20090114
+packetLen(0x0101, 20) // ZC_GROUPINFO_CHANGE
+#elif PACKETVER >= 20090107
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0102
+#if PACKETVER >= 20090406
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20090401
+packetLen(0x0102, -1) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20090318
+packetLen(0x0102, 10) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20090311
+packetLen(0x0102, -1) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20090225
+packetLen(0x0102, 11) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20090218
+packetLen(0x0102, 7) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20090211
+packetLen(0x0102, 282) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20090204
+packetLen(0x0102, 8) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20090129
+packetLen(0x0102, -1) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20090114
+packetLen(0x0102, 30) // CZ_CHANGE_GROUPEXPOPTION
+#elif PACKETVER >= 20090107
+packetLen(0x0102, 9) // CZ_CHANGE_GROUPEXPOPTION
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0103
+#if PACKETVER >= 20090406
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20090318
+packetLen(0x0103, -1) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20090311
+packetLen(0x0103, 2) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20090218
+packetLen(0x0103, -1) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20090211
+packetLen(0x0103, 54) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20090204
+packetLen(0x0103, 28) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20090129
+packetLen(0x0103, -1) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20090120
+packetLen(0x0103, 66) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20090114
+packetLen(0x0103, 11) // CZ_REQ_EXPEL_GROUP_MEMBER
+#elif PACKETVER >= 20090107
+packetLen(0x0103, 6) // CZ_REQ_EXPEL_GROUP_MEMBER
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0104
+#if PACKETVER >= 20090406
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20090325
+packetLen(0x0104, -1) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20090318
+packetLen(0x0104, 8) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20090311
+packetLen(0x0104, -1) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20090225
+packetLen(0x0104, 26) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20090218
+packetLen(0x0104, -1) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20090211
+packetLen(0x0104, 26) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20090120
+packetLen(0x0104, -1) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20090114
+packetLen(0x0104, 6) // ZC_ADD_MEMBER_TO_GROUP
+#elif PACKETVER >= 20090107
+packetLen(0x0104, -1) // ZC_ADD_MEMBER_TO_GROUP
+#endif
+
+// Packet: 0x0105
+#if PACKETVER >= 20090406
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20090401
+packetLen(0x0105, 10) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20090325
+packetLen(0x0105, 2) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20090204
+packetLen(0x0105, -1) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20090129
+packetLen(0x0105, 14) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20090114
+packetLen(0x0105, -1) // ZC_DELETE_MEMBER_FROM_GROUP
+#elif PACKETVER >= 20090107
+packetLen(0x0105, 2) // ZC_DELETE_MEMBER_FROM_GROUP
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0106
+#if PACKETVER >= 20090406
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20090401
+packetLen(0x0106, 24) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20090325
+packetLen(0x0106, -1) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20090318
+packetLen(0x0106, 2) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20090211
+packetLen(0x0106, -1) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20090204
+packetLen(0x0106, 9) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20090129
+packetLen(0x0106, -1) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20090120
+packetLen(0x0106, 7) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20090114
+packetLen(0x0106, -1) // ZC_NOTIFY_HP_TO_GROUPM
+#elif PACKETVER >= 20090107
+packetLen(0x0106, 6) // ZC_NOTIFY_HP_TO_GROUPM
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0107
+#if PACKETVER >= 20090406
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20090401
+packetLen(0x0107, 16) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20090325
+packetLen(0x0107, 14) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20090225
+packetLen(0x0107, -1) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20090218
+packetLen(0x0107, 4) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20090204
+packetLen(0x0107, -1) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20090129
+packetLen(0x0107, 23) // ZC_NOTIFY_POSITION_TO_GROUPM
+#elif PACKETVER >= 20090107
+packetLen(0x0107, -1) // ZC_NOTIFY_POSITION_TO_GROUPM
+#endif
+
+// Packet: 0x0108
+#if PACKETVER >= 20090325
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20090318
+packetLen(0x0108, 4) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20090129
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20090120
+packetLen(0x0108, 6) // CZ_REQUEST_CHAT_PARTY
+#elif PACKETVER >= 20090107
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+#endif
+
+// Packet: 0x0109
+#if PACKETVER >= 20090325
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20090318
+packetLen(0x0109, 81) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20090225
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20090218
+packetLen(0x0109, 8) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20090204
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20090129
+packetLen(0x0109, 6) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20090120
+packetLen(0x0109, 5) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20090114
+packetLen(0x0109, 3) // ZC_NOTIFY_CHAT_PARTY
+#elif PACKETVER >= 20090107
+packetLen(0x0109, 11) // ZC_NOTIFY_CHAT_PARTY
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x010a
+#if PACKETVER >= 20090406
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20090401
+packetLen(0x010a, 6) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20090325
+packetLen(0x010a, 26) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20090204
+packetLen(0x010a, -1) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20090129
+packetLen(0x010a, 22) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20090107
+packetLen(0x010a, 8) // ZC_MVP_GETTING_ITEM
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x010b
+#if PACKETVER >= 20090401
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20090325
+packetLen(0x010b, 17) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20090211
+packetLen(0x010b, -1) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20090204
+packetLen(0x010b, 14) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20090129
+packetLen(0x010b, -1) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20090120
+packetLen(0x010b, 2) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20090114
+packetLen(0x010b, -1) // ZC_MVP_GETTING_SPECIAL_EXP
+#elif PACKETVER >= 20090107
+packetLen(0x010b, 23) // ZC_MVP_GETTING_SPECIAL_EXP
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x010c
+#if PACKETVER >= 20090406
+packetLen(0x010c, 6) // ZC_MVP
+#elif PACKETVER >= 20090401
+packetLen(0x010c, 2) // ZC_MVP
+#elif PACKETVER >= 20090218
+packetLen(0x010c, -1) // ZC_MVP
+#elif PACKETVER >= 20090211
+packetLen(0x010c, 2) // ZC_MVP
+#elif PACKETVER >= 20090204
+packetLen(0x010c, -1) // ZC_MVP
+#elif PACKETVER >= 20090129
+packetLen(0x010c, 27) // ZC_MVP
+#elif PACKETVER >= 20090120
+packetLen(0x010c, 2) // ZC_MVP
+#elif PACKETVER >= 20090114
+packetLen(0x010c, 8) // ZC_MVP
+#elif PACKETVER >= 20090107
+packetLen(0x010c, 6) // ZC_MVP
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+#if PACKETVER >= 20090406
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20090325
+packetLen(0x010e, -1) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20090318
+packetLen(0x010e, 6) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20090218
+packetLen(0x010e, -1) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20090211
+packetLen(0x010e, 86) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20090204
+packetLen(0x010e, -1) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20090129
+packetLen(0x010e, 6) // ZC_SKILLINFO_UPDATE
+#elif PACKETVER >= 20090107
+packetLen(0x010e, 6) // ZC_SKILLINFO_UPDATE
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x010f
+#if PACKETVER >= 20090325
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20090318
+packetLen(0x010f, 26) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20090225
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20090218
+packetLen(0x010f, 6) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20090120
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20090114
+packetLen(0x010f, 43) // ZC_SKILLINFO_LIST
+#elif PACKETVER >= 20090107
+packetLen(0x010f, 81) // ZC_SKILLINFO_LIST
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0110
+#if PACKETVER >= 20090406
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20090318
+packetLen(0x0110, -1) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20090311
+packetLen(0x0110, 9) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20090225
+packetLen(0x0110, -1) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20090218
+packetLen(0x0110, 29) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20090129
+packetLen(0x0110, -1) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20090120
+packetLen(0x0110, 30) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20090107
+packetLen(0x0110, -1) // ZC_ACK_TOUSESKILL
+#endif
+
+// Packet: 0x0111
+#if PACKETVER >= 20090406
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+#elif PACKETVER >= 20090325
+packetLen(0x0111, -1) // ZC_ADD_SKILL
+#elif PACKETVER >= 20090318
+packetLen(0x0111, 20) // ZC_ADD_SKILL
+#elif PACKETVER >= 20090218
+packetLen(0x0111, -1) // ZC_ADD_SKILL
+#elif PACKETVER >= 20090211
+packetLen(0x0111, 6) // ZC_ADD_SKILL
+#elif PACKETVER >= 20090107
+packetLen(0x0111, -1) // ZC_ADD_SKILL
+#endif
+
+// Packet: 0x0112
+#if PACKETVER >= 20090406
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20090401
+packetLen(0x0112, 3) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20090318
+packetLen(0x0112, -1) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20090311
+packetLen(0x0112, 6) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20090211
+packetLen(0x0112, -1) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20090204
+packetLen(0x0112, 6) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20090114
+packetLen(0x0112, -1) // CZ_UPGRADE_SKILLLEVEL
+#elif PACKETVER >= 20090107
+packetLen(0x0112, 29) // CZ_UPGRADE_SKILLLEVEL
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0113
+packetLen(0x0113, 25) // CZ_USE_SKILL
+
+// Packet: 0x0114
+#if PACKETVER >= 20090406
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20090401
+packetLen(0x0114, 28) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20090325
+packetLen(0x0114, -1) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20090318
+packetLen(0x0114, 2) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20090211
+packetLen(0x0114, -1) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20090204
+packetLen(0x0114, 17) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20090129
+packetLen(0x0114, 182) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20090120
+packetLen(0x0114, -1) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20090114
+packetLen(0x0114, 10) // ZC_NOTIFY_SKILL
+#elif PACKETVER >= 20090107
+packetLen(0x0114, 60) // ZC_NOTIFY_SKILL
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+#if PACKETVER >= 20090406
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20090325
+packetLen(0x0117, -1) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20090318
+packetLen(0x0117, 2) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20090311
+packetLen(0x0117, 282) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20090129
+packetLen(0x0117, -1) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20090120
+packetLen(0x0117, 30) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20090114
+packetLen(0x0117, 26) // ZC_NOTIFY_GROUNDSKILL
+#elif PACKETVER >= 20090107
+packetLen(0x0117, -1) // ZC_NOTIFY_GROUNDSKILL
+#endif
+
+// Packet: 0x0118
+#if PACKETVER >= 20090406
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20090401
+packetLen(0x0118, -1) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20090325
+packetLen(0x0118, 6) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20090318
+packetLen(0x0118, -1) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20090311
+packetLen(0x0118, 27) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20090225
+packetLen(0x0118, -1) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20090218
+packetLen(0x0118, 4) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20090114
+packetLen(0x0118, -1) // CZ_CANCEL_LOCKON
+#elif PACKETVER >= 20090107
+packetLen(0x0118, 33) // CZ_CANCEL_LOCKON
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0119
+#if PACKETVER >= 20090406
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20090325
+packetLen(0x0119, -1) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20090318
+packetLen(0x0119, 6) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20090225
+packetLen(0x0119, -1) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20090218
+packetLen(0x0119, 97) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20090114
+packetLen(0x0119, -1) // ZC_STATE_CHANGE
+#elif PACKETVER >= 20090107
+packetLen(0x0119, 30) // ZC_STATE_CHANGE
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x011a
+#if PACKETVER >= 20090406
+packetLen(0x011a, 15) // ZC_USE_SKILL
+#elif PACKETVER >= 20090401
+packetLen(0x011a, 6) // ZC_USE_SKILL
+#elif PACKETVER >= 20090325
+packetLen(0x011a, -1) // ZC_USE_SKILL
+#elif PACKETVER >= 20090318
+packetLen(0x011a, 8) // ZC_USE_SKILL
+#elif PACKETVER >= 20090311
+packetLen(0x011a, -1) // ZC_USE_SKILL
+#elif PACKETVER >= 20090225
+packetLen(0x011a, 9) // ZC_USE_SKILL
+#elif PACKETVER >= 20090218
+packetLen(0x011a, 3) // ZC_USE_SKILL
+#elif PACKETVER >= 20090204
+packetLen(0x011a, -1) // ZC_USE_SKILL
+#elif PACKETVER >= 20090129
+packetLen(0x011a, 282) // ZC_USE_SKILL
+#elif PACKETVER >= 20090120
+packetLen(0x011a, 9) // ZC_USE_SKILL
+#elif PACKETVER >= 20090114
+packetLen(0x011a, 8) // ZC_USE_SKILL
+#elif PACKETVER >= 20090107
+packetLen(0x011a, 3) // ZC_USE_SKILL
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x011b
+#if PACKETVER >= 20090406
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20090401
+packetLen(0x011b, -1) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20090325
+packetLen(0x011b, 3) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20090318
+packetLen(0x011b, 24) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20090311
+packetLen(0x011b, 4) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20090225
+packetLen(0x011b, 30) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20090211
+packetLen(0x011b, -1) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20090204
+packetLen(0x011b, 4) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20090129
+packetLen(0x011b, -1) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20090120
+packetLen(0x011b, 32) // CZ_SELECT_WARPPOINT
+#elif PACKETVER >= 20090107
+packetLen(0x011b, -1) // CZ_SELECT_WARPPOINT
+#endif
+
+// Packet: 0x011c
+#if PACKETVER >= 20090406
+packetLen(0x011c, 68) // ZC_WARPLIST
+#elif PACKETVER >= 20090325
+packetLen(0x011c, -1) // ZC_WARPLIST
+#elif PACKETVER >= 20090318
+packetLen(0x011c, 282) // ZC_WARPLIST
+#elif PACKETVER >= 20090311
+packetLen(0x011c, 58) // ZC_WARPLIST
+#elif PACKETVER >= 20090225
+packetLen(0x011c, 26) // ZC_WARPLIST
+#elif PACKETVER >= 20090218
+packetLen(0x011c, 14) // ZC_WARPLIST
+#elif PACKETVER >= 20090107
+packetLen(0x011c, -1) // ZC_WARPLIST
+#endif
+
+// Packet: 0x011d
+#if PACKETVER >= 20090406
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20090401
+packetLen(0x011d, -1) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20090325
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20090318
+packetLen(0x011d, -1) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20090311
+packetLen(0x011d, 30) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20090225
+packetLen(0x011d, 10) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20090211
+packetLen(0x011d, -1) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20090204
+packetLen(0x011d, 32) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20090129
+packetLen(0x011d, -1) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20090120
+packetLen(0x011d, 182) // CZ_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20090107
+packetLen(0x011d, -1) // CZ_REMEMBER_WARPPOINT
+#endif
+
+// Packet: 0x011e
+#if PACKETVER >= 20090406
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20090318
+packetLen(0x011e, -1) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20090311
+packetLen(0x011e, 2) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20090225
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20090218
+packetLen(0x011e, 60) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20090211
+packetLen(0x011e, -1) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20090204
+packetLen(0x011e, 22) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20090120
+packetLen(0x011e, -1) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20090114
+packetLen(0x011e, 2) // ZC_ACK_REMEMBER_WARPPOINT
+#elif PACKETVER >= 20090107
+packetLen(0x011e, -1) // ZC_ACK_REMEMBER_WARPPOINT
+#endif
+
+// Packet: 0x011f
+#if PACKETVER >= 20090406
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20090401
+packetLen(0x011f, 2) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20090311
+packetLen(0x011f, -1) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20090225
+packetLen(0x011f, 6) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20090218
+packetLen(0x011f, -1) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20090211
+packetLen(0x011f, 3) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20090129
+packetLen(0x011f, -1) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20090120
+packetLen(0x011f, 282) // ZC_SKILL_ENTRY
+#elif PACKETVER >= 20090107
+packetLen(0x011f, -1) // ZC_SKILL_ENTRY
+#endif
+
+// Packet: 0x0120
+#if PACKETVER >= 20090406
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20090401
+packetLen(0x0120, -1) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20090325
+packetLen(0x0120, 9) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20090311
+packetLen(0x0120, -1) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20090225
+packetLen(0x0120, 15) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20090218
+packetLen(0x0120, -1) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20090211
+packetLen(0x0120, 8) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20090204
+packetLen(0x0120, 10) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20090120
+packetLen(0x0120, -1) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20090114
+packetLen(0x0120, 12) // ZC_SKILL_DISAPPEAR
+#elif PACKETVER >= 20090107
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0121
+#if PACKETVER >= 20090406
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20090318
+packetLen(0x0121, -1) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20090225
+packetLen(0x0121, 10) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20090218
+packetLen(0x0121, 31) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20090211
+packetLen(0x0121, 12) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20090204
+packetLen(0x0121, 6) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20090129
+packetLen(0x0121, -1) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20090120
+packetLen(0x0121, 2) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20090114
+packetLen(0x0121, 67) // ZC_NOTIFY_CARTITEM_COUNTINFO
+#elif PACKETVER >= 20090107
+packetLen(0x0121, 10) // ZC_NOTIFY_CARTITEM_COUNTINFO
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0122
+#if PACKETVER >= 20090204
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20090129
+packetLen(0x0122, 20) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20090120
+packetLen(0x0122, 3) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20090114
+packetLen(0x0122, 4) // ZC_CART_EQUIPMENT_ITEMLIST
+#elif PACKETVER >= 20090107
+packetLen(0x0122, 9) // ZC_CART_EQUIPMENT_ITEMLIST
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0123
+#if PACKETVER >= 20090401
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20090325
+packetLen(0x0123, 10) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20090318
+packetLen(0x0123, 6) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20090225
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20090218
+packetLen(0x0123, 22) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20090114
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+#elif PACKETVER >= 20090107
+packetLen(0x0123, 26) // ZC_CART_NORMAL_ITEMLIST
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0124
+#if PACKETVER >= 20090406
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20090325
+packetLen(0x0124, -1) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20090318
+packetLen(0x0124, 8) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20090218
+packetLen(0x0124, -1) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20090211
+packetLen(0x0124, 4) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20090204
+packetLen(0x0124, -1) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20090129
+packetLen(0x0124, 28) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20090114
+packetLen(0x0124, -1) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20090107
+packetLen(0x0124, 3) // ZC_ADD_ITEM_TO_CART
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0125
+#if PACKETVER >= 20090406
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20090318
+packetLen(0x0125, -1) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20090311
+packetLen(0x0125, 282) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20090225
+packetLen(0x0125, 7) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20090218
+packetLen(0x0125, 28) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20090211
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20090204
+packetLen(0x0125, 20) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20090129
+packetLen(0x0125, 6) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20090120
+packetLen(0x0125, 2) // ZC_DELETE_ITEM_FROM_CART
+#elif PACKETVER >= 20090107
+packetLen(0x0125, -1) // ZC_DELETE_ITEM_FROM_CART
+#endif
+
+// Packet: 0x0126
+#if PACKETVER >= 20090406
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20090401
+packetLen(0x0126, 3) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20090325
+packetLen(0x0126, 282) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20090318
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20090311
+packetLen(0x0126, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20090225
+packetLen(0x0126, 10) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20090218
+packetLen(0x0126, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20090211
+packetLen(0x0126, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20090204
+packetLen(0x0126, 14) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20090129
+packetLen(0x0126, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20090120
+packetLen(0x0126, 14) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20090114
+packetLen(0x0126, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+#elif PACKETVER >= 20090107
+packetLen(0x0126, 60) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0127
+#if PACKETVER >= 20090406
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20090401
+packetLen(0x0127, -1) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20090325
+packetLen(0x0127, 66) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20090318
+packetLen(0x0127, -1) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20090311
+packetLen(0x0127, 10) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20090225
+packetLen(0x0127, 4) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20090218
+packetLen(0x0127, 44) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20090211
+packetLen(0x0127, -1) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20090204
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20090129
+packetLen(0x0127, 30) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20090120
+packetLen(0x0127, 3) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20090114
+packetLen(0x0127, -1) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+#elif PACKETVER >= 20090107
+packetLen(0x0127, 18) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0128
+#if PACKETVER >= 20090406
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20090401
+packetLen(0x0128, 3) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20090325
+packetLen(0x0128, 7) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20090318
+packetLen(0x0128, 12) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20090311
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20090129
+packetLen(0x0128, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20090120
+packetLen(0x0128, 6) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20090114
+packetLen(0x0128, 29) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+#elif PACKETVER >= 20090107
+packetLen(0x0128, 6) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0129
+#if PACKETVER >= 20090406
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20090401
+packetLen(0x0129, 6) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20090218
+packetLen(0x0129, -1) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20090211
+packetLen(0x0129, 30) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20090204
+packetLen(0x0129, 6) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20090129
+packetLen(0x0129, 10) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20090114
+packetLen(0x0129, -1) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+#elif PACKETVER >= 20090107
+packetLen(0x0129, 22) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x012a
+#if PACKETVER >= 20090406
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20090325
+packetLen(0x012a, -1) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20090318
+packetLen(0x012a, 13) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20090311
+packetLen(0x012a, 33) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20090225
+packetLen(0x012a, 7) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20090211
+packetLen(0x012a, -1) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20090204
+packetLen(0x012a, 34) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20090129
+packetLen(0x012a, 4) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20090120
+packetLen(0x012a, 29) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20090114
+packetLen(0x012a, -1) // CZ_REQ_CARTOFF
+#elif PACKETVER >= 20090107
+packetLen(0x012a, 11) // CZ_REQ_CARTOFF
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+#if PACKETVER >= 20090406
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20090401
+packetLen(0x012c, 6) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20090211
+packetLen(0x012c, -1) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20090204
+packetLen(0x012c, 13) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20090129
+packetLen(0x012c, 4) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20090120
+packetLen(0x012c, 282) // ZC_ACK_ADDITEM_TO_CART
+#elif PACKETVER >= 20090107
+packetLen(0x012c, 79) // ZC_ACK_ADDITEM_TO_CART
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x012d
+#if PACKETVER >= 20090406
+packetLen(0x012d, 4) // ZC_OPENSTORE
+#elif PACKETVER >= 20090401
+packetLen(0x012d, 43) // ZC_OPENSTORE
+#elif PACKETVER >= 20090325
+packetLen(0x012d, 4) // ZC_OPENSTORE
+#elif PACKETVER >= 20090311
+packetLen(0x012d, -1) // ZC_OPENSTORE
+#elif PACKETVER >= 20090225
+packetLen(0x012d, 22) // ZC_OPENSTORE
+#elif PACKETVER >= 20090204
+packetLen(0x012d, -1) // ZC_OPENSTORE
+#elif PACKETVER >= 20090129
+packetLen(0x012d, 79) // ZC_OPENSTORE
+#elif PACKETVER >= 20090120
+packetLen(0x012d, 11) // ZC_OPENSTORE
+#elif PACKETVER >= 20090114
+packetLen(0x012d, 13) // ZC_OPENSTORE
+#elif PACKETVER >= 20090107
+packetLen(0x012d, -1) // ZC_OPENSTORE
+#endif
+
+// Packet: 0x012e
+#if PACKETVER >= 20090406
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20090401
+packetLen(0x012e, 14) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20090311
+packetLen(0x012e, -1) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20090225
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20090129
+packetLen(0x012e, -1) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20090120
+packetLen(0x012e, 28) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20090114
+packetLen(0x012e, -1) // CZ_REQ_CLOSESTORE
+#elif PACKETVER >= 20090107
+packetLen(0x012e, 65) // CZ_REQ_CLOSESTORE
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+#if PACKETVER >= 20090406
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20090401
+packetLen(0x0130, 7) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20090325
+packetLen(0x0130, -1) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20090318
+packetLen(0x0130, 7) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20090311
+packetLen(0x0130, -1) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20090225
+packetLen(0x0130, 8) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20090211
+packetLen(0x0130, -1) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20090204
+packetLen(0x0130, 7) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20090129
+packetLen(0x0130, 8) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20090120
+packetLen(0x0130, -1) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20090114
+packetLen(0x0130, 30) // CZ_REQ_BUY_FROMMC
+#elif PACKETVER >= 20090107
+packetLen(0x0130, -1) // CZ_REQ_BUY_FROMMC
+#endif
+
+// Packet: 0x0131
+#if PACKETVER >= 20090406
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20090401
+packetLen(0x0131, 37) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20090325
+packetLen(0x0131, -1) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20090318
+packetLen(0x0131, 6) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20090311
+packetLen(0x0131, 17) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20090218
+packetLen(0x0131, -1) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20090211
+packetLen(0x0131, 7) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20090120
+packetLen(0x0131, -1) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20090114
+packetLen(0x0131, 5) // ZC_STORE_ENTRY
+#elif PACKETVER >= 20090107
+packetLen(0x0131, -1) // ZC_STORE_ENTRY
+#endif
+
+// Packet: 0x0132
+#if PACKETVER >= 20090406
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20090401
+packetLen(0x0132, 11) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20090318
+packetLen(0x0132, -1) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20090311
+packetLen(0x0132, 28) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20090225
+packetLen(0x0132, 39) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20090218
+packetLen(0x0132, -1) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20090211
+packetLen(0x0132, 27) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20090204
+packetLen(0x0132, 7) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20090129
+packetLen(0x0132, -1) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20090120
+packetLen(0x0132, 2) // ZC_DISAPPEAR_ENTRY
+#elif PACKETVER >= 20090107
+packetLen(0x0132, -1) // ZC_DISAPPEAR_ENTRY
+#endif
+
+// Packet: 0x0133
+#if PACKETVER >= 20090325
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20090318
+packetLen(0x0133, 4) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20090311
+packetLen(0x0133, 60) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20090225
+packetLen(0x0133, 8) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20090218
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20090211
+packetLen(0x0133, 10) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20090204
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20090129
+packetLen(0x0133, 68) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20090107
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+#endif
+
+// Packet: 0x0134
+#if PACKETVER >= 20090406
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20090401
+packetLen(0x0134, 29) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20090325
+packetLen(0x0134, 2) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20090318
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20090311
+packetLen(0x0134, 58) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20090225
+packetLen(0x0134, 4) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20090218
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20090211
+packetLen(0x0134, 3) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20090204
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20090129
+packetLen(0x0134, 6) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20090120
+packetLen(0x0134, 10) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20090114
+packetLen(0x0134, 6) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#elif PACKETVER >= 20090107
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+#endif
+
+// Packet: 0x0135
+#if PACKETVER >= 20090406
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20090401
+packetLen(0x0135, 97) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20090311
+packetLen(0x0135, -1) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20090225
+packetLen(0x0135, 3) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20090218
+packetLen(0x0135, -1) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20090211
+packetLen(0x0135, 44) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20090204
+packetLen(0x0135, 282) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20090129
+packetLen(0x0135, 59) // ZC_PC_PURCHASE_RESULT_FROMMC
+#elif PACKETVER >= 20090107
+packetLen(0x0135, -1) // ZC_PC_PURCHASE_RESULT_FROMMC
+#endif
+
+// Packet: 0x0136
+#if PACKETVER >= 20090401
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20090325
+packetLen(0x0136, 53) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20090318
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20090311
+packetLen(0x0136, 2) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20090225
+packetLen(0x0136, 30) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20090218
+packetLen(0x0136, 26) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20090129
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20090120
+packetLen(0x0136, 16) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20090114
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+#elif PACKETVER >= 20090107
+packetLen(0x0136, 26) // ZC_PC_PURCHASE_MYITEMLIST
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0137
+#if PACKETVER >= 20090406
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20090325
+packetLen(0x0137, -1) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20090318
+packetLen(0x0137, 16) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20090311
+packetLen(0x0137, 3) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20090225
+packetLen(0x0137, -1) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20090218
+packetLen(0x0137, 3) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20090211
+packetLen(0x0137, -1) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20090204
+packetLen(0x0137, 68) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20090129
+packetLen(0x0137, 2) // ZC_DELETEITEM_FROM_MCSTORE
+#elif PACKETVER >= 20090107
+packetLen(0x0137, -1) // ZC_DELETEITEM_FROM_MCSTORE
+#endif
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+#if PACKETVER >= 20090406
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20090211
+packetLen(0x0139, -1) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20090204
+packetLen(0x0139, 21) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20090129
+packetLen(0x0139, -1) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20090120
+packetLen(0x0139, 54) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#elif PACKETVER >= 20090107
+packetLen(0x0139, -1) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+#endif
+
+// Packet: 0x013a
+#if PACKETVER >= 20090406
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20090401
+packetLen(0x013a, -1) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20090325
+packetLen(0x013a, 2) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20090318
+packetLen(0x013a, 10) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20090311
+packetLen(0x013a, 8) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20090225
+packetLen(0x013a, -1) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20090218
+packetLen(0x013a, 8) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20090211
+packetLen(0x013a, -1) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20090204
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+#elif PACKETVER >= 20090107
+packetLen(0x013a, -1) // ZC_ATTACK_RANGE
+#endif
+
+// Packet: 0x013b
+#if PACKETVER >= 20090406
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20090325
+packetLen(0x013b, -1) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20090318
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20090311
+packetLen(0x013b, -1) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20090225
+packetLen(0x013b, 3) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20090218
+packetLen(0x013b, -1) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20090211
+packetLen(0x013b, 18) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20090204
+packetLen(0x013b, 5) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20090129
+packetLen(0x013b, 32) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20090120
+packetLen(0x013b, -1) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20090114
+packetLen(0x013b, 8) // ZC_ACTION_FAILURE
+#elif PACKETVER >= 20090107
+packetLen(0x013b, 7) // ZC_ACTION_FAILURE
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x013c
+#if PACKETVER >= 20090406
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20090401
+packetLen(0x013c, 34) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20090325
+packetLen(0x013c, -1) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20090318
+packetLen(0x013c, 30) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20090225
+packetLen(0x013c, -1) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20090218
+packetLen(0x013c, 28) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20090211
+packetLen(0x013c, -1) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20090204
+packetLen(0x013c, 7) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20090129
+packetLen(0x013c, 3) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20090114
+packetLen(0x013c, -1) // ZC_EQUIP_ARROW
+#elif PACKETVER >= 20090107
+packetLen(0x013c, 5) // ZC_EQUIP_ARROW
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x013d
+#if PACKETVER >= 20090406
+packetLen(0x013d, 6) // ZC_RECOVERY
+#elif PACKETVER >= 20090311
+packetLen(0x013d, -1) // ZC_RECOVERY
+#elif PACKETVER >= 20090225
+packetLen(0x013d, 6) // ZC_RECOVERY
+#elif PACKETVER >= 20090204
+packetLen(0x013d, -1) // ZC_RECOVERY
+#elif PACKETVER >= 20090129
+packetLen(0x013d, 53) // ZC_RECOVERY
+#elif PACKETVER >= 20090120
+packetLen(0x013d, 36) // ZC_RECOVERY
+#elif PACKETVER >= 20090114
+packetLen(0x013d, 3) // ZC_RECOVERY
+#elif PACKETVER >= 20090107
+packetLen(0x013d, -1) // ZC_RECOVERY
+#endif
+
+// Packet: 0x013e
+#if PACKETVER >= 20090406
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20090318
+packetLen(0x013e, -1) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20090311
+packetLen(0x013e, 4) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20090225
+packetLen(0x013e, 6) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20090218
+packetLen(0x013e, -1) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20090211
+packetLen(0x013e, 2) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20090204
+packetLen(0x013e, 10) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20090129
+packetLen(0x013e, -1) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20090120
+packetLen(0x013e, 23) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20090114
+packetLen(0x013e, -1) // ZC_USESKILL_ACK
+#elif PACKETVER >= 20090107
+packetLen(0x013e, 182) // ZC_USESKILL_ACK
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x013f
+#if PACKETVER >= 20090406
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20090401
+packetLen(0x013f, 14) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20090325
+packetLen(0x013f, 29) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20090318
+packetLen(0x013f, -1) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20090311
+packetLen(0x013f, 3) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20090225
+packetLen(0x013f, -1) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20090218
+packetLen(0x013f, 4) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20090211
+packetLen(0x013f, 14) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20090204
+packetLen(0x013f, 53) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20090129
+packetLen(0x013f, 6) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20090120
+packetLen(0x013f, -1) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20090114
+packetLen(0x013f, 6) // CZ_ITEM_CREATE
+#elif PACKETVER >= 20090107
+packetLen(0x013f, 10) // CZ_ITEM_CREATE
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0140
+#if PACKETVER >= 20090406
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20090318
+packetLen(0x0140, -1) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20090311
+packetLen(0x0140, 2) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20090204
+packetLen(0x0140, -1) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20090129
+packetLen(0x0140, 30) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20090120
+packetLen(0x0140, -1) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20090114
+packetLen(0x0140, 4) // CZ_MOVETO_MAP
+#elif PACKETVER >= 20090107
+packetLen(0x0140, -1) // CZ_MOVETO_MAP
+#endif
+
+// Packet: 0x0141
+#if PACKETVER >= 20090406
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20090325
+packetLen(0x0141, -1) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20090318
+packetLen(0x0141, 11) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20090311
+packetLen(0x0141, -1) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20090225
+packetLen(0x0141, 17) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20090218
+packetLen(0x0141, -1) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20090211
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20090204
+packetLen(0x0141, 6) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20090129
+packetLen(0x0141, -1) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20090120
+packetLen(0x0141, 6) // ZC_COUPLESTATUS
+#elif PACKETVER >= 20090107
+packetLen(0x0141, 8) // ZC_COUPLESTATUS
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0142
+#if PACKETVER >= 20090406
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20090401
+packetLen(0x0142, 10) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20090211
+packetLen(0x0142, -1) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20090204
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20090129
+packetLen(0x0142, 30) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20090120
+packetLen(0x0142, 60) // ZC_OPEN_EDITDLG
+#elif PACKETVER >= 20090107
+packetLen(0x0142, -1) // ZC_OPEN_EDITDLG
+#endif
+
+// Packet: 0x0143
+#if PACKETVER >= 20090406
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20090401
+packetLen(0x0143, 30) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20090211
+packetLen(0x0143, -1) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20090204
+packetLen(0x0143, 26) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20090120
+packetLen(0x0143, -1) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20090114
+packetLen(0x0143, 22) // CZ_INPUT_EDITDLG
+#elif PACKETVER >= 20090107
+packetLen(0x0143, -1) // CZ_INPUT_EDITDLG
+#endif
+
+// Packet: 0x0144
+#if PACKETVER >= 20090406
+packetLen(0x0144, 23) // ZC_COMPASS
+#elif PACKETVER >= 20090218
+packetLen(0x0144, -1) // ZC_COMPASS
+#elif PACKETVER >= 20090211
+packetLen(0x0144, 4) // ZC_COMPASS
+#elif PACKETVER >= 20090129
+packetLen(0x0144, -1) // ZC_COMPASS
+#elif PACKETVER >= 20090120
+packetLen(0x0144, 6) // ZC_COMPASS
+#elif PACKETVER >= 20090114
+packetLen(0x0144, 2) // ZC_COMPASS
+#elif PACKETVER >= 20090107
+packetLen(0x0144, 6) // ZC_COMPASS
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+#if PACKETVER >= 20090406
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20090401
+packetLen(0x0146, -1) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20090325
+packetLen(0x0146, 3) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20090225
+packetLen(0x0146, -1) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20090218
+packetLen(0x0146, 3) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20090211
+packetLen(0x0146, -1) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20090204
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20090114
+packetLen(0x0146, -1) // CZ_CLOSE_DIALOG
+#elif PACKETVER >= 20090107
+packetLen(0x0146, 2) // CZ_CLOSE_DIALOG
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0147
+#if PACKETVER >= 20090406
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20090401
+packetLen(0x0147, 3) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20090211
+packetLen(0x0147, -1) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20090204
+packetLen(0x0147, 114) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20090129
+packetLen(0x0147, 4) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20090120
+packetLen(0x0147, 30) // ZC_AUTORUN_SKILL
+#elif PACKETVER >= 20090107
+packetLen(0x0147, 2) // ZC_AUTORUN_SKILL
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0148
+#if PACKETVER >= 20090406
+packetLen(0x0148, 8) // ZC_RESURRECTION
+#elif PACKETVER >= 20090325
+packetLen(0x0148, -1) // ZC_RESURRECTION
+#elif PACKETVER >= 20090311
+packetLen(0x0148, 26) // ZC_RESURRECTION
+#elif PACKETVER >= 20090225
+packetLen(0x0148, 10) // ZC_RESURRECTION
+#elif PACKETVER >= 20090218
+packetLen(0x0148, -1) // ZC_RESURRECTION
+#elif PACKETVER >= 20090211
+packetLen(0x0148, 22) // ZC_RESURRECTION
+#elif PACKETVER >= 20090204
+packetLen(0x0148, 30) // ZC_RESURRECTION
+#elif PACKETVER >= 20090114
+packetLen(0x0148, -1) // ZC_RESURRECTION
+#elif PACKETVER >= 20090107
+packetLen(0x0148, 2) // ZC_RESURRECTION
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0149
+#if PACKETVER >= 20090406
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20090401
+packetLen(0x0149, -1) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20090325
+packetLen(0x0149, 6) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20090318
+packetLen(0x0149, 22) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20090311
+packetLen(0x0149, 29) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20090225
+packetLen(0x0149, -1) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20090218
+packetLen(0x0149, 10) // CZ_REQ_GIVE_MANNER_POINT
+#elif PACKETVER >= 20090107
+packetLen(0x0149, -1) // CZ_REQ_GIVE_MANNER_POINT
+#endif
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+#if PACKETVER >= 20090406
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20090401
+packetLen(0x014c, 6) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20090325
+packetLen(0x014c, 10) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20090318
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20090311
+packetLen(0x014c, 4) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20090225
+packetLen(0x014c, 57) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20090204
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20090129
+packetLen(0x014c, 5) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20090120
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20090114
+packetLen(0x014c, 2) // ZC_MYGUILD_BASIC_INFO
+#elif PACKETVER >= 20090107
+packetLen(0x014c, 6) // ZC_MYGUILD_BASIC_INFO
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x014d
+#if PACKETVER >= 20090406
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20090401
+packetLen(0x014d, 6) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20090325
+packetLen(0x014d, -1) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20090318
+packetLen(0x014d, 39) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20090218
+packetLen(0x014d, -1) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20090211
+packetLen(0x014d, 30) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20090204
+packetLen(0x014d, 13) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20090129
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20090114
+packetLen(0x014d, -1) // CZ_REQ_GUILD_MENUINTERFACE
+#elif PACKETVER >= 20090107
+packetLen(0x014d, 282) // CZ_REQ_GUILD_MENUINTERFACE
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+#if PACKETVER >= 20090406
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20090401
+packetLen(0x014f, 2) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20090325
+packetLen(0x014f, 16) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20090318
+packetLen(0x014f, 58) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20090311
+packetLen(0x014f, -1) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20090225
+packetLen(0x014f, 7) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20090211
+packetLen(0x014f, -1) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20090204
+packetLen(0x014f, 10) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20090129
+packetLen(0x014f, 26) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20090120
+packetLen(0x014f, -1) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20090114
+packetLen(0x014f, 182) // CZ_REQ_GUILD_MENU
+#elif PACKETVER >= 20090107
+packetLen(0x014f, -1) // CZ_REQ_GUILD_MENU
+#endif
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+#if PACKETVER >= 20090318
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20090311
+packetLen(0x0154, 26) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20090225
+packetLen(0x0154, 17) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20090218
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20090211
+packetLen(0x0154, 4) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20090204
+packetLen(0x0154, 10) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20090129
+packetLen(0x0154, 21) // ZC_MEMBERMGR_INFO
+#elif PACKETVER >= 20090107
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+#endif
+
+// Packet: 0x0155
+#if PACKETVER >= 20090318
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20090311
+packetLen(0x0155, 3) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20090218
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20090211
+packetLen(0x0155, 12) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20090204
+packetLen(0x0155, 26) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20090114
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+#elif PACKETVER >= 20090107
+packetLen(0x0155, 10) // CZ_REQ_CHANGE_MEMBERPOS
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0158
+packetLen(0x0158, -1) // ZC_ACK_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+#if PACKETVER >= 20090406
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20090401
+packetLen(0x0159, -1) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20090325
+packetLen(0x0159, 34) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20090318
+packetLen(0x0159, 8) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20090311
+packetLen(0x0159, 18) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20090218
+packetLen(0x0159, -1) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20090211
+packetLen(0x0159, 5) // CZ_REQ_LEAVE_GUILD
+#elif PACKETVER >= 20090107
+packetLen(0x0159, -1) // CZ_REQ_LEAVE_GUILD
+#endif
+
+// Packet: 0x015a
+#if PACKETVER >= 20090406
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20090401
+packetLen(0x015a, 6) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20090325
+packetLen(0x015a, 3) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20090318
+packetLen(0x015a, 2) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20090311
+packetLen(0x015a, 8) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20090225
+packetLen(0x015a, 6) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20090211
+packetLen(0x015a, -1) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20090204
+packetLen(0x015a, 14) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20090129
+packetLen(0x015a, -1) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20090120
+packetLen(0x015a, 4) // ZC_ACK_LEAVE_GUILD
+#elif PACKETVER >= 20090107
+packetLen(0x015a, 3) // ZC_ACK_LEAVE_GUILD
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x015b
+#if PACKETVER >= 20090406
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20090401
+packetLen(0x015b, 6) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20090325
+packetLen(0x015b, 8) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20090225
+packetLen(0x015b, -1) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20090218
+packetLen(0x015b, 4) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20090211
+packetLen(0x015b, -1) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20090204
+packetLen(0x015b, 6) // CZ_REQ_BAN_GUILD
+#elif PACKETVER >= 20090107
+packetLen(0x015b, 11) // CZ_REQ_BAN_GUILD
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x015c
+#if PACKETVER >= 20090406
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20090401
+packetLen(0x015c, -1) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20090325
+packetLen(0x015c, 8) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20090225
+packetLen(0x015c, -1) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20090218
+packetLen(0x015c, 3) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20090114
+packetLen(0x015c, -1) // ZC_ACK_BAN_GUILD
+#elif PACKETVER >= 20090107
+packetLen(0x015c, 14) // ZC_ACK_BAN_GUILD
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+#if PACKETVER >= 20090406
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20090401
+packetLen(0x015e, 26) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20090311
+packetLen(0x015e, -1) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20090225
+packetLen(0x015e, 21) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20090218
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#elif PACKETVER >= 20090107
+packetLen(0x015e, -1) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+#endif
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+#if PACKETVER >= 20090406
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+#elif PACKETVER >= 20090401
+packetLen(0x0160, 17) // ZC_POSITION_INFO
+#elif PACKETVER >= 20090325
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+#elif PACKETVER >= 20090311
+packetLen(0x0160, 6) // ZC_POSITION_INFO
+#elif PACKETVER >= 20090225
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+#elif PACKETVER >= 20090218
+packetLen(0x0160, 6) // ZC_POSITION_INFO
+#elif PACKETVER >= 20090211
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+#elif PACKETVER >= 20090204
+packetLen(0x0160, 8) // ZC_POSITION_INFO
+#elif PACKETVER >= 20090129
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+#elif PACKETVER >= 20090120
+packetLen(0x0160, 6) // ZC_POSITION_INFO
+#elif PACKETVER >= 20090107
+packetLen(0x0160, 37) // ZC_POSITION_INFO
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0161
+#if PACKETVER >= 20090406
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20090401
+packetLen(0x0161, 10) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20090325
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20090318
+packetLen(0x0161, 7) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20090311
+packetLen(0x0161, 14) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20090225
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20090218
+packetLen(0x0161, 2) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20090204
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20090129
+packetLen(0x0161, 54) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20090120
+packetLen(0x0161, 6) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20090114
+packetLen(0x0161, 30) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+#elif PACKETVER >= 20090107
+packetLen(0x0161, 4) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0162
+#if PACKETVER >= 20090406
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20090401
+packetLen(0x0162, 54) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20090225
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20090218
+packetLen(0x0162, 4) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20090120
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20090114
+packetLen(0x0162, 10) // ZC_GUILD_SKILLINFO
+#elif PACKETVER >= 20090107
+packetLen(0x0162, 6) // ZC_GUILD_SKILLINFO
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0163
+#if PACKETVER >= 20090401
+packetLen(0x0163, -1) // ZC_BAN_LIST
+#elif PACKETVER >= 20090325
+packetLen(0x0163, 8) // ZC_BAN_LIST
+#elif PACKETVER >= 20090318
+packetLen(0x0163, 3) // ZC_BAN_LIST
+#elif PACKETVER >= 20090225
+packetLen(0x0163, -1) // ZC_BAN_LIST
+#elif PACKETVER >= 20090218
+packetLen(0x0163, 27) // ZC_BAN_LIST
+#elif PACKETVER >= 20090211
+packetLen(0x0163, 22) // ZC_BAN_LIST
+#elif PACKETVER >= 20090204
+packetLen(0x0163, -1) // ZC_BAN_LIST
+#elif PACKETVER >= 20090129
+packetLen(0x0163, 9) // ZC_BAN_LIST
+#elif PACKETVER >= 20090107
+packetLen(0x0163, -1) // ZC_BAN_LIST
+#endif
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+#if PACKETVER >= 20090406
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20090401
+packetLen(0x0165, 2) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20090218
+packetLen(0x0165, -1) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20090211
+packetLen(0x0165, 26) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20090204
+packetLen(0x0165, -1) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20090129
+packetLen(0x0165, 6) // CZ_REQ_MAKE_GUILD
+#elif PACKETVER >= 20090107
+packetLen(0x0165, -1) // CZ_REQ_MAKE_GUILD
+#endif
+
+// Packet: 0x0166
+#if PACKETVER >= 20090401
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20090325
+packetLen(0x0166, 4) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20090318
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20090311
+packetLen(0x0166, 26) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20090225
+packetLen(0x0166, 4) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20090218
+packetLen(0x0166, 2) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20090211
+packetLen(0x0166, 6) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20090204
+packetLen(0x0166, 4) // ZC_POSITION_ID_NAME_INFO
+#elif PACKETVER >= 20090107
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+#endif
+
+// Packet: 0x0167
+#if PACKETVER >= 20090406
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20090401
+packetLen(0x0167, 53) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20090325
+packetLen(0x0167, 8) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20090218
+packetLen(0x0167, -1) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20090211
+packetLen(0x0167, 14) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20090204
+packetLen(0x0167, 6) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20090129
+packetLen(0x0167, 11) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20090120
+packetLen(0x0167, -1) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20090114
+packetLen(0x0167, 5) // ZC_RESULT_MAKE_GUILD
+#elif PACKETVER >= 20090107
+packetLen(0x0167, 26) // ZC_RESULT_MAKE_GUILD
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0168
+#if PACKETVER >= 20090406
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20090401
+packetLen(0x0168, 23) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20090204
+packetLen(0x0168, -1) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20090129
+packetLen(0x0168, 27) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20090114
+packetLen(0x0168, -1) // CZ_REQ_JOIN_GUILD
+#elif PACKETVER >= 20090107
+packetLen(0x0168, 11) // CZ_REQ_JOIN_GUILD
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0169
+#if PACKETVER >= 20090406
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20090401
+packetLen(0x0169, -1) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20090325
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20090318
+packetLen(0x0169, 29) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20090311
+packetLen(0x0169, -1) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20090225
+packetLen(0x0169, 26) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20090218
+packetLen(0x0169, -1) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20090211
+packetLen(0x0169, 17) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20090204
+packetLen(0x0169, 6) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20090129
+packetLen(0x0169, 11) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20090114
+packetLen(0x0169, -1) // ZC_ACK_REQ_JOIN_GUILD
+#elif PACKETVER >= 20090107
+packetLen(0x0169, 6) // ZC_ACK_REQ_JOIN_GUILD
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x016a
+#if PACKETVER >= 20090406
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20090401
+packetLen(0x016a, -1) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20090325
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20090211
+packetLen(0x016a, -1) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20090204
+packetLen(0x016a, 3) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20090129
+packetLen(0x016a, 7) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20090120
+packetLen(0x016a, 34) // ZC_REQ_JOIN_GUILD
+#elif PACKETVER >= 20090107
+packetLen(0x016a, 5) // ZC_REQ_JOIN_GUILD
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x016b
+#if PACKETVER >= 20090406
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20090401
+packetLen(0x016b, -1) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20090325
+packetLen(0x016b, 2) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20090318
+packetLen(0x016b, -1) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20090311
+packetLen(0x016b, 6) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20090225
+packetLen(0x016b, -1) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20090218
+packetLen(0x016b, 4) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20090204
+packetLen(0x016b, -1) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20090129
+packetLen(0x016b, 8) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20090120
+packetLen(0x016b, -1) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20090114
+packetLen(0x016b, 30) // CZ_JOIN_GUILD
+#elif PACKETVER >= 20090107
+packetLen(0x016b, 6) // CZ_JOIN_GUILD
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x016c
+#if PACKETVER >= 20090406
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20090225
+packetLen(0x016c, -1) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20090218
+packetLen(0x016c, 11) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20090211
+packetLen(0x016c, 16) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20090114
+packetLen(0x016c, -1) // ZC_UPDATE_GDID
+#elif PACKETVER >= 20090107
+packetLen(0x016c, 53) // ZC_UPDATE_GDID
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x016d
+#if PACKETVER >= 20090406
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20090401
+packetLen(0x016d, -1) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20090325
+packetLen(0x016d, 9) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20090318
+packetLen(0x016d, 11) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20090225
+packetLen(0x016d, -1) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20090218
+packetLen(0x016d, 4) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20090129
+packetLen(0x016d, -1) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20090120
+packetLen(0x016d, 10) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20090114
+packetLen(0x016d, -1) // ZC_UPDATE_CHARSTAT
+#elif PACKETVER >= 20090107
+packetLen(0x016d, 11) // ZC_UPDATE_CHARSTAT
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x016e
+#if PACKETVER >= 20090406
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20090311
+packetLen(0x016e, -1) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20090225
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20090218
+packetLen(0x016e, 30) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20090204
+packetLen(0x016e, -1) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20090129
+packetLen(0x016e, 6) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20090120
+packetLen(0x016e, 4) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20090114
+packetLen(0x016e, 97) // CZ_GUILD_NOTICE
+#elif PACKETVER >= 20090107
+packetLen(0x016e, 2) // CZ_GUILD_NOTICE
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x016f
+#if PACKETVER >= 20090406
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20090401
+packetLen(0x016f, -1) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20090325
+packetLen(0x016f, 67) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20090318
+packetLen(0x016f, -1) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20090311
+packetLen(0x016f, 7) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20090225
+packetLen(0x016f, 10) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20090204
+packetLen(0x016f, -1) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20090129
+packetLen(0x016f, 10) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20090120
+packetLen(0x016f, 6) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20090114
+packetLen(0x016f, 9) // ZC_GUILD_NOTICE
+#elif PACKETVER >= 20090107
+packetLen(0x016f, -1) // ZC_GUILD_NOTICE
+#endif
+
+// Packet: 0x0170
+#if PACKETVER >= 20090406
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20090401
+packetLen(0x0170, 36) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20090318
+packetLen(0x0170, -1) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20090311
+packetLen(0x0170, 2) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20090211
+packetLen(0x0170, -1) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20090204
+packetLen(0x0170, 2) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20090129
+packetLen(0x0170, 30) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20090120
+packetLen(0x0170, 10) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20090114
+packetLen(0x0170, -1) // CZ_REQ_ALLY_GUILD
+#elif PACKETVER >= 20090107
+packetLen(0x0170, 79) // CZ_REQ_ALLY_GUILD
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0171
+#if PACKETVER >= 20090406
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20090401
+packetLen(0x0171, 67) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20090325
+packetLen(0x0171, 10) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20090318
+packetLen(0x0171, -1) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20090311
+packetLen(0x0171, 7) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20090225
+packetLen(0x0171, -1) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20090218
+packetLen(0x0171, 4) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20090120
+packetLen(0x0171, -1) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20090114
+packetLen(0x0171, 6) // ZC_REQ_ALLY_GUILD
+#elif PACKETVER >= 20090107
+packetLen(0x0171, 43) // ZC_REQ_ALLY_GUILD
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0172
+#if PACKETVER >= 20090406
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20090325
+packetLen(0x0172, 3) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20090318
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20090225
+packetLen(0x0172, -1) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20090218
+packetLen(0x0172, 55) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20090211
+packetLen(0x0172, 11) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20090204
+packetLen(0x0172, -1) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20090129
+packetLen(0x0172, 6) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20090120
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+#elif PACKETVER >= 20090107
+packetLen(0x0172, -1) // CZ_ALLY_GUILD
+#endif
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+#if PACKETVER >= 20090406
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20090401
+packetLen(0x0177, 26) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20090325
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20090318
+packetLen(0x0177, 5) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20090225
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20090218
+packetLen(0x0177, 6) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20090204
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20090129
+packetLen(0x0177, 22) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20090120
+packetLen(0x0177, 2) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20090114
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+#elif PACKETVER >= 20090107
+packetLen(0x0177, 4) // ZC_ITEMIDENTIFY_LIST
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0178
+#if PACKETVER >= 20090406
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20090401
+packetLen(0x0178, -1) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20090325
+packetLen(0x0178, 2) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20090318
+packetLen(0x0178, -1) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20090311
+packetLen(0x0178, 6) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20090225
+packetLen(0x0178, 68) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20090120
+packetLen(0x0178, -1) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20090114
+packetLen(0x0178, 6) // CZ_REQ_ITEMIDENTIFY
+#elif PACKETVER >= 20090107
+packetLen(0x0178, -1) // CZ_REQ_ITEMIDENTIFY
+#endif
+
+// Packet: 0x0179
+#if PACKETVER >= 20090406
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20090401
+packetLen(0x0179, 10) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20090325
+packetLen(0x0179, -1) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20090318
+packetLen(0x0179, 3) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20090311
+packetLen(0x0179, 32) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20090225
+packetLen(0x0179, 6) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20090218
+packetLen(0x0179, -1) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20090211
+packetLen(0x0179, 10) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20090204
+packetLen(0x0179, -1) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20090129
+packetLen(0x0179, 33) // ZC_ACK_ITEMIDENTIFY
+#elif PACKETVER >= 20090107
+packetLen(0x0179, 53) // ZC_ACK_ITEMIDENTIFY
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x017a
+#if PACKETVER >= 20090406
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20090325
+packetLen(0x017a, -1) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20090318
+packetLen(0x017a, 10) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20090211
+packetLen(0x017a, -1) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20090204
+packetLen(0x017a, 29) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20090129
+packetLen(0x017a, -1) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20090120
+packetLen(0x017a, 11) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20090114
+packetLen(0x017a, -1) // CZ_REQ_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20090107
+packetLen(0x017a, 30) // CZ_REQ_ITEMCOMPOSITION_LIST
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x017b
+#if PACKETVER >= 20090401
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20090325
+packetLen(0x017b, 13) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20090225
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20090218
+packetLen(0x017b, 30) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20090211
+packetLen(0x017b, 14) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20090204
+packetLen(0x017b, 8) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20090129
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20090120
+packetLen(0x017b, 17) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20090114
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+#elif PACKETVER >= 20090107
+packetLen(0x017b, 11) // ZC_ITEMCOMPOSITION_LIST
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x017c
+#if PACKETVER >= 20090406
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20090325
+packetLen(0x017c, -1) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20090318
+packetLen(0x017c, 282) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20090311
+packetLen(0x017c, 8) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20090225
+packetLen(0x017c, -1) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20090218
+packetLen(0x017c, 3) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20090204
+packetLen(0x017c, -1) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20090129
+packetLen(0x017c, 4) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20090114
+packetLen(0x017c, -1) // CZ_REQ_ITEMCOMPOSITION
+#elif PACKETVER >= 20090107
+packetLen(0x017c, 3) // CZ_REQ_ITEMCOMPOSITION
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x017d
+#if PACKETVER >= 20090406
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20090401
+packetLen(0x017d, 53) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20090325
+packetLen(0x017d, -1) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20090318
+packetLen(0x017d, 28) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20090311
+packetLen(0x017d, 2) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20090225
+packetLen(0x017d, 31) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20090218
+packetLen(0x017d, 9) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20090211
+packetLen(0x017d, 6) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20090204
+packetLen(0x017d, 11) // ZC_ACK_ITEMCOMPOSITION
+#elif PACKETVER >= 20090107
+packetLen(0x017d, 2) // ZC_ACK_ITEMCOMPOSITION
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x017e
+#if PACKETVER >= 20090325
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20090318
+packetLen(0x017e, 26) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20090311
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20090225
+packetLen(0x017e, 30) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20090218
+packetLen(0x017e, 6) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20090204
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20090129
+packetLen(0x017e, 14) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20090120
+packetLen(0x017e, 186) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20090114
+packetLen(0x017e, 6) // CZ_GUILD_CHAT
+#elif PACKETVER >= 20090107
+packetLen(0x017e, 2) // CZ_GUILD_CHAT
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x017f
+#if PACKETVER >= 20090311
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20090225
+packetLen(0x017f, 3) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20090129
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20090120
+packetLen(0x017f, 33) // ZC_GUILD_CHAT
+#elif PACKETVER >= 20090107
+packetLen(0x017f, 30) // ZC_GUILD_CHAT
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+#if PACKETVER >= 20090406
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20090311
+packetLen(0x0188, -1) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20090225
+packetLen(0x0188, 10) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20090218
+packetLen(0x0188, -1) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20090211
+packetLen(0x0188, 5) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20090114
+packetLen(0x0188, -1) // ZC_ACK_ITEMREFINING
+#elif PACKETVER >= 20090107
+packetLen(0x0188, 3) // ZC_ACK_ITEMREFINING
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0189
+#if PACKETVER >= 20090406
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20090325
+packetLen(0x0189, -1) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20090318
+packetLen(0x0189, 90) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20090204
+packetLen(0x0189, -1) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20090129
+packetLen(0x0189, 2) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20090120
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20090114
+packetLen(0x0189, 6) // ZC_NOTIFY_MAPINFO
+#elif PACKETVER >= 20090107
+packetLen(0x0189, -1) // ZC_NOTIFY_MAPINFO
+#endif
+
+// Packet: 0x018a
+#if PACKETVER >= 20090406
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20090311
+packetLen(0x018a, -1) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20090225
+packetLen(0x018a, 6) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20090218
+packetLen(0x018a, 2) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20090211
+packetLen(0x018a, 71) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20090204
+packetLen(0x018a, 10) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20090120
+packetLen(0x018a, 3) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20090114
+packetLen(0x018a, 2) // CZ_REQ_DISCONNECT
+#elif PACKETVER >= 20090107
+packetLen(0x018a, 8) // CZ_REQ_DISCONNECT
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x018b
+#if PACKETVER >= 20090401
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20090325
+packetLen(0x018b, 30) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20090311
+packetLen(0x018b, -1) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20090225
+packetLen(0x018b, 21) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20090129
+packetLen(0x018b, -1) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20090120
+packetLen(0x018b, 7) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20090114
+packetLen(0x018b, -1) // ZC_ACK_REQ_DISCONNECT
+#elif PACKETVER >= 20090107
+packetLen(0x018b, 6) // ZC_ACK_REQ_DISCONNECT
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x018c
+#if PACKETVER >= 20090406
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20090401
+packetLen(0x018c, 11) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20090318
+packetLen(0x018c, -1) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20090311
+packetLen(0x018c, 2) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20090225
+packetLen(0x018c, -1) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20090218
+packetLen(0x018c, 30) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20090211
+packetLen(0x018c, -1) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20090204
+packetLen(0x018c, 3) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20090129
+packetLen(0x018c, -1) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20090120
+packetLen(0x018c, 30) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20090114
+packetLen(0x018c, -1) // ZC_MONSTER_INFO
+#elif PACKETVER >= 20090107
+packetLen(0x018c, 8) // ZC_MONSTER_INFO
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x018d
+#if PACKETVER >= 20090401
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20090325
+packetLen(0x018d, 6) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20090318
+packetLen(0x018d, 14) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20090311
+packetLen(0x018d, 4) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20090218
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20090211
+packetLen(0x018d, 28) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20090204
+packetLen(0x018d, 18) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20090129
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20090120
+packetLen(0x018d, 6) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20090114
+packetLen(0x018d, 7) // ZC_MAKABLEITEMLIST
+#elif PACKETVER >= 20090107
+packetLen(0x018d, 6) // ZC_MAKABLEITEMLIST
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x018e
+#if PACKETVER >= 20090406
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20090401
+packetLen(0x018e, 7) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20090318
+packetLen(0x018e, -1) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20090311
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20090225
+packetLen(0x018e, 5) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20090218
+packetLen(0x018e, 8) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20090107
+packetLen(0x018e, -1) // CZ_REQMAKINGITEM
+#endif
+
+// Packet: 0x018f
+#if PACKETVER >= 20090406
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20090401
+packetLen(0x018f, -1) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20090325
+packetLen(0x018f, 2) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20090318
+packetLen(0x018f, -1) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20090311
+packetLen(0x018f, 4) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20090129
+packetLen(0x018f, -1) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20090120
+packetLen(0x018f, 10) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20090107
+packetLen(0x018f, -1) // ZC_ACK_REQMAKINGITEM
+#endif
+
+// Packet: 0x0190
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+#if PACKETVER >= 20090406
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20090401
+packetLen(0x0194, -1) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20090325
+packetLen(0x0194, 28) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20090318
+packetLen(0x0194, 6) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20090311
+packetLen(0x0194, 54) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20090225
+packetLen(0x0194, -1) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20090218
+packetLen(0x0194, 8) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20090211
+packetLen(0x0194, 3) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20090114
+packetLen(0x0194, -1) // ZC_ACK_REQNAME_BYGID
+#elif PACKETVER >= 20090107
+packetLen(0x0194, 12) // ZC_ACK_REQNAME_BYGID
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0195
+#if PACKETVER >= 20090406
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20090401
+packetLen(0x0195, -1) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20090325
+packetLen(0x0195, 7) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20090318
+packetLen(0x0195, 4) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20090311
+packetLen(0x0195, 3) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20090225
+packetLen(0x0195, 8) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20090218
+packetLen(0x0195, 3) // ZC_ACK_REQNAMEALL
+#elif PACKETVER >= 20090107
+packetLen(0x0195, 29) // ZC_ACK_REQNAMEALL
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0196
+#if PACKETVER >= 20090406
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20090311
+packetLen(0x0196, -1) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20090225
+packetLen(0x0196, 4) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20090204
+packetLen(0x0196, -1) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20090129
+packetLen(0x0196, 10) // ZC_MSG_STATE_CHANGE
+#elif PACKETVER >= 20090107
+packetLen(0x0196, -1) // ZC_MSG_STATE_CHANGE
+#endif
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+#if PACKETVER >= 20090406
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20090401
+packetLen(0x0199, -1) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20090325
+packetLen(0x0199, 6) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20090318
+packetLen(0x0199, 67) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20090218
+packetLen(0x0199, -1) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20090204
+packetLen(0x0199, 6) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20090129
+packetLen(0x0199, 26) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20090120
+packetLen(0x0199, -1) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20090114
+packetLen(0x0199, 282) // ZC_NOTIFY_MAPPROPERTY
+#elif PACKETVER >= 20090107
+packetLen(0x0199, -1) // ZC_NOTIFY_MAPPROPERTY
+#endif
+
+// Packet: 0x019a
+#if PACKETVER >= 20090406
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20090401
+packetLen(0x019a, 20) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20090325
+packetLen(0x019a, 6) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20090318
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20090218
+packetLen(0x019a, -1) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20090211
+packetLen(0x019a, 33) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20090204
+packetLen(0x019a, -1) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20090129
+packetLen(0x019a, 4) // ZC_NOTIFY_RANKING
+#elif PACKETVER >= 20090107
+packetLen(0x019a, 17) // ZC_NOTIFY_RANKING
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x019b
+#if PACKETVER >= 20090406
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20090401
+packetLen(0x019b, 4) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20090325
+packetLen(0x019b, 65) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20090311
+packetLen(0x019b, -1) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20090225
+packetLen(0x019b, 6) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20090211
+packetLen(0x019b, -1) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20090204
+packetLen(0x019b, 11) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20090129
+packetLen(0x019b, 4) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20090120
+packetLen(0x019b, 26) // ZC_NOTIFY_EFFECT
+#elif PACKETVER >= 20090107
+packetLen(0x019b, 8) // ZC_NOTIFY_EFFECT
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x019c
+#if PACKETVER >= 20090406
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20090401
+packetLen(0x019c, 2) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20090325
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20090318
+packetLen(0x019c, 8) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20090211
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20090204
+packetLen(0x019c, 8) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20090114
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+#elif PACKETVER >= 20090107
+packetLen(0x019c, 15) // CZ_LOCALBROADCAST
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x019d
+#if PACKETVER >= 20090406
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20090401
+packetLen(0x019d, 282) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20090325
+packetLen(0x019d, 30) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20090318
+packetLen(0x019d, 13) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20090311
+packetLen(0x019d, -1) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20090225
+packetLen(0x019d, 10) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20090114
+packetLen(0x019d, -1) // CZ_CHANGE_EFFECTSTATE
+#elif PACKETVER >= 20090107
+packetLen(0x019d, 60) // CZ_CHANGE_EFFECTSTATE
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+#if PACKETVER >= 20090406
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20090401
+packetLen(0x019f, -1) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20090325
+packetLen(0x019f, 4) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20090318
+packetLen(0x019f, 53) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20090311
+packetLen(0x019f, 8) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20090225
+packetLen(0x019f, 5) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20090218
+packetLen(0x019f, -1) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20090211
+packetLen(0x019f, 7) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20090129
+packetLen(0x019f, -1) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20090120
+packetLen(0x019f, 15) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20090114
+packetLen(0x019f, 7) // CZ_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20090107
+packetLen(0x019f, 26) // CZ_TRYCAPTURE_MONSTER
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x01a0
+#if PACKETVER >= 20090406
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20090325
+packetLen(0x01a0, -1) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20090318
+packetLen(0x01a0, 79) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20090114
+packetLen(0x01a0, -1) // ZC_TRYCAPTURE_MONSTER
+#elif PACKETVER >= 20090107
+packetLen(0x01a0, 114) // ZC_TRYCAPTURE_MONSTER
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x01a1
+#if PACKETVER >= 20090406
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+#elif PACKETVER >= 20090325
+packetLen(0x01a1, -1) // CZ_COMMAND_PET
+#elif PACKETVER >= 20090318
+packetLen(0x01a1, 30) // CZ_COMMAND_PET
+#elif PACKETVER >= 20090311
+packetLen(0x01a1, 26) // CZ_COMMAND_PET
+#elif PACKETVER >= 20090107
+packetLen(0x01a1, -1) // CZ_COMMAND_PET
+#endif
+
+// Packet: 0x01a2
+#if PACKETVER >= 20090406
+packetLen(0x01a2, 37) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20090401
+packetLen(0x01a2, 21) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20090325
+packetLen(0x01a2, 31) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20090225
+packetLen(0x01a2, -1) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20090218
+packetLen(0x01a2, 7) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20090211
+packetLen(0x01a2, 4) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20090129
+packetLen(0x01a2, -1) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20090120
+packetLen(0x01a2, 59) // ZC_PROPERTY_PET
+#elif PACKETVER >= 20090107
+packetLen(0x01a2, -1) // ZC_PROPERTY_PET
+#endif
+
+// Packet: 0x01a3
+#if PACKETVER >= 20090406
+packetLen(0x01a3, 5) // ZC_FEED_PET
+#elif PACKETVER >= 20090401
+packetLen(0x01a3, -1) // ZC_FEED_PET
+#elif PACKETVER >= 20090325
+packetLen(0x01a3, 8) // ZC_FEED_PET
+#elif PACKETVER >= 20090211
+packetLen(0x01a3, -1) // ZC_FEED_PET
+#elif PACKETVER >= 20090204
+packetLen(0x01a3, 6) // ZC_FEED_PET
+#elif PACKETVER >= 20090129
+packetLen(0x01a3, -1) // ZC_FEED_PET
+#elif PACKETVER >= 20090120
+packetLen(0x01a3, 6) // ZC_FEED_PET
+#elif PACKETVER >= 20090114
+packetLen(0x01a3, 3) // ZC_FEED_PET
+#elif PACKETVER >= 20090107
+packetLen(0x01a3, 2) // ZC_FEED_PET
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x01a4
+#if PACKETVER >= 20090406
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20090325
+packetLen(0x01a4, 6) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20090225
+packetLen(0x01a4, -1) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20090218
+packetLen(0x01a4, 8) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20090211
+packetLen(0x01a4, -1) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20090204
+packetLen(0x01a4, 3) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20090129
+packetLen(0x01a4, 27) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20090114
+packetLen(0x01a4, -1) // ZC_CHANGESTATE_PET
+#elif PACKETVER >= 20090107
+packetLen(0x01a4, 20) // ZC_CHANGESTATE_PET
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+#if PACKETVER >= 20090401
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20090325
+packetLen(0x01a6, 23) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20090318
+packetLen(0x01a6, 6) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20090225
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20090218
+packetLen(0x01a6, 182) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20090204
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20090129
+packetLen(0x01a6, 26) // ZC_PETEGG_LIST
+#elif PACKETVER >= 20090107
+packetLen(0x01a6, 58) // ZC_PETEGG_LIST
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x01a7
+#if PACKETVER >= 20090406
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20090401
+packetLen(0x01a7, 27) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20090325
+packetLen(0x01a7, 3) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20090318
+packetLen(0x01a7, 60) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20090311
+packetLen(0x01a7, 6) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20090225
+packetLen(0x01a7, -1) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20090218
+packetLen(0x01a7, 10) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20090204
+packetLen(0x01a7, -1) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20090129
+packetLen(0x01a7, 5) // CZ_SELECT_PETEGG
+#elif PACKETVER >= 20090107
+packetLen(0x01a7, -1) // CZ_SELECT_PETEGG
+#endif
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+#if PACKETVER >= 20090406
+packetLen(0x01aa, 10) // ZC_PET_ACT
+#elif PACKETVER >= 20090401
+packetLen(0x01aa, -1) // ZC_PET_ACT
+#elif PACKETVER >= 20090325
+packetLen(0x01aa, 14) // ZC_PET_ACT
+#elif PACKETVER >= 20090225
+packetLen(0x01aa, -1) // ZC_PET_ACT
+#elif PACKETVER >= 20090218
+packetLen(0x01aa, 86) // ZC_PET_ACT
+#elif PACKETVER >= 20090211
+packetLen(0x01aa, 79) // ZC_PET_ACT
+#elif PACKETVER >= 20090107
+packetLen(0x01aa, -1) // ZC_PET_ACT
+#endif
+
+// Packet: 0x01ab
+#if PACKETVER >= 20090406
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20090401
+packetLen(0x01ab, 4) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20090325
+packetLen(0x01ab, -1) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20090318
+packetLen(0x01ab, 23) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20090311
+packetLen(0x01ab, 26) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20090225
+packetLen(0x01ab, 10) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20090211
+packetLen(0x01ab, -1) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20090204
+packetLen(0x01ab, 57) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20090129
+packetLen(0x01ab, -1) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20090120
+packetLen(0x01ab, 6) // ZC_PAR_CHANGE_USER
+#elif PACKETVER >= 20090107
+packetLen(0x01ab, 5) // ZC_PAR_CHANGE_USER
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x01ac
+#if PACKETVER >= 20090406
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20090401
+packetLen(0x01ac, -1) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20090325
+packetLen(0x01ac, 28) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20090318
+packetLen(0x01ac, -1) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20090311
+packetLen(0x01ac, 4) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20090225
+packetLen(0x01ac, -1) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20090218
+packetLen(0x01ac, 13) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20090211
+packetLen(0x01ac, 68) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20090120
+packetLen(0x01ac, -1) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20090114
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+#elif PACKETVER >= 20090107
+packetLen(0x01ac, -1) // ZC_SKILL_UPDATE
+#endif
+
+// Packet: 0x01ad
+#if PACKETVER >= 20090401
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20090325
+packetLen(0x01ad, 24) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20090225
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20090218
+packetLen(0x01ad, 90) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20090211
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20090204
+packetLen(0x01ad, 27) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20090129
+packetLen(0x01ad, 10) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20090120
+packetLen(0x01ad, 60) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20090114
+packetLen(0x01ad, 14) // ZC_MAKINGARROW_LIST
+#elif PACKETVER >= 20090107
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+#endif
+
+// Packet: 0x01ae
+#if PACKETVER >= 20090406
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20090401
+packetLen(0x01ae, -1) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20090325
+packetLen(0x01ae, 18) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20090311
+packetLen(0x01ae, -1) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20090225
+packetLen(0x01ae, 6) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20090218
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20090204
+packetLen(0x01ae, 6) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20090120
+packetLen(0x01ae, -1) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20090114
+packetLen(0x01ae, 11) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20090107
+packetLen(0x01ae, 2) // CZ_REQ_MAKINGARROW
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+#if PACKETVER >= 20090406
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20090325
+packetLen(0x01b0, -1) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20090318
+packetLen(0x01b0, 7) // ZC_NPCSPRITE_CHANGE
+#elif PACKETVER >= 20090107
+packetLen(0x01b0, -1) // ZC_NPCSPRITE_CHANGE
+#endif
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+#if PACKETVER >= 20090406
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20090401
+packetLen(0x01b2, 4) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20090318
+packetLen(0x01b2, 6) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20090311
+packetLen(0x01b2, 44) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20090225
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20090218
+packetLen(0x01b2, 58) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20090204
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20090129
+packetLen(0x01b2, 7) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20090120
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20090114
+packetLen(0x01b2, 60) // CZ_REQ_OPENSTORE2
+#elif PACKETVER >= 20090107
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+#endif
+
+// Packet: 0x01b3
+#if PACKETVER >= 20090406
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20090401
+packetLen(0x01b3, -1) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20090325
+packetLen(0x01b3, 3) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20090318
+packetLen(0x01b3, 6) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20090218
+packetLen(0x01b3, -1) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20090211
+packetLen(0x01b3, 8) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20090114
+packetLen(0x01b3, -1) // ZC_SHOW_IMAGE2
+#elif PACKETVER >= 20090107
+packetLen(0x01b3, 2) // ZC_SHOW_IMAGE2
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+#if PACKETVER >= 20090406
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20090401
+packetLen(0x01b6, 8) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20090325
+packetLen(0x01b6, 6) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20090318
+packetLen(0x01b6, 33) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20090311
+packetLen(0x01b6, 6) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20090225
+packetLen(0x01b6, 18) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20090218
+packetLen(0x01b6, 27) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20090211
+packetLen(0x01b6, -1) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20090204
+packetLen(0x01b6, 2) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20090120
+packetLen(0x01b6, -1) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20090114
+packetLen(0x01b6, 13) // ZC_GUILD_INFO2
+#elif PACKETVER >= 20090107
+packetLen(0x01b6, 16) // ZC_GUILD_INFO2
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+#if PACKETVER >= 20090406
+packetLen(0x01b9, 6) // ZC_DISPEL
+#elif PACKETVER >= 20090401
+packetLen(0x01b9, -1) // ZC_DISPEL
+#elif PACKETVER >= 20090325
+packetLen(0x01b9, 6) // ZC_DISPEL
+#elif PACKETVER >= 20090311
+packetLen(0x01b9, -1) // ZC_DISPEL
+#elif PACKETVER >= 20090225
+packetLen(0x01b9, 2) // ZC_DISPEL
+#elif PACKETVER >= 20090211
+packetLen(0x01b9, -1) // ZC_DISPEL
+#elif PACKETVER >= 20090204
+packetLen(0x01b9, 26) // ZC_DISPEL
+#elif PACKETVER >= 20090129
+packetLen(0x01b9, 3) // ZC_DISPEL
+#elif PACKETVER >= 20090107
+packetLen(0x01b9, -1) // ZC_DISPEL
+#endif
+
+// Packet: 0x01ba
+#if PACKETVER >= 20090406
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+#elif PACKETVER >= 20090325
+packetLen(0x01ba, -1) // CZ_REMOVE_AID
+#elif PACKETVER >= 20090318
+packetLen(0x01ba, 6) // CZ_REMOVE_AID
+#elif PACKETVER >= 20090218
+packetLen(0x01ba, -1) // CZ_REMOVE_AID
+#elif PACKETVER >= 20090211
+packetLen(0x01ba, 10) // CZ_REMOVE_AID
+#elif PACKETVER >= 20090204
+packetLen(0x01ba, 6) // CZ_REMOVE_AID
+#elif PACKETVER >= 20090129
+packetLen(0x01ba, 30) // CZ_REMOVE_AID
+#elif PACKETVER >= 20090120
+packetLen(0x01ba, -1) // CZ_REMOVE_AID
+#elif PACKETVER >= 20090114
+packetLen(0x01ba, 30) // CZ_REMOVE_AID
+#elif PACKETVER >= 20090107
+packetLen(0x01ba, 15) // CZ_REMOVE_AID
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x01bb
+#if PACKETVER >= 20090406
+packetLen(0x01bb, 26) // CZ_SHIFT
+#elif PACKETVER >= 20090325
+packetLen(0x01bb, -1) // CZ_SHIFT
+#elif PACKETVER >= 20090318
+packetLen(0x01bb, 6) // CZ_SHIFT
+#elif PACKETVER >= 20090225
+packetLen(0x01bb, -1) // CZ_SHIFT
+#elif PACKETVER >= 20090218
+packetLen(0x01bb, 6) // CZ_SHIFT
+#elif PACKETVER >= 20090211
+packetLen(0x01bb, 26) // CZ_SHIFT
+#elif PACKETVER >= 20090204
+packetLen(0x01bb, 12) // CZ_SHIFT
+#elif PACKETVER >= 20090129
+packetLen(0x01bb, -1) // CZ_SHIFT
+#elif PACKETVER >= 20090120
+packetLen(0x01bb, 4) // CZ_SHIFT
+#elif PACKETVER >= 20090114
+packetLen(0x01bb, -1) // CZ_SHIFT
+#elif PACKETVER >= 20090107
+packetLen(0x01bb, 10) // CZ_SHIFT
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x01bc
+#if PACKETVER >= 20090406
+packetLen(0x01bc, 26) // CZ_RECALL
+#elif PACKETVER >= 20090401
+packetLen(0x01bc, 6) // CZ_RECALL
+#elif PACKETVER >= 20090325
+packetLen(0x01bc, -1) // CZ_RECALL
+#elif PACKETVER >= 20090318
+packetLen(0x01bc, 6) // CZ_RECALL
+#elif PACKETVER >= 20090225
+packetLen(0x01bc, -1) // CZ_RECALL
+#elif PACKETVER >= 20090218
+packetLen(0x01bc, 14) // CZ_RECALL
+#elif PACKETVER >= 20090129
+packetLen(0x01bc, -1) // CZ_RECALL
+#elif PACKETVER >= 20090120
+packetLen(0x01bc, 7) // CZ_RECALL
+#elif PACKETVER >= 20090107
+packetLen(0x01bc, 4) // CZ_RECALL
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x01bd
+#if PACKETVER >= 20090406
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+#elif PACKETVER >= 20090401
+packetLen(0x01bd, -1) // CZ_RECALL_GID
+#elif PACKETVER >= 20090325
+packetLen(0x01bd, 30) // CZ_RECALL_GID
+#elif PACKETVER >= 20090318
+packetLen(0x01bd, -1) // CZ_RECALL_GID
+#elif PACKETVER >= 20090311
+packetLen(0x01bd, 22) // CZ_RECALL_GID
+#elif PACKETVER >= 20090211
+packetLen(0x01bd, -1) // CZ_RECALL_GID
+#elif PACKETVER >= 20090204
+packetLen(0x01bd, 65) // CZ_RECALL_GID
+#elif PACKETVER >= 20090129
+packetLen(0x01bd, 10) // CZ_RECALL_GID
+#elif PACKETVER >= 20090107
+packetLen(0x01bd, -1) // CZ_RECALL_GID
+#endif
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+#if PACKETVER >= 20090318
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+#elif PACKETVER >= 20090311
+packetLen(0x01c3, 15) // ZC_BROADCAST2
+#elif PACKETVER >= 20090218
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+#elif PACKETVER >= 20090211
+packetLen(0x01c3, 2) // ZC_BROADCAST2
+#elif PACKETVER >= 20090129
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+#elif PACKETVER >= 20090120
+packetLen(0x01c3, 2) // ZC_BROADCAST2
+#elif PACKETVER >= 20090114
+packetLen(0x01c3, 15) // ZC_BROADCAST2
+#elif PACKETVER >= 20090107
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+#endif
+
+// Packet: 0x01c4
+#if PACKETVER >= 20090406
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20090401
+packetLen(0x01c4, 81) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20090325
+packetLen(0x01c4, 8) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20090318
+packetLen(0x01c4, 16) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20090311
+packetLen(0x01c4, -1) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20090225
+packetLen(0x01c4, 7) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20090204
+packetLen(0x01c4, -1) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20090129
+packetLen(0x01c4, 6) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20090114
+packetLen(0x01c4, -1) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20090107
+packetLen(0x01c4, 9) // ZC_ADD_ITEM_TO_STORE2
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x01c5
+#if PACKETVER >= 20090406
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20090401
+packetLen(0x01c5, 32) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20090325
+packetLen(0x01c5, -1) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20090318
+packetLen(0x01c5, 10) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20090311
+packetLen(0x01c5, 6) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20090120
+packetLen(0x01c5, -1) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20090114
+packetLen(0x01c5, 2) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20090107
+packetLen(0x01c5, -1) // ZC_ADD_ITEM_TO_CART2
+#endif
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+#if PACKETVER >= 20090406
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20090325
+packetLen(0x01c8, -1) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20090318
+packetLen(0x01c8, 43) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20090311
+packetLen(0x01c8, 3) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20090225
+packetLen(0x01c8, 53) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20090211
+packetLen(0x01c8, -1) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20090204
+packetLen(0x01c8, 10) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20090120
+packetLen(0x01c8, -1) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20090114
+packetLen(0x01c8, 4) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20090107
+packetLen(0x01c8, -1) // ZC_USE_ITEM_ACK2
+#endif
+
+// Packet: 0x01c9
+#if PACKETVER >= 20090406
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20090401
+packetLen(0x01c9, -1) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20090325
+packetLen(0x01c9, 28) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20090318
+packetLen(0x01c9, 54) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20090311
+packetLen(0x01c9, -1) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20090225
+packetLen(0x01c9, 6) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20090218
+packetLen(0x01c9, 282) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20090211
+packetLen(0x01c9, 6) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20090204
+packetLen(0x01c9, 14) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20090129
+packetLen(0x01c9, 102) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20090120
+packetLen(0x01c9, 10) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20090114
+packetLen(0x01c9, 79) // ZC_SKILL_ENTRY2
+#elif PACKETVER >= 20090107
+packetLen(0x01c9, 32) // ZC_SKILL_ENTRY2
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+#if PACKETVER >= 20090406
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20090318
+packetLen(0x01cd, -1) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20090311
+packetLen(0x01cd, 6) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20090211
+packetLen(0x01cd, -1) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20090204
+packetLen(0x01cd, 26) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20090129
+packetLen(0x01cd, 8) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20090120
+packetLen(0x01cd, 18) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20090114
+packetLen(0x01cd, 33) // ZC_AUTOSPELLLIST
+#elif PACKETVER >= 20090107
+packetLen(0x01cd, 20) // ZC_AUTOSPELLLIST
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x01ce
+#if PACKETVER >= 20090406
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20090401
+packetLen(0x01ce, -1) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20090325
+packetLen(0x01ce, 26) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20090211
+packetLen(0x01ce, -1) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20090204
+packetLen(0x01ce, 11) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20090129
+packetLen(0x01ce, 14) // CZ_SELECTAUTOSPELL
+#elif PACKETVER >= 20090107
+packetLen(0x01ce, -1) // CZ_SELECTAUTOSPELL
+#endif
+
+// Packet: 0x01cf
+#if PACKETVER >= 20090406
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20090225
+packetLen(0x01cf, -1) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20090211
+packetLen(0x01cf, 4) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20090114
+packetLen(0x01cf, -1) // ZC_DEVOTIONLIST
+#elif PACKETVER >= 20090107
+packetLen(0x01cf, 2) // ZC_DEVOTIONLIST
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x01d0
+#if PACKETVER >= 20090406
+packetLen(0x01d0, 8) // ZC_SPIRITS
+#elif PACKETVER >= 20090401
+packetLen(0x01d0, 23) // ZC_SPIRITS
+#elif PACKETVER >= 20090325
+packetLen(0x01d0, -1) // ZC_SPIRITS
+#elif PACKETVER >= 20090318
+packetLen(0x01d0, 26) // ZC_SPIRITS
+#elif PACKETVER >= 20090225
+packetLen(0x01d0, -1) // ZC_SPIRITS
+#elif PACKETVER >= 20090218
+packetLen(0x01d0, 30) // ZC_SPIRITS
+#elif PACKETVER >= 20090211
+packetLen(0x01d0, 8) // ZC_SPIRITS
+#elif PACKETVER >= 20090204
+packetLen(0x01d0, 36) // ZC_SPIRITS
+#elif PACKETVER >= 20090129
+packetLen(0x01d0, 10) // ZC_SPIRITS
+#elif PACKETVER >= 20090114
+packetLen(0x01d0, -1) // ZC_SPIRITS
+#elif PACKETVER >= 20090107
+packetLen(0x01d0, 30) // ZC_SPIRITS
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+#if PACKETVER >= 20090406
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+#elif PACKETVER >= 20090401
+packetLen(0x01d2, -1) // ZC_COMBODELAY
+#elif PACKETVER >= 20090325
+packetLen(0x01d2, 54) // ZC_COMBODELAY
+#elif PACKETVER >= 20090318
+packetLen(0x01d2, -1) // ZC_COMBODELAY
+#elif PACKETVER >= 20090311
+packetLen(0x01d2, 2) // ZC_COMBODELAY
+#elif PACKETVER >= 20090225
+packetLen(0x01d2, 26) // ZC_COMBODELAY
+#elif PACKETVER >= 20090218
+packetLen(0x01d2, 3) // ZC_COMBODELAY
+#elif PACKETVER >= 20090129
+packetLen(0x01d2, -1) // ZC_COMBODELAY
+#elif PACKETVER >= 20090120
+packetLen(0x01d2, 22) // ZC_COMBODELAY
+#elif PACKETVER >= 20090107
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+#if PACKETVER >= 20090406
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20090401
+packetLen(0x01d4, -1) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20090325
+packetLen(0x01d4, 7) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20090318
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20090311
+packetLen(0x01d4, 53) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20090204
+packetLen(0x01d4, -1) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20090129
+packetLen(0x01d4, 8) // ZC_OPEN_EDITDLGSTR
+#elif PACKETVER >= 20090107
+packetLen(0x01d4, -1) // ZC_OPEN_EDITDLGSTR
+#endif
+
+// Packet: 0x01d5
+#if PACKETVER >= 20090401
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20090318
+packetLen(0x01d5, 2) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20090120
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20090114
+packetLen(0x01d5, 14) // CZ_INPUT_EDITDLGSTR
+#elif PACKETVER >= 20090107
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+#endif
+
+// Packet: 0x01d6
+#if PACKETVER >= 20090406
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20090401
+packetLen(0x01d6, 2) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20090325
+packetLen(0x01d6, 3) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20090318
+packetLen(0x01d6, 8) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20090311
+packetLen(0x01d6, 30) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20090211
+packetLen(0x01d6, -1) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20090204
+packetLen(0x01d6, 2) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20090129
+packetLen(0x01d6, 26) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20090114
+packetLen(0x01d6, -1) // ZC_NOTIFY_MAPPROPERTY2
+#elif PACKETVER >= 20090107
+packetLen(0x01d6, 11) // ZC_NOTIFY_MAPPROPERTY2
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x01d7
+#if PACKETVER >= 20090406
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20090401
+packetLen(0x01d7, -1) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20090325
+packetLen(0x01d7, 14) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20090311
+packetLen(0x01d7, -1) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20090225
+packetLen(0x01d7, 5) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20090218
+packetLen(0x01d7, 59) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20090204
+packetLen(0x01d7, -1) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20090129
+packetLen(0x01d7, 16) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20090107
+packetLen(0x01d7, 114) // ZC_SPRITE_CHANGE2
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x01d8
+#if PACKETVER >= 20090406
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20090401
+packetLen(0x01d8, 19) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20090325
+packetLen(0x01d8, -1) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20090318
+packetLen(0x01d8, 57) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20090129
+packetLen(0x01d8, -1) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20090114
+packetLen(0x01d8, 7) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20090107
+packetLen(0x01d8, 39) // ZC_NOTIFY_STANDENTRY2
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x01d9
+#if PACKETVER >= 20090406
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20090325
+packetLen(0x01d9, -1) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20090318
+packetLen(0x01d9, 3) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20090311
+packetLen(0x01d9, 31) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20090218
+packetLen(0x01d9, -1) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20090211
+packetLen(0x01d9, 11) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20090204
+packetLen(0x01d9, 22) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20090129
+packetLen(0x01d9, 37) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20090120
+packetLen(0x01d9, -1) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20090114
+packetLen(0x01d9, 54) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20090107
+packetLen(0x01d9, 28) // ZC_NOTIFY_NEWENTRY2
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x01da
+#if PACKETVER >= 20090406
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20090401
+packetLen(0x01da, -1) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20090325
+packetLen(0x01da, 11) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20090204
+packetLen(0x01da, -1) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20090129
+packetLen(0x01da, 2) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20090120
+packetLen(0x01da, 22) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20090114
+packetLen(0x01da, 4) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20090107
+packetLen(0x01da, -1) // ZC_NOTIFY_MOVEENTRY2
+#endif
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+#if PACKETVER >= 20090406
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20090401
+packetLen(0x01de, 18) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20090318
+packetLen(0x01de, -1) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20090311
+packetLen(0x01de, 67) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20090225
+packetLen(0x01de, 59) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20090218
+packetLen(0x01de, 11) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20090204
+packetLen(0x01de, -1) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20090129
+packetLen(0x01de, 3) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20090120
+packetLen(0x01de, -1) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20090114
+packetLen(0x01de, 282) // ZC_NOTIFY_SKILL2
+#elif PACKETVER >= 20090107
+packetLen(0x01de, -1) // ZC_NOTIFY_SKILL2
+#endif
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+#if PACKETVER >= 20090406
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+#elif PACKETVER >= 20090325
+packetLen(0x01e1, -1) // ZC_SPIRITS2
+#elif PACKETVER >= 20090311
+packetLen(0x01e1, 5) // ZC_SPIRITS2
+#elif PACKETVER >= 20090218
+packetLen(0x01e1, -1) // ZC_SPIRITS2
+#elif PACKETVER >= 20090211
+packetLen(0x01e1, 10) // ZC_SPIRITS2
+#elif PACKETVER >= 20090129
+packetLen(0x01e1, -1) // ZC_SPIRITS2
+#elif PACKETVER >= 20090120
+packetLen(0x01e1, 26) // ZC_SPIRITS2
+#elif PACKETVER >= 20090114
+packetLen(0x01e1, 7) // ZC_SPIRITS2
+#elif PACKETVER >= 20090107
+packetLen(0x01e1, -1) // ZC_SPIRITS2
+#endif
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+#if PACKETVER >= 20090406
+packetLen(0x01e7, 2) // CZ_DORIDORI
+#elif PACKETVER >= 20090401
+packetLen(0x01e7, 8) // CZ_DORIDORI
+#elif PACKETVER >= 20090325
+packetLen(0x01e7, -1) // CZ_DORIDORI
+#elif PACKETVER >= 20090318
+packetLen(0x01e7, 86) // CZ_DORIDORI
+#elif PACKETVER >= 20090311
+packetLen(0x01e7, 10) // CZ_DORIDORI
+#elif PACKETVER >= 20090225
+packetLen(0x01e7, 7) // CZ_DORIDORI
+#elif PACKETVER >= 20090218
+packetLen(0x01e7, -1) // CZ_DORIDORI
+#elif PACKETVER >= 20090211
+packetLen(0x01e7, 8) // CZ_DORIDORI
+#elif PACKETVER >= 20090129
+packetLen(0x01e7, -1) // CZ_DORIDORI
+#elif PACKETVER >= 20090120
+packetLen(0x01e7, 5) // CZ_DORIDORI
+#elif PACKETVER >= 20090114
+packetLen(0x01e7, -1) // CZ_DORIDORI
+#elif PACKETVER >= 20090107
+packetLen(0x01e7, 15) // CZ_DORIDORI
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x01e8
+#if PACKETVER >= 20090406
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20090401
+packetLen(0x01e8, 6) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20090325
+packetLen(0x01e8, 4) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20090225
+packetLen(0x01e8, -1) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20090218
+packetLen(0x01e8, 10) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20090204
+packetLen(0x01e8, -1) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20090129
+packetLen(0x01e8, 10) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20090120
+packetLen(0x01e8, -1) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20090114
+packetLen(0x01e8, 14) // CZ_MAKE_GROUP2
+#elif PACKETVER >= 20090107
+packetLen(0x01e8, -1) // CZ_MAKE_GROUP2
+#endif
+
+// Packet: 0x01e9
+#if PACKETVER >= 20090406
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20090325
+packetLen(0x01e9, -1) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20090318
+packetLen(0x01e9, 28) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20090211
+packetLen(0x01e9, -1) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20090204
+packetLen(0x01e9, 79) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20090129
+packetLen(0x01e9, 6) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20090120
+packetLen(0x01e9, 27) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20090114
+packetLen(0x01e9, 55) // ZC_ADD_MEMBER_TO_GROUP2
+#elif PACKETVER >= 20090107
+packetLen(0x01e9, 17) // ZC_ADD_MEMBER_TO_GROUP2
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x01ea
+#if PACKETVER >= 20090406
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+#elif PACKETVER >= 20090401
+packetLen(0x01ea, -1) // ZC_CONGRATULATION
+#elif PACKETVER >= 20090325
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+#elif PACKETVER >= 20090318
+packetLen(0x01ea, 2) // ZC_CONGRATULATION
+#elif PACKETVER >= 20090311
+packetLen(0x01ea, 59) // ZC_CONGRATULATION
+#elif PACKETVER >= 20090225
+packetLen(0x01ea, -1) // ZC_CONGRATULATION
+#elif PACKETVER >= 20090218
+packetLen(0x01ea, 66) // ZC_CONGRATULATION
+#elif PACKETVER >= 20090211
+packetLen(0x01ea, -1) // ZC_CONGRATULATION
+#elif PACKETVER >= 20090204
+packetLen(0x01ea, 3) // ZC_CONGRATULATION
+#elif PACKETVER >= 20090129
+packetLen(0x01ea, -1) // ZC_CONGRATULATION
+#elif PACKETVER >= 20090120
+packetLen(0x01ea, 90) // ZC_CONGRATULATION
+#elif PACKETVER >= 20090114
+packetLen(0x01ea, -1) // ZC_CONGRATULATION
+#elif PACKETVER >= 20090107
+packetLen(0x01ea, 3) // ZC_CONGRATULATION
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x01eb
+#if PACKETVER >= 20090406
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20090401
+packetLen(0x01eb, 2) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20090325
+packetLen(0x01eb, 14) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20090225
+packetLen(0x01eb, -1) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20090218
+packetLen(0x01eb, 33) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20090211
+packetLen(0x01eb, 6) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20090204
+packetLen(0x01eb, -1) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20090129
+packetLen(0x01eb, 23) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20090120
+packetLen(0x01eb, -1) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20090114
+packetLen(0x01eb, 59) // ZC_NOTIFY_POSITION_TO_GUILDM
+#elif PACKETVER >= 20090107
+packetLen(0x01eb, -1) // ZC_NOTIFY_POSITION_TO_GUILDM
+#endif
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+#if PACKETVER >= 20090406
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+#elif PACKETVER >= 20090401
+packetLen(0x01ed, -1) // CZ_CHOPOKGI
+#elif PACKETVER >= 20090325
+packetLen(0x01ed, 5) // CZ_CHOPOKGI
+#elif PACKETVER >= 20090311
+packetLen(0x01ed, -1) // CZ_CHOPOKGI
+#elif PACKETVER >= 20090211
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+#elif PACKETVER >= 20090107
+packetLen(0x01ed, 67) // CZ_CHOPOKGI
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x01ee
+#if PACKETVER >= 20090401
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20090325
+packetLen(0x01ee, 4) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20090318
+packetLen(0x01ee, 7) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20090311
+packetLen(0x01ee, 6) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20090218
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20090211
+packetLen(0x01ee, 6) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20090129
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20090120
+packetLen(0x01ee, 2) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20090114
+packetLen(0x01ee, 11) // ZC_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20090107
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+#endif
+
+// Packet: 0x01ef
+#if PACKETVER >= 20090325
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20090318
+packetLen(0x01ef, 9) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20090225
+packetLen(0x01ef, 2) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20090218
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20090211
+packetLen(0x01ef, 4) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20090204
+packetLen(0x01ef, 18) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20090129
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20090120
+packetLen(0x01ef, 14) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20090114
+packetLen(0x01ef, 30) // ZC_CART_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20090107
+packetLen(0x01ef, 14) // ZC_CART_NORMAL_ITEMLIST2
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x01f0
+#if PACKETVER >= 20090401
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20090325
+packetLen(0x01f0, 60) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20090318
+packetLen(0x01f0, 6) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20090218
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20090211
+packetLen(0x01f0, 4) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20090204
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20090129
+packetLen(0x01f0, 6) // ZC_STORE_NORMAL_ITEMLIST2
+#elif PACKETVER >= 20090107
+packetLen(0x01f0, 10) // ZC_STORE_NORMAL_ITEMLIST2
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+#if PACKETVER >= 20090406
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20090325
+packetLen(0x01f2, -1) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20090318
+packetLen(0x01f2, 11) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20090311
+packetLen(0x01f2, 4) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20090225
+packetLen(0x01f2, -1) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20090218
+packetLen(0x01f2, 18) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20090211
+packetLen(0x01f2, -1) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20090204
+packetLen(0x01f2, 5) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20090114
+packetLen(0x01f2, -1) // ZC_UPDATE_CHARSTAT2
+#elif PACKETVER >= 20090107
+packetLen(0x01f2, 12) // ZC_UPDATE_CHARSTAT2
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+#if PACKETVER >= 20090406
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20090401
+packetLen(0x01f4, -1) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20090325
+packetLen(0x01f4, 6) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20090318
+packetLen(0x01f4, -1) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20090311
+packetLen(0x01f4, 20) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20090225
+packetLen(0x01f4, 37) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20090120
+packetLen(0x01f4, -1) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20090114
+packetLen(0x01f4, 8) // ZC_REQ_EXCHANGE_ITEM2
+#elif PACKETVER >= 20090107
+packetLen(0x01f4, 12) // ZC_REQ_EXCHANGE_ITEM2
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x01f5
+#if PACKETVER >= 20090406
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20090225
+packetLen(0x01f5, -1) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20090218
+packetLen(0x01f5, 26) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20090211
+packetLen(0x01f5, 6) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20090204
+packetLen(0x01f5, 54) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20090129
+packetLen(0x01f5, -1) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20090120
+packetLen(0x01f5, 11) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20090114
+packetLen(0x01f5, -1) // ZC_ACK_EXCHANGE_ITEM2
+#elif PACKETVER >= 20090107
+packetLen(0x01f5, 3) // ZC_ACK_EXCHANGE_ITEM2
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+#if PACKETVER >= 20090325
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20090318
+packetLen(0x01fc, 8) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20090311
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20090225
+packetLen(0x01fc, 4) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20090211
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20090204
+packetLen(0x01fc, 30) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20090120
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+#elif PACKETVER >= 20090107
+packetLen(0x01fc, 11) // ZC_REPAIRITEMLIST
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x01fd
+#if PACKETVER >= 20090406
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20090401
+packetLen(0x01fd, -1) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20090325
+packetLen(0x01fd, 10) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20090318
+packetLen(0x01fd, -1) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20090311
+packetLen(0x01fd, 10) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20090225
+packetLen(0x01fd, 29) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20090218
+packetLen(0x01fd, 26) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20090120
+packetLen(0x01fd, -1) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20090114
+packetLen(0x01fd, 53) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20090107
+packetLen(0x01fd, -1) // CZ_REQ_ITEMREPAIR
+#endif
+
+// Packet: 0x01fe
+#if PACKETVER >= 20090406
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20090401
+packetLen(0x01fe, 28) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20090325
+packetLen(0x01fe, 44) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20090120
+packetLen(0x01fe, -1) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20090114
+packetLen(0x01fe, 10) // ZC_ACK_ITEMREPAIR
+#elif PACKETVER >= 20090107
+packetLen(0x01fe, 15) // ZC_ACK_ITEMREPAIR
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+#if PACKETVER >= 20090406
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20090401
+packetLen(0x0201, 58) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20090225
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20090218
+packetLen(0x0201, 5) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20090120
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20090114
+packetLen(0x0201, 4) // ZC_FRIENDS_LIST
+#elif PACKETVER >= 20090107
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+#endif
+
+// Packet: 0x0202
+#if PACKETVER >= 20090406
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20090401
+packetLen(0x0202, 4) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20090218
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20090211
+packetLen(0x0202, 27) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20090204
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20090129
+packetLen(0x0202, 13) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20090114
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20090107
+packetLen(0x0202, 11) // CZ_ADD_FRIENDS
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0203
+#if PACKETVER >= 20090406
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20090401
+packetLen(0x0203, 26) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20090325
+packetLen(0x0203, 2) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20090318
+packetLen(0x0203, -1) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20090311
+packetLen(0x0203, 7) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20090225
+packetLen(0x0203, 11) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20090218
+packetLen(0x0203, -1) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20090211
+packetLen(0x0203, 29) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20090204
+packetLen(0x0203, 67) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20090129
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20090120
+packetLen(0x0203, 2) // CZ_DELETE_FRIENDS
+#elif PACKETVER >= 20090107
+packetLen(0x0203, -1) // CZ_DELETE_FRIENDS
+#endif
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+#if PACKETVER >= 20090406
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20090401
+packetLen(0x0206, -1) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20090325
+packetLen(0x0206, 18) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20090318
+packetLen(0x0206, 71) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20090311
+packetLen(0x0206, -1) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20090225
+packetLen(0x0206, 14) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20090218
+packetLen(0x0206, 7) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20090211
+packetLen(0x0206, -1) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20090204
+packetLen(0x0206, 3) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20090129
+packetLen(0x0206, -1) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20090120
+packetLen(0x0206, 4) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20090107
+packetLen(0x0206, 6) // ZC_FRIENDS_STATE
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0207
+#if PACKETVER >= 20090406
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20090401
+packetLen(0x0207, -1) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20090325
+packetLen(0x0207, 7) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20090318
+packetLen(0x0207, 9) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20090311
+packetLen(0x0207, 3) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20090225
+packetLen(0x0207, 7) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20090218
+packetLen(0x0207, 9) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20090211
+packetLen(0x0207, -1) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20090204
+packetLen(0x0207, 30) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20090129
+packetLen(0x0207, 7) // ZC_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20090107
+packetLen(0x0207, -1) // ZC_REQ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0208
+#if PACKETVER >= 20090406
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20090401
+packetLen(0x0208, -1) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20090325
+packetLen(0x0208, 2) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20090318
+packetLen(0x0208, 31) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20090311
+packetLen(0x0208, 8) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20090225
+packetLen(0x0208, 6) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20090218
+packetLen(0x0208, 30) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20090120
+packetLen(0x0208, -1) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20090114
+packetLen(0x0208, 26) // CZ_ACK_REQ_ADD_FRIENDS
+#elif PACKETVER >= 20090107
+packetLen(0x0208, -1) // CZ_ACK_REQ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0209
+#if PACKETVER >= 20090406
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20090401
+packetLen(0x0209, -1) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20090325
+packetLen(0x0209, 4) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20090318
+packetLen(0x0209, 6) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20090311
+packetLen(0x0209, 4) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20090225
+packetLen(0x0209, 2) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20090204
+packetLen(0x0209, -1) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20090129
+packetLen(0x0209, 86) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20090120
+packetLen(0x0209, 6) // ZC_ADD_FRIENDS_LIST
+#elif PACKETVER >= 20090107
+packetLen(0x0209, -1) // ZC_ADD_FRIENDS_LIST
+#endif
+
+// Packet: 0x020a
+#if PACKETVER >= 20090406
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20090401
+packetLen(0x020a, 31) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20090311
+packetLen(0x020a, -1) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20090225
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20090218
+packetLen(0x020a, 2) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20090120
+packetLen(0x020a, -1) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20090114
+packetLen(0x020a, 4) // ZC_DELETE_FRIENDS
+#elif PACKETVER >= 20090107
+packetLen(0x020a, 4) // ZC_DELETE_FRIENDS
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+#if PACKETVER >= 20090406
+packetLen(0x020e, 32) // ZC_STARSKILL
+#elif PACKETVER >= 20090318
+packetLen(0x020e, -1) // ZC_STARSKILL
+#elif PACKETVER >= 20090311
+packetLen(0x020e, 12) // ZC_STARSKILL
+#elif PACKETVER >= 20090225
+packetLen(0x020e, -1) // ZC_STARSKILL
+#elif PACKETVER >= 20090218
+packetLen(0x020e, 10) // ZC_STARSKILL
+#elif PACKETVER >= 20090211
+packetLen(0x020e, 4) // ZC_STARSKILL
+#elif PACKETVER >= 20090204
+packetLen(0x020e, 6) // ZC_STARSKILL
+#elif PACKETVER >= 20090129
+packetLen(0x020e, 2) // ZC_STARSKILL
+#elif PACKETVER >= 20090120
+packetLen(0x020e, 6) // ZC_STARSKILL
+#elif PACKETVER >= 20090107
+packetLen(0x020e, 6) // ZC_STARSKILL
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+#if PACKETVER >= 20090406
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20090401
+packetLen(0x0217, 102) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20090325
+packetLen(0x0217, 3) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20090311
+packetLen(0x0217, -1) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20090225
+packetLen(0x0217, 8) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20090218
+packetLen(0x0217, -1) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20090211
+packetLen(0x0217, 26) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20090204
+packetLen(0x0217, 24) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20090129
+packetLen(0x0217, 10) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20090120
+packetLen(0x0217, 14) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20090114
+packetLen(0x0217, 44) // CZ_BLACKSMITH_RANK
+#elif PACKETVER >= 20090107
+packetLen(0x0217, -1) // CZ_BLACKSMITH_RANK
+#endif
+
+// Packet: 0x0218
+#if PACKETVER >= 20090406
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20090325
+packetLen(0x0218, -1) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20090318
+packetLen(0x0218, 28) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20090225
+packetLen(0x0218, -1) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20090218
+packetLen(0x0218, 9) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20090211
+packetLen(0x0218, 66) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20090204
+packetLen(0x0218, 6) // CZ_ALCHEMIST_RANK
+#elif PACKETVER >= 20090107
+packetLen(0x0218, -1) // CZ_ALCHEMIST_RANK
+#endif
+
+// Packet: 0x0219
+#if PACKETVER >= 20090406
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20090311
+packetLen(0x0219, -1) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20090225
+packetLen(0x0219, 28) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20090218
+packetLen(0x0219, -1) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20090211
+packetLen(0x0219, 6) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20090204
+packetLen(0x0219, -1) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20090129
+packetLen(0x0219, 58) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20090120
+packetLen(0x0219, -1) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20090114
+packetLen(0x0219, 2) // ZC_BLACKSMITH_RANK
+#elif PACKETVER >= 20090107
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x021a
+#if PACKETVER >= 20090406
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20090325
+packetLen(0x021a, -1) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20090318
+packetLen(0x021a, 23) // ZC_ALCHEMIST_RANK
+#elif PACKETVER >= 20090107
+packetLen(0x021a, -1) // ZC_ALCHEMIST_RANK
+#endif
+
+// Packet: 0x021b
+#if PACKETVER >= 20090406
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20090311
+packetLen(0x021b, -1) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20090225
+packetLen(0x021b, 6) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20090218
+packetLen(0x021b, 15) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20090204
+packetLen(0x021b, -1) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20090129
+packetLen(0x021b, 55) // ZC_BLACKSMITH_POINT
+#elif PACKETVER >= 20090107
+packetLen(0x021b, 28) // ZC_BLACKSMITH_POINT
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x021c
+#if PACKETVER >= 20090406
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20090401
+packetLen(0x021c, -1) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20090325
+packetLen(0x021c, 11) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20090311
+packetLen(0x021c, -1) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20090225
+packetLen(0x021c, 9) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20090218
+packetLen(0x021c, -1) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20090211
+packetLen(0x021c, 11) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20090204
+packetLen(0x021c, 2) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20090129
+packetLen(0x021c, -1) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20090120
+packetLen(0x021c, 79) // ZC_ALCHEMIST_POINT
+#elif PACKETVER >= 20090107
+packetLen(0x021c, -1) // ZC_ALCHEMIST_POINT
+#endif
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+#if PACKETVER >= 20090406
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20090401
+packetLen(0x0224, -1) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20090325
+packetLen(0x0224, 4) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20090318
+packetLen(0x0224, 6) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20090225
+packetLen(0x0224, -1) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20090218
+packetLen(0x0224, 19) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20090211
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20090204
+packetLen(0x0224, 2) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20090129
+packetLen(0x0224, 16) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20090120
+packetLen(0x0224, 26) // ZC_TAEKWON_POINT
+#elif PACKETVER >= 20090107
+packetLen(0x0224, 60) // ZC_TAEKWON_POINT
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0225
+#if PACKETVER >= 20090406
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20090401
+packetLen(0x0225, 66) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20090325
+packetLen(0x0225, -1) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20090318
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20090311
+packetLen(0x0225, 4) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20090225
+packetLen(0x0225, -1) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20090218
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20090211
+packetLen(0x0225, -1) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20090204
+packetLen(0x0225, 10) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20090129
+packetLen(0x0225, 44) // CZ_TAEKWON_RANK
+#elif PACKETVER >= 20090107
+packetLen(0x0225, -1) // CZ_TAEKWON_RANK
+#endif
+
+// Packet: 0x0226
+#if PACKETVER >= 20090406
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20090401
+packetLen(0x0226, -1) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20090325
+packetLen(0x0226, 2) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20090318
+packetLen(0x0226, 53) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20090311
+packetLen(0x0226, 55) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20090218
+packetLen(0x0226, -1) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20090211
+packetLen(0x0226, 10) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20090129
+packetLen(0x0226, -1) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20090114
+packetLen(0x0226, 6) // ZC_TAEKWON_RANK
+#elif PACKETVER >= 20090107
+packetLen(0x0226, 102) // ZC_TAEKWON_RANK
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0227
+#if PACKETVER >= 20090406
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+#elif PACKETVER >= 20090401
+packetLen(0x0227, 22) // ZC_GAME_GUARD
+#elif PACKETVER >= 20090311
+packetLen(0x0227, -1) // ZC_GAME_GUARD
+#elif PACKETVER >= 20090225
+packetLen(0x0227, 86) // ZC_GAME_GUARD
+#elif PACKETVER >= 20090218
+packetLen(0x0227, 17) // ZC_GAME_GUARD
+#elif PACKETVER >= 20090211
+packetLen(0x0227, 20) // ZC_GAME_GUARD
+#elif PACKETVER >= 20090204
+packetLen(0x0227, -1) // ZC_GAME_GUARD
+#elif PACKETVER >= 20090129
+packetLen(0x0227, 4) // ZC_GAME_GUARD
+#elif PACKETVER >= 20090120
+packetLen(0x0227, 29) // ZC_GAME_GUARD
+#elif PACKETVER >= 20090114
+packetLen(0x0227, 4) // ZC_GAME_GUARD
+#elif PACKETVER >= 20090107
+packetLen(0x0227, 9) // ZC_GAME_GUARD
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+#if PACKETVER >= 20090406
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20090401
+packetLen(0x0229, 33) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20090325
+packetLen(0x0229, 39) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20090318
+packetLen(0x0229, 27) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20090129
+packetLen(0x0229, -1) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20090120
+packetLen(0x0229, 9) // ZC_STATE_CHANGE3
+#elif PACKETVER >= 20090107
+packetLen(0x0229, -1) // ZC_STATE_CHANGE3
+#endif
+
+// Packet: 0x022a
+#if PACKETVER >= 20090406
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20090401
+packetLen(0x022a, 10) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20090325
+packetLen(0x022a, 6) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20090318
+packetLen(0x022a, 26) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20090311
+packetLen(0x022a, 3) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20090225
+packetLen(0x022a, -1) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20090218
+packetLen(0x022a, 6) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20090211
+packetLen(0x022a, 26) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20090204
+packetLen(0x022a, 4) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20090129
+packetLen(0x022a, -1) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20090120
+packetLen(0x022a, 282) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20090114
+packetLen(0x022a, -1) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20090107
+packetLen(0x022a, 30) // ZC_NOTIFY_STANDENTRY3
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x022b
+#if PACKETVER >= 20090406
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20090401
+packetLen(0x022b, -1) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20090325
+packetLen(0x022b, 2) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20090225
+packetLen(0x022b, -1) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20090218
+packetLen(0x022b, 12) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20090211
+packetLen(0x022b, 16) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20090129
+packetLen(0x022b, -1) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20090120
+packetLen(0x022b, 3) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20090107
+packetLen(0x022b, -1) // ZC_NOTIFY_NEWENTRY3
+#endif
+
+// Packet: 0x022c
+#if PACKETVER >= 20090406
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20090401
+packetLen(0x022c, 6) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20090318
+packetLen(0x022c, -1) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20090311
+packetLen(0x022c, 2) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20090211
+packetLen(0x022c, -1) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20090204
+packetLen(0x022c, 5) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20090114
+packetLen(0x022c, -1) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20090107
+packetLen(0x022c, 6) // ZC_NOTIFY_MOVEENTRY3
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x022d
+#if PACKETVER >= 20090406
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+#elif PACKETVER >= 20090401
+packetLen(0x022d, 27) // CZ_COMMAND_MER
+#elif PACKETVER >= 20090325
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20090318
+packetLen(0x022d, 10) // CZ_COMMAND_MER
+#elif PACKETVER >= 20090311
+packetLen(0x022d, 28) // CZ_COMMAND_MER
+#elif PACKETVER >= 20090225
+packetLen(0x022d, 11) // CZ_COMMAND_MER
+#elif PACKETVER >= 20090218
+packetLen(0x022d, 67) // CZ_COMMAND_MER
+#elif PACKETVER >= 20090211
+packetLen(0x022d, 31) // CZ_COMMAND_MER
+#elif PACKETVER >= 20090204
+packetLen(0x022d, 8) // CZ_COMMAND_MER
+#elif PACKETVER >= 20090114
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20090107
+packetLen(0x022d, 14) // CZ_COMMAND_MER
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x022e
+#if PACKETVER >= 20090406
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20090401
+packetLen(0x022e, 2) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20090325
+packetLen(0x022e, 16) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20090311
+packetLen(0x022e, -1) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20090225
+packetLen(0x022e, 26) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20090129
+packetLen(0x022e, -1) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20090120
+packetLen(0x022e, 8) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20090107
+packetLen(0x022e, 186) // ZC_PROPERTY_HOMUN
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x022f
+#if PACKETVER >= 20090406
+packetLen(0x022f, 5) // ZC_FEED_MER
+#elif PACKETVER >= 20090401
+packetLen(0x022f, 17) // ZC_FEED_MER
+#elif PACKETVER >= 20090325
+packetLen(0x022f, 39) // ZC_FEED_MER
+#elif PACKETVER >= 20090318
+packetLen(0x022f, -1) // ZC_FEED_MER
+#elif PACKETVER >= 20090311
+packetLen(0x022f, 23) // ZC_FEED_MER
+#elif PACKETVER >= 20090225
+packetLen(0x022f, -1) // ZC_FEED_MER
+#elif PACKETVER >= 20090218
+packetLen(0x022f, 12) // ZC_FEED_MER
+#elif PACKETVER >= 20090211
+packetLen(0x022f, 5) // ZC_FEED_MER
+#elif PACKETVER >= 20090129
+packetLen(0x022f, -1) // ZC_FEED_MER
+#elif PACKETVER >= 20090120
+packetLen(0x022f, 31) // ZC_FEED_MER
+#elif PACKETVER >= 20090114
+packetLen(0x022f, -1) // ZC_FEED_MER
+#elif PACKETVER >= 20090107
+packetLen(0x022f, 2) // ZC_FEED_MER
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0230
+#if PACKETVER >= 20090406
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20090311
+packetLen(0x0230, -1) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20090225
+packetLen(0x0230, 30) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20090218
+packetLen(0x0230, -1) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20090211
+packetLen(0x0230, 10) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20090204
+packetLen(0x0230, 15) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20090129
+packetLen(0x0230, -1) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20090120
+packetLen(0x0230, 15) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20090114
+packetLen(0x0230, 5) // ZC_CHANGESTATE_MER
+#elif PACKETVER >= 20090107
+packetLen(0x0230, -1) // ZC_CHANGESTATE_MER
+#endif
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+#if PACKETVER >= 20090406
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20090325
+packetLen(0x0232, -1) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20090318
+packetLen(0x0232, 6) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20090311
+packetLen(0x0232, -1) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20090225
+packetLen(0x0232, 8) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20090114
+packetLen(0x0232, -1) // CZ_REQUEST_MOVENPC
+#elif PACKETVER >= 20090107
+packetLen(0x0232, 3) // CZ_REQUEST_MOVENPC
+#endif
+
+// Packet: 0x0233
+#if PACKETVER >= 20090406
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20090401
+packetLen(0x0233, 10) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20090325
+packetLen(0x0233, 4) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20090311
+packetLen(0x0233, -1) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20090225
+packetLen(0x0233, 60) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20090218
+packetLen(0x0233, 10) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20090204
+packetLen(0x0233, 6) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20090129
+packetLen(0x0233, -1) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20090114
+packetLen(0x0233, 6) // CZ_REQUEST_ACTNPC
+#elif PACKETVER >= 20090107
+packetLen(0x0233, 7) // CZ_REQUEST_ACTNPC
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0234
+#if PACKETVER >= 20090406
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20090401
+packetLen(0x0234, 7) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20090318
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20090225
+packetLen(0x0234, -1) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20090218
+packetLen(0x0234, 7) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20090211
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20090204
+packetLen(0x0234, 16) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20090129
+packetLen(0x0234, -1) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20090120
+packetLen(0x0234, 10) // CZ_REQUEST_MOVETOOWNER
+#elif PACKETVER >= 20090107
+packetLen(0x0234, 10) // CZ_REQUEST_MOVETOOWNER
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0235
+#if PACKETVER >= 20090311
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20090225
+packetLen(0x0235, 22) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20090218
+packetLen(0x0235, 79) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20090211
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20090204
+packetLen(0x0235, 21) // ZC_HOSKILLINFO_LIST
+#elif PACKETVER >= 20090107
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+#endif
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+#if PACKETVER >= 20090401
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+#elif PACKETVER >= 20090325
+packetLen(0x0237, 43) // CZ_KILLER_RANK
+#elif PACKETVER >= 20090211
+packetLen(0x0237, -1) // CZ_KILLER_RANK
+#elif PACKETVER >= 20090204
+packetLen(0x0237, 19) // CZ_KILLER_RANK
+#elif PACKETVER >= 20090129
+packetLen(0x0237, 6) // CZ_KILLER_RANK
+#elif PACKETVER >= 20090120
+packetLen(0x0237, -1) // CZ_KILLER_RANK
+#elif PACKETVER >= 20090114
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+#elif PACKETVER >= 20090107
+packetLen(0x0237, -1) // CZ_KILLER_RANK
+#endif
+
+// Packet: 0x0238
+#if PACKETVER >= 20090406
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+#elif PACKETVER >= 20090401
+packetLen(0x0238, 6) // ZC_KILLER_RANK
+#elif PACKETVER >= 20090325
+packetLen(0x0238, -1) // ZC_KILLER_RANK
+#elif PACKETVER >= 20090318
+packetLen(0x0238, 3) // ZC_KILLER_RANK
+#elif PACKETVER >= 20090225
+packetLen(0x0238, -1) // ZC_KILLER_RANK
+#elif PACKETVER >= 20090218
+packetLen(0x0238, 6) // ZC_KILLER_RANK
+#elif PACKETVER >= 20090211
+packetLen(0x0238, 3) // ZC_KILLER_RANK
+#elif PACKETVER >= 20090204
+packetLen(0x0238, -1) // ZC_KILLER_RANK
+#elif PACKETVER >= 20090129
+packetLen(0x0238, 6) // ZC_KILLER_RANK
+#elif PACKETVER >= 20090120
+packetLen(0x0238, -1) // ZC_KILLER_RANK
+#elif PACKETVER >= 20090114
+packetLen(0x0238, 12) // ZC_KILLER_RANK
+#elif PACKETVER >= 20090107
+packetLen(0x0238, 22) // ZC_KILLER_RANK
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0239
+#if PACKETVER >= 20090406
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20090401
+packetLen(0x0239, 12) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20090325
+packetLen(0x0239, -1) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20090318
+packetLen(0x0239, 97) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20090218
+packetLen(0x0239, -1) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20090211
+packetLen(0x0239, 3) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20090204
+packetLen(0x0239, 10) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20090129
+packetLen(0x0239, 66) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20090120
+packetLen(0x0239, -1) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20090114
+packetLen(0x0239, 71) // ZC_HOSKILLINFO_UPDATE
+#elif PACKETVER >= 20090107
+packetLen(0x0239, 7) // ZC_HOSKILLINFO_UPDATE
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x023a
+#if PACKETVER >= 20090406
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20090401
+packetLen(0x023a, 15) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20090318
+packetLen(0x023a, -1) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20090311
+packetLen(0x023a, 79) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20090225
+packetLen(0x023a, 8) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20090204
+packetLen(0x023a, -1) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20090129
+packetLen(0x023a, 10) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20090120
+packetLen(0x023a, -1) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20090114
+packetLen(0x023a, 22) // ZC_REQ_STORE_PASSWORD
+#elif PACKETVER >= 20090107
+packetLen(0x023a, 90) // ZC_REQ_STORE_PASSWORD
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x023b
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+
+// Packet: 0x023c
+#if PACKETVER >= 20090406
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20090318
+packetLen(0x023c, -1) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20090311
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20090218
+packetLen(0x023c, -1) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20090211
+packetLen(0x023c, 4) // ZC_RESULT_STORE_PASSWORD
+#elif PACKETVER >= 20090107
+packetLen(0x023c, -1) // ZC_RESULT_STORE_PASSWORD
+#endif
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+#if PACKETVER >= 20090406
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20090401
+packetLen(0x0274, 15) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20090311
+packetLen(0x0274, -1) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20090225
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20090129
+packetLen(0x0274, -1) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20090120
+packetLen(0x0274, 2) // ZC_ACK_MAIL_RETURN
+#elif PACKETVER >= 20090107
+packetLen(0x0274, -1) // ZC_ACK_MAIL_RETURN
+#endif
+
+// Packet: 0x0275
+#if PACKETVER >= 20090701
+packetLen(0x0275, 37) // CH_ENTER2
+#endif
+
+// Packet: 0x0276
+#if PACKETVER >= 20090701
+packetLen(0x0276, -1) // AC_ACCEPT_LOGIN2
+#endif
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+packetLen(0x0281, 4) // CZ_GANGSI_RANK
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+#if PACKETVER >= 20090406
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20090401
+packetLen(0x0287, 10) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20090311
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20090225
+packetLen(0x0287, 2) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20090218
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20090211
+packetLen(0x0287, 7) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20090204
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20090129
+packetLen(0x0287, 8) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20090120
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20090114
+packetLen(0x0287, 3) // ZC_PC_CASH_POINT_ITEMLIST
+#elif PACKETVER >= 20090107
+packetLen(0x0287, 29) // ZC_PC_CASH_POINT_ITEMLIST
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0288
+packetLen(0x0288, 10) // CZ_PC_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0289
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+#if PACKETVER >= 20090318
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20090311
+packetLen(0x0295, 81) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20090225
+packetLen(0x0295, 8) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20090218
+packetLen(0x0295, 4) // ZC_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20090107
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+#endif
+
+// Packet: 0x0296
+#if PACKETVER >= 20090406
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20090401
+packetLen(0x0296, 4) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20090311
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20090218
+packetLen(0x0296, 6) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20090211
+packetLen(0x0296, 36) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20090204
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20090129
+packetLen(0x0296, 6) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20090120
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20090114
+packetLen(0x0296, 6) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20090107
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+#endif
+
+// Packet: 0x0297
+#if PACKETVER >= 20090211
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20090204
+packetLen(0x0297, 59) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20090129
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20090120
+packetLen(0x0297, 58) // ZC_CART_EQUIPMENT_ITEMLIST2
+#elif PACKETVER >= 20090107
+packetLen(0x0297, 6) // ZC_CART_EQUIPMENT_ITEMLIST2
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0298
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+
+// Packet: 0x0299
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+
+// Packet: 0x029a
+#if PACKETVER >= 20090406
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20090401
+packetLen(0x029a, 9) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20090325
+packetLen(0x029a, -1) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20090318
+packetLen(0x029a, 15) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20090311
+packetLen(0x029a, 32) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20090218
+packetLen(0x029a, -1) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20090211
+packetLen(0x029a, 102) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20090204
+packetLen(0x029a, -1) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20090129
+packetLen(0x029a, 2) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20090120
+packetLen(0x029a, -1) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20090107
+packetLen(0x029a, 6) // ZC_ITEM_PICKUP_ACK2
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x029b
+packetLen(0x029b, 80) // ZC_MER_INIT
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a5
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+
+// Packet: 0x02a6
+#if PACKETVER >= 20090408
+packetLen(0x02a6, -1) // ZC_HACKSH_CPX_MSG
+#elif PACKETVER >= 20090325
+packetLen(0x02a6, 404) // ZC_HACKSH_CPX_MSG
+#endif
+
+// Packet: 0x02a7
+#if PACKETVER >= 20090408
+packetLen(0x02a7, -1) // CZ_HACKSH_CPX_MSG
+#elif PACKETVER >= 20090325
+packetLen(0x02a7, 404) // CZ_HACKSH_CPX_MSG
+#endif
+
+// Packet: 0x02aa
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+
+// Packet: 0x02ab
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+
+// Packet: 0x02ac
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+
+// Packet: 0x02ad
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+
+// Packet: 0x02b0
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+
+// Packet: 0x02b1
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+
+// Packet: 0x02b2
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+
+// Packet: 0x02b3
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+
+// Packet: 0x02b4
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+
+// Packet: 0x02b5
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+
+// Packet: 0x02b6
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+
+// Packet: 0x02b7
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+
+// Packet: 0x02b8
+packetLen(0x02b8, 22) // ZC_ITEM_PICKUP_PARTY
+
+// Packet: 0x02b9
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+
+// Packet: 0x02ba
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+
+// Packet: 0x02bb
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+
+// Packet: 0x02bc
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+
+// Packet: 0x02c1
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+
+// Packet: 0x02c2
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+
+// Packet: 0x02c4
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+
+// Packet: 0x02c5
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c6
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+
+// Packet: 0x02c7
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c8
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+
+// Packet: 0x02c9
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+
+// Packet: 0x02ca
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+
+// Packet: 0x02cb
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+
+// Packet: 0x02cc
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+
+// Packet: 0x02cd
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+
+// Packet: 0x02ce
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+
+// Packet: 0x02cf
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+
+// Packet: 0x02d0
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d1
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d2
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d3
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+
+// Packet: 0x02d4
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+
+// Packet: 0x02d5
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+
+// Packet: 0x02d6
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d7
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d8
+packetLen(0x02d8, 10) // CZ_CONFIG
+
+// Packet: 0x02d9
+packetLen(0x02d9, 10) // ZC_CONFIG
+
+// Packet: 0x02da
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+
+// Packet: 0x02db
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+
+// Packet: 0x02dc
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+
+// Packet: 0x02dd
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+
+// Packet: 0x02de
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+
+// Packet: 0x02df
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+
+// Packet: 0x02e0
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+
+// Packet: 0x02e1
+#if PACKETVER >= 20090406
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20090325
+packetLen(0x02e1, -1) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20090318
+packetLen(0x02e1, 114) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20090311
+packetLen(0x02e1, -1) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20090225
+packetLen(0x02e1, 3) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20090218
+packetLen(0x02e1, 2) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20090211
+packetLen(0x02e1, -1) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20090204
+packetLen(0x02e1, 30) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20090129
+packetLen(0x02e1, -1) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20090120
+packetLen(0x02e1, 6) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20090114
+packetLen(0x02e1, 60) // ZC_NOTIFY_ACT2
+#elif PACKETVER >= 20090107
+packetLen(0x02e1, 7) // ZC_NOTIFY_ACT2
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x02e2
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+
+// Packet: 0x02e3
+packetLen(0x02e3, 22) // CZ_USE_SKILL_NEW_JAPEN
+
+// Packet: 0x02e4
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+
+// Packet: 0x02e5
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+
+// Packet: 0x02e6
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+
+// Packet: 0x02e7
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+
+// Packet: 0x02e8
+packetLen(0x02e8, -1) // ZC_NORMAL_ITEMLIST3
+
+// Packet: 0x02e9
+packetLen(0x02e9, -1) // ZC_CART_NORMAL_ITEMLIST3
+
+// Packet: 0x02ea
+packetLen(0x02ea, -1) // ZC_STORE_NORMAL_ITEMLIST3
+
+// Packet: 0x02eb
+packetLen(0x02eb, 13) // ZC_ACCEPT_ENTER2
+
+// Packet: 0x02ec
+#if PACKETVER >= 20090406
+packetLen(0x02ec, 67) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20090318
+packetLen(0x02ec, -1) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20090311
+packetLen(0x02ec, 7) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20090225
+packetLen(0x02ec, 2) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20090218
+packetLen(0x02ec, -1) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20090211
+packetLen(0x02ec, 26) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20090204
+packetLen(0x02ec, 4) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20090120
+packetLen(0x02ec, -1) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20090114
+packetLen(0x02ec, 9) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20090107
+packetLen(0x02ec, -1) // ZC_NOTIFY_MOVEENTRY4
+#endif
+
+// Packet: 0x02ed
+#if PACKETVER >= 20090406
+packetLen(0x02ed, 59) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20090401
+packetLen(0x02ed, 28) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20090325
+packetLen(0x02ed, 15) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20090318
+packetLen(0x02ed, 2) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20090311
+packetLen(0x02ed, 6) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20090225
+packetLen(0x02ed, 29) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20090211
+packetLen(0x02ed, -1) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20090204
+packetLen(0x02ed, 23) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20090129
+packetLen(0x02ed, -1) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20090120
+packetLen(0x02ed, 2) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20090107
+packetLen(0x02ed, -1) // ZC_NOTIFY_NEWENTRY4
+#endif
+
+// Packet: 0x02ee
+#if PACKETVER >= 20090406
+packetLen(0x02ee, 60) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20090401
+packetLen(0x02ee, 3) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20090325
+packetLen(0x02ee, 6) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20090318
+packetLen(0x02ee, 5) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20090311
+packetLen(0x02ee, 3) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20090211
+packetLen(0x02ee, -1) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20090204
+packetLen(0x02ee, 20) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20090129
+packetLen(0x02ee, 13) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20090120
+packetLen(0x02ee, 21) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20090107
+packetLen(0x02ee, -1) // ZC_NOTIFY_STANDENTRY4
+#endif
+
+// Packet: 0x02ef
+packetLen(0x02ef, 8) // ZC_NOTIFY_FONT
+
+// Packet: 0x02f0
+packetLen(0x02f0, 10) // ZC_PROGRESS
+
+// Packet: 0x02f1
+packetLen(0x02f1, 2) // CZ_PROGRESS
+
+// Packet: 0x02f2
+packetLen(0x02f2, 2) // ZC_PROGRESS_CANCEL
+
+// Packet: 0x02f3
+#if PACKETVER >= 20090406
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20090401
+packetLen(0x02f3, 58) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20090318
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20090311
+packetLen(0x02f3, 2) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20090218
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20090211
+packetLen(0x02f3, 10) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20090204
+packetLen(0x02f3, 27) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20090129
+packetLen(0x02f3, 8) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20090120
+packetLen(0x02f3, 4) // CZ_IRMAIL_SEND
+#elif PACKETVER >= 20090107
+packetLen(0x02f3, 3) // CZ_IRMAIL_SEND
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x02f4
+#if PACKETVER >= 20090401
+packetLen(0x02f4, -1) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20090325
+packetLen(0x02f4, 6) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20090318
+packetLen(0x02f4, 2) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20090311
+packetLen(0x02f4, 39) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20090225
+packetLen(0x02f4, -1) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20090218
+packetLen(0x02f4, 11) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20090211
+packetLen(0x02f4, 7) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20090204
+packetLen(0x02f4, 6) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20090129
+packetLen(0x02f4, -1) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20090120
+packetLen(0x02f4, 8) // ZC_IRMAIL_SEND_RES
+#elif PACKETVER >= 20090107
+packetLen(0x02f4, -1) // ZC_IRMAIL_SEND_RES
+#endif
+
+// Packet: 0x02f5
+#if PACKETVER >= 20090325
+packetLen(0x02f5, -1) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20090318
+packetLen(0x02f5, 10) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20090311
+packetLen(0x02f5, 60) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20090225
+packetLen(0x02f5, 6) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20090218
+packetLen(0x02f5, 8) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20090120
+packetLen(0x02f5, -1) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20090114
+packetLen(0x02f5, 8) // ZC_IRMAIL_NOTIFY
+#elif PACKETVER >= 20090107
+packetLen(0x02f5, 6) // ZC_IRMAIL_NOTIFY
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x02f6
+#if PACKETVER >= 20090401
+packetLen(0x02f6, -1) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20090325
+packetLen(0x02f6, 26) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20090318
+packetLen(0x02f6, -1) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20090311
+packetLen(0x02f6, 65) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20090225
+packetLen(0x02f6, 19) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20090218
+packetLen(0x02f6, -1) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20090211
+packetLen(0x02f6, 5) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20090129
+packetLen(0x02f6, 2) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20090120
+packetLen(0x02f6, 18) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20090114
+packetLen(0x02f6, -1) // CZ_IRMAIL_LIST
+#elif PACKETVER >= 20090107
+packetLen(0x02f6, 8) // CZ_IRMAIL_LIST
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x02f7
+#if PACKETVER >= 20090406
+packetLen(0x02f7, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x02f7, 4)
+#elif PACKETVER >= 20090225
+packetLen(0x02f7, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x02f7, 4)
+#elif PACKETVER >= 20090211
+packetLen(0x02f7, 24)
+#elif PACKETVER >= 20090204
+packetLen(0x02f7, 282)
+#elif PACKETVER >= 20090114
+packetLen(0x02f7, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x02f7, 22)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x02f8
+#if PACKETVER >= 20090406
+packetLen(0x02f8, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x02f8, 5)
+#elif PACKETVER >= 20090325
+packetLen(0x02f8, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x02f8, 3)
+#elif PACKETVER >= 20090311
+packetLen(0x02f8, 26)
+#elif PACKETVER >= 20090225
+packetLen(0x02f8, 6)
+#elif PACKETVER >= 20090218
+packetLen(0x02f8, 15)
+#elif PACKETVER >= 20090129
+packetLen(0x02f8, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x02f8, 14)
+#elif PACKETVER >= 20090114
+packetLen(0x02f8, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x02f8, 5)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x02f9
+#if PACKETVER >= 20090318
+packetLen(0x02f9, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x02f9, 11)
+#elif PACKETVER >= 20090218
+packetLen(0x02f9, 8)
+#elif PACKETVER >= 20090211
+packetLen(0x02f9, 5)
+#elif PACKETVER >= 20090204
+packetLen(0x02f9, 4)
+#elif PACKETVER >= 20090120
+packetLen(0x02f9, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x02f9, 6)
+#elif PACKETVER >= 20090107
+packetLen(0x02f9, 4)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x02fa
+#if PACKETVER >= 20090225
+packetLen(0x02fa, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x02fa, 11)
+#elif PACKETVER >= 20090211
+packetLen(0x02fa, 14)
+#elif PACKETVER >= 20090129
+packetLen(0x02fa, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x02fa, 10)
+#elif PACKETVER >= 20090107
+packetLen(0x02fa, 3)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x02fb
+#if PACKETVER >= 20090311
+packetLen(0x02fb, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x02fb, 58)
+#elif PACKETVER >= 20090218
+packetLen(0x02fb, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x02fb, 42)
+#elif PACKETVER >= 20090204
+packetLen(0x02fb, 30)
+#elif PACKETVER >= 20090129
+packetLen(0x02fb, 4)
+#elif PACKETVER >= 20090114
+packetLen(0x02fb, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x02fb, 10)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x02fc
+#if PACKETVER >= 20090325
+packetLen(0x02fc, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x02fc, 26)
+#elif PACKETVER >= 20090225
+packetLen(0x02fc, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x02fc, 6)
+#elif PACKETVER >= 20090211
+packetLen(0x02fc, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x02fc, 39)
+#elif PACKETVER >= 20090129
+packetLen(0x02fc, 54)
+#elif PACKETVER >= 20090107
+packetLen(0x02fc, -1)
+#endif
+
+// Packet: 0x02fd
+#if PACKETVER >= 20090406
+packetLen(0x02fd, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x02fd, 5)
+#elif PACKETVER >= 20090325
+packetLen(0x02fd, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x02fd, 4)
+#elif PACKETVER >= 20090311
+packetLen(0x02fd, 42)
+#elif PACKETVER >= 20090218
+packetLen(0x02fd, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x02fd, 182)
+#elif PACKETVER >= 20090129
+packetLen(0x02fd, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x02fd, 8)
+#elif PACKETVER >= 20090114
+packetLen(0x02fd, 102)
+#elif PACKETVER >= 20090107
+packetLen(0x02fd, 11)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x02fe
+#if PACKETVER >= 20090325
+packetLen(0x02fe, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x02fe, 5)
+#elif PACKETVER >= 20090311
+packetLen(0x02fe, 19)
+#elif PACKETVER >= 20090218
+packetLen(0x02fe, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x02fe, 9)
+#elif PACKETVER >= 20090204
+packetLen(0x02fe, 6)
+#elif PACKETVER >= 20090107
+packetLen(0x02fe, 2)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x02ff
+#if PACKETVER >= 20090406
+packetLen(0x02ff, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x02ff, 27)
+#elif PACKETVER >= 20090325
+packetLen(0x02ff, 11)
+#elif PACKETVER >= 20090225
+packetLen(0x02ff, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x02ff, 54)
+#elif PACKETVER >= 20090204
+packetLen(0x02ff, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x02ff, 9)
+#elif PACKETVER >= 20090120
+packetLen(0x02ff, 3)
+#elif PACKETVER >= 20090114
+packetLen(0x02ff, 30)
+#elif PACKETVER >= 20090107
+packetLen(0x02ff, -1)
+#endif
+
+// Packet: 0x0300
+#if PACKETVER >= 20090318
+packetLen(0x0300, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0300, 30)
+#elif PACKETVER >= 20090225
+packetLen(0x0300, 4)
+#elif PACKETVER >= 20090218
+packetLen(0x0300, 6)
+#elif PACKETVER >= 20090204
+packetLen(0x0300, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0300, 3)
+#elif PACKETVER >= 20090107
+packetLen(0x0300, 10)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0301
+#if PACKETVER >= 20090406
+packetLen(0x0301, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0301, 22)
+#elif PACKETVER >= 20090325
+packetLen(0x0301, 36)
+#elif PACKETVER >= 20090218
+packetLen(0x0301, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0301, 10)
+#elif PACKETVER >= 20090204
+packetLen(0x0301, 4)
+#elif PACKETVER >= 20090129
+packetLen(0x0301, 28)
+#elif PACKETVER >= 20090120
+packetLen(0x0301, 10)
+#elif PACKETVER >= 20090114
+packetLen(0x0301, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x0301, 10)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0302
+#if PACKETVER >= 20090325
+packetLen(0x0302, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x0302, 3)
+#elif PACKETVER >= 20090225
+packetLen(0x0302, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x0302, 10)
+#elif PACKETVER >= 20090211
+packetLen(0x0302, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x0302, 81)
+#elif PACKETVER >= 20090114
+packetLen(0x0302, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x0302, 55)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0303
+#if PACKETVER >= 20090318
+packetLen(0x0303, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0303, 10)
+#elif PACKETVER >= 20090225
+packetLen(0x0303, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x0303, 53)
+#elif PACKETVER >= 20090211
+packetLen(0x0303, 2)
+#elif PACKETVER >= 20090204
+packetLen(0x0303, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x0303, 39)
+#elif PACKETVER >= 20090120
+packetLen(0x0303, 26)
+#elif PACKETVER >= 20090114
+packetLen(0x0303, 10)
+#elif PACKETVER >= 20090107
+packetLen(0x0303, -1)
+#endif
+
+// Packet: 0x0304
+#if PACKETVER >= 20090406
+packetLen(0x0304, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0304, 6)
+#elif PACKETVER >= 20090325
+packetLen(0x0304, 29)
+#elif PACKETVER >= 20090318
+packetLen(0x0304, 19)
+#elif PACKETVER >= 20090225
+packetLen(0x0304, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x0304, 3)
+#elif PACKETVER >= 20090120
+packetLen(0x0304, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x0304, 3)
+#elif PACKETVER >= 20090107
+packetLen(0x0304, 26)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0305
+#if PACKETVER >= 20090318
+packetLen(0x0305, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0305, 16)
+#elif PACKETVER >= 20090120
+packetLen(0x0305, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x0305, 4)
+#elif PACKETVER >= 20090107
+packetLen(0x0305, 282)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0306
+#if PACKETVER >= 20090406
+packetLen(0x0306, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x0306, 12)
+#elif PACKETVER >= 20090318
+packetLen(0x0306, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0306, 282)
+#elif PACKETVER >= 20090225
+packetLen(0x0306, 24)
+#elif PACKETVER >= 20090218
+packetLen(0x0306, 33)
+#elif PACKETVER >= 20090120
+packetLen(0x0306, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x0306, 42)
+#elif PACKETVER >= 20090107
+packetLen(0x0306, 33)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0307
+#if PACKETVER >= 20090225
+packetLen(0x0307, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x0307, 6)
+#elif PACKETVER >= 20090211
+packetLen(0x0307, 2)
+#elif PACKETVER >= 20090107
+packetLen(0x0307, -1)
+#endif
+
+// Packet: 0x0308
+#if PACKETVER >= 20090406
+packetLen(0x0308, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0308, 26)
+#elif PACKETVER >= 20090325
+packetLen(0x0308, 16)
+#elif PACKETVER >= 20090311
+packetLen(0x0308, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x0308, 16)
+#elif PACKETVER >= 20090218
+packetLen(0x0308, 53)
+#elif PACKETVER >= 20090211
+packetLen(0x0308, 15)
+#elif PACKETVER >= 20090204
+packetLen(0x0308, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x0308, 6)
+#elif PACKETVER >= 20090107
+packetLen(0x0308, 6)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0309
+#if PACKETVER >= 20090406
+packetLen(0x0309, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0309, 8)
+#elif PACKETVER >= 20090325
+packetLen(0x0309, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x0309, 30)
+#elif PACKETVER >= 20090311
+packetLen(0x0309, 2)
+#elif PACKETVER >= 20090129
+packetLen(0x0309, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0309, 8)
+#elif PACKETVER >= 20090114
+packetLen(0x0309, 32)
+#elif PACKETVER >= 20090107
+packetLen(0x0309, 14)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x030a
+#if PACKETVER >= 20090325
+packetLen(0x030a, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x030a, 9)
+#elif PACKETVER >= 20090311
+packetLen(0x030a, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x030a, 4)
+#elif PACKETVER >= 20090218
+packetLen(0x030a, 3)
+#elif PACKETVER >= 20090211
+packetLen(0x030a, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x030a, 182)
+#elif PACKETVER >= 20090129
+packetLen(0x030a, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x030a, 10)
+#elif PACKETVER >= 20090107
+packetLen(0x030a, 32)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x030b
+#if PACKETVER >= 20090325
+packetLen(0x030b, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x030b, 4)
+#elif PACKETVER >= 20090311
+packetLen(0x030b, 9)
+#elif PACKETVER >= 20090225
+packetLen(0x030b, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x030b, 43)
+#elif PACKETVER >= 20090211
+packetLen(0x030b, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x030b, 282)
+#elif PACKETVER >= 20090129
+packetLen(0x030b, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x030b, 19)
+#elif PACKETVER >= 20090114
+packetLen(0x030b, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x030b, 4)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x030c
+#if PACKETVER >= 20090325
+packetLen(0x030c, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x030c, 5)
+#elif PACKETVER >= 20090225
+packetLen(0x030c, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x030c, 3)
+#elif PACKETVER >= 20090211
+packetLen(0x030c, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x030c, 6)
+#elif PACKETVER >= 20090107
+packetLen(0x030c, -1)
+#endif
+
+// Packet: 0x030d
+#if PACKETVER >= 20090406
+packetLen(0x030d, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x030d, 8)
+#elif PACKETVER >= 20090311
+packetLen(0x030d, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x030d, 67)
+#elif PACKETVER >= 20090218
+packetLen(0x030d, 10)
+#elif PACKETVER >= 20090211
+packetLen(0x030d, 27)
+#elif PACKETVER >= 20090129
+packetLen(0x030d, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x030d, 33)
+#elif PACKETVER >= 20090114
+packetLen(0x030d, 2)
+#elif PACKETVER >= 20090107
+packetLen(0x030d, 2)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x030e
+#if PACKETVER >= 20090406
+packetLen(0x030e, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x030e, 4)
+#elif PACKETVER >= 20090218
+packetLen(0x030e, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x030e, 6)
+#elif PACKETVER >= 20090129
+packetLen(0x030e, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x030e, 2)
+#elif PACKETVER >= 20090114
+packetLen(0x030e, 65)
+#elif PACKETVER >= 20090107
+packetLen(0x030e, 5)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x030f
+#if PACKETVER >= 20090401
+packetLen(0x030f, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x030f, 57)
+#elif PACKETVER >= 20090225
+packetLen(0x030f, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x030f, 2)
+#elif PACKETVER >= 20090204
+packetLen(0x030f, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x030f, 8)
+#elif PACKETVER >= 20090120
+packetLen(0x030f, 26)
+#elif PACKETVER >= 20090114
+packetLen(0x030f, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x030f, 53)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0310
+#if PACKETVER >= 20090218
+packetLen(0x0310, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0310, 2)
+#elif PACKETVER >= 20090204
+packetLen(0x0310, 11)
+#elif PACKETVER >= 20090129
+packetLen(0x0310, 3)
+#elif PACKETVER >= 20090120
+packetLen(0x0310, 15)
+#elif PACKETVER >= 20090114
+packetLen(0x0310, 2)
+#elif PACKETVER >= 20090107
+packetLen(0x0310, -1)
+#endif
+
+// Packet: 0x0311
+#if PACKETVER >= 20090406
+packetLen(0x0311, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0311, 6)
+#elif PACKETVER >= 20090325
+packetLen(0x0311, 5)
+#elif PACKETVER >= 20090204
+packetLen(0x0311, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x0311, 6)
+#elif PACKETVER >= 20090120
+packetLen(0x0311, 27)
+#elif PACKETVER >= 20090114
+packetLen(0x0311, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x0311, 2)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0312
+#if PACKETVER >= 20090325
+packetLen(0x0312, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x0312, 5)
+#elif PACKETVER >= 20090311
+packetLen(0x0312, 6)
+#elif PACKETVER >= 20090225
+packetLen(0x0312, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x0312, 5)
+#elif PACKETVER >= 20090211
+packetLen(0x0312, 4)
+#elif PACKETVER >= 20090114
+packetLen(0x0312, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x0312, 97)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0313
+#if PACKETVER >= 20090325
+packetLen(0x0313, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x0313, 5)
+#elif PACKETVER >= 20090311
+packetLen(0x0313, 6)
+#elif PACKETVER >= 20090211
+packetLen(0x0313, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x0313, 37)
+#elif PACKETVER >= 20090129
+packetLen(0x0313, 11)
+#elif PACKETVER >= 20090120
+packetLen(0x0313, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x0313, 10)
+#elif PACKETVER >= 20090107
+packetLen(0x0313, -1)
+#endif
+
+// Packet: 0x0314
+#if PACKETVER >= 20090406
+packetLen(0x0314, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0314, 6)
+#elif PACKETVER >= 20090218
+packetLen(0x0314, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0314, 60)
+#elif PACKETVER >= 20090129
+packetLen(0x0314, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0314, 102)
+#elif PACKETVER >= 20090114
+packetLen(0x0314, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x0314, 11)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0315
+#if PACKETVER >= 20090401
+packetLen(0x0315, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x0315, 2)
+#elif PACKETVER >= 20090318
+packetLen(0x0315, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0315, 6)
+#elif PACKETVER >= 20090225
+packetLen(0x0315, 5)
+#elif PACKETVER >= 20090204
+packetLen(0x0315, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x0315, 6)
+#elif PACKETVER >= 20090120
+packetLen(0x0315, 20)
+#elif PACKETVER >= 20090114
+packetLen(0x0315, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x0315, 30)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0316
+#if PACKETVER >= 20090406
+packetLen(0x0316, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0316, 13)
+#elif PACKETVER >= 20090325
+packetLen(0x0316, 8)
+#elif PACKETVER >= 20090225
+packetLen(0x0316, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x0316, 6)
+#elif PACKETVER >= 20090211
+packetLen(0x0316, 4)
+#elif PACKETVER >= 20090204
+packetLen(0x0316, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x0316, 11)
+#elif PACKETVER >= 20090120
+packetLen(0x0316, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x0316, 2)
+#elif PACKETVER >= 20090107
+packetLen(0x0316, 13)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0317
+#if PACKETVER >= 20090406
+packetLen(0x0317, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0317, 16)
+#elif PACKETVER >= 20090318
+packetLen(0x0317, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0317, 6)
+#elif PACKETVER >= 20090218
+packetLen(0x0317, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0317, 26)
+#elif PACKETVER >= 20090204
+packetLen(0x0317, 8)
+#elif PACKETVER >= 20090129
+packetLen(0x0317, 21)
+#elif PACKETVER >= 20090120
+packetLen(0x0317, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x0317, 5)
+#elif PACKETVER >= 20090107
+packetLen(0x0317, -1)
+#endif
+
+// Packet: 0x0318
+#if PACKETVER >= 20090401
+packetLen(0x0318, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x0318, 6)
+#elif PACKETVER >= 20090311
+packetLen(0x0318, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x0318, 6)
+#elif PACKETVER >= 20090204
+packetLen(0x0318, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x0318, 6)
+#elif PACKETVER >= 20090114
+packetLen(0x0318, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x0318, 59)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0319
+#if PACKETVER >= 20090401
+packetLen(0x0319, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x0319, 33)
+#elif PACKETVER >= 20090318
+packetLen(0x0319, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0319, 6)
+#elif PACKETVER >= 20090225
+packetLen(0x0319, 60)
+#elif PACKETVER >= 20090218
+packetLen(0x0319, 11)
+#elif PACKETVER >= 20090107
+packetLen(0x0319, -1)
+#endif
+
+// Packet: 0x031a
+#if PACKETVER >= 20090406
+packetLen(0x031a, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x031a, 6)
+#elif PACKETVER >= 20090318
+packetLen(0x031a, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x031a, 33)
+#elif PACKETVER >= 20090225
+packetLen(0x031a, 282)
+#elif PACKETVER >= 20090218
+packetLen(0x031a, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x031a, 2)
+#elif PACKETVER >= 20090204
+packetLen(0x031a, 7)
+#elif PACKETVER >= 20090120
+packetLen(0x031a, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x031a, 23)
+#elif PACKETVER >= 20090107
+packetLen(0x031a, 10)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x031b
+#if PACKETVER >= 20090218
+packetLen(0x031b, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x031b, 19)
+#elif PACKETVER >= 20090129
+packetLen(0x031b, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x031b, 7)
+#elif PACKETVER >= 20090107
+packetLen(0x031b, 282)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x031c
+#if PACKETVER >= 20090401
+packetLen(0x031c, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x031c, 14)
+#elif PACKETVER >= 20090225
+packetLen(0x031c, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x031c, 20)
+#elif PACKETVER >= 20090211
+packetLen(0x031c, 186)
+#elif PACKETVER >= 20090204
+packetLen(0x031c, 6)
+#elif PACKETVER >= 20090129
+packetLen(0x031c, 7)
+#elif PACKETVER >= 20090114
+packetLen(0x031c, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x031c, 30)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x031d
+#if PACKETVER >= 20090401
+packetLen(0x031d, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x031d, 6)
+#elif PACKETVER >= 20090318
+packetLen(0x031d, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x031d, 28)
+#elif PACKETVER >= 20090204
+packetLen(0x031d, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x031d, 5)
+#elif PACKETVER >= 20090107
+packetLen(0x031d, -1)
+#endif
+
+// Packet: 0x031e
+#if PACKETVER >= 20090311
+packetLen(0x031e, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x031e, 10)
+#elif PACKETVER >= 20090218
+packetLen(0x031e, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x031e, 2)
+#elif PACKETVER >= 20090114
+packetLen(0x031e, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x031e, 54)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x031f
+#if PACKETVER >= 20090401
+packetLen(0x031f, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x031f, 114)
+#elif PACKETVER >= 20090318
+packetLen(0x031f, 17)
+#elif PACKETVER >= 20090311
+packetLen(0x031f, 10)
+#elif PACKETVER >= 20090225
+packetLen(0x031f, 6)
+#elif PACKETVER >= 20090218
+packetLen(0x031f, 10)
+#elif PACKETVER >= 20090114
+packetLen(0x031f, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x031f, 71)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0320
+#if PACKETVER >= 20090204
+packetLen(0x0320, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x0320, 12)
+#elif PACKETVER >= 20090120
+packetLen(0x0320, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x0320, 16)
+#elif PACKETVER >= 20090107
+packetLen(0x0320, 8)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0321
+#if PACKETVER >= 20090401
+packetLen(0x0321, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x0321, 22)
+#elif PACKETVER >= 20090218
+packetLen(0x0321, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0321, 2)
+#elif PACKETVER >= 20090204
+packetLen(0x0321, 186)
+#elif PACKETVER >= 20090107
+packetLen(0x0321, -1)
+#endif
+
+// Packet: 0x0322
+#if PACKETVER >= 20090401
+packetLen(0x0322, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x0322, 10)
+#elif PACKETVER >= 20090318
+packetLen(0x0322, 9)
+#elif PACKETVER >= 20090218
+packetLen(0x0322, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0322, 8)
+#elif PACKETVER >= 20090204
+packetLen(0x0322, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x0322, 26)
+#elif PACKETVER >= 20090120
+packetLen(0x0322, 8)
+#elif PACKETVER >= 20090107
+packetLen(0x0322, 27)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0323
+#if PACKETVER >= 20090406
+packetLen(0x0323, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0323, 6)
+#elif PACKETVER >= 20090311
+packetLen(0x0323, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x0323, 3)
+#elif PACKETVER >= 20090218
+packetLen(0x0323, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0323, 7)
+#elif PACKETVER >= 20090204
+packetLen(0x0323, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x0323, 12)
+#elif PACKETVER >= 20090120
+packetLen(0x0323, 37)
+#elif PACKETVER >= 20090114
+packetLen(0x0323, 7)
+#elif PACKETVER >= 20090107
+packetLen(0x0323, 7)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0324
+#if PACKETVER >= 20090406
+packetLen(0x0324, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0324, 5)
+#elif PACKETVER >= 20090325
+packetLen(0x0324, 33)
+#elif PACKETVER >= 20090311
+packetLen(0x0324, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x0324, 4)
+#elif PACKETVER >= 20090218
+packetLen(0x0324, 2)
+#elif PACKETVER >= 20090211
+packetLen(0x0324, 12)
+#elif PACKETVER >= 20090204
+packetLen(0x0324, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x0324, 97)
+#elif PACKETVER >= 20090120
+packetLen(0x0324, 2)
+#elif PACKETVER >= 20090114
+packetLen(0x0324, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x0324, 10)
+#endif
+
+// Packet: 0x0325
+#if PACKETVER >= 20090311
+packetLen(0x0325, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x0325, 27)
+#elif PACKETVER >= 20090129
+packetLen(0x0325, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0325, 6)
+#elif PACKETVER >= 20090114
+packetLen(0x0325, 32)
+#elif PACKETVER >= 20090107
+packetLen(0x0325, 8)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0326
+#if PACKETVER >= 20090401
+packetLen(0x0326, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x0326, 3)
+#elif PACKETVER >= 20090225
+packetLen(0x0326, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x0326, 6)
+#elif PACKETVER >= 20090211
+packetLen(0x0326, 17)
+#elif PACKETVER >= 20090204
+packetLen(0x0326, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x0326, 6)
+#elif PACKETVER >= 20090107
+packetLen(0x0326, 14)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0327
+#if PACKETVER >= 20090406
+packetLen(0x0327, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0327, 10)
+#elif PACKETVER >= 20090318
+packetLen(0x0327, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0327, 28)
+#elif PACKETVER >= 20090211
+packetLen(0x0327, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x0327, 9)
+#elif PACKETVER >= 20090129
+packetLen(0x0327, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0327, 13)
+#elif PACKETVER >= 20090107
+packetLen(0x0327, -1)
+#endif
+
+// Packet: 0x0328
+#if PACKETVER >= 20090318
+packetLen(0x0328, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0328, 8)
+#elif PACKETVER >= 20090225
+packetLen(0x0328, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x0328, 6)
+#elif PACKETVER >= 20090211
+packetLen(0x0328, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x0328, 7)
+#elif PACKETVER >= 20090129
+packetLen(0x0328, 14)
+#elif PACKETVER >= 20090120
+packetLen(0x0328, 8)
+#elif PACKETVER >= 20090107
+packetLen(0x0328, 26)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0329
+#if PACKETVER >= 20090406
+packetLen(0x0329, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0329, 60)
+#elif PACKETVER >= 20090318
+packetLen(0x0329, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0329, 6)
+#elif PACKETVER >= 20090225
+packetLen(0x0329, 54)
+#elif PACKETVER >= 20090218
+packetLen(0x0329, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0329, 2)
+#elif PACKETVER >= 20090204
+packetLen(0x0329, 3)
+#elif PACKETVER >= 20090120
+packetLen(0x0329, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x0329, 114)
+#elif PACKETVER >= 20090107
+packetLen(0x0329, -1)
+#endif
+
+// Packet: 0x032a
+#if PACKETVER >= 20090318
+packetLen(0x032a, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x032a, 66)
+#elif PACKETVER >= 20090204
+packetLen(0x032a, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x032a, 6)
+#elif PACKETVER >= 20090114
+packetLen(0x032a, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x032a, 7)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x032b
+#if PACKETVER >= 20090406
+packetLen(0x032b, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x032b, 6)
+#elif PACKETVER >= 20090325
+packetLen(0x032b, 3)
+#elif PACKETVER >= 20090318
+packetLen(0x032b, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x032b, 10)
+#elif PACKETVER >= 20090225
+packetLen(0x032b, 6)
+#elif PACKETVER >= 20090218
+packetLen(0x032b, 17)
+#elif PACKETVER >= 20090211
+packetLen(0x032b, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x032b, 55)
+#elif PACKETVER >= 20090107
+packetLen(0x032b, 4)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x032c
+#if PACKETVER >= 20090401
+packetLen(0x032c, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x032c, 6)
+#elif PACKETVER >= 20090318
+packetLen(0x032c, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x032c, 3)
+#elif PACKETVER >= 20090225
+packetLen(0x032c, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x032c, 58)
+#elif PACKETVER >= 20090211
+packetLen(0x032c, 10)
+#elif PACKETVER >= 20090129
+packetLen(0x032c, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x032c, 4)
+#elif PACKETVER >= 20090114
+packetLen(0x032c, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x032c, 19)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x032d
+#if PACKETVER >= 20090401
+packetLen(0x032d, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x032d, 11)
+#elif PACKETVER >= 20090225
+packetLen(0x032d, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x032d, 10)
+#elif PACKETVER >= 20090107
+packetLen(0x032d, 6)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x032e
+#if PACKETVER >= 20090406
+packetLen(0x032e, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x032e, 68)
+#elif PACKETVER >= 20090318
+packetLen(0x032e, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x032e, 17)
+#elif PACKETVER >= 20090225
+packetLen(0x032e, 10)
+#elif PACKETVER >= 20090218
+packetLen(0x032e, 2)
+#elif PACKETVER >= 20090204
+packetLen(0x032e, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x032e, 10)
+#elif PACKETVER >= 20090120
+packetLen(0x032e, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x032e, 6)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x032f
+#if PACKETVER >= 20090218
+packetLen(0x032f, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x032f, 90)
+#elif PACKETVER >= 20090204
+packetLen(0x032f, 3)
+#elif PACKETVER >= 20090107
+packetLen(0x032f, -1)
+#endif
+
+// Packet: 0x0330
+#if PACKETVER >= 20090318
+packetLen(0x0330, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0330, 7)
+#elif PACKETVER >= 20090218
+packetLen(0x0330, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0330, 6)
+#elif PACKETVER >= 20090204
+packetLen(0x0330, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x0330, 6)
+#elif PACKETVER >= 20090120
+packetLen(0x0330, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x0330, 3)
+#elif PACKETVER >= 20090107
+packetLen(0x0330, -1)
+#endif
+
+// Packet: 0x0331
+#if PACKETVER >= 20090318
+packetLen(0x0331, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0331, 5)
+#elif PACKETVER >= 20090211
+packetLen(0x0331, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x0331, 71)
+#elif PACKETVER >= 20090129
+packetLen(0x0331, 29)
+#elif PACKETVER >= 20090107
+packetLen(0x0331, -1)
+#endif
+
+// Packet: 0x0332
+#if PACKETVER >= 20090401
+packetLen(0x0332, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x0332, 11)
+#elif PACKETVER >= 20090218
+packetLen(0x0332, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0332, 3)
+#elif PACKETVER >= 20090129
+packetLen(0x0332, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0332, 2)
+#elif PACKETVER >= 20090107
+packetLen(0x0332, 3)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0333
+#if PACKETVER >= 20090406
+packetLen(0x0333, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0333, 282)
+#elif PACKETVER >= 20090325
+packetLen(0x0333, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x0333, 102)
+#elif PACKETVER >= 20090311
+packetLen(0x0333, 6)
+#elif PACKETVER >= 20090114
+packetLen(0x0333, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x0333, 14)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0334
+#if PACKETVER >= 20090406
+packetLen(0x0334, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0334, 10)
+#elif PACKETVER >= 20090325
+packetLen(0x0334, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x0334, 3)
+#elif PACKETVER >= 20090311
+packetLen(0x0334, 97)
+#elif PACKETVER >= 20090225
+packetLen(0x0334, 3)
+#elif PACKETVER >= 20090211
+packetLen(0x0334, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x0334, 31)
+#elif PACKETVER >= 20090120
+packetLen(0x0334, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x0334, 6)
+#elif PACKETVER >= 20090107
+packetLen(0x0334, 27)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0335
+#if PACKETVER >= 20090401
+packetLen(0x0335, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x0335, 11)
+#elif PACKETVER >= 20090318
+packetLen(0x0335, 6)
+#elif PACKETVER >= 20090311
+packetLen(0x0335, 71)
+#elif PACKETVER >= 20090225
+packetLen(0x0335, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x0335, 6)
+#elif PACKETVER >= 20090211
+packetLen(0x0335, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x0335, 10)
+#elif PACKETVER >= 20090129
+packetLen(0x0335, 2)
+#elif PACKETVER >= 20090107
+packetLen(0x0335, -1)
+#endif
+
+// Packet: 0x0336
+#if PACKETVER >= 20090325
+packetLen(0x0336, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x0336, 2)
+#elif PACKETVER >= 20090311
+packetLen(0x0336, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x0336, 2)
+#elif PACKETVER >= 20090218
+packetLen(0x0336, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0336, 8)
+#elif PACKETVER >= 20090204
+packetLen(0x0336, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x0336, 65)
+#elif PACKETVER >= 20090120
+packetLen(0x0336, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x0336, 5)
+#elif PACKETVER >= 20090107
+packetLen(0x0336, 4)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0337
+#if PACKETVER >= 20090401
+packetLen(0x0337, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x0337, 30)
+#elif PACKETVER >= 20090318
+packetLen(0x0337, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0337, 30)
+#elif PACKETVER >= 20090211
+packetLen(0x0337, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x0337, 4)
+#elif PACKETVER >= 20090129
+packetLen(0x0337, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0337, 4)
+#elif PACKETVER >= 20090114
+packetLen(0x0337, 27)
+#elif PACKETVER >= 20090107
+packetLen(0x0337, 6)
+#endif
+
+// Packet: 0x0338
+#if PACKETVER >= 20090211
+packetLen(0x0338, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x0338, 12)
+#elif PACKETVER >= 20090114
+packetLen(0x0338, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x0338, 4)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0339
+#if PACKETVER >= 20090311
+packetLen(0x0339, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x0339, 14)
+#elif PACKETVER >= 20090218
+packetLen(0x0339, 5)
+#elif PACKETVER >= 20090204
+packetLen(0x0339, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x0339, 4)
+#elif PACKETVER >= 20090107
+packetLen(0x0339, -1)
+#endif
+
+// Packet: 0x033a
+#if PACKETVER >= 20090401
+packetLen(0x033a, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x033a, 3)
+#elif PACKETVER >= 20090318
+packetLen(0x033a, 10)
+#elif PACKETVER >= 20090218
+packetLen(0x033a, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x033a, 39)
+#elif PACKETVER >= 20090204
+packetLen(0x033a, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x033a, 114)
+#elif PACKETVER >= 20090120
+packetLen(0x033a, 16)
+#elif PACKETVER >= 20090107
+packetLen(0x033a, -1)
+#endif
+
+// Packet: 0x033b
+#if PACKETVER >= 20090225
+packetLen(0x033b, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x033b, 26)
+#elif PACKETVER >= 20090204
+packetLen(0x033b, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x033b, 17)
+#elif PACKETVER >= 20090120
+packetLen(0x033b, 14)
+#elif PACKETVER >= 20090107
+packetLen(0x033b, 97)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x033c
+#if PACKETVER >= 20090401
+packetLen(0x033c, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x033c, 27)
+#elif PACKETVER >= 20090311
+packetLen(0x033c, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x033c, 30)
+#elif PACKETVER >= 20090211
+packetLen(0x033c, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x033c, 282)
+#elif PACKETVER >= 20090129
+packetLen(0x033c, 3)
+#elif PACKETVER >= 20090114
+packetLen(0x033c, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x033c, 3)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x033d
+#if PACKETVER >= 20090406
+packetLen(0x033d, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x033d, 6)
+#elif PACKETVER >= 20090325
+packetLen(0x033d, 11)
+#elif PACKETVER >= 20090318
+packetLen(0x033d, 39)
+#elif PACKETVER >= 20090311
+packetLen(0x033d, 3)
+#elif PACKETVER >= 20090211
+packetLen(0x033d, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x033d, 6)
+#elif PACKETVER >= 20090114
+packetLen(0x033d, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x033d, 43)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x033e
+#if PACKETVER >= 20090225
+packetLen(0x033e, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x033e, 114)
+#elif PACKETVER >= 20090204
+packetLen(0x033e, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x033e, 11)
+#elif PACKETVER >= 20090120
+packetLen(0x033e, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x033e, 6)
+#elif PACKETVER >= 20090107
+packetLen(0x033e, 4)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x033f
+#if PACKETVER >= 20090406
+packetLen(0x033f, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x033f, 3)
+#elif PACKETVER >= 20090325
+packetLen(0x033f, 42)
+#elif PACKETVER >= 20090311
+packetLen(0x033f, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x033f, 3)
+#elif PACKETVER >= 20090211
+packetLen(0x033f, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x033f, 28)
+#elif PACKETVER >= 20090114
+packetLen(0x033f, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x033f, 6)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0340
+#if PACKETVER >= 20090406
+packetLen(0x0340, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0340, 71)
+#elif PACKETVER >= 20090325
+packetLen(0x0340, 2)
+#elif PACKETVER >= 20090318
+packetLen(0x0340, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0340, 7)
+#elif PACKETVER >= 20090204
+packetLen(0x0340, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0340, 4)
+#elif PACKETVER >= 20090114
+packetLen(0x0340, 68)
+#elif PACKETVER >= 20090107
+packetLen(0x0340, 10)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0341
+#if PACKETVER >= 20090406
+packetLen(0x0341, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0341, 6)
+#elif PACKETVER >= 20090318
+packetLen(0x0341, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0341, 11)
+#elif PACKETVER >= 20090225
+packetLen(0x0341, 39)
+#elif PACKETVER >= 20090218
+packetLen(0x0341, 7)
+#elif PACKETVER >= 20090129
+packetLen(0x0341, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0341, 4)
+#elif PACKETVER >= 20090114
+packetLen(0x0341, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x0341, 5)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0342
+#if PACKETVER >= 20090401
+packetLen(0x0342, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x0342, 2)
+#elif PACKETVER >= 20090318
+packetLen(0x0342, 6)
+#elif PACKETVER >= 20090225
+packetLen(0x0342, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x0342, 6)
+#elif PACKETVER >= 20090204
+packetLen(0x0342, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x0342, 36)
+#elif PACKETVER >= 20090120
+packetLen(0x0342, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x0342, 2)
+#elif PACKETVER >= 20090107
+packetLen(0x0342, 8)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0343
+#if PACKETVER >= 20090325
+packetLen(0x0343, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x0343, 7)
+#elif PACKETVER >= 20090311
+packetLen(0x0343, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x0343, 32)
+#elif PACKETVER >= 20090218
+packetLen(0x0343, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0343, 2)
+#elif PACKETVER >= 20090129
+packetLen(0x0343, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0343, 5)
+#elif PACKETVER >= 20090114
+packetLen(0x0343, 8)
+#elif PACKETVER >= 20090107
+packetLen(0x0343, 27)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0344
+#if PACKETVER >= 20090401
+packetLen(0x0344, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x0344, 3)
+#elif PACKETVER >= 20090318
+packetLen(0x0344, 14)
+#elif PACKETVER >= 20090311
+packetLen(0x0344, 11)
+#elif PACKETVER >= 20090211
+packetLen(0x0344, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x0344, 2)
+#elif PACKETVER >= 20090129
+packetLen(0x0344, 7)
+#elif PACKETVER >= 20090107
+packetLen(0x0344, -1)
+#endif
+
+// Packet: 0x0345
+#if PACKETVER >= 20090401
+packetLen(0x0345, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x0345, 8)
+#elif PACKETVER >= 20090129
+packetLen(0x0345, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0345, 19)
+#elif PACKETVER >= 20090107
+packetLen(0x0345, -1)
+#endif
+
+// Packet: 0x0346
+#if PACKETVER >= 20090406
+packetLen(0x0346, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0346, 13)
+#elif PACKETVER >= 20090325
+packetLen(0x0346, 59)
+#elif PACKETVER >= 20090318
+packetLen(0x0346, 6)
+#elif PACKETVER >= 20090225
+packetLen(0x0346, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x0346, 4)
+#elif PACKETVER >= 20090204
+packetLen(0x0346, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x0346, 6)
+#elif PACKETVER >= 20090120
+packetLen(0x0346, 22)
+#elif PACKETVER >= 20090114
+packetLen(0x0346, 19)
+#elif PACKETVER >= 20090107
+packetLen(0x0346, 13)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0347
+#if PACKETVER >= 20090401
+packetLen(0x0347, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x0347, 11)
+#elif PACKETVER >= 20090318
+packetLen(0x0347, 15)
+#elif PACKETVER >= 20090311
+packetLen(0x0347, 7)
+#elif PACKETVER >= 20090225
+packetLen(0x0347, 10)
+#elif PACKETVER >= 20090218
+packetLen(0x0347, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0347, 10)
+#elif PACKETVER >= 20090129
+packetLen(0x0347, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0347, 4)
+#elif PACKETVER >= 20090114
+packetLen(0x0347, 10)
+#elif PACKETVER >= 20090107
+packetLen(0x0347, 23)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0348
+#if PACKETVER >= 20090406
+packetLen(0x0348, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0348, 7)
+#elif PACKETVER >= 20090325
+packetLen(0x0348, 30)
+#elif PACKETVER >= 20090318
+packetLen(0x0348, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0348, 6)
+#elif PACKETVER >= 20090218
+packetLen(0x0348, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0348, 3)
+#elif PACKETVER >= 20090114
+packetLen(0x0348, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x0348, 3)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0349
+#if PACKETVER >= 20090406
+packetLen(0x0349, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0349, 2)
+#elif PACKETVER >= 20090311
+packetLen(0x0349, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x0349, 4)
+#elif PACKETVER >= 20090218
+packetLen(0x0349, 31)
+#elif PACKETVER >= 20090129
+packetLen(0x0349, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0349, 10)
+#elif PACKETVER >= 20090114
+packetLen(0x0349, 22)
+#elif PACKETVER >= 20090107
+packetLen(0x0349, 11)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x034a
+#if PACKETVER >= 20090406
+packetLen(0x034a, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x034a, 9)
+#elif PACKETVER >= 20090325
+packetLen(0x034a, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x034a, 31)
+#elif PACKETVER >= 20090311
+packetLen(0x034a, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x034a, 22)
+#elif PACKETVER >= 20090218
+packetLen(0x034a, 19)
+#elif PACKETVER >= 20090211
+packetLen(0x034a, 10)
+#elif PACKETVER >= 20090129
+packetLen(0x034a, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x034a, 6)
+#elif PACKETVER >= 20090114
+packetLen(0x034a, 36)
+#elif PACKETVER >= 20090107
+packetLen(0x034a, 2)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x034b
+#if PACKETVER >= 20090225
+packetLen(0x034b, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x034b, 6)
+#elif PACKETVER >= 20090211
+packetLen(0x034b, 23)
+#elif PACKETVER >= 20090204
+packetLen(0x034b, 7)
+#elif PACKETVER >= 20090114
+packetLen(0x034b, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x034b, 54)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x034c
+#if PACKETVER >= 20090225
+packetLen(0x034c, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x034c, 54)
+#elif PACKETVER >= 20090211
+packetLen(0x034c, 28)
+#elif PACKETVER >= 20090204
+packetLen(0x034c, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x034c, 282)
+#elif PACKETVER >= 20090120
+packetLen(0x034c, 65)
+#elif PACKETVER >= 20090114
+packetLen(0x034c, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x034c, 3)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x034d
+#if PACKETVER >= 20090406
+packetLen(0x034d, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x034d, 6)
+#elif PACKETVER >= 20090325
+packetLen(0x034d, 5)
+#elif PACKETVER >= 20090318
+packetLen(0x034d, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x034d, 2)
+#elif PACKETVER >= 20090211
+packetLen(0x034d, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x034d, 30)
+#elif PACKETVER >= 20090129
+packetLen(0x034d, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x034d, 23)
+#elif PACKETVER >= 20090114
+packetLen(0x034d, 2)
+#elif PACKETVER >= 20090107
+packetLen(0x034d, 60)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x034e
+#if PACKETVER >= 20090401
+packetLen(0x034e, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x034e, 8)
+#elif PACKETVER >= 20090318
+packetLen(0x034e, 7)
+#elif PACKETVER >= 20090218
+packetLen(0x034e, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x034e, 8)
+#elif PACKETVER >= 20090114
+packetLen(0x034e, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x034e, 31)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x034f
+#if PACKETVER >= 20090406
+packetLen(0x034f, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x034f, 6)
+#elif PACKETVER >= 20090318
+packetLen(0x034f, 19)
+#elif PACKETVER >= 20090311
+packetLen(0x034f, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x034f, 66)
+#elif PACKETVER >= 20090218
+packetLen(0x034f, 6)
+#elif PACKETVER >= 20090211
+packetLen(0x034f, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x034f, 7)
+#elif PACKETVER >= 20090114
+packetLen(0x034f, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x034f, 27)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0350
+#if PACKETVER >= 20090406
+packetLen(0x0350, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0350, 14)
+#elif PACKETVER >= 20090325
+packetLen(0x0350, 8)
+#elif PACKETVER >= 20090225
+packetLen(0x0350, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x0350, 3)
+#elif PACKETVER >= 20090211
+packetLen(0x0350, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x0350, 4)
+#elif PACKETVER >= 20090129
+packetLen(0x0350, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0350, 3)
+#elif PACKETVER >= 20090114
+packetLen(0x0350, 28)
+#elif PACKETVER >= 20090107
+packetLen(0x0350, -1)
+#endif
+
+// Packet: 0x0351
+#if PACKETVER >= 20090401
+packetLen(0x0351, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x0351, 12)
+#elif PACKETVER >= 20090311
+packetLen(0x0351, 2)
+#elif PACKETVER >= 20090225
+packetLen(0x0351, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x0351, 6)
+#elif PACKETVER >= 20090107
+packetLen(0x0351, 30)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0352
+#if PACKETVER >= 20090406
+packetLen(0x0352, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0352, 14)
+#elif PACKETVER >= 20090325
+packetLen(0x0352, 7)
+#elif PACKETVER >= 20090318
+packetLen(0x0352, 8)
+#elif PACKETVER >= 20090311
+packetLen(0x0352, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x0352, 6)
+#elif PACKETVER >= 20090218
+packetLen(0x0352, 7)
+#elif PACKETVER >= 20090204
+packetLen(0x0352, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x0352, 3)
+#elif PACKETVER >= 20090107
+packetLen(0x0352, 14)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0353
+#if PACKETVER >= 20090406
+packetLen(0x0353, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0353, 2)
+#elif PACKETVER >= 20090325
+packetLen(0x0353, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x0353, 4)
+#elif PACKETVER >= 20090311
+packetLen(0x0353, 2)
+#elif PACKETVER >= 20090225
+packetLen(0x0353, 54)
+#elif PACKETVER >= 20090218
+packetLen(0x0353, 39)
+#elif PACKETVER >= 20090120
+packetLen(0x0353, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x0353, 4)
+#elif PACKETVER >= 20090107
+packetLen(0x0353, 6)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0354
+#if PACKETVER >= 20090311
+packetLen(0x0354, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x0354, 23)
+#elif PACKETVER >= 20090218
+packetLen(0x0354, 16)
+#elif PACKETVER >= 20090211
+packetLen(0x0354, 6)
+#elif PACKETVER >= 20090204
+packetLen(0x0354, 97)
+#elif PACKETVER >= 20090129
+packetLen(0x0354, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0354, 14)
+#elif PACKETVER >= 20090114
+packetLen(0x0354, 29)
+#elif PACKETVER >= 20090107
+packetLen(0x0354, 20)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0355
+#if PACKETVER >= 20090401
+packetLen(0x0355, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x0355, 97)
+#elif PACKETVER >= 20090318
+packetLen(0x0355, 4)
+#elif PACKETVER >= 20090218
+packetLen(0x0355, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0355, 10)
+#elif PACKETVER >= 20090129
+packetLen(0x0355, 3)
+#elif PACKETVER >= 20090114
+packetLen(0x0355, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x0355, 16)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0356
+#if PACKETVER >= 20090406
+packetLen(0x0356, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0356, 28)
+#elif PACKETVER >= 20090325
+packetLen(0x0356, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x0356, 37)
+#elif PACKETVER >= 20090311
+packetLen(0x0356, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x0356, 81)
+#elif PACKETVER >= 20090211
+packetLen(0x0356, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x0356, 5)
+#elif PACKETVER >= 20090129
+packetLen(0x0356, 11)
+#elif PACKETVER >= 20090120
+packetLen(0x0356, 10)
+#elif PACKETVER >= 20090114
+packetLen(0x0356, 28)
+#elif PACKETVER >= 20090107
+packetLen(0x0356, -1)
+#endif
+
+// Packet: 0x0357
+#if PACKETVER >= 20090406
+packetLen(0x0357, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0357, 8)
+#elif PACKETVER >= 20090318
+packetLen(0x0357, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0357, 20)
+#elif PACKETVER >= 20090225
+packetLen(0x0357, 4)
+#elif PACKETVER >= 20090218
+packetLen(0x0357, 11)
+#elif PACKETVER >= 20090211
+packetLen(0x0357, 13)
+#elif PACKETVER >= 20090204
+packetLen(0x0357, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x0357, 10)
+#elif PACKETVER >= 20090120
+packetLen(0x0357, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x0357, 6)
+#elif PACKETVER >= 20090107
+packetLen(0x0357, -1)
+#endif
+
+// Packet: 0x0358
+#if PACKETVER >= 20090325
+packetLen(0x0358, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x0358, 4)
+#elif PACKETVER >= 20090311
+packetLen(0x0358, 26)
+#elif PACKETVER >= 20090225
+packetLen(0x0358, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x0358, 32)
+#elif PACKETVER >= 20090120
+packetLen(0x0358, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x0358, 5)
+#elif PACKETVER >= 20090107
+packetLen(0x0358, 8)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0359
+#if PACKETVER >= 20090218
+packetLen(0x0359, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0359, 8)
+#elif PACKETVER >= 20090204
+packetLen(0x0359, 29)
+#elif PACKETVER >= 20090129
+packetLen(0x0359, 3)
+#elif PACKETVER >= 20090107
+packetLen(0x0359, -1)
+#endif
+
+// Packet: 0x035a
+#if PACKETVER >= 20090406
+packetLen(0x035a, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x035a, 11)
+#elif PACKETVER >= 20090311
+packetLen(0x035a, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x035a, 29)
+#elif PACKETVER >= 20090218
+packetLen(0x035a, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x035a, 30)
+#elif PACKETVER >= 20090204
+packetLen(0x035a, 3)
+#elif PACKETVER >= 20090107
+packetLen(0x035a, 12)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x035b
+#if PACKETVER >= 20090325
+packetLen(0x035b, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x035b, 26)
+#elif PACKETVER >= 20090311
+packetLen(0x035b, 14)
+#elif PACKETVER >= 20090120
+packetLen(0x035b, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x035b, 3)
+#elif PACKETVER >= 20090107
+packetLen(0x035b, 10)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x035c
+packetLen(0x035c, 2) // CZ_OPEN_SIMPLE_CASHSHOP_ITEMLIST
+
+// Packet: 0x035d
+packetLen(0x035d, -1) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+
+// Packet: 0x035e
+packetLen(0x035e, 2) // CZ_CLOSE_WINDOW
+
+// Packet: 0x035f
+#if PACKETVER >= 20090406
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20090401
+packetLen(0x035f, 11) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20090325
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20090318
+packetLen(0x035f, 67) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20090311
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20090225
+packetLen(0x035f, 26) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20090218
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20090129
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20090120
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20090107
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+#endif
+
+// Packet: 0x0360
+#if PACKETVER >= 20090401
+packetLen(0x0360, -1) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20090325
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20090318
+packetLen(0x0360, 4) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20090311
+packetLen(0x0360, -1) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20090225
+packetLen(0x0360, 8) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20090211
+packetLen(0x0360, -1) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20090204
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20090129
+packetLen(0x0360, 4) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20090120
+packetLen(0x0360, -1) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20090114
+packetLen(0x0360, 11) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20090107
+packetLen(0x0360, 29) // CZ_REQUEST_TIME2
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0361
+#if PACKETVER >= 20090406
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20090401
+packetLen(0x0361, 8) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20090325
+packetLen(0x0361, 6) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20090225
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20090218
+packetLen(0x0361, 22) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20090211
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20090204
+packetLen(0x0361, 86) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20090120
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20090114
+packetLen(0x0361, 6) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20090107
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#endif
+
+// Packet: 0x0362
+#if PACKETVER >= 20090318
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20090225
+packetLen(0x0362, 3) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20090218
+packetLen(0x0362, 11) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20090211
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20090204
+packetLen(0x0362, 26) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20090120
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20090114
+packetLen(0x0362, 15) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20090107
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#endif
+
+// Packet: 0x0363
+#if PACKETVER >= 20090401
+packetLen(0x0363, -1) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20090325
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20090311
+packetLen(0x0363, -1) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20090225
+packetLen(0x0363, 13) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20090211
+packetLen(0x0363, -1) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20090204
+packetLen(0x0363, 30) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20090120
+packetLen(0x0363, -1) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20090114
+packetLen(0x0363, 4) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20090107
+packetLen(0x0363, 34) // CZ_ITEM_THROW2
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0364
+#if PACKETVER >= 20090406
+packetLen(0x0364, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20090401
+packetLen(0x0364, 30) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20090325
+packetLen(0x0364, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20090318
+packetLen(0x0364, 30) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20090311
+packetLen(0x0364, 3) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20090225
+packetLen(0x0364, 30) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20090218
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20090204
+packetLen(0x0364, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20090129
+packetLen(0x0364, 7) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20090120
+packetLen(0x0364, 5) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20090114
+packetLen(0x0364, 14) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20090107
+packetLen(0x0364, 10) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0365
+#if PACKETVER >= 20090318
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20090311
+packetLen(0x0365, 60) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20090211
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20090204
+packetLen(0x0365, 54) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20090120
+packetLen(0x0365, 67) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20090107
+packetLen(0x0365, 4) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0366
+#if PACKETVER >= 20090406
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20090401
+packetLen(0x0366, 8) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20090318
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20090311
+packetLen(0x0366, 16) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20090107
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#endif
+
+// Packet: 0x0367
+#if PACKETVER >= 20090406
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20090401
+packetLen(0x0367, 26) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20090325
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20090318
+packetLen(0x0367, 30) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20090218
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20090211
+packetLen(0x0367, 15) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20090204
+packetLen(0x0367, 6) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20090129
+packetLen(0x0367, 29) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20090107
+packetLen(0x0367, 6) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0368
+#if PACKETVER >= 20090204
+packetLen(0x0368, -1) // CZ_REQNAME2
+#elif PACKETVER >= 20090129
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20090120
+packetLen(0x0368, 71) // CZ_REQNAME2
+#elif PACKETVER >= 20090114
+packetLen(0x0368, 30) // CZ_REQNAME2
+#elif PACKETVER >= 20090107
+packetLen(0x0368, 53) // CZ_REQNAME2
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0369
+#if PACKETVER >= 20090318
+packetLen(0x0369, -1) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20090311
+packetLen(0x0369, 5) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20090225
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20090211
+packetLen(0x0369, -1) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20090204
+packetLen(0x0369, 3) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20090114
+packetLen(0x0369, -1) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20090107
+packetLen(0x0369, 19) // CZ_REQNAME_BYGID2
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x036a
+#if PACKETVER >= 20090311
+packetLen(0x036a, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x036a, 44)
+#elif PACKETVER >= 20090218
+packetLen(0x036a, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x036a, 8)
+#elif PACKETVER >= 20090204
+packetLen(0x036a, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x036a, 6)
+#elif PACKETVER >= 20090120
+packetLen(0x036a, 24)
+#elif PACKETVER >= 20090114
+packetLen(0x036a, 282)
+#elif PACKETVER >= 20090107
+packetLen(0x036a, 8)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x036b
+#if PACKETVER >= 20090311
+packetLen(0x036b, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x036b, 9)
+#elif PACKETVER >= 20090218
+packetLen(0x036b, 2)
+#elif PACKETVER >= 20090211
+packetLen(0x036b, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x036b, 19)
+#elif PACKETVER >= 20090120
+packetLen(0x036b, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x036b, 53)
+#elif PACKETVER >= 20090107
+packetLen(0x036b, 10)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x036c
+#if PACKETVER >= 20090401
+packetLen(0x036c, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x036c, 6)
+#elif PACKETVER >= 20090318
+packetLen(0x036c, 186)
+#elif PACKETVER >= 20090311
+packetLen(0x036c, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x036c, 6)
+#elif PACKETVER >= 20090204
+packetLen(0x036c, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x036c, 26)
+#elif PACKETVER >= 20090114
+packetLen(0x036c, 10)
+#elif PACKETVER >= 20090107
+packetLen(0x036c, 5)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x036d
+#if PACKETVER >= 20090406
+packetLen(0x036d, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x036d, 5)
+#elif PACKETVER >= 20090311
+packetLen(0x036d, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x036d, 18)
+#elif PACKETVER >= 20090218
+packetLen(0x036d, 10)
+#elif PACKETVER >= 20090120
+packetLen(0x036d, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x036d, 14)
+#elif PACKETVER >= 20090107
+packetLen(0x036d, 2)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x036e
+#if PACKETVER >= 20090406
+packetLen(0x036e, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x036e, 2)
+#elif PACKETVER >= 20090311
+packetLen(0x036e, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x036e, 3)
+#elif PACKETVER >= 20090120
+packetLen(0x036e, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x036e, 4)
+#elif PACKETVER >= 20090107
+packetLen(0x036e, -1)
+#endif
+
+// Packet: 0x036f
+#if PACKETVER >= 20090325
+packetLen(0x036f, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x036f, 4)
+#elif PACKETVER >= 20090311
+packetLen(0x036f, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x036f, 5)
+#elif PACKETVER >= 20090218
+packetLen(0x036f, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x036f, 29)
+#elif PACKETVER >= 20090204
+packetLen(0x036f, 10)
+#elif PACKETVER >= 20090129
+packetLen(0x036f, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x036f, 4)
+#elif PACKETVER >= 20090107
+packetLen(0x036f, 28)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0370
+#if PACKETVER >= 20090406
+packetLen(0x0370, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0370, 60)
+#elif PACKETVER >= 20090218
+packetLen(0x0370, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0370, 9)
+#elif PACKETVER >= 20090204
+packetLen(0x0370, 8)
+#elif PACKETVER >= 20090129
+packetLen(0x0370, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0370, 28)
+#elif PACKETVER >= 20090107
+packetLen(0x0370, -1)
+#endif
+
+// Packet: 0x0371
+#if PACKETVER >= 20090406
+packetLen(0x0371, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0371, 8)
+#elif PACKETVER >= 20090318
+packetLen(0x0371, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0371, 26)
+#elif PACKETVER >= 20090225
+packetLen(0x0371, 22)
+#elif PACKETVER >= 20090218
+packetLen(0x0371, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0371, 5)
+#elif PACKETVER >= 20090120
+packetLen(0x0371, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x0371, 86)
+#elif PACKETVER >= 20090107
+packetLen(0x0371, 8)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0372
+#if PACKETVER >= 20090318
+packetLen(0x0372, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0372, 6)
+#elif PACKETVER >= 20090225
+packetLen(0x0372, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x0372, 10)
+#elif PACKETVER >= 20090211
+packetLen(0x0372, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x0372, 8)
+#elif PACKETVER >= 20090120
+packetLen(0x0372, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x0372, 8)
+#elif PACKETVER >= 20090107
+packetLen(0x0372, -1)
+#endif
+
+// Packet: 0x0373
+#if PACKETVER >= 20090406
+packetLen(0x0373, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0373, 7)
+#elif PACKETVER >= 20090325
+packetLen(0x0373, 14)
+#elif PACKETVER >= 20090318
+packetLen(0x0373, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0373, 2)
+#elif PACKETVER >= 20090225
+packetLen(0x0373, 4)
+#elif PACKETVER >= 20090218
+packetLen(0x0373, 67)
+#elif PACKETVER >= 20090204
+packetLen(0x0373, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x0373, 10)
+#elif PACKETVER >= 20090107
+packetLen(0x0373, -1)
+#endif
+
+// Packet: 0x0374
+#if PACKETVER >= 20090406
+packetLen(0x0374, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0374, 29)
+#elif PACKETVER >= 20090325
+packetLen(0x0374, 68)
+#elif PACKETVER >= 20090318
+packetLen(0x0374, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0374, 13)
+#elif PACKETVER >= 20090225
+packetLen(0x0374, 11)
+#elif PACKETVER >= 20090218
+packetLen(0x0374, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0374, 60)
+#elif PACKETVER >= 20090204
+packetLen(0x0374, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x0374, 19)
+#elif PACKETVER >= 20090120
+packetLen(0x0374, 7)
+#elif PACKETVER >= 20090107
+packetLen(0x0374, 36)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0375
+#if PACKETVER >= 20090129
+packetLen(0x0375, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0375, 8)
+#elif PACKETVER >= 20090114
+packetLen(0x0375, 2)
+#elif PACKETVER >= 20090107
+packetLen(0x0375, 6)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0376
+#if PACKETVER >= 20090406
+packetLen(0x0376, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0376, 30)
+#elif PACKETVER >= 20090311
+packetLen(0x0376, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x0376, 60)
+#elif PACKETVER >= 20090204
+packetLen(0x0376, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x0376, 5)
+#elif PACKETVER >= 20090120
+packetLen(0x0376, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x0376, 14)
+#elif PACKETVER >= 20090107
+packetLen(0x0376, 10)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0377
+#if PACKETVER >= 20090406
+packetLen(0x0377, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0377, 11)
+#elif PACKETVER >= 20090211
+packetLen(0x0377, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x0377, 12)
+#elif PACKETVER >= 20090107
+packetLen(0x0377, -1)
+#endif
+
+// Packet: 0x0378
+#if PACKETVER >= 20090325
+packetLen(0x0378, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x0378, 14)
+#elif PACKETVER >= 20090311
+packetLen(0x0378, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x0378, 10)
+#elif PACKETVER >= 20090211
+packetLen(0x0378, 6)
+#elif PACKETVER >= 20090114
+packetLen(0x0378, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x0378, 6)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0379
+#if PACKETVER >= 20090406
+packetLen(0x0379, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0379, 26)
+#elif PACKETVER >= 20090318
+packetLen(0x0379, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0379, 22)
+#elif PACKETVER >= 20090225
+packetLen(0x0379, 11)
+#elif PACKETVER >= 20090218
+packetLen(0x0379, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0379, 6)
+#elif PACKETVER >= 20090204
+packetLen(0x0379, 9)
+#elif PACKETVER >= 20090120
+packetLen(0x0379, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x0379, 10)
+#elif PACKETVER >= 20090107
+packetLen(0x0379, -1)
+#endif
+
+// Packet: 0x037a
+#if PACKETVER >= 20090401
+packetLen(0x037a, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x037a, 30)
+#elif PACKETVER >= 20090318
+packetLen(0x037a, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x037a, 11)
+#elif PACKETVER >= 20090211
+packetLen(0x037a, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x037a, 3)
+#elif PACKETVER >= 20090129
+packetLen(0x037a, 19)
+#elif PACKETVER >= 20090107
+packetLen(0x037a, 3)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x037b
+#if PACKETVER >= 20090318
+packetLen(0x037b, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x037b, 8)
+#elif PACKETVER >= 20090218
+packetLen(0x037b, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x037b, 11)
+#elif PACKETVER >= 20090204
+packetLen(0x037b, 66)
+#elif PACKETVER >= 20090129
+packetLen(0x037b, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x037b, 55)
+#elif PACKETVER >= 20090114
+packetLen(0x037b, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x037b, 5)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x037c
+#if PACKETVER >= 20090406
+packetLen(0x037c, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x037c, 22)
+#elif PACKETVER >= 20090318
+packetLen(0x037c, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x037c, 3)
+#elif PACKETVER >= 20090225
+packetLen(0x037c, 2)
+#elif PACKETVER >= 20090218
+packetLen(0x037c, 282)
+#elif PACKETVER >= 20090211
+packetLen(0x037c, 3)
+#elif PACKETVER >= 20090129
+packetLen(0x037c, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x037c, 7)
+#elif PACKETVER >= 20090114
+packetLen(0x037c, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x037c, 6)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x037d
+#if PACKETVER >= 20090406
+packetLen(0x037d, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x037d, 6)
+#elif PACKETVER >= 20090325
+packetLen(0x037d, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x037d, 2)
+#elif PACKETVER >= 20090225
+packetLen(0x037d, 4)
+#elif PACKETVER >= 20090218
+packetLen(0x037d, 6)
+#elif PACKETVER >= 20090120
+packetLen(0x037d, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x037d, 6)
+#elif PACKETVER >= 20090107
+packetLen(0x037d, 8)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x037e
+#if PACKETVER >= 20090401
+packetLen(0x037e, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x037e, 4)
+#elif PACKETVER >= 20090318
+packetLen(0x037e, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x037e, 4)
+#elif PACKETVER >= 20090225
+packetLen(0x037e, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x037e, 6)
+#elif PACKETVER >= 20090129
+packetLen(0x037e, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x037e, 10)
+#elif PACKETVER >= 20090107
+packetLen(0x037e, 4)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x037f
+#if PACKETVER >= 20090311
+packetLen(0x037f, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x037f, 9)
+#elif PACKETVER >= 20090107
+packetLen(0x037f, 22)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0380
+#if PACKETVER >= 20090406
+packetLen(0x0380, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0380, 55)
+#elif PACKETVER >= 20090325
+packetLen(0x0380, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x0380, 10)
+#elif PACKETVER >= 20090211
+packetLen(0x0380, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x0380, 10)
+#elif PACKETVER >= 20090107
+packetLen(0x0380, -1)
+#endif
+
+// Packet: 0x0381
+#if PACKETVER >= 20090406
+packetLen(0x0381, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0381, 90)
+#elif PACKETVER >= 20090325
+packetLen(0x0381, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x0381, 282)
+#elif PACKETVER >= 20090218
+packetLen(0x0381, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0381, 16)
+#elif PACKETVER >= 20090204
+packetLen(0x0381, 3)
+#elif PACKETVER >= 20090114
+packetLen(0x0381, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x0381, 26)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0382
+#if PACKETVER >= 20090325
+packetLen(0x0382, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x0382, 32)
+#elif PACKETVER >= 20090225
+packetLen(0x0382, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x0382, 5)
+#elif PACKETVER >= 20090129
+packetLen(0x0382, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0382, 6)
+#elif PACKETVER >= 20090114
+packetLen(0x0382, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x0382, 2)
+#endif
+
+// Packet: 0x0383
+#if PACKETVER >= 20090325
+packetLen(0x0383, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x0383, 2)
+#elif PACKETVER >= 20090311
+packetLen(0x0383, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x0383, 3)
+#elif PACKETVER >= 20090218
+packetLen(0x0383, 30)
+#elif PACKETVER >= 20090129
+packetLen(0x0383, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0383, 9)
+#elif PACKETVER >= 20090107
+packetLen(0x0383, 3)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0384
+#if PACKETVER >= 20090406
+packetLen(0x0384, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0384, 30)
+#elif PACKETVER >= 20090318
+packetLen(0x0384, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0384, 24)
+#elif PACKETVER >= 20090225
+packetLen(0x0384, 16)
+#elif PACKETVER >= 20090218
+packetLen(0x0384, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0384, 3)
+#elif PACKETVER >= 20090204
+packetLen(0x0384, 5)
+#elif PACKETVER >= 20090129
+packetLen(0x0384, 186)
+#elif PACKETVER >= 20090120
+packetLen(0x0384, 3)
+#elif PACKETVER >= 20090107
+packetLen(0x0384, -1)
+#endif
+
+// Packet: 0x0385
+#if PACKETVER >= 20090325
+packetLen(0x0385, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x0385, 11)
+#elif PACKETVER >= 20090311
+packetLen(0x0385, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x0385, 90)
+#elif PACKETVER >= 20090218
+packetLen(0x0385, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0385, 28)
+#elif PACKETVER >= 20090129
+packetLen(0x0385, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0385, 2)
+#elif PACKETVER >= 20090107
+packetLen(0x0385, 2)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0386
+#if PACKETVER >= 20090406
+packetLen(0x0386, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0386, 6)
+#elif PACKETVER >= 20090325
+packetLen(0x0386, 14)
+#elif PACKETVER >= 20090218
+packetLen(0x0386, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0386, 6)
+#elif PACKETVER >= 20090204
+packetLen(0x0386, 27)
+#elif PACKETVER >= 20090129
+packetLen(0x0386, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0386, 3)
+#elif PACKETVER >= 20090107
+packetLen(0x0386, 30)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0387
+#if PACKETVER >= 20090318
+packetLen(0x0387, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0387, 6)
+#elif PACKETVER >= 20090225
+packetLen(0x0387, 54)
+#elif PACKETVER >= 20090218
+packetLen(0x0387, 7)
+#elif PACKETVER >= 20090204
+packetLen(0x0387, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x0387, 4)
+#elif PACKETVER >= 20090120
+packetLen(0x0387, 22)
+#elif PACKETVER >= 20090107
+packetLen(0x0387, 71)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0388
+#if PACKETVER >= 20090318
+packetLen(0x0388, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0388, 6)
+#elif PACKETVER >= 20090218
+packetLen(0x0388, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0388, 14)
+#elif PACKETVER >= 20090204
+packetLen(0x0388, 22)
+#elif PACKETVER >= 20090129
+packetLen(0x0388, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0388, 30)
+#elif PACKETVER >= 20090107
+packetLen(0x0388, -1)
+#endif
+
+// Packet: 0x0389
+#if PACKETVER >= 20090406
+packetLen(0x0389, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0389, 9)
+#elif PACKETVER >= 20090318
+packetLen(0x0389, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0389, 4)
+#elif PACKETVER >= 20090218
+packetLen(0x0389, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0389, 4)
+#elif PACKETVER >= 20090129
+packetLen(0x0389, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0389, 2)
+#elif PACKETVER >= 20090114
+packetLen(0x0389, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x0389, 66)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x038a
+#if PACKETVER >= 20090406
+packetLen(0x038a, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x038a, 2)
+#elif PACKETVER >= 20090325
+packetLen(0x038a, 9)
+#elif PACKETVER >= 20090318
+packetLen(0x038a, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x038a, 14)
+#elif PACKETVER >= 20090225
+packetLen(0x038a, 27)
+#elif PACKETVER >= 20090218
+packetLen(0x038a, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x038a, 2)
+#elif PACKETVER >= 20090107
+packetLen(0x038a, -1)
+#endif
+
+// Packet: 0x038b
+#if PACKETVER >= 20090401
+packetLen(0x038b, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x038b, 10)
+#elif PACKETVER >= 20090318
+packetLen(0x038b, 30)
+#elif PACKETVER >= 20090311
+packetLen(0x038b, 14)
+#elif PACKETVER >= 20090225
+packetLen(0x038b, 53)
+#elif PACKETVER >= 20090218
+packetLen(0x038b, 4)
+#elif PACKETVER >= 20090211
+packetLen(0x038b, 3)
+#elif PACKETVER >= 20090129
+packetLen(0x038b, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x038b, 114)
+#elif PACKETVER >= 20090114
+packetLen(0x038b, 8)
+#elif PACKETVER >= 20090107
+packetLen(0x038b, 27)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x038c
+#if PACKETVER >= 20090114
+packetLen(0x038c, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x038c, 6)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x038d
+#if PACKETVER >= 20090318
+packetLen(0x038d, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x038d, 4)
+#elif PACKETVER >= 20090225
+packetLen(0x038d, 11)
+#elif PACKETVER >= 20090218
+packetLen(0x038d, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x038d, 43)
+#elif PACKETVER >= 20090204
+packetLen(0x038d, 11)
+#elif PACKETVER >= 20090129
+packetLen(0x038d, 3)
+#elif PACKETVER >= 20090120
+packetLen(0x038d, 6)
+#elif PACKETVER >= 20090114
+packetLen(0x038d, 2)
+#elif PACKETVER >= 20090107
+packetLen(0x038d, 32)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x038e
+#if PACKETVER >= 20090401
+packetLen(0x038e, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x038e, 4)
+#elif PACKETVER >= 20090311
+packetLen(0x038e, 2)
+#elif PACKETVER >= 20090204
+packetLen(0x038e, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x038e, 5)
+#elif PACKETVER >= 20090120
+packetLen(0x038e, 17)
+#elif PACKETVER >= 20090107
+packetLen(0x038e, -1)
+#endif
+
+// Packet: 0x038f
+#if PACKETVER >= 20090311
+packetLen(0x038f, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x038f, 182)
+#elif PACKETVER >= 20090218
+packetLen(0x038f, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x038f, 2)
+#elif PACKETVER >= 20090129
+packetLen(0x038f, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x038f, 9)
+#elif PACKETVER >= 20090114
+packetLen(0x038f, 5)
+#elif PACKETVER >= 20090107
+packetLen(0x038f, 39)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0390
+#if PACKETVER >= 20090318
+packetLen(0x0390, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0390, 7)
+#elif PACKETVER >= 20090225
+packetLen(0x0390, 6)
+#elif PACKETVER >= 20090129
+packetLen(0x0390, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0390, 6)
+#elif PACKETVER >= 20090114
+packetLen(0x0390, 9)
+#elif PACKETVER >= 20090107
+packetLen(0x0390, 10)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0391
+#if PACKETVER >= 20090225
+packetLen(0x0391, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x0391, 23)
+#elif PACKETVER >= 20090211
+packetLen(0x0391, 6)
+#elif PACKETVER >= 20090204
+packetLen(0x0391, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x0391, 11)
+#elif PACKETVER >= 20090120
+packetLen(0x0391, 7)
+#elif PACKETVER >= 20090114
+packetLen(0x0391, 11)
+#elif PACKETVER >= 20090107
+packetLen(0x0391, -1)
+#endif
+
+// Packet: 0x0392
+#if PACKETVER >= 20090318
+packetLen(0x0392, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0392, 9)
+#elif PACKETVER >= 20090211
+packetLen(0x0392, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x0392, 28)
+#elif PACKETVER >= 20090129
+packetLen(0x0392, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0392, 12)
+#elif PACKETVER >= 20090114
+packetLen(0x0392, 26)
+#elif PACKETVER >= 20090107
+packetLen(0x0392, 8)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0393
+#if PACKETVER >= 20090401
+packetLen(0x0393, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x0393, 102)
+#elif PACKETVER >= 20090218
+packetLen(0x0393, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0393, 7)
+#elif PACKETVER >= 20090204
+packetLen(0x0393, 2)
+#elif PACKETVER >= 20090129
+packetLen(0x0393, 16)
+#elif PACKETVER >= 20090120
+packetLen(0x0393, 12)
+#elif PACKETVER >= 20090107
+packetLen(0x0393, -1)
+#endif
+
+// Packet: 0x0394
+#if PACKETVER >= 20090406
+packetLen(0x0394, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0394, 4)
+#elif PACKETVER >= 20090129
+packetLen(0x0394, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0394, 32)
+#elif PACKETVER >= 20090107
+packetLen(0x0394, -1)
+#endif
+
+// Packet: 0x0395
+#if PACKETVER >= 20090406
+packetLen(0x0395, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0395, 22)
+#elif PACKETVER >= 20090225
+packetLen(0x0395, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x0395, 9)
+#elif PACKETVER >= 20090211
+packetLen(0x0395, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x0395, 2)
+#elif PACKETVER >= 20090120
+packetLen(0x0395, 31)
+#elif PACKETVER >= 20090114
+packetLen(0x0395, 2)
+#elif PACKETVER >= 20090107
+packetLen(0x0395, -1)
+#endif
+
+// Packet: 0x0396
+#if PACKETVER >= 20090401
+packetLen(0x0396, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x0396, 5)
+#elif PACKETVER >= 20090318
+packetLen(0x0396, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0396, 6)
+#elif PACKETVER >= 20090225
+packetLen(0x0396, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x0396, 24)
+#elif PACKETVER >= 20090211
+packetLen(0x0396, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x0396, 14)
+#elif PACKETVER >= 20090107
+packetLen(0x0396, -1)
+#endif
+
+// Packet: 0x0397
+#if PACKETVER >= 20090401
+packetLen(0x0397, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x0397, 10)
+#elif PACKETVER >= 20090318
+packetLen(0x0397, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0397, 8)
+#elif PACKETVER >= 20090225
+packetLen(0x0397, 55)
+#elif PACKETVER >= 20090114
+packetLen(0x0397, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x0397, 9)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0398
+#if PACKETVER >= 20090401
+packetLen(0x0398, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x0398, 9)
+#elif PACKETVER >= 20090225
+packetLen(0x0398, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x0398, 10)
+#elif PACKETVER >= 20090114
+packetLen(0x0398, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x0398, 12)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0399
+#if PACKETVER >= 20090406
+packetLen(0x0399, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0399, 4)
+#elif PACKETVER >= 20090325
+packetLen(0x0399, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x0399, 3)
+#elif PACKETVER >= 20090311
+packetLen(0x0399, 30)
+#elif PACKETVER >= 20090225
+packetLen(0x0399, 282)
+#elif PACKETVER >= 20090218
+packetLen(0x0399, 186)
+#elif PACKETVER >= 20090211
+packetLen(0x0399, 7)
+#elif PACKETVER >= 20090204
+packetLen(0x0399, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x0399, 8)
+#elif PACKETVER >= 20090120
+packetLen(0x0399, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x0399, 8)
+#elif PACKETVER >= 20090107
+packetLen(0x0399, 9)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x039a
+#if PACKETVER >= 20090318
+packetLen(0x039a, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x039a, 6)
+#elif PACKETVER >= 20090225
+packetLen(0x039a, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x039a, 6)
+#elif PACKETVER >= 20090211
+packetLen(0x039a, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x039a, 2)
+#elif PACKETVER >= 20090114
+packetLen(0x039a, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x039a, 3)
+#endif
+
+// Packet: 0x039b
+#if PACKETVER >= 20090325
+packetLen(0x039b, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x039b, 6)
+#elif PACKETVER >= 20090311
+packetLen(0x039b, 8)
+#elif PACKETVER >= 20090225
+packetLen(0x039b, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x039b, 7)
+#elif PACKETVER >= 20090211
+packetLen(0x039b, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x039b, 90)
+#elif PACKETVER >= 20090129
+packetLen(0x039b, 10)
+#elif PACKETVER >= 20090107
+packetLen(0x039b, 10)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x039c
+#if PACKETVER >= 20090406
+packetLen(0x039c, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x039c, 6)
+#elif PACKETVER >= 20090325
+packetLen(0x039c, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x039c, 6)
+#elif PACKETVER >= 20090311
+packetLen(0x039c, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x039c, 12)
+#elif PACKETVER >= 20090218
+packetLen(0x039c, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x039c, 39)
+#elif PACKETVER >= 20090204
+packetLen(0x039c, 26)
+#elif PACKETVER >= 20090129
+packetLen(0x039c, 2)
+#elif PACKETVER >= 20090120
+packetLen(0x039c, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x039c, 2)
+#elif PACKETVER >= 20090107
+packetLen(0x039c, 86)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x039d
+#if PACKETVER >= 20090406
+packetLen(0x039d, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x039d, 4)
+#elif PACKETVER >= 20090325
+packetLen(0x039d, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x039d, 30)
+#elif PACKETVER >= 20090311
+packetLen(0x039d, 4)
+#elif PACKETVER >= 20090204
+packetLen(0x039d, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x039d, 6)
+#elif PACKETVER >= 20090107
+packetLen(0x039d, 30)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x039e
+#if PACKETVER >= 20090406
+packetLen(0x039e, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x039e, 2)
+#elif PACKETVER >= 20090318
+packetLen(0x039e, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x039e, 5)
+#elif PACKETVER >= 20090225
+packetLen(0x039e, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x039e, 5)
+#elif PACKETVER >= 20090204
+packetLen(0x039e, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x039e, 7)
+#elif PACKETVER >= 20090107
+packetLen(0x039e, -1)
+#endif
+
+// Packet: 0x039f
+#if PACKETVER >= 20090406
+packetLen(0x039f, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x039f, 29)
+#elif PACKETVER >= 20090325
+packetLen(0x039f, 2)
+#elif PACKETVER >= 20090318
+packetLen(0x039f, 60)
+#elif PACKETVER >= 20090204
+packetLen(0x039f, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x039f, 6)
+#elif PACKETVER >= 20090114
+packetLen(0x039f, 18)
+#elif PACKETVER >= 20090107
+packetLen(0x039f, 30)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x03a0
+#if PACKETVER >= 20090406
+packetLen(0x03a0, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03a0, 6)
+#elif PACKETVER >= 20090325
+packetLen(0x03a0, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x03a0, 2)
+#elif PACKETVER >= 20090311
+packetLen(0x03a0, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x03a0, 14)
+#elif PACKETVER >= 20090120
+packetLen(0x03a0, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x03a0, 54)
+#elif PACKETVER >= 20090107
+packetLen(0x03a0, -1)
+#endif
+
+// Packet: 0x03a1
+#if PACKETVER >= 20090406
+packetLen(0x03a1, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03a1, 4)
+#elif PACKETVER >= 20090325
+packetLen(0x03a1, 2)
+#elif PACKETVER >= 20090318
+packetLen(0x03a1, 14)
+#elif PACKETVER >= 20090311
+packetLen(0x03a1, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x03a1, 3)
+#elif PACKETVER >= 20090218
+packetLen(0x03a1, 57)
+#elif PACKETVER >= 20090211
+packetLen(0x03a1, 30)
+#elif PACKETVER >= 20090204
+packetLen(0x03a1, 6)
+#elif PACKETVER >= 20090120
+packetLen(0x03a1, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x03a1, 39)
+#elif PACKETVER >= 20090107
+packetLen(0x03a1, 44)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x03a2
+#if PACKETVER >= 20090401
+packetLen(0x03a2, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x03a2, 23)
+#elif PACKETVER >= 20090225
+packetLen(0x03a2, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x03a2, 28)
+#elif PACKETVER >= 20090120
+packetLen(0x03a2, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x03a2, 3)
+#elif PACKETVER >= 20090107
+packetLen(0x03a2, 282)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x03a3
+#if PACKETVER >= 20090401
+packetLen(0x03a3, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x03a3, 3)
+#elif PACKETVER >= 20090318
+packetLen(0x03a3, 2)
+#elif PACKETVER >= 20090204
+packetLen(0x03a3, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x03a3, 4)
+#elif PACKETVER >= 20090120
+packetLen(0x03a3, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x03a3, 26)
+#elif PACKETVER >= 20090107
+packetLen(0x03a3, 2)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x03a4
+#if PACKETVER >= 20090406
+packetLen(0x03a4, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03a4, 31)
+#elif PACKETVER >= 20090325
+packetLen(0x03a4, 8)
+#elif PACKETVER >= 20090318
+packetLen(0x03a4, 10)
+#elif PACKETVER >= 20090225
+packetLen(0x03a4, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x03a4, 14)
+#elif PACKETVER >= 20090211
+packetLen(0x03a4, 3)
+#elif PACKETVER >= 20090204
+packetLen(0x03a4, 7)
+#elif PACKETVER >= 20090107
+packetLen(0x03a4, 44)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x03a5
+#if PACKETVER >= 20090325
+packetLen(0x03a5, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x03a5, 3)
+#elif PACKETVER >= 20090311
+packetLen(0x03a5, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x03a5, 28)
+#elif PACKETVER >= 20090114
+packetLen(0x03a5, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x03a5, 8)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x03a6
+#if PACKETVER >= 20090401
+packetLen(0x03a6, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x03a6, 15)
+#elif PACKETVER >= 20090225
+packetLen(0x03a6, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x03a6, 10)
+#elif PACKETVER >= 20090211
+packetLen(0x03a6, 7)
+#elif PACKETVER >= 20090204
+packetLen(0x03a6, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x03a6, 17)
+#elif PACKETVER >= 20090114
+packetLen(0x03a6, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x03a6, 10)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x03a7
+#if PACKETVER >= 20090406
+packetLen(0x03a7, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03a7, 14)
+#elif PACKETVER >= 20090311
+packetLen(0x03a7, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x03a7, 8)
+#elif PACKETVER >= 20090218
+packetLen(0x03a7, 13)
+#elif PACKETVER >= 20090211
+packetLen(0x03a7, 3)
+#elif PACKETVER >= 20090129
+packetLen(0x03a7, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x03a7, 30)
+#elif PACKETVER >= 20090114
+packetLen(0x03a7, 5)
+#elif PACKETVER >= 20090107
+packetLen(0x03a7, 8)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x03a8
+#if PACKETVER >= 20090325
+packetLen(0x03a8, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x03a8, 10)
+#elif PACKETVER >= 20090311
+packetLen(0x03a8, 6)
+#elif PACKETVER >= 20090218
+packetLen(0x03a8, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x03a8, 8)
+#elif PACKETVER >= 20090204
+packetLen(0x03a8, 30)
+#elif PACKETVER >= 20090129
+packetLen(0x03a8, 26)
+#elif PACKETVER >= 20090120
+packetLen(0x03a8, 86)
+#elif PACKETVER >= 20090114
+packetLen(0x03a8, 19)
+#elif PACKETVER >= 20090107
+packetLen(0x03a8, -1)
+#endif
+
+// Packet: 0x03a9
+#if PACKETVER >= 20090406
+packetLen(0x03a9, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03a9, 2)
+#elif PACKETVER >= 20090325
+packetLen(0x03a9, 3)
+#elif PACKETVER >= 20090318
+packetLen(0x03a9, 27)
+#elif PACKETVER >= 20090311
+packetLen(0x03a9, 10)
+#elif PACKETVER >= 20090225
+packetLen(0x03a9, 8)
+#elif PACKETVER >= 20090218
+packetLen(0x03a9, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x03a9, 2)
+#elif PACKETVER >= 20090129
+packetLen(0x03a9, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x03a9, 6)
+#elif PACKETVER >= 20090107
+packetLen(0x03a9, 15)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x03aa
+#if PACKETVER >= 20090406
+packetLen(0x03aa, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03aa, 7)
+#elif PACKETVER >= 20090311
+packetLen(0x03aa, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x03aa, 6)
+#elif PACKETVER >= 20090218
+packetLen(0x03aa, 4)
+#elif PACKETVER >= 20090211
+packetLen(0x03aa, 18)
+#elif PACKETVER >= 20090114
+packetLen(0x03aa, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x03aa, 2)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x03ab
+#if PACKETVER >= 20090401
+packetLen(0x03ab, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x03ab, 3)
+#elif PACKETVER >= 20090318
+packetLen(0x03ab, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x03ab, 9)
+#elif PACKETVER >= 20090225
+packetLen(0x03ab, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x03ab, 30)
+#elif PACKETVER >= 20090204
+packetLen(0x03ab, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x03ab, 4)
+#elif PACKETVER >= 20090120
+packetLen(0x03ab, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x03ab, 7)
+#elif PACKETVER >= 20090107
+packetLen(0x03ab, 8)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x03ac
+#if PACKETVER >= 20090325
+packetLen(0x03ac, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x03ac, 6)
+#elif PACKETVER >= 20090225
+packetLen(0x03ac, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x03ac, 71)
+#elif PACKETVER >= 20090129
+packetLen(0x03ac, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x03ac, 10)
+#elif PACKETVER >= 20090114
+packetLen(0x03ac, 54)
+#elif PACKETVER >= 20090107
+packetLen(0x03ac, -1)
+#endif
+
+// Packet: 0x03ad
+#if PACKETVER >= 20090325
+packetLen(0x03ad, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x03ad, 14)
+#elif PACKETVER >= 20090311
+packetLen(0x03ad, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x03ad, 15)
+#elif PACKETVER >= 20090218
+packetLen(0x03ad, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x03ad, 9)
+#elif PACKETVER >= 20090107
+packetLen(0x03ad, -1)
+#endif
+
+// Packet: 0x03ae
+#if PACKETVER >= 20090325
+packetLen(0x03ae, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x03ae, 6)
+#elif PACKETVER >= 20090311
+packetLen(0x03ae, 2)
+#elif PACKETVER >= 20090225
+packetLen(0x03ae, 282)
+#elif PACKETVER >= 20090218
+packetLen(0x03ae, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x03ae, 3)
+#elif PACKETVER >= 20090107
+packetLen(0x03ae, -1)
+#endif
+
+// Packet: 0x03af
+#if PACKETVER >= 20090406
+packetLen(0x03af, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03af, 5)
+#elif PACKETVER >= 20090325
+packetLen(0x03af, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x03af, 3)
+#elif PACKETVER >= 20090311
+packetLen(0x03af, 10)
+#elif PACKETVER >= 20090225
+packetLen(0x03af, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x03af, 14)
+#elif PACKETVER >= 20090211
+packetLen(0x03af, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x03af, 54)
+#elif PACKETVER >= 20090114
+packetLen(0x03af, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x03af, 23)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x03b0
+#if PACKETVER >= 20090406
+packetLen(0x03b0, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03b0, 26)
+#elif PACKETVER >= 20090325
+packetLen(0x03b0, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x03b0, 14)
+#elif PACKETVER >= 20090225
+packetLen(0x03b0, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x03b0, 6)
+#elif PACKETVER >= 20090211
+packetLen(0x03b0, 3)
+#elif PACKETVER >= 20090114
+packetLen(0x03b0, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x03b0, 26)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x03b1
+#if PACKETVER >= 20090406
+packetLen(0x03b1, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03b1, 10)
+#elif PACKETVER >= 20090325
+packetLen(0x03b1, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x03b1, 18)
+#elif PACKETVER >= 20090225
+packetLen(0x03b1, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x03b1, 6)
+#elif PACKETVER >= 20090204
+packetLen(0x03b1, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x03b1, 3)
+#elif PACKETVER >= 20090120
+packetLen(0x03b1, 26)
+#elif PACKETVER >= 20090114
+packetLen(0x03b1, 17)
+#elif PACKETVER >= 20090107
+packetLen(0x03b1, 22)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x03b2
+#if PACKETVER >= 20090311
+packetLen(0x03b2, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x03b2, 5)
+#elif PACKETVER >= 20090211
+packetLen(0x03b2, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x03b2, 26)
+#elif PACKETVER >= 20090129
+packetLen(0x03b2, 30)
+#elif PACKETVER >= 20090107
+packetLen(0x03b2, -1)
+#endif
+
+// Packet: 0x03b3
+#if PACKETVER >= 20090406
+packetLen(0x03b3, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03b3, 79)
+#elif PACKETVER >= 20090325
+packetLen(0x03b3, 2)
+#elif PACKETVER >= 20090318
+packetLen(0x03b3, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x03b3, 53)
+#elif PACKETVER >= 20090218
+packetLen(0x03b3, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x03b3, 31)
+#elif PACKETVER >= 20090114
+packetLen(0x03b3, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x03b3, 39)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x03b4
+#if PACKETVER >= 20090406
+packetLen(0x03b4, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03b4, 2)
+#elif PACKETVER >= 20090318
+packetLen(0x03b4, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x03b4, 31)
+#elif PACKETVER >= 20090211
+packetLen(0x03b4, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x03b4, 3)
+#elif PACKETVER >= 20090129
+packetLen(0x03b4, 8)
+#elif PACKETVER >= 20090120
+packetLen(0x03b4, 7)
+#elif PACKETVER >= 20090107
+packetLen(0x03b4, -1)
+#endif
+
+// Packet: 0x03b5
+#if PACKETVER >= 20090311
+packetLen(0x03b5, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x03b5, 6)
+#elif PACKETVER >= 20090204
+packetLen(0x03b5, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x03b5, 8)
+#elif PACKETVER >= 20090120
+packetLen(0x03b5, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x03b5, 37)
+#elif PACKETVER >= 20090107
+packetLen(0x03b5, -1)
+#endif
+
+// Packet: 0x03b6
+#if PACKETVER >= 20090406
+packetLen(0x03b6, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03b6, 3)
+#elif PACKETVER >= 20090325
+packetLen(0x03b6, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x03b6, 8)
+#elif PACKETVER >= 20090211
+packetLen(0x03b6, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x03b6, 6)
+#elif PACKETVER >= 20090129
+packetLen(0x03b6, 3)
+#elif PACKETVER >= 20090120
+packetLen(0x03b6, 60)
+#elif PACKETVER >= 20090114
+packetLen(0x03b6, 2)
+#elif PACKETVER >= 20090107
+packetLen(0x03b6, 22)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x03b7
+#if PACKETVER >= 20090401
+packetLen(0x03b7, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x03b7, 31)
+#elif PACKETVER >= 20090311
+packetLen(0x03b7, 6)
+#elif PACKETVER >= 20090225
+packetLen(0x03b7, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x03b7, 32)
+#elif PACKETVER >= 20090211
+packetLen(0x03b7, 5)
+#elif PACKETVER >= 20090204
+packetLen(0x03b7, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x03b7, 9)
+#elif PACKETVER >= 20090120
+packetLen(0x03b7, 4)
+#elif PACKETVER >= 20090114
+packetLen(0x03b7, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x03b7, 29)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x03b8
+#if PACKETVER >= 20090401
+packetLen(0x03b8, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x03b8, 17)
+#elif PACKETVER >= 20090318
+packetLen(0x03b8, 3)
+#elif PACKETVER >= 20090129
+packetLen(0x03b8, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x03b8, 8)
+#elif PACKETVER >= 20090114
+packetLen(0x03b8, 10)
+#elif PACKETVER >= 20090107
+packetLen(0x03b8, -1)
+#endif
+
+// Packet: 0x03b9
+#if PACKETVER >= 20090401
+packetLen(0x03b9, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x03b9, 26)
+#elif PACKETVER >= 20090318
+packetLen(0x03b9, 58)
+#elif PACKETVER >= 20090218
+packetLen(0x03b9, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x03b9, 22)
+#elif PACKETVER >= 20090204
+packetLen(0x03b9, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x03b9, 28)
+#elif PACKETVER >= 20090120
+packetLen(0x03b9, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x03b9, 20)
+#elif PACKETVER >= 20090107
+packetLen(0x03b9, 18)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x03ba
+#if PACKETVER >= 20090406
+packetLen(0x03ba, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03ba, 12)
+#elif PACKETVER >= 20090325
+packetLen(0x03ba, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x03ba, 22)
+#elif PACKETVER >= 20090311
+packetLen(0x03ba, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x03ba, 23)
+#elif PACKETVER >= 20090218
+packetLen(0x03ba, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x03ba, 7)
+#elif PACKETVER >= 20090204
+packetLen(0x03ba, 4)
+#elif PACKETVER >= 20090129
+packetLen(0x03ba, 42)
+#elif PACKETVER >= 20090114
+packetLen(0x03ba, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x03ba, 67)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x03bb
+#if PACKETVER >= 20090406
+packetLen(0x03bb, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03bb, 8)
+#elif PACKETVER >= 20090318
+packetLen(0x03bb, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x03bb, 6)
+#elif PACKETVER >= 20090218
+packetLen(0x03bb, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x03bb, 34)
+#elif PACKETVER >= 20090107
+packetLen(0x03bb, -1)
+#endif
+
+// Packet: 0x03bc
+#if PACKETVER >= 20090325
+packetLen(0x03bc, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x03bc, 7)
+#elif PACKETVER >= 20090311
+packetLen(0x03bc, 6)
+#elif PACKETVER >= 20090225
+packetLen(0x03bc, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x03bc, 2)
+#elif PACKETVER >= 20090211
+packetLen(0x03bc, 30)
+#elif PACKETVER >= 20090204
+packetLen(0x03bc, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x03bc, 53)
+#elif PACKETVER >= 20090120
+packetLen(0x03bc, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x03bc, 186)
+#elif PACKETVER >= 20090107
+packetLen(0x03bc, -1)
+#endif
+
+// Packet: 0x03bd
+#if PACKETVER >= 20090401
+packetLen(0x03bd, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x03bd, 20)
+#elif PACKETVER >= 20090311
+packetLen(0x03bd, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x03bd, 67)
+#elif PACKETVER >= 20090211
+packetLen(0x03bd, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x03bd, 11)
+#elif PACKETVER >= 20090129
+packetLen(0x03bd, 28)
+#elif PACKETVER >= 20090107
+packetLen(0x03bd, -1)
+#endif
+
+// Packet: 0x03be
+#if PACKETVER >= 20090406
+packetLen(0x03be, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03be, 2)
+#elif PACKETVER >= 20090325
+packetLen(0x03be, 6)
+#elif PACKETVER >= 20090318
+packetLen(0x03be, 42)
+#elif PACKETVER >= 20090311
+packetLen(0x03be, 5)
+#elif PACKETVER >= 20090114
+packetLen(0x03be, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x03be, 6)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x03bf
+#if PACKETVER >= 20090406
+packetLen(0x03bf, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03bf, 11)
+#elif PACKETVER >= 20090325
+packetLen(0x03bf, 2)
+#elif PACKETVER >= 20090318
+packetLen(0x03bf, 3)
+#elif PACKETVER >= 20090311
+packetLen(0x03bf, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x03bf, 6)
+#elif PACKETVER >= 20090218
+packetLen(0x03bf, 12)
+#elif PACKETVER >= 20090211
+packetLen(0x03bf, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x03bf, 4)
+#elif PACKETVER >= 20090120
+packetLen(0x03bf, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x03bf, 6)
+#elif PACKETVER >= 20090107
+packetLen(0x03bf, 28)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x03c0
+#if PACKETVER >= 20090325
+packetLen(0x03c0, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x03c0, 2)
+#elif PACKETVER >= 20090311
+packetLen(0x03c0, 30)
+#elif PACKETVER >= 20090225
+packetLen(0x03c0, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x03c0, 102)
+#elif PACKETVER >= 20090204
+packetLen(0x03c0, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x03c0, 4)
+#elif PACKETVER >= 20090120
+packetLen(0x03c0, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x03c0, 6)
+#elif PACKETVER >= 20090107
+packetLen(0x03c0, -1)
+#endif
+
+// Packet: 0x03c1
+#if PACKETVER >= 20090401
+packetLen(0x03c1, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x03c1, 30)
+#elif PACKETVER >= 20090318
+packetLen(0x03c1, 10)
+#elif PACKETVER >= 20090311
+packetLen(0x03c1, 13)
+#elif PACKETVER >= 20090225
+packetLen(0x03c1, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x03c1, 6)
+#elif PACKETVER >= 20090211
+packetLen(0x03c1, 5)
+#elif PACKETVER >= 20090204
+packetLen(0x03c1, 30)
+#elif PACKETVER >= 20090129
+packetLen(0x03c1, 18)
+#elif PACKETVER >= 20090107
+packetLen(0x03c1, -1)
+#endif
+
+// Packet: 0x03c2
+#if PACKETVER >= 20090406
+packetLen(0x03c2, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03c2, 4)
+#elif PACKETVER >= 20090325
+packetLen(0x03c2, 2)
+#elif PACKETVER >= 20090225
+packetLen(0x03c2, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x03c2, 6)
+#elif PACKETVER >= 20090211
+packetLen(0x03c2, 55)
+#elif PACKETVER >= 20090204
+packetLen(0x03c2, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x03c2, 30)
+#elif PACKETVER >= 20090120
+packetLen(0x03c2, 26)
+#elif PACKETVER >= 20090107
+packetLen(0x03c2, -1)
+#endif
+
+// Packet: 0x03c3
+#if PACKETVER >= 20090406
+packetLen(0x03c3, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03c3, 114)
+#elif PACKETVER >= 20090325
+packetLen(0x03c3, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x03c3, 8)
+#elif PACKETVER >= 20090311
+packetLen(0x03c3, 18)
+#elif PACKETVER >= 20090225
+packetLen(0x03c3, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x03c3, 15)
+#elif PACKETVER >= 20090120
+packetLen(0x03c3, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x03c3, 3)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x03c4
+#if PACKETVER >= 20090406
+packetLen(0x03c4, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03c4, 39)
+#elif PACKETVER >= 20090325
+packetLen(0x03c4, 6)
+#elif PACKETVER >= 20090318
+packetLen(0x03c4, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x03c4, 8)
+#elif PACKETVER >= 20090225
+packetLen(0x03c4, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x03c4, 8)
+#elif PACKETVER >= 20090107
+packetLen(0x03c4, -1)
+#endif
+
+// Packet: 0x03c5
+#if PACKETVER >= 20090325
+packetLen(0x03c5, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x03c5, 6)
+#elif PACKETVER >= 20090311
+packetLen(0x03c5, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x03c5, 8)
+#elif PACKETVER >= 20090218
+packetLen(0x03c5, 6)
+#elif PACKETVER >= 20090120
+packetLen(0x03c5, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x03c5, 90)
+#elif PACKETVER >= 20090107
+packetLen(0x03c5, 12)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x03c6
+#if PACKETVER >= 20090406
+packetLen(0x03c6, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03c6, 10)
+#elif PACKETVER >= 20090325
+packetLen(0x03c6, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x03c6, 21)
+#elif PACKETVER >= 20090311
+packetLen(0x03c6, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x03c6, 14)
+#elif PACKETVER >= 20090218
+packetLen(0x03c6, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x03c6, 58)
+#elif PACKETVER >= 20090204
+packetLen(0x03c6, 14)
+#elif PACKETVER >= 20090120
+packetLen(0x03c6, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x03c6, 26)
+#elif PACKETVER >= 20090107
+packetLen(0x03c6, 7)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x03c7
+#if PACKETVER >= 20090406
+packetLen(0x03c7, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03c7, 3)
+#elif PACKETVER >= 20090311
+packetLen(0x03c7, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x03c7, 3)
+#elif PACKETVER >= 20090218
+packetLen(0x03c7, 282)
+#elif PACKETVER >= 20090211
+packetLen(0x03c7, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x03c7, 6)
+#elif PACKETVER >= 20090129
+packetLen(0x03c7, 2)
+#elif PACKETVER >= 20090120
+packetLen(0x03c7, 28)
+#elif PACKETVER >= 20090107
+packetLen(0x03c7, 9)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x03c8
+#if PACKETVER >= 20090325
+packetLen(0x03c8, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x03c8, 6)
+#elif PACKETVER >= 20090218
+packetLen(0x03c8, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x03c8, 11)
+#elif PACKETVER >= 20090129
+packetLen(0x03c8, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x03c8, 6)
+#elif PACKETVER >= 20090107
+packetLen(0x03c8, -1)
+#endif
+
+// Packet: 0x03c9
+#if PACKETVER >= 20090406
+packetLen(0x03c9, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03c9, 10)
+#elif PACKETVER >= 20090325
+packetLen(0x03c9, 26)
+#elif PACKETVER >= 20090311
+packetLen(0x03c9, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x03c9, 10)
+#elif PACKETVER >= 20090218
+packetLen(0x03c9, 4)
+#elif PACKETVER >= 20090211
+packetLen(0x03c9, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x03c9, 30)
+#elif PACKETVER >= 20090129
+packetLen(0x03c9, 6)
+#elif PACKETVER >= 20090114
+packetLen(0x03c9, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x03c9, 68)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x03ca
+#if PACKETVER >= 20090406
+packetLen(0x03ca, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03ca, 57)
+#elif PACKETVER >= 20090225
+packetLen(0x03ca, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x03ca, 18)
+#elif PACKETVER >= 20090211
+packetLen(0x03ca, 6)
+#elif PACKETVER >= 20090204
+packetLen(0x03ca, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x03ca, 5)
+#elif PACKETVER >= 20090120
+packetLen(0x03ca, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x03ca, 34)
+#elif PACKETVER >= 20090107
+packetLen(0x03ca, -1)
+#endif
+
+// Packet: 0x03cb
+#if PACKETVER >= 20090225
+packetLen(0x03cb, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x03cb, 60)
+#elif PACKETVER >= 20090211
+packetLen(0x03cb, 3)
+#elif PACKETVER >= 20090204
+packetLen(0x03cb, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x03cb, 33)
+#elif PACKETVER >= 20090107
+packetLen(0x03cb, 2)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x03cc
+#if PACKETVER >= 20090401
+packetLen(0x03cc, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x03cc, 10)
+#elif PACKETVER >= 20090318
+packetLen(0x03cc, 29)
+#elif PACKETVER >= 20090225
+packetLen(0x03cc, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x03cc, 11)
+#elif PACKETVER >= 20090211
+packetLen(0x03cc, 2)
+#elif PACKETVER >= 20090107
+packetLen(0x03cc, -1)
+#endif
+
+// Packet: 0x03cd
+#if PACKETVER >= 20090406
+packetLen(0x03cd, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03cd, 20)
+#elif PACKETVER >= 20090325
+packetLen(0x03cd, 6)
+#elif PACKETVER >= 20090318
+packetLen(0x03cd, 66)
+#elif PACKETVER >= 20090311
+packetLen(0x03cd, 7)
+#elif PACKETVER >= 20090218
+packetLen(0x03cd, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x03cd, 6)
+#elif PACKETVER >= 20090114
+packetLen(0x03cd, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x03cd, 26)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x03ce
+#if PACKETVER >= 20090225
+packetLen(0x03ce, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x03ce, 26)
+#elif PACKETVER >= 20090204
+packetLen(0x03ce, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x03ce, 7)
+#elif PACKETVER >= 20090120
+packetLen(0x03ce, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x03ce, 22)
+#elif PACKETVER >= 20090107
+packetLen(0x03ce, 7)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x03cf
+#if PACKETVER >= 20090225
+packetLen(0x03cf, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x03cf, 3)
+#elif PACKETVER >= 20090211
+packetLen(0x03cf, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x03cf, 26)
+#elif PACKETVER >= 20090129
+packetLen(0x03cf, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x03cf, 14)
+#elif PACKETVER >= 20090114
+packetLen(0x03cf, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x03cf, 30)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x03d0
+#if PACKETVER >= 20090406
+packetLen(0x03d0, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03d0, 14)
+#elif PACKETVER >= 20090211
+packetLen(0x03d0, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x03d0, 7)
+#elif PACKETVER >= 20090129
+packetLen(0x03d0, 18)
+#elif PACKETVER >= 20090120
+packetLen(0x03d0, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x03d0, 6)
+#elif PACKETVER >= 20090107
+packetLen(0x03d0, 2)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x03d1
+#if PACKETVER >= 20090406
+packetLen(0x03d1, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03d1, 54)
+#elif PACKETVER >= 20090325
+packetLen(0x03d1, 26)
+#elif PACKETVER >= 20090311
+packetLen(0x03d1, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x03d1, 2)
+#elif PACKETVER >= 20090218
+packetLen(0x03d1, 36)
+#elif PACKETVER >= 20090211
+packetLen(0x03d1, 28)
+#elif PACKETVER >= 20090114
+packetLen(0x03d1, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x03d1, 28)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x03d2
+#if PACKETVER >= 20090406
+packetLen(0x03d2, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03d2, 3)
+#elif PACKETVER >= 20090107
+packetLen(0x03d2, 29)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x03d3
+#if PACKETVER >= 20090401
+packetLen(0x03d3, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x03d3, 6)
+#elif PACKETVER >= 20090225
+packetLen(0x03d3, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x03d3, 26)
+#elif PACKETVER >= 20090211
+packetLen(0x03d3, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x03d3, 4)
+#elif PACKETVER >= 20090120
+packetLen(0x03d3, 6)
+#elif PACKETVER >= 20090107
+packetLen(0x03d3, 6)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x03d4
+#if PACKETVER >= 20090406
+packetLen(0x03d4, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03d4, 4)
+#elif PACKETVER >= 20090311
+packetLen(0x03d4, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x03d4, 15)
+#elif PACKETVER >= 20090218
+packetLen(0x03d4, 6)
+#elif PACKETVER >= 20090211
+packetLen(0x03d4, 14)
+#elif PACKETVER >= 20090204
+packetLen(0x03d4, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x03d4, 6)
+#elif PACKETVER >= 20090120
+packetLen(0x03d4, 282)
+#elif PACKETVER >= 20090114
+packetLen(0x03d4, 10)
+#elif PACKETVER >= 20090107
+packetLen(0x03d4, 21)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x03d5
+#if PACKETVER >= 20090325
+packetLen(0x03d5, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x03d5, 2)
+#elif PACKETVER >= 20090225
+packetLen(0x03d5, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x03d5, 30)
+#elif PACKETVER >= 20090211
+packetLen(0x03d5, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x03d5, 60)
+#elif PACKETVER >= 20090114
+packetLen(0x03d5, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x03d5, 6)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x03d6
+#if PACKETVER >= 20090406
+packetLen(0x03d6, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03d6, 3)
+#elif PACKETVER >= 20090325
+packetLen(0x03d6, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x03d6, 32)
+#elif PACKETVER >= 20090311
+packetLen(0x03d6, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x03d6, 6)
+#elif PACKETVER >= 20090218
+packetLen(0x03d6, 2)
+#elif PACKETVER >= 20090211
+packetLen(0x03d6, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x03d6, 8)
+#elif PACKETVER >= 20090114
+packetLen(0x03d6, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x03d6, 4)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x03d7
+#if PACKETVER >= 20090406
+packetLen(0x03d7, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03d7, 182)
+#elif PACKETVER >= 20090318
+packetLen(0x03d7, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x03d7, 11)
+#elif PACKETVER >= 20090225
+packetLen(0x03d7, 42)
+#elif PACKETVER >= 20090218
+packetLen(0x03d7, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x03d7, 8)
+#elif PACKETVER >= 20090204
+packetLen(0x03d7, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x03d7, 6)
+#elif PACKETVER >= 20090120
+packetLen(0x03d7, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x03d7, 10)
+#elif PACKETVER >= 20090107
+packetLen(0x03d7, 27)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x03d8
+#if PACKETVER >= 20090318
+packetLen(0x03d8, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x03d8, 8)
+#elif PACKETVER >= 20090114
+packetLen(0x03d8, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x03d8, 32)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x03d9
+#if PACKETVER >= 20090406
+packetLen(0x03d9, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03d9, 11)
+#elif PACKETVER >= 20090325
+packetLen(0x03d9, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x03d9, 6)
+#elif PACKETVER >= 20090211
+packetLen(0x03d9, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x03d9, 5)
+#elif PACKETVER >= 20090129
+packetLen(0x03d9, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x03d9, 3)
+#elif PACKETVER >= 20090107
+packetLen(0x03d9, 4)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x03da
+#if PACKETVER >= 20090204
+packetLen(0x03da, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x03da, 2)
+#elif PACKETVER >= 20090120
+packetLen(0x03da, 44)
+#elif PACKETVER >= 20090114
+packetLen(0x03da, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x03da, 102)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x03db
+#if PACKETVER >= 20090325
+packetLen(0x03db, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x03db, 5)
+#elif PACKETVER >= 20090211
+packetLen(0x03db, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x03db, 3)
+#elif PACKETVER >= 20090129
+packetLen(0x03db, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x03db, 10)
+#elif PACKETVER >= 20090107
+packetLen(0x03db, -1)
+#endif
+
+// Packet: 0x03dc
+#if PACKETVER >= 20090211
+packetLen(0x03dc, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x03dc, 2)
+#elif PACKETVER >= 20090129
+packetLen(0x03dc, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x03dc, 5)
+#elif PACKETVER >= 20090114
+packetLen(0x03dc, 10)
+#elif PACKETVER >= 20090107
+packetLen(0x03dc, 90)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x03dd
+packetLen(0x03dd, 18) // AHC_GAME_GUARD
+
+// Packet: 0x03de
+packetLen(0x03de, 18) // CAH_ACK_GAME_GUARD
+
+// Packet: 0x03e2
+#if PACKETVER >= 20090401
+packetLen(0x03e2, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x03e2, 8)
+#elif PACKETVER >= 20090225
+packetLen(0x03e2, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x03e2, 29)
+#elif PACKETVER >= 20090204
+packetLen(0x03e2, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x03e2, 3)
+#elif PACKETVER >= 20090120
+packetLen(0x03e2, 6)
+#elif PACKETVER >= 20090114
+packetLen(0x03e2, 3)
+#elif PACKETVER >= 20090107
+packetLen(0x03e2, 10)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x03e3
+#if PACKETVER >= 20090401
+packetLen(0x03e3, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x03e3, 10)
+#elif PACKETVER >= 20090318
+packetLen(0x03e3, 54)
+#elif PACKETVER >= 20090311
+packetLen(0x03e3, 67)
+#elif PACKETVER >= 20090129
+packetLen(0x03e3, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x03e3, 2)
+#elif PACKETVER >= 20090114
+packetLen(0x03e3, 26)
+#elif PACKETVER >= 20090107
+packetLen(0x03e3, -1)
+#endif
+
+// Packet: 0x03e4
+#if PACKETVER >= 20090401
+packetLen(0x03e4, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x03e4, 58)
+#elif PACKETVER >= 20090318
+packetLen(0x03e4, 12)
+#elif PACKETVER >= 20090311
+packetLen(0x03e4, 19)
+#elif PACKETVER >= 20090211
+packetLen(0x03e4, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x03e4, 6)
+#elif PACKETVER >= 20090129
+packetLen(0x03e4, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x03e4, 3)
+#elif PACKETVER >= 20090107
+packetLen(0x03e4, -1)
+#endif
+
+// Packet: 0x03e5
+#if PACKETVER >= 20090211
+packetLen(0x03e5, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x03e5, 9)
+#elif PACKETVER >= 20090120
+packetLen(0x03e5, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x03e5, 8)
+#elif PACKETVER >= 20090107
+packetLen(0x03e5, 3)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x03e6
+#if PACKETVER >= 20090406
+packetLen(0x03e6, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03e6, 10)
+#elif PACKETVER >= 20090325
+packetLen(0x03e6, 54)
+#elif PACKETVER >= 20090318
+packetLen(0x03e6, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x03e6, 6)
+#elif PACKETVER >= 20090225
+packetLen(0x03e6, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x03e6, 5)
+#elif PACKETVER >= 20090211
+packetLen(0x03e6, 6)
+#elif PACKETVER >= 20090204
+packetLen(0x03e6, 10)
+#elif PACKETVER >= 20090129
+packetLen(0x03e6, 58)
+#elif PACKETVER >= 20090107
+packetLen(0x03e6, 6)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x03e7
+#if PACKETVER >= 20090225
+packetLen(0x03e7, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x03e7, 3)
+#elif PACKETVER >= 20090211
+packetLen(0x03e7, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x03e7, 3)
+#elif PACKETVER >= 20090129
+packetLen(0x03e7, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x03e7, 2)
+#elif PACKETVER >= 20090114
+packetLen(0x03e7, 11)
+#elif PACKETVER >= 20090107
+packetLen(0x03e7, 66)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x03e8
+#if PACKETVER >= 20090401
+packetLen(0x03e8, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x03e8, 14)
+#elif PACKETVER >= 20090318
+packetLen(0x03e8, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x03e8, 30)
+#elif PACKETVER >= 20090225
+packetLen(0x03e8, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x03e8, 7)
+#elif PACKETVER >= 20090211
+packetLen(0x03e8, 6)
+#elif PACKETVER >= 20090204
+packetLen(0x03e8, 10)
+#elif PACKETVER >= 20090129
+packetLen(0x03e8, 30)
+#elif PACKETVER >= 20090120
+packetLen(0x03e8, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x03e8, 81)
+#elif PACKETVER >= 20090107
+packetLen(0x03e8, 2)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x03e9
+#if PACKETVER >= 20090406
+packetLen(0x03e9, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03e9, 10)
+#elif PACKETVER >= 20090325
+packetLen(0x03e9, 7)
+#elif PACKETVER >= 20090318
+packetLen(0x03e9, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x03e9, 10)
+#elif PACKETVER >= 20090225
+packetLen(0x03e9, 5)
+#elif PACKETVER >= 20090218
+packetLen(0x03e9, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x03e9, 4)
+#elif PACKETVER >= 20090204
+packetLen(0x03e9, 53)
+#elif PACKETVER >= 20090129
+packetLen(0x03e9, 10)
+#elif PACKETVER >= 20090114
+packetLen(0x03e9, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x03e9, 58)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x03ea
+#if PACKETVER >= 20090406
+packetLen(0x03ea, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03ea, 44)
+#elif PACKETVER >= 20090325
+packetLen(0x03ea, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x03ea, 2)
+#elif PACKETVER >= 20090218
+packetLen(0x03ea, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x03ea, 97)
+#elif PACKETVER >= 20090107
+packetLen(0x03ea, -1)
+#endif
+
+// Packet: 0x03eb
+#if PACKETVER >= 20090406
+packetLen(0x03eb, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03eb, 6)
+#elif PACKETVER >= 20090325
+packetLen(0x03eb, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x03eb, 6)
+#elif PACKETVER >= 20090311
+packetLen(0x03eb, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x03eb, 8)
+#elif PACKETVER >= 20090218
+packetLen(0x03eb, 6)
+#elif PACKETVER >= 20090211
+packetLen(0x03eb, 8)
+#elif PACKETVER >= 20090204
+packetLen(0x03eb, 4)
+#elif PACKETVER >= 20090120
+packetLen(0x03eb, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x03eb, 39)
+#elif PACKETVER >= 20090107
+packetLen(0x03eb, -1)
+#endif
+
+// Packet: 0x03ec
+#if PACKETVER >= 20090318
+packetLen(0x03ec, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x03ec, 68)
+#elif PACKETVER >= 20090225
+packetLen(0x03ec, 2)
+#elif PACKETVER >= 20090218
+packetLen(0x03ec, 282)
+#elif PACKETVER >= 20090204
+packetLen(0x03ec, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x03ec, 34)
+#elif PACKETVER >= 20090114
+packetLen(0x03ec, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x03ec, 8)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x03ed
+#if PACKETVER >= 20090406
+packetLen(0x03ed, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03ed, 32)
+#elif PACKETVER >= 20090325
+packetLen(0x03ed, 186)
+#elif PACKETVER >= 20090311
+packetLen(0x03ed, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x03ed, 13)
+#elif PACKETVER >= 20090218
+packetLen(0x03ed, 9)
+#elif PACKETVER >= 20090211
+packetLen(0x03ed, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x03ed, 6)
+#elif PACKETVER >= 20090129
+packetLen(0x03ed, 4)
+#elif PACKETVER >= 20090120
+packetLen(0x03ed, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x03ed, 33)
+#elif PACKETVER >= 20090107
+packetLen(0x03ed, 6)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x03ee
+#if PACKETVER >= 20090401
+packetLen(0x03ee, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x03ee, 7)
+#elif PACKETVER >= 20090318
+packetLen(0x03ee, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x03ee, 39)
+#elif PACKETVER >= 20090225
+packetLen(0x03ee, 43)
+#elif PACKETVER >= 20090211
+packetLen(0x03ee, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x03ee, 6)
+#elif PACKETVER >= 20090129
+packetLen(0x03ee, 60)
+#elif PACKETVER >= 20090107
+packetLen(0x03ee, 10)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x03ef
+#if PACKETVER >= 20090325
+packetLen(0x03ef, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x03ef, 6)
+#elif PACKETVER >= 20090311
+packetLen(0x03ef, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x03ef, 28)
+#elif PACKETVER >= 20090129
+packetLen(0x03ef, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x03ef, 16)
+#elif PACKETVER >= 20090114
+packetLen(0x03ef, 27)
+#elif PACKETVER >= 20090107
+packetLen(0x03ef, 17)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x03f0
+#if PACKETVER >= 20090406
+packetLen(0x03f0, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03f0, 186)
+#elif PACKETVER >= 20090318
+packetLen(0x03f0, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x03f0, 4)
+#elif PACKETVER >= 20090225
+packetLen(0x03f0, 3)
+#elif PACKETVER >= 20090218
+packetLen(0x03f0, 21)
+#elif PACKETVER >= 20090211
+packetLen(0x03f0, 4)
+#elif PACKETVER >= 20090204
+packetLen(0x03f0, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x03f0, 8)
+#elif PACKETVER >= 20090120
+packetLen(0x03f0, 3)
+#elif PACKETVER >= 20090114
+packetLen(0x03f0, 6)
+#elif PACKETVER >= 20090107
+packetLen(0x03f0, -1)
+#endif
+
+// Packet: 0x03f1
+#if PACKETVER >= 20090401
+packetLen(0x03f1, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x03f1, 2)
+#elif PACKETVER >= 20090318
+packetLen(0x03f1, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x03f1, 4)
+#elif PACKETVER >= 20090225
+packetLen(0x03f1, 30)
+#elif PACKETVER >= 20090218
+packetLen(0x03f1, 65)
+#elif PACKETVER >= 20090211
+packetLen(0x03f1, 14)
+#elif PACKETVER >= 20090204
+packetLen(0x03f1, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x03f1, 10)
+#elif PACKETVER >= 20090114
+packetLen(0x03f1, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x03f1, 6)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x03f2
+#if PACKETVER >= 20090311
+packetLen(0x03f2, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x03f2, 10)
+#elif PACKETVER >= 20090218
+packetLen(0x03f2, 26)
+#elif PACKETVER >= 20090211
+packetLen(0x03f2, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x03f2, 4)
+#elif PACKETVER >= 20090129
+packetLen(0x03f2, 282)
+#elif PACKETVER >= 20090120
+packetLen(0x03f2, 9)
+#elif PACKETVER >= 20090107
+packetLen(0x03f2, -1)
+#endif
+
+// Packet: 0x03f3
+#if PACKETVER >= 20090401
+packetLen(0x03f3, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x03f3, 2)
+#elif PACKETVER >= 20090318
+packetLen(0x03f3, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x03f3, 5)
+#elif PACKETVER >= 20090225
+packetLen(0x03f3, 7)
+#elif PACKETVER >= 20090211
+packetLen(0x03f3, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x03f3, 9)
+#elif PACKETVER >= 20090129
+packetLen(0x03f3, 6)
+#elif PACKETVER >= 20090120
+packetLen(0x03f3, 67)
+#elif PACKETVER >= 20090114
+packetLen(0x03f3, 8)
+#elif PACKETVER >= 20090107
+packetLen(0x03f3, -1)
+#endif
+
+// Packet: 0x03f4
+#if PACKETVER >= 20090406
+packetLen(0x03f4, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03f4, 8)
+#elif PACKETVER >= 20090311
+packetLen(0x03f4, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x03f4, 14)
+#elif PACKETVER >= 20090218
+packetLen(0x03f4, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x03f4, 32)
+#elif PACKETVER >= 20090129
+packetLen(0x03f4, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x03f4, 13)
+#elif PACKETVER >= 20090114
+packetLen(0x03f4, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x03f4, 5)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x03f5
+#if PACKETVER >= 20090318
+packetLen(0x03f5, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x03f5, 10)
+#elif PACKETVER >= 20090211
+packetLen(0x03f5, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x03f5, 8)
+#elif PACKETVER >= 20090107
+packetLen(0x03f5, -1)
+#endif
+
+// Packet: 0x03f6
+#if PACKETVER >= 20090406
+packetLen(0x03f6, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03f6, 6)
+#elif PACKETVER >= 20090318
+packetLen(0x03f6, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x03f6, 10)
+#elif PACKETVER >= 20090211
+packetLen(0x03f6, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x03f6, 2)
+#elif PACKETVER >= 20090129
+packetLen(0x03f6, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x03f6, 8)
+#elif PACKETVER >= 20090114
+packetLen(0x03f6, 4)
+#elif PACKETVER >= 20090107
+packetLen(0x03f6, 4)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x03f7
+#if PACKETVER >= 20090401
+packetLen(0x03f7, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x03f7, 54)
+#elif PACKETVER >= 20090318
+packetLen(0x03f7, 16)
+#elif PACKETVER >= 20090311
+packetLen(0x03f7, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x03f7, 30)
+#elif PACKETVER >= 20090211
+packetLen(0x03f7, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x03f7, 4)
+#elif PACKETVER >= 20090129
+packetLen(0x03f7, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x03f7, 7)
+#elif PACKETVER >= 20090114
+packetLen(0x03f7, 30)
+#elif PACKETVER >= 20090107
+packetLen(0x03f7, -1)
+#endif
+
+// Packet: 0x03f8
+#if PACKETVER >= 20090406
+packetLen(0x03f8, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03f8, 3)
+#elif PACKETVER >= 20090318
+packetLen(0x03f8, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x03f8, 21)
+#elif PACKETVER >= 20090211
+packetLen(0x03f8, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x03f8, 17)
+#elif PACKETVER >= 20090129
+packetLen(0x03f8, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x03f8, 6)
+#elif PACKETVER >= 20090107
+packetLen(0x03f8, -1)
+#endif
+
+// Packet: 0x03f9
+#if PACKETVER >= 20090225
+packetLen(0x03f9, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x03f9, 14)
+#elif PACKETVER >= 20090211
+packetLen(0x03f9, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x03f9, 3)
+#elif PACKETVER >= 20090129
+packetLen(0x03f9, 2)
+#elif PACKETVER >= 20090120
+packetLen(0x03f9, 11)
+#elif PACKETVER >= 20090114
+packetLen(0x03f9, 3)
+#elif PACKETVER >= 20090107
+packetLen(0x03f9, 10)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x03fa
+#if PACKETVER >= 20090406
+packetLen(0x03fa, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03fa, 282)
+#elif PACKETVER >= 20090325
+packetLen(0x03fa, 90)
+#elif PACKETVER >= 20090318
+packetLen(0x03fa, 33)
+#elif PACKETVER >= 20090311
+packetLen(0x03fa, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x03fa, 71)
+#elif PACKETVER >= 20090218
+packetLen(0x03fa, 5)
+#elif PACKETVER >= 20090211
+packetLen(0x03fa, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x03fa, 8)
+#elif PACKETVER >= 20090120
+packetLen(0x03fa, 3)
+#elif PACKETVER >= 20090114
+packetLen(0x03fa, 7)
+#elif PACKETVER >= 20090107
+packetLen(0x03fa, 57)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x03fb
+#if PACKETVER >= 20090406
+packetLen(0x03fb, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03fb, 19)
+#elif PACKETVER >= 20090325
+packetLen(0x03fb, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x03fb, 60)
+#elif PACKETVER >= 20090311
+packetLen(0x03fb, 6)
+#elif PACKETVER >= 20090225
+packetLen(0x03fb, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x03fb, 6)
+#elif PACKETVER >= 20090114
+packetLen(0x03fb, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x03fb, 68)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x03fc
+#if PACKETVER >= 20090406
+packetLen(0x03fc, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x03fc, 30)
+#elif PACKETVER >= 20090225
+packetLen(0x03fc, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x03fc, 16)
+#elif PACKETVER >= 20090211
+packetLen(0x03fc, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x03fc, 6)
+#elif PACKETVER >= 20090120
+packetLen(0x03fc, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x03fc, 16)
+#elif PACKETVER >= 20090107
+packetLen(0x03fc, 182)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x03fd
+#if PACKETVER >= 20090211
+packetLen(0x03fd, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x03fd, 16)
+#elif PACKETVER >= 20090107
+packetLen(0x03fd, -1)
+#endif
+
+// Packet: 0x03fe
+#if PACKETVER >= 20090204
+packetLen(0x03fe, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x03fe, 22)
+#elif PACKETVER >= 20090114
+packetLen(0x03fe, 4)
+#elif PACKETVER >= 20090107
+packetLen(0x03fe, -1)
+#endif
+
+// Packet: 0x03ff
+#if PACKETVER >= 20090401
+packetLen(0x03ff, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x03ff, 13)
+#elif PACKETVER >= 20090120
+packetLen(0x03ff, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x03ff, 6)
+#elif PACKETVER >= 20090107
+packetLen(0x03ff, 4)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0400
+#if PACKETVER >= 20090401
+packetLen(0x0400, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x0400, 10)
+#elif PACKETVER >= 20090318
+packetLen(0x0400, 7)
+#elif PACKETVER >= 20090225
+packetLen(0x0400, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x0400, 8)
+#elif PACKETVER >= 20090211
+packetLen(0x0400, 67)
+#elif PACKETVER >= 20090107
+packetLen(0x0400, -1)
+#endif
+
+// Packet: 0x0401
+#if PACKETVER >= 20090401
+packetLen(0x0401, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x0401, 60)
+#elif PACKETVER >= 20090318
+packetLen(0x0401, 3)
+#elif PACKETVER >= 20090311
+packetLen(0x0401, 4)
+#elif PACKETVER >= 20090225
+packetLen(0x0401, 11)
+#elif PACKETVER >= 20090218
+packetLen(0x0401, 29)
+#elif PACKETVER >= 20090204
+packetLen(0x0401, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x0401, 6)
+#elif PACKETVER >= 20090114
+packetLen(0x0401, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x0401, 2)
+#endif
+
+// Packet: 0x0402
+#if PACKETVER >= 20090225
+packetLen(0x0402, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x0402, 42)
+#elif PACKETVER >= 20090211
+packetLen(0x0402, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x0402, 10)
+#elif PACKETVER >= 20090129
+packetLen(0x0402, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0402, 27)
+#elif PACKETVER >= 20090114
+packetLen(0x0402, 9)
+#elif PACKETVER >= 20090107
+packetLen(0x0402, 14)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0403
+#if PACKETVER >= 20090401
+packetLen(0x0403, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x0403, 27)
+#elif PACKETVER >= 20090318
+packetLen(0x0403, 4)
+#elif PACKETVER >= 20090311
+packetLen(0x0403, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x0403, 6)
+#elif PACKETVER >= 20090218
+packetLen(0x0403, 3)
+#elif PACKETVER >= 20090211
+packetLen(0x0403, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x0403, 8)
+#elif PACKETVER >= 20090129
+packetLen(0x0403, 9)
+#elif PACKETVER >= 20090120
+packetLen(0x0403, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x0403, 58)
+#elif PACKETVER >= 20090107
+packetLen(0x0403, -1)
+#endif
+
+// Packet: 0x0404
+#if PACKETVER >= 20090406
+packetLen(0x0404, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0404, 7)
+#elif PACKETVER >= 20090325
+packetLen(0x0404, 282)
+#elif PACKETVER >= 20090318
+packetLen(0x0404, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0404, 3)
+#elif PACKETVER >= 20090225
+packetLen(0x0404, 2)
+#elif PACKETVER >= 20090218
+packetLen(0x0404, 6)
+#elif PACKETVER >= 20090211
+packetLen(0x0404, 11)
+#elif PACKETVER >= 20090204
+packetLen(0x0404, 6)
+#elif PACKETVER >= 20090120
+packetLen(0x0404, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x0404, 7)
+#elif PACKETVER >= 20090107
+packetLen(0x0404, 8)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0405
+#if PACKETVER >= 20090406
+packetLen(0x0405, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0405, 3)
+#elif PACKETVER >= 20090311
+packetLen(0x0405, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x0405, 4)
+#elif PACKETVER >= 20090218
+packetLen(0x0405, 22)
+#elif PACKETVER >= 20090211
+packetLen(0x0405, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x0405, 10)
+#elif PACKETVER >= 20090107
+packetLen(0x0405, 4)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0406
+#if PACKETVER >= 20090225
+packetLen(0x0406, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x0406, 10)
+#elif PACKETVER >= 20090211
+packetLen(0x0406, 6)
+#elif PACKETVER >= 20090129
+packetLen(0x0406, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0406, 6)
+#elif PACKETVER >= 20090107
+packetLen(0x0406, 16)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0407
+#if PACKETVER >= 20090318
+packetLen(0x0407, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x0407, 6)
+#elif PACKETVER >= 20090107
+packetLen(0x0407, -1)
+#endif
+
+// Packet: 0x0408
+#if PACKETVER >= 20090401
+packetLen(0x0408, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x0408, 5)
+#elif PACKETVER >= 20090318
+packetLen(0x0408, 3)
+#elif PACKETVER >= 20090311
+packetLen(0x0408, 5)
+#elif PACKETVER >= 20090225
+packetLen(0x0408, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x0408, 8)
+#elif PACKETVER >= 20090204
+packetLen(0x0408, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x0408, 22)
+#elif PACKETVER >= 20090120
+packetLen(0x0408, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x0408, 6)
+#elif PACKETVER >= 20090107
+packetLen(0x0408, 2)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0409
+#if PACKETVER >= 20090401
+packetLen(0x0409, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x0409, 10)
+#elif PACKETVER >= 20090129
+packetLen(0x0409, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0409, 30)
+#elif PACKETVER >= 20090114
+packetLen(0x0409, 67)
+#elif PACKETVER >= 20090107
+packetLen(0x0409, 7)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x040a
+#if PACKETVER >= 20090406
+packetLen(0x040a, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x040a, 6)
+#elif PACKETVER >= 20090325
+packetLen(0x040a, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x040a, 3)
+#elif PACKETVER >= 20090311
+packetLen(0x040a, 8)
+#elif PACKETVER >= 20090225
+packetLen(0x040a, 6)
+#elif PACKETVER >= 20090218
+packetLen(0x040a, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x040a, 58)
+#elif PACKETVER >= 20090204
+packetLen(0x040a, 2)
+#elif PACKETVER >= 20090129
+packetLen(0x040a, 5)
+#elif PACKETVER >= 20090120
+packetLen(0x040a, 2)
+#elif PACKETVER >= 20090114
+packetLen(0x040a, 10)
+#elif PACKETVER >= 20090107
+packetLen(0x040a, -1)
+#endif
+
+// Packet: 0x040b
+#if PACKETVER >= 20090406
+packetLen(0x040b, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x040b, 21)
+#elif PACKETVER >= 20090318
+packetLen(0x040b, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x040b, 8)
+#elif PACKETVER >= 20090225
+packetLen(0x040b, 102)
+#elif PACKETVER >= 20090218
+packetLen(0x040b, 2)
+#elif PACKETVER >= 20090204
+packetLen(0x040b, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x040b, 14)
+#elif PACKETVER >= 20090120
+packetLen(0x040b, 8)
+#elif PACKETVER >= 20090107
+packetLen(0x040b, -1)
+#endif
+
+// Packet: 0x040c
+#if PACKETVER >= 20090401
+packetLen(0x040c, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x040c, 6)
+#elif PACKETVER >= 20090318
+packetLen(0x040c, 21)
+#elif PACKETVER >= 20090311
+packetLen(0x040c, 182)
+#elif PACKETVER >= 20090218
+packetLen(0x040c, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x040c, 6)
+#elif PACKETVER >= 20090204
+packetLen(0x040c, 60)
+#elif PACKETVER >= 20090114
+packetLen(0x040c, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x040c, 67)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x040d
+#if PACKETVER >= 20090401
+packetLen(0x040d, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x040d, 22)
+#elif PACKETVER >= 20090225
+packetLen(0x040d, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x040d, 28)
+#elif PACKETVER >= 20090211
+packetLen(0x040d, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x040d, 10)
+#elif PACKETVER >= 20090129
+packetLen(0x040d, 2)
+#elif PACKETVER >= 20090120
+packetLen(0x040d, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x040d, 2)
+#elif PACKETVER >= 20090107
+packetLen(0x040d, 282)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x040e
+#if PACKETVER >= 20090406
+packetLen(0x040e, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x040e, 3)
+#elif PACKETVER >= 20090325
+packetLen(0x040e, 10)
+#elif PACKETVER >= 20090318
+packetLen(0x040e, 26)
+#elif PACKETVER >= 20090311
+packetLen(0x040e, 11)
+#elif PACKETVER >= 20090225
+packetLen(0x040e, 14)
+#elif PACKETVER >= 20090218
+packetLen(0x040e, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x040e, 4)
+#elif PACKETVER >= 20090204
+packetLen(0x040e, 58)
+#elif PACKETVER >= 20090129
+packetLen(0x040e, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x040e, 5)
+#elif PACKETVER >= 20090114
+packetLen(0x040e, 66)
+#elif PACKETVER >= 20090107
+packetLen(0x040e, -1)
+#endif
+
+// Packet: 0x040f
+#if PACKETVER >= 20090401
+packetLen(0x040f, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x040f, 26)
+#elif PACKETVER >= 20090218
+packetLen(0x040f, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x040f, 2)
+#elif PACKETVER >= 20090204
+packetLen(0x040f, 6)
+#elif PACKETVER >= 20090129
+packetLen(0x040f, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x040f, 29)
+#elif PACKETVER >= 20090114
+packetLen(0x040f, 6)
+#elif PACKETVER >= 20090107
+packetLen(0x040f, 6)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0410
+#if PACKETVER >= 20090406
+packetLen(0x0410, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0410, 3)
+#elif PACKETVER >= 20090325
+packetLen(0x0410, 21)
+#elif PACKETVER >= 20090211
+packetLen(0x0410, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x0410, 6)
+#elif PACKETVER >= 20090129
+packetLen(0x0410, 11)
+#elif PACKETVER >= 20090114
+packetLen(0x0410, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x0410, 26)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0411
+#if PACKETVER >= 20090318
+packetLen(0x0411, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0411, 14)
+#elif PACKETVER >= 20090211
+packetLen(0x0411, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x0411, 2)
+#elif PACKETVER >= 20090129
+packetLen(0x0411, 81)
+#elif PACKETVER >= 20090120
+packetLen(0x0411, 6)
+#elif PACKETVER >= 20090114
+packetLen(0x0411, 9)
+#elif PACKETVER >= 20090107
+packetLen(0x0411, 186)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0412
+#if PACKETVER >= 20090401
+packetLen(0x0412, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x0412, 81)
+#elif PACKETVER >= 20090318
+packetLen(0x0412, 22)
+#elif PACKETVER >= 20090218
+packetLen(0x0412, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0412, 6)
+#elif PACKETVER >= 20090129
+packetLen(0x0412, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0412, 4)
+#elif PACKETVER >= 20090107
+packetLen(0x0412, 2)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0413
+#if PACKETVER >= 20090325
+packetLen(0x0413, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x0413, 7)
+#elif PACKETVER >= 20090311
+packetLen(0x0413, 14)
+#elif PACKETVER >= 20090225
+packetLen(0x0413, 26)
+#elif PACKETVER >= 20090218
+packetLen(0x0413, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0413, 282)
+#elif PACKETVER >= 20090204
+packetLen(0x0413, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x0413, 5)
+#elif PACKETVER >= 20090120
+packetLen(0x0413, 8)
+#elif PACKETVER >= 20090114
+packetLen(0x0413, 2)
+#elif PACKETVER >= 20090107
+packetLen(0x0413, -1)
+#endif
+
+// Packet: 0x0414
+#if PACKETVER >= 20090225
+packetLen(0x0414, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x0414, 34)
+#elif PACKETVER >= 20090211
+packetLen(0x0414, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x0414, 26)
+#elif PACKETVER >= 20090129
+packetLen(0x0414, 6)
+#elif PACKETVER >= 20090107
+packetLen(0x0414, -1)
+#endif
+
+// Packet: 0x0415
+#if PACKETVER >= 20090406
+packetLen(0x0415, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0415, 4)
+#elif PACKETVER >= 20090325
+packetLen(0x0415, 29)
+#elif PACKETVER >= 20090318
+packetLen(0x0415, 17)
+#elif PACKETVER >= 20090311
+packetLen(0x0415, 6)
+#elif PACKETVER >= 20090225
+packetLen(0x0415, 114)
+#elif PACKETVER >= 20090218
+packetLen(0x0415, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0415, 8)
+#elif PACKETVER >= 20090129
+packetLen(0x0415, 2)
+#elif PACKETVER >= 20090120
+packetLen(0x0415, 30)
+#elif PACKETVER >= 20090114
+packetLen(0x0415, 10)
+#elif PACKETVER >= 20090107
+packetLen(0x0415, 8)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0416
+#if PACKETVER >= 20090401
+packetLen(0x0416, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x0416, 28)
+#elif PACKETVER >= 20090318
+packetLen(0x0416, 10)
+#elif PACKETVER >= 20090218
+packetLen(0x0416, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0416, 3)
+#elif PACKETVER >= 20090204
+packetLen(0x0416, 15)
+#elif PACKETVER >= 20090114
+packetLen(0x0416, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x0416, 8)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0417
+#if PACKETVER >= 20090325
+packetLen(0x0417, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x0417, 8)
+#elif PACKETVER >= 20090311
+packetLen(0x0417, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x0417, 26)
+#elif PACKETVER >= 20090218
+packetLen(0x0417, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0417, 10)
+#elif PACKETVER >= 20090120
+packetLen(0x0417, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x0417, 4)
+#elif PACKETVER >= 20090107
+packetLen(0x0417, 59)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0418
+#if PACKETVER >= 20090401
+packetLen(0x0418, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x0418, 60)
+#elif PACKETVER >= 20090318
+packetLen(0x0418, 182)
+#elif PACKETVER >= 20090311
+packetLen(0x0418, 23)
+#elif PACKETVER >= 20090225
+packetLen(0x0418, 33)
+#elif PACKETVER >= 20090218
+packetLen(0x0418, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0418, 6)
+#elif PACKETVER >= 20090204
+packetLen(0x0418, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x0418, 15)
+#elif PACKETVER >= 20090120
+packetLen(0x0418, 42)
+#elif PACKETVER >= 20090114
+packetLen(0x0418, 21)
+#elif PACKETVER >= 20090107
+packetLen(0x0418, -1)
+#endif
+
+// Packet: 0x0419
+#if PACKETVER >= 20090401
+packetLen(0x0419, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x0419, 20)
+#elif PACKETVER >= 20090311
+packetLen(0x0419, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x0419, 2)
+#elif PACKETVER >= 20090211
+packetLen(0x0419, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x0419, 14)
+#elif PACKETVER >= 20090129
+packetLen(0x0419, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0419, 10)
+#elif PACKETVER >= 20090114
+packetLen(0x0419, 3)
+#elif PACKETVER >= 20090107
+packetLen(0x0419, -1)
+#endif
+
+// Packet: 0x041a
+#if PACKETVER >= 20090325
+packetLen(0x041a, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x041a, 3)
+#elif PACKETVER >= 20090311
+packetLen(0x041a, 102)
+#elif PACKETVER >= 20090225
+packetLen(0x041a, 6)
+#elif PACKETVER >= 20090218
+packetLen(0x041a, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x041a, 6)
+#elif PACKETVER >= 20090107
+packetLen(0x041a, -1)
+#endif
+
+// Packet: 0x041b
+#if PACKETVER >= 20090318
+packetLen(0x041b, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x041b, 86)
+#elif PACKETVER >= 20090225
+packetLen(0x041b, 4)
+#elif PACKETVER >= 20090211
+packetLen(0x041b, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x041b, 2)
+#elif PACKETVER >= 20090129
+packetLen(0x041b, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x041b, 11)
+#elif PACKETVER >= 20090114
+packetLen(0x041b, 30)
+#elif PACKETVER >= 20090107
+packetLen(0x041b, 54)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x041c
+#if PACKETVER >= 20090406
+packetLen(0x041c, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x041c, 26)
+#elif PACKETVER >= 20090325
+packetLen(0x041c, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x041c, 30)
+#elif PACKETVER >= 20090311
+packetLen(0x041c, 2)
+#elif PACKETVER >= 20090225
+packetLen(0x041c, 20)
+#elif PACKETVER >= 20090218
+packetLen(0x041c, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x041c, 4)
+#elif PACKETVER >= 20090129
+packetLen(0x041c, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x041c, 28)
+#elif PACKETVER >= 20090114
+packetLen(0x041c, 17)
+#elif PACKETVER >= 20090107
+packetLen(0x041c, 34)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x041d
+#if PACKETVER >= 20090318
+packetLen(0x041d, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x041d, 282)
+#elif PACKETVER >= 20090225
+packetLen(0x041d, 7)
+#elif PACKETVER >= 20090218
+packetLen(0x041d, 3)
+#elif PACKETVER >= 20090204
+packetLen(0x041d, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x041d, 90)
+#elif PACKETVER >= 20090107
+packetLen(0x041d, 67)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x041e
+#if PACKETVER >= 20090406
+packetLen(0x041e, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x041e, 6)
+#elif PACKETVER >= 20090311
+packetLen(0x041e, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x041e, 10)
+#elif PACKETVER >= 20090218
+packetLen(0x041e, 30)
+#elif PACKETVER >= 20090211
+packetLen(0x041e, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x041e, 11)
+#elif PACKETVER >= 20090107
+packetLen(0x041e, -1)
+#endif
+
+// Packet: 0x041f
+#if PACKETVER >= 20090401
+packetLen(0x041f, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x041f, 10)
+#elif PACKETVER >= 20090318
+packetLen(0x041f, 34)
+#elif PACKETVER >= 20090311
+packetLen(0x041f, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x041f, 3)
+#elif PACKETVER >= 20090218
+packetLen(0x041f, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x041f, 26)
+#elif PACKETVER >= 20090204
+packetLen(0x041f, 8)
+#elif PACKETVER >= 20090129
+packetLen(0x041f, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x041f, 8)
+#elif PACKETVER >= 20090114
+packetLen(0x041f, 5)
+#elif PACKETVER >= 20090107
+packetLen(0x041f, -1)
+#endif
+
+// Packet: 0x0420
+#if PACKETVER >= 20090406
+packetLen(0x0420, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0420, 30)
+#elif PACKETVER >= 20090318
+packetLen(0x0420, 10)
+#elif PACKETVER >= 20090218
+packetLen(0x0420, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0420, 10)
+#elif PACKETVER >= 20090204
+packetLen(0x0420, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x0420, 30)
+#elif PACKETVER >= 20090120
+packetLen(0x0420, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x0420, 23)
+#elif PACKETVER >= 20090107
+packetLen(0x0420, 14)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0421
+#if PACKETVER >= 20090401
+packetLen(0x0421, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x0421, 4)
+#elif PACKETVER >= 20090318
+packetLen(0x0421, 2)
+#elif PACKETVER >= 20090218
+packetLen(0x0421, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0421, 7)
+#elif PACKETVER >= 20090204
+packetLen(0x0421, 6)
+#elif PACKETVER >= 20090107
+packetLen(0x0421, 4)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0422
+#if PACKETVER >= 20090406
+packetLen(0x0422, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0422, 5)
+#elif PACKETVER >= 20090318
+packetLen(0x0422, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0422, 22)
+#elif PACKETVER >= 20090225
+packetLen(0x0422, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x0422, 3)
+#elif PACKETVER >= 20090120
+packetLen(0x0422, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x0422, 6)
+#elif PACKETVER >= 20090107
+packetLen(0x0422, 28)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0423
+#if PACKETVER >= 20090406
+packetLen(0x0423, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0423, 86)
+#elif PACKETVER >= 20090325
+packetLen(0x0423, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x0423, 6)
+#elif PACKETVER >= 20090311
+packetLen(0x0423, 10)
+#elif PACKETVER >= 20090211
+packetLen(0x0423, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x0423, 10)
+#elif PACKETVER >= 20090120
+packetLen(0x0423, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x0423, 58)
+#elif PACKETVER >= 20090107
+packetLen(0x0423, 30)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0424
+#if PACKETVER >= 20090225
+packetLen(0x0424, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x0424, 6)
+#elif PACKETVER >= 20090211
+packetLen(0x0424, 9)
+#elif PACKETVER >= 20090204
+packetLen(0x0424, 8)
+#elif PACKETVER >= 20090129
+packetLen(0x0424, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0424, 6)
+#elif PACKETVER >= 20090114
+packetLen(0x0424, 26)
+#elif PACKETVER >= 20090107
+packetLen(0x0424, -1)
+#endif
+
+// Packet: 0x0425
+#if PACKETVER >= 20090318
+packetLen(0x0425, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0425, 4)
+#elif PACKETVER >= 20090218
+packetLen(0x0425, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0425, 60)
+#elif PACKETVER >= 20090107
+packetLen(0x0425, 57)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0426
+#if PACKETVER >= 20090225
+packetLen(0x0426, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x0426, 6)
+#elif PACKETVER >= 20090211
+packetLen(0x0426, 53)
+#elif PACKETVER >= 20090204
+packetLen(0x0426, 11)
+#elif PACKETVER >= 20090129
+packetLen(0x0426, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0426, 3)
+#elif PACKETVER >= 20090107
+packetLen(0x0426, -1)
+#endif
+
+// Packet: 0x0427
+#if PACKETVER >= 20090325
+packetLen(0x0427, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x0427, 22)
+#elif PACKETVER >= 20090311
+packetLen(0x0427, 16)
+#elif PACKETVER >= 20090218
+packetLen(0x0427, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0427, 13)
+#elif PACKETVER >= 20090129
+packetLen(0x0427, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0427, 2)
+#elif PACKETVER >= 20090114
+packetLen(0x0427, 10)
+#elif PACKETVER >= 20090107
+packetLen(0x0427, 28)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0428
+#if PACKETVER >= 20090401
+packetLen(0x0428, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x0428, 5)
+#elif PACKETVER >= 20090318
+packetLen(0x0428, 2)
+#elif PACKETVER >= 20090225
+packetLen(0x0428, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x0428, 2)
+#elif PACKETVER >= 20090211
+packetLen(0x0428, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x0428, 102)
+#elif PACKETVER >= 20090129
+packetLen(0x0428, 7)
+#elif PACKETVER >= 20090120
+packetLen(0x0428, 11)
+#elif PACKETVER >= 20090107
+packetLen(0x0428, 19)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0429
+#if PACKETVER >= 20090406
+packetLen(0x0429, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0429, 2)
+#elif PACKETVER >= 20090325
+packetLen(0x0429, 6)
+#elif PACKETVER >= 20090318
+packetLen(0x0429, 11)
+#elif PACKETVER >= 20090129
+packetLen(0x0429, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0429, 3)
+#elif PACKETVER >= 20090114
+packetLen(0x0429, 11)
+#elif PACKETVER >= 20090107
+packetLen(0x0429, -1)
+#endif
+
+// Packet: 0x042a
+#if PACKETVER >= 20090406
+packetLen(0x042a, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x042a, 5)
+#elif PACKETVER >= 20090318
+packetLen(0x042a, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x042a, 3)
+#elif PACKETVER >= 20090129
+packetLen(0x042a, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x042a, 4)
+#elif PACKETVER >= 20090107
+packetLen(0x042a, -1)
+#endif
+
+// Packet: 0x042b
+#if PACKETVER >= 20090406
+packetLen(0x042b, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x042b, 8)
+#elif PACKETVER >= 20090318
+packetLen(0x042b, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x042b, 10)
+#elif PACKETVER >= 20090218
+packetLen(0x042b, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x042b, 30)
+#elif PACKETVER >= 20090204
+packetLen(0x042b, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x042b, 10)
+#elif PACKETVER >= 20090114
+packetLen(0x042b, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x042b, 58)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x042c
+#if PACKETVER >= 20090311
+packetLen(0x042c, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x042c, 8)
+#elif PACKETVER >= 20090218
+packetLen(0x042c, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x042c, 2)
+#elif PACKETVER >= 20090204
+packetLen(0x042c, 4)
+#elif PACKETVER >= 20090120
+packetLen(0x042c, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x042c, 29)
+#elif PACKETVER >= 20090107
+packetLen(0x042c, 31)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x042d
+#if PACKETVER >= 20090401
+packetLen(0x042d, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x042d, 5)
+#elif PACKETVER >= 20090204
+packetLen(0x042d, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x042d, 4)
+#elif PACKETVER >= 20090120
+packetLen(0x042d, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x042d, 24)
+#elif PACKETVER >= 20090107
+packetLen(0x042d, -1)
+#endif
+
+// Packet: 0x042e
+#if PACKETVER >= 20090401
+packetLen(0x042e, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x042e, 4)
+#elif PACKETVER >= 20090318
+packetLen(0x042e, 6)
+#elif PACKETVER >= 20090225
+packetLen(0x042e, -1)
+#elif PACKETVER >= 20090218
+packetLen(0x042e, 10)
+#elif PACKETVER >= 20090211
+packetLen(0x042e, 6)
+#elif PACKETVER >= 20090204
+packetLen(0x042e, 67)
+#elif PACKETVER >= 20090120
+packetLen(0x042e, 6)
+#elif PACKETVER >= 20090114
+packetLen(0x042e, 4)
+#elif PACKETVER >= 20090107
+packetLen(0x042e, 6)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x042f
+#if PACKETVER >= 20090325
+packetLen(0x042f, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x042f, 28)
+#elif PACKETVER >= 20090311
+packetLen(0x042f, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x042f, 3)
+#elif PACKETVER >= 20090211
+packetLen(0x042f, -1)
+#elif PACKETVER >= 20090204
+packetLen(0x042f, 10)
+#elif PACKETVER >= 20090129
+packetLen(0x042f, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x042f, 3)
+#elif PACKETVER >= 20090107
+packetLen(0x042f, 11)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0430
+#if PACKETVER >= 20090325
+packetLen(0x0430, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x0430, 2)
+#elif PACKETVER >= 20090311
+packetLen(0x0430, 7)
+#elif PACKETVER >= 20090225
+packetLen(0x0430, 28)
+#elif PACKETVER >= 20090218
+packetLen(0x0430, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0430, 29)
+#elif PACKETVER >= 20090204
+packetLen(0x0430, 16)
+#elif PACKETVER >= 20090129
+packetLen(0x0430, 6)
+#elif PACKETVER >= 20090107
+packetLen(0x0430, -1)
+#endif
+
+// Packet: 0x0431
+#if PACKETVER >= 20090406
+packetLen(0x0431, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0431, 4)
+#elif PACKETVER >= 20090325
+packetLen(0x0431, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x0431, 10)
+#elif PACKETVER >= 20090311
+packetLen(0x0431, -1)
+#elif PACKETVER >= 20090225
+packetLen(0x0431, 6)
+#elif PACKETVER >= 20090204
+packetLen(0x0431, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x0431, 43)
+#elif PACKETVER >= 20090120
+packetLen(0x0431, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x0431, 7)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0432
+#if PACKETVER >= 20090218
+packetLen(0x0432, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0432, 3)
+#elif PACKETVER >= 20090114
+packetLen(0x0432, -1)
+#elif PACKETVER >= 20090107
+packetLen(0x0432, 10)
+// ignored packet from 2009-01-07aRagexe
+#endif
+
+// Packet: 0x0433
+#if PACKETVER >= 20090406
+packetLen(0x0433, -1)
+#elif PACKETVER >= 20090401
+packetLen(0x0433, 8)
+#elif PACKETVER >= 20090318
+packetLen(0x0433, -1)
+#elif PACKETVER >= 20090311
+packetLen(0x0433, 54)
+#elif PACKETVER >= 20090225
+packetLen(0x0433, 6)
+#elif PACKETVER >= 20090218
+packetLen(0x0433, -1)
+#elif PACKETVER >= 20090211
+packetLen(0x0433, 26)
+#elif PACKETVER >= 20090129
+packetLen(0x0433, -1)
+#elif PACKETVER >= 20090120
+packetLen(0x0433, 14)
+#elif PACKETVER >= 20090114
+packetLen(0x0433, 31)
+#elif PACKETVER >= 20090107
+packetLen(0x0433, 7)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0434
+#if PACKETVER >= 20090401
+packetLen(0x0434, -1)
+#elif PACKETVER >= 20090325
+packetLen(0x0434, 6)
+#elif PACKETVER >= 20090318
+packetLen(0x0434, 59)
+#elif PACKETVER >= 20090311
+packetLen(0x0434, 3)
+#elif PACKETVER >= 20090204
+packetLen(0x0434, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x0434, 67)
+#elif PACKETVER >= 20090120
+packetLen(0x0434, 39)
+#elif PACKETVER >= 20090107
+packetLen(0x0434, 6)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0435
+#if PACKETVER >= 20090325
+packetLen(0x0435, -1)
+#elif PACKETVER >= 20090318
+packetLen(0x0435, 36)
+#elif PACKETVER >= 20090311
+packetLen(0x0435, 90)
+#elif PACKETVER >= 20090204
+packetLen(0x0435, -1)
+#elif PACKETVER >= 20090129
+packetLen(0x0435, 15)
+#elif PACKETVER >= 20090120
+packetLen(0x0435, -1)
+#elif PACKETVER >= 20090114
+packetLen(0x0435, 11)
+#elif PACKETVER >= 20090107
+packetLen(0x0435, 3)
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0436
+#if PACKETVER >= 20090406
+packetLen(0x0436, 19) // CZ_ENTER2
+#elif PACKETVER >= 20090325
+packetLen(0x0436, -1) // CZ_ENTER2
+#elif PACKETVER >= 20090318
+packetLen(0x0436, 8) // CZ_ENTER2
+#elif PACKETVER >= 20090311
+packetLen(0x0436, 10) // CZ_ENTER2
+#elif PACKETVER >= 20090225
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20090120
+packetLen(0x0436, -1) // CZ_ENTER2
+#elif PACKETVER >= 20090114
+packetLen(0x0436, 14) // CZ_ENTER2
+#elif PACKETVER >= 20090107
+packetLen(0x0436, -1) // CZ_ENTER2
+#endif
+
+// Packet: 0x0437
+#if PACKETVER >= 20090406
+packetLen(0x0437, 7) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20090401
+packetLen(0x0437, -1) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20090325
+packetLen(0x0437, 4) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20090318
+packetLen(0x0437, -1) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20090311
+packetLen(0x0437, 30) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20090225
+packetLen(0x0437, 16) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20090218
+packetLen(0x0437, -1) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20090211
+packetLen(0x0437, 54) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20090204
+packetLen(0x0437, 6) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20090129
+packetLen(0x0437, -1) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20090120
+packetLen(0x0437, 57) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20090107
+packetLen(0x0437, -1) // CZ_REQUEST_ACT2
+#endif
+
+// Packet: 0x0438
+#if PACKETVER >= 20090406
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20090318
+packetLen(0x0438, -1) // CZ_USE_SKILL2
+#elif PACKETVER >= 20090311
+packetLen(0x0438, 5) // CZ_USE_SKILL2
+#elif PACKETVER >= 20090225
+packetLen(0x0438, 3) // CZ_USE_SKILL2
+#elif PACKETVER >= 20090204
+packetLen(0x0438, -1) // CZ_USE_SKILL2
+#elif PACKETVER >= 20090129
+packetLen(0x0438, 39) // CZ_USE_SKILL2
+#elif PACKETVER >= 20090120
+packetLen(0x0438, -1) // CZ_USE_SKILL2
+#elif PACKETVER >= 20090114
+packetLen(0x0438, 3) // CZ_USE_SKILL2
+#elif PACKETVER >= 20090107
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x0439
+#if PACKETVER >= 20090406
+packetLen(0x0439, 8) // CZ_USE_ITEM2
+#elif PACKETVER >= 20090401
+packetLen(0x0439, 5) // CZ_USE_ITEM2
+#elif PACKETVER >= 20090218
+packetLen(0x0439, -1) // CZ_USE_ITEM2
+#elif PACKETVER >= 20090211
+packetLen(0x0439, 6) // CZ_USE_ITEM2
+#elif PACKETVER >= 20090129
+packetLen(0x0439, -1) // CZ_USE_ITEM2
+#elif PACKETVER >= 20090120
+packetLen(0x0439, 10) // CZ_USE_ITEM2
+#elif PACKETVER >= 20090114
+packetLen(0x0439, 28) // CZ_USE_ITEM2
+#elif PACKETVER >= 20090107
+packetLen(0x0439, 3) // CZ_USE_ITEM2
+// ignored packet from 2009-01-07bRagexe
+#endif
+
+// Packet: 0x043d
+packetLen(0x043d, 8) // ZC_SKILL_POSTDELAY
+
+// Packet: 0x043e
+packetLen(0x043e, -1) // ZC_SKILL_POSTDELAY_LIST
+
+// Packet: 0x043f
+#if PACKETVER >= 20090114
+packetLen(0x043f, 25) // ZC_MSG_STATE_CHANGE2
+#elif PACKETVER >= 20090107
+packetLen(0x043f, 8) // ZC_MSG_STATE_CHANGE2
+#endif
+
+// Packet: 0x0440
+packetLen(0x0440, 10) // ZC_MILLENNIUMSHIELD
+
+// Packet: 0x0441
+packetLen(0x0441, 4) // ZC_SKILLINFO_DELETE
+
+// Packet: 0x0442
+packetLen(0x0442, 8) // ZC_SKILL_SELECT_REQUEST
+
+// Packet: 0x0443
+packetLen(0x0443, 8) // CZ_SKILL_SELECT_RESPONSE
+
+// Packet: 0x0444
+packetLen(0x0444, -1) // ZC_SIMPLE_CASH_POINT_ITEMLIST
+
+// Packet: 0x0445
+packetLen(0x0445, 10) // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0446
+#if PACKETVER >= 20090218
+packetLen(0x0446, 14) // ZC_QUEST_NOTIFY_EFFECT
+#endif
+
+// Packet: 0x0447
+#if PACKETVER >= 20090520
+packetLen(0x0447, 2) // CZ_BLOCKING_PLAY_CANCEL
+#endif
+
+// Packet: 0x0448
+#if PACKETVER >= 20090225
+packetLen(0x0448, -1) // HC_CHARACTER_LIST
+#endif
+
+// Packet: 0x0449
+#if PACKETVER >= 20090401
+packetLen(0x0449, 4) // ZC_HACKSH_ERROR_MSG
+#endif
+
+// Packet: 0x044a
+#if PACKETVER >= 20090406
+packetLen(0x044a, 6) // CZ_CLIENT_VERSION
+#endif
+
+// Packet: 0x044b
+#if PACKETVER >= 20090514
+packetLen(0x044b, 2) // CZ_CLOSE_SIMPLECASH_SHOP
+#endif
+
+// Packet: 0x07d0
+#if PACKETVER >= 20090520
+packetLen(0x07d0, 6) // ZC_ES_RESULT
+#endif
+
+// Packet: 0x07d1
+#if PACKETVER >= 20090520
+packetLen(0x07d1, 2) // CZ_ES_GET_LIST
+#endif
+
+// Packet: 0x07d2
+#if PACKETVER >= 20090520
+packetLen(0x07d2, -1) // ZC_ES_LIST
+#endif
+
+// Packet: 0x07d3
+#if PACKETVER >= 20090520
+packetLen(0x07d3, 4) // CZ_ES_CHOOSE
+#endif
+
+// Packet: 0x07d4
+#if PACKETVER >= 20090520
+packetLen(0x07d4, 4) // CZ_ES_CANCEL
+#endif
+
+// Packet: 0x07d5
+#if PACKETVER >= 20090520
+packetLen(0x07d5, 4) // ZC_ES_READY
+#endif
+
+// Packet: 0x07d6
+#if PACKETVER >= 20090520
+packetLen(0x07d6, 4) // ZC_ES_GOTO
+#endif
+
+// Packet: 0x07d7
+#if PACKETVER >= 20090603
+packetLen(0x07d7, 8) // CZ_GROUPINFO_CHANGE_V2
+#endif
+
+// Packet: 0x07d8
+#if PACKETVER >= 20090603
+packetLen(0x07d8, 8) // ZC_REQ_GROUPINFO_CHANGE_V2
+#endif
+
+// Packet: 0x07d9
+#if PACKETVER >= 20090617
+packetLen(0x07d9, 268) // ZC_SHORTCUT_KEY_LIST_V2
+#elif PACKETVER >= 20090603
+packetLen(0x07d9, 254) // ZC_SHORTCUT_KEY_LIST_V2
+#endif
+
+// Packet: 0x07da
+#if PACKETVER >= 20090603
+packetLen(0x07da, 6) // CZ_CHANGE_GROUP_MASTER
+#endif
+
+// Packet: 0x07db
+#if PACKETVER >= 20090610
+packetLen(0x07db, 8) // ZC_HO_PAR_CHANGE
+#endif
+
+// Packet: 0x07dc
+#if PACKETVER >= 20090617
+packetLen(0x07dc, 6) // CZ_SEEK_PARTY
+#endif
+
+// Packet: 0x07dd
+#if PACKETVER >= 20090617
+packetLen(0x07dd, 54) // ZC_SEEK_PARTY
+#endif
+
+// Packet: 0x07de
+#if PACKETVER >= 20090617
+packetLen(0x07de, 30) // CZ_SEEK_PARTY_MEMBER
+#endif
+
+// Packet: 0x07df
+#if PACKETVER >= 20090617
+packetLen(0x07df, 54) // ZC_SEEK_PARTY_MEMBER
+#endif
+
+// Packet: 0x07e0
+#if PACKETVER >= 20090708
+packetLen(0x07e0, 58) // ZC_ES_NOTI_MYINFO
+#endif
+
+// Packet: 0x07e1
+#if PACKETVER >= 20090715
+packetLen(0x07e1, 15) // ZC_SKILLINFO_UPDATE2
+#endif
+
+// Packet: 0x07e2
+#if PACKETVER >= 20090805
+packetLen(0x07e2, 8) // ZC_MSG_VALUE
+#endif
+
+// Packet: 0x07e3
+#if PACKETVER >= 20090818
+packetLen(0x07e3, 6) // ZC_ITEMLISTWIN_OPEN
+#endif
+
+// Packet: 0x07e4
+#if PACKETVER >= 20090818
+packetLen(0x07e4, -1) // CZ_ITEMLISTWIN_RES
+#endif
+
+// Packet: 0x07e5
+#if PACKETVER >= 20090922
+packetLen(0x07e5, 8) // CH_ENTER_CHECKBOT
+#elif PACKETVER >= 20090825
+packetLen(0x07e5, -1) // CH_ENTER_CHECKBOT
+#endif
+
+// Packet: 0x07e6
+#if PACKETVER >= 20090818
+packetLen(0x07e6, 8) // ZC_MSG_SKILL
+#endif
+
+// Packet: 0x07e7
+#if PACKETVER >= 20090922
+packetLen(0x07e7, 32) // CH_CHECKBOT
+#elif PACKETVER >= 20090825
+packetLen(0x07e7, 5) // CH_CHECKBOT
+#endif
+
+// Packet: 0x07e8
+#if PACKETVER >= 20090922
+packetLen(0x07e8, -1) // HC_CHECKBOT
+#endif
+
+// Packet: 0x07e9
+#if PACKETVER >= 20090922
+packetLen(0x07e9, 5) // HC_CHECKBOT_RESULT
+#endif
+
+// Packet: 0x07ea
+#if PACKETVER >= 20090929
+packetLen(0x07ea, 2) // CZ_BATTLE_FIELD_LIST
+#endif
+
+// Packet: 0x07eb
+#if PACKETVER >= 20090929
+packetLen(0x07eb, -1) // ZC_BATTLE_FIELD_LIST
+#endif
+
+// Packet: 0x07ec
+#if PACKETVER >= 20091006
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20090929
+packetLen(0x07ec, 6) // CZ_JOIN_BATTLE_FIELD
+#endif
+
+// Packet: 0x07ed
+#if PACKETVER >= 20091006
+packetLen(0x07ed, 10) // ZC_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20090929
+packetLen(0x07ed, 8) // ZC_JOIN_BATTLE_FIELD
+#endif
+
+// Packet: 0x07ee
+#if PACKETVER >= 20090929
+packetLen(0x07ee, 6) // CZ_CANCEL_BATTLE_FIELD
+#endif
+
+// Packet: 0x07ef
+#if PACKETVER >= 20090929
+packetLen(0x07ef, 8) // ZC_CANCEL_BATTLE_FIELD
+#endif
+
+// Packet: 0x07f0
+#if PACKETVER >= 20090929
+packetLen(0x07f0, 8) // CZ_REQ_BATTLE_STATE_MONITOR
+#endif
+
+// Packet: 0x07f1
+#if PACKETVER >= 20090929
+packetLen(0x07f1, 15) // ZC_ACK_BATTLE_STATE_MONITOR
+#endif
+
+// Packet: 0x07f2
+#if PACKETVER >= 20091006
+packetLen(0x07f2, 6) // ZC_BATTLE_NOTI_START_STEP
+#elif PACKETVER >= 20090929
+packetLen(0x07f2, 4) // ZC_BATTLE_NOTI_START_STEP
+#endif
+
+// Packet: 0x07f3
+#if PACKETVER >= 20091006
+packetLen(0x07f3, 4) // ZC_BATTLE_JOIN_NOTI_DEFER
+#elif PACKETVER >= 20090929
+packetLen(0x07f3, 3) // ZC_BATTLE_JOIN_NOTI_DEFER
+#endif
+
+// Packet: 0x07f4
+#if PACKETVER >= 20091006
+packetLen(0x07f4, 3) // ZC_BATTLE_JOIN_DISABLE_STATE
+#endif
+
+// Packet: 0x07f5
+#if PACKETVER >= 20091027
+packetLen(0x07f5, 6) // CZ_GM_FULLSTRIP
+#endif
+
+// Packet: 0x07f6
+#if PACKETVER >= 20091027
+packetLen(0x07f6, 14) // ZC_NOTIFY_EXP
+#endif
+
+// Packet: 0x07f7
+#if PACKETVER >= 20091103
+packetLen(0x07f7, -1) // ZC_NOTIFY_MOVEENTRY7
+#endif
+
+// Packet: 0x07f8
+#if PACKETVER >= 20091103
+packetLen(0x07f8, -1) // ZC_NOTIFY_NEWENTRY5
+#endif
+
+// Packet: 0x07f9
+#if PACKETVER >= 20091103
+packetLen(0x07f9, -1) // ZC_NOTIFY_STANDENTRY5
+#endif
+
+// Packet: 0x07fa
+#if PACKETVER >= 20091117
+packetLen(0x07fa, 8) // ZC_DELETE_ITEM_FROM_BODY
+#endif
+
+// Packet: 0x07fb
+#if PACKETVER >= 20091124
+packetLen(0x07fb, 25) // ZC_USESKILL_ACK2
+#endif
+
+// Packet: 0x07fc
+#if PACKETVER >= 20091201
+packetLen(0x07fc, 10) // ZC_CHANGE_GROUP_MASTER
+#endif
+
+// Packet: 0x07fd
+#if PACKETVER >= 20091201
+packetLen(0x07fd, -1) // ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN
+#endif
+
+// Packet: 0x07fe
+#if PACKETVER >= 20091201
+packetLen(0x07fe, 26) // ZC_PLAY_NPC_BGM
+#endif
+
+// Packet: 0x07ff
+#if PACKETVER >= 20091201
+packetLen(0x07ff, -1) // ZC_DEFINE_CHECK
+#endif
+
+// Packet: 0x0800
+#if PACKETVER >= 20091215
+packetLen(0x0800, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC2
+#endif
+
+// Packet: 0x0801
+#if PACKETVER >= 20091215
+packetLen(0x0801, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC2
+#endif
+
+// Packet: 0x0802
+#if PACKETVER >= 20091222
+packetLen(0x0802, 18) // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// Packet: 0x0803
+#if PACKETVER >= 20091222
+packetLen(0x0803, 4) // ZC_PARTY_BOOKING_ACK_REGISTER
+#endif
+
+// Packet: 0x0804
+#if PACKETVER >= 20091228
+packetLen(0x0804, 14) // CZ_PARTY_BOOKING_REQ_SEARCH
+#elif PACKETVER >= 20091222
+packetLen(0x0804, 8) // CZ_PARTY_BOOKING_REQ_SEARCH
+#endif
+
+// Packet: 0x0805
+#if PACKETVER >= 20091222
+packetLen(0x0805, -1) // ZC_PARTY_BOOKING_ACK_SEARCH
+#endif
+
+// Packet: 0x0806
+#if PACKETVER >= 20091228
+packetLen(0x0806, 2) // CZ_PARTY_BOOKING_REQ_DELETE
+#elif PACKETVER >= 20091222
+packetLen(0x0806, 4) // CZ_PARTY_BOOKING_REQ_DELETE
+#endif
+
+// Packet: 0x0807
+#if PACKETVER >= 20091228
+packetLen(0x0807, 4) // ZC_PARTY_BOOKING_ACK_DELETE
+#elif PACKETVER >= 20091222
+packetLen(0x0807, 2) // ZC_PARTY_BOOKING_ACK_DELETE
+#endif
+
+// Packet: 0x0808
+#if PACKETVER >= 20091228
+packetLen(0x0808, 14) // CZ_PARTY_BOOKING_REQ_UPDATE
+#elif PACKETVER >= 20091222
+packetLen(0x0808, 4) // CZ_PARTY_BOOKING_REQ_UPDATE
+#endif
+
+// Packet: 0x0809
+#if PACKETVER >= 20091228
+packetLen(0x0809, 50) // ZC_PARTY_BOOKING_NOTIFY_INSERT
+#elif PACKETVER >= 20091222
+packetLen(0x0809, 14) // ZC_PARTY_BOOKING_NOTIFY_INSERT
+#endif
+
+// Packet: 0x080a
+#if PACKETVER >= 20091228
+packetLen(0x080a, 18) // ZC_PARTY_BOOKING_NOTIFY_UPDATE
+#elif PACKETVER >= 20091222
+packetLen(0x080a, 50) // ZC_PARTY_BOOKING_NOTIFY_UPDATE
+#endif
+
+// Packet: 0x080b
+#if PACKETVER >= 20091228
+packetLen(0x080b, 6) // ZC_PARTY_BOOKING_NOTIFY_DELETE
+#elif PACKETVER >= 20091222
+packetLen(0x080b, 18) // ZC_PARTY_BOOKING_NOTIFY_DELETE
+#endif
+
+// Packet: 0x080c
+#if PACKETVER >= 20091228
+// removed
+#elif PACKETVER >= 20091222
+packetLen(0x080c, 6) // CZ_SIMPLE_CASH_BTNSHOW
+#endif
+
+
+#endif /* COMMON_PACKETS2009_LEN_MAIN_H */
diff --git a/src/common/packets/packets2009_len_re.h b/src/common/packets/packets2009_len_re.h
new file mode 100644
index 000000000..4cd76c5ca
--- /dev/null
+++ b/src/common/packets/packets2009_len_re.h
@@ -0,0 +1,3418 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2009_LEN_RE_H
+#define COMMON_PACKETS2009_LEN_RE_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 114) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+#if PACKETVER >= 20090617
+packetLen(0x0072, 25) // CZ_ENTER
+// ignored packet from 2009-06-17cRagexeRE
+#elif PACKETVER >= 20090107
+packetLen(0x0072, 22) // CZ_ENTER
+#endif
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 44) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+#if PACKETVER >= 20090617
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+// ignored packet from 2009-06-17bRagexeRE
+#elif PACKETVER >= 20090107
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+#endif
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+#if PACKETVER >= 20090617
+packetLen(0x0085, 11) // CZ_REQUEST_MOVE
+// ignored packet from 2009-06-17cRagexeRE
+#elif PACKETVER >= 20090107
+packetLen(0x0085, 10) // CZ_REQUEST_MOVE
+#endif
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+#if PACKETVER >= 20090617
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+// ignored packet from 2009-06-17bRagexeRE
+#elif PACKETVER >= 20090107
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+#endif
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+#if PACKETVER >= 20090617
+packetLen(0x008c, 14)
+// ignored packet from 2009-06-17bRagexeRE
+#elif PACKETVER >= 20090107
+packetLen(0x008c, 14)
+#endif
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+#if PACKETVER >= 20090617
+packetLen(0x0094, 19) // CZ_REQNAME
+// ignored packet from 2009-06-17bRagexeRE
+#elif PACKETVER >= 20090107
+packetLen(0x0094, 19) // CZ_REQNAME
+#endif
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+#if PACKETVER >= 20090617
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+// ignored packet from 2009-06-17bRagexeRE
+#elif PACKETVER >= 20090107
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+#endif
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+#if PACKETVER >= 20090617
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+// ignored packet from 2009-06-17bRagexeRE
+#elif PACKETVER >= 20090107
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+#endif
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+#if PACKETVER >= 20090617
+packetLen(0x00a2, 15) // CZ_ITEM_THROW
+// ignored packet from 2009-06-17cRagexeRE
+#elif PACKETVER >= 20090107
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+#endif
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+#if PACKETVER >= 20090617
+packetLen(0x00a7, 9)
+// ignored packet from 2009-06-17bRagexeRE
+#elif PACKETVER >= 20090107
+packetLen(0x00a7, 9)
+#endif
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 7) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+#if PACKETVER >= 20090617
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+// ignored packet from 2009-06-17bRagexeRE
+#elif PACKETVER >= 20090107
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#endif
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+#if PACKETVER >= 20090617
+packetLen(0x00f7, 22) // CZ_REQUEST_TIME
+// ignored packet from 2009-06-17cRagexeRE
+#elif PACKETVER >= 20090107
+packetLen(0x00f7, 17) // CZ_REQUEST_TIME
+#endif
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+#if PACKETVER >= 20090617
+packetLen(0x0113, 25) // CZ_USE_SKILL
+// ignored packet from 2009-06-17bRagexeRE
+#elif PACKETVER >= 20090107
+packetLen(0x0113, 25) // CZ_USE_SKILL
+#endif
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+#if PACKETVER >= 20090617
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+// ignored packet from 2009-06-17bRagexeRE
+#elif PACKETVER >= 20090107
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+#endif
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0158
+packetLen(0x0158, -1) // ZC_ACK_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+#if PACKETVER >= 20090617
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+// ignored packet from 2009-06-17bRagexeRE
+#elif PACKETVER >= 20090107
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#endif
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 37) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x020f
+packetLen(0x020f, 10) // CZ_REQ_PVPPOINT
+
+// Packet: 0x0210
+packetLen(0x0210, 22) // ZC_ACK_PVPPOINT
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+
+// Packet: 0x022b
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+
+// Packet: 0x022c
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+
+// Packet: 0x022d
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+
+// Packet: 0x022e
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+
+// Packet: 0x022f
+packetLen(0x022f, 5) // ZC_FEED_MER
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+
+// Packet: 0x0275
+#if PACKETVER >= 20090701
+packetLen(0x0275, 37) // CH_ENTER2
+#endif
+
+// Packet: 0x0276
+#if PACKETVER >= 20090701
+packetLen(0x0276, -1) // AC_ACCEPT_LOGIN2
+#endif
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+packetLen(0x0281, 4) // CZ_GANGSI_RANK
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+
+// Packet: 0x0288
+packetLen(0x0288, 10) // CZ_PC_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0289
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0296
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0297
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0298
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+
+// Packet: 0x0299
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+
+// Packet: 0x029a
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+
+// Packet: 0x029b
+packetLen(0x029b, 80) // ZC_MER_INIT
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a5
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+
+// Packet: 0x02a6
+#if PACKETVER >= 20090722
+// removed
+#elif PACKETVER >= 20090408
+packetLen(0x02a6, -1) // ZC_HACKSH_CPX_MSG
+#elif PACKETVER >= 20090325
+packetLen(0x02a6, 404) // ZC_HACKSH_CPX_MSG
+#endif
+
+// Packet: 0x02a7
+#if PACKETVER >= 20090722
+// removed
+#elif PACKETVER >= 20090408
+packetLen(0x02a7, -1) // CZ_HACKSH_CPX_MSG
+#elif PACKETVER >= 20090325
+packetLen(0x02a7, 404) // CZ_HACKSH_CPX_MSG
+#endif
+
+// Packet: 0x02aa
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+
+// Packet: 0x02ab
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+
+// Packet: 0x02ac
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+
+// Packet: 0x02ad
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+
+// Packet: 0x02b0
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+
+// Packet: 0x02b1
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+
+// Packet: 0x02b2
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+
+// Packet: 0x02b3
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+
+// Packet: 0x02b4
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+
+// Packet: 0x02b5
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+
+// Packet: 0x02b6
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+
+// Packet: 0x02b7
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+
+// Packet: 0x02b8
+packetLen(0x02b8, 22) // ZC_ITEM_PICKUP_PARTY
+
+// Packet: 0x02b9
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+
+// Packet: 0x02ba
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+
+// Packet: 0x02bb
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+
+// Packet: 0x02bc
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+
+// Packet: 0x02c1
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+
+// Packet: 0x02c2
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+
+// Packet: 0x02c4
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+
+// Packet: 0x02c5
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c6
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+
+// Packet: 0x02c7
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c8
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+
+// Packet: 0x02c9
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+
+// Packet: 0x02ca
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+
+// Packet: 0x02cb
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+
+// Packet: 0x02cc
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+
+// Packet: 0x02cd
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+
+// Packet: 0x02ce
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+
+// Packet: 0x02cf
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+
+// Packet: 0x02d0
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d1
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d2
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d3
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+
+// Packet: 0x02d4
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+
+// Packet: 0x02d5
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+
+// Packet: 0x02d6
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d7
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d8
+packetLen(0x02d8, 10) // CZ_CONFIG
+
+// Packet: 0x02d9
+packetLen(0x02d9, 10) // ZC_CONFIG
+
+// Packet: 0x02da
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+
+// Packet: 0x02db
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+
+// Packet: 0x02dc
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+
+// Packet: 0x02dd
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+
+// Packet: 0x02de
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+
+// Packet: 0x02df
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+
+// Packet: 0x02e0
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+
+// Packet: 0x02e1
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+
+// Packet: 0x02e2
+#if PACKETVER >= 20090617
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+// ignored packet from 2009-06-17bRagexeRE
+#elif PACKETVER >= 20090107
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+#endif
+
+// Packet: 0x02e3
+#if PACKETVER >= 20090617
+packetLen(0x02e3, 25) // CZ_USE_SKILL_NEW_JAPEN
+// ignored packet from 2009-06-17cRagexeRE
+#elif PACKETVER >= 20090107
+packetLen(0x02e3, 22) // CZ_USE_SKILL_NEW_JAPEN
+#endif
+
+// Packet: 0x02e4
+#if PACKETVER >= 20090617
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+// ignored packet from 2009-06-17bRagexeRE
+#elif PACKETVER >= 20090107
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+#endif
+
+// Packet: 0x02e5
+#if PACKETVER >= 20090617
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+// ignored packet from 2009-06-17bRagexeRE
+#elif PACKETVER >= 20090107
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+#endif
+
+// Packet: 0x02e6
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+
+// Packet: 0x02e7
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+
+// Packet: 0x02e8
+packetLen(0x02e8, -1) // ZC_NORMAL_ITEMLIST3
+
+// Packet: 0x02e9
+packetLen(0x02e9, -1) // ZC_CART_NORMAL_ITEMLIST3
+
+// Packet: 0x02ea
+packetLen(0x02ea, -1) // ZC_STORE_NORMAL_ITEMLIST3
+
+// Packet: 0x02eb
+packetLen(0x02eb, 13) // ZC_ACCEPT_ENTER2
+
+// Packet: 0x02ec
+packetLen(0x02ec, 67) // ZC_NOTIFY_MOVEENTRY4
+
+// Packet: 0x02ed
+packetLen(0x02ed, 59) // ZC_NOTIFY_NEWENTRY4
+
+// Packet: 0x02ee
+packetLen(0x02ee, 60) // ZC_NOTIFY_STANDENTRY4
+
+// Packet: 0x02ef
+packetLen(0x02ef, 8) // ZC_NOTIFY_FONT
+
+// Packet: 0x02f0
+packetLen(0x02f0, 10) // ZC_PROGRESS
+
+// Packet: 0x02f1
+packetLen(0x02f1, 2) // CZ_PROGRESS
+
+// Packet: 0x02f2
+packetLen(0x02f2, 2) // ZC_PROGRESS_CANCEL
+
+// Packet: 0x02f3
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+
+// Packet: 0x02f4
+packetLen(0x02f4, -1) // ZC_IRMAIL_SEND_RES
+
+// Packet: 0x02f5
+packetLen(0x02f5, -1) // ZC_IRMAIL_NOTIFY
+
+// Packet: 0x02f6
+packetLen(0x02f6, -1) // CZ_IRMAIL_LIST
+
+// Packet: 0x02f7
+packetLen(0x02f7, -1)
+
+// Packet: 0x02f8
+packetLen(0x02f8, -1)
+
+// Packet: 0x02f9
+packetLen(0x02f9, -1)
+
+// Packet: 0x02fa
+packetLen(0x02fa, -1)
+
+// Packet: 0x02fb
+packetLen(0x02fb, -1)
+
+// Packet: 0x02fc
+packetLen(0x02fc, -1)
+
+// Packet: 0x02fd
+packetLen(0x02fd, -1)
+
+// Packet: 0x02fe
+packetLen(0x02fe, -1)
+
+// Packet: 0x02ff
+packetLen(0x02ff, -1)
+
+// Packet: 0x0300
+packetLen(0x0300, -1)
+
+// Packet: 0x0301
+packetLen(0x0301, -1)
+
+// Packet: 0x0302
+packetLen(0x0302, -1)
+
+// Packet: 0x0303
+packetLen(0x0303, -1)
+
+// Packet: 0x0304
+packetLen(0x0304, -1)
+
+// Packet: 0x0305
+packetLen(0x0305, -1)
+
+// Packet: 0x0306
+packetLen(0x0306, -1)
+
+// Packet: 0x0307
+packetLen(0x0307, -1)
+
+// Packet: 0x0308
+packetLen(0x0308, -1)
+
+// Packet: 0x0309
+packetLen(0x0309, -1)
+
+// Packet: 0x030a
+packetLen(0x030a, -1)
+
+// Packet: 0x030b
+packetLen(0x030b, -1)
+
+// Packet: 0x030c
+packetLen(0x030c, -1)
+
+// Packet: 0x030d
+packetLen(0x030d, -1)
+
+// Packet: 0x030e
+packetLen(0x030e, -1)
+
+// Packet: 0x030f
+packetLen(0x030f, -1)
+
+// Packet: 0x0310
+packetLen(0x0310, -1)
+
+// Packet: 0x0311
+packetLen(0x0311, -1)
+
+// Packet: 0x0312
+packetLen(0x0312, -1)
+
+// Packet: 0x0313
+packetLen(0x0313, -1)
+
+// Packet: 0x0314
+packetLen(0x0314, -1)
+
+// Packet: 0x0315
+packetLen(0x0315, -1)
+
+// Packet: 0x0316
+packetLen(0x0316, -1)
+
+// Packet: 0x0317
+packetLen(0x0317, -1)
+
+// Packet: 0x0318
+packetLen(0x0318, -1)
+
+// Packet: 0x0319
+packetLen(0x0319, -1)
+
+// Packet: 0x031a
+packetLen(0x031a, -1)
+
+// Packet: 0x031b
+packetLen(0x031b, -1)
+
+// Packet: 0x031c
+packetLen(0x031c, -1)
+
+// Packet: 0x031d
+packetLen(0x031d, -1)
+
+// Packet: 0x031e
+packetLen(0x031e, -1)
+
+// Packet: 0x031f
+packetLen(0x031f, -1)
+
+// Packet: 0x0320
+packetLen(0x0320, -1)
+
+// Packet: 0x0321
+packetLen(0x0321, -1)
+
+// Packet: 0x0322
+packetLen(0x0322, -1)
+
+// Packet: 0x0323
+packetLen(0x0323, -1)
+
+// Packet: 0x0324
+packetLen(0x0324, -1)
+
+// Packet: 0x0325
+packetLen(0x0325, -1)
+
+// Packet: 0x0326
+packetLen(0x0326, -1)
+
+// Packet: 0x0327
+packetLen(0x0327, -1)
+
+// Packet: 0x0328
+packetLen(0x0328, -1)
+
+// Packet: 0x0329
+packetLen(0x0329, -1)
+
+// Packet: 0x032a
+packetLen(0x032a, -1)
+
+// Packet: 0x032b
+packetLen(0x032b, -1)
+
+// Packet: 0x032c
+packetLen(0x032c, -1)
+
+// Packet: 0x032d
+packetLen(0x032d, -1)
+
+// Packet: 0x032e
+packetLen(0x032e, -1)
+
+// Packet: 0x032f
+packetLen(0x032f, -1)
+
+// Packet: 0x0330
+packetLen(0x0330, -1)
+
+// Packet: 0x0331
+packetLen(0x0331, -1)
+
+// Packet: 0x0332
+packetLen(0x0332, -1)
+
+// Packet: 0x0333
+packetLen(0x0333, -1)
+
+// Packet: 0x0334
+packetLen(0x0334, -1)
+
+// Packet: 0x0335
+packetLen(0x0335, -1)
+
+// Packet: 0x0336
+packetLen(0x0336, -1)
+
+// Packet: 0x0337
+packetLen(0x0337, -1)
+
+// Packet: 0x0338
+packetLen(0x0338, -1)
+
+// Packet: 0x0339
+packetLen(0x0339, -1)
+
+// Packet: 0x033a
+packetLen(0x033a, -1)
+
+// Packet: 0x033b
+packetLen(0x033b, -1)
+
+// Packet: 0x033c
+packetLen(0x033c, -1)
+
+// Packet: 0x033d
+packetLen(0x033d, -1)
+
+// Packet: 0x033e
+packetLen(0x033e, -1)
+
+// Packet: 0x033f
+packetLen(0x033f, -1)
+
+// Packet: 0x0340
+packetLen(0x0340, -1)
+
+// Packet: 0x0341
+packetLen(0x0341, -1)
+
+// Packet: 0x0342
+packetLen(0x0342, -1)
+
+// Packet: 0x0343
+packetLen(0x0343, -1)
+
+// Packet: 0x0344
+packetLen(0x0344, -1)
+
+// Packet: 0x0345
+packetLen(0x0345, -1)
+
+// Packet: 0x0346
+packetLen(0x0346, -1)
+
+// Packet: 0x0347
+packetLen(0x0347, -1)
+
+// Packet: 0x0348
+packetLen(0x0348, -1)
+
+// Packet: 0x0349
+packetLen(0x0349, -1)
+
+// Packet: 0x034a
+packetLen(0x034a, -1)
+
+// Packet: 0x034b
+packetLen(0x034b, -1)
+
+// Packet: 0x034c
+packetLen(0x034c, -1)
+
+// Packet: 0x034d
+packetLen(0x034d, -1)
+
+// Packet: 0x034e
+packetLen(0x034e, -1)
+
+// Packet: 0x034f
+packetLen(0x034f, -1)
+
+// Packet: 0x0350
+packetLen(0x0350, -1)
+
+// Packet: 0x0351
+packetLen(0x0351, -1)
+
+// Packet: 0x0352
+packetLen(0x0352, -1)
+
+// Packet: 0x0353
+packetLen(0x0353, -1)
+
+// Packet: 0x0354
+packetLen(0x0354, -1)
+
+// Packet: 0x0355
+packetLen(0x0355, -1)
+
+// Packet: 0x0356
+packetLen(0x0356, -1)
+
+// Packet: 0x0357
+packetLen(0x0357, -1)
+
+// Packet: 0x0358
+packetLen(0x0358, -1)
+
+// Packet: 0x0359
+packetLen(0x0359, -1)
+
+// Packet: 0x035a
+packetLen(0x035a, -1)
+
+// Packet: 0x035b
+packetLen(0x035b, -1)
+
+// Packet: 0x035c
+packetLen(0x035c, 2) // CZ_OPEN_SIMPLE_CASHSHOP_ITEMLIST
+
+// Packet: 0x035d
+packetLen(0x035d, -1) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+
+// Packet: 0x035e
+packetLen(0x035e, 2) // CZ_CLOSE_WINDOW
+
+// Packet: 0x035f
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+
+// Packet: 0x0360
+packetLen(0x0360, -1) // CZ_REQUEST_TIME2
+
+// Packet: 0x0361
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+
+// Packet: 0x0362
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+
+// Packet: 0x0363
+packetLen(0x0363, -1) // CZ_ITEM_THROW2
+
+// Packet: 0x0364
+packetLen(0x0364, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+
+// Packet: 0x0365
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+
+// Packet: 0x0366
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+
+// Packet: 0x0367
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+
+// Packet: 0x0368
+packetLen(0x0368, -1) // CZ_REQNAME2
+
+// Packet: 0x0369
+packetLen(0x0369, -1) // CZ_REQNAME_BYGID2
+
+// Packet: 0x036a
+packetLen(0x036a, -1)
+
+// Packet: 0x036b
+packetLen(0x036b, -1)
+
+// Packet: 0x036c
+packetLen(0x036c, -1)
+
+// Packet: 0x036d
+packetLen(0x036d, -1)
+
+// Packet: 0x036e
+packetLen(0x036e, -1)
+
+// Packet: 0x036f
+packetLen(0x036f, -1)
+
+// Packet: 0x0370
+packetLen(0x0370, -1)
+
+// Packet: 0x0371
+packetLen(0x0371, -1)
+
+// Packet: 0x0372
+packetLen(0x0372, -1)
+
+// Packet: 0x0373
+packetLen(0x0373, -1)
+
+// Packet: 0x0374
+packetLen(0x0374, -1)
+
+// Packet: 0x0375
+packetLen(0x0375, -1)
+
+// Packet: 0x0376
+packetLen(0x0376, -1)
+
+// Packet: 0x0377
+packetLen(0x0377, -1)
+
+// Packet: 0x0378
+packetLen(0x0378, -1)
+
+// Packet: 0x0379
+packetLen(0x0379, -1)
+
+// Packet: 0x037a
+packetLen(0x037a, -1)
+
+// Packet: 0x037b
+packetLen(0x037b, -1)
+
+// Packet: 0x037c
+packetLen(0x037c, -1)
+
+// Packet: 0x037d
+packetLen(0x037d, -1)
+
+// Packet: 0x037e
+packetLen(0x037e, -1)
+
+// Packet: 0x037f
+packetLen(0x037f, -1)
+
+// Packet: 0x0380
+packetLen(0x0380, -1)
+
+// Packet: 0x0381
+packetLen(0x0381, -1)
+
+// Packet: 0x0382
+packetLen(0x0382, -1)
+
+// Packet: 0x0383
+packetLen(0x0383, -1)
+
+// Packet: 0x0384
+packetLen(0x0384, -1)
+
+// Packet: 0x0385
+packetLen(0x0385, -1)
+
+// Packet: 0x0386
+packetLen(0x0386, -1)
+
+// Packet: 0x0387
+packetLen(0x0387, -1)
+
+// Packet: 0x0388
+packetLen(0x0388, -1)
+
+// Packet: 0x0389
+packetLen(0x0389, -1)
+
+// Packet: 0x038a
+packetLen(0x038a, -1)
+
+// Packet: 0x038b
+packetLen(0x038b, -1)
+
+// Packet: 0x038c
+packetLen(0x038c, -1)
+
+// Packet: 0x038d
+packetLen(0x038d, -1)
+
+// Packet: 0x038e
+packetLen(0x038e, -1)
+
+// Packet: 0x038f
+packetLen(0x038f, -1)
+
+// Packet: 0x0390
+packetLen(0x0390, -1)
+
+// Packet: 0x0391
+packetLen(0x0391, -1)
+
+// Packet: 0x0392
+packetLen(0x0392, -1)
+
+// Packet: 0x0393
+packetLen(0x0393, -1)
+
+// Packet: 0x0394
+packetLen(0x0394, -1)
+
+// Packet: 0x0395
+packetLen(0x0395, -1)
+
+// Packet: 0x0396
+packetLen(0x0396, -1)
+
+// Packet: 0x0397
+packetLen(0x0397, -1)
+
+// Packet: 0x0398
+packetLen(0x0398, -1)
+
+// Packet: 0x0399
+packetLen(0x0399, -1)
+
+// Packet: 0x039a
+packetLen(0x039a, -1)
+
+// Packet: 0x039b
+packetLen(0x039b, -1)
+
+// Packet: 0x039c
+packetLen(0x039c, -1)
+
+// Packet: 0x039d
+packetLen(0x039d, -1)
+
+// Packet: 0x039e
+packetLen(0x039e, -1)
+
+// Packet: 0x039f
+packetLen(0x039f, -1)
+
+// Packet: 0x03a0
+packetLen(0x03a0, -1)
+
+// Packet: 0x03a1
+packetLen(0x03a1, -1)
+
+// Packet: 0x03a2
+packetLen(0x03a2, -1)
+
+// Packet: 0x03a3
+packetLen(0x03a3, -1)
+
+// Packet: 0x03a4
+packetLen(0x03a4, -1)
+
+// Packet: 0x03a5
+packetLen(0x03a5, -1)
+
+// Packet: 0x03a6
+packetLen(0x03a6, -1)
+
+// Packet: 0x03a7
+packetLen(0x03a7, -1)
+
+// Packet: 0x03a8
+packetLen(0x03a8, -1)
+
+// Packet: 0x03a9
+packetLen(0x03a9, -1)
+
+// Packet: 0x03aa
+packetLen(0x03aa, -1)
+
+// Packet: 0x03ab
+packetLen(0x03ab, -1)
+
+// Packet: 0x03ac
+packetLen(0x03ac, -1)
+
+// Packet: 0x03ad
+packetLen(0x03ad, -1)
+
+// Packet: 0x03ae
+packetLen(0x03ae, -1)
+
+// Packet: 0x03af
+packetLen(0x03af, -1)
+
+// Packet: 0x03b0
+packetLen(0x03b0, -1)
+
+// Packet: 0x03b1
+packetLen(0x03b1, -1)
+
+// Packet: 0x03b2
+packetLen(0x03b2, -1)
+
+// Packet: 0x03b3
+packetLen(0x03b3, -1)
+
+// Packet: 0x03b4
+packetLen(0x03b4, -1)
+
+// Packet: 0x03b5
+packetLen(0x03b5, -1)
+
+// Packet: 0x03b6
+packetLen(0x03b6, -1)
+
+// Packet: 0x03b7
+packetLen(0x03b7, -1)
+
+// Packet: 0x03b8
+packetLen(0x03b8, -1)
+
+// Packet: 0x03b9
+packetLen(0x03b9, -1)
+
+// Packet: 0x03ba
+packetLen(0x03ba, -1)
+
+// Packet: 0x03bb
+packetLen(0x03bb, -1)
+
+// Packet: 0x03bc
+packetLen(0x03bc, -1)
+
+// Packet: 0x03bd
+packetLen(0x03bd, -1)
+
+// Packet: 0x03be
+packetLen(0x03be, -1)
+
+// Packet: 0x03bf
+packetLen(0x03bf, -1)
+
+// Packet: 0x03c0
+packetLen(0x03c0, -1)
+
+// Packet: 0x03c1
+packetLen(0x03c1, -1)
+
+// Packet: 0x03c2
+packetLen(0x03c2, -1)
+
+// Packet: 0x03c3
+packetLen(0x03c3, -1)
+
+// Packet: 0x03c4
+packetLen(0x03c4, -1)
+
+// Packet: 0x03c5
+packetLen(0x03c5, -1)
+
+// Packet: 0x03c6
+packetLen(0x03c6, -1)
+
+// Packet: 0x03c7
+packetLen(0x03c7, -1)
+
+// Packet: 0x03c8
+packetLen(0x03c8, -1)
+
+// Packet: 0x03c9
+packetLen(0x03c9, -1)
+
+// Packet: 0x03ca
+packetLen(0x03ca, -1)
+
+// Packet: 0x03cb
+packetLen(0x03cb, -1)
+
+// Packet: 0x03cc
+packetLen(0x03cc, -1)
+
+// Packet: 0x03cd
+packetLen(0x03cd, -1)
+
+// Packet: 0x03ce
+packetLen(0x03ce, -1)
+
+// Packet: 0x03cf
+packetLen(0x03cf, -1)
+
+// Packet: 0x03d0
+packetLen(0x03d0, -1)
+
+// Packet: 0x03d1
+packetLen(0x03d1, -1)
+
+// Packet: 0x03d2
+packetLen(0x03d2, -1)
+
+// Packet: 0x03d3
+packetLen(0x03d3, -1)
+
+// Packet: 0x03d4
+packetLen(0x03d4, -1)
+
+// Packet: 0x03d5
+packetLen(0x03d5, -1)
+
+// Packet: 0x03d6
+packetLen(0x03d6, -1)
+
+// Packet: 0x03d7
+packetLen(0x03d7, -1)
+
+// Packet: 0x03d8
+packetLen(0x03d8, -1)
+
+// Packet: 0x03d9
+packetLen(0x03d9, -1)
+
+// Packet: 0x03da
+packetLen(0x03da, -1)
+
+// Packet: 0x03db
+packetLen(0x03db, -1)
+
+// Packet: 0x03dc
+packetLen(0x03dc, -1)
+
+// Packet: 0x03dd
+packetLen(0x03dd, 18) // AHC_GAME_GUARD
+
+// Packet: 0x03de
+packetLen(0x03de, 18) // CAH_ACK_GAME_GUARD
+
+// Packet: 0x03e2
+packetLen(0x03e2, -1)
+
+// Packet: 0x03e3
+packetLen(0x03e3, -1)
+
+// Packet: 0x03e4
+packetLen(0x03e4, -1)
+
+// Packet: 0x03e5
+packetLen(0x03e5, -1)
+
+// Packet: 0x03e6
+packetLen(0x03e6, -1)
+
+// Packet: 0x03e7
+packetLen(0x03e7, -1)
+
+// Packet: 0x03e8
+packetLen(0x03e8, -1)
+
+// Packet: 0x03e9
+packetLen(0x03e9, -1)
+
+// Packet: 0x03ea
+packetLen(0x03ea, -1)
+
+// Packet: 0x03eb
+packetLen(0x03eb, -1)
+
+// Packet: 0x03ec
+packetLen(0x03ec, -1)
+
+// Packet: 0x03ed
+packetLen(0x03ed, -1)
+
+// Packet: 0x03ee
+packetLen(0x03ee, -1)
+
+// Packet: 0x03ef
+packetLen(0x03ef, -1)
+
+// Packet: 0x03f0
+packetLen(0x03f0, -1)
+
+// Packet: 0x03f1
+packetLen(0x03f1, -1)
+
+// Packet: 0x03f2
+packetLen(0x03f2, -1)
+
+// Packet: 0x03f3
+packetLen(0x03f3, -1)
+
+// Packet: 0x03f4
+packetLen(0x03f4, -1)
+
+// Packet: 0x03f5
+packetLen(0x03f5, -1)
+
+// Packet: 0x03f6
+packetLen(0x03f6, -1)
+
+// Packet: 0x03f7
+packetLen(0x03f7, -1)
+
+// Packet: 0x03f8
+packetLen(0x03f8, -1)
+
+// Packet: 0x03f9
+packetLen(0x03f9, -1)
+
+// Packet: 0x03fa
+packetLen(0x03fa, -1)
+
+// Packet: 0x03fb
+packetLen(0x03fb, -1)
+
+// Packet: 0x03fc
+packetLen(0x03fc, -1)
+
+// Packet: 0x03fd
+packetLen(0x03fd, -1)
+
+// Packet: 0x03fe
+packetLen(0x03fe, -1)
+
+// Packet: 0x03ff
+packetLen(0x03ff, -1)
+
+// Packet: 0x0400
+packetLen(0x0400, -1)
+
+// Packet: 0x0401
+packetLen(0x0401, -1)
+
+// Packet: 0x0402
+packetLen(0x0402, -1)
+
+// Packet: 0x0403
+packetLen(0x0403, -1)
+
+// Packet: 0x0404
+packetLen(0x0404, -1)
+
+// Packet: 0x0405
+packetLen(0x0405, -1)
+
+// Packet: 0x0406
+packetLen(0x0406, -1)
+
+// Packet: 0x0407
+packetLen(0x0407, -1)
+
+// Packet: 0x0408
+packetLen(0x0408, -1)
+
+// Packet: 0x0409
+packetLen(0x0409, -1)
+
+// Packet: 0x040a
+packetLen(0x040a, -1)
+
+// Packet: 0x040b
+packetLen(0x040b, -1)
+
+// Packet: 0x040c
+packetLen(0x040c, -1)
+
+// Packet: 0x040d
+packetLen(0x040d, -1)
+
+// Packet: 0x040e
+packetLen(0x040e, -1)
+
+// Packet: 0x040f
+packetLen(0x040f, -1)
+
+// Packet: 0x0410
+packetLen(0x0410, -1)
+
+// Packet: 0x0411
+packetLen(0x0411, -1)
+
+// Packet: 0x0412
+packetLen(0x0412, -1)
+
+// Packet: 0x0413
+packetLen(0x0413, -1)
+
+// Packet: 0x0414
+packetLen(0x0414, -1)
+
+// Packet: 0x0415
+packetLen(0x0415, -1)
+
+// Packet: 0x0416
+packetLen(0x0416, -1)
+
+// Packet: 0x0417
+packetLen(0x0417, -1)
+
+// Packet: 0x0418
+packetLen(0x0418, -1)
+
+// Packet: 0x0419
+packetLen(0x0419, -1)
+
+// Packet: 0x041a
+packetLen(0x041a, -1)
+
+// Packet: 0x041b
+packetLen(0x041b, -1)
+
+// Packet: 0x041c
+packetLen(0x041c, -1)
+
+// Packet: 0x041d
+packetLen(0x041d, -1)
+
+// Packet: 0x041e
+packetLen(0x041e, -1)
+
+// Packet: 0x041f
+packetLen(0x041f, -1)
+
+// Packet: 0x0420
+packetLen(0x0420, -1)
+
+// Packet: 0x0421
+packetLen(0x0421, -1)
+
+// Packet: 0x0422
+packetLen(0x0422, -1)
+
+// Packet: 0x0423
+packetLen(0x0423, -1)
+
+// Packet: 0x0424
+packetLen(0x0424, -1)
+
+// Packet: 0x0425
+packetLen(0x0425, -1)
+
+// Packet: 0x0426
+packetLen(0x0426, -1)
+
+// Packet: 0x0427
+packetLen(0x0427, -1)
+
+// Packet: 0x0428
+packetLen(0x0428, -1)
+
+// Packet: 0x0429
+packetLen(0x0429, -1)
+
+// Packet: 0x042a
+packetLen(0x042a, -1)
+
+// Packet: 0x042b
+packetLen(0x042b, -1)
+
+// Packet: 0x042c
+packetLen(0x042c, -1)
+
+// Packet: 0x042d
+packetLen(0x042d, -1)
+
+// Packet: 0x042e
+packetLen(0x042e, -1)
+
+// Packet: 0x042f
+packetLen(0x042f, -1)
+
+// Packet: 0x0430
+packetLen(0x0430, -1)
+
+// Packet: 0x0431
+packetLen(0x0431, -1)
+
+// Packet: 0x0432
+packetLen(0x0432, -1)
+
+// Packet: 0x0433
+packetLen(0x0433, -1)
+
+// Packet: 0x0434
+packetLen(0x0434, -1)
+
+// Packet: 0x0435
+packetLen(0x0435, -1)
+
+// Packet: 0x0436
+packetLen(0x0436, 19) // CZ_ENTER2
+
+// Packet: 0x0437
+packetLen(0x0437, 7) // CZ_REQUEST_ACT2
+
+// Packet: 0x0438
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+
+// Packet: 0x0439
+packetLen(0x0439, 8) // CZ_USE_ITEM2
+
+// Packet: 0x043d
+packetLen(0x043d, 8) // ZC_SKILL_POSTDELAY
+
+// Packet: 0x043e
+packetLen(0x043e, -1) // ZC_SKILL_POSTDELAY_LIST
+
+// Packet: 0x043f
+#if PACKETVER >= 20090113
+packetLen(0x043f, 25) // ZC_MSG_STATE_CHANGE2
+#elif PACKETVER >= 20090107
+packetLen(0x043f, 8) // ZC_MSG_STATE_CHANGE2
+#endif
+
+// Packet: 0x0440
+packetLen(0x0440, 10) // ZC_MILLENNIUMSHIELD
+
+// Packet: 0x0441
+packetLen(0x0441, 4) // ZC_SKILLINFO_DELETE
+
+// Packet: 0x0442
+packetLen(0x0442, 8) // ZC_SKILL_SELECT_REQUEST
+
+// Packet: 0x0443
+packetLen(0x0443, 8) // CZ_SKILL_SELECT_RESPONSE
+
+// Packet: 0x0444
+#if PACKETVER >= 20090113
+packetLen(0x0444, -1) // ZC_SIMPLE_CASH_POINT_ITEMLIST
+#endif
+
+// Packet: 0x0445
+#if PACKETVER >= 20090113
+packetLen(0x0445, 10) // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+#endif
+
+// Packet: 0x0446
+#if PACKETVER >= 20090218
+packetLen(0x0446, 14) // ZC_QUEST_NOTIFY_EFFECT
+#endif
+
+// Packet: 0x0447
+#if PACKETVER >= 20090520
+packetLen(0x0447, 2) // CZ_BLOCKING_PLAY_CANCEL
+#endif
+
+// Packet: 0x0448
+#if PACKETVER >= 20090226
+packetLen(0x0448, -1) // HC_CHARACTER_LIST
+#endif
+
+// Packet: 0x0449
+#if PACKETVER >= 20090722
+// removed
+#elif PACKETVER >= 20090401
+packetLen(0x0449, 4) // ZC_HACKSH_ERROR_MSG
+#endif
+
+// Packet: 0x044a
+#if PACKETVER >= 20090408
+packetLen(0x044a, 6) // CZ_CLIENT_VERSION
+#endif
+
+// Packet: 0x044b
+#if PACKETVER >= 20090514
+packetLen(0x044b, 2) // CZ_CLOSE_SIMPLECASH_SHOP
+#endif
+
+// Packet: 0x07d0
+#if PACKETVER >= 20090520
+packetLen(0x07d0, 6) // ZC_ES_RESULT
+#endif
+
+// Packet: 0x07d1
+#if PACKETVER >= 20090520
+packetLen(0x07d1, 2) // CZ_ES_GET_LIST
+#endif
+
+// Packet: 0x07d2
+#if PACKETVER >= 20090520
+packetLen(0x07d2, -1) // ZC_ES_LIST
+#endif
+
+// Packet: 0x07d3
+#if PACKETVER >= 20090520
+packetLen(0x07d3, 4) // CZ_ES_CHOOSE
+#endif
+
+// Packet: 0x07d4
+#if PACKETVER >= 20090520
+packetLen(0x07d4, 4) // CZ_ES_CANCEL
+#endif
+
+// Packet: 0x07d5
+#if PACKETVER >= 20090520
+packetLen(0x07d5, 4) // ZC_ES_READY
+#endif
+
+// Packet: 0x07d6
+#if PACKETVER >= 20090520
+packetLen(0x07d6, 4) // ZC_ES_GOTO
+#endif
+
+// Packet: 0x07d7
+#if PACKETVER >= 20090603
+packetLen(0x07d7, 8) // CZ_GROUPINFO_CHANGE_V2
+#endif
+
+// Packet: 0x07d8
+#if PACKETVER >= 20090603
+packetLen(0x07d8, 8) // ZC_REQ_GROUPINFO_CHANGE_V2
+#endif
+
+// Packet: 0x07d9
+#if PACKETVER >= 20090617
+packetLen(0x07d9, 268) // ZC_SHORTCUT_KEY_LIST_V2
+#elif PACKETVER >= 20090603
+packetLen(0x07d9, 254) // ZC_SHORTCUT_KEY_LIST_V2
+#endif
+
+// Packet: 0x07da
+#if PACKETVER >= 20090603
+packetLen(0x07da, 6) // CZ_CHANGE_GROUP_MASTER
+#endif
+
+// Packet: 0x07db
+#if PACKETVER >= 20090610
+packetLen(0x07db, 8) // ZC_HO_PAR_CHANGE
+#endif
+
+// Packet: 0x07dc
+#if PACKETVER >= 20090617
+packetLen(0x07dc, 6) // CZ_SEEK_PARTY
+#endif
+
+// Packet: 0x07dd
+#if PACKETVER >= 20090617
+packetLen(0x07dd, 54) // ZC_SEEK_PARTY
+#endif
+
+// Packet: 0x07de
+#if PACKETVER >= 20090617
+packetLen(0x07de, 30) // CZ_SEEK_PARTY_MEMBER
+#endif
+
+// Packet: 0x07df
+#if PACKETVER >= 20090617
+packetLen(0x07df, 54) // ZC_SEEK_PARTY_MEMBER
+#endif
+
+// Packet: 0x07e0
+#if PACKETVER >= 20090708
+packetLen(0x07e0, 58) // ZC_ES_NOTI_MYINFO
+#endif
+
+// Packet: 0x07e1
+#if PACKETVER >= 20090715
+packetLen(0x07e1, 15) // ZC_SKILLINFO_UPDATE2
+#endif
+
+// Packet: 0x07e2
+#if PACKETVER >= 20090805
+packetLen(0x07e2, 8) // ZC_MSG_VALUE
+#endif
+
+// Packet: 0x07e3
+#if PACKETVER >= 20090818
+packetLen(0x07e3, 6) // ZC_ITEMLISTWIN_OPEN
+#endif
+
+// Packet: 0x07e4
+#if PACKETVER >= 20090818
+packetLen(0x07e4, -1) // CZ_ITEMLISTWIN_RES
+#endif
+
+// Packet: 0x07e5
+#if PACKETVER >= 20090922
+packetLen(0x07e5, 8) // CH_ENTER_CHECKBOT
+#elif PACKETVER >= 20090825
+packetLen(0x07e5, -1) // CH_ENTER_CHECKBOT
+#endif
+
+// Packet: 0x07e6
+#if PACKETVER >= 20090818
+packetLen(0x07e6, 8) // ZC_MSG_SKILL
+#endif
+
+// Packet: 0x07e7
+#if PACKETVER >= 20090922
+packetLen(0x07e7, 32) // CH_CHECKBOT
+#elif PACKETVER >= 20090825
+packetLen(0x07e7, 5) // CH_CHECKBOT
+#endif
+
+// Packet: 0x07e8
+#if PACKETVER >= 20090922
+packetLen(0x07e8, -1) // HC_CHECKBOT
+#endif
+
+// Packet: 0x07e9
+#if PACKETVER >= 20090922
+packetLen(0x07e9, 5) // HC_CHECKBOT_RESULT
+#endif
+
+// Packet: 0x07ea
+#if PACKETVER >= 20090929
+packetLen(0x07ea, 2) // CZ_BATTLE_FIELD_LIST
+#endif
+
+// Packet: 0x07eb
+#if PACKETVER >= 20090929
+packetLen(0x07eb, -1) // ZC_BATTLE_FIELD_LIST
+#endif
+
+// Packet: 0x07ec
+#if PACKETVER >= 20091006
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20090929
+packetLen(0x07ec, 6) // CZ_JOIN_BATTLE_FIELD
+#endif
+
+// Packet: 0x07ed
+#if PACKETVER >= 20091006
+packetLen(0x07ed, 10) // ZC_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20090929
+packetLen(0x07ed, 8) // ZC_JOIN_BATTLE_FIELD
+#endif
+
+// Packet: 0x07ee
+#if PACKETVER >= 20090929
+packetLen(0x07ee, 6) // CZ_CANCEL_BATTLE_FIELD
+#endif
+
+// Packet: 0x07ef
+#if PACKETVER >= 20090929
+packetLen(0x07ef, 8) // ZC_CANCEL_BATTLE_FIELD
+#endif
+
+// Packet: 0x07f0
+#if PACKETVER >= 20090929
+packetLen(0x07f0, 8) // CZ_REQ_BATTLE_STATE_MONITOR
+#endif
+
+// Packet: 0x07f1
+#if PACKETVER >= 20090929
+packetLen(0x07f1, 15) // ZC_ACK_BATTLE_STATE_MONITOR
+#endif
+
+// Packet: 0x07f2
+#if PACKETVER >= 20091006
+packetLen(0x07f2, 6) // ZC_BATTLE_NOTI_START_STEP
+#elif PACKETVER >= 20090929
+packetLen(0x07f2, 4) // ZC_BATTLE_NOTI_START_STEP
+#endif
+
+// Packet: 0x07f3
+#if PACKETVER >= 20091006
+packetLen(0x07f3, 4) // ZC_BATTLE_JOIN_NOTI_DEFER
+#elif PACKETVER >= 20090929
+packetLen(0x07f3, 3) // ZC_BATTLE_JOIN_NOTI_DEFER
+#endif
+
+// Packet: 0x07f4
+#if PACKETVER >= 20091006
+packetLen(0x07f4, 3) // ZC_BATTLE_JOIN_DISABLE_STATE
+#endif
+
+// Packet: 0x07f5
+#if PACKETVER >= 20091027
+packetLen(0x07f5, 6) // CZ_GM_FULLSTRIP
+#endif
+
+// Packet: 0x07f6
+#if PACKETVER >= 20091027
+packetLen(0x07f6, 14) // ZC_NOTIFY_EXP
+#endif
+
+// Packet: 0x07f7
+#if PACKETVER >= 20091103
+packetLen(0x07f7, -1) // ZC_NOTIFY_MOVEENTRY7
+#endif
+
+// Packet: 0x07f8
+#if PACKETVER >= 20091103
+packetLen(0x07f8, -1) // ZC_NOTIFY_NEWENTRY5
+#endif
+
+// Packet: 0x07f9
+#if PACKETVER >= 20091103
+packetLen(0x07f9, -1) // ZC_NOTIFY_STANDENTRY5
+#endif
+
+// Packet: 0x07fa
+#if PACKETVER >= 20091117
+packetLen(0x07fa, 8) // ZC_DELETE_ITEM_FROM_BODY
+#endif
+
+// Packet: 0x07fb
+#if PACKETVER >= 20091124
+packetLen(0x07fb, 25) // ZC_USESKILL_ACK2
+#endif
+
+// Packet: 0x07fc
+#if PACKETVER >= 20091201
+packetLen(0x07fc, 10) // ZC_CHANGE_GROUP_MASTER
+#endif
+
+// Packet: 0x07fd
+#if PACKETVER >= 20091201
+packetLen(0x07fd, -1) // ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN
+#endif
+
+// Packet: 0x07fe
+#if PACKETVER >= 20091201
+packetLen(0x07fe, 26) // ZC_PLAY_NPC_BGM
+#endif
+
+// Packet: 0x07ff
+#if PACKETVER >= 20091201
+packetLen(0x07ff, -1) // ZC_DEFINE_CHECK
+#endif
+
+// Packet: 0x0800
+#if PACKETVER >= 20091215
+packetLen(0x0800, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC2
+#endif
+
+// Packet: 0x0801
+#if PACKETVER >= 20091215
+packetLen(0x0801, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC2
+#endif
+
+// Packet: 0x0802
+#if PACKETVER >= 20091222
+packetLen(0x0802, 18) // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// Packet: 0x0803
+#if PACKETVER >= 20091222
+packetLen(0x0803, 4) // ZC_PARTY_BOOKING_ACK_REGISTER
+#endif
+
+// Packet: 0x0804
+#if PACKETVER >= 20091229
+packetLen(0x0804, 14) // CZ_PARTY_BOOKING_REQ_SEARCH
+#elif PACKETVER >= 20091222
+packetLen(0x0804, 8) // CZ_PARTY_BOOKING_REQ_SEARCH
+#endif
+
+// Packet: 0x0805
+#if PACKETVER >= 20091222
+packetLen(0x0805, -1) // ZC_PARTY_BOOKING_ACK_SEARCH
+#endif
+
+// Packet: 0x0806
+#if PACKETVER >= 20091229
+packetLen(0x0806, 2) // CZ_PARTY_BOOKING_REQ_DELETE
+#elif PACKETVER >= 20091222
+packetLen(0x0806, 4) // CZ_PARTY_BOOKING_REQ_DELETE
+#endif
+
+// Packet: 0x0807
+#if PACKETVER >= 20091229
+packetLen(0x0807, 4) // ZC_PARTY_BOOKING_ACK_DELETE
+#elif PACKETVER >= 20091222
+packetLen(0x0807, 2) // ZC_PARTY_BOOKING_ACK_DELETE
+#endif
+
+// Packet: 0x0808
+#if PACKETVER >= 20091229
+packetLen(0x0808, 14) // CZ_PARTY_BOOKING_REQ_UPDATE
+#elif PACKETVER >= 20091222
+packetLen(0x0808, 4) // CZ_PARTY_BOOKING_REQ_UPDATE
+#endif
+
+// Packet: 0x0809
+#if PACKETVER >= 20091229
+packetLen(0x0809, 50) // ZC_PARTY_BOOKING_NOTIFY_INSERT
+#elif PACKETVER >= 20091222
+packetLen(0x0809, 14) // ZC_PARTY_BOOKING_NOTIFY_INSERT
+#endif
+
+// Packet: 0x080a
+#if PACKETVER >= 20091229
+packetLen(0x080a, 18) // ZC_PARTY_BOOKING_NOTIFY_UPDATE
+#elif PACKETVER >= 20091222
+packetLen(0x080a, 50) // ZC_PARTY_BOOKING_NOTIFY_UPDATE
+#endif
+
+// Packet: 0x080b
+#if PACKETVER >= 20091229
+packetLen(0x080b, 6) // ZC_PARTY_BOOKING_NOTIFY_DELETE
+#elif PACKETVER >= 20091222
+packetLen(0x080b, 18) // ZC_PARTY_BOOKING_NOTIFY_DELETE
+#endif
+
+// Packet: 0x080c
+#if PACKETVER >= 20091229
+// removed
+#elif PACKETVER >= 20091222
+packetLen(0x080c, 6) // CZ_SIMPLE_CASH_BTNSHOW
+#endif
+
+
+#endif /* COMMON_PACKETS2009_LEN_RE_H */
diff --git a/src/common/packets/packets2009_len_sak.h b/src/common/packets/packets2009_len_sak.h
new file mode 100644
index 000000000..f732fddea
--- /dev/null
+++ b/src/common/packets/packets2009_len_sak.h
@@ -0,0 +1,3054 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2009_LEN_SAK_H
+#define COMMON_PACKETS2009_LEN_SAK_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 110) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 25) // CZ_ENTER
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 42) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+packetLen(0x007e, 102) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 11) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+packetLen(0x0089, 8) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, 11)
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+packetLen(0x0094, 14) // CZ_REQNAME
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+packetLen(0x009b, 26) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+packetLen(0x009f, 14) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+packetLen(0x00a2, 15) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+packetLen(0x00a7, 8)
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 7) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+packetLen(0x00f5, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+packetLen(0x00f7, 22) // CZ_REQUEST_TIME
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+packetLen(0x0113, 22) // CZ_USE_SKILL
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 10) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0158
+packetLen(0x0158, -1) // ZC_ACK_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+packetLen(0x0190, 19) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 37) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x020f
+packetLen(0x020f, 10) // CZ_REQ_PVPPOINT
+
+// Packet: 0x0210
+packetLen(0x0210, 22) // ZC_ACK_PVPPOINT
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+
+// Packet: 0x022b
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+
+// Packet: 0x022c
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+
+// Packet: 0x022d
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+
+// Packet: 0x022e
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+
+// Packet: 0x022f
+packetLen(0x022f, 5) // ZC_FEED_MER
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+packetLen(0x0281, 4) // CZ_GANGSI_RANK
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+
+// Packet: 0x0288
+packetLen(0x0288, 10) // CZ_PC_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0289
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0296
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0297
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0298
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+
+// Packet: 0x0299
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+
+// Packet: 0x029a
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+
+// Packet: 0x029b
+packetLen(0x029b, 80) // ZC_MER_INIT
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a5
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+
+// Packet: 0x02a6
+#if PACKETVER >= 20090408
+packetLen(0x02a6, -1) // ZC_HACKSH_CPX_MSG
+#elif PACKETVER >= 20090320
+packetLen(0x02a6, 404) // ZC_HACKSH_CPX_MSG
+#endif
+
+// Packet: 0x02a7
+#if PACKETVER >= 20090408
+packetLen(0x02a7, -1) // CZ_HACKSH_CPX_MSG
+#elif PACKETVER >= 20090320
+packetLen(0x02a7, 404) // CZ_HACKSH_CPX_MSG
+#endif
+
+// Packet: 0x02aa
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+
+// Packet: 0x02ab
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+
+// Packet: 0x02ac
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+
+// Packet: 0x02ad
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+
+// Packet: 0x02b0
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+
+// Packet: 0x02b1
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+
+// Packet: 0x02b2
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+
+// Packet: 0x02b3
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+
+// Packet: 0x02b4
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+
+// Packet: 0x02b5
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+
+// Packet: 0x02b6
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+
+// Packet: 0x02b7
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+
+// Packet: 0x02b8
+packetLen(0x02b8, 22) // ZC_ITEM_PICKUP_PARTY
+
+// Packet: 0x02b9
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+
+// Packet: 0x02ba
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+
+// Packet: 0x02bb
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+
+// Packet: 0x02bc
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+
+// Packet: 0x02c1
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+
+// Packet: 0x02c2
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+
+// Packet: 0x02c4
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+
+// Packet: 0x02c5
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c6
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+
+// Packet: 0x02c7
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c8
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+
+// Packet: 0x02c9
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+
+// Packet: 0x02ca
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+
+// Packet: 0x02cb
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+
+// Packet: 0x02cc
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+
+// Packet: 0x02cd
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+
+// Packet: 0x02ce
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+
+// Packet: 0x02cf
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+
+// Packet: 0x02d0
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d1
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d2
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d3
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+
+// Packet: 0x02d4
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+
+// Packet: 0x02d5
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+
+// Packet: 0x02d6
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d7
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d8
+packetLen(0x02d8, 10) // CZ_CONFIG
+
+// Packet: 0x02d9
+packetLen(0x02d9, 10) // ZC_CONFIG
+
+// Packet: 0x02da
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+
+// Packet: 0x02db
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+
+// Packet: 0x02dc
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+
+// Packet: 0x02dd
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+
+// Packet: 0x02de
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+
+// Packet: 0x02df
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+
+// Packet: 0x02e0
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+
+// Packet: 0x02e1
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+
+// Packet: 0x02e2
+packetLen(0x02e2, 14) // CZ_USE_ITEM_NEW_JAPEN
+
+// Packet: 0x02e3
+packetLen(0x02e3, 25) // CZ_USE_SKILL_NEW_JAPEN
+
+// Packet: 0x02e4
+packetLen(0x02e4, 8) // CZ_ITEM_PICKUP_NEW_JAPEN
+
+// Packet: 0x02e5
+packetLen(0x02e5, 8) // CZ_REQUEST_MOVE_NEW_JAPEN
+
+// Packet: 0x02e6
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+
+// Packet: 0x02e7
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+
+// Packet: 0x02e8
+packetLen(0x02e8, -1) // ZC_NORMAL_ITEMLIST3
+
+// Packet: 0x02e9
+packetLen(0x02e9, -1) // ZC_CART_NORMAL_ITEMLIST3
+
+// Packet: 0x02ea
+packetLen(0x02ea, -1) // ZC_STORE_NORMAL_ITEMLIST3
+
+// Packet: 0x02eb
+packetLen(0x02eb, 13) // ZC_ACCEPT_ENTER2
+
+// Packet: 0x02ec
+packetLen(0x02ec, 67) // ZC_NOTIFY_MOVEENTRY4
+
+// Packet: 0x02ed
+packetLen(0x02ed, 59) // ZC_NOTIFY_NEWENTRY4
+
+// Packet: 0x02ee
+packetLen(0x02ee, 60) // ZC_NOTIFY_STANDENTRY4
+
+// Packet: 0x02ef
+packetLen(0x02ef, 8) // ZC_NOTIFY_FONT
+
+// Packet: 0x02f0
+packetLen(0x02f0, 10) // ZC_PROGRESS
+
+// Packet: 0x02f1
+packetLen(0x02f1, 2) // CZ_PROGRESS
+
+// Packet: 0x02f2
+packetLen(0x02f2, 2) // ZC_PROGRESS_CANCEL
+
+// Packet: 0x02f3
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+
+// Packet: 0x02f4
+packetLen(0x02f4, -1) // ZC_IRMAIL_SEND_RES
+
+// Packet: 0x02f5
+packetLen(0x02f5, -1) // ZC_IRMAIL_NOTIFY
+
+// Packet: 0x02f6
+packetLen(0x02f6, -1) // CZ_IRMAIL_LIST
+
+// Packet: 0x02f7
+packetLen(0x02f7, -1)
+
+// Packet: 0x02f8
+packetLen(0x02f8, -1)
+
+// Packet: 0x02f9
+packetLen(0x02f9, -1)
+
+// Packet: 0x02fa
+packetLen(0x02fa, -1)
+
+// Packet: 0x02fb
+packetLen(0x02fb, -1)
+
+// Packet: 0x02fc
+packetLen(0x02fc, -1)
+
+// Packet: 0x02fd
+packetLen(0x02fd, -1)
+
+// Packet: 0x02fe
+packetLen(0x02fe, -1)
+
+// Packet: 0x02ff
+packetLen(0x02ff, -1)
+
+// Packet: 0x0300
+packetLen(0x0300, -1)
+
+// Packet: 0x0301
+packetLen(0x0301, -1)
+
+// Packet: 0x0302
+packetLen(0x0302, -1)
+
+// Packet: 0x0303
+packetLen(0x0303, -1)
+
+// Packet: 0x0304
+packetLen(0x0304, -1)
+
+// Packet: 0x0305
+packetLen(0x0305, -1)
+
+// Packet: 0x0306
+packetLen(0x0306, -1)
+
+// Packet: 0x0307
+packetLen(0x0307, -1)
+
+// Packet: 0x0308
+packetLen(0x0308, -1)
+
+// Packet: 0x0309
+packetLen(0x0309, -1)
+
+// Packet: 0x030a
+packetLen(0x030a, -1)
+
+// Packet: 0x030b
+packetLen(0x030b, -1)
+
+// Packet: 0x030c
+packetLen(0x030c, -1)
+
+// Packet: 0x030d
+packetLen(0x030d, -1)
+
+// Packet: 0x030e
+packetLen(0x030e, -1)
+
+// Packet: 0x030f
+packetLen(0x030f, -1)
+
+// Packet: 0x0310
+packetLen(0x0310, -1)
+
+// Packet: 0x0311
+packetLen(0x0311, -1)
+
+// Packet: 0x0312
+packetLen(0x0312, -1)
+
+// Packet: 0x0313
+packetLen(0x0313, -1)
+
+// Packet: 0x0314
+packetLen(0x0314, -1)
+
+// Packet: 0x0315
+packetLen(0x0315, -1)
+
+// Packet: 0x0316
+packetLen(0x0316, -1)
+
+// Packet: 0x0317
+packetLen(0x0317, -1)
+
+// Packet: 0x0318
+packetLen(0x0318, -1)
+
+// Packet: 0x0319
+packetLen(0x0319, -1)
+
+// Packet: 0x031a
+packetLen(0x031a, -1)
+
+// Packet: 0x031b
+packetLen(0x031b, -1)
+
+// Packet: 0x031c
+packetLen(0x031c, -1)
+
+// Packet: 0x031d
+packetLen(0x031d, -1)
+
+// Packet: 0x031e
+packetLen(0x031e, -1)
+
+// Packet: 0x031f
+packetLen(0x031f, -1)
+
+// Packet: 0x0320
+packetLen(0x0320, -1)
+
+// Packet: 0x0321
+packetLen(0x0321, -1)
+
+// Packet: 0x0322
+packetLen(0x0322, -1)
+
+// Packet: 0x0323
+packetLen(0x0323, -1)
+
+// Packet: 0x0324
+packetLen(0x0324, -1)
+
+// Packet: 0x0325
+packetLen(0x0325, -1)
+
+// Packet: 0x0326
+packetLen(0x0326, -1)
+
+// Packet: 0x0327
+packetLen(0x0327, -1)
+
+// Packet: 0x0328
+packetLen(0x0328, -1)
+
+// Packet: 0x0329
+packetLen(0x0329, -1)
+
+// Packet: 0x032a
+packetLen(0x032a, -1)
+
+// Packet: 0x032b
+packetLen(0x032b, -1)
+
+// Packet: 0x032c
+packetLen(0x032c, -1)
+
+// Packet: 0x032d
+packetLen(0x032d, -1)
+
+// Packet: 0x032e
+packetLen(0x032e, -1)
+
+// Packet: 0x032f
+packetLen(0x032f, -1)
+
+// Packet: 0x0330
+packetLen(0x0330, -1)
+
+// Packet: 0x0331
+packetLen(0x0331, -1)
+
+// Packet: 0x0332
+packetLen(0x0332, -1)
+
+// Packet: 0x0333
+packetLen(0x0333, -1)
+
+// Packet: 0x0334
+packetLen(0x0334, -1)
+
+// Packet: 0x0335
+packetLen(0x0335, -1)
+
+// Packet: 0x0336
+packetLen(0x0336, -1)
+
+// Packet: 0x0337
+packetLen(0x0337, -1)
+
+// Packet: 0x0338
+packetLen(0x0338, -1)
+
+// Packet: 0x0339
+packetLen(0x0339, -1)
+
+// Packet: 0x033a
+packetLen(0x033a, -1)
+
+// Packet: 0x033b
+packetLen(0x033b, -1)
+
+// Packet: 0x033c
+packetLen(0x033c, -1)
+
+// Packet: 0x033d
+packetLen(0x033d, -1)
+
+// Packet: 0x033e
+packetLen(0x033e, -1)
+
+// Packet: 0x033f
+packetLen(0x033f, -1)
+
+// Packet: 0x0340
+packetLen(0x0340, -1)
+
+// Packet: 0x0341
+packetLen(0x0341, -1)
+
+// Packet: 0x0342
+packetLen(0x0342, -1)
+
+// Packet: 0x0343
+packetLen(0x0343, -1)
+
+// Packet: 0x0344
+packetLen(0x0344, -1)
+
+// Packet: 0x0345
+packetLen(0x0345, -1)
+
+// Packet: 0x0346
+packetLen(0x0346, -1)
+
+// Packet: 0x0347
+packetLen(0x0347, -1)
+
+// Packet: 0x0348
+packetLen(0x0348, -1)
+
+// Packet: 0x0349
+packetLen(0x0349, -1)
+
+// Packet: 0x034a
+packetLen(0x034a, -1)
+
+// Packet: 0x034b
+packetLen(0x034b, -1)
+
+// Packet: 0x034c
+packetLen(0x034c, -1)
+
+// Packet: 0x034d
+packetLen(0x034d, -1)
+
+// Packet: 0x034e
+packetLen(0x034e, -1)
+
+// Packet: 0x034f
+packetLen(0x034f, -1)
+
+// Packet: 0x0350
+packetLen(0x0350, -1)
+
+// Packet: 0x0351
+packetLen(0x0351, -1)
+
+// Packet: 0x0352
+packetLen(0x0352, -1)
+
+// Packet: 0x0353
+packetLen(0x0353, -1)
+
+// Packet: 0x0354
+packetLen(0x0354, -1)
+
+// Packet: 0x0355
+packetLen(0x0355, -1)
+
+// Packet: 0x0356
+packetLen(0x0356, -1)
+
+// Packet: 0x0357
+packetLen(0x0357, -1)
+
+// Packet: 0x0358
+packetLen(0x0358, -1)
+
+// Packet: 0x0359
+packetLen(0x0359, -1)
+
+// Packet: 0x035a
+packetLen(0x035a, -1)
+
+// Packet: 0x035b
+packetLen(0x035b, -1)
+
+// Packet: 0x035c
+packetLen(0x035c, 2) // CZ_OPEN_SIMPLE_CASHSHOP_ITEMLIST
+
+// Packet: 0x035d
+packetLen(0x035d, -1) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+
+// Packet: 0x035e
+packetLen(0x035e, 2) // CZ_CLOSE_WINDOW
+
+// Packet: 0x035f
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+
+// Packet: 0x0360
+packetLen(0x0360, -1) // CZ_REQUEST_TIME2
+
+// Packet: 0x0361
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+
+// Packet: 0x0362
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+
+// Packet: 0x0363
+packetLen(0x0363, -1) // CZ_ITEM_THROW2
+
+// Packet: 0x0364
+packetLen(0x0364, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+
+// Packet: 0x0365
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+
+// Packet: 0x0366
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+
+// Packet: 0x0367
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+
+// Packet: 0x0368
+packetLen(0x0368, -1) // CZ_REQNAME2
+
+// Packet: 0x0369
+packetLen(0x0369, -1) // CZ_REQNAME_BYGID2
+
+// Packet: 0x036a
+packetLen(0x036a, -1)
+
+// Packet: 0x036b
+packetLen(0x036b, -1)
+
+// Packet: 0x036c
+packetLen(0x036c, -1)
+
+// Packet: 0x036d
+packetLen(0x036d, -1)
+
+// Packet: 0x036e
+packetLen(0x036e, -1)
+
+// Packet: 0x036f
+packetLen(0x036f, -1)
+
+// Packet: 0x0370
+packetLen(0x0370, -1)
+
+// Packet: 0x0371
+packetLen(0x0371, -1)
+
+// Packet: 0x0372
+packetLen(0x0372, -1)
+
+// Packet: 0x0373
+packetLen(0x0373, -1)
+
+// Packet: 0x0374
+packetLen(0x0374, -1)
+
+// Packet: 0x0375
+packetLen(0x0375, -1)
+
+// Packet: 0x0376
+packetLen(0x0376, -1)
+
+// Packet: 0x0377
+packetLen(0x0377, -1)
+
+// Packet: 0x0378
+packetLen(0x0378, -1)
+
+// Packet: 0x0379
+packetLen(0x0379, -1)
+
+// Packet: 0x037a
+packetLen(0x037a, -1)
+
+// Packet: 0x037b
+packetLen(0x037b, -1)
+
+// Packet: 0x037c
+packetLen(0x037c, -1)
+
+// Packet: 0x037d
+packetLen(0x037d, -1)
+
+// Packet: 0x037e
+packetLen(0x037e, -1)
+
+// Packet: 0x037f
+packetLen(0x037f, -1)
+
+// Packet: 0x0380
+packetLen(0x0380, -1)
+
+// Packet: 0x0381
+packetLen(0x0381, -1)
+
+// Packet: 0x0382
+packetLen(0x0382, -1)
+
+// Packet: 0x0383
+packetLen(0x0383, -1)
+
+// Packet: 0x0384
+packetLen(0x0384, -1)
+
+// Packet: 0x0385
+packetLen(0x0385, -1)
+
+// Packet: 0x0386
+packetLen(0x0386, -1)
+
+// Packet: 0x0387
+packetLen(0x0387, -1)
+
+// Packet: 0x0388
+packetLen(0x0388, -1)
+
+// Packet: 0x0389
+packetLen(0x0389, -1)
+
+// Packet: 0x038a
+packetLen(0x038a, -1)
+
+// Packet: 0x038b
+packetLen(0x038b, -1)
+
+// Packet: 0x038c
+packetLen(0x038c, -1)
+
+// Packet: 0x038d
+packetLen(0x038d, -1)
+
+// Packet: 0x038e
+packetLen(0x038e, -1)
+
+// Packet: 0x038f
+packetLen(0x038f, -1)
+
+// Packet: 0x0390
+packetLen(0x0390, -1)
+
+// Packet: 0x0391
+packetLen(0x0391, -1)
+
+// Packet: 0x0392
+packetLen(0x0392, -1)
+
+// Packet: 0x0393
+packetLen(0x0393, -1)
+
+// Packet: 0x0394
+packetLen(0x0394, -1)
+
+// Packet: 0x0395
+packetLen(0x0395, -1)
+
+// Packet: 0x0396
+packetLen(0x0396, -1)
+
+// Packet: 0x0397
+packetLen(0x0397, -1)
+
+// Packet: 0x0398
+packetLen(0x0398, -1)
+
+// Packet: 0x0399
+packetLen(0x0399, -1)
+
+// Packet: 0x039a
+packetLen(0x039a, -1)
+
+// Packet: 0x039b
+packetLen(0x039b, -1)
+
+// Packet: 0x039c
+packetLen(0x039c, -1)
+
+// Packet: 0x039d
+packetLen(0x039d, -1)
+
+// Packet: 0x039e
+packetLen(0x039e, -1)
+
+// Packet: 0x039f
+packetLen(0x039f, -1)
+
+// Packet: 0x03a0
+packetLen(0x03a0, -1)
+
+// Packet: 0x03a1
+packetLen(0x03a1, -1)
+
+// Packet: 0x03a2
+packetLen(0x03a2, -1)
+
+// Packet: 0x03a3
+packetLen(0x03a3, -1)
+
+// Packet: 0x03a4
+packetLen(0x03a4, -1)
+
+// Packet: 0x03a5
+packetLen(0x03a5, -1)
+
+// Packet: 0x03a6
+packetLen(0x03a6, -1)
+
+// Packet: 0x03a7
+packetLen(0x03a7, -1)
+
+// Packet: 0x03a8
+packetLen(0x03a8, -1)
+
+// Packet: 0x03a9
+packetLen(0x03a9, -1)
+
+// Packet: 0x03aa
+packetLen(0x03aa, -1)
+
+// Packet: 0x03ab
+packetLen(0x03ab, -1)
+
+// Packet: 0x03ac
+packetLen(0x03ac, -1)
+
+// Packet: 0x03ad
+packetLen(0x03ad, -1)
+
+// Packet: 0x03ae
+packetLen(0x03ae, -1)
+
+// Packet: 0x03af
+packetLen(0x03af, -1)
+
+// Packet: 0x03b0
+packetLen(0x03b0, -1)
+
+// Packet: 0x03b1
+packetLen(0x03b1, -1)
+
+// Packet: 0x03b2
+packetLen(0x03b2, -1)
+
+// Packet: 0x03b3
+packetLen(0x03b3, -1)
+
+// Packet: 0x03b4
+packetLen(0x03b4, -1)
+
+// Packet: 0x03b5
+packetLen(0x03b5, -1)
+
+// Packet: 0x03b6
+packetLen(0x03b6, -1)
+
+// Packet: 0x03b7
+packetLen(0x03b7, -1)
+
+// Packet: 0x03b8
+packetLen(0x03b8, -1)
+
+// Packet: 0x03b9
+packetLen(0x03b9, -1)
+
+// Packet: 0x03ba
+packetLen(0x03ba, -1)
+
+// Packet: 0x03bb
+packetLen(0x03bb, -1)
+
+// Packet: 0x03bc
+packetLen(0x03bc, -1)
+
+// Packet: 0x03bd
+packetLen(0x03bd, -1)
+
+// Packet: 0x03be
+packetLen(0x03be, -1)
+
+// Packet: 0x03bf
+packetLen(0x03bf, -1)
+
+// Packet: 0x03c0
+packetLen(0x03c0, -1)
+
+// Packet: 0x03c1
+packetLen(0x03c1, -1)
+
+// Packet: 0x03c2
+packetLen(0x03c2, -1)
+
+// Packet: 0x03c3
+packetLen(0x03c3, -1)
+
+// Packet: 0x03c4
+packetLen(0x03c4, -1)
+
+// Packet: 0x03c5
+packetLen(0x03c5, -1)
+
+// Packet: 0x03c6
+packetLen(0x03c6, -1)
+
+// Packet: 0x03c7
+packetLen(0x03c7, -1)
+
+// Packet: 0x03c8
+packetLen(0x03c8, -1)
+
+// Packet: 0x03c9
+packetLen(0x03c9, -1)
+
+// Packet: 0x03ca
+packetLen(0x03ca, -1)
+
+// Packet: 0x03cb
+packetLen(0x03cb, -1)
+
+// Packet: 0x03cc
+packetLen(0x03cc, -1)
+
+// Packet: 0x03cd
+packetLen(0x03cd, -1)
+
+// Packet: 0x03ce
+packetLen(0x03ce, -1)
+
+// Packet: 0x03cf
+packetLen(0x03cf, -1)
+
+// Packet: 0x03d0
+packetLen(0x03d0, -1)
+
+// Packet: 0x03d1
+packetLen(0x03d1, -1)
+
+// Packet: 0x03d2
+packetLen(0x03d2, -1)
+
+// Packet: 0x03d3
+packetLen(0x03d3, -1)
+
+// Packet: 0x03d4
+packetLen(0x03d4, -1)
+
+// Packet: 0x03d5
+packetLen(0x03d5, -1)
+
+// Packet: 0x03d6
+packetLen(0x03d6, -1)
+
+// Packet: 0x03d7
+packetLen(0x03d7, -1)
+
+// Packet: 0x03d8
+packetLen(0x03d8, -1)
+
+// Packet: 0x03d9
+packetLen(0x03d9, -1)
+
+// Packet: 0x03da
+packetLen(0x03da, -1)
+
+// Packet: 0x03db
+packetLen(0x03db, -1)
+
+// Packet: 0x03dc
+packetLen(0x03dc, -1)
+
+// Packet: 0x03dd
+packetLen(0x03dd, 18) // AHC_GAME_GUARD
+
+// Packet: 0x03de
+packetLen(0x03de, 18) // CAH_ACK_GAME_GUARD
+
+// Packet: 0x03e2
+packetLen(0x03e2, -1)
+
+// Packet: 0x03e3
+packetLen(0x03e3, -1)
+
+// Packet: 0x03e4
+packetLen(0x03e4, -1)
+
+// Packet: 0x03e5
+packetLen(0x03e5, -1)
+
+// Packet: 0x03e6
+packetLen(0x03e6, -1)
+
+// Packet: 0x03e7
+packetLen(0x03e7, -1)
+
+// Packet: 0x03e8
+packetLen(0x03e8, -1)
+
+// Packet: 0x03e9
+packetLen(0x03e9, -1)
+
+// Packet: 0x03ea
+packetLen(0x03ea, -1)
+
+// Packet: 0x03eb
+packetLen(0x03eb, -1)
+
+// Packet: 0x03ec
+packetLen(0x03ec, -1)
+
+// Packet: 0x03ed
+packetLen(0x03ed, -1)
+
+// Packet: 0x03ee
+packetLen(0x03ee, -1)
+
+// Packet: 0x03ef
+packetLen(0x03ef, -1)
+
+// Packet: 0x03f0
+packetLen(0x03f0, -1)
+
+// Packet: 0x03f1
+packetLen(0x03f1, -1)
+
+// Packet: 0x03f2
+packetLen(0x03f2, -1)
+
+// Packet: 0x03f3
+packetLen(0x03f3, -1)
+
+// Packet: 0x03f4
+packetLen(0x03f4, -1)
+
+// Packet: 0x03f5
+packetLen(0x03f5, -1)
+
+// Packet: 0x03f6
+packetLen(0x03f6, -1)
+
+// Packet: 0x03f7
+packetLen(0x03f7, -1)
+
+// Packet: 0x03f8
+packetLen(0x03f8, -1)
+
+// Packet: 0x03f9
+packetLen(0x03f9, -1)
+
+// Packet: 0x03fa
+packetLen(0x03fa, -1)
+
+// Packet: 0x03fb
+packetLen(0x03fb, -1)
+
+// Packet: 0x03fc
+packetLen(0x03fc, -1)
+
+// Packet: 0x03fd
+packetLen(0x03fd, -1)
+
+// Packet: 0x03fe
+packetLen(0x03fe, -1)
+
+// Packet: 0x03ff
+packetLen(0x03ff, -1)
+
+// Packet: 0x0400
+packetLen(0x0400, -1)
+
+// Packet: 0x0401
+packetLen(0x0401, -1)
+
+// Packet: 0x0402
+packetLen(0x0402, -1)
+
+// Packet: 0x0403
+packetLen(0x0403, -1)
+
+// Packet: 0x0404
+packetLen(0x0404, -1)
+
+// Packet: 0x0405
+packetLen(0x0405, -1)
+
+// Packet: 0x0406
+packetLen(0x0406, -1)
+
+// Packet: 0x0407
+packetLen(0x0407, -1)
+
+// Packet: 0x0408
+packetLen(0x0408, -1)
+
+// Packet: 0x0409
+packetLen(0x0409, -1)
+
+// Packet: 0x040a
+packetLen(0x040a, -1)
+
+// Packet: 0x040b
+packetLen(0x040b, -1)
+
+// Packet: 0x040c
+packetLen(0x040c, -1)
+
+// Packet: 0x040d
+packetLen(0x040d, -1)
+
+// Packet: 0x040e
+packetLen(0x040e, -1)
+
+// Packet: 0x040f
+packetLen(0x040f, -1)
+
+// Packet: 0x0410
+packetLen(0x0410, -1)
+
+// Packet: 0x0411
+packetLen(0x0411, -1)
+
+// Packet: 0x0412
+packetLen(0x0412, -1)
+
+// Packet: 0x0413
+packetLen(0x0413, -1)
+
+// Packet: 0x0414
+packetLen(0x0414, -1)
+
+// Packet: 0x0415
+packetLen(0x0415, -1)
+
+// Packet: 0x0416
+packetLen(0x0416, -1)
+
+// Packet: 0x0417
+packetLen(0x0417, -1)
+
+// Packet: 0x0418
+packetLen(0x0418, -1)
+
+// Packet: 0x0419
+packetLen(0x0419, -1)
+
+// Packet: 0x041a
+packetLen(0x041a, -1)
+
+// Packet: 0x041b
+packetLen(0x041b, -1)
+
+// Packet: 0x041c
+packetLen(0x041c, -1)
+
+// Packet: 0x041d
+packetLen(0x041d, -1)
+
+// Packet: 0x041e
+packetLen(0x041e, -1)
+
+// Packet: 0x041f
+packetLen(0x041f, -1)
+
+// Packet: 0x0420
+packetLen(0x0420, -1)
+
+// Packet: 0x0421
+packetLen(0x0421, -1)
+
+// Packet: 0x0422
+packetLen(0x0422, -1)
+
+// Packet: 0x0423
+packetLen(0x0423, -1)
+
+// Packet: 0x0424
+packetLen(0x0424, -1)
+
+// Packet: 0x0425
+packetLen(0x0425, -1)
+
+// Packet: 0x0426
+packetLen(0x0426, -1)
+
+// Packet: 0x0427
+packetLen(0x0427, -1)
+
+// Packet: 0x0428
+packetLen(0x0428, -1)
+
+// Packet: 0x0429
+packetLen(0x0429, -1)
+
+// Packet: 0x042a
+packetLen(0x042a, -1)
+
+// Packet: 0x042b
+packetLen(0x042b, -1)
+
+// Packet: 0x042c
+packetLen(0x042c, -1)
+
+// Packet: 0x042d
+packetLen(0x042d, -1)
+
+// Packet: 0x042e
+packetLen(0x042e, -1)
+
+// Packet: 0x042f
+packetLen(0x042f, -1)
+
+// Packet: 0x0430
+packetLen(0x0430, -1)
+
+// Packet: 0x0431
+packetLen(0x0431, -1)
+
+// Packet: 0x0432
+packetLen(0x0432, -1)
+
+// Packet: 0x0433
+packetLen(0x0433, -1)
+
+// Packet: 0x0434
+packetLen(0x0434, -1)
+
+// Packet: 0x0435
+packetLen(0x0435, -1)
+
+// Packet: 0x0436
+packetLen(0x0436, 19) // CZ_ENTER2
+
+// Packet: 0x0437
+packetLen(0x0437, 7) // CZ_REQUEST_ACT2
+
+// Packet: 0x0438
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+
+// Packet: 0x0439
+packetLen(0x0439, 8) // CZ_USE_ITEM2
+
+// Packet: 0x043d
+packetLen(0x043d, 8) // ZC_SKILL_POSTDELAY
+
+// Packet: 0x043e
+packetLen(0x043e, -1) // ZC_SKILL_POSTDELAY_LIST
+
+// Packet: 0x043f
+#if PACKETVER >= 20090114
+packetLen(0x043f, 25) // ZC_MSG_STATE_CHANGE2
+#elif PACKETVER >= 20090107
+packetLen(0x043f, 8) // ZC_MSG_STATE_CHANGE2
+#endif
+
+// Packet: 0x0440
+packetLen(0x0440, 10) // ZC_MILLENNIUMSHIELD
+
+// Packet: 0x0441
+packetLen(0x0441, 4) // ZC_SKILLINFO_DELETE
+
+// Packet: 0x0442
+packetLen(0x0442, 8) // ZC_SKILL_SELECT_REQUEST
+
+// Packet: 0x0443
+packetLen(0x0443, 8) // CZ_SKILL_SELECT_RESPONSE
+
+// Packet: 0x0444
+#if PACKETVER >= 20090114
+packetLen(0x0444, -1) // ZC_SIMPLE_CASH_POINT_ITEMLIST
+#endif
+
+// Packet: 0x0445
+#if PACKETVER >= 20090114
+packetLen(0x0445, 10) // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+#endif
+
+// Packet: 0x0446
+#if PACKETVER >= 20090218
+packetLen(0x0446, 14) // ZC_QUEST_NOTIFY_EFFECT
+#endif
+
+// Packet: 0x0447
+#if PACKETVER >= 20090520
+packetLen(0x0447, 2) // CZ_BLOCKING_PLAY_CANCEL
+#endif
+
+// Packet: 0x0448
+#if PACKETVER >= 20090225
+packetLen(0x0448, -1) // HC_CHARACTER_LIST
+#endif
+
+// Packet: 0x0449
+#if PACKETVER >= 20090330
+packetLen(0x0449, 4) // ZC_HACKSH_ERROR_MSG
+#endif
+
+// Packet: 0x044a
+#if PACKETVER >= 20090408
+packetLen(0x044a, 6) // CZ_CLIENT_VERSION
+#endif
+
+// Packet: 0x044b
+#if PACKETVER >= 20090514
+packetLen(0x044b, 2) // CZ_CLOSE_SIMPLECASH_SHOP
+#endif
+
+// Packet: 0x07d0
+#if PACKETVER >= 20090520
+packetLen(0x07d0, 6) // ZC_ES_RESULT
+#endif
+
+// Packet: 0x07d1
+#if PACKETVER >= 20090520
+packetLen(0x07d1, 2) // CZ_ES_GET_LIST
+#endif
+
+// Packet: 0x07d2
+#if PACKETVER >= 20090520
+packetLen(0x07d2, -1) // ZC_ES_LIST
+#endif
+
+// Packet: 0x07d3
+#if PACKETVER >= 20090520
+packetLen(0x07d3, 4) // CZ_ES_CHOOSE
+#endif
+
+// Packet: 0x07d4
+#if PACKETVER >= 20090520
+packetLen(0x07d4, 4) // CZ_ES_CANCEL
+#endif
+
+// Packet: 0x07d5
+#if PACKETVER >= 20090520
+packetLen(0x07d5, 4) // ZC_ES_READY
+#endif
+
+// Packet: 0x07d6
+#if PACKETVER >= 20090520
+packetLen(0x07d6, 4) // ZC_ES_GOTO
+#endif
+
+// Packet: 0x07d7
+#if PACKETVER >= 20090603
+packetLen(0x07d7, 8) // CZ_GROUPINFO_CHANGE_V2
+#endif
+
+// Packet: 0x07d8
+#if PACKETVER >= 20090603
+packetLen(0x07d8, 8) // ZC_REQ_GROUPINFO_CHANGE_V2
+#endif
+
+// Packet: 0x07d9
+#if PACKETVER >= 20090617
+packetLen(0x07d9, 268) // ZC_SHORTCUT_KEY_LIST_V2
+#elif PACKETVER >= 20090603
+packetLen(0x07d9, 254) // ZC_SHORTCUT_KEY_LIST_V2
+#endif
+
+// Packet: 0x07da
+#if PACKETVER >= 20090603
+packetLen(0x07da, 6) // CZ_CHANGE_GROUP_MASTER
+#endif
+
+// Packet: 0x07db
+#if PACKETVER >= 20090610
+packetLen(0x07db, 8) // ZC_HO_PAR_CHANGE
+#endif
+
+// Packet: 0x07dc
+#if PACKETVER >= 20090617
+packetLen(0x07dc, 6) // CZ_SEEK_PARTY
+#endif
+
+// Packet: 0x07dd
+#if PACKETVER >= 20090617
+packetLen(0x07dd, 54) // ZC_SEEK_PARTY
+#endif
+
+// Packet: 0x07de
+#if PACKETVER >= 20090617
+packetLen(0x07de, 30) // CZ_SEEK_PARTY_MEMBER
+#endif
+
+// Packet: 0x07df
+#if PACKETVER >= 20090617
+packetLen(0x07df, 54) // ZC_SEEK_PARTY_MEMBER
+#endif
+
+
+#endif /* COMMON_PACKETS2009_LEN_SAK_H */
diff --git a/src/common/packets/packets2010_len_main.h b/src/common/packets/packets2010_len_main.h
new file mode 100644
index 000000000..32424bac8
--- /dev/null
+++ b/src/common/packets/packets2010_len_main.h
@@ -0,0 +1,5784 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2010_LEN_MAIN_H
+#define COMMON_PACKETS2010_LEN_MAIN_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+#if PACKETVER >= 20100803
+packetLen(0x006d, 134) // HC_ACCEPT_MAKECHAR
+#elif PACKETVER >= 20100728
+packetLen(0x006d, 114) // HC_ACCEPT_MAKECHAR
+#elif PACKETVER >= 20100727
+packetLen(0x006d, 130) // HC_ACCEPT_MAKECHAR
+#elif PACKETVER >= 20100105
+packetLen(0x006d, 114) // HC_ACCEPT_MAKECHAR
+#endif
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 22) // CZ_ENTER
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 44) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 10) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, 14)
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+packetLen(0x0094, 19) // CZ_REQNAME
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+packetLen(0x00a7, 9)
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+#if PACKETVER >= 20101123
+packetLen(0x00aa, 9) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20100105
+packetLen(0x00aa, 7) // ZC_REQ_WEAR_EQUIP_ACK
+#endif
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+packetLen(0x00f7, 17) // CZ_REQUEST_TIME
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+packetLen(0x0113, 25) // CZ_USE_SKILL
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0158
+#if PACKETVER >= 20100817
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0158, -1) // ZC_ACK_OPEN_MEMBER_INFO
+#endif
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 37) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+#if PACKETVER >= 20101228
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20101221
+packetLen(0x0202, 18) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20101130
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20101123
+packetLen(0x0202, 90) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20100105
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+
+// Packet: 0x022b
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+
+// Packet: 0x022c
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+
+// Packet: 0x022d
+#if PACKETVER >= 20101214
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20101207
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20101130
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20101123
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+#elif PACKETVER >= 20100105
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+#endif
+
+// Packet: 0x022e
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+
+// Packet: 0x022f
+packetLen(0x022f, 5) // ZC_FEED_MER
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+#if PACKETVER >= 20101228
+packetLen(0x023b, 8) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20101221
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20101214
+packetLen(0x023b, 6) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20101207
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20101123
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20100105
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+#endif
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+
+// Packet: 0x0275
+packetLen(0x0275, 37) // CH_ENTER2
+
+// Packet: 0x0276
+packetLen(0x0276, -1) // AC_ACCEPT_LOGIN2
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+#if PACKETVER >= 20101228
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20101221
+packetLen(0x0281, 26) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20101123
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20100105
+packetLen(0x0281, 4) // CZ_GANGSI_RANK
+#endif
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+
+// Packet: 0x0288
+#if PACKETVER >= 20100803
+packetLen(0x0288, -1) // CZ_PC_BUY_CASH_POINT_ITEM
+#elif PACKETVER >= 20100105
+packetLen(0x0288, 10) // CZ_PC_BUY_CASH_POINT_ITEM
+#endif
+
+// Packet: 0x0289
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0296
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0297
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0298
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+
+// Packet: 0x0299
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+
+// Packet: 0x029a
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+
+// Packet: 0x029b
+packetLen(0x029b, 80) // ZC_MER_INIT
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a5
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+
+// Packet: 0x02a6
+packetLen(0x02a6, -1) // ZC_HACKSH_CPX_MSG
+
+// Packet: 0x02a7
+packetLen(0x02a7, -1) // CZ_HACKSH_CPX_MSG
+
+// Packet: 0x02aa
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+
+// Packet: 0x02ab
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+
+// Packet: 0x02ac
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+
+// Packet: 0x02ad
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+
+// Packet: 0x02b0
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+
+// Packet: 0x02b1
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+
+// Packet: 0x02b2
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+
+// Packet: 0x02b3
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+
+// Packet: 0x02b4
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+
+// Packet: 0x02b5
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+
+// Packet: 0x02b6
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+
+// Packet: 0x02b7
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+
+// Packet: 0x02b8
+packetLen(0x02b8, 22) // ZC_ITEM_PICKUP_PARTY
+
+// Packet: 0x02b9
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+
+// Packet: 0x02ba
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+
+// Packet: 0x02bb
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+
+// Packet: 0x02bc
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+
+// Packet: 0x02c1
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+
+// Packet: 0x02c2
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+
+// Packet: 0x02c4
+#if PACKETVER >= 20101123
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20100105
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+#endif
+
+// Packet: 0x02c5
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c6
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+
+// Packet: 0x02c7
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c8
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+
+// Packet: 0x02c9
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+
+// Packet: 0x02ca
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+
+// Packet: 0x02cb
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+
+// Packet: 0x02cc
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+
+// Packet: 0x02cd
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+
+// Packet: 0x02ce
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+
+// Packet: 0x02cf
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+
+// Packet: 0x02d0
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d1
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d2
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d3
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+
+// Packet: 0x02d4
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+
+// Packet: 0x02d5
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+
+// Packet: 0x02d6
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d7
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d8
+packetLen(0x02d8, 10) // CZ_CONFIG
+
+// Packet: 0x02d9
+packetLen(0x02d9, 10) // ZC_CONFIG
+
+// Packet: 0x02da
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+
+// Packet: 0x02db
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+
+// Packet: 0x02dc
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+
+// Packet: 0x02dd
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+
+// Packet: 0x02de
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+
+// Packet: 0x02df
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+
+// Packet: 0x02e0
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+
+// Packet: 0x02e1
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+
+// Packet: 0x02e2
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+
+// Packet: 0x02e3
+packetLen(0x02e3, 22) // CZ_USE_SKILL_NEW_JAPEN
+
+// Packet: 0x02e4
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+
+// Packet: 0x02e5
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+
+// Packet: 0x02e6
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+
+// Packet: 0x02e7
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+
+// Packet: 0x02e8
+packetLen(0x02e8, -1) // ZC_NORMAL_ITEMLIST3
+
+// Packet: 0x02e9
+packetLen(0x02e9, -1) // ZC_CART_NORMAL_ITEMLIST3
+
+// Packet: 0x02ea
+packetLen(0x02ea, -1) // ZC_STORE_NORMAL_ITEMLIST3
+
+// Packet: 0x02eb
+packetLen(0x02eb, 13) // ZC_ACCEPT_ENTER2
+
+// Packet: 0x02ec
+packetLen(0x02ec, 67) // ZC_NOTIFY_MOVEENTRY4
+
+// Packet: 0x02ed
+packetLen(0x02ed, 59) // ZC_NOTIFY_NEWENTRY4
+
+// Packet: 0x02ee
+packetLen(0x02ee, 60) // ZC_NOTIFY_STANDENTRY4
+
+// Packet: 0x02ef
+packetLen(0x02ef, 8) // ZC_NOTIFY_FONT
+
+// Packet: 0x02f0
+packetLen(0x02f0, 10) // ZC_PROGRESS
+
+// Packet: 0x02f1
+packetLen(0x02f1, 2) // CZ_PROGRESS
+
+// Packet: 0x02f2
+packetLen(0x02f2, 2) // ZC_PROGRESS_CANCEL
+
+// Packet: 0x02f3
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+#endif
+
+// Packet: 0x02f4
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x02f4, -1) // ZC_IRMAIL_SEND_RES
+#endif
+
+// Packet: 0x02f5
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x02f5, -1) // ZC_IRMAIL_NOTIFY
+#endif
+
+// Packet: 0x02f6
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x02f6, -1) // CZ_IRMAIL_LIST
+#endif
+
+// Packet: 0x02f7
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x02f7, -1)
+#endif
+
+// Packet: 0x02f8
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x02f8, -1)
+#endif
+
+// Packet: 0x02f9
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x02f9, -1)
+#endif
+
+// Packet: 0x02fa
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x02fa, -1)
+#endif
+
+// Packet: 0x02fb
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x02fb, -1)
+#endif
+
+// Packet: 0x02fc
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x02fc, -1)
+#endif
+
+// Packet: 0x02fd
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x02fd, -1)
+#endif
+
+// Packet: 0x02fe
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x02fe, -1)
+#endif
+
+// Packet: 0x02ff
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x02ff, -1)
+#endif
+
+// Packet: 0x0300
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0300, -1)
+#endif
+
+// Packet: 0x0301
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0301, -1)
+#endif
+
+// Packet: 0x0302
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0302, -1)
+#endif
+
+// Packet: 0x0303
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0303, -1)
+#endif
+
+// Packet: 0x0304
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0304, -1)
+#endif
+
+// Packet: 0x0305
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0305, -1)
+#endif
+
+// Packet: 0x0306
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0306, -1)
+#endif
+
+// Packet: 0x0307
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0307, -1)
+#endif
+
+// Packet: 0x0308
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0308, -1)
+#endif
+
+// Packet: 0x0309
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0309, -1)
+#endif
+
+// Packet: 0x030a
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x030a, -1)
+#endif
+
+// Packet: 0x030b
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x030b, -1)
+#endif
+
+// Packet: 0x030c
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x030c, -1)
+#endif
+
+// Packet: 0x030d
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x030d, -1)
+#endif
+
+// Packet: 0x030e
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x030e, -1)
+#endif
+
+// Packet: 0x030f
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x030f, -1)
+#endif
+
+// Packet: 0x0310
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0310, -1)
+#endif
+
+// Packet: 0x0311
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0311, -1)
+#endif
+
+// Packet: 0x0312
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0312, -1)
+#endif
+
+// Packet: 0x0313
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0313, -1)
+#endif
+
+// Packet: 0x0314
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0314, -1)
+#endif
+
+// Packet: 0x0315
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0315, -1)
+#endif
+
+// Packet: 0x0316
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0316, -1)
+#endif
+
+// Packet: 0x0317
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0317, -1)
+#endif
+
+// Packet: 0x0318
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0318, -1)
+#endif
+
+// Packet: 0x0319
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0319, -1)
+#endif
+
+// Packet: 0x031a
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x031a, -1)
+#endif
+
+// Packet: 0x031b
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x031b, -1)
+#endif
+
+// Packet: 0x031c
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x031c, -1)
+#endif
+
+// Packet: 0x031d
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x031d, -1)
+#endif
+
+// Packet: 0x031e
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x031e, -1)
+#endif
+
+// Packet: 0x031f
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x031f, -1)
+#endif
+
+// Packet: 0x0320
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0320, -1)
+#endif
+
+// Packet: 0x0321
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0321, -1)
+#endif
+
+// Packet: 0x0322
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0322, -1)
+#endif
+
+// Packet: 0x0323
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0323, -1)
+#endif
+
+// Packet: 0x0324
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0324, -1)
+#endif
+
+// Packet: 0x0325
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0325, -1)
+#endif
+
+// Packet: 0x0326
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0326, -1)
+#endif
+
+// Packet: 0x0327
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0327, -1)
+#endif
+
+// Packet: 0x0328
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0328, -1)
+#endif
+
+// Packet: 0x0329
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0329, -1)
+#endif
+
+// Packet: 0x032a
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x032a, -1)
+#endif
+
+// Packet: 0x032b
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x032b, -1)
+#endif
+
+// Packet: 0x032c
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x032c, -1)
+#endif
+
+// Packet: 0x032d
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x032d, -1)
+#endif
+
+// Packet: 0x032e
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x032e, -1)
+#endif
+
+// Packet: 0x032f
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x032f, -1)
+#endif
+
+// Packet: 0x0330
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0330, -1)
+#endif
+
+// Packet: 0x0331
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0331, -1)
+#endif
+
+// Packet: 0x0332
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0332, -1)
+#endif
+
+// Packet: 0x0333
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0333, -1)
+#endif
+
+// Packet: 0x0334
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0334, -1)
+#endif
+
+// Packet: 0x0335
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0335, -1)
+#endif
+
+// Packet: 0x0336
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0336, -1)
+#endif
+
+// Packet: 0x0337
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0337, -1)
+#endif
+
+// Packet: 0x0338
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0338, -1)
+#endif
+
+// Packet: 0x0339
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0339, -1)
+#endif
+
+// Packet: 0x033a
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x033a, -1)
+#endif
+
+// Packet: 0x033b
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x033b, -1)
+#endif
+
+// Packet: 0x033c
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x033c, -1)
+#endif
+
+// Packet: 0x033d
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x033d, -1)
+#endif
+
+// Packet: 0x033e
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x033e, -1)
+#endif
+
+// Packet: 0x033f
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x033f, -1)
+#endif
+
+// Packet: 0x0340
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0340, -1)
+#endif
+
+// Packet: 0x0341
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0341, -1)
+#endif
+
+// Packet: 0x0342
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0342, -1)
+#endif
+
+// Packet: 0x0343
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0343, -1)
+#endif
+
+// Packet: 0x0344
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0344, -1)
+#endif
+
+// Packet: 0x0345
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0345, -1)
+#endif
+
+// Packet: 0x0346
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0346, -1)
+#endif
+
+// Packet: 0x0347
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0347, -1)
+#endif
+
+// Packet: 0x0348
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0348, -1)
+#endif
+
+// Packet: 0x0349
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0349, -1)
+#endif
+
+// Packet: 0x034a
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x034a, -1)
+#endif
+
+// Packet: 0x034b
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x034b, -1)
+#endif
+
+// Packet: 0x034c
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x034c, -1)
+#endif
+
+// Packet: 0x034d
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x034d, -1)
+#endif
+
+// Packet: 0x034e
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x034e, -1)
+#endif
+
+// Packet: 0x034f
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x034f, -1)
+#endif
+
+// Packet: 0x0350
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0350, -1)
+#endif
+
+// Packet: 0x0351
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0351, -1)
+#endif
+
+// Packet: 0x0352
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0352, -1)
+#endif
+
+// Packet: 0x0353
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0353, -1)
+#endif
+
+// Packet: 0x0354
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0354, -1)
+#endif
+
+// Packet: 0x0355
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0355, -1)
+#endif
+
+// Packet: 0x0356
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0356, -1)
+#endif
+
+// Packet: 0x0357
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0357, -1)
+#endif
+
+// Packet: 0x0358
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0358, -1)
+#endif
+
+// Packet: 0x0359
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0359, -1)
+#endif
+
+// Packet: 0x035a
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x035a, -1)
+#endif
+
+// Packet: 0x035b
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x035b, -1)
+#endif
+
+// Packet: 0x035c
+packetLen(0x035c, 2) // CZ_OPEN_SIMPLE_CASHSHOP_ITEMLIST
+
+// Packet: 0x035d
+packetLen(0x035d, -1) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+
+// Packet: 0x035e
+packetLen(0x035e, 2) // CZ_CLOSE_WINDOW
+
+// Packet: 0x035f
+#if PACKETVER >= 20101221
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20101214
+packetLen(0x035f, 18) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20101130
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20101123
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20100105
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+#endif
+
+// Packet: 0x0360
+#if PACKETVER >= 20101214
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20101207
+packetLen(0x0360, -1) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20101123
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20100105
+packetLen(0x0360, -1) // CZ_REQUEST_TIME2
+#endif
+
+// Packet: 0x0361
+#if PACKETVER >= 20101228
+packetLen(0x0361, 10) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20101221
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20101214
+packetLen(0x0361, 6) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20101130
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20101123
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20100105
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#endif
+
+// Packet: 0x0362
+#if PACKETVER >= 20101221
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20101214
+packetLen(0x0362, 90) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20101207
+packetLen(0x0362, 5) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20101130
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20100105
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#endif
+
+// Packet: 0x0363
+#if PACKETVER >= 20101228
+packetLen(0x0363, 12) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20101221
+packetLen(0x0363, 19) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20101207
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20101130
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20101123
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20100105
+packetLen(0x0363, -1) // CZ_ITEM_THROW2
+#endif
+
+// Packet: 0x0364
+#if PACKETVER >= 20101214
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20101207
+packetLen(0x0364, 12) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20101123
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20100105
+packetLen(0x0364, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#endif
+
+// Packet: 0x0365
+#if PACKETVER >= 20101228
+packetLen(0x0365, 6) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20101130
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20101123
+packetLen(0x0365, 36) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20100105
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#endif
+
+// Packet: 0x0366
+#if PACKETVER >= 20101221
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20101214
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20101207
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20101130
+packetLen(0x0366, 26) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20101123
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20100105
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#endif
+
+// Packet: 0x0367
+#if PACKETVER >= 20101228
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20101221
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20101123
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20100105
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#endif
+
+// Packet: 0x0368
+#if PACKETVER >= 20101228
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20101221
+packetLen(0x0368, 10) // CZ_REQNAME2
+#elif PACKETVER >= 20101214
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20101207
+packetLen(0x0368, 4) // CZ_REQNAME2
+#elif PACKETVER >= 20101130
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20101123
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20100105
+packetLen(0x0368, -1) // CZ_REQNAME2
+#endif
+
+// Packet: 0x0369
+#if PACKETVER >= 20101228
+packetLen(0x0369, 26) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20101207
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20101130
+packetLen(0x0369, 90) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20101123
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20100105
+packetLen(0x0369, -1) // CZ_REQNAME_BYGID2
+#endif
+
+// Packet: 0x036a
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x036a, -1)
+#endif
+
+// Packet: 0x036b
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x036b, -1)
+#endif
+
+// Packet: 0x036c
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x036c, -1)
+#endif
+
+// Packet: 0x036d
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x036d, -1)
+#endif
+
+// Packet: 0x036e
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x036e, -1)
+#endif
+
+// Packet: 0x036f
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x036f, -1)
+#endif
+
+// Packet: 0x0370
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0370, -1)
+#endif
+
+// Packet: 0x0371
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0371, -1)
+#endif
+
+// Packet: 0x0372
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0372, -1)
+#endif
+
+// Packet: 0x0373
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0373, -1)
+#endif
+
+// Packet: 0x0374
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0374, -1)
+#endif
+
+// Packet: 0x0375
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0375, -1)
+#endif
+
+// Packet: 0x0376
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0376, -1)
+#endif
+
+// Packet: 0x0377
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0377, -1)
+#endif
+
+// Packet: 0x0378
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0378, -1)
+#endif
+
+// Packet: 0x0379
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0379, -1)
+#endif
+
+// Packet: 0x037a
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x037a, -1)
+#endif
+
+// Packet: 0x037b
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x037b, -1)
+#endif
+
+// Packet: 0x037c
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x037c, -1)
+#endif
+
+// Packet: 0x037d
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x037d, -1)
+#endif
+
+// Packet: 0x037e
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x037e, -1)
+#endif
+
+// Packet: 0x037f
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x037f, -1)
+#endif
+
+// Packet: 0x0380
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0380, -1)
+#endif
+
+// Packet: 0x0381
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0381, -1)
+#endif
+
+// Packet: 0x0382
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0382, -1)
+#endif
+
+// Packet: 0x0383
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0383, -1)
+#endif
+
+// Packet: 0x0384
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0384, -1)
+#endif
+
+// Packet: 0x0385
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0385, -1)
+#endif
+
+// Packet: 0x0386
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0386, -1)
+#endif
+
+// Packet: 0x0387
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0387, -1)
+#endif
+
+// Packet: 0x0388
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0388, -1)
+#endif
+
+// Packet: 0x0389
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0389, -1)
+#endif
+
+// Packet: 0x038a
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x038a, -1)
+#endif
+
+// Packet: 0x038b
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x038b, -1)
+#endif
+
+// Packet: 0x038c
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x038c, -1)
+#endif
+
+// Packet: 0x038d
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x038d, -1)
+#endif
+
+// Packet: 0x038e
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x038e, -1)
+#endif
+
+// Packet: 0x038f
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x038f, -1)
+#endif
+
+// Packet: 0x0390
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0390, -1)
+#endif
+
+// Packet: 0x0391
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0391, -1)
+#endif
+
+// Packet: 0x0392
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0392, -1)
+#endif
+
+// Packet: 0x0393
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0393, -1)
+#endif
+
+// Packet: 0x0394
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0394, -1)
+#endif
+
+// Packet: 0x0395
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0395, -1)
+#endif
+
+// Packet: 0x0396
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0396, -1)
+#endif
+
+// Packet: 0x0397
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0397, -1)
+#endif
+
+// Packet: 0x0398
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0398, -1)
+#endif
+
+// Packet: 0x0399
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0399, -1)
+#endif
+
+// Packet: 0x039a
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x039a, -1)
+#endif
+
+// Packet: 0x039b
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x039b, -1)
+#endif
+
+// Packet: 0x039c
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x039c, -1)
+#endif
+
+// Packet: 0x039d
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x039d, -1)
+#endif
+
+// Packet: 0x039e
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x039e, -1)
+#endif
+
+// Packet: 0x039f
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x039f, -1)
+#endif
+
+// Packet: 0x03a0
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03a0, -1)
+#endif
+
+// Packet: 0x03a1
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03a1, -1)
+#endif
+
+// Packet: 0x03a2
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03a2, -1)
+#endif
+
+// Packet: 0x03a3
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03a3, -1)
+#endif
+
+// Packet: 0x03a4
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03a4, -1)
+#endif
+
+// Packet: 0x03a5
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03a5, -1)
+#endif
+
+// Packet: 0x03a6
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03a6, -1)
+#endif
+
+// Packet: 0x03a7
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03a7, -1)
+#endif
+
+// Packet: 0x03a8
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03a8, -1)
+#endif
+
+// Packet: 0x03a9
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03a9, -1)
+#endif
+
+// Packet: 0x03aa
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03aa, -1)
+#endif
+
+// Packet: 0x03ab
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03ab, -1)
+#endif
+
+// Packet: 0x03ac
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03ac, -1)
+#endif
+
+// Packet: 0x03ad
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03ad, -1)
+#endif
+
+// Packet: 0x03ae
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03ae, -1)
+#endif
+
+// Packet: 0x03af
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03af, -1)
+#endif
+
+// Packet: 0x03b0
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03b0, -1)
+#endif
+
+// Packet: 0x03b1
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03b1, -1)
+#endif
+
+// Packet: 0x03b2
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03b2, -1)
+#endif
+
+// Packet: 0x03b3
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03b3, -1)
+#endif
+
+// Packet: 0x03b4
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03b4, -1)
+#endif
+
+// Packet: 0x03b5
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03b5, -1)
+#endif
+
+// Packet: 0x03b6
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03b6, -1)
+#endif
+
+// Packet: 0x03b7
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03b7, -1)
+#endif
+
+// Packet: 0x03b8
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03b8, -1)
+#endif
+
+// Packet: 0x03b9
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03b9, -1)
+#endif
+
+// Packet: 0x03ba
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03ba, -1)
+#endif
+
+// Packet: 0x03bb
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03bb, -1)
+#endif
+
+// Packet: 0x03bc
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03bc, -1)
+#endif
+
+// Packet: 0x03bd
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03bd, -1)
+#endif
+
+// Packet: 0x03be
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03be, -1)
+#endif
+
+// Packet: 0x03bf
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03bf, -1)
+#endif
+
+// Packet: 0x03c0
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03c0, -1)
+#endif
+
+// Packet: 0x03c1
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03c1, -1)
+#endif
+
+// Packet: 0x03c2
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03c2, -1)
+#endif
+
+// Packet: 0x03c3
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03c3, -1)
+#endif
+
+// Packet: 0x03c4
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03c4, -1)
+#endif
+
+// Packet: 0x03c5
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03c5, -1)
+#endif
+
+// Packet: 0x03c6
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03c6, -1)
+#endif
+
+// Packet: 0x03c7
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03c7, -1)
+#endif
+
+// Packet: 0x03c8
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03c8, -1)
+#endif
+
+// Packet: 0x03c9
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03c9, -1)
+#endif
+
+// Packet: 0x03ca
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03ca, -1)
+#endif
+
+// Packet: 0x03cb
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03cb, -1)
+#endif
+
+// Packet: 0x03cc
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03cc, -1)
+#endif
+
+// Packet: 0x03cd
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03cd, -1)
+#endif
+
+// Packet: 0x03ce
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03ce, -1)
+#endif
+
+// Packet: 0x03cf
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03cf, -1)
+#endif
+
+// Packet: 0x03d0
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03d0, -1)
+#endif
+
+// Packet: 0x03d1
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03d1, -1)
+#endif
+
+// Packet: 0x03d2
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03d2, -1)
+#endif
+
+// Packet: 0x03d3
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03d3, -1)
+#endif
+
+// Packet: 0x03d4
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03d4, -1)
+#endif
+
+// Packet: 0x03d5
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03d5, -1)
+#endif
+
+// Packet: 0x03d6
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03d6, -1)
+#endif
+
+// Packet: 0x03d7
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03d7, -1)
+#endif
+
+// Packet: 0x03d8
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03d8, -1)
+#endif
+
+// Packet: 0x03d9
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03d9, -1)
+#endif
+
+// Packet: 0x03da
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03da, -1)
+#endif
+
+// Packet: 0x03db
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03db, -1)
+#endif
+
+// Packet: 0x03dc
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03dc, -1)
+#endif
+
+// Packet: 0x03dd
+packetLen(0x03dd, 18) // AHC_GAME_GUARD
+
+// Packet: 0x03de
+packetLen(0x03de, 18) // CAH_ACK_GAME_GUARD
+
+// Packet: 0x03e2
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03e2, -1)
+#endif
+
+// Packet: 0x03e3
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03e3, -1)
+#endif
+
+// Packet: 0x03e4
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03e4, -1)
+#endif
+
+// Packet: 0x03e5
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03e5, -1)
+#endif
+
+// Packet: 0x03e6
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03e6, -1)
+#endif
+
+// Packet: 0x03e7
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03e7, -1)
+#endif
+
+// Packet: 0x03e8
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03e8, -1)
+#endif
+
+// Packet: 0x03e9
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03e9, -1)
+#endif
+
+// Packet: 0x03ea
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03ea, -1)
+#endif
+
+// Packet: 0x03eb
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03eb, -1)
+#endif
+
+// Packet: 0x03ec
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03ec, -1)
+#endif
+
+// Packet: 0x03ed
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03ed, -1)
+#endif
+
+// Packet: 0x03ee
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03ee, -1)
+#endif
+
+// Packet: 0x03ef
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03ef, -1)
+#endif
+
+// Packet: 0x03f0
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03f0, -1)
+#endif
+
+// Packet: 0x03f1
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03f1, -1)
+#endif
+
+// Packet: 0x03f2
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03f2, -1)
+#endif
+
+// Packet: 0x03f3
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03f3, -1)
+#endif
+
+// Packet: 0x03f4
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03f4, -1)
+#endif
+
+// Packet: 0x03f5
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03f5, -1)
+#endif
+
+// Packet: 0x03f6
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03f6, -1)
+#endif
+
+// Packet: 0x03f7
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03f7, -1)
+#endif
+
+// Packet: 0x03f8
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03f8, -1)
+#endif
+
+// Packet: 0x03f9
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03f9, -1)
+#endif
+
+// Packet: 0x03fa
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03fa, -1)
+#endif
+
+// Packet: 0x03fb
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03fb, -1)
+#endif
+
+// Packet: 0x03fc
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03fc, -1)
+#endif
+
+// Packet: 0x03fd
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03fd, -1)
+#endif
+
+// Packet: 0x03fe
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03fe, -1)
+#endif
+
+// Packet: 0x03ff
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03ff, -1)
+#endif
+
+// Packet: 0x0400
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0400, -1)
+#endif
+
+// Packet: 0x0401
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0401, -1)
+#endif
+
+// Packet: 0x0402
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0402, -1)
+#endif
+
+// Packet: 0x0403
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0403, -1)
+#endif
+
+// Packet: 0x0404
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0404, -1)
+#endif
+
+// Packet: 0x0405
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0405, -1)
+#endif
+
+// Packet: 0x0406
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0406, -1)
+#endif
+
+// Packet: 0x0407
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0407, -1)
+#endif
+
+// Packet: 0x0408
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0408, -1)
+#endif
+
+// Packet: 0x0409
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0409, -1)
+#endif
+
+// Packet: 0x040a
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x040a, -1)
+#endif
+
+// Packet: 0x040b
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x040b, -1)
+#endif
+
+// Packet: 0x040c
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x040c, -1)
+#endif
+
+// Packet: 0x040d
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x040d, -1)
+#endif
+
+// Packet: 0x040e
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x040e, -1)
+#endif
+
+// Packet: 0x040f
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x040f, -1)
+#endif
+
+// Packet: 0x0410
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0410, -1)
+#endif
+
+// Packet: 0x0411
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0411, -1)
+#endif
+
+// Packet: 0x0412
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0412, -1)
+#endif
+
+// Packet: 0x0413
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0413, -1)
+#endif
+
+// Packet: 0x0414
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0414, -1)
+#endif
+
+// Packet: 0x0415
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0415, -1)
+#endif
+
+// Packet: 0x0416
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0416, -1)
+#endif
+
+// Packet: 0x0417
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0417, -1)
+#endif
+
+// Packet: 0x0418
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0418, -1)
+#endif
+
+// Packet: 0x0419
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0419, -1)
+#endif
+
+// Packet: 0x041a
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x041a, -1)
+#endif
+
+// Packet: 0x041b
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x041b, -1)
+#endif
+
+// Packet: 0x041c
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x041c, -1)
+#endif
+
+// Packet: 0x041d
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x041d, -1)
+#endif
+
+// Packet: 0x041e
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x041e, -1)
+#endif
+
+// Packet: 0x041f
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x041f, -1)
+#endif
+
+// Packet: 0x0420
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0420, -1)
+#endif
+
+// Packet: 0x0421
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0421, -1)
+#endif
+
+// Packet: 0x0422
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0422, -1)
+#endif
+
+// Packet: 0x0423
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0423, -1)
+#endif
+
+// Packet: 0x0424
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0424, -1)
+#endif
+
+// Packet: 0x0425
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0425, -1)
+#endif
+
+// Packet: 0x0426
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0426, -1)
+#endif
+
+// Packet: 0x0427
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0427, -1)
+#endif
+
+// Packet: 0x0428
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0428, -1)
+#endif
+
+// Packet: 0x0429
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0429, -1)
+#endif
+
+// Packet: 0x042a
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x042a, -1)
+#endif
+
+// Packet: 0x042b
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x042b, -1)
+#endif
+
+// Packet: 0x042c
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x042c, -1)
+#endif
+
+// Packet: 0x042d
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x042d, -1)
+#endif
+
+// Packet: 0x042e
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x042e, -1)
+#endif
+
+// Packet: 0x042f
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x042f, -1)
+#endif
+
+// Packet: 0x0430
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0430, -1)
+#endif
+
+// Packet: 0x0431
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0431, -1)
+#endif
+
+// Packet: 0x0432
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0432, -1)
+#endif
+
+// Packet: 0x0433
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0433, -1)
+#endif
+
+// Packet: 0x0434
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0434, -1)
+#endif
+
+// Packet: 0x0435
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0435, -1)
+#endif
+
+// Packet: 0x0436
+#if PACKETVER >= 20101228
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20101221
+packetLen(0x0436, 12) // CZ_ENTER2
+#elif PACKETVER >= 20101214
+packetLen(0x0436, 5) // CZ_ENTER2
+#elif PACKETVER >= 20101123
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20100105
+packetLen(0x0436, 19) // CZ_ENTER2
+#endif
+
+// Packet: 0x0437
+#if PACKETVER >= 20101228
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20101221
+packetLen(0x0437, 8) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20101207
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20101130
+packetLen(0x0437, -1) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20101123
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20100105
+packetLen(0x0437, 7) // CZ_REQUEST_ACT2
+#endif
+
+// Packet: 0x0438
+#if PACKETVER >= 20101214
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20101207
+packetLen(0x0438, 7) // CZ_USE_SKILL2
+#elif PACKETVER >= 20101130
+packetLen(0x0438, 12) // CZ_USE_SKILL2
+#elif PACKETVER >= 20100105
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#endif
+
+// Packet: 0x0439
+packetLen(0x0439, 8) // CZ_USE_ITEM2
+
+// Packet: 0x043d
+packetLen(0x043d, 8) // ZC_SKILL_POSTDELAY
+
+// Packet: 0x043e
+packetLen(0x043e, -1) // ZC_SKILL_POSTDELAY_LIST
+
+// Packet: 0x043f
+packetLen(0x043f, 25) // ZC_MSG_STATE_CHANGE2
+
+// Packet: 0x0440
+packetLen(0x0440, 10) // ZC_MILLENNIUMSHIELD
+
+// Packet: 0x0441
+packetLen(0x0441, 4) // ZC_SKILLINFO_DELETE
+
+// Packet: 0x0442
+#if PACKETVER >= 20100817
+packetLen(0x0442, -1) // ZC_SKILL_SELECT_REQUEST
+#elif PACKETVER >= 20100105
+packetLen(0x0442, 8) // ZC_SKILL_SELECT_REQUEST
+#endif
+
+// Packet: 0x0443
+packetLen(0x0443, 8) // CZ_SKILL_SELECT_RESPONSE
+
+// Packet: 0x0444
+packetLen(0x0444, -1) // ZC_SIMPLE_CASH_POINT_ITEMLIST
+
+// Packet: 0x0445
+packetLen(0x0445, 10) // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0446
+packetLen(0x0446, 14) // ZC_QUEST_NOTIFY_EFFECT
+
+// Packet: 0x0447
+packetLen(0x0447, 2) // CZ_BLOCKING_PLAY_CANCEL
+
+// Packet: 0x0448
+packetLen(0x0448, -1) // HC_CHARACTER_LIST
+
+// Packet: 0x0449
+packetLen(0x0449, 4) // ZC_HACKSH_ERROR_MSG
+
+// Packet: 0x044a
+packetLen(0x044a, 6) // CZ_CLIENT_VERSION
+
+// Packet: 0x044b
+packetLen(0x044b, 2) // CZ_CLOSE_SIMPLECASH_SHOP
+
+// Packet: 0x07d0
+#if PACKETVER >= 20100701
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x07d0, 6) // ZC_ES_RESULT
+#endif
+
+// Packet: 0x07d1
+#if PACKETVER >= 20100701
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x07d1, 2) // CZ_ES_GET_LIST
+#endif
+
+// Packet: 0x07d2
+#if PACKETVER >= 20100701
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x07d2, -1) // ZC_ES_LIST
+#endif
+
+// Packet: 0x07d3
+#if PACKETVER >= 20100701
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x07d3, 4) // CZ_ES_CHOOSE
+#endif
+
+// Packet: 0x07d4
+#if PACKETVER >= 20100701
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x07d4, 4) // CZ_ES_CANCEL
+#endif
+
+// Packet: 0x07d5
+#if PACKETVER >= 20100701
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x07d5, 4) // ZC_ES_READY
+#endif
+
+// Packet: 0x07d6
+#if PACKETVER >= 20100701
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x07d6, 4) // ZC_ES_GOTO
+#endif
+
+// Packet: 0x07d7
+packetLen(0x07d7, 8) // CZ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d8
+packetLen(0x07d8, 8) // ZC_REQ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d9
+packetLen(0x07d9, 268) // ZC_SHORTCUT_KEY_LIST_V2
+
+// Packet: 0x07da
+packetLen(0x07da, 6) // CZ_CHANGE_GROUP_MASTER
+
+// Packet: 0x07db
+packetLen(0x07db, 8) // ZC_HO_PAR_CHANGE
+
+// Packet: 0x07dc
+packetLen(0x07dc, 6) // CZ_SEEK_PARTY
+
+// Packet: 0x07dd
+packetLen(0x07dd, 54) // ZC_SEEK_PARTY
+
+// Packet: 0x07de
+packetLen(0x07de, 30) // CZ_SEEK_PARTY_MEMBER
+
+// Packet: 0x07df
+packetLen(0x07df, 54) // ZC_SEEK_PARTY_MEMBER
+
+// Packet: 0x07e0
+packetLen(0x07e0, 58) // ZC_ES_NOTI_MYINFO
+
+// Packet: 0x07e1
+packetLen(0x07e1, 15) // ZC_SKILLINFO_UPDATE2
+
+// Packet: 0x07e2
+packetLen(0x07e2, 8) // ZC_MSG_VALUE
+
+// Packet: 0x07e3
+packetLen(0x07e3, 6) // ZC_ITEMLISTWIN_OPEN
+
+// Packet: 0x07e4
+#if PACKETVER >= 20101228
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20101221
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20101214
+packetLen(0x07e4, -1) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20101207
+packetLen(0x07e4, 26) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20101123
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20100105
+packetLen(0x07e4, -1) // CZ_ITEMLISTWIN_RES
+#endif
+
+// Packet: 0x07e5
+#if PACKETVER >= 20101012
+packetLen(0x07e5, 4) // CH_ENTER_CHECKBOT
+#elif PACKETVER >= 20100105
+packetLen(0x07e5, 8) // CH_ENTER_CHECKBOT
+#endif
+
+// Packet: 0x07e6
+packetLen(0x07e6, 8) // ZC_MSG_SKILL
+
+// Packet: 0x07e7
+packetLen(0x07e7, 32) // CH_CHECKBOT
+
+// Packet: 0x07e8
+packetLen(0x07e8, -1) // HC_CHECKBOT
+
+// Packet: 0x07e9
+packetLen(0x07e9, 5) // HC_CHECKBOT_RESULT
+
+// Packet: 0x07ea
+packetLen(0x07ea, 2) // CZ_BATTLE_FIELD_LIST
+
+// Packet: 0x07eb
+packetLen(0x07eb, -1) // ZC_BATTLE_FIELD_LIST
+
+// Packet: 0x07ec
+#if PACKETVER >= 20101207
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20101130
+packetLen(0x07ec, -1) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20101123
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20100105
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#endif
+
+// Packet: 0x07ed
+packetLen(0x07ed, 10) // ZC_JOIN_BATTLE_FIELD
+
+// Packet: 0x07ee
+packetLen(0x07ee, 6) // CZ_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07ef
+packetLen(0x07ef, 8) // ZC_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07f0
+#if PACKETVER >= 20100209
+packetLen(0x07f0, 6) // CZ_REQ_BATTLE_STATE_MONITOR
+#elif PACKETVER >= 20100105
+packetLen(0x07f0, 8) // CZ_REQ_BATTLE_STATE_MONITOR
+#endif
+
+// Packet: 0x07f1
+#if PACKETVER >= 20100629
+packetLen(0x07f1, 18) // ZC_ACK_BATTLE_STATE_MONITOR
+#elif PACKETVER >= 20100105
+packetLen(0x07f1, 15) // ZC_ACK_BATTLE_STATE_MONITOR
+#endif
+
+// Packet: 0x07f2
+#if PACKETVER >= 20100629
+packetLen(0x07f2, 8) // ZC_BATTLE_NOTI_START_STEP
+#elif PACKETVER >= 20100105
+packetLen(0x07f2, 6) // ZC_BATTLE_NOTI_START_STEP
+#endif
+
+// Packet: 0x07f3
+#if PACKETVER >= 20100629
+packetLen(0x07f3, 6) // ZC_BATTLE_JOIN_NOTI_DEFER
+#elif PACKETVER >= 20100105
+packetLen(0x07f3, 4) // ZC_BATTLE_JOIN_NOTI_DEFER
+#endif
+
+// Packet: 0x07f4
+packetLen(0x07f4, 3) // ZC_BATTLE_JOIN_DISABLE_STATE
+
+// Packet: 0x07f5
+packetLen(0x07f5, 6) // CZ_GM_FULLSTRIP
+
+// Packet: 0x07f6
+packetLen(0x07f6, 14) // ZC_NOTIFY_EXP
+
+// Packet: 0x07f7
+packetLen(0x07f7, -1) // ZC_NOTIFY_MOVEENTRY7
+
+// Packet: 0x07f8
+packetLen(0x07f8, -1) // ZC_NOTIFY_NEWENTRY5
+
+// Packet: 0x07f9
+packetLen(0x07f9, -1) // ZC_NOTIFY_STANDENTRY5
+
+// Packet: 0x07fa
+packetLen(0x07fa, 8) // ZC_DELETE_ITEM_FROM_BODY
+
+// Packet: 0x07fb
+packetLen(0x07fb, 25) // ZC_USESKILL_ACK2
+
+// Packet: 0x07fc
+packetLen(0x07fc, 10) // ZC_CHANGE_GROUP_MASTER
+
+// Packet: 0x07fd
+packetLen(0x07fd, -1) // ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN
+
+// Packet: 0x07fe
+packetLen(0x07fe, 26) // ZC_PLAY_NPC_BGM
+
+// Packet: 0x07ff
+packetLen(0x07ff, -1) // ZC_DEFINE_CHECK
+
+// Packet: 0x0800
+packetLen(0x0800, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0801
+packetLen(0x0801, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0802
+#if PACKETVER >= 20101228
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20101221
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20101214
+packetLen(0x0802, 36) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20101130
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20101123
+packetLen(0x0802, 5) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20100105
+packetLen(0x0802, 18) // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// Packet: 0x0803
+packetLen(0x0803, 4) // ZC_PARTY_BOOKING_ACK_REGISTER
+
+// Packet: 0x0804
+packetLen(0x0804, 14) // CZ_PARTY_BOOKING_REQ_SEARCH
+
+// Packet: 0x0805
+packetLen(0x0805, -1) // ZC_PARTY_BOOKING_ACK_SEARCH
+
+// Packet: 0x0806
+packetLen(0x0806, 2) // CZ_PARTY_BOOKING_REQ_DELETE
+
+// Packet: 0x0807
+packetLen(0x0807, 4) // ZC_PARTY_BOOKING_ACK_DELETE
+
+// Packet: 0x0808
+packetLen(0x0808, 14) // CZ_PARTY_BOOKING_REQ_UPDATE
+
+// Packet: 0x0809
+packetLen(0x0809, 50) // ZC_PARTY_BOOKING_NOTIFY_INSERT
+
+// Packet: 0x080a
+packetLen(0x080a, 18) // ZC_PARTY_BOOKING_NOTIFY_UPDATE
+
+// Packet: 0x080b
+packetLen(0x080b, 6) // ZC_PARTY_BOOKING_NOTIFY_DELETE
+
+// Packet: 0x080c
+#if PACKETVER >= 20100113
+packetLen(0x080c, 2) // CZ_SIMPLE_CASH_BTNSHOW
+#endif
+
+// Packet: 0x080d
+#if PACKETVER >= 20100113
+packetLen(0x080d, 3) // ZC_SIMPLE_CASH_BTNSHOW
+#endif
+
+// Packet: 0x080e
+#if PACKETVER >= 20100119
+packetLen(0x080e, 14) // ZC_NOTIFY_HP_TO_GROUPM_R2
+#endif
+
+// Packet: 0x080f
+#if PACKETVER >= 20100223
+packetLen(0x080f, 20) // ZC_ADD_EXCHANGE_ITEM2
+#endif
+
+// Packet: 0x0810
+#if PACKETVER >= 20100303
+packetLen(0x0810, 3) // ZC_OPEN_BUYING_STORE
+#endif
+
+// Packet: 0x0811
+#if PACKETVER >= 20101228
+packetLen(0x0811, 90) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20101221
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20101207
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20101130
+packetLen(0x0811, 5) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20101123
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20100303
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#endif
+
+// Packet: 0x0812
+#if PACKETVER >= 20100420
+packetLen(0x0812, 8) // ZC_FAILED_OPEN_BUYING_STORE_TO_BUYER
+#elif PACKETVER >= 20100303
+packetLen(0x0812, 86) // ZC_FAILED_OPEN_BUYING_STORE_TO_BUYER
+#endif
+
+// Packet: 0x0813
+#if PACKETVER >= 20100309
+packetLen(0x0813, -1) // ZC_MYITEMLIST_BUYING_STORE
+#elif PACKETVER >= 20100303
+packetLen(0x0813, 6) // ZC_MYITEMLIST_BUYING_STORE
+#endif
+
+// Packet: 0x0814
+#if PACKETVER >= 20100420
+packetLen(0x0814, 86) // ZC_BUYING_STORE_ENTRY
+#elif PACKETVER >= 20100309
+packetLen(0x0814, 2) // ZC_BUYING_STORE_ENTRY
+#elif PACKETVER >= 20100303
+packetLen(0x0814, 6) // ZC_BUYING_STORE_ENTRY
+#endif
+
+// Packet: 0x0815
+#if PACKETVER >= 20101228
+packetLen(0x0815, 7) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20101221
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20101214
+packetLen(0x0815, 5) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20101207
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20101130
+packetLen(0x0815, 6) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20100420
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20100309
+packetLen(0x0815, 6) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20100303
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#endif
+
+// Packet: 0x0816
+#if PACKETVER >= 20100309
+packetLen(0x0816, 6) // ZC_DISAPPEAR_BUYING_STORE_ENTRY
+#endif
+
+// Packet: 0x0817
+#if PACKETVER >= 20101228
+packetLen(0x0817, -1) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20101221
+packetLen(0x0817, 7) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20101130
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20101123
+packetLen(0x0817, 8) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20100420
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20100303
+packetLen(0x0817, -1) // CZ_REQ_CLICK_TO_BUYING_STORE
+#endif
+
+// Packet: 0x0818
+#if PACKETVER >= 20100309
+packetLen(0x0818, -1) // ZC_ACK_ITEMLIST_BUYING_STORE
+#elif PACKETVER >= 20100303
+packetLen(0x0818, 6) // ZC_ACK_ITEMLIST_BUYING_STORE
+#endif
+
+// Packet: 0x0819
+#if PACKETVER >= 20101207
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20101130
+packetLen(0x0819, 7) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20101123
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20100420
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20100309
+packetLen(0x0819, 10) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20100303
+packetLen(0x0819, 4) // CZ_REQ_TRADE_BUYING_STORE
+#endif
+
+// Packet: 0x081a
+#if PACKETVER >= 20100420
+packetLen(0x081a, 4) // ZC_FAILED_TRADE_BUYING_STORE_TO_BUYER
+#elif PACKETVER >= 20100413
+packetLen(0x081a, 10) // ZC_FAILED_TRADE_BUYING_STORE_TO_BUYER
+#elif PACKETVER >= 20100331
+packetLen(0x081a, 6) // ZC_FAILED_TRADE_BUYING_STORE_TO_BUYER
+#elif PACKETVER >= 20100309
+packetLen(0x081a, 4) // ZC_FAILED_TRADE_BUYING_STORE_TO_BUYER
+#endif
+
+// Packet: 0x081b
+#if PACKETVER >= 20100420
+packetLen(0x081b, 10) // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+#elif PACKETVER >= 20100414
+packetLen(0x081b, 8) // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+#elif PACKETVER >= 20100309
+packetLen(0x081b, 4) // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+#endif
+
+// Packet: 0x081c
+#if PACKETVER >= 20100420
+packetLen(0x081c, 10) // ZC_ITEM_DELETE_BUYING_STORE
+#elif PACKETVER >= 20100309
+packetLen(0x081c, 6) // ZC_ITEM_DELETE_BUYING_STORE
+#endif
+
+// Packet: 0x081d
+#if PACKETVER >= 20100309
+packetLen(0x081d, 22) // ZC_EL_INIT
+#endif
+
+// Packet: 0x081e
+#if PACKETVER >= 20100309
+packetLen(0x081e, 8) // ZC_EL_PAR_CHANGE
+#endif
+
+// Packet: 0x081f
+#if PACKETVER >= 20100323
+packetLen(0x081f, -1) // ZC_BROADCAST4
+#endif
+
+// Packet: 0x0820
+#if PACKETVER >= 20100413
+packetLen(0x0820, 11) // ZC_COSTUME_SPRITE_CHANGE
+#endif
+
+// Packet: 0x0821
+#if PACKETVER >= 20100413
+packetLen(0x0821, 2) // AC_OTP_USER
+#endif
+
+// Packet: 0x0822
+#if PACKETVER >= 20100413
+packetLen(0x0822, 9) // CA_OTP_AUTH_REQ
+#endif
+
+// Packet: 0x0823
+#if PACKETVER >= 20100413
+packetLen(0x0823, -1) // AC_OTP_AUTH_ACK
+#endif
+
+// Packet: 0x0824
+#if PACKETVER >= 20100420
+packetLen(0x0824, 6) // ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER
+#endif
+
+// Packet: 0x0825
+#if PACKETVER >= 20100601
+packetLen(0x0825, -1) // CA_SSO_LOGIN_REQ
+#endif
+
+// Packet: 0x0826
+#if PACKETVER >= 20101019
+// removed
+#elif PACKETVER >= 20100601
+packetLen(0x0826, 4) // AC_SSO_LOGIN_ACK
+#endif
+
+// Packet: 0x0827
+#if PACKETVER >= 20100713
+packetLen(0x0827, 6) // CH_DELETE_CHAR3_RESERVED
+#endif
+
+// Packet: 0x0828
+#if PACKETVER >= 20100713
+packetLen(0x0828, 14) // HC_DELETE_CHAR3_RESERVED
+#endif
+
+// Packet: 0x0829
+#if PACKETVER >= 20100728
+packetLen(0x0829, 12) // CH_DELETE_CHAR3
+#elif PACKETVER >= 20100713
+packetLen(0x0829, 6) // CH_DELETE_CHAR3
+#endif
+
+// Packet: 0x082a
+#if PACKETVER >= 20100713
+packetLen(0x082a, 10) // HC_DELETE_CHAR3
+#endif
+
+// Packet: 0x082b
+#if PACKETVER >= 20100713
+packetLen(0x082b, 6) // CH_DELETE_CHAR3_CANCEL
+#endif
+
+// Packet: 0x082c
+#if PACKETVER >= 20100720
+packetLen(0x082c, 10) // HC_DELETE_CHAR3_CANCEL
+#elif PACKETVER >= 20100713
+packetLen(0x082c, 14) // HC_DELETE_CHAR3_CANCEL
+#endif
+
+// Packet: 0x082d
+#if PACKETVER >= 20101221
+packetLen(0x082d, -1) // HC_ACCEPT_ENTER2
+#endif
+
+// Packet: 0x0835
+#if PACKETVER >= 20101228
+packetLen(0x0835, 5) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20101214
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20101207
+packetLen(0x0835, 19) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20101130
+packetLen(0x0835, 6) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20101123
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20100601
+packetLen(0x0835, -1) // CZ_SEARCH_STORE_INFO
+#endif
+
+// Packet: 0x0836
+#if PACKETVER >= 20100601
+packetLen(0x0836, -1) // ZC_SEARCH_STORE_INFO_ACK
+#endif
+
+// Packet: 0x0837
+#if PACKETVER >= 20100601
+packetLen(0x0837, 3) // ZC_SEARCH_STORE_INFO_FAILED
+#endif
+
+// Packet: 0x0838
+#if PACKETVER >= 20101228
+packetLen(0x0838, -1) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20101214
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20101207
+packetLen(0x0838, 8) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20101130
+packetLen(0x0838, -1) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20100608
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20100601
+packetLen(0x0838, 3) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#endif
+
+// Packet: 0x0839
+#if PACKETVER >= 20100608
+packetLen(0x0839, 66) // ZC_ACK_BAN_GUILD_SSO
+#endif
+
+// Packet: 0x083a
+#if PACKETVER >= 20100701
+packetLen(0x083a, 5) // ZC_OPEN_SEARCH_STORE_INFO
+#elif PACKETVER >= 20100608
+packetLen(0x083a, 4) // ZC_OPEN_SEARCH_STORE_INFO
+#endif
+
+// Packet: 0x083b
+#if PACKETVER >= 20100608
+packetLen(0x083b, 2) // CZ_CLOSE_SEARCH_STORE_INFO
+#endif
+
+// Packet: 0x083c
+#if PACKETVER >= 20101214
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20101207
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20101130
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20101123
+packetLen(0x083c, 7) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20100608
+packetLen(0x083c, 12) // CZ_SSILIST_ITEM_CLICK
+#endif
+
+// Packet: 0x083d
+#if PACKETVER >= 20100608
+packetLen(0x083d, 6) // ZC_SSILIST_ITEM_CLICK_ACK
+#endif
+
+// Packet: 0x083e
+#if PACKETVER >= 20100615
+packetLen(0x083e, 26) // AC_REFUSE_LOGIN2
+#endif
+
+// Packet: 0x083f
+#if PACKETVER >= 20100629
+// removed
+#elif PACKETVER >= 20100622
+packetLen(0x083f, 22) // ZC_SEARCH_STORE_OPEN_INFO
+#endif
+
+// Packet: 0x0840
+#if PACKETVER >= 20100713
+packetLen(0x0840, -1) // HC_NOTIFY_ACCESSIBLE_MAPNAME
+#endif
+
+// Packet: 0x0841
+#if PACKETVER >= 20100714
+packetLen(0x0841, 4) // CH_SELECT_ACCESSIBLE_MAPNAME
+#elif PACKETVER >= 20100713
+packetLen(0x0841, 19) // CH_SELECT_ACCESSIBLE_MAPNAME
+#endif
+
+// Packet: 0x0842
+#if PACKETVER >= 20100720
+packetLen(0x0842, 6) // CZ_RECALL_SSO
+#endif
+
+// Packet: 0x0843
+#if PACKETVER >= 20100720
+packetLen(0x0843, 6) // CZ_REMOVE_AID_SSO
+#endif
+
+// Packet: 0x0844
+#if PACKETVER >= 20100824
+packetLen(0x0844, 2) // CZ_SE_CASHSHOP_OPEN
+#endif
+
+// Packet: 0x0845
+#if PACKETVER >= 20100824
+packetLen(0x0845, 10) // ZC_SE_CASHSHOP_OPEN
+#endif
+
+// Packet: 0x0846
+#if PACKETVER >= 20100824
+packetLen(0x0846, 4) // CZ_REQ_SE_CASH_TAB_CODE
+#endif
+
+// Packet: 0x0847
+#if PACKETVER >= 20100824
+packetLen(0x0847, -1) // ZC_ACK_SE_CASH_ITEM_LIST
+#endif
+
+// Packet: 0x0848
+#if PACKETVER >= 20100824
+packetLen(0x0848, -1) // CZ_SE_PC_BUY_CASHITEM_LIST
+#endif
+
+// Packet: 0x0849
+#if PACKETVER >= 20100914
+packetLen(0x0849, 16) // ZC_SE_PC_BUY_CASHITEM_RESULT
+#elif PACKETVER >= 20100824
+packetLen(0x0849, 12) // ZC_SE_PC_BUY_CASHITEM_RESULT
+#endif
+
+// Packet: 0x084a
+#if PACKETVER >= 20101019
+packetLen(0x084a, 2) // CZ_SE_CASHSHOP_CLOSE
+#endif
+
+// Packet: 0x084b
+#if PACKETVER >= 20101019
+packetLen(0x084b, 19) // ZC_ITEM_FALL_ENTRY4
+#endif
+
+// Packet: 0x084c
+#if PACKETVER >= 20101026
+packetLen(0x084c, 10) // CZ_MACRO_USE_SKILL
+#endif
+
+// Packet: 0x084d
+#if PACKETVER >= 20101026
+packetLen(0x084d, 10) // CZ_MACRO_USE_SKILL_TOGROUND
+#endif
+
+// Packet: 0x084e
+#if PACKETVER >= 20101026
+packetLen(0x084e, 5) // CZ_MACRO_REQUEST_MOVE
+#endif
+
+// Packet: 0x084f
+#if PACKETVER >= 20101026
+packetLen(0x084f, 6) // CZ_MACRO_ITEM_PICKUP
+#endif
+
+// Packet: 0x0850
+#if PACKETVER >= 20101026
+packetLen(0x0850, 7) // CZ_MACRO_REQUEST_ACT
+#endif
+
+// Packet: 0x0851
+#if PACKETVER >= 20101102
+packetLen(0x0851, -1) // ZC_GPK_DYNCODE
+#endif
+
+// Packet: 0x0852
+#if PACKETVER >= 20101102
+packetLen(0x0852, 2) // CZ_GPK_DYNCODE_RELOAD
+#endif
+
+// Packet: 0x0853
+#if PACKETVER >= 20101102
+packetLen(0x0853, -1) // ZC_GPK_AUTH
+#endif
+
+// Packet: 0x0854
+#if PACKETVER >= 20101102
+packetLen(0x0854, -1) // CZ_GPK_AUTH
+#endif
+
+// Packet: 0x0855
+#if PACKETVER >= 20101102
+packetLen(0x0855, 6) // ZC_MACRO_ITEMPICKUP_FAIL
+#endif
+
+// Packet: 0x0856
+#if PACKETVER >= 20101123
+packetLen(0x0856, -1) // ZC_NOTIFY_MOVEENTRY8
+#endif
+
+// Packet: 0x0857
+#if PACKETVER >= 20101123
+packetLen(0x0857, -1) // ZC_NOTIFY_STANDENTRY7
+#endif
+
+// Packet: 0x0858
+#if PACKETVER >= 20101123
+packetLen(0x0858, -1) // ZC_NOTIFY_NEWENTRY6
+#endif
+
+// Packet: 0x0859
+#if PACKETVER >= 20101123
+packetLen(0x0859, -1) // ZC_EQUIPWIN_MICROSCOPE2
+#endif
+
+// Packet: 0x085a
+#if PACKETVER >= 20101123
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x085b
+#if PACKETVER >= 20101123
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x085c
+#if PACKETVER >= 20101123
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#endif
+
+// Packet: 0x085d
+#if PACKETVER >= 20101123
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x085e
+#if PACKETVER >= 20101123
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x085f
+#if PACKETVER >= 20101123
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x0860
+#if PACKETVER >= 20101123
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x0861
+#if PACKETVER >= 20101123
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x0862
+#if PACKETVER >= 20101123
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x0863
+#if PACKETVER >= 20101123
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x0864
+#if PACKETVER >= 20101123
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x0865
+#if PACKETVER >= 20101123
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0866
+#if PACKETVER >= 20101123
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0867
+#if PACKETVER >= 20101123
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0868
+#if PACKETVER >= 20101123
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0869
+#if PACKETVER >= 20101123
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x086a
+#if PACKETVER >= 20101123
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x086b
+#if PACKETVER >= 20101123
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x086c
+#if PACKETVER >= 20101123
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x086d
+#if PACKETVER >= 20101123
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x086e
+#if PACKETVER >= 20101123
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x086f
+#if PACKETVER >= 20101123
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x0870
+#if PACKETVER >= 20101123
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x0871
+#if PACKETVER >= 20101123
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x0872
+#if PACKETVER >= 20101123
+packetLen(0x0872, 2)
+#endif
+
+// Packet: 0x0873
+#if PACKETVER >= 20101123
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x0874
+#if PACKETVER >= 20101123
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x0875
+#if PACKETVER >= 20101123
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x0876
+#if PACKETVER >= 20101123
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x0877
+#if PACKETVER >= 20101123
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x0878
+#if PACKETVER >= 20101123
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x0879
+#if PACKETVER >= 20101123
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x087a
+#if PACKETVER >= 20101123
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x087b
+#if PACKETVER >= 20101123
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x087c
+#if PACKETVER >= 20101123
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#endif
+
+// Packet: 0x087d
+#if PACKETVER >= 20101123
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x087e
+#if PACKETVER >= 20101123
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x087f
+#if PACKETVER >= 20101123
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#endif
+
+// Packet: 0x0880
+#if PACKETVER >= 20101123
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x0881
+#if PACKETVER >= 20101123
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x0882
+#if PACKETVER >= 20101123
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x0883
+#if PACKETVER >= 20101123
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x0884
+#if PACKETVER >= 20101228
+packetLen(0x0884, 19) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20101221
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20101214
+packetLen(0x0884, 6) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20101123
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x0885
+#if PACKETVER >= 20101228
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20101221
+packetLen(0x0885, 8) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20101214
+packetLen(0x0885, 19) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20101207
+packetLen(0x0885, 6) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20101123
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x0886
+#if PACKETVER >= 20101228
+packetLen(0x0886, 6) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20101221
+packetLen(0x0886, -1) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20101207
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20101130
+packetLen(0x0886, 10) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20101123
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#endif
+
+// Packet: 0x0887
+#if PACKETVER >= 20101221
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20101214
+packetLen(0x0887, 4) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20101207
+packetLen(0x0887, -1) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20101130
+packetLen(0x0887, 18) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20101123
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x0888
+#if PACKETVER >= 20101228
+packetLen(0x0888, 8) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20101221
+packetLen(0x0888, 4) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20101130
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20101123
+packetLen(0x0888, 10) // CZ_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x0889
+#if PACKETVER >= 20101228
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20101221
+packetLen(0x0889, 6) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20101214
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20101207
+packetLen(0x0889, 26) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20101130
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20101123
+packetLen(0x0889, 19) // CZ_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x088a
+#if PACKETVER >= 20101123
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x088b
+#if PACKETVER >= 20101123
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x088c
+#if PACKETVER >= 20101228
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20101221
+packetLen(0x088c, 5) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20101207
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20101130
+packetLen(0x088c, 5) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20101123
+packetLen(0x088c, 26) // CZ_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x088d
+#if PACKETVER >= 20101228
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20101221
+packetLen(0x088d, 6) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20101214
+packetLen(0x088d, 12) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20101123
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x088e
+#if PACKETVER >= 20101228
+packetLen(0x088e, 18) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20101207
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20101130
+packetLen(0x088e, 8) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20101123
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x088f
+#if PACKETVER >= 20101228
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20101221
+packetLen(0x088f, 10) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20101214
+packetLen(0x088f, 6) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20101207
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20101130
+packetLen(0x088f, 26) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20101123
+packetLen(0x088f, 6) // CZ_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0890
+#if PACKETVER >= 20101228
+packetLen(0x0890, 4) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20101214
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20101207
+packetLen(0x0890, 5) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20101123
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0891
+#if PACKETVER >= 20101228
+packetLen(0x0891, 26) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20101214
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20101207
+packetLen(0x0891, 8) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20101130
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20101123
+packetLen(0x0891, 5) // CZ_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0892
+#if PACKETVER >= 20101228
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20101221
+packetLen(0x0892, 8) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20101214
+packetLen(0x0892, 10) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20101123
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0893
+#if PACKETVER >= 20101228
+packetLen(0x0893, -1) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20101130
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20101123
+packetLen(0x0893, 18) // CZ_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x0894
+#if PACKETVER >= 20101207
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20101130
+packetLen(0x0894, 5) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20101123
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x0895
+#if PACKETVER >= 20101214
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20101207
+packetLen(0x0895, 6) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20101123
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x0896
+#if PACKETVER >= 20101228
+packetLen(0x0896, -1) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20101214
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20101207
+packetLen(0x0896, 6) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20101130
+packetLen(0x0896, 10) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20101123
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x0897
+#if PACKETVER >= 20101228
+packetLen(0x0897, 8) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20101221
+packetLen(0x0897, 36) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20101214
+packetLen(0x0897, 6) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20101123
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x0898
+#if PACKETVER >= 20101228
+packetLen(0x0898, 10) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20101221
+packetLen(0x0898, 6) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20101214
+packetLen(0x0898, 5) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20101207
+packetLen(0x0898, 6) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20101130
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20101123
+packetLen(0x0898, -1) // CZ_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x0899
+#if PACKETVER >= 20101228
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20101221
+packetLen(0x0899, 5) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20101214
+packetLen(0x0899, 26) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20101207
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20101130
+packetLen(0x0899, -1) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20101123
+packetLen(0x0899, 6) // CZ_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x089a
+#if PACKETVER >= 20101123
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x089b
+#if PACKETVER >= 20101130
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20101123
+packetLen(0x089b, 26) // CZ_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x089c
+#if PACKETVER >= 20101228
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20101221
+packetLen(0x089c, -1) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20101214
+packetLen(0x089c, 8) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20101123
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#endif
+
+// Packet: 0x089d
+#if PACKETVER >= 20101228
+packetLen(0x089d, 36) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20101214
+packetLen(0x089d, 6) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20101207
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20101130
+packetLen(0x089d, 36) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20101123
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x089e
+#if PACKETVER >= 20101228
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20101221
+packetLen(0x089e, 90) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20101214
+packetLen(0x089e, 8) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20101207
+packetLen(0x089e, 18) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20101130
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20101123
+packetLen(0x089e, 4) // CZ_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x089f
+#if PACKETVER >= 20101221
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20101214
+packetLen(0x089f, -1) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20101207
+packetLen(0x089f, 6) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20101130
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20101123
+packetLen(0x089f, 8) // CZ_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x08a0
+#if PACKETVER >= 20101228
+packetLen(0x08a0, 6) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20101123
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x08a1
+#if PACKETVER >= 20101221
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20101214
+packetLen(0x08a1, -1) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20101130
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20101123
+packetLen(0x08a1, 6) // CZ_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x08a2
+#if PACKETVER >= 20101228
+packetLen(0x08a2, 5) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20101214
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20101207
+packetLen(0x08a2, 8) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20101130
+packetLen(0x08a2, 19) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20101123
+packetLen(0x08a2, -1) // CZ_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x08a3
+#if PACKETVER >= 20101221
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20101214
+packetLen(0x08a3, 26) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20101207
+packetLen(0x08a3, -1) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20101130
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20101123
+packetLen(0x08a3, 12) // CZ_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x08a4
+#if PACKETVER >= 20101228
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20101221
+packetLen(0x08a4, 5) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20101214
+packetLen(0x08a4, 10) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20101123
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x08a5
+#if PACKETVER >= 20101228
+packetLen(0x08a5, 6) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20101214
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20101207
+packetLen(0x08a5, 6) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20101123
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x08a6
+#if PACKETVER >= 20101123
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#endif
+
+// Packet: 0x08a7
+#if PACKETVER >= 20101221
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20101214
+packetLen(0x08a7, 8) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20101123
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x08a8
+#if PACKETVER >= 20101123
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x08a9
+#if PACKETVER >= 20101214
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20101207
+packetLen(0x08a9, 10) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20101130
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20101123
+packetLen(0x08a9, -1) // CZ_REASSEMBLY_AUTH38
+#endif
+
+// Packet: 0x08aa
+#if PACKETVER >= 20101228
+packetLen(0x08aa, 5) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20101221
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20101214
+packetLen(0x08aa, 7) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20101207
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20101130
+packetLen(0x08aa, 6) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20101123
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x08ab
+#if PACKETVER >= 20101207
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20101130
+packetLen(0x08ab, 4) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20101123
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x08ac
+#if PACKETVER >= 20101228
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20101221
+packetLen(0x08ac, 6) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20101214
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20101207
+packetLen(0x08ac, 5) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20101130
+packetLen(0x08ac, 6) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20101123
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x08ad
+#if PACKETVER >= 20101228
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20101221
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20101214
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20101207
+packetLen(0x08ad, 90) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20101130
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20101123
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x08af
+#if PACKETVER >= 20101228
+packetLen(0x08af, 10) // HC_WAITING_LOGIN
+#endif
+
+// Packet: 0x08b1
+#if PACKETVER >= 20101221
+packetLen(0x08b1, -1) // ZC_MCSTORE_NOTMOVEITEM_LIST
+#endif
+
+// Packet: 0x08b2
+#if PACKETVER >= 20101228
+packetLen(0x08b2, -1) // AC_REALNAME_AUTH
+#endif
+
+
+#endif /* COMMON_PACKETS2010_LEN_MAIN_H */
diff --git a/src/common/packets/packets2010_len_re.h b/src/common/packets/packets2010_len_re.h
new file mode 100644
index 000000000..ef683fc04
--- /dev/null
+++ b/src/common/packets/packets2010_len_re.h
@@ -0,0 +1,5291 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2010_LEN_RE_H
+#define COMMON_PACKETS2010_LEN_RE_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+#if PACKETVER >= 20100803
+packetLen(0x006d, 134) // HC_ACCEPT_MAKECHAR
+#elif PACKETVER >= 20100728
+packetLen(0x006d, 114) // HC_ACCEPT_MAKECHAR
+#elif PACKETVER >= 20100720
+packetLen(0x006d, 130) // HC_ACCEPT_MAKECHAR
+#elif PACKETVER >= 20100105
+packetLen(0x006d, 114) // HC_ACCEPT_MAKECHAR
+#endif
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 22) // CZ_ENTER
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 44) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 10) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, 14)
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+packetLen(0x0094, 19) // CZ_REQNAME
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+packetLen(0x00a7, 9)
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+#if PACKETVER >= 20100629
+packetLen(0x00aa, 9) // ZC_REQ_WEAR_EQUIP_ACK
+#elif PACKETVER >= 20100105
+packetLen(0x00aa, 7) // ZC_REQ_WEAR_EQUIP_ACK
+#endif
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+packetLen(0x00f7, 17) // CZ_REQUEST_TIME
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+packetLen(0x0113, 25) // CZ_USE_SKILL
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0158
+#if PACKETVER >= 20100817
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0158, -1) // ZC_ACK_OPEN_MEMBER_INFO
+#endif
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 37) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x020f
+packetLen(0x020f, 10) // CZ_REQ_PVPPOINT
+
+// Packet: 0x0210
+packetLen(0x0210, 22) // ZC_ACK_PVPPOINT
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+
+// Packet: 0x022b
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+
+// Packet: 0x022c
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+
+// Packet: 0x022d
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+
+// Packet: 0x022e
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+
+// Packet: 0x022f
+packetLen(0x022f, 5) // ZC_FEED_MER
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+
+// Packet: 0x0275
+packetLen(0x0275, 37) // CH_ENTER2
+
+// Packet: 0x0276
+packetLen(0x0276, -1) // AC_ACCEPT_LOGIN2
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+packetLen(0x0281, 4) // CZ_GANGSI_RANK
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+
+// Packet: 0x0288
+#if PACKETVER >= 20100803
+packetLen(0x0288, -1) // CZ_PC_BUY_CASH_POINT_ITEM
+#elif PACKETVER >= 20100105
+packetLen(0x0288, 10) // CZ_PC_BUY_CASH_POINT_ITEM
+#endif
+
+// Packet: 0x0289
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0296
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0297
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0298
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+
+// Packet: 0x0299
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+
+// Packet: 0x029a
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+
+// Packet: 0x029b
+packetLen(0x029b, 80) // ZC_MER_INIT
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a5
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+
+// Packet: 0x02aa
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+
+// Packet: 0x02ab
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+
+// Packet: 0x02ac
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+
+// Packet: 0x02ad
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+
+// Packet: 0x02b0
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+
+// Packet: 0x02b1
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+
+// Packet: 0x02b2
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+
+// Packet: 0x02b3
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+
+// Packet: 0x02b4
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+
+// Packet: 0x02b5
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+
+// Packet: 0x02b6
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+
+// Packet: 0x02b7
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+
+// Packet: 0x02b8
+packetLen(0x02b8, 22) // ZC_ITEM_PICKUP_PARTY
+
+// Packet: 0x02b9
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+
+// Packet: 0x02ba
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+
+// Packet: 0x02bb
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+
+// Packet: 0x02bc
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+
+// Packet: 0x02c1
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+
+// Packet: 0x02c2
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+
+// Packet: 0x02c4
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+
+// Packet: 0x02c5
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c6
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+
+// Packet: 0x02c7
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c8
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+
+// Packet: 0x02c9
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+
+// Packet: 0x02ca
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+
+// Packet: 0x02cb
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+
+// Packet: 0x02cc
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+
+// Packet: 0x02cd
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+
+// Packet: 0x02ce
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+
+// Packet: 0x02cf
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+
+// Packet: 0x02d0
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d1
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d2
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d3
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+
+// Packet: 0x02d4
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+
+// Packet: 0x02d5
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+
+// Packet: 0x02d6
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d7
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d8
+packetLen(0x02d8, 10) // CZ_CONFIG
+
+// Packet: 0x02d9
+packetLen(0x02d9, 10) // ZC_CONFIG
+
+// Packet: 0x02da
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+
+// Packet: 0x02db
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+
+// Packet: 0x02dc
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+
+// Packet: 0x02dd
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+
+// Packet: 0x02de
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+
+// Packet: 0x02df
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+
+// Packet: 0x02e0
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+
+// Packet: 0x02e1
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+
+// Packet: 0x02e2
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+
+// Packet: 0x02e3
+packetLen(0x02e3, 22) // CZ_USE_SKILL_NEW_JAPEN
+
+// Packet: 0x02e4
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+
+// Packet: 0x02e5
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+
+// Packet: 0x02e6
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+
+// Packet: 0x02e7
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+
+// Packet: 0x02e8
+packetLen(0x02e8, -1) // ZC_NORMAL_ITEMLIST3
+
+// Packet: 0x02e9
+packetLen(0x02e9, -1) // ZC_CART_NORMAL_ITEMLIST3
+
+// Packet: 0x02ea
+packetLen(0x02ea, -1) // ZC_STORE_NORMAL_ITEMLIST3
+
+// Packet: 0x02eb
+packetLen(0x02eb, 13) // ZC_ACCEPT_ENTER2
+
+// Packet: 0x02ec
+packetLen(0x02ec, 67) // ZC_NOTIFY_MOVEENTRY4
+
+// Packet: 0x02ed
+packetLen(0x02ed, 59) // ZC_NOTIFY_NEWENTRY4
+
+// Packet: 0x02ee
+packetLen(0x02ee, 60) // ZC_NOTIFY_STANDENTRY4
+
+// Packet: 0x02ef
+packetLen(0x02ef, 8) // ZC_NOTIFY_FONT
+
+// Packet: 0x02f0
+packetLen(0x02f0, 10) // ZC_PROGRESS
+
+// Packet: 0x02f1
+packetLen(0x02f1, 2) // CZ_PROGRESS
+
+// Packet: 0x02f2
+packetLen(0x02f2, 2) // ZC_PROGRESS_CANCEL
+
+// Packet: 0x02f3
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+#endif
+
+// Packet: 0x02f4
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x02f4, -1) // ZC_IRMAIL_SEND_RES
+#endif
+
+// Packet: 0x02f5
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x02f5, -1) // ZC_IRMAIL_NOTIFY
+#endif
+
+// Packet: 0x02f6
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x02f6, -1) // CZ_IRMAIL_LIST
+#endif
+
+// Packet: 0x02f7
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x02f7, -1)
+#endif
+
+// Packet: 0x02f8
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x02f8, -1)
+#endif
+
+// Packet: 0x02f9
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x02f9, -1)
+#endif
+
+// Packet: 0x02fa
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x02fa, -1)
+#endif
+
+// Packet: 0x02fb
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x02fb, -1)
+#endif
+
+// Packet: 0x02fc
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x02fc, -1)
+#endif
+
+// Packet: 0x02fd
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x02fd, -1)
+#endif
+
+// Packet: 0x02fe
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x02fe, -1)
+#endif
+
+// Packet: 0x02ff
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x02ff, -1)
+#endif
+
+// Packet: 0x0300
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0300, -1)
+#endif
+
+// Packet: 0x0301
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0301, -1)
+#endif
+
+// Packet: 0x0302
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0302, -1)
+#endif
+
+// Packet: 0x0303
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0303, -1)
+#endif
+
+// Packet: 0x0304
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0304, -1)
+#endif
+
+// Packet: 0x0305
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0305, -1)
+#endif
+
+// Packet: 0x0306
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0306, -1)
+#endif
+
+// Packet: 0x0307
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0307, -1)
+#endif
+
+// Packet: 0x0308
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0308, -1)
+#endif
+
+// Packet: 0x0309
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0309, -1)
+#endif
+
+// Packet: 0x030a
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x030a, -1)
+#endif
+
+// Packet: 0x030b
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x030b, -1)
+#endif
+
+// Packet: 0x030c
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x030c, -1)
+#endif
+
+// Packet: 0x030d
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x030d, -1)
+#endif
+
+// Packet: 0x030e
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x030e, -1)
+#endif
+
+// Packet: 0x030f
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x030f, -1)
+#endif
+
+// Packet: 0x0310
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0310, -1)
+#endif
+
+// Packet: 0x0311
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0311, -1)
+#endif
+
+// Packet: 0x0312
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0312, -1)
+#endif
+
+// Packet: 0x0313
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0313, -1)
+#endif
+
+// Packet: 0x0314
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0314, -1)
+#endif
+
+// Packet: 0x0315
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0315, -1)
+#endif
+
+// Packet: 0x0316
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0316, -1)
+#endif
+
+// Packet: 0x0317
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0317, -1)
+#endif
+
+// Packet: 0x0318
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0318, -1)
+#endif
+
+// Packet: 0x0319
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0319, -1)
+#endif
+
+// Packet: 0x031a
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x031a, -1)
+#endif
+
+// Packet: 0x031b
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x031b, -1)
+#endif
+
+// Packet: 0x031c
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x031c, -1)
+#endif
+
+// Packet: 0x031d
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x031d, -1)
+#endif
+
+// Packet: 0x031e
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x031e, -1)
+#endif
+
+// Packet: 0x031f
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x031f, -1)
+#endif
+
+// Packet: 0x0320
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0320, -1)
+#endif
+
+// Packet: 0x0321
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0321, -1)
+#endif
+
+// Packet: 0x0322
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0322, -1)
+#endif
+
+// Packet: 0x0323
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0323, -1)
+#endif
+
+// Packet: 0x0324
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0324, -1)
+#endif
+
+// Packet: 0x0325
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0325, -1)
+#endif
+
+// Packet: 0x0326
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0326, -1)
+#endif
+
+// Packet: 0x0327
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0327, -1)
+#endif
+
+// Packet: 0x0328
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0328, -1)
+#endif
+
+// Packet: 0x0329
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0329, -1)
+#endif
+
+// Packet: 0x032a
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x032a, -1)
+#endif
+
+// Packet: 0x032b
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x032b, -1)
+#endif
+
+// Packet: 0x032c
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x032c, -1)
+#endif
+
+// Packet: 0x032d
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x032d, -1)
+#endif
+
+// Packet: 0x032e
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x032e, -1)
+#endif
+
+// Packet: 0x032f
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x032f, -1)
+#endif
+
+// Packet: 0x0330
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0330, -1)
+#endif
+
+// Packet: 0x0331
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0331, -1)
+#endif
+
+// Packet: 0x0332
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0332, -1)
+#endif
+
+// Packet: 0x0333
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0333, -1)
+#endif
+
+// Packet: 0x0334
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0334, -1)
+#endif
+
+// Packet: 0x0335
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0335, -1)
+#endif
+
+// Packet: 0x0336
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0336, -1)
+#endif
+
+// Packet: 0x0337
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0337, -1)
+#endif
+
+// Packet: 0x0338
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0338, -1)
+#endif
+
+// Packet: 0x0339
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0339, -1)
+#endif
+
+// Packet: 0x033a
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x033a, -1)
+#endif
+
+// Packet: 0x033b
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x033b, -1)
+#endif
+
+// Packet: 0x033c
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x033c, -1)
+#endif
+
+// Packet: 0x033d
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x033d, -1)
+#endif
+
+// Packet: 0x033e
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x033e, -1)
+#endif
+
+// Packet: 0x033f
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x033f, -1)
+#endif
+
+// Packet: 0x0340
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0340, -1)
+#endif
+
+// Packet: 0x0341
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0341, -1)
+#endif
+
+// Packet: 0x0342
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0342, -1)
+#endif
+
+// Packet: 0x0343
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0343, -1)
+#endif
+
+// Packet: 0x0344
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0344, -1)
+#endif
+
+// Packet: 0x0345
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0345, -1)
+#endif
+
+// Packet: 0x0346
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0346, -1)
+#endif
+
+// Packet: 0x0347
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0347, -1)
+#endif
+
+// Packet: 0x0348
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0348, -1)
+#endif
+
+// Packet: 0x0349
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0349, -1)
+#endif
+
+// Packet: 0x034a
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x034a, -1)
+#endif
+
+// Packet: 0x034b
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x034b, -1)
+#endif
+
+// Packet: 0x034c
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x034c, -1)
+#endif
+
+// Packet: 0x034d
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x034d, -1)
+#endif
+
+// Packet: 0x034e
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x034e, -1)
+#endif
+
+// Packet: 0x034f
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x034f, -1)
+#endif
+
+// Packet: 0x0350
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0350, -1)
+#endif
+
+// Packet: 0x0351
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0351, -1)
+#endif
+
+// Packet: 0x0352
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0352, -1)
+#endif
+
+// Packet: 0x0353
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0353, -1)
+#endif
+
+// Packet: 0x0354
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0354, -1)
+#endif
+
+// Packet: 0x0355
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0355, -1)
+#endif
+
+// Packet: 0x0356
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0356, -1)
+#endif
+
+// Packet: 0x0357
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0357, -1)
+#endif
+
+// Packet: 0x0358
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0358, -1)
+#endif
+
+// Packet: 0x0359
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0359, -1)
+#endif
+
+// Packet: 0x035a
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x035a, -1)
+#endif
+
+// Packet: 0x035b
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x035b, -1)
+#endif
+
+// Packet: 0x035c
+packetLen(0x035c, 2) // CZ_OPEN_SIMPLE_CASHSHOP_ITEMLIST
+
+// Packet: 0x035d
+packetLen(0x035d, -1) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+
+// Packet: 0x035e
+packetLen(0x035e, 2) // CZ_CLOSE_WINDOW
+
+// Packet: 0x035f
+#if PACKETVER >= 20101123
+packetLen(0x035f, 5) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20100105
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+#endif
+
+// Packet: 0x0360
+#if PACKETVER >= 20101123
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20100105
+packetLen(0x0360, -1) // CZ_REQUEST_TIME2
+#endif
+
+// Packet: 0x0361
+#if PACKETVER >= 20101123
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20100105
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#endif
+
+// Packet: 0x0362
+#if PACKETVER >= 20101123
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20100105
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#endif
+
+// Packet: 0x0363
+#if PACKETVER >= 20101123
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20100105
+packetLen(0x0363, -1) // CZ_ITEM_THROW2
+#endif
+
+// Packet: 0x0364
+#if PACKETVER >= 20101123
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20100105
+packetLen(0x0364, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#endif
+
+// Packet: 0x0365
+#if PACKETVER >= 20101123
+packetLen(0x0365, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20100105
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#endif
+
+// Packet: 0x0366
+#if PACKETVER >= 20101123
+packetLen(0x0366, 10) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20100105
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#endif
+
+// Packet: 0x0367
+#if PACKETVER >= 20101123
+packetLen(0x0367, 90) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20100105
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#endif
+
+// Packet: 0x0368
+#if PACKETVER >= 20101123
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20100105
+packetLen(0x0368, -1) // CZ_REQNAME2
+#endif
+
+// Packet: 0x0369
+#if PACKETVER >= 20101123
+packetLen(0x0369, 6) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20100105
+packetLen(0x0369, -1) // CZ_REQNAME_BYGID2
+#endif
+
+// Packet: 0x036a
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x036a, -1)
+#endif
+
+// Packet: 0x036b
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x036b, -1)
+#endif
+
+// Packet: 0x036c
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x036c, -1)
+#endif
+
+// Packet: 0x036d
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x036d, -1)
+#endif
+
+// Packet: 0x036e
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x036e, -1)
+#endif
+
+// Packet: 0x036f
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x036f, -1)
+#endif
+
+// Packet: 0x0370
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0370, -1)
+#endif
+
+// Packet: 0x0371
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0371, -1)
+#endif
+
+// Packet: 0x0372
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0372, -1)
+#endif
+
+// Packet: 0x0373
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0373, -1)
+#endif
+
+// Packet: 0x0374
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0374, -1)
+#endif
+
+// Packet: 0x0375
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0375, -1)
+#endif
+
+// Packet: 0x0376
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0376, -1)
+#endif
+
+// Packet: 0x0377
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0377, -1)
+#endif
+
+// Packet: 0x0378
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0378, -1)
+#endif
+
+// Packet: 0x0379
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0379, -1)
+#endif
+
+// Packet: 0x037a
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x037a, -1)
+#endif
+
+// Packet: 0x037b
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x037b, -1)
+#endif
+
+// Packet: 0x037c
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x037c, -1)
+#endif
+
+// Packet: 0x037d
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x037d, -1)
+#endif
+
+// Packet: 0x037e
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x037e, -1)
+#endif
+
+// Packet: 0x037f
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x037f, -1)
+#endif
+
+// Packet: 0x0380
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0380, -1)
+#endif
+
+// Packet: 0x0381
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0381, -1)
+#endif
+
+// Packet: 0x0382
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0382, -1)
+#endif
+
+// Packet: 0x0383
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0383, -1)
+#endif
+
+// Packet: 0x0384
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0384, -1)
+#endif
+
+// Packet: 0x0385
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0385, -1)
+#endif
+
+// Packet: 0x0386
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0386, -1)
+#endif
+
+// Packet: 0x0387
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0387, -1)
+#endif
+
+// Packet: 0x0388
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0388, -1)
+#endif
+
+// Packet: 0x0389
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0389, -1)
+#endif
+
+// Packet: 0x038a
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x038a, -1)
+#endif
+
+// Packet: 0x038b
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x038b, -1)
+#endif
+
+// Packet: 0x038c
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x038c, -1)
+#endif
+
+// Packet: 0x038d
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x038d, -1)
+#endif
+
+// Packet: 0x038e
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x038e, -1)
+#endif
+
+// Packet: 0x038f
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x038f, -1)
+#endif
+
+// Packet: 0x0390
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0390, -1)
+#endif
+
+// Packet: 0x0391
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0391, -1)
+#endif
+
+// Packet: 0x0392
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0392, -1)
+#endif
+
+// Packet: 0x0393
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0393, -1)
+#endif
+
+// Packet: 0x0394
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0394, -1)
+#endif
+
+// Packet: 0x0395
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0395, -1)
+#endif
+
+// Packet: 0x0396
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0396, -1)
+#endif
+
+// Packet: 0x0397
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0397, -1)
+#endif
+
+// Packet: 0x0398
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0398, -1)
+#endif
+
+// Packet: 0x0399
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0399, -1)
+#endif
+
+// Packet: 0x039a
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x039a, -1)
+#endif
+
+// Packet: 0x039b
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x039b, -1)
+#endif
+
+// Packet: 0x039c
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x039c, -1)
+#endif
+
+// Packet: 0x039d
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x039d, -1)
+#endif
+
+// Packet: 0x039e
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x039e, -1)
+#endif
+
+// Packet: 0x039f
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x039f, -1)
+#endif
+
+// Packet: 0x03a0
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03a0, -1)
+#endif
+
+// Packet: 0x03a1
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03a1, -1)
+#endif
+
+// Packet: 0x03a2
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03a2, -1)
+#endif
+
+// Packet: 0x03a3
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03a3, -1)
+#endif
+
+// Packet: 0x03a4
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03a4, -1)
+#endif
+
+// Packet: 0x03a5
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03a5, -1)
+#endif
+
+// Packet: 0x03a6
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03a6, -1)
+#endif
+
+// Packet: 0x03a7
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03a7, -1)
+#endif
+
+// Packet: 0x03a8
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03a8, -1)
+#endif
+
+// Packet: 0x03a9
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03a9, -1)
+#endif
+
+// Packet: 0x03aa
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03aa, -1)
+#endif
+
+// Packet: 0x03ab
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03ab, -1)
+#endif
+
+// Packet: 0x03ac
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03ac, -1)
+#endif
+
+// Packet: 0x03ad
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03ad, -1)
+#endif
+
+// Packet: 0x03ae
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03ae, -1)
+#endif
+
+// Packet: 0x03af
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03af, -1)
+#endif
+
+// Packet: 0x03b0
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03b0, -1)
+#endif
+
+// Packet: 0x03b1
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03b1, -1)
+#endif
+
+// Packet: 0x03b2
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03b2, -1)
+#endif
+
+// Packet: 0x03b3
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03b3, -1)
+#endif
+
+// Packet: 0x03b4
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03b4, -1)
+#endif
+
+// Packet: 0x03b5
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03b5, -1)
+#endif
+
+// Packet: 0x03b6
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03b6, -1)
+#endif
+
+// Packet: 0x03b7
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03b7, -1)
+#endif
+
+// Packet: 0x03b8
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03b8, -1)
+#endif
+
+// Packet: 0x03b9
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03b9, -1)
+#endif
+
+// Packet: 0x03ba
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03ba, -1)
+#endif
+
+// Packet: 0x03bb
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03bb, -1)
+#endif
+
+// Packet: 0x03bc
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03bc, -1)
+#endif
+
+// Packet: 0x03bd
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03bd, -1)
+#endif
+
+// Packet: 0x03be
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03be, -1)
+#endif
+
+// Packet: 0x03bf
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03bf, -1)
+#endif
+
+// Packet: 0x03c0
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03c0, -1)
+#endif
+
+// Packet: 0x03c1
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03c1, -1)
+#endif
+
+// Packet: 0x03c2
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03c2, -1)
+#endif
+
+// Packet: 0x03c3
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03c3, -1)
+#endif
+
+// Packet: 0x03c4
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03c4, -1)
+#endif
+
+// Packet: 0x03c5
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03c5, -1)
+#endif
+
+// Packet: 0x03c6
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03c6, -1)
+#endif
+
+// Packet: 0x03c7
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03c7, -1)
+#endif
+
+// Packet: 0x03c8
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03c8, -1)
+#endif
+
+// Packet: 0x03c9
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03c9, -1)
+#endif
+
+// Packet: 0x03ca
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03ca, -1)
+#endif
+
+// Packet: 0x03cb
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03cb, -1)
+#endif
+
+// Packet: 0x03cc
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03cc, -1)
+#endif
+
+// Packet: 0x03cd
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03cd, -1)
+#endif
+
+// Packet: 0x03ce
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03ce, -1)
+#endif
+
+// Packet: 0x03cf
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03cf, -1)
+#endif
+
+// Packet: 0x03d0
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03d0, -1)
+#endif
+
+// Packet: 0x03d1
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03d1, -1)
+#endif
+
+// Packet: 0x03d2
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03d2, -1)
+#endif
+
+// Packet: 0x03d3
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03d3, -1)
+#endif
+
+// Packet: 0x03d4
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03d4, -1)
+#endif
+
+// Packet: 0x03d5
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03d5, -1)
+#endif
+
+// Packet: 0x03d6
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03d6, -1)
+#endif
+
+// Packet: 0x03d7
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03d7, -1)
+#endif
+
+// Packet: 0x03d8
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03d8, -1)
+#endif
+
+// Packet: 0x03d9
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03d9, -1)
+#endif
+
+// Packet: 0x03da
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03da, -1)
+#endif
+
+// Packet: 0x03db
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03db, -1)
+#endif
+
+// Packet: 0x03dc
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03dc, -1)
+#endif
+
+// Packet: 0x03dd
+packetLen(0x03dd, 18) // AHC_GAME_GUARD
+
+// Packet: 0x03de
+packetLen(0x03de, 18) // CAH_ACK_GAME_GUARD
+
+// Packet: 0x03e2
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03e2, -1)
+#endif
+
+// Packet: 0x03e3
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03e3, -1)
+#endif
+
+// Packet: 0x03e4
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03e4, -1)
+#endif
+
+// Packet: 0x03e5
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03e5, -1)
+#endif
+
+// Packet: 0x03e6
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03e6, -1)
+#endif
+
+// Packet: 0x03e7
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03e7, -1)
+#endif
+
+// Packet: 0x03e8
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03e8, -1)
+#endif
+
+// Packet: 0x03e9
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03e9, -1)
+#endif
+
+// Packet: 0x03ea
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03ea, -1)
+#endif
+
+// Packet: 0x03eb
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03eb, -1)
+#endif
+
+// Packet: 0x03ec
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03ec, -1)
+#endif
+
+// Packet: 0x03ed
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03ed, -1)
+#endif
+
+// Packet: 0x03ee
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03ee, -1)
+#endif
+
+// Packet: 0x03ef
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03ef, -1)
+#endif
+
+// Packet: 0x03f0
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03f0, -1)
+#endif
+
+// Packet: 0x03f1
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03f1, -1)
+#endif
+
+// Packet: 0x03f2
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03f2, -1)
+#endif
+
+// Packet: 0x03f3
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03f3, -1)
+#endif
+
+// Packet: 0x03f4
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03f4, -1)
+#endif
+
+// Packet: 0x03f5
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03f5, -1)
+#endif
+
+// Packet: 0x03f6
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03f6, -1)
+#endif
+
+// Packet: 0x03f7
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03f7, -1)
+#endif
+
+// Packet: 0x03f8
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03f8, -1)
+#endif
+
+// Packet: 0x03f9
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03f9, -1)
+#endif
+
+// Packet: 0x03fa
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03fa, -1)
+#endif
+
+// Packet: 0x03fb
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03fb, -1)
+#endif
+
+// Packet: 0x03fc
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03fc, -1)
+#endif
+
+// Packet: 0x03fd
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03fd, -1)
+#endif
+
+// Packet: 0x03fe
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03fe, -1)
+#endif
+
+// Packet: 0x03ff
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x03ff, -1)
+#endif
+
+// Packet: 0x0400
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0400, -1)
+#endif
+
+// Packet: 0x0401
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0401, -1)
+#endif
+
+// Packet: 0x0402
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0402, -1)
+#endif
+
+// Packet: 0x0403
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0403, -1)
+#endif
+
+// Packet: 0x0404
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0404, -1)
+#endif
+
+// Packet: 0x0405
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0405, -1)
+#endif
+
+// Packet: 0x0406
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0406, -1)
+#endif
+
+// Packet: 0x0407
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0407, -1)
+#endif
+
+// Packet: 0x0408
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0408, -1)
+#endif
+
+// Packet: 0x0409
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0409, -1)
+#endif
+
+// Packet: 0x040a
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x040a, -1)
+#endif
+
+// Packet: 0x040b
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x040b, -1)
+#endif
+
+// Packet: 0x040c
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x040c, -1)
+#endif
+
+// Packet: 0x040d
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x040d, -1)
+#endif
+
+// Packet: 0x040e
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x040e, -1)
+#endif
+
+// Packet: 0x040f
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x040f, -1)
+#endif
+
+// Packet: 0x0410
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0410, -1)
+#endif
+
+// Packet: 0x0411
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0411, -1)
+#endif
+
+// Packet: 0x0412
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0412, -1)
+#endif
+
+// Packet: 0x0413
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0413, -1)
+#endif
+
+// Packet: 0x0414
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0414, -1)
+#endif
+
+// Packet: 0x0415
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0415, -1)
+#endif
+
+// Packet: 0x0416
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0416, -1)
+#endif
+
+// Packet: 0x0417
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0417, -1)
+#endif
+
+// Packet: 0x0418
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0418, -1)
+#endif
+
+// Packet: 0x0419
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0419, -1)
+#endif
+
+// Packet: 0x041a
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x041a, -1)
+#endif
+
+// Packet: 0x041b
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x041b, -1)
+#endif
+
+// Packet: 0x041c
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x041c, -1)
+#endif
+
+// Packet: 0x041d
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x041d, -1)
+#endif
+
+// Packet: 0x041e
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x041e, -1)
+#endif
+
+// Packet: 0x041f
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x041f, -1)
+#endif
+
+// Packet: 0x0420
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0420, -1)
+#endif
+
+// Packet: 0x0421
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0421, -1)
+#endif
+
+// Packet: 0x0422
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0422, -1)
+#endif
+
+// Packet: 0x0423
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0423, -1)
+#endif
+
+// Packet: 0x0424
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0424, -1)
+#endif
+
+// Packet: 0x0425
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0425, -1)
+#endif
+
+// Packet: 0x0426
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0426, -1)
+#endif
+
+// Packet: 0x0427
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0427, -1)
+#endif
+
+// Packet: 0x0428
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0428, -1)
+#endif
+
+// Packet: 0x0429
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0429, -1)
+#endif
+
+// Packet: 0x042a
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x042a, -1)
+#endif
+
+// Packet: 0x042b
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x042b, -1)
+#endif
+
+// Packet: 0x042c
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x042c, -1)
+#endif
+
+// Packet: 0x042d
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x042d, -1)
+#endif
+
+// Packet: 0x042e
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x042e, -1)
+#endif
+
+// Packet: 0x042f
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x042f, -1)
+#endif
+
+// Packet: 0x0430
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0430, -1)
+#endif
+
+// Packet: 0x0431
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0431, -1)
+#endif
+
+// Packet: 0x0432
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0432, -1)
+#endif
+
+// Packet: 0x0433
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0433, -1)
+#endif
+
+// Packet: 0x0434
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0434, -1)
+#endif
+
+// Packet: 0x0435
+#if PACKETVER >= 20101123
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x0435, -1)
+#endif
+
+// Packet: 0x0436
+packetLen(0x0436, 19) // CZ_ENTER2
+
+// Packet: 0x0437
+packetLen(0x0437, 7) // CZ_REQUEST_ACT2
+
+// Packet: 0x0438
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+
+// Packet: 0x0439
+packetLen(0x0439, 8) // CZ_USE_ITEM2
+
+// Packet: 0x043d
+packetLen(0x043d, 8) // ZC_SKILL_POSTDELAY
+
+// Packet: 0x043e
+packetLen(0x043e, -1) // ZC_SKILL_POSTDELAY_LIST
+
+// Packet: 0x043f
+packetLen(0x043f, 25) // ZC_MSG_STATE_CHANGE2
+
+// Packet: 0x0440
+packetLen(0x0440, 10) // ZC_MILLENNIUMSHIELD
+
+// Packet: 0x0441
+packetLen(0x0441, 4) // ZC_SKILLINFO_DELETE
+
+// Packet: 0x0442
+#if PACKETVER >= 20100817
+packetLen(0x0442, -1) // ZC_SKILL_SELECT_REQUEST
+#elif PACKETVER >= 20100105
+packetLen(0x0442, 8) // ZC_SKILL_SELECT_REQUEST
+#endif
+
+// Packet: 0x0443
+packetLen(0x0443, 8) // CZ_SKILL_SELECT_RESPONSE
+
+// Packet: 0x0444
+packetLen(0x0444, -1) // ZC_SIMPLE_CASH_POINT_ITEMLIST
+
+// Packet: 0x0445
+packetLen(0x0445, 10) // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0446
+packetLen(0x0446, 14) // ZC_QUEST_NOTIFY_EFFECT
+
+// Packet: 0x0447
+packetLen(0x0447, 2) // CZ_BLOCKING_PLAY_CANCEL
+
+// Packet: 0x0448
+packetLen(0x0448, -1) // HC_CHARACTER_LIST
+
+// Packet: 0x044a
+packetLen(0x044a, 6) // CZ_CLIENT_VERSION
+
+// Packet: 0x044b
+packetLen(0x044b, 2) // CZ_CLOSE_SIMPLECASH_SHOP
+
+// Packet: 0x07d0
+#if PACKETVER >= 20100701
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x07d0, 6) // ZC_ES_RESULT
+#endif
+
+// Packet: 0x07d1
+#if PACKETVER >= 20100701
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x07d1, 2) // CZ_ES_GET_LIST
+#endif
+
+// Packet: 0x07d2
+#if PACKETVER >= 20100701
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x07d2, -1) // ZC_ES_LIST
+#endif
+
+// Packet: 0x07d3
+#if PACKETVER >= 20100701
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x07d3, 4) // CZ_ES_CHOOSE
+#endif
+
+// Packet: 0x07d4
+#if PACKETVER >= 20100701
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x07d4, 4) // CZ_ES_CANCEL
+#endif
+
+// Packet: 0x07d5
+#if PACKETVER >= 20100701
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x07d5, 4) // ZC_ES_READY
+#endif
+
+// Packet: 0x07d6
+#if PACKETVER >= 20100701
+// removed
+#elif PACKETVER >= 20100105
+packetLen(0x07d6, 4) // ZC_ES_GOTO
+#endif
+
+// Packet: 0x07d7
+packetLen(0x07d7, 8) // CZ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d8
+packetLen(0x07d8, 8) // ZC_REQ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d9
+packetLen(0x07d9, 268) // ZC_SHORTCUT_KEY_LIST_V2
+
+// Packet: 0x07da
+packetLen(0x07da, 6) // CZ_CHANGE_GROUP_MASTER
+
+// Packet: 0x07db
+packetLen(0x07db, 8) // ZC_HO_PAR_CHANGE
+
+// Packet: 0x07dc
+packetLen(0x07dc, 6) // CZ_SEEK_PARTY
+
+// Packet: 0x07dd
+packetLen(0x07dd, 54) // ZC_SEEK_PARTY
+
+// Packet: 0x07de
+packetLen(0x07de, 30) // CZ_SEEK_PARTY_MEMBER
+
+// Packet: 0x07df
+packetLen(0x07df, 54) // ZC_SEEK_PARTY_MEMBER
+
+// Packet: 0x07e0
+packetLen(0x07e0, 58) // ZC_ES_NOTI_MYINFO
+
+// Packet: 0x07e1
+packetLen(0x07e1, 15) // ZC_SKILLINFO_UPDATE2
+
+// Packet: 0x07e2
+packetLen(0x07e2, 8) // ZC_MSG_VALUE
+
+// Packet: 0x07e3
+packetLen(0x07e3, 6) // ZC_ITEMLISTWIN_OPEN
+
+// Packet: 0x07e4
+packetLen(0x07e4, -1) // CZ_ITEMLISTWIN_RES
+
+// Packet: 0x07e5
+#if PACKETVER >= 20101012
+packetLen(0x07e5, 4) // CH_ENTER_CHECKBOT
+#elif PACKETVER >= 20100105
+packetLen(0x07e5, 8) // CH_ENTER_CHECKBOT
+#endif
+
+// Packet: 0x07e6
+packetLen(0x07e6, 8) // ZC_MSG_SKILL
+
+// Packet: 0x07e7
+packetLen(0x07e7, 32) // CH_CHECKBOT
+
+// Packet: 0x07e8
+packetLen(0x07e8, -1) // HC_CHECKBOT
+
+// Packet: 0x07e9
+packetLen(0x07e9, 5) // HC_CHECKBOT_RESULT
+
+// Packet: 0x07ea
+packetLen(0x07ea, 2) // CZ_BATTLE_FIELD_LIST
+
+// Packet: 0x07eb
+packetLen(0x07eb, -1) // ZC_BATTLE_FIELD_LIST
+
+// Packet: 0x07ec
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+
+// Packet: 0x07ed
+packetLen(0x07ed, 10) // ZC_JOIN_BATTLE_FIELD
+
+// Packet: 0x07ee
+packetLen(0x07ee, 6) // CZ_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07ef
+packetLen(0x07ef, 8) // ZC_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07f0
+#if PACKETVER >= 20100209
+packetLen(0x07f0, 6) // CZ_REQ_BATTLE_STATE_MONITOR
+#elif PACKETVER >= 20100105
+packetLen(0x07f0, 8) // CZ_REQ_BATTLE_STATE_MONITOR
+#endif
+
+// Packet: 0x07f1
+#if PACKETVER >= 20100629
+packetLen(0x07f1, 18) // ZC_ACK_BATTLE_STATE_MONITOR
+#elif PACKETVER >= 20100105
+packetLen(0x07f1, 15) // ZC_ACK_BATTLE_STATE_MONITOR
+#endif
+
+// Packet: 0x07f2
+#if PACKETVER >= 20100629
+packetLen(0x07f2, 8) // ZC_BATTLE_NOTI_START_STEP
+#elif PACKETVER >= 20100105
+packetLen(0x07f2, 6) // ZC_BATTLE_NOTI_START_STEP
+#endif
+
+// Packet: 0x07f3
+#if PACKETVER >= 20100629
+packetLen(0x07f3, 6) // ZC_BATTLE_JOIN_NOTI_DEFER
+#elif PACKETVER >= 20100105
+packetLen(0x07f3, 4) // ZC_BATTLE_JOIN_NOTI_DEFER
+#endif
+
+// Packet: 0x07f4
+packetLen(0x07f4, 3) // ZC_BATTLE_JOIN_DISABLE_STATE
+
+// Packet: 0x07f5
+packetLen(0x07f5, 6) // CZ_GM_FULLSTRIP
+
+// Packet: 0x07f6
+packetLen(0x07f6, 14) // ZC_NOTIFY_EXP
+
+// Packet: 0x07f7
+packetLen(0x07f7, -1) // ZC_NOTIFY_MOVEENTRY7
+
+// Packet: 0x07f8
+packetLen(0x07f8, -1) // ZC_NOTIFY_NEWENTRY5
+
+// Packet: 0x07f9
+packetLen(0x07f9, -1) // ZC_NOTIFY_STANDENTRY5
+
+// Packet: 0x07fa
+packetLen(0x07fa, 8) // ZC_DELETE_ITEM_FROM_BODY
+
+// Packet: 0x07fb
+packetLen(0x07fb, 25) // ZC_USESKILL_ACK2
+
+// Packet: 0x07fc
+packetLen(0x07fc, 10) // ZC_CHANGE_GROUP_MASTER
+
+// Packet: 0x07fd
+packetLen(0x07fd, -1) // ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN
+
+// Packet: 0x07fe
+packetLen(0x07fe, 26) // ZC_PLAY_NPC_BGM
+
+// Packet: 0x07ff
+packetLen(0x07ff, -1) // ZC_DEFINE_CHECK
+
+// Packet: 0x0800
+packetLen(0x0800, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0801
+packetLen(0x0801, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0802
+packetLen(0x0802, 18) // CZ_PARTY_BOOKING_REQ_REGISTER
+
+// Packet: 0x0803
+packetLen(0x0803, 4) // ZC_PARTY_BOOKING_ACK_REGISTER
+
+// Packet: 0x0804
+packetLen(0x0804, 14) // CZ_PARTY_BOOKING_REQ_SEARCH
+
+// Packet: 0x0805
+packetLen(0x0805, -1) // ZC_PARTY_BOOKING_ACK_SEARCH
+
+// Packet: 0x0806
+packetLen(0x0806, 2) // CZ_PARTY_BOOKING_REQ_DELETE
+
+// Packet: 0x0807
+packetLen(0x0807, 4) // ZC_PARTY_BOOKING_ACK_DELETE
+
+// Packet: 0x0808
+packetLen(0x0808, 14) // CZ_PARTY_BOOKING_REQ_UPDATE
+
+// Packet: 0x0809
+packetLen(0x0809, 50) // ZC_PARTY_BOOKING_NOTIFY_INSERT
+
+// Packet: 0x080a
+packetLen(0x080a, 18) // ZC_PARTY_BOOKING_NOTIFY_UPDATE
+
+// Packet: 0x080b
+packetLen(0x080b, 6) // ZC_PARTY_BOOKING_NOTIFY_DELETE
+
+// Packet: 0x080c
+#if PACKETVER >= 20100113
+packetLen(0x080c, 2) // CZ_SIMPLE_CASH_BTNSHOW
+#endif
+
+// Packet: 0x080d
+#if PACKETVER >= 20100113
+packetLen(0x080d, 3) // ZC_SIMPLE_CASH_BTNSHOW
+#endif
+
+// Packet: 0x080e
+#if PACKETVER >= 20100119
+packetLen(0x080e, 14) // ZC_NOTIFY_HP_TO_GROUPM_R2
+#endif
+
+// Packet: 0x080f
+#if PACKETVER >= 20100223
+packetLen(0x080f, 20) // ZC_ADD_EXCHANGE_ITEM2
+#endif
+
+// Packet: 0x0810
+#if PACKETVER >= 20100303
+packetLen(0x0810, 3) // ZC_OPEN_BUYING_STORE
+#endif
+
+// Packet: 0x0811
+#if PACKETVER >= 20100303
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#endif
+
+// Packet: 0x0812
+#if PACKETVER >= 20100420
+packetLen(0x0812, 8) // ZC_FAILED_OPEN_BUYING_STORE_TO_BUYER
+#elif PACKETVER >= 20100303
+packetLen(0x0812, 86) // ZC_FAILED_OPEN_BUYING_STORE_TO_BUYER
+#endif
+
+// Packet: 0x0813
+#if PACKETVER >= 20100309
+packetLen(0x0813, -1) // ZC_MYITEMLIST_BUYING_STORE
+#elif PACKETVER >= 20100303
+packetLen(0x0813, 6) // ZC_MYITEMLIST_BUYING_STORE
+#endif
+
+// Packet: 0x0814
+#if PACKETVER >= 20100420
+packetLen(0x0814, 86) // ZC_BUYING_STORE_ENTRY
+#elif PACKETVER >= 20100309
+packetLen(0x0814, 2) // ZC_BUYING_STORE_ENTRY
+#elif PACKETVER >= 20100303
+packetLen(0x0814, 6) // ZC_BUYING_STORE_ENTRY
+#endif
+
+// Packet: 0x0815
+#if PACKETVER >= 20100420
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20100309
+packetLen(0x0815, 6) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20100303
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#endif
+
+// Packet: 0x0816
+#if PACKETVER >= 20100309
+packetLen(0x0816, 6) // ZC_DISAPPEAR_BUYING_STORE_ENTRY
+#endif
+
+// Packet: 0x0817
+#if PACKETVER >= 20100420
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20100303
+packetLen(0x0817, -1) // CZ_REQ_CLICK_TO_BUYING_STORE
+#endif
+
+// Packet: 0x0818
+#if PACKETVER >= 20100309
+packetLen(0x0818, -1) // ZC_ACK_ITEMLIST_BUYING_STORE
+#elif PACKETVER >= 20100303
+packetLen(0x0818, 6) // ZC_ACK_ITEMLIST_BUYING_STORE
+#endif
+
+// Packet: 0x0819
+#if PACKETVER >= 20100420
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20100309
+packetLen(0x0819, 10) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20100303
+packetLen(0x0819, 4) // CZ_REQ_TRADE_BUYING_STORE
+#endif
+
+// Packet: 0x081a
+#if PACKETVER >= 20100420
+packetLen(0x081a, 4) // ZC_FAILED_TRADE_BUYING_STORE_TO_BUYER
+#elif PACKETVER >= 20100413
+packetLen(0x081a, 10) // ZC_FAILED_TRADE_BUYING_STORE_TO_BUYER
+#elif PACKETVER >= 20100406
+packetLen(0x081a, 6) // ZC_FAILED_TRADE_BUYING_STORE_TO_BUYER
+#elif PACKETVER >= 20100309
+packetLen(0x081a, 4) // ZC_FAILED_TRADE_BUYING_STORE_TO_BUYER
+#endif
+
+// Packet: 0x081b
+#if PACKETVER >= 20100420
+packetLen(0x081b, 10) // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+#elif PACKETVER >= 20100414
+packetLen(0x081b, 8) // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+#elif PACKETVER >= 20100309
+packetLen(0x081b, 4) // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+#endif
+
+// Packet: 0x081c
+#if PACKETVER >= 20100420
+packetLen(0x081c, 10) // ZC_ITEM_DELETE_BUYING_STORE
+#elif PACKETVER >= 20100309
+packetLen(0x081c, 6) // ZC_ITEM_DELETE_BUYING_STORE
+#endif
+
+// Packet: 0x081d
+#if PACKETVER >= 20100309
+packetLen(0x081d, 22) // ZC_EL_INIT
+#endif
+
+// Packet: 0x081e
+#if PACKETVER >= 20100309
+packetLen(0x081e, 8) // ZC_EL_PAR_CHANGE
+#endif
+
+// Packet: 0x081f
+#if PACKETVER >= 20100323
+packetLen(0x081f, -1) // ZC_BROADCAST4
+#endif
+
+// Packet: 0x0820
+#if PACKETVER >= 20100413
+packetLen(0x0820, 11) // ZC_COSTUME_SPRITE_CHANGE
+#endif
+
+// Packet: 0x0821
+#if PACKETVER >= 20100413
+packetLen(0x0821, 2) // AC_OTP_USER
+#endif
+
+// Packet: 0x0822
+#if PACKETVER >= 20100413
+packetLen(0x0822, 9) // CA_OTP_AUTH_REQ
+#endif
+
+// Packet: 0x0823
+#if PACKETVER >= 20100413
+packetLen(0x0823, -1) // AC_OTP_AUTH_ACK
+#endif
+
+// Packet: 0x0824
+#if PACKETVER >= 20100420
+packetLen(0x0824, 6) // ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER
+#endif
+
+// Packet: 0x0825
+#if PACKETVER >= 20100601
+packetLen(0x0825, -1) // CA_SSO_LOGIN_REQ
+#endif
+
+// Packet: 0x0826
+#if PACKETVER >= 20101019
+// removed
+#elif PACKETVER >= 20100601
+packetLen(0x0826, 4) // AC_SSO_LOGIN_ACK
+#endif
+
+// Packet: 0x0827
+#if PACKETVER >= 20100713
+packetLen(0x0827, 6) // CH_DELETE_CHAR3_RESERVED
+#endif
+
+// Packet: 0x0828
+#if PACKETVER >= 20100713
+packetLen(0x0828, 14) // HC_DELETE_CHAR3_RESERVED
+#endif
+
+// Packet: 0x0829
+#if PACKETVER >= 20100728
+packetLen(0x0829, 12) // CH_DELETE_CHAR3
+#elif PACKETVER >= 20100713
+packetLen(0x0829, 6) // CH_DELETE_CHAR3
+#endif
+
+// Packet: 0x082a
+#if PACKETVER >= 20100713
+packetLen(0x082a, 10) // HC_DELETE_CHAR3
+#endif
+
+// Packet: 0x082b
+#if PACKETVER >= 20100713
+packetLen(0x082b, 6) // CH_DELETE_CHAR3_CANCEL
+#endif
+
+// Packet: 0x082c
+#if PACKETVER >= 20100720
+packetLen(0x082c, 10) // HC_DELETE_CHAR3_CANCEL
+#elif PACKETVER >= 20100713
+packetLen(0x082c, 14) // HC_DELETE_CHAR3_CANCEL
+#endif
+
+// Packet: 0x082d
+#if PACKETVER >= 20101221
+packetLen(0x082d, -1) // HC_ACCEPT_ENTER2
+#endif
+
+// Packet: 0x0835
+#if PACKETVER >= 20100601
+packetLen(0x0835, -1) // CZ_SEARCH_STORE_INFO
+#endif
+
+// Packet: 0x0836
+#if PACKETVER >= 20100601
+packetLen(0x0836, -1) // ZC_SEARCH_STORE_INFO_ACK
+#endif
+
+// Packet: 0x0837
+#if PACKETVER >= 20100601
+packetLen(0x0837, 3) // ZC_SEARCH_STORE_INFO_FAILED
+#endif
+
+// Packet: 0x0838
+#if PACKETVER >= 20100608
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20100601
+packetLen(0x0838, 3) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#endif
+
+// Packet: 0x0839
+#if PACKETVER >= 20100608
+packetLen(0x0839, 66) // ZC_ACK_BAN_GUILD_SSO
+#endif
+
+// Packet: 0x083a
+#if PACKETVER >= 20100701
+packetLen(0x083a, 5) // ZC_OPEN_SEARCH_STORE_INFO
+#elif PACKETVER >= 20100608
+packetLen(0x083a, 4) // ZC_OPEN_SEARCH_STORE_INFO
+#endif
+
+// Packet: 0x083b
+#if PACKETVER >= 20100608
+packetLen(0x083b, 2) // CZ_CLOSE_SEARCH_STORE_INFO
+#endif
+
+// Packet: 0x083c
+#if PACKETVER >= 20100608
+packetLen(0x083c, 12) // CZ_SSILIST_ITEM_CLICK
+#endif
+
+// Packet: 0x083d
+#if PACKETVER >= 20100608
+packetLen(0x083d, 6) // ZC_SSILIST_ITEM_CLICK_ACK
+#endif
+
+// Packet: 0x083e
+#if PACKETVER >= 20100615
+packetLen(0x083e, 26) // AC_REFUSE_LOGIN2
+#endif
+
+// Packet: 0x083f
+#if PACKETVER >= 20100629
+// removed
+#elif PACKETVER >= 20100622
+packetLen(0x083f, 22) // ZC_SEARCH_STORE_OPEN_INFO
+#endif
+
+// Packet: 0x0840
+#if PACKETVER >= 20100713
+packetLen(0x0840, -1) // HC_NOTIFY_ACCESSIBLE_MAPNAME
+#endif
+
+// Packet: 0x0841
+#if PACKETVER >= 20100714
+packetLen(0x0841, 4) // CH_SELECT_ACCESSIBLE_MAPNAME
+#elif PACKETVER >= 20100713
+packetLen(0x0841, 19) // CH_SELECT_ACCESSIBLE_MAPNAME
+#endif
+
+// Packet: 0x0842
+#if PACKETVER >= 20100720
+packetLen(0x0842, 6) // CZ_RECALL_SSO
+#endif
+
+// Packet: 0x0843
+#if PACKETVER >= 20100720
+packetLen(0x0843, 6) // CZ_REMOVE_AID_SSO
+#endif
+
+// Packet: 0x0844
+#if PACKETVER >= 20100824
+packetLen(0x0844, 2) // CZ_SE_CASHSHOP_OPEN
+#endif
+
+// Packet: 0x0845
+#if PACKETVER >= 20100824
+packetLen(0x0845, 10) // ZC_SE_CASHSHOP_OPEN
+#endif
+
+// Packet: 0x0846
+#if PACKETVER >= 20100824
+packetLen(0x0846, 4) // CZ_REQ_SE_CASH_TAB_CODE
+#endif
+
+// Packet: 0x0847
+#if PACKETVER >= 20100824
+packetLen(0x0847, -1) // ZC_ACK_SE_CASH_ITEM_LIST
+#endif
+
+// Packet: 0x0848
+#if PACKETVER >= 20100824
+packetLen(0x0848, -1) // CZ_SE_PC_BUY_CASHITEM_LIST
+#endif
+
+// Packet: 0x0849
+#if PACKETVER >= 20100914
+packetLen(0x0849, 16) // ZC_SE_PC_BUY_CASHITEM_RESULT
+#elif PACKETVER >= 20100824
+packetLen(0x0849, 12) // ZC_SE_PC_BUY_CASHITEM_RESULT
+#endif
+
+// Packet: 0x084a
+#if PACKETVER >= 20101019
+packetLen(0x084a, 2) // CZ_SE_CASHSHOP_CLOSE
+#endif
+
+// Packet: 0x084b
+#if PACKETVER >= 20101019
+packetLen(0x084b, 19) // ZC_ITEM_FALL_ENTRY4
+#endif
+
+// Packet: 0x084c
+#if PACKETVER >= 20101026
+packetLen(0x084c, 10) // CZ_MACRO_USE_SKILL
+#endif
+
+// Packet: 0x084d
+#if PACKETVER >= 20101026
+packetLen(0x084d, 10) // CZ_MACRO_USE_SKILL_TOGROUND
+#endif
+
+// Packet: 0x084e
+#if PACKETVER >= 20101026
+packetLen(0x084e, 5) // CZ_MACRO_REQUEST_MOVE
+#endif
+
+// Packet: 0x084f
+#if PACKETVER >= 20101026
+packetLen(0x084f, 6) // CZ_MACRO_ITEM_PICKUP
+#endif
+
+// Packet: 0x0850
+#if PACKETVER >= 20101026
+packetLen(0x0850, 7) // CZ_MACRO_REQUEST_ACT
+#endif
+
+// Packet: 0x0851
+#if PACKETVER >= 20101102
+packetLen(0x0851, -1) // ZC_GPK_DYNCODE
+#endif
+
+// Packet: 0x0852
+#if PACKETVER >= 20101102
+packetLen(0x0852, 2) // CZ_GPK_DYNCODE_RELOAD
+#endif
+
+// Packet: 0x0853
+#if PACKETVER >= 20101102
+packetLen(0x0853, -1) // ZC_GPK_AUTH
+#endif
+
+// Packet: 0x0854
+#if PACKETVER >= 20101102
+packetLen(0x0854, -1) // CZ_GPK_AUTH
+#endif
+
+// Packet: 0x0855
+#if PACKETVER >= 20101102
+packetLen(0x0855, 6) // ZC_MACRO_ITEMPICKUP_FAIL
+#endif
+
+// Packet: 0x0856
+#if PACKETVER >= 20101123
+packetLen(0x0856, -1) // ZC_NOTIFY_MOVEENTRY8
+#endif
+
+// Packet: 0x0857
+#if PACKETVER >= 20101123
+packetLen(0x0857, -1) // ZC_NOTIFY_STANDENTRY7
+#endif
+
+// Packet: 0x0858
+#if PACKETVER >= 20101123
+packetLen(0x0858, -1) // ZC_NOTIFY_NEWENTRY6
+#endif
+
+// Packet: 0x0859
+#if PACKETVER >= 20101123
+packetLen(0x0859, -1) // ZC_EQUIPWIN_MICROSCOPE2
+#endif
+
+// Packet: 0x085a
+#if PACKETVER >= 20101123
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x085b
+#if PACKETVER >= 20101123
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x085c
+#if PACKETVER >= 20101123
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#endif
+
+// Packet: 0x085d
+#if PACKETVER >= 20101123
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x085e
+#if PACKETVER >= 20101123
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x085f
+#if PACKETVER >= 20101123
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x0860
+#if PACKETVER >= 20101123
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x0861
+#if PACKETVER >= 20101123
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x0862
+#if PACKETVER >= 20101123
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x0863
+#if PACKETVER >= 20101123
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x0864
+#if PACKETVER >= 20101123
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x0865
+#if PACKETVER >= 20101123
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0866
+#if PACKETVER >= 20101123
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0867
+#if PACKETVER >= 20101123
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0868
+#if PACKETVER >= 20101123
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0869
+#if PACKETVER >= 20101123
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x086a
+#if PACKETVER >= 20101123
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x086b
+#if PACKETVER >= 20101123
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x086c
+#if PACKETVER >= 20101123
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x086d
+#if PACKETVER >= 20101123
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x086e
+#if PACKETVER >= 20101123
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x086f
+#if PACKETVER >= 20101123
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x0870
+#if PACKETVER >= 20101123
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x0871
+#if PACKETVER >= 20101123
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x0872
+#if PACKETVER >= 20101123
+packetLen(0x0872, 2)
+#endif
+
+// Packet: 0x0873
+#if PACKETVER >= 20101123
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x0874
+#if PACKETVER >= 20101123
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x0875
+#if PACKETVER >= 20101123
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x0876
+#if PACKETVER >= 20101123
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x0877
+#if PACKETVER >= 20101123
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x0878
+#if PACKETVER >= 20101123
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x0879
+#if PACKETVER >= 20101123
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x087a
+#if PACKETVER >= 20101123
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x087b
+#if PACKETVER >= 20101123
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x087c
+#if PACKETVER >= 20101123
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#endif
+
+// Packet: 0x087d
+#if PACKETVER >= 20101123
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x087e
+#if PACKETVER >= 20101123
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x087f
+#if PACKETVER >= 20101123
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#endif
+
+// Packet: 0x0880
+#if PACKETVER >= 20101123
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x0881
+#if PACKETVER >= 20101123
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x0882
+#if PACKETVER >= 20101123
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x0883
+#if PACKETVER >= 20101123
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x0884
+#if PACKETVER >= 20101123
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x0885
+#if PACKETVER >= 20101123
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x0886
+#if PACKETVER >= 20101123
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#endif
+
+// Packet: 0x0887
+#if PACKETVER >= 20101123
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x0888
+#if PACKETVER >= 20101123
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x0889
+#if PACKETVER >= 20101123
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x088a
+#if PACKETVER >= 20101123
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x088b
+#if PACKETVER >= 20101123
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x088c
+#if PACKETVER >= 20101123
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x088d
+#if PACKETVER >= 20101123
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x088e
+#if PACKETVER >= 20101123
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x088f
+#if PACKETVER >= 20101123
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0890
+#if PACKETVER >= 20101123
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0891
+#if PACKETVER >= 20101123
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0892
+#if PACKETVER >= 20101123
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0893
+#if PACKETVER >= 20101123
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x0894
+#if PACKETVER >= 20101123
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x0895
+#if PACKETVER >= 20101123
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x0896
+#if PACKETVER >= 20101123
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x0897
+#if PACKETVER >= 20101123
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x0898
+#if PACKETVER >= 20101123
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x0899
+#if PACKETVER >= 20101123
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x089a
+#if PACKETVER >= 20101123
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x089b
+#if PACKETVER >= 20101123
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x089c
+#if PACKETVER >= 20101123
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#endif
+
+// Packet: 0x089d
+#if PACKETVER >= 20101123
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x089e
+#if PACKETVER >= 20101123
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x089f
+#if PACKETVER >= 20101123
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x08a0
+#if PACKETVER >= 20101123
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x08a1
+#if PACKETVER >= 20101123
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x08a2
+#if PACKETVER >= 20101123
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x08a3
+#if PACKETVER >= 20101123
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x08a4
+#if PACKETVER >= 20101123
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x08a5
+#if PACKETVER >= 20101123
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x08a6
+#if PACKETVER >= 20101123
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#endif
+
+// Packet: 0x08a7
+#if PACKETVER >= 20101123
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x08a8
+#if PACKETVER >= 20101123
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x08a9
+#if PACKETVER >= 20101123
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#endif
+
+// Packet: 0x08aa
+#if PACKETVER >= 20101123
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x08ab
+#if PACKETVER >= 20101123
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x08ac
+#if PACKETVER >= 20101123
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x08ad
+#if PACKETVER >= 20101123
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x08af
+#if PACKETVER >= 20101228
+packetLen(0x08af, 10) // HC_WAITING_LOGIN
+#endif
+
+// Packet: 0x08b1
+#if PACKETVER >= 20101221
+packetLen(0x08b1, -1) // ZC_MCSTORE_NOTMOVEITEM_LIST
+#endif
+
+// Packet: 0x08b2
+#if PACKETVER >= 20101228
+packetLen(0x08b2, -1) // AC_REALNAME_AUTH
+#endif
+
+
+#endif /* COMMON_PACKETS2010_LEN_RE_H */
diff --git a/src/common/packets/packets2011_len_main.h b/src/common/packets/packets2011_len_main.h
new file mode 100644
index 000000000..2728aeb61
--- /dev/null
+++ b/src/common/packets/packets2011_len_main.h
@@ -0,0 +1,7200 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2011_LEN_MAIN_H
+#define COMMON_PACKETS2011_LEN_MAIN_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+#if PACKETVER >= 20111101
+packetLen(0x006d, 146) // HC_ACCEPT_MAKECHAR
+#elif PACKETVER >= 20110111
+packetLen(0x006d, 138) // HC_ACCEPT_MAKECHAR
+#elif PACKETVER >= 20110104
+packetLen(0x006d, 134) // HC_ACCEPT_MAKECHAR
+#endif
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 22) // CZ_ENTER
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 44) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 10) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, 14)
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+packetLen(0x0094, 19) // CZ_REQNAME
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+packetLen(0x00a7, 9)
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 9) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+packetLen(0x00f7, 17) // CZ_REQUEST_TIME
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+packetLen(0x0113, 25) // CZ_USE_SKILL
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 37) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+#if PACKETVER >= 20111220
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20111213
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20111207
+packetLen(0x0202, 8) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20111122
+packetLen(0x0202, 18) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20111101
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20111025
+packetLen(0x0202, 4) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20111017
+packetLen(0x0202, 90) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20111010
+packetLen(0x0202, 8) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20110920
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20110906
+packetLen(0x0202, 10) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20110823
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20110816
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20110726
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20110718
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20110711
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20110531
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20110523
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20110517
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20110511
+packetLen(0x0202, 6) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20110426
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20110419
+packetLen(0x0202, 6) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20110405
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20110329
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20110322
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20110315
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20110308
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20110222
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20110215
+packetLen(0x0202, 8) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20110125
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20110118
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20110111
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20110104
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+
+// Packet: 0x022b
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+
+// Packet: 0x022c
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+
+// Packet: 0x022d
+#if PACKETVER >= 20111227
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20111220
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+#elif PACKETVER >= 20111213
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20111207
+packetLen(0x022d, 8) // CZ_COMMAND_MER
+#elif PACKETVER >= 20111122
+packetLen(0x022d, 7) // CZ_COMMAND_MER
+#elif PACKETVER >= 20111114
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20111108
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+#elif PACKETVER >= 20111025
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20111017
+packetLen(0x022d, 12) // CZ_COMMAND_MER
+#elif PACKETVER >= 20111004
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20110920
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20110906
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20110823
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20110816
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20110809
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20110802
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+#elif PACKETVER >= 20110726
+packetLen(0x022d, 12) // CZ_COMMAND_MER
+#elif PACKETVER >= 20110705
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20110627
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20110620
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20110614
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+#elif PACKETVER >= 20110531
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20110523
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20110503
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20110426
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20110412
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20110405
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+#elif PACKETVER >= 20110329
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20110315
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20110308
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20110215
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20110208
+packetLen(0x022d, 36) // CZ_COMMAND_MER
+#elif PACKETVER >= 20110131
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20110125
+packetLen(0x022d, 26) // CZ_COMMAND_MER
+#elif PACKETVER >= 20110118
+packetLen(0x022d, 10) // CZ_COMMAND_MER
+#elif PACKETVER >= 20110111
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20110104
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#endif
+
+// Packet: 0x022e
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+
+// Packet: 0x022f
+packetLen(0x022f, 5) // ZC_FEED_MER
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+#if PACKETVER >= 20111220
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20111213
+packetLen(0x023b, 8) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20111207
+packetLen(0x023b, 19) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20111114
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20111108
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20111101
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20111025
+packetLen(0x023b, 5) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20111010
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20111004
+packetLen(0x023b, 6) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110928
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110920
+packetLen(0x023b, 5) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110906
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110831
+packetLen(0x023b, 10) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110823
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110816
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110726
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110718
+packetLen(0x023b, 6) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110705
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110627
+packetLen(0x023b, 4) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110620
+packetLen(0x023b, 8) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110531
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110523
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110517
+packetLen(0x023b, 5) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110511
+packetLen(0x023b, 7) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110426
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110419
+packetLen(0x023b, 5) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110405
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110329
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110308
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110228
+packetLen(0x023b, 5) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110222
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110215
+packetLen(0x023b, 18) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110208
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110131
+packetLen(0x023b, 6) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110125
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110118
+packetLen(0x023b, -1) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110111
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110104
+packetLen(0x023b, 4) // CZ_ACK_STORE_PASSWORD
+#endif
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+
+// Packet: 0x0275
+packetLen(0x0275, 37) // CH_ENTER2
+
+// Packet: 0x0276
+packetLen(0x0276, -1) // AC_ACCEPT_LOGIN2
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+#if PACKETVER >= 20111227
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20111220
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20111213
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20111207
+packetLen(0x0281, 7) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20111122
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20111114
+packetLen(0x0281, 6) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20111108
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20111101
+packetLen(0x0281, 36) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20111025
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20111004
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110928
+packetLen(0x0281, 5) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110920
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110906
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110823
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110816
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110809
+packetLen(0x0281, 18) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110726
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110718
+packetLen(0x0281, 18) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110711
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110705
+packetLen(0x0281, 6) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110627
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110620
+packetLen(0x0281, 6) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110607
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110531
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110523
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110511
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110503
+packetLen(0x0281, 7) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110426
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110419
+packetLen(0x0281, 8) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110412
+packetLen(0x0281, 26) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110405
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110329
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110315
+packetLen(0x0281, 8) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110308
+packetLen(0x0281, 36) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110228
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110222
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110125
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110118
+packetLen(0x0281, 7) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110104
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#endif
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+
+// Packet: 0x0288
+packetLen(0x0288, -1) // CZ_PC_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0289
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0296
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0297
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0298
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+
+// Packet: 0x0299
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+
+// Packet: 0x029a
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+
+// Packet: 0x029b
+packetLen(0x029b, 80) // ZC_MER_INIT
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a5
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+
+// Packet: 0x02a6
+packetLen(0x02a6, -1) // ZC_HACKSH_CPX_MSG
+
+// Packet: 0x02a7
+packetLen(0x02a7, -1) // CZ_HACKSH_CPX_MSG
+
+// Packet: 0x02aa
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+
+// Packet: 0x02ab
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+
+// Packet: 0x02ac
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+
+// Packet: 0x02ad
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+
+// Packet: 0x02b0
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+
+// Packet: 0x02b1
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+
+// Packet: 0x02b2
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+
+// Packet: 0x02b3
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+
+// Packet: 0x02b4
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+
+// Packet: 0x02b5
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+
+// Packet: 0x02b6
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+
+// Packet: 0x02b7
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+
+// Packet: 0x02b8
+packetLen(0x02b8, 22) // ZC_ITEM_PICKUP_PARTY
+
+// Packet: 0x02b9
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+
+// Packet: 0x02ba
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+
+// Packet: 0x02bb
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+
+// Packet: 0x02bc
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+
+// Packet: 0x02c1
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+
+// Packet: 0x02c2
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+
+// Packet: 0x02c4
+#if PACKETVER >= 20111227
+packetLen(0x02c4, 36) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20111220
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20111213
+packetLen(0x02c4, 6) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20111122
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20111108
+packetLen(0x02c4, 8) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20111101
+packetLen(0x02c4, 10) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20111010
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20111004
+packetLen(0x02c4, 10) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20110831
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20110823
+packetLen(0x02c4, 5) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20110816
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20110809
+packetLen(0x02c4, 8) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20110802
+packetLen(0x02c4, 5) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20110726
+packetLen(0x02c4, 4) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20110718
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20110711
+packetLen(0x02c4, 6) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20110705
+packetLen(0x02c4, 4) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20110627
+packetLen(0x02c4, 6) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20110614
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20110607
+packetLen(0x02c4, 19) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20110523
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20110517
+packetLen(0x02c4, 6) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20110511
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20110503
+packetLen(0x02c4, 8) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20110426
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20110419
+packetLen(0x02c4, -1) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20110322
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20110315
+packetLen(0x02c4, 6) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20110228
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20110222
+packetLen(0x02c4, 6) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20110215
+packetLen(0x02c4, 36) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20110125
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20110118
+packetLen(0x02c4, 6) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20110104
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#endif
+
+// Packet: 0x02c5
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c6
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+
+// Packet: 0x02c7
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c8
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+
+// Packet: 0x02c9
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+
+// Packet: 0x02ca
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+
+// Packet: 0x02cb
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+
+// Packet: 0x02cc
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+
+// Packet: 0x02cd
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+
+// Packet: 0x02ce
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+
+// Packet: 0x02cf
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+
+// Packet: 0x02d0
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d1
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d2
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d3
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+
+// Packet: 0x02d4
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+
+// Packet: 0x02d5
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+
+// Packet: 0x02d6
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d7
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d8
+packetLen(0x02d8, 10) // CZ_CONFIG
+
+// Packet: 0x02d9
+packetLen(0x02d9, 10) // ZC_CONFIG
+
+// Packet: 0x02da
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+
+// Packet: 0x02db
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+
+// Packet: 0x02dc
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+
+// Packet: 0x02dd
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+
+// Packet: 0x02de
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+
+// Packet: 0x02df
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+
+// Packet: 0x02e0
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+
+// Packet: 0x02e1
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+
+// Packet: 0x02e2
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+
+// Packet: 0x02e3
+packetLen(0x02e3, 22) // CZ_USE_SKILL_NEW_JAPEN
+
+// Packet: 0x02e4
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+
+// Packet: 0x02e5
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+
+// Packet: 0x02e6
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+
+// Packet: 0x02e7
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+
+// Packet: 0x02e8
+packetLen(0x02e8, -1) // ZC_NORMAL_ITEMLIST3
+
+// Packet: 0x02e9
+packetLen(0x02e9, -1) // ZC_CART_NORMAL_ITEMLIST3
+
+// Packet: 0x02ea
+packetLen(0x02ea, -1) // ZC_STORE_NORMAL_ITEMLIST3
+
+// Packet: 0x02eb
+packetLen(0x02eb, 13) // ZC_ACCEPT_ENTER2
+
+// Packet: 0x02ec
+packetLen(0x02ec, 67) // ZC_NOTIFY_MOVEENTRY4
+
+// Packet: 0x02ed
+packetLen(0x02ed, 59) // ZC_NOTIFY_NEWENTRY4
+
+// Packet: 0x02ee
+packetLen(0x02ee, 60) // ZC_NOTIFY_STANDENTRY4
+
+// Packet: 0x02ef
+packetLen(0x02ef, 8) // ZC_NOTIFY_FONT
+
+// Packet: 0x02f0
+packetLen(0x02f0, 10) // ZC_PROGRESS
+
+// Packet: 0x02f1
+packetLen(0x02f1, 2) // CZ_PROGRESS
+
+// Packet: 0x02f2
+packetLen(0x02f2, 2) // ZC_PROGRESS_CANCEL
+
+// Packet: 0x02f3
+#if PACKETVER >= 20110131
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+#endif
+
+// Packet: 0x02f4
+#if PACKETVER >= 20110131
+packetLen(0x02f4, 3) // ZC_IRMAIL_SEND_RES
+#endif
+
+// Packet: 0x02f5
+#if PACKETVER >= 20110131
+packetLen(0x02f5, 7) // ZC_IRMAIL_NOTIFY
+#endif
+
+// Packet: 0x02f6
+#if PACKETVER >= 20110131
+packetLen(0x02f6, 7) // CZ_IRMAIL_LIST
+#endif
+
+// Packet: 0x035c
+packetLen(0x035c, 2) // CZ_OPEN_SIMPLE_CASHSHOP_ITEMLIST
+
+// Packet: 0x035d
+packetLen(0x035d, -1) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+
+// Packet: 0x035e
+packetLen(0x035e, 2) // CZ_CLOSE_WINDOW
+
+// Packet: 0x035f
+#if PACKETVER >= 20111227
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20111220
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20111213
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20111207
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20111108
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20111101
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20111025
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20111017
+packetLen(0x035f, 19) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20111010
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20110928
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20110920
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20110906
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20110823
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20110802
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20110726
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20110718
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20110711
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20110627
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20110620
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20110517
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20110503
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20110419
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20110405
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20110329
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20110322
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20110308
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20110222
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20110208
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20110131
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20110125
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20110118
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20110104
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#endif
+
+// Packet: 0x0360
+#if PACKETVER >= 20111227
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20111220
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20111122
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20111108
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20111101
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20111025
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20111017
+packetLen(0x0360, 5) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20111004
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110928
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110920
+packetLen(0x0360, 19) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110906
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110831
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110823
+packetLen(0x0360, 12) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110809
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110802
+packetLen(0x0360, 90) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110711
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110705
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110620
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110614
+packetLen(0x0360, 4) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110517
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110511
+packetLen(0x0360, 36) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110503
+packetLen(0x0360, 5) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110426
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110419
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110405
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110329
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110322
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110315
+packetLen(0x0360, 5) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110308
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110228
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110222
+packetLen(0x0360, 26) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110208
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110131
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110125
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110118
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110104
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#endif
+
+// Packet: 0x0361
+#if PACKETVER >= 20111220
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20111213
+packetLen(0x0361, 26) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20111207
+packetLen(0x0361, 10) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20111122
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20111114
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20111025
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20111017
+packetLen(0x0361, 6) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20111010
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20111004
+packetLen(0x0361, 18) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20110928
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20110831
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20110823
+packetLen(0x0361, 18) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20110816
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20110809
+packetLen(0x0361, 10) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20110726
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20110718
+packetLen(0x0361, 90) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20110711
+packetLen(0x0361, 10) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20110705
+packetLen(0x0361, 6) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20110627
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20110620
+packetLen(0x0361, 4) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20110614
+packetLen(0x0361, 8) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20110607
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20110531
+packetLen(0x0361, 7) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20110523
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20110511
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20110503
+packetLen(0x0361, 8) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20110405
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20110329
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20110322
+packetLen(0x0361, 10) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20110315
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20110308
+packetLen(0x0361, 6) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20110228
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20110131
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20110125
+packetLen(0x0361, 26) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20110118
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20110111
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20110104
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#endif
+
+// Packet: 0x0362
+#if PACKETVER >= 20111213
+packetLen(0x0362, 5) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20111207
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20111122
+packetLen(0x0362, 8) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20111017
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20111010
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20111004
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110928
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110920
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110906
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110831
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110823
+packetLen(0x0362, 10) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110816
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110809
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110802
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110726
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110620
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110607
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110531
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110523
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110517
+packetLen(0x0362, 4) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110511
+packetLen(0x0362, 8) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110426
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110419
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110412
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110405
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110329
+packetLen(0x0362, 36) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110322
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110315
+packetLen(0x0362, 4) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110308
+packetLen(0x0362, 10) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110208
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110131
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110125
+packetLen(0x0362, 8) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110118
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110104
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#endif
+
+// Packet: 0x0363
+#if PACKETVER >= 20111227
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20111220
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20111207
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20111122
+packetLen(0x0363, 90) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20111114
+packetLen(0x0363, 18) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20111101
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20111025
+packetLen(0x0363, 19) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20111017
+packetLen(0x0363, 26) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20111010
+packetLen(0x0363, 7) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20111004
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110928
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110920
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110906
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110823
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110816
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110809
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110718
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110711
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110627
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110620
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110607
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110531
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110523
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110503
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110426
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110419
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110412
+packetLen(0x0363, -1) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110405
+packetLen(0x0363, 26) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110329
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110322
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110315
+packetLen(0x0363, 5) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110308
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110228
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110222
+packetLen(0x0363, 4) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110208
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110131
+packetLen(0x0363, 10) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110125
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110118
+packetLen(0x0363, 5) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110104
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#endif
+
+// Packet: 0x0364
+#if PACKETVER >= 20111227
+packetLen(0x0364, 10) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20111220
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20111207
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20111114
+packetLen(0x0364, 36) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20111108
+packetLen(0x0364, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20111101
+packetLen(0x0364, 5) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20111017
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20111010
+packetLen(0x0364, 19) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20111004
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110928
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110920
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110906
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110823
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110816
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110809
+packetLen(0x0364, 90) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110726
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110718
+packetLen(0x0364, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110705
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110627
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110620
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110607
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110531
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110523
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110517
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110511
+packetLen(0x0364, 5) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110503
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110419
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110412
+packetLen(0x0364, 10) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110405
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110329
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110315
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110308
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110228
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110222
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110215
+packetLen(0x0364, 5) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110208
+packetLen(0x0364, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110131
+packetLen(0x0364, 90) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110125
+packetLen(0x0364, 12) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110104
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#endif
+
+// Packet: 0x0365
+#if PACKETVER >= 20111227
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20111220
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20111213
+packetLen(0x0365, 6) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20111207
+packetLen(0x0365, 12) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20111122
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20111114
+packetLen(0x0365, 26) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20111108
+packetLen(0x0365, 10) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20111010
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20111004
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20110928
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20110920
+packetLen(0x0365, 90) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20110906
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20110831
+packetLen(0x0365, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20110823
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20110816
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20110809
+packetLen(0x0365, 6) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20110705
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20110627
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20110620
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20110607
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20110531
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20110523
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20110517
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20110511
+packetLen(0x0365, 6) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20110503
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20110426
+packetLen(0x0365, 90) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20110412
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20110405
+packetLen(0x0365, 26) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20110329
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20110118
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20110104
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#endif
+
+// Packet: 0x0366
+#if PACKETVER >= 20111227
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20111220
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20111213
+packetLen(0x0366, 4) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20111207
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20111122
+packetLen(0x0366, 12) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20111108
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20111101
+packetLen(0x0366, 5) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20111025
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20111017
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20111010
+packetLen(0x0366, 5) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20110928
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20110920
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20110906
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20110831
+packetLen(0x0366, 5) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20110823
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20110816
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20110809
+packetLen(0x0366, 4) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20110802
+packetLen(0x0366, 12) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20110711
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20110705
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20110620
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20110517
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20110426
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20110419
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20110405
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20110329
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20110322
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20110308
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20110228
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20110208
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20110131
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20110125
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20110118
+packetLen(0x0366, 6) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20110104
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#endif
+
+// Packet: 0x0367
+#if PACKETVER >= 20111220
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20111213
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20111207
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20111122
+packetLen(0x0367, 4) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20111101
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20111025
+packetLen(0x0367, 8) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20111017
+packetLen(0x0367, 10) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20111010
+packetLen(0x0367, 26) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20111004
+packetLen(0x0367, 6) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20110906
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20110831
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20110816
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20110809
+packetLen(0x0367, 26) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20110802
+packetLen(0x0367, 5) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20110726
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20110718
+packetLen(0x0367, 19) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20110627
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20110620
+packetLen(0x0367, 90) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20110614
+packetLen(0x0367, 6) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20110531
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20110523
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20110517
+packetLen(0x0367, 26) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20110419
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20110405
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20110329
+packetLen(0x0367, 6) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20110322
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20110315
+packetLen(0x0367, 8) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20110131
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20110125
+packetLen(0x0367, 10) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20110118
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20110111
+packetLen(0x0367, 36) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20110104
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#endif
+
+// Packet: 0x0368
+#if PACKETVER >= 20111227
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20111220
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20111122
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20111108
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20111101
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20111025
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20111010
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20110906
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20110831
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20110809
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20110802
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20110726
+packetLen(0x0368, 8) // CZ_REQNAME2
+#elif PACKETVER >= 20110718
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20110711
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20110627
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20110620
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20110523
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20110426
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20110419
+packetLen(0x0368, 4) // CZ_REQNAME2
+#elif PACKETVER >= 20110412
+packetLen(0x0368, 19) // CZ_REQNAME2
+#elif PACKETVER >= 20110405
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20110329
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20110322
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20110315
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20110308
+packetLen(0x0368, 5) // CZ_REQNAME2
+#elif PACKETVER >= 20110228
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20110208
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20110131
+packetLen(0x0368, 26) // CZ_REQNAME2
+#elif PACKETVER >= 20110125
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20110118
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20110104
+packetLen(0x0368, 6) // CZ_REQNAME2
+#endif
+
+// Packet: 0x0369
+#if PACKETVER >= 20111227
+packetLen(0x0369, 26) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20111220
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20111207
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20111122
+packetLen(0x0369, -1) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20111114
+packetLen(0x0369, 6) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20111108
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20111101
+packetLen(0x0369, 10) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20111025
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20111010
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20111004
+packetLen(0x0369, 8) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110928
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110920
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110906
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110831
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110823
+packetLen(0x0369, -1) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110816
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110809
+packetLen(0x0369, 8) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110726
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110718
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110711
+packetLen(0x0369, 19) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110705
+packetLen(0x0369, 18) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110620
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110607
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110531
+packetLen(0x0369, 5) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110517
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110503
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110426
+packetLen(0x0369, -1) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110419
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110412
+packetLen(0x0369, 4) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110405
+packetLen(0x0369, 6) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110329
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110322
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110308
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110228
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110208
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110131
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110125
+packetLen(0x0369, 18) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110118
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110104
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#endif
+
+// Packet: 0x03dd
+packetLen(0x03dd, 18) // AHC_GAME_GUARD
+
+// Packet: 0x03de
+packetLen(0x03de, 18) // CAH_ACK_GAME_GUARD
+
+// Packet: 0x0436
+#if PACKETVER >= 20111227
+packetLen(0x0436, 10) // CZ_ENTER2
+#elif PACKETVER >= 20111213
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20111122
+packetLen(0x0436, 6) // CZ_ENTER2
+#elif PACKETVER >= 20111108
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20111101
+packetLen(0x0436, 26) // CZ_ENTER2
+#elif PACKETVER >= 20111025
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20111017
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20111010
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20111004
+packetLen(0x0436, 19) // CZ_ENTER2
+#elif PACKETVER >= 20110928
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20110920
+packetLen(0x0436, 12) // CZ_ENTER2
+#elif PACKETVER >= 20110906
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20110831
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20110823
+packetLen(0x0436, 5) // CZ_ENTER2
+#elif PACKETVER >= 20110816
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20110809
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20110802
+packetLen(0x0436, 5) // CZ_ENTER2
+#elif PACKETVER >= 20110726
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20110718
+packetLen(0x0436, 6) // CZ_ENTER2
+#elif PACKETVER >= 20110711
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20110705
+packetLen(0x0436, 26) // CZ_ENTER2
+#elif PACKETVER >= 20110620
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20110614
+packetLen(0x0436, 6) // CZ_ENTER2
+#elif PACKETVER >= 20110607
+packetLen(0x0436, 26) // CZ_ENTER2
+#elif PACKETVER >= 20110531
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20110523
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20110511
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20110503
+packetLen(0x0436, 6) // CZ_ENTER2
+#elif PACKETVER >= 20110426
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20110419
+packetLen(0x0436, 36) // CZ_ENTER2
+#elif PACKETVER >= 20110412
+packetLen(0x0436, 5) // CZ_ENTER2
+#elif PACKETVER >= 20110329
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20110315
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20110308
+packetLen(0x0436, -1) // CZ_ENTER2
+#elif PACKETVER >= 20110222
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20110215
+packetLen(0x0436, 6) // CZ_ENTER2
+#elif PACKETVER >= 20110118
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20110111
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20110104
+packetLen(0x0436, 2) // CZ_ENTER2
+#endif
+
+// Packet: 0x0437
+#if PACKETVER >= 20111220
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20111122
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20111108
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20111101
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20111025
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20111010
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20110906
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20110823
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20110809
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20110802
+packetLen(0x0437, 18) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20110726
+packetLen(0x0437, 8) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20110718
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20110711
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20110705
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20110620
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20110523
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20110517
+packetLen(0x0437, 36) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20110511
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20110503
+packetLen(0x0437, 26) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20110426
+packetLen(0x0437, 6) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20110419
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20110412
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20110405
+packetLen(0x0437, 36) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20110329
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20110322
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20110308
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20110228
+packetLen(0x0437, 6) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20110222
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20110215
+packetLen(0x0437, 8) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20110208
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20110131
+packetLen(0x0437, 19) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20110125
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20110118
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20110104
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#endif
+
+// Packet: 0x0438
+#if PACKETVER >= 20111227
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20111220
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20111122
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20111114
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20111108
+packetLen(0x0438, 8) // CZ_USE_SKILL2
+#elif PACKETVER >= 20111025
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20111017
+packetLen(0x0438, -1) // CZ_USE_SKILL2
+#elif PACKETVER >= 20111010
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110928
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110920
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110906
+packetLen(0x0438, 26) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110831
+packetLen(0x0438, 6) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110823
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110809
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110802
+packetLen(0x0438, -1) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110726
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110718
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110627
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110620
+packetLen(0x0438, 18) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110517
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110503
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110426
+packetLen(0x0438, 8) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110419
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110412
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110405
+packetLen(0x0438, 5) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110329
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110322
+packetLen(0x0438, 6) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110308
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110228
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110222
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110215
+packetLen(0x0438, 5) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110208
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110131
+packetLen(0x0438, -1) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110125
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110118
+packetLen(0x0438, 8) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110104
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#endif
+
+// Packet: 0x0439
+packetLen(0x0439, 8) // CZ_USE_ITEM2
+
+// Packet: 0x043d
+packetLen(0x043d, 8) // ZC_SKILL_POSTDELAY
+
+// Packet: 0x043e
+packetLen(0x043e, -1) // ZC_SKILL_POSTDELAY_LIST
+
+// Packet: 0x043f
+packetLen(0x043f, 25) // ZC_MSG_STATE_CHANGE2
+
+// Packet: 0x0440
+packetLen(0x0440, 10) // ZC_MILLENNIUMSHIELD
+
+// Packet: 0x0441
+packetLen(0x0441, 4) // ZC_SKILLINFO_DELETE
+
+// Packet: 0x0442
+packetLen(0x0442, -1) // ZC_SKILL_SELECT_REQUEST
+
+// Packet: 0x0443
+packetLen(0x0443, 8) // CZ_SKILL_SELECT_RESPONSE
+
+// Packet: 0x0444
+packetLen(0x0444, -1) // ZC_SIMPLE_CASH_POINT_ITEMLIST
+
+// Packet: 0x0445
+packetLen(0x0445, 10) // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0446
+packetLen(0x0446, 14) // ZC_QUEST_NOTIFY_EFFECT
+
+// Packet: 0x0447
+packetLen(0x0447, 2) // CZ_BLOCKING_PLAY_CANCEL
+
+// Packet: 0x0448
+packetLen(0x0448, -1) // HC_CHARACTER_LIST
+
+// Packet: 0x0449
+packetLen(0x0449, 4) // ZC_HACKSH_ERROR_MSG
+
+// Packet: 0x044a
+packetLen(0x044a, 6) // CZ_CLIENT_VERSION
+
+// Packet: 0x044b
+packetLen(0x044b, 2) // CZ_CLOSE_SIMPLECASH_SHOP
+
+// Packet: 0x07d7
+packetLen(0x07d7, 8) // CZ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d8
+packetLen(0x07d8, 8) // ZC_REQ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d9
+packetLen(0x07d9, 268) // ZC_SHORTCUT_KEY_LIST_V2
+
+// Packet: 0x07da
+packetLen(0x07da, 6) // CZ_CHANGE_GROUP_MASTER
+
+// Packet: 0x07db
+packetLen(0x07db, 8) // ZC_HO_PAR_CHANGE
+
+// Packet: 0x07dc
+packetLen(0x07dc, 6) // CZ_SEEK_PARTY
+
+// Packet: 0x07dd
+packetLen(0x07dd, 54) // ZC_SEEK_PARTY
+
+// Packet: 0x07de
+packetLen(0x07de, 30) // CZ_SEEK_PARTY_MEMBER
+
+// Packet: 0x07df
+packetLen(0x07df, 54) // ZC_SEEK_PARTY_MEMBER
+
+// Packet: 0x07e0
+packetLen(0x07e0, 58) // ZC_ES_NOTI_MYINFO
+
+// Packet: 0x07e1
+packetLen(0x07e1, 15) // ZC_SKILLINFO_UPDATE2
+
+// Packet: 0x07e2
+packetLen(0x07e2, 8) // ZC_MSG_VALUE
+
+// Packet: 0x07e3
+packetLen(0x07e3, 6) // ZC_ITEMLISTWIN_OPEN
+
+// Packet: 0x07e4
+#if PACKETVER >= 20111227
+packetLen(0x07e4, 4) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20111220
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20111004
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110928
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110920
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110906
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110831
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110823
+packetLen(0x07e4, 26) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110816
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110809
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110802
+packetLen(0x07e4, 4) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110726
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110718
+packetLen(0x07e4, 4) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110711
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110705
+packetLen(0x07e4, 8) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110627
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110620
+packetLen(0x07e4, 26) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110614
+packetLen(0x07e4, 19) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110607
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110531
+packetLen(0x07e4, 5) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110523
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110517
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110511
+packetLen(0x07e4, 5) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110419
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110412
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110405
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110329
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110322
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110315
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110308
+packetLen(0x07e4, -1) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110118
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110104
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#endif
+
+// Packet: 0x07e5
+packetLen(0x07e5, 4) // CH_ENTER_CHECKBOT
+
+// Packet: 0x07e6
+packetLen(0x07e6, 8) // ZC_MSG_SKILL
+
+// Packet: 0x07e7
+packetLen(0x07e7, 32) // CH_CHECKBOT
+
+// Packet: 0x07e8
+packetLen(0x07e8, -1) // HC_CHECKBOT
+
+// Packet: 0x07e9
+packetLen(0x07e9, 5) // HC_CHECKBOT_RESULT
+
+// Packet: 0x07ea
+packetLen(0x07ea, 2) // CZ_BATTLE_FIELD_LIST
+
+// Packet: 0x07eb
+packetLen(0x07eb, -1) // ZC_BATTLE_FIELD_LIST
+
+// Packet: 0x07ec
+#if PACKETVER >= 20111227
+packetLen(0x07ec, 90) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20111220
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20111213
+packetLen(0x07ec, 10) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20111207
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20111122
+packetLen(0x07ec, -1) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20111114
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20111108
+packetLen(0x07ec, 18) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20111101
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20111025
+packetLen(0x07ec, 10) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20111017
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20111010
+packetLen(0x07ec, 26) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20111004
+packetLen(0x07ec, 7) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110928
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110920
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110906
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110831
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110823
+packetLen(0x07ec, 36) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110816
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110809
+packetLen(0x07ec, 7) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110802
+packetLen(0x07ec, 6) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110726
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110718
+packetLen(0x07ec, 12) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110711
+packetLen(0x07ec, -1) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110705
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110620
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110614
+packetLen(0x07ec, 5) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110607
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110531
+packetLen(0x07ec, 4) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110523
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110517
+packetLen(0x07ec, 6) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110503
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110426
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110419
+packetLen(0x07ec, 26) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110405
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110329
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110322
+packetLen(0x07ec, 6) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110308
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110228
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110222
+packetLen(0x07ec, -1) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110131
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110118
+packetLen(0x07ec, 6) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110104
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#endif
+
+// Packet: 0x07ed
+packetLen(0x07ed, 10) // ZC_JOIN_BATTLE_FIELD
+
+// Packet: 0x07ee
+packetLen(0x07ee, 6) // CZ_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07ef
+packetLen(0x07ef, 8) // ZC_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07f0
+packetLen(0x07f0, 6) // CZ_REQ_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f1
+packetLen(0x07f1, 18) // ZC_ACK_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f2
+packetLen(0x07f2, 8) // ZC_BATTLE_NOTI_START_STEP
+
+// Packet: 0x07f3
+packetLen(0x07f3, 6) // ZC_BATTLE_JOIN_NOTI_DEFER
+
+// Packet: 0x07f4
+packetLen(0x07f4, 3) // ZC_BATTLE_JOIN_DISABLE_STATE
+
+// Packet: 0x07f5
+packetLen(0x07f5, 6) // CZ_GM_FULLSTRIP
+
+// Packet: 0x07f6
+packetLen(0x07f6, 14) // ZC_NOTIFY_EXP
+
+// Packet: 0x07f7
+packetLen(0x07f7, -1) // ZC_NOTIFY_MOVEENTRY7
+
+// Packet: 0x07f8
+packetLen(0x07f8, -1) // ZC_NOTIFY_NEWENTRY5
+
+// Packet: 0x07f9
+packetLen(0x07f9, -1) // ZC_NOTIFY_STANDENTRY5
+
+// Packet: 0x07fa
+packetLen(0x07fa, 8) // ZC_DELETE_ITEM_FROM_BODY
+
+// Packet: 0x07fb
+packetLen(0x07fb, 25) // ZC_USESKILL_ACK2
+
+// Packet: 0x07fc
+packetLen(0x07fc, 10) // ZC_CHANGE_GROUP_MASTER
+
+// Packet: 0x07fd
+packetLen(0x07fd, -1) // ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN
+
+// Packet: 0x07fe
+packetLen(0x07fe, 26) // ZC_PLAY_NPC_BGM
+
+// Packet: 0x07ff
+#if PACKETVER >= 20110718
+// removed
+#elif PACKETVER >= 20110104
+packetLen(0x07ff, -1) // ZC_DEFINE_CHECK
+#endif
+
+// Packet: 0x0800
+packetLen(0x0800, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0801
+packetLen(0x0801, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0802
+#if PACKETVER >= 20111220
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20111122
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20111114
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20111025
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20111017
+packetLen(0x0802, 18) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20111010
+packetLen(0x0802, 12) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20111004
+packetLen(0x0802, 8) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110928
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110920
+packetLen(0x0802, -1) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110906
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110831
+packetLen(0x0802, 19) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110823
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110816
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110802
+packetLen(0x0802, 8) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110711
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110705
+packetLen(0x0802, 7) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110620
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110607
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110531
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110523
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110511
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110503
+packetLen(0x0802, -1) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110426
+packetLen(0x0802, 36) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110419
+packetLen(0x0802, 6) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110412
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110405
+packetLen(0x0802, 6) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110329
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110308
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110228
+packetLen(0x0802, -1) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110222
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110215
+packetLen(0x0802, 19) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110208
+packetLen(0x0802, 6) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110131
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110125
+packetLen(0x0802, 7) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110118
+packetLen(0x0802, 6) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110104
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// Packet: 0x0803
+packetLen(0x0803, 4) // ZC_PARTY_BOOKING_ACK_REGISTER
+
+// Packet: 0x0804
+packetLen(0x0804, 14) // CZ_PARTY_BOOKING_REQ_SEARCH
+
+// Packet: 0x0805
+packetLen(0x0805, -1) // ZC_PARTY_BOOKING_ACK_SEARCH
+
+// Packet: 0x0806
+packetLen(0x0806, 2) // CZ_PARTY_BOOKING_REQ_DELETE
+
+// Packet: 0x0807
+packetLen(0x0807, 4) // ZC_PARTY_BOOKING_ACK_DELETE
+
+// Packet: 0x0808
+packetLen(0x0808, 14) // CZ_PARTY_BOOKING_REQ_UPDATE
+
+// Packet: 0x0809
+packetLen(0x0809, 50) // ZC_PARTY_BOOKING_NOTIFY_INSERT
+
+// Packet: 0x080a
+packetLen(0x080a, 18) // ZC_PARTY_BOOKING_NOTIFY_UPDATE
+
+// Packet: 0x080b
+packetLen(0x080b, 6) // ZC_PARTY_BOOKING_NOTIFY_DELETE
+
+// Packet: 0x080c
+packetLen(0x080c, 2) // CZ_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080d
+packetLen(0x080d, 3) // ZC_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080e
+packetLen(0x080e, 14) // ZC_NOTIFY_HP_TO_GROUPM_R2
+
+// Packet: 0x080f
+packetLen(0x080f, 20) // ZC_ADD_EXCHANGE_ITEM2
+
+// Packet: 0x0810
+packetLen(0x0810, 3) // ZC_OPEN_BUYING_STORE
+
+// Packet: 0x0811
+#if PACKETVER >= 20111227
+packetLen(0x0811, 6) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20111220
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20111122
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20111101
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20111010
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20110928
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20110920
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20110906
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20110823
+packetLen(0x0811, 10) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20110809
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20110802
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20110726
+packetLen(0x0811, 5) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20110718
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20110711
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20110627
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20110620
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20110517
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20110511
+packetLen(0x0811, 90) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20110426
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20110419
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20110412
+packetLen(0x0811, 5) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20110405
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20110329
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20110322
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20110308
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20110228
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20110215
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20110208
+packetLen(0x0811, 8) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20110131
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20110125
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20110118
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20110104
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#endif
+
+// Packet: 0x0812
+packetLen(0x0812, 8) // ZC_FAILED_OPEN_BUYING_STORE_TO_BUYER
+
+// Packet: 0x0813
+packetLen(0x0813, -1) // ZC_MYITEMLIST_BUYING_STORE
+
+// Packet: 0x0814
+packetLen(0x0814, 86) // ZC_BUYING_STORE_ENTRY
+
+// Packet: 0x0815
+#if PACKETVER >= 20111227
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20111220
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20111114
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20111108
+packetLen(0x0815, 36) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20111101
+packetLen(0x0815, 6) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20111025
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20111010
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20111004
+packetLen(0x0815, 5) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110928
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110920
+packetLen(0x0815, 4) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110831
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110823
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110809
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110802
+packetLen(0x0815, 6) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110726
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110718
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110711
+packetLen(0x0815, 26) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110620
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110614
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110607
+packetLen(0x0815, 5) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110523
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110503
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110426
+packetLen(0x0815, 5) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110419
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110405
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110329
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110322
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110315
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110308
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110228
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110222
+packetLen(0x0815, 8) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110215
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110131
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110125
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110118
+packetLen(0x0815, 26) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110104
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#endif
+
+// Packet: 0x0816
+packetLen(0x0816, 6) // ZC_DISAPPEAR_BUYING_STORE_ENTRY
+
+// Packet: 0x0817
+#if PACKETVER >= 20111220
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20111213
+packetLen(0x0817, 5) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20111108
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20111101
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20111025
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20111017
+packetLen(0x0817, -1) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20110906
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20110831
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20110718
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20110711
+packetLen(0x0817, 26) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20110705
+packetLen(0x0817, -1) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20110627
+packetLen(0x0817, 10) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20110419
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20110412
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20110329
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20110322
+packetLen(0x0817, 36) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20110104
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#endif
+
+// Packet: 0x0818
+packetLen(0x0818, -1) // ZC_ACK_ITEMLIST_BUYING_STORE
+
+// Packet: 0x0819
+#if PACKETVER >= 20111227
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20111220
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20111213
+packetLen(0x0819, 6) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20111207
+packetLen(0x0819, 18) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20111122
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20111114
+packetLen(0x0819, 5) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20111108
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20111101
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20111025
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20111017
+packetLen(0x0819, 8) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20111010
+packetLen(0x0819, 6) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110928
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110920
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110906
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110831
+packetLen(0x0819, 12) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110823
+packetLen(0x0819, 6) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110816
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110809
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110802
+packetLen(0x0819, 7) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110718
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110711
+packetLen(0x0819, 5) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110705
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110627
+packetLen(0x0819, 19) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110620
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110531
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110523
+packetLen(0x0819, 36) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110517
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110503
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110426
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110419
+packetLen(0x0819, 26) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110412
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110405
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110329
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110322
+packetLen(0x0819, 90) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110315
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110308
+packetLen(0x0819, 26) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110228
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110222
+packetLen(0x0819, 6) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110208
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110131
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110125
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110118
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110104
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#endif
+
+// Packet: 0x081a
+packetLen(0x081a, 4) // ZC_FAILED_TRADE_BUYING_STORE_TO_BUYER
+
+// Packet: 0x081b
+packetLen(0x081b, 10) // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+
+// Packet: 0x081c
+packetLen(0x081c, 10) // ZC_ITEM_DELETE_BUYING_STORE
+
+// Packet: 0x081d
+packetLen(0x081d, 22) // ZC_EL_INIT
+
+// Packet: 0x081e
+packetLen(0x081e, 8) // ZC_EL_PAR_CHANGE
+
+// Packet: 0x081f
+packetLen(0x081f, -1) // ZC_BROADCAST4
+
+// Packet: 0x0820
+packetLen(0x0820, 11) // ZC_COSTUME_SPRITE_CHANGE
+
+// Packet: 0x0821
+packetLen(0x0821, 2) // AC_OTP_USER
+
+// Packet: 0x0822
+packetLen(0x0822, 9) // CA_OTP_AUTH_REQ
+
+// Packet: 0x0823
+packetLen(0x0823, -1) // AC_OTP_AUTH_ACK
+
+// Packet: 0x0824
+packetLen(0x0824, 6) // ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER
+
+// Packet: 0x0825
+packetLen(0x0825, -1) // CA_SSO_LOGIN_REQ
+
+// Packet: 0x0827
+packetLen(0x0827, 6) // CH_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0828
+packetLen(0x0828, 14) // HC_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0829
+packetLen(0x0829, 12) // CH_DELETE_CHAR3
+
+// Packet: 0x082a
+packetLen(0x082a, 10) // HC_DELETE_CHAR3
+
+// Packet: 0x082b
+packetLen(0x082b, 6) // CH_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082c
+packetLen(0x082c, 10) // HC_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082d
+packetLen(0x082d, -1) // HC_ACCEPT_ENTER2
+
+// Packet: 0x0835
+#if PACKETVER >= 20111213
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20111207
+packetLen(0x0835, 10) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20111122
+packetLen(0x0835, 19) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20111108
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20111101
+packetLen(0x0835, -1) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20111025
+packetLen(0x0835, 6) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20111010
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20111004
+packetLen(0x0835, 26) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20110906
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20110831
+packetLen(0x0835, 4) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20110823
+packetLen(0x0835, 8) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20110809
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20110802
+packetLen(0x0835, 26) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20110726
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20110718
+packetLen(0x0835, 8) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20110711
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20110705
+packetLen(0x0835, 36) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20110627
+packetLen(0x0835, 5) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20110503
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20110426
+packetLen(0x0835, 6) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20110412
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20110405
+packetLen(0x0835, 6) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20110315
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20110308
+packetLen(0x0835, 4) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20110222
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20110215
+packetLen(0x0835, 26) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20110208
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20110131
+packetLen(0x0835, 6) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20110125
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20110118
+packetLen(0x0835, -1) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20110104
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#endif
+
+// Packet: 0x0836
+packetLen(0x0836, -1) // ZC_SEARCH_STORE_INFO_ACK
+
+// Packet: 0x0837
+packetLen(0x0837, 3) // ZC_SEARCH_STORE_INFO_FAILED
+
+// Packet: 0x0838
+#if PACKETVER >= 20111227
+packetLen(0x0838, 6) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20111220
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20111213
+packetLen(0x0838, 19) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20111122
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20111108
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20111101
+packetLen(0x0838, 6) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20111025
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20111010
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110928
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110920
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110906
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110823
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110809
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110802
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110726
+packetLen(0x0838, -1) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110718
+packetLen(0x0838, 8) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110711
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110705
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110620
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110517
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110511
+packetLen(0x0838, 8) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110503
+packetLen(0x0838, 26) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110426
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110419
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110412
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110405
+packetLen(0x0838, -1) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110329
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110315
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110308
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110228
+packetLen(0x0838, 5) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110208
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110131
+packetLen(0x0838, 4) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110125
+packetLen(0x0838, 8) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110118
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110104
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#endif
+
+// Packet: 0x0839
+packetLen(0x0839, 66) // ZC_ACK_BAN_GUILD_SSO
+
+// Packet: 0x083a
+packetLen(0x083a, 5) // ZC_OPEN_SEARCH_STORE_INFO
+
+// Packet: 0x083b
+packetLen(0x083b, 2) // CZ_CLOSE_SEARCH_STORE_INFO
+
+// Packet: 0x083c
+#if PACKETVER >= 20111227
+packetLen(0x083c, 8) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20111220
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20111122
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20111114
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20111108
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20111101
+packetLen(0x083c, 19) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20111017
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20111010
+packetLen(0x083c, -1) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20111004
+packetLen(0x083c, 26) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110928
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110920
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110906
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110831
+packetLen(0x083c, 26) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110823
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110816
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110809
+packetLen(0x083c, 5) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110726
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110718
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110711
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110705
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110627
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110620
+packetLen(0x083c, 6) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110523
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110511
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110503
+packetLen(0x083c, 6) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110426
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110419
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110412
+packetLen(0x083c, -1) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110405
+packetLen(0x083c, 19) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110329
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110322
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110315
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110308
+packetLen(0x083c, 6) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110228
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110208
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110131
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110125
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110118
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110104
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#endif
+
+// Packet: 0x083d
+packetLen(0x083d, 6) // ZC_SSILIST_ITEM_CLICK_ACK
+
+// Packet: 0x083e
+packetLen(0x083e, 26) // AC_REFUSE_LOGIN2
+
+// Packet: 0x0840
+packetLen(0x0840, -1) // HC_NOTIFY_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0841
+packetLen(0x0841, 4) // CH_SELECT_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0842
+packetLen(0x0842, 6) // CZ_RECALL_SSO
+
+// Packet: 0x0843
+packetLen(0x0843, 6) // CZ_REMOVE_AID_SSO
+
+// Packet: 0x0844
+packetLen(0x0844, 2) // CZ_SE_CASHSHOP_OPEN
+
+// Packet: 0x0845
+packetLen(0x0845, 10) // ZC_SE_CASHSHOP_OPEN
+
+// Packet: 0x0846
+packetLen(0x0846, 4) // CZ_REQ_SE_CASH_TAB_CODE
+
+// Packet: 0x0847
+packetLen(0x0847, -1) // ZC_ACK_SE_CASH_ITEM_LIST
+
+// Packet: 0x0848
+packetLen(0x0848, -1) // CZ_SE_PC_BUY_CASHITEM_LIST
+
+// Packet: 0x0849
+packetLen(0x0849, 16) // ZC_SE_PC_BUY_CASHITEM_RESULT
+
+// Packet: 0x084a
+packetLen(0x084a, 2) // CZ_SE_CASHSHOP_CLOSE
+
+// Packet: 0x084b
+packetLen(0x084b, 19) // ZC_ITEM_FALL_ENTRY4
+
+// Packet: 0x084c
+packetLen(0x084c, 10) // CZ_MACRO_USE_SKILL
+
+// Packet: 0x084d
+packetLen(0x084d, 10) // CZ_MACRO_USE_SKILL_TOGROUND
+
+// Packet: 0x084e
+packetLen(0x084e, 5) // CZ_MACRO_REQUEST_MOVE
+
+// Packet: 0x084f
+packetLen(0x084f, 6) // CZ_MACRO_ITEM_PICKUP
+
+// Packet: 0x0850
+packetLen(0x0850, 7) // CZ_MACRO_REQUEST_ACT
+
+// Packet: 0x0851
+packetLen(0x0851, -1) // ZC_GPK_DYNCODE
+
+// Packet: 0x0852
+packetLen(0x0852, 2) // CZ_GPK_DYNCODE_RELOAD
+
+// Packet: 0x0853
+packetLen(0x0853, -1) // ZC_GPK_AUTH
+
+// Packet: 0x0854
+packetLen(0x0854, -1) // CZ_GPK_AUTH
+
+// Packet: 0x0855
+packetLen(0x0855, 6) // ZC_MACRO_ITEMPICKUP_FAIL
+
+// Packet: 0x0856
+packetLen(0x0856, -1) // ZC_NOTIFY_MOVEENTRY8
+
+// Packet: 0x0857
+packetLen(0x0857, -1) // ZC_NOTIFY_STANDENTRY7
+
+// Packet: 0x0858
+packetLen(0x0858, -1) // ZC_NOTIFY_NEWENTRY6
+
+// Packet: 0x0859
+packetLen(0x0859, -1) // ZC_EQUIPWIN_MICROSCOPE2
+
+// Packet: 0x085a
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+
+// Packet: 0x085b
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+
+// Packet: 0x085c
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+
+// Packet: 0x085d
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+
+// Packet: 0x085e
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+
+// Packet: 0x085f
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+
+// Packet: 0x0860
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+
+// Packet: 0x0861
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+
+// Packet: 0x0862
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+
+// Packet: 0x0863
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+
+// Packet: 0x0864
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+
+// Packet: 0x0865
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+
+// Packet: 0x0866
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+
+// Packet: 0x0867
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+
+// Packet: 0x0868
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+
+// Packet: 0x0869
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+
+// Packet: 0x086a
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+
+// Packet: 0x086b
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+
+// Packet: 0x086c
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+
+// Packet: 0x086d
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+
+// Packet: 0x086e
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+
+// Packet: 0x086f
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+
+// Packet: 0x0870
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+
+// Packet: 0x0871
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+
+// Packet: 0x0872
+packetLen(0x0872, 2)
+
+// Packet: 0x0873
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+
+// Packet: 0x0874
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+
+// Packet: 0x0875
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+
+// Packet: 0x0876
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+
+// Packet: 0x0877
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+
+// Packet: 0x0878
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+
+// Packet: 0x0879
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+
+// Packet: 0x087a
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+
+// Packet: 0x087b
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+
+// Packet: 0x087c
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+
+// Packet: 0x087d
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+
+// Packet: 0x087e
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+
+// Packet: 0x087f
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+
+// Packet: 0x0880
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+
+// Packet: 0x0881
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+
+// Packet: 0x0882
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+
+// Packet: 0x0883
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+
+// Packet: 0x0884
+#if PACKETVER >= 20111114
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20111108
+packetLen(0x0884, 10) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20111025
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20111017
+packetLen(0x0884, 7) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20111010
+packetLen(0x0884, 6) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20110928
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20110920
+packetLen(0x0884, -1) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20110831
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20110823
+packetLen(0x0884, 8) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20110802
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20110726
+packetLen(0x0884, 6) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20110718
+packetLen(0x0884, -1) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20110711
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20110705
+packetLen(0x0884, 26) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20110627
+packetLen(0x0884, 6) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20110620
+packetLen(0x0884, 10) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20110523
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20110517
+packetLen(0x0884, -1) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20110503
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20110426
+packetLen(0x0884, 18) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20110315
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20110308
+packetLen(0x0884, -1) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20110215
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20110208
+packetLen(0x0884, 5) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20110131
+packetLen(0x0884, -1) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20110104
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x0885
+#if PACKETVER >= 20111227
+packetLen(0x0885, 8) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20111108
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20111101
+packetLen(0x0885, 6) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20111025
+packetLen(0x0885, 10) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20111017
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20111010
+packetLen(0x0885, 10) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20111004
+packetLen(0x0885, 5) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20110928
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20110920
+packetLen(0x0885, 36) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20110906
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20110831
+packetLen(0x0885, 6) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20110726
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20110718
+packetLen(0x0885, 26) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20110607
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20110531
+packetLen(0x0885, 26) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20110517
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20110511
+packetLen(0x0885, 5) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20110503
+packetLen(0x0885, 18) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20110426
+packetLen(0x0885, 5) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20110412
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20110405
+packetLen(0x0885, 8) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20110322
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20110315
+packetLen(0x0885, 18) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20110228
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20110222
+packetLen(0x0885, 6) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20110215
+packetLen(0x0885, 10) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20110208
+packetLen(0x0885, -1) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20110125
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20110118
+packetLen(0x0885, 18) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20110104
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x0886
+#if PACKETVER >= 20111227
+packetLen(0x0886, 6) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20111025
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20111017
+packetLen(0x0886, 6) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20111010
+packetLen(0x0886, -1) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20110920
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20110906
+packetLen(0x0886, 36) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20110802
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20110726
+packetLen(0x0886, -1) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20110718
+packetLen(0x0886, 5) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20110711
+packetLen(0x0886, 8) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20110627
+packetLen(0x0886, 10) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20110607
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20110531
+packetLen(0x0886, 18) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20110517
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20110511
+packetLen(0x0886, 12) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20110503
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20110426
+packetLen(0x0886, 4) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20110419
+packetLen(0x0886, 18) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20110412
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20110405
+packetLen(0x0886, 90) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20110329
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20110322
+packetLen(0x0886, 5) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20110315
+packetLen(0x0886, 26) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20110131
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20110125
+packetLen(0x0886, 19) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20110118
+packetLen(0x0886, 5) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20110104
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#endif
+
+// Packet: 0x0887
+#if PACKETVER >= 20111220
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20111213
+packetLen(0x0887, -1) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20111207
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20111122
+packetLen(0x0887, -1) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20111114
+packetLen(0x0887, 7) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20111101
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20111025
+packetLen(0x0887, 26) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20111010
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20111004
+packetLen(0x0887, 6) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20110906
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20110831
+packetLen(0x0887, 6) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20110802
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20110726
+packetLen(0x0887, 90) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20110711
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20110705
+packetLen(0x0887, 19) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20110627
+packetLen(0x0887, 5) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20110620
+packetLen(0x0887, 36) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20110523
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20110517
+packetLen(0x0887, 5) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20110511
+packetLen(0x0887, 18) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20110412
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20110405
+packetLen(0x0887, 12) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20110322
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20110315
+packetLen(0x0887, 19) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20110308
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20110228
+packetLen(0x0887, 6) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20110222
+packetLen(0x0887, 8) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20110215
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20110208
+packetLen(0x0887, 8) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20110131
+packetLen(0x0887, 6) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20110111
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20110104
+packetLen(0x0887, 5) // CZ_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x0888
+#if PACKETVER >= 20111227
+packetLen(0x0888, 6) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20111122
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20111114
+packetLen(0x0888, -1) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20111108
+packetLen(0x0888, 8) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20111101
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20111025
+packetLen(0x0888, 18) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20110831
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20110823
+packetLen(0x0888, 5) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20110809
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20110802
+packetLen(0x0888, 6) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20110718
+packetLen(0x0888, 36) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20110705
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20110627
+packetLen(0x0888, 90) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20110607
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20110531
+packetLen(0x0888, 6) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20110523
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20110517
+packetLen(0x0888, -1) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20110511
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20110503
+packetLen(0x0888, 6) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20110426
+packetLen(0x0888, 10) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20110419
+packetLen(0x0888, 6) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20110412
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20110405
+packetLen(0x0888, 8) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20110329
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20110322
+packetLen(0x0888, 5) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20110315
+packetLen(0x0888, 12) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20110308
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20110228
+packetLen(0x0888, 5) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20110222
+packetLen(0x0888, 18) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20110215
+packetLen(0x0888, 8) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20110208
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20110131
+packetLen(0x0888, 5) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20110104
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x0889
+#if PACKETVER >= 20111227
+packetLen(0x0889, 18) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20111220
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20111213
+packetLen(0x0889, 26) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20111010
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20111004
+packetLen(0x0889, -1) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20110809
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20110802
+packetLen(0x0889, 26) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20110607
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20110531
+packetLen(0x0889, 8) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20110523
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20110517
+packetLen(0x0889, 10) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20110511
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20110503
+packetLen(0x0889, 19) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20110426
+packetLen(0x0889, 8) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20110419
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20110412
+packetLen(0x0889, 5) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20110405
+packetLen(0x0889, 18) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20110329
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20110322
+packetLen(0x0889, 5) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20110315
+packetLen(0x0889, -1) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20110308
+packetLen(0x0889, 18) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20110228
+packetLen(0x0889, 90) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20110222
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20110215
+packetLen(0x0889, 6) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20110104
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x088a
+#if PACKETVER >= 20111108
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20111101
+packetLen(0x088a, 6) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20111017
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20111010
+packetLen(0x088a, 18) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20110906
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20110831
+packetLen(0x088a, 5) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20110718
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20110711
+packetLen(0x088a, -1) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20110627
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20110620
+packetLen(0x088a, 7) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20110419
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20110412
+packetLen(0x088a, 8) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20110329
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20110322
+packetLen(0x088a, 18) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20110228
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20110222
+packetLen(0x088a, 8) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20110215
+packetLen(0x088a, 5) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20110208
+packetLen(0x088a, 19) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20110111
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20110104
+packetLen(0x088a, 19) // CZ_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x088b
+#if PACKETVER >= 20111227
+packetLen(0x088b, 12) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20111220
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20111213
+packetLen(0x088b, 6) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20111207
+packetLen(0x088b, 4) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20111114
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20111108
+packetLen(0x088b, 4) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20110809
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20110802
+packetLen(0x088b, 8) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20110726
+packetLen(0x088b, 10) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20110718
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20110711
+packetLen(0x088b, 18) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20110705
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20110627
+packetLen(0x088b, 8) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20110620
+packetLen(0x088b, 5) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20110614
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20110607
+packetLen(0x088b, 5) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20110517
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20110511
+packetLen(0x088b, 4) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20110503
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20110426
+packetLen(0x088b, 10) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20110208
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20110131
+packetLen(0x088b, 7) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20110104
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x088c
+#if PACKETVER >= 20111213
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20111122
+packetLen(0x088c, 6) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20111017
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20111010
+packetLen(0x088c, 36) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20111004
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20110928
+packetLen(0x088c, 36) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20110920
+packetLen(0x088c, 6) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20110831
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20110823
+packetLen(0x088c, -1) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20110802
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20110726
+packetLen(0x088c, 5) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20110705
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20110627
+packetLen(0x088c, 5) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20110511
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20110503
+packetLen(0x088c, -1) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20110322
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20110315
+packetLen(0x088c, 8) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20110125
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20110118
+packetLen(0x088c, 8) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20110104
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x088d
+#if PACKETVER >= 20111213
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20111207
+packetLen(0x088d, -1) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20111108
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20111101
+packetLen(0x088d, 26) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20111017
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20111010
+packetLen(0x088d, 10) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20110928
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20110920
+packetLen(0x088d, 8) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20110816
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20110809
+packetLen(0x088d, 5) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20110802
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20110726
+packetLen(0x088d, 5) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20110711
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20110705
+packetLen(0x088d, 8) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20110517
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20110511
+packetLen(0x088d, 6) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20110419
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20110412
+packetLen(0x088d, 26) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20110329
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20110322
+packetLen(0x088d, 8) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20110104
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x088e
+#if PACKETVER >= 20111025
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20111017
+packetLen(0x088e, 8) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20110928
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20110920
+packetLen(0x088e, 8) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20110809
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20110802
+packetLen(0x088e, 19) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20110718
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20110711
+packetLen(0x088e, 6) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20110705
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20110627
+packetLen(0x088e, 26) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20110412
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20110405
+packetLen(0x088e, 6) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20110329
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20110322
+packetLen(0x088e, 6) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20110208
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20110131
+packetLen(0x088e, 5) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20110125
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20110118
+packetLen(0x088e, 19) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20110104
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x088f
+#if PACKETVER >= 20111220
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20111213
+packetLen(0x088f, 8) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20111207
+packetLen(0x088f, 6) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20111025
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20111017
+packetLen(0x088f, 6) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20111010
+packetLen(0x088f, -1) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20110906
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20110831
+packetLen(0x088f, 8) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20110823
+packetLen(0x088f, 26) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20110816
+packetLen(0x088f, 36) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20110809
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20110802
+packetLen(0x088f, 6) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20110718
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20110711
+packetLen(0x088f, 8) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20110627
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20110620
+packetLen(0x088f, 6) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20110517
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20110511
+packetLen(0x088f, 6) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20110412
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20110405
+packetLen(0x088f, 6) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20110329
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20110322
+packetLen(0x088f, 6) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20110308
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20110228
+packetLen(0x088f, 10) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20110125
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20110118
+packetLen(0x088f, 6) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20110111
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20110104
+packetLen(0x088f, 5) // CZ_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0890
+#if PACKETVER >= 20111220
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20111213
+packetLen(0x0890, 12) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20111207
+packetLen(0x0890, 8) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20111108
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20111101
+packetLen(0x0890, 8) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20111025
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20111017
+packetLen(0x0890, 26) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20111010
+packetLen(0x0890, 5) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20110928
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20110920
+packetLen(0x0890, 26) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20110831
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20110823
+packetLen(0x0890, 90) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20110523
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20110517
+packetLen(0x0890, 5) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20110511
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20110503
+packetLen(0x0890, 6) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20110329
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20110322
+packetLen(0x0890, 7) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20110308
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20110228
+packetLen(0x0890, 6) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20110208
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20110131
+packetLen(0x0890, 6) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20110125
+packetLen(0x0890, 36) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20110118
+packetLen(0x0890, 90) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20110104
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0891
+#if PACKETVER >= 20111227
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20111220
+packetLen(0x0891, 5) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20111213
+packetLen(0x0891, 8) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20111207
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20111122
+packetLen(0x0891, 26) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20111025
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20111010
+packetLen(0x0891, 6) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20111004
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20110928
+packetLen(0x0891, 4) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20110920
+packetLen(0x0891, 8) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20110718
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20110711
+packetLen(0x0891, 6) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20110627
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20110620
+packetLen(0x0891, 5) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20110517
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20110511
+packetLen(0x0891, -1) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20110503
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20110426
+packetLen(0x0891, 7) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20110329
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20110322
+packetLen(0x0891, 10) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20110315
+packetLen(0x0891, 36) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20110215
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20110208
+packetLen(0x0891, 5) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20110131
+packetLen(0x0891, 10) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20110104
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0892
+#if PACKETVER >= 20111227
+packetLen(0x0892, -1) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20111220
+packetLen(0x0892, 26) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20111207
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20111122
+packetLen(0x0892, 5) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20111114
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20111108
+packetLen(0x0892, 5) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20110607
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20110531
+packetLen(0x0892, 8) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20110517
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20110511
+packetLen(0x0892, -1) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20110503
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20110426
+packetLen(0x0892, 12) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20110419
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20110412
+packetLen(0x0892, 7) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20110228
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20110222
+packetLen(0x0892, 5) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20110208
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20110131
+packetLen(0x0892, 5) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20110104
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0893
+#if PACKETVER >= 20111227
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20111220
+packetLen(0x0893, 4) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20111213
+packetLen(0x0893, 10) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20111122
+packetLen(0x0893, 6) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20111108
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20111101
+packetLen(0x0893, 8) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20111025
+packetLen(0x0893, 6) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20110920
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20110906
+packetLen(0x0893, 5) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20110831
+packetLen(0x0893, 90) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20110823
+packetLen(0x0893, 8) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20110816
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20110809
+packetLen(0x0893, 26) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20110802
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20110726
+packetLen(0x0893, 8) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20110718
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20110711
+packetLen(0x0893, -1) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20110308
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20110228
+packetLen(0x0893, -1) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20110222
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20110215
+packetLen(0x0893, 4) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20110208
+packetLen(0x0893, 8) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20110131
+packetLen(0x0893, 36) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20110104
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x0894
+#if PACKETVER >= 20111213
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20111207
+packetLen(0x0894, 5) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20111114
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20111108
+packetLen(0x0894, 6) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20111101
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20111025
+packetLen(0x0894, 5) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20111017
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20111010
+packetLen(0x0894, 4) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20110906
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20110831
+packetLen(0x0894, 18) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20110816
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20110809
+packetLen(0x0894, 36) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20110614
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20110607
+packetLen(0x0894, 4) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20110517
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20110511
+packetLen(0x0894, 26) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20110503
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20110426
+packetLen(0x0894, -1) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20110419
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20110412
+packetLen(0x0894, 10) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20110329
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20110322
+packetLen(0x0894, 12) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20110104
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x0895
+#if PACKETVER >= 20111207
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20111122
+packetLen(0x0895, 26) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20111114
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20111108
+packetLen(0x0895, 19) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20111101
+packetLen(0x0895, 4) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20110906
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20110831
+packetLen(0x0895, 36) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20110802
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20110726
+packetLen(0x0895, 26) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20110718
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20110711
+packetLen(0x0895, 12) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20110627
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20110620
+packetLen(0x0895, -1) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20110412
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20110405
+packetLen(0x0895, 10) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20110104
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x0896
+#if PACKETVER >= 20111220
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20111213
+packetLen(0x0896, 6) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20111207
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20111122
+packetLen(0x0896, 5) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20111114
+packetLen(0x0896, 8) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20111004
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20110928
+packetLen(0x0896, 26) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20110920
+packetLen(0x0896, 6) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20110802
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20110726
+packetLen(0x0896, -1) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20110705
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20110627
+packetLen(0x0896, 8) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20110607
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20110531
+packetLen(0x0896, 6) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20110517
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20110511
+packetLen(0x0896, 26) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20110426
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20110419
+packetLen(0x0896, 8) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20110308
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20110228
+packetLen(0x0896, 4) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20110208
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20110131
+packetLen(0x0896, 18) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20110104
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x0897
+#if PACKETVER >= 20111227
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20111220
+packetLen(0x0897, 36) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20111213
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20111207
+packetLen(0x0897, 5) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20111108
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20111101
+packetLen(0x0897, 8) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20111025
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20111017
+packetLen(0x0897, 8) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20111010
+packetLen(0x0897, 6) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20110809
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20110802
+packetLen(0x0897, 10) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20110726
+packetLen(0x0897, 6) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20110705
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20110627
+packetLen(0x0897, 12) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20110620
+packetLen(0x0897, 26) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20110517
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20110511
+packetLen(0x0897, -1) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20110315
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20110308
+packetLen(0x0897, 8) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20110228
+packetLen(0x0897, 6) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20110208
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20110131
+packetLen(0x0897, 8) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20110125
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20110118
+packetLen(0x0897, 5) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20110104
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x0898
+#if PACKETVER >= 20111220
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20111213
+packetLen(0x0898, 6) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20111207
+packetLen(0x0898, -1) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20111122
+packetLen(0x0898, 6) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20111108
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20111101
+packetLen(0x0898, 5) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20111025
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20111017
+packetLen(0x0898, 36) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20111010
+packetLen(0x0898, 8) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20110831
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20110823
+packetLen(0x0898, -1) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20110705
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20110627
+packetLen(0x0898, 6) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20110511
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20110503
+packetLen(0x0898, 12) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20110329
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20110322
+packetLen(0x0898, -1) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20110308
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20110222
+packetLen(0x0898, 26) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20110208
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20110131
+packetLen(0x0898, 12) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20110125
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20110118
+packetLen(0x0898, 36) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20110104
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x0899
+#if PACKETVER >= 20111207
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20111122
+packetLen(0x0899, 6) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20111114
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20111108
+packetLen(0x0899, -1) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20110928
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20110920
+packetLen(0x0899, 5) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20110831
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20110823
+packetLen(0x0899, 6) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20110802
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20110726
+packetLen(0x0899, 7) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20110718
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20110711
+packetLen(0x0899, 10) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20110705
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20110627
+packetLen(0x0899, 26) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20110620
+packetLen(0x0899, 8) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20110511
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20110503
+packetLen(0x0899, 5) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20110426
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20110419
+packetLen(0x0899, 5) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20110412
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20110405
+packetLen(0x0899, 7) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20110104
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x089a
+#if PACKETVER >= 20111220
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20111213
+packetLen(0x089a, 90) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20111122
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20111114
+packetLen(0x089a, -1) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20111010
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20111004
+packetLen(0x089a, 4) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20110928
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20110920
+packetLen(0x089a, 10) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20110726
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20110718
+packetLen(0x089a, 5) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20110711
+packetLen(0x089a, 6) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20110517
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20110511
+packetLen(0x089a, -1) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20110503
+packetLen(0x089a, 6) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20110208
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20110131
+packetLen(0x089a, 8) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20110104
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x089b
+#if PACKETVER >= 20111227
+packetLen(0x089b, 6) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20111213
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20111207
+packetLen(0x089b, 36) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20111101
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20111025
+packetLen(0x089b, 8) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20111017
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20111010
+packetLen(0x089b, -1) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20111004
+packetLen(0x089b, 36) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20110928
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20110920
+packetLen(0x089b, 6) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20110831
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20110823
+packetLen(0x089b, 19) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20110802
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20110726
+packetLen(0x089b, 26) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20110718
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20110711
+packetLen(0x089b, 5) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20110705
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20110627
+packetLen(0x089b, -1) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20110620
+packetLen(0x089b, 5) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20110607
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20110531
+packetLen(0x089b, 8) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20110523
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20110511
+packetLen(0x089b, 8) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20110503
+packetLen(0x089b, 90) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20110426
+packetLen(0x089b, 6) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20110419
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20110412
+packetLen(0x089b, 6) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20110405
+packetLen(0x089b, 5) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20110308
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20110228
+packetLen(0x089b, 7) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20110125
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20110118
+packetLen(0x089b, 10) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20110111
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20110104
+packetLen(0x089b, 36) // CZ_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x089c
+#if PACKETVER >= 20111227
+packetLen(0x089c, 8) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20111220
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20111213
+packetLen(0x089c, 18) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20111122
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20111114
+packetLen(0x089c, 19) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20111025
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20111010
+packetLen(0x089c, 6) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20110928
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20110920
+packetLen(0x089c, 18) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20110831
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20110823
+packetLen(0x089c, -1) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20110816
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20110809
+packetLen(0x089c, 19) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20110718
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20110711
+packetLen(0x089c, 7) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20110627
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20110620
+packetLen(0x089c, -1) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20110503
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20110426
+packetLen(0x089c, 5) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20110329
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20110322
+packetLen(0x089c, 26) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20110315
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20110308
+packetLen(0x089c, 8) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20110228
+packetLen(0x089c, 12) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20110215
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20110208
+packetLen(0x089c, -1) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20110131
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20110125
+packetLen(0x089c, 4) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20110118
+packetLen(0x089c, -1) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20110104
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#endif
+
+// Packet: 0x089d
+#if PACKETVER >= 20111213
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20111207
+packetLen(0x089d, 5) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20111122
+packetLen(0x089d, -1) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20111114
+packetLen(0x089d, 6) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20110928
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20110920
+packetLen(0x089d, -1) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20110906
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20110831
+packetLen(0x089d, 7) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20110802
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20110726
+packetLen(0x089d, 6) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20110718
+packetLen(0x089d, 8) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20110711
+packetLen(0x089d, 36) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20110523
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20110517
+packetLen(0x089d, 8) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20110511
+packetLen(0x089d, 10) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20110503
+packetLen(0x089d, 4) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20110419
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20110412
+packetLen(0x089d, 8) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20110228
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20110222
+packetLen(0x089d, -1) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20110215
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20110208
+packetLen(0x089d, 26) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20110104
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x089e
+#if PACKETVER >= 20111207
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20111122
+packetLen(0x089e, 5) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20111108
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20111101
+packetLen(0x089e, -1) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20111025
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20111017
+packetLen(0x089e, 5) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20110802
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20110726
+packetLen(0x089e, 19) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20110607
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20110531
+packetLen(0x089e, 36) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20110517
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20110511
+packetLen(0x089e, 6) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20110503
+packetLen(0x089e, 10) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20110419
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20110412
+packetLen(0x089e, 18) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20110329
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20110322
+packetLen(0x089e, 19) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20110308
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20110228
+packetLen(0x089e, 6) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20110208
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20110125
+packetLen(0x089e, -1) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20110104
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x089f
+#if PACKETVER >= 20111025
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20111017
+packetLen(0x089f, 10) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20110802
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20110726
+packetLen(0x089f, 10) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20110627
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20110620
+packetLen(0x089f, 12) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20110511
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20110503
+packetLen(0x089f, 36) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20110419
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20110412
+packetLen(0x089f, 6) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20110405
+packetLen(0x089f, 5) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20110308
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20110228
+packetLen(0x089f, 19) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20110222
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20110215
+packetLen(0x089f, -1) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20110104
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x08a0
+#if PACKETVER >= 20110928
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20110920
+packetLen(0x08a0, 10) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20110906
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20110831
+packetLen(0x08a0, -1) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20110711
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20110705
+packetLen(0x08a0, 6) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20110627
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20110620
+packetLen(0x08a0, 8) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20110517
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20110511
+packetLen(0x08a0, 6) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20110308
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20110228
+packetLen(0x08a0, 10) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20110215
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20110208
+packetLen(0x08a0, 6) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20110104
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x08a1
+#if PACKETVER >= 20111207
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20111122
+packetLen(0x08a1, 10) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20111114
+packetLen(0x08a1, 8) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20111108
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20111101
+packetLen(0x08a1, 6) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20111025
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20111017
+packetLen(0x08a1, 5) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20110831
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20110823
+packetLen(0x08a1, 6) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20110627
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20110620
+packetLen(0x08a1, 10) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20110419
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20110412
+packetLen(0x08a1, 90) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20110208
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20110131
+packetLen(0x08a1, 26) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20110125
+packetLen(0x08a1, 6) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20110104
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x08a2
+#if PACKETVER >= 20111227
+packetLen(0x08a2, 6) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20111207
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20111122
+packetLen(0x08a2, 8) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20111114
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20111108
+packetLen(0x08a2, 26) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20111101
+packetLen(0x08a2, 12) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20111025
+packetLen(0x08a2, -1) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20111017
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20111010
+packetLen(0x08a2, 90) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20111004
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20110928
+packetLen(0x08a2, 19) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20110809
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20110802
+packetLen(0x08a2, -1) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20110718
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20110711
+packetLen(0x08a2, 8) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20110705
+packetLen(0x08a2, 5) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20110627
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20110620
+packetLen(0x08a2, -1) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20110523
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20110517
+packetLen(0x08a2, 18) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20110308
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20110228
+packetLen(0x08a2, 26) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20110208
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20110131
+packetLen(0x08a2, 8) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20110125
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20110118
+packetLen(0x08a2, 26) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20110104
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x08a3
+#if PACKETVER >= 20110831
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20110823
+packetLen(0x08a3, 7) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20110523
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20110517
+packetLen(0x08a3, 26) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20110511
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20110503
+packetLen(0x08a3, 10) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20110412
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20110405
+packetLen(0x08a3, 8) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20110215
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20110208
+packetLen(0x08a3, 26) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20110104
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x08a4
+#if PACKETVER >= 20111227
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20111220
+packetLen(0x08a4, 19) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20111207
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20111122
+packetLen(0x08a4, 8) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20111017
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20111010
+packetLen(0x08a4, 5) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20111004
+packetLen(0x08a4, 8) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20110928
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20110920
+packetLen(0x08a4, 7) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20110906
+packetLen(0x08a4, 5) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20110831
+packetLen(0x08a4, 26) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20110823
+packetLen(0x08a4, 4) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20110809
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20110802
+packetLen(0x08a4, 10) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20110726
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20110718
+packetLen(0x08a4, 6) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20110711
+packetLen(0x08a4, 90) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20110627
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20110620
+packetLen(0x08a4, -1) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20110614
+packetLen(0x08a4, 26) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20110517
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20110511
+packetLen(0x08a4, 19) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20110426
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20110419
+packetLen(0x08a4, 8) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20110412
+packetLen(0x08a4, 6) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20110329
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20110322
+packetLen(0x08a4, 8) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20110228
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20110222
+packetLen(0x08a4, 36) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20110131
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20110125
+packetLen(0x08a4, 5) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20110104
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x08a5
+#if PACKETVER >= 20111220
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20111213
+packetLen(0x08a5, 5) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20111207
+packetLen(0x08a5, 26) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20111108
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20111101
+packetLen(0x08a5, 18) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20110906
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20110831
+packetLen(0x08a5, 5) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20110802
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20110726
+packetLen(0x08a5, 6) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20110705
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20110627
+packetLen(0x08a5, 7) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20110607
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20110531
+packetLen(0x08a5, 26) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20110511
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20110503
+packetLen(0x08a5, -1) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20110426
+packetLen(0x08a5, 26) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20110412
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20110405
+packetLen(0x08a5, -1) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20110329
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20110322
+packetLen(0x08a5, 26) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20110315
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20110308
+packetLen(0x08a5, 26) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20110228
+packetLen(0x08a5, 18) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20110131
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20110125
+packetLen(0x08a5, 5) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20110104
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x08a6
+#if PACKETVER >= 20111227
+packetLen(0x08a6, 5) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20111220
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20111213
+packetLen(0x08a6, -1) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20111101
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20111025
+packetLen(0x08a6, 8) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20111017
+packetLen(0x08a6, 6) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20111010
+packetLen(0x08a6, 8) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20110928
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20110920
+packetLen(0x08a6, 26) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20110906
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20110831
+packetLen(0x08a6, 8) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20110816
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20110809
+packetLen(0x08a6, -1) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20110802
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20110726
+packetLen(0x08a6, 6) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20110718
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20110711
+packetLen(0x08a6, 6) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20110705
+packetLen(0x08a6, -1) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20110104
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#endif
+
+// Packet: 0x08a7
+#if PACKETVER >= 20111227
+packetLen(0x08a7, 19) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20111220
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20111213
+packetLen(0x08a7, 36) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20111207
+packetLen(0x08a7, 90) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20111010
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20111004
+packetLen(0x08a7, 6) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20110906
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20110831
+packetLen(0x08a7, 6) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20110705
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20110627
+packetLen(0x08a7, 18) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20110620
+packetLen(0x08a7, 6) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20110614
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20110607
+packetLen(0x08a7, 36) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20110531
+packetLen(0x08a7, 19) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20110503
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20110426
+packetLen(0x08a7, 6) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20110228
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20110222
+packetLen(0x08a7, 6) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20110215
+packetLen(0x08a7, 26) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20110208
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20110131
+packetLen(0x08a7, 6) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20110125
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20110118
+packetLen(0x08a7, 12) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20110104
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x08a8
+#if PACKETVER >= 20111213
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20111207
+packetLen(0x08a8, 6) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20111114
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20111108
+packetLen(0x08a8, 6) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20111101
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20111025
+packetLen(0x08a8, 26) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20110928
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20110920
+packetLen(0x08a8, 6) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20110802
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20110726
+packetLen(0x08a8, 6) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20110419
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20110412
+packetLen(0x08a8, 12) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20110329
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20110322
+packetLen(0x08a8, 4) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20110308
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20110228
+packetLen(0x08a8, 36) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20110215
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20110208
+packetLen(0x08a8, 6) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20110104
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x08a9
+#if PACKETVER >= 20111213
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20111207
+packetLen(0x08a9, 6) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20110809
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20110802
+packetLen(0x08a9, 36) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20110705
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20110627
+packetLen(0x08a9, 36) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20110620
+packetLen(0x08a9, 19) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20110523
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20110517
+packetLen(0x08a9, 8) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20110419
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20110412
+packetLen(0x08a9, 36) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20110405
+packetLen(0x08a9, -1) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20110329
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20110322
+packetLen(0x08a9, -1) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20110222
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20110215
+packetLen(0x08a9, 6) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20110125
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20110118
+packetLen(0x08a9, 6) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20110104
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#endif
+
+// Packet: 0x08aa
+#if PACKETVER >= 20111220
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20111213
+packetLen(0x08aa, 7) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20111207
+packetLen(0x08aa, 26) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20111108
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20111101
+packetLen(0x08aa, 7) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20111025
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20111017
+packetLen(0x08aa, -1) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20110928
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20110920
+packetLen(0x08aa, 6) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20110906
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20110823
+packetLen(0x08aa, 6) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20110523
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20110517
+packetLen(0x08aa, 19) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20110511
+packetLen(0x08aa, 10) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20110503
+packetLen(0x08aa, 5) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20110426
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20110419
+packetLen(0x08aa, 19) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20110228
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20110222
+packetLen(0x08aa, 5) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20110208
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20110131
+packetLen(0x08aa, -1) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20110104
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x08ab
+#if PACKETVER >= 20111213
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20111207
+packetLen(0x08ab, -1) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20111108
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20111101
+packetLen(0x08ab, -1) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20111025
+packetLen(0x08ab, 36) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20110809
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20110802
+packetLen(0x08ab, -1) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20110718
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20110711
+packetLen(0x08ab, 4) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20110620
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20110614
+packetLen(0x08ab, 36) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20110523
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20110517
+packetLen(0x08ab, 6) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20110511
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20110503
+packetLen(0x08ab, -1) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20110412
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20110405
+packetLen(0x08ab, 10) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20110329
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20110322
+packetLen(0x08ab, 6) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20110228
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20110222
+packetLen(0x08ab, 19) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20110111
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20110104
+packetLen(0x08ab, 26) // CZ_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x08ac
+#if PACKETVER >= 20111227
+packetLen(0x08ac, -1) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20110809
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20110802
+packetLen(0x08ac, -1) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20110726
+packetLen(0x08ac, 18) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20110511
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20110503
+packetLen(0x08ac, 8) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20110426
+packetLen(0x08ac, -1) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20110308
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20110228
+packetLen(0x08ac, 8) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20110215
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20110208
+packetLen(0x08ac, 4) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20110131
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20110125
+packetLen(0x08ac, 8) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20110104
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x08ad
+#if PACKETVER >= 20111227
+packetLen(0x08ad, 7) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20111220
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20111207
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20111122
+packetLen(0x08ad, 10) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20111114
+packetLen(0x08ad, 4) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20111108
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20111101
+packetLen(0x08ad, 90) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20111025
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20111004
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110928
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110920
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110906
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110831
+packetLen(0x08ad, -1) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110809
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110802
+packetLen(0x08ad, 8) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110726
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110718
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110711
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110705
+packetLen(0x08ad, 5) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110620
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110614
+packetLen(0x08ad, 5) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110517
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110426
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110419
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110412
+packetLen(0x08ad, 8) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110405
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110329
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110322
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110308
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110228
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110222
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110215
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110208
+packetLen(0x08ad, 18) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110131
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110125
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110118
+packetLen(0x08ad, 4) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110104
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x08af
+packetLen(0x08af, 10) // HC_WAITING_LOGIN
+
+// Packet: 0x08b0
+#if PACKETVER >= 20110111
+packetLen(0x08b0, 17) // CH_WAITING_LOGIN
+#endif
+
+// Packet: 0x08b1
+packetLen(0x08b1, -1) // ZC_MCSTORE_NOTMOVEITEM_LIST
+
+// Packet: 0x08b2
+packetLen(0x08b2, -1) // AC_REALNAME_AUTH
+
+// Packet: 0x08b3
+#if PACKETVER >= 20110111
+packetLen(0x08b3, -1) // ZC_SHOWSCRIPT
+#endif
+
+// Packet: 0x08b4
+#if PACKETVER >= 20110125
+packetLen(0x08b4, 2) // ZC_START_COLLECTION
+#endif
+
+// Packet: 0x08b5
+#if PACKETVER >= 20110125
+packetLen(0x08b5, 6) // CZ_TRYCOLLECTION
+#endif
+
+// Packet: 0x08b6
+#if PACKETVER >= 20110125
+packetLen(0x08b6, 3) // ZC_TRYCOLLECTION
+#endif
+
+// Packet: 0x08b7
+#if PACKETVER >= 20110222
+// removed
+#elif PACKETVER >= 20110215
+packetLen(0x08b7, 10) // HC_SECOND_PASSWD_REQ
+#endif
+
+// Packet: 0x08b8
+#if PACKETVER >= 20110308
+packetLen(0x08b8, 10) // CH_SECOND_PASSWD_ACK
+#elif PACKETVER >= 20110215
+packetLen(0x08b8, 12) // CH_SECOND_PASSWD_ACK
+#endif
+
+// Packet: 0x08b9
+#if PACKETVER >= 20110222
+packetLen(0x08b9, 12) // HC_SECOND_PASSWD_LOGIN
+#endif
+
+// Packet: 0x08ba
+#if PACKETVER >= 20110308
+packetLen(0x08ba, 10) // CH_MAKE_SECOND_PASSWD
+#elif PACKETVER >= 20110222
+packetLen(0x08ba, 12) // CH_MAKE_SECOND_PASSWD
+#endif
+
+// Packet: 0x08bb
+#if PACKETVER >= 20110308
+packetLen(0x08bb, 8) // HC_MAKE_SECOND_PASSWD
+#elif PACKETVER >= 20110222
+packetLen(0x08bb, 4) // HC_MAKE_SECOND_PASSWD
+#endif
+
+// Packet: 0x08bc
+#if PACKETVER >= 20110308
+packetLen(0x08bc, 10) // CH_DELETE_SECOND_PASSWD
+#elif PACKETVER >= 20110222
+packetLen(0x08bc, 12) // CH_DELETE_SECOND_PASSWD
+#endif
+
+// Packet: 0x08bd
+#if PACKETVER >= 20111207
+packetLen(0x08bd, 8) // HC_DELETE_SECOND_PASSWD
+#elif PACKETVER >= 20110222
+packetLen(0x08bd, 12) // HC_DELETE_SECOND_PASSWD
+#endif
+
+// Packet: 0x08be
+#if PACKETVER >= 20110308
+packetLen(0x08be, 14) // CH_EDIT_SECOND_PASSWD
+#elif PACKETVER >= 20110228
+packetLen(0x08be, 18) // CH_EDIT_SECOND_PASSWD
+#elif PACKETVER >= 20110222
+packetLen(0x08be, 12) // CH_EDIT_SECOND_PASSWD
+#endif
+
+// Packet: 0x08bf
+#if PACKETVER >= 20110308
+packetLen(0x08bf, 8) // HC_EDIT_SECOND_PASSWD
+#elif PACKETVER >= 20110222
+packetLen(0x08bf, 4) // HC_EDIT_SECOND_PASSWD
+#endif
+
+// Packet: 0x08c0
+#if PACKETVER >= 20110222
+packetLen(0x08c0, -1) // ZC_ACK_SE_CASH_ITEM_LIST2
+#endif
+
+// Packet: 0x08c1
+#if PACKETVER >= 20110222
+packetLen(0x08c1, 2) // CZ_MACRO_START
+#endif
+
+// Packet: 0x08c2
+#if PACKETVER >= 20110222
+packetLen(0x08c2, 2) // CZ_MACRO_STOP
+#endif
+
+// Packet: 0x08c3
+#if PACKETVER >= 20110308
+packetLen(0x08c3, 10) // CH_NOT_AVAILABLE_SECOND_PASSWD
+#elif PACKETVER >= 20110228
+packetLen(0x08c3, 12) // CH_NOT_AVAILABLE_SECOND_PASSWD
+#endif
+
+// Packet: 0x08c4
+#if PACKETVER >= 20110308
+packetLen(0x08c4, 8) // HC_NOT_AVAILABLE_SECOND_PASSWD
+#elif PACKETVER >= 20110228
+packetLen(0x08c4, 4) // HC_NOT_AVAILABLE_SECOND_PASSWD
+#endif
+
+// Packet: 0x08c5
+#if PACKETVER >= 20110308
+packetLen(0x08c5, 6) // CH_AVAILABLE_SECOND_PASSWD
+#elif PACKETVER >= 20110228
+packetLen(0x08c5, 12) // CH_AVAILABLE_SECOND_PASSWD
+#endif
+
+// Packet: 0x08c6
+#if PACKETVER >= 20110228
+packetLen(0x08c6, 4) // HC_AVAILABLE_SECOND_PASSWD
+#endif
+
+// Packet: 0x08c7
+#if PACKETVER >= 20110419
+packetLen(0x08c7, -1) // ZC_SKILL_ENTRY3
+#endif
+
+// Packet: 0x08c8
+#if PACKETVER >= 20110614
+packetLen(0x08c8, 34) // ZC_NOTIFY_ACT3
+#endif
+
+// Packet: 0x08c9
+#if PACKETVER >= 20110614
+packetLen(0x08c9, 2) // CZ_REQ_SCHEDULER_CASHITEM
+#endif
+
+// Packet: 0x08ca
+#if PACKETVER >= 20110614
+packetLen(0x08ca, -1) // ZC_ACK_SCHEDULER_CASHITEM
+#endif
+
+// Packet: 0x08cb
+#if PACKETVER >= 20110627
+packetLen(0x08cb, -1) // ZC_PERSONAL_INFOMATION
+#endif
+
+// Packet: 0x08cc
+#if PACKETVER >= 20110726
+packetLen(0x08cc, 109) // CA_LOGIN5
+#elif PACKETVER >= 20110711
+// removed
+#elif PACKETVER >= 20110705
+packetLen(0x08cc, 5) // CA_LOGIN5
+#endif
+
+// Packet: 0x08cd
+#if PACKETVER >= 20110802
+packetLen(0x08cd, 10) // ZC_STOPMOVE_FORCE
+#endif
+
+// Packet: 0x08ce
+#if PACKETVER >= 20110809
+packetLen(0x08ce, 2) // ZC_FAILED_GET_ITEM_FROM_ZONEDA
+#elif PACKETVER >= 20110802
+packetLen(0x08ce, 10) // ZC_FAILED_GET_ITEM_FROM_ZONEDA
+#endif
+
+// Packet: 0x08cf
+#if PACKETVER >= 20110809
+packetLen(0x08cf, 10) // ZC_SPIRITS_ATTRIBUTE
+#endif
+
+// Packet: 0x08d0
+#if PACKETVER >= 20110809
+packetLen(0x08d0, 9) // ZC_REQ_WEAR_EQUIP_ACK2
+#endif
+
+// Packet: 0x08d1
+#if PACKETVER >= 20110809
+packetLen(0x08d1, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK2
+#endif
+
+// Packet: 0x08d2
+#if PACKETVER >= 20110809
+packetLen(0x08d2, 10) // ZC_FASTMOVE
+#endif
+
+// Packet: 0x08d3
+#if PACKETVER >= 20110816
+packetLen(0x08d3, 10) // ZC_SE_CASHSHOP_UPDATE
+#endif
+
+// Packet: 0x08d4
+#if PACKETVER >= 20111101
+packetLen(0x08d4, 8) // CH_REQ_CHANGE_CHARACTER_SLOT
+#elif PACKETVER >= 20110928
+packetLen(0x08d4, 12) // CH_REQ_CHANGE_CHARACTER_SLOT
+#elif PACKETVER >= 20110920
+packetLen(0x08d4, 10) // CH_REQ_CHANGE_CHARACTER_SLOT
+#elif PACKETVER >= 20110906
+packetLen(0x08d4, 14) // CH_REQ_CHANGE_CHARACTER_SLOT
+#endif
+
+// Packet: 0x08d5
+#if PACKETVER >= 20110906
+packetLen(0x08d5, -1) // HC_ACK_CHANGE_CHARACTER_SLOT
+#endif
+
+// Packet: 0x08d6
+#if PACKETVER >= 20110928
+packetLen(0x08d6, 6) // ZC_CLEAR_DIALOG
+#endif
+
+// Packet: 0x08d7
+#if PACKETVER >= 20111004
+packetLen(0x08d7, 28) // CZ_REQ_ENTRY_QUEUE_APPLY
+#endif
+
+// Packet: 0x08d8
+#if PACKETVER >= 20111004
+packetLen(0x08d8, 27) // ZC_ACK_ENTRY_QUEUE_APPLY
+#endif
+
+// Packet: 0x08d9
+#if PACKETVER >= 20111004
+packetLen(0x08d9, 30) // ZC_NOTIFY_ENTRY_QUEUE_APPLY
+#endif
+
+// Packet: 0x08da
+#if PACKETVER >= 20111004
+packetLen(0x08da, 26) // CZ_REQ_ENTRY_QUEUE_CANCEL
+#endif
+
+// Packet: 0x08db
+#if PACKETVER >= 20111004
+packetLen(0x08db, 27) // ZC_ACK_ENTRY_QUEUE_CANCEL
+#endif
+
+// Packet: 0x08dc
+#if PACKETVER >= 20111004
+packetLen(0x08dc, 26) // ZC_NOTIFY_ENTRY_QUEUE_ADMISSION
+#endif
+
+// Packet: 0x08dd
+#if PACKETVER >= 20111004
+packetLen(0x08dd, 27) // CZ_REPLY_ENTRY_QUEUE_ADMISSION
+#endif
+
+// Packet: 0x08de
+#if PACKETVER >= 20111004
+packetLen(0x08de, 27) // ZC_REPLY_ACK_ENTRY_QUEUE_ADMISSION
+#endif
+
+// Packet: 0x08df
+#if PACKETVER >= 20111004
+packetLen(0x08df, 50) // ZC_NOTIFY_LOBBY_ADMISSION
+#endif
+
+// Packet: 0x08e0
+#if PACKETVER >= 20111004
+packetLen(0x08e0, 51) // CZ_REPLY_LOBBY_ADMISSION
+#endif
+
+// Packet: 0x08e1
+#if PACKETVER >= 20111004
+packetLen(0x08e1, 51) // ZC_REPLY_ACK_LOBBY_ADMISSION
+#endif
+
+// Packet: 0x08e2
+#if PACKETVER >= 20111108
+packetLen(0x08e2, 25) // ZC_NAVIGATION_ACTIVE
+#elif PACKETVER >= 20111004
+packetLen(0x08e2, 23) // ZC_NAVIGATION_ACTIVE
+#endif
+
+// Packet: 0x08e3
+#if PACKETVER >= 20111101
+packetLen(0x08e3, 146) // HC_UPDATE_CHARINFO
+#elif PACKETVER >= 20111017
+packetLen(0x08e3, 138) // HC_UPDATE_CHARINFO
+#endif
+
+// Packet: 0x08e4
+#if PACKETVER >= 20111025
+packetLen(0x08e4, 6) // AC_SHUTDOWN_INFO
+#endif
+
+// Packet: 0x08e5
+#if PACKETVER >= 20111025
+packetLen(0x08e5, 41) // CZ_PARTY_RECRUIT_REQ_REGISTER
+#endif
+
+// Packet: 0x08e6
+#if PACKETVER >= 20111025
+packetLen(0x08e6, 4) // ZC_PARTY_RECRUIT_ACK_REGISTER
+#endif
+
+// Packet: 0x08e7
+#if PACKETVER >= 20111025
+packetLen(0x08e7, 10) // CZ_PARTY_RECRUIT_REQ_SEARCH
+#endif
+
+// Packet: 0x08e8
+#if PACKETVER >= 20111025
+packetLen(0x08e8, -1)
+#endif
+
+// Packet: 0x08e9
+#if PACKETVER >= 20111025
+packetLen(0x08e9, 2) // CZ_PARTY_RECRUIT_REQ_DELETE
+#endif
+
+// Packet: 0x08ea
+#if PACKETVER >= 20111025
+packetLen(0x08ea, 4) // ZC_PARTY_RECRUIT_ACK_DELETE
+#endif
+
+// Packet: 0x08eb
+#if PACKETVER >= 20111025
+packetLen(0x08eb, 39) // CZ_PARTY_RECRUIT_REQ_UPDATE
+#endif
+
+// Packet: 0x08ec
+#if PACKETVER >= 20111025
+packetLen(0x08ec, 73) // ZC_PARTY_RECRUIT_NOTIFY_INSERT
+#endif
+
+// Packet: 0x08ed
+#if PACKETVER >= 20111025
+packetLen(0x08ed, 43) // ZC_PARTY_RECRUIT_NOTIFY_UPDATE
+#endif
+
+// Packet: 0x08ee
+#if PACKETVER >= 20111025
+packetLen(0x08ee, 6) // ZC_PARTY_RECRUIT_NOTIFY_DELETE
+#endif
+
+// Packet: 0x08ef
+#if PACKETVER >= 20111101
+packetLen(0x08ef, 6) // CZ_PARTY_RECRUIT_ADD_FILTERLINGLIST
+#elif PACKETVER >= 20111025
+packetLen(0x08ef, -1) // CZ_PARTY_RECRUIT_ADD_FILTERLINGLIST
+#endif
+
+// Packet: 0x08f0
+#if PACKETVER >= 20111101
+packetLen(0x08f0, 6) // CZ_PARTY_RECRUIT_SUB_FILTERLINGLIST
+#elif PACKETVER >= 20111025
+packetLen(0x08f0, -1) // CZ_PARTY_RECRUIT_SUB_FILTERLINGLIST
+#endif
+
+// Packet: 0x08f1
+#if PACKETVER >= 20111025
+packetLen(0x08f1, 6) // CZ_PARTY_RECRUIT_REQ_VOLUNTEER
+#endif
+
+// Packet: 0x08f2
+#if PACKETVER >= 20111101
+packetLen(0x08f2, 36) // ZC_PARTY_RECRUIT_VOLUNTEER_INFO
+#elif PACKETVER >= 20111025
+packetLen(0x08f2, 12) // ZC_PARTY_RECRUIT_VOLUNTEER_INFO
+#endif
+
+// Packet: 0x08f3
+#if PACKETVER >= 20111025
+packetLen(0x08f3, -1)
+#endif
+
+// Packet: 0x08f4
+#if PACKETVER >= 20111025
+packetLen(0x08f4, 6) // CZ_PARTY_RECRUIT_SHOW_EQUIPMENT
+#endif
+
+// Packet: 0x08f5
+#if PACKETVER >= 20111108
+packetLen(0x08f5, -1) // CZ_UNKNOWN_BOOKING_SOMMON_MEMBER_08f5
+#elif PACKETVER >= 20111025
+packetLen(0x08f5, 2) // CZ_UNKNOWN_BOOKING_SOMMON_MEMBER_08f5
+#endif
+
+// Packet: 0x08f6
+#if PACKETVER >= 20111108
+packetLen(0x08f6, 22) // ZC_PARTY_RECRUIT_RECALL_COST
+#elif PACKETVER >= 20111025
+packetLen(0x08f6, 6) // ZC_PARTY_RECRUIT_RECALL_COST
+#endif
+
+// Packet: 0x08f7
+#if PACKETVER >= 20111108
+packetLen(0x08f7, 3) // CZ_PARTY_RECRUIT_ACK_RECALL
+#elif PACKETVER >= 20111101
+packetLen(0x08f7, -1) // CZ_PARTY_RECRUIT_ACK_RECALL
+#elif PACKETVER >= 20111025
+packetLen(0x08f7, 6) // CZ_PARTY_RECRUIT_ACK_RECALL
+#endif
+
+// Packet: 0x08f8
+#if PACKETVER >= 20111108
+packetLen(0x08f8, 7) // ZC_PARTY_RECRUIT_FAILED_RECALL
+#elif PACKETVER >= 20111025
+packetLen(0x08f8, 6) // ZC_PARTY_RECRUIT_FAILED_RECALL
+#endif
+
+// Packet: 0x08f9
+#if PACKETVER >= 20111108
+packetLen(0x08f9, 6) // CZ_PARTY_RECRUIT_REFUSE_VOLUNTEER
+#endif
+
+// Packet: 0x08fa
+#if PACKETVER >= 20111108
+packetLen(0x08fa, 6) // ZC_PARTY_RECRUIT_REFUSE_VOLUNTEER
+#endif
+
+// Packet: 0x08fb
+#if PACKETVER >= 20111122
+packetLen(0x08fb, 6) // CZ_PARTY_RECRUIT_CANCEL_VOLUNTEER
+#endif
+
+// Packet: 0x08fc
+#if PACKETVER >= 20111101
+packetLen(0x08fc, 30) // CH_REQ_CHANGE_CHARACTERNAME
+#endif
+
+// Packet: 0x08fd
+#if PACKETVER >= 20111101
+packetLen(0x08fd, 6) // CH_ACK_CHANGE_CHARACTERNAME
+#endif
+
+// Packet: 0x08fe
+#if PACKETVER >= 20111101
+packetLen(0x08fe, -1) // ZC_HUNTING_QUEST_INFO
+#endif
+
+// Packet: 0x08ff
+#if PACKETVER >= 20111101
+packetLen(0x08ff, 24) // ZC_EFST_SET_ENTER
+#endif
+
+// Packet: 0x0900
+#if PACKETVER >= 20111122
+packetLen(0x0900, -1) // ZC_INVENTORY_ITEMLIST_NORMAL
+#endif
+
+// Packet: 0x0901
+#if PACKETVER >= 20111122
+packetLen(0x0901, -1) // ZC_INVENTORY_ITEMLIST_EQUIP
+#endif
+
+// Packet: 0x0902
+#if PACKETVER >= 20111122
+packetLen(0x0902, -1) // ZC_CART_ITEMLIST_NORMAL
+#endif
+
+// Packet: 0x0903
+#if PACKETVER >= 20111122
+packetLen(0x0903, -1) // ZC_CART_ITEMLIST_EQUIP
+#endif
+
+// Packet: 0x0904
+#if PACKETVER >= 20111122
+packetLen(0x0904, -1) // ZC_STORE_ITEMLIST_NORMAL
+#endif
+
+// Packet: 0x0905
+#if PACKETVER >= 20111122
+packetLen(0x0905, -1) // ZC_STORE_ITEMLIST_EQUIP
+#endif
+
+// Packet: 0x0906
+#if PACKETVER >= 20111122
+packetLen(0x0906, -1) // ZC_MICROSCOPE
+#endif
+
+// Packet: 0x0907
+#if PACKETVER >= 20111122
+packetLen(0x0907, 5) // CZ_INVENTORY_TAB
+#endif
+
+// Packet: 0x0908
+#if PACKETVER >= 20111122
+packetLen(0x0908, 5) // ZC_INVENTORY_TAB
+#endif
+
+// Packet: 0x0909
+#if PACKETVER >= 20111122
+packetLen(0x0909, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER
+#endif
+
+// Packet: 0x090a
+#if PACKETVER >= 20111207
+packetLen(0x090a, 26) // CZ_REQ_ENTRY_QUEUE_RANKING
+#endif
+
+// Packet: 0x090b
+#if PACKETVER >= 20111207
+packetLen(0x090b, 30) // ZC_PARTY_RECRUIT_ADD_FILTERLINGLIST
+#endif
+
+// Packet: 0x090c
+#if PACKETVER >= 20111207
+packetLen(0x090c, 30) // ZC_PARTY_RECRUIT_SUB_FILTERLINGLIST
+#endif
+
+// Packet: 0x090d
+#if PACKETVER >= 20111227
+packetLen(0x090d, -1) // ZC_PREMIUM_CAMPAIGN_INFO
+#endif
+
+// Packet: 0x090e
+#if PACKETVER >= 20111227
+packetLen(0x090e, 2) // ZC_ENTRY_QUEUE_INIT
+#endif
+
+// Packet: 0x09dc
+#if PACKETVER >= 20110809
+// removed
+#elif PACKETVER >= 20110802
+packetLen(0x09dc, 2) // ZC_NOTIFY_NEWENTRY10
+#endif
+
+
+#endif /* COMMON_PACKETS2011_LEN_MAIN_H */
diff --git a/src/common/packets/packets2011_len_re.h b/src/common/packets/packets2011_len_re.h
new file mode 100644
index 000000000..58e647cac
--- /dev/null
+++ b/src/common/packets/packets2011_len_re.h
@@ -0,0 +1,4781 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2011_LEN_RE_H
+#define COMMON_PACKETS2011_LEN_RE_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+#if PACKETVER >= 20111025
+packetLen(0x006d, 146) // HC_ACCEPT_MAKECHAR
+#elif PACKETVER >= 20110928
+packetLen(0x006d, 142) // HC_ACCEPT_MAKECHAR
+#elif PACKETVER >= 20110111
+packetLen(0x006d, 138) // HC_ACCEPT_MAKECHAR
+#elif PACKETVER >= 20110104
+packetLen(0x006d, 134) // HC_ACCEPT_MAKECHAR
+#endif
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 22) // CZ_ENTER
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 44) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 10) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, 14)
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+packetLen(0x0094, 19) // CZ_REQNAME
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+packetLen(0x00a7, 9)
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 9) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+packetLen(0x00f7, 17) // CZ_REQUEST_TIME
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+packetLen(0x0113, 25) // CZ_USE_SKILL
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 37) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+#if PACKETVER >= 20111220
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20111213
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20111207
+packetLen(0x0202, 8) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20111122
+packetLen(0x0202, 18) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20111101
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20111025
+packetLen(0x0202, 4) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20111017
+packetLen(0x0202, 90) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20111010
+packetLen(0x0202, 8) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20110920
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20110906
+packetLen(0x0202, 10) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20110823
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20110816
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20110104
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x020f
+packetLen(0x020f, 10) // CZ_REQ_PVPPOINT
+
+// Packet: 0x0210
+packetLen(0x0210, 22) // ZC_ACK_PVPPOINT
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+
+// Packet: 0x022b
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+
+// Packet: 0x022c
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+
+// Packet: 0x022d
+#if PACKETVER >= 20111227
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20111220
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+#elif PACKETVER >= 20111213
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20111207
+packetLen(0x022d, 8) // CZ_COMMAND_MER
+#elif PACKETVER >= 20111122
+packetLen(0x022d, 7) // CZ_COMMAND_MER
+#elif PACKETVER >= 20111114
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20111108
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+#elif PACKETVER >= 20111025
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20111017
+packetLen(0x022d, 12) // CZ_COMMAND_MER
+#elif PACKETVER >= 20111004
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20110920
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20110906
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20110823
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20110816
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20110104
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+#endif
+
+// Packet: 0x022e
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+
+// Packet: 0x022f
+packetLen(0x022f, 5) // ZC_FEED_MER
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+#if PACKETVER >= 20111220
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20111213
+packetLen(0x023b, 8) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20111207
+packetLen(0x023b, 19) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20111114
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20111108
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20111101
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20111025
+packetLen(0x023b, 5) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20111010
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20111004
+packetLen(0x023b, 6) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110928
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110920
+packetLen(0x023b, 5) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110906
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110831
+packetLen(0x023b, 10) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110823
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110816
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20110104
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+#endif
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+
+// Packet: 0x0275
+packetLen(0x0275, 37) // CH_ENTER2
+
+// Packet: 0x0276
+packetLen(0x0276, -1) // AC_ACCEPT_LOGIN2
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+#if PACKETVER >= 20111227
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20111220
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20111213
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20111207
+packetLen(0x0281, 7) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20111122
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20111114
+packetLen(0x0281, 6) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20111108
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20111101
+packetLen(0x0281, 36) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20111025
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20111004
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110928
+packetLen(0x0281, 5) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110920
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110906
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110823
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110816
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20110104
+packetLen(0x0281, 4) // CZ_GANGSI_RANK
+#endif
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+
+// Packet: 0x0288
+packetLen(0x0288, -1) // CZ_PC_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0289
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0296
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0297
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0298
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+
+// Packet: 0x0299
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+
+// Packet: 0x029a
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+
+// Packet: 0x029b
+packetLen(0x029b, 80) // ZC_MER_INIT
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a5
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+
+// Packet: 0x02aa
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+
+// Packet: 0x02ab
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+
+// Packet: 0x02ac
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+
+// Packet: 0x02ad
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+
+// Packet: 0x02b0
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+
+// Packet: 0x02b1
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+
+// Packet: 0x02b2
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+
+// Packet: 0x02b3
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+
+// Packet: 0x02b4
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+
+// Packet: 0x02b5
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+
+// Packet: 0x02b6
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+
+// Packet: 0x02b7
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+
+// Packet: 0x02b8
+packetLen(0x02b8, 22) // ZC_ITEM_PICKUP_PARTY
+
+// Packet: 0x02b9
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+
+// Packet: 0x02ba
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+
+// Packet: 0x02bb
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+
+// Packet: 0x02bc
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+
+// Packet: 0x02c1
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+
+// Packet: 0x02c2
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+
+// Packet: 0x02c4
+#if PACKETVER >= 20111227
+packetLen(0x02c4, 36) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20111220
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20111213
+packetLen(0x02c4, 6) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20111122
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20111108
+packetLen(0x02c4, 8) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20111101
+packetLen(0x02c4, 10) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20111010
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20111004
+packetLen(0x02c4, 10) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20110831
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20110823
+packetLen(0x02c4, 5) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20110816
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20110104
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+#endif
+
+// Packet: 0x02c5
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c6
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+
+// Packet: 0x02c7
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c8
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+
+// Packet: 0x02c9
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+
+// Packet: 0x02ca
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+
+// Packet: 0x02cb
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+
+// Packet: 0x02cc
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+
+// Packet: 0x02cd
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+
+// Packet: 0x02ce
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+
+// Packet: 0x02cf
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+
+// Packet: 0x02d0
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d1
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d2
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d3
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+
+// Packet: 0x02d4
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+
+// Packet: 0x02d5
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+
+// Packet: 0x02d6
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d7
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d8
+packetLen(0x02d8, 10) // CZ_CONFIG
+
+// Packet: 0x02d9
+packetLen(0x02d9, 10) // ZC_CONFIG
+
+// Packet: 0x02da
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+
+// Packet: 0x02db
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+
+// Packet: 0x02dc
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+
+// Packet: 0x02dd
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+
+// Packet: 0x02de
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+
+// Packet: 0x02df
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+
+// Packet: 0x02e0
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+
+// Packet: 0x02e1
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+
+// Packet: 0x02e2
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+
+// Packet: 0x02e3
+packetLen(0x02e3, 22) // CZ_USE_SKILL_NEW_JAPEN
+
+// Packet: 0x02e4
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+
+// Packet: 0x02e5
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+
+// Packet: 0x02e6
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+
+// Packet: 0x02e7
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+
+// Packet: 0x02e8
+packetLen(0x02e8, -1) // ZC_NORMAL_ITEMLIST3
+
+// Packet: 0x02e9
+packetLen(0x02e9, -1) // ZC_CART_NORMAL_ITEMLIST3
+
+// Packet: 0x02ea
+packetLen(0x02ea, -1) // ZC_STORE_NORMAL_ITEMLIST3
+
+// Packet: 0x02eb
+packetLen(0x02eb, 13) // ZC_ACCEPT_ENTER2
+
+// Packet: 0x02ec
+packetLen(0x02ec, 67) // ZC_NOTIFY_MOVEENTRY4
+
+// Packet: 0x02ed
+packetLen(0x02ed, 59) // ZC_NOTIFY_NEWENTRY4
+
+// Packet: 0x02ee
+packetLen(0x02ee, 60) // ZC_NOTIFY_STANDENTRY4
+
+// Packet: 0x02ef
+packetLen(0x02ef, 8) // ZC_NOTIFY_FONT
+
+// Packet: 0x02f0
+packetLen(0x02f0, 10) // ZC_PROGRESS
+
+// Packet: 0x02f1
+packetLen(0x02f1, 2) // CZ_PROGRESS
+
+// Packet: 0x02f2
+packetLen(0x02f2, 2) // ZC_PROGRESS_CANCEL
+
+// Packet: 0x02f3
+#if PACKETVER >= 20110131
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+#endif
+
+// Packet: 0x02f4
+#if PACKETVER >= 20110131
+packetLen(0x02f4, 3) // ZC_IRMAIL_SEND_RES
+#endif
+
+// Packet: 0x02f5
+#if PACKETVER >= 20110131
+packetLen(0x02f5, 7) // ZC_IRMAIL_NOTIFY
+#endif
+
+// Packet: 0x02f6
+#if PACKETVER >= 20110131
+packetLen(0x02f6, 7) // CZ_IRMAIL_LIST
+#endif
+
+// Packet: 0x035c
+packetLen(0x035c, 2) // CZ_OPEN_SIMPLE_CASHSHOP_ITEMLIST
+
+// Packet: 0x035d
+packetLen(0x035d, -1) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+
+// Packet: 0x035e
+packetLen(0x035e, 2) // CZ_CLOSE_WINDOW
+
+// Packet: 0x035f
+#if PACKETVER >= 20111227
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20111220
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20111213
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20111207
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20111108
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20111101
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20111025
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20111017
+packetLen(0x035f, 19) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20111010
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20110928
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20110920
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20110906
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20110823
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20110816
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20110104
+packetLen(0x035f, 5) // CZ_REQUEST_MOVE2
+#endif
+
+// Packet: 0x0360
+#if PACKETVER >= 20111227
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20111220
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20111122
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20111108
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20111101
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20111025
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20111017
+packetLen(0x0360, 5) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20111004
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110928
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110920
+packetLen(0x0360, 19) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110906
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110831
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110823
+packetLen(0x0360, 12) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20110104
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#endif
+
+// Packet: 0x0361
+#if PACKETVER >= 20111220
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20111213
+packetLen(0x0361, 26) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20111207
+packetLen(0x0361, 10) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20111122
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20111114
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20111025
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20111017
+packetLen(0x0361, 6) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20111010
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20111004
+packetLen(0x0361, 18) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20110928
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20110831
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20110823
+packetLen(0x0361, 18) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20110104
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#endif
+
+// Packet: 0x0362
+#if PACKETVER >= 20111213
+packetLen(0x0362, 5) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20111207
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20111122
+packetLen(0x0362, 8) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20111017
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20111010
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20111004
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110928
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110920
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110906
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110831
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110823
+packetLen(0x0362, 10) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20110104
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#endif
+
+// Packet: 0x0363
+#if PACKETVER >= 20111227
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20111220
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20111207
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20111122
+packetLen(0x0363, 90) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20111114
+packetLen(0x0363, 18) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20111101
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20111025
+packetLen(0x0363, 19) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20111017
+packetLen(0x0363, 26) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20111010
+packetLen(0x0363, 7) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20111004
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110928
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110920
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110906
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110823
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110816
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20110104
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+#endif
+
+// Packet: 0x0364
+#if PACKETVER >= 20111227
+packetLen(0x0364, 10) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20111220
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20111207
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20111114
+packetLen(0x0364, 36) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20111108
+packetLen(0x0364, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20111101
+packetLen(0x0364, 5) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20111017
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20111010
+packetLen(0x0364, 19) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20111004
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110928
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110920
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110906
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110823
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20110104
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#endif
+
+// Packet: 0x0365
+#if PACKETVER >= 20111227
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20111220
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20111213
+packetLen(0x0365, 6) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20111207
+packetLen(0x0365, 12) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20111122
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20111114
+packetLen(0x0365, 26) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20111108
+packetLen(0x0365, 10) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20111010
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20111004
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20110928
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20110920
+packetLen(0x0365, 90) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20110906
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20110831
+packetLen(0x0365, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20110823
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20110816
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20110104
+packetLen(0x0365, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#endif
+
+// Packet: 0x0366
+#if PACKETVER >= 20111227
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20111220
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20111213
+packetLen(0x0366, 4) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20111207
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20111122
+packetLen(0x0366, 12) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20111108
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20111101
+packetLen(0x0366, 5) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20111025
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20111017
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20111010
+packetLen(0x0366, 5) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20110928
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20110920
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20110906
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20110831
+packetLen(0x0366, 5) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20110823
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20110816
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20110104
+packetLen(0x0366, 10) // CZ_USE_SKILL_TOGROUND2
+#endif
+
+// Packet: 0x0367
+#if PACKETVER >= 20111220
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20111213
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20111207
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20111122
+packetLen(0x0367, 4) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20111101
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20111025
+packetLen(0x0367, 8) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20111017
+packetLen(0x0367, 10) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20111010
+packetLen(0x0367, 26) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20111004
+packetLen(0x0367, 6) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20110906
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20110831
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20110816
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20110104
+packetLen(0x0367, 90) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#endif
+
+// Packet: 0x0368
+#if PACKETVER >= 20111227
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20111220
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20111122
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20111108
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20111101
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20111025
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20111010
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20110906
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20110831
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20110104
+packetLen(0x0368, 6) // CZ_REQNAME2
+#endif
+
+// Packet: 0x0369
+#if PACKETVER >= 20111227
+packetLen(0x0369, 26) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20111220
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20111207
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20111122
+packetLen(0x0369, -1) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20111114
+packetLen(0x0369, 6) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20111108
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20111101
+packetLen(0x0369, 10) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20111025
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20111010
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20111004
+packetLen(0x0369, 8) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110928
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110920
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110906
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110831
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110823
+packetLen(0x0369, -1) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110816
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20110104
+packetLen(0x0369, 6) // CZ_REQNAME_BYGID2
+#endif
+
+// Packet: 0x03dd
+packetLen(0x03dd, 18) // AHC_GAME_GUARD
+
+// Packet: 0x03de
+packetLen(0x03de, 18) // CAH_ACK_GAME_GUARD
+
+// Packet: 0x0436
+#if PACKETVER >= 20111227
+packetLen(0x0436, 10) // CZ_ENTER2
+#elif PACKETVER >= 20111213
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20111122
+packetLen(0x0436, 6) // CZ_ENTER2
+#elif PACKETVER >= 20111108
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20111101
+packetLen(0x0436, 26) // CZ_ENTER2
+#elif PACKETVER >= 20111025
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20111017
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20111010
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20111004
+packetLen(0x0436, 19) // CZ_ENTER2
+#elif PACKETVER >= 20110928
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20110920
+packetLen(0x0436, 12) // CZ_ENTER2
+#elif PACKETVER >= 20110906
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20110831
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20110823
+packetLen(0x0436, 5) // CZ_ENTER2
+#elif PACKETVER >= 20110816
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20110104
+packetLen(0x0436, 19) // CZ_ENTER2
+#endif
+
+// Packet: 0x0437
+#if PACKETVER >= 20111220
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20111122
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20111108
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20111101
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20111025
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20111010
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20110906
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20110823
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20110816
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20110104
+packetLen(0x0437, 7) // CZ_REQUEST_ACT2
+#endif
+
+// Packet: 0x0438
+#if PACKETVER >= 20111227
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20111220
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20111122
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20111114
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20111108
+packetLen(0x0438, 8) // CZ_USE_SKILL2
+#elif PACKETVER >= 20111025
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20111017
+packetLen(0x0438, -1) // CZ_USE_SKILL2
+#elif PACKETVER >= 20111010
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110928
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110920
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110906
+packetLen(0x0438, 26) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110831
+packetLen(0x0438, 6) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110823
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20110104
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#endif
+
+// Packet: 0x0439
+packetLen(0x0439, 8) // CZ_USE_ITEM2
+
+// Packet: 0x043d
+packetLen(0x043d, 8) // ZC_SKILL_POSTDELAY
+
+// Packet: 0x043e
+packetLen(0x043e, -1) // ZC_SKILL_POSTDELAY_LIST
+
+// Packet: 0x043f
+packetLen(0x043f, 25) // ZC_MSG_STATE_CHANGE2
+
+// Packet: 0x0440
+packetLen(0x0440, 10) // ZC_MILLENNIUMSHIELD
+
+// Packet: 0x0441
+packetLen(0x0441, 4) // ZC_SKILLINFO_DELETE
+
+// Packet: 0x0442
+packetLen(0x0442, -1) // ZC_SKILL_SELECT_REQUEST
+
+// Packet: 0x0443
+packetLen(0x0443, 8) // CZ_SKILL_SELECT_RESPONSE
+
+// Packet: 0x0444
+packetLen(0x0444, -1) // ZC_SIMPLE_CASH_POINT_ITEMLIST
+
+// Packet: 0x0445
+packetLen(0x0445, 10) // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0446
+packetLen(0x0446, 14) // ZC_QUEST_NOTIFY_EFFECT
+
+// Packet: 0x0447
+packetLen(0x0447, 2) // CZ_BLOCKING_PLAY_CANCEL
+
+// Packet: 0x0448
+packetLen(0x0448, -1) // HC_CHARACTER_LIST
+
+// Packet: 0x044a
+packetLen(0x044a, 6) // CZ_CLIENT_VERSION
+
+// Packet: 0x044b
+packetLen(0x044b, 2) // CZ_CLOSE_SIMPLECASH_SHOP
+
+// Packet: 0x07d7
+packetLen(0x07d7, 8) // CZ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d8
+packetLen(0x07d8, 8) // ZC_REQ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d9
+packetLen(0x07d9, 268) // ZC_SHORTCUT_KEY_LIST_V2
+
+// Packet: 0x07da
+packetLen(0x07da, 6) // CZ_CHANGE_GROUP_MASTER
+
+// Packet: 0x07db
+packetLen(0x07db, 8) // ZC_HO_PAR_CHANGE
+
+// Packet: 0x07dc
+packetLen(0x07dc, 6) // CZ_SEEK_PARTY
+
+// Packet: 0x07dd
+packetLen(0x07dd, 54) // ZC_SEEK_PARTY
+
+// Packet: 0x07de
+packetLen(0x07de, 30) // CZ_SEEK_PARTY_MEMBER
+
+// Packet: 0x07df
+packetLen(0x07df, 54) // ZC_SEEK_PARTY_MEMBER
+
+// Packet: 0x07e0
+packetLen(0x07e0, 58) // ZC_ES_NOTI_MYINFO
+
+// Packet: 0x07e1
+packetLen(0x07e1, 15) // ZC_SKILLINFO_UPDATE2
+
+// Packet: 0x07e2
+packetLen(0x07e2, 8) // ZC_MSG_VALUE
+
+// Packet: 0x07e3
+packetLen(0x07e3, 6) // ZC_ITEMLISTWIN_OPEN
+
+// Packet: 0x07e4
+#if PACKETVER >= 20111227
+packetLen(0x07e4, 4) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20111220
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20111004
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110928
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110920
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110906
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110831
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110823
+packetLen(0x07e4, 26) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110816
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20110104
+packetLen(0x07e4, -1) // CZ_ITEMLISTWIN_RES
+#endif
+
+// Packet: 0x07e5
+packetLen(0x07e5, 4) // CH_ENTER_CHECKBOT
+
+// Packet: 0x07e6
+packetLen(0x07e6, 8) // ZC_MSG_SKILL
+
+// Packet: 0x07e7
+packetLen(0x07e7, 32) // CH_CHECKBOT
+
+// Packet: 0x07e8
+packetLen(0x07e8, -1) // HC_CHECKBOT
+
+// Packet: 0x07e9
+packetLen(0x07e9, 5) // HC_CHECKBOT_RESULT
+
+// Packet: 0x07ea
+packetLen(0x07ea, 2) // CZ_BATTLE_FIELD_LIST
+
+// Packet: 0x07eb
+packetLen(0x07eb, -1) // ZC_BATTLE_FIELD_LIST
+
+// Packet: 0x07ec
+#if PACKETVER >= 20111227
+packetLen(0x07ec, 90) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20111220
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20111213
+packetLen(0x07ec, 10) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20111207
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20111122
+packetLen(0x07ec, -1) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20111114
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20111108
+packetLen(0x07ec, 18) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20111101
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20111025
+packetLen(0x07ec, 10) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20111017
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20111010
+packetLen(0x07ec, 26) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20111004
+packetLen(0x07ec, 7) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110928
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110920
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110906
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110831
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110823
+packetLen(0x07ec, 36) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20110104
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#endif
+
+// Packet: 0x07ed
+packetLen(0x07ed, 10) // ZC_JOIN_BATTLE_FIELD
+
+// Packet: 0x07ee
+packetLen(0x07ee, 6) // CZ_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07ef
+packetLen(0x07ef, 8) // ZC_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07f0
+packetLen(0x07f0, 6) // CZ_REQ_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f1
+packetLen(0x07f1, 18) // ZC_ACK_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f2
+packetLen(0x07f2, 8) // ZC_BATTLE_NOTI_START_STEP
+
+// Packet: 0x07f3
+packetLen(0x07f3, 6) // ZC_BATTLE_JOIN_NOTI_DEFER
+
+// Packet: 0x07f4
+packetLen(0x07f4, 3) // ZC_BATTLE_JOIN_DISABLE_STATE
+
+// Packet: 0x07f5
+packetLen(0x07f5, 6) // CZ_GM_FULLSTRIP
+
+// Packet: 0x07f6
+packetLen(0x07f6, 14) // ZC_NOTIFY_EXP
+
+// Packet: 0x07f7
+packetLen(0x07f7, -1) // ZC_NOTIFY_MOVEENTRY7
+
+// Packet: 0x07f8
+packetLen(0x07f8, -1) // ZC_NOTIFY_NEWENTRY5
+
+// Packet: 0x07f9
+packetLen(0x07f9, -1) // ZC_NOTIFY_STANDENTRY5
+
+// Packet: 0x07fa
+packetLen(0x07fa, 8) // ZC_DELETE_ITEM_FROM_BODY
+
+// Packet: 0x07fb
+packetLen(0x07fb, 25) // ZC_USESKILL_ACK2
+
+// Packet: 0x07fc
+packetLen(0x07fc, 10) // ZC_CHANGE_GROUP_MASTER
+
+// Packet: 0x07fd
+packetLen(0x07fd, -1) // ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN
+
+// Packet: 0x07fe
+packetLen(0x07fe, 26) // ZC_PLAY_NPC_BGM
+
+// Packet: 0x07ff
+#if PACKETVER >= 20110719
+// removed
+#elif PACKETVER >= 20110104
+packetLen(0x07ff, -1) // ZC_DEFINE_CHECK
+#endif
+
+// Packet: 0x0800
+packetLen(0x0800, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0801
+packetLen(0x0801, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0802
+#if PACKETVER >= 20111220
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20111122
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20111114
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20111025
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20111017
+packetLen(0x0802, 18) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20111010
+packetLen(0x0802, 12) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20111004
+packetLen(0x0802, 8) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110928
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110920
+packetLen(0x0802, -1) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110906
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110831
+packetLen(0x0802, 19) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110823
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110816
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20110104
+packetLen(0x0802, 18) // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// Packet: 0x0803
+packetLen(0x0803, 4) // ZC_PARTY_BOOKING_ACK_REGISTER
+
+// Packet: 0x0804
+packetLen(0x0804, 14) // CZ_PARTY_BOOKING_REQ_SEARCH
+
+// Packet: 0x0805
+packetLen(0x0805, -1) // ZC_PARTY_BOOKING_ACK_SEARCH
+
+// Packet: 0x0806
+packetLen(0x0806, 2) // CZ_PARTY_BOOKING_REQ_DELETE
+
+// Packet: 0x0807
+packetLen(0x0807, 4) // ZC_PARTY_BOOKING_ACK_DELETE
+
+// Packet: 0x0808
+packetLen(0x0808, 14) // CZ_PARTY_BOOKING_REQ_UPDATE
+
+// Packet: 0x0809
+packetLen(0x0809, 50) // ZC_PARTY_BOOKING_NOTIFY_INSERT
+
+// Packet: 0x080a
+packetLen(0x080a, 18) // ZC_PARTY_BOOKING_NOTIFY_UPDATE
+
+// Packet: 0x080b
+packetLen(0x080b, 6) // ZC_PARTY_BOOKING_NOTIFY_DELETE
+
+// Packet: 0x080c
+packetLen(0x080c, 2) // CZ_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080d
+packetLen(0x080d, 3) // ZC_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080e
+packetLen(0x080e, 14) // ZC_NOTIFY_HP_TO_GROUPM_R2
+
+// Packet: 0x080f
+packetLen(0x080f, 20) // ZC_ADD_EXCHANGE_ITEM2
+
+// Packet: 0x0810
+packetLen(0x0810, 3) // ZC_OPEN_BUYING_STORE
+
+// Packet: 0x0811
+#if PACKETVER >= 20111227
+packetLen(0x0811, 6) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20111220
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20111122
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20111101
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20111010
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20110928
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20110920
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20110906
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20110823
+packetLen(0x0811, 10) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20110104
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#endif
+
+// Packet: 0x0812
+packetLen(0x0812, 8) // ZC_FAILED_OPEN_BUYING_STORE_TO_BUYER
+
+// Packet: 0x0813
+packetLen(0x0813, -1) // ZC_MYITEMLIST_BUYING_STORE
+
+// Packet: 0x0814
+packetLen(0x0814, 86) // ZC_BUYING_STORE_ENTRY
+
+// Packet: 0x0815
+#if PACKETVER >= 20111227
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20111220
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20111114
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20111108
+packetLen(0x0815, 36) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20111101
+packetLen(0x0815, 6) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20111025
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20111010
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20111004
+packetLen(0x0815, 5) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110928
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110920
+packetLen(0x0815, 4) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110831
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110823
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110816
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20110104
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#endif
+
+// Packet: 0x0816
+packetLen(0x0816, 6) // ZC_DISAPPEAR_BUYING_STORE_ENTRY
+
+// Packet: 0x0817
+#if PACKETVER >= 20111220
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20111213
+packetLen(0x0817, 5) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20111108
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20111101
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20111025
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20111017
+packetLen(0x0817, -1) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20110906
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20110831
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20110816
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20110104
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+#endif
+
+// Packet: 0x0818
+packetLen(0x0818, -1) // ZC_ACK_ITEMLIST_BUYING_STORE
+
+// Packet: 0x0819
+#if PACKETVER >= 20111227
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20111220
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20111213
+packetLen(0x0819, 6) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20111207
+packetLen(0x0819, 18) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20111122
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20111114
+packetLen(0x0819, 5) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20111108
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20111101
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20111025
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20111017
+packetLen(0x0819, 8) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20111010
+packetLen(0x0819, 6) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110928
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110920
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110906
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110831
+packetLen(0x0819, 12) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110823
+packetLen(0x0819, 6) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20110104
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#endif
+
+// Packet: 0x081a
+packetLen(0x081a, 4) // ZC_FAILED_TRADE_BUYING_STORE_TO_BUYER
+
+// Packet: 0x081b
+packetLen(0x081b, 10) // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+
+// Packet: 0x081c
+packetLen(0x081c, 10) // ZC_ITEM_DELETE_BUYING_STORE
+
+// Packet: 0x081d
+packetLen(0x081d, 22) // ZC_EL_INIT
+
+// Packet: 0x081e
+packetLen(0x081e, 8) // ZC_EL_PAR_CHANGE
+
+// Packet: 0x081f
+packetLen(0x081f, -1) // ZC_BROADCAST4
+
+// Packet: 0x0820
+packetLen(0x0820, 11) // ZC_COSTUME_SPRITE_CHANGE
+
+// Packet: 0x0821
+packetLen(0x0821, 2) // AC_OTP_USER
+
+// Packet: 0x0822
+packetLen(0x0822, 9) // CA_OTP_AUTH_REQ
+
+// Packet: 0x0823
+packetLen(0x0823, -1) // AC_OTP_AUTH_ACK
+
+// Packet: 0x0824
+packetLen(0x0824, 6) // ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER
+
+// Packet: 0x0825
+packetLen(0x0825, -1) // CA_SSO_LOGIN_REQ
+
+// Packet: 0x0827
+packetLen(0x0827, 6) // CH_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0828
+packetLen(0x0828, 14) // HC_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0829
+packetLen(0x0829, 12) // CH_DELETE_CHAR3
+
+// Packet: 0x082a
+packetLen(0x082a, 10) // HC_DELETE_CHAR3
+
+// Packet: 0x082b
+packetLen(0x082b, 6) // CH_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082c
+packetLen(0x082c, 10) // HC_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082d
+packetLen(0x082d, -1) // HC_ACCEPT_ENTER2
+
+// Packet: 0x0835
+#if PACKETVER >= 20111213
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20111207
+packetLen(0x0835, 10) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20111122
+packetLen(0x0835, 19) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20111108
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20111101
+packetLen(0x0835, -1) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20111025
+packetLen(0x0835, 6) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20111010
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20111004
+packetLen(0x0835, 26) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20110906
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20110831
+packetLen(0x0835, 4) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20110823
+packetLen(0x0835, 8) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20110816
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20110104
+packetLen(0x0835, -1) // CZ_SEARCH_STORE_INFO
+#endif
+
+// Packet: 0x0836
+packetLen(0x0836, -1) // ZC_SEARCH_STORE_INFO_ACK
+
+// Packet: 0x0837
+packetLen(0x0837, 3) // ZC_SEARCH_STORE_INFO_FAILED
+
+// Packet: 0x0838
+#if PACKETVER >= 20111227
+packetLen(0x0838, 6) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20111220
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20111213
+packetLen(0x0838, 19) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20111122
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20111108
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20111101
+packetLen(0x0838, 6) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20111025
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20111010
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110928
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110920
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110906
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110823
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110816
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20110104
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#endif
+
+// Packet: 0x0839
+packetLen(0x0839, 66) // ZC_ACK_BAN_GUILD_SSO
+
+// Packet: 0x083a
+packetLen(0x083a, 5) // ZC_OPEN_SEARCH_STORE_INFO
+
+// Packet: 0x083b
+packetLen(0x083b, 2) // CZ_CLOSE_SEARCH_STORE_INFO
+
+// Packet: 0x083c
+#if PACKETVER >= 20111227
+packetLen(0x083c, 8) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20111220
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20111122
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20111114
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20111108
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20111101
+packetLen(0x083c, 19) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20111017
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20111010
+packetLen(0x083c, -1) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20111004
+packetLen(0x083c, 26) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110928
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110920
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110906
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110831
+packetLen(0x083c, 26) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110823
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110816
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20110104
+packetLen(0x083c, 12) // CZ_SSILIST_ITEM_CLICK
+#endif
+
+// Packet: 0x083d
+packetLen(0x083d, 6) // ZC_SSILIST_ITEM_CLICK_ACK
+
+// Packet: 0x083e
+packetLen(0x083e, 26) // AC_REFUSE_LOGIN2
+
+// Packet: 0x0840
+packetLen(0x0840, -1) // HC_NOTIFY_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0841
+packetLen(0x0841, 4) // CH_SELECT_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0842
+packetLen(0x0842, 6) // CZ_RECALL_SSO
+
+// Packet: 0x0843
+packetLen(0x0843, 6) // CZ_REMOVE_AID_SSO
+
+// Packet: 0x0844
+packetLen(0x0844, 2) // CZ_SE_CASHSHOP_OPEN
+
+// Packet: 0x0845
+packetLen(0x0845, 10) // ZC_SE_CASHSHOP_OPEN
+
+// Packet: 0x0846
+packetLen(0x0846, 4) // CZ_REQ_SE_CASH_TAB_CODE
+
+// Packet: 0x0847
+packetLen(0x0847, -1) // ZC_ACK_SE_CASH_ITEM_LIST
+
+// Packet: 0x0848
+packetLen(0x0848, -1) // CZ_SE_PC_BUY_CASHITEM_LIST
+
+// Packet: 0x0849
+packetLen(0x0849, 16) // ZC_SE_PC_BUY_CASHITEM_RESULT
+
+// Packet: 0x084a
+packetLen(0x084a, 2) // CZ_SE_CASHSHOP_CLOSE
+
+// Packet: 0x084b
+packetLen(0x084b, 19) // ZC_ITEM_FALL_ENTRY4
+
+// Packet: 0x084c
+packetLen(0x084c, 10) // CZ_MACRO_USE_SKILL
+
+// Packet: 0x084d
+packetLen(0x084d, 10) // CZ_MACRO_USE_SKILL_TOGROUND
+
+// Packet: 0x084e
+packetLen(0x084e, 5) // CZ_MACRO_REQUEST_MOVE
+
+// Packet: 0x084f
+packetLen(0x084f, 6) // CZ_MACRO_ITEM_PICKUP
+
+// Packet: 0x0850
+packetLen(0x0850, 7) // CZ_MACRO_REQUEST_ACT
+
+// Packet: 0x0851
+packetLen(0x0851, -1) // ZC_GPK_DYNCODE
+
+// Packet: 0x0852
+packetLen(0x0852, 2) // CZ_GPK_DYNCODE_RELOAD
+
+// Packet: 0x0853
+packetLen(0x0853, -1) // ZC_GPK_AUTH
+
+// Packet: 0x0854
+packetLen(0x0854, -1) // CZ_GPK_AUTH
+
+// Packet: 0x0855
+packetLen(0x0855, 6) // ZC_MACRO_ITEMPICKUP_FAIL
+
+// Packet: 0x0856
+packetLen(0x0856, -1) // ZC_NOTIFY_MOVEENTRY8
+
+// Packet: 0x0857
+packetLen(0x0857, -1) // ZC_NOTIFY_STANDENTRY7
+
+// Packet: 0x0858
+packetLen(0x0858, -1) // ZC_NOTIFY_NEWENTRY6
+
+// Packet: 0x0859
+packetLen(0x0859, -1) // ZC_EQUIPWIN_MICROSCOPE2
+
+// Packet: 0x085a
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+
+// Packet: 0x085b
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+
+// Packet: 0x085c
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+
+// Packet: 0x085d
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+
+// Packet: 0x085e
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+
+// Packet: 0x085f
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+
+// Packet: 0x0860
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+
+// Packet: 0x0861
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+
+// Packet: 0x0862
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+
+// Packet: 0x0863
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+
+// Packet: 0x0864
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+
+// Packet: 0x0865
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+
+// Packet: 0x0866
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+
+// Packet: 0x0867
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+
+// Packet: 0x0868
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+
+// Packet: 0x0869
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+
+// Packet: 0x086a
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+
+// Packet: 0x086b
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+
+// Packet: 0x086c
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+
+// Packet: 0x086d
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+
+// Packet: 0x086e
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+
+// Packet: 0x086f
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+
+// Packet: 0x0870
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+
+// Packet: 0x0871
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+
+// Packet: 0x0872
+packetLen(0x0872, 2)
+
+// Packet: 0x0873
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+
+// Packet: 0x0874
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+
+// Packet: 0x0875
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+
+// Packet: 0x0876
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+
+// Packet: 0x0877
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+
+// Packet: 0x0878
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+
+// Packet: 0x0879
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+
+// Packet: 0x087a
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+
+// Packet: 0x087b
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+
+// Packet: 0x087c
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+
+// Packet: 0x087d
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+
+// Packet: 0x087e
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+
+// Packet: 0x087f
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+
+// Packet: 0x0880
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+
+// Packet: 0x0881
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+
+// Packet: 0x0882
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+
+// Packet: 0x0883
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+
+// Packet: 0x0884
+#if PACKETVER >= 20111114
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20111108
+packetLen(0x0884, 10) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20111025
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20111017
+packetLen(0x0884, 7) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20111010
+packetLen(0x0884, 6) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20110928
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20110920
+packetLen(0x0884, -1) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20110831
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20110823
+packetLen(0x0884, 8) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20110104
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x0885
+#if PACKETVER >= 20111227
+packetLen(0x0885, 8) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20111108
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20111101
+packetLen(0x0885, 6) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20111025
+packetLen(0x0885, 10) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20111017
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20111010
+packetLen(0x0885, 10) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20111004
+packetLen(0x0885, 5) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20110928
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20110920
+packetLen(0x0885, 36) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20110906
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20110831
+packetLen(0x0885, 6) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20110104
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x0886
+#if PACKETVER >= 20111227
+packetLen(0x0886, 6) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20111025
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20111017
+packetLen(0x0886, 6) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20111010
+packetLen(0x0886, -1) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20110920
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20110906
+packetLen(0x0886, 36) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20110104
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#endif
+
+// Packet: 0x0887
+#if PACKETVER >= 20111220
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20111213
+packetLen(0x0887, -1) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20111207
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20111122
+packetLen(0x0887, -1) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20111114
+packetLen(0x0887, 7) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20111101
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20111025
+packetLen(0x0887, 26) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20111010
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20111004
+packetLen(0x0887, 6) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20110906
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20110831
+packetLen(0x0887, 6) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20110104
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x0888
+#if PACKETVER >= 20111227
+packetLen(0x0888, 6) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20111122
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20111114
+packetLen(0x0888, -1) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20111108
+packetLen(0x0888, 8) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20111101
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20111025
+packetLen(0x0888, 18) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20110831
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20110823
+packetLen(0x0888, 5) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20110104
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x0889
+#if PACKETVER >= 20111227
+packetLen(0x0889, 18) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20111220
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20111213
+packetLen(0x0889, 26) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20111010
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20111004
+packetLen(0x0889, -1) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20110104
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x088a
+#if PACKETVER >= 20111108
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20111101
+packetLen(0x088a, 6) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20111017
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20111010
+packetLen(0x088a, 18) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20110906
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20110831
+packetLen(0x088a, 5) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20110104
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x088b
+#if PACKETVER >= 20111227
+packetLen(0x088b, 12) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20111220
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20111213
+packetLen(0x088b, 6) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20111207
+packetLen(0x088b, 4) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20111114
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20111108
+packetLen(0x088b, 4) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20110104
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x088c
+#if PACKETVER >= 20111213
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20111122
+packetLen(0x088c, 6) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20111017
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20111010
+packetLen(0x088c, 36) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20111004
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20110928
+packetLen(0x088c, 36) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20110920
+packetLen(0x088c, 6) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20110831
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20110823
+packetLen(0x088c, -1) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20110104
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x088d
+#if PACKETVER >= 20111213
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20111207
+packetLen(0x088d, -1) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20111108
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20111101
+packetLen(0x088d, 26) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20111017
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20111010
+packetLen(0x088d, 10) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20110928
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20110920
+packetLen(0x088d, 8) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20110104
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x088e
+#if PACKETVER >= 20111025
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20111017
+packetLen(0x088e, 8) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20110928
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20110920
+packetLen(0x088e, 8) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20110104
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x088f
+#if PACKETVER >= 20111220
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20111213
+packetLen(0x088f, 8) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20111207
+packetLen(0x088f, 6) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20111025
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20111017
+packetLen(0x088f, 6) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20111010
+packetLen(0x088f, -1) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20110906
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20110831
+packetLen(0x088f, 8) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20110823
+packetLen(0x088f, 26) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20110816
+packetLen(0x088f, 36) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20110104
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0890
+#if PACKETVER >= 20111220
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20111213
+packetLen(0x0890, 12) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20111207
+packetLen(0x0890, 8) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20111108
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20111101
+packetLen(0x0890, 8) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20111025
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20111017
+packetLen(0x0890, 26) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20111010
+packetLen(0x0890, 5) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20110928
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20110920
+packetLen(0x0890, 26) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20110831
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20110823
+packetLen(0x0890, 90) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20110104
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0891
+#if PACKETVER >= 20111227
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20111220
+packetLen(0x0891, 5) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20111213
+packetLen(0x0891, 8) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20111207
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20111122
+packetLen(0x0891, 26) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20111025
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20111010
+packetLen(0x0891, 6) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20111004
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20110928
+packetLen(0x0891, 4) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20110920
+packetLen(0x0891, 8) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20110104
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0892
+#if PACKETVER >= 20111227
+packetLen(0x0892, -1) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20111220
+packetLen(0x0892, 26) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20111207
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20111122
+packetLen(0x0892, 5) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20111114
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20111108
+packetLen(0x0892, 5) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20110104
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0893
+#if PACKETVER >= 20111227
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20111220
+packetLen(0x0893, 4) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20111213
+packetLen(0x0893, 10) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20111122
+packetLen(0x0893, 6) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20111108
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20111101
+packetLen(0x0893, 8) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20111025
+packetLen(0x0893, 6) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20110920
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20110906
+packetLen(0x0893, 5) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20110831
+packetLen(0x0893, 90) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20110823
+packetLen(0x0893, 8) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20110104
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x0894
+#if PACKETVER >= 20111213
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20111207
+packetLen(0x0894, 5) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20111114
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20111108
+packetLen(0x0894, 6) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20111101
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20111025
+packetLen(0x0894, 5) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20111017
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20111010
+packetLen(0x0894, 4) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20110906
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20110831
+packetLen(0x0894, 18) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20110104
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x0895
+#if PACKETVER >= 20111207
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20111122
+packetLen(0x0895, 26) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20111114
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20111108
+packetLen(0x0895, 19) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20111101
+packetLen(0x0895, 4) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20110906
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20110831
+packetLen(0x0895, 36) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20110104
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x0896
+#if PACKETVER >= 20111220
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20111213
+packetLen(0x0896, 6) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20111207
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20111122
+packetLen(0x0896, 5) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20111114
+packetLen(0x0896, 8) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20111004
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20110928
+packetLen(0x0896, 26) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20110920
+packetLen(0x0896, 6) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20110104
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x0897
+#if PACKETVER >= 20111227
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20111220
+packetLen(0x0897, 36) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20111213
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20111207
+packetLen(0x0897, 5) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20111108
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20111101
+packetLen(0x0897, 8) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20111025
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20111017
+packetLen(0x0897, 8) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20111010
+packetLen(0x0897, 6) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20110104
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x0898
+#if PACKETVER >= 20111220
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20111213
+packetLen(0x0898, 6) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20111207
+packetLen(0x0898, -1) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20111122
+packetLen(0x0898, 6) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20111108
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20111101
+packetLen(0x0898, 5) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20111025
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20111017
+packetLen(0x0898, 36) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20111010
+packetLen(0x0898, 8) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20110831
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20110823
+packetLen(0x0898, -1) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20110104
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x0899
+#if PACKETVER >= 20111207
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20111122
+packetLen(0x0899, 6) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20111114
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20111108
+packetLen(0x0899, -1) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20110928
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20110920
+packetLen(0x0899, 5) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20110831
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20110823
+packetLen(0x0899, 6) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20110104
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x089a
+#if PACKETVER >= 20111220
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20111213
+packetLen(0x089a, 90) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20111122
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20111114
+packetLen(0x089a, -1) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20111010
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20111004
+packetLen(0x089a, 4) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20110928
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20110920
+packetLen(0x089a, 10) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20110104
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x089b
+#if PACKETVER >= 20111227
+packetLen(0x089b, 6) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20111213
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20111207
+packetLen(0x089b, 36) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20111101
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20111025
+packetLen(0x089b, 8) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20111017
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20111010
+packetLen(0x089b, -1) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20111004
+packetLen(0x089b, 36) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20110928
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20110920
+packetLen(0x089b, 6) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20110831
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20110823
+packetLen(0x089b, 19) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20110104
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x089c
+#if PACKETVER >= 20111227
+packetLen(0x089c, 8) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20111220
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20111213
+packetLen(0x089c, 18) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20111122
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20111114
+packetLen(0x089c, 19) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20111025
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20111010
+packetLen(0x089c, 6) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20110928
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20110920
+packetLen(0x089c, 18) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20110831
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20110823
+packetLen(0x089c, -1) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20110104
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#endif
+
+// Packet: 0x089d
+#if PACKETVER >= 20111213
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20111207
+packetLen(0x089d, 5) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20111122
+packetLen(0x089d, -1) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20111114
+packetLen(0x089d, 6) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20110928
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20110920
+packetLen(0x089d, -1) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20110906
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20110831
+packetLen(0x089d, 7) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20110104
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x089e
+#if PACKETVER >= 20111207
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20111122
+packetLen(0x089e, 5) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20111108
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20111101
+packetLen(0x089e, -1) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20111025
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20111017
+packetLen(0x089e, 5) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20110104
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x089f
+#if PACKETVER >= 20111025
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20111017
+packetLen(0x089f, 10) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20110104
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x08a0
+#if PACKETVER >= 20110928
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20110920
+packetLen(0x08a0, 10) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20110906
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20110831
+packetLen(0x08a0, -1) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20110104
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x08a1
+#if PACKETVER >= 20111207
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20111122
+packetLen(0x08a1, 10) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20111114
+packetLen(0x08a1, 8) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20111108
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20111101
+packetLen(0x08a1, 6) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20111025
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20111017
+packetLen(0x08a1, 5) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20110831
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20110823
+packetLen(0x08a1, 6) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20110104
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x08a2
+#if PACKETVER >= 20111227
+packetLen(0x08a2, 6) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20111207
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20111122
+packetLen(0x08a2, 8) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20111114
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20111108
+packetLen(0x08a2, 26) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20111101
+packetLen(0x08a2, 12) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20111025
+packetLen(0x08a2, -1) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20111017
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20111010
+packetLen(0x08a2, 90) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20111004
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20110928
+packetLen(0x08a2, 19) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20110104
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x08a3
+#if PACKETVER >= 20110831
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20110823
+packetLen(0x08a3, 7) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20110104
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x08a4
+#if PACKETVER >= 20111227
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20111220
+packetLen(0x08a4, 19) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20111207
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20111122
+packetLen(0x08a4, 8) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20111017
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20111010
+packetLen(0x08a4, 5) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20111004
+packetLen(0x08a4, 8) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20110928
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20110920
+packetLen(0x08a4, 7) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20110906
+packetLen(0x08a4, 5) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20110831
+packetLen(0x08a4, 26) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20110823
+packetLen(0x08a4, 4) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20110104
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x08a5
+#if PACKETVER >= 20111220
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20111213
+packetLen(0x08a5, 5) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20111207
+packetLen(0x08a5, 26) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20111108
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20111101
+packetLen(0x08a5, 18) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20110906
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20110831
+packetLen(0x08a5, 5) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20110104
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x08a6
+#if PACKETVER >= 20111227
+packetLen(0x08a6, 5) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20111220
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20111213
+packetLen(0x08a6, -1) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20111101
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20111025
+packetLen(0x08a6, 8) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20111017
+packetLen(0x08a6, 6) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20111010
+packetLen(0x08a6, 8) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20110928
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20110920
+packetLen(0x08a6, 26) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20110906
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20110831
+packetLen(0x08a6, 8) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20110104
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#endif
+
+// Packet: 0x08a7
+#if PACKETVER >= 20111227
+packetLen(0x08a7, 19) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20111220
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20111213
+packetLen(0x08a7, 36) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20111207
+packetLen(0x08a7, 90) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20111010
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20111004
+packetLen(0x08a7, 6) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20110906
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20110831
+packetLen(0x08a7, 6) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20110104
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x08a8
+#if PACKETVER >= 20111213
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20111207
+packetLen(0x08a8, 6) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20111114
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20111108
+packetLen(0x08a8, 6) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20111101
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20111025
+packetLen(0x08a8, 26) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20110928
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20110920
+packetLen(0x08a8, 6) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20110104
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x08a9
+#if PACKETVER >= 20111213
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20111207
+packetLen(0x08a9, 6) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20110104
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#endif
+
+// Packet: 0x08aa
+#if PACKETVER >= 20111220
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20111213
+packetLen(0x08aa, 7) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20111207
+packetLen(0x08aa, 26) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20111108
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20111101
+packetLen(0x08aa, 7) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20111025
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20111017
+packetLen(0x08aa, -1) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20110928
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20110920
+packetLen(0x08aa, 6) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20110906
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20110823
+packetLen(0x08aa, 6) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20110104
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x08ab
+#if PACKETVER >= 20111213
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20111207
+packetLen(0x08ab, -1) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20111108
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20111101
+packetLen(0x08ab, -1) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20111025
+packetLen(0x08ab, 36) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20110104
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x08ac
+#if PACKETVER >= 20111227
+packetLen(0x08ac, -1) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20110104
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x08ad
+#if PACKETVER >= 20111227
+packetLen(0x08ad, 7) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20111220
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20111207
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20111122
+packetLen(0x08ad, 10) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20111114
+packetLen(0x08ad, 4) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20111108
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20111101
+packetLen(0x08ad, 90) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20111025
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20111004
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110928
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110920
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110906
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110831
+packetLen(0x08ad, -1) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110816
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20110104
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x08af
+packetLen(0x08af, 10) // HC_WAITING_LOGIN
+
+// Packet: 0x08b0
+#if PACKETVER >= 20110111
+packetLen(0x08b0, 17) // CH_WAITING_LOGIN
+#endif
+
+// Packet: 0x08b1
+packetLen(0x08b1, -1) // ZC_MCSTORE_NOTMOVEITEM_LIST
+
+// Packet: 0x08b2
+packetLen(0x08b2, -1) // AC_REALNAME_AUTH
+
+// Packet: 0x08b3
+#if PACKETVER >= 20110111
+packetLen(0x08b3, -1) // ZC_SHOWSCRIPT
+#endif
+
+// Packet: 0x08b4
+#if PACKETVER >= 20110125
+packetLen(0x08b4, 2) // ZC_START_COLLECTION
+#endif
+
+// Packet: 0x08b5
+#if PACKETVER >= 20110125
+packetLen(0x08b5, 6) // CZ_TRYCOLLECTION
+#endif
+
+// Packet: 0x08b6
+#if PACKETVER >= 20110125
+packetLen(0x08b6, 3) // ZC_TRYCOLLECTION
+#endif
+
+// Packet: 0x08b7
+#if PACKETVER >= 20110222
+// removed
+#elif PACKETVER >= 20110215
+packetLen(0x08b7, 10) // HC_SECOND_PASSWD_REQ
+#endif
+
+// Packet: 0x08b8
+#if PACKETVER >= 20110308
+packetLen(0x08b8, 10) // CH_SECOND_PASSWD_ACK
+#elif PACKETVER >= 20110215
+packetLen(0x08b8, 12) // CH_SECOND_PASSWD_ACK
+#endif
+
+// Packet: 0x08b9
+#if PACKETVER >= 20110222
+packetLen(0x08b9, 12) // HC_SECOND_PASSWD_LOGIN
+#endif
+
+// Packet: 0x08ba
+#if PACKETVER >= 20110308
+packetLen(0x08ba, 10) // CH_MAKE_SECOND_PASSWD
+#elif PACKETVER >= 20110222
+packetLen(0x08ba, 12) // CH_MAKE_SECOND_PASSWD
+#endif
+
+// Packet: 0x08bb
+#if PACKETVER >= 20110308
+packetLen(0x08bb, 8) // HC_MAKE_SECOND_PASSWD
+#elif PACKETVER >= 20110222
+packetLen(0x08bb, 4) // HC_MAKE_SECOND_PASSWD
+#endif
+
+// Packet: 0x08bc
+#if PACKETVER >= 20110308
+packetLen(0x08bc, 10) // CH_DELETE_SECOND_PASSWD
+#elif PACKETVER >= 20110222
+packetLen(0x08bc, 12) // CH_DELETE_SECOND_PASSWD
+#endif
+
+// Packet: 0x08bd
+#if PACKETVER >= 20111207
+packetLen(0x08bd, 8) // HC_DELETE_SECOND_PASSWD
+#elif PACKETVER >= 20110222
+packetLen(0x08bd, 12) // HC_DELETE_SECOND_PASSWD
+#endif
+
+// Packet: 0x08be
+#if PACKETVER >= 20110308
+packetLen(0x08be, 14) // CH_EDIT_SECOND_PASSWD
+#elif PACKETVER >= 20110228
+packetLen(0x08be, 18) // CH_EDIT_SECOND_PASSWD
+#elif PACKETVER >= 20110222
+packetLen(0x08be, 12) // CH_EDIT_SECOND_PASSWD
+#endif
+
+// Packet: 0x08bf
+#if PACKETVER >= 20110308
+packetLen(0x08bf, 8) // HC_EDIT_SECOND_PASSWD
+#elif PACKETVER >= 20110222
+packetLen(0x08bf, 4) // HC_EDIT_SECOND_PASSWD
+#endif
+
+// Packet: 0x08c0
+#if PACKETVER >= 20110222
+packetLen(0x08c0, -1) // ZC_ACK_SE_CASH_ITEM_LIST2
+#endif
+
+// Packet: 0x08c1
+#if PACKETVER >= 20110222
+packetLen(0x08c1, 2) // CZ_MACRO_START
+#endif
+
+// Packet: 0x08c2
+#if PACKETVER >= 20110222
+packetLen(0x08c2, 2) // CZ_MACRO_STOP
+#endif
+
+// Packet: 0x08c3
+#if PACKETVER >= 20110308
+packetLen(0x08c3, 10) // CH_NOT_AVAILABLE_SECOND_PASSWD
+#elif PACKETVER >= 20110228
+packetLen(0x08c3, 12) // CH_NOT_AVAILABLE_SECOND_PASSWD
+#endif
+
+// Packet: 0x08c4
+#if PACKETVER >= 20110308
+packetLen(0x08c4, 8) // HC_NOT_AVAILABLE_SECOND_PASSWD
+#elif PACKETVER >= 20110228
+packetLen(0x08c4, 4) // HC_NOT_AVAILABLE_SECOND_PASSWD
+#endif
+
+// Packet: 0x08c5
+#if PACKETVER >= 20110308
+packetLen(0x08c5, 6) // CH_AVAILABLE_SECOND_PASSWD
+#elif PACKETVER >= 20110228
+packetLen(0x08c5, 12) // CH_AVAILABLE_SECOND_PASSWD
+#endif
+
+// Packet: 0x08c6
+#if PACKETVER >= 20110228
+packetLen(0x08c6, 4) // HC_AVAILABLE_SECOND_PASSWD
+#endif
+
+// Packet: 0x08c7
+#if PACKETVER >= 20110419
+packetLen(0x08c7, -1) // ZC_SKILL_ENTRY3
+#endif
+
+// Packet: 0x08c8
+#if PACKETVER >= 20110614
+packetLen(0x08c8, 34) // ZC_NOTIFY_ACT3
+#endif
+
+// Packet: 0x08c9
+#if PACKETVER >= 20110614
+packetLen(0x08c9, 2) // CZ_REQ_SCHEDULER_CASHITEM
+#endif
+
+// Packet: 0x08ca
+#if PACKETVER >= 20110614
+packetLen(0x08ca, -1) // ZC_ACK_SCHEDULER_CASHITEM
+#endif
+
+// Packet: 0x08cb
+#if PACKETVER >= 20110628
+packetLen(0x08cb, -1) // ZC_PERSONAL_INFOMATION
+#endif
+
+// Packet: 0x08cc
+#if PACKETVER >= 20110726
+packetLen(0x08cc, 109) // CA_LOGIN5
+#elif PACKETVER >= 20110713
+// removed
+#elif PACKETVER >= 20110706
+packetLen(0x08cc, 5) // CA_LOGIN5
+#endif
+
+// Packet: 0x08cd
+#if PACKETVER >= 20110803
+packetLen(0x08cd, 10) // ZC_STOPMOVE_FORCE
+#endif
+
+// Packet: 0x08ce
+#if PACKETVER >= 20110810
+packetLen(0x08ce, 2) // ZC_FAILED_GET_ITEM_FROM_ZONEDA
+#elif PACKETVER >= 20110803
+packetLen(0x08ce, 10) // ZC_FAILED_GET_ITEM_FROM_ZONEDA
+#endif
+
+// Packet: 0x08cf
+#if PACKETVER >= 20110810
+packetLen(0x08cf, 10) // ZC_SPIRITS_ATTRIBUTE
+#endif
+
+// Packet: 0x08d0
+#if PACKETVER >= 20110810
+packetLen(0x08d0, 9) // ZC_REQ_WEAR_EQUIP_ACK2
+#endif
+
+// Packet: 0x08d1
+#if PACKETVER >= 20110810
+packetLen(0x08d1, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK2
+#endif
+
+// Packet: 0x08d2
+#if PACKETVER >= 20110810
+packetLen(0x08d2, 10) // ZC_FASTMOVE
+#endif
+
+// Packet: 0x08d3
+#if PACKETVER >= 20110816
+packetLen(0x08d3, 10) // ZC_SE_CASHSHOP_UPDATE
+#endif
+
+// Packet: 0x08d4
+#if PACKETVER >= 20111101
+packetLen(0x08d4, 8) // CH_REQ_CHANGE_CHARACTER_SLOT
+#elif PACKETVER >= 20110928
+packetLen(0x08d4, 12) // CH_REQ_CHANGE_CHARACTER_SLOT
+#elif PACKETVER >= 20110920
+packetLen(0x08d4, 10) // CH_REQ_CHANGE_CHARACTER_SLOT
+#elif PACKETVER >= 20110906
+packetLen(0x08d4, 14) // CH_REQ_CHANGE_CHARACTER_SLOT
+#endif
+
+// Packet: 0x08d5
+#if PACKETVER >= 20110906
+packetLen(0x08d5, -1) // HC_ACK_CHANGE_CHARACTER_SLOT
+#endif
+
+// Packet: 0x08d6
+#if PACKETVER >= 20110928
+packetLen(0x08d6, 6) // ZC_CLEAR_DIALOG
+#endif
+
+// Packet: 0x08d7
+#if PACKETVER >= 20111004
+packetLen(0x08d7, 28) // CZ_REQ_ENTRY_QUEUE_APPLY
+#endif
+
+// Packet: 0x08d8
+#if PACKETVER >= 20111004
+packetLen(0x08d8, 27) // ZC_ACK_ENTRY_QUEUE_APPLY
+#endif
+
+// Packet: 0x08d9
+#if PACKETVER >= 20111004
+packetLen(0x08d9, 30) // ZC_NOTIFY_ENTRY_QUEUE_APPLY
+#endif
+
+// Packet: 0x08da
+#if PACKETVER >= 20111004
+packetLen(0x08da, 26) // CZ_REQ_ENTRY_QUEUE_CANCEL
+#endif
+
+// Packet: 0x08db
+#if PACKETVER >= 20111004
+packetLen(0x08db, 27) // ZC_ACK_ENTRY_QUEUE_CANCEL
+#endif
+
+// Packet: 0x08dc
+#if PACKETVER >= 20111004
+packetLen(0x08dc, 26) // ZC_NOTIFY_ENTRY_QUEUE_ADMISSION
+#endif
+
+// Packet: 0x08dd
+#if PACKETVER >= 20111004
+packetLen(0x08dd, 27) // CZ_REPLY_ENTRY_QUEUE_ADMISSION
+#endif
+
+// Packet: 0x08de
+#if PACKETVER >= 20111004
+packetLen(0x08de, 27) // ZC_REPLY_ACK_ENTRY_QUEUE_ADMISSION
+#endif
+
+// Packet: 0x08df
+#if PACKETVER >= 20111004
+packetLen(0x08df, 50) // ZC_NOTIFY_LOBBY_ADMISSION
+#endif
+
+// Packet: 0x08e0
+#if PACKETVER >= 20111004
+packetLen(0x08e0, 51) // CZ_REPLY_LOBBY_ADMISSION
+#endif
+
+// Packet: 0x08e1
+#if PACKETVER >= 20111004
+packetLen(0x08e1, 51) // ZC_REPLY_ACK_LOBBY_ADMISSION
+#endif
+
+// Packet: 0x08e2
+#if PACKETVER >= 20111108
+packetLen(0x08e2, 25) // ZC_NAVIGATION_ACTIVE
+#elif PACKETVER >= 20111004
+packetLen(0x08e2, 23) // ZC_NAVIGATION_ACTIVE
+#endif
+
+// Packet: 0x08e3
+#if PACKETVER >= 20111025
+packetLen(0x08e3, 146) // HC_UPDATE_CHARINFO
+#elif PACKETVER >= 20111017
+packetLen(0x08e3, 142) // HC_UPDATE_CHARINFO
+#endif
+
+// Packet: 0x08e4
+#if PACKETVER >= 20111025
+packetLen(0x08e4, 6) // AC_SHUTDOWN_INFO
+#endif
+
+// Packet: 0x08e5
+#if PACKETVER >= 20111025
+packetLen(0x08e5, 41) // CZ_PARTY_RECRUIT_REQ_REGISTER
+#endif
+
+// Packet: 0x08e6
+#if PACKETVER >= 20111025
+packetLen(0x08e6, 4) // ZC_PARTY_RECRUIT_ACK_REGISTER
+#endif
+
+// Packet: 0x08e7
+#if PACKETVER >= 20111025
+packetLen(0x08e7, 10) // CZ_PARTY_RECRUIT_REQ_SEARCH
+#endif
+
+// Packet: 0x08e8
+#if PACKETVER >= 20111025
+packetLen(0x08e8, -1)
+#endif
+
+// Packet: 0x08e9
+#if PACKETVER >= 20111025
+packetLen(0x08e9, 2) // CZ_PARTY_RECRUIT_REQ_DELETE
+#endif
+
+// Packet: 0x08ea
+#if PACKETVER >= 20111025
+packetLen(0x08ea, 4) // ZC_PARTY_RECRUIT_ACK_DELETE
+#endif
+
+// Packet: 0x08eb
+#if PACKETVER >= 20111025
+packetLen(0x08eb, 39) // CZ_PARTY_RECRUIT_REQ_UPDATE
+#endif
+
+// Packet: 0x08ec
+#if PACKETVER >= 20111025
+packetLen(0x08ec, 73) // ZC_PARTY_RECRUIT_NOTIFY_INSERT
+#endif
+
+// Packet: 0x08ed
+#if PACKETVER >= 20111025
+packetLen(0x08ed, 43) // ZC_PARTY_RECRUIT_NOTIFY_UPDATE
+#endif
+
+// Packet: 0x08ee
+#if PACKETVER >= 20111025
+packetLen(0x08ee, 6) // ZC_PARTY_RECRUIT_NOTIFY_DELETE
+#endif
+
+// Packet: 0x08ef
+#if PACKETVER >= 20111101
+packetLen(0x08ef, 6) // CZ_PARTY_RECRUIT_ADD_FILTERLINGLIST
+#elif PACKETVER >= 20111025
+packetLen(0x08ef, -1) // CZ_PARTY_RECRUIT_ADD_FILTERLINGLIST
+#endif
+
+// Packet: 0x08f0
+#if PACKETVER >= 20111101
+packetLen(0x08f0, 6) // CZ_PARTY_RECRUIT_SUB_FILTERLINGLIST
+#elif PACKETVER >= 20111025
+packetLen(0x08f0, -1) // CZ_PARTY_RECRUIT_SUB_FILTERLINGLIST
+#endif
+
+// Packet: 0x08f1
+#if PACKETVER >= 20111025
+packetLen(0x08f1, 6) // CZ_PARTY_RECRUIT_REQ_VOLUNTEER
+#endif
+
+// Packet: 0x08f2
+#if PACKETVER >= 20111101
+packetLen(0x08f2, 36) // ZC_PARTY_RECRUIT_VOLUNTEER_INFO
+#elif PACKETVER >= 20111025
+packetLen(0x08f2, 12) // ZC_PARTY_RECRUIT_VOLUNTEER_INFO
+#endif
+
+// Packet: 0x08f3
+#if PACKETVER >= 20111025
+packetLen(0x08f3, -1)
+#endif
+
+// Packet: 0x08f4
+#if PACKETVER >= 20111025
+packetLen(0x08f4, 6) // CZ_PARTY_RECRUIT_SHOW_EQUIPMENT
+#endif
+
+// Packet: 0x08f5
+#if PACKETVER >= 20111108
+packetLen(0x08f5, -1) // CZ_UNKNOWN_BOOKING_SOMMON_MEMBER_08f5
+#elif PACKETVER >= 20111025
+packetLen(0x08f5, 2) // CZ_UNKNOWN_BOOKING_SOMMON_MEMBER_08f5
+#endif
+
+// Packet: 0x08f6
+#if PACKETVER >= 20111108
+packetLen(0x08f6, 22) // ZC_PARTY_RECRUIT_RECALL_COST
+#elif PACKETVER >= 20111025
+packetLen(0x08f6, 6) // ZC_PARTY_RECRUIT_RECALL_COST
+#endif
+
+// Packet: 0x08f7
+#if PACKETVER >= 20111108
+packetLen(0x08f7, 3) // CZ_PARTY_RECRUIT_ACK_RECALL
+#elif PACKETVER >= 20111101
+packetLen(0x08f7, -1) // CZ_PARTY_RECRUIT_ACK_RECALL
+#elif PACKETVER >= 20111025
+packetLen(0x08f7, 6) // CZ_PARTY_RECRUIT_ACK_RECALL
+#endif
+
+// Packet: 0x08f8
+#if PACKETVER >= 20111108
+packetLen(0x08f8, 7) // ZC_PARTY_RECRUIT_FAILED_RECALL
+#elif PACKETVER >= 20111025
+packetLen(0x08f8, 6) // ZC_PARTY_RECRUIT_FAILED_RECALL
+#endif
+
+// Packet: 0x08f9
+#if PACKETVER >= 20111108
+packetLen(0x08f9, 6) // CZ_PARTY_RECRUIT_REFUSE_VOLUNTEER
+#endif
+
+// Packet: 0x08fa
+#if PACKETVER >= 20111108
+packetLen(0x08fa, 6) // ZC_PARTY_RECRUIT_REFUSE_VOLUNTEER
+#endif
+
+// Packet: 0x08fb
+#if PACKETVER >= 20111122
+packetLen(0x08fb, 6) // CZ_PARTY_RECRUIT_CANCEL_VOLUNTEER
+#endif
+
+// Packet: 0x08fc
+#if PACKETVER >= 20111101
+packetLen(0x08fc, 30) // CH_REQ_CHANGE_CHARACTERNAME
+#endif
+
+// Packet: 0x08fd
+#if PACKETVER >= 20111101
+packetLen(0x08fd, 6) // CH_ACK_CHANGE_CHARACTERNAME
+#endif
+
+// Packet: 0x08fe
+#if PACKETVER >= 20111101
+packetLen(0x08fe, -1) // ZC_HUNTING_QUEST_INFO
+#endif
+
+// Packet: 0x08ff
+#if PACKETVER >= 20111101
+packetLen(0x08ff, 24) // ZC_EFST_SET_ENTER
+#endif
+
+// Packet: 0x0900
+#if PACKETVER >= 20111122
+packetLen(0x0900, -1) // ZC_INVENTORY_ITEMLIST_NORMAL
+#endif
+
+// Packet: 0x0901
+#if PACKETVER >= 20111122
+packetLen(0x0901, -1) // ZC_INVENTORY_ITEMLIST_EQUIP
+#endif
+
+// Packet: 0x0902
+#if PACKETVER >= 20111122
+packetLen(0x0902, -1) // ZC_CART_ITEMLIST_NORMAL
+#endif
+
+// Packet: 0x0903
+#if PACKETVER >= 20111122
+packetLen(0x0903, -1) // ZC_CART_ITEMLIST_EQUIP
+#endif
+
+// Packet: 0x0904
+#if PACKETVER >= 20111122
+packetLen(0x0904, -1) // ZC_STORE_ITEMLIST_NORMAL
+#endif
+
+// Packet: 0x0905
+#if PACKETVER >= 20111122
+packetLen(0x0905, -1) // ZC_STORE_ITEMLIST_EQUIP
+#endif
+
+// Packet: 0x0906
+#if PACKETVER >= 20111122
+packetLen(0x0906, -1) // ZC_MICROSCOPE
+#endif
+
+// Packet: 0x0907
+#if PACKETVER >= 20111122
+packetLen(0x0907, 5) // CZ_INVENTORY_TAB
+#endif
+
+// Packet: 0x0908
+#if PACKETVER >= 20111122
+packetLen(0x0908, 5) // ZC_INVENTORY_TAB
+#endif
+
+// Packet: 0x0909
+#if PACKETVER >= 20111122
+packetLen(0x0909, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER
+#endif
+
+// Packet: 0x090a
+#if PACKETVER >= 20111207
+packetLen(0x090a, 26) // CZ_REQ_ENTRY_QUEUE_RANKING
+#endif
+
+// Packet: 0x090b
+#if PACKETVER >= 20111207
+packetLen(0x090b, 30) // ZC_PARTY_RECRUIT_ADD_FILTERLINGLIST
+#endif
+
+// Packet: 0x090c
+#if PACKETVER >= 20111207
+packetLen(0x090c, 30) // ZC_PARTY_RECRUIT_SUB_FILTERLINGLIST
+#endif
+
+// Packet: 0x090d
+#if PACKETVER >= 20111227
+packetLen(0x090d, -1) // ZC_PREMIUM_CAMPAIGN_INFO
+#endif
+
+// Packet: 0x090e
+#if PACKETVER >= 20111227
+packetLen(0x090e, 2) // ZC_ENTRY_QUEUE_INIT
+#endif
+
+// Packet: 0x09dc
+#if PACKETVER >= 20110810
+// removed
+#elif PACKETVER >= 20110803
+packetLen(0x09dc, 2) // ZC_NOTIFY_NEWENTRY10
+#endif
+
+
+#endif /* COMMON_PACKETS2011_LEN_RE_H */
diff --git a/src/common/packets/packets2012_len_main.h b/src/common/packets/packets2012_len_main.h
new file mode 100644
index 000000000..7784ee39a
--- /dev/null
+++ b/src/common/packets/packets2012_len_main.h
@@ -0,0 +1,8486 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2012_LEN_MAIN_H
+#define COMMON_PACKETS2012_LEN_MAIN_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 146) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 22) // CZ_ENTER
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 44) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 10) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, 14)
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+packetLen(0x0094, 19) // CZ_REQNAME
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+packetLen(0x00a7, 9)
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 9) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+packetLen(0x00f7, 17) // CZ_REQUEST_TIME
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+packetLen(0x0113, 25) // CZ_USE_SKILL
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 37) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+#if PACKETVER >= 20121227
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20121128
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20121121
+packetLen(0x0202, 10) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20121017
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20121010
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120925
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120919
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120814
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120808
+packetLen(0x0202, 12) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120724
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120716
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120710
+packetLen(0x0202, 6) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120626
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120612
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120515
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120508
+packetLen(0x0202, 90) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120503
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120424
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120417
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120214
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120131
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120120
+packetLen(0x0202, 12) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120117
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120110
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120103
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+
+// Packet: 0x022b
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+
+// Packet: 0x022c
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+
+// Packet: 0x022d
+#if PACKETVER >= 20121107
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20121031
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120925
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120919
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120911
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120905
+packetLen(0x022d, 8) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120830
+packetLen(0x022d, 12) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120724
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120716
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120626
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120612
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120508
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120503
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120424
+packetLen(0x022d, 12) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120417
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120410
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120404
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120228
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120221
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120214
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120207
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120131
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120110
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120103
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#endif
+
+// Packet: 0x022e
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+
+// Packet: 0x022f
+packetLen(0x022f, 5) // ZC_FEED_MER
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+#if PACKETVER >= 20121024
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20121017
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120925
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120919
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120724
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120716
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120626
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120612
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120529
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120522
+packetLen(0x023b, -1) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120515
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120508
+packetLen(0x023b, 8) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120503
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120424
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120417
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120214
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120207
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120120
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120117
+packetLen(0x023b, 4) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120110
+packetLen(0x023b, 6) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120103
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#endif
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+
+// Packet: 0x0275
+packetLen(0x0275, 37) // CH_ENTER2
+
+// Packet: 0x0276
+packetLen(0x0276, -1) // AC_ACCEPT_LOGIN2
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+#if PACKETVER >= 20121107
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20121031
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120925
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120919
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120822
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120814
+packetLen(0x0281, 5) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120808
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120724
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120716
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120626
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120612
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120604
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120529
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120508
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120503
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120424
+packetLen(0x0281, 26) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120417
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120404
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120328
+packetLen(0x0281, 6) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120320
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120214
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120207
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120117
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120110
+packetLen(0x0281, 36) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120103
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#endif
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+
+// Packet: 0x0288
+packetLen(0x0288, -1) // CZ_PC_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0289
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0296
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0297
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0298
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+
+// Packet: 0x0299
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+
+// Packet: 0x029a
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+
+// Packet: 0x029b
+packetLen(0x029b, 80) // ZC_MER_INIT
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a5
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+
+// Packet: 0x02a6
+packetLen(0x02a6, -1) // ZC_HACKSH_CPX_MSG
+
+// Packet: 0x02a7
+packetLen(0x02a7, -1) // CZ_HACKSH_CPX_MSG
+
+// Packet: 0x02aa
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+
+// Packet: 0x02ab
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+
+// Packet: 0x02ac
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+
+// Packet: 0x02ad
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+
+// Packet: 0x02b0
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+
+// Packet: 0x02b1
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+
+// Packet: 0x02b2
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+
+// Packet: 0x02b3
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+
+// Packet: 0x02b4
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+
+// Packet: 0x02b5
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+
+// Packet: 0x02b6
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+
+// Packet: 0x02b7
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+
+// Packet: 0x02b8
+packetLen(0x02b8, 22) // ZC_ITEM_PICKUP_PARTY
+
+// Packet: 0x02b9
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+
+// Packet: 0x02ba
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+
+// Packet: 0x02bb
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+
+// Packet: 0x02bc
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+
+// Packet: 0x02c1
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+
+// Packet: 0x02c2
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+
+// Packet: 0x02c4
+#if PACKETVER >= 20121227
+packetLen(0x02c4, 19) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20120716
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20120710
+packetLen(0x02c4, 10) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20120515
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20120508
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20120410
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20120404
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20120314
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20120307
+packetLen(0x02c4, 6) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20120131
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20120120
+packetLen(0x02c4, 8) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20120103
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#endif
+
+// Packet: 0x02c5
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c6
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+
+// Packet: 0x02c7
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c8
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+
+// Packet: 0x02c9
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+
+// Packet: 0x02ca
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+
+// Packet: 0x02cb
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+
+// Packet: 0x02cc
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+
+// Packet: 0x02cd
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+
+// Packet: 0x02ce
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+
+// Packet: 0x02cf
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+
+// Packet: 0x02d0
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d1
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d2
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d3
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+
+// Packet: 0x02d4
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+
+// Packet: 0x02d5
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+
+// Packet: 0x02d6
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d7
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d8
+packetLen(0x02d8, 10) // CZ_CONFIG
+
+// Packet: 0x02d9
+packetLen(0x02d9, 10) // ZC_CONFIG
+
+// Packet: 0x02da
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+
+// Packet: 0x02db
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+
+// Packet: 0x02dc
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+
+// Packet: 0x02dd
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+
+// Packet: 0x02de
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+
+// Packet: 0x02df
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+
+// Packet: 0x02e0
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+
+// Packet: 0x02e1
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+
+// Packet: 0x02e2
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+
+// Packet: 0x02e3
+packetLen(0x02e3, 22) // CZ_USE_SKILL_NEW_JAPEN
+
+// Packet: 0x02e4
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+
+// Packet: 0x02e5
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+
+// Packet: 0x02e6
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+
+// Packet: 0x02e7
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+
+// Packet: 0x02e8
+packetLen(0x02e8, -1) // ZC_NORMAL_ITEMLIST3
+
+// Packet: 0x02e9
+packetLen(0x02e9, -1) // ZC_CART_NORMAL_ITEMLIST3
+
+// Packet: 0x02ea
+packetLen(0x02ea, -1) // ZC_STORE_NORMAL_ITEMLIST3
+
+// Packet: 0x02eb
+packetLen(0x02eb, 13) // ZC_ACCEPT_ENTER2
+
+// Packet: 0x02ec
+packetLen(0x02ec, 67) // ZC_NOTIFY_MOVEENTRY4
+
+// Packet: 0x02ed
+packetLen(0x02ed, 59) // ZC_NOTIFY_NEWENTRY4
+
+// Packet: 0x02ee
+packetLen(0x02ee, 60) // ZC_NOTIFY_STANDENTRY4
+
+// Packet: 0x02ef
+packetLen(0x02ef, 8) // ZC_NOTIFY_FONT
+
+// Packet: 0x02f0
+packetLen(0x02f0, 10) // ZC_PROGRESS
+
+// Packet: 0x02f1
+packetLen(0x02f1, 2) // CZ_PROGRESS
+
+// Packet: 0x02f2
+packetLen(0x02f2, 2) // ZC_PROGRESS_CANCEL
+
+// Packet: 0x02f3
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+
+// Packet: 0x02f4
+packetLen(0x02f4, 3) // ZC_IRMAIL_SEND_RES
+
+// Packet: 0x02f5
+packetLen(0x02f5, 7) // ZC_IRMAIL_NOTIFY
+
+// Packet: 0x02f6
+packetLen(0x02f6, 7) // CZ_IRMAIL_LIST
+
+// Packet: 0x035c
+packetLen(0x035c, 2) // CZ_OPEN_SIMPLE_CASHSHOP_ITEMLIST
+
+// Packet: 0x035d
+packetLen(0x035d, -1) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+
+// Packet: 0x035e
+packetLen(0x035e, 2) // CZ_CLOSE_WINDOW
+
+// Packet: 0x035f
+#if PACKETVER >= 20121227
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20121218
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20121212
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20121205
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20121107
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20121031
+packetLen(0x035f, 5) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20121024
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20121017
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120925
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120919
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120905
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120830
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120814
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120808
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120801
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120724
+packetLen(0x035f, 8) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120716
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120626
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120612
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120604
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120529
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120515
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120503
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120424
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120417
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120410
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120404
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120328
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120314
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120228
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120221
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120214
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120131
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120117
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120103
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#endif
+
+// Packet: 0x0360
+#if PACKETVER >= 20121227
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20121218
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20121212
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20121205
+packetLen(0x0360, 5) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20121114
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20121031
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20121024
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20121017
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120925
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120919
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120905
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120830
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120814
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120808
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120801
+packetLen(0x0360, -1) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120724
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120716
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120626
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120612
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120604
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120529
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120515
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120503
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120424
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120410
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120328
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120307
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120228
+packetLen(0x0360, 90) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120221
+packetLen(0x0360, 5) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120214
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120131
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120120
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120117
+packetLen(0x0360, -1) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120103
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#endif
+
+// Packet: 0x0361
+#if PACKETVER >= 20121227
+packetLen(0x0361, 36) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20121212
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20121205
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20121114
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20121107
+packetLen(0x0361, 36) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120925
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120919
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120822
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120814
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120724
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120716
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120626
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120612
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120604
+packetLen(0x0361, 6) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120529
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120522
+packetLen(0x0361, 10) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120508
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120503
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120424
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120417
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120214
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120207
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120131
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120120
+packetLen(0x0361, 19) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120117
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120110
+packetLen(0x0361, 12) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120103
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#endif
+
+// Packet: 0x0362
+#if PACKETVER >= 20121227
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20121218
+packetLen(0x0362, 10) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20121212
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20121205
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20121128
+packetLen(0x0362, 19) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20121107
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20121031
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120925
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120919
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120814
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120808
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120724
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120716
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120710
+packetLen(0x0362, 18) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120626
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120612
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120604
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120529
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120508
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120503
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120424
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120417
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120410
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120404
+packetLen(0x0362, 8) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120328
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120320
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120214
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120207
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120131
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120120
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120117
+packetLen(0x0362, 26) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120103
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#endif
+
+// Packet: 0x0363
+#if PACKETVER >= 20121227
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20121218
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20121205
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20121128
+packetLen(0x0363, 26) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20121107
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20121031
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120925
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120919
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120814
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120808
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120724
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120716
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120710
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120702
+packetLen(0x0363, 19) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120612
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120604
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120529
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120515
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120508
+packetLen(0x0363, -1) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120503
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120424
+packetLen(0x0363, 18) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120417
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120328
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120320
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120228
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120221
+packetLen(0x0363, 18) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120214
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120207
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120131
+packetLen(0x0363, 12) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120120
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120117
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120103
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#endif
+
+// Packet: 0x0364
+#if PACKETVER >= 20121121
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20121114
+packetLen(0x0364, 36) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20121107
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20121031
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120925
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120919
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120814
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120808
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120801
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120724
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120716
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120710
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120702
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120626
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120612
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120604
+packetLen(0x0364, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120529
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120522
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120515
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120508
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120503
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120424
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120417
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120410
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120404
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120328
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120320
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120314
+packetLen(0x0364, 19) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120214
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120207
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120120
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120117
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120103
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#endif
+
+// Packet: 0x0365
+#if PACKETVER >= 20121121
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20121114
+packetLen(0x0365, 5) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20121107
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20121031
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20121024
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20121017
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120925
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120919
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120911
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120905
+packetLen(0x0365, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120830
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120822
+packetLen(0x0365, 26) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120814
+packetLen(0x0365, 6) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120808
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120724
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120716
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120710
+packetLen(0x0365, 26) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120702
+packetLen(0x0365, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120626
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120612
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120604
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120529
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120508
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120503
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120424
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120417
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120328
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120320
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120214
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120207
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120131
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120120
+packetLen(0x0365, 6) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120117
+packetLen(0x0365, 10) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120103
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#endif
+
+// Packet: 0x0366
+#if PACKETVER >= 20121227
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20121218
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20121107
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20121031
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20121024
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20121017
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120925
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120919
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120905
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120830
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120814
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120808
+packetLen(0x0366, 19) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120724
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120716
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120702
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120626
+packetLen(0x0366, 10) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120612
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120604
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120529
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120522
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120515
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120508
+packetLen(0x0366, 26) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120503
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120424
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120410
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120404
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120328
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120307
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120228
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120221
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120214
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120207
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120120
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120117
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120103
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#endif
+
+// Packet: 0x0367
+#if PACKETVER >= 20120716
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20120710
+packetLen(0x0367, 8) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20120314
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20120307
+packetLen(0x0367, 8) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20120207
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20120131
+packetLen(0x0367, 8) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20120120
+packetLen(0x0367, 10) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20120117
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20120110
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20120103
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#endif
+
+// Packet: 0x0368
+#if PACKETVER >= 20121227
+packetLen(0x0368, -1) // CZ_REQNAME2
+#elif PACKETVER >= 20121218
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20121212
+packetLen(0x0368, 26) // CZ_REQNAME2
+#elif PACKETVER >= 20121107
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20121031
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20121024
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20121017
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20120925
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20120919
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20120905
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20120830
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20120814
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20120808
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20120724
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20120716
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20120626
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20120612
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20120604
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20120529
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20120515
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20120417
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20120328
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20120307
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20120228
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20120221
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20120214
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20120207
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20120131
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20120120
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20120117
+packetLen(0x0368, 7) // CZ_REQNAME2
+#elif PACKETVER >= 20120103
+packetLen(0x0368, 6) // CZ_REQNAME2
+#endif
+
+// Packet: 0x0369
+#if PACKETVER >= 20121227
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20121218
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20121212
+packetLen(0x0369, 26) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20121107
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20121031
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20121024
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20121017
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120925
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120919
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120905
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120830
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120814
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120808
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120724
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120716
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120626
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120612
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120604
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120529
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120522
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120515
+packetLen(0x0369, 26) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120503
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120424
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120404
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120328
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120320
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120314
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120307
+packetLen(0x0369, 26) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120228
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120221
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120214
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120131
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120117
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120103
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#endif
+
+// Packet: 0x03dd
+packetLen(0x03dd, 18) // AHC_GAME_GUARD
+
+// Packet: 0x03de
+packetLen(0x03de, 18) // CAH_ACK_GAME_GUARD
+
+// Packet: 0x0436
+#if PACKETVER >= 20121031
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20121024
+packetLen(0x0436, 5) // CZ_ENTER2
+#elif PACKETVER >= 20120925
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20120919
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20120905
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20120830
+packetLen(0x0436, 26) // CZ_ENTER2
+#elif PACKETVER >= 20120814
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20120808
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20120724
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20120716
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20120710
+packetLen(0x0436, 7) // CZ_ENTER2
+#elif PACKETVER >= 20120626
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20120612
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20120604
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20120529
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20120508
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20120503
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20120424
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20120417
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20120328
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20120320
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20120214
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20120207
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20120131
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20120120
+packetLen(0x0436, 5) // CZ_ENTER2
+#elif PACKETVER >= 20120117
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20120103
+packetLen(0x0436, 4) // CZ_ENTER2
+#endif
+
+// Packet: 0x0437
+#if PACKETVER >= 20121227
+packetLen(0x0437, 6) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20121218
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20121128
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20121114
+packetLen(0x0437, 6) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20121107
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20121031
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20121024
+packetLen(0x0437, 10) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20121017
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120925
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120919
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120905
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120830
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120822
+packetLen(0x0437, 6) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120814
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120808
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120724
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120716
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120626
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120612
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120604
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120529
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120515
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120503
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120424
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120404
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120328
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120307
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120228
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120221
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120214
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120131
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120120
+packetLen(0x0437, -1) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120117
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120103
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#endif
+
+// Packet: 0x0438
+#if PACKETVER >= 20121227
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20121218
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20121107
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20121031
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20121024
+packetLen(0x0438, 12) // CZ_USE_SKILL2
+#elif PACKETVER >= 20121017
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120925
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120919
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120911
+packetLen(0x0438, 6) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120822
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120814
+packetLen(0x0438, 6) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120808
+packetLen(0x0438, 90) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120801
+packetLen(0x0438, 18) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120724
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120716
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120626
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120612
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120604
+packetLen(0x0438, 19) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120529
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120515
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120503
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120424
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120404
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120328
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120307
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120228
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120221
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120214
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120131
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120117
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120103
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#endif
+
+// Packet: 0x0439
+packetLen(0x0439, 8) // CZ_USE_ITEM2
+
+// Packet: 0x043d
+packetLen(0x043d, 8) // ZC_SKILL_POSTDELAY
+
+// Packet: 0x043e
+packetLen(0x043e, -1) // ZC_SKILL_POSTDELAY_LIST
+
+// Packet: 0x043f
+packetLen(0x043f, 25) // ZC_MSG_STATE_CHANGE2
+
+// Packet: 0x0440
+packetLen(0x0440, 10) // ZC_MILLENNIUMSHIELD
+
+// Packet: 0x0441
+packetLen(0x0441, 4) // ZC_SKILLINFO_DELETE
+
+// Packet: 0x0442
+packetLen(0x0442, -1) // ZC_SKILL_SELECT_REQUEST
+
+// Packet: 0x0443
+packetLen(0x0443, 8) // CZ_SKILL_SELECT_RESPONSE
+
+// Packet: 0x0444
+packetLen(0x0444, -1) // ZC_SIMPLE_CASH_POINT_ITEMLIST
+
+// Packet: 0x0445
+packetLen(0x0445, 10) // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0446
+packetLen(0x0446, 14) // ZC_QUEST_NOTIFY_EFFECT
+
+// Packet: 0x0447
+packetLen(0x0447, 2) // CZ_BLOCKING_PLAY_CANCEL
+
+// Packet: 0x0448
+packetLen(0x0448, -1) // HC_CHARACTER_LIST
+
+// Packet: 0x0449
+packetLen(0x0449, 4) // ZC_HACKSH_ERROR_MSG
+
+// Packet: 0x044a
+packetLen(0x044a, 6) // CZ_CLIENT_VERSION
+
+// Packet: 0x044b
+packetLen(0x044b, 2) // CZ_CLOSE_SIMPLECASH_SHOP
+
+// Packet: 0x07d7
+packetLen(0x07d7, 8) // CZ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d8
+packetLen(0x07d8, 8) // ZC_REQ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d9
+packetLen(0x07d9, 268) // ZC_SHORTCUT_KEY_LIST_V2
+
+// Packet: 0x07da
+packetLen(0x07da, 6) // CZ_CHANGE_GROUP_MASTER
+
+// Packet: 0x07db
+packetLen(0x07db, 8) // ZC_HO_PAR_CHANGE
+
+// Packet: 0x07dc
+packetLen(0x07dc, 6) // CZ_SEEK_PARTY
+
+// Packet: 0x07dd
+packetLen(0x07dd, 54) // ZC_SEEK_PARTY
+
+// Packet: 0x07de
+packetLen(0x07de, 30) // CZ_SEEK_PARTY_MEMBER
+
+// Packet: 0x07df
+packetLen(0x07df, 54) // ZC_SEEK_PARTY_MEMBER
+
+// Packet: 0x07e0
+packetLen(0x07e0, 58) // ZC_ES_NOTI_MYINFO
+
+// Packet: 0x07e1
+packetLen(0x07e1, 15) // ZC_SKILLINFO_UPDATE2
+
+// Packet: 0x07e2
+packetLen(0x07e2, 8) // ZC_MSG_VALUE
+
+// Packet: 0x07e3
+packetLen(0x07e3, 6) // ZC_ITEMLISTWIN_OPEN
+
+// Packet: 0x07e4
+#if PACKETVER >= 20121107
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20121031
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20121010
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120925
+packetLen(0x07e4, 4) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120919
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120814
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120808
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120724
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120710
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120626
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120612
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120604
+packetLen(0x07e4, 10) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120529
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120508
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120503
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120424
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120417
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120410
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120404
+packetLen(0x07e4, 90) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120328
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120320
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120214
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120207
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120117
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120110
+packetLen(0x07e4, 19) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120103
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#endif
+
+// Packet: 0x07e5
+packetLen(0x07e5, 4) // CH_ENTER_CHECKBOT
+
+// Packet: 0x07e6
+packetLen(0x07e6, 8) // ZC_MSG_SKILL
+
+// Packet: 0x07e7
+packetLen(0x07e7, 32) // CH_CHECKBOT
+
+// Packet: 0x07e8
+packetLen(0x07e8, -1) // HC_CHECKBOT
+
+// Packet: 0x07e9
+packetLen(0x07e9, 5) // HC_CHECKBOT_RESULT
+
+// Packet: 0x07ea
+packetLen(0x07ea, 2) // CZ_BATTLE_FIELD_LIST
+
+// Packet: 0x07eb
+packetLen(0x07eb, -1) // ZC_BATTLE_FIELD_LIST
+
+// Packet: 0x07ec
+#if PACKETVER >= 20121205
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20121128
+packetLen(0x07ec, 26) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20121107
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20121031
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120925
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120919
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120822
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120814
+packetLen(0x07ec, 12) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120808
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120724
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120716
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120626
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120612
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120604
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120529
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120508
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120503
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120424
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120417
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120328
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120320
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120307
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120228
+packetLen(0x07ec, 5) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120214
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120207
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120131
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120120
+packetLen(0x07ec, 26) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120117
+packetLen(0x07ec, 36) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120103
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#endif
+
+// Packet: 0x07ed
+packetLen(0x07ed, 10) // ZC_JOIN_BATTLE_FIELD
+
+// Packet: 0x07ee
+packetLen(0x07ee, 6) // CZ_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07ef
+packetLen(0x07ef, 8) // ZC_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07f0
+packetLen(0x07f0, 6) // CZ_REQ_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f1
+packetLen(0x07f1, 18) // ZC_ACK_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f2
+packetLen(0x07f2, 8) // ZC_BATTLE_NOTI_START_STEP
+
+// Packet: 0x07f3
+packetLen(0x07f3, 6) // ZC_BATTLE_JOIN_NOTI_DEFER
+
+// Packet: 0x07f4
+packetLen(0x07f4, 3) // ZC_BATTLE_JOIN_DISABLE_STATE
+
+// Packet: 0x07f5
+packetLen(0x07f5, 6) // CZ_GM_FULLSTRIP
+
+// Packet: 0x07f6
+packetLen(0x07f6, 14) // ZC_NOTIFY_EXP
+
+// Packet: 0x07f7
+packetLen(0x07f7, -1) // ZC_NOTIFY_MOVEENTRY7
+
+// Packet: 0x07f8
+packetLen(0x07f8, -1) // ZC_NOTIFY_NEWENTRY5
+
+// Packet: 0x07f9
+packetLen(0x07f9, -1) // ZC_NOTIFY_STANDENTRY5
+
+// Packet: 0x07fa
+packetLen(0x07fa, 8) // ZC_DELETE_ITEM_FROM_BODY
+
+// Packet: 0x07fb
+packetLen(0x07fb, 25) // ZC_USESKILL_ACK2
+
+// Packet: 0x07fc
+packetLen(0x07fc, 10) // ZC_CHANGE_GROUP_MASTER
+
+// Packet: 0x07fd
+packetLen(0x07fd, -1) // ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN
+
+// Packet: 0x07fe
+packetLen(0x07fe, 26) // ZC_PLAY_NPC_BGM
+
+// Packet: 0x0800
+packetLen(0x0800, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0801
+packetLen(0x0801, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0802
+#if PACKETVER >= 20121205
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20121128
+packetLen(0x0802, 36) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20121107
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20121031
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120925
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120919
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120905
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120830
+packetLen(0x0802, 36) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120814
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120808
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120724
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120716
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120710
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120702
+packetLen(0x0802, -1) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120626
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120612
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120604
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120529
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120508
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120503
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120424
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120417
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120328
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120320
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120214
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120207
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120131
+packetLen(0x0802, 90) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120120
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120103
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// Packet: 0x0803
+packetLen(0x0803, 4) // ZC_PARTY_BOOKING_ACK_REGISTER
+
+// Packet: 0x0804
+packetLen(0x0804, 14) // CZ_PARTY_BOOKING_REQ_SEARCH
+
+// Packet: 0x0805
+packetLen(0x0805, -1) // ZC_PARTY_BOOKING_ACK_SEARCH
+
+// Packet: 0x0806
+packetLen(0x0806, 2) // CZ_PARTY_BOOKING_REQ_DELETE
+
+// Packet: 0x0807
+packetLen(0x0807, 4) // ZC_PARTY_BOOKING_ACK_DELETE
+
+// Packet: 0x0808
+packetLen(0x0808, 14) // CZ_PARTY_BOOKING_REQ_UPDATE
+
+// Packet: 0x0809
+packetLen(0x0809, 50) // ZC_PARTY_BOOKING_NOTIFY_INSERT
+
+// Packet: 0x080a
+packetLen(0x080a, 18) // ZC_PARTY_BOOKING_NOTIFY_UPDATE
+
+// Packet: 0x080b
+packetLen(0x080b, 6) // ZC_PARTY_BOOKING_NOTIFY_DELETE
+
+// Packet: 0x080c
+packetLen(0x080c, 2) // CZ_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080d
+packetLen(0x080d, 3) // ZC_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080e
+packetLen(0x080e, 14) // ZC_NOTIFY_HP_TO_GROUPM_R2
+
+// Packet: 0x080f
+packetLen(0x080f, 20) // ZC_ADD_EXCHANGE_ITEM2
+
+// Packet: 0x0810
+packetLen(0x0810, 3) // ZC_OPEN_BUYING_STORE
+
+// Packet: 0x0811
+#if PACKETVER >= 20121227
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20121218
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20121107
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20121031
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20121024
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20121017
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120925
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120919
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120905
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120830
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120814
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120808
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120724
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120716
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120710
+packetLen(0x0811, 6) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120626
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120612
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120604
+packetLen(0x0811, 12) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120522
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120515
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120503
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120424
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120404
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120328
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120307
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120228
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120221
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120214
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120207
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120131
+packetLen(0x0811, 8) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120120
+packetLen(0x0811, 6) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120117
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120103
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#endif
+
+// Packet: 0x0812
+packetLen(0x0812, 8) // ZC_FAILED_OPEN_BUYING_STORE_TO_BUYER
+
+// Packet: 0x0813
+packetLen(0x0813, -1) // ZC_MYITEMLIST_BUYING_STORE
+
+// Packet: 0x0814
+packetLen(0x0814, 86) // ZC_BUYING_STORE_ENTRY
+
+// Packet: 0x0815
+#if PACKETVER >= 20121227
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20121218
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20121212
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20121205
+packetLen(0x0815, 6) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20121121
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20121114
+packetLen(0x0815, 90) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20121107
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20121031
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20121024
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20121017
+packetLen(0x0815, 8) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20121010
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120925
+packetLen(0x0815, 12) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120919
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120905
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120830
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120822
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120814
+packetLen(0x0815, 6) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120808
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120801
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120716
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120710
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120702
+packetLen(0x0815, 26) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120626
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120612
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120604
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120529
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120515
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120503
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120424
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120404
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120328
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120307
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120228
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120221
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120214
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120207
+packetLen(0x0815, 36) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120131
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120117
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120103
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#endif
+
+// Packet: 0x0816
+packetLen(0x0816, 6) // ZC_DISAPPEAR_BUYING_STORE_ENTRY
+
+// Packet: 0x0817
+#if PACKETVER >= 20121218
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20121212
+packetLen(0x0817, 10) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20121031
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20121024
+packetLen(0x0817, 7) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20121017
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20121010
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20120911
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20120905
+packetLen(0x0817, 36) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20120522
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20120515
+packetLen(0x0817, -1) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20120508
+packetLen(0x0817, 4) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20120503
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20120424
+packetLen(0x0817, 8) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20120214
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20120207
+packetLen(0x0817, -1) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20120103
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#endif
+
+// Packet: 0x0818
+packetLen(0x0818, -1) // ZC_ACK_ITEMLIST_BUYING_STORE
+
+// Packet: 0x0819
+#if PACKETVER >= 20121227
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20121218
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20121107
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20121031
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20121024
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20121017
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20121010
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120925
+packetLen(0x0819, 19) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120919
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120911
+packetLen(0x0819, 8) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120905
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120830
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120814
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120808
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120724
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120716
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120702
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120626
+packetLen(0x0819, 6) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120618
+packetLen(0x0819, 36) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120612
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120604
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120529
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120515
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120503
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120424
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120404
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120328
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120314
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120228
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120221
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120214
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120131
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120117
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120103
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#endif
+
+// Packet: 0x081a
+packetLen(0x081a, 4) // ZC_FAILED_TRADE_BUYING_STORE_TO_BUYER
+
+// Packet: 0x081b
+packetLen(0x081b, 10) // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+
+// Packet: 0x081c
+packetLen(0x081c, 10) // ZC_ITEM_DELETE_BUYING_STORE
+
+// Packet: 0x081d
+packetLen(0x081d, 22) // ZC_EL_INIT
+
+// Packet: 0x081e
+packetLen(0x081e, 8) // ZC_EL_PAR_CHANGE
+
+// Packet: 0x081f
+packetLen(0x081f, -1) // ZC_BROADCAST4
+
+// Packet: 0x0820
+packetLen(0x0820, 11) // ZC_COSTUME_SPRITE_CHANGE
+
+// Packet: 0x0821
+packetLen(0x0821, 2) // AC_OTP_USER
+
+// Packet: 0x0822
+packetLen(0x0822, 9) // CA_OTP_AUTH_REQ
+
+// Packet: 0x0823
+packetLen(0x0823, -1) // AC_OTP_AUTH_ACK
+
+// Packet: 0x0824
+packetLen(0x0824, 6) // ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER
+
+// Packet: 0x0825
+packetLen(0x0825, -1) // CA_SSO_LOGIN_REQ
+
+// Packet: 0x0827
+packetLen(0x0827, 6) // CH_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0828
+packetLen(0x0828, 14) // HC_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0829
+packetLen(0x0829, 12) // CH_DELETE_CHAR3
+
+// Packet: 0x082a
+packetLen(0x082a, 10) // HC_DELETE_CHAR3
+
+// Packet: 0x082b
+packetLen(0x082b, 6) // CH_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082c
+packetLen(0x082c, 10) // HC_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082d
+packetLen(0x082d, -1) // HC_ACCEPT_ENTER2
+
+// Packet: 0x0835
+#if PACKETVER >= 20121010
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20120925
+packetLen(0x0835, 90) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20120905
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20120830
+packetLen(0x0835, 8) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20120801
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20120724
+packetLen(0x0835, 26) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20120103
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#endif
+
+// Packet: 0x0836
+packetLen(0x0836, -1) // ZC_SEARCH_STORE_INFO_ACK
+
+// Packet: 0x0837
+packetLen(0x0837, 3) // ZC_SEARCH_STORE_INFO_FAILED
+
+// Packet: 0x0838
+#if PACKETVER >= 20121227
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20121218
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20121121
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20121114
+packetLen(0x0838, 26) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20121107
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20121031
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20121024
+packetLen(0x0838, 18) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20121017
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20121010
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120925
+packetLen(0x0838, 6) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120919
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120905
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120830
+packetLen(0x0838, 5) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120814
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120808
+packetLen(0x0838, 26) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120724
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120716
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120702
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120626
+packetLen(0x0838, -1) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120612
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120604
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120529
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120515
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120503
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120424
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120404
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120328
+packetLen(0x0838, 8) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120307
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120228
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120221
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120214
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120207
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120131
+packetLen(0x0838, 5) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120120
+packetLen(0x0838, 26) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120117
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120110
+packetLen(0x0838, 5) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120103
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#endif
+
+// Packet: 0x0839
+packetLen(0x0839, 66) // ZC_ACK_BAN_GUILD_SSO
+
+// Packet: 0x083a
+packetLen(0x083a, 5) // ZC_OPEN_SEARCH_STORE_INFO
+
+// Packet: 0x083b
+packetLen(0x083b, 2) // CZ_CLOSE_SEARCH_STORE_INFO
+
+// Packet: 0x083c
+#if PACKETVER >= 20121227
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20121218
+packetLen(0x083c, 6) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20121107
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20121031
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20121024
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20121017
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120925
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120919
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120905
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120830
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120814
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120808
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120724
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120716
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120626
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120612
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120604
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120529
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120515
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120503
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120424
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120404
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120328
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120314
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120228
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120221
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120214
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120131
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120117
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120103
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#endif
+
+// Packet: 0x083d
+packetLen(0x083d, 6) // ZC_SSILIST_ITEM_CLICK_ACK
+
+// Packet: 0x083e
+packetLen(0x083e, 26) // AC_REFUSE_LOGIN2
+
+// Packet: 0x0840
+packetLen(0x0840, -1) // HC_NOTIFY_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0841
+packetLen(0x0841, 4) // CH_SELECT_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0842
+packetLen(0x0842, 6) // CZ_RECALL_SSO
+
+// Packet: 0x0843
+packetLen(0x0843, 6) // CZ_REMOVE_AID_SSO
+
+// Packet: 0x0844
+packetLen(0x0844, 2) // CZ_SE_CASHSHOP_OPEN
+
+// Packet: 0x0845
+packetLen(0x0845, 10) // ZC_SE_CASHSHOP_OPEN
+
+// Packet: 0x0846
+packetLen(0x0846, 4) // CZ_REQ_SE_CASH_TAB_CODE
+
+// Packet: 0x0847
+packetLen(0x0847, -1) // ZC_ACK_SE_CASH_ITEM_LIST
+
+// Packet: 0x0848
+packetLen(0x0848, -1) // CZ_SE_PC_BUY_CASHITEM_LIST
+
+// Packet: 0x0849
+packetLen(0x0849, 16) // ZC_SE_PC_BUY_CASHITEM_RESULT
+
+// Packet: 0x084a
+packetLen(0x084a, 2) // CZ_SE_CASHSHOP_CLOSE
+
+// Packet: 0x084b
+packetLen(0x084b, 19) // ZC_ITEM_FALL_ENTRY4
+
+// Packet: 0x084c
+packetLen(0x084c, 10) // CZ_MACRO_USE_SKILL
+
+// Packet: 0x084d
+packetLen(0x084d, 10) // CZ_MACRO_USE_SKILL_TOGROUND
+
+// Packet: 0x084e
+packetLen(0x084e, 5) // CZ_MACRO_REQUEST_MOVE
+
+// Packet: 0x084f
+packetLen(0x084f, 6) // CZ_MACRO_ITEM_PICKUP
+
+// Packet: 0x0850
+packetLen(0x0850, 7) // CZ_MACRO_REQUEST_ACT
+
+// Packet: 0x0851
+packetLen(0x0851, -1) // ZC_GPK_DYNCODE
+
+// Packet: 0x0852
+packetLen(0x0852, 2) // CZ_GPK_DYNCODE_RELOAD
+
+// Packet: 0x0853
+packetLen(0x0853, -1) // ZC_GPK_AUTH
+
+// Packet: 0x0854
+packetLen(0x0854, -1) // CZ_GPK_AUTH
+
+// Packet: 0x0855
+packetLen(0x0855, 6) // ZC_MACRO_ITEMPICKUP_FAIL
+
+// Packet: 0x0856
+packetLen(0x0856, -1) // ZC_NOTIFY_MOVEENTRY8
+
+// Packet: 0x0857
+packetLen(0x0857, -1) // ZC_NOTIFY_STANDENTRY7
+
+// Packet: 0x0858
+packetLen(0x0858, -1) // ZC_NOTIFY_NEWENTRY6
+
+// Packet: 0x0859
+packetLen(0x0859, -1) // ZC_EQUIPWIN_MICROSCOPE2
+
+// Packet: 0x085a
+#if PACKETVER >= 20121107
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20121031
+packetLen(0x085a, 26) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20121024
+packetLen(0x085a, 8) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120830
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120822
+packetLen(0x085a, 5) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120710
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120702
+packetLen(0x085a, 7) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120522
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120515
+packetLen(0x085a, 8) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120307
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120228
+packetLen(0x085a, 8) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120221
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120214
+packetLen(0x085a, 12) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120103
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x085b
+#if PACKETVER >= 20120716
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120710
+packetLen(0x085b, 10) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120410
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120404
+packetLen(0x085b, 4) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120103
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x085c
+#if PACKETVER >= 20121218
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20121212
+packetLen(0x085c, 7) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20121114
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20121107
+packetLen(0x085c, -1) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20120830
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20120822
+packetLen(0x085c, -1) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20120103
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#endif
+
+// Packet: 0x085d
+#if PACKETVER >= 20121010
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120925
+packetLen(0x085d, 5) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120911
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120905
+packetLen(0x085d, 10) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120830
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120822
+packetLen(0x085d, 10) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120808
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120801
+packetLen(0x085d, 6) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120103
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x085e
+#if PACKETVER >= 20120822
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20120814
+packetLen(0x085e, 8) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20120103
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x085f
+#if PACKETVER >= 20120814
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120808
+packetLen(0x085f, 36) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120702
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120626
+packetLen(0x085f, 5) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120612
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120604
+packetLen(0x085f, 6) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120529
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120522
+packetLen(0x085f, 5) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120103
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x0860
+#if PACKETVER >= 20121227
+packetLen(0x0860, -1) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20120529
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20120522
+packetLen(0x0860, 36) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20120103
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x0861
+#if PACKETVER >= 20121205
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20121128
+packetLen(0x0861, 18) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20121114
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20121107
+packetLen(0x0861, 6) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120905
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120830
+packetLen(0x0861, 19) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120822
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120814
+packetLen(0x0861, 6) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120710
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120702
+packetLen(0x0861, 8) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120612
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120604
+packetLen(0x0861, 18) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120529
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120522
+packetLen(0x0861, 18) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120404
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120328
+packetLen(0x0861, -1) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120314
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120307
+packetLen(0x0861, 36) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120103
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x0862
+#if PACKETVER >= 20121121
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20121114
+packetLen(0x0862, -1) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20120822
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20120814
+packetLen(0x0862, 6) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20120710
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20120702
+packetLen(0x0862, 10) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20120103
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x0863
+#if PACKETVER >= 20121212
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20121205
+packetLen(0x0863, 6) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20121128
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20121121
+packetLen(0x0863, -1) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120710
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120702
+packetLen(0x0863, 10) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120612
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120604
+packetLen(0x0863, 6) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120503
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120424
+packetLen(0x0863, 26) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120314
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120307
+packetLen(0x0863, 5) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120228
+packetLen(0x0863, 12) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120103
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x0864
+#if PACKETVER >= 20121212
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20121205
+packetLen(0x0864, 18) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20120410
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20120404
+packetLen(0x0864, 18) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20120320
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20120314
+packetLen(0x0864, 5) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20120103
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x0865
+#if PACKETVER >= 20121114
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20121107
+packetLen(0x0865, 19) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120822
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120814
+packetLen(0x0865, 8) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120404
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120328
+packetLen(0x0865, 5) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120314
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120307
+packetLen(0x0865, 6) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120103
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0866
+#if PACKETVER >= 20120801
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120724
+packetLen(0x0866, 4) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120702
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120626
+packetLen(0x0866, -1) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120529
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120522
+packetLen(0x0866, 8) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120404
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120328
+packetLen(0x0866, 5) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120103
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0867
+#if PACKETVER >= 20121227
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20121218
+packetLen(0x0867, 5) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20121205
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20121128
+packetLen(0x0867, 6) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120710
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120702
+packetLen(0x0867, -1) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120515
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120508
+packetLen(0x0867, 5) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120103
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0868
+#if PACKETVER >= 20121031
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20121024
+packetLen(0x0868, -1) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20121017
+packetLen(0x0868, 8) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20120919
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20120911
+packetLen(0x0868, 6) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20120822
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20120814
+packetLen(0x0868, 7) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20120702
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20120626
+packetLen(0x0868, 5) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20120515
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20120508
+packetLen(0x0868, 5) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20120103
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0869
+#if PACKETVER >= 20121017
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20121010
+packetLen(0x0869, 6) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20120925
+packetLen(0x0869, 8) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20120702
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20120626
+packetLen(0x0869, 10) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20120612
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20120604
+packetLen(0x0869, 10) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20120529
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20120522
+packetLen(0x0869, 19) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20120515
+packetLen(0x0869, 8) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20120221
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20120214
+packetLen(0x0869, 6) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20120103
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x086a
+#if PACKETVER >= 20121128
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20121121
+packetLen(0x086a, 90) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120808
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120801
+packetLen(0x086a, -1) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120604
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120529
+packetLen(0x086a, 36) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120522
+packetLen(0x086a, -1) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120410
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120404
+packetLen(0x086a, 5) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120314
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120307
+packetLen(0x086a, 19) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120221
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120214
+packetLen(0x086a, 26) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120103
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x086b
+#if PACKETVER >= 20121024
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20121017
+packetLen(0x086b, 6) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20120830
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20120822
+packetLen(0x086b, 6) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20120808
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20120801
+packetLen(0x086b, 6) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20120103
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x086c
+#if PACKETVER >= 20121212
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20121205
+packetLen(0x086c, -1) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20121128
+packetLen(0x086c, 10) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20121121
+packetLen(0x086c, -1) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20121114
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20121107
+packetLen(0x086c, 5) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20121017
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20121010
+packetLen(0x086c, 8) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20120417
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20120410
+packetLen(0x086c, 8) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20120103
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x086d
+#if PACKETVER >= 20121128
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20121121
+packetLen(0x086d, 6) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20121114
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20121107
+packetLen(0x086d, 6) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120702
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120626
+packetLen(0x086d, 18) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120612
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120604
+packetLen(0x086d, 5) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120103
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x086e
+#if PACKETVER >= 20121205
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20121128
+packetLen(0x086e, 4) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20120830
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20120822
+packetLen(0x086e, 5) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20120221
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20120214
+packetLen(0x086e, 6) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20120103
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x086f
+#if PACKETVER >= 20121128
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20121121
+packetLen(0x086f, 8) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120919
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120911
+packetLen(0x086f, 5) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120905
+packetLen(0x086f, 6) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120822
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120814
+packetLen(0x086f, 36) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120702
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120626
+packetLen(0x086f, 26) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120612
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120604
+packetLen(0x086f, 5) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120328
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120320
+packetLen(0x086f, 5) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120103
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x0870
+#if PACKETVER >= 20121227
+packetLen(0x0870, 12) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20121212
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20121205
+packetLen(0x0870, -1) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20120314
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20120307
+packetLen(0x0870, -1) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20120228
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20120221
+packetLen(0x0870, 6) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20120103
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x0871
+#if PACKETVER >= 20121107
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20121031
+packetLen(0x0871, 5) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120702
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120626
+packetLen(0x0871, 6) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120612
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120604
+packetLen(0x0871, 36) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120503
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120424
+packetLen(0x0871, 10) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120417
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120410
+packetLen(0x0871, 5) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120307
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120228
+packetLen(0x0871, 10) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120103
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x0872
+#if PACKETVER >= 20121227
+packetLen(0x0872, 6)
+#elif PACKETVER >= 20121218
+packetLen(0x0872, 4)
+#elif PACKETVER >= 20121205
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20121128
+packetLen(0x0872, 10)
+#elif PACKETVER >= 20121121
+packetLen(0x0872, 6)
+#elif PACKETVER >= 20121031
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20121024
+packetLen(0x0872, 6)
+#elif PACKETVER >= 20120905
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20120830
+packetLen(0x0872, 26)
+#elif PACKETVER >= 20120822
+packetLen(0x0872, -1)
+#elif PACKETVER >= 20120801
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20120724
+packetLen(0x0872, -1)
+#elif PACKETVER >= 20120702
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20120626
+packetLen(0x0872, 6)
+#elif PACKETVER >= 20120221
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20120214
+packetLen(0x0872, 8)
+#elif PACKETVER >= 20120103
+packetLen(0x0872, 2)
+#endif
+
+// Packet: 0x0873
+#if PACKETVER >= 20121114
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20121107
+packetLen(0x0873, 8) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20121010
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20120925
+packetLen(0x0873, -1) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20120808
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20120801
+packetLen(0x0873, 10) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20120417
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20120410
+packetLen(0x0873, 4) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20120103
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x0874
+#if PACKETVER >= 20121017
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20121010
+packetLen(0x0874, 8) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20120702
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20120626
+packetLen(0x0874, 5) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20120503
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20120424
+packetLen(0x0874, 90) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20120404
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20120328
+packetLen(0x0874, 12) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20120103
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x0875
+#if PACKETVER >= 20121212
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20121205
+packetLen(0x0875, -1) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20121128
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20121121
+packetLen(0x0875, 8) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20121031
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20121024
+packetLen(0x0875, 4) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120822
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120814
+packetLen(0x0875, 5) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120808
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120801
+packetLen(0x0875, 6) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120702
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120626
+packetLen(0x0875, 8) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120404
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120328
+packetLen(0x0875, 4) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120307
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120228
+packetLen(0x0875, -1) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120103
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x0876
+#if PACKETVER >= 20121121
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20121114
+packetLen(0x0876, 6) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120919
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120905
+packetLen(0x0876, 5) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120404
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120328
+packetLen(0x0876, 36) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120103
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x0877
+#if PACKETVER >= 20121218
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20121212
+packetLen(0x0877, 6) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20121107
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20121031
+packetLen(0x0877, 19) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20120919
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20120911
+packetLen(0x0877, 26) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20120905
+packetLen(0x0877, -1) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20120801
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20120724
+packetLen(0x0877, -1) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20120716
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20120702
+packetLen(0x0877, 6) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20120103
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x0878
+#if PACKETVER >= 20121212
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20121205
+packetLen(0x0878, 90) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20121114
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20121107
+packetLen(0x0878, 26) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120911
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120905
+packetLen(0x0878, 5) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120716
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120710
+packetLen(0x0878, -1) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120702
+packetLen(0x0878, 12) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120103
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x0879
+#if PACKETVER >= 20121121
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20121114
+packetLen(0x0879, 6) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20120919
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20120911
+packetLen(0x0879, 6) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20120710
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20120702
+packetLen(0x0879, 18) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20120103
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x087a
+#if PACKETVER >= 20121227
+packetLen(0x087a, 7) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20121218
+packetLen(0x087a, 5) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20121031
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20121024
+packetLen(0x087a, 8) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20121010
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20120925
+packetLen(0x087a, 6) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20120919
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20120911
+packetLen(0x087a, 8) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20120905
+packetLen(0x087a, 10) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20120103
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x087b
+#if PACKETVER >= 20121227
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20121218
+packetLen(0x087b, 26) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20121031
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20121024
+packetLen(0x087b, -1) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20120911
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20120905
+packetLen(0x087b, 6) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20120529
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20120522
+packetLen(0x087b, 6) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20120103
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x087c
+#if PACKETVER >= 20120830
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120822
+packetLen(0x087c, 90) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120801
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120724
+packetLen(0x087c, 18) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120604
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120529
+packetLen(0x087c, 26) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120522
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120515
+packetLen(0x087c, 5) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120328
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120320
+packetLen(0x087c, 36) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120103
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#endif
+
+// Packet: 0x087d
+#if PACKETVER >= 20121218
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20121212
+packetLen(0x087d, 10) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20121017
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20121010
+packetLen(0x087d, 90) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20120830
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20120822
+packetLen(0x087d, 6) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20120612
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20120604
+packetLen(0x087d, 6) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20120522
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20120515
+packetLen(0x087d, 6) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20120103
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x087e
+#if PACKETVER >= 20121031
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20121024
+packetLen(0x087e, 10) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20121010
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120925
+packetLen(0x087e, 26) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120911
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120905
+packetLen(0x087e, 8) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120529
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120522
+packetLen(0x087e, 5) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120515
+packetLen(0x087e, 12) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120103
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x087f
+#if PACKETVER >= 20121218
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20121212
+packetLen(0x087f, 12) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20121114
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20121107
+packetLen(0x087f, 5) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120822
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120814
+packetLen(0x087f, 26) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120716
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120710
+packetLen(0x087f, 5) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120529
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120522
+packetLen(0x087f, 6) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120103
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#endif
+
+// Packet: 0x0880
+#if PACKETVER >= 20121128
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20121121
+packetLen(0x0880, 5) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20120103
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x0881
+#if PACKETVER >= 20120702
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20120626
+packetLen(0x0881, 6) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20120221
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20120214
+packetLen(0x0881, 10) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20120103
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x0882
+#if PACKETVER >= 20121031
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20121024
+packetLen(0x0882, 36) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20120822
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20120814
+packetLen(0x0882, 18) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20120515
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20120508
+packetLen(0x0882, 8) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20120103
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x0883
+#if PACKETVER >= 20121017
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20121010
+packetLen(0x0883, 5) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120710
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120702
+packetLen(0x0883, -1) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120404
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120328
+packetLen(0x0883, 90) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120307
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120228
+packetLen(0x0883, 6) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120103
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x0884
+#if PACKETVER >= 20120515
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120508
+packetLen(0x0884, 36) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120417
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120410
+packetLen(0x0884, 6) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120314
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120307
+packetLen(0x0884, -1) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120103
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x0885
+#if PACKETVER >= 20120830
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120822
+packetLen(0x0885, 4) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120612
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120604
+packetLen(0x0885, 26) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120515
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120508
+packetLen(0x0885, 6) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120417
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120410
+packetLen(0x0885, 5) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120320
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120314
+packetLen(0x0885, 5) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120307
+packetLen(0x0885, 7) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120228
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120221
+packetLen(0x0885, 26) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120207
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120131
+packetLen(0x0885, 26) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120120
+packetLen(0x0885, -1) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120117
+packetLen(0x0885, 18) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120103
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x0886
+#if PACKETVER >= 20121218
+packetLen(0x0886, 8) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20120710
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20120702
+packetLen(0x0886, 6) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20120503
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20120424
+packetLen(0x0886, 36) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20120417
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20120404
+packetLen(0x0886, 6) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20120228
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20120221
+packetLen(0x0886, 8) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20120120
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20120117
+packetLen(0x0886, 5) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20120103
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#endif
+
+// Packet: 0x0887
+#if PACKETVER >= 20121024
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20121017
+packetLen(0x0887, -1) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20121010
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120925
+packetLen(0x0887, -1) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120911
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120905
+packetLen(0x0887, 19) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120830
+packetLen(0x0887, 10) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120801
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120724
+packetLen(0x0887, 5) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120314
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120307
+packetLen(0x0887, 6) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120207
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120131
+packetLen(0x0887, 6) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120120
+packetLen(0x0887, 4) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120117
+packetLen(0x0887, 5) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120103
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x0888
+#if PACKETVER >= 20121227
+packetLen(0x0888, 6) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20121212
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20121205
+packetLen(0x0888, 36) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20121128
+packetLen(0x0888, 5) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20121031
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20121024
+packetLen(0x0888, 5) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20121017
+packetLen(0x0888, 18) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20121010
+packetLen(0x0888, 4) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20120905
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20120830
+packetLen(0x0888, 8) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20120801
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20120724
+packetLen(0x0888, 5) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20120228
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20120214
+packetLen(0x0888, 6) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20120207
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20120131
+packetLen(0x0888, 18) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20120103
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x0889
+#if PACKETVER >= 20121227
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20121218
+packetLen(0x0889, -1) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20121212
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20121205
+packetLen(0x0889, 6) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20121031
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20121024
+packetLen(0x0889, 6) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120710
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120702
+packetLen(0x0889, 90) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120417
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120410
+packetLen(0x0889, 6) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120320
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120314
+packetLen(0x0889, 7) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120307
+packetLen(0x0889, 10) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120131
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120120
+packetLen(0x0889, 36) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120117
+packetLen(0x0889, -1) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120103
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x088a
+#if PACKETVER >= 20121031
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20121024
+packetLen(0x088a, 6) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20121010
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20120925
+packetLen(0x088a, 26) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20120919
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20120911
+packetLen(0x088a, 6) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20120830
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20120822
+packetLen(0x088a, 8) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20120404
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20120328
+packetLen(0x088a, 8) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20120307
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20120228
+packetLen(0x088a, 8) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20120207
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20120131
+packetLen(0x088a, 19) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20120103
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x088b
+#if PACKETVER >= 20121212
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20121205
+packetLen(0x088b, 4) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20121128
+packetLen(0x088b, -1) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120822
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120814
+packetLen(0x088b, 26) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120808
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120801
+packetLen(0x088b, 5) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120221
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120214
+packetLen(0x088b, 18) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120103
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x088c
+#if PACKETVER >= 20120320
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20120314
+packetLen(0x088c, 4) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20120221
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20120214
+packetLen(0x088c, 26) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20120120
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20120117
+packetLen(0x088c, 8) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20120103
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x088d
+#if PACKETVER >= 20121010
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120925
+packetLen(0x088d, 10) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120822
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120814
+packetLen(0x088d, -1) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120716
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120710
+packetLen(0x088d, 5) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120529
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120522
+packetLen(0x088d, 8) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120221
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120214
+packetLen(0x088d, 6) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120207
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120131
+packetLen(0x088d, -1) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120120
+packetLen(0x088d, 18) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120103
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x088e
+#if PACKETVER >= 20121227
+packetLen(0x088e, 5) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20120801
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20120724
+packetLen(0x088e, 10) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20120612
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20120604
+packetLen(0x088e, 6) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20120503
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20120424
+packetLen(0x088e, 5) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20120404
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20120328
+packetLen(0x088e, 6) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20120120
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20120117
+packetLen(0x088e, 8) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20120103
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x088f
+#if PACKETVER >= 20121114
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20121107
+packetLen(0x088f, -1) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20121017
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20121010
+packetLen(0x088f, 26) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120925
+packetLen(0x088f, -1) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120919
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120911
+packetLen(0x088f, 26) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120814
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120808
+packetLen(0x088f, 5) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120508
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120503
+packetLen(0x088f, 36) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120131
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120120
+packetLen(0x088f, 5) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120117
+packetLen(0x088f, 10) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120103
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0890
+#if PACKETVER >= 20121227
+packetLen(0x0890, 10) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20121218
+packetLen(0x0890, 8) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20121114
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20121107
+packetLen(0x0890, 10) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120905
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120830
+packetLen(0x0890, 4) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120808
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120801
+packetLen(0x0890, 7) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120529
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120522
+packetLen(0x0890, -1) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120314
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120307
+packetLen(0x0890, 5) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120221
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120214
+packetLen(0x0890, 8) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120207
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120131
+packetLen(0x0890, 8) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120120
+packetLen(0x0890, 5) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120103
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0891
+#if PACKETVER >= 20121114
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20121107
+packetLen(0x0891, 8) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20121017
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20121010
+packetLen(0x0891, 10) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120612
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120604
+packetLen(0x0891, 26) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120529
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120522
+packetLen(0x0891, 6) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120515
+packetLen(0x0891, -1) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120417
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120410
+packetLen(0x0891, 6) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120307
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120228
+packetLen(0x0891, 36) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120131
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120120
+packetLen(0x0891, 8) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120117
+packetLen(0x0891, 6) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120103
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0892
+#if PACKETVER >= 20121128
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20121121
+packetLen(0x0892, -1) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20120702
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20120626
+packetLen(0x0892, 36) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20120120
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20120117
+packetLen(0x0892, -1) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20120103
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0893
+#if PACKETVER >= 20121218
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20121212
+packetLen(0x0893, 6) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20120716
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20120710
+packetLen(0x0893, 36) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20120103
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x0894
+#if PACKETVER >= 20121227
+packetLen(0x0894, 26) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20121205
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20121128
+packetLen(0x0894, 8) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120404
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120328
+packetLen(0x0894, -1) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120131
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120120
+packetLen(0x0894, 10) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120103
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x0895
+#if PACKETVER >= 20121218
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20121212
+packetLen(0x0895, 6) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20121205
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20121128
+packetLen(0x0895, 6) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20120911
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20120905
+packetLen(0x0895, 5) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20120822
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20120814
+packetLen(0x0895, -1) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20120808
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20120801
+packetLen(0x0895, 19) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20120131
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20120120
+packetLen(0x0895, 7) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20120103
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x0896
+#if PACKETVER >= 20121227
+packetLen(0x0896, 6) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20121114
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20121107
+packetLen(0x0896, 6) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20121017
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20121010
+packetLen(0x0896, -1) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20120103
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x0897
+#if PACKETVER >= 20121024
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20121017
+packetLen(0x0897, 8) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120911
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120905
+packetLen(0x0897, 6) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120716
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120710
+packetLen(0x0897, -1) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120702
+packetLen(0x0897, 26) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120612
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120604
+packetLen(0x0897, 6) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120529
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120522
+packetLen(0x0897, 26) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120117
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120110
+packetLen(0x0897, 5) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120103
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x0898
+#if PACKETVER >= 20121121
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20121114
+packetLen(0x0898, 7) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20121107
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20121031
+packetLen(0x0898, 36) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20121017
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20121010
+packetLen(0x0898, 36) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20120207
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20120131
+packetLen(0x0898, 4) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20120103
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x0899
+#if PACKETVER >= 20121128
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20121121
+packetLen(0x0899, 26) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20121114
+packetLen(0x0899, 5) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120830
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120822
+packetLen(0x0899, 26) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120716
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120710
+packetLen(0x0899, 6) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120410
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120404
+packetLen(0x0899, 6) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120207
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120131
+packetLen(0x0899, 6) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120120
+packetLen(0x0899, 8) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120103
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x089a
+#if PACKETVER >= 20121212
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20121205
+packetLen(0x089a, 26) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20121128
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20121121
+packetLen(0x089a, 18) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20121114
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20121107
+packetLen(0x089a, 7) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20121024
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20121017
+packetLen(0x089a, 26) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20120522
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20120515
+packetLen(0x089a, 36) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20120508
+packetLen(0x089a, 8) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20120503
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20120424
+packetLen(0x089a, -1) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20120103
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x089b
+#if PACKETVER >= 20121114
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20121107
+packetLen(0x089b, -1) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120503
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120424
+packetLen(0x089b, 8) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120221
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120214
+packetLen(0x089b, -1) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120117
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120110
+packetLen(0x089b, 26) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120103
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x089c
+#if PACKETVER >= 20121031
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20121024
+packetLen(0x089c, 26) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20120808
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20120801
+packetLen(0x089c, 90) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20120417
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20120410
+packetLen(0x089c, 26) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20120404
+packetLen(0x089c, 8) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20120103
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#endif
+
+// Packet: 0x089d
+#if PACKETVER >= 20121212
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20121205
+packetLen(0x089d, 12) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20121010
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20120925
+packetLen(0x089d, -1) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20120808
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20120801
+packetLen(0x089d, 6) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20120307
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20120228
+packetLen(0x089d, -1) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20120120
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20120117
+packetLen(0x089d, 90) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20120103
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x089e
+#if PACKETVER >= 20120710
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20120702
+packetLen(0x089e, 6) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20120320
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20120314
+packetLen(0x089e, 26) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20120120
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20120117
+packetLen(0x089e, 6) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20120103
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x089f
+#if PACKETVER >= 20120830
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120822
+packetLen(0x089f, 19) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120808
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120801
+packetLen(0x089f, 5) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120724
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120716
+packetLen(0x089f, 36) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120710
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120702
+packetLen(0x089f, 6) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120221
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120214
+packetLen(0x089f, 36) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120207
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120131
+packetLen(0x089f, 36) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120120
+packetLen(0x089f, -1) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120103
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x08a0
+#if PACKETVER >= 20120911
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120905
+packetLen(0x08a0, 4) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120710
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120702
+packetLen(0x08a0, 8) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120626
+packetLen(0x08a0, 26) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120503
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120424
+packetLen(0x08a0, 5) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120404
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120328
+packetLen(0x08a0, 18) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120320
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120314
+packetLen(0x08a0, -1) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120131
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120120
+packetLen(0x08a0, 6) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120103
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x08a1
+#if PACKETVER >= 20121017
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20121010
+packetLen(0x08a1, 7) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20120801
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20120724
+packetLen(0x08a1, 6) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20120131
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20120120
+packetLen(0x08a1, 6) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20120103
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x08a2
+#if PACKETVER >= 20120808
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120801
+packetLen(0x08a2, 26) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120612
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120604
+packetLen(0x08a2, 7) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120522
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120515
+packetLen(0x08a2, 90) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120417
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120410
+packetLen(0x08a2, 8) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120307
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120228
+packetLen(0x08a2, 4) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120207
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120131
+packetLen(0x08a2, 26) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120103
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x08a3
+#if PACKETVER >= 20121218
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20121212
+packetLen(0x08a3, 19) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20120716
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20120710
+packetLen(0x08a3, 6) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20120529
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20120522
+packetLen(0x08a3, 10) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20120503
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20120424
+packetLen(0x08a3, -1) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20120410
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20120404
+packetLen(0x08a3, 26) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20120103
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x08a4
+#if PACKETVER >= 20121010
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20120925
+packetLen(0x08a4, 7) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20120919
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20120911
+packetLen(0x08a4, 18) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20120702
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20120626
+packetLen(0x08a4, 19) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20120503
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20120424
+packetLen(0x08a4, 6) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20120131
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20120117
+packetLen(0x08a4, 6) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20120103
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x08a5
+#if PACKETVER >= 20120919
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20120911
+packetLen(0x08a5, -1) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20120830
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20120822
+packetLen(0x08a5, 8) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20120522
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20120515
+packetLen(0x08a5, 6) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20120221
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20120214
+packetLen(0x08a5, 4) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20120131
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20120120
+packetLen(0x08a5, 90) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20120103
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x08a6
+#if PACKETVER >= 20121227
+packetLen(0x08a6, 6) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20121024
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20121017
+packetLen(0x08a6, 5) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20121010
+packetLen(0x08a6, 6) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120919
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120911
+packetLen(0x08a6, 19) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120905
+packetLen(0x08a6, 26) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120716
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120710
+packetLen(0x08a6, -1) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120417
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120410
+packetLen(0x08a6, 8) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120404
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120328
+packetLen(0x08a6, 19) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120120
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120117
+packetLen(0x08a6, 19) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120103
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#endif
+
+// Packet: 0x08a7
+#if PACKETVER >= 20121218
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20121212
+packetLen(0x08a7, 5) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20121128
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20121121
+packetLen(0x08a7, -1) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20120919
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20120911
+packetLen(0x08a7, 6) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20120515
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20120508
+packetLen(0x08a7, 18) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20120221
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20120214
+packetLen(0x08a7, 6) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20120103
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x08a8
+#if PACKETVER >= 20121205
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20121128
+packetLen(0x08a8, -1) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120822
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120814
+packetLen(0x08a8, 4) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120716
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120710
+packetLen(0x08a8, 19) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120522
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120515
+packetLen(0x08a8, 19) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120424
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120417
+packetLen(0x08a8, 36) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120320
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120314
+packetLen(0x08a8, 36) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120307
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120228
+packetLen(0x08a8, 6) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120120
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120117
+packetLen(0x08a8, 12) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120103
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x08a9
+#if PACKETVER >= 20121218
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20121212
+packetLen(0x08a9, 36) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20121121
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20121114
+packetLen(0x08a9, 6) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20121031
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20121024
+packetLen(0x08a9, -1) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20121017
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20121010
+packetLen(0x08a9, -1) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120801
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120724
+packetLen(0x08a9, 19) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120529
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120522
+packetLen(0x08a9, 6) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120515
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120508
+packetLen(0x08a9, 19) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120503
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120424
+packetLen(0x08a9, 7) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120120
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120117
+packetLen(0x08a9, 8) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120103
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#endif
+
+// Packet: 0x08aa
+#if PACKETVER >= 20121227
+packetLen(0x08aa, 18) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20121218
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20121212
+packetLen(0x08aa, 4) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20121128
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20121121
+packetLen(0x08aa, 7) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20121031
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20121024
+packetLen(0x08aa, 5) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20120808
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20120801
+packetLen(0x08aa, 5) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20120716
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20120710
+packetLen(0x08aa, 8) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20120103
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x08ab
+#if PACKETVER >= 20121121
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20121114
+packetLen(0x08ab, 5) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20120830
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20120822
+packetLen(0x08ab, 7) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20120808
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20120801
+packetLen(0x08ab, 8) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20120724
+packetLen(0x08ab, 6) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20120529
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20120522
+packetLen(0x08ab, 8) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20120221
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20120214
+packetLen(0x08ab, 5) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20120110
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20120103
+packetLen(0x08ab, 36) // CZ_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x08ac
+#if PACKETVER >= 20121218
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20121212
+packetLen(0x08ac, 6) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20120529
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20120522
+packetLen(0x08ac, 7) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20120515
+packetLen(0x08ac, 5) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20120328
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20120320
+packetLen(0x08ac, 26) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20120103
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x08ad
+#if PACKETVER >= 20121212
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20121205
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20121128
+packetLen(0x08ad, 5) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20121114
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20121107
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120919
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120911
+packetLen(0x08ad, -1) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120522
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120515
+packetLen(0x08ad, 10) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120404
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120328
+packetLen(0x08ad, 8) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120207
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120131
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120120
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120103
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x08af
+packetLen(0x08af, 10) // HC_WAITING_LOGIN
+
+// Packet: 0x08b0
+packetLen(0x08b0, 17) // CH_WAITING_LOGIN
+
+// Packet: 0x08b1
+packetLen(0x08b1, -1) // ZC_MCSTORE_NOTMOVEITEM_LIST
+
+// Packet: 0x08b2
+packetLen(0x08b2, -1) // AC_REALNAME_AUTH
+
+// Packet: 0x08b3
+packetLen(0x08b3, -1) // ZC_SHOWSCRIPT
+
+// Packet: 0x08b4
+packetLen(0x08b4, 2) // ZC_START_COLLECTION
+
+// Packet: 0x08b5
+packetLen(0x08b5, 6) // CZ_TRYCOLLECTION
+
+// Packet: 0x08b6
+packetLen(0x08b6, 3) // ZC_TRYCOLLECTION
+
+// Packet: 0x08b8
+packetLen(0x08b8, 10) // CH_SECOND_PASSWD_ACK
+
+// Packet: 0x08b9
+packetLen(0x08b9, 12) // HC_SECOND_PASSWD_LOGIN
+
+// Packet: 0x08ba
+packetLen(0x08ba, 10) // CH_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bb
+packetLen(0x08bb, 8) // HC_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bc
+packetLen(0x08bc, 10) // CH_DELETE_SECOND_PASSWD
+
+// Packet: 0x08bd
+packetLen(0x08bd, 8) // HC_DELETE_SECOND_PASSWD
+
+// Packet: 0x08be
+packetLen(0x08be, 14) // CH_EDIT_SECOND_PASSWD
+
+// Packet: 0x08bf
+packetLen(0x08bf, 8) // HC_EDIT_SECOND_PASSWD
+
+// Packet: 0x08c0
+packetLen(0x08c0, -1) // ZC_ACK_SE_CASH_ITEM_LIST2
+
+// Packet: 0x08c1
+packetLen(0x08c1, 2) // CZ_MACRO_START
+
+// Packet: 0x08c2
+packetLen(0x08c2, 2) // CZ_MACRO_STOP
+
+// Packet: 0x08c3
+packetLen(0x08c3, 10) // CH_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c4
+packetLen(0x08c4, 8) // HC_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c5
+packetLen(0x08c5, 6) // CH_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c6
+packetLen(0x08c6, 4) // HC_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c7
+packetLen(0x08c7, -1) // ZC_SKILL_ENTRY3
+
+// Packet: 0x08c8
+packetLen(0x08c8, 34) // ZC_NOTIFY_ACT3
+
+// Packet: 0x08c9
+packetLen(0x08c9, 2) // CZ_REQ_SCHEDULER_CASHITEM
+
+// Packet: 0x08ca
+packetLen(0x08ca, -1) // ZC_ACK_SCHEDULER_CASHITEM
+
+// Packet: 0x08cb
+packetLen(0x08cb, -1) // ZC_PERSONAL_INFOMATION
+
+// Packet: 0x08cc
+packetLen(0x08cc, 109) // CA_LOGIN5
+
+// Packet: 0x08cd
+packetLen(0x08cd, 10) // ZC_STOPMOVE_FORCE
+
+// Packet: 0x08ce
+packetLen(0x08ce, 2) // ZC_FAILED_GET_ITEM_FROM_ZONEDA
+
+// Packet: 0x08cf
+packetLen(0x08cf, 10) // ZC_SPIRITS_ATTRIBUTE
+
+// Packet: 0x08d0
+packetLen(0x08d0, 9) // ZC_REQ_WEAR_EQUIP_ACK2
+
+// Packet: 0x08d1
+packetLen(0x08d1, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK2
+
+// Packet: 0x08d2
+packetLen(0x08d2, 10) // ZC_FASTMOVE
+
+// Packet: 0x08d3
+packetLen(0x08d3, 10) // ZC_SE_CASHSHOP_UPDATE
+
+// Packet: 0x08d4
+packetLen(0x08d4, 8) // CH_REQ_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d5
+packetLen(0x08d5, -1) // HC_ACK_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d6
+packetLen(0x08d6, 6) // ZC_CLEAR_DIALOG
+
+// Packet: 0x08d7
+packetLen(0x08d7, 28) // CZ_REQ_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d8
+packetLen(0x08d8, 27) // ZC_ACK_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d9
+packetLen(0x08d9, 30) // ZC_NOTIFY_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08da
+packetLen(0x08da, 26) // CZ_REQ_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08db
+packetLen(0x08db, 27) // ZC_ACK_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08dc
+packetLen(0x08dc, 26) // ZC_NOTIFY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08dd
+packetLen(0x08dd, 27) // CZ_REPLY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08de
+packetLen(0x08de, 27) // ZC_REPLY_ACK_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08df
+packetLen(0x08df, 50) // ZC_NOTIFY_LOBBY_ADMISSION
+
+// Packet: 0x08e0
+packetLen(0x08e0, 51) // CZ_REPLY_LOBBY_ADMISSION
+
+// Packet: 0x08e1
+packetLen(0x08e1, 51) // ZC_REPLY_ACK_LOBBY_ADMISSION
+
+// Packet: 0x08e2
+#if PACKETVER >= 20120307
+packetLen(0x08e2, 27) // ZC_NAVIGATION_ACTIVE
+#elif PACKETVER >= 20120103
+packetLen(0x08e2, 25) // ZC_NAVIGATION_ACTIVE
+#endif
+
+// Packet: 0x08e3
+packetLen(0x08e3, 146) // HC_UPDATE_CHARINFO
+
+// Packet: 0x08e4
+packetLen(0x08e4, 6) // AC_SHUTDOWN_INFO
+
+// Packet: 0x08e5
+packetLen(0x08e5, 41) // CZ_PARTY_RECRUIT_REQ_REGISTER
+
+// Packet: 0x08e6
+packetLen(0x08e6, 4) // ZC_PARTY_RECRUIT_ACK_REGISTER
+
+// Packet: 0x08e7
+packetLen(0x08e7, 10) // CZ_PARTY_RECRUIT_REQ_SEARCH
+
+// Packet: 0x08e8
+packetLen(0x08e8, -1)
+
+// Packet: 0x08e9
+packetLen(0x08e9, 2) // CZ_PARTY_RECRUIT_REQ_DELETE
+
+// Packet: 0x08ea
+packetLen(0x08ea, 4) // ZC_PARTY_RECRUIT_ACK_DELETE
+
+// Packet: 0x08eb
+packetLen(0x08eb, 39) // CZ_PARTY_RECRUIT_REQ_UPDATE
+
+// Packet: 0x08ec
+packetLen(0x08ec, 73) // ZC_PARTY_RECRUIT_NOTIFY_INSERT
+
+// Packet: 0x08ed
+packetLen(0x08ed, 43) // ZC_PARTY_RECRUIT_NOTIFY_UPDATE
+
+// Packet: 0x08ee
+packetLen(0x08ee, 6) // ZC_PARTY_RECRUIT_NOTIFY_DELETE
+
+// Packet: 0x08ef
+packetLen(0x08ef, 6) // CZ_PARTY_RECRUIT_ADD_FILTERLINGLIST
+
+// Packet: 0x08f0
+packetLen(0x08f0, 6) // CZ_PARTY_RECRUIT_SUB_FILTERLINGLIST
+
+// Packet: 0x08f1
+packetLen(0x08f1, 6) // CZ_PARTY_RECRUIT_REQ_VOLUNTEER
+
+// Packet: 0x08f2
+packetLen(0x08f2, 36) // ZC_PARTY_RECRUIT_VOLUNTEER_INFO
+
+// Packet: 0x08f3
+packetLen(0x08f3, -1)
+
+// Packet: 0x08f4
+packetLen(0x08f4, 6) // CZ_PARTY_RECRUIT_SHOW_EQUIPMENT
+
+// Packet: 0x08f5
+packetLen(0x08f5, -1) // CZ_UNKNOWN_BOOKING_SOMMON_MEMBER_08f5
+
+// Packet: 0x08f6
+packetLen(0x08f6, 22) // ZC_PARTY_RECRUIT_RECALL_COST
+
+// Packet: 0x08f7
+packetLen(0x08f7, 3) // CZ_PARTY_RECRUIT_ACK_RECALL
+
+// Packet: 0x08f8
+packetLen(0x08f8, 7) // ZC_PARTY_RECRUIT_FAILED_RECALL
+
+// Packet: 0x08f9
+packetLen(0x08f9, 6) // CZ_PARTY_RECRUIT_REFUSE_VOLUNTEER
+
+// Packet: 0x08fa
+packetLen(0x08fa, 6) // ZC_PARTY_RECRUIT_REFUSE_VOLUNTEER
+
+// Packet: 0x08fb
+packetLen(0x08fb, 6) // CZ_PARTY_RECRUIT_CANCEL_VOLUNTEER
+
+// Packet: 0x08fc
+packetLen(0x08fc, 30) // CH_REQ_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fd
+packetLen(0x08fd, 6) // CH_ACK_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fe
+packetLen(0x08fe, -1) // ZC_HUNTING_QUEST_INFO
+
+// Packet: 0x08ff
+packetLen(0x08ff, 24) // ZC_EFST_SET_ENTER
+
+// Packet: 0x0900
+packetLen(0x0900, -1) // ZC_INVENTORY_ITEMLIST_NORMAL
+
+// Packet: 0x0901
+packetLen(0x0901, -1) // ZC_INVENTORY_ITEMLIST_EQUIP
+
+// Packet: 0x0902
+packetLen(0x0902, -1) // ZC_CART_ITEMLIST_NORMAL
+
+// Packet: 0x0903
+packetLen(0x0903, -1) // ZC_CART_ITEMLIST_EQUIP
+
+// Packet: 0x0904
+packetLen(0x0904, -1) // ZC_STORE_ITEMLIST_NORMAL
+
+// Packet: 0x0905
+packetLen(0x0905, -1) // ZC_STORE_ITEMLIST_EQUIP
+
+// Packet: 0x0906
+packetLen(0x0906, -1) // ZC_MICROSCOPE
+
+// Packet: 0x0907
+packetLen(0x0907, 5) // CZ_INVENTORY_TAB
+
+// Packet: 0x0908
+packetLen(0x0908, 5) // ZC_INVENTORY_TAB
+
+// Packet: 0x0909
+packetLen(0x0909, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER
+
+// Packet: 0x090a
+packetLen(0x090a, 26) // CZ_REQ_ENTRY_QUEUE_RANKING
+
+// Packet: 0x090b
+packetLen(0x090b, 30) // ZC_PARTY_RECRUIT_ADD_FILTERLINGLIST
+
+// Packet: 0x090c
+packetLen(0x090c, 30) // ZC_PARTY_RECRUIT_SUB_FILTERLINGLIST
+
+// Packet: 0x090d
+packetLen(0x090d, -1) // ZC_PREMIUM_CAMPAIGN_INFO
+
+// Packet: 0x090e
+packetLen(0x090e, 2) // ZC_ENTRY_QUEUE_INIT
+
+// Packet: 0x090f
+#if PACKETVER >= 20120131
+packetLen(0x090f, -1) // ZC_NOTIFY_NEWENTRY7
+#endif
+
+// Packet: 0x0910
+#if PACKETVER >= 20120120
+packetLen(0x0910, 10) // CZ_REQ_PARTY_NAME
+#endif
+
+// Packet: 0x0911
+#if PACKETVER >= 20120120
+packetLen(0x0911, 30) // ZC_ACK_PARTY_NAME
+#endif
+
+// Packet: 0x0912
+#if PACKETVER >= 20120120
+packetLen(0x0912, 10) // CZ_REQ_GUILD_NAME
+#endif
+
+// Packet: 0x0913
+#if PACKETVER >= 20120120
+packetLen(0x0913, 30) // ZC_ACK_GUILD_NAME
+#endif
+
+// Packet: 0x0914
+#if PACKETVER >= 20120131
+packetLen(0x0914, -1) // ZC_NOTIFY_MOVEENTRY9
+#endif
+
+// Packet: 0x0915
+#if PACKETVER >= 20120131
+packetLen(0x0915, -1) // ZC_NOTIFY_STANDENTRY8
+#endif
+
+// Packet: 0x0916
+#if PACKETVER >= 20120131
+packetLen(0x0916, 26) // CZ_REQ_JOIN_GUILD2
+#endif
+
+// Packet: 0x0917
+#if PACKETVER >= 20121218
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20121212
+packetLen(0x0917, 8) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120911
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120905
+packetLen(0x0917, -1) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120830
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120822
+packetLen(0x0917, -1) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120808
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120801
+packetLen(0x0917, 36) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120307
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120228
+packetLen(0x0917, 7) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120207
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#endif
+
+// Packet: 0x0918
+#if PACKETVER >= 20121024
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20121017
+packetLen(0x0918, 36) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20120911
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20120905
+packetLen(0x0918, -1) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20120207
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#endif
+
+// Packet: 0x0919
+#if PACKETVER >= 20120604
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20120529
+packetLen(0x0919, 5) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20120307
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20120228
+packetLen(0x0919, 19) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20120221
+packetLen(0x0919, 4) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20120207
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#endif
+
+// Packet: 0x091a
+#if PACKETVER >= 20121227
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20121218
+packetLen(0x091a, 8) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20121212
+packetLen(0x091a, -1) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20121128
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20121121
+packetLen(0x091a, 6) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20121114
+packetLen(0x091a, 8) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20120911
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20120905
+packetLen(0x091a, 6) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20120522
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20120515
+packetLen(0x091a, 6) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20120404
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20120328
+packetLen(0x091a, -1) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20120221
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20120214
+packetLen(0x091a, 5) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20120207
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#endif
+
+// Packet: 0x091b
+#if PACKETVER >= 20121205
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20121128
+packetLen(0x091b, 6) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20120503
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20120424
+packetLen(0x091b, -1) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20120404
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20120328
+packetLen(0x091b, -1) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20120207
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#endif
+
+// Packet: 0x091c
+#if PACKETVER >= 20121227
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20121218
+packetLen(0x091c, 19) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20121212
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20121205
+packetLen(0x091c, 8) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20121128
+packetLen(0x091c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20120801
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20120724
+packetLen(0x091c, 5) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20120417
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20120410
+packetLen(0x091c, 26) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20120207
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#endif
+
+// Packet: 0x091d
+#if PACKETVER >= 20120905
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120830
+packetLen(0x091d, -1) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120808
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120801
+packetLen(0x091d, -1) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120612
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120604
+packetLen(0x091d, -1) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120417
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120410
+packetLen(0x091d, 18) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120404
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120328
+packetLen(0x091d, 26) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120207
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#endif
+
+// Packet: 0x091e
+#if PACKETVER >= 20121205
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20121128
+packetLen(0x091e, -1) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20120529
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20120522
+packetLen(0x091e, 12) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20120207
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#endif
+
+// Packet: 0x091f
+#if PACKETVER >= 20121227
+packetLen(0x091f, 4) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20121205
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20121128
+packetLen(0x091f, 90) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20120822
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20120814
+packetLen(0x091f, 19) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20120801
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20120724
+packetLen(0x091f, 6) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20120522
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20120515
+packetLen(0x091f, 26) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20120207
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#endif
+
+// Packet: 0x0920
+#if PACKETVER >= 20121227
+packetLen(0x0920, 90) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20121218
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20121212
+packetLen(0x0920, 5) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20121024
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20121017
+packetLen(0x0920, 4) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20120822
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20120814
+packetLen(0x0920, 6) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20120702
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20120626
+packetLen(0x0920, 7) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20120404
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20120328
+packetLen(0x0920, 5) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20120221
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20120214
+packetLen(0x0920, 8) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20120207
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#endif
+
+// Packet: 0x0921
+#if PACKETVER >= 20121212
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20121205
+packetLen(0x0921, 19) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20121128
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20121121
+packetLen(0x0921, 10) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20120221
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20120214
+packetLen(0x0921, -1) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20120207
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#endif
+
+// Packet: 0x0922
+#if PACKETVER >= 20121205
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20121128
+packetLen(0x0922, 8) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20121114
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20121107
+packetLen(0x0922, 8) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20120503
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20120424
+packetLen(0x0922, 10) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20120207
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#endif
+
+// Packet: 0x0923
+#if PACKETVER >= 20121010
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20120925
+packetLen(0x0923, 6) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20120522
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20120515
+packetLen(0x0923, 7) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20120503
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20120424
+packetLen(0x0923, 19) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20120207
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#endif
+
+// Packet: 0x0924
+#if PACKETVER >= 20120612
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20120604
+packetLen(0x0924, 90) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20120207
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#endif
+
+// Packet: 0x0925
+#if PACKETVER >= 20121017
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20121010
+packetLen(0x0925, 12) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20120307
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20120228
+packetLen(0x0925, -1) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20120207
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#endif
+
+// Packet: 0x0926
+#if PACKETVER >= 20120905
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20120830
+packetLen(0x0926, 8) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20120503
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20120424
+packetLen(0x0926, 6) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20120314
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20120307
+packetLen(0x0926, 18) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20120207
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#endif
+
+// Packet: 0x0927
+#if PACKETVER >= 20121128
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20121121
+packetLen(0x0927, 19) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20121010
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20120925
+packetLen(0x0927, 6) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20120911
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20120905
+packetLen(0x0927, 18) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20120830
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20120822
+packetLen(0x0927, 6) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20120207
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#endif
+
+// Packet: 0x0928
+#if PACKETVER >= 20120801
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20120724
+packetLen(0x0928, -1) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20120307
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20120228
+packetLen(0x0928, 26) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20120207
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#endif
+
+// Packet: 0x0929
+#if PACKETVER >= 20121128
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20121121
+packetLen(0x0929, 4) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20120822
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20120814
+packetLen(0x0929, 8) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20120801
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20120724
+packetLen(0x0929, 12) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20120314
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20120307
+packetLen(0x0929, 26) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20120207
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#endif
+
+// Packet: 0x092a
+#if PACKETVER >= 20120808
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20120801
+packetLen(0x092a, 4) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20120320
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20120314
+packetLen(0x092a, 6) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20120207
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#endif
+
+// Packet: 0x092b
+#if PACKETVER >= 20121107
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20121031
+packetLen(0x092b, 4) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20120801
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20120724
+packetLen(0x092b, 90) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20120522
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20120515
+packetLen(0x092b, 8) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20120404
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20120328
+packetLen(0x092b, 6) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20120207
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#endif
+
+// Packet: 0x092c
+#if PACKETVER >= 20120710
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20120702
+packetLen(0x092c, -1) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20120529
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20120522
+packetLen(0x092c, 5) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20120207
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#endif
+
+// Packet: 0x092d
+#if PACKETVER >= 20120716
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20120710
+packetLen(0x092d, 12) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20120307
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20120228
+packetLen(0x092d, -1) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20120207
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#endif
+
+// Packet: 0x092e
+#if PACKETVER >= 20120808
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20120801
+packetLen(0x092e, 6) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20120612
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20120604
+packetLen(0x092e, -1) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20120410
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20120404
+packetLen(0x092e, 5) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20120207
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#endif
+
+// Packet: 0x092f
+#if PACKETVER >= 20121205
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20121128
+packetLen(0x092f, 6) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20120702
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20120626
+packetLen(0x092f, 4) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20120612
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20120604
+packetLen(0x092f, -1) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20120207
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#endif
+
+// Packet: 0x0930
+#if PACKETVER >= 20121121
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20121114
+packetLen(0x0930, 4) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20120919
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20120911
+packetLen(0x0930, -1) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20120808
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20120801
+packetLen(0x0930, 6) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20120529
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20120522
+packetLen(0x0930, 4) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20120228
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20120221
+packetLen(0x0930, 26) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20120207
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#endif
+
+// Packet: 0x0931
+#if PACKETVER >= 20121205
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20121128
+packetLen(0x0931, 7) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20121031
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20121024
+packetLen(0x0931, 6) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20120320
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20120314
+packetLen(0x0931, 8) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20120207
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#endif
+
+// Packet: 0x0932
+#if PACKETVER >= 20121227
+packetLen(0x0932, 5) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20121218
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20121212
+packetLen(0x0932, 18) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20121010
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20120925
+packetLen(0x0932, 6) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20120822
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20120814
+packetLen(0x0932, 10) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20120207
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#endif
+
+// Packet: 0x0933
+#if PACKETVER >= 20121227
+packetLen(0x0933, -1) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20120307
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20120228
+packetLen(0x0933, 18) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20120221
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20120214
+packetLen(0x0933, 6) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20120207
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#endif
+
+// Packet: 0x0934
+#if PACKETVER >= 20121114
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20121107
+packetLen(0x0934, 12) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20121017
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20121010
+packetLen(0x0934, 6) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20120905
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20120830
+packetLen(0x0934, 5) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20120822
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20120814
+packetLen(0x0934, 10) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20120808
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20120801
+packetLen(0x0934, 10) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20120404
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20120328
+packetLen(0x0934, 6) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20120207
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#endif
+
+// Packet: 0x0935
+#if PACKETVER >= 20121227
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20121218
+packetLen(0x0935, 26) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20121121
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20121114
+packetLen(0x0935, 10) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20120830
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20120822
+packetLen(0x0935, 5) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20120702
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20120626
+packetLen(0x0935, 6) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20120228
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20120221
+packetLen(0x0935, -1) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20120207
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#endif
+
+// Packet: 0x0936
+#if PACKETVER >= 20120716
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20120710
+packetLen(0x0936, 8) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20120702
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20120626
+packetLen(0x0936, 12) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20120612
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20120604
+packetLen(0x0936, 8) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20120207
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#endif
+
+// Packet: 0x0937
+#if PACKETVER >= 20120830
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20120822
+packetLen(0x0937, 10) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20120307
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20120228
+packetLen(0x0937, 26) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20120221
+packetLen(0x0937, 8) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20120207
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#endif
+
+// Packet: 0x0938
+#if PACKETVER >= 20121128
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20121121
+packetLen(0x0938, 12) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20121114
+packetLen(0x0938, -1) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20120801
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20120724
+packetLen(0x0938, 10) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20120702
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20120626
+packetLen(0x0938, -1) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20120417
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20120410
+packetLen(0x0938, 6) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20120207
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#endif
+
+// Packet: 0x0939
+#if PACKETVER >= 20120207
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#endif
+
+// Packet: 0x093a
+#if PACKETVER >= 20121212
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20121205
+packetLen(0x093a, 6) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20121031
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20121024
+packetLen(0x093a, 8) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20120702
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20120626
+packetLen(0x093a, 90) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20120604
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20120529
+packetLen(0x093a, 19) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20120320
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20120314
+packetLen(0x093a, 8) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20120207
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#endif
+
+// Packet: 0x093b
+#if PACKETVER >= 20121121
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20121114
+packetLen(0x093b, 12) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20121107
+packetLen(0x093b, 10) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20120314
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20120307
+packetLen(0x093b, 8) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20120207
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#endif
+
+// Packet: 0x093c
+#if PACKETVER >= 20121121
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20121114
+packetLen(0x093c, 8) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20121017
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20121010
+packetLen(0x093c, 8) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120911
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120905
+packetLen(0x093c, 12) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120808
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120801
+packetLen(0x093c, 26) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120724
+packetLen(0x093c, 8) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120503
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120424
+packetLen(0x093c, 5) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120228
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120221
+packetLen(0x093c, 8) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120207
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#endif
+
+// Packet: 0x093d
+#if PACKETVER >= 20120814
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20120808
+packetLen(0x093d, 5) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20120207
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#endif
+
+// Packet: 0x093e
+#if PACKETVER >= 20121212
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20121205
+packetLen(0x093e, 8) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20120919
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20120911
+packetLen(0x093e, 12) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20120529
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20120522
+packetLen(0x093e, 90) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20120404
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20120328
+packetLen(0x093e, 10) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20120207
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#endif
+
+// Packet: 0x093f
+#if PACKETVER >= 20121212
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20121205
+packetLen(0x093f, 10) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20120207
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#endif
+
+// Packet: 0x0940
+#if PACKETVER >= 20121227
+packetLen(0x0940, 10) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120830
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120822
+packetLen(0x0940, 12) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120814
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120808
+packetLen(0x0940, 10) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120626
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120618
+packetLen(0x0940, -1) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120515
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120508
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120410
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120404
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120207
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#endif
+
+// Packet: 0x0941
+#if PACKETVER >= 20121121
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20121114
+packetLen(0x0941, 26) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120822
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120814
+packetLen(0x0941, 90) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120808
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120801
+packetLen(0x0941, 8) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120529
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120522
+packetLen(0x0941, 6) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120503
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120424
+packetLen(0x0941, 6) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120320
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120314
+packetLen(0x0941, 26) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120307
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120228
+packetLen(0x0941, 6) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120207
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#endif
+
+// Packet: 0x0942
+#if PACKETVER >= 20121031
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20121024
+packetLen(0x0942, -1) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20121017
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20121010
+packetLen(0x0942, 6) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20120925
+packetLen(0x0942, 36) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20120307
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20120228
+packetLen(0x0942, 5) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20120207
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#endif
+
+// Packet: 0x0943
+#if PACKETVER >= 20120830
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20120822
+packetLen(0x0943, 8) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20120612
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20120604
+packetLen(0x0943, 4) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20120207
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#endif
+
+// Packet: 0x0944
+#if PACKETVER >= 20121121
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20121114
+packetLen(0x0944, -1) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20120911
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20120905
+packetLen(0x0944, 26) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20120710
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20120702
+packetLen(0x0944, 5) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20120522
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20120515
+packetLen(0x0944, 18) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20120207
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#endif
+
+// Packet: 0x0945
+#if PACKETVER >= 20121205
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20121128
+packetLen(0x0945, 5) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20121114
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20121107
+packetLen(0x0945, 90) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20120911
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20120905
+packetLen(0x0945, -1) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20120830
+packetLen(0x0945, 6) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20120801
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20120724
+packetLen(0x0945, 7) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20120417
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20120410
+packetLen(0x0945, -1) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20120328
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20120320
+packetLen(0x0945, 19) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20120307
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20120228
+packetLen(0x0945, 6) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20120207
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#endif
+
+// Packet: 0x0946
+#if PACKETVER >= 20121227
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20121218
+packetLen(0x0946, 36) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20121212
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20121205
+packetLen(0x0946, 10) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20121128
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20121121
+packetLen(0x0946, 5) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20121017
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20121010
+packetLen(0x0946, 19) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20120808
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20120801
+packetLen(0x0946, -1) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20120320
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20120314
+packetLen(0x0946, 6) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20120207
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#endif
+
+// Packet: 0x0947
+#if PACKETVER >= 20121227
+packetLen(0x0947, 6) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20121218
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20121212
+packetLen(0x0947, 5) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20121031
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20121024
+packetLen(0x0947, 6) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20121017
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20121010
+packetLen(0x0947, 10) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120522
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120515
+packetLen(0x0947, 10) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120503
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120424
+packetLen(0x0947, 4) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120410
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120404
+packetLen(0x0947, 36) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120307
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120228
+packetLen(0x0947, 6) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120207
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#endif
+
+// Packet: 0x0948
+#if PACKETVER >= 20121010
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20120925
+packetLen(0x0948, 18) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20120919
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20120911
+packetLen(0x0948, 10) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20120503
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20120424
+packetLen(0x0948, 6) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20120207
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#endif
+
+// Packet: 0x0949
+#if PACKETVER >= 20121121
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20121114
+packetLen(0x0949, 18) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20120919
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20120911
+packetLen(0x0949, 4) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20120207
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#endif
+
+// Packet: 0x094a
+#if PACKETVER >= 20121121
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20121114
+packetLen(0x094a, 10) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20120710
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20120702
+packetLen(0x094a, 6) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20120626
+packetLen(0x094a, -1) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20120207
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#endif
+
+// Packet: 0x094b
+#if PACKETVER >= 20121212
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20121205
+packetLen(0x094b, 6) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20121121
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20121114
+packetLen(0x094b, 19) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20120919
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20120911
+packetLen(0x094b, -1) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20120905
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20120830
+packetLen(0x094b, 18) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20120716
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20120710
+packetLen(0x094b, 5) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20120522
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20120515
+packetLen(0x094b, 5) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20120417
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20120410
+packetLen(0x094b, 19) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20120207
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#endif
+
+// Packet: 0x094c
+#if PACKETVER >= 20121017
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20121010
+packetLen(0x094c, 6) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20120604
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20120529
+packetLen(0x094c, 5) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20120207
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#endif
+
+// Packet: 0x094d
+#if PACKETVER >= 20121128
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20121121
+packetLen(0x094d, 8) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20121114
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20121107
+packetLen(0x094d, 5) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20120830
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20120822
+packetLen(0x094d, 36) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20120529
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20120522
+packetLen(0x094d, 26) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20120515
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20120508
+packetLen(0x094d, 6) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20120307
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20120228
+packetLen(0x094d, 8) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20120207
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#endif
+
+// Packet: 0x094e
+#if PACKETVER >= 20120830
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20120822
+packetLen(0x094e, 6) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20120808
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20120801
+packetLen(0x094e, 8) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20120716
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20120710
+packetLen(0x094e, 26) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20120612
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20120604
+packetLen(0x094e, 5) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20120207
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#endif
+
+// Packet: 0x094f
+#if PACKETVER >= 20121121
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20121114
+packetLen(0x094f, 6) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20120320
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20120314
+packetLen(0x094f, 8) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20120207
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#endif
+
+// Packet: 0x0950
+#if PACKETVER >= 20121205
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20121128
+packetLen(0x0950, 12) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20121121
+packetLen(0x0950, 5) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20121010
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20120925
+packetLen(0x0950, 5) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20120911
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20120905
+packetLen(0x0950, 6) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20120207
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#endif
+
+// Packet: 0x0951
+#if PACKETVER >= 20121218
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20121212
+packetLen(0x0951, 8) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20120702
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20120626
+packetLen(0x0951, 6) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20120404
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20120328
+packetLen(0x0951, 7) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20120207
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#endif
+
+// Packet: 0x0952
+#if PACKETVER >= 20121128
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20121121
+packetLen(0x0952, 6) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20120919
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20120911
+packetLen(0x0952, 90) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20120221
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20120214
+packetLen(0x0952, 19) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20120207
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#endif
+
+// Packet: 0x0953
+#if PACKETVER >= 20121227
+packetLen(0x0953, 8) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20121218
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20121212
+packetLen(0x0953, 6) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20121205
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20121128
+packetLen(0x0953, 6) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20120830
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20120822
+packetLen(0x0953, 18) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20120716
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20120710
+packetLen(0x0953, 4) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20120702
+packetLen(0x0953, 5) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20120221
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20120214
+packetLen(0x0953, -1) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20120207
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#endif
+
+// Packet: 0x0954
+#if PACKETVER >= 20121212
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20121205
+packetLen(0x0954, 7) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20121128
+packetLen(0x0954, 8) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20121121
+packetLen(0x0954, 36) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20121031
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20121024
+packetLen(0x0954, 90) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20120618
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20120612
+packetLen(0x0954, 36) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20120404
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20120328
+packetLen(0x0954, 6) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20120307
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20120228
+packetLen(0x0954, 6) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20120207
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#endif
+
+// Packet: 0x0955
+#if PACKETVER >= 20120830
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20120822
+packetLen(0x0955, -1) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20120503
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20120424
+packetLen(0x0955, 6) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20120207
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#endif
+
+// Packet: 0x0956
+#if PACKETVER >= 20121010
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20120925
+packetLen(0x0956, 8) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20120919
+packetLen(0x0956, 36) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20120716
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20120710
+packetLen(0x0956, -1) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20120529
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20120522
+packetLen(0x0956, 6) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20120207
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#endif
+
+// Packet: 0x0957
+#if PACKETVER >= 20121227
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20121218
+packetLen(0x0957, 18) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20121212
+packetLen(0x0957, 90) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20121128
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20121121
+packetLen(0x0957, 26) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20121017
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20120925
+packetLen(0x0957, 5) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20120801
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20120724
+packetLen(0x0957, 36) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20120522
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20120515
+packetLen(0x0957, 6) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20120221
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20120214
+packetLen(0x0957, 90) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20120207
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#endif
+
+// Packet: 0x0958
+#if PACKETVER >= 20121227
+packetLen(0x0958, 8) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20121128
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20121121
+packetLen(0x0958, 6) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20121010
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20120925
+packetLen(0x0958, 6) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20120919
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20120911
+packetLen(0x0958, 10) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20120410
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20120404
+packetLen(0x0958, 8) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20120207
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#endif
+
+// Packet: 0x0959
+#if PACKETVER >= 20121212
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20121205
+packetLen(0x0959, 26) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20121017
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20121010
+packetLen(0x0959, -1) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20120919
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20120911
+packetLen(0x0959, 7) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20120905
+packetLen(0x0959, 6) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20120801
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20120724
+packetLen(0x0959, 26) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20120207
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#endif
+
+// Packet: 0x095a
+#if PACKETVER >= 20120207
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#endif
+
+// Packet: 0x095b
+#if PACKETVER >= 20121218
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20121212
+packetLen(0x095b, 8) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20120830
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20120822
+packetLen(0x095b, 6) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20120612
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20120604
+packetLen(0x095b, 8) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20120503
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20120424
+packetLen(0x095b, -1) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20120207
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#endif
+
+// Packet: 0x095c
+#if PACKETVER >= 20121121
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20121114
+packetLen(0x095c, -1) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20121017
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20121010
+packetLen(0x095c, 5) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20120314
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20120307
+packetLen(0x095c, 4) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20120228
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20120221
+packetLen(0x095c, 5) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20120214
+packetLen(0x095c, 10) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20120207
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#endif
+
+// Packet: 0x095d
+#if PACKETVER >= 20121227
+packetLen(0x095d, -1) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20121031
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20121024
+packetLen(0x095d, 26) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20120710
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20120702
+packetLen(0x095d, 36) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20120404
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20120328
+packetLen(0x095d, 26) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20120207
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#endif
+
+// Packet: 0x095e
+#if PACKETVER >= 20121031
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20121024
+packetLen(0x095e, 6) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20121010
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20120925
+packetLen(0x095e, 10) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20120307
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20120228
+packetLen(0x095e, 5) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20120207
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#endif
+
+// Packet: 0x095f
+#if PACKETVER >= 20120207
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#endif
+
+// Packet: 0x0960
+#if PACKETVER >= 20121205
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20121128
+packetLen(0x0960, -1) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20121114
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20121107
+packetLen(0x0960, 6) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20121024
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20121017
+packetLen(0x0960, 5) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20120911
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20120905
+packetLen(0x0960, 90) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20120716
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20120710
+packetLen(0x0960, 90) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20120702
+packetLen(0x0960, 5) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20120207
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#endif
+
+// Packet: 0x0961
+#if PACKETVER >= 20120710
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20120702
+packetLen(0x0961, 4) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20120417
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20120410
+packetLen(0x0961, 36) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20120307
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20120228
+packetLen(0x0961, 10) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20120207
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#endif
+
+// Packet: 0x0962
+#if PACKETVER >= 20121227
+packetLen(0x0962, 26) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20121024
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20121017
+packetLen(0x0962, 6) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20120702
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20120626
+packetLen(0x0962, 8) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20120207
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#endif
+
+// Packet: 0x0963
+#if PACKETVER >= 20121114
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20121107
+packetLen(0x0963, 4) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20121010
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20120925
+packetLen(0x0963, 8) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20120919
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20120911
+packetLen(0x0963, 6) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20120801
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20120724
+packetLen(0x0963, 6) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20120612
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20120604
+packetLen(0x0963, 8) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20120404
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20120328
+packetLen(0x0963, 6) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20120314
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20120307
+packetLen(0x0963, 8) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20120221
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20120214
+packetLen(0x0963, 7) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20120207
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#endif
+
+// Packet: 0x0964
+#if PACKETVER >= 20121017
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20121010
+packetLen(0x0964, 26) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20120905
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20120830
+packetLen(0x0964, 6) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20120808
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20120801
+packetLen(0x0964, 12) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20120522
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20120515
+packetLen(0x0964, 6) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20120320
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20120314
+packetLen(0x0964, 18) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20120207
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#endif
+
+// Packet: 0x0965
+#if PACKETVER >= 20121218
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20121212
+packetLen(0x0965, -1) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20121121
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20121114
+packetLen(0x0965, 6) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20121031
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20121017
+packetLen(0x0965, 19) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20120801
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20120724
+packetLen(0x0965, 6) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20120503
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20120424
+packetLen(0x0965, 8) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20120207
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#endif
+
+// Packet: 0x0966
+#if PACKETVER >= 20121218
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20121212
+packetLen(0x0966, -1) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20121205
+packetLen(0x0966, 8) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20121114
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20121107
+packetLen(0x0966, 18) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120919
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120911
+packetLen(0x0966, 8) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120801
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120724
+packetLen(0x0966, 8) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120522
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120515
+packetLen(0x0966, 4) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120328
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120320
+packetLen(0x0966, 5) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120221
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120214
+packetLen(0x0966, 5) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120207
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#endif
+
+// Packet: 0x0967
+#if PACKETVER >= 20120911
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20120905
+packetLen(0x0967, 7) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20120822
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20120814
+packetLen(0x0967, -1) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20120404
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20120328
+packetLen(0x0967, 10) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20120228
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20120221
+packetLen(0x0967, 36) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20120207
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#endif
+
+// Packet: 0x0968
+#if PACKETVER >= 20121212
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20121205
+packetLen(0x0968, 5) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20120919
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20120911
+packetLen(0x0968, 5) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20120207
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#endif
+
+// Packet: 0x0969
+#if PACKETVER >= 20121017
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20121010
+packetLen(0x0969, 18) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20120822
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20120814
+packetLen(0x0969, 5) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20120228
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20120221
+packetLen(0x0969, 19) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20120207
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#endif
+
+// Packet: 0x096a
+#if PACKETVER >= 20121227
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20121212
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20121121
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20121114
+packetLen(0x096a, 8) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20121107
+packetLen(0x096a, 26) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20121031
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20121024
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20121017
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120925
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120919
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120911
+packetLen(0x096a, 36) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120905
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120830
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120814
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120808
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120724
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120716
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120626
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120612
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120604
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120529
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120522
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120515
+packetLen(0x096a, -1) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120508
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120503
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120424
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120417
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120410
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120404
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120328
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120307
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120228
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120221
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120214
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120207
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#endif
+
+// Packet: 0x096b
+#if PACKETVER >= 20120404
+packetLen(0x096b, 4) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20120207
+packetLen(0x096b, 3) // ZC_PRNPC_STATE
+#endif
+
+// Packet: 0x096c
+#if PACKETVER >= 20120207
+packetLen(0x096c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#endif
+
+// Packet: 0x096d
+#if PACKETVER >= 20120228
+packetLen(0x096d, -1) // ZC_MERGE_ITEM_OPEN
+#elif PACKETVER >= 20120214
+packetLen(0x096d, 2) // ZC_MERGE_ITEM_OPEN
+#endif
+
+// Packet: 0x096e
+#if PACKETVER >= 20120228
+packetLen(0x096e, -1) // CZ_REQ_MERGE_ITEM
+#elif PACKETVER >= 20120221
+packetLen(0x096e, 6) // CZ_REQ_MERGE_ITEM
+#elif PACKETVER >= 20120214
+packetLen(0x096e, 10) // CZ_REQ_MERGE_ITEM
+#endif
+
+// Packet: 0x096f
+#if PACKETVER >= 20120221
+packetLen(0x096f, 7) // ZC_ACK_MERGE_ITEM
+#elif PACKETVER >= 20120214
+packetLen(0x096f, 3) // ZC_ACK_MERGE_ITEM
+#endif
+
+// Packet: 0x0970
+#if PACKETVER >= 20120214
+packetLen(0x0970, 31) // CH_MAKE_CHAR_NOT_STATS
+#endif
+
+// Packet: 0x0971
+#if PACKETVER >= 20120214
+packetLen(0x0971, 6) // ZC_PARTY_RECRUIT_REFUSE_VOLUNTEER_TO_PM
+#endif
+
+// Packet: 0x0972
+#if PACKETVER >= 20120214
+packetLen(0x0972, -1) // ZC_SAY_DIALOG2
+#endif
+
+// Packet: 0x0973
+#if PACKETVER >= 20120214
+packetLen(0x0973, 7) // ZC_WAIT_DIALOG2
+#endif
+
+// Packet: 0x0974
+#if PACKETVER >= 20120221
+packetLen(0x0974, 2) // CZ_CANCEL_MERGE_ITEM
+#endif
+
+// Packet: 0x0975
+#if PACKETVER >= 20120221
+packetLen(0x0975, -1) // ZC_STORE_ITEMLIST_NORMAL_V2
+#endif
+
+// Packet: 0x0976
+#if PACKETVER >= 20120221
+packetLen(0x0976, -1) // ZC_STORE_ITEMLIST_EQUIP_V2
+#endif
+
+// Packet: 0x0977
+#if PACKETVER >= 20120228
+packetLen(0x0977, 14) // ZC_HP_INFO
+#elif PACKETVER >= 20120221
+packetLen(0x0977, 15) // ZC_HP_INFO
+#endif
+
+// Packet: 0x0978
+#if PACKETVER >= 20120328
+packetLen(0x0978, 6) // CZ_REQ_BEFORE_WORLD_INFO
+#endif
+
+// Packet: 0x0979
+#if PACKETVER >= 20120328
+packetLen(0x0979, 50) // ZC_ACK_BEFORE_WORLD_INFO
+#endif
+
+// Packet: 0x097a
+#if PACKETVER >= 20120410
+packetLen(0x097a, -1) // ZC_ALL_QUEST_LIST2
+#endif
+
+// Packet: 0x097b
+#if PACKETVER >= 20120417
+packetLen(0x097b, -1) // ZC_PERSONAL_INFOMATION2
+#endif
+
+// Packet: 0x097c
+#if PACKETVER >= 20120503
+packetLen(0x097c, 4) // CZ_REQ_RANKING
+#endif
+
+// Packet: 0x097d
+#if PACKETVER >= 20120503
+packetLen(0x097d, 288) // ZC_ACK_RANKING
+#endif
+
+// Packet: 0x097e
+#if PACKETVER >= 20120503
+packetLen(0x097e, 12) // ZC_UPDATE_RANKING_POINT
+#endif
+
+// Packet: 0x097f
+#if PACKETVER >= 20120503
+packetLen(0x097f, -1) // ZC_SELECTCART
+#endif
+
+// Packet: 0x0980
+#if PACKETVER >= 20120503
+packetLen(0x0980, 7) // CZ_SELECTCART
+#endif
+
+// Packet: 0x0981
+#if PACKETVER >= 20120515
+packetLen(0x0981, -1) // ZC_PERSONAL_INFOMATION_CHN
+#endif
+
+// Packet: 0x0982
+#if PACKETVER >= 20120522
+packetLen(0x0982, 7) // ZC_FATIGUE_CHN
+#elif PACKETVER >= 20120515
+packetLen(0x0982, 3) // ZC_FATIGUE_CHN
+#endif
+
+// Packet: 0x0983
+#if PACKETVER >= 20120529
+packetLen(0x0983, 29) // ZC_MSG_STATE_CHANGE3
+#endif
+
+// Packet: 0x0984
+#if PACKETVER >= 20120529
+packetLen(0x0984, 28) // ZC_EFST_SET_ENTER2
+#endif
+
+// Packet: 0x0985
+#if PACKETVER >= 20120604
+packetLen(0x0985, -1) // ZC_SKILL_POSTDELAY_LIST2
+#endif
+
+// Packet: 0x0986
+#if PACKETVER >= 20120626
+packetLen(0x0986, 10) // AC_SHUTDOWN_NOTIFY
+#elif PACKETVER >= 20120612
+packetLen(0x0986, 6) // AC_SHUTDOWN_NOTIFY
+#endif
+
+// Packet: 0x0987
+#if PACKETVER >= 20120702
+packetLen(0x0987, 63) // CA_LOGIN6
+#endif
+
+// Packet: 0x0988
+#if PACKETVER >= 20120716
+packetLen(0x0988, 6) // ZC_NOTIFY_CLAN_CONNECTINFO
+#elif PACKETVER >= 20120702
+packetLen(0x0988, 2) // ZC_NOTIFY_CLAN_CONNECTINFO
+#endif
+
+// Packet: 0x0989
+#if PACKETVER >= 20120716
+packetLen(0x0989, 2) // ZC_ACK_CLAN_LEAVE
+#elif PACKETVER >= 20120702
+packetLen(0x0989, 6) // ZC_ACK_CLAN_LEAVE
+#endif
+
+// Packet: 0x098a
+#if PACKETVER >= 20120702
+packetLen(0x098a, -1) // ZC_CLANINFO
+#endif
+
+// Packet: 0x098b
+#if PACKETVER >= 20120716
+packetLen(0x098b, 2) // AC_REQ_NEW_USER
+#endif
+
+// Packet: 0x098c
+#if PACKETVER >= 20120716
+packetLen(0x098c, 4) // CA_ACK_NEW_USER
+#endif
+
+// Packet: 0x098d
+#if PACKETVER >= 20120716
+packetLen(0x098d, -1) // CZ_CLAN_CHAT
+#endif
+
+// Packet: 0x098e
+#if PACKETVER >= 20120716
+packetLen(0x098e, -1) // ZC_NOTIFY_CLAN_CHAT
+#endif
+
+// Packet: 0x098f
+#if PACKETVER >= 20120724
+packetLen(0x098f, -1) // CH_DELETE_CHAR3_EXT
+#endif
+
+// Packet: 0x0990
+#if PACKETVER >= 20120925
+packetLen(0x0990, 31) // ZC_ITEM_PICKUP_ACK_V5
+#endif
+
+// Packet: 0x0991
+#if PACKETVER >= 20120925
+packetLen(0x0991, -1) // ZC_INVENTORY_ITEMLIST_NORMAL_V5
+#endif
+
+// Packet: 0x0992
+#if PACKETVER >= 20120925
+packetLen(0x0992, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V5
+#endif
+
+// Packet: 0x0993
+#if PACKETVER >= 20120925
+packetLen(0x0993, -1) // ZC_CART_ITEMLIST_NORMAL_V5
+#endif
+
+// Packet: 0x0994
+#if PACKETVER >= 20120925
+packetLen(0x0994, -1) // ZC_CART_ITEMLIST_EQUIP_V5
+#endif
+
+// Packet: 0x0995
+#if PACKETVER >= 20120925
+packetLen(0x0995, -1) // ZC_STORE_ITEMLIST_NORMAL_V5
+#endif
+
+// Packet: 0x0996
+#if PACKETVER >= 20120925
+packetLen(0x0996, -1) // ZC_STORE_ITEMLIST_EQUIP_V5
+#endif
+
+// Packet: 0x0997
+#if PACKETVER >= 20120925
+packetLen(0x0997, -1) // ZC_EQUIPWIN_MICROSCOPE_V5
+#endif
+
+// Packet: 0x0998
+#if PACKETVER >= 20120925
+packetLen(0x0998, 8) // CZ_REQ_WEAR_EQUIP_V5
+#endif
+
+// Packet: 0x0999
+#if PACKETVER >= 20120925
+packetLen(0x0999, 11) // ZC_ACK_WEAR_EQUIP_V5
+#endif
+
+// Packet: 0x099a
+#if PACKETVER >= 20120925
+packetLen(0x099a, 9) // ZC_ACK_TAKEOFF_EQUIP_V5
+#endif
+
+// Packet: 0x099b
+#if PACKETVER >= 20121010
+packetLen(0x099b, 8) // ZC_MAPPROPERTY_R2
+#endif
+
+// Packet: 0x099c
+#if PACKETVER >= 20121024
+packetLen(0x099c, 6) // CH_REQ_CHARINFO_PER_PAGE
+#endif
+
+// Packet: 0x099d
+#if PACKETVER >= 20121024
+packetLen(0x099d, -1) // HC_ACK_CHARINFO_PER_PAGE
+#endif
+
+// Packet: 0x099e
+#if PACKETVER >= 20121128
+packetLen(0x099e, 12) // HC_QUEUE_ORDER
+#endif
+
+// Packet: 0x099f
+#if PACKETVER >= 20121212
+packetLen(0x099f, -1) // ZC_SKILL_ENTRY4
+#endif
+
+// Packet: 0x09a0
+#if PACKETVER >= 20121212
+packetLen(0x09a0, 6) // HC_CHARLIST_NOTIFY
+#endif
+
+// Packet: 0x09a1
+#if PACKETVER >= 20121212
+packetLen(0x09a1, 2) // CH_CHARLIST_REQ
+#endif
+
+
+#endif /* COMMON_PACKETS2012_LEN_MAIN_H */
diff --git a/src/common/packets/packets2012_len_re.h b/src/common/packets/packets2012_len_re.h
new file mode 100644
index 000000000..58a8eadf8
--- /dev/null
+++ b/src/common/packets/packets2012_len_re.h
@@ -0,0 +1,8498 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2012_LEN_RE_H
+#define COMMON_PACKETS2012_LEN_RE_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 146) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 22) // CZ_ENTER
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 44) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 10) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, 14)
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+packetLen(0x0094, 19) // CZ_REQNAME
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+packetLen(0x00a7, 9)
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 9) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+packetLen(0x00f7, 17) // CZ_REQUEST_TIME
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+packetLen(0x0113, 25) // CZ_USE_SKILL
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 37) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+#if PACKETVER >= 20121227
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20121128
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20121121
+packetLen(0x0202, 10) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20121017
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20121010
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120925
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120919
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120814
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120808
+packetLen(0x0202, 12) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120724
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120716
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120710
+packetLen(0x0202, 6) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120626
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120612
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120515
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120508
+packetLen(0x0202, 90) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120502
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120424
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120417
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120214
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120131
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120120
+packetLen(0x0202, 12) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120117
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120110
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20120103
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x020f
+packetLen(0x020f, 10) // CZ_REQ_PVPPOINT
+
+// Packet: 0x0210
+packetLen(0x0210, 22) // ZC_ACK_PVPPOINT
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+
+// Packet: 0x022b
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+
+// Packet: 0x022c
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+
+// Packet: 0x022d
+#if PACKETVER >= 20121107
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20121031
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120925
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120919
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120911
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120905
+packetLen(0x022d, 8) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120830
+packetLen(0x022d, 12) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120724
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120716
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120626
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120612
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120508
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120502
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120424
+packetLen(0x022d, 12) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120417
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120410
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120404
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120228
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120221
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120214
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120207
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120131
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120110
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20120103
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#endif
+
+// Packet: 0x022e
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+
+// Packet: 0x022f
+packetLen(0x022f, 5) // ZC_FEED_MER
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+#if PACKETVER >= 20121024
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20121017
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120925
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120919
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120724
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120716
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120626
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120612
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120529
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120523
+packetLen(0x023b, -1) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120515
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120508
+packetLen(0x023b, 8) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120502
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120424
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120417
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120214
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120207
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120120
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120117
+packetLen(0x023b, 4) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120110
+packetLen(0x023b, 6) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20120103
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#endif
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+
+// Packet: 0x0275
+packetLen(0x0275, 37) // CH_ENTER2
+
+// Packet: 0x0276
+packetLen(0x0276, -1) // AC_ACCEPT_LOGIN2
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+#if PACKETVER >= 20121107
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20121031
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120925
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120919
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120822
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120814
+packetLen(0x0281, 5) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120808
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120724
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120716
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120626
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120612
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120601
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120529
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120508
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120502
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120424
+packetLen(0x0281, 26) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120417
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120404
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120328
+packetLen(0x0281, 6) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120320
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120214
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120207
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120117
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120110
+packetLen(0x0281, 36) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20120103
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#endif
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+
+// Packet: 0x0288
+packetLen(0x0288, -1) // CZ_PC_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0289
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0296
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0297
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0298
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+
+// Packet: 0x0299
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+
+// Packet: 0x029a
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+
+// Packet: 0x029b
+packetLen(0x029b, 80) // ZC_MER_INIT
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a5
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+
+// Packet: 0x02a6
+#if PACKETVER >= 20120523
+packetLen(0x02a6, -1) // ZC_HACKSH_CPX_MSG
+#endif
+
+// Packet: 0x02a7
+#if PACKETVER >= 20120523
+packetLen(0x02a7, -1) // CZ_HACKSH_CPX_MSG
+#endif
+
+// Packet: 0x02aa
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+
+// Packet: 0x02ab
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+
+// Packet: 0x02ac
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+
+// Packet: 0x02ad
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+
+// Packet: 0x02b0
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+
+// Packet: 0x02b1
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+
+// Packet: 0x02b2
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+
+// Packet: 0x02b3
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+
+// Packet: 0x02b4
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+
+// Packet: 0x02b5
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+
+// Packet: 0x02b6
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+
+// Packet: 0x02b7
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+
+// Packet: 0x02b8
+packetLen(0x02b8, 22) // ZC_ITEM_PICKUP_PARTY
+
+// Packet: 0x02b9
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+
+// Packet: 0x02ba
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+
+// Packet: 0x02bb
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+
+// Packet: 0x02bc
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+
+// Packet: 0x02c1
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+
+// Packet: 0x02c2
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+
+// Packet: 0x02c4
+#if PACKETVER >= 20121227
+packetLen(0x02c4, 19) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20120716
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20120710
+packetLen(0x02c4, 10) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20120515
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20120508
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20120410
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20120404
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20120314
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20120307
+packetLen(0x02c4, 6) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20120131
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20120120
+packetLen(0x02c4, 8) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20120103
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#endif
+
+// Packet: 0x02c5
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c6
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+
+// Packet: 0x02c7
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c8
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+
+// Packet: 0x02c9
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+
+// Packet: 0x02ca
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+
+// Packet: 0x02cb
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+
+// Packet: 0x02cc
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+
+// Packet: 0x02cd
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+
+// Packet: 0x02ce
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+
+// Packet: 0x02cf
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+
+// Packet: 0x02d0
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d1
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d2
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d3
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+
+// Packet: 0x02d4
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+
+// Packet: 0x02d5
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+
+// Packet: 0x02d6
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d7
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d8
+packetLen(0x02d8, 10) // CZ_CONFIG
+
+// Packet: 0x02d9
+packetLen(0x02d9, 10) // ZC_CONFIG
+
+// Packet: 0x02da
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+
+// Packet: 0x02db
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+
+// Packet: 0x02dc
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+
+// Packet: 0x02dd
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+
+// Packet: 0x02de
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+
+// Packet: 0x02df
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+
+// Packet: 0x02e0
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+
+// Packet: 0x02e1
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+
+// Packet: 0x02e2
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+
+// Packet: 0x02e3
+packetLen(0x02e3, 22) // CZ_USE_SKILL_NEW_JAPEN
+
+// Packet: 0x02e4
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+
+// Packet: 0x02e5
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+
+// Packet: 0x02e6
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+
+// Packet: 0x02e7
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+
+// Packet: 0x02e8
+packetLen(0x02e8, -1) // ZC_NORMAL_ITEMLIST3
+
+// Packet: 0x02e9
+packetLen(0x02e9, -1) // ZC_CART_NORMAL_ITEMLIST3
+
+// Packet: 0x02ea
+packetLen(0x02ea, -1) // ZC_STORE_NORMAL_ITEMLIST3
+
+// Packet: 0x02eb
+packetLen(0x02eb, 13) // ZC_ACCEPT_ENTER2
+
+// Packet: 0x02ec
+packetLen(0x02ec, 67) // ZC_NOTIFY_MOVEENTRY4
+
+// Packet: 0x02ed
+packetLen(0x02ed, 59) // ZC_NOTIFY_NEWENTRY4
+
+// Packet: 0x02ee
+packetLen(0x02ee, 60) // ZC_NOTIFY_STANDENTRY4
+
+// Packet: 0x02ef
+packetLen(0x02ef, 8) // ZC_NOTIFY_FONT
+
+// Packet: 0x02f0
+packetLen(0x02f0, 10) // ZC_PROGRESS
+
+// Packet: 0x02f1
+packetLen(0x02f1, 2) // CZ_PROGRESS
+
+// Packet: 0x02f2
+packetLen(0x02f2, 2) // ZC_PROGRESS_CANCEL
+
+// Packet: 0x02f3
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+
+// Packet: 0x02f4
+packetLen(0x02f4, 3) // ZC_IRMAIL_SEND_RES
+
+// Packet: 0x02f5
+packetLen(0x02f5, 7) // ZC_IRMAIL_NOTIFY
+
+// Packet: 0x02f6
+packetLen(0x02f6, 7) // CZ_IRMAIL_LIST
+
+// Packet: 0x035c
+packetLen(0x035c, 2) // CZ_OPEN_SIMPLE_CASHSHOP_ITEMLIST
+
+// Packet: 0x035d
+packetLen(0x035d, -1) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+
+// Packet: 0x035e
+packetLen(0x035e, 2) // CZ_CLOSE_WINDOW
+
+// Packet: 0x035f
+#if PACKETVER >= 20121227
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20121218
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20121212
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20121205
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20121107
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20121031
+packetLen(0x035f, 5) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20121024
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20121017
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120925
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120919
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120905
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120830
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120814
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120808
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120801
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120724
+packetLen(0x035f, 8) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120716
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120626
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120612
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120601
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120529
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120515
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120502
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120424
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120417
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120410
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120404
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120328
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120314
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120228
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120221
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120214
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120131
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120117
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20120103
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#endif
+
+// Packet: 0x0360
+#if PACKETVER >= 20121227
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20121218
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20121212
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20121205
+packetLen(0x0360, 5) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20121114
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20121031
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20121024
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20121017
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120925
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120919
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120905
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120830
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120814
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120808
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120801
+packetLen(0x0360, -1) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120724
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120716
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120626
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120612
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120601
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120529
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120515
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120502
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120424
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120410
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120328
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120307
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120228
+packetLen(0x0360, 90) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120221
+packetLen(0x0360, 5) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120214
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120131
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120120
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120117
+packetLen(0x0360, -1) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20120103
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#endif
+
+// Packet: 0x0361
+#if PACKETVER >= 20121227
+packetLen(0x0361, 36) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20121212
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20121205
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20121114
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20121107
+packetLen(0x0361, 36) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120925
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120919
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120822
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120814
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120724
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120716
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120626
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120612
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120601
+packetLen(0x0361, 6) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120529
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120523
+packetLen(0x0361, 10) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120508
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120502
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120424
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120417
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120214
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120207
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120131
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120120
+packetLen(0x0361, 19) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120117
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120110
+packetLen(0x0361, 12) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20120103
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#endif
+
+// Packet: 0x0362
+#if PACKETVER >= 20121227
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20121218
+packetLen(0x0362, 10) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20121212
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20121205
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20121128
+packetLen(0x0362, 19) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20121107
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20121031
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120925
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120919
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120814
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120808
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120724
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120716
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120710
+packetLen(0x0362, 18) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120626
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120612
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120601
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120529
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120508
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120502
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120424
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120417
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120410
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120404
+packetLen(0x0362, 8) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120328
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120320
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120214
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120207
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120131
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120120
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120117
+packetLen(0x0362, 26) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20120103
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#endif
+
+// Packet: 0x0363
+#if PACKETVER >= 20121227
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20121218
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20121205
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20121128
+packetLen(0x0363, 26) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20121107
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20121031
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120925
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120919
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120814
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120808
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120724
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120716
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120710
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120702
+packetLen(0x0363, 19) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120612
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120601
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120529
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120515
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120508
+packetLen(0x0363, -1) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120502
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120424
+packetLen(0x0363, 18) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120417
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120328
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120320
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120228
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120221
+packetLen(0x0363, 18) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120214
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120207
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120131
+packetLen(0x0363, 12) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120120
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120117
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20120103
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#endif
+
+// Packet: 0x0364
+#if PACKETVER >= 20121121
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20121114
+packetLen(0x0364, 36) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20121107
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20121031
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120925
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120919
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120814
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120808
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120801
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120724
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120716
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120710
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120702
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120626
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120612
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120601
+packetLen(0x0364, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120529
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120523
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120515
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120508
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120502
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120424
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120417
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120410
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120404
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120328
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120320
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120314
+packetLen(0x0364, 19) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120214
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120207
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120120
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120117
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20120103
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#endif
+
+// Packet: 0x0365
+#if PACKETVER >= 20121121
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20121114
+packetLen(0x0365, 5) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20121107
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20121031
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20121024
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20121017
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120925
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120919
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120911
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120905
+packetLen(0x0365, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120830
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120822
+packetLen(0x0365, 26) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120814
+packetLen(0x0365, 6) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120808
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120724
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120716
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120710
+packetLen(0x0365, 26) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120702
+packetLen(0x0365, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120626
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120612
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120601
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120529
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120508
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120502
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120424
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120417
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120328
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120320
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120214
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120207
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120131
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120120
+packetLen(0x0365, 6) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120117
+packetLen(0x0365, 10) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20120103
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#endif
+
+// Packet: 0x0366
+#if PACKETVER >= 20121227
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20121218
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20121107
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20121031
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20121024
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20121017
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120925
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120919
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120905
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120830
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120814
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120808
+packetLen(0x0366, 19) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120724
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120716
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120702
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120626
+packetLen(0x0366, 10) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120612
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120601
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120529
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120523
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120515
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120508
+packetLen(0x0366, 26) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120502
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120424
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120410
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120404
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120328
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120307
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120228
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120221
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120214
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120207
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120120
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120117
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20120103
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#endif
+
+// Packet: 0x0367
+#if PACKETVER >= 20120716
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20120710
+packetLen(0x0367, 8) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20120314
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20120307
+packetLen(0x0367, 8) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20120207
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20120131
+packetLen(0x0367, 8) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20120120
+packetLen(0x0367, 10) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20120117
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20120110
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20120103
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#endif
+
+// Packet: 0x0368
+#if PACKETVER >= 20121227
+packetLen(0x0368, -1) // CZ_REQNAME2
+#elif PACKETVER >= 20121218
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20121212
+packetLen(0x0368, 26) // CZ_REQNAME2
+#elif PACKETVER >= 20121107
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20121031
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20121024
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20121017
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20120925
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20120919
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20120905
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20120830
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20120814
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20120808
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20120724
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20120716
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20120626
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20120612
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20120601
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20120529
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20120515
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20120417
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20120328
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20120307
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20120228
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20120221
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20120214
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20120207
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20120131
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20120120
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20120117
+packetLen(0x0368, 7) // CZ_REQNAME2
+#elif PACKETVER >= 20120103
+packetLen(0x0368, 6) // CZ_REQNAME2
+#endif
+
+// Packet: 0x0369
+#if PACKETVER >= 20121227
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20121218
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20121212
+packetLen(0x0369, 26) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20121107
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20121031
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20121024
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20121017
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120925
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120919
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120905
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120830
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120814
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120808
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120724
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120716
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120626
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120612
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120601
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120529
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120523
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120515
+packetLen(0x0369, 26) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120502
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120424
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120404
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120328
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120320
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120314
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120307
+packetLen(0x0369, 26) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120228
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120221
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120214
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120131
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120117
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20120103
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#endif
+
+// Packet: 0x03dd
+packetLen(0x03dd, 18) // AHC_GAME_GUARD
+
+// Packet: 0x03de
+packetLen(0x03de, 18) // CAH_ACK_GAME_GUARD
+
+// Packet: 0x0436
+#if PACKETVER >= 20121031
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20121024
+packetLen(0x0436, 5) // CZ_ENTER2
+#elif PACKETVER >= 20120925
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20120919
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20120905
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20120830
+packetLen(0x0436, 26) // CZ_ENTER2
+#elif PACKETVER >= 20120814
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20120808
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20120724
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20120716
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20120710
+packetLen(0x0436, 7) // CZ_ENTER2
+#elif PACKETVER >= 20120626
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20120612
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20120601
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20120529
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20120508
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20120502
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20120424
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20120417
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20120328
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20120320
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20120214
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20120207
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20120131
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20120120
+packetLen(0x0436, 5) // CZ_ENTER2
+#elif PACKETVER >= 20120117
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20120103
+packetLen(0x0436, 4) // CZ_ENTER2
+#endif
+
+// Packet: 0x0437
+#if PACKETVER >= 20121227
+packetLen(0x0437, 6) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20121218
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20121128
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20121114
+packetLen(0x0437, 6) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20121107
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20121031
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20121024
+packetLen(0x0437, 10) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20121017
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120925
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120919
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120905
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120830
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120822
+packetLen(0x0437, 6) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120814
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120808
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120724
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120716
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120626
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120612
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120601
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120529
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120515
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120502
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120424
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120404
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120328
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120307
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120228
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120221
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120214
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120131
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120120
+packetLen(0x0437, -1) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120117
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20120103
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#endif
+
+// Packet: 0x0438
+#if PACKETVER >= 20121227
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20121218
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20121107
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20121031
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20121024
+packetLen(0x0438, 12) // CZ_USE_SKILL2
+#elif PACKETVER >= 20121017
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120925
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120919
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120911
+packetLen(0x0438, 6) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120822
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120814
+packetLen(0x0438, 6) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120808
+packetLen(0x0438, 90) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120801
+packetLen(0x0438, 18) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120724
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120716
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120626
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120612
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120601
+packetLen(0x0438, 19) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120529
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120515
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120502
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120424
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120404
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120328
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120307
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120228
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120221
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120214
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120131
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120117
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20120103
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#endif
+
+// Packet: 0x0439
+packetLen(0x0439, 8) // CZ_USE_ITEM2
+
+// Packet: 0x043d
+packetLen(0x043d, 8) // ZC_SKILL_POSTDELAY
+
+// Packet: 0x043e
+packetLen(0x043e, -1) // ZC_SKILL_POSTDELAY_LIST
+
+// Packet: 0x043f
+packetLen(0x043f, 25) // ZC_MSG_STATE_CHANGE2
+
+// Packet: 0x0440
+packetLen(0x0440, 10) // ZC_MILLENNIUMSHIELD
+
+// Packet: 0x0441
+packetLen(0x0441, 4) // ZC_SKILLINFO_DELETE
+
+// Packet: 0x0442
+packetLen(0x0442, -1) // ZC_SKILL_SELECT_REQUEST
+
+// Packet: 0x0443
+packetLen(0x0443, 8) // CZ_SKILL_SELECT_RESPONSE
+
+// Packet: 0x0444
+packetLen(0x0444, -1) // ZC_SIMPLE_CASH_POINT_ITEMLIST
+
+// Packet: 0x0445
+packetLen(0x0445, 10) // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0446
+packetLen(0x0446, 14) // ZC_QUEST_NOTIFY_EFFECT
+
+// Packet: 0x0447
+packetLen(0x0447, 2) // CZ_BLOCKING_PLAY_CANCEL
+
+// Packet: 0x0448
+packetLen(0x0448, -1) // HC_CHARACTER_LIST
+
+// Packet: 0x0449
+#if PACKETVER >= 20120523
+packetLen(0x0449, 4) // ZC_HACKSH_ERROR_MSG
+#endif
+
+// Packet: 0x044a
+packetLen(0x044a, 6) // CZ_CLIENT_VERSION
+
+// Packet: 0x044b
+packetLen(0x044b, 2) // CZ_CLOSE_SIMPLECASH_SHOP
+
+// Packet: 0x07d7
+packetLen(0x07d7, 8) // CZ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d8
+packetLen(0x07d8, 8) // ZC_REQ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d9
+packetLen(0x07d9, 268) // ZC_SHORTCUT_KEY_LIST_V2
+
+// Packet: 0x07da
+packetLen(0x07da, 6) // CZ_CHANGE_GROUP_MASTER
+
+// Packet: 0x07db
+packetLen(0x07db, 8) // ZC_HO_PAR_CHANGE
+
+// Packet: 0x07dc
+packetLen(0x07dc, 6) // CZ_SEEK_PARTY
+
+// Packet: 0x07dd
+packetLen(0x07dd, 54) // ZC_SEEK_PARTY
+
+// Packet: 0x07de
+packetLen(0x07de, 30) // CZ_SEEK_PARTY_MEMBER
+
+// Packet: 0x07df
+packetLen(0x07df, 54) // ZC_SEEK_PARTY_MEMBER
+
+// Packet: 0x07e0
+packetLen(0x07e0, 58) // ZC_ES_NOTI_MYINFO
+
+// Packet: 0x07e1
+packetLen(0x07e1, 15) // ZC_SKILLINFO_UPDATE2
+
+// Packet: 0x07e2
+packetLen(0x07e2, 8) // ZC_MSG_VALUE
+
+// Packet: 0x07e3
+packetLen(0x07e3, 6) // ZC_ITEMLISTWIN_OPEN
+
+// Packet: 0x07e4
+#if PACKETVER >= 20121107
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20121031
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20121010
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120925
+packetLen(0x07e4, 4) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120919
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120814
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120808
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120724
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120710
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120626
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120612
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120601
+packetLen(0x07e4, 10) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120529
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120508
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120502
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120424
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120417
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120410
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120404
+packetLen(0x07e4, 90) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120328
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120320
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120214
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120207
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120117
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120110
+packetLen(0x07e4, 19) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20120103
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#endif
+
+// Packet: 0x07e5
+packetLen(0x07e5, 4) // CH_ENTER_CHECKBOT
+
+// Packet: 0x07e6
+packetLen(0x07e6, 8) // ZC_MSG_SKILL
+
+// Packet: 0x07e7
+packetLen(0x07e7, 32) // CH_CHECKBOT
+
+// Packet: 0x07e8
+packetLen(0x07e8, -1) // HC_CHECKBOT
+
+// Packet: 0x07e9
+packetLen(0x07e9, 5) // HC_CHECKBOT_RESULT
+
+// Packet: 0x07ea
+packetLen(0x07ea, 2) // CZ_BATTLE_FIELD_LIST
+
+// Packet: 0x07eb
+packetLen(0x07eb, -1) // ZC_BATTLE_FIELD_LIST
+
+// Packet: 0x07ec
+#if PACKETVER >= 20121205
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20121128
+packetLen(0x07ec, 26) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20121107
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20121031
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120925
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120919
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120822
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120814
+packetLen(0x07ec, 12) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120808
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120724
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120716
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120626
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120612
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120601
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120529
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120508
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120502
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120424
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120417
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120328
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120320
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120307
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120228
+packetLen(0x07ec, 5) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120214
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120207
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120131
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120120
+packetLen(0x07ec, 26) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120117
+packetLen(0x07ec, 36) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20120103
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#endif
+
+// Packet: 0x07ed
+packetLen(0x07ed, 10) // ZC_JOIN_BATTLE_FIELD
+
+// Packet: 0x07ee
+packetLen(0x07ee, 6) // CZ_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07ef
+packetLen(0x07ef, 8) // ZC_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07f0
+packetLen(0x07f0, 6) // CZ_REQ_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f1
+packetLen(0x07f1, 18) // ZC_ACK_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f2
+packetLen(0x07f2, 8) // ZC_BATTLE_NOTI_START_STEP
+
+// Packet: 0x07f3
+packetLen(0x07f3, 6) // ZC_BATTLE_JOIN_NOTI_DEFER
+
+// Packet: 0x07f4
+packetLen(0x07f4, 3) // ZC_BATTLE_JOIN_DISABLE_STATE
+
+// Packet: 0x07f5
+packetLen(0x07f5, 6) // CZ_GM_FULLSTRIP
+
+// Packet: 0x07f6
+packetLen(0x07f6, 14) // ZC_NOTIFY_EXP
+
+// Packet: 0x07f7
+packetLen(0x07f7, -1) // ZC_NOTIFY_MOVEENTRY7
+
+// Packet: 0x07f8
+packetLen(0x07f8, -1) // ZC_NOTIFY_NEWENTRY5
+
+// Packet: 0x07f9
+packetLen(0x07f9, -1) // ZC_NOTIFY_STANDENTRY5
+
+// Packet: 0x07fa
+packetLen(0x07fa, 8) // ZC_DELETE_ITEM_FROM_BODY
+
+// Packet: 0x07fb
+packetLen(0x07fb, 25) // ZC_USESKILL_ACK2
+
+// Packet: 0x07fc
+packetLen(0x07fc, 10) // ZC_CHANGE_GROUP_MASTER
+
+// Packet: 0x07fd
+packetLen(0x07fd, -1) // ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN
+
+// Packet: 0x07fe
+packetLen(0x07fe, 26) // ZC_PLAY_NPC_BGM
+
+// Packet: 0x0800
+packetLen(0x0800, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0801
+packetLen(0x0801, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0802
+#if PACKETVER >= 20121205
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20121128
+packetLen(0x0802, 36) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20121107
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20121031
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120925
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120919
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120905
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120830
+packetLen(0x0802, 36) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120814
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120808
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120724
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120716
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120710
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120702
+packetLen(0x0802, -1) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120626
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120612
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120601
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120529
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120508
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120502
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120424
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120417
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120328
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120320
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120214
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120207
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120131
+packetLen(0x0802, 90) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120120
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20120103
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// Packet: 0x0803
+packetLen(0x0803, 4) // ZC_PARTY_BOOKING_ACK_REGISTER
+
+// Packet: 0x0804
+packetLen(0x0804, 14) // CZ_PARTY_BOOKING_REQ_SEARCH
+
+// Packet: 0x0805
+packetLen(0x0805, -1) // ZC_PARTY_BOOKING_ACK_SEARCH
+
+// Packet: 0x0806
+packetLen(0x0806, 2) // CZ_PARTY_BOOKING_REQ_DELETE
+
+// Packet: 0x0807
+packetLen(0x0807, 4) // ZC_PARTY_BOOKING_ACK_DELETE
+
+// Packet: 0x0808
+packetLen(0x0808, 14) // CZ_PARTY_BOOKING_REQ_UPDATE
+
+// Packet: 0x0809
+packetLen(0x0809, 50) // ZC_PARTY_BOOKING_NOTIFY_INSERT
+
+// Packet: 0x080a
+packetLen(0x080a, 18) // ZC_PARTY_BOOKING_NOTIFY_UPDATE
+
+// Packet: 0x080b
+packetLen(0x080b, 6) // ZC_PARTY_BOOKING_NOTIFY_DELETE
+
+// Packet: 0x080c
+packetLen(0x080c, 2) // CZ_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080d
+packetLen(0x080d, 3) // ZC_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080e
+packetLen(0x080e, 14) // ZC_NOTIFY_HP_TO_GROUPM_R2
+
+// Packet: 0x080f
+packetLen(0x080f, 20) // ZC_ADD_EXCHANGE_ITEM2
+
+// Packet: 0x0810
+packetLen(0x0810, 3) // ZC_OPEN_BUYING_STORE
+
+// Packet: 0x0811
+#if PACKETVER >= 20121227
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20121218
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20121107
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20121031
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20121024
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20121017
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120925
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120919
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120905
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120830
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120814
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120808
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120724
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120716
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120710
+packetLen(0x0811, 6) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120626
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120612
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120601
+packetLen(0x0811, 12) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120523
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120515
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120502
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120424
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120404
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120328
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120307
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120228
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120221
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120214
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120207
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120131
+packetLen(0x0811, 8) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120120
+packetLen(0x0811, 6) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120117
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20120103
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#endif
+
+// Packet: 0x0812
+packetLen(0x0812, 8) // ZC_FAILED_OPEN_BUYING_STORE_TO_BUYER
+
+// Packet: 0x0813
+packetLen(0x0813, -1) // ZC_MYITEMLIST_BUYING_STORE
+
+// Packet: 0x0814
+packetLen(0x0814, 86) // ZC_BUYING_STORE_ENTRY
+
+// Packet: 0x0815
+#if PACKETVER >= 20121227
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20121218
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20121212
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20121205
+packetLen(0x0815, 6) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20121121
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20121114
+packetLen(0x0815, 90) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20121107
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20121031
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20121024
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20121017
+packetLen(0x0815, 8) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20121010
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120925
+packetLen(0x0815, 12) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120919
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120905
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120830
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120822
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120814
+packetLen(0x0815, 6) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120808
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120801
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120716
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120710
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120702
+packetLen(0x0815, 26) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120626
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120612
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120601
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120529
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120515
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120502
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120424
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120404
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120328
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120307
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120228
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120221
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120214
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120207
+packetLen(0x0815, 36) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120131
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120117
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20120103
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#endif
+
+// Packet: 0x0816
+packetLen(0x0816, 6) // ZC_DISAPPEAR_BUYING_STORE_ENTRY
+
+// Packet: 0x0817
+#if PACKETVER >= 20121218
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20121212
+packetLen(0x0817, 10) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20121031
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20121024
+packetLen(0x0817, 7) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20121017
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20121010
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20120911
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20120905
+packetLen(0x0817, 36) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20120523
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20120515
+packetLen(0x0817, -1) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20120508
+packetLen(0x0817, 4) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20120502
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20120424
+packetLen(0x0817, 8) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20120214
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20120207
+packetLen(0x0817, -1) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20120103
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#endif
+
+// Packet: 0x0818
+packetLen(0x0818, -1) // ZC_ACK_ITEMLIST_BUYING_STORE
+
+// Packet: 0x0819
+#if PACKETVER >= 20121227
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20121218
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20121107
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20121031
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20121024
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20121017
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20121010
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120925
+packetLen(0x0819, 19) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120919
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120911
+packetLen(0x0819, 8) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120905
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120830
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120814
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120808
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120724
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120716
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120702
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120626
+packetLen(0x0819, 6) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120618
+packetLen(0x0819, 36) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120612
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120601
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120529
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120515
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120502
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120424
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120404
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120328
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120314
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120228
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120221
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120214
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120131
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120117
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20120103
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#endif
+
+// Packet: 0x081a
+packetLen(0x081a, 4) // ZC_FAILED_TRADE_BUYING_STORE_TO_BUYER
+
+// Packet: 0x081b
+packetLen(0x081b, 10) // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+
+// Packet: 0x081c
+packetLen(0x081c, 10) // ZC_ITEM_DELETE_BUYING_STORE
+
+// Packet: 0x081d
+packetLen(0x081d, 22) // ZC_EL_INIT
+
+// Packet: 0x081e
+packetLen(0x081e, 8) // ZC_EL_PAR_CHANGE
+
+// Packet: 0x081f
+packetLen(0x081f, -1) // ZC_BROADCAST4
+
+// Packet: 0x0820
+packetLen(0x0820, 11) // ZC_COSTUME_SPRITE_CHANGE
+
+// Packet: 0x0821
+packetLen(0x0821, 2) // AC_OTP_USER
+
+// Packet: 0x0822
+packetLen(0x0822, 9) // CA_OTP_AUTH_REQ
+
+// Packet: 0x0823
+packetLen(0x0823, -1) // AC_OTP_AUTH_ACK
+
+// Packet: 0x0824
+packetLen(0x0824, 6) // ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER
+
+// Packet: 0x0825
+packetLen(0x0825, -1) // CA_SSO_LOGIN_REQ
+
+// Packet: 0x0827
+packetLen(0x0827, 6) // CH_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0828
+packetLen(0x0828, 14) // HC_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0829
+packetLen(0x0829, 12) // CH_DELETE_CHAR3
+
+// Packet: 0x082a
+packetLen(0x082a, 10) // HC_DELETE_CHAR3
+
+// Packet: 0x082b
+packetLen(0x082b, 6) // CH_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082c
+packetLen(0x082c, 10) // HC_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082d
+packetLen(0x082d, -1) // HC_ACCEPT_ENTER2
+
+// Packet: 0x0835
+#if PACKETVER >= 20121010
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20120925
+packetLen(0x0835, 90) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20120905
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20120830
+packetLen(0x0835, 8) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20120801
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20120724
+packetLen(0x0835, 26) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20120103
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#endif
+
+// Packet: 0x0836
+packetLen(0x0836, -1) // ZC_SEARCH_STORE_INFO_ACK
+
+// Packet: 0x0837
+packetLen(0x0837, 3) // ZC_SEARCH_STORE_INFO_FAILED
+
+// Packet: 0x0838
+#if PACKETVER >= 20121227
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20121218
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20121121
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20121114
+packetLen(0x0838, 26) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20121107
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20121031
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20121024
+packetLen(0x0838, 18) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20121017
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20121010
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120925
+packetLen(0x0838, 6) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120919
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120905
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120830
+packetLen(0x0838, 5) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120814
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120808
+packetLen(0x0838, 26) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120724
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120716
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120702
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120626
+packetLen(0x0838, -1) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120612
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120601
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120529
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120515
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120502
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120424
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120404
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120328
+packetLen(0x0838, 8) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120307
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120228
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120221
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120214
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120207
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120131
+packetLen(0x0838, 5) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120120
+packetLen(0x0838, 26) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120117
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120110
+packetLen(0x0838, 5) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20120103
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#endif
+
+// Packet: 0x0839
+packetLen(0x0839, 66) // ZC_ACK_BAN_GUILD_SSO
+
+// Packet: 0x083a
+packetLen(0x083a, 5) // ZC_OPEN_SEARCH_STORE_INFO
+
+// Packet: 0x083b
+packetLen(0x083b, 2) // CZ_CLOSE_SEARCH_STORE_INFO
+
+// Packet: 0x083c
+#if PACKETVER >= 20121227
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20121218
+packetLen(0x083c, 6) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20121107
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20121031
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20121024
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20121017
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120925
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120919
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120905
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120830
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120814
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120808
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120724
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120716
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120626
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120612
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120601
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120529
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120515
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120502
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120424
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120404
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120328
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120314
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120228
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120221
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120214
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120131
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120117
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20120103
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#endif
+
+// Packet: 0x083d
+packetLen(0x083d, 6) // ZC_SSILIST_ITEM_CLICK_ACK
+
+// Packet: 0x083e
+packetLen(0x083e, 26) // AC_REFUSE_LOGIN2
+
+// Packet: 0x0840
+packetLen(0x0840, -1) // HC_NOTIFY_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0841
+packetLen(0x0841, 4) // CH_SELECT_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0842
+packetLen(0x0842, 6) // CZ_RECALL_SSO
+
+// Packet: 0x0843
+packetLen(0x0843, 6) // CZ_REMOVE_AID_SSO
+
+// Packet: 0x0844
+packetLen(0x0844, 2) // CZ_SE_CASHSHOP_OPEN
+
+// Packet: 0x0845
+packetLen(0x0845, 10) // ZC_SE_CASHSHOP_OPEN
+
+// Packet: 0x0846
+packetLen(0x0846, 4) // CZ_REQ_SE_CASH_TAB_CODE
+
+// Packet: 0x0847
+packetLen(0x0847, -1) // ZC_ACK_SE_CASH_ITEM_LIST
+
+// Packet: 0x0848
+packetLen(0x0848, -1) // CZ_SE_PC_BUY_CASHITEM_LIST
+
+// Packet: 0x0849
+packetLen(0x0849, 16) // ZC_SE_PC_BUY_CASHITEM_RESULT
+
+// Packet: 0x084a
+packetLen(0x084a, 2) // CZ_SE_CASHSHOP_CLOSE
+
+// Packet: 0x084b
+packetLen(0x084b, 19) // ZC_ITEM_FALL_ENTRY4
+
+// Packet: 0x084c
+packetLen(0x084c, 10) // CZ_MACRO_USE_SKILL
+
+// Packet: 0x084d
+packetLen(0x084d, 10) // CZ_MACRO_USE_SKILL_TOGROUND
+
+// Packet: 0x084e
+packetLen(0x084e, 5) // CZ_MACRO_REQUEST_MOVE
+
+// Packet: 0x084f
+packetLen(0x084f, 6) // CZ_MACRO_ITEM_PICKUP
+
+// Packet: 0x0850
+packetLen(0x0850, 7) // CZ_MACRO_REQUEST_ACT
+
+// Packet: 0x0851
+packetLen(0x0851, -1) // ZC_GPK_DYNCODE
+
+// Packet: 0x0852
+packetLen(0x0852, 2) // CZ_GPK_DYNCODE_RELOAD
+
+// Packet: 0x0853
+packetLen(0x0853, -1) // ZC_GPK_AUTH
+
+// Packet: 0x0854
+packetLen(0x0854, -1) // CZ_GPK_AUTH
+
+// Packet: 0x0855
+packetLen(0x0855, 6) // ZC_MACRO_ITEMPICKUP_FAIL
+
+// Packet: 0x0856
+packetLen(0x0856, -1) // ZC_NOTIFY_MOVEENTRY8
+
+// Packet: 0x0857
+packetLen(0x0857, -1) // ZC_NOTIFY_STANDENTRY7
+
+// Packet: 0x0858
+packetLen(0x0858, -1) // ZC_NOTIFY_NEWENTRY6
+
+// Packet: 0x0859
+packetLen(0x0859, -1) // ZC_EQUIPWIN_MICROSCOPE2
+
+// Packet: 0x085a
+#if PACKETVER >= 20121107
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20121031
+packetLen(0x085a, 26) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20121024
+packetLen(0x085a, 8) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120830
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120822
+packetLen(0x085a, 5) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120710
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120702
+packetLen(0x085a, 7) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120523
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120515
+packetLen(0x085a, 8) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120307
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120228
+packetLen(0x085a, 8) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120221
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120214
+packetLen(0x085a, 12) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120103
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x085b
+#if PACKETVER >= 20120716
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120710
+packetLen(0x085b, 10) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120410
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120404
+packetLen(0x085b, 4) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120103
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x085c
+#if PACKETVER >= 20121218
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20121212
+packetLen(0x085c, 7) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20121114
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20121107
+packetLen(0x085c, -1) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20120830
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20120822
+packetLen(0x085c, -1) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20120103
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#endif
+
+// Packet: 0x085d
+#if PACKETVER >= 20121010
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120925
+packetLen(0x085d, 5) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120911
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120905
+packetLen(0x085d, 10) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120830
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120822
+packetLen(0x085d, 10) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120808
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120801
+packetLen(0x085d, 6) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120103
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x085e
+#if PACKETVER >= 20120822
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20120814
+packetLen(0x085e, 8) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20120103
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x085f
+#if PACKETVER >= 20120814
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120808
+packetLen(0x085f, 36) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120702
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120626
+packetLen(0x085f, 5) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120612
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120601
+packetLen(0x085f, 6) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120529
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120523
+packetLen(0x085f, 5) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120103
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x0860
+#if PACKETVER >= 20121227
+packetLen(0x0860, -1) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20120529
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20120523
+packetLen(0x0860, 36) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20120103
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x0861
+#if PACKETVER >= 20121205
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20121128
+packetLen(0x0861, 18) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20121114
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20121107
+packetLen(0x0861, 6) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120905
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120830
+packetLen(0x0861, 19) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120822
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120814
+packetLen(0x0861, 6) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120710
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120702
+packetLen(0x0861, 8) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120612
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120601
+packetLen(0x0861, 18) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120529
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120523
+packetLen(0x0861, 18) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120404
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120328
+packetLen(0x0861, -1) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120314
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120307
+packetLen(0x0861, 36) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120103
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x0862
+#if PACKETVER >= 20121121
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20121114
+packetLen(0x0862, -1) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20120822
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20120814
+packetLen(0x0862, 6) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20120710
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20120702
+packetLen(0x0862, 10) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20120103
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x0863
+#if PACKETVER >= 20121212
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20121205
+packetLen(0x0863, 6) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20121128
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20121121
+packetLen(0x0863, -1) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120710
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120702
+packetLen(0x0863, 10) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120612
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120601
+packetLen(0x0863, 6) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120502
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120424
+packetLen(0x0863, 26) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120314
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120307
+packetLen(0x0863, 5) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120228
+packetLen(0x0863, 12) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120103
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x0864
+#if PACKETVER >= 20121212
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20121205
+packetLen(0x0864, 18) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20120410
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20120404
+packetLen(0x0864, 18) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20120320
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20120314
+packetLen(0x0864, 5) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20120103
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x0865
+#if PACKETVER >= 20121114
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20121107
+packetLen(0x0865, 19) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120822
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120814
+packetLen(0x0865, 8) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120404
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120328
+packetLen(0x0865, 5) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120314
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120307
+packetLen(0x0865, 6) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120103
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0866
+#if PACKETVER >= 20120801
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120724
+packetLen(0x0866, 4) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120702
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120626
+packetLen(0x0866, -1) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120529
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120523
+packetLen(0x0866, 8) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120404
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120328
+packetLen(0x0866, 5) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120103
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0867
+#if PACKETVER >= 20121227
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20121218
+packetLen(0x0867, 5) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20121205
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20121128
+packetLen(0x0867, 6) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120710
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120702
+packetLen(0x0867, -1) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120515
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120508
+packetLen(0x0867, 5) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120103
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0868
+#if PACKETVER >= 20121031
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20121024
+packetLen(0x0868, -1) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20121017
+packetLen(0x0868, 8) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20120919
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20120911
+packetLen(0x0868, 6) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20120822
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20120814
+packetLen(0x0868, 7) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20120702
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20120626
+packetLen(0x0868, 5) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20120515
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20120508
+packetLen(0x0868, 5) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20120103
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0869
+#if PACKETVER >= 20121017
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20121010
+packetLen(0x0869, 6) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20120925
+packetLen(0x0869, 8) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20120702
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20120626
+packetLen(0x0869, 10) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20120612
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20120601
+packetLen(0x0869, 10) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20120529
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20120523
+packetLen(0x0869, 19) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20120515
+packetLen(0x0869, 8) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20120221
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20120214
+packetLen(0x0869, 6) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20120103
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x086a
+#if PACKETVER >= 20121128
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20121121
+packetLen(0x086a, 90) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120808
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120801
+packetLen(0x086a, -1) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120601
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120529
+packetLen(0x086a, 36) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120523
+packetLen(0x086a, -1) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120410
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120404
+packetLen(0x086a, 5) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120314
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120307
+packetLen(0x086a, 19) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120221
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120214
+packetLen(0x086a, 26) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120103
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x086b
+#if PACKETVER >= 20121024
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20121017
+packetLen(0x086b, 6) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20120830
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20120822
+packetLen(0x086b, 6) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20120808
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20120801
+packetLen(0x086b, 6) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20120103
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x086c
+#if PACKETVER >= 20121212
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20121205
+packetLen(0x086c, -1) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20121128
+packetLen(0x086c, 10) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20121121
+packetLen(0x086c, -1) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20121114
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20121107
+packetLen(0x086c, 5) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20121017
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20121010
+packetLen(0x086c, 8) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20120417
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20120410
+packetLen(0x086c, 8) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20120103
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x086d
+#if PACKETVER >= 20121128
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20121121
+packetLen(0x086d, 6) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20121114
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20121107
+packetLen(0x086d, 6) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120702
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120626
+packetLen(0x086d, 18) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120612
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120601
+packetLen(0x086d, 5) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120103
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x086e
+#if PACKETVER >= 20121205
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20121128
+packetLen(0x086e, 4) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20120830
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20120822
+packetLen(0x086e, 5) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20120221
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20120214
+packetLen(0x086e, 6) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20120103
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x086f
+#if PACKETVER >= 20121128
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20121121
+packetLen(0x086f, 8) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120919
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120911
+packetLen(0x086f, 5) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120905
+packetLen(0x086f, 6) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120822
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120814
+packetLen(0x086f, 36) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120702
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120626
+packetLen(0x086f, 26) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120612
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120601
+packetLen(0x086f, 5) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120328
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120320
+packetLen(0x086f, 5) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120103
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x0870
+#if PACKETVER >= 20121227
+packetLen(0x0870, 12) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20121212
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20121205
+packetLen(0x0870, -1) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20120314
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20120307
+packetLen(0x0870, -1) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20120228
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20120221
+packetLen(0x0870, 6) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20120103
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x0871
+#if PACKETVER >= 20121107
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20121031
+packetLen(0x0871, 5) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120702
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120626
+packetLen(0x0871, 6) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120612
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120601
+packetLen(0x0871, 36) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120502
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120424
+packetLen(0x0871, 10) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120417
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120410
+packetLen(0x0871, 5) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120307
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120228
+packetLen(0x0871, 10) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120103
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x0872
+#if PACKETVER >= 20121227
+packetLen(0x0872, 6)
+#elif PACKETVER >= 20121218
+packetLen(0x0872, 4)
+#elif PACKETVER >= 20121205
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20121128
+packetLen(0x0872, 10)
+#elif PACKETVER >= 20121121
+packetLen(0x0872, 6)
+#elif PACKETVER >= 20121031
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20121024
+packetLen(0x0872, 6)
+#elif PACKETVER >= 20120905
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20120830
+packetLen(0x0872, 26)
+#elif PACKETVER >= 20120822
+packetLen(0x0872, -1)
+#elif PACKETVER >= 20120801
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20120724
+packetLen(0x0872, -1)
+#elif PACKETVER >= 20120702
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20120626
+packetLen(0x0872, 6)
+#elif PACKETVER >= 20120221
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20120214
+packetLen(0x0872, 8)
+#elif PACKETVER >= 20120103
+packetLen(0x0872, 2)
+#endif
+
+// Packet: 0x0873
+#if PACKETVER >= 20121114
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20121107
+packetLen(0x0873, 8) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20121010
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20120925
+packetLen(0x0873, -1) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20120808
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20120801
+packetLen(0x0873, 10) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20120417
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20120410
+packetLen(0x0873, 4) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20120103
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x0874
+#if PACKETVER >= 20121017
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20121010
+packetLen(0x0874, 8) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20120702
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20120626
+packetLen(0x0874, 5) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20120502
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20120424
+packetLen(0x0874, 90) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20120404
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20120328
+packetLen(0x0874, 12) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20120103
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x0875
+#if PACKETVER >= 20121212
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20121205
+packetLen(0x0875, -1) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20121128
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20121121
+packetLen(0x0875, 8) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20121031
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20121024
+packetLen(0x0875, 4) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120822
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120814
+packetLen(0x0875, 5) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120808
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120801
+packetLen(0x0875, 6) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120702
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120626
+packetLen(0x0875, 8) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120404
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120328
+packetLen(0x0875, 4) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120307
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120228
+packetLen(0x0875, -1) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120103
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x0876
+#if PACKETVER >= 20121121
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20121114
+packetLen(0x0876, 6) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120919
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120905
+packetLen(0x0876, 5) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120404
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120328
+packetLen(0x0876, 36) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120103
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x0877
+#if PACKETVER >= 20121218
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20121212
+packetLen(0x0877, 6) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20121107
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20121031
+packetLen(0x0877, 19) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20120919
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20120911
+packetLen(0x0877, 26) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20120905
+packetLen(0x0877, -1) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20120801
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20120724
+packetLen(0x0877, -1) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20120716
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20120702
+packetLen(0x0877, 6) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20120103
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x0878
+#if PACKETVER >= 20121212
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20121205
+packetLen(0x0878, 90) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20121114
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20121107
+packetLen(0x0878, 26) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120911
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120905
+packetLen(0x0878, 5) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120716
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120710
+packetLen(0x0878, -1) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120702
+packetLen(0x0878, 12) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120103
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x0879
+#if PACKETVER >= 20121121
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20121114
+packetLen(0x0879, 6) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20120919
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20120911
+packetLen(0x0879, 6) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20120710
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20120702
+packetLen(0x0879, 18) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20120103
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x087a
+#if PACKETVER >= 20121227
+packetLen(0x087a, 7) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20121218
+packetLen(0x087a, 5) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20121031
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20121024
+packetLen(0x087a, 8) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20121010
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20120925
+packetLen(0x087a, 6) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20120919
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20120911
+packetLen(0x087a, 8) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20120905
+packetLen(0x087a, 10) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20120103
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x087b
+#if PACKETVER >= 20121227
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20121218
+packetLen(0x087b, 26) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20121031
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20121024
+packetLen(0x087b, -1) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20120911
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20120905
+packetLen(0x087b, 6) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20120529
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20120523
+packetLen(0x087b, 6) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20120103
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x087c
+#if PACKETVER >= 20120830
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120822
+packetLen(0x087c, 90) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120801
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120724
+packetLen(0x087c, 18) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120601
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120529
+packetLen(0x087c, 26) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120523
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120515
+packetLen(0x087c, 5) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120328
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120320
+packetLen(0x087c, 36) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120103
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#endif
+
+// Packet: 0x087d
+#if PACKETVER >= 20121218
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20121212
+packetLen(0x087d, 10) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20121017
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20121010
+packetLen(0x087d, 90) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20120830
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20120822
+packetLen(0x087d, 6) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20120612
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20120601
+packetLen(0x087d, 6) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20120523
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20120515
+packetLen(0x087d, 6) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20120103
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x087e
+#if PACKETVER >= 20121031
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20121024
+packetLen(0x087e, 10) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20121010
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120925
+packetLen(0x087e, 26) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120911
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120905
+packetLen(0x087e, 8) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120529
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120523
+packetLen(0x087e, 5) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120515
+packetLen(0x087e, 12) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120103
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x087f
+#if PACKETVER >= 20121218
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20121212
+packetLen(0x087f, 12) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20121114
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20121107
+packetLen(0x087f, 5) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120822
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120814
+packetLen(0x087f, 26) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120716
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120710
+packetLen(0x087f, 5) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120529
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120523
+packetLen(0x087f, 6) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120103
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#endif
+
+// Packet: 0x0880
+#if PACKETVER >= 20121128
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20121121
+packetLen(0x0880, 5) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20120103
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x0881
+#if PACKETVER >= 20120702
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20120626
+packetLen(0x0881, 6) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20120221
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20120214
+packetLen(0x0881, 10) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20120103
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x0882
+#if PACKETVER >= 20121031
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20121024
+packetLen(0x0882, 36) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20120822
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20120814
+packetLen(0x0882, 18) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20120515
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20120508
+packetLen(0x0882, 8) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20120103
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x0883
+#if PACKETVER >= 20121017
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20121010
+packetLen(0x0883, 5) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120710
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120702
+packetLen(0x0883, -1) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120404
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120328
+packetLen(0x0883, 90) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120307
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120228
+packetLen(0x0883, 6) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120103
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x0884
+#if PACKETVER >= 20120515
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120508
+packetLen(0x0884, 36) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120417
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120410
+packetLen(0x0884, 6) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120314
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120307
+packetLen(0x0884, -1) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20120103
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x0885
+#if PACKETVER >= 20120830
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120822
+packetLen(0x0885, 4) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120612
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120601
+packetLen(0x0885, 26) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120515
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120508
+packetLen(0x0885, 6) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120417
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120410
+packetLen(0x0885, 5) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120320
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120314
+packetLen(0x0885, 5) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120307
+packetLen(0x0885, 7) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120228
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120221
+packetLen(0x0885, 26) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120207
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120131
+packetLen(0x0885, 26) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120120
+packetLen(0x0885, -1) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120117
+packetLen(0x0885, 18) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20120103
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x0886
+#if PACKETVER >= 20121218
+packetLen(0x0886, 8) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20120710
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20120702
+packetLen(0x0886, 6) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20120502
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20120424
+packetLen(0x0886, 36) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20120417
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20120404
+packetLen(0x0886, 6) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20120228
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20120221
+packetLen(0x0886, 8) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20120120
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20120117
+packetLen(0x0886, 5) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20120103
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#endif
+
+// Packet: 0x0887
+#if PACKETVER >= 20121024
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20121017
+packetLen(0x0887, -1) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20121010
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120925
+packetLen(0x0887, -1) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120911
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120905
+packetLen(0x0887, 19) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120830
+packetLen(0x0887, 10) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120801
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120724
+packetLen(0x0887, 5) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120314
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120307
+packetLen(0x0887, 6) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120207
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120131
+packetLen(0x0887, 6) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120120
+packetLen(0x0887, 4) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120117
+packetLen(0x0887, 5) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20120103
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x0888
+#if PACKETVER >= 20121227
+packetLen(0x0888, 6) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20121212
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20121205
+packetLen(0x0888, 36) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20121128
+packetLen(0x0888, 5) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20121031
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20121024
+packetLen(0x0888, 5) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20121017
+packetLen(0x0888, 18) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20121010
+packetLen(0x0888, 4) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20120905
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20120830
+packetLen(0x0888, 8) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20120801
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20120724
+packetLen(0x0888, 5) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20120228
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20120214
+packetLen(0x0888, 6) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20120207
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20120131
+packetLen(0x0888, 18) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20120103
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x0889
+#if PACKETVER >= 20121227
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20121218
+packetLen(0x0889, -1) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20121212
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20121205
+packetLen(0x0889, 6) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20121031
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20121024
+packetLen(0x0889, 6) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120710
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120702
+packetLen(0x0889, 90) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120417
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120410
+packetLen(0x0889, 6) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120320
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120314
+packetLen(0x0889, 7) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120307
+packetLen(0x0889, 10) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120131
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120120
+packetLen(0x0889, 36) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120117
+packetLen(0x0889, -1) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20120103
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x088a
+#if PACKETVER >= 20121031
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20121024
+packetLen(0x088a, 6) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20121010
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20120925
+packetLen(0x088a, 26) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20120919
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20120911
+packetLen(0x088a, 6) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20120830
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20120822
+packetLen(0x088a, 8) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20120404
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20120328
+packetLen(0x088a, 8) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20120307
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20120228
+packetLen(0x088a, 8) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20120207
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20120131
+packetLen(0x088a, 19) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20120103
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x088b
+#if PACKETVER >= 20121212
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20121205
+packetLen(0x088b, 4) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20121128
+packetLen(0x088b, -1) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120822
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120814
+packetLen(0x088b, 26) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120808
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120801
+packetLen(0x088b, 5) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120221
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120214
+packetLen(0x088b, 18) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20120103
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x088c
+#if PACKETVER >= 20120320
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20120314
+packetLen(0x088c, 4) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20120221
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20120214
+packetLen(0x088c, 26) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20120120
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20120117
+packetLen(0x088c, 8) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20120103
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x088d
+#if PACKETVER >= 20121010
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120925
+packetLen(0x088d, 10) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120822
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120814
+packetLen(0x088d, -1) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120716
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120710
+packetLen(0x088d, 5) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120529
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120523
+packetLen(0x088d, 8) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120221
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120214
+packetLen(0x088d, 6) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120207
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120131
+packetLen(0x088d, -1) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120120
+packetLen(0x088d, 18) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20120103
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x088e
+#if PACKETVER >= 20121227
+packetLen(0x088e, 5) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20120801
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20120724
+packetLen(0x088e, 10) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20120612
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20120601
+packetLen(0x088e, 6) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20120502
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20120424
+packetLen(0x088e, 5) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20120404
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20120328
+packetLen(0x088e, 6) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20120120
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20120117
+packetLen(0x088e, 8) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20120103
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x088f
+#if PACKETVER >= 20121114
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20121107
+packetLen(0x088f, -1) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20121017
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20121010
+packetLen(0x088f, 26) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120925
+packetLen(0x088f, -1) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120919
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120911
+packetLen(0x088f, 26) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120814
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120808
+packetLen(0x088f, 5) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120508
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120502
+packetLen(0x088f, 36) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120131
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120120
+packetLen(0x088f, 5) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120117
+packetLen(0x088f, 10) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20120103
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0890
+#if PACKETVER >= 20121227
+packetLen(0x0890, 10) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20121218
+packetLen(0x0890, 8) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20121114
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20121107
+packetLen(0x0890, 10) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120905
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120830
+packetLen(0x0890, 4) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120808
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120801
+packetLen(0x0890, 7) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120529
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120523
+packetLen(0x0890, -1) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120314
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120307
+packetLen(0x0890, 5) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120221
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120214
+packetLen(0x0890, 8) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120207
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120131
+packetLen(0x0890, 8) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120120
+packetLen(0x0890, 5) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20120103
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0891
+#if PACKETVER >= 20121114
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20121107
+packetLen(0x0891, 8) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20121017
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20121010
+packetLen(0x0891, 10) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120612
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120601
+packetLen(0x0891, 26) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120529
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120523
+packetLen(0x0891, 6) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120515
+packetLen(0x0891, -1) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120417
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120410
+packetLen(0x0891, 6) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120307
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120228
+packetLen(0x0891, 36) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120131
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120120
+packetLen(0x0891, 8) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120117
+packetLen(0x0891, 6) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20120103
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0892
+#if PACKETVER >= 20121128
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20121121
+packetLen(0x0892, -1) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20120702
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20120626
+packetLen(0x0892, 36) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20120120
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20120117
+packetLen(0x0892, -1) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20120103
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0893
+#if PACKETVER >= 20121218
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20121212
+packetLen(0x0893, 6) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20120716
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20120710
+packetLen(0x0893, 36) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20120103
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x0894
+#if PACKETVER >= 20121227
+packetLen(0x0894, 26) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20121205
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20121128
+packetLen(0x0894, 8) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120404
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120328
+packetLen(0x0894, -1) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120131
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120120
+packetLen(0x0894, 10) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20120103
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x0895
+#if PACKETVER >= 20121218
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20121212
+packetLen(0x0895, 6) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20121205
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20121128
+packetLen(0x0895, 6) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20120911
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20120905
+packetLen(0x0895, 5) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20120822
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20120814
+packetLen(0x0895, -1) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20120808
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20120801
+packetLen(0x0895, 19) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20120131
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20120120
+packetLen(0x0895, 7) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20120103
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x0896
+#if PACKETVER >= 20121227
+packetLen(0x0896, 6) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20121114
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20121107
+packetLen(0x0896, 6) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20121017
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20121010
+packetLen(0x0896, -1) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20120103
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x0897
+#if PACKETVER >= 20121024
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20121017
+packetLen(0x0897, 8) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120911
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120905
+packetLen(0x0897, 6) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120716
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120710
+packetLen(0x0897, -1) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120702
+packetLen(0x0897, 26) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120612
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120601
+packetLen(0x0897, 6) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120529
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120523
+packetLen(0x0897, 26) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120117
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120110
+packetLen(0x0897, 5) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20120103
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x0898
+#if PACKETVER >= 20121121
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20121114
+packetLen(0x0898, 7) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20121107
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20121031
+packetLen(0x0898, 36) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20121017
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20121010
+packetLen(0x0898, 36) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20120207
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20120131
+packetLen(0x0898, 4) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20120103
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x0899
+#if PACKETVER >= 20121128
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20121121
+packetLen(0x0899, 26) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20121114
+packetLen(0x0899, 5) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120830
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120822
+packetLen(0x0899, 26) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120716
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120710
+packetLen(0x0899, 6) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120410
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120404
+packetLen(0x0899, 6) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120207
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120131
+packetLen(0x0899, 6) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120120
+packetLen(0x0899, 8) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20120103
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x089a
+#if PACKETVER >= 20121212
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20121205
+packetLen(0x089a, 26) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20121128
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20121121
+packetLen(0x089a, 18) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20121114
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20121107
+packetLen(0x089a, 7) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20121024
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20121017
+packetLen(0x089a, 26) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20120523
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20120515
+packetLen(0x089a, 36) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20120508
+packetLen(0x089a, 8) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20120502
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20120424
+packetLen(0x089a, -1) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20120103
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x089b
+#if PACKETVER >= 20121114
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20121107
+packetLen(0x089b, -1) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120502
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120424
+packetLen(0x089b, 8) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120221
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120214
+packetLen(0x089b, -1) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120117
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120110
+packetLen(0x089b, 26) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20120103
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x089c
+#if PACKETVER >= 20121031
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20121024
+packetLen(0x089c, 26) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20120808
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20120801
+packetLen(0x089c, 90) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20120417
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20120410
+packetLen(0x089c, 26) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20120404
+packetLen(0x089c, 8) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20120103
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#endif
+
+// Packet: 0x089d
+#if PACKETVER >= 20121212
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20121205
+packetLen(0x089d, 12) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20121010
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20120925
+packetLen(0x089d, -1) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20120808
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20120801
+packetLen(0x089d, 6) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20120307
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20120228
+packetLen(0x089d, -1) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20120120
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20120117
+packetLen(0x089d, 90) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20120103
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x089e
+#if PACKETVER >= 20120710
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20120702
+packetLen(0x089e, 6) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20120320
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20120314
+packetLen(0x089e, 26) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20120120
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20120117
+packetLen(0x089e, 6) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20120103
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x089f
+#if PACKETVER >= 20120830
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120822
+packetLen(0x089f, 19) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120808
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120801
+packetLen(0x089f, 5) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120724
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120716
+packetLen(0x089f, 36) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120710
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120702
+packetLen(0x089f, 6) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120221
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120214
+packetLen(0x089f, 36) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120207
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120131
+packetLen(0x089f, 36) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120120
+packetLen(0x089f, -1) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20120103
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x08a0
+#if PACKETVER >= 20120911
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120905
+packetLen(0x08a0, 4) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120710
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120702
+packetLen(0x08a0, 8) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120626
+packetLen(0x08a0, 26) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120502
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120424
+packetLen(0x08a0, 5) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120404
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120328
+packetLen(0x08a0, 18) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120320
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120314
+packetLen(0x08a0, -1) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120131
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120120
+packetLen(0x08a0, 6) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20120103
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x08a1
+#if PACKETVER >= 20121017
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20121010
+packetLen(0x08a1, 7) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20120801
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20120724
+packetLen(0x08a1, 6) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20120131
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20120120
+packetLen(0x08a1, 6) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20120103
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x08a2
+#if PACKETVER >= 20120808
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120801
+packetLen(0x08a2, 26) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120612
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120601
+packetLen(0x08a2, 7) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120523
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120515
+packetLen(0x08a2, 90) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120417
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120410
+packetLen(0x08a2, 8) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120307
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120228
+packetLen(0x08a2, 4) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120207
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120131
+packetLen(0x08a2, 26) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20120103
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x08a3
+#if PACKETVER >= 20121218
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20121212
+packetLen(0x08a3, 19) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20120716
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20120710
+packetLen(0x08a3, 6) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20120529
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20120523
+packetLen(0x08a3, 10) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20120502
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20120424
+packetLen(0x08a3, -1) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20120410
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20120404
+packetLen(0x08a3, 26) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20120103
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x08a4
+#if PACKETVER >= 20121010
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20120925
+packetLen(0x08a4, 7) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20120919
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20120911
+packetLen(0x08a4, 18) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20120702
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20120626
+packetLen(0x08a4, 19) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20120502
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20120424
+packetLen(0x08a4, 6) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20120131
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20120117
+packetLen(0x08a4, 6) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20120103
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x08a5
+#if PACKETVER >= 20120919
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20120911
+packetLen(0x08a5, -1) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20120830
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20120822
+packetLen(0x08a5, 8) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20120523
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20120515
+packetLen(0x08a5, 6) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20120221
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20120214
+packetLen(0x08a5, 4) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20120131
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20120120
+packetLen(0x08a5, 90) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20120103
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x08a6
+#if PACKETVER >= 20121227
+packetLen(0x08a6, 6) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20121024
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20121017
+packetLen(0x08a6, 5) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20121010
+packetLen(0x08a6, 6) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120919
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120911
+packetLen(0x08a6, 19) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120905
+packetLen(0x08a6, 26) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120716
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120710
+packetLen(0x08a6, -1) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120417
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120410
+packetLen(0x08a6, 8) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120404
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120328
+packetLen(0x08a6, 19) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120120
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120117
+packetLen(0x08a6, 19) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20120103
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#endif
+
+// Packet: 0x08a7
+#if PACKETVER >= 20121218
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20121212
+packetLen(0x08a7, 5) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20121128
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20121121
+packetLen(0x08a7, -1) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20120919
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20120911
+packetLen(0x08a7, 6) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20120515
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20120508
+packetLen(0x08a7, 18) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20120221
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20120214
+packetLen(0x08a7, 6) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20120103
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x08a8
+#if PACKETVER >= 20121205
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20121128
+packetLen(0x08a8, -1) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120822
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120814
+packetLen(0x08a8, 4) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120716
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120710
+packetLen(0x08a8, 19) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120523
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120515
+packetLen(0x08a8, 19) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120424
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120417
+packetLen(0x08a8, 36) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120320
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120314
+packetLen(0x08a8, 36) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120307
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120228
+packetLen(0x08a8, 6) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120120
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120117
+packetLen(0x08a8, 12) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20120103
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x08a9
+#if PACKETVER >= 20121218
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20121212
+packetLen(0x08a9, 36) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20121121
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20121114
+packetLen(0x08a9, 6) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20121031
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20121024
+packetLen(0x08a9, -1) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20121017
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20121010
+packetLen(0x08a9, -1) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120801
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120724
+packetLen(0x08a9, 19) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120529
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120523
+packetLen(0x08a9, 6) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120515
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120508
+packetLen(0x08a9, 19) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120502
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120424
+packetLen(0x08a9, 7) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120120
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120117
+packetLen(0x08a9, 8) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20120103
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#endif
+
+// Packet: 0x08aa
+#if PACKETVER >= 20121227
+packetLen(0x08aa, 18) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20121218
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20121212
+packetLen(0x08aa, 4) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20121128
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20121121
+packetLen(0x08aa, 7) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20121031
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20121024
+packetLen(0x08aa, 5) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20120808
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20120801
+packetLen(0x08aa, 5) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20120716
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20120710
+packetLen(0x08aa, 8) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20120103
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x08ab
+#if PACKETVER >= 20121121
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20121114
+packetLen(0x08ab, 5) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20120830
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20120822
+packetLen(0x08ab, 7) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20120808
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20120801
+packetLen(0x08ab, 8) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20120724
+packetLen(0x08ab, 6) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20120529
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20120523
+packetLen(0x08ab, 8) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20120221
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20120214
+packetLen(0x08ab, 5) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20120110
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20120103
+packetLen(0x08ab, 36) // CZ_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x08ac
+#if PACKETVER >= 20121218
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20121212
+packetLen(0x08ac, 6) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20120529
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20120523
+packetLen(0x08ac, 7) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20120515
+packetLen(0x08ac, 5) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20120328
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20120320
+packetLen(0x08ac, 26) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20120103
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x08ad
+#if PACKETVER >= 20121212
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20121205
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20121128
+packetLen(0x08ad, 5) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20121114
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20121107
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120919
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120911
+packetLen(0x08ad, -1) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120523
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120515
+packetLen(0x08ad, 10) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120404
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120328
+packetLen(0x08ad, 8) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120207
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120131
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120120
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20120103
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x08af
+packetLen(0x08af, 10) // HC_WAITING_LOGIN
+
+// Packet: 0x08b0
+packetLen(0x08b0, 17) // CH_WAITING_LOGIN
+
+// Packet: 0x08b1
+packetLen(0x08b1, -1) // ZC_MCSTORE_NOTMOVEITEM_LIST
+
+// Packet: 0x08b2
+packetLen(0x08b2, -1) // AC_REALNAME_AUTH
+
+// Packet: 0x08b3
+packetLen(0x08b3, -1) // ZC_SHOWSCRIPT
+
+// Packet: 0x08b4
+packetLen(0x08b4, 2) // ZC_START_COLLECTION
+
+// Packet: 0x08b5
+packetLen(0x08b5, 6) // CZ_TRYCOLLECTION
+
+// Packet: 0x08b6
+packetLen(0x08b6, 3) // ZC_TRYCOLLECTION
+
+// Packet: 0x08b8
+packetLen(0x08b8, 10) // CH_SECOND_PASSWD_ACK
+
+// Packet: 0x08b9
+packetLen(0x08b9, 12) // HC_SECOND_PASSWD_LOGIN
+
+// Packet: 0x08ba
+packetLen(0x08ba, 10) // CH_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bb
+packetLen(0x08bb, 8) // HC_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bc
+packetLen(0x08bc, 10) // CH_DELETE_SECOND_PASSWD
+
+// Packet: 0x08bd
+packetLen(0x08bd, 8) // HC_DELETE_SECOND_PASSWD
+
+// Packet: 0x08be
+packetLen(0x08be, 14) // CH_EDIT_SECOND_PASSWD
+
+// Packet: 0x08bf
+packetLen(0x08bf, 8) // HC_EDIT_SECOND_PASSWD
+
+// Packet: 0x08c0
+packetLen(0x08c0, -1) // ZC_ACK_SE_CASH_ITEM_LIST2
+
+// Packet: 0x08c1
+packetLen(0x08c1, 2) // CZ_MACRO_START
+
+// Packet: 0x08c2
+packetLen(0x08c2, 2) // CZ_MACRO_STOP
+
+// Packet: 0x08c3
+packetLen(0x08c3, 10) // CH_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c4
+packetLen(0x08c4, 8) // HC_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c5
+packetLen(0x08c5, 6) // CH_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c6
+packetLen(0x08c6, 4) // HC_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c7
+packetLen(0x08c7, -1) // ZC_SKILL_ENTRY3
+
+// Packet: 0x08c8
+packetLen(0x08c8, 34) // ZC_NOTIFY_ACT3
+
+// Packet: 0x08c9
+packetLen(0x08c9, 2) // CZ_REQ_SCHEDULER_CASHITEM
+
+// Packet: 0x08ca
+packetLen(0x08ca, -1) // ZC_ACK_SCHEDULER_CASHITEM
+
+// Packet: 0x08cb
+packetLen(0x08cb, -1) // ZC_PERSONAL_INFOMATION
+
+// Packet: 0x08cc
+packetLen(0x08cc, 109) // CA_LOGIN5
+
+// Packet: 0x08cd
+packetLen(0x08cd, 10) // ZC_STOPMOVE_FORCE
+
+// Packet: 0x08ce
+packetLen(0x08ce, 2) // ZC_FAILED_GET_ITEM_FROM_ZONEDA
+
+// Packet: 0x08cf
+packetLen(0x08cf, 10) // ZC_SPIRITS_ATTRIBUTE
+
+// Packet: 0x08d0
+packetLen(0x08d0, 9) // ZC_REQ_WEAR_EQUIP_ACK2
+
+// Packet: 0x08d1
+packetLen(0x08d1, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK2
+
+// Packet: 0x08d2
+packetLen(0x08d2, 10) // ZC_FASTMOVE
+
+// Packet: 0x08d3
+packetLen(0x08d3, 10) // ZC_SE_CASHSHOP_UPDATE
+
+// Packet: 0x08d4
+packetLen(0x08d4, 8) // CH_REQ_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d5
+packetLen(0x08d5, -1) // HC_ACK_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d6
+packetLen(0x08d6, 6) // ZC_CLEAR_DIALOG
+
+// Packet: 0x08d7
+packetLen(0x08d7, 28) // CZ_REQ_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d8
+packetLen(0x08d8, 27) // ZC_ACK_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d9
+packetLen(0x08d9, 30) // ZC_NOTIFY_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08da
+packetLen(0x08da, 26) // CZ_REQ_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08db
+packetLen(0x08db, 27) // ZC_ACK_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08dc
+packetLen(0x08dc, 26) // ZC_NOTIFY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08dd
+packetLen(0x08dd, 27) // CZ_REPLY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08de
+packetLen(0x08de, 27) // ZC_REPLY_ACK_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08df
+packetLen(0x08df, 50) // ZC_NOTIFY_LOBBY_ADMISSION
+
+// Packet: 0x08e0
+packetLen(0x08e0, 51) // CZ_REPLY_LOBBY_ADMISSION
+
+// Packet: 0x08e1
+packetLen(0x08e1, 51) // ZC_REPLY_ACK_LOBBY_ADMISSION
+
+// Packet: 0x08e2
+#if PACKETVER >= 20120307
+packetLen(0x08e2, 27) // ZC_NAVIGATION_ACTIVE
+#elif PACKETVER >= 20120103
+packetLen(0x08e2, 25) // ZC_NAVIGATION_ACTIVE
+#endif
+
+// Packet: 0x08e3
+packetLen(0x08e3, 146) // HC_UPDATE_CHARINFO
+
+// Packet: 0x08e4
+packetLen(0x08e4, 6) // AC_SHUTDOWN_INFO
+
+// Packet: 0x08e5
+packetLen(0x08e5, 41) // CZ_PARTY_RECRUIT_REQ_REGISTER
+
+// Packet: 0x08e6
+packetLen(0x08e6, 4) // ZC_PARTY_RECRUIT_ACK_REGISTER
+
+// Packet: 0x08e7
+packetLen(0x08e7, 10) // CZ_PARTY_RECRUIT_REQ_SEARCH
+
+// Packet: 0x08e8
+packetLen(0x08e8, -1)
+
+// Packet: 0x08e9
+packetLen(0x08e9, 2) // CZ_PARTY_RECRUIT_REQ_DELETE
+
+// Packet: 0x08ea
+packetLen(0x08ea, 4) // ZC_PARTY_RECRUIT_ACK_DELETE
+
+// Packet: 0x08eb
+packetLen(0x08eb, 39) // CZ_PARTY_RECRUIT_REQ_UPDATE
+
+// Packet: 0x08ec
+packetLen(0x08ec, 73) // ZC_PARTY_RECRUIT_NOTIFY_INSERT
+
+// Packet: 0x08ed
+packetLen(0x08ed, 43) // ZC_PARTY_RECRUIT_NOTIFY_UPDATE
+
+// Packet: 0x08ee
+packetLen(0x08ee, 6) // ZC_PARTY_RECRUIT_NOTIFY_DELETE
+
+// Packet: 0x08ef
+packetLen(0x08ef, 6) // CZ_PARTY_RECRUIT_ADD_FILTERLINGLIST
+
+// Packet: 0x08f0
+packetLen(0x08f0, 6) // CZ_PARTY_RECRUIT_SUB_FILTERLINGLIST
+
+// Packet: 0x08f1
+packetLen(0x08f1, 6) // CZ_PARTY_RECRUIT_REQ_VOLUNTEER
+
+// Packet: 0x08f2
+packetLen(0x08f2, 36) // ZC_PARTY_RECRUIT_VOLUNTEER_INFO
+
+// Packet: 0x08f3
+packetLen(0x08f3, -1)
+
+// Packet: 0x08f4
+packetLen(0x08f4, 6) // CZ_PARTY_RECRUIT_SHOW_EQUIPMENT
+
+// Packet: 0x08f5
+packetLen(0x08f5, -1) // CZ_UNKNOWN_BOOKING_SOMMON_MEMBER_08f5
+
+// Packet: 0x08f6
+packetLen(0x08f6, 22) // ZC_PARTY_RECRUIT_RECALL_COST
+
+// Packet: 0x08f7
+packetLen(0x08f7, 3) // CZ_PARTY_RECRUIT_ACK_RECALL
+
+// Packet: 0x08f8
+packetLen(0x08f8, 7) // ZC_PARTY_RECRUIT_FAILED_RECALL
+
+// Packet: 0x08f9
+packetLen(0x08f9, 6) // CZ_PARTY_RECRUIT_REFUSE_VOLUNTEER
+
+// Packet: 0x08fa
+packetLen(0x08fa, 6) // ZC_PARTY_RECRUIT_REFUSE_VOLUNTEER
+
+// Packet: 0x08fb
+packetLen(0x08fb, 6) // CZ_PARTY_RECRUIT_CANCEL_VOLUNTEER
+
+// Packet: 0x08fc
+packetLen(0x08fc, 30) // CH_REQ_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fd
+packetLen(0x08fd, 6) // CH_ACK_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fe
+packetLen(0x08fe, -1) // ZC_HUNTING_QUEST_INFO
+
+// Packet: 0x08ff
+packetLen(0x08ff, 24) // ZC_EFST_SET_ENTER
+
+// Packet: 0x0900
+packetLen(0x0900, -1) // ZC_INVENTORY_ITEMLIST_NORMAL
+
+// Packet: 0x0901
+packetLen(0x0901, -1) // ZC_INVENTORY_ITEMLIST_EQUIP
+
+// Packet: 0x0902
+packetLen(0x0902, -1) // ZC_CART_ITEMLIST_NORMAL
+
+// Packet: 0x0903
+packetLen(0x0903, -1) // ZC_CART_ITEMLIST_EQUIP
+
+// Packet: 0x0904
+packetLen(0x0904, -1) // ZC_STORE_ITEMLIST_NORMAL
+
+// Packet: 0x0905
+packetLen(0x0905, -1) // ZC_STORE_ITEMLIST_EQUIP
+
+// Packet: 0x0906
+packetLen(0x0906, -1) // ZC_MICROSCOPE
+
+// Packet: 0x0907
+packetLen(0x0907, 5) // CZ_INVENTORY_TAB
+
+// Packet: 0x0908
+packetLen(0x0908, 5) // ZC_INVENTORY_TAB
+
+// Packet: 0x0909
+packetLen(0x0909, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER
+
+// Packet: 0x090a
+packetLen(0x090a, 26) // CZ_REQ_ENTRY_QUEUE_RANKING
+
+// Packet: 0x090b
+packetLen(0x090b, 30) // ZC_PARTY_RECRUIT_ADD_FILTERLINGLIST
+
+// Packet: 0x090c
+packetLen(0x090c, 30) // ZC_PARTY_RECRUIT_SUB_FILTERLINGLIST
+
+// Packet: 0x090d
+packetLen(0x090d, -1) // ZC_PREMIUM_CAMPAIGN_INFO
+
+// Packet: 0x090e
+packetLen(0x090e, 2) // ZC_ENTRY_QUEUE_INIT
+
+// Packet: 0x090f
+#if PACKETVER >= 20120131
+packetLen(0x090f, -1) // ZC_NOTIFY_NEWENTRY7
+#endif
+
+// Packet: 0x0910
+#if PACKETVER >= 20120120
+packetLen(0x0910, 10) // CZ_REQ_PARTY_NAME
+#endif
+
+// Packet: 0x0911
+#if PACKETVER >= 20120120
+packetLen(0x0911, 30) // ZC_ACK_PARTY_NAME
+#endif
+
+// Packet: 0x0912
+#if PACKETVER >= 20120120
+packetLen(0x0912, 10) // CZ_REQ_GUILD_NAME
+#endif
+
+// Packet: 0x0913
+#if PACKETVER >= 20120120
+packetLen(0x0913, 30) // ZC_ACK_GUILD_NAME
+#endif
+
+// Packet: 0x0914
+#if PACKETVER >= 20120131
+packetLen(0x0914, -1) // ZC_NOTIFY_MOVEENTRY9
+#endif
+
+// Packet: 0x0915
+#if PACKETVER >= 20120131
+packetLen(0x0915, -1) // ZC_NOTIFY_STANDENTRY8
+#endif
+
+// Packet: 0x0916
+#if PACKETVER >= 20120131
+packetLen(0x0916, 26) // CZ_REQ_JOIN_GUILD2
+#endif
+
+// Packet: 0x0917
+#if PACKETVER >= 20121218
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20121212
+packetLen(0x0917, 8) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120911
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120905
+packetLen(0x0917, -1) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120830
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120822
+packetLen(0x0917, -1) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120808
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120801
+packetLen(0x0917, 36) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120307
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120228
+packetLen(0x0917, 7) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120207
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#endif
+
+// Packet: 0x0918
+#if PACKETVER >= 20121024
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20121017
+packetLen(0x0918, 36) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20120911
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20120905
+packetLen(0x0918, -1) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20120207
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#endif
+
+// Packet: 0x0919
+#if PACKETVER >= 20120601
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20120529
+packetLen(0x0919, 5) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20120307
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20120228
+packetLen(0x0919, 19) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20120221
+packetLen(0x0919, 4) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20120207
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#endif
+
+// Packet: 0x091a
+#if PACKETVER >= 20121227
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20121218
+packetLen(0x091a, 8) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20121212
+packetLen(0x091a, -1) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20121128
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20121121
+packetLen(0x091a, 6) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20121114
+packetLen(0x091a, 8) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20120911
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20120905
+packetLen(0x091a, 6) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20120523
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20120515
+packetLen(0x091a, 6) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20120404
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20120328
+packetLen(0x091a, -1) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20120221
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20120214
+packetLen(0x091a, 5) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20120207
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#endif
+
+// Packet: 0x091b
+#if PACKETVER >= 20121205
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20121128
+packetLen(0x091b, 6) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20120502
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20120424
+packetLen(0x091b, -1) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20120404
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20120328
+packetLen(0x091b, -1) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20120207
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#endif
+
+// Packet: 0x091c
+#if PACKETVER >= 20121227
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20121218
+packetLen(0x091c, 19) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20121212
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20121205
+packetLen(0x091c, 8) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20121128
+packetLen(0x091c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20120801
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20120724
+packetLen(0x091c, 5) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20120417
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20120410
+packetLen(0x091c, 26) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20120207
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#endif
+
+// Packet: 0x091d
+#if PACKETVER >= 20120905
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120830
+packetLen(0x091d, -1) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120808
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120801
+packetLen(0x091d, -1) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120612
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120601
+packetLen(0x091d, -1) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120417
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120410
+packetLen(0x091d, 18) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120404
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120328
+packetLen(0x091d, 26) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120207
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#endif
+
+// Packet: 0x091e
+#if PACKETVER >= 20121205
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20121128
+packetLen(0x091e, -1) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20120529
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20120523
+packetLen(0x091e, 12) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20120207
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#endif
+
+// Packet: 0x091f
+#if PACKETVER >= 20121227
+packetLen(0x091f, 4) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20121205
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20121128
+packetLen(0x091f, 90) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20120822
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20120814
+packetLen(0x091f, 19) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20120801
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20120724
+packetLen(0x091f, 6) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20120523
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20120515
+packetLen(0x091f, 26) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20120207
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#endif
+
+// Packet: 0x0920
+#if PACKETVER >= 20121227
+packetLen(0x0920, 90) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20121218
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20121212
+packetLen(0x0920, 5) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20121024
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20121017
+packetLen(0x0920, 4) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20120822
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20120814
+packetLen(0x0920, 6) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20120702
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20120626
+packetLen(0x0920, 7) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20120404
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20120328
+packetLen(0x0920, 5) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20120221
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20120214
+packetLen(0x0920, 8) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20120207
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#endif
+
+// Packet: 0x0921
+#if PACKETVER >= 20121212
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20121205
+packetLen(0x0921, 19) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20121128
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20121121
+packetLen(0x0921, 10) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20120221
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20120214
+packetLen(0x0921, -1) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20120207
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#endif
+
+// Packet: 0x0922
+#if PACKETVER >= 20121205
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20121128
+packetLen(0x0922, 8) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20121114
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20121107
+packetLen(0x0922, 8) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20120502
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20120424
+packetLen(0x0922, 10) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20120207
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#endif
+
+// Packet: 0x0923
+#if PACKETVER >= 20121010
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20120925
+packetLen(0x0923, 6) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20120523
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20120515
+packetLen(0x0923, 7) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20120502
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20120424
+packetLen(0x0923, 19) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20120207
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#endif
+
+// Packet: 0x0924
+#if PACKETVER >= 20120612
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20120601
+packetLen(0x0924, 90) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20120207
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#endif
+
+// Packet: 0x0925
+#if PACKETVER >= 20121017
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20121010
+packetLen(0x0925, 12) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20120307
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20120228
+packetLen(0x0925, -1) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20120207
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#endif
+
+// Packet: 0x0926
+#if PACKETVER >= 20120905
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20120830
+packetLen(0x0926, 8) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20120502
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20120424
+packetLen(0x0926, 6) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20120314
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20120307
+packetLen(0x0926, 18) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20120207
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#endif
+
+// Packet: 0x0927
+#if PACKETVER >= 20121128
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20121121
+packetLen(0x0927, 19) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20121010
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20120925
+packetLen(0x0927, 6) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20120911
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20120905
+packetLen(0x0927, 18) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20120830
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20120822
+packetLen(0x0927, 6) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20120207
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#endif
+
+// Packet: 0x0928
+#if PACKETVER >= 20120801
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20120724
+packetLen(0x0928, -1) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20120307
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20120228
+packetLen(0x0928, 26) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20120207
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#endif
+
+// Packet: 0x0929
+#if PACKETVER >= 20121128
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20121121
+packetLen(0x0929, 4) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20120822
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20120814
+packetLen(0x0929, 8) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20120801
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20120724
+packetLen(0x0929, 12) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20120314
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20120307
+packetLen(0x0929, 26) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20120207
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#endif
+
+// Packet: 0x092a
+#if PACKETVER >= 20120808
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20120801
+packetLen(0x092a, 4) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20120320
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20120314
+packetLen(0x092a, 6) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20120207
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#endif
+
+// Packet: 0x092b
+#if PACKETVER >= 20121107
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20121031
+packetLen(0x092b, 4) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20120801
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20120724
+packetLen(0x092b, 90) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20120523
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20120515
+packetLen(0x092b, 8) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20120404
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20120328
+packetLen(0x092b, 6) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20120207
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#endif
+
+// Packet: 0x092c
+#if PACKETVER >= 20120710
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20120702
+packetLen(0x092c, -1) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20120529
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20120523
+packetLen(0x092c, 5) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20120207
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#endif
+
+// Packet: 0x092d
+#if PACKETVER >= 20120716
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20120710
+packetLen(0x092d, 12) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20120307
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20120228
+packetLen(0x092d, -1) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20120207
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#endif
+
+// Packet: 0x092e
+#if PACKETVER >= 20120808
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20120801
+packetLen(0x092e, 6) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20120612
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20120601
+packetLen(0x092e, -1) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20120410
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20120404
+packetLen(0x092e, 5) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20120207
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#endif
+
+// Packet: 0x092f
+#if PACKETVER >= 20121205
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20121128
+packetLen(0x092f, 6) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20120702
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20120626
+packetLen(0x092f, 4) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20120612
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20120601
+packetLen(0x092f, -1) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20120207
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#endif
+
+// Packet: 0x0930
+#if PACKETVER >= 20121121
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20121114
+packetLen(0x0930, 4) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20120919
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20120911
+packetLen(0x0930, -1) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20120808
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20120801
+packetLen(0x0930, 6) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20120529
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20120523
+packetLen(0x0930, 4) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20120228
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20120221
+packetLen(0x0930, 26) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20120207
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#endif
+
+// Packet: 0x0931
+#if PACKETVER >= 20121205
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20121128
+packetLen(0x0931, 7) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20121031
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20121024
+packetLen(0x0931, 6) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20120320
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20120314
+packetLen(0x0931, 8) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20120207
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#endif
+
+// Packet: 0x0932
+#if PACKETVER >= 20121227
+packetLen(0x0932, 5) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20121218
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20121212
+packetLen(0x0932, 18) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20121010
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20120925
+packetLen(0x0932, 6) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20120822
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20120814
+packetLen(0x0932, 10) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20120207
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#endif
+
+// Packet: 0x0933
+#if PACKETVER >= 20121227
+packetLen(0x0933, -1) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20120307
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20120228
+packetLen(0x0933, 18) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20120221
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20120214
+packetLen(0x0933, 6) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20120207
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#endif
+
+// Packet: 0x0934
+#if PACKETVER >= 20121114
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20121107
+packetLen(0x0934, 12) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20121017
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20121010
+packetLen(0x0934, 6) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20120905
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20120830
+packetLen(0x0934, 5) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20120822
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20120814
+packetLen(0x0934, 10) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20120808
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20120801
+packetLen(0x0934, 10) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20120404
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20120328
+packetLen(0x0934, 6) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20120207
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#endif
+
+// Packet: 0x0935
+#if PACKETVER >= 20121227
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20121218
+packetLen(0x0935, 26) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20121121
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20121114
+packetLen(0x0935, 10) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20120830
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20120822
+packetLen(0x0935, 5) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20120702
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20120626
+packetLen(0x0935, 6) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20120228
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20120221
+packetLen(0x0935, -1) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20120207
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#endif
+
+// Packet: 0x0936
+#if PACKETVER >= 20120716
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20120710
+packetLen(0x0936, 8) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20120702
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20120626
+packetLen(0x0936, 12) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20120612
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20120601
+packetLen(0x0936, 8) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20120207
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#endif
+
+// Packet: 0x0937
+#if PACKETVER >= 20120830
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20120822
+packetLen(0x0937, 10) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20120307
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20120228
+packetLen(0x0937, 26) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20120221
+packetLen(0x0937, 8) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20120207
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#endif
+
+// Packet: 0x0938
+#if PACKETVER >= 20121128
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20121121
+packetLen(0x0938, 12) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20121114
+packetLen(0x0938, -1) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20120801
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20120724
+packetLen(0x0938, 10) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20120702
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20120626
+packetLen(0x0938, -1) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20120417
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20120410
+packetLen(0x0938, 6) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20120207
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#endif
+
+// Packet: 0x0939
+#if PACKETVER >= 20120207
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#endif
+
+// Packet: 0x093a
+#if PACKETVER >= 20121212
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20121205
+packetLen(0x093a, 6) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20121031
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20121024
+packetLen(0x093a, 8) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20120702
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20120626
+packetLen(0x093a, 90) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20120601
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20120529
+packetLen(0x093a, 19) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20120320
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20120314
+packetLen(0x093a, 8) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20120207
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#endif
+
+// Packet: 0x093b
+#if PACKETVER >= 20121121
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20121114
+packetLen(0x093b, 12) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20121107
+packetLen(0x093b, 10) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20120314
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20120307
+packetLen(0x093b, 8) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20120207
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#endif
+
+// Packet: 0x093c
+#if PACKETVER >= 20121121
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20121114
+packetLen(0x093c, 8) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20121017
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20121010
+packetLen(0x093c, 8) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120911
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120905
+packetLen(0x093c, 12) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120808
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120801
+packetLen(0x093c, 26) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120724
+packetLen(0x093c, 8) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120502
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120424
+packetLen(0x093c, 5) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120228
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120221
+packetLen(0x093c, 8) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120207
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#endif
+
+// Packet: 0x093d
+#if PACKETVER >= 20120814
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20120808
+packetLen(0x093d, 5) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20120207
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#endif
+
+// Packet: 0x093e
+#if PACKETVER >= 20121212
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20121205
+packetLen(0x093e, 8) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20120919
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20120911
+packetLen(0x093e, 12) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20120529
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20120523
+packetLen(0x093e, 90) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20120404
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20120328
+packetLen(0x093e, 10) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20120207
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#endif
+
+// Packet: 0x093f
+#if PACKETVER >= 20121212
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20121205
+packetLen(0x093f, 10) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20120207
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#endif
+
+// Packet: 0x0940
+#if PACKETVER >= 20121227
+packetLen(0x0940, 10) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120830
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120822
+packetLen(0x0940, 12) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120814
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120808
+packetLen(0x0940, 10) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120626
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120618
+packetLen(0x0940, -1) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120515
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120508
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120410
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120404
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120207
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#endif
+
+// Packet: 0x0941
+#if PACKETVER >= 20121121
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20121114
+packetLen(0x0941, 26) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120822
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120814
+packetLen(0x0941, 90) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120808
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120801
+packetLen(0x0941, 8) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120529
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120523
+packetLen(0x0941, 6) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120502
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120424
+packetLen(0x0941, 6) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120320
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120314
+packetLen(0x0941, 26) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120307
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120228
+packetLen(0x0941, 6) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20120207
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#endif
+
+// Packet: 0x0942
+#if PACKETVER >= 20121031
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20121024
+packetLen(0x0942, -1) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20121017
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20121010
+packetLen(0x0942, 6) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20120925
+packetLen(0x0942, 36) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20120307
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20120228
+packetLen(0x0942, 5) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20120207
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#endif
+
+// Packet: 0x0943
+#if PACKETVER >= 20120830
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20120822
+packetLen(0x0943, 8) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20120612
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20120601
+packetLen(0x0943, 4) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20120207
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#endif
+
+// Packet: 0x0944
+#if PACKETVER >= 20121121
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20121114
+packetLen(0x0944, -1) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20120911
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20120905
+packetLen(0x0944, 26) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20120710
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20120702
+packetLen(0x0944, 5) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20120523
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20120515
+packetLen(0x0944, 18) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20120207
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#endif
+
+// Packet: 0x0945
+#if PACKETVER >= 20121205
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20121128
+packetLen(0x0945, 5) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20121114
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20121107
+packetLen(0x0945, 90) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20120911
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20120905
+packetLen(0x0945, -1) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20120830
+packetLen(0x0945, 6) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20120801
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20120724
+packetLen(0x0945, 7) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20120417
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20120410
+packetLen(0x0945, -1) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20120328
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20120320
+packetLen(0x0945, 19) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20120307
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20120228
+packetLen(0x0945, 6) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20120207
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#endif
+
+// Packet: 0x0946
+#if PACKETVER >= 20121227
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20121218
+packetLen(0x0946, 36) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20121212
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20121205
+packetLen(0x0946, 10) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20121128
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20121121
+packetLen(0x0946, 5) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20121017
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20121010
+packetLen(0x0946, 19) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20120808
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20120801
+packetLen(0x0946, -1) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20120320
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20120314
+packetLen(0x0946, 6) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20120207
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#endif
+
+// Packet: 0x0947
+#if PACKETVER >= 20121227
+packetLen(0x0947, 6) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20121218
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20121212
+packetLen(0x0947, 5) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20121031
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20121024
+packetLen(0x0947, 6) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20121017
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20121010
+packetLen(0x0947, 10) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120523
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120515
+packetLen(0x0947, 10) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120502
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120424
+packetLen(0x0947, 4) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120410
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120404
+packetLen(0x0947, 36) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120307
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120228
+packetLen(0x0947, 6) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20120207
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#endif
+
+// Packet: 0x0948
+#if PACKETVER >= 20121010
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20120925
+packetLen(0x0948, 18) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20120919
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20120911
+packetLen(0x0948, 10) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20120502
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20120424
+packetLen(0x0948, 6) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20120207
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#endif
+
+// Packet: 0x0949
+#if PACKETVER >= 20121121
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20121114
+packetLen(0x0949, 18) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20120919
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20120911
+packetLen(0x0949, 4) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20120207
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#endif
+
+// Packet: 0x094a
+#if PACKETVER >= 20121121
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20121114
+packetLen(0x094a, 10) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20120710
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20120702
+packetLen(0x094a, 6) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20120626
+packetLen(0x094a, -1) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20120207
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#endif
+
+// Packet: 0x094b
+#if PACKETVER >= 20121212
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20121205
+packetLen(0x094b, 6) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20121121
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20121114
+packetLen(0x094b, 19) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20120919
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20120911
+packetLen(0x094b, -1) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20120905
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20120830
+packetLen(0x094b, 18) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20120716
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20120710
+packetLen(0x094b, 5) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20120523
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20120515
+packetLen(0x094b, 5) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20120417
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20120410
+packetLen(0x094b, 19) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20120207
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#endif
+
+// Packet: 0x094c
+#if PACKETVER >= 20121017
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20121010
+packetLen(0x094c, 6) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20120601
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20120529
+packetLen(0x094c, 5) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20120207
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#endif
+
+// Packet: 0x094d
+#if PACKETVER >= 20121128
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20121121
+packetLen(0x094d, 8) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20121114
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20121107
+packetLen(0x094d, 5) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20120830
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20120822
+packetLen(0x094d, 36) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20120529
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20120523
+packetLen(0x094d, 26) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20120515
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20120508
+packetLen(0x094d, 6) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20120307
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20120228
+packetLen(0x094d, 8) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20120207
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#endif
+
+// Packet: 0x094e
+#if PACKETVER >= 20120830
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20120822
+packetLen(0x094e, 6) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20120808
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20120801
+packetLen(0x094e, 8) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20120716
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20120710
+packetLen(0x094e, 26) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20120612
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20120601
+packetLen(0x094e, 5) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20120207
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#endif
+
+// Packet: 0x094f
+#if PACKETVER >= 20121121
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20121114
+packetLen(0x094f, 6) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20120320
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20120314
+packetLen(0x094f, 8) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20120207
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#endif
+
+// Packet: 0x0950
+#if PACKETVER >= 20121205
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20121128
+packetLen(0x0950, 12) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20121121
+packetLen(0x0950, 5) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20121010
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20120925
+packetLen(0x0950, 5) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20120911
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20120905
+packetLen(0x0950, 6) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20120207
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#endif
+
+// Packet: 0x0951
+#if PACKETVER >= 20121218
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20121212
+packetLen(0x0951, 8) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20120702
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20120626
+packetLen(0x0951, 6) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20120404
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20120328
+packetLen(0x0951, 7) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20120207
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#endif
+
+// Packet: 0x0952
+#if PACKETVER >= 20121128
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20121121
+packetLen(0x0952, 6) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20120919
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20120911
+packetLen(0x0952, 90) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20120221
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20120214
+packetLen(0x0952, 19) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20120207
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#endif
+
+// Packet: 0x0953
+#if PACKETVER >= 20121227
+packetLen(0x0953, 8) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20121218
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20121212
+packetLen(0x0953, 6) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20121205
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20121128
+packetLen(0x0953, 6) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20120830
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20120822
+packetLen(0x0953, 18) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20120716
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20120710
+packetLen(0x0953, 4) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20120702
+packetLen(0x0953, 5) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20120221
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20120214
+packetLen(0x0953, -1) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20120207
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#endif
+
+// Packet: 0x0954
+#if PACKETVER >= 20121212
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20121205
+packetLen(0x0954, 7) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20121128
+packetLen(0x0954, 8) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20121121
+packetLen(0x0954, 36) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20121031
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20121024
+packetLen(0x0954, 90) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20120618
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20120612
+packetLen(0x0954, 36) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20120404
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20120328
+packetLen(0x0954, 6) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20120307
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20120228
+packetLen(0x0954, 6) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20120207
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#endif
+
+// Packet: 0x0955
+#if PACKETVER >= 20120830
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20120822
+packetLen(0x0955, -1) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20120502
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20120424
+packetLen(0x0955, 6) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20120207
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#endif
+
+// Packet: 0x0956
+#if PACKETVER >= 20121010
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20120925
+packetLen(0x0956, 8) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20120919
+packetLen(0x0956, 36) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20120716
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20120710
+packetLen(0x0956, -1) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20120529
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20120523
+packetLen(0x0956, 6) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20120207
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#endif
+
+// Packet: 0x0957
+#if PACKETVER >= 20121227
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20121218
+packetLen(0x0957, 18) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20121212
+packetLen(0x0957, 90) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20121128
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20121121
+packetLen(0x0957, 26) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20121017
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20120925
+packetLen(0x0957, 5) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20120801
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20120724
+packetLen(0x0957, 36) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20120523
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20120515
+packetLen(0x0957, 6) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20120221
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20120214
+packetLen(0x0957, 90) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20120207
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#endif
+
+// Packet: 0x0958
+#if PACKETVER >= 20121227
+packetLen(0x0958, 8) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20121128
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20121121
+packetLen(0x0958, 6) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20121010
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20120925
+packetLen(0x0958, 6) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20120919
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20120911
+packetLen(0x0958, 10) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20120410
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20120404
+packetLen(0x0958, 8) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20120207
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#endif
+
+// Packet: 0x0959
+#if PACKETVER >= 20121212
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20121205
+packetLen(0x0959, 26) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20121017
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20121010
+packetLen(0x0959, -1) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20120919
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20120911
+packetLen(0x0959, 7) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20120905
+packetLen(0x0959, 6) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20120801
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20120724
+packetLen(0x0959, 26) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20120207
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#endif
+
+// Packet: 0x095a
+#if PACKETVER >= 20120207
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#endif
+
+// Packet: 0x095b
+#if PACKETVER >= 20121218
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20121212
+packetLen(0x095b, 8) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20120830
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20120822
+packetLen(0x095b, 6) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20120612
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20120601
+packetLen(0x095b, 8) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20120502
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20120424
+packetLen(0x095b, -1) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20120207
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#endif
+
+// Packet: 0x095c
+#if PACKETVER >= 20121121
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20121114
+packetLen(0x095c, -1) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20121017
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20121010
+packetLen(0x095c, 5) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20120314
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20120307
+packetLen(0x095c, 4) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20120228
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20120221
+packetLen(0x095c, 5) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20120214
+packetLen(0x095c, 10) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20120207
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#endif
+
+// Packet: 0x095d
+#if PACKETVER >= 20121227
+packetLen(0x095d, -1) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20121031
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20121024
+packetLen(0x095d, 26) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20120710
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20120702
+packetLen(0x095d, 36) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20120404
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20120328
+packetLen(0x095d, 26) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20120207
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#endif
+
+// Packet: 0x095e
+#if PACKETVER >= 20121031
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20121024
+packetLen(0x095e, 6) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20121010
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20120925
+packetLen(0x095e, 10) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20120307
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20120228
+packetLen(0x095e, 5) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20120207
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#endif
+
+// Packet: 0x095f
+#if PACKETVER >= 20120207
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#endif
+
+// Packet: 0x0960
+#if PACKETVER >= 20121205
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20121128
+packetLen(0x0960, -1) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20121114
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20121107
+packetLen(0x0960, 6) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20121024
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20121017
+packetLen(0x0960, 5) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20120911
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20120905
+packetLen(0x0960, 90) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20120716
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20120710
+packetLen(0x0960, 90) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20120702
+packetLen(0x0960, 5) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20120207
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#endif
+
+// Packet: 0x0961
+#if PACKETVER >= 20120710
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20120702
+packetLen(0x0961, 4) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20120417
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20120410
+packetLen(0x0961, 36) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20120307
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20120228
+packetLen(0x0961, 10) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20120207
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#endif
+
+// Packet: 0x0962
+#if PACKETVER >= 20121227
+packetLen(0x0962, 26) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20121024
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20121017
+packetLen(0x0962, 6) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20120702
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20120626
+packetLen(0x0962, 8) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20120207
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#endif
+
+// Packet: 0x0963
+#if PACKETVER >= 20121114
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20121107
+packetLen(0x0963, 4) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20121010
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20120925
+packetLen(0x0963, 8) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20120919
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20120911
+packetLen(0x0963, 6) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20120801
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20120724
+packetLen(0x0963, 6) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20120612
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20120601
+packetLen(0x0963, 8) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20120404
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20120328
+packetLen(0x0963, 6) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20120314
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20120307
+packetLen(0x0963, 8) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20120221
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20120214
+packetLen(0x0963, 7) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20120207
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#endif
+
+// Packet: 0x0964
+#if PACKETVER >= 20121017
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20121010
+packetLen(0x0964, 26) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20120905
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20120830
+packetLen(0x0964, 6) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20120808
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20120801
+packetLen(0x0964, 12) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20120523
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20120515
+packetLen(0x0964, 6) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20120320
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20120314
+packetLen(0x0964, 18) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20120207
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#endif
+
+// Packet: 0x0965
+#if PACKETVER >= 20121218
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20121212
+packetLen(0x0965, -1) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20121121
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20121114
+packetLen(0x0965, 6) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20121031
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20121017
+packetLen(0x0965, 19) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20120801
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20120724
+packetLen(0x0965, 6) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20120502
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20120424
+packetLen(0x0965, 8) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20120207
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#endif
+
+// Packet: 0x0966
+#if PACKETVER >= 20121218
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20121212
+packetLen(0x0966, -1) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20121205
+packetLen(0x0966, 8) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20121114
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20121107
+packetLen(0x0966, 18) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120919
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120911
+packetLen(0x0966, 8) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120801
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120724
+packetLen(0x0966, 8) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120523
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120515
+packetLen(0x0966, 4) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120328
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120320
+packetLen(0x0966, 5) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120221
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120214
+packetLen(0x0966, 5) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20120207
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#endif
+
+// Packet: 0x0967
+#if PACKETVER >= 20120911
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20120905
+packetLen(0x0967, 7) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20120822
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20120814
+packetLen(0x0967, -1) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20120404
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20120328
+packetLen(0x0967, 10) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20120228
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20120221
+packetLen(0x0967, 36) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20120207
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#endif
+
+// Packet: 0x0968
+#if PACKETVER >= 20121212
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20121205
+packetLen(0x0968, 5) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20120919
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20120911
+packetLen(0x0968, 5) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20120207
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#endif
+
+// Packet: 0x0969
+#if PACKETVER >= 20121017
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20121010
+packetLen(0x0969, 18) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20120822
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20120814
+packetLen(0x0969, 5) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20120228
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20120221
+packetLen(0x0969, 19) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20120207
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#endif
+
+// Packet: 0x096a
+#if PACKETVER >= 20121227
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20121212
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20121121
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20121114
+packetLen(0x096a, 8) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20121107
+packetLen(0x096a, 26) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20121031
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20121024
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20121017
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120925
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120919
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120911
+packetLen(0x096a, 36) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120905
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120830
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120814
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120808
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120724
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120716
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120626
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120612
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120601
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120529
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120523
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120515
+packetLen(0x096a, -1) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120508
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120502
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120424
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120417
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120410
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120404
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120328
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120307
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120228
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120221
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120214
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20120207
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#endif
+
+// Packet: 0x096b
+#if PACKETVER >= 20120404
+packetLen(0x096b, 4) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20120207
+packetLen(0x096b, 3) // ZC_PRNPC_STATE
+#endif
+
+// Packet: 0x096c
+#if PACKETVER >= 20120207
+packetLen(0x096c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#endif
+
+// Packet: 0x096d
+#if PACKETVER >= 20120228
+packetLen(0x096d, -1) // ZC_MERGE_ITEM_OPEN
+#elif PACKETVER >= 20120214
+packetLen(0x096d, 2) // ZC_MERGE_ITEM_OPEN
+#endif
+
+// Packet: 0x096e
+#if PACKETVER >= 20120228
+packetLen(0x096e, -1) // CZ_REQ_MERGE_ITEM
+#elif PACKETVER >= 20120221
+packetLen(0x096e, 6) // CZ_REQ_MERGE_ITEM
+#elif PACKETVER >= 20120214
+packetLen(0x096e, 10) // CZ_REQ_MERGE_ITEM
+#endif
+
+// Packet: 0x096f
+#if PACKETVER >= 20120221
+packetLen(0x096f, 7) // ZC_ACK_MERGE_ITEM
+#elif PACKETVER >= 20120214
+packetLen(0x096f, 3) // ZC_ACK_MERGE_ITEM
+#endif
+
+// Packet: 0x0970
+#if PACKETVER >= 20120214
+packetLen(0x0970, 31) // CH_MAKE_CHAR_NOT_STATS
+#endif
+
+// Packet: 0x0971
+#if PACKETVER >= 20120214
+packetLen(0x0971, 6) // ZC_PARTY_RECRUIT_REFUSE_VOLUNTEER_TO_PM
+#endif
+
+// Packet: 0x0972
+#if PACKETVER >= 20120214
+packetLen(0x0972, -1) // ZC_SAY_DIALOG2
+#endif
+
+// Packet: 0x0973
+#if PACKETVER >= 20120214
+packetLen(0x0973, 7) // ZC_WAIT_DIALOG2
+#endif
+
+// Packet: 0x0974
+#if PACKETVER >= 20120221
+packetLen(0x0974, 2) // CZ_CANCEL_MERGE_ITEM
+#endif
+
+// Packet: 0x0975
+#if PACKETVER >= 20120221
+packetLen(0x0975, -1) // ZC_STORE_ITEMLIST_NORMAL_V2
+#endif
+
+// Packet: 0x0976
+#if PACKETVER >= 20120221
+packetLen(0x0976, -1) // ZC_STORE_ITEMLIST_EQUIP_V2
+#endif
+
+// Packet: 0x0977
+#if PACKETVER >= 20120228
+packetLen(0x0977, 14) // ZC_HP_INFO
+#elif PACKETVER >= 20120221
+packetLen(0x0977, 15) // ZC_HP_INFO
+#endif
+
+// Packet: 0x0978
+#if PACKETVER >= 20120328
+packetLen(0x0978, 6) // CZ_REQ_BEFORE_WORLD_INFO
+#endif
+
+// Packet: 0x0979
+#if PACKETVER >= 20120328
+packetLen(0x0979, 50) // ZC_ACK_BEFORE_WORLD_INFO
+#endif
+
+// Packet: 0x097a
+#if PACKETVER >= 20120410
+packetLen(0x097a, -1) // ZC_ALL_QUEST_LIST2
+#endif
+
+// Packet: 0x097b
+#if PACKETVER >= 20120417
+packetLen(0x097b, -1) // ZC_PERSONAL_INFOMATION2
+#endif
+
+// Packet: 0x097c
+#if PACKETVER >= 20120502
+packetLen(0x097c, 4) // CZ_REQ_RANKING
+#endif
+
+// Packet: 0x097d
+#if PACKETVER >= 20120502
+packetLen(0x097d, 288) // ZC_ACK_RANKING
+#endif
+
+// Packet: 0x097e
+#if PACKETVER >= 20120502
+packetLen(0x097e, 12) // ZC_UPDATE_RANKING_POINT
+#endif
+
+// Packet: 0x097f
+#if PACKETVER >= 20120502
+packetLen(0x097f, -1) // ZC_SELECTCART
+#endif
+
+// Packet: 0x0980
+#if PACKETVER >= 20120502
+packetLen(0x0980, 7) // CZ_SELECTCART
+#endif
+
+// Packet: 0x0981
+#if PACKETVER >= 20120515
+packetLen(0x0981, -1) // ZC_PERSONAL_INFOMATION_CHN
+#endif
+
+// Packet: 0x0982
+#if PACKETVER >= 20120523
+packetLen(0x0982, 7) // ZC_FATIGUE_CHN
+#elif PACKETVER >= 20120515
+packetLen(0x0982, 3) // ZC_FATIGUE_CHN
+#endif
+
+// Packet: 0x0983
+#if PACKETVER >= 20120529
+packetLen(0x0983, 29) // ZC_MSG_STATE_CHANGE3
+#endif
+
+// Packet: 0x0984
+#if PACKETVER >= 20120529
+packetLen(0x0984, 28) // ZC_EFST_SET_ENTER2
+#endif
+
+// Packet: 0x0985
+#if PACKETVER >= 20120601
+packetLen(0x0985, -1) // ZC_SKILL_POSTDELAY_LIST2
+#endif
+
+// Packet: 0x0986
+#if PACKETVER >= 20120626
+packetLen(0x0986, 10) // AC_SHUTDOWN_NOTIFY
+#elif PACKETVER >= 20120612
+packetLen(0x0986, 6) // AC_SHUTDOWN_NOTIFY
+#endif
+
+// Packet: 0x0987
+#if PACKETVER >= 20120702
+packetLen(0x0987, 63) // CA_LOGIN6
+#endif
+
+// Packet: 0x0988
+#if PACKETVER >= 20120716
+packetLen(0x0988, 6) // ZC_NOTIFY_CLAN_CONNECTINFO
+#elif PACKETVER >= 20120702
+packetLen(0x0988, 2) // ZC_NOTIFY_CLAN_CONNECTINFO
+#endif
+
+// Packet: 0x0989
+#if PACKETVER >= 20120716
+packetLen(0x0989, 2) // ZC_ACK_CLAN_LEAVE
+#elif PACKETVER >= 20120702
+packetLen(0x0989, 6) // ZC_ACK_CLAN_LEAVE
+#endif
+
+// Packet: 0x098a
+#if PACKETVER >= 20120702
+packetLen(0x098a, -1) // ZC_CLANINFO
+#endif
+
+// Packet: 0x098b
+#if PACKETVER >= 20120716
+packetLen(0x098b, 2) // AC_REQ_NEW_USER
+#endif
+
+// Packet: 0x098c
+#if PACKETVER >= 20120716
+packetLen(0x098c, 4) // CA_ACK_NEW_USER
+#endif
+
+// Packet: 0x098d
+#if PACKETVER >= 20120716
+packetLen(0x098d, -1) // CZ_CLAN_CHAT
+#endif
+
+// Packet: 0x098e
+#if PACKETVER >= 20120716
+packetLen(0x098e, -1) // ZC_NOTIFY_CLAN_CHAT
+#endif
+
+// Packet: 0x098f
+#if PACKETVER >= 20120724
+packetLen(0x098f, -1) // CH_DELETE_CHAR3_EXT
+#endif
+
+// Packet: 0x0990
+#if PACKETVER >= 20120925
+packetLen(0x0990, 31) // ZC_ITEM_PICKUP_ACK_V5
+#endif
+
+// Packet: 0x0991
+#if PACKETVER >= 20120925
+packetLen(0x0991, -1) // ZC_INVENTORY_ITEMLIST_NORMAL_V5
+#endif
+
+// Packet: 0x0992
+#if PACKETVER >= 20120925
+packetLen(0x0992, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V5
+#endif
+
+// Packet: 0x0993
+#if PACKETVER >= 20120925
+packetLen(0x0993, -1) // ZC_CART_ITEMLIST_NORMAL_V5
+#endif
+
+// Packet: 0x0994
+#if PACKETVER >= 20120925
+packetLen(0x0994, -1) // ZC_CART_ITEMLIST_EQUIP_V5
+#endif
+
+// Packet: 0x0995
+#if PACKETVER >= 20120925
+packetLen(0x0995, -1) // ZC_STORE_ITEMLIST_NORMAL_V5
+#endif
+
+// Packet: 0x0996
+#if PACKETVER >= 20120925
+packetLen(0x0996, -1) // ZC_STORE_ITEMLIST_EQUIP_V5
+#endif
+
+// Packet: 0x0997
+#if PACKETVER >= 20120925
+packetLen(0x0997, -1) // ZC_EQUIPWIN_MICROSCOPE_V5
+#endif
+
+// Packet: 0x0998
+#if PACKETVER >= 20120925
+packetLen(0x0998, 8) // CZ_REQ_WEAR_EQUIP_V5
+#endif
+
+// Packet: 0x0999
+#if PACKETVER >= 20120925
+packetLen(0x0999, 11) // ZC_ACK_WEAR_EQUIP_V5
+#endif
+
+// Packet: 0x099a
+#if PACKETVER >= 20120925
+packetLen(0x099a, 9) // ZC_ACK_TAKEOFF_EQUIP_V5
+#endif
+
+// Packet: 0x099b
+#if PACKETVER >= 20121010
+packetLen(0x099b, 8) // ZC_MAPPROPERTY_R2
+#endif
+
+// Packet: 0x099c
+#if PACKETVER >= 20121024
+packetLen(0x099c, 6) // CH_REQ_CHARINFO_PER_PAGE
+#endif
+
+// Packet: 0x099d
+#if PACKETVER >= 20121024
+packetLen(0x099d, -1) // HC_ACK_CHARINFO_PER_PAGE
+#endif
+
+// Packet: 0x099e
+#if PACKETVER >= 20121128
+packetLen(0x099e, 12) // HC_QUEUE_ORDER
+#endif
+
+// Packet: 0x099f
+#if PACKETVER >= 20121212
+packetLen(0x099f, -1) // ZC_SKILL_ENTRY4
+#endif
+
+// Packet: 0x09a0
+#if PACKETVER >= 20121212
+packetLen(0x09a0, 6) // HC_CHARLIST_NOTIFY
+#endif
+
+// Packet: 0x09a1
+#if PACKETVER >= 20121212
+packetLen(0x09a1, 2) // CH_CHARLIST_REQ
+#endif
+
+
+#endif /* COMMON_PACKETS2012_LEN_RE_H */
diff --git a/src/common/packets/packets2013_len_main.h b/src/common/packets/packets2013_len_main.h
new file mode 100644
index 000000000..f7a60ade9
--- /dev/null
+++ b/src/common/packets/packets2013_len_main.h
@@ -0,0 +1,8876 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2013_LEN_MAIN_H
+#define COMMON_PACKETS2013_LEN_MAIN_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 146) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 22) // CZ_ENTER
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 44) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 10) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, 14)
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+packetLen(0x0094, 19) // CZ_REQNAME
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+packetLen(0x00a7, 9)
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 9) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+packetLen(0x00f7, 17) // CZ_REQUEST_TIME
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+packetLen(0x0113, 25) // CZ_USE_SKILL
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 37) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+#if PACKETVER >= 20131230
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20131223
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20131218
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20131211
+packetLen(0x0202, 10) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20131016
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20131008
+packetLen(0x0202, 6) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20131002
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130828
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130821
+packetLen(0x0202, 10) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130814
+packetLen(0x0202, 8) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130807
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130717
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130710
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130703
+packetLen(0x0202, 6) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130612
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130605
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130502
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130424
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130417
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130320
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130313
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130227
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130220
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130109
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130103
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+
+// Packet: 0x022b
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+
+// Packet: 0x022c
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+
+// Packet: 0x022d
+#if PACKETVER >= 20131230
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20131223
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20131218
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20131106
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20131030
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+#elif PACKETVER >= 20131023
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20131016
+packetLen(0x022d, 8) // CZ_COMMAND_MER
+#elif PACKETVER >= 20131008
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20131002
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130814
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130807
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130731
+packetLen(0x022d, 26) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130717
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130703
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130612
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130605
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130515
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130508
+packetLen(0x022d, 8) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130502
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130424
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130313
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130306
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130227
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130220
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130109
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130103
+packetLen(0x022d, 4) // CZ_COMMAND_MER
+#endif
+
+// Packet: 0x022e
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+
+// Packet: 0x022f
+packetLen(0x022f, 5) // ZC_FEED_MER
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+#if PACKETVER >= 20131230
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20131223
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20131008
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20131002
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130904
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130828
+packetLen(0x023b, 90) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130814
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130807
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130717
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130710
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130612
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130605
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130529
+packetLen(0x023b, 5) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130502
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130424
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130410
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130403
+packetLen(0x023b, 6) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130306
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130220
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130215
+packetLen(0x023b, 6) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130109
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130103
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#endif
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+
+// Packet: 0x0275
+packetLen(0x0275, 37) // CH_ENTER2
+
+// Packet: 0x0276
+packetLen(0x0276, -1) // AC_ACCEPT_LOGIN2
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+#if PACKETVER >= 20131230
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20131218
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20131113
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20131106
+packetLen(0x0281, 6) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20131030
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20131023
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20131016
+packetLen(0x0281, 26) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20131008
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20131002
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130911
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130904
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130821
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130814
+packetLen(0x0281, 26) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130807
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130717
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130703
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130626
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130605
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130502
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130417
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130410
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130403
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130320
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130313
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130227
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130220
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130115
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130109
+packetLen(0x0281, 6) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130103
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#endif
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+
+// Packet: 0x0288
+packetLen(0x0288, -1) // CZ_PC_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0289
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0296
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0297
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0298
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+
+// Packet: 0x0299
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+
+// Packet: 0x029a
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+
+// Packet: 0x029b
+packetLen(0x029b, 80) // ZC_MER_INIT
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a5
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+
+// Packet: 0x02a6
+packetLen(0x02a6, -1) // ZC_HACKSH_CPX_MSG
+
+// Packet: 0x02a7
+packetLen(0x02a7, -1) // CZ_HACKSH_CPX_MSG
+
+// Packet: 0x02aa
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+
+// Packet: 0x02ab
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+
+// Packet: 0x02ac
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+
+// Packet: 0x02ad
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+
+// Packet: 0x02b0
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+
+// Packet: 0x02b1
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+
+// Packet: 0x02b2
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+
+// Packet: 0x02b3
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+
+// Packet: 0x02b4
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+
+// Packet: 0x02b5
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+
+// Packet: 0x02b6
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+
+// Packet: 0x02b7
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+
+// Packet: 0x02b8
+packetLen(0x02b8, 22) // ZC_ITEM_PICKUP_PARTY
+
+// Packet: 0x02b9
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+
+// Packet: 0x02ba
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+
+// Packet: 0x02bb
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+
+// Packet: 0x02bc
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+
+// Packet: 0x02c1
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+
+// Packet: 0x02c2
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+
+// Packet: 0x02c4
+#if PACKETVER >= 20131230
+packetLen(0x02c4, 10) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20130724
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20130717
+packetLen(0x02c4, 6) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20130626
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20130618
+packetLen(0x02c4, 5) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20130403
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20130327
+packetLen(0x02c4, 90) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20130103
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#endif
+
+// Packet: 0x02c5
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c6
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+
+// Packet: 0x02c7
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c8
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+
+// Packet: 0x02c9
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+
+// Packet: 0x02ca
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+
+// Packet: 0x02cb
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+
+// Packet: 0x02cc
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+
+// Packet: 0x02cd
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+
+// Packet: 0x02ce
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+
+// Packet: 0x02cf
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+
+// Packet: 0x02d0
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d1
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d2
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d3
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+
+// Packet: 0x02d4
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+
+// Packet: 0x02d5
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+
+// Packet: 0x02d6
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d7
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d8
+packetLen(0x02d8, 10) // CZ_CONFIG
+
+// Packet: 0x02d9
+packetLen(0x02d9, 10) // ZC_CONFIG
+
+// Packet: 0x02da
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+
+// Packet: 0x02db
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+
+// Packet: 0x02dc
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+
+// Packet: 0x02dd
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+
+// Packet: 0x02de
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+
+// Packet: 0x02df
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+
+// Packet: 0x02e0
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+
+// Packet: 0x02e1
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+
+// Packet: 0x02e2
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+
+// Packet: 0x02e3
+packetLen(0x02e3, 22) // CZ_USE_SKILL_NEW_JAPEN
+
+// Packet: 0x02e4
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+
+// Packet: 0x02e5
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+
+// Packet: 0x02e6
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+
+// Packet: 0x02e7
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+
+// Packet: 0x02e8
+packetLen(0x02e8, -1) // ZC_NORMAL_ITEMLIST3
+
+// Packet: 0x02e9
+packetLen(0x02e9, -1) // ZC_CART_NORMAL_ITEMLIST3
+
+// Packet: 0x02ea
+packetLen(0x02ea, -1) // ZC_STORE_NORMAL_ITEMLIST3
+
+// Packet: 0x02eb
+packetLen(0x02eb, 13) // ZC_ACCEPT_ENTER2
+
+// Packet: 0x02ec
+packetLen(0x02ec, 67) // ZC_NOTIFY_MOVEENTRY4
+
+// Packet: 0x02ed
+packetLen(0x02ed, 59) // ZC_NOTIFY_NEWENTRY4
+
+// Packet: 0x02ee
+packetLen(0x02ee, 60) // ZC_NOTIFY_STANDENTRY4
+
+// Packet: 0x02ef
+packetLen(0x02ef, 8) // ZC_NOTIFY_FONT
+
+// Packet: 0x02f0
+packetLen(0x02f0, 10) // ZC_PROGRESS
+
+// Packet: 0x02f1
+packetLen(0x02f1, 2) // CZ_PROGRESS
+
+// Packet: 0x02f2
+packetLen(0x02f2, 2) // ZC_PROGRESS_CANCEL
+
+// Packet: 0x02f3
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+
+// Packet: 0x02f4
+packetLen(0x02f4, 3) // ZC_IRMAIL_SEND_RES
+
+// Packet: 0x02f5
+packetLen(0x02f5, 7) // ZC_IRMAIL_NOTIFY
+
+// Packet: 0x02f6
+packetLen(0x02f6, 7) // CZ_IRMAIL_LIST
+
+// Packet: 0x035c
+packetLen(0x035c, 2) // CZ_OPEN_SIMPLE_CASHSHOP_ITEMLIST
+
+// Packet: 0x035d
+packetLen(0x035d, -1) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+
+// Packet: 0x035e
+packetLen(0x035e, 2) // CZ_CLOSE_WINDOW
+
+// Packet: 0x035f
+#if PACKETVER >= 20131230
+packetLen(0x035f, 5) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20131211
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20131204
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20131127
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20131106
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20131030
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20131008
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20131002
+packetLen(0x035f, 36) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130925
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130917
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130904
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130814
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130807
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130731
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130724
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130717
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130626
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130618
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130605
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130522
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130417
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130410
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130403
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130327
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130313
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130306
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130227
+packetLen(0x035f, 5) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130206
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130121
+packetLen(0x035f, 8) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130109
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130103
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#endif
+
+// Packet: 0x0360
+#if PACKETVER >= 20131230
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20131211
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20131106
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20131030
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20131008
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130925
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130911
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130904
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130828
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130821
+packetLen(0x0360, 36) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130814
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130807
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130717
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130710
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130703
+packetLen(0x0360, 26) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130626
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130618
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130605
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130529
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130522
+packetLen(0x0360, 5) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130417
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130410
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130403
+packetLen(0x0360, 36) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130320
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130313
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130306
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130227
+packetLen(0x0360, 19) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130220
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130215
+packetLen(0x0360, 36) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130206
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130130
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130121
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130109
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130103
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#endif
+
+// Packet: 0x0361
+#if PACKETVER >= 20131230
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20131223
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20131127
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20131120
+packetLen(0x0361, 6) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20131023
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20131016
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20131008
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20131002
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130911
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130904
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130828
+packetLen(0x0361, 12) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130821
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130814
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130807
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130717
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130710
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130612
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130605
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130502
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130424
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130227
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130220
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130121
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130115
+packetLen(0x0361, 8) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130109
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130103
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#endif
+
+// Packet: 0x0362
+#if PACKETVER >= 20131230
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20131218
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20131211
+packetLen(0x0362, 90) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20131106
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20131030
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20131016
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20131008
+packetLen(0x0362, 19) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20131002
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130911
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130904
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130814
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130807
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130717
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130703
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130618
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130605
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130529
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130522
+packetLen(0x0362, 26) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130515
+packetLen(0x0362, 5) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130502
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130417
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130410
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130403
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130320
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130313
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130227
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130220
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130215
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130206
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130130
+packetLen(0x0362, 5) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130109
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130103
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#endif
+
+// Packet: 0x0363
+#if PACKETVER >= 20131230
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20131218
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20131113
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20131106
+packetLen(0x0363, 10) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20131030
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20131008
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20131002
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130911
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130904
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130814
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130807
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130717
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130703
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130618
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130605
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130502
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130417
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130410
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130403
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130327
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130320
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130313
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130227
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130220
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130109
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130103
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#endif
+
+// Packet: 0x0364
+#if PACKETVER >= 20131230
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20131218
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20131204
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20131127
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20131120
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20131113
+packetLen(0x0364, 90) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20131106
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20131030
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20131023
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20131016
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20131008
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20131002
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130917
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130911
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130828
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130814
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130807
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130717
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130703
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130618
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130605
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130502
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130417
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130410
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130403
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130320
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130313
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130227
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130220
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130109
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130103
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#endif
+
+// Packet: 0x0365
+#if PACKETVER >= 20131230
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20131218
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20131204
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20131127
+packetLen(0x0365, 5) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20131106
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20131030
+packetLen(0x0365, 19) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20131008
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20131002
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130911
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130904
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130814
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130807
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130717
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130703
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130618
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130605
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130502
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130417
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130410
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130403
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130327
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130320
+packetLen(0x0365, 12) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130313
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130227
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130220
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130115
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130109
+packetLen(0x0365, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130103
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#endif
+
+// Packet: 0x0366
+#if PACKETVER >= 20131230
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20131218
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20131204
+packetLen(0x0366, 6) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20131127
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20131106
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20131030
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20131023
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20131016
+packetLen(0x0366, 6) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20131008
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20131002
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130917
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130904
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130828
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130821
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130814
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130807
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130717
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130626
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130618
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130605
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130522
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130417
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130410
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130403
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130320
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130313
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130227
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130220
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130215
+packetLen(0x0366, 19) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130206
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130130
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130121
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130109
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130103
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#endif
+
+// Packet: 0x0367
+#if PACKETVER >= 20130417
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20130410
+packetLen(0x0367, 6) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20130313
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20130306
+packetLen(0x0367, 6) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20130206
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20130130
+packetLen(0x0367, 6) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20130103
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#endif
+
+// Packet: 0x0368
+#if PACKETVER >= 20131230
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20131211
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20131204
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20131127
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20131120
+packetLen(0x0368, 12) // CZ_REQNAME2
+#elif PACKETVER >= 20131106
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20131030
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20131008
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20130925
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20130917
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20130904
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20130821
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20130814
+packetLen(0x0368, 19) // CZ_REQNAME2
+#elif PACKETVER >= 20130807
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20130717
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20130626
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20130618
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20130605
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20130529
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20130417
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20130410
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20130403
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20130320
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20130313
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20130306
+packetLen(0x0368, 90) // CZ_REQNAME2
+#elif PACKETVER >= 20130227
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20130206
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20130130
+packetLen(0x0368, 5) // CZ_REQNAME2
+#elif PACKETVER >= 20130121
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20130115
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20130109
+packetLen(0x0368, 10) // CZ_REQNAME2
+#elif PACKETVER >= 20130103
+packetLen(0x0368, 6) // CZ_REQNAME2
+#endif
+
+// Packet: 0x0369
+#if PACKETVER >= 20131230
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20131211
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20131204
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20131127
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20131113
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20131106
+packetLen(0x0369, -1) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20131030
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20131008
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130925
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130917
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130904
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130814
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130807
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130717
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130626
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130618
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130605
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130529
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130522
+packetLen(0x0369, 6) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130417
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130410
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130403
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130320
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130313
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130227
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130206
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130130
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130121
+packetLen(0x0369, 18) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130109
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130103
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#endif
+
+// Packet: 0x03dd
+packetLen(0x03dd, 18) // AHC_GAME_GUARD
+
+// Packet: 0x03de
+packetLen(0x03de, 18) // CAH_ACK_GAME_GUARD
+
+// Packet: 0x0436
+#if PACKETVER >= 20131230
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20131223
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20131113
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20131106
+packetLen(0x0436, 36) // CZ_ENTER2
+#elif PACKETVER >= 20131030
+packetLen(0x0436, 18) // CZ_ENTER2
+#elif PACKETVER >= 20131008
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20131002
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20130917
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20130911
+packetLen(0x0436, -1) // CZ_ENTER2
+#elif PACKETVER >= 20130904
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20130814
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20130807
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20130717
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20130703
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20130618
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20130605
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20130515
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20130508
+packetLen(0x0436, 26) // CZ_ENTER2
+#elif PACKETVER >= 20130502
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20130424
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20130320
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20130313
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20130227
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20130220
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20130215
+packetLen(0x0436, 18) // CZ_ENTER2
+#elif PACKETVER >= 20130109
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20130103
+packetLen(0x0436, 36) // CZ_ENTER2
+#endif
+
+// Packet: 0x0437
+#if PACKETVER >= 20131230
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20131211
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20131204
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20131127
+packetLen(0x0437, 8) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20131106
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20131030
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20131008
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20131002
+packetLen(0x0437, 6) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130925
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130917
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130904
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130828
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130821
+packetLen(0x0437, 8) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130814
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130731
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130724
+packetLen(0x0437, 8) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130717
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130626
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130618
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130605
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130522
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130417
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130410
+packetLen(0x0437, 6) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130403
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130320
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130313
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130306
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130206
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130130
+packetLen(0x0437, -1) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130121
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130115
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130109
+packetLen(0x0437, 7) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130103
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#endif
+
+// Packet: 0x0438
+#if PACKETVER >= 20131230
+packetLen(0x0438, 6) // CZ_USE_SKILL2
+#elif PACKETVER >= 20131211
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20131204
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20131127
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20131106
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20131030
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20131023
+packetLen(0x0438, 26) // CZ_USE_SKILL2
+#elif PACKETVER >= 20131008
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20131002
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130925
+packetLen(0x0438, 90) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130917
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130904
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130828
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130821
+packetLen(0x0438, 8) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130814
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130807
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130731
+packetLen(0x0438, 5) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130717
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130626
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130618
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130529
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130522
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130417
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130410
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130403
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130327
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130320
+packetLen(0x0438, 6) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130313
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130227
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130206
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130130
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130121
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130109
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130103
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#endif
+
+// Packet: 0x0439
+packetLen(0x0439, 8) // CZ_USE_ITEM2
+
+// Packet: 0x043d
+packetLen(0x043d, 8) // ZC_SKILL_POSTDELAY
+
+// Packet: 0x043e
+packetLen(0x043e, -1) // ZC_SKILL_POSTDELAY_LIST
+
+// Packet: 0x043f
+packetLen(0x043f, 25) // ZC_MSG_STATE_CHANGE2
+
+// Packet: 0x0440
+packetLen(0x0440, 10) // ZC_MILLENNIUMSHIELD
+
+// Packet: 0x0441
+packetLen(0x0441, 4) // ZC_SKILLINFO_DELETE
+
+// Packet: 0x0442
+packetLen(0x0442, -1) // ZC_SKILL_SELECT_REQUEST
+
+// Packet: 0x0443
+packetLen(0x0443, 8) // CZ_SKILL_SELECT_RESPONSE
+
+// Packet: 0x0444
+packetLen(0x0444, -1) // ZC_SIMPLE_CASH_POINT_ITEMLIST
+
+// Packet: 0x0445
+packetLen(0x0445, 10) // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0446
+packetLen(0x0446, 14) // ZC_QUEST_NOTIFY_EFFECT
+
+// Packet: 0x0447
+packetLen(0x0447, 2) // CZ_BLOCKING_PLAY_CANCEL
+
+// Packet: 0x0448
+packetLen(0x0448, -1) // HC_CHARACTER_LIST
+
+// Packet: 0x0449
+packetLen(0x0449, 4) // ZC_HACKSH_ERROR_MSG
+
+// Packet: 0x044a
+packetLen(0x044a, 6) // CZ_CLIENT_VERSION
+
+// Packet: 0x044b
+packetLen(0x044b, 2) // CZ_CLOSE_SIMPLECASH_SHOP
+
+// Packet: 0x07d7
+packetLen(0x07d7, 8) // CZ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d8
+packetLen(0x07d8, 8) // ZC_REQ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d9
+packetLen(0x07d9, 268) // ZC_SHORTCUT_KEY_LIST_V2
+
+// Packet: 0x07da
+packetLen(0x07da, 6) // CZ_CHANGE_GROUP_MASTER
+
+// Packet: 0x07db
+packetLen(0x07db, 8) // ZC_HO_PAR_CHANGE
+
+// Packet: 0x07dc
+packetLen(0x07dc, 6) // CZ_SEEK_PARTY
+
+// Packet: 0x07dd
+packetLen(0x07dd, 54) // ZC_SEEK_PARTY
+
+// Packet: 0x07de
+packetLen(0x07de, 30) // CZ_SEEK_PARTY_MEMBER
+
+// Packet: 0x07df
+packetLen(0x07df, 54) // ZC_SEEK_PARTY_MEMBER
+
+// Packet: 0x07e0
+packetLen(0x07e0, 58) // ZC_ES_NOTI_MYINFO
+
+// Packet: 0x07e1
+packetLen(0x07e1, 15) // ZC_SKILLINFO_UPDATE2
+
+// Packet: 0x07e2
+packetLen(0x07e2, 8) // ZC_MSG_VALUE
+
+// Packet: 0x07e3
+packetLen(0x07e3, 6) // ZC_ITEMLISTWIN_OPEN
+
+// Packet: 0x07e4
+#if PACKETVER >= 20131230
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20131218
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20131211
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20131204
+packetLen(0x07e4, 36) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20131127
+packetLen(0x07e4, 90) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20131106
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20131030
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20131016
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20131008
+packetLen(0x07e4, 7) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20131002
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130911
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130904
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130814
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130807
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130717
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130703
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130618
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130605
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130508
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130502
+packetLen(0x07e4, 36) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130417
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130410
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130403
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130320
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130313
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130227
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130220
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130215
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130206
+packetLen(0x07e4, 36) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130109
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130103
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#endif
+
+// Packet: 0x07e5
+packetLen(0x07e5, 4) // CH_ENTER_CHECKBOT
+
+// Packet: 0x07e6
+packetLen(0x07e6, 8) // ZC_MSG_SKILL
+
+// Packet: 0x07e7
+packetLen(0x07e7, 32) // CH_CHECKBOT
+
+// Packet: 0x07e8
+packetLen(0x07e8, -1) // HC_CHECKBOT
+
+// Packet: 0x07e9
+packetLen(0x07e9, 5) // HC_CHECKBOT_RESULT
+
+// Packet: 0x07ea
+packetLen(0x07ea, 2) // CZ_BATTLE_FIELD_LIST
+
+// Packet: 0x07eb
+packetLen(0x07eb, -1) // ZC_BATTLE_FIELD_LIST
+
+// Packet: 0x07ec
+#if PACKETVER >= 20131230
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20131218
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20131211
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20131204
+packetLen(0x07ec, 6) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20131106
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20131030
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20131023
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20131016
+packetLen(0x07ec, 19) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20131008
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20131002
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130911
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130904
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130828
+packetLen(0x07ec, 6) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130821
+packetLen(0x07ec, -1) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130814
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130807
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130717
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130703
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130618
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130605
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130529
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130522
+packetLen(0x07ec, 6) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130508
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130502
+packetLen(0x07ec, 5) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130417
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130410
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130403
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130327
+packetLen(0x07ec, 6) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130320
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130313
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130227
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130220
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130130
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130121
+packetLen(0x07ec, 6) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130115
+packetLen(0x07ec, 4) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130109
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130103
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#endif
+
+// Packet: 0x07ed
+packetLen(0x07ed, 10) // ZC_JOIN_BATTLE_FIELD
+
+// Packet: 0x07ee
+packetLen(0x07ee, 6) // CZ_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07ef
+packetLen(0x07ef, 8) // ZC_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07f0
+packetLen(0x07f0, 6) // CZ_REQ_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f1
+packetLen(0x07f1, 18) // ZC_ACK_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f2
+packetLen(0x07f2, 8) // ZC_BATTLE_NOTI_START_STEP
+
+// Packet: 0x07f3
+packetLen(0x07f3, 6) // ZC_BATTLE_JOIN_NOTI_DEFER
+
+// Packet: 0x07f4
+packetLen(0x07f4, 3) // ZC_BATTLE_JOIN_DISABLE_STATE
+
+// Packet: 0x07f5
+packetLen(0x07f5, 6) // CZ_GM_FULLSTRIP
+
+// Packet: 0x07f6
+packetLen(0x07f6, 14) // ZC_NOTIFY_EXP
+
+// Packet: 0x07f7
+packetLen(0x07f7, -1) // ZC_NOTIFY_MOVEENTRY7
+
+// Packet: 0x07f8
+packetLen(0x07f8, -1) // ZC_NOTIFY_NEWENTRY5
+
+// Packet: 0x07f9
+packetLen(0x07f9, -1) // ZC_NOTIFY_STANDENTRY5
+
+// Packet: 0x07fa
+packetLen(0x07fa, 8) // ZC_DELETE_ITEM_FROM_BODY
+
+// Packet: 0x07fb
+packetLen(0x07fb, 25) // ZC_USESKILL_ACK2
+
+// Packet: 0x07fc
+packetLen(0x07fc, 10) // ZC_CHANGE_GROUP_MASTER
+
+// Packet: 0x07fd
+packetLen(0x07fd, -1) // ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN
+
+// Packet: 0x07fe
+packetLen(0x07fe, 26) // ZC_PLAY_NPC_BGM
+
+// Packet: 0x0800
+packetLen(0x0800, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0801
+packetLen(0x0801, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0802
+#if PACKETVER >= 20131230
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20131218
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20131127
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20131120
+packetLen(0x0802, -1) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20131113
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20131106
+packetLen(0x0802, 5) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20131030
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20131023
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20131016
+packetLen(0x0802, 4) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20131008
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20131002
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130911
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130904
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130814
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130807
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130717
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130703
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130618
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130605
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130502
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130417
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130410
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130403
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130320
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130313
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130306
+packetLen(0x0802, 12) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130227
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130220
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130215
+packetLen(0x0802, 90) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130130
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130121
+packetLen(0x0802, 7) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130109
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130103
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// Packet: 0x0803
+packetLen(0x0803, 4) // ZC_PARTY_BOOKING_ACK_REGISTER
+
+// Packet: 0x0804
+packetLen(0x0804, 14) // CZ_PARTY_BOOKING_REQ_SEARCH
+
+// Packet: 0x0805
+packetLen(0x0805, -1) // ZC_PARTY_BOOKING_ACK_SEARCH
+
+// Packet: 0x0806
+packetLen(0x0806, 2) // CZ_PARTY_BOOKING_REQ_DELETE
+
+// Packet: 0x0807
+packetLen(0x0807, 4) // ZC_PARTY_BOOKING_ACK_DELETE
+
+// Packet: 0x0808
+packetLen(0x0808, 14) // CZ_PARTY_BOOKING_REQ_UPDATE
+
+// Packet: 0x0809
+packetLen(0x0809, 50) // ZC_PARTY_BOOKING_NOTIFY_INSERT
+
+// Packet: 0x080a
+packetLen(0x080a, 18) // ZC_PARTY_BOOKING_NOTIFY_UPDATE
+
+// Packet: 0x080b
+packetLen(0x080b, 6) // ZC_PARTY_BOOKING_NOTIFY_DELETE
+
+// Packet: 0x080c
+packetLen(0x080c, 2) // CZ_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080d
+packetLen(0x080d, 3) // ZC_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080e
+packetLen(0x080e, 14) // ZC_NOTIFY_HP_TO_GROUPM_R2
+
+// Packet: 0x080f
+packetLen(0x080f, 20) // ZC_ADD_EXCHANGE_ITEM2
+
+// Packet: 0x0810
+packetLen(0x0810, 3) // ZC_OPEN_BUYING_STORE
+
+// Packet: 0x0811
+#if PACKETVER >= 20131230
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20131223
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20131218
+packetLen(0x0811, 5) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20131211
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20131204
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20131127
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20131120
+packetLen(0x0811, 8) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20131106
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20131030
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20131023
+packetLen(0x0811, 10) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20131008
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130925
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130917
+packetLen(0x0811, 7) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130904
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130814
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130807
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130717
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130626
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130618
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130605
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130529
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130522
+packetLen(0x0811, 10) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130424
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130417
+packetLen(0x0811, 26) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130410
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130403
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130320
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130313
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130306
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130227
+packetLen(0x0811, 6) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130215
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130206
+packetLen(0x0811, 6) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130109
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130103
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#endif
+
+// Packet: 0x0812
+packetLen(0x0812, 8) // ZC_FAILED_OPEN_BUYING_STORE_TO_BUYER
+
+// Packet: 0x0813
+packetLen(0x0813, -1) // ZC_MYITEMLIST_BUYING_STORE
+
+// Packet: 0x0814
+packetLen(0x0814, 86) // ZC_BUYING_STORE_ENTRY
+
+// Packet: 0x0815
+#if PACKETVER >= 20131230
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20131211
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20131204
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20131127
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20131106
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20131030
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20131008
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130925
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130917
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130911
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130904
+packetLen(0x0815, 5) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130828
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130821
+packetLen(0x0815, 5) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130814
+packetLen(0x0815, 4) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130807
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130717
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130626
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130618
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130605
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130522
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130417
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130410
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130403
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130320
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130313
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130306
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130227
+packetLen(0x0815, 18) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130206
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130130
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130121
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130109
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130103
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#endif
+
+// Packet: 0x0816
+packetLen(0x0816, 6) // ZC_DISAPPEAR_BUYING_STORE_ENTRY
+
+// Packet: 0x0817
+#if PACKETVER >= 20131127
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20131120
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20131113
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20131106
+packetLen(0x0817, 8) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20130904
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20130828
+packetLen(0x0817, -1) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20130703
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20130626
+packetLen(0x0817, 8) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20130313
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20130306
+packetLen(0x0817, 5) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20130227
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20130130
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20130121
+packetLen(0x0817, 36) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20130115
+packetLen(0x0817, 5) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20130103
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#endif
+
+// Packet: 0x0818
+packetLen(0x0818, -1) // ZC_ACK_ITEMLIST_BUYING_STORE
+
+// Packet: 0x0819
+#if PACKETVER >= 20131230
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20131211
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20131204
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20131127
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20131106
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20131030
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20131023
+packetLen(0x0819, 6) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20131008
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130925
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130917
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130911
+packetLen(0x0819, 19) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130904
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130814
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130731
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130717
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130626
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130618
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130605
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130522
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130417
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130410
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130403
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130320
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130313
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130227
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130206
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130109
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130103
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#endif
+
+// Packet: 0x081a
+packetLen(0x081a, 4) // ZC_FAILED_TRADE_BUYING_STORE_TO_BUYER
+
+// Packet: 0x081b
+packetLen(0x081b, 10) // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+
+// Packet: 0x081c
+packetLen(0x081c, 10) // ZC_ITEM_DELETE_BUYING_STORE
+
+// Packet: 0x081d
+packetLen(0x081d, 22) // ZC_EL_INIT
+
+// Packet: 0x081e
+packetLen(0x081e, 8) // ZC_EL_PAR_CHANGE
+
+// Packet: 0x081f
+packetLen(0x081f, -1) // ZC_BROADCAST4
+
+// Packet: 0x0820
+packetLen(0x0820, 11) // ZC_COSTUME_SPRITE_CHANGE
+
+// Packet: 0x0821
+packetLen(0x0821, 2) // AC_OTP_USER
+
+// Packet: 0x0822
+packetLen(0x0822, 9) // CA_OTP_AUTH_REQ
+
+// Packet: 0x0823
+packetLen(0x0823, -1) // AC_OTP_AUTH_ACK
+
+// Packet: 0x0824
+packetLen(0x0824, 6) // ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER
+
+// Packet: 0x0825
+packetLen(0x0825, -1) // CA_SSO_LOGIN_REQ
+
+// Packet: 0x0827
+packetLen(0x0827, 6) // CH_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0828
+packetLen(0x0828, 14) // HC_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0829
+packetLen(0x0829, 12) // CH_DELETE_CHAR3
+
+// Packet: 0x082a
+packetLen(0x082a, 10) // HC_DELETE_CHAR3
+
+// Packet: 0x082b
+packetLen(0x082b, 6) // CH_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082c
+packetLen(0x082c, 10) // HC_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082d
+packetLen(0x082d, -1) // HC_ACCEPT_ENTER2
+
+// Packet: 0x0835
+#if PACKETVER >= 20131030
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20131023
+packetLen(0x0835, 4) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20130911
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20130904
+packetLen(0x0835, 12) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20130821
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20130814
+packetLen(0x0835, -1) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20130403
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20130327
+packetLen(0x0835, 5) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20130103
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#endif
+
+// Packet: 0x0836
+packetLen(0x0836, -1) // ZC_SEARCH_STORE_INFO_ACK
+
+// Packet: 0x0837
+packetLen(0x0837, 3) // ZC_SEARCH_STORE_INFO_FAILED
+
+// Packet: 0x0838
+#if PACKETVER >= 20131230
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20131211
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20131204
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20131127
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20131106
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20131030
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20131008
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130925
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130917
+packetLen(0x0838, 6) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130911
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130904
+packetLen(0x0838, 19) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130814
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130807
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130717
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130626
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130618
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130605
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130522
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130417
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130410
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130403
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130320
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130313
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130227
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130206
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130130
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130121
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130115
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130109
+packetLen(0x0838, 8) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130103
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#endif
+
+// Packet: 0x0839
+packetLen(0x0839, 66) // ZC_ACK_BAN_GUILD_SSO
+
+// Packet: 0x083a
+packetLen(0x083a, 5) // ZC_OPEN_SEARCH_STORE_INFO
+
+// Packet: 0x083b
+packetLen(0x083b, 2) // CZ_CLOSE_SEARCH_STORE_INFO
+
+// Packet: 0x083c
+#if PACKETVER >= 20131230
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20131218
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20131211
+packetLen(0x083c, 26) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20131204
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20131127
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20131106
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20131030
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20131008
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130925
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130917
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130904
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130814
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130807
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130724
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130717
+packetLen(0x083c, 5) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130626
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130618
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130605
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130522
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130417
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130410
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130403
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130320
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130313
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130227
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130206
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130130
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130121
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130109
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130103
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#endif
+
+// Packet: 0x083d
+packetLen(0x083d, 6) // ZC_SSILIST_ITEM_CLICK_ACK
+
+// Packet: 0x083e
+packetLen(0x083e, 26) // AC_REFUSE_LOGIN2
+
+// Packet: 0x0840
+packetLen(0x0840, -1) // HC_NOTIFY_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0841
+packetLen(0x0841, 4) // CH_SELECT_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0842
+packetLen(0x0842, 6) // CZ_RECALL_SSO
+
+// Packet: 0x0843
+packetLen(0x0843, 6) // CZ_REMOVE_AID_SSO
+
+// Packet: 0x0844
+packetLen(0x0844, 2) // CZ_SE_CASHSHOP_OPEN
+
+// Packet: 0x0845
+packetLen(0x0845, 10) // ZC_SE_CASHSHOP_OPEN
+
+// Packet: 0x0846
+packetLen(0x0846, 4) // CZ_REQ_SE_CASH_TAB_CODE
+
+// Packet: 0x0847
+packetLen(0x0847, -1) // ZC_ACK_SE_CASH_ITEM_LIST
+
+// Packet: 0x0848
+packetLen(0x0848, -1) // CZ_SE_PC_BUY_CASHITEM_LIST
+
+// Packet: 0x0849
+packetLen(0x0849, 16) // ZC_SE_PC_BUY_CASHITEM_RESULT
+
+// Packet: 0x084a
+packetLen(0x084a, 2) // CZ_SE_CASHSHOP_CLOSE
+
+// Packet: 0x084b
+packetLen(0x084b, 19) // ZC_ITEM_FALL_ENTRY4
+
+// Packet: 0x084c
+packetLen(0x084c, 10) // CZ_MACRO_USE_SKILL
+
+// Packet: 0x084d
+packetLen(0x084d, 10) // CZ_MACRO_USE_SKILL_TOGROUND
+
+// Packet: 0x084e
+packetLen(0x084e, 5) // CZ_MACRO_REQUEST_MOVE
+
+// Packet: 0x084f
+packetLen(0x084f, 6) // CZ_MACRO_ITEM_PICKUP
+
+// Packet: 0x0850
+packetLen(0x0850, 7) // CZ_MACRO_REQUEST_ACT
+
+// Packet: 0x0851
+packetLen(0x0851, -1) // ZC_GPK_DYNCODE
+
+// Packet: 0x0852
+packetLen(0x0852, 2) // CZ_GPK_DYNCODE_RELOAD
+
+// Packet: 0x0853
+packetLen(0x0853, -1) // ZC_GPK_AUTH
+
+// Packet: 0x0854
+packetLen(0x0854, -1) // CZ_GPK_AUTH
+
+// Packet: 0x0855
+packetLen(0x0855, 6) // ZC_MACRO_ITEMPICKUP_FAIL
+
+// Packet: 0x0856
+packetLen(0x0856, -1) // ZC_NOTIFY_MOVEENTRY8
+
+// Packet: 0x0857
+packetLen(0x0857, -1) // ZC_NOTIFY_STANDENTRY7
+
+// Packet: 0x0858
+packetLen(0x0858, -1) // ZC_NOTIFY_NEWENTRY6
+
+// Packet: 0x0859
+packetLen(0x0859, -1) // ZC_EQUIPWIN_MICROSCOPE2
+
+// Packet: 0x085a
+#if PACKETVER >= 20131211
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20131204
+packetLen(0x085a, 26) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20131127
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20131120
+packetLen(0x085a, -1) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20131023
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20131016
+packetLen(0x085a, 8) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130731
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130724
+packetLen(0x085a, 18) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130605
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130529
+packetLen(0x085a, 12) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130508
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130502
+packetLen(0x085a, 4) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130327
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130320
+packetLen(0x085a, 90) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130306
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130227
+packetLen(0x085a, 10) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130130
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130121
+packetLen(0x085a, 4) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130103
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x085b
+#if PACKETVER >= 20131030
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20131023
+packetLen(0x085b, 90) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20130313
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20130306
+packetLen(0x085b, 5) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20130103
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x085c
+#if PACKETVER >= 20131223
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20131218
+packetLen(0x085c, 36) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20130917
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20130911
+packetLen(0x085c, 26) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20130313
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20130306
+packetLen(0x085c, 6) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20130103
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#endif
+
+// Packet: 0x085d
+#if PACKETVER >= 20131023
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20131016
+packetLen(0x085d, 6) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20131008
+packetLen(0x085d, 8) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130327
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130320
+packetLen(0x085d, 18) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130215
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130206
+packetLen(0x085d, 8) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130130
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130121
+packetLen(0x085d, 5) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130103
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x085e
+#if PACKETVER >= 20131016
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20131008
+packetLen(0x085e, 5) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20130731
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20130724
+packetLen(0x085e, 8) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20130605
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20130529
+packetLen(0x085e, 90) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20130103
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x085f
+#if PACKETVER >= 20131127
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20131120
+packetLen(0x085f, 10) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130206
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130130
+packetLen(0x085f, -1) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130103
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x0860
+#if PACKETVER >= 20131230
+packetLen(0x0860, 6) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130731
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130724
+packetLen(0x0860, 36) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130703
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130626
+packetLen(0x0860, 8) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130417
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130410
+packetLen(0x0860, 19) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130313
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130306
+packetLen(0x0860, 5) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130103
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x0861
+#if PACKETVER >= 20130121
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20130115
+packetLen(0x0861, 8) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20130103
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x0862
+#if PACKETVER >= 20131211
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20131204
+packetLen(0x0862, 5) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20131030
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20131023
+packetLen(0x0862, 8) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130828
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130821
+packetLen(0x0862, -1) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130724
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130717
+packetLen(0x0862, 18) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130626
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130618
+packetLen(0x0862, 6) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130522
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130515
+packetLen(0x0862, 4) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130103
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x0863
+#if PACKETVER >= 20131023
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20131016
+packetLen(0x0863, 10) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20131008
+packetLen(0x0863, 26) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130925
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130917
+packetLen(0x0863, 8) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130828
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130821
+packetLen(0x0863, 7) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130807
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130731
+packetLen(0x0863, 6) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130724
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130717
+packetLen(0x0863, 26) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130605
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130529
+packetLen(0x0863, 6) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130306
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130227
+packetLen(0x0863, -1) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130121
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130115
+packetLen(0x0863, 7) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130103
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x0864
+#if PACKETVER >= 20131023
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20131016
+packetLen(0x0864, 36) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20130626
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20130618
+packetLen(0x0864, 36) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20130103
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x0865
+#if PACKETVER >= 20131218
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20131211
+packetLen(0x0865, 26) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20130807
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20130731
+packetLen(0x0865, 10) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20130417
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20130410
+packetLen(0x0865, 12) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20130103
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0866
+#if PACKETVER >= 20131113
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20131106
+packetLen(0x0866, 5) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20130115
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20130109
+packetLen(0x0866, 5) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20130103
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0867
+#if PACKETVER >= 20131113
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20131106
+packetLen(0x0867, 8) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20131023
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20131016
+packetLen(0x0867, 90) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130731
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130724
+packetLen(0x0867, 6) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130508
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130502
+packetLen(0x0867, 5) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130306
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130227
+packetLen(0x0867, 6) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130103
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0868
+#if PACKETVER >= 20130925
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20130917
+packetLen(0x0868, 26) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20130911
+packetLen(0x0868, 18) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20130821
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20130814
+packetLen(0x0868, 12) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20130515
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20130508
+packetLen(0x0868, 36) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20130327
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20130320
+packetLen(0x0868, -1) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20130103
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0869
+#if PACKETVER >= 20131211
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20131204
+packetLen(0x0869, 10) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130605
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130529
+packetLen(0x0869, -1) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130306
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130227
+packetLen(0x0869, -1) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130220
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130215
+packetLen(0x0869, 8) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130103
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x086a
+#if PACKETVER >= 20130731
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20130724
+packetLen(0x086a, -1) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20130529
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20130522
+packetLen(0x086a, -1) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20130103
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x086b
+#if PACKETVER >= 20130917
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130911
+packetLen(0x086b, 36) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130724
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130717
+packetLen(0x086b, -1) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130424
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130417
+packetLen(0x086b, 19) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130206
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130130
+packetLen(0x086b, 4) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130103
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x086c
+#if PACKETVER >= 20131211
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20131204
+packetLen(0x086c, -1) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20131016
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20131008
+packetLen(0x086c, -1) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20130724
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20130717
+packetLen(0x086c, 4) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20130417
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20130410
+packetLen(0x086c, 18) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20130130
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20130121
+packetLen(0x086c, 19) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20130103
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x086d
+#if PACKETVER >= 20131016
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20131008
+packetLen(0x086d, 6) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20131002
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130925
+packetLen(0x086d, 36) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130917
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130911
+packetLen(0x086d, 8) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130403
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130327
+packetLen(0x086d, 18) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130320
+packetLen(0x086d, 26) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130313
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130306
+packetLen(0x086d, 19) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130103
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x086e
+#if PACKETVER >= 20131218
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20131211
+packetLen(0x086e, -1) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20131030
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20131023
+packetLen(0x086e, -1) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20131002
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20130925
+packetLen(0x086e, 26) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20130917
+packetLen(0x086e, 90) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20130828
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20130821
+packetLen(0x086e, -1) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20130306
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20130227
+packetLen(0x086e, 4) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20130103
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x086f
+#if PACKETVER >= 20130925
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20130917
+packetLen(0x086f, 6) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20130327
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20130320
+packetLen(0x086f, 26) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20130220
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20130215
+packetLen(0x086f, 8) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20130103
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x0870
+#if PACKETVER >= 20131023
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20131016
+packetLen(0x0870, -1) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20130508
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20130502
+packetLen(0x0870, 26) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20130121
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20130115
+packetLen(0x0870, -1) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20130103
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x0871
+#if PACKETVER >= 20131230
+packetLen(0x0871, 7) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20130121
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20130115
+packetLen(0x0871, 26) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20130103
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x0872
+#if PACKETVER >= 20131030
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20131023
+packetLen(0x0872, 18)
+#elif PACKETVER >= 20130103
+packetLen(0x0872, 2)
+#endif
+
+// Packet: 0x0873
+#if PACKETVER >= 20131218
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20131211
+packetLen(0x0873, 19) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20130821
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20130814
+packetLen(0x0873, 8) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20130710
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20130703
+packetLen(0x0873, 36) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20130403
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20130327
+packetLen(0x0873, 19) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20130103
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x0874
+#if PACKETVER >= 20130821
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130814
+packetLen(0x0874, 7) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130731
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130724
+packetLen(0x0874, 5) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130605
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130529
+packetLen(0x0874, 18) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130522
+packetLen(0x0874, -1) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130508
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130502
+packetLen(0x0874, -1) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130327
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130320
+packetLen(0x0874, 8) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130130
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130121
+packetLen(0x0874, 8) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130103
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x0875
+#if PACKETVER >= 20131113
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20131106
+packetLen(0x0875, 6) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20131023
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20131016
+packetLen(0x0875, -1) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20131002
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20130925
+packetLen(0x0875, 5) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20130508
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20130502
+packetLen(0x0875, 26) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20130424
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20130417
+packetLen(0x0875, 36) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20130103
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x0876
+#if PACKETVER >= 20131030
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20131023
+packetLen(0x0876, 10) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20131002
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130925
+packetLen(0x0876, 8) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130731
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130724
+packetLen(0x0876, 7) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130605
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130529
+packetLen(0x0876, 5) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130215
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130206
+packetLen(0x0876, 4) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130103
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x0877
+#if PACKETVER >= 20131211
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20131204
+packetLen(0x0877, 19) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20130605
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20130529
+packetLen(0x0877, 26) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20130508
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20130502
+packetLen(0x0877, 8) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20130121
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20130115
+packetLen(0x0877, 6) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20130103
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x0878
+#if PACKETVER >= 20130807
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130731
+packetLen(0x0878, 7) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130626
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130618
+packetLen(0x0878, 4) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130515
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130508
+packetLen(0x0878, -1) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130403
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130327
+packetLen(0x0878, 12) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130103
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x0879
+#if PACKETVER >= 20131211
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20131204
+packetLen(0x0879, 6) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20130828
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20130821
+packetLen(0x0879, 12) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20130417
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20130410
+packetLen(0x0879, 8) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20130121
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20130115
+packetLen(0x0879, 5) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20130103
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x087a
+#if PACKETVER >= 20130925
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130917
+packetLen(0x087a, 6) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130626
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130618
+packetLen(0x087a, 8) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130103
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x087b
+#if PACKETVER >= 20131230
+packetLen(0x087b, 12) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20131223
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20131218
+packetLen(0x087b, 4) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20130917
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20130911
+packetLen(0x087b, 4) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20130306
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20130227
+packetLen(0x087b, 26) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20130103
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x087c
+#if PACKETVER >= 20130508
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20130502
+packetLen(0x087c, 19) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20130417
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20130410
+packetLen(0x087c, 5) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20130121
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20130115
+packetLen(0x087c, 6) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20130103
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#endif
+
+// Packet: 0x087d
+#if PACKETVER >= 20131106
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20131030
+packetLen(0x087d, 26) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20131002
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20130925
+packetLen(0x087d, 6) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20130417
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20130410
+packetLen(0x087d, 6) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20130206
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20130130
+packetLen(0x087d, 5) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20130103
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x087e
+#if PACKETVER >= 20131230
+packetLen(0x087e, 4) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20130925
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20130917
+packetLen(0x087e, 10) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20130904
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20130828
+packetLen(0x087e, 6) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20130618
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20130612
+packetLen(0x087e, 5) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20130529
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20130522
+packetLen(0x087e, 8) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20130103
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x087f
+#if PACKETVER >= 20131230
+packetLen(0x087f, -1) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20131211
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20131204
+packetLen(0x087f, 18) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20130206
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20130130
+packetLen(0x087f, -1) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20130103
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#endif
+
+// Packet: 0x0880
+#if PACKETVER >= 20130717
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20130710
+packetLen(0x0880, 36) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20130103
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x0881
+#if PACKETVER >= 20131218
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20131211
+packetLen(0x0881, 4) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20131204
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20131127
+packetLen(0x0881, 4) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20130828
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20130821
+packetLen(0x0881, -1) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20130327
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20130320
+packetLen(0x0881, 5) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20130313
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20130306
+packetLen(0x0881, -1) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20130103
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x0882
+#if PACKETVER >= 20131211
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20131204
+packetLen(0x0882, 26) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130724
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130717
+packetLen(0x0882, 10) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130103
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x0883
+#if PACKETVER >= 20131016
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20131008
+packetLen(0x0883, 8) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20130612
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20130605
+packetLen(0x0883, 36) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20130215
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20130206
+packetLen(0x0883, 18) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20130103
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x0884
+#if PACKETVER >= 20131204
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20131127
+packetLen(0x0884, 5) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20131120
+packetLen(0x0884, 10) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20131016
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20131008
+packetLen(0x0884, 18) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130807
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130731
+packetLen(0x0884, 36) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130410
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130403
+packetLen(0x0884, 19) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130130
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130121
+packetLen(0x0884, -1) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130103
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x0885
+#if PACKETVER >= 20131030
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20131023
+packetLen(0x0885, 36) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20131016
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20131008
+packetLen(0x0885, 4) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20131002
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20130925
+packetLen(0x0885, 5) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20130821
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20130814
+packetLen(0x0885, 36) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20130626
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20130618
+packetLen(0x0885, 8) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20130403
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20130327
+packetLen(0x0885, 6) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20130215
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20130206
+packetLen(0x0885, 8) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20130130
+packetLen(0x0885, 7) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20130103
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x0886
+#if PACKETVER >= 20131218
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20131211
+packetLen(0x0886, 5) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20130220
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20130215
+packetLen(0x0886, 6) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20130206
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20130130
+packetLen(0x0886, 6) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20130115
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20130109
+packetLen(0x0886, 8) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20130103
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#endif
+
+// Packet: 0x0887
+#if PACKETVER >= 20131113
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20131106
+packetLen(0x0887, 6) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20131030
+packetLen(0x0887, 36) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20131023
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20131016
+packetLen(0x0887, 6) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20131002
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130925
+packetLen(0x0887, 19) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130821
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130814
+packetLen(0x0887, 10) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130807
+packetLen(0x0887, 36) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130626
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130618
+packetLen(0x0887, 26) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130522
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130515
+packetLen(0x0887, 8) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130320
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130313
+packetLen(0x0887, 5) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130206
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130130
+packetLen(0x0887, 90) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130103
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x0888
+#if PACKETVER >= 20131023
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20131016
+packetLen(0x0888, 5) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20130605
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20130529
+packetLen(0x0888, 4) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20130508
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20130502
+packetLen(0x0888, 6) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20130327
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20130320
+packetLen(0x0888, 19) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20130121
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20130115
+packetLen(0x0888, 12) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20130109
+packetLen(0x0888, 5) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20130103
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x0889
+#if PACKETVER >= 20130917
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130911
+packetLen(0x0889, 6) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130904
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130828
+packetLen(0x0889, 5) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130821
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130814
+packetLen(0x0889, -1) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130807
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130731
+packetLen(0x0889, 4) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130626
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130618
+packetLen(0x0889, 7) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130508
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130502
+packetLen(0x0889, 8) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130206
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130130
+packetLen(0x0889, 6) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130103
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x088a
+#if PACKETVER >= 20131030
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20131023
+packetLen(0x088a, -1) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130925
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130917
+packetLen(0x088a, 36) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130821
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130814
+packetLen(0x088a, 6) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130724
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130717
+packetLen(0x088a, 5) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130115
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130109
+packetLen(0x088a, 19) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130103
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x088b
+#if PACKETVER >= 20131030
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20131023
+packetLen(0x088b, 6) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20131016
+packetLen(0x088b, 26) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20130807
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20130731
+packetLen(0x088b, 6) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20130703
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20130626
+packetLen(0x088b, 6) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20130515
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20130508
+packetLen(0x088b, 6) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20130121
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20130115
+packetLen(0x088b, 90) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20130103
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x088c
+#if PACKETVER >= 20131127
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20131120
+packetLen(0x088c, 19) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20131113
+packetLen(0x088c, -1) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130821
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130814
+packetLen(0x088c, 5) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130724
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130717
+packetLen(0x088c, 5) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130703
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130626
+packetLen(0x088c, 19) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130417
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130410
+packetLen(0x088c, 36) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130103
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x088d
+#if PACKETVER >= 20131204
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20131127
+packetLen(0x088d, 5) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20131120
+packetLen(0x088d, 26) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130828
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130821
+packetLen(0x088d, 6) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130417
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130410
+packetLen(0x088d, 5) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130103
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x088e
+#if PACKETVER >= 20130626
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20130618
+packetLen(0x088e, 5) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20130605
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20130529
+packetLen(0x088e, 8) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20130522
+packetLen(0x088e, 36) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20130327
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20130320
+packetLen(0x088e, 7) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20130115
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20130109
+packetLen(0x088e, 12) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20130103
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x088f
+#if PACKETVER >= 20131120
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20131113
+packetLen(0x088f, 6) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20131030
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20131023
+packetLen(0x088f, 8) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20131002
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20130925
+packetLen(0x088f, 26) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20130828
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20130821
+packetLen(0x088f, 26) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20130703
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20130626
+packetLen(0x088f, 4) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20130403
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20130327
+packetLen(0x088f, 10) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20130103
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0890
+#if PACKETVER >= 20131023
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20131016
+packetLen(0x0890, 6) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20131002
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20130925
+packetLen(0x0890, 8) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20130626
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20130618
+packetLen(0x0890, 12) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20130605
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20130529
+packetLen(0x0890, 7) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20130417
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20130410
+packetLen(0x0890, -1) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20130327
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20130320
+packetLen(0x0890, 4) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20130313
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20130306
+packetLen(0x0890, 8) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20130103
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0891
+#if PACKETVER >= 20131113
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20131106
+packetLen(0x0891, 6) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130917
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130911
+packetLen(0x0891, 5) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130731
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130724
+packetLen(0x0891, 6) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130626
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130618
+packetLen(0x0891, -1) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130417
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130410
+packetLen(0x0891, 8) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130403
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130327
+packetLen(0x0891, 8) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130115
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130109
+packetLen(0x0891, -1) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130103
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0892
+#if PACKETVER >= 20131218
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20131211
+packetLen(0x0892, 8) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20130828
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20130821
+packetLen(0x0892, 6) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20130605
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20130529
+packetLen(0x0892, 6) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20130115
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20130109
+packetLen(0x0892, 10) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20130103
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0893
+#if PACKETVER >= 20131113
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20131106
+packetLen(0x0893, 18) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130904
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130828
+packetLen(0x0893, 36) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130731
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130724
+packetLen(0x0893, 19) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130515
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130508
+packetLen(0x0893, 18) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130306
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130227
+packetLen(0x0893, 8) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130130
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130121
+packetLen(0x0893, 26) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130103
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x0894
+#if PACKETVER >= 20131204
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20131127
+packetLen(0x0894, 36) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20131113
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20131106
+packetLen(0x0894, 5) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20131023
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20131016
+packetLen(0x0894, 12) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20130807
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20130731
+packetLen(0x0894, -1) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20130703
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20130626
+packetLen(0x0894, 18) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20130121
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20130115
+packetLen(0x0894, 5) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20130103
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x0895
+#if PACKETVER >= 20131230
+packetLen(0x0895, 8) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130925
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130917
+packetLen(0x0895, 6) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130821
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130814
+packetLen(0x0895, 6) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130807
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130731
+packetLen(0x0895, 8) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130703
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130626
+packetLen(0x0895, 26) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130605
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130529
+packetLen(0x0895, 6) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130515
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130508
+packetLen(0x0895, 19) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130121
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130115
+packetLen(0x0895, 6) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130103
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x0896
+#if PACKETVER >= 20131016
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20131008
+packetLen(0x0896, 90) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20130821
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20130814
+packetLen(0x0896, 8) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20130103
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x0897
+#if PACKETVER >= 20130807
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130731
+packetLen(0x0897, -1) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130724
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130717
+packetLen(0x0897, -1) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130605
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130529
+packetLen(0x0897, 6) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130515
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130508
+packetLen(0x0897, 8) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130327
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130320
+packetLen(0x0897, 5) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130103
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x0898
+#if PACKETVER >= 20131230
+packetLen(0x0898, 6) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20130724
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20130717
+packetLen(0x0898, 6) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20130327
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20130320
+packetLen(0x0898, 6) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20130313
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20130306
+packetLen(0x0898, 7) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20130227
+packetLen(0x0898, 5) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20130103
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x0899
+#if PACKETVER >= 20130403
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20130327
+packetLen(0x0899, 6) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20130215
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20130206
+packetLen(0x0899, -1) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20130103
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x089a
+#if PACKETVER >= 20131120
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20131113
+packetLen(0x089a, 19) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20130206
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20130130
+packetLen(0x089a, 26) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20130103
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x089b
+#if PACKETVER >= 20130724
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20130717
+packetLen(0x089b, 8) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20130529
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20130522
+packetLen(0x089b, 18) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20130327
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20130320
+packetLen(0x089b, 10) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20130103
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x089c
+#if PACKETVER >= 20131230
+packetLen(0x089c, 19) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20131016
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20131008
+packetLen(0x089c, 5) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20130731
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20130724
+packetLen(0x089c, 10) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20130529
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20130522
+packetLen(0x089c, 6) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20130417
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20130410
+packetLen(0x089c, 6) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20130103
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#endif
+
+// Packet: 0x089d
+#if PACKETVER >= 20130925
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20130917
+packetLen(0x089d, 19) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20130103
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x089e
+#if PACKETVER >= 20131204
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20131127
+packetLen(0x089e, 8) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20131120
+packetLen(0x089e, 6) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130904
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130828
+packetLen(0x089e, 10) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130417
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130410
+packetLen(0x089e, -1) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130220
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130215
+packetLen(0x089e, -1) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130103
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x089f
+#if PACKETVER >= 20130904
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20130828
+packetLen(0x089f, 5) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20130313
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20130306
+packetLen(0x089f, 6) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20130220
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20130215
+packetLen(0x089f, 4) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20130206
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20130130
+packetLen(0x089f, 6) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20130103
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x08a0
+#if PACKETVER >= 20131211
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20131204
+packetLen(0x08a0, -1) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130925
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130917
+packetLen(0x08a0, 8) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130417
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130410
+packetLen(0x08a0, 6) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130215
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130206
+packetLen(0x08a0, 5) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130130
+packetLen(0x08a0, 10) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130121
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130115
+packetLen(0x08a0, 26) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130103
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x08a1
+#if PACKETVER >= 20131127
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20131120
+packetLen(0x08a1, 5) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20130522
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20130515
+packetLen(0x08a1, 6) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20130508
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20130502
+packetLen(0x08a1, 18) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20130403
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20130327
+packetLen(0x08a1, 6) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20130306
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20130227
+packetLen(0x08a1, 8) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20130103
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x08a2
+#if PACKETVER >= 20131113
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20131106
+packetLen(0x08a2, 19) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20131030
+packetLen(0x08a2, 4) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130925
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130917
+packetLen(0x08a2, -1) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130529
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130522
+packetLen(0x08a2, 7) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130403
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130327
+packetLen(0x08a2, -1) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130115
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130109
+packetLen(0x08a2, 6) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130103
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x08a3
+#if PACKETVER >= 20131218
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20131211
+packetLen(0x08a3, 18) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20130904
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20130828
+packetLen(0x08a3, -1) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20130529
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20130522
+packetLen(0x08a3, 8) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20130508
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20130502
+packetLen(0x08a3, 6) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20130103
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x08a4
+#if PACKETVER >= 20131230
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20131223
+packetLen(0x08a4, 36) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20131218
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20131211
+packetLen(0x08a4, 5) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20131204
+packetLen(0x08a4, 6) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20131127
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20131120
+packetLen(0x08a4, 36) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20131113
+packetLen(0x08a4, -1) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130917
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130911
+packetLen(0x08a4, -1) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130821
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130814
+packetLen(0x08a4, -1) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130417
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130410
+packetLen(0x08a4, 90) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130313
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130306
+packetLen(0x08a4, 10) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130206
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130130
+packetLen(0x08a4, 10) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130121
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130115
+packetLen(0x08a4, 10) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130103
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x08a5
+#if PACKETVER >= 20130703
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20130626
+packetLen(0x08a5, -1) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20130410
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20130403
+packetLen(0x08a5, 4) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20130103
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x08a6
+#if PACKETVER >= 20130724
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20130717
+packetLen(0x08a6, 8) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20130626
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20130618
+packetLen(0x08a6, 5) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20130529
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20130522
+packetLen(0x08a6, 6) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20130103
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#endif
+
+// Packet: 0x08a7
+#if PACKETVER >= 20131211
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20131204
+packetLen(0x08a7, 6) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20131030
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20131023
+packetLen(0x08a7, 5) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20130626
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20130618
+packetLen(0x08a7, 18) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20130605
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20130529
+packetLen(0x08a7, 6) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20130103
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x08a8
+#if PACKETVER >= 20131127
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20131120
+packetLen(0x08a8, 7) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20131113
+packetLen(0x08a8, 8) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20130925
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20130917
+packetLen(0x08a8, -1) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20130605
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20130529
+packetLen(0x08a8, 26) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20130103
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x08a9
+#if PACKETVER >= 20131230
+packetLen(0x08a9, 26) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20131016
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20131008
+packetLen(0x08a9, 10) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20130724
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20130717
+packetLen(0x08a9, 6) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20130529
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20130522
+packetLen(0x08a9, 19) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20130206
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20130130
+packetLen(0x08a9, 8) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20130103
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#endif
+
+// Packet: 0x08aa
+#if PACKETVER >= 20130724
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20130717
+packetLen(0x08aa, -1) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20130522
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20130515
+packetLen(0x08aa, 8) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20130115
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20130109
+packetLen(0x08aa, 4) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20130103
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x08ab
+#if PACKETVER >= 20131223
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20131218
+packetLen(0x08ab, 26) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20131211
+packetLen(0x08ab, 6) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20131030
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20131023
+packetLen(0x08ab, 5) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20130731
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20130724
+packetLen(0x08ab, 4) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20130703
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20130626
+packetLen(0x08ab, 26) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20130515
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20130508
+packetLen(0x08ab, 26) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20130103
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x08ac
+#if PACKETVER >= 20131030
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20131023
+packetLen(0x08ac, 19) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130904
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130828
+packetLen(0x08ac, 6) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130529
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130522
+packetLen(0x08ac, 4) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130515
+packetLen(0x08ac, 8) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130327
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130320
+packetLen(0x08ac, 8) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130313
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130306
+packetLen(0x08ac, 4) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130215
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130206
+packetLen(0x08ac, 19) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130121
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130115
+packetLen(0x08ac, 8) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130103
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x08ad
+#if PACKETVER >= 20131211
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20131204
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20130828
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20130821
+packetLen(0x08ad, 4) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20130220
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20130215
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20130103
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x08af
+packetLen(0x08af, 10) // HC_WAITING_LOGIN
+
+// Packet: 0x08b0
+packetLen(0x08b0, 17) // CH_WAITING_LOGIN
+
+// Packet: 0x08b1
+packetLen(0x08b1, -1) // ZC_MCSTORE_NOTMOVEITEM_LIST
+
+// Packet: 0x08b2
+packetLen(0x08b2, -1) // AC_REALNAME_AUTH
+
+// Packet: 0x08b3
+packetLen(0x08b3, -1) // ZC_SHOWSCRIPT
+
+// Packet: 0x08b4
+packetLen(0x08b4, 2) // ZC_START_COLLECTION
+
+// Packet: 0x08b5
+packetLen(0x08b5, 6) // CZ_TRYCOLLECTION
+
+// Packet: 0x08b6
+packetLen(0x08b6, 3) // ZC_TRYCOLLECTION
+
+// Packet: 0x08b8
+packetLen(0x08b8, 10) // CH_SECOND_PASSWD_ACK
+
+// Packet: 0x08b9
+packetLen(0x08b9, 12) // HC_SECOND_PASSWD_LOGIN
+
+// Packet: 0x08ba
+packetLen(0x08ba, 10) // CH_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bb
+packetLen(0x08bb, 8) // HC_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bc
+packetLen(0x08bc, 10) // CH_DELETE_SECOND_PASSWD
+
+// Packet: 0x08bd
+packetLen(0x08bd, 8) // HC_DELETE_SECOND_PASSWD
+
+// Packet: 0x08be
+packetLen(0x08be, 14) // CH_EDIT_SECOND_PASSWD
+
+// Packet: 0x08bf
+packetLen(0x08bf, 8) // HC_EDIT_SECOND_PASSWD
+
+// Packet: 0x08c0
+packetLen(0x08c0, -1) // ZC_ACK_SE_CASH_ITEM_LIST2
+
+// Packet: 0x08c1
+packetLen(0x08c1, 2) // CZ_MACRO_START
+
+// Packet: 0x08c2
+packetLen(0x08c2, 2) // CZ_MACRO_STOP
+
+// Packet: 0x08c3
+packetLen(0x08c3, 10) // CH_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c4
+packetLen(0x08c4, 8) // HC_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c5
+packetLen(0x08c5, 6) // CH_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c6
+packetLen(0x08c6, 4) // HC_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c7
+packetLen(0x08c7, -1) // ZC_SKILL_ENTRY3
+
+// Packet: 0x08c8
+packetLen(0x08c8, 34) // ZC_NOTIFY_ACT3
+
+// Packet: 0x08c9
+packetLen(0x08c9, 2) // CZ_REQ_SCHEDULER_CASHITEM
+
+// Packet: 0x08ca
+packetLen(0x08ca, -1) // ZC_ACK_SCHEDULER_CASHITEM
+
+// Packet: 0x08cb
+packetLen(0x08cb, -1) // ZC_PERSONAL_INFOMATION
+
+// Packet: 0x08cc
+packetLen(0x08cc, 109) // CA_LOGIN5
+
+// Packet: 0x08cd
+packetLen(0x08cd, 10) // ZC_STOPMOVE_FORCE
+
+// Packet: 0x08ce
+packetLen(0x08ce, 2) // ZC_FAILED_GET_ITEM_FROM_ZONEDA
+
+// Packet: 0x08cf
+packetLen(0x08cf, 10) // ZC_SPIRITS_ATTRIBUTE
+
+// Packet: 0x08d0
+packetLen(0x08d0, 9) // ZC_REQ_WEAR_EQUIP_ACK2
+
+// Packet: 0x08d1
+packetLen(0x08d1, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK2
+
+// Packet: 0x08d2
+packetLen(0x08d2, 10) // ZC_FASTMOVE
+
+// Packet: 0x08d3
+packetLen(0x08d3, 10) // ZC_SE_CASHSHOP_UPDATE
+
+// Packet: 0x08d4
+packetLen(0x08d4, 8) // CH_REQ_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d5
+packetLen(0x08d5, -1) // HC_ACK_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d6
+packetLen(0x08d6, 6) // ZC_CLEAR_DIALOG
+
+// Packet: 0x08d7
+packetLen(0x08d7, 28) // CZ_REQ_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d8
+packetLen(0x08d8, 27) // ZC_ACK_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d9
+packetLen(0x08d9, 30) // ZC_NOTIFY_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08da
+packetLen(0x08da, 26) // CZ_REQ_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08db
+packetLen(0x08db, 27) // ZC_ACK_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08dc
+packetLen(0x08dc, 26) // ZC_NOTIFY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08dd
+packetLen(0x08dd, 27) // CZ_REPLY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08de
+packetLen(0x08de, 27) // ZC_REPLY_ACK_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08df
+packetLen(0x08df, 50) // ZC_NOTIFY_LOBBY_ADMISSION
+
+// Packet: 0x08e0
+packetLen(0x08e0, 51) // CZ_REPLY_LOBBY_ADMISSION
+
+// Packet: 0x08e1
+packetLen(0x08e1, 51) // ZC_REPLY_ACK_LOBBY_ADMISSION
+
+// Packet: 0x08e2
+packetLen(0x08e2, 27) // ZC_NAVIGATION_ACTIVE
+
+// Packet: 0x08e3
+packetLen(0x08e3, 146) // HC_UPDATE_CHARINFO
+
+// Packet: 0x08e4
+packetLen(0x08e4, 6) // AC_SHUTDOWN_INFO
+
+// Packet: 0x08e5
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08e5, 41) // CZ_PARTY_RECRUIT_REQ_REGISTER
+#endif
+
+// Packet: 0x08e6
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08e6, 4) // ZC_PARTY_RECRUIT_ACK_REGISTER
+#endif
+
+// Packet: 0x08e7
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08e7, 10) // CZ_PARTY_RECRUIT_REQ_SEARCH
+#endif
+
+// Packet: 0x08e8
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08e8, -1)
+#endif
+
+// Packet: 0x08e9
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08e9, 2) // CZ_PARTY_RECRUIT_REQ_DELETE
+#endif
+
+// Packet: 0x08ea
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08ea, 4) // ZC_PARTY_RECRUIT_ACK_DELETE
+#endif
+
+// Packet: 0x08eb
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08eb, 39) // CZ_PARTY_RECRUIT_REQ_UPDATE
+#endif
+
+// Packet: 0x08ec
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08ec, 73) // ZC_PARTY_RECRUIT_NOTIFY_INSERT
+#endif
+
+// Packet: 0x08ed
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08ed, 43) // ZC_PARTY_RECRUIT_NOTIFY_UPDATE
+#endif
+
+// Packet: 0x08ee
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08ee, 6) // ZC_PARTY_RECRUIT_NOTIFY_DELETE
+#endif
+
+// Packet: 0x08ef
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08ef, 6) // CZ_PARTY_RECRUIT_ADD_FILTERLINGLIST
+#endif
+
+// Packet: 0x08f0
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08f0, 6) // CZ_PARTY_RECRUIT_SUB_FILTERLINGLIST
+#endif
+
+// Packet: 0x08f1
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08f1, 6) // CZ_PARTY_RECRUIT_REQ_VOLUNTEER
+#endif
+
+// Packet: 0x08f2
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08f2, 36) // ZC_PARTY_RECRUIT_VOLUNTEER_INFO
+#endif
+
+// Packet: 0x08f3
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08f3, -1)
+#endif
+
+// Packet: 0x08f4
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08f4, 6) // CZ_PARTY_RECRUIT_SHOW_EQUIPMENT
+#endif
+
+// Packet: 0x08f5
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08f5, -1) // CZ_UNKNOWN_BOOKING_SOMMON_MEMBER_08f5
+#endif
+
+// Packet: 0x08f6
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08f6, 22) // ZC_PARTY_RECRUIT_RECALL_COST
+#endif
+
+// Packet: 0x08f7
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08f7, 3) // CZ_PARTY_RECRUIT_ACK_RECALL
+#endif
+
+// Packet: 0x08f8
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08f8, 7) // ZC_PARTY_RECRUIT_FAILED_RECALL
+#endif
+
+// Packet: 0x08f9
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08f9, 6) // CZ_PARTY_RECRUIT_REFUSE_VOLUNTEER
+#endif
+
+// Packet: 0x08fa
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08fa, 6) // ZC_PARTY_RECRUIT_REFUSE_VOLUNTEER
+#endif
+
+// Packet: 0x08fb
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08fb, 6) // CZ_PARTY_RECRUIT_CANCEL_VOLUNTEER
+#endif
+
+// Packet: 0x08fc
+packetLen(0x08fc, 30) // CH_REQ_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fd
+packetLen(0x08fd, 6) // CH_ACK_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fe
+packetLen(0x08fe, -1) // ZC_HUNTING_QUEST_INFO
+
+// Packet: 0x08ff
+packetLen(0x08ff, 24) // ZC_EFST_SET_ENTER
+
+// Packet: 0x0900
+packetLen(0x0900, -1) // ZC_INVENTORY_ITEMLIST_NORMAL
+
+// Packet: 0x0901
+packetLen(0x0901, -1) // ZC_INVENTORY_ITEMLIST_EQUIP
+
+// Packet: 0x0902
+packetLen(0x0902, -1) // ZC_CART_ITEMLIST_NORMAL
+
+// Packet: 0x0903
+packetLen(0x0903, -1) // ZC_CART_ITEMLIST_EQUIP
+
+// Packet: 0x0904
+packetLen(0x0904, -1) // ZC_STORE_ITEMLIST_NORMAL
+
+// Packet: 0x0905
+packetLen(0x0905, -1) // ZC_STORE_ITEMLIST_EQUIP
+
+// Packet: 0x0906
+packetLen(0x0906, -1) // ZC_MICROSCOPE
+
+// Packet: 0x0907
+packetLen(0x0907, 5) // CZ_INVENTORY_TAB
+
+// Packet: 0x0908
+packetLen(0x0908, 5) // ZC_INVENTORY_TAB
+
+// Packet: 0x0909
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x0909, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER
+#endif
+
+// Packet: 0x090a
+packetLen(0x090a, 26) // CZ_REQ_ENTRY_QUEUE_RANKING
+
+// Packet: 0x090b
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x090b, 30) // ZC_PARTY_RECRUIT_ADD_FILTERLINGLIST
+#endif
+
+// Packet: 0x090c
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x090c, 30) // ZC_PARTY_RECRUIT_SUB_FILTERLINGLIST
+#endif
+
+// Packet: 0x090d
+packetLen(0x090d, -1) // ZC_PREMIUM_CAMPAIGN_INFO
+
+// Packet: 0x090e
+packetLen(0x090e, 2) // ZC_ENTRY_QUEUE_INIT
+
+// Packet: 0x090f
+packetLen(0x090f, -1) // ZC_NOTIFY_NEWENTRY7
+
+// Packet: 0x0910
+packetLen(0x0910, 10) // CZ_REQ_PARTY_NAME
+
+// Packet: 0x0911
+packetLen(0x0911, 30) // ZC_ACK_PARTY_NAME
+
+// Packet: 0x0912
+packetLen(0x0912, 10) // CZ_REQ_GUILD_NAME
+
+// Packet: 0x0913
+packetLen(0x0913, 30) // ZC_ACK_GUILD_NAME
+
+// Packet: 0x0914
+packetLen(0x0914, -1) // ZC_NOTIFY_MOVEENTRY9
+
+// Packet: 0x0915
+packetLen(0x0915, -1) // ZC_NOTIFY_STANDENTRY8
+
+// Packet: 0x0916
+packetLen(0x0916, 26) // CZ_REQ_JOIN_GUILD2
+
+// Packet: 0x0917
+#if PACKETVER >= 20131127
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20131120
+packetLen(0x0917, 6) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20131016
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20131008
+packetLen(0x0917, 8) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130904
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130828
+packetLen(0x0917, 18) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130724
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130717
+packetLen(0x0917, 6) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130626
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130618
+packetLen(0x0917, 6) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130605
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130529
+packetLen(0x0917, 10) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130417
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130410
+packetLen(0x0917, 26) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130313
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130306
+packetLen(0x0917, 8) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130103
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#endif
+
+// Packet: 0x0918
+#if PACKETVER >= 20130925
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20130917
+packetLen(0x0918, 5) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20130724
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20130717
+packetLen(0x0918, 7) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20130605
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20130529
+packetLen(0x0918, -1) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20130121
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20130115
+packetLen(0x0918, 10) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20130109
+packetLen(0x0918, 26) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20130103
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#endif
+
+// Packet: 0x0919
+#if PACKETVER >= 20131030
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20131023
+packetLen(0x0919, 6) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20130618
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20130612
+packetLen(0x0919, 19) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20130605
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20130529
+packetLen(0x0919, 19) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20130103
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#endif
+
+// Packet: 0x091a
+#if PACKETVER >= 20131023
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20131016
+packetLen(0x091a, -1) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20130206
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20130130
+packetLen(0x091a, 6) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20130103
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#endif
+
+// Packet: 0x091b
+#if PACKETVER >= 20130306
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20130227
+packetLen(0x091b, 6) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20130115
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20130109
+packetLen(0x091b, 6) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20130103
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#endif
+
+// Packet: 0x091c
+#if PACKETVER >= 20131120
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20131113
+packetLen(0x091c, 8) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20131016
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20131008
+packetLen(0x091c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20130925
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20130917
+packetLen(0x091c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20130103
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#endif
+
+// Packet: 0x091d
+#if PACKETVER >= 20131230
+packetLen(0x091d, 36) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20131113
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20131106
+packetLen(0x091d, 90) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20131030
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20131023
+packetLen(0x091d, 12) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20130828
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20130821
+packetLen(0x091d, 5) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20130724
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20130717
+packetLen(0x091d, 19) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20130417
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20130410
+packetLen(0x091d, -1) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20130103
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#endif
+
+// Packet: 0x091e
+#if PACKETVER >= 20131230
+packetLen(0x091e, 10) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20131023
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20131016
+packetLen(0x091e, 8) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20130925
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20130917
+packetLen(0x091e, 4) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20130911
+packetLen(0x091e, 5) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20130904
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20130828
+packetLen(0x091e, 6) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20130724
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20130717
+packetLen(0x091e, 10) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20130313
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20130306
+packetLen(0x091e, 8) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20130103
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#endif
+
+// Packet: 0x091f
+#if PACKETVER >= 20131230
+packetLen(0x091f, 18) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20131211
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20131204
+packetLen(0x091f, 5) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20131023
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20131016
+packetLen(0x091f, 5) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20130403
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20130327
+packetLen(0x091f, -1) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20130306
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20130227
+packetLen(0x091f, 6) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20130130
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20130121
+packetLen(0x091f, 6) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20130103
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#endif
+
+// Packet: 0x0920
+#if PACKETVER >= 20131120
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20131113
+packetLen(0x0920, 12) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20130320
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20130313
+packetLen(0x0920, 36) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20130215
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20130130
+packetLen(0x0920, 26) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20130103
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#endif
+
+// Packet: 0x0921
+#if PACKETVER >= 20130925
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20130917
+packetLen(0x0921, 6) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20130731
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20130724
+packetLen(0x0921, 90) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20130703
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20130626
+packetLen(0x0921, 8) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20130103
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#endif
+
+// Packet: 0x0922
+#if PACKETVER >= 20130327
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20130320
+packetLen(0x0922, -1) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20130115
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20130109
+packetLen(0x0922, 6) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20130103
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#endif
+
+// Packet: 0x0923
+#if PACKETVER >= 20131030
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20131023
+packetLen(0x0923, 7) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20130925
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20130917
+packetLen(0x0923, 5) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20130904
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20130828
+packetLen(0x0923, 10) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20130821
+packetLen(0x0923, 19) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20130814
+packetLen(0x0923, 6) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20130807
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20130731
+packetLen(0x0923, 18) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20130220
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20130215
+packetLen(0x0923, 5) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20130103
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#endif
+
+// Packet: 0x0924
+#if PACKETVER >= 20131030
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20131023
+packetLen(0x0924, 6) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130904
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130828
+packetLen(0x0924, 6) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130731
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130724
+packetLen(0x0924, 6) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130306
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130227
+packetLen(0x0924, 90) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130206
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130130
+packetLen(0x0924, 6) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130103
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#endif
+
+// Packet: 0x0925
+#if PACKETVER >= 20131106
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20131030
+packetLen(0x0925, 5) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130807
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130731
+packetLen(0x0925, 10) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130529
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130522
+packetLen(0x0925, 5) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130215
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130206
+packetLen(0x0925, 6) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130103
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#endif
+
+// Packet: 0x0926
+#if PACKETVER >= 20131230
+packetLen(0x0926, 6) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20131127
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20131120
+packetLen(0x0926, -1) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20131113
+packetLen(0x0926, 5) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130821
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130814
+packetLen(0x0926, 6) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130529
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130522
+packetLen(0x0926, 5) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130410
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130403
+packetLen(0x0926, 5) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130313
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130306
+packetLen(0x0926, 36) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130103
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#endif
+
+// Packet: 0x0927
+#if PACKETVER >= 20131127
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20131120
+packetLen(0x0927, 8) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20131113
+packetLen(0x0927, 26) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20131023
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20131016
+packetLen(0x0927, 6) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20131008
+packetLen(0x0927, 12) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130821
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130814
+packetLen(0x0927, 26) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130731
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130724
+packetLen(0x0927, 26) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130115
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130109
+packetLen(0x0927, 90) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130103
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#endif
+
+// Packet: 0x0928
+#if PACKETVER >= 20131211
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20131204
+packetLen(0x0928, 7) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20131120
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20131113
+packetLen(0x0928, 36) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20130904
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20130828
+packetLen(0x0928, -1) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20130121
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20130109
+packetLen(0x0928, -1) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20130103
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#endif
+
+// Packet: 0x0929
+#if PACKETVER >= 20131120
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20131113
+packetLen(0x0929, 6) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20131106
+packetLen(0x0929, 8) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20130904
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20130828
+packetLen(0x0929, 8) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20130424
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20130417
+packetLen(0x0929, 5) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20130103
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#endif
+
+// Packet: 0x092a
+#if PACKETVER >= 20131230
+packetLen(0x092a, 6) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20130103
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#endif
+
+// Packet: 0x092b
+#if PACKETVER >= 20131218
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20131211
+packetLen(0x092b, 36) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20131127
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20131120
+packetLen(0x092b, 5) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20131113
+packetLen(0x092b, 6) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20130807
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20130731
+packetLen(0x092b, 19) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20130724
+packetLen(0x092b, 26) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20130403
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20130327
+packetLen(0x092b, 5) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20130306
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20130227
+packetLen(0x092b, -1) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20130103
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#endif
+
+// Packet: 0x092c
+#if PACKETVER >= 20131120
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20131113
+packetLen(0x092c, 26) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20130103
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#endif
+
+// Packet: 0x092d
+#if PACKETVER >= 20131211
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20131204
+packetLen(0x092d, 10) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20131120
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20131113
+packetLen(0x092d, 6) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130828
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130821
+packetLen(0x092d, 6) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130807
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130731
+packetLen(0x092d, 5) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130522
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130515
+packetLen(0x092d, 18) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130508
+packetLen(0x092d, 6) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130403
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130327
+packetLen(0x092d, 26) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130320
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130313
+packetLen(0x092d, 5) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130121
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130115
+packetLen(0x092d, 19) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130103
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#endif
+
+// Packet: 0x092e
+#if PACKETVER >= 20131120
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20131113
+packetLen(0x092e, 6) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130731
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130724
+packetLen(0x092e, -1) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130403
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130327
+packetLen(0x092e, 4) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130121
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130115
+packetLen(0x092e, -1) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130103
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#endif
+
+// Packet: 0x092f
+#if PACKETVER >= 20131223
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20131218
+packetLen(0x092f, 19) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20131211
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20131204
+packetLen(0x092f, 5) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20131120
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20131113
+packetLen(0x092f, 6) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20130724
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20130717
+packetLen(0x092f, 26) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20130403
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20130327
+packetLen(0x092f, 8) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20130306
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20130227
+packetLen(0x092f, -1) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20130103
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#endif
+
+// Packet: 0x0930
+#if PACKETVER >= 20131204
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20131127
+packetLen(0x0930, 18) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20130904
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20130828
+packetLen(0x0930, 6) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20130710
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20130703
+packetLen(0x0930, 5) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20130626
+packetLen(0x0930, 36) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20130618
+packetLen(0x0930, 6) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20130115
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20130109
+packetLen(0x0930, 5) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20130103
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#endif
+
+// Packet: 0x0931
+#if PACKETVER >= 20131218
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20131211
+packetLen(0x0931, 8) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130522
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130515
+packetLen(0x0931, 5) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130115
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130109
+packetLen(0x0931, -1) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130103
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#endif
+
+// Packet: 0x0932
+#if PACKETVER >= 20131016
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20131008
+packetLen(0x0932, 10) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20130626
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20130618
+packetLen(0x0932, -1) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20130103
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#endif
+
+// Packet: 0x0933
+#if PACKETVER >= 20130417
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20130410
+packetLen(0x0933, 10) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20130403
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20130327
+packetLen(0x0933, -1) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20130320
+packetLen(0x0933, 6) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20130103
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#endif
+
+// Packet: 0x0934
+#if PACKETVER >= 20131120
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20131113
+packetLen(0x0934, 18) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20131016
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20131008
+packetLen(0x0934, 6) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20130925
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20130917
+packetLen(0x0934, 12) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20130313
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20130306
+packetLen(0x0934, 26) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20130103
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#endif
+
+// Packet: 0x0935
+#if PACKETVER >= 20131113
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20131106
+packetLen(0x0935, 26) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20131030
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20131023
+packetLen(0x0935, 6) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20130807
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20130731
+packetLen(0x0935, 6) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20130103
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#endif
+
+// Packet: 0x0936
+#if PACKETVER >= 20131120
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20131113
+packetLen(0x0936, 5) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20131016
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20131008
+packetLen(0x0936, 6) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130821
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130814
+packetLen(0x0936, -1) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130626
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130618
+packetLen(0x0936, 8) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130605
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130529
+packetLen(0x0936, -1) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130306
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130227
+packetLen(0x0936, 12) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130103
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#endif
+
+// Packet: 0x0937
+#if PACKETVER >= 20131030
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20131023
+packetLen(0x0937, -1) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20130911
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20130904
+packetLen(0x0937, 26) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20130821
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20130814
+packetLen(0x0937, 6) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20130605
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20130529
+packetLen(0x0937, 6) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20130103
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#endif
+
+// Packet: 0x0938
+#if PACKETVER >= 20130605
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130529
+packetLen(0x0938, 8) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130403
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130327
+packetLen(0x0938, 8) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130320
+packetLen(0x0938, -1) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130115
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130109
+packetLen(0x0938, 26) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130103
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#endif
+
+// Packet: 0x0939
+#if PACKETVER >= 20130417
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20130410
+packetLen(0x0939, 7) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20130403
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20130327
+packetLen(0x0939, 6) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20130121
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20130115
+packetLen(0x0939, 6) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20130103
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#endif
+
+// Packet: 0x093a
+#if PACKETVER >= 20131204
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20131127
+packetLen(0x093a, 26) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130917
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130911
+packetLen(0x093a, 8) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130904
+packetLen(0x093a, 5) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130821
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130814
+packetLen(0x093a, 5) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130618
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130612
+packetLen(0x093a, 5) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130215
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130206
+packetLen(0x093a, 5) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130130
+packetLen(0x093a, 36) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130103
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#endif
+
+// Packet: 0x093b
+#if PACKETVER >= 20131211
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20131204
+packetLen(0x093b, 8) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20131113
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20131106
+packetLen(0x093b, 6) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20130724
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20130717
+packetLen(0x093b, -1) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20130103
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#endif
+
+// Packet: 0x093c
+#if PACKETVER >= 20131120
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20131113
+packetLen(0x093c, 5) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20131016
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20131008
+packetLen(0x093c, 5) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20130215
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20130206
+packetLen(0x093c, 26) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20130103
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#endif
+
+// Packet: 0x093d
+#if PACKETVER >= 20131230
+packetLen(0x093d, -1) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130417
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130410
+packetLen(0x093d, 8) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130206
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130130
+packetLen(0x093d, -1) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130103
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#endif
+
+// Packet: 0x093e
+#if PACKETVER >= 20131230
+packetLen(0x093e, 8) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20131127
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20131120
+packetLen(0x093e, 90) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20130828
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20130821
+packetLen(0x093e, 8) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20130529
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20130522
+packetLen(0x093e, 12) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20130515
+packetLen(0x093e, 36) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20130115
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20130109
+packetLen(0x093e, 18) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20130103
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#endif
+
+// Packet: 0x093f
+#if PACKETVER >= 20131127
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20131120
+packetLen(0x093f, -1) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20130327
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20130320
+packetLen(0x093f, 5) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20130103
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#endif
+
+// Packet: 0x0940
+#if PACKETVER >= 20131204
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20131127
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20131120
+packetLen(0x0940, 4) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20131008
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20131002
+packetLen(0x0940, 5) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130925
+packetLen(0x0940, 10) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130917
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130911
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130618
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130612
+packetLen(0x0940, 26) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130130
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130121
+packetLen(0x0940, -1) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130109
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130103
+packetLen(0x0940, 19) // ZC_REASSEMBLY_AUTH84
+#endif
+
+// Packet: 0x0941
+#if PACKETVER >= 20131211
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20131204
+packetLen(0x0941, 8) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130807
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130731
+packetLen(0x0941, 8) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130220
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130215
+packetLen(0x0941, 26) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130103
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#endif
+
+// Packet: 0x0942
+#if PACKETVER >= 20131113
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20131106
+packetLen(0x0942, 10) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20130626
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20130618
+packetLen(0x0942, -1) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20130410
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20130403
+packetLen(0x0942, 5) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20130103
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#endif
+
+// Packet: 0x0943
+#if PACKETVER >= 20131230
+packetLen(0x0943, 26) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20130522
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20130515
+packetLen(0x0943, 19) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20130313
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20130306
+packetLen(0x0943, 10) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20130103
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#endif
+
+// Packet: 0x0944
+#if PACKETVER >= 20131030
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20131023
+packetLen(0x0944, -1) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20130904
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20130828
+packetLen(0x0944, 26) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20130626
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20130618
+packetLen(0x0944, 6) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20130522
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20130515
+packetLen(0x0944, 6) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20130508
+packetLen(0x0944, 4) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20130417
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20130410
+packetLen(0x0944, 4) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20130313
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20130306
+packetLen(0x0944, -1) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20130103
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#endif
+
+// Packet: 0x0945
+#if PACKETVER >= 20130626
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20130618
+packetLen(0x0945, 6) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20130417
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20130410
+packetLen(0x0945, 5) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20130103
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#endif
+
+// Packet: 0x0946
+#if PACKETVER >= 20131113
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20131106
+packetLen(0x0946, 6) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20131023
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20131016
+packetLen(0x0946, 18) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20130904
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20130828
+packetLen(0x0946, 4) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20130313
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20130306
+packetLen(0x0946, 26) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20130227
+packetLen(0x0946, 8) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20130121
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20130115
+packetLen(0x0946, -1) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20130103
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#endif
+
+// Packet: 0x0947
+#if PACKETVER >= 20131223
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20131218
+packetLen(0x0947, 5) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20131113
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20131106
+packetLen(0x0947, 7) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20131016
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20131008
+packetLen(0x0947, 36) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20130821
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20130814
+packetLen(0x0947, 10) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20130522
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20130515
+packetLen(0x0947, 26) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20130327
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20130320
+packetLen(0x0947, 36) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20130313
+packetLen(0x0947, 19) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20130103
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#endif
+
+// Packet: 0x0948
+#if PACKETVER >= 20131113
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20131106
+packetLen(0x0948, 4) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20130917
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20130911
+packetLen(0x0948, 26) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20130103
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#endif
+
+// Packet: 0x0949
+#if PACKETVER >= 20131230
+packetLen(0x0949, 5) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20131120
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20131113
+packetLen(0x0949, 10) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20130103
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#endif
+
+// Packet: 0x094a
+#if PACKETVER >= 20131230
+packetLen(0x094a, 5) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20131030
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20131023
+packetLen(0x094a, 26) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20130904
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20130828
+packetLen(0x094a, 26) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20130731
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20130724
+packetLen(0x094a, 6) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20130710
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20130703
+packetLen(0x094a, 5) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20130403
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20130327
+packetLen(0x094a, 5) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20130313
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20130306
+packetLen(0x094a, 18) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20130103
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#endif
+
+// Packet: 0x094b
+#if PACKETVER >= 20130403
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20130327
+packetLen(0x094b, 36) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20130227
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20130220
+packetLen(0x094b, 36) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20130121
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20130115
+packetLen(0x094b, 18) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20130103
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#endif
+
+// Packet: 0x094c
+#if PACKETVER >= 20131218
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20131211
+packetLen(0x094c, 8) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20131204
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20131127
+packetLen(0x094c, 6) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20130925
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20130917
+packetLen(0x094c, 18) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20130904
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20130828
+packetLen(0x094c, -1) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20130807
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20130731
+packetLen(0x094c, 8) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20130327
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20130320
+packetLen(0x094c, 6) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20130121
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20130115
+packetLen(0x094c, 6) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20130103
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#endif
+
+// Packet: 0x094d
+#if PACKETVER >= 20130703
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20130626
+packetLen(0x094d, 5) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20130515
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20130508
+packetLen(0x094d, 5) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20130103
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#endif
+
+// Packet: 0x094e
+#if PACKETVER >= 20130925
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130917
+packetLen(0x094e, 8) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130327
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130320
+packetLen(0x094e, -1) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130313
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130306
+packetLen(0x094e, 6) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130121
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130115
+packetLen(0x094e, 6) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130103
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#endif
+
+// Packet: 0x094f
+#if PACKETVER >= 20131204
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20131127
+packetLen(0x094f, 6) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130904
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130828
+packetLen(0x094f, 7) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130626
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130618
+packetLen(0x094f, 90) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130403
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130327
+packetLen(0x094f, 26) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130130
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130121
+packetLen(0x094f, 6) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130115
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130109
+packetLen(0x094f, -1) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130103
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#endif
+
+// Packet: 0x0950
+#if PACKETVER >= 20131127
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20131120
+packetLen(0x0950, 6) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20131106
+packetLen(0x0950, -1) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130529
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130522
+packetLen(0x0950, 26) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130410
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130403
+packetLen(0x0950, 26) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130215
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130206
+packetLen(0x0950, 8) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130115
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130109
+packetLen(0x0950, 36) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130103
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#endif
+
+// Packet: 0x0951
+#if PACKETVER >= 20131211
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20131204
+packetLen(0x0951, -1) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20131030
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20131023
+packetLen(0x0951, 6) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130626
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130618
+packetLen(0x0951, 10) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130605
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130529
+packetLen(0x0951, 5) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130313
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130306
+packetLen(0x0951, -1) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130227
+packetLen(0x0951, 10) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130115
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130109
+packetLen(0x0951, 6) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130103
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#endif
+
+// Packet: 0x0952
+#if PACKETVER >= 20131016
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20131008
+packetLen(0x0952, 6) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20130724
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20130717
+packetLen(0x0952, 90) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20130703
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20130626
+packetLen(0x0952, 6) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20130529
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20130522
+packetLen(0x0952, -1) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20130103
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#endif
+
+// Packet: 0x0953
+#if PACKETVER >= 20131127
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20131120
+packetLen(0x0953, 26) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20130731
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20130724
+packetLen(0x0953, 5) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20130626
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20130618
+packetLen(0x0953, 26) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20130103
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#endif
+
+// Packet: 0x0954
+#if PACKETVER >= 20131113
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20131106
+packetLen(0x0954, 12) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20131030
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20131023
+packetLen(0x0954, 8) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20131016
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20131008
+packetLen(0x0954, -1) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20130828
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20130821
+packetLen(0x0954, 10) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20130731
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20130724
+packetLen(0x0954, 6) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20130103
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#endif
+
+// Packet: 0x0955
+#if PACKETVER >= 20131127
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20131120
+packetLen(0x0955, 6) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20130417
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20130410
+packetLen(0x0955, 10) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20130403
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20130327
+packetLen(0x0955, 7) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20130103
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#endif
+
+// Packet: 0x0956
+#if PACKETVER >= 20131127
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20131120
+packetLen(0x0956, 5) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20131016
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20131008
+packetLen(0x0956, -1) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20130911
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20130904
+packetLen(0x0956, 36) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20130807
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20130731
+packetLen(0x0956, 26) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20130724
+packetLen(0x0956, 12) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20130717
+packetLen(0x0956, 8) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20130605
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20130529
+packetLen(0x0956, 36) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20130220
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20130215
+packetLen(0x0956, 26) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20130206
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20130130
+packetLen(0x0956, 19) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20130121
+packetLen(0x0956, 5) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20130103
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#endif
+
+// Packet: 0x0957
+#if PACKETVER >= 20130925
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130917
+packetLen(0x0957, 10) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130807
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130731
+packetLen(0x0957, 6) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130605
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130529
+packetLen(0x0957, 8) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130515
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130508
+packetLen(0x0957, 8) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130206
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130130
+packetLen(0x0957, 12) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130103
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#endif
+
+// Packet: 0x0958
+#if PACKETVER >= 20131211
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20131204
+packetLen(0x0958, -1) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20131002
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130925
+packetLen(0x0958, 6) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130821
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130814
+packetLen(0x0958, 5) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130807
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130731
+packetLen(0x0958, -1) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130724
+packetLen(0x0958, 10) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130717
+packetLen(0x0958, 6) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130605
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130529
+packetLen(0x0958, -1) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130103
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#endif
+
+// Packet: 0x0959
+#if PACKETVER >= 20131211
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20131204
+packetLen(0x0959, 90) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20130925
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20130917
+packetLen(0x0959, -1) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20130821
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20130814
+packetLen(0x0959, 18) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20130327
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20130320
+packetLen(0x0959, 10) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20130103
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#endif
+
+// Packet: 0x095a
+#if PACKETVER >= 20131002
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20130925
+packetLen(0x095a, 18) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20130327
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20130320
+packetLen(0x095a, 8) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20130121
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20130115
+packetLen(0x095a, 36) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20130103
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#endif
+
+// Packet: 0x095b
+#if PACKETVER >= 20131211
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20131204
+packetLen(0x095b, 12) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20131030
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20131023
+packetLen(0x095b, 5) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20131002
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130925
+packetLen(0x095b, -1) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130917
+packetLen(0x095b, 5) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130807
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130731
+packetLen(0x095b, 90) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130724
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130717
+packetLen(0x095b, 36) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130626
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130618
+packetLen(0x095b, 19) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130529
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130522
+packetLen(0x095b, -1) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130306
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130227
+packetLen(0x095b, 6) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130206
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130130
+packetLen(0x095b, 18) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130121
+packetLen(0x095b, 26) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130103
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#endif
+
+// Packet: 0x095c
+#if PACKETVER >= 20131204
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20131127
+packetLen(0x095c, 19) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20131002
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20130925
+packetLen(0x095c, 8) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20130731
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20130724
+packetLen(0x095c, -1) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20130529
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20130522
+packetLen(0x095c, 10) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20130515
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20130508
+packetLen(0x095c, 5) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20130206
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20130130
+packetLen(0x095c, 8) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20130103
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#endif
+
+// Packet: 0x095d
+#if PACKETVER >= 20131120
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20131113
+packetLen(0x095d, 7) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20131106
+packetLen(0x095d, 26) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20131016
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20131008
+packetLen(0x095d, 26) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20130904
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20130828
+packetLen(0x095d, 5) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20130807
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20130731
+packetLen(0x095d, 12) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20130724
+packetLen(0x095d, 8) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20130220
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20130215
+packetLen(0x095d, 5) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20130103
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#endif
+
+// Packet: 0x095e
+#if PACKETVER >= 20131127
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20131120
+packetLen(0x095e, 18) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20131023
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20131016
+packetLen(0x095e, 10) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20130828
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20130821
+packetLen(0x095e, 6) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20130529
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20130522
+packetLen(0x095e, 6) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20130306
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20130227
+packetLen(0x095e, 36) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20130115
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20130109
+packetLen(0x095e, 6) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20130103
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#endif
+
+// Packet: 0x095f
+#if PACKETVER >= 20131120
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20131113
+packetLen(0x095f, 10) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20130821
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20130814
+packetLen(0x095f, 6) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20130807
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20130731
+packetLen(0x095f, 6) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20130103
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#endif
+
+// Packet: 0x0960
+#if PACKETVER >= 20131120
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20131113
+packetLen(0x0960, 8) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130724
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130717
+packetLen(0x0960, 12) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130703
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130626
+packetLen(0x0960, 5) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130417
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130410
+packetLen(0x0960, 26) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130403
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130327
+packetLen(0x0960, 10) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130313
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130306
+packetLen(0x0960, 6) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130103
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#endif
+
+// Packet: 0x0961
+#if PACKETVER >= 20131211
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20131204
+packetLen(0x0961, 4) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20130508
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20130502
+packetLen(0x0961, 8) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20130403
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20130327
+packetLen(0x0961, 6) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20130103
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#endif
+
+// Packet: 0x0962
+#if PACKETVER >= 20131113
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20131106
+packetLen(0x0962, -1) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20131023
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20131016
+packetLen(0x0962, 7) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130828
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130821
+packetLen(0x0962, 6) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130814
+packetLen(0x0962, 90) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130807
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130731
+packetLen(0x0962, 6) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130626
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130618
+packetLen(0x0962, 6) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130522
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130515
+packetLen(0x0962, 26) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130424
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130417
+packetLen(0x0962, 5) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130313
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130306
+packetLen(0x0962, 6) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130220
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130215
+packetLen(0x0962, 8) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130103
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#endif
+
+// Packet: 0x0963
+#if PACKETVER >= 20130522
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20130515
+packetLen(0x0963, -1) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20130130
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20130121
+packetLen(0x0963, 8) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20130103
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#endif
+
+// Packet: 0x0964
+#if PACKETVER >= 20131120
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20131113
+packetLen(0x0964, 4) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130828
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130821
+packetLen(0x0964, 6) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130618
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130612
+packetLen(0x0964, 36) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130529
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130522
+packetLen(0x0964, 90) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130103
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#endif
+
+// Packet: 0x0965
+#if PACKETVER >= 20130731
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20130724
+packetLen(0x0965, -1) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20130529
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20130522
+packetLen(0x0965, 8) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20130103
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#endif
+
+// Packet: 0x0966
+#if PACKETVER >= 20131023
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20131016
+packetLen(0x0966, 5) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20130904
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20130828
+packetLen(0x0966, 8) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20130731
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20130724
+packetLen(0x0966, 5) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20130103
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#endif
+
+// Packet: 0x0967
+#if PACKETVER >= 20131211
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20131204
+packetLen(0x0967, 8) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20131127
+packetLen(0x0967, 26) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20131113
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20131106
+packetLen(0x0967, -1) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130917
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130911
+packetLen(0x0967, 6) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130828
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130821
+packetLen(0x0967, 18) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130724
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130717
+packetLen(0x0967, 6) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130508
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130502
+packetLen(0x0967, 6) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130417
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130410
+packetLen(0x0967, -1) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130403
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130327
+packetLen(0x0967, -1) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130306
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130227
+packetLen(0x0967, 7) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130103
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#endif
+
+// Packet: 0x0968
+#if PACKETVER >= 20131230
+packetLen(0x0968, 8) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20130103
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#endif
+
+// Packet: 0x0969
+#if PACKETVER >= 20131230
+packetLen(0x0969, 6) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20131120
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20131113
+packetLen(0x0969, -1) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20131016
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20131008
+packetLen(0x0969, -1) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20131002
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20130925
+packetLen(0x0969, 4) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20130828
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20130821
+packetLen(0x0969, 26) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20130502
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20130424
+packetLen(0x0969, 36) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20130417
+packetLen(0x0969, 6) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20130130
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20130121
+packetLen(0x0969, -1) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20130103
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#endif
+
+// Packet: 0x096a
+#if PACKETVER >= 20131230
+packetLen(0x096a, 90) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20131211
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20131204
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20131127
+packetLen(0x096a, 8) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20131106
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20131030
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20131008
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130925
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130917
+packetLen(0x096a, 26) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130911
+packetLen(0x096a, 8) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130904
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130828
+packetLen(0x096a, 19) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130814
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130807
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130717
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130626
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130618
+packetLen(0x096a, 10) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130605
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130522
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130508
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130502
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130424
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130417
+packetLen(0x096a, 4) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130403
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130320
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130313
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130227
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130206
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130130
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130121
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130109
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130103
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#endif
+
+// Packet: 0x096b
+packetLen(0x096b, 4) // ZC_PRNPC_STATE
+
+// Packet: 0x096c
+packetLen(0x096c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+
+// Packet: 0x096d
+packetLen(0x096d, -1) // ZC_MERGE_ITEM_OPEN
+
+// Packet: 0x096e
+packetLen(0x096e, -1) // CZ_REQ_MERGE_ITEM
+
+// Packet: 0x096f
+packetLen(0x096f, 7) // ZC_ACK_MERGE_ITEM
+
+// Packet: 0x0970
+packetLen(0x0970, 31) // CH_MAKE_CHAR_NOT_STATS
+
+// Packet: 0x0971
+packetLen(0x0971, 6) // ZC_PARTY_RECRUIT_REFUSE_VOLUNTEER_TO_PM
+
+// Packet: 0x0972
+packetLen(0x0972, -1) // ZC_SAY_DIALOG2
+
+// Packet: 0x0973
+packetLen(0x0973, 7) // ZC_WAIT_DIALOG2
+
+// Packet: 0x0974
+packetLen(0x0974, 2) // CZ_CANCEL_MERGE_ITEM
+
+// Packet: 0x0975
+packetLen(0x0975, -1) // ZC_STORE_ITEMLIST_NORMAL_V2
+
+// Packet: 0x0976
+packetLen(0x0976, -1) // ZC_STORE_ITEMLIST_EQUIP_V2
+
+// Packet: 0x0977
+packetLen(0x0977, 14) // ZC_HP_INFO
+
+// Packet: 0x0978
+packetLen(0x0978, 6) // CZ_REQ_BEFORE_WORLD_INFO
+
+// Packet: 0x0979
+packetLen(0x0979, 50) // ZC_ACK_BEFORE_WORLD_INFO
+
+// Packet: 0x097a
+packetLen(0x097a, -1) // ZC_ALL_QUEST_LIST2
+
+// Packet: 0x097b
+packetLen(0x097b, -1) // ZC_PERSONAL_INFOMATION2
+
+// Packet: 0x097c
+packetLen(0x097c, 4) // CZ_REQ_RANKING
+
+// Packet: 0x097d
+packetLen(0x097d, 288) // ZC_ACK_RANKING
+
+// Packet: 0x097e
+packetLen(0x097e, 12) // ZC_UPDATE_RANKING_POINT
+
+// Packet: 0x097f
+packetLen(0x097f, -1) // ZC_SELECTCART
+
+// Packet: 0x0980
+packetLen(0x0980, 7) // CZ_SELECTCART
+
+// Packet: 0x0981
+packetLen(0x0981, -1) // ZC_PERSONAL_INFOMATION_CHN
+
+// Packet: 0x0982
+packetLen(0x0982, 7) // ZC_FATIGUE_CHN
+
+// Packet: 0x0983
+packetLen(0x0983, 29) // ZC_MSG_STATE_CHANGE3
+
+// Packet: 0x0984
+packetLen(0x0984, 28) // ZC_EFST_SET_ENTER2
+
+// Packet: 0x0985
+packetLen(0x0985, -1) // ZC_SKILL_POSTDELAY_LIST2
+
+// Packet: 0x0986
+packetLen(0x0986, 10) // AC_SHUTDOWN_NOTIFY
+
+// Packet: 0x0987
+#if PACKETVER >= 20130115
+packetLen(0x0987, -1) // CA_LOGIN6
+#elif PACKETVER >= 20130103
+packetLen(0x0987, 63) // CA_LOGIN6
+#endif
+
+// Packet: 0x0988
+packetLen(0x0988, 6) // ZC_NOTIFY_CLAN_CONNECTINFO
+
+// Packet: 0x0989
+packetLen(0x0989, 2) // ZC_ACK_CLAN_LEAVE
+
+// Packet: 0x098a
+packetLen(0x098a, -1) // ZC_CLANINFO
+
+// Packet: 0x098b
+packetLen(0x098b, 2) // AC_REQ_NEW_USER
+
+// Packet: 0x098c
+packetLen(0x098c, 4) // CA_ACK_NEW_USER
+
+// Packet: 0x098d
+packetLen(0x098d, -1) // CZ_CLAN_CHAT
+
+// Packet: 0x098e
+packetLen(0x098e, -1) // ZC_NOTIFY_CLAN_CHAT
+
+// Packet: 0x098f
+packetLen(0x098f, -1) // CH_DELETE_CHAR3_EXT
+
+// Packet: 0x0990
+packetLen(0x0990, 31) // ZC_ITEM_PICKUP_ACK_V5
+
+// Packet: 0x0991
+packetLen(0x0991, -1) // ZC_INVENTORY_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0992
+packetLen(0x0992, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0993
+packetLen(0x0993, -1) // ZC_CART_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0994
+packetLen(0x0994, -1) // ZC_CART_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0995
+packetLen(0x0995, -1) // ZC_STORE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0996
+packetLen(0x0996, -1) // ZC_STORE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0997
+packetLen(0x0997, -1) // ZC_EQUIPWIN_MICROSCOPE_V5
+
+// Packet: 0x0998
+packetLen(0x0998, 8) // CZ_REQ_WEAR_EQUIP_V5
+
+// Packet: 0x0999
+packetLen(0x0999, 11) // ZC_ACK_WEAR_EQUIP_V5
+
+// Packet: 0x099a
+packetLen(0x099a, 9) // ZC_ACK_TAKEOFF_EQUIP_V5
+
+// Packet: 0x099b
+packetLen(0x099b, 8) // ZC_MAPPROPERTY_R2
+
+// Packet: 0x099c
+packetLen(0x099c, 6) // CH_REQ_CHARINFO_PER_PAGE
+
+// Packet: 0x099d
+packetLen(0x099d, -1) // HC_ACK_CHARINFO_PER_PAGE
+
+// Packet: 0x099e
+packetLen(0x099e, 12) // HC_QUEUE_ORDER
+
+// Packet: 0x099f
+packetLen(0x099f, -1) // ZC_SKILL_ENTRY4
+
+// Packet: 0x09a0
+packetLen(0x09a0, 6) // HC_CHARLIST_NOTIFY
+
+// Packet: 0x09a1
+packetLen(0x09a1, 2) // CH_CHARLIST_REQ
+
+// Packet: 0x09a2
+#if PACKETVER >= 20130130
+packetLen(0x09a2, 6) // AC_REQ_MOBILE_OTP
+#endif
+
+// Packet: 0x09a3
+#if PACKETVER >= 20130130
+packetLen(0x09a3, -1) // CA_ACK_MOBILE_OTP
+#endif
+
+// Packet: 0x09a4
+#if PACKETVER >= 20130206
+packetLen(0x09a4, 18) // ZC_DISPATCH_TIMING_INFO_CHN
+#endif
+
+// Packet: 0x09a5
+#if PACKETVER >= 20130220
+packetLen(0x09a5, 7) // AC_REFUSE_LOGIN3
+#endif
+
+// Packet: 0x09a6
+#if PACKETVER >= 20130306
+packetLen(0x09a6, 12) // ZC_BANKING_CHECK
+#endif
+
+// Packet: 0x09a7
+#if PACKETVER >= 20130320
+packetLen(0x09a7, 10) // CZ_REQ_BANKING_DEPOSIT
+#elif PACKETVER >= 20130306
+packetLen(0x09a7, 14) // CZ_REQ_BANKING_DEPOSIT
+#endif
+
+// Packet: 0x09a8
+#if PACKETVER >= 20130515
+packetLen(0x09a8, 16) // ZC_ACK_BANKING_DEPOSIT
+#elif PACKETVER >= 20130320
+packetLen(0x09a8, 12) // ZC_ACK_BANKING_DEPOSIT
+#elif PACKETVER >= 20130306
+packetLen(0x09a8, 4) // ZC_ACK_BANKING_DEPOSIT
+#endif
+
+// Packet: 0x09a9
+#if PACKETVER >= 20130320
+packetLen(0x09a9, 10) // CZ_REQ_BANKING_WITHDRAW
+#elif PACKETVER >= 20130306
+packetLen(0x09a9, 14) // CZ_REQ_BANKING_WITHDRAW
+#endif
+
+// Packet: 0x09aa
+#if PACKETVER >= 20130515
+packetLen(0x09aa, 16) // ZC_ACK_BANKING_WITHDRAW
+#elif PACKETVER >= 20130320
+packetLen(0x09aa, 12) // ZC_ACK_BANKING_WITHDRAW
+#elif PACKETVER >= 20130306
+packetLen(0x09aa, 4) // ZC_ACK_BANKING_WITHDRAW
+#endif
+
+// Packet: 0x09ab
+#if PACKETVER >= 20130320
+packetLen(0x09ab, 6) // CZ_REQ_BANKING_CHECK
+#elif PACKETVER >= 20130313
+packetLen(0x09ab, -1) // CZ_REQ_BANKING_CHECK
+#endif
+
+// Packet: 0x09ac
+#if PACKETVER >= 20130327
+packetLen(0x09ac, -1) // CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO
+#elif PACKETVER >= 20130320
+// removed
+#elif PACKETVER >= 20130313
+packetLen(0x09ac, 20) // CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO
+#endif
+
+// Packet: 0x09ad
+#if PACKETVER >= 20130327
+packetLen(0x09ad, 10) // ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO
+#elif PACKETVER >= 20130320
+// removed
+#elif PACKETVER >= 20130313
+packetLen(0x09ad, 6) // ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO
+#endif
+
+// Packet: 0x09ae
+#if PACKETVER >= 20130327
+packetLen(0x09ae, 17) // CZ_REQ_APPLY_BARGAIN_SALE_ITEM
+#elif PACKETVER >= 20130320
+// removed
+#elif PACKETVER >= 20130313
+packetLen(0x09ae, -1) // CZ_REQ_APPLY_BARGAIN_SALE_ITEM
+#endif
+
+// Packet: 0x09af
+#if PACKETVER >= 20130327
+packetLen(0x09af, 4) // ZC_ACK_APPLY_BARGAIN_SALE_ITEM
+#elif PACKETVER >= 20130320
+// removed
+#elif PACKETVER >= 20130313
+packetLen(0x09af, -1) // ZC_ACK_APPLY_BARGAIN_SALE_ITEM
+#endif
+
+// Packet: 0x09b0
+#if PACKETVER >= 20130327
+packetLen(0x09b0, 8) // CZ_REQ_REMOVE_BARGAIN_SALE_ITEM
+#elif PACKETVER >= 20130320
+// removed
+#elif PACKETVER >= 20130313
+packetLen(0x09b0, 8) // CZ_REQ_REMOVE_BARGAIN_SALE_ITEM
+#endif
+
+// Packet: 0x09b1
+#if PACKETVER >= 20130327
+packetLen(0x09b1, 4) // ZC_ACK_REMOVE_BARGAIN_SALE_ITEM
+#elif PACKETVER >= 20130320
+// removed
+#elif PACKETVER >= 20130313
+packetLen(0x09b1, 6) // ZC_ACK_REMOVE_BARGAIN_SALE_ITEM
+#endif
+
+// Packet: 0x09b2
+#if PACKETVER >= 20130605
+packetLen(0x09b2, 8) // ZC_NOTIFY_BARGAIN_SALE_SELLING
+#elif PACKETVER >= 20130327
+packetLen(0x09b2, 6) // ZC_NOTIFY_BARGAIN_SALE_SELLING
+#elif PACKETVER >= 20130320
+// removed
+#elif PACKETVER >= 20130313
+packetLen(0x09b2, -1) // ZC_NOTIFY_BARGAIN_SALE_SELLING
+#endif
+
+// Packet: 0x09b3
+#if PACKETVER >= 20130605
+packetLen(0x09b3, 4) // ZC_NOTIFY_BARGAIN_SALE_CLOSE
+#elif PACKETVER >= 20130327
+packetLen(0x09b3, 6) // ZC_NOTIFY_BARGAIN_SALE_CLOSE
+#endif
+
+// Packet: 0x09b4
+#if PACKETVER >= 20130417
+packetLen(0x09b4, 6) // CZ_OPEN_BARGAIN_SALE_TOOL
+#endif
+
+// Packet: 0x09b5
+#if PACKETVER >= 20130417
+packetLen(0x09b5, 2) // ZC_OPEN_BARGAIN_SALE_TOOL
+#endif
+
+// Packet: 0x09b6
+#if PACKETVER >= 20130417
+packetLen(0x09b6, 6) // CZ_REQ_OPEN_BANKING
+#endif
+
+// Packet: 0x09b7
+#if PACKETVER >= 20130417
+packetLen(0x09b7, 4) // ZC_ACK_OPEN_BANKING
+#endif
+
+// Packet: 0x09b8
+#if PACKETVER >= 20130417
+packetLen(0x09b8, 6) // CZ_REQ_CLOSE_BANKING
+#endif
+
+// Packet: 0x09b9
+#if PACKETVER >= 20130417
+packetLen(0x09b9, 4) // ZC_ACK_CLOSE_BANKING
+#endif
+
+// Packet: 0x09ba
+#if PACKETVER >= 20130828
+packetLen(0x09ba, 2) // CZ_REQ_OPEN_GUILD_STORAGE
+#elif PACKETVER >= 20130424
+packetLen(0x09ba, 6) // CZ_REQ_OPEN_GUILD_STORAGE
+#endif
+
+// Packet: 0x09bb
+#if PACKETVER >= 20130502
+packetLen(0x09bb, 6) // ZC_ACK_OPEN_GUILD_STORAGE
+#elif PACKETVER >= 20130424
+packetLen(0x09bb, 4) // ZC_ACK_OPEN_GUILD_STORAGE
+#endif
+
+// Packet: 0x09bc
+#if PACKETVER >= 20130424
+packetLen(0x09bc, 6) // CZ_CLOSE_BARGAIN_SALE_TOOL
+#endif
+
+// Packet: 0x09bd
+#if PACKETVER >= 20130424
+packetLen(0x09bd, 2) // ZC_CLOSE_BARGAIN_SALE_TOOL
+#endif
+
+// Packet: 0x09be
+#if PACKETVER >= 20130828
+packetLen(0x09be, 2) // CZ_REQ_CLOSE_GUILD_STORAGE
+#elif PACKETVER >= 20130502
+packetLen(0x09be, 6) // CZ_REQ_CLOSE_GUILD_STORAGE
+#endif
+
+// Packet: 0x09bf
+#if PACKETVER >= 20130502
+packetLen(0x09bf, 4) // ZC_ACK_CLOSE_GUILD_STORAGE
+#endif
+
+// Packet: 0x09c0
+#if PACKETVER >= 20130618
+// removed
+#elif PACKETVER >= 20130515
+packetLen(0x09c0, 11) // ZC_ACTION_MOVE
+#endif
+
+// Packet: 0x09c1
+#if PACKETVER >= 20130717
+packetLen(0x09c1, 10) // ZC_C_MARKERINFO
+#elif PACKETVER >= 20130515
+packetLen(0x09c1, 11) // ZC_C_MARKERINFO
+#endif
+
+// Packet: 0x09c2
+#if PACKETVER >= 20130522
+packetLen(0x09c2, -1) // HC_SECRETSCAN_DATA
+#endif
+
+// Packet: 0x09c3
+#if PACKETVER >= 20130529
+packetLen(0x09c3, 8) // CZ_REQ_COUNT_BARGAIN_SALE_ITEM
+#endif
+
+// Packet: 0x09c4
+#if PACKETVER >= 20130605
+packetLen(0x09c4, 8) // ZC_ACK_COUNT_BARGAIN_SALE_ITEM
+#endif
+
+// Packet: 0x09c5
+#if PACKETVER >= 20130605
+packetLen(0x09c5, 1042) // CS_LOGIN_QUERY
+#endif
+
+// Packet: 0x09c6
+#if PACKETVER >= 20130605
+packetLen(0x09c6, -1) // SC_LOGIN_ANSWER
+#endif
+
+// Packet: 0x09c7
+#if PACKETVER >= 20130612
+packetLen(0x09c7, 18) // SC_LOGIN_ERROR
+#elif PACKETVER >= 20130605
+packetLen(0x09c7, 10) // SC_LOGIN_ERROR
+#endif
+
+// Packet: 0x09c8
+#if PACKETVER >= 20130605
+packetLen(0x09c8, -1) // CA_LOGIN_OTP
+#endif
+
+// Packet: 0x09c9
+#if PACKETVER >= 20130612
+packetLen(0x09c9, -1) // SC_SOCT
+#endif
+
+// Packet: 0x09ca
+#if PACKETVER >= 20130828
+packetLen(0x09ca, -1) // ZC_SKILL_ENTRY5
+#elif PACKETVER >= 20130618
+packetLen(0x09ca, 23) // ZC_SKILL_ENTRY5
+#endif
+
+// Packet: 0x09cb
+#if PACKETVER >= 20130717
+packetLen(0x09cb, 17) // ZC_USE_SKILL2
+#endif
+
+// Packet: 0x09cc
+#if PACKETVER >= 20130717
+packetLen(0x09cc, -1) // ZC_SECRETSCAN_DATA
+#endif
+
+// Packet: 0x09cd
+#if PACKETVER >= 20130807
+packetLen(0x09cd, 8) // ZC_MSG_COLOR
+#endif
+
+// Packet: 0x09ce
+#if PACKETVER >= 20130814
+packetLen(0x09ce, 102) // CZ_ITEM_CREATE_EX
+#endif
+
+// Packet: 0x09cf
+#if PACKETVER >= 20130814
+packetLen(0x09cf, -1) // ZC_NPROTECTGAMEGUARDCSAUTH
+#endif
+
+// Packet: 0x09d0
+#if PACKETVER >= 20130814
+packetLen(0x09d0, -1) // CZ_NPROTECTGAMEGUARDCSAUTH
+#endif
+
+// Packet: 0x09d1
+#if PACKETVER >= 20130821
+packetLen(0x09d1, 14) // ZC_PROGRESS_ACTOR
+#endif
+
+// Packet: 0x09d2
+#if PACKETVER >= 20130828
+packetLen(0x09d2, -1) // ZC_GUILDSTORAGE_ITEMLIST_NORMAL_V5
+#endif
+
+// Packet: 0x09d3
+#if PACKETVER >= 20130828
+packetLen(0x09d3, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V5
+#endif
+
+// Packet: 0x09d4
+#if PACKETVER >= 20130911
+packetLen(0x09d4, 2) // CZ_NPC_TRADE_QUIT
+#endif
+
+// Packet: 0x09d5
+#if PACKETVER >= 20130911
+packetLen(0x09d5, -1) // ZC_NPC_MARKET_OPEN
+#endif
+
+// Packet: 0x09d6
+#if PACKETVER >= 20130911
+packetLen(0x09d6, -1) // CZ_NPC_MARKET_PURCHASE
+#endif
+
+// Packet: 0x09d7
+#if PACKETVER >= 20130911
+packetLen(0x09d7, -1) // ZC_NPC_MARKET_PURCHASE_RESULT
+#endif
+
+// Packet: 0x09d8
+#if PACKETVER >= 20130911
+packetLen(0x09d8, 2) // CZ_NPC_MARKET_CLOSE
+#endif
+
+// Packet: 0x09d9
+#if PACKETVER >= 20131023
+packetLen(0x09d9, 4) // CZ_REQ_GUILDSTORAGE_LOG
+#elif PACKETVER >= 20131016
+packetLen(0x09d9, 6) // CZ_REQ_GUILDSTORAGE_LOG
+#elif PACKETVER >= 20131002
+packetLen(0x09d9, 4) // CZ_REQ_GUILDSTORAGE_LOG
+#elif PACKETVER >= 20130911
+packetLen(0x09d9, 2) // CZ_REQ_GUILDSTORAGE_LOG
+#endif
+
+// Packet: 0x09da
+#if PACKETVER >= 20131002
+packetLen(0x09da, -1) // ZC_ACK_GUILDSTORAGE_LOG
+#elif PACKETVER >= 20130925
+packetLen(0x09da, 10) // ZC_ACK_GUILDSTORAGE_LOG
+#elif PACKETVER >= 20130911
+packetLen(0x09da, 2) // ZC_ACK_GUILDSTORAGE_LOG
+#endif
+
+// Packet: 0x09db
+#if PACKETVER >= 20131023
+packetLen(0x09db, -1) // ZC_NOTIFY_MOVEENTRY10
+#endif
+
+// Packet: 0x09dc
+#if PACKETVER >= 20131023
+packetLen(0x09dc, -1) // ZC_NOTIFY_NEWENTRY10
+#endif
+
+// Packet: 0x09dd
+#if PACKETVER >= 20131023
+packetLen(0x09dd, -1) // ZC_NOTIFY_STANDENTRY10
+#endif
+
+// Packet: 0x09de
+#if PACKETVER >= 20131030
+packetLen(0x09de, -1) // ZC_WHISPER02
+#endif
+
+// Packet: 0x09df
+#if PACKETVER >= 20131030
+packetLen(0x09df, 7) // ZC_ACK_WHISPER02
+#endif
+
+// Packet: 0x09e0
+#if PACKETVER >= 20131030
+packetLen(0x09e0, -1) // SC_LOGIN_ANSWER_WITH_ID
+#endif
+
+// Packet: 0x09e1
+#if PACKETVER >= 20131106
+packetLen(0x09e1, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_GUILDSTORAGE
+#endif
+
+// Packet: 0x09e2
+#if PACKETVER >= 20131106
+packetLen(0x09e2, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_BODY
+#endif
+
+// Packet: 0x09e3
+#if PACKETVER >= 20131106
+packetLen(0x09e3, 8) // CZ_MOVE_ITEM_FROM_CART_TO_GUILDSTORAGE
+#endif
+
+// Packet: 0x09e4
+#if PACKETVER >= 20131106
+packetLen(0x09e4, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_CART
+#endif
+
+// Packet: 0x09e5
+#if PACKETVER >= 20131127
+packetLen(0x09e5, 18) // ZC_DELETEITEM_FROM_MCSTORE2
+#elif PACKETVER >= 20131120
+packetLen(0x09e5, 14) // ZC_DELETEITEM_FROM_MCSTORE2
+#endif
+
+// Packet: 0x09e6
+#if PACKETVER >= 20131127
+packetLen(0x09e6, 22) // ZC_UPDATE_ITEM_FROM_BUYING_STORE2
+#elif PACKETVER >= 20131120
+packetLen(0x09e6, 18) // ZC_UPDATE_ITEM_FROM_BUYING_STORE2
+#endif
+
+// Packet: 0x09e7
+#if PACKETVER >= 20131211
+packetLen(0x09e7, 2) // ZC_NOTIFY_UNREAD_RODEX
+#endif
+
+// Packet: 0x09e8
+#if PACKETVER >= 20131218
+packetLen(0x09e8, 10) // CZ_OPEN_RODEXBOX
+#elif PACKETVER >= 20131211
+packetLen(0x09e8, 18) // CZ_OPEN_RODEXBOX
+#endif
+
+// Packet: 0x09e9
+#if PACKETVER >= 20131211
+packetLen(0x09e9, 2) // CZ_CLOSE_RODEXBOX
+#endif
+
+// Packet: 0x09ea
+#if PACKETVER >= 20131223
+packetLen(0x09ea, 11) // CZ_REQ_READ_RODEX
+#elif PACKETVER >= 20131218
+packetLen(0x09ea, 10) // CZ_REQ_READ_RODEX
+#endif
+
+// Packet: 0x09eb
+#if PACKETVER >= 20131230
+packetLen(0x09eb, 23) // ZC_ACK_READ_RODEX
+#elif PACKETVER >= 20131223
+packetLen(0x09eb, 24) // ZC_ACK_READ_RODEX
+#elif PACKETVER >= 20131218
+packetLen(0x09eb, 14) // ZC_ACK_READ_RODEX
+#endif
+
+// Packet: 0x09ec
+#if PACKETVER >= 20131230
+packetLen(0x09ec, -1) // CZ_REQ_SEND_RODEX
+#endif
+
+// Packet: 0x09ed
+#if PACKETVER >= 20131230
+packetLen(0x09ed, 3) // ZC_ACK_SEND_RODEX
+#elif PACKETVER >= 20131218
+// removed
+#elif PACKETVER >= 20131211
+packetLen(0x09ed, -1) // ZC_ACK_SEND_RODEX
+#endif
+
+// Packet: 0x09ee
+#if PACKETVER >= 20131218
+packetLen(0x09ee, 11) // CZ_REQ_NEXT_RODEX
+#elif PACKETVER >= 20131211
+packetLen(0x09ee, -1) // CZ_REQ_NEXT_RODEX
+#endif
+
+// Packet: 0x09ef
+#if PACKETVER >= 20131218
+packetLen(0x09ef, 11) // CZ_REQ_REFRESH_RODEX
+#endif
+
+// Packet: 0x09f0
+#if PACKETVER >= 20131218
+packetLen(0x09f0, -1) // ZC_ACK_RODEX_LIST
+#endif
+
+// Packet: 0x09f5
+#if PACKETVER >= 20131218
+packetLen(0x09f5, 11) // CZ_REQ_DELETE_RODEX
+#endif
+
+// Packet: 0x09f6
+#if PACKETVER >= 20131218
+packetLen(0x09f6, 11) // ZC_ACK_DELETE_RODEX
+#endif
+
+// Packet: 0x09f7
+#if PACKETVER >= 20131230
+packetLen(0x09f7, 75) // ZC_PROPERTY_HOMUN_2
+#endif
+
+
+#endif /* COMMON_PACKETS2013_LEN_MAIN_H */
diff --git a/src/common/packets/packets2013_len_re.h b/src/common/packets/packets2013_len_re.h
new file mode 100644
index 000000000..2c7951f7b
--- /dev/null
+++ b/src/common/packets/packets2013_len_re.h
@@ -0,0 +1,8941 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2013_LEN_RE_H
+#define COMMON_PACKETS2013_LEN_RE_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 146) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 22) // CZ_ENTER
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 44) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 10) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, 14)
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+packetLen(0x0094, 19) // CZ_REQNAME
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+packetLen(0x00a7, 9)
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 9) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+packetLen(0x00f7, 17) // CZ_REQUEST_TIME
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+packetLen(0x0113, 25) // CZ_USE_SKILL
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 37) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+#if PACKETVER >= 20131230
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20131223
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+// ignored packet from 2013-12-23bRagexeRE
+#elif PACKETVER >= 20131218
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20131211
+packetLen(0x0202, 10) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20131016
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20131008
+packetLen(0x0202, 6) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20131002
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130828
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130821
+packetLen(0x0202, 10) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130814
+packetLen(0x0202, 8) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130807
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130717
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130710
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130703
+packetLen(0x0202, 6) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130612
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130605
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130502
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130424
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130417
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130320
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130313
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130227
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130220
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130109
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20130103
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x020f
+packetLen(0x020f, 10) // CZ_REQ_PVPPOINT
+
+// Packet: 0x0210
+packetLen(0x0210, 22) // ZC_ACK_PVPPOINT
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+
+// Packet: 0x022b
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+
+// Packet: 0x022c
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+
+// Packet: 0x022d
+#if PACKETVER >= 20131230
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20131223
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+// ignored packet from 2013-12-23aRagexeRE
+#elif PACKETVER >= 20131218
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20131106
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20131030
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+#elif PACKETVER >= 20131023
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20131016
+packetLen(0x022d, 8) // CZ_COMMAND_MER
+#elif PACKETVER >= 20131008
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20131002
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130814
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130807
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130731
+packetLen(0x022d, 26) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130717
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130703
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130612
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130605
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130515
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130508
+packetLen(0x022d, 8) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130502
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130424
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130313
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130306
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130227
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130220
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130109
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20130103
+packetLen(0x022d, 4) // CZ_COMMAND_MER
+#endif
+
+// Packet: 0x022e
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+
+// Packet: 0x022f
+packetLen(0x022f, 5) // ZC_FEED_MER
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+#if PACKETVER >= 20131230
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20131223
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+// ignored packet from 2013-12-23bRagexeRE
+#elif PACKETVER >= 20131008
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20131002
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130904
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130828
+packetLen(0x023b, 90) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130814
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130807
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130717
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130710
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130612
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130605
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130529
+packetLen(0x023b, 5) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130502
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130424
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130410
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130403
+packetLen(0x023b, 6) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130306
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130220
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130215
+packetLen(0x023b, 6) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130109
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20130103
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#endif
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+
+// Packet: 0x0275
+packetLen(0x0275, 37) // CH_ENTER2
+
+// Packet: 0x0276
+packetLen(0x0276, -1) // AC_ACCEPT_LOGIN2
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+#if PACKETVER >= 20131230
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20131223
+packetLen(0x0281, 4) // CZ_GANGSI_RANK
+// ignored packet from 2013-12-23bRagexeRE
+#elif PACKETVER >= 20131218
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20131113
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20131106
+packetLen(0x0281, 6) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20131030
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20131023
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20131016
+packetLen(0x0281, 26) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20131008
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20131002
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130911
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130904
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130821
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130814
+packetLen(0x0281, 26) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130807
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130717
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130703
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130626
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130605
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130502
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130417
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130410
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130403
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130320
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130313
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130227
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130220
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130115
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130109
+packetLen(0x0281, 6) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20130103
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#endif
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+
+// Packet: 0x0288
+packetLen(0x0288, -1) // CZ_PC_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0289
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0296
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0297
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0298
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+
+// Packet: 0x0299
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+
+// Packet: 0x029a
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+
+// Packet: 0x029b
+packetLen(0x029b, 80) // ZC_MER_INIT
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a5
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+
+// Packet: 0x02a6
+packetLen(0x02a6, -1) // ZC_HACKSH_CPX_MSG
+
+// Packet: 0x02a7
+packetLen(0x02a7, -1) // CZ_HACKSH_CPX_MSG
+
+// Packet: 0x02aa
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+
+// Packet: 0x02ab
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+
+// Packet: 0x02ac
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+
+// Packet: 0x02ad
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+
+// Packet: 0x02b0
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+
+// Packet: 0x02b1
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+
+// Packet: 0x02b2
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+
+// Packet: 0x02b3
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+
+// Packet: 0x02b4
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+
+// Packet: 0x02b5
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+
+// Packet: 0x02b6
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+
+// Packet: 0x02b7
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+
+// Packet: 0x02b8
+packetLen(0x02b8, 22) // ZC_ITEM_PICKUP_PARTY
+
+// Packet: 0x02b9
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+
+// Packet: 0x02ba
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+
+// Packet: 0x02bb
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+
+// Packet: 0x02bc
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+
+// Packet: 0x02c1
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+
+// Packet: 0x02c2
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+
+// Packet: 0x02c4
+#if PACKETVER >= 20131230
+packetLen(0x02c4, 10) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20131223
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+// ignored packet from 2013-12-23bRagexeRE
+#elif PACKETVER >= 20130724
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20130717
+packetLen(0x02c4, 6) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20130626
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20130618
+packetLen(0x02c4, 5) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20130403
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20130327
+packetLen(0x02c4, 90) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20130103
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#endif
+
+// Packet: 0x02c5
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c6
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+
+// Packet: 0x02c7
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c8
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+
+// Packet: 0x02c9
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+
+// Packet: 0x02ca
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+
+// Packet: 0x02cb
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+
+// Packet: 0x02cc
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+
+// Packet: 0x02cd
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+
+// Packet: 0x02ce
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+
+// Packet: 0x02cf
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+
+// Packet: 0x02d0
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d1
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d2
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d3
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+
+// Packet: 0x02d4
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+
+// Packet: 0x02d5
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+
+// Packet: 0x02d6
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d7
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d8
+packetLen(0x02d8, 10) // CZ_CONFIG
+
+// Packet: 0x02d9
+packetLen(0x02d9, 10) // ZC_CONFIG
+
+// Packet: 0x02da
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+
+// Packet: 0x02db
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+
+// Packet: 0x02dc
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+
+// Packet: 0x02dd
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+
+// Packet: 0x02de
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+
+// Packet: 0x02df
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+
+// Packet: 0x02e0
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+
+// Packet: 0x02e1
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+
+// Packet: 0x02e2
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+
+// Packet: 0x02e3
+packetLen(0x02e3, 22) // CZ_USE_SKILL_NEW_JAPEN
+
+// Packet: 0x02e4
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+
+// Packet: 0x02e5
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+
+// Packet: 0x02e6
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+
+// Packet: 0x02e7
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+
+// Packet: 0x02e8
+packetLen(0x02e8, -1) // ZC_NORMAL_ITEMLIST3
+
+// Packet: 0x02e9
+packetLen(0x02e9, -1) // ZC_CART_NORMAL_ITEMLIST3
+
+// Packet: 0x02ea
+packetLen(0x02ea, -1) // ZC_STORE_NORMAL_ITEMLIST3
+
+// Packet: 0x02eb
+packetLen(0x02eb, 13) // ZC_ACCEPT_ENTER2
+
+// Packet: 0x02ec
+packetLen(0x02ec, 67) // ZC_NOTIFY_MOVEENTRY4
+
+// Packet: 0x02ed
+packetLen(0x02ed, 59) // ZC_NOTIFY_NEWENTRY4
+
+// Packet: 0x02ee
+packetLen(0x02ee, 60) // ZC_NOTIFY_STANDENTRY4
+
+// Packet: 0x02ef
+packetLen(0x02ef, 8) // ZC_NOTIFY_FONT
+
+// Packet: 0x02f0
+packetLen(0x02f0, 10) // ZC_PROGRESS
+
+// Packet: 0x02f1
+packetLen(0x02f1, 2) // CZ_PROGRESS
+
+// Packet: 0x02f2
+packetLen(0x02f2, 2) // ZC_PROGRESS_CANCEL
+
+// Packet: 0x02f3
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+
+// Packet: 0x02f4
+packetLen(0x02f4, 3) // ZC_IRMAIL_SEND_RES
+
+// Packet: 0x02f5
+packetLen(0x02f5, 7) // ZC_IRMAIL_NOTIFY
+
+// Packet: 0x02f6
+packetLen(0x02f6, 7) // CZ_IRMAIL_LIST
+
+// Packet: 0x035c
+packetLen(0x035c, 2) // CZ_OPEN_SIMPLE_CASHSHOP_ITEMLIST
+
+// Packet: 0x035d
+packetLen(0x035d, -1) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+
+// Packet: 0x035e
+packetLen(0x035e, 2) // CZ_CLOSE_WINDOW
+
+// Packet: 0x035f
+#if PACKETVER >= 20131230
+packetLen(0x035f, 5) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20131223
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+// ignored packet from 2013-12-23aRagexeRE
+#elif PACKETVER >= 20131211
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20131204
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20131127
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20131106
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20131030
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20131008
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20131002
+packetLen(0x035f, 36) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130925
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130917
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130904
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130814
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130807
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130731
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130724
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130717
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130626
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130618
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130605
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130522
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130417
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130410
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130403
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130327
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130313
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130306
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130227
+packetLen(0x035f, 5) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130206
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130121
+packetLen(0x035f, 8) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130109
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20130103
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#endif
+
+// Packet: 0x0360
+#if PACKETVER >= 20131230
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20131211
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20131106
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20131030
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20131008
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130925
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130911
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130904
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130828
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130821
+packetLen(0x0360, 36) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130814
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130807
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130717
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130710
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130703
+packetLen(0x0360, 26) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130626
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130618
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130605
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130529
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130522
+packetLen(0x0360, 5) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130417
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130410
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130403
+packetLen(0x0360, 36) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130320
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130313
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130306
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130227
+packetLen(0x0360, 19) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130220
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130215
+packetLen(0x0360, 36) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130206
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130130
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130121
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130109
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20130103
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#endif
+
+// Packet: 0x0361
+#if PACKETVER >= 20131230
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20131223
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20131127
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20131120
+packetLen(0x0361, 6) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20131023
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20131016
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20131008
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20131002
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130911
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130904
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130828
+packetLen(0x0361, 12) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130821
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130814
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130807
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130717
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130710
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130612
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130605
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130502
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130424
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130227
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130220
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130121
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130115
+packetLen(0x0361, 8) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130109
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20130103
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#endif
+
+// Packet: 0x0362
+#if PACKETVER >= 20131230
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20131218
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20131211
+packetLen(0x0362, 90) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20131106
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20131030
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20131016
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20131008
+packetLen(0x0362, 19) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20131002
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130911
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130904
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130814
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130807
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130717
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130703
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130618
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130605
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130529
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130522
+packetLen(0x0362, 26) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130515
+packetLen(0x0362, 5) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130502
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130417
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130410
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130403
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130320
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130313
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130227
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130220
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130215
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130206
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130130
+packetLen(0x0362, 5) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130109
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20130103
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#endif
+
+// Packet: 0x0363
+#if PACKETVER >= 20131230
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20131223
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+// ignored packet from 2013-12-23aRagexeRE
+#elif PACKETVER >= 20131218
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20131113
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20131106
+packetLen(0x0363, 10) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20131030
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20131008
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20131002
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130911
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130904
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130814
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130807
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130717
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130703
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130618
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130605
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130502
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130417
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130410
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130403
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130327
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130320
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130313
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130227
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130220
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130109
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20130103
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#endif
+
+// Packet: 0x0364
+#if PACKETVER >= 20131230
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20131218
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20131204
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20131127
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20131120
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20131113
+packetLen(0x0364, 90) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20131106
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20131030
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20131023
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20131016
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20131008
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20131002
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130917
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130911
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130828
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130814
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130807
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130717
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130703
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130618
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130605
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130502
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130417
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130410
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130403
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130320
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130313
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130227
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130220
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130109
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20130103
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#endif
+
+// Packet: 0x0365
+#if PACKETVER >= 20131230
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20131223
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+// ignored packet from 2013-12-23aRagexeRE
+#elif PACKETVER >= 20131218
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20131204
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20131127
+packetLen(0x0365, 5) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20131106
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20131030
+packetLen(0x0365, 19) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20131008
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20131002
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130911
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130904
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130814
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130807
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130717
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130703
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130618
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130605
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130502
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130417
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130410
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130403
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130327
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130320
+packetLen(0x0365, 12) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130313
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130227
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130220
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130115
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130109
+packetLen(0x0365, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20130103
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#endif
+
+// Packet: 0x0366
+#if PACKETVER >= 20131230
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20131223
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+// ignored packet from 2013-12-23aRagexeRE
+#elif PACKETVER >= 20131218
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20131204
+packetLen(0x0366, 6) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20131127
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20131106
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20131030
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20131023
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20131016
+packetLen(0x0366, 6) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20131008
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20131002
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130917
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130904
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130828
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130821
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130814
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130807
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130717
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130626
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130618
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130605
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130522
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130417
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130410
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130403
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130320
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130313
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130227
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130220
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130215
+packetLen(0x0366, 19) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130206
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130130
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130121
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130109
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20130103
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#endif
+
+// Packet: 0x0367
+#if PACKETVER >= 20131223
+packetLen(0x0367, 90) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+// ignored packet from 2013-12-23bRagexeRE
+#elif PACKETVER >= 20130417
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20130410
+packetLen(0x0367, 6) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20130313
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20130306
+packetLen(0x0367, 6) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20130206
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20130130
+packetLen(0x0367, 6) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20130103
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#endif
+
+// Packet: 0x0368
+#if PACKETVER >= 20131230
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20131211
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20131204
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20131127
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20131120
+packetLen(0x0368, 12) // CZ_REQNAME2
+#elif PACKETVER >= 20131106
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20131030
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20131008
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20130925
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20130917
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20130904
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20130821
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20130814
+packetLen(0x0368, 19) // CZ_REQNAME2
+#elif PACKETVER >= 20130807
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20130717
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20130626
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20130618
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20130605
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20130529
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20130417
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20130410
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20130403
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20130320
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20130313
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20130306
+packetLen(0x0368, 90) // CZ_REQNAME2
+#elif PACKETVER >= 20130227
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20130206
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20130130
+packetLen(0x0368, 5) // CZ_REQNAME2
+#elif PACKETVER >= 20130121
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20130115
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20130109
+packetLen(0x0368, 10) // CZ_REQNAME2
+#elif PACKETVER >= 20130103
+packetLen(0x0368, 6) // CZ_REQNAME2
+#endif
+
+// Packet: 0x0369
+#if PACKETVER >= 20131230
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20131223
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+// ignored packet from 2013-12-23aRagexeRE
+#elif PACKETVER >= 20131211
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20131204
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20131127
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20131113
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20131106
+packetLen(0x0369, -1) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20131030
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20131008
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130925
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130917
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130904
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130814
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130807
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130717
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130626
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130618
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130605
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130529
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130522
+packetLen(0x0369, 6) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130417
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130410
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130403
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130320
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130313
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130227
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130206
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130130
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130121
+packetLen(0x0369, 18) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130109
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20130103
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#endif
+
+// Packet: 0x03dd
+packetLen(0x03dd, 18) // AHC_GAME_GUARD
+
+// Packet: 0x03de
+packetLen(0x03de, 18) // CAH_ACK_GAME_GUARD
+
+// Packet: 0x0436
+#if PACKETVER >= 20131230
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20131223
+packetLen(0x0436, 19) // CZ_ENTER2
+// ignored packet from 2013-12-23bRagexeRE
+#elif PACKETVER >= 20131113
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20131106
+packetLen(0x0436, 36) // CZ_ENTER2
+#elif PACKETVER >= 20131030
+packetLen(0x0436, 18) // CZ_ENTER2
+#elif PACKETVER >= 20131008
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20131002
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20130917
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20130911
+packetLen(0x0436, -1) // CZ_ENTER2
+#elif PACKETVER >= 20130904
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20130814
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20130807
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20130717
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20130703
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20130618
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20130605
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20130515
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20130508
+packetLen(0x0436, 26) // CZ_ENTER2
+#elif PACKETVER >= 20130502
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20130424
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20130320
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20130313
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20130227
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20130220
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20130215
+packetLen(0x0436, 18) // CZ_ENTER2
+#elif PACKETVER >= 20130109
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20130103
+packetLen(0x0436, 36) // CZ_ENTER2
+#endif
+
+// Packet: 0x0437
+#if PACKETVER >= 20131230
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20131223
+packetLen(0x0437, 7) // CZ_REQUEST_ACT2
+// ignored packet from 2013-12-23bRagexeRE
+#elif PACKETVER >= 20131211
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20131204
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20131127
+packetLen(0x0437, 8) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20131106
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20131030
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20131008
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20131002
+packetLen(0x0437, 6) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130925
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130917
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130904
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130828
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130821
+packetLen(0x0437, 8) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130814
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130731
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130724
+packetLen(0x0437, 8) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130717
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130626
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130618
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130605
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130522
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130417
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130410
+packetLen(0x0437, 6) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130403
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130320
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130313
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130306
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130206
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130130
+packetLen(0x0437, -1) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130121
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130115
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130109
+packetLen(0x0437, 7) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20130103
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#endif
+
+// Packet: 0x0438
+#if PACKETVER >= 20131230
+packetLen(0x0438, 6) // CZ_USE_SKILL2
+#elif PACKETVER >= 20131211
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20131204
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20131127
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20131106
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20131030
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20131023
+packetLen(0x0438, 26) // CZ_USE_SKILL2
+#elif PACKETVER >= 20131008
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20131002
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130925
+packetLen(0x0438, 90) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130917
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130904
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130828
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130821
+packetLen(0x0438, 8) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130814
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130807
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130731
+packetLen(0x0438, 5) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130717
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130626
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130618
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130529
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130522
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130417
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130410
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130403
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130327
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130320
+packetLen(0x0438, 6) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130313
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130227
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130206
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130130
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130121
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130109
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20130103
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#endif
+
+// Packet: 0x0439
+packetLen(0x0439, 8) // CZ_USE_ITEM2
+
+// Packet: 0x043d
+packetLen(0x043d, 8) // ZC_SKILL_POSTDELAY
+
+// Packet: 0x043e
+packetLen(0x043e, -1) // ZC_SKILL_POSTDELAY_LIST
+
+// Packet: 0x043f
+packetLen(0x043f, 25) // ZC_MSG_STATE_CHANGE2
+
+// Packet: 0x0440
+packetLen(0x0440, 10) // ZC_MILLENNIUMSHIELD
+
+// Packet: 0x0441
+packetLen(0x0441, 4) // ZC_SKILLINFO_DELETE
+
+// Packet: 0x0442
+packetLen(0x0442, -1) // ZC_SKILL_SELECT_REQUEST
+
+// Packet: 0x0443
+packetLen(0x0443, 8) // CZ_SKILL_SELECT_RESPONSE
+
+// Packet: 0x0444
+packetLen(0x0444, -1) // ZC_SIMPLE_CASH_POINT_ITEMLIST
+
+// Packet: 0x0445
+packetLen(0x0445, 10) // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0446
+packetLen(0x0446, 14) // ZC_QUEST_NOTIFY_EFFECT
+
+// Packet: 0x0447
+packetLen(0x0447, 2) // CZ_BLOCKING_PLAY_CANCEL
+
+// Packet: 0x0448
+packetLen(0x0448, -1) // HC_CHARACTER_LIST
+
+// Packet: 0x0449
+packetLen(0x0449, 4) // ZC_HACKSH_ERROR_MSG
+
+// Packet: 0x044a
+packetLen(0x044a, 6) // CZ_CLIENT_VERSION
+
+// Packet: 0x044b
+packetLen(0x044b, 2) // CZ_CLOSE_SIMPLECASH_SHOP
+
+// Packet: 0x07d7
+packetLen(0x07d7, 8) // CZ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d8
+packetLen(0x07d8, 8) // ZC_REQ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d9
+packetLen(0x07d9, 268) // ZC_SHORTCUT_KEY_LIST_V2
+
+// Packet: 0x07da
+packetLen(0x07da, 6) // CZ_CHANGE_GROUP_MASTER
+
+// Packet: 0x07db
+packetLen(0x07db, 8) // ZC_HO_PAR_CHANGE
+
+// Packet: 0x07dc
+packetLen(0x07dc, 6) // CZ_SEEK_PARTY
+
+// Packet: 0x07dd
+packetLen(0x07dd, 54) // ZC_SEEK_PARTY
+
+// Packet: 0x07de
+packetLen(0x07de, 30) // CZ_SEEK_PARTY_MEMBER
+
+// Packet: 0x07df
+packetLen(0x07df, 54) // ZC_SEEK_PARTY_MEMBER
+
+// Packet: 0x07e0
+packetLen(0x07e0, 58) // ZC_ES_NOTI_MYINFO
+
+// Packet: 0x07e1
+packetLen(0x07e1, 15) // ZC_SKILLINFO_UPDATE2
+
+// Packet: 0x07e2
+packetLen(0x07e2, 8) // ZC_MSG_VALUE
+
+// Packet: 0x07e3
+packetLen(0x07e3, 6) // ZC_ITEMLISTWIN_OPEN
+
+// Packet: 0x07e4
+#if PACKETVER >= 20131230
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20131223
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+// ignored packet from 2013-12-23aRagexeRE
+#elif PACKETVER >= 20131218
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20131211
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20131204
+packetLen(0x07e4, 36) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20131127
+packetLen(0x07e4, 90) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20131106
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20131030
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20131016
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20131008
+packetLen(0x07e4, 7) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20131002
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130911
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130904
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130814
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130807
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130717
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130703
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130618
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130605
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130508
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130502
+packetLen(0x07e4, 36) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130417
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130410
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130403
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130320
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130313
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130227
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130220
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130215
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130206
+packetLen(0x07e4, 36) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130109
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20130103
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#endif
+
+// Packet: 0x07e5
+packetLen(0x07e5, 4) // CH_ENTER_CHECKBOT
+
+// Packet: 0x07e6
+packetLen(0x07e6, 8) // ZC_MSG_SKILL
+
+// Packet: 0x07e7
+packetLen(0x07e7, 32) // CH_CHECKBOT
+
+// Packet: 0x07e8
+packetLen(0x07e8, -1) // HC_CHECKBOT
+
+// Packet: 0x07e9
+packetLen(0x07e9, 5) // HC_CHECKBOT_RESULT
+
+// Packet: 0x07ea
+packetLen(0x07ea, 2) // CZ_BATTLE_FIELD_LIST
+
+// Packet: 0x07eb
+packetLen(0x07eb, -1) // ZC_BATTLE_FIELD_LIST
+
+// Packet: 0x07ec
+#if PACKETVER >= 20131230
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20131218
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20131211
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20131204
+packetLen(0x07ec, 6) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20131106
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20131030
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20131023
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20131016
+packetLen(0x07ec, 19) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20131008
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20131002
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130911
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130904
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130828
+packetLen(0x07ec, 6) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130821
+packetLen(0x07ec, -1) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130814
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130807
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130717
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130703
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130618
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130605
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130529
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130522
+packetLen(0x07ec, 6) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130508
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130502
+packetLen(0x07ec, 5) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130417
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130410
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130403
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130327
+packetLen(0x07ec, 6) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130320
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130313
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130227
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130220
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130130
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130121
+packetLen(0x07ec, 6) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130115
+packetLen(0x07ec, 4) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130109
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20130103
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#endif
+
+// Packet: 0x07ed
+packetLen(0x07ed, 10) // ZC_JOIN_BATTLE_FIELD
+
+// Packet: 0x07ee
+packetLen(0x07ee, 6) // CZ_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07ef
+packetLen(0x07ef, 8) // ZC_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07f0
+packetLen(0x07f0, 6) // CZ_REQ_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f1
+packetLen(0x07f1, 18) // ZC_ACK_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f2
+packetLen(0x07f2, 8) // ZC_BATTLE_NOTI_START_STEP
+
+// Packet: 0x07f3
+packetLen(0x07f3, 6) // ZC_BATTLE_JOIN_NOTI_DEFER
+
+// Packet: 0x07f4
+packetLen(0x07f4, 3) // ZC_BATTLE_JOIN_DISABLE_STATE
+
+// Packet: 0x07f5
+packetLen(0x07f5, 6) // CZ_GM_FULLSTRIP
+
+// Packet: 0x07f6
+packetLen(0x07f6, 14) // ZC_NOTIFY_EXP
+
+// Packet: 0x07f7
+packetLen(0x07f7, -1) // ZC_NOTIFY_MOVEENTRY7
+
+// Packet: 0x07f8
+packetLen(0x07f8, -1) // ZC_NOTIFY_NEWENTRY5
+
+// Packet: 0x07f9
+packetLen(0x07f9, -1) // ZC_NOTIFY_STANDENTRY5
+
+// Packet: 0x07fa
+packetLen(0x07fa, 8) // ZC_DELETE_ITEM_FROM_BODY
+
+// Packet: 0x07fb
+packetLen(0x07fb, 25) // ZC_USESKILL_ACK2
+
+// Packet: 0x07fc
+packetLen(0x07fc, 10) // ZC_CHANGE_GROUP_MASTER
+
+// Packet: 0x07fd
+packetLen(0x07fd, -1) // ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN
+
+// Packet: 0x07fe
+packetLen(0x07fe, 26) // ZC_PLAY_NPC_BGM
+
+// Packet: 0x0800
+packetLen(0x0800, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0801
+packetLen(0x0801, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0802
+#if PACKETVER >= 20131230
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20131223
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+// ignored packet from 2013-12-23aRagexeRE
+#elif PACKETVER >= 20131218
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20131127
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20131120
+packetLen(0x0802, -1) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20131113
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20131106
+packetLen(0x0802, 5) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20131030
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20131023
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20131016
+packetLen(0x0802, 4) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20131008
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20131002
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130911
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130904
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130814
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130807
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130717
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130703
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130618
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130605
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130502
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130417
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130410
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130403
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130320
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130313
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130306
+packetLen(0x0802, 12) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130227
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130220
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130215
+packetLen(0x0802, 90) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130130
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130121
+packetLen(0x0802, 7) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130109
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20130103
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// Packet: 0x0803
+packetLen(0x0803, 4) // ZC_PARTY_BOOKING_ACK_REGISTER
+
+// Packet: 0x0804
+packetLen(0x0804, 14) // CZ_PARTY_BOOKING_REQ_SEARCH
+
+// Packet: 0x0805
+packetLen(0x0805, -1) // ZC_PARTY_BOOKING_ACK_SEARCH
+
+// Packet: 0x0806
+packetLen(0x0806, 2) // CZ_PARTY_BOOKING_REQ_DELETE
+
+// Packet: 0x0807
+packetLen(0x0807, 4) // ZC_PARTY_BOOKING_ACK_DELETE
+
+// Packet: 0x0808
+packetLen(0x0808, 14) // CZ_PARTY_BOOKING_REQ_UPDATE
+
+// Packet: 0x0809
+packetLen(0x0809, 50) // ZC_PARTY_BOOKING_NOTIFY_INSERT
+
+// Packet: 0x080a
+packetLen(0x080a, 18) // ZC_PARTY_BOOKING_NOTIFY_UPDATE
+
+// Packet: 0x080b
+packetLen(0x080b, 6) // ZC_PARTY_BOOKING_NOTIFY_DELETE
+
+// Packet: 0x080c
+packetLen(0x080c, 2) // CZ_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080d
+packetLen(0x080d, 3) // ZC_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080e
+packetLen(0x080e, 14) // ZC_NOTIFY_HP_TO_GROUPM_R2
+
+// Packet: 0x080f
+packetLen(0x080f, 20) // ZC_ADD_EXCHANGE_ITEM2
+
+// Packet: 0x0810
+packetLen(0x0810, 3) // ZC_OPEN_BUYING_STORE
+
+// Packet: 0x0811
+#if PACKETVER >= 20131230
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20131223
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20131218
+packetLen(0x0811, 5) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20131211
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20131204
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20131127
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20131120
+packetLen(0x0811, 8) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20131106
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20131030
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20131023
+packetLen(0x0811, 10) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20131008
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130925
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130917
+packetLen(0x0811, 7) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130904
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130814
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130807
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130717
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130626
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130618
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130605
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130529
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130522
+packetLen(0x0811, 10) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130424
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130417
+packetLen(0x0811, 26) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130410
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130403
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130320
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130313
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130306
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130227
+packetLen(0x0811, 6) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130215
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130206
+packetLen(0x0811, 6) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130109
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20130103
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#endif
+
+// Packet: 0x0812
+packetLen(0x0812, 8) // ZC_FAILED_OPEN_BUYING_STORE_TO_BUYER
+
+// Packet: 0x0813
+packetLen(0x0813, -1) // ZC_MYITEMLIST_BUYING_STORE
+
+// Packet: 0x0814
+packetLen(0x0814, 86) // ZC_BUYING_STORE_ENTRY
+
+// Packet: 0x0815
+#if PACKETVER >= 20131230
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20131223
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+// ignored packet from 2013-12-23bRagexeRE
+#elif PACKETVER >= 20131211
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20131204
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20131127
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20131106
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20131030
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20131008
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130925
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130917
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130911
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130904
+packetLen(0x0815, 5) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130828
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130821
+packetLen(0x0815, 5) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130814
+packetLen(0x0815, 4) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130807
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130717
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130626
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130618
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130605
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130522
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130417
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130410
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130403
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130320
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130313
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130306
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130227
+packetLen(0x0815, 18) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130206
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130130
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130121
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130109
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20130103
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#endif
+
+// Packet: 0x0816
+packetLen(0x0816, 6) // ZC_DISAPPEAR_BUYING_STORE_ENTRY
+
+// Packet: 0x0817
+#if PACKETVER >= 20131223
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+// ignored packet from 2013-12-23bRagexeRE
+#elif PACKETVER >= 20131127
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20131120
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20131113
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20131106
+packetLen(0x0817, 8) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20130904
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20130828
+packetLen(0x0817, -1) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20130703
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20130626
+packetLen(0x0817, 8) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20130313
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20130306
+packetLen(0x0817, 5) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20130227
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20130130
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20130121
+packetLen(0x0817, 36) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20130115
+packetLen(0x0817, 5) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20130103
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#endif
+
+// Packet: 0x0818
+packetLen(0x0818, -1) // ZC_ACK_ITEMLIST_BUYING_STORE
+
+// Packet: 0x0819
+#if PACKETVER >= 20131230
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20131211
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20131204
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20131127
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20131106
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20131030
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20131023
+packetLen(0x0819, 6) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20131008
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130925
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130917
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130911
+packetLen(0x0819, 19) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130904
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130814
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130731
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130717
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130626
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130618
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130605
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130522
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130417
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130410
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130403
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130320
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130313
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130227
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130206
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130109
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20130103
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#endif
+
+// Packet: 0x081a
+packetLen(0x081a, 4) // ZC_FAILED_TRADE_BUYING_STORE_TO_BUYER
+
+// Packet: 0x081b
+packetLen(0x081b, 10) // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+
+// Packet: 0x081c
+packetLen(0x081c, 10) // ZC_ITEM_DELETE_BUYING_STORE
+
+// Packet: 0x081d
+packetLen(0x081d, 22) // ZC_EL_INIT
+
+// Packet: 0x081e
+packetLen(0x081e, 8) // ZC_EL_PAR_CHANGE
+
+// Packet: 0x081f
+packetLen(0x081f, -1) // ZC_BROADCAST4
+
+// Packet: 0x0820
+packetLen(0x0820, 11) // ZC_COSTUME_SPRITE_CHANGE
+
+// Packet: 0x0821
+packetLen(0x0821, 2) // AC_OTP_USER
+
+// Packet: 0x0822
+packetLen(0x0822, 9) // CA_OTP_AUTH_REQ
+
+// Packet: 0x0823
+packetLen(0x0823, -1) // AC_OTP_AUTH_ACK
+
+// Packet: 0x0824
+packetLen(0x0824, 6) // ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER
+
+// Packet: 0x0825
+packetLen(0x0825, -1) // CA_SSO_LOGIN_REQ
+
+// Packet: 0x0827
+packetLen(0x0827, 6) // CH_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0828
+packetLen(0x0828, 14) // HC_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0829
+packetLen(0x0829, 12) // CH_DELETE_CHAR3
+
+// Packet: 0x082a
+packetLen(0x082a, 10) // HC_DELETE_CHAR3
+
+// Packet: 0x082b
+packetLen(0x082b, 6) // CH_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082c
+packetLen(0x082c, 10) // HC_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082d
+packetLen(0x082d, -1) // HC_ACCEPT_ENTER2
+
+// Packet: 0x0835
+#if PACKETVER >= 20131223
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+// ignored packet from 2013-12-23aRagexeRE
+#elif PACKETVER >= 20131030
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20131023
+packetLen(0x0835, 4) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20130911
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20130904
+packetLen(0x0835, 12) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20130821
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20130814
+packetLen(0x0835, -1) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20130403
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20130327
+packetLen(0x0835, 5) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20130103
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#endif
+
+// Packet: 0x0836
+packetLen(0x0836, -1) // ZC_SEARCH_STORE_INFO_ACK
+
+// Packet: 0x0837
+packetLen(0x0837, 3) // ZC_SEARCH_STORE_INFO_FAILED
+
+// Packet: 0x0838
+#if PACKETVER >= 20131230
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20131223
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+// ignored packet from 2013-12-23aRagexeRE
+#elif PACKETVER >= 20131211
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20131204
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20131127
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20131106
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20131030
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20131008
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130925
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130917
+packetLen(0x0838, 6) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130911
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130904
+packetLen(0x0838, 19) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130814
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130807
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130717
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130626
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130618
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130605
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130522
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130417
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130410
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130403
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130320
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130313
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130227
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130206
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130130
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130121
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130115
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130109
+packetLen(0x0838, 8) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20130103
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#endif
+
+// Packet: 0x0839
+packetLen(0x0839, 66) // ZC_ACK_BAN_GUILD_SSO
+
+// Packet: 0x083a
+packetLen(0x083a, 5) // ZC_OPEN_SEARCH_STORE_INFO
+
+// Packet: 0x083b
+packetLen(0x083b, 2) // CZ_CLOSE_SEARCH_STORE_INFO
+
+// Packet: 0x083c
+#if PACKETVER >= 20131230
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20131223
+packetLen(0x083c, 12) // CZ_SSILIST_ITEM_CLICK
+// ignored packet from 2013-12-23bRagexeRE
+#elif PACKETVER >= 20131218
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20131211
+packetLen(0x083c, 26) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20131204
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20131127
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20131106
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20131030
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20131008
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130925
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130917
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130904
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130814
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130807
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130724
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130717
+packetLen(0x083c, 5) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130626
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130618
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130605
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130522
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130417
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130410
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130403
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130320
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130313
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130227
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130206
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130130
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130121
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130109
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20130103
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#endif
+
+// Packet: 0x083d
+packetLen(0x083d, 6) // ZC_SSILIST_ITEM_CLICK_ACK
+
+// Packet: 0x083e
+packetLen(0x083e, 26) // AC_REFUSE_LOGIN2
+
+// Packet: 0x0840
+packetLen(0x0840, -1) // HC_NOTIFY_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0841
+packetLen(0x0841, 4) // CH_SELECT_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0842
+packetLen(0x0842, 6) // CZ_RECALL_SSO
+
+// Packet: 0x0843
+packetLen(0x0843, 6) // CZ_REMOVE_AID_SSO
+
+// Packet: 0x0844
+packetLen(0x0844, 2) // CZ_SE_CASHSHOP_OPEN
+
+// Packet: 0x0845
+packetLen(0x0845, 10) // ZC_SE_CASHSHOP_OPEN
+
+// Packet: 0x0846
+packetLen(0x0846, 4) // CZ_REQ_SE_CASH_TAB_CODE
+
+// Packet: 0x0847
+packetLen(0x0847, -1) // ZC_ACK_SE_CASH_ITEM_LIST
+
+// Packet: 0x0848
+packetLen(0x0848, -1) // CZ_SE_PC_BUY_CASHITEM_LIST
+
+// Packet: 0x0849
+packetLen(0x0849, 16) // ZC_SE_PC_BUY_CASHITEM_RESULT
+
+// Packet: 0x084a
+packetLen(0x084a, 2) // CZ_SE_CASHSHOP_CLOSE
+
+// Packet: 0x084b
+packetLen(0x084b, 19) // ZC_ITEM_FALL_ENTRY4
+
+// Packet: 0x084c
+packetLen(0x084c, 10) // CZ_MACRO_USE_SKILL
+
+// Packet: 0x084d
+packetLen(0x084d, 10) // CZ_MACRO_USE_SKILL_TOGROUND
+
+// Packet: 0x084e
+packetLen(0x084e, 5) // CZ_MACRO_REQUEST_MOVE
+
+// Packet: 0x084f
+packetLen(0x084f, 6) // CZ_MACRO_ITEM_PICKUP
+
+// Packet: 0x0850
+packetLen(0x0850, 7) // CZ_MACRO_REQUEST_ACT
+
+// Packet: 0x0851
+packetLen(0x0851, -1) // ZC_GPK_DYNCODE
+
+// Packet: 0x0852
+packetLen(0x0852, 2) // CZ_GPK_DYNCODE_RELOAD
+
+// Packet: 0x0853
+packetLen(0x0853, -1) // ZC_GPK_AUTH
+
+// Packet: 0x0854
+packetLen(0x0854, -1) // CZ_GPK_AUTH
+
+// Packet: 0x0855
+packetLen(0x0855, 6) // ZC_MACRO_ITEMPICKUP_FAIL
+
+// Packet: 0x0856
+packetLen(0x0856, -1) // ZC_NOTIFY_MOVEENTRY8
+
+// Packet: 0x0857
+packetLen(0x0857, -1) // ZC_NOTIFY_STANDENTRY7
+
+// Packet: 0x0858
+packetLen(0x0858, -1) // ZC_NOTIFY_NEWENTRY6
+
+// Packet: 0x0859
+packetLen(0x0859, -1) // ZC_EQUIPWIN_MICROSCOPE2
+
+// Packet: 0x085a
+#if PACKETVER >= 20131211
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20131204
+packetLen(0x085a, 26) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20131127
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20131120
+packetLen(0x085a, -1) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20131023
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20131016
+packetLen(0x085a, 8) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130731
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130724
+packetLen(0x085a, 18) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130605
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130529
+packetLen(0x085a, 12) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130508
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130502
+packetLen(0x085a, 4) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130327
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130320
+packetLen(0x085a, 90) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130306
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130227
+packetLen(0x085a, 10) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130130
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130121
+packetLen(0x085a, 4) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130103
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x085b
+#if PACKETVER >= 20131030
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20131023
+packetLen(0x085b, 90) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20130313
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20130306
+packetLen(0x085b, 5) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20130103
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x085c
+#if PACKETVER >= 20131223
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20131218
+packetLen(0x085c, 36) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20130917
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20130911
+packetLen(0x085c, 26) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20130313
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20130306
+packetLen(0x085c, 6) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20130103
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#endif
+
+// Packet: 0x085d
+#if PACKETVER >= 20131023
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20131016
+packetLen(0x085d, 6) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20131008
+packetLen(0x085d, 8) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130327
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130320
+packetLen(0x085d, 18) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130215
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130206
+packetLen(0x085d, 8) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130130
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130121
+packetLen(0x085d, 5) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130103
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x085e
+#if PACKETVER >= 20131016
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20131008
+packetLen(0x085e, 5) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20130731
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20130724
+packetLen(0x085e, 8) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20130605
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20130529
+packetLen(0x085e, 90) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20130103
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x085f
+#if PACKETVER >= 20131127
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20131120
+packetLen(0x085f, 10) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130206
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130130
+packetLen(0x085f, -1) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130103
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x0860
+#if PACKETVER >= 20131230
+packetLen(0x0860, 6) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130731
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130724
+packetLen(0x0860, 36) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130703
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130626
+packetLen(0x0860, 8) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130417
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130410
+packetLen(0x0860, 19) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130313
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130306
+packetLen(0x0860, 5) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130103
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x0861
+#if PACKETVER >= 20130121
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20130115
+packetLen(0x0861, 8) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20130103
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x0862
+#if PACKETVER >= 20131211
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20131204
+packetLen(0x0862, 5) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20131030
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20131023
+packetLen(0x0862, 8) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130828
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130821
+packetLen(0x0862, -1) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130724
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130717
+packetLen(0x0862, 18) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130626
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130618
+packetLen(0x0862, 6) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130522
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130515
+packetLen(0x0862, 4) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130103
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x0863
+#if PACKETVER >= 20131023
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20131016
+packetLen(0x0863, 10) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20131008
+packetLen(0x0863, 26) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130925
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130917
+packetLen(0x0863, 8) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130828
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130821
+packetLen(0x0863, 7) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130807
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130731
+packetLen(0x0863, 6) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130724
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130717
+packetLen(0x0863, 26) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130605
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130529
+packetLen(0x0863, 6) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130306
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130227
+packetLen(0x0863, -1) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130121
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130115
+packetLen(0x0863, 7) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130103
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x0864
+#if PACKETVER >= 20131023
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20131016
+packetLen(0x0864, 36) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20130626
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20130618
+packetLen(0x0864, 36) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20130103
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x0865
+#if PACKETVER >= 20131218
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20131211
+packetLen(0x0865, 26) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20130807
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20130731
+packetLen(0x0865, 10) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20130417
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20130410
+packetLen(0x0865, 12) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20130103
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0866
+#if PACKETVER >= 20131113
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20131106
+packetLen(0x0866, 5) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20130115
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20130109
+packetLen(0x0866, 5) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20130103
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0867
+#if PACKETVER >= 20131113
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20131106
+packetLen(0x0867, 8) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20131023
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20131016
+packetLen(0x0867, 90) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130731
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130724
+packetLen(0x0867, 6) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130508
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130502
+packetLen(0x0867, 5) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130306
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130227
+packetLen(0x0867, 6) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130103
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0868
+#if PACKETVER >= 20130925
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20130917
+packetLen(0x0868, 26) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20130911
+packetLen(0x0868, 18) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20130821
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20130814
+packetLen(0x0868, 12) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20130515
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20130508
+packetLen(0x0868, 36) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20130327
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20130320
+packetLen(0x0868, -1) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20130103
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0869
+#if PACKETVER >= 20131211
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20131204
+packetLen(0x0869, 10) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130605
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130529
+packetLen(0x0869, -1) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130306
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130227
+packetLen(0x0869, -1) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130220
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130215
+packetLen(0x0869, 8) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130103
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x086a
+#if PACKETVER >= 20130731
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20130724
+packetLen(0x086a, -1) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20130529
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20130522
+packetLen(0x086a, -1) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20130103
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x086b
+#if PACKETVER >= 20130917
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130911
+packetLen(0x086b, 36) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130724
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130717
+packetLen(0x086b, -1) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130424
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130417
+packetLen(0x086b, 19) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130206
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130130
+packetLen(0x086b, 4) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130103
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x086c
+#if PACKETVER >= 20131211
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20131204
+packetLen(0x086c, -1) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20131016
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20131008
+packetLen(0x086c, -1) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20130724
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20130717
+packetLen(0x086c, 4) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20130417
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20130410
+packetLen(0x086c, 18) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20130130
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20130121
+packetLen(0x086c, 19) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20130103
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x086d
+#if PACKETVER >= 20131016
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20131008
+packetLen(0x086d, 6) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20131002
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130925
+packetLen(0x086d, 36) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130917
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130911
+packetLen(0x086d, 8) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130403
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130327
+packetLen(0x086d, 18) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130320
+packetLen(0x086d, 26) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130313
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130306
+packetLen(0x086d, 19) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130103
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x086e
+#if PACKETVER >= 20131218
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20131211
+packetLen(0x086e, -1) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20131030
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20131023
+packetLen(0x086e, -1) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20131002
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20130925
+packetLen(0x086e, 26) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20130917
+packetLen(0x086e, 90) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20130828
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20130821
+packetLen(0x086e, -1) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20130306
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20130227
+packetLen(0x086e, 4) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20130103
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x086f
+#if PACKETVER >= 20130925
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20130917
+packetLen(0x086f, 6) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20130327
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20130320
+packetLen(0x086f, 26) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20130220
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20130215
+packetLen(0x086f, 8) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20130103
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x0870
+#if PACKETVER >= 20131023
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20131016
+packetLen(0x0870, -1) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20130508
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20130502
+packetLen(0x0870, 26) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20130121
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20130115
+packetLen(0x0870, -1) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20130103
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x0871
+#if PACKETVER >= 20131230
+packetLen(0x0871, 7) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20130121
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20130115
+packetLen(0x0871, 26) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20130103
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x0872
+#if PACKETVER >= 20131030
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20131023
+packetLen(0x0872, 18)
+#elif PACKETVER >= 20130103
+packetLen(0x0872, 2)
+#endif
+
+// Packet: 0x0873
+#if PACKETVER >= 20131218
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20131211
+packetLen(0x0873, 19) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20130821
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20130814
+packetLen(0x0873, 8) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20130710
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20130703
+packetLen(0x0873, 36) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20130403
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20130327
+packetLen(0x0873, 19) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20130103
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x0874
+#if PACKETVER >= 20130821
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130814
+packetLen(0x0874, 7) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130731
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130724
+packetLen(0x0874, 5) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130605
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130529
+packetLen(0x0874, 18) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130522
+packetLen(0x0874, -1) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130508
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130502
+packetLen(0x0874, -1) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130327
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130320
+packetLen(0x0874, 8) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130130
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130121
+packetLen(0x0874, 8) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130103
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x0875
+#if PACKETVER >= 20131113
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20131106
+packetLen(0x0875, 6) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20131023
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20131016
+packetLen(0x0875, -1) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20131002
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20130925
+packetLen(0x0875, 5) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20130508
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20130502
+packetLen(0x0875, 26) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20130424
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20130417
+packetLen(0x0875, 36) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20130103
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x0876
+#if PACKETVER >= 20131030
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20131023
+packetLen(0x0876, 10) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20131002
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130925
+packetLen(0x0876, 8) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130731
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130724
+packetLen(0x0876, 7) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130605
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130529
+packetLen(0x0876, 5) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130215
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130206
+packetLen(0x0876, 4) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130103
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x0877
+#if PACKETVER >= 20131211
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20131204
+packetLen(0x0877, 19) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20130605
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20130529
+packetLen(0x0877, 26) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20130508
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20130502
+packetLen(0x0877, 8) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20130121
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20130115
+packetLen(0x0877, 6) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20130103
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x0878
+#if PACKETVER >= 20130807
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130731
+packetLen(0x0878, 7) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130626
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130618
+packetLen(0x0878, 4) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130515
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130508
+packetLen(0x0878, -1) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130403
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130327
+packetLen(0x0878, 12) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130103
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x0879
+#if PACKETVER >= 20131211
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20131204
+packetLen(0x0879, 6) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20130828
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20130821
+packetLen(0x0879, 12) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20130417
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20130410
+packetLen(0x0879, 8) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20130121
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20130115
+packetLen(0x0879, 5) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20130103
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x087a
+#if PACKETVER >= 20130925
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130917
+packetLen(0x087a, 6) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130626
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130618
+packetLen(0x087a, 8) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130103
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x087b
+#if PACKETVER >= 20131230
+packetLen(0x087b, 12) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20131223
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20131218
+packetLen(0x087b, 4) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20130917
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20130911
+packetLen(0x087b, 4) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20130306
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20130227
+packetLen(0x087b, 26) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20130103
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x087c
+#if PACKETVER >= 20130508
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20130502
+packetLen(0x087c, 19) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20130417
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20130410
+packetLen(0x087c, 5) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20130121
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20130115
+packetLen(0x087c, 6) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20130103
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#endif
+
+// Packet: 0x087d
+#if PACKETVER >= 20131106
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20131030
+packetLen(0x087d, 26) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20131002
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20130925
+packetLen(0x087d, 6) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20130417
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20130410
+packetLen(0x087d, 6) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20130206
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20130130
+packetLen(0x087d, 5) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20130103
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x087e
+#if PACKETVER >= 20131230
+packetLen(0x087e, 4) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20130925
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20130917
+packetLen(0x087e, 10) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20130904
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20130828
+packetLen(0x087e, 6) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20130618
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20130612
+packetLen(0x087e, 5) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20130529
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20130522
+packetLen(0x087e, 8) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20130103
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x087f
+#if PACKETVER >= 20131230
+packetLen(0x087f, -1) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20131211
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20131204
+packetLen(0x087f, 18) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20130206
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20130130
+packetLen(0x087f, -1) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20130103
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#endif
+
+// Packet: 0x0880
+#if PACKETVER >= 20130717
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20130710
+packetLen(0x0880, 36) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20130103
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x0881
+#if PACKETVER >= 20131218
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20131211
+packetLen(0x0881, 4) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20131204
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20131127
+packetLen(0x0881, 4) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20130828
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20130821
+packetLen(0x0881, -1) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20130327
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20130320
+packetLen(0x0881, 5) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20130313
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20130306
+packetLen(0x0881, -1) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20130103
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x0882
+#if PACKETVER >= 20131211
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20131204
+packetLen(0x0882, 26) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130724
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130717
+packetLen(0x0882, 10) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130103
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x0883
+#if PACKETVER >= 20131016
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20131008
+packetLen(0x0883, 8) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20130612
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20130605
+packetLen(0x0883, 36) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20130215
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20130206
+packetLen(0x0883, 18) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20130103
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x0884
+#if PACKETVER >= 20131204
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20131127
+packetLen(0x0884, 5) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20131120
+packetLen(0x0884, 10) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20131016
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20131008
+packetLen(0x0884, 18) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130807
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130731
+packetLen(0x0884, 36) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130410
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130403
+packetLen(0x0884, 19) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130130
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130121
+packetLen(0x0884, -1) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20130103
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x0885
+#if PACKETVER >= 20131030
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20131023
+packetLen(0x0885, 36) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20131016
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20131008
+packetLen(0x0885, 4) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20131002
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20130925
+packetLen(0x0885, 5) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20130821
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20130814
+packetLen(0x0885, 36) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20130626
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20130618
+packetLen(0x0885, 8) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20130403
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20130327
+packetLen(0x0885, 6) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20130215
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20130206
+packetLen(0x0885, 8) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20130130
+packetLen(0x0885, 7) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20130103
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x0886
+#if PACKETVER >= 20131218
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20131211
+packetLen(0x0886, 5) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20130220
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20130215
+packetLen(0x0886, 6) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20130206
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20130130
+packetLen(0x0886, 6) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20130115
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20130109
+packetLen(0x0886, 8) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20130103
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#endif
+
+// Packet: 0x0887
+#if PACKETVER >= 20131113
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20131106
+packetLen(0x0887, 6) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20131030
+packetLen(0x0887, 36) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20131023
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20131016
+packetLen(0x0887, 6) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20131002
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130925
+packetLen(0x0887, 19) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130821
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130814
+packetLen(0x0887, 10) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130807
+packetLen(0x0887, 36) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130626
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130618
+packetLen(0x0887, 26) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130522
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130515
+packetLen(0x0887, 8) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130320
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130313
+packetLen(0x0887, 5) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130206
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130130
+packetLen(0x0887, 90) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20130103
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x0888
+#if PACKETVER >= 20131023
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20131016
+packetLen(0x0888, 5) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20130605
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20130529
+packetLen(0x0888, 4) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20130508
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20130502
+packetLen(0x0888, 6) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20130327
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20130320
+packetLen(0x0888, 19) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20130121
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20130115
+packetLen(0x0888, 12) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20130109
+packetLen(0x0888, 5) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20130103
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x0889
+#if PACKETVER >= 20130917
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130911
+packetLen(0x0889, 6) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130904
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130828
+packetLen(0x0889, 5) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130821
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130814
+packetLen(0x0889, -1) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130807
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130731
+packetLen(0x0889, 4) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130626
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130618
+packetLen(0x0889, 7) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130508
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130502
+packetLen(0x0889, 8) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130206
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130130
+packetLen(0x0889, 6) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20130103
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x088a
+#if PACKETVER >= 20131030
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20131023
+packetLen(0x088a, -1) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130925
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130917
+packetLen(0x088a, 36) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130821
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130814
+packetLen(0x088a, 6) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130724
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130717
+packetLen(0x088a, 5) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130115
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130109
+packetLen(0x088a, 19) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20130103
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x088b
+#if PACKETVER >= 20131030
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20131023
+packetLen(0x088b, 6) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20131016
+packetLen(0x088b, 26) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20130807
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20130731
+packetLen(0x088b, 6) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20130703
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20130626
+packetLen(0x088b, 6) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20130515
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20130508
+packetLen(0x088b, 6) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20130121
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20130115
+packetLen(0x088b, 90) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20130103
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x088c
+#if PACKETVER >= 20131127
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20131120
+packetLen(0x088c, 19) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20131113
+packetLen(0x088c, -1) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130821
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130814
+packetLen(0x088c, 5) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130724
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130717
+packetLen(0x088c, 5) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130703
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130626
+packetLen(0x088c, 19) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130417
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130410
+packetLen(0x088c, 36) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20130103
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x088d
+#if PACKETVER >= 20131204
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20131127
+packetLen(0x088d, 5) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20131120
+packetLen(0x088d, 26) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130828
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130821
+packetLen(0x088d, 6) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130417
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130410
+packetLen(0x088d, 5) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20130103
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x088e
+#if PACKETVER >= 20130626
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20130618
+packetLen(0x088e, 5) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20130605
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20130529
+packetLen(0x088e, 8) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20130522
+packetLen(0x088e, 36) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20130327
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20130320
+packetLen(0x088e, 7) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20130115
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20130109
+packetLen(0x088e, 12) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20130103
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x088f
+#if PACKETVER >= 20131120
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20131113
+packetLen(0x088f, 6) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20131030
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20131023
+packetLen(0x088f, 8) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20131002
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20130925
+packetLen(0x088f, 26) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20130828
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20130821
+packetLen(0x088f, 26) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20130703
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20130626
+packetLen(0x088f, 4) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20130403
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20130327
+packetLen(0x088f, 10) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20130103
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0890
+#if PACKETVER >= 20131023
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20131016
+packetLen(0x0890, 6) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20131002
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20130925
+packetLen(0x0890, 8) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20130626
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20130618
+packetLen(0x0890, 12) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20130605
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20130529
+packetLen(0x0890, 7) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20130417
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20130410
+packetLen(0x0890, -1) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20130327
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20130320
+packetLen(0x0890, 4) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20130313
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20130306
+packetLen(0x0890, 8) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20130103
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0891
+#if PACKETVER >= 20131113
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20131106
+packetLen(0x0891, 6) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130917
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130911
+packetLen(0x0891, 5) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130731
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130724
+packetLen(0x0891, 6) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130626
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130618
+packetLen(0x0891, -1) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130417
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130410
+packetLen(0x0891, 8) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130403
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130327
+packetLen(0x0891, 8) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130115
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130109
+packetLen(0x0891, -1) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20130103
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0892
+#if PACKETVER >= 20131218
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20131211
+packetLen(0x0892, 8) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20130828
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20130821
+packetLen(0x0892, 6) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20130605
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20130529
+packetLen(0x0892, 6) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20130115
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20130109
+packetLen(0x0892, 10) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20130103
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0893
+#if PACKETVER >= 20131113
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20131106
+packetLen(0x0893, 18) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130904
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130828
+packetLen(0x0893, 36) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130731
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130724
+packetLen(0x0893, 19) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130515
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130508
+packetLen(0x0893, 18) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130306
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130227
+packetLen(0x0893, 8) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130130
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130121
+packetLen(0x0893, 26) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20130103
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x0894
+#if PACKETVER >= 20131204
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20131127
+packetLen(0x0894, 36) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20131113
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20131106
+packetLen(0x0894, 5) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20131023
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20131016
+packetLen(0x0894, 12) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20130807
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20130731
+packetLen(0x0894, -1) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20130703
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20130626
+packetLen(0x0894, 18) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20130121
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20130115
+packetLen(0x0894, 5) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20130103
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x0895
+#if PACKETVER >= 20131230
+packetLen(0x0895, 8) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130925
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130917
+packetLen(0x0895, 6) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130821
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130814
+packetLen(0x0895, 6) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130807
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130731
+packetLen(0x0895, 8) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130703
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130626
+packetLen(0x0895, 26) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130605
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130529
+packetLen(0x0895, 6) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130515
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130508
+packetLen(0x0895, 19) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130121
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130115
+packetLen(0x0895, 6) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20130103
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x0896
+#if PACKETVER >= 20131016
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20131008
+packetLen(0x0896, 90) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20130821
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20130814
+packetLen(0x0896, 8) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20130103
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x0897
+#if PACKETVER >= 20130807
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130731
+packetLen(0x0897, -1) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130724
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130717
+packetLen(0x0897, -1) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130605
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130529
+packetLen(0x0897, 6) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130515
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130508
+packetLen(0x0897, 8) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130327
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130320
+packetLen(0x0897, 5) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20130103
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x0898
+#if PACKETVER >= 20131230
+packetLen(0x0898, 6) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20130724
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20130717
+packetLen(0x0898, 6) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20130327
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20130320
+packetLen(0x0898, 6) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20130313
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20130306
+packetLen(0x0898, 7) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20130227
+packetLen(0x0898, 5) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20130103
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x0899
+#if PACKETVER >= 20130403
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20130327
+packetLen(0x0899, 6) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20130215
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20130206
+packetLen(0x0899, -1) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20130103
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x089a
+#if PACKETVER >= 20131120
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20131113
+packetLen(0x089a, 19) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20130206
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20130130
+packetLen(0x089a, 26) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20130103
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x089b
+#if PACKETVER >= 20130724
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20130717
+packetLen(0x089b, 8) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20130529
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20130522
+packetLen(0x089b, 18) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20130327
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20130320
+packetLen(0x089b, 10) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20130103
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x089c
+#if PACKETVER >= 20131230
+packetLen(0x089c, 19) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20131016
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20131008
+packetLen(0x089c, 5) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20130731
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20130724
+packetLen(0x089c, 10) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20130529
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20130522
+packetLen(0x089c, 6) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20130417
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20130410
+packetLen(0x089c, 6) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20130103
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#endif
+
+// Packet: 0x089d
+#if PACKETVER >= 20130925
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20130917
+packetLen(0x089d, 19) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20130103
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x089e
+#if PACKETVER >= 20131204
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20131127
+packetLen(0x089e, 8) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20131120
+packetLen(0x089e, 6) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130904
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130828
+packetLen(0x089e, 10) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130417
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130410
+packetLen(0x089e, -1) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130220
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130215
+packetLen(0x089e, -1) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20130103
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x089f
+#if PACKETVER >= 20130904
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20130828
+packetLen(0x089f, 5) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20130313
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20130306
+packetLen(0x089f, 6) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20130220
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20130215
+packetLen(0x089f, 4) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20130206
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20130130
+packetLen(0x089f, 6) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20130103
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x08a0
+#if PACKETVER >= 20131211
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20131204
+packetLen(0x08a0, -1) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130925
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130917
+packetLen(0x08a0, 8) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130417
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130410
+packetLen(0x08a0, 6) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130215
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130206
+packetLen(0x08a0, 5) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130130
+packetLen(0x08a0, 10) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130121
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130115
+packetLen(0x08a0, 26) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20130103
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x08a1
+#if PACKETVER >= 20131127
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20131120
+packetLen(0x08a1, 5) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20130522
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20130515
+packetLen(0x08a1, 6) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20130508
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20130502
+packetLen(0x08a1, 18) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20130403
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20130327
+packetLen(0x08a1, 6) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20130306
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20130227
+packetLen(0x08a1, 8) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20130103
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x08a2
+#if PACKETVER >= 20131113
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20131106
+packetLen(0x08a2, 19) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20131030
+packetLen(0x08a2, 4) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130925
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130917
+packetLen(0x08a2, -1) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130529
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130522
+packetLen(0x08a2, 7) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130403
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130327
+packetLen(0x08a2, -1) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130115
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130109
+packetLen(0x08a2, 6) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20130103
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x08a3
+#if PACKETVER >= 20131218
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20131211
+packetLen(0x08a3, 18) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20130904
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20130828
+packetLen(0x08a3, -1) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20130529
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20130522
+packetLen(0x08a3, 8) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20130508
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20130502
+packetLen(0x08a3, 6) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20130103
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x08a4
+#if PACKETVER >= 20131230
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20131223
+packetLen(0x08a4, 36) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20131218
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20131211
+packetLen(0x08a4, 5) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20131204
+packetLen(0x08a4, 6) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20131127
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20131120
+packetLen(0x08a4, 36) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20131113
+packetLen(0x08a4, -1) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130917
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130911
+packetLen(0x08a4, -1) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130821
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130814
+packetLen(0x08a4, -1) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130417
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130410
+packetLen(0x08a4, 90) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130313
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130306
+packetLen(0x08a4, 10) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130206
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130130
+packetLen(0x08a4, 10) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130121
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130115
+packetLen(0x08a4, 10) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20130103
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x08a5
+#if PACKETVER >= 20130703
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20130626
+packetLen(0x08a5, -1) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20130410
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20130403
+packetLen(0x08a5, 4) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20130103
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x08a6
+#if PACKETVER >= 20130724
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20130717
+packetLen(0x08a6, 8) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20130626
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20130618
+packetLen(0x08a6, 5) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20130529
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20130522
+packetLen(0x08a6, 6) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20130103
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#endif
+
+// Packet: 0x08a7
+#if PACKETVER >= 20131211
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20131204
+packetLen(0x08a7, 6) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20131030
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20131023
+packetLen(0x08a7, 5) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20130626
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20130618
+packetLen(0x08a7, 18) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20130605
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20130529
+packetLen(0x08a7, 6) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20130103
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x08a8
+#if PACKETVER >= 20131127
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20131120
+packetLen(0x08a8, 7) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20131113
+packetLen(0x08a8, 8) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20130925
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20130917
+packetLen(0x08a8, -1) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20130605
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20130529
+packetLen(0x08a8, 26) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20130103
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x08a9
+#if PACKETVER >= 20131230
+packetLen(0x08a9, 26) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20131016
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20131008
+packetLen(0x08a9, 10) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20130724
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20130717
+packetLen(0x08a9, 6) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20130529
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20130522
+packetLen(0x08a9, 19) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20130206
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20130130
+packetLen(0x08a9, 8) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20130103
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#endif
+
+// Packet: 0x08aa
+#if PACKETVER >= 20130724
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20130717
+packetLen(0x08aa, -1) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20130522
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20130515
+packetLen(0x08aa, 8) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20130115
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20130109
+packetLen(0x08aa, 4) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20130103
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x08ab
+#if PACKETVER >= 20131223
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20131218
+packetLen(0x08ab, 26) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20131211
+packetLen(0x08ab, 6) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20131030
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20131023
+packetLen(0x08ab, 5) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20130731
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20130724
+packetLen(0x08ab, 4) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20130703
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20130626
+packetLen(0x08ab, 26) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20130515
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20130508
+packetLen(0x08ab, 26) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20130103
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x08ac
+#if PACKETVER >= 20131030
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20131023
+packetLen(0x08ac, 19) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130904
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130828
+packetLen(0x08ac, 6) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130529
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130522
+packetLen(0x08ac, 4) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130515
+packetLen(0x08ac, 8) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130327
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130320
+packetLen(0x08ac, 8) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130313
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130306
+packetLen(0x08ac, 4) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130215
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130206
+packetLen(0x08ac, 19) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130121
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130115
+packetLen(0x08ac, 8) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20130103
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x08ad
+#if PACKETVER >= 20131211
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20131204
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20130828
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20130821
+packetLen(0x08ad, 4) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20130220
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20130215
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20130103
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x08af
+packetLen(0x08af, 10) // HC_WAITING_LOGIN
+
+// Packet: 0x08b0
+packetLen(0x08b0, 17) // CH_WAITING_LOGIN
+
+// Packet: 0x08b1
+packetLen(0x08b1, -1) // ZC_MCSTORE_NOTMOVEITEM_LIST
+
+// Packet: 0x08b2
+packetLen(0x08b2, -1) // AC_REALNAME_AUTH
+
+// Packet: 0x08b3
+packetLen(0x08b3, -1) // ZC_SHOWSCRIPT
+
+// Packet: 0x08b4
+packetLen(0x08b4, 2) // ZC_START_COLLECTION
+
+// Packet: 0x08b5
+packetLen(0x08b5, 6) // CZ_TRYCOLLECTION
+
+// Packet: 0x08b6
+packetLen(0x08b6, 3) // ZC_TRYCOLLECTION
+
+// Packet: 0x08b8
+packetLen(0x08b8, 10) // CH_SECOND_PASSWD_ACK
+
+// Packet: 0x08b9
+packetLen(0x08b9, 12) // HC_SECOND_PASSWD_LOGIN
+
+// Packet: 0x08ba
+packetLen(0x08ba, 10) // CH_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bb
+packetLen(0x08bb, 8) // HC_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bc
+packetLen(0x08bc, 10) // CH_DELETE_SECOND_PASSWD
+
+// Packet: 0x08bd
+packetLen(0x08bd, 8) // HC_DELETE_SECOND_PASSWD
+
+// Packet: 0x08be
+packetLen(0x08be, 14) // CH_EDIT_SECOND_PASSWD
+
+// Packet: 0x08bf
+packetLen(0x08bf, 8) // HC_EDIT_SECOND_PASSWD
+
+// Packet: 0x08c0
+packetLen(0x08c0, -1) // ZC_ACK_SE_CASH_ITEM_LIST2
+
+// Packet: 0x08c1
+packetLen(0x08c1, 2) // CZ_MACRO_START
+
+// Packet: 0x08c2
+packetLen(0x08c2, 2) // CZ_MACRO_STOP
+
+// Packet: 0x08c3
+packetLen(0x08c3, 10) // CH_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c4
+packetLen(0x08c4, 8) // HC_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c5
+packetLen(0x08c5, 6) // CH_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c6
+packetLen(0x08c6, 4) // HC_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c7
+packetLen(0x08c7, -1) // ZC_SKILL_ENTRY3
+
+// Packet: 0x08c8
+packetLen(0x08c8, 34) // ZC_NOTIFY_ACT3
+
+// Packet: 0x08c9
+packetLen(0x08c9, 2) // CZ_REQ_SCHEDULER_CASHITEM
+
+// Packet: 0x08ca
+packetLen(0x08ca, -1) // ZC_ACK_SCHEDULER_CASHITEM
+
+// Packet: 0x08cb
+packetLen(0x08cb, -1) // ZC_PERSONAL_INFOMATION
+
+// Packet: 0x08cc
+packetLen(0x08cc, 109) // CA_LOGIN5
+
+// Packet: 0x08cd
+packetLen(0x08cd, 10) // ZC_STOPMOVE_FORCE
+
+// Packet: 0x08ce
+packetLen(0x08ce, 2) // ZC_FAILED_GET_ITEM_FROM_ZONEDA
+
+// Packet: 0x08cf
+packetLen(0x08cf, 10) // ZC_SPIRITS_ATTRIBUTE
+
+// Packet: 0x08d0
+packetLen(0x08d0, 9) // ZC_REQ_WEAR_EQUIP_ACK2
+
+// Packet: 0x08d1
+packetLen(0x08d1, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK2
+
+// Packet: 0x08d2
+packetLen(0x08d2, 10) // ZC_FASTMOVE
+
+// Packet: 0x08d3
+packetLen(0x08d3, 10) // ZC_SE_CASHSHOP_UPDATE
+
+// Packet: 0x08d4
+packetLen(0x08d4, 8) // CH_REQ_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d5
+packetLen(0x08d5, -1) // HC_ACK_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d6
+packetLen(0x08d6, 6) // ZC_CLEAR_DIALOG
+
+// Packet: 0x08d7
+packetLen(0x08d7, 28) // CZ_REQ_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d8
+packetLen(0x08d8, 27) // ZC_ACK_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d9
+packetLen(0x08d9, 30) // ZC_NOTIFY_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08da
+packetLen(0x08da, 26) // CZ_REQ_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08db
+packetLen(0x08db, 27) // ZC_ACK_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08dc
+packetLen(0x08dc, 26) // ZC_NOTIFY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08dd
+packetLen(0x08dd, 27) // CZ_REPLY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08de
+packetLen(0x08de, 27) // ZC_REPLY_ACK_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08df
+packetLen(0x08df, 50) // ZC_NOTIFY_LOBBY_ADMISSION
+
+// Packet: 0x08e0
+packetLen(0x08e0, 51) // CZ_REPLY_LOBBY_ADMISSION
+
+// Packet: 0x08e1
+packetLen(0x08e1, 51) // ZC_REPLY_ACK_LOBBY_ADMISSION
+
+// Packet: 0x08e2
+packetLen(0x08e2, 27) // ZC_NAVIGATION_ACTIVE
+
+// Packet: 0x08e3
+packetLen(0x08e3, 146) // HC_UPDATE_CHARINFO
+
+// Packet: 0x08e4
+packetLen(0x08e4, 6) // AC_SHUTDOWN_INFO
+
+// Packet: 0x08e5
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08e5, 41) // CZ_PARTY_RECRUIT_REQ_REGISTER
+#endif
+
+// Packet: 0x08e6
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08e6, 4) // ZC_PARTY_RECRUIT_ACK_REGISTER
+#endif
+
+// Packet: 0x08e7
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08e7, 10) // CZ_PARTY_RECRUIT_REQ_SEARCH
+#endif
+
+// Packet: 0x08e8
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08e8, -1)
+#endif
+
+// Packet: 0x08e9
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08e9, 2) // CZ_PARTY_RECRUIT_REQ_DELETE
+#endif
+
+// Packet: 0x08ea
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08ea, 4) // ZC_PARTY_RECRUIT_ACK_DELETE
+#endif
+
+// Packet: 0x08eb
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08eb, 39) // CZ_PARTY_RECRUIT_REQ_UPDATE
+#endif
+
+// Packet: 0x08ec
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08ec, 73) // ZC_PARTY_RECRUIT_NOTIFY_INSERT
+#endif
+
+// Packet: 0x08ed
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08ed, 43) // ZC_PARTY_RECRUIT_NOTIFY_UPDATE
+#endif
+
+// Packet: 0x08ee
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08ee, 6) // ZC_PARTY_RECRUIT_NOTIFY_DELETE
+#endif
+
+// Packet: 0x08ef
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08ef, 6) // CZ_PARTY_RECRUIT_ADD_FILTERLINGLIST
+#endif
+
+// Packet: 0x08f0
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08f0, 6) // CZ_PARTY_RECRUIT_SUB_FILTERLINGLIST
+#endif
+
+// Packet: 0x08f1
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08f1, 6) // CZ_PARTY_RECRUIT_REQ_VOLUNTEER
+#endif
+
+// Packet: 0x08f2
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08f2, 36) // ZC_PARTY_RECRUIT_VOLUNTEER_INFO
+#endif
+
+// Packet: 0x08f3
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08f3, -1)
+#endif
+
+// Packet: 0x08f4
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08f4, 6) // CZ_PARTY_RECRUIT_SHOW_EQUIPMENT
+#endif
+
+// Packet: 0x08f5
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08f5, -1) // CZ_UNKNOWN_BOOKING_SOMMON_MEMBER_08f5
+#endif
+
+// Packet: 0x08f6
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08f6, 22) // ZC_PARTY_RECRUIT_RECALL_COST
+#endif
+
+// Packet: 0x08f7
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08f7, 3) // CZ_PARTY_RECRUIT_ACK_RECALL
+#endif
+
+// Packet: 0x08f8
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08f8, 7) // ZC_PARTY_RECRUIT_FAILED_RECALL
+#endif
+
+// Packet: 0x08f9
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08f9, 6) // CZ_PARTY_RECRUIT_REFUSE_VOLUNTEER
+#endif
+
+// Packet: 0x08fa
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08fa, 6) // ZC_PARTY_RECRUIT_REFUSE_VOLUNTEER
+#endif
+
+// Packet: 0x08fb
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x08fb, 6) // CZ_PARTY_RECRUIT_CANCEL_VOLUNTEER
+#endif
+
+// Packet: 0x08fc
+packetLen(0x08fc, 30) // CH_REQ_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fd
+packetLen(0x08fd, 6) // CH_ACK_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fe
+packetLen(0x08fe, -1) // ZC_HUNTING_QUEST_INFO
+
+// Packet: 0x08ff
+packetLen(0x08ff, 24) // ZC_EFST_SET_ENTER
+
+// Packet: 0x0900
+packetLen(0x0900, -1) // ZC_INVENTORY_ITEMLIST_NORMAL
+
+// Packet: 0x0901
+packetLen(0x0901, -1) // ZC_INVENTORY_ITEMLIST_EQUIP
+
+// Packet: 0x0902
+packetLen(0x0902, -1) // ZC_CART_ITEMLIST_NORMAL
+
+// Packet: 0x0903
+packetLen(0x0903, -1) // ZC_CART_ITEMLIST_EQUIP
+
+// Packet: 0x0904
+packetLen(0x0904, -1) // ZC_STORE_ITEMLIST_NORMAL
+
+// Packet: 0x0905
+packetLen(0x0905, -1) // ZC_STORE_ITEMLIST_EQUIP
+
+// Packet: 0x0906
+packetLen(0x0906, -1) // ZC_MICROSCOPE
+
+// Packet: 0x0907
+packetLen(0x0907, 5) // CZ_INVENTORY_TAB
+
+// Packet: 0x0908
+packetLen(0x0908, 5) // ZC_INVENTORY_TAB
+
+// Packet: 0x0909
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x0909, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER
+#endif
+
+// Packet: 0x090a
+packetLen(0x090a, 26) // CZ_REQ_ENTRY_QUEUE_RANKING
+
+// Packet: 0x090b
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x090b, 30) // ZC_PARTY_RECRUIT_ADD_FILTERLINGLIST
+#endif
+
+// Packet: 0x090c
+#if PACKETVER >= 20130502
+// removed
+#elif PACKETVER >= 20130103
+packetLen(0x090c, 30) // ZC_PARTY_RECRUIT_SUB_FILTERLINGLIST
+#endif
+
+// Packet: 0x090d
+packetLen(0x090d, -1) // ZC_PREMIUM_CAMPAIGN_INFO
+
+// Packet: 0x090e
+packetLen(0x090e, 2) // ZC_ENTRY_QUEUE_INIT
+
+// Packet: 0x090f
+packetLen(0x090f, -1) // ZC_NOTIFY_NEWENTRY7
+
+// Packet: 0x0910
+packetLen(0x0910, 10) // CZ_REQ_PARTY_NAME
+
+// Packet: 0x0911
+packetLen(0x0911, 30) // ZC_ACK_PARTY_NAME
+
+// Packet: 0x0912
+packetLen(0x0912, 10) // CZ_REQ_GUILD_NAME
+
+// Packet: 0x0913
+packetLen(0x0913, 30) // ZC_ACK_GUILD_NAME
+
+// Packet: 0x0914
+packetLen(0x0914, -1) // ZC_NOTIFY_MOVEENTRY9
+
+// Packet: 0x0915
+packetLen(0x0915, -1) // ZC_NOTIFY_STANDENTRY8
+
+// Packet: 0x0916
+packetLen(0x0916, 26) // CZ_REQ_JOIN_GUILD2
+
+// Packet: 0x0917
+#if PACKETVER >= 20131127
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20131120
+packetLen(0x0917, 6) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20131016
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20131008
+packetLen(0x0917, 8) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130904
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130828
+packetLen(0x0917, 18) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130724
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130717
+packetLen(0x0917, 6) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130626
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130618
+packetLen(0x0917, 6) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130605
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130529
+packetLen(0x0917, 10) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130417
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130410
+packetLen(0x0917, 26) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130313
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130306
+packetLen(0x0917, 8) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130103
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#endif
+
+// Packet: 0x0918
+#if PACKETVER >= 20130925
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20130917
+packetLen(0x0918, 5) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20130724
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20130717
+packetLen(0x0918, 7) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20130605
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20130529
+packetLen(0x0918, -1) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20130121
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20130115
+packetLen(0x0918, 10) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20130109
+packetLen(0x0918, 26) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20130103
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#endif
+
+// Packet: 0x0919
+#if PACKETVER >= 20131030
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20131023
+packetLen(0x0919, 6) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20130618
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20130612
+packetLen(0x0919, 19) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20130605
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20130529
+packetLen(0x0919, 19) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20130103
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#endif
+
+// Packet: 0x091a
+#if PACKETVER >= 20131023
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20131016
+packetLen(0x091a, -1) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20130206
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20130130
+packetLen(0x091a, 6) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20130103
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#endif
+
+// Packet: 0x091b
+#if PACKETVER >= 20130306
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20130227
+packetLen(0x091b, 6) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20130115
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20130109
+packetLen(0x091b, 6) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20130103
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#endif
+
+// Packet: 0x091c
+#if PACKETVER >= 20131120
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20131113
+packetLen(0x091c, 8) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20131016
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20131008
+packetLen(0x091c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20130925
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20130917
+packetLen(0x091c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20130103
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#endif
+
+// Packet: 0x091d
+#if PACKETVER >= 20131230
+packetLen(0x091d, 36) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20131113
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20131106
+packetLen(0x091d, 90) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20131030
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20131023
+packetLen(0x091d, 12) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20130828
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20130821
+packetLen(0x091d, 5) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20130724
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20130717
+packetLen(0x091d, 19) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20130417
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20130410
+packetLen(0x091d, -1) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20130103
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#endif
+
+// Packet: 0x091e
+#if PACKETVER >= 20131230
+packetLen(0x091e, 10) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20131023
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20131016
+packetLen(0x091e, 8) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20130925
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20130917
+packetLen(0x091e, 4) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20130911
+packetLen(0x091e, 5) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20130904
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20130828
+packetLen(0x091e, 6) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20130724
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20130717
+packetLen(0x091e, 10) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20130313
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20130306
+packetLen(0x091e, 8) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20130103
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#endif
+
+// Packet: 0x091f
+#if PACKETVER >= 20131230
+packetLen(0x091f, 18) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20131211
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20131204
+packetLen(0x091f, 5) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20131023
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20131016
+packetLen(0x091f, 5) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20130403
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20130327
+packetLen(0x091f, -1) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20130306
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20130227
+packetLen(0x091f, 6) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20130130
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20130121
+packetLen(0x091f, 6) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20130103
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#endif
+
+// Packet: 0x0920
+#if PACKETVER >= 20131120
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20131113
+packetLen(0x0920, 12) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20130320
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20130313
+packetLen(0x0920, 36) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20130215
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20130130
+packetLen(0x0920, 26) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20130103
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#endif
+
+// Packet: 0x0921
+#if PACKETVER >= 20130925
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20130917
+packetLen(0x0921, 6) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20130731
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20130724
+packetLen(0x0921, 90) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20130703
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20130626
+packetLen(0x0921, 8) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20130103
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#endif
+
+// Packet: 0x0922
+#if PACKETVER >= 20130327
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20130320
+packetLen(0x0922, -1) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20130115
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20130109
+packetLen(0x0922, 6) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20130103
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#endif
+
+// Packet: 0x0923
+#if PACKETVER >= 20131030
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20131023
+packetLen(0x0923, 7) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20130925
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20130917
+packetLen(0x0923, 5) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20130904
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20130828
+packetLen(0x0923, 10) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20130821
+packetLen(0x0923, 19) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20130814
+packetLen(0x0923, 6) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20130807
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20130731
+packetLen(0x0923, 18) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20130220
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20130215
+packetLen(0x0923, 5) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20130103
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#endif
+
+// Packet: 0x0924
+#if PACKETVER >= 20131030
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20131023
+packetLen(0x0924, 6) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130904
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130828
+packetLen(0x0924, 6) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130731
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130724
+packetLen(0x0924, 6) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130306
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130227
+packetLen(0x0924, 90) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130206
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130130
+packetLen(0x0924, 6) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130103
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#endif
+
+// Packet: 0x0925
+#if PACKETVER >= 20131106
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20131030
+packetLen(0x0925, 5) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130807
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130731
+packetLen(0x0925, 10) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130529
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130522
+packetLen(0x0925, 5) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130215
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130206
+packetLen(0x0925, 6) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130103
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#endif
+
+// Packet: 0x0926
+#if PACKETVER >= 20131230
+packetLen(0x0926, 6) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20131127
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20131120
+packetLen(0x0926, -1) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20131113
+packetLen(0x0926, 5) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130821
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130814
+packetLen(0x0926, 6) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130529
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130522
+packetLen(0x0926, 5) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130410
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130403
+packetLen(0x0926, 5) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130313
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130306
+packetLen(0x0926, 36) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130103
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#endif
+
+// Packet: 0x0927
+#if PACKETVER >= 20131127
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20131120
+packetLen(0x0927, 8) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20131113
+packetLen(0x0927, 26) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20131023
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20131016
+packetLen(0x0927, 6) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20131008
+packetLen(0x0927, 12) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130821
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130814
+packetLen(0x0927, 26) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130731
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130724
+packetLen(0x0927, 26) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130115
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130109
+packetLen(0x0927, 90) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130103
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#endif
+
+// Packet: 0x0928
+#if PACKETVER >= 20131211
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20131204
+packetLen(0x0928, 7) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20131120
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20131113
+packetLen(0x0928, 36) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20130904
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20130828
+packetLen(0x0928, -1) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20130121
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20130109
+packetLen(0x0928, -1) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20130103
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#endif
+
+// Packet: 0x0929
+#if PACKETVER >= 20131120
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20131113
+packetLen(0x0929, 6) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20131106
+packetLen(0x0929, 8) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20130904
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20130828
+packetLen(0x0929, 8) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20130424
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20130417
+packetLen(0x0929, 5) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20130103
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#endif
+
+// Packet: 0x092a
+#if PACKETVER >= 20131230
+packetLen(0x092a, 6) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20130103
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#endif
+
+// Packet: 0x092b
+#if PACKETVER >= 20131218
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20131211
+packetLen(0x092b, 36) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20131127
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20131120
+packetLen(0x092b, 5) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20131113
+packetLen(0x092b, 6) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20130807
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20130731
+packetLen(0x092b, 19) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20130724
+packetLen(0x092b, 26) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20130403
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20130327
+packetLen(0x092b, 5) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20130306
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20130227
+packetLen(0x092b, -1) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20130103
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#endif
+
+// Packet: 0x092c
+#if PACKETVER >= 20131120
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20131113
+packetLen(0x092c, 26) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20130103
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#endif
+
+// Packet: 0x092d
+#if PACKETVER >= 20131211
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20131204
+packetLen(0x092d, 10) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20131120
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20131113
+packetLen(0x092d, 6) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130828
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130821
+packetLen(0x092d, 6) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130807
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130731
+packetLen(0x092d, 5) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130522
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130515
+packetLen(0x092d, 18) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130508
+packetLen(0x092d, 6) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130403
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130327
+packetLen(0x092d, 26) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130320
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130313
+packetLen(0x092d, 5) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130121
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130115
+packetLen(0x092d, 19) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130103
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#endif
+
+// Packet: 0x092e
+#if PACKETVER >= 20131120
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20131113
+packetLen(0x092e, 6) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130731
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130724
+packetLen(0x092e, -1) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130403
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130327
+packetLen(0x092e, 4) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130121
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130115
+packetLen(0x092e, -1) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130103
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#endif
+
+// Packet: 0x092f
+#if PACKETVER >= 20131223
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20131218
+packetLen(0x092f, 19) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20131211
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20131204
+packetLen(0x092f, 5) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20131120
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20131113
+packetLen(0x092f, 6) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20130724
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20130717
+packetLen(0x092f, 26) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20130403
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20130327
+packetLen(0x092f, 8) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20130306
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20130227
+packetLen(0x092f, -1) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20130103
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#endif
+
+// Packet: 0x0930
+#if PACKETVER >= 20131204
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20131127
+packetLen(0x0930, 18) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20130904
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20130828
+packetLen(0x0930, 6) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20130710
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20130703
+packetLen(0x0930, 5) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20130626
+packetLen(0x0930, 36) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20130618
+packetLen(0x0930, 6) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20130115
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20130109
+packetLen(0x0930, 5) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20130103
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#endif
+
+// Packet: 0x0931
+#if PACKETVER >= 20131218
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20131211
+packetLen(0x0931, 8) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130522
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130515
+packetLen(0x0931, 5) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130115
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130109
+packetLen(0x0931, -1) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130103
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#endif
+
+// Packet: 0x0932
+#if PACKETVER >= 20131016
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20131008
+packetLen(0x0932, 10) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20130626
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20130618
+packetLen(0x0932, -1) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20130103
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#endif
+
+// Packet: 0x0933
+#if PACKETVER >= 20130417
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20130410
+packetLen(0x0933, 10) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20130403
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20130327
+packetLen(0x0933, -1) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20130320
+packetLen(0x0933, 6) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20130103
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#endif
+
+// Packet: 0x0934
+#if PACKETVER >= 20131120
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20131113
+packetLen(0x0934, 18) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20131016
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20131008
+packetLen(0x0934, 6) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20130925
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20130917
+packetLen(0x0934, 12) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20130313
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20130306
+packetLen(0x0934, 26) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20130103
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#endif
+
+// Packet: 0x0935
+#if PACKETVER >= 20131113
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20131106
+packetLen(0x0935, 26) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20131030
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20131023
+packetLen(0x0935, 6) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20130807
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20130731
+packetLen(0x0935, 6) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20130103
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#endif
+
+// Packet: 0x0936
+#if PACKETVER >= 20131120
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20131113
+packetLen(0x0936, 5) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20131016
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20131008
+packetLen(0x0936, 6) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130821
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130814
+packetLen(0x0936, -1) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130626
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130618
+packetLen(0x0936, 8) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130605
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130529
+packetLen(0x0936, -1) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130306
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130227
+packetLen(0x0936, 12) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130103
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#endif
+
+// Packet: 0x0937
+#if PACKETVER >= 20131030
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20131023
+packetLen(0x0937, -1) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20130911
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20130904
+packetLen(0x0937, 26) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20130821
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20130814
+packetLen(0x0937, 6) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20130605
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20130529
+packetLen(0x0937, 6) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20130103
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#endif
+
+// Packet: 0x0938
+#if PACKETVER >= 20130605
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130529
+packetLen(0x0938, 8) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130403
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130327
+packetLen(0x0938, 8) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130320
+packetLen(0x0938, -1) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130115
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130109
+packetLen(0x0938, 26) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130103
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#endif
+
+// Packet: 0x0939
+#if PACKETVER >= 20130417
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20130410
+packetLen(0x0939, 7) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20130403
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20130327
+packetLen(0x0939, 6) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20130121
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20130115
+packetLen(0x0939, 6) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20130103
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#endif
+
+// Packet: 0x093a
+#if PACKETVER >= 20131204
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20131127
+packetLen(0x093a, 26) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130917
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130911
+packetLen(0x093a, 8) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130904
+packetLen(0x093a, 5) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130821
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130814
+packetLen(0x093a, 5) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130618
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130612
+packetLen(0x093a, 5) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130215
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130206
+packetLen(0x093a, 5) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130130
+packetLen(0x093a, 36) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130103
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#endif
+
+// Packet: 0x093b
+#if PACKETVER >= 20131211
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20131204
+packetLen(0x093b, 8) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20131113
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20131106
+packetLen(0x093b, 6) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20130724
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20130717
+packetLen(0x093b, -1) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20130103
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#endif
+
+// Packet: 0x093c
+#if PACKETVER >= 20131120
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20131113
+packetLen(0x093c, 5) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20131016
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20131008
+packetLen(0x093c, 5) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20130215
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20130206
+packetLen(0x093c, 26) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20130103
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#endif
+
+// Packet: 0x093d
+#if PACKETVER >= 20131230
+packetLen(0x093d, -1) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130417
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130410
+packetLen(0x093d, 8) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130206
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130130
+packetLen(0x093d, -1) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130103
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#endif
+
+// Packet: 0x093e
+#if PACKETVER >= 20131230
+packetLen(0x093e, 8) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20131127
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20131120
+packetLen(0x093e, 90) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20130828
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20130821
+packetLen(0x093e, 8) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20130529
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20130522
+packetLen(0x093e, 12) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20130515
+packetLen(0x093e, 36) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20130115
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20130109
+packetLen(0x093e, 18) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20130103
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#endif
+
+// Packet: 0x093f
+#if PACKETVER >= 20131127
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20131120
+packetLen(0x093f, -1) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20130327
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20130320
+packetLen(0x093f, 5) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20130103
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#endif
+
+// Packet: 0x0940
+#if PACKETVER >= 20131204
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20131127
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20131120
+packetLen(0x0940, 4) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20131008
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20131002
+packetLen(0x0940, 5) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130925
+packetLen(0x0940, 10) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130917
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130911
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130618
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130612
+packetLen(0x0940, 26) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130130
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130121
+packetLen(0x0940, -1) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130109
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130103
+packetLen(0x0940, 19) // ZC_REASSEMBLY_AUTH84
+#endif
+
+// Packet: 0x0941
+#if PACKETVER >= 20131211
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20131204
+packetLen(0x0941, 8) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130807
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130731
+packetLen(0x0941, 8) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130220
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130215
+packetLen(0x0941, 26) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20130103
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#endif
+
+// Packet: 0x0942
+#if PACKETVER >= 20131113
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20131106
+packetLen(0x0942, 10) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20130626
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20130618
+packetLen(0x0942, -1) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20130410
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20130403
+packetLen(0x0942, 5) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20130103
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#endif
+
+// Packet: 0x0943
+#if PACKETVER >= 20131230
+packetLen(0x0943, 26) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20130522
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20130515
+packetLen(0x0943, 19) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20130313
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20130306
+packetLen(0x0943, 10) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20130103
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#endif
+
+// Packet: 0x0944
+#if PACKETVER >= 20131030
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20131023
+packetLen(0x0944, -1) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20130904
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20130828
+packetLen(0x0944, 26) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20130626
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20130618
+packetLen(0x0944, 6) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20130522
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20130515
+packetLen(0x0944, 6) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20130508
+packetLen(0x0944, 4) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20130417
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20130410
+packetLen(0x0944, 4) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20130313
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20130306
+packetLen(0x0944, -1) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20130103
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#endif
+
+// Packet: 0x0945
+#if PACKETVER >= 20130626
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20130618
+packetLen(0x0945, 6) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20130417
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20130410
+packetLen(0x0945, 5) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20130103
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#endif
+
+// Packet: 0x0946
+#if PACKETVER >= 20131113
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20131106
+packetLen(0x0946, 6) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20131023
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20131016
+packetLen(0x0946, 18) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20130904
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20130828
+packetLen(0x0946, 4) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20130313
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20130306
+packetLen(0x0946, 26) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20130227
+packetLen(0x0946, 8) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20130121
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20130115
+packetLen(0x0946, -1) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20130103
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#endif
+
+// Packet: 0x0947
+#if PACKETVER >= 20131223
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20131218
+packetLen(0x0947, 5) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20131113
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20131106
+packetLen(0x0947, 7) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20131016
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20131008
+packetLen(0x0947, 36) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20130821
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20130814
+packetLen(0x0947, 10) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20130522
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20130515
+packetLen(0x0947, 26) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20130327
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20130320
+packetLen(0x0947, 36) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20130313
+packetLen(0x0947, 19) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20130103
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#endif
+
+// Packet: 0x0948
+#if PACKETVER >= 20131113
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20131106
+packetLen(0x0948, 4) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20130917
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20130911
+packetLen(0x0948, 26) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20130103
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#endif
+
+// Packet: 0x0949
+#if PACKETVER >= 20131230
+packetLen(0x0949, 5) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20131120
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20131113
+packetLen(0x0949, 10) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20130103
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#endif
+
+// Packet: 0x094a
+#if PACKETVER >= 20131230
+packetLen(0x094a, 5) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20131030
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20131023
+packetLen(0x094a, 26) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20130904
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20130828
+packetLen(0x094a, 26) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20130731
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20130724
+packetLen(0x094a, 6) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20130710
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20130703
+packetLen(0x094a, 5) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20130403
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20130327
+packetLen(0x094a, 5) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20130313
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20130306
+packetLen(0x094a, 18) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20130103
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#endif
+
+// Packet: 0x094b
+#if PACKETVER >= 20130403
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20130327
+packetLen(0x094b, 36) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20130227
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20130220
+packetLen(0x094b, 36) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20130121
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20130115
+packetLen(0x094b, 18) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20130103
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#endif
+
+// Packet: 0x094c
+#if PACKETVER >= 20131218
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20131211
+packetLen(0x094c, 8) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20131204
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20131127
+packetLen(0x094c, 6) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20130925
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20130917
+packetLen(0x094c, 18) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20130904
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20130828
+packetLen(0x094c, -1) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20130807
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20130731
+packetLen(0x094c, 8) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20130327
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20130320
+packetLen(0x094c, 6) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20130121
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20130115
+packetLen(0x094c, 6) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20130103
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#endif
+
+// Packet: 0x094d
+#if PACKETVER >= 20130703
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20130626
+packetLen(0x094d, 5) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20130515
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20130508
+packetLen(0x094d, 5) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20130103
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#endif
+
+// Packet: 0x094e
+#if PACKETVER >= 20130925
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130917
+packetLen(0x094e, 8) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130327
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130320
+packetLen(0x094e, -1) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130313
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130306
+packetLen(0x094e, 6) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130121
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130115
+packetLen(0x094e, 6) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20130103
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#endif
+
+// Packet: 0x094f
+#if PACKETVER >= 20131204
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20131127
+packetLen(0x094f, 6) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130904
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130828
+packetLen(0x094f, 7) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130626
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130618
+packetLen(0x094f, 90) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130403
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130327
+packetLen(0x094f, 26) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130130
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130121
+packetLen(0x094f, 6) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130115
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130109
+packetLen(0x094f, -1) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20130103
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#endif
+
+// Packet: 0x0950
+#if PACKETVER >= 20131127
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20131120
+packetLen(0x0950, 6) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20131106
+packetLen(0x0950, -1) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130529
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130522
+packetLen(0x0950, 26) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130410
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130403
+packetLen(0x0950, 26) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130215
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130206
+packetLen(0x0950, 8) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130115
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130109
+packetLen(0x0950, 36) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20130103
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#endif
+
+// Packet: 0x0951
+#if PACKETVER >= 20131211
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20131204
+packetLen(0x0951, -1) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20131030
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20131023
+packetLen(0x0951, 6) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130626
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130618
+packetLen(0x0951, 10) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130605
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130529
+packetLen(0x0951, 5) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130313
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130306
+packetLen(0x0951, -1) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130227
+packetLen(0x0951, 10) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130115
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130109
+packetLen(0x0951, 6) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20130103
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#endif
+
+// Packet: 0x0952
+#if PACKETVER >= 20131016
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20131008
+packetLen(0x0952, 6) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20130724
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20130717
+packetLen(0x0952, 90) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20130703
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20130626
+packetLen(0x0952, 6) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20130529
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20130522
+packetLen(0x0952, -1) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20130103
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#endif
+
+// Packet: 0x0953
+#if PACKETVER >= 20131127
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20131120
+packetLen(0x0953, 26) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20130731
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20130724
+packetLen(0x0953, 5) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20130626
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20130618
+packetLen(0x0953, 26) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20130103
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#endif
+
+// Packet: 0x0954
+#if PACKETVER >= 20131113
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20131106
+packetLen(0x0954, 12) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20131030
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20131023
+packetLen(0x0954, 8) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20131016
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20131008
+packetLen(0x0954, -1) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20130828
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20130821
+packetLen(0x0954, 10) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20130731
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20130724
+packetLen(0x0954, 6) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20130103
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#endif
+
+// Packet: 0x0955
+#if PACKETVER >= 20131127
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20131120
+packetLen(0x0955, 6) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20130417
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20130410
+packetLen(0x0955, 10) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20130403
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20130327
+packetLen(0x0955, 7) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20130103
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#endif
+
+// Packet: 0x0956
+#if PACKETVER >= 20131127
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20131120
+packetLen(0x0956, 5) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20131016
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20131008
+packetLen(0x0956, -1) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20130911
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20130904
+packetLen(0x0956, 36) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20130807
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20130731
+packetLen(0x0956, 26) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20130724
+packetLen(0x0956, 12) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20130717
+packetLen(0x0956, 8) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20130605
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20130529
+packetLen(0x0956, 36) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20130220
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20130215
+packetLen(0x0956, 26) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20130206
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20130130
+packetLen(0x0956, 19) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20130121
+packetLen(0x0956, 5) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20130103
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#endif
+
+// Packet: 0x0957
+#if PACKETVER >= 20130925
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130917
+packetLen(0x0957, 10) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130807
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130731
+packetLen(0x0957, 6) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130605
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130529
+packetLen(0x0957, 8) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130515
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130508
+packetLen(0x0957, 8) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130206
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130130
+packetLen(0x0957, 12) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20130103
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#endif
+
+// Packet: 0x0958
+#if PACKETVER >= 20131211
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20131204
+packetLen(0x0958, -1) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20131002
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130925
+packetLen(0x0958, 6) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130821
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130814
+packetLen(0x0958, 5) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130807
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130731
+packetLen(0x0958, -1) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130724
+packetLen(0x0958, 10) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130717
+packetLen(0x0958, 6) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130605
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130529
+packetLen(0x0958, -1) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20130103
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#endif
+
+// Packet: 0x0959
+#if PACKETVER >= 20131211
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20131204
+packetLen(0x0959, 90) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20130925
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20130917
+packetLen(0x0959, -1) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20130821
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20130814
+packetLen(0x0959, 18) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20130327
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20130320
+packetLen(0x0959, 10) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20130103
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#endif
+
+// Packet: 0x095a
+#if PACKETVER >= 20131002
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20130925
+packetLen(0x095a, 18) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20130327
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20130320
+packetLen(0x095a, 8) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20130121
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20130115
+packetLen(0x095a, 36) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20130103
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#endif
+
+// Packet: 0x095b
+#if PACKETVER >= 20131211
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20131204
+packetLen(0x095b, 12) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20131030
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20131023
+packetLen(0x095b, 5) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20131002
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130925
+packetLen(0x095b, -1) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130917
+packetLen(0x095b, 5) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130807
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130731
+packetLen(0x095b, 90) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130724
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130717
+packetLen(0x095b, 36) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130626
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130618
+packetLen(0x095b, 19) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130529
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130522
+packetLen(0x095b, -1) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130306
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130227
+packetLen(0x095b, 6) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130206
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130130
+packetLen(0x095b, 18) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130121
+packetLen(0x095b, 26) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20130103
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#endif
+
+// Packet: 0x095c
+#if PACKETVER >= 20131204
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20131127
+packetLen(0x095c, 19) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20131002
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20130925
+packetLen(0x095c, 8) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20130731
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20130724
+packetLen(0x095c, -1) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20130529
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20130522
+packetLen(0x095c, 10) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20130515
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20130508
+packetLen(0x095c, 5) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20130206
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20130130
+packetLen(0x095c, 8) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20130103
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#endif
+
+// Packet: 0x095d
+#if PACKETVER >= 20131120
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20131113
+packetLen(0x095d, 7) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20131106
+packetLen(0x095d, 26) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20131016
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20131008
+packetLen(0x095d, 26) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20130904
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20130828
+packetLen(0x095d, 5) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20130807
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20130731
+packetLen(0x095d, 12) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20130724
+packetLen(0x095d, 8) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20130220
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20130215
+packetLen(0x095d, 5) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20130103
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#endif
+
+// Packet: 0x095e
+#if PACKETVER >= 20131127
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20131120
+packetLen(0x095e, 18) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20131023
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20131016
+packetLen(0x095e, 10) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20130828
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20130821
+packetLen(0x095e, 6) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20130529
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20130522
+packetLen(0x095e, 6) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20130306
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20130227
+packetLen(0x095e, 36) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20130115
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20130109
+packetLen(0x095e, 6) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20130103
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#endif
+
+// Packet: 0x095f
+#if PACKETVER >= 20131120
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20131113
+packetLen(0x095f, 10) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20130821
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20130814
+packetLen(0x095f, 6) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20130807
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20130731
+packetLen(0x095f, 6) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20130103
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#endif
+
+// Packet: 0x0960
+#if PACKETVER >= 20131120
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20131113
+packetLen(0x0960, 8) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130724
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130717
+packetLen(0x0960, 12) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130703
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130626
+packetLen(0x0960, 5) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130417
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130410
+packetLen(0x0960, 26) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130403
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130327
+packetLen(0x0960, 10) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130313
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130306
+packetLen(0x0960, 6) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20130103
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#endif
+
+// Packet: 0x0961
+#if PACKETVER >= 20131211
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20131204
+packetLen(0x0961, 4) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20130508
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20130502
+packetLen(0x0961, 8) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20130403
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20130327
+packetLen(0x0961, 6) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20130103
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#endif
+
+// Packet: 0x0962
+#if PACKETVER >= 20131113
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20131106
+packetLen(0x0962, -1) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20131023
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20131016
+packetLen(0x0962, 7) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130828
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130821
+packetLen(0x0962, 6) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130814
+packetLen(0x0962, 90) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130807
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130731
+packetLen(0x0962, 6) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130626
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130618
+packetLen(0x0962, 6) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130522
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130515
+packetLen(0x0962, 26) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130424
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130417
+packetLen(0x0962, 5) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130313
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130306
+packetLen(0x0962, 6) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130220
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130215
+packetLen(0x0962, 8) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20130103
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#endif
+
+// Packet: 0x0963
+#if PACKETVER >= 20130522
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20130515
+packetLen(0x0963, -1) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20130130
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20130121
+packetLen(0x0963, 8) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20130103
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#endif
+
+// Packet: 0x0964
+#if PACKETVER >= 20131120
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20131113
+packetLen(0x0964, 4) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130828
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130821
+packetLen(0x0964, 6) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130618
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130612
+packetLen(0x0964, 36) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130529
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130522
+packetLen(0x0964, 90) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20130103
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#endif
+
+// Packet: 0x0965
+#if PACKETVER >= 20130731
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20130724
+packetLen(0x0965, -1) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20130529
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20130522
+packetLen(0x0965, 8) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20130103
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#endif
+
+// Packet: 0x0966
+#if PACKETVER >= 20131023
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20131016
+packetLen(0x0966, 5) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20130904
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20130828
+packetLen(0x0966, 8) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20130731
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20130724
+packetLen(0x0966, 5) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20130103
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#endif
+
+// Packet: 0x0967
+#if PACKETVER >= 20131211
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20131204
+packetLen(0x0967, 8) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20131127
+packetLen(0x0967, 26) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20131113
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20131106
+packetLen(0x0967, -1) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130917
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130911
+packetLen(0x0967, 6) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130828
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130821
+packetLen(0x0967, 18) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130724
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130717
+packetLen(0x0967, 6) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130508
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130502
+packetLen(0x0967, 6) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130417
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130410
+packetLen(0x0967, -1) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130403
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130327
+packetLen(0x0967, -1) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130306
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130227
+packetLen(0x0967, 7) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20130103
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#endif
+
+// Packet: 0x0968
+#if PACKETVER >= 20131230
+packetLen(0x0968, 8) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20130103
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#endif
+
+// Packet: 0x0969
+#if PACKETVER >= 20131230
+packetLen(0x0969, 6) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20131120
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20131113
+packetLen(0x0969, -1) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20131016
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20131008
+packetLen(0x0969, -1) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20131002
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20130925
+packetLen(0x0969, 4) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20130828
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20130821
+packetLen(0x0969, 26) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20130502
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20130424
+packetLen(0x0969, 36) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20130417
+packetLen(0x0969, 6) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20130130
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20130121
+packetLen(0x0969, -1) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20130103
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#endif
+
+// Packet: 0x096a
+#if PACKETVER >= 20131230
+packetLen(0x096a, 90) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20131223
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+// ignored packet from 2013-12-23aRagexeRE
+#elif PACKETVER >= 20131211
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20131204
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20131127
+packetLen(0x096a, 8) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20131106
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20131030
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20131008
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130925
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130917
+packetLen(0x096a, 26) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130911
+packetLen(0x096a, 8) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130904
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130828
+packetLen(0x096a, 19) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130814
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130807
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130717
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130626
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130618
+packetLen(0x096a, 10) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130605
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130522
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130508
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130502
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130424
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130417
+packetLen(0x096a, 4) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130403
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130320
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130313
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130227
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130206
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130130
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130121
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130109
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20130103
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#endif
+
+// Packet: 0x096b
+packetLen(0x096b, 4) // ZC_PRNPC_STATE
+
+// Packet: 0x096c
+packetLen(0x096c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+
+// Packet: 0x096d
+packetLen(0x096d, -1) // ZC_MERGE_ITEM_OPEN
+
+// Packet: 0x096e
+packetLen(0x096e, -1) // CZ_REQ_MERGE_ITEM
+
+// Packet: 0x096f
+packetLen(0x096f, 7) // ZC_ACK_MERGE_ITEM
+
+// Packet: 0x0970
+packetLen(0x0970, 31) // CH_MAKE_CHAR_NOT_STATS
+
+// Packet: 0x0971
+packetLen(0x0971, 6) // ZC_PARTY_RECRUIT_REFUSE_VOLUNTEER_TO_PM
+
+// Packet: 0x0972
+packetLen(0x0972, -1) // ZC_SAY_DIALOG2
+
+// Packet: 0x0973
+packetLen(0x0973, 7) // ZC_WAIT_DIALOG2
+
+// Packet: 0x0974
+packetLen(0x0974, 2) // CZ_CANCEL_MERGE_ITEM
+
+// Packet: 0x0975
+packetLen(0x0975, -1) // ZC_STORE_ITEMLIST_NORMAL_V2
+
+// Packet: 0x0976
+packetLen(0x0976, -1) // ZC_STORE_ITEMLIST_EQUIP_V2
+
+// Packet: 0x0977
+packetLen(0x0977, 14) // ZC_HP_INFO
+
+// Packet: 0x0978
+packetLen(0x0978, 6) // CZ_REQ_BEFORE_WORLD_INFO
+
+// Packet: 0x0979
+packetLen(0x0979, 50) // ZC_ACK_BEFORE_WORLD_INFO
+
+// Packet: 0x097a
+packetLen(0x097a, -1) // ZC_ALL_QUEST_LIST2
+
+// Packet: 0x097b
+packetLen(0x097b, -1) // ZC_PERSONAL_INFOMATION2
+
+// Packet: 0x097c
+packetLen(0x097c, 4) // CZ_REQ_RANKING
+
+// Packet: 0x097d
+packetLen(0x097d, 288) // ZC_ACK_RANKING
+
+// Packet: 0x097e
+packetLen(0x097e, 12) // ZC_UPDATE_RANKING_POINT
+
+// Packet: 0x097f
+packetLen(0x097f, -1) // ZC_SELECTCART
+
+// Packet: 0x0980
+packetLen(0x0980, 7) // CZ_SELECTCART
+
+// Packet: 0x0981
+packetLen(0x0981, -1) // ZC_PERSONAL_INFOMATION_CHN
+
+// Packet: 0x0982
+packetLen(0x0982, 7) // ZC_FATIGUE_CHN
+
+// Packet: 0x0983
+packetLen(0x0983, 29) // ZC_MSG_STATE_CHANGE3
+
+// Packet: 0x0984
+packetLen(0x0984, 28) // ZC_EFST_SET_ENTER2
+
+// Packet: 0x0985
+packetLen(0x0985, -1) // ZC_SKILL_POSTDELAY_LIST2
+
+// Packet: 0x0986
+packetLen(0x0986, 10) // AC_SHUTDOWN_NOTIFY
+
+// Packet: 0x0987
+#if PACKETVER >= 20130115
+packetLen(0x0987, -1) // CA_LOGIN6
+#elif PACKETVER >= 20130103
+packetLen(0x0987, 63) // CA_LOGIN6
+#endif
+
+// Packet: 0x0988
+packetLen(0x0988, 6) // ZC_NOTIFY_CLAN_CONNECTINFO
+
+// Packet: 0x0989
+packetLen(0x0989, 2) // ZC_ACK_CLAN_LEAVE
+
+// Packet: 0x098a
+packetLen(0x098a, -1) // ZC_CLANINFO
+
+// Packet: 0x098b
+packetLen(0x098b, 2) // AC_REQ_NEW_USER
+
+// Packet: 0x098c
+packetLen(0x098c, 4) // CA_ACK_NEW_USER
+
+// Packet: 0x098d
+packetLen(0x098d, -1) // CZ_CLAN_CHAT
+
+// Packet: 0x098e
+packetLen(0x098e, -1) // ZC_NOTIFY_CLAN_CHAT
+
+// Packet: 0x098f
+packetLen(0x098f, -1) // CH_DELETE_CHAR3_EXT
+
+// Packet: 0x0990
+packetLen(0x0990, 31) // ZC_ITEM_PICKUP_ACK_V5
+
+// Packet: 0x0991
+packetLen(0x0991, -1) // ZC_INVENTORY_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0992
+packetLen(0x0992, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0993
+packetLen(0x0993, -1) // ZC_CART_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0994
+packetLen(0x0994, -1) // ZC_CART_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0995
+packetLen(0x0995, -1) // ZC_STORE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0996
+packetLen(0x0996, -1) // ZC_STORE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0997
+packetLen(0x0997, -1) // ZC_EQUIPWIN_MICROSCOPE_V5
+
+// Packet: 0x0998
+packetLen(0x0998, 8) // CZ_REQ_WEAR_EQUIP_V5
+
+// Packet: 0x0999
+packetLen(0x0999, 11) // ZC_ACK_WEAR_EQUIP_V5
+
+// Packet: 0x099a
+packetLen(0x099a, 9) // ZC_ACK_TAKEOFF_EQUIP_V5
+
+// Packet: 0x099b
+packetLen(0x099b, 8) // ZC_MAPPROPERTY_R2
+
+// Packet: 0x099c
+packetLen(0x099c, 6) // CH_REQ_CHARINFO_PER_PAGE
+
+// Packet: 0x099d
+packetLen(0x099d, -1) // HC_ACK_CHARINFO_PER_PAGE
+
+// Packet: 0x099e
+packetLen(0x099e, 12) // HC_QUEUE_ORDER
+
+// Packet: 0x099f
+packetLen(0x099f, -1) // ZC_SKILL_ENTRY4
+
+// Packet: 0x09a0
+#if PACKETVER >= 20130327
+packetLen(0x09a0, 10) // HC_CHARLIST_NOTIFY
+#elif PACKETVER >= 20130103
+packetLen(0x09a0, 6) // HC_CHARLIST_NOTIFY
+#endif
+
+// Packet: 0x09a1
+packetLen(0x09a1, 2) // CH_CHARLIST_REQ
+
+// Packet: 0x09a2
+#if PACKETVER >= 20130130
+packetLen(0x09a2, 6) // AC_REQ_MOBILE_OTP
+#endif
+
+// Packet: 0x09a3
+#if PACKETVER >= 20130130
+packetLen(0x09a3, -1) // CA_ACK_MOBILE_OTP
+#endif
+
+// Packet: 0x09a4
+#if PACKETVER >= 20130206
+packetLen(0x09a4, 18) // ZC_DISPATCH_TIMING_INFO_CHN
+#endif
+
+// Packet: 0x09a5
+#if PACKETVER >= 20130220
+packetLen(0x09a5, 7) // AC_REFUSE_LOGIN3
+#endif
+
+// Packet: 0x09a6
+#if PACKETVER >= 20130306
+packetLen(0x09a6, 12) // ZC_BANKING_CHECK
+#endif
+
+// Packet: 0x09a7
+#if PACKETVER >= 20130320
+packetLen(0x09a7, 10) // CZ_REQ_BANKING_DEPOSIT
+#elif PACKETVER >= 20130306
+packetLen(0x09a7, 14) // CZ_REQ_BANKING_DEPOSIT
+#endif
+
+// Packet: 0x09a8
+#if PACKETVER >= 20130515
+packetLen(0x09a8, 16) // ZC_ACK_BANKING_DEPOSIT
+#elif PACKETVER >= 20130320
+packetLen(0x09a8, 12) // ZC_ACK_BANKING_DEPOSIT
+#elif PACKETVER >= 20130306
+packetLen(0x09a8, 4) // ZC_ACK_BANKING_DEPOSIT
+#endif
+
+// Packet: 0x09a9
+#if PACKETVER >= 20130320
+packetLen(0x09a9, 10) // CZ_REQ_BANKING_WITHDRAW
+#elif PACKETVER >= 20130306
+packetLen(0x09a9, 14) // CZ_REQ_BANKING_WITHDRAW
+#endif
+
+// Packet: 0x09aa
+#if PACKETVER >= 20130515
+packetLen(0x09aa, 16) // ZC_ACK_BANKING_WITHDRAW
+#elif PACKETVER >= 20130320
+packetLen(0x09aa, 12) // ZC_ACK_BANKING_WITHDRAW
+#elif PACKETVER >= 20130306
+packetLen(0x09aa, 4) // ZC_ACK_BANKING_WITHDRAW
+#endif
+
+// Packet: 0x09ab
+#if PACKETVER >= 20130320
+packetLen(0x09ab, 6) // CZ_REQ_BANKING_CHECK
+#elif PACKETVER >= 20130313
+packetLen(0x09ab, -1) // CZ_REQ_BANKING_CHECK
+#endif
+
+// Packet: 0x09ac
+#if PACKETVER >= 20130327
+packetLen(0x09ac, -1) // CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO
+#elif PACKETVER >= 20130320
+// removed
+#elif PACKETVER >= 20130313
+packetLen(0x09ac, 20) // CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO
+#endif
+
+// Packet: 0x09ad
+#if PACKETVER >= 20130327
+packetLen(0x09ad, 10) // ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO
+#elif PACKETVER >= 20130320
+// removed
+#elif PACKETVER >= 20130313
+packetLen(0x09ad, 6) // ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO
+#endif
+
+// Packet: 0x09ae
+#if PACKETVER >= 20130327
+packetLen(0x09ae, 17) // CZ_REQ_APPLY_BARGAIN_SALE_ITEM
+#elif PACKETVER >= 20130320
+// removed
+#elif PACKETVER >= 20130313
+packetLen(0x09ae, -1) // CZ_REQ_APPLY_BARGAIN_SALE_ITEM
+#endif
+
+// Packet: 0x09af
+#if PACKETVER >= 20130327
+packetLen(0x09af, 4) // ZC_ACK_APPLY_BARGAIN_SALE_ITEM
+#elif PACKETVER >= 20130320
+// removed
+#elif PACKETVER >= 20130313
+packetLen(0x09af, -1) // ZC_ACK_APPLY_BARGAIN_SALE_ITEM
+#endif
+
+// Packet: 0x09b0
+#if PACKETVER >= 20130327
+packetLen(0x09b0, 8) // CZ_REQ_REMOVE_BARGAIN_SALE_ITEM
+#elif PACKETVER >= 20130320
+// removed
+#elif PACKETVER >= 20130313
+packetLen(0x09b0, 8) // CZ_REQ_REMOVE_BARGAIN_SALE_ITEM
+#endif
+
+// Packet: 0x09b1
+#if PACKETVER >= 20130327
+packetLen(0x09b1, 4) // ZC_ACK_REMOVE_BARGAIN_SALE_ITEM
+#elif PACKETVER >= 20130320
+// removed
+#elif PACKETVER >= 20130313
+packetLen(0x09b1, 6) // ZC_ACK_REMOVE_BARGAIN_SALE_ITEM
+#endif
+
+// Packet: 0x09b2
+#if PACKETVER >= 20130605
+packetLen(0x09b2, 8) // ZC_NOTIFY_BARGAIN_SALE_SELLING
+#elif PACKETVER >= 20130327
+packetLen(0x09b2, 6) // ZC_NOTIFY_BARGAIN_SALE_SELLING
+#elif PACKETVER >= 20130320
+// removed
+#elif PACKETVER >= 20130313
+packetLen(0x09b2, -1) // ZC_NOTIFY_BARGAIN_SALE_SELLING
+#endif
+
+// Packet: 0x09b3
+#if PACKETVER >= 20130605
+packetLen(0x09b3, 4) // ZC_NOTIFY_BARGAIN_SALE_CLOSE
+#elif PACKETVER >= 20130327
+packetLen(0x09b3, 6) // ZC_NOTIFY_BARGAIN_SALE_CLOSE
+#endif
+
+// Packet: 0x09b4
+#if PACKETVER >= 20130417
+packetLen(0x09b4, 6) // CZ_OPEN_BARGAIN_SALE_TOOL
+#endif
+
+// Packet: 0x09b5
+#if PACKETVER >= 20130417
+packetLen(0x09b5, 2) // ZC_OPEN_BARGAIN_SALE_TOOL
+#endif
+
+// Packet: 0x09b6
+#if PACKETVER >= 20130417
+packetLen(0x09b6, 6) // CZ_REQ_OPEN_BANKING
+#endif
+
+// Packet: 0x09b7
+#if PACKETVER >= 20130417
+packetLen(0x09b7, 4) // ZC_ACK_OPEN_BANKING
+#endif
+
+// Packet: 0x09b8
+#if PACKETVER >= 20130417
+packetLen(0x09b8, 6) // CZ_REQ_CLOSE_BANKING
+#endif
+
+// Packet: 0x09b9
+#if PACKETVER >= 20130417
+packetLen(0x09b9, 4) // ZC_ACK_CLOSE_BANKING
+#endif
+
+// Packet: 0x09ba
+#if PACKETVER >= 20130828
+packetLen(0x09ba, 2) // CZ_REQ_OPEN_GUILD_STORAGE
+#elif PACKETVER >= 20130424
+packetLen(0x09ba, 6) // CZ_REQ_OPEN_GUILD_STORAGE
+#endif
+
+// Packet: 0x09bb
+#if PACKETVER >= 20130502
+packetLen(0x09bb, 6) // ZC_ACK_OPEN_GUILD_STORAGE
+#elif PACKETVER >= 20130424
+packetLen(0x09bb, 4) // ZC_ACK_OPEN_GUILD_STORAGE
+#endif
+
+// Packet: 0x09bc
+#if PACKETVER >= 20130424
+packetLen(0x09bc, 6) // CZ_CLOSE_BARGAIN_SALE_TOOL
+#endif
+
+// Packet: 0x09bd
+#if PACKETVER >= 20130424
+packetLen(0x09bd, 2) // ZC_CLOSE_BARGAIN_SALE_TOOL
+#endif
+
+// Packet: 0x09be
+#if PACKETVER >= 20130828
+packetLen(0x09be, 2) // CZ_REQ_CLOSE_GUILD_STORAGE
+#elif PACKETVER >= 20130502
+packetLen(0x09be, 6) // CZ_REQ_CLOSE_GUILD_STORAGE
+#endif
+
+// Packet: 0x09bf
+#if PACKETVER >= 20130502
+packetLen(0x09bf, 4) // ZC_ACK_CLOSE_GUILD_STORAGE
+#endif
+
+// Packet: 0x09c0
+#if PACKETVER >= 20130618
+// removed
+#elif PACKETVER >= 20130515
+packetLen(0x09c0, 11) // ZC_ACTION_MOVE
+#endif
+
+// Packet: 0x09c1
+#if PACKETVER >= 20130717
+packetLen(0x09c1, 10) // ZC_C_MARKERINFO
+#elif PACKETVER >= 20130515
+packetLen(0x09c1, 11) // ZC_C_MARKERINFO
+#endif
+
+// Packet: 0x09c2
+#if PACKETVER >= 20130522
+packetLen(0x09c2, -1) // HC_SECRETSCAN_DATA
+#endif
+
+// Packet: 0x09c3
+#if PACKETVER >= 20130529
+packetLen(0x09c3, 8) // CZ_REQ_COUNT_BARGAIN_SALE_ITEM
+#endif
+
+// Packet: 0x09c4
+#if PACKETVER >= 20130605
+packetLen(0x09c4, 8) // ZC_ACK_COUNT_BARGAIN_SALE_ITEM
+#endif
+
+// Packet: 0x09c5
+#if PACKETVER >= 20130605
+packetLen(0x09c5, 1042) // CS_LOGIN_QUERY
+#endif
+
+// Packet: 0x09c6
+#if PACKETVER >= 20130605
+packetLen(0x09c6, -1) // SC_LOGIN_ANSWER
+#endif
+
+// Packet: 0x09c7
+#if PACKETVER >= 20130612
+packetLen(0x09c7, 18) // SC_LOGIN_ERROR
+#elif PACKETVER >= 20130605
+packetLen(0x09c7, 10) // SC_LOGIN_ERROR
+#endif
+
+// Packet: 0x09c8
+#if PACKETVER >= 20130605
+packetLen(0x09c8, -1) // CA_LOGIN_OTP
+#endif
+
+// Packet: 0x09c9
+#if PACKETVER >= 20130612
+packetLen(0x09c9, -1) // SC_SOCT
+#endif
+
+// Packet: 0x09ca
+#if PACKETVER >= 20130828
+packetLen(0x09ca, -1) // ZC_SKILL_ENTRY5
+#elif PACKETVER >= 20130618
+packetLen(0x09ca, 23) // ZC_SKILL_ENTRY5
+#endif
+
+// Packet: 0x09cb
+#if PACKETVER >= 20130717
+packetLen(0x09cb, 17) // ZC_USE_SKILL2
+#endif
+
+// Packet: 0x09cc
+#if PACKETVER >= 20130717
+packetLen(0x09cc, -1) // ZC_SECRETSCAN_DATA
+#endif
+
+// Packet: 0x09cd
+#if PACKETVER >= 20130807
+packetLen(0x09cd, 8) // ZC_MSG_COLOR
+#endif
+
+// Packet: 0x09ce
+#if PACKETVER >= 20130814
+packetLen(0x09ce, 102) // CZ_ITEM_CREATE_EX
+#endif
+
+// Packet: 0x09cf
+#if PACKETVER >= 20130814
+packetLen(0x09cf, -1) // ZC_NPROTECTGAMEGUARDCSAUTH
+#endif
+
+// Packet: 0x09d0
+#if PACKETVER >= 20130814
+packetLen(0x09d0, -1) // CZ_NPROTECTGAMEGUARDCSAUTH
+#endif
+
+// Packet: 0x09d1
+#if PACKETVER >= 20130821
+packetLen(0x09d1, 14) // ZC_PROGRESS_ACTOR
+#endif
+
+// Packet: 0x09d2
+#if PACKETVER >= 20130828
+packetLen(0x09d2, -1) // ZC_GUILDSTORAGE_ITEMLIST_NORMAL_V5
+#endif
+
+// Packet: 0x09d3
+#if PACKETVER >= 20130828
+packetLen(0x09d3, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V5
+#endif
+
+// Packet: 0x09d4
+#if PACKETVER >= 20130911
+packetLen(0x09d4, 2) // CZ_NPC_TRADE_QUIT
+#endif
+
+// Packet: 0x09d5
+#if PACKETVER >= 20130911
+packetLen(0x09d5, -1) // ZC_NPC_MARKET_OPEN
+#endif
+
+// Packet: 0x09d6
+#if PACKETVER >= 20130911
+packetLen(0x09d6, -1) // CZ_NPC_MARKET_PURCHASE
+#endif
+
+// Packet: 0x09d7
+#if PACKETVER >= 20130911
+packetLen(0x09d7, -1) // ZC_NPC_MARKET_PURCHASE_RESULT
+#endif
+
+// Packet: 0x09d8
+#if PACKETVER >= 20130911
+packetLen(0x09d8, 2) // CZ_NPC_MARKET_CLOSE
+#endif
+
+// Packet: 0x09d9
+#if PACKETVER >= 20131023
+packetLen(0x09d9, 4) // CZ_REQ_GUILDSTORAGE_LOG
+#elif PACKETVER >= 20131016
+packetLen(0x09d9, 6) // CZ_REQ_GUILDSTORAGE_LOG
+#elif PACKETVER >= 20131002
+packetLen(0x09d9, 4) // CZ_REQ_GUILDSTORAGE_LOG
+#elif PACKETVER >= 20130911
+packetLen(0x09d9, 2) // CZ_REQ_GUILDSTORAGE_LOG
+#endif
+
+// Packet: 0x09da
+#if PACKETVER >= 20131002
+packetLen(0x09da, -1) // ZC_ACK_GUILDSTORAGE_LOG
+#elif PACKETVER >= 20130925
+packetLen(0x09da, 10) // ZC_ACK_GUILDSTORAGE_LOG
+#elif PACKETVER >= 20130911
+packetLen(0x09da, 2) // ZC_ACK_GUILDSTORAGE_LOG
+#endif
+
+// Packet: 0x09db
+#if PACKETVER >= 20131023
+packetLen(0x09db, -1) // ZC_NOTIFY_MOVEENTRY10
+#endif
+
+// Packet: 0x09dc
+#if PACKETVER >= 20131023
+packetLen(0x09dc, -1) // ZC_NOTIFY_NEWENTRY10
+#endif
+
+// Packet: 0x09dd
+#if PACKETVER >= 20131023
+packetLen(0x09dd, -1) // ZC_NOTIFY_STANDENTRY10
+#endif
+
+// Packet: 0x09de
+#if PACKETVER >= 20131030
+packetLen(0x09de, -1) // ZC_WHISPER02
+#endif
+
+// Packet: 0x09df
+#if PACKETVER >= 20131030
+packetLen(0x09df, 7) // ZC_ACK_WHISPER02
+#endif
+
+// Packet: 0x09e0
+#if PACKETVER >= 20131030
+packetLen(0x09e0, -1) // SC_LOGIN_ANSWER_WITH_ID
+#endif
+
+// Packet: 0x09e1
+#if PACKETVER >= 20131106
+packetLen(0x09e1, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_GUILDSTORAGE
+#endif
+
+// Packet: 0x09e2
+#if PACKETVER >= 20131106
+packetLen(0x09e2, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_BODY
+#endif
+
+// Packet: 0x09e3
+#if PACKETVER >= 20131106
+packetLen(0x09e3, 8) // CZ_MOVE_ITEM_FROM_CART_TO_GUILDSTORAGE
+#endif
+
+// Packet: 0x09e4
+#if PACKETVER >= 20131106
+packetLen(0x09e4, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_CART
+#endif
+
+// Packet: 0x09e5
+#if PACKETVER >= 20131127
+packetLen(0x09e5, 18) // ZC_DELETEITEM_FROM_MCSTORE2
+#elif PACKETVER >= 20131120
+packetLen(0x09e5, 14) // ZC_DELETEITEM_FROM_MCSTORE2
+#endif
+
+// Packet: 0x09e6
+#if PACKETVER >= 20131127
+packetLen(0x09e6, 22) // ZC_UPDATE_ITEM_FROM_BUYING_STORE2
+#elif PACKETVER >= 20131120
+packetLen(0x09e6, 18) // ZC_UPDATE_ITEM_FROM_BUYING_STORE2
+#endif
+
+// Packet: 0x09e7
+#if PACKETVER >= 20131211
+packetLen(0x09e7, 2) // ZC_NOTIFY_UNREAD_RODEX
+#endif
+
+// Packet: 0x09e8
+#if PACKETVER >= 20131218
+packetLen(0x09e8, 10) // CZ_OPEN_RODEXBOX
+#elif PACKETVER >= 20131211
+packetLen(0x09e8, 18) // CZ_OPEN_RODEXBOX
+#endif
+
+// Packet: 0x09e9
+#if PACKETVER >= 20131211
+packetLen(0x09e9, 2) // CZ_CLOSE_RODEXBOX
+#endif
+
+// Packet: 0x09ea
+#if PACKETVER >= 20131223
+packetLen(0x09ea, 11) // CZ_REQ_READ_RODEX
+#elif PACKETVER >= 20131218
+packetLen(0x09ea, 10) // CZ_REQ_READ_RODEX
+#endif
+
+// Packet: 0x09eb
+#if PACKETVER >= 20131230
+packetLen(0x09eb, 23) // ZC_ACK_READ_RODEX
+#elif PACKETVER >= 20131223
+packetLen(0x09eb, 24) // ZC_ACK_READ_RODEX
+#elif PACKETVER >= 20131218
+packetLen(0x09eb, 14) // ZC_ACK_READ_RODEX
+#endif
+
+// Packet: 0x09ec
+#if PACKETVER >= 20131230
+packetLen(0x09ec, -1) // CZ_REQ_SEND_RODEX
+#endif
+
+// Packet: 0x09ed
+#if PACKETVER >= 20131230
+packetLen(0x09ed, 3) // ZC_ACK_SEND_RODEX
+#elif PACKETVER >= 20131218
+// removed
+#elif PACKETVER >= 20131211
+packetLen(0x09ed, -1) // ZC_ACK_SEND_RODEX
+#endif
+
+// Packet: 0x09ee
+#if PACKETVER >= 20131218
+packetLen(0x09ee, 11) // CZ_REQ_NEXT_RODEX
+#elif PACKETVER >= 20131211
+packetLen(0x09ee, -1) // CZ_REQ_NEXT_RODEX
+#endif
+
+// Packet: 0x09ef
+#if PACKETVER >= 20131218
+packetLen(0x09ef, 11) // CZ_REQ_REFRESH_RODEX
+#endif
+
+// Packet: 0x09f0
+#if PACKETVER >= 20131218
+packetLen(0x09f0, -1) // ZC_ACK_RODEX_LIST
+#endif
+
+// Packet: 0x09f5
+#if PACKETVER >= 20131218
+packetLen(0x09f5, 11) // CZ_REQ_DELETE_RODEX
+#endif
+
+// Packet: 0x09f6
+#if PACKETVER >= 20131218
+packetLen(0x09f6, 11) // ZC_ACK_DELETE_RODEX
+#endif
+
+// Packet: 0x09f7
+#if PACKETVER >= 20131230
+packetLen(0x09f7, 75) // ZC_PROPERTY_HOMUN_2
+#endif
+
+
+#endif /* COMMON_PACKETS2013_LEN_RE_H */
diff --git a/src/common/packets/packets2014_len_main.h b/src/common/packets/packets2014_len_main.h
new file mode 100644
index 000000000..b58979cb7
--- /dev/null
+++ b/src/common/packets/packets2014_len_main.h
@@ -0,0 +1,9079 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2014_LEN_MAIN_H
+#define COMMON_PACKETS2014_LEN_MAIN_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+#if PACKETVER >= 20140820
+packetLen(0x006d, 149) // HC_ACCEPT_MAKECHAR
+#elif PACKETVER >= 20140108
+packetLen(0x006d, 146) // HC_ACCEPT_MAKECHAR
+#endif
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 22) // CZ_ENTER
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 44) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 10) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, 14)
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+packetLen(0x0094, 19) // CZ_REQNAME
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+packetLen(0x00a7, 9)
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 9) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+packetLen(0x00f7, 17) // CZ_REQUEST_TIME
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+packetLen(0x0113, 25) // CZ_USE_SKILL
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 37) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+#if PACKETVER >= 20141231
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20141210
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20141203
+packetLen(0x0202, 6) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20141126
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20141119
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20141105
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20141029
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20141015
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20141008
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140903
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140827
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140813
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140806
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140702
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140625
+packetLen(0x0202, 8) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140611
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+// ignored packet from 2014-06-11hRagexe
+#elif PACKETVER >= 20140605
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140528
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140508
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+// ignored packet from 2014-05-08bRagexe
+#elif PACKETVER >= 20140423
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140416
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140319
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140312
+packetLen(0x0202, 10) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140305
+packetLen(0x0202, 6) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140226
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140219
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140212
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140205
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140115
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140108
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+
+// Packet: 0x022b
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+
+// Packet: 0x022c
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+
+// Packet: 0x022d
+#if PACKETVER >= 20141231
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20141112
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20141105
+packetLen(0x022d, 4) // CZ_COMMAND_MER
+#elif PACKETVER >= 20141029
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20141022
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20141015
+packetLen(0x022d, 8) // CZ_COMMAND_MER
+#elif PACKETVER >= 20141008
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140924
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140917
+packetLen(0x022d, 26) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140903
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140827
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140813
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140806
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140730
+packetLen(0x022d, 10) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140709
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140702
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140611
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+// ignored packet from 2014-06-11hRagexe
+#elif PACKETVER >= 20140514
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140508
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+// ignored packet from 2014-05-08aRagexe
+#elif PACKETVER >= 20140430
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140423
+packetLen(0x022d, 18) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140416
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140212
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140205
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140115
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140108
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#endif
+
+// Packet: 0x022e
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+
+// Packet: 0x022f
+packetLen(0x022f, 5) // ZC_FEED_MER
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+#if PACKETVER >= 20141231
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20141105
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20141029
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20141022
+packetLen(0x023b, 10) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20141015
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20141008
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140903
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140827
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140813
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140806
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140709
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140702
+packetLen(0x023b, -1) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140625
+packetLen(0x023b, 8) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140611
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+// ignored packet from 2014-06-11hRagexe
+#elif PACKETVER >= 20140508
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+// ignored packet from 2014-05-08bRagexe
+#elif PACKETVER >= 20140430
+packetLen(0x023b, 6) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140423
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140416
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140409
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140402
+packetLen(0x023b, 6) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140319
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140312
+packetLen(0x023b, 8) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140212
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140205
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140115
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140108
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#endif
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+
+// Packet: 0x0275
+packetLen(0x0275, 37) // CH_ENTER2
+
+// Packet: 0x0276
+packetLen(0x0276, -1) // AC_ACCEPT_LOGIN2
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+#if PACKETVER >= 20141231
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20141210
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20141203
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20141105
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20141008
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140917
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140827
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140813
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140806
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140611
+packetLen(0x0281, 4) // CZ_GANGSI_RANK
+// ignored packet from 2014-06-11hRagexe
+// ignored packet from 2014-06-11cRagexe
+#elif PACKETVER >= 20140605
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140528
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140521
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140508
+packetLen(0x0281, 4) // CZ_GANGSI_RANK
+// ignored packet from 2014-05-08bRagexe
+#elif PACKETVER >= 20140423
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140416
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140312
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140305
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140212
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140205
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140129
+packetLen(0x0281, 10) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140115
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140108
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#endif
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+
+// Packet: 0x0288
+packetLen(0x0288, -1) // CZ_PC_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0289
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0296
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0297
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0298
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+
+// Packet: 0x0299
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+
+// Packet: 0x029a
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+
+// Packet: 0x029b
+packetLen(0x029b, 80) // ZC_MER_INIT
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a5
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+
+// Packet: 0x02a6
+packetLen(0x02a6, -1) // ZC_HACKSH_CPX_MSG
+
+// Packet: 0x02a7
+packetLen(0x02a7, -1) // CZ_HACKSH_CPX_MSG
+
+// Packet: 0x02aa
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+
+// Packet: 0x02ab
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+
+// Packet: 0x02ac
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+
+// Packet: 0x02ad
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+
+// Packet: 0x02b0
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+
+// Packet: 0x02b1
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+
+// Packet: 0x02b2
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+
+// Packet: 0x02b3
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+
+// Packet: 0x02b4
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+
+// Packet: 0x02b5
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+
+// Packet: 0x02b6
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+
+// Packet: 0x02b7
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+
+// Packet: 0x02b8
+packetLen(0x02b8, 22) // ZC_ITEM_PICKUP_PARTY
+
+// Packet: 0x02b9
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+
+// Packet: 0x02ba
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+
+// Packet: 0x02bb
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+
+// Packet: 0x02bc
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+
+// Packet: 0x02c1
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+
+// Packet: 0x02c2
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+
+// Packet: 0x02c4
+#if PACKETVER >= 20140730
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20140723
+packetLen(0x02c4, 6) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20140611
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+// ignored packet from 2014-06-11hRagexe
+#elif PACKETVER >= 20140514
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20140508
+packetLen(0x02c4, 90) // CZ_PARTY_JOIN_REQ
+// ignored packet from 2014-05-08aRagexe
+#elif PACKETVER >= 20140326
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20140319
+packetLen(0x02c4, 6) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20140108
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#endif
+
+// Packet: 0x02c5
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c6
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+
+// Packet: 0x02c7
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c8
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+
+// Packet: 0x02c9
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+
+// Packet: 0x02ca
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+
+// Packet: 0x02cb
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+
+// Packet: 0x02cc
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+
+// Packet: 0x02cd
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+
+// Packet: 0x02ce
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+
+// Packet: 0x02cf
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+
+// Packet: 0x02d0
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d1
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d2
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d3
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+
+// Packet: 0x02d4
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+
+// Packet: 0x02d5
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+
+// Packet: 0x02d6
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d7
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d8
+packetLen(0x02d8, 10) // CZ_CONFIG
+
+// Packet: 0x02d9
+packetLen(0x02d9, 10) // ZC_CONFIG
+
+// Packet: 0x02da
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+
+// Packet: 0x02db
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+
+// Packet: 0x02dc
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+
+// Packet: 0x02dd
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+
+// Packet: 0x02de
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+
+// Packet: 0x02df
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+
+// Packet: 0x02e0
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+
+// Packet: 0x02e1
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+
+// Packet: 0x02e2
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+
+// Packet: 0x02e3
+packetLen(0x02e3, 22) // CZ_USE_SKILL_NEW_JAPEN
+
+// Packet: 0x02e4
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+
+// Packet: 0x02e5
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+
+// Packet: 0x02e6
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+
+// Packet: 0x02e7
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+
+// Packet: 0x02e8
+packetLen(0x02e8, -1) // ZC_NORMAL_ITEMLIST3
+
+// Packet: 0x02e9
+packetLen(0x02e9, -1) // ZC_CART_NORMAL_ITEMLIST3
+
+// Packet: 0x02ea
+packetLen(0x02ea, -1) // ZC_STORE_NORMAL_ITEMLIST3
+
+// Packet: 0x02eb
+packetLen(0x02eb, 13) // ZC_ACCEPT_ENTER2
+
+// Packet: 0x02ec
+packetLen(0x02ec, 67) // ZC_NOTIFY_MOVEENTRY4
+
+// Packet: 0x02ed
+packetLen(0x02ed, 59) // ZC_NOTIFY_NEWENTRY4
+
+// Packet: 0x02ee
+packetLen(0x02ee, 60) // ZC_NOTIFY_STANDENTRY4
+
+// Packet: 0x02ef
+packetLen(0x02ef, 8) // ZC_NOTIFY_FONT
+
+// Packet: 0x02f0
+packetLen(0x02f0, 10) // ZC_PROGRESS
+
+// Packet: 0x02f1
+packetLen(0x02f1, 2) // CZ_PROGRESS
+
+// Packet: 0x02f2
+packetLen(0x02f2, 2) // ZC_PROGRESS_CANCEL
+
+// Packet: 0x02f3
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+
+// Packet: 0x02f4
+packetLen(0x02f4, 3) // ZC_IRMAIL_SEND_RES
+
+// Packet: 0x02f5
+packetLen(0x02f5, 7) // ZC_IRMAIL_NOTIFY
+
+// Packet: 0x02f6
+packetLen(0x02f6, 7) // CZ_IRMAIL_LIST
+
+// Packet: 0x035c
+packetLen(0x035c, 2) // CZ_OPEN_SIMPLE_CASHSHOP_ITEMLIST
+
+// Packet: 0x035d
+packetLen(0x035d, -1) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+
+// Packet: 0x035e
+packetLen(0x035e, 2) // CZ_CLOSE_WINDOW
+
+// Packet: 0x035f
+#if PACKETVER >= 20141231
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20141217
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20141210
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20141203
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20141126
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20141112
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20141105
+packetLen(0x035f, 10) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20141001
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140917
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140827
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140820
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140806
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140709
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140702
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140611
+packetLen(0x035f, 5) // CZ_REQUEST_MOVE2
+// ignored packet from 2014-06-11hRagexe
+// ignored packet from 2014-06-11cRagexe
+#elif PACKETVER >= 20140605
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140528
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140521
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140514
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140508
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+// ignored packet from 2014-05-08aRagexe
+#elif PACKETVER >= 20140430
+packetLen(0x035f, 36) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140423
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140416
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140312
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140226
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140212
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140129
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140122
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140108
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#endif
+
+// Packet: 0x0360
+#if PACKETVER >= 20141231
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20141224
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20141217
+packetLen(0x0360, 8) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20141210
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20141203
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20141126
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20141112
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20141105
+packetLen(0x0360, -1) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20141001
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140917
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140827
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140820
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140806
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140709
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140702
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140611
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+// ignored packet from 2014-06-11hRagexe
+// ignored packet from 2014-06-11cRagexe
+#elif PACKETVER >= 20140605
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140528
+packetLen(0x0360, 36) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140521
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140514
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140430
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140423
+packetLen(0x0360, 36) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140416
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140409
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140402
+packetLen(0x0360, 5) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140312
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140226
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140219
+packetLen(0x0360, 4) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140212
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140129
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140122
+packetLen(0x0360, 7) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140108
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#endif
+
+// Packet: 0x0361
+#if PACKETVER >= 20141231
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20141224
+packetLen(0x0361, 8) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20141105
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20141029
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20141015
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20141008
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20141001
+packetLen(0x0361, 6) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20140903
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20140827
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20140813
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20140806
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20140611
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+// ignored packet from 2014-06-11hRagexe
+#elif PACKETVER >= 20140514
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20140508
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20140423
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20140416
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20140312
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20140226
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20140212
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20140205
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20140129
+packetLen(0x0361, 8) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20140122
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20140115
+packetLen(0x0361, 6) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20140108
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#endif
+
+// Packet: 0x0362
+#if PACKETVER >= 20141231
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20141210
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20141203
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20141119
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20141112
+packetLen(0x0362, 26) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20141105
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20141029
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20141022
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20141008
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140917
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140827
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140813
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140806
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140723
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140716
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140611
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+// ignored packet from 2014-06-11hRagexe
+// ignored packet from 2014-06-11cRagexe
+#elif PACKETVER >= 20140605
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140528
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140521
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140508
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+// ignored packet from 2014-05-08bRagexe
+#elif PACKETVER >= 20140423
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140416
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140402
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140326
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140312
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140305
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140226
+packetLen(0x0362, 26) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140212
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140205
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140115
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140108
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#endif
+
+// Packet: 0x0363
+#if PACKETVER >= 20141231
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20141105
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20141029
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20141022
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20141008
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140917
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140827
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140813
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140806
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140611
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+// ignored packet from 2014-06-11hRagexe
+// ignored packet from 2014-06-11cRagexe
+#elif PACKETVER >= 20140605
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140528
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140521
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140508
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+// ignored packet from 2014-05-08bRagexe
+#elif PACKETVER >= 20140430
+packetLen(0x0363, 10) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140423
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140416
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140312
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140305
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140212
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140205
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140115
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140108
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#endif
+
+// Packet: 0x0364
+#if PACKETVER >= 20141231
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20141105
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20141029
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20141022
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20141015
+packetLen(0x0364, 5) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20141008
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140917
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140827
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140813
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140806
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140730
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140723
+packetLen(0x0364, 36) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140716
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140702
+packetLen(0x0364, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140611
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+// ignored packet from 2014-06-11hRagexe
+// ignored packet from 2014-06-11cRagexe
+#elif PACKETVER >= 20140605
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140528
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140521
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140508
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+// ignored packet from 2014-05-08bRagexe
+#elif PACKETVER >= 20140423
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140416
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140409
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140402
+packetLen(0x0364, 10) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140312
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140305
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140226
+packetLen(0x0364, 36) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140219
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140212
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140205
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140115
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140108
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#endif
+
+// Packet: 0x0365
+#if PACKETVER >= 20141231
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20141105
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20141029
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20141022
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20141008
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20141001
+packetLen(0x0365, 12) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140924
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140917
+packetLen(0x0365, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140827
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140820
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140813
+packetLen(0x0365, 36) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140806
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140611
+packetLen(0x0365, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+// ignored packet from 2014-06-11hRagexe
+// ignored packet from 2014-06-11cRagexe
+#elif PACKETVER >= 20140605
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140528
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140521
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140508
+packetLen(0x0365, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+// ignored packet from 2014-05-08bRagexe
+#elif PACKETVER >= 20140423
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140416
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140402
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140326
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140312
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140305
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140212
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140205
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140115
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140108
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#endif
+
+// Packet: 0x0366
+#if PACKETVER >= 20141231
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20141217
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20141210
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20141203
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20141126
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20141105
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20141001
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140924
+packetLen(0x0366, 10) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140917
+packetLen(0x0366, 19) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140827
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140820
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140806
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140730
+packetLen(0x0366, 10) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140709
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140702
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140611
+packetLen(0x0366, 10) // CZ_USE_SKILL_TOGROUND2
+// ignored packet from 2014-06-11hRagexe
+// ignored packet from 2014-06-11cRagexe
+#elif PACKETVER >= 20140605
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140528
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140521
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140514
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140508
+packetLen(0x0366, 26) // CZ_USE_SKILL_TOGROUND2
+// ignored packet from 2014-05-08aRagexe
+#elif PACKETVER >= 20140430
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140423
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140416
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140319
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140312
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140226
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140212
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140129
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140122
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140108
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#endif
+
+// Packet: 0x0367
+#if PACKETVER >= 20141210
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20141203
+packetLen(0x0367, 6) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20141126
+packetLen(0x0367, 8) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20141001
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20140924
+packetLen(0x0367, 26) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20140917
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20140806
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20140730
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20140611
+packetLen(0x0367, 90) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+// ignored packet from 2014-06-11hRagexe
+#elif PACKETVER >= 20140508
+packetLen(0x0367, 90) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+// ignored packet from 2014-05-08bRagexe
+#elif PACKETVER >= 20140205
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20140129
+packetLen(0x0367, 6) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20140122
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20140115
+packetLen(0x0367, 8) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20140108
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#endif
+
+// Packet: 0x0368
+#if PACKETVER >= 20141231
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20141217
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20141210
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20141203
+packetLen(0x0368, 8) // CZ_REQNAME2
+#elif PACKETVER >= 20141126
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20141105
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20141001
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20140917
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20140827
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20140820
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20140806
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20140730
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20140723
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20140709
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20140702
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20140611
+packetLen(0x0368, 6) // CZ_REQNAME2
+// ignored packet from 2014-06-11hRagexe
+// ignored packet from 2014-06-11cRagexe
+#elif PACKETVER >= 20140605
+packetLen(0x0368, 7) // CZ_REQNAME2
+#elif PACKETVER >= 20140528
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20140521
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20140514
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20140508
+packetLen(0x0368, 6) // CZ_REQNAME2
+// ignored packet from 2014-05-08bRagexe
+#elif PACKETVER >= 20140423
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20140416
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20140312
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20140226
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20140212
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20140129
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20140122
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20140108
+packetLen(0x0368, 6) // CZ_REQNAME2
+#endif
+
+// Packet: 0x0369
+#if PACKETVER >= 20141231
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20141217
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20141210
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20141203
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20141126
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20141105
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20141029
+packetLen(0x0369, 5) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20141001
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140924
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140917
+packetLen(0x0369, 6) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140827
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140820
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140806
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140709
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140702
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140611
+packetLen(0x0369, 6) // CZ_REQNAME_BYGID2
+// ignored packet from 2014-06-11hRagexe
+// ignored packet from 2014-06-11cRagexe
+#elif PACKETVER >= 20140605
+packetLen(0x0369, 19) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140528
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140521
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140514
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140508
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+// ignored packet from 2014-05-08aRagexe
+#elif PACKETVER >= 20140430
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140423
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140416
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140312
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140226
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140219
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140212
+packetLen(0x0369, 18) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140129
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140122
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140108
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#endif
+
+// Packet: 0x03dd
+packetLen(0x03dd, 18) // AHC_GAME_GUARD
+
+// Packet: 0x03de
+packetLen(0x03de, 18) // CAH_ACK_GAME_GUARD
+
+// Packet: 0x0436
+#if PACKETVER >= 20141231
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20141217
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20141210
+packetLen(0x0436, 5) // CZ_ENTER2
+#elif PACKETVER >= 20141105
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20141029
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20141015
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20141008
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20140903
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20140827
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20140813
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20140806
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20140730
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20140723
+packetLen(0x0436, 12) // CZ_ENTER2
+#elif PACKETVER >= 20140611
+packetLen(0x0436, 19) // CZ_ENTER2
+// ignored packet from 2014-06-11hRagexe
+// ignored packet from 2014-06-11cRagexe
+#elif PACKETVER >= 20140605
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20140508
+packetLen(0x0436, 19) // CZ_ENTER2
+// ignored packet from 2014-05-08bRagexe
+#elif PACKETVER >= 20140430
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20140423
+packetLen(0x0436, 26) // CZ_ENTER2
+#elif PACKETVER >= 20140416
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20140312
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20140305
+packetLen(0x0436, 10) // CZ_ENTER2
+#elif PACKETVER >= 20140212
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20140205
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20140115
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20140108
+packetLen(0x0436, 4) // CZ_ENTER2
+#endif
+
+// Packet: 0x0437
+#if PACKETVER >= 20141231
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20141217
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20141210
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20141203
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20141126
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20141105
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20141029
+packetLen(0x0437, 36) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20141001
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140917
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140827
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140820
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140806
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140730
+packetLen(0x0437, 19) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140716
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140709
+packetLen(0x0437, 7) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140702
+packetLen(0x0437, 26) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140611
+packetLen(0x0437, 7) // CZ_REQUEST_ACT2
+// ignored packet from 2014-06-11hRagexe
+// ignored packet from 2014-06-11cRagexe
+#elif PACKETVER >= 20140605
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140528
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140521
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140514
+packetLen(0x0437, 12) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140508
+packetLen(0x0437, 7) // CZ_REQUEST_ACT2
+// ignored packet from 2014-05-08bRagexe
+#elif PACKETVER >= 20140430
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140423
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140416
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140312
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140226
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140212
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140129
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140122
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140108
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#endif
+
+// Packet: 0x0438
+#if PACKETVER >= 20141231
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20141224
+packetLen(0x0438, 26) // CZ_USE_SKILL2
+#elif PACKETVER >= 20141217
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20141210
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20141203
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20141126
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20141119
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20141112
+packetLen(0x0438, 6) // CZ_USE_SKILL2
+#elif PACKETVER >= 20141105
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20141029
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20141022
+packetLen(0x0438, 36) // CZ_USE_SKILL2
+#elif PACKETVER >= 20141001
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140917
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140827
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140820
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140806
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140709
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140702
+packetLen(0x0438, 8) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140618
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140611
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+// ignored packet from 2014-06-11hRagexe
+// ignored packet from 2014-06-11cRagexe
+#elif PACKETVER >= 20140605
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140528
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140521
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140514
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140430
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140423
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140416
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140312
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140305
+packetLen(0x0438, 19) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140226
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140219
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140212
+packetLen(0x0438, 90) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140129
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140122
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140108
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#endif
+
+// Packet: 0x0439
+packetLen(0x0439, 8) // CZ_USE_ITEM2
+
+// Packet: 0x043d
+packetLen(0x043d, 8) // ZC_SKILL_POSTDELAY
+
+// Packet: 0x043e
+packetLen(0x043e, -1) // ZC_SKILL_POSTDELAY_LIST
+
+// Packet: 0x043f
+packetLen(0x043f, 25) // ZC_MSG_STATE_CHANGE2
+
+// Packet: 0x0440
+packetLen(0x0440, 10) // ZC_MILLENNIUMSHIELD
+
+// Packet: 0x0441
+packetLen(0x0441, 4) // ZC_SKILLINFO_DELETE
+
+// Packet: 0x0442
+packetLen(0x0442, -1) // ZC_SKILL_SELECT_REQUEST
+
+// Packet: 0x0443
+packetLen(0x0443, 8) // CZ_SKILL_SELECT_RESPONSE
+
+// Packet: 0x0444
+packetLen(0x0444, -1) // ZC_SIMPLE_CASH_POINT_ITEMLIST
+
+// Packet: 0x0445
+packetLen(0x0445, 10) // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0446
+packetLen(0x0446, 14) // ZC_QUEST_NOTIFY_EFFECT
+
+// Packet: 0x0447
+packetLen(0x0447, 2) // CZ_BLOCKING_PLAY_CANCEL
+
+// Packet: 0x0448
+packetLen(0x0448, -1) // HC_CHARACTER_LIST
+
+// Packet: 0x0449
+packetLen(0x0449, 4) // ZC_HACKSH_ERROR_MSG
+
+// Packet: 0x044a
+packetLen(0x044a, 6) // CZ_CLIENT_VERSION
+
+// Packet: 0x044b
+packetLen(0x044b, 2) // CZ_CLOSE_SIMPLECASH_SHOP
+
+// Packet: 0x07d7
+packetLen(0x07d7, 8) // CZ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d8
+packetLen(0x07d8, 8) // ZC_REQ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d9
+packetLen(0x07d9, 268) // ZC_SHORTCUT_KEY_LIST_V2
+
+// Packet: 0x07da
+packetLen(0x07da, 6) // CZ_CHANGE_GROUP_MASTER
+
+// Packet: 0x07db
+packetLen(0x07db, 8) // ZC_HO_PAR_CHANGE
+
+// Packet: 0x07dc
+packetLen(0x07dc, 6) // CZ_SEEK_PARTY
+
+// Packet: 0x07dd
+packetLen(0x07dd, 54) // ZC_SEEK_PARTY
+
+// Packet: 0x07de
+packetLen(0x07de, 30) // CZ_SEEK_PARTY_MEMBER
+
+// Packet: 0x07df
+packetLen(0x07df, 54) // ZC_SEEK_PARTY_MEMBER
+
+// Packet: 0x07e0
+packetLen(0x07e0, 58) // ZC_ES_NOTI_MYINFO
+
+// Packet: 0x07e1
+packetLen(0x07e1, 15) // ZC_SKILLINFO_UPDATE2
+
+// Packet: 0x07e2
+packetLen(0x07e2, 8) // ZC_MSG_VALUE
+
+// Packet: 0x07e3
+packetLen(0x07e3, 6) // ZC_ITEMLISTWIN_OPEN
+
+// Packet: 0x07e4
+#if PACKETVER >= 20141231
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20141217
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20141210
+packetLen(0x07e4, 5) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20141105
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20141029
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20141022
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20141008
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20141001
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140924
+packetLen(0x07e4, 36) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140917
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140820
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140813
+packetLen(0x07e4, -1) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140806
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140723
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140716
+packetLen(0x07e4, 36) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140709
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140702
+packetLen(0x07e4, 10) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140618
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140611
+packetLen(0x07e4, 8) // CZ_ITEMLISTWIN_RES
+// ignored packet from 2014-06-11cRagexe
+// ignored packet from 2014-06-11eRagexe
+#elif PACKETVER >= 20140605
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140528
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140521
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140514
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140508
+packetLen(0x07e4, 5) // CZ_ITEMLISTWIN_RES
+// ignored packet from 2014-05-08aRagexe
+#elif PACKETVER >= 20140430
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140416
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140326
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140319
+packetLen(0x07e4, -1) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140312
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140305
+packetLen(0x07e4, 26) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140212
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140205
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140115
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140108
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#endif
+
+// Packet: 0x07e5
+packetLen(0x07e5, 4) // CH_ENTER_CHECKBOT
+
+// Packet: 0x07e6
+packetLen(0x07e6, 8) // ZC_MSG_SKILL
+
+// Packet: 0x07e7
+packetLen(0x07e7, 32) // CH_CHECKBOT
+
+// Packet: 0x07e8
+packetLen(0x07e8, -1) // HC_CHECKBOT
+
+// Packet: 0x07e9
+packetLen(0x07e9, 5) // HC_CHECKBOT_RESULT
+
+// Packet: 0x07ea
+packetLen(0x07ea, 2) // CZ_BATTLE_FIELD_LIST
+
+// Packet: 0x07eb
+packetLen(0x07eb, -1) // ZC_BATTLE_FIELD_LIST
+
+// Packet: 0x07ec
+#if PACKETVER >= 20141231
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20141105
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20141029
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20141022
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20141008
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140917
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140827
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140813
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140806
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140730
+packetLen(0x07ec, 4) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140611
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+// ignored packet from 2014-06-11hRagexe
+// ignored packet from 2014-06-11cRagexe
+#elif PACKETVER >= 20140605
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140528
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140521
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140508
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+// ignored packet from 2014-05-08bRagexe
+#elif PACKETVER >= 20140423
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140416
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140409
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140326
+packetLen(0x07ec, 6) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140312
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140305
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140212
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140205
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140129
+packetLen(0x07ec, 5) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140122
+packetLen(0x07ec, 6) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140115
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140108
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#endif
+
+// Packet: 0x07ed
+packetLen(0x07ed, 10) // ZC_JOIN_BATTLE_FIELD
+
+// Packet: 0x07ee
+packetLen(0x07ee, 6) // CZ_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07ef
+packetLen(0x07ef, 8) // ZC_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07f0
+packetLen(0x07f0, 6) // CZ_REQ_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f1
+packetLen(0x07f1, 18) // ZC_ACK_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f2
+packetLen(0x07f2, 8) // ZC_BATTLE_NOTI_START_STEP
+
+// Packet: 0x07f3
+packetLen(0x07f3, 6) // ZC_BATTLE_JOIN_NOTI_DEFER
+
+// Packet: 0x07f4
+packetLen(0x07f4, 3) // ZC_BATTLE_JOIN_DISABLE_STATE
+
+// Packet: 0x07f5
+packetLen(0x07f5, 6) // CZ_GM_FULLSTRIP
+
+// Packet: 0x07f6
+packetLen(0x07f6, 14) // ZC_NOTIFY_EXP
+
+// Packet: 0x07f7
+packetLen(0x07f7, -1) // ZC_NOTIFY_MOVEENTRY7
+
+// Packet: 0x07f8
+packetLen(0x07f8, -1) // ZC_NOTIFY_NEWENTRY5
+
+// Packet: 0x07f9
+packetLen(0x07f9, -1) // ZC_NOTIFY_STANDENTRY5
+
+// Packet: 0x07fa
+packetLen(0x07fa, 8) // ZC_DELETE_ITEM_FROM_BODY
+
+// Packet: 0x07fb
+packetLen(0x07fb, 25) // ZC_USESKILL_ACK2
+
+// Packet: 0x07fc
+packetLen(0x07fc, 10) // ZC_CHANGE_GROUP_MASTER
+
+// Packet: 0x07fd
+packetLen(0x07fd, -1) // ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN
+
+// Packet: 0x07fe
+packetLen(0x07fe, 26) // ZC_PLAY_NPC_BGM
+
+// Packet: 0x0800
+packetLen(0x0800, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0801
+packetLen(0x0801, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0802
+#if PACKETVER >= 20141231
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20141210
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20141203
+packetLen(0x0802, 19) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20141126
+packetLen(0x0802, -1) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20141105
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20141029
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20141022
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20141008
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20141001
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140924
+packetLen(0x0802, 18) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140917
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140827
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140820
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140813
+packetLen(0x0802, 19) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140806
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140730
+packetLen(0x0802, 8) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140611
+packetLen(0x0802, 18) // CZ_PARTY_BOOKING_REQ_REGISTER
+// ignored packet from 2014-06-11hRagexe
+// ignored packet from 2014-06-11cRagexe
+#elif PACKETVER >= 20140605
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140528
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140521
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140514
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140508
+packetLen(0x0802, 18) // CZ_PARTY_BOOKING_REQ_REGISTER
+// ignored packet from 2014-05-08bRagexe
+#elif PACKETVER >= 20140423
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140416
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140312
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140305
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140226
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140219
+packetLen(0x0802, 6) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140212
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140205
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140129
+packetLen(0x0802, 19) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140122
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140115
+packetLen(0x0802, 6) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140108
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// Packet: 0x0803
+packetLen(0x0803, 4) // ZC_PARTY_BOOKING_ACK_REGISTER
+
+// Packet: 0x0804
+packetLen(0x0804, 14) // CZ_PARTY_BOOKING_REQ_SEARCH
+
+// Packet: 0x0805
+packetLen(0x0805, -1) // ZC_PARTY_BOOKING_ACK_SEARCH
+
+// Packet: 0x0806
+packetLen(0x0806, 2) // CZ_PARTY_BOOKING_REQ_DELETE
+
+// Packet: 0x0807
+packetLen(0x0807, 4) // ZC_PARTY_BOOKING_ACK_DELETE
+
+// Packet: 0x0808
+packetLen(0x0808, 14) // CZ_PARTY_BOOKING_REQ_UPDATE
+
+// Packet: 0x0809
+packetLen(0x0809, 50) // ZC_PARTY_BOOKING_NOTIFY_INSERT
+
+// Packet: 0x080a
+packetLen(0x080a, 18) // ZC_PARTY_BOOKING_NOTIFY_UPDATE
+
+// Packet: 0x080b
+packetLen(0x080b, 6) // ZC_PARTY_BOOKING_NOTIFY_DELETE
+
+// Packet: 0x080c
+packetLen(0x080c, 2) // CZ_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080d
+packetLen(0x080d, 3) // ZC_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080e
+packetLen(0x080e, 14) // ZC_NOTIFY_HP_TO_GROUPM_R2
+
+// Packet: 0x080f
+packetLen(0x080f, 20) // ZC_ADD_EXCHANGE_ITEM2
+
+// Packet: 0x0810
+packetLen(0x0810, 3) // ZC_OPEN_BUYING_STORE
+
+// Packet: 0x0811
+#if PACKETVER >= 20141231
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20141203
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20141126
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20141105
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20141001
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140917
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140827
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140820
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140806
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140723
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140716
+packetLen(0x0811, 7) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140709
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140702
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140611
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+// ignored packet from 2014-06-11cRagexe
+// ignored packet from 2014-06-11eRagexe
+#elif PACKETVER >= 20140605
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140528
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140521
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140514
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140430
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140423
+packetLen(0x0811, 8) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140416
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140326
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140319
+packetLen(0x0811, 6) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140312
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140305
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140226
+packetLen(0x0811, 5) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140212
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140129
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140115
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140108
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#endif
+
+// Packet: 0x0812
+packetLen(0x0812, 8) // ZC_FAILED_OPEN_BUYING_STORE_TO_BUYER
+
+// Packet: 0x0813
+packetLen(0x0813, -1) // ZC_MYITEMLIST_BUYING_STORE
+
+// Packet: 0x0814
+packetLen(0x0814, 86) // ZC_BUYING_STORE_ENTRY
+
+// Packet: 0x0815
+#if PACKETVER >= 20141231
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20141217
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20141210
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20141203
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20141126
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20141105
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20141001
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140924
+packetLen(0x0815, 5) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140917
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140827
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140820
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140806
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140730
+packetLen(0x0815, 26) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140709
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140702
+packetLen(0x0815, 36) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140625
+packetLen(0x0815, 4) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140611
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140605
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140528
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140521
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140514
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140508
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+// ignored packet from 2014-05-08bRagexe
+#elif PACKETVER >= 20140430
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140423
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140416
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140326
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140319
+packetLen(0x0815, 5) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140312
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140305
+packetLen(0x0815, 5) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140226
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140212
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140129
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140122
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140108
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#endif
+
+// Packet: 0x0816
+packetLen(0x0816, 6) // ZC_DISAPPEAR_BUYING_STORE_ENTRY
+
+// Packet: 0x0817
+#if PACKETVER >= 20140806
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20140730
+packetLen(0x0817, 7) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20140702
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20140625
+packetLen(0x0817, -1) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20140611
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+// ignored packet from 2014-06-11hRagexe
+// ignored packet from 2014-06-11cRagexe
+#elif PACKETVER >= 20140605
+packetLen(0x0817, 5) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20140521
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20140514
+packetLen(0x0817, 4) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20140508
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+// ignored packet from 2014-05-08bRagexe
+#elif PACKETVER >= 20140108
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#endif
+
+// Packet: 0x0818
+packetLen(0x0818, -1) // ZC_ACK_ITEMLIST_BUYING_STORE
+
+// Packet: 0x0819
+#if PACKETVER >= 20141231
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20141217
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20141210
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20141203
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20141126
+packetLen(0x0819, 18) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20141105
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20141001
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140917
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140827
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140820
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140806
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140730
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140723
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140709
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140702
+packetLen(0x0819, 5) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140611
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+// ignored packet from 2014-06-11cRagexe
+// ignored packet from 2014-06-11eRagexe
+#elif PACKETVER >= 20140605
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140528
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140521
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140514
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140430
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140423
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140416
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140409
+packetLen(0x0819, 8) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140312
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140219
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140212
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140129
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140122
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140108
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#endif
+
+// Packet: 0x081a
+packetLen(0x081a, 4) // ZC_FAILED_TRADE_BUYING_STORE_TO_BUYER
+
+// Packet: 0x081b
+packetLen(0x081b, 10) // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+
+// Packet: 0x081c
+packetLen(0x081c, 10) // ZC_ITEM_DELETE_BUYING_STORE
+
+// Packet: 0x081d
+packetLen(0x081d, 22) // ZC_EL_INIT
+
+// Packet: 0x081e
+packetLen(0x081e, 8) // ZC_EL_PAR_CHANGE
+
+// Packet: 0x081f
+packetLen(0x081f, -1) // ZC_BROADCAST4
+
+// Packet: 0x0820
+packetLen(0x0820, 11) // ZC_COSTUME_SPRITE_CHANGE
+
+// Packet: 0x0821
+packetLen(0x0821, 2) // AC_OTP_USER
+
+// Packet: 0x0822
+packetLen(0x0822, 9) // CA_OTP_AUTH_REQ
+
+// Packet: 0x0823
+packetLen(0x0823, -1) // AC_OTP_AUTH_ACK
+
+// Packet: 0x0824
+packetLen(0x0824, 6) // ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER
+
+// Packet: 0x0825
+packetLen(0x0825, -1) // CA_SSO_LOGIN_REQ
+
+// Packet: 0x0827
+packetLen(0x0827, 6) // CH_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0828
+packetLen(0x0828, 14) // HC_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0829
+packetLen(0x0829, 12) // CH_DELETE_CHAR3
+
+// Packet: 0x082a
+packetLen(0x082a, 10) // HC_DELETE_CHAR3
+
+// Packet: 0x082b
+packetLen(0x082b, 6) // CH_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082c
+packetLen(0x082c, 10) // HC_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082d
+packetLen(0x082d, -1) // HC_ACCEPT_ENTER2
+
+// Packet: 0x0835
+#if PACKETVER >= 20141231
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20141224
+packetLen(0x0835, -1) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20141119
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20141112
+packetLen(0x0835, -1) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20141029
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20141022
+packetLen(0x0835, 12) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20140827
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20140820
+packetLen(0x0835, 5) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20140709
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20140702
+packetLen(0x0835, 12) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20140625
+packetLen(0x0835, 5) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20140611
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+// ignored packet from 2014-06-11eRagexe
+#elif PACKETVER >= 20140508
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+// ignored packet from 2014-05-08aRagexe
+#elif PACKETVER >= 20140108
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#endif
+
+// Packet: 0x0836
+packetLen(0x0836, -1) // ZC_SEARCH_STORE_INFO_ACK
+
+// Packet: 0x0837
+packetLen(0x0837, 3) // ZC_SEARCH_STORE_INFO_FAILED
+
+// Packet: 0x0838
+#if PACKETVER >= 20141231
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20141217
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20141210
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20141203
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20141126
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20141105
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20141029
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20141022
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20141008
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20141001
+packetLen(0x0838, 8) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140924
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140917
+packetLen(0x0838, -1) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140827
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140820
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140806
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140730
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140723
+packetLen(0x0838, 10) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140618
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140611
+packetLen(0x0838, 90) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+// ignored packet from 2014-06-11cRagexe
+// ignored packet from 2014-06-11eRagexe
+#elif PACKETVER >= 20140605
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140528
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140521
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140514
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140508
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+// ignored packet from 2014-05-08aRagexe
+#elif PACKETVER >= 20140430
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140423
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140416
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140312
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140305
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140226
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140219
+packetLen(0x0838, 10) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140212
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140129
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140122
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140108
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#endif
+
+// Packet: 0x0839
+packetLen(0x0839, 66) // ZC_ACK_BAN_GUILD_SSO
+
+// Packet: 0x083a
+packetLen(0x083a, 5) // ZC_OPEN_SEARCH_STORE_INFO
+
+// Packet: 0x083b
+packetLen(0x083b, 2) // CZ_CLOSE_SEARCH_STORE_INFO
+
+// Packet: 0x083c
+#if PACKETVER >= 20141231
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20141217
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20141210
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20141203
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20141126
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20141119
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20141112
+packetLen(0x083c, 8) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20141105
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20141001
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140917
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140827
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140820
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140806
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140709
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140702
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140611
+packetLen(0x083c, 12) // CZ_SSILIST_ITEM_CLICK
+// ignored packet from 2014-06-11hRagexe
+// ignored packet from 2014-06-11cRagexe
+#elif PACKETVER >= 20140605
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140528
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140521
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140514
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140508
+packetLen(0x083c, 12) // CZ_SSILIST_ITEM_CLICK
+// ignored packet from 2014-05-08bRagexe
+#elif PACKETVER >= 20140430
+packetLen(0x083c, 6) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140423
+packetLen(0x083c, 5) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140416
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140402
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140326
+packetLen(0x083c, 6) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140312
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140226
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140212
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140205
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140129
+packetLen(0x083c, 4) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140122
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140108
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#endif
+
+// Packet: 0x083d
+packetLen(0x083d, 6) // ZC_SSILIST_ITEM_CLICK_ACK
+
+// Packet: 0x083e
+packetLen(0x083e, 26) // AC_REFUSE_LOGIN2
+
+// Packet: 0x0840
+packetLen(0x0840, -1) // HC_NOTIFY_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0841
+packetLen(0x0841, 4) // CH_SELECT_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0842
+packetLen(0x0842, 6) // CZ_RECALL_SSO
+
+// Packet: 0x0843
+packetLen(0x0843, 6) // CZ_REMOVE_AID_SSO
+
+// Packet: 0x0844
+packetLen(0x0844, 2) // CZ_SE_CASHSHOP_OPEN
+
+// Packet: 0x0845
+packetLen(0x0845, 10) // ZC_SE_CASHSHOP_OPEN
+
+// Packet: 0x0846
+packetLen(0x0846, 4) // CZ_REQ_SE_CASH_TAB_CODE
+
+// Packet: 0x0847
+packetLen(0x0847, -1) // ZC_ACK_SE_CASH_ITEM_LIST
+
+// Packet: 0x0848
+packetLen(0x0848, -1) // CZ_SE_PC_BUY_CASHITEM_LIST
+
+// Packet: 0x0849
+packetLen(0x0849, 16) // ZC_SE_PC_BUY_CASHITEM_RESULT
+
+// Packet: 0x084a
+packetLen(0x084a, 2) // CZ_SE_CASHSHOP_CLOSE
+
+// Packet: 0x084b
+packetLen(0x084b, 19) // ZC_ITEM_FALL_ENTRY4
+
+// Packet: 0x084c
+packetLen(0x084c, 10) // CZ_MACRO_USE_SKILL
+
+// Packet: 0x084d
+packetLen(0x084d, 10) // CZ_MACRO_USE_SKILL_TOGROUND
+
+// Packet: 0x084e
+packetLen(0x084e, 5) // CZ_MACRO_REQUEST_MOVE
+
+// Packet: 0x084f
+packetLen(0x084f, 6) // CZ_MACRO_ITEM_PICKUP
+
+// Packet: 0x0850
+packetLen(0x0850, 7) // CZ_MACRO_REQUEST_ACT
+
+// Packet: 0x0851
+packetLen(0x0851, -1) // ZC_GPK_DYNCODE
+
+// Packet: 0x0852
+packetLen(0x0852, 2) // CZ_GPK_DYNCODE_RELOAD
+
+// Packet: 0x0853
+packetLen(0x0853, -1) // ZC_GPK_AUTH
+
+// Packet: 0x0854
+packetLen(0x0854, -1) // CZ_GPK_AUTH
+
+// Packet: 0x0855
+packetLen(0x0855, 6) // ZC_MACRO_ITEMPICKUP_FAIL
+
+// Packet: 0x0856
+packetLen(0x0856, -1) // ZC_NOTIFY_MOVEENTRY8
+
+// Packet: 0x0857
+packetLen(0x0857, -1) // ZC_NOTIFY_STANDENTRY7
+
+// Packet: 0x0858
+packetLen(0x0858, -1) // ZC_NOTIFY_NEWENTRY6
+
+// Packet: 0x0859
+packetLen(0x0859, -1) // ZC_EQUIPWIN_MICROSCOPE2
+
+// Packet: 0x085a
+#if PACKETVER >= 20141231
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20141224
+packetLen(0x085a, -1) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20141126
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20141119
+packetLen(0x085a, 6) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20140709
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20140702
+packetLen(0x085a, 6) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20140625
+packetLen(0x085a, -1) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20140326
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20140319
+packetLen(0x085a, 5) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20140108
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x085b
+#if PACKETVER >= 20140430
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20140423
+packetLen(0x085b, 5) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20140416
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20140409
+packetLen(0x085b, 6) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20140402
+packetLen(0x085b, 8) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20140226
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20140219
+packetLen(0x085b, 6) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20140108
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x085c
+#if PACKETVER >= 20141112
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20141105
+packetLen(0x085c, 10) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20140723
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20140716
+packetLen(0x085c, 6) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20140226
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20140219
+packetLen(0x085c, 10) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20140108
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#endif
+
+// Packet: 0x085d
+#if PACKETVER >= 20140625
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20140618
+packetLen(0x085d, 8) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20140226
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20140219
+packetLen(0x085d, 5) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20140108
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x085e
+#if PACKETVER >= 20140806
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20140730
+packetLen(0x085e, 5) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20140319
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20140312
+packetLen(0x085e, 6) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20140108
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x085f
+#if PACKETVER >= 20141119
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20141112
+packetLen(0x085f, -1) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140730
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140723
+packetLen(0x085f, 5) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140716
+packetLen(0x085f, 19) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140605
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140528
+packetLen(0x085f, 18) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140226
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140219
+packetLen(0x085f, 6) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140108
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x0860
+#if PACKETVER >= 20141224
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20141217
+packetLen(0x0860, 36) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140716
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140709
+packetLen(0x0860, 36) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140625
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140618
+packetLen(0x0860, 6) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140508
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140430
+packetLen(0x0860, 26) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140226
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140219
+packetLen(0x0860, 5) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140108
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x0861
+#if PACKETVER >= 20141210
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20141203
+packetLen(0x0861, 8) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20141126
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20141119
+packetLen(0x0861, 26) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140827
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140820
+packetLen(0x0861, 6) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140702
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140625
+packetLen(0x0861, 10) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140618
+packetLen(0x0861, 90) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140514
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140508
+packetLen(0x0861, 6) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140108
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x0862
+#if PACKETVER >= 20141001
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20140924
+packetLen(0x0862, 4) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20140605
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20140528
+packetLen(0x0862, 6) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20140430
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20140423
+packetLen(0x0862, 8) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20140108
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x0863
+#if PACKETVER >= 20141119
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20141112
+packetLen(0x0863, 10) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20141105
+packetLen(0x0863, 6) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20140430
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20140423
+packetLen(0x0863, -1) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20140129
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20140122
+packetLen(0x0863, 5) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20140108
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x0864
+#if PACKETVER >= 20141112
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20141105
+packetLen(0x0864, 6) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20141001
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140924
+packetLen(0x0864, -1) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140917
+packetLen(0x0864, 6) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140827
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140820
+packetLen(0x0864, 19) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140618
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140611
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+// ignored packet from 2014-06-11hRagexe
+// ignored packet from 2014-06-11cRagexe
+#elif PACKETVER >= 20140326
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140319
+packetLen(0x0864, 7) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140108
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x0865
+#if PACKETVER >= 20141231
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20141224
+packetLen(0x0865, 90) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20141126
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20141119
+packetLen(0x0865, 26) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20141112
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20141105
+packetLen(0x0865, 26) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20141001
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20140924
+packetLen(0x0865, -1) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20140521
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20140514
+packetLen(0x0865, 7) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20140402
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20140319
+packetLen(0x0865, -1) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20140122
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20140115
+packetLen(0x0865, 36) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20140108
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0866
+#if PACKETVER >= 20141126
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20141119
+packetLen(0x0866, -1) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140716
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140709
+packetLen(0x0866, 4) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140430
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140423
+packetLen(0x0866, 19) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140326
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140319
+packetLen(0x0866, 5) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140108
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0867
+#if PACKETVER >= 20141231
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20141224
+packetLen(0x0867, 5) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20141001
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20140924
+packetLen(0x0867, -1) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20140618
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20140611
+packetLen(0x0867, 6) // ZC_REASSEMBLY_AUTH14
+// ignored packet from 2014-06-11cRagexe
+// ignored packet from 2014-06-11eRagexe
+#elif PACKETVER >= 20140521
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20140514
+packetLen(0x0867, -1) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20140402
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20140326
+packetLen(0x0867, 12) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20140305
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20140226
+packetLen(0x0867, 5) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20140108
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0868
+#if PACKETVER >= 20140820
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140813
+packetLen(0x0868, 5) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140723
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140716
+packetLen(0x0868, 26) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140521
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140514
+packetLen(0x0868, -1) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140416
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140409
+packetLen(0x0868, 12) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140402
+packetLen(0x0868, 10) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140226
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140219
+packetLen(0x0868, 36) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140108
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0869
+#if PACKETVER >= 20141119
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20141112
+packetLen(0x0869, 6) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140827
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140820
+packetLen(0x0869, 8) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140730
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140723
+packetLen(0x0869, 8) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140716
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140709
+packetLen(0x0869, 5) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140528
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140521
+packetLen(0x0869, 36) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140402
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140326
+packetLen(0x0869, 18) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140108
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x086a
+#if PACKETVER >= 20140416
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20140409
+packetLen(0x086a, -1) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20140108
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x086b
+#if PACKETVER >= 20140702
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140625
+packetLen(0x086b, 26) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140430
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140423
+packetLen(0x086b, 6) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140402
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140326
+packetLen(0x086b, 8) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140108
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x086c
+#if PACKETVER >= 20141231
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20141224
+packetLen(0x086c, 6) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20141217
+packetLen(0x086c, -1) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20141210
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20141203
+packetLen(0x086c, -1) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20141119
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20141112
+packetLen(0x086c, 18) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140827
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140820
+packetLen(0x086c, -1) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140709
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140702
+packetLen(0x086c, 18) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140625
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140618
+packetLen(0x086c, -1) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140611
+packetLen(0x086c, 4) // ZC_REASSEMBLY_AUTH19
+// ignored packet from 2014-06-11cRagexe
+// ignored packet from 2014-06-11eRagexe
+#elif PACKETVER >= 20140108
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x086d
+#if PACKETVER >= 20141231
+packetLen(0x086d, 36) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20141210
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20141203
+packetLen(0x086d, 8) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20141001
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140924
+packetLen(0x086d, 6) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140917
+packetLen(0x086d, 90) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140730
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140723
+packetLen(0x086d, 90) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140416
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140409
+packetLen(0x086d, -1) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140108
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x086e
+#if PACKETVER >= 20141210
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20141203
+packetLen(0x086e, 6) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20141126
+packetLen(0x086e, 19) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20141022
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20141015
+packetLen(0x086e, 19) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20141001
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140924
+packetLen(0x086e, 5) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140827
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140820
+packetLen(0x086e, 26) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140326
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140319
+packetLen(0x086e, 4) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140219
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140212
+packetLen(0x086e, 10) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140108
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x086f
+#if PACKETVER >= 20140430
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20140423
+packetLen(0x086f, 90) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20140319
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20140312
+packetLen(0x086f, 6) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20140226
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20140219
+packetLen(0x086f, 26) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20140108
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x0870
+#if PACKETVER >= 20141231
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20141224
+packetLen(0x0870, 5) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20140508
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20140430
+packetLen(0x0870, 26) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20140129
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20140122
+packetLen(0x0870, 18) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20140108
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x0871
+#if PACKETVER >= 20141203
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20141126
+packetLen(0x0871, 8) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20141119
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20141112
+packetLen(0x0871, -1) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20141105
+packetLen(0x0871, 36) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140723
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140716
+packetLen(0x0871, 8) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140508
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140430
+packetLen(0x0871, 5) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140129
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140122
+packetLen(0x0871, 19) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140108
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x0872
+#if PACKETVER >= 20141126
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20141119
+packetLen(0x0872, 7)
+#elif PACKETVER >= 20140827
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20140820
+packetLen(0x0872, 90)
+#elif PACKETVER >= 20140605
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20140528
+packetLen(0x0872, 5)
+#elif PACKETVER >= 20140326
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20140319
+packetLen(0x0872, 12)
+#elif PACKETVER >= 20140129
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20140122
+packetLen(0x0872, 26)
+#elif PACKETVER >= 20140108
+packetLen(0x0872, 2)
+#endif
+
+// Packet: 0x0873
+#if PACKETVER >= 20141126
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20141119
+packetLen(0x0873, 10) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20140430
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20140423
+packetLen(0x0873, -1) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20140108
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x0874
+#if PACKETVER >= 20141112
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20141105
+packetLen(0x0874, 8) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20140618
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20140611
+packetLen(0x0874, 26) // ZC_REASSEMBLY_AUTH27
+// ignored packet from 2014-06-11cRagexe
+// ignored packet from 2014-06-11eRagexe
+#elif PACKETVER >= 20140219
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20140212
+packetLen(0x0874, -1) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20140108
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x0875
+#if PACKETVER >= 20141224
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20141217
+packetLen(0x0875, 8) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20141126
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20141119
+packetLen(0x0875, 6) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20141112
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20141105
+packetLen(0x0875, 7) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140716
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140709
+packetLen(0x0875, -1) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140702
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140625
+packetLen(0x0875, 6) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140605
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140528
+packetLen(0x0875, 6) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140508
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140430
+packetLen(0x0875, 8) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140416
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140409
+packetLen(0x0875, -1) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140108
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x0876
+#if PACKETVER >= 20140827
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20140820
+packetLen(0x0876, 6) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20140521
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20140514
+packetLen(0x0876, 10) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20140108
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x0877
+#if PACKETVER >= 20141112
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20141105
+packetLen(0x0877, -1) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140716
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140709
+packetLen(0x0877, 10) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140605
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140528
+packetLen(0x0877, 6) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140521
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140514
+packetLen(0x0877, 8) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140305
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140226
+packetLen(0x0877, 19) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140219
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140212
+packetLen(0x0877, 6) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140108
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x0878
+#if PACKETVER >= 20141224
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20141217
+packetLen(0x0878, 5) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20141029
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20141022
+packetLen(0x0878, 8) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140820
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140813
+packetLen(0x0878, 5) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140625
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140618
+packetLen(0x0878, -1) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140611
+packetLen(0x0878, 6) // ZC_REASSEMBLY_AUTH31
+// ignored packet from 2014-06-11cRagexe
+// ignored packet from 2014-06-11eRagexe
+#elif PACKETVER >= 20140312
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140305
+packetLen(0x0878, 4) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140219
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140212
+packetLen(0x0878, 12) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140108
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x0879
+#if PACKETVER >= 20141224
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20141217
+packetLen(0x0879, 5) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20141112
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20141105
+packetLen(0x0879, 12) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20140716
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20140709
+packetLen(0x0879, 6) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20140605
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20140528
+packetLen(0x0879, 8) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20140108
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x087a
+#if PACKETVER >= 20141231
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20141224
+packetLen(0x087a, 6) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20140108
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x087b
+#if PACKETVER >= 20141231
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20141224
+packetLen(0x087b, 4) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20141217
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20141210
+packetLen(0x087b, 6) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20141203
+packetLen(0x087b, 5) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20140702
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20140625
+packetLen(0x087b, 10) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20140108
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x087c
+#if PACKETVER >= 20141126
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20141119
+packetLen(0x087c, 6) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20141008
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20141001
+packetLen(0x087c, 8) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20140820
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20140813
+packetLen(0x087c, 26) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20140402
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20140326
+packetLen(0x087c, 5) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20140226
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20140219
+packetLen(0x087c, 8) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20140108
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#endif
+
+// Packet: 0x087d
+#if PACKETVER >= 20141029
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20141022
+packetLen(0x087d, 6) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140806
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140730
+packetLen(0x087d, 8) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140723
+packetLen(0x087d, -1) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140625
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140618
+packetLen(0x087d, 6) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140521
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140514
+packetLen(0x087d, -1) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140108
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x087e
+#if PACKETVER >= 20141210
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20141203
+packetLen(0x087e, -1) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20140806
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20140730
+packetLen(0x087e, -1) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20140605
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20140528
+packetLen(0x087e, -1) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20140416
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20140409
+packetLen(0x087e, 6) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20140402
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20140326
+packetLen(0x087e, 26) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20140219
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20140212
+packetLen(0x087e, 5) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20140108
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x087f
+#if PACKETVER >= 20140806
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20140730
+packetLen(0x087f, 6) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20140508
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20140430
+packetLen(0x087f, 6) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20140402
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20140326
+packetLen(0x087f, 10) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20140108
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#endif
+
+// Packet: 0x0880
+#if PACKETVER >= 20141210
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20141203
+packetLen(0x0880, 5) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20140108
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x0881
+#if PACKETVER >= 20140723
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20140716
+packetLen(0x0881, 10) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20140108
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x0882
+#if PACKETVER >= 20140820
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20140813
+packetLen(0x0882, 18) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20140409
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20140402
+packetLen(0x0882, 6) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20140108
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x0883
+#if PACKETVER >= 20141224
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20141217
+packetLen(0x0883, 6) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140416
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140409
+packetLen(0x0883, 5) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140402
+packetLen(0x0883, -1) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140326
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140319
+packetLen(0x0883, 6) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140108
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x0884
+#if PACKETVER >= 20141203
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20141126
+packetLen(0x0884, 4) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20141008
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20141001
+packetLen(0x0884, 26) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20140625
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20140618
+packetLen(0x0884, -1) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20140508
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20140430
+packetLen(0x0884, 18) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20140416
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20140409
+packetLen(0x0884, 6) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20140205
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20140129
+packetLen(0x0884, 5) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20140108
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x0885
+#if PACKETVER >= 20141217
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20141210
+packetLen(0x0885, -1) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20141126
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20141119
+packetLen(0x0885, 4) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20141112
+packetLen(0x0885, 5) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20141008
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20141001
+packetLen(0x0885, 6) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20140702
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20140625
+packetLen(0x0885, 6) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20140618
+packetLen(0x0885, 8) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20140521
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20140514
+packetLen(0x0885, 36) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20140205
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20140129
+packetLen(0x0885, 6) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20140108
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x0886
+#if PACKETVER >= 20141119
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20141112
+packetLen(0x0886, -1) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20141001
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20140924
+packetLen(0x0886, 6) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20140702
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20140625
+packetLen(0x0886, 90) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20140618
+packetLen(0x0886, 18) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20140521
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20140514
+packetLen(0x0886, 6) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20140508
+packetLen(0x0886, 8) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20140108
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#endif
+
+// Packet: 0x0887
+#if PACKETVER >= 20141119
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20141112
+packetLen(0x0887, 26) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20141105
+packetLen(0x0887, 90) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20140716
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20140709
+packetLen(0x0887, 8) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20140702
+packetLen(0x0887, 5) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20140402
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20140326
+packetLen(0x0887, 4) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20140305
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20140226
+packetLen(0x0887, 12) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20140122
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20140115
+packetLen(0x0887, -1) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20140108
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x0888
+#if PACKETVER >= 20141126
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20141119
+packetLen(0x0888, 18) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20140730
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20140723
+packetLen(0x0888, 6) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20140716
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20140709
+packetLen(0x0888, 8) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20140702
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20140625
+packetLen(0x0888, 12) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20140219
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20140212
+packetLen(0x0888, 8) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20140108
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x0889
+#if PACKETVER >= 20141224
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20141217
+packetLen(0x0889, 12) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20141210
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20141203
+packetLen(0x0889, 26) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140924
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140917
+packetLen(0x0889, 7) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140806
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140730
+packetLen(0x0889, 18) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140319
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140312
+packetLen(0x0889, 19) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140226
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140219
+packetLen(0x0889, 8) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140205
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140129
+packetLen(0x0889, 8) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140108
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x088a
+#if PACKETVER >= 20140702
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140625
+packetLen(0x088a, -1) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140605
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140528
+packetLen(0x088a, 12) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140521
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140514
+packetLen(0x088a, 5) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140416
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140409
+packetLen(0x088a, 8) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140402
+packetLen(0x088a, 6) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140122
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140115
+packetLen(0x088a, 8) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140108
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x088b
+#if PACKETVER >= 20141001
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140924
+packetLen(0x088b, -1) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140806
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140730
+packetLen(0x088b, 6) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140716
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140709
+packetLen(0x088b, 26) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140528
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140521
+packetLen(0x088b, 4) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140514
+packetLen(0x088b, 90) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140430
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140423
+packetLen(0x088b, 6) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140108
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x088c
+#if PACKETVER >= 20140618
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20140611
+packetLen(0x088c, 10) // CZ_REASSEMBLY_AUTH09
+// ignored packet from 2014-06-11cRagexe
+// ignored packet from 2014-06-11eRagexe
+#elif PACKETVER >= 20140409
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20140402
+packetLen(0x088c, 4) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20140319
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20140312
+packetLen(0x088c, 10) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20140219
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20140212
+packetLen(0x088c, -1) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20140129
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20140122
+packetLen(0x088c, 8) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20140108
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x088d
+#if PACKETVER >= 20141126
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20141119
+packetLen(0x088d, -1) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20141112
+packetLen(0x088d, 90) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20140806
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20140730
+packetLen(0x088d, 12) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20140723
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20140716
+packetLen(0x088d, 8) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20140528
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20140521
+packetLen(0x088d, 5) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20140319
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20140312
+packetLen(0x088d, -1) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20140108
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x088e
+#if PACKETVER >= 20141224
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20141217
+packetLen(0x088e, 18) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140702
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140625
+packetLen(0x088e, 19) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140326
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140319
+packetLen(0x088e, 26) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140312
+packetLen(0x088e, 7) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140122
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140115
+packetLen(0x088e, 8) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140108
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x088f
+#if PACKETVER >= 20140917
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20140903
+packetLen(0x088f, 19) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20140723
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20140716
+packetLen(0x088f, 10) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20140605
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20140528
+packetLen(0x088f, 90) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20140108
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0890
+#if PACKETVER >= 20140625
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140618
+packetLen(0x0890, 5) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140430
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140423
+packetLen(0x0890, 10) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140416
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140409
+packetLen(0x0890, 6) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140402
+packetLen(0x0890, 26) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140326
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140319
+packetLen(0x0890, 90) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140129
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140122
+packetLen(0x0890, 90) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140108
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0891
+#if PACKETVER >= 20140827
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20140820
+packetLen(0x0891, 6) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20140618
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20140611
+packetLen(0x0891, 7) // CZ_REASSEMBLY_AUTH14
+// ignored packet from 2014-06-11cRagexe
+// ignored packet from 2014-06-11eRagexe
+#elif PACKETVER >= 20140319
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20140312
+packetLen(0x0891, -1) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20140108
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0892
+#if PACKETVER >= 20141112
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20141105
+packetLen(0x0892, 6) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140806
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140730
+packetLen(0x0892, 8) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140709
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140702
+packetLen(0x0892, 8) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140625
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140618
+packetLen(0x0892, 10) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140108
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0893
+#if PACKETVER >= 20140618
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140611
+packetLen(0x0893, 5) // CZ_REASSEMBLY_AUTH16
+// ignored packet from 2014-06-11cRagexe
+// ignored packet from 2014-06-11eRagexe
+#elif PACKETVER >= 20140416
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140409
+packetLen(0x0893, 7) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140326
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140319
+packetLen(0x0893, 8) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140129
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140122
+packetLen(0x0893, 26) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140108
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x0894
+#if PACKETVER >= 20141001
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20140924
+packetLen(0x0894, 7) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20140618
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20140611
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+// ignored packet from 2014-06-11hRagexe
+// ignored packet from 2014-06-11cRagexe
+#elif PACKETVER >= 20140605
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20140528
+packetLen(0x0894, 8) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20140319
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20140312
+packetLen(0x0894, 5) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20140305
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20140226
+packetLen(0x0894, 6) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20140108
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x0895
+#if PACKETVER >= 20141126
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20141119
+packetLen(0x0895, -1) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140924
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140917
+packetLen(0x0895, 5) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140820
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140813
+packetLen(0x0895, 8) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140709
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140702
+packetLen(0x0895, 8) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140521
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140514
+packetLen(0x0895, 6) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140430
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140423
+packetLen(0x0895, -1) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140305
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140226
+packetLen(0x0895, 8) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140108
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x0896
+#if PACKETVER >= 20141203
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20141126
+packetLen(0x0896, -1) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20141029
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20141022
+packetLen(0x0896, 26) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140730
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140723
+packetLen(0x0896, 6) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140716
+packetLen(0x0896, 90) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140605
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140528
+packetLen(0x0896, -1) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140430
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140423
+packetLen(0x0896, 7) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140416
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140409
+packetLen(0x0896, 10) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140402
+packetLen(0x0896, 5) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140108
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x0897
+#if PACKETVER >= 20140924
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140917
+packetLen(0x0897, 6) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140820
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140813
+packetLen(0x0897, 26) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140716
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140709
+packetLen(0x0897, 6) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140702
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140625
+packetLen(0x0897, 18) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140430
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140423
+packetLen(0x0897, -1) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140416
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140409
+packetLen(0x0897, -1) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140226
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140219
+packetLen(0x0897, -1) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140108
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x0898
+#if PACKETVER >= 20141210
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20141203
+packetLen(0x0898, 36) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20141112
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20141105
+packetLen(0x0898, 8) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20141001
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140924
+packetLen(0x0898, 90) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140917
+packetLen(0x0898, 6) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140730
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140723
+packetLen(0x0898, 8) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140716
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140709
+packetLen(0x0898, 19) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140430
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140423
+packetLen(0x0898, 10) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140402
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140326
+packetLen(0x0898, 6) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140226
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140219
+packetLen(0x0898, -1) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140108
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x0899
+#if PACKETVER >= 20141029
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20141022
+packetLen(0x0899, 5) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20140827
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20140820
+packetLen(0x0899, 10) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20140813
+packetLen(0x0899, 6) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20140508
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20140430
+packetLen(0x0899, 5) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20140416
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20140409
+packetLen(0x0899, 26) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20140129
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20140122
+packetLen(0x0899, -1) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20140108
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x089a
+#if PACKETVER >= 20141231
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20141224
+packetLen(0x089a, 5) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20140827
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20140820
+packetLen(0x089a, -1) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20140723
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20140716
+packetLen(0x089a, 6) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20140521
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20140514
+packetLen(0x089a, 6) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20140409
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20140402
+packetLen(0x089a, 26) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20140108
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x089b
+#if PACKETVER >= 20141231
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20141224
+packetLen(0x089b, 18) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140917
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140903
+packetLen(0x089b, 26) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140827
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140820
+packetLen(0x089b, 8) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140618
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140611
+packetLen(0x089b, 26) // CZ_REASSEMBLY_AUTH24
+// ignored packet from 2014-06-11cRagexe
+// ignored packet from 2014-06-11eRagexe
+#elif PACKETVER >= 20140514
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140508
+packetLen(0x089b, 19) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140430
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140423
+packetLen(0x089b, 6) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140319
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140312
+packetLen(0x089b, 6) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140122
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140115
+packetLen(0x089b, 26) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140108
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x089c
+#if PACKETVER >= 20141210
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20141203
+packetLen(0x089c, 10) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20141008
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20141001
+packetLen(0x089c, 18) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20140924
+packetLen(0x089c, 8) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20140917
+packetLen(0x089c, 6) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20140528
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20140514
+packetLen(0x089c, 26) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20140108
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#endif
+
+// Packet: 0x089d
+#if PACKETVER >= 20141210
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20141203
+packetLen(0x089d, 12) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20141008
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20141001
+packetLen(0x089d, 26) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20140605
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20140528
+packetLen(0x089d, 6) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20140430
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20140423
+packetLen(0x089d, 6) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20140319
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20140312
+packetLen(0x089d, 12) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20140219
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20140212
+packetLen(0x089d, 10) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20140129
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20140122
+packetLen(0x089d, 6) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20140108
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x089e
+#if PACKETVER >= 20140730
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20140723
+packetLen(0x089e, -1) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20140319
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20140312
+packetLen(0x089e, 6) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20140219
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20140212
+packetLen(0x089e, -1) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20140108
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x089f
+#if PACKETVER >= 20141224
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20141217
+packetLen(0x089f, 6) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140723
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140716
+packetLen(0x089f, -1) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140326
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140319
+packetLen(0x089f, 10) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140226
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140219
+packetLen(0x089f, 6) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140108
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x08a0
+#if PACKETVER >= 20141119
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20141112
+packetLen(0x08a0, 5) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20141105
+packetLen(0x08a0, 19) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20140806
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20140730
+packetLen(0x08a0, -1) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20140709
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20140702
+packetLen(0x08a0, 26) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20140219
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20140212
+packetLen(0x08a0, 36) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20140108
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x08a1
+#if PACKETVER >= 20141224
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20141217
+packetLen(0x08a1, 10) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20141119
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20141112
+packetLen(0x08a1, 6) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140702
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140625
+packetLen(0x08a1, 6) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140618
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140611
+packetLen(0x08a1, 10) // CZ_REASSEMBLY_AUTH30
+// ignored packet from 2014-06-11cRagexe
+// ignored packet from 2014-06-11eRagexe
+#elif PACKETVER >= 20140508
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140430
+packetLen(0x08a1, 8) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140219
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140212
+packetLen(0x08a1, 26) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140108
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x08a2
+#if PACKETVER >= 20141224
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20141217
+packetLen(0x08a2, 8) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140730
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140723
+packetLen(0x08a2, 8) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140709
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140702
+packetLen(0x08a2, 6) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140625
+packetLen(0x08a2, 5) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140618
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140611
+packetLen(0x08a2, 8) // CZ_REASSEMBLY_AUTH31
+// ignored packet from 2014-06-11cRagexe
+// ignored packet from 2014-06-11eRagexe
+#elif PACKETVER >= 20140416
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140409
+packetLen(0x08a2, 4) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140326
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140319
+packetLen(0x08a2, 8) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140129
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140122
+packetLen(0x08a2, 4) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140108
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x08a3
+#if PACKETVER >= 20141231
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20141224
+packetLen(0x08a3, 26) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20140827
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20140820
+packetLen(0x08a3, 5) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20140813
+packetLen(0x08a3, 6) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20140108
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x08a4
+#if PACKETVER >= 20141231
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20141224
+packetLen(0x08a4, 36) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20141203
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20141126
+packetLen(0x08a4, 5) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20140723
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20140716
+packetLen(0x08a4, -1) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20140605
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20140528
+packetLen(0x08a4, 10) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20140416
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20140409
+packetLen(0x08a4, 10) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20140108
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x08a5
+#if PACKETVER >= 20141210
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20141203
+packetLen(0x08a5, 7) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20141112
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20141105
+packetLen(0x08a5, 5) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20141001
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20140924
+packetLen(0x08a5, 6) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20140521
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20140514
+packetLen(0x08a5, 6) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20140108
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x08a6
+#if PACKETVER >= 20140806
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20140730
+packetLen(0x08a6, 6) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20140625
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20140618
+packetLen(0x08a6, 6) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20140319
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20140312
+packetLen(0x08a6, 4) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20140226
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20140219
+packetLen(0x08a6, 5) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20140108
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#endif
+
+// Packet: 0x08a7
+#if PACKETVER >= 20141001
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140924
+packetLen(0x08a7, 10) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140827
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140820
+packetLen(0x08a7, -1) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140813
+packetLen(0x08a7, 8) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140806
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140730
+packetLen(0x08a7, 6) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140625
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140618
+packetLen(0x08a7, 5) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140416
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140409
+packetLen(0x08a7, 5) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140219
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140212
+packetLen(0x08a7, -1) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140122
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140115
+packetLen(0x08a7, 5) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140108
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x08a8
+#if PACKETVER >= 20141231
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20141224
+packetLen(0x08a8, -1) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20141217
+packetLen(0x08a8, 26) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20141126
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20141119
+packetLen(0x08a8, 6) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20140924
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20140917
+packetLen(0x08a8, 36) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20140430
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20140423
+packetLen(0x08a8, 5) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20140108
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x08a9
+#if PACKETVER >= 20140806
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20140730
+packetLen(0x08a9, 90) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20140416
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20140409
+packetLen(0x08a9, 36) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20140319
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20140312
+packetLen(0x08a9, 26) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20140108
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#endif
+
+// Packet: 0x08aa
+#if PACKETVER >= 20141210
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20141203
+packetLen(0x08aa, 6) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20141126
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20141119
+packetLen(0x08aa, 12) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20141029
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20141022
+packetLen(0x08aa, 8) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20140402
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20140326
+packetLen(0x08aa, 8) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20140226
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20140219
+packetLen(0x08aa, 12) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20140129
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20140122
+packetLen(0x08aa, 6) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20140108
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x08ab
+#if PACKETVER >= 20141224
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20141217
+packetLen(0x08ab, -1) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20141119
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20141112
+packetLen(0x08ab, 36) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20141029
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20141022
+packetLen(0x08ab, 4) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20140820
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20140813
+packetLen(0x08ab, 4) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20140605
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20140528
+packetLen(0x08ab, 4) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20140514
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20140508
+packetLen(0x08ab, 4) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20140108
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x08ac
+#if PACKETVER >= 20141231
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20141224
+packetLen(0x08ac, -1) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20141217
+packetLen(0x08ac, 6) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20141210
+packetLen(0x08ac, -1) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20140723
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20140716
+packetLen(0x08ac, 5) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20140625
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20140618
+packetLen(0x08ac, 4) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20140528
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20140521
+packetLen(0x08ac, 19) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20140409
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20140402
+packetLen(0x08ac, 18) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20140326
+packetLen(0x08ac, 90) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20140226
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20140212
+packetLen(0x08ac, 8) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20140108
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x08ad
+#if PACKETVER >= 20141203
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20141126
+packetLen(0x08ad, 36) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20141112
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20141105
+packetLen(0x08ad, 8) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20141029
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20141022
+packetLen(0x08ad, 5) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20141008
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20141001
+packetLen(0x08ad, 5) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140806
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140730
+packetLen(0x08ad, 36) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140723
+packetLen(0x08ad, 18) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140716
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140709
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140430
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140423
+packetLen(0x08ad, 8) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140402
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140326
+packetLen(0x08ad, 19) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140319
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140312
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140219
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140212
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140108
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x08af
+packetLen(0x08af, 10) // HC_WAITING_LOGIN
+
+// Packet: 0x08b0
+packetLen(0x08b0, 17) // CH_WAITING_LOGIN
+
+// Packet: 0x08b1
+packetLen(0x08b1, -1) // ZC_MCSTORE_NOTMOVEITEM_LIST
+
+// Packet: 0x08b2
+packetLen(0x08b2, -1) // AC_REALNAME_AUTH
+
+// Packet: 0x08b3
+packetLen(0x08b3, -1) // ZC_SHOWSCRIPT
+
+// Packet: 0x08b4
+packetLen(0x08b4, 2) // ZC_START_COLLECTION
+
+// Packet: 0x08b5
+packetLen(0x08b5, 6) // CZ_TRYCOLLECTION
+
+// Packet: 0x08b6
+packetLen(0x08b6, 3) // ZC_TRYCOLLECTION
+
+// Packet: 0x08b8
+packetLen(0x08b8, 10) // CH_SECOND_PASSWD_ACK
+
+// Packet: 0x08b9
+packetLen(0x08b9, 12) // HC_SECOND_PASSWD_LOGIN
+
+// Packet: 0x08ba
+packetLen(0x08ba, 10) // CH_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bb
+packetLen(0x08bb, 8) // HC_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bc
+packetLen(0x08bc, 10) // CH_DELETE_SECOND_PASSWD
+
+// Packet: 0x08bd
+packetLen(0x08bd, 8) // HC_DELETE_SECOND_PASSWD
+
+// Packet: 0x08be
+packetLen(0x08be, 14) // CH_EDIT_SECOND_PASSWD
+
+// Packet: 0x08bf
+packetLen(0x08bf, 8) // HC_EDIT_SECOND_PASSWD
+
+// Packet: 0x08c0
+packetLen(0x08c0, -1) // ZC_ACK_SE_CASH_ITEM_LIST2
+
+// Packet: 0x08c1
+packetLen(0x08c1, 2) // CZ_MACRO_START
+
+// Packet: 0x08c2
+packetLen(0x08c2, 2) // CZ_MACRO_STOP
+
+// Packet: 0x08c3
+packetLen(0x08c3, 10) // CH_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c4
+packetLen(0x08c4, 8) // HC_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c5
+packetLen(0x08c5, 6) // CH_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c6
+packetLen(0x08c6, 4) // HC_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c7
+packetLen(0x08c7, -1) // ZC_SKILL_ENTRY3
+
+// Packet: 0x08c8
+packetLen(0x08c8, 34) // ZC_NOTIFY_ACT3
+
+// Packet: 0x08c9
+packetLen(0x08c9, 2) // CZ_REQ_SCHEDULER_CASHITEM
+
+// Packet: 0x08ca
+packetLen(0x08ca, -1) // ZC_ACK_SCHEDULER_CASHITEM
+
+// Packet: 0x08cb
+packetLen(0x08cb, -1) // ZC_PERSONAL_INFOMATION
+
+// Packet: 0x08cc
+packetLen(0x08cc, 109) // CA_LOGIN5
+
+// Packet: 0x08cd
+packetLen(0x08cd, 10) // ZC_STOPMOVE_FORCE
+
+// Packet: 0x08ce
+packetLen(0x08ce, 2) // ZC_FAILED_GET_ITEM_FROM_ZONEDA
+
+// Packet: 0x08cf
+packetLen(0x08cf, 10) // ZC_SPIRITS_ATTRIBUTE
+
+// Packet: 0x08d0
+packetLen(0x08d0, 9) // ZC_REQ_WEAR_EQUIP_ACK2
+
+// Packet: 0x08d1
+packetLen(0x08d1, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK2
+
+// Packet: 0x08d2
+packetLen(0x08d2, 10) // ZC_FASTMOVE
+
+// Packet: 0x08d3
+packetLen(0x08d3, 10) // ZC_SE_CASHSHOP_UPDATE
+
+// Packet: 0x08d4
+packetLen(0x08d4, 8) // CH_REQ_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d5
+packetLen(0x08d5, -1) // HC_ACK_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d6
+packetLen(0x08d6, 6) // ZC_CLEAR_DIALOG
+
+// Packet: 0x08d7
+packetLen(0x08d7, 28) // CZ_REQ_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d8
+packetLen(0x08d8, 27) // ZC_ACK_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d9
+packetLen(0x08d9, 30) // ZC_NOTIFY_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08da
+packetLen(0x08da, 26) // CZ_REQ_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08db
+packetLen(0x08db, 27) // ZC_ACK_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08dc
+packetLen(0x08dc, 26) // ZC_NOTIFY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08dd
+packetLen(0x08dd, 27) // CZ_REPLY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08de
+packetLen(0x08de, 27) // ZC_REPLY_ACK_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08df
+packetLen(0x08df, 50) // ZC_NOTIFY_LOBBY_ADMISSION
+
+// Packet: 0x08e0
+packetLen(0x08e0, 51) // CZ_REPLY_LOBBY_ADMISSION
+
+// Packet: 0x08e1
+packetLen(0x08e1, 51) // ZC_REPLY_ACK_LOBBY_ADMISSION
+
+// Packet: 0x08e2
+packetLen(0x08e2, 27) // ZC_NAVIGATION_ACTIVE
+
+// Packet: 0x08e3
+#if PACKETVER >= 20140820
+packetLen(0x08e3, 149) // HC_UPDATE_CHARINFO
+#elif PACKETVER >= 20140108
+packetLen(0x08e3, 146) // HC_UPDATE_CHARINFO
+#endif
+
+// Packet: 0x08e4
+packetLen(0x08e4, 6) // AC_SHUTDOWN_INFO
+
+// Packet: 0x08fc
+packetLen(0x08fc, 30) // CH_REQ_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fd
+packetLen(0x08fd, 6) // CH_ACK_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fe
+packetLen(0x08fe, -1) // ZC_HUNTING_QUEST_INFO
+
+// Packet: 0x08ff
+packetLen(0x08ff, 24) // ZC_EFST_SET_ENTER
+
+// Packet: 0x0900
+packetLen(0x0900, -1) // ZC_INVENTORY_ITEMLIST_NORMAL
+
+// Packet: 0x0901
+packetLen(0x0901, -1) // ZC_INVENTORY_ITEMLIST_EQUIP
+
+// Packet: 0x0902
+packetLen(0x0902, -1) // ZC_CART_ITEMLIST_NORMAL
+
+// Packet: 0x0903
+packetLen(0x0903, -1) // ZC_CART_ITEMLIST_EQUIP
+
+// Packet: 0x0904
+packetLen(0x0904, -1) // ZC_STORE_ITEMLIST_NORMAL
+
+// Packet: 0x0905
+packetLen(0x0905, -1) // ZC_STORE_ITEMLIST_EQUIP
+
+// Packet: 0x0906
+packetLen(0x0906, -1) // ZC_MICROSCOPE
+
+// Packet: 0x0907
+packetLen(0x0907, 5) // CZ_INVENTORY_TAB
+
+// Packet: 0x0908
+packetLen(0x0908, 5) // ZC_INVENTORY_TAB
+
+// Packet: 0x090a
+packetLen(0x090a, 26) // CZ_REQ_ENTRY_QUEUE_RANKING
+
+// Packet: 0x090d
+packetLen(0x090d, -1) // ZC_PREMIUM_CAMPAIGN_INFO
+
+// Packet: 0x090e
+packetLen(0x090e, 2) // ZC_ENTRY_QUEUE_INIT
+
+// Packet: 0x090f
+packetLen(0x090f, -1) // ZC_NOTIFY_NEWENTRY7
+
+// Packet: 0x0910
+packetLen(0x0910, 10) // CZ_REQ_PARTY_NAME
+
+// Packet: 0x0911
+packetLen(0x0911, 30) // ZC_ACK_PARTY_NAME
+
+// Packet: 0x0912
+packetLen(0x0912, 10) // CZ_REQ_GUILD_NAME
+
+// Packet: 0x0913
+packetLen(0x0913, 30) // ZC_ACK_GUILD_NAME
+
+// Packet: 0x0914
+packetLen(0x0914, -1) // ZC_NOTIFY_MOVEENTRY9
+
+// Packet: 0x0915
+packetLen(0x0915, -1) // ZC_NOTIFY_STANDENTRY8
+
+// Packet: 0x0916
+packetLen(0x0916, 26) // CZ_REQ_JOIN_GUILD2
+
+// Packet: 0x0917
+#if PACKETVER >= 20141217
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20141210
+packetLen(0x0917, 26) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20140625
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20140618
+packetLen(0x0917, 10) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20140129
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20140122
+packetLen(0x0917, 6) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20140108
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#endif
+
+// Packet: 0x0918
+#if PACKETVER >= 20141126
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20141119
+packetLen(0x0918, 10) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20141001
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140924
+packetLen(0x0918, 19) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140723
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140716
+packetLen(0x0918, 5) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140521
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140514
+packetLen(0x0918, 18) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140416
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140409
+packetLen(0x0918, 6) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140402
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140326
+packetLen(0x0918, 6) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140108
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#endif
+
+// Packet: 0x0919
+#if PACKETVER >= 20141224
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20141217
+packetLen(0x0919, 5) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20141119
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20141112
+packetLen(0x0919, 12) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20140924
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20140917
+packetLen(0x0919, -1) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20140219
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20140212
+packetLen(0x0919, 5) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20140108
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#endif
+
+// Packet: 0x091a
+#if PACKETVER >= 20141029
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20141022
+packetLen(0x091a, 26) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140716
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140709
+packetLen(0x091a, 5) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140702
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140625
+packetLen(0x091a, 6) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140430
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140423
+packetLen(0x091a, 6) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140305
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140226
+packetLen(0x091a, 8) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140129
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140122
+packetLen(0x091a, 5) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140108
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#endif
+
+// Packet: 0x091b
+#if PACKETVER >= 20140219
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20140212
+packetLen(0x091b, 26) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20140108
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#endif
+
+// Packet: 0x091c
+#if PACKETVER >= 20141210
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20141203
+packetLen(0x091c, 18) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20141008
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20141001
+packetLen(0x091c, 4) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20140416
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20140409
+packetLen(0x091c, 90) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20140319
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20140312
+packetLen(0x091c, 26) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20140108
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#endif
+
+// Packet: 0x091d
+#if PACKETVER >= 20141210
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20141203
+packetLen(0x091d, 26) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20141112
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20141105
+packetLen(0x091d, 6) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20140827
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20140820
+packetLen(0x091d, 6) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20140605
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20140528
+packetLen(0x091d, 26) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20140521
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20140514
+packetLen(0x091d, 19) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20140108
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#endif
+
+// Packet: 0x091e
+#if PACKETVER >= 20141112
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20141105
+packetLen(0x091e, 6) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20140806
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20140730
+packetLen(0x091e, 26) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20140319
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20140312
+packetLen(0x091e, 5) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20140108
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#endif
+
+// Packet: 0x091f
+#if PACKETVER >= 20141224
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20141217
+packetLen(0x091f, 10) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20140723
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20140716
+packetLen(0x091f, 18) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20140625
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20140618
+packetLen(0x091f, -1) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20140409
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20140402
+packetLen(0x091f, -1) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20140326
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20140319
+packetLen(0x091f, -1) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20140108
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#endif
+
+// Packet: 0x0920
+#if PACKETVER >= 20141203
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20141126
+packetLen(0x0920, 6) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20141119
+packetLen(0x0920, 5) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20140430
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20140423
+packetLen(0x0920, 26) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20140409
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20140402
+packetLen(0x0920, 19) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20140108
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#endif
+
+// Packet: 0x0921
+#if PACKETVER >= 20141126
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20141119
+packetLen(0x0921, 19) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20140611
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20140605
+packetLen(0x0921, 36) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20140305
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20140226
+packetLen(0x0921, 26) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20140219
+packetLen(0x0921, 7) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20140205
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20140129
+packetLen(0x0921, 18) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20140108
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#endif
+
+// Packet: 0x0922
+#if PACKETVER >= 20141022
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20141015
+packetLen(0x0922, 4) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20140108
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#endif
+
+// Packet: 0x0923
+#if PACKETVER >= 20140326
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20140319
+packetLen(0x0923, 19) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20140108
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#endif
+
+// Packet: 0x0924
+#if PACKETVER >= 20141224
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20141217
+packetLen(0x0924, 7) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20140618
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20140611
+packetLen(0x0924, 6) // ZC_REASSEMBLY_AUTH56
+// ignored packet from 2014-06-11cRagexe
+// ignored packet from 2014-06-11eRagexe
+#elif PACKETVER >= 20140205
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20140129
+packetLen(0x0924, -1) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20140108
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#endif
+
+// Packet: 0x0925
+#if PACKETVER >= 20141001
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140924
+packetLen(0x0925, 8) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140716
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140709
+packetLen(0x0925, 90) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140702
+packetLen(0x0925, 5) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140521
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140514
+packetLen(0x0925, 6) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140129
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140122
+packetLen(0x0925, 5) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140108
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#endif
+
+// Packet: 0x0926
+#if PACKETVER >= 20141119
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20141112
+packetLen(0x0926, 5) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20141001
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20140924
+packetLen(0x0926, 6) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20140723
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20140716
+packetLen(0x0926, 6) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20140409
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20140402
+packetLen(0x0926, 36) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20140108
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#endif
+
+// Packet: 0x0927
+#if PACKETVER >= 20141217
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20141210
+packetLen(0x0927, 8) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20140730
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20140723
+packetLen(0x0927, 6) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20140514
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20140508
+packetLen(0x0927, 36) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20140226
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20140219
+packetLen(0x0927, 90) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20140108
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#endif
+
+// Packet: 0x0928
+#if PACKETVER >= 20141210
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20141203
+packetLen(0x0928, 6) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20141001
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20140924
+packetLen(0x0928, 8) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20140219
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20140212
+packetLen(0x0928, 6) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20140108
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#endif
+
+// Packet: 0x0929
+#if PACKETVER >= 20141126
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20141119
+packetLen(0x0929, 8) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20141112
+packetLen(0x0929, 7) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20140625
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20140618
+packetLen(0x0929, 12) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20140605
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20140528
+packetLen(0x0929, 7) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20140108
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#endif
+
+// Packet: 0x092a
+#if PACKETVER >= 20141210
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20141203
+packetLen(0x092a, 4) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20141008
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20141001
+packetLen(0x092a, 36) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20140924
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20140917
+packetLen(0x092a, 12) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20140806
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20140730
+packetLen(0x092a, 6) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20140402
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20140326
+packetLen(0x092a, 36) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20140319
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20140312
+packetLen(0x092a, 6) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20140108
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#endif
+
+// Packet: 0x092b
+#if PACKETVER >= 20141217
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20141210
+packetLen(0x092b, 18) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20141112
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20141105
+packetLen(0x092b, 6) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20141029
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20141022
+packetLen(0x092b, 8) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20141001
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20140924
+packetLen(0x092b, 6) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20140108
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#endif
+
+// Packet: 0x092c
+#if PACKETVER >= 20140723
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140716
+packetLen(0x092c, 26) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140709
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140702
+packetLen(0x092c, 19) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140521
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140514
+packetLen(0x092c, 8) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140205
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140129
+packetLen(0x092c, 36) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140108
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#endif
+
+// Packet: 0x092d
+#if PACKETVER >= 20141001
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20140924
+packetLen(0x092d, 12) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20140409
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20140402
+packetLen(0x092d, 90) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20140122
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20140115
+packetLen(0x092d, 5) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20140108
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#endif
+
+// Packet: 0x092e
+#if PACKETVER >= 20140416
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20140409
+packetLen(0x092e, 26) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20140108
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#endif
+
+// Packet: 0x092f
+#if PACKETVER >= 20141126
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20141119
+packetLen(0x092f, 8) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140827
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140820
+packetLen(0x092f, 10) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140730
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140723
+packetLen(0x092f, 19) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140716
+packetLen(0x092f, 12) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140709
+packetLen(0x092f, 10) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140521
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140514
+packetLen(0x092f, 10) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140129
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140122
+packetLen(0x092f, 8) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140108
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#endif
+
+// Packet: 0x0930
+#if PACKETVER >= 20141231
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20141224
+packetLen(0x0930, 6) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20140924
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20140917
+packetLen(0x0930, 8) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20140605
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20140528
+packetLen(0x0930, -1) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20140514
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20140508
+packetLen(0x0930, 8) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20140219
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20140212
+packetLen(0x0930, 6) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20140108
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#endif
+
+// Packet: 0x0931
+#if PACKETVER >= 20140917
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20140903
+packetLen(0x0931, 5) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20140716
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20140709
+packetLen(0x0931, 6) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20140611
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20140605
+packetLen(0x0931, 5) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20140305
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20140226
+packetLen(0x0931, 4) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20140108
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#endif
+
+// Packet: 0x0932
+#if PACKETVER >= 20141231
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20141224
+packetLen(0x0932, 8) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20141217
+packetLen(0x0932, -1) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20140514
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20140508
+packetLen(0x0932, 6) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20140108
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#endif
+
+// Packet: 0x0933
+#if PACKETVER >= 20141224
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20141217
+packetLen(0x0933, 26) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20141126
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20141119
+packetLen(0x0933, 36) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20140709
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20140702
+packetLen(0x0933, 4) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20140409
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20140402
+packetLen(0x0933, -1) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20140108
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#endif
+
+// Packet: 0x0934
+#if PACKETVER >= 20141001
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140924
+packetLen(0x0934, 5) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140806
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140730
+packetLen(0x0934, -1) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140723
+packetLen(0x0934, 26) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140716
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140709
+packetLen(0x0934, 6) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140514
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140508
+packetLen(0x0934, 8) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140312
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140305
+packetLen(0x0934, 5) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140219
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140212
+packetLen(0x0934, 7) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140108
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#endif
+
+// Packet: 0x0935
+#if PACKETVER >= 20140730
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20140723
+packetLen(0x0935, 26) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20140625
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20140618
+packetLen(0x0935, 6) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20140108
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#endif
+
+// Packet: 0x0936
+#if PACKETVER >= 20141224
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20141217
+packetLen(0x0936, 6) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20141210
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20141203
+packetLen(0x0936, 5) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20141022
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20141015
+packetLen(0x0936, 36) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20140827
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20140820
+packetLen(0x0936, 12) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20140618
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20140611
+packetLen(0x0936, 12) // ZC_REASSEMBLY_AUTH74
+// ignored packet from 2014-06-11cRagexe
+// ignored packet from 2014-06-11eRagexe
+#elif PACKETVER >= 20140219
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20140212
+packetLen(0x0936, 4) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20140115
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20140108
+packetLen(0x0936, 36) // ZC_REASSEMBLY_AUTH74
+#endif
+
+// Packet: 0x0937
+#if PACKETVER >= 20141008
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20141001
+packetLen(0x0937, -1) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20140827
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20140820
+packetLen(0x0937, 5) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20140108
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#endif
+
+// Packet: 0x0938
+#if PACKETVER >= 20141126
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20141119
+packetLen(0x0938, 6) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20140723
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20140716
+packetLen(0x0938, 8) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20140625
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20140618
+packetLen(0x0938, 26) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20140212
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20140205
+packetLen(0x0938, 36) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20140108
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#endif
+
+// Packet: 0x0939
+#if PACKETVER >= 20141224
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20141217
+packetLen(0x0939, -1) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20141008
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20141001
+packetLen(0x0939, 8) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20140730
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20140723
+packetLen(0x0939, -1) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20140716
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20140709
+packetLen(0x0939, -1) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20140226
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20140219
+packetLen(0x0939, -1) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20140108
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#endif
+
+// Packet: 0x093a
+#if PACKETVER >= 20140827
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20140820
+packetLen(0x093a, 36) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20140605
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20140528
+packetLen(0x093a, 8) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20140108
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#endif
+
+// Packet: 0x093b
+#if PACKETVER >= 20141029
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20141022
+packetLen(0x093b, 19) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20140723
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20140716
+packetLen(0x093b, 6) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20140625
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20140618
+packetLen(0x093b, 7) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20140508
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20140430
+packetLen(0x093b, -1) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20140108
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#endif
+
+// Packet: 0x093c
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+
+// Packet: 0x093d
+#if PACKETVER >= 20140730
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20140723
+packetLen(0x093d, 6) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20140402
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20140326
+packetLen(0x093d, 7) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20140219
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20140212
+packetLen(0x093d, 19) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20140108
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#endif
+
+// Packet: 0x093e
+#if PACKETVER >= 20141112
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20141105
+packetLen(0x093e, -1) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20140827
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20140820
+packetLen(0x093e, 6) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20140108
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#endif
+
+// Packet: 0x093f
+#if PACKETVER >= 20141008
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20141001
+packetLen(0x093f, 6) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20140716
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20140709
+packetLen(0x093f, 12) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20140605
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20140528
+packetLen(0x093f, 26) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20140409
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20140402
+packetLen(0x093f, 5) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20140108
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#endif
+
+// Packet: 0x0940
+#if PACKETVER >= 20141224
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20141217
+packetLen(0x0940, 19) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20141105
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20141029
+packetLen(0x0940, 7) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140806
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140730
+packetLen(0x0940, 5) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140716
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140709
+packetLen(0x0940, -1) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140702
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140625
+packetLen(0x0940, -1) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140611
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140605
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140508
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140430
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140129
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140122
+packetLen(0x0940, 10) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140115
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140108
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#endif
+
+// Packet: 0x0941
+#if PACKETVER >= 20141126
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20141119
+packetLen(0x0941, 8) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20140917
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20140903
+packetLen(0x0941, 36) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20140618
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20140611
+packetLen(0x0941, 36) // CZ_REASSEMBLY_AUTH43
+// ignored packet from 2014-06-11cRagexe
+// ignored packet from 2014-06-11eRagexe
+#elif PACKETVER >= 20140305
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20140226
+packetLen(0x0941, 18) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20140129
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20140122
+packetLen(0x0941, 6) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20140108
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#endif
+
+// Packet: 0x0942
+#if PACKETVER >= 20141203
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20141126
+packetLen(0x0942, 26) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20141119
+packetLen(0x0942, 5) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20141015
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20141008
+packetLen(0x0942, 36) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140416
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140409
+packetLen(0x0942, 8) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140402
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140326
+packetLen(0x0942, 5) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140319
+packetLen(0x0942, 36) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140129
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140122
+packetLen(0x0942, 6) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140108
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#endif
+
+// Packet: 0x0943
+#if PACKETVER >= 20141119
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20141112
+packetLen(0x0943, 6) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20140917
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20140903
+packetLen(0x0943, 4) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20140827
+packetLen(0x0943, 36) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20140108
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#endif
+
+// Packet: 0x0944
+#if PACKETVER >= 20141224
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20141217
+packetLen(0x0944, 6) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20141112
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20141105
+packetLen(0x0944, 5) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140409
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140402
+packetLen(0x0944, -1) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140326
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140319
+packetLen(0x0944, 10) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140219
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140212
+packetLen(0x0944, 5) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140108
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#endif
+
+// Packet: 0x0945
+#if PACKETVER >= 20141231
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20141224
+packetLen(0x0945, 6) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20141217
+packetLen(0x0945, 90) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20140917
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20140903
+packetLen(0x0945, 5) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20140730
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20140723
+packetLen(0x0945, 10) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20140625
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20140618
+packetLen(0x0945, 6) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20140402
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20140326
+packetLen(0x0945, -1) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20140108
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#endif
+
+// Packet: 0x0946
+#if PACKETVER >= 20141231
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20141224
+packetLen(0x0946, 6) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20140806
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20140730
+packetLen(0x0946, 5) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20140702
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20140625
+packetLen(0x0946, 5) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20140409
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20140402
+packetLen(0x0946, 7) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20140326
+packetLen(0x0946, 26) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20140226
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20140219
+packetLen(0x0946, 19) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20140108
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#endif
+
+// Packet: 0x0947
+#if PACKETVER >= 20141217
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20141210
+packetLen(0x0947, 4) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20140730
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20140723
+packetLen(0x0947, 7) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20140716
+packetLen(0x0947, 4) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20140416
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20140409
+packetLen(0x0947, 5) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20140326
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20140319
+packetLen(0x0947, 8) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20140108
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#endif
+
+// Packet: 0x0948
+#if PACKETVER >= 20141224
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20141217
+packetLen(0x0948, 6) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20141126
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20141119
+packetLen(0x0948, 5) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20140813
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20140806
+packetLen(0x0948, 36) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20140730
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20140723
+packetLen(0x0948, 5) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20140108
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#endif
+
+// Packet: 0x0949
+#if PACKETVER >= 20141231
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20141224
+packetLen(0x0949, 12) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20141001
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20140924
+packetLen(0x0949, 6) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20140917
+packetLen(0x0949, 10) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20140226
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20140219
+packetLen(0x0949, 18) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20140108
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#endif
+
+// Packet: 0x094a
+#if PACKETVER >= 20140827
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20140820
+packetLen(0x094a, 26) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20140618
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20140611
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+// ignored packet from 2014-06-11hRagexe
+// ignored packet from 2014-06-11cRagexe
+#elif PACKETVER >= 20140605
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20140528
+packetLen(0x094a, 6) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20140319
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20140312
+packetLen(0x094a, 18) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20140108
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#endif
+
+// Packet: 0x094b
+#if PACKETVER >= 20141119
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20141112
+packetLen(0x094b, 19) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20141022
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20141015
+packetLen(0x094b, 26) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20141008
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20141001
+packetLen(0x094b, 19) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20140605
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20140528
+packetLen(0x094b, 5) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20140508
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20140430
+packetLen(0x094b, 19) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20140319
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20140312
+packetLen(0x094b, 90) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20140108
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#endif
+
+// Packet: 0x094c
+#if PACKETVER >= 20141126
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20141119
+packetLen(0x094c, 6) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20141112
+packetLen(0x094c, 4) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20140611
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20140605
+packetLen(0x094c, 26) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20140416
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20140409
+packetLen(0x094c, 18) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20140402
+packetLen(0x094c, 8) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20140326
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20140319
+packetLen(0x094c, 6) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20140312
+packetLen(0x094c, 5) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20140129
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20140122
+packetLen(0x094c, 8) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20140108
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#endif
+
+// Packet: 0x094d
+#if PACKETVER >= 20140716
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20140709
+packetLen(0x094d, 5) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20140205
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20140129
+packetLen(0x094d, 8) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20140108
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#endif
+
+// Packet: 0x094e
+#if PACKETVER >= 20141029
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20141022
+packetLen(0x094e, 6) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20140716
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20140709
+packetLen(0x094e, 8) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20140702
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20140625
+packetLen(0x094e, 8) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20140521
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20140514
+packetLen(0x094e, 8) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20140508
+packetLen(0x094e, 26) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20140219
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20140212
+packetLen(0x094e, 8) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20140108
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#endif
+
+// Packet: 0x094f
+#if PACKETVER >= 20141231
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20141224
+packetLen(0x094f, 19) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20141119
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20141112
+packetLen(0x094f, 8) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140924
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140917
+packetLen(0x094f, 10) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140716
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140709
+packetLen(0x094f, 26) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140618
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140611
+packetLen(0x094f, 6) // CZ_REASSEMBLY_AUTH57
+// ignored packet from 2014-06-11cRagexe
+// ignored packet from 2014-06-11eRagexe
+#elif PACKETVER >= 20140430
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140423
+packetLen(0x094f, 12) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140108
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#endif
+
+// Packet: 0x0950
+#if PACKETVER >= 20141231
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20141224
+packetLen(0x0950, 6) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20141112
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20141105
+packetLen(0x0950, 26) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20140618
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20140611
+packetLen(0x0950, 18) // CZ_REASSEMBLY_AUTH58
+// ignored packet from 2014-06-11cRagexe
+// ignored packet from 2014-06-11eRagexe
+#elif PACKETVER >= 20140409
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20140402
+packetLen(0x0950, 6) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20140129
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20140122
+packetLen(0x0950, 10) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20140108
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#endif
+
+// Packet: 0x0951
+#if PACKETVER >= 20140924
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20140917
+packetLen(0x0951, 18) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20140827
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20140820
+packetLen(0x0951, -1) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20140618
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20140611
+packetLen(0x0951, 5) // CZ_REASSEMBLY_AUTH59
+// ignored packet from 2014-06-11cRagexe
+// ignored packet from 2014-06-11eRagexe
+#elif PACKETVER >= 20140108
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#endif
+
+// Packet: 0x0952
+#if PACKETVER >= 20141210
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20141203
+packetLen(0x0952, 90) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20141008
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20141001
+packetLen(0x0952, 5) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20140924
+packetLen(0x0952, 26) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20140827
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20140820
+packetLen(0x0952, 7) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20140723
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20140716
+packetLen(0x0952, 5) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20140618
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20140611
+packetLen(0x0952, 8) // CZ_REASSEMBLY_AUTH60
+// ignored packet from 2014-06-11cRagexe
+// ignored packet from 2014-06-11eRagexe
+#elif PACKETVER >= 20140219
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20140212
+packetLen(0x0952, 6) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20140129
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20140122
+packetLen(0x0952, -1) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20140108
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#endif
+
+// Packet: 0x0953
+#if PACKETVER >= 20141231
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20141224
+packetLen(0x0953, 8) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20140508
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20140430
+packetLen(0x0953, 4) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20140219
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20140212
+packetLen(0x0953, 6) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20140108
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#endif
+
+// Packet: 0x0954
+#if PACKETVER >= 20141217
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20141210
+packetLen(0x0954, 19) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20140625
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20140618
+packetLen(0x0954, 26) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20140326
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20140319
+packetLen(0x0954, 26) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20140108
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#endif
+
+// Packet: 0x0955
+#if PACKETVER >= 20141217
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20141210
+packetLen(0x0955, 8) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20141119
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20141112
+packetLen(0x0955, 8) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20141029
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20141022
+packetLen(0x0955, 18) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20140924
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20140917
+packetLen(0x0955, 26) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20140326
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20140319
+packetLen(0x0955, 6) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20140129
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20140122
+packetLen(0x0955, 36) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20140108
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#endif
+
+// Packet: 0x0956
+#if PACKETVER >= 20141231
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20141224
+packetLen(0x0956, 10) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140924
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140917
+packetLen(0x0956, -1) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140827
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140820
+packetLen(0x0956, 8) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140508
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140430
+packetLen(0x0956, 8) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140402
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140326
+packetLen(0x0956, 5) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140108
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#endif
+
+// Packet: 0x0957
+#if PACKETVER >= 20141112
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20141105
+packetLen(0x0957, 5) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20140924
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20140917
+packetLen(0x0957, 8) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20140625
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20140618
+packetLen(0x0957, 36) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20140611
+packetLen(0x0957, 6) // CZ_REASSEMBLY_AUTH65
+// ignored packet from 2014-06-11cRagexe
+// ignored packet from 2014-06-11eRagexe
+#elif PACKETVER >= 20140319
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20140312
+packetLen(0x0957, 8) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20140129
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20140122
+packetLen(0x0957, 12) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20140108
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#endif
+
+// Packet: 0x0958
+#if PACKETVER >= 20141217
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20141210
+packetLen(0x0958, 6) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20140827
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20140820
+packetLen(0x0958, 4) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20140723
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20140716
+packetLen(0x0958, 6) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20140618
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20140611
+packetLen(0x0958, 19) // CZ_REASSEMBLY_AUTH66
+// ignored packet from 2014-06-11cRagexe
+// ignored packet from 2014-06-11eRagexe
+#elif PACKETVER >= 20140521
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20140514
+packetLen(0x0958, 5) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20140409
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20140402
+packetLen(0x0958, 6) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20140205
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20140129
+packetLen(0x0958, 26) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20140108
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#endif
+
+// Packet: 0x0959
+#if PACKETVER >= 20140723
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140716
+packetLen(0x0959, 6) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140702
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140625
+packetLen(0x0959, 7) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140402
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140326
+packetLen(0x0959, 8) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140108
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#endif
+
+// Packet: 0x095a
+#if PACKETVER >= 20141203
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20141126
+packetLen(0x095a, 6) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20140924
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20140917
+packetLen(0x095a, 6) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20140416
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20140409
+packetLen(0x095a, 6) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20140402
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20140326
+packetLen(0x095a, 6) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20140108
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#endif
+
+// Packet: 0x095b
+#if PACKETVER >= 20141231
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20141224
+packetLen(0x095b, 10) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20141203
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20141126
+packetLen(0x095b, 5) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20140122
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20140115
+packetLen(0x095b, 4) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20140108
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#endif
+
+// Packet: 0x095c
+#if PACKETVER >= 20141210
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20141203
+packetLen(0x095c, 6) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20140924
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20140917
+packetLen(0x095c, 5) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20140423
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20140416
+packetLen(0x095c, 36) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20140409
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20140402
+packetLen(0x095c, 8) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20140326
+packetLen(0x095c, -1) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20140108
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#endif
+
+// Packet: 0x095d
+#if PACKETVER >= 20141119
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20141112
+packetLen(0x095d, 6) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20140625
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20140618
+packetLen(0x095d, 6) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20140319
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20140312
+packetLen(0x095d, -1) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20140129
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20140122
+packetLen(0x095d, -1) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20140115
+packetLen(0x095d, 26) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20140108
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#endif
+
+// Packet: 0x095e
+#if PACKETVER >= 20140924
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140917
+packetLen(0x095e, 5) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140625
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140618
+packetLen(0x095e, 19) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140430
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140423
+packetLen(0x095e, 4) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140416
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140409
+packetLen(0x095e, 19) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140319
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140305
+packetLen(0x095e, 36) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140108
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#endif
+
+// Packet: 0x095f
+#if PACKETVER >= 20141231
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20141224
+packetLen(0x095f, 7) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20141203
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20141126
+packetLen(0x095f, 8) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20141112
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20141105
+packetLen(0x095f, -1) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20140730
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20140723
+packetLen(0x095f, 4) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20140716
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20140709
+packetLen(0x095f, 18) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20140605
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20140528
+packetLen(0x095f, 6) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20140521
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20140514
+packetLen(0x095f, 5) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20140129
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20140122
+packetLen(0x095f, -1) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20140108
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#endif
+
+// Packet: 0x0960
+#if PACKETVER >= 20141224
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20141217
+packetLen(0x0960, 4) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20141119
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20141112
+packetLen(0x0960, 6) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20140730
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20140723
+packetLen(0x0960, 5) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20140702
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20140625
+packetLen(0x0960, 36) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20140108
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#endif
+
+// Packet: 0x0961
+#if PACKETVER >= 20141217
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20141210
+packetLen(0x0961, 26) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20140827
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20140820
+packetLen(0x0961, 18) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20140716
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20140709
+packetLen(0x0961, 6) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20140326
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20140319
+packetLen(0x0961, 18) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20140226
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20140219
+packetLen(0x0961, 6) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20140205
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20140129
+packetLen(0x0961, 26) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20140108
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#endif
+
+// Packet: 0x0962
+#if PACKETVER >= 20141210
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20141203
+packetLen(0x0962, 10) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20141119
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20141112
+packetLen(0x0962, 10) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20140625
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20140618
+packetLen(0x0962, 8) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20140521
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20140514
+packetLen(0x0962, 26) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20140305
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20140226
+packetLen(0x0962, 8) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20140108
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#endif
+
+// Packet: 0x0963
+#if PACKETVER >= 20141217
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20141210
+packetLen(0x0963, 36) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20141126
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20141119
+packetLen(0x0963, 90) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20140618
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20140611
+packetLen(0x0963, 6) // CZ_REASSEMBLY_AUTH77
+// ignored packet from 2014-06-11cRagexe
+// ignored packet from 2014-06-11eRagexe
+#elif PACKETVER >= 20140605
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20140528
+packetLen(0x0963, 10) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20140108
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#endif
+
+// Packet: 0x0964
+#if PACKETVER >= 20140605
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20140528
+packetLen(0x0964, 19) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20140326
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20140319
+packetLen(0x0964, 6) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20140305
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20140226
+packetLen(0x0964, 6) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20140108
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#endif
+
+// Packet: 0x0965
+#if PACKETVER >= 20141203
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20141126
+packetLen(0x0965, 26) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20140618
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20140611
+packetLen(0x0965, 5) // CZ_REASSEMBLY_AUTH79
+// ignored packet from 2014-06-11cRagexe
+// ignored packet from 2014-06-11eRagexe
+#elif PACKETVER >= 20140521
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20140514
+packetLen(0x0965, -1) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20140409
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20140402
+packetLen(0x0965, 12) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20140122
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20140115
+packetLen(0x0965, -1) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20140108
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#endif
+
+// Packet: 0x0966
+#if PACKETVER >= 20140924
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20140917
+packetLen(0x0966, 4) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20140605
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20140528
+packetLen(0x0966, -1) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20140319
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20140312
+packetLen(0x0966, 8) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20140122
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20140115
+packetLen(0x0966, 19) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20140108
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#endif
+
+// Packet: 0x0967
+#if PACKETVER >= 20141217
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20141210
+packetLen(0x0967, 8) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20141022
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20141015
+packetLen(0x0967, 5) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20140820
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20140813
+packetLen(0x0967, 8) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20140625
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20140618
+packetLen(0x0967, 5) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20140108
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#endif
+
+// Packet: 0x0968
+#if PACKETVER >= 20141112
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20141105
+packetLen(0x0968, 18) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20140702
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20140625
+packetLen(0x0968, 6) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20140528
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20140521
+packetLen(0x0968, 5) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20140108
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#endif
+
+// Packet: 0x0969
+#if PACKETVER >= 20140723
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20140716
+packetLen(0x0969, -1) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20140702
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20140625
+packetLen(0x0969, 26) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20140402
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20140326
+packetLen(0x0969, 10) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20140305
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20140226
+packetLen(0x0969, -1) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20140108
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#endif
+
+// Packet: 0x096a
+#if PACKETVER >= 20141231
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20141217
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20141210
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20141203
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20141126
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20141105
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20141008
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140917
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140827
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140820
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140806
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140709
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140625
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140611
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140605
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140528
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140514
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140508
+packetLen(0x096a, 18) // CZ_REASSEMBLY_AUTH84
+// ignored packet from 2014-05-08aRagexe
+#elif PACKETVER >= 20140430
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140423
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140416
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140326
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140319
+packetLen(0x096a, -1) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140312
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140226
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140212
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140129
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140122
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140115
+packetLen(0x096a, 18) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140108
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#endif
+
+// Packet: 0x096b
+packetLen(0x096b, 4) // ZC_PRNPC_STATE
+
+// Packet: 0x096c
+packetLen(0x096c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+
+// Packet: 0x096d
+packetLen(0x096d, -1) // ZC_MERGE_ITEM_OPEN
+
+// Packet: 0x096e
+packetLen(0x096e, -1) // CZ_REQ_MERGE_ITEM
+
+// Packet: 0x096f
+packetLen(0x096f, 7) // ZC_ACK_MERGE_ITEM
+
+// Packet: 0x0970
+packetLen(0x0970, 31) // CH_MAKE_CHAR_NOT_STATS
+
+// Packet: 0x0971
+packetLen(0x0971, 6) // ZC_PARTY_RECRUIT_REFUSE_VOLUNTEER_TO_PM
+
+// Packet: 0x0972
+packetLen(0x0972, -1) // ZC_SAY_DIALOG2
+
+// Packet: 0x0973
+packetLen(0x0973, 7) // ZC_WAIT_DIALOG2
+
+// Packet: 0x0974
+packetLen(0x0974, 2) // CZ_CANCEL_MERGE_ITEM
+
+// Packet: 0x0975
+packetLen(0x0975, -1) // ZC_STORE_ITEMLIST_NORMAL_V2
+
+// Packet: 0x0976
+packetLen(0x0976, -1) // ZC_STORE_ITEMLIST_EQUIP_V2
+
+// Packet: 0x0977
+packetLen(0x0977, 14) // ZC_HP_INFO
+
+// Packet: 0x0978
+packetLen(0x0978, 6) // CZ_REQ_BEFORE_WORLD_INFO
+
+// Packet: 0x0979
+packetLen(0x0979, 50) // ZC_ACK_BEFORE_WORLD_INFO
+
+// Packet: 0x097a
+packetLen(0x097a, -1) // ZC_ALL_QUEST_LIST2
+
+// Packet: 0x097b
+packetLen(0x097b, -1) // ZC_PERSONAL_INFOMATION2
+
+// Packet: 0x097c
+packetLen(0x097c, 4) // CZ_REQ_RANKING
+
+// Packet: 0x097d
+packetLen(0x097d, 288) // ZC_ACK_RANKING
+
+// Packet: 0x097e
+packetLen(0x097e, 12) // ZC_UPDATE_RANKING_POINT
+
+// Packet: 0x097f
+packetLen(0x097f, -1) // ZC_SELECTCART
+
+// Packet: 0x0980
+packetLen(0x0980, 7) // CZ_SELECTCART
+
+// Packet: 0x0981
+packetLen(0x0981, -1) // ZC_PERSONAL_INFOMATION_CHN
+
+// Packet: 0x0982
+packetLen(0x0982, 7) // ZC_FATIGUE_CHN
+
+// Packet: 0x0983
+packetLen(0x0983, 29) // ZC_MSG_STATE_CHANGE3
+
+// Packet: 0x0984
+packetLen(0x0984, 28) // ZC_EFST_SET_ENTER2
+
+// Packet: 0x0985
+packetLen(0x0985, -1) // ZC_SKILL_POSTDELAY_LIST2
+
+// Packet: 0x0986
+packetLen(0x0986, 10) // AC_SHUTDOWN_NOTIFY
+
+// Packet: 0x0987
+packetLen(0x0987, -1) // CA_LOGIN6
+
+// Packet: 0x0988
+packetLen(0x0988, 6) // ZC_NOTIFY_CLAN_CONNECTINFO
+
+// Packet: 0x0989
+packetLen(0x0989, 2) // ZC_ACK_CLAN_LEAVE
+
+// Packet: 0x098a
+packetLen(0x098a, -1) // ZC_CLANINFO
+
+// Packet: 0x098b
+packetLen(0x098b, 2) // AC_REQ_NEW_USER
+
+// Packet: 0x098c
+packetLen(0x098c, 4) // CA_ACK_NEW_USER
+
+// Packet: 0x098d
+packetLen(0x098d, -1) // CZ_CLAN_CHAT
+
+// Packet: 0x098e
+packetLen(0x098e, -1) // ZC_NOTIFY_CLAN_CHAT
+
+// Packet: 0x098f
+packetLen(0x098f, -1) // CH_DELETE_CHAR3_EXT
+
+// Packet: 0x0990
+packetLen(0x0990, 31) // ZC_ITEM_PICKUP_ACK_V5
+
+// Packet: 0x0991
+packetLen(0x0991, -1) // ZC_INVENTORY_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0992
+packetLen(0x0992, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0993
+packetLen(0x0993, -1) // ZC_CART_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0994
+packetLen(0x0994, -1) // ZC_CART_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0995
+packetLen(0x0995, -1) // ZC_STORE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0996
+packetLen(0x0996, -1) // ZC_STORE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0997
+packetLen(0x0997, -1) // ZC_EQUIPWIN_MICROSCOPE_V5
+
+// Packet: 0x0998
+packetLen(0x0998, 8) // CZ_REQ_WEAR_EQUIP_V5
+
+// Packet: 0x0999
+packetLen(0x0999, 11) // ZC_ACK_WEAR_EQUIP_V5
+
+// Packet: 0x099a
+packetLen(0x099a, 9) // ZC_ACK_TAKEOFF_EQUIP_V5
+
+// Packet: 0x099b
+packetLen(0x099b, 8) // ZC_MAPPROPERTY_R2
+
+// Packet: 0x099c
+packetLen(0x099c, 6) // CH_REQ_CHARINFO_PER_PAGE
+
+// Packet: 0x099d
+packetLen(0x099d, -1) // HC_ACK_CHARINFO_PER_PAGE
+
+// Packet: 0x099e
+packetLen(0x099e, 12) // HC_QUEUE_ORDER
+
+// Packet: 0x099f
+packetLen(0x099f, -1) // ZC_SKILL_ENTRY4
+
+// Packet: 0x09a0
+packetLen(0x09a0, 6) // HC_CHARLIST_NOTIFY
+
+// Packet: 0x09a1
+packetLen(0x09a1, 2) // CH_CHARLIST_REQ
+
+// Packet: 0x09a2
+packetLen(0x09a2, 6) // AC_REQ_MOBILE_OTP
+
+// Packet: 0x09a3
+packetLen(0x09a3, -1) // CA_ACK_MOBILE_OTP
+
+// Packet: 0x09a4
+packetLen(0x09a4, 18) // ZC_DISPATCH_TIMING_INFO_CHN
+
+// Packet: 0x09a5
+packetLen(0x09a5, 7) // AC_REFUSE_LOGIN3
+
+// Packet: 0x09a6
+packetLen(0x09a6, 12) // ZC_BANKING_CHECK
+
+// Packet: 0x09a7
+packetLen(0x09a7, 10) // CZ_REQ_BANKING_DEPOSIT
+
+// Packet: 0x09a8
+packetLen(0x09a8, 16) // ZC_ACK_BANKING_DEPOSIT
+
+// Packet: 0x09a9
+packetLen(0x09a9, 10) // CZ_REQ_BANKING_WITHDRAW
+
+// Packet: 0x09aa
+packetLen(0x09aa, 16) // ZC_ACK_BANKING_WITHDRAW
+
+// Packet: 0x09ab
+packetLen(0x09ab, 6) // CZ_REQ_BANKING_CHECK
+
+// Packet: 0x09ac
+packetLen(0x09ac, -1) // CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO
+
+// Packet: 0x09ad
+packetLen(0x09ad, 10) // ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO
+
+// Packet: 0x09ae
+packetLen(0x09ae, 17) // CZ_REQ_APPLY_BARGAIN_SALE_ITEM
+
+// Packet: 0x09af
+packetLen(0x09af, 4) // ZC_ACK_APPLY_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b0
+packetLen(0x09b0, 8) // CZ_REQ_REMOVE_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b1
+packetLen(0x09b1, 4) // ZC_ACK_REMOVE_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b2
+packetLen(0x09b2, 8) // ZC_NOTIFY_BARGAIN_SALE_SELLING
+
+// Packet: 0x09b3
+packetLen(0x09b3, 4) // ZC_NOTIFY_BARGAIN_SALE_CLOSE
+
+// Packet: 0x09b4
+packetLen(0x09b4, 6) // CZ_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b5
+packetLen(0x09b5, 2) // ZC_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b6
+packetLen(0x09b6, 6) // CZ_REQ_OPEN_BANKING
+
+// Packet: 0x09b7
+packetLen(0x09b7, 4) // ZC_ACK_OPEN_BANKING
+
+// Packet: 0x09b8
+packetLen(0x09b8, 6) // CZ_REQ_CLOSE_BANKING
+
+// Packet: 0x09b9
+packetLen(0x09b9, 4) // ZC_ACK_CLOSE_BANKING
+
+// Packet: 0x09ba
+packetLen(0x09ba, 2) // CZ_REQ_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bb
+packetLen(0x09bb, 6) // ZC_ACK_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bc
+packetLen(0x09bc, 6) // CZ_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09bd
+packetLen(0x09bd, 2) // ZC_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09be
+packetLen(0x09be, 2) // CZ_REQ_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09bf
+packetLen(0x09bf, 4) // ZC_ACK_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09c1
+packetLen(0x09c1, 10) // ZC_C_MARKERINFO
+
+// Packet: 0x09c2
+packetLen(0x09c2, -1) // HC_SECRETSCAN_DATA
+
+// Packet: 0x09c3
+packetLen(0x09c3, 8) // CZ_REQ_COUNT_BARGAIN_SALE_ITEM
+
+// Packet: 0x09c4
+packetLen(0x09c4, 8) // ZC_ACK_COUNT_BARGAIN_SALE_ITEM
+
+// Packet: 0x09c5
+packetLen(0x09c5, 1042) // CS_LOGIN_QUERY
+
+// Packet: 0x09c6
+packetLen(0x09c6, -1) // SC_LOGIN_ANSWER
+
+// Packet: 0x09c7
+packetLen(0x09c7, 18) // SC_LOGIN_ERROR
+
+// Packet: 0x09c8
+packetLen(0x09c8, -1) // CA_LOGIN_OTP
+
+// Packet: 0x09c9
+packetLen(0x09c9, -1) // SC_SOCT
+
+// Packet: 0x09ca
+packetLen(0x09ca, -1) // ZC_SKILL_ENTRY5
+
+// Packet: 0x09cb
+packetLen(0x09cb, 17) // ZC_USE_SKILL2
+
+// Packet: 0x09cc
+packetLen(0x09cc, -1) // ZC_SECRETSCAN_DATA
+
+// Packet: 0x09cd
+packetLen(0x09cd, 8) // ZC_MSG_COLOR
+
+// Packet: 0x09ce
+packetLen(0x09ce, 102) // CZ_ITEM_CREATE_EX
+
+// Packet: 0x09cf
+packetLen(0x09cf, -1) // ZC_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d0
+packetLen(0x09d0, -1) // CZ_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d1
+packetLen(0x09d1, 14) // ZC_PROGRESS_ACTOR
+
+// Packet: 0x09d2
+packetLen(0x09d2, -1) // ZC_GUILDSTORAGE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x09d3
+packetLen(0x09d3, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x09d4
+packetLen(0x09d4, 2) // CZ_NPC_TRADE_QUIT
+
+// Packet: 0x09d5
+packetLen(0x09d5, -1) // ZC_NPC_MARKET_OPEN
+
+// Packet: 0x09d6
+packetLen(0x09d6, -1) // CZ_NPC_MARKET_PURCHASE
+
+// Packet: 0x09d7
+packetLen(0x09d7, -1) // ZC_NPC_MARKET_PURCHASE_RESULT
+
+// Packet: 0x09d8
+packetLen(0x09d8, 2) // CZ_NPC_MARKET_CLOSE
+
+// Packet: 0x09d9
+packetLen(0x09d9, 4) // CZ_REQ_GUILDSTORAGE_LOG
+
+// Packet: 0x09da
+packetLen(0x09da, -1) // ZC_ACK_GUILDSTORAGE_LOG
+
+// Packet: 0x09db
+packetLen(0x09db, -1) // ZC_NOTIFY_MOVEENTRY10
+
+// Packet: 0x09dc
+packetLen(0x09dc, -1) // ZC_NOTIFY_NEWENTRY10
+
+// Packet: 0x09dd
+packetLen(0x09dd, -1) // ZC_NOTIFY_STANDENTRY10
+
+// Packet: 0x09de
+packetLen(0x09de, -1) // ZC_WHISPER02
+
+// Packet: 0x09df
+packetLen(0x09df, 7) // ZC_ACK_WHISPER02
+
+// Packet: 0x09e0
+packetLen(0x09e0, -1) // SC_LOGIN_ANSWER_WITH_ID
+
+// Packet: 0x09e1
+packetLen(0x09e1, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_GUILDSTORAGE
+
+// Packet: 0x09e2
+packetLen(0x09e2, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_BODY
+
+// Packet: 0x09e3
+packetLen(0x09e3, 8) // CZ_MOVE_ITEM_FROM_CART_TO_GUILDSTORAGE
+
+// Packet: 0x09e4
+packetLen(0x09e4, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_CART
+
+// Packet: 0x09e5
+packetLen(0x09e5, 18) // ZC_DELETEITEM_FROM_MCSTORE2
+
+// Packet: 0x09e6
+packetLen(0x09e6, 22) // ZC_UPDATE_ITEM_FROM_BUYING_STORE2
+
+// Packet: 0x09e7
+#if PACKETVER >= 20140716
+packetLen(0x09e7, 3) // ZC_NOTIFY_UNREAD_RODEX
+#elif PACKETVER >= 20140108
+packetLen(0x09e7, 2) // ZC_NOTIFY_UNREAD_RODEX
+#endif
+
+// Packet: 0x09e8
+#if PACKETVER >= 20140212
+packetLen(0x09e8, 11) // CZ_OPEN_RODEXBOX
+#elif PACKETVER >= 20140108
+packetLen(0x09e8, 10) // CZ_OPEN_RODEXBOX
+#endif
+
+// Packet: 0x09e9
+packetLen(0x09e9, 2) // CZ_CLOSE_RODEXBOX
+
+// Packet: 0x09ea
+packetLen(0x09ea, 11) // CZ_REQ_READ_RODEX
+
+// Packet: 0x09eb
+#if PACKETVER >= 20140115
+packetLen(0x09eb, -1) // ZC_ACK_READ_RODEX
+#elif PACKETVER >= 20140108
+packetLen(0x09eb, 23) // ZC_ACK_READ_RODEX
+#endif
+
+// Packet: 0x09ec
+packetLen(0x09ec, -1) // CZ_REQ_SEND_RODEX
+
+// Packet: 0x09ed
+packetLen(0x09ed, 3) // ZC_ACK_SEND_RODEX
+
+// Packet: 0x09ee
+packetLen(0x09ee, 11) // CZ_REQ_NEXT_RODEX
+
+// Packet: 0x09ef
+packetLen(0x09ef, 11) // CZ_REQ_REFRESH_RODEX
+
+// Packet: 0x09f0
+packetLen(0x09f0, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x09f1
+#if PACKETVER >= 20140326
+packetLen(0x09f1, 11) // CZ_REQ_ZENY_FROM_RODEX
+#elif PACKETVER >= 20140115
+packetLen(0x09f1, 10) // CZ_REQ_ZENY_FROM_RODEX
+#endif
+
+// Packet: 0x09f2
+#if PACKETVER >= 20140409
+packetLen(0x09f2, 12) // ZC_ACK_ZENY_FROM_RODEX
+#elif PACKETVER >= 20140326
+packetLen(0x09f2, 4) // ZC_ACK_ZENY_FROM_RODEX
+#elif PACKETVER >= 20140115
+packetLen(0x09f2, 3) // ZC_ACK_ZENY_FROM_RODEX
+#endif
+
+// Packet: 0x09f3
+#if PACKETVER >= 20140326
+packetLen(0x09f3, 11) // CZ_REQ_ITEM_FROM_RODEX
+#elif PACKETVER >= 20140305
+packetLen(0x09f3, 10) // CZ_REQ_ITEM_FROM_RODEX
+#elif PACKETVER >= 20140115
+packetLen(0x09f3, 15) // CZ_REQ_ITEM_FROM_RODEX
+#endif
+
+// Packet: 0x09f4
+#if PACKETVER >= 20140409
+packetLen(0x09f4, 12) // ZC_ACK_ITEM_FROM_RODEX
+#elif PACKETVER >= 20140326
+packetLen(0x09f4, 4) // ZC_ACK_ITEM_FROM_RODEX
+#elif PACKETVER >= 20140305
+packetLen(0x09f4, 3) // ZC_ACK_ITEM_FROM_RODEX
+#elif PACKETVER >= 20140115
+packetLen(0x09f4, 12) // ZC_ACK_ITEM_FROM_RODEX
+#endif
+
+// Packet: 0x09f5
+packetLen(0x09f5, 11) // CZ_REQ_DELETE_RODEX
+
+// Packet: 0x09f6
+packetLen(0x09f6, 11) // ZC_ACK_DELETE_RODEX
+
+// Packet: 0x09f7
+packetLen(0x09f7, 75) // ZC_PROPERTY_HOMUN_2
+
+// Packet: 0x09f8
+#if PACKETVER >= 20140115
+packetLen(0x09f8, -1) // ZC_ALL_QUEST_LIST3
+#endif
+
+// Packet: 0x09f9
+#if PACKETVER >= 20140122
+packetLen(0x09f9, 143) // ZC_ADD_QUEST_EX
+#elif PACKETVER >= 20140115
+packetLen(0x09f9, 131) // ZC_ADD_QUEST_EX
+#endif
+
+// Packet: 0x09fa
+#if PACKETVER >= 20140115
+packetLen(0x09fa, -1) // ZC_UPDATE_MISSION_HUNT_EX
+#endif
+
+// Packet: 0x09fb
+#if PACKETVER >= 20140122
+packetLen(0x09fb, -1) // CZ_PET_EVOLUTION
+#endif
+
+// Packet: 0x09fc
+#if PACKETVER >= 20140122
+packetLen(0x09fc, 6) // ZC_PET_EVOLUTION_RESULT
+#endif
+
+// Packet: 0x09fd
+#if PACKETVER >= 20140122
+packetLen(0x09fd, -1) // ZC_NOTIFY_MOVEENTRY11
+#endif
+
+// Packet: 0x09fe
+#if PACKETVER >= 20140122
+packetLen(0x09fe, -1) // ZC_NOTIFY_NEWENTRY11
+#endif
+
+// Packet: 0x09ff
+#if PACKETVER >= 20140122
+packetLen(0x09ff, -1) // ZC_NOTIFY_STANDENTRY11
+#endif
+
+// Packet: 0x0a00
+#if PACKETVER >= 20140129
+packetLen(0x0a00, 269) // ZC_SHORTCUT_KEY_LIST_V3
+#endif
+
+// Packet: 0x0a01
+#if PACKETVER >= 20140129
+packetLen(0x0a01, 3) // CZ_SHORTCUTKEYBAR_ROTATE
+#endif
+
+// Packet: 0x0a02
+#if PACKETVER >= 20140212
+packetLen(0x0a02, 4) // ZC_DRESSROOM_OPEN
+#endif
+
+// Packet: 0x0a03
+#if PACKETVER >= 20140326
+packetLen(0x0a03, 2) // CZ_REQ_CANCEL_WRITE_RODEX
+#elif PACKETVER >= 20140226
+packetLen(0x0a03, 14) // CZ_REQ_CANCEL_WRITE_RODEX
+#endif
+
+// Packet: 0x0a04
+#if PACKETVER >= 20140416
+packetLen(0x0a04, 6) // CZ_REQ_ADD_ITEM_RODEX
+#elif PACKETVER >= 20140326
+// removed
+#elif PACKETVER >= 20140226
+packetLen(0x0a04, 11) // CZ_REQ_ADD_ITEM_RODEX
+#endif
+
+// Packet: 0x0a05
+#if PACKETVER >= 20141119
+packetLen(0x0a05, 53) // ZC_ACK_ADD_ITEM_RODEX
+#elif PACKETVER >= 20141008
+packetLen(0x0a05, 49) // ZC_ACK_ADD_ITEM_RODEX
+#elif PACKETVER >= 20140416
+packetLen(0x0a05, 48) // ZC_ACK_ADD_ITEM_RODEX
+#elif PACKETVER >= 20140226
+packetLen(0x0a05, 6) // ZC_ACK_ADD_ITEM_RODEX
+#endif
+
+// Packet: 0x0a06
+#if PACKETVER >= 20140416
+packetLen(0x0a06, 6) // CZ_REQ_REMOVE_RODEX_ITEM
+#elif PACKETVER >= 20140226
+packetLen(0x0a06, 5) // CZ_REQ_REMOVE_RODEX_ITEM
+#endif
+
+// Packet: 0x0a07
+#if PACKETVER >= 20140521
+packetLen(0x0a07, 9) // ZC_ACK_REMOVE_RODEX_ITEM
+#elif PACKETVER >= 20140416
+packetLen(0x0a07, 7) // ZC_ACK_REMOVE_RODEX_ITEM
+#elif PACKETVER >= 20140326
+packetLen(0x0a07, 6) // ZC_ACK_REMOVE_RODEX_ITEM
+#elif PACKETVER >= 20140305
+packetLen(0x0a07, 4) // ZC_ACK_REMOVE_RODEX_ITEM
+#endif
+
+// Packet: 0x0a08
+#if PACKETVER >= 20140416
+packetLen(0x0a08, 26) // CZ_REQ_OPEN_WRITE_RODEX
+#elif PACKETVER >= 20140326
+packetLen(0x0a08, 7) // CZ_REQ_OPEN_WRITE_RODEX
+#elif PACKETVER >= 20140305
+packetLen(0x0a08, 5) // CZ_REQ_OPEN_WRITE_RODEX
+#endif
+
+// Packet: 0x0a09
+#if PACKETVER >= 20140312
+packetLen(0x0a09, 45) // ZC_ADD_EXCHANGE_ITEM3
+#elif PACKETVER >= 20140305
+packetLen(0x0a09, 50) // ZC_ADD_EXCHANGE_ITEM3
+#endif
+
+// Packet: 0x0a0a
+#if PACKETVER >= 20140312
+packetLen(0x0a0a, 47) // ZC_ADD_ITEM_TO_STORE3
+#elif PACKETVER >= 20140305
+packetLen(0x0a0a, 52) // ZC_ADD_ITEM_TO_STORE3
+#endif
+
+// Packet: 0x0a0b
+#if PACKETVER >= 20140312
+packetLen(0x0a0b, 47) // ZC_ADD_ITEM_TO_CART3
+#elif PACKETVER >= 20140305
+packetLen(0x0a0b, 52) // ZC_ADD_ITEM_TO_CART3
+#endif
+
+// Packet: 0x0a0c
+#if PACKETVER >= 20140312
+packetLen(0x0a0c, 56) // ZC_ITEM_PICKUP_ACK_V6
+#elif PACKETVER >= 20140305
+packetLen(0x0a0c, 61) // ZC_ITEM_PICKUP_ACK_V6
+#endif
+
+// Packet: 0x0a0d
+#if PACKETVER >= 20140312
+packetLen(0x0a0d, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V6
+#elif PACKETVER >= 20140305
+packetLen(0x0a0d, 4) // ZC_INVENTORY_ITEMLIST_EQUIP_V6
+#endif
+
+// Packet: 0x0a0e
+#if PACKETVER >= 20140312
+packetLen(0x0a0e, 14) // ZC_BATTLEFIELD_NOTIFY_HP2
+#endif
+
+// Packet: 0x0a0f
+#if PACKETVER >= 20140402
+packetLen(0x0a0f, -1) // ZC_CART_ITEMLIST_EQUIP_V6
+#endif
+
+// Packet: 0x0a10
+#if PACKETVER >= 20140402
+packetLen(0x0a10, -1) // ZC_STORE_ITEMLIST_EQUIP_V6
+#endif
+
+// Packet: 0x0a11
+#if PACKETVER >= 20140402
+packetLen(0x0a11, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V6
+#endif
+
+// Packet: 0x0a12
+#if PACKETVER >= 20140416
+packetLen(0x0a12, 27) // ZC_ACK_OPEN_WRITE_RODEX
+#endif
+
+// Packet: 0x0a13
+#if PACKETVER >= 20140423
+packetLen(0x0a13, 26) // CZ_CHECK_RECEIVE_CHARACTER_NAME
+#elif PACKETVER >= 20140416
+packetLen(0x0a13, 2) // CZ_CHECK_RECEIVE_CHARACTER_NAME
+#endif
+
+// Packet: 0x0a14
+#if PACKETVER >= 20140521
+packetLen(0x0a14, 10) // ZC_CHECK_RECEIVE_CHARACTER_NAME
+#elif PACKETVER >= 20140423
+packetLen(0x0a14, 6) // ZC_CHECK_RECEIVE_CHARACTER_NAME
+#endif
+
+// Packet: 0x0a15
+#if PACKETVER >= 20140508
+packetLen(0x0a15, 12) // ZC_GOLDPCCAFE_POINT
+#elif PACKETVER >= 20140430
+packetLen(0x0a15, 11) // ZC_GOLDPCCAFE_POINT
+#endif
+
+// Packet: 0x0a16
+#if PACKETVER >= 20140430
+packetLen(0x0a16, 26) // CZ_DYNAMICNPC_CREATE_REQUEST
+#endif
+
+// Packet: 0x0a17
+#if PACKETVER >= 20140430
+packetLen(0x0a17, 6) // ZC_DYNAMICNPC_CREATE_RESULT
+#endif
+
+// Packet: 0x0a18
+#if PACKETVER >= 20140611
+packetLen(0x0a18, 14) // ZC_ACCEPT_ENTER3
+#elif PACKETVER >= 20140605
+packetLen(0x0a18, 2) // ZC_ACCEPT_ENTER3
+#endif
+
+// Packet: 0x0a19
+#if PACKETVER >= 20140611
+packetLen(0x0a19, 2) // CZ_REQ_OPEN_ROULETTE
+#elif PACKETVER >= 20140605
+packetLen(0x0a19, -1) // CZ_REQ_OPEN_ROULETTE
+#endif
+
+// Packet: 0x0a1a
+#if PACKETVER >= 20140611
+packetLen(0x0a1a, 23) // ZC_ACK_OPEN_ROULETTE
+#elif PACKETVER >= 20140605
+packetLen(0x0a1a, 10) // ZC_ACK_OPEN_ROULETTE
+#endif
+
+// Packet: 0x0a1b
+#if PACKETVER >= 20140605
+packetLen(0x0a1b, 2) // CZ_REQ_ROULETTE_INFO
+#endif
+
+// Packet: 0x0a1c
+#if PACKETVER >= 20140611
+packetLen(0x0a1c, -1) // ZC_ACK_ROULEITTE_INFO
+#elif PACKETVER >= 20140605
+packetLen(0x0a1c, 6) // ZC_ACK_ROULEITTE_INFO
+#endif
+
+// Packet: 0x0a1d
+#if PACKETVER >= 20140611
+packetLen(0x0a1d, 2) // CZ_REQ_CLOSE_ROULETTE
+#elif PACKETVER >= 20140605
+packetLen(0x0a1d, 14) // CZ_REQ_CLOSE_ROULETTE
+#endif
+
+// Packet: 0x0a1e
+#if PACKETVER >= 20140611
+packetLen(0x0a1e, 3) // ZC_ACK_CLOSE_ROULETTE
+#endif
+
+// Packet: 0x0a1f
+#if PACKETVER >= 20140611
+packetLen(0x0a1f, 2) // CZ_REQ_GENERATE_ROULETTE
+#endif
+
+// Packet: 0x0a20
+#if PACKETVER >= 20140611
+packetLen(0x0a20, 21) // ZC_ACK_GENERATE_ROULETTE
+#endif
+
+// Packet: 0x0a21
+#if PACKETVER >= 20140618
+packetLen(0x0a21, 3) // CZ_RECV_ROULETTE_ITEM
+#elif PACKETVER >= 20140611
+packetLen(0x0a21, 6) // CZ_RECV_ROULETTE_ITEM
+#endif
+
+// Packet: 0x0a22
+#if PACKETVER >= 20140618
+packetLen(0x0a22, 5) // ZC_RECV_ROULETTE_ITEM
+#elif PACKETVER >= 20140611
+packetLen(0x0a22, 3) // ZC_RECV_ROULETTE_ITEM
+#endif
+
+// Packet: 0x0a23
+#if PACKETVER >= 20140611
+packetLen(0x0a23, -1) // ZC_ALL_ACH_LIST
+#endif
+
+// Packet: 0x0a24
+#if PACKETVER >= 20141001
+packetLen(0x0a24, 66) // ZC_ACH_UPDATE
+#elif PACKETVER >= 20140723
+packetLen(0x0a24, 56) // ZC_ACH_UPDATE
+#elif PACKETVER >= 20140625
+packetLen(0x0a24, 36) // ZC_ACH_UPDATE
+#elif PACKETVER >= 20140611
+packetLen(0x0a24, 35) // ZC_ACH_UPDATE
+#endif
+
+// Packet: 0x0a25
+#if PACKETVER >= 20140611
+packetLen(0x0a25, 6) // CZ_REQ_ACH_REWARD
+#endif
+
+// Packet: 0x0a26
+#if PACKETVER >= 20140611
+packetLen(0x0a26, 7) // ZC_REQ_ACH_REWARD_ACK
+#endif
+
+// Packet: 0x0a27
+#if PACKETVER >= 20140625
+packetLen(0x0a27, 8) // ZC_RECOVERY2
+#endif
+
+// Packet: 0x0a28
+#if PACKETVER >= 20140625
+packetLen(0x0a28, 3) // ZC_ACK_OPENSTORE2
+#endif
+
+// Packet: 0x0a29
+#if PACKETVER >= 20140702
+packetLen(0x0a29, 6) // ZC_REQ_AU_BOT
+#endif
+
+// Packet: 0x0a2a
+#if PACKETVER >= 20140702
+packetLen(0x0a2a, 6) // CZ_ACK_AU_BOT
+#endif
+
+// Packet: 0x0a2b
+#if PACKETVER >= 20140723
+packetLen(0x0a2b, 14) // ZC_SE_CASHSHOP_OPEN2
+#endif
+
+// Packet: 0x0a2c
+#if PACKETVER >= 20140723
+packetLen(0x0a2c, 12) // ZC_SE_PC_BUY_TAIWANCASHITEM_RESULT
+#endif
+
+// Packet: 0x0a2d
+#if PACKETVER >= 20140820
+packetLen(0x0a2d, -1) // ZC_EQUIPWIN_MICROSCOPE_V6
+#endif
+
+// Packet: 0x0a2e
+#if PACKETVER >= 20140827
+packetLen(0x0a2e, 6) // CZ_REQ_CHANGE_TITLE
+#endif
+
+// Packet: 0x0a2f
+#if PACKETVER >= 20140827
+packetLen(0x0a2f, 7) // ZC_ACK_CHANGE_TITLE
+#endif
+
+// Packet: 0x0a30
+#if PACKETVER >= 20140917
+packetLen(0x0a30, 106) // ZC_ACK_REQNAMEALL2
+#endif
+
+// Packet: 0x0a31
+#if PACKETVER >= 20140917
+packetLen(0x0a31, -1) // ZC_RESULT_PACKAGE_ITEM_TEST
+#endif
+
+// Packet: 0x0a32
+#if PACKETVER >= 20140924
+packetLen(0x0a32, 2) // ZC_OPEN_RODEX_THROUGH_NPC_ONLY
+#endif
+
+// Packet: 0x0a33
+#if PACKETVER >= 20140924
+packetLen(0x0a33, 7) // ZC_UPDATE_ROULETTE_COIN
+#endif
+
+// Packet: 0x0a34
+#if PACKETVER >= 20140924
+packetLen(0x0a34, 6) // ZC_UPDATE_TAIWANCASH
+#endif
+
+// Packet: 0x0a35
+#if PACKETVER >= 20141119
+packetLen(0x0a35, 4) // CZ_REQ_ONECLICK_ITEMIDENTIFY
+#endif
+
+// Packet: 0x0a36
+#if PACKETVER >= 20141126
+packetLen(0x0a36, 7) // ZC_HP_INFO_TINY
+#endif
+
+// Packet: 0x0a37
+#if PACKETVER >= 20141126
+packetLen(0x0a37, 57) // ZC_ITEM_PICKUP_ACK_V7
+#endif
+
+
+#endif /* COMMON_PACKETS2014_LEN_MAIN_H */
diff --git a/src/common/packets/packets2014_len_re.h b/src/common/packets/packets2014_len_re.h
new file mode 100644
index 000000000..e71f4e975
--- /dev/null
+++ b/src/common/packets/packets2014_len_re.h
@@ -0,0 +1,9014 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2014_LEN_RE_H
+#define COMMON_PACKETS2014_LEN_RE_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+#if PACKETVER >= 20140625
+packetLen(0x006d, 149) // HC_ACCEPT_MAKECHAR
+#elif PACKETVER >= 20140108
+packetLen(0x006d, 146) // HC_ACCEPT_MAKECHAR
+#endif
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 22) // CZ_ENTER
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 44) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 10) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, 14)
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+packetLen(0x0094, 19) // CZ_REQNAME
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+packetLen(0x00a7, 9)
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 9) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+packetLen(0x00f7, 17) // CZ_REQUEST_TIME
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+packetLen(0x0113, 25) // CZ_USE_SKILL
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 37) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+#if PACKETVER >= 20140226
+packetLen(0x01c4, 53) // ZC_ADD_ITEM_TO_STORE2
+// ignored packet from 2014-02-26bRagexeRE
+#elif PACKETVER >= 20140219
+packetLen(0x01c4, 53) // ZC_ADD_ITEM_TO_STORE2
+// ignored packet from 2014-02-19bRagexeRE
+#elif PACKETVER >= 20140129
+packetLen(0x01c4, 43) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20140108
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+#endif
+
+// Packet: 0x01c5
+#if PACKETVER >= 20140226
+packetLen(0x01c5, 53) // ZC_ADD_ITEM_TO_CART2
+// ignored packet from 2014-02-26bRagexeRE
+#elif PACKETVER >= 20140219
+packetLen(0x01c5, 53) // ZC_ADD_ITEM_TO_CART2
+// ignored packet from 2014-02-19bRagexeRE
+#elif PACKETVER >= 20140129
+packetLen(0x01c5, 43) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20140108
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+#endif
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+#if PACKETVER >= 20141231
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20141210
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20141203
+packetLen(0x0202, 6) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20141126
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20141119
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20141105
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20141029
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20141015
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20141008
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140903
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140827
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140813
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140806
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140702
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140625
+packetLen(0x0202, 8) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140605
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140528
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140508
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+// ignored packet from 2014-05-08bRagexeRE
+#elif PACKETVER >= 20140423
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140416
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140319
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140312
+packetLen(0x0202, 10) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140305
+packetLen(0x0202, 6) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140226
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140219
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140212
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140205
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140115
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20140108
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x020f
+packetLen(0x020f, 10) // CZ_REQ_PVPPOINT
+
+// Packet: 0x0210
+packetLen(0x0210, 22) // ZC_ACK_PVPPOINT
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+
+// Packet: 0x022b
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+
+// Packet: 0x022c
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+
+// Packet: 0x022d
+#if PACKETVER >= 20141231
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20141112
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20141105
+packetLen(0x022d, 4) // CZ_COMMAND_MER
+#elif PACKETVER >= 20141029
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20141022
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20141015
+packetLen(0x022d, 8) // CZ_COMMAND_MER
+#elif PACKETVER >= 20141008
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140924
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140917
+packetLen(0x022d, 26) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140903
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140827
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140813
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140806
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140730
+packetLen(0x022d, 10) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140709
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140702
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140514
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140508
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+// ignored packet from 2014-05-08aRagexeRE
+#elif PACKETVER >= 20140430
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140423
+packetLen(0x022d, 18) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140416
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140212
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140205
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140115
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20140108
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#endif
+
+// Packet: 0x022e
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+
+// Packet: 0x022f
+packetLen(0x022f, 5) // ZC_FEED_MER
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+#if PACKETVER >= 20141231
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20141105
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20141029
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20141022
+packetLen(0x023b, 10) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20141015
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20141008
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140903
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140827
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140813
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140806
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140709
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140702
+packetLen(0x023b, -1) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140625
+packetLen(0x023b, 8) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140508
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+// ignored packet from 2014-05-08bRagexeRE
+#elif PACKETVER >= 20140430
+packetLen(0x023b, 6) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140423
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140416
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140409
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140402
+packetLen(0x023b, 6) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140319
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140312
+packetLen(0x023b, 8) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140212
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140205
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140115
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20140108
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#endif
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+
+// Packet: 0x0275
+packetLen(0x0275, 37) // CH_ENTER2
+
+// Packet: 0x0276
+packetLen(0x0276, -1) // AC_ACCEPT_LOGIN2
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+#if PACKETVER >= 20141231
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20141210
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20141203
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20141105
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20141008
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140917
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140827
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140813
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140806
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140611
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140605
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140528
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140521
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140508
+packetLen(0x0281, 4) // CZ_GANGSI_RANK
+// ignored packet from 2014-05-08bRagexeRE
+#elif PACKETVER >= 20140423
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140416
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140312
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140305
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140212
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140205
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140129
+packetLen(0x0281, 10) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140115
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20140108
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#endif
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+
+// Packet: 0x0288
+packetLen(0x0288, -1) // CZ_PC_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0289
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0296
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0297
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0298
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+
+// Packet: 0x0299
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+
+// Packet: 0x029a
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+
+// Packet: 0x029b
+packetLen(0x029b, 80) // ZC_MER_INIT
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a5
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+
+// Packet: 0x02a6
+packetLen(0x02a6, -1) // ZC_HACKSH_CPX_MSG
+
+// Packet: 0x02a7
+packetLen(0x02a7, -1) // CZ_HACKSH_CPX_MSG
+
+// Packet: 0x02aa
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+
+// Packet: 0x02ab
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+
+// Packet: 0x02ac
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+
+// Packet: 0x02ad
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+
+// Packet: 0x02b0
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+
+// Packet: 0x02b1
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+
+// Packet: 0x02b2
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+
+// Packet: 0x02b3
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+
+// Packet: 0x02b4
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+
+// Packet: 0x02b5
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+
+// Packet: 0x02b6
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+
+// Packet: 0x02b7
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+
+// Packet: 0x02b8
+packetLen(0x02b8, 22) // ZC_ITEM_PICKUP_PARTY
+
+// Packet: 0x02b9
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+
+// Packet: 0x02ba
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+
+// Packet: 0x02bb
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+
+// Packet: 0x02bc
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+
+// Packet: 0x02c1
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+
+// Packet: 0x02c2
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+
+// Packet: 0x02c4
+#if PACKETVER >= 20140730
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20140723
+packetLen(0x02c4, 6) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20140514
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20140508
+packetLen(0x02c4, 90) // CZ_PARTY_JOIN_REQ
+// ignored packet from 2014-05-08aRagexeRE
+#elif PACKETVER >= 20140326
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20140319
+packetLen(0x02c4, 6) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20140108
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#endif
+
+// Packet: 0x02c5
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c6
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+
+// Packet: 0x02c7
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c8
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+
+// Packet: 0x02c9
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+
+// Packet: 0x02ca
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+
+// Packet: 0x02cb
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+
+// Packet: 0x02cc
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+
+// Packet: 0x02cd
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+
+// Packet: 0x02ce
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+
+// Packet: 0x02cf
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+
+// Packet: 0x02d0
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d1
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d2
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d3
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+
+// Packet: 0x02d4
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+
+// Packet: 0x02d5
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+
+// Packet: 0x02d6
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d7
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d8
+packetLen(0x02d8, 10) // CZ_CONFIG
+
+// Packet: 0x02d9
+packetLen(0x02d9, 10) // ZC_CONFIG
+
+// Packet: 0x02da
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+
+// Packet: 0x02db
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+
+// Packet: 0x02dc
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+
+// Packet: 0x02dd
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+
+// Packet: 0x02de
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+
+// Packet: 0x02df
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+
+// Packet: 0x02e0
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+
+// Packet: 0x02e1
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+
+// Packet: 0x02e2
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+
+// Packet: 0x02e3
+packetLen(0x02e3, 22) // CZ_USE_SKILL_NEW_JAPEN
+
+// Packet: 0x02e4
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+
+// Packet: 0x02e5
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+
+// Packet: 0x02e6
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+
+// Packet: 0x02e7
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+
+// Packet: 0x02e8
+packetLen(0x02e8, -1) // ZC_NORMAL_ITEMLIST3
+
+// Packet: 0x02e9
+packetLen(0x02e9, -1) // ZC_CART_NORMAL_ITEMLIST3
+
+// Packet: 0x02ea
+packetLen(0x02ea, -1) // ZC_STORE_NORMAL_ITEMLIST3
+
+// Packet: 0x02eb
+packetLen(0x02eb, 13) // ZC_ACCEPT_ENTER2
+
+// Packet: 0x02ec
+packetLen(0x02ec, 67) // ZC_NOTIFY_MOVEENTRY4
+
+// Packet: 0x02ed
+packetLen(0x02ed, 59) // ZC_NOTIFY_NEWENTRY4
+
+// Packet: 0x02ee
+packetLen(0x02ee, 60) // ZC_NOTIFY_STANDENTRY4
+
+// Packet: 0x02ef
+packetLen(0x02ef, 8) // ZC_NOTIFY_FONT
+
+// Packet: 0x02f0
+packetLen(0x02f0, 10) // ZC_PROGRESS
+
+// Packet: 0x02f1
+packetLen(0x02f1, 2) // CZ_PROGRESS
+
+// Packet: 0x02f2
+packetLen(0x02f2, 2) // ZC_PROGRESS_CANCEL
+
+// Packet: 0x02f3
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+
+// Packet: 0x02f4
+packetLen(0x02f4, 3) // ZC_IRMAIL_SEND_RES
+
+// Packet: 0x02f5
+packetLen(0x02f5, 7) // ZC_IRMAIL_NOTIFY
+
+// Packet: 0x02f6
+packetLen(0x02f6, 7) // CZ_IRMAIL_LIST
+
+// Packet: 0x035c
+packetLen(0x035c, 2) // CZ_OPEN_SIMPLE_CASHSHOP_ITEMLIST
+
+// Packet: 0x035d
+packetLen(0x035d, -1) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+
+// Packet: 0x035e
+packetLen(0x035e, 2) // CZ_CLOSE_WINDOW
+
+// Packet: 0x035f
+#if PACKETVER >= 20141231
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20141217
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20141210
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20141203
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20141126
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20141112
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20141105
+packetLen(0x035f, 10) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20141001
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140917
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140827
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140820
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140806
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140709
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140702
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140611
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140605
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140528
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140521
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140514
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140508
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+// ignored packet from 2014-05-08aRagexeRE
+#elif PACKETVER >= 20140430
+packetLen(0x035f, 36) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140423
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140416
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140312
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140226
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140212
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140129
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140122
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20140108
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#endif
+
+// Packet: 0x0360
+#if PACKETVER >= 20141231
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20141223
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20141217
+packetLen(0x0360, 8) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20141210
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20141203
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20141126
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20141112
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20141105
+packetLen(0x0360, -1) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20141001
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140917
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140827
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140820
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140806
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140709
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140702
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140611
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140605
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140528
+packetLen(0x0360, 36) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140521
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140514
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140430
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140423
+packetLen(0x0360, 36) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140416
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140409
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140402
+packetLen(0x0360, 5) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140312
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140226
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140219
+packetLen(0x0360, 4) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140212
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140129
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140122
+packetLen(0x0360, 7) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20140108
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#endif
+
+// Packet: 0x0361
+#if PACKETVER >= 20141231
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20141223
+packetLen(0x0361, 8) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20141105
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20141029
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20141015
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20141008
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20141001
+packetLen(0x0361, 6) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20140903
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20140827
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20140813
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20140806
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20140514
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20140508
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20140423
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20140416
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20140312
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20140226
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20140212
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20140205
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20140129
+packetLen(0x0361, 8) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20140122
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20140115
+packetLen(0x0361, 6) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20140108
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#endif
+
+// Packet: 0x0362
+#if PACKETVER >= 20141231
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20141210
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20141203
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20141119
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20141112
+packetLen(0x0362, 26) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20141105
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20141029
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20141022
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20141008
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140917
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140827
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140813
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140806
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140723
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140716
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140611
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140605
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140528
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140521
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140508
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+// ignored packet from 2014-05-08bRagexeRE
+#elif PACKETVER >= 20140423
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140416
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140402
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140326
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140312
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140305
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140226
+packetLen(0x0362, 26) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140212
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140205
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140115
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20140108
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#endif
+
+// Packet: 0x0363
+#if PACKETVER >= 20141231
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20141105
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20141029
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20141022
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20141008
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140917
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140827
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140813
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140806
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140611
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140605
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140528
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140521
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140508
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+// ignored packet from 2014-05-08bRagexeRE
+#elif PACKETVER >= 20140430
+packetLen(0x0363, 10) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140423
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140416
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140312
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140305
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140212
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140205
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140115
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20140108
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#endif
+
+// Packet: 0x0364
+#if PACKETVER >= 20141231
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20141105
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20141029
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20141022
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20141015
+packetLen(0x0364, 5) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20141008
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140917
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140827
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140813
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140806
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140730
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140723
+packetLen(0x0364, 36) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140716
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140702
+packetLen(0x0364, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140611
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140605
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140528
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140521
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140508
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+// ignored packet from 2014-05-08bRagexeRE
+#elif PACKETVER >= 20140423
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140416
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140409
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140402
+packetLen(0x0364, 10) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140312
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140305
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140226
+packetLen(0x0364, 36) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140219
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140212
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140205
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140115
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20140108
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#endif
+
+// Packet: 0x0365
+#if PACKETVER >= 20141231
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20141105
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20141029
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20141022
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20141008
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20141001
+packetLen(0x0365, 12) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140924
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140917
+packetLen(0x0365, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140827
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140820
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140813
+packetLen(0x0365, 36) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140806
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140611
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140605
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140528
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140521
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140508
+packetLen(0x0365, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+// ignored packet from 2014-05-08bRagexeRE
+#elif PACKETVER >= 20140423
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140416
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140402
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140326
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140312
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140305
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140212
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140205
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140115
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20140108
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#endif
+
+// Packet: 0x0366
+#if PACKETVER >= 20141231
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20141217
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20141210
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20141203
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20141126
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20141105
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20141001
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140924
+packetLen(0x0366, 10) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140917
+packetLen(0x0366, 19) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140827
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140820
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140806
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140730
+packetLen(0x0366, 10) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140709
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140702
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140611
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140605
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140528
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140521
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140514
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140508
+packetLen(0x0366, 26) // CZ_USE_SKILL_TOGROUND2
+// ignored packet from 2014-05-08aRagexeRE
+#elif PACKETVER >= 20140430
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140423
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140416
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140319
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140312
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140226
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140212
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140129
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140122
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20140108
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#endif
+
+// Packet: 0x0367
+#if PACKETVER >= 20141210
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20141203
+packetLen(0x0367, 6) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20141126
+packetLen(0x0367, 8) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20141001
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20140924
+packetLen(0x0367, 26) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20140917
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20140806
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20140730
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20140508
+packetLen(0x0367, 90) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+// ignored packet from 2014-05-08bRagexeRE
+#elif PACKETVER >= 20140205
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20140129
+packetLen(0x0367, 6) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20140122
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20140115
+packetLen(0x0367, 8) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20140108
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#endif
+
+// Packet: 0x0368
+#if PACKETVER >= 20141231
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20141217
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20141210
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20141203
+packetLen(0x0368, 8) // CZ_REQNAME2
+#elif PACKETVER >= 20141126
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20141105
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20141001
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20140917
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20140827
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20140820
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20140806
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20140730
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20140723
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20140709
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20140702
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20140611
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20140605
+packetLen(0x0368, 7) // CZ_REQNAME2
+#elif PACKETVER >= 20140528
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20140521
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20140514
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20140508
+packetLen(0x0368, 6) // CZ_REQNAME2
+// ignored packet from 2014-05-08bRagexeRE
+#elif PACKETVER >= 20140423
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20140416
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20140312
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20140226
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20140212
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20140129
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20140122
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20140108
+packetLen(0x0368, 6) // CZ_REQNAME2
+#endif
+
+// Packet: 0x0369
+#if PACKETVER >= 20141231
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20141217
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20141210
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20141203
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20141126
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20141105
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20141029
+packetLen(0x0369, 5) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20141001
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140924
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140917
+packetLen(0x0369, 6) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140827
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140820
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140806
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140709
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140702
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140611
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140605
+packetLen(0x0369, 19) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140528
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140521
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140514
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140508
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+// ignored packet from 2014-05-08aRagexeRE
+#elif PACKETVER >= 20140430
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140423
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140416
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140312
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140226
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140219
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140212
+packetLen(0x0369, 18) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140129
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140122
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20140108
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#endif
+
+// Packet: 0x03dd
+packetLen(0x03dd, 18) // AHC_GAME_GUARD
+
+// Packet: 0x03de
+packetLen(0x03de, 18) // CAH_ACK_GAME_GUARD
+
+// Packet: 0x0436
+#if PACKETVER >= 20141231
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20141217
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20141210
+packetLen(0x0436, 5) // CZ_ENTER2
+#elif PACKETVER >= 20141105
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20141029
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20141015
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20141008
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20140903
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20140827
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20140813
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20140806
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20140730
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20140723
+packetLen(0x0436, 12) // CZ_ENTER2
+#elif PACKETVER >= 20140611
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20140605
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20140508
+packetLen(0x0436, 19) // CZ_ENTER2
+// ignored packet from 2014-05-08bRagexeRE
+#elif PACKETVER >= 20140430
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20140423
+packetLen(0x0436, 26) // CZ_ENTER2
+#elif PACKETVER >= 20140416
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20140312
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20140305
+packetLen(0x0436, 10) // CZ_ENTER2
+#elif PACKETVER >= 20140212
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20140205
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20140115
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20140108
+packetLen(0x0436, 4) // CZ_ENTER2
+#endif
+
+// Packet: 0x0437
+#if PACKETVER >= 20141231
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20141217
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20141210
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20141203
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20141126
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20141105
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20141029
+packetLen(0x0437, 36) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20141001
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140917
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140827
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140820
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140806
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140730
+packetLen(0x0437, 19) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140716
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140709
+packetLen(0x0437, 7) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140702
+packetLen(0x0437, 26) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140611
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140605
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140528
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140521
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140514
+packetLen(0x0437, 12) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140508
+packetLen(0x0437, 7) // CZ_REQUEST_ACT2
+// ignored packet from 2014-05-08bRagexeRE
+#elif PACKETVER >= 20140430
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140423
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140416
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140312
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140226
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140212
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140129
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140122
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20140108
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#endif
+
+// Packet: 0x0438
+#if PACKETVER >= 20141231
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20141223
+packetLen(0x0438, 26) // CZ_USE_SKILL2
+#elif PACKETVER >= 20141217
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20141210
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20141203
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20141126
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20141119
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20141112
+packetLen(0x0438, 6) // CZ_USE_SKILL2
+#elif PACKETVER >= 20141105
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20141029
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20141022
+packetLen(0x0438, 36) // CZ_USE_SKILL2
+#elif PACKETVER >= 20141001
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140917
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140827
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140820
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140806
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140709
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140702
+packetLen(0x0438, 8) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140618
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140611
+packetLen(0x0438, -1) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140605
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140528
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140521
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140514
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140430
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140423
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140416
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140312
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140305
+packetLen(0x0438, 19) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140226
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140219
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140212
+packetLen(0x0438, 90) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140129
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140122
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20140108
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#endif
+
+// Packet: 0x0439
+packetLen(0x0439, 8) // CZ_USE_ITEM2
+
+// Packet: 0x043d
+packetLen(0x043d, 8) // ZC_SKILL_POSTDELAY
+
+// Packet: 0x043e
+packetLen(0x043e, -1) // ZC_SKILL_POSTDELAY_LIST
+
+// Packet: 0x043f
+packetLen(0x043f, 25) // ZC_MSG_STATE_CHANGE2
+
+// Packet: 0x0440
+packetLen(0x0440, 10) // ZC_MILLENNIUMSHIELD
+
+// Packet: 0x0441
+packetLen(0x0441, 4) // ZC_SKILLINFO_DELETE
+
+// Packet: 0x0442
+packetLen(0x0442, -1) // ZC_SKILL_SELECT_REQUEST
+
+// Packet: 0x0443
+packetLen(0x0443, 8) // CZ_SKILL_SELECT_RESPONSE
+
+// Packet: 0x0444
+packetLen(0x0444, -1) // ZC_SIMPLE_CASH_POINT_ITEMLIST
+
+// Packet: 0x0445
+packetLen(0x0445, 10) // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0446
+packetLen(0x0446, 14) // ZC_QUEST_NOTIFY_EFFECT
+
+// Packet: 0x0447
+packetLen(0x0447, 2) // CZ_BLOCKING_PLAY_CANCEL
+
+// Packet: 0x0448
+packetLen(0x0448, -1) // HC_CHARACTER_LIST
+
+// Packet: 0x0449
+packetLen(0x0449, 4) // ZC_HACKSH_ERROR_MSG
+
+// Packet: 0x044a
+packetLen(0x044a, 6) // CZ_CLIENT_VERSION
+
+// Packet: 0x044b
+packetLen(0x044b, 2) // CZ_CLOSE_SIMPLECASH_SHOP
+
+// Packet: 0x07d7
+packetLen(0x07d7, 8) // CZ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d8
+packetLen(0x07d8, 8) // ZC_REQ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d9
+packetLen(0x07d9, 268) // ZC_SHORTCUT_KEY_LIST_V2
+
+// Packet: 0x07da
+packetLen(0x07da, 6) // CZ_CHANGE_GROUP_MASTER
+
+// Packet: 0x07db
+packetLen(0x07db, 8) // ZC_HO_PAR_CHANGE
+
+// Packet: 0x07dc
+packetLen(0x07dc, 6) // CZ_SEEK_PARTY
+
+// Packet: 0x07dd
+packetLen(0x07dd, 54) // ZC_SEEK_PARTY
+
+// Packet: 0x07de
+packetLen(0x07de, 30) // CZ_SEEK_PARTY_MEMBER
+
+// Packet: 0x07df
+packetLen(0x07df, 54) // ZC_SEEK_PARTY_MEMBER
+
+// Packet: 0x07e0
+packetLen(0x07e0, 58) // ZC_ES_NOTI_MYINFO
+
+// Packet: 0x07e1
+packetLen(0x07e1, 15) // ZC_SKILLINFO_UPDATE2
+
+// Packet: 0x07e2
+packetLen(0x07e2, 8) // ZC_MSG_VALUE
+
+// Packet: 0x07e3
+packetLen(0x07e3, 6) // ZC_ITEMLISTWIN_OPEN
+
+// Packet: 0x07e4
+#if PACKETVER >= 20141231
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20141217
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20141210
+packetLen(0x07e4, 5) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20141105
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20141029
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20141022
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20141008
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20141001
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140924
+packetLen(0x07e4, 36) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140917
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140820
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140813
+packetLen(0x07e4, -1) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140806
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140723
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140716
+packetLen(0x07e4, 36) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140709
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140702
+packetLen(0x07e4, 10) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140618
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140611
+packetLen(0x07e4, 8) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140605
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140528
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140521
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140514
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140508
+packetLen(0x07e4, 5) // CZ_ITEMLISTWIN_RES
+// ignored packet from 2014-05-08aRagexeRE
+#elif PACKETVER >= 20140430
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140416
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140326
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140319
+packetLen(0x07e4, -1) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140312
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140305
+packetLen(0x07e4, 26) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140212
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140205
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140115
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20140108
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#endif
+
+// Packet: 0x07e5
+packetLen(0x07e5, 4) // CH_ENTER_CHECKBOT
+
+// Packet: 0x07e6
+packetLen(0x07e6, 8) // ZC_MSG_SKILL
+
+// Packet: 0x07e7
+packetLen(0x07e7, 32) // CH_CHECKBOT
+
+// Packet: 0x07e8
+packetLen(0x07e8, -1) // HC_CHECKBOT
+
+// Packet: 0x07e9
+packetLen(0x07e9, 5) // HC_CHECKBOT_RESULT
+
+// Packet: 0x07ea
+packetLen(0x07ea, 2) // CZ_BATTLE_FIELD_LIST
+
+// Packet: 0x07eb
+packetLen(0x07eb, -1) // ZC_BATTLE_FIELD_LIST
+
+// Packet: 0x07ec
+#if PACKETVER >= 20141231
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20141105
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20141029
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20141022
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20141008
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140917
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140827
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140813
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140806
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140730
+packetLen(0x07ec, 4) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140611
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140605
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140528
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140521
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140508
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+// ignored packet from 2014-05-08bRagexeRE
+#elif PACKETVER >= 20140423
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140416
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140409
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140326
+packetLen(0x07ec, 6) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140312
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140305
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140212
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140205
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140129
+packetLen(0x07ec, 5) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140122
+packetLen(0x07ec, 6) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140115
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20140108
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#endif
+
+// Packet: 0x07ed
+packetLen(0x07ed, 10) // ZC_JOIN_BATTLE_FIELD
+
+// Packet: 0x07ee
+packetLen(0x07ee, 6) // CZ_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07ef
+packetLen(0x07ef, 8) // ZC_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07f0
+packetLen(0x07f0, 6) // CZ_REQ_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f1
+packetLen(0x07f1, 18) // ZC_ACK_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f2
+packetLen(0x07f2, 8) // ZC_BATTLE_NOTI_START_STEP
+
+// Packet: 0x07f3
+packetLen(0x07f3, 6) // ZC_BATTLE_JOIN_NOTI_DEFER
+
+// Packet: 0x07f4
+packetLen(0x07f4, 3) // ZC_BATTLE_JOIN_DISABLE_STATE
+
+// Packet: 0x07f5
+packetLen(0x07f5, 6) // CZ_GM_FULLSTRIP
+
+// Packet: 0x07f6
+packetLen(0x07f6, 14) // ZC_NOTIFY_EXP
+
+// Packet: 0x07f7
+packetLen(0x07f7, -1) // ZC_NOTIFY_MOVEENTRY7
+
+// Packet: 0x07f8
+packetLen(0x07f8, -1) // ZC_NOTIFY_NEWENTRY5
+
+// Packet: 0x07f9
+packetLen(0x07f9, -1) // ZC_NOTIFY_STANDENTRY5
+
+// Packet: 0x07fa
+packetLen(0x07fa, 8) // ZC_DELETE_ITEM_FROM_BODY
+
+// Packet: 0x07fb
+packetLen(0x07fb, 25) // ZC_USESKILL_ACK2
+
+// Packet: 0x07fc
+packetLen(0x07fc, 10) // ZC_CHANGE_GROUP_MASTER
+
+// Packet: 0x07fd
+packetLen(0x07fd, -1) // ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN
+
+// Packet: 0x07fe
+packetLen(0x07fe, 26) // ZC_PLAY_NPC_BGM
+
+// Packet: 0x0800
+packetLen(0x0800, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0801
+packetLen(0x0801, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0802
+#if PACKETVER >= 20141231
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20141210
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20141203
+packetLen(0x0802, 19) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20141126
+packetLen(0x0802, -1) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20141105
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20141029
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20141022
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20141008
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20141001
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140924
+packetLen(0x0802, 18) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140917
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140827
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140820
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140813
+packetLen(0x0802, 19) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140806
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140730
+packetLen(0x0802, 8) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140611
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140605
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140528
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140521
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140514
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140508
+packetLen(0x0802, 18) // CZ_PARTY_BOOKING_REQ_REGISTER
+// ignored packet from 2014-05-08bRagexeRE
+#elif PACKETVER >= 20140423
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140416
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140312
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140305
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140226
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140219
+packetLen(0x0802, 6) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140212
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140205
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140129
+packetLen(0x0802, 19) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140122
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140115
+packetLen(0x0802, 6) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20140108
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// Packet: 0x0803
+packetLen(0x0803, 4) // ZC_PARTY_BOOKING_ACK_REGISTER
+
+// Packet: 0x0804
+packetLen(0x0804, 14) // CZ_PARTY_BOOKING_REQ_SEARCH
+
+// Packet: 0x0805
+packetLen(0x0805, -1) // ZC_PARTY_BOOKING_ACK_SEARCH
+
+// Packet: 0x0806
+packetLen(0x0806, 2) // CZ_PARTY_BOOKING_REQ_DELETE
+
+// Packet: 0x0807
+packetLen(0x0807, 4) // ZC_PARTY_BOOKING_ACK_DELETE
+
+// Packet: 0x0808
+packetLen(0x0808, 14) // CZ_PARTY_BOOKING_REQ_UPDATE
+
+// Packet: 0x0809
+packetLen(0x0809, 50) // ZC_PARTY_BOOKING_NOTIFY_INSERT
+
+// Packet: 0x080a
+packetLen(0x080a, 18) // ZC_PARTY_BOOKING_NOTIFY_UPDATE
+
+// Packet: 0x080b
+packetLen(0x080b, 6) // ZC_PARTY_BOOKING_NOTIFY_DELETE
+
+// Packet: 0x080c
+packetLen(0x080c, 2) // CZ_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080d
+packetLen(0x080d, 3) // ZC_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080e
+packetLen(0x080e, 14) // ZC_NOTIFY_HP_TO_GROUPM_R2
+
+// Packet: 0x080f
+#if PACKETVER >= 20140226
+packetLen(0x080f, 51) // ZC_ADD_EXCHANGE_ITEM2
+// ignored packet from 2014-02-26bRagexeRE
+#elif PACKETVER >= 20140219
+packetLen(0x080f, 51) // ZC_ADD_EXCHANGE_ITEM2
+// ignored packet from 2014-02-19bRagexeRE
+#elif PACKETVER >= 20140129
+packetLen(0x080f, 41) // ZC_ADD_EXCHANGE_ITEM2
+#elif PACKETVER >= 20140108
+packetLen(0x080f, 20) // ZC_ADD_EXCHANGE_ITEM2
+#endif
+
+// Packet: 0x0810
+packetLen(0x0810, 3) // ZC_OPEN_BUYING_STORE
+
+// Packet: 0x0811
+#if PACKETVER >= 20141231
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20141203
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20141126
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20141105
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20141001
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140917
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140827
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140820
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140806
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140723
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140716
+packetLen(0x0811, 7) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140709
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140702
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140611
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140605
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140528
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140521
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140514
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140430
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140423
+packetLen(0x0811, 8) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140416
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140326
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140319
+packetLen(0x0811, 6) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140312
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140305
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140226
+packetLen(0x0811, 5) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140212
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140129
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140115
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20140108
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#endif
+
+// Packet: 0x0812
+packetLen(0x0812, 8) // ZC_FAILED_OPEN_BUYING_STORE_TO_BUYER
+
+// Packet: 0x0813
+packetLen(0x0813, -1) // ZC_MYITEMLIST_BUYING_STORE
+
+// Packet: 0x0814
+packetLen(0x0814, 86) // ZC_BUYING_STORE_ENTRY
+
+// Packet: 0x0815
+#if PACKETVER >= 20141231
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20141217
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20141210
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20141203
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20141126
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20141105
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20141001
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140924
+packetLen(0x0815, 5) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140917
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140827
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140820
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140806
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140730
+packetLen(0x0815, 26) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140709
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140702
+packetLen(0x0815, 36) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140625
+packetLen(0x0815, 4) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140611
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140605
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140528
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140521
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140514
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140508
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+// ignored packet from 2014-05-08bRagexeRE
+#elif PACKETVER >= 20140430
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140423
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140416
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140326
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140319
+packetLen(0x0815, 5) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140312
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140305
+packetLen(0x0815, 5) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140226
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140212
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140129
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140122
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20140108
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#endif
+
+// Packet: 0x0816
+packetLen(0x0816, 6) // ZC_DISAPPEAR_BUYING_STORE_ENTRY
+
+// Packet: 0x0817
+#if PACKETVER >= 20140806
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20140730
+packetLen(0x0817, 7) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20140702
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20140625
+packetLen(0x0817, -1) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20140611
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20140605
+packetLen(0x0817, 5) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20140521
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20140514
+packetLen(0x0817, 4) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20140508
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+// ignored packet from 2014-05-08bRagexeRE
+#elif PACKETVER >= 20140108
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#endif
+
+// Packet: 0x0818
+packetLen(0x0818, -1) // ZC_ACK_ITEMLIST_BUYING_STORE
+
+// Packet: 0x0819
+#if PACKETVER >= 20141231
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20141217
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20141210
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20141203
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20141126
+packetLen(0x0819, 18) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20141105
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20141001
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140917
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140827
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140820
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140806
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140730
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140723
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140709
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140702
+packetLen(0x0819, 5) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140611
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140605
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140528
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140521
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140514
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140430
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140423
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140416
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140409
+packetLen(0x0819, 8) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140312
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140219
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140212
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140129
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140122
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20140108
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#endif
+
+// Packet: 0x081a
+packetLen(0x081a, 4) // ZC_FAILED_TRADE_BUYING_STORE_TO_BUYER
+
+// Packet: 0x081b
+packetLen(0x081b, 10) // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+
+// Packet: 0x081c
+packetLen(0x081c, 10) // ZC_ITEM_DELETE_BUYING_STORE
+
+// Packet: 0x081d
+packetLen(0x081d, 22) // ZC_EL_INIT
+
+// Packet: 0x081e
+packetLen(0x081e, 8) // ZC_EL_PAR_CHANGE
+
+// Packet: 0x081f
+packetLen(0x081f, -1) // ZC_BROADCAST4
+
+// Packet: 0x0820
+packetLen(0x0820, 11) // ZC_COSTUME_SPRITE_CHANGE
+
+// Packet: 0x0821
+packetLen(0x0821, 2) // AC_OTP_USER
+
+// Packet: 0x0822
+packetLen(0x0822, 9) // CA_OTP_AUTH_REQ
+
+// Packet: 0x0823
+packetLen(0x0823, -1) // AC_OTP_AUTH_ACK
+
+// Packet: 0x0824
+packetLen(0x0824, 6) // ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER
+
+// Packet: 0x0825
+packetLen(0x0825, -1) // CA_SSO_LOGIN_REQ
+
+// Packet: 0x0827
+packetLen(0x0827, 6) // CH_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0828
+packetLen(0x0828, 14) // HC_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0829
+packetLen(0x0829, 12) // CH_DELETE_CHAR3
+
+// Packet: 0x082a
+packetLen(0x082a, 10) // HC_DELETE_CHAR3
+
+// Packet: 0x082b
+packetLen(0x082b, 6) // CH_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082c
+packetLen(0x082c, 10) // HC_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082d
+packetLen(0x082d, -1) // HC_ACCEPT_ENTER2
+
+// Packet: 0x0835
+#if PACKETVER >= 20141231
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20141223
+packetLen(0x0835, -1) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20141119
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20141112
+packetLen(0x0835, -1) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20141029
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20141022
+packetLen(0x0835, 12) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20140827
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20140820
+packetLen(0x0835, 5) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20140709
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20140702
+packetLen(0x0835, 12) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20140625
+packetLen(0x0835, 5) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20140508
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+// ignored packet from 2014-05-08aRagexeRE
+#elif PACKETVER >= 20140108
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#endif
+
+// Packet: 0x0836
+packetLen(0x0836, -1) // ZC_SEARCH_STORE_INFO_ACK
+
+// Packet: 0x0837
+packetLen(0x0837, 3) // ZC_SEARCH_STORE_INFO_FAILED
+
+// Packet: 0x0838
+#if PACKETVER >= 20141231
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20141217
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20141210
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20141203
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20141126
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20141105
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20141029
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20141022
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20141008
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20141001
+packetLen(0x0838, 8) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140924
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140917
+packetLen(0x0838, -1) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140827
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140820
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140806
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140730
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140723
+packetLen(0x0838, 10) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140618
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140611
+packetLen(0x0838, 90) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140605
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140528
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140521
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140514
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140508
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+// ignored packet from 2014-05-08aRagexeRE
+#elif PACKETVER >= 20140430
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140423
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140416
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140312
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140305
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140226
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140219
+packetLen(0x0838, 10) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140212
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140129
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140122
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20140108
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#endif
+
+// Packet: 0x0839
+packetLen(0x0839, 66) // ZC_ACK_BAN_GUILD_SSO
+
+// Packet: 0x083a
+packetLen(0x083a, 5) // ZC_OPEN_SEARCH_STORE_INFO
+
+// Packet: 0x083b
+packetLen(0x083b, 2) // CZ_CLOSE_SEARCH_STORE_INFO
+
+// Packet: 0x083c
+#if PACKETVER >= 20141231
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20141217
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20141210
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20141203
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20141126
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20141119
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20141112
+packetLen(0x083c, 8) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20141105
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20141001
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140917
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140827
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140820
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140806
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140709
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140702
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140611
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140605
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140528
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140521
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140514
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140508
+packetLen(0x083c, 12) // CZ_SSILIST_ITEM_CLICK
+// ignored packet from 2014-05-08bRagexeRE
+#elif PACKETVER >= 20140430
+packetLen(0x083c, 6) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140423
+packetLen(0x083c, 5) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140416
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140402
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140326
+packetLen(0x083c, 6) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140312
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140226
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140212
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140205
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140129
+packetLen(0x083c, 4) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140122
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20140108
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#endif
+
+// Packet: 0x083d
+packetLen(0x083d, 6) // ZC_SSILIST_ITEM_CLICK_ACK
+
+// Packet: 0x083e
+packetLen(0x083e, 26) // AC_REFUSE_LOGIN2
+
+// Packet: 0x0840
+packetLen(0x0840, -1) // HC_NOTIFY_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0841
+packetLen(0x0841, 4) // CH_SELECT_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0842
+packetLen(0x0842, 6) // CZ_RECALL_SSO
+
+// Packet: 0x0843
+packetLen(0x0843, 6) // CZ_REMOVE_AID_SSO
+
+// Packet: 0x0844
+packetLen(0x0844, 2) // CZ_SE_CASHSHOP_OPEN
+
+// Packet: 0x0845
+packetLen(0x0845, 10) // ZC_SE_CASHSHOP_OPEN
+
+// Packet: 0x0846
+packetLen(0x0846, 4) // CZ_REQ_SE_CASH_TAB_CODE
+
+// Packet: 0x0847
+packetLen(0x0847, -1) // ZC_ACK_SE_CASH_ITEM_LIST
+
+// Packet: 0x0848
+packetLen(0x0848, -1) // CZ_SE_PC_BUY_CASHITEM_LIST
+
+// Packet: 0x0849
+packetLen(0x0849, 16) // ZC_SE_PC_BUY_CASHITEM_RESULT
+
+// Packet: 0x084a
+packetLen(0x084a, 2) // CZ_SE_CASHSHOP_CLOSE
+
+// Packet: 0x084b
+packetLen(0x084b, 19) // ZC_ITEM_FALL_ENTRY4
+
+// Packet: 0x084c
+packetLen(0x084c, 10) // CZ_MACRO_USE_SKILL
+
+// Packet: 0x084d
+packetLen(0x084d, 10) // CZ_MACRO_USE_SKILL_TOGROUND
+
+// Packet: 0x084e
+packetLen(0x084e, 5) // CZ_MACRO_REQUEST_MOVE
+
+// Packet: 0x084f
+packetLen(0x084f, 6) // CZ_MACRO_ITEM_PICKUP
+
+// Packet: 0x0850
+packetLen(0x0850, 7) // CZ_MACRO_REQUEST_ACT
+
+// Packet: 0x0851
+packetLen(0x0851, -1) // ZC_GPK_DYNCODE
+
+// Packet: 0x0852
+packetLen(0x0852, 2) // CZ_GPK_DYNCODE_RELOAD
+
+// Packet: 0x0853
+packetLen(0x0853, -1) // ZC_GPK_AUTH
+
+// Packet: 0x0854
+packetLen(0x0854, -1) // CZ_GPK_AUTH
+
+// Packet: 0x0855
+packetLen(0x0855, 6) // ZC_MACRO_ITEMPICKUP_FAIL
+
+// Packet: 0x0856
+packetLen(0x0856, -1) // ZC_NOTIFY_MOVEENTRY8
+
+// Packet: 0x0857
+packetLen(0x0857, -1) // ZC_NOTIFY_STANDENTRY7
+
+// Packet: 0x0858
+packetLen(0x0858, -1) // ZC_NOTIFY_NEWENTRY6
+
+// Packet: 0x0859
+packetLen(0x0859, -1) // ZC_EQUIPWIN_MICROSCOPE2
+
+// Packet: 0x085a
+#if PACKETVER >= 20141231
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20141223
+packetLen(0x085a, -1) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20141126
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20141119
+packetLen(0x085a, 6) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20140709
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20140702
+packetLen(0x085a, 6) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20140625
+packetLen(0x085a, -1) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20140326
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20140319
+packetLen(0x085a, 5) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20140108
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x085b
+#if PACKETVER >= 20140430
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20140423
+packetLen(0x085b, 5) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20140416
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20140409
+packetLen(0x085b, 6) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20140402
+packetLen(0x085b, 8) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20140226
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20140219
+packetLen(0x085b, 6) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20140108
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x085c
+#if PACKETVER >= 20141112
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20141105
+packetLen(0x085c, 10) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20140723
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20140716
+packetLen(0x085c, 6) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20140226
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20140219
+packetLen(0x085c, 10) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20140108
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#endif
+
+// Packet: 0x085d
+#if PACKETVER >= 20140625
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20140618
+packetLen(0x085d, 8) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20140226
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20140219
+packetLen(0x085d, 5) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20140108
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x085e
+#if PACKETVER >= 20140806
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20140730
+packetLen(0x085e, 5) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20140319
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20140312
+packetLen(0x085e, 6) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20140108
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x085f
+#if PACKETVER >= 20141119
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20141112
+packetLen(0x085f, -1) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140730
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140723
+packetLen(0x085f, 5) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140716
+packetLen(0x085f, 19) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140605
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140528
+packetLen(0x085f, 18) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140226
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140219
+packetLen(0x085f, 6) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140108
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x0860
+#if PACKETVER >= 20141223
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20141217
+packetLen(0x0860, 36) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140716
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140709
+packetLen(0x0860, 36) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140625
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140618
+packetLen(0x0860, 6) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140508
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140430
+packetLen(0x0860, 26) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140226
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140219
+packetLen(0x0860, 5) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140108
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x0861
+#if PACKETVER >= 20141210
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20141203
+packetLen(0x0861, 8) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20141126
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20141119
+packetLen(0x0861, 26) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140827
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140820
+packetLen(0x0861, 6) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140702
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140625
+packetLen(0x0861, 10) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140618
+packetLen(0x0861, 90) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140514
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140508
+packetLen(0x0861, 6) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140108
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x0862
+#if PACKETVER >= 20141001
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20140924
+packetLen(0x0862, 4) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20140605
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20140528
+packetLen(0x0862, 6) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20140430
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20140423
+packetLen(0x0862, 8) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20140108
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x0863
+#if PACKETVER >= 20141119
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20141112
+packetLen(0x0863, 10) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20141105
+packetLen(0x0863, 6) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20140430
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20140423
+packetLen(0x0863, -1) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20140129
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20140122
+packetLen(0x0863, 5) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20140108
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x0864
+#if PACKETVER >= 20141112
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20141105
+packetLen(0x0864, 6) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20141001
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140924
+packetLen(0x0864, -1) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140917
+packetLen(0x0864, 6) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140827
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140820
+packetLen(0x0864, 19) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140618
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140611
+packetLen(0x0864, -1) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140326
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140319
+packetLen(0x0864, 7) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140108
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x0865
+#if PACKETVER >= 20141231
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20141223
+packetLen(0x0865, 90) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20141126
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20141119
+packetLen(0x0865, 26) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20141112
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20141105
+packetLen(0x0865, 26) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20141001
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20140924
+packetLen(0x0865, -1) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20140521
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20140514
+packetLen(0x0865, 7) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20140402
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20140319
+packetLen(0x0865, -1) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20140122
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20140115
+packetLen(0x0865, 36) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20140108
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0866
+#if PACKETVER >= 20141126
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20141119
+packetLen(0x0866, -1) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140716
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140709
+packetLen(0x0866, 4) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140430
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140423
+packetLen(0x0866, 19) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140326
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140319
+packetLen(0x0866, 5) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140108
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0867
+#if PACKETVER >= 20141231
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20141223
+packetLen(0x0867, 5) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20141001
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20140924
+packetLen(0x0867, -1) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20140618
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20140611
+packetLen(0x0867, 6) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20140521
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20140514
+packetLen(0x0867, -1) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20140402
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20140326
+packetLen(0x0867, 12) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20140305
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20140226
+packetLen(0x0867, 5) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20140108
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0868
+#if PACKETVER >= 20140820
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140813
+packetLen(0x0868, 5) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140723
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140716
+packetLen(0x0868, 26) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140521
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140514
+packetLen(0x0868, -1) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140416
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140409
+packetLen(0x0868, 12) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140402
+packetLen(0x0868, 10) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140226
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140219
+packetLen(0x0868, 36) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140108
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0869
+#if PACKETVER >= 20141119
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20141112
+packetLen(0x0869, 6) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140827
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140820
+packetLen(0x0869, 8) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140730
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140723
+packetLen(0x0869, 8) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140716
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140709
+packetLen(0x0869, 5) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140528
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140521
+packetLen(0x0869, 36) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140402
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140326
+packetLen(0x0869, 18) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140108
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x086a
+#if PACKETVER >= 20140416
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20140409
+packetLen(0x086a, -1) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20140108
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x086b
+#if PACKETVER >= 20140702
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140625
+packetLen(0x086b, 26) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140430
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140423
+packetLen(0x086b, 6) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140402
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140326
+packetLen(0x086b, 8) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140108
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x086c
+#if PACKETVER >= 20141231
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20141223
+packetLen(0x086c, 6) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20141217
+packetLen(0x086c, -1) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20141210
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20141203
+packetLen(0x086c, -1) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20141119
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20141112
+packetLen(0x086c, 18) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140827
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140820
+packetLen(0x086c, -1) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140709
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140702
+packetLen(0x086c, 18) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140625
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140618
+packetLen(0x086c, -1) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140611
+packetLen(0x086c, 4) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140108
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x086d
+#if PACKETVER >= 20141231
+packetLen(0x086d, 36) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20141210
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20141203
+packetLen(0x086d, 8) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20141001
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140924
+packetLen(0x086d, 6) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140917
+packetLen(0x086d, 90) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140730
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140723
+packetLen(0x086d, 90) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140416
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140409
+packetLen(0x086d, -1) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140108
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x086e
+#if PACKETVER >= 20141210
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20141203
+packetLen(0x086e, 6) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20141126
+packetLen(0x086e, 19) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20141022
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20141015
+packetLen(0x086e, 19) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20141001
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140924
+packetLen(0x086e, 5) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140827
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140820
+packetLen(0x086e, 26) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140326
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140319
+packetLen(0x086e, 4) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140219
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140212
+packetLen(0x086e, 10) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140108
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x086f
+#if PACKETVER >= 20140430
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20140423
+packetLen(0x086f, 90) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20140319
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20140312
+packetLen(0x086f, 6) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20140226
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20140219
+packetLen(0x086f, 26) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20140108
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x0870
+#if PACKETVER >= 20141231
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20141223
+packetLen(0x0870, 5) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20140508
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20140430
+packetLen(0x0870, 26) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20140129
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20140122
+packetLen(0x0870, 18) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20140108
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x0871
+#if PACKETVER >= 20141203
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20141126
+packetLen(0x0871, 8) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20141119
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20141112
+packetLen(0x0871, -1) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20141105
+packetLen(0x0871, 36) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140723
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140716
+packetLen(0x0871, 8) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140508
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140430
+packetLen(0x0871, 5) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140129
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140122
+packetLen(0x0871, 19) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140108
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x0872
+#if PACKETVER >= 20141126
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20141119
+packetLen(0x0872, 7)
+#elif PACKETVER >= 20140827
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20140820
+packetLen(0x0872, 90)
+#elif PACKETVER >= 20140605
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20140528
+packetLen(0x0872, 5)
+#elif PACKETVER >= 20140326
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20140319
+packetLen(0x0872, 12)
+#elif PACKETVER >= 20140129
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20140122
+packetLen(0x0872, 26)
+#elif PACKETVER >= 20140108
+packetLen(0x0872, 2)
+#endif
+
+// Packet: 0x0873
+#if PACKETVER >= 20141126
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20141119
+packetLen(0x0873, 10) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20140430
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20140423
+packetLen(0x0873, -1) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20140108
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x0874
+#if PACKETVER >= 20141112
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20141105
+packetLen(0x0874, 8) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20140618
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20140611
+packetLen(0x0874, 26) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20140219
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20140212
+packetLen(0x0874, -1) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20140108
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x0875
+#if PACKETVER >= 20141223
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20141217
+packetLen(0x0875, 8) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20141126
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20141119
+packetLen(0x0875, 6) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20141112
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20141105
+packetLen(0x0875, 7) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140716
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140709
+packetLen(0x0875, -1) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140702
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140625
+packetLen(0x0875, 6) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140605
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140528
+packetLen(0x0875, 6) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140508
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140430
+packetLen(0x0875, 8) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140416
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140409
+packetLen(0x0875, -1) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140108
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x0876
+#if PACKETVER >= 20140827
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20140820
+packetLen(0x0876, 6) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20140521
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20140514
+packetLen(0x0876, 10) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20140108
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x0877
+#if PACKETVER >= 20141112
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20141105
+packetLen(0x0877, -1) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140716
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140709
+packetLen(0x0877, 10) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140605
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140528
+packetLen(0x0877, 6) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140521
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140514
+packetLen(0x0877, 8) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140305
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140226
+packetLen(0x0877, 19) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140219
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140212
+packetLen(0x0877, 6) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140108
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x0878
+#if PACKETVER >= 20141223
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20141217
+packetLen(0x0878, 5) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20141029
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20141022
+packetLen(0x0878, 8) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140820
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140813
+packetLen(0x0878, 5) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140625
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140618
+packetLen(0x0878, -1) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140611
+packetLen(0x0878, 6) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140312
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140305
+packetLen(0x0878, 4) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140219
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140212
+packetLen(0x0878, 12) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140108
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x0879
+#if PACKETVER >= 20141223
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20141217
+packetLen(0x0879, 5) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20141112
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20141105
+packetLen(0x0879, 12) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20140716
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20140709
+packetLen(0x0879, 6) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20140605
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20140528
+packetLen(0x0879, 8) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20140108
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x087a
+#if PACKETVER >= 20141231
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20141223
+packetLen(0x087a, 6) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20140108
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x087b
+#if PACKETVER >= 20141231
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20141223
+packetLen(0x087b, 4) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20141217
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20141210
+packetLen(0x087b, 6) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20141203
+packetLen(0x087b, 5) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20140702
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20140625
+packetLen(0x087b, 10) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20140108
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x087c
+#if PACKETVER >= 20141126
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20141119
+packetLen(0x087c, 6) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20141008
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20141001
+packetLen(0x087c, 8) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20140820
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20140813
+packetLen(0x087c, 26) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20140402
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20140326
+packetLen(0x087c, 5) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20140226
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20140219
+packetLen(0x087c, 8) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20140108
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#endif
+
+// Packet: 0x087d
+#if PACKETVER >= 20141029
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20141022
+packetLen(0x087d, 6) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140806
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140730
+packetLen(0x087d, 8) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140723
+packetLen(0x087d, -1) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140625
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140618
+packetLen(0x087d, 6) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140521
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140514
+packetLen(0x087d, -1) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140108
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x087e
+#if PACKETVER >= 20141210
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20141203
+packetLen(0x087e, -1) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20140806
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20140730
+packetLen(0x087e, -1) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20140605
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20140528
+packetLen(0x087e, -1) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20140416
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20140409
+packetLen(0x087e, 6) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20140402
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20140326
+packetLen(0x087e, 26) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20140219
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20140212
+packetLen(0x087e, 5) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20140108
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x087f
+#if PACKETVER >= 20140806
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20140730
+packetLen(0x087f, 6) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20140508
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20140430
+packetLen(0x087f, 6) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20140402
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20140326
+packetLen(0x087f, 10) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20140108
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#endif
+
+// Packet: 0x0880
+#if PACKETVER >= 20141210
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20141203
+packetLen(0x0880, 5) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20140108
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x0881
+#if PACKETVER >= 20140723
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20140716
+packetLen(0x0881, 10) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20140108
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x0882
+#if PACKETVER >= 20140820
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20140813
+packetLen(0x0882, 18) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20140409
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20140402
+packetLen(0x0882, 6) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20140108
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x0883
+#if PACKETVER >= 20141223
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20141217
+packetLen(0x0883, 6) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140416
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140409
+packetLen(0x0883, 5) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140402
+packetLen(0x0883, -1) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140326
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140319
+packetLen(0x0883, 6) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140108
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x0884
+#if PACKETVER >= 20141203
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20141126
+packetLen(0x0884, 4) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20141008
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20141001
+packetLen(0x0884, 26) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20140625
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20140618
+packetLen(0x0884, -1) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20140508
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20140430
+packetLen(0x0884, 18) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20140416
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20140409
+packetLen(0x0884, 6) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20140205
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20140129
+packetLen(0x0884, 5) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20140108
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x0885
+#if PACKETVER >= 20141217
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20141210
+packetLen(0x0885, -1) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20141126
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20141119
+packetLen(0x0885, 4) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20141112
+packetLen(0x0885, 5) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20141008
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20141001
+packetLen(0x0885, 6) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20140702
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20140625
+packetLen(0x0885, 6) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20140618
+packetLen(0x0885, 8) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20140521
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20140514
+packetLen(0x0885, 36) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20140205
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20140129
+packetLen(0x0885, 6) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20140108
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x0886
+#if PACKETVER >= 20141119
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20141112
+packetLen(0x0886, -1) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20141001
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20140924
+packetLen(0x0886, 6) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20140702
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20140625
+packetLen(0x0886, 90) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20140618
+packetLen(0x0886, 18) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20140521
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20140514
+packetLen(0x0886, 6) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20140508
+packetLen(0x0886, 8) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20140108
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#endif
+
+// Packet: 0x0887
+#if PACKETVER >= 20141119
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20141112
+packetLen(0x0887, 26) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20141105
+packetLen(0x0887, 90) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20140716
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20140709
+packetLen(0x0887, 8) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20140702
+packetLen(0x0887, 5) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20140402
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20140326
+packetLen(0x0887, 4) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20140305
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20140226
+packetLen(0x0887, 12) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20140122
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20140115
+packetLen(0x0887, -1) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20140108
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x0888
+#if PACKETVER >= 20141126
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20141119
+packetLen(0x0888, 18) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20140730
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20140723
+packetLen(0x0888, 6) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20140716
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20140709
+packetLen(0x0888, 8) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20140702
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20140625
+packetLen(0x0888, 12) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20140219
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20140212
+packetLen(0x0888, 8) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20140108
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x0889
+#if PACKETVER >= 20141223
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20141217
+packetLen(0x0889, 12) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20141210
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20141203
+packetLen(0x0889, 26) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140924
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140917
+packetLen(0x0889, 7) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140806
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140730
+packetLen(0x0889, 18) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140319
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140312
+packetLen(0x0889, 19) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140226
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140219
+packetLen(0x0889, 8) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140205
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140129
+packetLen(0x0889, 8) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20140108
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x088a
+#if PACKETVER >= 20140702
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140625
+packetLen(0x088a, -1) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140605
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140528
+packetLen(0x088a, 12) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140521
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140514
+packetLen(0x088a, 5) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140416
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140409
+packetLen(0x088a, 8) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140402
+packetLen(0x088a, 6) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140122
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140115
+packetLen(0x088a, 8) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20140108
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x088b
+#if PACKETVER >= 20141001
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140924
+packetLen(0x088b, -1) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140806
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140730
+packetLen(0x088b, 6) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140716
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140709
+packetLen(0x088b, 26) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140528
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140521
+packetLen(0x088b, 4) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140514
+packetLen(0x088b, 90) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140430
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140423
+packetLen(0x088b, 6) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20140108
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x088c
+#if PACKETVER >= 20140618
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20140611
+packetLen(0x088c, 10) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20140409
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20140402
+packetLen(0x088c, 4) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20140319
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20140312
+packetLen(0x088c, 10) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20140219
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20140212
+packetLen(0x088c, -1) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20140129
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20140122
+packetLen(0x088c, 8) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20140108
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x088d
+#if PACKETVER >= 20141126
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20141119
+packetLen(0x088d, -1) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20141112
+packetLen(0x088d, 90) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20140806
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20140730
+packetLen(0x088d, 12) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20140723
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20140716
+packetLen(0x088d, 8) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20140528
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20140521
+packetLen(0x088d, 5) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20140319
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20140312
+packetLen(0x088d, -1) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20140108
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x088e
+#if PACKETVER >= 20141223
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20141217
+packetLen(0x088e, 18) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140702
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140625
+packetLen(0x088e, 19) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140326
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140319
+packetLen(0x088e, 26) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140312
+packetLen(0x088e, 7) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140122
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140115
+packetLen(0x088e, 8) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20140108
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x088f
+#if PACKETVER >= 20140917
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20140903
+packetLen(0x088f, 19) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20140723
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20140716
+packetLen(0x088f, 10) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20140605
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20140528
+packetLen(0x088f, 90) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20140108
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0890
+#if PACKETVER >= 20140625
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140618
+packetLen(0x0890, 5) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140430
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140423
+packetLen(0x0890, 10) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140416
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140409
+packetLen(0x0890, 6) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140402
+packetLen(0x0890, 26) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140326
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140319
+packetLen(0x0890, 90) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140129
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140122
+packetLen(0x0890, 90) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20140108
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0891
+#if PACKETVER >= 20140827
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20140820
+packetLen(0x0891, 6) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20140618
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20140611
+packetLen(0x0891, 7) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20140319
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20140312
+packetLen(0x0891, -1) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20140108
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0892
+#if PACKETVER >= 20141112
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20141105
+packetLen(0x0892, 6) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140806
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140730
+packetLen(0x0892, 8) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140709
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140702
+packetLen(0x0892, 8) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140625
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140618
+packetLen(0x0892, 10) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20140108
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0893
+#if PACKETVER >= 20140618
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140611
+packetLen(0x0893, 5) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140416
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140409
+packetLen(0x0893, 7) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140326
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140319
+packetLen(0x0893, 8) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140129
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140122
+packetLen(0x0893, 26) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20140108
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x0894
+#if PACKETVER >= 20141001
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20140924
+packetLen(0x0894, 7) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20140618
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20140611
+packetLen(0x0894, -1) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20140605
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20140528
+packetLen(0x0894, 8) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20140319
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20140312
+packetLen(0x0894, 5) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20140305
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20140226
+packetLen(0x0894, 6) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20140108
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x0895
+#if PACKETVER >= 20141126
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20141119
+packetLen(0x0895, -1) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140924
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140917
+packetLen(0x0895, 5) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140820
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140813
+packetLen(0x0895, 8) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140709
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140702
+packetLen(0x0895, 8) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140521
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140514
+packetLen(0x0895, 6) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140430
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140423
+packetLen(0x0895, -1) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140305
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140226
+packetLen(0x0895, 8) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20140108
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x0896
+#if PACKETVER >= 20141203
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20141126
+packetLen(0x0896, -1) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20141029
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20141022
+packetLen(0x0896, 26) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140730
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140723
+packetLen(0x0896, 6) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140716
+packetLen(0x0896, 90) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140605
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140528
+packetLen(0x0896, -1) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140430
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140423
+packetLen(0x0896, 7) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140416
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140409
+packetLen(0x0896, 10) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140402
+packetLen(0x0896, 5) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20140108
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x0897
+#if PACKETVER >= 20140924
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140917
+packetLen(0x0897, 6) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140820
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140813
+packetLen(0x0897, 26) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140716
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140709
+packetLen(0x0897, 6) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140702
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140625
+packetLen(0x0897, 18) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140430
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140423
+packetLen(0x0897, -1) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140416
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140409
+packetLen(0x0897, -1) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140226
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140219
+packetLen(0x0897, -1) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20140108
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x0898
+#if PACKETVER >= 20141210
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20141203
+packetLen(0x0898, 36) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20141112
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20141105
+packetLen(0x0898, 8) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20141001
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140924
+packetLen(0x0898, 90) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140917
+packetLen(0x0898, 6) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140730
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140723
+packetLen(0x0898, 8) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140716
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140709
+packetLen(0x0898, 19) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140430
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140423
+packetLen(0x0898, 10) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140402
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140326
+packetLen(0x0898, 6) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140226
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140219
+packetLen(0x0898, -1) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20140108
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x0899
+#if PACKETVER >= 20141029
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20141022
+packetLen(0x0899, 5) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20140827
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20140820
+packetLen(0x0899, 10) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20140813
+packetLen(0x0899, 6) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20140508
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20140430
+packetLen(0x0899, 5) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20140416
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20140409
+packetLen(0x0899, 26) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20140129
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20140122
+packetLen(0x0899, -1) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20140108
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x089a
+#if PACKETVER >= 20141231
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20141223
+packetLen(0x089a, 5) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20140827
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20140820
+packetLen(0x089a, -1) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20140723
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20140716
+packetLen(0x089a, 6) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20140521
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20140514
+packetLen(0x089a, 6) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20140409
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20140402
+packetLen(0x089a, 26) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20140108
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x089b
+#if PACKETVER >= 20141231
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20141223
+packetLen(0x089b, 18) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140917
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140903
+packetLen(0x089b, 26) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140827
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140820
+packetLen(0x089b, 8) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140618
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140611
+packetLen(0x089b, 26) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140514
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140508
+packetLen(0x089b, 19) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140430
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140423
+packetLen(0x089b, 6) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140319
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140312
+packetLen(0x089b, 6) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140122
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140115
+packetLen(0x089b, 26) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20140108
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x089c
+#if PACKETVER >= 20141210
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20141203
+packetLen(0x089c, 10) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20141008
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20141001
+packetLen(0x089c, 18) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20140924
+packetLen(0x089c, 8) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20140917
+packetLen(0x089c, 6) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20140528
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20140514
+packetLen(0x089c, 26) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20140108
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#endif
+
+// Packet: 0x089d
+#if PACKETVER >= 20141210
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20141203
+packetLen(0x089d, 12) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20141008
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20141001
+packetLen(0x089d, 26) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20140605
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20140528
+packetLen(0x089d, 6) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20140430
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20140423
+packetLen(0x089d, 6) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20140319
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20140312
+packetLen(0x089d, 12) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20140219
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20140212
+packetLen(0x089d, 10) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20140129
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20140122
+packetLen(0x089d, 6) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20140108
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x089e
+#if PACKETVER >= 20140730
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20140723
+packetLen(0x089e, -1) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20140319
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20140312
+packetLen(0x089e, 6) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20140219
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20140212
+packetLen(0x089e, -1) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20140108
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x089f
+#if PACKETVER >= 20141223
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20141217
+packetLen(0x089f, 6) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140723
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140716
+packetLen(0x089f, -1) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140326
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140319
+packetLen(0x089f, 10) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140226
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140219
+packetLen(0x089f, 6) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20140108
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x08a0
+#if PACKETVER >= 20141119
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20141112
+packetLen(0x08a0, 5) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20141105
+packetLen(0x08a0, 19) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20140806
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20140730
+packetLen(0x08a0, -1) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20140709
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20140702
+packetLen(0x08a0, 26) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20140219
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20140212
+packetLen(0x08a0, 36) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20140108
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x08a1
+#if PACKETVER >= 20141223
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20141217
+packetLen(0x08a1, 10) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20141119
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20141112
+packetLen(0x08a1, 6) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140702
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140625
+packetLen(0x08a1, 6) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140618
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140611
+packetLen(0x08a1, 10) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140508
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140430
+packetLen(0x08a1, 8) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140219
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140212
+packetLen(0x08a1, 26) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20140108
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x08a2
+#if PACKETVER >= 20141223
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20141217
+packetLen(0x08a2, 8) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140730
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140723
+packetLen(0x08a2, 8) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140709
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140702
+packetLen(0x08a2, 6) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140625
+packetLen(0x08a2, 5) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140618
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140611
+packetLen(0x08a2, 8) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140416
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140409
+packetLen(0x08a2, 4) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140326
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140319
+packetLen(0x08a2, 8) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140129
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140122
+packetLen(0x08a2, 4) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20140108
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x08a3
+#if PACKETVER >= 20141231
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20141223
+packetLen(0x08a3, 26) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20140827
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20140820
+packetLen(0x08a3, 5) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20140813
+packetLen(0x08a3, 6) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20140108
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x08a4
+#if PACKETVER >= 20141231
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20141223
+packetLen(0x08a4, 36) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20141203
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20141126
+packetLen(0x08a4, 5) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20140723
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20140716
+packetLen(0x08a4, -1) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20140605
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20140528
+packetLen(0x08a4, 10) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20140416
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20140409
+packetLen(0x08a4, 10) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20140108
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x08a5
+#if PACKETVER >= 20141210
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20141203
+packetLen(0x08a5, 7) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20141112
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20141105
+packetLen(0x08a5, 5) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20141001
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20140924
+packetLen(0x08a5, 6) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20140521
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20140514
+packetLen(0x08a5, 6) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20140108
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x08a6
+#if PACKETVER >= 20140806
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20140730
+packetLen(0x08a6, 6) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20140625
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20140618
+packetLen(0x08a6, 6) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20140319
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20140312
+packetLen(0x08a6, 4) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20140226
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20140219
+packetLen(0x08a6, 5) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20140108
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#endif
+
+// Packet: 0x08a7
+#if PACKETVER >= 20141001
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140924
+packetLen(0x08a7, 10) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140827
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140820
+packetLen(0x08a7, -1) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140813
+packetLen(0x08a7, 8) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140806
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140730
+packetLen(0x08a7, 6) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140625
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140618
+packetLen(0x08a7, 5) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140416
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140409
+packetLen(0x08a7, 5) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140219
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140212
+packetLen(0x08a7, -1) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140122
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140115
+packetLen(0x08a7, 5) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20140108
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x08a8
+#if PACKETVER >= 20141231
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20141223
+packetLen(0x08a8, -1) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20141217
+packetLen(0x08a8, 26) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20141126
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20141119
+packetLen(0x08a8, 6) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20140924
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20140917
+packetLen(0x08a8, 36) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20140430
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20140423
+packetLen(0x08a8, 5) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20140108
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x08a9
+#if PACKETVER >= 20140806
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20140730
+packetLen(0x08a9, 90) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20140416
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20140409
+packetLen(0x08a9, 36) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20140319
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20140312
+packetLen(0x08a9, 26) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20140108
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#endif
+
+// Packet: 0x08aa
+#if PACKETVER >= 20141210
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20141203
+packetLen(0x08aa, 6) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20141126
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20141119
+packetLen(0x08aa, 12) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20141029
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20141022
+packetLen(0x08aa, 8) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20140402
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20140326
+packetLen(0x08aa, 8) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20140226
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20140219
+packetLen(0x08aa, 12) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20140129
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20140122
+packetLen(0x08aa, 6) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20140108
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x08ab
+#if PACKETVER >= 20141223
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20141217
+packetLen(0x08ab, -1) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20141119
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20141112
+packetLen(0x08ab, 36) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20141029
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20141022
+packetLen(0x08ab, 4) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20140820
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20140813
+packetLen(0x08ab, 4) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20140605
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20140528
+packetLen(0x08ab, 4) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20140514
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20140508
+packetLen(0x08ab, 4) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20140108
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x08ac
+#if PACKETVER >= 20141231
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20141223
+packetLen(0x08ac, -1) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20141217
+packetLen(0x08ac, 6) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20141210
+packetLen(0x08ac, -1) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20140723
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20140716
+packetLen(0x08ac, 5) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20140625
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20140618
+packetLen(0x08ac, 4) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20140528
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20140521
+packetLen(0x08ac, 19) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20140409
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20140402
+packetLen(0x08ac, 18) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20140326
+packetLen(0x08ac, 90) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20140226
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20140212
+packetLen(0x08ac, 8) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20140108
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x08ad
+#if PACKETVER >= 20141203
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20141126
+packetLen(0x08ad, 36) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20141112
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20141105
+packetLen(0x08ad, 8) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20141029
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20141022
+packetLen(0x08ad, 5) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20141008
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20141001
+packetLen(0x08ad, 5) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140806
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140730
+packetLen(0x08ad, 36) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140723
+packetLen(0x08ad, 18) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140716
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140709
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140430
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140423
+packetLen(0x08ad, 8) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140402
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140326
+packetLen(0x08ad, 19) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140319
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140312
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140219
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140212
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20140108
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x08af
+packetLen(0x08af, 10) // HC_WAITING_LOGIN
+
+// Packet: 0x08b0
+packetLen(0x08b0, 17) // CH_WAITING_LOGIN
+
+// Packet: 0x08b1
+packetLen(0x08b1, -1) // ZC_MCSTORE_NOTMOVEITEM_LIST
+
+// Packet: 0x08b2
+packetLen(0x08b2, -1) // AC_REALNAME_AUTH
+
+// Packet: 0x08b3
+packetLen(0x08b3, -1) // ZC_SHOWSCRIPT
+
+// Packet: 0x08b4
+packetLen(0x08b4, 2) // ZC_START_COLLECTION
+
+// Packet: 0x08b5
+packetLen(0x08b5, 6) // CZ_TRYCOLLECTION
+
+// Packet: 0x08b6
+packetLen(0x08b6, 3) // ZC_TRYCOLLECTION
+
+// Packet: 0x08b8
+packetLen(0x08b8, 10) // CH_SECOND_PASSWD_ACK
+
+// Packet: 0x08b9
+packetLen(0x08b9, 12) // HC_SECOND_PASSWD_LOGIN
+
+// Packet: 0x08ba
+packetLen(0x08ba, 10) // CH_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bb
+packetLen(0x08bb, 8) // HC_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bc
+packetLen(0x08bc, 10) // CH_DELETE_SECOND_PASSWD
+
+// Packet: 0x08bd
+packetLen(0x08bd, 8) // HC_DELETE_SECOND_PASSWD
+
+// Packet: 0x08be
+packetLen(0x08be, 14) // CH_EDIT_SECOND_PASSWD
+
+// Packet: 0x08bf
+packetLen(0x08bf, 8) // HC_EDIT_SECOND_PASSWD
+
+// Packet: 0x08c0
+packetLen(0x08c0, -1) // ZC_ACK_SE_CASH_ITEM_LIST2
+
+// Packet: 0x08c1
+packetLen(0x08c1, 2) // CZ_MACRO_START
+
+// Packet: 0x08c2
+packetLen(0x08c2, 2) // CZ_MACRO_STOP
+
+// Packet: 0x08c3
+packetLen(0x08c3, 10) // CH_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c4
+packetLen(0x08c4, 8) // HC_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c5
+packetLen(0x08c5, 6) // CH_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c6
+packetLen(0x08c6, 4) // HC_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c7
+packetLen(0x08c7, -1) // ZC_SKILL_ENTRY3
+
+// Packet: 0x08c8
+packetLen(0x08c8, 34) // ZC_NOTIFY_ACT3
+
+// Packet: 0x08c9
+packetLen(0x08c9, 2) // CZ_REQ_SCHEDULER_CASHITEM
+
+// Packet: 0x08ca
+packetLen(0x08ca, -1) // ZC_ACK_SCHEDULER_CASHITEM
+
+// Packet: 0x08cb
+packetLen(0x08cb, -1) // ZC_PERSONAL_INFOMATION
+
+// Packet: 0x08cc
+packetLen(0x08cc, 109) // CA_LOGIN5
+
+// Packet: 0x08cd
+packetLen(0x08cd, 10) // ZC_STOPMOVE_FORCE
+
+// Packet: 0x08ce
+packetLen(0x08ce, 2) // ZC_FAILED_GET_ITEM_FROM_ZONEDA
+
+// Packet: 0x08cf
+packetLen(0x08cf, 10) // ZC_SPIRITS_ATTRIBUTE
+
+// Packet: 0x08d0
+packetLen(0x08d0, 9) // ZC_REQ_WEAR_EQUIP_ACK2
+
+// Packet: 0x08d1
+packetLen(0x08d1, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK2
+
+// Packet: 0x08d2
+packetLen(0x08d2, 10) // ZC_FASTMOVE
+
+// Packet: 0x08d3
+packetLen(0x08d3, 10) // ZC_SE_CASHSHOP_UPDATE
+
+// Packet: 0x08d4
+packetLen(0x08d4, 8) // CH_REQ_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d5
+packetLen(0x08d5, -1) // HC_ACK_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d6
+packetLen(0x08d6, 6) // ZC_CLEAR_DIALOG
+
+// Packet: 0x08d7
+packetLen(0x08d7, 28) // CZ_REQ_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d8
+packetLen(0x08d8, 27) // ZC_ACK_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d9
+packetLen(0x08d9, 30) // ZC_NOTIFY_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08da
+packetLen(0x08da, 26) // CZ_REQ_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08db
+packetLen(0x08db, 27) // ZC_ACK_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08dc
+packetLen(0x08dc, 26) // ZC_NOTIFY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08dd
+packetLen(0x08dd, 27) // CZ_REPLY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08de
+packetLen(0x08de, 27) // ZC_REPLY_ACK_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08df
+packetLen(0x08df, 50) // ZC_NOTIFY_LOBBY_ADMISSION
+
+// Packet: 0x08e0
+packetLen(0x08e0, 51) // CZ_REPLY_LOBBY_ADMISSION
+
+// Packet: 0x08e1
+packetLen(0x08e1, 51) // ZC_REPLY_ACK_LOBBY_ADMISSION
+
+// Packet: 0x08e2
+packetLen(0x08e2, 27) // ZC_NAVIGATION_ACTIVE
+
+// Packet: 0x08e3
+#if PACKETVER >= 20140625
+packetLen(0x08e3, 149) // HC_UPDATE_CHARINFO
+#elif PACKETVER >= 20140108
+packetLen(0x08e3, 146) // HC_UPDATE_CHARINFO
+#endif
+
+// Packet: 0x08e4
+packetLen(0x08e4, 6) // AC_SHUTDOWN_INFO
+
+// Packet: 0x08fc
+packetLen(0x08fc, 30) // CH_REQ_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fd
+packetLen(0x08fd, 6) // CH_ACK_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fe
+packetLen(0x08fe, -1) // ZC_HUNTING_QUEST_INFO
+
+// Packet: 0x08ff
+packetLen(0x08ff, 24) // ZC_EFST_SET_ENTER
+
+// Packet: 0x0900
+packetLen(0x0900, -1) // ZC_INVENTORY_ITEMLIST_NORMAL
+
+// Packet: 0x0901
+packetLen(0x0901, -1) // ZC_INVENTORY_ITEMLIST_EQUIP
+
+// Packet: 0x0902
+packetLen(0x0902, -1) // ZC_CART_ITEMLIST_NORMAL
+
+// Packet: 0x0903
+packetLen(0x0903, -1) // ZC_CART_ITEMLIST_EQUIP
+
+// Packet: 0x0904
+packetLen(0x0904, -1) // ZC_STORE_ITEMLIST_NORMAL
+
+// Packet: 0x0905
+packetLen(0x0905, -1) // ZC_STORE_ITEMLIST_EQUIP
+
+// Packet: 0x0906
+packetLen(0x0906, -1) // ZC_MICROSCOPE
+
+// Packet: 0x0907
+packetLen(0x0907, 5) // CZ_INVENTORY_TAB
+
+// Packet: 0x0908
+packetLen(0x0908, 5) // ZC_INVENTORY_TAB
+
+// Packet: 0x090a
+packetLen(0x090a, 26) // CZ_REQ_ENTRY_QUEUE_RANKING
+
+// Packet: 0x090d
+packetLen(0x090d, -1) // ZC_PREMIUM_CAMPAIGN_INFO
+
+// Packet: 0x090e
+packetLen(0x090e, 2) // ZC_ENTRY_QUEUE_INIT
+
+// Packet: 0x090f
+packetLen(0x090f, -1) // ZC_NOTIFY_NEWENTRY7
+
+// Packet: 0x0910
+packetLen(0x0910, 10) // CZ_REQ_PARTY_NAME
+
+// Packet: 0x0911
+packetLen(0x0911, 30) // ZC_ACK_PARTY_NAME
+
+// Packet: 0x0912
+packetLen(0x0912, 10) // CZ_REQ_GUILD_NAME
+
+// Packet: 0x0913
+packetLen(0x0913, 30) // ZC_ACK_GUILD_NAME
+
+// Packet: 0x0914
+packetLen(0x0914, -1) // ZC_NOTIFY_MOVEENTRY9
+
+// Packet: 0x0915
+packetLen(0x0915, -1) // ZC_NOTIFY_STANDENTRY8
+
+// Packet: 0x0916
+packetLen(0x0916, 26) // CZ_REQ_JOIN_GUILD2
+
+// Packet: 0x0917
+#if PACKETVER >= 20141217
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20141210
+packetLen(0x0917, 26) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20140625
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20140618
+packetLen(0x0917, 10) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20140129
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20140122
+packetLen(0x0917, 6) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20140108
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#endif
+
+// Packet: 0x0918
+#if PACKETVER >= 20141126
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20141119
+packetLen(0x0918, 10) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20141001
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140924
+packetLen(0x0918, 19) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140723
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140716
+packetLen(0x0918, 5) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140521
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140514
+packetLen(0x0918, 18) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140416
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140409
+packetLen(0x0918, 6) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140402
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140326
+packetLen(0x0918, 6) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140108
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#endif
+
+// Packet: 0x0919
+#if PACKETVER >= 20141223
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20141217
+packetLen(0x0919, 5) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20141119
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20141112
+packetLen(0x0919, 12) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20140924
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20140917
+packetLen(0x0919, -1) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20140219
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20140212
+packetLen(0x0919, 5) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20140108
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#endif
+
+// Packet: 0x091a
+#if PACKETVER >= 20141029
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20141022
+packetLen(0x091a, 26) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140716
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140709
+packetLen(0x091a, 5) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140702
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140625
+packetLen(0x091a, 6) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140430
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140423
+packetLen(0x091a, 6) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140305
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140226
+packetLen(0x091a, 8) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140129
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140122
+packetLen(0x091a, 5) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140108
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#endif
+
+// Packet: 0x091b
+#if PACKETVER >= 20140219
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20140212
+packetLen(0x091b, 26) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20140108
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#endif
+
+// Packet: 0x091c
+#if PACKETVER >= 20141210
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20141203
+packetLen(0x091c, 18) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20141008
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20141001
+packetLen(0x091c, 4) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20140416
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20140409
+packetLen(0x091c, 90) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20140319
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20140312
+packetLen(0x091c, 26) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20140108
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#endif
+
+// Packet: 0x091d
+#if PACKETVER >= 20141210
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20141203
+packetLen(0x091d, 26) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20141112
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20141105
+packetLen(0x091d, 6) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20140827
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20140820
+packetLen(0x091d, 6) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20140605
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20140528
+packetLen(0x091d, 26) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20140521
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20140514
+packetLen(0x091d, 19) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20140108
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#endif
+
+// Packet: 0x091e
+#if PACKETVER >= 20141112
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20141105
+packetLen(0x091e, 6) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20140806
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20140730
+packetLen(0x091e, 26) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20140319
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20140312
+packetLen(0x091e, 5) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20140108
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#endif
+
+// Packet: 0x091f
+#if PACKETVER >= 20141223
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20141217
+packetLen(0x091f, 10) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20140723
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20140716
+packetLen(0x091f, 18) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20140625
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20140618
+packetLen(0x091f, -1) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20140409
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20140402
+packetLen(0x091f, -1) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20140326
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20140319
+packetLen(0x091f, -1) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20140108
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#endif
+
+// Packet: 0x0920
+#if PACKETVER >= 20141203
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20141126
+packetLen(0x0920, 6) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20141119
+packetLen(0x0920, 5) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20140430
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20140423
+packetLen(0x0920, 26) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20140409
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20140402
+packetLen(0x0920, 19) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20140108
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#endif
+
+// Packet: 0x0921
+#if PACKETVER >= 20141126
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20141119
+packetLen(0x0921, 19) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20140611
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20140605
+packetLen(0x0921, 36) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20140305
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20140226
+packetLen(0x0921, 26) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20140219
+packetLen(0x0921, 7) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20140205
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20140129
+packetLen(0x0921, 18) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20140108
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#endif
+
+// Packet: 0x0922
+#if PACKETVER >= 20141022
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20141015
+packetLen(0x0922, 4) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20140108
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#endif
+
+// Packet: 0x0923
+#if PACKETVER >= 20140326
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20140319
+packetLen(0x0923, 19) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20140108
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#endif
+
+// Packet: 0x0924
+#if PACKETVER >= 20141223
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20141217
+packetLen(0x0924, 7) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20140618
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20140611
+packetLen(0x0924, 6) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20140205
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20140129
+packetLen(0x0924, -1) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20140108
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#endif
+
+// Packet: 0x0925
+#if PACKETVER >= 20141001
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140924
+packetLen(0x0925, 8) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140716
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140709
+packetLen(0x0925, 90) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140702
+packetLen(0x0925, 5) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140521
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140514
+packetLen(0x0925, 6) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140129
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140122
+packetLen(0x0925, 5) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140108
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#endif
+
+// Packet: 0x0926
+#if PACKETVER >= 20141119
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20141112
+packetLen(0x0926, 5) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20141001
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20140924
+packetLen(0x0926, 6) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20140723
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20140716
+packetLen(0x0926, 6) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20140409
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20140402
+packetLen(0x0926, 36) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20140108
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#endif
+
+// Packet: 0x0927
+#if PACKETVER >= 20141217
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20141210
+packetLen(0x0927, 8) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20140730
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20140723
+packetLen(0x0927, 6) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20140514
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20140508
+packetLen(0x0927, 36) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20140226
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20140219
+packetLen(0x0927, 90) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20140108
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#endif
+
+// Packet: 0x0928
+#if PACKETVER >= 20141210
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20141203
+packetLen(0x0928, 6) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20141001
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20140924
+packetLen(0x0928, 8) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20140219
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20140212
+packetLen(0x0928, 6) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20140108
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#endif
+
+// Packet: 0x0929
+#if PACKETVER >= 20141126
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20141119
+packetLen(0x0929, 8) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20141112
+packetLen(0x0929, 7) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20140625
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20140618
+packetLen(0x0929, 12) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20140605
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20140528
+packetLen(0x0929, 7) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20140108
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#endif
+
+// Packet: 0x092a
+#if PACKETVER >= 20141210
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20141203
+packetLen(0x092a, 4) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20141008
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20141001
+packetLen(0x092a, 36) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20140924
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20140917
+packetLen(0x092a, 12) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20140806
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20140730
+packetLen(0x092a, 6) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20140402
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20140326
+packetLen(0x092a, 36) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20140319
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20140312
+packetLen(0x092a, 6) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20140108
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#endif
+
+// Packet: 0x092b
+#if PACKETVER >= 20141217
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20141210
+packetLen(0x092b, 18) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20141112
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20141105
+packetLen(0x092b, 6) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20141029
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20141022
+packetLen(0x092b, 8) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20141001
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20140924
+packetLen(0x092b, 6) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20140108
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#endif
+
+// Packet: 0x092c
+#if PACKETVER >= 20140723
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140716
+packetLen(0x092c, 26) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140709
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140702
+packetLen(0x092c, 19) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140521
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140514
+packetLen(0x092c, 8) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140205
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140129
+packetLen(0x092c, 36) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140108
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#endif
+
+// Packet: 0x092d
+#if PACKETVER >= 20141001
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20140924
+packetLen(0x092d, 12) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20140409
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20140402
+packetLen(0x092d, 90) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20140122
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20140115
+packetLen(0x092d, 5) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20140108
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#endif
+
+// Packet: 0x092e
+#if PACKETVER >= 20140416
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20140409
+packetLen(0x092e, 26) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20140108
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#endif
+
+// Packet: 0x092f
+#if PACKETVER >= 20141126
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20141119
+packetLen(0x092f, 8) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140827
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140820
+packetLen(0x092f, 10) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140730
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140723
+packetLen(0x092f, 19) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140716
+packetLen(0x092f, 12) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140709
+packetLen(0x092f, 10) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140521
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140514
+packetLen(0x092f, 10) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140129
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140122
+packetLen(0x092f, 8) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140108
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#endif
+
+// Packet: 0x0930
+#if PACKETVER >= 20141231
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20141223
+packetLen(0x0930, 6) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20140924
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20140917
+packetLen(0x0930, 8) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20140605
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20140528
+packetLen(0x0930, -1) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20140514
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20140508
+packetLen(0x0930, 8) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20140219
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20140212
+packetLen(0x0930, 6) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20140108
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#endif
+
+// Packet: 0x0931
+#if PACKETVER >= 20140917
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20140903
+packetLen(0x0931, 5) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20140716
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20140709
+packetLen(0x0931, 6) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20140611
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20140605
+packetLen(0x0931, 5) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20140305
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20140226
+packetLen(0x0931, 4) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20140108
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#endif
+
+// Packet: 0x0932
+#if PACKETVER >= 20141231
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20141223
+packetLen(0x0932, 8) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20141217
+packetLen(0x0932, -1) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20140514
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20140508
+packetLen(0x0932, 6) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20140108
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#endif
+
+// Packet: 0x0933
+#if PACKETVER >= 20141223
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20141217
+packetLen(0x0933, 26) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20141126
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20141119
+packetLen(0x0933, 36) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20140709
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20140702
+packetLen(0x0933, 4) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20140409
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20140402
+packetLen(0x0933, -1) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20140108
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#endif
+
+// Packet: 0x0934
+#if PACKETVER >= 20141001
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140924
+packetLen(0x0934, 5) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140806
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140730
+packetLen(0x0934, -1) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140723
+packetLen(0x0934, 26) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140716
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140709
+packetLen(0x0934, 6) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140514
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140508
+packetLen(0x0934, 8) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140312
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140305
+packetLen(0x0934, 5) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140219
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140212
+packetLen(0x0934, 7) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140108
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#endif
+
+// Packet: 0x0935
+#if PACKETVER >= 20140730
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20140723
+packetLen(0x0935, 26) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20140625
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20140618
+packetLen(0x0935, 6) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20140108
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#endif
+
+// Packet: 0x0936
+#if PACKETVER >= 20141223
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20141217
+packetLen(0x0936, 6) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20141210
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20141203
+packetLen(0x0936, 5) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20141022
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20141015
+packetLen(0x0936, 36) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20140827
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20140820
+packetLen(0x0936, 12) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20140618
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20140611
+packetLen(0x0936, 12) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20140219
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20140212
+packetLen(0x0936, 4) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20140115
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20140108
+packetLen(0x0936, 36) // ZC_REASSEMBLY_AUTH74
+#endif
+
+// Packet: 0x0937
+#if PACKETVER >= 20141008
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20141001
+packetLen(0x0937, -1) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20140827
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20140820
+packetLen(0x0937, 5) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20140108
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#endif
+
+// Packet: 0x0938
+#if PACKETVER >= 20141126
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20141119
+packetLen(0x0938, 6) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20140723
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20140716
+packetLen(0x0938, 8) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20140625
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20140618
+packetLen(0x0938, 26) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20140212
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20140205
+packetLen(0x0938, 36) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20140108
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#endif
+
+// Packet: 0x0939
+#if PACKETVER >= 20141223
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20141217
+packetLen(0x0939, -1) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20141008
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20141001
+packetLen(0x0939, 8) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20140730
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20140723
+packetLen(0x0939, -1) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20140716
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20140709
+packetLen(0x0939, -1) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20140226
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20140219
+packetLen(0x0939, -1) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20140108
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#endif
+
+// Packet: 0x093a
+#if PACKETVER >= 20140827
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20140820
+packetLen(0x093a, 36) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20140605
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20140528
+packetLen(0x093a, 8) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20140108
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#endif
+
+// Packet: 0x093b
+#if PACKETVER >= 20141029
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20141022
+packetLen(0x093b, 19) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20140723
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20140716
+packetLen(0x093b, 6) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20140625
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20140618
+packetLen(0x093b, 7) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20140508
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20140430
+packetLen(0x093b, -1) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20140108
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#endif
+
+// Packet: 0x093c
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+
+// Packet: 0x093d
+#if PACKETVER >= 20140730
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20140723
+packetLen(0x093d, 6) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20140402
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20140326
+packetLen(0x093d, 7) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20140219
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20140212
+packetLen(0x093d, 19) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20140108
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#endif
+
+// Packet: 0x093e
+#if PACKETVER >= 20141112
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20141105
+packetLen(0x093e, -1) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20140827
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20140820
+packetLen(0x093e, 6) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20140108
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#endif
+
+// Packet: 0x093f
+#if PACKETVER >= 20141008
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20141001
+packetLen(0x093f, 6) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20140716
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20140709
+packetLen(0x093f, 12) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20140605
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20140528
+packetLen(0x093f, 26) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20140409
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20140402
+packetLen(0x093f, 5) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20140108
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#endif
+
+// Packet: 0x0940
+#if PACKETVER >= 20141223
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20141217
+packetLen(0x0940, 19) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20141105
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20141029
+packetLen(0x0940, 7) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140806
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140730
+packetLen(0x0940, 5) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140716
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140709
+packetLen(0x0940, -1) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140702
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140625
+packetLen(0x0940, -1) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140611
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140605
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140508
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140430
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140129
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140122
+packetLen(0x0940, 10) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140115
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140108
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#endif
+
+// Packet: 0x0941
+#if PACKETVER >= 20141126
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20141119
+packetLen(0x0941, 8) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20140917
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20140903
+packetLen(0x0941, 36) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20140618
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20140611
+packetLen(0x0941, 36) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20140305
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20140226
+packetLen(0x0941, 18) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20140129
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20140122
+packetLen(0x0941, 6) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20140108
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#endif
+
+// Packet: 0x0942
+#if PACKETVER >= 20141203
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20141126
+packetLen(0x0942, 26) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20141119
+packetLen(0x0942, 5) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20141015
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20141008
+packetLen(0x0942, 36) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140416
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140409
+packetLen(0x0942, 8) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140402
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140326
+packetLen(0x0942, 5) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140319
+packetLen(0x0942, 36) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140129
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140122
+packetLen(0x0942, 6) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20140108
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#endif
+
+// Packet: 0x0943
+#if PACKETVER >= 20141119
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20141112
+packetLen(0x0943, 6) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20140917
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20140903
+packetLen(0x0943, 4) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20140827
+packetLen(0x0943, 36) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20140108
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#endif
+
+// Packet: 0x0944
+#if PACKETVER >= 20141223
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20141217
+packetLen(0x0944, 6) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20141112
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20141105
+packetLen(0x0944, 5) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140409
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140402
+packetLen(0x0944, -1) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140326
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140319
+packetLen(0x0944, 10) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140219
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140212
+packetLen(0x0944, 5) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20140108
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#endif
+
+// Packet: 0x0945
+#if PACKETVER >= 20141231
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20141223
+packetLen(0x0945, 6) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20141217
+packetLen(0x0945, 90) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20140917
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20140903
+packetLen(0x0945, 5) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20140730
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20140723
+packetLen(0x0945, 10) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20140625
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20140618
+packetLen(0x0945, 6) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20140402
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20140326
+packetLen(0x0945, -1) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20140108
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#endif
+
+// Packet: 0x0946
+#if PACKETVER >= 20141231
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20141223
+packetLen(0x0946, 6) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20140806
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20140730
+packetLen(0x0946, 5) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20140702
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20140625
+packetLen(0x0946, 5) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20140409
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20140402
+packetLen(0x0946, 7) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20140326
+packetLen(0x0946, 26) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20140226
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20140219
+packetLen(0x0946, 19) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20140108
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#endif
+
+// Packet: 0x0947
+#if PACKETVER >= 20141217
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20141210
+packetLen(0x0947, 4) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20140730
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20140723
+packetLen(0x0947, 7) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20140716
+packetLen(0x0947, 4) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20140416
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20140409
+packetLen(0x0947, 5) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20140326
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20140319
+packetLen(0x0947, 8) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20140108
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#endif
+
+// Packet: 0x0948
+#if PACKETVER >= 20141223
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20141217
+packetLen(0x0948, 6) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20141126
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20141119
+packetLen(0x0948, 5) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20140813
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20140806
+packetLen(0x0948, 36) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20140730
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20140723
+packetLen(0x0948, 5) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20140108
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#endif
+
+// Packet: 0x0949
+#if PACKETVER >= 20141231
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20141223
+packetLen(0x0949, 12) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20141001
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20140924
+packetLen(0x0949, 6) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20140917
+packetLen(0x0949, 10) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20140226
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20140219
+packetLen(0x0949, 18) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20140108
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#endif
+
+// Packet: 0x094a
+#if PACKETVER >= 20140827
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20140820
+packetLen(0x094a, 26) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20140618
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20140611
+packetLen(0x094a, -1) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20140605
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20140528
+packetLen(0x094a, 6) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20140319
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20140312
+packetLen(0x094a, 18) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20140108
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#endif
+
+// Packet: 0x094b
+#if PACKETVER >= 20141119
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20141112
+packetLen(0x094b, 19) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20141022
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20141015
+packetLen(0x094b, 26) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20141008
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20141001
+packetLen(0x094b, 19) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20140605
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20140528
+packetLen(0x094b, 5) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20140508
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20140430
+packetLen(0x094b, 19) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20140319
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20140312
+packetLen(0x094b, 90) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20140108
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#endif
+
+// Packet: 0x094c
+#if PACKETVER >= 20141126
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20141119
+packetLen(0x094c, 6) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20141112
+packetLen(0x094c, 4) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20140611
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20140605
+packetLen(0x094c, 26) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20140416
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20140409
+packetLen(0x094c, 18) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20140402
+packetLen(0x094c, 8) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20140326
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20140319
+packetLen(0x094c, 6) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20140312
+packetLen(0x094c, 5) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20140129
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20140122
+packetLen(0x094c, 8) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20140108
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#endif
+
+// Packet: 0x094d
+#if PACKETVER >= 20140716
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20140709
+packetLen(0x094d, 5) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20140205
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20140129
+packetLen(0x094d, 8) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20140108
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#endif
+
+// Packet: 0x094e
+#if PACKETVER >= 20141029
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20141022
+packetLen(0x094e, 6) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20140716
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20140709
+packetLen(0x094e, 8) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20140702
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20140625
+packetLen(0x094e, 8) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20140521
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20140514
+packetLen(0x094e, 8) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20140508
+packetLen(0x094e, 26) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20140219
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20140212
+packetLen(0x094e, 8) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20140108
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#endif
+
+// Packet: 0x094f
+#if PACKETVER >= 20141231
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20141223
+packetLen(0x094f, 19) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20141119
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20141112
+packetLen(0x094f, 8) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140924
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140917
+packetLen(0x094f, 10) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140716
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140709
+packetLen(0x094f, 26) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140618
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140611
+packetLen(0x094f, 6) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140430
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140423
+packetLen(0x094f, 12) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20140108
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#endif
+
+// Packet: 0x0950
+#if PACKETVER >= 20141231
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20141223
+packetLen(0x0950, 6) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20141112
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20141105
+packetLen(0x0950, 26) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20140618
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20140611
+packetLen(0x0950, 18) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20140409
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20140402
+packetLen(0x0950, 6) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20140129
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20140122
+packetLen(0x0950, 10) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20140108
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#endif
+
+// Packet: 0x0951
+#if PACKETVER >= 20140924
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20140917
+packetLen(0x0951, 18) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20140827
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20140820
+packetLen(0x0951, -1) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20140618
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20140611
+packetLen(0x0951, 5) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20140108
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#endif
+
+// Packet: 0x0952
+#if PACKETVER >= 20141210
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20141203
+packetLen(0x0952, 90) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20141008
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20141001
+packetLen(0x0952, 5) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20140924
+packetLen(0x0952, 26) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20140827
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20140820
+packetLen(0x0952, 7) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20140723
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20140716
+packetLen(0x0952, 5) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20140618
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20140611
+packetLen(0x0952, 8) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20140219
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20140212
+packetLen(0x0952, 6) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20140129
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20140122
+packetLen(0x0952, -1) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20140108
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#endif
+
+// Packet: 0x0953
+#if PACKETVER >= 20141231
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20141223
+packetLen(0x0953, 8) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20140508
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20140430
+packetLen(0x0953, 4) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20140219
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20140212
+packetLen(0x0953, 6) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20140108
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#endif
+
+// Packet: 0x0954
+#if PACKETVER >= 20141217
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20141210
+packetLen(0x0954, 19) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20140625
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20140618
+packetLen(0x0954, 26) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20140326
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20140319
+packetLen(0x0954, 26) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20140108
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#endif
+
+// Packet: 0x0955
+#if PACKETVER >= 20141217
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20141210
+packetLen(0x0955, 8) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20141119
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20141112
+packetLen(0x0955, 8) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20141029
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20141022
+packetLen(0x0955, 18) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20140924
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20140917
+packetLen(0x0955, 26) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20140326
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20140319
+packetLen(0x0955, 6) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20140129
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20140122
+packetLen(0x0955, 36) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20140108
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#endif
+
+// Packet: 0x0956
+#if PACKETVER >= 20141231
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20141223
+packetLen(0x0956, 10) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140924
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140917
+packetLen(0x0956, -1) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140827
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140820
+packetLen(0x0956, 8) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140508
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140430
+packetLen(0x0956, 8) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140402
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140326
+packetLen(0x0956, 5) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20140108
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#endif
+
+// Packet: 0x0957
+#if PACKETVER >= 20141112
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20141105
+packetLen(0x0957, 5) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20140924
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20140917
+packetLen(0x0957, 8) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20140625
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20140618
+packetLen(0x0957, 36) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20140611
+packetLen(0x0957, 6) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20140319
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20140312
+packetLen(0x0957, 8) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20140129
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20140122
+packetLen(0x0957, 12) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20140108
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#endif
+
+// Packet: 0x0958
+#if PACKETVER >= 20141217
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20141210
+packetLen(0x0958, 6) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20140827
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20140820
+packetLen(0x0958, 4) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20140723
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20140716
+packetLen(0x0958, 6) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20140618
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20140611
+packetLen(0x0958, 19) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20140521
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20140514
+packetLen(0x0958, 5) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20140409
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20140402
+packetLen(0x0958, 6) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20140205
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20140129
+packetLen(0x0958, 26) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20140108
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#endif
+
+// Packet: 0x0959
+#if PACKETVER >= 20140723
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140716
+packetLen(0x0959, 6) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140702
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140625
+packetLen(0x0959, 7) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140402
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140326
+packetLen(0x0959, 8) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20140108
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#endif
+
+// Packet: 0x095a
+#if PACKETVER >= 20141203
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20141126
+packetLen(0x095a, 6) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20140924
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20140917
+packetLen(0x095a, 6) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20140416
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20140409
+packetLen(0x095a, 6) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20140402
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20140326
+packetLen(0x095a, 6) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20140108
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#endif
+
+// Packet: 0x095b
+#if PACKETVER >= 20141231
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20141223
+packetLen(0x095b, 10) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20141203
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20141126
+packetLen(0x095b, 5) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20140122
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20140115
+packetLen(0x095b, 4) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20140108
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#endif
+
+// Packet: 0x095c
+#if PACKETVER >= 20141210
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20141203
+packetLen(0x095c, 6) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20140924
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20140917
+packetLen(0x095c, 5) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20140423
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20140416
+packetLen(0x095c, 36) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20140409
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20140402
+packetLen(0x095c, 8) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20140326
+packetLen(0x095c, -1) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20140108
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#endif
+
+// Packet: 0x095d
+#if PACKETVER >= 20141119
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20141112
+packetLen(0x095d, 6) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20140625
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20140618
+packetLen(0x095d, 6) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20140319
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20140312
+packetLen(0x095d, -1) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20140129
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20140122
+packetLen(0x095d, -1) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20140115
+packetLen(0x095d, 26) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20140108
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#endif
+
+// Packet: 0x095e
+#if PACKETVER >= 20140924
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140917
+packetLen(0x095e, 5) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140625
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140618
+packetLen(0x095e, 19) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140430
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140423
+packetLen(0x095e, 4) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140416
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140409
+packetLen(0x095e, 19) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140319
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140305
+packetLen(0x095e, 36) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20140108
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#endif
+
+// Packet: 0x095f
+#if PACKETVER >= 20141231
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20141223
+packetLen(0x095f, 7) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20141203
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20141126
+packetLen(0x095f, 8) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20141112
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20141105
+packetLen(0x095f, -1) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20140730
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20140723
+packetLen(0x095f, 4) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20140716
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20140709
+packetLen(0x095f, 18) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20140605
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20140528
+packetLen(0x095f, 6) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20140521
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20140514
+packetLen(0x095f, 5) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20140129
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20140122
+packetLen(0x095f, -1) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20140108
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#endif
+
+// Packet: 0x0960
+#if PACKETVER >= 20141223
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20141217
+packetLen(0x0960, 4) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20141119
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20141112
+packetLen(0x0960, 6) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20140730
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20140723
+packetLen(0x0960, 5) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20140702
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20140625
+packetLen(0x0960, 36) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20140108
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#endif
+
+// Packet: 0x0961
+#if PACKETVER >= 20141217
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20141210
+packetLen(0x0961, 26) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20140827
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20140820
+packetLen(0x0961, 18) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20140716
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20140709
+packetLen(0x0961, 6) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20140326
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20140319
+packetLen(0x0961, 18) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20140226
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20140219
+packetLen(0x0961, 6) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20140205
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20140129
+packetLen(0x0961, 26) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20140108
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#endif
+
+// Packet: 0x0962
+#if PACKETVER >= 20141210
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20141203
+packetLen(0x0962, 10) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20141119
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20141112
+packetLen(0x0962, 10) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20140625
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20140618
+packetLen(0x0962, 8) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20140521
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20140514
+packetLen(0x0962, 26) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20140305
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20140226
+packetLen(0x0962, 8) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20140108
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#endif
+
+// Packet: 0x0963
+#if PACKETVER >= 20141217
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20141210
+packetLen(0x0963, 36) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20141126
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20141119
+packetLen(0x0963, 90) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20140618
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20140611
+packetLen(0x0963, 6) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20140605
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20140528
+packetLen(0x0963, 10) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20140108
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#endif
+
+// Packet: 0x0964
+#if PACKETVER >= 20140605
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20140528
+packetLen(0x0964, 19) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20140326
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20140319
+packetLen(0x0964, 6) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20140305
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20140226
+packetLen(0x0964, 6) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20140108
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#endif
+
+// Packet: 0x0965
+#if PACKETVER >= 20141203
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20141126
+packetLen(0x0965, 26) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20140618
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20140611
+packetLen(0x0965, 5) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20140521
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20140514
+packetLen(0x0965, -1) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20140409
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20140402
+packetLen(0x0965, 12) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20140122
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20140115
+packetLen(0x0965, -1) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20140108
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#endif
+
+// Packet: 0x0966
+#if PACKETVER >= 20140924
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20140917
+packetLen(0x0966, 4) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20140605
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20140528
+packetLen(0x0966, -1) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20140319
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20140312
+packetLen(0x0966, 8) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20140122
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20140115
+packetLen(0x0966, 19) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20140108
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#endif
+
+// Packet: 0x0967
+#if PACKETVER >= 20141217
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20141210
+packetLen(0x0967, 8) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20141022
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20141015
+packetLen(0x0967, 5) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20140820
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20140813
+packetLen(0x0967, 8) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20140625
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20140618
+packetLen(0x0967, 5) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20140108
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#endif
+
+// Packet: 0x0968
+#if PACKETVER >= 20141112
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20141105
+packetLen(0x0968, 18) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20140702
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20140625
+packetLen(0x0968, 6) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20140528
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20140521
+packetLen(0x0968, 5) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20140108
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#endif
+
+// Packet: 0x0969
+#if PACKETVER >= 20140723
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20140716
+packetLen(0x0969, -1) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20140702
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20140625
+packetLen(0x0969, 26) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20140402
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20140326
+packetLen(0x0969, 10) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20140305
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20140226
+packetLen(0x0969, -1) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20140108
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#endif
+
+// Packet: 0x096a
+#if PACKETVER >= 20141231
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20141217
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20141210
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20141203
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20141126
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20141105
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20141008
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140917
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140827
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140820
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140806
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140709
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140625
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140611
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140605
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140528
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140514
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140508
+packetLen(0x096a, 18) // CZ_REASSEMBLY_AUTH84
+// ignored packet from 2014-05-08aRagexeRE
+#elif PACKETVER >= 20140430
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140423
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140416
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140326
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140319
+packetLen(0x096a, -1) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140312
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140226
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140212
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140129
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140122
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140115
+packetLen(0x096a, 18) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20140108
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#endif
+
+// Packet: 0x096b
+packetLen(0x096b, 4) // ZC_PRNPC_STATE
+
+// Packet: 0x096c
+packetLen(0x096c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+
+// Packet: 0x096d
+packetLen(0x096d, -1) // ZC_MERGE_ITEM_OPEN
+
+// Packet: 0x096e
+packetLen(0x096e, -1) // CZ_REQ_MERGE_ITEM
+
+// Packet: 0x096f
+packetLen(0x096f, 7) // ZC_ACK_MERGE_ITEM
+
+// Packet: 0x0970
+packetLen(0x0970, 31) // CH_MAKE_CHAR_NOT_STATS
+
+// Packet: 0x0971
+packetLen(0x0971, 6) // ZC_PARTY_RECRUIT_REFUSE_VOLUNTEER_TO_PM
+
+// Packet: 0x0972
+packetLen(0x0972, -1) // ZC_SAY_DIALOG2
+
+// Packet: 0x0973
+packetLen(0x0973, 7) // ZC_WAIT_DIALOG2
+
+// Packet: 0x0974
+packetLen(0x0974, 2) // CZ_CANCEL_MERGE_ITEM
+
+// Packet: 0x0975
+packetLen(0x0975, -1) // ZC_STORE_ITEMLIST_NORMAL_V2
+
+// Packet: 0x0976
+packetLen(0x0976, -1) // ZC_STORE_ITEMLIST_EQUIP_V2
+
+// Packet: 0x0977
+packetLen(0x0977, 14) // ZC_HP_INFO
+
+// Packet: 0x0978
+packetLen(0x0978, 6) // CZ_REQ_BEFORE_WORLD_INFO
+
+// Packet: 0x0979
+packetLen(0x0979, 50) // ZC_ACK_BEFORE_WORLD_INFO
+
+// Packet: 0x097a
+packetLen(0x097a, -1) // ZC_ALL_QUEST_LIST2
+
+// Packet: 0x097b
+packetLen(0x097b, -1) // ZC_PERSONAL_INFOMATION2
+
+// Packet: 0x097c
+packetLen(0x097c, 4) // CZ_REQ_RANKING
+
+// Packet: 0x097d
+packetLen(0x097d, 288) // ZC_ACK_RANKING
+
+// Packet: 0x097e
+packetLen(0x097e, 12) // ZC_UPDATE_RANKING_POINT
+
+// Packet: 0x097f
+packetLen(0x097f, -1) // ZC_SELECTCART
+
+// Packet: 0x0980
+packetLen(0x0980, 7) // CZ_SELECTCART
+
+// Packet: 0x0981
+packetLen(0x0981, -1) // ZC_PERSONAL_INFOMATION_CHN
+
+// Packet: 0x0982
+packetLen(0x0982, 7) // ZC_FATIGUE_CHN
+
+// Packet: 0x0983
+packetLen(0x0983, 29) // ZC_MSG_STATE_CHANGE3
+
+// Packet: 0x0984
+packetLen(0x0984, 28) // ZC_EFST_SET_ENTER2
+
+// Packet: 0x0985
+packetLen(0x0985, -1) // ZC_SKILL_POSTDELAY_LIST2
+
+// Packet: 0x0986
+packetLen(0x0986, 10) // AC_SHUTDOWN_NOTIFY
+
+// Packet: 0x0987
+packetLen(0x0987, -1) // CA_LOGIN6
+
+// Packet: 0x0988
+packetLen(0x0988, 6) // ZC_NOTIFY_CLAN_CONNECTINFO
+
+// Packet: 0x0989
+packetLen(0x0989, 2) // ZC_ACK_CLAN_LEAVE
+
+// Packet: 0x098a
+packetLen(0x098a, -1) // ZC_CLANINFO
+
+// Packet: 0x098b
+packetLen(0x098b, 2) // AC_REQ_NEW_USER
+
+// Packet: 0x098c
+packetLen(0x098c, 4) // CA_ACK_NEW_USER
+
+// Packet: 0x098d
+packetLen(0x098d, -1) // CZ_CLAN_CHAT
+
+// Packet: 0x098e
+packetLen(0x098e, -1) // ZC_NOTIFY_CLAN_CHAT
+
+// Packet: 0x098f
+packetLen(0x098f, -1) // CH_DELETE_CHAR3_EXT
+
+// Packet: 0x0990
+#if PACKETVER >= 20140226
+packetLen(0x0990, 62) // ZC_ITEM_PICKUP_ACK_V5
+// ignored packet from 2014-02-26bRagexeRE
+#elif PACKETVER >= 20140219
+packetLen(0x0990, 62) // ZC_ITEM_PICKUP_ACK_V5
+// ignored packet from 2014-02-19bRagexeRE
+#elif PACKETVER >= 20140129
+packetLen(0x0990, 52) // ZC_ITEM_PICKUP_ACK_V5
+#elif PACKETVER >= 20140108
+packetLen(0x0990, 31) // ZC_ITEM_PICKUP_ACK_V5
+#endif
+
+// Packet: 0x0991
+packetLen(0x0991, -1) // ZC_INVENTORY_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0992
+packetLen(0x0992, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0993
+packetLen(0x0993, -1) // ZC_CART_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0994
+packetLen(0x0994, -1) // ZC_CART_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0995
+packetLen(0x0995, -1) // ZC_STORE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0996
+packetLen(0x0996, -1) // ZC_STORE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0997
+packetLen(0x0997, -1) // ZC_EQUIPWIN_MICROSCOPE_V5
+
+// Packet: 0x0998
+packetLen(0x0998, 8) // CZ_REQ_WEAR_EQUIP_V5
+
+// Packet: 0x0999
+packetLen(0x0999, 11) // ZC_ACK_WEAR_EQUIP_V5
+
+// Packet: 0x099a
+packetLen(0x099a, 9) // ZC_ACK_TAKEOFF_EQUIP_V5
+
+// Packet: 0x099b
+packetLen(0x099b, 8) // ZC_MAPPROPERTY_R2
+
+// Packet: 0x099c
+packetLen(0x099c, 6) // CH_REQ_CHARINFO_PER_PAGE
+
+// Packet: 0x099d
+packetLen(0x099d, -1) // HC_ACK_CHARINFO_PER_PAGE
+
+// Packet: 0x099e
+packetLen(0x099e, 12) // HC_QUEUE_ORDER
+
+// Packet: 0x099f
+packetLen(0x099f, -1) // ZC_SKILL_ENTRY4
+
+// Packet: 0x09a0
+packetLen(0x09a0, 10) // HC_CHARLIST_NOTIFY
+
+// Packet: 0x09a1
+packetLen(0x09a1, 2) // CH_CHARLIST_REQ
+
+// Packet: 0x09a2
+packetLen(0x09a2, 6) // AC_REQ_MOBILE_OTP
+
+// Packet: 0x09a3
+packetLen(0x09a3, -1) // CA_ACK_MOBILE_OTP
+
+// Packet: 0x09a4
+packetLen(0x09a4, 18) // ZC_DISPATCH_TIMING_INFO_CHN
+
+// Packet: 0x09a5
+packetLen(0x09a5, 7) // AC_REFUSE_LOGIN3
+
+// Packet: 0x09a6
+packetLen(0x09a6, 12) // ZC_BANKING_CHECK
+
+// Packet: 0x09a7
+packetLen(0x09a7, 10) // CZ_REQ_BANKING_DEPOSIT
+
+// Packet: 0x09a8
+packetLen(0x09a8, 16) // ZC_ACK_BANKING_DEPOSIT
+
+// Packet: 0x09a9
+packetLen(0x09a9, 10) // CZ_REQ_BANKING_WITHDRAW
+
+// Packet: 0x09aa
+packetLen(0x09aa, 16) // ZC_ACK_BANKING_WITHDRAW
+
+// Packet: 0x09ab
+packetLen(0x09ab, 6) // CZ_REQ_BANKING_CHECK
+
+// Packet: 0x09ac
+packetLen(0x09ac, -1) // CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO
+
+// Packet: 0x09ad
+packetLen(0x09ad, 10) // ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO
+
+// Packet: 0x09ae
+packetLen(0x09ae, 17) // CZ_REQ_APPLY_BARGAIN_SALE_ITEM
+
+// Packet: 0x09af
+packetLen(0x09af, 4) // ZC_ACK_APPLY_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b0
+packetLen(0x09b0, 8) // CZ_REQ_REMOVE_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b1
+packetLen(0x09b1, 4) // ZC_ACK_REMOVE_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b2
+packetLen(0x09b2, 8) // ZC_NOTIFY_BARGAIN_SALE_SELLING
+
+// Packet: 0x09b3
+packetLen(0x09b3, 4) // ZC_NOTIFY_BARGAIN_SALE_CLOSE
+
+// Packet: 0x09b4
+packetLen(0x09b4, 6) // CZ_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b5
+packetLen(0x09b5, 2) // ZC_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b6
+packetLen(0x09b6, 6) // CZ_REQ_OPEN_BANKING
+
+// Packet: 0x09b7
+packetLen(0x09b7, 4) // ZC_ACK_OPEN_BANKING
+
+// Packet: 0x09b8
+packetLen(0x09b8, 6) // CZ_REQ_CLOSE_BANKING
+
+// Packet: 0x09b9
+packetLen(0x09b9, 4) // ZC_ACK_CLOSE_BANKING
+
+// Packet: 0x09ba
+packetLen(0x09ba, 2) // CZ_REQ_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bb
+packetLen(0x09bb, 6) // ZC_ACK_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bc
+packetLen(0x09bc, 6) // CZ_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09bd
+packetLen(0x09bd, 2) // ZC_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09be
+packetLen(0x09be, 2) // CZ_REQ_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09bf
+packetLen(0x09bf, 4) // ZC_ACK_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09c1
+packetLen(0x09c1, 10) // ZC_C_MARKERINFO
+
+// Packet: 0x09c2
+packetLen(0x09c2, -1) // HC_SECRETSCAN_DATA
+
+// Packet: 0x09c3
+packetLen(0x09c3, 8) // CZ_REQ_COUNT_BARGAIN_SALE_ITEM
+
+// Packet: 0x09c4
+packetLen(0x09c4, 8) // ZC_ACK_COUNT_BARGAIN_SALE_ITEM
+
+// Packet: 0x09c5
+packetLen(0x09c5, 1042) // CS_LOGIN_QUERY
+
+// Packet: 0x09c6
+packetLen(0x09c6, -1) // SC_LOGIN_ANSWER
+
+// Packet: 0x09c7
+packetLen(0x09c7, 18) // SC_LOGIN_ERROR
+
+// Packet: 0x09c8
+packetLen(0x09c8, -1) // CA_LOGIN_OTP
+
+// Packet: 0x09c9
+packetLen(0x09c9, -1) // SC_SOCT
+
+// Packet: 0x09ca
+packetLen(0x09ca, -1) // ZC_SKILL_ENTRY5
+
+// Packet: 0x09cb
+packetLen(0x09cb, 17) // ZC_USE_SKILL2
+
+// Packet: 0x09cc
+packetLen(0x09cc, -1) // ZC_SECRETSCAN_DATA
+
+// Packet: 0x09cd
+packetLen(0x09cd, 8) // ZC_MSG_COLOR
+
+// Packet: 0x09ce
+packetLen(0x09ce, 102) // CZ_ITEM_CREATE_EX
+
+// Packet: 0x09cf
+packetLen(0x09cf, -1) // ZC_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d0
+packetLen(0x09d0, -1) // CZ_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d1
+packetLen(0x09d1, 14) // ZC_PROGRESS_ACTOR
+
+// Packet: 0x09d2
+packetLen(0x09d2, -1) // ZC_GUILDSTORAGE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x09d3
+packetLen(0x09d3, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x09d4
+packetLen(0x09d4, 2) // CZ_NPC_TRADE_QUIT
+
+// Packet: 0x09d5
+packetLen(0x09d5, -1) // ZC_NPC_MARKET_OPEN
+
+// Packet: 0x09d6
+packetLen(0x09d6, -1) // CZ_NPC_MARKET_PURCHASE
+
+// Packet: 0x09d7
+packetLen(0x09d7, -1) // ZC_NPC_MARKET_PURCHASE_RESULT
+
+// Packet: 0x09d8
+packetLen(0x09d8, 2) // CZ_NPC_MARKET_CLOSE
+
+// Packet: 0x09d9
+packetLen(0x09d9, 4) // CZ_REQ_GUILDSTORAGE_LOG
+
+// Packet: 0x09da
+packetLen(0x09da, -1) // ZC_ACK_GUILDSTORAGE_LOG
+
+// Packet: 0x09db
+packetLen(0x09db, -1) // ZC_NOTIFY_MOVEENTRY10
+
+// Packet: 0x09dc
+packetLen(0x09dc, -1) // ZC_NOTIFY_NEWENTRY10
+
+// Packet: 0x09dd
+packetLen(0x09dd, -1) // ZC_NOTIFY_STANDENTRY10
+
+// Packet: 0x09de
+packetLen(0x09de, -1) // ZC_WHISPER02
+
+// Packet: 0x09df
+packetLen(0x09df, 7) // ZC_ACK_WHISPER02
+
+// Packet: 0x09e0
+packetLen(0x09e0, -1) // SC_LOGIN_ANSWER_WITH_ID
+
+// Packet: 0x09e1
+packetLen(0x09e1, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_GUILDSTORAGE
+
+// Packet: 0x09e2
+packetLen(0x09e2, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_BODY
+
+// Packet: 0x09e3
+packetLen(0x09e3, 8) // CZ_MOVE_ITEM_FROM_CART_TO_GUILDSTORAGE
+
+// Packet: 0x09e4
+packetLen(0x09e4, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_CART
+
+// Packet: 0x09e5
+packetLen(0x09e5, 18) // ZC_DELETEITEM_FROM_MCSTORE2
+
+// Packet: 0x09e6
+packetLen(0x09e6, 22) // ZC_UPDATE_ITEM_FROM_BUYING_STORE2
+
+// Packet: 0x09e7
+#if PACKETVER >= 20140716
+packetLen(0x09e7, 3) // ZC_NOTIFY_UNREAD_RODEX
+#elif PACKETVER >= 20140108
+packetLen(0x09e7, 2) // ZC_NOTIFY_UNREAD_RODEX
+#endif
+
+// Packet: 0x09e8
+#if PACKETVER >= 20140212
+packetLen(0x09e8, 11) // CZ_OPEN_RODEXBOX
+#elif PACKETVER >= 20140108
+packetLen(0x09e8, 10) // CZ_OPEN_RODEXBOX
+#endif
+
+// Packet: 0x09e9
+packetLen(0x09e9, 2) // CZ_CLOSE_RODEXBOX
+
+// Packet: 0x09ea
+packetLen(0x09ea, 11) // CZ_REQ_READ_RODEX
+
+// Packet: 0x09eb
+#if PACKETVER >= 20140115
+packetLen(0x09eb, -1) // ZC_ACK_READ_RODEX
+#elif PACKETVER >= 20140108
+packetLen(0x09eb, 23) // ZC_ACK_READ_RODEX
+#endif
+
+// Packet: 0x09ec
+packetLen(0x09ec, -1) // CZ_REQ_SEND_RODEX
+
+// Packet: 0x09ed
+packetLen(0x09ed, 3) // ZC_ACK_SEND_RODEX
+
+// Packet: 0x09ee
+packetLen(0x09ee, 11) // CZ_REQ_NEXT_RODEX
+
+// Packet: 0x09ef
+packetLen(0x09ef, 11) // CZ_REQ_REFRESH_RODEX
+
+// Packet: 0x09f0
+packetLen(0x09f0, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x09f1
+#if PACKETVER >= 20140326
+packetLen(0x09f1, 11) // CZ_REQ_ZENY_FROM_RODEX
+#elif PACKETVER >= 20140115
+packetLen(0x09f1, 10) // CZ_REQ_ZENY_FROM_RODEX
+#endif
+
+// Packet: 0x09f2
+#if PACKETVER >= 20140409
+packetLen(0x09f2, 12) // ZC_ACK_ZENY_FROM_RODEX
+#elif PACKETVER >= 20140326
+packetLen(0x09f2, 4) // ZC_ACK_ZENY_FROM_RODEX
+#elif PACKETVER >= 20140115
+packetLen(0x09f2, 3) // ZC_ACK_ZENY_FROM_RODEX
+#endif
+
+// Packet: 0x09f3
+#if PACKETVER >= 20140326
+packetLen(0x09f3, 11) // CZ_REQ_ITEM_FROM_RODEX
+#elif PACKETVER >= 20140305
+packetLen(0x09f3, 10) // CZ_REQ_ITEM_FROM_RODEX
+#elif PACKETVER >= 20140115
+packetLen(0x09f3, 15) // CZ_REQ_ITEM_FROM_RODEX
+#endif
+
+// Packet: 0x09f4
+#if PACKETVER >= 20140409
+packetLen(0x09f4, 12) // ZC_ACK_ITEM_FROM_RODEX
+#elif PACKETVER >= 20140326
+packetLen(0x09f4, 4) // ZC_ACK_ITEM_FROM_RODEX
+#elif PACKETVER >= 20140305
+packetLen(0x09f4, 3) // ZC_ACK_ITEM_FROM_RODEX
+#elif PACKETVER >= 20140115
+packetLen(0x09f4, 12) // ZC_ACK_ITEM_FROM_RODEX
+#endif
+
+// Packet: 0x09f5
+packetLen(0x09f5, 11) // CZ_REQ_DELETE_RODEX
+
+// Packet: 0x09f6
+packetLen(0x09f6, 11) // ZC_ACK_DELETE_RODEX
+
+// Packet: 0x09f7
+packetLen(0x09f7, 75) // ZC_PROPERTY_HOMUN_2
+
+// Packet: 0x09f8
+#if PACKETVER >= 20140115
+packetLen(0x09f8, -1) // ZC_ALL_QUEST_LIST3
+#endif
+
+// Packet: 0x09f9
+#if PACKETVER >= 20140122
+packetLen(0x09f9, 143) // ZC_ADD_QUEST_EX
+#elif PACKETVER >= 20140115
+packetLen(0x09f9, 131) // ZC_ADD_QUEST_EX
+#endif
+
+// Packet: 0x09fa
+#if PACKETVER >= 20140115
+packetLen(0x09fa, -1) // ZC_UPDATE_MISSION_HUNT_EX
+#endif
+
+// Packet: 0x09fb
+#if PACKETVER >= 20140122
+packetLen(0x09fb, -1) // CZ_PET_EVOLUTION
+#endif
+
+// Packet: 0x09fc
+#if PACKETVER >= 20140122
+packetLen(0x09fc, 6) // ZC_PET_EVOLUTION_RESULT
+#endif
+
+// Packet: 0x09fd
+#if PACKETVER >= 20140122
+packetLen(0x09fd, -1) // ZC_NOTIFY_MOVEENTRY11
+#endif
+
+// Packet: 0x09fe
+#if PACKETVER >= 20140122
+packetLen(0x09fe, -1) // ZC_NOTIFY_NEWENTRY11
+#endif
+
+// Packet: 0x09ff
+#if PACKETVER >= 20140122
+packetLen(0x09ff, -1) // ZC_NOTIFY_STANDENTRY11
+#endif
+
+// Packet: 0x0a00
+#if PACKETVER >= 20140129
+packetLen(0x0a00, 269) // ZC_SHORTCUT_KEY_LIST_V3
+#endif
+
+// Packet: 0x0a01
+#if PACKETVER >= 20140129
+packetLen(0x0a01, 3) // CZ_SHORTCUTKEYBAR_ROTATE
+#endif
+
+// Packet: 0x0a02
+#if PACKETVER >= 20140212
+packetLen(0x0a02, 4) // ZC_DRESSROOM_OPEN
+#endif
+
+// Packet: 0x0a03
+#if PACKETVER >= 20140326
+packetLen(0x0a03, 2) // CZ_REQ_CANCEL_WRITE_RODEX
+#elif PACKETVER >= 20140226
+packetLen(0x0a03, 14) // CZ_REQ_CANCEL_WRITE_RODEX
+#endif
+
+// Packet: 0x0a04
+#if PACKETVER >= 20140416
+packetLen(0x0a04, 6) // CZ_REQ_ADD_ITEM_RODEX
+#elif PACKETVER >= 20140326
+// removed
+#elif PACKETVER >= 20140226
+packetLen(0x0a04, 11) // CZ_REQ_ADD_ITEM_RODEX
+#endif
+
+// Packet: 0x0a05
+#if PACKETVER >= 20141119
+packetLen(0x0a05, 53) // ZC_ACK_ADD_ITEM_RODEX
+#elif PACKETVER >= 20141008
+packetLen(0x0a05, 49) // ZC_ACK_ADD_ITEM_RODEX
+#elif PACKETVER >= 20140416
+packetLen(0x0a05, 48) // ZC_ACK_ADD_ITEM_RODEX
+#elif PACKETVER >= 20140226
+packetLen(0x0a05, 6) // ZC_ACK_ADD_ITEM_RODEX
+#endif
+
+// Packet: 0x0a06
+#if PACKETVER >= 20140416
+packetLen(0x0a06, 6) // CZ_REQ_REMOVE_RODEX_ITEM
+#elif PACKETVER >= 20140226
+packetLen(0x0a06, 5) // CZ_REQ_REMOVE_RODEX_ITEM
+#endif
+
+// Packet: 0x0a07
+#if PACKETVER >= 20140521
+packetLen(0x0a07, 9) // ZC_ACK_REMOVE_RODEX_ITEM
+#elif PACKETVER >= 20140416
+packetLen(0x0a07, 7) // ZC_ACK_REMOVE_RODEX_ITEM
+#elif PACKETVER >= 20140326
+packetLen(0x0a07, 6) // ZC_ACK_REMOVE_RODEX_ITEM
+#elif PACKETVER >= 20140305
+packetLen(0x0a07, 4) // ZC_ACK_REMOVE_RODEX_ITEM
+#endif
+
+// Packet: 0x0a08
+#if PACKETVER >= 20140416
+packetLen(0x0a08, 26) // CZ_REQ_OPEN_WRITE_RODEX
+#elif PACKETVER >= 20140326
+packetLen(0x0a08, 7) // CZ_REQ_OPEN_WRITE_RODEX
+#elif PACKETVER >= 20140305
+packetLen(0x0a08, 5) // CZ_REQ_OPEN_WRITE_RODEX
+#endif
+
+// Packet: 0x0a09
+#if PACKETVER >= 20140312
+packetLen(0x0a09, 45) // ZC_ADD_EXCHANGE_ITEM3
+#elif PACKETVER >= 20140305
+packetLen(0x0a09, 50) // ZC_ADD_EXCHANGE_ITEM3
+#endif
+
+// Packet: 0x0a0a
+#if PACKETVER >= 20140312
+packetLen(0x0a0a, 47) // ZC_ADD_ITEM_TO_STORE3
+#elif PACKETVER >= 20140305
+packetLen(0x0a0a, 52) // ZC_ADD_ITEM_TO_STORE3
+#endif
+
+// Packet: 0x0a0b
+#if PACKETVER >= 20140312
+packetLen(0x0a0b, 47) // ZC_ADD_ITEM_TO_CART3
+#elif PACKETVER >= 20140305
+packetLen(0x0a0b, 52) // ZC_ADD_ITEM_TO_CART3
+#endif
+
+// Packet: 0x0a0c
+#if PACKETVER >= 20140312
+packetLen(0x0a0c, 56) // ZC_ITEM_PICKUP_ACK_V6
+#elif PACKETVER >= 20140305
+packetLen(0x0a0c, 61) // ZC_ITEM_PICKUP_ACK_V6
+#endif
+
+// Packet: 0x0a0d
+#if PACKETVER >= 20140312
+packetLen(0x0a0d, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V6
+#elif PACKETVER >= 20140305
+packetLen(0x0a0d, 4) // ZC_INVENTORY_ITEMLIST_EQUIP_V6
+#endif
+
+// Packet: 0x0a0e
+#if PACKETVER >= 20140312
+packetLen(0x0a0e, 14) // ZC_BATTLEFIELD_NOTIFY_HP2
+#endif
+
+// Packet: 0x0a0f
+#if PACKETVER >= 20140402
+packetLen(0x0a0f, -1) // ZC_CART_ITEMLIST_EQUIP_V6
+#endif
+
+// Packet: 0x0a10
+#if PACKETVER >= 20140402
+packetLen(0x0a10, -1) // ZC_STORE_ITEMLIST_EQUIP_V6
+#endif
+
+// Packet: 0x0a11
+#if PACKETVER >= 20140402
+packetLen(0x0a11, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V6
+#endif
+
+// Packet: 0x0a12
+#if PACKETVER >= 20140416
+packetLen(0x0a12, 27) // ZC_ACK_OPEN_WRITE_RODEX
+#endif
+
+// Packet: 0x0a13
+#if PACKETVER >= 20140423
+packetLen(0x0a13, 26) // CZ_CHECK_RECEIVE_CHARACTER_NAME
+#elif PACKETVER >= 20140416
+packetLen(0x0a13, 2) // CZ_CHECK_RECEIVE_CHARACTER_NAME
+#endif
+
+// Packet: 0x0a14
+#if PACKETVER >= 20140521
+packetLen(0x0a14, 10) // ZC_CHECK_RECEIVE_CHARACTER_NAME
+#elif PACKETVER >= 20140423
+packetLen(0x0a14, 6) // ZC_CHECK_RECEIVE_CHARACTER_NAME
+#endif
+
+// Packet: 0x0a15
+#if PACKETVER >= 20140508
+packetLen(0x0a15, 12) // ZC_GOLDPCCAFE_POINT
+#elif PACKETVER >= 20140430
+packetLen(0x0a15, 11) // ZC_GOLDPCCAFE_POINT
+#endif
+
+// Packet: 0x0a16
+#if PACKETVER >= 20140430
+packetLen(0x0a16, 26) // CZ_DYNAMICNPC_CREATE_REQUEST
+#endif
+
+// Packet: 0x0a17
+#if PACKETVER >= 20140430
+packetLen(0x0a17, 6) // ZC_DYNAMICNPC_CREATE_RESULT
+#endif
+
+// Packet: 0x0a18
+#if PACKETVER >= 20140611
+packetLen(0x0a18, 14) // ZC_ACCEPT_ENTER3
+#elif PACKETVER >= 20140605
+packetLen(0x0a18, 2) // ZC_ACCEPT_ENTER3
+#endif
+
+// Packet: 0x0a19
+#if PACKETVER >= 20140611
+packetLen(0x0a19, 2) // CZ_REQ_OPEN_ROULETTE
+#elif PACKETVER >= 20140605
+packetLen(0x0a19, -1) // CZ_REQ_OPEN_ROULETTE
+#endif
+
+// Packet: 0x0a1a
+#if PACKETVER >= 20140611
+packetLen(0x0a1a, 23) // ZC_ACK_OPEN_ROULETTE
+#elif PACKETVER >= 20140605
+packetLen(0x0a1a, 10) // ZC_ACK_OPEN_ROULETTE
+#endif
+
+// Packet: 0x0a1b
+#if PACKETVER >= 20140605
+packetLen(0x0a1b, 2) // CZ_REQ_ROULETTE_INFO
+#endif
+
+// Packet: 0x0a1c
+#if PACKETVER >= 20140611
+packetLen(0x0a1c, -1) // ZC_ACK_ROULEITTE_INFO
+#elif PACKETVER >= 20140605
+packetLen(0x0a1c, 6) // ZC_ACK_ROULEITTE_INFO
+#endif
+
+// Packet: 0x0a1d
+#if PACKETVER >= 20140611
+packetLen(0x0a1d, 2) // CZ_REQ_CLOSE_ROULETTE
+#elif PACKETVER >= 20140605
+packetLen(0x0a1d, 14) // CZ_REQ_CLOSE_ROULETTE
+#endif
+
+// Packet: 0x0a1e
+#if PACKETVER >= 20140611
+packetLen(0x0a1e, 3) // ZC_ACK_CLOSE_ROULETTE
+#endif
+
+// Packet: 0x0a1f
+#if PACKETVER >= 20140611
+packetLen(0x0a1f, 2) // CZ_REQ_GENERATE_ROULETTE
+#endif
+
+// Packet: 0x0a20
+#if PACKETVER >= 20140611
+packetLen(0x0a20, 21) // ZC_ACK_GENERATE_ROULETTE
+#endif
+
+// Packet: 0x0a21
+#if PACKETVER >= 20140618
+packetLen(0x0a21, 3) // CZ_RECV_ROULETTE_ITEM
+#elif PACKETVER >= 20140611
+packetLen(0x0a21, 6) // CZ_RECV_ROULETTE_ITEM
+#endif
+
+// Packet: 0x0a22
+#if PACKETVER >= 20140618
+packetLen(0x0a22, 5) // ZC_RECV_ROULETTE_ITEM
+#elif PACKETVER >= 20140611
+packetLen(0x0a22, 3) // ZC_RECV_ROULETTE_ITEM
+#endif
+
+// Packet: 0x0a23
+#if PACKETVER >= 20140611
+packetLen(0x0a23, -1) // ZC_ALL_ACH_LIST
+#endif
+
+// Packet: 0x0a24
+#if PACKETVER >= 20141001
+packetLen(0x0a24, 66) // ZC_ACH_UPDATE
+#elif PACKETVER >= 20140723
+packetLen(0x0a24, 56) // ZC_ACH_UPDATE
+#elif PACKETVER >= 20140625
+packetLen(0x0a24, 36) // ZC_ACH_UPDATE
+#elif PACKETVER >= 20140611
+packetLen(0x0a24, 35) // ZC_ACH_UPDATE
+#endif
+
+// Packet: 0x0a25
+#if PACKETVER >= 20140611
+packetLen(0x0a25, 6) // CZ_REQ_ACH_REWARD
+#endif
+
+// Packet: 0x0a26
+#if PACKETVER >= 20140611
+packetLen(0x0a26, 7) // ZC_REQ_ACH_REWARD_ACK
+#endif
+
+// Packet: 0x0a27
+#if PACKETVER >= 20140625
+packetLen(0x0a27, 8) // ZC_RECOVERY2
+#endif
+
+// Packet: 0x0a28
+#if PACKETVER >= 20140625
+packetLen(0x0a28, 3) // ZC_ACK_OPENSTORE2
+#endif
+
+// Packet: 0x0a29
+#if PACKETVER >= 20140702
+packetLen(0x0a29, 6) // ZC_REQ_AU_BOT
+#endif
+
+// Packet: 0x0a2a
+#if PACKETVER >= 20140702
+packetLen(0x0a2a, 6) // CZ_ACK_AU_BOT
+#endif
+
+// Packet: 0x0a2b
+#if PACKETVER >= 20140723
+packetLen(0x0a2b, 14) // ZC_SE_CASHSHOP_OPEN2
+#endif
+
+// Packet: 0x0a2c
+#if PACKETVER >= 20140723
+packetLen(0x0a2c, 12) // ZC_SE_PC_BUY_TAIWANCASHITEM_RESULT
+#endif
+
+// Packet: 0x0a2d
+#if PACKETVER >= 20140820
+packetLen(0x0a2d, -1) // ZC_EQUIPWIN_MICROSCOPE_V6
+#endif
+
+// Packet: 0x0a2e
+#if PACKETVER >= 20140827
+packetLen(0x0a2e, 6) // CZ_REQ_CHANGE_TITLE
+#endif
+
+// Packet: 0x0a2f
+#if PACKETVER >= 20140827
+packetLen(0x0a2f, 7) // ZC_ACK_CHANGE_TITLE
+#endif
+
+// Packet: 0x0a30
+#if PACKETVER >= 20140917
+packetLen(0x0a30, 106) // ZC_ACK_REQNAMEALL2
+#endif
+
+// Packet: 0x0a31
+#if PACKETVER >= 20140917
+packetLen(0x0a31, -1) // ZC_RESULT_PACKAGE_ITEM_TEST
+#endif
+
+// Packet: 0x0a32
+#if PACKETVER >= 20140924
+packetLen(0x0a32, 2) // ZC_OPEN_RODEX_THROUGH_NPC_ONLY
+#endif
+
+// Packet: 0x0a33
+#if PACKETVER >= 20140924
+packetLen(0x0a33, 7) // ZC_UPDATE_ROULETTE_COIN
+#endif
+
+// Packet: 0x0a34
+#if PACKETVER >= 20140924
+packetLen(0x0a34, 6) // ZC_UPDATE_TAIWANCASH
+#endif
+
+// Packet: 0x0a35
+#if PACKETVER >= 20141119
+packetLen(0x0a35, 4) // CZ_REQ_ONECLICK_ITEMIDENTIFY
+#endif
+
+// Packet: 0x0a36
+#if PACKETVER >= 20141126
+packetLen(0x0a36, 7) // ZC_HP_INFO_TINY
+#endif
+
+// Packet: 0x0a37
+#if PACKETVER >= 20141126
+packetLen(0x0a37, 57) // ZC_ITEM_PICKUP_ACK_V7
+#endif
+
+
+#endif /* COMMON_PACKETS2014_LEN_RE_H */
diff --git a/src/common/packets/packets2015_len_main.h b/src/common/packets/packets2015_len_main.h
new file mode 100644
index 000000000..3144d5250
--- /dev/null
+++ b/src/common/packets/packets2015_len_main.h
@@ -0,0 +1,8641 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2015_LEN_MAIN_H
+#define COMMON_PACKETS2015_LEN_MAIN_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 149) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 22) // CZ_ENTER
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 44) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 10) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, 14)
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+packetLen(0x0094, 19) // CZ_REQNAME
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+packetLen(0x00a7, 9)
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 9) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+packetLen(0x00f7, 17) // CZ_REQUEST_TIME
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+packetLen(0x0113, 25) // CZ_USE_SKILL
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 37) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+#if PACKETVER >= 20151209
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20151202
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20151104
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20151028
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20151021
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20151014
+packetLen(0x0202, 18) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20151007
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20151001
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150826
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150819
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150805
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150603
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150527
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150520
+packetLen(0x0202, 6) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150429
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150422
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150401
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150325
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150318
+packetLen(0x0202, 4) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150225
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+// ignored packet from 2015-02-25iRagexe
+// ignored packet from 2015-02-25eRagexe
+#elif PACKETVER >= 20150217
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150211
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150204
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150128
+packetLen(0x0202, 12) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150107
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+
+// Packet: 0x022b
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+
+// Packet: 0x022c
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+
+// Packet: 0x022d
+#if PACKETVER >= 20151223
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20151216
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+#elif PACKETVER >= 20151209
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20151202
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20151125
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20151118
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+#elif PACKETVER >= 20151104
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20151028
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20151007
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20151001
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150923
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150916
+packetLen(0x022d, 10) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150826
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150819
+packetLen(0x022d, 10) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150805
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150715
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150708
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150701
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150624
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150603
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150527
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150429
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150422
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150225
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+// ignored packet from 2015-02-25iRagexe
+// ignored packet from 2015-02-25eRagexe
+#elif PACKETVER >= 20150217
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150211
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150204
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150107
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#endif
+
+// Packet: 0x022e
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+
+// Packet: 0x022f
+packetLen(0x022f, 5) // ZC_FEED_MER
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+#if PACKETVER >= 20151209
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20151202
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20151111
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20151104
+packetLen(0x023b, -1) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20151028
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20151021
+packetLen(0x023b, 19) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20151007
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20151001
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150916
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150909
+packetLen(0x023b, 7) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150902
+packetLen(0x023b, 18) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150819
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150805
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150729
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150722
+packetLen(0x023b, 90) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150715
+packetLen(0x023b, -1) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150708
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150701
+packetLen(0x023b, 19) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150603
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150527
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150513
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150507
+packetLen(0x023b, 5) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150429
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150422
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150325
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150318
+packetLen(0x023b, 6) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150311
+packetLen(0x023b, 5) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150225
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+// ignored packet from 2015-02-25iRagexe
+// ignored packet from 2015-02-25eRagexe
+#elif PACKETVER >= 20150217
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150211
+packetLen(0x023b, 4) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150204
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150128
+packetLen(0x023b, 5) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150107
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#endif
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+
+// Packet: 0x0275
+packetLen(0x0275, 37) // CH_ENTER2
+
+// Packet: 0x0276
+packetLen(0x0276, -1) // AC_ACCEPT_LOGIN2
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+#if PACKETVER >= 20151209
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20151202
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20151104
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20151021
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20151014
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20151001
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150826
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150819
+packetLen(0x0281, 6) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150805
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150729
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150722
+packetLen(0x0281, 6) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150701
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150624
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150603
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150527
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150429
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150422
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150325
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150318
+packetLen(0x0281, 8) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150225
+packetLen(0x0281, 4) // CZ_GANGSI_RANK
+// ignored packet from 2015-02-25iRagexe
+// ignored packet from 2015-02-25eRagexe
+#elif PACKETVER >= 20150217
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150211
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150204
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150128
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150121
+packetLen(0x0281, 18) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150107
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#endif
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+
+// Packet: 0x0288
+packetLen(0x0288, -1) // CZ_PC_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0289
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0296
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0297
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0298
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+
+// Packet: 0x0299
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+
+// Packet: 0x029a
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+
+// Packet: 0x029b
+packetLen(0x029b, 80) // ZC_MER_INIT
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a5
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+
+// Packet: 0x02a6
+packetLen(0x02a6, -1) // ZC_HACKSH_CPX_MSG
+
+// Packet: 0x02a7
+packetLen(0x02a7, -1) // CZ_HACKSH_CPX_MSG
+
+// Packet: 0x02aa
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+
+// Packet: 0x02ab
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+
+// Packet: 0x02ac
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+
+// Packet: 0x02ad
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+
+// Packet: 0x02b0
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+
+// Packet: 0x02b1
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+
+// Packet: 0x02b2
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+
+// Packet: 0x02b3
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+
+// Packet: 0x02b4
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+
+// Packet: 0x02b5
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+
+// Packet: 0x02b6
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+
+// Packet: 0x02b7
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+
+// Packet: 0x02b8
+packetLen(0x02b8, 22) // ZC_ITEM_PICKUP_PARTY
+
+// Packet: 0x02b9
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+
+// Packet: 0x02ba
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+
+// Packet: 0x02bb
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+
+// Packet: 0x02bc
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+
+// Packet: 0x02c1
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+
+// Packet: 0x02c2
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+
+// Packet: 0x02c4
+#if PACKETVER >= 20151223
+packetLen(0x02c4, 8) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20151118
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20151111
+packetLen(0x02c4, -1) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20151028
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20151021
+packetLen(0x02c4, 36) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20150715
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20150708
+packetLen(0x02c4, 90) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20150520
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20150513
+packetLen(0x02c4, 8) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20150304
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20150225
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+// ignored packet from 2015-02-25iRagexe
+// ignored packet from 2015-02-25eRagexe
+#elif PACKETVER >= 20150107
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#endif
+
+// Packet: 0x02c5
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c6
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+
+// Packet: 0x02c7
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c8
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+
+// Packet: 0x02c9
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+
+// Packet: 0x02ca
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+
+// Packet: 0x02cb
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+
+// Packet: 0x02cc
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+
+// Packet: 0x02cd
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+
+// Packet: 0x02ce
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+
+// Packet: 0x02cf
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+
+// Packet: 0x02d0
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d1
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d2
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d3
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+
+// Packet: 0x02d4
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+
+// Packet: 0x02d5
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+
+// Packet: 0x02d6
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d7
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d8
+packetLen(0x02d8, 10) // CZ_CONFIG
+
+// Packet: 0x02d9
+packetLen(0x02d9, 10) // ZC_CONFIG
+
+// Packet: 0x02da
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+
+// Packet: 0x02db
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+
+// Packet: 0x02dc
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+
+// Packet: 0x02dd
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+
+// Packet: 0x02de
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+
+// Packet: 0x02df
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+
+// Packet: 0x02e0
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+
+// Packet: 0x02e1
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+
+// Packet: 0x02e2
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+
+// Packet: 0x02e3
+packetLen(0x02e3, 22) // CZ_USE_SKILL_NEW_JAPEN
+
+// Packet: 0x02e4
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+
+// Packet: 0x02e5
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+
+// Packet: 0x02e6
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+
+// Packet: 0x02e7
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+
+// Packet: 0x02e8
+packetLen(0x02e8, -1) // ZC_NORMAL_ITEMLIST3
+
+// Packet: 0x02e9
+packetLen(0x02e9, -1) // ZC_CART_NORMAL_ITEMLIST3
+
+// Packet: 0x02ea
+packetLen(0x02ea, -1) // ZC_STORE_NORMAL_ITEMLIST3
+
+// Packet: 0x02eb
+packetLen(0x02eb, 13) // ZC_ACCEPT_ENTER2
+
+// Packet: 0x02ec
+packetLen(0x02ec, 67) // ZC_NOTIFY_MOVEENTRY4
+
+// Packet: 0x02ed
+packetLen(0x02ed, 59) // ZC_NOTIFY_NEWENTRY4
+
+// Packet: 0x02ee
+packetLen(0x02ee, 60) // ZC_NOTIFY_STANDENTRY4
+
+// Packet: 0x02ef
+packetLen(0x02ef, 8) // ZC_NOTIFY_FONT
+
+// Packet: 0x02f0
+packetLen(0x02f0, 10) // ZC_PROGRESS
+
+// Packet: 0x02f1
+packetLen(0x02f1, 2) // CZ_PROGRESS
+
+// Packet: 0x02f2
+packetLen(0x02f2, 2) // ZC_PROGRESS_CANCEL
+
+// Packet: 0x02f3
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+
+// Packet: 0x02f4
+packetLen(0x02f4, 3) // ZC_IRMAIL_SEND_RES
+
+// Packet: 0x02f5
+packetLen(0x02f5, 7) // ZC_IRMAIL_NOTIFY
+
+// Packet: 0x02f6
+packetLen(0x02f6, 7) // CZ_IRMAIL_LIST
+
+// Packet: 0x035c
+packetLen(0x035c, 2) // CZ_OPEN_SIMPLE_CASHSHOP_ITEMLIST
+
+// Packet: 0x035d
+packetLen(0x035d, -1) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+
+// Packet: 0x035e
+packetLen(0x035e, 2) // CZ_CLOSE_WINDOW
+
+// Packet: 0x035f
+#if PACKETVER >= 20151230
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20151209
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20151202
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20151125
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20151118
+packetLen(0x035f, 5) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20151111
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20151104
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20151021
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20151014
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20151001
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20150916
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20150909
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20150826
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20150805
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20150715
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20150708
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20150701
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20150617
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20150603
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20150527
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20150520
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20150422
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20150311
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20150225
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+// ignored packet from 2015-02-25hRagexe
+#elif PACKETVER >= 20150217
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20150211
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20150107
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#endif
+
+// Packet: 0x0360
+#if PACKETVER >= 20151230
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20151209
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20151202
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20151125
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20151111
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20151104
+packetLen(0x0360, 19) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20151021
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20151014
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20151001
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150909
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150902
+packetLen(0x0360, -1) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150826
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150805
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150729
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150722
+packetLen(0x0360, 7) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150715
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150708
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150701
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150617
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150603
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150527
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150520
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150422
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150311
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150304
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150225
+packetLen(0x0360, 26) // CZ_REQUEST_TIME2
+// ignored packet from 2015-02-25eRagexe
+// ignored packet from 2015-02-25hRagexe
+#elif PACKETVER >= 20150217
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150211
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150204
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150128
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150107
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#endif
+
+// Packet: 0x0361
+#if PACKETVER >= 20151223
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20151216
+packetLen(0x0361, 6) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20151209
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20151202
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20151104
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20151028
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20151021
+packetLen(0x0361, 8) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20151007
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20151001
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150923
+packetLen(0x0361, 18) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150916
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150909
+packetLen(0x0361, 6) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150819
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150805
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150729
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150722
+packetLen(0x0361, 6) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150610
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150603
+packetLen(0x0361, 26) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150527
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150520
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150429
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150422
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150415
+packetLen(0x0361, 8) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150225
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+// ignored packet from 2015-02-25iRagexe
+// ignored packet from 2015-02-25eRagexe
+#elif PACKETVER >= 20150217
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150211
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150204
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150107
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#endif
+
+// Packet: 0x0362
+#if PACKETVER >= 20151230
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20151223
+packetLen(0x0362, 8) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20151216
+packetLen(0x0362, 5) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20151209
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20151202
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20151118
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20151111
+packetLen(0x0362, 5) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20151104
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20151021
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20151014
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20151001
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150902
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150826
+packetLen(0x0362, 36) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150819
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150805
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150722
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150715
+packetLen(0x0362, 10) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150701
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150617
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150603
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150527
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150429
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150422
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150408
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150401
+packetLen(0x0362, 7) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150311
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150304
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150225
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+// ignored packet from 2015-02-25iRagexe
+// ignored packet from 2015-02-25eRagexe
+#elif PACKETVER >= 20150217
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150211
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150204
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150121
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150107
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#endif
+
+// Packet: 0x0363
+#if PACKETVER >= 20151209
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20151202
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20151111
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20151104
+packetLen(0x0363, 5) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20151021
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20151014
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20151001
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150819
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150805
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150701
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150624
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150617
+packetLen(0x0363, 36) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150603
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150527
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150520
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150513
+packetLen(0x0363, 19) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150507
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150429
+packetLen(0x0363, 5) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150422
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150401
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150325
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150311
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150304
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150225
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+// ignored packet from 2015-02-25iRagexe
+// ignored packet from 2015-02-25eRagexe
+#elif PACKETVER >= 20150217
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150211
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150204
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150121
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150107
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#endif
+
+// Packet: 0x0364
+#if PACKETVER >= 20151230
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20151223
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20151216
+packetLen(0x0364, 4) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20151209
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20151202
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20151111
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20151021
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20151014
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20151001
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150819
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150805
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150722
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150715
+packetLen(0x0364, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150701
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150624
+packetLen(0x0364, 18) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150603
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150527
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150429
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150422
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150415
+packetLen(0x0364, 90) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150225
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+// ignored packet from 2015-02-25iRagexe
+// ignored packet from 2015-02-25eRagexe
+#elif PACKETVER >= 20150217
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150211
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150204
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150121
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150107
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#endif
+
+// Packet: 0x0365
+#if PACKETVER >= 20151230
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20151223
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20151216
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20151209
+packetLen(0x0365, 5) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20151202
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20151125
+packetLen(0x0365, 5) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20151118
+packetLen(0x0365, 26) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20151104
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20151021
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20151014
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20151001
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150916
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150909
+packetLen(0x0365, 5) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150819
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150805
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150701
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150624
+packetLen(0x0365, 5) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150617
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150603
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150527
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150429
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150422
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150401
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150325
+packetLen(0x0365, 10) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150225
+packetLen(0x0365, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+// ignored packet from 2015-02-25iRagexe
+// ignored packet from 2015-02-25eRagexe
+#elif PACKETVER >= 20150217
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150211
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150204
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150128
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150121
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150107
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#endif
+
+// Packet: 0x0366
+#if PACKETVER >= 20151230
+packetLen(0x0366, 8) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20151209
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20151202
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20151125
+packetLen(0x0366, 8) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20151021
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20151014
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20151001
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150923
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150916
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150909
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150826
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150805
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150715
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150708
+packetLen(0x0366, 26) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150701
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150617
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150603
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150527
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150520
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150422
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150415
+packetLen(0x0366, 5) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150311
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150225
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+// ignored packet from 2015-02-25hRagexe
+#elif PACKETVER >= 20150217
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150211
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150204
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150128
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150107
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#endif
+
+// Packet: 0x0367
+#if PACKETVER >= 20150909
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20150902
+packetLen(0x0367, 6) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20150408
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20150401
+packetLen(0x0367, 6) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20150325
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20150318
+packetLen(0x0367, 90) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20150225
+packetLen(0x0367, 90) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+// ignored packet from 2015-02-25iRagexe
+#elif PACKETVER >= 20150107
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#endif
+
+// Packet: 0x0368
+#if PACKETVER >= 20151230
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20151209
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20151202
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20151125
+packetLen(0x0368, -1) // CZ_REQNAME2
+#elif PACKETVER >= 20151021
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20151014
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20151001
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20150916
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20150909
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20150902
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20150826
+packetLen(0x0368, 8) // CZ_REQNAME2
+#elif PACKETVER >= 20150805
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20150729
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20150722
+packetLen(0x0368, 26) // CZ_REQNAME2
+#elif PACKETVER >= 20150715
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20150708
+packetLen(0x0368, 5) // CZ_REQNAME2
+#elif PACKETVER >= 20150701
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20150617
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20150603
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20150527
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20150520
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20150415
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20150311
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20150217
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20150211
+packetLen(0x0368, 5) // CZ_REQNAME2
+#elif PACKETVER >= 20150204
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20150128
+packetLen(0x0368, 8) // CZ_REQNAME2
+#elif PACKETVER >= 20150107
+packetLen(0x0368, 6) // CZ_REQNAME2
+#endif
+
+// Packet: 0x0369
+#if PACKETVER >= 20151230
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20151216
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20151209
+packetLen(0x0369, 6) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20151202
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20151125
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20151118
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20151111
+packetLen(0x0369, 8) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20151021
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20151014
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20151001
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150916
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150909
+packetLen(0x0369, 36) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150826
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150805
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150715
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150708
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150701
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150617
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150603
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150527
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150520
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150422
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150311
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150225
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+// ignored packet from 2015-02-25hRagexe
+#elif PACKETVER >= 20150217
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150211
+packetLen(0x0369, 5) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150204
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150128
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150107
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#endif
+
+// Packet: 0x03dd
+packetLen(0x03dd, 18) // AHC_GAME_GUARD
+
+// Packet: 0x03de
+packetLen(0x03de, 18) // CAH_ACK_GAME_GUARD
+
+// Packet: 0x0436
+#if PACKETVER >= 20151230
+packetLen(0x0436, -1) // CZ_ENTER2
+#elif PACKETVER >= 20151223
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20151216
+packetLen(0x0436, 12) // CZ_ENTER2
+#elif PACKETVER >= 20151209
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20151202
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20151111
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20151104
+packetLen(0x0436, 6) // CZ_ENTER2
+#elif PACKETVER >= 20151021
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20151007
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20151001
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20150902
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20150826
+packetLen(0x0436, 18) // CZ_ENTER2
+#elif PACKETVER >= 20150805
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20150729
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20150722
+packetLen(0x0436, -1) // CZ_ENTER2
+#elif PACKETVER >= 20150715
+packetLen(0x0436, 6) // CZ_ENTER2
+#elif PACKETVER >= 20150708
+packetLen(0x0436, -1) // CZ_ENTER2
+#elif PACKETVER >= 20150701
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20150624
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20150617
+packetLen(0x0436, 19) // CZ_ENTER2
+#elif PACKETVER >= 20150603
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20150527
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20150429
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20150422
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20150318
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20150311
+packetLen(0x0436, -1) // CZ_ENTER2
+#elif PACKETVER >= 20150304
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20150225
+packetLen(0x0436, 19) // CZ_ENTER2
+// ignored packet from 2015-02-25iRagexe
+// ignored packet from 2015-02-25eRagexe
+#elif PACKETVER >= 20150217
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20150211
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20150204
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20150121
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20150114
+packetLen(0x0436, 10) // CZ_ENTER2
+#elif PACKETVER >= 20150107
+packetLen(0x0436, 4) // CZ_ENTER2
+#endif
+
+// Packet: 0x0437
+#if PACKETVER >= 20151230
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20151209
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20151202
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20151125
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20151111
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20151104
+packetLen(0x0437, 6) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20151021
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20151014
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20151001
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150916
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150909
+packetLen(0x0437, 8) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150826
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150805
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150729
+packetLen(0x0437, -1) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150722
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150715
+packetLen(0x0437, 10) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150701
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150617
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150610
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150603
+packetLen(0x0437, 8) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150527
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150520
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150422
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150408
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150401
+packetLen(0x0437, 6) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150311
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150225
+packetLen(0x0437, 7) // CZ_REQUEST_ACT2
+// ignored packet from 2015-02-25iRagexe
+#elif PACKETVER >= 20150217
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150211
+packetLen(0x0437, 12) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150204
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150128
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150107
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#endif
+
+// Packet: 0x0438
+#if PACKETVER >= 20151209
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20151202
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20151125
+packetLen(0x0438, 6) // CZ_USE_SKILL2
+#elif PACKETVER >= 20151021
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20151014
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20151001
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150916
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150909
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150826
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150805
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150729
+packetLen(0x0438, 5) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150722
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150715
+packetLen(0x0438, 5) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150708
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150701
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150617
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150610
+packetLen(0x0438, -1) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150603
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150527
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150520
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150422
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150318
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150311
+packetLen(0x0438, -1) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150217
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150211
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150204
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150128
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150107
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#endif
+
+// Packet: 0x0439
+packetLen(0x0439, 8) // CZ_USE_ITEM2
+
+// Packet: 0x043d
+packetLen(0x043d, 8) // ZC_SKILL_POSTDELAY
+
+// Packet: 0x043e
+packetLen(0x043e, -1) // ZC_SKILL_POSTDELAY_LIST
+
+// Packet: 0x043f
+packetLen(0x043f, 25) // ZC_MSG_STATE_CHANGE2
+
+// Packet: 0x0440
+packetLen(0x0440, 10) // ZC_MILLENNIUMSHIELD
+
+// Packet: 0x0441
+packetLen(0x0441, 4) // ZC_SKILLINFO_DELETE
+
+// Packet: 0x0442
+packetLen(0x0442, -1) // ZC_SKILL_SELECT_REQUEST
+
+// Packet: 0x0443
+packetLen(0x0443, 8) // CZ_SKILL_SELECT_RESPONSE
+
+// Packet: 0x0444
+packetLen(0x0444, -1) // ZC_SIMPLE_CASH_POINT_ITEMLIST
+
+// Packet: 0x0445
+packetLen(0x0445, 10) // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0446
+packetLen(0x0446, 14) // ZC_QUEST_NOTIFY_EFFECT
+
+// Packet: 0x0447
+packetLen(0x0447, 2) // CZ_BLOCKING_PLAY_CANCEL
+
+// Packet: 0x0448
+packetLen(0x0448, -1) // HC_CHARACTER_LIST
+
+// Packet: 0x0449
+packetLen(0x0449, 4) // ZC_HACKSH_ERROR_MSG
+
+// Packet: 0x044a
+packetLen(0x044a, 6) // CZ_CLIENT_VERSION
+
+// Packet: 0x044b
+packetLen(0x044b, 2) // CZ_CLOSE_SIMPLECASH_SHOP
+
+// Packet: 0x07d7
+packetLen(0x07d7, 8) // CZ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d8
+packetLen(0x07d8, 8) // ZC_REQ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d9
+packetLen(0x07d9, 268) // ZC_SHORTCUT_KEY_LIST_V2
+
+// Packet: 0x07da
+packetLen(0x07da, 6) // CZ_CHANGE_GROUP_MASTER
+
+// Packet: 0x07db
+packetLen(0x07db, 8) // ZC_HO_PAR_CHANGE
+
+// Packet: 0x07dc
+packetLen(0x07dc, 6) // CZ_SEEK_PARTY
+
+// Packet: 0x07dd
+packetLen(0x07dd, 54) // ZC_SEEK_PARTY
+
+// Packet: 0x07de
+packetLen(0x07de, 30) // CZ_SEEK_PARTY_MEMBER
+
+// Packet: 0x07df
+packetLen(0x07df, 54) // ZC_SEEK_PARTY_MEMBER
+
+// Packet: 0x07e0
+packetLen(0x07e0, 58) // ZC_ES_NOTI_MYINFO
+
+// Packet: 0x07e1
+packetLen(0x07e1, 15) // ZC_SKILLINFO_UPDATE2
+
+// Packet: 0x07e2
+packetLen(0x07e2, 8) // ZC_MSG_VALUE
+
+// Packet: 0x07e3
+packetLen(0x07e3, 6) // ZC_ITEMLISTWIN_OPEN
+
+// Packet: 0x07e4
+#if PACKETVER >= 20151216
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20151209
+packetLen(0x07e4, 26) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20151202
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20151104
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20151021
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20151014
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20151001
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150923
+packetLen(0x07e4, 36) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150819
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150805
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150708
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150701
+packetLen(0x07e4, 8) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150624
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150617
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150610
+packetLen(0x07e4, -1) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150603
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150527
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150429
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150422
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150325
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150318
+packetLen(0x07e4, 26) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150225
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+// ignored packet from 2015-02-25eRagexe
+// ignored packet from 2015-02-25hRagexe
+#elif PACKETVER >= 20150204
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150128
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150121
+packetLen(0x07e4, -1) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150107
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#endif
+
+// Packet: 0x07e5
+packetLen(0x07e5, 4) // CH_ENTER_CHECKBOT
+
+// Packet: 0x07e6
+packetLen(0x07e6, 8) // ZC_MSG_SKILL
+
+// Packet: 0x07e7
+packetLen(0x07e7, 32) // CH_CHECKBOT
+
+// Packet: 0x07e8
+packetLen(0x07e8, -1) // HC_CHECKBOT
+
+// Packet: 0x07e9
+packetLen(0x07e9, 5) // HC_CHECKBOT_RESULT
+
+// Packet: 0x07ea
+packetLen(0x07ea, 2) // CZ_BATTLE_FIELD_LIST
+
+// Packet: 0x07eb
+packetLen(0x07eb, -1) // ZC_BATTLE_FIELD_LIST
+
+// Packet: 0x07ec
+#if PACKETVER >= 20151230
+packetLen(0x07ec, 90) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20151216
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20151209
+packetLen(0x07ec, 6) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20151202
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20151111
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20151104
+packetLen(0x07ec, 26) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20151028
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20151021
+packetLen(0x07ec, 5) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20151014
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20151001
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150902
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150826
+packetLen(0x07ec, 7) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150819
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150805
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150701
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150624
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150617
+packetLen(0x07ec, -1) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150603
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150527
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150429
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150422
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150225
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+// ignored packet from 2015-02-25iRagexe
+// ignored packet from 2015-02-25eRagexe
+#elif PACKETVER >= 20150217
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150211
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150204
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150121
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150107
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#endif
+
+// Packet: 0x07ed
+packetLen(0x07ed, 10) // ZC_JOIN_BATTLE_FIELD
+
+// Packet: 0x07ee
+packetLen(0x07ee, 6) // CZ_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07ef
+packetLen(0x07ef, 8) // ZC_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07f0
+packetLen(0x07f0, 6) // CZ_REQ_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f1
+packetLen(0x07f1, 18) // ZC_ACK_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f2
+packetLen(0x07f2, 8) // ZC_BATTLE_NOTI_START_STEP
+
+// Packet: 0x07f3
+packetLen(0x07f3, 6) // ZC_BATTLE_JOIN_NOTI_DEFER
+
+// Packet: 0x07f4
+packetLen(0x07f4, 3) // ZC_BATTLE_JOIN_DISABLE_STATE
+
+// Packet: 0x07f5
+packetLen(0x07f5, 6) // CZ_GM_FULLSTRIP
+
+// Packet: 0x07f6
+packetLen(0x07f6, 14) // ZC_NOTIFY_EXP
+
+// Packet: 0x07f7
+packetLen(0x07f7, -1) // ZC_NOTIFY_MOVEENTRY7
+
+// Packet: 0x07f8
+packetLen(0x07f8, -1) // ZC_NOTIFY_NEWENTRY5
+
+// Packet: 0x07f9
+packetLen(0x07f9, -1) // ZC_NOTIFY_STANDENTRY5
+
+// Packet: 0x07fa
+packetLen(0x07fa, 8) // ZC_DELETE_ITEM_FROM_BODY
+
+// Packet: 0x07fb
+packetLen(0x07fb, 25) // ZC_USESKILL_ACK2
+
+// Packet: 0x07fc
+packetLen(0x07fc, 10) // ZC_CHANGE_GROUP_MASTER
+
+// Packet: 0x07fd
+packetLen(0x07fd, -1) // ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN
+
+// Packet: 0x07fe
+packetLen(0x07fe, 26) // ZC_PLAY_NPC_BGM
+
+// Packet: 0x0800
+packetLen(0x0800, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0801
+packetLen(0x0801, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0802
+#if PACKETVER >= 20151230
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20151223
+packetLen(0x0802, 4) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20151209
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20151202
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20151125
+packetLen(0x0802, -1) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20151118
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20151111
+packetLen(0x0802, 4) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20151104
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20151028
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20151014
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20151001
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150909
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150902
+packetLen(0x0802, 36) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150819
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150805
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150708
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150701
+packetLen(0x0802, 6) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150624
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150603
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150527
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150429
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150422
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150401
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150325
+packetLen(0x0802, 4) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150318
+packetLen(0x0802, -1) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150311
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150304
+packetLen(0x0802, 4) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150225
+packetLen(0x0802, 18) // CZ_PARTY_BOOKING_REQ_REGISTER
+// ignored packet from 2015-02-25iRagexe
+// ignored packet from 2015-02-25eRagexe
+#elif PACKETVER >= 20150217
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150211
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150204
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150121
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150107
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// Packet: 0x0803
+packetLen(0x0803, 4) // ZC_PARTY_BOOKING_ACK_REGISTER
+
+// Packet: 0x0804
+packetLen(0x0804, 14) // CZ_PARTY_BOOKING_REQ_SEARCH
+
+// Packet: 0x0805
+packetLen(0x0805, -1) // ZC_PARTY_BOOKING_ACK_SEARCH
+
+// Packet: 0x0806
+packetLen(0x0806, 2) // CZ_PARTY_BOOKING_REQ_DELETE
+
+// Packet: 0x0807
+packetLen(0x0807, 4) // ZC_PARTY_BOOKING_ACK_DELETE
+
+// Packet: 0x0808
+packetLen(0x0808, 14) // CZ_PARTY_BOOKING_REQ_UPDATE
+
+// Packet: 0x0809
+packetLen(0x0809, 50) // ZC_PARTY_BOOKING_NOTIFY_INSERT
+
+// Packet: 0x080a
+packetLen(0x080a, 18) // ZC_PARTY_BOOKING_NOTIFY_UPDATE
+
+// Packet: 0x080b
+packetLen(0x080b, 6) // ZC_PARTY_BOOKING_NOTIFY_DELETE
+
+// Packet: 0x080c
+packetLen(0x080c, 2) // CZ_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080d
+packetLen(0x080d, 3) // ZC_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080e
+packetLen(0x080e, 14) // ZC_NOTIFY_HP_TO_GROUPM_R2
+
+// Packet: 0x080f
+packetLen(0x080f, 20) // ZC_ADD_EXCHANGE_ITEM2
+
+// Packet: 0x0810
+packetLen(0x0810, 3) // ZC_OPEN_BUYING_STORE
+
+// Packet: 0x0811
+#if PACKETVER >= 20151230
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20151216
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20151209
+packetLen(0x0811, 6) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20151202
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20151125
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20151111
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20151104
+packetLen(0x0811, 18) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20151021
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20151014
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20151007
+packetLen(0x0811, 26) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20151001
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150916
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150909
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150826
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150805
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150715
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150708
+packetLen(0x0811, 19) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150701
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150624
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150617
+packetLen(0x0811, 8) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150610
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150603
+packetLen(0x0811, 5) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150527
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150520
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150422
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150325
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150318
+packetLen(0x0811, 19) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150311
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150217
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150211
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150204
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150128
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150107
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#endif
+
+// Packet: 0x0812
+packetLen(0x0812, 8) // ZC_FAILED_OPEN_BUYING_STORE_TO_BUYER
+
+// Packet: 0x0813
+packetLen(0x0813, -1) // ZC_MYITEMLIST_BUYING_STORE
+
+// Packet: 0x0814
+packetLen(0x0814, 86) // ZC_BUYING_STORE_ENTRY
+
+// Packet: 0x0815
+#if PACKETVER >= 20151230
+packetLen(0x0815, 19) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20151223
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20151209
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20151202
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20151125
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20151118
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20151111
+packetLen(0x0815, 26) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20151021
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20151014
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20151001
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150916
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150909
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150826
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150805
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150715
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150708
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150701
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150617
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150603
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150527
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150520
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150422
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150318
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150311
+packetLen(0x0815, 19) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150225
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+// ignored packet from 2015-02-25iRagexe
+#elif PACKETVER >= 20150217
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150211
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150204
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150128
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150107
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#endif
+
+// Packet: 0x0816
+packetLen(0x0816, 6) // ZC_DISAPPEAR_BUYING_STORE_ENTRY
+
+// Packet: 0x0817
+#if PACKETVER >= 20151021
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20151014
+packetLen(0x0817, 26) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20151001
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20150923
+packetLen(0x0817, -1) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20150729
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20150722
+packetLen(0x0817, 19) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20150520
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20150513
+packetLen(0x0817, 5) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20150507
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20150422
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20150415
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20150304
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20150225
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20150217
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20150211
+packetLen(0x0817, 10) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20150107
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#endif
+
+// Packet: 0x0818
+packetLen(0x0818, -1) // ZC_ACK_ITEMLIST_BUYING_STORE
+
+// Packet: 0x0819
+#if PACKETVER >= 20151230
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20151209
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20151202
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20151125
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20151021
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20151014
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20151001
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150916
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150909
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150902
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150826
+packetLen(0x0819, 6) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150805
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150715
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150708
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150701
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150617
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150610
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150603
+packetLen(0x0819, 6) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150527
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150520
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150422
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150415
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150408
+packetLen(0x0819, 8) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150401
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150325
+packetLen(0x0819, 6) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150311
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150304
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150225
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+// ignored packet from 2015-02-25eRagexe
+// ignored packet from 2015-02-25hRagexe
+#elif PACKETVER >= 20150217
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150211
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150204
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150128
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150107
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#endif
+
+// Packet: 0x081a
+packetLen(0x081a, 4) // ZC_FAILED_TRADE_BUYING_STORE_TO_BUYER
+
+// Packet: 0x081b
+packetLen(0x081b, 10) // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+
+// Packet: 0x081c
+packetLen(0x081c, 10) // ZC_ITEM_DELETE_BUYING_STORE
+
+// Packet: 0x081d
+packetLen(0x081d, 22) // ZC_EL_INIT
+
+// Packet: 0x081e
+packetLen(0x081e, 8) // ZC_EL_PAR_CHANGE
+
+// Packet: 0x081f
+packetLen(0x081f, -1) // ZC_BROADCAST4
+
+// Packet: 0x0820
+packetLen(0x0820, 11) // ZC_COSTUME_SPRITE_CHANGE
+
+// Packet: 0x0821
+packetLen(0x0821, 2) // AC_OTP_USER
+
+// Packet: 0x0822
+packetLen(0x0822, 9) // CA_OTP_AUTH_REQ
+
+// Packet: 0x0823
+packetLen(0x0823, -1) // AC_OTP_AUTH_ACK
+
+// Packet: 0x0824
+packetLen(0x0824, 6) // ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER
+
+// Packet: 0x0825
+packetLen(0x0825, -1) // CA_SSO_LOGIN_REQ
+
+// Packet: 0x0827
+packetLen(0x0827, 6) // CH_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0828
+packetLen(0x0828, 14) // HC_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0829
+packetLen(0x0829, 12) // CH_DELETE_CHAR3
+
+// Packet: 0x082a
+packetLen(0x082a, 10) // HC_DELETE_CHAR3
+
+// Packet: 0x082b
+packetLen(0x082b, 6) // CH_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082c
+packetLen(0x082c, 10) // HC_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082d
+packetLen(0x082d, -1) // HC_ACCEPT_ENTER2
+
+// Packet: 0x0835
+#if PACKETVER >= 20150923
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20150916
+packetLen(0x0835, 6) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20150722
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20150715
+packetLen(0x0835, -1) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20150617
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20150610
+packetLen(0x0835, 8) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20150422
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20150415
+packetLen(0x0835, 6) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20150225
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+// ignored packet from 2015-02-25hRagexe
+#elif PACKETVER >= 20150217
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20150211
+packetLen(0x0835, 8) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20150107
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#endif
+
+// Packet: 0x0836
+packetLen(0x0836, -1) // ZC_SEARCH_STORE_INFO_ACK
+
+// Packet: 0x0837
+packetLen(0x0837, 3) // ZC_SEARCH_STORE_INFO_FAILED
+
+// Packet: 0x0838
+#if PACKETVER >= 20151230
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20151209
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20151202
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20151125
+packetLen(0x0838, 18) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20151021
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20151014
+packetLen(0x0838, -1) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20151001
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150916
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150909
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150826
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150805
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150715
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150708
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150701
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150617
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150603
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150527
+packetLen(0x0838, 10) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150520
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150422
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150318
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150311
+packetLen(0x0838, 10) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150225
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+// ignored packet from 2015-02-25hRagexe
+#elif PACKETVER >= 20150217
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150211
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150204
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150128
+packetLen(0x0838, 7) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150107
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#endif
+
+// Packet: 0x0839
+packetLen(0x0839, 66) // ZC_ACK_BAN_GUILD_SSO
+
+// Packet: 0x083a
+packetLen(0x083a, 5) // ZC_OPEN_SEARCH_STORE_INFO
+
+// Packet: 0x083b
+packetLen(0x083b, 2) // CZ_CLOSE_SEARCH_STORE_INFO
+
+// Packet: 0x083c
+#if PACKETVER >= 20151230
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20151209
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20151202
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20151125
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20151021
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20151014
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20151001
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150916
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150909
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150902
+packetLen(0x083c, -1) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150819
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150805
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150722
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150715
+packetLen(0x083c, 7) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150708
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150701
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150617
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150603
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150527
+packetLen(0x083c, 36) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150520
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150422
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150408
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150401
+packetLen(0x083c, -1) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150311
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150225
+packetLen(0x083c, 12) // CZ_SSILIST_ITEM_CLICK
+// ignored packet from 2015-02-25iRagexe
+#elif PACKETVER >= 20150217
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150211
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150204
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150128
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150121
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150114
+packetLen(0x083c, 19) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150107
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#endif
+
+// Packet: 0x083d
+packetLen(0x083d, 6) // ZC_SSILIST_ITEM_CLICK_ACK
+
+// Packet: 0x083e
+packetLen(0x083e, 26) // AC_REFUSE_LOGIN2
+
+// Packet: 0x0840
+packetLen(0x0840, -1) // HC_NOTIFY_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0841
+packetLen(0x0841, 4) // CH_SELECT_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0842
+packetLen(0x0842, 6) // CZ_RECALL_SSO
+
+// Packet: 0x0843
+packetLen(0x0843, 6) // CZ_REMOVE_AID_SSO
+
+// Packet: 0x0844
+packetLen(0x0844, 2) // CZ_SE_CASHSHOP_OPEN
+
+// Packet: 0x0845
+packetLen(0x0845, 10) // ZC_SE_CASHSHOP_OPEN
+
+// Packet: 0x0846
+packetLen(0x0846, 4) // CZ_REQ_SE_CASH_TAB_CODE
+
+// Packet: 0x0847
+packetLen(0x0847, -1) // ZC_ACK_SE_CASH_ITEM_LIST
+
+// Packet: 0x0848
+packetLen(0x0848, -1) // CZ_SE_PC_BUY_CASHITEM_LIST
+
+// Packet: 0x0849
+packetLen(0x0849, 16) // ZC_SE_PC_BUY_CASHITEM_RESULT
+
+// Packet: 0x084a
+packetLen(0x084a, 2) // CZ_SE_CASHSHOP_CLOSE
+
+// Packet: 0x084b
+packetLen(0x084b, 19) // ZC_ITEM_FALL_ENTRY4
+
+// Packet: 0x084c
+packetLen(0x084c, 10) // CZ_MACRO_USE_SKILL
+
+// Packet: 0x084d
+packetLen(0x084d, 10) // CZ_MACRO_USE_SKILL_TOGROUND
+
+// Packet: 0x084e
+packetLen(0x084e, 5) // CZ_MACRO_REQUEST_MOVE
+
+// Packet: 0x084f
+packetLen(0x084f, 6) // CZ_MACRO_ITEM_PICKUP
+
+// Packet: 0x0850
+packetLen(0x0850, 7) // CZ_MACRO_REQUEST_ACT
+
+// Packet: 0x0851
+packetLen(0x0851, -1) // ZC_GPK_DYNCODE
+
+// Packet: 0x0852
+packetLen(0x0852, 2) // CZ_GPK_DYNCODE_RELOAD
+
+// Packet: 0x0853
+packetLen(0x0853, -1) // ZC_GPK_AUTH
+
+// Packet: 0x0854
+packetLen(0x0854, -1) // CZ_GPK_AUTH
+
+// Packet: 0x0855
+packetLen(0x0855, 6) // ZC_MACRO_ITEMPICKUP_FAIL
+
+// Packet: 0x0856
+packetLen(0x0856, -1) // ZC_NOTIFY_MOVEENTRY8
+
+// Packet: 0x0857
+packetLen(0x0857, -1) // ZC_NOTIFY_STANDENTRY7
+
+// Packet: 0x0858
+packetLen(0x0858, -1) // ZC_NOTIFY_NEWENTRY6
+
+// Packet: 0x0859
+packetLen(0x0859, -1) // ZC_EQUIPWIN_MICROSCOPE2
+
+// Packet: 0x085a
+#if PACKETVER >= 20151021
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20151014
+packetLen(0x085a, 10) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20150513
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20150507
+packetLen(0x085a, 8) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20150415
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20150408
+packetLen(0x085a, 6) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20150204
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20150128
+packetLen(0x085a, -1) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20150107
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x085b
+#if PACKETVER >= 20151230
+packetLen(0x085b, -1) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20151223
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20151216
+packetLen(0x085b, 6) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20151209
+packetLen(0x085b, 36) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150909
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150902
+packetLen(0x085b, 7) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150805
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150729
+packetLen(0x085b, 8) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150225
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150217
+packetLen(0x085b, 36) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150107
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x085c
+#if PACKETVER >= 20151021
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20151014
+packetLen(0x085c, 7) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20151001
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150923
+packetLen(0x085c, 6) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150722
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150715
+packetLen(0x085c, 6) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150415
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150408
+packetLen(0x085c, 10) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150107
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#endif
+
+// Packet: 0x085d
+#if PACKETVER >= 20151216
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20151209
+packetLen(0x085d, 6) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20151118
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20151111
+packetLen(0x085d, -1) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20151001
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20150923
+packetLen(0x085d, 26) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20150909
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20150902
+packetLen(0x085d, 6) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20150826
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20150819
+packetLen(0x085d, 8) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20150401
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20150325
+packetLen(0x085d, 6) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20150107
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x085e
+#if PACKETVER >= 20151216
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20151209
+packetLen(0x085e, -1) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20151202
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20151125
+packetLen(0x085e, 6) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150923
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150916
+packetLen(0x085e, 8) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150715
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150708
+packetLen(0x085e, 8) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150527
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150520
+packetLen(0x085e, 6) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150422
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150415
+packetLen(0x085e, 4) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150408
+packetLen(0x085e, 5) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150401
+packetLen(0x085e, 12) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150107
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x085f
+#if PACKETVER >= 20151202
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20151125
+packetLen(0x085f, 8) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20150107
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x0860
+#if PACKETVER >= 20151104
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20151028
+packetLen(0x0860, 36) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20151021
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20151014
+packetLen(0x0860, 6) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20150805
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20150729
+packetLen(0x0860, 6) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20150610
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20150603
+packetLen(0x0860, 90) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20150107
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x0861
+#if PACKETVER >= 20151230
+packetLen(0x0861, 26) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20151216
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20151209
+packetLen(0x0861, -1) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20150916
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20150909
+packetLen(0x0861, 4) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20150902
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20150826
+packetLen(0x0861, 8) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20150107
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x0862
+#if PACKETVER >= 20151118
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20151111
+packetLen(0x0862, 6) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20151014
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20151007
+packetLen(0x0862, 4) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150826
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150819
+packetLen(0x0862, 8) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150325
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150318
+packetLen(0x0862, -1) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150311
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150304
+packetLen(0x0862, 8) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150217
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150211
+packetLen(0x0862, -1) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150107
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x0863
+#if PACKETVER >= 20151021
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20151014
+packetLen(0x0863, 5) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150909
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150902
+packetLen(0x0863, 10) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150422
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150415
+packetLen(0x0863, -1) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150325
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150318
+packetLen(0x0863, 6) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150217
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150211
+packetLen(0x0863, 10) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150107
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x0864
+#if PACKETVER >= 20151230
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20151223
+packetLen(0x0864, 6) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20151216
+packetLen(0x0864, 8) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20151001
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20150923
+packetLen(0x0864, 5) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20150610
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20150603
+packetLen(0x0864, 26) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20150520
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20150513
+packetLen(0x0864, 8) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20150507
+packetLen(0x0864, 26) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20150204
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20150128
+packetLen(0x0864, 10) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20150107
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x0865
+#if PACKETVER >= 20151223
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20151216
+packetLen(0x0865, 10) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150902
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150826
+packetLen(0x0865, 5) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150819
+packetLen(0x0865, 26) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150527
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150520
+packetLen(0x0865, 19) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150415
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150408
+packetLen(0x0865, 7) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150107
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0866
+#if PACKETVER >= 20151230
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20151223
+packetLen(0x0866, 19) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20151216
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20151209
+packetLen(0x0866, 5) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20150107
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0867
+#if PACKETVER >= 20151021
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20151014
+packetLen(0x0867, -1) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150610
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150603
+packetLen(0x0867, 8) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150507
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150429
+packetLen(0x0867, 36) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150422
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150415
+packetLen(0x0867, 26) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150304
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150225
+packetLen(0x0867, 18) // ZC_REASSEMBLY_AUTH14
+// ignored packet from 2015-02-25eRagexe
+// ignored packet from 2015-02-25hRagexe
+#elif PACKETVER >= 20150107
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0868
+#if PACKETVER >= 20150527
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20150520
+packetLen(0x0868, -1) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20150422
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20150415
+packetLen(0x0868, 10) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20150408
+packetLen(0x0868, -1) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20150121
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20150114
+packetLen(0x0868, 26) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20150107
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0869
+#if PACKETVER >= 20151230
+packetLen(0x0869, 5) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20150923
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20150916
+packetLen(0x0869, 7) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20150729
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20150722
+packetLen(0x0869, 6) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20150624
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20150617
+packetLen(0x0869, 8) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20150422
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20150415
+packetLen(0x0869, 5) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20150107
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x086a
+#if PACKETVER >= 20151223
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20151216
+packetLen(0x086a, 8) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20151028
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20151021
+packetLen(0x086a, 26) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20150624
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20150617
+packetLen(0x086a, 18) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20150610
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20150603
+packetLen(0x086a, 8) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20150507
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20150429
+packetLen(0x086a, 19) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20150318
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20150311
+packetLen(0x086a, 6) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20150107
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x086b
+#if PACKETVER >= 20151125
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20151118
+packetLen(0x086b, 8) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20150902
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20150826
+packetLen(0x086b, 10) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20150624
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20150617
+packetLen(0x086b, 5) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20150415
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20150408
+packetLen(0x086b, -1) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20150107
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x086c
+#if PACKETVER >= 20150805
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20150729
+packetLen(0x086c, 8) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20150422
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20150415
+packetLen(0x086c, 7) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20150318
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20150311
+packetLen(0x086c, 36) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20150107
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x086d
+#if PACKETVER >= 20150805
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150729
+packetLen(0x086d, 18) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150708
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150701
+packetLen(0x086d, -1) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150311
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150304
+packetLen(0x086d, -1) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150204
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150128
+packetLen(0x086d, 8) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150107
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x086e
+#if PACKETVER >= 20151230
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20151223
+packetLen(0x086e, 10) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20151216
+packetLen(0x086e, 26) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20150805
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20150729
+packetLen(0x086e, 5) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20150415
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20150408
+packetLen(0x086e, 10) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20150107
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x086f
+#if PACKETVER >= 20151001
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150923
+packetLen(0x086f, 10) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150909
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150902
+packetLen(0x086f, 10) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150805
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150729
+packetLen(0x086f, 8) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150722
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150715
+packetLen(0x086f, 8) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150408
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150401
+packetLen(0x086f, 5) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150325
+packetLen(0x086f, -1) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150107
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x0870
+#if PACKETVER >= 20151223
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20151216
+packetLen(0x0870, -1) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20151209
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20151202
+packetLen(0x0870, 36) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20151001
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150923
+packetLen(0x0870, 5) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150902
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150826
+packetLen(0x0870, -1) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150805
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150729
+packetLen(0x0870, 6) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150701
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150624
+packetLen(0x0870, 36) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150610
+packetLen(0x0870, 26) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150217
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150211
+packetLen(0x0870, 6) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150204
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150128
+packetLen(0x0870, 5) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150107
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x0871
+#if PACKETVER >= 20151118
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20151111
+packetLen(0x0871, 26) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20150916
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20150909
+packetLen(0x0871, -1) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20150826
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20150819
+packetLen(0x0871, 18) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20150107
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x0872
+#if PACKETVER >= 20151230
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20151223
+packetLen(0x0872, 18)
+#elif PACKETVER >= 20151021
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20151014
+packetLen(0x0872, 5)
+#elif PACKETVER >= 20150715
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20150708
+packetLen(0x0872, 6)
+#elif PACKETVER >= 20150617
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20150610
+packetLen(0x0872, 6)
+#elif PACKETVER >= 20150107
+packetLen(0x0872, 2)
+#endif
+
+// Packet: 0x0873
+#if PACKETVER >= 20150923
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150916
+packetLen(0x0873, 90) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150722
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150715
+packetLen(0x0873, 6) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150610
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150603
+packetLen(0x0873, 7) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150325
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150318
+packetLen(0x0873, 36) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150217
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150211
+packetLen(0x0873, 5) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150107
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x0874
+#if PACKETVER >= 20151223
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20151216
+packetLen(0x0874, 90) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20151021
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20151014
+packetLen(0x0874, 10) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20150204
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20150128
+packetLen(0x0874, 6) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20150107
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x0875
+#if PACKETVER >= 20151230
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20151223
+packetLen(0x0875, 10) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20150408
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20150401
+packetLen(0x0875, -1) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20150204
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20150128
+packetLen(0x0875, -1) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20150107
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x0876
+#if PACKETVER >= 20151230
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20151223
+packetLen(0x0876, 6) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20150204
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20150128
+packetLen(0x0876, 5) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20150107
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x0877
+#if PACKETVER >= 20150923
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20150916
+packetLen(0x0877, 5) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20150617
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20150610
+packetLen(0x0877, 6) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20150603
+packetLen(0x0877, -1) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20150107
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x0878
+#if PACKETVER >= 20150729
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20150722
+packetLen(0x0878, 10) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20150415
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20150408
+packetLen(0x0878, 26) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20150107
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x0879
+#if PACKETVER >= 20151001
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20150923
+packetLen(0x0879, 8) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20150722
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20150715
+packetLen(0x0879, 19) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20150520
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20150513
+packetLen(0x0879, 8) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20150311
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20150304
+packetLen(0x0879, 5) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20150107
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x087a
+#if PACKETVER >= 20151216
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20151209
+packetLen(0x087a, 12) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150624
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150617
+packetLen(0x087a, 8) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150107
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x087b
+#if PACKETVER >= 20150916
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150909
+packetLen(0x087b, 18) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150902
+packetLen(0x087b, 5) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150826
+packetLen(0x087b, 6) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150729
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150722
+packetLen(0x087b, 18) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150318
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150311
+packetLen(0x087b, 18) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150217
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150211
+packetLen(0x087b, 6) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150107
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x087c
+#if PACKETVER >= 20150722
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20150715
+packetLen(0x087c, 6) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20150401
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20150325
+packetLen(0x087c, 8) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20150128
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20150121
+packetLen(0x087c, 4) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20150114
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20150107
+packetLen(0x087c, 26) // ZC_REASSEMBLY_AUTH35
+#endif
+
+// Packet: 0x087d
+#if PACKETVER >= 20150729
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20150722
+packetLen(0x087d, 5) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20150708
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20150701
+packetLen(0x087d, 6) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20150527
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20150520
+packetLen(0x087d, 12) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20150204
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20150128
+packetLen(0x087d, 6) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20150107
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x087e
+#if PACKETVER >= 20150729
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150722
+packetLen(0x087e, 6) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150708
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150701
+packetLen(0x087e, -1) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150617
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150610
+packetLen(0x087e, 6) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150415
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150408
+packetLen(0x087e, 6) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150401
+packetLen(0x087e, 8) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150325
+packetLen(0x087e, 5) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150311
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150304
+packetLen(0x087e, 19) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150107
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x087f
+#if PACKETVER >= 20151216
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20151209
+packetLen(0x087f, 6) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20150923
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20150916
+packetLen(0x087f, 12) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20150909
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20150902
+packetLen(0x087f, 4) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20150819
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20150812
+packetLen(0x087f, 36) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20150715
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20150708
+packetLen(0x087f, 4) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20150415
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20150408
+packetLen(0x087f, 90) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20150217
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20150211
+packetLen(0x087f, 36) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20150107
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#endif
+
+// Packet: 0x0880
+#if PACKETVER >= 20150805
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20150729
+packetLen(0x0880, 12) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20150722
+packetLen(0x0880, 6) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20150527
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20150520
+packetLen(0x0880, 26) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20150422
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20150415
+packetLen(0x0880, 8) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20150107
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x0881
+#if PACKETVER >= 20151230
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20151223
+packetLen(0x0881, 7) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20151021
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20151014
+packetLen(0x0881, 8) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20150923
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20150916
+packetLen(0x0881, -1) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20150805
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20150729
+packetLen(0x0881, 7) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20150610
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20150603
+packetLen(0x0881, 6) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20150107
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x0882
+#if PACKETVER >= 20150527
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20150520
+packetLen(0x0882, -1) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20150217
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20150211
+packetLen(0x0882, -1) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20150107
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x0883
+#if PACKETVER >= 20151202
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20151125
+packetLen(0x0883, 5) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20151021
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20151014
+packetLen(0x0883, 6) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150916
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150909
+packetLen(0x0883, 6) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150708
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150701
+packetLen(0x0883, -1) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150520
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150513
+packetLen(0x0883, 18) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150401
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150325
+packetLen(0x0883, 12) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150318
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150311
+packetLen(0x0883, -1) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150217
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150211
+packetLen(0x0883, 8) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150107
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x0884
+#if PACKETVER >= 20151230
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20151223
+packetLen(0x0884, 8) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20151202
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20151125
+packetLen(0x0884, 36) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20151021
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20151014
+packetLen(0x0884, -1) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20150729
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20150722
+packetLen(0x0884, 5) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20150715
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20150708
+packetLen(0x0884, 5) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20150617
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20150610
+packetLen(0x0884, 8) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20150603
+packetLen(0x0884, 4) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20150107
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x0885
+#if PACKETVER >= 20151223
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20151216
+packetLen(0x0885, 36) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20151202
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20151125
+packetLen(0x0885, 4) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20151118
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20151111
+packetLen(0x0885, 7) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150617
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150610
+packetLen(0x0885, 5) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150520
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150513
+packetLen(0x0885, 6) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150401
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150325
+packetLen(0x0885, 10) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150304
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150225
+packetLen(0x0885, 4) // CZ_REASSEMBLY_AUTH02
+// ignored packet from 2015-02-25eRagexe
+// ignored packet from 2015-02-25hRagexe
+#elif PACKETVER >= 20150217
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150211
+packetLen(0x0885, 6) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150107
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x0886
+#if PACKETVER >= 20151230
+packetLen(0x0886, 10) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20151223
+packetLen(0x0886, -1) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20151111
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20151104
+packetLen(0x0886, 6) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20151001
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150923
+packetLen(0x0886, 5) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150916
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150909
+packetLen(0x0886, 19) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150902
+packetLen(0x0886, 12) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150805
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150729
+packetLen(0x0886, 6) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150722
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150715
+packetLen(0x0886, 8) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150624
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150617
+packetLen(0x0886, 5) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150507
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150429
+packetLen(0x0886, 26) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150318
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150311
+packetLen(0x0886, 5) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150217
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150211
+packetLen(0x0886, 6) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150107
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#endif
+
+// Packet: 0x0887
+#if PACKETVER >= 20151111
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20151104
+packetLen(0x0887, 6) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20150909
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20150902
+packetLen(0x0887, 8) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20150513
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20150507
+packetLen(0x0887, 8) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20150107
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x0888
+#if PACKETVER >= 20150826
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150819
+packetLen(0x0888, 5) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150617
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150610
+packetLen(0x0888, 19) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150415
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150408
+packetLen(0x0888, 8) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150204
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150128
+packetLen(0x0888, -1) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150107
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x0889
+#if PACKETVER >= 20151021
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20151014
+packetLen(0x0889, 6) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20150513
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20150507
+packetLen(0x0889, 18) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20150415
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20150408
+packetLen(0x0889, 36) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20150325
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20150318
+packetLen(0x0889, 7) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20150107
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x088a
+#if PACKETVER >= 20150812
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20150805
+packetLen(0x088a, 36) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20150107
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x088b
+#if PACKETVER >= 20151223
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20151216
+packetLen(0x088b, 6) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20151125
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20151118
+packetLen(0x088b, 36) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20151111
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20151104
+packetLen(0x088b, 8) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20150902
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20150826
+packetLen(0x088b, 26) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20150610
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20150603
+packetLen(0x088b, 6) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20150128
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20150121
+packetLen(0x088b, 26) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20150107
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x088c
+#if PACKETVER >= 20151202
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20151125
+packetLen(0x088c, 6) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150617
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150610
+packetLen(0x088c, 8) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150527
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150520
+packetLen(0x088c, -1) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150408
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150401
+packetLen(0x088c, 6) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150325
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150318
+packetLen(0x088c, 12) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150107
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x088d
+#if PACKETVER >= 20151230
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20151223
+packetLen(0x088d, 5) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20151202
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20151125
+packetLen(0x088d, 19) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20151111
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20151104
+packetLen(0x088d, 5) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150909
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150902
+packetLen(0x088d, 8) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150826
+packetLen(0x088d, 26) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150729
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150722
+packetLen(0x088d, 6) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150617
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150610
+packetLen(0x088d, 18) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150107
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x088e
+#if PACKETVER >= 20151230
+packetLen(0x088e, 26) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20151216
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20151209
+packetLen(0x088e, 10) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20151021
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20151014
+packetLen(0x088e, 8) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20151001
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20150923
+packetLen(0x088e, 6) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20150422
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20150415
+packetLen(0x088e, 10) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20150107
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x088f
+#if PACKETVER >= 20151216
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20151209
+packetLen(0x088f, 8) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150916
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150909
+packetLen(0x088f, 26) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150617
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150610
+packetLen(0x088f, 5) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150507
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150429
+packetLen(0x088f, 5) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150408
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150401
+packetLen(0x088f, 6) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150107
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0890
+#if PACKETVER >= 20151230
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20151223
+packetLen(0x0890, -1) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20150107
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0891
+#if PACKETVER >= 20151230
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20151223
+packetLen(0x0891, -1) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150902
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150826
+packetLen(0x0891, 10) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150422
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150415
+packetLen(0x0891, 6) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150408
+packetLen(0x0891, -1) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150401
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150325
+packetLen(0x0891, 6) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150107
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0892
+#if PACKETVER >= 20151001
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20150923
+packetLen(0x0892, -1) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20150909
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20150902
+packetLen(0x0892, -1) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20150311
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20150304
+packetLen(0x0892, 36) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20150107
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0893
+#if PACKETVER >= 20150708
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20150701
+packetLen(0x0893, 4) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20150401
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20150325
+packetLen(0x0893, 8) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20150107
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x0894
+#if PACKETVER >= 20151216
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20151209
+packetLen(0x0894, 10) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20150624
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20150617
+packetLen(0x0894, 4) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20150507
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20150429
+packetLen(0x0894, 6) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20150107
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x0895
+#if PACKETVER >= 20151001
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20150923
+packetLen(0x0895, 4) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20150916
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20150909
+packetLen(0x0895, 26) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20150722
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20150715
+packetLen(0x0895, -1) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20150408
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20150401
+packetLen(0x0895, 8) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20150114
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20150107
+packetLen(0x0895, 36) // CZ_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x0896
+#if PACKETVER >= 20150722
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20150715
+packetLen(0x0896, 90) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20150318
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20150311
+packetLen(0x0896, 7) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20150304
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20150225
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+// ignored packet from 2015-02-25iRagexe
+// ignored packet from 2015-02-25eRagexe
+#elif PACKETVER >= 20150107
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x0897
+#if PACKETVER >= 20151230
+packetLen(0x0897, 6) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150909
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150902
+packetLen(0x0897, 8) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150722
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150715
+packetLen(0x0897, 26) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150617
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150610
+packetLen(0x0897, 26) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150603
+packetLen(0x0897, -1) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150401
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150325
+packetLen(0x0897, -1) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150107
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x0898
+#if PACKETVER >= 20151230
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20151223
+packetLen(0x0898, 90) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20150422
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20150415
+packetLen(0x0898, -1) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20150408
+packetLen(0x0898, 6) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20150401
+packetLen(0x0898, 5) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20150107
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x0899
+#if PACKETVER >= 20151202
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20151125
+packetLen(0x0899, 26) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150909
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150902
+packetLen(0x0899, 6) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150729
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150722
+packetLen(0x0899, 8) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150507
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150429
+packetLen(0x0899, 8) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150401
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150325
+packetLen(0x0899, 18) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150121
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150114
+packetLen(0x0899, 5) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150107
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x089a
+#if PACKETVER >= 20151021
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20151014
+packetLen(0x089a, 4) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150805
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150729
+packetLen(0x089a, 10) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150722
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150715
+packetLen(0x089a, 6) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150610
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150603
+packetLen(0x089a, 12) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150311
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150304
+packetLen(0x089a, 26) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150204
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150128
+packetLen(0x089a, 18) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150107
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x089b
+#if PACKETVER >= 20151001
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20150923
+packetLen(0x089b, 10) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20150916
+packetLen(0x089b, 18) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20150805
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20150729
+packetLen(0x089b, 26) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20150304
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20150225
+packetLen(0x089b, 8) // CZ_REASSEMBLY_AUTH24
+// ignored packet from 2015-02-25eRagexe
+// ignored packet from 2015-02-25hRagexe
+#elif PACKETVER >= 20150107
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x089c
+#if PACKETVER >= 20151202
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20151125
+packetLen(0x089c, 7) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20151118
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20151111
+packetLen(0x089c, 5) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20150923
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20150916
+packetLen(0x089c, 6) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20150527
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20150520
+packetLen(0x089c, 36) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20150415
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20150408
+packetLen(0x089c, 5) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20150401
+packetLen(0x089c, 36) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20150325
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20150318
+packetLen(0x089c, 8) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20150304
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20150225
+packetLen(0x089c, 8) // CZ_REASSEMBLY_AUTH25
+// ignored packet from 2015-02-25eRagexe
+// ignored packet from 2015-02-25hRagexe
+#elif PACKETVER >= 20150217
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20150211
+packetLen(0x089c, 18) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20150107
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#endif
+
+// Packet: 0x089d
+#if PACKETVER >= 20151223
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20151216
+packetLen(0x089d, 7) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150715
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150708
+packetLen(0x089d, 5) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150610
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150603
+packetLen(0x089d, -1) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150128
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150121
+packetLen(0x089d, 5) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150107
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x089e
+#if PACKETVER >= 20151223
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20151216
+packetLen(0x089e, 6) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20150923
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20150916
+packetLen(0x089e, 26) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20150610
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20150603
+packetLen(0x089e, 6) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20150527
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20150520
+packetLen(0x089e, 6) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20150128
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20150121
+packetLen(0x089e, 5) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20150107
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x089f
+#if PACKETVER >= 20151202
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20151125
+packetLen(0x089f, -1) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20151021
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20151014
+packetLen(0x089f, 5) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20151001
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20150923
+packetLen(0x089f, 8) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20150507
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20150429
+packetLen(0x089f, -1) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20150107
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x08a0
+#if PACKETVER >= 20151001
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20150923
+packetLen(0x08a0, 6) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20150902
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20150826
+packetLen(0x08a0, 12) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20150708
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20150701
+packetLen(0x08a0, 6) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20150617
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20150610
+packetLen(0x08a0, 36) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20150422
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20150415
+packetLen(0x08a0, -1) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20150217
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20150211
+packetLen(0x08a0, 26) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20150107
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x08a1
+#if PACKETVER >= 20151216
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20151209
+packetLen(0x08a1, 5) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20150902
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20150826
+packetLen(0x08a1, 8) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20150610
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20150603
+packetLen(0x08a1, 10) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20150401
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20150325
+packetLen(0x08a1, 7) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20150318
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20150311
+packetLen(0x08a1, 10) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20150107
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x08a2
+#if PACKETVER >= 20151223
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20151216
+packetLen(0x08a2, 5) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20151001
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20150923
+packetLen(0x08a2, 19) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20150527
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20150520
+packetLen(0x08a2, 6) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20150415
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20150408
+packetLen(0x08a2, 6) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20150107
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x08a3
+#if PACKETVER >= 20151111
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20151104
+packetLen(0x08a3, 4) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20150805
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20150729
+packetLen(0x08a3, 4) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20150318
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20150311
+packetLen(0x08a3, 6) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20150107
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x08a4
+#if PACKETVER >= 20150902
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150826
+packetLen(0x08a4, 6) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150805
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150729
+packetLen(0x08a4, 5) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150722
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150715
+packetLen(0x08a4, 4) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150708
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150701
+packetLen(0x08a4, 6) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150415
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150408
+packetLen(0x08a4, 26) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150325
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150318
+packetLen(0x08a4, -1) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150304
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150225
+packetLen(0x08a4, 36) // CZ_REASSEMBLY_AUTH33
+// ignored packet from 2015-02-25eRagexe
+// ignored packet from 2015-02-25hRagexe
+#elif PACKETVER >= 20150217
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150211
+packetLen(0x08a4, 19) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150107
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x08a5
+#if PACKETVER >= 20151111
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20151104
+packetLen(0x08a5, 26) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20151001
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150923
+packetLen(0x08a5, 6) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150715
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150708
+packetLen(0x08a5, -1) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150701
+packetLen(0x08a5, 26) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150408
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150401
+packetLen(0x08a5, 8) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150318
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150311
+packetLen(0x08a5, 12) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150107
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x08a6
+#if PACKETVER >= 20151001
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20150923
+packetLen(0x08a6, 12) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20150708
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20150701
+packetLen(0x08a6, 10) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20150507
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20150429
+packetLen(0x08a6, 8) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20150318
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20150311
+packetLen(0x08a6, 26) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20150107
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#endif
+
+// Packet: 0x08a7
+#if PACKETVER >= 20150401
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20150325
+packetLen(0x08a7, 90) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20150107
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x08a8
+#if PACKETVER >= 20150902
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150826
+packetLen(0x08a8, -1) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150729
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150722
+packetLen(0x08a8, 5) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150520
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150513
+packetLen(0x08a8, 26) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150507
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150429
+packetLen(0x08a8, 4) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150107
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x08a9
+#if PACKETVER >= 20151223
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20151216
+packetLen(0x08a9, 6) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20151202
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20151125
+packetLen(0x08a9, 6) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20150909
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20150902
+packetLen(0x08a9, 6) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20150107
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#endif
+
+// Packet: 0x08aa
+#if PACKETVER >= 20151230
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20151223
+packetLen(0x08aa, 26) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20151021
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20151014
+packetLen(0x08aa, 6) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20150217
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20150211
+packetLen(0x08aa, 7) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20150107
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x08ab
+#if PACKETVER >= 20151125
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20151118
+packetLen(0x08ab, 8) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20150204
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20150128
+packetLen(0x08ab, 6) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20150121
+packetLen(0x08ab, 36) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20150107
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x08ac
+#if PACKETVER >= 20151223
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20151216
+packetLen(0x08ac, 8) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20150923
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20150916
+packetLen(0x08ac, 6) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20150805
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20150729
+packetLen(0x08ac, 26) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20150722
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20150715
+packetLen(0x08ac, 5) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20150617
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20150610
+packetLen(0x08ac, 6) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20150107
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x08ad
+#if PACKETVER >= 20151202
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20151125
+packetLen(0x08ad, -1) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150805
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150729
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150715
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150708
+packetLen(0x08ad, 36) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150701
+packetLen(0x08ad, 10) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150610
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150603
+packetLen(0x08ad, 19) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150527
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150520
+packetLen(0x08ad, 5) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150507
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150429
+packetLen(0x08ad, 18) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150107
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x08af
+packetLen(0x08af, 10) // HC_WAITING_LOGIN
+
+// Packet: 0x08b0
+packetLen(0x08b0, 17) // CH_WAITING_LOGIN
+
+// Packet: 0x08b1
+packetLen(0x08b1, -1) // ZC_MCSTORE_NOTMOVEITEM_LIST
+
+// Packet: 0x08b2
+packetLen(0x08b2, -1) // AC_REALNAME_AUTH
+
+// Packet: 0x08b3
+packetLen(0x08b3, -1) // ZC_SHOWSCRIPT
+
+// Packet: 0x08b4
+packetLen(0x08b4, 2) // ZC_START_COLLECTION
+
+// Packet: 0x08b5
+packetLen(0x08b5, 6) // CZ_TRYCOLLECTION
+
+// Packet: 0x08b6
+packetLen(0x08b6, 3) // ZC_TRYCOLLECTION
+
+// Packet: 0x08b8
+packetLen(0x08b8, 10) // CH_SECOND_PASSWD_ACK
+
+// Packet: 0x08b9
+packetLen(0x08b9, 12) // HC_SECOND_PASSWD_LOGIN
+
+// Packet: 0x08ba
+packetLen(0x08ba, 10) // CH_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bb
+packetLen(0x08bb, 8) // HC_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bc
+packetLen(0x08bc, 10) // CH_DELETE_SECOND_PASSWD
+
+// Packet: 0x08bd
+packetLen(0x08bd, 8) // HC_DELETE_SECOND_PASSWD
+
+// Packet: 0x08be
+packetLen(0x08be, 14) // CH_EDIT_SECOND_PASSWD
+
+// Packet: 0x08bf
+packetLen(0x08bf, 8) // HC_EDIT_SECOND_PASSWD
+
+// Packet: 0x08c0
+packetLen(0x08c0, -1) // ZC_ACK_SE_CASH_ITEM_LIST2
+
+// Packet: 0x08c1
+packetLen(0x08c1, 2) // CZ_MACRO_START
+
+// Packet: 0x08c2
+packetLen(0x08c2, 2) // CZ_MACRO_STOP
+
+// Packet: 0x08c3
+packetLen(0x08c3, 10) // CH_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c4
+packetLen(0x08c4, 8) // HC_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c5
+packetLen(0x08c5, 6) // CH_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c6
+packetLen(0x08c6, 4) // HC_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c7
+packetLen(0x08c7, -1) // ZC_SKILL_ENTRY3
+
+// Packet: 0x08c8
+packetLen(0x08c8, 34) // ZC_NOTIFY_ACT3
+
+// Packet: 0x08c9
+packetLen(0x08c9, 2) // CZ_REQ_SCHEDULER_CASHITEM
+
+// Packet: 0x08ca
+packetLen(0x08ca, -1) // ZC_ACK_SCHEDULER_CASHITEM
+
+// Packet: 0x08cb
+packetLen(0x08cb, -1) // ZC_PERSONAL_INFOMATION
+
+// Packet: 0x08cc
+packetLen(0x08cc, 109) // CA_LOGIN5
+
+// Packet: 0x08cd
+packetLen(0x08cd, 10) // ZC_STOPMOVE_FORCE
+
+// Packet: 0x08ce
+packetLen(0x08ce, 2) // ZC_FAILED_GET_ITEM_FROM_ZONEDA
+
+// Packet: 0x08cf
+packetLen(0x08cf, 10) // ZC_SPIRITS_ATTRIBUTE
+
+// Packet: 0x08d0
+packetLen(0x08d0, 9) // ZC_REQ_WEAR_EQUIP_ACK2
+
+// Packet: 0x08d1
+packetLen(0x08d1, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK2
+
+// Packet: 0x08d2
+packetLen(0x08d2, 10) // ZC_FASTMOVE
+
+// Packet: 0x08d3
+packetLen(0x08d3, 10) // ZC_SE_CASHSHOP_UPDATE
+
+// Packet: 0x08d4
+packetLen(0x08d4, 8) // CH_REQ_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d5
+packetLen(0x08d5, -1) // HC_ACK_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d6
+packetLen(0x08d6, 6) // ZC_CLEAR_DIALOG
+
+// Packet: 0x08d7
+packetLen(0x08d7, 28) // CZ_REQ_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d8
+packetLen(0x08d8, 27) // ZC_ACK_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d9
+packetLen(0x08d9, 30) // ZC_NOTIFY_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08da
+packetLen(0x08da, 26) // CZ_REQ_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08db
+packetLen(0x08db, 27) // ZC_ACK_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08dc
+packetLen(0x08dc, 26) // ZC_NOTIFY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08dd
+packetLen(0x08dd, 27) // CZ_REPLY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08de
+packetLen(0x08de, 27) // ZC_REPLY_ACK_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08df
+packetLen(0x08df, 50) // ZC_NOTIFY_LOBBY_ADMISSION
+
+// Packet: 0x08e0
+packetLen(0x08e0, 51) // CZ_REPLY_LOBBY_ADMISSION
+
+// Packet: 0x08e1
+packetLen(0x08e1, 51) // ZC_REPLY_ACK_LOBBY_ADMISSION
+
+// Packet: 0x08e2
+packetLen(0x08e2, 27) // ZC_NAVIGATION_ACTIVE
+
+// Packet: 0x08e3
+packetLen(0x08e3, 149) // HC_UPDATE_CHARINFO
+
+// Packet: 0x08e4
+packetLen(0x08e4, 6) // AC_SHUTDOWN_INFO
+
+// Packet: 0x08fc
+packetLen(0x08fc, 30) // CH_REQ_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fd
+packetLen(0x08fd, 6) // CH_ACK_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fe
+packetLen(0x08fe, -1) // ZC_HUNTING_QUEST_INFO
+
+// Packet: 0x08ff
+packetLen(0x08ff, 24) // ZC_EFST_SET_ENTER
+
+// Packet: 0x0900
+packetLen(0x0900, -1) // ZC_INVENTORY_ITEMLIST_NORMAL
+
+// Packet: 0x0901
+packetLen(0x0901, -1) // ZC_INVENTORY_ITEMLIST_EQUIP
+
+// Packet: 0x0902
+packetLen(0x0902, -1) // ZC_CART_ITEMLIST_NORMAL
+
+// Packet: 0x0903
+packetLen(0x0903, -1) // ZC_CART_ITEMLIST_EQUIP
+
+// Packet: 0x0904
+packetLen(0x0904, -1) // ZC_STORE_ITEMLIST_NORMAL
+
+// Packet: 0x0905
+packetLen(0x0905, -1) // ZC_STORE_ITEMLIST_EQUIP
+
+// Packet: 0x0906
+packetLen(0x0906, -1) // ZC_MICROSCOPE
+
+// Packet: 0x0907
+packetLen(0x0907, 5) // CZ_INVENTORY_TAB
+
+// Packet: 0x0908
+packetLen(0x0908, 5) // ZC_INVENTORY_TAB
+
+// Packet: 0x090a
+packetLen(0x090a, 26) // CZ_REQ_ENTRY_QUEUE_RANKING
+
+// Packet: 0x090d
+packetLen(0x090d, -1) // ZC_PREMIUM_CAMPAIGN_INFO
+
+// Packet: 0x090e
+packetLen(0x090e, 2) // ZC_ENTRY_QUEUE_INIT
+
+// Packet: 0x090f
+packetLen(0x090f, -1) // ZC_NOTIFY_NEWENTRY7
+
+// Packet: 0x0910
+packetLen(0x0910, 10) // CZ_REQ_PARTY_NAME
+
+// Packet: 0x0911
+packetLen(0x0911, 30) // ZC_ACK_PARTY_NAME
+
+// Packet: 0x0912
+packetLen(0x0912, 10) // CZ_REQ_GUILD_NAME
+
+// Packet: 0x0913
+packetLen(0x0913, 30) // ZC_ACK_GUILD_NAME
+
+// Packet: 0x0914
+packetLen(0x0914, -1) // ZC_NOTIFY_MOVEENTRY9
+
+// Packet: 0x0915
+packetLen(0x0915, -1) // ZC_NOTIFY_STANDENTRY8
+
+// Packet: 0x0916
+packetLen(0x0916, 26) // CZ_REQ_JOIN_GUILD2
+
+// Packet: 0x0917
+#if PACKETVER >= 20150722
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20150715
+packetLen(0x0917, 12) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20150107
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#endif
+
+// Packet: 0x0918
+#if PACKETVER >= 20150128
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20150121
+packetLen(0x0918, 8) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20150107
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#endif
+
+// Packet: 0x0919
+#if PACKETVER >= 20150826
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150819
+packetLen(0x0919, 8) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150729
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150722
+packetLen(0x0919, 4) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150708
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150701
+packetLen(0x0919, 36) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150401
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150325
+packetLen(0x0919, 36) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150217
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150211
+packetLen(0x0919, 90) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150128
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150121
+packetLen(0x0919, 6) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150107
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#endif
+
+// Packet: 0x091a
+#if PACKETVER >= 20151230
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20151223
+packetLen(0x091a, 6) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20150107
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#endif
+
+// Packet: 0x091b
+#if PACKETVER >= 20151230
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20151223
+packetLen(0x091b, 26) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20150610
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20150603
+packetLen(0x091b, 6) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20150415
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20150408
+packetLen(0x091b, 4) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20150401
+packetLen(0x091b, 26) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20150107
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#endif
+
+// Packet: 0x091c
+#if PACKETVER >= 20151021
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20151014
+packetLen(0x091c, 26) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20150527
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20150520
+packetLen(0x091c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20150408
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20150401
+packetLen(0x091c, 90) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20150318
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20150311
+packetLen(0x091c, 90) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20150107
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#endif
+
+// Packet: 0x091d
+#if PACKETVER >= 20151230
+packetLen(0x091d, 8) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20151223
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20151216
+packetLen(0x091d, 26) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20151028
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20151021
+packetLen(0x091d, 5) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20151014
+packetLen(0x091d, 36) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20150527
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20150520
+packetLen(0x091d, 7) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20150325
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20150318
+packetLen(0x091d, 8) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20150128
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20150121
+packetLen(0x091d, 6) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20150107
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#endif
+
+// Packet: 0x091e
+#if PACKETVER >= 20151001
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20150923
+packetLen(0x091e, 8) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20150826
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20150819
+packetLen(0x091e, 36) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20150415
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20150408
+packetLen(0x091e, -1) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20150107
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#endif
+
+// Packet: 0x091f
+#if PACKETVER >= 20150715
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20150708
+packetLen(0x091f, 18) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20150204
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20150128
+packetLen(0x091f, 6) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20150107
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#endif
+
+// Packet: 0x0920
+#if PACKETVER >= 20151230
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20151223
+packetLen(0x0920, 5) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20151216
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20151209
+packetLen(0x0920, -1) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20151202
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20151125
+packetLen(0x0920, 6) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20150923
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20150916
+packetLen(0x0920, -1) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20150325
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20150318
+packetLen(0x0920, 6) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20150217
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20150211
+packetLen(0x0920, 6) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20150107
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#endif
+
+// Packet: 0x0921
+#if PACKETVER >= 20151125
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20151118
+packetLen(0x0921, 26) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20150729
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20150722
+packetLen(0x0921, 8) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20150107
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#endif
+
+// Packet: 0x0922
+#if PACKETVER >= 20150610
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20150603
+packetLen(0x0922, 36) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20150422
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20150415
+packetLen(0x0922, 8) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20150408
+packetLen(0x0922, 5) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20150401
+packetLen(0x0922, -1) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20150107
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#endif
+
+// Packet: 0x0923
+#if PACKETVER >= 20151230
+packetLen(0x0923, 36) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20151223
+packetLen(0x0923, 5) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20150909
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20150902
+packetLen(0x0923, 26) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20150708
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20150701
+packetLen(0x0923, 8) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20150520
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20150513
+packetLen(0x0923, 36) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20150107
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#endif
+
+// Packet: 0x0924
+#if PACKETVER >= 20151230
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20151223
+packetLen(0x0924, 6) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150923
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150916
+packetLen(0x0924, 26) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150902
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150826
+packetLen(0x0924, 6) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150527
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150520
+packetLen(0x0924, 8) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150513
+packetLen(0x0924, 5) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150507
+packetLen(0x0924, 19) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150408
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150401
+packetLen(0x0924, 18) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150107
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#endif
+
+// Packet: 0x0925
+#if PACKETVER >= 20151125
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20151118
+packetLen(0x0925, 19) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150729
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150722
+packetLen(0x0925, -1) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150617
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150610
+packetLen(0x0925, 6) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150107
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#endif
+
+// Packet: 0x0926
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+
+// Packet: 0x0927
+#if PACKETVER >= 20150826
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150819
+packetLen(0x0927, 19) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150520
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150513
+packetLen(0x0927, 4) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150325
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150318
+packetLen(0x0927, 5) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150204
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150128
+packetLen(0x0927, 26) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150107
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#endif
+
+// Packet: 0x0928
+#if PACKETVER >= 20151111
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20151104
+packetLen(0x0928, 5) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20150916
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20150909
+packetLen(0x0928, 8) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20150902
+packetLen(0x0928, 6) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20150708
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20150701
+packetLen(0x0928, 8) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20150325
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20150318
+packetLen(0x0928, 6) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20150311
+packetLen(0x0928, 5) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20150107
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#endif
+
+// Packet: 0x0929
+#if PACKETVER >= 20150507
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20150429
+packetLen(0x0929, 8) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20150204
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20150128
+packetLen(0x0929, 36) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20150107
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#endif
+
+// Packet: 0x092a
+#if PACKETVER >= 20151202
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20151125
+packetLen(0x092a, 10) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20150909
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20150902
+packetLen(0x092a, 5) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20150715
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20150708
+packetLen(0x092a, 8) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20150415
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20150408
+packetLen(0x092a, 8) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20150318
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20150311
+packetLen(0x092a, 8) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20150107
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#endif
+
+// Packet: 0x092b
+#if PACKETVER >= 20151001
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150923
+packetLen(0x092b, 6) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150805
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150729
+packetLen(0x092b, 90) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150617
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150610
+packetLen(0x092b, -1) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150527
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150520
+packetLen(0x092b, 5) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150107
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#endif
+
+// Packet: 0x092c
+#if PACKETVER >= 20150708
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20150701
+packetLen(0x092c, 5) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20150617
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20150610
+packetLen(0x092c, -1) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20150401
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20150325
+packetLen(0x092c, 6) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20150107
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#endif
+
+// Packet: 0x092d
+#if PACKETVER >= 20151216
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20151209
+packetLen(0x092d, 8) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150909
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150902
+packetLen(0x092d, 26) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150610
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150603
+packetLen(0x092d, 6) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150114
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150107
+packetLen(0x092d, 5) // ZC_REASSEMBLY_AUTH65
+#endif
+
+// Packet: 0x092e
+#if PACKETVER >= 20151202
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20151125
+packetLen(0x092e, 10) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20151118
+packetLen(0x092e, 5) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150902
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150826
+packetLen(0x092e, 90) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150729
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150722
+packetLen(0x092e, 26) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150617
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150610
+packetLen(0x092e, 4) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150513
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150507
+packetLen(0x092e, -1) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150422
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150415
+packetLen(0x092e, 6) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150318
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150311
+packetLen(0x092e, 8) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150107
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#endif
+
+// Packet: 0x092f
+#if PACKETVER >= 20151125
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20151118
+packetLen(0x092f, 8) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20150923
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20150916
+packetLen(0x092f, 6) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20150805
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20150729
+packetLen(0x092f, 10) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20150107
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#endif
+
+// Packet: 0x0930
+#if PACKETVER >= 20151216
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20151209
+packetLen(0x0930, 6) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20151021
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20151014
+packetLen(0x0930, 90) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20151001
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20150923
+packetLen(0x0930, 6) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20150107
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#endif
+
+// Packet: 0x0931
+#if PACKETVER >= 20150527
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20150520
+packetLen(0x0931, 90) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20150401
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20150325
+packetLen(0x0931, -1) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20150107
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#endif
+
+// Packet: 0x0932
+#if PACKETVER >= 20151216
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20151209
+packetLen(0x0932, -1) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20150401
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20150325
+packetLen(0x0932, 5) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20150107
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#endif
+
+// Packet: 0x0933
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+
+// Packet: 0x0934
+#if PACKETVER >= 20151021
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20151014
+packetLen(0x0934, -1) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20150923
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20150916
+packetLen(0x0934, 8) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20150107
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#endif
+
+// Packet: 0x0935
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+
+// Packet: 0x0936
+#if PACKETVER >= 20151001
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150923
+packetLen(0x0936, 90) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150916
+packetLen(0x0936, 5) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150527
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150520
+packetLen(0x0936, 10) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150325
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150318
+packetLen(0x0936, 10) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150107
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#endif
+
+// Packet: 0x0937
+#if PACKETVER >= 20150325
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20150318
+packetLen(0x0937, 10) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20150107
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#endif
+
+// Packet: 0x0938
+#if PACKETVER >= 20150923
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20150916
+packetLen(0x0938, 4) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20150401
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20150325
+packetLen(0x0938, 5) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20150318
+packetLen(0x0938, 26) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20150204
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20150128
+packetLen(0x0938, 4) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20150107
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#endif
+
+// Packet: 0x0939
+#if PACKETVER >= 20151202
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20151125
+packetLen(0x0939, 6) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20151111
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20151104
+packetLen(0x0939, 8) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20150408
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20150401
+packetLen(0x0939, 19) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20150107
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#endif
+
+// Packet: 0x093a
+#if PACKETVER >= 20151230
+packetLen(0x093a, 4) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20151111
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20151104
+packetLen(0x093a, -1) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150805
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150729
+packetLen(0x093a, 6) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150408
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150401
+packetLen(0x093a, 10) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150325
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150318
+packetLen(0x093a, 5) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150311
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150304
+packetLen(0x093a, 18) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150204
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150128
+packetLen(0x093a, 10) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150107
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#endif
+
+// Packet: 0x093b
+#if PACKETVER >= 20151216
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20151209
+packetLen(0x093b, 8) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20151001
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20150923
+packetLen(0x093b, 26) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20150902
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20150826
+packetLen(0x093b, 6) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20150513
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20150507
+packetLen(0x093b, 5) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20150408
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20150401
+packetLen(0x093b, -1) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20150318
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20150311
+packetLen(0x093b, 26) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20150107
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#endif
+
+// Packet: 0x093c
+#if PACKETVER >= 20151125
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20151118
+packetLen(0x093c, 6) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20150729
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20150722
+packetLen(0x093c, -1) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20150715
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20150708
+packetLen(0x093c, 26) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20150422
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20150415
+packetLen(0x093c, 6) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20150325
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20150318
+packetLen(0x093c, 6) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20150107
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#endif
+
+// Packet: 0x093d
+#if PACKETVER >= 20150729
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20150722
+packetLen(0x093d, 12) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20150527
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20150520
+packetLen(0x093d, 26) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20150507
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20150429
+packetLen(0x093d, 26) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20150107
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#endif
+
+// Packet: 0x093e
+#if PACKETVER >= 20151202
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20151125
+packetLen(0x093e, 12) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150923
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150916
+packetLen(0x093e, 10) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150722
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150715
+packetLen(0x093e, 5) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150708
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150701
+packetLen(0x093e, -1) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150617
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150610
+packetLen(0x093e, 7) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150422
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150415
+packetLen(0x093e, 12) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150107
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#endif
+
+// Packet: 0x093f
+#if PACKETVER >= 20151014
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20151007
+packetLen(0x093f, 5) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20150805
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20150729
+packetLen(0x093f, -1) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20150708
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20150701
+packetLen(0x093f, 12) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20150610
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20150603
+packetLen(0x093f, 18) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20150107
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#endif
+
+// Packet: 0x0940
+#if PACKETVER >= 20151111
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20151104
+packetLen(0x0940, 36) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20151028
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20151021
+packetLen(0x0940, 26) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150916
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150909
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150826
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150819
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150805
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150729
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150701
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150624
+packetLen(0x0940, 8) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150617
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150610
+packetLen(0x0940, 10) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150603
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150527
+packetLen(0x0940, 12) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150520
+packetLen(0x0940, 8) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150401
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150325
+packetLen(0x0940, 26) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150304
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150225
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+// ignored packet from 2015-02-25iRagexe
+// ignored packet from 2015-02-25eRagexe
+#elif PACKETVER >= 20150107
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#endif
+
+// Packet: 0x0941
+#if PACKETVER >= 20150923
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20150916
+packetLen(0x0941, 36) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20150902
+packetLen(0x0941, 5) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20150701
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20150624
+packetLen(0x0941, 26) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20150513
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20150507
+packetLen(0x0941, 8) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20150422
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20150415
+packetLen(0x0941, 19) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20150107
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#endif
+
+// Packet: 0x0942
+#if PACKETVER >= 20151118
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20151111
+packetLen(0x0942, 18) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20150923
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20150916
+packetLen(0x0942, 6) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20150513
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20150507
+packetLen(0x0942, 4) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20150107
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#endif
+
+// Packet: 0x0943
+#if PACKETVER >= 20151125
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20151118
+packetLen(0x0943, 6) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150507
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150429
+packetLen(0x0943, 6) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150318
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150311
+packetLen(0x0943, 6) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150114
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150107
+packetLen(0x0943, 5) // CZ_REASSEMBLY_AUTH45
+#endif
+
+// Packet: 0x0944
+#if PACKETVER >= 20151223
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20151216
+packetLen(0x0944, -1) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20151021
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20151014
+packetLen(0x0944, 12) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20150722
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20150715
+packetLen(0x0944, 26) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20150217
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20150211
+packetLen(0x0944, -1) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20150204
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20150128
+packetLen(0x0944, 19) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20150107
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#endif
+
+// Packet: 0x0945
+#if PACKETVER >= 20150902
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20150826
+packetLen(0x0945, 5) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20150527
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20150520
+packetLen(0x0945, 6) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20150107
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#endif
+
+// Packet: 0x0946
+#if PACKETVER >= 20151125
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20151118
+packetLen(0x0946, -1) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20150708
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20150701
+packetLen(0x0946, 6) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20150617
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20150610
+packetLen(0x0946, 90) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20150408
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20150401
+packetLen(0x0946, 4) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20150318
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20150311
+packetLen(0x0946, 4) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20150304
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20150225
+packetLen(0x0946, 26) // CZ_REASSEMBLY_AUTH48
+// ignored packet from 2015-02-25eRagexe
+// ignored packet from 2015-02-25hRagexe
+#elif PACKETVER >= 20150121
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20150114
+packetLen(0x0946, 36) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20150107
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#endif
+
+// Packet: 0x0947
+#if PACKETVER >= 20151223
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20151216
+packetLen(0x0947, 19) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20150909
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20150902
+packetLen(0x0947, 90) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20150311
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20150304
+packetLen(0x0947, 8) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20150114
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20150107
+packetLen(0x0947, 19) // CZ_REASSEMBLY_AUTH49
+#endif
+
+// Packet: 0x0948
+#if PACKETVER >= 20151216
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20151209
+packetLen(0x0948, 19) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20150923
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20150916
+packetLen(0x0948, -1) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20150304
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20150225
+packetLen(0x0948, 6) // CZ_REASSEMBLY_AUTH50
+// ignored packet from 2015-02-25eRagexe
+// ignored packet from 2015-02-25hRagexe
+#elif PACKETVER >= 20150107
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#endif
+
+// Packet: 0x0949
+#if PACKETVER >= 20151230
+packetLen(0x0949, 5) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20151223
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20151216
+packetLen(0x0949, -1) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20150617
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20150610
+packetLen(0x0949, 10) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20150408
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20150401
+packetLen(0x0949, 6) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20150107
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#endif
+
+// Packet: 0x094a
+#if PACKETVER >= 20151216
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20151209
+packetLen(0x094a, 18) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20151118
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20151111
+packetLen(0x094a, 6) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20150520
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20150513
+packetLen(0x094a, 26) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20150401
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20150325
+packetLen(0x094a, 19) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20150107
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#endif
+
+// Packet: 0x094b
+#if PACKETVER >= 20150408
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20150401
+packetLen(0x094b, 10) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20150107
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#endif
+
+// Packet: 0x094c
+#if PACKETVER >= 20150729
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20150722
+packetLen(0x094c, 10) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20150325
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20150318
+packetLen(0x094c, 5) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20150107
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#endif
+
+// Packet: 0x094d
+#if PACKETVER >= 20150422
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20150415
+packetLen(0x094d, 5) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20150107
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#endif
+
+// Packet: 0x094e
+#if PACKETVER >= 20151230
+packetLen(0x094e, 6) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150708
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150701
+packetLen(0x094e, 6) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150624
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150617
+packetLen(0x094e, 26) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150527
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150520
+packetLen(0x094e, 10) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150204
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150128
+packetLen(0x094e, 8) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150107
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#endif
+
+// Packet: 0x094f
+#if PACKETVER >= 20150923
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150916
+packetLen(0x094f, 8) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150909
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150902
+packetLen(0x094f, 6) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150826
+packetLen(0x094f, 5) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150805
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150729
+packetLen(0x094f, 19) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150722
+packetLen(0x094f, 8) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150415
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150408
+packetLen(0x094f, 18) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150304
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150225
+packetLen(0x094f, 5) // CZ_REASSEMBLY_AUTH57
+// ignored packet from 2015-02-25eRagexe
+// ignored packet from 2015-02-25hRagexe
+#elif PACKETVER >= 20150107
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#endif
+
+// Packet: 0x0950
+#if PACKETVER >= 20150722
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20150715
+packetLen(0x0950, 6) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20150401
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20150325
+packetLen(0x0950, -1) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20150107
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#endif
+
+// Packet: 0x0951
+#if PACKETVER >= 20151202
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20151125
+packetLen(0x0951, 5) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20151001
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150923
+packetLen(0x0951, 7) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150902
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150826
+packetLen(0x0951, 6) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150729
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150722
+packetLen(0x0951, -1) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150325
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150318
+packetLen(0x0951, 6) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150217
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150211
+packetLen(0x0951, -1) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150107
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#endif
+
+// Packet: 0x0952
+#if PACKETVER >= 20150304
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20150225
+packetLen(0x0952, 8) // CZ_REASSEMBLY_AUTH60
+// ignored packet from 2015-02-25eRagexe
+// ignored packet from 2015-02-25hRagexe
+#elif PACKETVER >= 20150204
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20150128
+packetLen(0x0952, 90) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20150107
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#endif
+
+// Packet: 0x0953
+#if PACKETVER >= 20150909
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20150902
+packetLen(0x0953, -1) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20150513
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20150507
+packetLen(0x0953, 36) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20150422
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20150415
+packetLen(0x0953, -1) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20150408
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20150401
+packetLen(0x0953, 26) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20150107
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#endif
+
+// Packet: 0x0954
+#if PACKETVER >= 20151223
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20151216
+packetLen(0x0954, -1) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20150708
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20150701
+packetLen(0x0954, 5) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20150401
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20150325
+packetLen(0x0954, 6) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20150107
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#endif
+
+// Packet: 0x0955
+#if PACKETVER >= 20150805
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150729
+packetLen(0x0955, -1) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150610
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150603
+packetLen(0x0955, 5) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150513
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150507
+packetLen(0x0955, 6) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150429
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150422
+packetLen(0x0955, 36) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150415
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150408
+packetLen(0x0955, 6) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150304
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150225
+packetLen(0x0955, 5) // CZ_REASSEMBLY_AUTH63
+// ignored packet from 2015-02-25eRagexe
+// ignored packet from 2015-02-25hRagexe
+#elif PACKETVER >= 20150128
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150121
+packetLen(0x0955, 8) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150114
+packetLen(0x0955, 4) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150107
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#endif
+
+// Packet: 0x0956
+#if PACKETVER >= 20151216
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20151209
+packetLen(0x0956, 90) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20151202
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20151125
+packetLen(0x0956, 26) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20151021
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20151014
+packetLen(0x0956, 6) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20150722
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20150715
+packetLen(0x0956, 36) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20150708
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20150701
+packetLen(0x0956, 90) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20150107
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#endif
+
+// Packet: 0x0957
+#if PACKETVER >= 20151202
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20151125
+packetLen(0x0957, 8) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20151118
+packetLen(0x0957, 4) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150617
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150610
+packetLen(0x0957, 6) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150415
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150408
+packetLen(0x0957, 19) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150318
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150311
+packetLen(0x0957, 6) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150217
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150211
+packetLen(0x0957, 26) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150121
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150114
+packetLen(0x0957, 5) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150107
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#endif
+
+// Packet: 0x0958
+#if PACKETVER >= 20151118
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20151111
+packetLen(0x0958, 8) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150729
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150722
+packetLen(0x0958, 36) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150708
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150701
+packetLen(0x0958, 7) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150520
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150513
+packetLen(0x0958, 6) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150507
+packetLen(0x0958, 26) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150318
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150311
+packetLen(0x0958, 6) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150217
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150211
+packetLen(0x0958, 8) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150107
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#endif
+
+// Packet: 0x0959
+#if PACKETVER >= 20151202
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20151125
+packetLen(0x0959, 90) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20150902
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20150826
+packetLen(0x0959, -1) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20150415
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20150408
+packetLen(0x0959, 6) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20150325
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20150318
+packetLen(0x0959, -1) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20150128
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20150121
+packetLen(0x0959, 19) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20150107
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#endif
+
+// Packet: 0x095a
+#if PACKETVER >= 20150923
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20150916
+packetLen(0x095a, 6) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20150107
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#endif
+
+// Packet: 0x095b
+#if PACKETVER >= 20150909
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20150902
+packetLen(0x095b, 19) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20150715
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20150708
+packetLen(0x095b, 6) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20150527
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20150520
+packetLen(0x095b, 5) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20150318
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20150311
+packetLen(0x095b, -1) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20150107
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#endif
+
+// Packet: 0x095c
+#if PACKETVER >= 20151216
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20151209
+packetLen(0x095c, 4) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20151125
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20151118
+packetLen(0x095c, 18) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20150422
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20150415
+packetLen(0x095c, 26) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20150107
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#endif
+
+// Packet: 0x095d
+#if PACKETVER >= 20150617
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20150610
+packetLen(0x095d, 12) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20150311
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20150304
+packetLen(0x095d, 8) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20150107
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#endif
+
+// Packet: 0x095e
+#if PACKETVER >= 20151230
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20151223
+packetLen(0x095e, 6) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20151021
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20151014
+packetLen(0x095e, 8) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20150916
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20150909
+packetLen(0x095e, 6) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20150805
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20150729
+packetLen(0x095e, -1) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20150415
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20150408
+packetLen(0x095e, 12) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20150107
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#endif
+
+// Packet: 0x095f
+#if PACKETVER >= 20151014
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20151007
+packetLen(0x095f, 5) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20150708
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20150701
+packetLen(0x095f, 26) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20150408
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20150401
+packetLen(0x095f, 6) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20150107
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#endif
+
+// Packet: 0x0960
+#if PACKETVER >= 20151007
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20151001
+packetLen(0x0960, 36) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150923
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150916
+packetLen(0x0960, 5) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150708
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150701
+packetLen(0x0960, 18) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150610
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150603
+packetLen(0x0960, 10) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150527
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150520
+packetLen(0x0960, 4) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150513
+packetLen(0x0960, -1) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150422
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150415
+packetLen(0x0960, 36) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150325
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150318
+packetLen(0x0960, 18) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150311
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150304
+packetLen(0x0960, 26) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150107
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#endif
+
+// Packet: 0x0961
+#if PACKETVER >= 20151216
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20151209
+packetLen(0x0961, 7) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20151021
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20151014
+packetLen(0x0961, 6) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20151007
+packetLen(0x0961, 19) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20151001
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20150916
+packetLen(0x0961, -1) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20150826
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20150819
+packetLen(0x0961, 26) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20150805
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20150729
+packetLen(0x0961, 36) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20150722
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20150715
+packetLen(0x0961, 8) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20150527
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20150520
+packetLen(0x0961, 8) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20150422
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20150415
+packetLen(0x0961, 18) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20150311
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20150304
+packetLen(0x0961, 5) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20150107
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#endif
+
+// Packet: 0x0962
+#if PACKETVER >= 20150916
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20150909
+packetLen(0x0962, 8) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20150715
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20150708
+packetLen(0x0962, 8) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20150107
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#endif
+
+// Packet: 0x0963
+#if PACKETVER >= 20150318
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20150311
+packetLen(0x0963, 6) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20150204
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20150128
+packetLen(0x0963, 26) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20150121
+packetLen(0x0963, 8) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20150107
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#endif
+
+// Packet: 0x0964
+#if PACKETVER >= 20151216
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20151209
+packetLen(0x0964, 26) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20151111
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20151104
+packetLen(0x0964, 6) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20151021
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20151014
+packetLen(0x0964, 19) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150902
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150826
+packetLen(0x0964, 19) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150617
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150610
+packetLen(0x0964, 5) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150408
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150401
+packetLen(0x0964, 5) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150318
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150311
+packetLen(0x0964, 8) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150107
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#endif
+
+// Packet: 0x0965
+#if PACKETVER >= 20151230
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20151223
+packetLen(0x0965, 36) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20150722
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20150715
+packetLen(0x0965, 18) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20150107
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#endif
+
+// Packet: 0x0966
+#if PACKETVER >= 20151223
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20151216
+packetLen(0x0966, 6) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20151118
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20151111
+packetLen(0x0966, 8) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20150701
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20150624
+packetLen(0x0966, 5) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20150211
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20150204
+packetLen(0x0966, 36) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20150107
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#endif
+
+// Packet: 0x0967
+#if PACKETVER >= 20151230
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20151223
+packetLen(0x0967, 12) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20151118
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20151111
+packetLen(0x0967, 19) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20151014
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20151007
+packetLen(0x0967, 36) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20150826
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20150819
+packetLen(0x0967, 5) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20150128
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20150121
+packetLen(0x0967, 26) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20150107
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#endif
+
+// Packet: 0x0968
+#if PACKETVER >= 20151223
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20151216
+packetLen(0x0968, 10) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150902
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150826
+packetLen(0x0968, 4) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150708
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150701
+packetLen(0x0968, 5) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150204
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150128
+packetLen(0x0968, 6) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150107
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#endif
+
+// Packet: 0x0969
+#if PACKETVER >= 20151118
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20151111
+packetLen(0x0969, 36) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20150923
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20150916
+packetLen(0x0969, 19) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20150902
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20150826
+packetLen(0x0969, -1) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20150610
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20150603
+packetLen(0x0969, -1) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20150401
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20150325
+packetLen(0x0969, 8) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20150107
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#endif
+
+// Packet: 0x096a
+#if PACKETVER >= 20151230
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20151209
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20151202
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20151125
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20151111
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20151104
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20151021
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20151014
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20151001
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150916
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150909
+packetLen(0x096a, 5) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150826
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150805
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150715
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150708
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150701
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150617
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150610
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150603
+packetLen(0x096a, 5) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150527
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150520
+packetLen(0x096a, 18) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150422
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150311
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150304
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150225
+packetLen(0x096a, 19) // CZ_REASSEMBLY_AUTH84
+// ignored packet from 2015-02-25eRagexe
+// ignored packet from 2015-02-25hRagexe
+#elif PACKETVER >= 20150217
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150211
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150204
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150128
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150107
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#endif
+
+// Packet: 0x096b
+packetLen(0x096b, 4) // ZC_PRNPC_STATE
+
+// Packet: 0x096c
+packetLen(0x096c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+
+// Packet: 0x096d
+packetLen(0x096d, -1) // ZC_MERGE_ITEM_OPEN
+
+// Packet: 0x096e
+packetLen(0x096e, -1) // CZ_REQ_MERGE_ITEM
+
+// Packet: 0x096f
+packetLen(0x096f, 7) // ZC_ACK_MERGE_ITEM
+
+// Packet: 0x0970
+packetLen(0x0970, 31) // CH_MAKE_CHAR_NOT_STATS
+
+// Packet: 0x0971
+packetLen(0x0971, 6) // ZC_PARTY_RECRUIT_REFUSE_VOLUNTEER_TO_PM
+
+// Packet: 0x0972
+packetLen(0x0972, -1) // ZC_SAY_DIALOG2
+
+// Packet: 0x0973
+packetLen(0x0973, 7) // ZC_WAIT_DIALOG2
+
+// Packet: 0x0974
+packetLen(0x0974, 2) // CZ_CANCEL_MERGE_ITEM
+
+// Packet: 0x0975
+packetLen(0x0975, -1) // ZC_STORE_ITEMLIST_NORMAL_V2
+
+// Packet: 0x0976
+packetLen(0x0976, -1) // ZC_STORE_ITEMLIST_EQUIP_V2
+
+// Packet: 0x0977
+packetLen(0x0977, 14) // ZC_HP_INFO
+
+// Packet: 0x0978
+packetLen(0x0978, 6) // CZ_REQ_BEFORE_WORLD_INFO
+
+// Packet: 0x0979
+packetLen(0x0979, 50) // ZC_ACK_BEFORE_WORLD_INFO
+
+// Packet: 0x097a
+packetLen(0x097a, -1) // ZC_ALL_QUEST_LIST2
+
+// Packet: 0x097b
+packetLen(0x097b, -1) // ZC_PERSONAL_INFOMATION2
+
+// Packet: 0x097c
+packetLen(0x097c, 4) // CZ_REQ_RANKING
+
+// Packet: 0x097d
+packetLen(0x097d, 288) // ZC_ACK_RANKING
+
+// Packet: 0x097e
+packetLen(0x097e, 12) // ZC_UPDATE_RANKING_POINT
+
+// Packet: 0x097f
+packetLen(0x097f, -1) // ZC_SELECTCART
+
+// Packet: 0x0980
+packetLen(0x0980, 7) // CZ_SELECTCART
+
+// Packet: 0x0981
+packetLen(0x0981, -1) // ZC_PERSONAL_INFOMATION_CHN
+
+// Packet: 0x0982
+packetLen(0x0982, 7) // ZC_FATIGUE_CHN
+
+// Packet: 0x0983
+packetLen(0x0983, 29) // ZC_MSG_STATE_CHANGE3
+
+// Packet: 0x0984
+packetLen(0x0984, 28) // ZC_EFST_SET_ENTER2
+
+// Packet: 0x0985
+packetLen(0x0985, -1) // ZC_SKILL_POSTDELAY_LIST2
+
+// Packet: 0x0986
+packetLen(0x0986, 10) // AC_SHUTDOWN_NOTIFY
+
+// Packet: 0x0987
+packetLen(0x0987, -1) // CA_LOGIN6
+
+// Packet: 0x0988
+packetLen(0x0988, 6) // ZC_NOTIFY_CLAN_CONNECTINFO
+
+// Packet: 0x0989
+packetLen(0x0989, 2) // ZC_ACK_CLAN_LEAVE
+
+// Packet: 0x098a
+packetLen(0x098a, -1) // ZC_CLANINFO
+
+// Packet: 0x098b
+packetLen(0x098b, 2) // AC_REQ_NEW_USER
+
+// Packet: 0x098c
+packetLen(0x098c, 4) // CA_ACK_NEW_USER
+
+// Packet: 0x098d
+packetLen(0x098d, -1) // CZ_CLAN_CHAT
+
+// Packet: 0x098e
+packetLen(0x098e, -1) // ZC_NOTIFY_CLAN_CHAT
+
+// Packet: 0x098f
+packetLen(0x098f, -1) // CH_DELETE_CHAR3_EXT
+
+// Packet: 0x0990
+packetLen(0x0990, 31) // ZC_ITEM_PICKUP_ACK_V5
+
+// Packet: 0x0991
+packetLen(0x0991, -1) // ZC_INVENTORY_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0992
+packetLen(0x0992, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0993
+packetLen(0x0993, -1) // ZC_CART_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0994
+packetLen(0x0994, -1) // ZC_CART_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0995
+packetLen(0x0995, -1) // ZC_STORE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0996
+packetLen(0x0996, -1) // ZC_STORE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0997
+packetLen(0x0997, -1) // ZC_EQUIPWIN_MICROSCOPE_V5
+
+// Packet: 0x0998
+packetLen(0x0998, 8) // CZ_REQ_WEAR_EQUIP_V5
+
+// Packet: 0x0999
+packetLen(0x0999, 11) // ZC_ACK_WEAR_EQUIP_V5
+
+// Packet: 0x099a
+packetLen(0x099a, 9) // ZC_ACK_TAKEOFF_EQUIP_V5
+
+// Packet: 0x099b
+packetLen(0x099b, 8) // ZC_MAPPROPERTY_R2
+
+// Packet: 0x099c
+packetLen(0x099c, 6) // CH_REQ_CHARINFO_PER_PAGE
+
+// Packet: 0x099d
+packetLen(0x099d, -1) // HC_ACK_CHARINFO_PER_PAGE
+
+// Packet: 0x099e
+packetLen(0x099e, 12) // HC_QUEUE_ORDER
+
+// Packet: 0x099f
+packetLen(0x099f, -1) // ZC_SKILL_ENTRY4
+
+// Packet: 0x09a0
+packetLen(0x09a0, 6) // HC_CHARLIST_NOTIFY
+
+// Packet: 0x09a1
+packetLen(0x09a1, 2) // CH_CHARLIST_REQ
+
+// Packet: 0x09a2
+packetLen(0x09a2, 6) // AC_REQ_MOBILE_OTP
+
+// Packet: 0x09a3
+packetLen(0x09a3, -1) // CA_ACK_MOBILE_OTP
+
+// Packet: 0x09a4
+packetLen(0x09a4, 18) // ZC_DISPATCH_TIMING_INFO_CHN
+
+// Packet: 0x09a5
+packetLen(0x09a5, 7) // AC_REFUSE_LOGIN3
+
+// Packet: 0x09a6
+packetLen(0x09a6, 12) // ZC_BANKING_CHECK
+
+// Packet: 0x09a7
+packetLen(0x09a7, 10) // CZ_REQ_BANKING_DEPOSIT
+
+// Packet: 0x09a8
+packetLen(0x09a8, 16) // ZC_ACK_BANKING_DEPOSIT
+
+// Packet: 0x09a9
+packetLen(0x09a9, 10) // CZ_REQ_BANKING_WITHDRAW
+
+// Packet: 0x09aa
+packetLen(0x09aa, 16) // ZC_ACK_BANKING_WITHDRAW
+
+// Packet: 0x09ab
+packetLen(0x09ab, 6) // CZ_REQ_BANKING_CHECK
+
+// Packet: 0x09ac
+packetLen(0x09ac, -1) // CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO
+
+// Packet: 0x09ad
+packetLen(0x09ad, 10) // ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO
+
+// Packet: 0x09ae
+packetLen(0x09ae, 17) // CZ_REQ_APPLY_BARGAIN_SALE_ITEM
+
+// Packet: 0x09af
+packetLen(0x09af, 4) // ZC_ACK_APPLY_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b0
+packetLen(0x09b0, 8) // CZ_REQ_REMOVE_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b1
+packetLen(0x09b1, 4) // ZC_ACK_REMOVE_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b2
+packetLen(0x09b2, 8) // ZC_NOTIFY_BARGAIN_SALE_SELLING
+
+// Packet: 0x09b3
+packetLen(0x09b3, 4) // ZC_NOTIFY_BARGAIN_SALE_CLOSE
+
+// Packet: 0x09b4
+packetLen(0x09b4, 6) // CZ_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b5
+packetLen(0x09b5, 2) // ZC_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b6
+packetLen(0x09b6, 6) // CZ_REQ_OPEN_BANKING
+
+// Packet: 0x09b7
+packetLen(0x09b7, 4) // ZC_ACK_OPEN_BANKING
+
+// Packet: 0x09b8
+packetLen(0x09b8, 6) // CZ_REQ_CLOSE_BANKING
+
+// Packet: 0x09b9
+packetLen(0x09b9, 4) // ZC_ACK_CLOSE_BANKING
+
+// Packet: 0x09ba
+packetLen(0x09ba, 2) // CZ_REQ_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bb
+packetLen(0x09bb, 6) // ZC_ACK_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bc
+packetLen(0x09bc, 6) // CZ_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09bd
+packetLen(0x09bd, 2) // ZC_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09be
+packetLen(0x09be, 2) // CZ_REQ_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09bf
+packetLen(0x09bf, 4) // ZC_ACK_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09c1
+packetLen(0x09c1, 10) // ZC_C_MARKERINFO
+
+// Packet: 0x09c2
+packetLen(0x09c2, -1) // HC_SECRETSCAN_DATA
+
+// Packet: 0x09c3
+packetLen(0x09c3, 8) // CZ_REQ_COUNT_BARGAIN_SALE_ITEM
+
+// Packet: 0x09c4
+packetLen(0x09c4, 8) // ZC_ACK_COUNT_BARGAIN_SALE_ITEM
+
+// Packet: 0x09c5
+packetLen(0x09c5, 1042) // CS_LOGIN_QUERY
+
+// Packet: 0x09c6
+packetLen(0x09c6, -1) // SC_LOGIN_ANSWER
+
+// Packet: 0x09c7
+packetLen(0x09c7, 18) // SC_LOGIN_ERROR
+
+// Packet: 0x09c8
+packetLen(0x09c8, -1) // CA_LOGIN_OTP
+
+// Packet: 0x09c9
+packetLen(0x09c9, -1) // SC_SOCT
+
+// Packet: 0x09ca
+packetLen(0x09ca, -1) // ZC_SKILL_ENTRY5
+
+// Packet: 0x09cb
+packetLen(0x09cb, 17) // ZC_USE_SKILL2
+
+// Packet: 0x09cc
+packetLen(0x09cc, -1) // ZC_SECRETSCAN_DATA
+
+// Packet: 0x09cd
+packetLen(0x09cd, 8) // ZC_MSG_COLOR
+
+// Packet: 0x09ce
+packetLen(0x09ce, 102) // CZ_ITEM_CREATE_EX
+
+// Packet: 0x09cf
+packetLen(0x09cf, -1) // ZC_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d0
+packetLen(0x09d0, -1) // CZ_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d1
+packetLen(0x09d1, 14) // ZC_PROGRESS_ACTOR
+
+// Packet: 0x09d2
+packetLen(0x09d2, -1) // ZC_GUILDSTORAGE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x09d3
+packetLen(0x09d3, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x09d4
+packetLen(0x09d4, 2) // CZ_NPC_TRADE_QUIT
+
+// Packet: 0x09d5
+packetLen(0x09d5, -1) // ZC_NPC_MARKET_OPEN
+
+// Packet: 0x09d6
+packetLen(0x09d6, -1) // CZ_NPC_MARKET_PURCHASE
+
+// Packet: 0x09d7
+packetLen(0x09d7, -1) // ZC_NPC_MARKET_PURCHASE_RESULT
+
+// Packet: 0x09d8
+packetLen(0x09d8, 2) // CZ_NPC_MARKET_CLOSE
+
+// Packet: 0x09d9
+packetLen(0x09d9, 4) // CZ_REQ_GUILDSTORAGE_LOG
+
+// Packet: 0x09da
+packetLen(0x09da, -1) // ZC_ACK_GUILDSTORAGE_LOG
+
+// Packet: 0x09db
+packetLen(0x09db, -1) // ZC_NOTIFY_MOVEENTRY10
+
+// Packet: 0x09dc
+packetLen(0x09dc, -1) // ZC_NOTIFY_NEWENTRY10
+
+// Packet: 0x09dd
+packetLen(0x09dd, -1) // ZC_NOTIFY_STANDENTRY10
+
+// Packet: 0x09de
+packetLen(0x09de, -1) // ZC_WHISPER02
+
+// Packet: 0x09df
+packetLen(0x09df, 7) // ZC_ACK_WHISPER02
+
+// Packet: 0x09e0
+packetLen(0x09e0, -1) // SC_LOGIN_ANSWER_WITH_ID
+
+// Packet: 0x09e1
+packetLen(0x09e1, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_GUILDSTORAGE
+
+// Packet: 0x09e2
+packetLen(0x09e2, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_BODY
+
+// Packet: 0x09e3
+packetLen(0x09e3, 8) // CZ_MOVE_ITEM_FROM_CART_TO_GUILDSTORAGE
+
+// Packet: 0x09e4
+packetLen(0x09e4, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_CART
+
+// Packet: 0x09e5
+packetLen(0x09e5, 18) // ZC_DELETEITEM_FROM_MCSTORE2
+
+// Packet: 0x09e6
+packetLen(0x09e6, 22) // ZC_UPDATE_ITEM_FROM_BUYING_STORE2
+
+// Packet: 0x09e7
+packetLen(0x09e7, 3) // ZC_NOTIFY_UNREAD_RODEX
+
+// Packet: 0x09e8
+packetLen(0x09e8, 11) // CZ_OPEN_RODEXBOX
+
+// Packet: 0x09e9
+packetLen(0x09e9, 2) // CZ_CLOSE_RODEXBOX
+
+// Packet: 0x09ea
+packetLen(0x09ea, 11) // CZ_REQ_READ_RODEX
+
+// Packet: 0x09eb
+packetLen(0x09eb, -1) // ZC_ACK_READ_RODEX
+
+// Packet: 0x09ec
+packetLen(0x09ec, -1) // CZ_REQ_SEND_RODEX
+
+// Packet: 0x09ed
+packetLen(0x09ed, 3) // ZC_ACK_SEND_RODEX
+
+// Packet: 0x09ee
+packetLen(0x09ee, 11) // CZ_REQ_NEXT_RODEX
+
+// Packet: 0x09ef
+packetLen(0x09ef, 11) // CZ_REQ_REFRESH_RODEX
+
+// Packet: 0x09f0
+packetLen(0x09f0, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x09f1
+packetLen(0x09f1, 11) // CZ_REQ_ZENY_FROM_RODEX
+
+// Packet: 0x09f2
+packetLen(0x09f2, 12) // ZC_ACK_ZENY_FROM_RODEX
+
+// Packet: 0x09f3
+packetLen(0x09f3, 11) // CZ_REQ_ITEM_FROM_RODEX
+
+// Packet: 0x09f4
+packetLen(0x09f4, 12) // ZC_ACK_ITEM_FROM_RODEX
+
+// Packet: 0x09f5
+packetLen(0x09f5, 11) // CZ_REQ_DELETE_RODEX
+
+// Packet: 0x09f6
+packetLen(0x09f6, 11) // ZC_ACK_DELETE_RODEX
+
+// Packet: 0x09f7
+packetLen(0x09f7, 75) // ZC_PROPERTY_HOMUN_2
+
+// Packet: 0x09f8
+packetLen(0x09f8, -1) // ZC_ALL_QUEST_LIST3
+
+// Packet: 0x09f9
+packetLen(0x09f9, 143) // ZC_ADD_QUEST_EX
+
+// Packet: 0x09fa
+packetLen(0x09fa, -1) // ZC_UPDATE_MISSION_HUNT_EX
+
+// Packet: 0x09fb
+packetLen(0x09fb, -1) // CZ_PET_EVOLUTION
+
+// Packet: 0x09fc
+packetLen(0x09fc, 6) // ZC_PET_EVOLUTION_RESULT
+
+// Packet: 0x09fd
+packetLen(0x09fd, -1) // ZC_NOTIFY_MOVEENTRY11
+
+// Packet: 0x09fe
+packetLen(0x09fe, -1) // ZC_NOTIFY_NEWENTRY11
+
+// Packet: 0x09ff
+packetLen(0x09ff, -1) // ZC_NOTIFY_STANDENTRY11
+
+// Packet: 0x0a00
+packetLen(0x0a00, 269) // ZC_SHORTCUT_KEY_LIST_V3
+
+// Packet: 0x0a01
+packetLen(0x0a01, 3) // CZ_SHORTCUTKEYBAR_ROTATE
+
+// Packet: 0x0a02
+packetLen(0x0a02, 4) // ZC_DRESSROOM_OPEN
+
+// Packet: 0x0a03
+packetLen(0x0a03, 2) // CZ_REQ_CANCEL_WRITE_RODEX
+
+// Packet: 0x0a04
+packetLen(0x0a04, 6) // CZ_REQ_ADD_ITEM_RODEX
+
+// Packet: 0x0a05
+packetLen(0x0a05, 53) // ZC_ACK_ADD_ITEM_RODEX
+
+// Packet: 0x0a06
+packetLen(0x0a06, 6) // CZ_REQ_REMOVE_RODEX_ITEM
+
+// Packet: 0x0a07
+packetLen(0x0a07, 9) // ZC_ACK_REMOVE_RODEX_ITEM
+
+// Packet: 0x0a08
+packetLen(0x0a08, 26) // CZ_REQ_OPEN_WRITE_RODEX
+
+// Packet: 0x0a09
+packetLen(0x0a09, 45) // ZC_ADD_EXCHANGE_ITEM3
+
+// Packet: 0x0a0a
+packetLen(0x0a0a, 47) // ZC_ADD_ITEM_TO_STORE3
+
+// Packet: 0x0a0b
+packetLen(0x0a0b, 47) // ZC_ADD_ITEM_TO_CART3
+
+// Packet: 0x0a0c
+packetLen(0x0a0c, 56) // ZC_ITEM_PICKUP_ACK_V6
+
+// Packet: 0x0a0d
+packetLen(0x0a0d, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a0e
+packetLen(0x0a0e, 14) // ZC_BATTLEFIELD_NOTIFY_HP2
+
+// Packet: 0x0a0f
+packetLen(0x0a0f, -1) // ZC_CART_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a10
+packetLen(0x0a10, -1) // ZC_STORE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a11
+packetLen(0x0a11, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a12
+packetLen(0x0a12, 27) // ZC_ACK_OPEN_WRITE_RODEX
+
+// Packet: 0x0a13
+packetLen(0x0a13, 26) // CZ_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a14
+packetLen(0x0a14, 10) // ZC_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a15
+packetLen(0x0a15, 12) // ZC_GOLDPCCAFE_POINT
+
+// Packet: 0x0a16
+packetLen(0x0a16, 26) // CZ_DYNAMICNPC_CREATE_REQUEST
+
+// Packet: 0x0a17
+packetLen(0x0a17, 6) // ZC_DYNAMICNPC_CREATE_RESULT
+
+// Packet: 0x0a18
+packetLen(0x0a18, 14) // ZC_ACCEPT_ENTER3
+
+// Packet: 0x0a19
+packetLen(0x0a19, 2) // CZ_REQ_OPEN_ROULETTE
+
+// Packet: 0x0a1a
+packetLen(0x0a1a, 23) // ZC_ACK_OPEN_ROULETTE
+
+// Packet: 0x0a1b
+packetLen(0x0a1b, 2) // CZ_REQ_ROULETTE_INFO
+
+// Packet: 0x0a1c
+packetLen(0x0a1c, -1) // ZC_ACK_ROULEITTE_INFO
+
+// Packet: 0x0a1d
+packetLen(0x0a1d, 2) // CZ_REQ_CLOSE_ROULETTE
+
+// Packet: 0x0a1e
+packetLen(0x0a1e, 3) // ZC_ACK_CLOSE_ROULETTE
+
+// Packet: 0x0a1f
+packetLen(0x0a1f, 2) // CZ_REQ_GENERATE_ROULETTE
+
+// Packet: 0x0a20
+packetLen(0x0a20, 21) // ZC_ACK_GENERATE_ROULETTE
+
+// Packet: 0x0a21
+packetLen(0x0a21, 3) // CZ_RECV_ROULETTE_ITEM
+
+// Packet: 0x0a22
+packetLen(0x0a22, 5) // ZC_RECV_ROULETTE_ITEM
+
+// Packet: 0x0a23
+packetLen(0x0a23, -1) // ZC_ALL_ACH_LIST
+
+// Packet: 0x0a24
+packetLen(0x0a24, 66) // ZC_ACH_UPDATE
+
+// Packet: 0x0a25
+packetLen(0x0a25, 6) // CZ_REQ_ACH_REWARD
+
+// Packet: 0x0a26
+packetLen(0x0a26, 7) // ZC_REQ_ACH_REWARD_ACK
+
+// Packet: 0x0a27
+packetLen(0x0a27, 8) // ZC_RECOVERY2
+
+// Packet: 0x0a28
+packetLen(0x0a28, 3) // ZC_ACK_OPENSTORE2
+
+// Packet: 0x0a29
+packetLen(0x0a29, 6) // ZC_REQ_AU_BOT
+
+// Packet: 0x0a2a
+packetLen(0x0a2a, 6) // CZ_ACK_AU_BOT
+
+// Packet: 0x0a2b
+packetLen(0x0a2b, 14) // ZC_SE_CASHSHOP_OPEN2
+
+// Packet: 0x0a2c
+packetLen(0x0a2c, 12) // ZC_SE_PC_BUY_TAIWANCASHITEM_RESULT
+
+// Packet: 0x0a2d
+packetLen(0x0a2d, -1) // ZC_EQUIPWIN_MICROSCOPE_V6
+
+// Packet: 0x0a2e
+packetLen(0x0a2e, 6) // CZ_REQ_CHANGE_TITLE
+
+// Packet: 0x0a2f
+packetLen(0x0a2f, 7) // ZC_ACK_CHANGE_TITLE
+
+// Packet: 0x0a30
+packetLen(0x0a30, 106) // ZC_ACK_REQNAMEALL2
+
+// Packet: 0x0a31
+packetLen(0x0a31, -1) // ZC_RESULT_PACKAGE_ITEM_TEST
+
+// Packet: 0x0a32
+packetLen(0x0a32, 2) // ZC_OPEN_RODEX_THROUGH_NPC_ONLY
+
+// Packet: 0x0a33
+packetLen(0x0a33, 7) // ZC_UPDATE_ROULETTE_COIN
+
+// Packet: 0x0a34
+packetLen(0x0a34, 6) // ZC_UPDATE_TAIWANCASH
+
+// Packet: 0x0a35
+packetLen(0x0a35, 4) // CZ_REQ_ONECLICK_ITEMIDENTIFY
+
+// Packet: 0x0a36
+packetLen(0x0a36, 7) // ZC_HP_INFO_TINY
+
+// Packet: 0x0a37
+packetLen(0x0a37, 57) // ZC_ITEM_PICKUP_ACK_V7
+
+// Packet: 0x0a38
+#if PACKETVER >= 20150128
+packetLen(0x0a38, 3) // ZC_OPEN_UI
+#endif
+
+// Packet: 0x0a39
+#if PACKETVER >= 20150415
+packetLen(0x0a39, 36) // CH_MAKE_CHAR
+#elif PACKETVER >= 20150211
+packetLen(0x0a39, 35) // CH_MAKE_CHAR
+#endif
+
+// Packet: 0x0a3a
+#if PACKETVER >= 20150311
+packetLen(0x0a3a, 12)
+#endif
+
+// Packet: 0x0a3b
+#if PACKETVER >= 20150422
+packetLen(0x0a3b, -1) // ZC_CUSTOM_HAT_EFFECT
+#endif
+
+// Packet: 0x0a3c
+#if PACKETVER >= 20150520
+packetLen(0x0a3c, -1)
+#endif
+
+// Packet: 0x0a3d
+#if PACKETVER >= 20150520
+packetLen(0x0a3d, 18)
+#endif
+
+// Packet: 0x0a3e
+#if PACKETVER >= 20150603
+packetLen(0x0a3e, -1)
+#endif
+
+// Packet: 0x0a3f
+#if PACKETVER >= 20150624
+packetLen(0x0a3f, 9)
+#endif
+
+// Packet: 0x0a40
+#if PACKETVER >= 20150812
+packetLen(0x0a40, 11)
+#endif
+
+// Packet: 0x0a41
+#if PACKETVER >= 20150909
+packetLen(0x0a41, 18) // ZC_AOE_EFFECT_SKILL
+#endif
+
+// Packet: 0x0a42
+#if PACKETVER >= 20150916
+packetLen(0x0a42, 43)
+#endif
+
+// Packet: 0x0a43
+#if PACKETVER >= 20151007
+packetLen(0x0a43, 85) // ZC_ADD_MEMBER_TO_GROUP
+#endif
+
+// Packet: 0x0a44
+#if PACKETVER >= 20151007
+packetLen(0x0a44, -1) // ZC_GROUP_LIST
+#endif
+
+// Packet: 0x0a45
+#if PACKETVER >= 20151125
+// removed
+#elif PACKETVER >= 20151104
+packetLen(0x0a45, 2)
+#elif PACKETVER >= 20151028
+packetLen(0x0a45, -1)
+#endif
+
+// Packet: 0x0a46
+#if PACKETVER >= 20151104
+packetLen(0x0a46, 14)
+#endif
+
+// Packet: 0x0a47
+#if PACKETVER >= 20151104
+packetLen(0x0a47, 3) // ZC_STYLE_CHANGE_RES
+#endif
+
+// Packet: 0x0a48
+#if PACKETVER >= 20151104
+packetLen(0x0a48, 2)
+#endif
+
+// Packet: 0x0a49
+#if PACKETVER >= 20151118
+packetLen(0x0a49, 22) // CZ_PRIVATE_AIRSHIP_REQUEST
+#endif
+
+// Packet: 0x0a4a
+#if PACKETVER >= 20151118
+packetLen(0x0a4a, 6) // ZC_PRIVATE_AIRSHIP_RESPONSE
+#endif
+
+// Packet: 0x0a4b
+#if PACKETVER >= 20151118
+packetLen(0x0a4b, 22) // ZC_AIRSHIP_MAPMOVE
+#endif
+
+// Packet: 0x0a4c
+#if PACKETVER >= 20151118
+packetLen(0x0a4c, 28) // ZC_AIRSHIP_SERVERMOVE
+#endif
+
+
+#endif /* COMMON_PACKETS2015_LEN_MAIN_H */
diff --git a/src/common/packets/packets2015_len_re.h b/src/common/packets/packets2015_len_re.h
new file mode 100644
index 000000000..bd65d3eea
--- /dev/null
+++ b/src/common/packets/packets2015_len_re.h
@@ -0,0 +1,8562 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2015_LEN_RE_H
+#define COMMON_PACKETS2015_LEN_RE_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 149) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 22) // CZ_ENTER
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 44) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 10) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, 14)
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+packetLen(0x0094, 19) // CZ_REQNAME
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+packetLen(0x00a7, 9)
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 9) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+packetLen(0x00f7, 17) // CZ_REQUEST_TIME
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+packetLen(0x0113, 25) // CZ_USE_SKILL
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 37) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+#if PACKETVER >= 20151209
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20151202
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20151104
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20151028
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20151021
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20151014
+packetLen(0x0202, 18) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20151007
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20151001
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150826
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150819
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150805
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150603
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150527
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150520
+packetLen(0x0202, 6) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150429
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150422
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150401
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150325
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150318
+packetLen(0x0202, 4) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150225
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150217
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150211
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150204
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150128
+packetLen(0x0202, 12) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20150107
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x020f
+packetLen(0x020f, 10) // CZ_REQ_PVPPOINT
+
+// Packet: 0x0210
+packetLen(0x0210, 22) // ZC_ACK_PVPPOINT
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+
+// Packet: 0x022b
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+
+// Packet: 0x022c
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+
+// Packet: 0x022d
+#if PACKETVER >= 20151223
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20151216
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+#elif PACKETVER >= 20151209
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20151202
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20151125
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20151118
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+#elif PACKETVER >= 20151104
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20151028
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20151007
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20151001
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150923
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150916
+packetLen(0x022d, 10) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150826
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150819
+packetLen(0x022d, 10) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150805
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150715
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150708
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150701
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150624
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150603
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150527
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150429
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150422
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150225
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150217
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150211
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150204
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20150107
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#endif
+
+// Packet: 0x022e
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+
+// Packet: 0x022f
+packetLen(0x022f, 5) // ZC_FEED_MER
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+#if PACKETVER >= 20151209
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20151202
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20151111
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20151104
+packetLen(0x023b, -1) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20151028
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20151021
+packetLen(0x023b, 19) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20151007
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20151001
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150916
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150909
+packetLen(0x023b, 7) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150902
+packetLen(0x023b, 18) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150819
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150805
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150729
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150722
+packetLen(0x023b, 90) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150715
+packetLen(0x023b, -1) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150708
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150701
+packetLen(0x023b, 19) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150603
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150527
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150513
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150507
+packetLen(0x023b, 5) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150429
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150422
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150325
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150318
+packetLen(0x023b, 6) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150311
+packetLen(0x023b, 5) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150225
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150217
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150211
+packetLen(0x023b, 4) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150204
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150128
+packetLen(0x023b, 5) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20150107
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#endif
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+
+// Packet: 0x0275
+packetLen(0x0275, 37) // CH_ENTER2
+
+// Packet: 0x0276
+packetLen(0x0276, -1) // AC_ACCEPT_LOGIN2
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+#if PACKETVER >= 20151209
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20151202
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20151104
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20151021
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20151014
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20151001
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150826
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150819
+packetLen(0x0281, 6) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150805
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150729
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150722
+packetLen(0x0281, 6) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150701
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150624
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150603
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150527
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150429
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150422
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150325
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150318
+packetLen(0x0281, 8) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150225
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150217
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150211
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150204
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150128
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150121
+packetLen(0x0281, 18) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20150107
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#endif
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+
+// Packet: 0x0288
+packetLen(0x0288, -1) // CZ_PC_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0289
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0296
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0297
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0298
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+
+// Packet: 0x0299
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+
+// Packet: 0x029a
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+
+// Packet: 0x029b
+packetLen(0x029b, 80) // ZC_MER_INIT
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a5
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+
+// Packet: 0x02a6
+packetLen(0x02a6, -1) // ZC_HACKSH_CPX_MSG
+
+// Packet: 0x02a7
+packetLen(0x02a7, -1) // CZ_HACKSH_CPX_MSG
+
+// Packet: 0x02aa
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+
+// Packet: 0x02ab
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+
+// Packet: 0x02ac
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+
+// Packet: 0x02ad
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+
+// Packet: 0x02b0
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+
+// Packet: 0x02b1
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+
+// Packet: 0x02b2
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+
+// Packet: 0x02b3
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+
+// Packet: 0x02b4
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+
+// Packet: 0x02b5
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+
+// Packet: 0x02b6
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+
+// Packet: 0x02b7
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+
+// Packet: 0x02b8
+packetLen(0x02b8, 22) // ZC_ITEM_PICKUP_PARTY
+
+// Packet: 0x02b9
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+
+// Packet: 0x02ba
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+
+// Packet: 0x02bb
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+
+// Packet: 0x02bc
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+
+// Packet: 0x02c1
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+
+// Packet: 0x02c2
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+
+// Packet: 0x02c4
+#if PACKETVER >= 20151223
+packetLen(0x02c4, 8) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20151118
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20151111
+packetLen(0x02c4, -1) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20151028
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20151021
+packetLen(0x02c4, 36) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20150715
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20150708
+packetLen(0x02c4, 90) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20150520
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20150513
+packetLen(0x02c4, 8) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20150304
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20150225
+packetLen(0x02c4, 6) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20150107
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#endif
+
+// Packet: 0x02c5
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c6
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+
+// Packet: 0x02c7
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c8
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+
+// Packet: 0x02c9
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+
+// Packet: 0x02ca
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+
+// Packet: 0x02cb
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+
+// Packet: 0x02cc
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+
+// Packet: 0x02cd
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+
+// Packet: 0x02ce
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+
+// Packet: 0x02cf
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+
+// Packet: 0x02d0
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d1
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d2
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d3
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+
+// Packet: 0x02d4
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+
+// Packet: 0x02d5
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+
+// Packet: 0x02d6
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d7
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d8
+packetLen(0x02d8, 10) // CZ_CONFIG
+
+// Packet: 0x02d9
+packetLen(0x02d9, 10) // ZC_CONFIG
+
+// Packet: 0x02da
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+
+// Packet: 0x02db
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+
+// Packet: 0x02dc
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+
+// Packet: 0x02dd
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+
+// Packet: 0x02de
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+
+// Packet: 0x02df
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+
+// Packet: 0x02e0
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+
+// Packet: 0x02e1
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+
+// Packet: 0x02e2
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+
+// Packet: 0x02e3
+packetLen(0x02e3, 22) // CZ_USE_SKILL_NEW_JAPEN
+
+// Packet: 0x02e4
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+
+// Packet: 0x02e5
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+
+// Packet: 0x02e6
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+
+// Packet: 0x02e7
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+
+// Packet: 0x02e8
+packetLen(0x02e8, -1) // ZC_NORMAL_ITEMLIST3
+
+// Packet: 0x02e9
+packetLen(0x02e9, -1) // ZC_CART_NORMAL_ITEMLIST3
+
+// Packet: 0x02ea
+packetLen(0x02ea, -1) // ZC_STORE_NORMAL_ITEMLIST3
+
+// Packet: 0x02eb
+packetLen(0x02eb, 13) // ZC_ACCEPT_ENTER2
+
+// Packet: 0x02ec
+packetLen(0x02ec, 67) // ZC_NOTIFY_MOVEENTRY4
+
+// Packet: 0x02ed
+packetLen(0x02ed, 59) // ZC_NOTIFY_NEWENTRY4
+
+// Packet: 0x02ee
+packetLen(0x02ee, 60) // ZC_NOTIFY_STANDENTRY4
+
+// Packet: 0x02ef
+packetLen(0x02ef, 8) // ZC_NOTIFY_FONT
+
+// Packet: 0x02f0
+packetLen(0x02f0, 10) // ZC_PROGRESS
+
+// Packet: 0x02f1
+packetLen(0x02f1, 2) // CZ_PROGRESS
+
+// Packet: 0x02f2
+packetLen(0x02f2, 2) // ZC_PROGRESS_CANCEL
+
+// Packet: 0x02f3
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+
+// Packet: 0x02f4
+packetLen(0x02f4, 3) // ZC_IRMAIL_SEND_RES
+
+// Packet: 0x02f5
+packetLen(0x02f5, 7) // ZC_IRMAIL_NOTIFY
+
+// Packet: 0x02f6
+packetLen(0x02f6, 7) // CZ_IRMAIL_LIST
+
+// Packet: 0x035c
+packetLen(0x035c, 2) // CZ_OPEN_SIMPLE_CASHSHOP_ITEMLIST
+
+// Packet: 0x035d
+packetLen(0x035d, -1) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+
+// Packet: 0x035e
+packetLen(0x035e, 2) // CZ_CLOSE_WINDOW
+
+// Packet: 0x035f
+#if PACKETVER >= 20151230
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20151209
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20151202
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20151125
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20151118
+packetLen(0x035f, 5) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20151111
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20151104
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20151021
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20151014
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20151001
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20150916
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20150909
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20150826
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20150805
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20150715
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20150708
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20150701
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20150617
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20150603
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20150527
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20150520
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20150422
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20150311
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20150217
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20150211
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20150107
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#endif
+
+// Packet: 0x0360
+#if PACKETVER >= 20151230
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20151209
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20151202
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20151125
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20151111
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20151104
+packetLen(0x0360, 19) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20151021
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20151014
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20151001
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150909
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150902
+packetLen(0x0360, -1) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150826
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150805
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150729
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150722
+packetLen(0x0360, 7) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150715
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150708
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150701
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150617
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150603
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150527
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150520
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150422
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150311
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150304
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150225
+packetLen(0x0360, 26) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150217
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150211
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150204
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150128
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20150107
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#endif
+
+// Packet: 0x0361
+#if PACKETVER >= 20151223
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20151216
+packetLen(0x0361, 6) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20151209
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20151202
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20151104
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20151028
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20151021
+packetLen(0x0361, 8) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20151007
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20151001
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150923
+packetLen(0x0361, 18) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150916
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150909
+packetLen(0x0361, 6) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150819
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150805
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150729
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150722
+packetLen(0x0361, 6) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150610
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150603
+packetLen(0x0361, 26) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150527
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150520
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150429
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150422
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150415
+packetLen(0x0361, 8) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150225
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150217
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150211
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150204
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20150107
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#endif
+
+// Packet: 0x0362
+#if PACKETVER >= 20151230
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20151223
+packetLen(0x0362, 8) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20151216
+packetLen(0x0362, 5) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20151209
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20151202
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20151118
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20151111
+packetLen(0x0362, 5) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20151104
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20151021
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20151014
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20151001
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150902
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150826
+packetLen(0x0362, 36) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150819
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150805
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150722
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150715
+packetLen(0x0362, 10) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150701
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150617
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150603
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150527
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150429
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150422
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150408
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150401
+packetLen(0x0362, 7) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150311
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150304
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150225
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150217
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150211
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150204
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150121
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20150107
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#endif
+
+// Packet: 0x0363
+#if PACKETVER >= 20151209
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20151202
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20151111
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20151104
+packetLen(0x0363, 5) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20151021
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20151014
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20151001
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150819
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150805
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150701
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150624
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150617
+packetLen(0x0363, 36) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150603
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150527
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150520
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150513
+packetLen(0x0363, 19) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150507
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150429
+packetLen(0x0363, 5) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150422
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150401
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150325
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150311
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150304
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150225
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150217
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150211
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150204
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150121
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20150107
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#endif
+
+// Packet: 0x0364
+#if PACKETVER >= 20151230
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20151223
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20151216
+packetLen(0x0364, 4) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20151209
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20151202
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20151111
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20151021
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20151014
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20151001
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150819
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150805
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150722
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150715
+packetLen(0x0364, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150701
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150624
+packetLen(0x0364, 18) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150603
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150527
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150429
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150422
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150415
+packetLen(0x0364, 90) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150225
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150217
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150211
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150204
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150121
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20150107
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#endif
+
+// Packet: 0x0365
+#if PACKETVER >= 20151230
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20151223
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20151216
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20151209
+packetLen(0x0365, 5) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20151202
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20151125
+packetLen(0x0365, 5) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20151118
+packetLen(0x0365, 26) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20151104
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20151021
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20151014
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20151001
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150916
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150909
+packetLen(0x0365, 5) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150819
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150805
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150701
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150624
+packetLen(0x0365, 5) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150617
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150603
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150527
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150429
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150422
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150401
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150325
+packetLen(0x0365, 10) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150225
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150217
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150211
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150204
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150128
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150121
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20150107
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#endif
+
+// Packet: 0x0366
+#if PACKETVER >= 20151230
+packetLen(0x0366, 8) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20151209
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20151202
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20151125
+packetLen(0x0366, 8) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20151021
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20151014
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20151001
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150923
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150916
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150909
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150826
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150805
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150715
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150708
+packetLen(0x0366, 26) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150701
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150617
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150603
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150527
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150520
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150422
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150415
+packetLen(0x0366, 5) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150311
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150217
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150211
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150204
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150128
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20150107
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#endif
+
+// Packet: 0x0367
+#if PACKETVER >= 20150909
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20150902
+packetLen(0x0367, 6) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20150408
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20150401
+packetLen(0x0367, 6) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20150325
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20150318
+packetLen(0x0367, 90) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20150107
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#endif
+
+// Packet: 0x0368
+#if PACKETVER >= 20151230
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20151209
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20151202
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20151125
+packetLen(0x0368, -1) // CZ_REQNAME2
+#elif PACKETVER >= 20151021
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20151014
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20151001
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20150916
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20150909
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20150902
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20150826
+packetLen(0x0368, 8) // CZ_REQNAME2
+#elif PACKETVER >= 20150805
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20150729
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20150722
+packetLen(0x0368, 26) // CZ_REQNAME2
+#elif PACKETVER >= 20150715
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20150708
+packetLen(0x0368, 5) // CZ_REQNAME2
+#elif PACKETVER >= 20150701
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20150617
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20150603
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20150527
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20150520
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20150415
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20150311
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20150217
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20150211
+packetLen(0x0368, 5) // CZ_REQNAME2
+#elif PACKETVER >= 20150204
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20150128
+packetLen(0x0368, 8) // CZ_REQNAME2
+#elif PACKETVER >= 20150107
+packetLen(0x0368, 6) // CZ_REQNAME2
+#endif
+
+// Packet: 0x0369
+#if PACKETVER >= 20151230
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20151216
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20151209
+packetLen(0x0369, 6) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20151202
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20151125
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20151118
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20151111
+packetLen(0x0369, 8) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20151021
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20151014
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20151001
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150916
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150909
+packetLen(0x0369, 36) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150826
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150805
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150715
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150708
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150701
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150617
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150603
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150527
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150520
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150422
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150311
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150217
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150211
+packetLen(0x0369, 5) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150204
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150128
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20150107
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#endif
+
+// Packet: 0x03dd
+packetLen(0x03dd, 18) // AHC_GAME_GUARD
+
+// Packet: 0x03de
+packetLen(0x03de, 18) // CAH_ACK_GAME_GUARD
+
+// Packet: 0x0436
+#if PACKETVER >= 20151230
+packetLen(0x0436, -1) // CZ_ENTER2
+#elif PACKETVER >= 20151223
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20151216
+packetLen(0x0436, 12) // CZ_ENTER2
+#elif PACKETVER >= 20151209
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20151202
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20151111
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20151104
+packetLen(0x0436, 6) // CZ_ENTER2
+#elif PACKETVER >= 20151021
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20151007
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20151001
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20150902
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20150826
+packetLen(0x0436, 18) // CZ_ENTER2
+#elif PACKETVER >= 20150805
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20150729
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20150722
+packetLen(0x0436, -1) // CZ_ENTER2
+#elif PACKETVER >= 20150715
+packetLen(0x0436, 6) // CZ_ENTER2
+#elif PACKETVER >= 20150708
+packetLen(0x0436, -1) // CZ_ENTER2
+#elif PACKETVER >= 20150701
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20150624
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20150617
+packetLen(0x0436, 19) // CZ_ENTER2
+#elif PACKETVER >= 20150603
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20150527
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20150429
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20150422
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20150318
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20150311
+packetLen(0x0436, -1) // CZ_ENTER2
+#elif PACKETVER >= 20150304
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20150225
+packetLen(0x0436, 6) // CZ_ENTER2
+#elif PACKETVER >= 20150217
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20150211
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20150204
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20150121
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20150114
+packetLen(0x0436, 10) // CZ_ENTER2
+#elif PACKETVER >= 20150107
+packetLen(0x0436, 4) // CZ_ENTER2
+#endif
+
+// Packet: 0x0437
+#if PACKETVER >= 20151230
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20151209
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20151202
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20151125
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20151111
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20151104
+packetLen(0x0437, 6) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20151021
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20151014
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20151001
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150916
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150909
+packetLen(0x0437, 8) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150826
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150805
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150729
+packetLen(0x0437, -1) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150722
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150715
+packetLen(0x0437, 10) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150701
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150617
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150610
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150603
+packetLen(0x0437, 8) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150527
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150520
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150422
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150408
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150401
+packetLen(0x0437, 6) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150311
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150217
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150211
+packetLen(0x0437, 12) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150204
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150128
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20150107
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#endif
+
+// Packet: 0x0438
+#if PACKETVER >= 20151209
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20151202
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20151125
+packetLen(0x0438, 6) // CZ_USE_SKILL2
+#elif PACKETVER >= 20151021
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20151014
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20151001
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150916
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150909
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150826
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150805
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150729
+packetLen(0x0438, 5) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150722
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150715
+packetLen(0x0438, 5) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150708
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150701
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150617
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150610
+packetLen(0x0438, -1) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150603
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150527
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150520
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150422
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150318
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150311
+packetLen(0x0438, -1) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150217
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150211
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150204
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150128
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20150107
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#endif
+
+// Packet: 0x0439
+packetLen(0x0439, 8) // CZ_USE_ITEM2
+
+// Packet: 0x043d
+packetLen(0x043d, 8) // ZC_SKILL_POSTDELAY
+
+// Packet: 0x043e
+packetLen(0x043e, -1) // ZC_SKILL_POSTDELAY_LIST
+
+// Packet: 0x043f
+packetLen(0x043f, 25) // ZC_MSG_STATE_CHANGE2
+
+// Packet: 0x0440
+packetLen(0x0440, 10) // ZC_MILLENNIUMSHIELD
+
+// Packet: 0x0441
+packetLen(0x0441, 4) // ZC_SKILLINFO_DELETE
+
+// Packet: 0x0442
+packetLen(0x0442, -1) // ZC_SKILL_SELECT_REQUEST
+
+// Packet: 0x0443
+packetLen(0x0443, 8) // CZ_SKILL_SELECT_RESPONSE
+
+// Packet: 0x0444
+packetLen(0x0444, -1) // ZC_SIMPLE_CASH_POINT_ITEMLIST
+
+// Packet: 0x0445
+packetLen(0x0445, 10) // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0446
+packetLen(0x0446, 14) // ZC_QUEST_NOTIFY_EFFECT
+
+// Packet: 0x0447
+packetLen(0x0447, 2) // CZ_BLOCKING_PLAY_CANCEL
+
+// Packet: 0x0448
+packetLen(0x0448, -1) // HC_CHARACTER_LIST
+
+// Packet: 0x0449
+packetLen(0x0449, 4) // ZC_HACKSH_ERROR_MSG
+
+// Packet: 0x044a
+packetLen(0x044a, 6) // CZ_CLIENT_VERSION
+
+// Packet: 0x044b
+packetLen(0x044b, 2) // CZ_CLOSE_SIMPLECASH_SHOP
+
+// Packet: 0x07d7
+packetLen(0x07d7, 8) // CZ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d8
+packetLen(0x07d8, 8) // ZC_REQ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d9
+packetLen(0x07d9, 268) // ZC_SHORTCUT_KEY_LIST_V2
+
+// Packet: 0x07da
+packetLen(0x07da, 6) // CZ_CHANGE_GROUP_MASTER
+
+// Packet: 0x07db
+packetLen(0x07db, 8) // ZC_HO_PAR_CHANGE
+
+// Packet: 0x07dc
+packetLen(0x07dc, 6) // CZ_SEEK_PARTY
+
+// Packet: 0x07dd
+packetLen(0x07dd, 54) // ZC_SEEK_PARTY
+
+// Packet: 0x07de
+packetLen(0x07de, 30) // CZ_SEEK_PARTY_MEMBER
+
+// Packet: 0x07df
+packetLen(0x07df, 54) // ZC_SEEK_PARTY_MEMBER
+
+// Packet: 0x07e0
+packetLen(0x07e0, 58) // ZC_ES_NOTI_MYINFO
+
+// Packet: 0x07e1
+packetLen(0x07e1, 15) // ZC_SKILLINFO_UPDATE2
+
+// Packet: 0x07e2
+packetLen(0x07e2, 8) // ZC_MSG_VALUE
+
+// Packet: 0x07e3
+packetLen(0x07e3, 6) // ZC_ITEMLISTWIN_OPEN
+
+// Packet: 0x07e4
+#if PACKETVER >= 20151216
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20151209
+packetLen(0x07e4, 26) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20151202
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20151104
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20151021
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20151014
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20151001
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150923
+packetLen(0x07e4, 36) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150819
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150805
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150708
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150701
+packetLen(0x07e4, 8) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150624
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150617
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150610
+packetLen(0x07e4, -1) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150603
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150527
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150429
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150422
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150325
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150318
+packetLen(0x07e4, 26) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150225
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150204
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150128
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150121
+packetLen(0x07e4, -1) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20150107
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#endif
+
+// Packet: 0x07e5
+packetLen(0x07e5, 4) // CH_ENTER_CHECKBOT
+
+// Packet: 0x07e6
+packetLen(0x07e6, 8) // ZC_MSG_SKILL
+
+// Packet: 0x07e7
+packetLen(0x07e7, 32) // CH_CHECKBOT
+
+// Packet: 0x07e8
+packetLen(0x07e8, -1) // HC_CHECKBOT
+
+// Packet: 0x07e9
+packetLen(0x07e9, 5) // HC_CHECKBOT_RESULT
+
+// Packet: 0x07ea
+packetLen(0x07ea, 2) // CZ_BATTLE_FIELD_LIST
+
+// Packet: 0x07eb
+packetLen(0x07eb, -1) // ZC_BATTLE_FIELD_LIST
+
+// Packet: 0x07ec
+#if PACKETVER >= 20151230
+packetLen(0x07ec, 90) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20151216
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20151209
+packetLen(0x07ec, 6) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20151202
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20151111
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20151104
+packetLen(0x07ec, 26) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20151028
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20151021
+packetLen(0x07ec, 5) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20151014
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20151001
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150902
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150826
+packetLen(0x07ec, 7) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150819
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150805
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150701
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150624
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150617
+packetLen(0x07ec, -1) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150603
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150527
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150429
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150422
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150225
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150217
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150211
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150204
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150121
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20150107
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#endif
+
+// Packet: 0x07ed
+packetLen(0x07ed, 10) // ZC_JOIN_BATTLE_FIELD
+
+// Packet: 0x07ee
+packetLen(0x07ee, 6) // CZ_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07ef
+packetLen(0x07ef, 8) // ZC_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07f0
+packetLen(0x07f0, 6) // CZ_REQ_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f1
+packetLen(0x07f1, 18) // ZC_ACK_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f2
+packetLen(0x07f2, 8) // ZC_BATTLE_NOTI_START_STEP
+
+// Packet: 0x07f3
+packetLen(0x07f3, 6) // ZC_BATTLE_JOIN_NOTI_DEFER
+
+// Packet: 0x07f4
+packetLen(0x07f4, 3) // ZC_BATTLE_JOIN_DISABLE_STATE
+
+// Packet: 0x07f5
+packetLen(0x07f5, 6) // CZ_GM_FULLSTRIP
+
+// Packet: 0x07f6
+packetLen(0x07f6, 14) // ZC_NOTIFY_EXP
+
+// Packet: 0x07f7
+packetLen(0x07f7, -1) // ZC_NOTIFY_MOVEENTRY7
+
+// Packet: 0x07f8
+packetLen(0x07f8, -1) // ZC_NOTIFY_NEWENTRY5
+
+// Packet: 0x07f9
+packetLen(0x07f9, -1) // ZC_NOTIFY_STANDENTRY5
+
+// Packet: 0x07fa
+packetLen(0x07fa, 8) // ZC_DELETE_ITEM_FROM_BODY
+
+// Packet: 0x07fb
+packetLen(0x07fb, 25) // ZC_USESKILL_ACK2
+
+// Packet: 0x07fc
+packetLen(0x07fc, 10) // ZC_CHANGE_GROUP_MASTER
+
+// Packet: 0x07fd
+packetLen(0x07fd, -1) // ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN
+
+// Packet: 0x07fe
+packetLen(0x07fe, 26) // ZC_PLAY_NPC_BGM
+
+// Packet: 0x0800
+packetLen(0x0800, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0801
+packetLen(0x0801, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0802
+#if PACKETVER >= 20151230
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20151223
+packetLen(0x0802, 4) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20151209
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20151202
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20151125
+packetLen(0x0802, -1) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20151118
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20151111
+packetLen(0x0802, 4) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20151104
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20151028
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20151014
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20151001
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150909
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150902
+packetLen(0x0802, 36) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150819
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150805
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150708
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150701
+packetLen(0x0802, 6) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150624
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150603
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150527
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150429
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150422
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150401
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150325
+packetLen(0x0802, 4) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150318
+packetLen(0x0802, -1) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150311
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150304
+packetLen(0x0802, 4) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150225
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150217
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150211
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150204
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150121
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20150107
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// Packet: 0x0803
+packetLen(0x0803, 4) // ZC_PARTY_BOOKING_ACK_REGISTER
+
+// Packet: 0x0804
+packetLen(0x0804, 14) // CZ_PARTY_BOOKING_REQ_SEARCH
+
+// Packet: 0x0805
+packetLen(0x0805, -1) // ZC_PARTY_BOOKING_ACK_SEARCH
+
+// Packet: 0x0806
+packetLen(0x0806, 2) // CZ_PARTY_BOOKING_REQ_DELETE
+
+// Packet: 0x0807
+packetLen(0x0807, 4) // ZC_PARTY_BOOKING_ACK_DELETE
+
+// Packet: 0x0808
+packetLen(0x0808, 14) // CZ_PARTY_BOOKING_REQ_UPDATE
+
+// Packet: 0x0809
+packetLen(0x0809, 50) // ZC_PARTY_BOOKING_NOTIFY_INSERT
+
+// Packet: 0x080a
+packetLen(0x080a, 18) // ZC_PARTY_BOOKING_NOTIFY_UPDATE
+
+// Packet: 0x080b
+packetLen(0x080b, 6) // ZC_PARTY_BOOKING_NOTIFY_DELETE
+
+// Packet: 0x080c
+packetLen(0x080c, 2) // CZ_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080d
+packetLen(0x080d, 3) // ZC_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080e
+packetLen(0x080e, 14) // ZC_NOTIFY_HP_TO_GROUPM_R2
+
+// Packet: 0x080f
+packetLen(0x080f, 20) // ZC_ADD_EXCHANGE_ITEM2
+
+// Packet: 0x0810
+packetLen(0x0810, 3) // ZC_OPEN_BUYING_STORE
+
+// Packet: 0x0811
+#if PACKETVER >= 20151230
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20151216
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20151209
+packetLen(0x0811, 6) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20151202
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20151125
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20151111
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20151104
+packetLen(0x0811, 18) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20151021
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20151014
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20151007
+packetLen(0x0811, 26) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20151001
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150916
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150909
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150826
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150805
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150715
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150708
+packetLen(0x0811, 19) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150701
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150624
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150617
+packetLen(0x0811, 8) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150610
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150603
+packetLen(0x0811, 5) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150527
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150520
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150422
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150325
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150318
+packetLen(0x0811, 19) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150311
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150217
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150211
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150204
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150128
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20150107
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#endif
+
+// Packet: 0x0812
+packetLen(0x0812, 8) // ZC_FAILED_OPEN_BUYING_STORE_TO_BUYER
+
+// Packet: 0x0813
+packetLen(0x0813, -1) // ZC_MYITEMLIST_BUYING_STORE
+
+// Packet: 0x0814
+packetLen(0x0814, 86) // ZC_BUYING_STORE_ENTRY
+
+// Packet: 0x0815
+#if PACKETVER >= 20151230
+packetLen(0x0815, 19) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20151223
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20151209
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20151202
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20151125
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20151118
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20151111
+packetLen(0x0815, 26) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20151021
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20151014
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20151001
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150916
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150909
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150826
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150805
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150715
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150708
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150701
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150617
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150603
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150527
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150520
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150422
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150318
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150311
+packetLen(0x0815, 19) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150217
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150211
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150204
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150128
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20150107
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#endif
+
+// Packet: 0x0816
+packetLen(0x0816, 6) // ZC_DISAPPEAR_BUYING_STORE_ENTRY
+
+// Packet: 0x0817
+#if PACKETVER >= 20151021
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20151014
+packetLen(0x0817, 26) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20151001
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20150923
+packetLen(0x0817, -1) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20150729
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20150722
+packetLen(0x0817, 19) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20150520
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20150513
+packetLen(0x0817, 5) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20150507
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20150422
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20150415
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20150304
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20150225
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20150217
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20150211
+packetLen(0x0817, 10) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20150107
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#endif
+
+// Packet: 0x0818
+packetLen(0x0818, -1) // ZC_ACK_ITEMLIST_BUYING_STORE
+
+// Packet: 0x0819
+#if PACKETVER >= 20151230
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20151209
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20151202
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20151125
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20151021
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20151014
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20151001
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150916
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150909
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150902
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150826
+packetLen(0x0819, 6) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150805
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150715
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150708
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150701
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150617
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150610
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150603
+packetLen(0x0819, 6) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150527
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150520
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150422
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150415
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150408
+packetLen(0x0819, 8) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150401
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150325
+packetLen(0x0819, 6) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150311
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150304
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150225
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150217
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150211
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150204
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150128
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20150107
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#endif
+
+// Packet: 0x081a
+packetLen(0x081a, 4) // ZC_FAILED_TRADE_BUYING_STORE_TO_BUYER
+
+// Packet: 0x081b
+packetLen(0x081b, 10) // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+
+// Packet: 0x081c
+packetLen(0x081c, 10) // ZC_ITEM_DELETE_BUYING_STORE
+
+// Packet: 0x081d
+packetLen(0x081d, 22) // ZC_EL_INIT
+
+// Packet: 0x081e
+packetLen(0x081e, 8) // ZC_EL_PAR_CHANGE
+
+// Packet: 0x081f
+packetLen(0x081f, -1) // ZC_BROADCAST4
+
+// Packet: 0x0820
+packetLen(0x0820, 11) // ZC_COSTUME_SPRITE_CHANGE
+
+// Packet: 0x0821
+packetLen(0x0821, 2) // AC_OTP_USER
+
+// Packet: 0x0822
+packetLen(0x0822, 9) // CA_OTP_AUTH_REQ
+
+// Packet: 0x0823
+packetLen(0x0823, -1) // AC_OTP_AUTH_ACK
+
+// Packet: 0x0824
+packetLen(0x0824, 6) // ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER
+
+// Packet: 0x0825
+packetLen(0x0825, -1) // CA_SSO_LOGIN_REQ
+
+// Packet: 0x0827
+packetLen(0x0827, 6) // CH_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0828
+packetLen(0x0828, 14) // HC_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0829
+packetLen(0x0829, 12) // CH_DELETE_CHAR3
+
+// Packet: 0x082a
+packetLen(0x082a, 10) // HC_DELETE_CHAR3
+
+// Packet: 0x082b
+packetLen(0x082b, 6) // CH_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082c
+packetLen(0x082c, 10) // HC_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082d
+packetLen(0x082d, -1) // HC_ACCEPT_ENTER2
+
+// Packet: 0x0835
+#if PACKETVER >= 20150923
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20150916
+packetLen(0x0835, 6) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20150722
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20150715
+packetLen(0x0835, -1) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20150617
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20150610
+packetLen(0x0835, 8) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20150422
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20150415
+packetLen(0x0835, 6) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20150217
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20150211
+packetLen(0x0835, 8) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20150107
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#endif
+
+// Packet: 0x0836
+packetLen(0x0836, -1) // ZC_SEARCH_STORE_INFO_ACK
+
+// Packet: 0x0837
+packetLen(0x0837, 3) // ZC_SEARCH_STORE_INFO_FAILED
+
+// Packet: 0x0838
+#if PACKETVER >= 20151230
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20151209
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20151202
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20151125
+packetLen(0x0838, 18) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20151021
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20151014
+packetLen(0x0838, -1) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20151001
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150916
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150909
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150826
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150805
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150715
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150708
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150701
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150617
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150603
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150527
+packetLen(0x0838, 10) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150520
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150422
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150318
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150311
+packetLen(0x0838, 10) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150217
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150211
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150204
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150128
+packetLen(0x0838, 7) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20150107
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#endif
+
+// Packet: 0x0839
+packetLen(0x0839, 66) // ZC_ACK_BAN_GUILD_SSO
+
+// Packet: 0x083a
+packetLen(0x083a, 5) // ZC_OPEN_SEARCH_STORE_INFO
+
+// Packet: 0x083b
+packetLen(0x083b, 2) // CZ_CLOSE_SEARCH_STORE_INFO
+
+// Packet: 0x083c
+#if PACKETVER >= 20151230
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20151209
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20151202
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20151125
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20151021
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20151014
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20151001
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150916
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150909
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150902
+packetLen(0x083c, -1) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150819
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150805
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150722
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150715
+packetLen(0x083c, 7) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150708
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150701
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150617
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150603
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150527
+packetLen(0x083c, 36) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150520
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150422
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150408
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150401
+packetLen(0x083c, -1) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150311
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150217
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150211
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150204
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150128
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150121
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150114
+packetLen(0x083c, 19) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20150107
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#endif
+
+// Packet: 0x083d
+packetLen(0x083d, 6) // ZC_SSILIST_ITEM_CLICK_ACK
+
+// Packet: 0x083e
+packetLen(0x083e, 26) // AC_REFUSE_LOGIN2
+
+// Packet: 0x0840
+packetLen(0x0840, -1) // HC_NOTIFY_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0841
+packetLen(0x0841, 4) // CH_SELECT_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0842
+packetLen(0x0842, 6) // CZ_RECALL_SSO
+
+// Packet: 0x0843
+packetLen(0x0843, 6) // CZ_REMOVE_AID_SSO
+
+// Packet: 0x0844
+packetLen(0x0844, 2) // CZ_SE_CASHSHOP_OPEN
+
+// Packet: 0x0845
+packetLen(0x0845, 10) // ZC_SE_CASHSHOP_OPEN
+
+// Packet: 0x0846
+packetLen(0x0846, 4) // CZ_REQ_SE_CASH_TAB_CODE
+
+// Packet: 0x0847
+packetLen(0x0847, -1) // ZC_ACK_SE_CASH_ITEM_LIST
+
+// Packet: 0x0848
+packetLen(0x0848, -1) // CZ_SE_PC_BUY_CASHITEM_LIST
+
+// Packet: 0x0849
+packetLen(0x0849, 16) // ZC_SE_PC_BUY_CASHITEM_RESULT
+
+// Packet: 0x084a
+packetLen(0x084a, 2) // CZ_SE_CASHSHOP_CLOSE
+
+// Packet: 0x084b
+packetLen(0x084b, 19) // ZC_ITEM_FALL_ENTRY4
+
+// Packet: 0x084c
+packetLen(0x084c, 10) // CZ_MACRO_USE_SKILL
+
+// Packet: 0x084d
+packetLen(0x084d, 10) // CZ_MACRO_USE_SKILL_TOGROUND
+
+// Packet: 0x084e
+packetLen(0x084e, 5) // CZ_MACRO_REQUEST_MOVE
+
+// Packet: 0x084f
+packetLen(0x084f, 6) // CZ_MACRO_ITEM_PICKUP
+
+// Packet: 0x0850
+packetLen(0x0850, 7) // CZ_MACRO_REQUEST_ACT
+
+// Packet: 0x0851
+packetLen(0x0851, -1) // ZC_GPK_DYNCODE
+
+// Packet: 0x0852
+packetLen(0x0852, 2) // CZ_GPK_DYNCODE_RELOAD
+
+// Packet: 0x0853
+packetLen(0x0853, -1) // ZC_GPK_AUTH
+
+// Packet: 0x0854
+packetLen(0x0854, -1) // CZ_GPK_AUTH
+
+// Packet: 0x0855
+packetLen(0x0855, 6) // ZC_MACRO_ITEMPICKUP_FAIL
+
+// Packet: 0x0856
+packetLen(0x0856, -1) // ZC_NOTIFY_MOVEENTRY8
+
+// Packet: 0x0857
+packetLen(0x0857, -1) // ZC_NOTIFY_STANDENTRY7
+
+// Packet: 0x0858
+packetLen(0x0858, -1) // ZC_NOTIFY_NEWENTRY6
+
+// Packet: 0x0859
+packetLen(0x0859, -1) // ZC_EQUIPWIN_MICROSCOPE2
+
+// Packet: 0x085a
+#if PACKETVER >= 20151021
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20151014
+packetLen(0x085a, 10) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20150513
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20150507
+packetLen(0x085a, 8) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20150415
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20150408
+packetLen(0x085a, 6) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20150204
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20150128
+packetLen(0x085a, -1) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20150107
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x085b
+#if PACKETVER >= 20151230
+packetLen(0x085b, -1) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20151223
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20151216
+packetLen(0x085b, 6) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20151209
+packetLen(0x085b, 36) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150909
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150902
+packetLen(0x085b, 7) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150805
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150729
+packetLen(0x085b, 8) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150225
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150217
+packetLen(0x085b, 36) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150107
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x085c
+#if PACKETVER >= 20151021
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20151014
+packetLen(0x085c, 7) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20151001
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150923
+packetLen(0x085c, 6) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150722
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150715
+packetLen(0x085c, 6) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150415
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150408
+packetLen(0x085c, 10) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150107
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#endif
+
+// Packet: 0x085d
+#if PACKETVER >= 20151216
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20151209
+packetLen(0x085d, 6) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20151118
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20151111
+packetLen(0x085d, -1) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20151001
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20150923
+packetLen(0x085d, 26) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20150909
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20150902
+packetLen(0x085d, 6) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20150826
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20150819
+packetLen(0x085d, 8) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20150401
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20150325
+packetLen(0x085d, 6) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20150107
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x085e
+#if PACKETVER >= 20151216
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20151209
+packetLen(0x085e, -1) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20151202
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20151125
+packetLen(0x085e, 6) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150923
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150916
+packetLen(0x085e, 8) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150715
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150708
+packetLen(0x085e, 8) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150527
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150520
+packetLen(0x085e, 6) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150422
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150415
+packetLen(0x085e, 4) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150408
+packetLen(0x085e, 5) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150401
+packetLen(0x085e, 12) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150107
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x085f
+#if PACKETVER >= 20151202
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20151125
+packetLen(0x085f, 8) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20150107
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x0860
+#if PACKETVER >= 20151104
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20151028
+packetLen(0x0860, 36) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20151021
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20151014
+packetLen(0x0860, 6) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20150805
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20150729
+packetLen(0x0860, 6) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20150610
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20150603
+packetLen(0x0860, 90) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20150107
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x0861
+#if PACKETVER >= 20151230
+packetLen(0x0861, 26) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20151216
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20151209
+packetLen(0x0861, -1) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20150916
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20150909
+packetLen(0x0861, 4) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20150902
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20150826
+packetLen(0x0861, 8) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20150107
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x0862
+#if PACKETVER >= 20151118
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20151111
+packetLen(0x0862, 6) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20151014
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20151007
+packetLen(0x0862, 4) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150826
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150819
+packetLen(0x0862, 8) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150325
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150318
+packetLen(0x0862, -1) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150311
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150304
+packetLen(0x0862, 8) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150217
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150211
+packetLen(0x0862, -1) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150107
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x0863
+#if PACKETVER >= 20151021
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20151014
+packetLen(0x0863, 5) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150909
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150902
+packetLen(0x0863, 10) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150422
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150415
+packetLen(0x0863, -1) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150325
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150318
+packetLen(0x0863, 6) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150217
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150211
+packetLen(0x0863, 10) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150107
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x0864
+#if PACKETVER >= 20151230
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20151223
+packetLen(0x0864, 6) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20151216
+packetLen(0x0864, 8) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20151001
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20150923
+packetLen(0x0864, 5) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20150610
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20150603
+packetLen(0x0864, 26) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20150520
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20150513
+packetLen(0x0864, 8) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20150507
+packetLen(0x0864, 26) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20150204
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20150128
+packetLen(0x0864, 10) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20150107
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x0865
+#if PACKETVER >= 20151223
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20151216
+packetLen(0x0865, 10) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150902
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150826
+packetLen(0x0865, 5) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150819
+packetLen(0x0865, 26) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150527
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150520
+packetLen(0x0865, 19) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150415
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150408
+packetLen(0x0865, 7) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150107
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0866
+#if PACKETVER >= 20151230
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20151223
+packetLen(0x0866, 19) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20151216
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20151209
+packetLen(0x0866, 5) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20150107
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0867
+#if PACKETVER >= 20151021
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20151014
+packetLen(0x0867, -1) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150610
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150603
+packetLen(0x0867, 8) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150507
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150429
+packetLen(0x0867, 36) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150422
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150415
+packetLen(0x0867, 26) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150304
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150225
+packetLen(0x0867, 18) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150107
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0868
+#if PACKETVER >= 20150527
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20150520
+packetLen(0x0868, -1) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20150422
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20150415
+packetLen(0x0868, 10) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20150408
+packetLen(0x0868, -1) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20150121
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20150114
+packetLen(0x0868, 26) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20150107
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0869
+#if PACKETVER >= 20151230
+packetLen(0x0869, 5) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20150923
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20150916
+packetLen(0x0869, 7) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20150729
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20150722
+packetLen(0x0869, 6) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20150624
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20150617
+packetLen(0x0869, 8) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20150422
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20150415
+packetLen(0x0869, 5) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20150107
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x086a
+#if PACKETVER >= 20151223
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20151216
+packetLen(0x086a, 8) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20151028
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20151021
+packetLen(0x086a, 26) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20150624
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20150617
+packetLen(0x086a, 18) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20150610
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20150603
+packetLen(0x086a, 8) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20150507
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20150429
+packetLen(0x086a, 19) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20150318
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20150311
+packetLen(0x086a, 6) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20150107
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x086b
+#if PACKETVER >= 20151125
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20151118
+packetLen(0x086b, 8) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20150902
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20150826
+packetLen(0x086b, 10) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20150624
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20150617
+packetLen(0x086b, 5) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20150415
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20150408
+packetLen(0x086b, -1) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20150107
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x086c
+#if PACKETVER >= 20150805
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20150729
+packetLen(0x086c, 8) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20150422
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20150415
+packetLen(0x086c, 7) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20150318
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20150311
+packetLen(0x086c, 36) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20150107
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x086d
+#if PACKETVER >= 20150805
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150729
+packetLen(0x086d, 18) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150708
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150701
+packetLen(0x086d, -1) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150311
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150304
+packetLen(0x086d, -1) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150204
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150128
+packetLen(0x086d, 8) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150107
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x086e
+#if PACKETVER >= 20151230
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20151223
+packetLen(0x086e, 10) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20151216
+packetLen(0x086e, 26) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20150805
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20150729
+packetLen(0x086e, 5) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20150415
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20150408
+packetLen(0x086e, 10) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20150107
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x086f
+#if PACKETVER >= 20151001
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150923
+packetLen(0x086f, 10) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150909
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150902
+packetLen(0x086f, 10) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150805
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150729
+packetLen(0x086f, 8) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150722
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150715
+packetLen(0x086f, 8) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150408
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150401
+packetLen(0x086f, 5) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150325
+packetLen(0x086f, -1) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150107
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x0870
+#if PACKETVER >= 20151223
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20151216
+packetLen(0x0870, -1) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20151209
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20151202
+packetLen(0x0870, 36) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20151001
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150923
+packetLen(0x0870, 5) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150902
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150826
+packetLen(0x0870, -1) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150805
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150729
+packetLen(0x0870, 6) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150701
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150624
+packetLen(0x0870, 36) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150610
+packetLen(0x0870, 26) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150217
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150211
+packetLen(0x0870, 6) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150204
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150128
+packetLen(0x0870, 5) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150107
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x0871
+#if PACKETVER >= 20151118
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20151111
+packetLen(0x0871, 26) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20150916
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20150909
+packetLen(0x0871, -1) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20150826
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20150819
+packetLen(0x0871, 18) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20150107
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x0872
+#if PACKETVER >= 20151230
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20151223
+packetLen(0x0872, 18)
+#elif PACKETVER >= 20151021
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20151014
+packetLen(0x0872, 5)
+#elif PACKETVER >= 20150715
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20150708
+packetLen(0x0872, 6)
+#elif PACKETVER >= 20150617
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20150610
+packetLen(0x0872, 6)
+#elif PACKETVER >= 20150107
+packetLen(0x0872, 2)
+#endif
+
+// Packet: 0x0873
+#if PACKETVER >= 20150923
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150916
+packetLen(0x0873, 90) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150722
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150715
+packetLen(0x0873, 6) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150610
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150603
+packetLen(0x0873, 7) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150325
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150318
+packetLen(0x0873, 36) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150217
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150211
+packetLen(0x0873, 5) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150107
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x0874
+#if PACKETVER >= 20151223
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20151216
+packetLen(0x0874, 90) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20151021
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20151014
+packetLen(0x0874, 10) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20150204
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20150128
+packetLen(0x0874, 6) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20150107
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x0875
+#if PACKETVER >= 20151230
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20151223
+packetLen(0x0875, 10) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20150408
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20150401
+packetLen(0x0875, -1) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20150204
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20150128
+packetLen(0x0875, -1) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20150107
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x0876
+#if PACKETVER >= 20151230
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20151223
+packetLen(0x0876, 6) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20150204
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20150128
+packetLen(0x0876, 5) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20150107
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x0877
+#if PACKETVER >= 20150923
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20150916
+packetLen(0x0877, 5) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20150617
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20150610
+packetLen(0x0877, 6) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20150603
+packetLen(0x0877, -1) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20150107
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x0878
+#if PACKETVER >= 20150729
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20150722
+packetLen(0x0878, 10) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20150415
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20150408
+packetLen(0x0878, 26) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20150107
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x0879
+#if PACKETVER >= 20151001
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20150923
+packetLen(0x0879, 8) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20150722
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20150715
+packetLen(0x0879, 19) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20150520
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20150513
+packetLen(0x0879, 8) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20150311
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20150304
+packetLen(0x0879, 5) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20150107
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x087a
+#if PACKETVER >= 20151216
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20151209
+packetLen(0x087a, 12) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150624
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150617
+packetLen(0x087a, 8) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150107
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x087b
+#if PACKETVER >= 20150916
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150909
+packetLen(0x087b, 18) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150902
+packetLen(0x087b, 5) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150826
+packetLen(0x087b, 6) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150729
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150722
+packetLen(0x087b, 18) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150318
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150311
+packetLen(0x087b, 18) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150217
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150211
+packetLen(0x087b, 6) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150107
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x087c
+#if PACKETVER >= 20150722
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20150715
+packetLen(0x087c, 6) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20150401
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20150325
+packetLen(0x087c, 8) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20150128
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20150121
+packetLen(0x087c, 4) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20150114
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20150107
+packetLen(0x087c, 26) // ZC_REASSEMBLY_AUTH35
+#endif
+
+// Packet: 0x087d
+#if PACKETVER >= 20150729
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20150722
+packetLen(0x087d, 5) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20150708
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20150701
+packetLen(0x087d, 6) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20150527
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20150520
+packetLen(0x087d, 12) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20150204
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20150128
+packetLen(0x087d, 6) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20150107
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x087e
+#if PACKETVER >= 20150729
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150722
+packetLen(0x087e, 6) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150708
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150701
+packetLen(0x087e, -1) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150617
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150610
+packetLen(0x087e, 6) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150415
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150408
+packetLen(0x087e, 6) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150401
+packetLen(0x087e, 8) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150325
+packetLen(0x087e, 5) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150311
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150304
+packetLen(0x087e, 19) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150107
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x087f
+#if PACKETVER >= 20151216
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20151209
+packetLen(0x087f, 6) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20150923
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20150916
+packetLen(0x087f, 12) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20150909
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20150902
+packetLen(0x087f, 4) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20150819
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20150812
+packetLen(0x087f, 36) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20150715
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20150708
+packetLen(0x087f, 4) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20150415
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20150408
+packetLen(0x087f, 90) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20150217
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20150211
+packetLen(0x087f, 36) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20150107
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#endif
+
+// Packet: 0x0880
+#if PACKETVER >= 20150805
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20150729
+packetLen(0x0880, 12) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20150722
+packetLen(0x0880, 6) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20150527
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20150520
+packetLen(0x0880, 26) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20150422
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20150415
+packetLen(0x0880, 8) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20150107
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x0881
+#if PACKETVER >= 20151230
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20151223
+packetLen(0x0881, 7) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20151021
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20151014
+packetLen(0x0881, 8) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20150923
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20150916
+packetLen(0x0881, -1) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20150805
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20150729
+packetLen(0x0881, 7) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20150610
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20150603
+packetLen(0x0881, 6) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20150107
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x0882
+#if PACKETVER >= 20150527
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20150520
+packetLen(0x0882, -1) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20150217
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20150211
+packetLen(0x0882, -1) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20150107
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x0883
+#if PACKETVER >= 20151202
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20151125
+packetLen(0x0883, 5) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20151021
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20151014
+packetLen(0x0883, 6) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150916
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150909
+packetLen(0x0883, 6) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150708
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150701
+packetLen(0x0883, -1) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150520
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150513
+packetLen(0x0883, 18) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150401
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150325
+packetLen(0x0883, 12) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150318
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150311
+packetLen(0x0883, -1) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150217
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150211
+packetLen(0x0883, 8) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150107
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x0884
+#if PACKETVER >= 20151230
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20151223
+packetLen(0x0884, 8) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20151202
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20151125
+packetLen(0x0884, 36) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20151021
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20151014
+packetLen(0x0884, -1) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20150729
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20150722
+packetLen(0x0884, 5) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20150715
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20150708
+packetLen(0x0884, 5) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20150617
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20150610
+packetLen(0x0884, 8) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20150603
+packetLen(0x0884, 4) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20150107
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x0885
+#if PACKETVER >= 20151223
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20151216
+packetLen(0x0885, 36) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20151202
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20151125
+packetLen(0x0885, 4) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20151118
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20151111
+packetLen(0x0885, 7) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150617
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150610
+packetLen(0x0885, 5) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150520
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150513
+packetLen(0x0885, 6) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150401
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150325
+packetLen(0x0885, 10) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150304
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150225
+packetLen(0x0885, 4) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150217
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150211
+packetLen(0x0885, 6) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20150107
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x0886
+#if PACKETVER >= 20151230
+packetLen(0x0886, 10) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20151223
+packetLen(0x0886, -1) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20151111
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20151104
+packetLen(0x0886, 6) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20151001
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150923
+packetLen(0x0886, 5) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150916
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150909
+packetLen(0x0886, 19) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150902
+packetLen(0x0886, 12) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150805
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150729
+packetLen(0x0886, 6) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150722
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150715
+packetLen(0x0886, 8) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150624
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150617
+packetLen(0x0886, 5) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150507
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150429
+packetLen(0x0886, 26) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150318
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150311
+packetLen(0x0886, 5) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150217
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150211
+packetLen(0x0886, 6) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20150107
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#endif
+
+// Packet: 0x0887
+#if PACKETVER >= 20151111
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20151104
+packetLen(0x0887, 6) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20150909
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20150902
+packetLen(0x0887, 8) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20150513
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20150507
+packetLen(0x0887, 8) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20150107
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x0888
+#if PACKETVER >= 20150826
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150819
+packetLen(0x0888, 5) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150617
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150610
+packetLen(0x0888, 19) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150415
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150408
+packetLen(0x0888, 8) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150204
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150128
+packetLen(0x0888, -1) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20150107
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x0889
+#if PACKETVER >= 20151021
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20151014
+packetLen(0x0889, 6) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20150513
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20150507
+packetLen(0x0889, 18) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20150415
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20150408
+packetLen(0x0889, 36) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20150325
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20150318
+packetLen(0x0889, 7) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20150107
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x088a
+#if PACKETVER >= 20150812
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20150805
+packetLen(0x088a, 36) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20150107
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x088b
+#if PACKETVER >= 20151223
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20151216
+packetLen(0x088b, 6) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20151125
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20151118
+packetLen(0x088b, 36) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20151111
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20151104
+packetLen(0x088b, 8) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20150902
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20150826
+packetLen(0x088b, 26) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20150610
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20150603
+packetLen(0x088b, 6) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20150128
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20150121
+packetLen(0x088b, 26) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20150107
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x088c
+#if PACKETVER >= 20151202
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20151125
+packetLen(0x088c, 6) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150617
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150610
+packetLen(0x088c, 8) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150527
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150520
+packetLen(0x088c, -1) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150408
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150401
+packetLen(0x088c, 6) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150325
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150318
+packetLen(0x088c, 12) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20150107
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x088d
+#if PACKETVER >= 20151230
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20151223
+packetLen(0x088d, 5) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20151202
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20151125
+packetLen(0x088d, 19) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20151111
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20151104
+packetLen(0x088d, 5) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150909
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150902
+packetLen(0x088d, 8) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150826
+packetLen(0x088d, 26) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150729
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150722
+packetLen(0x088d, 6) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150617
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150610
+packetLen(0x088d, 18) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20150107
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x088e
+#if PACKETVER >= 20151230
+packetLen(0x088e, 26) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20151216
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20151209
+packetLen(0x088e, 10) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20151021
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20151014
+packetLen(0x088e, 8) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20151001
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20150923
+packetLen(0x088e, 6) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20150422
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20150415
+packetLen(0x088e, 10) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20150107
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x088f
+#if PACKETVER >= 20151216
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20151209
+packetLen(0x088f, 8) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150916
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150909
+packetLen(0x088f, 26) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150617
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150610
+packetLen(0x088f, 5) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150507
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150429
+packetLen(0x088f, 5) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150408
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150401
+packetLen(0x088f, 6) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20150107
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0890
+#if PACKETVER >= 20151230
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20151223
+packetLen(0x0890, -1) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20150107
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0891
+#if PACKETVER >= 20151230
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20151223
+packetLen(0x0891, -1) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150902
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150826
+packetLen(0x0891, 10) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150422
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150415
+packetLen(0x0891, 6) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150408
+packetLen(0x0891, -1) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150401
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150325
+packetLen(0x0891, 6) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20150107
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0892
+#if PACKETVER >= 20151001
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20150923
+packetLen(0x0892, -1) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20150909
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20150902
+packetLen(0x0892, -1) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20150311
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20150304
+packetLen(0x0892, 36) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20150107
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0893
+#if PACKETVER >= 20150708
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20150701
+packetLen(0x0893, 4) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20150401
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20150325
+packetLen(0x0893, 8) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20150107
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x0894
+#if PACKETVER >= 20151216
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20151209
+packetLen(0x0894, 10) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20150624
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20150617
+packetLen(0x0894, 4) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20150507
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20150429
+packetLen(0x0894, 6) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20150107
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x0895
+#if PACKETVER >= 20151001
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20150923
+packetLen(0x0895, 4) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20150916
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20150909
+packetLen(0x0895, 26) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20150722
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20150715
+packetLen(0x0895, -1) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20150408
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20150401
+packetLen(0x0895, 8) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20150114
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20150107
+packetLen(0x0895, 36) // CZ_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x0896
+#if PACKETVER >= 20150722
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20150715
+packetLen(0x0896, 90) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20150318
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20150311
+packetLen(0x0896, 7) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20150304
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20150225
+packetLen(0x0896, -1) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20150107
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x0897
+#if PACKETVER >= 20151230
+packetLen(0x0897, 6) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150909
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150902
+packetLen(0x0897, 8) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150722
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150715
+packetLen(0x0897, 26) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150617
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150610
+packetLen(0x0897, 26) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150603
+packetLen(0x0897, -1) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150401
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150325
+packetLen(0x0897, -1) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20150107
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x0898
+#if PACKETVER >= 20151230
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20151223
+packetLen(0x0898, 90) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20150422
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20150415
+packetLen(0x0898, -1) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20150408
+packetLen(0x0898, 6) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20150401
+packetLen(0x0898, 5) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20150107
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x0899
+#if PACKETVER >= 20151202
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20151125
+packetLen(0x0899, 26) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150909
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150902
+packetLen(0x0899, 6) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150729
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150722
+packetLen(0x0899, 8) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150507
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150429
+packetLen(0x0899, 8) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150401
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150325
+packetLen(0x0899, 18) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150121
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150114
+packetLen(0x0899, 5) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20150107
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x089a
+#if PACKETVER >= 20151021
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20151014
+packetLen(0x089a, 4) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150805
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150729
+packetLen(0x089a, 10) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150722
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150715
+packetLen(0x089a, 6) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150610
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150603
+packetLen(0x089a, 12) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150311
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150304
+packetLen(0x089a, 26) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150204
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150128
+packetLen(0x089a, 18) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20150107
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x089b
+#if PACKETVER >= 20151001
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20150923
+packetLen(0x089b, 10) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20150916
+packetLen(0x089b, 18) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20150805
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20150729
+packetLen(0x089b, 26) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20150304
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20150225
+packetLen(0x089b, 8) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20150107
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x089c
+#if PACKETVER >= 20151202
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20151125
+packetLen(0x089c, 7) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20151118
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20151111
+packetLen(0x089c, 5) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20150923
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20150916
+packetLen(0x089c, 6) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20150527
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20150520
+packetLen(0x089c, 36) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20150415
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20150408
+packetLen(0x089c, 5) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20150401
+packetLen(0x089c, 36) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20150325
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20150318
+packetLen(0x089c, 8) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20150304
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20150225
+packetLen(0x089c, 8) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20150217
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20150211
+packetLen(0x089c, 18) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20150107
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#endif
+
+// Packet: 0x089d
+#if PACKETVER >= 20151223
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20151216
+packetLen(0x089d, 7) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150715
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150708
+packetLen(0x089d, 5) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150610
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150603
+packetLen(0x089d, -1) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150128
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150121
+packetLen(0x089d, 5) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20150107
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x089e
+#if PACKETVER >= 20151223
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20151216
+packetLen(0x089e, 6) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20150923
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20150916
+packetLen(0x089e, 26) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20150610
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20150603
+packetLen(0x089e, 6) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20150527
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20150520
+packetLen(0x089e, 6) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20150128
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20150121
+packetLen(0x089e, 5) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20150107
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x089f
+#if PACKETVER >= 20151202
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20151125
+packetLen(0x089f, -1) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20151021
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20151014
+packetLen(0x089f, 5) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20151001
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20150923
+packetLen(0x089f, 8) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20150507
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20150429
+packetLen(0x089f, -1) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20150107
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x08a0
+#if PACKETVER >= 20151001
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20150923
+packetLen(0x08a0, 6) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20150902
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20150826
+packetLen(0x08a0, 12) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20150708
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20150701
+packetLen(0x08a0, 6) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20150617
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20150610
+packetLen(0x08a0, 36) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20150422
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20150415
+packetLen(0x08a0, -1) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20150217
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20150211
+packetLen(0x08a0, 26) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20150107
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x08a1
+#if PACKETVER >= 20151216
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20151209
+packetLen(0x08a1, 5) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20150902
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20150826
+packetLen(0x08a1, 8) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20150610
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20150603
+packetLen(0x08a1, 10) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20150401
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20150325
+packetLen(0x08a1, 7) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20150318
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20150311
+packetLen(0x08a1, 10) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20150107
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x08a2
+#if PACKETVER >= 20151223
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20151216
+packetLen(0x08a2, 5) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20151001
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20150923
+packetLen(0x08a2, 19) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20150527
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20150520
+packetLen(0x08a2, 6) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20150415
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20150408
+packetLen(0x08a2, 6) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20150107
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x08a3
+#if PACKETVER >= 20151111
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20151104
+packetLen(0x08a3, 4) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20150805
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20150729
+packetLen(0x08a3, 4) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20150318
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20150311
+packetLen(0x08a3, 6) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20150107
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x08a4
+#if PACKETVER >= 20150902
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150826
+packetLen(0x08a4, 6) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150805
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150729
+packetLen(0x08a4, 5) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150722
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150715
+packetLen(0x08a4, 4) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150708
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150701
+packetLen(0x08a4, 6) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150415
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150408
+packetLen(0x08a4, 26) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150325
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150318
+packetLen(0x08a4, -1) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150304
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150225
+packetLen(0x08a4, 36) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150217
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150211
+packetLen(0x08a4, 19) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20150107
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x08a5
+#if PACKETVER >= 20151111
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20151104
+packetLen(0x08a5, 26) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20151001
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150923
+packetLen(0x08a5, 6) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150715
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150708
+packetLen(0x08a5, -1) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150701
+packetLen(0x08a5, 26) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150408
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150401
+packetLen(0x08a5, 8) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150318
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150311
+packetLen(0x08a5, 12) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20150107
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x08a6
+#if PACKETVER >= 20151001
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20150923
+packetLen(0x08a6, 12) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20150708
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20150701
+packetLen(0x08a6, 10) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20150507
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20150429
+packetLen(0x08a6, 8) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20150318
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20150311
+packetLen(0x08a6, 26) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20150107
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#endif
+
+// Packet: 0x08a7
+#if PACKETVER >= 20150401
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20150325
+packetLen(0x08a7, 90) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20150107
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x08a8
+#if PACKETVER >= 20150902
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150826
+packetLen(0x08a8, -1) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150729
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150722
+packetLen(0x08a8, 5) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150520
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150513
+packetLen(0x08a8, 26) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150507
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150429
+packetLen(0x08a8, 4) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20150107
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x08a9
+#if PACKETVER >= 20151223
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20151216
+packetLen(0x08a9, 6) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20151202
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20151125
+packetLen(0x08a9, 6) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20150909
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20150902
+packetLen(0x08a9, 6) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20150107
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#endif
+
+// Packet: 0x08aa
+#if PACKETVER >= 20151230
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20151223
+packetLen(0x08aa, 26) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20151021
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20151014
+packetLen(0x08aa, 6) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20150217
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20150211
+packetLen(0x08aa, 7) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20150107
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x08ab
+#if PACKETVER >= 20151125
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20151118
+packetLen(0x08ab, 8) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20150204
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20150128
+packetLen(0x08ab, 6) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20150121
+packetLen(0x08ab, 36) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20150107
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x08ac
+#if PACKETVER >= 20151223
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20151216
+packetLen(0x08ac, 8) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20150923
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20150916
+packetLen(0x08ac, 6) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20150805
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20150729
+packetLen(0x08ac, 26) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20150722
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20150715
+packetLen(0x08ac, 5) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20150617
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20150610
+packetLen(0x08ac, 6) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20150107
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x08ad
+#if PACKETVER >= 20151202
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20151125
+packetLen(0x08ad, -1) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150805
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150729
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150715
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150708
+packetLen(0x08ad, 36) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150701
+packetLen(0x08ad, 10) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150610
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150603
+packetLen(0x08ad, 19) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150527
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150520
+packetLen(0x08ad, 5) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150507
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150429
+packetLen(0x08ad, 18) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20150107
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x08af
+packetLen(0x08af, 10) // HC_WAITING_LOGIN
+
+// Packet: 0x08b0
+packetLen(0x08b0, 17) // CH_WAITING_LOGIN
+
+// Packet: 0x08b1
+packetLen(0x08b1, -1) // ZC_MCSTORE_NOTMOVEITEM_LIST
+
+// Packet: 0x08b2
+packetLen(0x08b2, -1) // AC_REALNAME_AUTH
+
+// Packet: 0x08b3
+packetLen(0x08b3, -1) // ZC_SHOWSCRIPT
+
+// Packet: 0x08b4
+packetLen(0x08b4, 2) // ZC_START_COLLECTION
+
+// Packet: 0x08b5
+packetLen(0x08b5, 6) // CZ_TRYCOLLECTION
+
+// Packet: 0x08b6
+packetLen(0x08b6, 3) // ZC_TRYCOLLECTION
+
+// Packet: 0x08b8
+packetLen(0x08b8, 10) // CH_SECOND_PASSWD_ACK
+
+// Packet: 0x08b9
+packetLen(0x08b9, 12) // HC_SECOND_PASSWD_LOGIN
+
+// Packet: 0x08ba
+packetLen(0x08ba, 10) // CH_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bb
+packetLen(0x08bb, 8) // HC_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bc
+packetLen(0x08bc, 10) // CH_DELETE_SECOND_PASSWD
+
+// Packet: 0x08bd
+packetLen(0x08bd, 8) // HC_DELETE_SECOND_PASSWD
+
+// Packet: 0x08be
+packetLen(0x08be, 14) // CH_EDIT_SECOND_PASSWD
+
+// Packet: 0x08bf
+packetLen(0x08bf, 8) // HC_EDIT_SECOND_PASSWD
+
+// Packet: 0x08c0
+packetLen(0x08c0, -1) // ZC_ACK_SE_CASH_ITEM_LIST2
+
+// Packet: 0x08c1
+packetLen(0x08c1, 2) // CZ_MACRO_START
+
+// Packet: 0x08c2
+packetLen(0x08c2, 2) // CZ_MACRO_STOP
+
+// Packet: 0x08c3
+packetLen(0x08c3, 10) // CH_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c4
+packetLen(0x08c4, 8) // HC_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c5
+packetLen(0x08c5, 6) // CH_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c6
+packetLen(0x08c6, 4) // HC_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c7
+packetLen(0x08c7, -1) // ZC_SKILL_ENTRY3
+
+// Packet: 0x08c8
+packetLen(0x08c8, 34) // ZC_NOTIFY_ACT3
+
+// Packet: 0x08c9
+packetLen(0x08c9, 2) // CZ_REQ_SCHEDULER_CASHITEM
+
+// Packet: 0x08ca
+packetLen(0x08ca, -1) // ZC_ACK_SCHEDULER_CASHITEM
+
+// Packet: 0x08cb
+packetLen(0x08cb, -1) // ZC_PERSONAL_INFOMATION
+
+// Packet: 0x08cc
+packetLen(0x08cc, 109) // CA_LOGIN5
+
+// Packet: 0x08cd
+packetLen(0x08cd, 10) // ZC_STOPMOVE_FORCE
+
+// Packet: 0x08ce
+packetLen(0x08ce, 2) // ZC_FAILED_GET_ITEM_FROM_ZONEDA
+
+// Packet: 0x08cf
+packetLen(0x08cf, 10) // ZC_SPIRITS_ATTRIBUTE
+
+// Packet: 0x08d0
+packetLen(0x08d0, 9) // ZC_REQ_WEAR_EQUIP_ACK2
+
+// Packet: 0x08d1
+packetLen(0x08d1, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK2
+
+// Packet: 0x08d2
+packetLen(0x08d2, 10) // ZC_FASTMOVE
+
+// Packet: 0x08d3
+packetLen(0x08d3, 10) // ZC_SE_CASHSHOP_UPDATE
+
+// Packet: 0x08d4
+packetLen(0x08d4, 8) // CH_REQ_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d5
+packetLen(0x08d5, -1) // HC_ACK_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d6
+packetLen(0x08d6, 6) // ZC_CLEAR_DIALOG
+
+// Packet: 0x08d7
+packetLen(0x08d7, 28) // CZ_REQ_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d8
+packetLen(0x08d8, 27) // ZC_ACK_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d9
+packetLen(0x08d9, 30) // ZC_NOTIFY_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08da
+packetLen(0x08da, 26) // CZ_REQ_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08db
+packetLen(0x08db, 27) // ZC_ACK_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08dc
+packetLen(0x08dc, 26) // ZC_NOTIFY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08dd
+packetLen(0x08dd, 27) // CZ_REPLY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08de
+packetLen(0x08de, 27) // ZC_REPLY_ACK_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08df
+packetLen(0x08df, 50) // ZC_NOTIFY_LOBBY_ADMISSION
+
+// Packet: 0x08e0
+packetLen(0x08e0, 51) // CZ_REPLY_LOBBY_ADMISSION
+
+// Packet: 0x08e1
+packetLen(0x08e1, 51) // ZC_REPLY_ACK_LOBBY_ADMISSION
+
+// Packet: 0x08e2
+packetLen(0x08e2, 27) // ZC_NAVIGATION_ACTIVE
+
+// Packet: 0x08e3
+packetLen(0x08e3, 149) // HC_UPDATE_CHARINFO
+
+// Packet: 0x08e4
+packetLen(0x08e4, 6) // AC_SHUTDOWN_INFO
+
+// Packet: 0x08fc
+packetLen(0x08fc, 30) // CH_REQ_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fd
+packetLen(0x08fd, 6) // CH_ACK_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fe
+packetLen(0x08fe, -1) // ZC_HUNTING_QUEST_INFO
+
+// Packet: 0x08ff
+packetLen(0x08ff, 24) // ZC_EFST_SET_ENTER
+
+// Packet: 0x0900
+packetLen(0x0900, -1) // ZC_INVENTORY_ITEMLIST_NORMAL
+
+// Packet: 0x0901
+packetLen(0x0901, -1) // ZC_INVENTORY_ITEMLIST_EQUIP
+
+// Packet: 0x0902
+packetLen(0x0902, -1) // ZC_CART_ITEMLIST_NORMAL
+
+// Packet: 0x0903
+packetLen(0x0903, -1) // ZC_CART_ITEMLIST_EQUIP
+
+// Packet: 0x0904
+packetLen(0x0904, -1) // ZC_STORE_ITEMLIST_NORMAL
+
+// Packet: 0x0905
+packetLen(0x0905, -1) // ZC_STORE_ITEMLIST_EQUIP
+
+// Packet: 0x0906
+packetLen(0x0906, -1) // ZC_MICROSCOPE
+
+// Packet: 0x0907
+packetLen(0x0907, 5) // CZ_INVENTORY_TAB
+
+// Packet: 0x0908
+packetLen(0x0908, 5) // ZC_INVENTORY_TAB
+
+// Packet: 0x090a
+packetLen(0x090a, 26) // CZ_REQ_ENTRY_QUEUE_RANKING
+
+// Packet: 0x090d
+packetLen(0x090d, -1) // ZC_PREMIUM_CAMPAIGN_INFO
+
+// Packet: 0x090e
+packetLen(0x090e, 2) // ZC_ENTRY_QUEUE_INIT
+
+// Packet: 0x090f
+packetLen(0x090f, -1) // ZC_NOTIFY_NEWENTRY7
+
+// Packet: 0x0910
+packetLen(0x0910, 10) // CZ_REQ_PARTY_NAME
+
+// Packet: 0x0911
+packetLen(0x0911, 30) // ZC_ACK_PARTY_NAME
+
+// Packet: 0x0912
+packetLen(0x0912, 10) // CZ_REQ_GUILD_NAME
+
+// Packet: 0x0913
+packetLen(0x0913, 30) // ZC_ACK_GUILD_NAME
+
+// Packet: 0x0914
+packetLen(0x0914, -1) // ZC_NOTIFY_MOVEENTRY9
+
+// Packet: 0x0915
+packetLen(0x0915, -1) // ZC_NOTIFY_STANDENTRY8
+
+// Packet: 0x0916
+packetLen(0x0916, 26) // CZ_REQ_JOIN_GUILD2
+
+// Packet: 0x0917
+#if PACKETVER >= 20150722
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20150715
+packetLen(0x0917, 12) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20150107
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#endif
+
+// Packet: 0x0918
+#if PACKETVER >= 20150128
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20150121
+packetLen(0x0918, 8) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20150107
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#endif
+
+// Packet: 0x0919
+#if PACKETVER >= 20150826
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150819
+packetLen(0x0919, 8) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150729
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150722
+packetLen(0x0919, 4) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150708
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150701
+packetLen(0x0919, 36) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150401
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150325
+packetLen(0x0919, 36) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150217
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150211
+packetLen(0x0919, 90) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150128
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150121
+packetLen(0x0919, 6) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150107
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#endif
+
+// Packet: 0x091a
+#if PACKETVER >= 20151230
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20151223
+packetLen(0x091a, 6) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20150107
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#endif
+
+// Packet: 0x091b
+#if PACKETVER >= 20151230
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20151223
+packetLen(0x091b, 26) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20150610
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20150603
+packetLen(0x091b, 6) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20150415
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20150408
+packetLen(0x091b, 4) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20150401
+packetLen(0x091b, 26) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20150107
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#endif
+
+// Packet: 0x091c
+#if PACKETVER >= 20151021
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20151014
+packetLen(0x091c, 26) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20150527
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20150520
+packetLen(0x091c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20150408
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20150401
+packetLen(0x091c, 90) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20150318
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20150311
+packetLen(0x091c, 90) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20150107
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#endif
+
+// Packet: 0x091d
+#if PACKETVER >= 20151230
+packetLen(0x091d, 8) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20151223
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20151216
+packetLen(0x091d, 26) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20151028
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20151021
+packetLen(0x091d, 5) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20151014
+packetLen(0x091d, 36) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20150527
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20150520
+packetLen(0x091d, 7) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20150325
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20150318
+packetLen(0x091d, 8) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20150128
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20150121
+packetLen(0x091d, 6) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20150107
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#endif
+
+// Packet: 0x091e
+#if PACKETVER >= 20151001
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20150923
+packetLen(0x091e, 8) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20150826
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20150819
+packetLen(0x091e, 36) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20150415
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20150408
+packetLen(0x091e, -1) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20150107
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#endif
+
+// Packet: 0x091f
+#if PACKETVER >= 20150715
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20150708
+packetLen(0x091f, 18) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20150204
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20150128
+packetLen(0x091f, 6) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20150107
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#endif
+
+// Packet: 0x0920
+#if PACKETVER >= 20151230
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20151223
+packetLen(0x0920, 5) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20151216
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20151209
+packetLen(0x0920, -1) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20151202
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20151125
+packetLen(0x0920, 6) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20150923
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20150916
+packetLen(0x0920, -1) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20150325
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20150318
+packetLen(0x0920, 6) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20150217
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20150211
+packetLen(0x0920, 6) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20150107
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#endif
+
+// Packet: 0x0921
+#if PACKETVER >= 20151125
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20151118
+packetLen(0x0921, 26) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20150729
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20150722
+packetLen(0x0921, 8) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20150107
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#endif
+
+// Packet: 0x0922
+#if PACKETVER >= 20150610
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20150603
+packetLen(0x0922, 36) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20150422
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20150415
+packetLen(0x0922, 8) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20150408
+packetLen(0x0922, 5) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20150401
+packetLen(0x0922, -1) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20150107
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#endif
+
+// Packet: 0x0923
+#if PACKETVER >= 20151230
+packetLen(0x0923, 36) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20151223
+packetLen(0x0923, 5) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20150909
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20150902
+packetLen(0x0923, 26) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20150708
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20150701
+packetLen(0x0923, 8) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20150520
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20150513
+packetLen(0x0923, 36) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20150107
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#endif
+
+// Packet: 0x0924
+#if PACKETVER >= 20151230
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20151223
+packetLen(0x0924, 6) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150923
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150916
+packetLen(0x0924, 26) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150902
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150826
+packetLen(0x0924, 6) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150527
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150520
+packetLen(0x0924, 8) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150513
+packetLen(0x0924, 5) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150507
+packetLen(0x0924, 19) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150408
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150401
+packetLen(0x0924, 18) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150107
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#endif
+
+// Packet: 0x0925
+#if PACKETVER >= 20151125
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20151118
+packetLen(0x0925, 19) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150729
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150722
+packetLen(0x0925, -1) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150617
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150610
+packetLen(0x0925, 6) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150107
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#endif
+
+// Packet: 0x0926
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+
+// Packet: 0x0927
+#if PACKETVER >= 20150826
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150819
+packetLen(0x0927, 19) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150520
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150513
+packetLen(0x0927, 4) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150325
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150318
+packetLen(0x0927, 5) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150204
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150128
+packetLen(0x0927, 26) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150107
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#endif
+
+// Packet: 0x0928
+#if PACKETVER >= 20151111
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20151104
+packetLen(0x0928, 5) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20150916
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20150909
+packetLen(0x0928, 8) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20150902
+packetLen(0x0928, 6) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20150708
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20150701
+packetLen(0x0928, 8) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20150325
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20150318
+packetLen(0x0928, 6) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20150311
+packetLen(0x0928, 5) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20150107
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#endif
+
+// Packet: 0x0929
+#if PACKETVER >= 20150507
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20150429
+packetLen(0x0929, 8) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20150204
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20150128
+packetLen(0x0929, 36) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20150107
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#endif
+
+// Packet: 0x092a
+#if PACKETVER >= 20151202
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20151125
+packetLen(0x092a, 10) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20150909
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20150902
+packetLen(0x092a, 5) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20150715
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20150708
+packetLen(0x092a, 8) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20150415
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20150408
+packetLen(0x092a, 8) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20150318
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20150311
+packetLen(0x092a, 8) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20150107
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#endif
+
+// Packet: 0x092b
+#if PACKETVER >= 20151001
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150923
+packetLen(0x092b, 6) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150805
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150729
+packetLen(0x092b, 90) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150617
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150610
+packetLen(0x092b, -1) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150527
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150520
+packetLen(0x092b, 5) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150107
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#endif
+
+// Packet: 0x092c
+#if PACKETVER >= 20150708
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20150701
+packetLen(0x092c, 5) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20150617
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20150610
+packetLen(0x092c, -1) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20150401
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20150325
+packetLen(0x092c, 6) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20150107
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#endif
+
+// Packet: 0x092d
+#if PACKETVER >= 20151216
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20151209
+packetLen(0x092d, 8) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150909
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150902
+packetLen(0x092d, 26) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150610
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150603
+packetLen(0x092d, 6) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150114
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150107
+packetLen(0x092d, 5) // ZC_REASSEMBLY_AUTH65
+#endif
+
+// Packet: 0x092e
+#if PACKETVER >= 20151202
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20151125
+packetLen(0x092e, 10) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20151118
+packetLen(0x092e, 5) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150902
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150826
+packetLen(0x092e, 90) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150729
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150722
+packetLen(0x092e, 26) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150617
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150610
+packetLen(0x092e, 4) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150513
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150507
+packetLen(0x092e, -1) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150422
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150415
+packetLen(0x092e, 6) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150318
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150311
+packetLen(0x092e, 8) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150107
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#endif
+
+// Packet: 0x092f
+#if PACKETVER >= 20151125
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20151118
+packetLen(0x092f, 8) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20150923
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20150916
+packetLen(0x092f, 6) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20150805
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20150729
+packetLen(0x092f, 10) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20150107
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#endif
+
+// Packet: 0x0930
+#if PACKETVER >= 20151216
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20151209
+packetLen(0x0930, 6) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20151021
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20151014
+packetLen(0x0930, 90) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20151001
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20150923
+packetLen(0x0930, 6) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20150107
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#endif
+
+// Packet: 0x0931
+#if PACKETVER >= 20150527
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20150520
+packetLen(0x0931, 90) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20150401
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20150325
+packetLen(0x0931, -1) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20150107
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#endif
+
+// Packet: 0x0932
+#if PACKETVER >= 20151216
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20151209
+packetLen(0x0932, -1) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20150401
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20150325
+packetLen(0x0932, 5) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20150107
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#endif
+
+// Packet: 0x0933
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+
+// Packet: 0x0934
+#if PACKETVER >= 20151021
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20151014
+packetLen(0x0934, -1) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20150923
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20150916
+packetLen(0x0934, 8) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20150107
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#endif
+
+// Packet: 0x0935
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+
+// Packet: 0x0936
+#if PACKETVER >= 20151001
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150923
+packetLen(0x0936, 90) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150916
+packetLen(0x0936, 5) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150527
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150520
+packetLen(0x0936, 10) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150325
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150318
+packetLen(0x0936, 10) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150107
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#endif
+
+// Packet: 0x0937
+#if PACKETVER >= 20150325
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20150318
+packetLen(0x0937, 10) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20150107
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#endif
+
+// Packet: 0x0938
+#if PACKETVER >= 20150923
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20150916
+packetLen(0x0938, 4) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20150401
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20150325
+packetLen(0x0938, 5) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20150318
+packetLen(0x0938, 26) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20150204
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20150128
+packetLen(0x0938, 4) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20150107
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#endif
+
+// Packet: 0x0939
+#if PACKETVER >= 20151202
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20151125
+packetLen(0x0939, 6) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20151111
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20151104
+packetLen(0x0939, 8) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20150408
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20150401
+packetLen(0x0939, 19) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20150107
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#endif
+
+// Packet: 0x093a
+#if PACKETVER >= 20151230
+packetLen(0x093a, 4) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20151111
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20151104
+packetLen(0x093a, -1) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150805
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150729
+packetLen(0x093a, 6) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150408
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150401
+packetLen(0x093a, 10) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150325
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150318
+packetLen(0x093a, 5) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150311
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150304
+packetLen(0x093a, 18) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150204
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150128
+packetLen(0x093a, 10) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150107
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#endif
+
+// Packet: 0x093b
+#if PACKETVER >= 20151216
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20151209
+packetLen(0x093b, 8) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20151001
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20150923
+packetLen(0x093b, 26) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20150902
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20150826
+packetLen(0x093b, 6) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20150513
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20150507
+packetLen(0x093b, 5) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20150408
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20150401
+packetLen(0x093b, -1) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20150318
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20150311
+packetLen(0x093b, 26) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20150107
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#endif
+
+// Packet: 0x093c
+#if PACKETVER >= 20151125
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20151118
+packetLen(0x093c, 6) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20150729
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20150722
+packetLen(0x093c, -1) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20150715
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20150708
+packetLen(0x093c, 26) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20150422
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20150415
+packetLen(0x093c, 6) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20150325
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20150318
+packetLen(0x093c, 6) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20150107
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#endif
+
+// Packet: 0x093d
+#if PACKETVER >= 20150729
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20150722
+packetLen(0x093d, 12) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20150527
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20150520
+packetLen(0x093d, 26) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20150507
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20150429
+packetLen(0x093d, 26) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20150107
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#endif
+
+// Packet: 0x093e
+#if PACKETVER >= 20151202
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20151125
+packetLen(0x093e, 12) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150923
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150916
+packetLen(0x093e, 10) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150722
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150715
+packetLen(0x093e, 5) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150708
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150701
+packetLen(0x093e, -1) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150617
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150610
+packetLen(0x093e, 7) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150422
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150415
+packetLen(0x093e, 12) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150107
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#endif
+
+// Packet: 0x093f
+#if PACKETVER >= 20151014
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20151007
+packetLen(0x093f, 5) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20150805
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20150729
+packetLen(0x093f, -1) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20150708
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20150701
+packetLen(0x093f, 12) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20150610
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20150603
+packetLen(0x093f, 18) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20150107
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#endif
+
+// Packet: 0x0940
+#if PACKETVER >= 20151111
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20151104
+packetLen(0x0940, 36) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20151028
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20151021
+packetLen(0x0940, 26) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150916
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150909
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150826
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150819
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150805
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150729
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150701
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150624
+packetLen(0x0940, 8) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150617
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150610
+packetLen(0x0940, 10) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150603
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150527
+packetLen(0x0940, 12) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150520
+packetLen(0x0940, 8) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150401
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150325
+packetLen(0x0940, 26) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150304
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150225
+packetLen(0x0940, -1) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150107
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#endif
+
+// Packet: 0x0941
+#if PACKETVER >= 20150923
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20150916
+packetLen(0x0941, 36) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20150902
+packetLen(0x0941, 5) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20150701
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20150624
+packetLen(0x0941, 26) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20150513
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20150507
+packetLen(0x0941, 8) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20150422
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20150415
+packetLen(0x0941, 19) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20150107
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#endif
+
+// Packet: 0x0942
+#if PACKETVER >= 20151118
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20151111
+packetLen(0x0942, 18) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20150923
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20150916
+packetLen(0x0942, 6) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20150513
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20150507
+packetLen(0x0942, 4) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20150107
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#endif
+
+// Packet: 0x0943
+#if PACKETVER >= 20151125
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20151118
+packetLen(0x0943, 6) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150507
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150429
+packetLen(0x0943, 6) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150318
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150311
+packetLen(0x0943, 6) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150114
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20150107
+packetLen(0x0943, 5) // CZ_REASSEMBLY_AUTH45
+#endif
+
+// Packet: 0x0944
+#if PACKETVER >= 20151223
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20151216
+packetLen(0x0944, -1) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20151021
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20151014
+packetLen(0x0944, 12) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20150722
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20150715
+packetLen(0x0944, 26) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20150217
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20150211
+packetLen(0x0944, -1) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20150204
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20150128
+packetLen(0x0944, 19) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20150107
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#endif
+
+// Packet: 0x0945
+#if PACKETVER >= 20150902
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20150826
+packetLen(0x0945, 5) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20150527
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20150520
+packetLen(0x0945, 6) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20150107
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#endif
+
+// Packet: 0x0946
+#if PACKETVER >= 20151125
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20151118
+packetLen(0x0946, -1) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20150708
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20150701
+packetLen(0x0946, 6) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20150617
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20150610
+packetLen(0x0946, 90) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20150408
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20150401
+packetLen(0x0946, 4) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20150318
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20150311
+packetLen(0x0946, 4) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20150304
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20150225
+packetLen(0x0946, 26) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20150121
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20150114
+packetLen(0x0946, 36) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20150107
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#endif
+
+// Packet: 0x0947
+#if PACKETVER >= 20151223
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20151216
+packetLen(0x0947, 19) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20150909
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20150902
+packetLen(0x0947, 90) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20150311
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20150304
+packetLen(0x0947, 8) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20150114
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20150107
+packetLen(0x0947, 19) // CZ_REASSEMBLY_AUTH49
+#endif
+
+// Packet: 0x0948
+#if PACKETVER >= 20151216
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20151209
+packetLen(0x0948, 19) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20150923
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20150916
+packetLen(0x0948, -1) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20150304
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20150225
+packetLen(0x0948, 6) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20150107
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#endif
+
+// Packet: 0x0949
+#if PACKETVER >= 20151230
+packetLen(0x0949, 5) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20151223
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20151216
+packetLen(0x0949, -1) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20150617
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20150610
+packetLen(0x0949, 10) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20150408
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20150401
+packetLen(0x0949, 6) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20150107
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#endif
+
+// Packet: 0x094a
+#if PACKETVER >= 20151216
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20151209
+packetLen(0x094a, 18) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20151118
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20151111
+packetLen(0x094a, 6) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20150520
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20150513
+packetLen(0x094a, 26) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20150401
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20150325
+packetLen(0x094a, 19) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20150107
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#endif
+
+// Packet: 0x094b
+#if PACKETVER >= 20150408
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20150401
+packetLen(0x094b, 10) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20150107
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#endif
+
+// Packet: 0x094c
+#if PACKETVER >= 20150729
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20150722
+packetLen(0x094c, 10) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20150325
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20150318
+packetLen(0x094c, 5) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20150107
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#endif
+
+// Packet: 0x094d
+#if PACKETVER >= 20150422
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20150415
+packetLen(0x094d, 5) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20150107
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#endif
+
+// Packet: 0x094e
+#if PACKETVER >= 20151230
+packetLen(0x094e, 6) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150708
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150701
+packetLen(0x094e, 6) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150624
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150617
+packetLen(0x094e, 26) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150527
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150520
+packetLen(0x094e, 10) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150204
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150128
+packetLen(0x094e, 8) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20150107
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#endif
+
+// Packet: 0x094f
+#if PACKETVER >= 20150923
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150916
+packetLen(0x094f, 8) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150909
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150902
+packetLen(0x094f, 6) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150826
+packetLen(0x094f, 5) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150805
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150729
+packetLen(0x094f, 19) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150722
+packetLen(0x094f, 8) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150415
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150408
+packetLen(0x094f, 18) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150304
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150225
+packetLen(0x094f, 5) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20150107
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#endif
+
+// Packet: 0x0950
+#if PACKETVER >= 20150722
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20150715
+packetLen(0x0950, 6) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20150401
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20150325
+packetLen(0x0950, -1) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20150107
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#endif
+
+// Packet: 0x0951
+#if PACKETVER >= 20151202
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20151125
+packetLen(0x0951, 5) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20151001
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150923
+packetLen(0x0951, 7) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150902
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150826
+packetLen(0x0951, 6) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150729
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150722
+packetLen(0x0951, -1) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150325
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150318
+packetLen(0x0951, 6) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150217
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150211
+packetLen(0x0951, -1) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20150107
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#endif
+
+// Packet: 0x0952
+#if PACKETVER >= 20150304
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20150225
+packetLen(0x0952, 8) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20150204
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20150128
+packetLen(0x0952, 90) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20150107
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#endif
+
+// Packet: 0x0953
+#if PACKETVER >= 20150909
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20150902
+packetLen(0x0953, -1) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20150513
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20150507
+packetLen(0x0953, 36) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20150422
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20150415
+packetLen(0x0953, -1) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20150408
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20150401
+packetLen(0x0953, 26) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20150107
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#endif
+
+// Packet: 0x0954
+#if PACKETVER >= 20151223
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20151216
+packetLen(0x0954, -1) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20150708
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20150701
+packetLen(0x0954, 5) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20150401
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20150325
+packetLen(0x0954, 6) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20150107
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#endif
+
+// Packet: 0x0955
+#if PACKETVER >= 20150805
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150729
+packetLen(0x0955, -1) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150610
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150603
+packetLen(0x0955, 5) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150513
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150507
+packetLen(0x0955, 6) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150429
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150422
+packetLen(0x0955, 36) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150415
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150408
+packetLen(0x0955, 6) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150304
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150225
+packetLen(0x0955, 5) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150128
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150121
+packetLen(0x0955, 8) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150114
+packetLen(0x0955, 4) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20150107
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#endif
+
+// Packet: 0x0956
+#if PACKETVER >= 20151216
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20151209
+packetLen(0x0956, 90) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20151202
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20151125
+packetLen(0x0956, 26) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20151021
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20151014
+packetLen(0x0956, 6) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20150722
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20150715
+packetLen(0x0956, 36) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20150708
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20150701
+packetLen(0x0956, 90) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20150107
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#endif
+
+// Packet: 0x0957
+#if PACKETVER >= 20151202
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20151125
+packetLen(0x0957, 8) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20151118
+packetLen(0x0957, 4) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150617
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150610
+packetLen(0x0957, 6) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150415
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150408
+packetLen(0x0957, 19) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150318
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150311
+packetLen(0x0957, 6) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150217
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150211
+packetLen(0x0957, 26) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150121
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150114
+packetLen(0x0957, 5) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20150107
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#endif
+
+// Packet: 0x0958
+#if PACKETVER >= 20151118
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20151111
+packetLen(0x0958, 8) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150729
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150722
+packetLen(0x0958, 36) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150708
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150701
+packetLen(0x0958, 7) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150520
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150513
+packetLen(0x0958, 6) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150507
+packetLen(0x0958, 26) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150318
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150311
+packetLen(0x0958, 6) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150217
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150211
+packetLen(0x0958, 8) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20150107
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#endif
+
+// Packet: 0x0959
+#if PACKETVER >= 20151202
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20151125
+packetLen(0x0959, 90) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20150902
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20150826
+packetLen(0x0959, -1) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20150415
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20150408
+packetLen(0x0959, 6) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20150325
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20150318
+packetLen(0x0959, -1) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20150128
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20150121
+packetLen(0x0959, 19) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20150107
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#endif
+
+// Packet: 0x095a
+#if PACKETVER >= 20150923
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20150916
+packetLen(0x095a, 6) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20150107
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#endif
+
+// Packet: 0x095b
+#if PACKETVER >= 20150909
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20150902
+packetLen(0x095b, 19) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20150715
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20150708
+packetLen(0x095b, 6) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20150527
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20150520
+packetLen(0x095b, 5) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20150318
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20150311
+packetLen(0x095b, -1) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20150107
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#endif
+
+// Packet: 0x095c
+#if PACKETVER >= 20151216
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20151209
+packetLen(0x095c, 4) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20151125
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20151118
+packetLen(0x095c, 18) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20150422
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20150415
+packetLen(0x095c, 26) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20150107
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#endif
+
+// Packet: 0x095d
+#if PACKETVER >= 20150617
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20150610
+packetLen(0x095d, 12) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20150311
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20150304
+packetLen(0x095d, 8) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20150107
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#endif
+
+// Packet: 0x095e
+#if PACKETVER >= 20151230
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20151223
+packetLen(0x095e, 6) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20151021
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20151014
+packetLen(0x095e, 8) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20150916
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20150909
+packetLen(0x095e, 6) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20150805
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20150729
+packetLen(0x095e, -1) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20150415
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20150408
+packetLen(0x095e, 12) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20150107
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#endif
+
+// Packet: 0x095f
+#if PACKETVER >= 20151014
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20151007
+packetLen(0x095f, 5) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20150708
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20150701
+packetLen(0x095f, 26) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20150408
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20150401
+packetLen(0x095f, 6) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20150107
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#endif
+
+// Packet: 0x0960
+#if PACKETVER >= 20151007
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20151001
+packetLen(0x0960, 36) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150923
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150916
+packetLen(0x0960, 5) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150708
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150701
+packetLen(0x0960, 18) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150610
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150603
+packetLen(0x0960, 10) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150527
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150520
+packetLen(0x0960, 4) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150513
+packetLen(0x0960, -1) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150422
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150415
+packetLen(0x0960, 36) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150325
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150318
+packetLen(0x0960, 18) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150311
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150304
+packetLen(0x0960, 26) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20150107
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#endif
+
+// Packet: 0x0961
+#if PACKETVER >= 20151216
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20151209
+packetLen(0x0961, 7) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20151021
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20151014
+packetLen(0x0961, 6) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20151007
+packetLen(0x0961, 19) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20151001
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20150916
+packetLen(0x0961, -1) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20150826
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20150819
+packetLen(0x0961, 26) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20150805
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20150729
+packetLen(0x0961, 36) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20150722
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20150715
+packetLen(0x0961, 8) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20150527
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20150520
+packetLen(0x0961, 8) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20150422
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20150415
+packetLen(0x0961, 18) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20150311
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20150304
+packetLen(0x0961, 5) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20150107
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#endif
+
+// Packet: 0x0962
+#if PACKETVER >= 20150916
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20150909
+packetLen(0x0962, 8) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20150715
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20150708
+packetLen(0x0962, 8) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20150107
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#endif
+
+// Packet: 0x0963
+#if PACKETVER >= 20150318
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20150311
+packetLen(0x0963, 6) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20150204
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20150128
+packetLen(0x0963, 26) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20150121
+packetLen(0x0963, 8) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20150107
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#endif
+
+// Packet: 0x0964
+#if PACKETVER >= 20151216
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20151209
+packetLen(0x0964, 26) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20151111
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20151104
+packetLen(0x0964, 6) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20151021
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20151014
+packetLen(0x0964, 19) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150902
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150826
+packetLen(0x0964, 19) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150617
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150610
+packetLen(0x0964, 5) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150408
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150401
+packetLen(0x0964, 5) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150318
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150311
+packetLen(0x0964, 8) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20150107
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#endif
+
+// Packet: 0x0965
+#if PACKETVER >= 20151230
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20151223
+packetLen(0x0965, 36) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20150722
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20150715
+packetLen(0x0965, 18) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20150107
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#endif
+
+// Packet: 0x0966
+#if PACKETVER >= 20151223
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20151216
+packetLen(0x0966, 6) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20151118
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20151111
+packetLen(0x0966, 8) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20150701
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20150624
+packetLen(0x0966, 5) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20150211
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20150204
+packetLen(0x0966, 36) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20150107
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#endif
+
+// Packet: 0x0967
+#if PACKETVER >= 20151230
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20151223
+packetLen(0x0967, 12) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20151118
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20151111
+packetLen(0x0967, 19) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20151014
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20151007
+packetLen(0x0967, 36) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20150826
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20150819
+packetLen(0x0967, 5) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20150128
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20150121
+packetLen(0x0967, 26) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20150107
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#endif
+
+// Packet: 0x0968
+#if PACKETVER >= 20151223
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20151216
+packetLen(0x0968, 10) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150902
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150826
+packetLen(0x0968, 4) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150708
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150701
+packetLen(0x0968, 5) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150204
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150128
+packetLen(0x0968, 6) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20150107
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#endif
+
+// Packet: 0x0969
+#if PACKETVER >= 20151118
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20151111
+packetLen(0x0969, 36) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20150923
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20150916
+packetLen(0x0969, 19) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20150902
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20150826
+packetLen(0x0969, -1) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20150610
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20150603
+packetLen(0x0969, -1) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20150401
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20150325
+packetLen(0x0969, 8) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20150107
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#endif
+
+// Packet: 0x096a
+#if PACKETVER >= 20151230
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20151209
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20151202
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20151125
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20151111
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20151104
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20151021
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20151014
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20151001
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150916
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150909
+packetLen(0x096a, 5) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150826
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150805
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150715
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150708
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150701
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150617
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150610
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150603
+packetLen(0x096a, 5) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150527
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150520
+packetLen(0x096a, 18) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150422
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150311
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150304
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150225
+packetLen(0x096a, 19) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150217
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150211
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150204
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150128
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20150107
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#endif
+
+// Packet: 0x096b
+packetLen(0x096b, 4) // ZC_PRNPC_STATE
+
+// Packet: 0x096c
+packetLen(0x096c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+
+// Packet: 0x096d
+packetLen(0x096d, -1) // ZC_MERGE_ITEM_OPEN
+
+// Packet: 0x096e
+packetLen(0x096e, -1) // CZ_REQ_MERGE_ITEM
+
+// Packet: 0x096f
+packetLen(0x096f, 7) // ZC_ACK_MERGE_ITEM
+
+// Packet: 0x0970
+packetLen(0x0970, 31) // CH_MAKE_CHAR_NOT_STATS
+
+// Packet: 0x0971
+packetLen(0x0971, 6) // ZC_PARTY_RECRUIT_REFUSE_VOLUNTEER_TO_PM
+
+// Packet: 0x0972
+packetLen(0x0972, -1) // ZC_SAY_DIALOG2
+
+// Packet: 0x0973
+packetLen(0x0973, 7) // ZC_WAIT_DIALOG2
+
+// Packet: 0x0974
+packetLen(0x0974, 2) // CZ_CANCEL_MERGE_ITEM
+
+// Packet: 0x0975
+packetLen(0x0975, -1) // ZC_STORE_ITEMLIST_NORMAL_V2
+
+// Packet: 0x0976
+packetLen(0x0976, -1) // ZC_STORE_ITEMLIST_EQUIP_V2
+
+// Packet: 0x0977
+packetLen(0x0977, 14) // ZC_HP_INFO
+
+// Packet: 0x0978
+packetLen(0x0978, 6) // CZ_REQ_BEFORE_WORLD_INFO
+
+// Packet: 0x0979
+packetLen(0x0979, 50) // ZC_ACK_BEFORE_WORLD_INFO
+
+// Packet: 0x097a
+packetLen(0x097a, -1) // ZC_ALL_QUEST_LIST2
+
+// Packet: 0x097b
+packetLen(0x097b, -1) // ZC_PERSONAL_INFOMATION2
+
+// Packet: 0x097c
+packetLen(0x097c, 4) // CZ_REQ_RANKING
+
+// Packet: 0x097d
+packetLen(0x097d, 288) // ZC_ACK_RANKING
+
+// Packet: 0x097e
+packetLen(0x097e, 12) // ZC_UPDATE_RANKING_POINT
+
+// Packet: 0x097f
+packetLen(0x097f, -1) // ZC_SELECTCART
+
+// Packet: 0x0980
+packetLen(0x0980, 7) // CZ_SELECTCART
+
+// Packet: 0x0981
+packetLen(0x0981, -1) // ZC_PERSONAL_INFOMATION_CHN
+
+// Packet: 0x0982
+packetLen(0x0982, 7) // ZC_FATIGUE_CHN
+
+// Packet: 0x0983
+packetLen(0x0983, 29) // ZC_MSG_STATE_CHANGE3
+
+// Packet: 0x0984
+packetLen(0x0984, 28) // ZC_EFST_SET_ENTER2
+
+// Packet: 0x0985
+packetLen(0x0985, -1) // ZC_SKILL_POSTDELAY_LIST2
+
+// Packet: 0x0986
+packetLen(0x0986, 10) // AC_SHUTDOWN_NOTIFY
+
+// Packet: 0x0987
+packetLen(0x0987, -1) // CA_LOGIN6
+
+// Packet: 0x0988
+packetLen(0x0988, 6) // ZC_NOTIFY_CLAN_CONNECTINFO
+
+// Packet: 0x0989
+packetLen(0x0989, 2) // ZC_ACK_CLAN_LEAVE
+
+// Packet: 0x098a
+packetLen(0x098a, -1) // ZC_CLANINFO
+
+// Packet: 0x098b
+packetLen(0x098b, 2) // AC_REQ_NEW_USER
+
+// Packet: 0x098c
+packetLen(0x098c, 4) // CA_ACK_NEW_USER
+
+// Packet: 0x098d
+packetLen(0x098d, -1) // CZ_CLAN_CHAT
+
+// Packet: 0x098e
+packetLen(0x098e, -1) // ZC_NOTIFY_CLAN_CHAT
+
+// Packet: 0x098f
+packetLen(0x098f, -1) // CH_DELETE_CHAR3_EXT
+
+// Packet: 0x0990
+packetLen(0x0990, 31) // ZC_ITEM_PICKUP_ACK_V5
+
+// Packet: 0x0991
+packetLen(0x0991, -1) // ZC_INVENTORY_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0992
+packetLen(0x0992, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0993
+packetLen(0x0993, -1) // ZC_CART_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0994
+packetLen(0x0994, -1) // ZC_CART_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0995
+packetLen(0x0995, -1) // ZC_STORE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0996
+packetLen(0x0996, -1) // ZC_STORE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0997
+packetLen(0x0997, -1) // ZC_EQUIPWIN_MICROSCOPE_V5
+
+// Packet: 0x0998
+packetLen(0x0998, 8) // CZ_REQ_WEAR_EQUIP_V5
+
+// Packet: 0x0999
+packetLen(0x0999, 11) // ZC_ACK_WEAR_EQUIP_V5
+
+// Packet: 0x099a
+packetLen(0x099a, 9) // ZC_ACK_TAKEOFF_EQUIP_V5
+
+// Packet: 0x099b
+packetLen(0x099b, 8) // ZC_MAPPROPERTY_R2
+
+// Packet: 0x099c
+packetLen(0x099c, 6) // CH_REQ_CHARINFO_PER_PAGE
+
+// Packet: 0x099d
+packetLen(0x099d, -1) // HC_ACK_CHARINFO_PER_PAGE
+
+// Packet: 0x099e
+packetLen(0x099e, 12) // HC_QUEUE_ORDER
+
+// Packet: 0x099f
+packetLen(0x099f, -1) // ZC_SKILL_ENTRY4
+
+// Packet: 0x09a0
+packetLen(0x09a0, 10) // HC_CHARLIST_NOTIFY
+
+// Packet: 0x09a1
+packetLen(0x09a1, 2) // CH_CHARLIST_REQ
+
+// Packet: 0x09a2
+packetLen(0x09a2, 6) // AC_REQ_MOBILE_OTP
+
+// Packet: 0x09a3
+packetLen(0x09a3, -1) // CA_ACK_MOBILE_OTP
+
+// Packet: 0x09a4
+packetLen(0x09a4, 18) // ZC_DISPATCH_TIMING_INFO_CHN
+
+// Packet: 0x09a5
+packetLen(0x09a5, 7) // AC_REFUSE_LOGIN3
+
+// Packet: 0x09a6
+packetLen(0x09a6, 12) // ZC_BANKING_CHECK
+
+// Packet: 0x09a7
+packetLen(0x09a7, 10) // CZ_REQ_BANKING_DEPOSIT
+
+// Packet: 0x09a8
+packetLen(0x09a8, 16) // ZC_ACK_BANKING_DEPOSIT
+
+// Packet: 0x09a9
+packetLen(0x09a9, 10) // CZ_REQ_BANKING_WITHDRAW
+
+// Packet: 0x09aa
+packetLen(0x09aa, 16) // ZC_ACK_BANKING_WITHDRAW
+
+// Packet: 0x09ab
+packetLen(0x09ab, 6) // CZ_REQ_BANKING_CHECK
+
+// Packet: 0x09ac
+packetLen(0x09ac, -1) // CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO
+
+// Packet: 0x09ad
+packetLen(0x09ad, 10) // ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO
+
+// Packet: 0x09ae
+packetLen(0x09ae, 17) // CZ_REQ_APPLY_BARGAIN_SALE_ITEM
+
+// Packet: 0x09af
+packetLen(0x09af, 4) // ZC_ACK_APPLY_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b0
+packetLen(0x09b0, 8) // CZ_REQ_REMOVE_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b1
+packetLen(0x09b1, 4) // ZC_ACK_REMOVE_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b2
+packetLen(0x09b2, 8) // ZC_NOTIFY_BARGAIN_SALE_SELLING
+
+// Packet: 0x09b3
+packetLen(0x09b3, 4) // ZC_NOTIFY_BARGAIN_SALE_CLOSE
+
+// Packet: 0x09b4
+packetLen(0x09b4, 6) // CZ_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b5
+packetLen(0x09b5, 2) // ZC_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b6
+packetLen(0x09b6, 6) // CZ_REQ_OPEN_BANKING
+
+// Packet: 0x09b7
+packetLen(0x09b7, 4) // ZC_ACK_OPEN_BANKING
+
+// Packet: 0x09b8
+packetLen(0x09b8, 6) // CZ_REQ_CLOSE_BANKING
+
+// Packet: 0x09b9
+packetLen(0x09b9, 4) // ZC_ACK_CLOSE_BANKING
+
+// Packet: 0x09ba
+packetLen(0x09ba, 2) // CZ_REQ_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bb
+packetLen(0x09bb, 6) // ZC_ACK_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bc
+packetLen(0x09bc, 6) // CZ_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09bd
+packetLen(0x09bd, 2) // ZC_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09be
+packetLen(0x09be, 2) // CZ_REQ_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09bf
+packetLen(0x09bf, 4) // ZC_ACK_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09c1
+packetLen(0x09c1, 10) // ZC_C_MARKERINFO
+
+// Packet: 0x09c2
+packetLen(0x09c2, -1) // HC_SECRETSCAN_DATA
+
+// Packet: 0x09c3
+packetLen(0x09c3, 8) // CZ_REQ_COUNT_BARGAIN_SALE_ITEM
+
+// Packet: 0x09c4
+packetLen(0x09c4, 8) // ZC_ACK_COUNT_BARGAIN_SALE_ITEM
+
+// Packet: 0x09c5
+packetLen(0x09c5, 1042) // CS_LOGIN_QUERY
+
+// Packet: 0x09c6
+packetLen(0x09c6, -1) // SC_LOGIN_ANSWER
+
+// Packet: 0x09c7
+packetLen(0x09c7, 18) // SC_LOGIN_ERROR
+
+// Packet: 0x09c8
+packetLen(0x09c8, -1) // CA_LOGIN_OTP
+
+// Packet: 0x09c9
+packetLen(0x09c9, -1) // SC_SOCT
+
+// Packet: 0x09ca
+packetLen(0x09ca, -1) // ZC_SKILL_ENTRY5
+
+// Packet: 0x09cb
+packetLen(0x09cb, 17) // ZC_USE_SKILL2
+
+// Packet: 0x09cc
+packetLen(0x09cc, -1) // ZC_SECRETSCAN_DATA
+
+// Packet: 0x09cd
+packetLen(0x09cd, 8) // ZC_MSG_COLOR
+
+// Packet: 0x09ce
+packetLen(0x09ce, 102) // CZ_ITEM_CREATE_EX
+
+// Packet: 0x09cf
+packetLen(0x09cf, -1) // ZC_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d0
+packetLen(0x09d0, -1) // CZ_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d1
+packetLen(0x09d1, 14) // ZC_PROGRESS_ACTOR
+
+// Packet: 0x09d2
+packetLen(0x09d2, -1) // ZC_GUILDSTORAGE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x09d3
+packetLen(0x09d3, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x09d4
+packetLen(0x09d4, 2) // CZ_NPC_TRADE_QUIT
+
+// Packet: 0x09d5
+packetLen(0x09d5, -1) // ZC_NPC_MARKET_OPEN
+
+// Packet: 0x09d6
+packetLen(0x09d6, -1) // CZ_NPC_MARKET_PURCHASE
+
+// Packet: 0x09d7
+packetLen(0x09d7, -1) // ZC_NPC_MARKET_PURCHASE_RESULT
+
+// Packet: 0x09d8
+packetLen(0x09d8, 2) // CZ_NPC_MARKET_CLOSE
+
+// Packet: 0x09d9
+packetLen(0x09d9, 4) // CZ_REQ_GUILDSTORAGE_LOG
+
+// Packet: 0x09da
+packetLen(0x09da, -1) // ZC_ACK_GUILDSTORAGE_LOG
+
+// Packet: 0x09db
+packetLen(0x09db, -1) // ZC_NOTIFY_MOVEENTRY10
+
+// Packet: 0x09dc
+packetLen(0x09dc, -1) // ZC_NOTIFY_NEWENTRY10
+
+// Packet: 0x09dd
+packetLen(0x09dd, -1) // ZC_NOTIFY_STANDENTRY10
+
+// Packet: 0x09de
+packetLen(0x09de, -1) // ZC_WHISPER02
+
+// Packet: 0x09df
+packetLen(0x09df, 7) // ZC_ACK_WHISPER02
+
+// Packet: 0x09e0
+packetLen(0x09e0, -1) // SC_LOGIN_ANSWER_WITH_ID
+
+// Packet: 0x09e1
+packetLen(0x09e1, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_GUILDSTORAGE
+
+// Packet: 0x09e2
+packetLen(0x09e2, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_BODY
+
+// Packet: 0x09e3
+packetLen(0x09e3, 8) // CZ_MOVE_ITEM_FROM_CART_TO_GUILDSTORAGE
+
+// Packet: 0x09e4
+packetLen(0x09e4, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_CART
+
+// Packet: 0x09e5
+packetLen(0x09e5, 18) // ZC_DELETEITEM_FROM_MCSTORE2
+
+// Packet: 0x09e6
+packetLen(0x09e6, 22) // ZC_UPDATE_ITEM_FROM_BUYING_STORE2
+
+// Packet: 0x09e7
+packetLen(0x09e7, 3) // ZC_NOTIFY_UNREAD_RODEX
+
+// Packet: 0x09e8
+packetLen(0x09e8, 11) // CZ_OPEN_RODEXBOX
+
+// Packet: 0x09e9
+packetLen(0x09e9, 2) // CZ_CLOSE_RODEXBOX
+
+// Packet: 0x09ea
+packetLen(0x09ea, 11) // CZ_REQ_READ_RODEX
+
+// Packet: 0x09eb
+packetLen(0x09eb, -1) // ZC_ACK_READ_RODEX
+
+// Packet: 0x09ec
+packetLen(0x09ec, -1) // CZ_REQ_SEND_RODEX
+
+// Packet: 0x09ed
+packetLen(0x09ed, 3) // ZC_ACK_SEND_RODEX
+
+// Packet: 0x09ee
+packetLen(0x09ee, 11) // CZ_REQ_NEXT_RODEX
+
+// Packet: 0x09ef
+packetLen(0x09ef, 11) // CZ_REQ_REFRESH_RODEX
+
+// Packet: 0x09f0
+packetLen(0x09f0, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x09f1
+packetLen(0x09f1, 11) // CZ_REQ_ZENY_FROM_RODEX
+
+// Packet: 0x09f2
+packetLen(0x09f2, 12) // ZC_ACK_ZENY_FROM_RODEX
+
+// Packet: 0x09f3
+packetLen(0x09f3, 11) // CZ_REQ_ITEM_FROM_RODEX
+
+// Packet: 0x09f4
+packetLen(0x09f4, 12) // ZC_ACK_ITEM_FROM_RODEX
+
+// Packet: 0x09f5
+packetLen(0x09f5, 11) // CZ_REQ_DELETE_RODEX
+
+// Packet: 0x09f6
+packetLen(0x09f6, 11) // ZC_ACK_DELETE_RODEX
+
+// Packet: 0x09f7
+packetLen(0x09f7, 75) // ZC_PROPERTY_HOMUN_2
+
+// Packet: 0x09f8
+packetLen(0x09f8, -1) // ZC_ALL_QUEST_LIST3
+
+// Packet: 0x09f9
+packetLen(0x09f9, 143) // ZC_ADD_QUEST_EX
+
+// Packet: 0x09fa
+packetLen(0x09fa, -1) // ZC_UPDATE_MISSION_HUNT_EX
+
+// Packet: 0x09fb
+packetLen(0x09fb, -1) // CZ_PET_EVOLUTION
+
+// Packet: 0x09fc
+packetLen(0x09fc, 6) // ZC_PET_EVOLUTION_RESULT
+
+// Packet: 0x09fd
+packetLen(0x09fd, -1) // ZC_NOTIFY_MOVEENTRY11
+
+// Packet: 0x09fe
+packetLen(0x09fe, -1) // ZC_NOTIFY_NEWENTRY11
+
+// Packet: 0x09ff
+packetLen(0x09ff, -1) // ZC_NOTIFY_STANDENTRY11
+
+// Packet: 0x0a00
+packetLen(0x0a00, 269) // ZC_SHORTCUT_KEY_LIST_V3
+
+// Packet: 0x0a01
+packetLen(0x0a01, 3) // CZ_SHORTCUTKEYBAR_ROTATE
+
+// Packet: 0x0a02
+packetLen(0x0a02, 4) // ZC_DRESSROOM_OPEN
+
+// Packet: 0x0a03
+packetLen(0x0a03, 2) // CZ_REQ_CANCEL_WRITE_RODEX
+
+// Packet: 0x0a04
+packetLen(0x0a04, 6) // CZ_REQ_ADD_ITEM_RODEX
+
+// Packet: 0x0a05
+packetLen(0x0a05, 53) // ZC_ACK_ADD_ITEM_RODEX
+
+// Packet: 0x0a06
+packetLen(0x0a06, 6) // CZ_REQ_REMOVE_RODEX_ITEM
+
+// Packet: 0x0a07
+packetLen(0x0a07, 9) // ZC_ACK_REMOVE_RODEX_ITEM
+
+// Packet: 0x0a08
+packetLen(0x0a08, 26) // CZ_REQ_OPEN_WRITE_RODEX
+
+// Packet: 0x0a09
+packetLen(0x0a09, 45) // ZC_ADD_EXCHANGE_ITEM3
+
+// Packet: 0x0a0a
+packetLen(0x0a0a, 47) // ZC_ADD_ITEM_TO_STORE3
+
+// Packet: 0x0a0b
+packetLen(0x0a0b, 47) // ZC_ADD_ITEM_TO_CART3
+
+// Packet: 0x0a0c
+packetLen(0x0a0c, 56) // ZC_ITEM_PICKUP_ACK_V6
+
+// Packet: 0x0a0d
+packetLen(0x0a0d, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a0e
+packetLen(0x0a0e, 14) // ZC_BATTLEFIELD_NOTIFY_HP2
+
+// Packet: 0x0a0f
+packetLen(0x0a0f, -1) // ZC_CART_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a10
+packetLen(0x0a10, -1) // ZC_STORE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a11
+packetLen(0x0a11, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a12
+packetLen(0x0a12, 27) // ZC_ACK_OPEN_WRITE_RODEX
+
+// Packet: 0x0a13
+packetLen(0x0a13, 26) // CZ_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a14
+packetLen(0x0a14, 10) // ZC_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a15
+packetLen(0x0a15, 12) // ZC_GOLDPCCAFE_POINT
+
+// Packet: 0x0a16
+packetLen(0x0a16, 26) // CZ_DYNAMICNPC_CREATE_REQUEST
+
+// Packet: 0x0a17
+packetLen(0x0a17, 6) // ZC_DYNAMICNPC_CREATE_RESULT
+
+// Packet: 0x0a18
+packetLen(0x0a18, 14) // ZC_ACCEPT_ENTER3
+
+// Packet: 0x0a19
+packetLen(0x0a19, 2) // CZ_REQ_OPEN_ROULETTE
+
+// Packet: 0x0a1a
+packetLen(0x0a1a, 23) // ZC_ACK_OPEN_ROULETTE
+
+// Packet: 0x0a1b
+packetLen(0x0a1b, 2) // CZ_REQ_ROULETTE_INFO
+
+// Packet: 0x0a1c
+packetLen(0x0a1c, -1) // ZC_ACK_ROULEITTE_INFO
+
+// Packet: 0x0a1d
+packetLen(0x0a1d, 2) // CZ_REQ_CLOSE_ROULETTE
+
+// Packet: 0x0a1e
+packetLen(0x0a1e, 3) // ZC_ACK_CLOSE_ROULETTE
+
+// Packet: 0x0a1f
+packetLen(0x0a1f, 2) // CZ_REQ_GENERATE_ROULETTE
+
+// Packet: 0x0a20
+packetLen(0x0a20, 21) // ZC_ACK_GENERATE_ROULETTE
+
+// Packet: 0x0a21
+packetLen(0x0a21, 3) // CZ_RECV_ROULETTE_ITEM
+
+// Packet: 0x0a22
+packetLen(0x0a22, 5) // ZC_RECV_ROULETTE_ITEM
+
+// Packet: 0x0a23
+packetLen(0x0a23, -1) // ZC_ALL_ACH_LIST
+
+// Packet: 0x0a24
+packetLen(0x0a24, 66) // ZC_ACH_UPDATE
+
+// Packet: 0x0a25
+packetLen(0x0a25, 6) // CZ_REQ_ACH_REWARD
+
+// Packet: 0x0a26
+packetLen(0x0a26, 7) // ZC_REQ_ACH_REWARD_ACK
+
+// Packet: 0x0a27
+packetLen(0x0a27, 8) // ZC_RECOVERY2
+
+// Packet: 0x0a28
+packetLen(0x0a28, 3) // ZC_ACK_OPENSTORE2
+
+// Packet: 0x0a29
+packetLen(0x0a29, 6) // ZC_REQ_AU_BOT
+
+// Packet: 0x0a2a
+packetLen(0x0a2a, 6) // CZ_ACK_AU_BOT
+
+// Packet: 0x0a2b
+packetLen(0x0a2b, 14) // ZC_SE_CASHSHOP_OPEN2
+
+// Packet: 0x0a2c
+packetLen(0x0a2c, 12) // ZC_SE_PC_BUY_TAIWANCASHITEM_RESULT
+
+// Packet: 0x0a2d
+packetLen(0x0a2d, -1) // ZC_EQUIPWIN_MICROSCOPE_V6
+
+// Packet: 0x0a2e
+packetLen(0x0a2e, 6) // CZ_REQ_CHANGE_TITLE
+
+// Packet: 0x0a2f
+packetLen(0x0a2f, 7) // ZC_ACK_CHANGE_TITLE
+
+// Packet: 0x0a30
+packetLen(0x0a30, 106) // ZC_ACK_REQNAMEALL2
+
+// Packet: 0x0a31
+packetLen(0x0a31, -1) // ZC_RESULT_PACKAGE_ITEM_TEST
+
+// Packet: 0x0a32
+packetLen(0x0a32, 2) // ZC_OPEN_RODEX_THROUGH_NPC_ONLY
+
+// Packet: 0x0a33
+packetLen(0x0a33, 7) // ZC_UPDATE_ROULETTE_COIN
+
+// Packet: 0x0a34
+packetLen(0x0a34, 6) // ZC_UPDATE_TAIWANCASH
+
+// Packet: 0x0a35
+packetLen(0x0a35, 4) // CZ_REQ_ONECLICK_ITEMIDENTIFY
+
+// Packet: 0x0a36
+packetLen(0x0a36, 7) // ZC_HP_INFO_TINY
+
+// Packet: 0x0a37
+packetLen(0x0a37, 57) // ZC_ITEM_PICKUP_ACK_V7
+
+// Packet: 0x0a38
+#if PACKETVER >= 20150128
+packetLen(0x0a38, 3) // ZC_OPEN_UI
+#endif
+
+// Packet: 0x0a39
+#if PACKETVER >= 20150415
+packetLen(0x0a39, 36) // CH_MAKE_CHAR
+#elif PACKETVER >= 20150211
+packetLen(0x0a39, 35) // CH_MAKE_CHAR
+#endif
+
+// Packet: 0x0a3a
+#if PACKETVER >= 20150311
+packetLen(0x0a3a, 12)
+#endif
+
+// Packet: 0x0a3b
+#if PACKETVER >= 20150422
+packetLen(0x0a3b, -1) // ZC_CUSTOM_HAT_EFFECT
+#endif
+
+// Packet: 0x0a3c
+#if PACKETVER >= 20150520
+packetLen(0x0a3c, -1)
+#endif
+
+// Packet: 0x0a3d
+#if PACKETVER >= 20150520
+packetLen(0x0a3d, 18)
+#endif
+
+// Packet: 0x0a3e
+#if PACKETVER >= 20150603
+packetLen(0x0a3e, -1)
+#endif
+
+// Packet: 0x0a3f
+#if PACKETVER >= 20150624
+packetLen(0x0a3f, 9)
+#endif
+
+// Packet: 0x0a40
+#if PACKETVER >= 20150812
+packetLen(0x0a40, 11)
+#endif
+
+// Packet: 0x0a41
+#if PACKETVER >= 20150909
+packetLen(0x0a41, 18) // ZC_AOE_EFFECT_SKILL
+#endif
+
+// Packet: 0x0a42
+#if PACKETVER >= 20150916
+packetLen(0x0a42, 43)
+#endif
+
+// Packet: 0x0a43
+#if PACKETVER >= 20151007
+packetLen(0x0a43, 85) // ZC_ADD_MEMBER_TO_GROUP
+#endif
+
+// Packet: 0x0a44
+#if PACKETVER >= 20151007
+packetLen(0x0a44, -1) // ZC_GROUP_LIST
+#endif
+
+// Packet: 0x0a45
+#if PACKETVER >= 20151125
+// removed
+#elif PACKETVER >= 20151104
+packetLen(0x0a45, 2)
+#elif PACKETVER >= 20151028
+packetLen(0x0a45, -1)
+#endif
+
+// Packet: 0x0a46
+#if PACKETVER >= 20151104
+packetLen(0x0a46, 14)
+#endif
+
+// Packet: 0x0a47
+#if PACKETVER >= 20151104
+packetLen(0x0a47, 3) // ZC_STYLE_CHANGE_RES
+#endif
+
+// Packet: 0x0a48
+#if PACKETVER >= 20151104
+packetLen(0x0a48, 2)
+#endif
+
+// Packet: 0x0a49
+#if PACKETVER >= 20151118
+packetLen(0x0a49, 22) // CZ_PRIVATE_AIRSHIP_REQUEST
+#endif
+
+// Packet: 0x0a4a
+#if PACKETVER >= 20151118
+packetLen(0x0a4a, 6) // ZC_PRIVATE_AIRSHIP_RESPONSE
+#endif
+
+// Packet: 0x0a4b
+#if PACKETVER >= 20151118
+packetLen(0x0a4b, 22) // ZC_AIRSHIP_MAPMOVE
+#endif
+
+// Packet: 0x0a4c
+#if PACKETVER >= 20151118
+packetLen(0x0a4c, 28) // ZC_AIRSHIP_SERVERMOVE
+#endif
+
+
+#endif /* COMMON_PACKETS2015_LEN_RE_H */
diff --git a/src/common/packets/packets2016_len_main.h b/src/common/packets/packets2016_len_main.h
new file mode 100644
index 000000000..7625e55e9
--- /dev/null
+++ b/src/common/packets/packets2016_len_main.h
@@ -0,0 +1,9134 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2016_LEN_MAIN_H
+#define COMMON_PACKETS2016_LEN_MAIN_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 149) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 22) // CZ_ENTER
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 44) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 10) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, 14)
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+packetLen(0x0094, 19) // CZ_REQNAME
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+packetLen(0x00a7, 9)
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 9) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+packetLen(0x00f7, 17) // CZ_REQUEST_TIME
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+packetLen(0x0113, 25) // CZ_USE_SKILL
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 37) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+#if PACKETVER >= 20161012
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20161005
+packetLen(0x0202, 90) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160928
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160921
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160913
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160907
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160831
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160824
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160803
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160727
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160706
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160629
+packetLen(0x0202, 12) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160511
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160427
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160323
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160316
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160224
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160217
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160211
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160203
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160127
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160120
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160106
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+
+// Packet: 0x022b
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+
+// Packet: 0x022c
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+
+// Packet: 0x022d
+#if PACKETVER >= 20161221
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20161214
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+#elif PACKETVER >= 20161026
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20161019
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160928
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160921
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160913
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160907
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160831
+packetLen(0x022d, 90) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160824
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160720
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160713
+packetLen(0x022d, 36) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160706
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160629
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160615
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160608
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160504
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160427
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160420
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160323
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160316
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160309
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160302
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160224
+packetLen(0x022d, 26) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160217
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160211
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160203
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160120
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160113
+packetLen(0x022d, 10) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160106
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#endif
+
+// Packet: 0x022e
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+
+// Packet: 0x022f
+packetLen(0x022f, 5) // ZC_FEED_MER
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+#if PACKETVER >= 20161214
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20161207
+packetLen(0x023b, 5) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160928
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160921
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160913
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160907
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160831
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160824
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160803
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160727
+packetLen(0x023b, 8) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160629
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160622
+packetLen(0x023b, 10) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160504
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160427
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160323
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160316
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160309
+packetLen(0x023b, 6) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160217
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160211
+packetLen(0x023b, 18) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160127
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160120
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160113
+packetLen(0x023b, 5) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160106
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#endif
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+
+// Packet: 0x0275
+packetLen(0x0275, 37) // CH_ENTER2
+
+// Packet: 0x0276
+packetLen(0x0276, -1) // AC_ACCEPT_LOGIN2
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+#if PACKETVER >= 20161221
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20161214
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20161207
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20161123
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20161026
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20161019
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160928
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160921
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160913
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160907
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160831
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160824
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160622
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160615
+packetLen(0x0281, 26) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160525
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160511
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160504
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160427
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160323
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160316
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160309
+packetLen(0x0281, 6) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160217
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160211
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160203
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160120
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160106
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#endif
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+
+// Packet: 0x0288
+packetLen(0x0288, -1) // CZ_PC_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0289
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0296
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0297
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0298
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+
+// Packet: 0x0299
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+
+// Packet: 0x029a
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+
+// Packet: 0x029b
+packetLen(0x029b, 80) // ZC_MER_INIT
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a5
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+
+// Packet: 0x02a6
+packetLen(0x02a6, -1) // ZC_HACKSH_CPX_MSG
+
+// Packet: 0x02a7
+packetLen(0x02a7, -1) // CZ_HACKSH_CPX_MSG
+
+// Packet: 0x02aa
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+
+// Packet: 0x02ab
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+
+// Packet: 0x02ac
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+
+// Packet: 0x02ad
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+
+// Packet: 0x02b0
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+
+// Packet: 0x02b1
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+
+// Packet: 0x02b2
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+
+// Packet: 0x02b3
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+
+// Packet: 0x02b4
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+
+// Packet: 0x02b5
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+
+// Packet: 0x02b6
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+
+// Packet: 0x02b7
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+
+// Packet: 0x02b8
+packetLen(0x02b8, 22) // ZC_ITEM_PICKUP_PARTY
+
+// Packet: 0x02b9
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+
+// Packet: 0x02ba
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+
+// Packet: 0x02bb
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+
+// Packet: 0x02bc
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+
+// Packet: 0x02c1
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+
+// Packet: 0x02c2
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+
+// Packet: 0x02c4
+#if PACKETVER >= 20161221
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20161214
+packetLen(0x02c4, 8) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20161116
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20161109
+packetLen(0x02c4, 18) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20160615
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20160608
+packetLen(0x02c4, 18) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20160601
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20160427
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20160420
+packetLen(0x02c4, 6) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20160106
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#endif
+
+// Packet: 0x02c5
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c6
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+
+// Packet: 0x02c7
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c8
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+
+// Packet: 0x02c9
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+
+// Packet: 0x02ca
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+
+// Packet: 0x02cb
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+
+// Packet: 0x02cc
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+
+// Packet: 0x02cd
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+
+// Packet: 0x02ce
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+
+// Packet: 0x02cf
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+
+// Packet: 0x02d0
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d1
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d2
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d3
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+
+// Packet: 0x02d4
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+
+// Packet: 0x02d5
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+
+// Packet: 0x02d6
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d7
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d8
+packetLen(0x02d8, 10) // CZ_CONFIG
+
+// Packet: 0x02d9
+packetLen(0x02d9, 10) // ZC_CONFIG
+
+// Packet: 0x02da
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+
+// Packet: 0x02db
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+
+// Packet: 0x02dc
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+
+// Packet: 0x02dd
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+
+// Packet: 0x02de
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+
+// Packet: 0x02df
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+
+// Packet: 0x02e0
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+
+// Packet: 0x02e1
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+
+// Packet: 0x02e2
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+
+// Packet: 0x02e3
+packetLen(0x02e3, 22) // CZ_USE_SKILL_NEW_JAPEN
+
+// Packet: 0x02e4
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+
+// Packet: 0x02e5
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+
+// Packet: 0x02e6
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+
+// Packet: 0x02e7
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+
+// Packet: 0x02e8
+packetLen(0x02e8, -1) // ZC_NORMAL_ITEMLIST3
+
+// Packet: 0x02e9
+packetLen(0x02e9, -1) // ZC_CART_NORMAL_ITEMLIST3
+
+// Packet: 0x02ea
+packetLen(0x02ea, -1) // ZC_STORE_NORMAL_ITEMLIST3
+
+// Packet: 0x02eb
+packetLen(0x02eb, 13) // ZC_ACCEPT_ENTER2
+
+// Packet: 0x02ec
+packetLen(0x02ec, 67) // ZC_NOTIFY_MOVEENTRY4
+
+// Packet: 0x02ed
+packetLen(0x02ed, 59) // ZC_NOTIFY_NEWENTRY4
+
+// Packet: 0x02ee
+packetLen(0x02ee, 60) // ZC_NOTIFY_STANDENTRY4
+
+// Packet: 0x02ef
+packetLen(0x02ef, 8) // ZC_NOTIFY_FONT
+
+// Packet: 0x02f0
+packetLen(0x02f0, 10) // ZC_PROGRESS
+
+// Packet: 0x02f1
+packetLen(0x02f1, 2) // CZ_PROGRESS
+
+// Packet: 0x02f2
+packetLen(0x02f2, 2) // ZC_PROGRESS_CANCEL
+
+// Packet: 0x02f3
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+
+// Packet: 0x02f4
+packetLen(0x02f4, 3) // ZC_IRMAIL_SEND_RES
+
+// Packet: 0x02f5
+packetLen(0x02f5, 7) // ZC_IRMAIL_NOTIFY
+
+// Packet: 0x02f6
+packetLen(0x02f6, 7) // CZ_IRMAIL_LIST
+
+// Packet: 0x035c
+packetLen(0x035c, 2) // CZ_OPEN_SIMPLE_CASHSHOP_ITEMLIST
+
+// Packet: 0x035d
+packetLen(0x035d, -1) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+
+// Packet: 0x035e
+packetLen(0x035e, 2) // CZ_CLOSE_WINDOW
+
+// Packet: 0x035f
+#if PACKETVER >= 20161228
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20161207
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20161130
+packetLen(0x035f, 5) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20161123
+packetLen(0x035f, 18) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20161026
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20161019
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20161005
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160921
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160913
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160907
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160831
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160824
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160706
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160629
+packetLen(0x035f, 4) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160622
+packetLen(0x035f, 8) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160615
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160608
+packetLen(0x035f, 26) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160511
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160504
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160427
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160420
+packetLen(0x035f, 26) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160414
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160406
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160316
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160302
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160224
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160217
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160211
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160203
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160120
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160113
+packetLen(0x035f, 18) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160106
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#endif
+
+// Packet: 0x0360
+#if PACKETVER >= 20161221
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20161214
+packetLen(0x0360, 5) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20161130
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20161026
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20161019
+packetLen(0x0360, 5) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20160928
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20160921
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20160913
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20160907
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20160831
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20160824
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20160615
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20160511
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20160504
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20160414
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20160406
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20160316
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20160217
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20160120
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20160113
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20160106
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#endif
+
+// Packet: 0x0361
+#if PACKETVER >= 20161214
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20161207
+packetLen(0x0361, 19) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20161130
+packetLen(0x0361, 6) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20161109
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20161102
+packetLen(0x0361, 8) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20161026
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20161019
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160928
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160921
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160913
+packetLen(0x0361, 18) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160907
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160831
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160824
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160817
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160810
+packetLen(0x0361, 36) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160629
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160622
+packetLen(0x0361, 26) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160504
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160427
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160323
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160316
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160309
+packetLen(0x0361, 26) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160211
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160203
+packetLen(0x0361, 26) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160127
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160120
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160106
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#endif
+
+// Packet: 0x0362
+#if PACKETVER >= 20161228
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20161221
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20161207
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20161130
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20161123
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20161116
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20161109
+packetLen(0x0362, 8) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20161026
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20161012
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160928
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160921
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160913
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160907
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160831
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160824
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160803
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160727
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160720
+packetLen(0x0362, 90) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160713
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160706
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160525
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160511
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160504
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160427
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160420
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160414
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160323
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160316
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160224
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160217
+packetLen(0x0362, 5) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160211
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160203
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160120
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160106
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#endif
+
+// Packet: 0x0363
+#if PACKETVER >= 20161207
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20161130
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20161102
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20161026
+packetLen(0x0363, 36) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20161019
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160928
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160921
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160913
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160907
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160831
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160824
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160803
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160727
+packetLen(0x0363, 26) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160720
+packetLen(0x0363, 10) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160713
+packetLen(0x0363, 5) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160706
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160629
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160622
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160615
+packetLen(0x0363, 19) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160525
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160511
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160504
+packetLen(0x0363, -1) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160427
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160420
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160414
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160323
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160316
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160217
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160211
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160203
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160120
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160106
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#endif
+
+// Packet: 0x0364
+#if PACKETVER >= 20161221
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20161214
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20161207
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20161130
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20161026
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20161019
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20161012
+packetLen(0x0364, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160928
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160921
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160913
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160907
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160831
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160824
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160817
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160810
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160803
+packetLen(0x0364, 19) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160720
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160713
+packetLen(0x0364, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160622
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160615
+packetLen(0x0364, 36) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160525
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160511
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160504
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160427
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160414
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160406
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160323
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160316
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160309
+packetLen(0x0364, 36) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160302
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160224
+packetLen(0x0364, 10) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160217
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160211
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160203
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160120
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160106
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#endif
+
+// Packet: 0x0365
+#if PACKETVER >= 20161207
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20161130
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20161116
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20161109
+packetLen(0x0365, 6) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20161026
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20161019
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20161012
+packetLen(0x0365, 6) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160928
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160921
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160913
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160907
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160831
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160824
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160727
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160720
+packetLen(0x0365, 7) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160525
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160511
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160504
+packetLen(0x0365, 4) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160427
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160406
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160330
+packetLen(0x0365, 36) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160323
+packetLen(0x0365, 26) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160316
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160224
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160217
+packetLen(0x0365, 12) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160211
+packetLen(0x0365, 36) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160203
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160120
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160106
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#endif
+
+// Packet: 0x0366
+#if PACKETVER >= 20161228
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20161221
+packetLen(0x0366, 6) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20161130
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20161116
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20161109
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20161026
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20161019
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20161005
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160928
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160921
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160913
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160907
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160831
+packetLen(0x0366, 6) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160824
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160629
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160622
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160608
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160511
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160504
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160414
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160330
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160316
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160302
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160224
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160217
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160120
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160113
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160106
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#endif
+
+// Packet: 0x0367
+#if PACKETVER >= 20161109
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20161102
+packetLen(0x0367, 4) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20160309
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20160302
+packetLen(0x0367, 6) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20160106
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#endif
+
+// Packet: 0x0368
+#if PACKETVER >= 20161221
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20161130
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20161123
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20161116
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20161026
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20161019
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20161012
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20161005
+packetLen(0x0368, 7) // CZ_REQNAME2
+#elif PACKETVER >= 20160928
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20160921
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20160913
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20160907
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20160831
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20160824
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20160706
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20160629
+packetLen(0x0368, -1) // CZ_REQNAME2
+#elif PACKETVER >= 20160615
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20160511
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20160504
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20160414
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20160406
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20160309
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20160302
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20160224
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20160217
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20160120
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20160113
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20160106
+packetLen(0x0368, 6) // CZ_REQNAME2
+#endif
+
+// Packet: 0x0369
+#if PACKETVER >= 20161221
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20161214
+packetLen(0x0369, 19) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20161207
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20161130
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20161123
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20161116
+packetLen(0x0369, 8) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20161026
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20161019
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20161012
+packetLen(0x0369, 26) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160928
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160921
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160913
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160907
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160831
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160824
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160622
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160615
+packetLen(0x0369, 5) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160511
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160504
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160414
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160406
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160316
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160302
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160224
+packetLen(0x0369, 8) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160217
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160120
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160113
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160106
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#endif
+
+// Packet: 0x03dd
+packetLen(0x03dd, 18) // AHC_GAME_GUARD
+
+// Packet: 0x03de
+packetLen(0x03de, 18) // CAH_ACK_GAME_GUARD
+
+// Packet: 0x0436
+#if PACKETVER >= 20161221
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20161214
+packetLen(0x0436, 7) // CZ_ENTER2
+#elif PACKETVER >= 20161109
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20161102
+packetLen(0x0436, 7) // CZ_ENTER2
+#elif PACKETVER >= 20161005
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20160928
+packetLen(0x0436, 6) // CZ_ENTER2
+#elif PACKETVER >= 20160921
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20160913
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20160907
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20160831
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20160824
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20160803
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20160727
+packetLen(0x0436, 90) // CZ_ENTER2
+#elif PACKETVER >= 20160713
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20160706
+packetLen(0x0436, 6) // CZ_ENTER2
+#elif PACKETVER >= 20160615
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20160608
+packetLen(0x0436, 5) // CZ_ENTER2
+#elif PACKETVER >= 20160525
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20160518
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20160504
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20160427
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20160323
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20160316
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20160302
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20160224
+packetLen(0x0436, 6) // CZ_ENTER2
+#elif PACKETVER >= 20160217
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20160211
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20160203
+packetLen(0x0436, -1) // CZ_ENTER2
+#elif PACKETVER >= 20160120
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20160106
+packetLen(0x0436, 2) // CZ_ENTER2
+#endif
+
+// Packet: 0x0437
+#if PACKETVER >= 20161221
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20161130
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20161123
+packetLen(0x0437, 6) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20161026
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20161019
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160928
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160921
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160913
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160907
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160831
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160824
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160817
+packetLen(0x0437, 26) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160629
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160622
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160615
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160608
+packetLen(0x0437, 19) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160511
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160504
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160414
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160406
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160316
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160217
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160211
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160203
+packetLen(0x0437, 6) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160120
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160113
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160106
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#endif
+
+// Packet: 0x0438
+#if PACKETVER >= 20161228
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20161221
+packetLen(0x0438, 5) // CZ_USE_SKILL2
+#elif PACKETVER >= 20161130
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20161102
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20161026
+packetLen(0x0438, 5) // CZ_USE_SKILL2
+#elif PACKETVER >= 20161019
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160928
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160921
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160913
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160907
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160831
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160824
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160803
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160727
+packetLen(0x0438, 6) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160615
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160511
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160504
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160414
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160406
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160316
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160302
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160224
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160217
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160120
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160113
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160106
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#endif
+
+// Packet: 0x0439
+packetLen(0x0439, 8) // CZ_USE_ITEM2
+
+// Packet: 0x043d
+packetLen(0x043d, 8) // ZC_SKILL_POSTDELAY
+
+// Packet: 0x043e
+packetLen(0x043e, -1) // ZC_SKILL_POSTDELAY_LIST
+
+// Packet: 0x043f
+packetLen(0x043f, 25) // ZC_MSG_STATE_CHANGE2
+
+// Packet: 0x0440
+packetLen(0x0440, 10) // ZC_MILLENNIUMSHIELD
+
+// Packet: 0x0441
+packetLen(0x0441, 4) // ZC_SKILLINFO_DELETE
+
+// Packet: 0x0442
+packetLen(0x0442, -1) // ZC_SKILL_SELECT_REQUEST
+
+// Packet: 0x0443
+packetLen(0x0443, 8) // CZ_SKILL_SELECT_RESPONSE
+
+// Packet: 0x0444
+packetLen(0x0444, -1) // ZC_SIMPLE_CASH_POINT_ITEMLIST
+
+// Packet: 0x0445
+packetLen(0x0445, 10) // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0446
+packetLen(0x0446, 14) // ZC_QUEST_NOTIFY_EFFECT
+
+// Packet: 0x0447
+packetLen(0x0447, 2) // CZ_BLOCKING_PLAY_CANCEL
+
+// Packet: 0x0448
+packetLen(0x0448, -1) // HC_CHARACTER_LIST
+
+// Packet: 0x0449
+packetLen(0x0449, 4) // ZC_HACKSH_ERROR_MSG
+
+// Packet: 0x044a
+packetLen(0x044a, 6) // CZ_CLIENT_VERSION
+
+// Packet: 0x044b
+packetLen(0x044b, 2) // CZ_CLOSE_SIMPLECASH_SHOP
+
+// Packet: 0x07d7
+packetLen(0x07d7, 8) // CZ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d8
+packetLen(0x07d8, 8) // ZC_REQ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d9
+packetLen(0x07d9, 268) // ZC_SHORTCUT_KEY_LIST_V2
+
+// Packet: 0x07da
+packetLen(0x07da, 6) // CZ_CHANGE_GROUP_MASTER
+
+// Packet: 0x07db
+packetLen(0x07db, 8) // ZC_HO_PAR_CHANGE
+
+// Packet: 0x07dc
+packetLen(0x07dc, 6) // CZ_SEEK_PARTY
+
+// Packet: 0x07dd
+packetLen(0x07dd, 54) // ZC_SEEK_PARTY
+
+// Packet: 0x07de
+packetLen(0x07de, 30) // CZ_SEEK_PARTY_MEMBER
+
+// Packet: 0x07df
+packetLen(0x07df, 54) // ZC_SEEK_PARTY_MEMBER
+
+// Packet: 0x07e0
+packetLen(0x07e0, 58) // ZC_ES_NOTI_MYINFO
+
+// Packet: 0x07e1
+packetLen(0x07e1, 15) // ZC_SKILLINFO_UPDATE2
+
+// Packet: 0x07e2
+packetLen(0x07e2, 8) // ZC_MSG_VALUE
+
+// Packet: 0x07e3
+packetLen(0x07e3, 6) // ZC_ITEMLISTWIN_OPEN
+
+// Packet: 0x07e4
+#if PACKETVER >= 20161207
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20161130
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20161026
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20161019
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160928
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160921
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160913
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160907
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160831
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160817
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160727
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160720
+packetLen(0x07e4, 19) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160629
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160622
+packetLen(0x07e4, 5) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160525
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160511
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160504
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160427
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160414
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160406
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160323
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160316
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160217
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160211
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160203
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160120
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160106
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#endif
+
+// Packet: 0x07e5
+packetLen(0x07e5, 4) // CH_ENTER_CHECKBOT
+
+// Packet: 0x07e6
+packetLen(0x07e6, 8) // ZC_MSG_SKILL
+
+// Packet: 0x07e7
+packetLen(0x07e7, 32) // CH_CHECKBOT
+
+// Packet: 0x07e8
+packetLen(0x07e8, -1) // HC_CHECKBOT
+
+// Packet: 0x07e9
+packetLen(0x07e9, 5) // HC_CHECKBOT_RESULT
+
+// Packet: 0x07ea
+packetLen(0x07ea, 2) // CZ_BATTLE_FIELD_LIST
+
+// Packet: 0x07eb
+packetLen(0x07eb, -1) // ZC_BATTLE_FIELD_LIST
+
+// Packet: 0x07ec
+#if PACKETVER >= 20161207
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20161130
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20161026
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20161019
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20161012
+packetLen(0x07ec, -1) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160928
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160921
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160913
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160907
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160831
+packetLen(0x07ec, 6) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160824
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160803
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160727
+packetLen(0x07ec, 6) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160615
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160608
+packetLen(0x07ec, 5) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160525
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160511
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160504
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160427
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160323
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160316
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160217
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160211
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160203
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160120
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160113
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160106
+packetLen(0x07ec, 5) // CZ_JOIN_BATTLE_FIELD
+#endif
+
+// Packet: 0x07ed
+packetLen(0x07ed, 10) // ZC_JOIN_BATTLE_FIELD
+
+// Packet: 0x07ee
+packetLen(0x07ee, 6) // CZ_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07ef
+packetLen(0x07ef, 8) // ZC_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07f0
+packetLen(0x07f0, 6) // CZ_REQ_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f1
+packetLen(0x07f1, 18) // ZC_ACK_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f2
+packetLen(0x07f2, 8) // ZC_BATTLE_NOTI_START_STEP
+
+// Packet: 0x07f3
+packetLen(0x07f3, 6) // ZC_BATTLE_JOIN_NOTI_DEFER
+
+// Packet: 0x07f4
+packetLen(0x07f4, 3) // ZC_BATTLE_JOIN_DISABLE_STATE
+
+// Packet: 0x07f5
+packetLen(0x07f5, 6) // CZ_GM_FULLSTRIP
+
+// Packet: 0x07f6
+packetLen(0x07f6, 14) // ZC_NOTIFY_EXP
+
+// Packet: 0x07f7
+packetLen(0x07f7, -1) // ZC_NOTIFY_MOVEENTRY7
+
+// Packet: 0x07f8
+packetLen(0x07f8, -1) // ZC_NOTIFY_NEWENTRY5
+
+// Packet: 0x07f9
+packetLen(0x07f9, -1) // ZC_NOTIFY_STANDENTRY5
+
+// Packet: 0x07fa
+packetLen(0x07fa, 8) // ZC_DELETE_ITEM_FROM_BODY
+
+// Packet: 0x07fb
+packetLen(0x07fb, 25) // ZC_USESKILL_ACK2
+
+// Packet: 0x07fc
+packetLen(0x07fc, 10) // ZC_CHANGE_GROUP_MASTER
+
+// Packet: 0x07fd
+packetLen(0x07fd, -1) // ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN
+
+// Packet: 0x07fe
+packetLen(0x07fe, 26) // ZC_PLAY_NPC_BGM
+
+// Packet: 0x0800
+packetLen(0x0800, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0801
+packetLen(0x0801, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0802
+#if PACKETVER >= 20161207
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20161130
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20161109
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20161102
+packetLen(0x0802, 6) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20161026
+packetLen(0x0802, 18) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20161019
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160928
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160921
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160913
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160907
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160831
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160824
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160615
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160608
+packetLen(0x0802, 6) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160525
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160511
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160504
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160427
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160323
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160316
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160309
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160302
+packetLen(0x0802, 19) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160217
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160211
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160203
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160120
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160106
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// Packet: 0x0803
+packetLen(0x0803, 4) // ZC_PARTY_BOOKING_ACK_REGISTER
+
+// Packet: 0x0804
+packetLen(0x0804, 14) // CZ_PARTY_BOOKING_REQ_SEARCH
+
+// Packet: 0x0805
+packetLen(0x0805, -1) // ZC_PARTY_BOOKING_ACK_SEARCH
+
+// Packet: 0x0806
+packetLen(0x0806, 2) // CZ_PARTY_BOOKING_REQ_DELETE
+
+// Packet: 0x0807
+packetLen(0x0807, 4) // ZC_PARTY_BOOKING_ACK_DELETE
+
+// Packet: 0x0808
+packetLen(0x0808, 14) // CZ_PARTY_BOOKING_REQ_UPDATE
+
+// Packet: 0x0809
+packetLen(0x0809, 50) // ZC_PARTY_BOOKING_NOTIFY_INSERT
+
+// Packet: 0x080a
+packetLen(0x080a, 18) // ZC_PARTY_BOOKING_NOTIFY_UPDATE
+
+// Packet: 0x080b
+packetLen(0x080b, 6) // ZC_PARTY_BOOKING_NOTIFY_DELETE
+
+// Packet: 0x080c
+packetLen(0x080c, 2) // CZ_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080d
+packetLen(0x080d, 3) // ZC_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080e
+packetLen(0x080e, 14) // ZC_NOTIFY_HP_TO_GROUPM_R2
+
+// Packet: 0x080f
+packetLen(0x080f, 20) // ZC_ADD_EXCHANGE_ITEM2
+
+// Packet: 0x0810
+packetLen(0x0810, 3) // ZC_OPEN_BUYING_STORE
+
+// Packet: 0x0811
+#if PACKETVER >= 20161221
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20161130
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20161026
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20161019
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20161005
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160928
+packetLen(0x0811, 8) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160921
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160913
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160907
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160831
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160824
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160817
+packetLen(0x0811, 4) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160608
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160511
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160504
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160414
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160406
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160316
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160302
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160224
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160217
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160211
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160203
+packetLen(0x0811, 5) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160120
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160113
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160106
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#endif
+
+// Packet: 0x0812
+packetLen(0x0812, 8) // ZC_FAILED_OPEN_BUYING_STORE_TO_BUYER
+
+// Packet: 0x0813
+packetLen(0x0813, -1) // ZC_MYITEMLIST_BUYING_STORE
+
+// Packet: 0x0814
+packetLen(0x0814, 86) // ZC_BUYING_STORE_ENTRY
+
+// Packet: 0x0815
+#if PACKETVER >= 20161221
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20161130
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20161026
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20161019
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160928
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160921
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160913
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160907
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160831
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160824
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160615
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160511
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160504
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160414
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160406
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160316
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160302
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160224
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160217
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160120
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160113
+packetLen(0x0815, 36) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160106
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#endif
+
+// Packet: 0x0816
+packetLen(0x0816, 6) // ZC_DISAPPEAR_BUYING_STORE_ENTRY
+
+// Packet: 0x0817
+#if PACKETVER >= 20161228
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20161221
+packetLen(0x0817, 8) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20160921
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20160913
+packetLen(0x0817, 8) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20160608
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20160601
+packetLen(0x0817, 26) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20160106
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#endif
+
+// Packet: 0x0818
+packetLen(0x0818, -1) // ZC_ACK_ITEMLIST_BUYING_STORE
+
+// Packet: 0x0819
+#if PACKETVER >= 20161221
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20161214
+packetLen(0x0819, 4) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20161130
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20161026
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20161019
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20161012
+packetLen(0x0819, 26) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160928
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160921
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160913
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160907
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160831
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160824
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160817
+packetLen(0x0819, 6) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160810
+packetLen(0x0819, 10) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160727
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160720
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160615
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160511
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160427
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160420
+packetLen(0x0819, 5) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160414
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160406
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160316
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160309
+packetLen(0x0819, 10) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160302
+packetLen(0x0819, 5) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160224
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160217
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160211
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160203
+packetLen(0x0819, 19) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160120
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160113
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160106
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#endif
+
+// Packet: 0x081a
+packetLen(0x081a, 4) // ZC_FAILED_TRADE_BUYING_STORE_TO_BUYER
+
+// Packet: 0x081b
+packetLen(0x081b, 10) // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+
+// Packet: 0x081c
+packetLen(0x081c, 10) // ZC_ITEM_DELETE_BUYING_STORE
+
+// Packet: 0x081d
+packetLen(0x081d, 22) // ZC_EL_INIT
+
+// Packet: 0x081e
+packetLen(0x081e, 8) // ZC_EL_PAR_CHANGE
+
+// Packet: 0x081f
+packetLen(0x081f, -1) // ZC_BROADCAST4
+
+// Packet: 0x0820
+packetLen(0x0820, 11) // ZC_COSTUME_SPRITE_CHANGE
+
+// Packet: 0x0821
+packetLen(0x0821, 2) // AC_OTP_USER
+
+// Packet: 0x0822
+packetLen(0x0822, 9) // CA_OTP_AUTH_REQ
+
+// Packet: 0x0823
+packetLen(0x0823, -1) // AC_OTP_AUTH_ACK
+
+// Packet: 0x0824
+packetLen(0x0824, 6) // ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER
+
+// Packet: 0x0825
+packetLen(0x0825, -1) // CA_SSO_LOGIN_REQ
+
+// Packet: 0x0827
+packetLen(0x0827, 6) // CH_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0828
+packetLen(0x0828, 14) // HC_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0829
+packetLen(0x0829, 12) // CH_DELETE_CHAR3
+
+// Packet: 0x082a
+packetLen(0x082a, 10) // HC_DELETE_CHAR3
+
+// Packet: 0x082b
+packetLen(0x082b, 6) // CH_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082c
+packetLen(0x082c, 10) // HC_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082d
+packetLen(0x082d, -1) // HC_ACCEPT_ENTER2
+
+// Packet: 0x0835
+#if PACKETVER >= 20161123
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20161116
+packetLen(0x0835, 26) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20161109
+packetLen(0x0835, 6) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20160907
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20160831
+packetLen(0x0835, 19) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20160504
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20160427
+packetLen(0x0835, 36) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20160211
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20160203
+packetLen(0x0835, -1) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20160106
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#endif
+
+// Packet: 0x0836
+packetLen(0x0836, -1) // ZC_SEARCH_STORE_INFO_ACK
+
+// Packet: 0x0837
+packetLen(0x0837, 3) // ZC_SEARCH_STORE_INFO_FAILED
+
+// Packet: 0x0838
+#if PACKETVER >= 20161221
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20161130
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20161109
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20161102
+packetLen(0x0838, -1) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20161026
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20161019
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20161012
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20161005
+packetLen(0x0838, 36) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160928
+packetLen(0x0838, 26) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160921
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160913
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160907
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160831
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160824
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160817
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160810
+packetLen(0x0838, 26) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160727
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160720
+packetLen(0x0838, 5) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160713
+packetLen(0x0838, 6) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160615
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160511
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160504
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160414
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160406
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160316
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160309
+packetLen(0x0838, 5) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160302
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160224
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160217
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160120
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160113
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160106
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#endif
+
+// Packet: 0x0839
+packetLen(0x0839, 66) // ZC_ACK_BAN_GUILD_SSO
+
+// Packet: 0x083a
+packetLen(0x083a, 5) // ZC_OPEN_SEARCH_STORE_INFO
+
+// Packet: 0x083b
+packetLen(0x083b, 2) // CZ_CLOSE_SEARCH_STORE_INFO
+
+// Packet: 0x083c
+#if PACKETVER >= 20161221
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20161130
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20161109
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20161102
+packetLen(0x083c, 18) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20161026
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20161019
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160928
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160921
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160913
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160907
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160831
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160824
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160817
+packetLen(0x083c, -1) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160622
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160615
+packetLen(0x083c, 6) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160511
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160504
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160414
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160406
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160316
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160309
+packetLen(0x083c, 26) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160302
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160224
+packetLen(0x083c, 8) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160217
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160120
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160113
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160106
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#endif
+
+// Packet: 0x083d
+packetLen(0x083d, 6) // ZC_SSILIST_ITEM_CLICK_ACK
+
+// Packet: 0x083e
+packetLen(0x083e, 26) // AC_REFUSE_LOGIN2
+
+// Packet: 0x0840
+packetLen(0x0840, -1) // HC_NOTIFY_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0841
+packetLen(0x0841, 4) // CH_SELECT_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0842
+packetLen(0x0842, 6) // CZ_RECALL_SSO
+
+// Packet: 0x0843
+packetLen(0x0843, 6) // CZ_REMOVE_AID_SSO
+
+// Packet: 0x0844
+packetLen(0x0844, 2) // CZ_SE_CASHSHOP_OPEN
+
+// Packet: 0x0845
+packetLen(0x0845, 10) // ZC_SE_CASHSHOP_OPEN
+
+// Packet: 0x0846
+packetLen(0x0846, 4) // CZ_REQ_SE_CASH_TAB_CODE
+
+// Packet: 0x0847
+packetLen(0x0847, -1) // ZC_ACK_SE_CASH_ITEM_LIST
+
+// Packet: 0x0848
+packetLen(0x0848, -1) // CZ_SE_PC_BUY_CASHITEM_LIST
+
+// Packet: 0x0849
+packetLen(0x0849, 16) // ZC_SE_PC_BUY_CASHITEM_RESULT
+
+// Packet: 0x084a
+packetLen(0x084a, 2) // CZ_SE_CASHSHOP_CLOSE
+
+// Packet: 0x084b
+packetLen(0x084b, 19) // ZC_ITEM_FALL_ENTRY4
+
+// Packet: 0x084c
+packetLen(0x084c, 10) // CZ_MACRO_USE_SKILL
+
+// Packet: 0x084d
+packetLen(0x084d, 10) // CZ_MACRO_USE_SKILL_TOGROUND
+
+// Packet: 0x084e
+packetLen(0x084e, 5) // CZ_MACRO_REQUEST_MOVE
+
+// Packet: 0x084f
+packetLen(0x084f, 6) // CZ_MACRO_ITEM_PICKUP
+
+// Packet: 0x0850
+packetLen(0x0850, 7) // CZ_MACRO_REQUEST_ACT
+
+// Packet: 0x0851
+packetLen(0x0851, -1) // ZC_GPK_DYNCODE
+
+// Packet: 0x0852
+packetLen(0x0852, 2) // CZ_GPK_DYNCODE_RELOAD
+
+// Packet: 0x0853
+packetLen(0x0853, -1) // ZC_GPK_AUTH
+
+// Packet: 0x0854
+packetLen(0x0854, -1) // CZ_GPK_AUTH
+
+// Packet: 0x0855
+packetLen(0x0855, 6) // ZC_MACRO_ITEMPICKUP_FAIL
+
+// Packet: 0x0856
+packetLen(0x0856, -1) // ZC_NOTIFY_MOVEENTRY8
+
+// Packet: 0x0857
+packetLen(0x0857, -1) // ZC_NOTIFY_STANDENTRY7
+
+// Packet: 0x0858
+packetLen(0x0858, -1) // ZC_NOTIFY_NEWENTRY6
+
+// Packet: 0x0859
+packetLen(0x0859, -1) // ZC_EQUIPWIN_MICROSCOPE2
+
+// Packet: 0x085a
+#if PACKETVER >= 20161228
+packetLen(0x085a, 6) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20161221
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20161214
+packetLen(0x085a, -1) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20161102
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20161026
+packetLen(0x085a, 8) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160601
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160525
+packetLen(0x085a, 4) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160414
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160406
+packetLen(0x085a, 18) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160316
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160309
+packetLen(0x085a, 8) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160106
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x085b
+#if PACKETVER >= 20161228
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20161221
+packetLen(0x085b, 90) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20161019
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20161012
+packetLen(0x085b, 4) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160921
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160913
+packetLen(0x085b, 12) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160309
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160302
+packetLen(0x085b, 26) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160120
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160113
+packetLen(0x085b, 5) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160106
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x085c
+#if PACKETVER >= 20161130
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20161123
+packetLen(0x085c, 90) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160824
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160817
+packetLen(0x085c, 6) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160706
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160629
+packetLen(0x085c, 90) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160615
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160608
+packetLen(0x085c, 8) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160414
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160406
+packetLen(0x085c, 10) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160106
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#endif
+
+// Packet: 0x085d
+#if PACKETVER >= 20160817
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20160810
+packetLen(0x085d, 12) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20160803
+packetLen(0x085d, 6) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20160106
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x085e
+#if PACKETVER >= 20161228
+packetLen(0x085e, 5) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20161116
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20161109
+packetLen(0x085e, 90) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160817
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160810
+packetLen(0x085e, 6) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160706
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160629
+packetLen(0x085e, 8) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160601
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160525
+packetLen(0x085e, 6) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160518
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160511
+packetLen(0x085e, 5) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160203
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160127
+packetLen(0x085e, 5) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160106
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x085f
+#if PACKETVER >= 20161123
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20161116
+packetLen(0x085f, 6) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20161109
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20161102
+packetLen(0x085f, 10) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20161026
+packetLen(0x085f, 7) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160817
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160810
+packetLen(0x085f, 18) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160713
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160706
+packetLen(0x085f, 26) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160511
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160504
+packetLen(0x085f, 7) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160316
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160309
+packetLen(0x085f, 10) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160106
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x0860
+#if PACKETVER >= 20160817
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20160810
+packetLen(0x0860, 6) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20160720
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20160713
+packetLen(0x0860, 6) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20160706
+packetLen(0x0860, 7) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20160629
+packetLen(0x0860, -1) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20160106
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x0861
+#if PACKETVER >= 20161130
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20161123
+packetLen(0x0861, 5) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20161102
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20161026
+packetLen(0x0861, -1) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20160706
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20160629
+packetLen(0x0861, 6) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20160622
+packetLen(0x0861, -1) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20160302
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20160224
+packetLen(0x0861, 19) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20160113
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20160106
+packetLen(0x0861, 6) // ZC_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x0862
+#if PACKETVER >= 20161221
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20161214
+packetLen(0x0862, 26) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20161102
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20161026
+packetLen(0x0862, 6) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20160420
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20160414
+packetLen(0x0862, 19) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20160106
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x0863
+#if PACKETVER >= 20161019
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20161012
+packetLen(0x0863, 7) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20161005
+packetLen(0x0863, 6) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160706
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160629
+packetLen(0x0863, 6) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160608
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160601
+packetLen(0x0863, 6) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160106
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x0864
+#if PACKETVER >= 20161123
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20161116
+packetLen(0x0864, 26) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20161005
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160928
+packetLen(0x0864, 8) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160427
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160420
+packetLen(0x0864, 6) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160309
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160302
+packetLen(0x0864, -1) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160224
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160217
+packetLen(0x0864, 8) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160120
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160113
+packetLen(0x0864, 6) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160106
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x0865
+#if PACKETVER >= 20161228
+packetLen(0x0865, 90) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20161116
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20161109
+packetLen(0x0865, 5) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160921
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160913
+packetLen(0x0865, 6) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160907
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160831
+packetLen(0x0865, 5) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160720
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160713
+packetLen(0x0865, -1) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160629
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160622
+packetLen(0x0865, 4) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160309
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160302
+packetLen(0x0865, -1) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160127
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160120
+packetLen(0x0865, 36) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160106
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0866
+#if PACKETVER >= 20161228
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20161221
+packetLen(0x0866, -1) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20160803
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20160727
+packetLen(0x0866, 4) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20160622
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20160615
+packetLen(0x0866, 5) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20160106
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0867
+#if PACKETVER >= 20161214
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20161207
+packetLen(0x0867, 26) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160824
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160817
+packetLen(0x0867, 12) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160706
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160629
+packetLen(0x0867, 36) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160622
+packetLen(0x0867, 8) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160601
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160525
+packetLen(0x0867, 5) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160406
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160330
+packetLen(0x0867, 26) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160323
+packetLen(0x0867, 8) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160309
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160302
+packetLen(0x0867, -1) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160106
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0868
+#if PACKETVER >= 20161214
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20161207
+packetLen(0x0868, 8) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20161019
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20161012
+packetLen(0x0868, 6) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20160803
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20160727
+packetLen(0x0868, 26) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20160309
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20160302
+packetLen(0x0868, 5) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20160106
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0869
+#if PACKETVER >= 20161109
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20161102
+packetLen(0x0869, 8) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20160803
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20160727
+packetLen(0x0869, 12) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20160720
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20160706
+packetLen(0x0869, -1) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20160414
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20160406
+packetLen(0x0869, -1) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20160330
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20160323
+packetLen(0x0869, 6) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20160106
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x086a
+#if PACKETVER >= 20161228
+packetLen(0x086a, -1) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20161116
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20161109
+packetLen(0x086a, 7) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20160601
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20160525
+packetLen(0x086a, 19) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20160330
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20160323
+packetLen(0x086a, 8) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20160316
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20160309
+packetLen(0x086a, -1) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20160113
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20160106
+packetLen(0x086a, 6) // ZC_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x086b
+#if PACKETVER >= 20160824
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20160817
+packetLen(0x086b, 6) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20160713
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20160706
+packetLen(0x086b, -1) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20160511
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20160504
+packetLen(0x086b, -1) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20160302
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20160224
+packetLen(0x086b, 8) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20160106
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x086c
+#if PACKETVER >= 20161228
+packetLen(0x086c, 6) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20161102
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20161026
+packetLen(0x086c, 12) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20160525
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20160518
+packetLen(0x086c, 5) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20160217
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20160211
+packetLen(0x086c, 5) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20160203
+packetLen(0x086c, 18) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20160113
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20160106
+packetLen(0x086c, 4) // ZC_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x086d
+#if PACKETVER >= 20161228
+packetLen(0x086d, 19) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20161221
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20161214
+packetLen(0x086d, 26) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20161116
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20161109
+packetLen(0x086d, 10) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20161019
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20161012
+packetLen(0x086d, 19) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20161005
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20160928
+packetLen(0x086d, 6) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20160727
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20160720
+packetLen(0x086d, 6) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20160406
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20160330
+packetLen(0x086d, 6) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20160120
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20160113
+packetLen(0x086d, 5) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20160106
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x086e
+#if PACKETVER >= 20161102
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20161026
+packetLen(0x086e, 8) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20160106
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x086f
+#if PACKETVER >= 20161130
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20161116
+packetLen(0x086f, 6) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20161109
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20161102
+packetLen(0x086f, 8) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20160817
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20160810
+packetLen(0x086f, -1) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20160106
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x0870
+#if PACKETVER >= 20161228
+packetLen(0x0870, -1) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20161116
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20161109
+packetLen(0x0870, 19) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160907
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160831
+packetLen(0x0870, 18) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160622
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160615
+packetLen(0x0870, 4) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160608
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160601
+packetLen(0x0870, 8) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160427
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160420
+packetLen(0x0870, 4) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160224
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160211
+packetLen(0x0870, 26) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160106
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x0871
+#if PACKETVER >= 20161228
+packetLen(0x0871, 5) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20161130
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20161123
+packetLen(0x0871, 4) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20160106
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x0872
+#if PACKETVER >= 20161019
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20161012
+packetLen(0x0872, 12)
+#elif PACKETVER >= 20161005
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20160928
+packetLen(0x0872, 5)
+#elif PACKETVER >= 20160427
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20160420
+packetLen(0x0872, 5)
+#elif PACKETVER >= 20160330
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20160323
+packetLen(0x0872, 36)
+#elif PACKETVER >= 20160211
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20160203
+packetLen(0x0872, 5)
+#elif PACKETVER >= 20160106
+packetLen(0x0872, 2)
+#endif
+
+// Packet: 0x0873
+#if PACKETVER >= 20160316
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20160309
+packetLen(0x0873, 8) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20160302
+packetLen(0x0873, 12) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20160224
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20160217
+packetLen(0x0873, 5) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20160211
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20160203
+packetLen(0x0873, 36) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20160120
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20160113
+packetLen(0x0873, 4) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20160106
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x0874
+#if PACKETVER >= 20161109
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20161102
+packetLen(0x0874, -1) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160921
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160913
+packetLen(0x0874, 6) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160907
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160831
+packetLen(0x0874, 26) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160803
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160727
+packetLen(0x0874, 6) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160525
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160518
+packetLen(0x0874, 19) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160427
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160420
+packetLen(0x0874, 8) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160106
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x0875
+#if PACKETVER >= 20161214
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20161207
+packetLen(0x0875, 8) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20161019
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20161012
+packetLen(0x0875, -1) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20160921
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20160913
+packetLen(0x0875, 6) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20160824
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20160817
+packetLen(0x0875, 19) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20160810
+packetLen(0x0875, 5) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20160106
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x0876
+#if PACKETVER >= 20161228
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20161221
+packetLen(0x0876, 12) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20161116
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20161109
+packetLen(0x0876, 6) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20160907
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20160831
+packetLen(0x0876, 8) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20160106
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x0877
+#if PACKETVER >= 20160803
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20160727
+packetLen(0x0877, 18) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20160720
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20160713
+packetLen(0x0877, 10) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20160414
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20160406
+packetLen(0x0877, 6) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20160106
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x0878
+#if PACKETVER >= 20161005
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160928
+packetLen(0x0878, 6) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160907
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160831
+packetLen(0x0878, 7) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160810
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160803
+packetLen(0x0878, 4) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160414
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160406
+packetLen(0x0878, 26) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160330
+packetLen(0x0878, 8) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160323
+packetLen(0x0878, 19) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160113
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160106
+packetLen(0x0878, 36) // ZC_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x0879
+#if PACKETVER >= 20160921
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20160913
+packetLen(0x0879, 6) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20160817
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20160810
+packetLen(0x0879, 6) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20160414
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20160406
+packetLen(0x0879, -1) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20160106
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x087a
+#if PACKETVER >= 20161116
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20161109
+packetLen(0x087a, 8) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20161102
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20161026
+packetLen(0x087a, -1) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160921
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160913
+packetLen(0x087a, 8) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160817
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160810
+packetLen(0x087a, 5) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160420
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160414
+packetLen(0x087a, 8) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160309
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160302
+packetLen(0x087a, 10) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160224
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160217
+packetLen(0x087a, 19) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160113
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160106
+packetLen(0x087a, 18) // ZC_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x087b
+#if PACKETVER >= 20160720
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20160713
+packetLen(0x087b, 6) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20160106
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x087c
+#if PACKETVER >= 20161102
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20161026
+packetLen(0x087c, 4) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20160907
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20160831
+packetLen(0x087c, 6) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20160316
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20160309
+packetLen(0x087c, 19) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20160106
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#endif
+
+// Packet: 0x087d
+#if PACKETVER >= 20160622
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20160615
+packetLen(0x087d, 6) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20160608
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20160601
+packetLen(0x087d, -1) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20160309
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20160302
+packetLen(0x087d, 26) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20160106
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x087e
+#if PACKETVER >= 20161214
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20161207
+packetLen(0x087e, -1) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20160622
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20160615
+packetLen(0x087e, 6) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20160316
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20160309
+packetLen(0x087e, 90) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20160106
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x087f
+#if PACKETVER >= 20161228
+packetLen(0x087f, 12) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20161130
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20161123
+packetLen(0x087f, 26) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20161102
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20161026
+packetLen(0x087f, 10) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20161005
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160928
+packetLen(0x087f, 12) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160824
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160817
+packetLen(0x087f, 6) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160810
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160803
+packetLen(0x087f, 5) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160727
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160720
+packetLen(0x087f, 6) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160622
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160615
+packetLen(0x087f, 90) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160406
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160330
+packetLen(0x087f, 8) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160113
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160106
+packetLen(0x087f, 19) // ZC_REASSEMBLY_AUTH38
+#endif
+
+// Packet: 0x0880
+#if PACKETVER >= 20161130
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20161123
+packetLen(0x0880, 36) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20161019
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20161012
+packetLen(0x0880, 10) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20160629
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20160622
+packetLen(0x0880, -1) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20160420
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20160414
+packetLen(0x0880, 18) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20160106
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x0881
+#if PACKETVER >= 20161228
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20161221
+packetLen(0x0881, 6) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20161116
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20161109
+packetLen(0x0881, 8) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20160810
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20160803
+packetLen(0x0881, 18) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20160706
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20160629
+packetLen(0x0881, 19) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20160106
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x0882
+#if PACKETVER >= 20161130
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20161123
+packetLen(0x0882, -1) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20160106
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x0883
+#if PACKETVER >= 20160803
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20160727
+packetLen(0x0883, 7) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20160720
+packetLen(0x0883, 10) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20160713
+packetLen(0x0883, -1) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20160330
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20160323
+packetLen(0x0883, 26) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20160309
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20160302
+packetLen(0x0883, 10) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20160106
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x0884
+#if PACKETVER >= 20161228
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20161221
+packetLen(0x0884, 8) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160713
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160706
+packetLen(0x0884, 26) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160622
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160615
+packetLen(0x0884, 8) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160511
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160504
+packetLen(0x0884, 10) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160427
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160420
+packetLen(0x0884, 6) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160414
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160406
+packetLen(0x0884, -1) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160302
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160224
+packetLen(0x0884, 7) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160106
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x0885
+#if PACKETVER >= 20161228
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20161221
+packetLen(0x0885, -1) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20161123
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20161116
+packetLen(0x0885, -1) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160817
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160810
+packetLen(0x0885, 19) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160706
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160629
+packetLen(0x0885, 5) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160615
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160608
+packetLen(0x0885, 90) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160420
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160414
+packetLen(0x0885, 8) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160302
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160224
+packetLen(0x0885, 6) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160113
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160106
+packetLen(0x0885, 8) // CZ_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x0886
+#if PACKETVER >= 20161228
+packetLen(0x0886, 5) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20161214
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20161207
+packetLen(0x0886, 7) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20161109
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20161102
+packetLen(0x0886, 90) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20161026
+packetLen(0x0886, 6) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20161012
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20161005
+packetLen(0x0886, -1) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160824
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160817
+packetLen(0x0886, 7) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160810
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160803
+packetLen(0x0886, 8) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160713
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160706
+packetLen(0x0886, 4) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160511
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160504
+packetLen(0x0886, 8) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160217
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160211
+packetLen(0x0886, 5) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160106
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#endif
+
+// Packet: 0x0887
+#if PACKETVER >= 20161221
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20161214
+packetLen(0x0887, 6) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20160921
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20160913
+packetLen(0x0887, -1) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20160810
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20160803
+packetLen(0x0887, 6) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20160727
+packetLen(0x0887, 19) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20160720
+packetLen(0x0887, 6) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20160622
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20160615
+packetLen(0x0887, -1) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20160511
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20160504
+packetLen(0x0887, 26) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20160106
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x0888
+#if PACKETVER >= 20160817
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160810
+packetLen(0x0888, 26) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160803
+packetLen(0x0888, 90) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160622
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160615
+packetLen(0x0888, 10) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160427
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160420
+packetLen(0x0888, 19) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160302
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160224
+packetLen(0x0888, 5) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160217
+packetLen(0x0888, 6) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160120
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160113
+packetLen(0x0888, 90) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160106
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x0889
+#if PACKETVER >= 20161228
+packetLen(0x0889, -1) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20161026
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20161019
+packetLen(0x0889, 36) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20161005
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160928
+packetLen(0x0889, 19) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160921
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160913
+packetLen(0x0889, 6) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160713
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160706
+packetLen(0x0889, -1) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160615
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160608
+packetLen(0x0889, -1) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160406
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160330
+packetLen(0x0889, 90) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160113
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160106
+packetLen(0x0889, 5) // CZ_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x088a
+#if PACKETVER >= 20160622
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20160615
+packetLen(0x088a, 6) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20160511
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20160504
+packetLen(0x088a, 6) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20160113
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20160106
+packetLen(0x088a, 26) // CZ_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x088b
+#if PACKETVER >= 20161130
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20161123
+packetLen(0x088b, 6) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20161116
+packetLen(0x088b, 5) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20160427
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20160420
+packetLen(0x088b, 8) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20160406
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20160330
+packetLen(0x088b, 5) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20160120
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20160113
+packetLen(0x088b, 26) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20160106
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x088c
+#if PACKETVER >= 20161228
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20161221
+packetLen(0x088c, -1) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20160211
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20160203
+packetLen(0x088c, 4) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20160106
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x088d
+#if PACKETVER >= 20161123
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20161116
+packetLen(0x088d, 6) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160720
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160713
+packetLen(0x088d, 18) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160622
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160615
+packetLen(0x088d, -1) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160608
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160601
+packetLen(0x088d, 6) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160511
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160504
+packetLen(0x088d, 10) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160406
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160330
+packetLen(0x088d, 4) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160224
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160217
+packetLen(0x088d, 6) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160106
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x088e
+#if PACKETVER >= 20161116
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20161109
+packetLen(0x088e, -1) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20161012
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20161005
+packetLen(0x088e, 8) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160928
+packetLen(0x088e, -1) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160921
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160913
+packetLen(0x088e, 10) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160803
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160727
+packetLen(0x088e, 10) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160706
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160629
+packetLen(0x088e, 6) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160106
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x088f
+#if PACKETVER >= 20161207
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20161130
+packetLen(0x088f, 4) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20161123
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20161116
+packetLen(0x088f, 19) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20161109
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20161102
+packetLen(0x088f, 5) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160921
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160913
+packetLen(0x088f, -1) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160608
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160601
+packetLen(0x088f, 8) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160511
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160504
+packetLen(0x088f, -1) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160224
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160217
+packetLen(0x088f, 6) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160106
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0890
+#if PACKETVER >= 20161228
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20161221
+packetLen(0x0890, 36) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20161123
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20161116
+packetLen(0x0890, 5) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20161109
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20161102
+packetLen(0x0890, 6) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20160817
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20160810
+packetLen(0x0890, -1) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20160629
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20160622
+packetLen(0x0890, 26) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20160511
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20160504
+packetLen(0x0890, 6) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20160106
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0891
+#if PACKETVER >= 20161116
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20161109
+packetLen(0x0891, 12) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20161102
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20161026
+packetLen(0x0891, 6) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20161012
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20161005
+packetLen(0x0891, 5) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160921
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160913
+packetLen(0x0891, -1) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160824
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160817
+packetLen(0x0891, 10) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160810
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160803
+packetLen(0x0891, 5) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160727
+packetLen(0x0891, -1) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160629
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160622
+packetLen(0x0891, 6) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160615
+packetLen(0x0891, 10) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160113
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160106
+packetLen(0x0891, 8) // CZ_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0892
+#if PACKETVER >= 20161123
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20161116
+packetLen(0x0892, -1) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20161026
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20161019
+packetLen(0x0892, 4) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20161012
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20161005
+packetLen(0x0892, 18) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20160921
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20160913
+packetLen(0x0892, 10) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20160720
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20160713
+packetLen(0x0892, 12) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20160706
+packetLen(0x0892, 5) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20160414
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20160406
+packetLen(0x0892, 90) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20160120
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20160113
+packetLen(0x0892, 10) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20160106
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0893
+#if PACKETVER >= 20161228
+packetLen(0x0893, 6) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20161123
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20161116
+packetLen(0x0893, 7) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20161019
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20161012
+packetLen(0x0893, 8) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20160706
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20160629
+packetLen(0x0893, 6) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20160511
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20160504
+packetLen(0x0893, 18) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20160120
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20160113
+packetLen(0x0893, -1) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20160106
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x0894
+#if PACKETVER >= 20161102
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20161026
+packetLen(0x0894, 10) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20160518
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20160511
+packetLen(0x0894, 26) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20160106
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x0895
+#if PACKETVER >= 20161221
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20161214
+packetLen(0x0895, 8) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20160810
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20160803
+packetLen(0x0895, 26) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20160608
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20160601
+packetLen(0x0895, 5) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20160414
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20160406
+packetLen(0x0895, 19) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20160106
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x0896
+#if PACKETVER >= 20160330
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20160323
+packetLen(0x0896, -1) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20160106
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x0897
+#if PACKETVER >= 20161005
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20160928
+packetLen(0x0897, 90) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20160727
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20160720
+packetLen(0x0897, -1) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20160106
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x0898
+#if PACKETVER >= 20161116
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20161109
+packetLen(0x0898, 6) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20161102
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20161026
+packetLen(0x0898, 26) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20160622
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20160615
+packetLen(0x0898, 6) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20160511
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20160504
+packetLen(0x0898, 8) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20160414
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20160406
+packetLen(0x0898, 26) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20160106
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x0899
+#if PACKETVER >= 20161228
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20161221
+packetLen(0x0899, 4) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20161214
+packetLen(0x0899, 36) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20160713
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20160706
+packetLen(0x0899, 10) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20160615
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20160608
+packetLen(0x0899, 6) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20160601
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20160525
+packetLen(0x0899, 6) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20160224
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20160217
+packetLen(0x0899, 4) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20160120
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20160113
+packetLen(0x0899, 26) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20160106
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x089a
+#if PACKETVER >= 20161228
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20161221
+packetLen(0x089a, 8) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20161116
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20161109
+packetLen(0x089a, 6) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20161005
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160928
+packetLen(0x089a, 7) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160727
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160720
+packetLen(0x089a, 36) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160713
+packetLen(0x089a, 26) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160629
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160622
+packetLen(0x089a, 18) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160525
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160518
+packetLen(0x089a, 36) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160330
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160323
+packetLen(0x089a, 5) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160120
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160113
+packetLen(0x089a, 7) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160106
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x089b
+#if PACKETVER >= 20161228
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20161221
+packetLen(0x089b, 7) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20161012
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20161005
+packetLen(0x089b, 26) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20160921
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20160913
+packetLen(0x089b, 8) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20160615
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20160608
+packetLen(0x089b, 5) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20160518
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20160511
+packetLen(0x089b, 4) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20160414
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20160406
+packetLen(0x089b, 6) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20160316
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20160309
+packetLen(0x089b, -1) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20160106
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x089c
+#if PACKETVER >= 20161130
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20161123
+packetLen(0x089c, 5) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20161012
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20161005
+packetLen(0x089c, 6) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20160921
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20160913
+packetLen(0x089c, 36) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20160824
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20160817
+packetLen(0x089c, -1) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20160810
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20160803
+packetLen(0x089c, 6) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20160727
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20160720
+packetLen(0x089c, 5) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20160601
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20160525
+packetLen(0x089c, 5) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20160106
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#endif
+
+// Packet: 0x089d
+#if PACKETVER >= 20161116
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20161109
+packetLen(0x089d, -1) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20160817
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20160810
+packetLen(0x089d, 5) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20160511
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20160504
+packetLen(0x089d, 6) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20160316
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20160309
+packetLen(0x089d, 5) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20160106
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x089e
+#if PACKETVER >= 20160727
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160720
+packetLen(0x089e, 8) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160629
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160622
+packetLen(0x089e, 7) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160420
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160414
+packetLen(0x089e, 26) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160406
+packetLen(0x089e, 8) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160106
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x089f
+#if PACKETVER >= 20161228
+packetLen(0x089f, 8) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20161116
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20161109
+packetLen(0x089f, 4) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20161102
+packetLen(0x089f, 26) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20160817
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20160810
+packetLen(0x089f, -1) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20160803
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20160727
+packetLen(0x089f, 10) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20160720
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20160713
+packetLen(0x089f, 4) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20160106
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x08a0
+#if PACKETVER >= 20161019
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20161012
+packetLen(0x08a0, 5) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20161005
+packetLen(0x08a0, 8) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20160727
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20160720
+packetLen(0x08a0, 12) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20160224
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20160217
+packetLen(0x08a0, 8) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20160120
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20160113
+packetLen(0x08a0, 6) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20160106
+packetLen(0x08a0, 26) // CZ_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x08a1
+#if PACKETVER >= 20161214
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20161207
+packetLen(0x08a1, 5) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20161123
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20161116
+packetLen(0x08a1, 5) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20160810
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20160803
+packetLen(0x08a1, -1) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20160414
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20160406
+packetLen(0x08a1, 7) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20160106
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x08a2
+#if PACKETVER >= 20161228
+packetLen(0x08a2, 10) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20161214
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20161207
+packetLen(0x08a2, 6) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20161123
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20161116
+packetLen(0x08a2, 18) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20161109
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20161102
+packetLen(0x08a2, -1) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20161005
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160928
+packetLen(0x08a2, 36) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160803
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160727
+packetLen(0x08a2, 36) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160720
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160713
+packetLen(0x08a2, 8) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160629
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160622
+packetLen(0x08a2, 6) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160106
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x08a3
+#if PACKETVER >= 20161228
+packetLen(0x08a3, 6) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20160106
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x08a4
+#if PACKETVER >= 20160803
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160727
+packetLen(0x08a4, 6) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160720
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160713
+packetLen(0x08a4, 19) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160706
+packetLen(0x08a4, 18) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160106
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x08a5
+#if PACKETVER >= 20161228
+packetLen(0x08a5, 18) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20160921
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20160913
+packetLen(0x08a5, 5) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20160824
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20160817
+packetLen(0x08a5, 36) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20160713
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20160706
+packetLen(0x08a5, 19) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20160427
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20160420
+packetLen(0x08a5, 36) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20160106
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x08a6
+#if PACKETVER >= 20161221
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20161214
+packetLen(0x08a6, 18) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20160824
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20160817
+packetLen(0x08a6, 26) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20160615
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20160608
+packetLen(0x08a6, 8) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20160120
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20160113
+packetLen(0x08a6, 6) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20160106
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#endif
+
+// Packet: 0x08a7
+#if PACKETVER >= 20161116
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20161109
+packetLen(0x08a7, 5) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20160803
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20160727
+packetLen(0x08a7, 6) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20160608
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20160601
+packetLen(0x08a7, 8) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20160316
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20160309
+packetLen(0x08a7, 18) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20160106
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x08a8
+#if PACKETVER >= 20160907
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20160831
+packetLen(0x08a8, -1) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20160713
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20160706
+packetLen(0x08a8, 6) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20160629
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20160622
+packetLen(0x08a8, 36) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20160106
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x08a9
+#if PACKETVER >= 20161130
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20161123
+packetLen(0x08a9, 10) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20161005
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160928
+packetLen(0x08a9, 8) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160907
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160831
+packetLen(0x08a9, 6) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160824
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160817
+packetLen(0x08a9, -1) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160810
+packetLen(0x08a9, 8) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160525
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160518
+packetLen(0x08a9, 26) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160309
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160302
+packetLen(0x08a9, 8) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160217
+packetLen(0x08a9, 26) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160106
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#endif
+
+// Packet: 0x08aa
+#if PACKETVER >= 20161228
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20161221
+packetLen(0x08aa, 6) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20161130
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20161116
+packetLen(0x08aa, 12) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20161109
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20161102
+packetLen(0x08aa, 5) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20160727
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20160720
+packetLen(0x08aa, -1) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20160120
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20160113
+packetLen(0x08aa, -1) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20160106
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x08ab
+#if PACKETVER >= 20161228
+packetLen(0x08ab, 8) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20160824
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20160817
+packetLen(0x08ab, 5) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20160106
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x08ac
+#if PACKETVER >= 20161228
+packetLen(0x08ac, 6) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20161123
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20161116
+packetLen(0x08ac, 8) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20160824
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20160817
+packetLen(0x08ac, 10) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20160608
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20160601
+packetLen(0x08ac, 19) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20160414
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20160406
+packetLen(0x08ac, 8) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20160224
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20160217
+packetLen(0x08ac, 18) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20160106
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x08ad
+#if PACKETVER >= 20161228
+packetLen(0x08ad, 36) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20161214
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20161207
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20161116
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20161109
+packetLen(0x08ad, -1) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20161012
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20161005
+packetLen(0x08ad, -1) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20160824
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20160817
+packetLen(0x08ad, 8) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20160511
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20160504
+packetLen(0x08ad, 5) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20160106
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x08af
+packetLen(0x08af, 10) // HC_WAITING_LOGIN
+
+// Packet: 0x08b0
+packetLen(0x08b0, 17) // CH_WAITING_LOGIN
+
+// Packet: 0x08b1
+packetLen(0x08b1, -1) // ZC_MCSTORE_NOTMOVEITEM_LIST
+
+// Packet: 0x08b2
+packetLen(0x08b2, -1) // AC_REALNAME_AUTH
+
+// Packet: 0x08b3
+packetLen(0x08b3, -1) // ZC_SHOWSCRIPT
+
+// Packet: 0x08b4
+packetLen(0x08b4, 2) // ZC_START_COLLECTION
+
+// Packet: 0x08b5
+packetLen(0x08b5, 6) // CZ_TRYCOLLECTION
+
+// Packet: 0x08b6
+packetLen(0x08b6, 3) // ZC_TRYCOLLECTION
+
+// Packet: 0x08b8
+packetLen(0x08b8, 10) // CH_SECOND_PASSWD_ACK
+
+// Packet: 0x08b9
+packetLen(0x08b9, 12) // HC_SECOND_PASSWD_LOGIN
+
+// Packet: 0x08ba
+packetLen(0x08ba, 10) // CH_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bb
+packetLen(0x08bb, 8) // HC_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bc
+packetLen(0x08bc, 10) // CH_DELETE_SECOND_PASSWD
+
+// Packet: 0x08bd
+packetLen(0x08bd, 8) // HC_DELETE_SECOND_PASSWD
+
+// Packet: 0x08be
+packetLen(0x08be, 14) // CH_EDIT_SECOND_PASSWD
+
+// Packet: 0x08bf
+packetLen(0x08bf, 8) // HC_EDIT_SECOND_PASSWD
+
+// Packet: 0x08c0
+packetLen(0x08c0, -1) // ZC_ACK_SE_CASH_ITEM_LIST2
+
+// Packet: 0x08c1
+packetLen(0x08c1, 2) // CZ_MACRO_START
+
+// Packet: 0x08c2
+packetLen(0x08c2, 2) // CZ_MACRO_STOP
+
+// Packet: 0x08c3
+packetLen(0x08c3, 10) // CH_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c4
+packetLen(0x08c4, 8) // HC_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c5
+packetLen(0x08c5, 6) // CH_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c6
+packetLen(0x08c6, 4) // HC_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c7
+packetLen(0x08c7, -1) // ZC_SKILL_ENTRY3
+
+// Packet: 0x08c8
+packetLen(0x08c8, 34) // ZC_NOTIFY_ACT3
+
+// Packet: 0x08c9
+packetLen(0x08c9, 2) // CZ_REQ_SCHEDULER_CASHITEM
+
+// Packet: 0x08ca
+packetLen(0x08ca, -1) // ZC_ACK_SCHEDULER_CASHITEM
+
+// Packet: 0x08cb
+packetLen(0x08cb, -1) // ZC_PERSONAL_INFOMATION
+
+// Packet: 0x08cc
+packetLen(0x08cc, 109) // CA_LOGIN5
+
+// Packet: 0x08cd
+packetLen(0x08cd, 10) // ZC_STOPMOVE_FORCE
+
+// Packet: 0x08ce
+packetLen(0x08ce, 2) // ZC_FAILED_GET_ITEM_FROM_ZONEDA
+
+// Packet: 0x08cf
+packetLen(0x08cf, 10) // ZC_SPIRITS_ATTRIBUTE
+
+// Packet: 0x08d0
+packetLen(0x08d0, 9) // ZC_REQ_WEAR_EQUIP_ACK2
+
+// Packet: 0x08d1
+packetLen(0x08d1, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK2
+
+// Packet: 0x08d2
+packetLen(0x08d2, 10) // ZC_FASTMOVE
+
+// Packet: 0x08d3
+packetLen(0x08d3, 10) // ZC_SE_CASHSHOP_UPDATE
+
+// Packet: 0x08d4
+packetLen(0x08d4, 8) // CH_REQ_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d5
+packetLen(0x08d5, -1) // HC_ACK_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d6
+packetLen(0x08d6, 6) // ZC_CLEAR_DIALOG
+
+// Packet: 0x08d7
+packetLen(0x08d7, 28) // CZ_REQ_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d8
+packetLen(0x08d8, 27) // ZC_ACK_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d9
+packetLen(0x08d9, 30) // ZC_NOTIFY_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08da
+packetLen(0x08da, 26) // CZ_REQ_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08db
+packetLen(0x08db, 27) // ZC_ACK_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08dc
+packetLen(0x08dc, 26) // ZC_NOTIFY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08dd
+packetLen(0x08dd, 27) // CZ_REPLY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08de
+packetLen(0x08de, 27) // ZC_REPLY_ACK_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08df
+packetLen(0x08df, 50) // ZC_NOTIFY_LOBBY_ADMISSION
+
+// Packet: 0x08e0
+packetLen(0x08e0, 51) // CZ_REPLY_LOBBY_ADMISSION
+
+// Packet: 0x08e1
+packetLen(0x08e1, 51) // ZC_REPLY_ACK_LOBBY_ADMISSION
+
+// Packet: 0x08e2
+packetLen(0x08e2, 27) // ZC_NAVIGATION_ACTIVE
+
+// Packet: 0x08e3
+packetLen(0x08e3, 149) // HC_UPDATE_CHARINFO
+
+// Packet: 0x08e4
+packetLen(0x08e4, 6) // AC_SHUTDOWN_INFO
+
+// Packet: 0x08fc
+packetLen(0x08fc, 30) // CH_REQ_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fd
+packetLen(0x08fd, 6) // CH_ACK_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fe
+packetLen(0x08fe, -1) // ZC_HUNTING_QUEST_INFO
+
+// Packet: 0x08ff
+packetLen(0x08ff, 24) // ZC_EFST_SET_ENTER
+
+// Packet: 0x0900
+packetLen(0x0900, -1) // ZC_INVENTORY_ITEMLIST_NORMAL
+
+// Packet: 0x0901
+packetLen(0x0901, -1) // ZC_INVENTORY_ITEMLIST_EQUIP
+
+// Packet: 0x0902
+packetLen(0x0902, -1) // ZC_CART_ITEMLIST_NORMAL
+
+// Packet: 0x0903
+packetLen(0x0903, -1) // ZC_CART_ITEMLIST_EQUIP
+
+// Packet: 0x0904
+packetLen(0x0904, -1) // ZC_STORE_ITEMLIST_NORMAL
+
+// Packet: 0x0905
+packetLen(0x0905, -1) // ZC_STORE_ITEMLIST_EQUIP
+
+// Packet: 0x0906
+packetLen(0x0906, -1) // ZC_MICROSCOPE
+
+// Packet: 0x0907
+packetLen(0x0907, 5) // CZ_INVENTORY_TAB
+
+// Packet: 0x0908
+packetLen(0x0908, 5) // ZC_INVENTORY_TAB
+
+// Packet: 0x090a
+packetLen(0x090a, 26) // CZ_REQ_ENTRY_QUEUE_RANKING
+
+// Packet: 0x090d
+packetLen(0x090d, -1) // ZC_PREMIUM_CAMPAIGN_INFO
+
+// Packet: 0x090e
+packetLen(0x090e, 2) // ZC_ENTRY_QUEUE_INIT
+
+// Packet: 0x090f
+packetLen(0x090f, -1) // ZC_NOTIFY_NEWENTRY7
+
+// Packet: 0x0910
+packetLen(0x0910, 10) // CZ_REQ_PARTY_NAME
+
+// Packet: 0x0911
+packetLen(0x0911, 30) // ZC_ACK_PARTY_NAME
+
+// Packet: 0x0912
+packetLen(0x0912, 10) // CZ_REQ_GUILD_NAME
+
+// Packet: 0x0913
+packetLen(0x0913, 30) // ZC_ACK_GUILD_NAME
+
+// Packet: 0x0914
+packetLen(0x0914, -1) // ZC_NOTIFY_MOVEENTRY9
+
+// Packet: 0x0915
+packetLen(0x0915, -1) // ZC_NOTIFY_STANDENTRY8
+
+// Packet: 0x0916
+packetLen(0x0916, 26) // CZ_REQ_JOIN_GUILD2
+
+// Packet: 0x0917
+#if PACKETVER >= 20160907
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20160831
+packetLen(0x0917, 36) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20160727
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20160720
+packetLen(0x0917, 4) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20160106
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#endif
+
+// Packet: 0x0918
+#if PACKETVER >= 20161214
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20161207
+packetLen(0x0918, 18) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20160713
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20160706
+packetLen(0x0918, 90) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20160518
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20160511
+packetLen(0x0918, 5) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20160504
+packetLen(0x0918, 6) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20160420
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20160414
+packetLen(0x0918, 4) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20160406
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20160330
+packetLen(0x0918, 8) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20160211
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20160203
+packetLen(0x0918, 8) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20160106
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#endif
+
+// Packet: 0x0919
+#if PACKETVER >= 20161012
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20161005
+packetLen(0x0919, 6) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20160928
+packetLen(0x0919, 5) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20160120
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20160113
+packetLen(0x0919, 12) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20160106
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#endif
+
+// Packet: 0x091a
+#if PACKETVER >= 20161130
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20161123
+packetLen(0x091a, 8) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20161102
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20161026
+packetLen(0x091a, 19) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20160817
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20160810
+packetLen(0x091a, 6) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20160309
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20160302
+packetLen(0x091a, 6) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20160106
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#endif
+
+// Packet: 0x091b
+#if PACKETVER >= 20161109
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20161102
+packetLen(0x091b, 36) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20161026
+packetLen(0x091b, 6) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20160907
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20160831
+packetLen(0x091b, 4) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20160817
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20160803
+packetLen(0x091b, 6) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20160713
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20160706
+packetLen(0x091b, -1) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20160330
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20160323
+packetLen(0x091b, 4) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20160120
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20160113
+packetLen(0x091b, 6) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20160106
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#endif
+
+// Packet: 0x091c
+#if PACKETVER >= 20161228
+packetLen(0x091c, 26) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20160913
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20160907
+packetLen(0x091c, 36) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20160817
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20160810
+packetLen(0x091c, 10) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20160727
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20160720
+packetLen(0x091c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20160713
+packetLen(0x091c, 5) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20160629
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20160622
+packetLen(0x091c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20160106
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#endif
+
+// Packet: 0x091d
+#if PACKETVER >= 20161214
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20161207
+packetLen(0x091d, 8) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20160720
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20160713
+packetLen(0x091d, 6) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20160601
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20160525
+packetLen(0x091d, 36) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20160316
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20160309
+packetLen(0x091d, 6) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20160224
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20160217
+packetLen(0x091d, 5) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20160113
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20160106
+packetLen(0x091d, -1) // ZC_REASSEMBLY_AUTH49
+#endif
+
+// Packet: 0x091e
+#if PACKETVER >= 20161012
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20161005
+packetLen(0x091e, 8) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20160928
+packetLen(0x091e, 6) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20160706
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20160629
+packetLen(0x091e, 18) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20160106
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#endif
+
+// Packet: 0x091f
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+
+// Packet: 0x0920
+#if PACKETVER >= 20161123
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20161116
+packetLen(0x0920, 90) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160518
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160511
+packetLen(0x0920, 19) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160316
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160309
+packetLen(0x0920, 8) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160302
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160224
+packetLen(0x0920, 4) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160217
+packetLen(0x0920, 7) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160106
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#endif
+
+// Packet: 0x0921
+#if PACKETVER >= 20160720
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20160713
+packetLen(0x0921, 90) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20160511
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20160504
+packetLen(0x0921, 90) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20160106
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#endif
+
+// Packet: 0x0922
+#if PACKETVER >= 20161109
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20161102
+packetLen(0x0922, 6) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160720
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160713
+packetLen(0x0922, 5) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160706
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160629
+packetLen(0x0922, 8) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160511
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160504
+packetLen(0x0922, 6) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160420
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160414
+packetLen(0x0922, 5) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160323
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160316
+packetLen(0x0922, 36) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160309
+packetLen(0x0922, -1) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160203
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160127
+packetLen(0x0922, 5) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160106
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#endif
+
+// Packet: 0x0923
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+
+// Packet: 0x0924
+#if PACKETVER >= 20160713
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20160706
+packetLen(0x0924, 10) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20160608
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20160601
+packetLen(0x0924, 4) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20160511
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20160504
+packetLen(0x0924, 5) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20160120
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20160113
+packetLen(0x0924, 6) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20160106
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#endif
+
+// Packet: 0x0925
+#if PACKETVER >= 20161123
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20161116
+packetLen(0x0925, 10) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20161109
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20161102
+packetLen(0x0925, 6) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20160706
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20160629
+packetLen(0x0925, 10) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20160406
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20160330
+packetLen(0x0925, 19) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20160106
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#endif
+
+// Packet: 0x0926
+#if PACKETVER >= 20161228
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20161221
+packetLen(0x0926, 26) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20161130
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20161123
+packetLen(0x0926, 19) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20161102
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20161026
+packetLen(0x0926, 6) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20160817
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20160810
+packetLen(0x0926, 4) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20160713
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20160706
+packetLen(0x0926, 5) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20160629
+packetLen(0x0926, 26) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20160330
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20160323
+packetLen(0x0926, 8) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20160224
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20160217
+packetLen(0x0926, 10) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20160106
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#endif
+
+// Packet: 0x0927
+#if PACKETVER >= 20161116
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20161109
+packetLen(0x0927, 26) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20161005
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20160928
+packetLen(0x0927, 10) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20160420
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20160414
+packetLen(0x0927, 36) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20160406
+packetLen(0x0927, 8) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20160330
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20160323
+packetLen(0x0927, 18) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20160309
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20160302
+packetLen(0x0927, 6) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20160106
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#endif
+
+// Packet: 0x0928
+#if PACKETVER >= 20161228
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20161221
+packetLen(0x0928, 26) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20161109
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20161102
+packetLen(0x0928, 26) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20160921
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20160913
+packetLen(0x0928, 26) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20160525
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20160518
+packetLen(0x0928, 5) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20160106
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#endif
+
+// Packet: 0x0929
+#if PACKETVER >= 20161228
+packetLen(0x0929, 10) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160824
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160817
+packetLen(0x0929, -1) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160810
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160803
+packetLen(0x0929, 36) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160713
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160706
+packetLen(0x0929, 8) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160316
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160309
+packetLen(0x0929, 4) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160302
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160224
+packetLen(0x0929, 5) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160106
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#endif
+
+// Packet: 0x092a
+#if PACKETVER >= 20161130
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20161123
+packetLen(0x092a, 6) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20161116
+packetLen(0x092a, 10) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20160727
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20160720
+packetLen(0x092a, 26) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20160406
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20160330
+packetLen(0x092a, -1) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20160316
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20160309
+packetLen(0x092a, -1) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20160106
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#endif
+
+// Packet: 0x092b
+#if PACKETVER >= 20161012
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20161005
+packetLen(0x092b, 6) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20160817
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20160810
+packetLen(0x092b, -1) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20160106
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#endif
+
+// Packet: 0x092c
+#if PACKETVER >= 20161102
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20161026
+packetLen(0x092c, -1) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20160907
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20160831
+packetLen(0x092c, 26) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20160720
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20160713
+packetLen(0x092c, 6) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20160601
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20160525
+packetLen(0x092c, 18) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20160406
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20160330
+packetLen(0x092c, 18) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20160106
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#endif
+
+// Packet: 0x092d
+#if PACKETVER >= 20161019
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20161012
+packetLen(0x092d, 6) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20161005
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160928
+packetLen(0x092d, 10) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160824
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160817
+packetLen(0x092d, 90) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160810
+packetLen(0x092d, 8) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160713
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160706
+packetLen(0x092d, 5) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160629
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160622
+packetLen(0x092d, 6) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160414
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160406
+packetLen(0x092d, 12) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160309
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160302
+packetLen(0x092d, 4) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160106
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#endif
+
+// Packet: 0x092e
+#if PACKETVER >= 20161228
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20161221
+packetLen(0x092e, 18) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20161214
+packetLen(0x092e, 6) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20161102
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20161026
+packetLen(0x092e, 5) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20160907
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20160831
+packetLen(0x092e, 12) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20160803
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20160727
+packetLen(0x092e, 5) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20160224
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20160217
+packetLen(0x092e, 90) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20160106
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#endif
+
+// Packet: 0x092f
+#if PACKETVER >= 20161130
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20161123
+packetLen(0x092f, 6) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20161109
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20161102
+packetLen(0x092f, 6) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20160629
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20160622
+packetLen(0x092f, 10) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20160427
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20160420
+packetLen(0x092f, 18) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20160309
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20160302
+packetLen(0x092f, 90) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20160224
+packetLen(0x092f, -1) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20160106
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#endif
+
+// Packet: 0x0930
+#if PACKETVER >= 20161228
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20161221
+packetLen(0x0930, 5) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20161130
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20161123
+packetLen(0x0930, 5) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20161102
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20161026
+packetLen(0x0930, 6) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160824
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160817
+packetLen(0x0930, 5) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160810
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160803
+packetLen(0x0930, 12) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160406
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160330
+packetLen(0x0930, 5) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160120
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160113
+packetLen(0x0930, 6) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160106
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#endif
+
+// Packet: 0x0931
+#if PACKETVER >= 20161207
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20161130
+packetLen(0x0931, 5) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20161123
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20161116
+packetLen(0x0931, -1) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20161012
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20161005
+packetLen(0x0931, 26) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20160720
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20160713
+packetLen(0x0931, 10) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20160420
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20160414
+packetLen(0x0931, 6) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20160106
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#endif
+
+// Packet: 0x0932
+#if PACKETVER >= 20161012
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20161005
+packetLen(0x0932, 12) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20160810
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20160803
+packetLen(0x0932, 10) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20160316
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20160309
+packetLen(0x0932, 5) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20160120
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20160113
+packetLen(0x0932, 8) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20160106
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#endif
+
+// Packet: 0x0933
+#if PACKETVER >= 20160414
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20160406
+packetLen(0x0933, 5) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20160330
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20160323
+packetLen(0x0933, 5) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20160106
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#endif
+
+// Packet: 0x0934
+#if PACKETVER >= 20161228
+packetLen(0x0934, 26) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160831
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160824
+packetLen(0x0934, 36) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160810
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160803
+packetLen(0x0934, 7) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160420
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160414
+packetLen(0x0934, 5) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160406
+packetLen(0x0934, 10) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160106
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#endif
+
+// Packet: 0x0935
+#if PACKETVER >= 20161228
+packetLen(0x0935, 8) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20160921
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20160913
+packetLen(0x0935, -1) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20160817
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20160810
+packetLen(0x0935, 90) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20160427
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20160420
+packetLen(0x0935, 26) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20160106
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#endif
+
+// Packet: 0x0936
+#if PACKETVER >= 20161019
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20161012
+packetLen(0x0936, 6) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20160803
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20160727
+packetLen(0x0936, 5) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20160629
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20160622
+packetLen(0x0936, 19) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20160302
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20160224
+packetLen(0x0936, 36) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20160106
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#endif
+
+// Packet: 0x0937
+#if PACKETVER >= 20161116
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20161109
+packetLen(0x0937, 26) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20161019
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20161012
+packetLen(0x0937, 6) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20160810
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20160803
+packetLen(0x0937, 10) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20160629
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20160622
+packetLen(0x0937, 12) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20160601
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20160525
+packetLen(0x0937, -1) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20160106
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#endif
+
+// Packet: 0x0938
+#if PACKETVER >= 20161228
+packetLen(0x0938, 4) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20160302
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20160224
+packetLen(0x0938, 6) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20160106
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#endif
+
+// Packet: 0x0939
+#if PACKETVER >= 20161019
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20161012
+packetLen(0x0939, -1) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20160824
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20160817
+packetLen(0x0939, 8) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20160720
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20160713
+packetLen(0x0939, 26) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20160706
+packetLen(0x0939, 8) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20160406
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20160330
+packetLen(0x0939, 6) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20160106
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#endif
+
+// Packet: 0x093a
+#if PACKETVER >= 20160921
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20160913
+packetLen(0x093a, 5) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20160907
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20160831
+packetLen(0x093a, 5) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20160810
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20160803
+packetLen(0x093a, 8) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20160106
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#endif
+
+// Packet: 0x093b
+#if PACKETVER >= 20161012
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20161005
+packetLen(0x093b, 10) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20160727
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20160720
+packetLen(0x093b, 5) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20160629
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20160622
+packetLen(0x093b, 8) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20160615
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20160608
+packetLen(0x093b, 4) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20160406
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20160330
+packetLen(0x093b, 26) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20160224
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20160217
+packetLen(0x093b, -1) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20160106
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#endif
+
+// Packet: 0x093c
+#if PACKETVER >= 20161123
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20161116
+packetLen(0x093c, -1) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20161109
+packetLen(0x093c, 36) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20160824
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20160817
+packetLen(0x093c, 8) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20160330
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20160323
+packetLen(0x093c, 6) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20160120
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20160113
+packetLen(0x093c, 8) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20160106
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#endif
+
+// Packet: 0x093d
+#if PACKETVER >= 20161228
+packetLen(0x093d, 7) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20161221
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20161214
+packetLen(0x093d, 5) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20160713
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20160706
+packetLen(0x093d, 6) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20160106
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#endif
+
+// Packet: 0x093e
+#if PACKETVER >= 20160810
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160803
+packetLen(0x093e, 6) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160727
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160720
+packetLen(0x093e, -1) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160706
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160629
+packetLen(0x093e, -1) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160622
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160615
+packetLen(0x093e, 26) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160511
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160504
+packetLen(0x093e, -1) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160224
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160217
+packetLen(0x093e, -1) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160211
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160203
+packetLen(0x093e, 26) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160106
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#endif
+
+// Packet: 0x093f
+#if PACKETVER >= 20161116
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20161109
+packetLen(0x093f, 6) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20160810
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20160803
+packetLen(0x093f, -1) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20160629
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20160622
+packetLen(0x093f, -1) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20160106
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#endif
+
+// Packet: 0x0940
+#if PACKETVER >= 20160518
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160511
+packetLen(0x0940, 36) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160504
+packetLen(0x0940, 19) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160427
+packetLen(0x0940, -1) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160414
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160406
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160211
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160203
+packetLen(0x0940, 5) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160113
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160106
+packetLen(0x0940, 8) // ZC_REASSEMBLY_AUTH84
+#endif
+
+// Packet: 0x0941
+#if PACKETVER >= 20161130
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20161123
+packetLen(0x0941, 26) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20160511
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20160504
+packetLen(0x0941, 8) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20160224
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20160217
+packetLen(0x0941, 6) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20160120
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20160113
+packetLen(0x0941, -1) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20160106
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#endif
+
+// Packet: 0x0942
+#if PACKETVER >= 20161012
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20161005
+packetLen(0x0942, 6) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20160106
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#endif
+
+// Packet: 0x0943
+#if PACKETVER >= 20161228
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20161221
+packetLen(0x0943, 10) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20161214
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20161207
+packetLen(0x0943, 4) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20161130
+packetLen(0x0943, 19) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20161019
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20161012
+packetLen(0x0943, 18) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20160817
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20160810
+packetLen(0x0943, 6) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20160106
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#endif
+
+// Packet: 0x0944
+#if PACKETVER >= 20161228
+packetLen(0x0944, 6) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20161019
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20161012
+packetLen(0x0944, 8) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20161005
+packetLen(0x0944, -1) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20160928
+packetLen(0x0944, 5) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20160713
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20160706
+packetLen(0x0944, 8) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20160106
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#endif
+
+// Packet: 0x0945
+#if PACKETVER >= 20161012
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20161005
+packetLen(0x0945, 5) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20160720
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20160713
+packetLen(0x0945, 7) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20160706
+packetLen(0x0945, 6) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20160601
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20160525
+packetLen(0x0945, 26) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20160420
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20160414
+packetLen(0x0945, 26) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20160309
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20160302
+packetLen(0x0945, 6) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20160106
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#endif
+
+// Packet: 0x0946
+#if PACKETVER >= 20161228
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20161221
+packetLen(0x0946, 10) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20161109
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20161102
+packetLen(0x0946, 19) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20161026
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20161019
+packetLen(0x0946, 19) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20160907
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20160831
+packetLen(0x0946, 6) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20160803
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20160720
+packetLen(0x0946, 6) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20160706
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20160622
+packetLen(0x0946, -1) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20160106
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#endif
+
+// Packet: 0x0947
+#if PACKETVER >= 20160720
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20160713
+packetLen(0x0947, 8) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20160211
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20160203
+packetLen(0x0947, 6) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20160106
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#endif
+
+// Packet: 0x0948
+#if PACKETVER >= 20160706
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20160629
+packetLen(0x0948, 5) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20160622
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20160615
+packetLen(0x0948, 7) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20160511
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20160504
+packetLen(0x0948, 12) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20160106
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#endif
+
+// Packet: 0x0949
+#if PACKETVER >= 20161109
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20161102
+packetLen(0x0949, 5) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20160921
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20160913
+packetLen(0x0949, 26) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20160803
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20160727
+packetLen(0x0949, 8) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20160414
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20160406
+packetLen(0x0949, -1) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20160106
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#endif
+
+// Packet: 0x094a
+#if PACKETVER >= 20161123
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20161116
+packetLen(0x094a, 6) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20161012
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20161005
+packetLen(0x094a, -1) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160928
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160921
+packetLen(0x094a, 36) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160913
+packetLen(0x094a, 90) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160907
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160831
+packetLen(0x094a, 5) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160706
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160629
+packetLen(0x094a, 26) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160622
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160615
+packetLen(0x094a, 6) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160601
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160525
+packetLen(0x094a, 8) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160224
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160217
+packetLen(0x094a, 10) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160106
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#endif
+
+// Packet: 0x094b
+#if PACKETVER >= 20161228
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20161221
+packetLen(0x094b, -1) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20161102
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20161026
+packetLen(0x094b, 8) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20160622
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20160615
+packetLen(0x094b, -1) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20160106
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#endif
+
+// Packet: 0x094c
+#if PACKETVER >= 20160713
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160706
+packetLen(0x094c, 36) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160302
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160224
+packetLen(0x094c, 18) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160106
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#endif
+
+// Packet: 0x094d
+#if PACKETVER >= 20161130
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20161123
+packetLen(0x094d, 10) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20161012
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20161005
+packetLen(0x094d, 5) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20160727
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20160720
+packetLen(0x094d, 6) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20160615
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20160608
+packetLen(0x094d, 6) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20160414
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20160406
+packetLen(0x094d, 6) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20160120
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20160113
+packetLen(0x094d, 19) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20160106
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#endif
+
+// Packet: 0x094e
+#if PACKETVER >= 20161005
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20160928
+packetLen(0x094e, 26) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20160601
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20160525
+packetLen(0x094e, 8) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20160427
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20160420
+packetLen(0x094e, -1) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20160309
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20160302
+packetLen(0x094e, 36) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20160106
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#endif
+
+// Packet: 0x094f
+#if PACKETVER >= 20161130
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20161123
+packetLen(0x094f, -1) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20161019
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20161012
+packetLen(0x094f, 8) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20160907
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20160831
+packetLen(0x094f, 8) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20160316
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20160309
+packetLen(0x094f, 7) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20160224
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20160217
+packetLen(0x094f, 8) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20160120
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20160113
+packetLen(0x094f, 8) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20160106
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#endif
+
+// Packet: 0x0950
+#if PACKETVER >= 20160921
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20160913
+packetLen(0x0950, 7) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20160907
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20160831
+packetLen(0x0950, -1) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20160309
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20160302
+packetLen(0x0950, 8) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20160106
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#endif
+
+// Packet: 0x0951
+#if PACKETVER >= 20161019
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20161012
+packetLen(0x0951, 90) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20160803
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20160727
+packetLen(0x0951, 8) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20160601
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20160525
+packetLen(0x0951, 26) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20160106
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#endif
+
+// Packet: 0x0952
+#if PACKETVER >= 20161012
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20161005
+packetLen(0x0952, 4) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20160921
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20160913
+packetLen(0x0952, 19) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20160810
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20160803
+packetLen(0x0952, 5) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20160511
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20160504
+packetLen(0x0952, 26) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20160106
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#endif
+
+// Packet: 0x0953
+#if PACKETVER >= 20161102
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20161026
+packetLen(0x0953, 26) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20161005
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160928
+packetLen(0x0953, -1) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160727
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160720
+packetLen(0x0953, 8) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160420
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160414
+packetLen(0x0953, 8) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160406
+packetLen(0x0953, 36) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160106
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#endif
+
+// Packet: 0x0954
+#if PACKETVER >= 20161207
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20161130
+packetLen(0x0954, 36) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20161116
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20161109
+packetLen(0x0954, 10) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20160921
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20160913
+packetLen(0x0954, 5) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20160907
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20160831
+packetLen(0x0954, -1) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20160622
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20160615
+packetLen(0x0954, 5) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20160211
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20160203
+packetLen(0x0954, 8) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20160106
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#endif
+
+// Packet: 0x0955
+#if PACKETVER >= 20161005
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20160928
+packetLen(0x0955, 18) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20160810
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20160803
+packetLen(0x0955, 8) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20160106
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#endif
+
+// Packet: 0x0956
+#if PACKETVER >= 20161116
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20161109
+packetLen(0x0956, 5) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20160810
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20160803
+packetLen(0x0956, -1) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20160601
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20160525
+packetLen(0x0956, 8) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20160316
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20160309
+packetLen(0x0956, 6) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20160106
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#endif
+
+// Packet: 0x0957
+#if PACKETVER >= 20161123
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20161116
+packetLen(0x0957, 6) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20161005
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160928
+packetLen(0x0957, 6) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160907
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160831
+packetLen(0x0957, -1) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160824
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160817
+packetLen(0x0957, 18) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160720
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160713
+packetLen(0x0957, 6) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160706
+packetLen(0x0957, 12) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160622
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160615
+packetLen(0x0957, 8) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160309
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160302
+packetLen(0x0957, -1) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160106
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#endif
+
+// Packet: 0x0958
+#if PACKETVER >= 20160713
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20160706
+packetLen(0x0958, 6) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20160622
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20160615
+packetLen(0x0958, 8) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20160608
+packetLen(0x0958, 36) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20160106
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#endif
+
+// Packet: 0x0959
+#if PACKETVER >= 20161207
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20161130
+packetLen(0x0959, 26) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20160810
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20160803
+packetLen(0x0959, 6) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20160629
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20160622
+packetLen(0x0959, 6) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20160106
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#endif
+
+// Packet: 0x095a
+#if PACKETVER >= 20161228
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20161221
+packetLen(0x095a, 6) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20161130
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20161123
+packetLen(0x095a, 8) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20161012
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20161005
+packetLen(0x095a, 6) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160928
+packetLen(0x095a, 4) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160810
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160803
+packetLen(0x095a, 26) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160706
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160629
+packetLen(0x095a, 7) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160309
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160302
+packetLen(0x095a, 6) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160211
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160203
+packetLen(0x095a, 6) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160127
+packetLen(0x095a, 36) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160106
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#endif
+
+// Packet: 0x095b
+#if PACKETVER >= 20161130
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20161123
+packetLen(0x095b, 7) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20161116
+packetLen(0x095b, 36) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20161012
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20161005
+packetLen(0x095b, 19) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20160817
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20160810
+packetLen(0x095b, 7) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20160727
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20160720
+packetLen(0x095b, 18) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20160713
+packetLen(0x095b, 8) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20160615
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20160608
+packetLen(0x095b, 8) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20160601
+packetLen(0x095b, 5) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20160511
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20160504
+packetLen(0x095b, 6) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20160106
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#endif
+
+// Packet: 0x095c
+#if PACKETVER >= 20161102
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20161026
+packetLen(0x095c, -1) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20161019
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20161012
+packetLen(0x095c, 5) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20160622
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20160615
+packetLen(0x095c, 18) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20160427
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20160420
+packetLen(0x095c, 8) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20160106
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#endif
+
+// Packet: 0x095d
+#if PACKETVER >= 20161214
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20161207
+packetLen(0x095d, 36) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20161123
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20161116
+packetLen(0x095d, 4) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20160414
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20160406
+packetLen(0x095d, 5) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20160211
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20160203
+packetLen(0x095d, 8) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20160106
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#endif
+
+// Packet: 0x095e
+#if PACKETVER >= 20161109
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20161102
+packetLen(0x095e, 12) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20161026
+packetLen(0x095e, 90) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160907
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160831
+packetLen(0x095e, 8) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160622
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160615
+packetLen(0x095e, -1) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160316
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160309
+packetLen(0x095e, 12) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160224
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160217
+packetLen(0x095e, 36) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160106
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#endif
+
+// Packet: 0x095f
+#if PACKETVER >= 20160803
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20160727
+packetLen(0x095f, -1) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20160608
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20160601
+packetLen(0x095f, 36) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20160414
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20160406
+packetLen(0x095f, 5) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20160106
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#endif
+
+// Packet: 0x0960
+#if PACKETVER >= 20160907
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20160831
+packetLen(0x0960, 6) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20160727
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20160720
+packetLen(0x0960, 8) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20160309
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20160302
+packetLen(0x0960, 8) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20160106
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#endif
+
+// Packet: 0x0961
+#if PACKETVER >= 20160622
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20160615
+packetLen(0x0961, 12) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20160608
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20160601
+packetLen(0x0961, 18) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20160309
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20160302
+packetLen(0x0961, 18) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20160224
+packetLen(0x0961, 5) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20160203
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20160127
+packetLen(0x0961, 26) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20160106
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#endif
+
+// Packet: 0x0962
+#if PACKETVER >= 20161130
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20161123
+packetLen(0x0962, 8) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20161102
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20161026
+packetLen(0x0962, 5) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20161019
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20161012
+packetLen(0x0962, 10) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20160921
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20160913
+packetLen(0x0962, 4) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20160414
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20160406
+packetLen(0x0962, 4) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20160106
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#endif
+
+// Packet: 0x0963
+#if PACKETVER >= 20161026
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20161019
+packetLen(0x0963, 26) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20160921
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20160913
+packetLen(0x0963, 6) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20160824
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20160817
+packetLen(0x0963, 5) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20160106
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#endif
+
+// Packet: 0x0964
+#if PACKETVER >= 20161228
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20161221
+packetLen(0x0964, 19) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20161109
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20161102
+packetLen(0x0964, -1) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20160907
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20160831
+packetLen(0x0964, 10) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20160106
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#endif
+
+// Packet: 0x0965
+#if PACKETVER >= 20161228
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20161221
+packetLen(0x0965, 5) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20161214
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20161207
+packetLen(0x0965, 26) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20161109
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20161102
+packetLen(0x0965, 10) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20160629
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20160622
+packetLen(0x0965, 5) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20160106
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#endif
+
+// Packet: 0x0966
+#if PACKETVER >= 20161109
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20161102
+packetLen(0x0966, 6) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20161019
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20161012
+packetLen(0x0966, 5) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20160224
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20160217
+packetLen(0x0966, 6) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20160106
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#endif
+
+// Packet: 0x0967
+#if PACKETVER >= 20161123
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20161116
+packetLen(0x0967, 8) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20161019
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20161012
+packetLen(0x0967, 36) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20161005
+packetLen(0x0967, 10) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20160907
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20160831
+packetLen(0x0967, 10) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20160817
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20160810
+packetLen(0x0967, 8) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20160309
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20160302
+packetLen(0x0967, 6) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20160224
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20160217
+packetLen(0x0967, 6) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20160120
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20160113
+packetLen(0x0967, -1) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20160106
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#endif
+
+// Packet: 0x0968
+#if PACKETVER >= 20160706
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160629
+packetLen(0x0968, 10) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160309
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160302
+packetLen(0x0968, 7) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160106
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#endif
+
+// Packet: 0x0969
+#if PACKETVER >= 20160803
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20160727
+packetLen(0x0969, -1) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20160720
+packetLen(0x0969, 26) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20160706
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20160622
+packetLen(0x0969, 6) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20160615
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20160608
+packetLen(0x0969, 26) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20160511
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20160504
+packetLen(0x0969, 36) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20160224
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20160217
+packetLen(0x0969, -1) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20160106
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#endif
+
+// Packet: 0x096a
+#if PACKETVER >= 20161221
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20161123
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20161026
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20161019
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160928
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160921
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160913
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160907
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160831
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160824
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160810
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160803
+packetLen(0x096a, -1) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160706
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160629
+packetLen(0x096a, 8) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160615
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160511
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160504
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160414
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160406
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160309
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160302
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160224
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160217
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160120
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160113
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160106
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#endif
+
+// Packet: 0x096b
+packetLen(0x096b, 4) // ZC_PRNPC_STATE
+
+// Packet: 0x096c
+packetLen(0x096c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+
+// Packet: 0x096d
+packetLen(0x096d, -1) // ZC_MERGE_ITEM_OPEN
+
+// Packet: 0x096e
+packetLen(0x096e, -1) // CZ_REQ_MERGE_ITEM
+
+// Packet: 0x096f
+packetLen(0x096f, 7) // ZC_ACK_MERGE_ITEM
+
+// Packet: 0x0970
+packetLen(0x0970, 31) // CH_MAKE_CHAR_NOT_STATS
+
+// Packet: 0x0971
+packetLen(0x0971, 6) // ZC_PARTY_RECRUIT_REFUSE_VOLUNTEER_TO_PM
+
+// Packet: 0x0972
+packetLen(0x0972, -1) // ZC_SAY_DIALOG2
+
+// Packet: 0x0973
+packetLen(0x0973, 7) // ZC_WAIT_DIALOG2
+
+// Packet: 0x0974
+packetLen(0x0974, 2) // CZ_CANCEL_MERGE_ITEM
+
+// Packet: 0x0975
+packetLen(0x0975, -1) // ZC_STORE_ITEMLIST_NORMAL_V2
+
+// Packet: 0x0976
+packetLen(0x0976, -1) // ZC_STORE_ITEMLIST_EQUIP_V2
+
+// Packet: 0x0977
+packetLen(0x0977, 14) // ZC_HP_INFO
+
+// Packet: 0x0978
+packetLen(0x0978, 6) // CZ_REQ_BEFORE_WORLD_INFO
+
+// Packet: 0x0979
+packetLen(0x0979, 50) // ZC_ACK_BEFORE_WORLD_INFO
+
+// Packet: 0x097a
+packetLen(0x097a, -1) // ZC_ALL_QUEST_LIST2
+
+// Packet: 0x097b
+packetLen(0x097b, -1) // ZC_PERSONAL_INFOMATION2
+
+// Packet: 0x097c
+packetLen(0x097c, 4) // CZ_REQ_RANKING
+
+// Packet: 0x097d
+packetLen(0x097d, 288) // ZC_ACK_RANKING
+
+// Packet: 0x097e
+packetLen(0x097e, 12) // ZC_UPDATE_RANKING_POINT
+
+// Packet: 0x097f
+packetLen(0x097f, -1) // ZC_SELECTCART
+
+// Packet: 0x0980
+packetLen(0x0980, 7) // CZ_SELECTCART
+
+// Packet: 0x0981
+packetLen(0x0981, -1) // ZC_PERSONAL_INFOMATION_CHN
+
+// Packet: 0x0982
+packetLen(0x0982, 7) // ZC_FATIGUE_CHN
+
+// Packet: 0x0983
+packetLen(0x0983, 29) // ZC_MSG_STATE_CHANGE3
+
+// Packet: 0x0984
+packetLen(0x0984, 28) // ZC_EFST_SET_ENTER2
+
+// Packet: 0x0985
+packetLen(0x0985, -1) // ZC_SKILL_POSTDELAY_LIST2
+
+// Packet: 0x0986
+packetLen(0x0986, 10) // AC_SHUTDOWN_NOTIFY
+
+// Packet: 0x0987
+packetLen(0x0987, -1) // CA_LOGIN6
+
+// Packet: 0x0988
+packetLen(0x0988, 6) // ZC_NOTIFY_CLAN_CONNECTINFO
+
+// Packet: 0x0989
+packetLen(0x0989, 2) // ZC_ACK_CLAN_LEAVE
+
+// Packet: 0x098a
+packetLen(0x098a, -1) // ZC_CLANINFO
+
+// Packet: 0x098b
+packetLen(0x098b, 2) // AC_REQ_NEW_USER
+
+// Packet: 0x098c
+packetLen(0x098c, 4) // CA_ACK_NEW_USER
+
+// Packet: 0x098d
+packetLen(0x098d, -1) // CZ_CLAN_CHAT
+
+// Packet: 0x098e
+packetLen(0x098e, -1) // ZC_NOTIFY_CLAN_CHAT
+
+// Packet: 0x098f
+packetLen(0x098f, -1) // CH_DELETE_CHAR3_EXT
+
+// Packet: 0x0990
+packetLen(0x0990, 31) // ZC_ITEM_PICKUP_ACK_V5
+
+// Packet: 0x0991
+packetLen(0x0991, -1) // ZC_INVENTORY_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0992
+packetLen(0x0992, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0993
+packetLen(0x0993, -1) // ZC_CART_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0994
+packetLen(0x0994, -1) // ZC_CART_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0995
+packetLen(0x0995, -1) // ZC_STORE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0996
+packetLen(0x0996, -1) // ZC_STORE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0997
+packetLen(0x0997, -1) // ZC_EQUIPWIN_MICROSCOPE_V5
+
+// Packet: 0x0998
+packetLen(0x0998, 8) // CZ_REQ_WEAR_EQUIP_V5
+
+// Packet: 0x0999
+packetLen(0x0999, 11) // ZC_ACK_WEAR_EQUIP_V5
+
+// Packet: 0x099a
+packetLen(0x099a, 9) // ZC_ACK_TAKEOFF_EQUIP_V5
+
+// Packet: 0x099b
+packetLen(0x099b, 8) // ZC_MAPPROPERTY_R2
+
+// Packet: 0x099c
+packetLen(0x099c, 6) // CH_REQ_CHARINFO_PER_PAGE
+
+// Packet: 0x099d
+packetLen(0x099d, -1) // HC_ACK_CHARINFO_PER_PAGE
+
+// Packet: 0x099e
+packetLen(0x099e, 12) // HC_QUEUE_ORDER
+
+// Packet: 0x099f
+packetLen(0x099f, -1) // ZC_SKILL_ENTRY4
+
+// Packet: 0x09a0
+packetLen(0x09a0, 6) // HC_CHARLIST_NOTIFY
+
+// Packet: 0x09a1
+packetLen(0x09a1, 2) // CH_CHARLIST_REQ
+
+// Packet: 0x09a2
+packetLen(0x09a2, 6) // AC_REQ_MOBILE_OTP
+
+// Packet: 0x09a3
+packetLen(0x09a3, -1) // CA_ACK_MOBILE_OTP
+
+// Packet: 0x09a4
+packetLen(0x09a4, 18) // ZC_DISPATCH_TIMING_INFO_CHN
+
+// Packet: 0x09a5
+packetLen(0x09a5, 7) // AC_REFUSE_LOGIN3
+
+// Packet: 0x09a6
+packetLen(0x09a6, 12) // ZC_BANKING_CHECK
+
+// Packet: 0x09a7
+packetLen(0x09a7, 10) // CZ_REQ_BANKING_DEPOSIT
+
+// Packet: 0x09a8
+packetLen(0x09a8, 16) // ZC_ACK_BANKING_DEPOSIT
+
+// Packet: 0x09a9
+packetLen(0x09a9, 10) // CZ_REQ_BANKING_WITHDRAW
+
+// Packet: 0x09aa
+packetLen(0x09aa, 16) // ZC_ACK_BANKING_WITHDRAW
+
+// Packet: 0x09ab
+packetLen(0x09ab, 6) // CZ_REQ_BANKING_CHECK
+
+// Packet: 0x09ac
+packetLen(0x09ac, -1) // CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO
+
+// Packet: 0x09ad
+packetLen(0x09ad, 10) // ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO
+
+// Packet: 0x09ae
+packetLen(0x09ae, 17) // CZ_REQ_APPLY_BARGAIN_SALE_ITEM
+
+// Packet: 0x09af
+packetLen(0x09af, 4) // ZC_ACK_APPLY_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b0
+packetLen(0x09b0, 8) // CZ_REQ_REMOVE_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b1
+packetLen(0x09b1, 4) // ZC_ACK_REMOVE_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b2
+packetLen(0x09b2, 8) // ZC_NOTIFY_BARGAIN_SALE_SELLING
+
+// Packet: 0x09b3
+packetLen(0x09b3, 4) // ZC_NOTIFY_BARGAIN_SALE_CLOSE
+
+// Packet: 0x09b4
+packetLen(0x09b4, 6) // CZ_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b5
+packetLen(0x09b5, 2) // ZC_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b6
+packetLen(0x09b6, 6) // CZ_REQ_OPEN_BANKING
+
+// Packet: 0x09b7
+packetLen(0x09b7, 4) // ZC_ACK_OPEN_BANKING
+
+// Packet: 0x09b8
+packetLen(0x09b8, 6) // CZ_REQ_CLOSE_BANKING
+
+// Packet: 0x09b9
+packetLen(0x09b9, 4) // ZC_ACK_CLOSE_BANKING
+
+// Packet: 0x09ba
+packetLen(0x09ba, 2) // CZ_REQ_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bb
+packetLen(0x09bb, 6) // ZC_ACK_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bc
+packetLen(0x09bc, 6) // CZ_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09bd
+packetLen(0x09bd, 2) // ZC_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09be
+packetLen(0x09be, 2) // CZ_REQ_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09bf
+packetLen(0x09bf, 4) // ZC_ACK_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09c1
+packetLen(0x09c1, 10) // ZC_C_MARKERINFO
+
+// Packet: 0x09c2
+packetLen(0x09c2, -1) // HC_SECRETSCAN_DATA
+
+// Packet: 0x09c3
+packetLen(0x09c3, 8) // CZ_REQ_COUNT_BARGAIN_SALE_ITEM
+
+// Packet: 0x09c4
+packetLen(0x09c4, 8) // ZC_ACK_COUNT_BARGAIN_SALE_ITEM
+
+// Packet: 0x09c5
+packetLen(0x09c5, 1042) // CS_LOGIN_QUERY
+
+// Packet: 0x09c6
+packetLen(0x09c6, -1) // SC_LOGIN_ANSWER
+
+// Packet: 0x09c7
+packetLen(0x09c7, 18) // SC_LOGIN_ERROR
+
+// Packet: 0x09c8
+packetLen(0x09c8, -1) // CA_LOGIN_OTP
+
+// Packet: 0x09c9
+packetLen(0x09c9, -1) // SC_SOCT
+
+// Packet: 0x09ca
+packetLen(0x09ca, -1) // ZC_SKILL_ENTRY5
+
+// Packet: 0x09cb
+packetLen(0x09cb, 17) // ZC_USE_SKILL2
+
+// Packet: 0x09cc
+packetLen(0x09cc, -1) // ZC_SECRETSCAN_DATA
+
+// Packet: 0x09cd
+packetLen(0x09cd, 8) // ZC_MSG_COLOR
+
+// Packet: 0x09ce
+packetLen(0x09ce, 102) // CZ_ITEM_CREATE_EX
+
+// Packet: 0x09cf
+packetLen(0x09cf, -1) // ZC_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d0
+packetLen(0x09d0, -1) // CZ_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d1
+packetLen(0x09d1, 14) // ZC_PROGRESS_ACTOR
+
+// Packet: 0x09d2
+packetLen(0x09d2, -1) // ZC_GUILDSTORAGE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x09d3
+packetLen(0x09d3, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x09d4
+packetLen(0x09d4, 2) // CZ_NPC_TRADE_QUIT
+
+// Packet: 0x09d5
+packetLen(0x09d5, -1) // ZC_NPC_MARKET_OPEN
+
+// Packet: 0x09d6
+packetLen(0x09d6, -1) // CZ_NPC_MARKET_PURCHASE
+
+// Packet: 0x09d7
+packetLen(0x09d7, -1) // ZC_NPC_MARKET_PURCHASE_RESULT
+
+// Packet: 0x09d8
+packetLen(0x09d8, 2) // CZ_NPC_MARKET_CLOSE
+
+// Packet: 0x09d9
+packetLen(0x09d9, 4) // CZ_REQ_GUILDSTORAGE_LOG
+
+// Packet: 0x09da
+packetLen(0x09da, -1) // ZC_ACK_GUILDSTORAGE_LOG
+
+// Packet: 0x09db
+packetLen(0x09db, -1) // ZC_NOTIFY_MOVEENTRY10
+
+// Packet: 0x09dc
+packetLen(0x09dc, -1) // ZC_NOTIFY_NEWENTRY10
+
+// Packet: 0x09dd
+packetLen(0x09dd, -1) // ZC_NOTIFY_STANDENTRY10
+
+// Packet: 0x09de
+packetLen(0x09de, -1) // ZC_WHISPER02
+
+// Packet: 0x09df
+packetLen(0x09df, 7) // ZC_ACK_WHISPER02
+
+// Packet: 0x09e0
+packetLen(0x09e0, -1) // SC_LOGIN_ANSWER_WITH_ID
+
+// Packet: 0x09e1
+packetLen(0x09e1, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_GUILDSTORAGE
+
+// Packet: 0x09e2
+packetLen(0x09e2, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_BODY
+
+// Packet: 0x09e3
+packetLen(0x09e3, 8) // CZ_MOVE_ITEM_FROM_CART_TO_GUILDSTORAGE
+
+// Packet: 0x09e4
+packetLen(0x09e4, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_CART
+
+// Packet: 0x09e5
+packetLen(0x09e5, 18) // ZC_DELETEITEM_FROM_MCSTORE2
+
+// Packet: 0x09e6
+packetLen(0x09e6, 22) // ZC_UPDATE_ITEM_FROM_BUYING_STORE2
+
+// Packet: 0x09e7
+packetLen(0x09e7, 3) // ZC_NOTIFY_UNREAD_RODEX
+
+// Packet: 0x09e8
+packetLen(0x09e8, 11) // CZ_OPEN_RODEXBOX
+
+// Packet: 0x09e9
+packetLen(0x09e9, 2) // CZ_CLOSE_RODEXBOX
+
+// Packet: 0x09ea
+packetLen(0x09ea, 11) // CZ_REQ_READ_RODEX
+
+// Packet: 0x09eb
+packetLen(0x09eb, -1) // ZC_ACK_READ_RODEX
+
+// Packet: 0x09ec
+packetLen(0x09ec, -1) // CZ_REQ_SEND_RODEX
+
+// Packet: 0x09ed
+packetLen(0x09ed, 3) // ZC_ACK_SEND_RODEX
+
+// Packet: 0x09ee
+packetLen(0x09ee, 11) // CZ_REQ_NEXT_RODEX
+
+// Packet: 0x09ef
+packetLen(0x09ef, 11) // CZ_REQ_REFRESH_RODEX
+
+// Packet: 0x09f0
+packetLen(0x09f0, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x09f1
+packetLen(0x09f1, 11) // CZ_REQ_ZENY_FROM_RODEX
+
+// Packet: 0x09f2
+packetLen(0x09f2, 12) // ZC_ACK_ZENY_FROM_RODEX
+
+// Packet: 0x09f3
+packetLen(0x09f3, 11) // CZ_REQ_ITEM_FROM_RODEX
+
+// Packet: 0x09f4
+packetLen(0x09f4, 12) // ZC_ACK_ITEM_FROM_RODEX
+
+// Packet: 0x09f5
+packetLen(0x09f5, 11) // CZ_REQ_DELETE_RODEX
+
+// Packet: 0x09f6
+packetLen(0x09f6, 11) // ZC_ACK_DELETE_RODEX
+
+// Packet: 0x09f7
+packetLen(0x09f7, 75) // ZC_PROPERTY_HOMUN_2
+
+// Packet: 0x09f8
+packetLen(0x09f8, -1) // ZC_ALL_QUEST_LIST3
+
+// Packet: 0x09f9
+packetLen(0x09f9, 143) // ZC_ADD_QUEST_EX
+
+// Packet: 0x09fa
+packetLen(0x09fa, -1) // ZC_UPDATE_MISSION_HUNT_EX
+
+// Packet: 0x09fb
+packetLen(0x09fb, -1) // CZ_PET_EVOLUTION
+
+// Packet: 0x09fc
+packetLen(0x09fc, 6) // ZC_PET_EVOLUTION_RESULT
+
+// Packet: 0x09fd
+packetLen(0x09fd, -1) // ZC_NOTIFY_MOVEENTRY11
+
+// Packet: 0x09fe
+packetLen(0x09fe, -1) // ZC_NOTIFY_NEWENTRY11
+
+// Packet: 0x09ff
+packetLen(0x09ff, -1) // ZC_NOTIFY_STANDENTRY11
+
+// Packet: 0x0a00
+packetLen(0x0a00, 269) // ZC_SHORTCUT_KEY_LIST_V3
+
+// Packet: 0x0a01
+packetLen(0x0a01, 3) // CZ_SHORTCUTKEYBAR_ROTATE
+
+// Packet: 0x0a02
+packetLen(0x0a02, 4) // ZC_DRESSROOM_OPEN
+
+// Packet: 0x0a03
+packetLen(0x0a03, 2) // CZ_REQ_CANCEL_WRITE_RODEX
+
+// Packet: 0x0a04
+packetLen(0x0a04, 6) // CZ_REQ_ADD_ITEM_RODEX
+
+// Packet: 0x0a05
+packetLen(0x0a05, 53) // ZC_ACK_ADD_ITEM_RODEX
+
+// Packet: 0x0a06
+packetLen(0x0a06, 6) // CZ_REQ_REMOVE_RODEX_ITEM
+
+// Packet: 0x0a07
+packetLen(0x0a07, 9) // ZC_ACK_REMOVE_RODEX_ITEM
+
+// Packet: 0x0a08
+packetLen(0x0a08, 26) // CZ_REQ_OPEN_WRITE_RODEX
+
+// Packet: 0x0a09
+packetLen(0x0a09, 45) // ZC_ADD_EXCHANGE_ITEM3
+
+// Packet: 0x0a0a
+packetLen(0x0a0a, 47) // ZC_ADD_ITEM_TO_STORE3
+
+// Packet: 0x0a0b
+packetLen(0x0a0b, 47) // ZC_ADD_ITEM_TO_CART3
+
+// Packet: 0x0a0c
+packetLen(0x0a0c, 56) // ZC_ITEM_PICKUP_ACK_V6
+
+// Packet: 0x0a0d
+packetLen(0x0a0d, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a0e
+packetLen(0x0a0e, 14) // ZC_BATTLEFIELD_NOTIFY_HP2
+
+// Packet: 0x0a0f
+packetLen(0x0a0f, -1) // ZC_CART_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a10
+packetLen(0x0a10, -1) // ZC_STORE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a11
+packetLen(0x0a11, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a12
+packetLen(0x0a12, 27) // ZC_ACK_OPEN_WRITE_RODEX
+
+// Packet: 0x0a13
+packetLen(0x0a13, 26) // CZ_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a14
+packetLen(0x0a14, 10) // ZC_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a15
+packetLen(0x0a15, 12) // ZC_GOLDPCCAFE_POINT
+
+// Packet: 0x0a16
+packetLen(0x0a16, 26) // CZ_DYNAMICNPC_CREATE_REQUEST
+
+// Packet: 0x0a17
+packetLen(0x0a17, 6) // ZC_DYNAMICNPC_CREATE_RESULT
+
+// Packet: 0x0a18
+packetLen(0x0a18, 14) // ZC_ACCEPT_ENTER3
+
+// Packet: 0x0a19
+packetLen(0x0a19, 2) // CZ_REQ_OPEN_ROULETTE
+
+// Packet: 0x0a1a
+packetLen(0x0a1a, 23) // ZC_ACK_OPEN_ROULETTE
+
+// Packet: 0x0a1b
+packetLen(0x0a1b, 2) // CZ_REQ_ROULETTE_INFO
+
+// Packet: 0x0a1c
+packetLen(0x0a1c, -1) // ZC_ACK_ROULEITTE_INFO
+
+// Packet: 0x0a1d
+packetLen(0x0a1d, 2) // CZ_REQ_CLOSE_ROULETTE
+
+// Packet: 0x0a1e
+packetLen(0x0a1e, 3) // ZC_ACK_CLOSE_ROULETTE
+
+// Packet: 0x0a1f
+packetLen(0x0a1f, 2) // CZ_REQ_GENERATE_ROULETTE
+
+// Packet: 0x0a20
+packetLen(0x0a20, 21) // ZC_ACK_GENERATE_ROULETTE
+
+// Packet: 0x0a21
+packetLen(0x0a21, 3) // CZ_RECV_ROULETTE_ITEM
+
+// Packet: 0x0a22
+packetLen(0x0a22, 5) // ZC_RECV_ROULETTE_ITEM
+
+// Packet: 0x0a23
+packetLen(0x0a23, -1) // ZC_ALL_ACH_LIST
+
+// Packet: 0x0a24
+packetLen(0x0a24, 66) // ZC_ACH_UPDATE
+
+// Packet: 0x0a25
+packetLen(0x0a25, 6) // CZ_REQ_ACH_REWARD
+
+// Packet: 0x0a26
+packetLen(0x0a26, 7) // ZC_REQ_ACH_REWARD_ACK
+
+// Packet: 0x0a27
+packetLen(0x0a27, 8) // ZC_RECOVERY2
+
+// Packet: 0x0a28
+packetLen(0x0a28, 3) // ZC_ACK_OPENSTORE2
+
+// Packet: 0x0a29
+packetLen(0x0a29, 6) // ZC_REQ_AU_BOT
+
+// Packet: 0x0a2a
+packetLen(0x0a2a, 6) // CZ_ACK_AU_BOT
+
+// Packet: 0x0a2b
+packetLen(0x0a2b, 14) // ZC_SE_CASHSHOP_OPEN2
+
+// Packet: 0x0a2c
+packetLen(0x0a2c, 12) // ZC_SE_PC_BUY_TAIWANCASHITEM_RESULT
+
+// Packet: 0x0a2d
+packetLen(0x0a2d, -1) // ZC_EQUIPWIN_MICROSCOPE_V6
+
+// Packet: 0x0a2e
+packetLen(0x0a2e, 6) // CZ_REQ_CHANGE_TITLE
+
+// Packet: 0x0a2f
+packetLen(0x0a2f, 7) // ZC_ACK_CHANGE_TITLE
+
+// Packet: 0x0a30
+packetLen(0x0a30, 106) // ZC_ACK_REQNAMEALL2
+
+// Packet: 0x0a31
+packetLen(0x0a31, -1) // ZC_RESULT_PACKAGE_ITEM_TEST
+
+// Packet: 0x0a32
+packetLen(0x0a32, 2) // ZC_OPEN_RODEX_THROUGH_NPC_ONLY
+
+// Packet: 0x0a33
+packetLen(0x0a33, 7) // ZC_UPDATE_ROULETTE_COIN
+
+// Packet: 0x0a34
+packetLen(0x0a34, 6) // ZC_UPDATE_TAIWANCASH
+
+// Packet: 0x0a35
+packetLen(0x0a35, 4) // CZ_REQ_ONECLICK_ITEMIDENTIFY
+
+// Packet: 0x0a36
+packetLen(0x0a36, 7) // ZC_HP_INFO_TINY
+
+// Packet: 0x0a37
+#if PACKETVER >= 20160921
+packetLen(0x0a37, 59) // ZC_ITEM_PICKUP_ACK_V7
+#elif PACKETVER >= 20160106
+packetLen(0x0a37, 57) // ZC_ITEM_PICKUP_ACK_V7
+#endif
+
+// Packet: 0x0a38
+packetLen(0x0a38, 3) // ZC_OPEN_UI
+
+// Packet: 0x0a39
+packetLen(0x0a39, 36) // CH_MAKE_CHAR
+
+// Packet: 0x0a3a
+packetLen(0x0a3a, 12)
+
+// Packet: 0x0a3b
+packetLen(0x0a3b, -1) // ZC_CUSTOM_HAT_EFFECT
+
+// Packet: 0x0a3c
+packetLen(0x0a3c, -1)
+
+// Packet: 0x0a3d
+packetLen(0x0a3d, 18)
+
+// Packet: 0x0a3e
+packetLen(0x0a3e, -1)
+
+// Packet: 0x0a3f
+packetLen(0x0a3f, 9)
+
+// Packet: 0x0a40
+packetLen(0x0a40, 11)
+
+// Packet: 0x0a41
+packetLen(0x0a41, 18) // ZC_AOE_EFFECT_SKILL
+
+// Packet: 0x0a42
+packetLen(0x0a42, 43)
+
+// Packet: 0x0a43
+packetLen(0x0a43, 85) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0a44
+packetLen(0x0a44, -1) // ZC_GROUP_LIST
+
+// Packet: 0x0a46
+packetLen(0x0a46, 14)
+
+// Packet: 0x0a47
+packetLen(0x0a47, 3) // ZC_STYLE_CHANGE_RES
+
+// Packet: 0x0a48
+packetLen(0x0a48, 2)
+
+// Packet: 0x0a49
+packetLen(0x0a49, 22) // CZ_PRIVATE_AIRSHIP_REQUEST
+
+// Packet: 0x0a4a
+packetLen(0x0a4a, 6) // ZC_PRIVATE_AIRSHIP_RESPONSE
+
+// Packet: 0x0a4b
+packetLen(0x0a4b, 22) // ZC_AIRSHIP_MAPMOVE
+
+// Packet: 0x0a4c
+packetLen(0x0a4c, 28) // ZC_AIRSHIP_SERVERMOVE
+
+// Packet: 0x0a4d
+#if PACKETVER >= 20160127
+packetLen(0x0a4d, -1)
+#endif
+
+// Packet: 0x0a4e
+#if PACKETVER >= 20160302
+packetLen(0x0a4e, 4)
+#endif
+
+// Packet: 0x0a4f
+#if PACKETVER >= 20160302
+packetLen(0x0a4f, -1)
+#endif
+
+// Packet: 0x0a50
+#if PACKETVER >= 20160427
+packetLen(0x0a50, 4)
+#elif PACKETVER >= 20160302
+packetLen(0x0a50, 6)
+#endif
+
+// Packet: 0x0a51
+#if PACKETVER >= 20160302
+packetLen(0x0a51, 34) // ZC_CHECK_RECEIVE_CHARACTER_NAME
+#endif
+
+// Packet: 0x0a52
+#if PACKETVER >= 20160316
+packetLen(0x0a52, 20)
+#endif
+
+// Packet: 0x0a53
+#if PACKETVER >= 20160316
+packetLen(0x0a53, 10)
+#endif
+
+// Packet: 0x0a54
+#if PACKETVER >= 20160316
+packetLen(0x0a54, -1)
+#endif
+
+// Packet: 0x0a55
+#if PACKETVER >= 20160316
+packetLen(0x0a55, 2)
+#endif
+
+// Packet: 0x0a56
+#if PACKETVER >= 20160316
+packetLen(0x0a56, 6)
+#endif
+
+// Packet: 0x0a57
+#if PACKETVER >= 20160316
+packetLen(0x0a57, 6)
+#endif
+
+// Packet: 0x0a58
+#if PACKETVER >= 20160316
+packetLen(0x0a58, 8)
+#endif
+
+// Packet: 0x0a59
+#if PACKETVER >= 20160316
+packetLen(0x0a59, -1)
+#endif
+
+// Packet: 0x0a5a
+#if PACKETVER >= 20160316
+packetLen(0x0a5a, 2)
+#endif
+
+// Packet: 0x0a5b
+#if PACKETVER >= 20160316
+packetLen(0x0a5b, 7)
+#endif
+
+// Packet: 0x0a5c
+#if PACKETVER >= 20160316
+packetLen(0x0a5c, 18)
+#endif
+
+// Packet: 0x0a5d
+#if PACKETVER >= 20160316
+packetLen(0x0a5d, 6)
+#endif
+
+// Packet: 0x0a68
+#if PACKETVER >= 20160323
+packetLen(0x0a68, 3) // CZ_REQ_OPEN_UI
+#endif
+
+// Packet: 0x0a69
+#if PACKETVER >= 20160323
+packetLen(0x0a69, 6)
+#endif
+
+// Packet: 0x0a6a
+#if PACKETVER >= 20160323
+packetLen(0x0a6a, 12)
+#endif
+
+// Packet: 0x0a6b
+#if PACKETVER >= 20160323
+packetLen(0x0a6b, -1)
+#endif
+
+// Packet: 0x0a6c
+#if PACKETVER >= 20160330
+packetLen(0x0a6c, 7)
+#endif
+
+// Packet: 0x0a6d
+#if PACKETVER >= 20160330
+packetLen(0x0a6d, -1)
+#endif
+
+// Packet: 0x0a6e
+#if PACKETVER >= 20160330
+packetLen(0x0a6e, -1) // CZ_REQ_SEND_RODEX
+#endif
+
+// Packet: 0x0a6f
+#if PACKETVER >= 20160330
+packetLen(0x0a6f, -1) // ZC_FORMATSTRING_MSG_COLOR
+#endif
+
+// Packet: 0x0a70
+#if PACKETVER >= 20160504
+packetLen(0x0a70, 2)
+#endif
+
+// Packet: 0x0a71
+#if PACKETVER >= 20160504
+packetLen(0x0a71, -1)
+#endif
+
+// Packet: 0x0a72
+#if PACKETVER >= 20160504
+packetLen(0x0a72, 61)
+#endif
+
+// Packet: 0x0a73
+#if PACKETVER >= 20160518
+packetLen(0x0a73, 2)
+#elif PACKETVER >= 20160511
+packetLen(0x0a73, 6)
+#endif
+
+// Packet: 0x0a74
+#if PACKETVER >= 20160511
+packetLen(0x0a74, 8)
+#endif
+
+// Packet: 0x0a76
+#if PACKETVER >= 20160518
+packetLen(0x0a76, 80)
+#endif
+
+// Packet: 0x0a77
+#if PACKETVER >= 20160525
+packetLen(0x0a77, 15)
+#endif
+
+// Packet: 0x0a78
+#if PACKETVER >= 20160525
+packetLen(0x0a78, 15)
+#endif
+
+// Packet: 0x0a79
+#if PACKETVER >= 20160601
+packetLen(0x0a79, -1)
+#endif
+
+// Packet: 0x0a7b
+#if PACKETVER >= 20160601
+packetLen(0x0a7b, -1)
+#endif
+
+// Packet: 0x0a7c
+#if PACKETVER >= 20160601
+packetLen(0x0a7c, -1)
+#endif
+
+// Packet: 0x0a7d
+#if PACKETVER >= 20160601
+packetLen(0x0a7d, -1) // ZC_ACK_RODEX_LIST
+#endif
+
+// Packet: 0x0a7e
+#if PACKETVER >= 20160706
+packetLen(0x0a7e, -1) // ZC_OFFLINE_STORE_OWNER_ITEMS_READY
+#elif PACKETVER >= 20160615
+packetLen(0x0a7e, 4) // ZC_OFFLINE_STORE_OWNER_ITEMS_READY
+#endif
+
+// Packet: 0x0a7f
+#if PACKETVER >= 20160615
+packetLen(0x0a7f, -1) // CZ_OFFLINE_STORE_CREATE
+#endif
+
+// Packet: 0x0a80
+#if PACKETVER >= 20160629
+packetLen(0x0a80, 6)
+#elif PACKETVER >= 20160615
+packetLen(0x0a80, 2)
+#endif
+
+// Packet: 0x0a81
+#if PACKETVER >= 20160803
+packetLen(0x0a81, 4)
+#elif PACKETVER >= 20160706
+packetLen(0x0a81, 3)
+#elif PACKETVER >= 20160622
+// removed
+#elif PACKETVER >= 20160615
+packetLen(0x0a81, 3)
+#endif
+
+// Packet: 0x0a82
+#if PACKETVER >= 20160622
+packetLen(0x0a82, 46)
+#endif
+
+// Packet: 0x0a83
+#if PACKETVER >= 20160622
+packetLen(0x0a83, 46)
+#endif
+
+// Packet: 0x0a84
+#if PACKETVER >= 20160622
+packetLen(0x0a84, 94) // ZC_GUILD_INFO
+#endif
+
+// Packet: 0x0a85
+#if PACKETVER >= 20160622
+packetLen(0x0a85, 82)
+#endif
+
+// Packet: 0x0a86
+#if PACKETVER >= 20160622
+packetLen(0x0a86, -1)
+#endif
+
+// Packet: 0x0a87
+#if PACKETVER >= 20160713
+packetLen(0x0a87, -1)
+#elif PACKETVER >= 20160622
+packetLen(0x0a87, 4)
+#endif
+
+// Packet: 0x0a88
+#if PACKETVER >= 20160622
+packetLen(0x0a88, 2)
+#endif
+
+// Packet: 0x0a89
+#if PACKETVER >= 20160706
+packetLen(0x0a89, 57) // ZC_NOTIFY_OFFLINE_STORE
+#elif PACKETVER >= 20160629
+packetLen(0x0a89, 32) // ZC_NOTIFY_OFFLINE_STORE
+#endif
+
+// Packet: 0x0a8a
+#if PACKETVER >= 20160629
+packetLen(0x0a8a, 6) // ZC_OFFLINE_STORE_VANISH
+#endif
+
+// Packet: 0x0a8b
+#if PACKETVER >= 20160629
+packetLen(0x0a8b, 2)
+#endif
+
+// Packet: 0x0a8c
+#if PACKETVER >= 20160629
+packetLen(0x0a8c, 2)
+#endif
+
+// Packet: 0x0a8d
+#if PACKETVER >= 20160629
+packetLen(0x0a8d, -1) // ZC_OFFLINE_STORE_OWNER_ITEMS
+#endif
+
+// Packet: 0x0a8e
+#if PACKETVER >= 20160720
+packetLen(0x0a8e, 2)
+#endif
+
+// Packet: 0x0a8f
+#if PACKETVER >= 20160720
+packetLen(0x0a8f, 2)
+#endif
+
+// Packet: 0x0a90
+#if PACKETVER >= 20160720
+packetLen(0x0a90, 3)
+#endif
+
+// Packet: 0x0a91
+#if PACKETVER >= 20160727
+packetLen(0x0a91, -1) // ZC_OFFLINE_STORE_ITEMS
+#endif
+
+// Packet: 0x0a92
+#if PACKETVER >= 20160727
+packetLen(0x0a92, -1)
+#endif
+
+// Packet: 0x0a93
+#if PACKETVER >= 20160727
+packetLen(0x0a93, 3)
+#endif
+
+// Packet: 0x0a94
+#if PACKETVER >= 20160803
+packetLen(0x0a94, 2)
+#endif
+
+// Packet: 0x0a95
+#if PACKETVER >= 20160907
+packetLen(0x0a95, 4)
+#endif
+
+// Packet: 0x0a96
+#if PACKETVER >= 20160921
+packetLen(0x0a96, 51) // ZC_ADD_EXCHANGE_ITEM4
+#endif
+
+// Packet: 0x0a97
+#if PACKETVER >= 20160928
+packetLen(0x0a97, 8) // CZ_ALT_EQUIPMENT_EQUIP
+#endif
+
+// Packet: 0x0a98
+#if PACKETVER >= 20160928
+packetLen(0x0a98, 12) // ZC_ALT_EQUIPMENT_EQUIP
+#endif
+
+// Packet: 0x0a99
+#if PACKETVER >= 20160928
+packetLen(0x0a99, 8)
+#endif
+
+// Packet: 0x0a9a
+#if PACKETVER >= 20160928
+packetLen(0x0a9a, 10) // ZC_ALT_EQUIPMENT_REMOVE
+#endif
+
+// Packet: 0x0a9b
+#if PACKETVER >= 20160928
+packetLen(0x0a9b, -1) // ZC_ALT_EQUIPMENT_ITEMS
+#endif
+
+// Packet: 0x0a9c
+#if PACKETVER >= 20160928
+packetLen(0x0a9c, 2)
+#endif
+
+// Packet: 0x0a9d
+#if PACKETVER >= 20160928
+packetLen(0x0a9d, 4)
+#endif
+
+// Packet: 0x0a9e
+#if PACKETVER >= 20160928
+packetLen(0x0a9e, 2)
+#endif
+
+// Packet: 0x0a9f
+#if PACKETVER >= 20160928
+packetLen(0x0a9f, 2)
+#endif
+
+// Packet: 0x0aa0
+#if PACKETVER >= 20161005
+packetLen(0x0aa0, 2) // ZC_REFINE_OPEN_WINDOW
+#endif
+
+// Packet: 0x0aa1
+#if PACKETVER >= 20161005
+packetLen(0x0aa1, 4) // CZ_REFINE_ADD_ITEM
+#endif
+
+// Packet: 0x0aa2
+#if PACKETVER >= 20161005
+packetLen(0x0aa2, -1) // ZC_REFINE_ADD_ITEM
+#endif
+
+// Packet: 0x0aa3
+#if PACKETVER >= 20161005
+packetLen(0x0aa3, 7) // CZ_REFINE_ITEM_REQUEST
+#endif
+
+// Packet: 0x0aa4
+#if PACKETVER >= 20161005
+packetLen(0x0aa4, 2) // CZ_REFINE_WINDOW_CLOSE
+#endif
+
+// Packet: 0x0aa5
+#if PACKETVER >= 20161026
+packetLen(0x0aa5, -1) // ZC_MEMBERMGR_INFO
+#endif
+
+// Packet: 0x0aa6
+#if PACKETVER >= 20161026
+packetLen(0x0aa6, 36) // ZC_MEMBER_ADD
+#endif
+
+// Packet: 0x0aa7
+#if PACKETVER >= 20161130
+packetLen(0x0aa7, 6) // ZC_INVENTORY_MOVE_FAILED
+#endif
+
+// Packet: 0x0aa8
+#if PACKETVER >= 20161130
+packetLen(0x0aa8, 5)
+#endif
+
+// Packet: 0x0aa9
+#if PACKETVER >= 20161130
+packetLen(0x0aa9, -1)
+#endif
+
+// Packet: 0x0aaa
+#if PACKETVER >= 20161130
+packetLen(0x0aaa, -1)
+#endif
+
+// Packet: 0x0aab
+#if PACKETVER >= 20161130
+packetLen(0x0aab, -1)
+#endif
+
+// Packet: 0x0aac
+#if PACKETVER >= 20161207
+packetLen(0x0aac, 67)
+#endif
+
+// Packet: 0x0aad
+#if PACKETVER >= 20161221
+packetLen(0x0aad, 47)
+#endif
+
+// Packet: 0x0aae
+#if PACKETVER >= 20161221
+packetLen(0x0aae, 2)
+#endif
+
+// Packet: 0x0aaf
+#if PACKETVER >= 20161221
+packetLen(0x0aaf, 6)
+#endif
+
+// Packet: 0x0ab0
+#if PACKETVER >= 20161221
+packetLen(0x0ab0, 6)
+#endif
+
+// Packet: 0x0ab1
+#if PACKETVER >= 20161228
+packetLen(0x0ab1, 14)
+#elif PACKETVER >= 20161221
+packetLen(0x0ab1, 10)
+#endif
+
+
+#endif /* COMMON_PACKETS2016_LEN_MAIN_H */
diff --git a/src/common/packets/packets2016_len_re.h b/src/common/packets/packets2016_len_re.h
new file mode 100644
index 000000000..2a665f3f5
--- /dev/null
+++ b/src/common/packets/packets2016_len_re.h
@@ -0,0 +1,9140 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2016_LEN_RE_H
+#define COMMON_PACKETS2016_LEN_RE_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 149) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 22) // CZ_ENTER
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 44) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 10) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, 14)
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+packetLen(0x0094, 19) // CZ_REQNAME
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+packetLen(0x00a7, 9)
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 9) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+packetLen(0x00f7, 17) // CZ_REQUEST_TIME
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+packetLen(0x0113, 25) // CZ_USE_SKILL
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 37) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+#if PACKETVER >= 20161012
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20161005
+packetLen(0x0202, 90) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160928
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160921
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160913
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160907
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160831
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160824
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160803
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160727
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160706
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160629
+packetLen(0x0202, 12) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160511
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160427
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160323
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160316
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160224
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160217
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160211
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160203
+packetLen(0x0202, -1) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160127
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160120
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20160106
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x020f
+packetLen(0x020f, 10) // CZ_REQ_PVPPOINT
+
+// Packet: 0x0210
+packetLen(0x0210, 22) // ZC_ACK_PVPPOINT
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+
+// Packet: 0x022b
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+
+// Packet: 0x022c
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+
+// Packet: 0x022d
+#if PACKETVER >= 20161221
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20161214
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+#elif PACKETVER >= 20161026
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20161019
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160928
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160921
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160913
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160907
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160831
+packetLen(0x022d, 90) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160824
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160720
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160713
+packetLen(0x022d, 36) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160706
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160629
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160615
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160608
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160504
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160427
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160420
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160323
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160316
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160309
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160302
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160224
+packetLen(0x022d, 26) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160217
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160211
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160203
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160120
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160113
+packetLen(0x022d, 10) // CZ_COMMAND_MER
+#elif PACKETVER >= 20160106
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#endif
+
+// Packet: 0x022e
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+
+// Packet: 0x022f
+packetLen(0x022f, 5) // ZC_FEED_MER
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+#if PACKETVER >= 20161214
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20161207
+packetLen(0x023b, 5) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160928
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160921
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160913
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160907
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160831
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160824
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160803
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160727
+packetLen(0x023b, 8) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160629
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160622
+packetLen(0x023b, 10) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160504
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160427
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160323
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160316
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160309
+packetLen(0x023b, 6) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160217
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160211
+packetLen(0x023b, 18) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160127
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160120
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160113
+packetLen(0x023b, 5) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20160106
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#endif
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+
+// Packet: 0x0275
+packetLen(0x0275, 37) // CH_ENTER2
+
+// Packet: 0x0276
+packetLen(0x0276, -1) // AC_ACCEPT_LOGIN2
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+#if PACKETVER >= 20161221
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20161214
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20161207
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20161123
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20161026
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20161019
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160928
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160921
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160913
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160907
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160831
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160824
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160622
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160615
+packetLen(0x0281, 26) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160525
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160511
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160504
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160427
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160323
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160316
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160309
+packetLen(0x0281, 6) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160217
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160211
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160203
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160120
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20160106
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#endif
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+
+// Packet: 0x0288
+packetLen(0x0288, -1) // CZ_PC_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0289
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0296
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0297
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0298
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+
+// Packet: 0x0299
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+
+// Packet: 0x029a
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+
+// Packet: 0x029b
+packetLen(0x029b, 80) // ZC_MER_INIT
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a5
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+
+// Packet: 0x02a6
+packetLen(0x02a6, -1) // ZC_HACKSH_CPX_MSG
+
+// Packet: 0x02a7
+packetLen(0x02a7, -1) // CZ_HACKSH_CPX_MSG
+
+// Packet: 0x02aa
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+
+// Packet: 0x02ab
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+
+// Packet: 0x02ac
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+
+// Packet: 0x02ad
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+
+// Packet: 0x02b0
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+
+// Packet: 0x02b1
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+
+// Packet: 0x02b2
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+
+// Packet: 0x02b3
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+
+// Packet: 0x02b4
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+
+// Packet: 0x02b5
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+
+// Packet: 0x02b6
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+
+// Packet: 0x02b7
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+
+// Packet: 0x02b8
+packetLen(0x02b8, 22) // ZC_ITEM_PICKUP_PARTY
+
+// Packet: 0x02b9
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+
+// Packet: 0x02ba
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+
+// Packet: 0x02bb
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+
+// Packet: 0x02bc
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+
+// Packet: 0x02c1
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+
+// Packet: 0x02c2
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+
+// Packet: 0x02c4
+#if PACKETVER >= 20161221
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20161214
+packetLen(0x02c4, 8) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20161116
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20161109
+packetLen(0x02c4, 18) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20160615
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20160608
+packetLen(0x02c4, 18) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20160601
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20160427
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20160420
+packetLen(0x02c4, 6) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20160106
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#endif
+
+// Packet: 0x02c5
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c6
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+
+// Packet: 0x02c7
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c8
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+
+// Packet: 0x02c9
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+
+// Packet: 0x02ca
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+
+// Packet: 0x02cb
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+
+// Packet: 0x02cc
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+
+// Packet: 0x02cd
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+
+// Packet: 0x02ce
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+
+// Packet: 0x02cf
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+
+// Packet: 0x02d0
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d1
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d2
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d3
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+
+// Packet: 0x02d4
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+
+// Packet: 0x02d5
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+
+// Packet: 0x02d6
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d7
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d8
+packetLen(0x02d8, 10) // CZ_CONFIG
+
+// Packet: 0x02d9
+packetLen(0x02d9, 10) // ZC_CONFIG
+
+// Packet: 0x02da
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+
+// Packet: 0x02db
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+
+// Packet: 0x02dc
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+
+// Packet: 0x02dd
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+
+// Packet: 0x02de
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+
+// Packet: 0x02df
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+
+// Packet: 0x02e0
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+
+// Packet: 0x02e1
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+
+// Packet: 0x02e2
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+
+// Packet: 0x02e3
+packetLen(0x02e3, 22) // CZ_USE_SKILL_NEW_JAPEN
+
+// Packet: 0x02e4
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+
+// Packet: 0x02e5
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+
+// Packet: 0x02e6
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+
+// Packet: 0x02e7
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+
+// Packet: 0x02e8
+packetLen(0x02e8, -1) // ZC_NORMAL_ITEMLIST3
+
+// Packet: 0x02e9
+packetLen(0x02e9, -1) // ZC_CART_NORMAL_ITEMLIST3
+
+// Packet: 0x02ea
+packetLen(0x02ea, -1) // ZC_STORE_NORMAL_ITEMLIST3
+
+// Packet: 0x02eb
+packetLen(0x02eb, 13) // ZC_ACCEPT_ENTER2
+
+// Packet: 0x02ec
+packetLen(0x02ec, 67) // ZC_NOTIFY_MOVEENTRY4
+
+// Packet: 0x02ed
+packetLen(0x02ed, 59) // ZC_NOTIFY_NEWENTRY4
+
+// Packet: 0x02ee
+packetLen(0x02ee, 60) // ZC_NOTIFY_STANDENTRY4
+
+// Packet: 0x02ef
+packetLen(0x02ef, 8) // ZC_NOTIFY_FONT
+
+// Packet: 0x02f0
+packetLen(0x02f0, 10) // ZC_PROGRESS
+
+// Packet: 0x02f1
+packetLen(0x02f1, 2) // CZ_PROGRESS
+
+// Packet: 0x02f2
+packetLen(0x02f2, 2) // ZC_PROGRESS_CANCEL
+
+// Packet: 0x02f3
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+
+// Packet: 0x02f4
+packetLen(0x02f4, 3) // ZC_IRMAIL_SEND_RES
+
+// Packet: 0x02f5
+packetLen(0x02f5, 7) // ZC_IRMAIL_NOTIFY
+
+// Packet: 0x02f6
+packetLen(0x02f6, 7) // CZ_IRMAIL_LIST
+
+// Packet: 0x035c
+packetLen(0x035c, 2) // CZ_OPEN_SIMPLE_CASHSHOP_ITEMLIST
+
+// Packet: 0x035d
+packetLen(0x035d, -1) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+
+// Packet: 0x035e
+packetLen(0x035e, 2) // CZ_CLOSE_WINDOW
+
+// Packet: 0x035f
+#if PACKETVER >= 20161228
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20161207
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20161130
+packetLen(0x035f, 5) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20161123
+packetLen(0x035f, 18) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20161026
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20161019
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20161005
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160921
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160913
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160907
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160831
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160824
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160706
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160629
+packetLen(0x035f, 4) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160622
+packetLen(0x035f, 8) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160615
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160608
+packetLen(0x035f, 26) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160511
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160504
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160427
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160420
+packetLen(0x035f, 26) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160414
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160406
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160316
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160302
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160224
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160217
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160211
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160203
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160120
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160113
+packetLen(0x035f, 18) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20160106
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#endif
+
+// Packet: 0x0360
+#if PACKETVER >= 20161221
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20161214
+packetLen(0x0360, 5) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20161130
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20161026
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20161019
+packetLen(0x0360, 5) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20160928
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20160921
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20160913
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20160907
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20160831
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20160824
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20160615
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20160511
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20160504
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20160414
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20160406
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20160316
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20160217
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20160120
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20160113
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20160106
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#endif
+
+// Packet: 0x0361
+#if PACKETVER >= 20161214
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20161207
+packetLen(0x0361, 19) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20161130
+packetLen(0x0361, 6) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20161109
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20161102
+packetLen(0x0361, 8) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20161026
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20161019
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160928
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160921
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160913
+packetLen(0x0361, 18) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160907
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160831
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160824
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160817
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160810
+packetLen(0x0361, 36) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160629
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160622
+packetLen(0x0361, 26) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160504
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160427
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160323
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160316
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160309
+packetLen(0x0361, 26) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160211
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160203
+packetLen(0x0361, 26) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160127
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160120
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20160106
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#endif
+
+// Packet: 0x0362
+#if PACKETVER >= 20161228
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20161221
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20161207
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20161130
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20161123
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20161116
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20161109
+packetLen(0x0362, 8) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20161026
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20161012
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160928
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160921
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160913
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160907
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160831
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160824
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160803
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160727
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160720
+packetLen(0x0362, 90) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160713
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160706
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160525
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160511
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160504
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160427
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160420
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160414
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160323
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160316
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160224
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160217
+packetLen(0x0362, 5) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160211
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160203
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160120
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20160106
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#endif
+
+// Packet: 0x0363
+#if PACKETVER >= 20161207
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20161130
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20161102
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20161026
+packetLen(0x0363, 36) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20161019
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160928
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160921
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160913
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160907
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160831
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160824
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160803
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160727
+packetLen(0x0363, 26) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160720
+packetLen(0x0363, 10) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160713
+packetLen(0x0363, 5) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160706
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160629
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160622
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160615
+packetLen(0x0363, 19) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160525
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160511
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160504
+packetLen(0x0363, -1) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160427
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160420
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160414
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160323
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160316
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160217
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160211
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160203
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160120
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20160106
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#endif
+
+// Packet: 0x0364
+#if PACKETVER >= 20161221
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20161214
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20161207
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20161130
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20161026
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20161019
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20161012
+packetLen(0x0364, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160928
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160921
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160913
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160907
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160831
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160824
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160817
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160810
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160803
+packetLen(0x0364, 19) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160720
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160713
+packetLen(0x0364, -1) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160622
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160615
+packetLen(0x0364, 36) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160525
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160511
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160504
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160427
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160414
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160406
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160323
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160316
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160309
+packetLen(0x0364, 36) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160302
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160224
+packetLen(0x0364, 10) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160217
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160211
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160203
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160120
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20160106
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#endif
+
+// Packet: 0x0365
+#if PACKETVER >= 20161207
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20161130
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20161116
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20161109
+packetLen(0x0365, 6) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20161026
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20161019
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20161012
+packetLen(0x0365, 6) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160928
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160921
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160913
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160907
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160831
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160824
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160727
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160720
+packetLen(0x0365, 7) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160525
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160511
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160504
+packetLen(0x0365, 4) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160427
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160406
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160330
+packetLen(0x0365, 36) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160323
+packetLen(0x0365, 26) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160316
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160224
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160217
+packetLen(0x0365, 12) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160211
+packetLen(0x0365, 36) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160203
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160120
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20160106
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#endif
+
+// Packet: 0x0366
+#if PACKETVER >= 20161228
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20161221
+packetLen(0x0366, 6) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20161130
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20161116
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20161109
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20161026
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20161019
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20161005
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160928
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160921
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160913
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160907
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160831
+packetLen(0x0366, 6) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160824
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160629
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160622
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160608
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160511
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160504
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160414
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160330
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160316
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160302
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160224
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160217
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160120
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160113
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20160106
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#endif
+
+// Packet: 0x0367
+#if PACKETVER >= 20161109
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20161102
+packetLen(0x0367, 4) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20160309
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20160302
+packetLen(0x0367, 6) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20160106
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#endif
+
+// Packet: 0x0368
+#if PACKETVER >= 20161221
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20161130
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20161123
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20161116
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20161026
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20161019
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20161012
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20161005
+packetLen(0x0368, 7) // CZ_REQNAME2
+#elif PACKETVER >= 20160928
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20160921
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20160913
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20160907
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20160831
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20160824
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20160706
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20160629
+packetLen(0x0368, -1) // CZ_REQNAME2
+#elif PACKETVER >= 20160615
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20160511
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20160504
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20160414
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20160406
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20160309
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20160302
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20160224
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20160217
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20160120
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20160113
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20160106
+packetLen(0x0368, 6) // CZ_REQNAME2
+#endif
+
+// Packet: 0x0369
+#if PACKETVER >= 20161221
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20161214
+packetLen(0x0369, 19) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20161207
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20161130
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20161123
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20161116
+packetLen(0x0369, 8) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20161026
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20161019
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20161012
+packetLen(0x0369, 26) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160928
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160921
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160913
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160907
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160831
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160824
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160622
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160615
+packetLen(0x0369, 5) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160511
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160504
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160414
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160406
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160316
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160302
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160224
+packetLen(0x0369, 8) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160217
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160120
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160113
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20160106
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#endif
+
+// Packet: 0x03dd
+packetLen(0x03dd, 18) // AHC_GAME_GUARD
+
+// Packet: 0x03de
+packetLen(0x03de, 18) // CAH_ACK_GAME_GUARD
+
+// Packet: 0x0436
+#if PACKETVER >= 20161221
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20161214
+packetLen(0x0436, 7) // CZ_ENTER2
+#elif PACKETVER >= 20161109
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20161102
+packetLen(0x0436, 7) // CZ_ENTER2
+#elif PACKETVER >= 20161005
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20160928
+packetLen(0x0436, 6) // CZ_ENTER2
+#elif PACKETVER >= 20160921
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20160913
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20160907
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20160831
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20160824
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20160803
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20160727
+packetLen(0x0436, 90) // CZ_ENTER2
+#elif PACKETVER >= 20160713
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20160706
+packetLen(0x0436, 6) // CZ_ENTER2
+#elif PACKETVER >= 20160615
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20160608
+packetLen(0x0436, 5) // CZ_ENTER2
+#elif PACKETVER >= 20160525
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20160518
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20160504
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20160427
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20160323
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20160316
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20160302
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20160224
+packetLen(0x0436, 6) // CZ_ENTER2
+#elif PACKETVER >= 20160217
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20160211
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20160203
+packetLen(0x0436, -1) // CZ_ENTER2
+#elif PACKETVER >= 20160120
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20160106
+packetLen(0x0436, 2) // CZ_ENTER2
+#endif
+
+// Packet: 0x0437
+#if PACKETVER >= 20161221
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20161130
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20161123
+packetLen(0x0437, 6) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20161026
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20161019
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160928
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160921
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160913
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160907
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160831
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160824
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160817
+packetLen(0x0437, 26) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160629
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160622
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160615
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160608
+packetLen(0x0437, 19) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160511
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160504
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160414
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160406
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160316
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160217
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160211
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160203
+packetLen(0x0437, 6) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160120
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160113
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20160106
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#endif
+
+// Packet: 0x0438
+#if PACKETVER >= 20161228
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20161221
+packetLen(0x0438, 5) // CZ_USE_SKILL2
+#elif PACKETVER >= 20161130
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20161102
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20161026
+packetLen(0x0438, 5) // CZ_USE_SKILL2
+#elif PACKETVER >= 20161019
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160928
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160921
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160913
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160907
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160831
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160824
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160803
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160727
+packetLen(0x0438, 6) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160615
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160511
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160504
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160414
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160406
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160316
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160302
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160224
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160217
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160120
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160113
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20160106
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#endif
+
+// Packet: 0x0439
+packetLen(0x0439, 8) // CZ_USE_ITEM2
+
+// Packet: 0x043d
+packetLen(0x043d, 8) // ZC_SKILL_POSTDELAY
+
+// Packet: 0x043e
+packetLen(0x043e, -1) // ZC_SKILL_POSTDELAY_LIST
+
+// Packet: 0x043f
+packetLen(0x043f, 25) // ZC_MSG_STATE_CHANGE2
+
+// Packet: 0x0440
+packetLen(0x0440, 10) // ZC_MILLENNIUMSHIELD
+
+// Packet: 0x0441
+packetLen(0x0441, 4) // ZC_SKILLINFO_DELETE
+
+// Packet: 0x0442
+packetLen(0x0442, -1) // ZC_SKILL_SELECT_REQUEST
+
+// Packet: 0x0443
+packetLen(0x0443, 8) // CZ_SKILL_SELECT_RESPONSE
+
+// Packet: 0x0444
+packetLen(0x0444, -1) // ZC_SIMPLE_CASH_POINT_ITEMLIST
+
+// Packet: 0x0445
+packetLen(0x0445, 10) // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0446
+packetLen(0x0446, 14) // ZC_QUEST_NOTIFY_EFFECT
+
+// Packet: 0x0447
+packetLen(0x0447, 2) // CZ_BLOCKING_PLAY_CANCEL
+
+// Packet: 0x0448
+packetLen(0x0448, -1) // HC_CHARACTER_LIST
+
+// Packet: 0x0449
+packetLen(0x0449, 4) // ZC_HACKSH_ERROR_MSG
+
+// Packet: 0x044a
+packetLen(0x044a, 6) // CZ_CLIENT_VERSION
+
+// Packet: 0x044b
+packetLen(0x044b, 2) // CZ_CLOSE_SIMPLECASH_SHOP
+
+// Packet: 0x07d7
+packetLen(0x07d7, 8) // CZ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d8
+packetLen(0x07d8, 8) // ZC_REQ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d9
+packetLen(0x07d9, 268) // ZC_SHORTCUT_KEY_LIST_V2
+
+// Packet: 0x07da
+packetLen(0x07da, 6) // CZ_CHANGE_GROUP_MASTER
+
+// Packet: 0x07db
+packetLen(0x07db, 8) // ZC_HO_PAR_CHANGE
+
+// Packet: 0x07dc
+packetLen(0x07dc, 6) // CZ_SEEK_PARTY
+
+// Packet: 0x07dd
+packetLen(0x07dd, 54) // ZC_SEEK_PARTY
+
+// Packet: 0x07de
+packetLen(0x07de, 30) // CZ_SEEK_PARTY_MEMBER
+
+// Packet: 0x07df
+packetLen(0x07df, 54) // ZC_SEEK_PARTY_MEMBER
+
+// Packet: 0x07e0
+packetLen(0x07e0, 58) // ZC_ES_NOTI_MYINFO
+
+// Packet: 0x07e1
+packetLen(0x07e1, 15) // ZC_SKILLINFO_UPDATE2
+
+// Packet: 0x07e2
+packetLen(0x07e2, 8) // ZC_MSG_VALUE
+
+// Packet: 0x07e3
+packetLen(0x07e3, 6) // ZC_ITEMLISTWIN_OPEN
+
+// Packet: 0x07e4
+#if PACKETVER >= 20161207
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20161130
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20161026
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20161019
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160928
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160921
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160913
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160907
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160831
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160817
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160727
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160720
+packetLen(0x07e4, 19) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160629
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160622
+packetLen(0x07e4, 5) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160525
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160511
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160504
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160427
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160414
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160406
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160323
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160316
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160217
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160211
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160203
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160120
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20160106
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#endif
+
+// Packet: 0x07e5
+packetLen(0x07e5, 4) // CH_ENTER_CHECKBOT
+
+// Packet: 0x07e6
+packetLen(0x07e6, 8) // ZC_MSG_SKILL
+
+// Packet: 0x07e7
+packetLen(0x07e7, 32) // CH_CHECKBOT
+
+// Packet: 0x07e8
+packetLen(0x07e8, -1) // HC_CHECKBOT
+
+// Packet: 0x07e9
+packetLen(0x07e9, 5) // HC_CHECKBOT_RESULT
+
+// Packet: 0x07ea
+packetLen(0x07ea, 2) // CZ_BATTLE_FIELD_LIST
+
+// Packet: 0x07eb
+packetLen(0x07eb, -1) // ZC_BATTLE_FIELD_LIST
+
+// Packet: 0x07ec
+#if PACKETVER >= 20161207
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20161130
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20161026
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20161019
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20161012
+packetLen(0x07ec, -1) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160928
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160921
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160913
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160907
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160831
+packetLen(0x07ec, 6) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160824
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160803
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160727
+packetLen(0x07ec, 6) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160615
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160608
+packetLen(0x07ec, 5) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160525
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160511
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160504
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160427
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160323
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160316
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160217
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160211
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160203
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160120
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160113
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20160106
+packetLen(0x07ec, 5) // CZ_JOIN_BATTLE_FIELD
+#endif
+
+// Packet: 0x07ed
+packetLen(0x07ed, 10) // ZC_JOIN_BATTLE_FIELD
+
+// Packet: 0x07ee
+packetLen(0x07ee, 6) // CZ_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07ef
+packetLen(0x07ef, 8) // ZC_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07f0
+packetLen(0x07f0, 6) // CZ_REQ_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f1
+packetLen(0x07f1, 18) // ZC_ACK_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f2
+packetLen(0x07f2, 8) // ZC_BATTLE_NOTI_START_STEP
+
+// Packet: 0x07f3
+packetLen(0x07f3, 6) // ZC_BATTLE_JOIN_NOTI_DEFER
+
+// Packet: 0x07f4
+packetLen(0x07f4, 3) // ZC_BATTLE_JOIN_DISABLE_STATE
+
+// Packet: 0x07f5
+packetLen(0x07f5, 6) // CZ_GM_FULLSTRIP
+
+// Packet: 0x07f6
+packetLen(0x07f6, 14) // ZC_NOTIFY_EXP
+
+// Packet: 0x07f7
+packetLen(0x07f7, -1) // ZC_NOTIFY_MOVEENTRY7
+
+// Packet: 0x07f8
+packetLen(0x07f8, -1) // ZC_NOTIFY_NEWENTRY5
+
+// Packet: 0x07f9
+packetLen(0x07f9, -1) // ZC_NOTIFY_STANDENTRY5
+
+// Packet: 0x07fa
+packetLen(0x07fa, 8) // ZC_DELETE_ITEM_FROM_BODY
+
+// Packet: 0x07fb
+packetLen(0x07fb, 25) // ZC_USESKILL_ACK2
+
+// Packet: 0x07fc
+packetLen(0x07fc, 10) // ZC_CHANGE_GROUP_MASTER
+
+// Packet: 0x07fd
+packetLen(0x07fd, -1) // ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN
+
+// Packet: 0x07fe
+packetLen(0x07fe, 26) // ZC_PLAY_NPC_BGM
+
+// Packet: 0x0800
+packetLen(0x0800, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0801
+packetLen(0x0801, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0802
+#if PACKETVER >= 20161207
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20161130
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20161109
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20161102
+packetLen(0x0802, 6) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20161026
+packetLen(0x0802, 18) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20161019
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160928
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160921
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160913
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160907
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160831
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160824
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160615
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160608
+packetLen(0x0802, 6) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160525
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160511
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160504
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160427
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160323
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160316
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160309
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160302
+packetLen(0x0802, 19) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160217
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160211
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160203
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160120
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20160106
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// Packet: 0x0803
+packetLen(0x0803, 4) // ZC_PARTY_BOOKING_ACK_REGISTER
+
+// Packet: 0x0804
+packetLen(0x0804, 14) // CZ_PARTY_BOOKING_REQ_SEARCH
+
+// Packet: 0x0805
+packetLen(0x0805, -1) // ZC_PARTY_BOOKING_ACK_SEARCH
+
+// Packet: 0x0806
+packetLen(0x0806, 2) // CZ_PARTY_BOOKING_REQ_DELETE
+
+// Packet: 0x0807
+packetLen(0x0807, 4) // ZC_PARTY_BOOKING_ACK_DELETE
+
+// Packet: 0x0808
+packetLen(0x0808, 14) // CZ_PARTY_BOOKING_REQ_UPDATE
+
+// Packet: 0x0809
+packetLen(0x0809, 50) // ZC_PARTY_BOOKING_NOTIFY_INSERT
+
+// Packet: 0x080a
+packetLen(0x080a, 18) // ZC_PARTY_BOOKING_NOTIFY_UPDATE
+
+// Packet: 0x080b
+packetLen(0x080b, 6) // ZC_PARTY_BOOKING_NOTIFY_DELETE
+
+// Packet: 0x080c
+packetLen(0x080c, 2) // CZ_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080d
+packetLen(0x080d, 3) // ZC_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080e
+packetLen(0x080e, 14) // ZC_NOTIFY_HP_TO_GROUPM_R2
+
+// Packet: 0x080f
+packetLen(0x080f, 20) // ZC_ADD_EXCHANGE_ITEM2
+
+// Packet: 0x0810
+packetLen(0x0810, 3) // ZC_OPEN_BUYING_STORE
+
+// Packet: 0x0811
+#if PACKETVER >= 20161221
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20161130
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20161026
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20161019
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20161005
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160928
+packetLen(0x0811, 8) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160921
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160913
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160907
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160831
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160824
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160817
+packetLen(0x0811, 4) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160608
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160511
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160504
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160414
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160406
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160316
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160302
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160224
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160217
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160211
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160203
+packetLen(0x0811, 5) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160120
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160113
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20160106
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#endif
+
+// Packet: 0x0812
+packetLen(0x0812, 8) // ZC_FAILED_OPEN_BUYING_STORE_TO_BUYER
+
+// Packet: 0x0813
+packetLen(0x0813, -1) // ZC_MYITEMLIST_BUYING_STORE
+
+// Packet: 0x0814
+packetLen(0x0814, 86) // ZC_BUYING_STORE_ENTRY
+
+// Packet: 0x0815
+#if PACKETVER >= 20161221
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20161130
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20161026
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20161019
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160928
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160921
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160913
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160907
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160831
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160824
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160615
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160511
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160504
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160414
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160406
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160316
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160302
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160224
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160217
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160120
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160113
+packetLen(0x0815, 36) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20160106
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#endif
+
+// Packet: 0x0816
+packetLen(0x0816, 6) // ZC_DISAPPEAR_BUYING_STORE_ENTRY
+
+// Packet: 0x0817
+#if PACKETVER >= 20161228
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20161221
+packetLen(0x0817, 8) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20160921
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20160913
+packetLen(0x0817, 8) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20160608
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20160601
+packetLen(0x0817, 26) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20160106
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#endif
+
+// Packet: 0x0818
+packetLen(0x0818, -1) // ZC_ACK_ITEMLIST_BUYING_STORE
+
+// Packet: 0x0819
+#if PACKETVER >= 20161221
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20161214
+packetLen(0x0819, 4) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20161130
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20161026
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20161019
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20161012
+packetLen(0x0819, 26) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160928
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160921
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160913
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160907
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160831
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160824
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160817
+packetLen(0x0819, 6) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160810
+packetLen(0x0819, 10) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160727
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160720
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160615
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160511
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160427
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160420
+packetLen(0x0819, 5) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160414
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160406
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160316
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160309
+packetLen(0x0819, 10) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160302
+packetLen(0x0819, 5) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160224
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160217
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160211
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160203
+packetLen(0x0819, 19) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160120
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160113
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20160106
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#endif
+
+// Packet: 0x081a
+packetLen(0x081a, 4) // ZC_FAILED_TRADE_BUYING_STORE_TO_BUYER
+
+// Packet: 0x081b
+packetLen(0x081b, 10) // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+
+// Packet: 0x081c
+packetLen(0x081c, 10) // ZC_ITEM_DELETE_BUYING_STORE
+
+// Packet: 0x081d
+packetLen(0x081d, 22) // ZC_EL_INIT
+
+// Packet: 0x081e
+packetLen(0x081e, 8) // ZC_EL_PAR_CHANGE
+
+// Packet: 0x081f
+packetLen(0x081f, -1) // ZC_BROADCAST4
+
+// Packet: 0x0820
+packetLen(0x0820, 11) // ZC_COSTUME_SPRITE_CHANGE
+
+// Packet: 0x0821
+packetLen(0x0821, 2) // AC_OTP_USER
+
+// Packet: 0x0822
+packetLen(0x0822, 9) // CA_OTP_AUTH_REQ
+
+// Packet: 0x0823
+packetLen(0x0823, -1) // AC_OTP_AUTH_ACK
+
+// Packet: 0x0824
+packetLen(0x0824, 6) // ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER
+
+// Packet: 0x0825
+packetLen(0x0825, -1) // CA_SSO_LOGIN_REQ
+
+// Packet: 0x0827
+packetLen(0x0827, 6) // CH_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0828
+packetLen(0x0828, 14) // HC_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0829
+packetLen(0x0829, 12) // CH_DELETE_CHAR3
+
+// Packet: 0x082a
+packetLen(0x082a, 10) // HC_DELETE_CHAR3
+
+// Packet: 0x082b
+packetLen(0x082b, 6) // CH_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082c
+packetLen(0x082c, 10) // HC_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082d
+packetLen(0x082d, -1) // HC_ACCEPT_ENTER2
+
+// Packet: 0x0835
+#if PACKETVER >= 20161123
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20161116
+packetLen(0x0835, 26) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20161109
+packetLen(0x0835, 6) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20160907
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20160831
+packetLen(0x0835, 19) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20160504
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20160427
+packetLen(0x0835, 36) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20160211
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20160203
+packetLen(0x0835, -1) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20160106
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#endif
+
+// Packet: 0x0836
+packetLen(0x0836, -1) // ZC_SEARCH_STORE_INFO_ACK
+
+// Packet: 0x0837
+packetLen(0x0837, 3) // ZC_SEARCH_STORE_INFO_FAILED
+
+// Packet: 0x0838
+#if PACKETVER >= 20161221
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20161130
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20161109
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20161102
+packetLen(0x0838, -1) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20161026
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20161019
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20161012
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20161005
+packetLen(0x0838, 36) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160928
+packetLen(0x0838, 26) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160921
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160913
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160907
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160831
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160824
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160817
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160810
+packetLen(0x0838, 26) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160727
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160720
+packetLen(0x0838, 5) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160713
+packetLen(0x0838, 6) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160615
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160511
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160504
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160414
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160406
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160316
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160309
+packetLen(0x0838, 5) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160302
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160224
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160217
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160120
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160113
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20160106
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#endif
+
+// Packet: 0x0839
+packetLen(0x0839, 66) // ZC_ACK_BAN_GUILD_SSO
+
+// Packet: 0x083a
+packetLen(0x083a, 5) // ZC_OPEN_SEARCH_STORE_INFO
+
+// Packet: 0x083b
+packetLen(0x083b, 2) // CZ_CLOSE_SEARCH_STORE_INFO
+
+// Packet: 0x083c
+#if PACKETVER >= 20161221
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20161130
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20161109
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20161102
+packetLen(0x083c, 18) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20161026
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20161019
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160928
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160921
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160913
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160907
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160831
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160824
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160817
+packetLen(0x083c, -1) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160622
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160615
+packetLen(0x083c, 6) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160511
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160504
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160414
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160406
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160316
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160309
+packetLen(0x083c, 26) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160302
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160224
+packetLen(0x083c, 8) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160217
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160120
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160113
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20160106
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#endif
+
+// Packet: 0x083d
+packetLen(0x083d, 6) // ZC_SSILIST_ITEM_CLICK_ACK
+
+// Packet: 0x083e
+packetLen(0x083e, 26) // AC_REFUSE_LOGIN2
+
+// Packet: 0x0840
+packetLen(0x0840, -1) // HC_NOTIFY_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0841
+packetLen(0x0841, 4) // CH_SELECT_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0842
+packetLen(0x0842, 6) // CZ_RECALL_SSO
+
+// Packet: 0x0843
+packetLen(0x0843, 6) // CZ_REMOVE_AID_SSO
+
+// Packet: 0x0844
+packetLen(0x0844, 2) // CZ_SE_CASHSHOP_OPEN
+
+// Packet: 0x0845
+packetLen(0x0845, 10) // ZC_SE_CASHSHOP_OPEN
+
+// Packet: 0x0846
+packetLen(0x0846, 4) // CZ_REQ_SE_CASH_TAB_CODE
+
+// Packet: 0x0847
+packetLen(0x0847, -1) // ZC_ACK_SE_CASH_ITEM_LIST
+
+// Packet: 0x0848
+packetLen(0x0848, -1) // CZ_SE_PC_BUY_CASHITEM_LIST
+
+// Packet: 0x0849
+packetLen(0x0849, 16) // ZC_SE_PC_BUY_CASHITEM_RESULT
+
+// Packet: 0x084a
+packetLen(0x084a, 2) // CZ_SE_CASHSHOP_CLOSE
+
+// Packet: 0x084b
+packetLen(0x084b, 19) // ZC_ITEM_FALL_ENTRY4
+
+// Packet: 0x084c
+packetLen(0x084c, 10) // CZ_MACRO_USE_SKILL
+
+// Packet: 0x084d
+packetLen(0x084d, 10) // CZ_MACRO_USE_SKILL_TOGROUND
+
+// Packet: 0x084e
+packetLen(0x084e, 5) // CZ_MACRO_REQUEST_MOVE
+
+// Packet: 0x084f
+packetLen(0x084f, 6) // CZ_MACRO_ITEM_PICKUP
+
+// Packet: 0x0850
+packetLen(0x0850, 7) // CZ_MACRO_REQUEST_ACT
+
+// Packet: 0x0851
+packetLen(0x0851, -1) // ZC_GPK_DYNCODE
+
+// Packet: 0x0852
+packetLen(0x0852, 2) // CZ_GPK_DYNCODE_RELOAD
+
+// Packet: 0x0853
+packetLen(0x0853, -1) // ZC_GPK_AUTH
+
+// Packet: 0x0854
+packetLen(0x0854, -1) // CZ_GPK_AUTH
+
+// Packet: 0x0855
+packetLen(0x0855, 6) // ZC_MACRO_ITEMPICKUP_FAIL
+
+// Packet: 0x0856
+packetLen(0x0856, -1) // ZC_NOTIFY_MOVEENTRY8
+
+// Packet: 0x0857
+packetLen(0x0857, -1) // ZC_NOTIFY_STANDENTRY7
+
+// Packet: 0x0858
+packetLen(0x0858, -1) // ZC_NOTIFY_NEWENTRY6
+
+// Packet: 0x0859
+packetLen(0x0859, -1) // ZC_EQUIPWIN_MICROSCOPE2
+
+// Packet: 0x085a
+#if PACKETVER >= 20161228
+packetLen(0x085a, 6) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20161221
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20161214
+packetLen(0x085a, -1) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20161102
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20161026
+packetLen(0x085a, 8) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160601
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160525
+packetLen(0x085a, 4) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160414
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160406
+packetLen(0x085a, 18) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160316
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160309
+packetLen(0x085a, 8) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160106
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x085b
+#if PACKETVER >= 20161228
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20161221
+packetLen(0x085b, 90) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20161019
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20161012
+packetLen(0x085b, 4) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160921
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160913
+packetLen(0x085b, 12) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160309
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160302
+packetLen(0x085b, 26) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160120
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160113
+packetLen(0x085b, 5) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160106
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x085c
+#if PACKETVER >= 20161130
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20161123
+packetLen(0x085c, 90) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160824
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160817
+packetLen(0x085c, 6) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160706
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160629
+packetLen(0x085c, 90) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160615
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160608
+packetLen(0x085c, 8) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160414
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160406
+packetLen(0x085c, 10) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160106
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#endif
+
+// Packet: 0x085d
+#if PACKETVER >= 20160817
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20160810
+packetLen(0x085d, 12) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20160803
+packetLen(0x085d, 6) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20160106
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x085e
+#if PACKETVER >= 20161228
+packetLen(0x085e, 5) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20161116
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20161109
+packetLen(0x085e, 90) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160817
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160810
+packetLen(0x085e, 6) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160706
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160629
+packetLen(0x085e, 8) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160601
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160525
+packetLen(0x085e, 6) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160518
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160511
+packetLen(0x085e, 5) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160203
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160127
+packetLen(0x085e, 5) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160106
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x085f
+#if PACKETVER >= 20161123
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20161116
+packetLen(0x085f, 6) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20161109
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20161102
+packetLen(0x085f, 10) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20161026
+packetLen(0x085f, 7) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160817
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160810
+packetLen(0x085f, 18) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160713
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160706
+packetLen(0x085f, 26) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160511
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160504
+packetLen(0x085f, 7) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160316
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160309
+packetLen(0x085f, 10) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160106
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x0860
+#if PACKETVER >= 20160817
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20160810
+packetLen(0x0860, 6) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20160720
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20160713
+packetLen(0x0860, 6) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20160706
+packetLen(0x0860, 7) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20160629
+packetLen(0x0860, -1) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20160106
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x0861
+#if PACKETVER >= 20161130
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20161123
+packetLen(0x0861, 5) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20161102
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20161026
+packetLen(0x0861, -1) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20160706
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20160629
+packetLen(0x0861, 6) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20160622
+packetLen(0x0861, -1) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20160302
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20160224
+packetLen(0x0861, 19) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20160113
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20160106
+packetLen(0x0861, 6) // ZC_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x0862
+#if PACKETVER >= 20161221
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20161214
+packetLen(0x0862, 26) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20161102
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20161026
+packetLen(0x0862, 6) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20160420
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20160414
+packetLen(0x0862, 19) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20160106
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x0863
+#if PACKETVER >= 20161019
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20161012
+packetLen(0x0863, 7) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20161005
+packetLen(0x0863, 6) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160706
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160629
+packetLen(0x0863, 6) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160608
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160601
+packetLen(0x0863, 6) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160106
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x0864
+#if PACKETVER >= 20161123
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20161116
+packetLen(0x0864, 26) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20161005
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160928
+packetLen(0x0864, 8) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160427
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160420
+packetLen(0x0864, 6) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160309
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160302
+packetLen(0x0864, -1) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160224
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160217
+packetLen(0x0864, 8) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160120
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160113
+packetLen(0x0864, 6) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160106
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x0865
+#if PACKETVER >= 20161228
+packetLen(0x0865, 90) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20161116
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20161109
+packetLen(0x0865, 5) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160921
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160913
+packetLen(0x0865, 6) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160907
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160831
+packetLen(0x0865, 5) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160720
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160713
+packetLen(0x0865, -1) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160629
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160622
+packetLen(0x0865, 4) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160309
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160302
+packetLen(0x0865, -1) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160127
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160120
+packetLen(0x0865, 36) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160106
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0866
+#if PACKETVER >= 20161228
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20161221
+packetLen(0x0866, -1) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20160803
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20160727
+packetLen(0x0866, 4) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20160622
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20160615
+packetLen(0x0866, 5) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20160106
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0867
+#if PACKETVER >= 20161214
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20161207
+packetLen(0x0867, 26) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160824
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160817
+packetLen(0x0867, 12) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160706
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160629
+packetLen(0x0867, 36) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160622
+packetLen(0x0867, 8) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160601
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160525
+packetLen(0x0867, 5) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160406
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160330
+packetLen(0x0867, 26) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160323
+packetLen(0x0867, 8) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160309
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160302
+packetLen(0x0867, -1) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160106
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0868
+#if PACKETVER >= 20161214
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20161207
+packetLen(0x0868, 8) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20161019
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20161012
+packetLen(0x0868, 6) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20160803
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20160727
+packetLen(0x0868, 26) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20160309
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20160302
+packetLen(0x0868, 5) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20160106
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0869
+#if PACKETVER >= 20161109
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20161102
+packetLen(0x0869, 8) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20160803
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20160727
+packetLen(0x0869, 12) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20160720
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20160706
+packetLen(0x0869, -1) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20160414
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20160406
+packetLen(0x0869, -1) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20160330
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20160323
+packetLen(0x0869, 6) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20160106
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x086a
+#if PACKETVER >= 20161228
+packetLen(0x086a, -1) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20161116
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20161109
+packetLen(0x086a, 7) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20160601
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20160525
+packetLen(0x086a, 19) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20160330
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20160323
+packetLen(0x086a, 8) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20160316
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20160309
+packetLen(0x086a, -1) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20160113
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20160106
+packetLen(0x086a, 6) // ZC_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x086b
+#if PACKETVER >= 20160824
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20160817
+packetLen(0x086b, 6) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20160713
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20160706
+packetLen(0x086b, -1) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20160511
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20160504
+packetLen(0x086b, -1) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20160302
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20160224
+packetLen(0x086b, 8) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20160106
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x086c
+#if PACKETVER >= 20161228
+packetLen(0x086c, 6) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20161102
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20161026
+packetLen(0x086c, 12) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20160525
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20160518
+packetLen(0x086c, 5) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20160217
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20160211
+packetLen(0x086c, 5) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20160203
+packetLen(0x086c, 18) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20160113
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20160106
+packetLen(0x086c, 4) // ZC_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x086d
+#if PACKETVER >= 20161228
+packetLen(0x086d, 19) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20161221
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20161214
+packetLen(0x086d, 26) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20161116
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20161109
+packetLen(0x086d, 10) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20161019
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20161012
+packetLen(0x086d, 19) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20161005
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20160928
+packetLen(0x086d, 6) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20160727
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20160720
+packetLen(0x086d, 6) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20160406
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20160330
+packetLen(0x086d, 6) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20160120
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20160113
+packetLen(0x086d, 5) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20160106
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x086e
+#if PACKETVER >= 20161102
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20161026
+packetLen(0x086e, 8) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20160106
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x086f
+#if PACKETVER >= 20161130
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20161116
+packetLen(0x086f, 6) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20161109
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20161102
+packetLen(0x086f, 8) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20160817
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20160810
+packetLen(0x086f, -1) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20160106
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x0870
+#if PACKETVER >= 20161228
+packetLen(0x0870, -1) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20161116
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20161109
+packetLen(0x0870, 19) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160907
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160831
+packetLen(0x0870, 18) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160622
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160615
+packetLen(0x0870, 4) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160608
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160601
+packetLen(0x0870, 8) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160427
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160420
+packetLen(0x0870, 4) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160224
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160211
+packetLen(0x0870, 26) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160106
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x0871
+#if PACKETVER >= 20161228
+packetLen(0x0871, 5) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20161130
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20161123
+packetLen(0x0871, 4) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20160106
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x0872
+#if PACKETVER >= 20161019
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20161012
+packetLen(0x0872, 12)
+#elif PACKETVER >= 20161005
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20160928
+packetLen(0x0872, 5)
+#elif PACKETVER >= 20160427
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20160420
+packetLen(0x0872, 5)
+#elif PACKETVER >= 20160330
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20160323
+packetLen(0x0872, 36)
+#elif PACKETVER >= 20160211
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20160203
+packetLen(0x0872, 5)
+#elif PACKETVER >= 20160106
+packetLen(0x0872, 2)
+#endif
+
+// Packet: 0x0873
+#if PACKETVER >= 20160316
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20160309
+packetLen(0x0873, 8) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20160302
+packetLen(0x0873, 12) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20160224
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20160217
+packetLen(0x0873, 5) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20160211
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20160203
+packetLen(0x0873, 36) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20160120
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20160113
+packetLen(0x0873, 4) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20160106
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x0874
+#if PACKETVER >= 20161109
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20161102
+packetLen(0x0874, -1) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160921
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160913
+packetLen(0x0874, 6) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160907
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160831
+packetLen(0x0874, 26) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160803
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160727
+packetLen(0x0874, 6) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160525
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160518
+packetLen(0x0874, 19) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160427
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160420
+packetLen(0x0874, 8) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160106
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x0875
+#if PACKETVER >= 20161214
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20161207
+packetLen(0x0875, 8) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20161019
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20161012
+packetLen(0x0875, -1) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20160921
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20160913
+packetLen(0x0875, 6) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20160824
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20160817
+packetLen(0x0875, 19) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20160810
+packetLen(0x0875, 5) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20160106
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x0876
+#if PACKETVER >= 20161228
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20161221
+packetLen(0x0876, 12) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20161116
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20161109
+packetLen(0x0876, 6) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20160907
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20160831
+packetLen(0x0876, 8) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20160106
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x0877
+#if PACKETVER >= 20160803
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20160727
+packetLen(0x0877, 18) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20160720
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20160713
+packetLen(0x0877, 10) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20160414
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20160406
+packetLen(0x0877, 6) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20160106
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x0878
+#if PACKETVER >= 20161005
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160928
+packetLen(0x0878, 6) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160907
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160831
+packetLen(0x0878, 7) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160810
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160803
+packetLen(0x0878, 4) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160414
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160406
+packetLen(0x0878, 26) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160330
+packetLen(0x0878, 8) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160323
+packetLen(0x0878, 19) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160113
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160106
+packetLen(0x0878, 36) // ZC_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x0879
+#if PACKETVER >= 20160921
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20160913
+packetLen(0x0879, 6) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20160817
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20160810
+packetLen(0x0879, 6) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20160414
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20160406
+packetLen(0x0879, -1) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20160106
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x087a
+#if PACKETVER >= 20161116
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20161109
+packetLen(0x087a, 8) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20161102
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20161026
+packetLen(0x087a, -1) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160921
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160913
+packetLen(0x087a, 8) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160817
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160810
+packetLen(0x087a, 5) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160420
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160414
+packetLen(0x087a, 8) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160309
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160302
+packetLen(0x087a, 10) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160224
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160217
+packetLen(0x087a, 19) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160113
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160106
+packetLen(0x087a, 18) // ZC_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x087b
+#if PACKETVER >= 20160720
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20160713
+packetLen(0x087b, 6) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20160106
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x087c
+#if PACKETVER >= 20161102
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20161026
+packetLen(0x087c, 4) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20160907
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20160831
+packetLen(0x087c, 6) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20160316
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20160309
+packetLen(0x087c, 19) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20160106
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#endif
+
+// Packet: 0x087d
+#if PACKETVER >= 20160622
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20160615
+packetLen(0x087d, 6) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20160608
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20160601
+packetLen(0x087d, -1) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20160309
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20160302
+packetLen(0x087d, 26) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20160106
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x087e
+#if PACKETVER >= 20161214
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20161207
+packetLen(0x087e, -1) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20160622
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20160615
+packetLen(0x087e, 6) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20160316
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20160309
+packetLen(0x087e, 90) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20160106
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x087f
+#if PACKETVER >= 20161228
+packetLen(0x087f, 12) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20161130
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20161123
+packetLen(0x087f, 26) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20161102
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20161026
+packetLen(0x087f, 10) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20161005
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160928
+packetLen(0x087f, 12) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160824
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160817
+packetLen(0x087f, 6) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160810
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160803
+packetLen(0x087f, 5) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160727
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160720
+packetLen(0x087f, 6) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160622
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160615
+packetLen(0x087f, 90) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160406
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160330
+packetLen(0x087f, 8) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160113
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160106
+packetLen(0x087f, 19) // ZC_REASSEMBLY_AUTH38
+#endif
+
+// Packet: 0x0880
+#if PACKETVER >= 20161130
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20161123
+packetLen(0x0880, 36) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20161019
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20161012
+packetLen(0x0880, 10) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20160629
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20160622
+packetLen(0x0880, -1) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20160420
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20160414
+packetLen(0x0880, 18) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20160106
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x0881
+#if PACKETVER >= 20161228
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20161221
+packetLen(0x0881, 6) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20161116
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20161109
+packetLen(0x0881, 8) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20160810
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20160803
+packetLen(0x0881, 18) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20160706
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20160629
+packetLen(0x0881, 19) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20160106
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x0882
+#if PACKETVER >= 20161130
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20161123
+packetLen(0x0882, -1) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20160106
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x0883
+#if PACKETVER >= 20160803
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20160727
+packetLen(0x0883, 7) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20160720
+packetLen(0x0883, 10) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20160713
+packetLen(0x0883, -1) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20160330
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20160323
+packetLen(0x0883, 26) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20160309
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20160302
+packetLen(0x0883, 10) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20160106
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x0884
+#if PACKETVER >= 20161228
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20161221
+packetLen(0x0884, 8) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160713
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160706
+packetLen(0x0884, 26) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160622
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160615
+packetLen(0x0884, 8) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160511
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160504
+packetLen(0x0884, 10) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160427
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160420
+packetLen(0x0884, 6) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160414
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160406
+packetLen(0x0884, -1) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160302
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160224
+packetLen(0x0884, 7) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20160106
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x0885
+#if PACKETVER >= 20161228
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20161221
+packetLen(0x0885, -1) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20161123
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20161116
+packetLen(0x0885, -1) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160817
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160810
+packetLen(0x0885, 19) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160706
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160629
+packetLen(0x0885, 5) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160615
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160608
+packetLen(0x0885, 90) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160420
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160414
+packetLen(0x0885, 8) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160302
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160224
+packetLen(0x0885, 6) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160113
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20160106
+packetLen(0x0885, 8) // CZ_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x0886
+#if PACKETVER >= 20161228
+packetLen(0x0886, 5) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20161214
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20161207
+packetLen(0x0886, 7) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20161109
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20161102
+packetLen(0x0886, 90) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20161026
+packetLen(0x0886, 6) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20161012
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20161005
+packetLen(0x0886, -1) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160824
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160817
+packetLen(0x0886, 7) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160810
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160803
+packetLen(0x0886, 8) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160713
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160706
+packetLen(0x0886, 4) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160511
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160504
+packetLen(0x0886, 8) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160217
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160211
+packetLen(0x0886, 5) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20160106
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#endif
+
+// Packet: 0x0887
+#if PACKETVER >= 20161221
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20161214
+packetLen(0x0887, 6) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20160921
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20160913
+packetLen(0x0887, -1) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20160810
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20160803
+packetLen(0x0887, 6) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20160727
+packetLen(0x0887, 19) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20160720
+packetLen(0x0887, 6) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20160622
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20160615
+packetLen(0x0887, -1) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20160511
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20160504
+packetLen(0x0887, 26) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20160106
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x0888
+#if PACKETVER >= 20160817
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160810
+packetLen(0x0888, 26) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160803
+packetLen(0x0888, 90) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160622
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160615
+packetLen(0x0888, 10) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160427
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160420
+packetLen(0x0888, 19) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160302
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160224
+packetLen(0x0888, 5) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160217
+packetLen(0x0888, 6) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160120
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160113
+packetLen(0x0888, 90) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20160106
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x0889
+#if PACKETVER >= 20161228
+packetLen(0x0889, -1) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20161026
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20161019
+packetLen(0x0889, 36) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20161005
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160928
+packetLen(0x0889, 19) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160921
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160913
+packetLen(0x0889, 6) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160713
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160706
+packetLen(0x0889, -1) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160615
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160608
+packetLen(0x0889, -1) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160406
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160330
+packetLen(0x0889, 90) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160113
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20160106
+packetLen(0x0889, 5) // CZ_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x088a
+#if PACKETVER >= 20160622
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20160615
+packetLen(0x088a, 6) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20160511
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20160504
+packetLen(0x088a, 6) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20160113
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20160106
+packetLen(0x088a, 26) // CZ_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x088b
+#if PACKETVER >= 20161130
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20161123
+packetLen(0x088b, 6) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20161116
+packetLen(0x088b, 5) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20160427
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20160420
+packetLen(0x088b, 8) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20160406
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20160330
+packetLen(0x088b, 5) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20160120
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20160113
+packetLen(0x088b, 26) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20160106
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x088c
+#if PACKETVER >= 20161228
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20161221
+packetLen(0x088c, -1) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20160211
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20160203
+packetLen(0x088c, 4) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20160106
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x088d
+#if PACKETVER >= 20161123
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20161116
+packetLen(0x088d, 6) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160720
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160713
+packetLen(0x088d, 18) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160622
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160615
+packetLen(0x088d, -1) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160608
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160601
+packetLen(0x088d, 6) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160511
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160504
+packetLen(0x088d, 10) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160406
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160330
+packetLen(0x088d, 4) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160224
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160217
+packetLen(0x088d, 6) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20160106
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x088e
+#if PACKETVER >= 20161116
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20161109
+packetLen(0x088e, -1) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20161012
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20161005
+packetLen(0x088e, 8) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160928
+packetLen(0x088e, -1) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160921
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160913
+packetLen(0x088e, 10) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160803
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160727
+packetLen(0x088e, 10) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160706
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160629
+packetLen(0x088e, 6) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20160106
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x088f
+#if PACKETVER >= 20161207
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20161130
+packetLen(0x088f, 4) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20161123
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20161116
+packetLen(0x088f, 19) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20161109
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20161102
+packetLen(0x088f, 5) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160921
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160913
+packetLen(0x088f, -1) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160608
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160601
+packetLen(0x088f, 8) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160511
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160504
+packetLen(0x088f, -1) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160224
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160217
+packetLen(0x088f, 6) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20160106
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0890
+#if PACKETVER >= 20161228
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20161221
+packetLen(0x0890, 36) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20161123
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20161116
+packetLen(0x0890, 5) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20161109
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20161102
+packetLen(0x0890, 6) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20160817
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20160810
+packetLen(0x0890, -1) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20160629
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20160622
+packetLen(0x0890, 26) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20160511
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20160504
+packetLen(0x0890, 6) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20160106
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0891
+#if PACKETVER >= 20161116
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20161109
+packetLen(0x0891, 12) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20161102
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20161026
+packetLen(0x0891, 6) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20161012
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20161005
+packetLen(0x0891, 5) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160921
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160913
+packetLen(0x0891, -1) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160824
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160817
+packetLen(0x0891, 10) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160810
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160803
+packetLen(0x0891, 5) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160727
+packetLen(0x0891, -1) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160629
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160622
+packetLen(0x0891, 6) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160615
+packetLen(0x0891, 10) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160113
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20160106
+packetLen(0x0891, 8) // CZ_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0892
+#if PACKETVER >= 20161123
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20161116
+packetLen(0x0892, -1) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20161026
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20161019
+packetLen(0x0892, 4) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20161012
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20161005
+packetLen(0x0892, 18) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20160921
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20160913
+packetLen(0x0892, 10) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20160720
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20160713
+packetLen(0x0892, 12) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20160706
+packetLen(0x0892, 5) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20160414
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20160406
+packetLen(0x0892, 90) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20160120
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20160113
+packetLen(0x0892, 10) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20160106
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0893
+#if PACKETVER >= 20161228
+packetLen(0x0893, 6) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20161123
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20161116
+packetLen(0x0893, 7) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20161019
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20161012
+packetLen(0x0893, 8) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20160706
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20160629
+packetLen(0x0893, 6) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20160511
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20160504
+packetLen(0x0893, 18) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20160120
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20160113
+packetLen(0x0893, -1) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20160106
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x0894
+#if PACKETVER >= 20161102
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20161026
+packetLen(0x0894, 10) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20160518
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20160511
+packetLen(0x0894, 26) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20160106
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x0895
+#if PACKETVER >= 20161221
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20161214
+packetLen(0x0895, 8) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20160810
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20160803
+packetLen(0x0895, 26) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20160608
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20160601
+packetLen(0x0895, 5) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20160414
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20160406
+packetLen(0x0895, 19) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20160106
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x0896
+#if PACKETVER >= 20160330
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20160323
+packetLen(0x0896, -1) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20160106
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x0897
+#if PACKETVER >= 20161005
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20160928
+packetLen(0x0897, 90) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20160727
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20160720
+packetLen(0x0897, -1) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20160106
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x0898
+#if PACKETVER >= 20161116
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20161109
+packetLen(0x0898, 6) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20161102
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20161026
+packetLen(0x0898, 26) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20160622
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20160615
+packetLen(0x0898, 6) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20160511
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20160504
+packetLen(0x0898, 8) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20160414
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20160406
+packetLen(0x0898, 26) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20160106
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x0899
+#if PACKETVER >= 20161228
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20161221
+packetLen(0x0899, 4) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20161214
+packetLen(0x0899, 36) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20160713
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20160706
+packetLen(0x0899, 10) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20160615
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20160608
+packetLen(0x0899, 6) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20160601
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20160525
+packetLen(0x0899, 6) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20160224
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20160217
+packetLen(0x0899, 4) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20160120
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20160113
+packetLen(0x0899, 26) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20160106
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x089a
+#if PACKETVER >= 20161228
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20161221
+packetLen(0x089a, 8) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20161116
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20161109
+packetLen(0x089a, 6) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20161005
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160928
+packetLen(0x089a, 7) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160727
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160720
+packetLen(0x089a, 36) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160713
+packetLen(0x089a, 26) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160629
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160622
+packetLen(0x089a, 18) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160525
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160518
+packetLen(0x089a, 36) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160330
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160323
+packetLen(0x089a, 5) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160120
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160113
+packetLen(0x089a, 7) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20160106
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x089b
+#if PACKETVER >= 20161228
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20161221
+packetLen(0x089b, 7) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20161012
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20161005
+packetLen(0x089b, 26) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20160921
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20160913
+packetLen(0x089b, 8) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20160615
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20160608
+packetLen(0x089b, 5) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20160518
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20160511
+packetLen(0x089b, 4) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20160414
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20160406
+packetLen(0x089b, 6) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20160316
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20160309
+packetLen(0x089b, -1) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20160106
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x089c
+#if PACKETVER >= 20161130
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20161123
+packetLen(0x089c, 5) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20161012
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20161005
+packetLen(0x089c, 6) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20160921
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20160913
+packetLen(0x089c, 36) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20160824
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20160817
+packetLen(0x089c, -1) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20160810
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20160803
+packetLen(0x089c, 6) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20160727
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20160720
+packetLen(0x089c, 5) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20160601
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20160525
+packetLen(0x089c, 5) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20160106
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#endif
+
+// Packet: 0x089d
+#if PACKETVER >= 20161116
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20161109
+packetLen(0x089d, -1) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20160817
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20160810
+packetLen(0x089d, 5) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20160511
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20160504
+packetLen(0x089d, 6) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20160316
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20160309
+packetLen(0x089d, 5) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20160106
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x089e
+#if PACKETVER >= 20160727
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160720
+packetLen(0x089e, 8) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160629
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160622
+packetLen(0x089e, 7) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160420
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160414
+packetLen(0x089e, 26) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160406
+packetLen(0x089e, 8) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20160106
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x089f
+#if PACKETVER >= 20161228
+packetLen(0x089f, 8) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20161116
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20161109
+packetLen(0x089f, 4) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20161102
+packetLen(0x089f, 26) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20160817
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20160810
+packetLen(0x089f, -1) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20160803
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20160727
+packetLen(0x089f, 10) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20160720
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20160713
+packetLen(0x089f, 4) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20160106
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x08a0
+#if PACKETVER >= 20161019
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20161012
+packetLen(0x08a0, 5) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20161005
+packetLen(0x08a0, 8) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20160727
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20160720
+packetLen(0x08a0, 12) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20160224
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20160217
+packetLen(0x08a0, 8) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20160120
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20160113
+packetLen(0x08a0, 6) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20160106
+packetLen(0x08a0, 26) // CZ_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x08a1
+#if PACKETVER >= 20161214
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20161207
+packetLen(0x08a1, 5) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20161123
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20161116
+packetLen(0x08a1, 5) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20160810
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20160803
+packetLen(0x08a1, -1) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20160414
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20160406
+packetLen(0x08a1, 7) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20160106
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x08a2
+#if PACKETVER >= 20161228
+packetLen(0x08a2, 10) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20161214
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20161207
+packetLen(0x08a2, 6) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20161123
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20161116
+packetLen(0x08a2, 18) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20161109
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20161102
+packetLen(0x08a2, -1) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20161005
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160928
+packetLen(0x08a2, 36) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160803
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160727
+packetLen(0x08a2, 36) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160720
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160713
+packetLen(0x08a2, 8) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160629
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160622
+packetLen(0x08a2, 6) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20160106
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x08a3
+#if PACKETVER >= 20161228
+packetLen(0x08a3, 6) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20160106
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x08a4
+#if PACKETVER >= 20160803
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160727
+packetLen(0x08a4, 6) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160720
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160713
+packetLen(0x08a4, 19) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160706
+packetLen(0x08a4, 18) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20160106
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x08a5
+#if PACKETVER >= 20161228
+packetLen(0x08a5, 18) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20160921
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20160913
+packetLen(0x08a5, 5) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20160824
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20160817
+packetLen(0x08a5, 36) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20160713
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20160706
+packetLen(0x08a5, 19) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20160427
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20160420
+packetLen(0x08a5, 36) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20160106
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x08a6
+#if PACKETVER >= 20161221
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20161214
+packetLen(0x08a6, 18) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20160824
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20160817
+packetLen(0x08a6, 26) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20160615
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20160608
+packetLen(0x08a6, 8) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20160120
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20160113
+packetLen(0x08a6, 6) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20160106
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#endif
+
+// Packet: 0x08a7
+#if PACKETVER >= 20161116
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20161109
+packetLen(0x08a7, 5) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20160803
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20160727
+packetLen(0x08a7, 6) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20160608
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20160601
+packetLen(0x08a7, 8) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20160316
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20160309
+packetLen(0x08a7, 18) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20160106
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x08a8
+#if PACKETVER >= 20160907
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20160831
+packetLen(0x08a8, -1) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20160713
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20160706
+packetLen(0x08a8, 6) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20160629
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20160622
+packetLen(0x08a8, 36) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20160106
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x08a9
+#if PACKETVER >= 20161130
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20161123
+packetLen(0x08a9, 10) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20161005
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160928
+packetLen(0x08a9, 8) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160907
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160831
+packetLen(0x08a9, 6) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160824
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160817
+packetLen(0x08a9, -1) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160810
+packetLen(0x08a9, 8) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160525
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160518
+packetLen(0x08a9, 26) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160309
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160302
+packetLen(0x08a9, 8) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160217
+packetLen(0x08a9, 26) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20160106
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#endif
+
+// Packet: 0x08aa
+#if PACKETVER >= 20161228
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20161221
+packetLen(0x08aa, 6) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20161130
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20161116
+packetLen(0x08aa, 12) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20161109
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20161102
+packetLen(0x08aa, 5) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20160727
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20160720
+packetLen(0x08aa, -1) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20160120
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20160113
+packetLen(0x08aa, -1) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20160106
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x08ab
+#if PACKETVER >= 20161228
+packetLen(0x08ab, 8) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20160824
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20160817
+packetLen(0x08ab, 5) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20160106
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x08ac
+#if PACKETVER >= 20161228
+packetLen(0x08ac, 6) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20161123
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20161116
+packetLen(0x08ac, 8) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20160824
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20160817
+packetLen(0x08ac, 10) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20160608
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20160601
+packetLen(0x08ac, 19) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20160414
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20160406
+packetLen(0x08ac, 8) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20160224
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20160217
+packetLen(0x08ac, 18) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20160106
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x08ad
+#if PACKETVER >= 20161228
+packetLen(0x08ad, 36) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20161214
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20161207
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20161116
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20161109
+packetLen(0x08ad, -1) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20161012
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20161005
+packetLen(0x08ad, -1) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20160824
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20160817
+packetLen(0x08ad, 8) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20160511
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20160504
+packetLen(0x08ad, 5) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20160106
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x08af
+packetLen(0x08af, 10) // HC_WAITING_LOGIN
+
+// Packet: 0x08b0
+packetLen(0x08b0, 17) // CH_WAITING_LOGIN
+
+// Packet: 0x08b1
+packetLen(0x08b1, -1) // ZC_MCSTORE_NOTMOVEITEM_LIST
+
+// Packet: 0x08b2
+packetLen(0x08b2, -1) // AC_REALNAME_AUTH
+
+// Packet: 0x08b3
+packetLen(0x08b3, -1) // ZC_SHOWSCRIPT
+
+// Packet: 0x08b4
+packetLen(0x08b4, 2) // ZC_START_COLLECTION
+
+// Packet: 0x08b5
+packetLen(0x08b5, 6) // CZ_TRYCOLLECTION
+
+// Packet: 0x08b6
+packetLen(0x08b6, 3) // ZC_TRYCOLLECTION
+
+// Packet: 0x08b8
+packetLen(0x08b8, 10) // CH_SECOND_PASSWD_ACK
+
+// Packet: 0x08b9
+packetLen(0x08b9, 12) // HC_SECOND_PASSWD_LOGIN
+
+// Packet: 0x08ba
+packetLen(0x08ba, 10) // CH_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bb
+packetLen(0x08bb, 8) // HC_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bc
+packetLen(0x08bc, 10) // CH_DELETE_SECOND_PASSWD
+
+// Packet: 0x08bd
+packetLen(0x08bd, 8) // HC_DELETE_SECOND_PASSWD
+
+// Packet: 0x08be
+packetLen(0x08be, 14) // CH_EDIT_SECOND_PASSWD
+
+// Packet: 0x08bf
+packetLen(0x08bf, 8) // HC_EDIT_SECOND_PASSWD
+
+// Packet: 0x08c0
+packetLen(0x08c0, -1) // ZC_ACK_SE_CASH_ITEM_LIST2
+
+// Packet: 0x08c1
+packetLen(0x08c1, 2) // CZ_MACRO_START
+
+// Packet: 0x08c2
+packetLen(0x08c2, 2) // CZ_MACRO_STOP
+
+// Packet: 0x08c3
+packetLen(0x08c3, 10) // CH_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c4
+packetLen(0x08c4, 8) // HC_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c5
+packetLen(0x08c5, 6) // CH_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c6
+packetLen(0x08c6, 4) // HC_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c7
+packetLen(0x08c7, -1) // ZC_SKILL_ENTRY3
+
+// Packet: 0x08c8
+packetLen(0x08c8, 34) // ZC_NOTIFY_ACT3
+
+// Packet: 0x08c9
+packetLen(0x08c9, 2) // CZ_REQ_SCHEDULER_CASHITEM
+
+// Packet: 0x08ca
+packetLen(0x08ca, -1) // ZC_ACK_SCHEDULER_CASHITEM
+
+// Packet: 0x08cb
+packetLen(0x08cb, -1) // ZC_PERSONAL_INFOMATION
+
+// Packet: 0x08cc
+packetLen(0x08cc, 109) // CA_LOGIN5
+
+// Packet: 0x08cd
+packetLen(0x08cd, 10) // ZC_STOPMOVE_FORCE
+
+// Packet: 0x08ce
+packetLen(0x08ce, 2) // ZC_FAILED_GET_ITEM_FROM_ZONEDA
+
+// Packet: 0x08cf
+packetLen(0x08cf, 10) // ZC_SPIRITS_ATTRIBUTE
+
+// Packet: 0x08d0
+packetLen(0x08d0, 9) // ZC_REQ_WEAR_EQUIP_ACK2
+
+// Packet: 0x08d1
+packetLen(0x08d1, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK2
+
+// Packet: 0x08d2
+packetLen(0x08d2, 10) // ZC_FASTMOVE
+
+// Packet: 0x08d3
+packetLen(0x08d3, 10) // ZC_SE_CASHSHOP_UPDATE
+
+// Packet: 0x08d4
+packetLen(0x08d4, 8) // CH_REQ_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d5
+packetLen(0x08d5, -1) // HC_ACK_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d6
+packetLen(0x08d6, 6) // ZC_CLEAR_DIALOG
+
+// Packet: 0x08d7
+packetLen(0x08d7, 28) // CZ_REQ_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d8
+packetLen(0x08d8, 27) // ZC_ACK_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d9
+packetLen(0x08d9, 30) // ZC_NOTIFY_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08da
+packetLen(0x08da, 26) // CZ_REQ_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08db
+packetLen(0x08db, 27) // ZC_ACK_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08dc
+packetLen(0x08dc, 26) // ZC_NOTIFY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08dd
+packetLen(0x08dd, 27) // CZ_REPLY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08de
+packetLen(0x08de, 27) // ZC_REPLY_ACK_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08df
+packetLen(0x08df, 50) // ZC_NOTIFY_LOBBY_ADMISSION
+
+// Packet: 0x08e0
+packetLen(0x08e0, 51) // CZ_REPLY_LOBBY_ADMISSION
+
+// Packet: 0x08e1
+packetLen(0x08e1, 51) // ZC_REPLY_ACK_LOBBY_ADMISSION
+
+// Packet: 0x08e2
+packetLen(0x08e2, 27) // ZC_NAVIGATION_ACTIVE
+
+// Packet: 0x08e3
+packetLen(0x08e3, 149) // HC_UPDATE_CHARINFO
+
+// Packet: 0x08e4
+packetLen(0x08e4, 6) // AC_SHUTDOWN_INFO
+
+// Packet: 0x08fc
+packetLen(0x08fc, 30) // CH_REQ_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fd
+packetLen(0x08fd, 6) // CH_ACK_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fe
+packetLen(0x08fe, -1) // ZC_HUNTING_QUEST_INFO
+
+// Packet: 0x08ff
+packetLen(0x08ff, 24) // ZC_EFST_SET_ENTER
+
+// Packet: 0x0900
+packetLen(0x0900, -1) // ZC_INVENTORY_ITEMLIST_NORMAL
+
+// Packet: 0x0901
+packetLen(0x0901, -1) // ZC_INVENTORY_ITEMLIST_EQUIP
+
+// Packet: 0x0902
+packetLen(0x0902, -1) // ZC_CART_ITEMLIST_NORMAL
+
+// Packet: 0x0903
+packetLen(0x0903, -1) // ZC_CART_ITEMLIST_EQUIP
+
+// Packet: 0x0904
+packetLen(0x0904, -1) // ZC_STORE_ITEMLIST_NORMAL
+
+// Packet: 0x0905
+packetLen(0x0905, -1) // ZC_STORE_ITEMLIST_EQUIP
+
+// Packet: 0x0906
+packetLen(0x0906, -1) // ZC_MICROSCOPE
+
+// Packet: 0x0907
+packetLen(0x0907, 5) // CZ_INVENTORY_TAB
+
+// Packet: 0x0908
+packetLen(0x0908, 5) // ZC_INVENTORY_TAB
+
+// Packet: 0x090a
+packetLen(0x090a, 26) // CZ_REQ_ENTRY_QUEUE_RANKING
+
+// Packet: 0x090d
+packetLen(0x090d, -1) // ZC_PREMIUM_CAMPAIGN_INFO
+
+// Packet: 0x090e
+packetLen(0x090e, 2) // ZC_ENTRY_QUEUE_INIT
+
+// Packet: 0x090f
+packetLen(0x090f, -1) // ZC_NOTIFY_NEWENTRY7
+
+// Packet: 0x0910
+packetLen(0x0910, 10) // CZ_REQ_PARTY_NAME
+
+// Packet: 0x0911
+packetLen(0x0911, 30) // ZC_ACK_PARTY_NAME
+
+// Packet: 0x0912
+packetLen(0x0912, 10) // CZ_REQ_GUILD_NAME
+
+// Packet: 0x0913
+packetLen(0x0913, 30) // ZC_ACK_GUILD_NAME
+
+// Packet: 0x0914
+packetLen(0x0914, -1) // ZC_NOTIFY_MOVEENTRY9
+
+// Packet: 0x0915
+packetLen(0x0915, -1) // ZC_NOTIFY_STANDENTRY8
+
+// Packet: 0x0916
+packetLen(0x0916, 26) // CZ_REQ_JOIN_GUILD2
+
+// Packet: 0x0917
+#if PACKETVER >= 20160907
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20160831
+packetLen(0x0917, 36) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20160727
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20160720
+packetLen(0x0917, 4) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20160106
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#endif
+
+// Packet: 0x0918
+#if PACKETVER >= 20161214
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20161207
+packetLen(0x0918, 18) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20160713
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20160706
+packetLen(0x0918, 90) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20160518
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20160511
+packetLen(0x0918, 5) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20160504
+packetLen(0x0918, 6) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20160420
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20160414
+packetLen(0x0918, 4) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20160406
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20160330
+packetLen(0x0918, 8) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20160211
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20160203
+packetLen(0x0918, 8) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20160106
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#endif
+
+// Packet: 0x0919
+#if PACKETVER >= 20161012
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20161005
+packetLen(0x0919, 6) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20160928
+packetLen(0x0919, 5) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20160120
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20160113
+packetLen(0x0919, 12) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20160106
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#endif
+
+// Packet: 0x091a
+#if PACKETVER >= 20161130
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20161123
+packetLen(0x091a, 8) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20161102
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20161026
+packetLen(0x091a, 19) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20160817
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20160810
+packetLen(0x091a, 6) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20160309
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20160302
+packetLen(0x091a, 6) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20160106
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#endif
+
+// Packet: 0x091b
+#if PACKETVER >= 20161109
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20161102
+packetLen(0x091b, 36) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20161026
+packetLen(0x091b, 6) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20160907
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20160831
+packetLen(0x091b, 4) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20160817
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20160803
+packetLen(0x091b, 6) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20160713
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20160706
+packetLen(0x091b, -1) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20160330
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20160323
+packetLen(0x091b, 4) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20160120
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20160113
+packetLen(0x091b, 6) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20160106
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#endif
+
+// Packet: 0x091c
+#if PACKETVER >= 20161228
+packetLen(0x091c, 26) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20160913
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20160907
+packetLen(0x091c, 36) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20160817
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20160810
+packetLen(0x091c, 10) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20160727
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20160720
+packetLen(0x091c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20160713
+packetLen(0x091c, 5) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20160629
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20160622
+packetLen(0x091c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20160106
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#endif
+
+// Packet: 0x091d
+#if PACKETVER >= 20161214
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20161207
+packetLen(0x091d, 8) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20160720
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20160713
+packetLen(0x091d, 6) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20160601
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20160525
+packetLen(0x091d, 36) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20160316
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20160309
+packetLen(0x091d, 6) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20160224
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20160217
+packetLen(0x091d, 5) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20160113
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20160106
+packetLen(0x091d, -1) // ZC_REASSEMBLY_AUTH49
+#endif
+
+// Packet: 0x091e
+#if PACKETVER >= 20161012
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20161005
+packetLen(0x091e, 8) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20160928
+packetLen(0x091e, 6) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20160706
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20160629
+packetLen(0x091e, 18) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20160106
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#endif
+
+// Packet: 0x091f
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+
+// Packet: 0x0920
+#if PACKETVER >= 20161123
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20161116
+packetLen(0x0920, 90) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160518
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160511
+packetLen(0x0920, 19) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160316
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160309
+packetLen(0x0920, 8) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160302
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160224
+packetLen(0x0920, 4) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160217
+packetLen(0x0920, 7) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160106
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#endif
+
+// Packet: 0x0921
+#if PACKETVER >= 20160720
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20160713
+packetLen(0x0921, 90) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20160511
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20160504
+packetLen(0x0921, 90) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20160106
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#endif
+
+// Packet: 0x0922
+#if PACKETVER >= 20161109
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20161102
+packetLen(0x0922, 6) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160720
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160713
+packetLen(0x0922, 5) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160706
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160629
+packetLen(0x0922, 8) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160511
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160504
+packetLen(0x0922, 6) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160420
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160414
+packetLen(0x0922, 5) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160323
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160316
+packetLen(0x0922, 36) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160309
+packetLen(0x0922, -1) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160203
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160127
+packetLen(0x0922, 5) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160106
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#endif
+
+// Packet: 0x0923
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+
+// Packet: 0x0924
+#if PACKETVER >= 20160713
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20160706
+packetLen(0x0924, 10) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20160608
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20160601
+packetLen(0x0924, 4) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20160511
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20160504
+packetLen(0x0924, 5) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20160120
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20160113
+packetLen(0x0924, 6) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20160106
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#endif
+
+// Packet: 0x0925
+#if PACKETVER >= 20161123
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20161116
+packetLen(0x0925, 10) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20161109
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20161102
+packetLen(0x0925, 6) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20160706
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20160629
+packetLen(0x0925, 10) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20160406
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20160330
+packetLen(0x0925, 19) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20160106
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#endif
+
+// Packet: 0x0926
+#if PACKETVER >= 20161228
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20161221
+packetLen(0x0926, 26) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20161130
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20161123
+packetLen(0x0926, 19) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20161102
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20161026
+packetLen(0x0926, 6) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20160817
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20160810
+packetLen(0x0926, 4) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20160713
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20160706
+packetLen(0x0926, 5) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20160629
+packetLen(0x0926, 26) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20160330
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20160323
+packetLen(0x0926, 8) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20160224
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20160217
+packetLen(0x0926, 10) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20160106
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#endif
+
+// Packet: 0x0927
+#if PACKETVER >= 20161116
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20161109
+packetLen(0x0927, 26) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20161005
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20160928
+packetLen(0x0927, 10) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20160420
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20160414
+packetLen(0x0927, 36) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20160406
+packetLen(0x0927, 8) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20160330
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20160323
+packetLen(0x0927, 18) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20160309
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20160302
+packetLen(0x0927, 6) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20160106
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#endif
+
+// Packet: 0x0928
+#if PACKETVER >= 20161228
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20161221
+packetLen(0x0928, 26) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20161109
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20161102
+packetLen(0x0928, 26) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20160921
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20160913
+packetLen(0x0928, 26) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20160525
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20160518
+packetLen(0x0928, 5) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20160106
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#endif
+
+// Packet: 0x0929
+#if PACKETVER >= 20161228
+packetLen(0x0929, 10) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160824
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160817
+packetLen(0x0929, -1) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160810
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160803
+packetLen(0x0929, 36) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160713
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160706
+packetLen(0x0929, 8) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160316
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160309
+packetLen(0x0929, 4) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160302
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160224
+packetLen(0x0929, 5) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160106
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#endif
+
+// Packet: 0x092a
+#if PACKETVER >= 20161130
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20161123
+packetLen(0x092a, 6) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20161116
+packetLen(0x092a, 10) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20160727
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20160720
+packetLen(0x092a, 26) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20160406
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20160330
+packetLen(0x092a, -1) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20160316
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20160309
+packetLen(0x092a, -1) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20160106
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#endif
+
+// Packet: 0x092b
+#if PACKETVER >= 20161012
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20161005
+packetLen(0x092b, 6) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20160817
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20160810
+packetLen(0x092b, -1) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20160106
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#endif
+
+// Packet: 0x092c
+#if PACKETVER >= 20161102
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20161026
+packetLen(0x092c, -1) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20160907
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20160831
+packetLen(0x092c, 26) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20160720
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20160713
+packetLen(0x092c, 6) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20160601
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20160525
+packetLen(0x092c, 18) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20160406
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20160330
+packetLen(0x092c, 18) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20160106
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#endif
+
+// Packet: 0x092d
+#if PACKETVER >= 20161019
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20161012
+packetLen(0x092d, 6) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20161005
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160928
+packetLen(0x092d, 10) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160824
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160817
+packetLen(0x092d, 90) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160810
+packetLen(0x092d, 8) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160713
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160706
+packetLen(0x092d, 5) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160629
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160622
+packetLen(0x092d, 6) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160414
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160406
+packetLen(0x092d, 12) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160309
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160302
+packetLen(0x092d, 4) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160106
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#endif
+
+// Packet: 0x092e
+#if PACKETVER >= 20161228
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20161221
+packetLen(0x092e, 18) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20161214
+packetLen(0x092e, 6) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20161102
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20161026
+packetLen(0x092e, 5) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20160907
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20160831
+packetLen(0x092e, 12) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20160803
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20160727
+packetLen(0x092e, 5) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20160224
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20160217
+packetLen(0x092e, 90) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20160106
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#endif
+
+// Packet: 0x092f
+#if PACKETVER >= 20161130
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20161123
+packetLen(0x092f, 6) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20161109
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20161102
+packetLen(0x092f, 6) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20160629
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20160622
+packetLen(0x092f, 10) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20160427
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20160420
+packetLen(0x092f, 18) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20160309
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20160302
+packetLen(0x092f, 90) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20160224
+packetLen(0x092f, -1) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20160106
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#endif
+
+// Packet: 0x0930
+#if PACKETVER >= 20161228
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20161221
+packetLen(0x0930, 5) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20161130
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20161123
+packetLen(0x0930, 5) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20161102
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20161026
+packetLen(0x0930, 6) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160824
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160817
+packetLen(0x0930, 5) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160810
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160803
+packetLen(0x0930, 12) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160406
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160330
+packetLen(0x0930, 5) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160120
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160113
+packetLen(0x0930, 6) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160106
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#endif
+
+// Packet: 0x0931
+#if PACKETVER >= 20161207
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20161130
+packetLen(0x0931, 5) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20161123
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20161116
+packetLen(0x0931, -1) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20161012
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20161005
+packetLen(0x0931, 26) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20160720
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20160713
+packetLen(0x0931, 10) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20160420
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20160414
+packetLen(0x0931, 6) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20160106
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#endif
+
+// Packet: 0x0932
+#if PACKETVER >= 20161012
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20161005
+packetLen(0x0932, 12) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20160810
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20160803
+packetLen(0x0932, 10) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20160316
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20160309
+packetLen(0x0932, 5) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20160120
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20160113
+packetLen(0x0932, 8) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20160106
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#endif
+
+// Packet: 0x0933
+#if PACKETVER >= 20160414
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20160406
+packetLen(0x0933, 5) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20160330
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20160323
+packetLen(0x0933, 5) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20160106
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#endif
+
+// Packet: 0x0934
+#if PACKETVER >= 20161228
+packetLen(0x0934, 26) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160831
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160824
+packetLen(0x0934, 36) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160810
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160803
+packetLen(0x0934, 7) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160420
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160414
+packetLen(0x0934, 5) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160406
+packetLen(0x0934, 10) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160106
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#endif
+
+// Packet: 0x0935
+#if PACKETVER >= 20161228
+packetLen(0x0935, 8) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20160921
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20160913
+packetLen(0x0935, -1) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20160817
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20160810
+packetLen(0x0935, 90) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20160427
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20160420
+packetLen(0x0935, 26) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20160106
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#endif
+
+// Packet: 0x0936
+#if PACKETVER >= 20161019
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20161012
+packetLen(0x0936, 6) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20160803
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20160727
+packetLen(0x0936, 5) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20160629
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20160622
+packetLen(0x0936, 19) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20160302
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20160224
+packetLen(0x0936, 36) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20160106
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#endif
+
+// Packet: 0x0937
+#if PACKETVER >= 20161116
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20161109
+packetLen(0x0937, 26) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20161019
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20161012
+packetLen(0x0937, 6) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20160810
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20160803
+packetLen(0x0937, 10) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20160629
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20160622
+packetLen(0x0937, 12) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20160601
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20160525
+packetLen(0x0937, -1) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20160106
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#endif
+
+// Packet: 0x0938
+#if PACKETVER >= 20161228
+packetLen(0x0938, 4) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20160302
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20160224
+packetLen(0x0938, 6) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20160106
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#endif
+
+// Packet: 0x0939
+#if PACKETVER >= 20161019
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20161012
+packetLen(0x0939, -1) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20160824
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20160817
+packetLen(0x0939, 8) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20160720
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20160713
+packetLen(0x0939, 26) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20160706
+packetLen(0x0939, 8) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20160406
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20160330
+packetLen(0x0939, 6) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20160106
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#endif
+
+// Packet: 0x093a
+#if PACKETVER >= 20160921
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20160913
+packetLen(0x093a, 5) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20160907
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20160831
+packetLen(0x093a, 5) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20160810
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20160803
+packetLen(0x093a, 8) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20160106
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#endif
+
+// Packet: 0x093b
+#if PACKETVER >= 20161012
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20161005
+packetLen(0x093b, 10) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20160727
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20160720
+packetLen(0x093b, 5) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20160629
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20160622
+packetLen(0x093b, 8) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20160615
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20160608
+packetLen(0x093b, 4) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20160406
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20160330
+packetLen(0x093b, 26) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20160224
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20160217
+packetLen(0x093b, -1) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20160106
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#endif
+
+// Packet: 0x093c
+#if PACKETVER >= 20161123
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20161116
+packetLen(0x093c, -1) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20161109
+packetLen(0x093c, 36) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20160824
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20160817
+packetLen(0x093c, 8) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20160330
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20160323
+packetLen(0x093c, 6) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20160120
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20160113
+packetLen(0x093c, 8) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20160106
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#endif
+
+// Packet: 0x093d
+#if PACKETVER >= 20161228
+packetLen(0x093d, 7) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20161221
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20161214
+packetLen(0x093d, 5) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20160713
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20160706
+packetLen(0x093d, 6) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20160106
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#endif
+
+// Packet: 0x093e
+#if PACKETVER >= 20160810
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160803
+packetLen(0x093e, 6) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160727
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160720
+packetLen(0x093e, -1) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160706
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160629
+packetLen(0x093e, -1) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160622
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160615
+packetLen(0x093e, 26) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160511
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160504
+packetLen(0x093e, -1) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160224
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160217
+packetLen(0x093e, -1) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160211
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160203
+packetLen(0x093e, 26) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160106
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#endif
+
+// Packet: 0x093f
+#if PACKETVER >= 20161116
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20161109
+packetLen(0x093f, 6) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20160810
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20160803
+packetLen(0x093f, -1) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20160629
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20160622
+packetLen(0x093f, -1) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20160106
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#endif
+
+// Packet: 0x0940
+#if PACKETVER >= 20160518
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160511
+packetLen(0x0940, 36) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160504
+packetLen(0x0940, 19) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160427
+packetLen(0x0940, -1) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160414
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160406
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160211
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160203
+packetLen(0x0940, 5) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160113
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160106
+packetLen(0x0940, 8) // ZC_REASSEMBLY_AUTH84
+#endif
+
+// Packet: 0x0941
+#if PACKETVER >= 20161130
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20161123
+packetLen(0x0941, 26) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20160511
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20160504
+packetLen(0x0941, 8) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20160224
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20160217
+packetLen(0x0941, 6) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20160120
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20160113
+packetLen(0x0941, -1) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20160106
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#endif
+
+// Packet: 0x0942
+#if PACKETVER >= 20161012
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20161005
+packetLen(0x0942, 6) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20160106
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#endif
+
+// Packet: 0x0943
+#if PACKETVER >= 20161228
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20161221
+packetLen(0x0943, 10) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20161214
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20161207
+packetLen(0x0943, 4) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20161130
+packetLen(0x0943, 19) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20161019
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20161012
+packetLen(0x0943, 18) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20160817
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20160810
+packetLen(0x0943, 6) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20160106
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#endif
+
+// Packet: 0x0944
+#if PACKETVER >= 20161228
+packetLen(0x0944, 6) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20161019
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20161012
+packetLen(0x0944, 8) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20161005
+packetLen(0x0944, -1) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20160928
+packetLen(0x0944, 5) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20160713
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20160706
+packetLen(0x0944, 8) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20160106
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#endif
+
+// Packet: 0x0945
+#if PACKETVER >= 20161012
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20161005
+packetLen(0x0945, 5) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20160720
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20160713
+packetLen(0x0945, 7) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20160706
+packetLen(0x0945, 6) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20160601
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20160525
+packetLen(0x0945, 26) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20160420
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20160414
+packetLen(0x0945, 26) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20160309
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20160302
+packetLen(0x0945, 6) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20160106
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#endif
+
+// Packet: 0x0946
+#if PACKETVER >= 20161228
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20161221
+packetLen(0x0946, 10) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20161109
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20161102
+packetLen(0x0946, 19) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20161026
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20161019
+packetLen(0x0946, 19) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20160907
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20160831
+packetLen(0x0946, 6) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20160803
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20160720
+packetLen(0x0946, 6) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20160706
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20160622
+packetLen(0x0946, -1) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20160106
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#endif
+
+// Packet: 0x0947
+#if PACKETVER >= 20160720
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20160713
+packetLen(0x0947, 8) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20160211
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20160203
+packetLen(0x0947, 6) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20160106
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#endif
+
+// Packet: 0x0948
+#if PACKETVER >= 20160706
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20160629
+packetLen(0x0948, 5) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20160622
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20160615
+packetLen(0x0948, 7) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20160511
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20160504
+packetLen(0x0948, 12) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20160106
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#endif
+
+// Packet: 0x0949
+#if PACKETVER >= 20161109
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20161102
+packetLen(0x0949, 5) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20160921
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20160913
+packetLen(0x0949, 26) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20160803
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20160727
+packetLen(0x0949, 8) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20160414
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20160406
+packetLen(0x0949, -1) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20160106
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#endif
+
+// Packet: 0x094a
+#if PACKETVER >= 20161123
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20161116
+packetLen(0x094a, 6) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20161012
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20161005
+packetLen(0x094a, -1) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160928
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160921
+packetLen(0x094a, 36) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160913
+packetLen(0x094a, 90) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160907
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160831
+packetLen(0x094a, 5) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160706
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160629
+packetLen(0x094a, 26) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160622
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160615
+packetLen(0x094a, 6) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160601
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160525
+packetLen(0x094a, 8) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160224
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160217
+packetLen(0x094a, 10) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20160106
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#endif
+
+// Packet: 0x094b
+#if PACKETVER >= 20161228
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20161221
+packetLen(0x094b, -1) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20161102
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20161026
+packetLen(0x094b, 8) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20160622
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20160615
+packetLen(0x094b, -1) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20160106
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#endif
+
+// Packet: 0x094c
+#if PACKETVER >= 20160713
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160706
+packetLen(0x094c, 36) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160302
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160224
+packetLen(0x094c, 18) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20160106
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#endif
+
+// Packet: 0x094d
+#if PACKETVER >= 20161130
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20161123
+packetLen(0x094d, 10) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20161012
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20161005
+packetLen(0x094d, 5) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20160727
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20160720
+packetLen(0x094d, 6) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20160615
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20160608
+packetLen(0x094d, 6) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20160414
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20160406
+packetLen(0x094d, 6) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20160120
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20160113
+packetLen(0x094d, 19) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20160106
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#endif
+
+// Packet: 0x094e
+#if PACKETVER >= 20161005
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20160928
+packetLen(0x094e, 26) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20160601
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20160525
+packetLen(0x094e, 8) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20160427
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20160420
+packetLen(0x094e, -1) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20160309
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20160302
+packetLen(0x094e, 36) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20160106
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#endif
+
+// Packet: 0x094f
+#if PACKETVER >= 20161130
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20161123
+packetLen(0x094f, -1) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20161019
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20161012
+packetLen(0x094f, 8) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20160907
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20160831
+packetLen(0x094f, 8) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20160316
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20160309
+packetLen(0x094f, 7) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20160224
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20160217
+packetLen(0x094f, 8) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20160120
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20160113
+packetLen(0x094f, 8) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20160106
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#endif
+
+// Packet: 0x0950
+#if PACKETVER >= 20160921
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20160913
+packetLen(0x0950, 7) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20160907
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20160831
+packetLen(0x0950, -1) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20160309
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20160302
+packetLen(0x0950, 8) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20160106
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#endif
+
+// Packet: 0x0951
+#if PACKETVER >= 20161019
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20161012
+packetLen(0x0951, 90) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20160803
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20160727
+packetLen(0x0951, 8) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20160601
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20160525
+packetLen(0x0951, 26) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20160106
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#endif
+
+// Packet: 0x0952
+#if PACKETVER >= 20161012
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20161005
+packetLen(0x0952, 4) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20160921
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20160913
+packetLen(0x0952, 19) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20160810
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20160803
+packetLen(0x0952, 5) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20160511
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20160504
+packetLen(0x0952, 26) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20160106
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#endif
+
+// Packet: 0x0953
+#if PACKETVER >= 20161102
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20161026
+packetLen(0x0953, 26) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20161005
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160928
+packetLen(0x0953, -1) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160727
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160720
+packetLen(0x0953, 8) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160420
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160414
+packetLen(0x0953, 8) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160406
+packetLen(0x0953, 36) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20160106
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#endif
+
+// Packet: 0x0954
+#if PACKETVER >= 20161207
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20161130
+packetLen(0x0954, 36) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20161116
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20161109
+packetLen(0x0954, 10) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20160921
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20160913
+packetLen(0x0954, 5) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20160907
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20160831
+packetLen(0x0954, -1) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20160622
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20160615
+packetLen(0x0954, 5) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20160211
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20160203
+packetLen(0x0954, 8) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20160106
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#endif
+
+// Packet: 0x0955
+#if PACKETVER >= 20161005
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20160928
+packetLen(0x0955, 18) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20160810
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20160803
+packetLen(0x0955, 8) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20160106
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#endif
+
+// Packet: 0x0956
+#if PACKETVER >= 20161116
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20161109
+packetLen(0x0956, 5) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20160810
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20160803
+packetLen(0x0956, -1) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20160601
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20160525
+packetLen(0x0956, 8) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20160316
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20160309
+packetLen(0x0956, 6) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20160106
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#endif
+
+// Packet: 0x0957
+#if PACKETVER >= 20161123
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20161116
+packetLen(0x0957, 6) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20161005
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160928
+packetLen(0x0957, 6) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160907
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160831
+packetLen(0x0957, -1) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160824
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160817
+packetLen(0x0957, 18) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160720
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160713
+packetLen(0x0957, 6) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160706
+packetLen(0x0957, 12) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160622
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160615
+packetLen(0x0957, 8) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160309
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160302
+packetLen(0x0957, -1) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20160106
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#endif
+
+// Packet: 0x0958
+#if PACKETVER >= 20160713
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20160706
+packetLen(0x0958, 6) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20160622
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20160615
+packetLen(0x0958, 8) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20160608
+packetLen(0x0958, 36) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20160106
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#endif
+
+// Packet: 0x0959
+#if PACKETVER >= 20161207
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20161130
+packetLen(0x0959, 26) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20160810
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20160803
+packetLen(0x0959, 6) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20160629
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20160622
+packetLen(0x0959, 6) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20160106
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#endif
+
+// Packet: 0x095a
+#if PACKETVER >= 20161228
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20161221
+packetLen(0x095a, 6) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20161130
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20161123
+packetLen(0x095a, 8) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20161012
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20161005
+packetLen(0x095a, 6) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160928
+packetLen(0x095a, 4) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160810
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160803
+packetLen(0x095a, 26) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160706
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160629
+packetLen(0x095a, 7) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160309
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160302
+packetLen(0x095a, 6) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160211
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160203
+packetLen(0x095a, 6) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160127
+packetLen(0x095a, 36) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20160106
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#endif
+
+// Packet: 0x095b
+#if PACKETVER >= 20161130
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20161123
+packetLen(0x095b, 7) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20161116
+packetLen(0x095b, 36) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20161012
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20161005
+packetLen(0x095b, 19) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20160817
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20160810
+packetLen(0x095b, 7) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20160727
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20160720
+packetLen(0x095b, 18) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20160713
+packetLen(0x095b, 8) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20160615
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20160608
+packetLen(0x095b, 8) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20160601
+packetLen(0x095b, 5) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20160511
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20160504
+packetLen(0x095b, 6) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20160106
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#endif
+
+// Packet: 0x095c
+#if PACKETVER >= 20161102
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20161026
+packetLen(0x095c, -1) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20161019
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20161012
+packetLen(0x095c, 5) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20160622
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20160615
+packetLen(0x095c, 18) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20160427
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20160420
+packetLen(0x095c, 8) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20160106
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#endif
+
+// Packet: 0x095d
+#if PACKETVER >= 20161214
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20161207
+packetLen(0x095d, 36) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20161123
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20161116
+packetLen(0x095d, 4) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20160414
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20160406
+packetLen(0x095d, 5) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20160211
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20160203
+packetLen(0x095d, 8) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20160106
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#endif
+
+// Packet: 0x095e
+#if PACKETVER >= 20161109
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20161102
+packetLen(0x095e, 12) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20161026
+packetLen(0x095e, 90) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160907
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160831
+packetLen(0x095e, 8) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160622
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160615
+packetLen(0x095e, -1) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160316
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160309
+packetLen(0x095e, 12) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160224
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160217
+packetLen(0x095e, 36) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20160106
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#endif
+
+// Packet: 0x095f
+#if PACKETVER >= 20160803
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20160727
+packetLen(0x095f, -1) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20160608
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20160601
+packetLen(0x095f, 36) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20160414
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20160406
+packetLen(0x095f, 5) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20160106
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#endif
+
+// Packet: 0x0960
+#if PACKETVER >= 20160907
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20160831
+packetLen(0x0960, 6) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20160727
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20160720
+packetLen(0x0960, 8) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20160309
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20160302
+packetLen(0x0960, 8) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20160106
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#endif
+
+// Packet: 0x0961
+#if PACKETVER >= 20160622
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20160615
+packetLen(0x0961, 12) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20160608
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20160601
+packetLen(0x0961, 18) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20160309
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20160302
+packetLen(0x0961, 18) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20160224
+packetLen(0x0961, 5) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20160203
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20160127
+packetLen(0x0961, 26) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20160106
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#endif
+
+// Packet: 0x0962
+#if PACKETVER >= 20161130
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20161123
+packetLen(0x0962, 8) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20161102
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20161026
+packetLen(0x0962, 5) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20161019
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20161012
+packetLen(0x0962, 10) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20160921
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20160913
+packetLen(0x0962, 4) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20160414
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20160406
+packetLen(0x0962, 4) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20160106
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#endif
+
+// Packet: 0x0963
+#if PACKETVER >= 20161026
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20161019
+packetLen(0x0963, 26) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20160921
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20160913
+packetLen(0x0963, 6) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20160824
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20160817
+packetLen(0x0963, 5) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20160106
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#endif
+
+// Packet: 0x0964
+#if PACKETVER >= 20161228
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20161221
+packetLen(0x0964, 19) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20161109
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20161102
+packetLen(0x0964, -1) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20160907
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20160831
+packetLen(0x0964, 10) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20160106
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#endif
+
+// Packet: 0x0965
+#if PACKETVER >= 20161228
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20161221
+packetLen(0x0965, 5) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20161214
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20161207
+packetLen(0x0965, 26) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20161109
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20161102
+packetLen(0x0965, 10) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20160629
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20160622
+packetLen(0x0965, 5) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20160106
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#endif
+
+// Packet: 0x0966
+#if PACKETVER >= 20161109
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20161102
+packetLen(0x0966, 6) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20161019
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20161012
+packetLen(0x0966, 5) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20160224
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20160217
+packetLen(0x0966, 6) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20160106
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#endif
+
+// Packet: 0x0967
+#if PACKETVER >= 20161123
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20161116
+packetLen(0x0967, 8) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20161019
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20161012
+packetLen(0x0967, 36) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20161005
+packetLen(0x0967, 10) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20160907
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20160831
+packetLen(0x0967, 10) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20160817
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20160810
+packetLen(0x0967, 8) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20160309
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20160302
+packetLen(0x0967, 6) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20160224
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20160217
+packetLen(0x0967, 6) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20160120
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20160113
+packetLen(0x0967, -1) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20160106
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#endif
+
+// Packet: 0x0968
+#if PACKETVER >= 20160706
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160629
+packetLen(0x0968, 10) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160309
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160302
+packetLen(0x0968, 7) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20160106
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#endif
+
+// Packet: 0x0969
+#if PACKETVER >= 20160803
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20160727
+packetLen(0x0969, -1) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20160720
+packetLen(0x0969, 26) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20160706
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20160622
+packetLen(0x0969, 6) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20160615
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20160608
+packetLen(0x0969, 26) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20160511
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20160504
+packetLen(0x0969, 36) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20160224
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20160217
+packetLen(0x0969, -1) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20160106
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#endif
+
+// Packet: 0x096a
+#if PACKETVER >= 20161221
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20161123
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20161026
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20161019
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160928
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160921
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160913
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160907
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160831
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160824
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160810
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160803
+packetLen(0x096a, -1) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160706
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160629
+packetLen(0x096a, 8) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160615
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160511
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160504
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160414
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160406
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160309
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160302
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160224
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160217
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160120
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160113
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20160106
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#endif
+
+// Packet: 0x096b
+packetLen(0x096b, 4) // ZC_PRNPC_STATE
+
+// Packet: 0x096c
+packetLen(0x096c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+
+// Packet: 0x096d
+packetLen(0x096d, -1) // ZC_MERGE_ITEM_OPEN
+
+// Packet: 0x096e
+packetLen(0x096e, -1) // CZ_REQ_MERGE_ITEM
+
+// Packet: 0x096f
+packetLen(0x096f, 7) // ZC_ACK_MERGE_ITEM
+
+// Packet: 0x0970
+packetLen(0x0970, 31) // CH_MAKE_CHAR_NOT_STATS
+
+// Packet: 0x0971
+packetLen(0x0971, 6) // ZC_PARTY_RECRUIT_REFUSE_VOLUNTEER_TO_PM
+
+// Packet: 0x0972
+packetLen(0x0972, -1) // ZC_SAY_DIALOG2
+
+// Packet: 0x0973
+packetLen(0x0973, 7) // ZC_WAIT_DIALOG2
+
+// Packet: 0x0974
+packetLen(0x0974, 2) // CZ_CANCEL_MERGE_ITEM
+
+// Packet: 0x0975
+packetLen(0x0975, -1) // ZC_STORE_ITEMLIST_NORMAL_V2
+
+// Packet: 0x0976
+packetLen(0x0976, -1) // ZC_STORE_ITEMLIST_EQUIP_V2
+
+// Packet: 0x0977
+packetLen(0x0977, 14) // ZC_HP_INFO
+
+// Packet: 0x0978
+packetLen(0x0978, 6) // CZ_REQ_BEFORE_WORLD_INFO
+
+// Packet: 0x0979
+packetLen(0x0979, 50) // ZC_ACK_BEFORE_WORLD_INFO
+
+// Packet: 0x097a
+packetLen(0x097a, -1) // ZC_ALL_QUEST_LIST2
+
+// Packet: 0x097b
+packetLen(0x097b, -1) // ZC_PERSONAL_INFOMATION2
+
+// Packet: 0x097c
+packetLen(0x097c, 4) // CZ_REQ_RANKING
+
+// Packet: 0x097d
+packetLen(0x097d, 288) // ZC_ACK_RANKING
+
+// Packet: 0x097e
+packetLen(0x097e, 12) // ZC_UPDATE_RANKING_POINT
+
+// Packet: 0x097f
+packetLen(0x097f, -1) // ZC_SELECTCART
+
+// Packet: 0x0980
+packetLen(0x0980, 7) // CZ_SELECTCART
+
+// Packet: 0x0981
+packetLen(0x0981, -1) // ZC_PERSONAL_INFOMATION_CHN
+
+// Packet: 0x0982
+packetLen(0x0982, 7) // ZC_FATIGUE_CHN
+
+// Packet: 0x0983
+packetLen(0x0983, 29) // ZC_MSG_STATE_CHANGE3
+
+// Packet: 0x0984
+packetLen(0x0984, 28) // ZC_EFST_SET_ENTER2
+
+// Packet: 0x0985
+packetLen(0x0985, -1) // ZC_SKILL_POSTDELAY_LIST2
+
+// Packet: 0x0986
+packetLen(0x0986, 10) // AC_SHUTDOWN_NOTIFY
+
+// Packet: 0x0987
+packetLen(0x0987, -1) // CA_LOGIN6
+
+// Packet: 0x0988
+packetLen(0x0988, 6) // ZC_NOTIFY_CLAN_CONNECTINFO
+
+// Packet: 0x0989
+packetLen(0x0989, 2) // ZC_ACK_CLAN_LEAVE
+
+// Packet: 0x098a
+packetLen(0x098a, -1) // ZC_CLANINFO
+
+// Packet: 0x098b
+packetLen(0x098b, 2) // AC_REQ_NEW_USER
+
+// Packet: 0x098c
+packetLen(0x098c, 4) // CA_ACK_NEW_USER
+
+// Packet: 0x098d
+packetLen(0x098d, -1) // CZ_CLAN_CHAT
+
+// Packet: 0x098e
+packetLen(0x098e, -1) // ZC_NOTIFY_CLAN_CHAT
+
+// Packet: 0x098f
+packetLen(0x098f, -1) // CH_DELETE_CHAR3_EXT
+
+// Packet: 0x0990
+packetLen(0x0990, 31) // ZC_ITEM_PICKUP_ACK_V5
+
+// Packet: 0x0991
+packetLen(0x0991, -1) // ZC_INVENTORY_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0992
+packetLen(0x0992, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0993
+packetLen(0x0993, -1) // ZC_CART_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0994
+packetLen(0x0994, -1) // ZC_CART_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0995
+packetLen(0x0995, -1) // ZC_STORE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0996
+packetLen(0x0996, -1) // ZC_STORE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0997
+packetLen(0x0997, -1) // ZC_EQUIPWIN_MICROSCOPE_V5
+
+// Packet: 0x0998
+packetLen(0x0998, 8) // CZ_REQ_WEAR_EQUIP_V5
+
+// Packet: 0x0999
+packetLen(0x0999, 11) // ZC_ACK_WEAR_EQUIP_V5
+
+// Packet: 0x099a
+packetLen(0x099a, 9) // ZC_ACK_TAKEOFF_EQUIP_V5
+
+// Packet: 0x099b
+packetLen(0x099b, 8) // ZC_MAPPROPERTY_R2
+
+// Packet: 0x099c
+packetLen(0x099c, 6) // CH_REQ_CHARINFO_PER_PAGE
+
+// Packet: 0x099d
+packetLen(0x099d, -1) // HC_ACK_CHARINFO_PER_PAGE
+
+// Packet: 0x099e
+packetLen(0x099e, 12) // HC_QUEUE_ORDER
+
+// Packet: 0x099f
+packetLen(0x099f, -1) // ZC_SKILL_ENTRY4
+
+// Packet: 0x09a0
+packetLen(0x09a0, 10) // HC_CHARLIST_NOTIFY
+
+// Packet: 0x09a1
+packetLen(0x09a1, 2) // CH_CHARLIST_REQ
+
+// Packet: 0x09a2
+packetLen(0x09a2, 6) // AC_REQ_MOBILE_OTP
+
+// Packet: 0x09a3
+packetLen(0x09a3, -1) // CA_ACK_MOBILE_OTP
+
+// Packet: 0x09a4
+packetLen(0x09a4, 18) // ZC_DISPATCH_TIMING_INFO_CHN
+
+// Packet: 0x09a5
+packetLen(0x09a5, 7) // AC_REFUSE_LOGIN3
+
+// Packet: 0x09a6
+packetLen(0x09a6, 12) // ZC_BANKING_CHECK
+
+// Packet: 0x09a7
+packetLen(0x09a7, 10) // CZ_REQ_BANKING_DEPOSIT
+
+// Packet: 0x09a8
+packetLen(0x09a8, 16) // ZC_ACK_BANKING_DEPOSIT
+
+// Packet: 0x09a9
+packetLen(0x09a9, 10) // CZ_REQ_BANKING_WITHDRAW
+
+// Packet: 0x09aa
+packetLen(0x09aa, 16) // ZC_ACK_BANKING_WITHDRAW
+
+// Packet: 0x09ab
+packetLen(0x09ab, 6) // CZ_REQ_BANKING_CHECK
+
+// Packet: 0x09ac
+packetLen(0x09ac, -1) // CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO
+
+// Packet: 0x09ad
+packetLen(0x09ad, 10) // ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO
+
+// Packet: 0x09ae
+packetLen(0x09ae, 17) // CZ_REQ_APPLY_BARGAIN_SALE_ITEM
+
+// Packet: 0x09af
+packetLen(0x09af, 4) // ZC_ACK_APPLY_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b0
+packetLen(0x09b0, 8) // CZ_REQ_REMOVE_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b1
+packetLen(0x09b1, 4) // ZC_ACK_REMOVE_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b2
+packetLen(0x09b2, 8) // ZC_NOTIFY_BARGAIN_SALE_SELLING
+
+// Packet: 0x09b3
+packetLen(0x09b3, 4) // ZC_NOTIFY_BARGAIN_SALE_CLOSE
+
+// Packet: 0x09b4
+packetLen(0x09b4, 6) // CZ_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b5
+packetLen(0x09b5, 2) // ZC_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b6
+packetLen(0x09b6, 6) // CZ_REQ_OPEN_BANKING
+
+// Packet: 0x09b7
+packetLen(0x09b7, 4) // ZC_ACK_OPEN_BANKING
+
+// Packet: 0x09b8
+packetLen(0x09b8, 6) // CZ_REQ_CLOSE_BANKING
+
+// Packet: 0x09b9
+packetLen(0x09b9, 4) // ZC_ACK_CLOSE_BANKING
+
+// Packet: 0x09ba
+packetLen(0x09ba, 2) // CZ_REQ_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bb
+packetLen(0x09bb, 6) // ZC_ACK_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bc
+packetLen(0x09bc, 6) // CZ_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09bd
+packetLen(0x09bd, 2) // ZC_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09be
+packetLen(0x09be, 2) // CZ_REQ_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09bf
+packetLen(0x09bf, 4) // ZC_ACK_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09c1
+packetLen(0x09c1, 10) // ZC_C_MARKERINFO
+
+// Packet: 0x09c2
+packetLen(0x09c2, -1) // HC_SECRETSCAN_DATA
+
+// Packet: 0x09c3
+packetLen(0x09c3, 8) // CZ_REQ_COUNT_BARGAIN_SALE_ITEM
+
+// Packet: 0x09c4
+packetLen(0x09c4, 8) // ZC_ACK_COUNT_BARGAIN_SALE_ITEM
+
+// Packet: 0x09c5
+packetLen(0x09c5, 1042) // CS_LOGIN_QUERY
+
+// Packet: 0x09c6
+packetLen(0x09c6, -1) // SC_LOGIN_ANSWER
+
+// Packet: 0x09c7
+packetLen(0x09c7, 18) // SC_LOGIN_ERROR
+
+// Packet: 0x09c8
+packetLen(0x09c8, -1) // CA_LOGIN_OTP
+
+// Packet: 0x09c9
+packetLen(0x09c9, -1) // SC_SOCT
+
+// Packet: 0x09ca
+packetLen(0x09ca, -1) // ZC_SKILL_ENTRY5
+
+// Packet: 0x09cb
+packetLen(0x09cb, 17) // ZC_USE_SKILL2
+
+// Packet: 0x09cc
+packetLen(0x09cc, -1) // ZC_SECRETSCAN_DATA
+
+// Packet: 0x09cd
+packetLen(0x09cd, 8) // ZC_MSG_COLOR
+
+// Packet: 0x09ce
+packetLen(0x09ce, 102) // CZ_ITEM_CREATE_EX
+
+// Packet: 0x09cf
+packetLen(0x09cf, -1) // ZC_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d0
+packetLen(0x09d0, -1) // CZ_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d1
+packetLen(0x09d1, 14) // ZC_PROGRESS_ACTOR
+
+// Packet: 0x09d2
+packetLen(0x09d2, -1) // ZC_GUILDSTORAGE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x09d3
+packetLen(0x09d3, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x09d4
+packetLen(0x09d4, 2) // CZ_NPC_TRADE_QUIT
+
+// Packet: 0x09d5
+packetLen(0x09d5, -1) // ZC_NPC_MARKET_OPEN
+
+// Packet: 0x09d6
+packetLen(0x09d6, -1) // CZ_NPC_MARKET_PURCHASE
+
+// Packet: 0x09d7
+packetLen(0x09d7, -1) // ZC_NPC_MARKET_PURCHASE_RESULT
+
+// Packet: 0x09d8
+packetLen(0x09d8, 2) // CZ_NPC_MARKET_CLOSE
+
+// Packet: 0x09d9
+packetLen(0x09d9, 4) // CZ_REQ_GUILDSTORAGE_LOG
+
+// Packet: 0x09da
+packetLen(0x09da, -1) // ZC_ACK_GUILDSTORAGE_LOG
+
+// Packet: 0x09db
+packetLen(0x09db, -1) // ZC_NOTIFY_MOVEENTRY10
+
+// Packet: 0x09dc
+packetLen(0x09dc, -1) // ZC_NOTIFY_NEWENTRY10
+
+// Packet: 0x09dd
+packetLen(0x09dd, -1) // ZC_NOTIFY_STANDENTRY10
+
+// Packet: 0x09de
+packetLen(0x09de, -1) // ZC_WHISPER02
+
+// Packet: 0x09df
+packetLen(0x09df, 7) // ZC_ACK_WHISPER02
+
+// Packet: 0x09e0
+packetLen(0x09e0, -1) // SC_LOGIN_ANSWER_WITH_ID
+
+// Packet: 0x09e1
+packetLen(0x09e1, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_GUILDSTORAGE
+
+// Packet: 0x09e2
+packetLen(0x09e2, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_BODY
+
+// Packet: 0x09e3
+packetLen(0x09e3, 8) // CZ_MOVE_ITEM_FROM_CART_TO_GUILDSTORAGE
+
+// Packet: 0x09e4
+packetLen(0x09e4, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_CART
+
+// Packet: 0x09e5
+packetLen(0x09e5, 18) // ZC_DELETEITEM_FROM_MCSTORE2
+
+// Packet: 0x09e6
+packetLen(0x09e6, 22) // ZC_UPDATE_ITEM_FROM_BUYING_STORE2
+
+// Packet: 0x09e7
+packetLen(0x09e7, 3) // ZC_NOTIFY_UNREAD_RODEX
+
+// Packet: 0x09e8
+packetLen(0x09e8, 11) // CZ_OPEN_RODEXBOX
+
+// Packet: 0x09e9
+packetLen(0x09e9, 2) // CZ_CLOSE_RODEXBOX
+
+// Packet: 0x09ea
+packetLen(0x09ea, 11) // CZ_REQ_READ_RODEX
+
+// Packet: 0x09eb
+packetLen(0x09eb, -1) // ZC_ACK_READ_RODEX
+
+// Packet: 0x09ec
+packetLen(0x09ec, -1) // CZ_REQ_SEND_RODEX
+
+// Packet: 0x09ed
+packetLen(0x09ed, 3) // ZC_ACK_SEND_RODEX
+
+// Packet: 0x09ee
+packetLen(0x09ee, 11) // CZ_REQ_NEXT_RODEX
+
+// Packet: 0x09ef
+packetLen(0x09ef, 11) // CZ_REQ_REFRESH_RODEX
+
+// Packet: 0x09f0
+packetLen(0x09f0, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x09f1
+packetLen(0x09f1, 11) // CZ_REQ_ZENY_FROM_RODEX
+
+// Packet: 0x09f2
+packetLen(0x09f2, 12) // ZC_ACK_ZENY_FROM_RODEX
+
+// Packet: 0x09f3
+packetLen(0x09f3, 11) // CZ_REQ_ITEM_FROM_RODEX
+
+// Packet: 0x09f4
+packetLen(0x09f4, 12) // ZC_ACK_ITEM_FROM_RODEX
+
+// Packet: 0x09f5
+packetLen(0x09f5, 11) // CZ_REQ_DELETE_RODEX
+
+// Packet: 0x09f6
+packetLen(0x09f6, 11) // ZC_ACK_DELETE_RODEX
+
+// Packet: 0x09f7
+packetLen(0x09f7, 75) // ZC_PROPERTY_HOMUN_2
+
+// Packet: 0x09f8
+packetLen(0x09f8, -1) // ZC_ALL_QUEST_LIST3
+
+// Packet: 0x09f9
+packetLen(0x09f9, 143) // ZC_ADD_QUEST_EX
+
+// Packet: 0x09fa
+packetLen(0x09fa, -1) // ZC_UPDATE_MISSION_HUNT_EX
+
+// Packet: 0x09fb
+packetLen(0x09fb, -1) // CZ_PET_EVOLUTION
+
+// Packet: 0x09fc
+packetLen(0x09fc, 6) // ZC_PET_EVOLUTION_RESULT
+
+// Packet: 0x09fd
+packetLen(0x09fd, -1) // ZC_NOTIFY_MOVEENTRY11
+
+// Packet: 0x09fe
+packetLen(0x09fe, -1) // ZC_NOTIFY_NEWENTRY11
+
+// Packet: 0x09ff
+packetLen(0x09ff, -1) // ZC_NOTIFY_STANDENTRY11
+
+// Packet: 0x0a00
+packetLen(0x0a00, 269) // ZC_SHORTCUT_KEY_LIST_V3
+
+// Packet: 0x0a01
+packetLen(0x0a01, 3) // CZ_SHORTCUTKEYBAR_ROTATE
+
+// Packet: 0x0a02
+packetLen(0x0a02, 4) // ZC_DRESSROOM_OPEN
+
+// Packet: 0x0a03
+packetLen(0x0a03, 2) // CZ_REQ_CANCEL_WRITE_RODEX
+
+// Packet: 0x0a04
+packetLen(0x0a04, 6) // CZ_REQ_ADD_ITEM_RODEX
+
+// Packet: 0x0a05
+packetLen(0x0a05, 53) // ZC_ACK_ADD_ITEM_RODEX
+
+// Packet: 0x0a06
+packetLen(0x0a06, 6) // CZ_REQ_REMOVE_RODEX_ITEM
+
+// Packet: 0x0a07
+packetLen(0x0a07, 9) // ZC_ACK_REMOVE_RODEX_ITEM
+
+// Packet: 0x0a08
+packetLen(0x0a08, 26) // CZ_REQ_OPEN_WRITE_RODEX
+
+// Packet: 0x0a09
+packetLen(0x0a09, 45) // ZC_ADD_EXCHANGE_ITEM3
+
+// Packet: 0x0a0a
+packetLen(0x0a0a, 47) // ZC_ADD_ITEM_TO_STORE3
+
+// Packet: 0x0a0b
+packetLen(0x0a0b, 47) // ZC_ADD_ITEM_TO_CART3
+
+// Packet: 0x0a0c
+packetLen(0x0a0c, 56) // ZC_ITEM_PICKUP_ACK_V6
+
+// Packet: 0x0a0d
+packetLen(0x0a0d, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a0e
+packetLen(0x0a0e, 14) // ZC_BATTLEFIELD_NOTIFY_HP2
+
+// Packet: 0x0a0f
+packetLen(0x0a0f, -1) // ZC_CART_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a10
+packetLen(0x0a10, -1) // ZC_STORE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a11
+packetLen(0x0a11, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a12
+packetLen(0x0a12, 27) // ZC_ACK_OPEN_WRITE_RODEX
+
+// Packet: 0x0a13
+packetLen(0x0a13, 26) // CZ_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a14
+packetLen(0x0a14, 10) // ZC_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a15
+packetLen(0x0a15, 12) // ZC_GOLDPCCAFE_POINT
+
+// Packet: 0x0a16
+packetLen(0x0a16, 26) // CZ_DYNAMICNPC_CREATE_REQUEST
+
+// Packet: 0x0a17
+packetLen(0x0a17, 6) // ZC_DYNAMICNPC_CREATE_RESULT
+
+// Packet: 0x0a18
+packetLen(0x0a18, 14) // ZC_ACCEPT_ENTER3
+
+// Packet: 0x0a19
+packetLen(0x0a19, 2) // CZ_REQ_OPEN_ROULETTE
+
+// Packet: 0x0a1a
+packetLen(0x0a1a, 23) // ZC_ACK_OPEN_ROULETTE
+
+// Packet: 0x0a1b
+packetLen(0x0a1b, 2) // CZ_REQ_ROULETTE_INFO
+
+// Packet: 0x0a1c
+packetLen(0x0a1c, -1) // ZC_ACK_ROULEITTE_INFO
+
+// Packet: 0x0a1d
+packetLen(0x0a1d, 2) // CZ_REQ_CLOSE_ROULETTE
+
+// Packet: 0x0a1e
+packetLen(0x0a1e, 3) // ZC_ACK_CLOSE_ROULETTE
+
+// Packet: 0x0a1f
+packetLen(0x0a1f, 2) // CZ_REQ_GENERATE_ROULETTE
+
+// Packet: 0x0a20
+packetLen(0x0a20, 21) // ZC_ACK_GENERATE_ROULETTE
+
+// Packet: 0x0a21
+packetLen(0x0a21, 3) // CZ_RECV_ROULETTE_ITEM
+
+// Packet: 0x0a22
+packetLen(0x0a22, 5) // ZC_RECV_ROULETTE_ITEM
+
+// Packet: 0x0a23
+packetLen(0x0a23, -1) // ZC_ALL_ACH_LIST
+
+// Packet: 0x0a24
+packetLen(0x0a24, 66) // ZC_ACH_UPDATE
+
+// Packet: 0x0a25
+packetLen(0x0a25, 6) // CZ_REQ_ACH_REWARD
+
+// Packet: 0x0a26
+packetLen(0x0a26, 7) // ZC_REQ_ACH_REWARD_ACK
+
+// Packet: 0x0a27
+packetLen(0x0a27, 8) // ZC_RECOVERY2
+
+// Packet: 0x0a28
+packetLen(0x0a28, 3) // ZC_ACK_OPENSTORE2
+
+// Packet: 0x0a29
+packetLen(0x0a29, 6) // ZC_REQ_AU_BOT
+
+// Packet: 0x0a2a
+packetLen(0x0a2a, 6) // CZ_ACK_AU_BOT
+
+// Packet: 0x0a2b
+packetLen(0x0a2b, 14) // ZC_SE_CASHSHOP_OPEN2
+
+// Packet: 0x0a2c
+packetLen(0x0a2c, 12) // ZC_SE_PC_BUY_TAIWANCASHITEM_RESULT
+
+// Packet: 0x0a2d
+packetLen(0x0a2d, -1) // ZC_EQUIPWIN_MICROSCOPE_V6
+
+// Packet: 0x0a2e
+packetLen(0x0a2e, 6) // CZ_REQ_CHANGE_TITLE
+
+// Packet: 0x0a2f
+packetLen(0x0a2f, 7) // ZC_ACK_CHANGE_TITLE
+
+// Packet: 0x0a30
+packetLen(0x0a30, 106) // ZC_ACK_REQNAMEALL2
+
+// Packet: 0x0a31
+packetLen(0x0a31, -1) // ZC_RESULT_PACKAGE_ITEM_TEST
+
+// Packet: 0x0a32
+packetLen(0x0a32, 2) // ZC_OPEN_RODEX_THROUGH_NPC_ONLY
+
+// Packet: 0x0a33
+packetLen(0x0a33, 7) // ZC_UPDATE_ROULETTE_COIN
+
+// Packet: 0x0a34
+packetLen(0x0a34, 6) // ZC_UPDATE_TAIWANCASH
+
+// Packet: 0x0a35
+packetLen(0x0a35, 4) // CZ_REQ_ONECLICK_ITEMIDENTIFY
+
+// Packet: 0x0a36
+packetLen(0x0a36, 7) // ZC_HP_INFO_TINY
+
+// Packet: 0x0a37
+#if PACKETVER >= 20160921
+packetLen(0x0a37, 59) // ZC_ITEM_PICKUP_ACK_V7
+#elif PACKETVER >= 20160106
+packetLen(0x0a37, 57) // ZC_ITEM_PICKUP_ACK_V7
+#endif
+
+// Packet: 0x0a38
+packetLen(0x0a38, 3) // ZC_OPEN_UI
+
+// Packet: 0x0a39
+packetLen(0x0a39, 36) // CH_MAKE_CHAR
+
+// Packet: 0x0a3a
+packetLen(0x0a3a, 12)
+
+// Packet: 0x0a3b
+packetLen(0x0a3b, -1) // ZC_CUSTOM_HAT_EFFECT
+
+// Packet: 0x0a3c
+packetLen(0x0a3c, -1)
+
+// Packet: 0x0a3d
+packetLen(0x0a3d, 18)
+
+// Packet: 0x0a3e
+packetLen(0x0a3e, -1)
+
+// Packet: 0x0a3f
+packetLen(0x0a3f, 9)
+
+// Packet: 0x0a40
+packetLen(0x0a40, 11)
+
+// Packet: 0x0a41
+packetLen(0x0a41, 18) // ZC_AOE_EFFECT_SKILL
+
+// Packet: 0x0a42
+packetLen(0x0a42, 43)
+
+// Packet: 0x0a43
+packetLen(0x0a43, 85) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0a44
+packetLen(0x0a44, -1) // ZC_GROUP_LIST
+
+// Packet: 0x0a46
+packetLen(0x0a46, 14)
+
+// Packet: 0x0a47
+packetLen(0x0a47, 3) // ZC_STYLE_CHANGE_RES
+
+// Packet: 0x0a48
+packetLen(0x0a48, 2)
+
+// Packet: 0x0a49
+packetLen(0x0a49, 22) // CZ_PRIVATE_AIRSHIP_REQUEST
+
+// Packet: 0x0a4a
+packetLen(0x0a4a, 6) // ZC_PRIVATE_AIRSHIP_RESPONSE
+
+// Packet: 0x0a4b
+packetLen(0x0a4b, 22) // ZC_AIRSHIP_MAPMOVE
+
+// Packet: 0x0a4c
+packetLen(0x0a4c, 28) // ZC_AIRSHIP_SERVERMOVE
+
+// Packet: 0x0a4d
+#if PACKETVER >= 20160127
+packetLen(0x0a4d, -1)
+#endif
+
+// Packet: 0x0a4e
+#if PACKETVER >= 20160302
+packetLen(0x0a4e, 4)
+#endif
+
+// Packet: 0x0a4f
+#if PACKETVER >= 20160302
+packetLen(0x0a4f, -1)
+#endif
+
+// Packet: 0x0a50
+#if PACKETVER >= 20160427
+packetLen(0x0a50, 4)
+#elif PACKETVER >= 20160302
+packetLen(0x0a50, 6)
+#endif
+
+// Packet: 0x0a51
+#if PACKETVER >= 20160302
+packetLen(0x0a51, 34) // ZC_CHECK_RECEIVE_CHARACTER_NAME
+#endif
+
+// Packet: 0x0a52
+#if PACKETVER >= 20160316
+packetLen(0x0a52, 20)
+#endif
+
+// Packet: 0x0a53
+#if PACKETVER >= 20160316
+packetLen(0x0a53, 10)
+#endif
+
+// Packet: 0x0a54
+#if PACKETVER >= 20160316
+packetLen(0x0a54, -1)
+#endif
+
+// Packet: 0x0a55
+#if PACKETVER >= 20160316
+packetLen(0x0a55, 2)
+#endif
+
+// Packet: 0x0a56
+#if PACKETVER >= 20160316
+packetLen(0x0a56, 6)
+#endif
+
+// Packet: 0x0a57
+#if PACKETVER >= 20160316
+packetLen(0x0a57, 6)
+#endif
+
+// Packet: 0x0a58
+#if PACKETVER >= 20160316
+packetLen(0x0a58, 8)
+#endif
+
+// Packet: 0x0a59
+#if PACKETVER >= 20160316
+packetLen(0x0a59, -1)
+#endif
+
+// Packet: 0x0a5a
+#if PACKETVER >= 20160316
+packetLen(0x0a5a, 2)
+#endif
+
+// Packet: 0x0a5b
+#if PACKETVER >= 20160316
+packetLen(0x0a5b, 7)
+#endif
+
+// Packet: 0x0a5c
+#if PACKETVER >= 20160316
+packetLen(0x0a5c, 18)
+#endif
+
+// Packet: 0x0a5d
+#if PACKETVER >= 20160316
+packetLen(0x0a5d, 6)
+#endif
+
+// Packet: 0x0a68
+#if PACKETVER >= 20160323
+packetLen(0x0a68, 3) // CZ_REQ_OPEN_UI
+#endif
+
+// Packet: 0x0a69
+#if PACKETVER >= 20160323
+packetLen(0x0a69, 6)
+#endif
+
+// Packet: 0x0a6a
+#if PACKETVER >= 20160323
+packetLen(0x0a6a, 12)
+#endif
+
+// Packet: 0x0a6b
+#if PACKETVER >= 20160323
+packetLen(0x0a6b, -1)
+#endif
+
+// Packet: 0x0a6c
+#if PACKETVER >= 20160330
+packetLen(0x0a6c, 7)
+#endif
+
+// Packet: 0x0a6d
+#if PACKETVER >= 20160330
+packetLen(0x0a6d, -1)
+#endif
+
+// Packet: 0x0a6e
+#if PACKETVER >= 20160330
+packetLen(0x0a6e, -1) // CZ_REQ_SEND_RODEX
+#endif
+
+// Packet: 0x0a6f
+#if PACKETVER >= 20160330
+packetLen(0x0a6f, -1) // ZC_FORMATSTRING_MSG_COLOR
+#endif
+
+// Packet: 0x0a70
+#if PACKETVER >= 20160504
+packetLen(0x0a70, 2)
+#endif
+
+// Packet: 0x0a71
+#if PACKETVER >= 20160504
+packetLen(0x0a71, -1)
+#endif
+
+// Packet: 0x0a72
+#if PACKETVER >= 20160504
+packetLen(0x0a72, 61)
+#endif
+
+// Packet: 0x0a73
+#if PACKETVER >= 20160518
+packetLen(0x0a73, 2)
+#elif PACKETVER >= 20160511
+packetLen(0x0a73, 6)
+#endif
+
+// Packet: 0x0a74
+#if PACKETVER >= 20160511
+packetLen(0x0a74, 8)
+#endif
+
+// Packet: 0x0a76
+#if PACKETVER >= 20160518
+packetLen(0x0a76, 80)
+#endif
+
+// Packet: 0x0a77
+#if PACKETVER >= 20160525
+packetLen(0x0a77, 15)
+#endif
+
+// Packet: 0x0a78
+#if PACKETVER >= 20160525
+packetLen(0x0a78, 15)
+#endif
+
+// Packet: 0x0a79
+#if PACKETVER >= 20160601
+packetLen(0x0a79, -1)
+#endif
+
+// Packet: 0x0a7b
+#if PACKETVER >= 20160601
+packetLen(0x0a7b, -1)
+#endif
+
+// Packet: 0x0a7c
+#if PACKETVER >= 20160601
+packetLen(0x0a7c, -1)
+#endif
+
+// Packet: 0x0a7d
+#if PACKETVER >= 20160601
+packetLen(0x0a7d, -1) // ZC_ACK_RODEX_LIST
+#endif
+
+// Packet: 0x0a7e
+#if PACKETVER >= 20160706
+packetLen(0x0a7e, -1) // ZC_OFFLINE_STORE_OWNER_ITEMS_READY
+#elif PACKETVER >= 20160615
+packetLen(0x0a7e, 4) // ZC_OFFLINE_STORE_OWNER_ITEMS_READY
+#endif
+
+// Packet: 0x0a7f
+#if PACKETVER >= 20160615
+packetLen(0x0a7f, -1) // CZ_OFFLINE_STORE_CREATE
+#endif
+
+// Packet: 0x0a80
+#if PACKETVER >= 20160629
+packetLen(0x0a80, 6)
+#elif PACKETVER >= 20160615
+packetLen(0x0a80, 2)
+#endif
+
+// Packet: 0x0a81
+#if PACKETVER >= 20160803
+packetLen(0x0a81, 4)
+#elif PACKETVER >= 20160706
+packetLen(0x0a81, 3)
+#elif PACKETVER >= 20160622
+// removed
+#elif PACKETVER >= 20160615
+packetLen(0x0a81, 3)
+#endif
+
+// Packet: 0x0a82
+#if PACKETVER >= 20160622
+packetLen(0x0a82, 46)
+#endif
+
+// Packet: 0x0a83
+#if PACKETVER >= 20160622
+packetLen(0x0a83, 46)
+#endif
+
+// Packet: 0x0a84
+#if PACKETVER >= 20160622
+packetLen(0x0a84, 94) // ZC_GUILD_INFO
+#endif
+
+// Packet: 0x0a85
+#if PACKETVER >= 20160622
+packetLen(0x0a85, 82)
+#endif
+
+// Packet: 0x0a86
+#if PACKETVER >= 20160622
+packetLen(0x0a86, -1)
+#endif
+
+// Packet: 0x0a87
+#if PACKETVER >= 20160713
+packetLen(0x0a87, -1)
+#elif PACKETVER >= 20160622
+packetLen(0x0a87, 4)
+#endif
+
+// Packet: 0x0a88
+#if PACKETVER >= 20160622
+packetLen(0x0a88, 2)
+#endif
+
+// Packet: 0x0a89
+#if PACKETVER >= 20160706
+packetLen(0x0a89, 57) // ZC_NOTIFY_OFFLINE_STORE
+#elif PACKETVER >= 20160629
+packetLen(0x0a89, 32) // ZC_NOTIFY_OFFLINE_STORE
+#endif
+
+// Packet: 0x0a8a
+#if PACKETVER >= 20160629
+packetLen(0x0a8a, 6) // ZC_OFFLINE_STORE_VANISH
+#endif
+
+// Packet: 0x0a8b
+#if PACKETVER >= 20160629
+packetLen(0x0a8b, 2)
+#endif
+
+// Packet: 0x0a8c
+#if PACKETVER >= 20160629
+packetLen(0x0a8c, 2)
+#endif
+
+// Packet: 0x0a8d
+#if PACKETVER >= 20160629
+packetLen(0x0a8d, -1) // ZC_OFFLINE_STORE_OWNER_ITEMS
+#endif
+
+// Packet: 0x0a8e
+#if PACKETVER >= 20160720
+packetLen(0x0a8e, 2)
+#endif
+
+// Packet: 0x0a8f
+#if PACKETVER >= 20160720
+packetLen(0x0a8f, 2)
+#endif
+
+// Packet: 0x0a90
+#if PACKETVER >= 20160720
+packetLen(0x0a90, 3)
+#endif
+
+// Packet: 0x0a91
+#if PACKETVER >= 20160727
+packetLen(0x0a91, -1) // ZC_OFFLINE_STORE_ITEMS
+#endif
+
+// Packet: 0x0a92
+#if PACKETVER >= 20160727
+packetLen(0x0a92, -1)
+#endif
+
+// Packet: 0x0a93
+#if PACKETVER >= 20160727
+packetLen(0x0a93, 3)
+#endif
+
+// Packet: 0x0a94
+#if PACKETVER >= 20160803
+packetLen(0x0a94, 2)
+#endif
+
+// Packet: 0x0a95
+#if PACKETVER >= 20160907
+packetLen(0x0a95, 4)
+#endif
+
+// Packet: 0x0a96
+#if PACKETVER >= 20160921
+packetLen(0x0a96, 51) // ZC_ADD_EXCHANGE_ITEM4
+#endif
+
+// Packet: 0x0a97
+#if PACKETVER >= 20160928
+packetLen(0x0a97, 8) // CZ_ALT_EQUIPMENT_EQUIP
+#endif
+
+// Packet: 0x0a98
+#if PACKETVER >= 20160928
+packetLen(0x0a98, 12) // ZC_ALT_EQUIPMENT_EQUIP
+#endif
+
+// Packet: 0x0a99
+#if PACKETVER >= 20160928
+packetLen(0x0a99, 8)
+#endif
+
+// Packet: 0x0a9a
+#if PACKETVER >= 20160928
+packetLen(0x0a9a, 10) // ZC_ALT_EQUIPMENT_REMOVE
+#endif
+
+// Packet: 0x0a9b
+#if PACKETVER >= 20160928
+packetLen(0x0a9b, -1) // ZC_ALT_EQUIPMENT_ITEMS
+#endif
+
+// Packet: 0x0a9c
+#if PACKETVER >= 20160928
+packetLen(0x0a9c, 2)
+#endif
+
+// Packet: 0x0a9d
+#if PACKETVER >= 20160928
+packetLen(0x0a9d, 4)
+#endif
+
+// Packet: 0x0a9e
+#if PACKETVER >= 20160928
+packetLen(0x0a9e, 2)
+#endif
+
+// Packet: 0x0a9f
+#if PACKETVER >= 20160928
+packetLen(0x0a9f, 2)
+#endif
+
+// Packet: 0x0aa0
+#if PACKETVER >= 20161005
+packetLen(0x0aa0, 2) // ZC_REFINE_OPEN_WINDOW
+#endif
+
+// Packet: 0x0aa1
+#if PACKETVER >= 20161005
+packetLen(0x0aa1, 4) // CZ_REFINE_ADD_ITEM
+#endif
+
+// Packet: 0x0aa2
+#if PACKETVER >= 20161005
+packetLen(0x0aa2, -1) // ZC_REFINE_ADD_ITEM
+#endif
+
+// Packet: 0x0aa3
+#if PACKETVER >= 20161005
+packetLen(0x0aa3, 7) // CZ_REFINE_ITEM_REQUEST
+#endif
+
+// Packet: 0x0aa4
+#if PACKETVER >= 20161005
+packetLen(0x0aa4, 2) // CZ_REFINE_WINDOW_CLOSE
+#endif
+
+// Packet: 0x0aa5
+#if PACKETVER >= 20161026
+packetLen(0x0aa5, -1) // ZC_MEMBERMGR_INFO
+#endif
+
+// Packet: 0x0aa6
+#if PACKETVER >= 20161026
+packetLen(0x0aa6, 36) // ZC_MEMBER_ADD
+#endif
+
+// Packet: 0x0aa7
+#if PACKETVER >= 20161130
+packetLen(0x0aa7, 6) // ZC_INVENTORY_MOVE_FAILED
+#endif
+
+// Packet: 0x0aa8
+#if PACKETVER >= 20161130
+packetLen(0x0aa8, 5)
+#endif
+
+// Packet: 0x0aa9
+#if PACKETVER >= 20161130
+packetLen(0x0aa9, -1)
+#endif
+
+// Packet: 0x0aaa
+#if PACKETVER >= 20161130
+packetLen(0x0aaa, -1)
+#endif
+
+// Packet: 0x0aab
+#if PACKETVER >= 20161130
+packetLen(0x0aab, -1)
+#endif
+
+// Packet: 0x0aac
+#if PACKETVER >= 20161207
+packetLen(0x0aac, 67)
+#endif
+
+// Packet: 0x0aad
+#if PACKETVER >= 20161221
+packetLen(0x0aad, 47)
+#endif
+
+// Packet: 0x0aae
+#if PACKETVER >= 20161221
+packetLen(0x0aae, 2)
+#endif
+
+// Packet: 0x0aaf
+#if PACKETVER >= 20161221
+packetLen(0x0aaf, 6)
+#endif
+
+// Packet: 0x0ab0
+#if PACKETVER >= 20161221
+packetLen(0x0ab0, 6)
+#endif
+
+// Packet: 0x0ab1
+#if PACKETVER >= 20161228
+packetLen(0x0ab1, 14)
+#elif PACKETVER >= 20161221
+packetLen(0x0ab1, 10)
+#endif
+
+
+#endif /* COMMON_PACKETS2016_LEN_RE_H */
diff --git a/src/common/packets/packets2017_len_main.h b/src/common/packets/packets2017_len_main.h
new file mode 100644
index 000000000..ceca3d781
--- /dev/null
+++ b/src/common/packets/packets2017_len_main.h
@@ -0,0 +1,9103 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2017_LEN_MAIN_H
+#define COMMON_PACKETS2017_LEN_MAIN_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+#if PACKETVER >= 20170906
+packetLen(0x006d, 157) // HC_ACCEPT_MAKECHAR
+#elif PACKETVER >= 20170104
+packetLen(0x006d, 149) // HC_ACCEPT_MAKECHAR
+#endif
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 22) // CZ_ENTER
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 44) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 10) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, 14)
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+packetLen(0x0094, 19) // CZ_REQNAME
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+packetLen(0x00a7, 9)
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 9) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+packetLen(0x00f7, 17) // CZ_REQUEST_TIME
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+packetLen(0x0113, 25) // CZ_USE_SKILL
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 37) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+#if PACKETVER >= 20171220
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20171213
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20171115
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20171108
+packetLen(0x0202, 6) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20171101
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20171025
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20170913
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20170906
+packetLen(0x0202, 4) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20170719
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20170712
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20170705
+packetLen(0x0202, 36) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20170628
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20170621
+packetLen(0x0202, 12) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20170329
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20170322
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20170315
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20170308
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20170228
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20170222
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20170104
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+
+// Packet: 0x022b
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+
+// Packet: 0x022c
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+
+// Packet: 0x022d
+#if PACKETVER >= 20171108
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20171101
+packetLen(0x022d, 36) // CZ_COMMAND_MER
+#elif PACKETVER >= 20171025
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20171011
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20171002
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170823
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170816
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170809
+packetLen(0x022d, 4) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170801
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170726
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170719
+packetLen(0x022d, 7) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170712
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170705
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170628
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170329
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170322
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170315
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170308
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170228
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170125
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170118
+packetLen(0x022d, 10) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170104
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#endif
+
+// Packet: 0x022e
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+
+// Packet: 0x022f
+packetLen(0x022f, 5) // ZC_FEED_MER
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+#if PACKETVER >= 20171101
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20171025
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20171018
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20171011
+packetLen(0x023b, 5) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20170719
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20170712
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20170705
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20170628
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20170621
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20170614
+packetLen(0x023b, 8) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20170419
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20170412
+packetLen(0x023b, 10) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20170329
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20170322
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20170315
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20170308
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20170104
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#endif
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+
+// Packet: 0x0275
+packetLen(0x0275, 37) // CH_ENTER2
+
+// Packet: 0x0276
+packetLen(0x0276, -1) // AC_ACCEPT_LOGIN2
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+#if PACKETVER >= 20171227
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20171220
+packetLen(0x0281, 19) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20171213
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20171129
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20171122
+packetLen(0x0281, 6) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20171101
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20171025
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20171018
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20171011
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170920
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170913
+packetLen(0x0281, 6) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170906
+packetLen(0x0281, 36) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170830
+packetLen(0x0281, 5) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170823
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170816
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170809
+packetLen(0x0281, 8) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170801
+packetLen(0x0281, 5) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170719
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170712
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170705
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170628
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170517
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170502
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170426
+packetLen(0x0281, 36) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170412
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170405
+packetLen(0x0281, 18) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170329
+packetLen(0x0281, 26) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170322
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170315
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170308
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170111
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170104
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#endif
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+
+// Packet: 0x0288
+packetLen(0x0288, -1) // CZ_PC_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0289
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0296
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0297
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0298
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+
+// Packet: 0x0299
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+
+// Packet: 0x029a
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+
+// Packet: 0x029b
+packetLen(0x029b, 80) // ZC_MER_INIT
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a5
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+
+// Packet: 0x02a6
+packetLen(0x02a6, -1) // ZC_HACKSH_CPX_MSG
+
+// Packet: 0x02a7
+packetLen(0x02a7, -1) // CZ_HACKSH_CPX_MSG
+
+// Packet: 0x02aa
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+
+// Packet: 0x02ab
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+
+// Packet: 0x02ac
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+
+// Packet: 0x02ad
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+
+// Packet: 0x02b0
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+
+// Packet: 0x02b1
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+
+// Packet: 0x02b2
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+
+// Packet: 0x02b3
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+
+// Packet: 0x02b4
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+
+// Packet: 0x02b5
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+
+// Packet: 0x02b6
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+
+// Packet: 0x02b7
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+
+// Packet: 0x02b8
+packetLen(0x02b8, 22) // ZC_ITEM_PICKUP_PARTY
+
+// Packet: 0x02b9
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+
+// Packet: 0x02ba
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+
+// Packet: 0x02bb
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+
+// Packet: 0x02bc
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+
+// Packet: 0x02c1
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+
+// Packet: 0x02c2
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+
+// Packet: 0x02c4
+#if PACKETVER >= 20171206
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20171129
+packetLen(0x02c4, 5) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20171122
+packetLen(0x02c4, -1) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20171002
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20170927
+packetLen(0x02c4, 5) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20170913
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20170906
+packetLen(0x02c4, 90) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20170830
+packetLen(0x02c4, 6) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20170712
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20170705
+packetLen(0x02c4, 18) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20170322
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20170315
+packetLen(0x02c4, 10) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20170222
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20170215
+packetLen(0x02c4, 36) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20170208
+packetLen(0x02c4, 4) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20170104
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#endif
+
+// Packet: 0x02c5
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c6
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+
+// Packet: 0x02c7
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c8
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+
+// Packet: 0x02c9
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+
+// Packet: 0x02ca
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+
+// Packet: 0x02cb
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+
+// Packet: 0x02cc
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+
+// Packet: 0x02cd
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+
+// Packet: 0x02ce
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+
+// Packet: 0x02cf
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+
+// Packet: 0x02d0
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d1
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d2
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d3
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+
+// Packet: 0x02d4
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+
+// Packet: 0x02d5
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+
+// Packet: 0x02d6
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d7
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d8
+packetLen(0x02d8, 10) // CZ_CONFIG
+
+// Packet: 0x02d9
+packetLen(0x02d9, 10) // ZC_CONFIG
+
+// Packet: 0x02da
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+
+// Packet: 0x02db
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+
+// Packet: 0x02dc
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+
+// Packet: 0x02dd
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+
+// Packet: 0x02de
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+
+// Packet: 0x02df
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+
+// Packet: 0x02e0
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+
+// Packet: 0x02e1
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+
+// Packet: 0x02e2
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+
+// Packet: 0x02e3
+packetLen(0x02e3, 22) // CZ_USE_SKILL_NEW_JAPEN
+
+// Packet: 0x02e4
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+
+// Packet: 0x02e5
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+
+// Packet: 0x02e6
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+
+// Packet: 0x02e7
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+
+// Packet: 0x02e8
+packetLen(0x02e8, -1) // ZC_NORMAL_ITEMLIST3
+
+// Packet: 0x02e9
+packetLen(0x02e9, -1) // ZC_CART_NORMAL_ITEMLIST3
+
+// Packet: 0x02ea
+packetLen(0x02ea, -1) // ZC_STORE_NORMAL_ITEMLIST3
+
+// Packet: 0x02eb
+packetLen(0x02eb, 13) // ZC_ACCEPT_ENTER2
+
+// Packet: 0x02ec
+packetLen(0x02ec, 67) // ZC_NOTIFY_MOVEENTRY4
+
+// Packet: 0x02ed
+packetLen(0x02ed, 59) // ZC_NOTIFY_NEWENTRY4
+
+// Packet: 0x02ee
+packetLen(0x02ee, 60) // ZC_NOTIFY_STANDENTRY4
+
+// Packet: 0x02ef
+packetLen(0x02ef, 8) // ZC_NOTIFY_FONT
+
+// Packet: 0x02f0
+packetLen(0x02f0, 10) // ZC_PROGRESS
+
+// Packet: 0x02f1
+packetLen(0x02f1, 2) // CZ_PROGRESS
+
+// Packet: 0x02f2
+packetLen(0x02f2, 2) // ZC_PROGRESS_CANCEL
+
+// Packet: 0x02f3
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+
+// Packet: 0x02f4
+packetLen(0x02f4, 3) // ZC_IRMAIL_SEND_RES
+
+// Packet: 0x02f5
+packetLen(0x02f5, 7) // ZC_IRMAIL_NOTIFY
+
+// Packet: 0x02f6
+packetLen(0x02f6, 7) // CZ_IRMAIL_LIST
+
+// Packet: 0x035c
+packetLen(0x035c, 2) // CZ_OPEN_SIMPLE_CASHSHOP_ITEMLIST
+
+// Packet: 0x035d
+packetLen(0x035d, -1) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+
+// Packet: 0x035e
+packetLen(0x035e, 2) // CZ_CLOSE_WINDOW
+
+// Packet: 0x035f
+#if PACKETVER >= 20171227
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20171220
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20171213
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20171206
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20171129
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20171122
+packetLen(0x035f, 4) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20171115
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20171101
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170927
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170920
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170913
+packetLen(0x035f, 26) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170906
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170830
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170823
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170809
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170801
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170719
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170621
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170517
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170426
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170412
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170322
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170315
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170308
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170228
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170222
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170215
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170201
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170125
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170104
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#endif
+
+// Packet: 0x0360
+#if PACKETVER >= 20171227
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20171220
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20171206
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20171122
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20171115
+packetLen(0x0360, 19) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20171101
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20171002
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170913
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170906
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170830
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170823
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170809
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170801
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170719
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170621
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170517
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170426
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170412
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170322
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170315
+packetLen(0x0360, 5) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170308
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170228
+packetLen(0x0360, 7) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170201
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170125
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170104
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#endif
+
+// Packet: 0x0361
+#if PACKETVER >= 20171227
+packetLen(0x0361, 7) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20171206
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20171129
+packetLen(0x0361, 12) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20171101
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20171025
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20171002
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170927
+packetLen(0x0361, 4) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170830
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170823
+packetLen(0x0361, 26) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170816
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170809
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170801
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170719
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170712
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170705
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170628
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170621
+packetLen(0x0361, 6) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170614
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170607
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170531
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170329
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170322
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170315
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170308
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170104
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#endif
+
+// Packet: 0x0362
+#if PACKETVER >= 20171220
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20171213
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20171101
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20171025
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20171018
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20171011
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20171002
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170927
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170830
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170823
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170816
+packetLen(0x0362, 90) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170809
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170801
+packetLen(0x0362, 5) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170719
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170712
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170705
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170628
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170517
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170502
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170412
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170405
+packetLen(0x0362, 7) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170329
+packetLen(0x0362, 5) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170322
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170315
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170308
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170228
+packetLen(0x0362, 5) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170111
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170104
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#endif
+
+// Packet: 0x0363
+#if PACKETVER >= 20171220
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20171213
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20171206
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20171129
+packetLen(0x0363, 26) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20171101
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20171025
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20171018
+packetLen(0x0363, 19) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20171011
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20171002
+packetLen(0x0363, 10) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170906
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170830
+packetLen(0x0363, 18) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170823
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170809
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170801
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170726
+packetLen(0x0363, -1) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170719
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170712
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170705
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170628
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170517
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170502
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170412
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170405
+packetLen(0x0363, 4) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170322
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170315
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170308
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170111
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170104
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#endif
+
+// Packet: 0x0364
+#if PACKETVER >= 20171220
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20171213
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20171101
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20171011
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170906
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170823
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170816
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170809
+packetLen(0x0364, 26) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170726
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170719
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170712
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170705
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170628
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170621
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170614
+packetLen(0x0364, 5) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170607
+packetLen(0x0364, 36) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170531
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170524
+packetLen(0x0364, 26) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170502
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170329
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170322
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170315
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170308
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170125
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170118
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170111
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170104
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#endif
+
+// Packet: 0x0365
+#if PACKETVER >= 20171220
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20171213
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20171206
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20171129
+packetLen(0x0365, 6) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20171122
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20171115
+packetLen(0x0365, 6) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20171101
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20171025
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20171018
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20171011
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170830
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170823
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170809
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170801
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170719
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170712
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170705
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170628
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170621
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170517
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170502
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170419
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170412
+packetLen(0x0365, 6) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170329
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170322
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170315
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170308
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170111
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170104
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#endif
+
+// Packet: 0x0366
+#if PACKETVER >= 20171227
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20171220
+packetLen(0x0366, 8) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20171129
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20171122
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20171115
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20171101
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20171002
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170927
+packetLen(0x0366, 19) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170913
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170906
+packetLen(0x0366, 26) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170830
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170823
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170816
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170809
+packetLen(0x0366, 26) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170801
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170726
+packetLen(0x0366, 19) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170719
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170628
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170621
+packetLen(0x0366, 18) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170517
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170426
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170412
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170322
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170315
+packetLen(0x0366, 6) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170308
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170228
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170222
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170215
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170208
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170125
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170104
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#endif
+
+// Packet: 0x0367
+#if PACKETVER >= 20170621
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20170614
+packetLen(0x0367, 6) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20170524
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20170517
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20170322
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20170315
+packetLen(0x0367, 90) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20170215
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20170208
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20170104
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#endif
+
+// Packet: 0x0368
+#if PACKETVER >= 20171227
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20171220
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20171129
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20171122
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20171115
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20171108
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20171101
+packetLen(0x0368, 19) // CZ_REQNAME2
+#elif PACKETVER >= 20171002
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20170913
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20170906
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20170830
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20170823
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20170809
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20170801
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20170726
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20170719
+packetLen(0x0368, 4) // CZ_REQNAME2
+#elif PACKETVER >= 20170621
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20170531
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20170524
+packetLen(0x0368, 36) // CZ_REQNAME2
+#elif PACKETVER >= 20170517
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20170502
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20170412
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20170322
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20170315
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20170308
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20170228
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20170222
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20170215
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20170201
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20170125
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20170104
+packetLen(0x0368, 6) // CZ_REQNAME2
+#endif
+
+// Packet: 0x0369
+#if PACKETVER >= 20171227
+packetLen(0x0369, 5) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20171220
+packetLen(0x0369, -1) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20171129
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20171122
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20171115
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20171108
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20171101
+packetLen(0x0369, -1) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20171002
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170927
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170920
+packetLen(0x0369, 6) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170913
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170906
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170830
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170823
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170809
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170801
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170726
+packetLen(0x0369, 10) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170719
+packetLen(0x0369, 5) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170621
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170607
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170531
+packetLen(0x0369, 10) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170517
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170426
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170412
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170405
+packetLen(0x0369, 6) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170322
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170315
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170308
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170228
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170222
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170215
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170201
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170125
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170104
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#endif
+
+// Packet: 0x03dd
+packetLen(0x03dd, 18) // AHC_GAME_GUARD
+
+// Packet: 0x03de
+packetLen(0x03de, 18) // CAH_ACK_GAME_GUARD
+
+// Packet: 0x0436
+#if PACKETVER >= 20171122
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20171115
+packetLen(0x0436, 6) // CZ_ENTER2
+#elif PACKETVER >= 20171101
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20171025
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20171018
+packetLen(0x0436, 6) // CZ_ENTER2
+#elif PACKETVER >= 20171011
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20170927
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20170920
+packetLen(0x0436, -1) // CZ_ENTER2
+#elif PACKETVER >= 20170830
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20170823
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20170719
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20170712
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20170705
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20170628
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20170517
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20170502
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20170329
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20170322
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20170315
+packetLen(0x0436, -1) // CZ_ENTER2
+#elif PACKETVER >= 20170308
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20170125
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20170118
+packetLen(0x0436, 5) // CZ_ENTER2
+#elif PACKETVER >= 20170111
+packetLen(0x0436, 8) // CZ_ENTER2
+#elif PACKETVER >= 20170104
+packetLen(0x0436, 4) // CZ_ENTER2
+#endif
+
+// Packet: 0x0437
+#if PACKETVER >= 20171227
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20171220
+packetLen(0x0437, 18) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20171129
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20171122
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20171115
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20171101
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20171018
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20171011
+packetLen(0x0437, 36) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20171002
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170920
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170913
+packetLen(0x0437, -1) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170906
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170830
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170823
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170809
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170801
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170719
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170621
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170614
+packetLen(0x0437, 36) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170524
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170517
+packetLen(0x0437, 7) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170426
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170412
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170322
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170315
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170308
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170228
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170222
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170215
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170208
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170125
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170104
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#endif
+
+// Packet: 0x0438
+#if PACKETVER >= 20171227
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20171220
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20171129
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20171122
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20171115
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20171108
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20171101
+packetLen(0x0438, 6) // CZ_USE_SKILL2
+#elif PACKETVER >= 20171011
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20171002
+packetLen(0x0438, 5) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170913
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170906
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170830
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170823
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170816
+packetLen(0x0438, 7) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170809
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170801
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170726
+packetLen(0x0438, 26) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170719
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170621
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170517
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170426
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170412
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170322
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170315
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170308
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170228
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170222
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170215
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170201
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170125
+packetLen(0x0438, 7) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170118
+packetLen(0x0438, 19) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170111
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170104
+packetLen(0x0438, 19) // CZ_USE_SKILL2
+#endif
+
+// Packet: 0x0439
+packetLen(0x0439, 8) // CZ_USE_ITEM2
+
+// Packet: 0x043d
+packetLen(0x043d, 8) // ZC_SKILL_POSTDELAY
+
+// Packet: 0x043e
+packetLen(0x043e, -1) // ZC_SKILL_POSTDELAY_LIST
+
+// Packet: 0x043f
+packetLen(0x043f, 25) // ZC_MSG_STATE_CHANGE2
+
+// Packet: 0x0440
+packetLen(0x0440, 10) // ZC_MILLENNIUMSHIELD
+
+// Packet: 0x0441
+packetLen(0x0441, 4) // ZC_SKILLINFO_DELETE
+
+// Packet: 0x0442
+packetLen(0x0442, -1) // ZC_SKILL_SELECT_REQUEST
+
+// Packet: 0x0443
+packetLen(0x0443, 8) // CZ_SKILL_SELECT_RESPONSE
+
+// Packet: 0x0444
+packetLen(0x0444, -1) // ZC_SIMPLE_CASH_POINT_ITEMLIST
+
+// Packet: 0x0445
+packetLen(0x0445, 10) // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0446
+packetLen(0x0446, 14) // ZC_QUEST_NOTIFY_EFFECT
+
+// Packet: 0x0447
+packetLen(0x0447, 2) // CZ_BLOCKING_PLAY_CANCEL
+
+// Packet: 0x0448
+packetLen(0x0448, -1) // HC_CHARACTER_LIST
+
+// Packet: 0x0449
+packetLen(0x0449, 4) // ZC_HACKSH_ERROR_MSG
+
+// Packet: 0x044a
+packetLen(0x044a, 6) // CZ_CLIENT_VERSION
+
+// Packet: 0x044b
+packetLen(0x044b, 2) // CZ_CLOSE_SIMPLECASH_SHOP
+
+// Packet: 0x07d7
+packetLen(0x07d7, 8) // CZ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d8
+packetLen(0x07d8, 8) // ZC_REQ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d9
+packetLen(0x07d9, 268) // ZC_SHORTCUT_KEY_LIST_V2
+
+// Packet: 0x07da
+packetLen(0x07da, 6) // CZ_CHANGE_GROUP_MASTER
+
+// Packet: 0x07db
+packetLen(0x07db, 8) // ZC_HO_PAR_CHANGE
+
+// Packet: 0x07dc
+packetLen(0x07dc, 6) // CZ_SEEK_PARTY
+
+// Packet: 0x07dd
+packetLen(0x07dd, 54) // ZC_SEEK_PARTY
+
+// Packet: 0x07de
+packetLen(0x07de, 30) // CZ_SEEK_PARTY_MEMBER
+
+// Packet: 0x07df
+packetLen(0x07df, 54) // ZC_SEEK_PARTY_MEMBER
+
+// Packet: 0x07e0
+packetLen(0x07e0, 58) // ZC_ES_NOTI_MYINFO
+
+// Packet: 0x07e1
+packetLen(0x07e1, 15) // ZC_SKILLINFO_UPDATE2
+
+// Packet: 0x07e2
+packetLen(0x07e2, 8) // ZC_MSG_VALUE
+
+// Packet: 0x07e3
+packetLen(0x07e3, 6) // ZC_ITEMLISTWIN_OPEN
+
+// Packet: 0x07e4
+#if PACKETVER >= 20171220
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20171213
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20171115
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20171108
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20171101
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20171025
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20171018
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20171011
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170920
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170913
+packetLen(0x07e4, 8) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170830
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170823
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170809
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170801
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170726
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170712
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170705
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170628
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170621
+packetLen(0x07e4, 26) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170614
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170607
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170531
+packetLen(0x07e4, 5) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170517
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170502
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170329
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170322
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170315
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170308
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170111
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170104
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#endif
+
+// Packet: 0x07e5
+packetLen(0x07e5, 4) // CH_ENTER_CHECKBOT
+
+// Packet: 0x07e6
+packetLen(0x07e6, 8) // ZC_MSG_SKILL
+
+// Packet: 0x07e7
+packetLen(0x07e7, 32) // CH_CHECKBOT
+
+// Packet: 0x07e8
+packetLen(0x07e8, -1) // HC_CHECKBOT
+
+// Packet: 0x07e9
+packetLen(0x07e9, 5) // HC_CHECKBOT_RESULT
+
+// Packet: 0x07ea
+packetLen(0x07ea, 2) // CZ_BATTLE_FIELD_LIST
+
+// Packet: 0x07eb
+packetLen(0x07eb, -1) // ZC_BATTLE_FIELD_LIST
+
+// Packet: 0x07ec
+#if PACKETVER >= 20171220
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20171213
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20171101
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20171025
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20171018
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20171011
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170927
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170920
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170830
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170823
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170809
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170801
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170719
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170712
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170705
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170628
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170607
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170531
+packetLen(0x07ec, -1) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170517
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170502
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170329
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170322
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170315
+packetLen(0x07ec, 6) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170308
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170111
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170104
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#endif
+
+// Packet: 0x07ed
+packetLen(0x07ed, 10) // ZC_JOIN_BATTLE_FIELD
+
+// Packet: 0x07ee
+packetLen(0x07ee, 6) // CZ_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07ef
+packetLen(0x07ef, 8) // ZC_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07f0
+packetLen(0x07f0, 6) // CZ_REQ_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f1
+packetLen(0x07f1, 18) // ZC_ACK_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f2
+packetLen(0x07f2, 8) // ZC_BATTLE_NOTI_START_STEP
+
+// Packet: 0x07f3
+packetLen(0x07f3, 6) // ZC_BATTLE_JOIN_NOTI_DEFER
+
+// Packet: 0x07f4
+packetLen(0x07f4, 3) // ZC_BATTLE_JOIN_DISABLE_STATE
+
+// Packet: 0x07f5
+packetLen(0x07f5, 6) // CZ_GM_FULLSTRIP
+
+// Packet: 0x07f6
+packetLen(0x07f6, 14) // ZC_NOTIFY_EXP
+
+// Packet: 0x07f7
+packetLen(0x07f7, -1) // ZC_NOTIFY_MOVEENTRY7
+
+// Packet: 0x07f8
+packetLen(0x07f8, -1) // ZC_NOTIFY_NEWENTRY5
+
+// Packet: 0x07f9
+packetLen(0x07f9, -1) // ZC_NOTIFY_STANDENTRY5
+
+// Packet: 0x07fa
+packetLen(0x07fa, 8) // ZC_DELETE_ITEM_FROM_BODY
+
+// Packet: 0x07fb
+packetLen(0x07fb, 25) // ZC_USESKILL_ACK2
+
+// Packet: 0x07fc
+packetLen(0x07fc, 10) // ZC_CHANGE_GROUP_MASTER
+
+// Packet: 0x07fd
+packetLen(0x07fd, -1) // ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN
+
+// Packet: 0x07fe
+packetLen(0x07fe, 26) // ZC_PLAY_NPC_BGM
+
+// Packet: 0x0800
+packetLen(0x0800, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0801
+packetLen(0x0801, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0802
+#if PACKETVER >= 20171227
+packetLen(0x0802, 6) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20171220
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20171213
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20171122
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20171115
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20171101
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20171025
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20171018
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20171011
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170913
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170906
+packetLen(0x0802, 5) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170830
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170823
+packetLen(0x0802, 5) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170816
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170809
+packetLen(0x0802, -1) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170801
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170719
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170712
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170705
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170628
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170621
+packetLen(0x0802, 90) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170531
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170524
+packetLen(0x0802, 6) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170517
+packetLen(0x0802, 18) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170426
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170329
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170322
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170315
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170308
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170111
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170104
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// Packet: 0x0803
+packetLen(0x0803, 4) // ZC_PARTY_BOOKING_ACK_REGISTER
+
+// Packet: 0x0804
+packetLen(0x0804, 14) // CZ_PARTY_BOOKING_REQ_SEARCH
+
+// Packet: 0x0805
+packetLen(0x0805, -1) // ZC_PARTY_BOOKING_ACK_SEARCH
+
+// Packet: 0x0806
+packetLen(0x0806, 2) // CZ_PARTY_BOOKING_REQ_DELETE
+
+// Packet: 0x0807
+packetLen(0x0807, 4) // ZC_PARTY_BOOKING_ACK_DELETE
+
+// Packet: 0x0808
+packetLen(0x0808, 14) // CZ_PARTY_BOOKING_REQ_UPDATE
+
+// Packet: 0x0809
+packetLen(0x0809, 50) // ZC_PARTY_BOOKING_NOTIFY_INSERT
+
+// Packet: 0x080a
+packetLen(0x080a, 18) // ZC_PARTY_BOOKING_NOTIFY_UPDATE
+
+// Packet: 0x080b
+packetLen(0x080b, 6) // ZC_PARTY_BOOKING_NOTIFY_DELETE
+
+// Packet: 0x080c
+packetLen(0x080c, 2) // CZ_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080d
+packetLen(0x080d, 3) // ZC_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080e
+packetLen(0x080e, 14) // ZC_NOTIFY_HP_TO_GROUPM_R2
+
+// Packet: 0x080f
+packetLen(0x080f, 20) // ZC_ADD_EXCHANGE_ITEM2
+
+// Packet: 0x0810
+packetLen(0x0810, 3) // ZC_OPEN_BUYING_STORE
+
+// Packet: 0x0811
+#if PACKETVER >= 20171227
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20171220
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20171129
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20171122
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20171115
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20171101
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20171002
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170913
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170906
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170830
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170823
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170809
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170801
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170719
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170621
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170517
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170426
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170419
+packetLen(0x0811, 5) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170412
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170322
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170315
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170308
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170228
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170222
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170215
+packetLen(0x0811, 19) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170208
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170201
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170125
+packetLen(0x0811, 19) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170104
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#endif
+
+// Packet: 0x0812
+packetLen(0x0812, 8) // ZC_FAILED_OPEN_BUYING_STORE_TO_BUYER
+
+// Packet: 0x0813
+packetLen(0x0813, -1) // ZC_MYITEMLIST_BUYING_STORE
+
+// Packet: 0x0814
+packetLen(0x0814, 86) // ZC_BUYING_STORE_ENTRY
+
+// Packet: 0x0815
+#if PACKETVER >= 20171227
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20171220
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20171129
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20171122
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20171115
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20171108
+packetLen(0x0815, 36) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20171101
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20171002
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170913
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170906
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170830
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170823
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170809
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170801
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170719
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170621
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170524
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170517
+packetLen(0x0815, 10) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170426
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170412
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170322
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170315
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170308
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170228
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170222
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170215
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170201
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170125
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170104
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#endif
+
+// Packet: 0x0816
+packetLen(0x0816, 6) // ZC_DISAPPEAR_BUYING_STORE_ENTRY
+
+// Packet: 0x0817
+#if PACKETVER >= 20170920
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20170913
+packetLen(0x0817, 7) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20170524
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20170517
+packetLen(0x0817, 10) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20170104
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#endif
+
+// Packet: 0x0818
+packetLen(0x0818, -1) // ZC_ACK_ITEMLIST_BUYING_STORE
+
+// Packet: 0x0819
+#if PACKETVER >= 20171227
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20171220
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20171129
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20171122
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20171115
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20171108
+packetLen(0x0819, 90) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20171101
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20171002
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170913
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170906
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170830
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170823
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170809
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170801
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170719
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170621
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170607
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170531
+packetLen(0x0819, 6) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170517
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170426
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170419
+packetLen(0x0819, 12) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170412
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170405
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170329
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170322
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170315
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170308
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170228
+packetLen(0x0819, 12) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170215
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170201
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170125
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170104
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#endif
+
+// Packet: 0x081a
+packetLen(0x081a, 4) // ZC_FAILED_TRADE_BUYING_STORE_TO_BUYER
+
+// Packet: 0x081b
+packetLen(0x081b, 10) // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+
+// Packet: 0x081c
+packetLen(0x081c, 10) // ZC_ITEM_DELETE_BUYING_STORE
+
+// Packet: 0x081d
+packetLen(0x081d, 22) // ZC_EL_INIT
+
+// Packet: 0x081e
+packetLen(0x081e, 8) // ZC_EL_PAR_CHANGE
+
+// Packet: 0x081f
+packetLen(0x081f, -1) // ZC_BROADCAST4
+
+// Packet: 0x0820
+packetLen(0x0820, 11) // ZC_COSTUME_SPRITE_CHANGE
+
+// Packet: 0x0821
+packetLen(0x0821, 2) // AC_OTP_USER
+
+// Packet: 0x0822
+packetLen(0x0822, 9) // CA_OTP_AUTH_REQ
+
+// Packet: 0x0823
+packetLen(0x0823, -1) // AC_OTP_AUTH_ACK
+
+// Packet: 0x0824
+packetLen(0x0824, 6) // ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER
+
+// Packet: 0x0825
+packetLen(0x0825, -1) // CA_SSO_LOGIN_REQ
+
+// Packet: 0x0827
+packetLen(0x0827, 6) // CH_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0828
+packetLen(0x0828, 14) // HC_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0829
+packetLen(0x0829, 12) // CH_DELETE_CHAR3
+
+// Packet: 0x082a
+packetLen(0x082a, 10) // HC_DELETE_CHAR3
+
+// Packet: 0x082b
+packetLen(0x082b, 6) // CH_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082c
+packetLen(0x082c, 10) // HC_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082d
+packetLen(0x082d, -1) // HC_ACCEPT_ENTER2
+
+// Packet: 0x0835
+#if PACKETVER >= 20171108
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20171101
+packetLen(0x0835, 6) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20170920
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20170913
+packetLen(0x0835, 19) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20170816
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20170809
+packetLen(0x0835, 6) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20170412
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20170405
+packetLen(0x0835, 5) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20170104
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#endif
+
+// Packet: 0x0836
+packetLen(0x0836, -1) // ZC_SEARCH_STORE_INFO_ACK
+
+// Packet: 0x0837
+packetLen(0x0837, 3) // ZC_SEARCH_STORE_INFO_FAILED
+
+// Packet: 0x0838
+#if PACKETVER >= 20171227
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20171220
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20171206
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20171129
+packetLen(0x0838, 26) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20171122
+packetLen(0x0838, 8) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20171115
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20171108
+packetLen(0x0838, -1) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20171101
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20171002
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170913
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170906
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170830
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170823
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170809
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170801
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170719
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170628
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170621
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170614
+packetLen(0x0838, 10) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170517
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170426
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170419
+packetLen(0x0838, 6) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170412
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170322
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170315
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170308
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170228
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170222
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170215
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170201
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170125
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170104
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#endif
+
+// Packet: 0x0839
+packetLen(0x0839, 66) // ZC_ACK_BAN_GUILD_SSO
+
+// Packet: 0x083a
+packetLen(0x083a, 5) // ZC_OPEN_SEARCH_STORE_INFO
+
+// Packet: 0x083b
+packetLen(0x083b, 2) // CZ_CLOSE_SEARCH_STORE_INFO
+
+// Packet: 0x083c
+#if PACKETVER >= 20171227
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20171220
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20171129
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20171122
+packetLen(0x083c, 5) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20171115
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20171101
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20171002
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170913
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170906
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170830
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170823
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170809
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170801
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170719
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170621
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170614
+packetLen(0x083c, 7) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170517
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170426
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170412
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170322
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170315
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170308
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170228
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170222
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170215
+packetLen(0x083c, 7) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170201
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170125
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170104
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#endif
+
+// Packet: 0x083d
+packetLen(0x083d, 6) // ZC_SSILIST_ITEM_CLICK_ACK
+
+// Packet: 0x083e
+packetLen(0x083e, 26) // AC_REFUSE_LOGIN2
+
+// Packet: 0x0840
+packetLen(0x0840, -1) // HC_NOTIFY_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0841
+packetLen(0x0841, 4) // CH_SELECT_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0842
+packetLen(0x0842, 6) // CZ_RECALL_SSO
+
+// Packet: 0x0843
+packetLen(0x0843, 6) // CZ_REMOVE_AID_SSO
+
+// Packet: 0x0844
+packetLen(0x0844, 2) // CZ_SE_CASHSHOP_OPEN
+
+// Packet: 0x0845
+packetLen(0x0845, 10) // ZC_SE_CASHSHOP_OPEN
+
+// Packet: 0x0846
+packetLen(0x0846, 4) // CZ_REQ_SE_CASH_TAB_CODE
+
+// Packet: 0x0847
+packetLen(0x0847, -1) // ZC_ACK_SE_CASH_ITEM_LIST
+
+// Packet: 0x0848
+packetLen(0x0848, -1) // CZ_SE_PC_BUY_CASHITEM_LIST
+
+// Packet: 0x0849
+packetLen(0x0849, 16) // ZC_SE_PC_BUY_CASHITEM_RESULT
+
+// Packet: 0x084a
+packetLen(0x084a, 2) // CZ_SE_CASHSHOP_CLOSE
+
+// Packet: 0x084b
+packetLen(0x084b, 19) // ZC_ITEM_FALL_ENTRY4
+
+// Packet: 0x084c
+packetLen(0x084c, 10) // CZ_MACRO_USE_SKILL
+
+// Packet: 0x084d
+packetLen(0x084d, 10) // CZ_MACRO_USE_SKILL_TOGROUND
+
+// Packet: 0x084e
+packetLen(0x084e, 5) // CZ_MACRO_REQUEST_MOVE
+
+// Packet: 0x084f
+packetLen(0x084f, 6) // CZ_MACRO_ITEM_PICKUP
+
+// Packet: 0x0850
+packetLen(0x0850, 7) // CZ_MACRO_REQUEST_ACT
+
+// Packet: 0x0851
+packetLen(0x0851, -1) // ZC_GPK_DYNCODE
+
+// Packet: 0x0852
+packetLen(0x0852, 2) // CZ_GPK_DYNCODE_RELOAD
+
+// Packet: 0x0853
+packetLen(0x0853, -1) // ZC_GPK_AUTH
+
+// Packet: 0x0854
+packetLen(0x0854, -1) // CZ_GPK_AUTH
+
+// Packet: 0x0855
+packetLen(0x0855, 6) // ZC_MACRO_ITEMPICKUP_FAIL
+
+// Packet: 0x0856
+packetLen(0x0856, -1) // ZC_NOTIFY_MOVEENTRY8
+
+// Packet: 0x0857
+packetLen(0x0857, -1) // ZC_NOTIFY_STANDENTRY7
+
+// Packet: 0x0858
+packetLen(0x0858, -1) // ZC_NOTIFY_NEWENTRY6
+
+// Packet: 0x0859
+packetLen(0x0859, -1) // ZC_EQUIPWIN_MICROSCOPE2
+
+// Packet: 0x085a
+#if PACKETVER >= 20170927
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170920
+packetLen(0x085a, 5) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170823
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170816
+packetLen(0x085a, 6) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170726
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170719
+packetLen(0x085a, 6) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170614
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170607
+packetLen(0x085a, 5) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170426
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170419
+packetLen(0x085a, 7) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170111
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170104
+packetLen(0x085a, 26) // ZC_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x085b
+#if PACKETVER >= 20171129
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20171122
+packetLen(0x085b, 6) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20171108
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20171101
+packetLen(0x085b, 5) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20170607
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20170531
+packetLen(0x085b, 8) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20170104
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x085c
+#if PACKETVER >= 20171002
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20170927
+packetLen(0x085c, 10) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20170322
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20170315
+packetLen(0x085c, 4) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20170222
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20170215
+packetLen(0x085c, 6) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20170208
+packetLen(0x085c, 26) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20170104
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#endif
+
+// Packet: 0x085d
+#if PACKETVER >= 20171115
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20171108
+packetLen(0x085d, 12) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20170628
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20170621
+packetLen(0x085d, 5) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20170405
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20170329
+packetLen(0x085d, 36) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20170208
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20170201
+packetLen(0x085d, 18) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20170118
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20170111
+packetLen(0x085d, 5) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20170104
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x085e
+#if PACKETVER >= 20171227
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20171220
+packetLen(0x085e, -1) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170726
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170719
+packetLen(0x085e, -1) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170614
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170607
+packetLen(0x085e, -1) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170531
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170524
+packetLen(0x085e, 7) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170426
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170419
+packetLen(0x085e, 5) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170308
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170228
+packetLen(0x085e, 90) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170208
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170201
+packetLen(0x085e, 5) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170104
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x085f
+#if PACKETVER >= 20170607
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170524
+packetLen(0x085f, 6) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170412
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170405
+packetLen(0x085f, 8) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170228
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170222
+packetLen(0x085f, 26) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170104
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x0860
+#if PACKETVER >= 20171220
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20171213
+packetLen(0x0860, 19) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20171108
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20171101
+packetLen(0x0860, 6) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170920
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170906
+packetLen(0x0860, 6) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170621
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170614
+packetLen(0x0860, 6) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170531
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170524
+packetLen(0x0860, 6) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170412
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170405
+packetLen(0x0860, -1) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170215
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170208
+packetLen(0x0860, 5) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170104
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x0861
+#if PACKETVER >= 20171227
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20171220
+packetLen(0x0861, -1) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20170927
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20170920
+packetLen(0x0861, 26) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20170607
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20170531
+packetLen(0x0861, 26) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20170104
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x0862
+#if PACKETVER >= 20171206
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20171129
+packetLen(0x0862, 6) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20171122
+packetLen(0x0862, -1) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170927
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170920
+packetLen(0x0862, 10) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170823
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170816
+packetLen(0x0862, 10) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170614
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170607
+packetLen(0x0862, 6) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170426
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170419
+packetLen(0x0862, 26) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170125
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170118
+packetLen(0x0862, 8) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170104
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x0863
+#if PACKETVER >= 20171115
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20171108
+packetLen(0x0863, 5) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170726
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170719
+packetLen(0x0863, 6) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170705
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170628
+packetLen(0x0863, 36) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170614
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170607
+packetLen(0x0863, 6) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170419
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170412
+packetLen(0x0863, -1) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170322
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170315
+packetLen(0x0863, 5) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170308
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170228
+packetLen(0x0863, -1) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170104
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x0864
+#if PACKETVER >= 20170927
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20170920
+packetLen(0x0864, 36) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20170614
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20170607
+packetLen(0x0864, 6) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20170531
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20170524
+packetLen(0x0864, 6) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20170412
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20170405
+packetLen(0x0864, 26) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20170104
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x0865
+#if PACKETVER >= 20170927
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20170920
+packetLen(0x0865, -1) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20170913
+packetLen(0x0865, 26) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20170906
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20170830
+packetLen(0x0865, 5) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20170621
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20170614
+packetLen(0x0865, 4) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20170412
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20170405
+packetLen(0x0865, 5) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20170125
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20170118
+packetLen(0x0865, 5) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20170104
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0866
+#if PACKETVER >= 20170920
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170906
+packetLen(0x0866, -1) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170621
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170614
+packetLen(0x0866, 6) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170531
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170524
+packetLen(0x0866, -1) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170502
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170426
+packetLen(0x0866, -1) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170228
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170222
+packetLen(0x0866, 6) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170104
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0867
+#if PACKETVER >= 20171213
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20171206
+packetLen(0x0867, 6) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20171129
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20171122
+packetLen(0x0867, 19) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20170621
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20170614
+packetLen(0x0867, 26) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20170104
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0868
+#if PACKETVER >= 20170816
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20170809
+packetLen(0x0868, 7) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20170607
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20170531
+packetLen(0x0868, 4) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20170524
+packetLen(0x0868, 8) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20170517
+packetLen(0x0868, 90) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20170426
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20170419
+packetLen(0x0868, -1) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20170104
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0869
+#if PACKETVER >= 20170419
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20170412
+packetLen(0x0869, 18) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20170104
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x086a
+#if PACKETVER >= 20171213
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20171206
+packetLen(0x086a, 4) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20171025
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20171018
+packetLen(0x086a, 4) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170927
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170920
+packetLen(0x086a, 26) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170906
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170830
+packetLen(0x086a, 26) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170426
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170419
+packetLen(0x086a, 18) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170322
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170315
+packetLen(0x086a, 8) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170104
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x086b
+#if PACKETVER >= 20170308
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20170228
+packetLen(0x086b, 19) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20170104
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x086c
+#if PACKETVER >= 20171108
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20171101
+packetLen(0x086c, 10) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20170927
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20170920
+packetLen(0x086c, 6) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20170913
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20170906
+packetLen(0x086c, 8) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20170830
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20170823
+packetLen(0x086c, 19) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20170621
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20170614
+packetLen(0x086c, -1) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20170104
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x086d
+#if PACKETVER >= 20171206
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20171129
+packetLen(0x086d, 18) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20171122
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20171115
+packetLen(0x086d, 4) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20170830
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20170823
+packetLen(0x086d, 36) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20170531
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20170524
+packetLen(0x086d, 5) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20170419
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20170412
+packetLen(0x086d, 8) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20170104
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x086e
+#if PACKETVER >= 20171213
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20171206
+packetLen(0x086e, 18) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20170816
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20170809
+packetLen(0x086e, 5) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20170726
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20170719
+packetLen(0x086e, 26) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20170201
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20170125
+packetLen(0x086e, 26) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20170104
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x086f
+#if PACKETVER >= 20171122
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20171115
+packetLen(0x086f, -1) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170816
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170809
+packetLen(0x086f, 5) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170502
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170426
+packetLen(0x086f, 8) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170412
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170405
+packetLen(0x086f, 26) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170125
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170118
+packetLen(0x086f, 6) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170104
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x0870
+#if PACKETVER >= 20170228
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20170222
+packetLen(0x0870, 18) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20170104
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x0871
+#if PACKETVER >= 20170614
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20170607
+packetLen(0x0871, 19) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20170228
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20170222
+packetLen(0x0871, 4) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20170104
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x0872
+#if PACKETVER >= 20171227
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20171220
+packetLen(0x0872, 10)
+#elif PACKETVER >= 20171108
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20171101
+packetLen(0x0872, 26)
+#elif PACKETVER >= 20170426
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20170419
+packetLen(0x0872, 8)
+#elif PACKETVER >= 20170322
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20170315
+packetLen(0x0872, 26)
+#elif PACKETVER >= 20170104
+packetLen(0x0872, 2)
+#endif
+
+// Packet: 0x0873
+#if PACKETVER >= 20171227
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20171220
+packetLen(0x0873, 6) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20171002
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170927
+packetLen(0x0873, 6) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170801
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170726
+packetLen(0x0873, 6) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170614
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170607
+packetLen(0x0873, 8) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170531
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170524
+packetLen(0x0873, 19) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170308
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170228
+packetLen(0x0873, -1) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170125
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170118
+packetLen(0x0873, 4) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170104
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x0874
+#if PACKETVER >= 20170801
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20170726
+packetLen(0x0874, -1) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20170308
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20170228
+packetLen(0x0874, -1) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20170104
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x0875
+#if PACKETVER >= 20171002
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20170927
+packetLen(0x0875, 12) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20170920
+packetLen(0x0875, 4) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20170906
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20170830
+packetLen(0x0875, 4) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20170614
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20170607
+packetLen(0x0875, 12) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20170531
+packetLen(0x0875, 10) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20170517
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20170502
+packetLen(0x0875, 36) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20170208
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20170201
+packetLen(0x0875, 6) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20170104
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x0876
+#if PACKETVER >= 20171206
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20171129
+packetLen(0x0876, 4) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20171108
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20171101
+packetLen(0x0876, 5) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20170816
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20170809
+packetLen(0x0876, 10) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20170222
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20170215
+packetLen(0x0876, 26) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20170201
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20170125
+packetLen(0x0876, 5) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20170104
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x0877
+#if PACKETVER >= 20171129
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20171122
+packetLen(0x0877, -1) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170621
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170614
+packetLen(0x0877, 18) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170228
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170222
+packetLen(0x0877, 8) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170201
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170125
+packetLen(0x0877, 6) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170118
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170111
+packetLen(0x0877, 26) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170104
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x0878
+#if PACKETVER >= 20171206
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20171129
+packetLen(0x0878, 36) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20171115
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20171108
+packetLen(0x0878, 26) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170801
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170726
+packetLen(0x0878, 7) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170607
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170531
+packetLen(0x0878, 26) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170419
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170412
+packetLen(0x0878, 5) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170104
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x0879
+#if PACKETVER >= 20170712
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170705
+packetLen(0x0879, 8) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170621
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170614
+packetLen(0x0879, 8) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170419
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170412
+packetLen(0x0879, 4) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170208
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170201
+packetLen(0x0879, 4) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170125
+packetLen(0x0879, 10) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170104
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x087a
+#if PACKETVER >= 20171025
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20171018
+packetLen(0x087a, 8) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20170502
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20170426
+packetLen(0x087a, 18) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20170405
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20170329
+packetLen(0x087a, 18) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20170215
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20170208
+packetLen(0x087a, 8) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20170104
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x087b
+#if PACKETVER >= 20171018
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20171011
+packetLen(0x087b, 26) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170913
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170906
+packetLen(0x087b, 8) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170607
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170531
+packetLen(0x087b, 7) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170524
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170517
+packetLen(0x087b, 6) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170419
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170412
+packetLen(0x087b, 10) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170322
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170315
+packetLen(0x087b, 26) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170201
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170125
+packetLen(0x087b, 6) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170104
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x087c
+#if PACKETVER >= 20170222
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20170215
+packetLen(0x087c, -1) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20170104
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#endif
+
+// Packet: 0x087d
+#if PACKETVER >= 20171227
+packetLen(0x087d, 36) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20171002
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170927
+packetLen(0x087d, -1) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170816
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170809
+packetLen(0x087d, 12) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170801
+packetLen(0x087d, 36) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170726
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170719
+packetLen(0x087d, 6) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170628
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170614
+packetLen(0x087d, 6) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170531
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170517
+packetLen(0x087d, -1) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170315
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170308
+packetLen(0x087d, 36) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170222
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170215
+packetLen(0x087d, 5) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170201
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170125
+packetLen(0x087d, -1) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170104
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x087e
+#if PACKETVER >= 20171122
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20171115
+packetLen(0x087e, 8) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20171108
+packetLen(0x087e, -1) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20171025
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20171018
+packetLen(0x087e, 5) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20171002
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170927
+packetLen(0x087e, 5) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170823
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170816
+packetLen(0x087e, 6) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170621
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170614
+packetLen(0x087e, 5) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170222
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170215
+packetLen(0x087e, 10) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170104
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x087f
+#if PACKETVER >= 20170118
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20170111
+packetLen(0x087f, 4) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20170104
+packetLen(0x087f, 36) // ZC_REASSEMBLY_AUTH38
+#endif
+
+// Packet: 0x0880
+#if PACKETVER >= 20171227
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20171220
+packetLen(0x0880, 12) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20170816
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20170809
+packetLen(0x0880, -1) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20170104
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x0881
+#if PACKETVER >= 20171220
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20171213
+packetLen(0x0881, 4) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170823
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170816
+packetLen(0x0881, -1) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170801
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170726
+packetLen(0x0881, 4) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170719
+packetLen(0x0881, 90) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170426
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170419
+packetLen(0x0881, 36) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170208
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170201
+packetLen(0x0881, 8) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170125
+packetLen(0x0881, 5) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170104
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x0882
+#if PACKETVER >= 20171227
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20171220
+packetLen(0x0882, 6) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20171018
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20171011
+packetLen(0x0882, 5) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170823
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170816
+packetLen(0x0882, 36) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170726
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170719
+packetLen(0x0882, 12) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170531
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170524
+packetLen(0x0882, -1) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170104
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x0883
+#if PACKETVER >= 20171122
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20171115
+packetLen(0x0883, 8) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20170222
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20170215
+packetLen(0x0883, 6) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20170104
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x0884
+#if PACKETVER >= 20171115
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20171108
+packetLen(0x0884, -1) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170906
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170830
+packetLen(0x0884, 19) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170823
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170816
+packetLen(0x0884, 8) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170322
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170315
+packetLen(0x0884, 7) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170308
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170228
+packetLen(0x0884, 5) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170222
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170215
+packetLen(0x0884, 8) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170208
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170201
+packetLen(0x0884, 5) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170125
+packetLen(0x0884, 8) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170104
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x0885
+#if PACKETVER >= 20171227
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20171220
+packetLen(0x0885, -1) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20171213
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20171206
+packetLen(0x0885, 6) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20171129
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20171122
+packetLen(0x0885, 8) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20171011
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20171002
+packetLen(0x0885, 8) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20170906
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20170830
+packetLen(0x0885, 90) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20170726
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20170719
+packetLen(0x0885, -1) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20170628
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20170621
+packetLen(0x0885, 26) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20170614
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20170607
+packetLen(0x0885, 26) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20170531
+packetLen(0x0885, -1) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20170208
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20170201
+packetLen(0x0885, 90) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20170104
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x0886
+#if PACKETVER >= 20171108
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20171101
+packetLen(0x0886, 8) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20170712
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20170705
+packetLen(0x0886, 26) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20170208
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20170201
+packetLen(0x0886, 36) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20170104
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#endif
+
+// Packet: 0x0887
+#if PACKETVER >= 20170502
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20170426
+packetLen(0x0887, 6) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20170104
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x0888
+#if PACKETVER >= 20171227
+packetLen(0x0888, 8) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170906
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170830
+packetLen(0x0888, 10) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170823
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170816
+packetLen(0x0888, 18) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170405
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170329
+packetLen(0x0888, -1) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170104
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x0889
+#if PACKETVER >= 20171025
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20171018
+packetLen(0x0889, 8) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170927
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170920
+packetLen(0x0889, 6) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170823
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170816
+packetLen(0x0889, 6) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170628
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170621
+packetLen(0x0889, 8) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170614
+packetLen(0x0889, 90) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170308
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170228
+packetLen(0x0889, 5) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170222
+packetLen(0x0889, -1) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170104
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x088a
+#if PACKETVER >= 20171227
+packetLen(0x088a, 8) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20171206
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20171129
+packetLen(0x088a, -1) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170614
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170607
+packetLen(0x088a, 8) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170222
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170215
+packetLen(0x088a, 90) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170118
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170111
+packetLen(0x088a, 8) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170104
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x088b
+#if PACKETVER >= 20171122
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20171115
+packetLen(0x088b, 8) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20170607
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20170531
+packetLen(0x088b, -1) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20170419
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20170412
+packetLen(0x088b, -1) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20170322
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20170315
+packetLen(0x088b, 18) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20170222
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20170215
+packetLen(0x088b, 26) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20170208
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20170201
+packetLen(0x088b, 6) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20170104
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x088c
+#if PACKETVER >= 20171227
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20171220
+packetLen(0x088c, 10) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170920
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170913
+packetLen(0x088c, 5) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170816
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170809
+packetLen(0x088c, 10) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170524
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170517
+packetLen(0x088c, 8) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170222
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170215
+packetLen(0x088c, -1) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170208
+packetLen(0x088c, 19) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170104
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x088d
+#if PACKETVER >= 20171227
+packetLen(0x088d, 6) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170712
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170705
+packetLen(0x088d, 8) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170607
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170531
+packetLen(0x088d, 6) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170524
+packetLen(0x088d, 10) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170517
+packetLen(0x088d, 5) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170426
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170419
+packetLen(0x088d, -1) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170322
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170315
+packetLen(0x088d, 8) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170104
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x088e
+#if PACKETVER >= 20171108
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20171101
+packetLen(0x088e, 6) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20170927
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20170920
+packetLen(0x088e, 6) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20170801
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20170726
+packetLen(0x088e, 5) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20170712
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20170705
+packetLen(0x088e, 26) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20170104
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x088f
+#if PACKETVER >= 20170426
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20170419
+packetLen(0x088f, 5) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20170322
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20170315
+packetLen(0x088f, 5) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20170104
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0890
+#if PACKETVER >= 20171220
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20171213
+packetLen(0x0890, 36) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20171129
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20171122
+packetLen(0x0890, 6) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20171115
+packetLen(0x0890, 18) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170920
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170913
+packetLen(0x0890, 90) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170816
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170809
+packetLen(0x0890, 36) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170419
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170412
+packetLen(0x0890, -1) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170222
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170215
+packetLen(0x0890, 10) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170104
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0891
+#if PACKETVER >= 20171129
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20171122
+packetLen(0x0891, 6) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20170920
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20170913
+packetLen(0x0891, 8) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20170726
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20170719
+packetLen(0x0891, 10) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20170104
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0892
+#if PACKETVER >= 20170920
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20170913
+packetLen(0x0892, 36) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20170816
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20170809
+packetLen(0x0892, 90) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20170322
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20170315
+packetLen(0x0892, 10) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20170215
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20170208
+packetLen(0x0892, 26) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20170104
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0893
+#if PACKETVER >= 20171129
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20171122
+packetLen(0x0893, 12) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20170419
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20170412
+packetLen(0x0893, -1) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20170405
+packetLen(0x0893, 8) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20170308
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20170228
+packetLen(0x0893, 6) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20170201
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20170125
+packetLen(0x0893, 36) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20170104
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x0894
+#if PACKETVER >= 20170607
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170531
+packetLen(0x0894, 19) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170524
+packetLen(0x0894, 8) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170517
+packetLen(0x0894, 6) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170502
+packetLen(0x0894, 5) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170228
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170222
+packetLen(0x0894, 6) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170201
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170125
+packetLen(0x0894, 4) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170104
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x0895
+#if PACKETVER >= 20171108
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20171101
+packetLen(0x0895, 4) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20170816
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20170809
+packetLen(0x0895, 5) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20170201
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20170125
+packetLen(0x0895, -1) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20170104
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x0896
+#if PACKETVER >= 20171115
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20171108
+packetLen(0x0896, 4) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20170524
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20170517
+packetLen(0x0896, 12) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20170222
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20170215
+packetLen(0x0896, 4) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20170111
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20170104
+packetLen(0x0896, 5) // CZ_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x0897
+#if PACKETVER >= 20171213
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20171206
+packetLen(0x0897, 19) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20171129
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20171122
+packetLen(0x0897, 5) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20171115
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20171108
+packetLen(0x0897, -1) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20171011
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20171002
+packetLen(0x0897, 5) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20170906
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20170830
+packetLen(0x0897, -1) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20170614
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20170607
+packetLen(0x0897, 6) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20170426
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20170419
+packetLen(0x0897, 6) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20170104
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x0898
+#if PACKETVER >= 20171129
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20171122
+packetLen(0x0898, 6) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20171115
+packetLen(0x0898, 36) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20170726
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20170719
+packetLen(0x0898, 10) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20170426
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20170412
+packetLen(0x0898, 6) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20170201
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20170125
+packetLen(0x0898, 6) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20170104
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x0899
+#if PACKETVER >= 20171227
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20171220
+packetLen(0x0899, 36) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20171108
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20171101
+packetLen(0x0899, 26) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20171011
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20171002
+packetLen(0x0899, 26) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170927
+packetLen(0x0899, 7) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170906
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170830
+packetLen(0x0899, 6) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170816
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170809
+packetLen(0x0899, 8) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170621
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170614
+packetLen(0x0899, 26) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170524
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170517
+packetLen(0x0899, 26) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170502
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170426
+packetLen(0x0899, 8) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170104
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x089a
+#if PACKETVER >= 20171129
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20171122
+packetLen(0x089a, 8) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20171025
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20171018
+packetLen(0x089a, 6) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20171002
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20170927
+packetLen(0x089a, 36) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20170906
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20170830
+packetLen(0x089a, -1) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20170726
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20170719
+packetLen(0x089a, 36) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20170712
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20170705
+packetLen(0x089a, 19) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20170607
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20170531
+packetLen(0x089a, 36) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20170419
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20170412
+packetLen(0x089a, 5) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20170104
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x089b
+#if PACKETVER >= 20171108
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20171101
+packetLen(0x089b, -1) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20171002
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20170927
+packetLen(0x089b, 8) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20170920
+packetLen(0x089b, 7) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20170222
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20170215
+packetLen(0x089b, 8) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20170201
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20170125
+packetLen(0x089b, 90) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20170104
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x089c
+#if PACKETVER >= 20171206
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20171129
+packetLen(0x089c, 5) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20171108
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20171101
+packetLen(0x089c, 18) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20170607
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20170524
+packetLen(0x089c, 5) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20170517
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20170502
+packetLen(0x089c, 19) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20170426
+packetLen(0x089c, 5) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20170419
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20170412
+packetLen(0x089c, 6) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20170104
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#endif
+
+// Packet: 0x089d
+#if PACKETVER >= 20171213
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20171206
+packetLen(0x089d, 36) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20171011
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20171002
+packetLen(0x089d, 19) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170726
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170719
+packetLen(0x089d, -1) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170712
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170705
+packetLen(0x089d, 6) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170621
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170614
+packetLen(0x089d, -1) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170607
+packetLen(0x089d, 8) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170426
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170419
+packetLen(0x089d, -1) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170104
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x089e
+#if PACKETVER >= 20171227
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20171220
+packetLen(0x089e, 5) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20171129
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20171122
+packetLen(0x089e, 7) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20170906
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20170830
+packetLen(0x089e, 8) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20170524
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20170517
+packetLen(0x089e, 4) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20170308
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20170228
+packetLen(0x089e, 8) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20170125
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20170118
+packetLen(0x089e, 26) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20170104
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x089f
+#if PACKETVER >= 20171025
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20171018
+packetLen(0x089f, 26) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20170104
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x08a0
+#if PACKETVER >= 20171227
+packetLen(0x08a0, 8) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20171108
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20171101
+packetLen(0x08a0, 8) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20170308
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20170228
+packetLen(0x08a0, 26) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20170104
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x08a1
+#if PACKETVER >= 20170531
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170524
+packetLen(0x08a1, 12) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170419
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170412
+packetLen(0x08a1, 7) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170215
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170208
+packetLen(0x08a1, 18) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170118
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170111
+packetLen(0x08a1, 5) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170104
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x08a2
+#if PACKETVER >= 20171213
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20171206
+packetLen(0x08a2, 26) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20171115
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20171108
+packetLen(0x08a2, 10) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20171101
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20171025
+packetLen(0x08a2, 36) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170913
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170906
+packetLen(0x08a2, 8) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170830
+packetLen(0x08a2, 36) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170621
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170614
+packetLen(0x08a2, -1) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170524
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170517
+packetLen(0x08a2, 6) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170502
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170426
+packetLen(0x08a2, 19) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170308
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170228
+packetLen(0x08a2, 36) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170222
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170215
+packetLen(0x08a2, 12) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170104
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x08a3
+#if PACKETVER >= 20170913
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170906
+packetLen(0x08a3, 26) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170823
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170816
+packetLen(0x08a3, 26) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170809
+packetLen(0x08a3, -1) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170801
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170726
+packetLen(0x08a3, 8) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170228
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170222
+packetLen(0x08a3, 5) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170118
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170111
+packetLen(0x08a3, 6) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170104
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x08a4
+#if PACKETVER >= 20171213
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20171206
+packetLen(0x08a4, 8) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20171122
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20171115
+packetLen(0x08a4, 5) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20170502
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20170426
+packetLen(0x08a4, 6) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20170208
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20170201
+packetLen(0x08a4, 8) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20170104
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x08a5
+#if PACKETVER >= 20171227
+packetLen(0x08a5, 5) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20171206
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20171129
+packetLen(0x08a5, 8) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20171002
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170927
+packetLen(0x08a5, -1) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170412
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170405
+packetLen(0x08a5, 19) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170201
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170125
+packetLen(0x08a5, -1) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170104
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x08a6
+#if PACKETVER >= 20171129
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20171122
+packetLen(0x08a6, 10) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20171025
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20171018
+packetLen(0x08a6, 5) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20171002
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20170927
+packetLen(0x08a6, 8) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20170920
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20170913
+packetLen(0x08a6, 6) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20170816
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20170809
+packetLen(0x08a6, 19) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20170801
+packetLen(0x08a6, 4) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20170726
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20170719
+packetLen(0x08a6, 8) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20170308
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20170228
+packetLen(0x08a6, 8) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20170118
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20170111
+packetLen(0x08a6, 18) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20170104
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#endif
+
+// Packet: 0x08a7
+#if PACKETVER >= 20170920
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170913
+packetLen(0x08a7, 4) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170906
+packetLen(0x08a7, 18) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170823
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170816
+packetLen(0x08a7, 4) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170801
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170726
+packetLen(0x08a7, 36) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170308
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170228
+packetLen(0x08a7, 6) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170104
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x08a8
+#if PACKETVER >= 20170906
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170830
+packetLen(0x08a8, 8) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170726
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170719
+packetLen(0x08a8, 19) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170628
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170621
+packetLen(0x08a8, 5) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170524
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170517
+packetLen(0x08a8, 5) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170405
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170329
+packetLen(0x08a8, 6) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170228
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170222
+packetLen(0x08a8, 26) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170215
+packetLen(0x08a8, 18) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170104
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x08a9
+#if PACKETVER >= 20171129
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20171122
+packetLen(0x08a9, 6) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20171115
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20171108
+packetLen(0x08a9, 5) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20170823
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20170816
+packetLen(0x08a9, 5) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20170614
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20170607
+packetLen(0x08a9, 10) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20170104
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#endif
+
+// Packet: 0x08aa
+#if PACKETVER >= 20170920
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20170913
+packetLen(0x08aa, 10) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20170801
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20170726
+packetLen(0x08aa, 6) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20170524
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20170517
+packetLen(0x08aa, 8) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20170426
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20170419
+packetLen(0x08aa, 8) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20170322
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20170315
+packetLen(0x08aa, 8) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20170104
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x08ab
+#if PACKETVER >= 20171108
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20171101
+packetLen(0x08ab, -1) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170920
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170913
+packetLen(0x08ab, 18) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170801
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170726
+packetLen(0x08ab, 6) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170614
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170607
+packetLen(0x08ab, 90) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170104
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x08ac
+#if PACKETVER >= 20170920
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170913
+packetLen(0x08ac, 5) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170830
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170823
+packetLen(0x08ac, 26) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170816
+packetLen(0x08ac, 5) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170801
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170726
+packetLen(0x08ac, 6) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170607
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170531
+packetLen(0x08ac, 90) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170215
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170208
+packetLen(0x08ac, 8) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170104
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x08ad
+#if PACKETVER >= 20171115
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20171108
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20171101
+packetLen(0x08ad, 12) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20171002
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20170927
+packetLen(0x08ad, -1) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20170920
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20170913
+packetLen(0x08ad, -1) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20170621
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20170614
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20170607
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20170531
+packetLen(0x08ad, 8) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20170125
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20170118
+packetLen(0x08ad, -1) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20170104
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x08af
+packetLen(0x08af, 10) // HC_WAITING_LOGIN
+
+// Packet: 0x08b0
+packetLen(0x08b0, 17) // CH_WAITING_LOGIN
+
+// Packet: 0x08b1
+packetLen(0x08b1, -1) // ZC_MCSTORE_NOTMOVEITEM_LIST
+
+// Packet: 0x08b2
+packetLen(0x08b2, -1) // AC_REALNAME_AUTH
+
+// Packet: 0x08b3
+packetLen(0x08b3, -1) // ZC_SHOWSCRIPT
+
+// Packet: 0x08b4
+packetLen(0x08b4, 2) // ZC_START_COLLECTION
+
+// Packet: 0x08b5
+packetLen(0x08b5, 6) // CZ_TRYCOLLECTION
+
+// Packet: 0x08b6
+packetLen(0x08b6, 3) // ZC_TRYCOLLECTION
+
+// Packet: 0x08b8
+packetLen(0x08b8, 10) // CH_SECOND_PASSWD_ACK
+
+// Packet: 0x08b9
+packetLen(0x08b9, 12) // HC_SECOND_PASSWD_LOGIN
+
+// Packet: 0x08ba
+packetLen(0x08ba, 10) // CH_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bb
+packetLen(0x08bb, 8) // HC_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bc
+packetLen(0x08bc, 10) // CH_DELETE_SECOND_PASSWD
+
+// Packet: 0x08bd
+packetLen(0x08bd, 8) // HC_DELETE_SECOND_PASSWD
+
+// Packet: 0x08be
+packetLen(0x08be, 14) // CH_EDIT_SECOND_PASSWD
+
+// Packet: 0x08bf
+packetLen(0x08bf, 8) // HC_EDIT_SECOND_PASSWD
+
+// Packet: 0x08c0
+packetLen(0x08c0, -1) // ZC_ACK_SE_CASH_ITEM_LIST2
+
+// Packet: 0x08c1
+packetLen(0x08c1, 2) // CZ_MACRO_START
+
+// Packet: 0x08c2
+packetLen(0x08c2, 2) // CZ_MACRO_STOP
+
+// Packet: 0x08c3
+packetLen(0x08c3, 10) // CH_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c4
+packetLen(0x08c4, 8) // HC_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c5
+packetLen(0x08c5, 6) // CH_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c6
+packetLen(0x08c6, 4) // HC_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c7
+packetLen(0x08c7, -1) // ZC_SKILL_ENTRY3
+
+// Packet: 0x08c8
+packetLen(0x08c8, 34) // ZC_NOTIFY_ACT3
+
+// Packet: 0x08c9
+packetLen(0x08c9, 2) // CZ_REQ_SCHEDULER_CASHITEM
+
+// Packet: 0x08ca
+packetLen(0x08ca, -1) // ZC_ACK_SCHEDULER_CASHITEM
+
+// Packet: 0x08cb
+packetLen(0x08cb, -1) // ZC_PERSONAL_INFOMATION
+
+// Packet: 0x08cc
+packetLen(0x08cc, 109) // CA_LOGIN5
+
+// Packet: 0x08cd
+packetLen(0x08cd, 10) // ZC_STOPMOVE_FORCE
+
+// Packet: 0x08ce
+packetLen(0x08ce, 2) // ZC_FAILED_GET_ITEM_FROM_ZONEDA
+
+// Packet: 0x08cf
+packetLen(0x08cf, 10) // ZC_SPIRITS_ATTRIBUTE
+
+// Packet: 0x08d0
+packetLen(0x08d0, 9) // ZC_REQ_WEAR_EQUIP_ACK2
+
+// Packet: 0x08d1
+packetLen(0x08d1, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK2
+
+// Packet: 0x08d2
+packetLen(0x08d2, 10) // ZC_FASTMOVE
+
+// Packet: 0x08d3
+packetLen(0x08d3, 10) // ZC_SE_CASHSHOP_UPDATE
+
+// Packet: 0x08d4
+packetLen(0x08d4, 8) // CH_REQ_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d5
+packetLen(0x08d5, -1) // HC_ACK_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d6
+packetLen(0x08d6, 6) // ZC_CLEAR_DIALOG
+
+// Packet: 0x08d7
+packetLen(0x08d7, 28) // CZ_REQ_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d8
+packetLen(0x08d8, 27) // ZC_ACK_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d9
+packetLen(0x08d9, 30) // ZC_NOTIFY_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08da
+packetLen(0x08da, 26) // CZ_REQ_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08db
+packetLen(0x08db, 27) // ZC_ACK_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08dc
+packetLen(0x08dc, 26) // ZC_NOTIFY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08dd
+packetLen(0x08dd, 27) // CZ_REPLY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08de
+packetLen(0x08de, 27) // ZC_REPLY_ACK_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08df
+packetLen(0x08df, 50) // ZC_NOTIFY_LOBBY_ADMISSION
+
+// Packet: 0x08e0
+packetLen(0x08e0, 51) // CZ_REPLY_LOBBY_ADMISSION
+
+// Packet: 0x08e1
+packetLen(0x08e1, 51) // ZC_REPLY_ACK_LOBBY_ADMISSION
+
+// Packet: 0x08e2
+packetLen(0x08e2, 27) // ZC_NAVIGATION_ACTIVE
+
+// Packet: 0x08e3
+#if PACKETVER >= 20170906
+packetLen(0x08e3, 157) // HC_UPDATE_CHARINFO
+#elif PACKETVER >= 20170104
+packetLen(0x08e3, 149) // HC_UPDATE_CHARINFO
+#endif
+
+// Packet: 0x08e4
+packetLen(0x08e4, 6) // AC_SHUTDOWN_INFO
+
+// Packet: 0x08fc
+packetLen(0x08fc, 30) // CH_REQ_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fd
+packetLen(0x08fd, 6) // CH_ACK_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fe
+packetLen(0x08fe, -1) // ZC_HUNTING_QUEST_INFO
+
+// Packet: 0x08ff
+packetLen(0x08ff, 24) // ZC_EFST_SET_ENTER
+
+// Packet: 0x0900
+packetLen(0x0900, -1) // ZC_INVENTORY_ITEMLIST_NORMAL
+
+// Packet: 0x0901
+packetLen(0x0901, -1) // ZC_INVENTORY_ITEMLIST_EQUIP
+
+// Packet: 0x0902
+packetLen(0x0902, -1) // ZC_CART_ITEMLIST_NORMAL
+
+// Packet: 0x0903
+packetLen(0x0903, -1) // ZC_CART_ITEMLIST_EQUIP
+
+// Packet: 0x0904
+packetLen(0x0904, -1) // ZC_STORE_ITEMLIST_NORMAL
+
+// Packet: 0x0905
+packetLen(0x0905, -1) // ZC_STORE_ITEMLIST_EQUIP
+
+// Packet: 0x0906
+packetLen(0x0906, -1) // ZC_MICROSCOPE
+
+// Packet: 0x0907
+packetLen(0x0907, 5) // CZ_INVENTORY_TAB
+
+// Packet: 0x0908
+packetLen(0x0908, 5) // ZC_INVENTORY_TAB
+
+// Packet: 0x090a
+packetLen(0x090a, 26) // CZ_REQ_ENTRY_QUEUE_RANKING
+
+// Packet: 0x090d
+packetLen(0x090d, -1) // ZC_PREMIUM_CAMPAIGN_INFO
+
+// Packet: 0x090e
+packetLen(0x090e, 2) // ZC_ENTRY_QUEUE_INIT
+
+// Packet: 0x090f
+packetLen(0x090f, -1) // ZC_NOTIFY_NEWENTRY7
+
+// Packet: 0x0910
+packetLen(0x0910, 10) // CZ_REQ_PARTY_NAME
+
+// Packet: 0x0911
+packetLen(0x0911, 30) // ZC_ACK_PARTY_NAME
+
+// Packet: 0x0912
+packetLen(0x0912, 10) // CZ_REQ_GUILD_NAME
+
+// Packet: 0x0913
+packetLen(0x0913, 30) // ZC_ACK_GUILD_NAME
+
+// Packet: 0x0914
+packetLen(0x0914, -1) // ZC_NOTIFY_MOVEENTRY9
+
+// Packet: 0x0915
+packetLen(0x0915, -1) // ZC_NOTIFY_STANDENTRY8
+
+// Packet: 0x0916
+packetLen(0x0916, 26) // CZ_REQ_JOIN_GUILD2
+
+// Packet: 0x0917
+#if PACKETVER >= 20170405
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20170329
+packetLen(0x0917, 8) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20170104
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#endif
+
+// Packet: 0x0918
+#if PACKETVER >= 20170816
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20170809
+packetLen(0x0918, 6) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20170614
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20170607
+packetLen(0x0918, 18) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20170104
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#endif
+
+// Packet: 0x0919
+#if PACKETVER >= 20170927
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20170920
+packetLen(0x0919, 10) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20170614
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20170607
+packetLen(0x0919, -1) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20170208
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20170201
+packetLen(0x0919, 26) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20170104
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#endif
+
+// Packet: 0x091a
+#if PACKETVER >= 20171220
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20171213
+packetLen(0x091a, 5) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170913
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170906
+packetLen(0x091a, 6) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170712
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170705
+packetLen(0x091a, 5) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170419
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170412
+packetLen(0x091a, 5) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170329
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170322
+packetLen(0x091a, 36) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170315
+packetLen(0x091a, 6) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170118
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170111
+packetLen(0x091a, 36) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170104
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#endif
+
+// Packet: 0x091b
+#if PACKETVER >= 20171227
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20171220
+packetLen(0x091b, 6) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20171108
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20171101
+packetLen(0x091b, 8) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170920
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170913
+packetLen(0x091b, 6) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170726
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170719
+packetLen(0x091b, 6) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170621
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170614
+packetLen(0x091b, 10) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170524
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170517
+packetLen(0x091b, -1) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170426
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170419
+packetLen(0x091b, 6) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170322
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170315
+packetLen(0x091b, -1) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170201
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170125
+packetLen(0x091b, 6) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170118
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170111
+packetLen(0x091b, 19) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170104
+packetLen(0x091b, 5) // ZC_PRNPC_STATE
+#endif
+
+// Packet: 0x091c
+#if PACKETVER >= 20170823
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20170816
+packetLen(0x091c, 12) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20170201
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20170125
+packetLen(0x091c, 8) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20170104
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#endif
+
+// Packet: 0x091d
+#if PACKETVER >= 20171213
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20171206
+packetLen(0x091d, 26) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20170920
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20170913
+packetLen(0x091d, 6) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20170801
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20170726
+packetLen(0x091d, 26) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20170322
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20170315
+packetLen(0x091d, 12) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20170104
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#endif
+
+// Packet: 0x091e
+#if PACKETVER >= 20171227
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20171220
+packetLen(0x091e, 6) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20171129
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20171122
+packetLen(0x091e, 90) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20171002
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20170927
+packetLen(0x091e, 6) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20170913
+packetLen(0x091e, 8) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20170906
+packetLen(0x091e, 5) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20170830
+packetLen(0x091e, 6) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20170801
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20170726
+packetLen(0x091e, 12) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20170531
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20170524
+packetLen(0x091e, 8) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20170419
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20170412
+packetLen(0x091e, 19) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20170104
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#endif
+
+// Packet: 0x091f
+#if PACKETVER >= 20171115
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20171108
+packetLen(0x091f, 5) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20170801
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20170726
+packetLen(0x091f, 5) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20170719
+packetLen(0x091f, 6) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20170502
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20170426
+packetLen(0x091f, 4) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20170308
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20170228
+packetLen(0x091f, 10) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20170125
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20170118
+packetLen(0x091f, 18) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20170104
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#endif
+
+// Packet: 0x0920
+#if PACKETVER >= 20170426
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20170419
+packetLen(0x0920, 10) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20170322
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20170315
+packetLen(0x0920, 6) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20170208
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20170125
+packetLen(0x0920, 26) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20170104
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#endif
+
+// Packet: 0x0921
+#if PACKETVER >= 20170927
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20170920
+packetLen(0x0921, 6) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20170906
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20170830
+packetLen(0x0921, 5) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20170823
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20170816
+packetLen(0x0921, 6) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20170809
+packetLen(0x0921, 8) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20170801
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20170726
+packetLen(0x0921, 6) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20170215
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20170208
+packetLen(0x0921, 6) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20170104
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#endif
+
+// Packet: 0x0922
+#if PACKETVER >= 20171002
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20170927
+packetLen(0x0922, 26) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20170426
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20170419
+packetLen(0x0922, 19) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20170322
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20170315
+packetLen(0x0922, -1) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20170104
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#endif
+
+// Packet: 0x0923
+#if PACKETVER >= 20171213
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20171206
+packetLen(0x0923, 8) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20171129
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20171122
+packetLen(0x0923, 18) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20171002
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20170927
+packetLen(0x0923, 6) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20170920
+packetLen(0x0923, 19) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20170913
+packetLen(0x0923, 5) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20170801
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20170726
+packetLen(0x0923, -1) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20170531
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20170524
+packetLen(0x0923, -1) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20170517
+packetLen(0x0923, 19) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20170215
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20170208
+packetLen(0x0923, 6) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20170104
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#endif
+
+// Packet: 0x0924
+#if PACKETVER >= 20171227
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20171220
+packetLen(0x0924, 8) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20170104
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#endif
+
+// Packet: 0x0925
+#if PACKETVER >= 20170920
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170913
+packetLen(0x0925, 12) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170906
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170830
+packetLen(0x0925, 6) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170823
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170816
+packetLen(0x0925, 8) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170614
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170607
+packetLen(0x0925, 26) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170531
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170524
+packetLen(0x0925, 90) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170222
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170215
+packetLen(0x0925, 8) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170104
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#endif
+
+// Packet: 0x0926
+#if PACKETVER >= 20171122
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20171115
+packetLen(0x0926, 6) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20170927
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20170920
+packetLen(0x0926, 8) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20170405
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20170329
+packetLen(0x0926, 5) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20170104
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#endif
+
+// Packet: 0x0927
+#if PACKETVER >= 20171002
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20170927
+packetLen(0x0927, 5) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20170920
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20170913
+packetLen(0x0927, -1) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20170614
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20170607
+packetLen(0x0927, 10) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20170502
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20170426
+packetLen(0x0927, 5) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20170125
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20170118
+packetLen(0x0927, 8) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20170104
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#endif
+
+// Packet: 0x0928
+#if PACKETVER >= 20171011
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20171002
+packetLen(0x0928, -1) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20170104
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#endif
+
+// Packet: 0x0929
+#if PACKETVER >= 20171227
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20171220
+packetLen(0x0929, 6) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20170419
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20170412
+packetLen(0x0929, 6) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20170405
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20170329
+packetLen(0x0929, 6) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20170201
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20170125
+packetLen(0x0929, 12) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20170104
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#endif
+
+// Packet: 0x092a
+#if PACKETVER >= 20170816
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20170809
+packetLen(0x092a, 6) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20170308
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20170228
+packetLen(0x092a, 6) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20170104
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#endif
+
+// Packet: 0x092b
+#if PACKETVER >= 20170816
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20170809
+packetLen(0x092b, 6) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20170222
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20170215
+packetLen(0x092b, -1) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20170201
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20170125
+packetLen(0x092b, 10) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20170104
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#endif
+
+// Packet: 0x092c
+#if PACKETVER >= 20171227
+packetLen(0x092c, 19) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20170823
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20170816
+packetLen(0x092c, -1) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20170726
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20170719
+packetLen(0x092c, -1) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20170104
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#endif
+
+// Packet: 0x092d
+#if PACKETVER >= 20171011
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20171002
+packetLen(0x092d, 18) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20170607
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20170531
+packetLen(0x092d, 6) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20170215
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20170208
+packetLen(0x092d, 5) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20170104
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#endif
+
+// Packet: 0x092e
+#if PACKETVER >= 20171227
+packetLen(0x092e, 4) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20171213
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20171206
+packetLen(0x092e, 8) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170927
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170920
+packetLen(0x092e, -1) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170906
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170830
+packetLen(0x092e, 6) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170419
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170412
+packetLen(0x092e, 8) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170405
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170329
+packetLen(0x092e, 19) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170308
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170228
+packetLen(0x092e, -1) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170104
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#endif
+
+// Packet: 0x092f
+#if PACKETVER >= 20170726
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20170719
+packetLen(0x092f, 18) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20170712
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20170705
+packetLen(0x092f, 4) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20170621
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20170614
+packetLen(0x092f, -1) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20170104
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#endif
+
+// Packet: 0x0930
+#if PACKETVER >= 20170712
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20170705
+packetLen(0x0930, -1) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20170426
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20170419
+packetLen(0x0930, 8) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20170201
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20170125
+packetLen(0x0930, 5) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20170104
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#endif
+
+// Packet: 0x0931
+#if PACKETVER >= 20170816
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20170809
+packetLen(0x0931, 6) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20170614
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20170607
+packetLen(0x0931, 4) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20170104
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#endif
+
+// Packet: 0x0932
+#if PACKETVER >= 20170712
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20170705
+packetLen(0x0932, 6) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20170215
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20170208
+packetLen(0x0932, 8) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20170104
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#endif
+
+// Packet: 0x0933
+#if PACKETVER >= 20171227
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20171220
+packetLen(0x0933, 5) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20170607
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20170531
+packetLen(0x0933, 8) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20170125
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20170118
+packetLen(0x0933, 6) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20170104
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#endif
+
+// Packet: 0x0934
+#if PACKETVER >= 20171129
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20171122
+packetLen(0x0934, 36) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20171011
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20171002
+packetLen(0x0934, 36) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20170712
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20170705
+packetLen(0x0934, 8) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20170614
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20170607
+packetLen(0x0934, 5) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20170531
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20170524
+packetLen(0x0934, 5) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20170104
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#endif
+
+// Packet: 0x0935
+#if PACKETVER >= 20170426
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20170419
+packetLen(0x0935, 90) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20170104
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#endif
+
+// Packet: 0x0936
+#if PACKETVER >= 20171213
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20171206
+packetLen(0x0936, 5) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20170621
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20170614
+packetLen(0x0936, 6) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20170104
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#endif
+
+// Packet: 0x0937
+#if PACKETVER >= 20170927
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170920
+packetLen(0x0937, 12) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170607
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170531
+packetLen(0x0937, 12) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170405
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170329
+packetLen(0x0937, -1) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170308
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170228
+packetLen(0x0937, 6) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170222
+packetLen(0x0937, -1) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170215
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170208
+packetLen(0x0937, 36) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170104
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#endif
+
+// Packet: 0x0938
+#if PACKETVER >= 20171227
+packetLen(0x0938, 26) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20171025
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20171018
+packetLen(0x0938, -1) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20170614
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20170607
+packetLen(0x0938, 7) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20170419
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20170412
+packetLen(0x0938, 90) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20170208
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20170201
+packetLen(0x0938, 5) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20170104
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#endif
+
+// Packet: 0x0939
+#if PACKETVER >= 20171108
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20171101
+packetLen(0x0939, 5) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170927
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170920
+packetLen(0x0939, 5) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170906
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170830
+packetLen(0x0939, 26) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170816
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170809
+packetLen(0x0939, 6) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170405
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170329
+packetLen(0x0939, 26) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170228
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170222
+packetLen(0x0939, 19) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170104
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#endif
+
+// Packet: 0x093a
+#if PACKETVER >= 20170823
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20170816
+packetLen(0x093a, 26) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20170426
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20170419
+packetLen(0x093a, 26) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20170104
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#endif
+
+// Packet: 0x093b
+#if PACKETVER >= 20171129
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20171122
+packetLen(0x093b, 10) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20171011
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20171002
+packetLen(0x093b, 8) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20170927
+packetLen(0x093b, 90) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20170816
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20170809
+packetLen(0x093b, -1) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20170524
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20170517
+packetLen(0x093b, 6) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20170104
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#endif
+
+// Packet: 0x093c
+#if PACKETVER >= 20170517
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20170502
+packetLen(0x093c, 26) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20170201
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20170125
+packetLen(0x093c, -1) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20170104
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#endif
+
+// Packet: 0x093d
+#if PACKETVER >= 20171011
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20171002
+packetLen(0x093d, 6) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20170823
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20170816
+packetLen(0x093d, 19) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20170726
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20170719
+packetLen(0x093d, 5) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20170104
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#endif
+
+// Packet: 0x093e
+#if PACKETVER >= 20171227
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20171220
+packetLen(0x093e, 7) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20171011
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20171002
+packetLen(0x093e, 8) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20170906
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20170830
+packetLen(0x093e, 7) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20170726
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20170719
+packetLen(0x093e, 8) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20170308
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20170228
+packetLen(0x093e, 4) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20170104
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#endif
+
+// Packet: 0x093f
+#if PACKETVER >= 20170426
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20170419
+packetLen(0x093f, 10) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20170104
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#endif
+
+// Packet: 0x0940
+#if PACKETVER >= 20171206
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20171129
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20171115
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20171108
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170906
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170830
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170823
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170816
+packetLen(0x0940, 10) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170809
+packetLen(0x0940, 18) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170607
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170531
+packetLen(0x0940, 18) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170502
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170426
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170208
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170201
+packetLen(0x0940, -1) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170118
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170111
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170104
+packetLen(0x0940, 10) // ZC_REASSEMBLY_AUTH84
+#endif
+
+// Packet: 0x0941
+#if PACKETVER >= 20171227
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20171220
+packetLen(0x0941, 6) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20171115
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20171108
+packetLen(0x0941, 8) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20170823
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20170816
+packetLen(0x0941, 6) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20170104
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#endif
+
+// Packet: 0x0942
+#if PACKETVER >= 20171213
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20171206
+packetLen(0x0942, 5) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20171002
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20170927
+packetLen(0x0942, 18) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20170906
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20170830
+packetLen(0x0942, 12) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20170614
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20170607
+packetLen(0x0942, 5) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20170419
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20170412
+packetLen(0x0942, 26) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20170222
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20170215
+packetLen(0x0942, 6) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20170104
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#endif
+
+// Packet: 0x0943
+#if PACKETVER >= 20171011
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20171002
+packetLen(0x0943, 26) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20170906
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20170830
+packetLen(0x0943, -1) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20170801
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20170726
+packetLen(0x0943, 6) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20170228
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20170222
+packetLen(0x0943, 36) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20170201
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20170125
+packetLen(0x0943, 6) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20170104
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#endif
+
+// Packet: 0x0944
+#if PACKETVER >= 20171025
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20171018
+packetLen(0x0944, 36) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170726
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170719
+packetLen(0x0944, 5) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170712
+packetLen(0x0944, 36) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170621
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170614
+packetLen(0x0944, 19) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170607
+packetLen(0x0944, 6) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170322
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170315
+packetLen(0x0944, 6) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170308
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170228
+packetLen(0x0944, 8) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170201
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170125
+packetLen(0x0944, 18) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170104
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#endif
+
+// Packet: 0x0945
+#if PACKETVER >= 20171227
+packetLen(0x0945, -1) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20171115
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20171108
+packetLen(0x0945, 6) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20171002
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20170927
+packetLen(0x0945, 6) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20170920
+packetLen(0x0945, 18) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20170607
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20170531
+packetLen(0x0945, 6) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20170524
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20170517
+packetLen(0x0945, -1) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20170419
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20170412
+packetLen(0x0945, 8) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20170104
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#endif
+
+// Packet: 0x0946
+#if PACKETVER >= 20171227
+packetLen(0x0946, 26) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20171220
+packetLen(0x0946, 4) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20171129
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20171122
+packetLen(0x0946, 26) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20170726
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20170719
+packetLen(0x0946, 26) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20170531
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20170524
+packetLen(0x0946, 10) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20170517
+packetLen(0x0946, 6) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20170104
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#endif
+
+// Packet: 0x0947
+#if PACKETVER >= 20171129
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20171122
+packetLen(0x0947, 5) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20171115
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20171108
+packetLen(0x0947, 8) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20170906
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20170830
+packetLen(0x0947, -1) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20170524
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20170517
+packetLen(0x0947, 36) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20170308
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20170228
+packetLen(0x0947, 6) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20170104
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#endif
+
+// Packet: 0x0948
+#if PACKETVER >= 20170308
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20170228
+packetLen(0x0948, 26) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20170104
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#endif
+
+// Packet: 0x0949
+#if PACKETVER >= 20171115
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20171108
+packetLen(0x0949, 19) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20170614
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20170607
+packetLen(0x0949, -1) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20170405
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20170329
+packetLen(0x0949, 8) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20170104
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#endif
+
+// Packet: 0x094a
+#if PACKETVER >= 20171025
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20171018
+packetLen(0x094a, 26) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20170322
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20170315
+packetLen(0x094a, 6) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20170104
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#endif
+
+// Packet: 0x094b
+#if PACKETVER >= 20171206
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20171129
+packetLen(0x094b, 8) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20171002
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20170927
+packetLen(0x094b, 26) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20170104
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#endif
+
+// Packet: 0x094c
+#if PACKETVER >= 20170927
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20170920
+packetLen(0x094c, -1) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20170712
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20170705
+packetLen(0x094c, 5) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20170412
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20170405
+packetLen(0x094c, 36) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20170208
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20170201
+packetLen(0x094c, 19) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20170118
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20170111
+packetLen(0x094c, 8) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20170104
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#endif
+
+// Packet: 0x094d
+#if PACKETVER >= 20171108
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20171101
+packetLen(0x094d, 6) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20171002
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20170927
+packetLen(0x094d, 6) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20170104
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#endif
+
+// Packet: 0x094e
+#if PACKETVER >= 20171227
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20171220
+packetLen(0x094e, 8) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20171115
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20171108
+packetLen(0x094e, 26) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20170322
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20170315
+packetLen(0x094e, 19) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20170222
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20170215
+packetLen(0x094e, 6) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20170104
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#endif
+
+// Packet: 0x094f
+#if PACKETVER >= 20171025
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20171018
+packetLen(0x094f, 18) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170809
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170801
+packetLen(0x094f, 26) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170726
+packetLen(0x094f, 8) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170419
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170412
+packetLen(0x094f, 26) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170405
+packetLen(0x094f, 8) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170104
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#endif
+
+// Packet: 0x0950
+#if PACKETVER >= 20171018
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20171011
+packetLen(0x0950, 19) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20170823
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20170816
+packetLen(0x0950, 5) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20170801
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20170726
+packetLen(0x0950, 10) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20170517
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20170502
+packetLen(0x0950, 5) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20170104
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#endif
+
+// Packet: 0x0951
+#if PACKETVER >= 20171227
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20171220
+packetLen(0x0951, 5) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20170104
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#endif
+
+// Packet: 0x0952
+#if PACKETVER >= 20171108
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20171101
+packetLen(0x0952, 90) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20170801
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20170726
+packetLen(0x0952, 5) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20170322
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20170315
+packetLen(0x0952, 36) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20170308
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20170228
+packetLen(0x0952, 10) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20170104
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#endif
+
+// Packet: 0x0953
+#if PACKETVER >= 20171206
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20171129
+packetLen(0x0953, 8) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20170913
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20170906
+packetLen(0x0953, 19) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20170104
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#endif
+
+// Packet: 0x0954
+#if PACKETVER >= 20171018
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20171011
+packetLen(0x0954, 5) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20170801
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20170726
+packetLen(0x0954, 18) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20170104
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#endif
+
+// Packet: 0x0955
+#if PACKETVER >= 20170308
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20170228
+packetLen(0x0955, 18) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20170104
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#endif
+
+// Packet: 0x0956
+#if PACKETVER >= 20170628
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20170621
+packetLen(0x0956, 8) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20170104
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#endif
+
+// Packet: 0x0957
+#if PACKETVER >= 20171227
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20171220
+packetLen(0x0957, 26) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20171213
+packetLen(0x0957, 5) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20171108
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20171101
+packetLen(0x0957, 7) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20170628
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20170621
+packetLen(0x0957, 36) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20170614
+packetLen(0x0957, 8) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20170104
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#endif
+
+// Packet: 0x0958
+#if PACKETVER >= 20171213
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20171206
+packetLen(0x0958, -1) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20171122
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20171115
+packetLen(0x0958, 5) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20171108
+packetLen(0x0958, 18) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170531
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170524
+packetLen(0x0958, 4) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170517
+packetLen(0x0958, 5) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170502
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170426
+packetLen(0x0958, 26) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170125
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170118
+packetLen(0x0958, 36) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170104
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#endif
+
+// Packet: 0x0959
+#if PACKETVER >= 20171002
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20170927
+packetLen(0x0959, 8) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20170906
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20170830
+packetLen(0x0959, 10) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20170823
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20170816
+packetLen(0x0959, 8) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20170419
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20170412
+packetLen(0x0959, 6) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20170104
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#endif
+
+// Packet: 0x095a
+#if PACKETVER >= 20171122
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20171115
+packetLen(0x095a, 26) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20171108
+packetLen(0x095a, 8) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20171101
+packetLen(0x095a, -1) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20171002
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20170927
+packetLen(0x095a, 10) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20170920
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20170913
+packetLen(0x095a, 10) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20170809
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20170801
+packetLen(0x095a, 19) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20170726
+packetLen(0x095a, 90) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20170531
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20170524
+packetLen(0x095a, 6) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20170104
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#endif
+
+// Packet: 0x095b
+#if PACKETVER >= 20170830
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20170823
+packetLen(0x095b, 5) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20170628
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20170621
+packetLen(0x095b, 4) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20170531
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20170524
+packetLen(0x095b, 18) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20170419
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20170412
+packetLen(0x095b, 6) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20170104
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#endif
+
+// Packet: 0x095c
+#if PACKETVER >= 20170920
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20170913
+packetLen(0x095c, 6) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20170628
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20170621
+packetLen(0x095c, 8) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20170426
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20170419
+packetLen(0x095c, 6) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20170412
+packetLen(0x095c, 12) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20170201
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20170125
+packetLen(0x095c, 8) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20170104
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#endif
+
+// Packet: 0x095d
+#if PACKETVER >= 20170927
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20170920
+packetLen(0x095d, 5) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20170426
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20170419
+packetLen(0x095d, -1) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20170412
+packetLen(0x095d, 36) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20170228
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20170222
+packetLen(0x095d, 8) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20170104
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#endif
+
+// Packet: 0x095e
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+
+// Packet: 0x095f
+#if PACKETVER >= 20171011
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20171002
+packetLen(0x095f, 4) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20170405
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20170329
+packetLen(0x095f, 4) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20170222
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20170215
+packetLen(0x095f, 6) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20170104
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#endif
+
+// Packet: 0x0960
+#if PACKETVER >= 20171227
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20171220
+packetLen(0x0960, 90) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20170823
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20170816
+packetLen(0x0960, -1) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20170524
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20170517
+packetLen(0x0960, 26) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20170104
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#endif
+
+// Packet: 0x0961
+#if PACKETVER >= 20171213
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20171206
+packetLen(0x0961, 6) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170927
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170920
+packetLen(0x0961, 6) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170628
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170621
+packetLen(0x0961, 19) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170118
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170111
+packetLen(0x0961, -1) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170104
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#endif
+
+// Packet: 0x0962
+#if PACKETVER >= 20171129
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20171122
+packetLen(0x0962, 26) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20171108
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20171101
+packetLen(0x0962, 6) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20170228
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20170222
+packetLen(0x0962, 8) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20170215
+packetLen(0x0962, 5) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20170125
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20170118
+packetLen(0x0962, 26) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20170104
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#endif
+
+// Packet: 0x0963
+#if PACKETVER >= 20171115
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20171108
+packetLen(0x0963, 7) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170801
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170726
+packetLen(0x0963, -1) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170621
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170614
+packetLen(0x0963, 12) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170607
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170531
+packetLen(0x0963, 6) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170502
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170426
+packetLen(0x0963, 8) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170419
+packetLen(0x0963, 4) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170104
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#endif
+
+// Packet: 0x0964
+#if PACKETVER >= 20171227
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20171220
+packetLen(0x0964, 26) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20170524
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20170517
+packetLen(0x0964, 6) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20170412
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20170405
+packetLen(0x0964, 6) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20170104
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#endif
+
+// Packet: 0x0965
+#if PACKETVER >= 20171115
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20171108
+packetLen(0x0965, 6) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20170426
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20170419
+packetLen(0x0965, 6) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20170201
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20170125
+packetLen(0x0965, 6) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20170104
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#endif
+
+// Packet: 0x0966
+#if PACKETVER >= 20171206
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20171129
+packetLen(0x0966, 19) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20171108
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20171101
+packetLen(0x0966, 10) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20170927
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20170920
+packetLen(0x0966, 90) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20170726
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20170719
+packetLen(0x0966, 8) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20170208
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20170201
+packetLen(0x0966, 8) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20170104
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#endif
+
+// Packet: 0x0967
+#if PACKETVER >= 20171115
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20171108
+packetLen(0x0967, 10) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20170531
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20170524
+packetLen(0x0967, 26) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20170104
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#endif
+
+// Packet: 0x0968
+#if PACKETVER >= 20171129
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20171122
+packetLen(0x0968, -1) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20170607
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20170531
+packetLen(0x0968, -1) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20170524
+packetLen(0x0968, 6) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20170104
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#endif
+
+// Packet: 0x0969
+#if PACKETVER >= 20171227
+packetLen(0x0969, 6) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20170222
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20170215
+packetLen(0x0969, 5) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20170208
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20170201
+packetLen(0x0969, -1) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20170118
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20170111
+packetLen(0x0969, 26) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20170104
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#endif
+
+// Packet: 0x096a
+#if PACKETVER >= 20171227
+packetLen(0x096a, 18) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20171220
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20171129
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20171122
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20171115
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20171101
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20171002
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170913
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170906
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170830
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170823
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170809
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170801
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170719
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170621
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170517
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170426
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170412
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170322
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170315
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170308
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170228
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170222
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170215
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170201
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170125
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170118
+packetLen(0x096a, 8) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170104
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#endif
+
+// Packet: 0x096b
+packetLen(0x096b, 4) // ZC_PRNPC_STATE
+
+// Packet: 0x096c
+packetLen(0x096c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+
+// Packet: 0x096d
+packetLen(0x096d, -1) // ZC_MERGE_ITEM_OPEN
+
+// Packet: 0x096e
+packetLen(0x096e, -1) // CZ_REQ_MERGE_ITEM
+
+// Packet: 0x096f
+packetLen(0x096f, 7) // ZC_ACK_MERGE_ITEM
+
+// Packet: 0x0970
+packetLen(0x0970, 31) // CH_MAKE_CHAR_NOT_STATS
+
+// Packet: 0x0971
+packetLen(0x0971, 6) // ZC_PARTY_RECRUIT_REFUSE_VOLUNTEER_TO_PM
+
+// Packet: 0x0972
+packetLen(0x0972, -1) // ZC_SAY_DIALOG2
+
+// Packet: 0x0973
+packetLen(0x0973, 7) // ZC_WAIT_DIALOG2
+
+// Packet: 0x0974
+packetLen(0x0974, 2) // CZ_CANCEL_MERGE_ITEM
+
+// Packet: 0x0975
+packetLen(0x0975, -1) // ZC_STORE_ITEMLIST_NORMAL_V2
+
+// Packet: 0x0976
+packetLen(0x0976, -1) // ZC_STORE_ITEMLIST_EQUIP_V2
+
+// Packet: 0x0977
+packetLen(0x0977, 14) // ZC_HP_INFO
+
+// Packet: 0x0978
+packetLen(0x0978, 6) // CZ_REQ_BEFORE_WORLD_INFO
+
+// Packet: 0x0979
+packetLen(0x0979, 50) // ZC_ACK_BEFORE_WORLD_INFO
+
+// Packet: 0x097a
+packetLen(0x097a, -1) // ZC_ALL_QUEST_LIST2
+
+// Packet: 0x097b
+packetLen(0x097b, -1) // ZC_PERSONAL_INFOMATION2
+
+// Packet: 0x097c
+packetLen(0x097c, 4) // CZ_REQ_RANKING
+
+// Packet: 0x097d
+packetLen(0x097d, 288) // ZC_ACK_RANKING
+
+// Packet: 0x097e
+packetLen(0x097e, 12) // ZC_UPDATE_RANKING_POINT
+
+// Packet: 0x097f
+packetLen(0x097f, -1) // ZC_SELECTCART
+
+// Packet: 0x0980
+packetLen(0x0980, 7) // CZ_SELECTCART
+
+// Packet: 0x0981
+packetLen(0x0981, -1) // ZC_PERSONAL_INFOMATION_CHN
+
+// Packet: 0x0982
+packetLen(0x0982, 7) // ZC_FATIGUE_CHN
+
+// Packet: 0x0983
+packetLen(0x0983, 29) // ZC_MSG_STATE_CHANGE3
+
+// Packet: 0x0984
+packetLen(0x0984, 28) // ZC_EFST_SET_ENTER2
+
+// Packet: 0x0985
+packetLen(0x0985, -1) // ZC_SKILL_POSTDELAY_LIST2
+
+// Packet: 0x0986
+packetLen(0x0986, 10) // AC_SHUTDOWN_NOTIFY
+
+// Packet: 0x0987
+packetLen(0x0987, -1) // CA_LOGIN6
+
+// Packet: 0x0988
+packetLen(0x0988, 6) // ZC_NOTIFY_CLAN_CONNECTINFO
+
+// Packet: 0x0989
+packetLen(0x0989, 2) // ZC_ACK_CLAN_LEAVE
+
+// Packet: 0x098a
+packetLen(0x098a, -1) // ZC_CLANINFO
+
+// Packet: 0x098b
+packetLen(0x098b, 2) // AC_REQ_NEW_USER
+
+// Packet: 0x098c
+packetLen(0x098c, 4) // CA_ACK_NEW_USER
+
+// Packet: 0x098d
+packetLen(0x098d, -1) // CZ_CLAN_CHAT
+
+// Packet: 0x098e
+packetLen(0x098e, -1) // ZC_NOTIFY_CLAN_CHAT
+
+// Packet: 0x098f
+packetLen(0x098f, -1) // CH_DELETE_CHAR3_EXT
+
+// Packet: 0x0990
+packetLen(0x0990, 31) // ZC_ITEM_PICKUP_ACK_V5
+
+// Packet: 0x0991
+packetLen(0x0991, -1) // ZC_INVENTORY_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0992
+packetLen(0x0992, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0993
+packetLen(0x0993, -1) // ZC_CART_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0994
+packetLen(0x0994, -1) // ZC_CART_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0995
+packetLen(0x0995, -1) // ZC_STORE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0996
+packetLen(0x0996, -1) // ZC_STORE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0997
+packetLen(0x0997, -1) // ZC_EQUIPWIN_MICROSCOPE_V5
+
+// Packet: 0x0998
+packetLen(0x0998, 8) // CZ_REQ_WEAR_EQUIP_V5
+
+// Packet: 0x0999
+packetLen(0x0999, 11) // ZC_ACK_WEAR_EQUIP_V5
+
+// Packet: 0x099a
+packetLen(0x099a, 9) // ZC_ACK_TAKEOFF_EQUIP_V5
+
+// Packet: 0x099b
+packetLen(0x099b, 8) // ZC_MAPPROPERTY_R2
+
+// Packet: 0x099c
+packetLen(0x099c, 6) // CH_REQ_CHARINFO_PER_PAGE
+
+// Packet: 0x099d
+packetLen(0x099d, -1) // HC_ACK_CHARINFO_PER_PAGE
+
+// Packet: 0x099e
+packetLen(0x099e, 12) // HC_QUEUE_ORDER
+
+// Packet: 0x099f
+packetLen(0x099f, -1) // ZC_SKILL_ENTRY4
+
+// Packet: 0x09a0
+packetLen(0x09a0, 6) // HC_CHARLIST_NOTIFY
+
+// Packet: 0x09a1
+packetLen(0x09a1, 2) // CH_CHARLIST_REQ
+
+// Packet: 0x09a2
+packetLen(0x09a2, 6) // AC_REQ_MOBILE_OTP
+
+// Packet: 0x09a3
+packetLen(0x09a3, -1) // CA_ACK_MOBILE_OTP
+
+// Packet: 0x09a4
+packetLen(0x09a4, 18) // ZC_DISPATCH_TIMING_INFO_CHN
+
+// Packet: 0x09a5
+packetLen(0x09a5, 7) // AC_REFUSE_LOGIN3
+
+// Packet: 0x09a6
+packetLen(0x09a6, 12) // ZC_BANKING_CHECK
+
+// Packet: 0x09a7
+packetLen(0x09a7, 10) // CZ_REQ_BANKING_DEPOSIT
+
+// Packet: 0x09a8
+packetLen(0x09a8, 16) // ZC_ACK_BANKING_DEPOSIT
+
+// Packet: 0x09a9
+packetLen(0x09a9, 10) // CZ_REQ_BANKING_WITHDRAW
+
+// Packet: 0x09aa
+packetLen(0x09aa, 16) // ZC_ACK_BANKING_WITHDRAW
+
+// Packet: 0x09ab
+packetLen(0x09ab, 6) // CZ_REQ_BANKING_CHECK
+
+// Packet: 0x09ac
+packetLen(0x09ac, -1) // CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO
+
+// Packet: 0x09ad
+packetLen(0x09ad, 10) // ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO
+
+// Packet: 0x09ae
+packetLen(0x09ae, 17) // CZ_REQ_APPLY_BARGAIN_SALE_ITEM
+
+// Packet: 0x09af
+packetLen(0x09af, 4) // ZC_ACK_APPLY_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b0
+packetLen(0x09b0, 8) // CZ_REQ_REMOVE_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b1
+packetLen(0x09b1, 4) // ZC_ACK_REMOVE_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b2
+packetLen(0x09b2, 8) // ZC_NOTIFY_BARGAIN_SALE_SELLING
+
+// Packet: 0x09b3
+packetLen(0x09b3, 4) // ZC_NOTIFY_BARGAIN_SALE_CLOSE
+
+// Packet: 0x09b4
+packetLen(0x09b4, 6) // CZ_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b5
+packetLen(0x09b5, 2) // ZC_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b6
+packetLen(0x09b6, 6) // CZ_REQ_OPEN_BANKING
+
+// Packet: 0x09b7
+packetLen(0x09b7, 4) // ZC_ACK_OPEN_BANKING
+
+// Packet: 0x09b8
+packetLen(0x09b8, 6) // CZ_REQ_CLOSE_BANKING
+
+// Packet: 0x09b9
+packetLen(0x09b9, 4) // ZC_ACK_CLOSE_BANKING
+
+// Packet: 0x09ba
+packetLen(0x09ba, 2) // CZ_REQ_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bb
+packetLen(0x09bb, 6) // ZC_ACK_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bc
+packetLen(0x09bc, 6) // CZ_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09bd
+packetLen(0x09bd, 2) // ZC_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09be
+packetLen(0x09be, 2) // CZ_REQ_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09bf
+packetLen(0x09bf, 4) // ZC_ACK_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09c1
+packetLen(0x09c1, 10) // ZC_C_MARKERINFO
+
+// Packet: 0x09c2
+packetLen(0x09c2, -1) // HC_SECRETSCAN_DATA
+
+// Packet: 0x09c3
+packetLen(0x09c3, 8) // CZ_REQ_COUNT_BARGAIN_SALE_ITEM
+
+// Packet: 0x09c4
+packetLen(0x09c4, 8) // ZC_ACK_COUNT_BARGAIN_SALE_ITEM
+
+// Packet: 0x09c5
+packetLen(0x09c5, 1042) // CS_LOGIN_QUERY
+
+// Packet: 0x09c6
+packetLen(0x09c6, -1) // SC_LOGIN_ANSWER
+
+// Packet: 0x09c7
+packetLen(0x09c7, 18) // SC_LOGIN_ERROR
+
+// Packet: 0x09c8
+packetLen(0x09c8, -1) // CA_LOGIN_OTP
+
+// Packet: 0x09c9
+packetLen(0x09c9, -1) // SC_SOCT
+
+// Packet: 0x09ca
+packetLen(0x09ca, -1) // ZC_SKILL_ENTRY5
+
+// Packet: 0x09cb
+packetLen(0x09cb, 17) // ZC_USE_SKILL2
+
+// Packet: 0x09cc
+packetLen(0x09cc, -1) // ZC_SECRETSCAN_DATA
+
+// Packet: 0x09cd
+packetLen(0x09cd, 8) // ZC_MSG_COLOR
+
+// Packet: 0x09ce
+packetLen(0x09ce, 102) // CZ_ITEM_CREATE_EX
+
+// Packet: 0x09cf
+packetLen(0x09cf, -1) // ZC_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d0
+packetLen(0x09d0, -1) // CZ_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d1
+packetLen(0x09d1, 14) // ZC_PROGRESS_ACTOR
+
+// Packet: 0x09d2
+packetLen(0x09d2, -1) // ZC_GUILDSTORAGE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x09d3
+packetLen(0x09d3, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x09d4
+packetLen(0x09d4, 2) // CZ_NPC_TRADE_QUIT
+
+// Packet: 0x09d5
+packetLen(0x09d5, -1) // ZC_NPC_MARKET_OPEN
+
+// Packet: 0x09d6
+packetLen(0x09d6, -1) // CZ_NPC_MARKET_PURCHASE
+
+// Packet: 0x09d7
+packetLen(0x09d7, -1) // ZC_NPC_MARKET_PURCHASE_RESULT
+
+// Packet: 0x09d8
+packetLen(0x09d8, 2) // CZ_NPC_MARKET_CLOSE
+
+// Packet: 0x09d9
+packetLen(0x09d9, 4) // CZ_REQ_GUILDSTORAGE_LOG
+
+// Packet: 0x09da
+packetLen(0x09da, -1) // ZC_ACK_GUILDSTORAGE_LOG
+
+// Packet: 0x09db
+packetLen(0x09db, -1) // ZC_NOTIFY_MOVEENTRY10
+
+// Packet: 0x09dc
+packetLen(0x09dc, -1) // ZC_NOTIFY_NEWENTRY10
+
+// Packet: 0x09dd
+packetLen(0x09dd, -1) // ZC_NOTIFY_STANDENTRY10
+
+// Packet: 0x09de
+packetLen(0x09de, -1) // ZC_WHISPER02
+
+// Packet: 0x09df
+packetLen(0x09df, 7) // ZC_ACK_WHISPER02
+
+// Packet: 0x09e0
+packetLen(0x09e0, -1) // SC_LOGIN_ANSWER_WITH_ID
+
+// Packet: 0x09e1
+packetLen(0x09e1, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_GUILDSTORAGE
+
+// Packet: 0x09e2
+packetLen(0x09e2, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_BODY
+
+// Packet: 0x09e3
+packetLen(0x09e3, 8) // CZ_MOVE_ITEM_FROM_CART_TO_GUILDSTORAGE
+
+// Packet: 0x09e4
+packetLen(0x09e4, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_CART
+
+// Packet: 0x09e5
+packetLen(0x09e5, 18) // ZC_DELETEITEM_FROM_MCSTORE2
+
+// Packet: 0x09e6
+packetLen(0x09e6, 22) // ZC_UPDATE_ITEM_FROM_BUYING_STORE2
+
+// Packet: 0x09e7
+packetLen(0x09e7, 3) // ZC_NOTIFY_UNREAD_RODEX
+
+// Packet: 0x09e8
+packetLen(0x09e8, 11) // CZ_OPEN_RODEXBOX
+
+// Packet: 0x09e9
+packetLen(0x09e9, 2) // CZ_CLOSE_RODEXBOX
+
+// Packet: 0x09ea
+packetLen(0x09ea, 11) // CZ_REQ_READ_RODEX
+
+// Packet: 0x09eb
+packetLen(0x09eb, -1) // ZC_ACK_READ_RODEX
+
+// Packet: 0x09ec
+packetLen(0x09ec, -1) // CZ_REQ_SEND_RODEX
+
+// Packet: 0x09ed
+packetLen(0x09ed, 3) // ZC_ACK_SEND_RODEX
+
+// Packet: 0x09ee
+packetLen(0x09ee, 11) // CZ_REQ_NEXT_RODEX
+
+// Packet: 0x09ef
+packetLen(0x09ef, 11) // CZ_REQ_REFRESH_RODEX
+
+// Packet: 0x09f0
+packetLen(0x09f0, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x09f1
+packetLen(0x09f1, 11) // CZ_REQ_ZENY_FROM_RODEX
+
+// Packet: 0x09f2
+packetLen(0x09f2, 12) // ZC_ACK_ZENY_FROM_RODEX
+
+// Packet: 0x09f3
+packetLen(0x09f3, 11) // CZ_REQ_ITEM_FROM_RODEX
+
+// Packet: 0x09f4
+packetLen(0x09f4, 12) // ZC_ACK_ITEM_FROM_RODEX
+
+// Packet: 0x09f5
+packetLen(0x09f5, 11) // CZ_REQ_DELETE_RODEX
+
+// Packet: 0x09f6
+packetLen(0x09f6, 11) // ZC_ACK_DELETE_RODEX
+
+// Packet: 0x09f7
+packetLen(0x09f7, 75) // ZC_PROPERTY_HOMUN_2
+
+// Packet: 0x09f8
+packetLen(0x09f8, -1) // ZC_ALL_QUEST_LIST3
+
+// Packet: 0x09f9
+packetLen(0x09f9, 143) // ZC_ADD_QUEST_EX
+
+// Packet: 0x09fa
+packetLen(0x09fa, -1) // ZC_UPDATE_MISSION_HUNT_EX
+
+// Packet: 0x09fb
+packetLen(0x09fb, -1) // CZ_PET_EVOLUTION
+
+// Packet: 0x09fc
+packetLen(0x09fc, 6) // ZC_PET_EVOLUTION_RESULT
+
+// Packet: 0x09fd
+packetLen(0x09fd, -1) // ZC_NOTIFY_MOVEENTRY11
+
+// Packet: 0x09fe
+packetLen(0x09fe, -1) // ZC_NOTIFY_NEWENTRY11
+
+// Packet: 0x09ff
+packetLen(0x09ff, -1) // ZC_NOTIFY_STANDENTRY11
+
+// Packet: 0x0a00
+packetLen(0x0a00, 269) // ZC_SHORTCUT_KEY_LIST_V3
+
+// Packet: 0x0a01
+packetLen(0x0a01, 3) // CZ_SHORTCUTKEYBAR_ROTATE
+
+// Packet: 0x0a02
+packetLen(0x0a02, 4) // ZC_DRESSROOM_OPEN
+
+// Packet: 0x0a03
+packetLen(0x0a03, 2) // CZ_REQ_CANCEL_WRITE_RODEX
+
+// Packet: 0x0a04
+packetLen(0x0a04, 6) // CZ_REQ_ADD_ITEM_RODEX
+
+// Packet: 0x0a05
+packetLen(0x0a05, 53) // ZC_ACK_ADD_ITEM_RODEX
+
+// Packet: 0x0a06
+packetLen(0x0a06, 6) // CZ_REQ_REMOVE_RODEX_ITEM
+
+// Packet: 0x0a07
+packetLen(0x0a07, 9) // ZC_ACK_REMOVE_RODEX_ITEM
+
+// Packet: 0x0a08
+packetLen(0x0a08, 26) // CZ_REQ_OPEN_WRITE_RODEX
+
+// Packet: 0x0a09
+packetLen(0x0a09, 45) // ZC_ADD_EXCHANGE_ITEM3
+
+// Packet: 0x0a0a
+packetLen(0x0a0a, 47) // ZC_ADD_ITEM_TO_STORE3
+
+// Packet: 0x0a0b
+packetLen(0x0a0b, 47) // ZC_ADD_ITEM_TO_CART3
+
+// Packet: 0x0a0c
+packetLen(0x0a0c, 56) // ZC_ITEM_PICKUP_ACK_V6
+
+// Packet: 0x0a0d
+packetLen(0x0a0d, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a0e
+packetLen(0x0a0e, 14) // ZC_BATTLEFIELD_NOTIFY_HP2
+
+// Packet: 0x0a0f
+packetLen(0x0a0f, -1) // ZC_CART_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a10
+packetLen(0x0a10, -1) // ZC_STORE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a11
+packetLen(0x0a11, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a12
+packetLen(0x0a12, 27) // ZC_ACK_OPEN_WRITE_RODEX
+
+// Packet: 0x0a13
+packetLen(0x0a13, 26) // CZ_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a14
+packetLen(0x0a14, 10) // ZC_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a15
+packetLen(0x0a15, 12) // ZC_GOLDPCCAFE_POINT
+
+// Packet: 0x0a16
+packetLen(0x0a16, 26) // CZ_DYNAMICNPC_CREATE_REQUEST
+
+// Packet: 0x0a17
+packetLen(0x0a17, 6) // ZC_DYNAMICNPC_CREATE_RESULT
+
+// Packet: 0x0a18
+packetLen(0x0a18, 14) // ZC_ACCEPT_ENTER3
+
+// Packet: 0x0a19
+packetLen(0x0a19, 2) // CZ_REQ_OPEN_ROULETTE
+
+// Packet: 0x0a1a
+packetLen(0x0a1a, 23) // ZC_ACK_OPEN_ROULETTE
+
+// Packet: 0x0a1b
+packetLen(0x0a1b, 2) // CZ_REQ_ROULETTE_INFO
+
+// Packet: 0x0a1c
+packetLen(0x0a1c, -1) // ZC_ACK_ROULEITTE_INFO
+
+// Packet: 0x0a1d
+packetLen(0x0a1d, 2) // CZ_REQ_CLOSE_ROULETTE
+
+// Packet: 0x0a1e
+packetLen(0x0a1e, 3) // ZC_ACK_CLOSE_ROULETTE
+
+// Packet: 0x0a1f
+packetLen(0x0a1f, 2) // CZ_REQ_GENERATE_ROULETTE
+
+// Packet: 0x0a20
+packetLen(0x0a20, 21) // ZC_ACK_GENERATE_ROULETTE
+
+// Packet: 0x0a21
+packetLen(0x0a21, 3) // CZ_RECV_ROULETTE_ITEM
+
+// Packet: 0x0a22
+packetLen(0x0a22, 5) // ZC_RECV_ROULETTE_ITEM
+
+// Packet: 0x0a23
+packetLen(0x0a23, -1) // ZC_ALL_ACH_LIST
+
+// Packet: 0x0a24
+packetLen(0x0a24, 66) // ZC_ACH_UPDATE
+
+// Packet: 0x0a25
+packetLen(0x0a25, 6) // CZ_REQ_ACH_REWARD
+
+// Packet: 0x0a26
+packetLen(0x0a26, 7) // ZC_REQ_ACH_REWARD_ACK
+
+// Packet: 0x0a27
+packetLen(0x0a27, 8) // ZC_RECOVERY2
+
+// Packet: 0x0a28
+packetLen(0x0a28, 3) // ZC_ACK_OPENSTORE2
+
+// Packet: 0x0a29
+packetLen(0x0a29, 6) // ZC_REQ_AU_BOT
+
+// Packet: 0x0a2a
+packetLen(0x0a2a, 6) // CZ_ACK_AU_BOT
+
+// Packet: 0x0a2b
+packetLen(0x0a2b, 14) // ZC_SE_CASHSHOP_OPEN2
+
+// Packet: 0x0a2c
+packetLen(0x0a2c, 12) // ZC_SE_PC_BUY_TAIWANCASHITEM_RESULT
+
+// Packet: 0x0a2d
+packetLen(0x0a2d, -1) // ZC_EQUIPWIN_MICROSCOPE_V6
+
+// Packet: 0x0a2e
+packetLen(0x0a2e, 6) // CZ_REQ_CHANGE_TITLE
+
+// Packet: 0x0a2f
+packetLen(0x0a2f, 7) // ZC_ACK_CHANGE_TITLE
+
+// Packet: 0x0a30
+packetLen(0x0a30, 106) // ZC_ACK_REQNAMEALL2
+
+// Packet: 0x0a31
+packetLen(0x0a31, -1) // ZC_RESULT_PACKAGE_ITEM_TEST
+
+// Packet: 0x0a32
+packetLen(0x0a32, 2) // ZC_OPEN_RODEX_THROUGH_NPC_ONLY
+
+// Packet: 0x0a33
+packetLen(0x0a33, 7) // ZC_UPDATE_ROULETTE_COIN
+
+// Packet: 0x0a34
+packetLen(0x0a34, 6) // ZC_UPDATE_TAIWANCASH
+
+// Packet: 0x0a35
+packetLen(0x0a35, 4) // CZ_REQ_ONECLICK_ITEMIDENTIFY
+
+// Packet: 0x0a36
+packetLen(0x0a36, 7) // ZC_HP_INFO_TINY
+
+// Packet: 0x0a37
+packetLen(0x0a37, 59) // ZC_ITEM_PICKUP_ACK_V7
+
+// Packet: 0x0a38
+packetLen(0x0a38, 3) // ZC_OPEN_UI
+
+// Packet: 0x0a39
+packetLen(0x0a39, 36) // CH_MAKE_CHAR
+
+// Packet: 0x0a3a
+packetLen(0x0a3a, 12)
+
+// Packet: 0x0a3b
+packetLen(0x0a3b, -1) // ZC_CUSTOM_HAT_EFFECT
+
+// Packet: 0x0a3c
+packetLen(0x0a3c, -1)
+
+// Packet: 0x0a3d
+packetLen(0x0a3d, 18)
+
+// Packet: 0x0a3e
+packetLen(0x0a3e, -1)
+
+// Packet: 0x0a3f
+packetLen(0x0a3f, 9)
+
+// Packet: 0x0a40
+packetLen(0x0a40, 11)
+
+// Packet: 0x0a41
+packetLen(0x0a41, 18) // ZC_AOE_EFFECT_SKILL
+
+// Packet: 0x0a42
+packetLen(0x0a42, 43)
+
+// Packet: 0x0a43
+packetLen(0x0a43, 85) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0a44
+packetLen(0x0a44, -1) // ZC_GROUP_LIST
+
+// Packet: 0x0a46
+packetLen(0x0a46, 14)
+
+// Packet: 0x0a47
+packetLen(0x0a47, 3) // ZC_STYLE_CHANGE_RES
+
+// Packet: 0x0a48
+packetLen(0x0a48, 2)
+
+// Packet: 0x0a49
+#if PACKETVER >= 20170830
+packetLen(0x0a49, 20) // CZ_PRIVATE_AIRSHIP_REQUEST
+#elif PACKETVER >= 20170104
+packetLen(0x0a49, 22) // CZ_PRIVATE_AIRSHIP_REQUEST
+#endif
+
+// Packet: 0x0a4a
+packetLen(0x0a4a, 6) // ZC_PRIVATE_AIRSHIP_RESPONSE
+
+// Packet: 0x0a4b
+packetLen(0x0a4b, 22) // ZC_AIRSHIP_MAPMOVE
+
+// Packet: 0x0a4c
+packetLen(0x0a4c, 28) // ZC_AIRSHIP_SERVERMOVE
+
+// Packet: 0x0a4d
+packetLen(0x0a4d, -1)
+
+// Packet: 0x0a4e
+packetLen(0x0a4e, 4)
+
+// Packet: 0x0a4f
+packetLen(0x0a4f, -1)
+
+// Packet: 0x0a50
+packetLen(0x0a50, 4)
+
+// Packet: 0x0a51
+packetLen(0x0a51, 34) // ZC_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a52
+packetLen(0x0a52, 20)
+
+// Packet: 0x0a53
+packetLen(0x0a53, 10)
+
+// Packet: 0x0a54
+packetLen(0x0a54, -1)
+
+// Packet: 0x0a55
+packetLen(0x0a55, 2)
+
+// Packet: 0x0a56
+packetLen(0x0a56, 6)
+
+// Packet: 0x0a57
+packetLen(0x0a57, 6)
+
+// Packet: 0x0a58
+packetLen(0x0a58, 8)
+
+// Packet: 0x0a59
+packetLen(0x0a59, -1)
+
+// Packet: 0x0a5a
+packetLen(0x0a5a, 2)
+
+// Packet: 0x0a5b
+packetLen(0x0a5b, 7)
+
+// Packet: 0x0a5c
+packetLen(0x0a5c, 18)
+
+// Packet: 0x0a5d
+packetLen(0x0a5d, 6)
+
+// Packet: 0x0a68
+packetLen(0x0a68, 3) // CZ_REQ_OPEN_UI
+
+// Packet: 0x0a69
+packetLen(0x0a69, 6)
+
+// Packet: 0x0a6a
+packetLen(0x0a6a, 12)
+
+// Packet: 0x0a6b
+packetLen(0x0a6b, -1)
+
+// Packet: 0x0a6c
+packetLen(0x0a6c, 7)
+
+// Packet: 0x0a6d
+packetLen(0x0a6d, -1)
+
+// Packet: 0x0a6e
+packetLen(0x0a6e, -1) // CZ_REQ_SEND_RODEX
+
+// Packet: 0x0a6f
+packetLen(0x0a6f, -1) // ZC_FORMATSTRING_MSG_COLOR
+
+// Packet: 0x0a70
+packetLen(0x0a70, 2)
+
+// Packet: 0x0a71
+packetLen(0x0a71, -1)
+
+// Packet: 0x0a72
+packetLen(0x0a72, 61)
+
+// Packet: 0x0a73
+packetLen(0x0a73, 2)
+
+// Packet: 0x0a74
+packetLen(0x0a74, 8)
+
+// Packet: 0x0a76
+packetLen(0x0a76, 80)
+
+// Packet: 0x0a77
+packetLen(0x0a77, 15)
+
+// Packet: 0x0a78
+packetLen(0x0a78, 15)
+
+// Packet: 0x0a79
+packetLen(0x0a79, -1)
+
+// Packet: 0x0a7b
+packetLen(0x0a7b, -1)
+
+// Packet: 0x0a7c
+packetLen(0x0a7c, -1)
+
+// Packet: 0x0a7d
+packetLen(0x0a7d, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x0a7e
+packetLen(0x0a7e, -1) // ZC_OFFLINE_STORE_OWNER_ITEMS_READY
+
+// Packet: 0x0a7f
+packetLen(0x0a7f, -1) // CZ_OFFLINE_STORE_CREATE
+
+// Packet: 0x0a80
+packetLen(0x0a80, 6)
+
+// Packet: 0x0a81
+packetLen(0x0a81, 4)
+
+// Packet: 0x0a82
+packetLen(0x0a82, 46)
+
+// Packet: 0x0a83
+packetLen(0x0a83, 46)
+
+// Packet: 0x0a84
+packetLen(0x0a84, 94) // ZC_GUILD_INFO
+
+// Packet: 0x0a85
+packetLen(0x0a85, 82)
+
+// Packet: 0x0a86
+packetLen(0x0a86, -1)
+
+// Packet: 0x0a87
+packetLen(0x0a87, -1)
+
+// Packet: 0x0a88
+packetLen(0x0a88, 2)
+
+// Packet: 0x0a89
+packetLen(0x0a89, 57) // ZC_NOTIFY_OFFLINE_STORE
+
+// Packet: 0x0a8a
+packetLen(0x0a8a, 6) // ZC_OFFLINE_STORE_VANISH
+
+// Packet: 0x0a8b
+packetLen(0x0a8b, 2)
+
+// Packet: 0x0a8c
+packetLen(0x0a8c, 2)
+
+// Packet: 0x0a8d
+packetLen(0x0a8d, -1) // ZC_OFFLINE_STORE_OWNER_ITEMS
+
+// Packet: 0x0a8e
+packetLen(0x0a8e, 2)
+
+// Packet: 0x0a8f
+packetLen(0x0a8f, 2)
+
+// Packet: 0x0a90
+packetLen(0x0a90, 3)
+
+// Packet: 0x0a91
+packetLen(0x0a91, -1) // ZC_OFFLINE_STORE_ITEMS
+
+// Packet: 0x0a92
+packetLen(0x0a92, -1)
+
+// Packet: 0x0a93
+packetLen(0x0a93, 3)
+
+// Packet: 0x0a94
+packetLen(0x0a94, 2)
+
+// Packet: 0x0a95
+packetLen(0x0a95, 4)
+
+// Packet: 0x0a96
+packetLen(0x0a96, 51) // ZC_ADD_EXCHANGE_ITEM4
+
+// Packet: 0x0a97
+packetLen(0x0a97, 8) // CZ_ALT_EQUIPMENT_EQUIP
+
+// Packet: 0x0a98
+#if PACKETVER >= 20170426
+packetLen(0x0a98, 10) // ZC_ALT_EQUIPMENT_EQUIP
+#elif PACKETVER >= 20170104
+packetLen(0x0a98, 12) // ZC_ALT_EQUIPMENT_EQUIP
+#endif
+
+// Packet: 0x0a99
+#if PACKETVER >= 20170419
+packetLen(0x0a99, 4)
+#elif PACKETVER >= 20170104
+packetLen(0x0a99, 8)
+#endif
+
+// Packet: 0x0a9a
+packetLen(0x0a9a, 10) // ZC_ALT_EQUIPMENT_REMOVE
+
+// Packet: 0x0a9b
+packetLen(0x0a9b, -1) // ZC_ALT_EQUIPMENT_ITEMS
+
+// Packet: 0x0a9c
+packetLen(0x0a9c, 2)
+
+// Packet: 0x0a9d
+packetLen(0x0a9d, 4)
+
+// Packet: 0x0a9e
+packetLen(0x0a9e, 2)
+
+// Packet: 0x0a9f
+packetLen(0x0a9f, 2)
+
+// Packet: 0x0aa0
+packetLen(0x0aa0, 2) // ZC_REFINE_OPEN_WINDOW
+
+// Packet: 0x0aa1
+packetLen(0x0aa1, 4) // CZ_REFINE_ADD_ITEM
+
+// Packet: 0x0aa2
+packetLen(0x0aa2, -1) // ZC_REFINE_ADD_ITEM
+
+// Packet: 0x0aa3
+packetLen(0x0aa3, 7) // CZ_REFINE_ITEM_REQUEST
+
+// Packet: 0x0aa4
+packetLen(0x0aa4, 2) // CZ_REFINE_WINDOW_CLOSE
+
+// Packet: 0x0aa5
+packetLen(0x0aa5, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0aa6
+packetLen(0x0aa6, 36) // ZC_MEMBER_ADD
+
+// Packet: 0x0aa7
+packetLen(0x0aa7, 6) // ZC_INVENTORY_MOVE_FAILED
+
+// Packet: 0x0aa8
+packetLen(0x0aa8, 5)
+
+// Packet: 0x0aa9
+packetLen(0x0aa9, -1)
+
+// Packet: 0x0aaa
+packetLen(0x0aaa, -1)
+
+// Packet: 0x0aab
+packetLen(0x0aab, -1)
+
+// Packet: 0x0aac
+#if PACKETVER >= 20170329
+packetLen(0x0aac, 69)
+#elif PACKETVER >= 20170104
+packetLen(0x0aac, 67)
+#endif
+
+// Packet: 0x0aad
+#if PACKETVER >= 20170118
+packetLen(0x0aad, 51)
+#elif PACKETVER >= 20170104
+packetLen(0x0aad, 47)
+#endif
+
+// Packet: 0x0aae
+packetLen(0x0aae, 2)
+
+// Packet: 0x0aaf
+packetLen(0x0aaf, 6)
+
+// Packet: 0x0ab0
+packetLen(0x0ab0, 6)
+
+// Packet: 0x0ab1
+packetLen(0x0ab1, 14)
+
+// Packet: 0x0ab2
+packetLen(0x0ab2, 7) // ZC_GROUP_ISALIVE
+
+// Packet: 0x0ab3
+#if PACKETVER >= 20170118
+packetLen(0x0ab3, 19)
+#elif PACKETVER >= 20170104
+packetLen(0x0ab3, 15)
+#endif
+
+// Packet: 0x0ab4
+#if PACKETVER >= 20170111
+packetLen(0x0ab4, 4)
+#endif
+
+// Packet: 0x0ab5
+#if PACKETVER >= 20170111
+packetLen(0x0ab5, 2)
+#endif
+
+// Packet: 0x0ab6
+#if PACKETVER >= 20170111
+packetLen(0x0ab6, 6)
+#endif
+
+// Packet: 0x0ab7
+#if PACKETVER >= 20170111
+packetLen(0x0ab7, 4)
+#endif
+
+// Packet: 0x0ab8
+#if PACKETVER >= 20170111
+packetLen(0x0ab8, 2)
+#endif
+
+// Packet: 0x0ab9
+#if PACKETVER >= 20170111
+packetLen(0x0ab9, 39) // ZC_ITEM_PREVIEW
+#endif
+
+// Packet: 0x0aba
+#if PACKETVER >= 20170118
+packetLen(0x0aba, 2)
+#endif
+
+// Packet: 0x0abb
+#if PACKETVER >= 20170118
+packetLen(0x0abb, 2)
+#endif
+
+// Packet: 0x0abc
+#if PACKETVER >= 20170201
+packetLen(0x0abc, -1)
+#endif
+
+// Packet: 0x0abd
+#if PACKETVER >= 20170215
+packetLen(0x0abd, 10) // ZC_PARTY_MEMBER_JOB_LEVEL
+#endif
+
+// Packet: 0x0abe
+#if PACKETVER >= 20170228
+packetLen(0x0abe, -1) // ZC_WARPLIST
+#elif PACKETVER >= 20170222
+packetLen(0x0abe, 116) // ZC_WARPLIST
+#endif
+
+// Packet: 0x0abf
+#if PACKETVER >= 20170228
+packetLen(0x0abf, -1)
+#elif PACKETVER >= 20170222
+packetLen(0x0abf, 114)
+#endif
+
+// Packet: 0x0ac0
+#if PACKETVER >= 20170228
+packetLen(0x0ac0, 26) // CZ_OPEN_RODEXBOX
+#endif
+
+// Packet: 0x0ac1
+#if PACKETVER >= 20170228
+packetLen(0x0ac1, 26) // CZ_REQ_REFRESH_RODEX
+#endif
+
+// Packet: 0x0ac2
+#if PACKETVER >= 20170228
+packetLen(0x0ac2, -1) // ZC_ACK_RODEX_LIST
+#endif
+
+// Packet: 0x0ac3
+#if PACKETVER >= 20170228
+packetLen(0x0ac3, 2)
+#endif
+
+// Packet: 0x0ac4
+#if PACKETVER >= 20170228
+packetLen(0x0ac4, -1) // AC_ACCEPT_LOGIN
+#endif
+
+// Packet: 0x0ac5
+#if PACKETVER >= 20170228
+packetLen(0x0ac5, 156) // HC_NOTIFY_ZONESVR
+#endif
+
+// Packet: 0x0ac6
+#if PACKETVER >= 20170228
+packetLen(0x0ac6, 156)
+#endif
+
+// Packet: 0x0ac7
+#if PACKETVER >= 20170228
+packetLen(0x0ac7, 156) // ZC_NPCACK_SERVERMOVE
+#endif
+
+// Packet: 0x0ac8
+#if PACKETVER >= 20170308
+packetLen(0x0ac8, 2) // ZC_UNKNOWN_CLEAN_ITEMS_LISTS
+#endif
+
+// Packet: 0x0ac9
+#if PACKETVER >= 20170308
+packetLen(0x0ac9, -1)
+#endif
+
+// Packet: 0x0aca
+#if PACKETVER >= 20170322
+packetLen(0x0aca, 3)
+#endif
+
+// Packet: 0x0acb
+#if PACKETVER >= 20170405
+packetLen(0x0acb, 12) // ZC_PAR_CHANGE
+#endif
+
+// Packet: 0x0acc
+#if PACKETVER >= 20170405
+packetLen(0x0acc, 18) // ZC_NOTIFY_EXP
+#endif
+
+// Packet: 0x0acd
+#if PACKETVER >= 20170419
+packetLen(0x0acd, 23)
+#endif
+
+// Packet: 0x0ace
+#if PACKETVER >= 20170502
+packetLen(0x0ace, 4)
+#endif
+
+// Packet: 0x0acf
+#if PACKETVER >= 20171115
+packetLen(0x0acf, 68) // CA_LOGIN_OTP
+#elif PACKETVER >= 20170705
+packetLen(0x0acf, 64) // CA_LOGIN_OTP
+#elif PACKETVER >= 20170621
+packetLen(0x0acf, 57) // CA_LOGIN_OTP
+#elif PACKETVER >= 20170614
+packetLen(0x0acf, 52) // CA_LOGIN_OTP
+#endif
+
+// Packet: 0x0ad0
+#if PACKETVER >= 20170614
+packetLen(0x0ad0, 11) // CA_OTP_CODE
+#endif
+
+// Packet: 0x0ad1
+#if PACKETVER >= 20170614
+packetLen(0x0ad1, -1)
+#endif
+
+// Packet: 0x0ad2
+#if PACKETVER >= 20170719
+packetLen(0x0ad2, 30)
+#endif
+
+// Packet: 0x0ad3
+#if PACKETVER >= 20170719
+packetLen(0x0ad3, -1)
+#endif
+
+// Packet: 0x0ad4
+#if PACKETVER >= 20170719
+packetLen(0x0ad4, -1)
+#endif
+
+// Packet: 0x0ad5
+#if PACKETVER >= 20170719
+packetLen(0x0ad5, 2)
+#endif
+
+// Packet: 0x0ad6
+#if PACKETVER >= 20170719
+packetLen(0x0ad6, 2)
+#endif
+
+// Packet: 0x0ad7
+#if PACKETVER >= 20170719
+packetLen(0x0ad7, 8)
+#endif
+
+// Packet: 0x0ad8
+#if PACKETVER >= 20170719
+packetLen(0x0ad8, 8)
+#endif
+
+// Packet: 0x0ad9
+#if PACKETVER >= 20170719
+packetLen(0x0ad9, -1)
+#endif
+
+// Packet: 0x0ada
+#if PACKETVER >= 20170726
+packetLen(0x0ada, 30) // ZC_REFINE_STATUS
+#endif
+
+// Packet: 0x0adb
+#if PACKETVER >= 20170830
+packetLen(0x0adb, -1)
+#endif
+
+// Packet: 0x0adc
+#if PACKETVER >= 20170906
+packetLen(0x0adc, 6) // ZC_EQUIPWIN_OTHER
+#endif
+
+// Packet: 0x0add
+#if PACKETVER >= 20170913
+packetLen(0x0add, 22) // ZC_ITEM_FALL_ENTRY
+#endif
+
+// Packet: 0x0ade
+#if PACKETVER >= 20170920
+packetLen(0x0ade, 6) // ZC_OVERWEIGHT_PERCENT
+#endif
+
+// Packet: 0x0adf
+#if PACKETVER >= 20170920
+packetLen(0x0adf, 58) // ZC_ACK_REQNAME
+#endif
+
+// Packet: 0x0ae0
+#if PACKETVER >= 20170927
+packetLen(0x0ae0, 30)
+#endif
+
+// Packet: 0x0ae1
+#if PACKETVER >= 20171101
+packetLen(0x0ae1, 28)
+#endif
+
+// Packet: 0x0ae2
+#if PACKETVER >= 20171115
+packetLen(0x0ae2, 7) // ZC_OPEN_UI
+#endif
+
+// Packet: 0x0ae3
+#if PACKETVER >= 20171213
+packetLen(0x0ae3, -1) // AC_LOGIN_OTP
+#endif
+
+// Packet: 0x0ae4
+#if PACKETVER >= 20171206
+packetLen(0x0ae4, 89) // ZC_ADD_MEMBER_TO_GROUP
+#endif
+
+// Packet: 0x0ae5
+#if PACKETVER >= 20171206
+packetLen(0x0ae5, -1) // ZC_GROUP_LIST
+#endif
+
+// Packet: 0x0ae6
+#if PACKETVER >= 20171213
+packetLen(0x0ae6, 30)
+#endif
+
+// Packet: 0x0ae7
+#if PACKETVER >= 20171213
+packetLen(0x0ae7, 30)
+#endif
+
+// Packet: 0x0ae8
+#if PACKETVER >= 20171220
+packetLen(0x0ae8, 2)
+#endif
+
+// Packet: 0x0ae9
+#if PACKETVER >= 20171220
+packetLen(0x0ae9, 64) // HC_SECOND_PASSWD_LOGIN
+#endif
+
+// Packet: 0x0aea
+#if PACKETVER >= 20171227
+packetLen(0x0aea, 2)
+#elif PACKETVER >= 20171220
+packetLen(0x0aea, 11)
+#endif
+
+// Packet: 0x0aeb
+#if PACKETVER >= 20171227
+packetLen(0x0aeb, 11)
+#endif
+
+// Packet: 0x0aec
+#if PACKETVER >= 20171227
+packetLen(0x0aec, 2)
+#endif
+
+
+#endif /* COMMON_PACKETS2017_LEN_MAIN_H */
diff --git a/src/common/packets/packets2017_len_re.h b/src/common/packets/packets2017_len_re.h
new file mode 100644
index 000000000..17751f090
--- /dev/null
+++ b/src/common/packets/packets2017_len_re.h
@@ -0,0 +1,9109 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2017_LEN_RE_H
+#define COMMON_PACKETS2017_LEN_RE_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+#if PACKETVER >= 20170830
+packetLen(0x006d, 157) // HC_ACCEPT_MAKECHAR
+#elif PACKETVER >= 20170104
+packetLen(0x006d, 149) // HC_ACCEPT_MAKECHAR
+#endif
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 22) // CZ_ENTER
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 44) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 10) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, 14)
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+packetLen(0x0094, 19) // CZ_REQNAME
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+packetLen(0x00a7, 9)
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 9) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+packetLen(0x00f7, 17) // CZ_REQUEST_TIME
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+packetLen(0x0113, 25) // CZ_USE_SKILL
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 37) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+#if PACKETVER >= 20171220
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20171213
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20171115
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20171108
+packetLen(0x0202, 6) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20171101
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20171025
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20170913
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20170906
+packetLen(0x0202, 4) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20170719
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20170712
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20170705
+packetLen(0x0202, 36) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20170628
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20170621
+packetLen(0x0202, 12) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20170329
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20170322
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20170315
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20170308
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20170228
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20170222
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20170104
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x020f
+packetLen(0x020f, 10) // CZ_REQ_PVPPOINT
+
+// Packet: 0x0210
+packetLen(0x0210, 22) // ZC_ACK_PVPPOINT
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+
+// Packet: 0x022b
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+
+// Packet: 0x022c
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+
+// Packet: 0x022d
+#if PACKETVER >= 20171108
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20171101
+packetLen(0x022d, 36) // CZ_COMMAND_MER
+#elif PACKETVER >= 20171025
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20171011
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20171002
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170823
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170816
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170809
+packetLen(0x022d, 4) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170801
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170726
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170719
+packetLen(0x022d, 7) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170712
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170705
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170628
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170329
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170322
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170315
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170308
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170228
+packetLen(0x022d, 6) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170125
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170118
+packetLen(0x022d, 10) // CZ_COMMAND_MER
+#elif PACKETVER >= 20170104
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#endif
+
+// Packet: 0x022e
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+
+// Packet: 0x022f
+packetLen(0x022f, 5) // ZC_FEED_MER
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+#if PACKETVER >= 20171101
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20171025
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20171018
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20171011
+packetLen(0x023b, 5) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20170719
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20170712
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20170705
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20170628
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20170621
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20170614
+packetLen(0x023b, 8) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20170419
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20170412
+packetLen(0x023b, 10) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20170329
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20170322
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20170315
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20170308
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20170104
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#endif
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+
+// Packet: 0x0275
+packetLen(0x0275, 37) // CH_ENTER2
+
+// Packet: 0x0276
+packetLen(0x0276, -1) // AC_ACCEPT_LOGIN2
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+#if PACKETVER >= 20171227
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20171220
+packetLen(0x0281, 19) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20171213
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20171129
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20171122
+packetLen(0x0281, 6) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20171101
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20171025
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20171018
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20171011
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170920
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170913
+packetLen(0x0281, 6) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170906
+packetLen(0x0281, 36) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170830
+packetLen(0x0281, 5) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170823
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170816
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170809
+packetLen(0x0281, 8) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170801
+packetLen(0x0281, 5) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170719
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170712
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170705
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170628
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170517
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170502
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170426
+packetLen(0x0281, 36) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170412
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170405
+packetLen(0x0281, 18) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170329
+packetLen(0x0281, 26) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170322
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170315
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170308
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170111
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20170104
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#endif
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+
+// Packet: 0x0288
+packetLen(0x0288, -1) // CZ_PC_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0289
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0296
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0297
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0298
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+
+// Packet: 0x0299
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+
+// Packet: 0x029a
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+
+// Packet: 0x029b
+packetLen(0x029b, 80) // ZC_MER_INIT
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a5
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+
+// Packet: 0x02a6
+packetLen(0x02a6, -1) // ZC_HACKSH_CPX_MSG
+
+// Packet: 0x02a7
+packetLen(0x02a7, -1) // CZ_HACKSH_CPX_MSG
+
+// Packet: 0x02aa
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+
+// Packet: 0x02ab
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+
+// Packet: 0x02ac
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+
+// Packet: 0x02ad
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+
+// Packet: 0x02b0
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+
+// Packet: 0x02b1
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+
+// Packet: 0x02b2
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+
+// Packet: 0x02b3
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+
+// Packet: 0x02b4
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+
+// Packet: 0x02b5
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+
+// Packet: 0x02b6
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+
+// Packet: 0x02b7
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+
+// Packet: 0x02b8
+packetLen(0x02b8, 22) // ZC_ITEM_PICKUP_PARTY
+
+// Packet: 0x02b9
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+
+// Packet: 0x02ba
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+
+// Packet: 0x02bb
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+
+// Packet: 0x02bc
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+
+// Packet: 0x02c1
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+
+// Packet: 0x02c2
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+
+// Packet: 0x02c4
+#if PACKETVER >= 20171206
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20171129
+packetLen(0x02c4, 5) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20171122
+packetLen(0x02c4, -1) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20171002
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20170927
+packetLen(0x02c4, 5) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20170913
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20170906
+packetLen(0x02c4, 90) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20170830
+packetLen(0x02c4, 6) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20170712
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20170705
+packetLen(0x02c4, 18) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20170322
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20170315
+packetLen(0x02c4, 10) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20170222
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20170215
+packetLen(0x02c4, 36) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20170208
+packetLen(0x02c4, 4) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20170104
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#endif
+
+// Packet: 0x02c5
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c6
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+
+// Packet: 0x02c7
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c8
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+
+// Packet: 0x02c9
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+
+// Packet: 0x02ca
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+
+// Packet: 0x02cb
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+
+// Packet: 0x02cc
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+
+// Packet: 0x02cd
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+
+// Packet: 0x02ce
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+
+// Packet: 0x02cf
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+
+// Packet: 0x02d0
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d1
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d2
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d3
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+
+// Packet: 0x02d4
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+
+// Packet: 0x02d5
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+
+// Packet: 0x02d6
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d7
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d8
+packetLen(0x02d8, 10) // CZ_CONFIG
+
+// Packet: 0x02d9
+packetLen(0x02d9, 10) // ZC_CONFIG
+
+// Packet: 0x02da
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+
+// Packet: 0x02db
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+
+// Packet: 0x02dc
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+
+// Packet: 0x02dd
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+
+// Packet: 0x02de
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+
+// Packet: 0x02df
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+
+// Packet: 0x02e0
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+
+// Packet: 0x02e1
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+
+// Packet: 0x02e2
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+
+// Packet: 0x02e3
+packetLen(0x02e3, 22) // CZ_USE_SKILL_NEW_JAPEN
+
+// Packet: 0x02e4
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+
+// Packet: 0x02e5
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+
+// Packet: 0x02e6
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+
+// Packet: 0x02e7
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+
+// Packet: 0x02e8
+packetLen(0x02e8, -1) // ZC_NORMAL_ITEMLIST3
+
+// Packet: 0x02e9
+packetLen(0x02e9, -1) // ZC_CART_NORMAL_ITEMLIST3
+
+// Packet: 0x02ea
+packetLen(0x02ea, -1) // ZC_STORE_NORMAL_ITEMLIST3
+
+// Packet: 0x02eb
+packetLen(0x02eb, 13) // ZC_ACCEPT_ENTER2
+
+// Packet: 0x02ec
+packetLen(0x02ec, 67) // ZC_NOTIFY_MOVEENTRY4
+
+// Packet: 0x02ed
+packetLen(0x02ed, 59) // ZC_NOTIFY_NEWENTRY4
+
+// Packet: 0x02ee
+packetLen(0x02ee, 60) // ZC_NOTIFY_STANDENTRY4
+
+// Packet: 0x02ef
+packetLen(0x02ef, 8) // ZC_NOTIFY_FONT
+
+// Packet: 0x02f0
+packetLen(0x02f0, 10) // ZC_PROGRESS
+
+// Packet: 0x02f1
+packetLen(0x02f1, 2) // CZ_PROGRESS
+
+// Packet: 0x02f2
+packetLen(0x02f2, 2) // ZC_PROGRESS_CANCEL
+
+// Packet: 0x02f3
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+
+// Packet: 0x02f4
+packetLen(0x02f4, 3) // ZC_IRMAIL_SEND_RES
+
+// Packet: 0x02f5
+packetLen(0x02f5, 7) // ZC_IRMAIL_NOTIFY
+
+// Packet: 0x02f6
+packetLen(0x02f6, 7) // CZ_IRMAIL_LIST
+
+// Packet: 0x035c
+packetLen(0x035c, 2) // CZ_OPEN_SIMPLE_CASHSHOP_ITEMLIST
+
+// Packet: 0x035d
+packetLen(0x035d, -1) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+
+// Packet: 0x035e
+packetLen(0x035e, 2) // CZ_CLOSE_WINDOW
+
+// Packet: 0x035f
+#if PACKETVER >= 20171227
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20171220
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20171213
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20171206
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20171129
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20171122
+packetLen(0x035f, 4) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20171115
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20171101
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170927
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170920
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170913
+packetLen(0x035f, 26) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170906
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170830
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170823
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170809
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170801
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170719
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170621
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170517
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170426
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170412
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170322
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170315
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170308
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170228
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170222
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170215
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170201
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170125
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20170104
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#endif
+
+// Packet: 0x0360
+#if PACKETVER >= 20171227
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20171220
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20171206
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20171122
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20171115
+packetLen(0x0360, 19) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20171101
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20171002
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170913
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170906
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170830
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170823
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170809
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170801
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170719
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170621
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170517
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170426
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170412
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170322
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170315
+packetLen(0x0360, 5) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170308
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170228
+packetLen(0x0360, 7) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170201
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170125
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20170104
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#endif
+
+// Packet: 0x0361
+#if PACKETVER >= 20171227
+packetLen(0x0361, 7) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20171206
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20171129
+packetLen(0x0361, 12) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20171101
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20171025
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20171002
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170927
+packetLen(0x0361, 4) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170830
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170823
+packetLen(0x0361, 26) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170816
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170809
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170801
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170719
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170712
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170705
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170628
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170621
+packetLen(0x0361, 6) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170614
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170607
+packetLen(0x0361, -1) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170531
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170329
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170322
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170315
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170308
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20170104
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#endif
+
+// Packet: 0x0362
+#if PACKETVER >= 20171220
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20171213
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20171101
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20171025
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20171018
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20171011
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20171002
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170927
+packetLen(0x0362, -1) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170830
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170823
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170816
+packetLen(0x0362, 90) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170809
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170801
+packetLen(0x0362, 5) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170719
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170712
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170705
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170628
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170517
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170502
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170412
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170405
+packetLen(0x0362, 7) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170329
+packetLen(0x0362, 5) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170322
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170315
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170308
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170228
+packetLen(0x0362, 5) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170111
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20170104
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#endif
+
+// Packet: 0x0363
+#if PACKETVER >= 20171220
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20171213
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20171206
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20171129
+packetLen(0x0363, 26) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20171101
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20171025
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20171018
+packetLen(0x0363, 19) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20171011
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20171002
+packetLen(0x0363, 10) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170906
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170830
+packetLen(0x0363, 18) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170823
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170809
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170801
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170726
+packetLen(0x0363, -1) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170719
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170712
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170705
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170628
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170517
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170502
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170412
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170405
+packetLen(0x0363, 4) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170322
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170315
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170308
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170111
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20170104
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#endif
+
+// Packet: 0x0364
+#if PACKETVER >= 20171220
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20171213
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20171101
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20171011
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170906
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170823
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170816
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170809
+packetLen(0x0364, 26) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170726
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170719
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170712
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170705
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170628
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170621
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170614
+packetLen(0x0364, 5) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170607
+packetLen(0x0364, 36) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170531
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170524
+packetLen(0x0364, 26) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170502
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170329
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170322
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170315
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170308
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170125
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170118
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170111
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20170104
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#endif
+
+// Packet: 0x0365
+#if PACKETVER >= 20171220
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20171213
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20171206
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20171129
+packetLen(0x0365, 6) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20171122
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20171115
+packetLen(0x0365, 6) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20171101
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20171025
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20171018
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20171011
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170830
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170823
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170809
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170801
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170719
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170712
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170705
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170628
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170621
+packetLen(0x0365, -1) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170517
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170502
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170419
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170412
+packetLen(0x0365, 6) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170329
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170322
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170315
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170308
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170111
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20170104
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#endif
+
+// Packet: 0x0366
+#if PACKETVER >= 20171227
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20171220
+packetLen(0x0366, 8) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20171129
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20171122
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20171115
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20171101
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20171002
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170927
+packetLen(0x0366, 19) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170913
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170906
+packetLen(0x0366, 26) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170830
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170823
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170816
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170809
+packetLen(0x0366, 26) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170801
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170726
+packetLen(0x0366, 19) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170719
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170628
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170621
+packetLen(0x0366, 18) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170517
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170426
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170412
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170322
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170315
+packetLen(0x0366, 6) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170308
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170228
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170222
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170215
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170208
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170125
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20170104
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#endif
+
+// Packet: 0x0367
+#if PACKETVER >= 20170621
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20170614
+packetLen(0x0367, 6) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20170524
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20170517
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20170322
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20170315
+packetLen(0x0367, 90) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20170215
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20170208
+packetLen(0x0367, -1) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20170104
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#endif
+
+// Packet: 0x0368
+#if PACKETVER >= 20171227
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20171220
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20171129
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20171122
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20171115
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20171108
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20171101
+packetLen(0x0368, 19) // CZ_REQNAME2
+#elif PACKETVER >= 20171002
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20170913
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20170906
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20170830
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20170823
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20170809
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20170801
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20170726
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20170719
+packetLen(0x0368, 4) // CZ_REQNAME2
+#elif PACKETVER >= 20170621
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20170531
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20170524
+packetLen(0x0368, 36) // CZ_REQNAME2
+#elif PACKETVER >= 20170517
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20170502
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20170412
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20170322
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20170315
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20170308
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20170228
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20170222
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20170215
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20170201
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20170125
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20170104
+packetLen(0x0368, 6) // CZ_REQNAME2
+#endif
+
+// Packet: 0x0369
+#if PACKETVER >= 20171227
+packetLen(0x0369, 5) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20171220
+packetLen(0x0369, -1) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20171129
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20171122
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20171115
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20171108
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20171101
+packetLen(0x0369, -1) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20171002
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170927
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170920
+packetLen(0x0369, 6) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170913
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170906
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170830
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170823
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170809
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170801
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170726
+packetLen(0x0369, 10) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170719
+packetLen(0x0369, 5) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170621
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170607
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170531
+packetLen(0x0369, 10) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170517
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170426
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170412
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170405
+packetLen(0x0369, 6) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170322
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170315
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170308
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170228
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170222
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170215
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170201
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170125
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20170104
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#endif
+
+// Packet: 0x03dd
+packetLen(0x03dd, 18) // AHC_GAME_GUARD
+
+// Packet: 0x03de
+packetLen(0x03de, 18) // CAH_ACK_GAME_GUARD
+
+// Packet: 0x0436
+#if PACKETVER >= 20171122
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20171115
+packetLen(0x0436, 6) // CZ_ENTER2
+#elif PACKETVER >= 20171101
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20171025
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20171018
+packetLen(0x0436, 6) // CZ_ENTER2
+#elif PACKETVER >= 20171011
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20170927
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20170920
+packetLen(0x0436, -1) // CZ_ENTER2
+#elif PACKETVER >= 20170830
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20170823
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20170719
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20170712
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20170705
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20170628
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20170517
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20170502
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20170329
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20170322
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20170315
+packetLen(0x0436, -1) // CZ_ENTER2
+#elif PACKETVER >= 20170308
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20170125
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20170118
+packetLen(0x0436, 5) // CZ_ENTER2
+#elif PACKETVER >= 20170111
+packetLen(0x0436, 8) // CZ_ENTER2
+#elif PACKETVER >= 20170104
+packetLen(0x0436, 4) // CZ_ENTER2
+#endif
+
+// Packet: 0x0437
+#if PACKETVER >= 20171227
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20171220
+packetLen(0x0437, 18) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20171129
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20171122
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20171115
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20171101
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20171018
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20171011
+packetLen(0x0437, 36) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20171002
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170920
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170913
+packetLen(0x0437, -1) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170906
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170830
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170823
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170809
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170801
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170719
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170621
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170614
+packetLen(0x0437, 36) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170524
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170517
+packetLen(0x0437, 7) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170426
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170412
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170322
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170315
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170308
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170228
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170222
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170215
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170208
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170125
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20170104
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#endif
+
+// Packet: 0x0438
+#if PACKETVER >= 20171227
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20171220
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20171129
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20171122
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20171115
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20171108
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20171101
+packetLen(0x0438, 6) // CZ_USE_SKILL2
+#elif PACKETVER >= 20171011
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20171002
+packetLen(0x0438, 5) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170913
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170906
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170830
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170823
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170816
+packetLen(0x0438, 7) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170809
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170801
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170726
+packetLen(0x0438, 26) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170719
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170621
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170517
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170426
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170412
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170322
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170315
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170308
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170228
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170222
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170215
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170201
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170125
+packetLen(0x0438, 7) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170118
+packetLen(0x0438, 19) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170111
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20170104
+packetLen(0x0438, 19) // CZ_USE_SKILL2
+#endif
+
+// Packet: 0x0439
+packetLen(0x0439, 8) // CZ_USE_ITEM2
+
+// Packet: 0x043d
+packetLen(0x043d, 8) // ZC_SKILL_POSTDELAY
+
+// Packet: 0x043e
+packetLen(0x043e, -1) // ZC_SKILL_POSTDELAY_LIST
+
+// Packet: 0x043f
+packetLen(0x043f, 25) // ZC_MSG_STATE_CHANGE2
+
+// Packet: 0x0440
+packetLen(0x0440, 10) // ZC_MILLENNIUMSHIELD
+
+// Packet: 0x0441
+packetLen(0x0441, 4) // ZC_SKILLINFO_DELETE
+
+// Packet: 0x0442
+packetLen(0x0442, -1) // ZC_SKILL_SELECT_REQUEST
+
+// Packet: 0x0443
+packetLen(0x0443, 8) // CZ_SKILL_SELECT_RESPONSE
+
+// Packet: 0x0444
+packetLen(0x0444, -1) // ZC_SIMPLE_CASH_POINT_ITEMLIST
+
+// Packet: 0x0445
+packetLen(0x0445, 10) // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0446
+packetLen(0x0446, 14) // ZC_QUEST_NOTIFY_EFFECT
+
+// Packet: 0x0447
+packetLen(0x0447, 2) // CZ_BLOCKING_PLAY_CANCEL
+
+// Packet: 0x0448
+packetLen(0x0448, -1) // HC_CHARACTER_LIST
+
+// Packet: 0x0449
+packetLen(0x0449, 4) // ZC_HACKSH_ERROR_MSG
+
+// Packet: 0x044a
+packetLen(0x044a, 6) // CZ_CLIENT_VERSION
+
+// Packet: 0x044b
+packetLen(0x044b, 2) // CZ_CLOSE_SIMPLECASH_SHOP
+
+// Packet: 0x07d7
+packetLen(0x07d7, 8) // CZ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d8
+packetLen(0x07d8, 8) // ZC_REQ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d9
+packetLen(0x07d9, 268) // ZC_SHORTCUT_KEY_LIST_V2
+
+// Packet: 0x07da
+packetLen(0x07da, 6) // CZ_CHANGE_GROUP_MASTER
+
+// Packet: 0x07db
+packetLen(0x07db, 8) // ZC_HO_PAR_CHANGE
+
+// Packet: 0x07dc
+packetLen(0x07dc, 6) // CZ_SEEK_PARTY
+
+// Packet: 0x07dd
+packetLen(0x07dd, 54) // ZC_SEEK_PARTY
+
+// Packet: 0x07de
+packetLen(0x07de, 30) // CZ_SEEK_PARTY_MEMBER
+
+// Packet: 0x07df
+packetLen(0x07df, 54) // ZC_SEEK_PARTY_MEMBER
+
+// Packet: 0x07e0
+packetLen(0x07e0, 58) // ZC_ES_NOTI_MYINFO
+
+// Packet: 0x07e1
+packetLen(0x07e1, 15) // ZC_SKILLINFO_UPDATE2
+
+// Packet: 0x07e2
+packetLen(0x07e2, 8) // ZC_MSG_VALUE
+
+// Packet: 0x07e3
+packetLen(0x07e3, 6) // ZC_ITEMLISTWIN_OPEN
+
+// Packet: 0x07e4
+#if PACKETVER >= 20171220
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20171213
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20171115
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20171108
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20171101
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20171025
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20171018
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20171011
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170920
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170913
+packetLen(0x07e4, 8) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170830
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170823
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170809
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170801
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170726
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170712
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170705
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170628
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170621
+packetLen(0x07e4, 26) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170614
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170607
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170531
+packetLen(0x07e4, 5) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170517
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170502
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170329
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170322
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170315
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170308
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170111
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20170104
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#endif
+
+// Packet: 0x07e5
+packetLen(0x07e5, 4) // CH_ENTER_CHECKBOT
+
+// Packet: 0x07e6
+packetLen(0x07e6, 8) // ZC_MSG_SKILL
+
+// Packet: 0x07e7
+packetLen(0x07e7, 32) // CH_CHECKBOT
+
+// Packet: 0x07e8
+packetLen(0x07e8, -1) // HC_CHECKBOT
+
+// Packet: 0x07e9
+packetLen(0x07e9, 5) // HC_CHECKBOT_RESULT
+
+// Packet: 0x07ea
+packetLen(0x07ea, 2) // CZ_BATTLE_FIELD_LIST
+
+// Packet: 0x07eb
+packetLen(0x07eb, -1) // ZC_BATTLE_FIELD_LIST
+
+// Packet: 0x07ec
+#if PACKETVER >= 20171220
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20171213
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20171101
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20171025
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20171018
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20171011
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170927
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170920
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170830
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170823
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170809
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170801
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170719
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170712
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170705
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170628
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170607
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170531
+packetLen(0x07ec, -1) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170517
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170502
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170329
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170322
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170315
+packetLen(0x07ec, 6) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170308
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170111
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20170104
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#endif
+
+// Packet: 0x07ed
+packetLen(0x07ed, 10) // ZC_JOIN_BATTLE_FIELD
+
+// Packet: 0x07ee
+packetLen(0x07ee, 6) // CZ_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07ef
+packetLen(0x07ef, 8) // ZC_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07f0
+packetLen(0x07f0, 6) // CZ_REQ_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f1
+packetLen(0x07f1, 18) // ZC_ACK_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f2
+packetLen(0x07f2, 8) // ZC_BATTLE_NOTI_START_STEP
+
+// Packet: 0x07f3
+packetLen(0x07f3, 6) // ZC_BATTLE_JOIN_NOTI_DEFER
+
+// Packet: 0x07f4
+packetLen(0x07f4, 3) // ZC_BATTLE_JOIN_DISABLE_STATE
+
+// Packet: 0x07f5
+packetLen(0x07f5, 6) // CZ_GM_FULLSTRIP
+
+// Packet: 0x07f6
+packetLen(0x07f6, 14) // ZC_NOTIFY_EXP
+
+// Packet: 0x07f7
+packetLen(0x07f7, -1) // ZC_NOTIFY_MOVEENTRY7
+
+// Packet: 0x07f8
+packetLen(0x07f8, -1) // ZC_NOTIFY_NEWENTRY5
+
+// Packet: 0x07f9
+packetLen(0x07f9, -1) // ZC_NOTIFY_STANDENTRY5
+
+// Packet: 0x07fa
+packetLen(0x07fa, 8) // ZC_DELETE_ITEM_FROM_BODY
+
+// Packet: 0x07fb
+packetLen(0x07fb, 25) // ZC_USESKILL_ACK2
+
+// Packet: 0x07fc
+packetLen(0x07fc, 10) // ZC_CHANGE_GROUP_MASTER
+
+// Packet: 0x07fd
+packetLen(0x07fd, -1) // ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN
+
+// Packet: 0x07fe
+packetLen(0x07fe, 26) // ZC_PLAY_NPC_BGM
+
+// Packet: 0x0800
+packetLen(0x0800, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0801
+packetLen(0x0801, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0802
+#if PACKETVER >= 20171227
+packetLen(0x0802, 6) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20171220
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20171213
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20171122
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20171115
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20171101
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20171025
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20171018
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20171011
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170913
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170906
+packetLen(0x0802, 5) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170830
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170823
+packetLen(0x0802, 5) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170816
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170809
+packetLen(0x0802, -1) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170801
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170719
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170712
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170705
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170628
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170621
+packetLen(0x0802, 90) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170531
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170524
+packetLen(0x0802, 6) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170517
+packetLen(0x0802, 18) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170426
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170329
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170322
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170315
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170308
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170111
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20170104
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// Packet: 0x0803
+packetLen(0x0803, 4) // ZC_PARTY_BOOKING_ACK_REGISTER
+
+// Packet: 0x0804
+packetLen(0x0804, 14) // CZ_PARTY_BOOKING_REQ_SEARCH
+
+// Packet: 0x0805
+packetLen(0x0805, -1) // ZC_PARTY_BOOKING_ACK_SEARCH
+
+// Packet: 0x0806
+packetLen(0x0806, 2) // CZ_PARTY_BOOKING_REQ_DELETE
+
+// Packet: 0x0807
+packetLen(0x0807, 4) // ZC_PARTY_BOOKING_ACK_DELETE
+
+// Packet: 0x0808
+packetLen(0x0808, 14) // CZ_PARTY_BOOKING_REQ_UPDATE
+
+// Packet: 0x0809
+packetLen(0x0809, 50) // ZC_PARTY_BOOKING_NOTIFY_INSERT
+
+// Packet: 0x080a
+packetLen(0x080a, 18) // ZC_PARTY_BOOKING_NOTIFY_UPDATE
+
+// Packet: 0x080b
+packetLen(0x080b, 6) // ZC_PARTY_BOOKING_NOTIFY_DELETE
+
+// Packet: 0x080c
+packetLen(0x080c, 2) // CZ_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080d
+packetLen(0x080d, 3) // ZC_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080e
+packetLen(0x080e, 14) // ZC_NOTIFY_HP_TO_GROUPM_R2
+
+// Packet: 0x080f
+packetLen(0x080f, 20) // ZC_ADD_EXCHANGE_ITEM2
+
+// Packet: 0x0810
+packetLen(0x0810, 3) // ZC_OPEN_BUYING_STORE
+
+// Packet: 0x0811
+#if PACKETVER >= 20171227
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20171220
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20171129
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20171122
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20171115
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20171101
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20171002
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170913
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170906
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170830
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170823
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170809
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170801
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170719
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170621
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170517
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170426
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170419
+packetLen(0x0811, 5) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170412
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170322
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170315
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170308
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170228
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170222
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170215
+packetLen(0x0811, 19) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170208
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170201
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170125
+packetLen(0x0811, 19) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20170104
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#endif
+
+// Packet: 0x0812
+packetLen(0x0812, 8) // ZC_FAILED_OPEN_BUYING_STORE_TO_BUYER
+
+// Packet: 0x0813
+packetLen(0x0813, -1) // ZC_MYITEMLIST_BUYING_STORE
+
+// Packet: 0x0814
+packetLen(0x0814, 86) // ZC_BUYING_STORE_ENTRY
+
+// Packet: 0x0815
+#if PACKETVER >= 20171227
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20171220
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20171129
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20171122
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20171115
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20171108
+packetLen(0x0815, 36) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20171101
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20171002
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170913
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170906
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170830
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170823
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170809
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170801
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170719
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170621
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170524
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170517
+packetLen(0x0815, 10) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170426
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170412
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170322
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170315
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170308
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170228
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170222
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170215
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170201
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170125
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20170104
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#endif
+
+// Packet: 0x0816
+packetLen(0x0816, 6) // ZC_DISAPPEAR_BUYING_STORE_ENTRY
+
+// Packet: 0x0817
+#if PACKETVER >= 20170920
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20170913
+packetLen(0x0817, 7) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20170524
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20170517
+packetLen(0x0817, 10) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20170104
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#endif
+
+// Packet: 0x0818
+packetLen(0x0818, -1) // ZC_ACK_ITEMLIST_BUYING_STORE
+
+// Packet: 0x0819
+#if PACKETVER >= 20171227
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20171220
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20171129
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20171122
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20171115
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20171108
+packetLen(0x0819, 90) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20171101
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20171002
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170913
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170906
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170830
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170823
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170809
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170801
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170719
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170621
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170607
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170531
+packetLen(0x0819, 6) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170517
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170426
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170419
+packetLen(0x0819, 12) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170412
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170405
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170329
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170322
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170315
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170308
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170228
+packetLen(0x0819, 12) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170215
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170201
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170125
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20170104
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#endif
+
+// Packet: 0x081a
+packetLen(0x081a, 4) // ZC_FAILED_TRADE_BUYING_STORE_TO_BUYER
+
+// Packet: 0x081b
+packetLen(0x081b, 10) // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+
+// Packet: 0x081c
+packetLen(0x081c, 10) // ZC_ITEM_DELETE_BUYING_STORE
+
+// Packet: 0x081d
+packetLen(0x081d, 22) // ZC_EL_INIT
+
+// Packet: 0x081e
+packetLen(0x081e, 8) // ZC_EL_PAR_CHANGE
+
+// Packet: 0x081f
+packetLen(0x081f, -1) // ZC_BROADCAST4
+
+// Packet: 0x0820
+packetLen(0x0820, 11) // ZC_COSTUME_SPRITE_CHANGE
+
+// Packet: 0x0821
+packetLen(0x0821, 2) // AC_OTP_USER
+
+// Packet: 0x0822
+packetLen(0x0822, 9) // CA_OTP_AUTH_REQ
+
+// Packet: 0x0823
+packetLen(0x0823, -1) // AC_OTP_AUTH_ACK
+
+// Packet: 0x0824
+packetLen(0x0824, 6) // ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER
+
+// Packet: 0x0825
+packetLen(0x0825, -1) // CA_SSO_LOGIN_REQ
+
+// Packet: 0x0827
+packetLen(0x0827, 6) // CH_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0828
+packetLen(0x0828, 14) // HC_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0829
+packetLen(0x0829, 12) // CH_DELETE_CHAR3
+
+// Packet: 0x082a
+packetLen(0x082a, 10) // HC_DELETE_CHAR3
+
+// Packet: 0x082b
+packetLen(0x082b, 6) // CH_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082c
+packetLen(0x082c, 10) // HC_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082d
+packetLen(0x082d, -1) // HC_ACCEPT_ENTER2
+
+// Packet: 0x0835
+#if PACKETVER >= 20171108
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20171101
+packetLen(0x0835, 6) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20170920
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20170913
+packetLen(0x0835, 19) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20170816
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20170809
+packetLen(0x0835, 6) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20170412
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20170405
+packetLen(0x0835, 5) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20170104
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#endif
+
+// Packet: 0x0836
+packetLen(0x0836, -1) // ZC_SEARCH_STORE_INFO_ACK
+
+// Packet: 0x0837
+packetLen(0x0837, 3) // ZC_SEARCH_STORE_INFO_FAILED
+
+// Packet: 0x0838
+#if PACKETVER >= 20171227
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20171220
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20171206
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20171129
+packetLen(0x0838, 26) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20171122
+packetLen(0x0838, 8) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20171115
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20171108
+packetLen(0x0838, -1) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20171101
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20171002
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170913
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170906
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170830
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170823
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170809
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170801
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170719
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170628
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170621
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170614
+packetLen(0x0838, 10) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170517
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170426
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170419
+packetLen(0x0838, 6) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170412
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170322
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170315
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170308
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170228
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170222
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170215
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170201
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170125
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20170104
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#endif
+
+// Packet: 0x0839
+packetLen(0x0839, 66) // ZC_ACK_BAN_GUILD_SSO
+
+// Packet: 0x083a
+packetLen(0x083a, 5) // ZC_OPEN_SEARCH_STORE_INFO
+
+// Packet: 0x083b
+packetLen(0x083b, 2) // CZ_CLOSE_SEARCH_STORE_INFO
+
+// Packet: 0x083c
+#if PACKETVER >= 20171227
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20171220
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20171129
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20171122
+packetLen(0x083c, 5) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20171115
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20171101
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20171002
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170913
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170906
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170830
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170823
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170809
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170801
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170719
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170621
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170614
+packetLen(0x083c, 7) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170517
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170426
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170412
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170322
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170315
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170308
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170228
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170222
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170215
+packetLen(0x083c, 7) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170201
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170125
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20170104
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#endif
+
+// Packet: 0x083d
+packetLen(0x083d, 6) // ZC_SSILIST_ITEM_CLICK_ACK
+
+// Packet: 0x083e
+packetLen(0x083e, 26) // AC_REFUSE_LOGIN2
+
+// Packet: 0x0840
+packetLen(0x0840, -1) // HC_NOTIFY_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0841
+packetLen(0x0841, 4) // CH_SELECT_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0842
+packetLen(0x0842, 6) // CZ_RECALL_SSO
+
+// Packet: 0x0843
+packetLen(0x0843, 6) // CZ_REMOVE_AID_SSO
+
+// Packet: 0x0844
+packetLen(0x0844, 2) // CZ_SE_CASHSHOP_OPEN
+
+// Packet: 0x0845
+packetLen(0x0845, 10) // ZC_SE_CASHSHOP_OPEN
+
+// Packet: 0x0846
+packetLen(0x0846, 4) // CZ_REQ_SE_CASH_TAB_CODE
+
+// Packet: 0x0847
+packetLen(0x0847, -1) // ZC_ACK_SE_CASH_ITEM_LIST
+
+// Packet: 0x0848
+packetLen(0x0848, -1) // CZ_SE_PC_BUY_CASHITEM_LIST
+
+// Packet: 0x0849
+packetLen(0x0849, 16) // ZC_SE_PC_BUY_CASHITEM_RESULT
+
+// Packet: 0x084a
+packetLen(0x084a, 2) // CZ_SE_CASHSHOP_CLOSE
+
+// Packet: 0x084b
+packetLen(0x084b, 19) // ZC_ITEM_FALL_ENTRY4
+
+// Packet: 0x084c
+packetLen(0x084c, 10) // CZ_MACRO_USE_SKILL
+
+// Packet: 0x084d
+packetLen(0x084d, 10) // CZ_MACRO_USE_SKILL_TOGROUND
+
+// Packet: 0x084e
+packetLen(0x084e, 5) // CZ_MACRO_REQUEST_MOVE
+
+// Packet: 0x084f
+packetLen(0x084f, 6) // CZ_MACRO_ITEM_PICKUP
+
+// Packet: 0x0850
+packetLen(0x0850, 7) // CZ_MACRO_REQUEST_ACT
+
+// Packet: 0x0851
+packetLen(0x0851, -1) // ZC_GPK_DYNCODE
+
+// Packet: 0x0852
+packetLen(0x0852, 2) // CZ_GPK_DYNCODE_RELOAD
+
+// Packet: 0x0853
+packetLen(0x0853, -1) // ZC_GPK_AUTH
+
+// Packet: 0x0854
+packetLen(0x0854, -1) // CZ_GPK_AUTH
+
+// Packet: 0x0855
+packetLen(0x0855, 6) // ZC_MACRO_ITEMPICKUP_FAIL
+
+// Packet: 0x0856
+packetLen(0x0856, -1) // ZC_NOTIFY_MOVEENTRY8
+
+// Packet: 0x0857
+packetLen(0x0857, -1) // ZC_NOTIFY_STANDENTRY7
+
+// Packet: 0x0858
+packetLen(0x0858, -1) // ZC_NOTIFY_NEWENTRY6
+
+// Packet: 0x0859
+packetLen(0x0859, -1) // ZC_EQUIPWIN_MICROSCOPE2
+
+// Packet: 0x085a
+#if PACKETVER >= 20170927
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170920
+packetLen(0x085a, 5) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170823
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170816
+packetLen(0x085a, 6) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170726
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170719
+packetLen(0x085a, 6) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170614
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170607
+packetLen(0x085a, 5) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170426
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170419
+packetLen(0x085a, 7) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170111
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170104
+packetLen(0x085a, 26) // ZC_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x085b
+#if PACKETVER >= 20171129
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20171122
+packetLen(0x085b, 6) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20171108
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20171101
+packetLen(0x085b, 5) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20170607
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20170531
+packetLen(0x085b, 8) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20170104
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x085c
+#if PACKETVER >= 20171002
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20170927
+packetLen(0x085c, 10) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20170322
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20170315
+packetLen(0x085c, 4) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20170222
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20170215
+packetLen(0x085c, 6) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20170208
+packetLen(0x085c, 26) // ZC_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20170104
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+#endif
+
+// Packet: 0x085d
+#if PACKETVER >= 20171115
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20171108
+packetLen(0x085d, 12) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20170628
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20170621
+packetLen(0x085d, 5) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20170405
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20170329
+packetLen(0x085d, 36) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20170208
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20170201
+packetLen(0x085d, 18) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20170118
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20170111
+packetLen(0x085d, 5) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20170104
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x085e
+#if PACKETVER >= 20171227
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20171220
+packetLen(0x085e, -1) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170726
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170719
+packetLen(0x085e, -1) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170614
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170607
+packetLen(0x085e, -1) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170531
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170524
+packetLen(0x085e, 7) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170426
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170419
+packetLen(0x085e, 5) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170308
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170228
+packetLen(0x085e, 90) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170208
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170201
+packetLen(0x085e, 5) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170104
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x085f
+#if PACKETVER >= 20170607
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170524
+packetLen(0x085f, 6) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170412
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170405
+packetLen(0x085f, 8) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170228
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170222
+packetLen(0x085f, 26) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170104
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x0860
+#if PACKETVER >= 20171220
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20171213
+packetLen(0x0860, 19) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20171108
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20171101
+packetLen(0x0860, 6) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170920
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170906
+packetLen(0x0860, 6) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170621
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170614
+packetLen(0x0860, 6) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170531
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170524
+packetLen(0x0860, 6) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170412
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170405
+packetLen(0x0860, -1) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170215
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170208
+packetLen(0x0860, 5) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170104
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x0861
+#if PACKETVER >= 20171227
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20171220
+packetLen(0x0861, -1) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20170927
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20170920
+packetLen(0x0861, 26) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20170607
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20170531
+packetLen(0x0861, 26) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20170104
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x0862
+#if PACKETVER >= 20171206
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20171129
+packetLen(0x0862, 6) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20171122
+packetLen(0x0862, -1) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170927
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170920
+packetLen(0x0862, 10) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170823
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170816
+packetLen(0x0862, 10) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170614
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170607
+packetLen(0x0862, 6) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170426
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170419
+packetLen(0x0862, 26) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170125
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170118
+packetLen(0x0862, 8) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170104
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x0863
+#if PACKETVER >= 20171115
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20171108
+packetLen(0x0863, 5) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170726
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170719
+packetLen(0x0863, 6) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170705
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170628
+packetLen(0x0863, 36) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170614
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170607
+packetLen(0x0863, 6) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170419
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170412
+packetLen(0x0863, -1) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170322
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170315
+packetLen(0x0863, 5) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170308
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170228
+packetLen(0x0863, -1) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170104
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x0864
+#if PACKETVER >= 20170927
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20170920
+packetLen(0x0864, 36) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20170614
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20170607
+packetLen(0x0864, 6) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20170531
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20170524
+packetLen(0x0864, 6) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20170412
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20170405
+packetLen(0x0864, 26) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20170104
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x0865
+#if PACKETVER >= 20170927
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20170920
+packetLen(0x0865, -1) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20170913
+packetLen(0x0865, 26) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20170906
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20170830
+packetLen(0x0865, 5) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20170621
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20170614
+packetLen(0x0865, 4) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20170412
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20170405
+packetLen(0x0865, 5) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20170125
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20170118
+packetLen(0x0865, 5) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20170104
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0866
+#if PACKETVER >= 20170920
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170906
+packetLen(0x0866, -1) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170621
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170614
+packetLen(0x0866, 6) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170531
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170524
+packetLen(0x0866, -1) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170502
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170426
+packetLen(0x0866, -1) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170228
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170222
+packetLen(0x0866, 6) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170104
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0867
+#if PACKETVER >= 20171213
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20171206
+packetLen(0x0867, 6) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20171129
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20171122
+packetLen(0x0867, 19) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20170621
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20170614
+packetLen(0x0867, 26) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20170104
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0868
+#if PACKETVER >= 20170816
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20170809
+packetLen(0x0868, 7) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20170607
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20170531
+packetLen(0x0868, 4) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20170524
+packetLen(0x0868, 8) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20170517
+packetLen(0x0868, 90) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20170426
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20170419
+packetLen(0x0868, -1) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20170104
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0869
+#if PACKETVER >= 20170419
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20170412
+packetLen(0x0869, 18) // ZC_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20170104
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x086a
+#if PACKETVER >= 20171213
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20171206
+packetLen(0x086a, 4) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20171025
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20171018
+packetLen(0x086a, 4) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170927
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170920
+packetLen(0x086a, 26) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170906
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170830
+packetLen(0x086a, 26) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170426
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170419
+packetLen(0x086a, 18) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170322
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170315
+packetLen(0x086a, 8) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170104
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x086b
+#if PACKETVER >= 20170308
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20170228
+packetLen(0x086b, 19) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20170104
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x086c
+#if PACKETVER >= 20171108
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20171101
+packetLen(0x086c, 10) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20170927
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20170920
+packetLen(0x086c, 6) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20170913
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20170906
+packetLen(0x086c, 8) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20170830
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20170823
+packetLen(0x086c, 19) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20170621
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20170614
+packetLen(0x086c, -1) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20170104
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x086d
+#if PACKETVER >= 20171206
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20171129
+packetLen(0x086d, 18) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20171122
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20171115
+packetLen(0x086d, 4) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20170830
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20170823
+packetLen(0x086d, 36) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20170531
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20170524
+packetLen(0x086d, 5) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20170419
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20170412
+packetLen(0x086d, 8) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20170104
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x086e
+#if PACKETVER >= 20171213
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20171206
+packetLen(0x086e, 18) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20170816
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20170809
+packetLen(0x086e, 5) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20170726
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20170719
+packetLen(0x086e, 26) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20170201
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20170125
+packetLen(0x086e, 26) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20170104
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x086f
+#if PACKETVER >= 20171122
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20171115
+packetLen(0x086f, -1) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170816
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170809
+packetLen(0x086f, 5) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170502
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170426
+packetLen(0x086f, 8) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170412
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170405
+packetLen(0x086f, 26) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170125
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170118
+packetLen(0x086f, 6) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170104
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x0870
+#if PACKETVER >= 20170228
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20170222
+packetLen(0x0870, 18) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20170104
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x0871
+#if PACKETVER >= 20170614
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20170607
+packetLen(0x0871, 19) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20170228
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20170222
+packetLen(0x0871, 4) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20170104
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x0872
+#if PACKETVER >= 20171227
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20171220
+packetLen(0x0872, 10)
+#elif PACKETVER >= 20171108
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20171101
+packetLen(0x0872, 26)
+#elif PACKETVER >= 20170426
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20170419
+packetLen(0x0872, 8)
+#elif PACKETVER >= 20170322
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20170315
+packetLen(0x0872, 26)
+#elif PACKETVER >= 20170104
+packetLen(0x0872, 2)
+#endif
+
+// Packet: 0x0873
+#if PACKETVER >= 20171227
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20171220
+packetLen(0x0873, 6) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20171002
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170927
+packetLen(0x0873, 6) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170801
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170726
+packetLen(0x0873, 6) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170614
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170607
+packetLen(0x0873, 8) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170531
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170524
+packetLen(0x0873, 19) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170308
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170228
+packetLen(0x0873, -1) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170125
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170118
+packetLen(0x0873, 4) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170104
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x0874
+#if PACKETVER >= 20170801
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20170726
+packetLen(0x0874, -1) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20170308
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20170228
+packetLen(0x0874, -1) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20170104
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x0875
+#if PACKETVER >= 20171002
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20170927
+packetLen(0x0875, 12) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20170920
+packetLen(0x0875, 4) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20170906
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20170830
+packetLen(0x0875, 4) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20170614
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20170607
+packetLen(0x0875, 12) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20170531
+packetLen(0x0875, 10) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20170517
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20170502
+packetLen(0x0875, 36) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20170208
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20170201
+packetLen(0x0875, 6) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20170104
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x0876
+#if PACKETVER >= 20171206
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20171129
+packetLen(0x0876, 4) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20171108
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20171101
+packetLen(0x0876, 5) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20170816
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20170809
+packetLen(0x0876, 10) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20170222
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20170215
+packetLen(0x0876, 26) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20170201
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20170125
+packetLen(0x0876, 5) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20170104
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x0877
+#if PACKETVER >= 20171129
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20171122
+packetLen(0x0877, -1) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170621
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170614
+packetLen(0x0877, 18) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170228
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170222
+packetLen(0x0877, 8) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170201
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170125
+packetLen(0x0877, 6) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170118
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170111
+packetLen(0x0877, 26) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170104
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x0878
+#if PACKETVER >= 20171206
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20171129
+packetLen(0x0878, 36) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20171115
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20171108
+packetLen(0x0878, 26) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170801
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170726
+packetLen(0x0878, 7) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170607
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170531
+packetLen(0x0878, 26) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170419
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170412
+packetLen(0x0878, 5) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170104
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x0879
+#if PACKETVER >= 20170712
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170705
+packetLen(0x0879, 8) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170621
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170614
+packetLen(0x0879, 8) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170419
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170412
+packetLen(0x0879, 4) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170208
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170201
+packetLen(0x0879, 4) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170125
+packetLen(0x0879, 10) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170104
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x087a
+#if PACKETVER >= 20171025
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20171018
+packetLen(0x087a, 8) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20170502
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20170426
+packetLen(0x087a, 18) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20170405
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20170329
+packetLen(0x087a, 18) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20170215
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20170208
+packetLen(0x087a, 8) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20170104
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x087b
+#if PACKETVER >= 20171018
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20171011
+packetLen(0x087b, 26) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170913
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170906
+packetLen(0x087b, 8) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170607
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170531
+packetLen(0x087b, 7) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170524
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170517
+packetLen(0x087b, 6) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170419
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170412
+packetLen(0x087b, 10) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170322
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170315
+packetLen(0x087b, 26) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170201
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170125
+packetLen(0x087b, 6) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170104
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x087c
+#if PACKETVER >= 20170222
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20170215
+packetLen(0x087c, -1) // ZC_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20170104
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+#endif
+
+// Packet: 0x087d
+#if PACKETVER >= 20171227
+packetLen(0x087d, 36) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20171002
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170927
+packetLen(0x087d, -1) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170816
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170809
+packetLen(0x087d, 12) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170801
+packetLen(0x087d, 36) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170726
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170719
+packetLen(0x087d, 6) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170628
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170614
+packetLen(0x087d, 6) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170531
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170517
+packetLen(0x087d, -1) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170315
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170308
+packetLen(0x087d, 36) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170222
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170215
+packetLen(0x087d, 5) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170201
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170125
+packetLen(0x087d, -1) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170104
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x087e
+#if PACKETVER >= 20171122
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20171115
+packetLen(0x087e, 8) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20171108
+packetLen(0x087e, -1) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20171025
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20171018
+packetLen(0x087e, 5) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20171002
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170927
+packetLen(0x087e, 5) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170823
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170816
+packetLen(0x087e, 6) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170621
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170614
+packetLen(0x087e, 5) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170222
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170215
+packetLen(0x087e, 10) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170104
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x087f
+#if PACKETVER >= 20170118
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20170111
+packetLen(0x087f, 4) // ZC_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20170104
+packetLen(0x087f, 36) // ZC_REASSEMBLY_AUTH38
+#endif
+
+// Packet: 0x0880
+#if PACKETVER >= 20171227
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20171220
+packetLen(0x0880, 12) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20170816
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20170809
+packetLen(0x0880, -1) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20170104
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x0881
+#if PACKETVER >= 20171220
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20171213
+packetLen(0x0881, 4) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170823
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170816
+packetLen(0x0881, -1) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170801
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170726
+packetLen(0x0881, 4) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170719
+packetLen(0x0881, 90) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170426
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170419
+packetLen(0x0881, 36) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170208
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170201
+packetLen(0x0881, 8) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170125
+packetLen(0x0881, 5) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170104
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x0882
+#if PACKETVER >= 20171227
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20171220
+packetLen(0x0882, 6) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20171018
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20171011
+packetLen(0x0882, 5) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170823
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170816
+packetLen(0x0882, 36) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170726
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170719
+packetLen(0x0882, 12) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170531
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170524
+packetLen(0x0882, -1) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170104
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x0883
+#if PACKETVER >= 20171122
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20171115
+packetLen(0x0883, 8) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20170222
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20170215
+packetLen(0x0883, 6) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20170104
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x0884
+#if PACKETVER >= 20171115
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20171108
+packetLen(0x0884, -1) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170906
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170830
+packetLen(0x0884, 19) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170823
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170816
+packetLen(0x0884, 8) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170322
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170315
+packetLen(0x0884, 7) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170308
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170228
+packetLen(0x0884, 5) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170222
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170215
+packetLen(0x0884, 8) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170208
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170201
+packetLen(0x0884, 5) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170125
+packetLen(0x0884, 8) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20170104
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x0885
+#if PACKETVER >= 20171227
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20171220
+packetLen(0x0885, -1) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20171213
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20171206
+packetLen(0x0885, 6) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20171129
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20171122
+packetLen(0x0885, 8) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20171011
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20171002
+packetLen(0x0885, 8) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20170906
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20170830
+packetLen(0x0885, 90) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20170726
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20170719
+packetLen(0x0885, -1) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20170628
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20170621
+packetLen(0x0885, 26) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20170614
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20170607
+packetLen(0x0885, 26) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20170531
+packetLen(0x0885, -1) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20170208
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20170201
+packetLen(0x0885, 90) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20170104
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x0886
+#if PACKETVER >= 20171108
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20171101
+packetLen(0x0886, 8) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20170712
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20170705
+packetLen(0x0886, 26) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20170208
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20170201
+packetLen(0x0886, 36) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20170104
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#endif
+
+// Packet: 0x0887
+#if PACKETVER >= 20170502
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20170426
+packetLen(0x0887, 6) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20170104
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x0888
+#if PACKETVER >= 20171227
+packetLen(0x0888, 8) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170906
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170830
+packetLen(0x0888, 10) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170823
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170816
+packetLen(0x0888, 18) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170405
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170329
+packetLen(0x0888, -1) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20170104
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x0889
+#if PACKETVER >= 20171025
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20171018
+packetLen(0x0889, 8) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170927
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170920
+packetLen(0x0889, 6) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170823
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170816
+packetLen(0x0889, 6) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170628
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170621
+packetLen(0x0889, 8) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170614
+packetLen(0x0889, 90) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170308
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170228
+packetLen(0x0889, 5) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170222
+packetLen(0x0889, -1) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20170104
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x088a
+#if PACKETVER >= 20171227
+packetLen(0x088a, 8) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20171206
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20171129
+packetLen(0x088a, -1) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170614
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170607
+packetLen(0x088a, 8) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170222
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170215
+packetLen(0x088a, 90) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170118
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170111
+packetLen(0x088a, 8) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20170104
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x088b
+#if PACKETVER >= 20171122
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20171115
+packetLen(0x088b, 8) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20170607
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20170531
+packetLen(0x088b, -1) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20170419
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20170412
+packetLen(0x088b, -1) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20170322
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20170315
+packetLen(0x088b, 18) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20170222
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20170215
+packetLen(0x088b, 26) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20170208
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20170201
+packetLen(0x088b, 6) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20170104
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x088c
+#if PACKETVER >= 20171227
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20171220
+packetLen(0x088c, 10) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170920
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170913
+packetLen(0x088c, 5) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170816
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170809
+packetLen(0x088c, 10) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170524
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170517
+packetLen(0x088c, 8) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170222
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170215
+packetLen(0x088c, -1) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170208
+packetLen(0x088c, 19) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20170104
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x088d
+#if PACKETVER >= 20171227
+packetLen(0x088d, 6) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170712
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170705
+packetLen(0x088d, 8) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170607
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170531
+packetLen(0x088d, 6) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170524
+packetLen(0x088d, 10) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170517
+packetLen(0x088d, 5) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170426
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170419
+packetLen(0x088d, -1) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170322
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170315
+packetLen(0x088d, 8) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20170104
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x088e
+#if PACKETVER >= 20171108
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20171101
+packetLen(0x088e, 6) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20170927
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20170920
+packetLen(0x088e, 6) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20170801
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20170726
+packetLen(0x088e, 5) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20170712
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20170705
+packetLen(0x088e, 26) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20170104
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x088f
+#if PACKETVER >= 20170426
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20170419
+packetLen(0x088f, 5) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20170322
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20170315
+packetLen(0x088f, 5) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20170104
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0890
+#if PACKETVER >= 20171220
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20171213
+packetLen(0x0890, 36) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20171129
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20171122
+packetLen(0x0890, 6) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20171115
+packetLen(0x0890, 18) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170920
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170913
+packetLen(0x0890, 90) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170816
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170809
+packetLen(0x0890, 36) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170419
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170412
+packetLen(0x0890, -1) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170222
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170215
+packetLen(0x0890, 10) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20170104
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0891
+#if PACKETVER >= 20171129
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20171122
+packetLen(0x0891, 6) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20170920
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20170913
+packetLen(0x0891, 8) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20170726
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20170719
+packetLen(0x0891, 10) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20170104
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0892
+#if PACKETVER >= 20170920
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20170913
+packetLen(0x0892, 36) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20170816
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20170809
+packetLen(0x0892, 90) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20170322
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20170315
+packetLen(0x0892, 10) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20170215
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20170208
+packetLen(0x0892, 26) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20170104
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0893
+#if PACKETVER >= 20171129
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20171122
+packetLen(0x0893, 12) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20170419
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20170412
+packetLen(0x0893, -1) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20170405
+packetLen(0x0893, 8) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20170308
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20170228
+packetLen(0x0893, 6) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20170201
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20170125
+packetLen(0x0893, 36) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20170104
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x0894
+#if PACKETVER >= 20170607
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170531
+packetLen(0x0894, 19) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170524
+packetLen(0x0894, 8) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170517
+packetLen(0x0894, 6) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170502
+packetLen(0x0894, 5) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170228
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170222
+packetLen(0x0894, 6) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170201
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170125
+packetLen(0x0894, 4) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20170104
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x0895
+#if PACKETVER >= 20171108
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20171101
+packetLen(0x0895, 4) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20170816
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20170809
+packetLen(0x0895, 5) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20170201
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20170125
+packetLen(0x0895, -1) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20170104
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x0896
+#if PACKETVER >= 20171115
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20171108
+packetLen(0x0896, 4) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20170524
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20170517
+packetLen(0x0896, 12) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20170222
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20170215
+packetLen(0x0896, 4) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20170111
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20170104
+packetLen(0x0896, 5) // CZ_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x0897
+#if PACKETVER >= 20171213
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20171206
+packetLen(0x0897, 19) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20171129
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20171122
+packetLen(0x0897, 5) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20171115
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20171108
+packetLen(0x0897, -1) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20171011
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20171002
+packetLen(0x0897, 5) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20170906
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20170830
+packetLen(0x0897, -1) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20170614
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20170607
+packetLen(0x0897, 6) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20170426
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20170419
+packetLen(0x0897, 6) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20170104
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x0898
+#if PACKETVER >= 20171129
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20171122
+packetLen(0x0898, 6) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20171115
+packetLen(0x0898, 36) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20170726
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20170719
+packetLen(0x0898, 10) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20170426
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20170412
+packetLen(0x0898, 6) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20170201
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20170125
+packetLen(0x0898, 6) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20170104
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x0899
+#if PACKETVER >= 20171227
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20171220
+packetLen(0x0899, 36) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20171108
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20171101
+packetLen(0x0899, 26) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20171011
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20171002
+packetLen(0x0899, 26) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170927
+packetLen(0x0899, 7) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170906
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170830
+packetLen(0x0899, 6) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170816
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170809
+packetLen(0x0899, 8) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170621
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170614
+packetLen(0x0899, 26) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170524
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170517
+packetLen(0x0899, 26) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170502
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170426
+packetLen(0x0899, 8) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20170104
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x089a
+#if PACKETVER >= 20171129
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20171122
+packetLen(0x089a, 8) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20171025
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20171018
+packetLen(0x089a, 6) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20171002
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20170927
+packetLen(0x089a, 36) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20170906
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20170830
+packetLen(0x089a, -1) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20170726
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20170719
+packetLen(0x089a, 36) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20170712
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20170705
+packetLen(0x089a, 19) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20170607
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20170531
+packetLen(0x089a, 36) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20170419
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20170412
+packetLen(0x089a, 5) // CZ_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20170104
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x089b
+#if PACKETVER >= 20171108
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20171101
+packetLen(0x089b, -1) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20171002
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20170927
+packetLen(0x089b, 8) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20170920
+packetLen(0x089b, 7) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20170222
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20170215
+packetLen(0x089b, 8) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20170201
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20170125
+packetLen(0x089b, 90) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20170104
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x089c
+#if PACKETVER >= 20171206
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20171129
+packetLen(0x089c, 5) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20171108
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20171101
+packetLen(0x089c, 18) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20170607
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20170524
+packetLen(0x089c, 5) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20170517
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20170502
+packetLen(0x089c, 19) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20170426
+packetLen(0x089c, 5) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20170419
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20170412
+packetLen(0x089c, 6) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20170104
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#endif
+
+// Packet: 0x089d
+#if PACKETVER >= 20171213
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20171206
+packetLen(0x089d, 36) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20171011
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20171002
+packetLen(0x089d, 19) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170726
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170719
+packetLen(0x089d, -1) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170712
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170705
+packetLen(0x089d, 6) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170621
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170614
+packetLen(0x089d, -1) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170607
+packetLen(0x089d, 8) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170426
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170419
+packetLen(0x089d, -1) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20170104
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x089e
+#if PACKETVER >= 20171227
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20171220
+packetLen(0x089e, 5) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20171129
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20171122
+packetLen(0x089e, 7) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20170906
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20170830
+packetLen(0x089e, 8) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20170524
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20170517
+packetLen(0x089e, 4) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20170308
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20170228
+packetLen(0x089e, 8) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20170125
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20170118
+packetLen(0x089e, 26) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20170104
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x089f
+#if PACKETVER >= 20171025
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20171018
+packetLen(0x089f, 26) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20170104
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x08a0
+#if PACKETVER >= 20171227
+packetLen(0x08a0, 8) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20171108
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20171101
+packetLen(0x08a0, 8) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20170308
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20170228
+packetLen(0x08a0, 26) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20170104
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x08a1
+#if PACKETVER >= 20170531
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170524
+packetLen(0x08a1, 12) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170419
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170412
+packetLen(0x08a1, 7) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170215
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170208
+packetLen(0x08a1, 18) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170118
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170111
+packetLen(0x08a1, 5) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20170104
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x08a2
+#if PACKETVER >= 20171213
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20171206
+packetLen(0x08a2, 26) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20171115
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20171108
+packetLen(0x08a2, 10) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20171101
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20171025
+packetLen(0x08a2, 36) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170913
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170906
+packetLen(0x08a2, 8) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170830
+packetLen(0x08a2, 36) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170621
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170614
+packetLen(0x08a2, -1) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170524
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170517
+packetLen(0x08a2, 6) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170502
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170426
+packetLen(0x08a2, 19) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170308
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170228
+packetLen(0x08a2, 36) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170222
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170215
+packetLen(0x08a2, 12) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20170104
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x08a3
+#if PACKETVER >= 20170913
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170906
+packetLen(0x08a3, 26) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170823
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170816
+packetLen(0x08a3, 26) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170809
+packetLen(0x08a3, -1) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170801
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170726
+packetLen(0x08a3, 8) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170228
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170222
+packetLen(0x08a3, 5) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170118
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170111
+packetLen(0x08a3, 6) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20170104
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x08a4
+#if PACKETVER >= 20171213
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20171206
+packetLen(0x08a4, 8) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20171122
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20171115
+packetLen(0x08a4, 5) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20170502
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20170426
+packetLen(0x08a4, 6) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20170208
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20170201
+packetLen(0x08a4, 8) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20170104
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x08a5
+#if PACKETVER >= 20171227
+packetLen(0x08a5, 5) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20171206
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20171129
+packetLen(0x08a5, 8) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20171002
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170927
+packetLen(0x08a5, -1) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170412
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170405
+packetLen(0x08a5, 19) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170201
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170125
+packetLen(0x08a5, -1) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20170104
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x08a6
+#if PACKETVER >= 20171129
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20171122
+packetLen(0x08a6, 10) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20171025
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20171018
+packetLen(0x08a6, 5) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20171002
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20170927
+packetLen(0x08a6, 8) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20170920
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20170913
+packetLen(0x08a6, 6) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20170816
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20170809
+packetLen(0x08a6, 19) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20170801
+packetLen(0x08a6, 4) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20170726
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20170719
+packetLen(0x08a6, 8) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20170308
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20170228
+packetLen(0x08a6, 8) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20170118
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20170111
+packetLen(0x08a6, 18) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20170104
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#endif
+
+// Packet: 0x08a7
+#if PACKETVER >= 20170920
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170913
+packetLen(0x08a7, 4) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170906
+packetLen(0x08a7, 18) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170823
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170816
+packetLen(0x08a7, 4) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170801
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170726
+packetLen(0x08a7, 36) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170308
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170228
+packetLen(0x08a7, 6) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20170104
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x08a8
+#if PACKETVER >= 20170906
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170830
+packetLen(0x08a8, 8) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170726
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170719
+packetLen(0x08a8, 19) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170628
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170621
+packetLen(0x08a8, 5) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170524
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170517
+packetLen(0x08a8, 5) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170405
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170329
+packetLen(0x08a8, 6) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170228
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170222
+packetLen(0x08a8, 26) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170215
+packetLen(0x08a8, 18) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20170104
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x08a9
+#if PACKETVER >= 20171129
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20171122
+packetLen(0x08a9, 6) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20171115
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20171108
+packetLen(0x08a9, 5) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20170823
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20170816
+packetLen(0x08a9, 5) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20170614
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20170607
+packetLen(0x08a9, 10) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20170104
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#endif
+
+// Packet: 0x08aa
+#if PACKETVER >= 20170920
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20170913
+packetLen(0x08aa, 10) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20170801
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20170726
+packetLen(0x08aa, 6) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20170524
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20170517
+packetLen(0x08aa, 8) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20170426
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20170419
+packetLen(0x08aa, 8) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20170322
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20170315
+packetLen(0x08aa, 8) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20170104
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x08ab
+#if PACKETVER >= 20171108
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20171101
+packetLen(0x08ab, -1) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170920
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170913
+packetLen(0x08ab, 18) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170801
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170726
+packetLen(0x08ab, 6) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170614
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170607
+packetLen(0x08ab, 90) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20170104
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x08ac
+#if PACKETVER >= 20170920
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170913
+packetLen(0x08ac, 5) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170830
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170823
+packetLen(0x08ac, 26) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170816
+packetLen(0x08ac, 5) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170801
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170726
+packetLen(0x08ac, 6) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170607
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170531
+packetLen(0x08ac, 90) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170215
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170208
+packetLen(0x08ac, 8) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20170104
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x08ad
+#if PACKETVER >= 20171115
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20171108
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20171101
+packetLen(0x08ad, 12) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20171002
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20170927
+packetLen(0x08ad, -1) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20170920
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20170913
+packetLen(0x08ad, -1) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20170621
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20170614
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20170607
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20170531
+packetLen(0x08ad, 8) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20170125
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20170118
+packetLen(0x08ad, -1) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20170104
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x08af
+packetLen(0x08af, 10) // HC_WAITING_LOGIN
+
+// Packet: 0x08b0
+packetLen(0x08b0, 17) // CH_WAITING_LOGIN
+
+// Packet: 0x08b1
+packetLen(0x08b1, -1) // ZC_MCSTORE_NOTMOVEITEM_LIST
+
+// Packet: 0x08b2
+packetLen(0x08b2, -1) // AC_REALNAME_AUTH
+
+// Packet: 0x08b3
+packetLen(0x08b3, -1) // ZC_SHOWSCRIPT
+
+// Packet: 0x08b4
+packetLen(0x08b4, 2) // ZC_START_COLLECTION
+
+// Packet: 0x08b5
+packetLen(0x08b5, 6) // CZ_TRYCOLLECTION
+
+// Packet: 0x08b6
+packetLen(0x08b6, 3) // ZC_TRYCOLLECTION
+
+// Packet: 0x08b8
+packetLen(0x08b8, 10) // CH_SECOND_PASSWD_ACK
+
+// Packet: 0x08b9
+packetLen(0x08b9, 12) // HC_SECOND_PASSWD_LOGIN
+
+// Packet: 0x08ba
+packetLen(0x08ba, 10) // CH_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bb
+packetLen(0x08bb, 8) // HC_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bc
+packetLen(0x08bc, 10) // CH_DELETE_SECOND_PASSWD
+
+// Packet: 0x08bd
+packetLen(0x08bd, 8) // HC_DELETE_SECOND_PASSWD
+
+// Packet: 0x08be
+packetLen(0x08be, 14) // CH_EDIT_SECOND_PASSWD
+
+// Packet: 0x08bf
+packetLen(0x08bf, 8) // HC_EDIT_SECOND_PASSWD
+
+// Packet: 0x08c0
+packetLen(0x08c0, -1) // ZC_ACK_SE_CASH_ITEM_LIST2
+
+// Packet: 0x08c1
+packetLen(0x08c1, 2) // CZ_MACRO_START
+
+// Packet: 0x08c2
+packetLen(0x08c2, 2) // CZ_MACRO_STOP
+
+// Packet: 0x08c3
+packetLen(0x08c3, 10) // CH_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c4
+packetLen(0x08c4, 8) // HC_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c5
+packetLen(0x08c5, 6) // CH_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c6
+packetLen(0x08c6, 4) // HC_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c7
+packetLen(0x08c7, -1) // ZC_SKILL_ENTRY3
+
+// Packet: 0x08c8
+packetLen(0x08c8, 34) // ZC_NOTIFY_ACT3
+
+// Packet: 0x08c9
+packetLen(0x08c9, 2) // CZ_REQ_SCHEDULER_CASHITEM
+
+// Packet: 0x08ca
+packetLen(0x08ca, -1) // ZC_ACK_SCHEDULER_CASHITEM
+
+// Packet: 0x08cb
+packetLen(0x08cb, -1) // ZC_PERSONAL_INFOMATION
+
+// Packet: 0x08cc
+packetLen(0x08cc, 109) // CA_LOGIN5
+
+// Packet: 0x08cd
+packetLen(0x08cd, 10) // ZC_STOPMOVE_FORCE
+
+// Packet: 0x08ce
+packetLen(0x08ce, 2) // ZC_FAILED_GET_ITEM_FROM_ZONEDA
+
+// Packet: 0x08cf
+packetLen(0x08cf, 10) // ZC_SPIRITS_ATTRIBUTE
+
+// Packet: 0x08d0
+packetLen(0x08d0, 9) // ZC_REQ_WEAR_EQUIP_ACK2
+
+// Packet: 0x08d1
+packetLen(0x08d1, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK2
+
+// Packet: 0x08d2
+packetLen(0x08d2, 10) // ZC_FASTMOVE
+
+// Packet: 0x08d3
+packetLen(0x08d3, 10) // ZC_SE_CASHSHOP_UPDATE
+
+// Packet: 0x08d4
+packetLen(0x08d4, 8) // CH_REQ_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d5
+packetLen(0x08d5, -1) // HC_ACK_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d6
+packetLen(0x08d6, 6) // ZC_CLEAR_DIALOG
+
+// Packet: 0x08d7
+packetLen(0x08d7, 28) // CZ_REQ_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d8
+packetLen(0x08d8, 27) // ZC_ACK_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d9
+packetLen(0x08d9, 30) // ZC_NOTIFY_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08da
+packetLen(0x08da, 26) // CZ_REQ_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08db
+packetLen(0x08db, 27) // ZC_ACK_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08dc
+packetLen(0x08dc, 26) // ZC_NOTIFY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08dd
+packetLen(0x08dd, 27) // CZ_REPLY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08de
+packetLen(0x08de, 27) // ZC_REPLY_ACK_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08df
+packetLen(0x08df, 50) // ZC_NOTIFY_LOBBY_ADMISSION
+
+// Packet: 0x08e0
+packetLen(0x08e0, 51) // CZ_REPLY_LOBBY_ADMISSION
+
+// Packet: 0x08e1
+packetLen(0x08e1, 51) // ZC_REPLY_ACK_LOBBY_ADMISSION
+
+// Packet: 0x08e2
+packetLen(0x08e2, 27) // ZC_NAVIGATION_ACTIVE
+
+// Packet: 0x08e3
+#if PACKETVER >= 20170830
+packetLen(0x08e3, 157) // HC_UPDATE_CHARINFO
+#elif PACKETVER >= 20170104
+packetLen(0x08e3, 149) // HC_UPDATE_CHARINFO
+#endif
+
+// Packet: 0x08e4
+packetLen(0x08e4, 6) // AC_SHUTDOWN_INFO
+
+// Packet: 0x08fc
+packetLen(0x08fc, 30) // CH_REQ_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fd
+packetLen(0x08fd, 6) // CH_ACK_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fe
+packetLen(0x08fe, -1) // ZC_HUNTING_QUEST_INFO
+
+// Packet: 0x08ff
+packetLen(0x08ff, 24) // ZC_EFST_SET_ENTER
+
+// Packet: 0x0900
+packetLen(0x0900, -1) // ZC_INVENTORY_ITEMLIST_NORMAL
+
+// Packet: 0x0901
+packetLen(0x0901, -1) // ZC_INVENTORY_ITEMLIST_EQUIP
+
+// Packet: 0x0902
+packetLen(0x0902, -1) // ZC_CART_ITEMLIST_NORMAL
+
+// Packet: 0x0903
+packetLen(0x0903, -1) // ZC_CART_ITEMLIST_EQUIP
+
+// Packet: 0x0904
+packetLen(0x0904, -1) // ZC_STORE_ITEMLIST_NORMAL
+
+// Packet: 0x0905
+packetLen(0x0905, -1) // ZC_STORE_ITEMLIST_EQUIP
+
+// Packet: 0x0906
+packetLen(0x0906, -1) // ZC_MICROSCOPE
+
+// Packet: 0x0907
+packetLen(0x0907, 5) // CZ_INVENTORY_TAB
+
+// Packet: 0x0908
+packetLen(0x0908, 5) // ZC_INVENTORY_TAB
+
+// Packet: 0x090a
+packetLen(0x090a, 26) // CZ_REQ_ENTRY_QUEUE_RANKING
+
+// Packet: 0x090d
+packetLen(0x090d, -1) // ZC_PREMIUM_CAMPAIGN_INFO
+
+// Packet: 0x090e
+packetLen(0x090e, 2) // ZC_ENTRY_QUEUE_INIT
+
+// Packet: 0x090f
+packetLen(0x090f, -1) // ZC_NOTIFY_NEWENTRY7
+
+// Packet: 0x0910
+packetLen(0x0910, 10) // CZ_REQ_PARTY_NAME
+
+// Packet: 0x0911
+packetLen(0x0911, 30) // ZC_ACK_PARTY_NAME
+
+// Packet: 0x0912
+packetLen(0x0912, 10) // CZ_REQ_GUILD_NAME
+
+// Packet: 0x0913
+packetLen(0x0913, 30) // ZC_ACK_GUILD_NAME
+
+// Packet: 0x0914
+packetLen(0x0914, -1) // ZC_NOTIFY_MOVEENTRY9
+
+// Packet: 0x0915
+packetLen(0x0915, -1) // ZC_NOTIFY_STANDENTRY8
+
+// Packet: 0x0916
+packetLen(0x0916, 26) // CZ_REQ_JOIN_GUILD2
+
+// Packet: 0x0917
+#if PACKETVER >= 20170405
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20170329
+packetLen(0x0917, 8) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20170104
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#endif
+
+// Packet: 0x0918
+#if PACKETVER >= 20170816
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20170809
+packetLen(0x0918, 6) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20170614
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20170607
+packetLen(0x0918, 18) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20170104
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#endif
+
+// Packet: 0x0919
+#if PACKETVER >= 20170927
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20170920
+packetLen(0x0919, 10) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20170614
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20170607
+packetLen(0x0919, -1) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20170208
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20170201
+packetLen(0x0919, 26) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20170104
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#endif
+
+// Packet: 0x091a
+#if PACKETVER >= 20171220
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20171213
+packetLen(0x091a, 5) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170913
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170906
+packetLen(0x091a, 6) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170712
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170705
+packetLen(0x091a, 5) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170419
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170412
+packetLen(0x091a, 5) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170329
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170322
+packetLen(0x091a, 36) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170315
+packetLen(0x091a, 6) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170118
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170111
+packetLen(0x091a, 36) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170104
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#endif
+
+// Packet: 0x091b
+#if PACKETVER >= 20171227
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20171220
+packetLen(0x091b, 6) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20171108
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20171101
+packetLen(0x091b, 8) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170920
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170913
+packetLen(0x091b, 6) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170726
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170719
+packetLen(0x091b, 6) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170621
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170614
+packetLen(0x091b, 10) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170524
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170517
+packetLen(0x091b, -1) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170426
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170419
+packetLen(0x091b, 6) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170322
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170315
+packetLen(0x091b, -1) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170201
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170125
+packetLen(0x091b, 6) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170118
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170111
+packetLen(0x091b, 19) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20170104
+packetLen(0x091b, 5) // ZC_PRNPC_STATE
+#endif
+
+// Packet: 0x091c
+#if PACKETVER >= 20170823
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20170816
+packetLen(0x091c, 12) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20170201
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20170125
+packetLen(0x091c, 8) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20170104
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#endif
+
+// Packet: 0x091d
+#if PACKETVER >= 20171213
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20171206
+packetLen(0x091d, 26) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20170920
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20170913
+packetLen(0x091d, 6) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20170801
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20170726
+packetLen(0x091d, 26) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20170322
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20170315
+packetLen(0x091d, 12) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20170104
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#endif
+
+// Packet: 0x091e
+#if PACKETVER >= 20171227
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20171220
+packetLen(0x091e, 6) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20171129
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20171122
+packetLen(0x091e, 90) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20171002
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20170927
+packetLen(0x091e, 6) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20170913
+packetLen(0x091e, 8) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20170906
+packetLen(0x091e, 5) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20170830
+packetLen(0x091e, 6) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20170801
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20170726
+packetLen(0x091e, 12) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20170531
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20170524
+packetLen(0x091e, 8) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20170419
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20170412
+packetLen(0x091e, 19) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20170104
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#endif
+
+// Packet: 0x091f
+#if PACKETVER >= 20171115
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20171108
+packetLen(0x091f, 5) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20170801
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20170726
+packetLen(0x091f, 5) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20170719
+packetLen(0x091f, 6) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20170502
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20170426
+packetLen(0x091f, 4) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20170308
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20170228
+packetLen(0x091f, 10) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20170125
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20170118
+packetLen(0x091f, 18) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20170104
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#endif
+
+// Packet: 0x0920
+#if PACKETVER >= 20170426
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20170419
+packetLen(0x0920, 10) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20170322
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20170315
+packetLen(0x0920, 6) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20170208
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20170125
+packetLen(0x0920, 26) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20170104
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#endif
+
+// Packet: 0x0921
+#if PACKETVER >= 20170927
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20170920
+packetLen(0x0921, 6) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20170906
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20170830
+packetLen(0x0921, 5) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20170823
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20170816
+packetLen(0x0921, 6) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20170809
+packetLen(0x0921, 8) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20170801
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20170726
+packetLen(0x0921, 6) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20170215
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20170208
+packetLen(0x0921, 6) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20170104
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#endif
+
+// Packet: 0x0922
+#if PACKETVER >= 20171002
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20170927
+packetLen(0x0922, 26) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20170426
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20170419
+packetLen(0x0922, 19) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20170322
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20170315
+packetLen(0x0922, -1) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20170104
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#endif
+
+// Packet: 0x0923
+#if PACKETVER >= 20171213
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20171206
+packetLen(0x0923, 8) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20171129
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20171122
+packetLen(0x0923, 18) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20171002
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20170927
+packetLen(0x0923, 6) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20170920
+packetLen(0x0923, 19) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20170913
+packetLen(0x0923, 5) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20170801
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20170726
+packetLen(0x0923, -1) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20170531
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20170524
+packetLen(0x0923, -1) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20170517
+packetLen(0x0923, 19) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20170215
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20170208
+packetLen(0x0923, 6) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20170104
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#endif
+
+// Packet: 0x0924
+#if PACKETVER >= 20171227
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20171220
+packetLen(0x0924, 8) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20170104
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#endif
+
+// Packet: 0x0925
+#if PACKETVER >= 20170920
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170913
+packetLen(0x0925, 12) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170906
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170830
+packetLen(0x0925, 6) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170823
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170816
+packetLen(0x0925, 8) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170614
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170607
+packetLen(0x0925, 26) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170531
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170524
+packetLen(0x0925, 90) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170222
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170215
+packetLen(0x0925, 8) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170104
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#endif
+
+// Packet: 0x0926
+#if PACKETVER >= 20171122
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20171115
+packetLen(0x0926, 6) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20170927
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20170920
+packetLen(0x0926, 8) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20170405
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20170329
+packetLen(0x0926, 5) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20170104
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#endif
+
+// Packet: 0x0927
+#if PACKETVER >= 20171002
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20170927
+packetLen(0x0927, 5) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20170920
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20170913
+packetLen(0x0927, -1) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20170614
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20170607
+packetLen(0x0927, 10) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20170502
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20170426
+packetLen(0x0927, 5) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20170125
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20170118
+packetLen(0x0927, 8) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20170104
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#endif
+
+// Packet: 0x0928
+#if PACKETVER >= 20171011
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20171002
+packetLen(0x0928, -1) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20170104
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#endif
+
+// Packet: 0x0929
+#if PACKETVER >= 20171227
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20171220
+packetLen(0x0929, 6) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20170419
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20170412
+packetLen(0x0929, 6) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20170405
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20170329
+packetLen(0x0929, 6) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20170201
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20170125
+packetLen(0x0929, 12) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20170104
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#endif
+
+// Packet: 0x092a
+#if PACKETVER >= 20170816
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20170809
+packetLen(0x092a, 6) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20170308
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20170228
+packetLen(0x092a, 6) // ZC_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20170104
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+#endif
+
+// Packet: 0x092b
+#if PACKETVER >= 20170816
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20170809
+packetLen(0x092b, 6) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20170222
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20170215
+packetLen(0x092b, -1) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20170201
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20170125
+packetLen(0x092b, 10) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20170104
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#endif
+
+// Packet: 0x092c
+#if PACKETVER >= 20171227
+packetLen(0x092c, 19) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20170823
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20170816
+packetLen(0x092c, -1) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20170726
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20170719
+packetLen(0x092c, -1) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20170104
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#endif
+
+// Packet: 0x092d
+#if PACKETVER >= 20171011
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20171002
+packetLen(0x092d, 18) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20170607
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20170531
+packetLen(0x092d, 6) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20170215
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20170208
+packetLen(0x092d, 5) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20170104
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#endif
+
+// Packet: 0x092e
+#if PACKETVER >= 20171227
+packetLen(0x092e, 4) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20171213
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20171206
+packetLen(0x092e, 8) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170927
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170920
+packetLen(0x092e, -1) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170906
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170830
+packetLen(0x092e, 6) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170419
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170412
+packetLen(0x092e, 8) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170405
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170329
+packetLen(0x092e, 19) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170308
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170228
+packetLen(0x092e, -1) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170104
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#endif
+
+// Packet: 0x092f
+#if PACKETVER >= 20170726
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20170719
+packetLen(0x092f, 18) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20170712
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20170705
+packetLen(0x092f, 4) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20170621
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20170614
+packetLen(0x092f, -1) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20170104
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#endif
+
+// Packet: 0x0930
+#if PACKETVER >= 20170712
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20170705
+packetLen(0x0930, -1) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20170426
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20170419
+packetLen(0x0930, 8) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20170201
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20170125
+packetLen(0x0930, 5) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20170104
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#endif
+
+// Packet: 0x0931
+#if PACKETVER >= 20170816
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20170809
+packetLen(0x0931, 6) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20170614
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20170607
+packetLen(0x0931, 4) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20170104
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#endif
+
+// Packet: 0x0932
+#if PACKETVER >= 20170712
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20170705
+packetLen(0x0932, 6) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20170215
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20170208
+packetLen(0x0932, 8) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20170104
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#endif
+
+// Packet: 0x0933
+#if PACKETVER >= 20171227
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20171220
+packetLen(0x0933, 5) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20170607
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20170531
+packetLen(0x0933, 8) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20170125
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20170118
+packetLen(0x0933, 6) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20170104
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#endif
+
+// Packet: 0x0934
+#if PACKETVER >= 20171129
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20171122
+packetLen(0x0934, 36) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20171011
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20171002
+packetLen(0x0934, 36) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20170712
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20170705
+packetLen(0x0934, 8) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20170614
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20170607
+packetLen(0x0934, 5) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20170531
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20170524
+packetLen(0x0934, 5) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20170104
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#endif
+
+// Packet: 0x0935
+#if PACKETVER >= 20170426
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20170419
+packetLen(0x0935, 90) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20170104
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#endif
+
+// Packet: 0x0936
+#if PACKETVER >= 20171213
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20171206
+packetLen(0x0936, 5) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20170621
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20170614
+packetLen(0x0936, 6) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20170104
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#endif
+
+// Packet: 0x0937
+#if PACKETVER >= 20170927
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170920
+packetLen(0x0937, 12) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170607
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170531
+packetLen(0x0937, 12) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170405
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170329
+packetLen(0x0937, -1) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170308
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170228
+packetLen(0x0937, 6) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170222
+packetLen(0x0937, -1) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170215
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170208
+packetLen(0x0937, 36) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170104
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#endif
+
+// Packet: 0x0938
+#if PACKETVER >= 20171227
+packetLen(0x0938, 26) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20171025
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20171018
+packetLen(0x0938, -1) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20170614
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20170607
+packetLen(0x0938, 7) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20170419
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20170412
+packetLen(0x0938, 90) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20170208
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20170201
+packetLen(0x0938, 5) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20170104
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#endif
+
+// Packet: 0x0939
+#if PACKETVER >= 20171108
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20171101
+packetLen(0x0939, 5) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170927
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170920
+packetLen(0x0939, 5) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170906
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170830
+packetLen(0x0939, 26) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170816
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170809
+packetLen(0x0939, 6) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170405
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170329
+packetLen(0x0939, 26) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170228
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170222
+packetLen(0x0939, 19) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170104
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#endif
+
+// Packet: 0x093a
+#if PACKETVER >= 20170823
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20170816
+packetLen(0x093a, 26) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20170426
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20170419
+packetLen(0x093a, 26) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20170104
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#endif
+
+// Packet: 0x093b
+#if PACKETVER >= 20171129
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20171122
+packetLen(0x093b, 10) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20171011
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20171002
+packetLen(0x093b, 8) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20170927
+packetLen(0x093b, 90) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20170816
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20170809
+packetLen(0x093b, -1) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20170524
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20170517
+packetLen(0x093b, 6) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20170104
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#endif
+
+// Packet: 0x093c
+#if PACKETVER >= 20170517
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20170502
+packetLen(0x093c, 26) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20170201
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20170125
+packetLen(0x093c, -1) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20170104
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#endif
+
+// Packet: 0x093d
+#if PACKETVER >= 20171011
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20171002
+packetLen(0x093d, 6) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20170823
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20170816
+packetLen(0x093d, 19) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20170726
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20170719
+packetLen(0x093d, 5) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20170104
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#endif
+
+// Packet: 0x093e
+#if PACKETVER >= 20171227
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20171220
+packetLen(0x093e, 7) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20171011
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20171002
+packetLen(0x093e, 8) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20170906
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20170830
+packetLen(0x093e, 7) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20170726
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20170719
+packetLen(0x093e, 8) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20170308
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20170228
+packetLen(0x093e, 4) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20170104
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#endif
+
+// Packet: 0x093f
+#if PACKETVER >= 20170426
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20170419
+packetLen(0x093f, 10) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20170104
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#endif
+
+// Packet: 0x0940
+#if PACKETVER >= 20171206
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20171129
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20171115
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20171108
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170906
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170830
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170823
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170816
+packetLen(0x0940, 10) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170809
+packetLen(0x0940, 18) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170607
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170531
+packetLen(0x0940, 18) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170502
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170426
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170208
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170201
+packetLen(0x0940, -1) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170118
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170111
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170104
+packetLen(0x0940, 10) // ZC_REASSEMBLY_AUTH84
+#endif
+
+// Packet: 0x0941
+#if PACKETVER >= 20171227
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20171220
+packetLen(0x0941, 6) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20171115
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20171108
+packetLen(0x0941, 8) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20170823
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20170816
+packetLen(0x0941, 6) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20170104
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#endif
+
+// Packet: 0x0942
+#if PACKETVER >= 20171213
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20171206
+packetLen(0x0942, 5) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20171002
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20170927
+packetLen(0x0942, 18) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20170906
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20170830
+packetLen(0x0942, 12) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20170614
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20170607
+packetLen(0x0942, 5) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20170419
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20170412
+packetLen(0x0942, 26) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20170222
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20170215
+packetLen(0x0942, 6) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20170104
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#endif
+
+// Packet: 0x0943
+#if PACKETVER >= 20171011
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20171002
+packetLen(0x0943, 26) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20170906
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20170830
+packetLen(0x0943, -1) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20170801
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20170726
+packetLen(0x0943, 6) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20170228
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20170222
+packetLen(0x0943, 36) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20170201
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20170125
+packetLen(0x0943, 6) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20170104
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#endif
+
+// Packet: 0x0944
+#if PACKETVER >= 20171025
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20171018
+packetLen(0x0944, 36) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170726
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170719
+packetLen(0x0944, 5) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170712
+packetLen(0x0944, 36) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170621
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170614
+packetLen(0x0944, 19) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170607
+packetLen(0x0944, 6) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170322
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170315
+packetLen(0x0944, 6) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170308
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170228
+packetLen(0x0944, 8) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170201
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170125
+packetLen(0x0944, 18) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20170104
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#endif
+
+// Packet: 0x0945
+#if PACKETVER >= 20171227
+packetLen(0x0945, -1) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20171115
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20171108
+packetLen(0x0945, 6) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20171002
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20170927
+packetLen(0x0945, 6) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20170920
+packetLen(0x0945, 18) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20170607
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20170531
+packetLen(0x0945, 6) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20170524
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20170517
+packetLen(0x0945, -1) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20170419
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20170412
+packetLen(0x0945, 8) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20170104
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#endif
+
+// Packet: 0x0946
+#if PACKETVER >= 20171227
+packetLen(0x0946, 26) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20171220
+packetLen(0x0946, 4) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20171129
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20171122
+packetLen(0x0946, 26) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20170726
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20170719
+packetLen(0x0946, 26) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20170531
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20170524
+packetLen(0x0946, 10) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20170517
+packetLen(0x0946, 6) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20170104
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#endif
+
+// Packet: 0x0947
+#if PACKETVER >= 20171129
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20171122
+packetLen(0x0947, 5) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20171115
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20171108
+packetLen(0x0947, 8) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20170906
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20170830
+packetLen(0x0947, -1) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20170524
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20170517
+packetLen(0x0947, 36) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20170308
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20170228
+packetLen(0x0947, 6) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20170104
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#endif
+
+// Packet: 0x0948
+#if PACKETVER >= 20170308
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20170228
+packetLen(0x0948, 26) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20170104
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#endif
+
+// Packet: 0x0949
+#if PACKETVER >= 20171115
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20171108
+packetLen(0x0949, 19) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20170614
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20170607
+packetLen(0x0949, -1) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20170405
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20170329
+packetLen(0x0949, 8) // CZ_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20170104
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+#endif
+
+// Packet: 0x094a
+#if PACKETVER >= 20171025
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20171018
+packetLen(0x094a, 26) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20170322
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20170315
+packetLen(0x094a, 6) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20170104
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#endif
+
+// Packet: 0x094b
+#if PACKETVER >= 20171206
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20171129
+packetLen(0x094b, 8) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20171002
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20170927
+packetLen(0x094b, 26) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20170104
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#endif
+
+// Packet: 0x094c
+#if PACKETVER >= 20170927
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20170920
+packetLen(0x094c, -1) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20170712
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20170705
+packetLen(0x094c, 5) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20170412
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20170405
+packetLen(0x094c, 36) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20170208
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20170201
+packetLen(0x094c, 19) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20170118
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20170111
+packetLen(0x094c, 8) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20170104
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#endif
+
+// Packet: 0x094d
+#if PACKETVER >= 20171108
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20171101
+packetLen(0x094d, 6) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20171002
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20170927
+packetLen(0x094d, 6) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20170104
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#endif
+
+// Packet: 0x094e
+#if PACKETVER >= 20171227
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20171220
+packetLen(0x094e, 8) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20171115
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20171108
+packetLen(0x094e, 26) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20170322
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20170315
+packetLen(0x094e, 19) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20170222
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20170215
+packetLen(0x094e, 6) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20170104
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#endif
+
+// Packet: 0x094f
+#if PACKETVER >= 20171025
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20171018
+packetLen(0x094f, 18) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170809
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170801
+packetLen(0x094f, 26) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170726
+packetLen(0x094f, 8) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170419
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170412
+packetLen(0x094f, 26) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170405
+packetLen(0x094f, 8) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20170104
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#endif
+
+// Packet: 0x0950
+#if PACKETVER >= 20171018
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20171011
+packetLen(0x0950, 19) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20170823
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20170816
+packetLen(0x0950, 5) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20170801
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20170726
+packetLen(0x0950, 10) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20170517
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20170502
+packetLen(0x0950, 5) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20170104
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#endif
+
+// Packet: 0x0951
+#if PACKETVER >= 20171227
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20171220
+packetLen(0x0951, 5) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20170104
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#endif
+
+// Packet: 0x0952
+#if PACKETVER >= 20171108
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20171101
+packetLen(0x0952, 90) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20170801
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20170726
+packetLen(0x0952, 5) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20170322
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20170315
+packetLen(0x0952, 36) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20170308
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20170228
+packetLen(0x0952, 10) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20170104
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#endif
+
+// Packet: 0x0953
+#if PACKETVER >= 20171206
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20171129
+packetLen(0x0953, 8) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20170913
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20170906
+packetLen(0x0953, 19) // CZ_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20170104
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+#endif
+
+// Packet: 0x0954
+#if PACKETVER >= 20171018
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20171011
+packetLen(0x0954, 5) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20170801
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20170726
+packetLen(0x0954, 18) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20170104
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#endif
+
+// Packet: 0x0955
+#if PACKETVER >= 20170308
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20170228
+packetLen(0x0955, 18) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20170104
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#endif
+
+// Packet: 0x0956
+#if PACKETVER >= 20170628
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20170621
+packetLen(0x0956, 8) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20170104
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#endif
+
+// Packet: 0x0957
+#if PACKETVER >= 20171227
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20171220
+packetLen(0x0957, 26) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20171213
+packetLen(0x0957, 5) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20171108
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20171101
+packetLen(0x0957, 7) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20170628
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20170621
+packetLen(0x0957, 36) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20170614
+packetLen(0x0957, 8) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20170104
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#endif
+
+// Packet: 0x0958
+#if PACKETVER >= 20171213
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20171206
+packetLen(0x0958, -1) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20171122
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20171115
+packetLen(0x0958, 5) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20171108
+packetLen(0x0958, 18) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170531
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170524
+packetLen(0x0958, 4) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170517
+packetLen(0x0958, 5) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170502
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170426
+packetLen(0x0958, 26) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170125
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170118
+packetLen(0x0958, 36) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20170104
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#endif
+
+// Packet: 0x0959
+#if PACKETVER >= 20171002
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20170927
+packetLen(0x0959, 8) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20170906
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20170830
+packetLen(0x0959, 10) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20170823
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20170816
+packetLen(0x0959, 8) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20170419
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20170412
+packetLen(0x0959, 6) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20170104
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#endif
+
+// Packet: 0x095a
+#if PACKETVER >= 20171122
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20171115
+packetLen(0x095a, 26) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20171108
+packetLen(0x095a, 8) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20171101
+packetLen(0x095a, -1) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20171002
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20170927
+packetLen(0x095a, 10) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20170920
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20170913
+packetLen(0x095a, 10) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20170809
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20170801
+packetLen(0x095a, 19) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20170726
+packetLen(0x095a, 90) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20170531
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20170524
+packetLen(0x095a, 6) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20170104
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#endif
+
+// Packet: 0x095b
+#if PACKETVER >= 20170830
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20170823
+packetLen(0x095b, 5) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20170628
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20170621
+packetLen(0x095b, 4) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20170531
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20170524
+packetLen(0x095b, 18) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20170419
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20170412
+packetLen(0x095b, 6) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20170104
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#endif
+
+// Packet: 0x095c
+#if PACKETVER >= 20170920
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20170913
+packetLen(0x095c, 6) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20170628
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20170621
+packetLen(0x095c, 8) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20170426
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20170419
+packetLen(0x095c, 6) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20170412
+packetLen(0x095c, 12) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20170201
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20170125
+packetLen(0x095c, 8) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20170104
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#endif
+
+// Packet: 0x095d
+#if PACKETVER >= 20170927
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20170920
+packetLen(0x095d, 5) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20170426
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20170419
+packetLen(0x095d, -1) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20170412
+packetLen(0x095d, 36) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20170228
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20170222
+packetLen(0x095d, 8) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20170104
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#endif
+
+// Packet: 0x095e
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+
+// Packet: 0x095f
+#if PACKETVER >= 20171011
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20171002
+packetLen(0x095f, 4) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20170405
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20170329
+packetLen(0x095f, 4) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20170222
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20170215
+packetLen(0x095f, 6) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20170104
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#endif
+
+// Packet: 0x0960
+#if PACKETVER >= 20171227
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20171220
+packetLen(0x0960, 90) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20170823
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20170816
+packetLen(0x0960, -1) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20170524
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20170517
+packetLen(0x0960, 26) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20170104
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#endif
+
+// Packet: 0x0961
+#if PACKETVER >= 20171213
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20171206
+packetLen(0x0961, 6) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170927
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170920
+packetLen(0x0961, 6) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170628
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170621
+packetLen(0x0961, 19) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170118
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170111
+packetLen(0x0961, -1) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20170104
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#endif
+
+// Packet: 0x0962
+#if PACKETVER >= 20171129
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20171122
+packetLen(0x0962, 26) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20171108
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20171101
+packetLen(0x0962, 6) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20170228
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20170222
+packetLen(0x0962, 8) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20170215
+packetLen(0x0962, 5) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20170125
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20170118
+packetLen(0x0962, 26) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20170104
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#endif
+
+// Packet: 0x0963
+#if PACKETVER >= 20171115
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20171108
+packetLen(0x0963, 7) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170801
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170726
+packetLen(0x0963, -1) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170621
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170614
+packetLen(0x0963, 12) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170607
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170531
+packetLen(0x0963, 6) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170502
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170426
+packetLen(0x0963, 8) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170419
+packetLen(0x0963, 4) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20170104
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#endif
+
+// Packet: 0x0964
+#if PACKETVER >= 20171227
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20171220
+packetLen(0x0964, 26) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20170524
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20170517
+packetLen(0x0964, 6) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20170412
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20170405
+packetLen(0x0964, 6) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20170104
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#endif
+
+// Packet: 0x0965
+#if PACKETVER >= 20171115
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20171108
+packetLen(0x0965, 6) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20170426
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20170419
+packetLen(0x0965, 6) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20170201
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20170125
+packetLen(0x0965, 6) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20170104
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#endif
+
+// Packet: 0x0966
+#if PACKETVER >= 20171206
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20171129
+packetLen(0x0966, 19) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20171108
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20171101
+packetLen(0x0966, 10) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20170927
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20170920
+packetLen(0x0966, 90) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20170726
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20170719
+packetLen(0x0966, 8) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20170208
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20170201
+packetLen(0x0966, 8) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20170104
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#endif
+
+// Packet: 0x0967
+#if PACKETVER >= 20171115
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20171108
+packetLen(0x0967, 10) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20170531
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20170524
+packetLen(0x0967, 26) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20170104
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#endif
+
+// Packet: 0x0968
+#if PACKETVER >= 20171129
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20171122
+packetLen(0x0968, -1) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20170607
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20170531
+packetLen(0x0968, -1) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20170524
+packetLen(0x0968, 6) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20170104
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#endif
+
+// Packet: 0x0969
+#if PACKETVER >= 20171227
+packetLen(0x0969, 6) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20170222
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20170215
+packetLen(0x0969, 5) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20170208
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20170201
+packetLen(0x0969, -1) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20170118
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20170111
+packetLen(0x0969, 26) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20170104
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#endif
+
+// Packet: 0x096a
+#if PACKETVER >= 20171227
+packetLen(0x096a, 18) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20171220
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20171129
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20171122
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20171115
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20171101
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20171002
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170913
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170906
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170830
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170823
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170809
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170801
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170719
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170621
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170517
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170426
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170412
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170322
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170315
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170308
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170228
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170222
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170215
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170201
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170125
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170118
+packetLen(0x096a, 8) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20170104
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#endif
+
+// Packet: 0x096b
+packetLen(0x096b, 4) // ZC_PRNPC_STATE
+
+// Packet: 0x096c
+packetLen(0x096c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+
+// Packet: 0x096d
+packetLen(0x096d, -1) // ZC_MERGE_ITEM_OPEN
+
+// Packet: 0x096e
+packetLen(0x096e, -1) // CZ_REQ_MERGE_ITEM
+
+// Packet: 0x096f
+packetLen(0x096f, 7) // ZC_ACK_MERGE_ITEM
+
+// Packet: 0x0970
+packetLen(0x0970, 31) // CH_MAKE_CHAR_NOT_STATS
+
+// Packet: 0x0971
+packetLen(0x0971, 6) // ZC_PARTY_RECRUIT_REFUSE_VOLUNTEER_TO_PM
+
+// Packet: 0x0972
+packetLen(0x0972, -1) // ZC_SAY_DIALOG2
+
+// Packet: 0x0973
+packetLen(0x0973, 7) // ZC_WAIT_DIALOG2
+
+// Packet: 0x0974
+packetLen(0x0974, 2) // CZ_CANCEL_MERGE_ITEM
+
+// Packet: 0x0975
+packetLen(0x0975, -1) // ZC_STORE_ITEMLIST_NORMAL_V2
+
+// Packet: 0x0976
+packetLen(0x0976, -1) // ZC_STORE_ITEMLIST_EQUIP_V2
+
+// Packet: 0x0977
+packetLen(0x0977, 14) // ZC_HP_INFO
+
+// Packet: 0x0978
+packetLen(0x0978, 6) // CZ_REQ_BEFORE_WORLD_INFO
+
+// Packet: 0x0979
+packetLen(0x0979, 50) // ZC_ACK_BEFORE_WORLD_INFO
+
+// Packet: 0x097a
+packetLen(0x097a, -1) // ZC_ALL_QUEST_LIST2
+
+// Packet: 0x097b
+packetLen(0x097b, -1) // ZC_PERSONAL_INFOMATION2
+
+// Packet: 0x097c
+packetLen(0x097c, 4) // CZ_REQ_RANKING
+
+// Packet: 0x097d
+packetLen(0x097d, 288) // ZC_ACK_RANKING
+
+// Packet: 0x097e
+packetLen(0x097e, 12) // ZC_UPDATE_RANKING_POINT
+
+// Packet: 0x097f
+packetLen(0x097f, -1) // ZC_SELECTCART
+
+// Packet: 0x0980
+packetLen(0x0980, 7) // CZ_SELECTCART
+
+// Packet: 0x0981
+packetLen(0x0981, -1) // ZC_PERSONAL_INFOMATION_CHN
+
+// Packet: 0x0982
+packetLen(0x0982, 7) // ZC_FATIGUE_CHN
+
+// Packet: 0x0983
+packetLen(0x0983, 29) // ZC_MSG_STATE_CHANGE3
+
+// Packet: 0x0984
+packetLen(0x0984, 28) // ZC_EFST_SET_ENTER2
+
+// Packet: 0x0985
+packetLen(0x0985, -1) // ZC_SKILL_POSTDELAY_LIST2
+
+// Packet: 0x0986
+packetLen(0x0986, 10) // AC_SHUTDOWN_NOTIFY
+
+// Packet: 0x0987
+packetLen(0x0987, -1) // CA_LOGIN6
+
+// Packet: 0x0988
+packetLen(0x0988, 6) // ZC_NOTIFY_CLAN_CONNECTINFO
+
+// Packet: 0x0989
+packetLen(0x0989, 2) // ZC_ACK_CLAN_LEAVE
+
+// Packet: 0x098a
+packetLen(0x098a, -1) // ZC_CLANINFO
+
+// Packet: 0x098b
+packetLen(0x098b, 2) // AC_REQ_NEW_USER
+
+// Packet: 0x098c
+packetLen(0x098c, 4) // CA_ACK_NEW_USER
+
+// Packet: 0x098d
+packetLen(0x098d, -1) // CZ_CLAN_CHAT
+
+// Packet: 0x098e
+packetLen(0x098e, -1) // ZC_NOTIFY_CLAN_CHAT
+
+// Packet: 0x098f
+packetLen(0x098f, -1) // CH_DELETE_CHAR3_EXT
+
+// Packet: 0x0990
+packetLen(0x0990, 31) // ZC_ITEM_PICKUP_ACK_V5
+
+// Packet: 0x0991
+packetLen(0x0991, -1) // ZC_INVENTORY_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0992
+packetLen(0x0992, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0993
+packetLen(0x0993, -1) // ZC_CART_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0994
+packetLen(0x0994, -1) // ZC_CART_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0995
+packetLen(0x0995, -1) // ZC_STORE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0996
+packetLen(0x0996, -1) // ZC_STORE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0997
+packetLen(0x0997, -1) // ZC_EQUIPWIN_MICROSCOPE_V5
+
+// Packet: 0x0998
+packetLen(0x0998, 8) // CZ_REQ_WEAR_EQUIP_V5
+
+// Packet: 0x0999
+packetLen(0x0999, 11) // ZC_ACK_WEAR_EQUIP_V5
+
+// Packet: 0x099a
+packetLen(0x099a, 9) // ZC_ACK_TAKEOFF_EQUIP_V5
+
+// Packet: 0x099b
+packetLen(0x099b, 8) // ZC_MAPPROPERTY_R2
+
+// Packet: 0x099c
+packetLen(0x099c, 6) // CH_REQ_CHARINFO_PER_PAGE
+
+// Packet: 0x099d
+packetLen(0x099d, -1) // HC_ACK_CHARINFO_PER_PAGE
+
+// Packet: 0x099e
+packetLen(0x099e, 12) // HC_QUEUE_ORDER
+
+// Packet: 0x099f
+packetLen(0x099f, -1) // ZC_SKILL_ENTRY4
+
+// Packet: 0x09a0
+packetLen(0x09a0, 10) // HC_CHARLIST_NOTIFY
+
+// Packet: 0x09a1
+packetLen(0x09a1, 2) // CH_CHARLIST_REQ
+
+// Packet: 0x09a2
+packetLen(0x09a2, 6) // AC_REQ_MOBILE_OTP
+
+// Packet: 0x09a3
+packetLen(0x09a3, -1) // CA_ACK_MOBILE_OTP
+
+// Packet: 0x09a4
+packetLen(0x09a4, 18) // ZC_DISPATCH_TIMING_INFO_CHN
+
+// Packet: 0x09a5
+packetLen(0x09a5, 7) // AC_REFUSE_LOGIN3
+
+// Packet: 0x09a6
+packetLen(0x09a6, 12) // ZC_BANKING_CHECK
+
+// Packet: 0x09a7
+packetLen(0x09a7, 10) // CZ_REQ_BANKING_DEPOSIT
+
+// Packet: 0x09a8
+packetLen(0x09a8, 16) // ZC_ACK_BANKING_DEPOSIT
+
+// Packet: 0x09a9
+packetLen(0x09a9, 10) // CZ_REQ_BANKING_WITHDRAW
+
+// Packet: 0x09aa
+packetLen(0x09aa, 16) // ZC_ACK_BANKING_WITHDRAW
+
+// Packet: 0x09ab
+packetLen(0x09ab, 6) // CZ_REQ_BANKING_CHECK
+
+// Packet: 0x09ac
+packetLen(0x09ac, -1) // CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO
+
+// Packet: 0x09ad
+packetLen(0x09ad, 10) // ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO
+
+// Packet: 0x09ae
+packetLen(0x09ae, 17) // CZ_REQ_APPLY_BARGAIN_SALE_ITEM
+
+// Packet: 0x09af
+packetLen(0x09af, 4) // ZC_ACK_APPLY_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b0
+packetLen(0x09b0, 8) // CZ_REQ_REMOVE_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b1
+packetLen(0x09b1, 4) // ZC_ACK_REMOVE_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b2
+packetLen(0x09b2, 8) // ZC_NOTIFY_BARGAIN_SALE_SELLING
+
+// Packet: 0x09b3
+packetLen(0x09b3, 4) // ZC_NOTIFY_BARGAIN_SALE_CLOSE
+
+// Packet: 0x09b4
+packetLen(0x09b4, 6) // CZ_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b5
+packetLen(0x09b5, 2) // ZC_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b6
+packetLen(0x09b6, 6) // CZ_REQ_OPEN_BANKING
+
+// Packet: 0x09b7
+packetLen(0x09b7, 4) // ZC_ACK_OPEN_BANKING
+
+// Packet: 0x09b8
+packetLen(0x09b8, 6) // CZ_REQ_CLOSE_BANKING
+
+// Packet: 0x09b9
+packetLen(0x09b9, 4) // ZC_ACK_CLOSE_BANKING
+
+// Packet: 0x09ba
+packetLen(0x09ba, 2) // CZ_REQ_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bb
+packetLen(0x09bb, 6) // ZC_ACK_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bc
+packetLen(0x09bc, 6) // CZ_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09bd
+packetLen(0x09bd, 2) // ZC_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09be
+packetLen(0x09be, 2) // CZ_REQ_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09bf
+packetLen(0x09bf, 4) // ZC_ACK_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09c1
+packetLen(0x09c1, 10) // ZC_C_MARKERINFO
+
+// Packet: 0x09c2
+packetLen(0x09c2, -1) // HC_SECRETSCAN_DATA
+
+// Packet: 0x09c3
+packetLen(0x09c3, 8) // CZ_REQ_COUNT_BARGAIN_SALE_ITEM
+
+// Packet: 0x09c4
+packetLen(0x09c4, 8) // ZC_ACK_COUNT_BARGAIN_SALE_ITEM
+
+// Packet: 0x09c5
+packetLen(0x09c5, 1042) // CS_LOGIN_QUERY
+
+// Packet: 0x09c6
+packetLen(0x09c6, -1) // SC_LOGIN_ANSWER
+
+// Packet: 0x09c7
+packetLen(0x09c7, 18) // SC_LOGIN_ERROR
+
+// Packet: 0x09c8
+packetLen(0x09c8, -1) // CA_LOGIN_OTP
+
+// Packet: 0x09c9
+packetLen(0x09c9, -1) // SC_SOCT
+
+// Packet: 0x09ca
+packetLen(0x09ca, -1) // ZC_SKILL_ENTRY5
+
+// Packet: 0x09cb
+packetLen(0x09cb, 17) // ZC_USE_SKILL2
+
+// Packet: 0x09cc
+packetLen(0x09cc, -1) // ZC_SECRETSCAN_DATA
+
+// Packet: 0x09cd
+packetLen(0x09cd, 8) // ZC_MSG_COLOR
+
+// Packet: 0x09ce
+packetLen(0x09ce, 102) // CZ_ITEM_CREATE_EX
+
+// Packet: 0x09cf
+packetLen(0x09cf, -1) // ZC_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d0
+packetLen(0x09d0, -1) // CZ_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d1
+packetLen(0x09d1, 14) // ZC_PROGRESS_ACTOR
+
+// Packet: 0x09d2
+packetLen(0x09d2, -1) // ZC_GUILDSTORAGE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x09d3
+packetLen(0x09d3, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x09d4
+packetLen(0x09d4, 2) // CZ_NPC_TRADE_QUIT
+
+// Packet: 0x09d5
+packetLen(0x09d5, -1) // ZC_NPC_MARKET_OPEN
+
+// Packet: 0x09d6
+packetLen(0x09d6, -1) // CZ_NPC_MARKET_PURCHASE
+
+// Packet: 0x09d7
+packetLen(0x09d7, -1) // ZC_NPC_MARKET_PURCHASE_RESULT
+
+// Packet: 0x09d8
+packetLen(0x09d8, 2) // CZ_NPC_MARKET_CLOSE
+
+// Packet: 0x09d9
+packetLen(0x09d9, 4) // CZ_REQ_GUILDSTORAGE_LOG
+
+// Packet: 0x09da
+packetLen(0x09da, -1) // ZC_ACK_GUILDSTORAGE_LOG
+
+// Packet: 0x09db
+packetLen(0x09db, -1) // ZC_NOTIFY_MOVEENTRY10
+
+// Packet: 0x09dc
+packetLen(0x09dc, -1) // ZC_NOTIFY_NEWENTRY10
+
+// Packet: 0x09dd
+packetLen(0x09dd, -1) // ZC_NOTIFY_STANDENTRY10
+
+// Packet: 0x09de
+packetLen(0x09de, -1) // ZC_WHISPER02
+
+// Packet: 0x09df
+packetLen(0x09df, 7) // ZC_ACK_WHISPER02
+
+// Packet: 0x09e0
+packetLen(0x09e0, -1) // SC_LOGIN_ANSWER_WITH_ID
+
+// Packet: 0x09e1
+packetLen(0x09e1, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_GUILDSTORAGE
+
+// Packet: 0x09e2
+packetLen(0x09e2, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_BODY
+
+// Packet: 0x09e3
+packetLen(0x09e3, 8) // CZ_MOVE_ITEM_FROM_CART_TO_GUILDSTORAGE
+
+// Packet: 0x09e4
+packetLen(0x09e4, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_CART
+
+// Packet: 0x09e5
+packetLen(0x09e5, 18) // ZC_DELETEITEM_FROM_MCSTORE2
+
+// Packet: 0x09e6
+packetLen(0x09e6, 22) // ZC_UPDATE_ITEM_FROM_BUYING_STORE2
+
+// Packet: 0x09e7
+packetLen(0x09e7, 3) // ZC_NOTIFY_UNREAD_RODEX
+
+// Packet: 0x09e8
+packetLen(0x09e8, 11) // CZ_OPEN_RODEXBOX
+
+// Packet: 0x09e9
+packetLen(0x09e9, 2) // CZ_CLOSE_RODEXBOX
+
+// Packet: 0x09ea
+packetLen(0x09ea, 11) // CZ_REQ_READ_RODEX
+
+// Packet: 0x09eb
+packetLen(0x09eb, -1) // ZC_ACK_READ_RODEX
+
+// Packet: 0x09ec
+packetLen(0x09ec, -1) // CZ_REQ_SEND_RODEX
+
+// Packet: 0x09ed
+packetLen(0x09ed, 3) // ZC_ACK_SEND_RODEX
+
+// Packet: 0x09ee
+packetLen(0x09ee, 11) // CZ_REQ_NEXT_RODEX
+
+// Packet: 0x09ef
+packetLen(0x09ef, 11) // CZ_REQ_REFRESH_RODEX
+
+// Packet: 0x09f0
+packetLen(0x09f0, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x09f1
+packetLen(0x09f1, 11) // CZ_REQ_ZENY_FROM_RODEX
+
+// Packet: 0x09f2
+packetLen(0x09f2, 12) // ZC_ACK_ZENY_FROM_RODEX
+
+// Packet: 0x09f3
+packetLen(0x09f3, 11) // CZ_REQ_ITEM_FROM_RODEX
+
+// Packet: 0x09f4
+packetLen(0x09f4, 12) // ZC_ACK_ITEM_FROM_RODEX
+
+// Packet: 0x09f5
+packetLen(0x09f5, 11) // CZ_REQ_DELETE_RODEX
+
+// Packet: 0x09f6
+packetLen(0x09f6, 11) // ZC_ACK_DELETE_RODEX
+
+// Packet: 0x09f7
+packetLen(0x09f7, 75) // ZC_PROPERTY_HOMUN_2
+
+// Packet: 0x09f8
+packetLen(0x09f8, -1) // ZC_ALL_QUEST_LIST3
+
+// Packet: 0x09f9
+packetLen(0x09f9, 143) // ZC_ADD_QUEST_EX
+
+// Packet: 0x09fa
+packetLen(0x09fa, -1) // ZC_UPDATE_MISSION_HUNT_EX
+
+// Packet: 0x09fb
+packetLen(0x09fb, -1) // CZ_PET_EVOLUTION
+
+// Packet: 0x09fc
+packetLen(0x09fc, 6) // ZC_PET_EVOLUTION_RESULT
+
+// Packet: 0x09fd
+packetLen(0x09fd, -1) // ZC_NOTIFY_MOVEENTRY11
+
+// Packet: 0x09fe
+packetLen(0x09fe, -1) // ZC_NOTIFY_NEWENTRY11
+
+// Packet: 0x09ff
+packetLen(0x09ff, -1) // ZC_NOTIFY_STANDENTRY11
+
+// Packet: 0x0a00
+packetLen(0x0a00, 269) // ZC_SHORTCUT_KEY_LIST_V3
+
+// Packet: 0x0a01
+packetLen(0x0a01, 3) // CZ_SHORTCUTKEYBAR_ROTATE
+
+// Packet: 0x0a02
+packetLen(0x0a02, 4) // ZC_DRESSROOM_OPEN
+
+// Packet: 0x0a03
+packetLen(0x0a03, 2) // CZ_REQ_CANCEL_WRITE_RODEX
+
+// Packet: 0x0a04
+packetLen(0x0a04, 6) // CZ_REQ_ADD_ITEM_RODEX
+
+// Packet: 0x0a05
+packetLen(0x0a05, 53) // ZC_ACK_ADD_ITEM_RODEX
+
+// Packet: 0x0a06
+packetLen(0x0a06, 6) // CZ_REQ_REMOVE_RODEX_ITEM
+
+// Packet: 0x0a07
+packetLen(0x0a07, 9) // ZC_ACK_REMOVE_RODEX_ITEM
+
+// Packet: 0x0a08
+packetLen(0x0a08, 26) // CZ_REQ_OPEN_WRITE_RODEX
+
+// Packet: 0x0a09
+packetLen(0x0a09, 45) // ZC_ADD_EXCHANGE_ITEM3
+
+// Packet: 0x0a0a
+packetLen(0x0a0a, 47) // ZC_ADD_ITEM_TO_STORE3
+
+// Packet: 0x0a0b
+packetLen(0x0a0b, 47) // ZC_ADD_ITEM_TO_CART3
+
+// Packet: 0x0a0c
+packetLen(0x0a0c, 56) // ZC_ITEM_PICKUP_ACK_V6
+
+// Packet: 0x0a0d
+packetLen(0x0a0d, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a0e
+packetLen(0x0a0e, 14) // ZC_BATTLEFIELD_NOTIFY_HP2
+
+// Packet: 0x0a0f
+packetLen(0x0a0f, -1) // ZC_CART_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a10
+packetLen(0x0a10, -1) // ZC_STORE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a11
+packetLen(0x0a11, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a12
+packetLen(0x0a12, 27) // ZC_ACK_OPEN_WRITE_RODEX
+
+// Packet: 0x0a13
+packetLen(0x0a13, 26) // CZ_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a14
+packetLen(0x0a14, 10) // ZC_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a15
+packetLen(0x0a15, 12) // ZC_GOLDPCCAFE_POINT
+
+// Packet: 0x0a16
+packetLen(0x0a16, 26) // CZ_DYNAMICNPC_CREATE_REQUEST
+
+// Packet: 0x0a17
+packetLen(0x0a17, 6) // ZC_DYNAMICNPC_CREATE_RESULT
+
+// Packet: 0x0a18
+packetLen(0x0a18, 14) // ZC_ACCEPT_ENTER3
+
+// Packet: 0x0a19
+packetLen(0x0a19, 2) // CZ_REQ_OPEN_ROULETTE
+
+// Packet: 0x0a1a
+packetLen(0x0a1a, 23) // ZC_ACK_OPEN_ROULETTE
+
+// Packet: 0x0a1b
+packetLen(0x0a1b, 2) // CZ_REQ_ROULETTE_INFO
+
+// Packet: 0x0a1c
+packetLen(0x0a1c, -1) // ZC_ACK_ROULEITTE_INFO
+
+// Packet: 0x0a1d
+packetLen(0x0a1d, 2) // CZ_REQ_CLOSE_ROULETTE
+
+// Packet: 0x0a1e
+packetLen(0x0a1e, 3) // ZC_ACK_CLOSE_ROULETTE
+
+// Packet: 0x0a1f
+packetLen(0x0a1f, 2) // CZ_REQ_GENERATE_ROULETTE
+
+// Packet: 0x0a20
+packetLen(0x0a20, 21) // ZC_ACK_GENERATE_ROULETTE
+
+// Packet: 0x0a21
+packetLen(0x0a21, 3) // CZ_RECV_ROULETTE_ITEM
+
+// Packet: 0x0a22
+packetLen(0x0a22, 5) // ZC_RECV_ROULETTE_ITEM
+
+// Packet: 0x0a23
+packetLen(0x0a23, -1) // ZC_ALL_ACH_LIST
+
+// Packet: 0x0a24
+packetLen(0x0a24, 66) // ZC_ACH_UPDATE
+
+// Packet: 0x0a25
+packetLen(0x0a25, 6) // CZ_REQ_ACH_REWARD
+
+// Packet: 0x0a26
+packetLen(0x0a26, 7) // ZC_REQ_ACH_REWARD_ACK
+
+// Packet: 0x0a27
+packetLen(0x0a27, 8) // ZC_RECOVERY2
+
+// Packet: 0x0a28
+packetLen(0x0a28, 3) // ZC_ACK_OPENSTORE2
+
+// Packet: 0x0a29
+packetLen(0x0a29, 6) // ZC_REQ_AU_BOT
+
+// Packet: 0x0a2a
+packetLen(0x0a2a, 6) // CZ_ACK_AU_BOT
+
+// Packet: 0x0a2b
+packetLen(0x0a2b, 14) // ZC_SE_CASHSHOP_OPEN2
+
+// Packet: 0x0a2c
+packetLen(0x0a2c, 12) // ZC_SE_PC_BUY_TAIWANCASHITEM_RESULT
+
+// Packet: 0x0a2d
+packetLen(0x0a2d, -1) // ZC_EQUIPWIN_MICROSCOPE_V6
+
+// Packet: 0x0a2e
+packetLen(0x0a2e, 6) // CZ_REQ_CHANGE_TITLE
+
+// Packet: 0x0a2f
+packetLen(0x0a2f, 7) // ZC_ACK_CHANGE_TITLE
+
+// Packet: 0x0a30
+packetLen(0x0a30, 106) // ZC_ACK_REQNAMEALL2
+
+// Packet: 0x0a31
+packetLen(0x0a31, -1) // ZC_RESULT_PACKAGE_ITEM_TEST
+
+// Packet: 0x0a32
+packetLen(0x0a32, 2) // ZC_OPEN_RODEX_THROUGH_NPC_ONLY
+
+// Packet: 0x0a33
+packetLen(0x0a33, 7) // ZC_UPDATE_ROULETTE_COIN
+
+// Packet: 0x0a34
+packetLen(0x0a34, 6) // ZC_UPDATE_TAIWANCASH
+
+// Packet: 0x0a35
+packetLen(0x0a35, 4) // CZ_REQ_ONECLICK_ITEMIDENTIFY
+
+// Packet: 0x0a36
+packetLen(0x0a36, 7) // ZC_HP_INFO_TINY
+
+// Packet: 0x0a37
+packetLen(0x0a37, 59) // ZC_ITEM_PICKUP_ACK_V7
+
+// Packet: 0x0a38
+packetLen(0x0a38, 3) // ZC_OPEN_UI
+
+// Packet: 0x0a39
+packetLen(0x0a39, 36) // CH_MAKE_CHAR
+
+// Packet: 0x0a3a
+packetLen(0x0a3a, 12)
+
+// Packet: 0x0a3b
+packetLen(0x0a3b, -1) // ZC_CUSTOM_HAT_EFFECT
+
+// Packet: 0x0a3c
+packetLen(0x0a3c, -1)
+
+// Packet: 0x0a3d
+packetLen(0x0a3d, 18)
+
+// Packet: 0x0a3e
+packetLen(0x0a3e, -1)
+
+// Packet: 0x0a3f
+packetLen(0x0a3f, 9)
+
+// Packet: 0x0a40
+packetLen(0x0a40, 11)
+
+// Packet: 0x0a41
+packetLen(0x0a41, 18) // ZC_AOE_EFFECT_SKILL
+
+// Packet: 0x0a42
+packetLen(0x0a42, 43)
+
+// Packet: 0x0a43
+packetLen(0x0a43, 85) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0a44
+packetLen(0x0a44, -1) // ZC_GROUP_LIST
+
+// Packet: 0x0a46
+packetLen(0x0a46, 14)
+
+// Packet: 0x0a47
+packetLen(0x0a47, 3) // ZC_STYLE_CHANGE_RES
+
+// Packet: 0x0a48
+packetLen(0x0a48, 2)
+
+// Packet: 0x0a49
+#if PACKETVER >= 20170830
+packetLen(0x0a49, 20) // CZ_PRIVATE_AIRSHIP_REQUEST
+#elif PACKETVER >= 20170104
+packetLen(0x0a49, 22) // CZ_PRIVATE_AIRSHIP_REQUEST
+#endif
+
+// Packet: 0x0a4a
+packetLen(0x0a4a, 6) // ZC_PRIVATE_AIRSHIP_RESPONSE
+
+// Packet: 0x0a4b
+packetLen(0x0a4b, 22) // ZC_AIRSHIP_MAPMOVE
+
+// Packet: 0x0a4c
+packetLen(0x0a4c, 28) // ZC_AIRSHIP_SERVERMOVE
+
+// Packet: 0x0a4d
+packetLen(0x0a4d, -1)
+
+// Packet: 0x0a4e
+packetLen(0x0a4e, 4)
+
+// Packet: 0x0a4f
+packetLen(0x0a4f, -1)
+
+// Packet: 0x0a50
+packetLen(0x0a50, 4)
+
+// Packet: 0x0a51
+packetLen(0x0a51, 34) // ZC_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a52
+packetLen(0x0a52, 20)
+
+// Packet: 0x0a53
+packetLen(0x0a53, 10)
+
+// Packet: 0x0a54
+packetLen(0x0a54, -1)
+
+// Packet: 0x0a55
+packetLen(0x0a55, 2)
+
+// Packet: 0x0a56
+packetLen(0x0a56, 6)
+
+// Packet: 0x0a57
+packetLen(0x0a57, 6)
+
+// Packet: 0x0a58
+packetLen(0x0a58, 8)
+
+// Packet: 0x0a59
+packetLen(0x0a59, -1)
+
+// Packet: 0x0a5a
+packetLen(0x0a5a, 2)
+
+// Packet: 0x0a5b
+packetLen(0x0a5b, 7)
+
+// Packet: 0x0a5c
+packetLen(0x0a5c, 18)
+
+// Packet: 0x0a5d
+packetLen(0x0a5d, 6)
+
+// Packet: 0x0a68
+packetLen(0x0a68, 3) // CZ_REQ_OPEN_UI
+
+// Packet: 0x0a69
+packetLen(0x0a69, 6)
+
+// Packet: 0x0a6a
+packetLen(0x0a6a, 12)
+
+// Packet: 0x0a6b
+packetLen(0x0a6b, -1)
+
+// Packet: 0x0a6c
+packetLen(0x0a6c, 7)
+
+// Packet: 0x0a6d
+packetLen(0x0a6d, -1)
+
+// Packet: 0x0a6e
+packetLen(0x0a6e, -1) // CZ_REQ_SEND_RODEX
+
+// Packet: 0x0a6f
+packetLen(0x0a6f, -1) // ZC_FORMATSTRING_MSG_COLOR
+
+// Packet: 0x0a70
+packetLen(0x0a70, 2)
+
+// Packet: 0x0a71
+packetLen(0x0a71, -1)
+
+// Packet: 0x0a72
+packetLen(0x0a72, 61)
+
+// Packet: 0x0a73
+packetLen(0x0a73, 2)
+
+// Packet: 0x0a74
+packetLen(0x0a74, 8)
+
+// Packet: 0x0a76
+packetLen(0x0a76, 80)
+
+// Packet: 0x0a77
+packetLen(0x0a77, 15)
+
+// Packet: 0x0a78
+packetLen(0x0a78, 15)
+
+// Packet: 0x0a79
+packetLen(0x0a79, -1)
+
+// Packet: 0x0a7b
+packetLen(0x0a7b, -1)
+
+// Packet: 0x0a7c
+packetLen(0x0a7c, -1)
+
+// Packet: 0x0a7d
+packetLen(0x0a7d, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x0a7e
+packetLen(0x0a7e, -1) // ZC_OFFLINE_STORE_OWNER_ITEMS_READY
+
+// Packet: 0x0a7f
+packetLen(0x0a7f, -1) // CZ_OFFLINE_STORE_CREATE
+
+// Packet: 0x0a80
+packetLen(0x0a80, 6)
+
+// Packet: 0x0a81
+packetLen(0x0a81, 4)
+
+// Packet: 0x0a82
+packetLen(0x0a82, 46)
+
+// Packet: 0x0a83
+packetLen(0x0a83, 46)
+
+// Packet: 0x0a84
+packetLen(0x0a84, 94) // ZC_GUILD_INFO
+
+// Packet: 0x0a85
+packetLen(0x0a85, 82)
+
+// Packet: 0x0a86
+packetLen(0x0a86, -1)
+
+// Packet: 0x0a87
+packetLen(0x0a87, -1)
+
+// Packet: 0x0a88
+packetLen(0x0a88, 2)
+
+// Packet: 0x0a89
+packetLen(0x0a89, 57) // ZC_NOTIFY_OFFLINE_STORE
+
+// Packet: 0x0a8a
+packetLen(0x0a8a, 6) // ZC_OFFLINE_STORE_VANISH
+
+// Packet: 0x0a8b
+packetLen(0x0a8b, 2)
+
+// Packet: 0x0a8c
+packetLen(0x0a8c, 2)
+
+// Packet: 0x0a8d
+packetLen(0x0a8d, -1) // ZC_OFFLINE_STORE_OWNER_ITEMS
+
+// Packet: 0x0a8e
+packetLen(0x0a8e, 2)
+
+// Packet: 0x0a8f
+packetLen(0x0a8f, 2)
+
+// Packet: 0x0a90
+packetLen(0x0a90, 3)
+
+// Packet: 0x0a91
+packetLen(0x0a91, -1) // ZC_OFFLINE_STORE_ITEMS
+
+// Packet: 0x0a92
+packetLen(0x0a92, -1)
+
+// Packet: 0x0a93
+packetLen(0x0a93, 3)
+
+// Packet: 0x0a94
+packetLen(0x0a94, 2)
+
+// Packet: 0x0a95
+packetLen(0x0a95, 4)
+
+// Packet: 0x0a96
+packetLen(0x0a96, 51) // ZC_ADD_EXCHANGE_ITEM4
+
+// Packet: 0x0a97
+packetLen(0x0a97, 8) // CZ_ALT_EQUIPMENT_EQUIP
+
+// Packet: 0x0a98
+#if PACKETVER >= 20170426
+packetLen(0x0a98, 10) // ZC_ALT_EQUIPMENT_EQUIP
+#elif PACKETVER >= 20170104
+packetLen(0x0a98, 12) // ZC_ALT_EQUIPMENT_EQUIP
+#endif
+
+// Packet: 0x0a99
+#if PACKETVER >= 20170419
+packetLen(0x0a99, 4)
+#elif PACKETVER >= 20170104
+packetLen(0x0a99, 8)
+#endif
+
+// Packet: 0x0a9a
+packetLen(0x0a9a, 10) // ZC_ALT_EQUIPMENT_REMOVE
+
+// Packet: 0x0a9b
+packetLen(0x0a9b, -1) // ZC_ALT_EQUIPMENT_ITEMS
+
+// Packet: 0x0a9c
+packetLen(0x0a9c, 2)
+
+// Packet: 0x0a9d
+packetLen(0x0a9d, 4)
+
+// Packet: 0x0a9e
+packetLen(0x0a9e, 2)
+
+// Packet: 0x0a9f
+packetLen(0x0a9f, 2)
+
+// Packet: 0x0aa0
+packetLen(0x0aa0, 2) // ZC_REFINE_OPEN_WINDOW
+
+// Packet: 0x0aa1
+packetLen(0x0aa1, 4) // CZ_REFINE_ADD_ITEM
+
+// Packet: 0x0aa2
+packetLen(0x0aa2, -1) // ZC_REFINE_ADD_ITEM
+
+// Packet: 0x0aa3
+packetLen(0x0aa3, 7) // CZ_REFINE_ITEM_REQUEST
+
+// Packet: 0x0aa4
+packetLen(0x0aa4, 2) // CZ_REFINE_WINDOW_CLOSE
+
+// Packet: 0x0aa5
+packetLen(0x0aa5, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0aa6
+packetLen(0x0aa6, 36) // ZC_MEMBER_ADD
+
+// Packet: 0x0aa7
+packetLen(0x0aa7, 6) // ZC_INVENTORY_MOVE_FAILED
+
+// Packet: 0x0aa8
+packetLen(0x0aa8, 5)
+
+// Packet: 0x0aa9
+packetLen(0x0aa9, -1)
+
+// Packet: 0x0aaa
+packetLen(0x0aaa, -1)
+
+// Packet: 0x0aab
+packetLen(0x0aab, -1)
+
+// Packet: 0x0aac
+#if PACKETVER >= 20170329
+packetLen(0x0aac, 69)
+#elif PACKETVER >= 20170104
+packetLen(0x0aac, 67)
+#endif
+
+// Packet: 0x0aad
+#if PACKETVER >= 20170118
+packetLen(0x0aad, 51)
+#elif PACKETVER >= 20170104
+packetLen(0x0aad, 47)
+#endif
+
+// Packet: 0x0aae
+packetLen(0x0aae, 2)
+
+// Packet: 0x0aaf
+packetLen(0x0aaf, 6)
+
+// Packet: 0x0ab0
+packetLen(0x0ab0, 6)
+
+// Packet: 0x0ab1
+packetLen(0x0ab1, 14)
+
+// Packet: 0x0ab2
+packetLen(0x0ab2, 7) // ZC_GROUP_ISALIVE
+
+// Packet: 0x0ab3
+#if PACKETVER >= 20170118
+packetLen(0x0ab3, 19)
+#elif PACKETVER >= 20170104
+packetLen(0x0ab3, 15)
+#endif
+
+// Packet: 0x0ab4
+#if PACKETVER >= 20170111
+packetLen(0x0ab4, 4)
+#endif
+
+// Packet: 0x0ab5
+#if PACKETVER >= 20170111
+packetLen(0x0ab5, 2)
+#endif
+
+// Packet: 0x0ab6
+#if PACKETVER >= 20170111
+packetLen(0x0ab6, 6)
+#endif
+
+// Packet: 0x0ab7
+#if PACKETVER >= 20170111
+packetLen(0x0ab7, 4)
+#endif
+
+// Packet: 0x0ab8
+#if PACKETVER >= 20170111
+packetLen(0x0ab8, 2)
+#endif
+
+// Packet: 0x0ab9
+#if PACKETVER >= 20170111
+packetLen(0x0ab9, 39) // ZC_ITEM_PREVIEW
+#endif
+
+// Packet: 0x0aba
+#if PACKETVER >= 20170118
+packetLen(0x0aba, 2)
+#endif
+
+// Packet: 0x0abb
+#if PACKETVER >= 20170118
+packetLen(0x0abb, 2)
+#endif
+
+// Packet: 0x0abc
+#if PACKETVER >= 20170201
+packetLen(0x0abc, -1)
+#endif
+
+// Packet: 0x0abd
+#if PACKETVER >= 20170215
+packetLen(0x0abd, 10) // ZC_PARTY_MEMBER_JOB_LEVEL
+#endif
+
+// Packet: 0x0abe
+#if PACKETVER >= 20170228
+packetLen(0x0abe, -1) // ZC_WARPLIST
+#elif PACKETVER >= 20170222
+packetLen(0x0abe, 116) // ZC_WARPLIST
+#endif
+
+// Packet: 0x0abf
+#if PACKETVER >= 20170228
+packetLen(0x0abf, -1)
+#elif PACKETVER >= 20170222
+packetLen(0x0abf, 114)
+#endif
+
+// Packet: 0x0ac0
+#if PACKETVER >= 20170228
+packetLen(0x0ac0, 26) // CZ_OPEN_RODEXBOX
+#endif
+
+// Packet: 0x0ac1
+#if PACKETVER >= 20170228
+packetLen(0x0ac1, 26) // CZ_REQ_REFRESH_RODEX
+#endif
+
+// Packet: 0x0ac2
+#if PACKETVER >= 20170228
+packetLen(0x0ac2, -1) // ZC_ACK_RODEX_LIST
+#endif
+
+// Packet: 0x0ac3
+#if PACKETVER >= 20170228
+packetLen(0x0ac3, 2)
+#endif
+
+// Packet: 0x0ac4
+#if PACKETVER >= 20170228
+packetLen(0x0ac4, -1) // AC_ACCEPT_LOGIN
+#endif
+
+// Packet: 0x0ac5
+#if PACKETVER >= 20170228
+packetLen(0x0ac5, 156) // HC_NOTIFY_ZONESVR
+#endif
+
+// Packet: 0x0ac6
+#if PACKETVER >= 20170228
+packetLen(0x0ac6, 156)
+#endif
+
+// Packet: 0x0ac7
+#if PACKETVER >= 20170228
+packetLen(0x0ac7, 156) // ZC_NPCACK_SERVERMOVE
+#endif
+
+// Packet: 0x0ac8
+#if PACKETVER >= 20170308
+packetLen(0x0ac8, 2) // ZC_UNKNOWN_CLEAN_ITEMS_LISTS
+#endif
+
+// Packet: 0x0ac9
+#if PACKETVER >= 20170308
+packetLen(0x0ac9, -1)
+#endif
+
+// Packet: 0x0aca
+#if PACKETVER >= 20170322
+packetLen(0x0aca, 3)
+#endif
+
+// Packet: 0x0acb
+#if PACKETVER >= 20170405
+packetLen(0x0acb, 12) // ZC_PAR_CHANGE
+#endif
+
+// Packet: 0x0acc
+#if PACKETVER >= 20170405
+packetLen(0x0acc, 18) // ZC_NOTIFY_EXP
+#endif
+
+// Packet: 0x0acd
+#if PACKETVER >= 20170419
+packetLen(0x0acd, 23)
+#endif
+
+// Packet: 0x0ace
+#if PACKETVER >= 20170502
+packetLen(0x0ace, 4)
+#endif
+
+// Packet: 0x0acf
+#if PACKETVER >= 20171115
+packetLen(0x0acf, 68) // CA_LOGIN_OTP
+#elif PACKETVER >= 20170705
+packetLen(0x0acf, 64) // CA_LOGIN_OTP
+#elif PACKETVER >= 20170621
+packetLen(0x0acf, 57) // CA_LOGIN_OTP
+#elif PACKETVER >= 20170614
+packetLen(0x0acf, 52) // CA_LOGIN_OTP
+#endif
+
+// Packet: 0x0ad0
+#if PACKETVER >= 20170614
+packetLen(0x0ad0, 11) // CA_OTP_CODE
+#endif
+
+// Packet: 0x0ad1
+#if PACKETVER >= 20170614
+packetLen(0x0ad1, -1)
+#endif
+
+// Packet: 0x0ad2
+#if PACKETVER >= 20170719
+packetLen(0x0ad2, 30)
+#endif
+
+// Packet: 0x0ad3
+#if PACKETVER >= 20170719
+packetLen(0x0ad3, -1)
+#endif
+
+// Packet: 0x0ad4
+#if PACKETVER >= 20170719
+packetLen(0x0ad4, -1)
+#endif
+
+// Packet: 0x0ad5
+#if PACKETVER >= 20170719
+packetLen(0x0ad5, 2)
+#endif
+
+// Packet: 0x0ad6
+#if PACKETVER >= 20170719
+packetLen(0x0ad6, 2)
+#endif
+
+// Packet: 0x0ad7
+#if PACKETVER >= 20170719
+packetLen(0x0ad7, 8)
+#endif
+
+// Packet: 0x0ad8
+#if PACKETVER >= 20170719
+packetLen(0x0ad8, 8)
+#endif
+
+// Packet: 0x0ad9
+#if PACKETVER >= 20170719
+packetLen(0x0ad9, -1)
+#endif
+
+// Packet: 0x0ada
+#if PACKETVER >= 20170726
+packetLen(0x0ada, 30) // ZC_REFINE_STATUS
+#endif
+
+// Packet: 0x0adb
+#if PACKETVER >= 20170830
+packetLen(0x0adb, -1)
+#endif
+
+// Packet: 0x0adc
+#if PACKETVER >= 20170906
+packetLen(0x0adc, 6) // ZC_EQUIPWIN_OTHER
+#endif
+
+// Packet: 0x0add
+#if PACKETVER >= 20170913
+packetLen(0x0add, 22) // ZC_ITEM_FALL_ENTRY
+#endif
+
+// Packet: 0x0ade
+#if PACKETVER >= 20170920
+packetLen(0x0ade, 6) // ZC_OVERWEIGHT_PERCENT
+#endif
+
+// Packet: 0x0adf
+#if PACKETVER >= 20170920
+packetLen(0x0adf, 58) // ZC_ACK_REQNAME
+#endif
+
+// Packet: 0x0ae0
+#if PACKETVER >= 20170927
+packetLen(0x0ae0, 30)
+#endif
+
+// Packet: 0x0ae1
+#if PACKETVER >= 20171101
+packetLen(0x0ae1, 28)
+#endif
+
+// Packet: 0x0ae2
+#if PACKETVER >= 20171115
+packetLen(0x0ae2, 7) // ZC_OPEN_UI
+#endif
+
+// Packet: 0x0ae3
+#if PACKETVER >= 20171213
+packetLen(0x0ae3, -1) // AC_LOGIN_OTP
+#endif
+
+// Packet: 0x0ae4
+#if PACKETVER >= 20171206
+packetLen(0x0ae4, 89) // ZC_ADD_MEMBER_TO_GROUP
+#endif
+
+// Packet: 0x0ae5
+#if PACKETVER >= 20171206
+packetLen(0x0ae5, -1) // ZC_GROUP_LIST
+#endif
+
+// Packet: 0x0ae6
+#if PACKETVER >= 20171213
+packetLen(0x0ae6, 30)
+#endif
+
+// Packet: 0x0ae7
+#if PACKETVER >= 20171213
+packetLen(0x0ae7, 30)
+#endif
+
+// Packet: 0x0ae8
+#if PACKETVER >= 20171220
+packetLen(0x0ae8, 2)
+#endif
+
+// Packet: 0x0ae9
+#if PACKETVER >= 20171220
+packetLen(0x0ae9, 64) // HC_SECOND_PASSWD_LOGIN
+#endif
+
+// Packet: 0x0aea
+#if PACKETVER >= 20171227
+packetLen(0x0aea, 2)
+#elif PACKETVER >= 20171220
+packetLen(0x0aea, 11)
+#endif
+
+// Packet: 0x0aeb
+#if PACKETVER >= 20171227
+packetLen(0x0aeb, 11)
+#endif
+
+// Packet: 0x0aec
+#if PACKETVER >= 20171227
+packetLen(0x0aec, 2)
+#endif
+
+
+#endif /* COMMON_PACKETS2017_LEN_RE_H */
diff --git a/src/common/packets/packets2017_len_zero.h b/src/common/packets/packets2017_len_zero.h
new file mode 100644
index 000000000..910de7ca9
--- /dev/null
+++ b/src/common/packets/packets2017_len_zero.h
@@ -0,0 +1,5375 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2017_LEN_ZERO_H
+#define COMMON_PACKETS2017_LEN_ZERO_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 157) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 22) // CZ_ENTER
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 44) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 10) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, 14)
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+packetLen(0x0094, 19) // CZ_REQNAME
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+packetLen(0x00a7, 9)
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 9) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+packetLen(0x00f7, 17) // CZ_REQUEST_TIME
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+packetLen(0x0113, 25) // CZ_USE_SKILL
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 37) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 5) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+#if PACKETVER >= 20171130
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20171127
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20171123
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20171121
+packetLen(0x0202, 36) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20171115
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20171018
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+
+// Packet: 0x022b
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+
+// Packet: 0x022c
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+
+// Packet: 0x022d
+#if PACKETVER >= 20171130
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20171127
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20171123
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20171121
+packetLen(0x022d, -1) // CZ_COMMAND_MER
+#elif PACKETVER >= 20171115
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20171018
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+#endif
+
+// Packet: 0x022e
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+
+// Packet: 0x022f
+packetLen(0x022f, 5) // ZC_FEED_MER
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+#if PACKETVER >= 20171130
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20171127
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20171115
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20171018
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+#endif
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+
+// Packet: 0x0275
+packetLen(0x0275, 37) // CH_ENTER2
+
+// Packet: 0x0276
+packetLen(0x0276, -1) // AC_ACCEPT_LOGIN2
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+#if PACKETVER >= 20171227
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20171220
+packetLen(0x0281, 10) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20171214
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20171206
+packetLen(0x0281, 10) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20171204
+packetLen(0x0281, 6) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20171130
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20171127
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20171121
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20171115
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20171018
+packetLen(0x0281, 4) // CZ_GANGSI_RANK
+#endif
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+
+// Packet: 0x0288
+packetLen(0x0288, -1) // CZ_PC_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0289
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0296
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0297
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0298
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+
+// Packet: 0x0299
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+
+// Packet: 0x029a
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+
+// Packet: 0x029b
+packetLen(0x029b, 80) // ZC_MER_INIT
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a5
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+
+// Packet: 0x02a6
+packetLen(0x02a6, -1) // ZC_HACKSH_CPX_MSG
+
+// Packet: 0x02a7
+packetLen(0x02a7, -1) // CZ_HACKSH_CPX_MSG
+
+// Packet: 0x02aa
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+
+// Packet: 0x02ab
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+
+// Packet: 0x02ac
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+
+// Packet: 0x02ad
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+
+// Packet: 0x02b0
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+
+// Packet: 0x02b1
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+
+// Packet: 0x02b2
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+
+// Packet: 0x02b3
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+
+// Packet: 0x02b4
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+
+// Packet: 0x02b5
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+
+// Packet: 0x02b6
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+
+// Packet: 0x02b7
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+
+// Packet: 0x02b8
+packetLen(0x02b8, 22) // ZC_ITEM_PICKUP_PARTY
+
+// Packet: 0x02b9
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+
+// Packet: 0x02ba
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+
+// Packet: 0x02bb
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+
+// Packet: 0x02bc
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+
+// Packet: 0x02c1
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+
+// Packet: 0x02c2
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+
+// Packet: 0x02c4
+#if PACKETVER >= 20171220
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20171214
+packetLen(0x02c4, 6) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20171115
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20171018
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+#endif
+
+// Packet: 0x02c5
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c6
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+
+// Packet: 0x02c7
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c8
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+
+// Packet: 0x02c9
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+
+// Packet: 0x02ca
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+
+// Packet: 0x02cb
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+
+// Packet: 0x02cc
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+
+// Packet: 0x02cd
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+
+// Packet: 0x02ce
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+
+// Packet: 0x02cf
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+
+// Packet: 0x02d0
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d1
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d2
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d3
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+
+// Packet: 0x02d4
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+
+// Packet: 0x02d5
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+
+// Packet: 0x02d6
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d7
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d8
+packetLen(0x02d8, 10) // CZ_CONFIG
+
+// Packet: 0x02d9
+packetLen(0x02d9, 10) // ZC_CONFIG
+
+// Packet: 0x02da
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+
+// Packet: 0x02db
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+
+// Packet: 0x02dc
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+
+// Packet: 0x02dd
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+
+// Packet: 0x02de
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+
+// Packet: 0x02df
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+
+// Packet: 0x02e0
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+
+// Packet: 0x02e1
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+
+// Packet: 0x02e2
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+
+// Packet: 0x02e3
+packetLen(0x02e3, 22) // CZ_USE_SKILL_NEW_JAPEN
+
+// Packet: 0x02e4
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+
+// Packet: 0x02e5
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+
+// Packet: 0x02e6
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+
+// Packet: 0x02e7
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+
+// Packet: 0x02e8
+packetLen(0x02e8, -1) // ZC_NORMAL_ITEMLIST3
+
+// Packet: 0x02e9
+packetLen(0x02e9, -1) // ZC_CART_NORMAL_ITEMLIST3
+
+// Packet: 0x02ea
+packetLen(0x02ea, -1) // ZC_STORE_NORMAL_ITEMLIST3
+
+// Packet: 0x02eb
+packetLen(0x02eb, 13) // ZC_ACCEPT_ENTER2
+
+// Packet: 0x02ec
+packetLen(0x02ec, 67) // ZC_NOTIFY_MOVEENTRY4
+
+// Packet: 0x02ed
+packetLen(0x02ed, 59) // ZC_NOTIFY_NEWENTRY4
+
+// Packet: 0x02ee
+packetLen(0x02ee, 60) // ZC_NOTIFY_STANDENTRY4
+
+// Packet: 0x02ef
+packetLen(0x02ef, 8) // ZC_NOTIFY_FONT
+
+// Packet: 0x02f0
+packetLen(0x02f0, 10) // ZC_PROGRESS
+
+// Packet: 0x02f1
+packetLen(0x02f1, 2) // CZ_PROGRESS
+
+// Packet: 0x02f2
+packetLen(0x02f2, 2) // ZC_PROGRESS_CANCEL
+
+// Packet: 0x02f3
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+
+// Packet: 0x02f4
+packetLen(0x02f4, 3) // ZC_IRMAIL_SEND_RES
+
+// Packet: 0x02f5
+packetLen(0x02f5, 7) // ZC_IRMAIL_NOTIFY
+
+// Packet: 0x02f6
+packetLen(0x02f6, 7) // CZ_IRMAIL_LIST
+
+// Packet: 0x035c
+packetLen(0x035c, 2) // CZ_OPEN_SIMPLE_CASHSHOP_ITEMLIST
+
+// Packet: 0x035d
+packetLen(0x035d, -1) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+
+// Packet: 0x035e
+packetLen(0x035e, 2) // CZ_CLOSE_WINDOW
+
+// Packet: 0x035f
+#if PACKETVER >= 20171206
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20171204
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20171130
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20171115
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20171018
+packetLen(0x035f, 5) // CZ_REQUEST_MOVE2
+#endif
+
+// Packet: 0x0360
+#if PACKETVER >= 20171206
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20171204
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20171130
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20171018
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#endif
+
+// Packet: 0x0361
+#if PACKETVER >= 20171204
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20171130
+packetLen(0x0361, 18) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20171127
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20171115
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20171018
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#endif
+
+// Packet: 0x0362
+#if PACKETVER >= 20171130
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20171127
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20171123
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20171018
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#endif
+
+// Packet: 0x0363
+#if PACKETVER >= 20171130
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20171127
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20171123
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20171121
+packetLen(0x0363, -1) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20171115
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20171018
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+#endif
+
+// Packet: 0x0364
+#if PACKETVER >= 20171130
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20171127
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20171121
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20171018
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#endif
+
+// Packet: 0x0365
+#if PACKETVER >= 20171130
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20171127
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20171121
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20171115
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20171018
+packetLen(0x0365, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#endif
+
+// Packet: 0x0366
+#if PACKETVER >= 20171214
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20171206
+packetLen(0x0366, 6) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20171130
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20171115
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20171018
+packetLen(0x0366, 10) // CZ_USE_SKILL_TOGROUND2
+#endif
+
+// Packet: 0x0367
+#if PACKETVER >= 20171127
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20171123
+packetLen(0x0367, 5) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20171115
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20171018
+packetLen(0x0367, 90) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#endif
+
+// Packet: 0x0368
+#if PACKETVER >= 20171206
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20171204
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20171130
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20171018
+packetLen(0x0368, 6) // CZ_REQNAME2
+#endif
+
+// Packet: 0x0369
+#if PACKETVER >= 20171206
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20171204
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20171130
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20171115
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20171018
+packetLen(0x0369, 6) // CZ_REQNAME_BYGID2
+#endif
+
+// Packet: 0x03dd
+packetLen(0x03dd, 18) // AHC_GAME_GUARD
+
+// Packet: 0x03de
+packetLen(0x03de, 18) // CAH_ACK_GAME_GUARD
+
+// Packet: 0x0436
+#if PACKETVER >= 20171214
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20171206
+packetLen(0x0436, 6) // CZ_ENTER2
+#elif PACKETVER >= 20171130
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20171127
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20171115
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20171018
+packetLen(0x0436, 19) // CZ_ENTER2
+#endif
+
+// Packet: 0x0437
+#if PACKETVER >= 20171206
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20171204
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20171130
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20171115
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20171018
+packetLen(0x0437, 7) // CZ_REQUEST_ACT2
+#endif
+
+// Packet: 0x0438
+#if PACKETVER >= 20171227
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20171214
+packetLen(0x0438, 6) // CZ_USE_SKILL2
+#elif PACKETVER >= 20171206
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20171204
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20171130
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20171018
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#endif
+
+// Packet: 0x0439
+packetLen(0x0439, 8) // CZ_USE_ITEM2
+
+// Packet: 0x043d
+packetLen(0x043d, 8) // ZC_SKILL_POSTDELAY
+
+// Packet: 0x043e
+packetLen(0x043e, -1) // ZC_SKILL_POSTDELAY_LIST
+
+// Packet: 0x043f
+packetLen(0x043f, 25) // ZC_MSG_STATE_CHANGE2
+
+// Packet: 0x0440
+packetLen(0x0440, 10) // ZC_MILLENNIUMSHIELD
+
+// Packet: 0x0441
+packetLen(0x0441, 4) // ZC_SKILLINFO_DELETE
+
+// Packet: 0x0442
+packetLen(0x0442, -1) // ZC_SKILL_SELECT_REQUEST
+
+// Packet: 0x0443
+packetLen(0x0443, 8) // CZ_SKILL_SELECT_RESPONSE
+
+// Packet: 0x0444
+packetLen(0x0444, -1) // ZC_SIMPLE_CASH_POINT_ITEMLIST
+
+// Packet: 0x0445
+packetLen(0x0445, 10) // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0446
+packetLen(0x0446, 14) // ZC_QUEST_NOTIFY_EFFECT
+
+// Packet: 0x0447
+packetLen(0x0447, 2) // CZ_BLOCKING_PLAY_CANCEL
+
+// Packet: 0x0448
+packetLen(0x0448, -1) // HC_CHARACTER_LIST
+
+// Packet: 0x0449
+packetLen(0x0449, 4) // ZC_HACKSH_ERROR_MSG
+
+// Packet: 0x044a
+packetLen(0x044a, 6) // CZ_CLIENT_VERSION
+
+// Packet: 0x044b
+packetLen(0x044b, 2) // CZ_CLOSE_SIMPLECASH_SHOP
+
+// Packet: 0x07d7
+packetLen(0x07d7, 8) // CZ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d8
+packetLen(0x07d8, 8) // ZC_REQ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d9
+packetLen(0x07d9, 268) // ZC_SHORTCUT_KEY_LIST_V2
+
+// Packet: 0x07da
+packetLen(0x07da, 6) // CZ_CHANGE_GROUP_MASTER
+
+// Packet: 0x07db
+packetLen(0x07db, 8) // ZC_HO_PAR_CHANGE
+
+// Packet: 0x07dc
+packetLen(0x07dc, 6) // CZ_SEEK_PARTY
+
+// Packet: 0x07dd
+packetLen(0x07dd, 54) // ZC_SEEK_PARTY
+
+// Packet: 0x07de
+packetLen(0x07de, 30) // CZ_SEEK_PARTY_MEMBER
+
+// Packet: 0x07df
+packetLen(0x07df, 54) // ZC_SEEK_PARTY_MEMBER
+
+// Packet: 0x07e0
+packetLen(0x07e0, 58) // ZC_ES_NOTI_MYINFO
+
+// Packet: 0x07e1
+packetLen(0x07e1, 15) // ZC_SKILLINFO_UPDATE2
+
+// Packet: 0x07e2
+packetLen(0x07e2, 8) // ZC_MSG_VALUE
+
+// Packet: 0x07e3
+packetLen(0x07e3, 6) // ZC_ITEMLISTWIN_OPEN
+
+// Packet: 0x07e4
+#if PACKETVER >= 20171130
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20171127
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20171121
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20171115
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20171018
+packetLen(0x07e4, -1) // CZ_ITEMLISTWIN_RES
+#endif
+
+// Packet: 0x07e5
+packetLen(0x07e5, 4) // CH_ENTER_CHECKBOT
+
+// Packet: 0x07e6
+packetLen(0x07e6, 8) // ZC_MSG_SKILL
+
+// Packet: 0x07e7
+packetLen(0x07e7, 32) // CH_CHECKBOT
+
+// Packet: 0x07e8
+packetLen(0x07e8, -1) // HC_CHECKBOT
+
+// Packet: 0x07e9
+packetLen(0x07e9, 5) // HC_CHECKBOT_RESULT
+
+// Packet: 0x07ea
+packetLen(0x07ea, 2) // CZ_BATTLE_FIELD_LIST
+
+// Packet: 0x07eb
+packetLen(0x07eb, -1) // ZC_BATTLE_FIELD_LIST
+
+// Packet: 0x07ec
+#if PACKETVER >= 20171227
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20171220
+packetLen(0x07ec, 6) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20171130
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20171127
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20171121
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20171018
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#endif
+
+// Packet: 0x07ed
+packetLen(0x07ed, 10) // ZC_JOIN_BATTLE_FIELD
+
+// Packet: 0x07ee
+packetLen(0x07ee, 6) // CZ_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07ef
+packetLen(0x07ef, 8) // ZC_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07f0
+packetLen(0x07f0, 6) // CZ_REQ_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f1
+packetLen(0x07f1, 18) // ZC_ACK_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f2
+packetLen(0x07f2, 8) // ZC_BATTLE_NOTI_START_STEP
+
+// Packet: 0x07f3
+packetLen(0x07f3, 6) // ZC_BATTLE_JOIN_NOTI_DEFER
+
+// Packet: 0x07f4
+packetLen(0x07f4, 3) // ZC_BATTLE_JOIN_DISABLE_STATE
+
+// Packet: 0x07f5
+packetLen(0x07f5, 6) // CZ_GM_FULLSTRIP
+
+// Packet: 0x07f6
+packetLen(0x07f6, 14) // ZC_NOTIFY_EXP
+
+// Packet: 0x07f7
+packetLen(0x07f7, -1) // ZC_NOTIFY_MOVEENTRY7
+
+// Packet: 0x07f8
+packetLen(0x07f8, -1) // ZC_NOTIFY_NEWENTRY5
+
+// Packet: 0x07f9
+packetLen(0x07f9, -1) // ZC_NOTIFY_STANDENTRY5
+
+// Packet: 0x07fa
+packetLen(0x07fa, 8) // ZC_DELETE_ITEM_FROM_BODY
+
+// Packet: 0x07fb
+packetLen(0x07fb, 25) // ZC_USESKILL_ACK2
+
+// Packet: 0x07fc
+packetLen(0x07fc, 10) // ZC_CHANGE_GROUP_MASTER
+
+// Packet: 0x07fd
+packetLen(0x07fd, -1) // ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN
+
+// Packet: 0x07fe
+packetLen(0x07fe, 26) // ZC_PLAY_NPC_BGM
+
+// Packet: 0x0800
+packetLen(0x0800, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0801
+packetLen(0x0801, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0802
+#if PACKETVER >= 20171130
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20171127
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20171121
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20171115
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20171018
+packetLen(0x0802, 18) // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// Packet: 0x0803
+packetLen(0x0803, 4) // ZC_PARTY_BOOKING_ACK_REGISTER
+
+// Packet: 0x0804
+packetLen(0x0804, 14) // CZ_PARTY_BOOKING_REQ_SEARCH
+
+// Packet: 0x0805
+packetLen(0x0805, -1) // ZC_PARTY_BOOKING_ACK_SEARCH
+
+// Packet: 0x0806
+packetLen(0x0806, 2) // CZ_PARTY_BOOKING_REQ_DELETE
+
+// Packet: 0x0807
+packetLen(0x0807, 4) // ZC_PARTY_BOOKING_ACK_DELETE
+
+// Packet: 0x0808
+packetLen(0x0808, 14) // CZ_PARTY_BOOKING_REQ_UPDATE
+
+// Packet: 0x0809
+packetLen(0x0809, 50) // ZC_PARTY_BOOKING_NOTIFY_INSERT
+
+// Packet: 0x080a
+packetLen(0x080a, 18) // ZC_PARTY_BOOKING_NOTIFY_UPDATE
+
+// Packet: 0x080b
+packetLen(0x080b, 6) // ZC_PARTY_BOOKING_NOTIFY_DELETE
+
+// Packet: 0x080c
+packetLen(0x080c, 2) // CZ_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080d
+packetLen(0x080d, 3) // ZC_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080e
+packetLen(0x080e, 14) // ZC_NOTIFY_HP_TO_GROUPM_R2
+
+// Packet: 0x080f
+packetLen(0x080f, 20) // ZC_ADD_EXCHANGE_ITEM2
+
+// Packet: 0x0810
+packetLen(0x0810, 3) // ZC_OPEN_BUYING_STORE
+
+// Packet: 0x0811
+#if PACKETVER >= 20171206
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20171204
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20171130
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20171123
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20171121
+packetLen(0x0811, 5) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20171018
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#endif
+
+// Packet: 0x0812
+packetLen(0x0812, 8) // ZC_FAILED_OPEN_BUYING_STORE_TO_BUYER
+
+// Packet: 0x0813
+packetLen(0x0813, -1) // ZC_MYITEMLIST_BUYING_STORE
+
+// Packet: 0x0814
+packetLen(0x0814, 86) // ZC_BUYING_STORE_ENTRY
+
+// Packet: 0x0815
+#if PACKETVER >= 20171206
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20171204
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20171130
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20171115
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20171018
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#endif
+
+// Packet: 0x0816
+packetLen(0x0816, 6) // ZC_DISAPPEAR_BUYING_STORE_ENTRY
+
+// Packet: 0x0817
+#if PACKETVER >= 20171115
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20171018
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+#endif
+
+// Packet: 0x0818
+packetLen(0x0818, -1) // ZC_ACK_ITEMLIST_BUYING_STORE
+
+// Packet: 0x0819
+#if PACKETVER >= 20171227
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20171220
+packetLen(0x0819, 90) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20171206
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20171204
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20171130
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20171018
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#endif
+
+// Packet: 0x081a
+packetLen(0x081a, 4) // ZC_FAILED_TRADE_BUYING_STORE_TO_BUYER
+
+// Packet: 0x081b
+packetLen(0x081b, 10) // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+
+// Packet: 0x081c
+packetLen(0x081c, 10) // ZC_ITEM_DELETE_BUYING_STORE
+
+// Packet: 0x081d
+packetLen(0x081d, 22) // ZC_EL_INIT
+
+// Packet: 0x081e
+packetLen(0x081e, 8) // ZC_EL_PAR_CHANGE
+
+// Packet: 0x081f
+packetLen(0x081f, -1) // ZC_BROADCAST4
+
+// Packet: 0x0820
+packetLen(0x0820, 11) // ZC_COSTUME_SPRITE_CHANGE
+
+// Packet: 0x0821
+packetLen(0x0821, 2) // AC_OTP_USER
+
+// Packet: 0x0822
+packetLen(0x0822, 9) // CA_OTP_AUTH_REQ
+
+// Packet: 0x0823
+packetLen(0x0823, -1) // AC_OTP_AUTH_ACK
+
+// Packet: 0x0824
+packetLen(0x0824, 6) // ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER
+
+// Packet: 0x0825
+packetLen(0x0825, -1) // CA_SSO_LOGIN_REQ
+
+// Packet: 0x0827
+packetLen(0x0827, 6) // CH_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0828
+packetLen(0x0828, 14) // HC_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0829
+packetLen(0x0829, 12) // CH_DELETE_CHAR3
+
+// Packet: 0x082a
+packetLen(0x082a, 10) // HC_DELETE_CHAR3
+
+// Packet: 0x082b
+packetLen(0x082b, 6) // CH_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082c
+packetLen(0x082c, 10) // HC_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082d
+packetLen(0x082d, -1) // HC_ACCEPT_ENTER2
+
+// Packet: 0x0835
+#if PACKETVER >= 20171227
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20171220
+packetLen(0x0835, -1) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20171214
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20171206
+packetLen(0x0835, 6) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20171115
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20171018
+packetLen(0x0835, -1) // CZ_SEARCH_STORE_INFO
+#endif
+
+// Packet: 0x0836
+packetLen(0x0836, -1) // ZC_SEARCH_STORE_INFO_ACK
+
+// Packet: 0x0837
+packetLen(0x0837, 3) // ZC_SEARCH_STORE_INFO_FAILED
+
+// Packet: 0x0838
+#if PACKETVER >= 20171227
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20171220
+packetLen(0x0838, 6) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20171206
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20171204
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20171130
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20171115
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20171018
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#endif
+
+// Packet: 0x0839
+packetLen(0x0839, 66) // ZC_ACK_BAN_GUILD_SSO
+
+// Packet: 0x083a
+packetLen(0x083a, 5) // ZC_OPEN_SEARCH_STORE_INFO
+
+// Packet: 0x083b
+packetLen(0x083b, 2) // CZ_CLOSE_SEARCH_STORE_INFO
+
+// Packet: 0x083c
+#if PACKETVER >= 20171214
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20171206
+packetLen(0x083c, 8) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20171204
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20171130
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20171115
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20171018
+packetLen(0x083c, 12) // CZ_SSILIST_ITEM_CLICK
+#endif
+
+// Packet: 0x083d
+packetLen(0x083d, 6) // ZC_SSILIST_ITEM_CLICK_ACK
+
+// Packet: 0x083e
+packetLen(0x083e, 26) // AC_REFUSE_LOGIN2
+
+// Packet: 0x0840
+packetLen(0x0840, -1) // HC_NOTIFY_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0841
+packetLen(0x0841, 4) // CH_SELECT_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0842
+packetLen(0x0842, 6) // CZ_RECALL_SSO
+
+// Packet: 0x0843
+packetLen(0x0843, 6) // CZ_REMOVE_AID_SSO
+
+// Packet: 0x0844
+packetLen(0x0844, 2) // CZ_SE_CASHSHOP_OPEN
+
+// Packet: 0x0845
+packetLen(0x0845, 10) // ZC_SE_CASHSHOP_OPEN
+
+// Packet: 0x0846
+packetLen(0x0846, 4) // CZ_REQ_SE_CASH_TAB_CODE
+
+// Packet: 0x0847
+packetLen(0x0847, -1) // ZC_ACK_SE_CASH_ITEM_LIST
+
+// Packet: 0x0848
+packetLen(0x0848, -1) // CZ_SE_PC_BUY_CASHITEM_LIST
+
+// Packet: 0x0849
+packetLen(0x0849, 16) // ZC_SE_PC_BUY_CASHITEM_RESULT
+
+// Packet: 0x084a
+packetLen(0x084a, 2) // CZ_SE_CASHSHOP_CLOSE
+
+// Packet: 0x084b
+packetLen(0x084b, 19) // ZC_ITEM_FALL_ENTRY4
+
+// Packet: 0x084c
+packetLen(0x084c, 10) // CZ_MACRO_USE_SKILL
+
+// Packet: 0x084d
+packetLen(0x084d, 10) // CZ_MACRO_USE_SKILL_TOGROUND
+
+// Packet: 0x084e
+packetLen(0x084e, 5) // CZ_MACRO_REQUEST_MOVE
+
+// Packet: 0x084f
+packetLen(0x084f, 6) // CZ_MACRO_ITEM_PICKUP
+
+// Packet: 0x0850
+packetLen(0x0850, 7) // CZ_MACRO_REQUEST_ACT
+
+// Packet: 0x0851
+packetLen(0x0851, -1) // ZC_GPK_DYNCODE
+
+// Packet: 0x0852
+packetLen(0x0852, 2) // CZ_GPK_DYNCODE_RELOAD
+
+// Packet: 0x0853
+packetLen(0x0853, -1) // ZC_GPK_AUTH
+
+// Packet: 0x0854
+packetLen(0x0854, -1) // CZ_GPK_AUTH
+
+// Packet: 0x0855
+packetLen(0x0855, 6) // ZC_MACRO_ITEMPICKUP_FAIL
+
+// Packet: 0x0856
+packetLen(0x0856, -1) // ZC_NOTIFY_MOVEENTRY8
+
+// Packet: 0x0857
+packetLen(0x0857, -1) // ZC_NOTIFY_STANDENTRY7
+
+// Packet: 0x0858
+packetLen(0x0858, -1) // ZC_NOTIFY_NEWENTRY6
+
+// Packet: 0x0859
+packetLen(0x0859, -1) // ZC_EQUIPWIN_MICROSCOPE2
+
+// Packet: 0x085a
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+
+// Packet: 0x085b
+#if PACKETVER >= 20171220
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20171214
+packetLen(0x085b, 36) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20171206
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20171204
+packetLen(0x085b, 8) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20171018
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x085c
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+
+// Packet: 0x085d
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+
+// Packet: 0x085e
+#if PACKETVER >= 20171220
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20171214
+packetLen(0x085e, 18) // ZC_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20171018
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x085f
+#if PACKETVER >= 20171227
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20171220
+packetLen(0x085f, -1) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20171127
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20171123
+packetLen(0x085f, 6) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20171018
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x0860
+#if PACKETVER >= 20171227
+packetLen(0x0860, 5) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20171214
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20171206
+packetLen(0x0860, 4) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20171127
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20171123
+packetLen(0x0860, 19) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20171121
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20171115
+packetLen(0x0860, 4) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20171018
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x0861
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+
+// Packet: 0x0862
+#if PACKETVER >= 20171220
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20171214
+packetLen(0x0862, 6) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20171206
+packetLen(0x0862, 5) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20171018
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x0863
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+
+// Packet: 0x0864
+#if PACKETVER >= 20171220
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20171214
+packetLen(0x0864, 8) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20171206
+packetLen(0x0864, 5) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20171204
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20171130
+packetLen(0x0864, 6) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20171018
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x0865
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+
+// Packet: 0x0866
+#if PACKETVER >= 20171123
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20171121
+packetLen(0x0866, 8) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20171018
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0867
+#if PACKETVER >= 20171227
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20171220
+packetLen(0x0867, 6) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20171018
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0868
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+
+// Packet: 0x0869
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+
+// Packet: 0x086a
+#if PACKETVER >= 20171220
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20171214
+packetLen(0x086a, 5) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20171018
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x086b
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+
+// Packet: 0x086c
+#if PACKETVER >= 20171227
+packetLen(0x086c, 7) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20171220
+packetLen(0x086c, 6) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20171018
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x086d
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+
+// Packet: 0x086e
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+
+// Packet: 0x086f
+#if PACKETVER >= 20171206
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20171204
+packetLen(0x086f, 19) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20171130
+packetLen(0x086f, 12) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20171018
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x0870
+#if PACKETVER >= 20171214
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20171206
+packetLen(0x0870, 8) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20171018
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x0871
+#if PACKETVER >= 20171227
+packetLen(0x0871, 6) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20171220
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20171214
+packetLen(0x0871, 19) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20171018
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x0872
+#if PACKETVER >= 20171227
+packetLen(0x0872, 90)
+#elif PACKETVER >= 20171220
+packetLen(0x0872, 8)
+#elif PACKETVER >= 20171204
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20171130
+packetLen(0x0872, 6)
+#elif PACKETVER >= 20171018
+packetLen(0x0872, 2)
+#endif
+
+// Packet: 0x0873
+#if PACKETVER >= 20171220
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20171214
+packetLen(0x0873, -1) // ZC_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20171018
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x0874
+#if PACKETVER >= 20171227
+packetLen(0x0874, 19) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20171018
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x0875
+#if PACKETVER >= 20171204
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20171130
+packetLen(0x0875, 6) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20171018
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x0876
+#if PACKETVER >= 20171227
+packetLen(0x0876, 10) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20171127
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20171123
+packetLen(0x0876, 4) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20171018
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x0877
+#if PACKETVER >= 20171227
+packetLen(0x0877, 8) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20171018
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x0878
+#if PACKETVER >= 20171227
+packetLen(0x0878, 6) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20171214
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20171206
+packetLen(0x0878, 10) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20171204
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20171130
+packetLen(0x0878, -1) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20171018
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x0879
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+
+// Packet: 0x087a
+#if PACKETVER >= 20171227
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20171220
+packetLen(0x087a, 12) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20171214
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20171206
+packetLen(0x087a, 18) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20171018
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x087b
+#if PACKETVER >= 20171227
+packetLen(0x087b, 8) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20171214
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20171206
+packetLen(0x087b, -1) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20171018
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x087c
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+
+// Packet: 0x087d
+#if PACKETVER >= 20171206
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20171204
+packetLen(0x087d, -1) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20171018
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x087e
+#if PACKETVER >= 20171227
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20171220
+packetLen(0x087e, 4) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20171018
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x087f
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+
+// Packet: 0x0880
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+
+// Packet: 0x0881
+#if PACKETVER >= 20171204
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20171130
+packetLen(0x0881, 10) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20171121
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20171115
+packetLen(0x0881, 19) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20171018
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x0882
+#if PACKETVER >= 20171127
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20171123
+packetLen(0x0882, -1) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20171018
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x0883
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+
+// Packet: 0x0884
+#if PACKETVER >= 20171204
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20171130
+packetLen(0x0884, 6) // CZ_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20171018
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x0885
+#if PACKETVER >= 20171227
+packetLen(0x0885, 8) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20171214
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20171206
+packetLen(0x0885, 6) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20171204
+packetLen(0x0885, 90) // CZ_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20171018
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x0886
+#if PACKETVER >= 20171220
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20171214
+packetLen(0x0886, 6) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20171018
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#endif
+
+// Packet: 0x0887
+#if PACKETVER >= 20171206
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20171204
+packetLen(0x0887, 5) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20171130
+packetLen(0x0887, 36) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20171018
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x0888
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+
+// Packet: 0x0889
+#if PACKETVER >= 20171227
+packetLen(0x0889, -1) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20171123
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20171121
+packetLen(0x0889, 8) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20171018
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x088a
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+
+// Packet: 0x088b
+#if PACKETVER >= 20171220
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20171214
+packetLen(0x088b, 4) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20171204
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20171130
+packetLen(0x088b, 8) // CZ_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20171018
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x088c
+#if PACKETVER >= 20171220
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20171214
+packetLen(0x088c, 8) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20171127
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20171123
+packetLen(0x088c, 26) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20171018
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x088d
+#if PACKETVER >= 20171214
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20171206
+packetLen(0x088d, 26) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20171018
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x088e
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+
+// Packet: 0x088f
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+
+// Packet: 0x0890
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+
+// Packet: 0x0891
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+
+// Packet: 0x0892
+#if PACKETVER >= 20171220
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20171214
+packetLen(0x0892, 10) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20171206
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20171204
+packetLen(0x0892, 4) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20171123
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20171121
+packetLen(0x0892, 18) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20171018
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0893
+#if PACKETVER >= 20171214
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20171206
+packetLen(0x0893, 26) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20171130
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20171127
+packetLen(0x0893, 36) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20171018
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x0894
+#if PACKETVER >= 20171227
+packetLen(0x0894, 18) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20171220
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20171214
+packetLen(0x0894, 6) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20171204
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20171130
+packetLen(0x0894, 5) // CZ_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20171018
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x0895
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+
+// Packet: 0x0896
+#if PACKETVER >= 20171206
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20171204
+packetLen(0x0896, 36) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20171127
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20171123
+packetLen(0x0896, 5) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20171018
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x0897
+#if PACKETVER >= 20171220
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20171214
+packetLen(0x0897, -1) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20171206
+packetLen(0x0897, 5) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20171018
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x0898
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+
+// Packet: 0x0899
+#if PACKETVER >= 20171227
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20171220
+packetLen(0x0899, 5) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20171204
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20171130
+packetLen(0x0899, 8) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20171018
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x089a
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+
+// Packet: 0x089b
+#if PACKETVER >= 20171227
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20171220
+packetLen(0x089b, 8) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20171018
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x089c
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+
+// Packet: 0x089d
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+
+// Packet: 0x089e
+#if PACKETVER >= 20171214
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20171206
+packetLen(0x089e, 12) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20171127
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20171123
+packetLen(0x089e, 18) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20171121
+packetLen(0x089e, 5) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20171018
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x089f
+#if PACKETVER >= 20171227
+packetLen(0x089f, 6) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20171018
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x08a0
+#if PACKETVER >= 20171204
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20171130
+packetLen(0x08a0, 5) // CZ_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20171018
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x08a1
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+
+// Packet: 0x08a2
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+
+// Packet: 0x08a3
+#if PACKETVER >= 20171227
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20171220
+packetLen(0x08a3, -1) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20171214
+packetLen(0x08a3, 26) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20171018
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x08a4
+#if PACKETVER >= 20171214
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20171206
+packetLen(0x08a4, -1) // CZ_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20171018
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x08a5
+#if PACKETVER >= 20171227
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20171220
+packetLen(0x08a5, 6) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20171214
+packetLen(0x08a5, 90) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20171018
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x08a6
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+
+// Packet: 0x08a7
+#if PACKETVER >= 20171204
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20171130
+packetLen(0x08a7, -1) // CZ_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20171018
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x08a8
+#if PACKETVER >= 20171127
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20171123
+packetLen(0x08a8, 26) // CZ_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20171018
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x08a9
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+
+// Packet: 0x08aa
+#if PACKETVER >= 20171206
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20171204
+packetLen(0x08aa, 26) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20171018
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x08ab
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+
+// Packet: 0x08ac
+#if PACKETVER >= 20171214
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20171206
+packetLen(0x08ac, 7) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20171018
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x08ad
+#if PACKETVER >= 20171227
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20171220
+packetLen(0x08ad, 19) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20171123
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20171121
+packetLen(0x08ad, 26) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20171018
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x08af
+packetLen(0x08af, 10) // HC_WAITING_LOGIN
+
+// Packet: 0x08b0
+packetLen(0x08b0, 17) // CH_WAITING_LOGIN
+
+// Packet: 0x08b1
+packetLen(0x08b1, -1) // ZC_MCSTORE_NOTMOVEITEM_LIST
+
+// Packet: 0x08b2
+packetLen(0x08b2, -1) // AC_REALNAME_AUTH
+
+// Packet: 0x08b3
+packetLen(0x08b3, -1) // ZC_SHOWSCRIPT
+
+// Packet: 0x08b4
+packetLen(0x08b4, 2) // ZC_START_COLLECTION
+
+// Packet: 0x08b5
+packetLen(0x08b5, 6) // CZ_TRYCOLLECTION
+
+// Packet: 0x08b6
+packetLen(0x08b6, 3) // ZC_TRYCOLLECTION
+
+// Packet: 0x08b8
+packetLen(0x08b8, 10) // CH_SECOND_PASSWD_ACK
+
+// Packet: 0x08b9
+packetLen(0x08b9, 12) // HC_SECOND_PASSWD_LOGIN
+
+// Packet: 0x08ba
+packetLen(0x08ba, 10) // CH_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bb
+packetLen(0x08bb, 8) // HC_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bc
+packetLen(0x08bc, 10) // CH_DELETE_SECOND_PASSWD
+
+// Packet: 0x08bd
+packetLen(0x08bd, 8) // HC_DELETE_SECOND_PASSWD
+
+// Packet: 0x08be
+packetLen(0x08be, 14) // CH_EDIT_SECOND_PASSWD
+
+// Packet: 0x08bf
+packetLen(0x08bf, 8) // HC_EDIT_SECOND_PASSWD
+
+// Packet: 0x08c0
+packetLen(0x08c0, -1) // ZC_ACK_SE_CASH_ITEM_LIST2
+
+// Packet: 0x08c1
+packetLen(0x08c1, 2) // CZ_MACRO_START
+
+// Packet: 0x08c2
+packetLen(0x08c2, 2) // CZ_MACRO_STOP
+
+// Packet: 0x08c3
+packetLen(0x08c3, 10) // CH_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c4
+packetLen(0x08c4, 8) // HC_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c5
+packetLen(0x08c5, 6) // CH_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c6
+packetLen(0x08c6, 4) // HC_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c7
+packetLen(0x08c7, -1) // ZC_SKILL_ENTRY3
+
+// Packet: 0x08c8
+packetLen(0x08c8, 34) // ZC_NOTIFY_ACT3
+
+// Packet: 0x08c9
+packetLen(0x08c9, 2) // CZ_REQ_SCHEDULER_CASHITEM
+
+// Packet: 0x08ca
+packetLen(0x08ca, -1) // ZC_ACK_SCHEDULER_CASHITEM
+
+// Packet: 0x08cb
+packetLen(0x08cb, -1) // ZC_PERSONAL_INFOMATION
+
+// Packet: 0x08cc
+packetLen(0x08cc, 109) // CA_LOGIN5
+
+// Packet: 0x08cd
+packetLen(0x08cd, 10) // ZC_STOPMOVE_FORCE
+
+// Packet: 0x08ce
+packetLen(0x08ce, 2) // ZC_FAILED_GET_ITEM_FROM_ZONEDA
+
+// Packet: 0x08cf
+packetLen(0x08cf, 10) // ZC_SPIRITS_ATTRIBUTE
+
+// Packet: 0x08d0
+packetLen(0x08d0, 9) // ZC_REQ_WEAR_EQUIP_ACK2
+
+// Packet: 0x08d1
+packetLen(0x08d1, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK2
+
+// Packet: 0x08d2
+packetLen(0x08d2, 10) // ZC_FASTMOVE
+
+// Packet: 0x08d3
+packetLen(0x08d3, 10) // ZC_SE_CASHSHOP_UPDATE
+
+// Packet: 0x08d4
+packetLen(0x08d4, 8) // CH_REQ_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d5
+packetLen(0x08d5, -1) // HC_ACK_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d6
+packetLen(0x08d6, 6) // ZC_CLEAR_DIALOG
+
+// Packet: 0x08d7
+packetLen(0x08d7, 28) // CZ_REQ_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d8
+packetLen(0x08d8, 27) // ZC_ACK_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d9
+packetLen(0x08d9, 30) // ZC_NOTIFY_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08da
+packetLen(0x08da, 26) // CZ_REQ_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08db
+packetLen(0x08db, 27) // ZC_ACK_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08dc
+packetLen(0x08dc, 26) // ZC_NOTIFY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08dd
+packetLen(0x08dd, 27) // CZ_REPLY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08de
+packetLen(0x08de, 27) // ZC_REPLY_ACK_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08df
+packetLen(0x08df, 50) // ZC_NOTIFY_LOBBY_ADMISSION
+
+// Packet: 0x08e0
+packetLen(0x08e0, 51) // CZ_REPLY_LOBBY_ADMISSION
+
+// Packet: 0x08e1
+packetLen(0x08e1, 51) // ZC_REPLY_ACK_LOBBY_ADMISSION
+
+// Packet: 0x08e2
+packetLen(0x08e2, 27) // ZC_NAVIGATION_ACTIVE
+
+// Packet: 0x08e3
+packetLen(0x08e3, 157) // HC_UPDATE_CHARINFO
+
+// Packet: 0x08e4
+packetLen(0x08e4, 6) // AC_SHUTDOWN_INFO
+
+// Packet: 0x08fc
+packetLen(0x08fc, 30) // CH_REQ_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fd
+packetLen(0x08fd, 6) // CH_ACK_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fe
+packetLen(0x08fe, -1) // ZC_HUNTING_QUEST_INFO
+
+// Packet: 0x08ff
+packetLen(0x08ff, 24) // ZC_EFST_SET_ENTER
+
+// Packet: 0x0900
+packetLen(0x0900, -1) // ZC_INVENTORY_ITEMLIST_NORMAL
+
+// Packet: 0x0901
+packetLen(0x0901, -1) // ZC_INVENTORY_ITEMLIST_EQUIP
+
+// Packet: 0x0902
+packetLen(0x0902, -1) // ZC_CART_ITEMLIST_NORMAL
+
+// Packet: 0x0903
+packetLen(0x0903, -1) // ZC_CART_ITEMLIST_EQUIP
+
+// Packet: 0x0904
+packetLen(0x0904, -1) // ZC_STORE_ITEMLIST_NORMAL
+
+// Packet: 0x0905
+packetLen(0x0905, -1) // ZC_STORE_ITEMLIST_EQUIP
+
+// Packet: 0x0906
+packetLen(0x0906, -1) // ZC_MICROSCOPE
+
+// Packet: 0x0907
+packetLen(0x0907, 5) // CZ_INVENTORY_TAB
+
+// Packet: 0x0908
+packetLen(0x0908, 5) // ZC_INVENTORY_TAB
+
+// Packet: 0x090a
+packetLen(0x090a, 26) // CZ_REQ_ENTRY_QUEUE_RANKING
+
+// Packet: 0x090d
+packetLen(0x090d, -1) // ZC_PREMIUM_CAMPAIGN_INFO
+
+// Packet: 0x090e
+packetLen(0x090e, 2) // ZC_ENTRY_QUEUE_INIT
+
+// Packet: 0x090f
+packetLen(0x090f, -1) // ZC_NOTIFY_NEWENTRY7
+
+// Packet: 0x0910
+packetLen(0x0910, 10) // CZ_REQ_PARTY_NAME
+
+// Packet: 0x0911
+packetLen(0x0911, 30) // ZC_ACK_PARTY_NAME
+
+// Packet: 0x0912
+packetLen(0x0912, 10) // CZ_REQ_GUILD_NAME
+
+// Packet: 0x0913
+packetLen(0x0913, 30) // ZC_ACK_GUILD_NAME
+
+// Packet: 0x0914
+packetLen(0x0914, -1) // ZC_NOTIFY_MOVEENTRY9
+
+// Packet: 0x0915
+packetLen(0x0915, -1) // ZC_NOTIFY_STANDENTRY8
+
+// Packet: 0x0916
+packetLen(0x0916, 26) // CZ_REQ_JOIN_GUILD2
+
+// Packet: 0x0917
+#if PACKETVER >= 20171206
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20171204
+packetLen(0x0917, 8) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20171018
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#endif
+
+// Packet: 0x0918
+#if PACKETVER >= 20171123
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20171121
+packetLen(0x0918, 6) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20171018
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#endif
+
+// Packet: 0x0919
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+
+// Packet: 0x091a
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+
+// Packet: 0x091b
+#if PACKETVER >= 20171206
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20171204
+packetLen(0x091b, 26) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20171018
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#endif
+
+// Packet: 0x091c
+#if PACKETVER >= 20171227
+packetLen(0x091c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20171121
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20171115
+packetLen(0x091c, 5) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20171018
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#endif
+
+// Packet: 0x091d
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+
+// Packet: 0x091e
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+
+// Packet: 0x091f
+#if PACKETVER >= 20171227
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20171220
+packetLen(0x091f, -1) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20171123
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20171121
+packetLen(0x091f, 19) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20171018
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#endif
+
+// Packet: 0x0920
+#if PACKETVER >= 20171227
+packetLen(0x0920, -1) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20171214
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20171206
+packetLen(0x0920, 19) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20171018
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#endif
+
+// Packet: 0x0921
+#if PACKETVER >= 20171227
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20171220
+packetLen(0x0921, 5) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20171206
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20171204
+packetLen(0x0921, 18) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20171018
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#endif
+
+// Packet: 0x0922
+#if PACKETVER >= 20171121
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20171115
+packetLen(0x0922, 36) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20171018
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#endif
+
+// Packet: 0x0923
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+
+// Packet: 0x0924
+#if PACKETVER >= 20171206
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20171204
+packetLen(0x0924, 5) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20171018
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#endif
+
+// Packet: 0x0925
+#if PACKETVER >= 20171227
+packetLen(0x0925, 4) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20171204
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20171130
+packetLen(0x0925, -1) // ZC_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20171018
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+#endif
+
+// Packet: 0x0926
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+
+// Packet: 0x0927
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+
+// Packet: 0x0928
+#if PACKETVER >= 20171204
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20171130
+packetLen(0x0928, 4) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20171123
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20171121
+packetLen(0x0928, 26) // ZC_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20171018
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+#endif
+
+// Packet: 0x0929
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+
+// Packet: 0x092a
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+
+// Packet: 0x092b
+#if PACKETVER >= 20171127
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20171123
+packetLen(0x092b, 8) // ZC_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20171018
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+#endif
+
+// Packet: 0x092c
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+
+// Packet: 0x092d
+#if PACKETVER >= 20171227
+packetLen(0x092d, 12) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20171220
+packetLen(0x092d, 18) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20171018
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#endif
+
+// Packet: 0x092e
+#if PACKETVER >= 20171227
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20171220
+packetLen(0x092e, 26) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20171018
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#endif
+
+// Packet: 0x092f
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+
+// Packet: 0x0930
+#if PACKETVER >= 20171227
+packetLen(0x0930, 36) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20171204
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20171130
+packetLen(0x0930, 19) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20171127
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20171123
+packetLen(0x0930, 6) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20171018
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#endif
+
+// Packet: 0x0931
+#if PACKETVER >= 20171204
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20171130
+packetLen(0x0931, 26) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20171018
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#endif
+
+// Packet: 0x0932
+#if PACKETVER >= 20171227
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20171220
+packetLen(0x0932, 26) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20171018
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#endif
+
+// Packet: 0x0933
+#if PACKETVER >= 20171220
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20171214
+packetLen(0x0933, 7) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20171018
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#endif
+
+// Packet: 0x0934
+#if PACKETVER >= 20171227
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20171220
+packetLen(0x0934, 8) // ZC_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20171018
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+#endif
+
+// Packet: 0x0935
+#if PACKETVER >= 20171204
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20171130
+packetLen(0x0935, 8) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20171127
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20171123
+packetLen(0x0935, 8) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20171018
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#endif
+
+// Packet: 0x0936
+#if PACKETVER >= 20171214
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20171206
+packetLen(0x0936, 8) // ZC_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20171018
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+#endif
+
+// Packet: 0x0937
+#if PACKETVER >= 20171227
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20171220
+packetLen(0x0937, 7) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20171206
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20171204
+packetLen(0x0937, 8) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20171018
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#endif
+
+// Packet: 0x0938
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+
+// Packet: 0x0939
+#if PACKETVER >= 20171227
+packetLen(0x0939, 6) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20171018
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#endif
+
+// Packet: 0x093a
+#if PACKETVER >= 20171214
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20171206
+packetLen(0x093a, -1) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20171204
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20171130
+packetLen(0x093a, 7) // ZC_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20171018
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+#endif
+
+// Packet: 0x093b
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+
+// Packet: 0x093c
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+
+// Packet: 0x093d
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+
+// Packet: 0x093e
+#if PACKETVER >= 20171227
+packetLen(0x093e, 6) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20171018
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#endif
+
+// Packet: 0x093f
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+
+// Packet: 0x0940
+#if PACKETVER >= 20171214
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20171206
+packetLen(0x0940, 90) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20171018
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#endif
+
+// Packet: 0x0941
+#if PACKETVER >= 20171227
+packetLen(0x0941, 26) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20171214
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20171206
+packetLen(0x0941, 6) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20171018
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#endif
+
+// Packet: 0x0942
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+
+// Packet: 0x0943
+#if PACKETVER >= 20171123
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20171121
+packetLen(0x0943, 8) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20171018
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#endif
+
+// Packet: 0x0944
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+
+// Packet: 0x0945
+#if PACKETVER >= 20171227
+packetLen(0x0945, 26) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20171018
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#endif
+
+// Packet: 0x0946
+#if PACKETVER >= 20171227
+packetLen(0x0946, 5) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20171018
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#endif
+
+// Packet: 0x0947
+#if PACKETVER >= 20171204
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20171130
+packetLen(0x0947, -1) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20171127
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20171123
+packetLen(0x0947, 36) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20171018
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#endif
+
+// Packet: 0x0948
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+
+// Packet: 0x0949
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+
+// Packet: 0x094a
+#if PACKETVER >= 20171220
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20171214
+packetLen(0x094a, 5) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20171018
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#endif
+
+// Packet: 0x094b
+#if PACKETVER >= 20171227
+packetLen(0x094b, -1) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20171018
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#endif
+
+// Packet: 0x094c
+#if PACKETVER >= 20171204
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20171130
+packetLen(0x094c, 5) // CZ_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20171018
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+#endif
+
+// Packet: 0x094d
+#if PACKETVER >= 20171227
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20171220
+packetLen(0x094d, 10) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20171214
+packetLen(0x094d, 5) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20171018
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#endif
+
+// Packet: 0x094e
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+
+// Packet: 0x094f
+#if PACKETVER >= 20171220
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20171214
+packetLen(0x094f, -1) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20171204
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20171130
+packetLen(0x094f, 90) // CZ_REASSEMBLY_AUTH57
+#elif PACKETVER >= 20171018
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+#endif
+
+// Packet: 0x0950
+#if PACKETVER >= 20171123
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20171121
+packetLen(0x0950, 4) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20171018
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#endif
+
+// Packet: 0x0951
+#if PACKETVER >= 20171220
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20171214
+packetLen(0x0951, 26) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20171018
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#endif
+
+// Packet: 0x0952
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+
+// Packet: 0x0953
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+
+// Packet: 0x0954
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+
+// Packet: 0x0955
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+
+// Packet: 0x0956
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+
+// Packet: 0x0957
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+
+// Packet: 0x0958
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+
+// Packet: 0x0959
+#if PACKETVER >= 20171214
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20171206
+packetLen(0x0959, 36) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20171121
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20171115
+packetLen(0x0959, 5) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20171018
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#endif
+
+// Packet: 0x095a
+#if PACKETVER >= 20171220
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20171214
+packetLen(0x095a, 8) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20171018
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#endif
+
+// Packet: 0x095b
+#if PACKETVER >= 20171227
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20171220
+packetLen(0x095b, 36) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20171214
+packetLen(0x095b, 12) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20171204
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20171130
+packetLen(0x095b, 6) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20171018
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#endif
+
+// Packet: 0x095c
+#if PACKETVER >= 20171214
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20171206
+packetLen(0x095c, -1) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20171018
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#endif
+
+// Packet: 0x095d
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+
+// Packet: 0x095e
+#if PACKETVER >= 20171227
+packetLen(0x095e, 5) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20171018
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#endif
+
+// Packet: 0x095f
+#if PACKETVER >= 20171214
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20171206
+packetLen(0x095f, 6) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20171204
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20171130
+packetLen(0x095f, 26) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20171018
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#endif
+
+// Packet: 0x0960
+#if PACKETVER >= 20171220
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20171214
+packetLen(0x0960, 6) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20171206
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20171130
+packetLen(0x0960, 6) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20171127
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20171123
+packetLen(0x0960, 8) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20171018
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#endif
+
+// Packet: 0x0961
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+
+// Packet: 0x0962
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+
+// Packet: 0x0963
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+
+// Packet: 0x0964
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+
+// Packet: 0x0965
+#if PACKETVER >= 20171204
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20171130
+packetLen(0x0965, 10) // CZ_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20171018
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+#endif
+
+// Packet: 0x0966
+#if PACKETVER >= 20171121
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20171115
+packetLen(0x0966, 26) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20171018
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#endif
+
+// Packet: 0x0967
+#if PACKETVER >= 20171227
+packetLen(0x0967, 10) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20171018
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#endif
+
+// Packet: 0x0968
+#if PACKETVER >= 20171227
+packetLen(0x0968, -1) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20171018
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#endif
+
+// Packet: 0x0969
+#if PACKETVER >= 20171220
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20171214
+packetLen(0x0969, -1) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20171018
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#endif
+
+// Packet: 0x096a
+#if PACKETVER >= 20171227
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20171220
+packetLen(0x096a, 5) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20171214
+packetLen(0x096a, 10) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20171206
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20171204
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20171130
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20171115
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20171018
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#endif
+
+// Packet: 0x096b
+packetLen(0x096b, 4) // ZC_PRNPC_STATE
+
+// Packet: 0x096c
+packetLen(0x096c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+
+// Packet: 0x096d
+packetLen(0x096d, -1) // ZC_MERGE_ITEM_OPEN
+
+// Packet: 0x096e
+packetLen(0x096e, -1) // CZ_REQ_MERGE_ITEM
+
+// Packet: 0x096f
+packetLen(0x096f, 7) // ZC_ACK_MERGE_ITEM
+
+// Packet: 0x0970
+packetLen(0x0970, 31) // CH_MAKE_CHAR_NOT_STATS
+
+// Packet: 0x0971
+packetLen(0x0971, 6) // ZC_PARTY_RECRUIT_REFUSE_VOLUNTEER_TO_PM
+
+// Packet: 0x0972
+packetLen(0x0972, -1) // ZC_SAY_DIALOG2
+
+// Packet: 0x0973
+packetLen(0x0973, 7) // ZC_WAIT_DIALOG2
+
+// Packet: 0x0974
+packetLen(0x0974, 2) // CZ_CANCEL_MERGE_ITEM
+
+// Packet: 0x0975
+packetLen(0x0975, -1) // ZC_STORE_ITEMLIST_NORMAL_V2
+
+// Packet: 0x0976
+packetLen(0x0976, -1) // ZC_STORE_ITEMLIST_EQUIP_V2
+
+// Packet: 0x0977
+packetLen(0x0977, 14) // ZC_HP_INFO
+
+// Packet: 0x0978
+packetLen(0x0978, 6) // CZ_REQ_BEFORE_WORLD_INFO
+
+// Packet: 0x0979
+packetLen(0x0979, 50) // ZC_ACK_BEFORE_WORLD_INFO
+
+// Packet: 0x097a
+packetLen(0x097a, -1) // ZC_ALL_QUEST_LIST2
+
+// Packet: 0x097b
+packetLen(0x097b, -1) // ZC_PERSONAL_INFOMATION2
+
+// Packet: 0x097c
+packetLen(0x097c, 4) // CZ_REQ_RANKING
+
+// Packet: 0x097d
+packetLen(0x097d, 288) // ZC_ACK_RANKING
+
+// Packet: 0x097e
+packetLen(0x097e, 12) // ZC_UPDATE_RANKING_POINT
+
+// Packet: 0x097f
+packetLen(0x097f, -1) // ZC_SELECTCART
+
+// Packet: 0x0980
+packetLen(0x0980, 7) // CZ_SELECTCART
+
+// Packet: 0x0981
+packetLen(0x0981, -1) // ZC_PERSONAL_INFOMATION_CHN
+
+// Packet: 0x0982
+packetLen(0x0982, 7) // ZC_FATIGUE_CHN
+
+// Packet: 0x0983
+packetLen(0x0983, 29) // ZC_MSG_STATE_CHANGE3
+
+// Packet: 0x0984
+packetLen(0x0984, 28) // ZC_EFST_SET_ENTER2
+
+// Packet: 0x0985
+packetLen(0x0985, -1) // ZC_SKILL_POSTDELAY_LIST2
+
+// Packet: 0x0986
+packetLen(0x0986, 10) // AC_SHUTDOWN_NOTIFY
+
+// Packet: 0x0987
+packetLen(0x0987, -1) // CA_LOGIN6
+
+// Packet: 0x0988
+packetLen(0x0988, 6) // ZC_NOTIFY_CLAN_CONNECTINFO
+
+// Packet: 0x0989
+packetLen(0x0989, 2) // ZC_ACK_CLAN_LEAVE
+
+// Packet: 0x098a
+packetLen(0x098a, -1) // ZC_CLANINFO
+
+// Packet: 0x098b
+packetLen(0x098b, 2) // AC_REQ_NEW_USER
+
+// Packet: 0x098c
+packetLen(0x098c, 4) // CA_ACK_NEW_USER
+
+// Packet: 0x098d
+packetLen(0x098d, -1) // CZ_CLAN_CHAT
+
+// Packet: 0x098e
+packetLen(0x098e, -1) // ZC_NOTIFY_CLAN_CHAT
+
+// Packet: 0x098f
+packetLen(0x098f, -1) // CH_DELETE_CHAR3_EXT
+
+// Packet: 0x0990
+packetLen(0x0990, 31) // ZC_ITEM_PICKUP_ACK_V5
+
+// Packet: 0x0991
+packetLen(0x0991, -1) // ZC_INVENTORY_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0992
+packetLen(0x0992, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0993
+packetLen(0x0993, -1) // ZC_CART_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0994
+packetLen(0x0994, -1) // ZC_CART_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0995
+packetLen(0x0995, -1) // ZC_STORE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0996
+packetLen(0x0996, -1) // ZC_STORE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0997
+packetLen(0x0997, -1) // ZC_EQUIPWIN_MICROSCOPE_V5
+
+// Packet: 0x0998
+packetLen(0x0998, 8) // CZ_REQ_WEAR_EQUIP_V5
+
+// Packet: 0x0999
+packetLen(0x0999, 11) // ZC_ACK_WEAR_EQUIP_V5
+
+// Packet: 0x099a
+packetLen(0x099a, 9) // ZC_ACK_TAKEOFF_EQUIP_V5
+
+// Packet: 0x099b
+packetLen(0x099b, 8) // ZC_MAPPROPERTY_R2
+
+// Packet: 0x099c
+packetLen(0x099c, 6) // CH_REQ_CHARINFO_PER_PAGE
+
+// Packet: 0x099d
+packetLen(0x099d, -1) // HC_ACK_CHARINFO_PER_PAGE
+
+// Packet: 0x099e
+packetLen(0x099e, 12) // HC_QUEUE_ORDER
+
+// Packet: 0x099f
+packetLen(0x099f, -1) // ZC_SKILL_ENTRY4
+
+// Packet: 0x09a0
+packetLen(0x09a0, 6) // HC_CHARLIST_NOTIFY
+
+// Packet: 0x09a1
+packetLen(0x09a1, 2) // CH_CHARLIST_REQ
+
+// Packet: 0x09a2
+packetLen(0x09a2, 6) // AC_REQ_MOBILE_OTP
+
+// Packet: 0x09a3
+packetLen(0x09a3, -1) // CA_ACK_MOBILE_OTP
+
+// Packet: 0x09a4
+packetLen(0x09a4, 18) // ZC_DISPATCH_TIMING_INFO_CHN
+
+// Packet: 0x09a5
+packetLen(0x09a5, 7) // AC_REFUSE_LOGIN3
+
+// Packet: 0x09a6
+packetLen(0x09a6, 12) // ZC_BANKING_CHECK
+
+// Packet: 0x09a7
+packetLen(0x09a7, 10) // CZ_REQ_BANKING_DEPOSIT
+
+// Packet: 0x09a8
+packetLen(0x09a8, 16) // ZC_ACK_BANKING_DEPOSIT
+
+// Packet: 0x09a9
+packetLen(0x09a9, 10) // CZ_REQ_BANKING_WITHDRAW
+
+// Packet: 0x09aa
+packetLen(0x09aa, 16) // ZC_ACK_BANKING_WITHDRAW
+
+// Packet: 0x09ab
+packetLen(0x09ab, 6) // CZ_REQ_BANKING_CHECK
+
+// Packet: 0x09ac
+packetLen(0x09ac, -1) // CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO
+
+// Packet: 0x09ad
+packetLen(0x09ad, 10) // ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO
+
+// Packet: 0x09ae
+packetLen(0x09ae, 17) // CZ_REQ_APPLY_BARGAIN_SALE_ITEM
+
+// Packet: 0x09af
+packetLen(0x09af, 4) // ZC_ACK_APPLY_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b0
+packetLen(0x09b0, 8) // CZ_REQ_REMOVE_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b1
+packetLen(0x09b1, 4) // ZC_ACK_REMOVE_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b2
+packetLen(0x09b2, 8) // ZC_NOTIFY_BARGAIN_SALE_SELLING
+
+// Packet: 0x09b3
+packetLen(0x09b3, 4) // ZC_NOTIFY_BARGAIN_SALE_CLOSE
+
+// Packet: 0x09b4
+packetLen(0x09b4, 6) // CZ_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b5
+packetLen(0x09b5, 2) // ZC_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b6
+packetLen(0x09b6, 6) // CZ_REQ_OPEN_BANKING
+
+// Packet: 0x09b7
+packetLen(0x09b7, 4) // ZC_ACK_OPEN_BANKING
+
+// Packet: 0x09b8
+packetLen(0x09b8, 6) // CZ_REQ_CLOSE_BANKING
+
+// Packet: 0x09b9
+packetLen(0x09b9, 4) // ZC_ACK_CLOSE_BANKING
+
+// Packet: 0x09ba
+packetLen(0x09ba, 2) // CZ_REQ_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bb
+packetLen(0x09bb, 6) // ZC_ACK_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bc
+packetLen(0x09bc, 6) // CZ_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09bd
+packetLen(0x09bd, 2) // ZC_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09be
+packetLen(0x09be, 2) // CZ_REQ_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09bf
+packetLen(0x09bf, 4) // ZC_ACK_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09c1
+packetLen(0x09c1, 10) // ZC_C_MARKERINFO
+
+// Packet: 0x09c2
+packetLen(0x09c2, -1) // HC_SECRETSCAN_DATA
+
+// Packet: 0x09c3
+packetLen(0x09c3, 8) // CZ_REQ_COUNT_BARGAIN_SALE_ITEM
+
+// Packet: 0x09c4
+packetLen(0x09c4, 8) // ZC_ACK_COUNT_BARGAIN_SALE_ITEM
+
+// Packet: 0x09c5
+packetLen(0x09c5, 1042) // CS_LOGIN_QUERY
+
+// Packet: 0x09c6
+packetLen(0x09c6, -1) // SC_LOGIN_ANSWER
+
+// Packet: 0x09c7
+packetLen(0x09c7, 18) // SC_LOGIN_ERROR
+
+// Packet: 0x09c8
+packetLen(0x09c8, -1) // CA_LOGIN_OTP
+
+// Packet: 0x09c9
+packetLen(0x09c9, -1) // SC_SOCT
+
+// Packet: 0x09ca
+packetLen(0x09ca, -1) // ZC_SKILL_ENTRY5
+
+// Packet: 0x09cb
+packetLen(0x09cb, 17) // ZC_USE_SKILL2
+
+// Packet: 0x09cc
+packetLen(0x09cc, -1) // ZC_SECRETSCAN_DATA
+
+// Packet: 0x09cd
+packetLen(0x09cd, 8) // ZC_MSG_COLOR
+
+// Packet: 0x09ce
+packetLen(0x09ce, 102) // CZ_ITEM_CREATE_EX
+
+// Packet: 0x09cf
+packetLen(0x09cf, -1) // ZC_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d0
+packetLen(0x09d0, -1) // CZ_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d1
+packetLen(0x09d1, 14) // ZC_PROGRESS_ACTOR
+
+// Packet: 0x09d2
+packetLen(0x09d2, -1) // ZC_GUILDSTORAGE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x09d3
+packetLen(0x09d3, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x09d4
+packetLen(0x09d4, 2) // CZ_NPC_TRADE_QUIT
+
+// Packet: 0x09d5
+packetLen(0x09d5, -1) // ZC_NPC_MARKET_OPEN
+
+// Packet: 0x09d6
+packetLen(0x09d6, -1) // CZ_NPC_MARKET_PURCHASE
+
+// Packet: 0x09d7
+packetLen(0x09d7, -1) // ZC_NPC_MARKET_PURCHASE_RESULT
+
+// Packet: 0x09d8
+packetLen(0x09d8, 2) // CZ_NPC_MARKET_CLOSE
+
+// Packet: 0x09d9
+packetLen(0x09d9, 4) // CZ_REQ_GUILDSTORAGE_LOG
+
+// Packet: 0x09da
+packetLen(0x09da, -1) // ZC_ACK_GUILDSTORAGE_LOG
+
+// Packet: 0x09db
+packetLen(0x09db, -1) // ZC_NOTIFY_MOVEENTRY10
+
+// Packet: 0x09dc
+packetLen(0x09dc, -1) // ZC_NOTIFY_NEWENTRY10
+
+// Packet: 0x09dd
+packetLen(0x09dd, -1) // ZC_NOTIFY_STANDENTRY10
+
+// Packet: 0x09de
+packetLen(0x09de, -1) // ZC_WHISPER02
+
+// Packet: 0x09df
+packetLen(0x09df, 7) // ZC_ACK_WHISPER02
+
+// Packet: 0x09e0
+packetLen(0x09e0, -1) // SC_LOGIN_ANSWER_WITH_ID
+
+// Packet: 0x09e1
+packetLen(0x09e1, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_GUILDSTORAGE
+
+// Packet: 0x09e2
+packetLen(0x09e2, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_BODY
+
+// Packet: 0x09e3
+packetLen(0x09e3, 8) // CZ_MOVE_ITEM_FROM_CART_TO_GUILDSTORAGE
+
+// Packet: 0x09e4
+packetLen(0x09e4, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_CART
+
+// Packet: 0x09e5
+packetLen(0x09e5, 18) // ZC_DELETEITEM_FROM_MCSTORE2
+
+// Packet: 0x09e6
+packetLen(0x09e6, 22) // ZC_UPDATE_ITEM_FROM_BUYING_STORE2
+
+// Packet: 0x09e7
+packetLen(0x09e7, 3) // ZC_NOTIFY_UNREAD_RODEX
+
+// Packet: 0x09e8
+packetLen(0x09e8, 11) // CZ_OPEN_RODEXBOX
+
+// Packet: 0x09e9
+packetLen(0x09e9, 2) // CZ_CLOSE_RODEXBOX
+
+// Packet: 0x09ea
+packetLen(0x09ea, 11) // CZ_REQ_READ_RODEX
+
+// Packet: 0x09eb
+packetLen(0x09eb, -1) // ZC_ACK_READ_RODEX
+
+// Packet: 0x09ec
+packetLen(0x09ec, -1) // CZ_REQ_SEND_RODEX
+
+// Packet: 0x09ed
+packetLen(0x09ed, 3) // ZC_ACK_SEND_RODEX
+
+// Packet: 0x09ee
+packetLen(0x09ee, 11) // CZ_REQ_NEXT_RODEX
+
+// Packet: 0x09ef
+packetLen(0x09ef, 11) // CZ_REQ_REFRESH_RODEX
+
+// Packet: 0x09f0
+packetLen(0x09f0, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x09f1
+packetLen(0x09f1, 11) // CZ_REQ_ZENY_FROM_RODEX
+
+// Packet: 0x09f2
+packetLen(0x09f2, 12) // ZC_ACK_ZENY_FROM_RODEX
+
+// Packet: 0x09f3
+packetLen(0x09f3, 11) // CZ_REQ_ITEM_FROM_RODEX
+
+// Packet: 0x09f4
+packetLen(0x09f4, 12) // ZC_ACK_ITEM_FROM_RODEX
+
+// Packet: 0x09f5
+packetLen(0x09f5, 11) // CZ_REQ_DELETE_RODEX
+
+// Packet: 0x09f6
+packetLen(0x09f6, 11) // ZC_ACK_DELETE_RODEX
+
+// Packet: 0x09f7
+packetLen(0x09f7, 75) // ZC_PROPERTY_HOMUN_2
+
+// Packet: 0x09f8
+packetLen(0x09f8, -1) // ZC_ALL_QUEST_LIST3
+
+// Packet: 0x09f9
+packetLen(0x09f9, 143) // ZC_ADD_QUEST_EX
+
+// Packet: 0x09fa
+packetLen(0x09fa, -1) // ZC_UPDATE_MISSION_HUNT_EX
+
+// Packet: 0x09fb
+packetLen(0x09fb, -1) // CZ_PET_EVOLUTION
+
+// Packet: 0x09fc
+packetLen(0x09fc, 6) // ZC_PET_EVOLUTION_RESULT
+
+// Packet: 0x09fd
+packetLen(0x09fd, -1) // ZC_NOTIFY_MOVEENTRY11
+
+// Packet: 0x09fe
+packetLen(0x09fe, -1) // ZC_NOTIFY_NEWENTRY11
+
+// Packet: 0x09ff
+packetLen(0x09ff, -1) // ZC_NOTIFY_STANDENTRY11
+
+// Packet: 0x0a00
+packetLen(0x0a00, 269) // ZC_SHORTCUT_KEY_LIST_V3
+
+// Packet: 0x0a01
+packetLen(0x0a01, 3) // CZ_SHORTCUTKEYBAR_ROTATE
+
+// Packet: 0x0a02
+packetLen(0x0a02, 4) // ZC_DRESSROOM_OPEN
+
+// Packet: 0x0a03
+packetLen(0x0a03, 2) // CZ_REQ_CANCEL_WRITE_RODEX
+
+// Packet: 0x0a04
+packetLen(0x0a04, 6) // CZ_REQ_ADD_ITEM_RODEX
+
+// Packet: 0x0a05
+packetLen(0x0a05, 53) // ZC_ACK_ADD_ITEM_RODEX
+
+// Packet: 0x0a06
+packetLen(0x0a06, 6) // CZ_REQ_REMOVE_RODEX_ITEM
+
+// Packet: 0x0a07
+packetLen(0x0a07, 9) // ZC_ACK_REMOVE_RODEX_ITEM
+
+// Packet: 0x0a08
+packetLen(0x0a08, 26) // CZ_REQ_OPEN_WRITE_RODEX
+
+// Packet: 0x0a09
+packetLen(0x0a09, 45) // ZC_ADD_EXCHANGE_ITEM3
+
+// Packet: 0x0a0a
+packetLen(0x0a0a, 47) // ZC_ADD_ITEM_TO_STORE3
+
+// Packet: 0x0a0b
+packetLen(0x0a0b, 47) // ZC_ADD_ITEM_TO_CART3
+
+// Packet: 0x0a0c
+packetLen(0x0a0c, 56) // ZC_ITEM_PICKUP_ACK_V6
+
+// Packet: 0x0a0d
+packetLen(0x0a0d, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a0e
+packetLen(0x0a0e, 14) // ZC_BATTLEFIELD_NOTIFY_HP2
+
+// Packet: 0x0a0f
+packetLen(0x0a0f, -1) // ZC_CART_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a10
+packetLen(0x0a10, -1) // ZC_STORE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a11
+packetLen(0x0a11, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a12
+packetLen(0x0a12, 27) // ZC_ACK_OPEN_WRITE_RODEX
+
+// Packet: 0x0a13
+packetLen(0x0a13, 26) // CZ_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a14
+packetLen(0x0a14, 10) // ZC_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a15
+packetLen(0x0a15, 12) // ZC_GOLDPCCAFE_POINT
+
+// Packet: 0x0a16
+packetLen(0x0a16, 26) // CZ_DYNAMICNPC_CREATE_REQUEST
+
+// Packet: 0x0a17
+packetLen(0x0a17, 6) // ZC_DYNAMICNPC_CREATE_RESULT
+
+// Packet: 0x0a18
+packetLen(0x0a18, 14) // ZC_ACCEPT_ENTER3
+
+// Packet: 0x0a19
+packetLen(0x0a19, 2) // CZ_REQ_OPEN_ROULETTE
+
+// Packet: 0x0a1a
+packetLen(0x0a1a, 23) // ZC_ACK_OPEN_ROULETTE
+
+// Packet: 0x0a1b
+packetLen(0x0a1b, 2) // CZ_REQ_ROULETTE_INFO
+
+// Packet: 0x0a1c
+packetLen(0x0a1c, -1) // ZC_ACK_ROULEITTE_INFO
+
+// Packet: 0x0a1d
+packetLen(0x0a1d, 2) // CZ_REQ_CLOSE_ROULETTE
+
+// Packet: 0x0a1e
+packetLen(0x0a1e, 3) // ZC_ACK_CLOSE_ROULETTE
+
+// Packet: 0x0a1f
+packetLen(0x0a1f, 2) // CZ_REQ_GENERATE_ROULETTE
+
+// Packet: 0x0a20
+packetLen(0x0a20, 21) // ZC_ACK_GENERATE_ROULETTE
+
+// Packet: 0x0a21
+packetLen(0x0a21, 3) // CZ_RECV_ROULETTE_ITEM
+
+// Packet: 0x0a22
+packetLen(0x0a22, 5) // ZC_RECV_ROULETTE_ITEM
+
+// Packet: 0x0a23
+packetLen(0x0a23, -1) // ZC_ALL_ACH_LIST
+
+// Packet: 0x0a24
+packetLen(0x0a24, 66) // ZC_ACH_UPDATE
+
+// Packet: 0x0a25
+packetLen(0x0a25, 6) // CZ_REQ_ACH_REWARD
+
+// Packet: 0x0a26
+packetLen(0x0a26, 7) // ZC_REQ_ACH_REWARD_ACK
+
+// Packet: 0x0a27
+packetLen(0x0a27, 8) // ZC_RECOVERY2
+
+// Packet: 0x0a28
+packetLen(0x0a28, 3) // ZC_ACK_OPENSTORE2
+
+// Packet: 0x0a29
+packetLen(0x0a29, 6) // ZC_REQ_AU_BOT
+
+// Packet: 0x0a2a
+packetLen(0x0a2a, 6) // CZ_ACK_AU_BOT
+
+// Packet: 0x0a2b
+packetLen(0x0a2b, 14) // ZC_SE_CASHSHOP_OPEN2
+
+// Packet: 0x0a2c
+packetLen(0x0a2c, 12) // ZC_SE_PC_BUY_TAIWANCASHITEM_RESULT
+
+// Packet: 0x0a2d
+packetLen(0x0a2d, -1) // ZC_EQUIPWIN_MICROSCOPE_V6
+
+// Packet: 0x0a2e
+packetLen(0x0a2e, 6) // CZ_REQ_CHANGE_TITLE
+
+// Packet: 0x0a2f
+packetLen(0x0a2f, 7) // ZC_ACK_CHANGE_TITLE
+
+// Packet: 0x0a30
+packetLen(0x0a30, 106) // ZC_ACK_REQNAMEALL2
+
+// Packet: 0x0a31
+packetLen(0x0a31, -1) // ZC_RESULT_PACKAGE_ITEM_TEST
+
+// Packet: 0x0a32
+packetLen(0x0a32, 2) // ZC_OPEN_RODEX_THROUGH_NPC_ONLY
+
+// Packet: 0x0a33
+packetLen(0x0a33, 7) // ZC_UPDATE_ROULETTE_COIN
+
+// Packet: 0x0a34
+packetLen(0x0a34, 6) // ZC_UPDATE_TAIWANCASH
+
+// Packet: 0x0a35
+packetLen(0x0a35, 4) // CZ_REQ_ONECLICK_ITEMIDENTIFY
+
+// Packet: 0x0a36
+packetLen(0x0a36, 7) // ZC_HP_INFO_TINY
+
+// Packet: 0x0a37
+packetLen(0x0a37, 59) // ZC_ITEM_PICKUP_ACK_V7
+
+// Packet: 0x0a38
+packetLen(0x0a38, 3) // ZC_OPEN_UI
+
+// Packet: 0x0a39
+packetLen(0x0a39, 36) // CH_MAKE_CHAR
+
+// Packet: 0x0a3a
+packetLen(0x0a3a, 12)
+
+// Packet: 0x0a3b
+packetLen(0x0a3b, -1) // ZC_CUSTOM_HAT_EFFECT
+
+// Packet: 0x0a3c
+packetLen(0x0a3c, -1)
+
+// Packet: 0x0a3d
+packetLen(0x0a3d, 18)
+
+// Packet: 0x0a3e
+packetLen(0x0a3e, -1)
+
+// Packet: 0x0a3f
+packetLen(0x0a3f, 9)
+
+// Packet: 0x0a40
+packetLen(0x0a40, 11)
+
+// Packet: 0x0a41
+packetLen(0x0a41, 18) // ZC_AOE_EFFECT_SKILL
+
+// Packet: 0x0a42
+packetLen(0x0a42, 43)
+
+// Packet: 0x0a43
+packetLen(0x0a43, 85) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0a44
+packetLen(0x0a44, -1) // ZC_GROUP_LIST
+
+// Packet: 0x0a46
+packetLen(0x0a46, 14)
+
+// Packet: 0x0a47
+packetLen(0x0a47, 3) // ZC_STYLE_CHANGE_RES
+
+// Packet: 0x0a48
+packetLen(0x0a48, 2)
+
+// Packet: 0x0a49
+packetLen(0x0a49, 20) // CZ_PRIVATE_AIRSHIP_REQUEST
+
+// Packet: 0x0a4a
+packetLen(0x0a4a, 6) // ZC_PRIVATE_AIRSHIP_RESPONSE
+
+// Packet: 0x0a4b
+packetLen(0x0a4b, 22) // ZC_AIRSHIP_MAPMOVE
+
+// Packet: 0x0a4c
+packetLen(0x0a4c, 28) // ZC_AIRSHIP_SERVERMOVE
+
+// Packet: 0x0a4d
+packetLen(0x0a4d, -1)
+
+// Packet: 0x0a4e
+packetLen(0x0a4e, 4)
+
+// Packet: 0x0a4f
+packetLen(0x0a4f, -1)
+
+// Packet: 0x0a50
+packetLen(0x0a50, 4)
+
+// Packet: 0x0a51
+packetLen(0x0a51, 34) // ZC_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a52
+packetLen(0x0a52, 20)
+
+// Packet: 0x0a53
+packetLen(0x0a53, 10)
+
+// Packet: 0x0a54
+packetLen(0x0a54, -1)
+
+// Packet: 0x0a55
+packetLen(0x0a55, 2)
+
+// Packet: 0x0a56
+packetLen(0x0a56, 6)
+
+// Packet: 0x0a57
+packetLen(0x0a57, 6)
+
+// Packet: 0x0a58
+packetLen(0x0a58, 8)
+
+// Packet: 0x0a59
+packetLen(0x0a59, -1)
+
+// Packet: 0x0a5a
+packetLen(0x0a5a, 2)
+
+// Packet: 0x0a5b
+packetLen(0x0a5b, 7)
+
+// Packet: 0x0a5c
+packetLen(0x0a5c, 18)
+
+// Packet: 0x0a5d
+packetLen(0x0a5d, 6)
+
+// Packet: 0x0a68
+packetLen(0x0a68, 3) // CZ_REQ_OPEN_UI
+
+// Packet: 0x0a69
+packetLen(0x0a69, 6)
+
+// Packet: 0x0a6a
+packetLen(0x0a6a, 12)
+
+// Packet: 0x0a6b
+packetLen(0x0a6b, -1)
+
+// Packet: 0x0a6c
+packetLen(0x0a6c, 7)
+
+// Packet: 0x0a6d
+packetLen(0x0a6d, -1)
+
+// Packet: 0x0a6e
+packetLen(0x0a6e, -1) // CZ_REQ_SEND_RODEX
+
+// Packet: 0x0a6f
+packetLen(0x0a6f, -1) // ZC_FORMATSTRING_MSG_COLOR
+
+// Packet: 0x0a70
+packetLen(0x0a70, 2)
+
+// Packet: 0x0a71
+packetLen(0x0a71, -1)
+
+// Packet: 0x0a72
+packetLen(0x0a72, 61)
+
+// Packet: 0x0a73
+packetLen(0x0a73, 2)
+
+// Packet: 0x0a74
+packetLen(0x0a74, 8)
+
+// Packet: 0x0a76
+packetLen(0x0a76, 80)
+
+// Packet: 0x0a77
+packetLen(0x0a77, 15)
+
+// Packet: 0x0a78
+packetLen(0x0a78, 15)
+
+// Packet: 0x0a79
+packetLen(0x0a79, -1)
+
+// Packet: 0x0a7b
+packetLen(0x0a7b, -1)
+
+// Packet: 0x0a7c
+packetLen(0x0a7c, -1)
+
+// Packet: 0x0a7d
+packetLen(0x0a7d, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x0a7e
+packetLen(0x0a7e, -1) // ZC_OFFLINE_STORE_OWNER_ITEMS_READY
+
+// Packet: 0x0a7f
+packetLen(0x0a7f, -1) // CZ_OFFLINE_STORE_CREATE
+
+// Packet: 0x0a80
+packetLen(0x0a80, 6)
+
+// Packet: 0x0a81
+packetLen(0x0a81, 4)
+
+// Packet: 0x0a82
+packetLen(0x0a82, 46)
+
+// Packet: 0x0a83
+packetLen(0x0a83, 46)
+
+// Packet: 0x0a84
+packetLen(0x0a84, 94) // ZC_GUILD_INFO
+
+// Packet: 0x0a85
+packetLen(0x0a85, 82)
+
+// Packet: 0x0a86
+packetLen(0x0a86, -1)
+
+// Packet: 0x0a87
+packetLen(0x0a87, -1)
+
+// Packet: 0x0a88
+packetLen(0x0a88, 2)
+
+// Packet: 0x0a89
+packetLen(0x0a89, 57) // ZC_NOTIFY_OFFLINE_STORE
+
+// Packet: 0x0a8a
+packetLen(0x0a8a, 6) // ZC_OFFLINE_STORE_VANISH
+
+// Packet: 0x0a8b
+packetLen(0x0a8b, 2)
+
+// Packet: 0x0a8c
+packetLen(0x0a8c, 2)
+
+// Packet: 0x0a8d
+packetLen(0x0a8d, -1) // ZC_OFFLINE_STORE_OWNER_ITEMS
+
+// Packet: 0x0a8e
+packetLen(0x0a8e, 2)
+
+// Packet: 0x0a8f
+packetLen(0x0a8f, 2)
+
+// Packet: 0x0a90
+packetLen(0x0a90, 3)
+
+// Packet: 0x0a91
+packetLen(0x0a91, -1) // ZC_OFFLINE_STORE_ITEMS
+
+// Packet: 0x0a92
+packetLen(0x0a92, -1)
+
+// Packet: 0x0a93
+packetLen(0x0a93, 3)
+
+// Packet: 0x0a94
+packetLen(0x0a94, 2)
+
+// Packet: 0x0a95
+packetLen(0x0a95, 4)
+
+// Packet: 0x0a96
+packetLen(0x0a96, 51) // ZC_ADD_EXCHANGE_ITEM4
+
+// Packet: 0x0a97
+packetLen(0x0a97, 8) // CZ_ALT_EQUIPMENT_EQUIP
+
+// Packet: 0x0a98
+packetLen(0x0a98, 10) // ZC_ALT_EQUIPMENT_EQUIP
+
+// Packet: 0x0a99
+packetLen(0x0a99, 4)
+
+// Packet: 0x0a9a
+packetLen(0x0a9a, 10) // ZC_ALT_EQUIPMENT_REMOVE
+
+// Packet: 0x0a9b
+packetLen(0x0a9b, -1) // ZC_ALT_EQUIPMENT_ITEMS
+
+// Packet: 0x0a9c
+packetLen(0x0a9c, 2)
+
+// Packet: 0x0a9d
+packetLen(0x0a9d, 4)
+
+// Packet: 0x0a9e
+packetLen(0x0a9e, 2)
+
+// Packet: 0x0a9f
+packetLen(0x0a9f, 2)
+
+// Packet: 0x0aa0
+packetLen(0x0aa0, 2) // ZC_REFINE_OPEN_WINDOW
+
+// Packet: 0x0aa1
+packetLen(0x0aa1, 4) // CZ_REFINE_ADD_ITEM
+
+// Packet: 0x0aa2
+packetLen(0x0aa2, -1) // ZC_REFINE_ADD_ITEM
+
+// Packet: 0x0aa3
+packetLen(0x0aa3, 7) // CZ_REFINE_ITEM_REQUEST
+
+// Packet: 0x0aa4
+packetLen(0x0aa4, 2) // CZ_REFINE_WINDOW_CLOSE
+
+// Packet: 0x0aa5
+packetLen(0x0aa5, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0aa6
+packetLen(0x0aa6, 36) // ZC_MEMBER_ADD
+
+// Packet: 0x0aa7
+packetLen(0x0aa7, 6) // ZC_INVENTORY_MOVE_FAILED
+
+// Packet: 0x0aa8
+packetLen(0x0aa8, 5)
+
+// Packet: 0x0aa9
+packetLen(0x0aa9, -1)
+
+// Packet: 0x0aaa
+packetLen(0x0aaa, -1)
+
+// Packet: 0x0aab
+packetLen(0x0aab, -1)
+
+// Packet: 0x0aac
+packetLen(0x0aac, 69)
+
+// Packet: 0x0aad
+packetLen(0x0aad, 51)
+
+// Packet: 0x0aae
+packetLen(0x0aae, 2)
+
+// Packet: 0x0aaf
+packetLen(0x0aaf, 6)
+
+// Packet: 0x0ab0
+packetLen(0x0ab0, 6)
+
+// Packet: 0x0ab1
+packetLen(0x0ab1, 14)
+
+// Packet: 0x0ab2
+packetLen(0x0ab2, 7) // ZC_GROUP_ISALIVE
+
+// Packet: 0x0ab3
+packetLen(0x0ab3, 19)
+
+// Packet: 0x0ab4
+packetLen(0x0ab4, 4)
+
+// Packet: 0x0ab5
+packetLen(0x0ab5, 2)
+
+// Packet: 0x0ab6
+packetLen(0x0ab6, 6)
+
+// Packet: 0x0ab7
+packetLen(0x0ab7, 4)
+
+// Packet: 0x0ab8
+packetLen(0x0ab8, 2)
+
+// Packet: 0x0ab9
+packetLen(0x0ab9, 39) // ZC_ITEM_PREVIEW
+
+// Packet: 0x0aba
+packetLen(0x0aba, 2)
+
+// Packet: 0x0abb
+packetLen(0x0abb, 2)
+
+// Packet: 0x0abc
+packetLen(0x0abc, -1)
+
+// Packet: 0x0abd
+packetLen(0x0abd, 10) // ZC_PARTY_MEMBER_JOB_LEVEL
+
+// Packet: 0x0abe
+packetLen(0x0abe, -1) // ZC_WARPLIST
+
+// Packet: 0x0abf
+packetLen(0x0abf, -1)
+
+// Packet: 0x0ac0
+packetLen(0x0ac0, 26) // CZ_OPEN_RODEXBOX
+
+// Packet: 0x0ac1
+packetLen(0x0ac1, 26) // CZ_REQ_REFRESH_RODEX
+
+// Packet: 0x0ac2
+packetLen(0x0ac2, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x0ac3
+packetLen(0x0ac3, 2)
+
+// Packet: 0x0ac4
+packetLen(0x0ac4, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x0ac5
+packetLen(0x0ac5, 156) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0ac6
+packetLen(0x0ac6, 156)
+
+// Packet: 0x0ac7
+packetLen(0x0ac7, 156) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0ac8
+packetLen(0x0ac8, 2) // ZC_UNKNOWN_CLEAN_ITEMS_LISTS
+
+// Packet: 0x0ac9
+packetLen(0x0ac9, -1)
+
+// Packet: 0x0aca
+packetLen(0x0aca, 3)
+
+// Packet: 0x0acb
+packetLen(0x0acb, 12) // ZC_PAR_CHANGE
+
+// Packet: 0x0acc
+packetLen(0x0acc, 18) // ZC_NOTIFY_EXP
+
+// Packet: 0x0acd
+packetLen(0x0acd, 23)
+
+// Packet: 0x0ace
+packetLen(0x0ace, 4)
+
+// Packet: 0x0acf
+#if PACKETVER >= 20171113
+packetLen(0x0acf, 68) // CA_LOGIN_OTP
+#elif PACKETVER >= 20171018
+packetLen(0x0acf, 64) // CA_LOGIN_OTP
+#endif
+
+// Packet: 0x0ad0
+packetLen(0x0ad0, 11) // CA_OTP_CODE
+
+// Packet: 0x0ad1
+packetLen(0x0ad1, -1)
+
+// Packet: 0x0ad2
+packetLen(0x0ad2, 30)
+
+// Packet: 0x0ad3
+packetLen(0x0ad3, -1)
+
+// Packet: 0x0ad4
+packetLen(0x0ad4, -1)
+
+// Packet: 0x0ad5
+packetLen(0x0ad5, 2)
+
+// Packet: 0x0ad6
+packetLen(0x0ad6, 2)
+
+// Packet: 0x0ad7
+packetLen(0x0ad7, 8)
+
+// Packet: 0x0ad8
+packetLen(0x0ad8, 8)
+
+// Packet: 0x0ad9
+packetLen(0x0ad9, -1)
+
+// Packet: 0x0ada
+packetLen(0x0ada, 30) // ZC_REFINE_STATUS
+
+// Packet: 0x0adb
+packetLen(0x0adb, -1)
+
+// Packet: 0x0adc
+packetLen(0x0adc, 6) // ZC_EQUIPWIN_OTHER
+
+// Packet: 0x0add
+packetLen(0x0add, 22) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x0ade
+packetLen(0x0ade, 6) // ZC_OVERWEIGHT_PERCENT
+
+// Packet: 0x0adf
+packetLen(0x0adf, 58) // ZC_ACK_REQNAME
+
+// Packet: 0x0ae0
+packetLen(0x0ae0, 30)
+
+// Packet: 0x0ae1
+#if PACKETVER >= 20171025
+packetLen(0x0ae1, 28)
+#endif
+
+// Packet: 0x0ae2
+#if PACKETVER >= 20171109
+packetLen(0x0ae2, 7) // ZC_OPEN_UI
+#endif
+
+// Packet: 0x0ae3
+#if PACKETVER >= 20171123
+packetLen(0x0ae3, -1) // AC_LOGIN_OTP
+#endif
+
+// Packet: 0x0ae4
+#if PACKETVER >= 20171130
+packetLen(0x0ae4, 89) // ZC_ADD_MEMBER_TO_GROUP
+#endif
+
+// Packet: 0x0ae5
+#if PACKETVER >= 20171130
+packetLen(0x0ae5, -1) // ZC_GROUP_LIST
+#endif
+
+// Packet: 0x0ae6
+#if PACKETVER >= 20171214
+packetLen(0x0ae6, 30)
+#endif
+
+// Packet: 0x0ae7
+#if PACKETVER >= 20171214
+packetLen(0x0ae7, 30)
+#endif
+
+// Packet: 0x0ae8
+#if PACKETVER >= 20171214
+packetLen(0x0ae8, 2)
+#endif
+
+// Packet: 0x0ae9
+#if PACKETVER >= 20171220
+packetLen(0x0ae9, 64) // HC_SECOND_PASSWD_LOGIN
+#endif
+
+// Packet: 0x0aea
+#if PACKETVER >= 20171227
+packetLen(0x0aea, 2)
+#elif PACKETVER >= 20171220
+packetLen(0x0aea, 11)
+#endif
+
+// Packet: 0x0aeb
+#if PACKETVER >= 20171227
+packetLen(0x0aeb, 11)
+#endif
+
+// Packet: 0x0aec
+#if PACKETVER >= 20171227
+packetLen(0x0aec, 2)
+#endif
+
+
+#endif /* COMMON_PACKETS2017_LEN_ZERO_H */
diff --git a/src/common/packets/packets2018_len_main.h b/src/common/packets/packets2018_len_main.h
new file mode 100644
index 000000000..c7f4c0972
--- /dev/null
+++ b/src/common/packets/packets2018_len_main.h
@@ -0,0 +1,5786 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2018_LEN_MAIN_H
+#define COMMON_PACKETS2018_LEN_MAIN_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 157) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 22) // CZ_ENTER
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 44) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 10) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, 14)
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+packetLen(0x0094, 19) // CZ_REQNAME
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+#if PACKETVER >= 20181121
+packetLen(0x009d, 19) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20180103
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+#endif
+
+// Packet: 0x009e
+#if PACKETVER >= 20181121
+packetLen(0x009e, 19) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20180103
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+#endif
+
+// Packet: 0x009f
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+#if PACKETVER >= 20181121
+packetLen(0x00a0, 33) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20180103
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+#endif
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+packetLen(0x00a7, 9)
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 9) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+#if PACKETVER >= 20181121
+packetLen(0x00e9, 29) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20180103
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+#if PACKETVER >= 20181121
+packetLen(0x00f4, 31) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20180103
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+#endif
+
+// Packet: 0x00f5
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+packetLen(0x00f7, 17) // CZ_REQUEST_TIME
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+#if PACKETVER >= 20181121
+packetLen(0x010a, 6) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20180103
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+#endif
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+#if PACKETVER >= 20181121
+packetLen(0x0110, 14) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20180103
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+#endif
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+packetLen(0x0113, 25) // CZ_USE_SKILL
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+#if PACKETVER >= 20181121
+packetLen(0x0124, 31) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20180103
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+#endif
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+#if PACKETVER >= 20181121
+packetLen(0x018e, 18) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20180103
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+#endif
+
+// Packet: 0x018f
+#if PACKETVER >= 20181121
+packetLen(0x018f, 8) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20180103
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+#endif
+
+// Packet: 0x0190
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 37) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+#if PACKETVER >= 20181121
+packetLen(0x01a3, 7) // ZC_FEED_PET
+#elif PACKETVER >= 20180103
+packetLen(0x01a3, 5) // ZC_FEED_PET
+#endif
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+#if PACKETVER >= 20181121
+packetLen(0x01ae, 6) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20180103
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+#endif
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+#if PACKETVER >= 20181121
+packetLen(0x01c4, 32) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20180103
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+#endif
+
+// Packet: 0x01c5
+#if PACKETVER >= 20181121
+packetLen(0x01c5, 32) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20180103
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+#endif
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+#if PACKETVER >= 20181121
+packetLen(0x01c8, 15) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20180103
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+#endif
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+#if PACKETVER >= 20181121
+packetLen(0x01d7, 15) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20180103
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+#endif
+
+// Packet: 0x01d8
+#if PACKETVER >= 20181121
+packetLen(0x01d8, 58) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20180103
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+#endif
+
+// Packet: 0x01d9
+#if PACKETVER >= 20181121
+packetLen(0x01d9, 57) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20180103
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+#endif
+
+// Packet: 0x01da
+#if PACKETVER >= 20181121
+packetLen(0x01da, 64) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20180103
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+#endif
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+#if PACKETVER >= 20181121
+packetLen(0x01fd, 25) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20180103
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+#endif
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+#if PACKETVER >= 20180315
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20180307
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20180221
+packetLen(0x0202, 90) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20180124
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20180117
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20180103
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+#if PACKETVER >= 20180307
+packetLen(0x0206, 35) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20180103
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+#endif
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+#if PACKETVER >= 20181121
+packetLen(0x0223, 10) // ZC_ACK_WEAPONREFINE
+#elif PACKETVER >= 20180103
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+#endif
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+#if PACKETVER >= 20181121
+packetLen(0x022a, 62) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20180103
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+#endif
+
+// Packet: 0x022b
+#if PACKETVER >= 20181121
+packetLen(0x022b, 61) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20180103
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+#endif
+
+// Packet: 0x022c
+#if PACKETVER >= 20181121
+packetLen(0x022c, 69) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20180103
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+#endif
+
+// Packet: 0x022d
+#if PACKETVER >= 20180315
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+#elif PACKETVER >= 20180124
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20180117
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20180103
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#endif
+
+// Packet: 0x022e
+#if PACKETVER >= 20181121
+packetLen(0x022e, 73) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20180103
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+#endif
+
+// Packet: 0x022f
+#if PACKETVER >= 20181121
+packetLen(0x022f, 7) // ZC_FEED_MER
+#elif PACKETVER >= 20180103
+packetLen(0x022f, 5) // ZC_FEED_MER
+#endif
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+#if PACKETVER >= 20180315
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20180124
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20180117
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20180103
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#endif
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+#if PACKETVER >= 20181121
+packetLen(0x025b, 8) // CZ_REQ_MAKINGITEM
+#elif PACKETVER >= 20180103
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+#endif
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+
+// Packet: 0x0275
+packetLen(0x0275, 37) // CH_ENTER2
+
+// Packet: 0x0276
+packetLen(0x0276, -1) // AC_ACCEPT_LOGIN2
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+#if PACKETVER >= 20180315
+packetLen(0x0281, 4) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20180314
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20180307
+packetLen(0x0281, 4) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20180213
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20180207
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20180124
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20180117
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20180103
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#endif
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+
+// Packet: 0x0288
+packetLen(0x0288, -1) // CZ_PC_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0289
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0296
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0297
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0298
+#if PACKETVER >= 20181121
+packetLen(0x0298, 10) // ZC_CASH_TIME_COUNTER
+#elif PACKETVER >= 20180103
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+#endif
+
+// Packet: 0x0299
+#if PACKETVER >= 20181121
+packetLen(0x0299, 8) // ZC_CASH_ITEM_DELETE
+#elif PACKETVER >= 20180103
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+#endif
+
+// Packet: 0x029a
+#if PACKETVER >= 20181121
+packetLen(0x029a, 37) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20180103
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+#endif
+
+// Packet: 0x029b
+packetLen(0x029b, 80) // ZC_MER_INIT
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a5
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+
+// Packet: 0x02a6
+packetLen(0x02a6, -1) // ZC_HACKSH_CPX_MSG
+
+// Packet: 0x02a7
+packetLen(0x02a7, -1) // CZ_HACKSH_CPX_MSG
+
+// Packet: 0x02aa
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+
+// Packet: 0x02ab
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+
+// Packet: 0x02ac
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+
+// Packet: 0x02ad
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+
+// Packet: 0x02b0
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+
+// Packet: 0x02b1
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+
+// Packet: 0x02b2
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+
+// Packet: 0x02b3
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+
+// Packet: 0x02b4
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+
+// Packet: 0x02b5
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+
+// Packet: 0x02b6
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+
+// Packet: 0x02b7
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+
+// Packet: 0x02b8
+#if PACKETVER >= 20181121
+packetLen(0x02b8, 32) // ZC_ITEM_PICKUP_PARTY
+#elif PACKETVER >= 20180103
+packetLen(0x02b8, 22) // ZC_ITEM_PICKUP_PARTY
+#endif
+
+// Packet: 0x02b9
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+
+// Packet: 0x02ba
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+
+// Packet: 0x02bb
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+
+// Packet: 0x02bc
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+
+// Packet: 0x02c1
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+
+// Packet: 0x02c2
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+
+// Packet: 0x02c4
+#if PACKETVER >= 20180315
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20180117
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20180103
+packetLen(0x02c4, 8) // CZ_PARTY_JOIN_REQ
+#endif
+
+// Packet: 0x02c5
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c6
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+
+// Packet: 0x02c7
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c8
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+
+// Packet: 0x02c9
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+
+// Packet: 0x02ca
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+
+// Packet: 0x02cb
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+
+// Packet: 0x02cc
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+
+// Packet: 0x02cd
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+
+// Packet: 0x02ce
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+
+// Packet: 0x02cf
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+
+// Packet: 0x02d0
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d1
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d2
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d3
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+
+// Packet: 0x02d4
+#if PACKETVER >= 20181121
+packetLen(0x02d4, 39) // ZC_ITEM_PICKUP_ACK3
+#elif PACKETVER >= 20180103
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+#endif
+
+// Packet: 0x02d5
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+
+// Packet: 0x02d6
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d7
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d8
+packetLen(0x02d8, 10) // CZ_CONFIG
+
+// Packet: 0x02d9
+packetLen(0x02d9, 10) // ZC_CONFIG
+
+// Packet: 0x02da
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+
+// Packet: 0x02db
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+
+// Packet: 0x02dc
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+
+// Packet: 0x02dd
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+
+// Packet: 0x02de
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+
+// Packet: 0x02df
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+
+// Packet: 0x02e0
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+
+// Packet: 0x02e1
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+
+// Packet: 0x02e2
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+
+// Packet: 0x02e3
+packetLen(0x02e3, 22) // CZ_USE_SKILL_NEW_JAPEN
+
+// Packet: 0x02e4
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+
+// Packet: 0x02e5
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+
+// Packet: 0x02e6
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+
+// Packet: 0x02e7
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+
+// Packet: 0x02e8
+packetLen(0x02e8, -1) // ZC_NORMAL_ITEMLIST3
+
+// Packet: 0x02e9
+packetLen(0x02e9, -1) // ZC_CART_NORMAL_ITEMLIST3
+
+// Packet: 0x02ea
+packetLen(0x02ea, -1) // ZC_STORE_NORMAL_ITEMLIST3
+
+// Packet: 0x02eb
+packetLen(0x02eb, 13) // ZC_ACCEPT_ENTER2
+
+// Packet: 0x02ec
+#if PACKETVER >= 20181121
+packetLen(0x02ec, 71) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20180103
+packetLen(0x02ec, 67) // ZC_NOTIFY_MOVEENTRY4
+#endif
+
+// Packet: 0x02ed
+#if PACKETVER >= 20181121
+packetLen(0x02ed, 63) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20180103
+packetLen(0x02ed, 59) // ZC_NOTIFY_NEWENTRY4
+#endif
+
+// Packet: 0x02ee
+#if PACKETVER >= 20181121
+packetLen(0x02ee, 64) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20180103
+packetLen(0x02ee, 60) // ZC_NOTIFY_STANDENTRY4
+#endif
+
+// Packet: 0x02ef
+packetLen(0x02ef, 8) // ZC_NOTIFY_FONT
+
+// Packet: 0x02f0
+packetLen(0x02f0, 10) // ZC_PROGRESS
+
+// Packet: 0x02f1
+packetLen(0x02f1, 2) // CZ_PROGRESS
+
+// Packet: 0x02f2
+packetLen(0x02f2, 2) // ZC_PROGRESS_CANCEL
+
+// Packet: 0x02f3
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+
+// Packet: 0x02f4
+packetLen(0x02f4, 3) // ZC_IRMAIL_SEND_RES
+
+// Packet: 0x02f5
+packetLen(0x02f5, 7) // ZC_IRMAIL_NOTIFY
+
+// Packet: 0x02f6
+packetLen(0x02f6, 7) // CZ_IRMAIL_LIST
+
+// Packet: 0x035c
+packetLen(0x035c, 2) // CZ_OPEN_SIMPLE_CASHSHOP_ITEMLIST
+
+// Packet: 0x035d
+packetLen(0x035d, -1) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+
+// Packet: 0x035e
+packetLen(0x035e, 2) // CZ_CLOSE_WINDOW
+
+// Packet: 0x035f
+#if PACKETVER >= 20180315
+packetLen(0x035f, 5) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20180314
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20180307
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20180213
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20180117
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20180103
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#endif
+
+// Packet: 0x0360
+#if PACKETVER >= 20180315
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20180213
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20180207
+packetLen(0x0360, 4) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20180117
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20180103
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#endif
+
+// Packet: 0x0361
+#if PACKETVER >= 20180315
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20180314
+packetLen(0x0361, 12) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20180124
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20180117
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20180103
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#endif
+
+// Packet: 0x0362
+#if PACKETVER >= 20180315
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20180213
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20180207
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20180124
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20180117
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20180103
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#endif
+
+// Packet: 0x0363
+#if PACKETVER >= 20180315
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20180213
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20180207
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20180124
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20180117
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20180103
+packetLen(0x0363, 26) // CZ_ITEM_THROW2
+#endif
+
+// Packet: 0x0364
+#if PACKETVER >= 20180315
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20180213
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20180207
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20180124
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20180117
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20180103
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#endif
+
+// Packet: 0x0365
+#if PACKETVER >= 20180315
+packetLen(0x0365, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20180213
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20180207
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20180124
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20180117
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20180103
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#endif
+
+// Packet: 0x0366
+#if PACKETVER >= 20180314
+packetLen(0x0366, 10) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20180307
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20180221
+packetLen(0x0366, 8) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20180213
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20180117
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20180103
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#endif
+
+// Packet: 0x0367
+#if PACKETVER >= 20180315
+packetLen(0x0367, 90) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20180103
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#endif
+
+// Packet: 0x0368
+#if PACKETVER >= 20180315
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20180213
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20180117
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20180103
+packetLen(0x0368, 2) // CZ_REQNAME2
+#endif
+
+// Packet: 0x0369
+#if PACKETVER >= 20180315
+packetLen(0x0369, 6) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20180314
+packetLen(0x0369, 5) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20180221
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20180213
+packetLen(0x0369, 36) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20180117
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20180103
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#endif
+
+// Packet: 0x03dd
+packetLen(0x03dd, 18) // AHC_GAME_GUARD
+
+// Packet: 0x03de
+packetLen(0x03de, 18) // CAH_ACK_GAME_GUARD
+
+// Packet: 0x0436
+#if PACKETVER >= 20180315
+packetLen(0x0436, 19) // CZ_ENTER2
+#elif PACKETVER >= 20180314
+packetLen(0x0436, 6) // CZ_ENTER2
+#elif PACKETVER >= 20180307
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20180221
+packetLen(0x0436, 26) // CZ_ENTER2
+#elif PACKETVER >= 20180207
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20180124
+packetLen(0x0436, 8) // CZ_ENTER2
+#elif PACKETVER >= 20180117
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20180103
+packetLen(0x0436, 2) // CZ_ENTER2
+#endif
+
+// Packet: 0x0437
+#if PACKETVER >= 20180315
+packetLen(0x0437, 7) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20180314
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20180307
+packetLen(0x0437, 6) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20180213
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20180117
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20180103
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#endif
+
+// Packet: 0x0438
+#if PACKETVER >= 20180315
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20180213
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20180117
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20180103
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#endif
+
+// Packet: 0x0439
+packetLen(0x0439, 8) // CZ_USE_ITEM2
+
+// Packet: 0x043d
+packetLen(0x043d, 8) // ZC_SKILL_POSTDELAY
+
+// Packet: 0x043e
+packetLen(0x043e, -1) // ZC_SKILL_POSTDELAY_LIST
+
+// Packet: 0x043f
+packetLen(0x043f, 25) // ZC_MSG_STATE_CHANGE2
+
+// Packet: 0x0440
+packetLen(0x0440, 10) // ZC_MILLENNIUMSHIELD
+
+// Packet: 0x0441
+packetLen(0x0441, 4) // ZC_SKILLINFO_DELETE
+
+// Packet: 0x0442
+packetLen(0x0442, -1) // ZC_SKILL_SELECT_REQUEST
+
+// Packet: 0x0443
+packetLen(0x0443, 8) // CZ_SKILL_SELECT_RESPONSE
+
+// Packet: 0x0444
+packetLen(0x0444, -1) // ZC_SIMPLE_CASH_POINT_ITEMLIST
+
+// Packet: 0x0445
+#if PACKETVER >= 20181121
+packetLen(0x0445, 12) // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+#elif PACKETVER >= 20180103
+packetLen(0x0445, 10) // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+#endif
+
+// Packet: 0x0446
+packetLen(0x0446, 14) // ZC_QUEST_NOTIFY_EFFECT
+
+// Packet: 0x0447
+packetLen(0x0447, 2) // CZ_BLOCKING_PLAY_CANCEL
+
+// Packet: 0x0448
+packetLen(0x0448, -1) // HC_CHARACTER_LIST
+
+// Packet: 0x0449
+packetLen(0x0449, 4) // ZC_HACKSH_ERROR_MSG
+
+// Packet: 0x044a
+packetLen(0x044a, 6) // CZ_CLIENT_VERSION
+
+// Packet: 0x044b
+packetLen(0x044b, 2) // CZ_CLOSE_SIMPLECASH_SHOP
+
+// Packet: 0x07d7
+packetLen(0x07d7, 8) // CZ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d8
+packetLen(0x07d8, 8) // ZC_REQ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d9
+packetLen(0x07d9, 268) // ZC_SHORTCUT_KEY_LIST_V2
+
+// Packet: 0x07da
+packetLen(0x07da, 6) // CZ_CHANGE_GROUP_MASTER
+
+// Packet: 0x07db
+packetLen(0x07db, 8) // ZC_HO_PAR_CHANGE
+
+// Packet: 0x07dc
+packetLen(0x07dc, 6) // CZ_SEEK_PARTY
+
+// Packet: 0x07dd
+packetLen(0x07dd, 54) // ZC_SEEK_PARTY
+
+// Packet: 0x07de
+packetLen(0x07de, 30) // CZ_SEEK_PARTY_MEMBER
+
+// Packet: 0x07df
+packetLen(0x07df, 54) // ZC_SEEK_PARTY_MEMBER
+
+// Packet: 0x07e0
+packetLen(0x07e0, 58) // ZC_ES_NOTI_MYINFO
+
+// Packet: 0x07e1
+packetLen(0x07e1, 15) // ZC_SKILLINFO_UPDATE2
+
+// Packet: 0x07e2
+packetLen(0x07e2, 8) // ZC_MSG_VALUE
+
+// Packet: 0x07e3
+packetLen(0x07e3, 6) // ZC_ITEMLISTWIN_OPEN
+
+// Packet: 0x07e4
+#if PACKETVER >= 20180315
+packetLen(0x07e4, -1) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20180314
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20180307
+packetLen(0x07e4, 19) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20180213
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20180207
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20180124
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20180117
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20180103
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#endif
+
+// Packet: 0x07e5
+packetLen(0x07e5, 4) // CH_ENTER_CHECKBOT
+
+// Packet: 0x07e6
+packetLen(0x07e6, 8) // ZC_MSG_SKILL
+
+// Packet: 0x07e7
+packetLen(0x07e7, 32) // CH_CHECKBOT
+
+// Packet: 0x07e8
+packetLen(0x07e8, -1) // HC_CHECKBOT
+
+// Packet: 0x07e9
+packetLen(0x07e9, 5) // HC_CHECKBOT_RESULT
+
+// Packet: 0x07ea
+packetLen(0x07ea, 2) // CZ_BATTLE_FIELD_LIST
+
+// Packet: 0x07eb
+packetLen(0x07eb, -1) // ZC_BATTLE_FIELD_LIST
+
+// Packet: 0x07ec
+#if PACKETVER >= 20180315
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20180213
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20180207
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20180124
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20180117
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20180103
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#endif
+
+// Packet: 0x07ed
+packetLen(0x07ed, 10) // ZC_JOIN_BATTLE_FIELD
+
+// Packet: 0x07ee
+packetLen(0x07ee, 6) // CZ_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07ef
+packetLen(0x07ef, 8) // ZC_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07f0
+packetLen(0x07f0, 6) // CZ_REQ_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f1
+packetLen(0x07f1, 18) // ZC_ACK_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f2
+packetLen(0x07f2, 8) // ZC_BATTLE_NOTI_START_STEP
+
+// Packet: 0x07f3
+packetLen(0x07f3, 6) // ZC_BATTLE_JOIN_NOTI_DEFER
+
+// Packet: 0x07f4
+packetLen(0x07f4, 3) // ZC_BATTLE_JOIN_DISABLE_STATE
+
+// Packet: 0x07f5
+packetLen(0x07f5, 6) // CZ_GM_FULLSTRIP
+
+// Packet: 0x07f6
+packetLen(0x07f6, 14) // ZC_NOTIFY_EXP
+
+// Packet: 0x07f7
+packetLen(0x07f7, -1) // ZC_NOTIFY_MOVEENTRY7
+
+// Packet: 0x07f8
+packetLen(0x07f8, -1) // ZC_NOTIFY_NEWENTRY5
+
+// Packet: 0x07f9
+packetLen(0x07f9, -1) // ZC_NOTIFY_STANDENTRY5
+
+// Packet: 0x07fa
+packetLen(0x07fa, 8) // ZC_DELETE_ITEM_FROM_BODY
+
+// Packet: 0x07fb
+packetLen(0x07fb, 25) // ZC_USESKILL_ACK2
+
+// Packet: 0x07fc
+packetLen(0x07fc, 10) // ZC_CHANGE_GROUP_MASTER
+
+// Packet: 0x07fd
+packetLen(0x07fd, -1) // ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN
+
+// Packet: 0x07fe
+packetLen(0x07fe, 26) // ZC_PLAY_NPC_BGM
+
+// Packet: 0x0800
+packetLen(0x0800, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0801
+packetLen(0x0801, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0802
+#if PACKETVER >= 20180315
+packetLen(0x0802, 18) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20180221
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20180213
+packetLen(0x0802, 6) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20180207
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20180124
+packetLen(0x0802, 6) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20180117
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20180103
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// Packet: 0x0803
+packetLen(0x0803, 4) // ZC_PARTY_BOOKING_ACK_REGISTER
+
+// Packet: 0x0804
+packetLen(0x0804, 14) // CZ_PARTY_BOOKING_REQ_SEARCH
+
+// Packet: 0x0805
+packetLen(0x0805, -1) // ZC_PARTY_BOOKING_ACK_SEARCH
+
+// Packet: 0x0806
+packetLen(0x0806, 2) // CZ_PARTY_BOOKING_REQ_DELETE
+
+// Packet: 0x0807
+packetLen(0x0807, 4) // ZC_PARTY_BOOKING_ACK_DELETE
+
+// Packet: 0x0808
+packetLen(0x0808, 14) // CZ_PARTY_BOOKING_REQ_UPDATE
+
+// Packet: 0x0809
+packetLen(0x0809, 50) // ZC_PARTY_BOOKING_NOTIFY_INSERT
+
+// Packet: 0x080a
+packetLen(0x080a, 18) // ZC_PARTY_BOOKING_NOTIFY_UPDATE
+
+// Packet: 0x080b
+packetLen(0x080b, 6) // ZC_PARTY_BOOKING_NOTIFY_DELETE
+
+// Packet: 0x080c
+packetLen(0x080c, 2) // CZ_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080d
+packetLen(0x080d, 3) // ZC_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080e
+packetLen(0x080e, 14) // ZC_NOTIFY_HP_TO_GROUPM_R2
+
+// Packet: 0x080f
+#if PACKETVER >= 20181121
+packetLen(0x080f, 30) // ZC_ADD_EXCHANGE_ITEM2
+#elif PACKETVER >= 20180103
+packetLen(0x080f, 20) // ZC_ADD_EXCHANGE_ITEM2
+#endif
+
+// Packet: 0x0810
+packetLen(0x0810, 3) // ZC_OPEN_BUYING_STORE
+
+// Packet: 0x0811
+#if PACKETVER >= 20180315
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20180213
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20180117
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20180103
+packetLen(0x0811, 19) // CZ_REQ_OPEN_BUYING_STORE
+#endif
+
+// Packet: 0x0812
+packetLen(0x0812, 8) // ZC_FAILED_OPEN_BUYING_STORE_TO_BUYER
+
+// Packet: 0x0813
+packetLen(0x0813, -1) // ZC_MYITEMLIST_BUYING_STORE
+
+// Packet: 0x0814
+packetLen(0x0814, 86) // ZC_BUYING_STORE_ENTRY
+
+// Packet: 0x0815
+#if PACKETVER >= 20180213
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20180117
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20180103
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#endif
+
+// Packet: 0x0816
+packetLen(0x0816, 6) // ZC_DISAPPEAR_BUYING_STORE_ENTRY
+
+// Packet: 0x0817
+#if PACKETVER >= 20180315
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20180221
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20180213
+packetLen(0x0817, 90) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20180103
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#endif
+
+// Packet: 0x0818
+packetLen(0x0818, -1) // ZC_ACK_ITEMLIST_BUYING_STORE
+
+// Packet: 0x0819
+#if PACKETVER >= 20180315
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20180213
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20180207
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20180124
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20180117
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20180103
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#endif
+
+// Packet: 0x081a
+packetLen(0x081a, 4) // ZC_FAILED_TRADE_BUYING_STORE_TO_BUYER
+
+// Packet: 0x081b
+#if PACKETVER >= 20181121
+packetLen(0x081b, 12) // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+#elif PACKETVER >= 20180103
+packetLen(0x081b, 10) // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+#endif
+
+// Packet: 0x081c
+packetLen(0x081c, 10) // ZC_ITEM_DELETE_BUYING_STORE
+
+// Packet: 0x081d
+packetLen(0x081d, 22) // ZC_EL_INIT
+
+// Packet: 0x081e
+packetLen(0x081e, 8) // ZC_EL_PAR_CHANGE
+
+// Packet: 0x081f
+packetLen(0x081f, -1) // ZC_BROADCAST4
+
+// Packet: 0x0820
+packetLen(0x0820, 11) // ZC_COSTUME_SPRITE_CHANGE
+
+// Packet: 0x0821
+packetLen(0x0821, 2) // AC_OTP_USER
+
+// Packet: 0x0822
+packetLen(0x0822, 9) // CA_OTP_AUTH_REQ
+
+// Packet: 0x0823
+packetLen(0x0823, -1) // AC_OTP_AUTH_ACK
+
+// Packet: 0x0824
+#if PACKETVER >= 20181121
+packetLen(0x0824, 8) // ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER
+#elif PACKETVER >= 20180103
+packetLen(0x0824, 6) // ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER
+#endif
+
+// Packet: 0x0825
+packetLen(0x0825, -1) // CA_SSO_LOGIN_REQ
+
+// Packet: 0x0827
+packetLen(0x0827, 6) // CH_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0828
+packetLen(0x0828, 14) // HC_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0829
+packetLen(0x0829, 12) // CH_DELETE_CHAR3
+
+// Packet: 0x082a
+packetLen(0x082a, 10) // HC_DELETE_CHAR3
+
+// Packet: 0x082b
+packetLen(0x082b, 6) // CH_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082c
+packetLen(0x082c, 10) // HC_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082d
+packetLen(0x082d, -1) // HC_ACCEPT_ENTER2
+
+// Packet: 0x0835
+#if PACKETVER >= 20180315
+packetLen(0x0835, -1) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20180103
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#endif
+
+// Packet: 0x0836
+packetLen(0x0836, -1) // ZC_SEARCH_STORE_INFO_ACK
+
+// Packet: 0x0837
+packetLen(0x0837, 3) // ZC_SEARCH_STORE_INFO_FAILED
+
+// Packet: 0x0838
+#if PACKETVER >= 20180307
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20180221
+packetLen(0x0838, 5) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20180213
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20180117
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20180103
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#endif
+
+// Packet: 0x0839
+packetLen(0x0839, 66) // ZC_ACK_BAN_GUILD_SSO
+
+// Packet: 0x083a
+packetLen(0x083a, 5) // ZC_OPEN_SEARCH_STORE_INFO
+
+// Packet: 0x083b
+packetLen(0x083b, 2) // CZ_CLOSE_SEARCH_STORE_INFO
+
+// Packet: 0x083c
+#if PACKETVER >= 20181121
+packetLen(0x083c, 14) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20180315
+packetLen(0x083c, 12) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20180213
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20180117
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20180103
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#endif
+
+// Packet: 0x083d
+packetLen(0x083d, 6) // ZC_SSILIST_ITEM_CLICK_ACK
+
+// Packet: 0x083e
+packetLen(0x083e, 26) // AC_REFUSE_LOGIN2
+
+// Packet: 0x0840
+packetLen(0x0840, -1) // HC_NOTIFY_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0841
+packetLen(0x0841, 4) // CH_SELECT_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0842
+packetLen(0x0842, 6) // CZ_RECALL_SSO
+
+// Packet: 0x0843
+packetLen(0x0843, 6) // CZ_REMOVE_AID_SSO
+
+// Packet: 0x0844
+packetLen(0x0844, 2) // CZ_SE_CASHSHOP_OPEN
+
+// Packet: 0x0845
+packetLen(0x0845, 10) // ZC_SE_CASHSHOP_OPEN
+
+// Packet: 0x0846
+packetLen(0x0846, 4) // CZ_REQ_SE_CASH_TAB_CODE
+
+// Packet: 0x0847
+packetLen(0x0847, -1) // ZC_ACK_SE_CASH_ITEM_LIST
+
+// Packet: 0x0848
+packetLen(0x0848, -1) // CZ_SE_PC_BUY_CASHITEM_LIST
+
+// Packet: 0x0849
+packetLen(0x0849, 16) // ZC_SE_PC_BUY_CASHITEM_RESULT
+
+// Packet: 0x084a
+packetLen(0x084a, 2) // CZ_SE_CASHSHOP_CLOSE
+
+// Packet: 0x084b
+#if PACKETVER >= 20181121
+packetLen(0x084b, 21) // ZC_ITEM_FALL_ENTRY4
+#elif PACKETVER >= 20180103
+packetLen(0x084b, 19) // ZC_ITEM_FALL_ENTRY4
+#endif
+
+// Packet: 0x084c
+packetLen(0x084c, 10) // CZ_MACRO_USE_SKILL
+
+// Packet: 0x084d
+packetLen(0x084d, 10) // CZ_MACRO_USE_SKILL_TOGROUND
+
+// Packet: 0x084e
+packetLen(0x084e, 5) // CZ_MACRO_REQUEST_MOVE
+
+// Packet: 0x084f
+packetLen(0x084f, 6) // CZ_MACRO_ITEM_PICKUP
+
+// Packet: 0x0850
+packetLen(0x0850, 7) // CZ_MACRO_REQUEST_ACT
+
+// Packet: 0x0851
+packetLen(0x0851, -1) // ZC_GPK_DYNCODE
+
+// Packet: 0x0852
+packetLen(0x0852, 2) // CZ_GPK_DYNCODE_RELOAD
+
+// Packet: 0x0853
+packetLen(0x0853, -1) // ZC_GPK_AUTH
+
+// Packet: 0x0854
+packetLen(0x0854, -1) // CZ_GPK_AUTH
+
+// Packet: 0x0855
+packetLen(0x0855, 6) // ZC_MACRO_ITEMPICKUP_FAIL
+
+// Packet: 0x0856
+packetLen(0x0856, -1) // ZC_NOTIFY_MOVEENTRY8
+
+// Packet: 0x0857
+packetLen(0x0857, -1) // ZC_NOTIFY_STANDENTRY7
+
+// Packet: 0x0858
+packetLen(0x0858, -1) // ZC_NOTIFY_NEWENTRY6
+
+// Packet: 0x0859
+packetLen(0x0859, -1) // ZC_EQUIPWIN_MICROSCOPE2
+
+// Packet: 0x085a
+#if PACKETVER >= 20180315
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20180314
+packetLen(0x085a, 6) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20180221
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20180213
+packetLen(0x085a, 12) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20180103
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x085b
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+
+// Packet: 0x085c
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+
+// Packet: 0x085d
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+
+// Packet: 0x085e
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+
+// Packet: 0x085f
+#if PACKETVER >= 20180207
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20180124
+packetLen(0x085f, 36) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20180103
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x0860
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+
+// Packet: 0x0861
+#if PACKETVER >= 20180314
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20180307
+packetLen(0x0861, 90) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20180103
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x0862
+#if PACKETVER >= 20180315
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20180307
+packetLen(0x0862, 6) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20180103
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x0863
+#if PACKETVER >= 20180315
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20180314
+packetLen(0x0863, -1) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20180103
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x0864
+#if PACKETVER >= 20180314
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20180307
+packetLen(0x0864, -1) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20180103
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x0865
+#if PACKETVER >= 20180117
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20180103
+packetLen(0x0865, 4) // ZC_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0866
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+
+// Packet: 0x0867
+#if PACKETVER >= 20180307
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20180221
+packetLen(0x0867, -1) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20180103
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0868
+#if PACKETVER >= 20180315
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20180314
+packetLen(0x0868, 8) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20180207
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20180124
+packetLen(0x0868, 4) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20180103
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0869
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+
+// Packet: 0x086a
+#if PACKETVER >= 20180207
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20180124
+packetLen(0x086a, 18) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20180103
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x086b
+#if PACKETVER >= 20180117
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20180103
+packetLen(0x086b, -1) // ZC_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x086c
+#if PACKETVER >= 20180314
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20180221
+packetLen(0x086c, 6) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20180103
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x086d
+#if PACKETVER >= 20180117
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20180103
+packetLen(0x086d, 12) // ZC_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x086e
+#if PACKETVER >= 20180315
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20180314
+packetLen(0x086e, 8) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20180103
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x086f
+#if PACKETVER >= 20180307
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20180221
+packetLen(0x086f, -1) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20180213
+packetLen(0x086f, 26) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20180207
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20180124
+packetLen(0x086f, 8) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20180103
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x0870
+#if PACKETVER >= 20180314
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20180307
+packetLen(0x0870, -1) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20180213
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20180207
+packetLen(0x0870, 19) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20180103
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x0871
+#if PACKETVER >= 20180307
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20180221
+packetLen(0x0871, 6) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20180103
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x0872
+#if PACKETVER >= 20180314
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20180307
+packetLen(0x0872, 18)
+#elif PACKETVER >= 20180117
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20180103
+packetLen(0x0872, 6)
+#endif
+
+// Packet: 0x0873
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+
+// Packet: 0x0874
+#if PACKETVER >= 20180315
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20180314
+packetLen(0x0874, -1) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20180221
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20180213
+packetLen(0x0874, 6) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20180103
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x0875
+#if PACKETVER >= 20180221
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20180213
+packetLen(0x0875, 8) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20180124
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20180117
+packetLen(0x0875, 36) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20180103
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x0876
+#if PACKETVER >= 20180307
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20180221
+packetLen(0x0876, 5) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20180117
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20180103
+packetLen(0x0876, 6) // ZC_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x0877
+#if PACKETVER >= 20180314
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20180307
+packetLen(0x0877, 5) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20180103
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x0878
+#if PACKETVER >= 20180221
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20180213
+packetLen(0x0878, 5) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20180103
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x0879
+#if PACKETVER >= 20180307
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20180221
+packetLen(0x0879, 8) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20180117
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20180103
+packetLen(0x0879, -1) // ZC_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x087a
+#if PACKETVER >= 20180315
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20180314
+packetLen(0x087a, 19) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20180207
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20180124
+packetLen(0x087a, 26) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20180103
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x087b
+#if PACKETVER >= 20180221
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20180213
+packetLen(0x087b, 6) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20180103
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x087c
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+
+// Packet: 0x087d
+#if PACKETVER >= 20180307
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20180221
+packetLen(0x087d, 5) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20180103
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x087e
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+
+// Packet: 0x087f
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+
+// Packet: 0x0880
+#if PACKETVER >= 20180307
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20180221
+packetLen(0x0880, -1) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20180103
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x0881
+#if PACKETVER >= 20180307
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20180221
+packetLen(0x0881, 18) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20180213
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20180207
+packetLen(0x0881, 26) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20180103
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x0882
+#if PACKETVER >= 20180221
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20180213
+packetLen(0x0882, 10) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20180103
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x0883
+#if PACKETVER >= 20180307
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20180221
+packetLen(0x0883, -1) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20180103
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x0884
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+
+// Packet: 0x0885
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+
+// Packet: 0x0886
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+
+// Packet: 0x0887
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+
+// Packet: 0x0888
+#if PACKETVER >= 20180315
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20180314
+packetLen(0x0888, 5) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20180207
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20180124
+packetLen(0x0888, 19) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20180103
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x0889
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+
+// Packet: 0x088a
+#if PACKETVER >= 20180315
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20180314
+packetLen(0x088a, 10) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20180103
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x088b
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+
+// Packet: 0x088c
+#if PACKETVER >= 20180221
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20180213
+packetLen(0x088c, -1) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20180103
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x088d
+#if PACKETVER >= 20180315
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20180314
+packetLen(0x088d, 36) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20180307
+packetLen(0x088d, 8) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20180103
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x088e
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+
+// Packet: 0x088f
+#if PACKETVER >= 20180307
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20180221
+packetLen(0x088f, 6) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20180103
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0890
+#if PACKETVER >= 20180207
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20180124
+packetLen(0x0890, 8) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20180103
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0891
+#if PACKETVER >= 20180307
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20180221
+packetLen(0x0891, 4) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20180103
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0892
+#if PACKETVER >= 20180221
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20180213
+packetLen(0x0892, 6) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20180103
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0893
+#if PACKETVER >= 20180314
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20180307
+packetLen(0x0893, 10) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20180103
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x0894
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+
+// Packet: 0x0895
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+
+// Packet: 0x0896
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+
+// Packet: 0x0897
+#if PACKETVER >= 20180307
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20180221
+packetLen(0x0897, 19) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20180103
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x0898
+#if PACKETVER >= 20180221
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20180213
+packetLen(0x0898, -1) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20180103
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x0899
+#if PACKETVER >= 20180117
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20180103
+packetLen(0x0899, 26) // CZ_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x089a
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+
+// Packet: 0x089b
+#if PACKETVER >= 20180315
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20180314
+packetLen(0x089b, 90) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20180307
+packetLen(0x089b, 12) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20180103
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x089c
+#if PACKETVER >= 20180221
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20180213
+packetLen(0x089c, 4) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20180103
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#endif
+
+// Packet: 0x089d
+#if PACKETVER >= 20180307
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20180221
+packetLen(0x089d, 6) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20180103
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x089e
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+
+// Packet: 0x089f
+#if PACKETVER >= 20180117
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20180103
+packetLen(0x089f, 6) // CZ_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x08a0
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+
+// Packet: 0x08a1
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+
+// Packet: 0x08a2
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+
+// Packet: 0x08a3
+#if PACKETVER >= 20180221
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20180213
+packetLen(0x08a3, 19) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20180103
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x08a4
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+
+// Packet: 0x08a5
+#if PACKETVER >= 20180221
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20180213
+packetLen(0x08a5, -1) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20180103
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x08a6
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+
+// Packet: 0x08a7
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+
+// Packet: 0x08a8
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+
+// Packet: 0x08a9
+#if PACKETVER >= 20180117
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20180103
+packetLen(0x08a9, 5) // CZ_REASSEMBLY_AUTH38
+#endif
+
+// Packet: 0x08aa
+#if PACKETVER >= 20180314
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20180307
+packetLen(0x08aa, 26) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20180103
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x08ab
+#if PACKETVER >= 20180314
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20180307
+packetLen(0x08ab, 5) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20180117
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20180103
+packetLen(0x08ab, 6) // CZ_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x08ac
+#if PACKETVER >= 20180117
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20180103
+packetLen(0x08ac, -1) // CZ_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x08ad
+#if PACKETVER >= 20180221
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20180213
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20180103
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x08af
+packetLen(0x08af, 10) // HC_WAITING_LOGIN
+
+// Packet: 0x08b0
+packetLen(0x08b0, 17) // CH_WAITING_LOGIN
+
+// Packet: 0x08b1
+packetLen(0x08b1, -1) // ZC_MCSTORE_NOTMOVEITEM_LIST
+
+// Packet: 0x08b2
+packetLen(0x08b2, -1) // AC_REALNAME_AUTH
+
+// Packet: 0x08b3
+packetLen(0x08b3, -1) // ZC_SHOWSCRIPT
+
+// Packet: 0x08b4
+packetLen(0x08b4, 2) // ZC_START_COLLECTION
+
+// Packet: 0x08b5
+packetLen(0x08b5, 6) // CZ_TRYCOLLECTION
+
+// Packet: 0x08b6
+packetLen(0x08b6, 3) // ZC_TRYCOLLECTION
+
+// Packet: 0x08b8
+packetLen(0x08b8, 10) // CH_SECOND_PASSWD_ACK
+
+// Packet: 0x08b9
+packetLen(0x08b9, 12) // HC_SECOND_PASSWD_LOGIN
+
+// Packet: 0x08ba
+packetLen(0x08ba, 10) // CH_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bb
+packetLen(0x08bb, 8) // HC_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bc
+packetLen(0x08bc, 10) // CH_DELETE_SECOND_PASSWD
+
+// Packet: 0x08bd
+packetLen(0x08bd, 8) // HC_DELETE_SECOND_PASSWD
+
+// Packet: 0x08be
+packetLen(0x08be, 14) // CH_EDIT_SECOND_PASSWD
+
+// Packet: 0x08bf
+packetLen(0x08bf, 8) // HC_EDIT_SECOND_PASSWD
+
+// Packet: 0x08c0
+packetLen(0x08c0, -1) // ZC_ACK_SE_CASH_ITEM_LIST2
+
+// Packet: 0x08c1
+packetLen(0x08c1, 2) // CZ_MACRO_START
+
+// Packet: 0x08c2
+packetLen(0x08c2, 2) // CZ_MACRO_STOP
+
+// Packet: 0x08c3
+packetLen(0x08c3, 10) // CH_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c4
+packetLen(0x08c4, 8) // HC_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c5
+packetLen(0x08c5, 6) // CH_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c6
+packetLen(0x08c6, 4) // HC_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c7
+packetLen(0x08c7, -1) // ZC_SKILL_ENTRY3
+
+// Packet: 0x08c8
+packetLen(0x08c8, 34) // ZC_NOTIFY_ACT3
+
+// Packet: 0x08c9
+packetLen(0x08c9, 2) // CZ_REQ_SCHEDULER_CASHITEM
+
+// Packet: 0x08ca
+packetLen(0x08ca, -1) // ZC_ACK_SCHEDULER_CASHITEM
+
+// Packet: 0x08cb
+packetLen(0x08cb, -1) // ZC_PERSONAL_INFOMATION
+
+// Packet: 0x08cc
+packetLen(0x08cc, 109) // CA_LOGIN5
+
+// Packet: 0x08cd
+packetLen(0x08cd, 10) // ZC_STOPMOVE_FORCE
+
+// Packet: 0x08ce
+packetLen(0x08ce, 2) // ZC_FAILED_GET_ITEM_FROM_ZONEDA
+
+// Packet: 0x08cf
+packetLen(0x08cf, 10) // ZC_SPIRITS_ATTRIBUTE
+
+// Packet: 0x08d0
+packetLen(0x08d0, 9) // ZC_REQ_WEAR_EQUIP_ACK2
+
+// Packet: 0x08d1
+packetLen(0x08d1, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK2
+
+// Packet: 0x08d2
+packetLen(0x08d2, 10) // ZC_FASTMOVE
+
+// Packet: 0x08d3
+packetLen(0x08d3, 10) // ZC_SE_CASHSHOP_UPDATE
+
+// Packet: 0x08d4
+packetLen(0x08d4, 8) // CH_REQ_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d5
+packetLen(0x08d5, -1) // HC_ACK_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d6
+packetLen(0x08d6, 6) // ZC_CLEAR_DIALOG
+
+// Packet: 0x08d7
+packetLen(0x08d7, 28) // CZ_REQ_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d8
+packetLen(0x08d8, 27) // ZC_ACK_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d9
+packetLen(0x08d9, 30) // ZC_NOTIFY_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08da
+packetLen(0x08da, 26) // CZ_REQ_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08db
+packetLen(0x08db, 27) // ZC_ACK_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08dc
+packetLen(0x08dc, 26) // ZC_NOTIFY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08dd
+packetLen(0x08dd, 27) // CZ_REPLY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08de
+packetLen(0x08de, 27) // ZC_REPLY_ACK_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08df
+packetLen(0x08df, 50) // ZC_NOTIFY_LOBBY_ADMISSION
+
+// Packet: 0x08e0
+packetLen(0x08e0, 51) // CZ_REPLY_LOBBY_ADMISSION
+
+// Packet: 0x08e1
+packetLen(0x08e1, 51) // ZC_REPLY_ACK_LOBBY_ADMISSION
+
+// Packet: 0x08e2
+packetLen(0x08e2, 27) // ZC_NAVIGATION_ACTIVE
+
+// Packet: 0x08e3
+packetLen(0x08e3, 157) // HC_UPDATE_CHARINFO
+
+// Packet: 0x08e4
+packetLen(0x08e4, 6) // AC_SHUTDOWN_INFO
+
+// Packet: 0x08fc
+packetLen(0x08fc, 30) // CH_REQ_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fd
+packetLen(0x08fd, 6) // CH_ACK_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fe
+packetLen(0x08fe, -1) // ZC_HUNTING_QUEST_INFO
+
+// Packet: 0x08ff
+packetLen(0x08ff, 24) // ZC_EFST_SET_ENTER
+
+// Packet: 0x0900
+packetLen(0x0900, -1) // ZC_INVENTORY_ITEMLIST_NORMAL
+
+// Packet: 0x0901
+packetLen(0x0901, -1) // ZC_INVENTORY_ITEMLIST_EQUIP
+
+// Packet: 0x0902
+packetLen(0x0902, -1) // ZC_CART_ITEMLIST_NORMAL
+
+// Packet: 0x0903
+packetLen(0x0903, -1) // ZC_CART_ITEMLIST_EQUIP
+
+// Packet: 0x0904
+packetLen(0x0904, -1) // ZC_STORE_ITEMLIST_NORMAL
+
+// Packet: 0x0905
+packetLen(0x0905, -1) // ZC_STORE_ITEMLIST_EQUIP
+
+// Packet: 0x0906
+packetLen(0x0906, -1) // ZC_MICROSCOPE
+
+// Packet: 0x0907
+packetLen(0x0907, 5) // CZ_INVENTORY_TAB
+
+// Packet: 0x0908
+packetLen(0x0908, 5) // ZC_INVENTORY_TAB
+
+// Packet: 0x090a
+packetLen(0x090a, 26) // CZ_REQ_ENTRY_QUEUE_RANKING
+
+// Packet: 0x090d
+packetLen(0x090d, -1) // ZC_PREMIUM_CAMPAIGN_INFO
+
+// Packet: 0x090e
+packetLen(0x090e, 2) // ZC_ENTRY_QUEUE_INIT
+
+// Packet: 0x090f
+packetLen(0x090f, -1) // ZC_NOTIFY_NEWENTRY7
+
+// Packet: 0x0910
+packetLen(0x0910, 10) // CZ_REQ_PARTY_NAME
+
+// Packet: 0x0911
+packetLen(0x0911, 30) // ZC_ACK_PARTY_NAME
+
+// Packet: 0x0912
+packetLen(0x0912, 10) // CZ_REQ_GUILD_NAME
+
+// Packet: 0x0913
+packetLen(0x0913, 30) // ZC_ACK_GUILD_NAME
+
+// Packet: 0x0914
+packetLen(0x0914, -1) // ZC_NOTIFY_MOVEENTRY9
+
+// Packet: 0x0915
+packetLen(0x0915, -1) // ZC_NOTIFY_STANDENTRY8
+
+// Packet: 0x0916
+packetLen(0x0916, 26) // CZ_REQ_JOIN_GUILD2
+
+// Packet: 0x0917
+#if PACKETVER >= 20180314
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20180307
+packetLen(0x0917, 10) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20180221
+packetLen(0x0917, 36) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20180213
+packetLen(0x0917, 26) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20180103
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#endif
+
+// Packet: 0x0918
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+
+// Packet: 0x0919
+#if PACKETVER >= 20180207
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20180124
+packetLen(0x0919, 26) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20180103
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#endif
+
+// Packet: 0x091a
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+
+// Packet: 0x091b
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+
+// Packet: 0x091c
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+
+// Packet: 0x091d
+#if PACKETVER >= 20180117
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20180103
+packetLen(0x091d, 7) // ZC_REASSEMBLY_AUTH49
+#endif
+
+// Packet: 0x091e
+#if PACKETVER >= 20180307
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20180221
+packetLen(0x091e, 8) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20180103
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#endif
+
+// Packet: 0x091f
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+
+// Packet: 0x0920
+#if PACKETVER >= 20180314
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20180307
+packetLen(0x0920, 8) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20180103
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#endif
+
+// Packet: 0x0921
+#if PACKETVER >= 20180315
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20180314
+packetLen(0x0921, 7) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20180103
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#endif
+
+// Packet: 0x0922
+#if PACKETVER >= 20180221
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20180213
+packetLen(0x0922, 5) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20180103
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#endif
+
+// Packet: 0x0923
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+
+// Packet: 0x0924
+#if PACKETVER >= 20180221
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20180213
+packetLen(0x0924, 10) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20180103
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#endif
+
+// Packet: 0x0925
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+
+// Packet: 0x0926
+#if PACKETVER >= 20180221
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20180213
+packetLen(0x0926, 8) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20180117
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20180103
+packetLen(0x0926, 8) // ZC_REASSEMBLY_AUTH58
+#endif
+
+// Packet: 0x0927
+#if PACKETVER >= 20180117
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20180103
+packetLen(0x0927, 18) // ZC_REASSEMBLY_AUTH59
+#endif
+
+// Packet: 0x0928
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+
+// Packet: 0x0929
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+
+// Packet: 0x092a
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+
+// Packet: 0x092b
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+
+// Packet: 0x092c
+#if PACKETVER >= 20180213
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20180207
+packetLen(0x092c, 5) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20180117
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20180103
+packetLen(0x092c, 8) // ZC_REASSEMBLY_AUTH64
+#endif
+
+// Packet: 0x092d
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+
+// Packet: 0x092e
+#if PACKETVER >= 20180213
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20180207
+packetLen(0x092e, 5) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20180103
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#endif
+
+// Packet: 0x092f
+#if PACKETVER >= 20180315
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20180314
+packetLen(0x092f, 5) // ZC_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20180103
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+#endif
+
+// Packet: 0x0930
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+
+// Packet: 0x0931
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+
+// Packet: 0x0932
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+
+// Packet: 0x0933
+#if PACKETVER >= 20180315
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20180314
+packetLen(0x0933, 8) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20180221
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20180213
+packetLen(0x0933, 7) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20180103
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#endif
+
+// Packet: 0x0934
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+
+// Packet: 0x0935
+#if PACKETVER >= 20180315
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20180314
+packetLen(0x0935, 26) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20180117
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20180103
+packetLen(0x0935, 6) // ZC_REASSEMBLY_AUTH73
+#endif
+
+// Packet: 0x0936
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+
+// Packet: 0x0937
+#if PACKETVER >= 20180314
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20180307
+packetLen(0x0937, -1) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20180103
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#endif
+
+// Packet: 0x0938
+#if PACKETVER >= 20180117
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20180103
+packetLen(0x0938, 10) // ZC_REASSEMBLY_AUTH76
+#endif
+
+// Packet: 0x0939
+#if PACKETVER >= 20180314
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20180307
+packetLen(0x0939, 36) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20180103
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#endif
+
+// Packet: 0x093a
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+
+// Packet: 0x093b
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+
+// Packet: 0x093c
+#if PACKETVER >= 20180221
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20180213
+packetLen(0x093c, 6) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20180103
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#endif
+
+// Packet: 0x093d
+#if PACKETVER >= 20180307
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20180221
+packetLen(0x093d, 26) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20180103
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#endif
+
+// Packet: 0x093e
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+
+// Packet: 0x093f
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+
+// Packet: 0x0940
+#if PACKETVER >= 20180213
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20180207
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20180124
+packetLen(0x0940, -1) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20180103
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#endif
+
+// Packet: 0x0941
+#if PACKETVER >= 20180314
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20180307
+packetLen(0x0941, 6) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20180117
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20180103
+packetLen(0x0941, 5) // CZ_REASSEMBLY_AUTH43
+#endif
+
+// Packet: 0x0942
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+
+// Packet: 0x0943
+#if PACKETVER >= 20180221
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20180213
+packetLen(0x0943, 18) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20180103
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#endif
+
+// Packet: 0x0944
+#if PACKETVER >= 20180314
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20180307
+packetLen(0x0944, 5) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20180103
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#endif
+
+// Packet: 0x0945
+#if PACKETVER >= 20180315
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20180314
+packetLen(0x0945, 18) // CZ_REASSEMBLY_AUTH47
+#elif PACKETVER >= 20180103
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+#endif
+
+// Packet: 0x0946
+#if PACKETVER >= 20180207
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20180124
+packetLen(0x0946, -1) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20180117
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20180103
+packetLen(0x0946, 36) // CZ_REASSEMBLY_AUTH48
+#endif
+
+// Packet: 0x0947
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+
+// Packet: 0x0948
+#if PACKETVER >= 20180314
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20180307
+packetLen(0x0948, 26) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20180117
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20180103
+packetLen(0x0948, 5) // CZ_REASSEMBLY_AUTH50
+#endif
+
+// Packet: 0x0949
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+
+// Packet: 0x094a
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+
+// Packet: 0x094b
+#if PACKETVER >= 20180307
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20180221
+packetLen(0x094b, 10) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20180103
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#endif
+
+// Packet: 0x094c
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+
+// Packet: 0x094d
+#if PACKETVER >= 20180315
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20180314
+packetLen(0x094d, -1) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20180307
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20180221
+packetLen(0x094d, 10) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20180207
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20180124
+packetLen(0x094d, 6) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20180103
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#endif
+
+// Packet: 0x094e
+#if PACKETVER >= 20180315
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20180314
+packetLen(0x094e, 26) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20180307
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20180221
+packetLen(0x094e, 6) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20180117
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20180103
+packetLen(0x094e, -1) // CZ_REASSEMBLY_AUTH56
+#endif
+
+// Packet: 0x094f
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+
+// Packet: 0x0950
+#if PACKETVER >= 20180213
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20180207
+packetLen(0x0950, 36) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20180103
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#endif
+
+// Packet: 0x0951
+#if PACKETVER >= 20180314
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20180307
+packetLen(0x0951, 8) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20180103
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#endif
+
+// Packet: 0x0952
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+
+// Packet: 0x0953
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+
+// Packet: 0x0954
+#if PACKETVER >= 20180314
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20180307
+packetLen(0x0954, 6) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20180103
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#endif
+
+// Packet: 0x0955
+#if PACKETVER >= 20180221
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20180213
+packetLen(0x0955, 8) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20180103
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#endif
+
+// Packet: 0x0956
+#if PACKETVER >= 20180315
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20180314
+packetLen(0x0956, 4) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20180103
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#endif
+
+// Packet: 0x0957
+#if PACKETVER >= 20180314
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20180221
+packetLen(0x0957, 6) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20180103
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#endif
+
+// Packet: 0x0958
+#if PACKETVER >= 20180207
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20180124
+packetLen(0x0958, 5) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20180103
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#endif
+
+// Packet: 0x0959
+#if PACKETVER >= 20180315
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20180314
+packetLen(0x0959, 6) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20180103
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#endif
+
+// Packet: 0x095a
+#if PACKETVER >= 20180221
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20180213
+packetLen(0x095a, -1) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20180103
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#endif
+
+// Packet: 0x095b
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+
+// Packet: 0x095c
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+
+// Packet: 0x095d
+#if PACKETVER >= 20180117
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20180103
+packetLen(0x095d, 10) // CZ_REASSEMBLY_AUTH71
+#endif
+
+// Packet: 0x095e
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+
+// Packet: 0x095f
+#if PACKETVER >= 20180315
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20180314
+packetLen(0x095f, 6) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20180117
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20180103
+packetLen(0x095f, 6) // CZ_REASSEMBLY_AUTH73
+#endif
+
+// Packet: 0x0960
+#if PACKETVER >= 20180117
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20180103
+packetLen(0x0960, 90) // CZ_REASSEMBLY_AUTH74
+#endif
+
+// Packet: 0x0961
+#if PACKETVER >= 20180207
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20180124
+packetLen(0x0961, 5) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20180103
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#endif
+
+// Packet: 0x0962
+#if PACKETVER >= 20180315
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20180314
+packetLen(0x0962, -1) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20180221
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20180213
+packetLen(0x0962, 5) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20180103
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#endif
+
+// Packet: 0x0963
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+
+// Packet: 0x0964
+#if PACKETVER >= 20180307
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20180221
+packetLen(0x0964, 12) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20180103
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#endif
+
+// Packet: 0x0965
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+
+// Packet: 0x0966
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+
+// Packet: 0x0967
+#if PACKETVER >= 20180315
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20180314
+packetLen(0x0967, 6) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20180103
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#endif
+
+// Packet: 0x0968
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+
+// Packet: 0x0969
+#if PACKETVER >= 20180314
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20180307
+packetLen(0x0969, 7) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20180103
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#endif
+
+// Packet: 0x096a
+#if PACKETVER >= 20180307
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20180221
+packetLen(0x096a, 7) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20180213
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20180117
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20180103
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#endif
+
+// Packet: 0x096b
+packetLen(0x096b, 4) // ZC_PRNPC_STATE
+
+// Packet: 0x096c
+packetLen(0x096c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+
+// Packet: 0x096d
+packetLen(0x096d, -1) // ZC_MERGE_ITEM_OPEN
+
+// Packet: 0x096e
+packetLen(0x096e, -1) // CZ_REQ_MERGE_ITEM
+
+// Packet: 0x096f
+packetLen(0x096f, 7) // ZC_ACK_MERGE_ITEM
+
+// Packet: 0x0970
+packetLen(0x0970, 31) // CH_MAKE_CHAR_NOT_STATS
+
+// Packet: 0x0971
+packetLen(0x0971, 6) // ZC_PARTY_RECRUIT_REFUSE_VOLUNTEER_TO_PM
+
+// Packet: 0x0972
+packetLen(0x0972, -1) // ZC_SAY_DIALOG2
+
+// Packet: 0x0973
+packetLen(0x0973, 7) // ZC_WAIT_DIALOG2
+
+// Packet: 0x0974
+packetLen(0x0974, 2) // CZ_CANCEL_MERGE_ITEM
+
+// Packet: 0x0975
+packetLen(0x0975, -1) // ZC_STORE_ITEMLIST_NORMAL_V2
+
+// Packet: 0x0976
+packetLen(0x0976, -1) // ZC_STORE_ITEMLIST_EQUIP_V2
+
+// Packet: 0x0977
+packetLen(0x0977, 14) // ZC_HP_INFO
+
+// Packet: 0x0978
+packetLen(0x0978, 6) // CZ_REQ_BEFORE_WORLD_INFO
+
+// Packet: 0x0979
+packetLen(0x0979, 50) // ZC_ACK_BEFORE_WORLD_INFO
+
+// Packet: 0x097a
+packetLen(0x097a, -1) // ZC_ALL_QUEST_LIST2
+
+// Packet: 0x097b
+packetLen(0x097b, -1) // ZC_PERSONAL_INFOMATION2
+
+// Packet: 0x097c
+packetLen(0x097c, 4) // CZ_REQ_RANKING
+
+// Packet: 0x097d
+packetLen(0x097d, 288) // ZC_ACK_RANKING
+
+// Packet: 0x097e
+packetLen(0x097e, 12) // ZC_UPDATE_RANKING_POINT
+
+// Packet: 0x097f
+packetLen(0x097f, -1) // ZC_SELECTCART
+
+// Packet: 0x0980
+packetLen(0x0980, 7) // CZ_SELECTCART
+
+// Packet: 0x0981
+packetLen(0x0981, -1) // ZC_PERSONAL_INFOMATION_CHN
+
+// Packet: 0x0982
+packetLen(0x0982, 7) // ZC_FATIGUE_CHN
+
+// Packet: 0x0983
+packetLen(0x0983, 29) // ZC_MSG_STATE_CHANGE3
+
+// Packet: 0x0984
+packetLen(0x0984, 28) // ZC_EFST_SET_ENTER2
+
+// Packet: 0x0985
+packetLen(0x0985, -1) // ZC_SKILL_POSTDELAY_LIST2
+
+// Packet: 0x0986
+packetLen(0x0986, 10) // AC_SHUTDOWN_NOTIFY
+
+// Packet: 0x0987
+packetLen(0x0987, -1) // CA_LOGIN6
+
+// Packet: 0x0988
+packetLen(0x0988, 6) // ZC_NOTIFY_CLAN_CONNECTINFO
+
+// Packet: 0x0989
+packetLen(0x0989, 2) // ZC_ACK_CLAN_LEAVE
+
+// Packet: 0x098a
+packetLen(0x098a, -1) // ZC_CLANINFO
+
+// Packet: 0x098b
+packetLen(0x098b, 2) // AC_REQ_NEW_USER
+
+// Packet: 0x098c
+packetLen(0x098c, 4) // CA_ACK_NEW_USER
+
+// Packet: 0x098d
+packetLen(0x098d, -1) // CZ_CLAN_CHAT
+
+// Packet: 0x098e
+packetLen(0x098e, -1) // ZC_NOTIFY_CLAN_CHAT
+
+// Packet: 0x098f
+packetLen(0x098f, -1) // CH_DELETE_CHAR3_EXT
+
+// Packet: 0x0990
+#if PACKETVER >= 20181121
+packetLen(0x0990, 41) // ZC_ITEM_PICKUP_ACK_V5
+#elif PACKETVER >= 20180103
+packetLen(0x0990, 31) // ZC_ITEM_PICKUP_ACK_V5
+#endif
+
+// Packet: 0x0991
+packetLen(0x0991, -1) // ZC_INVENTORY_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0992
+packetLen(0x0992, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0993
+packetLen(0x0993, -1) // ZC_CART_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0994
+packetLen(0x0994, -1) // ZC_CART_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0995
+packetLen(0x0995, -1) // ZC_STORE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0996
+packetLen(0x0996, -1) // ZC_STORE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0997
+packetLen(0x0997, -1) // ZC_EQUIPWIN_MICROSCOPE_V5
+
+// Packet: 0x0998
+packetLen(0x0998, 8) // CZ_REQ_WEAR_EQUIP_V5
+
+// Packet: 0x0999
+packetLen(0x0999, 11) // ZC_ACK_WEAR_EQUIP_V5
+
+// Packet: 0x099a
+packetLen(0x099a, 9) // ZC_ACK_TAKEOFF_EQUIP_V5
+
+// Packet: 0x099b
+packetLen(0x099b, 8) // ZC_MAPPROPERTY_R2
+
+// Packet: 0x099c
+packetLen(0x099c, 6) // CH_REQ_CHARINFO_PER_PAGE
+
+// Packet: 0x099d
+packetLen(0x099d, -1) // HC_ACK_CHARINFO_PER_PAGE
+
+// Packet: 0x099e
+packetLen(0x099e, 12) // HC_QUEUE_ORDER
+
+// Packet: 0x099f
+packetLen(0x099f, -1) // ZC_SKILL_ENTRY4
+
+// Packet: 0x09a0
+packetLen(0x09a0, 6) // HC_CHARLIST_NOTIFY
+
+// Packet: 0x09a1
+packetLen(0x09a1, 2) // CH_CHARLIST_REQ
+
+// Packet: 0x09a2
+packetLen(0x09a2, 6) // AC_REQ_MOBILE_OTP
+
+// Packet: 0x09a3
+packetLen(0x09a3, -1) // CA_ACK_MOBILE_OTP
+
+// Packet: 0x09a4
+packetLen(0x09a4, 18) // ZC_DISPATCH_TIMING_INFO_CHN
+
+// Packet: 0x09a5
+packetLen(0x09a5, 7) // AC_REFUSE_LOGIN3
+
+// Packet: 0x09a6
+packetLen(0x09a6, 12) // ZC_BANKING_CHECK
+
+// Packet: 0x09a7
+packetLen(0x09a7, 10) // CZ_REQ_BANKING_DEPOSIT
+
+// Packet: 0x09a8
+packetLen(0x09a8, 16) // ZC_ACK_BANKING_DEPOSIT
+
+// Packet: 0x09a9
+packetLen(0x09a9, 10) // CZ_REQ_BANKING_WITHDRAW
+
+// Packet: 0x09aa
+packetLen(0x09aa, 16) // ZC_ACK_BANKING_WITHDRAW
+
+// Packet: 0x09ab
+packetLen(0x09ab, 6) // CZ_REQ_BANKING_CHECK
+
+// Packet: 0x09ac
+packetLen(0x09ac, -1) // CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO
+
+// Packet: 0x09ad
+#if PACKETVER >= 20181121
+packetLen(0x09ad, 12) // ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO
+#elif PACKETVER >= 20180103
+packetLen(0x09ad, 10) // ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO
+#endif
+
+// Packet: 0x09ae
+#if PACKETVER >= 20181121
+packetLen(0x09ae, 19) // CZ_REQ_APPLY_BARGAIN_SALE_ITEM
+#elif PACKETVER >= 20180103
+packetLen(0x09ae, 17) // CZ_REQ_APPLY_BARGAIN_SALE_ITEM
+#endif
+
+// Packet: 0x09af
+packetLen(0x09af, 4) // ZC_ACK_APPLY_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b0
+#if PACKETVER >= 20181121
+packetLen(0x09b0, 10) // CZ_REQ_REMOVE_BARGAIN_SALE_ITEM
+#elif PACKETVER >= 20180103
+packetLen(0x09b0, 8) // CZ_REQ_REMOVE_BARGAIN_SALE_ITEM
+#endif
+
+// Packet: 0x09b1
+packetLen(0x09b1, 4) // ZC_ACK_REMOVE_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b2
+#if PACKETVER >= 20181121
+packetLen(0x09b2, 10) // ZC_NOTIFY_BARGAIN_SALE_SELLING
+#elif PACKETVER >= 20180103
+packetLen(0x09b2, 8) // ZC_NOTIFY_BARGAIN_SALE_SELLING
+#endif
+
+// Packet: 0x09b3
+#if PACKETVER >= 20181121
+packetLen(0x09b3, 6) // ZC_NOTIFY_BARGAIN_SALE_CLOSE
+#elif PACKETVER >= 20180103
+packetLen(0x09b3, 4) // ZC_NOTIFY_BARGAIN_SALE_CLOSE
+#endif
+
+// Packet: 0x09b4
+packetLen(0x09b4, 6) // CZ_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b5
+packetLen(0x09b5, 2) // ZC_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b6
+packetLen(0x09b6, 6) // CZ_REQ_OPEN_BANKING
+
+// Packet: 0x09b7
+packetLen(0x09b7, 4) // ZC_ACK_OPEN_BANKING
+
+// Packet: 0x09b8
+packetLen(0x09b8, 6) // CZ_REQ_CLOSE_BANKING
+
+// Packet: 0x09b9
+packetLen(0x09b9, 4) // ZC_ACK_CLOSE_BANKING
+
+// Packet: 0x09ba
+packetLen(0x09ba, 2) // CZ_REQ_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bb
+packetLen(0x09bb, 6) // ZC_ACK_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bc
+packetLen(0x09bc, 6) // CZ_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09bd
+packetLen(0x09bd, 2) // ZC_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09be
+packetLen(0x09be, 2) // CZ_REQ_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09bf
+packetLen(0x09bf, 4) // ZC_ACK_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09c1
+packetLen(0x09c1, 10) // ZC_C_MARKERINFO
+
+// Packet: 0x09c2
+packetLen(0x09c2, -1) // HC_SECRETSCAN_DATA
+
+// Packet: 0x09c3
+#if PACKETVER >= 20181121
+packetLen(0x09c3, 10) // CZ_REQ_COUNT_BARGAIN_SALE_ITEM
+#elif PACKETVER >= 20180103
+packetLen(0x09c3, 8) // CZ_REQ_COUNT_BARGAIN_SALE_ITEM
+#endif
+
+// Packet: 0x09c4
+#if PACKETVER >= 20181121
+packetLen(0x09c4, 10) // ZC_ACK_COUNT_BARGAIN_SALE_ITEM
+#elif PACKETVER >= 20180103
+packetLen(0x09c4, 8) // ZC_ACK_COUNT_BARGAIN_SALE_ITEM
+#endif
+
+// Packet: 0x09c5
+packetLen(0x09c5, 1042) // CS_LOGIN_QUERY
+
+// Packet: 0x09c6
+packetLen(0x09c6, -1) // SC_LOGIN_ANSWER
+
+// Packet: 0x09c7
+packetLen(0x09c7, 18) // SC_LOGIN_ERROR
+
+// Packet: 0x09c8
+packetLen(0x09c8, -1) // CA_LOGIN_OTP
+
+// Packet: 0x09c9
+packetLen(0x09c9, -1) // SC_SOCT
+
+// Packet: 0x09ca
+packetLen(0x09ca, -1) // ZC_SKILL_ENTRY5
+
+// Packet: 0x09cb
+packetLen(0x09cb, 17) // ZC_USE_SKILL2
+
+// Packet: 0x09cc
+packetLen(0x09cc, -1) // ZC_SECRETSCAN_DATA
+
+// Packet: 0x09cd
+packetLen(0x09cd, 8) // ZC_MSG_COLOR
+
+// Packet: 0x09ce
+packetLen(0x09ce, 102) // CZ_ITEM_CREATE_EX
+
+// Packet: 0x09cf
+packetLen(0x09cf, -1) // ZC_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d0
+packetLen(0x09d0, -1) // CZ_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d1
+packetLen(0x09d1, 14) // ZC_PROGRESS_ACTOR
+
+// Packet: 0x09d2
+packetLen(0x09d2, -1) // ZC_GUILDSTORAGE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x09d3
+packetLen(0x09d3, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x09d4
+packetLen(0x09d4, 2) // CZ_NPC_TRADE_QUIT
+
+// Packet: 0x09d5
+packetLen(0x09d5, -1) // ZC_NPC_MARKET_OPEN
+
+// Packet: 0x09d6
+packetLen(0x09d6, -1) // CZ_NPC_MARKET_PURCHASE
+
+// Packet: 0x09d7
+packetLen(0x09d7, -1) // ZC_NPC_MARKET_PURCHASE_RESULT
+
+// Packet: 0x09d8
+packetLen(0x09d8, 2) // CZ_NPC_MARKET_CLOSE
+
+// Packet: 0x09d9
+packetLen(0x09d9, 4) // CZ_REQ_GUILDSTORAGE_LOG
+
+// Packet: 0x09da
+packetLen(0x09da, -1) // ZC_ACK_GUILDSTORAGE_LOG
+
+// Packet: 0x09db
+packetLen(0x09db, -1) // ZC_NOTIFY_MOVEENTRY10
+
+// Packet: 0x09dc
+packetLen(0x09dc, -1) // ZC_NOTIFY_NEWENTRY10
+
+// Packet: 0x09dd
+packetLen(0x09dd, -1) // ZC_NOTIFY_STANDENTRY10
+
+// Packet: 0x09de
+packetLen(0x09de, -1) // ZC_WHISPER02
+
+// Packet: 0x09df
+packetLen(0x09df, 7) // ZC_ACK_WHISPER02
+
+// Packet: 0x09e0
+packetLen(0x09e0, -1) // SC_LOGIN_ANSWER_WITH_ID
+
+// Packet: 0x09e1
+packetLen(0x09e1, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_GUILDSTORAGE
+
+// Packet: 0x09e2
+packetLen(0x09e2, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_BODY
+
+// Packet: 0x09e3
+packetLen(0x09e3, 8) // CZ_MOVE_ITEM_FROM_CART_TO_GUILDSTORAGE
+
+// Packet: 0x09e4
+packetLen(0x09e4, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_CART
+
+// Packet: 0x09e5
+packetLen(0x09e5, 18) // ZC_DELETEITEM_FROM_MCSTORE2
+
+// Packet: 0x09e6
+#if PACKETVER >= 20181121
+packetLen(0x09e6, 24) // ZC_UPDATE_ITEM_FROM_BUYING_STORE2
+#elif PACKETVER >= 20180103
+packetLen(0x09e6, 22) // ZC_UPDATE_ITEM_FROM_BUYING_STORE2
+#endif
+
+// Packet: 0x09e7
+packetLen(0x09e7, 3) // ZC_NOTIFY_UNREAD_RODEX
+
+// Packet: 0x09e8
+packetLen(0x09e8, 11) // CZ_OPEN_RODEXBOX
+
+// Packet: 0x09e9
+packetLen(0x09e9, 2) // CZ_CLOSE_RODEXBOX
+
+// Packet: 0x09ea
+packetLen(0x09ea, 11) // CZ_REQ_READ_RODEX
+
+// Packet: 0x09eb
+packetLen(0x09eb, -1) // ZC_ACK_READ_RODEX
+
+// Packet: 0x09ec
+packetLen(0x09ec, -1) // CZ_REQ_SEND_RODEX
+
+// Packet: 0x09ed
+packetLen(0x09ed, 3) // ZC_ACK_SEND_RODEX
+
+// Packet: 0x09ee
+packetLen(0x09ee, 11) // CZ_REQ_NEXT_RODEX
+
+// Packet: 0x09ef
+packetLen(0x09ef, 11) // CZ_REQ_REFRESH_RODEX
+
+// Packet: 0x09f0
+packetLen(0x09f0, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x09f1
+packetLen(0x09f1, 11) // CZ_REQ_ZENY_FROM_RODEX
+
+// Packet: 0x09f2
+packetLen(0x09f2, 12) // ZC_ACK_ZENY_FROM_RODEX
+
+// Packet: 0x09f3
+packetLen(0x09f3, 11) // CZ_REQ_ITEM_FROM_RODEX
+
+// Packet: 0x09f4
+packetLen(0x09f4, 12) // ZC_ACK_ITEM_FROM_RODEX
+
+// Packet: 0x09f5
+packetLen(0x09f5, 11) // CZ_REQ_DELETE_RODEX
+
+// Packet: 0x09f6
+packetLen(0x09f6, 11) // ZC_ACK_DELETE_RODEX
+
+// Packet: 0x09f7
+#if PACKETVER >= 20181121
+packetLen(0x09f7, 77) // ZC_PROPERTY_HOMUN_2
+#elif PACKETVER >= 20180103
+packetLen(0x09f7, 75) // ZC_PROPERTY_HOMUN_2
+#endif
+
+// Packet: 0x09f8
+packetLen(0x09f8, -1) // ZC_ALL_QUEST_LIST3
+
+// Packet: 0x09f9
+packetLen(0x09f9, 143) // ZC_ADD_QUEST_EX
+
+// Packet: 0x09fa
+packetLen(0x09fa, -1) // ZC_UPDATE_MISSION_HUNT_EX
+
+// Packet: 0x09fb
+packetLen(0x09fb, -1) // CZ_PET_EVOLUTION
+
+// Packet: 0x09fc
+packetLen(0x09fc, 6) // ZC_PET_EVOLUTION_RESULT
+
+// Packet: 0x09fd
+packetLen(0x09fd, -1) // ZC_NOTIFY_MOVEENTRY11
+
+// Packet: 0x09fe
+packetLen(0x09fe, -1) // ZC_NOTIFY_NEWENTRY11
+
+// Packet: 0x09ff
+packetLen(0x09ff, -1) // ZC_NOTIFY_STANDENTRY11
+
+// Packet: 0x0a00
+packetLen(0x0a00, 269) // ZC_SHORTCUT_KEY_LIST_V3
+
+// Packet: 0x0a01
+packetLen(0x0a01, 3) // CZ_SHORTCUTKEYBAR_ROTATE
+
+// Packet: 0x0a02
+packetLen(0x0a02, 4) // ZC_DRESSROOM_OPEN
+
+// Packet: 0x0a03
+packetLen(0x0a03, 2) // CZ_REQ_CANCEL_WRITE_RODEX
+
+// Packet: 0x0a04
+packetLen(0x0a04, 6) // CZ_REQ_ADD_ITEM_RODEX
+
+// Packet: 0x0a05
+#if PACKETVER >= 20181121
+packetLen(0x0a05, 63) // ZC_ACK_ADD_ITEM_RODEX
+#elif PACKETVER >= 20180103
+packetLen(0x0a05, 53) // ZC_ACK_ADD_ITEM_RODEX
+#endif
+
+// Packet: 0x0a06
+packetLen(0x0a06, 6) // CZ_REQ_REMOVE_RODEX_ITEM
+
+// Packet: 0x0a07
+packetLen(0x0a07, 9) // ZC_ACK_REMOVE_RODEX_ITEM
+
+// Packet: 0x0a08
+packetLen(0x0a08, 26) // CZ_REQ_OPEN_WRITE_RODEX
+
+// Packet: 0x0a09
+#if PACKETVER >= 20181121
+packetLen(0x0a09, 55) // ZC_ADD_EXCHANGE_ITEM3
+#elif PACKETVER >= 20180103
+packetLen(0x0a09, 45) // ZC_ADD_EXCHANGE_ITEM3
+#endif
+
+// Packet: 0x0a0a
+#if PACKETVER >= 20181121
+packetLen(0x0a0a, 57) // ZC_ADD_ITEM_TO_STORE3
+#elif PACKETVER >= 20180103
+packetLen(0x0a0a, 47) // ZC_ADD_ITEM_TO_STORE3
+#endif
+
+// Packet: 0x0a0b
+#if PACKETVER >= 20181121
+packetLen(0x0a0b, 57) // ZC_ADD_ITEM_TO_CART3
+#elif PACKETVER >= 20180103
+packetLen(0x0a0b, 47) // ZC_ADD_ITEM_TO_CART3
+#endif
+
+// Packet: 0x0a0c
+#if PACKETVER >= 20181121
+packetLen(0x0a0c, 66) // ZC_ITEM_PICKUP_ACK_V6
+#elif PACKETVER >= 20180103
+packetLen(0x0a0c, 56) // ZC_ITEM_PICKUP_ACK_V6
+#endif
+
+// Packet: 0x0a0d
+packetLen(0x0a0d, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a0e
+packetLen(0x0a0e, 14) // ZC_BATTLEFIELD_NOTIFY_HP2
+
+// Packet: 0x0a0f
+packetLen(0x0a0f, -1) // ZC_CART_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a10
+packetLen(0x0a10, -1) // ZC_STORE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a11
+packetLen(0x0a11, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a12
+packetLen(0x0a12, 27) // ZC_ACK_OPEN_WRITE_RODEX
+
+// Packet: 0x0a13
+packetLen(0x0a13, 26) // CZ_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a14
+packetLen(0x0a14, 10) // ZC_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a15
+packetLen(0x0a15, 12) // ZC_GOLDPCCAFE_POINT
+
+// Packet: 0x0a16
+packetLen(0x0a16, 26) // CZ_DYNAMICNPC_CREATE_REQUEST
+
+// Packet: 0x0a17
+packetLen(0x0a17, 6) // ZC_DYNAMICNPC_CREATE_RESULT
+
+// Packet: 0x0a18
+packetLen(0x0a18, 14) // ZC_ACCEPT_ENTER3
+
+// Packet: 0x0a19
+packetLen(0x0a19, 2) // CZ_REQ_OPEN_ROULETTE
+
+// Packet: 0x0a1a
+#if PACKETVER >= 20181121
+packetLen(0x0a1a, 25) // ZC_ACK_OPEN_ROULETTE
+#elif PACKETVER >= 20180103
+packetLen(0x0a1a, 23) // ZC_ACK_OPEN_ROULETTE
+#endif
+
+// Packet: 0x0a1b
+packetLen(0x0a1b, 2) // CZ_REQ_ROULETTE_INFO
+
+// Packet: 0x0a1c
+packetLen(0x0a1c, -1) // ZC_ACK_ROULEITTE_INFO
+
+// Packet: 0x0a1d
+packetLen(0x0a1d, 2) // CZ_REQ_CLOSE_ROULETTE
+
+// Packet: 0x0a1e
+packetLen(0x0a1e, 3) // ZC_ACK_CLOSE_ROULETTE
+
+// Packet: 0x0a1f
+packetLen(0x0a1f, 2) // CZ_REQ_GENERATE_ROULETTE
+
+// Packet: 0x0a20
+#if PACKETVER >= 20181121
+packetLen(0x0a20, 23) // ZC_ACK_GENERATE_ROULETTE
+#elif PACKETVER >= 20180103
+packetLen(0x0a20, 21) // ZC_ACK_GENERATE_ROULETTE
+#endif
+
+// Packet: 0x0a21
+packetLen(0x0a21, 3) // CZ_RECV_ROULETTE_ITEM
+
+// Packet: 0x0a22
+#if PACKETVER >= 20181121
+packetLen(0x0a22, 7) // ZC_RECV_ROULETTE_ITEM
+#elif PACKETVER >= 20180103
+packetLen(0x0a22, 5) // ZC_RECV_ROULETTE_ITEM
+#endif
+
+// Packet: 0x0a23
+packetLen(0x0a23, -1) // ZC_ALL_ACH_LIST
+
+// Packet: 0x0a24
+packetLen(0x0a24, 66) // ZC_ACH_UPDATE
+
+// Packet: 0x0a25
+packetLen(0x0a25, 6) // CZ_REQ_ACH_REWARD
+
+// Packet: 0x0a26
+packetLen(0x0a26, 7) // ZC_REQ_ACH_REWARD_ACK
+
+// Packet: 0x0a27
+packetLen(0x0a27, 8) // ZC_RECOVERY2
+
+// Packet: 0x0a28
+packetLen(0x0a28, 3) // ZC_ACK_OPENSTORE2
+
+// Packet: 0x0a29
+packetLen(0x0a29, 6) // ZC_REQ_AU_BOT
+
+// Packet: 0x0a2a
+packetLen(0x0a2a, 6) // CZ_ACK_AU_BOT
+
+// Packet: 0x0a2b
+packetLen(0x0a2b, 14) // ZC_SE_CASHSHOP_OPEN2
+
+// Packet: 0x0a2c
+packetLen(0x0a2c, 12) // ZC_SE_PC_BUY_TAIWANCASHITEM_RESULT
+
+// Packet: 0x0a2d
+packetLen(0x0a2d, -1) // ZC_EQUIPWIN_MICROSCOPE_V6
+
+// Packet: 0x0a2e
+packetLen(0x0a2e, 6) // CZ_REQ_CHANGE_TITLE
+
+// Packet: 0x0a2f
+packetLen(0x0a2f, 7) // ZC_ACK_CHANGE_TITLE
+
+// Packet: 0x0a30
+packetLen(0x0a30, 106) // ZC_ACK_REQNAMEALL2
+
+// Packet: 0x0a31
+packetLen(0x0a31, -1) // ZC_RESULT_PACKAGE_ITEM_TEST
+
+// Packet: 0x0a32
+packetLen(0x0a32, 2) // ZC_OPEN_RODEX_THROUGH_NPC_ONLY
+
+// Packet: 0x0a33
+packetLen(0x0a33, 7) // ZC_UPDATE_ROULETTE_COIN
+
+// Packet: 0x0a34
+packetLen(0x0a34, 6) // ZC_UPDATE_TAIWANCASH
+
+// Packet: 0x0a35
+packetLen(0x0a35, 4) // CZ_REQ_ONECLICK_ITEMIDENTIFY
+
+// Packet: 0x0a36
+packetLen(0x0a36, 7) // ZC_HP_INFO_TINY
+
+// Packet: 0x0a37
+#if PACKETVER >= 20181121
+packetLen(0x0a37, 69) // ZC_ITEM_PICKUP_ACK_V7
+#elif PACKETVER >= 20180103
+packetLen(0x0a37, 59) // ZC_ITEM_PICKUP_ACK_V7
+#endif
+
+// Packet: 0x0a38
+packetLen(0x0a38, 3) // ZC_OPEN_UI
+
+// Packet: 0x0a39
+packetLen(0x0a39, 36) // CH_MAKE_CHAR
+
+// Packet: 0x0a3a
+packetLen(0x0a3a, 12)
+
+// Packet: 0x0a3b
+packetLen(0x0a3b, -1) // ZC_CUSTOM_HAT_EFFECT
+
+// Packet: 0x0a3c
+packetLen(0x0a3c, -1)
+
+// Packet: 0x0a3d
+#if PACKETVER >= 20181121
+packetLen(0x0a3d, 20)
+#elif PACKETVER >= 20180103
+packetLen(0x0a3d, 18)
+#endif
+
+// Packet: 0x0a3e
+packetLen(0x0a3e, -1)
+
+// Packet: 0x0a3f
+#if PACKETVER >= 20181121
+packetLen(0x0a3f, 11)
+#elif PACKETVER >= 20180103
+packetLen(0x0a3f, 9)
+#endif
+
+// Packet: 0x0a40
+packetLen(0x0a40, 11)
+
+// Packet: 0x0a41
+packetLen(0x0a41, 18) // ZC_AOE_EFFECT_SKILL
+
+// Packet: 0x0a42
+packetLen(0x0a42, 43)
+
+// Packet: 0x0a43
+packetLen(0x0a43, 85) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0a44
+packetLen(0x0a44, -1) // ZC_GROUP_LIST
+
+// Packet: 0x0a46
+packetLen(0x0a46, 14)
+
+// Packet: 0x0a47
+packetLen(0x0a47, 3) // ZC_STYLE_CHANGE_RES
+
+// Packet: 0x0a48
+packetLen(0x0a48, 2)
+
+// Packet: 0x0a49
+#if PACKETVER >= 20181121
+packetLen(0x0a49, 22) // CZ_PRIVATE_AIRSHIP_REQUEST
+#elif PACKETVER >= 20180103
+packetLen(0x0a49, 20) // CZ_PRIVATE_AIRSHIP_REQUEST
+#endif
+
+// Packet: 0x0a4a
+packetLen(0x0a4a, 6) // ZC_PRIVATE_AIRSHIP_RESPONSE
+
+// Packet: 0x0a4b
+packetLen(0x0a4b, 22) // ZC_AIRSHIP_MAPMOVE
+
+// Packet: 0x0a4c
+packetLen(0x0a4c, 28) // ZC_AIRSHIP_SERVERMOVE
+
+// Packet: 0x0a4d
+packetLen(0x0a4d, -1)
+
+// Packet: 0x0a4e
+#if PACKETVER >= 20181121
+packetLen(0x0a4e, 6)
+#elif PACKETVER >= 20180103
+packetLen(0x0a4e, 4)
+#endif
+
+// Packet: 0x0a4f
+packetLen(0x0a4f, -1)
+
+// Packet: 0x0a50
+packetLen(0x0a50, 4)
+
+// Packet: 0x0a51
+packetLen(0x0a51, 34) // ZC_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a52
+packetLen(0x0a52, 20)
+
+// Packet: 0x0a53
+packetLen(0x0a53, 10)
+
+// Packet: 0x0a54
+packetLen(0x0a54, -1)
+
+// Packet: 0x0a55
+packetLen(0x0a55, 2)
+
+// Packet: 0x0a56
+packetLen(0x0a56, 6)
+
+// Packet: 0x0a57
+packetLen(0x0a57, 6)
+
+// Packet: 0x0a58
+packetLen(0x0a58, 8)
+
+// Packet: 0x0a59
+packetLen(0x0a59, -1)
+
+// Packet: 0x0a5a
+packetLen(0x0a5a, 2)
+
+// Packet: 0x0a5b
+packetLen(0x0a5b, 7)
+
+// Packet: 0x0a5c
+packetLen(0x0a5c, 18)
+
+// Packet: 0x0a5d
+packetLen(0x0a5d, 6)
+
+// Packet: 0x0a68
+packetLen(0x0a68, 3) // CZ_REQ_OPEN_UI
+
+// Packet: 0x0a69
+packetLen(0x0a69, 6)
+
+// Packet: 0x0a6a
+packetLen(0x0a6a, 12)
+
+// Packet: 0x0a6b
+packetLen(0x0a6b, -1)
+
+// Packet: 0x0a6c
+packetLen(0x0a6c, 7)
+
+// Packet: 0x0a6d
+packetLen(0x0a6d, -1)
+
+// Packet: 0x0a6e
+packetLen(0x0a6e, -1) // CZ_REQ_SEND_RODEX
+
+// Packet: 0x0a6f
+packetLen(0x0a6f, -1) // ZC_FORMATSTRING_MSG_COLOR
+
+// Packet: 0x0a70
+packetLen(0x0a70, 2)
+
+// Packet: 0x0a71
+packetLen(0x0a71, -1)
+
+// Packet: 0x0a72
+packetLen(0x0a72, 61)
+
+// Packet: 0x0a73
+packetLen(0x0a73, 2)
+
+// Packet: 0x0a74
+packetLen(0x0a74, 8)
+
+// Packet: 0x0a76
+packetLen(0x0a76, 80)
+
+// Packet: 0x0a77
+packetLen(0x0a77, 15)
+
+// Packet: 0x0a78
+packetLen(0x0a78, 15)
+
+// Packet: 0x0a79
+packetLen(0x0a79, -1)
+
+// Packet: 0x0a7b
+packetLen(0x0a7b, -1)
+
+// Packet: 0x0a7c
+packetLen(0x0a7c, -1)
+
+// Packet: 0x0a7d
+packetLen(0x0a7d, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x0a7e
+packetLen(0x0a7e, -1) // ZC_OFFLINE_STORE_OWNER_ITEMS_READY
+
+// Packet: 0x0a7f
+packetLen(0x0a7f, -1) // CZ_OFFLINE_STORE_CREATE
+
+// Packet: 0x0a80
+packetLen(0x0a80, 6)
+
+// Packet: 0x0a81
+packetLen(0x0a81, 4)
+
+// Packet: 0x0a82
+packetLen(0x0a82, 46)
+
+// Packet: 0x0a83
+packetLen(0x0a83, 46)
+
+// Packet: 0x0a84
+packetLen(0x0a84, 94) // ZC_GUILD_INFO
+
+// Packet: 0x0a85
+packetLen(0x0a85, 82)
+
+// Packet: 0x0a86
+packetLen(0x0a86, -1)
+
+// Packet: 0x0a87
+packetLen(0x0a87, -1)
+
+// Packet: 0x0a88
+packetLen(0x0a88, 2)
+
+// Packet: 0x0a89
+#if PACKETVER >= 20181121
+packetLen(0x0a89, 61) // ZC_NOTIFY_OFFLINE_STORE
+#elif PACKETVER >= 20180103
+packetLen(0x0a89, 57) // ZC_NOTIFY_OFFLINE_STORE
+#endif
+
+// Packet: 0x0a8a
+packetLen(0x0a8a, 6) // ZC_OFFLINE_STORE_VANISH
+
+// Packet: 0x0a8b
+packetLen(0x0a8b, 2)
+
+// Packet: 0x0a8c
+packetLen(0x0a8c, 2)
+
+// Packet: 0x0a8d
+packetLen(0x0a8d, -1) // ZC_OFFLINE_STORE_OWNER_ITEMS
+
+// Packet: 0x0a8e
+packetLen(0x0a8e, 2)
+
+// Packet: 0x0a8f
+packetLen(0x0a8f, 2)
+
+// Packet: 0x0a90
+packetLen(0x0a90, 3)
+
+// Packet: 0x0a91
+packetLen(0x0a91, -1) // ZC_OFFLINE_STORE_ITEMS
+
+// Packet: 0x0a92
+packetLen(0x0a92, -1)
+
+// Packet: 0x0a93
+packetLen(0x0a93, 3)
+
+// Packet: 0x0a94
+packetLen(0x0a94, 2)
+
+// Packet: 0x0a95
+packetLen(0x0a95, 4)
+
+// Packet: 0x0a96
+#if PACKETVER >= 20181121
+packetLen(0x0a96, 61) // ZC_ADD_EXCHANGE_ITEM4
+#elif PACKETVER >= 20180103
+packetLen(0x0a96, 51) // ZC_ADD_EXCHANGE_ITEM4
+#endif
+
+// Packet: 0x0a97
+packetLen(0x0a97, 8) // CZ_ALT_EQUIPMENT_EQUIP
+
+// Packet: 0x0a98
+packetLen(0x0a98, 10) // ZC_ALT_EQUIPMENT_EQUIP
+
+// Packet: 0x0a99
+packetLen(0x0a99, 4)
+
+// Packet: 0x0a9a
+packetLen(0x0a9a, 10) // ZC_ALT_EQUIPMENT_REMOVE
+
+// Packet: 0x0a9b
+packetLen(0x0a9b, -1) // ZC_ALT_EQUIPMENT_ITEMS
+
+// Packet: 0x0a9c
+packetLen(0x0a9c, 2)
+
+// Packet: 0x0a9d
+packetLen(0x0a9d, 4)
+
+// Packet: 0x0a9e
+packetLen(0x0a9e, 2)
+
+// Packet: 0x0a9f
+packetLen(0x0a9f, 2)
+
+// Packet: 0x0aa0
+packetLen(0x0aa0, 2) // ZC_REFINE_OPEN_WINDOW
+
+// Packet: 0x0aa1
+packetLen(0x0aa1, 4) // CZ_REFINE_ADD_ITEM
+
+// Packet: 0x0aa2
+packetLen(0x0aa2, -1) // ZC_REFINE_ADD_ITEM
+
+// Packet: 0x0aa3
+#if PACKETVER >= 20181121
+packetLen(0x0aa3, 9) // CZ_REFINE_ITEM_REQUEST
+#elif PACKETVER >= 20180103
+packetLen(0x0aa3, 7) // CZ_REFINE_ITEM_REQUEST
+#endif
+
+// Packet: 0x0aa4
+packetLen(0x0aa4, 2) // CZ_REFINE_WINDOW_CLOSE
+
+// Packet: 0x0aa5
+packetLen(0x0aa5, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0aa6
+packetLen(0x0aa6, 36) // ZC_MEMBER_ADD
+
+// Packet: 0x0aa7
+packetLen(0x0aa7, 6) // ZC_INVENTORY_MOVE_FAILED
+
+// Packet: 0x0aa8
+packetLen(0x0aa8, 5)
+
+// Packet: 0x0aa9
+packetLen(0x0aa9, -1)
+
+// Packet: 0x0aaa
+packetLen(0x0aaa, -1)
+
+// Packet: 0x0aab
+packetLen(0x0aab, -1)
+
+// Packet: 0x0aac
+packetLen(0x0aac, 69)
+
+// Packet: 0x0aad
+packetLen(0x0aad, 51)
+
+// Packet: 0x0aae
+packetLen(0x0aae, 2)
+
+// Packet: 0x0aaf
+packetLen(0x0aaf, 6)
+
+// Packet: 0x0ab0
+packetLen(0x0ab0, 6)
+
+// Packet: 0x0ab1
+packetLen(0x0ab1, 14)
+
+// Packet: 0x0ab2
+packetLen(0x0ab2, 7) // ZC_GROUP_ISALIVE
+
+// Packet: 0x0ab3
+packetLen(0x0ab3, 19)
+
+// Packet: 0x0ab4
+#if PACKETVER >= 20181121
+packetLen(0x0ab4, 6)
+#elif PACKETVER >= 20180103
+packetLen(0x0ab4, 4)
+#endif
+
+// Packet: 0x0ab5
+packetLen(0x0ab5, 2)
+
+// Packet: 0x0ab6
+#if PACKETVER >= 20181121
+packetLen(0x0ab6, 8)
+#elif PACKETVER >= 20180103
+packetLen(0x0ab6, 6)
+#endif
+
+// Packet: 0x0ab7
+packetLen(0x0ab7, 4)
+
+// Packet: 0x0ab8
+packetLen(0x0ab8, 2)
+
+// Packet: 0x0ab9
+#if PACKETVER >= 20181121
+packetLen(0x0ab9, 47) // ZC_ITEM_PREVIEW
+#elif PACKETVER >= 20180103
+packetLen(0x0ab9, 39) // ZC_ITEM_PREVIEW
+#endif
+
+// Packet: 0x0aba
+packetLen(0x0aba, 2)
+
+// Packet: 0x0abb
+packetLen(0x0abb, 2)
+
+// Packet: 0x0abc
+packetLen(0x0abc, -1)
+
+// Packet: 0x0abd
+packetLen(0x0abd, 10) // ZC_PARTY_MEMBER_JOB_LEVEL
+
+// Packet: 0x0abe
+packetLen(0x0abe, -1) // ZC_WARPLIST
+
+// Packet: 0x0abf
+packetLen(0x0abf, -1)
+
+// Packet: 0x0ac0
+packetLen(0x0ac0, 26) // CZ_OPEN_RODEXBOX
+
+// Packet: 0x0ac1
+packetLen(0x0ac1, 26) // CZ_REQ_REFRESH_RODEX
+
+// Packet: 0x0ac2
+packetLen(0x0ac2, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x0ac3
+packetLen(0x0ac3, 2)
+
+// Packet: 0x0ac4
+packetLen(0x0ac4, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x0ac5
+packetLen(0x0ac5, 156) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0ac6
+packetLen(0x0ac6, 156)
+
+// Packet: 0x0ac7
+packetLen(0x0ac7, 156) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0ac8
+packetLen(0x0ac8, 2) // ZC_UNKNOWN_CLEAN_ITEMS_LISTS
+
+// Packet: 0x0ac9
+packetLen(0x0ac9, -1)
+
+// Packet: 0x0aca
+packetLen(0x0aca, 3)
+
+// Packet: 0x0acb
+packetLen(0x0acb, 12) // ZC_PAR_CHANGE
+
+// Packet: 0x0acc
+packetLen(0x0acc, 18) // ZC_NOTIFY_EXP
+
+// Packet: 0x0acd
+packetLen(0x0acd, 23)
+
+// Packet: 0x0ace
+packetLen(0x0ace, 4)
+
+// Packet: 0x0acf
+packetLen(0x0acf, 68) // CA_LOGIN_OTP
+
+// Packet: 0x0ad0
+packetLen(0x0ad0, 11) // CA_OTP_CODE
+
+// Packet: 0x0ad1
+packetLen(0x0ad1, -1)
+
+// Packet: 0x0ad2
+packetLen(0x0ad2, 30)
+
+// Packet: 0x0ad3
+packetLen(0x0ad3, -1)
+
+// Packet: 0x0ad4
+packetLen(0x0ad4, -1)
+
+// Packet: 0x0ad5
+packetLen(0x0ad5, 2)
+
+// Packet: 0x0ad6
+packetLen(0x0ad6, 2)
+
+// Packet: 0x0ad7
+packetLen(0x0ad7, 8)
+
+// Packet: 0x0ad8
+packetLen(0x0ad8, 8)
+
+// Packet: 0x0ad9
+packetLen(0x0ad9, -1)
+
+// Packet: 0x0ada
+#if PACKETVER >= 20181121
+packetLen(0x0ada, 32) // ZC_REFINE_STATUS
+#elif PACKETVER >= 20180103
+packetLen(0x0ada, 30) // ZC_REFINE_STATUS
+#endif
+
+// Packet: 0x0adb
+packetLen(0x0adb, -1)
+
+// Packet: 0x0adc
+packetLen(0x0adc, 6) // ZC_EQUIPWIN_OTHER
+
+// Packet: 0x0add
+#if PACKETVER >= 20181121
+packetLen(0x0add, 24) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20180103
+packetLen(0x0add, 22) // ZC_ITEM_FALL_ENTRY
+#endif
+
+// Packet: 0x0ade
+packetLen(0x0ade, 6) // ZC_OVERWEIGHT_PERCENT
+
+// Packet: 0x0adf
+packetLen(0x0adf, 58) // ZC_ACK_REQNAME
+
+// Packet: 0x0ae0
+packetLen(0x0ae0, 30)
+
+// Packet: 0x0ae1
+packetLen(0x0ae1, 28)
+
+// Packet: 0x0ae2
+packetLen(0x0ae2, 7) // ZC_OPEN_UI
+
+// Packet: 0x0ae3
+packetLen(0x0ae3, -1) // AC_LOGIN_OTP
+
+// Packet: 0x0ae4
+packetLen(0x0ae4, 89) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0ae5
+packetLen(0x0ae5, -1) // ZC_GROUP_LIST
+
+// Packet: 0x0ae6
+#if PACKETVER >= 20180207
+packetLen(0x0ae6, 10)
+#elif PACKETVER >= 20180103
+packetLen(0x0ae6, 30)
+#endif
+
+// Packet: 0x0ae7
+#if PACKETVER >= 20180404
+packetLen(0x0ae7, 38)
+#elif PACKETVER >= 20180321
+packetLen(0x0ae7, 34)
+#elif PACKETVER >= 20180103
+packetLen(0x0ae7, 30)
+#endif
+
+// Packet: 0x0ae8
+packetLen(0x0ae8, 2)
+
+// Packet: 0x0ae9
+#if PACKETVER >= 20180117
+packetLen(0x0ae9, 13) // HC_SECOND_PASSWD_LOGIN
+#elif PACKETVER >= 20180103
+packetLen(0x0ae9, 64) // HC_SECOND_PASSWD_LOGIN
+#endif
+
+// Packet: 0x0aea
+#if PACKETVER >= 20180117
+// removed
+#elif PACKETVER >= 20180103
+packetLen(0x0aea, 2)
+#endif
+
+// Packet: 0x0aeb
+#if PACKETVER >= 20180117
+// removed
+#elif PACKETVER >= 20180103
+packetLen(0x0aeb, 11)
+#endif
+
+// Packet: 0x0aec
+packetLen(0x0aec, 2)
+
+// Packet: 0x0aed
+packetLen(0x0aed, 2)
+
+// Packet: 0x0aee
+packetLen(0x0aee, 2)
+
+// Packet: 0x0aef
+#if PACKETVER >= 20180117
+packetLen(0x0aef, 2) // CZ_ATTENDANCE_REWARD_REQUEST
+#endif
+
+// Packet: 0x0af0
+#if PACKETVER >= 20180117
+packetLen(0x0af0, 10) // ZC_UI_ACTION
+#endif
+
+// Packet: 0x0af2
+#if PACKETVER >= 20180124
+packetLen(0x0af2, 40)
+#endif
+
+// Packet: 0x0af3
+#if PACKETVER >= 20180124
+packetLen(0x0af3, -1)
+#endif
+
+// Packet: 0x0af4
+#if PACKETVER >= 20180207
+packetLen(0x0af4, 11) // CZ_USE_SKILL_TOGROUND
+#endif
+
+// Packet: 0x0af5
+#if PACKETVER >= 20180207
+packetLen(0x0af5, 3)
+#endif
+
+// Packet: 0x0af6
+#if PACKETVER >= 20180207
+packetLen(0x0af6, 88)
+#endif
+
+// Packet: 0x0af7
+#if PACKETVER >= 20180207
+packetLen(0x0af7, 32) // ZC_ACK_REQNAME_BYGID
+#endif
+
+// Packet: 0x0af8
+#if PACKETVER >= 20180321
+packetLen(0x0af8, 11)
+#endif
+
+// Packet: 0x0af9
+#if PACKETVER >= 20180404
+packetLen(0x0af9, 6)
+#endif
+
+// Packet: 0x0afa
+#if PACKETVER >= 20180404
+packetLen(0x0afa, 54)
+#endif
+
+// Packet: 0x0afb
+#if PACKETVER >= 20180418
+packetLen(0x0afb, -1) // ZC_AUTOSPELLLIST
+#endif
+
+// Packet: 0x0afc
+#if PACKETVER >= 20180516
+packetLen(0x0afc, 16)
+#endif
+
+// Packet: 0x0afd
+#if PACKETVER >= 20180605
+packetLen(0x0afd, -1) // ZC_GUILD_POSITION
+#endif
+
+// Packet: 0x0afe
+#if PACKETVER >= 20180605
+packetLen(0x0afe, -1) // ZC_UPDATE_MISSION_HUNT_EX
+#endif
+
+// Packet: 0x0aff
+#if PACKETVER >= 20180605
+packetLen(0x0aff, -1) // ZC_ALL_QUEST_LIST4
+#endif
+
+// Packet: 0x0b00
+#if PACKETVER >= 20180620
+packetLen(0x0b00, 8)
+#endif
+
+// Packet: 0x0b01
+#if PACKETVER >= 20180704
+packetLen(0x0b01, 56)
+#elif PACKETVER >= 20180620
+packetLen(0x0b01, 40)
+#endif
+
+// Packet: 0x0b02
+#if PACKETVER >= 20180704
+packetLen(0x0b02, 26) // AC_REFUSE_LOGIN4
+#endif
+
+// Packet: 0x0b03
+#if PACKETVER >= 20180801
+packetLen(0x0b03, -1) // ZC_EQUIPWIN_MICROSCOPE_V7
+#endif
+
+// Packet: 0x0b04
+#if PACKETVER >= 20180801
+packetLen(0x0b04, 80)
+#endif
+
+// Packet: 0x0b05
+#if PACKETVER >= 20181121
+packetLen(0x0b05, 63) // ZC_OFFLINE_STORE_VISIBLE
+#elif PACKETVER >= 20180829
+packetLen(0x0b05, 59) // ZC_OFFLINE_STORE_VISIBLE
+#endif
+
+// Packet: 0x0b06
+#if PACKETVER >= 20181002
+// removed
+#elif PACKETVER >= 20180829
+packetLen(0x0b06, 53)
+#endif
+
+// Packet: 0x0b07
+#if PACKETVER >= 20180829
+packetLen(0x0b07, -1)
+#endif
+
+// Packet: 0x0b08
+#if PACKETVER >= 20181002
+packetLen(0x0b08, -1) // ZC_INVENTORY_START
+#elif PACKETVER >= 20180912
+packetLen(0x0b08, 27) // ZC_INVENTORY_START
+#elif PACKETVER >= 20180829
+packetLen(0x0b08, 26) // ZC_INVENTORY_START
+#endif
+
+// Packet: 0x0b09
+#if PACKETVER >= 20180829
+packetLen(0x0b09, -1) // ZC_STORE_ITEMLIST_NORMAL_V6
+#endif
+
+// Packet: 0x0b0a
+#if PACKETVER >= 20180829
+packetLen(0x0b0a, -1) // ZC_STORE_ITEMLIST_EQUIP_V6
+#endif
+
+// Packet: 0x0b0b
+#if PACKETVER >= 20180912
+packetLen(0x0b0b, 4) // ZC_INVENTORY_END
+#elif PACKETVER >= 20180829
+packetLen(0x0b0b, 3) // ZC_INVENTORY_END
+#endif
+
+// Packet: 0x0b0c
+#if PACKETVER >= 20180829
+packetLen(0x0b0c, 155) // ZC_ADD_QUEST_EX
+#endif
+
+// Packet: 0x0b0d
+#if PACKETVER >= 20180912
+packetLen(0x0b0d, 10) // ZC_REMOVE_EFFECT
+#endif
+
+// Packet: 0x0b0e
+#if PACKETVER >= 20180912
+packetLen(0x0b0e, -1) // ZC_NPC_BARTER_OPEN
+#endif
+
+// Packet: 0x0b0f
+#if PACKETVER >= 20180912
+packetLen(0x0b0f, -1) // CZ_NPC_BARTER_PURCHASE
+#endif
+
+// Packet: 0x0b10
+#if PACKETVER >= 20181002
+packetLen(0x0b10, 10) // CZ_START_USE_SKILL
+#endif
+
+// Packet: 0x0b11
+#if PACKETVER >= 20181002
+packetLen(0x0b11, 4) // CZ_STOP_USE_SKILL
+#endif
+
+// Packet: 0x0b12
+#if PACKETVER >= 20181017
+packetLen(0x0b12, 2) // CZ_NPC_BARTER_CLOSE
+#endif
+
+// Packet: 0x0b13
+#if PACKETVER >= 20181121
+packetLen(0x0b13, 48) // ZC_ITEM_PREVIEW
+#elif PACKETVER >= 20181017
+packetLen(0x0b13, 40) // ZC_ITEM_PREVIEW
+#endif
+
+// Packet: 0x0b14
+#if PACKETVER >= 20181031
+packetLen(0x0b14, 2) // CZ_INVENTORY_EXPAND
+#endif
+
+// Packet: 0x0b15
+#if PACKETVER >= 20181031
+packetLen(0x0b15, 7) // ZC_ACK_INVENTORY_EXPAND
+#endif
+
+// Packet: 0x0b16
+#if PACKETVER >= 20181031
+packetLen(0x0b16, 2) // CZ_INVENTORY_EXPAND_CONFIRMED
+#endif
+
+// Packet: 0x0b17
+#if PACKETVER >= 20181031
+packetLen(0x0b17, 3) // ZC_ACK_INVENTORY_EXPAND_RESULT
+#endif
+
+// Packet: 0x0b18
+#if PACKETVER >= 20181031
+packetLen(0x0b18, 4) // ZC_INVENTORY_EXPANSION_INFO
+#endif
+
+// Packet: 0x0b19
+#if PACKETVER >= 20181031
+packetLen(0x0b19, 2) // CZ_INVENTORY_EXPAND_REJECTED
+#endif
+
+// Packet: 0x0b1a
+#if PACKETVER >= 20181212
+packetLen(0x0b1a, 29)
+#endif
+
+
+#endif /* COMMON_PACKETS2018_LEN_MAIN_H */
diff --git a/src/common/packets/packets2018_len_re.h b/src/common/packets/packets2018_len_re.h
new file mode 100644
index 000000000..42a417fea
--- /dev/null
+++ b/src/common/packets/packets2018_len_re.h
@@ -0,0 +1,5670 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2018_LEN_RE_H
+#define COMMON_PACKETS2018_LEN_RE_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 157) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 22) // CZ_ENTER
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 44) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 10) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, 14)
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+packetLen(0x0094, 19) // CZ_REQNAME
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+#if PACKETVER >= 20180704
+packetLen(0x009d, 19) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20180103
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+#endif
+
+// Packet: 0x009e
+#if PACKETVER >= 20180704
+packetLen(0x009e, 19) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20180103
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+#endif
+
+// Packet: 0x009f
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+#if PACKETVER >= 20180704
+packetLen(0x00a0, 33) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20180103
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+#endif
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+packetLen(0x00a7, 9)
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 9) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+#if PACKETVER >= 20180704
+packetLen(0x00e9, 29) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20180103
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+#if PACKETVER >= 20180704
+packetLen(0x00f4, 31) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20180103
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+#endif
+
+// Packet: 0x00f5
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+packetLen(0x00f7, 17) // CZ_REQUEST_TIME
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+#if PACKETVER >= 20180704
+packetLen(0x010a, 6) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20180103
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+#endif
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+#if PACKETVER >= 20180704
+packetLen(0x0110, 14) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20180103
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+#endif
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+packetLen(0x0113, 25) // CZ_USE_SKILL
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+#if PACKETVER >= 20180704
+packetLen(0x0124, 31) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20180103
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+#endif
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+#if PACKETVER >= 20180704
+packetLen(0x018e, 18) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20180103
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+#endif
+
+// Packet: 0x018f
+#if PACKETVER >= 20180704
+packetLen(0x018f, 8) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20180103
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+#endif
+
+// Packet: 0x0190
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 37) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+#if PACKETVER >= 20180704
+packetLen(0x01a3, 7) // ZC_FEED_PET
+#elif PACKETVER >= 20180103
+packetLen(0x01a3, 5) // ZC_FEED_PET
+#endif
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+#if PACKETVER >= 20180704
+packetLen(0x01ae, 6) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20180103
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+#endif
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+#if PACKETVER >= 20180704
+packetLen(0x01c4, 32) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20180103
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+#endif
+
+// Packet: 0x01c5
+#if PACKETVER >= 20180704
+packetLen(0x01c5, 32) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20180103
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+#endif
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+#if PACKETVER >= 20180704
+packetLen(0x01c8, 15) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20180103
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+#endif
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+#if PACKETVER >= 20180704
+packetLen(0x01d7, 15) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20180103
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+#endif
+
+// Packet: 0x01d8
+#if PACKETVER >= 20180704
+packetLen(0x01d8, 58) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20180103
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+#endif
+
+// Packet: 0x01d9
+#if PACKETVER >= 20180704
+packetLen(0x01d9, 57) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20180103
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+#endif
+
+// Packet: 0x01da
+#if PACKETVER >= 20180704
+packetLen(0x01da, 64) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20180103
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+#endif
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+#if PACKETVER >= 20180704
+packetLen(0x01fd, 25) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20180103
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+#endif
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+#if PACKETVER >= 20180321
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20180307
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20180221
+packetLen(0x0202, 90) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20180124
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20180117
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20180103
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+#if PACKETVER >= 20180221
+packetLen(0x0206, 35) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20180103
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+#endif
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x020f
+packetLen(0x020f, 10) // CZ_REQ_PVPPOINT
+
+// Packet: 0x0210
+packetLen(0x0210, 22) // ZC_ACK_PVPPOINT
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+#if PACKETVER >= 20180704
+packetLen(0x0223, 10) // ZC_ACK_WEAPONREFINE
+#elif PACKETVER >= 20180103
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+#endif
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+#if PACKETVER >= 20180704
+packetLen(0x022a, 62) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20180103
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+#endif
+
+// Packet: 0x022b
+#if PACKETVER >= 20180704
+packetLen(0x022b, 61) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20180103
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+#endif
+
+// Packet: 0x022c
+#if PACKETVER >= 20180704
+packetLen(0x022c, 69) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20180103
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+#endif
+
+// Packet: 0x022d
+#if PACKETVER >= 20180321
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+#elif PACKETVER >= 20180124
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20180117
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20180103
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#endif
+
+// Packet: 0x022e
+#if PACKETVER >= 20180704
+packetLen(0x022e, 73) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20180103
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+#endif
+
+// Packet: 0x022f
+#if PACKETVER >= 20180704
+packetLen(0x022f, 7) // ZC_FEED_MER
+#elif PACKETVER >= 20180103
+packetLen(0x022f, 5) // ZC_FEED_MER
+#endif
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+#if PACKETVER >= 20180321
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20180124
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20180117
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20180103
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#endif
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+#if PACKETVER >= 20180704
+packetLen(0x025b, 8) // CZ_REQ_MAKINGITEM
+#elif PACKETVER >= 20180103
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+#endif
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+
+// Packet: 0x0275
+packetLen(0x0275, 37) // CH_ENTER2
+
+// Packet: 0x0276
+packetLen(0x0276, -1) // AC_ACCEPT_LOGIN2
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+#if PACKETVER >= 20180307
+packetLen(0x0281, 4) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20180213
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20180207
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20180124
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20180117
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20180103
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#endif
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+
+// Packet: 0x0288
+packetLen(0x0288, -1) // CZ_PC_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0289
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0296
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0297
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0298
+#if PACKETVER >= 20180704
+packetLen(0x0298, 10) // ZC_CASH_TIME_COUNTER
+#elif PACKETVER >= 20180103
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+#endif
+
+// Packet: 0x0299
+#if PACKETVER >= 20180704
+packetLen(0x0299, 8) // ZC_CASH_ITEM_DELETE
+#elif PACKETVER >= 20180103
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+#endif
+
+// Packet: 0x029a
+#if PACKETVER >= 20180704
+packetLen(0x029a, 37) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20180103
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+#endif
+
+// Packet: 0x029b
+packetLen(0x029b, 80) // ZC_MER_INIT
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a5
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+
+// Packet: 0x02a6
+packetLen(0x02a6, -1) // ZC_HACKSH_CPX_MSG
+
+// Packet: 0x02a7
+packetLen(0x02a7, -1) // CZ_HACKSH_CPX_MSG
+
+// Packet: 0x02aa
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+
+// Packet: 0x02ab
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+
+// Packet: 0x02ac
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+
+// Packet: 0x02ad
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+
+// Packet: 0x02b0
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+
+// Packet: 0x02b1
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+
+// Packet: 0x02b2
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+
+// Packet: 0x02b3
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+
+// Packet: 0x02b4
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+
+// Packet: 0x02b5
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+
+// Packet: 0x02b6
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+
+// Packet: 0x02b7
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+
+// Packet: 0x02b8
+#if PACKETVER >= 20180704
+packetLen(0x02b8, 32) // ZC_ITEM_PICKUP_PARTY
+#elif PACKETVER >= 20180103
+packetLen(0x02b8, 22) // ZC_ITEM_PICKUP_PARTY
+#endif
+
+// Packet: 0x02b9
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+
+// Packet: 0x02ba
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+
+// Packet: 0x02bb
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+
+// Packet: 0x02bc
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+
+// Packet: 0x02c1
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+
+// Packet: 0x02c2
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+
+// Packet: 0x02c4
+#if PACKETVER >= 20180321
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20180117
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20180103
+packetLen(0x02c4, 8) // CZ_PARTY_JOIN_REQ
+#endif
+
+// Packet: 0x02c5
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c6
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+
+// Packet: 0x02c7
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c8
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+
+// Packet: 0x02c9
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+
+// Packet: 0x02ca
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+
+// Packet: 0x02cb
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+
+// Packet: 0x02cc
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+
+// Packet: 0x02cd
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+
+// Packet: 0x02ce
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+
+// Packet: 0x02cf
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+
+// Packet: 0x02d0
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d1
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d2
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d3
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+
+// Packet: 0x02d4
+#if PACKETVER >= 20180704
+packetLen(0x02d4, 39) // ZC_ITEM_PICKUP_ACK3
+#elif PACKETVER >= 20180103
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+#endif
+
+// Packet: 0x02d5
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+
+// Packet: 0x02d6
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d7
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d8
+packetLen(0x02d8, 10) // CZ_CONFIG
+
+// Packet: 0x02d9
+packetLen(0x02d9, 10) // ZC_CONFIG
+
+// Packet: 0x02da
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+
+// Packet: 0x02db
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+
+// Packet: 0x02dc
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+
+// Packet: 0x02dd
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+
+// Packet: 0x02de
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+
+// Packet: 0x02df
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+
+// Packet: 0x02e0
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+
+// Packet: 0x02e1
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+
+// Packet: 0x02e2
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+
+// Packet: 0x02e3
+packetLen(0x02e3, 22) // CZ_USE_SKILL_NEW_JAPEN
+
+// Packet: 0x02e4
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+
+// Packet: 0x02e5
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+
+// Packet: 0x02e6
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+
+// Packet: 0x02e7
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+
+// Packet: 0x02e8
+packetLen(0x02e8, -1) // ZC_NORMAL_ITEMLIST3
+
+// Packet: 0x02e9
+packetLen(0x02e9, -1) // ZC_CART_NORMAL_ITEMLIST3
+
+// Packet: 0x02ea
+packetLen(0x02ea, -1) // ZC_STORE_NORMAL_ITEMLIST3
+
+// Packet: 0x02eb
+packetLen(0x02eb, 13) // ZC_ACCEPT_ENTER2
+
+// Packet: 0x02ec
+#if PACKETVER >= 20180704
+packetLen(0x02ec, 71) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20180103
+packetLen(0x02ec, 67) // ZC_NOTIFY_MOVEENTRY4
+#endif
+
+// Packet: 0x02ed
+#if PACKETVER >= 20180704
+packetLen(0x02ed, 63) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20180103
+packetLen(0x02ed, 59) // ZC_NOTIFY_NEWENTRY4
+#endif
+
+// Packet: 0x02ee
+#if PACKETVER >= 20180704
+packetLen(0x02ee, 64) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20180103
+packetLen(0x02ee, 60) // ZC_NOTIFY_STANDENTRY4
+#endif
+
+// Packet: 0x02ef
+packetLen(0x02ef, 8) // ZC_NOTIFY_FONT
+
+// Packet: 0x02f0
+packetLen(0x02f0, 10) // ZC_PROGRESS
+
+// Packet: 0x02f1
+packetLen(0x02f1, 2) // CZ_PROGRESS
+
+// Packet: 0x02f2
+packetLen(0x02f2, 2) // ZC_PROGRESS_CANCEL
+
+// Packet: 0x02f3
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+
+// Packet: 0x02f4
+packetLen(0x02f4, 3) // ZC_IRMAIL_SEND_RES
+
+// Packet: 0x02f5
+packetLen(0x02f5, 7) // ZC_IRMAIL_NOTIFY
+
+// Packet: 0x02f6
+packetLen(0x02f6, 7) // CZ_IRMAIL_LIST
+
+// Packet: 0x035c
+packetLen(0x035c, 2) // CZ_OPEN_SIMPLE_CASHSHOP_ITEMLIST
+
+// Packet: 0x035d
+packetLen(0x035d, -1) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+
+// Packet: 0x035e
+packetLen(0x035e, 2) // CZ_CLOSE_WINDOW
+
+// Packet: 0x035f
+#if PACKETVER >= 20180321
+packetLen(0x035f, 5) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20180307
+packetLen(0x035f, -1) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20180213
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20180117
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20180103
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#endif
+
+// Packet: 0x0360
+#if PACKETVER >= 20180321
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20180213
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20180207
+packetLen(0x0360, 4) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20180117
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20180103
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#endif
+
+// Packet: 0x0361
+#if PACKETVER >= 20180321
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20180124
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20180117
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20180103
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#endif
+
+// Packet: 0x0362
+#if PACKETVER >= 20180321
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20180213
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20180207
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20180124
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20180117
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20180103
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#endif
+
+// Packet: 0x0363
+#if PACKETVER >= 20180321
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20180213
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20180207
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20180124
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20180117
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20180103
+packetLen(0x0363, 26) // CZ_ITEM_THROW2
+#endif
+
+// Packet: 0x0364
+#if PACKETVER >= 20180321
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20180213
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20180207
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20180124
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20180117
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20180103
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#endif
+
+// Packet: 0x0365
+#if PACKETVER >= 20180321
+packetLen(0x0365, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20180213
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20180207
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20180124
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20180117
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20180103
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#endif
+
+// Packet: 0x0366
+#if PACKETVER >= 20180321
+packetLen(0x0366, 10) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20180307
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20180221
+packetLen(0x0366, 8) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20180213
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20180117
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20180103
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#endif
+
+// Packet: 0x0367
+#if PACKETVER >= 20180321
+packetLen(0x0367, 90) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20180103
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#endif
+
+// Packet: 0x0368
+#if PACKETVER >= 20180321
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20180213
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20180117
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20180103
+packetLen(0x0368, 2) // CZ_REQNAME2
+#endif
+
+// Packet: 0x0369
+#if PACKETVER >= 20180321
+packetLen(0x0369, 6) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20180221
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20180213
+packetLen(0x0369, 36) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20180117
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20180103
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#endif
+
+// Packet: 0x03dd
+packetLen(0x03dd, 18) // AHC_GAME_GUARD
+
+// Packet: 0x03de
+packetLen(0x03de, 18) // CAH_ACK_GAME_GUARD
+
+// Packet: 0x0436
+#if PACKETVER >= 20180321
+packetLen(0x0436, 19) // CZ_ENTER2
+#elif PACKETVER >= 20180307
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20180221
+packetLen(0x0436, 26) // CZ_ENTER2
+#elif PACKETVER >= 20180207
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20180124
+packetLen(0x0436, 8) // CZ_ENTER2
+#elif PACKETVER >= 20180117
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20180103
+packetLen(0x0436, 2) // CZ_ENTER2
+#endif
+
+// Packet: 0x0437
+#if PACKETVER >= 20180321
+packetLen(0x0437, 7) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20180307
+packetLen(0x0437, 6) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20180213
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20180117
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20180103
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#endif
+
+// Packet: 0x0438
+#if PACKETVER >= 20180321
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20180213
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20180117
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20180103
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#endif
+
+// Packet: 0x0439
+packetLen(0x0439, 8) // CZ_USE_ITEM2
+
+// Packet: 0x043d
+packetLen(0x043d, 8) // ZC_SKILL_POSTDELAY
+
+// Packet: 0x043e
+packetLen(0x043e, -1) // ZC_SKILL_POSTDELAY_LIST
+
+// Packet: 0x043f
+packetLen(0x043f, 25) // ZC_MSG_STATE_CHANGE2
+
+// Packet: 0x0440
+packetLen(0x0440, 10) // ZC_MILLENNIUMSHIELD
+
+// Packet: 0x0441
+packetLen(0x0441, 4) // ZC_SKILLINFO_DELETE
+
+// Packet: 0x0442
+packetLen(0x0442, -1) // ZC_SKILL_SELECT_REQUEST
+
+// Packet: 0x0443
+packetLen(0x0443, 8) // CZ_SKILL_SELECT_RESPONSE
+
+// Packet: 0x0444
+packetLen(0x0444, -1) // ZC_SIMPLE_CASH_POINT_ITEMLIST
+
+// Packet: 0x0445
+#if PACKETVER >= 20180704
+packetLen(0x0445, 12) // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+#elif PACKETVER >= 20180103
+packetLen(0x0445, 10) // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+#endif
+
+// Packet: 0x0446
+packetLen(0x0446, 14) // ZC_QUEST_NOTIFY_EFFECT
+
+// Packet: 0x0447
+packetLen(0x0447, 2) // CZ_BLOCKING_PLAY_CANCEL
+
+// Packet: 0x0448
+packetLen(0x0448, -1) // HC_CHARACTER_LIST
+
+// Packet: 0x0449
+packetLen(0x0449, 4) // ZC_HACKSH_ERROR_MSG
+
+// Packet: 0x044a
+packetLen(0x044a, 6) // CZ_CLIENT_VERSION
+
+// Packet: 0x044b
+packetLen(0x044b, 2) // CZ_CLOSE_SIMPLECASH_SHOP
+
+// Packet: 0x07d7
+packetLen(0x07d7, 8) // CZ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d8
+packetLen(0x07d8, 8) // ZC_REQ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d9
+packetLen(0x07d9, 268) // ZC_SHORTCUT_KEY_LIST_V2
+
+// Packet: 0x07da
+packetLen(0x07da, 6) // CZ_CHANGE_GROUP_MASTER
+
+// Packet: 0x07db
+packetLen(0x07db, 8) // ZC_HO_PAR_CHANGE
+
+// Packet: 0x07dc
+packetLen(0x07dc, 6) // CZ_SEEK_PARTY
+
+// Packet: 0x07dd
+packetLen(0x07dd, 54) // ZC_SEEK_PARTY
+
+// Packet: 0x07de
+packetLen(0x07de, 30) // CZ_SEEK_PARTY_MEMBER
+
+// Packet: 0x07df
+packetLen(0x07df, 54) // ZC_SEEK_PARTY_MEMBER
+
+// Packet: 0x07e0
+packetLen(0x07e0, 58) // ZC_ES_NOTI_MYINFO
+
+// Packet: 0x07e1
+packetLen(0x07e1, 15) // ZC_SKILLINFO_UPDATE2
+
+// Packet: 0x07e2
+packetLen(0x07e2, 8) // ZC_MSG_VALUE
+
+// Packet: 0x07e3
+packetLen(0x07e3, 6) // ZC_ITEMLISTWIN_OPEN
+
+// Packet: 0x07e4
+#if PACKETVER >= 20180321
+packetLen(0x07e4, -1) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20180307
+packetLen(0x07e4, 19) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20180213
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20180207
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20180124
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20180117
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20180103
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#endif
+
+// Packet: 0x07e5
+packetLen(0x07e5, 4) // CH_ENTER_CHECKBOT
+
+// Packet: 0x07e6
+packetLen(0x07e6, 8) // ZC_MSG_SKILL
+
+// Packet: 0x07e7
+packetLen(0x07e7, 32) // CH_CHECKBOT
+
+// Packet: 0x07e8
+packetLen(0x07e8, -1) // HC_CHECKBOT
+
+// Packet: 0x07e9
+packetLen(0x07e9, 5) // HC_CHECKBOT_RESULT
+
+// Packet: 0x07ea
+packetLen(0x07ea, 2) // CZ_BATTLE_FIELD_LIST
+
+// Packet: 0x07eb
+packetLen(0x07eb, -1) // ZC_BATTLE_FIELD_LIST
+
+// Packet: 0x07ec
+#if PACKETVER >= 20180321
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20180213
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20180207
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20180124
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20180117
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20180103
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#endif
+
+// Packet: 0x07ed
+packetLen(0x07ed, 10) // ZC_JOIN_BATTLE_FIELD
+
+// Packet: 0x07ee
+packetLen(0x07ee, 6) // CZ_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07ef
+packetLen(0x07ef, 8) // ZC_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07f0
+packetLen(0x07f0, 6) // CZ_REQ_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f1
+packetLen(0x07f1, 18) // ZC_ACK_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f2
+packetLen(0x07f2, 8) // ZC_BATTLE_NOTI_START_STEP
+
+// Packet: 0x07f3
+packetLen(0x07f3, 6) // ZC_BATTLE_JOIN_NOTI_DEFER
+
+// Packet: 0x07f4
+packetLen(0x07f4, 3) // ZC_BATTLE_JOIN_DISABLE_STATE
+
+// Packet: 0x07f5
+packetLen(0x07f5, 6) // CZ_GM_FULLSTRIP
+
+// Packet: 0x07f6
+packetLen(0x07f6, 14) // ZC_NOTIFY_EXP
+
+// Packet: 0x07f7
+packetLen(0x07f7, -1) // ZC_NOTIFY_MOVEENTRY7
+
+// Packet: 0x07f8
+packetLen(0x07f8, -1) // ZC_NOTIFY_NEWENTRY5
+
+// Packet: 0x07f9
+packetLen(0x07f9, -1) // ZC_NOTIFY_STANDENTRY5
+
+// Packet: 0x07fa
+packetLen(0x07fa, 8) // ZC_DELETE_ITEM_FROM_BODY
+
+// Packet: 0x07fb
+packetLen(0x07fb, 25) // ZC_USESKILL_ACK2
+
+// Packet: 0x07fc
+packetLen(0x07fc, 10) // ZC_CHANGE_GROUP_MASTER
+
+// Packet: 0x07fd
+packetLen(0x07fd, -1) // ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN
+
+// Packet: 0x07fe
+packetLen(0x07fe, 26) // ZC_PLAY_NPC_BGM
+
+// Packet: 0x0800
+packetLen(0x0800, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0801
+packetLen(0x0801, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0802
+#if PACKETVER >= 20180321
+packetLen(0x0802, 18) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20180221
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20180213
+packetLen(0x0802, 6) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20180207
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20180124
+packetLen(0x0802, 6) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20180117
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20180103
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// Packet: 0x0803
+packetLen(0x0803, 4) // ZC_PARTY_BOOKING_ACK_REGISTER
+
+// Packet: 0x0804
+packetLen(0x0804, 14) // CZ_PARTY_BOOKING_REQ_SEARCH
+
+// Packet: 0x0805
+packetLen(0x0805, -1) // ZC_PARTY_BOOKING_ACK_SEARCH
+
+// Packet: 0x0806
+packetLen(0x0806, 2) // CZ_PARTY_BOOKING_REQ_DELETE
+
+// Packet: 0x0807
+packetLen(0x0807, 4) // ZC_PARTY_BOOKING_ACK_DELETE
+
+// Packet: 0x0808
+packetLen(0x0808, 14) // CZ_PARTY_BOOKING_REQ_UPDATE
+
+// Packet: 0x0809
+packetLen(0x0809, 50) // ZC_PARTY_BOOKING_NOTIFY_INSERT
+
+// Packet: 0x080a
+packetLen(0x080a, 18) // ZC_PARTY_BOOKING_NOTIFY_UPDATE
+
+// Packet: 0x080b
+packetLen(0x080b, 6) // ZC_PARTY_BOOKING_NOTIFY_DELETE
+
+// Packet: 0x080c
+packetLen(0x080c, 2) // CZ_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080d
+packetLen(0x080d, 3) // ZC_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080e
+packetLen(0x080e, 14) // ZC_NOTIFY_HP_TO_GROUPM_R2
+
+// Packet: 0x080f
+#if PACKETVER >= 20180704
+packetLen(0x080f, 30) // ZC_ADD_EXCHANGE_ITEM2
+#elif PACKETVER >= 20180103
+packetLen(0x080f, 20) // ZC_ADD_EXCHANGE_ITEM2
+#endif
+
+// Packet: 0x0810
+packetLen(0x0810, 3) // ZC_OPEN_BUYING_STORE
+
+// Packet: 0x0811
+#if PACKETVER >= 20180321
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20180213
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20180117
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20180103
+packetLen(0x0811, 19) // CZ_REQ_OPEN_BUYING_STORE
+#endif
+
+// Packet: 0x0812
+packetLen(0x0812, 8) // ZC_FAILED_OPEN_BUYING_STORE_TO_BUYER
+
+// Packet: 0x0813
+packetLen(0x0813, -1) // ZC_MYITEMLIST_BUYING_STORE
+
+// Packet: 0x0814
+packetLen(0x0814, 86) // ZC_BUYING_STORE_ENTRY
+
+// Packet: 0x0815
+#if PACKETVER >= 20180213
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20180117
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20180103
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#endif
+
+// Packet: 0x0816
+packetLen(0x0816, 6) // ZC_DISAPPEAR_BUYING_STORE_ENTRY
+
+// Packet: 0x0817
+#if PACKETVER >= 20180321
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20180221
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20180213
+packetLen(0x0817, 90) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20180103
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#endif
+
+// Packet: 0x0818
+packetLen(0x0818, -1) // ZC_ACK_ITEMLIST_BUYING_STORE
+
+// Packet: 0x0819
+#if PACKETVER >= 20180321
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20180213
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20180207
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20180124
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20180117
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20180103
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#endif
+
+// Packet: 0x081a
+packetLen(0x081a, 4) // ZC_FAILED_TRADE_BUYING_STORE_TO_BUYER
+
+// Packet: 0x081b
+#if PACKETVER >= 20180704
+packetLen(0x081b, 12) // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+#elif PACKETVER >= 20180103
+packetLen(0x081b, 10) // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+#endif
+
+// Packet: 0x081c
+packetLen(0x081c, 10) // ZC_ITEM_DELETE_BUYING_STORE
+
+// Packet: 0x081d
+packetLen(0x081d, 22) // ZC_EL_INIT
+
+// Packet: 0x081e
+packetLen(0x081e, 8) // ZC_EL_PAR_CHANGE
+
+// Packet: 0x081f
+packetLen(0x081f, -1) // ZC_BROADCAST4
+
+// Packet: 0x0820
+packetLen(0x0820, 11) // ZC_COSTUME_SPRITE_CHANGE
+
+// Packet: 0x0821
+packetLen(0x0821, 2) // AC_OTP_USER
+
+// Packet: 0x0822
+packetLen(0x0822, 9) // CA_OTP_AUTH_REQ
+
+// Packet: 0x0823
+packetLen(0x0823, -1) // AC_OTP_AUTH_ACK
+
+// Packet: 0x0824
+#if PACKETVER >= 20180704
+packetLen(0x0824, 8) // ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER
+#elif PACKETVER >= 20180103
+packetLen(0x0824, 6) // ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER
+#endif
+
+// Packet: 0x0825
+packetLen(0x0825, -1) // CA_SSO_LOGIN_REQ
+
+// Packet: 0x0827
+packetLen(0x0827, 6) // CH_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0828
+packetLen(0x0828, 14) // HC_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0829
+packetLen(0x0829, 12) // CH_DELETE_CHAR3
+
+// Packet: 0x082a
+packetLen(0x082a, 10) // HC_DELETE_CHAR3
+
+// Packet: 0x082b
+packetLen(0x082b, 6) // CH_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082c
+packetLen(0x082c, 10) // HC_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082d
+packetLen(0x082d, -1) // HC_ACCEPT_ENTER2
+
+// Packet: 0x0835
+#if PACKETVER >= 20180321
+packetLen(0x0835, -1) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20180103
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#endif
+
+// Packet: 0x0836
+packetLen(0x0836, -1) // ZC_SEARCH_STORE_INFO_ACK
+
+// Packet: 0x0837
+packetLen(0x0837, 3) // ZC_SEARCH_STORE_INFO_FAILED
+
+// Packet: 0x0838
+#if PACKETVER >= 20180307
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20180221
+packetLen(0x0838, 5) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20180213
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20180117
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20180103
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#endif
+
+// Packet: 0x0839
+packetLen(0x0839, 66) // ZC_ACK_BAN_GUILD_SSO
+
+// Packet: 0x083a
+packetLen(0x083a, 5) // ZC_OPEN_SEARCH_STORE_INFO
+
+// Packet: 0x083b
+packetLen(0x083b, 2) // CZ_CLOSE_SEARCH_STORE_INFO
+
+// Packet: 0x083c
+#if PACKETVER >= 20180704
+packetLen(0x083c, 14) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20180321
+packetLen(0x083c, 12) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20180213
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20180117
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20180103
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#endif
+
+// Packet: 0x083d
+packetLen(0x083d, 6) // ZC_SSILIST_ITEM_CLICK_ACK
+
+// Packet: 0x083e
+packetLen(0x083e, 26) // AC_REFUSE_LOGIN2
+
+// Packet: 0x0840
+packetLen(0x0840, -1) // HC_NOTIFY_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0841
+packetLen(0x0841, 4) // CH_SELECT_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0842
+packetLen(0x0842, 6) // CZ_RECALL_SSO
+
+// Packet: 0x0843
+packetLen(0x0843, 6) // CZ_REMOVE_AID_SSO
+
+// Packet: 0x0844
+packetLen(0x0844, 2) // CZ_SE_CASHSHOP_OPEN
+
+// Packet: 0x0845
+packetLen(0x0845, 10) // ZC_SE_CASHSHOP_OPEN
+
+// Packet: 0x0846
+packetLen(0x0846, 4) // CZ_REQ_SE_CASH_TAB_CODE
+
+// Packet: 0x0847
+packetLen(0x0847, -1) // ZC_ACK_SE_CASH_ITEM_LIST
+
+// Packet: 0x0848
+packetLen(0x0848, -1) // CZ_SE_PC_BUY_CASHITEM_LIST
+
+// Packet: 0x0849
+packetLen(0x0849, 16) // ZC_SE_PC_BUY_CASHITEM_RESULT
+
+// Packet: 0x084a
+packetLen(0x084a, 2) // CZ_SE_CASHSHOP_CLOSE
+
+// Packet: 0x084b
+#if PACKETVER >= 20180704
+packetLen(0x084b, 21) // ZC_ITEM_FALL_ENTRY4
+#elif PACKETVER >= 20180103
+packetLen(0x084b, 19) // ZC_ITEM_FALL_ENTRY4
+#endif
+
+// Packet: 0x084c
+packetLen(0x084c, 10) // CZ_MACRO_USE_SKILL
+
+// Packet: 0x084d
+packetLen(0x084d, 10) // CZ_MACRO_USE_SKILL_TOGROUND
+
+// Packet: 0x084e
+packetLen(0x084e, 5) // CZ_MACRO_REQUEST_MOVE
+
+// Packet: 0x084f
+packetLen(0x084f, 6) // CZ_MACRO_ITEM_PICKUP
+
+// Packet: 0x0850
+packetLen(0x0850, 7) // CZ_MACRO_REQUEST_ACT
+
+// Packet: 0x0851
+packetLen(0x0851, -1) // ZC_GPK_DYNCODE
+
+// Packet: 0x0852
+packetLen(0x0852, 2) // CZ_GPK_DYNCODE_RELOAD
+
+// Packet: 0x0853
+packetLen(0x0853, -1) // ZC_GPK_AUTH
+
+// Packet: 0x0854
+packetLen(0x0854, -1) // CZ_GPK_AUTH
+
+// Packet: 0x0855
+packetLen(0x0855, 6) // ZC_MACRO_ITEMPICKUP_FAIL
+
+// Packet: 0x0856
+packetLen(0x0856, -1) // ZC_NOTIFY_MOVEENTRY8
+
+// Packet: 0x0857
+packetLen(0x0857, -1) // ZC_NOTIFY_STANDENTRY7
+
+// Packet: 0x0858
+packetLen(0x0858, -1) // ZC_NOTIFY_NEWENTRY6
+
+// Packet: 0x0859
+packetLen(0x0859, -1) // ZC_EQUIPWIN_MICROSCOPE2
+
+// Packet: 0x085a
+#if PACKETVER >= 20180221
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20180213
+packetLen(0x085a, 12) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20180103
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x085b
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+
+// Packet: 0x085c
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+
+// Packet: 0x085d
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+
+// Packet: 0x085e
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+
+// Packet: 0x085f
+#if PACKETVER >= 20180207
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20180124
+packetLen(0x085f, 36) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20180103
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x0860
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+
+// Packet: 0x0861
+#if PACKETVER >= 20180321
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20180307
+packetLen(0x0861, 90) // ZC_REASSEMBLY_AUTH08
+#elif PACKETVER >= 20180103
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+#endif
+
+// Packet: 0x0862
+#if PACKETVER >= 20180321
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20180307
+packetLen(0x0862, 6) // ZC_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20180103
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x0863
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+
+// Packet: 0x0864
+#if PACKETVER >= 20180321
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20180307
+packetLen(0x0864, -1) // ZC_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20180103
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x0865
+#if PACKETVER >= 20180117
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20180103
+packetLen(0x0865, 4) // ZC_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0866
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+
+// Packet: 0x0867
+#if PACKETVER >= 20180307
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20180221
+packetLen(0x0867, -1) // ZC_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20180103
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0868
+#if PACKETVER >= 20180207
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20180124
+packetLen(0x0868, 4) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20180103
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0869
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+
+// Packet: 0x086a
+#if PACKETVER >= 20180207
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20180124
+packetLen(0x086a, 18) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20180103
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x086b
+#if PACKETVER >= 20180117
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20180103
+packetLen(0x086b, -1) // ZC_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x086c
+#if PACKETVER >= 20180321
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20180221
+packetLen(0x086c, 6) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20180103
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x086d
+#if PACKETVER >= 20180117
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20180103
+packetLen(0x086d, 12) // ZC_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x086e
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+
+// Packet: 0x086f
+#if PACKETVER >= 20180307
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20180221
+packetLen(0x086f, -1) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20180213
+packetLen(0x086f, 26) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20180207
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20180124
+packetLen(0x086f, 8) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20180103
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x0870
+#if PACKETVER >= 20180321
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20180307
+packetLen(0x0870, -1) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20180213
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20180207
+packetLen(0x0870, 19) // ZC_REASSEMBLY_AUTH23
+#elif PACKETVER >= 20180103
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+#endif
+
+// Packet: 0x0871
+#if PACKETVER >= 20180307
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20180221
+packetLen(0x0871, 6) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20180103
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x0872
+#if PACKETVER >= 20180321
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20180307
+packetLen(0x0872, 18)
+#elif PACKETVER >= 20180117
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20180103
+packetLen(0x0872, 6)
+#endif
+
+// Packet: 0x0873
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+
+// Packet: 0x0874
+#if PACKETVER >= 20180221
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20180213
+packetLen(0x0874, 6) // ZC_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20180103
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x0875
+#if PACKETVER >= 20180221
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20180213
+packetLen(0x0875, 8) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20180124
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20180117
+packetLen(0x0875, 36) // ZC_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20180103
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x0876
+#if PACKETVER >= 20180307
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20180221
+packetLen(0x0876, 5) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20180117
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+#elif PACKETVER >= 20180103
+packetLen(0x0876, 6) // ZC_REASSEMBLY_AUTH29
+#endif
+
+// Packet: 0x0877
+#if PACKETVER >= 20180321
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20180307
+packetLen(0x0877, 5) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20180103
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x0878
+#if PACKETVER >= 20180221
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20180213
+packetLen(0x0878, 5) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20180103
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x0879
+#if PACKETVER >= 20180307
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20180221
+packetLen(0x0879, 8) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20180117
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20180103
+packetLen(0x0879, -1) // ZC_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x087a
+#if PACKETVER >= 20180207
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20180124
+packetLen(0x087a, 26) // ZC_REASSEMBLY_AUTH33
+#elif PACKETVER >= 20180103
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+#endif
+
+// Packet: 0x087b
+#if PACKETVER >= 20180221
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20180213
+packetLen(0x087b, 6) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20180103
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x087c
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+
+// Packet: 0x087d
+#if PACKETVER >= 20180307
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20180221
+packetLen(0x087d, 5) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20180103
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x087e
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+
+// Packet: 0x087f
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+
+// Packet: 0x0880
+#if PACKETVER >= 20180307
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20180221
+packetLen(0x0880, -1) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20180103
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x0881
+#if PACKETVER >= 20180307
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20180221
+packetLen(0x0881, 18) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20180213
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20180207
+packetLen(0x0881, 26) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20180103
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x0882
+#if PACKETVER >= 20180221
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20180213
+packetLen(0x0882, 10) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20180103
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x0883
+#if PACKETVER >= 20180307
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20180221
+packetLen(0x0883, -1) // ZC_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20180103
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x0884
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+
+// Packet: 0x0885
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+
+// Packet: 0x0886
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+
+// Packet: 0x0887
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+
+// Packet: 0x0888
+#if PACKETVER >= 20180207
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20180124
+packetLen(0x0888, 19) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20180103
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x0889
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+
+// Packet: 0x088a
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+
+// Packet: 0x088b
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+
+// Packet: 0x088c
+#if PACKETVER >= 20180221
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20180213
+packetLen(0x088c, -1) // CZ_REASSEMBLY_AUTH09
+#elif PACKETVER >= 20180103
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+#endif
+
+// Packet: 0x088d
+#if PACKETVER >= 20180321
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20180307
+packetLen(0x088d, 8) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20180103
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x088e
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+
+// Packet: 0x088f
+#if PACKETVER >= 20180307
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20180221
+packetLen(0x088f, 6) // CZ_REASSEMBLY_AUTH12
+#elif PACKETVER >= 20180103
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+#endif
+
+// Packet: 0x0890
+#if PACKETVER >= 20180207
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20180124
+packetLen(0x0890, 8) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20180103
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0891
+#if PACKETVER >= 20180307
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20180221
+packetLen(0x0891, 4) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20180103
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0892
+#if PACKETVER >= 20180221
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20180213
+packetLen(0x0892, 6) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20180103
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0893
+#if PACKETVER >= 20180321
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20180307
+packetLen(0x0893, 10) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20180103
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x0894
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+
+// Packet: 0x0895
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+
+// Packet: 0x0896
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+
+// Packet: 0x0897
+#if PACKETVER >= 20180307
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20180221
+packetLen(0x0897, 19) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20180103
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x0898
+#if PACKETVER >= 20180221
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20180213
+packetLen(0x0898, -1) // CZ_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20180103
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x0899
+#if PACKETVER >= 20180117
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20180103
+packetLen(0x0899, 26) // CZ_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x089a
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+
+// Packet: 0x089b
+#if PACKETVER >= 20180321
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20180307
+packetLen(0x089b, 12) // CZ_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20180103
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x089c
+#if PACKETVER >= 20180221
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20180213
+packetLen(0x089c, 4) // CZ_REASSEMBLY_AUTH25
+#elif PACKETVER >= 20180103
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+#endif
+
+// Packet: 0x089d
+#if PACKETVER >= 20180307
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20180221
+packetLen(0x089d, 6) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20180103
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x089e
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+
+// Packet: 0x089f
+#if PACKETVER >= 20180117
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+#elif PACKETVER >= 20180103
+packetLen(0x089f, 6) // CZ_REASSEMBLY_AUTH28
+#endif
+
+// Packet: 0x08a0
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+
+// Packet: 0x08a1
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+
+// Packet: 0x08a2
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+
+// Packet: 0x08a3
+#if PACKETVER >= 20180221
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20180213
+packetLen(0x08a3, 19) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20180103
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x08a4
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+
+// Packet: 0x08a5
+#if PACKETVER >= 20180221
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20180213
+packetLen(0x08a5, -1) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20180103
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x08a6
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+
+// Packet: 0x08a7
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+
+// Packet: 0x08a8
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+
+// Packet: 0x08a9
+#if PACKETVER >= 20180117
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+#elif PACKETVER >= 20180103
+packetLen(0x08a9, 5) // CZ_REASSEMBLY_AUTH38
+#endif
+
+// Packet: 0x08aa
+#if PACKETVER >= 20180321
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20180307
+packetLen(0x08aa, 26) // CZ_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20180103
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x08ab
+#if PACKETVER >= 20180321
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20180307
+packetLen(0x08ab, 5) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20180117
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20180103
+packetLen(0x08ab, 6) // CZ_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x08ac
+#if PACKETVER >= 20180117
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20180103
+packetLen(0x08ac, -1) // CZ_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x08ad
+#if PACKETVER >= 20180221
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20180213
+packetLen(0x08ad, 6) // CZ_REASSEMBLY_AUTH42
+#elif PACKETVER >= 20180103
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+#endif
+
+// Packet: 0x08af
+packetLen(0x08af, 10) // HC_WAITING_LOGIN
+
+// Packet: 0x08b0
+packetLen(0x08b0, 17) // CH_WAITING_LOGIN
+
+// Packet: 0x08b1
+packetLen(0x08b1, -1) // ZC_MCSTORE_NOTMOVEITEM_LIST
+
+// Packet: 0x08b2
+packetLen(0x08b2, -1) // AC_REALNAME_AUTH
+
+// Packet: 0x08b3
+packetLen(0x08b3, -1) // ZC_SHOWSCRIPT
+
+// Packet: 0x08b4
+packetLen(0x08b4, 2) // ZC_START_COLLECTION
+
+// Packet: 0x08b5
+packetLen(0x08b5, 6) // CZ_TRYCOLLECTION
+
+// Packet: 0x08b6
+packetLen(0x08b6, 3) // ZC_TRYCOLLECTION
+
+// Packet: 0x08b8
+packetLen(0x08b8, 10) // CH_SECOND_PASSWD_ACK
+
+// Packet: 0x08b9
+packetLen(0x08b9, 12) // HC_SECOND_PASSWD_LOGIN
+
+// Packet: 0x08ba
+packetLen(0x08ba, 10) // CH_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bb
+packetLen(0x08bb, 8) // HC_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bc
+packetLen(0x08bc, 10) // CH_DELETE_SECOND_PASSWD
+
+// Packet: 0x08bd
+packetLen(0x08bd, 8) // HC_DELETE_SECOND_PASSWD
+
+// Packet: 0x08be
+packetLen(0x08be, 14) // CH_EDIT_SECOND_PASSWD
+
+// Packet: 0x08bf
+packetLen(0x08bf, 8) // HC_EDIT_SECOND_PASSWD
+
+// Packet: 0x08c0
+packetLen(0x08c0, -1) // ZC_ACK_SE_CASH_ITEM_LIST2
+
+// Packet: 0x08c1
+packetLen(0x08c1, 2) // CZ_MACRO_START
+
+// Packet: 0x08c2
+packetLen(0x08c2, 2) // CZ_MACRO_STOP
+
+// Packet: 0x08c3
+packetLen(0x08c3, 10) // CH_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c4
+packetLen(0x08c4, 8) // HC_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c5
+packetLen(0x08c5, 6) // CH_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c6
+packetLen(0x08c6, 4) // HC_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c7
+packetLen(0x08c7, -1) // ZC_SKILL_ENTRY3
+
+// Packet: 0x08c8
+packetLen(0x08c8, 34) // ZC_NOTIFY_ACT3
+
+// Packet: 0x08c9
+packetLen(0x08c9, 2) // CZ_REQ_SCHEDULER_CASHITEM
+
+// Packet: 0x08ca
+packetLen(0x08ca, -1) // ZC_ACK_SCHEDULER_CASHITEM
+
+// Packet: 0x08cb
+packetLen(0x08cb, -1) // ZC_PERSONAL_INFOMATION
+
+// Packet: 0x08cc
+packetLen(0x08cc, 109) // CA_LOGIN5
+
+// Packet: 0x08cd
+packetLen(0x08cd, 10) // ZC_STOPMOVE_FORCE
+
+// Packet: 0x08ce
+packetLen(0x08ce, 2) // ZC_FAILED_GET_ITEM_FROM_ZONEDA
+
+// Packet: 0x08cf
+packetLen(0x08cf, 10) // ZC_SPIRITS_ATTRIBUTE
+
+// Packet: 0x08d0
+packetLen(0x08d0, 9) // ZC_REQ_WEAR_EQUIP_ACK2
+
+// Packet: 0x08d1
+packetLen(0x08d1, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK2
+
+// Packet: 0x08d2
+packetLen(0x08d2, 10) // ZC_FASTMOVE
+
+// Packet: 0x08d3
+packetLen(0x08d3, 10) // ZC_SE_CASHSHOP_UPDATE
+
+// Packet: 0x08d4
+packetLen(0x08d4, 8) // CH_REQ_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d5
+packetLen(0x08d5, -1) // HC_ACK_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d6
+packetLen(0x08d6, 6) // ZC_CLEAR_DIALOG
+
+// Packet: 0x08d7
+packetLen(0x08d7, 28) // CZ_REQ_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d8
+packetLen(0x08d8, 27) // ZC_ACK_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d9
+packetLen(0x08d9, 30) // ZC_NOTIFY_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08da
+packetLen(0x08da, 26) // CZ_REQ_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08db
+packetLen(0x08db, 27) // ZC_ACK_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08dc
+packetLen(0x08dc, 26) // ZC_NOTIFY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08dd
+packetLen(0x08dd, 27) // CZ_REPLY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08de
+packetLen(0x08de, 27) // ZC_REPLY_ACK_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08df
+packetLen(0x08df, 50) // ZC_NOTIFY_LOBBY_ADMISSION
+
+// Packet: 0x08e0
+packetLen(0x08e0, 51) // CZ_REPLY_LOBBY_ADMISSION
+
+// Packet: 0x08e1
+packetLen(0x08e1, 51) // ZC_REPLY_ACK_LOBBY_ADMISSION
+
+// Packet: 0x08e2
+packetLen(0x08e2, 27) // ZC_NAVIGATION_ACTIVE
+
+// Packet: 0x08e3
+packetLen(0x08e3, 157) // HC_UPDATE_CHARINFO
+
+// Packet: 0x08e4
+packetLen(0x08e4, 6) // AC_SHUTDOWN_INFO
+
+// Packet: 0x08fc
+packetLen(0x08fc, 30) // CH_REQ_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fd
+packetLen(0x08fd, 6) // CH_ACK_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fe
+packetLen(0x08fe, -1) // ZC_HUNTING_QUEST_INFO
+
+// Packet: 0x08ff
+packetLen(0x08ff, 24) // ZC_EFST_SET_ENTER
+
+// Packet: 0x0900
+packetLen(0x0900, -1) // ZC_INVENTORY_ITEMLIST_NORMAL
+
+// Packet: 0x0901
+packetLen(0x0901, -1) // ZC_INVENTORY_ITEMLIST_EQUIP
+
+// Packet: 0x0902
+packetLen(0x0902, -1) // ZC_CART_ITEMLIST_NORMAL
+
+// Packet: 0x0903
+packetLen(0x0903, -1) // ZC_CART_ITEMLIST_EQUIP
+
+// Packet: 0x0904
+packetLen(0x0904, -1) // ZC_STORE_ITEMLIST_NORMAL
+
+// Packet: 0x0905
+packetLen(0x0905, -1) // ZC_STORE_ITEMLIST_EQUIP
+
+// Packet: 0x0906
+packetLen(0x0906, -1) // ZC_MICROSCOPE
+
+// Packet: 0x0907
+packetLen(0x0907, 5) // CZ_INVENTORY_TAB
+
+// Packet: 0x0908
+packetLen(0x0908, 5) // ZC_INVENTORY_TAB
+
+// Packet: 0x090a
+packetLen(0x090a, 26) // CZ_REQ_ENTRY_QUEUE_RANKING
+
+// Packet: 0x090d
+packetLen(0x090d, -1) // ZC_PREMIUM_CAMPAIGN_INFO
+
+// Packet: 0x090e
+packetLen(0x090e, 2) // ZC_ENTRY_QUEUE_INIT
+
+// Packet: 0x090f
+packetLen(0x090f, -1) // ZC_NOTIFY_NEWENTRY7
+
+// Packet: 0x0910
+packetLen(0x0910, 10) // CZ_REQ_PARTY_NAME
+
+// Packet: 0x0911
+packetLen(0x0911, 30) // ZC_ACK_PARTY_NAME
+
+// Packet: 0x0912
+packetLen(0x0912, 10) // CZ_REQ_GUILD_NAME
+
+// Packet: 0x0913
+packetLen(0x0913, 30) // ZC_ACK_GUILD_NAME
+
+// Packet: 0x0914
+packetLen(0x0914, -1) // ZC_NOTIFY_MOVEENTRY9
+
+// Packet: 0x0915
+packetLen(0x0915, -1) // ZC_NOTIFY_STANDENTRY8
+
+// Packet: 0x0916
+packetLen(0x0916, 26) // CZ_REQ_JOIN_GUILD2
+
+// Packet: 0x0917
+#if PACKETVER >= 20180321
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20180307
+packetLen(0x0917, 10) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20180221
+packetLen(0x0917, 36) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20180213
+packetLen(0x0917, 26) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20180103
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#endif
+
+// Packet: 0x0918
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+
+// Packet: 0x0919
+#if PACKETVER >= 20180207
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20180124
+packetLen(0x0919, 26) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20180103
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#endif
+
+// Packet: 0x091a
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+
+// Packet: 0x091b
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+
+// Packet: 0x091c
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+
+// Packet: 0x091d
+#if PACKETVER >= 20180117
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20180103
+packetLen(0x091d, 7) // ZC_REASSEMBLY_AUTH49
+#endif
+
+// Packet: 0x091e
+#if PACKETVER >= 20180307
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20180221
+packetLen(0x091e, 8) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20180103
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#endif
+
+// Packet: 0x091f
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+
+// Packet: 0x0920
+#if PACKETVER >= 20180321
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20180307
+packetLen(0x0920, 8) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20180103
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#endif
+
+// Packet: 0x0921
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+
+// Packet: 0x0922
+#if PACKETVER >= 20180221
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20180213
+packetLen(0x0922, 5) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20180103
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#endif
+
+// Packet: 0x0923
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+
+// Packet: 0x0924
+#if PACKETVER >= 20180221
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20180213
+packetLen(0x0924, 10) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20180103
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#endif
+
+// Packet: 0x0925
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+
+// Packet: 0x0926
+#if PACKETVER >= 20180221
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20180213
+packetLen(0x0926, 8) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20180117
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20180103
+packetLen(0x0926, 8) // ZC_REASSEMBLY_AUTH58
+#endif
+
+// Packet: 0x0927
+#if PACKETVER >= 20180117
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20180103
+packetLen(0x0927, 18) // ZC_REASSEMBLY_AUTH59
+#endif
+
+// Packet: 0x0928
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+
+// Packet: 0x0929
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+
+// Packet: 0x092a
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+
+// Packet: 0x092b
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+
+// Packet: 0x092c
+#if PACKETVER >= 20180213
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20180207
+packetLen(0x092c, 5) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20180117
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20180103
+packetLen(0x092c, 8) // ZC_REASSEMBLY_AUTH64
+#endif
+
+// Packet: 0x092d
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+
+// Packet: 0x092e
+#if PACKETVER >= 20180213
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20180207
+packetLen(0x092e, 5) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20180103
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#endif
+
+// Packet: 0x092f
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+
+// Packet: 0x0930
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+
+// Packet: 0x0931
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+
+// Packet: 0x0932
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+
+// Packet: 0x0933
+#if PACKETVER >= 20180221
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20180213
+packetLen(0x0933, 7) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20180103
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#endif
+
+// Packet: 0x0934
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+
+// Packet: 0x0935
+#if PACKETVER >= 20180117
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20180103
+packetLen(0x0935, 6) // ZC_REASSEMBLY_AUTH73
+#endif
+
+// Packet: 0x0936
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+
+// Packet: 0x0937
+#if PACKETVER >= 20180321
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20180307
+packetLen(0x0937, -1) // ZC_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20180103
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+#endif
+
+// Packet: 0x0938
+#if PACKETVER >= 20180117
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20180103
+packetLen(0x0938, 10) // ZC_REASSEMBLY_AUTH76
+#endif
+
+// Packet: 0x0939
+#if PACKETVER >= 20180321
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20180307
+packetLen(0x0939, 36) // ZC_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20180103
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+#endif
+
+// Packet: 0x093a
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+
+// Packet: 0x093b
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+
+// Packet: 0x093c
+#if PACKETVER >= 20180221
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20180213
+packetLen(0x093c, 6) // ZC_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20180103
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+#endif
+
+// Packet: 0x093d
+#if PACKETVER >= 20180307
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20180221
+packetLen(0x093d, 26) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20180103
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#endif
+
+// Packet: 0x093e
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+
+// Packet: 0x093f
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+
+// Packet: 0x0940
+#if PACKETVER >= 20180213
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20180207
+packetLen(0x0940, 6) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20180124
+packetLen(0x0940, -1) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20180103
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#endif
+
+// Packet: 0x0941
+#if PACKETVER >= 20180321
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20180307
+packetLen(0x0941, 6) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20180117
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20180103
+packetLen(0x0941, 5) // CZ_REASSEMBLY_AUTH43
+#endif
+
+// Packet: 0x0942
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+
+// Packet: 0x0943
+#if PACKETVER >= 20180221
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20180213
+packetLen(0x0943, 18) // CZ_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20180103
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+#endif
+
+// Packet: 0x0944
+#if PACKETVER >= 20180321
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20180307
+packetLen(0x0944, 5) // CZ_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20180103
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+#endif
+
+// Packet: 0x0945
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+
+// Packet: 0x0946
+#if PACKETVER >= 20180207
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20180124
+packetLen(0x0946, -1) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20180117
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20180103
+packetLen(0x0946, 36) // CZ_REASSEMBLY_AUTH48
+#endif
+
+// Packet: 0x0947
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+
+// Packet: 0x0948
+#if PACKETVER >= 20180321
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20180307
+packetLen(0x0948, 26) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20180117
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20180103
+packetLen(0x0948, 5) // CZ_REASSEMBLY_AUTH50
+#endif
+
+// Packet: 0x0949
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+
+// Packet: 0x094a
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+
+// Packet: 0x094b
+#if PACKETVER >= 20180307
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20180221
+packetLen(0x094b, 10) // CZ_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20180103
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+#endif
+
+// Packet: 0x094c
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+
+// Packet: 0x094d
+#if PACKETVER >= 20180307
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20180221
+packetLen(0x094d, 10) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20180207
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20180124
+packetLen(0x094d, 6) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20180103
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#endif
+
+// Packet: 0x094e
+#if PACKETVER >= 20180307
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20180221
+packetLen(0x094e, 6) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20180117
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20180103
+packetLen(0x094e, -1) // CZ_REASSEMBLY_AUTH56
+#endif
+
+// Packet: 0x094f
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+
+// Packet: 0x0950
+#if PACKETVER >= 20180213
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20180207
+packetLen(0x0950, 36) // CZ_REASSEMBLY_AUTH58
+#elif PACKETVER >= 20180103
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+#endif
+
+// Packet: 0x0951
+#if PACKETVER >= 20180321
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20180307
+packetLen(0x0951, 8) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20180103
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#endif
+
+// Packet: 0x0952
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+
+// Packet: 0x0953
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+
+// Packet: 0x0954
+#if PACKETVER >= 20180321
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20180307
+packetLen(0x0954, 6) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20180103
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#endif
+
+// Packet: 0x0955
+#if PACKETVER >= 20180221
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20180213
+packetLen(0x0955, 8) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20180103
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#endif
+
+// Packet: 0x0956
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+
+// Packet: 0x0957
+#if PACKETVER >= 20180321
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20180221
+packetLen(0x0957, 6) // CZ_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20180103
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+#endif
+
+// Packet: 0x0958
+#if PACKETVER >= 20180207
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20180124
+packetLen(0x0958, 5) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20180103
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#endif
+
+// Packet: 0x0959
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+
+// Packet: 0x095a
+#if PACKETVER >= 20180221
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20180213
+packetLen(0x095a, -1) // CZ_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20180103
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+#endif
+
+// Packet: 0x095b
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+
+// Packet: 0x095c
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+
+// Packet: 0x095d
+#if PACKETVER >= 20180117
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20180103
+packetLen(0x095d, 10) // CZ_REASSEMBLY_AUTH71
+#endif
+
+// Packet: 0x095e
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+
+// Packet: 0x095f
+#if PACKETVER >= 20180117
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+#elif PACKETVER >= 20180103
+packetLen(0x095f, 6) // CZ_REASSEMBLY_AUTH73
+#endif
+
+// Packet: 0x0960
+#if PACKETVER >= 20180117
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+#elif PACKETVER >= 20180103
+packetLen(0x0960, 90) // CZ_REASSEMBLY_AUTH74
+#endif
+
+// Packet: 0x0961
+#if PACKETVER >= 20180207
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20180124
+packetLen(0x0961, 5) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20180103
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#endif
+
+// Packet: 0x0962
+#if PACKETVER >= 20180221
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20180213
+packetLen(0x0962, 5) // CZ_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20180103
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+#endif
+
+// Packet: 0x0963
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+
+// Packet: 0x0964
+#if PACKETVER >= 20180307
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20180221
+packetLen(0x0964, 12) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20180103
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#endif
+
+// Packet: 0x0965
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+
+// Packet: 0x0966
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+
+// Packet: 0x0967
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+
+// Packet: 0x0968
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+
+// Packet: 0x0969
+#if PACKETVER >= 20180321
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20180307
+packetLen(0x0969, 7) // CZ_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20180103
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+#endif
+
+// Packet: 0x096a
+#if PACKETVER >= 20180307
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20180221
+packetLen(0x096a, 7) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20180213
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20180117
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20180103
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#endif
+
+// Packet: 0x096b
+packetLen(0x096b, 4) // ZC_PRNPC_STATE
+
+// Packet: 0x096c
+packetLen(0x096c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+
+// Packet: 0x096d
+packetLen(0x096d, -1) // ZC_MERGE_ITEM_OPEN
+
+// Packet: 0x096e
+packetLen(0x096e, -1) // CZ_REQ_MERGE_ITEM
+
+// Packet: 0x096f
+packetLen(0x096f, 7) // ZC_ACK_MERGE_ITEM
+
+// Packet: 0x0970
+packetLen(0x0970, 31) // CH_MAKE_CHAR_NOT_STATS
+
+// Packet: 0x0971
+packetLen(0x0971, 6) // ZC_PARTY_RECRUIT_REFUSE_VOLUNTEER_TO_PM
+
+// Packet: 0x0972
+packetLen(0x0972, -1) // ZC_SAY_DIALOG2
+
+// Packet: 0x0973
+packetLen(0x0973, 7) // ZC_WAIT_DIALOG2
+
+// Packet: 0x0974
+packetLen(0x0974, 2) // CZ_CANCEL_MERGE_ITEM
+
+// Packet: 0x0975
+packetLen(0x0975, -1) // ZC_STORE_ITEMLIST_NORMAL_V2
+
+// Packet: 0x0976
+packetLen(0x0976, -1) // ZC_STORE_ITEMLIST_EQUIP_V2
+
+// Packet: 0x0977
+packetLen(0x0977, 14) // ZC_HP_INFO
+
+// Packet: 0x0978
+packetLen(0x0978, 6) // CZ_REQ_BEFORE_WORLD_INFO
+
+// Packet: 0x0979
+packetLen(0x0979, 50) // ZC_ACK_BEFORE_WORLD_INFO
+
+// Packet: 0x097a
+packetLen(0x097a, -1) // ZC_ALL_QUEST_LIST2
+
+// Packet: 0x097b
+packetLen(0x097b, -1) // ZC_PERSONAL_INFOMATION2
+
+// Packet: 0x097c
+packetLen(0x097c, 4) // CZ_REQ_RANKING
+
+// Packet: 0x097d
+packetLen(0x097d, 288) // ZC_ACK_RANKING
+
+// Packet: 0x097e
+packetLen(0x097e, 12) // ZC_UPDATE_RANKING_POINT
+
+// Packet: 0x097f
+packetLen(0x097f, -1) // ZC_SELECTCART
+
+// Packet: 0x0980
+packetLen(0x0980, 7) // CZ_SELECTCART
+
+// Packet: 0x0981
+packetLen(0x0981, -1) // ZC_PERSONAL_INFOMATION_CHN
+
+// Packet: 0x0982
+packetLen(0x0982, 7) // ZC_FATIGUE_CHN
+
+// Packet: 0x0983
+packetLen(0x0983, 29) // ZC_MSG_STATE_CHANGE3
+
+// Packet: 0x0984
+packetLen(0x0984, 28) // ZC_EFST_SET_ENTER2
+
+// Packet: 0x0985
+packetLen(0x0985, -1) // ZC_SKILL_POSTDELAY_LIST2
+
+// Packet: 0x0986
+packetLen(0x0986, 10) // AC_SHUTDOWN_NOTIFY
+
+// Packet: 0x0987
+packetLen(0x0987, -1) // CA_LOGIN6
+
+// Packet: 0x0988
+packetLen(0x0988, 6) // ZC_NOTIFY_CLAN_CONNECTINFO
+
+// Packet: 0x0989
+packetLen(0x0989, 2) // ZC_ACK_CLAN_LEAVE
+
+// Packet: 0x098a
+packetLen(0x098a, -1) // ZC_CLANINFO
+
+// Packet: 0x098b
+packetLen(0x098b, 2) // AC_REQ_NEW_USER
+
+// Packet: 0x098c
+packetLen(0x098c, 4) // CA_ACK_NEW_USER
+
+// Packet: 0x098d
+packetLen(0x098d, -1) // CZ_CLAN_CHAT
+
+// Packet: 0x098e
+packetLen(0x098e, -1) // ZC_NOTIFY_CLAN_CHAT
+
+// Packet: 0x098f
+packetLen(0x098f, -1) // CH_DELETE_CHAR3_EXT
+
+// Packet: 0x0990
+#if PACKETVER >= 20180704
+packetLen(0x0990, 41) // ZC_ITEM_PICKUP_ACK_V5
+#elif PACKETVER >= 20180103
+packetLen(0x0990, 31) // ZC_ITEM_PICKUP_ACK_V5
+#endif
+
+// Packet: 0x0991
+packetLen(0x0991, -1) // ZC_INVENTORY_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0992
+packetLen(0x0992, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0993
+packetLen(0x0993, -1) // ZC_CART_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0994
+packetLen(0x0994, -1) // ZC_CART_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0995
+packetLen(0x0995, -1) // ZC_STORE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0996
+packetLen(0x0996, -1) // ZC_STORE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0997
+packetLen(0x0997, -1) // ZC_EQUIPWIN_MICROSCOPE_V5
+
+// Packet: 0x0998
+packetLen(0x0998, 8) // CZ_REQ_WEAR_EQUIP_V5
+
+// Packet: 0x0999
+packetLen(0x0999, 11) // ZC_ACK_WEAR_EQUIP_V5
+
+// Packet: 0x099a
+packetLen(0x099a, 9) // ZC_ACK_TAKEOFF_EQUIP_V5
+
+// Packet: 0x099b
+packetLen(0x099b, 8) // ZC_MAPPROPERTY_R2
+
+// Packet: 0x099c
+packetLen(0x099c, 6) // CH_REQ_CHARINFO_PER_PAGE
+
+// Packet: 0x099d
+packetLen(0x099d, -1) // HC_ACK_CHARINFO_PER_PAGE
+
+// Packet: 0x099e
+packetLen(0x099e, 12) // HC_QUEUE_ORDER
+
+// Packet: 0x099f
+packetLen(0x099f, -1) // ZC_SKILL_ENTRY4
+
+// Packet: 0x09a0
+packetLen(0x09a0, 6) // HC_CHARLIST_NOTIFY
+
+// Packet: 0x09a1
+packetLen(0x09a1, 2) // CH_CHARLIST_REQ
+
+// Packet: 0x09a2
+packetLen(0x09a2, 6) // AC_REQ_MOBILE_OTP
+
+// Packet: 0x09a3
+packetLen(0x09a3, -1) // CA_ACK_MOBILE_OTP
+
+// Packet: 0x09a4
+packetLen(0x09a4, 18) // ZC_DISPATCH_TIMING_INFO_CHN
+
+// Packet: 0x09a5
+packetLen(0x09a5, 7) // AC_REFUSE_LOGIN3
+
+// Packet: 0x09a6
+packetLen(0x09a6, 12) // ZC_BANKING_CHECK
+
+// Packet: 0x09a7
+packetLen(0x09a7, 10) // CZ_REQ_BANKING_DEPOSIT
+
+// Packet: 0x09a8
+packetLen(0x09a8, 16) // ZC_ACK_BANKING_DEPOSIT
+
+// Packet: 0x09a9
+packetLen(0x09a9, 10) // CZ_REQ_BANKING_WITHDRAW
+
+// Packet: 0x09aa
+packetLen(0x09aa, 16) // ZC_ACK_BANKING_WITHDRAW
+
+// Packet: 0x09ab
+packetLen(0x09ab, 6) // CZ_REQ_BANKING_CHECK
+
+// Packet: 0x09ac
+packetLen(0x09ac, -1) // CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO
+
+// Packet: 0x09ad
+#if PACKETVER >= 20180704
+packetLen(0x09ad, 12) // ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO
+#elif PACKETVER >= 20180103
+packetLen(0x09ad, 10) // ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO
+#endif
+
+// Packet: 0x09ae
+#if PACKETVER >= 20180704
+packetLen(0x09ae, 19) // CZ_REQ_APPLY_BARGAIN_SALE_ITEM
+#elif PACKETVER >= 20180103
+packetLen(0x09ae, 17) // CZ_REQ_APPLY_BARGAIN_SALE_ITEM
+#endif
+
+// Packet: 0x09af
+packetLen(0x09af, 4) // ZC_ACK_APPLY_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b0
+#if PACKETVER >= 20180704
+packetLen(0x09b0, 10) // CZ_REQ_REMOVE_BARGAIN_SALE_ITEM
+#elif PACKETVER >= 20180103
+packetLen(0x09b0, 8) // CZ_REQ_REMOVE_BARGAIN_SALE_ITEM
+#endif
+
+// Packet: 0x09b1
+packetLen(0x09b1, 4) // ZC_ACK_REMOVE_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b2
+#if PACKETVER >= 20180704
+packetLen(0x09b2, 10) // ZC_NOTIFY_BARGAIN_SALE_SELLING
+#elif PACKETVER >= 20180103
+packetLen(0x09b2, 8) // ZC_NOTIFY_BARGAIN_SALE_SELLING
+#endif
+
+// Packet: 0x09b3
+#if PACKETVER >= 20180704
+packetLen(0x09b3, 6) // ZC_NOTIFY_BARGAIN_SALE_CLOSE
+#elif PACKETVER >= 20180103
+packetLen(0x09b3, 4) // ZC_NOTIFY_BARGAIN_SALE_CLOSE
+#endif
+
+// Packet: 0x09b4
+packetLen(0x09b4, 6) // CZ_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b5
+packetLen(0x09b5, 2) // ZC_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b6
+packetLen(0x09b6, 6) // CZ_REQ_OPEN_BANKING
+
+// Packet: 0x09b7
+packetLen(0x09b7, 4) // ZC_ACK_OPEN_BANKING
+
+// Packet: 0x09b8
+packetLen(0x09b8, 6) // CZ_REQ_CLOSE_BANKING
+
+// Packet: 0x09b9
+packetLen(0x09b9, 4) // ZC_ACK_CLOSE_BANKING
+
+// Packet: 0x09ba
+packetLen(0x09ba, 2) // CZ_REQ_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bb
+packetLen(0x09bb, 6) // ZC_ACK_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bc
+packetLen(0x09bc, 6) // CZ_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09bd
+packetLen(0x09bd, 2) // ZC_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09be
+packetLen(0x09be, 2) // CZ_REQ_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09bf
+packetLen(0x09bf, 4) // ZC_ACK_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09c1
+packetLen(0x09c1, 10) // ZC_C_MARKERINFO
+
+// Packet: 0x09c2
+packetLen(0x09c2, -1) // HC_SECRETSCAN_DATA
+
+// Packet: 0x09c3
+#if PACKETVER >= 20180704
+packetLen(0x09c3, 10) // CZ_REQ_COUNT_BARGAIN_SALE_ITEM
+#elif PACKETVER >= 20180103
+packetLen(0x09c3, 8) // CZ_REQ_COUNT_BARGAIN_SALE_ITEM
+#endif
+
+// Packet: 0x09c4
+#if PACKETVER >= 20180704
+packetLen(0x09c4, 10) // ZC_ACK_COUNT_BARGAIN_SALE_ITEM
+#elif PACKETVER >= 20180103
+packetLen(0x09c4, 8) // ZC_ACK_COUNT_BARGAIN_SALE_ITEM
+#endif
+
+// Packet: 0x09c5
+packetLen(0x09c5, 1042) // CS_LOGIN_QUERY
+
+// Packet: 0x09c6
+packetLen(0x09c6, -1) // SC_LOGIN_ANSWER
+
+// Packet: 0x09c7
+packetLen(0x09c7, 18) // SC_LOGIN_ERROR
+
+// Packet: 0x09c8
+packetLen(0x09c8, -1) // CA_LOGIN_OTP
+
+// Packet: 0x09c9
+packetLen(0x09c9, -1) // SC_SOCT
+
+// Packet: 0x09ca
+packetLen(0x09ca, -1) // ZC_SKILL_ENTRY5
+
+// Packet: 0x09cb
+packetLen(0x09cb, 17) // ZC_USE_SKILL2
+
+// Packet: 0x09cc
+packetLen(0x09cc, -1) // ZC_SECRETSCAN_DATA
+
+// Packet: 0x09cd
+packetLen(0x09cd, 8) // ZC_MSG_COLOR
+
+// Packet: 0x09ce
+packetLen(0x09ce, 102) // CZ_ITEM_CREATE_EX
+
+// Packet: 0x09cf
+packetLen(0x09cf, -1) // ZC_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d0
+packetLen(0x09d0, -1) // CZ_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d1
+packetLen(0x09d1, 14) // ZC_PROGRESS_ACTOR
+
+// Packet: 0x09d2
+packetLen(0x09d2, -1) // ZC_GUILDSTORAGE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x09d3
+packetLen(0x09d3, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x09d4
+packetLen(0x09d4, 2) // CZ_NPC_TRADE_QUIT
+
+// Packet: 0x09d5
+packetLen(0x09d5, -1) // ZC_NPC_MARKET_OPEN
+
+// Packet: 0x09d6
+packetLen(0x09d6, -1) // CZ_NPC_MARKET_PURCHASE
+
+// Packet: 0x09d7
+packetLen(0x09d7, -1) // ZC_NPC_MARKET_PURCHASE_RESULT
+
+// Packet: 0x09d8
+packetLen(0x09d8, 2) // CZ_NPC_MARKET_CLOSE
+
+// Packet: 0x09d9
+packetLen(0x09d9, 4) // CZ_REQ_GUILDSTORAGE_LOG
+
+// Packet: 0x09da
+packetLen(0x09da, -1) // ZC_ACK_GUILDSTORAGE_LOG
+
+// Packet: 0x09db
+packetLen(0x09db, -1) // ZC_NOTIFY_MOVEENTRY10
+
+// Packet: 0x09dc
+packetLen(0x09dc, -1) // ZC_NOTIFY_NEWENTRY10
+
+// Packet: 0x09dd
+packetLen(0x09dd, -1) // ZC_NOTIFY_STANDENTRY10
+
+// Packet: 0x09de
+packetLen(0x09de, -1) // ZC_WHISPER02
+
+// Packet: 0x09df
+packetLen(0x09df, 7) // ZC_ACK_WHISPER02
+
+// Packet: 0x09e0
+packetLen(0x09e0, -1) // SC_LOGIN_ANSWER_WITH_ID
+
+// Packet: 0x09e1
+packetLen(0x09e1, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_GUILDSTORAGE
+
+// Packet: 0x09e2
+packetLen(0x09e2, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_BODY
+
+// Packet: 0x09e3
+packetLen(0x09e3, 8) // CZ_MOVE_ITEM_FROM_CART_TO_GUILDSTORAGE
+
+// Packet: 0x09e4
+packetLen(0x09e4, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_CART
+
+// Packet: 0x09e5
+packetLen(0x09e5, 18) // ZC_DELETEITEM_FROM_MCSTORE2
+
+// Packet: 0x09e6
+#if PACKETVER >= 20180704
+packetLen(0x09e6, 24) // ZC_UPDATE_ITEM_FROM_BUYING_STORE2
+#elif PACKETVER >= 20180103
+packetLen(0x09e6, 22) // ZC_UPDATE_ITEM_FROM_BUYING_STORE2
+#endif
+
+// Packet: 0x09e7
+packetLen(0x09e7, 3) // ZC_NOTIFY_UNREAD_RODEX
+
+// Packet: 0x09e8
+packetLen(0x09e8, 11) // CZ_OPEN_RODEXBOX
+
+// Packet: 0x09e9
+packetLen(0x09e9, 2) // CZ_CLOSE_RODEXBOX
+
+// Packet: 0x09ea
+packetLen(0x09ea, 11) // CZ_REQ_READ_RODEX
+
+// Packet: 0x09eb
+packetLen(0x09eb, -1) // ZC_ACK_READ_RODEX
+
+// Packet: 0x09ec
+packetLen(0x09ec, -1) // CZ_REQ_SEND_RODEX
+
+// Packet: 0x09ed
+packetLen(0x09ed, 3) // ZC_ACK_SEND_RODEX
+
+// Packet: 0x09ee
+packetLen(0x09ee, 11) // CZ_REQ_NEXT_RODEX
+
+// Packet: 0x09ef
+packetLen(0x09ef, 11) // CZ_REQ_REFRESH_RODEX
+
+// Packet: 0x09f0
+packetLen(0x09f0, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x09f1
+packetLen(0x09f1, 11) // CZ_REQ_ZENY_FROM_RODEX
+
+// Packet: 0x09f2
+packetLen(0x09f2, 12) // ZC_ACK_ZENY_FROM_RODEX
+
+// Packet: 0x09f3
+packetLen(0x09f3, 11) // CZ_REQ_ITEM_FROM_RODEX
+
+// Packet: 0x09f4
+packetLen(0x09f4, 12) // ZC_ACK_ITEM_FROM_RODEX
+
+// Packet: 0x09f5
+packetLen(0x09f5, 11) // CZ_REQ_DELETE_RODEX
+
+// Packet: 0x09f6
+packetLen(0x09f6, 11) // ZC_ACK_DELETE_RODEX
+
+// Packet: 0x09f7
+#if PACKETVER >= 20180704
+packetLen(0x09f7, 77) // ZC_PROPERTY_HOMUN_2
+#elif PACKETVER >= 20180103
+packetLen(0x09f7, 75) // ZC_PROPERTY_HOMUN_2
+#endif
+
+// Packet: 0x09f8
+packetLen(0x09f8, -1) // ZC_ALL_QUEST_LIST3
+
+// Packet: 0x09f9
+packetLen(0x09f9, 143) // ZC_ADD_QUEST_EX
+
+// Packet: 0x09fa
+packetLen(0x09fa, -1) // ZC_UPDATE_MISSION_HUNT_EX
+
+// Packet: 0x09fb
+packetLen(0x09fb, -1) // CZ_PET_EVOLUTION
+
+// Packet: 0x09fc
+packetLen(0x09fc, 6) // ZC_PET_EVOLUTION_RESULT
+
+// Packet: 0x09fd
+packetLen(0x09fd, -1) // ZC_NOTIFY_MOVEENTRY11
+
+// Packet: 0x09fe
+packetLen(0x09fe, -1) // ZC_NOTIFY_NEWENTRY11
+
+// Packet: 0x09ff
+packetLen(0x09ff, -1) // ZC_NOTIFY_STANDENTRY11
+
+// Packet: 0x0a00
+packetLen(0x0a00, 269) // ZC_SHORTCUT_KEY_LIST_V3
+
+// Packet: 0x0a01
+packetLen(0x0a01, 3) // CZ_SHORTCUTKEYBAR_ROTATE
+
+// Packet: 0x0a02
+packetLen(0x0a02, 4) // ZC_DRESSROOM_OPEN
+
+// Packet: 0x0a03
+packetLen(0x0a03, 2) // CZ_REQ_CANCEL_WRITE_RODEX
+
+// Packet: 0x0a04
+packetLen(0x0a04, 6) // CZ_REQ_ADD_ITEM_RODEX
+
+// Packet: 0x0a05
+#if PACKETVER >= 20180704
+packetLen(0x0a05, 63) // ZC_ACK_ADD_ITEM_RODEX
+#elif PACKETVER >= 20180103
+packetLen(0x0a05, 53) // ZC_ACK_ADD_ITEM_RODEX
+#endif
+
+// Packet: 0x0a06
+packetLen(0x0a06, 6) // CZ_REQ_REMOVE_RODEX_ITEM
+
+// Packet: 0x0a07
+packetLen(0x0a07, 9) // ZC_ACK_REMOVE_RODEX_ITEM
+
+// Packet: 0x0a08
+packetLen(0x0a08, 26) // CZ_REQ_OPEN_WRITE_RODEX
+
+// Packet: 0x0a09
+#if PACKETVER >= 20180704
+packetLen(0x0a09, 55) // ZC_ADD_EXCHANGE_ITEM3
+#elif PACKETVER >= 20180103
+packetLen(0x0a09, 45) // ZC_ADD_EXCHANGE_ITEM3
+#endif
+
+// Packet: 0x0a0a
+#if PACKETVER >= 20180704
+packetLen(0x0a0a, 57) // ZC_ADD_ITEM_TO_STORE3
+#elif PACKETVER >= 20180103
+packetLen(0x0a0a, 47) // ZC_ADD_ITEM_TO_STORE3
+#endif
+
+// Packet: 0x0a0b
+#if PACKETVER >= 20180704
+packetLen(0x0a0b, 57) // ZC_ADD_ITEM_TO_CART3
+#elif PACKETVER >= 20180103
+packetLen(0x0a0b, 47) // ZC_ADD_ITEM_TO_CART3
+#endif
+
+// Packet: 0x0a0c
+#if PACKETVER >= 20180704
+packetLen(0x0a0c, 66) // ZC_ITEM_PICKUP_ACK_V6
+#elif PACKETVER >= 20180103
+packetLen(0x0a0c, 56) // ZC_ITEM_PICKUP_ACK_V6
+#endif
+
+// Packet: 0x0a0d
+packetLen(0x0a0d, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a0e
+packetLen(0x0a0e, 14) // ZC_BATTLEFIELD_NOTIFY_HP2
+
+// Packet: 0x0a0f
+packetLen(0x0a0f, -1) // ZC_CART_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a10
+packetLen(0x0a10, -1) // ZC_STORE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a11
+packetLen(0x0a11, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a12
+packetLen(0x0a12, 27) // ZC_ACK_OPEN_WRITE_RODEX
+
+// Packet: 0x0a13
+packetLen(0x0a13, 26) // CZ_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a14
+packetLen(0x0a14, 10) // ZC_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a15
+packetLen(0x0a15, 12) // ZC_GOLDPCCAFE_POINT
+
+// Packet: 0x0a16
+packetLen(0x0a16, 26) // CZ_DYNAMICNPC_CREATE_REQUEST
+
+// Packet: 0x0a17
+packetLen(0x0a17, 6) // ZC_DYNAMICNPC_CREATE_RESULT
+
+// Packet: 0x0a18
+packetLen(0x0a18, 14) // ZC_ACCEPT_ENTER3
+
+// Packet: 0x0a19
+packetLen(0x0a19, 2) // CZ_REQ_OPEN_ROULETTE
+
+// Packet: 0x0a1a
+#if PACKETVER >= 20180704
+packetLen(0x0a1a, 25) // ZC_ACK_OPEN_ROULETTE
+#elif PACKETVER >= 20180103
+packetLen(0x0a1a, 23) // ZC_ACK_OPEN_ROULETTE
+#endif
+
+// Packet: 0x0a1b
+packetLen(0x0a1b, 2) // CZ_REQ_ROULETTE_INFO
+
+// Packet: 0x0a1c
+packetLen(0x0a1c, -1) // ZC_ACK_ROULEITTE_INFO
+
+// Packet: 0x0a1d
+packetLen(0x0a1d, 2) // CZ_REQ_CLOSE_ROULETTE
+
+// Packet: 0x0a1e
+packetLen(0x0a1e, 3) // ZC_ACK_CLOSE_ROULETTE
+
+// Packet: 0x0a1f
+packetLen(0x0a1f, 2) // CZ_REQ_GENERATE_ROULETTE
+
+// Packet: 0x0a20
+#if PACKETVER >= 20180704
+packetLen(0x0a20, 23) // ZC_ACK_GENERATE_ROULETTE
+#elif PACKETVER >= 20180103
+packetLen(0x0a20, 21) // ZC_ACK_GENERATE_ROULETTE
+#endif
+
+// Packet: 0x0a21
+packetLen(0x0a21, 3) // CZ_RECV_ROULETTE_ITEM
+
+// Packet: 0x0a22
+#if PACKETVER >= 20180704
+packetLen(0x0a22, 7) // ZC_RECV_ROULETTE_ITEM
+#elif PACKETVER >= 20180103
+packetLen(0x0a22, 5) // ZC_RECV_ROULETTE_ITEM
+#endif
+
+// Packet: 0x0a23
+packetLen(0x0a23, -1) // ZC_ALL_ACH_LIST
+
+// Packet: 0x0a24
+packetLen(0x0a24, 66) // ZC_ACH_UPDATE
+
+// Packet: 0x0a25
+packetLen(0x0a25, 6) // CZ_REQ_ACH_REWARD
+
+// Packet: 0x0a26
+packetLen(0x0a26, 7) // ZC_REQ_ACH_REWARD_ACK
+
+// Packet: 0x0a27
+packetLen(0x0a27, 8) // ZC_RECOVERY2
+
+// Packet: 0x0a28
+packetLen(0x0a28, 3) // ZC_ACK_OPENSTORE2
+
+// Packet: 0x0a29
+packetLen(0x0a29, 6) // ZC_REQ_AU_BOT
+
+// Packet: 0x0a2a
+packetLen(0x0a2a, 6) // CZ_ACK_AU_BOT
+
+// Packet: 0x0a2b
+packetLen(0x0a2b, 14) // ZC_SE_CASHSHOP_OPEN2
+
+// Packet: 0x0a2c
+packetLen(0x0a2c, 12) // ZC_SE_PC_BUY_TAIWANCASHITEM_RESULT
+
+// Packet: 0x0a2d
+packetLen(0x0a2d, -1) // ZC_EQUIPWIN_MICROSCOPE_V6
+
+// Packet: 0x0a2e
+packetLen(0x0a2e, 6) // CZ_REQ_CHANGE_TITLE
+
+// Packet: 0x0a2f
+packetLen(0x0a2f, 7) // ZC_ACK_CHANGE_TITLE
+
+// Packet: 0x0a30
+packetLen(0x0a30, 106) // ZC_ACK_REQNAMEALL2
+
+// Packet: 0x0a31
+packetLen(0x0a31, -1) // ZC_RESULT_PACKAGE_ITEM_TEST
+
+// Packet: 0x0a32
+packetLen(0x0a32, 2) // ZC_OPEN_RODEX_THROUGH_NPC_ONLY
+
+// Packet: 0x0a33
+packetLen(0x0a33, 7) // ZC_UPDATE_ROULETTE_COIN
+
+// Packet: 0x0a34
+packetLen(0x0a34, 6) // ZC_UPDATE_TAIWANCASH
+
+// Packet: 0x0a35
+packetLen(0x0a35, 4) // CZ_REQ_ONECLICK_ITEMIDENTIFY
+
+// Packet: 0x0a36
+packetLen(0x0a36, 7) // ZC_HP_INFO_TINY
+
+// Packet: 0x0a37
+#if PACKETVER >= 20180704
+packetLen(0x0a37, 69) // ZC_ITEM_PICKUP_ACK_V7
+#elif PACKETVER >= 20180103
+packetLen(0x0a37, 59) // ZC_ITEM_PICKUP_ACK_V7
+#endif
+
+// Packet: 0x0a38
+packetLen(0x0a38, 3) // ZC_OPEN_UI
+
+// Packet: 0x0a39
+packetLen(0x0a39, 36) // CH_MAKE_CHAR
+
+// Packet: 0x0a3a
+packetLen(0x0a3a, 12)
+
+// Packet: 0x0a3b
+packetLen(0x0a3b, -1) // ZC_CUSTOM_HAT_EFFECT
+
+// Packet: 0x0a3c
+packetLen(0x0a3c, -1)
+
+// Packet: 0x0a3d
+#if PACKETVER >= 20180704
+packetLen(0x0a3d, 20)
+#elif PACKETVER >= 20180103
+packetLen(0x0a3d, 18)
+#endif
+
+// Packet: 0x0a3e
+packetLen(0x0a3e, -1)
+
+// Packet: 0x0a3f
+#if PACKETVER >= 20180704
+packetLen(0x0a3f, 11)
+#elif PACKETVER >= 20180103
+packetLen(0x0a3f, 9)
+#endif
+
+// Packet: 0x0a40
+packetLen(0x0a40, 11)
+
+// Packet: 0x0a41
+packetLen(0x0a41, 18) // ZC_AOE_EFFECT_SKILL
+
+// Packet: 0x0a42
+packetLen(0x0a42, 43)
+
+// Packet: 0x0a43
+packetLen(0x0a43, 85) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0a44
+packetLen(0x0a44, -1) // ZC_GROUP_LIST
+
+// Packet: 0x0a46
+packetLen(0x0a46, 14)
+
+// Packet: 0x0a47
+packetLen(0x0a47, 3) // ZC_STYLE_CHANGE_RES
+
+// Packet: 0x0a48
+packetLen(0x0a48, 2)
+
+// Packet: 0x0a49
+#if PACKETVER >= 20180704
+packetLen(0x0a49, 22) // CZ_PRIVATE_AIRSHIP_REQUEST
+#elif PACKETVER >= 20180103
+packetLen(0x0a49, 20) // CZ_PRIVATE_AIRSHIP_REQUEST
+#endif
+
+// Packet: 0x0a4a
+packetLen(0x0a4a, 6) // ZC_PRIVATE_AIRSHIP_RESPONSE
+
+// Packet: 0x0a4b
+packetLen(0x0a4b, 22) // ZC_AIRSHIP_MAPMOVE
+
+// Packet: 0x0a4c
+packetLen(0x0a4c, 28) // ZC_AIRSHIP_SERVERMOVE
+
+// Packet: 0x0a4d
+packetLen(0x0a4d, -1)
+
+// Packet: 0x0a4e
+#if PACKETVER >= 20180704
+packetLen(0x0a4e, 6)
+#elif PACKETVER >= 20180103
+packetLen(0x0a4e, 4)
+#endif
+
+// Packet: 0x0a4f
+packetLen(0x0a4f, -1)
+
+// Packet: 0x0a50
+packetLen(0x0a50, 4)
+
+// Packet: 0x0a51
+packetLen(0x0a51, 34) // ZC_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a52
+packetLen(0x0a52, 20)
+
+// Packet: 0x0a53
+packetLen(0x0a53, 10)
+
+// Packet: 0x0a54
+packetLen(0x0a54, -1)
+
+// Packet: 0x0a55
+packetLen(0x0a55, 2)
+
+// Packet: 0x0a56
+packetLen(0x0a56, 6)
+
+// Packet: 0x0a57
+packetLen(0x0a57, 6)
+
+// Packet: 0x0a58
+packetLen(0x0a58, 8)
+
+// Packet: 0x0a59
+packetLen(0x0a59, -1)
+
+// Packet: 0x0a5a
+packetLen(0x0a5a, 2)
+
+// Packet: 0x0a5b
+packetLen(0x0a5b, 7)
+
+// Packet: 0x0a5c
+packetLen(0x0a5c, 18)
+
+// Packet: 0x0a5d
+packetLen(0x0a5d, 6)
+
+// Packet: 0x0a68
+packetLen(0x0a68, 3) // CZ_REQ_OPEN_UI
+
+// Packet: 0x0a69
+packetLen(0x0a69, 6)
+
+// Packet: 0x0a6a
+packetLen(0x0a6a, 12)
+
+// Packet: 0x0a6b
+packetLen(0x0a6b, -1)
+
+// Packet: 0x0a6c
+packetLen(0x0a6c, 7)
+
+// Packet: 0x0a6d
+packetLen(0x0a6d, -1)
+
+// Packet: 0x0a6e
+packetLen(0x0a6e, -1) // CZ_REQ_SEND_RODEX
+
+// Packet: 0x0a6f
+packetLen(0x0a6f, -1) // ZC_FORMATSTRING_MSG_COLOR
+
+// Packet: 0x0a70
+packetLen(0x0a70, 2)
+
+// Packet: 0x0a71
+packetLen(0x0a71, -1)
+
+// Packet: 0x0a72
+packetLen(0x0a72, 61)
+
+// Packet: 0x0a73
+packetLen(0x0a73, 2)
+
+// Packet: 0x0a74
+packetLen(0x0a74, 8)
+
+// Packet: 0x0a76
+packetLen(0x0a76, 80)
+
+// Packet: 0x0a77
+packetLen(0x0a77, 15)
+
+// Packet: 0x0a78
+packetLen(0x0a78, 15)
+
+// Packet: 0x0a79
+packetLen(0x0a79, -1)
+
+// Packet: 0x0a7b
+packetLen(0x0a7b, -1)
+
+// Packet: 0x0a7c
+packetLen(0x0a7c, -1)
+
+// Packet: 0x0a7d
+packetLen(0x0a7d, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x0a7e
+packetLen(0x0a7e, -1) // ZC_OFFLINE_STORE_OWNER_ITEMS_READY
+
+// Packet: 0x0a7f
+packetLen(0x0a7f, -1) // CZ_OFFLINE_STORE_CREATE
+
+// Packet: 0x0a80
+packetLen(0x0a80, 6)
+
+// Packet: 0x0a81
+packetLen(0x0a81, 4)
+
+// Packet: 0x0a82
+packetLen(0x0a82, 46)
+
+// Packet: 0x0a83
+packetLen(0x0a83, 46)
+
+// Packet: 0x0a84
+packetLen(0x0a84, 94) // ZC_GUILD_INFO
+
+// Packet: 0x0a85
+packetLen(0x0a85, 82)
+
+// Packet: 0x0a86
+packetLen(0x0a86, -1)
+
+// Packet: 0x0a87
+packetLen(0x0a87, -1)
+
+// Packet: 0x0a88
+packetLen(0x0a88, 2)
+
+// Packet: 0x0a89
+#if PACKETVER >= 20180704
+packetLen(0x0a89, 61) // ZC_NOTIFY_OFFLINE_STORE
+#elif PACKETVER >= 20180103
+packetLen(0x0a89, 57) // ZC_NOTIFY_OFFLINE_STORE
+#endif
+
+// Packet: 0x0a8a
+packetLen(0x0a8a, 6) // ZC_OFFLINE_STORE_VANISH
+
+// Packet: 0x0a8b
+packetLen(0x0a8b, 2)
+
+// Packet: 0x0a8c
+packetLen(0x0a8c, 2)
+
+// Packet: 0x0a8d
+packetLen(0x0a8d, -1) // ZC_OFFLINE_STORE_OWNER_ITEMS
+
+// Packet: 0x0a8e
+packetLen(0x0a8e, 2)
+
+// Packet: 0x0a8f
+packetLen(0x0a8f, 2)
+
+// Packet: 0x0a90
+packetLen(0x0a90, 3)
+
+// Packet: 0x0a91
+packetLen(0x0a91, -1) // ZC_OFFLINE_STORE_ITEMS
+
+// Packet: 0x0a92
+packetLen(0x0a92, -1)
+
+// Packet: 0x0a93
+packetLen(0x0a93, 3)
+
+// Packet: 0x0a94
+packetLen(0x0a94, 2)
+
+// Packet: 0x0a95
+packetLen(0x0a95, 4)
+
+// Packet: 0x0a96
+#if PACKETVER >= 20180704
+packetLen(0x0a96, 61) // ZC_ADD_EXCHANGE_ITEM4
+#elif PACKETVER >= 20180103
+packetLen(0x0a96, 51) // ZC_ADD_EXCHANGE_ITEM4
+#endif
+
+// Packet: 0x0a97
+packetLen(0x0a97, 8) // CZ_ALT_EQUIPMENT_EQUIP
+
+// Packet: 0x0a98
+packetLen(0x0a98, 10) // ZC_ALT_EQUIPMENT_EQUIP
+
+// Packet: 0x0a99
+packetLen(0x0a99, 4)
+
+// Packet: 0x0a9a
+packetLen(0x0a9a, 10) // ZC_ALT_EQUIPMENT_REMOVE
+
+// Packet: 0x0a9b
+packetLen(0x0a9b, -1) // ZC_ALT_EQUIPMENT_ITEMS
+
+// Packet: 0x0a9c
+packetLen(0x0a9c, 2)
+
+// Packet: 0x0a9d
+packetLen(0x0a9d, 4)
+
+// Packet: 0x0a9e
+packetLen(0x0a9e, 2)
+
+// Packet: 0x0a9f
+packetLen(0x0a9f, 2)
+
+// Packet: 0x0aa0
+packetLen(0x0aa0, 2) // ZC_REFINE_OPEN_WINDOW
+
+// Packet: 0x0aa1
+packetLen(0x0aa1, 4) // CZ_REFINE_ADD_ITEM
+
+// Packet: 0x0aa2
+packetLen(0x0aa2, -1) // ZC_REFINE_ADD_ITEM
+
+// Packet: 0x0aa3
+#if PACKETVER >= 20180704
+packetLen(0x0aa3, 9) // CZ_REFINE_ITEM_REQUEST
+#elif PACKETVER >= 20180103
+packetLen(0x0aa3, 7) // CZ_REFINE_ITEM_REQUEST
+#endif
+
+// Packet: 0x0aa4
+packetLen(0x0aa4, 2) // CZ_REFINE_WINDOW_CLOSE
+
+// Packet: 0x0aa5
+packetLen(0x0aa5, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0aa6
+packetLen(0x0aa6, 36) // ZC_MEMBER_ADD
+
+// Packet: 0x0aa7
+packetLen(0x0aa7, 6) // ZC_INVENTORY_MOVE_FAILED
+
+// Packet: 0x0aa8
+packetLen(0x0aa8, 5)
+
+// Packet: 0x0aa9
+packetLen(0x0aa9, -1)
+
+// Packet: 0x0aaa
+packetLen(0x0aaa, -1)
+
+// Packet: 0x0aab
+packetLen(0x0aab, -1)
+
+// Packet: 0x0aac
+packetLen(0x0aac, 69)
+
+// Packet: 0x0aad
+packetLen(0x0aad, 51)
+
+// Packet: 0x0aae
+packetLen(0x0aae, 2)
+
+// Packet: 0x0aaf
+packetLen(0x0aaf, 6)
+
+// Packet: 0x0ab0
+packetLen(0x0ab0, 6)
+
+// Packet: 0x0ab1
+packetLen(0x0ab1, 14)
+
+// Packet: 0x0ab2
+packetLen(0x0ab2, 7) // ZC_GROUP_ISALIVE
+
+// Packet: 0x0ab3
+packetLen(0x0ab3, 19)
+
+// Packet: 0x0ab4
+#if PACKETVER >= 20180704
+packetLen(0x0ab4, 6)
+#elif PACKETVER >= 20180103
+packetLen(0x0ab4, 4)
+#endif
+
+// Packet: 0x0ab5
+packetLen(0x0ab5, 2)
+
+// Packet: 0x0ab6
+#if PACKETVER >= 20180704
+packetLen(0x0ab6, 8)
+#elif PACKETVER >= 20180103
+packetLen(0x0ab6, 6)
+#endif
+
+// Packet: 0x0ab7
+packetLen(0x0ab7, 4)
+
+// Packet: 0x0ab8
+packetLen(0x0ab8, 2)
+
+// Packet: 0x0ab9
+#if PACKETVER >= 20180704
+packetLen(0x0ab9, 47) // ZC_ITEM_PREVIEW
+#elif PACKETVER >= 20180103
+packetLen(0x0ab9, 39) // ZC_ITEM_PREVIEW
+#endif
+
+// Packet: 0x0aba
+packetLen(0x0aba, 2)
+
+// Packet: 0x0abb
+packetLen(0x0abb, 2)
+
+// Packet: 0x0abc
+packetLen(0x0abc, -1)
+
+// Packet: 0x0abd
+packetLen(0x0abd, 10) // ZC_PARTY_MEMBER_JOB_LEVEL
+
+// Packet: 0x0abe
+packetLen(0x0abe, -1) // ZC_WARPLIST
+
+// Packet: 0x0abf
+packetLen(0x0abf, -1)
+
+// Packet: 0x0ac0
+packetLen(0x0ac0, 26) // CZ_OPEN_RODEXBOX
+
+// Packet: 0x0ac1
+packetLen(0x0ac1, 26) // CZ_REQ_REFRESH_RODEX
+
+// Packet: 0x0ac2
+packetLen(0x0ac2, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x0ac3
+packetLen(0x0ac3, 2)
+
+// Packet: 0x0ac4
+packetLen(0x0ac4, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x0ac5
+packetLen(0x0ac5, 156) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0ac6
+packetLen(0x0ac6, 156)
+
+// Packet: 0x0ac7
+packetLen(0x0ac7, 156) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0ac8
+packetLen(0x0ac8, 2) // ZC_UNKNOWN_CLEAN_ITEMS_LISTS
+
+// Packet: 0x0ac9
+packetLen(0x0ac9, -1)
+
+// Packet: 0x0aca
+packetLen(0x0aca, 3)
+
+// Packet: 0x0acb
+packetLen(0x0acb, 12) // ZC_PAR_CHANGE
+
+// Packet: 0x0acc
+packetLen(0x0acc, 18) // ZC_NOTIFY_EXP
+
+// Packet: 0x0acd
+packetLen(0x0acd, 23)
+
+// Packet: 0x0ace
+packetLen(0x0ace, 4)
+
+// Packet: 0x0acf
+packetLen(0x0acf, 68) // CA_LOGIN_OTP
+
+// Packet: 0x0ad0
+packetLen(0x0ad0, 11) // CA_OTP_CODE
+
+// Packet: 0x0ad1
+packetLen(0x0ad1, -1)
+
+// Packet: 0x0ad2
+packetLen(0x0ad2, 30)
+
+// Packet: 0x0ad3
+packetLen(0x0ad3, -1)
+
+// Packet: 0x0ad4
+packetLen(0x0ad4, -1)
+
+// Packet: 0x0ad5
+packetLen(0x0ad5, 2)
+
+// Packet: 0x0ad6
+packetLen(0x0ad6, 2)
+
+// Packet: 0x0ad7
+packetLen(0x0ad7, 8)
+
+// Packet: 0x0ad8
+packetLen(0x0ad8, 8)
+
+// Packet: 0x0ad9
+packetLen(0x0ad9, -1)
+
+// Packet: 0x0ada
+#if PACKETVER >= 20180704
+packetLen(0x0ada, 32) // ZC_REFINE_STATUS
+#elif PACKETVER >= 20180103
+packetLen(0x0ada, 30) // ZC_REFINE_STATUS
+#endif
+
+// Packet: 0x0adb
+packetLen(0x0adb, -1)
+
+// Packet: 0x0adc
+packetLen(0x0adc, 6) // ZC_EQUIPWIN_OTHER
+
+// Packet: 0x0add
+#if PACKETVER >= 20180704
+packetLen(0x0add, 24) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20180103
+packetLen(0x0add, 22) // ZC_ITEM_FALL_ENTRY
+#endif
+
+// Packet: 0x0ade
+packetLen(0x0ade, 6) // ZC_OVERWEIGHT_PERCENT
+
+// Packet: 0x0adf
+packetLen(0x0adf, 58) // ZC_ACK_REQNAME
+
+// Packet: 0x0ae0
+packetLen(0x0ae0, 30)
+
+// Packet: 0x0ae1
+packetLen(0x0ae1, 28)
+
+// Packet: 0x0ae2
+packetLen(0x0ae2, 7) // ZC_OPEN_UI
+
+// Packet: 0x0ae3
+packetLen(0x0ae3, -1) // AC_LOGIN_OTP
+
+// Packet: 0x0ae4
+packetLen(0x0ae4, 89) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0ae5
+packetLen(0x0ae5, -1) // ZC_GROUP_LIST
+
+// Packet: 0x0ae6
+#if PACKETVER >= 20180207
+packetLen(0x0ae6, 10)
+#elif PACKETVER >= 20180103
+packetLen(0x0ae6, 30)
+#endif
+
+// Packet: 0x0ae7
+#if PACKETVER >= 20180404
+packetLen(0x0ae7, 38)
+#elif PACKETVER >= 20180321
+packetLen(0x0ae7, 34)
+#elif PACKETVER >= 20180103
+packetLen(0x0ae7, 30)
+#endif
+
+// Packet: 0x0ae8
+packetLen(0x0ae8, 2)
+
+// Packet: 0x0ae9
+#if PACKETVER >= 20180117
+packetLen(0x0ae9, 13) // HC_SECOND_PASSWD_LOGIN
+#elif PACKETVER >= 20180103
+packetLen(0x0ae9, 64) // HC_SECOND_PASSWD_LOGIN
+#endif
+
+// Packet: 0x0aea
+#if PACKETVER >= 20180117
+// removed
+#elif PACKETVER >= 20180103
+packetLen(0x0aea, 2)
+#endif
+
+// Packet: 0x0aeb
+#if PACKETVER >= 20180117
+// removed
+#elif PACKETVER >= 20180103
+packetLen(0x0aeb, 11)
+#endif
+
+// Packet: 0x0aec
+packetLen(0x0aec, 2)
+
+// Packet: 0x0aed
+packetLen(0x0aed, 2)
+
+// Packet: 0x0aee
+packetLen(0x0aee, 2)
+
+// Packet: 0x0aef
+#if PACKETVER >= 20180117
+packetLen(0x0aef, 2) // CZ_ATTENDANCE_REWARD_REQUEST
+#endif
+
+// Packet: 0x0af0
+#if PACKETVER >= 20180117
+packetLen(0x0af0, 10) // ZC_UI_ACTION
+#endif
+
+// Packet: 0x0af2
+#if PACKETVER >= 20180124
+packetLen(0x0af2, 40)
+#endif
+
+// Packet: 0x0af3
+#if PACKETVER >= 20180124
+packetLen(0x0af3, -1)
+#endif
+
+// Packet: 0x0af4
+#if PACKETVER >= 20180207
+packetLen(0x0af4, 11) // CZ_USE_SKILL_TOGROUND
+#endif
+
+// Packet: 0x0af5
+#if PACKETVER >= 20180207
+packetLen(0x0af5, 3)
+#endif
+
+// Packet: 0x0af6
+#if PACKETVER >= 20180207
+packetLen(0x0af6, 88)
+#endif
+
+// Packet: 0x0af7
+#if PACKETVER >= 20180207
+packetLen(0x0af7, 32) // ZC_ACK_REQNAME_BYGID
+#endif
+
+// Packet: 0x0af8
+#if PACKETVER >= 20180321
+packetLen(0x0af8, 11)
+#endif
+
+// Packet: 0x0af9
+#if PACKETVER >= 20180404
+packetLen(0x0af9, 6)
+#endif
+
+// Packet: 0x0afa
+#if PACKETVER >= 20180404
+packetLen(0x0afa, 54)
+#endif
+
+// Packet: 0x0afb
+#if PACKETVER >= 20180418
+packetLen(0x0afb, -1) // ZC_AUTOSPELLLIST
+#endif
+
+// Packet: 0x0afc
+#if PACKETVER >= 20180516
+packetLen(0x0afc, 16)
+#endif
+
+// Packet: 0x0afd
+#if PACKETVER >= 20180605
+packetLen(0x0afd, -1) // ZC_GUILD_POSITION
+#endif
+
+// Packet: 0x0afe
+#if PACKETVER >= 20180605
+packetLen(0x0afe, -1) // ZC_UPDATE_MISSION_HUNT_EX
+#endif
+
+// Packet: 0x0aff
+#if PACKETVER >= 20180605
+packetLen(0x0aff, -1) // ZC_ALL_QUEST_LIST4
+#endif
+
+// Packet: 0x0b00
+#if PACKETVER >= 20180620
+packetLen(0x0b00, 8)
+#endif
+
+// Packet: 0x0b01
+#if PACKETVER >= 20180704
+packetLen(0x0b01, 56)
+#elif PACKETVER >= 20180620
+packetLen(0x0b01, 40)
+#endif
+
+// Packet: 0x0b02
+#if PACKETVER >= 20180704
+packetLen(0x0b02, 26) // AC_REFUSE_LOGIN4
+#endif
+
+// Packet: 0x0b03
+#if PACKETVER >= 20180801
+packetLen(0x0b03, -1) // ZC_EQUIPWIN_MICROSCOPE_V7
+#endif
+
+// Packet: 0x0b04
+#if PACKETVER >= 20180801
+packetLen(0x0b04, 80)
+#endif
+
+// Packet: 0x0b05
+#if PACKETVER >= 20180829
+packetLen(0x0b05, 63) // ZC_OFFLINE_STORE_VISIBLE
+#endif
+
+// Packet: 0x0b06
+#if PACKETVER >= 20181002
+// removed
+#elif PACKETVER >= 20180829
+packetLen(0x0b06, 53)
+#endif
+
+// Packet: 0x0b07
+#if PACKETVER >= 20180829
+packetLen(0x0b07, -1)
+#endif
+
+// Packet: 0x0b08
+#if PACKETVER >= 20180919
+packetLen(0x0b08, -1) // ZC_INVENTORY_START
+#elif PACKETVER >= 20180912
+packetLen(0x0b08, 27) // ZC_INVENTORY_START
+#elif PACKETVER >= 20180829
+packetLen(0x0b08, 26) // ZC_INVENTORY_START
+#endif
+
+// Packet: 0x0b09
+#if PACKETVER >= 20180829
+packetLen(0x0b09, -1) // ZC_STORE_ITEMLIST_NORMAL_V6
+#endif
+
+// Packet: 0x0b0a
+#if PACKETVER >= 20180829
+packetLen(0x0b0a, -1) // ZC_STORE_ITEMLIST_EQUIP_V6
+#endif
+
+// Packet: 0x0b0b
+#if PACKETVER >= 20180912
+packetLen(0x0b0b, 4) // ZC_INVENTORY_END
+#elif PACKETVER >= 20180829
+packetLen(0x0b0b, 3) // ZC_INVENTORY_END
+#endif
+
+// Packet: 0x0b0c
+#if PACKETVER >= 20180829
+packetLen(0x0b0c, 155) // ZC_ADD_QUEST_EX
+#endif
+
+// Packet: 0x0b0d
+#if PACKETVER >= 20180912
+packetLen(0x0b0d, 10) // ZC_REMOVE_EFFECT
+#endif
+
+// Packet: 0x0b0e
+#if PACKETVER >= 20180912
+packetLen(0x0b0e, -1) // ZC_NPC_BARTER_OPEN
+#endif
+
+// Packet: 0x0b0f
+#if PACKETVER >= 20180912
+packetLen(0x0b0f, -1) // CZ_NPC_BARTER_PURCHASE
+#endif
+
+// Packet: 0x0b10
+#if PACKETVER >= 20181002
+packetLen(0x0b10, 10) // CZ_START_USE_SKILL
+#endif
+
+// Packet: 0x0b11
+#if PACKETVER >= 20181002
+packetLen(0x0b11, 4) // CZ_STOP_USE_SKILL
+#endif
+
+// Packet: 0x0b12
+#if PACKETVER >= 20181017
+packetLen(0x0b12, 2) // CZ_NPC_BARTER_CLOSE
+#endif
+
+// Packet: 0x0b13
+#if PACKETVER >= 20181017
+packetLen(0x0b13, 48) // ZC_ITEM_PREVIEW
+#endif
+
+// Packet: 0x0b14
+#if PACKETVER >= 20181031
+packetLen(0x0b14, 2) // CZ_INVENTORY_EXPAND
+#endif
+
+// Packet: 0x0b15
+#if PACKETVER >= 20181031
+packetLen(0x0b15, 7) // ZC_ACK_INVENTORY_EXPAND
+#endif
+
+// Packet: 0x0b16
+#if PACKETVER >= 20181031
+packetLen(0x0b16, 2) // CZ_INVENTORY_EXPAND_CONFIRMED
+#endif
+
+// Packet: 0x0b17
+#if PACKETVER >= 20181031
+packetLen(0x0b17, 3) // ZC_ACK_INVENTORY_EXPAND_RESULT
+#endif
+
+// Packet: 0x0b18
+#if PACKETVER >= 20181031
+packetLen(0x0b18, 4) // ZC_INVENTORY_EXPANSION_INFO
+#endif
+
+// Packet: 0x0b19
+#if PACKETVER >= 20181031
+packetLen(0x0b19, 2) // CZ_INVENTORY_EXPAND_REJECTED
+#endif
+
+// Packet: 0x0b1a
+#if PACKETVER >= 20181212
+packetLen(0x0b1a, 29)
+#endif
+
+
+#endif /* COMMON_PACKETS2018_LEN_RE_H */
diff --git a/src/common/packets/packets2018_len_zero.h b/src/common/packets/packets2018_len_zero.h
new file mode 100644
index 000000000..39448930e
--- /dev/null
+++ b/src/common/packets/packets2018_len_zero.h
@@ -0,0 +1,5958 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2018_LEN_ZERO_H
+#define COMMON_PACKETS2018_LEN_ZERO_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 157) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 22) // CZ_ENTER
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 44) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 10) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, 14)
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+packetLen(0x0094, 19) // CZ_REQNAME
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+#if PACKETVER >= 20181114
+packetLen(0x009d, 19) // ZC_ITEM_ENTRY
+#elif PACKETVER >= 20180103
+packetLen(0x009d, 17) // ZC_ITEM_ENTRY
+#endif
+
+// Packet: 0x009e
+#if PACKETVER >= 20181114
+packetLen(0x009e, 19) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20180103
+packetLen(0x009e, 17) // ZC_ITEM_FALL_ENTRY
+#endif
+
+// Packet: 0x009f
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+#if PACKETVER >= 20181114
+packetLen(0x00a0, 33) // ZC_ITEM_PICKUP_ACK
+#elif PACKETVER >= 20180103
+packetLen(0x00a0, 23) // ZC_ITEM_PICKUP_ACK
+#endif
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+packetLen(0x00a7, 9)
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 9) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+#if PACKETVER >= 20181114
+packetLen(0x00e9, 29) // ZC_ADD_EXCHANGE_ITEM
+#elif PACKETVER >= 20180103
+packetLen(0x00e9, 19) // ZC_ADD_EXCHANGE_ITEM
+#endif
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+#if PACKETVER >= 20181114
+packetLen(0x00f4, 31) // ZC_ADD_ITEM_TO_STORE
+#elif PACKETVER >= 20180103
+packetLen(0x00f4, 21) // ZC_ADD_ITEM_TO_STORE
+#endif
+
+// Packet: 0x00f5
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+packetLen(0x00f7, 17) // CZ_REQUEST_TIME
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+#if PACKETVER >= 20181114
+packetLen(0x010a, 6) // ZC_MVP_GETTING_ITEM
+#elif PACKETVER >= 20180103
+packetLen(0x010a, 4) // ZC_MVP_GETTING_ITEM
+#endif
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+#if PACKETVER >= 20181114
+packetLen(0x0110, 14) // ZC_ACK_TOUSESKILL
+#elif PACKETVER >= 20180103
+packetLen(0x0110, 10) // ZC_ACK_TOUSESKILL
+#endif
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+packetLen(0x0113, 25) // CZ_USE_SKILL
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+#if PACKETVER >= 20181114
+packetLen(0x0124, 31) // ZC_ADD_ITEM_TO_CART
+#elif PACKETVER >= 20180103
+packetLen(0x0124, 21) // ZC_ADD_ITEM_TO_CART
+#endif
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+#if PACKETVER >= 20181114
+packetLen(0x018e, 18) // CZ_REQMAKINGITEM
+#elif PACKETVER >= 20180103
+packetLen(0x018e, 10) // CZ_REQMAKINGITEM
+#endif
+
+// Packet: 0x018f
+#if PACKETVER >= 20181114
+packetLen(0x018f, 8) // ZC_ACK_REQMAKINGITEM
+#elif PACKETVER >= 20180103
+packetLen(0x018f, 6) // ZC_ACK_REQMAKINGITEM
+#endif
+
+// Packet: 0x0190
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 37) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+#if PACKETVER >= 20181114
+packetLen(0x01a3, 7) // ZC_FEED_PET
+#elif PACKETVER >= 20180103
+packetLen(0x01a3, 5) // ZC_FEED_PET
+#endif
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+#if PACKETVER >= 20181114
+packetLen(0x01ae, 6) // CZ_REQ_MAKINGARROW
+#elif PACKETVER >= 20180103
+packetLen(0x01ae, 4) // CZ_REQ_MAKINGARROW
+#endif
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+#if PACKETVER >= 20181114
+packetLen(0x01c4, 32) // ZC_ADD_ITEM_TO_STORE2
+#elif PACKETVER >= 20180103
+packetLen(0x01c4, 22) // ZC_ADD_ITEM_TO_STORE2
+#endif
+
+// Packet: 0x01c5
+#if PACKETVER >= 20181114
+packetLen(0x01c5, 32) // ZC_ADD_ITEM_TO_CART2
+#elif PACKETVER >= 20180103
+packetLen(0x01c5, 22) // ZC_ADD_ITEM_TO_CART2
+#endif
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+#if PACKETVER >= 20181114
+packetLen(0x01c8, 15) // ZC_USE_ITEM_ACK2
+#elif PACKETVER >= 20180103
+packetLen(0x01c8, 13) // ZC_USE_ITEM_ACK2
+#endif
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+#if PACKETVER >= 20181114
+packetLen(0x01d7, 15) // ZC_SPRITE_CHANGE2
+#elif PACKETVER >= 20180103
+packetLen(0x01d7, 11) // ZC_SPRITE_CHANGE2
+#endif
+
+// Packet: 0x01d8
+#if PACKETVER >= 20181114
+packetLen(0x01d8, 58) // ZC_NOTIFY_STANDENTRY2
+#elif PACKETVER >= 20180103
+packetLen(0x01d8, 54) // ZC_NOTIFY_STANDENTRY2
+#endif
+
+// Packet: 0x01d9
+#if PACKETVER >= 20181114
+packetLen(0x01d9, 57) // ZC_NOTIFY_NEWENTRY2
+#elif PACKETVER >= 20180103
+packetLen(0x01d9, 53) // ZC_NOTIFY_NEWENTRY2
+#endif
+
+// Packet: 0x01da
+#if PACKETVER >= 20181114
+packetLen(0x01da, 64) // ZC_NOTIFY_MOVEENTRY2
+#elif PACKETVER >= 20180103
+packetLen(0x01da, 60) // ZC_NOTIFY_MOVEENTRY2
+#endif
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+#if PACKETVER >= 20181114
+packetLen(0x01fd, 25) // CZ_REQ_ITEMREPAIR
+#elif PACKETVER >= 20180103
+packetLen(0x01fd, 15) // CZ_REQ_ITEMREPAIR
+#endif
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+#if PACKETVER >= 20180523
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20180511
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20180315
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20180314
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20180228
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20180213
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20180131
+packetLen(0x0202, 5) // CZ_ADD_FRIENDS
+#elif PACKETVER >= 20180103
+packetLen(0x0202, 2) // CZ_ADD_FRIENDS
+#endif
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+#if PACKETVER >= 20180328
+packetLen(0x0206, 35) // ZC_FRIENDS_STATE
+#elif PACKETVER >= 20180103
+packetLen(0x0206, 11) // ZC_FRIENDS_STATE
+#endif
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+#if PACKETVER >= 20181114
+packetLen(0x0223, 10) // ZC_ACK_WEAPONREFINE
+#elif PACKETVER >= 20180103
+packetLen(0x0223, 8) // ZC_ACK_WEAPONREFINE
+#endif
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+#if PACKETVER >= 20181114
+packetLen(0x022a, 62) // ZC_NOTIFY_STANDENTRY3
+#elif PACKETVER >= 20180103
+packetLen(0x022a, 58) // ZC_NOTIFY_STANDENTRY3
+#endif
+
+// Packet: 0x022b
+#if PACKETVER >= 20181114
+packetLen(0x022b, 61) // ZC_NOTIFY_NEWENTRY3
+#elif PACKETVER >= 20180103
+packetLen(0x022b, 57) // ZC_NOTIFY_NEWENTRY3
+#endif
+
+// Packet: 0x022c
+#if PACKETVER >= 20181114
+packetLen(0x022c, 69) // ZC_NOTIFY_MOVEENTRY3
+#elif PACKETVER >= 20180103
+packetLen(0x022c, 65) // ZC_NOTIFY_MOVEENTRY3
+#endif
+
+// Packet: 0x022d
+#if PACKETVER >= 20180523
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+#elif PACKETVER >= 20180511
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20180315
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+#elif PACKETVER >= 20180314
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20180228
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20180221
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#elif PACKETVER >= 20180213
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+#elif PACKETVER >= 20180131
+packetLen(0x022d, 19) // CZ_COMMAND_MER
+#elif PACKETVER >= 20180103
+packetLen(0x022d, 2) // CZ_COMMAND_MER
+#endif
+
+// Packet: 0x022e
+#if PACKETVER >= 20181114
+packetLen(0x022e, 73) // ZC_PROPERTY_HOMUN
+#elif PACKETVER >= 20180103
+packetLen(0x022e, 71) // ZC_PROPERTY_HOMUN
+#endif
+
+// Packet: 0x022f
+#if PACKETVER >= 20181114
+packetLen(0x022f, 7) // ZC_FEED_MER
+#elif PACKETVER >= 20180103
+packetLen(0x022f, 5) // ZC_FEED_MER
+#endif
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+#if PACKETVER >= 20180523
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20180511
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20180315
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20180228
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20180213
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20180131
+packetLen(0x023b, 26) // CZ_ACK_STORE_PASSWORD
+#elif PACKETVER >= 20180103
+packetLen(0x023b, 2) // CZ_ACK_STORE_PASSWORD
+#endif
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+#if PACKETVER >= 20181114
+packetLen(0x025b, 8) // CZ_REQ_MAKINGITEM
+#elif PACKETVER >= 20180103
+packetLen(0x025b, 6) // CZ_REQ_MAKINGITEM
+#endif
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+
+// Packet: 0x0275
+packetLen(0x0275, 37) // CH_ENTER2
+
+// Packet: 0x0276
+packetLen(0x0276, -1) // AC_ACCEPT_LOGIN2
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+#if PACKETVER >= 20180523
+packetLen(0x0281, 4) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20180511
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20180315
+packetLen(0x0281, 4) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20180314
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20180228
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20180213
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20180131
+packetLen(0x0281, -1) // CZ_GANGSI_RANK
+#elif PACKETVER >= 20180103
+packetLen(0x0281, 2) // CZ_GANGSI_RANK
+#endif
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+
+// Packet: 0x0288
+packetLen(0x0288, -1) // CZ_PC_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0289
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0296
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0297
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0298
+#if PACKETVER >= 20181114
+packetLen(0x0298, 10) // ZC_CASH_TIME_COUNTER
+#elif PACKETVER >= 20180103
+packetLen(0x0298, 8) // ZC_CASH_TIME_COUNTER
+#endif
+
+// Packet: 0x0299
+#if PACKETVER >= 20181114
+packetLen(0x0299, 8) // ZC_CASH_ITEM_DELETE
+#elif PACKETVER >= 20180103
+packetLen(0x0299, 6) // ZC_CASH_ITEM_DELETE
+#endif
+
+// Packet: 0x029a
+#if PACKETVER >= 20181114
+packetLen(0x029a, 37) // ZC_ITEM_PICKUP_ACK2
+#elif PACKETVER >= 20180103
+packetLen(0x029a, 27) // ZC_ITEM_PICKUP_ACK2
+#endif
+
+// Packet: 0x029b
+packetLen(0x029b, 80) // ZC_MER_INIT
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a5
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+
+// Packet: 0x02a6
+packetLen(0x02a6, -1) // ZC_HACKSH_CPX_MSG
+
+// Packet: 0x02a7
+packetLen(0x02a7, -1) // CZ_HACKSH_CPX_MSG
+
+// Packet: 0x02aa
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+
+// Packet: 0x02ab
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+
+// Packet: 0x02ac
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+
+// Packet: 0x02ad
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+
+// Packet: 0x02b0
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+
+// Packet: 0x02b1
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+
+// Packet: 0x02b2
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+
+// Packet: 0x02b3
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+
+// Packet: 0x02b4
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+
+// Packet: 0x02b5
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+
+// Packet: 0x02b6
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+
+// Packet: 0x02b7
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+
+// Packet: 0x02b8
+#if PACKETVER >= 20181114
+packetLen(0x02b8, 32) // ZC_ITEM_PICKUP_PARTY
+#elif PACKETVER >= 20180103
+packetLen(0x02b8, 22) // ZC_ITEM_PICKUP_PARTY
+#endif
+
+// Packet: 0x02b9
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+
+// Packet: 0x02ba
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+
+// Packet: 0x02bb
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+
+// Packet: 0x02bc
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+
+// Packet: 0x02c1
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+
+// Packet: 0x02c2
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+
+// Packet: 0x02c4
+#if PACKETVER >= 20180523
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20180511
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20180315
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20180228
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20180221
+packetLen(0x02c4, 6) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20180213
+packetLen(0x02c4, 8) // CZ_PARTY_JOIN_REQ
+#elif PACKETVER >= 20180103
+packetLen(0x02c4, 2) // CZ_PARTY_JOIN_REQ
+#endif
+
+// Packet: 0x02c5
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c6
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+
+// Packet: 0x02c7
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c8
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+
+// Packet: 0x02c9
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+
+// Packet: 0x02ca
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+
+// Packet: 0x02cb
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+
+// Packet: 0x02cc
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+
+// Packet: 0x02cd
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+
+// Packet: 0x02ce
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+
+// Packet: 0x02cf
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+
+// Packet: 0x02d0
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d1
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d2
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d3
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+
+// Packet: 0x02d4
+#if PACKETVER >= 20181114
+packetLen(0x02d4, 39) // ZC_ITEM_PICKUP_ACK3
+#elif PACKETVER >= 20180103
+packetLen(0x02d4, 29) // ZC_ITEM_PICKUP_ACK3
+#endif
+
+// Packet: 0x02d5
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+
+// Packet: 0x02d6
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d7
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d8
+packetLen(0x02d8, 10) // CZ_CONFIG
+
+// Packet: 0x02d9
+packetLen(0x02d9, 10) // ZC_CONFIG
+
+// Packet: 0x02da
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+
+// Packet: 0x02db
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+
+// Packet: 0x02dc
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+
+// Packet: 0x02dd
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+
+// Packet: 0x02de
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+
+// Packet: 0x02df
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+
+// Packet: 0x02e0
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+
+// Packet: 0x02e1
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+
+// Packet: 0x02e2
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+
+// Packet: 0x02e3
+packetLen(0x02e3, 22) // CZ_USE_SKILL_NEW_JAPEN
+
+// Packet: 0x02e4
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+
+// Packet: 0x02e5
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+
+// Packet: 0x02e6
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+
+// Packet: 0x02e7
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+
+// Packet: 0x02e8
+packetLen(0x02e8, -1) // ZC_NORMAL_ITEMLIST3
+
+// Packet: 0x02e9
+packetLen(0x02e9, -1) // ZC_CART_NORMAL_ITEMLIST3
+
+// Packet: 0x02ea
+packetLen(0x02ea, -1) // ZC_STORE_NORMAL_ITEMLIST3
+
+// Packet: 0x02eb
+packetLen(0x02eb, 13) // ZC_ACCEPT_ENTER2
+
+// Packet: 0x02ec
+#if PACKETVER >= 20181114
+packetLen(0x02ec, 71) // ZC_NOTIFY_MOVEENTRY4
+#elif PACKETVER >= 20180103
+packetLen(0x02ec, 67) // ZC_NOTIFY_MOVEENTRY4
+#endif
+
+// Packet: 0x02ed
+#if PACKETVER >= 20181114
+packetLen(0x02ed, 63) // ZC_NOTIFY_NEWENTRY4
+#elif PACKETVER >= 20180103
+packetLen(0x02ed, 59) // ZC_NOTIFY_NEWENTRY4
+#endif
+
+// Packet: 0x02ee
+#if PACKETVER >= 20181114
+packetLen(0x02ee, 64) // ZC_NOTIFY_STANDENTRY4
+#elif PACKETVER >= 20180103
+packetLen(0x02ee, 60) // ZC_NOTIFY_STANDENTRY4
+#endif
+
+// Packet: 0x02ef
+packetLen(0x02ef, 8) // ZC_NOTIFY_FONT
+
+// Packet: 0x02f0
+packetLen(0x02f0, 10) // ZC_PROGRESS
+
+// Packet: 0x02f1
+packetLen(0x02f1, 2) // CZ_PROGRESS
+
+// Packet: 0x02f2
+packetLen(0x02f2, 2) // ZC_PROGRESS_CANCEL
+
+// Packet: 0x02f3
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+
+// Packet: 0x02f4
+packetLen(0x02f4, 3) // ZC_IRMAIL_SEND_RES
+
+// Packet: 0x02f5
+packetLen(0x02f5, 7) // ZC_IRMAIL_NOTIFY
+
+// Packet: 0x02f6
+packetLen(0x02f6, 7) // CZ_IRMAIL_LIST
+
+// Packet: 0x035c
+packetLen(0x035c, 2) // CZ_OPEN_SIMPLE_CASHSHOP_ITEMLIST
+
+// Packet: 0x035d
+packetLen(0x035d, -1) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+
+// Packet: 0x035e
+packetLen(0x035e, 2) // CZ_CLOSE_WINDOW
+
+// Packet: 0x035f
+#if PACKETVER >= 20180523
+packetLen(0x035f, 5) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20180511
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20180315
+packetLen(0x035f, 5) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20180314
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20180228
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20180221
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20180131
+packetLen(0x035f, 6) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20180117
+packetLen(0x035f, 2) // CZ_REQUEST_MOVE2
+#elif PACKETVER >= 20180103
+packetLen(0x035f, 5) // CZ_REQUEST_MOVE2
+#endif
+
+// Packet: 0x0360
+#if PACKETVER >= 20180523
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20180511
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20180315
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20180314
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20180228
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20180213
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20180131
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20180117
+packetLen(0x0360, 2) // CZ_REQUEST_TIME2
+#elif PACKETVER >= 20180103
+packetLen(0x0360, 18) // CZ_REQUEST_TIME2
+#endif
+
+// Packet: 0x0361
+#if PACKETVER >= 20180523
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20180511
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20180315
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20180314
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20180228
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20180221
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20180213
+packetLen(0x0361, 90) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20180131
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20180117
+packetLen(0x0361, 26) // CZ_CHANGE_DIRECTION2
+#elif PACKETVER >= 20180103
+packetLen(0x0361, 2) // CZ_CHANGE_DIRECTION2
+#endif
+
+// Packet: 0x0362
+#if PACKETVER >= 20180523
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20180511
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20180315
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20180314
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20180221
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20180213
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20180131
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+#elif PACKETVER >= 20180103
+packetLen(0x0362, 2) // CZ_ITEM_PICKUP2
+#endif
+
+// Packet: 0x0363
+#if PACKETVER >= 20180523
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20180511
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20180315
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20180314
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20180228
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20180213
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20180131
+packetLen(0x0363, 8) // CZ_ITEM_THROW2
+#elif PACKETVER >= 20180103
+packetLen(0x0363, 2) // CZ_ITEM_THROW2
+#endif
+
+// Packet: 0x0364
+#if PACKETVER >= 20180523
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20180511
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20180315
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20180314
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20180228
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20180221
+packetLen(0x0364, 5) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20180213
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20180131
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20180117
+packetLen(0x0364, 6) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#elif PACKETVER >= 20180103
+packetLen(0x0364, 2) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+#endif
+
+// Packet: 0x0365
+#if PACKETVER >= 20180523
+packetLen(0x0365, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20180511
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20180315
+packetLen(0x0365, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20180314
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20180228
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20180213
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20180131
+packetLen(0x0365, 18) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#elif PACKETVER >= 20180103
+packetLen(0x0365, 2) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+#endif
+
+// Packet: 0x0366
+#if PACKETVER >= 20180523
+packetLen(0x0366, 10) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20180511
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20180315
+packetLen(0x0366, 10) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20180314
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20180228
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20180213
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20180207
+packetLen(0x0366, 90) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20180117
+packetLen(0x0366, 2) // CZ_USE_SKILL_TOGROUND2
+#elif PACKETVER >= 20180103
+packetLen(0x0366, -1) // CZ_USE_SKILL_TOGROUND2
+#endif
+
+// Packet: 0x0367
+#if PACKETVER >= 20180523
+packetLen(0x0367, 90) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20180511
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20180315
+packetLen(0x0367, 90) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20180207
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20180131
+packetLen(0x0367, 36) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20180103
+packetLen(0x0367, 2) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#endif
+
+// Packet: 0x0368
+#if PACKETVER >= 20180523
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20180511
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20180315
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20180314
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20180228
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20180213
+packetLen(0x0368, 2) // CZ_REQNAME2
+#elif PACKETVER >= 20180131
+packetLen(0x0368, 6) // CZ_REQNAME2
+#elif PACKETVER >= 20180103
+packetLen(0x0368, 2) // CZ_REQNAME2
+#endif
+
+// Packet: 0x0369
+#if PACKETVER >= 20180523
+packetLen(0x0369, 6) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20180511
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20180315
+packetLen(0x0369, 6) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20180314
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20180228
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20180213
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20180131
+packetLen(0x0369, 7) // CZ_REQNAME_BYGID2
+#elif PACKETVER >= 20180103
+packetLen(0x0369, 2) // CZ_REQNAME_BYGID2
+#endif
+
+// Packet: 0x03dd
+packetLen(0x03dd, 18) // AHC_GAME_GUARD
+
+// Packet: 0x03de
+packetLen(0x03de, 18) // CAH_ACK_GAME_GUARD
+
+// Packet: 0x0436
+#if PACKETVER >= 20180523
+packetLen(0x0436, 19) // CZ_ENTER2
+#elif PACKETVER >= 20180511
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20180315
+packetLen(0x0436, 19) // CZ_ENTER2
+#elif PACKETVER >= 20180314
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20180228
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20180213
+packetLen(0x0436, 2) // CZ_ENTER2
+#elif PACKETVER >= 20180131
+packetLen(0x0436, 4) // CZ_ENTER2
+#elif PACKETVER >= 20180103
+packetLen(0x0436, 2) // CZ_ENTER2
+#endif
+
+// Packet: 0x0437
+#if PACKETVER >= 20180523
+packetLen(0x0437, 7) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20180511
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20180315
+packetLen(0x0437, 7) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20180314
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20180228
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20180213
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20180131
+packetLen(0x0437, 5) // CZ_REQUEST_ACT2
+#elif PACKETVER >= 20180103
+packetLen(0x0437, 2) // CZ_REQUEST_ACT2
+#endif
+
+// Packet: 0x0438
+#if PACKETVER >= 20180523
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20180511
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20180315
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20180314
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20180228
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20180221
+packetLen(0x0438, -1) // CZ_USE_SKILL2
+#elif PACKETVER >= 20180213
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#elif PACKETVER >= 20180131
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+#elif PACKETVER >= 20180117
+packetLen(0x0438, 8) // CZ_USE_SKILL2
+#elif PACKETVER >= 20180103
+packetLen(0x0438, 2) // CZ_USE_SKILL2
+#endif
+
+// Packet: 0x0439
+packetLen(0x0439, 8) // CZ_USE_ITEM2
+
+// Packet: 0x043d
+packetLen(0x043d, 8) // ZC_SKILL_POSTDELAY
+
+// Packet: 0x043e
+packetLen(0x043e, -1) // ZC_SKILL_POSTDELAY_LIST
+
+// Packet: 0x043f
+packetLen(0x043f, 25) // ZC_MSG_STATE_CHANGE2
+
+// Packet: 0x0440
+packetLen(0x0440, 10) // ZC_MILLENNIUMSHIELD
+
+// Packet: 0x0441
+packetLen(0x0441, 4) // ZC_SKILLINFO_DELETE
+
+// Packet: 0x0442
+packetLen(0x0442, -1) // ZC_SKILL_SELECT_REQUEST
+
+// Packet: 0x0443
+packetLen(0x0443, 8) // CZ_SKILL_SELECT_RESPONSE
+
+// Packet: 0x0444
+packetLen(0x0444, -1) // ZC_SIMPLE_CASH_POINT_ITEMLIST
+
+// Packet: 0x0445
+#if PACKETVER >= 20181114
+packetLen(0x0445, 12) // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+#elif PACKETVER >= 20180103
+packetLen(0x0445, 10) // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+#endif
+
+// Packet: 0x0446
+packetLen(0x0446, 14) // ZC_QUEST_NOTIFY_EFFECT
+
+// Packet: 0x0447
+packetLen(0x0447, 2) // CZ_BLOCKING_PLAY_CANCEL
+
+// Packet: 0x0448
+packetLen(0x0448, -1) // HC_CHARACTER_LIST
+
+// Packet: 0x0449
+packetLen(0x0449, 4) // ZC_HACKSH_ERROR_MSG
+
+// Packet: 0x044a
+packetLen(0x044a, 6) // CZ_CLIENT_VERSION
+
+// Packet: 0x044b
+packetLen(0x044b, 2) // CZ_CLOSE_SIMPLECASH_SHOP
+
+// Packet: 0x07d7
+packetLen(0x07d7, 8) // CZ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d8
+packetLen(0x07d8, 8) // ZC_REQ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d9
+packetLen(0x07d9, 268) // ZC_SHORTCUT_KEY_LIST_V2
+
+// Packet: 0x07da
+packetLen(0x07da, 6) // CZ_CHANGE_GROUP_MASTER
+
+// Packet: 0x07db
+packetLen(0x07db, 8) // ZC_HO_PAR_CHANGE
+
+// Packet: 0x07dc
+packetLen(0x07dc, 6) // CZ_SEEK_PARTY
+
+// Packet: 0x07dd
+packetLen(0x07dd, 54) // ZC_SEEK_PARTY
+
+// Packet: 0x07de
+packetLen(0x07de, 30) // CZ_SEEK_PARTY_MEMBER
+
+// Packet: 0x07df
+packetLen(0x07df, 54) // ZC_SEEK_PARTY_MEMBER
+
+// Packet: 0x07e0
+packetLen(0x07e0, 58) // ZC_ES_NOTI_MYINFO
+
+// Packet: 0x07e1
+packetLen(0x07e1, 15) // ZC_SKILLINFO_UPDATE2
+
+// Packet: 0x07e2
+packetLen(0x07e2, 8) // ZC_MSG_VALUE
+
+// Packet: 0x07e3
+packetLen(0x07e3, 6) // ZC_ITEMLISTWIN_OPEN
+
+// Packet: 0x07e4
+#if PACKETVER >= 20180523
+packetLen(0x07e4, -1) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20180511
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20180315
+packetLen(0x07e4, -1) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20180314
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20180228
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20180213
+packetLen(0x07e4, 2) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20180131
+packetLen(0x07e4, 6) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20180117
+packetLen(0x07e4, 36) // CZ_ITEMLISTWIN_RES
+#elif PACKETVER >= 20180103
+packetLen(0x07e4, 5) // CZ_ITEMLISTWIN_RES
+#endif
+
+// Packet: 0x07e5
+packetLen(0x07e5, 4) // CH_ENTER_CHECKBOT
+
+// Packet: 0x07e6
+packetLen(0x07e6, 8) // ZC_MSG_SKILL
+
+// Packet: 0x07e7
+packetLen(0x07e7, 32) // CH_CHECKBOT
+
+// Packet: 0x07e8
+packetLen(0x07e8, -1) // HC_CHECKBOT
+
+// Packet: 0x07e9
+packetLen(0x07e9, 5) // HC_CHECKBOT_RESULT
+
+// Packet: 0x07ea
+packetLen(0x07ea, 2) // CZ_BATTLE_FIELD_LIST
+
+// Packet: 0x07eb
+packetLen(0x07eb, -1) // ZC_BATTLE_FIELD_LIST
+
+// Packet: 0x07ec
+#if PACKETVER >= 20180523
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20180511
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20180315
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20180314
+packetLen(0x07ec, 19) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20180228
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20180213
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20180131
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+#elif PACKETVER >= 20180103
+packetLen(0x07ec, 2) // CZ_JOIN_BATTLE_FIELD
+#endif
+
+// Packet: 0x07ed
+packetLen(0x07ed, 10) // ZC_JOIN_BATTLE_FIELD
+
+// Packet: 0x07ee
+packetLen(0x07ee, 6) // CZ_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07ef
+packetLen(0x07ef, 8) // ZC_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07f0
+packetLen(0x07f0, 6) // CZ_REQ_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f1
+packetLen(0x07f1, 18) // ZC_ACK_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f2
+packetLen(0x07f2, 8) // ZC_BATTLE_NOTI_START_STEP
+
+// Packet: 0x07f3
+packetLen(0x07f3, 6) // ZC_BATTLE_JOIN_NOTI_DEFER
+
+// Packet: 0x07f4
+packetLen(0x07f4, 3) // ZC_BATTLE_JOIN_DISABLE_STATE
+
+// Packet: 0x07f5
+packetLen(0x07f5, 6) // CZ_GM_FULLSTRIP
+
+// Packet: 0x07f6
+packetLen(0x07f6, 14) // ZC_NOTIFY_EXP
+
+// Packet: 0x07f7
+packetLen(0x07f7, -1) // ZC_NOTIFY_MOVEENTRY7
+
+// Packet: 0x07f8
+packetLen(0x07f8, -1) // ZC_NOTIFY_NEWENTRY5
+
+// Packet: 0x07f9
+packetLen(0x07f9, -1) // ZC_NOTIFY_STANDENTRY5
+
+// Packet: 0x07fa
+packetLen(0x07fa, 8) // ZC_DELETE_ITEM_FROM_BODY
+
+// Packet: 0x07fb
+packetLen(0x07fb, 25) // ZC_USESKILL_ACK2
+
+// Packet: 0x07fc
+packetLen(0x07fc, 10) // ZC_CHANGE_GROUP_MASTER
+
+// Packet: 0x07fd
+packetLen(0x07fd, -1) // ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN
+
+// Packet: 0x07fe
+packetLen(0x07fe, 26) // ZC_PLAY_NPC_BGM
+
+// Packet: 0x0800
+packetLen(0x0800, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0801
+packetLen(0x0801, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0802
+#if PACKETVER >= 20180523
+packetLen(0x0802, 18) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20180511
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20180315
+packetLen(0x0802, 18) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20180314
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20180228
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20180221
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20180213
+packetLen(0x0802, 6) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20180131
+packetLen(0x0802, 26) // CZ_PARTY_BOOKING_REQ_REGISTER
+#elif PACKETVER >= 20180103
+packetLen(0x0802, 2) // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// Packet: 0x0803
+packetLen(0x0803, 4) // ZC_PARTY_BOOKING_ACK_REGISTER
+
+// Packet: 0x0804
+packetLen(0x0804, 14) // CZ_PARTY_BOOKING_REQ_SEARCH
+
+// Packet: 0x0805
+packetLen(0x0805, -1) // ZC_PARTY_BOOKING_ACK_SEARCH
+
+// Packet: 0x0806
+packetLen(0x0806, 2) // CZ_PARTY_BOOKING_REQ_DELETE
+
+// Packet: 0x0807
+packetLen(0x0807, 4) // ZC_PARTY_BOOKING_ACK_DELETE
+
+// Packet: 0x0808
+packetLen(0x0808, 14) // CZ_PARTY_BOOKING_REQ_UPDATE
+
+// Packet: 0x0809
+packetLen(0x0809, 50) // ZC_PARTY_BOOKING_NOTIFY_INSERT
+
+// Packet: 0x080a
+packetLen(0x080a, 18) // ZC_PARTY_BOOKING_NOTIFY_UPDATE
+
+// Packet: 0x080b
+packetLen(0x080b, 6) // ZC_PARTY_BOOKING_NOTIFY_DELETE
+
+// Packet: 0x080c
+packetLen(0x080c, 2) // CZ_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080d
+packetLen(0x080d, 3) // ZC_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080e
+packetLen(0x080e, 14) // ZC_NOTIFY_HP_TO_GROUPM_R2
+
+// Packet: 0x080f
+#if PACKETVER >= 20181114
+packetLen(0x080f, 30) // ZC_ADD_EXCHANGE_ITEM2
+#elif PACKETVER >= 20180103
+packetLen(0x080f, 20) // ZC_ADD_EXCHANGE_ITEM2
+#endif
+
+// Packet: 0x0810
+packetLen(0x0810, 3) // ZC_OPEN_BUYING_STORE
+
+// Packet: 0x0811
+#if PACKETVER >= 20180523
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20180511
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20180315
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20180314
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20180228
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20180213
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20180131
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+#elif PACKETVER >= 20180103
+packetLen(0x0811, 2) // CZ_REQ_OPEN_BUYING_STORE
+#endif
+
+// Packet: 0x0812
+packetLen(0x0812, 8) // ZC_FAILED_OPEN_BUYING_STORE_TO_BUYER
+
+// Packet: 0x0813
+packetLen(0x0813, -1) // ZC_MYITEMLIST_BUYING_STORE
+
+// Packet: 0x0814
+packetLen(0x0814, 86) // ZC_BUYING_STORE_ENTRY
+
+// Packet: 0x0815
+#if PACKETVER >= 20180314
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20180228
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20180221
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20180213
+packetLen(0x0815, 10) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20180131
+packetLen(0x0815, -1) // CZ_REQ_CLOSE_BUYING_STORE
+#elif PACKETVER >= 20180103
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+#endif
+
+// Packet: 0x0816
+packetLen(0x0816, 6) // ZC_DISAPPEAR_BUYING_STORE_ENTRY
+
+// Packet: 0x0817
+#if PACKETVER >= 20180315
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20180228
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20180221
+packetLen(0x0817, -1) // CZ_REQ_CLICK_TO_BUYING_STORE
+#elif PACKETVER >= 20180103
+packetLen(0x0817, 2) // CZ_REQ_CLICK_TO_BUYING_STORE
+#endif
+
+// Packet: 0x0818
+packetLen(0x0818, -1) // ZC_ACK_ITEMLIST_BUYING_STORE
+
+// Packet: 0x0819
+#if PACKETVER >= 20180523
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20180511
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20180315
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20180314
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20180228
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20180213
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20180131
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+#elif PACKETVER >= 20180103
+packetLen(0x0819, 2) // CZ_REQ_TRADE_BUYING_STORE
+#endif
+
+// Packet: 0x081a
+packetLen(0x081a, 4) // ZC_FAILED_TRADE_BUYING_STORE_TO_BUYER
+
+// Packet: 0x081b
+#if PACKETVER >= 20181114
+packetLen(0x081b, 12) // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+#elif PACKETVER >= 20180103
+packetLen(0x081b, 10) // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+#endif
+
+// Packet: 0x081c
+packetLen(0x081c, 10) // ZC_ITEM_DELETE_BUYING_STORE
+
+// Packet: 0x081d
+packetLen(0x081d, 22) // ZC_EL_INIT
+
+// Packet: 0x081e
+packetLen(0x081e, 8) // ZC_EL_PAR_CHANGE
+
+// Packet: 0x081f
+packetLen(0x081f, -1) // ZC_BROADCAST4
+
+// Packet: 0x0820
+packetLen(0x0820, 11) // ZC_COSTUME_SPRITE_CHANGE
+
+// Packet: 0x0821
+packetLen(0x0821, 2) // AC_OTP_USER
+
+// Packet: 0x0822
+packetLen(0x0822, 9) // CA_OTP_AUTH_REQ
+
+// Packet: 0x0823
+packetLen(0x0823, -1) // AC_OTP_AUTH_ACK
+
+// Packet: 0x0824
+#if PACKETVER >= 20181114
+packetLen(0x0824, 8) // ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER
+#elif PACKETVER >= 20180103
+packetLen(0x0824, 6) // ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER
+#endif
+
+// Packet: 0x0825
+packetLen(0x0825, -1) // CA_SSO_LOGIN_REQ
+
+// Packet: 0x0827
+packetLen(0x0827, 6) // CH_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0828
+packetLen(0x0828, 14) // HC_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0829
+packetLen(0x0829, 12) // CH_DELETE_CHAR3
+
+// Packet: 0x082a
+packetLen(0x082a, 10) // HC_DELETE_CHAR3
+
+// Packet: 0x082b
+packetLen(0x082b, 6) // CH_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082c
+packetLen(0x082c, 10) // HC_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082d
+packetLen(0x082d, -1) // HC_ACCEPT_ENTER2
+
+// Packet: 0x0835
+#if PACKETVER >= 20180523
+packetLen(0x0835, -1) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20180511
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20180315
+packetLen(0x0835, -1) // CZ_SEARCH_STORE_INFO
+#elif PACKETVER >= 20180103
+packetLen(0x0835, 2) // CZ_SEARCH_STORE_INFO
+#endif
+
+// Packet: 0x0836
+packetLen(0x0836, -1) // ZC_SEARCH_STORE_INFO_ACK
+
+// Packet: 0x0837
+packetLen(0x0837, 3) // ZC_SEARCH_STORE_INFO_FAILED
+
+// Packet: 0x0838
+#if PACKETVER >= 20180314
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20180228
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20180213
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20180131
+packetLen(0x0838, 12) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#elif PACKETVER >= 20180103
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#endif
+
+// Packet: 0x0839
+packetLen(0x0839, 66) // ZC_ACK_BAN_GUILD_SSO
+
+// Packet: 0x083a
+packetLen(0x083a, 5) // ZC_OPEN_SEARCH_STORE_INFO
+
+// Packet: 0x083b
+packetLen(0x083b, 2) // CZ_CLOSE_SEARCH_STORE_INFO
+
+// Packet: 0x083c
+#if PACKETVER >= 20181114
+packetLen(0x083c, 14) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20180523
+packetLen(0x083c, 12) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20180511
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20180315
+packetLen(0x083c, 12) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20180314
+packetLen(0x083c, 5) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20180228
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20180213
+packetLen(0x083c, 2) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20180131
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20180117
+packetLen(0x083c, 6) // CZ_SSILIST_ITEM_CLICK
+#elif PACKETVER >= 20180103
+packetLen(0x083c, 10) // CZ_SSILIST_ITEM_CLICK
+#endif
+
+// Packet: 0x083d
+packetLen(0x083d, 6) // ZC_SSILIST_ITEM_CLICK_ACK
+
+// Packet: 0x083e
+packetLen(0x083e, 26) // AC_REFUSE_LOGIN2
+
+// Packet: 0x0840
+packetLen(0x0840, -1) // HC_NOTIFY_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0841
+packetLen(0x0841, 4) // CH_SELECT_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0842
+packetLen(0x0842, 6) // CZ_RECALL_SSO
+
+// Packet: 0x0843
+packetLen(0x0843, 6) // CZ_REMOVE_AID_SSO
+
+// Packet: 0x0844
+packetLen(0x0844, 2) // CZ_SE_CASHSHOP_OPEN
+
+// Packet: 0x0845
+packetLen(0x0845, 10) // ZC_SE_CASHSHOP_OPEN
+
+// Packet: 0x0846
+packetLen(0x0846, 4) // CZ_REQ_SE_CASH_TAB_CODE
+
+// Packet: 0x0847
+packetLen(0x0847, -1) // ZC_ACK_SE_CASH_ITEM_LIST
+
+// Packet: 0x0848
+packetLen(0x0848, -1) // CZ_SE_PC_BUY_CASHITEM_LIST
+
+// Packet: 0x0849
+packetLen(0x0849, 16) // ZC_SE_PC_BUY_CASHITEM_RESULT
+
+// Packet: 0x084a
+packetLen(0x084a, 2) // CZ_SE_CASHSHOP_CLOSE
+
+// Packet: 0x084b
+#if PACKETVER >= 20181114
+packetLen(0x084b, 21) // ZC_ITEM_FALL_ENTRY4
+#elif PACKETVER >= 20180103
+packetLen(0x084b, 19) // ZC_ITEM_FALL_ENTRY4
+#endif
+
+// Packet: 0x084c
+packetLen(0x084c, 10) // CZ_MACRO_USE_SKILL
+
+// Packet: 0x084d
+packetLen(0x084d, 10) // CZ_MACRO_USE_SKILL_TOGROUND
+
+// Packet: 0x084e
+packetLen(0x084e, 5) // CZ_MACRO_REQUEST_MOVE
+
+// Packet: 0x084f
+packetLen(0x084f, 6) // CZ_MACRO_ITEM_PICKUP
+
+// Packet: 0x0850
+packetLen(0x0850, 7) // CZ_MACRO_REQUEST_ACT
+
+// Packet: 0x0851
+packetLen(0x0851, -1) // ZC_GPK_DYNCODE
+
+// Packet: 0x0852
+packetLen(0x0852, 2) // CZ_GPK_DYNCODE_RELOAD
+
+// Packet: 0x0853
+packetLen(0x0853, -1) // ZC_GPK_AUTH
+
+// Packet: 0x0854
+packetLen(0x0854, -1) // CZ_GPK_AUTH
+
+// Packet: 0x0855
+packetLen(0x0855, 6) // ZC_MACRO_ITEMPICKUP_FAIL
+
+// Packet: 0x0856
+packetLen(0x0856, -1) // ZC_NOTIFY_MOVEENTRY8
+
+// Packet: 0x0857
+packetLen(0x0857, -1) // ZC_NOTIFY_STANDENTRY7
+
+// Packet: 0x0858
+packetLen(0x0858, -1) // ZC_NOTIFY_NEWENTRY6
+
+// Packet: 0x0859
+packetLen(0x0859, -1) // ZC_EQUIPWIN_MICROSCOPE2
+
+// Packet: 0x085a
+#if PACKETVER >= 20180221
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20180213
+packetLen(0x085a, -1) // ZC_REASSEMBLY_AUTH01
+#elif PACKETVER >= 20180103
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+#endif
+
+// Packet: 0x085b
+#if PACKETVER >= 20180228
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20180221
+packetLen(0x085b, 10) // ZC_REASSEMBLY_AUTH02
+#elif PACKETVER >= 20180103
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+#endif
+
+// Packet: 0x085c
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+
+// Packet: 0x085d
+#if PACKETVER >= 20180315
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20180314
+packetLen(0x085d, 26) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20180221
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20180213
+packetLen(0x085d, 5) // ZC_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20180103
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x085e
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+
+// Packet: 0x085f
+#if PACKETVER >= 20180523
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20180511
+packetLen(0x085f, 6) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20180315
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20180314
+packetLen(0x085f, -1) // ZC_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20180103
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x0860
+#if PACKETVER >= 20180117
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20180103
+packetLen(0x0860, 5) // ZC_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x0861
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+
+// Packet: 0x0862
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+
+// Packet: 0x0863
+#if PACKETVER >= 20180523
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20180511
+packetLen(0x0863, 6) // ZC_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20180103
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x0864
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+
+// Packet: 0x0865
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+
+// Packet: 0x0866
+#if PACKETVER >= 20180315
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20180314
+packetLen(0x0866, 5) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20180131
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20180103
+packetLen(0x0866, -1) // ZC_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0867
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+
+// Packet: 0x0868
+#if PACKETVER >= 20180221
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20180213
+packetLen(0x0868, 18) // ZC_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20180103
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0869
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+
+// Packet: 0x086a
+#if PACKETVER >= 20180228
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20180221
+packetLen(0x086a, 8) // ZC_REASSEMBLY_AUTH17
+#elif PACKETVER >= 20180103
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+#endif
+
+// Packet: 0x086b
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+
+// Packet: 0x086c
+#if PACKETVER >= 20180523
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20180511
+packetLen(0x086c, 7) // ZC_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20180103
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x086d
+#if PACKETVER >= 20180117
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20180103
+packetLen(0x086d, 26) // ZC_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x086e
+#if PACKETVER >= 20180131
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20180117
+packetLen(0x086e, 10) // ZC_REASSEMBLY_AUTH21
+#elif PACKETVER >= 20180103
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+#endif
+
+// Packet: 0x086f
+#if PACKETVER >= 20180131
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20180117
+packetLen(0x086f, 6) // ZC_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20180103
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x0870
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+
+// Packet: 0x0871
+#if PACKETVER >= 20180117
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+#elif PACKETVER >= 20180103
+packetLen(0x0871, 6) // ZC_REASSEMBLY_AUTH24
+#endif
+
+// Packet: 0x0872
+#if PACKETVER >= 20180117
+packetLen(0x0872, 2)
+#elif PACKETVER >= 20180103
+packetLen(0x0872, -1)
+#endif
+
+// Packet: 0x0873
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+
+// Packet: 0x0874
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+
+// Packet: 0x0875
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+
+// Packet: 0x0876
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+
+// Packet: 0x0877
+#if PACKETVER >= 20180523
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20180511
+packetLen(0x0877, 8) // ZC_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20180103
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x0878
+#if PACKETVER >= 20180315
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20180314
+packetLen(0x0878, 8) // ZC_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20180103
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x0879
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+
+// Packet: 0x087a
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+
+// Packet: 0x087b
+#if PACKETVER >= 20180221
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20180213
+packetLen(0x087b, 6) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20180117
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20180103
+packetLen(0x087b, 8) // ZC_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x087c
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+
+// Packet: 0x087d
+#if PACKETVER >= 20180131
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20180117
+packetLen(0x087d, 19) // ZC_REASSEMBLY_AUTH36
+#elif PACKETVER >= 20180103
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+#endif
+
+// Packet: 0x087e
+#if PACKETVER >= 20180523
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20180511
+packetLen(0x087e, -1) // ZC_REASSEMBLY_AUTH37
+#elif PACKETVER >= 20180103
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+#endif
+
+// Packet: 0x087f
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+
+// Packet: 0x0880
+#if PACKETVER >= 20180523
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20180511
+packetLen(0x0880, 6) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20180228
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20180221
+packetLen(0x0880, 19) // ZC_REASSEMBLY_AUTH39
+#elif PACKETVER >= 20180103
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+#endif
+
+// Packet: 0x0881
+#if PACKETVER >= 20180131
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20180117
+packetLen(0x0881, 10) // ZC_REASSEMBLY_AUTH40
+#elif PACKETVER >= 20180103
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+#endif
+
+// Packet: 0x0882
+#if PACKETVER >= 20180221
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20180213
+packetLen(0x0882, 12) // ZC_REASSEMBLY_AUTH41
+#elif PACKETVER >= 20180103
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+#endif
+
+// Packet: 0x0883
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+
+// Packet: 0x0884
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+
+// Packet: 0x0885
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+
+// Packet: 0x0886
+#if PACKETVER >= 20180131
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20180117
+packetLen(0x0886, 6) // CZ_REASSEMBLY_AUTH03
+#elif PACKETVER >= 20180103
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+#endif
+
+// Packet: 0x0887
+#if PACKETVER >= 20180221
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20180213
+packetLen(0x0887, -1) // CZ_REASSEMBLY_AUTH04
+#elif PACKETVER >= 20180103
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+#endif
+
+// Packet: 0x0888
+#if PACKETVER >= 20180221
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20180213
+packetLen(0x0888, 6) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20180117
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+#elif PACKETVER >= 20180103
+packetLen(0x0888, 7) // CZ_REASSEMBLY_AUTH05
+#endif
+
+// Packet: 0x0889
+#if PACKETVER >= 20180523
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20180511
+packetLen(0x0889, 8) // CZ_REASSEMBLY_AUTH06
+#elif PACKETVER >= 20180103
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+#endif
+
+// Packet: 0x088a
+#if PACKETVER >= 20180221
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20180213
+packetLen(0x088a, 4) // CZ_REASSEMBLY_AUTH07
+#elif PACKETVER >= 20180103
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+#endif
+
+// Packet: 0x088b
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+
+// Packet: 0x088c
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+
+// Packet: 0x088d
+#if PACKETVER >= 20180315
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20180314
+packetLen(0x088d, 36) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20180228
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20180221
+packetLen(0x088d, 6) // CZ_REASSEMBLY_AUTH10
+#elif PACKETVER >= 20180103
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+#endif
+
+// Packet: 0x088e
+#if PACKETVER >= 20180221
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20180213
+packetLen(0x088e, 6) // CZ_REASSEMBLY_AUTH11
+#elif PACKETVER >= 20180103
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+#endif
+
+// Packet: 0x088f
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+
+// Packet: 0x0890
+#if PACKETVER >= 20180131
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20180117
+packetLen(0x0890, 8) // CZ_REASSEMBLY_AUTH13
+#elif PACKETVER >= 20180103
+packetLen(0x0890, 6) // CZ_REASSEMBLY_AUTH13
+#endif
+
+// Packet: 0x0891
+#if PACKETVER >= 20180315
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20180314
+packetLen(0x0891, 8) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20180131
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20180117
+packetLen(0x0891, 6) // CZ_REASSEMBLY_AUTH14
+#elif PACKETVER >= 20180103
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+#endif
+
+// Packet: 0x0892
+#if PACKETVER >= 20180228
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20180221
+packetLen(0x0892, 6) // CZ_REASSEMBLY_AUTH15
+#elif PACKETVER >= 20180103
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+#endif
+
+// Packet: 0x0893
+#if PACKETVER >= 20180523
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20180511
+packetLen(0x0893, 18) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20180131
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20180117
+packetLen(0x0893, 7) // CZ_REASSEMBLY_AUTH16
+#elif PACKETVER >= 20180103
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+#endif
+
+// Packet: 0x0894
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+
+// Packet: 0x0895
+#if PACKETVER >= 20180228
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20180221
+packetLen(0x0895, 6) // CZ_REASSEMBLY_AUTH18
+#elif PACKETVER >= 20180103
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+#endif
+
+// Packet: 0x0896
+#if PACKETVER >= 20180523
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20180511
+packetLen(0x0896, 19) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20180117
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+#elif PACKETVER >= 20180103
+packetLen(0x0896, 10) // CZ_REASSEMBLY_AUTH19
+#endif
+
+// Packet: 0x0897
+#if PACKETVER >= 20180315
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20180314
+packetLen(0x0897, 6) // CZ_REASSEMBLY_AUTH20
+#elif PACKETVER >= 20180103
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+#endif
+
+// Packet: 0x0898
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+
+// Packet: 0x0899
+#if PACKETVER >= 20180523
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20180511
+packetLen(0x0899, 12) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20180315
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20180314
+packetLen(0x0899, 8) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20180221
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20180213
+packetLen(0x0899, 26) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20180131
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20180117
+packetLen(0x0899, -1) // CZ_REASSEMBLY_AUTH22
+#elif PACKETVER >= 20180103
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+#endif
+
+// Packet: 0x089a
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+
+// Packet: 0x089b
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+
+// Packet: 0x089c
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+
+// Packet: 0x089d
+#if PACKETVER >= 20180131
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20180117
+packetLen(0x089d, -1) // CZ_REASSEMBLY_AUTH26
+#elif PACKETVER >= 20180103
+packetLen(0x089d, 8) // CZ_REASSEMBLY_AUTH26
+#endif
+
+// Packet: 0x089e
+#if PACKETVER >= 20180315
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20180314
+packetLen(0x089e, -1) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20180131
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20180117
+packetLen(0x089e, 5) // CZ_REASSEMBLY_AUTH27
+#elif PACKETVER >= 20180103
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+#endif
+
+// Packet: 0x089f
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+
+// Packet: 0x08a0
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+
+// Packet: 0x08a1
+#if PACKETVER >= 20180315
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20180314
+packetLen(0x08a1, 4) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20180228
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20180221
+packetLen(0x08a1, 5) // CZ_REASSEMBLY_AUTH30
+#elif PACKETVER >= 20180103
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+#endif
+
+// Packet: 0x08a2
+#if PACKETVER >= 20180523
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20180511
+packetLen(0x08a2, 6) // CZ_REASSEMBLY_AUTH31
+#elif PACKETVER >= 20180103
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+#endif
+
+// Packet: 0x08a3
+#if PACKETVER >= 20180228
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20180221
+packetLen(0x08a3, 10) // CZ_REASSEMBLY_AUTH32
+#elif PACKETVER >= 20180103
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+#endif
+
+// Packet: 0x08a4
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+
+// Packet: 0x08a5
+#if PACKETVER >= 20180523
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20180511
+packetLen(0x08a5, 6) // CZ_REASSEMBLY_AUTH34
+#elif PACKETVER >= 20180103
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+#endif
+
+// Packet: 0x08a6
+#if PACKETVER >= 20180117
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+#elif PACKETVER >= 20180103
+packetLen(0x08a6, 6) // CZ_REASSEMBLY_AUTH35
+#endif
+
+// Packet: 0x08a7
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+
+// Packet: 0x08a8
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+
+// Packet: 0x08a9
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+
+// Packet: 0x08aa
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+
+// Packet: 0x08ab
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+
+// Packet: 0x08ac
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+
+// Packet: 0x08ad
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+
+// Packet: 0x08af
+packetLen(0x08af, 10) // HC_WAITING_LOGIN
+
+// Packet: 0x08b0
+packetLen(0x08b0, 17) // CH_WAITING_LOGIN
+
+// Packet: 0x08b1
+packetLen(0x08b1, -1) // ZC_MCSTORE_NOTMOVEITEM_LIST
+
+// Packet: 0x08b2
+packetLen(0x08b2, -1) // AC_REALNAME_AUTH
+
+// Packet: 0x08b3
+packetLen(0x08b3, -1) // ZC_SHOWSCRIPT
+
+// Packet: 0x08b4
+packetLen(0x08b4, 2) // ZC_START_COLLECTION
+
+// Packet: 0x08b5
+packetLen(0x08b5, 6) // CZ_TRYCOLLECTION
+
+// Packet: 0x08b6
+packetLen(0x08b6, 3) // ZC_TRYCOLLECTION
+
+// Packet: 0x08b8
+packetLen(0x08b8, 10) // CH_SECOND_PASSWD_ACK
+
+// Packet: 0x08b9
+packetLen(0x08b9, 12) // HC_SECOND_PASSWD_LOGIN
+
+// Packet: 0x08ba
+packetLen(0x08ba, 10) // CH_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bb
+packetLen(0x08bb, 8) // HC_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bc
+packetLen(0x08bc, 10) // CH_DELETE_SECOND_PASSWD
+
+// Packet: 0x08bd
+packetLen(0x08bd, 8) // HC_DELETE_SECOND_PASSWD
+
+// Packet: 0x08be
+packetLen(0x08be, 14) // CH_EDIT_SECOND_PASSWD
+
+// Packet: 0x08bf
+packetLen(0x08bf, 8) // HC_EDIT_SECOND_PASSWD
+
+// Packet: 0x08c0
+packetLen(0x08c0, -1) // ZC_ACK_SE_CASH_ITEM_LIST2
+
+// Packet: 0x08c1
+packetLen(0x08c1, 2) // CZ_MACRO_START
+
+// Packet: 0x08c2
+packetLen(0x08c2, 2) // CZ_MACRO_STOP
+
+// Packet: 0x08c3
+packetLen(0x08c3, 10) // CH_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c4
+packetLen(0x08c4, 8) // HC_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c5
+packetLen(0x08c5, 6) // CH_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c6
+packetLen(0x08c6, 4) // HC_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c7
+packetLen(0x08c7, -1) // ZC_SKILL_ENTRY3
+
+// Packet: 0x08c8
+packetLen(0x08c8, 34) // ZC_NOTIFY_ACT3
+
+// Packet: 0x08c9
+packetLen(0x08c9, 2) // CZ_REQ_SCHEDULER_CASHITEM
+
+// Packet: 0x08ca
+packetLen(0x08ca, -1) // ZC_ACK_SCHEDULER_CASHITEM
+
+// Packet: 0x08cb
+packetLen(0x08cb, -1) // ZC_PERSONAL_INFOMATION
+
+// Packet: 0x08cc
+packetLen(0x08cc, 109) // CA_LOGIN5
+
+// Packet: 0x08cd
+packetLen(0x08cd, 10) // ZC_STOPMOVE_FORCE
+
+// Packet: 0x08ce
+packetLen(0x08ce, 2) // ZC_FAILED_GET_ITEM_FROM_ZONEDA
+
+// Packet: 0x08cf
+packetLen(0x08cf, 10) // ZC_SPIRITS_ATTRIBUTE
+
+// Packet: 0x08d0
+packetLen(0x08d0, 9) // ZC_REQ_WEAR_EQUIP_ACK2
+
+// Packet: 0x08d1
+packetLen(0x08d1, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK2
+
+// Packet: 0x08d2
+packetLen(0x08d2, 10) // ZC_FASTMOVE
+
+// Packet: 0x08d3
+packetLen(0x08d3, 10) // ZC_SE_CASHSHOP_UPDATE
+
+// Packet: 0x08d4
+packetLen(0x08d4, 8) // CH_REQ_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d5
+packetLen(0x08d5, -1) // HC_ACK_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d6
+packetLen(0x08d6, 6) // ZC_CLEAR_DIALOG
+
+// Packet: 0x08d7
+packetLen(0x08d7, 28) // CZ_REQ_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d8
+packetLen(0x08d8, 27) // ZC_ACK_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d9
+packetLen(0x08d9, 30) // ZC_NOTIFY_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08da
+packetLen(0x08da, 26) // CZ_REQ_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08db
+packetLen(0x08db, 27) // ZC_ACK_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08dc
+packetLen(0x08dc, 26) // ZC_NOTIFY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08dd
+packetLen(0x08dd, 27) // CZ_REPLY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08de
+packetLen(0x08de, 27) // ZC_REPLY_ACK_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08df
+packetLen(0x08df, 50) // ZC_NOTIFY_LOBBY_ADMISSION
+
+// Packet: 0x08e0
+packetLen(0x08e0, 51) // CZ_REPLY_LOBBY_ADMISSION
+
+// Packet: 0x08e1
+packetLen(0x08e1, 51) // ZC_REPLY_ACK_LOBBY_ADMISSION
+
+// Packet: 0x08e2
+packetLen(0x08e2, 27) // ZC_NAVIGATION_ACTIVE
+
+// Packet: 0x08e3
+packetLen(0x08e3, 157) // HC_UPDATE_CHARINFO
+
+// Packet: 0x08e4
+packetLen(0x08e4, 6) // AC_SHUTDOWN_INFO
+
+// Packet: 0x08fc
+packetLen(0x08fc, 30) // CH_REQ_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fd
+packetLen(0x08fd, 6) // CH_ACK_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fe
+packetLen(0x08fe, -1) // ZC_HUNTING_QUEST_INFO
+
+// Packet: 0x08ff
+packetLen(0x08ff, 24) // ZC_EFST_SET_ENTER
+
+// Packet: 0x0900
+packetLen(0x0900, -1) // ZC_INVENTORY_ITEMLIST_NORMAL
+
+// Packet: 0x0901
+packetLen(0x0901, -1) // ZC_INVENTORY_ITEMLIST_EQUIP
+
+// Packet: 0x0902
+packetLen(0x0902, -1) // ZC_CART_ITEMLIST_NORMAL
+
+// Packet: 0x0903
+packetLen(0x0903, -1) // ZC_CART_ITEMLIST_EQUIP
+
+// Packet: 0x0904
+packetLen(0x0904, -1) // ZC_STORE_ITEMLIST_NORMAL
+
+// Packet: 0x0905
+packetLen(0x0905, -1) // ZC_STORE_ITEMLIST_EQUIP
+
+// Packet: 0x0906
+packetLen(0x0906, -1) // ZC_MICROSCOPE
+
+// Packet: 0x0907
+packetLen(0x0907, 5) // CZ_INVENTORY_TAB
+
+// Packet: 0x0908
+packetLen(0x0908, 5) // ZC_INVENTORY_TAB
+
+// Packet: 0x090a
+packetLen(0x090a, 26) // CZ_REQ_ENTRY_QUEUE_RANKING
+
+// Packet: 0x090d
+packetLen(0x090d, -1) // ZC_PREMIUM_CAMPAIGN_INFO
+
+// Packet: 0x090e
+packetLen(0x090e, 2) // ZC_ENTRY_QUEUE_INIT
+
+// Packet: 0x090f
+packetLen(0x090f, -1) // ZC_NOTIFY_NEWENTRY7
+
+// Packet: 0x0910
+packetLen(0x0910, 10) // CZ_REQ_PARTY_NAME
+
+// Packet: 0x0911
+packetLen(0x0911, 30) // ZC_ACK_PARTY_NAME
+
+// Packet: 0x0912
+packetLen(0x0912, 10) // CZ_REQ_GUILD_NAME
+
+// Packet: 0x0913
+packetLen(0x0913, 30) // ZC_ACK_GUILD_NAME
+
+// Packet: 0x0914
+packetLen(0x0914, -1) // ZC_NOTIFY_MOVEENTRY9
+
+// Packet: 0x0915
+packetLen(0x0915, -1) // ZC_NOTIFY_STANDENTRY8
+
+// Packet: 0x0916
+packetLen(0x0916, 26) // CZ_REQ_JOIN_GUILD2
+
+// Packet: 0x0917
+#if PACKETVER >= 20180315
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20180314
+packetLen(0x0917, -1) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20180221
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20180213
+packetLen(0x0917, 7) // ZC_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20180103
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+#endif
+
+// Packet: 0x0918
+#if PACKETVER >= 20180315
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20180314
+packetLen(0x0918, 7) // ZC_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20180103
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+#endif
+
+// Packet: 0x0919
+#if PACKETVER >= 20180523
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20180511
+packetLen(0x0919, 5) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20180131
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20180117
+packetLen(0x0919, 6) // ZC_REASSEMBLY_AUTH45
+#elif PACKETVER >= 20180103
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+#endif
+
+// Packet: 0x091a
+#if PACKETVER >= 20180523
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20180511
+packetLen(0x091a, -1) // ZC_REASSEMBLY_AUTH46
+#elif PACKETVER >= 20180103
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+#endif
+
+// Packet: 0x091b
+#if PACKETVER >= 20180228
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20180221
+packetLen(0x091b, 90) // ZC_PRNPC_STATE
+#elif PACKETVER >= 20180103
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+#endif
+
+// Packet: 0x091c
+#if PACKETVER >= 20180131
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20180117
+packetLen(0x091c, 8) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#elif PACKETVER >= 20180103
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+#endif
+
+// Packet: 0x091d
+#if PACKETVER >= 20180523
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20180511
+packetLen(0x091d, -1) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20180221
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20180213
+packetLen(0x091d, 5) // ZC_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20180103
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+#endif
+
+// Packet: 0x091e
+#if PACKETVER >= 20180117
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+#elif PACKETVER >= 20180103
+packetLen(0x091e, 6) // ZC_REASSEMBLY_AUTH50
+#endif
+
+// Packet: 0x091f
+#if PACKETVER >= 20180315
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20180314
+packetLen(0x091f, 10) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20180131
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20180117
+packetLen(0x091f, 90) // ZC_REASSEMBLY_AUTH51
+#elif PACKETVER >= 20180103
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+#endif
+
+// Packet: 0x0920
+#if PACKETVER >= 20180523
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20180511
+packetLen(0x0920, 4) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20180315
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20180314
+packetLen(0x0920, 6) // ZC_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20180103
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+#endif
+
+// Packet: 0x0921
+#if PACKETVER >= 20180228
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20180221
+packetLen(0x0921, -1) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20180131
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20180117
+packetLen(0x0921, 5) // ZC_REASSEMBLY_AUTH53
+#elif PACKETVER >= 20180103
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+#endif
+
+// Packet: 0x0922
+#if PACKETVER >= 20180221
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20180213
+packetLen(0x0922, -1) // ZC_REASSEMBLY_AUTH54
+#elif PACKETVER >= 20180103
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+#endif
+
+// Packet: 0x0923
+#if PACKETVER >= 20180315
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20180314
+packetLen(0x0923, 12) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20180228
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20180221
+packetLen(0x0923, 5) // ZC_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20180103
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+#endif
+
+// Packet: 0x0924
+#if PACKETVER >= 20180117
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20180103
+packetLen(0x0924, 4) // ZC_REASSEMBLY_AUTH56
+#endif
+
+// Packet: 0x0925
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+
+// Packet: 0x0926
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+
+// Packet: 0x0927
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+
+// Packet: 0x0928
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+
+// Packet: 0x0929
+#if PACKETVER >= 20180131
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20180117
+packetLen(0x0929, 18) // ZC_REASSEMBLY_AUTH61
+#elif PACKETVER >= 20180103
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+#endif
+
+// Packet: 0x092a
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+
+// Packet: 0x092b
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+
+// Packet: 0x092c
+#if PACKETVER >= 20180523
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20180511
+packetLen(0x092c, 10) // ZC_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20180103
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+#endif
+
+// Packet: 0x092d
+#if PACKETVER >= 20180523
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20180511
+packetLen(0x092d, 26) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20180228
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20180221
+packetLen(0x092d, 26) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20180131
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20180117
+packetLen(0x092d, 4) // ZC_REASSEMBLY_AUTH65
+#elif PACKETVER >= 20180103
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+#endif
+
+// Packet: 0x092e
+#if PACKETVER >= 20180523
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20180511
+packetLen(0x092e, -1) // ZC_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20180103
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+#endif
+
+// Packet: 0x092f
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+
+// Packet: 0x0930
+#if PACKETVER >= 20180315
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20180314
+packetLen(0x0930, 6) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20180228
+packetLen(0x0930, 36) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20180221
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20180213
+packetLen(0x0930, 8) // ZC_REASSEMBLY_AUTH68
+#elif PACKETVER >= 20180103
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+#endif
+
+// Packet: 0x0931
+#if PACKETVER >= 20180315
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20180314
+packetLen(0x0931, 6) // ZC_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20180103
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+#endif
+
+// Packet: 0x0932
+#if PACKETVER >= 20180228
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20180221
+packetLen(0x0932, -1) // ZC_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20180103
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+#endif
+
+// Packet: 0x0933
+#if PACKETVER >= 20180131
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20180117
+packetLen(0x0933, 12) // ZC_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20180103
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+#endif
+
+// Packet: 0x0934
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+
+// Packet: 0x0935
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+
+// Packet: 0x0936
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+
+// Packet: 0x0937
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+
+// Packet: 0x0938
+#if PACKETVER >= 20180117
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+#elif PACKETVER >= 20180103
+packetLen(0x0938, 90) // ZC_REASSEMBLY_AUTH76
+#endif
+
+// Packet: 0x0939
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+
+// Packet: 0x093a
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+
+// Packet: 0x093b
+#if PACKETVER >= 20180228
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20180221
+packetLen(0x093b, 12) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20180117
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+#elif PACKETVER >= 20180103
+packetLen(0x093b, 26) // ZC_REASSEMBLY_AUTH79
+#endif
+
+// Packet: 0x093c
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+
+// Packet: 0x093d
+#if PACKETVER >= 20180228
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20180221
+packetLen(0x093d, 26) // ZC_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20180103
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+#endif
+
+// Packet: 0x093e
+#if PACKETVER >= 20180228
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20180221
+packetLen(0x093e, 8) // ZC_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20180103
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+#endif
+
+// Packet: 0x093f
+#if PACKETVER >= 20180315
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20180314
+packetLen(0x093f, 6) // ZC_REASSEMBLY_AUTH83
+#elif PACKETVER >= 20180103
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+#endif
+
+// Packet: 0x0940
+#if PACKETVER >= 20180207
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20180131
+packetLen(0x0940, 90) // ZC_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20180103
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+#endif
+
+// Packet: 0x0941
+#if PACKETVER >= 20180221
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20180213
+packetLen(0x0941, 19) // CZ_REASSEMBLY_AUTH43
+#elif PACKETVER >= 20180103
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+#endif
+
+// Packet: 0x0942
+#if PACKETVER >= 20180523
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20180511
+packetLen(0x0942, 5) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20180228
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20180221
+packetLen(0x0942, 36) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20180213
+packetLen(0x0942, 8) // CZ_REASSEMBLY_AUTH44
+#elif PACKETVER >= 20180103
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+#endif
+
+// Packet: 0x0943
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+
+// Packet: 0x0944
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+
+// Packet: 0x0945
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+
+// Packet: 0x0946
+#if PACKETVER >= 20180315
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20180314
+packetLen(0x0946, 90) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20180131
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20180117
+packetLen(0x0946, 26) // CZ_REASSEMBLY_AUTH48
+#elif PACKETVER >= 20180103
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+#endif
+
+// Packet: 0x0947
+#if PACKETVER >= 20180221
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20180213
+packetLen(0x0947, 6) // CZ_REASSEMBLY_AUTH49
+#elif PACKETVER >= 20180103
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+#endif
+
+// Packet: 0x0948
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+
+// Packet: 0x0949
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+
+// Packet: 0x094a
+#if PACKETVER >= 20180523
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20180511
+packetLen(0x094a, 90) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20180315
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20180314
+packetLen(0x094a, 10) // CZ_REASSEMBLY_AUTH52
+#elif PACKETVER >= 20180103
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+#endif
+
+// Packet: 0x094b
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+
+// Packet: 0x094c
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+
+// Packet: 0x094d
+#if PACKETVER >= 20180221
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20180213
+packetLen(0x094d, 10) // CZ_REASSEMBLY_AUTH55
+#elif PACKETVER >= 20180103
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+#endif
+
+// Packet: 0x094e
+#if PACKETVER >= 20180315
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20180314
+packetLen(0x094e, 5) // CZ_REASSEMBLY_AUTH56
+#elif PACKETVER >= 20180103
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+#endif
+
+// Packet: 0x094f
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+
+// Packet: 0x0950
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+
+// Packet: 0x0951
+#if PACKETVER >= 20180228
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20180221
+packetLen(0x0951, 18) // CZ_REASSEMBLY_AUTH59
+#elif PACKETVER >= 20180103
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+#endif
+
+// Packet: 0x0952
+#if PACKETVER >= 20180228
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20180221
+packetLen(0x0952, 4) // CZ_REASSEMBLY_AUTH60
+#elif PACKETVER >= 20180103
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+#endif
+
+// Packet: 0x0953
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+
+// Packet: 0x0954
+#if PACKETVER >= 20180315
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20180314
+packetLen(0x0954, 18) // CZ_REASSEMBLY_AUTH62
+#elif PACKETVER >= 20180103
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+#endif
+
+// Packet: 0x0955
+#if PACKETVER >= 20180523
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20180511
+packetLen(0x0955, 26) // CZ_REASSEMBLY_AUTH63
+#elif PACKETVER >= 20180103
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+#endif
+
+// Packet: 0x0956
+#if PACKETVER >= 20180523
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20180511
+packetLen(0x0956, 8) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20180315
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20180314
+packetLen(0x0956, 6) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20180117
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+#elif PACKETVER >= 20180103
+packetLen(0x0956, -1) // CZ_REASSEMBLY_AUTH64
+#endif
+
+// Packet: 0x0957
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+
+// Packet: 0x0958
+#if PACKETVER >= 20180315
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20180314
+packetLen(0x0958, -1) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20180228
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20180221
+packetLen(0x0958, 7) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20180213
+packetLen(0x0958, 26) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20180117
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+#elif PACKETVER >= 20180103
+packetLen(0x0958, 19) // CZ_REASSEMBLY_AUTH66
+#endif
+
+// Packet: 0x0959
+#if PACKETVER >= 20180228
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20180221
+packetLen(0x0959, 8) // CZ_REASSEMBLY_AUTH67
+#elif PACKETVER >= 20180103
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+#endif
+
+// Packet: 0x095a
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+
+// Packet: 0x095b
+#if PACKETVER >= 20180117
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+#elif PACKETVER >= 20180103
+packetLen(0x095b, 36) // CZ_REASSEMBLY_AUTH69
+#endif
+
+// Packet: 0x095c
+#if PACKETVER >= 20180523
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20180511
+packetLen(0x095c, 10) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20180221
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20180213
+packetLen(0x095c, -1) // CZ_REASSEMBLY_AUTH70
+#elif PACKETVER >= 20180103
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+#endif
+
+// Packet: 0x095d
+#if PACKETVER >= 20180228
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20180221
+packetLen(0x095d, 6) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20180117
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+#elif PACKETVER >= 20180103
+packetLen(0x095d, 6) // CZ_REASSEMBLY_AUTH71
+#endif
+
+// Packet: 0x095e
+#if PACKETVER >= 20180131
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20180117
+packetLen(0x095e, -1) // CZ_REASSEMBLY_AUTH72
+#elif PACKETVER >= 20180103
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+#endif
+
+// Packet: 0x095f
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+
+// Packet: 0x0960
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+
+// Packet: 0x0961
+#if PACKETVER >= 20180523
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20180511
+packetLen(0x0961, 5) // CZ_REASSEMBLY_AUTH75
+#elif PACKETVER >= 20180103
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+#endif
+
+// Packet: 0x0962
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+
+// Packet: 0x0963
+#if PACKETVER >= 20180131
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20180117
+packetLen(0x0963, 5) // CZ_REASSEMBLY_AUTH77
+#elif PACKETVER >= 20180103
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+#endif
+
+// Packet: 0x0964
+#if PACKETVER >= 20180117
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+#elif PACKETVER >= 20180103
+packetLen(0x0964, 6) // CZ_REASSEMBLY_AUTH78
+#endif
+
+// Packet: 0x0965
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+
+// Packet: 0x0966
+#if PACKETVER >= 20180117
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+#elif PACKETVER >= 20180103
+packetLen(0x0966, 8) // CZ_REASSEMBLY_AUTH80
+#endif
+
+// Packet: 0x0967
+#if PACKETVER >= 20180221
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20180207
+packetLen(0x0967, 36) // CZ_REASSEMBLY_AUTH81
+#elif PACKETVER >= 20180103
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+#endif
+
+// Packet: 0x0968
+#if PACKETVER >= 20180523
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20180511
+packetLen(0x0968, 36) // CZ_REASSEMBLY_AUTH82
+#elif PACKETVER >= 20180103
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+#endif
+
+// Packet: 0x0969
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+
+// Packet: 0x096a
+#if PACKETVER >= 20180314
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20180228
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20180213
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20180131
+packetLen(0x096a, 6) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20180117
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+#elif PACKETVER >= 20180103
+packetLen(0x096a, 12) // CZ_REASSEMBLY_AUTH84
+#endif
+
+// Packet: 0x096b
+packetLen(0x096b, 4) // ZC_PRNPC_STATE
+
+// Packet: 0x096c
+packetLen(0x096c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+
+// Packet: 0x096d
+packetLen(0x096d, -1) // ZC_MERGE_ITEM_OPEN
+
+// Packet: 0x096e
+packetLen(0x096e, -1) // CZ_REQ_MERGE_ITEM
+
+// Packet: 0x096f
+packetLen(0x096f, 7) // ZC_ACK_MERGE_ITEM
+
+// Packet: 0x0970
+packetLen(0x0970, 31) // CH_MAKE_CHAR_NOT_STATS
+
+// Packet: 0x0971
+packetLen(0x0971, 6) // ZC_PARTY_RECRUIT_REFUSE_VOLUNTEER_TO_PM
+
+// Packet: 0x0972
+packetLen(0x0972, -1) // ZC_SAY_DIALOG2
+
+// Packet: 0x0973
+packetLen(0x0973, 7) // ZC_WAIT_DIALOG2
+
+// Packet: 0x0974
+packetLen(0x0974, 2) // CZ_CANCEL_MERGE_ITEM
+
+// Packet: 0x0975
+packetLen(0x0975, -1) // ZC_STORE_ITEMLIST_NORMAL_V2
+
+// Packet: 0x0976
+packetLen(0x0976, -1) // ZC_STORE_ITEMLIST_EQUIP_V2
+
+// Packet: 0x0977
+packetLen(0x0977, 14) // ZC_HP_INFO
+
+// Packet: 0x0978
+packetLen(0x0978, 6) // CZ_REQ_BEFORE_WORLD_INFO
+
+// Packet: 0x0979
+packetLen(0x0979, 50) // ZC_ACK_BEFORE_WORLD_INFO
+
+// Packet: 0x097a
+packetLen(0x097a, -1) // ZC_ALL_QUEST_LIST2
+
+// Packet: 0x097b
+packetLen(0x097b, -1) // ZC_PERSONAL_INFOMATION2
+
+// Packet: 0x097c
+packetLen(0x097c, 4) // CZ_REQ_RANKING
+
+// Packet: 0x097d
+packetLen(0x097d, 288) // ZC_ACK_RANKING
+
+// Packet: 0x097e
+packetLen(0x097e, 12) // ZC_UPDATE_RANKING_POINT
+
+// Packet: 0x097f
+packetLen(0x097f, -1) // ZC_SELECTCART
+
+// Packet: 0x0980
+packetLen(0x0980, 7) // CZ_SELECTCART
+
+// Packet: 0x0981
+packetLen(0x0981, -1) // ZC_PERSONAL_INFOMATION_CHN
+
+// Packet: 0x0982
+packetLen(0x0982, 7) // ZC_FATIGUE_CHN
+
+// Packet: 0x0983
+packetLen(0x0983, 29) // ZC_MSG_STATE_CHANGE3
+
+// Packet: 0x0984
+packetLen(0x0984, 28) // ZC_EFST_SET_ENTER2
+
+// Packet: 0x0985
+packetLen(0x0985, -1) // ZC_SKILL_POSTDELAY_LIST2
+
+// Packet: 0x0986
+packetLen(0x0986, 10) // AC_SHUTDOWN_NOTIFY
+
+// Packet: 0x0987
+packetLen(0x0987, -1) // CA_LOGIN6
+
+// Packet: 0x0988
+packetLen(0x0988, 6) // ZC_NOTIFY_CLAN_CONNECTINFO
+
+// Packet: 0x0989
+packetLen(0x0989, 2) // ZC_ACK_CLAN_LEAVE
+
+// Packet: 0x098a
+packetLen(0x098a, -1) // ZC_CLANINFO
+
+// Packet: 0x098b
+packetLen(0x098b, 2) // AC_REQ_NEW_USER
+
+// Packet: 0x098c
+packetLen(0x098c, 4) // CA_ACK_NEW_USER
+
+// Packet: 0x098d
+packetLen(0x098d, -1) // CZ_CLAN_CHAT
+
+// Packet: 0x098e
+packetLen(0x098e, -1) // ZC_NOTIFY_CLAN_CHAT
+
+// Packet: 0x098f
+packetLen(0x098f, -1) // CH_DELETE_CHAR3_EXT
+
+// Packet: 0x0990
+#if PACKETVER >= 20181114
+packetLen(0x0990, 41) // ZC_ITEM_PICKUP_ACK_V5
+#elif PACKETVER >= 20180103
+packetLen(0x0990, 31) // ZC_ITEM_PICKUP_ACK_V5
+#endif
+
+// Packet: 0x0991
+packetLen(0x0991, -1) // ZC_INVENTORY_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0992
+packetLen(0x0992, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0993
+packetLen(0x0993, -1) // ZC_CART_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0994
+packetLen(0x0994, -1) // ZC_CART_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0995
+packetLen(0x0995, -1) // ZC_STORE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0996
+packetLen(0x0996, -1) // ZC_STORE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0997
+packetLen(0x0997, -1) // ZC_EQUIPWIN_MICROSCOPE_V5
+
+// Packet: 0x0998
+packetLen(0x0998, 8) // CZ_REQ_WEAR_EQUIP_V5
+
+// Packet: 0x0999
+packetLen(0x0999, 11) // ZC_ACK_WEAR_EQUIP_V5
+
+// Packet: 0x099a
+packetLen(0x099a, 9) // ZC_ACK_TAKEOFF_EQUIP_V5
+
+// Packet: 0x099b
+packetLen(0x099b, 8) // ZC_MAPPROPERTY_R2
+
+// Packet: 0x099c
+packetLen(0x099c, 6) // CH_REQ_CHARINFO_PER_PAGE
+
+// Packet: 0x099d
+packetLen(0x099d, -1) // HC_ACK_CHARINFO_PER_PAGE
+
+// Packet: 0x099e
+packetLen(0x099e, 12) // HC_QUEUE_ORDER
+
+// Packet: 0x099f
+packetLen(0x099f, -1) // ZC_SKILL_ENTRY4
+
+// Packet: 0x09a0
+packetLen(0x09a0, 6) // HC_CHARLIST_NOTIFY
+
+// Packet: 0x09a1
+packetLen(0x09a1, 2) // CH_CHARLIST_REQ
+
+// Packet: 0x09a2
+packetLen(0x09a2, 6) // AC_REQ_MOBILE_OTP
+
+// Packet: 0x09a3
+packetLen(0x09a3, -1) // CA_ACK_MOBILE_OTP
+
+// Packet: 0x09a4
+packetLen(0x09a4, 18) // ZC_DISPATCH_TIMING_INFO_CHN
+
+// Packet: 0x09a5
+packetLen(0x09a5, 7) // AC_REFUSE_LOGIN3
+
+// Packet: 0x09a6
+packetLen(0x09a6, 12) // ZC_BANKING_CHECK
+
+// Packet: 0x09a7
+packetLen(0x09a7, 10) // CZ_REQ_BANKING_DEPOSIT
+
+// Packet: 0x09a8
+packetLen(0x09a8, 16) // ZC_ACK_BANKING_DEPOSIT
+
+// Packet: 0x09a9
+packetLen(0x09a9, 10) // CZ_REQ_BANKING_WITHDRAW
+
+// Packet: 0x09aa
+packetLen(0x09aa, 16) // ZC_ACK_BANKING_WITHDRAW
+
+// Packet: 0x09ab
+packetLen(0x09ab, 6) // CZ_REQ_BANKING_CHECK
+
+// Packet: 0x09ac
+packetLen(0x09ac, -1) // CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO
+
+// Packet: 0x09ad
+#if PACKETVER >= 20181114
+packetLen(0x09ad, 12) // ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO
+#elif PACKETVER >= 20180103
+packetLen(0x09ad, 10) // ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO
+#endif
+
+// Packet: 0x09ae
+#if PACKETVER >= 20181114
+packetLen(0x09ae, 19) // CZ_REQ_APPLY_BARGAIN_SALE_ITEM
+#elif PACKETVER >= 20180103
+packetLen(0x09ae, 17) // CZ_REQ_APPLY_BARGAIN_SALE_ITEM
+#endif
+
+// Packet: 0x09af
+packetLen(0x09af, 4) // ZC_ACK_APPLY_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b0
+#if PACKETVER >= 20181114
+packetLen(0x09b0, 10) // CZ_REQ_REMOVE_BARGAIN_SALE_ITEM
+#elif PACKETVER >= 20180103
+packetLen(0x09b0, 8) // CZ_REQ_REMOVE_BARGAIN_SALE_ITEM
+#endif
+
+// Packet: 0x09b1
+packetLen(0x09b1, 4) // ZC_ACK_REMOVE_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b2
+#if PACKETVER >= 20181114
+packetLen(0x09b2, 10) // ZC_NOTIFY_BARGAIN_SALE_SELLING
+#elif PACKETVER >= 20180103
+packetLen(0x09b2, 8) // ZC_NOTIFY_BARGAIN_SALE_SELLING
+#endif
+
+// Packet: 0x09b3
+#if PACKETVER >= 20181114
+packetLen(0x09b3, 6) // ZC_NOTIFY_BARGAIN_SALE_CLOSE
+#elif PACKETVER >= 20180103
+packetLen(0x09b3, 4) // ZC_NOTIFY_BARGAIN_SALE_CLOSE
+#endif
+
+// Packet: 0x09b4
+packetLen(0x09b4, 6) // CZ_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b5
+packetLen(0x09b5, 2) // ZC_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b6
+packetLen(0x09b6, 6) // CZ_REQ_OPEN_BANKING
+
+// Packet: 0x09b7
+packetLen(0x09b7, 4) // ZC_ACK_OPEN_BANKING
+
+// Packet: 0x09b8
+packetLen(0x09b8, 6) // CZ_REQ_CLOSE_BANKING
+
+// Packet: 0x09b9
+packetLen(0x09b9, 4) // ZC_ACK_CLOSE_BANKING
+
+// Packet: 0x09ba
+packetLen(0x09ba, 2) // CZ_REQ_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bb
+packetLen(0x09bb, 6) // ZC_ACK_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bc
+packetLen(0x09bc, 6) // CZ_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09bd
+packetLen(0x09bd, 2) // ZC_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09be
+packetLen(0x09be, 2) // CZ_REQ_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09bf
+packetLen(0x09bf, 4) // ZC_ACK_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09c1
+packetLen(0x09c1, 10) // ZC_C_MARKERINFO
+
+// Packet: 0x09c2
+packetLen(0x09c2, -1) // HC_SECRETSCAN_DATA
+
+// Packet: 0x09c3
+#if PACKETVER >= 20181114
+packetLen(0x09c3, 10) // CZ_REQ_COUNT_BARGAIN_SALE_ITEM
+#elif PACKETVER >= 20180103
+packetLen(0x09c3, 8) // CZ_REQ_COUNT_BARGAIN_SALE_ITEM
+#endif
+
+// Packet: 0x09c4
+#if PACKETVER >= 20181114
+packetLen(0x09c4, 10) // ZC_ACK_COUNT_BARGAIN_SALE_ITEM
+#elif PACKETVER >= 20180103
+packetLen(0x09c4, 8) // ZC_ACK_COUNT_BARGAIN_SALE_ITEM
+#endif
+
+// Packet: 0x09c5
+packetLen(0x09c5, 1042) // CS_LOGIN_QUERY
+
+// Packet: 0x09c6
+packetLen(0x09c6, -1) // SC_LOGIN_ANSWER
+
+// Packet: 0x09c7
+packetLen(0x09c7, 18) // SC_LOGIN_ERROR
+
+// Packet: 0x09c8
+packetLen(0x09c8, -1) // CA_LOGIN_OTP
+
+// Packet: 0x09c9
+packetLen(0x09c9, -1) // SC_SOCT
+
+// Packet: 0x09ca
+packetLen(0x09ca, -1) // ZC_SKILL_ENTRY5
+
+// Packet: 0x09cb
+packetLen(0x09cb, 17) // ZC_USE_SKILL2
+
+// Packet: 0x09cc
+packetLen(0x09cc, -1) // ZC_SECRETSCAN_DATA
+
+// Packet: 0x09cd
+packetLen(0x09cd, 8) // ZC_MSG_COLOR
+
+// Packet: 0x09ce
+packetLen(0x09ce, 102) // CZ_ITEM_CREATE_EX
+
+// Packet: 0x09cf
+packetLen(0x09cf, -1) // ZC_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d0
+packetLen(0x09d0, -1) // CZ_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d1
+packetLen(0x09d1, 14) // ZC_PROGRESS_ACTOR
+
+// Packet: 0x09d2
+packetLen(0x09d2, -1) // ZC_GUILDSTORAGE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x09d3
+packetLen(0x09d3, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x09d4
+packetLen(0x09d4, 2) // CZ_NPC_TRADE_QUIT
+
+// Packet: 0x09d5
+packetLen(0x09d5, -1) // ZC_NPC_MARKET_OPEN
+
+// Packet: 0x09d6
+packetLen(0x09d6, -1) // CZ_NPC_MARKET_PURCHASE
+
+// Packet: 0x09d7
+packetLen(0x09d7, -1) // ZC_NPC_MARKET_PURCHASE_RESULT
+
+// Packet: 0x09d8
+packetLen(0x09d8, 2) // CZ_NPC_MARKET_CLOSE
+
+// Packet: 0x09d9
+packetLen(0x09d9, 4) // CZ_REQ_GUILDSTORAGE_LOG
+
+// Packet: 0x09da
+packetLen(0x09da, -1) // ZC_ACK_GUILDSTORAGE_LOG
+
+// Packet: 0x09db
+packetLen(0x09db, -1) // ZC_NOTIFY_MOVEENTRY10
+
+// Packet: 0x09dc
+packetLen(0x09dc, -1) // ZC_NOTIFY_NEWENTRY10
+
+// Packet: 0x09dd
+packetLen(0x09dd, -1) // ZC_NOTIFY_STANDENTRY10
+
+// Packet: 0x09de
+packetLen(0x09de, -1) // ZC_WHISPER02
+
+// Packet: 0x09df
+packetLen(0x09df, 7) // ZC_ACK_WHISPER02
+
+// Packet: 0x09e0
+packetLen(0x09e0, -1) // SC_LOGIN_ANSWER_WITH_ID
+
+// Packet: 0x09e1
+packetLen(0x09e1, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_GUILDSTORAGE
+
+// Packet: 0x09e2
+packetLen(0x09e2, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_BODY
+
+// Packet: 0x09e3
+packetLen(0x09e3, 8) // CZ_MOVE_ITEM_FROM_CART_TO_GUILDSTORAGE
+
+// Packet: 0x09e4
+packetLen(0x09e4, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_CART
+
+// Packet: 0x09e5
+packetLen(0x09e5, 18) // ZC_DELETEITEM_FROM_MCSTORE2
+
+// Packet: 0x09e6
+#if PACKETVER >= 20181114
+packetLen(0x09e6, 24) // ZC_UPDATE_ITEM_FROM_BUYING_STORE2
+#elif PACKETVER >= 20180103
+packetLen(0x09e6, 22) // ZC_UPDATE_ITEM_FROM_BUYING_STORE2
+#endif
+
+// Packet: 0x09e7
+packetLen(0x09e7, 3) // ZC_NOTIFY_UNREAD_RODEX
+
+// Packet: 0x09e8
+packetLen(0x09e8, 11) // CZ_OPEN_RODEXBOX
+
+// Packet: 0x09e9
+packetLen(0x09e9, 2) // CZ_CLOSE_RODEXBOX
+
+// Packet: 0x09ea
+packetLen(0x09ea, 11) // CZ_REQ_READ_RODEX
+
+// Packet: 0x09eb
+packetLen(0x09eb, -1) // ZC_ACK_READ_RODEX
+
+// Packet: 0x09ec
+packetLen(0x09ec, -1) // CZ_REQ_SEND_RODEX
+
+// Packet: 0x09ed
+packetLen(0x09ed, 3) // ZC_ACK_SEND_RODEX
+
+// Packet: 0x09ee
+packetLen(0x09ee, 11) // CZ_REQ_NEXT_RODEX
+
+// Packet: 0x09ef
+packetLen(0x09ef, 11) // CZ_REQ_REFRESH_RODEX
+
+// Packet: 0x09f0
+packetLen(0x09f0, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x09f1
+packetLen(0x09f1, 11) // CZ_REQ_ZENY_FROM_RODEX
+
+// Packet: 0x09f2
+packetLen(0x09f2, 12) // ZC_ACK_ZENY_FROM_RODEX
+
+// Packet: 0x09f3
+packetLen(0x09f3, 11) // CZ_REQ_ITEM_FROM_RODEX
+
+// Packet: 0x09f4
+packetLen(0x09f4, 12) // ZC_ACK_ITEM_FROM_RODEX
+
+// Packet: 0x09f5
+packetLen(0x09f5, 11) // CZ_REQ_DELETE_RODEX
+
+// Packet: 0x09f6
+packetLen(0x09f6, 11) // ZC_ACK_DELETE_RODEX
+
+// Packet: 0x09f7
+#if PACKETVER >= 20181114
+packetLen(0x09f7, 77) // ZC_PROPERTY_HOMUN_2
+#elif PACKETVER >= 20180103
+packetLen(0x09f7, 75) // ZC_PROPERTY_HOMUN_2
+#endif
+
+// Packet: 0x09f8
+packetLen(0x09f8, -1) // ZC_ALL_QUEST_LIST3
+
+// Packet: 0x09f9
+packetLen(0x09f9, 143) // ZC_ADD_QUEST_EX
+
+// Packet: 0x09fa
+packetLen(0x09fa, -1) // ZC_UPDATE_MISSION_HUNT_EX
+
+// Packet: 0x09fb
+packetLen(0x09fb, -1) // CZ_PET_EVOLUTION
+
+// Packet: 0x09fc
+packetLen(0x09fc, 6) // ZC_PET_EVOLUTION_RESULT
+
+// Packet: 0x09fd
+packetLen(0x09fd, -1) // ZC_NOTIFY_MOVEENTRY11
+
+// Packet: 0x09fe
+packetLen(0x09fe, -1) // ZC_NOTIFY_NEWENTRY11
+
+// Packet: 0x09ff
+packetLen(0x09ff, -1) // ZC_NOTIFY_STANDENTRY11
+
+// Packet: 0x0a00
+packetLen(0x0a00, 269) // ZC_SHORTCUT_KEY_LIST_V3
+
+// Packet: 0x0a01
+packetLen(0x0a01, 3) // CZ_SHORTCUTKEYBAR_ROTATE
+
+// Packet: 0x0a02
+packetLen(0x0a02, 4) // ZC_DRESSROOM_OPEN
+
+// Packet: 0x0a03
+packetLen(0x0a03, 2) // CZ_REQ_CANCEL_WRITE_RODEX
+
+// Packet: 0x0a04
+packetLen(0x0a04, 6) // CZ_REQ_ADD_ITEM_RODEX
+
+// Packet: 0x0a05
+#if PACKETVER >= 20181114
+packetLen(0x0a05, 63) // ZC_ACK_ADD_ITEM_RODEX
+#elif PACKETVER >= 20180103
+packetLen(0x0a05, 53) // ZC_ACK_ADD_ITEM_RODEX
+#endif
+
+// Packet: 0x0a06
+packetLen(0x0a06, 6) // CZ_REQ_REMOVE_RODEX_ITEM
+
+// Packet: 0x0a07
+packetLen(0x0a07, 9) // ZC_ACK_REMOVE_RODEX_ITEM
+
+// Packet: 0x0a08
+packetLen(0x0a08, 26) // CZ_REQ_OPEN_WRITE_RODEX
+
+// Packet: 0x0a09
+#if PACKETVER >= 20181114
+packetLen(0x0a09, 55) // ZC_ADD_EXCHANGE_ITEM3
+#elif PACKETVER >= 20180103
+packetLen(0x0a09, 45) // ZC_ADD_EXCHANGE_ITEM3
+#endif
+
+// Packet: 0x0a0a
+#if PACKETVER >= 20181114
+packetLen(0x0a0a, 57) // ZC_ADD_ITEM_TO_STORE3
+#elif PACKETVER >= 20180103
+packetLen(0x0a0a, 47) // ZC_ADD_ITEM_TO_STORE3
+#endif
+
+// Packet: 0x0a0b
+#if PACKETVER >= 20181114
+packetLen(0x0a0b, 57) // ZC_ADD_ITEM_TO_CART3
+#elif PACKETVER >= 20180103
+packetLen(0x0a0b, 47) // ZC_ADD_ITEM_TO_CART3
+#endif
+
+// Packet: 0x0a0c
+#if PACKETVER >= 20181114
+packetLen(0x0a0c, 66) // ZC_ITEM_PICKUP_ACK_V6
+#elif PACKETVER >= 20180103
+packetLen(0x0a0c, 56) // ZC_ITEM_PICKUP_ACK_V6
+#endif
+
+// Packet: 0x0a0d
+packetLen(0x0a0d, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a0e
+packetLen(0x0a0e, 14) // ZC_BATTLEFIELD_NOTIFY_HP2
+
+// Packet: 0x0a0f
+packetLen(0x0a0f, -1) // ZC_CART_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a10
+packetLen(0x0a10, -1) // ZC_STORE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a11
+packetLen(0x0a11, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a12
+packetLen(0x0a12, 27) // ZC_ACK_OPEN_WRITE_RODEX
+
+// Packet: 0x0a13
+packetLen(0x0a13, 26) // CZ_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a14
+packetLen(0x0a14, 10) // ZC_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a15
+packetLen(0x0a15, 12) // ZC_GOLDPCCAFE_POINT
+
+// Packet: 0x0a16
+packetLen(0x0a16, 26) // CZ_DYNAMICNPC_CREATE_REQUEST
+
+// Packet: 0x0a17
+packetLen(0x0a17, 6) // ZC_DYNAMICNPC_CREATE_RESULT
+
+// Packet: 0x0a18
+packetLen(0x0a18, 14) // ZC_ACCEPT_ENTER3
+
+// Packet: 0x0a19
+packetLen(0x0a19, 2) // CZ_REQ_OPEN_ROULETTE
+
+// Packet: 0x0a1a
+#if PACKETVER >= 20181114
+packetLen(0x0a1a, 25) // ZC_ACK_OPEN_ROULETTE
+#elif PACKETVER >= 20180103
+packetLen(0x0a1a, 23) // ZC_ACK_OPEN_ROULETTE
+#endif
+
+// Packet: 0x0a1b
+packetLen(0x0a1b, 2) // CZ_REQ_ROULETTE_INFO
+
+// Packet: 0x0a1c
+packetLen(0x0a1c, -1) // ZC_ACK_ROULEITTE_INFO
+
+// Packet: 0x0a1d
+packetLen(0x0a1d, 2) // CZ_REQ_CLOSE_ROULETTE
+
+// Packet: 0x0a1e
+packetLen(0x0a1e, 3) // ZC_ACK_CLOSE_ROULETTE
+
+// Packet: 0x0a1f
+packetLen(0x0a1f, 2) // CZ_REQ_GENERATE_ROULETTE
+
+// Packet: 0x0a20
+#if PACKETVER >= 20181114
+packetLen(0x0a20, 23) // ZC_ACK_GENERATE_ROULETTE
+#elif PACKETVER >= 20180103
+packetLen(0x0a20, 21) // ZC_ACK_GENERATE_ROULETTE
+#endif
+
+// Packet: 0x0a21
+packetLen(0x0a21, 3) // CZ_RECV_ROULETTE_ITEM
+
+// Packet: 0x0a22
+#if PACKETVER >= 20181114
+packetLen(0x0a22, 7) // ZC_RECV_ROULETTE_ITEM
+#elif PACKETVER >= 20180103
+packetLen(0x0a22, 5) // ZC_RECV_ROULETTE_ITEM
+#endif
+
+// Packet: 0x0a23
+packetLen(0x0a23, -1) // ZC_ALL_ACH_LIST
+
+// Packet: 0x0a24
+packetLen(0x0a24, 66) // ZC_ACH_UPDATE
+
+// Packet: 0x0a25
+packetLen(0x0a25, 6) // CZ_REQ_ACH_REWARD
+
+// Packet: 0x0a26
+packetLen(0x0a26, 7) // ZC_REQ_ACH_REWARD_ACK
+
+// Packet: 0x0a27
+packetLen(0x0a27, 8) // ZC_RECOVERY2
+
+// Packet: 0x0a28
+packetLen(0x0a28, 3) // ZC_ACK_OPENSTORE2
+
+// Packet: 0x0a29
+packetLen(0x0a29, 6) // ZC_REQ_AU_BOT
+
+// Packet: 0x0a2a
+packetLen(0x0a2a, 6) // CZ_ACK_AU_BOT
+
+// Packet: 0x0a2b
+packetLen(0x0a2b, 14) // ZC_SE_CASHSHOP_OPEN2
+
+// Packet: 0x0a2c
+packetLen(0x0a2c, 12) // ZC_SE_PC_BUY_TAIWANCASHITEM_RESULT
+
+// Packet: 0x0a2d
+packetLen(0x0a2d, -1) // ZC_EQUIPWIN_MICROSCOPE_V6
+
+// Packet: 0x0a2e
+packetLen(0x0a2e, 6) // CZ_REQ_CHANGE_TITLE
+
+// Packet: 0x0a2f
+packetLen(0x0a2f, 7) // ZC_ACK_CHANGE_TITLE
+
+// Packet: 0x0a30
+packetLen(0x0a30, 106) // ZC_ACK_REQNAMEALL2
+
+// Packet: 0x0a31
+packetLen(0x0a31, -1) // ZC_RESULT_PACKAGE_ITEM_TEST
+
+// Packet: 0x0a32
+packetLen(0x0a32, 2) // ZC_OPEN_RODEX_THROUGH_NPC_ONLY
+
+// Packet: 0x0a33
+packetLen(0x0a33, 7) // ZC_UPDATE_ROULETTE_COIN
+
+// Packet: 0x0a34
+packetLen(0x0a34, 6) // ZC_UPDATE_TAIWANCASH
+
+// Packet: 0x0a35
+packetLen(0x0a35, 4) // CZ_REQ_ONECLICK_ITEMIDENTIFY
+
+// Packet: 0x0a36
+packetLen(0x0a36, 7) // ZC_HP_INFO_TINY
+
+// Packet: 0x0a37
+#if PACKETVER >= 20181114
+packetLen(0x0a37, 69) // ZC_ITEM_PICKUP_ACK_V7
+#elif PACKETVER >= 20180103
+packetLen(0x0a37, 59) // ZC_ITEM_PICKUP_ACK_V7
+#endif
+
+// Packet: 0x0a38
+packetLen(0x0a38, 3) // ZC_OPEN_UI
+
+// Packet: 0x0a39
+packetLen(0x0a39, 36) // CH_MAKE_CHAR
+
+// Packet: 0x0a3a
+packetLen(0x0a3a, 12)
+
+// Packet: 0x0a3b
+packetLen(0x0a3b, -1) // ZC_CUSTOM_HAT_EFFECT
+
+// Packet: 0x0a3c
+packetLen(0x0a3c, -1)
+
+// Packet: 0x0a3d
+#if PACKETVER >= 20181114
+packetLen(0x0a3d, 20)
+#elif PACKETVER >= 20180103
+packetLen(0x0a3d, 18)
+#endif
+
+// Packet: 0x0a3e
+packetLen(0x0a3e, -1)
+
+// Packet: 0x0a3f
+#if PACKETVER >= 20181114
+packetLen(0x0a3f, 11)
+#elif PACKETVER >= 20180103
+packetLen(0x0a3f, 9)
+#endif
+
+// Packet: 0x0a40
+packetLen(0x0a40, 11)
+
+// Packet: 0x0a41
+packetLen(0x0a41, 18) // ZC_AOE_EFFECT_SKILL
+
+// Packet: 0x0a42
+packetLen(0x0a42, 43)
+
+// Packet: 0x0a43
+packetLen(0x0a43, 85) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0a44
+packetLen(0x0a44, -1) // ZC_GROUP_LIST
+
+// Packet: 0x0a46
+packetLen(0x0a46, 14)
+
+// Packet: 0x0a47
+packetLen(0x0a47, 3) // ZC_STYLE_CHANGE_RES
+
+// Packet: 0x0a48
+packetLen(0x0a48, 2)
+
+// Packet: 0x0a49
+#if PACKETVER >= 20181114
+packetLen(0x0a49, 22) // CZ_PRIVATE_AIRSHIP_REQUEST
+#elif PACKETVER >= 20180103
+packetLen(0x0a49, 20) // CZ_PRIVATE_AIRSHIP_REQUEST
+#endif
+
+// Packet: 0x0a4a
+packetLen(0x0a4a, 6) // ZC_PRIVATE_AIRSHIP_RESPONSE
+
+// Packet: 0x0a4b
+packetLen(0x0a4b, 22) // ZC_AIRSHIP_MAPMOVE
+
+// Packet: 0x0a4c
+packetLen(0x0a4c, 28) // ZC_AIRSHIP_SERVERMOVE
+
+// Packet: 0x0a4d
+packetLen(0x0a4d, -1)
+
+// Packet: 0x0a4e
+#if PACKETVER >= 20181114
+packetLen(0x0a4e, 6)
+#elif PACKETVER >= 20180103
+packetLen(0x0a4e, 4)
+#endif
+
+// Packet: 0x0a4f
+packetLen(0x0a4f, -1)
+
+// Packet: 0x0a50
+packetLen(0x0a50, 4)
+
+// Packet: 0x0a51
+packetLen(0x0a51, 34) // ZC_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a52
+packetLen(0x0a52, 20)
+
+// Packet: 0x0a53
+packetLen(0x0a53, 10)
+
+// Packet: 0x0a54
+packetLen(0x0a54, -1)
+
+// Packet: 0x0a55
+packetLen(0x0a55, 2)
+
+// Packet: 0x0a56
+packetLen(0x0a56, 6)
+
+// Packet: 0x0a57
+packetLen(0x0a57, 6)
+
+// Packet: 0x0a58
+packetLen(0x0a58, 8)
+
+// Packet: 0x0a59
+packetLen(0x0a59, -1)
+
+// Packet: 0x0a5a
+packetLen(0x0a5a, 2)
+
+// Packet: 0x0a5b
+packetLen(0x0a5b, 7)
+
+// Packet: 0x0a5c
+packetLen(0x0a5c, 18)
+
+// Packet: 0x0a5d
+packetLen(0x0a5d, 6)
+
+// Packet: 0x0a68
+packetLen(0x0a68, 3) // CZ_REQ_OPEN_UI
+
+// Packet: 0x0a69
+packetLen(0x0a69, 6)
+
+// Packet: 0x0a6a
+packetLen(0x0a6a, 12)
+
+// Packet: 0x0a6b
+packetLen(0x0a6b, -1)
+
+// Packet: 0x0a6c
+packetLen(0x0a6c, 7)
+
+// Packet: 0x0a6d
+packetLen(0x0a6d, -1)
+
+// Packet: 0x0a6e
+packetLen(0x0a6e, -1) // CZ_REQ_SEND_RODEX
+
+// Packet: 0x0a6f
+packetLen(0x0a6f, -1) // ZC_FORMATSTRING_MSG_COLOR
+
+// Packet: 0x0a70
+packetLen(0x0a70, 2)
+
+// Packet: 0x0a71
+packetLen(0x0a71, -1)
+
+// Packet: 0x0a72
+packetLen(0x0a72, 61)
+
+// Packet: 0x0a73
+packetLen(0x0a73, 2)
+
+// Packet: 0x0a74
+packetLen(0x0a74, 8)
+
+// Packet: 0x0a76
+packetLen(0x0a76, 80)
+
+// Packet: 0x0a77
+packetLen(0x0a77, 15)
+
+// Packet: 0x0a78
+packetLen(0x0a78, 15)
+
+// Packet: 0x0a79
+packetLen(0x0a79, -1)
+
+// Packet: 0x0a7b
+packetLen(0x0a7b, -1)
+
+// Packet: 0x0a7c
+packetLen(0x0a7c, -1)
+
+// Packet: 0x0a7d
+packetLen(0x0a7d, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x0a7e
+packetLen(0x0a7e, -1) // ZC_OFFLINE_STORE_OWNER_ITEMS_READY
+
+// Packet: 0x0a7f
+packetLen(0x0a7f, -1) // CZ_OFFLINE_STORE_CREATE
+
+// Packet: 0x0a80
+packetLen(0x0a80, 6)
+
+// Packet: 0x0a81
+packetLen(0x0a81, 4)
+
+// Packet: 0x0a82
+packetLen(0x0a82, 46)
+
+// Packet: 0x0a83
+packetLen(0x0a83, 46)
+
+// Packet: 0x0a84
+packetLen(0x0a84, 94) // ZC_GUILD_INFO
+
+// Packet: 0x0a85
+packetLen(0x0a85, 82)
+
+// Packet: 0x0a86
+packetLen(0x0a86, -1)
+
+// Packet: 0x0a87
+packetLen(0x0a87, -1)
+
+// Packet: 0x0a88
+packetLen(0x0a88, 2)
+
+// Packet: 0x0a89
+#if PACKETVER >= 20181114
+packetLen(0x0a89, 61) // ZC_NOTIFY_OFFLINE_STORE
+#elif PACKETVER >= 20180103
+packetLen(0x0a89, 57) // ZC_NOTIFY_OFFLINE_STORE
+#endif
+
+// Packet: 0x0a8a
+packetLen(0x0a8a, 6) // ZC_OFFLINE_STORE_VANISH
+
+// Packet: 0x0a8b
+packetLen(0x0a8b, 2)
+
+// Packet: 0x0a8c
+packetLen(0x0a8c, 2)
+
+// Packet: 0x0a8d
+packetLen(0x0a8d, -1) // ZC_OFFLINE_STORE_OWNER_ITEMS
+
+// Packet: 0x0a8e
+packetLen(0x0a8e, 2)
+
+// Packet: 0x0a8f
+packetLen(0x0a8f, 2)
+
+// Packet: 0x0a90
+packetLen(0x0a90, 3)
+
+// Packet: 0x0a91
+packetLen(0x0a91, -1) // ZC_OFFLINE_STORE_ITEMS
+
+// Packet: 0x0a92
+packetLen(0x0a92, -1)
+
+// Packet: 0x0a93
+packetLen(0x0a93, 3)
+
+// Packet: 0x0a94
+packetLen(0x0a94, 2)
+
+// Packet: 0x0a95
+packetLen(0x0a95, 4)
+
+// Packet: 0x0a96
+#if PACKETVER >= 20181114
+packetLen(0x0a96, 61) // ZC_ADD_EXCHANGE_ITEM4
+#elif PACKETVER >= 20180103
+packetLen(0x0a96, 51) // ZC_ADD_EXCHANGE_ITEM4
+#endif
+
+// Packet: 0x0a97
+packetLen(0x0a97, 8) // CZ_ALT_EQUIPMENT_EQUIP
+
+// Packet: 0x0a98
+packetLen(0x0a98, 10) // ZC_ALT_EQUIPMENT_EQUIP
+
+// Packet: 0x0a99
+packetLen(0x0a99, 4)
+
+// Packet: 0x0a9a
+packetLen(0x0a9a, 10) // ZC_ALT_EQUIPMENT_REMOVE
+
+// Packet: 0x0a9b
+packetLen(0x0a9b, -1) // ZC_ALT_EQUIPMENT_ITEMS
+
+// Packet: 0x0a9c
+packetLen(0x0a9c, 2)
+
+// Packet: 0x0a9d
+packetLen(0x0a9d, 4)
+
+// Packet: 0x0a9e
+packetLen(0x0a9e, 2)
+
+// Packet: 0x0a9f
+packetLen(0x0a9f, 2)
+
+// Packet: 0x0aa0
+packetLen(0x0aa0, 2) // ZC_REFINE_OPEN_WINDOW
+
+// Packet: 0x0aa1
+packetLen(0x0aa1, 4) // CZ_REFINE_ADD_ITEM
+
+// Packet: 0x0aa2
+packetLen(0x0aa2, -1) // ZC_REFINE_ADD_ITEM
+
+// Packet: 0x0aa3
+#if PACKETVER >= 20181114
+packetLen(0x0aa3, 9) // CZ_REFINE_ITEM_REQUEST
+#elif PACKETVER >= 20180103
+packetLen(0x0aa3, 7) // CZ_REFINE_ITEM_REQUEST
+#endif
+
+// Packet: 0x0aa4
+packetLen(0x0aa4, 2) // CZ_REFINE_WINDOW_CLOSE
+
+// Packet: 0x0aa5
+packetLen(0x0aa5, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0aa6
+packetLen(0x0aa6, 36) // ZC_MEMBER_ADD
+
+// Packet: 0x0aa7
+packetLen(0x0aa7, 6) // ZC_INVENTORY_MOVE_FAILED
+
+// Packet: 0x0aa8
+packetLen(0x0aa8, 5)
+
+// Packet: 0x0aa9
+packetLen(0x0aa9, -1)
+
+// Packet: 0x0aaa
+packetLen(0x0aaa, -1)
+
+// Packet: 0x0aab
+packetLen(0x0aab, -1)
+
+// Packet: 0x0aac
+packetLen(0x0aac, 69)
+
+// Packet: 0x0aad
+packetLen(0x0aad, 51)
+
+// Packet: 0x0aae
+packetLen(0x0aae, 2)
+
+// Packet: 0x0aaf
+packetLen(0x0aaf, 6)
+
+// Packet: 0x0ab0
+packetLen(0x0ab0, 6)
+
+// Packet: 0x0ab1
+packetLen(0x0ab1, 14)
+
+// Packet: 0x0ab2
+packetLen(0x0ab2, 7) // ZC_GROUP_ISALIVE
+
+// Packet: 0x0ab3
+packetLen(0x0ab3, 19)
+
+// Packet: 0x0ab4
+#if PACKETVER >= 20181114
+packetLen(0x0ab4, 6)
+#elif PACKETVER >= 20180103
+packetLen(0x0ab4, 4)
+#endif
+
+// Packet: 0x0ab5
+packetLen(0x0ab5, 2)
+
+// Packet: 0x0ab6
+#if PACKETVER >= 20181114
+packetLen(0x0ab6, 8)
+#elif PACKETVER >= 20180103
+packetLen(0x0ab6, 6)
+#endif
+
+// Packet: 0x0ab7
+packetLen(0x0ab7, 4)
+
+// Packet: 0x0ab8
+packetLen(0x0ab8, 2)
+
+// Packet: 0x0ab9
+#if PACKETVER >= 20181114
+packetLen(0x0ab9, 47) // ZC_ITEM_PREVIEW
+#elif PACKETVER >= 20180103
+packetLen(0x0ab9, 39) // ZC_ITEM_PREVIEW
+#endif
+
+// Packet: 0x0aba
+packetLen(0x0aba, 2)
+
+// Packet: 0x0abb
+packetLen(0x0abb, 2)
+
+// Packet: 0x0abc
+packetLen(0x0abc, -1)
+
+// Packet: 0x0abd
+packetLen(0x0abd, 10) // ZC_PARTY_MEMBER_JOB_LEVEL
+
+// Packet: 0x0abe
+packetLen(0x0abe, -1) // ZC_WARPLIST
+
+// Packet: 0x0abf
+packetLen(0x0abf, -1)
+
+// Packet: 0x0ac0
+packetLen(0x0ac0, 26) // CZ_OPEN_RODEXBOX
+
+// Packet: 0x0ac1
+packetLen(0x0ac1, 26) // CZ_REQ_REFRESH_RODEX
+
+// Packet: 0x0ac2
+packetLen(0x0ac2, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x0ac3
+packetLen(0x0ac3, 2)
+
+// Packet: 0x0ac4
+packetLen(0x0ac4, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x0ac5
+packetLen(0x0ac5, 156) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0ac6
+packetLen(0x0ac6, 156)
+
+// Packet: 0x0ac7
+packetLen(0x0ac7, 156) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0ac8
+packetLen(0x0ac8, 2) // ZC_UNKNOWN_CLEAN_ITEMS_LISTS
+
+// Packet: 0x0ac9
+packetLen(0x0ac9, -1)
+
+// Packet: 0x0aca
+packetLen(0x0aca, 3)
+
+// Packet: 0x0acb
+packetLen(0x0acb, 12) // ZC_PAR_CHANGE
+
+// Packet: 0x0acc
+packetLen(0x0acc, 18) // ZC_NOTIFY_EXP
+
+// Packet: 0x0acd
+packetLen(0x0acd, 23)
+
+// Packet: 0x0ace
+packetLen(0x0ace, 4)
+
+// Packet: 0x0acf
+packetLen(0x0acf, 68) // CA_LOGIN_OTP
+
+// Packet: 0x0ad0
+packetLen(0x0ad0, 11) // CA_OTP_CODE
+
+// Packet: 0x0ad1
+packetLen(0x0ad1, -1)
+
+// Packet: 0x0ad2
+packetLen(0x0ad2, 30)
+
+// Packet: 0x0ad3
+packetLen(0x0ad3, -1)
+
+// Packet: 0x0ad4
+packetLen(0x0ad4, -1)
+
+// Packet: 0x0ad5
+packetLen(0x0ad5, 2)
+
+// Packet: 0x0ad6
+packetLen(0x0ad6, 2)
+
+// Packet: 0x0ad7
+packetLen(0x0ad7, 8)
+
+// Packet: 0x0ad8
+packetLen(0x0ad8, 8)
+
+// Packet: 0x0ad9
+packetLen(0x0ad9, -1)
+
+// Packet: 0x0ada
+#if PACKETVER >= 20181114
+packetLen(0x0ada, 32) // ZC_REFINE_STATUS
+#elif PACKETVER >= 20180103
+packetLen(0x0ada, 30) // ZC_REFINE_STATUS
+#endif
+
+// Packet: 0x0adb
+packetLen(0x0adb, -1)
+
+// Packet: 0x0adc
+packetLen(0x0adc, 6) // ZC_EQUIPWIN_OTHER
+
+// Packet: 0x0add
+#if PACKETVER >= 20181114
+packetLen(0x0add, 24) // ZC_ITEM_FALL_ENTRY
+#elif PACKETVER >= 20180103
+packetLen(0x0add, 22) // ZC_ITEM_FALL_ENTRY
+#endif
+
+// Packet: 0x0ade
+packetLen(0x0ade, 6) // ZC_OVERWEIGHT_PERCENT
+
+// Packet: 0x0adf
+packetLen(0x0adf, 58) // ZC_ACK_REQNAME
+
+// Packet: 0x0ae0
+packetLen(0x0ae0, 30)
+
+// Packet: 0x0ae1
+packetLen(0x0ae1, 28)
+
+// Packet: 0x0ae2
+packetLen(0x0ae2, 7) // ZC_OPEN_UI
+
+// Packet: 0x0ae3
+packetLen(0x0ae3, -1) // AC_LOGIN_OTP
+
+// Packet: 0x0ae4
+packetLen(0x0ae4, 89) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0ae5
+packetLen(0x0ae5, -1) // ZC_GROUP_LIST
+
+// Packet: 0x0ae6
+#if PACKETVER >= 20180131
+packetLen(0x0ae6, 10)
+#elif PACKETVER >= 20180103
+packetLen(0x0ae6, 30)
+#endif
+
+// Packet: 0x0ae7
+#if PACKETVER >= 20180328
+packetLen(0x0ae7, 38)
+#elif PACKETVER >= 20180103
+packetLen(0x0ae7, 30)
+#endif
+
+// Packet: 0x0ae8
+packetLen(0x0ae8, 2)
+
+// Packet: 0x0ae9
+#if PACKETVER >= 20180117
+packetLen(0x0ae9, 13) // HC_SECOND_PASSWD_LOGIN
+#elif PACKETVER >= 20180103
+packetLen(0x0ae9, 64) // HC_SECOND_PASSWD_LOGIN
+#endif
+
+// Packet: 0x0aea
+#if PACKETVER >= 20180117
+// removed
+#elif PACKETVER >= 20180103
+packetLen(0x0aea, 2)
+#endif
+
+// Packet: 0x0aeb
+#if PACKETVER >= 20180117
+// removed
+#elif PACKETVER >= 20180103
+packetLen(0x0aeb, 11)
+#endif
+
+// Packet: 0x0aec
+packetLen(0x0aec, 2)
+
+// Packet: 0x0aed
+packetLen(0x0aed, 2)
+
+// Packet: 0x0aee
+packetLen(0x0aee, 2)
+
+// Packet: 0x0aef
+#if PACKETVER >= 20180117
+packetLen(0x0aef, 2) // CZ_ATTENDANCE_REWARD_REQUEST
+#endif
+
+// Packet: 0x0af0
+#if PACKETVER >= 20180117
+packetLen(0x0af0, 10) // ZC_UI_ACTION
+#endif
+
+// Packet: 0x0af2
+#if PACKETVER >= 20180131
+packetLen(0x0af2, 40)
+#endif
+
+// Packet: 0x0af3
+#if PACKETVER >= 20180131
+packetLen(0x0af3, -1)
+#endif
+
+// Packet: 0x0af4
+#if PACKETVER >= 20180131
+packetLen(0x0af4, 11) // CZ_USE_SKILL_TOGROUND
+#endif
+
+// Packet: 0x0af5
+#if PACKETVER >= 20180207
+packetLen(0x0af5, 3)
+#endif
+
+// Packet: 0x0af6
+#if PACKETVER >= 20180207
+packetLen(0x0af6, 88)
+#endif
+
+// Packet: 0x0af7
+#if PACKETVER >= 20180207
+packetLen(0x0af7, 32) // ZC_ACK_REQNAME_BYGID
+#endif
+
+// Packet: 0x0af8
+#if PACKETVER >= 20180328
+packetLen(0x0af8, 11)
+#endif
+
+// Packet: 0x0af9
+#if PACKETVER >= 20180328
+packetLen(0x0af9, 6)
+#endif
+
+// Packet: 0x0afa
+#if PACKETVER >= 20180328
+packetLen(0x0afa, 54)
+#endif
+
+// Packet: 0x0afb
+#if PACKETVER >= 20180425
+packetLen(0x0afb, -1) // ZC_AUTOSPELLLIST
+#endif
+
+// Packet: 0x0afc
+#if PACKETVER >= 20180523
+packetLen(0x0afc, 16)
+#endif
+
+// Packet: 0x0afd
+#if PACKETVER >= 20180605
+packetLen(0x0afd, -1) // ZC_GUILD_POSITION
+#endif
+
+// Packet: 0x0afe
+#if PACKETVER >= 20180605
+packetLen(0x0afe, -1) // ZC_UPDATE_MISSION_HUNT_EX
+#endif
+
+// Packet: 0x0aff
+#if PACKETVER >= 20180605
+packetLen(0x0aff, -1) // ZC_ALL_QUEST_LIST4
+#endif
+
+// Packet: 0x0b00
+#if PACKETVER >= 20180627
+packetLen(0x0b00, 8)
+#endif
+
+// Packet: 0x0b01
+#if PACKETVER >= 20180627
+packetLen(0x0b01, 56)
+#endif
+
+// Packet: 0x0b02
+#if PACKETVER >= 20180627
+packetLen(0x0b02, 26) // AC_REFUSE_LOGIN4
+#endif
+
+// Packet: 0x0b03
+#if PACKETVER >= 20180725
+packetLen(0x0b03, -1) // ZC_EQUIPWIN_MICROSCOPE_V7
+#endif
+
+// Packet: 0x0b04
+#if PACKETVER >= 20180808
+packetLen(0x0b04, 80)
+#endif
+
+// Packet: 0x0b05
+#if PACKETVER >= 20181114
+packetLen(0x0b05, 63) // ZC_OFFLINE_STORE_VISIBLE
+#elif PACKETVER >= 20180822
+packetLen(0x0b05, 59) // ZC_OFFLINE_STORE_VISIBLE
+#endif
+
+// Packet: 0x0b06
+#if PACKETVER >= 20181010
+// removed
+#elif PACKETVER >= 20180822
+packetLen(0x0b06, 53)
+#endif
+
+// Packet: 0x0b07
+#if PACKETVER >= 20180822
+packetLen(0x0b07, -1)
+#endif
+
+// Packet: 0x0b08
+#if PACKETVER >= 20180919
+packetLen(0x0b08, -1) // ZC_INVENTORY_START
+#elif PACKETVER >= 20180905
+packetLen(0x0b08, 27) // ZC_INVENTORY_START
+#elif PACKETVER >= 20180822
+packetLen(0x0b08, 26) // ZC_INVENTORY_START
+#endif
+
+// Packet: 0x0b09
+#if PACKETVER >= 20180822
+packetLen(0x0b09, -1) // ZC_STORE_ITEMLIST_NORMAL_V6
+#endif
+
+// Packet: 0x0b0a
+#if PACKETVER >= 20180822
+packetLen(0x0b0a, -1) // ZC_STORE_ITEMLIST_EQUIP_V6
+#endif
+
+// Packet: 0x0b0b
+#if PACKETVER >= 20180905
+packetLen(0x0b0b, 4) // ZC_INVENTORY_END
+#elif PACKETVER >= 20180822
+packetLen(0x0b0b, 3) // ZC_INVENTORY_END
+#endif
+
+// Packet: 0x0b0c
+#if PACKETVER >= 20180822
+packetLen(0x0b0c, 155) // ZC_ADD_QUEST_EX
+#endif
+
+// Packet: 0x0b0d
+#if PACKETVER >= 20180919
+packetLen(0x0b0d, 10) // ZC_REMOVE_EFFECT
+#elif PACKETVER >= 20180905
+packetLen(0x0b0d, 6) // ZC_REMOVE_EFFECT
+#endif
+
+// Packet: 0x0b0e
+#if PACKETVER >= 20180919
+packetLen(0x0b0e, -1)
+#endif
+
+// Packet: 0x0b0f
+#if PACKETVER >= 20180919
+packetLen(0x0b0f, -1)
+#endif
+
+// Packet: 0x0b10
+#if PACKETVER >= 20181010
+packetLen(0x0b10, 10) // CZ_START_USE_SKILL
+#endif
+
+// Packet: 0x0b11
+#if PACKETVER >= 20181010
+packetLen(0x0b11, 4) // CZ_STOP_USE_SKILL
+#endif
+
+// Packet: 0x0b12
+#if PACKETVER >= 20181024
+packetLen(0x0b12, 2)
+#endif
+
+// Packet: 0x0b13
+#if PACKETVER >= 20181114
+packetLen(0x0b13, 48) // ZC_ITEM_PREVIEW
+#elif PACKETVER >= 20181024
+packetLen(0x0b13, 40) // ZC_ITEM_PREVIEW
+#endif
+
+// Packet: 0x0b14
+#if PACKETVER >= 20181114
+packetLen(0x0b14, 2)
+#endif
+
+// Packet: 0x0b15
+#if PACKETVER >= 20181114
+packetLen(0x0b15, 7)
+#endif
+
+// Packet: 0x0b16
+#if PACKETVER >= 20181114
+packetLen(0x0b16, 2)
+#endif
+
+// Packet: 0x0b17
+#if PACKETVER >= 20181114
+packetLen(0x0b17, 3)
+#endif
+
+// Packet: 0x0b18
+#if PACKETVER >= 20181114
+packetLen(0x0b18, 4)
+#endif
+
+// Packet: 0x0b19
+#if PACKETVER >= 20181114
+packetLen(0x0b19, 2)
+#endif
+
+// Packet: 0x0b1a
+#if PACKETVER >= 20181212
+packetLen(0x0b1a, 29)
+#endif
+
+
+#endif /* COMMON_PACKETS2018_LEN_ZERO_H */
diff --git a/src/common/packets/packets2019_len_main.h b/src/common/packets/packets2019_len_main.h
new file mode 100644
index 000000000..f7ad59577
--- /dev/null
+++ b/src/common/packets/packets2019_len_main.h
@@ -0,0 +1,4381 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2019_LEN_MAIN_H
+#define COMMON_PACKETS2019_LEN_MAIN_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 157) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 22) // CZ_ENTER
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 44) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 10) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, 14)
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+packetLen(0x0094, 19) // CZ_REQNAME
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 19) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 19) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+packetLen(0x00a0, 33) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+packetLen(0x00a7, 9)
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 9) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 29) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+packetLen(0x00f4, 31) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+packetLen(0x00f7, 17) // CZ_REQUEST_TIME
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 6) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 14) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+packetLen(0x0113, 25) // CZ_USE_SKILL
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 31) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 18) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 8) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 37) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 7) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 6) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 32) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 32) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 15) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 15) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 58) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 57) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 64) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+packetLen(0x01fd, 25) // CZ_REQ_ITEMREPAIR
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 35) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 10) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+packetLen(0x022a, 62) // ZC_NOTIFY_STANDENTRY3
+
+// Packet: 0x022b
+packetLen(0x022b, 61) // ZC_NOTIFY_NEWENTRY3
+
+// Packet: 0x022c
+packetLen(0x022c, 69) // ZC_NOTIFY_MOVEENTRY3
+
+// Packet: 0x022d
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+
+// Packet: 0x022e
+packetLen(0x022e, 73) // ZC_PROPERTY_HOMUN
+
+// Packet: 0x022f
+packetLen(0x022f, 7) // ZC_FEED_MER
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 8) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+
+// Packet: 0x0275
+packetLen(0x0275, 37) // CH_ENTER2
+
+// Packet: 0x0276
+packetLen(0x0276, -1) // AC_ACCEPT_LOGIN2
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+packetLen(0x0281, 4) // CZ_GANGSI_RANK
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+
+// Packet: 0x0288
+packetLen(0x0288, -1) // CZ_PC_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0289
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0296
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0297
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0298
+packetLen(0x0298, 10) // ZC_CASH_TIME_COUNTER
+
+// Packet: 0x0299
+packetLen(0x0299, 8) // ZC_CASH_ITEM_DELETE
+
+// Packet: 0x029a
+packetLen(0x029a, 37) // ZC_ITEM_PICKUP_ACK2
+
+// Packet: 0x029b
+packetLen(0x029b, 80) // ZC_MER_INIT
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a5
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+
+// Packet: 0x02a6
+packetLen(0x02a6, -1) // ZC_HACKSH_CPX_MSG
+
+// Packet: 0x02a7
+packetLen(0x02a7, -1) // CZ_HACKSH_CPX_MSG
+
+// Packet: 0x02aa
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+
+// Packet: 0x02ab
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+
+// Packet: 0x02ac
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+
+// Packet: 0x02ad
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+
+// Packet: 0x02b0
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+
+// Packet: 0x02b1
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+
+// Packet: 0x02b2
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+
+// Packet: 0x02b3
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+
+// Packet: 0x02b4
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+
+// Packet: 0x02b5
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+
+// Packet: 0x02b6
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+
+// Packet: 0x02b7
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+
+// Packet: 0x02b8
+packetLen(0x02b8, 32) // ZC_ITEM_PICKUP_PARTY
+
+// Packet: 0x02b9
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+
+// Packet: 0x02ba
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+
+// Packet: 0x02bb
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+
+// Packet: 0x02bc
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+
+// Packet: 0x02c1
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+
+// Packet: 0x02c2
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+
+// Packet: 0x02c4
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+
+// Packet: 0x02c5
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c6
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+
+// Packet: 0x02c7
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c8
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+
+// Packet: 0x02c9
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+
+// Packet: 0x02ca
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+
+// Packet: 0x02cb
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+
+// Packet: 0x02cc
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+
+// Packet: 0x02cd
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+
+// Packet: 0x02ce
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+
+// Packet: 0x02cf
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+
+// Packet: 0x02d0
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d1
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d2
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d3
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+
+// Packet: 0x02d4
+packetLen(0x02d4, 39) // ZC_ITEM_PICKUP_ACK3
+
+// Packet: 0x02d5
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+
+// Packet: 0x02d6
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d7
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d8
+packetLen(0x02d8, 10) // CZ_CONFIG
+
+// Packet: 0x02d9
+packetLen(0x02d9, 10) // ZC_CONFIG
+
+// Packet: 0x02da
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+
+// Packet: 0x02db
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+
+// Packet: 0x02dc
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+
+// Packet: 0x02dd
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+
+// Packet: 0x02de
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+
+// Packet: 0x02df
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+
+// Packet: 0x02e0
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+
+// Packet: 0x02e1
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+
+// Packet: 0x02e2
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+
+// Packet: 0x02e3
+packetLen(0x02e3, 22) // CZ_USE_SKILL_NEW_JAPEN
+
+// Packet: 0x02e4
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+
+// Packet: 0x02e5
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+
+// Packet: 0x02e6
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+
+// Packet: 0x02e7
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+
+// Packet: 0x02e8
+packetLen(0x02e8, -1) // ZC_NORMAL_ITEMLIST3
+
+// Packet: 0x02e9
+packetLen(0x02e9, -1) // ZC_CART_NORMAL_ITEMLIST3
+
+// Packet: 0x02ea
+packetLen(0x02ea, -1) // ZC_STORE_NORMAL_ITEMLIST3
+
+// Packet: 0x02eb
+packetLen(0x02eb, 13) // ZC_ACCEPT_ENTER2
+
+// Packet: 0x02ec
+packetLen(0x02ec, 71) // ZC_NOTIFY_MOVEENTRY4
+
+// Packet: 0x02ed
+packetLen(0x02ed, 63) // ZC_NOTIFY_NEWENTRY4
+
+// Packet: 0x02ee
+packetLen(0x02ee, 64) // ZC_NOTIFY_STANDENTRY4
+
+// Packet: 0x02ef
+packetLen(0x02ef, 8) // ZC_NOTIFY_FONT
+
+// Packet: 0x02f0
+packetLen(0x02f0, 10) // ZC_PROGRESS
+
+// Packet: 0x02f1
+packetLen(0x02f1, 2) // CZ_PROGRESS
+
+// Packet: 0x02f2
+packetLen(0x02f2, 2) // ZC_PROGRESS_CANCEL
+
+// Packet: 0x02f3
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+
+// Packet: 0x02f4
+packetLen(0x02f4, 3) // ZC_IRMAIL_SEND_RES
+
+// Packet: 0x02f5
+packetLen(0x02f5, 7) // ZC_IRMAIL_NOTIFY
+
+// Packet: 0x02f6
+packetLen(0x02f6, 7) // CZ_IRMAIL_LIST
+
+// Packet: 0x035c
+packetLen(0x035c, 2) // CZ_OPEN_SIMPLE_CASHSHOP_ITEMLIST
+
+// Packet: 0x035d
+packetLen(0x035d, -1) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+
+// Packet: 0x035e
+packetLen(0x035e, 2) // CZ_CLOSE_WINDOW
+
+// Packet: 0x035f
+packetLen(0x035f, 5) // CZ_REQUEST_MOVE2
+
+// Packet: 0x0360
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+
+// Packet: 0x0361
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+
+// Packet: 0x0362
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+
+// Packet: 0x0363
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+
+// Packet: 0x0364
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+
+// Packet: 0x0365
+packetLen(0x0365, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+
+// Packet: 0x0366
+packetLen(0x0366, 10) // CZ_USE_SKILL_TOGROUND2
+
+// Packet: 0x0367
+packetLen(0x0367, 90) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+
+// Packet: 0x0368
+packetLen(0x0368, 6) // CZ_REQNAME2
+
+// Packet: 0x0369
+packetLen(0x0369, 6) // CZ_REQNAME_BYGID2
+
+// Packet: 0x03dd
+packetLen(0x03dd, 18) // AHC_GAME_GUARD
+
+// Packet: 0x03de
+packetLen(0x03de, 18) // CAH_ACK_GAME_GUARD
+
+// Packet: 0x0436
+packetLen(0x0436, 19) // CZ_ENTER2
+
+// Packet: 0x0437
+packetLen(0x0437, 7) // CZ_REQUEST_ACT2
+
+// Packet: 0x0438
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+
+// Packet: 0x0439
+packetLen(0x0439, 8) // CZ_USE_ITEM2
+
+// Packet: 0x043d
+packetLen(0x043d, 8) // ZC_SKILL_POSTDELAY
+
+// Packet: 0x043e
+packetLen(0x043e, -1) // ZC_SKILL_POSTDELAY_LIST
+
+// Packet: 0x043f
+packetLen(0x043f, 25) // ZC_MSG_STATE_CHANGE2
+
+// Packet: 0x0440
+packetLen(0x0440, 10) // ZC_MILLENNIUMSHIELD
+
+// Packet: 0x0441
+packetLen(0x0441, 4) // ZC_SKILLINFO_DELETE
+
+// Packet: 0x0442
+packetLen(0x0442, -1) // ZC_SKILL_SELECT_REQUEST
+
+// Packet: 0x0443
+packetLen(0x0443, 8) // CZ_SKILL_SELECT_RESPONSE
+
+// Packet: 0x0444
+packetLen(0x0444, -1) // ZC_SIMPLE_CASH_POINT_ITEMLIST
+
+// Packet: 0x0445
+packetLen(0x0445, 12) // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0446
+packetLen(0x0446, 14) // ZC_QUEST_NOTIFY_EFFECT
+
+// Packet: 0x0447
+packetLen(0x0447, 2) // CZ_BLOCKING_PLAY_CANCEL
+
+// Packet: 0x0448
+packetLen(0x0448, -1) // HC_CHARACTER_LIST
+
+// Packet: 0x0449
+packetLen(0x0449, 4) // ZC_HACKSH_ERROR_MSG
+
+// Packet: 0x044a
+packetLen(0x044a, 6) // CZ_CLIENT_VERSION
+
+// Packet: 0x044b
+packetLen(0x044b, 2) // CZ_CLOSE_SIMPLECASH_SHOP
+
+// Packet: 0x07d7
+packetLen(0x07d7, 8) // CZ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d8
+packetLen(0x07d8, 8) // ZC_REQ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d9
+packetLen(0x07d9, 268) // ZC_SHORTCUT_KEY_LIST_V2
+
+// Packet: 0x07da
+packetLen(0x07da, 6) // CZ_CHANGE_GROUP_MASTER
+
+// Packet: 0x07db
+packetLen(0x07db, 8) // ZC_HO_PAR_CHANGE
+
+// Packet: 0x07dc
+packetLen(0x07dc, 6) // CZ_SEEK_PARTY
+
+// Packet: 0x07dd
+packetLen(0x07dd, 54) // ZC_SEEK_PARTY
+
+// Packet: 0x07de
+packetLen(0x07de, 30) // CZ_SEEK_PARTY_MEMBER
+
+// Packet: 0x07df
+packetLen(0x07df, 54) // ZC_SEEK_PARTY_MEMBER
+
+// Packet: 0x07e0
+packetLen(0x07e0, 58) // ZC_ES_NOTI_MYINFO
+
+// Packet: 0x07e1
+packetLen(0x07e1, 15) // ZC_SKILLINFO_UPDATE2
+
+// Packet: 0x07e2
+packetLen(0x07e2, 8) // ZC_MSG_VALUE
+
+// Packet: 0x07e3
+packetLen(0x07e3, 6) // ZC_ITEMLISTWIN_OPEN
+
+// Packet: 0x07e4
+packetLen(0x07e4, -1) // CZ_ITEMLISTWIN_RES
+
+// Packet: 0x07e5
+packetLen(0x07e5, 4) // CH_ENTER_CHECKBOT
+
+// Packet: 0x07e6
+packetLen(0x07e6, 8) // ZC_MSG_SKILL
+
+// Packet: 0x07e7
+packetLen(0x07e7, 32) // CH_CHECKBOT
+
+// Packet: 0x07e8
+packetLen(0x07e8, -1) // HC_CHECKBOT
+
+// Packet: 0x07e9
+packetLen(0x07e9, 5) // HC_CHECKBOT_RESULT
+
+// Packet: 0x07ea
+packetLen(0x07ea, 2) // CZ_BATTLE_FIELD_LIST
+
+// Packet: 0x07eb
+packetLen(0x07eb, -1) // ZC_BATTLE_FIELD_LIST
+
+// Packet: 0x07ec
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+
+// Packet: 0x07ed
+packetLen(0x07ed, 10) // ZC_JOIN_BATTLE_FIELD
+
+// Packet: 0x07ee
+packetLen(0x07ee, 6) // CZ_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07ef
+packetLen(0x07ef, 8) // ZC_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07f0
+packetLen(0x07f0, 6) // CZ_REQ_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f1
+packetLen(0x07f1, 18) // ZC_ACK_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f2
+packetLen(0x07f2, 8) // ZC_BATTLE_NOTI_START_STEP
+
+// Packet: 0x07f3
+packetLen(0x07f3, 6) // ZC_BATTLE_JOIN_NOTI_DEFER
+
+// Packet: 0x07f4
+packetLen(0x07f4, 3) // ZC_BATTLE_JOIN_DISABLE_STATE
+
+// Packet: 0x07f5
+packetLen(0x07f5, 6) // CZ_GM_FULLSTRIP
+
+// Packet: 0x07f6
+packetLen(0x07f6, 14) // ZC_NOTIFY_EXP
+
+// Packet: 0x07f7
+packetLen(0x07f7, -1) // ZC_NOTIFY_MOVEENTRY7
+
+// Packet: 0x07f8
+packetLen(0x07f8, -1) // ZC_NOTIFY_NEWENTRY5
+
+// Packet: 0x07f9
+packetLen(0x07f9, -1) // ZC_NOTIFY_STANDENTRY5
+
+// Packet: 0x07fa
+packetLen(0x07fa, 8) // ZC_DELETE_ITEM_FROM_BODY
+
+// Packet: 0x07fb
+packetLen(0x07fb, 25) // ZC_USESKILL_ACK2
+
+// Packet: 0x07fc
+packetLen(0x07fc, 10) // ZC_CHANGE_GROUP_MASTER
+
+// Packet: 0x07fd
+packetLen(0x07fd, -1) // ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN
+
+// Packet: 0x07fe
+packetLen(0x07fe, 26) // ZC_PLAY_NPC_BGM
+
+// Packet: 0x0800
+packetLen(0x0800, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0801
+packetLen(0x0801, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0802
+packetLen(0x0802, 18) // CZ_PARTY_BOOKING_REQ_REGISTER
+
+// Packet: 0x0803
+packetLen(0x0803, 4) // ZC_PARTY_BOOKING_ACK_REGISTER
+
+// Packet: 0x0804
+packetLen(0x0804, 14) // CZ_PARTY_BOOKING_REQ_SEARCH
+
+// Packet: 0x0805
+packetLen(0x0805, -1) // ZC_PARTY_BOOKING_ACK_SEARCH
+
+// Packet: 0x0806
+packetLen(0x0806, 2) // CZ_PARTY_BOOKING_REQ_DELETE
+
+// Packet: 0x0807
+packetLen(0x0807, 4) // ZC_PARTY_BOOKING_ACK_DELETE
+
+// Packet: 0x0808
+packetLen(0x0808, 14) // CZ_PARTY_BOOKING_REQ_UPDATE
+
+// Packet: 0x0809
+packetLen(0x0809, 50) // ZC_PARTY_BOOKING_NOTIFY_INSERT
+
+// Packet: 0x080a
+packetLen(0x080a, 18) // ZC_PARTY_BOOKING_NOTIFY_UPDATE
+
+// Packet: 0x080b
+packetLen(0x080b, 6) // ZC_PARTY_BOOKING_NOTIFY_DELETE
+
+// Packet: 0x080c
+packetLen(0x080c, 2) // CZ_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080d
+packetLen(0x080d, 3) // ZC_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080e
+packetLen(0x080e, 14) // ZC_NOTIFY_HP_TO_GROUPM_R2
+
+// Packet: 0x080f
+packetLen(0x080f, 30) // ZC_ADD_EXCHANGE_ITEM2
+
+// Packet: 0x0810
+packetLen(0x0810, 3) // ZC_OPEN_BUYING_STORE
+
+// Packet: 0x0811
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+
+// Packet: 0x0812
+packetLen(0x0812, 8) // ZC_FAILED_OPEN_BUYING_STORE_TO_BUYER
+
+// Packet: 0x0813
+packetLen(0x0813, -1) // ZC_MYITEMLIST_BUYING_STORE
+
+// Packet: 0x0814
+packetLen(0x0814, 86) // ZC_BUYING_STORE_ENTRY
+
+// Packet: 0x0815
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+
+// Packet: 0x0816
+packetLen(0x0816, 6) // ZC_DISAPPEAR_BUYING_STORE_ENTRY
+
+// Packet: 0x0817
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+
+// Packet: 0x0818
+packetLen(0x0818, -1) // ZC_ACK_ITEMLIST_BUYING_STORE
+
+// Packet: 0x0819
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+
+// Packet: 0x081a
+packetLen(0x081a, 4) // ZC_FAILED_TRADE_BUYING_STORE_TO_BUYER
+
+// Packet: 0x081b
+packetLen(0x081b, 12) // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+
+// Packet: 0x081c
+packetLen(0x081c, 10) // ZC_ITEM_DELETE_BUYING_STORE
+
+// Packet: 0x081d
+packetLen(0x081d, 22) // ZC_EL_INIT
+
+// Packet: 0x081e
+packetLen(0x081e, 8) // ZC_EL_PAR_CHANGE
+
+// Packet: 0x081f
+packetLen(0x081f, -1) // ZC_BROADCAST4
+
+// Packet: 0x0820
+packetLen(0x0820, 11) // ZC_COSTUME_SPRITE_CHANGE
+
+// Packet: 0x0821
+packetLen(0x0821, 2) // AC_OTP_USER
+
+// Packet: 0x0822
+packetLen(0x0822, 9) // CA_OTP_AUTH_REQ
+
+// Packet: 0x0823
+packetLen(0x0823, -1) // AC_OTP_AUTH_ACK
+
+// Packet: 0x0824
+packetLen(0x0824, 8) // ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER
+
+// Packet: 0x0825
+packetLen(0x0825, -1) // CA_SSO_LOGIN_REQ
+
+// Packet: 0x0827
+packetLen(0x0827, 6) // CH_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0828
+packetLen(0x0828, 14) // HC_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0829
+packetLen(0x0829, 12) // CH_DELETE_CHAR3
+
+// Packet: 0x082a
+packetLen(0x082a, 10) // HC_DELETE_CHAR3
+
+// Packet: 0x082b
+packetLen(0x082b, 6) // CH_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082c
+packetLen(0x082c, 10) // HC_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082d
+packetLen(0x082d, -1) // HC_ACCEPT_ENTER2
+
+// Packet: 0x0835
+packetLen(0x0835, -1) // CZ_SEARCH_STORE_INFO
+
+// Packet: 0x0836
+packetLen(0x0836, -1) // ZC_SEARCH_STORE_INFO_ACK
+
+// Packet: 0x0837
+packetLen(0x0837, 3) // ZC_SEARCH_STORE_INFO_FAILED
+
+// Packet: 0x0838
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+
+// Packet: 0x0839
+packetLen(0x0839, 66) // ZC_ACK_BAN_GUILD_SSO
+
+// Packet: 0x083a
+packetLen(0x083a, 5) // ZC_OPEN_SEARCH_STORE_INFO
+
+// Packet: 0x083b
+packetLen(0x083b, 2) // CZ_CLOSE_SEARCH_STORE_INFO
+
+// Packet: 0x083c
+packetLen(0x083c, 14) // CZ_SSILIST_ITEM_CLICK
+
+// Packet: 0x083d
+packetLen(0x083d, 6) // ZC_SSILIST_ITEM_CLICK_ACK
+
+// Packet: 0x083e
+packetLen(0x083e, 26) // AC_REFUSE_LOGIN2
+
+// Packet: 0x0840
+packetLen(0x0840, -1) // HC_NOTIFY_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0841
+packetLen(0x0841, 4) // CH_SELECT_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0842
+packetLen(0x0842, 6) // CZ_RECALL_SSO
+
+// Packet: 0x0843
+packetLen(0x0843, 6) // CZ_REMOVE_AID_SSO
+
+// Packet: 0x0844
+packetLen(0x0844, 2) // CZ_SE_CASHSHOP_OPEN
+
+// Packet: 0x0845
+packetLen(0x0845, 10) // ZC_SE_CASHSHOP_OPEN
+
+// Packet: 0x0846
+packetLen(0x0846, 4) // CZ_REQ_SE_CASH_TAB_CODE
+
+// Packet: 0x0847
+packetLen(0x0847, -1) // ZC_ACK_SE_CASH_ITEM_LIST
+
+// Packet: 0x0848
+packetLen(0x0848, -1) // CZ_SE_PC_BUY_CASHITEM_LIST
+
+// Packet: 0x0849
+packetLen(0x0849, 16) // ZC_SE_PC_BUY_CASHITEM_RESULT
+
+// Packet: 0x084a
+packetLen(0x084a, 2) // CZ_SE_CASHSHOP_CLOSE
+
+// Packet: 0x084b
+packetLen(0x084b, 21) // ZC_ITEM_FALL_ENTRY4
+
+// Packet: 0x084c
+packetLen(0x084c, 10) // CZ_MACRO_USE_SKILL
+
+// Packet: 0x084d
+packetLen(0x084d, 10) // CZ_MACRO_USE_SKILL_TOGROUND
+
+// Packet: 0x084e
+packetLen(0x084e, 5) // CZ_MACRO_REQUEST_MOVE
+
+// Packet: 0x084f
+packetLen(0x084f, 6) // CZ_MACRO_ITEM_PICKUP
+
+// Packet: 0x0850
+packetLen(0x0850, 7) // CZ_MACRO_REQUEST_ACT
+
+// Packet: 0x0851
+packetLen(0x0851, -1) // ZC_GPK_DYNCODE
+
+// Packet: 0x0852
+packetLen(0x0852, 2) // CZ_GPK_DYNCODE_RELOAD
+
+// Packet: 0x0853
+packetLen(0x0853, -1) // ZC_GPK_AUTH
+
+// Packet: 0x0854
+packetLen(0x0854, -1) // CZ_GPK_AUTH
+
+// Packet: 0x0855
+packetLen(0x0855, 6) // ZC_MACRO_ITEMPICKUP_FAIL
+
+// Packet: 0x0856
+packetLen(0x0856, -1) // ZC_NOTIFY_MOVEENTRY8
+
+// Packet: 0x0857
+packetLen(0x0857, -1) // ZC_NOTIFY_STANDENTRY7
+
+// Packet: 0x0858
+packetLen(0x0858, -1) // ZC_NOTIFY_NEWENTRY6
+
+// Packet: 0x0859
+packetLen(0x0859, -1) // ZC_EQUIPWIN_MICROSCOPE2
+
+// Packet: 0x085a
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+
+// Packet: 0x085b
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+
+// Packet: 0x085c
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+
+// Packet: 0x085d
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+
+// Packet: 0x085e
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+
+// Packet: 0x085f
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+
+// Packet: 0x0860
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+
+// Packet: 0x0861
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+
+// Packet: 0x0862
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+
+// Packet: 0x0863
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+
+// Packet: 0x0864
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+
+// Packet: 0x0865
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+
+// Packet: 0x0866
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+
+// Packet: 0x0867
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+
+// Packet: 0x0868
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+
+// Packet: 0x0869
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+
+// Packet: 0x086a
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+
+// Packet: 0x086b
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+
+// Packet: 0x086c
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+
+// Packet: 0x086d
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+
+// Packet: 0x086e
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+
+// Packet: 0x086f
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+
+// Packet: 0x0870
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+
+// Packet: 0x0871
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+
+// Packet: 0x0872
+packetLen(0x0872, 2)
+
+// Packet: 0x0873
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+
+// Packet: 0x0874
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+
+// Packet: 0x0875
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+
+// Packet: 0x0876
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+
+// Packet: 0x0877
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+
+// Packet: 0x0878
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+
+// Packet: 0x0879
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+
+// Packet: 0x087a
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+
+// Packet: 0x087b
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+
+// Packet: 0x087c
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+
+// Packet: 0x087d
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+
+// Packet: 0x087e
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+
+// Packet: 0x087f
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+
+// Packet: 0x0880
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+
+// Packet: 0x0881
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+
+// Packet: 0x0882
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+
+// Packet: 0x0883
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+
+// Packet: 0x0884
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+
+// Packet: 0x0885
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+
+// Packet: 0x0886
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+
+// Packet: 0x0887
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+
+// Packet: 0x0888
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+
+// Packet: 0x0889
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+
+// Packet: 0x088a
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+
+// Packet: 0x088b
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+
+// Packet: 0x088c
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+
+// Packet: 0x088d
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+
+// Packet: 0x088e
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+
+// Packet: 0x088f
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+
+// Packet: 0x0890
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+
+// Packet: 0x0891
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+
+// Packet: 0x0892
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+
+// Packet: 0x0893
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+
+// Packet: 0x0894
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+
+// Packet: 0x0895
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+
+// Packet: 0x0896
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+
+// Packet: 0x0897
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+
+// Packet: 0x0898
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+
+// Packet: 0x0899
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+
+// Packet: 0x089a
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+
+// Packet: 0x089b
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+
+// Packet: 0x089c
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+
+// Packet: 0x089d
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+
+// Packet: 0x089e
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+
+// Packet: 0x089f
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+
+// Packet: 0x08a0
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+
+// Packet: 0x08a1
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+
+// Packet: 0x08a2
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+
+// Packet: 0x08a3
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+
+// Packet: 0x08a4
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+
+// Packet: 0x08a5
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+
+// Packet: 0x08a6
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+
+// Packet: 0x08a7
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+
+// Packet: 0x08a8
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+
+// Packet: 0x08a9
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+
+// Packet: 0x08aa
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+
+// Packet: 0x08ab
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+
+// Packet: 0x08ac
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+
+// Packet: 0x08ad
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+
+// Packet: 0x08af
+packetLen(0x08af, 10) // HC_WAITING_LOGIN
+
+// Packet: 0x08b0
+packetLen(0x08b0, 17) // CH_WAITING_LOGIN
+
+// Packet: 0x08b1
+packetLen(0x08b1, -1) // ZC_MCSTORE_NOTMOVEITEM_LIST
+
+// Packet: 0x08b2
+packetLen(0x08b2, -1) // AC_REALNAME_AUTH
+
+// Packet: 0x08b3
+packetLen(0x08b3, -1) // ZC_SHOWSCRIPT
+
+// Packet: 0x08b4
+packetLen(0x08b4, 2) // ZC_START_COLLECTION
+
+// Packet: 0x08b5
+packetLen(0x08b5, 6) // CZ_TRYCOLLECTION
+
+// Packet: 0x08b6
+packetLen(0x08b6, 3) // ZC_TRYCOLLECTION
+
+// Packet: 0x08b8
+packetLen(0x08b8, 10) // CH_SECOND_PASSWD_ACK
+
+// Packet: 0x08b9
+packetLen(0x08b9, 12) // HC_SECOND_PASSWD_LOGIN
+
+// Packet: 0x08ba
+packetLen(0x08ba, 10) // CH_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bb
+packetLen(0x08bb, 8) // HC_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bc
+packetLen(0x08bc, 10) // CH_DELETE_SECOND_PASSWD
+
+// Packet: 0x08bd
+packetLen(0x08bd, 8) // HC_DELETE_SECOND_PASSWD
+
+// Packet: 0x08be
+packetLen(0x08be, 14) // CH_EDIT_SECOND_PASSWD
+
+// Packet: 0x08bf
+packetLen(0x08bf, 8) // HC_EDIT_SECOND_PASSWD
+
+// Packet: 0x08c0
+packetLen(0x08c0, -1) // ZC_ACK_SE_CASH_ITEM_LIST2
+
+// Packet: 0x08c1
+packetLen(0x08c1, 2) // CZ_MACRO_START
+
+// Packet: 0x08c2
+packetLen(0x08c2, 2) // CZ_MACRO_STOP
+
+// Packet: 0x08c3
+packetLen(0x08c3, 10) // CH_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c4
+packetLen(0x08c4, 8) // HC_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c5
+packetLen(0x08c5, 6) // CH_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c6
+packetLen(0x08c6, 4) // HC_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c7
+packetLen(0x08c7, -1) // ZC_SKILL_ENTRY3
+
+// Packet: 0x08c8
+packetLen(0x08c8, 34) // ZC_NOTIFY_ACT3
+
+// Packet: 0x08c9
+packetLen(0x08c9, 2) // CZ_REQ_SCHEDULER_CASHITEM
+
+// Packet: 0x08ca
+packetLen(0x08ca, -1) // ZC_ACK_SCHEDULER_CASHITEM
+
+// Packet: 0x08cb
+packetLen(0x08cb, -1) // ZC_PERSONAL_INFOMATION
+
+// Packet: 0x08cc
+packetLen(0x08cc, 109) // CA_LOGIN5
+
+// Packet: 0x08cd
+packetLen(0x08cd, 10) // ZC_STOPMOVE_FORCE
+
+// Packet: 0x08ce
+packetLen(0x08ce, 2) // ZC_FAILED_GET_ITEM_FROM_ZONEDA
+
+// Packet: 0x08cf
+packetLen(0x08cf, 10) // ZC_SPIRITS_ATTRIBUTE
+
+// Packet: 0x08d0
+packetLen(0x08d0, 9) // ZC_REQ_WEAR_EQUIP_ACK2
+
+// Packet: 0x08d1
+packetLen(0x08d1, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK2
+
+// Packet: 0x08d2
+packetLen(0x08d2, 10) // ZC_FASTMOVE
+
+// Packet: 0x08d3
+packetLen(0x08d3, 10) // ZC_SE_CASHSHOP_UPDATE
+
+// Packet: 0x08d4
+packetLen(0x08d4, 8) // CH_REQ_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d5
+packetLen(0x08d5, -1) // HC_ACK_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d6
+packetLen(0x08d6, 6) // ZC_CLEAR_DIALOG
+
+// Packet: 0x08d7
+packetLen(0x08d7, 28) // CZ_REQ_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d8
+packetLen(0x08d8, 27) // ZC_ACK_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d9
+packetLen(0x08d9, 30) // ZC_NOTIFY_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08da
+packetLen(0x08da, 26) // CZ_REQ_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08db
+packetLen(0x08db, 27) // ZC_ACK_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08dc
+packetLen(0x08dc, 26) // ZC_NOTIFY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08dd
+packetLen(0x08dd, 27) // CZ_REPLY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08de
+packetLen(0x08de, 27) // ZC_REPLY_ACK_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08df
+packetLen(0x08df, 50) // ZC_NOTIFY_LOBBY_ADMISSION
+
+// Packet: 0x08e0
+packetLen(0x08e0, 51) // CZ_REPLY_LOBBY_ADMISSION
+
+// Packet: 0x08e1
+packetLen(0x08e1, 51) // ZC_REPLY_ACK_LOBBY_ADMISSION
+
+// Packet: 0x08e2
+packetLen(0x08e2, 27) // ZC_NAVIGATION_ACTIVE
+
+// Packet: 0x08e3
+packetLen(0x08e3, 157) // HC_UPDATE_CHARINFO
+
+// Packet: 0x08e4
+packetLen(0x08e4, 6) // AC_SHUTDOWN_INFO
+
+// Packet: 0x08fc
+packetLen(0x08fc, 30) // CH_REQ_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fd
+packetLen(0x08fd, 6) // CH_ACK_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fe
+packetLen(0x08fe, -1) // ZC_HUNTING_QUEST_INFO
+
+// Packet: 0x08ff
+packetLen(0x08ff, 24) // ZC_EFST_SET_ENTER
+
+// Packet: 0x0900
+packetLen(0x0900, -1) // ZC_INVENTORY_ITEMLIST_NORMAL
+
+// Packet: 0x0901
+packetLen(0x0901, -1) // ZC_INVENTORY_ITEMLIST_EQUIP
+
+// Packet: 0x0902
+packetLen(0x0902, -1) // ZC_CART_ITEMLIST_NORMAL
+
+// Packet: 0x0903
+packetLen(0x0903, -1) // ZC_CART_ITEMLIST_EQUIP
+
+// Packet: 0x0904
+packetLen(0x0904, -1) // ZC_STORE_ITEMLIST_NORMAL
+
+// Packet: 0x0905
+packetLen(0x0905, -1) // ZC_STORE_ITEMLIST_EQUIP
+
+// Packet: 0x0906
+packetLen(0x0906, -1) // ZC_MICROSCOPE
+
+// Packet: 0x0907
+packetLen(0x0907, 5) // CZ_INVENTORY_TAB
+
+// Packet: 0x0908
+packetLen(0x0908, 5) // ZC_INVENTORY_TAB
+
+// Packet: 0x090a
+packetLen(0x090a, 26) // CZ_REQ_ENTRY_QUEUE_RANKING
+
+// Packet: 0x090d
+packetLen(0x090d, -1) // ZC_PREMIUM_CAMPAIGN_INFO
+
+// Packet: 0x090e
+packetLen(0x090e, 2) // ZC_ENTRY_QUEUE_INIT
+
+// Packet: 0x090f
+packetLen(0x090f, -1) // ZC_NOTIFY_NEWENTRY7
+
+// Packet: 0x0910
+packetLen(0x0910, 10) // CZ_REQ_PARTY_NAME
+
+// Packet: 0x0911
+packetLen(0x0911, 30) // ZC_ACK_PARTY_NAME
+
+// Packet: 0x0912
+packetLen(0x0912, 10) // CZ_REQ_GUILD_NAME
+
+// Packet: 0x0913
+packetLen(0x0913, 30) // ZC_ACK_GUILD_NAME
+
+// Packet: 0x0914
+packetLen(0x0914, -1) // ZC_NOTIFY_MOVEENTRY9
+
+// Packet: 0x0915
+packetLen(0x0915, -1) // ZC_NOTIFY_STANDENTRY8
+
+// Packet: 0x0916
+packetLen(0x0916, 26) // CZ_REQ_JOIN_GUILD2
+
+// Packet: 0x0917
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+
+// Packet: 0x0918
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+
+// Packet: 0x0919
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+
+// Packet: 0x091a
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+
+// Packet: 0x091b
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+
+// Packet: 0x091c
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+
+// Packet: 0x091d
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+
+// Packet: 0x091e
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+
+// Packet: 0x091f
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+
+// Packet: 0x0920
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+
+// Packet: 0x0921
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+
+// Packet: 0x0922
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+
+// Packet: 0x0923
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+
+// Packet: 0x0924
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+
+// Packet: 0x0925
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+
+// Packet: 0x0926
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+
+// Packet: 0x0927
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+
+// Packet: 0x0928
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+
+// Packet: 0x0929
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+
+// Packet: 0x092a
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+
+// Packet: 0x092b
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+
+// Packet: 0x092c
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+
+// Packet: 0x092d
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+
+// Packet: 0x092e
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+
+// Packet: 0x092f
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+
+// Packet: 0x0930
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+
+// Packet: 0x0931
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+
+// Packet: 0x0932
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+
+// Packet: 0x0933
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+
+// Packet: 0x0934
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+
+// Packet: 0x0935
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+
+// Packet: 0x0936
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+
+// Packet: 0x0937
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+
+// Packet: 0x0938
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+
+// Packet: 0x0939
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+
+// Packet: 0x093a
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+
+// Packet: 0x093b
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+
+// Packet: 0x093c
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+
+// Packet: 0x093d
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+
+// Packet: 0x093e
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+
+// Packet: 0x093f
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+
+// Packet: 0x0940
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+
+// Packet: 0x0941
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+
+// Packet: 0x0942
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+
+// Packet: 0x0943
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+
+// Packet: 0x0944
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+
+// Packet: 0x0945
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+
+// Packet: 0x0946
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+
+// Packet: 0x0947
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+
+// Packet: 0x0948
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+
+// Packet: 0x0949
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+
+// Packet: 0x094a
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+
+// Packet: 0x094b
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+
+// Packet: 0x094c
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+
+// Packet: 0x094d
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+
+// Packet: 0x094e
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+
+// Packet: 0x094f
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+
+// Packet: 0x0950
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+
+// Packet: 0x0951
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+
+// Packet: 0x0952
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+
+// Packet: 0x0953
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+
+// Packet: 0x0954
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+
+// Packet: 0x0955
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+
+// Packet: 0x0956
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+
+// Packet: 0x0957
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+
+// Packet: 0x0958
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+
+// Packet: 0x0959
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+
+// Packet: 0x095a
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+
+// Packet: 0x095b
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+
+// Packet: 0x095c
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+
+// Packet: 0x095d
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+
+// Packet: 0x095e
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+
+// Packet: 0x095f
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+
+// Packet: 0x0960
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+
+// Packet: 0x0961
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+
+// Packet: 0x0962
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+
+// Packet: 0x0963
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+
+// Packet: 0x0964
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+
+// Packet: 0x0965
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+
+// Packet: 0x0966
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+
+// Packet: 0x0967
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+
+// Packet: 0x0968
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+
+// Packet: 0x0969
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+
+// Packet: 0x096a
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+
+// Packet: 0x096b
+packetLen(0x096b, 4) // ZC_PRNPC_STATE
+
+// Packet: 0x096c
+packetLen(0x096c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+
+// Packet: 0x096d
+packetLen(0x096d, -1) // ZC_MERGE_ITEM_OPEN
+
+// Packet: 0x096e
+packetLen(0x096e, -1) // CZ_REQ_MERGE_ITEM
+
+// Packet: 0x096f
+packetLen(0x096f, 7) // ZC_ACK_MERGE_ITEM
+
+// Packet: 0x0970
+packetLen(0x0970, 31) // CH_MAKE_CHAR_NOT_STATS
+
+// Packet: 0x0971
+packetLen(0x0971, 6) // ZC_PARTY_RECRUIT_REFUSE_VOLUNTEER_TO_PM
+
+// Packet: 0x0972
+packetLen(0x0972, -1) // ZC_SAY_DIALOG2
+
+// Packet: 0x0973
+packetLen(0x0973, 7) // ZC_WAIT_DIALOG2
+
+// Packet: 0x0974
+packetLen(0x0974, 2) // CZ_CANCEL_MERGE_ITEM
+
+// Packet: 0x0975
+packetLen(0x0975, -1) // ZC_STORE_ITEMLIST_NORMAL_V2
+
+// Packet: 0x0976
+packetLen(0x0976, -1) // ZC_STORE_ITEMLIST_EQUIP_V2
+
+// Packet: 0x0977
+packetLen(0x0977, 14) // ZC_HP_INFO
+
+// Packet: 0x0978
+packetLen(0x0978, 6) // CZ_REQ_BEFORE_WORLD_INFO
+
+// Packet: 0x0979
+packetLen(0x0979, 50) // ZC_ACK_BEFORE_WORLD_INFO
+
+// Packet: 0x097a
+packetLen(0x097a, -1) // ZC_ALL_QUEST_LIST2
+
+// Packet: 0x097b
+packetLen(0x097b, -1) // ZC_PERSONAL_INFOMATION2
+
+// Packet: 0x097c
+packetLen(0x097c, 4) // CZ_REQ_RANKING
+
+// Packet: 0x097d
+packetLen(0x097d, 288) // ZC_ACK_RANKING
+
+// Packet: 0x097e
+packetLen(0x097e, 12) // ZC_UPDATE_RANKING_POINT
+
+// Packet: 0x097f
+packetLen(0x097f, -1) // ZC_SELECTCART
+
+// Packet: 0x0980
+packetLen(0x0980, 7) // CZ_SELECTCART
+
+// Packet: 0x0981
+packetLen(0x0981, -1) // ZC_PERSONAL_INFOMATION_CHN
+
+// Packet: 0x0982
+packetLen(0x0982, 7) // ZC_FATIGUE_CHN
+
+// Packet: 0x0983
+packetLen(0x0983, 29) // ZC_MSG_STATE_CHANGE3
+
+// Packet: 0x0984
+packetLen(0x0984, 28) // ZC_EFST_SET_ENTER2
+
+// Packet: 0x0985
+packetLen(0x0985, -1) // ZC_SKILL_POSTDELAY_LIST2
+
+// Packet: 0x0986
+packetLen(0x0986, 10) // AC_SHUTDOWN_NOTIFY
+
+// Packet: 0x0987
+packetLen(0x0987, -1) // CA_LOGIN6
+
+// Packet: 0x0988
+packetLen(0x0988, 6) // ZC_NOTIFY_CLAN_CONNECTINFO
+
+// Packet: 0x0989
+packetLen(0x0989, 2) // ZC_ACK_CLAN_LEAVE
+
+// Packet: 0x098a
+packetLen(0x098a, -1) // ZC_CLANINFO
+
+// Packet: 0x098b
+packetLen(0x098b, 2) // AC_REQ_NEW_USER
+
+// Packet: 0x098c
+packetLen(0x098c, 4) // CA_ACK_NEW_USER
+
+// Packet: 0x098d
+packetLen(0x098d, -1) // CZ_CLAN_CHAT
+
+// Packet: 0x098e
+packetLen(0x098e, -1) // ZC_NOTIFY_CLAN_CHAT
+
+// Packet: 0x098f
+packetLen(0x098f, -1) // CH_DELETE_CHAR3_EXT
+
+// Packet: 0x0990
+packetLen(0x0990, 41) // ZC_ITEM_PICKUP_ACK_V5
+
+// Packet: 0x0991
+packetLen(0x0991, -1) // ZC_INVENTORY_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0992
+packetLen(0x0992, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0993
+packetLen(0x0993, -1) // ZC_CART_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0994
+packetLen(0x0994, -1) // ZC_CART_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0995
+packetLen(0x0995, -1) // ZC_STORE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0996
+packetLen(0x0996, -1) // ZC_STORE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0997
+packetLen(0x0997, -1) // ZC_EQUIPWIN_MICROSCOPE_V5
+
+// Packet: 0x0998
+packetLen(0x0998, 8) // CZ_REQ_WEAR_EQUIP_V5
+
+// Packet: 0x0999
+packetLen(0x0999, 11) // ZC_ACK_WEAR_EQUIP_V5
+
+// Packet: 0x099a
+packetLen(0x099a, 9) // ZC_ACK_TAKEOFF_EQUIP_V5
+
+// Packet: 0x099b
+packetLen(0x099b, 8) // ZC_MAPPROPERTY_R2
+
+// Packet: 0x099c
+packetLen(0x099c, 6) // CH_REQ_CHARINFO_PER_PAGE
+
+// Packet: 0x099d
+packetLen(0x099d, -1) // HC_ACK_CHARINFO_PER_PAGE
+
+// Packet: 0x099e
+packetLen(0x099e, 12) // HC_QUEUE_ORDER
+
+// Packet: 0x099f
+packetLen(0x099f, -1) // ZC_SKILL_ENTRY4
+
+// Packet: 0x09a0
+packetLen(0x09a0, 6) // HC_CHARLIST_NOTIFY
+
+// Packet: 0x09a1
+packetLen(0x09a1, 2) // CH_CHARLIST_REQ
+
+// Packet: 0x09a2
+packetLen(0x09a2, 6) // AC_REQ_MOBILE_OTP
+
+// Packet: 0x09a3
+packetLen(0x09a3, -1) // CA_ACK_MOBILE_OTP
+
+// Packet: 0x09a4
+packetLen(0x09a4, 18) // ZC_DISPATCH_TIMING_INFO_CHN
+
+// Packet: 0x09a5
+packetLen(0x09a5, 7) // AC_REFUSE_LOGIN3
+
+// Packet: 0x09a6
+packetLen(0x09a6, 12) // ZC_BANKING_CHECK
+
+// Packet: 0x09a7
+packetLen(0x09a7, 10) // CZ_REQ_BANKING_DEPOSIT
+
+// Packet: 0x09a8
+packetLen(0x09a8, 16) // ZC_ACK_BANKING_DEPOSIT
+
+// Packet: 0x09a9
+packetLen(0x09a9, 10) // CZ_REQ_BANKING_WITHDRAW
+
+// Packet: 0x09aa
+packetLen(0x09aa, 16) // ZC_ACK_BANKING_WITHDRAW
+
+// Packet: 0x09ab
+packetLen(0x09ab, 6) // CZ_REQ_BANKING_CHECK
+
+// Packet: 0x09ac
+packetLen(0x09ac, -1) // CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO
+
+// Packet: 0x09ad
+packetLen(0x09ad, 12) // ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO
+
+// Packet: 0x09ae
+packetLen(0x09ae, 19) // CZ_REQ_APPLY_BARGAIN_SALE_ITEM
+
+// Packet: 0x09af
+packetLen(0x09af, 4) // ZC_ACK_APPLY_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b0
+packetLen(0x09b0, 10) // CZ_REQ_REMOVE_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b1
+packetLen(0x09b1, 4) // ZC_ACK_REMOVE_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b2
+packetLen(0x09b2, 10) // ZC_NOTIFY_BARGAIN_SALE_SELLING
+
+// Packet: 0x09b3
+packetLen(0x09b3, 6) // ZC_NOTIFY_BARGAIN_SALE_CLOSE
+
+// Packet: 0x09b4
+packetLen(0x09b4, 6) // CZ_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b5
+packetLen(0x09b5, 2) // ZC_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b6
+packetLen(0x09b6, 6) // CZ_REQ_OPEN_BANKING
+
+// Packet: 0x09b7
+packetLen(0x09b7, 4) // ZC_ACK_OPEN_BANKING
+
+// Packet: 0x09b8
+packetLen(0x09b8, 6) // CZ_REQ_CLOSE_BANKING
+
+// Packet: 0x09b9
+packetLen(0x09b9, 4) // ZC_ACK_CLOSE_BANKING
+
+// Packet: 0x09ba
+packetLen(0x09ba, 2) // CZ_REQ_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bb
+packetLen(0x09bb, 6) // ZC_ACK_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bc
+packetLen(0x09bc, 6) // CZ_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09bd
+packetLen(0x09bd, 2) // ZC_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09be
+packetLen(0x09be, 2) // CZ_REQ_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09bf
+packetLen(0x09bf, 4) // ZC_ACK_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09c1
+packetLen(0x09c1, 10) // ZC_C_MARKERINFO
+
+// Packet: 0x09c2
+packetLen(0x09c2, -1) // HC_SECRETSCAN_DATA
+
+// Packet: 0x09c3
+packetLen(0x09c3, 10) // CZ_REQ_COUNT_BARGAIN_SALE_ITEM
+
+// Packet: 0x09c4
+packetLen(0x09c4, 10) // ZC_ACK_COUNT_BARGAIN_SALE_ITEM
+
+// Packet: 0x09c5
+packetLen(0x09c5, 1042) // CS_LOGIN_QUERY
+
+// Packet: 0x09c6
+packetLen(0x09c6, -1) // SC_LOGIN_ANSWER
+
+// Packet: 0x09c7
+packetLen(0x09c7, 18) // SC_LOGIN_ERROR
+
+// Packet: 0x09c8
+packetLen(0x09c8, -1) // CA_LOGIN_OTP
+
+// Packet: 0x09c9
+packetLen(0x09c9, -1) // SC_SOCT
+
+// Packet: 0x09ca
+packetLen(0x09ca, -1) // ZC_SKILL_ENTRY5
+
+// Packet: 0x09cb
+packetLen(0x09cb, 17) // ZC_USE_SKILL2
+
+// Packet: 0x09cc
+packetLen(0x09cc, -1) // ZC_SECRETSCAN_DATA
+
+// Packet: 0x09cd
+packetLen(0x09cd, 8) // ZC_MSG_COLOR
+
+// Packet: 0x09ce
+packetLen(0x09ce, 102) // CZ_ITEM_CREATE_EX
+
+// Packet: 0x09cf
+packetLen(0x09cf, -1) // ZC_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d0
+packetLen(0x09d0, -1) // CZ_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d1
+packetLen(0x09d1, 14) // ZC_PROGRESS_ACTOR
+
+// Packet: 0x09d2
+packetLen(0x09d2, -1) // ZC_GUILDSTORAGE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x09d3
+packetLen(0x09d3, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x09d4
+packetLen(0x09d4, 2) // CZ_NPC_TRADE_QUIT
+
+// Packet: 0x09d5
+packetLen(0x09d5, -1) // ZC_NPC_MARKET_OPEN
+
+// Packet: 0x09d6
+packetLen(0x09d6, -1) // CZ_NPC_MARKET_PURCHASE
+
+// Packet: 0x09d7
+packetLen(0x09d7, -1) // ZC_NPC_MARKET_PURCHASE_RESULT
+
+// Packet: 0x09d8
+packetLen(0x09d8, 2) // CZ_NPC_MARKET_CLOSE
+
+// Packet: 0x09d9
+packetLen(0x09d9, 4) // CZ_REQ_GUILDSTORAGE_LOG
+
+// Packet: 0x09da
+packetLen(0x09da, -1) // ZC_ACK_GUILDSTORAGE_LOG
+
+// Packet: 0x09db
+packetLen(0x09db, -1) // ZC_NOTIFY_MOVEENTRY10
+
+// Packet: 0x09dc
+packetLen(0x09dc, -1) // ZC_NOTIFY_NEWENTRY10
+
+// Packet: 0x09dd
+packetLen(0x09dd, -1) // ZC_NOTIFY_STANDENTRY10
+
+// Packet: 0x09de
+packetLen(0x09de, -1) // ZC_WHISPER02
+
+// Packet: 0x09df
+packetLen(0x09df, 7) // ZC_ACK_WHISPER02
+
+// Packet: 0x09e0
+packetLen(0x09e0, -1) // SC_LOGIN_ANSWER_WITH_ID
+
+// Packet: 0x09e1
+packetLen(0x09e1, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_GUILDSTORAGE
+
+// Packet: 0x09e2
+packetLen(0x09e2, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_BODY
+
+// Packet: 0x09e3
+packetLen(0x09e3, 8) // CZ_MOVE_ITEM_FROM_CART_TO_GUILDSTORAGE
+
+// Packet: 0x09e4
+packetLen(0x09e4, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_CART
+
+// Packet: 0x09e5
+packetLen(0x09e5, 18) // ZC_DELETEITEM_FROM_MCSTORE2
+
+// Packet: 0x09e6
+packetLen(0x09e6, 24) // ZC_UPDATE_ITEM_FROM_BUYING_STORE2
+
+// Packet: 0x09e7
+packetLen(0x09e7, 3) // ZC_NOTIFY_UNREAD_RODEX
+
+// Packet: 0x09e8
+packetLen(0x09e8, 11) // CZ_OPEN_RODEXBOX
+
+// Packet: 0x09e9
+packetLen(0x09e9, 2) // CZ_CLOSE_RODEXBOX
+
+// Packet: 0x09ea
+packetLen(0x09ea, 11) // CZ_REQ_READ_RODEX
+
+// Packet: 0x09eb
+packetLen(0x09eb, -1) // ZC_ACK_READ_RODEX
+
+// Packet: 0x09ec
+packetLen(0x09ec, -1) // CZ_REQ_SEND_RODEX
+
+// Packet: 0x09ed
+packetLen(0x09ed, 3) // ZC_ACK_SEND_RODEX
+
+// Packet: 0x09ee
+packetLen(0x09ee, 11) // CZ_REQ_NEXT_RODEX
+
+// Packet: 0x09ef
+packetLen(0x09ef, 11) // CZ_REQ_REFRESH_RODEX
+
+// Packet: 0x09f0
+packetLen(0x09f0, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x09f1
+packetLen(0x09f1, 11) // CZ_REQ_ZENY_FROM_RODEX
+
+// Packet: 0x09f2
+packetLen(0x09f2, 12) // ZC_ACK_ZENY_FROM_RODEX
+
+// Packet: 0x09f3
+packetLen(0x09f3, 11) // CZ_REQ_ITEM_FROM_RODEX
+
+// Packet: 0x09f4
+packetLen(0x09f4, 12) // ZC_ACK_ITEM_FROM_RODEX
+
+// Packet: 0x09f5
+packetLen(0x09f5, 11) // CZ_REQ_DELETE_RODEX
+
+// Packet: 0x09f6
+packetLen(0x09f6, 11) // ZC_ACK_DELETE_RODEX
+
+// Packet: 0x09f7
+packetLen(0x09f7, 77) // ZC_PROPERTY_HOMUN_2
+
+// Packet: 0x09f8
+packetLen(0x09f8, -1) // ZC_ALL_QUEST_LIST3
+
+// Packet: 0x09f9
+packetLen(0x09f9, 143) // ZC_ADD_QUEST_EX
+
+// Packet: 0x09fa
+packetLen(0x09fa, -1) // ZC_UPDATE_MISSION_HUNT_EX
+
+// Packet: 0x09fb
+packetLen(0x09fb, -1) // CZ_PET_EVOLUTION
+
+// Packet: 0x09fc
+packetLen(0x09fc, 6) // ZC_PET_EVOLUTION_RESULT
+
+// Packet: 0x09fd
+packetLen(0x09fd, -1) // ZC_NOTIFY_MOVEENTRY11
+
+// Packet: 0x09fe
+packetLen(0x09fe, -1) // ZC_NOTIFY_NEWENTRY11
+
+// Packet: 0x09ff
+packetLen(0x09ff, -1) // ZC_NOTIFY_STANDENTRY11
+
+// Packet: 0x0a00
+packetLen(0x0a00, 269) // ZC_SHORTCUT_KEY_LIST_V3
+
+// Packet: 0x0a01
+packetLen(0x0a01, 3) // CZ_SHORTCUTKEYBAR_ROTATE
+
+// Packet: 0x0a02
+packetLen(0x0a02, 4) // ZC_DRESSROOM_OPEN
+
+// Packet: 0x0a03
+packetLen(0x0a03, 2) // CZ_REQ_CANCEL_WRITE_RODEX
+
+// Packet: 0x0a04
+packetLen(0x0a04, 6) // CZ_REQ_ADD_ITEM_RODEX
+
+// Packet: 0x0a05
+packetLen(0x0a05, 63) // ZC_ACK_ADD_ITEM_RODEX
+
+// Packet: 0x0a06
+packetLen(0x0a06, 6) // CZ_REQ_REMOVE_RODEX_ITEM
+
+// Packet: 0x0a07
+packetLen(0x0a07, 9) // ZC_ACK_REMOVE_RODEX_ITEM
+
+// Packet: 0x0a08
+packetLen(0x0a08, 26) // CZ_REQ_OPEN_WRITE_RODEX
+
+// Packet: 0x0a09
+packetLen(0x0a09, 55) // ZC_ADD_EXCHANGE_ITEM3
+
+// Packet: 0x0a0a
+packetLen(0x0a0a, 57) // ZC_ADD_ITEM_TO_STORE3
+
+// Packet: 0x0a0b
+packetLen(0x0a0b, 57) // ZC_ADD_ITEM_TO_CART3
+
+// Packet: 0x0a0c
+packetLen(0x0a0c, 66) // ZC_ITEM_PICKUP_ACK_V6
+
+// Packet: 0x0a0d
+packetLen(0x0a0d, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a0e
+packetLen(0x0a0e, 14) // ZC_BATTLEFIELD_NOTIFY_HP2
+
+// Packet: 0x0a0f
+packetLen(0x0a0f, -1) // ZC_CART_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a10
+packetLen(0x0a10, -1) // ZC_STORE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a11
+packetLen(0x0a11, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a12
+packetLen(0x0a12, 27) // ZC_ACK_OPEN_WRITE_RODEX
+
+// Packet: 0x0a13
+packetLen(0x0a13, 26) // CZ_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a14
+packetLen(0x0a14, 10) // ZC_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a15
+packetLen(0x0a15, 12) // ZC_GOLDPCCAFE_POINT
+
+// Packet: 0x0a16
+packetLen(0x0a16, 26) // CZ_DYNAMICNPC_CREATE_REQUEST
+
+// Packet: 0x0a17
+packetLen(0x0a17, 6) // ZC_DYNAMICNPC_CREATE_RESULT
+
+// Packet: 0x0a18
+packetLen(0x0a18, 14) // ZC_ACCEPT_ENTER3
+
+// Packet: 0x0a19
+packetLen(0x0a19, 2) // CZ_REQ_OPEN_ROULETTE
+
+// Packet: 0x0a1a
+packetLen(0x0a1a, 25) // ZC_ACK_OPEN_ROULETTE
+
+// Packet: 0x0a1b
+packetLen(0x0a1b, 2) // CZ_REQ_ROULETTE_INFO
+
+// Packet: 0x0a1c
+packetLen(0x0a1c, -1) // ZC_ACK_ROULEITTE_INFO
+
+// Packet: 0x0a1d
+packetLen(0x0a1d, 2) // CZ_REQ_CLOSE_ROULETTE
+
+// Packet: 0x0a1e
+packetLen(0x0a1e, 3) // ZC_ACK_CLOSE_ROULETTE
+
+// Packet: 0x0a1f
+packetLen(0x0a1f, 2) // CZ_REQ_GENERATE_ROULETTE
+
+// Packet: 0x0a20
+packetLen(0x0a20, 23) // ZC_ACK_GENERATE_ROULETTE
+
+// Packet: 0x0a21
+packetLen(0x0a21, 3) // CZ_RECV_ROULETTE_ITEM
+
+// Packet: 0x0a22
+packetLen(0x0a22, 7) // ZC_RECV_ROULETTE_ITEM
+
+// Packet: 0x0a23
+packetLen(0x0a23, -1) // ZC_ALL_ACH_LIST
+
+// Packet: 0x0a24
+packetLen(0x0a24, 66) // ZC_ACH_UPDATE
+
+// Packet: 0x0a25
+packetLen(0x0a25, 6) // CZ_REQ_ACH_REWARD
+
+// Packet: 0x0a26
+packetLen(0x0a26, 7) // ZC_REQ_ACH_REWARD_ACK
+
+// Packet: 0x0a27
+packetLen(0x0a27, 8) // ZC_RECOVERY2
+
+// Packet: 0x0a28
+packetLen(0x0a28, 3) // ZC_ACK_OPENSTORE2
+
+// Packet: 0x0a29
+packetLen(0x0a29, 6) // ZC_REQ_AU_BOT
+
+// Packet: 0x0a2a
+packetLen(0x0a2a, 6) // CZ_ACK_AU_BOT
+
+// Packet: 0x0a2b
+packetLen(0x0a2b, 14) // ZC_SE_CASHSHOP_OPEN2
+
+// Packet: 0x0a2c
+packetLen(0x0a2c, 12) // ZC_SE_PC_BUY_TAIWANCASHITEM_RESULT
+
+// Packet: 0x0a2d
+packetLen(0x0a2d, -1) // ZC_EQUIPWIN_MICROSCOPE_V6
+
+// Packet: 0x0a2e
+packetLen(0x0a2e, 6) // CZ_REQ_CHANGE_TITLE
+
+// Packet: 0x0a2f
+packetLen(0x0a2f, 7) // ZC_ACK_CHANGE_TITLE
+
+// Packet: 0x0a30
+packetLen(0x0a30, 106) // ZC_ACK_REQNAMEALL2
+
+// Packet: 0x0a31
+packetLen(0x0a31, -1) // ZC_RESULT_PACKAGE_ITEM_TEST
+
+// Packet: 0x0a32
+packetLen(0x0a32, 2) // ZC_OPEN_RODEX_THROUGH_NPC_ONLY
+
+// Packet: 0x0a33
+packetLen(0x0a33, 7) // ZC_UPDATE_ROULETTE_COIN
+
+// Packet: 0x0a34
+packetLen(0x0a34, 6) // ZC_UPDATE_TAIWANCASH
+
+// Packet: 0x0a35
+packetLen(0x0a35, 4) // CZ_REQ_ONECLICK_ITEMIDENTIFY
+
+// Packet: 0x0a36
+packetLen(0x0a36, 7) // ZC_HP_INFO_TINY
+
+// Packet: 0x0a37
+packetLen(0x0a37, 69) // ZC_ITEM_PICKUP_ACK_V7
+
+// Packet: 0x0a38
+packetLen(0x0a38, 3) // ZC_OPEN_UI
+
+// Packet: 0x0a39
+packetLen(0x0a39, 36) // CH_MAKE_CHAR
+
+// Packet: 0x0a3a
+packetLen(0x0a3a, 12)
+
+// Packet: 0x0a3b
+packetLen(0x0a3b, -1) // ZC_CUSTOM_HAT_EFFECT
+
+// Packet: 0x0a3c
+packetLen(0x0a3c, -1)
+
+// Packet: 0x0a3d
+packetLen(0x0a3d, 20)
+
+// Packet: 0x0a3e
+packetLen(0x0a3e, -1)
+
+// Packet: 0x0a3f
+packetLen(0x0a3f, 11)
+
+// Packet: 0x0a40
+packetLen(0x0a40, 11)
+
+// Packet: 0x0a41
+packetLen(0x0a41, 18) // ZC_AOE_EFFECT_SKILL
+
+// Packet: 0x0a42
+packetLen(0x0a42, 43)
+
+// Packet: 0x0a43
+packetLen(0x0a43, 85) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0a44
+packetLen(0x0a44, -1) // ZC_GROUP_LIST
+
+// Packet: 0x0a46
+packetLen(0x0a46, 14)
+
+// Packet: 0x0a47
+packetLen(0x0a47, 3) // ZC_STYLE_CHANGE_RES
+
+// Packet: 0x0a48
+packetLen(0x0a48, 2)
+
+// Packet: 0x0a49
+packetLen(0x0a49, 22) // CZ_PRIVATE_AIRSHIP_REQUEST
+
+// Packet: 0x0a4a
+packetLen(0x0a4a, 6) // ZC_PRIVATE_AIRSHIP_RESPONSE
+
+// Packet: 0x0a4b
+packetLen(0x0a4b, 22) // ZC_AIRSHIP_MAPMOVE
+
+// Packet: 0x0a4c
+packetLen(0x0a4c, 28) // ZC_AIRSHIP_SERVERMOVE
+
+// Packet: 0x0a4d
+packetLen(0x0a4d, -1)
+
+// Packet: 0x0a4e
+packetLen(0x0a4e, 6)
+
+// Packet: 0x0a4f
+packetLen(0x0a4f, -1)
+
+// Packet: 0x0a50
+packetLen(0x0a50, 4)
+
+// Packet: 0x0a51
+packetLen(0x0a51, 34) // ZC_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a52
+packetLen(0x0a52, 20)
+
+// Packet: 0x0a53
+packetLen(0x0a53, 10)
+
+// Packet: 0x0a54
+packetLen(0x0a54, -1)
+
+// Packet: 0x0a55
+packetLen(0x0a55, 2)
+
+// Packet: 0x0a56
+packetLen(0x0a56, 6)
+
+// Packet: 0x0a57
+packetLen(0x0a57, 6)
+
+// Packet: 0x0a58
+packetLen(0x0a58, 8)
+
+// Packet: 0x0a59
+packetLen(0x0a59, -1)
+
+// Packet: 0x0a5a
+packetLen(0x0a5a, 2)
+
+// Packet: 0x0a5b
+packetLen(0x0a5b, 7)
+
+// Packet: 0x0a5c
+packetLen(0x0a5c, 18)
+
+// Packet: 0x0a5d
+packetLen(0x0a5d, 6)
+
+// Packet: 0x0a68
+packetLen(0x0a68, 3) // CZ_REQ_OPEN_UI
+
+// Packet: 0x0a69
+packetLen(0x0a69, 6)
+
+// Packet: 0x0a6a
+packetLen(0x0a6a, 12)
+
+// Packet: 0x0a6b
+packetLen(0x0a6b, -1)
+
+// Packet: 0x0a6c
+packetLen(0x0a6c, 7)
+
+// Packet: 0x0a6d
+packetLen(0x0a6d, -1)
+
+// Packet: 0x0a6e
+packetLen(0x0a6e, -1) // CZ_REQ_SEND_RODEX
+
+// Packet: 0x0a6f
+packetLen(0x0a6f, -1) // ZC_FORMATSTRING_MSG_COLOR
+
+// Packet: 0x0a70
+packetLen(0x0a70, 2)
+
+// Packet: 0x0a71
+packetLen(0x0a71, -1)
+
+// Packet: 0x0a72
+packetLen(0x0a72, 61)
+
+// Packet: 0x0a73
+packetLen(0x0a73, 2)
+
+// Packet: 0x0a74
+packetLen(0x0a74, 8)
+
+// Packet: 0x0a76
+packetLen(0x0a76, 80)
+
+// Packet: 0x0a77
+packetLen(0x0a77, 15)
+
+// Packet: 0x0a78
+packetLen(0x0a78, 15)
+
+// Packet: 0x0a79
+packetLen(0x0a79, -1)
+
+// Packet: 0x0a7b
+packetLen(0x0a7b, -1)
+
+// Packet: 0x0a7c
+packetLen(0x0a7c, -1)
+
+// Packet: 0x0a7d
+packetLen(0x0a7d, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x0a7e
+packetLen(0x0a7e, -1) // ZC_OFFLINE_STORE_OWNER_ITEMS_READY
+
+// Packet: 0x0a7f
+packetLen(0x0a7f, -1) // CZ_OFFLINE_STORE_CREATE
+
+// Packet: 0x0a80
+packetLen(0x0a80, 6)
+
+// Packet: 0x0a81
+packetLen(0x0a81, 4)
+
+// Packet: 0x0a82
+packetLen(0x0a82, 46)
+
+// Packet: 0x0a83
+packetLen(0x0a83, 46)
+
+// Packet: 0x0a84
+packetLen(0x0a84, 94) // ZC_GUILD_INFO
+
+// Packet: 0x0a85
+packetLen(0x0a85, 82)
+
+// Packet: 0x0a86
+packetLen(0x0a86, -1)
+
+// Packet: 0x0a87
+packetLen(0x0a87, -1)
+
+// Packet: 0x0a88
+packetLen(0x0a88, 2)
+
+// Packet: 0x0a89
+packetLen(0x0a89, 61) // ZC_NOTIFY_OFFLINE_STORE
+
+// Packet: 0x0a8a
+packetLen(0x0a8a, 6) // ZC_OFFLINE_STORE_VANISH
+
+// Packet: 0x0a8b
+packetLen(0x0a8b, 2)
+
+// Packet: 0x0a8c
+packetLen(0x0a8c, 2)
+
+// Packet: 0x0a8d
+packetLen(0x0a8d, -1) // ZC_OFFLINE_STORE_OWNER_ITEMS
+
+// Packet: 0x0a8e
+packetLen(0x0a8e, 2)
+
+// Packet: 0x0a8f
+packetLen(0x0a8f, 2)
+
+// Packet: 0x0a90
+packetLen(0x0a90, 3)
+
+// Packet: 0x0a91
+packetLen(0x0a91, -1) // ZC_OFFLINE_STORE_ITEMS
+
+// Packet: 0x0a92
+packetLen(0x0a92, -1)
+
+// Packet: 0x0a93
+packetLen(0x0a93, 3)
+
+// Packet: 0x0a94
+packetLen(0x0a94, 2)
+
+// Packet: 0x0a95
+packetLen(0x0a95, 4)
+
+// Packet: 0x0a96
+packetLen(0x0a96, 61) // ZC_ADD_EXCHANGE_ITEM4
+
+// Packet: 0x0a97
+packetLen(0x0a97, 8) // CZ_ALT_EQUIPMENT_EQUIP
+
+// Packet: 0x0a98
+packetLen(0x0a98, 10) // ZC_ALT_EQUIPMENT_EQUIP
+
+// Packet: 0x0a99
+packetLen(0x0a99, 4)
+
+// Packet: 0x0a9a
+packetLen(0x0a9a, 10) // ZC_ALT_EQUIPMENT_REMOVE
+
+// Packet: 0x0a9b
+packetLen(0x0a9b, -1) // ZC_ALT_EQUIPMENT_ITEMS
+
+// Packet: 0x0a9c
+packetLen(0x0a9c, 2)
+
+// Packet: 0x0a9d
+packetLen(0x0a9d, 4)
+
+// Packet: 0x0a9e
+packetLen(0x0a9e, 2)
+
+// Packet: 0x0a9f
+packetLen(0x0a9f, 2)
+
+// Packet: 0x0aa0
+packetLen(0x0aa0, 2) // ZC_REFINE_OPEN_WINDOW
+
+// Packet: 0x0aa1
+packetLen(0x0aa1, 4) // CZ_REFINE_ADD_ITEM
+
+// Packet: 0x0aa2
+packetLen(0x0aa2, -1) // ZC_REFINE_ADD_ITEM
+
+// Packet: 0x0aa3
+packetLen(0x0aa3, 9) // CZ_REFINE_ITEM_REQUEST
+
+// Packet: 0x0aa4
+packetLen(0x0aa4, 2) // CZ_REFINE_WINDOW_CLOSE
+
+// Packet: 0x0aa5
+packetLen(0x0aa5, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0aa6
+packetLen(0x0aa6, 36) // ZC_MEMBER_ADD
+
+// Packet: 0x0aa7
+packetLen(0x0aa7, 6) // ZC_INVENTORY_MOVE_FAILED
+
+// Packet: 0x0aa8
+packetLen(0x0aa8, 5)
+
+// Packet: 0x0aa9
+packetLen(0x0aa9, -1)
+
+// Packet: 0x0aaa
+packetLen(0x0aaa, -1)
+
+// Packet: 0x0aab
+packetLen(0x0aab, -1)
+
+// Packet: 0x0aac
+packetLen(0x0aac, 69)
+
+// Packet: 0x0aad
+packetLen(0x0aad, 51)
+
+// Packet: 0x0aae
+packetLen(0x0aae, 2)
+
+// Packet: 0x0aaf
+packetLen(0x0aaf, 6)
+
+// Packet: 0x0ab0
+packetLen(0x0ab0, 6)
+
+// Packet: 0x0ab1
+packetLen(0x0ab1, 14)
+
+// Packet: 0x0ab2
+packetLen(0x0ab2, 7) // ZC_GROUP_ISALIVE
+
+// Packet: 0x0ab3
+packetLen(0x0ab3, 19)
+
+// Packet: 0x0ab4
+packetLen(0x0ab4, 6)
+
+// Packet: 0x0ab5
+packetLen(0x0ab5, 2)
+
+// Packet: 0x0ab6
+packetLen(0x0ab6, 8)
+
+// Packet: 0x0ab7
+packetLen(0x0ab7, 4)
+
+// Packet: 0x0ab8
+packetLen(0x0ab8, 2)
+
+// Packet: 0x0ab9
+packetLen(0x0ab9, 47) // ZC_ITEM_PREVIEW
+
+// Packet: 0x0aba
+packetLen(0x0aba, 2)
+
+// Packet: 0x0abb
+packetLen(0x0abb, 2)
+
+// Packet: 0x0abc
+packetLen(0x0abc, -1)
+
+// Packet: 0x0abd
+packetLen(0x0abd, 10) // ZC_PARTY_MEMBER_JOB_LEVEL
+
+// Packet: 0x0abe
+packetLen(0x0abe, -1) // ZC_WARPLIST
+
+// Packet: 0x0abf
+packetLen(0x0abf, -1)
+
+// Packet: 0x0ac0
+packetLen(0x0ac0, 26) // CZ_OPEN_RODEXBOX
+
+// Packet: 0x0ac1
+packetLen(0x0ac1, 26) // CZ_REQ_REFRESH_RODEX
+
+// Packet: 0x0ac2
+packetLen(0x0ac2, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x0ac3
+packetLen(0x0ac3, 2)
+
+// Packet: 0x0ac4
+packetLen(0x0ac4, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x0ac5
+packetLen(0x0ac5, 156) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0ac6
+packetLen(0x0ac6, 156)
+
+// Packet: 0x0ac7
+packetLen(0x0ac7, 156) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0ac8
+packetLen(0x0ac8, 2) // ZC_UNKNOWN_CLEAN_ITEMS_LISTS
+
+// Packet: 0x0ac9
+packetLen(0x0ac9, -1)
+
+// Packet: 0x0aca
+packetLen(0x0aca, 3)
+
+// Packet: 0x0acb
+packetLen(0x0acb, 12) // ZC_PAR_CHANGE
+
+// Packet: 0x0acc
+packetLen(0x0acc, 18) // ZC_NOTIFY_EXP
+
+// Packet: 0x0acd
+packetLen(0x0acd, 23)
+
+// Packet: 0x0ace
+packetLen(0x0ace, 4)
+
+// Packet: 0x0acf
+packetLen(0x0acf, 68) // CA_LOGIN_OTP
+
+// Packet: 0x0ad0
+packetLen(0x0ad0, 11) // CA_OTP_CODE
+
+// Packet: 0x0ad1
+packetLen(0x0ad1, -1)
+
+// Packet: 0x0ad2
+packetLen(0x0ad2, 30)
+
+// Packet: 0x0ad3
+packetLen(0x0ad3, -1)
+
+// Packet: 0x0ad4
+packetLen(0x0ad4, -1)
+
+// Packet: 0x0ad5
+packetLen(0x0ad5, 2)
+
+// Packet: 0x0ad6
+packetLen(0x0ad6, 2)
+
+// Packet: 0x0ad7
+packetLen(0x0ad7, 8)
+
+// Packet: 0x0ad8
+packetLen(0x0ad8, 8)
+
+// Packet: 0x0ad9
+packetLen(0x0ad9, -1)
+
+// Packet: 0x0ada
+packetLen(0x0ada, 32) // ZC_REFINE_STATUS
+
+// Packet: 0x0adb
+packetLen(0x0adb, -1)
+
+// Packet: 0x0adc
+packetLen(0x0adc, 6) // ZC_EQUIPWIN_OTHER
+
+// Packet: 0x0add
+packetLen(0x0add, 24) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x0ade
+packetLen(0x0ade, 6) // ZC_OVERWEIGHT_PERCENT
+
+// Packet: 0x0adf
+packetLen(0x0adf, 58) // ZC_ACK_REQNAME
+
+// Packet: 0x0ae0
+packetLen(0x0ae0, 30)
+
+// Packet: 0x0ae1
+packetLen(0x0ae1, 28)
+
+// Packet: 0x0ae2
+packetLen(0x0ae2, 7) // ZC_OPEN_UI
+
+// Packet: 0x0ae3
+packetLen(0x0ae3, -1) // AC_LOGIN_OTP
+
+// Packet: 0x0ae4
+packetLen(0x0ae4, 89) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0ae5
+packetLen(0x0ae5, -1) // ZC_GROUP_LIST
+
+// Packet: 0x0ae6
+packetLen(0x0ae6, 10)
+
+// Packet: 0x0ae7
+packetLen(0x0ae7, 38)
+
+// Packet: 0x0ae8
+packetLen(0x0ae8, 2)
+
+// Packet: 0x0ae9
+packetLen(0x0ae9, 13) // HC_SECOND_PASSWD_LOGIN
+
+// Packet: 0x0aec
+packetLen(0x0aec, 2)
+
+// Packet: 0x0aed
+packetLen(0x0aed, 2)
+
+// Packet: 0x0aee
+packetLen(0x0aee, 2)
+
+// Packet: 0x0aef
+packetLen(0x0aef, 2) // CZ_ATTENDANCE_REWARD_REQUEST
+
+// Packet: 0x0af0
+packetLen(0x0af0, 10) // ZC_UI_ACTION
+
+// Packet: 0x0af2
+packetLen(0x0af2, 40)
+
+// Packet: 0x0af3
+packetLen(0x0af3, -1)
+
+// Packet: 0x0af4
+packetLen(0x0af4, 11) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0af5
+packetLen(0x0af5, 3)
+
+// Packet: 0x0af6
+packetLen(0x0af6, 88)
+
+// Packet: 0x0af7
+packetLen(0x0af7, 32) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0af8
+packetLen(0x0af8, 11)
+
+// Packet: 0x0af9
+packetLen(0x0af9, 6)
+
+// Packet: 0x0afa
+packetLen(0x0afa, 54)
+
+// Packet: 0x0afb
+packetLen(0x0afb, -1) // ZC_AUTOSPELLLIST
+
+// Packet: 0x0afc
+packetLen(0x0afc, 16)
+
+// Packet: 0x0afd
+packetLen(0x0afd, -1) // ZC_GUILD_POSITION
+
+// Packet: 0x0afe
+packetLen(0x0afe, -1) // ZC_UPDATE_MISSION_HUNT_EX
+
+// Packet: 0x0aff
+packetLen(0x0aff, -1) // ZC_ALL_QUEST_LIST4
+
+// Packet: 0x0b00
+packetLen(0x0b00, 8)
+
+// Packet: 0x0b01
+packetLen(0x0b01, 56)
+
+// Packet: 0x0b02
+packetLen(0x0b02, 26) // AC_REFUSE_LOGIN4
+
+// Packet: 0x0b03
+packetLen(0x0b03, -1) // ZC_EQUIPWIN_MICROSCOPE_V7
+
+// Packet: 0x0b04
+packetLen(0x0b04, 80)
+
+// Packet: 0x0b05
+packetLen(0x0b05, 63) // ZC_OFFLINE_STORE_VISIBLE
+
+// Packet: 0x0b07
+packetLen(0x0b07, -1)
+
+// Packet: 0x0b08
+packetLen(0x0b08, -1) // ZC_INVENTORY_START
+
+// Packet: 0x0b09
+packetLen(0x0b09, -1) // ZC_STORE_ITEMLIST_NORMAL_V6
+
+// Packet: 0x0b0a
+packetLen(0x0b0a, -1) // ZC_STORE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0b0b
+packetLen(0x0b0b, 4) // ZC_INVENTORY_END
+
+// Packet: 0x0b0c
+packetLen(0x0b0c, 155) // ZC_ADD_QUEST_EX
+
+// Packet: 0x0b0d
+packetLen(0x0b0d, 10) // ZC_REMOVE_EFFECT
+
+// Packet: 0x0b0e
+packetLen(0x0b0e, -1) // ZC_NPC_BARTER_OPEN
+
+// Packet: 0x0b0f
+packetLen(0x0b0f, -1) // CZ_NPC_BARTER_PURCHASE
+
+// Packet: 0x0b10
+packetLen(0x0b10, 10) // CZ_START_USE_SKILL
+
+// Packet: 0x0b11
+packetLen(0x0b11, 4) // CZ_STOP_USE_SKILL
+
+// Packet: 0x0b12
+packetLen(0x0b12, 2) // CZ_NPC_BARTER_CLOSE
+
+// Packet: 0x0b13
+packetLen(0x0b13, 48) // ZC_ITEM_PREVIEW
+
+// Packet: 0x0b14
+packetLen(0x0b14, 2) // CZ_INVENTORY_EXPAND
+
+// Packet: 0x0b15
+packetLen(0x0b15, 7) // ZC_ACK_INVENTORY_EXPAND
+
+// Packet: 0x0b16
+packetLen(0x0b16, 2) // CZ_INVENTORY_EXPAND_CONFIRMED
+
+// Packet: 0x0b17
+packetLen(0x0b17, 3) // ZC_ACK_INVENTORY_EXPAND_RESULT
+
+// Packet: 0x0b18
+packetLen(0x0b18, 4) // ZC_INVENTORY_EXPANSION_INFO
+
+// Packet: 0x0b19
+packetLen(0x0b19, 2) // CZ_INVENTORY_EXPAND_REJECTED
+
+// Packet: 0x0b1a
+packetLen(0x0b1a, 29)
+
+
+#endif /* COMMON_PACKETS2019_LEN_MAIN_H */
diff --git a/src/common/packets/packets2019_len_re.h b/src/common/packets/packets2019_len_re.h
new file mode 100644
index 000000000..134102bac
--- /dev/null
+++ b/src/common/packets/packets2019_len_re.h
@@ -0,0 +1,4387 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS2019_LEN_RE_H
+#define COMMON_PACKETS2019_LEN_RE_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 157) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 22) // CZ_ENTER
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 44) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 10) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, 14)
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+packetLen(0x0094, 19) // CZ_REQNAME
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 19) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 19) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+packetLen(0x00a0, 33) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+packetLen(0x00a7, 9)
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 9) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 29) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+packetLen(0x00f4, 31) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+packetLen(0x00f7, 17) // CZ_REQUEST_TIME
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 6) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 14) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+packetLen(0x0113, 25) // CZ_USE_SKILL
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 31) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 18) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 8) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 37) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 7) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 6) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 32) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 32) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 15) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 15) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 58) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 57) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 64) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+packetLen(0x01fd, 25) // CZ_REQ_ITEMREPAIR
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 35) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x020f
+packetLen(0x020f, 10) // CZ_REQ_PVPPOINT
+
+// Packet: 0x0210
+packetLen(0x0210, 22) // ZC_ACK_PVPPOINT
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 10) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+packetLen(0x022a, 62) // ZC_NOTIFY_STANDENTRY3
+
+// Packet: 0x022b
+packetLen(0x022b, 61) // ZC_NOTIFY_NEWENTRY3
+
+// Packet: 0x022c
+packetLen(0x022c, 69) // ZC_NOTIFY_MOVEENTRY3
+
+// Packet: 0x022d
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+
+// Packet: 0x022e
+packetLen(0x022e, 73) // ZC_PROPERTY_HOMUN
+
+// Packet: 0x022f
+packetLen(0x022f, 7) // ZC_FEED_MER
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 8) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+
+// Packet: 0x0275
+packetLen(0x0275, 37) // CH_ENTER2
+
+// Packet: 0x0276
+packetLen(0x0276, -1) // AC_ACCEPT_LOGIN2
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+packetLen(0x0281, 4) // CZ_GANGSI_RANK
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+
+// Packet: 0x0288
+packetLen(0x0288, -1) // CZ_PC_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0289
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0296
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0297
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0298
+packetLen(0x0298, 10) // ZC_CASH_TIME_COUNTER
+
+// Packet: 0x0299
+packetLen(0x0299, 8) // ZC_CASH_ITEM_DELETE
+
+// Packet: 0x029a
+packetLen(0x029a, 37) // ZC_ITEM_PICKUP_ACK2
+
+// Packet: 0x029b
+packetLen(0x029b, 80) // ZC_MER_INIT
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a5
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+
+// Packet: 0x02a6
+packetLen(0x02a6, -1) // ZC_HACKSH_CPX_MSG
+
+// Packet: 0x02a7
+packetLen(0x02a7, -1) // CZ_HACKSH_CPX_MSG
+
+// Packet: 0x02aa
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+
+// Packet: 0x02ab
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+
+// Packet: 0x02ac
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+
+// Packet: 0x02ad
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+
+// Packet: 0x02b0
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+
+// Packet: 0x02b1
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+
+// Packet: 0x02b2
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+
+// Packet: 0x02b3
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+
+// Packet: 0x02b4
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+
+// Packet: 0x02b5
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+
+// Packet: 0x02b6
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+
+// Packet: 0x02b7
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+
+// Packet: 0x02b8
+packetLen(0x02b8, 32) // ZC_ITEM_PICKUP_PARTY
+
+// Packet: 0x02b9
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+
+// Packet: 0x02ba
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+
+// Packet: 0x02bb
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+
+// Packet: 0x02bc
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+
+// Packet: 0x02c1
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+
+// Packet: 0x02c2
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+
+// Packet: 0x02c4
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+
+// Packet: 0x02c5
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c6
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+
+// Packet: 0x02c7
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c8
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+
+// Packet: 0x02c9
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+
+// Packet: 0x02ca
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+
+// Packet: 0x02cb
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+
+// Packet: 0x02cc
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+
+// Packet: 0x02cd
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+
+// Packet: 0x02ce
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+
+// Packet: 0x02cf
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+
+// Packet: 0x02d0
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d1
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d2
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d3
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+
+// Packet: 0x02d4
+packetLen(0x02d4, 39) // ZC_ITEM_PICKUP_ACK3
+
+// Packet: 0x02d5
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+
+// Packet: 0x02d6
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d7
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d8
+packetLen(0x02d8, 10) // CZ_CONFIG
+
+// Packet: 0x02d9
+packetLen(0x02d9, 10) // ZC_CONFIG
+
+// Packet: 0x02da
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+
+// Packet: 0x02db
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+
+// Packet: 0x02dc
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+
+// Packet: 0x02dd
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+
+// Packet: 0x02de
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+
+// Packet: 0x02df
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+
+// Packet: 0x02e0
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+
+// Packet: 0x02e1
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+
+// Packet: 0x02e2
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+
+// Packet: 0x02e3
+packetLen(0x02e3, 22) // CZ_USE_SKILL_NEW_JAPEN
+
+// Packet: 0x02e4
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+
+// Packet: 0x02e5
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+
+// Packet: 0x02e6
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+
+// Packet: 0x02e7
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+
+// Packet: 0x02e8
+packetLen(0x02e8, -1) // ZC_NORMAL_ITEMLIST3
+
+// Packet: 0x02e9
+packetLen(0x02e9, -1) // ZC_CART_NORMAL_ITEMLIST3
+
+// Packet: 0x02ea
+packetLen(0x02ea, -1) // ZC_STORE_NORMAL_ITEMLIST3
+
+// Packet: 0x02eb
+packetLen(0x02eb, 13) // ZC_ACCEPT_ENTER2
+
+// Packet: 0x02ec
+packetLen(0x02ec, 71) // ZC_NOTIFY_MOVEENTRY4
+
+// Packet: 0x02ed
+packetLen(0x02ed, 63) // ZC_NOTIFY_NEWENTRY4
+
+// Packet: 0x02ee
+packetLen(0x02ee, 64) // ZC_NOTIFY_STANDENTRY4
+
+// Packet: 0x02ef
+packetLen(0x02ef, 8) // ZC_NOTIFY_FONT
+
+// Packet: 0x02f0
+packetLen(0x02f0, 10) // ZC_PROGRESS
+
+// Packet: 0x02f1
+packetLen(0x02f1, 2) // CZ_PROGRESS
+
+// Packet: 0x02f2
+packetLen(0x02f2, 2) // ZC_PROGRESS_CANCEL
+
+// Packet: 0x02f3
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+
+// Packet: 0x02f4
+packetLen(0x02f4, 3) // ZC_IRMAIL_SEND_RES
+
+// Packet: 0x02f5
+packetLen(0x02f5, 7) // ZC_IRMAIL_NOTIFY
+
+// Packet: 0x02f6
+packetLen(0x02f6, 7) // CZ_IRMAIL_LIST
+
+// Packet: 0x035c
+packetLen(0x035c, 2) // CZ_OPEN_SIMPLE_CASHSHOP_ITEMLIST
+
+// Packet: 0x035d
+packetLen(0x035d, -1) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+
+// Packet: 0x035e
+packetLen(0x035e, 2) // CZ_CLOSE_WINDOW
+
+// Packet: 0x035f
+packetLen(0x035f, 5) // CZ_REQUEST_MOVE2
+
+// Packet: 0x0360
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+
+// Packet: 0x0361
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+
+// Packet: 0x0362
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+
+// Packet: 0x0363
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+
+// Packet: 0x0364
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+
+// Packet: 0x0365
+packetLen(0x0365, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+
+// Packet: 0x0366
+packetLen(0x0366, 10) // CZ_USE_SKILL_TOGROUND2
+
+// Packet: 0x0367
+packetLen(0x0367, 90) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+
+// Packet: 0x0368
+packetLen(0x0368, 6) // CZ_REQNAME2
+
+// Packet: 0x0369
+packetLen(0x0369, 6) // CZ_REQNAME_BYGID2
+
+// Packet: 0x03dd
+packetLen(0x03dd, 18) // AHC_GAME_GUARD
+
+// Packet: 0x03de
+packetLen(0x03de, 18) // CAH_ACK_GAME_GUARD
+
+// Packet: 0x0436
+packetLen(0x0436, 19) // CZ_ENTER2
+
+// Packet: 0x0437
+packetLen(0x0437, 7) // CZ_REQUEST_ACT2
+
+// Packet: 0x0438
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+
+// Packet: 0x0439
+packetLen(0x0439, 8) // CZ_USE_ITEM2
+
+// Packet: 0x043d
+packetLen(0x043d, 8) // ZC_SKILL_POSTDELAY
+
+// Packet: 0x043e
+packetLen(0x043e, -1) // ZC_SKILL_POSTDELAY_LIST
+
+// Packet: 0x043f
+packetLen(0x043f, 25) // ZC_MSG_STATE_CHANGE2
+
+// Packet: 0x0440
+packetLen(0x0440, 10) // ZC_MILLENNIUMSHIELD
+
+// Packet: 0x0441
+packetLen(0x0441, 4) // ZC_SKILLINFO_DELETE
+
+// Packet: 0x0442
+packetLen(0x0442, -1) // ZC_SKILL_SELECT_REQUEST
+
+// Packet: 0x0443
+packetLen(0x0443, 8) // CZ_SKILL_SELECT_RESPONSE
+
+// Packet: 0x0444
+packetLen(0x0444, -1) // ZC_SIMPLE_CASH_POINT_ITEMLIST
+
+// Packet: 0x0445
+packetLen(0x0445, 12) // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0446
+packetLen(0x0446, 14) // ZC_QUEST_NOTIFY_EFFECT
+
+// Packet: 0x0447
+packetLen(0x0447, 2) // CZ_BLOCKING_PLAY_CANCEL
+
+// Packet: 0x0448
+packetLen(0x0448, -1) // HC_CHARACTER_LIST
+
+// Packet: 0x0449
+packetLen(0x0449, 4) // ZC_HACKSH_ERROR_MSG
+
+// Packet: 0x044a
+packetLen(0x044a, 6) // CZ_CLIENT_VERSION
+
+// Packet: 0x044b
+packetLen(0x044b, 2) // CZ_CLOSE_SIMPLECASH_SHOP
+
+// Packet: 0x07d7
+packetLen(0x07d7, 8) // CZ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d8
+packetLen(0x07d8, 8) // ZC_REQ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d9
+packetLen(0x07d9, 268) // ZC_SHORTCUT_KEY_LIST_V2
+
+// Packet: 0x07da
+packetLen(0x07da, 6) // CZ_CHANGE_GROUP_MASTER
+
+// Packet: 0x07db
+packetLen(0x07db, 8) // ZC_HO_PAR_CHANGE
+
+// Packet: 0x07dc
+packetLen(0x07dc, 6) // CZ_SEEK_PARTY
+
+// Packet: 0x07dd
+packetLen(0x07dd, 54) // ZC_SEEK_PARTY
+
+// Packet: 0x07de
+packetLen(0x07de, 30) // CZ_SEEK_PARTY_MEMBER
+
+// Packet: 0x07df
+packetLen(0x07df, 54) // ZC_SEEK_PARTY_MEMBER
+
+// Packet: 0x07e0
+packetLen(0x07e0, 58) // ZC_ES_NOTI_MYINFO
+
+// Packet: 0x07e1
+packetLen(0x07e1, 15) // ZC_SKILLINFO_UPDATE2
+
+// Packet: 0x07e2
+packetLen(0x07e2, 8) // ZC_MSG_VALUE
+
+// Packet: 0x07e3
+packetLen(0x07e3, 6) // ZC_ITEMLISTWIN_OPEN
+
+// Packet: 0x07e4
+packetLen(0x07e4, -1) // CZ_ITEMLISTWIN_RES
+
+// Packet: 0x07e5
+packetLen(0x07e5, 4) // CH_ENTER_CHECKBOT
+
+// Packet: 0x07e6
+packetLen(0x07e6, 8) // ZC_MSG_SKILL
+
+// Packet: 0x07e7
+packetLen(0x07e7, 32) // CH_CHECKBOT
+
+// Packet: 0x07e8
+packetLen(0x07e8, -1) // HC_CHECKBOT
+
+// Packet: 0x07e9
+packetLen(0x07e9, 5) // HC_CHECKBOT_RESULT
+
+// Packet: 0x07ea
+packetLen(0x07ea, 2) // CZ_BATTLE_FIELD_LIST
+
+// Packet: 0x07eb
+packetLen(0x07eb, -1) // ZC_BATTLE_FIELD_LIST
+
+// Packet: 0x07ec
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+
+// Packet: 0x07ed
+packetLen(0x07ed, 10) // ZC_JOIN_BATTLE_FIELD
+
+// Packet: 0x07ee
+packetLen(0x07ee, 6) // CZ_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07ef
+packetLen(0x07ef, 8) // ZC_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07f0
+packetLen(0x07f0, 6) // CZ_REQ_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f1
+packetLen(0x07f1, 18) // ZC_ACK_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f2
+packetLen(0x07f2, 8) // ZC_BATTLE_NOTI_START_STEP
+
+// Packet: 0x07f3
+packetLen(0x07f3, 6) // ZC_BATTLE_JOIN_NOTI_DEFER
+
+// Packet: 0x07f4
+packetLen(0x07f4, 3) // ZC_BATTLE_JOIN_DISABLE_STATE
+
+// Packet: 0x07f5
+packetLen(0x07f5, 6) // CZ_GM_FULLSTRIP
+
+// Packet: 0x07f6
+packetLen(0x07f6, 14) // ZC_NOTIFY_EXP
+
+// Packet: 0x07f7
+packetLen(0x07f7, -1) // ZC_NOTIFY_MOVEENTRY7
+
+// Packet: 0x07f8
+packetLen(0x07f8, -1) // ZC_NOTIFY_NEWENTRY5
+
+// Packet: 0x07f9
+packetLen(0x07f9, -1) // ZC_NOTIFY_STANDENTRY5
+
+// Packet: 0x07fa
+packetLen(0x07fa, 8) // ZC_DELETE_ITEM_FROM_BODY
+
+// Packet: 0x07fb
+packetLen(0x07fb, 25) // ZC_USESKILL_ACK2
+
+// Packet: 0x07fc
+packetLen(0x07fc, 10) // ZC_CHANGE_GROUP_MASTER
+
+// Packet: 0x07fd
+packetLen(0x07fd, -1) // ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN
+
+// Packet: 0x07fe
+packetLen(0x07fe, 26) // ZC_PLAY_NPC_BGM
+
+// Packet: 0x0800
+packetLen(0x0800, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0801
+packetLen(0x0801, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0802
+packetLen(0x0802, 18) // CZ_PARTY_BOOKING_REQ_REGISTER
+
+// Packet: 0x0803
+packetLen(0x0803, 4) // ZC_PARTY_BOOKING_ACK_REGISTER
+
+// Packet: 0x0804
+packetLen(0x0804, 14) // CZ_PARTY_BOOKING_REQ_SEARCH
+
+// Packet: 0x0805
+packetLen(0x0805, -1) // ZC_PARTY_BOOKING_ACK_SEARCH
+
+// Packet: 0x0806
+packetLen(0x0806, 2) // CZ_PARTY_BOOKING_REQ_DELETE
+
+// Packet: 0x0807
+packetLen(0x0807, 4) // ZC_PARTY_BOOKING_ACK_DELETE
+
+// Packet: 0x0808
+packetLen(0x0808, 14) // CZ_PARTY_BOOKING_REQ_UPDATE
+
+// Packet: 0x0809
+packetLen(0x0809, 50) // ZC_PARTY_BOOKING_NOTIFY_INSERT
+
+// Packet: 0x080a
+packetLen(0x080a, 18) // ZC_PARTY_BOOKING_NOTIFY_UPDATE
+
+// Packet: 0x080b
+packetLen(0x080b, 6) // ZC_PARTY_BOOKING_NOTIFY_DELETE
+
+// Packet: 0x080c
+packetLen(0x080c, 2) // CZ_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080d
+packetLen(0x080d, 3) // ZC_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080e
+packetLen(0x080e, 14) // ZC_NOTIFY_HP_TO_GROUPM_R2
+
+// Packet: 0x080f
+packetLen(0x080f, 30) // ZC_ADD_EXCHANGE_ITEM2
+
+// Packet: 0x0810
+packetLen(0x0810, 3) // ZC_OPEN_BUYING_STORE
+
+// Packet: 0x0811
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+
+// Packet: 0x0812
+packetLen(0x0812, 8) // ZC_FAILED_OPEN_BUYING_STORE_TO_BUYER
+
+// Packet: 0x0813
+packetLen(0x0813, -1) // ZC_MYITEMLIST_BUYING_STORE
+
+// Packet: 0x0814
+packetLen(0x0814, 86) // ZC_BUYING_STORE_ENTRY
+
+// Packet: 0x0815
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+
+// Packet: 0x0816
+packetLen(0x0816, 6) // ZC_DISAPPEAR_BUYING_STORE_ENTRY
+
+// Packet: 0x0817
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+
+// Packet: 0x0818
+packetLen(0x0818, -1) // ZC_ACK_ITEMLIST_BUYING_STORE
+
+// Packet: 0x0819
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+
+// Packet: 0x081a
+packetLen(0x081a, 4) // ZC_FAILED_TRADE_BUYING_STORE_TO_BUYER
+
+// Packet: 0x081b
+packetLen(0x081b, 12) // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+
+// Packet: 0x081c
+packetLen(0x081c, 10) // ZC_ITEM_DELETE_BUYING_STORE
+
+// Packet: 0x081d
+packetLen(0x081d, 22) // ZC_EL_INIT
+
+// Packet: 0x081e
+packetLen(0x081e, 8) // ZC_EL_PAR_CHANGE
+
+// Packet: 0x081f
+packetLen(0x081f, -1) // ZC_BROADCAST4
+
+// Packet: 0x0820
+packetLen(0x0820, 11) // ZC_COSTUME_SPRITE_CHANGE
+
+// Packet: 0x0821
+packetLen(0x0821, 2) // AC_OTP_USER
+
+// Packet: 0x0822
+packetLen(0x0822, 9) // CA_OTP_AUTH_REQ
+
+// Packet: 0x0823
+packetLen(0x0823, -1) // AC_OTP_AUTH_ACK
+
+// Packet: 0x0824
+packetLen(0x0824, 8) // ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER
+
+// Packet: 0x0825
+packetLen(0x0825, -1) // CA_SSO_LOGIN_REQ
+
+// Packet: 0x0827
+packetLen(0x0827, 6) // CH_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0828
+packetLen(0x0828, 14) // HC_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0829
+packetLen(0x0829, 12) // CH_DELETE_CHAR3
+
+// Packet: 0x082a
+packetLen(0x082a, 10) // HC_DELETE_CHAR3
+
+// Packet: 0x082b
+packetLen(0x082b, 6) // CH_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082c
+packetLen(0x082c, 10) // HC_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082d
+packetLen(0x082d, -1) // HC_ACCEPT_ENTER2
+
+// Packet: 0x0835
+packetLen(0x0835, -1) // CZ_SEARCH_STORE_INFO
+
+// Packet: 0x0836
+packetLen(0x0836, -1) // ZC_SEARCH_STORE_INFO_ACK
+
+// Packet: 0x0837
+packetLen(0x0837, 3) // ZC_SEARCH_STORE_INFO_FAILED
+
+// Packet: 0x0838
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+
+// Packet: 0x0839
+packetLen(0x0839, 66) // ZC_ACK_BAN_GUILD_SSO
+
+// Packet: 0x083a
+packetLen(0x083a, 5) // ZC_OPEN_SEARCH_STORE_INFO
+
+// Packet: 0x083b
+packetLen(0x083b, 2) // CZ_CLOSE_SEARCH_STORE_INFO
+
+// Packet: 0x083c
+packetLen(0x083c, 14) // CZ_SSILIST_ITEM_CLICK
+
+// Packet: 0x083d
+packetLen(0x083d, 6) // ZC_SSILIST_ITEM_CLICK_ACK
+
+// Packet: 0x083e
+packetLen(0x083e, 26) // AC_REFUSE_LOGIN2
+
+// Packet: 0x0840
+packetLen(0x0840, -1) // HC_NOTIFY_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0841
+packetLen(0x0841, 4) // CH_SELECT_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0842
+packetLen(0x0842, 6) // CZ_RECALL_SSO
+
+// Packet: 0x0843
+packetLen(0x0843, 6) // CZ_REMOVE_AID_SSO
+
+// Packet: 0x0844
+packetLen(0x0844, 2) // CZ_SE_CASHSHOP_OPEN
+
+// Packet: 0x0845
+packetLen(0x0845, 10) // ZC_SE_CASHSHOP_OPEN
+
+// Packet: 0x0846
+packetLen(0x0846, 4) // CZ_REQ_SE_CASH_TAB_CODE
+
+// Packet: 0x0847
+packetLen(0x0847, -1) // ZC_ACK_SE_CASH_ITEM_LIST
+
+// Packet: 0x0848
+packetLen(0x0848, -1) // CZ_SE_PC_BUY_CASHITEM_LIST
+
+// Packet: 0x0849
+packetLen(0x0849, 16) // ZC_SE_PC_BUY_CASHITEM_RESULT
+
+// Packet: 0x084a
+packetLen(0x084a, 2) // CZ_SE_CASHSHOP_CLOSE
+
+// Packet: 0x084b
+packetLen(0x084b, 21) // ZC_ITEM_FALL_ENTRY4
+
+// Packet: 0x084c
+packetLen(0x084c, 10) // CZ_MACRO_USE_SKILL
+
+// Packet: 0x084d
+packetLen(0x084d, 10) // CZ_MACRO_USE_SKILL_TOGROUND
+
+// Packet: 0x084e
+packetLen(0x084e, 5) // CZ_MACRO_REQUEST_MOVE
+
+// Packet: 0x084f
+packetLen(0x084f, 6) // CZ_MACRO_ITEM_PICKUP
+
+// Packet: 0x0850
+packetLen(0x0850, 7) // CZ_MACRO_REQUEST_ACT
+
+// Packet: 0x0851
+packetLen(0x0851, -1) // ZC_GPK_DYNCODE
+
+// Packet: 0x0852
+packetLen(0x0852, 2) // CZ_GPK_DYNCODE_RELOAD
+
+// Packet: 0x0853
+packetLen(0x0853, -1) // ZC_GPK_AUTH
+
+// Packet: 0x0854
+packetLen(0x0854, -1) // CZ_GPK_AUTH
+
+// Packet: 0x0855
+packetLen(0x0855, 6) // ZC_MACRO_ITEMPICKUP_FAIL
+
+// Packet: 0x0856
+packetLen(0x0856, -1) // ZC_NOTIFY_MOVEENTRY8
+
+// Packet: 0x0857
+packetLen(0x0857, -1) // ZC_NOTIFY_STANDENTRY7
+
+// Packet: 0x0858
+packetLen(0x0858, -1) // ZC_NOTIFY_NEWENTRY6
+
+// Packet: 0x0859
+packetLen(0x0859, -1) // ZC_EQUIPWIN_MICROSCOPE2
+
+// Packet: 0x085a
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+
+// Packet: 0x085b
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+
+// Packet: 0x085c
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+
+// Packet: 0x085d
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+
+// Packet: 0x085e
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+
+// Packet: 0x085f
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+
+// Packet: 0x0860
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+
+// Packet: 0x0861
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+
+// Packet: 0x0862
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+
+// Packet: 0x0863
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+
+// Packet: 0x0864
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+
+// Packet: 0x0865
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+
+// Packet: 0x0866
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+
+// Packet: 0x0867
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+
+// Packet: 0x0868
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+
+// Packet: 0x0869
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+
+// Packet: 0x086a
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+
+// Packet: 0x086b
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+
+// Packet: 0x086c
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+
+// Packet: 0x086d
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+
+// Packet: 0x086e
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+
+// Packet: 0x086f
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+
+// Packet: 0x0870
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+
+// Packet: 0x0871
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+
+// Packet: 0x0872
+packetLen(0x0872, 2)
+
+// Packet: 0x0873
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+
+// Packet: 0x0874
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+
+// Packet: 0x0875
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+
+// Packet: 0x0876
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+
+// Packet: 0x0877
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+
+// Packet: 0x0878
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+
+// Packet: 0x0879
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+
+// Packet: 0x087a
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+
+// Packet: 0x087b
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+
+// Packet: 0x087c
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+
+// Packet: 0x087d
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+
+// Packet: 0x087e
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+
+// Packet: 0x087f
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+
+// Packet: 0x0880
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+
+// Packet: 0x0881
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+
+// Packet: 0x0882
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+
+// Packet: 0x0883
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+
+// Packet: 0x0884
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+
+// Packet: 0x0885
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+
+// Packet: 0x0886
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+
+// Packet: 0x0887
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+
+// Packet: 0x0888
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+
+// Packet: 0x0889
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+
+// Packet: 0x088a
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+
+// Packet: 0x088b
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+
+// Packet: 0x088c
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+
+// Packet: 0x088d
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+
+// Packet: 0x088e
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+
+// Packet: 0x088f
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+
+// Packet: 0x0890
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+
+// Packet: 0x0891
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+
+// Packet: 0x0892
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+
+// Packet: 0x0893
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+
+// Packet: 0x0894
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+
+// Packet: 0x0895
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+
+// Packet: 0x0896
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+
+// Packet: 0x0897
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+
+// Packet: 0x0898
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+
+// Packet: 0x0899
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+
+// Packet: 0x089a
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+
+// Packet: 0x089b
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+
+// Packet: 0x089c
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+
+// Packet: 0x089d
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+
+// Packet: 0x089e
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+
+// Packet: 0x089f
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+
+// Packet: 0x08a0
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+
+// Packet: 0x08a1
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+
+// Packet: 0x08a2
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+
+// Packet: 0x08a3
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+
+// Packet: 0x08a4
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+
+// Packet: 0x08a5
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+
+// Packet: 0x08a6
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+
+// Packet: 0x08a7
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+
+// Packet: 0x08a8
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+
+// Packet: 0x08a9
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+
+// Packet: 0x08aa
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+
+// Packet: 0x08ab
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+
+// Packet: 0x08ac
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+
+// Packet: 0x08ad
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+
+// Packet: 0x08af
+packetLen(0x08af, 10) // HC_WAITING_LOGIN
+
+// Packet: 0x08b0
+packetLen(0x08b0, 17) // CH_WAITING_LOGIN
+
+// Packet: 0x08b1
+packetLen(0x08b1, -1) // ZC_MCSTORE_NOTMOVEITEM_LIST
+
+// Packet: 0x08b2
+packetLen(0x08b2, -1) // AC_REALNAME_AUTH
+
+// Packet: 0x08b3
+packetLen(0x08b3, -1) // ZC_SHOWSCRIPT
+
+// Packet: 0x08b4
+packetLen(0x08b4, 2) // ZC_START_COLLECTION
+
+// Packet: 0x08b5
+packetLen(0x08b5, 6) // CZ_TRYCOLLECTION
+
+// Packet: 0x08b6
+packetLen(0x08b6, 3) // ZC_TRYCOLLECTION
+
+// Packet: 0x08b8
+packetLen(0x08b8, 10) // CH_SECOND_PASSWD_ACK
+
+// Packet: 0x08b9
+packetLen(0x08b9, 12) // HC_SECOND_PASSWD_LOGIN
+
+// Packet: 0x08ba
+packetLen(0x08ba, 10) // CH_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bb
+packetLen(0x08bb, 8) // HC_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bc
+packetLen(0x08bc, 10) // CH_DELETE_SECOND_PASSWD
+
+// Packet: 0x08bd
+packetLen(0x08bd, 8) // HC_DELETE_SECOND_PASSWD
+
+// Packet: 0x08be
+packetLen(0x08be, 14) // CH_EDIT_SECOND_PASSWD
+
+// Packet: 0x08bf
+packetLen(0x08bf, 8) // HC_EDIT_SECOND_PASSWD
+
+// Packet: 0x08c0
+packetLen(0x08c0, -1) // ZC_ACK_SE_CASH_ITEM_LIST2
+
+// Packet: 0x08c1
+packetLen(0x08c1, 2) // CZ_MACRO_START
+
+// Packet: 0x08c2
+packetLen(0x08c2, 2) // CZ_MACRO_STOP
+
+// Packet: 0x08c3
+packetLen(0x08c3, 10) // CH_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c4
+packetLen(0x08c4, 8) // HC_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c5
+packetLen(0x08c5, 6) // CH_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c6
+packetLen(0x08c6, 4) // HC_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c7
+packetLen(0x08c7, -1) // ZC_SKILL_ENTRY3
+
+// Packet: 0x08c8
+packetLen(0x08c8, 34) // ZC_NOTIFY_ACT3
+
+// Packet: 0x08c9
+packetLen(0x08c9, 2) // CZ_REQ_SCHEDULER_CASHITEM
+
+// Packet: 0x08ca
+packetLen(0x08ca, -1) // ZC_ACK_SCHEDULER_CASHITEM
+
+// Packet: 0x08cb
+packetLen(0x08cb, -1) // ZC_PERSONAL_INFOMATION
+
+// Packet: 0x08cc
+packetLen(0x08cc, 109) // CA_LOGIN5
+
+// Packet: 0x08cd
+packetLen(0x08cd, 10) // ZC_STOPMOVE_FORCE
+
+// Packet: 0x08ce
+packetLen(0x08ce, 2) // ZC_FAILED_GET_ITEM_FROM_ZONEDA
+
+// Packet: 0x08cf
+packetLen(0x08cf, 10) // ZC_SPIRITS_ATTRIBUTE
+
+// Packet: 0x08d0
+packetLen(0x08d0, 9) // ZC_REQ_WEAR_EQUIP_ACK2
+
+// Packet: 0x08d1
+packetLen(0x08d1, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK2
+
+// Packet: 0x08d2
+packetLen(0x08d2, 10) // ZC_FASTMOVE
+
+// Packet: 0x08d3
+packetLen(0x08d3, 10) // ZC_SE_CASHSHOP_UPDATE
+
+// Packet: 0x08d4
+packetLen(0x08d4, 8) // CH_REQ_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d5
+packetLen(0x08d5, -1) // HC_ACK_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d6
+packetLen(0x08d6, 6) // ZC_CLEAR_DIALOG
+
+// Packet: 0x08d7
+packetLen(0x08d7, 28) // CZ_REQ_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d8
+packetLen(0x08d8, 27) // ZC_ACK_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d9
+packetLen(0x08d9, 30) // ZC_NOTIFY_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08da
+packetLen(0x08da, 26) // CZ_REQ_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08db
+packetLen(0x08db, 27) // ZC_ACK_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08dc
+packetLen(0x08dc, 26) // ZC_NOTIFY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08dd
+packetLen(0x08dd, 27) // CZ_REPLY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08de
+packetLen(0x08de, 27) // ZC_REPLY_ACK_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08df
+packetLen(0x08df, 50) // ZC_NOTIFY_LOBBY_ADMISSION
+
+// Packet: 0x08e0
+packetLen(0x08e0, 51) // CZ_REPLY_LOBBY_ADMISSION
+
+// Packet: 0x08e1
+packetLen(0x08e1, 51) // ZC_REPLY_ACK_LOBBY_ADMISSION
+
+// Packet: 0x08e2
+packetLen(0x08e2, 27) // ZC_NAVIGATION_ACTIVE
+
+// Packet: 0x08e3
+packetLen(0x08e3, 157) // HC_UPDATE_CHARINFO
+
+// Packet: 0x08e4
+packetLen(0x08e4, 6) // AC_SHUTDOWN_INFO
+
+// Packet: 0x08fc
+packetLen(0x08fc, 30) // CH_REQ_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fd
+packetLen(0x08fd, 6) // CH_ACK_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fe
+packetLen(0x08fe, -1) // ZC_HUNTING_QUEST_INFO
+
+// Packet: 0x08ff
+packetLen(0x08ff, 24) // ZC_EFST_SET_ENTER
+
+// Packet: 0x0900
+packetLen(0x0900, -1) // ZC_INVENTORY_ITEMLIST_NORMAL
+
+// Packet: 0x0901
+packetLen(0x0901, -1) // ZC_INVENTORY_ITEMLIST_EQUIP
+
+// Packet: 0x0902
+packetLen(0x0902, -1) // ZC_CART_ITEMLIST_NORMAL
+
+// Packet: 0x0903
+packetLen(0x0903, -1) // ZC_CART_ITEMLIST_EQUIP
+
+// Packet: 0x0904
+packetLen(0x0904, -1) // ZC_STORE_ITEMLIST_NORMAL
+
+// Packet: 0x0905
+packetLen(0x0905, -1) // ZC_STORE_ITEMLIST_EQUIP
+
+// Packet: 0x0906
+packetLen(0x0906, -1) // ZC_MICROSCOPE
+
+// Packet: 0x0907
+packetLen(0x0907, 5) // CZ_INVENTORY_TAB
+
+// Packet: 0x0908
+packetLen(0x0908, 5) // ZC_INVENTORY_TAB
+
+// Packet: 0x090a
+packetLen(0x090a, 26) // CZ_REQ_ENTRY_QUEUE_RANKING
+
+// Packet: 0x090d
+packetLen(0x090d, -1) // ZC_PREMIUM_CAMPAIGN_INFO
+
+// Packet: 0x090e
+packetLen(0x090e, 2) // ZC_ENTRY_QUEUE_INIT
+
+// Packet: 0x090f
+packetLen(0x090f, -1) // ZC_NOTIFY_NEWENTRY7
+
+// Packet: 0x0910
+packetLen(0x0910, 10) // CZ_REQ_PARTY_NAME
+
+// Packet: 0x0911
+packetLen(0x0911, 30) // ZC_ACK_PARTY_NAME
+
+// Packet: 0x0912
+packetLen(0x0912, 10) // CZ_REQ_GUILD_NAME
+
+// Packet: 0x0913
+packetLen(0x0913, 30) // ZC_ACK_GUILD_NAME
+
+// Packet: 0x0914
+packetLen(0x0914, -1) // ZC_NOTIFY_MOVEENTRY9
+
+// Packet: 0x0915
+packetLen(0x0915, -1) // ZC_NOTIFY_STANDENTRY8
+
+// Packet: 0x0916
+packetLen(0x0916, 26) // CZ_REQ_JOIN_GUILD2
+
+// Packet: 0x0917
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+
+// Packet: 0x0918
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+
+// Packet: 0x0919
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+
+// Packet: 0x091a
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+
+// Packet: 0x091b
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+
+// Packet: 0x091c
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+
+// Packet: 0x091d
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+
+// Packet: 0x091e
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+
+// Packet: 0x091f
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+
+// Packet: 0x0920
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+
+// Packet: 0x0921
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+
+// Packet: 0x0922
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+
+// Packet: 0x0923
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+
+// Packet: 0x0924
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+
+// Packet: 0x0925
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+
+// Packet: 0x0926
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+
+// Packet: 0x0927
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+
+// Packet: 0x0928
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+
+// Packet: 0x0929
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+
+// Packet: 0x092a
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+
+// Packet: 0x092b
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+
+// Packet: 0x092c
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+
+// Packet: 0x092d
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+
+// Packet: 0x092e
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+
+// Packet: 0x092f
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+
+// Packet: 0x0930
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+
+// Packet: 0x0931
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+
+// Packet: 0x0932
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+
+// Packet: 0x0933
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+
+// Packet: 0x0934
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+
+// Packet: 0x0935
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+
+// Packet: 0x0936
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+
+// Packet: 0x0937
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+
+// Packet: 0x0938
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+
+// Packet: 0x0939
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+
+// Packet: 0x093a
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+
+// Packet: 0x093b
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+
+// Packet: 0x093c
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+
+// Packet: 0x093d
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+
+// Packet: 0x093e
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+
+// Packet: 0x093f
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+
+// Packet: 0x0940
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+
+// Packet: 0x0941
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+
+// Packet: 0x0942
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+
+// Packet: 0x0943
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+
+// Packet: 0x0944
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+
+// Packet: 0x0945
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+
+// Packet: 0x0946
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+
+// Packet: 0x0947
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+
+// Packet: 0x0948
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+
+// Packet: 0x0949
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+
+// Packet: 0x094a
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+
+// Packet: 0x094b
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+
+// Packet: 0x094c
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+
+// Packet: 0x094d
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+
+// Packet: 0x094e
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+
+// Packet: 0x094f
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+
+// Packet: 0x0950
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+
+// Packet: 0x0951
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+
+// Packet: 0x0952
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+
+// Packet: 0x0953
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+
+// Packet: 0x0954
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+
+// Packet: 0x0955
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+
+// Packet: 0x0956
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+
+// Packet: 0x0957
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+
+// Packet: 0x0958
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+
+// Packet: 0x0959
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+
+// Packet: 0x095a
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+
+// Packet: 0x095b
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+
+// Packet: 0x095c
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+
+// Packet: 0x095d
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+
+// Packet: 0x095e
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+
+// Packet: 0x095f
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+
+// Packet: 0x0960
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+
+// Packet: 0x0961
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+
+// Packet: 0x0962
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+
+// Packet: 0x0963
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+
+// Packet: 0x0964
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+
+// Packet: 0x0965
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+
+// Packet: 0x0966
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+
+// Packet: 0x0967
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+
+// Packet: 0x0968
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+
+// Packet: 0x0969
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+
+// Packet: 0x096a
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+
+// Packet: 0x096b
+packetLen(0x096b, 4) // ZC_PRNPC_STATE
+
+// Packet: 0x096c
+packetLen(0x096c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+
+// Packet: 0x096d
+packetLen(0x096d, -1) // ZC_MERGE_ITEM_OPEN
+
+// Packet: 0x096e
+packetLen(0x096e, -1) // CZ_REQ_MERGE_ITEM
+
+// Packet: 0x096f
+packetLen(0x096f, 7) // ZC_ACK_MERGE_ITEM
+
+// Packet: 0x0970
+packetLen(0x0970, 31) // CH_MAKE_CHAR_NOT_STATS
+
+// Packet: 0x0971
+packetLen(0x0971, 6) // ZC_PARTY_RECRUIT_REFUSE_VOLUNTEER_TO_PM
+
+// Packet: 0x0972
+packetLen(0x0972, -1) // ZC_SAY_DIALOG2
+
+// Packet: 0x0973
+packetLen(0x0973, 7) // ZC_WAIT_DIALOG2
+
+// Packet: 0x0974
+packetLen(0x0974, 2) // CZ_CANCEL_MERGE_ITEM
+
+// Packet: 0x0975
+packetLen(0x0975, -1) // ZC_STORE_ITEMLIST_NORMAL_V2
+
+// Packet: 0x0976
+packetLen(0x0976, -1) // ZC_STORE_ITEMLIST_EQUIP_V2
+
+// Packet: 0x0977
+packetLen(0x0977, 14) // ZC_HP_INFO
+
+// Packet: 0x0978
+packetLen(0x0978, 6) // CZ_REQ_BEFORE_WORLD_INFO
+
+// Packet: 0x0979
+packetLen(0x0979, 50) // ZC_ACK_BEFORE_WORLD_INFO
+
+// Packet: 0x097a
+packetLen(0x097a, -1) // ZC_ALL_QUEST_LIST2
+
+// Packet: 0x097b
+packetLen(0x097b, -1) // ZC_PERSONAL_INFOMATION2
+
+// Packet: 0x097c
+packetLen(0x097c, 4) // CZ_REQ_RANKING
+
+// Packet: 0x097d
+packetLen(0x097d, 288) // ZC_ACK_RANKING
+
+// Packet: 0x097e
+packetLen(0x097e, 12) // ZC_UPDATE_RANKING_POINT
+
+// Packet: 0x097f
+packetLen(0x097f, -1) // ZC_SELECTCART
+
+// Packet: 0x0980
+packetLen(0x0980, 7) // CZ_SELECTCART
+
+// Packet: 0x0981
+packetLen(0x0981, -1) // ZC_PERSONAL_INFOMATION_CHN
+
+// Packet: 0x0982
+packetLen(0x0982, 7) // ZC_FATIGUE_CHN
+
+// Packet: 0x0983
+packetLen(0x0983, 29) // ZC_MSG_STATE_CHANGE3
+
+// Packet: 0x0984
+packetLen(0x0984, 28) // ZC_EFST_SET_ENTER2
+
+// Packet: 0x0985
+packetLen(0x0985, -1) // ZC_SKILL_POSTDELAY_LIST2
+
+// Packet: 0x0986
+packetLen(0x0986, 10) // AC_SHUTDOWN_NOTIFY
+
+// Packet: 0x0987
+packetLen(0x0987, -1) // CA_LOGIN6
+
+// Packet: 0x0988
+packetLen(0x0988, 6) // ZC_NOTIFY_CLAN_CONNECTINFO
+
+// Packet: 0x0989
+packetLen(0x0989, 2) // ZC_ACK_CLAN_LEAVE
+
+// Packet: 0x098a
+packetLen(0x098a, -1) // ZC_CLANINFO
+
+// Packet: 0x098b
+packetLen(0x098b, 2) // AC_REQ_NEW_USER
+
+// Packet: 0x098c
+packetLen(0x098c, 4) // CA_ACK_NEW_USER
+
+// Packet: 0x098d
+packetLen(0x098d, -1) // CZ_CLAN_CHAT
+
+// Packet: 0x098e
+packetLen(0x098e, -1) // ZC_NOTIFY_CLAN_CHAT
+
+// Packet: 0x098f
+packetLen(0x098f, -1) // CH_DELETE_CHAR3_EXT
+
+// Packet: 0x0990
+packetLen(0x0990, 41) // ZC_ITEM_PICKUP_ACK_V5
+
+// Packet: 0x0991
+packetLen(0x0991, -1) // ZC_INVENTORY_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0992
+packetLen(0x0992, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0993
+packetLen(0x0993, -1) // ZC_CART_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0994
+packetLen(0x0994, -1) // ZC_CART_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0995
+packetLen(0x0995, -1) // ZC_STORE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0996
+packetLen(0x0996, -1) // ZC_STORE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0997
+packetLen(0x0997, -1) // ZC_EQUIPWIN_MICROSCOPE_V5
+
+// Packet: 0x0998
+packetLen(0x0998, 8) // CZ_REQ_WEAR_EQUIP_V5
+
+// Packet: 0x0999
+packetLen(0x0999, 11) // ZC_ACK_WEAR_EQUIP_V5
+
+// Packet: 0x099a
+packetLen(0x099a, 9) // ZC_ACK_TAKEOFF_EQUIP_V5
+
+// Packet: 0x099b
+packetLen(0x099b, 8) // ZC_MAPPROPERTY_R2
+
+// Packet: 0x099c
+packetLen(0x099c, 6) // CH_REQ_CHARINFO_PER_PAGE
+
+// Packet: 0x099d
+packetLen(0x099d, -1) // HC_ACK_CHARINFO_PER_PAGE
+
+// Packet: 0x099e
+packetLen(0x099e, 12) // HC_QUEUE_ORDER
+
+// Packet: 0x099f
+packetLen(0x099f, -1) // ZC_SKILL_ENTRY4
+
+// Packet: 0x09a0
+packetLen(0x09a0, 6) // HC_CHARLIST_NOTIFY
+
+// Packet: 0x09a1
+packetLen(0x09a1, 2) // CH_CHARLIST_REQ
+
+// Packet: 0x09a2
+packetLen(0x09a2, 6) // AC_REQ_MOBILE_OTP
+
+// Packet: 0x09a3
+packetLen(0x09a3, -1) // CA_ACK_MOBILE_OTP
+
+// Packet: 0x09a4
+packetLen(0x09a4, 18) // ZC_DISPATCH_TIMING_INFO_CHN
+
+// Packet: 0x09a5
+packetLen(0x09a5, 7) // AC_REFUSE_LOGIN3
+
+// Packet: 0x09a6
+packetLen(0x09a6, 12) // ZC_BANKING_CHECK
+
+// Packet: 0x09a7
+packetLen(0x09a7, 10) // CZ_REQ_BANKING_DEPOSIT
+
+// Packet: 0x09a8
+packetLen(0x09a8, 16) // ZC_ACK_BANKING_DEPOSIT
+
+// Packet: 0x09a9
+packetLen(0x09a9, 10) // CZ_REQ_BANKING_WITHDRAW
+
+// Packet: 0x09aa
+packetLen(0x09aa, 16) // ZC_ACK_BANKING_WITHDRAW
+
+// Packet: 0x09ab
+packetLen(0x09ab, 6) // CZ_REQ_BANKING_CHECK
+
+// Packet: 0x09ac
+packetLen(0x09ac, -1) // CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO
+
+// Packet: 0x09ad
+packetLen(0x09ad, 12) // ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO
+
+// Packet: 0x09ae
+packetLen(0x09ae, 19) // CZ_REQ_APPLY_BARGAIN_SALE_ITEM
+
+// Packet: 0x09af
+packetLen(0x09af, 4) // ZC_ACK_APPLY_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b0
+packetLen(0x09b0, 10) // CZ_REQ_REMOVE_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b1
+packetLen(0x09b1, 4) // ZC_ACK_REMOVE_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b2
+packetLen(0x09b2, 10) // ZC_NOTIFY_BARGAIN_SALE_SELLING
+
+// Packet: 0x09b3
+packetLen(0x09b3, 6) // ZC_NOTIFY_BARGAIN_SALE_CLOSE
+
+// Packet: 0x09b4
+packetLen(0x09b4, 6) // CZ_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b5
+packetLen(0x09b5, 2) // ZC_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b6
+packetLen(0x09b6, 6) // CZ_REQ_OPEN_BANKING
+
+// Packet: 0x09b7
+packetLen(0x09b7, 4) // ZC_ACK_OPEN_BANKING
+
+// Packet: 0x09b8
+packetLen(0x09b8, 6) // CZ_REQ_CLOSE_BANKING
+
+// Packet: 0x09b9
+packetLen(0x09b9, 4) // ZC_ACK_CLOSE_BANKING
+
+// Packet: 0x09ba
+packetLen(0x09ba, 2) // CZ_REQ_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bb
+packetLen(0x09bb, 6) // ZC_ACK_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bc
+packetLen(0x09bc, 6) // CZ_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09bd
+packetLen(0x09bd, 2) // ZC_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09be
+packetLen(0x09be, 2) // CZ_REQ_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09bf
+packetLen(0x09bf, 4) // ZC_ACK_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09c1
+packetLen(0x09c1, 10) // ZC_C_MARKERINFO
+
+// Packet: 0x09c2
+packetLen(0x09c2, -1) // HC_SECRETSCAN_DATA
+
+// Packet: 0x09c3
+packetLen(0x09c3, 10) // CZ_REQ_COUNT_BARGAIN_SALE_ITEM
+
+// Packet: 0x09c4
+packetLen(0x09c4, 10) // ZC_ACK_COUNT_BARGAIN_SALE_ITEM
+
+// Packet: 0x09c5
+packetLen(0x09c5, 1042) // CS_LOGIN_QUERY
+
+// Packet: 0x09c6
+packetLen(0x09c6, -1) // SC_LOGIN_ANSWER
+
+// Packet: 0x09c7
+packetLen(0x09c7, 18) // SC_LOGIN_ERROR
+
+// Packet: 0x09c8
+packetLen(0x09c8, -1) // CA_LOGIN_OTP
+
+// Packet: 0x09c9
+packetLen(0x09c9, -1) // SC_SOCT
+
+// Packet: 0x09ca
+packetLen(0x09ca, -1) // ZC_SKILL_ENTRY5
+
+// Packet: 0x09cb
+packetLen(0x09cb, 17) // ZC_USE_SKILL2
+
+// Packet: 0x09cc
+packetLen(0x09cc, -1) // ZC_SECRETSCAN_DATA
+
+// Packet: 0x09cd
+packetLen(0x09cd, 8) // ZC_MSG_COLOR
+
+// Packet: 0x09ce
+packetLen(0x09ce, 102) // CZ_ITEM_CREATE_EX
+
+// Packet: 0x09cf
+packetLen(0x09cf, -1) // ZC_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d0
+packetLen(0x09d0, -1) // CZ_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d1
+packetLen(0x09d1, 14) // ZC_PROGRESS_ACTOR
+
+// Packet: 0x09d2
+packetLen(0x09d2, -1) // ZC_GUILDSTORAGE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x09d3
+packetLen(0x09d3, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x09d4
+packetLen(0x09d4, 2) // CZ_NPC_TRADE_QUIT
+
+// Packet: 0x09d5
+packetLen(0x09d5, -1) // ZC_NPC_MARKET_OPEN
+
+// Packet: 0x09d6
+packetLen(0x09d6, -1) // CZ_NPC_MARKET_PURCHASE
+
+// Packet: 0x09d7
+packetLen(0x09d7, -1) // ZC_NPC_MARKET_PURCHASE_RESULT
+
+// Packet: 0x09d8
+packetLen(0x09d8, 2) // CZ_NPC_MARKET_CLOSE
+
+// Packet: 0x09d9
+packetLen(0x09d9, 4) // CZ_REQ_GUILDSTORAGE_LOG
+
+// Packet: 0x09da
+packetLen(0x09da, -1) // ZC_ACK_GUILDSTORAGE_LOG
+
+// Packet: 0x09db
+packetLen(0x09db, -1) // ZC_NOTIFY_MOVEENTRY10
+
+// Packet: 0x09dc
+packetLen(0x09dc, -1) // ZC_NOTIFY_NEWENTRY10
+
+// Packet: 0x09dd
+packetLen(0x09dd, -1) // ZC_NOTIFY_STANDENTRY10
+
+// Packet: 0x09de
+packetLen(0x09de, -1) // ZC_WHISPER02
+
+// Packet: 0x09df
+packetLen(0x09df, 7) // ZC_ACK_WHISPER02
+
+// Packet: 0x09e0
+packetLen(0x09e0, -1) // SC_LOGIN_ANSWER_WITH_ID
+
+// Packet: 0x09e1
+packetLen(0x09e1, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_GUILDSTORAGE
+
+// Packet: 0x09e2
+packetLen(0x09e2, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_BODY
+
+// Packet: 0x09e3
+packetLen(0x09e3, 8) // CZ_MOVE_ITEM_FROM_CART_TO_GUILDSTORAGE
+
+// Packet: 0x09e4
+packetLen(0x09e4, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_CART
+
+// Packet: 0x09e5
+packetLen(0x09e5, 18) // ZC_DELETEITEM_FROM_MCSTORE2
+
+// Packet: 0x09e6
+packetLen(0x09e6, 24) // ZC_UPDATE_ITEM_FROM_BUYING_STORE2
+
+// Packet: 0x09e7
+packetLen(0x09e7, 3) // ZC_NOTIFY_UNREAD_RODEX
+
+// Packet: 0x09e8
+packetLen(0x09e8, 11) // CZ_OPEN_RODEXBOX
+
+// Packet: 0x09e9
+packetLen(0x09e9, 2) // CZ_CLOSE_RODEXBOX
+
+// Packet: 0x09ea
+packetLen(0x09ea, 11) // CZ_REQ_READ_RODEX
+
+// Packet: 0x09eb
+packetLen(0x09eb, -1) // ZC_ACK_READ_RODEX
+
+// Packet: 0x09ec
+packetLen(0x09ec, -1) // CZ_REQ_SEND_RODEX
+
+// Packet: 0x09ed
+packetLen(0x09ed, 3) // ZC_ACK_SEND_RODEX
+
+// Packet: 0x09ee
+packetLen(0x09ee, 11) // CZ_REQ_NEXT_RODEX
+
+// Packet: 0x09ef
+packetLen(0x09ef, 11) // CZ_REQ_REFRESH_RODEX
+
+// Packet: 0x09f0
+packetLen(0x09f0, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x09f1
+packetLen(0x09f1, 11) // CZ_REQ_ZENY_FROM_RODEX
+
+// Packet: 0x09f2
+packetLen(0x09f2, 12) // ZC_ACK_ZENY_FROM_RODEX
+
+// Packet: 0x09f3
+packetLen(0x09f3, 11) // CZ_REQ_ITEM_FROM_RODEX
+
+// Packet: 0x09f4
+packetLen(0x09f4, 12) // ZC_ACK_ITEM_FROM_RODEX
+
+// Packet: 0x09f5
+packetLen(0x09f5, 11) // CZ_REQ_DELETE_RODEX
+
+// Packet: 0x09f6
+packetLen(0x09f6, 11) // ZC_ACK_DELETE_RODEX
+
+// Packet: 0x09f7
+packetLen(0x09f7, 77) // ZC_PROPERTY_HOMUN_2
+
+// Packet: 0x09f8
+packetLen(0x09f8, -1) // ZC_ALL_QUEST_LIST3
+
+// Packet: 0x09f9
+packetLen(0x09f9, 143) // ZC_ADD_QUEST_EX
+
+// Packet: 0x09fa
+packetLen(0x09fa, -1) // ZC_UPDATE_MISSION_HUNT_EX
+
+// Packet: 0x09fb
+packetLen(0x09fb, -1) // CZ_PET_EVOLUTION
+
+// Packet: 0x09fc
+packetLen(0x09fc, 6) // ZC_PET_EVOLUTION_RESULT
+
+// Packet: 0x09fd
+packetLen(0x09fd, -1) // ZC_NOTIFY_MOVEENTRY11
+
+// Packet: 0x09fe
+packetLen(0x09fe, -1) // ZC_NOTIFY_NEWENTRY11
+
+// Packet: 0x09ff
+packetLen(0x09ff, -1) // ZC_NOTIFY_STANDENTRY11
+
+// Packet: 0x0a00
+packetLen(0x0a00, 269) // ZC_SHORTCUT_KEY_LIST_V3
+
+// Packet: 0x0a01
+packetLen(0x0a01, 3) // CZ_SHORTCUTKEYBAR_ROTATE
+
+// Packet: 0x0a02
+packetLen(0x0a02, 4) // ZC_DRESSROOM_OPEN
+
+// Packet: 0x0a03
+packetLen(0x0a03, 2) // CZ_REQ_CANCEL_WRITE_RODEX
+
+// Packet: 0x0a04
+packetLen(0x0a04, 6) // CZ_REQ_ADD_ITEM_RODEX
+
+// Packet: 0x0a05
+packetLen(0x0a05, 63) // ZC_ACK_ADD_ITEM_RODEX
+
+// Packet: 0x0a06
+packetLen(0x0a06, 6) // CZ_REQ_REMOVE_RODEX_ITEM
+
+// Packet: 0x0a07
+packetLen(0x0a07, 9) // ZC_ACK_REMOVE_RODEX_ITEM
+
+// Packet: 0x0a08
+packetLen(0x0a08, 26) // CZ_REQ_OPEN_WRITE_RODEX
+
+// Packet: 0x0a09
+packetLen(0x0a09, 55) // ZC_ADD_EXCHANGE_ITEM3
+
+// Packet: 0x0a0a
+packetLen(0x0a0a, 57) // ZC_ADD_ITEM_TO_STORE3
+
+// Packet: 0x0a0b
+packetLen(0x0a0b, 57) // ZC_ADD_ITEM_TO_CART3
+
+// Packet: 0x0a0c
+packetLen(0x0a0c, 66) // ZC_ITEM_PICKUP_ACK_V6
+
+// Packet: 0x0a0d
+packetLen(0x0a0d, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a0e
+packetLen(0x0a0e, 14) // ZC_BATTLEFIELD_NOTIFY_HP2
+
+// Packet: 0x0a0f
+packetLen(0x0a0f, -1) // ZC_CART_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a10
+packetLen(0x0a10, -1) // ZC_STORE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a11
+packetLen(0x0a11, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a12
+packetLen(0x0a12, 27) // ZC_ACK_OPEN_WRITE_RODEX
+
+// Packet: 0x0a13
+packetLen(0x0a13, 26) // CZ_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a14
+packetLen(0x0a14, 10) // ZC_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a15
+packetLen(0x0a15, 12) // ZC_GOLDPCCAFE_POINT
+
+// Packet: 0x0a16
+packetLen(0x0a16, 26) // CZ_DYNAMICNPC_CREATE_REQUEST
+
+// Packet: 0x0a17
+packetLen(0x0a17, 6) // ZC_DYNAMICNPC_CREATE_RESULT
+
+// Packet: 0x0a18
+packetLen(0x0a18, 14) // ZC_ACCEPT_ENTER3
+
+// Packet: 0x0a19
+packetLen(0x0a19, 2) // CZ_REQ_OPEN_ROULETTE
+
+// Packet: 0x0a1a
+packetLen(0x0a1a, 25) // ZC_ACK_OPEN_ROULETTE
+
+// Packet: 0x0a1b
+packetLen(0x0a1b, 2) // CZ_REQ_ROULETTE_INFO
+
+// Packet: 0x0a1c
+packetLen(0x0a1c, -1) // ZC_ACK_ROULEITTE_INFO
+
+// Packet: 0x0a1d
+packetLen(0x0a1d, 2) // CZ_REQ_CLOSE_ROULETTE
+
+// Packet: 0x0a1e
+packetLen(0x0a1e, 3) // ZC_ACK_CLOSE_ROULETTE
+
+// Packet: 0x0a1f
+packetLen(0x0a1f, 2) // CZ_REQ_GENERATE_ROULETTE
+
+// Packet: 0x0a20
+packetLen(0x0a20, 23) // ZC_ACK_GENERATE_ROULETTE
+
+// Packet: 0x0a21
+packetLen(0x0a21, 3) // CZ_RECV_ROULETTE_ITEM
+
+// Packet: 0x0a22
+packetLen(0x0a22, 7) // ZC_RECV_ROULETTE_ITEM
+
+// Packet: 0x0a23
+packetLen(0x0a23, -1) // ZC_ALL_ACH_LIST
+
+// Packet: 0x0a24
+packetLen(0x0a24, 66) // ZC_ACH_UPDATE
+
+// Packet: 0x0a25
+packetLen(0x0a25, 6) // CZ_REQ_ACH_REWARD
+
+// Packet: 0x0a26
+packetLen(0x0a26, 7) // ZC_REQ_ACH_REWARD_ACK
+
+// Packet: 0x0a27
+packetLen(0x0a27, 8) // ZC_RECOVERY2
+
+// Packet: 0x0a28
+packetLen(0x0a28, 3) // ZC_ACK_OPENSTORE2
+
+// Packet: 0x0a29
+packetLen(0x0a29, 6) // ZC_REQ_AU_BOT
+
+// Packet: 0x0a2a
+packetLen(0x0a2a, 6) // CZ_ACK_AU_BOT
+
+// Packet: 0x0a2b
+packetLen(0x0a2b, 14) // ZC_SE_CASHSHOP_OPEN2
+
+// Packet: 0x0a2c
+packetLen(0x0a2c, 12) // ZC_SE_PC_BUY_TAIWANCASHITEM_RESULT
+
+// Packet: 0x0a2d
+packetLen(0x0a2d, -1) // ZC_EQUIPWIN_MICROSCOPE_V6
+
+// Packet: 0x0a2e
+packetLen(0x0a2e, 6) // CZ_REQ_CHANGE_TITLE
+
+// Packet: 0x0a2f
+packetLen(0x0a2f, 7) // ZC_ACK_CHANGE_TITLE
+
+// Packet: 0x0a30
+packetLen(0x0a30, 106) // ZC_ACK_REQNAMEALL2
+
+// Packet: 0x0a31
+packetLen(0x0a31, -1) // ZC_RESULT_PACKAGE_ITEM_TEST
+
+// Packet: 0x0a32
+packetLen(0x0a32, 2) // ZC_OPEN_RODEX_THROUGH_NPC_ONLY
+
+// Packet: 0x0a33
+packetLen(0x0a33, 7) // ZC_UPDATE_ROULETTE_COIN
+
+// Packet: 0x0a34
+packetLen(0x0a34, 6) // ZC_UPDATE_TAIWANCASH
+
+// Packet: 0x0a35
+packetLen(0x0a35, 4) // CZ_REQ_ONECLICK_ITEMIDENTIFY
+
+// Packet: 0x0a36
+packetLen(0x0a36, 7) // ZC_HP_INFO_TINY
+
+// Packet: 0x0a37
+packetLen(0x0a37, 69) // ZC_ITEM_PICKUP_ACK_V7
+
+// Packet: 0x0a38
+packetLen(0x0a38, 3) // ZC_OPEN_UI
+
+// Packet: 0x0a39
+packetLen(0x0a39, 36) // CH_MAKE_CHAR
+
+// Packet: 0x0a3a
+packetLen(0x0a3a, 12)
+
+// Packet: 0x0a3b
+packetLen(0x0a3b, -1) // ZC_CUSTOM_HAT_EFFECT
+
+// Packet: 0x0a3c
+packetLen(0x0a3c, -1)
+
+// Packet: 0x0a3d
+packetLen(0x0a3d, 20)
+
+// Packet: 0x0a3e
+packetLen(0x0a3e, -1)
+
+// Packet: 0x0a3f
+packetLen(0x0a3f, 11)
+
+// Packet: 0x0a40
+packetLen(0x0a40, 11)
+
+// Packet: 0x0a41
+packetLen(0x0a41, 18) // ZC_AOE_EFFECT_SKILL
+
+// Packet: 0x0a42
+packetLen(0x0a42, 43)
+
+// Packet: 0x0a43
+packetLen(0x0a43, 85) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0a44
+packetLen(0x0a44, -1) // ZC_GROUP_LIST
+
+// Packet: 0x0a46
+packetLen(0x0a46, 14)
+
+// Packet: 0x0a47
+packetLen(0x0a47, 3) // ZC_STYLE_CHANGE_RES
+
+// Packet: 0x0a48
+packetLen(0x0a48, 2)
+
+// Packet: 0x0a49
+packetLen(0x0a49, 22) // CZ_PRIVATE_AIRSHIP_REQUEST
+
+// Packet: 0x0a4a
+packetLen(0x0a4a, 6) // ZC_PRIVATE_AIRSHIP_RESPONSE
+
+// Packet: 0x0a4b
+packetLen(0x0a4b, 22) // ZC_AIRSHIP_MAPMOVE
+
+// Packet: 0x0a4c
+packetLen(0x0a4c, 28) // ZC_AIRSHIP_SERVERMOVE
+
+// Packet: 0x0a4d
+packetLen(0x0a4d, -1)
+
+// Packet: 0x0a4e
+packetLen(0x0a4e, 6)
+
+// Packet: 0x0a4f
+packetLen(0x0a4f, -1)
+
+// Packet: 0x0a50
+packetLen(0x0a50, 4)
+
+// Packet: 0x0a51
+packetLen(0x0a51, 34) // ZC_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a52
+packetLen(0x0a52, 20)
+
+// Packet: 0x0a53
+packetLen(0x0a53, 10)
+
+// Packet: 0x0a54
+packetLen(0x0a54, -1)
+
+// Packet: 0x0a55
+packetLen(0x0a55, 2)
+
+// Packet: 0x0a56
+packetLen(0x0a56, 6)
+
+// Packet: 0x0a57
+packetLen(0x0a57, 6)
+
+// Packet: 0x0a58
+packetLen(0x0a58, 8)
+
+// Packet: 0x0a59
+packetLen(0x0a59, -1)
+
+// Packet: 0x0a5a
+packetLen(0x0a5a, 2)
+
+// Packet: 0x0a5b
+packetLen(0x0a5b, 7)
+
+// Packet: 0x0a5c
+packetLen(0x0a5c, 18)
+
+// Packet: 0x0a5d
+packetLen(0x0a5d, 6)
+
+// Packet: 0x0a68
+packetLen(0x0a68, 3) // CZ_REQ_OPEN_UI
+
+// Packet: 0x0a69
+packetLen(0x0a69, 6)
+
+// Packet: 0x0a6a
+packetLen(0x0a6a, 12)
+
+// Packet: 0x0a6b
+packetLen(0x0a6b, -1)
+
+// Packet: 0x0a6c
+packetLen(0x0a6c, 7)
+
+// Packet: 0x0a6d
+packetLen(0x0a6d, -1)
+
+// Packet: 0x0a6e
+packetLen(0x0a6e, -1) // CZ_REQ_SEND_RODEX
+
+// Packet: 0x0a6f
+packetLen(0x0a6f, -1) // ZC_FORMATSTRING_MSG_COLOR
+
+// Packet: 0x0a70
+packetLen(0x0a70, 2)
+
+// Packet: 0x0a71
+packetLen(0x0a71, -1)
+
+// Packet: 0x0a72
+packetLen(0x0a72, 61)
+
+// Packet: 0x0a73
+packetLen(0x0a73, 2)
+
+// Packet: 0x0a74
+packetLen(0x0a74, 8)
+
+// Packet: 0x0a76
+packetLen(0x0a76, 80)
+
+// Packet: 0x0a77
+packetLen(0x0a77, 15)
+
+// Packet: 0x0a78
+packetLen(0x0a78, 15)
+
+// Packet: 0x0a79
+packetLen(0x0a79, -1)
+
+// Packet: 0x0a7b
+packetLen(0x0a7b, -1)
+
+// Packet: 0x0a7c
+packetLen(0x0a7c, -1)
+
+// Packet: 0x0a7d
+packetLen(0x0a7d, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x0a7e
+packetLen(0x0a7e, -1) // ZC_OFFLINE_STORE_OWNER_ITEMS_READY
+
+// Packet: 0x0a7f
+packetLen(0x0a7f, -1) // CZ_OFFLINE_STORE_CREATE
+
+// Packet: 0x0a80
+packetLen(0x0a80, 6)
+
+// Packet: 0x0a81
+packetLen(0x0a81, 4)
+
+// Packet: 0x0a82
+packetLen(0x0a82, 46)
+
+// Packet: 0x0a83
+packetLen(0x0a83, 46)
+
+// Packet: 0x0a84
+packetLen(0x0a84, 94) // ZC_GUILD_INFO
+
+// Packet: 0x0a85
+packetLen(0x0a85, 82)
+
+// Packet: 0x0a86
+packetLen(0x0a86, -1)
+
+// Packet: 0x0a87
+packetLen(0x0a87, -1)
+
+// Packet: 0x0a88
+packetLen(0x0a88, 2)
+
+// Packet: 0x0a89
+packetLen(0x0a89, 61) // ZC_NOTIFY_OFFLINE_STORE
+
+// Packet: 0x0a8a
+packetLen(0x0a8a, 6) // ZC_OFFLINE_STORE_VANISH
+
+// Packet: 0x0a8b
+packetLen(0x0a8b, 2)
+
+// Packet: 0x0a8c
+packetLen(0x0a8c, 2)
+
+// Packet: 0x0a8d
+packetLen(0x0a8d, -1) // ZC_OFFLINE_STORE_OWNER_ITEMS
+
+// Packet: 0x0a8e
+packetLen(0x0a8e, 2)
+
+// Packet: 0x0a8f
+packetLen(0x0a8f, 2)
+
+// Packet: 0x0a90
+packetLen(0x0a90, 3)
+
+// Packet: 0x0a91
+packetLen(0x0a91, -1) // ZC_OFFLINE_STORE_ITEMS
+
+// Packet: 0x0a92
+packetLen(0x0a92, -1)
+
+// Packet: 0x0a93
+packetLen(0x0a93, 3)
+
+// Packet: 0x0a94
+packetLen(0x0a94, 2)
+
+// Packet: 0x0a95
+packetLen(0x0a95, 4)
+
+// Packet: 0x0a96
+packetLen(0x0a96, 61) // ZC_ADD_EXCHANGE_ITEM4
+
+// Packet: 0x0a97
+packetLen(0x0a97, 8) // CZ_ALT_EQUIPMENT_EQUIP
+
+// Packet: 0x0a98
+packetLen(0x0a98, 10) // ZC_ALT_EQUIPMENT_EQUIP
+
+// Packet: 0x0a99
+packetLen(0x0a99, 4)
+
+// Packet: 0x0a9a
+packetLen(0x0a9a, 10) // ZC_ALT_EQUIPMENT_REMOVE
+
+// Packet: 0x0a9b
+packetLen(0x0a9b, -1) // ZC_ALT_EQUIPMENT_ITEMS
+
+// Packet: 0x0a9c
+packetLen(0x0a9c, 2)
+
+// Packet: 0x0a9d
+packetLen(0x0a9d, 4)
+
+// Packet: 0x0a9e
+packetLen(0x0a9e, 2)
+
+// Packet: 0x0a9f
+packetLen(0x0a9f, 2)
+
+// Packet: 0x0aa0
+packetLen(0x0aa0, 2) // ZC_REFINE_OPEN_WINDOW
+
+// Packet: 0x0aa1
+packetLen(0x0aa1, 4) // CZ_REFINE_ADD_ITEM
+
+// Packet: 0x0aa2
+packetLen(0x0aa2, -1) // ZC_REFINE_ADD_ITEM
+
+// Packet: 0x0aa3
+packetLen(0x0aa3, 9) // CZ_REFINE_ITEM_REQUEST
+
+// Packet: 0x0aa4
+packetLen(0x0aa4, 2) // CZ_REFINE_WINDOW_CLOSE
+
+// Packet: 0x0aa5
+packetLen(0x0aa5, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0aa6
+packetLen(0x0aa6, 36) // ZC_MEMBER_ADD
+
+// Packet: 0x0aa7
+packetLen(0x0aa7, 6) // ZC_INVENTORY_MOVE_FAILED
+
+// Packet: 0x0aa8
+packetLen(0x0aa8, 5)
+
+// Packet: 0x0aa9
+packetLen(0x0aa9, -1)
+
+// Packet: 0x0aaa
+packetLen(0x0aaa, -1)
+
+// Packet: 0x0aab
+packetLen(0x0aab, -1)
+
+// Packet: 0x0aac
+packetLen(0x0aac, 69)
+
+// Packet: 0x0aad
+packetLen(0x0aad, 51)
+
+// Packet: 0x0aae
+packetLen(0x0aae, 2)
+
+// Packet: 0x0aaf
+packetLen(0x0aaf, 6)
+
+// Packet: 0x0ab0
+packetLen(0x0ab0, 6)
+
+// Packet: 0x0ab1
+packetLen(0x0ab1, 14)
+
+// Packet: 0x0ab2
+packetLen(0x0ab2, 7) // ZC_GROUP_ISALIVE
+
+// Packet: 0x0ab3
+packetLen(0x0ab3, 19)
+
+// Packet: 0x0ab4
+packetLen(0x0ab4, 6)
+
+// Packet: 0x0ab5
+packetLen(0x0ab5, 2)
+
+// Packet: 0x0ab6
+packetLen(0x0ab6, 8)
+
+// Packet: 0x0ab7
+packetLen(0x0ab7, 4)
+
+// Packet: 0x0ab8
+packetLen(0x0ab8, 2)
+
+// Packet: 0x0ab9
+packetLen(0x0ab9, 47) // ZC_ITEM_PREVIEW
+
+// Packet: 0x0aba
+packetLen(0x0aba, 2)
+
+// Packet: 0x0abb
+packetLen(0x0abb, 2)
+
+// Packet: 0x0abc
+packetLen(0x0abc, -1)
+
+// Packet: 0x0abd
+packetLen(0x0abd, 10) // ZC_PARTY_MEMBER_JOB_LEVEL
+
+// Packet: 0x0abe
+packetLen(0x0abe, -1) // ZC_WARPLIST
+
+// Packet: 0x0abf
+packetLen(0x0abf, -1)
+
+// Packet: 0x0ac0
+packetLen(0x0ac0, 26) // CZ_OPEN_RODEXBOX
+
+// Packet: 0x0ac1
+packetLen(0x0ac1, 26) // CZ_REQ_REFRESH_RODEX
+
+// Packet: 0x0ac2
+packetLen(0x0ac2, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x0ac3
+packetLen(0x0ac3, 2)
+
+// Packet: 0x0ac4
+packetLen(0x0ac4, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x0ac5
+packetLen(0x0ac5, 156) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0ac6
+packetLen(0x0ac6, 156)
+
+// Packet: 0x0ac7
+packetLen(0x0ac7, 156) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0ac8
+packetLen(0x0ac8, 2) // ZC_UNKNOWN_CLEAN_ITEMS_LISTS
+
+// Packet: 0x0ac9
+packetLen(0x0ac9, -1)
+
+// Packet: 0x0aca
+packetLen(0x0aca, 3)
+
+// Packet: 0x0acb
+packetLen(0x0acb, 12) // ZC_PAR_CHANGE
+
+// Packet: 0x0acc
+packetLen(0x0acc, 18) // ZC_NOTIFY_EXP
+
+// Packet: 0x0acd
+packetLen(0x0acd, 23)
+
+// Packet: 0x0ace
+packetLen(0x0ace, 4)
+
+// Packet: 0x0acf
+packetLen(0x0acf, 68) // CA_LOGIN_OTP
+
+// Packet: 0x0ad0
+packetLen(0x0ad0, 11) // CA_OTP_CODE
+
+// Packet: 0x0ad1
+packetLen(0x0ad1, -1)
+
+// Packet: 0x0ad2
+packetLen(0x0ad2, 30)
+
+// Packet: 0x0ad3
+packetLen(0x0ad3, -1)
+
+// Packet: 0x0ad4
+packetLen(0x0ad4, -1)
+
+// Packet: 0x0ad5
+packetLen(0x0ad5, 2)
+
+// Packet: 0x0ad6
+packetLen(0x0ad6, 2)
+
+// Packet: 0x0ad7
+packetLen(0x0ad7, 8)
+
+// Packet: 0x0ad8
+packetLen(0x0ad8, 8)
+
+// Packet: 0x0ad9
+packetLen(0x0ad9, -1)
+
+// Packet: 0x0ada
+packetLen(0x0ada, 32) // ZC_REFINE_STATUS
+
+// Packet: 0x0adb
+packetLen(0x0adb, -1)
+
+// Packet: 0x0adc
+packetLen(0x0adc, 6) // ZC_EQUIPWIN_OTHER
+
+// Packet: 0x0add
+packetLen(0x0add, 24) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x0ade
+packetLen(0x0ade, 6) // ZC_OVERWEIGHT_PERCENT
+
+// Packet: 0x0adf
+packetLen(0x0adf, 58) // ZC_ACK_REQNAME
+
+// Packet: 0x0ae0
+packetLen(0x0ae0, 30)
+
+// Packet: 0x0ae1
+packetLen(0x0ae1, 28)
+
+// Packet: 0x0ae2
+packetLen(0x0ae2, 7) // ZC_OPEN_UI
+
+// Packet: 0x0ae3
+packetLen(0x0ae3, -1) // AC_LOGIN_OTP
+
+// Packet: 0x0ae4
+packetLen(0x0ae4, 89) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0ae5
+packetLen(0x0ae5, -1) // ZC_GROUP_LIST
+
+// Packet: 0x0ae6
+packetLen(0x0ae6, 10)
+
+// Packet: 0x0ae7
+packetLen(0x0ae7, 38)
+
+// Packet: 0x0ae8
+packetLen(0x0ae8, 2)
+
+// Packet: 0x0ae9
+packetLen(0x0ae9, 13) // HC_SECOND_PASSWD_LOGIN
+
+// Packet: 0x0aec
+packetLen(0x0aec, 2)
+
+// Packet: 0x0aed
+packetLen(0x0aed, 2)
+
+// Packet: 0x0aee
+packetLen(0x0aee, 2)
+
+// Packet: 0x0aef
+packetLen(0x0aef, 2) // CZ_ATTENDANCE_REWARD_REQUEST
+
+// Packet: 0x0af0
+packetLen(0x0af0, 10) // ZC_UI_ACTION
+
+// Packet: 0x0af2
+packetLen(0x0af2, 40)
+
+// Packet: 0x0af3
+packetLen(0x0af3, -1)
+
+// Packet: 0x0af4
+packetLen(0x0af4, 11) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0af5
+packetLen(0x0af5, 3)
+
+// Packet: 0x0af6
+packetLen(0x0af6, 88)
+
+// Packet: 0x0af7
+packetLen(0x0af7, 32) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0af8
+packetLen(0x0af8, 11)
+
+// Packet: 0x0af9
+packetLen(0x0af9, 6)
+
+// Packet: 0x0afa
+packetLen(0x0afa, 54)
+
+// Packet: 0x0afb
+packetLen(0x0afb, -1) // ZC_AUTOSPELLLIST
+
+// Packet: 0x0afc
+packetLen(0x0afc, 16)
+
+// Packet: 0x0afd
+packetLen(0x0afd, -1) // ZC_GUILD_POSITION
+
+// Packet: 0x0afe
+packetLen(0x0afe, -1) // ZC_UPDATE_MISSION_HUNT_EX
+
+// Packet: 0x0aff
+packetLen(0x0aff, -1) // ZC_ALL_QUEST_LIST4
+
+// Packet: 0x0b00
+packetLen(0x0b00, 8)
+
+// Packet: 0x0b01
+packetLen(0x0b01, 56)
+
+// Packet: 0x0b02
+packetLen(0x0b02, 26) // AC_REFUSE_LOGIN4
+
+// Packet: 0x0b03
+packetLen(0x0b03, -1) // ZC_EQUIPWIN_MICROSCOPE_V7
+
+// Packet: 0x0b04
+packetLen(0x0b04, 80)
+
+// Packet: 0x0b05
+packetLen(0x0b05, 63) // ZC_OFFLINE_STORE_VISIBLE
+
+// Packet: 0x0b07
+packetLen(0x0b07, -1)
+
+// Packet: 0x0b08
+packetLen(0x0b08, -1) // ZC_INVENTORY_START
+
+// Packet: 0x0b09
+packetLen(0x0b09, -1) // ZC_STORE_ITEMLIST_NORMAL_V6
+
+// Packet: 0x0b0a
+packetLen(0x0b0a, -1) // ZC_STORE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0b0b
+packetLen(0x0b0b, 4) // ZC_INVENTORY_END
+
+// Packet: 0x0b0c
+packetLen(0x0b0c, 155) // ZC_ADD_QUEST_EX
+
+// Packet: 0x0b0d
+packetLen(0x0b0d, 10) // ZC_REMOVE_EFFECT
+
+// Packet: 0x0b0e
+packetLen(0x0b0e, -1) // ZC_NPC_BARTER_OPEN
+
+// Packet: 0x0b0f
+packetLen(0x0b0f, -1) // CZ_NPC_BARTER_PURCHASE
+
+// Packet: 0x0b10
+packetLen(0x0b10, 10) // CZ_START_USE_SKILL
+
+// Packet: 0x0b11
+packetLen(0x0b11, 4) // CZ_STOP_USE_SKILL
+
+// Packet: 0x0b12
+packetLen(0x0b12, 2) // CZ_NPC_BARTER_CLOSE
+
+// Packet: 0x0b13
+packetLen(0x0b13, 48) // ZC_ITEM_PREVIEW
+
+// Packet: 0x0b14
+packetLen(0x0b14, 2) // CZ_INVENTORY_EXPAND
+
+// Packet: 0x0b15
+packetLen(0x0b15, 7) // ZC_ACK_INVENTORY_EXPAND
+
+// Packet: 0x0b16
+packetLen(0x0b16, 2) // CZ_INVENTORY_EXPAND_CONFIRMED
+
+// Packet: 0x0b17
+packetLen(0x0b17, 3) // ZC_ACK_INVENTORY_EXPAND_RESULT
+
+// Packet: 0x0b18
+packetLen(0x0b18, 4) // ZC_INVENTORY_EXPANSION_INFO
+
+// Packet: 0x0b19
+packetLen(0x0b19, 2) // CZ_INVENTORY_EXPAND_REJECTED
+
+// Packet: 0x0b1a
+packetLen(0x0b1a, 29)
+
+
+#endif /* COMMON_PACKETS2019_LEN_RE_H */
diff --git a/src/common/packets/packets_len_ad.h b/src/common/packets/packets_len_ad.h
new file mode 100644
index 000000000..adfe65a76
--- /dev/null
+++ b/src/common/packets/packets_len_ad.h
@@ -0,0 +1,39 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS_LEN_AD_H
+#define COMMON_PACKETS_LEN_AD_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+#if PACKETVER >= 20080000
+#include "common/packets/packets2008_len_ad.h"
+#elif PACKETVER >= 20070000
+#include "common/packets/packets2007_len_ad.h"
+#elif PACKETVER >= 20060000
+#include "common/packets/packets2006_len_ad.h"
+#elif PACKETVER >= 20050000
+#include "common/packets/packets2005_len_ad.h"
+#elif PACKETVER >= 20040000
+#include "common/packets/packets2004_len_ad.h"
+#endif
+
+#endif /* COMMON_PACKETS_LEN_AD_H */
diff --git a/src/common/packets/packets_len_main.h b/src/common/packets/packets_len_main.h
new file mode 100644
index 000000000..49711994d
--- /dev/null
+++ b/src/common/packets/packets_len_main.h
@@ -0,0 +1,63 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS_LEN_MAIN_H
+#define COMMON_PACKETS_LEN_MAIN_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+#if PACKETVER >= 20190000
+#include "common/packets/packets2019_len_main.h"
+#elif PACKETVER >= 20180000
+#include "common/packets/packets2018_len_main.h"
+#elif PACKETVER >= 20170000
+#include "common/packets/packets2017_len_main.h"
+#elif PACKETVER >= 20160000
+#include "common/packets/packets2016_len_main.h"
+#elif PACKETVER >= 20150000
+#include "common/packets/packets2015_len_main.h"
+#elif PACKETVER >= 20140000
+#include "common/packets/packets2014_len_main.h"
+#elif PACKETVER >= 20130000
+#include "common/packets/packets2013_len_main.h"
+#elif PACKETVER >= 20120000
+#include "common/packets/packets2012_len_main.h"
+#elif PACKETVER >= 20110000
+#include "common/packets/packets2011_len_main.h"
+#elif PACKETVER >= 20100000
+#include "common/packets/packets2010_len_main.h"
+#elif PACKETVER >= 20090000
+#include "common/packets/packets2009_len_main.h"
+#elif PACKETVER >= 20080000
+#include "common/packets/packets2008_len_main.h"
+#elif PACKETVER >= 20070000
+#include "common/packets/packets2007_len_main.h"
+#elif PACKETVER >= 20060000
+#include "common/packets/packets2006_len_main.h"
+#elif PACKETVER >= 20050000
+#include "common/packets/packets2005_len_main.h"
+#elif PACKETVER >= 20040000
+#include "common/packets/packets2004_len_main.h"
+#elif PACKETVER >= 20030000
+#include "common/packets/packets2003_len_main.h"
+#endif
+
+#endif /* COMMON_PACKETS_LEN_MAIN_H */
diff --git a/src/common/packets/packets_len_re.h b/src/common/packets/packets_len_re.h
new file mode 100644
index 000000000..506a1ef80
--- /dev/null
+++ b/src/common/packets/packets_len_re.h
@@ -0,0 +1,53 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS_LEN_RE_H
+#define COMMON_PACKETS_LEN_RE_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+#if PACKETVER >= 20190000
+#include "common/packets/packets2019_len_re.h"
+#elif PACKETVER >= 20180000
+#include "common/packets/packets2018_len_re.h"
+#elif PACKETVER >= 20170000
+#include "common/packets/packets2017_len_re.h"
+#elif PACKETVER >= 20160000
+#include "common/packets/packets2016_len_re.h"
+#elif PACKETVER >= 20150000
+#include "common/packets/packets2015_len_re.h"
+#elif PACKETVER >= 20140000
+#include "common/packets/packets2014_len_re.h"
+#elif PACKETVER >= 20130000
+#include "common/packets/packets2013_len_re.h"
+#elif PACKETVER >= 20120000
+#include "common/packets/packets2012_len_re.h"
+#elif PACKETVER >= 20110000
+#include "common/packets/packets2011_len_re.h"
+#elif PACKETVER >= 20100000
+#include "common/packets/packets2010_len_re.h"
+#elif PACKETVER >= 20090000
+#include "common/packets/packets2009_len_re.h"
+#elif PACKETVER >= 20080000
+#include "common/packets/packets2008_len_re.h"
+#endif
+
+#endif /* COMMON_PACKETS_LEN_RE_H */
diff --git a/src/common/packets/packets_len_sak.h b/src/common/packets/packets_len_sak.h
new file mode 100644
index 000000000..e359ae1d2
--- /dev/null
+++ b/src/common/packets/packets_len_sak.h
@@ -0,0 +1,43 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS_LEN_SAK_H
+#define COMMON_PACKETS_LEN_SAK_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+#if PACKETVER >= 20090000
+#include "common/packets/packets2009_len_sak.h"
+#elif PACKETVER >= 20080000
+#include "common/packets/packets2008_len_sak.h"
+#elif PACKETVER >= 20070000
+#include "common/packets/packets2007_len_sak.h"
+#elif PACKETVER >= 20060000
+#include "common/packets/packets2006_len_sak.h"
+#elif PACKETVER >= 20050000
+#include "common/packets/packets2005_len_sak.h"
+#elif PACKETVER >= 20040000
+#include "common/packets/packets2004_len_sak.h"
+#elif PACKETVER >= 20030000
+#include "common/packets/packets2003_len_sak.h"
+#endif
+
+#endif /* COMMON_PACKETS_LEN_SAK_H */
diff --git a/src/common/packets/packets_len_zero.h b/src/common/packets/packets_len_zero.h
new file mode 100644
index 000000000..9b7278520
--- /dev/null
+++ b/src/common/packets/packets_len_zero.h
@@ -0,0 +1,33 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMMON_PACKETS_LEN_ZERO_H
+#define COMMON_PACKETS_LEN_ZERO_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+#if PACKETVER >= 20180000
+#include "common/packets/packets2018_len_zero.h"
+#elif PACKETVER >= 20170000
+#include "common/packets/packets2017_len_zero.h"
+#endif
+
+#endif /* COMMON_PACKETS_LEN_ZERO_H */
diff --git a/src/common/packets_len.h b/src/common/packets_len.h
new file mode 100644
index 000000000..02f63ae0d
--- /dev/null
+++ b/src/common/packets_len.h
@@ -0,0 +1,35 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2012-2018 Hercules Dev Team
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef COMMON_PACKETS_LEN_H
+#define COMMON_PACKETS_LEN_H
+
+#if defined(PACKETVER_ZERO)
+#include "common/packets/packets_len_zero.h"
+#elif defined(PACKETVER_RE)
+#include "common/packets/packets_len_re.h"
+#elif defined(PACKETVER_SAK)
+#include "common/packets/packets_len_sak.h"
+#elif defined(PACKETVER_AD)
+#include "common/packets/packets_len_ad.h"
+#else
+#include "common/packets/packets_len_main.h"
+#endif
+
+#endif /* COMMON_PACKETS_LEN_H */
diff --git a/src/common/packetsstatic_len.h b/src/common/packetsstatic_len.h
new file mode 100644
index 000000000..730516c27
--- /dev/null
+++ b/src/common/packetsstatic_len.h
@@ -0,0 +1,41 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2013-2018 Hercules Dev Team
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef COMMON_PACKETSSTATIC_LEN_H
+#define COMMON_PACKETSSTATIC_LEN_H
+
+#ifdef packetLen
+#error packetLen already defined
+#endif
+
+#define DEFINE_PACKET_HEADER(name, id) \
+ STATIC_ASSERT((int32)(PACKET_LEN_##id) == -1 || sizeof(struct PACKET_##name) == \
+ (size_t)PACKET_LEN_##id, "Wrong size PACKET_"#name); \
+ enum { HEADER_##name = id };
+
+#define DEFINE_PACKET_ID(name, id) \
+ enum { HEADER_##name = id };
+
+#define packetLen(id, len) PACKET_LEN_##id = (len),
+enum packet_lengths {
+#include "common/packets_len.h"
+};
+#undef packetLen
+
+#endif /* COMMON_PACKETSSTATIC_LEN_H */
diff --git a/src/common/random.c b/src/common/random.c
index b3a13e054..9bbe4f86c 100644
--- a/src/common/random.c
+++ b/src/common/random.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -40,11 +40,11 @@
* Implementation of the random number generator interface.
*/
-struct rnd_interface rnd_s;
+static struct rnd_interface rnd_s;
struct rnd_interface *rnd;
/// @copydoc rnd_interface::init()
-void rnd_init(void)
+static void rnd_init(void)
{
unsigned long seed = (unsigned long)timer->gettick();
seed += (unsigned long)time(NULL);
@@ -66,30 +66,30 @@ void rnd_init(void)
}
/// @copydoc rnd_interface::final()
-void rnd_final(void)
+static void rnd_final(void)
{
}
/// @copydoc rnd_interface::seed()
-void rnd_seed(uint32 seed)
+static void rnd_seed(uint32 seed)
{
init_genrand(seed);
}
/// @copydoc rnd_interface::random()
-int32 rnd_random(void)
+static int32 rnd_random(void)
{
return (int32)genrand_int31();
}
/// @copydoc rnd_interface::roll()
-uint32 rnd_roll(uint32 dice_faces)
+static uint32 rnd_roll(uint32 dice_faces)
{
return (uint32)(rnd->uniform()*dice_faces);
}
/// @copydoc rnd_interface::value()
-int32 rnd_value(int32 min, int32 max)
+static int32 rnd_value(int32 min, int32 max)
{
if (min >= max)
return min;
@@ -97,13 +97,13 @@ int32 rnd_value(int32 min, int32 max)
}
/// @copydoc rnd_interface::uniform()
-double rnd_uniform(void)
+static double rnd_uniform(void)
{
return ((uint32)genrand_int32())*(1.0/4294967296.0);// divided by 2^32
}
/// @copydoc rnd_interface::uniform53()
-double rnd_uniform53(void)
+static double rnd_uniform53(void)
{
return genrand_res53();
}
diff --git a/src/common/random.h b/src/common/random.h
index 1b249ef19..70f019678 100644
--- a/src/common/random.h
+++ b/src/common/random.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/common/showmsg.c b/src/common/showmsg.c
index 23679e762..32d1e7610 100644
--- a/src/common/showmsg.c
+++ b/src/common/showmsg.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -45,7 +45,7 @@
#define DEBUGLOGPATH "log"PATHSEP_STR"login-server.log"
#endif
-struct showmsg_interface showmsg_s;
+static struct showmsg_interface showmsg_s;
struct showmsg_interface *showmsg;
///////////////////////////////////////////////////////////////////////////////
@@ -186,7 +186,7 @@ Escape sequences for Select Character Set
#define is_console(handle) (FILE_TYPE_CHAR==GetFileType(handle))
///////////////////////////////////////////////////////////////////////////////
-int VFPRINTF(HANDLE handle, const char *fmt, va_list argptr)
+static int VFPRINTF(HANDLE handle, const char *fmt, va_list argptr)
{
/////////////////////////////////////////////////////////////////
/* XXX Two streams are being used. Disabled to avoid inconsistency [flaviojs]
@@ -467,8 +467,9 @@ int VFPRINTF(HANDLE handle, const char *fmt, va_list argptr)
return 0;
}
-int FPRINTF(HANDLE handle, const char *fmt, ...) __attribute__((format(printf, 2, 3)));
-int FPRINTF(HANDLE handle, const char *fmt, ...) {
+static int FPRINTF(HANDLE handle, const char *fmt, ...) __attribute__((format(printf, 2, 3)));
+static int FPRINTF(HANDLE handle, const char *fmt, ...)
+{
int ret;
va_list argptr;
va_start(argptr, fmt);
@@ -488,7 +489,7 @@ int FPRINTF(HANDLE handle, const char *fmt, ...) {
#define is_console(file) (0!=isatty(fileno(file)))
//vprintf_without_ansiformats
-int VFPRINTF(FILE *file, const char *fmt, va_list argptr)
+static int VFPRINTF(FILE *file, const char *fmt, va_list argptr)
{
char *p, *q;
NEWBUF(tempbuf); // temporary buffer
@@ -584,8 +585,9 @@ int VFPRINTF(FILE *file, const char *fmt, va_list argptr)
FREEBUF(tempbuf);
return 0;
}
-int FPRINTF(FILE *file, const char *fmt, ...) __attribute__((format(printf, 2, 3)));
-int FPRINTF(FILE *file, const char *fmt, ...) {
+static int FPRINTF(FILE *file, const char *fmt, ...) __attribute__((format(printf, 2, 3)));
+static int FPRINTF(FILE *file, const char *fmt, ...)
+{
int ret;
va_list argptr;
va_start(argptr, fmt);
@@ -601,7 +603,7 @@ int FPRINTF(FILE *file, const char *fmt, ...) {
#endif// not _WIN32
-int vShowMessage_(enum msg_type flag, const char *string, va_list ap)
+static int vShowMessage_(enum msg_type flag, const char *string, va_list ap)
{
va_list apcopy;
char prefix[100];
@@ -720,7 +722,7 @@ int vShowMessage_(enum msg_type flag, const char *string, va_list ap)
return 0;
}
-int showmsg_vShowMessage(const char *string, va_list ap)
+static int showmsg_vShowMessage(const char *string, va_list ap)
{
int ret;
va_list apcopy;
@@ -730,14 +732,17 @@ int showmsg_vShowMessage(const char *string, va_list ap)
return ret;
}
-void showmsg_clearScreen(void)
+static void showmsg_clearScreen(void)
{
#ifndef _WIN32
ShowMessage(CL_CLS); // to prevent empty string passed messages
#endif
}
-int ShowMessage_(enum msg_type flag, const char *string, ...) __attribute__((format(printf, 2, 3)));
-int ShowMessage_(enum msg_type flag, const char *string, ...) {
+
+#if 0 // Unused
+static int ShowMessage_(enum msg_type flag, const char *string, ...) __attribute__((format(printf, 2, 3)));
+static int ShowMessage_(enum msg_type flag, const char *string, ...)
+{
int ret;
va_list ap;
va_start(ap, string);
@@ -745,58 +750,59 @@ int ShowMessage_(enum msg_type flag, const char *string, ...) {
va_end(ap);
return ret;
}
+#endif // Unused
// direct printf replacement
-void showmsg_showMessage(const char *string, ...) __attribute__((format(printf, 1, 2)));
-void showmsg_showMessage(const char *string, ...)
+static void showmsg_showMessage(const char *string, ...) __attribute__((format(printf, 1, 2)));
+static void showmsg_showMessage(const char *string, ...)
{
va_list ap;
va_start(ap, string);
vShowMessage_(MSG_NONE, string, ap);
va_end(ap);
}
-void showmsg_showStatus(const char *string, ...) __attribute__((format(printf, 1, 2)));
-void showmsg_showStatus(const char *string, ...)
+static void showmsg_showStatus(const char *string, ...) __attribute__((format(printf, 1, 2)));
+static void showmsg_showStatus(const char *string, ...)
{
va_list ap;
va_start(ap, string);
vShowMessage_(MSG_STATUS, string, ap);
va_end(ap);
}
-void showmsg_showSQL(const char *string, ...) __attribute__((format(printf, 1, 2)));
-void showmsg_showSQL(const char *string, ...)
+static void showmsg_showSQL(const char *string, ...) __attribute__((format(printf, 1, 2)));
+static void showmsg_showSQL(const char *string, ...)
{
va_list ap;
va_start(ap, string);
vShowMessage_(MSG_SQL, string, ap);
va_end(ap);
}
-void showmsg_showInfo(const char *string, ...) __attribute__((format(printf, 1, 2)));
-void showmsg_showInfo(const char *string, ...)
+static void showmsg_showInfo(const char *string, ...) __attribute__((format(printf, 1, 2)));
+static void showmsg_showInfo(const char *string, ...)
{
va_list ap;
va_start(ap, string);
vShowMessage_(MSG_INFORMATION, string, ap);
va_end(ap);
}
-void showmsg_showNotice(const char *string, ...) __attribute__((format(printf, 1, 2)));
-void showmsg_showNotice(const char *string, ...)
+static void showmsg_showNotice(const char *string, ...) __attribute__((format(printf, 1, 2)));
+static void showmsg_showNotice(const char *string, ...)
{
va_list ap;
va_start(ap, string);
vShowMessage_(MSG_NOTICE, string, ap);
va_end(ap);
}
-void showmsg_showWarning(const char *string, ...) __attribute__((format(printf, 1, 2)));
-void showmsg_showWarning(const char *string, ...)
+static void showmsg_showWarning(const char *string, ...) __attribute__((format(printf, 1, 2)));
+static void showmsg_showWarning(const char *string, ...)
{
va_list ap;
va_start(ap, string);
vShowMessage_(MSG_WARNING, string, ap);
va_end(ap);
}
-void showmsg_showConfigWarning(struct config_setting_t *config, const char *string, ...) __attribute__((format(printf, 2, 3)));
-void showmsg_showConfigWarning(struct config_setting_t *config, const char *string, ...)
+static void showmsg_showConfigWarning(struct config_setting_t *config, const char *string, ...) __attribute__((format(printf, 2, 3)));
+static void showmsg_showConfigWarning(struct config_setting_t *config, const char *string, ...)
{
StringBuf buf;
va_list ap;
@@ -812,24 +818,24 @@ void showmsg_showConfigWarning(struct config_setting_t *config, const char *stri
va_end(ap);
StrBuf->Destroy(&buf);
}
-void showmsg_showDebug(const char *string, ...) __attribute__((format(printf, 1, 2)));
-void showmsg_showDebug(const char *string, ...)
+static void showmsg_showDebug(const char *string, ...) __attribute__((format(printf, 1, 2)));
+static void showmsg_showDebug(const char *string, ...)
{
va_list ap;
va_start(ap, string);
vShowMessage_(MSG_DEBUG, string, ap);
va_end(ap);
}
-void showmsg_showError(const char *string, ...) __attribute__((format(printf, 1, 2)));
-void showmsg_showError(const char *string, ...)
+static void showmsg_showError(const char *string, ...) __attribute__((format(printf, 1, 2)));
+static void showmsg_showError(const char *string, ...)
{
va_list ap;
va_start(ap, string);
vShowMessage_(MSG_ERROR, string, ap);
va_end(ap);
}
-void showmsg_showFatalError(const char *string, ...) __attribute__((format(printf, 1, 2)));
-void showmsg_showFatalError(const char *string, ...)
+static void showmsg_showFatalError(const char *string, ...) __attribute__((format(printf, 1, 2)));
+static void showmsg_showFatalError(const char *string, ...)
{
va_list ap;
va_start(ap, string);
@@ -837,11 +843,11 @@ void showmsg_showFatalError(const char *string, ...)
va_end(ap);
}
-void showmsg_init(void)
+static void showmsg_init(void)
{
}
-void showmsg_final(void)
+static void showmsg_final(void)
{
}
diff --git a/src/common/showmsg.h b/src/common/showmsg.h
index eee6b467b..ace155ee8 100644
--- a/src/common/showmsg.h
+++ b/src/common/showmsg.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/common/socket.c b/src/common/socket.c
index d4b8bb43f..95d8bf578 100644
--- a/src/common/socket.c
+++ b/src/common/socket.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -30,6 +30,7 @@
#include "common/memmgr.h"
#include "common/mmo.h"
#include "common/nullpo.h"
+#include "common/packets.h"
#include "common/showmsg.h"
#include "common/strlib.h"
#include "common/timer.h"
@@ -75,19 +76,17 @@
/**
* Socket Interface Source
**/
-struct socket_interface sockt_s;
+static struct socket_interface sockt_s;
struct socket_interface *sockt;
-struct socket_data **session;
-
-const char *SOCKET_CONF_FILENAME = "conf/common/socket.conf";
+static const char *SOCKET_CONF_FILENAME = "conf/common/socket.conf";
#ifdef SEND_SHORTLIST
// Add a fd to the shortlist so that it'll be recognized as a fd that needs
// sending done on it.
-void send_shortlist_add_fd(int fd);
+static void send_shortlist_add_fd(int fd);
// Do pending network sends (and eof handling) from the shortlist.
-void send_shortlist_do_sends(void);
+static void send_shortlist_do_sends(void);
#endif // SEND_SHORTLIST
/////////////////////////////////////////////////////////////////////
@@ -123,7 +122,7 @@ static int sock_arr_len = 0;
///
/// @param s Socket
/// @return Fd or -1
-int sock2fd(SOCKET s)
+static int sock2fd(SOCKET s)
{
int fd;
@@ -144,7 +143,7 @@ int sock2fd(SOCKET s)
///
/// @param s Socket
/// @return New fd or -1
-int sock2newfd(SOCKET s)
+static int sock2newfd(SOCKET s)
{
int fd;
@@ -164,7 +163,7 @@ int sock2newfd(SOCKET s)
return fd;
}
-int sAccept(int fd, struct sockaddr* addr, int* addrlen)
+static int sAccept(int fd, struct sockaddr *addr, int *addrlen)
{
SOCKET s;
@@ -175,14 +174,14 @@ int sAccept(int fd, struct sockaddr* addr, int* addrlen)
return sock2newfd(s);
}
-int sClose(int fd)
+static int sClose(int fd)
{
int ret = closesocket(fd2sock(fd));
fd2sock(fd) = INVALID_SOCKET;
return ret;
}
-int sSocket(int af, int type, int protocol)
+static int sSocket(int af, int type, int protocol)
{
SOCKET s;
@@ -193,7 +192,7 @@ int sSocket(int af, int type, int protocol)
return sock2newfd(s);
}
-char* sErr(int code)
+static char *sErr(int code)
{
static char sbuf[512];
// strerror does not handle socket codes
@@ -259,7 +258,7 @@ char* sErr(int code)
#ifndef SOCKET_EPOLL
// Select based Event Dispatcher:
-fd_set readfds;
+static fd_set readfds;
#else // SOCKET_EPOLL
// Epoll based Event Dispatcher:
@@ -296,19 +295,17 @@ static time_t socket_data_last_tick = 0;
#define WFIFO_MAX (1*1024*1024)
#ifdef SEND_SHORTLIST
-int send_shortlist_array[FD_SETSIZE];// we only support FD_SETSIZE sockets, limit the array to that
-int send_shortlist_count = 0;// how many fd's are in the shortlist
-uint32 send_shortlist_set[(FD_SETSIZE+31)/32];// to know if specific fd's are already in the shortlist
+static int send_shortlist_array[FD_SETSIZE];// we only support FD_SETSIZE sockets, limit the array to that
+static int send_shortlist_count = 0;// how many fd's are in the shortlist
+static uint32 send_shortlist_set[(FD_SETSIZE+31)/32];// to know if specific fd's are already in the shortlist
#endif // SEND_SHORTLIST
static int create_session(int fd, RecvFunc func_recv, SendFunc func_send, ParseFunc func_parse);
-#ifndef MINICORE
- int ip_rules = 1;
- static int connect_check(uint32 ip);
-#endif // MINICORE
+static int ip_rules = 1;
+static int connect_check(uint32 ip);
-const char* error_msg(void)
+static const char *error_msg(void)
{
static char buf[512];
int code = sErrno;
@@ -319,13 +316,24 @@ const char* error_msg(void)
/*======================================
* CORE : Default processing functions
*--------------------------------------*/
-int null_recv(int fd) { return 0; }
-int null_send(int fd) { return 0; }
-int null_parse(int fd) { return 0; }
+static int null_recv(int fd)
+{
+ return 0;
+}
-ParseFunc default_func_parse = null_parse;
+static int null_send(int fd)
+{
+ return 0;
+}
-void set_defaultparse(ParseFunc defaultparse)
+static int null_parse(int fd)
+{
+ return 0;
+}
+
+static ParseFunc default_func_parse = null_parse;
+
+static void set_defaultparse(ParseFunc defaultparse)
{
default_func_parse = defaultparse;
}
@@ -333,7 +341,7 @@ void set_defaultparse(ParseFunc defaultparse)
/*======================================
* CORE : Socket options
*--------------------------------------*/
-void set_nonblocking(int fd, unsigned long yes)
+static void set_nonblocking(int fd, unsigned long yes)
{
// FIONBIO Use with a nonzero argp parameter to enable the nonblocking mode of socket s.
// The argp parameter is zero if nonblocking is to be disabled.
@@ -347,7 +355,7 @@ void set_nonblocking(int fd, unsigned long yes)
* @param fd The socket descriptor
* @param opt Optional, additional options to set (Can be NULL).
*/
-void setsocketopts(int fd, struct hSockOpt *opt)
+static void setsocketopts(int fd, struct hSockOpt *opt)
{
#if defined(WIN32)
BOOL yes = TRUE;
@@ -409,7 +417,7 @@ void setsocketopts(int fd, struct hSockOpt *opt)
/*======================================
* CORE : Socket Sub Function
*--------------------------------------*/
-void set_eof(int fd)
+static void set_eof(int fd)
{
if (sockt->session_is_active(fd)) {
#ifdef SEND_SHORTLIST
@@ -420,7 +428,7 @@ void set_eof(int fd)
}
}
-int recv_to_fifo(int fd)
+static int recv_to_fifo(int fd)
{
ssize_t len;
@@ -457,7 +465,7 @@ int recv_to_fifo(int fd)
return 0;
}
-int send_from_fifo(int fd)
+static int send_from_fifo(int fd)
{
ssize_t len;
@@ -504,13 +512,13 @@ int send_from_fifo(int fd)
}
/// Best effort - there's no warranty that the data will be sent.
-void flush_fifo(int fd)
+static void flush_fifo(int fd)
{
if(sockt->session[fd] != NULL)
sockt->session[fd]->func_send(fd);
}
-void flush_fifos(void)
+static void flush_fifos(void)
{
int i;
for(i = 1; i < sockt->fd_max; i++)
@@ -520,7 +528,7 @@ void flush_fifos(void)
/*======================================
* CORE : Connection functions
*--------------------------------------*/
-int connect_client(int listen_fd)
+static int connect_client(int listen_fd)
{
int fd;
struct sockaddr_in client_address;
@@ -547,12 +555,10 @@ int connect_client(int listen_fd)
setsocketopts(fd,NULL);
sockt->set_nonblocking(fd, 1);
-#ifndef MINICORE
if( ip_rules && !connect_check(ntohl(client_address.sin_addr.s_addr)) ) {
sockt->close(fd);
return -1;
}
-#endif // MINICORE
#ifndef SOCKET_EPOLL
// Select Based Event Dispatcher
@@ -575,11 +581,12 @@ int connect_client(int listen_fd)
create_session(fd, recv_to_fifo, send_from_fifo, default_func_parse);
sockt->session[fd]->client_addr = ntohl(client_address.sin_addr.s_addr);
+ sockt->session[fd]->flag.validate = sockt->validate;
return fd;
}
-int make_listen_bind(uint32 ip, uint16 port)
+static int make_listen_bind(uint32 ip, uint16 port)
{
struct sockaddr_in server_address = { 0 };
int fd;
@@ -644,11 +651,10 @@ int make_listen_bind(uint32 ip, uint16 port)
create_session(fd, connect_client, null_send, null_parse);
sockt->session[fd]->client_addr = 0; // just listens
sockt->session[fd]->rdata_tick = 0; // disable timeouts on this socket
-
return fd;
}
-int make_connection(uint32 ip, uint16 port, struct hSockOpt *opt)
+static int make_connection(uint32 ip, uint16 port, struct hSockOpt *opt)
{
struct sockaddr_in remote_address = { 0 };
int fd;
@@ -749,7 +755,7 @@ static void delete_session(int fd)
}
}
-int realloc_fifo(int fd, unsigned int rfifo_size, unsigned int wfifo_size)
+static int realloc_fifo(int fd, unsigned int rfifo_size, unsigned int wfifo_size)
{
if (!sockt->session_is_valid(fd))
return 0;
@@ -766,7 +772,7 @@ int realloc_fifo(int fd, unsigned int rfifo_size, unsigned int wfifo_size)
return 0;
}
-int realloc_writefifo(int fd, size_t addition)
+static int realloc_writefifo(int fd, size_t addition)
{
size_t newsize;
@@ -794,7 +800,7 @@ int realloc_writefifo(int fd, size_t addition)
}
/// advance the RFIFO cursor (marking 'len' bytes as processed)
-int rfifoskip(int fd, size_t len)
+static int rfifoskip(int fd, size_t len)
{
struct socket_data *s;
@@ -805,7 +811,36 @@ int rfifoskip(int fd, size_t len)
if (s->rdata_size < s->rdata_pos + len) {
ShowError("RFIFOSKIP: skipped past end of read buffer! Adjusting from %"PRIuS" to %"PRIuS" (session #%d)\n", len, RFIFOREST(fd), fd);
+ Assert_report(0);
len = RFIFOREST(fd);
+ } else {
+ const size_t lenRest = RFIFOREST(fd);
+ if (s->flag.validate == 1 && len == lenRest) {
+ if (lenRest >= 2) {
+ const uint32 cmd = (uint32)RFIFOW(fd, 0);
+ if (cmd < MIN_PACKET_DB || cmd > MAX_PACKET_DB) {
+ ShowError("Skip wrong packet id: 0x%04X\n", cmd);
+ Assert_report(0);
+ } else {
+ int packet_len = packets->db[cmd];
+ if (packet_len == -1) {
+ if (lenRest < 4) {
+ ShowError("Skip packet with size smaller than 4\n");
+ Assert_report(0);
+ } else {
+ packet_len = RFIFOW(fd, 2);
+ if (packet_len != lenRest) {
+ ShowError("Skip packet 0x%04X with dynamic size %"PRIuS", but must be size %d\n", cmd, lenRest, packet_len);
+ Assert_report(0);
+ }
+ }
+ } else if (packet_len != lenRest) {
+ ShowError("Skip packet 0x%04X with size %"PRIuS", but must be size %d\n", cmd, lenRest, packet_len);
+ Assert_report(0);
+ }
+ }
+ }
+ }
}
s->rdata_pos = s->rdata_pos + len;
@@ -816,14 +851,12 @@ int rfifoskip(int fd, size_t len)
}
/// advance the WFIFO cursor (marking 'len' bytes for sending)
-int wfifoset(int fd, size_t len)
+static int wfifoset(int fd, size_t len, bool validate)
{
- size_t newreserve;
- struct socket_data* s;
-
if (!sockt->session_is_valid(fd))
return 0;
- s = sockt->session[fd];
+
+ struct socket_data* s = sockt->session[fd];
if (s == NULL || s->wdata == NULL)
return 0;
@@ -862,6 +895,10 @@ int wfifoset(int fd, size_t len)
}
}
+
+ if (validate && s->flag.validate == 1)
+ sockt->validateWfifo(fd, len);
+
s->wdata_size += len;
#ifdef SHOW_SERVER_STATS
socket_data_qo += len;
@@ -872,7 +909,7 @@ int wfifoset(int fd, size_t len)
// always keep a WFIFO_SIZE reserve in the buffer
// For inter-server connections, let the reserve be 1/4th of the link size.
- newreserve = s->flag.server ? FIFOSIZE_SERVERLINK / 4 : WFIFO_SIZE;
+ size_t newreserve = s->flag.server ? FIFOSIZE_SERVERLINK / 4 : WFIFO_SIZE;
// readjust the buffer to include the chosen reserve
sockt->realloc_writefifo(fd, newreserve);
@@ -884,7 +921,16 @@ int wfifoset(int fd, size_t len)
return 0;
}
-int do_sockets(int next)
+static void wfifohead(int fd, size_t len)
+{
+ Assert_retv(fd >= 0);
+
+ sockt->session[fd]->last_head_size = (uint32)len;
+ if (sockt->session[fd]->wdata_size + len > sockt->session[fd]->max_wdata)
+ sockt->realloc_writefifo(fd, len);
+}
+
+static int do_sockets(int next)
{
#ifndef SOCKET_EPOLL
fd_set rfd;
@@ -1056,9 +1102,6 @@ int do_sockets(int next)
return 0;
}
-//////////////////////////////
-#ifndef MINICORE
-//////////////////////////////
// IP rules and DDoS protection
struct connect_history {
@@ -1088,7 +1131,7 @@ static int access_debug = 0;
static int ddos_count = 10;
static int ddos_interval = 3*1000;
static int ddos_autoreset = 10*60*1000;
-struct DBMap *connect_history = NULL;
+static struct DBMap *connect_history = NULL;
static int connect_check_(uint32 ip);
@@ -1232,7 +1275,7 @@ static int connect_check_clear(int tid, int64 tick, int id, intptr_t data)
/// Parses the ip address and mask and puts it into acc.
/// Returns 1 is successful, 0 otherwise.
-int access_ipmask(const char *str, struct access_control *acc)
+static int access_ipmask(const char *str, struct access_control *acc)
{
uint32 ip;
uint32 mask;
@@ -1288,7 +1331,7 @@ int access_ipmask(const char *str, struct access_control *acc)
*
* @retval false in case of failure
*/
-bool access_list_add(struct config_setting_t *setting, const char *list_name, struct access_control_list *access_list)
+static bool access_list_add(struct config_setting_t *setting, const char *list_name, struct access_control_list *access_list)
{
const char *temp = NULL;
int i, setting_length;
@@ -1317,10 +1360,6 @@ bool access_list_add(struct config_setting_t *setting, const char *list_name, st
return true;
}
-//////////////////////////////
-#endif // MINICORE
-//////////////////////////////
-
/**
* Reads 'socket_configuration/ip_rules' and initializes required variables.
*
@@ -1330,9 +1369,8 @@ bool access_list_add(struct config_setting_t *setting, const char *list_name, st
*
* @retval false in case of error.
*/
-bool socket_config_read_iprules(const char *filename, struct config_t *config, bool imported)
+static bool socket_config_read_iprules(const char *filename, struct config_t *config, bool imported)
{
-#ifndef MINICORE
struct config_setting_t *setting = NULL;
const char *temp = NULL;
@@ -1375,7 +1413,6 @@ bool socket_config_read_iprules(const char *filename, struct config_t *config, b
} else {
access_list_add(setting, "deny_list", &access_deny);
}
-#endif // ! MINICORE
return true;
}
@@ -1389,9 +1426,8 @@ bool socket_config_read_iprules(const char *filename, struct config_t *config, b
*
* @retval false in case of error.
*/
-bool socket_config_read_ddos(const char *filename, struct config_t *config, bool imported)
+static bool socket_config_read_ddos(const char *filename, struct config_t *config, bool imported)
{
-#ifndef MINICORE
struct config_setting_t *setting = NULL;
nullpo_retr(false, filename);
@@ -1408,7 +1444,6 @@ bool socket_config_read_ddos(const char *filename, struct config_t *config, bool
libconfig->setting_lookup_int(setting, "count", &ddos_count);
libconfig->setting_lookup_int(setting, "autoreset", &ddos_autoreset);
-#endif // ! MINICORE
return true;
}
@@ -1420,7 +1455,7 @@ bool socket_config_read_ddos(const char *filename, struct config_t *config, bool
*
* @retval false in case of error.
*/
-bool socket_config_read(const char *filename, bool imported)
+static bool socket_config_read(const char *filename, bool imported)
{
struct config_t config;
struct config_setting_t *setting = NULL;
@@ -1455,7 +1490,6 @@ bool socket_config_read(const char *filename, bool imported)
}
#endif // SOCKET_EPOLL
-#ifndef MINICORE
{
uint32 ui32 = 0;
libconfig->setting_lookup_bool(setting, "debug", &access_debug);
@@ -1468,7 +1502,6 @@ bool socket_config_read(const char *filename, bool imported)
retval = false;
if (!socket_config_read_ddos(filename, &config, imported))
retval = false;
-#endif // MINICORE
// import should overwrite any previous configuration, so it should be called last
if (libconfig->lookup_string(&config, "import", &import) == CONFIG_TRUE) {
@@ -1484,15 +1517,13 @@ bool socket_config_read(const char *filename, bool imported)
return retval;
}
-void socket_final(void)
+static void socket_final(void)
{
int i;
-#ifndef MINICORE
if( connect_history )
db_destroy(connect_history);
VECTOR_CLEAR(access_allow);
VECTOR_CLEAR(access_deny);
-#endif // MINICORE
for( i = 1; i < sockt->fd_max; i++ )
if(sockt->session[i])
@@ -1523,7 +1554,7 @@ void socket_final(void)
}
/// Closes a socket.
-void socket_close(int fd)
+static void socket_close(int fd)
{
if( fd <= 0 ||fd >= FD_SETSIZE )
return;// invalid
@@ -1537,7 +1568,7 @@ void socket_close(int fd)
// Epoll based Event Dispatcher
epevent.data.fd = fd;
epevent.events = EPOLLIN;
- epoll_ctl(epfd, EPOLL_CTL_DEL, fd, &epevent); // removing the socket from epoll when it's being closed is not required but recommended
+ epoll_ctl(epfd, EPOLL_CTL_DEL, fd, &epevent); // removing the socket from epoll when it's being closed is not required but recommended
#endif // SOCKET_EPOLL
sShutdown(fd, SHUT_RDWR); // Disallow further reads/writes
@@ -1547,7 +1578,7 @@ void socket_close(int fd)
/// Retrieve local ips in host byte order.
/// Uses loopback is no address is found.
-int socket_getips(uint32* ips, int max)
+static int socket_getips(uint32 *ips, int max)
{
int num = 0;
@@ -1628,7 +1659,7 @@ int socket_getips(uint32* ips, int max)
return num;
}
-void socket_init(void)
+static void socket_init(void)
{
uint64 rlim_cur = FD_SETSIZE;
@@ -1677,10 +1708,8 @@ void socket_init(void)
}
#endif // defined(HAVE_SETRLIMIT) && !defined(CYGWIN)
-#ifndef MINICORE
VECTOR_INIT(access_allow);
VECTOR_INIT(access_deny);
-#endif // ! MINICORE
// Get initial local ips
sockt->naddr_ = sockt->getips(sockt->addr_,16);
@@ -1694,7 +1723,7 @@ void socket_init(void)
#else // SOCKET_EPOLL
// Epoll based Event Dispatcher:
- epfd = epoll_create(FD_SETSIZE); // 2.6.8 or newer ignores the expected socket amount argument
+ epfd = epoll_create(FD_SETSIZE); // 2.6.8 or newer ignores the expected socket amount argument
if(epfd == SOCKET_ERROR){
ShowError("Failed to Create Epoll Event Dispatcher: %s\n", error_msg());
exit(EXIT_FAILURE);
@@ -1720,28 +1749,26 @@ void socket_init(void)
// should hold enough buffer (it is a vacuum so to speak) as it is never flushed. [Skotlex]
create_session(0, null_recv, null_send, null_parse);
-#ifndef MINICORE
// Delete old connection history every 5 minutes
connect_history = uidb_alloc(DB_OPT_RELEASE_DATA);
timer->add_func_list(connect_check_clear, "connect_check_clear");
timer->add_interval(timer->gettick()+1000, connect_check_clear, 0, 0, 5*60*1000);
-#endif // MINICORE
ShowInfo("Server supports up to '"CL_WHITE"%"PRIu64""CL_RESET"' concurrent connections.\n", rlim_cur);
}
-bool session_is_valid(int fd)
+static bool session_is_valid(int fd)
{
return ( fd > 0 && fd < FD_SETSIZE && sockt->session[fd] != NULL );
}
-bool session_is_active(int fd)
+static bool session_is_active(int fd)
{
return ( sockt->session_is_valid(fd) && !sockt->session[fd]->flag.eof );
}
// Resolves hostname into a numeric ip.
-uint32 host2ip(const char *hostname)
+static uint32 host2ip(const char *hostname)
{
struct hostent* h;
nullpo_ret(hostname);
@@ -1757,7 +1784,7 @@ uint32 host2ip(const char *hostname)
*
* @return A pointer to the output string.
*/
-const char *ip2str(uint32 ip, char *ip_str)
+static const char *ip2str(uint32 ip, char *ip_str)
{
struct in_addr addr;
addr.s_addr = htonl(ip);
@@ -1765,20 +1792,20 @@ const char *ip2str(uint32 ip, char *ip_str)
}
// Converts a dot-formatted ip string into a numeric ip.
-uint32 str2ip(const char* ip_str)
+static uint32 str2ip(const char *ip_str)
{
return ntohl(inet_addr(ip_str));
}
// Reorders bytes from network to little endian (Windows).
// Necessary for sending port numbers to the RO client until Gravity notices that they forgot ntohs() calls.
-uint16 ntows(uint16 netshort)
+static uint16 ntows(uint16 netshort)
{
return ((netshort & 0xFF) << 8) | ((netshort & 0xFF00) >> 8);
}
/* [Ind/Hercules] - socket_datasync */
-void socket_datasync(int fd, bool send)
+static void socket_datasync(int fd, bool send)
{
struct {
unsigned int length;/* short is not enough for some */
@@ -1809,6 +1836,11 @@ void socket_datasync(int fd, bool send)
{ sizeof(struct guild_castle) },
{ sizeof(struct fame_list) },
{ PACKETVER },
+ { PACKETVER_MAIN_NUM },
+ { PACKETVER_RE_NUM },
+ { PACKETVER_ZERO_NUM },
+ { PACKETVER_AD_NUM },
+ { PACKETVER_SAK_NUM },
};
unsigned short i;
unsigned int alen = ARRAYLENGTH(data_list);
@@ -1845,7 +1877,7 @@ void socket_datasync(int fd, bool send)
#ifdef SEND_SHORTLIST
// Add a fd to the shortlist so that it'll be recognized as a fd that needs
// sending or eof handling.
-void send_shortlist_add_fd(int fd)
+static void send_shortlist_add_fd(int fd)
{
int i;
int bit;
@@ -1872,7 +1904,7 @@ void send_shortlist_add_fd(int fd)
}
// Do pending network sends and eof handling from the shortlist.
-void send_shortlist_do_sends(void)
+static void send_shortlist_do_sends(void)
{
int i;
@@ -1928,7 +1960,7 @@ void send_shortlist_do_sends(void)
* @retval 0 if it is a WAN IP.
* @return the appropriate LAN server address to send, if it is a LAN IP.
*/
-uint32 socket_lan_subnet_check(uint32 ip, struct s_subnet *info)
+static uint32 socket_lan_subnet_check(uint32 ip, struct s_subnet *info)
{
int i;
ARR_FIND(0, VECTOR_LENGTH(sockt->lan_subnets), i, SUBNET_MATCH(ip, VECTOR_INDEX(sockt->lan_subnets, i).ip, VECTOR_INDEX(sockt->lan_subnets, i).mask));
@@ -1952,7 +1984,7 @@ uint32 socket_lan_subnet_check(uint32 ip, struct s_subnet *info)
* @retval true if we allow server connections from the given IP.
* @retval false otherwise.
*/
-bool socket_allowed_ip_check(uint32 ip)
+static bool socket_allowed_ip_check(uint32 ip)
{
int i;
ARR_FIND(0, VECTOR_LENGTH(sockt->allowed_ips), i, SUBNET_MATCH(ip, VECTOR_INDEX(sockt->allowed_ips, i).ip, VECTOR_INDEX(sockt->allowed_ips, i).mask));
@@ -1968,7 +2000,7 @@ bool socket_allowed_ip_check(uint32 ip)
* @retval true if we trust the given IP.
* @retval false otherwise.
*/
-bool socket_trusted_ip_check(uint32 ip)
+static bool socket_trusted_ip_check(uint32 ip)
{
int i;
ARR_FIND(0, VECTOR_LENGTH(sockt->trusted_ips), i, SUBNET_MATCH(ip, VECTOR_INDEX(sockt->trusted_ips, i).ip, VECTOR_INDEX(sockt->trusted_ips, i).mask));
@@ -1988,7 +2020,7 @@ bool socket_trusted_ip_check(uint32 ip)
* @param[in] groupname Current group name, for output/logging reasons.
* @return The amount of entries read, zero in case of errors.
*/
-int socket_net_config_read_sub(struct config_setting_t *t, struct s_subnet_vector *list, const char *filename, const char *groupname)
+static int socket_net_config_read_sub(struct config_setting_t *t, struct s_subnet_vector *list, const char *filename, const char *groupname)
{
int i, len;
char ipbuf[64], maskbuf[64];
@@ -2022,7 +2054,7 @@ int socket_net_config_read_sub(struct config_setting_t *t, struct s_subnet_vecto
*
* @param filename The filename to read from.
*/
-void socket_net_config_read(const char *filename)
+static void socket_net_config_read(const char *filename)
{
struct config_t network_config;
int i;
@@ -2063,6 +2095,50 @@ void socket_net_config_read(const char *filename)
return;
}
+static void socket_validateWfifo(int fd, size_t len)
+{
+ if (len < 2) {
+ ShowError("Sent packet with size smaller than 2\n");
+ Assert_retv(0);
+ return;
+ }
+ const uint32 cmd = (uint32)WFIFOW(fd, 0);
+ const uint32 last_head_size = sockt->session[fd]->last_head_size;
+ sockt->session[fd]->last_head_size = 0;
+
+ if (cmd < MIN_PACKET_DB || cmd > MAX_PACKET_DB) {
+ ShowError("Sent wrong packet id: 0x%04X\n", cmd);
+ Assert_retv(0);
+ return;
+ }
+ if (len > 65535) {
+ ShowError("Sent packet with size bigger than 65535\n");
+ Assert_retv(0);
+ return;
+ }
+ int packet_len = packets->db[cmd];
+ const int len2 = (int)len;
+ if (packet_len == -1) {
+ if (len2 < 4) {
+ ShowError("Sent packet with size smaller than 4\n");
+ Assert_retv(0);
+ return;
+ }
+ packet_len = WFIFOW(fd, 2);
+ if (packet_len != len2) {
+ ShowError("Sent packet 0x%04X with dynamic size %d, but must be size %d\n", cmd, len2, packet_len);
+ Assert_retv(0);
+ }
+ } else if (packet_len != len2) {
+ ShowError("Sent packet 0x%04X with size %d, but must be size %d\n", cmd, len2, packet_len);
+ Assert_retv(0);
+ }
+ if (last_head_size < (uint32)packet_len) {
+ ShowError("Reserved too small packet buffer for packet 0x%04X with size %u, but must be size %d\n", cmd, last_head_size, packet_len);
+ Assert_retv(0);
+ }
+}
+
void socket_defaults(void)
{
sockt = &sockt_s;
@@ -2074,6 +2150,7 @@ void socket_defaults(void)
/* */
memset(&sockt->addr_, 0, sizeof(sockt->addr_));
sockt->naddr_ = 0;
+ sockt->validate = false;
/* */
VECTOR_INIT(sockt->lan_subnets);
VECTOR_INIT(sockt->allowed_ips);
@@ -2091,6 +2168,7 @@ void socket_defaults(void)
sockt->realloc_fifo = realloc_fifo;
sockt->realloc_writefifo = realloc_writefifo;
sockt->wfifoset = wfifoset;
+ sockt->wfifohead = wfifohead;
sockt->rfifoskip = rfifoskip;
sockt->close = socket_close;
/* */
@@ -2113,4 +2191,5 @@ void socket_defaults(void)
sockt->trusted_ip_check = socket_trusted_ip_check;
sockt->net_config_read_sub = socket_net_config_read_sub;
sockt->net_config_read = socket_net_config_read;
+ sockt->validateWfifo = socket_validateWfifo;
}
diff --git a/src/common/socket.h b/src/common/socket.h
index e3a309f20..5e4251989 100644
--- a/src/common/socket.h
+++ b/src/common/socket.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -41,11 +41,7 @@ struct config_setting_t;
// socket I/O macros
#define RFIFOHEAD(fd)
-#define WFIFOHEAD(fd, size) \
- do{ \
- if ((fd) && sockt->session[fd]->wdata_size + (size) > sockt->session[fd]->max_wdata) \
- sockt->realloc_writefifo((fd), (size)); \
- } while(0)
+#define WFIFOHEAD(fd, size) sockt->wfifohead(fd, size)
#define RFIFOP(fd,pos) ((const void *)(sockt->session[fd]->rdata + sockt->session[fd]->rdata_pos + (pos)))
#define WFIFOP(fd,pos) ((void *)(sockt->session[fd]->wdata + sockt->session[fd]->wdata_size + (pos)))
@@ -73,7 +69,8 @@ struct config_setting_t;
} \
} while(0)
-#define WFIFOSET(fd, len) (sockt->wfifoset(fd, len))
+#define WFIFOSET(fd, len) (sockt->wfifoset(fd, len, true))
+#define WFIFOSET2(fd, len) (sockt->wfifoset(fd, len, false))
#define RFIFOSKIP(fd, len) (sockt->rfifoskip(fd, len))
/* [Ind/Hercules] */
@@ -122,6 +119,7 @@ struct socket_data {
unsigned char eof : 1;
unsigned char server : 1;
unsigned char ping : 2;
+ unsigned char validate : 1;
} flag;
uint32 client_addr; // remote client address
@@ -130,6 +128,7 @@ struct socket_data {
size_t max_rdata, max_wdata;
size_t rdata_size, wdata_size;
size_t rdata_pos;
+ uint32 last_head_size;
time_t rdata_tick; // time of last recv (for detecting timeouts); zero when timeout is disabled
RecvFunc func_recv;
@@ -178,9 +177,11 @@ struct socket_interface {
/* */
time_t stall_time;
time_t last_tick;
+
/* */
uint32 addr_[16]; // ip addresses of local host (host byte order)
int naddr_; // # of ip addresses
+ bool validate;
struct socket_data **session;
@@ -200,9 +201,11 @@ struct socket_interface {
int (*make_connection) (uint32 ip, uint16 port, struct hSockOpt *opt);
int (*realloc_fifo) (int fd, unsigned int rfifo_size, unsigned int wfifo_size);
int (*realloc_writefifo) (int fd, size_t addition);
- int (*wfifoset) (int fd, size_t len);
+ int (*wfifoset) (int fd, size_t len, bool validate);
+ void (*wfifohead) (int fd, size_t len);
int (*rfifoskip) (int fd, size_t len);
void (*close) (int fd);
+ void (*validateWfifo) (int fd, size_t len);
/* */
bool (*session_is_valid) (int fd);
bool (*session_is_active) (int fd);
diff --git a/src/common/spinlock.h b/src/common/spinlock.h
index c04416285..97818ef82 100644
--- a/src/common/spinlock.h
+++ b/src/common/spinlock.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) rAthena Project (www.rathena.org)
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/common/sql.c b/src/common/sql.c
index c80edbce4..0b5b7fa07 100644
--- a/src/common/sql.c
+++ b/src/common/sql.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -37,12 +37,12 @@
#include <stdio.h>
#include <stdlib.h> // strtoul
-void hercules_mysql_error_handler(unsigned int ecode);
+static void hercules_mysql_error_handler(unsigned int ecode);
-int mysql_reconnect_type = 2;
-int mysql_reconnect_count = 1;
+static int mysql_reconnect_type = 2;
+static int mysql_reconnect_count = 1;
-struct sql_interface sql_s;
+static struct sql_interface sql_s;
struct sql_interface *SQL;
/// Sql handle
@@ -81,7 +81,7 @@ struct SqlStmt {
///////////////////////////////////////////////////////////////////////////////
/// Allocates and initializes a new Sql handle.
-struct Sql *Sql_Malloc(void)
+static struct Sql *Sql_Malloc(void)
{
struct Sql *self;
@@ -91,14 +91,17 @@ struct Sql *Sql_Malloc(void)
self->lengths = NULL;
self->result = NULL;
self->keepalive = INVALID_TIMER;
- self->handle.reconnect = 1;
+ {
+ my_bool reconnect = 1;
+ mysql_options(&self->handle, MYSQL_OPT_RECONNECT, &reconnect);
+ }
return self;
}
static int Sql_P_Keepalive(struct Sql *self);
/// Establishes a connection.
-int Sql_Connect(struct Sql *self, const char *user, const char *passwd, const char *host, uint16 port, const char *db)
+static int Sql_Connect(struct Sql *self, const char *user, const char *passwd, const char *host, uint16 port, const char *db)
{
if( self == NULL )
return SQL_ERROR;
@@ -121,7 +124,7 @@ int Sql_Connect(struct Sql *self, const char *user, const char *passwd, const ch
}
/// Retrieves the timeout of the connection.
-int Sql_GetTimeout(struct Sql *self, uint32 *out_timeout)
+static int Sql_GetTimeout(struct Sql *self, uint32 *out_timeout)
{
if( self && out_timeout && SQL_SUCCESS == SQL->Query(self, "SHOW VARIABLES LIKE 'wait_timeout'") ) {
char* data;
@@ -138,7 +141,7 @@ int Sql_GetTimeout(struct Sql *self, uint32 *out_timeout)
}
/// Retrieves the name of the columns of a table into out_buf, with the separator after each name.
-int Sql_GetColumnNames(struct Sql *self, const char *table, char *out_buf, size_t buf_len, char sep)
+static int Sql_GetColumnNames(struct Sql *self, const char *table, char *out_buf, size_t buf_len, char sep)
{
char* data;
size_t len;
@@ -167,7 +170,7 @@ int Sql_GetColumnNames(struct Sql *self, const char *table, char *out_buf, size_
}
/// Changes the encoding of the connection.
-int Sql_SetEncoding(struct Sql *self, const char *encoding)
+static int Sql_SetEncoding(struct Sql *self, const char *encoding)
{
if( self && mysql_set_character_set(&self->handle, encoding) == 0 )
return SQL_SUCCESS;
@@ -175,7 +178,7 @@ int Sql_SetEncoding(struct Sql *self, const char *encoding)
}
/// Pings the connection.
-int Sql_Ping(struct Sql *self)
+static int Sql_Ping(struct Sql *self)
{
if( self && mysql_ping(&self->handle) == 0 )
return SQL_SUCCESS;
@@ -217,7 +220,7 @@ static int Sql_P_Keepalive(struct Sql *self)
}
/// Escapes a string.
-size_t Sql_EscapeString(struct Sql *self, char *out_to, const char *from)
+static size_t Sql_EscapeString(struct Sql *self, char *out_to, const char *from)
{
if (self != NULL)
return (size_t)mysql_real_escape_string(&self->handle, out_to, from, (unsigned long)strlen(from));
@@ -226,7 +229,7 @@ size_t Sql_EscapeString(struct Sql *self, char *out_to, const char *from)
}
/// Escapes a string.
-size_t Sql_EscapeStringLen(struct Sql *self, char *out_to, const char *from, size_t from_len)
+static size_t Sql_EscapeStringLen(struct Sql *self, char *out_to, const char *from, size_t from_len)
{
if (self != NULL)
return (size_t)mysql_real_escape_string(&self->handle, out_to, from, (unsigned long)from_len);
@@ -235,8 +238,8 @@ size_t Sql_EscapeStringLen(struct Sql *self, char *out_to, const char *from, siz
}
/// Executes a query.
-int Sql_Query(struct Sql *self, const char *query, ...) __attribute__((format(printf, 2, 3)));
-int Sql_Query(struct Sql *self, const char *query, ...)
+static int Sql_Query(struct Sql *self, const char *query, ...) __attribute__((format(printf, 2, 3)));
+static int Sql_Query(struct Sql *self, const char *query, ...)
{
int res;
va_list args;
@@ -249,7 +252,7 @@ int Sql_Query(struct Sql *self, const char *query, ...)
}
/// Executes a query.
-int Sql_QueryV(struct Sql *self, const char *query, va_list args)
+static int Sql_QueryV(struct Sql *self, const char *query, va_list args)
{
if( self == NULL )
return SQL_ERROR;
@@ -274,7 +277,7 @@ int Sql_QueryV(struct Sql *self, const char *query, va_list args)
}
/// Executes a query.
-int Sql_QueryStr(struct Sql *self, const char *query)
+static int Sql_QueryStr(struct Sql *self, const char *query)
{
if( self == NULL )
return SQL_ERROR;
@@ -299,7 +302,7 @@ int Sql_QueryStr(struct Sql *self, const char *query)
}
/// Returns the number of the AUTO_INCREMENT column of the last INSERT/UPDATE query.
-uint64 Sql_LastInsertId(struct Sql *self)
+static uint64 Sql_LastInsertId(struct Sql *self)
{
if (self != NULL)
return (uint64)mysql_insert_id(&self->handle);
@@ -308,7 +311,7 @@ uint64 Sql_LastInsertId(struct Sql *self)
}
/// Returns the number of columns in each row of the result.
-uint32 Sql_NumColumns(struct Sql *self)
+static uint32 Sql_NumColumns(struct Sql *self)
{
if (self != NULL && self->result != NULL)
return (uint32)mysql_num_fields(self->result);
@@ -316,7 +319,7 @@ uint32 Sql_NumColumns(struct Sql *self)
}
/// Returns the number of rows in the result.
-uint64 Sql_NumRows(struct Sql *self)
+static uint64 Sql_NumRows(struct Sql *self)
{
if (self != NULL && self->result != NULL)
return (uint64)mysql_num_rows(self->result);
@@ -324,7 +327,7 @@ uint64 Sql_NumRows(struct Sql *self)
}
/// Fetches the next row.
-int Sql_NextRow(struct Sql *self)
+static int Sql_NextRow(struct Sql *self)
{
if (self != NULL && self->result != NULL) {
self->row = mysql_fetch_row(self->result);
@@ -340,7 +343,7 @@ int Sql_NextRow(struct Sql *self)
}
/// Gets the data of a column.
-int Sql_GetData(struct Sql *self, size_t col, char **out_buf, size_t *out_len)
+static int Sql_GetData(struct Sql *self, size_t col, char **out_buf, size_t *out_len)
{
if( self && self->row ) {
if( col < SQL->NumColumns(self) ) {
@@ -356,7 +359,7 @@ int Sql_GetData(struct Sql *self, size_t col, char **out_buf, size_t *out_len)
}
/// Frees the result of the query.
-void Sql_FreeResult(struct Sql *self)
+static void Sql_FreeResult(struct Sql *self)
{
if( self && self->result ) {
mysql_free_result(self->result);
@@ -367,7 +370,7 @@ void Sql_FreeResult(struct Sql *self)
}
/// Shows debug information (last query).
-void Sql_ShowDebug_(struct Sql *self, const char *debug_file, const unsigned long debug_line)
+static void Sql_ShowDebug_(struct Sql *self, const char *debug_file, const unsigned long debug_line)
{
if( self == NULL )
ShowDebug("at %s:%lu - self is NULL\n", debug_file, debug_line);
@@ -378,7 +381,7 @@ void Sql_ShowDebug_(struct Sql *self, const char *debug_file, const unsigned lon
}
/// Frees a Sql handle returned by Sql_Malloc.
-void Sql_Free(struct Sql *self)
+static void Sql_Free(struct Sql *self)
{
if( self )
{
@@ -414,74 +417,105 @@ static enum enum_field_types Sql_P_SizeToMysqlIntType(int sz)
/// Binds a parameter/result.
///
/// @private
-static int Sql_P_BindSqlDataType(MYSQL_BIND* bind, enum SqlDataType buffer_type, void* buffer, size_t buffer_len, unsigned long* out_length, int8* out_is_null)
+static int Sql_P_BindSqlDataType(MYSQL_BIND *bind, enum SqlDataType buffer_type, void *buffer, size_t buffer_len, unsigned long *out_length, int8 *out_is_null)
{
nullpo_retr(SQL_ERROR, bind);
memset(bind, 0, sizeof(MYSQL_BIND));
switch( buffer_type )
{
- case SQLDT_NULL: bind->buffer_type = MYSQL_TYPE_NULL;
+ case SQLDT_NULL:
+ bind->buffer_type = MYSQL_TYPE_NULL;
buffer_len = 0;// FIXME length = ? [FlavioJS]
break;
// fixed size
- case SQLDT_UINT8: bind->is_unsigned = 1;
+ case SQLDT_UINT8:
+ bind->is_unsigned = 1;
FALLTHROUGH
- case SQLDT_INT8: bind->buffer_type = MYSQL_TYPE_TINY;
- buffer_len = 1;
+ case SQLDT_INT8:
+ bind->buffer_type = MYSQL_TYPE_TINY;
+ Assert_retr(SQL_ERROR, buffer_len == 1);
break;
- case SQLDT_UINT16: bind->is_unsigned = 1;
+ case SQLDT_UINT16:
+ bind->is_unsigned = 1;
FALLTHROUGH
- case SQLDT_INT16: bind->buffer_type = MYSQL_TYPE_SHORT;
- buffer_len = 2;
+ case SQLDT_INT16:
+ bind->buffer_type = MYSQL_TYPE_SHORT;
+ Assert_retr(SQL_ERROR, buffer_len == 2);
break;
- case SQLDT_UINT32: bind->is_unsigned = 1;
+ case SQLDT_UINT32:
+ bind->is_unsigned = 1;
FALLTHROUGH
- case SQLDT_INT32: bind->buffer_type = MYSQL_TYPE_LONG;
- buffer_len = 4;
+ case SQLDT_INT32:
+ bind->buffer_type = MYSQL_TYPE_LONG;
+ Assert_retr(SQL_ERROR, buffer_len == 4);
break;
- case SQLDT_UINT64: bind->is_unsigned = 1;
+ case SQLDT_UINT64:
+ bind->is_unsigned = 1;
FALLTHROUGH
- case SQLDT_INT64: bind->buffer_type = MYSQL_TYPE_LONGLONG;
- buffer_len = 8;
+ case SQLDT_INT64:
+ bind->buffer_type = MYSQL_TYPE_LONGLONG;
+ Assert_retr(SQL_ERROR, buffer_len == 8);
break;
// platform dependent size
- case SQLDT_UCHAR: bind->is_unsigned = 1;
+ case SQLDT_UCHAR:
+ bind->is_unsigned = 1;
FALLTHROUGH
- case SQLDT_CHAR: bind->buffer_type = Sql_P_SizeToMysqlIntType(sizeof(char));
- buffer_len = sizeof(char);
+ case SQLDT_CHAR:
+ bind->buffer_type = Sql_P_SizeToMysqlIntType(sizeof(char));
+ Assert_retr(SQL_ERROR, buffer_len == sizeof(char));
break;
- case SQLDT_USHORT: bind->is_unsigned = 1;
+ case SQLDT_USHORT:
+ bind->is_unsigned = 1;
FALLTHROUGH
- case SQLDT_SHORT: bind->buffer_type = Sql_P_SizeToMysqlIntType(sizeof(short));
- buffer_len = sizeof(short);
+ case SQLDT_SHORT:
+ bind->buffer_type = Sql_P_SizeToMysqlIntType(sizeof(short));
+ Assert_retr(SQL_ERROR, buffer_len == sizeof(short));
break;
- case SQLDT_UINT: bind->is_unsigned = 1;
+ case SQLDT_UINT:
+ bind->is_unsigned = 1;
FALLTHROUGH
- case SQLDT_INT: bind->buffer_type = Sql_P_SizeToMysqlIntType(sizeof(int));
- buffer_len = sizeof(int);
+ case SQLDT_INT:
+ bind->buffer_type = Sql_P_SizeToMysqlIntType(sizeof(int));
+ Assert_retr(SQL_ERROR, buffer_len == sizeof(int));
break;
- case SQLDT_ULONG: bind->is_unsigned = 1;
+ case SQLDT_ULONG:
+ bind->is_unsigned = 1;
FALLTHROUGH
- case SQLDT_LONG: bind->buffer_type = Sql_P_SizeToMysqlIntType(sizeof(long));
- buffer_len = sizeof(long);
+ case SQLDT_LONG:
+ bind->buffer_type = Sql_P_SizeToMysqlIntType(sizeof(long));
+ Assert_retr(SQL_ERROR, buffer_len == sizeof(long));
break;
- case SQLDT_ULONGLONG: bind->is_unsigned = 1;
+ case SQLDT_ULONGLONG:
+ bind->is_unsigned = 1;
FALLTHROUGH
- case SQLDT_LONGLONG: bind->buffer_type = Sql_P_SizeToMysqlIntType(sizeof(int64));
- buffer_len = sizeof(int64);
+ case SQLDT_LONGLONG:
+ bind->buffer_type = Sql_P_SizeToMysqlIntType(sizeof(long long));
+ Assert_retr(SQL_ERROR, buffer_len == sizeof(long long));
+ break;
+ case SQLDT_BOOL:
+ bind->buffer_type = Sql_P_SizeToMysqlIntType(sizeof(bool));
+ Assert_retr(SQL_ERROR, buffer_len == sizeof(bool));
+ break;
+ case SQLDT_TIME:
+ bind->buffer_type = Sql_P_SizeToMysqlIntType(sizeof(time_t));
+ Assert_retr(SQL_ERROR, buffer_len == sizeof(time_t));
break;
// floating point
- case SQLDT_FLOAT: bind->buffer_type = MYSQL_TYPE_FLOAT;
- buffer_len = 4;
+ case SQLDT_FLOAT:
+ bind->buffer_type = MYSQL_TYPE_FLOAT;
+ Assert_retr(SQL_ERROR, buffer_len == 4);
break;
- case SQLDT_DOUBLE: bind->buffer_type = MYSQL_TYPE_DOUBLE;
- buffer_len = 8;
+ case SQLDT_DOUBLE:
+ bind->buffer_type = MYSQL_TYPE_DOUBLE;
+ Assert_retr(SQL_ERROR, buffer_len == 8);
break;
// other
case SQLDT_STRING:
- case SQLDT_ENUM: bind->buffer_type = MYSQL_TYPE_STRING;
+ case SQLDT_ENUM:
+ bind->buffer_type = MYSQL_TYPE_STRING;
break;
- case SQLDT_BLOB: bind->buffer_type = MYSQL_TYPE_BLOB;
+ case SQLDT_BLOB:
+ bind->buffer_type = MYSQL_TYPE_BLOB;
break;
default:
ShowDebug("Sql_P_BindSqlDataType: unsupported buffer type (%u)\n", buffer_type);
@@ -497,7 +531,7 @@ static int Sql_P_BindSqlDataType(MYSQL_BIND* bind, enum SqlDataType buffer_type,
/// Prints debug information about a field (type and length).
///
/// @private
-static void Sql_P_ShowDebugMysqlFieldInfo(const char* prefix, enum enum_field_types type, int is_unsigned, unsigned long length, const char* length_postfix)
+static void Sql_P_ShowDebugMysqlFieldInfo(const char *prefix, enum enum_field_types type, int is_unsigned, unsigned long length, const char *length_postfix)
{
const char *sign = (is_unsigned ? "UNSIGNED " : "");
const char *type_string = NULL;
@@ -554,7 +588,7 @@ static void SqlStmt_P_ShowDebugTruncatedColumn(struct SqlStmt *self, size_t i)
}
/// Allocates and initializes a new SqlStmt handle.
-struct SqlStmt *SqlStmt_Malloc(struct Sql *sql)
+static struct SqlStmt *SqlStmt_Malloc(struct Sql *sql)
{
struct SqlStmt *self;
MYSQL_STMT* stmt;
@@ -582,8 +616,8 @@ struct SqlStmt *SqlStmt_Malloc(struct Sql *sql)
}
/// Prepares the statement.
-int SqlStmt_Prepare(struct SqlStmt *self, const char *query, ...) __attribute__((format(printf, 2, 3)));
-int SqlStmt_Prepare(struct SqlStmt *self, const char *query, ...)
+static int SqlStmt_Prepare(struct SqlStmt *self, const char *query, ...) __attribute__((format(printf, 2, 3)));
+static int SqlStmt_Prepare(struct SqlStmt *self, const char *query, ...)
{
int res;
va_list args;
@@ -596,7 +630,7 @@ int SqlStmt_Prepare(struct SqlStmt *self, const char *query, ...)
}
/// Prepares the statement.
-int SqlStmt_PrepareV(struct SqlStmt *self, const char *query, va_list args)
+static int SqlStmt_PrepareV(struct SqlStmt *self, const char *query, va_list args)
{
if( self == NULL )
return SQL_ERROR;
@@ -616,7 +650,7 @@ int SqlStmt_PrepareV(struct SqlStmt *self, const char *query, va_list args)
}
/// Prepares the statement.
-int SqlStmt_PrepareStr(struct SqlStmt *self, const char *query)
+static int SqlStmt_PrepareStr(struct SqlStmt *self, const char *query)
{
if( self == NULL )
return SQL_ERROR;
@@ -636,7 +670,7 @@ int SqlStmt_PrepareStr(struct SqlStmt *self, const char *query)
}
/// Returns the number of parameters in the prepared statement.
-size_t SqlStmt_NumParams(struct SqlStmt *self)
+static size_t SqlStmt_NumParams(struct SqlStmt *self)
{
if( self )
return (size_t)mysql_stmt_param_count(self->stmt);
@@ -645,7 +679,7 @@ size_t SqlStmt_NumParams(struct SqlStmt *self)
}
/// Binds a parameter to a buffer.
-int SqlStmt_BindParam(struct SqlStmt *self, size_t idx, enum SqlDataType buffer_type, const void *buffer, size_t buffer_len)
+static int SqlStmt_BindParam(struct SqlStmt *self, size_t idx, enum SqlDataType buffer_type, const void *buffer, size_t buffer_len)
{
if( self == NULL )
return SQL_ERROR;
@@ -682,7 +716,7 @@ PRAGMA_GCC46(GCC diagnostic pop)
}
/// Executes the prepared statement.
-int SqlStmt_Execute(struct SqlStmt *self)
+static int SqlStmt_Execute(struct SqlStmt *self)
{
if( self == NULL )
return SQL_ERROR;
@@ -707,7 +741,7 @@ int SqlStmt_Execute(struct SqlStmt *self)
}
/// Returns the number of the AUTO_INCREMENT column of the last INSERT/UPDATE statement.
-uint64 SqlStmt_LastInsertId(struct SqlStmt *self)
+static uint64 SqlStmt_LastInsertId(struct SqlStmt *self)
{
if( self )
return (uint64)mysql_stmt_insert_id(self->stmt);
@@ -716,7 +750,7 @@ uint64 SqlStmt_LastInsertId(struct SqlStmt *self)
}
/// Returns the number of columns in each row of the result.
-size_t SqlStmt_NumColumns(struct SqlStmt *self)
+static size_t SqlStmt_NumColumns(struct SqlStmt *self)
{
if( self )
return (size_t)mysql_stmt_field_count(self->stmt);
@@ -725,7 +759,7 @@ size_t SqlStmt_NumColumns(struct SqlStmt *self)
}
/// Binds the result of a column to a buffer.
-int SqlStmt_BindColumn(struct SqlStmt *self, size_t idx, enum SqlDataType buffer_type, void *buffer, size_t buffer_len, uint32 *out_length, int8 *out_is_null)
+static int SqlStmt_BindColumn(struct SqlStmt *self, size_t idx, enum SqlDataType buffer_type, void *buffer, size_t buffer_len, uint32 *out_length, int8 *out_is_null)
{
if (self == NULL)
return SQL_ERROR;
@@ -767,7 +801,7 @@ int SqlStmt_BindColumn(struct SqlStmt *self, size_t idx, enum SqlDataType buffer
}
/// Returns the number of rows in the result.
-uint64 SqlStmt_NumRows(struct SqlStmt *self)
+static uint64 SqlStmt_NumRows(struct SqlStmt *self)
{
if (self != NULL)
return (uint64)mysql_stmt_num_rows(self->stmt);
@@ -776,7 +810,7 @@ uint64 SqlStmt_NumRows(struct SqlStmt *self)
}
/// Fetches the next row.
-int SqlStmt_NextRow(struct SqlStmt *self)
+static int SqlStmt_NextRow(struct SqlStmt *self)
{
int err;
size_t i;
@@ -844,14 +878,14 @@ int SqlStmt_NextRow(struct SqlStmt *self)
}
/// Frees the result of the statement execution.
-void SqlStmt_FreeResult(struct SqlStmt *self)
+static void SqlStmt_FreeResult(struct SqlStmt *self)
{
if( self )
mysql_stmt_free_result(self->stmt);
}
/// Shows debug information (with statement).
-void SqlStmt_ShowDebug_(struct SqlStmt *self, const char *debug_file, const unsigned long debug_line)
+static void SqlStmt_ShowDebug_(struct SqlStmt *self, const char *debug_file, const unsigned long debug_line)
{
if( self == NULL )
ShowDebug("at %s:%lu - self is NULL\n", debug_file, debug_line);
@@ -862,7 +896,7 @@ void SqlStmt_ShowDebug_(struct SqlStmt *self, const char *debug_file, const unsi
}
/// Frees a SqlStmt returned by SqlStmt_Malloc.
-void SqlStmt_Free(struct SqlStmt *self)
+static void SqlStmt_Free(struct SqlStmt *self)
{
if( self )
{
@@ -881,7 +915,7 @@ void SqlStmt_Free(struct SqlStmt *self)
}
/* receives mysql error codes during runtime (not on first-time-connects) */
-void hercules_mysql_error_handler(unsigned int ecode)
+static void hercules_mysql_error_handler(unsigned int ecode)
{
switch( ecode ) {
case 2003:/* Can't connect to MySQL (this error only happens here when failing to reconnect) */
@@ -904,7 +938,7 @@ void hercules_mysql_error_handler(unsigned int ecode)
*
* @retval false in case of error.
*/
-bool Sql_inter_server_read(const char *filename, bool imported)
+static bool Sql_inter_server_read(const char *filename, bool imported)
{
struct config_t config;
const struct config_setting_t *setting = NULL;
diff --git a/src/common/sql.h b/src/common/sql.h
index 4d9a12cc1..147b56c0c 100644
--- a/src/common/sql.h
+++ b/src/common/sql.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -59,6 +59,8 @@ enum SqlDataType {
SQLDT_UINT,
SQLDT_ULONG,
SQLDT_ULONGLONG,
+ SQLDT_BOOL,
+ SQLDT_TIME,
// floating point
SQLDT_FLOAT,
SQLDT_DOUBLE,
diff --git a/src/common/strlib.c b/src/common/strlib.c
index 75ce2a272..ddb1eb78a 100644
--- a/src/common/strlib.c
+++ b/src/common/strlib.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -32,16 +32,17 @@
#define J_MAX_MALLOC_SIZE 65535
-struct strlib_interface strlib_s;
-struct stringbuf_interface stringbuf_s;
-struct sv_interface sv_s;
+static struct strlib_interface strlib_s;
+static struct stringbuf_interface stringbuf_s;
+static struct sv_interface sv_s;
struct strlib_interface *strlib;
struct stringbuf_interface *StrBuf;
struct sv_interface *sv;
// escapes a string in-place (' -> \' , \ -> \\ , % -> _)
-char* jstrescape (char* pt) {
+static char *jstrescape(char *pt)
+{
//copy from here
char *ptr;
int i = 0, j = 0;
@@ -73,7 +74,7 @@ char* jstrescape (char* pt) {
}
// escapes a string into a provided buffer
-char* jstrescapecpy (char* pt, const char* spt)
+static char *jstrescapecpy(char *pt, const char *spt)
{
//copy from here
//WARNING: Target string pt should be able to hold strlen(spt)*2, as each time
@@ -108,7 +109,7 @@ char* jstrescapecpy (char* pt, const char* spt)
}
// escapes exactly 'size' bytes of a string into a provided buffer
-int jmemescapecpy (char* pt, const char* spt, int size)
+static int jmemescapecpy(char *pt, const char *spt, int size)
{
//copy from here
int i =0, j=0;
@@ -135,7 +136,7 @@ int jmemescapecpy (char* pt, const char* spt, int size)
}
// Function to suppress control characters in a string.
-int strlib_remove_control_chars(char *str)
+static int strlib_remove_control_chars(char *str)
{
int i;
int change = 0;
@@ -152,7 +153,7 @@ int strlib_remove_control_chars(char *str)
// Removes characters identified by ISSPACE from the start and end of the string
// NOTE: make sure the string is not const!!
-char *strlib_trim(char *str)
+static char *strlib_trim(char *str)
{
size_t start;
size_t end;
@@ -180,7 +181,7 @@ char *strlib_trim(char *str)
// Converts one or more consecutive occurrences of the delimiters into a single space
// and removes such occurrences from the beginning and end of string
// NOTE: make sure the string is not const!!
-char *strlib_normalize_name(char *str, const char *delims)
+static char *strlib_normalize_name(char *str, const char *delims)
{
char* in = str;
char* out = str;
@@ -218,7 +219,7 @@ char *strlib_normalize_name(char *str, const char *delims)
//stristr: Case insensitive version of strstr, code taken from
//http://www.daniweb.com/code/snippet313.html, Dave Sinkula
//
-const char *strlib_stristr(const char *haystack, const char *needle)
+static const char *strlib_stristr(const char *haystack, const char *needle)
{
if ( !*needle )
{
@@ -246,7 +247,7 @@ const char *strlib_stristr(const char *haystack, const char *needle)
return 0;
}
-char* strlib_strtok_r(char *s1, const char *s2, char **lasts)
+static char* strlib_strtok_r(char *s1, const char *s2, char **lasts)
{
#ifdef __WIN32
char *ret;
@@ -269,7 +270,7 @@ char* strlib_strtok_r(char *s1, const char *s2, char **lasts)
#endif
}
-size_t strlib_strnlen(const char *string, size_t maxlen)
+static size_t strlib_strnlen(const char *string, size_t maxlen)
{
// TODO: Verify whether this implementation is still necessary for NetBSD 5.x
// and possibly some Solaris versions.
@@ -287,7 +288,7 @@ size_t strlib_strnlen(const char *string, size_t maxlen)
//----------------------------------------------------
// E-mail check: return 0 (not correct) or 1 (valid).
//----------------------------------------------------
-int strlib_e_mail_check(char *email)
+static int strlib_e_mail_check(char *email)
{
char ch;
char* last_arobas;
@@ -324,7 +325,8 @@ int strlib_e_mail_check(char *email)
// Return numerical value of a switch configuration
// on/off, yes/no, true/false, number
//--------------------------------------------------
-int strlib_config_switch(const char *str) {
+static int strlib_config_switch(const char *str)
+{
size_t len = strlen(str);
if ((len == 2 && strcmpi(str, "on") == 0)
|| (len == 3 && strcmpi(str, "yes") == 0)
@@ -344,7 +346,8 @@ int strlib_config_switch(const char *str) {
}
/// strncpy that always null-terminates the string
-char *strlib_safestrncpy(char *dst, const char *src, size_t n)
+/// @remark this function will read at most `n` - 1 bytes from `src` (from 0 to `n` - 2)
+static char *strlib_safestrncpy(char *dst, const char *src, size_t n)
{
if( n > 0 )
{
@@ -365,7 +368,7 @@ char *strlib_safestrncpy(char *dst, const char *src, size_t n)
}
/// doesn't crash on null pointer
-size_t strlib_safestrnlen(const char *string, size_t maxlen)
+static size_t strlib_safestrnlen(const char *string, size_t maxlen)
{
return ( string != NULL ) ? strnlen(string, maxlen) : 0;
}
@@ -379,8 +382,8 @@ size_t strlib_safestrnlen(const char *string, size_t maxlen)
/// @param fmt Format string
/// @param ... Format arguments
/// @return The size of the string or -1 if the buffer is too small
-int strlib_safesnprintf(char *buf, size_t sz, const char *fmt, ...) __attribute__((format(printf, 3, 4)));
-int strlib_safesnprintf(char *buf, size_t sz, const char *fmt, ...)
+static int strlib_safesnprintf(char *buf, size_t sz, const char *fmt, ...) __attribute__((format(printf, 3, 4)));
+static int strlib_safesnprintf(char *buf, size_t sz, const char *fmt, ...)
{
va_list ap;
int ret;
@@ -397,7 +400,7 @@ int strlib_safesnprintf(char *buf, size_t sz, const char *fmt, ...)
/// Returns the line of the target position in the string.
/// Lines start at 1.
-int strlib_strline(const char *str, size_t pos)
+static int strlib_strline(const char *str, size_t pos)
{
const char* target;
int line;
@@ -423,7 +426,7 @@ int strlib_strline(const char *str, size_t pos)
/// @param output Output string
/// @param input Binary input buffer
/// @param count Number of bytes to convert
-bool strlib_bin2hex(char *output, const unsigned char *input, size_t count)
+static bool strlib_bin2hex(char *output, const unsigned char *input, size_t count)
{
char toHex[] = "0123456789abcdef";
size_t i;
@@ -443,7 +446,7 @@ bool strlib_bin2hex(char *output, const unsigned char *input, size_t count)
///
/// @param svstate Parse state
/// @return 1 if a field was parsed, 0 if already done, -1 on error.
-int sv_parse_next(struct s_svstate* svstate)
+static int sv_parse_next(struct s_svstate *svstate)
{
enum {
START_OF_FIELD,
@@ -614,7 +617,8 @@ int sv_parse_next(struct s_svstate* svstate)
/// @param npos Size of the pos array
/// @param opt Options that determine the parsing behavior
/// @return Number of fields found in the string or -1 if an error occurred
-int sv_parse(const char* str, int len, int startoff, char delim, int* out_pos, int npos, enum e_svopt opt) {
+static int sv_parse(const char *str, int len, int startoff, char delim, int *out_pos, int npos, enum e_svopt opt)
+{
struct s_svstate svstate;
int count;
@@ -664,7 +668,8 @@ int sv_parse(const char* str, int len, int startoff, char delim, int* out_pos, i
/// @param nfields Size of the field array
/// @param opt Options that determine the parsing behavior
/// @return Number of fields found in the string or -1 if an error occurred
-int sv_split(char* str, int len, int startoff, char delim, char** out_fields, int nfields, enum e_svopt opt) {
+static int sv_split(char *str, int len, int startoff, char delim, char **out_fields, int nfields, enum e_svopt opt)
+{
int pos[1024];
int i;
int done;
@@ -730,7 +735,8 @@ int sv_split(char* str, int len, int startoff, char delim, char** out_fields, in
/// @param len Length of the source string
/// @param escapes Extra characters to be escaped
/// @return Length of the escaped string
-size_t sv_escape_c(char* out_dest, const char* src, size_t len, const char* escapes) {
+static size_t sv_escape_c(char *out_dest, const char *src, size_t len, const char *escapes)
+{
size_t i;
size_t j;
@@ -798,7 +804,8 @@ size_t sv_escape_c(char* out_dest, const char* src, size_t len, const char* esca
/// @param src Source string
/// @param len Length of the source string
/// @return Length of the escaped string
-size_t sv_unescape_c(char* out_dest, const char* src, size_t len) {
+static size_t sv_unescape_c(char *out_dest, const char *src, size_t len)
+{
static unsigned char low2hex[256] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0x0?
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0x1?
@@ -879,7 +886,8 @@ size_t sv_unescape_c(char* out_dest, const char* src, size_t len) {
}
/// Skips a C escape sequence (starting with '\\').
-const char* skip_escaped_c(const char* p) {
+static const char *skip_escaped_c(const char *p)
+{
if( p && *p == '\\' ) {
++p;
switch( *p ) {
@@ -917,7 +925,8 @@ const char* skip_escaped_c(const char* p) {
/// @param maxcols Maximum number of columns of a valid row
/// @param parseproc User-supplied row processing function
/// @return true on success, false if file could not be opened
-bool sv_readdb(const char* directory, const char* filename, char delim, int mincols, int maxcols, int maxrows, bool (*parseproc)(char* fields[], int columns, int current)) {
+static bool sv_readdb(const char *directory, const char *filename, char delim, int mincols, int maxcols, int maxrows, bool (*parseproc)(char *fields[], int columns, int current))
+{
FILE* fp;
int lines = 0;
int entries = 0;
@@ -989,7 +998,8 @@ bool sv_readdb(const char* directory, const char* filename, char delim, int minc
// @author MouseJstr (original)
/// Allocates a StringBuf
-StringBuf* StringBuf_Malloc(void) {
+static StringBuf *StringBuf_Malloc(void)
+{
StringBuf* self;
CREATE(self, StringBuf, 1);
StrBuf->Init(self);
@@ -997,14 +1007,16 @@ StringBuf* StringBuf_Malloc(void) {
}
/// Initializes a previously allocated StringBuf
-void StringBuf_Init(StringBuf* self) {
+static void StringBuf_Init(StringBuf *self)
+{
self->max_ = 1024;
self->ptr_ = self->buf_ = (char*)aMalloc(self->max_ + 1);
}
/// Appends the result of printf to the StringBuf
-int StringBuf_Printf(StringBuf *self, const char *fmt, ...) __attribute__((format(printf, 2, 3)));
-int StringBuf_Printf(StringBuf *self, const char *fmt, ...) {
+static int StringBuf_Printf(StringBuf *self, const char *fmt, ...) __attribute__((format(printf, 2, 3)));
+static int StringBuf_Printf(StringBuf *self, const char *fmt, ...)
+{
int len;
va_list ap;
@@ -1016,7 +1028,8 @@ int StringBuf_Printf(StringBuf *self, const char *fmt, ...) {
}
/// Appends the result of vprintf to the StringBuf
-int StringBuf_Vprintf(StringBuf* self, const char* fmt, va_list ap) {
+static int StringBuf_Vprintf(StringBuf *self, const char *fmt, va_list ap)
+{
for(;;) {
va_list apcopy;
int n, off;
@@ -1039,7 +1052,8 @@ int StringBuf_Vprintf(StringBuf* self, const char* fmt, va_list ap) {
}
/// Appends the contents of another StringBuf to the StringBuf
-int StringBuf_Append(StringBuf* self, const StringBuf* sbuf) {
+static int StringBuf_Append(StringBuf *self, const StringBuf *sbuf)
+{
size_t available = self->max_ - (self->ptr_ - self->buf_);
size_t needed = sbuf->ptr_ - sbuf->buf_;
@@ -1056,7 +1070,8 @@ int StringBuf_Append(StringBuf* self, const StringBuf* sbuf) {
}
// Appends str to the StringBuf
-int StringBuf_AppendStr(StringBuf* self, const char* str) {
+static int StringBuf_AppendStr(StringBuf *self, const char *str)
+{
size_t available = self->max_ - (self->ptr_ - self->buf_);
size_t needed = strlen(str);
@@ -1074,34 +1089,41 @@ int StringBuf_AppendStr(StringBuf* self, const char* str) {
}
// Returns the length of the data in the Stringbuf
-int StringBuf_Length(StringBuf* self) {
+static int StringBuf_Length(StringBuf *self)
+{
return (int)(self->ptr_ - self->buf_);
}
/// Returns the data in the StringBuf
-char* StringBuf_Value(StringBuf* self) {
+static char *StringBuf_Value(StringBuf *self)
+{
*self->ptr_ = '\0';
return self->buf_;
}
/// Clears the contents of the StringBuf
-void StringBuf_Clear(StringBuf* self) {
+static void StringBuf_Clear(StringBuf *self)
+{
self->ptr_ = self->buf_;
}
/// Destroys the StringBuf
-void StringBuf_Destroy(StringBuf* self) {
+static void StringBuf_Destroy(StringBuf *self)
+{
aFree(self->buf_);
self->ptr_ = self->buf_ = 0;
self->max_ = 0;
}
// Frees a StringBuf returned by StringBuf_Malloc
-void StringBuf_Free(StringBuf* self) {
+static void StringBuf_Free(StringBuf *self)
+{
StrBuf->Destroy(self);
aFree(self);
}
-void strlib_defaults(void) {
+
+void strlib_defaults(void)
+{
/* connect */
strlib = &strlib_s;
StrBuf = &stringbuf_s;
@@ -1115,17 +1137,8 @@ void strlib_defaults(void) {
strlib->normalize_name_ = strlib_normalize_name;
strlib->stristr_ = strlib_stristr;
-#if !(defined(WIN32) && defined(_MSC_VER)) && !defined(HAVE_STRNLEN)
strlib->strnlen_ = strlib_strnlen;
-#else
- strlib->strnlen_ = NULL;
-#endif
-
-#ifdef WIN32
strlib->strtok_r_ = strlib_strtok_r;
-#else
- strlib->strtok_r_ = NULL;
-#endif
strlib->e_mail_check_ = strlib_e_mail_check;
strlib->config_switch_ = strlib_config_switch;
diff --git a/src/common/strlib.h b/src/common/strlib.h
index fa7d577eb..006bbd14b 100644
--- a/src/common/strlib.h
+++ b/src/common/strlib.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -49,6 +49,27 @@
#define safesnprintf(buf,sz,fmt,...) (strlib->safesnprintf_((buf),(sz),(fmt),##__VA_ARGS__))
#define strline(str,pos) (strlib->strline_((str),(pos)))
#define bin2hex(output,input,count) (strlib->bin2hex_((output),(input),(count)))
+#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L)
+#if defined(__GNUC__) && !defined(__clang__) && GCC_VERSION < 40900
+// _Generic is only supported starting with GCC 4.9
+#else
+#ifdef strchr
+#undef strchr
+#endif // strchr
+#define strchr(src, chr) _Generic((src), \
+ const char * : ((const char *)(strchr)((src), (chr))), \
+ char * : ((strchr)((src), (chr))) \
+ )
+#define strrchr(src, chr) _Generic((src), \
+ const char * : ((const char *)(strrchr)((src), (chr))), \
+ char * : ((strrchr)((src), (chr))) \
+ )
+#define strstr(haystack, needle) _Generic((haystack), \
+ const char * : ((const char *)(strstr)((haystack), (needle))), \
+ char * : ((strstr)((haystack), (needle))) \
+ )
+#endif
+#endif
/// Bitfield determining the behavior of sv_parse and sv_split.
typedef enum e_svopt {
diff --git a/src/common/sysinfo.c b/src/common/sysinfo.c
index 3c7e25a0c..b8cb2a90a 100644
--- a/src/common/sysinfo.c
+++ b/src/common/sysinfo.c
@@ -59,8 +59,8 @@ struct sysinfo_private {
};
/// sysinfo.c interface source
-struct sysinfo_interface sysinfo_s;
-struct sysinfo_private sysinfo_p;
+static struct sysinfo_interface sysinfo_s;
+static struct sysinfo_private sysinfo_p;
struct sysinfo_interface *sysinfo;
@@ -238,7 +238,7 @@ enum windows_ver_suite {
* @retval true if a revision was correctly detected.
* @retval false if no revision was detected. out is set to NULL in this case.
*/
-bool sysinfo_svn_get_revision(char **out)
+static bool sysinfo_svn_get_revision(char **out)
{
// Only include SVN support if detected it, or we're on MSVC
#if !defined(SYSINFO_VCSTYPE) || SYSINFO_VCSTYPE == VCSTYPE_SVN || SYSINFO_VCSTYPE == VCSTYPE_UNKNOWN
@@ -310,7 +310,7 @@ bool sysinfo_svn_get_revision(char **out)
* @retval true if a revision was correctly detected.
* @retval false if no revision was detected. out is set to NULL in this case.
*/
-bool sysinfo_git_get_revision(char **out)
+static bool sysinfo_git_get_revision(char **out)
{
// Only include Git support if we detected it, or we're on MSVC
#if !defined(SYSINFO_VCSTYPE) || SYSINFO_VCSTYPE == VCSTYPE_GIT || SYSINFO_VCSTYPE == VCSTYPE_UNKNOWN
@@ -321,7 +321,7 @@ bool sysinfo_git_get_revision(char **out)
while (*ref) {
FILE *fp;
- snprintf(filepath, sizeof(filepath), ".git/%s", ref);
+ safesnprintf(filepath, sizeof(filepath), ".git/%s", ref);
if ((fp = fopen(filepath, "r")) != NULL) {
if (fgets(line, sizeof(line)-1, fp) == NULL) {
fclose(fp);
@@ -359,7 +359,7 @@ typedef BOOL (WINAPI *PGPI)(DWORD, DWORD, DWORD, DWORD, PDWORD);
*
* Once retrieved, the version string is stored into sysinfo->p->osversion.
*/
-void sysinfo_osversion_retrieve(void)
+static void sysinfo_osversion_retrieve(void)
{
OSVERSIONINFOEX osvi;
StringBuf buf;
@@ -611,7 +611,7 @@ typedef void (WINAPI *PGNSI)(LPSYSTEM_INFO);
* System info is not stored anywhere after retrieval
* @see http://msdn.microsoft.com/en-us/library/windows/desktop/ms724958(v=vs.85).aspx
**/
-void sysinfo_systeminfo_retrieve(LPSYSTEM_INFO info)
+static void sysinfo_systeminfo_retrieve(LPSYSTEM_INFO info)
{
PGNSI pGNSI;
@@ -629,7 +629,7 @@ void sysinfo_systeminfo_retrieve(LPSYSTEM_INFO info)
* Returns number of bytes in a memory page
* Only needed when compiling with MSVC
**/
-long sysinfo_getpagesize(void)
+static long sysinfo_getpagesize(void)
{
SYSTEM_INFO si;
ZeroMemory(&si, sizeof(SYSTEM_INFO));
@@ -644,7 +644,7 @@ long sysinfo_getpagesize(void)
* Once retrieved, the name is stored into sysinfo->p->cpu and the
* number of cores in sysinfo->p->cpucores.
*/
-void sysinfo_cpu_retrieve(void)
+static void sysinfo_cpu_retrieve(void)
{
StringBuf buf;
SYSTEM_INFO si;
@@ -681,7 +681,7 @@ void sysinfo_cpu_retrieve(void)
*
* Once retrieved, the name is stored into sysinfo->p->arch.
*/
-void sysinfo_arch_retrieve(void)
+static void sysinfo_arch_retrieve(void)
{
SYSTEM_INFO si;
ZeroMemory(&si, sizeof(SYSTEM_INFO));
@@ -710,7 +710,7 @@ void sysinfo_arch_retrieve(void)
*
* Once retrieved, the value is stored in sysinfo->p->vcsrevision_src.
*/
-void sysinfo_vcsrevision_src_retrieve(void)
+static void sysinfo_vcsrevision_src_retrieve(void)
{
if (sysinfo->p->vcsrevision_src != NULL) {
aFree(sysinfo->p->vcsrevision_src);
@@ -735,7 +735,7 @@ void sysinfo_vcsrevision_src_retrieve(void)
*
* Once retrieved, the value is stored in sysinfo->p->vcstype_name.
*/
-void sysinfo_vcstype_name_retrieve(void)
+static void sysinfo_vcstype_name_retrieve(void)
{
if (sysinfo->p->vcstype_name != NULL) {
aFree(sysinfo->p->vcstype_name);
@@ -765,7 +765,7 @@ void sysinfo_vcstype_name_retrieve(void)
*
* Output example: "Linux", "Darwin", "Windows", etc.
*/
-const char *sysinfo_platform(void)
+static const char *sysinfo_platform(void)
{
return sysinfo->p->platform;
}
@@ -784,7 +784,7 @@ const char *sysinfo_platform(void)
* Output example: "Windows 2008 Small Business Server", "OS X 10.8 Mountain Lion",
* "Gentoo Base System Release 2.2", "Debian GNU/Linux 6.0.6 (squeeze)", etc.
*/
-const char *sysinfo_osversion(void)
+static const char *sysinfo_osversion(void)
{
return sysinfo->p->osversion;
}
@@ -804,7 +804,7 @@ const char *sysinfo_osversion(void)
* "Intel(R) Xeon(R) CPU E5-1650 0 @ 3.20GHz", "Intel Core i7",
* "x86 CPU, Family 6, Model 54, Stepping 1", etc.
*/
-const char *sysinfo_cpu(void)
+static const char *sysinfo_cpu(void)
{
return sysinfo->p->cpu;
}
@@ -818,7 +818,7 @@ const char *sysinfo_cpu(void)
*
* @return the number of CPU cores.
*/
-int sysinfo_cpucores(void)
+static int sysinfo_cpucores(void)
{
return sysinfo->p->cpucores;
}
@@ -836,7 +836,7 @@ int sysinfo_cpucores(void)
*
* Output example: "x86", "x86_64", "IA-64", "ARM", etc.
*/
-const char *sysinfo_arch(void)
+static const char *sysinfo_arch(void)
{
return sysinfo->p->arch;
}
@@ -847,7 +847,7 @@ const char *sysinfo_arch(void)
* @retval true if this is a 64 bit build.
* @retval false if this isn't a 64 bit build (i.e. it is a 32 bit build).
*/
-bool sysinfo_is64bit(void)
+static bool sysinfo_is64bit(void)
{
#ifdef _LP64
return true;
@@ -866,7 +866,7 @@ bool sysinfo_is64bit(void)
* Output example: "Microsoft Visual C++ 2012 (v170050727)",
* "Clang v5.0.0", "MinGW32 v3.20", "GCC v4.7.3", etc.
*/
-const char *sysinfo_compiler(void)
+static const char *sysinfo_compiler(void)
{
return sysinfo->p->compiler;
}
@@ -882,7 +882,7 @@ const char *sysinfo_compiler(void)
*
* Output example: "-ggdb -O2 -flto -pipe -ffast-math ..."
*/
-const char *sysinfo_cflags(void)
+static const char *sysinfo_cflags(void)
{
return sysinfo->p->cflags;
}
@@ -898,7 +898,7 @@ const char *sysinfo_cflags(void)
*
* @see VCSTYPE_NONE, VCSTYPE_GIT, VCSTYPE_SVN, VCSTYPE_UNKNOWN
*/
-int sysinfo_vcstypeid(void)
+static int sysinfo_vcstypeid(void)
{
return sysinfo->p->vcstype;
}
@@ -916,7 +916,7 @@ int sysinfo_vcstypeid(void)
*
* Output example: "Git", "SVN", "Exported"
*/
-const char *sysinfo_vcstype(void)
+static const char *sysinfo_vcstype(void)
{
return sysinfo->p->vcstype_name;
}
@@ -935,7 +935,7 @@ const char *sysinfo_vcstype(void)
*
* Output example: Git: "9128feccf3bddda94a7f8a170305565416815b40", SVN: "17546"
*/
-const char *sysinfo_vcsrevision_src(void)
+static const char *sysinfo_vcsrevision_src(void)
{
return sysinfo->p->vcsrevision_src;
}
@@ -952,7 +952,7 @@ const char *sysinfo_vcsrevision_src(void)
*
* Output example: Git: "9128feccf3bddda94a7f8a170305565416815b40", SVN: "17546"
*/
-const char *sysinfo_vcsrevision_scripts(void)
+static const char *sysinfo_vcsrevision_scripts(void)
{
return sysinfo->p->vcsrevision_scripts;
}
@@ -961,7 +961,7 @@ const char *sysinfo_vcsrevision_scripts(void)
* Reloads the run-time (scripts) VCS revision information. To be used during
* script reloads to refresh the cached version.
*/
-void sysinfo_vcsrevision_reload(void)
+static void sysinfo_vcsrevision_reload(void)
{
if (sysinfo->p->vcsrevision_scripts != NULL) {
aFree(sysinfo->p->vcsrevision_scripts);
@@ -984,7 +984,7 @@ void sysinfo_vcsrevision_reload(void)
* @retval false if the current process is running as regular user, or
* in any case under Windows.
*/
-bool sysinfo_is_superuser(void)
+static bool sysinfo_is_superuser(void)
{
#ifndef _WIN32
if (geteuid() == 0)
@@ -996,7 +996,7 @@ bool sysinfo_is_superuser(void)
/**
* Interface runtime initialization.
*/
-void sysinfo_init(void)
+static void sysinfo_init(void)
{
sysinfo->p->compiler = SYSINFO_COMPILER;
#ifdef WIN32
@@ -1023,7 +1023,7 @@ void sysinfo_init(void)
/**
* Interface shutdown cleanup.
*/
-void sysinfo_final(void)
+static void sysinfo_final(void)
{
#ifdef WIN32
// Only need to be free'd in win32, they're #defined elsewhere
diff --git a/src/common/thread.c b/src/common/thread.c
index aaafab943..605153011 100644
--- a/src/common/thread.c
+++ b/src/common/thread.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) rAthena Project (www.rathena.org)
*
* Hercules is free software: you can redistribute it and/or modify
@@ -49,7 +49,7 @@
* @author Florian Wilkemeyer <fw@f-ws.de>
*/
-struct thread_interface thread_s;
+static struct thread_interface thread_s;
struct thread_interface *thread;
/// The maximum amount of threads.
@@ -70,7 +70,7 @@ struct thread_handle {
};
#ifdef HAS_TLS
-__thread int g_rathread_ID = -1;
+static __thread int g_rathread_ID = -1;
#endif
// Subystem Code
@@ -78,7 +78,7 @@ __thread int g_rathread_ID = -1;
static struct thread_handle l_threads[THREADS_MAX];
/// @copydoc thread_interface::init()
-void thread_init(void)
+static void thread_init(void)
{
register int i;
memset(&l_threads, 0x00, THREADS_MAX * sizeof(struct thread_handle));
@@ -97,7 +97,7 @@ void thread_init(void)
}
/// @copydoc thread_interface::final()
-void thread_final(void)
+static void thread_final(void)
{
register int i;
@@ -125,7 +125,7 @@ static void thread_terminated(struct thread_handle *handle)
}
#ifdef WIN32
-DWORD WINAPI thread_main_redirector(LPVOID p)
+static DWORD WINAPI thread_main_redirector(LPVOID p)
{
#else
static void *thread_main_redirector(void *p)
@@ -170,13 +170,13 @@ static void *thread_main_redirector(void *p)
// API Level
/// @copydoc thread_interface::create()
-struct thread_handle *thread_create(threadFunc entry_point, void *param)
+static struct thread_handle *thread_create(threadFunc entry_point, void *param)
{
return thread->create_opt(entry_point, param, (1<<23) /*8MB*/, THREADPRIO_NORMAL);
}
/// @copydoc thread_interface::create_opt()
-struct thread_handle *thread_create_opt(threadFunc entry_point, void *param, size_t stack_size, enum thread_priority prio)
+static struct thread_handle *thread_create_opt(threadFunc entry_point, void *param, size_t stack_size, enum thread_priority prio)
{
#ifndef WIN32
pthread_attr_t attr;
@@ -226,7 +226,7 @@ struct thread_handle *thread_create_opt(threadFunc entry_point, void *param, siz
}
/// @copydoc thread_interface::destroy()
-void thread_destroy(struct thread_handle *handle)
+static void thread_destroy(struct thread_handle *handle)
{
#ifdef WIN32
if (TerminateThread(handle->hThread, 0) != FALSE) {
@@ -244,7 +244,7 @@ void thread_destroy(struct thread_handle *handle)
#endif
}
-struct thread_handle *thread_self(void)
+static struct thread_handle *thread_self(void)
{
#ifdef HAS_TLS
struct thread_handle *handle = &l_threads[g_rathread_ID];
@@ -273,7 +273,7 @@ struct thread_handle *thread_self(void)
}
/// @copydoc thread_interface::get_tid()
-int thread_get_tid(void)
+static int thread_get_tid(void)
{
#if defined(HAS_TLS)
return g_rathread_ID;
@@ -285,7 +285,7 @@ int thread_get_tid(void)
}
/// @copydoc thread_interface::wait()
-bool thread_wait(struct thread_handle *handle, void **out_exit_code)
+static bool thread_wait(struct thread_handle *handle, void **out_exit_code)
{
// Hint:
// no thread data cleanup routine call here!
@@ -302,20 +302,21 @@ bool thread_wait(struct thread_handle *handle, void **out_exit_code)
}
/// @copydoc thread_interface::prio_set()
-void thread_prio_set(struct thread_handle *handle, enum thread_priority prio)
+static void thread_prio_set(struct thread_handle *handle, enum thread_priority prio)
{
handle->prio = THREADPRIO_NORMAL;
//@TODO
}
/// @copydoc thread_interface::prio_get()
-enum thread_priority thread_prio_get(struct thread_handle *handle)
+static enum thread_priority thread_prio_get(struct thread_handle *handle)
{
return handle->prio;
}
/// @copydoc thread_interface::yield()
-void thread_yield(void) {
+static void thread_yield(void)
+{
#ifdef WIN32
SwitchToThread();
#else
diff --git a/src/common/thread.h b/src/common/thread.h
index c668afbb4..3f1b8d022 100644
--- a/src/common/thread.h
+++ b/src/common/thread.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) rAthena Project (www.rathena.org)
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/common/timer.c b/src/common/timer.c
index 4f2b86a32..d5f9c83d1 100644
--- a/src/common/timer.c
+++ b/src/common/timer.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -40,7 +40,7 @@
#include <stdlib.h>
#include <string.h>
-struct timer_interface timer_s;
+static struct timer_interface timer_s;
struct timer_interface *timer;
// If the server can't handle processing thousands of monsters
@@ -54,7 +54,7 @@ static int timer_data_max = 0;
static int timer_data_num = 1;
// free timers (array)
-static int* free_timer_list = NULL;
+static int *free_timer_list = NULL;
static int free_timer_list_max = 0;
static int free_timer_list_pos = 0;
@@ -72,20 +72,21 @@ static BHEAP_VAR(int, timer_heap);
// server startup time
-time_t start_time;
+static time_t start_time;
/*----------------------------
* Timer debugging
*----------------------------*/
-struct timer_func_list {
+static struct timer_func_list {
struct timer_func_list* next;
TimerFunc func;
char* name;
} *tfl_root = NULL;
/// Sets the name of a timer function.
-int timer_add_func_list(TimerFunc func, char* name) {
+static int timer_add_func_list(TimerFunc func, char *name)
+{
struct timer_func_list* tfl;
nullpo_ret(func);
@@ -108,7 +109,7 @@ int timer_add_func_list(TimerFunc func, char* name) {
}
/// Returns the name of the timer function.
-char* search_timer_func_list(TimerFunc func)
+static char *search_timer_func_list(TimerFunc func)
{
struct timer_func_list* tfl;
@@ -124,9 +125,11 @@ char* search_timer_func_list(TimerFunc func)
*----------------------------*/
#if defined(ENABLE_RDTSC)
-static uint64 RDTSC_BEGINTICK = 0, RDTSC_CLOCK = 0;
+static uint64 RDTSC_BEGINTICK = 0;
+static uint64 RDTSC_CLOCK = 0;
-static __inline uint64 rdtsc_(void) {
+static __inline uint64 rdtsc_(void)
+{
register union {
uint64 qw;
uint32 dw[2];
@@ -137,7 +140,8 @@ static __inline uint64 rdtsc_(void) {
return t.qw;
}
-static void rdtsc_calibrate(void){
+static void rdtsc_calibrate(void)
+{
uint64 t1, t2;
int32 i;
@@ -164,7 +168,8 @@ static void rdtsc_calibrate(void){
* platform-abstracted tick retrieval
* @return server's current tick
*/
-static int64 sys_tick(void) {
+static int64 sys_tick(void)
+{
#if defined(WIN32)
// Windows: GetTickCount/GetTickCount64: Return the number of
// milliseconds that have elapsed since the system was started.
@@ -226,25 +231,28 @@ static int64 sys_tick(void) {
static int64 gettick_cache;
static int gettick_count = 1;
-int64 timer_gettick_nocache(void) {
+static int64 timer_gettick_nocache(void)
+{
gettick_count = TICK_CACHE;
gettick_cache = sys_tick();
return gettick_cache;
}
-int64 timer_gettick(void) {
+static int64 timer_gettick(void)
+{
return ( --gettick_count == 0 ) ? gettick_nocache() : gettick_cache;
}
//////////////////////////////
#else
//////////////////////////////
// tick doesn't get cached
-int64 timer_gettick_nocache(void)
+static int64 timer_gettick_nocache(void)
{
return sys_tick();
}
-int64 timer_gettick(void) {
+static int64 timer_gettick(void)
+{
return sys_tick();
}
//////////////////////////////////////////////////////////////////////////
@@ -256,7 +264,8 @@ int64 timer_gettick(void) {
*--------------------------------------*/
/// Adds a timer to the timer_heap
-static void push_timer_heap(int tid) {
+static void push_timer_heap(int tid)
+{
BHEAP_ENSURE(timer_heap, 1, 256);
BHEAP_PUSH(timer_heap, tid, DIFFTICK_MINTOPCMP, swap);
}
@@ -266,7 +275,8 @@ static void push_timer_heap(int tid) {
*--------------------------*/
/// Returns a free timer id.
-static int acquire_timer(void) {
+static int acquire_timer(void)
+{
int tid;
// select a free timer
@@ -299,7 +309,8 @@ static int acquire_timer(void) {
/// Starts a new timer that is deleted once it expires (single-use).
/// Returns the timer's id.
-int timer_add(int64 tick, TimerFunc func, int id, intptr_t data) {
+static int timer_add(int64 tick, TimerFunc func, int id, intptr_t data)
+{
int tid;
nullpo_retr(INVALID_TIMER, func);
@@ -328,7 +339,7 @@ int timer_add(int64 tick, TimerFunc func, int id, intptr_t data) {
/// Starts a new timer that automatically restarts itself (infinite loop until manually removed).
/// Returns the timer's id, or INVALID_TIMER if it fails.
-int timer_add_interval(int64 tick, TimerFunc func, int id, intptr_t data, int interval)
+static int timer_add_interval(int64 tick, TimerFunc func, int id, intptr_t data, int interval)
{
int tid;
@@ -364,7 +375,8 @@ int timer_add_interval(int64 tick, TimerFunc func, int id, intptr_t data, int in
}
/// Retrieves internal timer data
-const struct TimerData* timer_get(int tid) {
+static const struct TimerData *timer_get(int tid)
+{
Assert_retr(NULL, tid > 0);
return ( tid >= 0 && tid < timer_data_num ) ? &timer_data[tid] : NULL;
}
@@ -372,7 +384,7 @@ const struct TimerData* timer_get(int tid) {
/// Marks a timer specified by 'id' for immediate deletion once it expires.
/// Param 'func' is used for debug/verification purposes.
/// Returns 0 on success, < 0 on failure.
-int timer_do_delete(int tid, TimerFunc func)
+static int timer_do_delete(int tid, TimerFunc func)
{
nullpo_ret(func);
@@ -402,7 +414,8 @@ int timer_do_delete(int tid, TimerFunc func)
/// Adjusts a timer's expiration time.
/// Returns the new tick value, or -1 if it fails.
-int64 timer_addtick(int tid, int64 tick) {
+static int64 timer_addtick(int tid, int64 tick)
+{
if (tid < 1 || tid >= timer_data_num) {
ShowError("timer_addtick error : no such timer [%d]\n", tid);
Assert_retr(-1, 0);
@@ -419,7 +432,7 @@ int64 timer_addtick(int tid, int64 tick) {
* @return The new tick value.
* @retval -1 in case of failure.
*/
-int64 timer_settick(int tid, int64 tick)
+static int64 timer_settick(int tid, int64 tick)
{
int i;
@@ -461,7 +474,7 @@ int64 timer_settick(int tid, int64 tick)
* @param tick The current tick.
* @return The value of the smallest non-expired timer (or 1 second if there aren't any).
*/
-int do_timer(int64 tick)
+static int do_timer(int64 tick)
{
int64 diff = TIMER_MAX_INTERVAL; // return value
@@ -515,11 +528,12 @@ int do_timer(int64 tick)
return (int)cap_value(diff, TIMER_MIN_INTERVAL, TIMER_MAX_INTERVAL);
}
-unsigned long timer_get_uptime(void) {
+static unsigned long timer_get_uptime(void)
+{
return (unsigned long)difftime(time(NULL), start_time);
}
-void timer_init(void)
+static void timer_init(void)
{
#if defined(ENABLE_RDTSC)
rdtsc_calibrate();
@@ -528,7 +542,8 @@ void timer_init(void)
time(&start_time);
}
-void timer_final(void) {
+static void timer_final(void)
+{
struct timer_func_list *tfl;
struct timer_func_list *next;
@@ -542,12 +557,14 @@ void timer_final(void) {
BHEAP_CLEAR(timer_heap);
if (free_timer_list) aFree(free_timer_list);
}
+
/*=====================================
-* Default Functions : timer.h
-* Generated by HerculesInterfaceMaker
-* created by Susu
-*-------------------------------------*/
-void timer_defaults(void) {
+ * Default Functions : timer.h
+ * Generated by HerculesInterfaceMaker
+ * created by Susu
+ *-------------------------------------*/
+void timer_defaults(void)
+{
timer = &timer_s;
/* funcs */
diff --git a/src/common/timer.h b/src/common/timer.h
index 88c891dff..85edd611b 100644
--- a/src/common/timer.h
+++ b/src/common/timer.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/common/utils.c b/src/common/utils.c
index bcfc153e3..d4c838b56 100644
--- a/src/common/utils.c
+++ b/src/common/utils.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -45,11 +45,11 @@
#include <stdlib.h>
#include <sys/stat.h> // cache purposes [Ind/Hercules]
-struct HCache_interface HCache_s;
+static struct HCache_interface HCache_s;
struct HCache_interface *HCache;
/// Dumps given buffer into file pointed to by a handle.
-void WriteDump(FILE* fp, const void* buffer, size_t length)
+void WriteDump(FILE *fp, const void *buffer, size_t length)
{
size_t i;
char hex[48+1], ascii[16+1];
@@ -109,7 +109,7 @@ void ShowDump(const void *buffer, size_t length)
#ifdef WIN32
-static char* checkpath(char *path, const char *srcpath)
+static char *checkpath(char *path, const char *srcpath)
{
// just make sure the char*path is not const
char *p = path;
@@ -128,7 +128,7 @@ static char* checkpath(char *path, const char *srcpath)
return path;
}
-void findfile(const char *p, const char *pat, void (func)(const char*))
+void findfile(const char *p, const char *pat, void (func)(const char *))
{
WIN32_FIND_DATAA FindFileData;
HANDLE hFind;
@@ -171,7 +171,7 @@ void findfile(const char *p, const char *pat, void (func)(const char*))
#define MAX_DIR_PATH 2048
-static char* checkpath(char *path, const char*srcpath)
+static char *checkpath(char *path, const char *srcpath)
{
// just make sure the char*path is not const
char *p=path;
@@ -190,7 +190,7 @@ static char* checkpath(char *path, const char*srcpath)
return path;
}
-void findfile(const char *p, const char *pat, void (func)(const char*))
+void findfile(const char *p, const char *pat, void (func)(const char *))
{
DIR* dir; ///< pointer to the scanned directory.
struct dirent* entry; ///< pointer to one directory entry.
@@ -216,7 +216,7 @@ void findfile(const char *p, const char *pat, void (func)(const char*))
if (strcmp(entry->d_name, "..") == 0)
continue;
- sprintf(tmppath,"%s%c%s",path, PATHSEP, entry->d_name);
+ safesnprintf(tmppath, sizeof(tmppath), "%s%c%s", path, PATHSEP, entry->d_name);
// check if the pattern matches.
if (strstr(entry->d_name, pattern)) {
@@ -238,7 +238,7 @@ void findfile(const char *p, const char *pat, void (func)(const char*))
}
#endif
-bool exists(const char* filename)
+bool exists(const char *filename)
{
return !access(filename, F_OK);
}
@@ -309,14 +309,14 @@ int32 MakeLongLE(int32 val)
}
// Reads an uint16 in little-endian from the buffer
-uint16 GetUShort(const unsigned char* buf)
+uint16 GetUShort(const unsigned char *buf)
{
return ( ((uint16)(buf[0])) )
| ( ((uint16)(buf[1])) << 0x08 );
}
// Reads an uint32 in little-endian from the buffer
-uint32 GetULong(const unsigned char* buf)
+uint32 GetULong(const unsigned char *buf)
{
return ( ((uint32)(buf[0])) )
| ( ((uint32)(buf[1])) << 0x08 )
@@ -325,13 +325,13 @@ uint32 GetULong(const unsigned char* buf)
}
// Reads an int32 in little-endian from the buffer
-int32 GetLong(const unsigned char* buf)
+int32 GetLong(const unsigned char *buf)
{
return (int32)GetULong(buf);
}
// Reads a float (32 bits) from the buffer
-float GetFloat(const unsigned char* buf)
+float GetFloat(const unsigned char *buf)
{
uint32 val = GetULong(buf);
return *((float*)(void*)&val);
@@ -359,6 +359,28 @@ unsigned int get_percentage(const unsigned int A, const unsigned int B)
return (unsigned int)floor(result);
}
+/// calculates the value of A / B, in percent (rounded down)
+uint64 get_percentage64(const uint64 A, const uint64 B)
+{
+ double result;
+
+ if( B == 0 )
+ {
+ ShowError("get_percentage(): division by zero! (A=%"PRIu64",B=%"PRIu64")\n", A, B);
+ return ~0U;
+ }
+
+ result = 100 * ((double)A / (double)B);
+
+ if( result > UINT_MAX )
+ {
+ ShowError("get_percentage(): result percentage too high! (A=%"PRIu64",B=%"PRIu64",result=%g)\n", A, B, result);
+ return UINT_MAX;
+ }
+
+ return (uint64)floor(result);
+}
+
/**
* Applies a percentual rate modifier.
*
@@ -404,7 +426,7 @@ int apply_percentrate(int value, int rate, int maxrate)
//-----------------------------------------------------
// custom timestamp formatting (from eApp)
//-----------------------------------------------------
-const char* timestamp2string(char* str, size_t size, time_t timestamp, const char* format)
+const char *timestamp2string(char *str, size_t size, time_t timestamp, const char *format)
{
size_t len;
nullpo_retr(NULL, str);
@@ -414,7 +436,7 @@ const char* timestamp2string(char* str, size_t size, time_t timestamp, const cha
}
/* [Ind/Hercules] Caching */
-bool HCache_check(const char *file)
+static bool HCache_check(const char *file)
{
struct stat bufa, bufb;
FILE *first, *second;
@@ -465,7 +487,7 @@ bool HCache_check(const char *file)
return true;
}
-FILE *HCache_open(const char *file, const char *opt)
+static FILE *HCache_open(const char *file, const char *opt)
{
FILE *first;
char s_path[255];
@@ -498,7 +520,7 @@ FILE *HCache_open(const char *file, const char *opt)
return first;
}
-void HCache_init(void)
+static void HCache_init(void)
{
struct stat buf;
if (stat(SERVER_NAME, &buf) != 0) {
diff --git a/src/common/utils.h b/src/common/utils.h
index 9d3c323ef..f564dcf29 100644
--- a/src/common/utils.h
+++ b/src/common/utils.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -44,6 +44,7 @@ bool exists(const char* filename);
/// calculates the value of A / B, in percent (rounded down)
unsigned int get_percentage(const unsigned int A, const unsigned int B);
+uint64 get_percentage64(const uint64 A, const uint64 B);
int64 apply_percentrate64(int64 value, int rate, int maxrate);
int apply_percentrate(int value, int rate, int maxrate);
diff --git a/src/common/winapi.h b/src/common/winapi.h
index b410e00cd..5dc46d615 100644
--- a/src/common/winapi.h
+++ b/src/common/winapi.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/config/classes/general.h b/src/config/classes/general.h
index 330e6437e..ad42fefb4 100644
--- a/src/config/classes/general.h
+++ b/src/config/classes/general.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/config/const.h b/src/config/const.h
index 5c6b451db..4767b5721 100644
--- a/src/config/const.h
+++ b/src/config/const.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -114,11 +114,6 @@
} while(0)
#endif
-/* console_input doesn't go well with minicore */
-#ifdef MINICORE
- #undef CONSOLE_INPUT
-#endif
-
/**
* End of File
**/
diff --git a/src/config/core.h b/src/config/core.h
index bdc7f3eee..a22d47324 100644
--- a/src/config/core.h
+++ b/src/config/core.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -58,10 +58,6 @@
/// Maximum number of characters 'CONSOLE_INPUT' will support per line.
#define MAX_CONSOLE_INPUT 150
-/// Uncomment to disable Hercules' anonymous stat report
-/// We kindly ask you to consider keeping it enabled, it helps us improve Hercules.
-//#define STATS_OPT_OUT
-
/// Uncomment to enable the Cell Stack Limit mod.
/// It's only config is the battle_config custom_cell_stack_limit.
/// Only chars affected are those defined in BL_CHAR
diff --git a/src/config/renewal.h b/src/config/renewal.h
index 2b5a043d4..6c45abc0e 100644
--- a/src/config/renewal.h
+++ b/src/config/renewal.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/config/secure.h b/src/config/secure.h
index 3d111be69..f262852e4 100644
--- a/src/config/secure.h
+++ b/src/config/secure.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/login/HPMlogin.c b/src/login/HPMlogin.c
index b35ac13cb..304db5501 100644
--- a/src/login/HPMlogin.c
+++ b/src/login/HPMlogin.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2014-2015 Hercules Dev Team
+ * Copyright (C) 2014-2018 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -25,9 +25,13 @@
#include "common/cbasetypes.h"
#include "login/account.h"
+#include "login/ipban.h"
#include "login/lclif.h"
#include "login/lclif.p.h"
#include "login/login.h"
+#include "login/loginlog.h"
+#include "login/packets_ac_struct.h"
+#include "login/packets_ca_struct.h"
#include "common/HPMi.h"
#include "common/conf.h"
#include "common/console.h"
@@ -39,6 +43,7 @@
#include "common/memmgr.h"
#include "common/mutex.h"
#include "common/mmo.h"
+#include "common/packets.h"
#include "common/nullpo.h"
#include "common/random.h"
#include "common/showmsg.h"
@@ -69,7 +74,7 @@ bool HPM_login_data_store_validate(enum HPluginDataTypes type, struct hplugin_da
}
void HPM_login_plugin_load_sub(struct hplugin *plugin) {
- plugin->hpi->sql_handle = account_db_sql_up(login->accounts);
+ plugin->hpi->sql_handle = account->db_sql_up(login->accounts);
}
void HPM_login_do_init(void) {
diff --git a/src/login/HPMlogin.h b/src/login/HPMlogin.h
index 5e059aa7e..e16edb6b8 100644
--- a/src/login/HPMlogin.h
+++ b/src/login/HPMlogin.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2014-2015 Hercules Dev Team
+ * Copyright (C) 2014-2018 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/login/Makefile.in b/src/login/Makefile.in
index 69cc6a897..5e0a04a81 100644
--- a/src/login/Makefile.in
+++ b/src/login/Makefile.in
@@ -1,7 +1,7 @@
# This file is part of Hercules.
# http://herc.ws - http://github.com/HerculesWS/Hercules
#
-# Copyright (C) 2012-2016 Hercules Dev Team
+# Copyright (C) 2012-2018 Hercules Dev Team
# Copyright (C) Athena Dev Teams
#
# Hercules is free software: you can redistribute it and/or modify
@@ -40,7 +40,7 @@ MT19937AR_D = $(THIRDPARTY_D)/mt19937ar
MT19937AR_OBJ = $(MT19937AR_D)/mt19937ar.o
MT19937AR_H = $(MT19937AR_D)/mt19937ar.h
-LOGIN_C = account_sql.c HPMlogin.c ipban_sql.c lclif.c login.c loginlog_sql.c
+LOGIN_C = account.c HPMlogin.c ipban.c lclif.c login.c loginlog.c
LOGIN_OBJ = $(addprefix obj_sql/, $(patsubst %.c,%.o,$(LOGIN_C)))
LOGIN_H = login.h account.h HPMlogin.h ipban.h lclif.h loginlog.h
LOGIN_PH = lclif.p.h
diff --git a/src/login/account_sql.c b/src/login/account.c
index 70d4f3dfb..783cf85ea 100644
--- a/src/login/account_sql.c
+++ b/src/login/account.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -39,71 +39,25 @@
/// global defines
#define ACCOUNT_SQL_DB_VERSION 20110114
-/// internal structure
-typedef struct AccountDB_SQL
-{
- AccountDB vtable; // public interface
-
- struct Sql *accounts; // SQL accounts storage
-
- // Sql settings
- char db_hostname[32];
- uint16 db_port;
- char db_username[32];
- char db_password[100];
- char db_database[32];
- char codepage[32];
- // other settings
- bool case_sensitive;
- char account_db[32];
- char global_acc_reg_num_db[32];
- char global_acc_reg_str_db[32];
-
-
-} AccountDB_SQL;
-
-/// internal structure
-typedef struct AccountDBIterator_SQL
-{
- AccountDBIterator vtable; // public interface
-
- AccountDB_SQL* db;
- int last_account_id;
-} AccountDBIterator_SQL;
-
-/// internal functions
-static bool account_db_sql_init(AccountDB* self);
-static void account_db_sql_destroy(AccountDB* self);
-static bool account_db_sql_get_property(AccountDB* self, const char* key, char* buf, size_t buflen);
-static bool account_db_sql_set_property(AccountDB* self, struct config_t *config, bool imported);
-static bool account_db_sql_create(AccountDB* self, struct mmo_account* acc);
-static bool account_db_sql_remove(AccountDB* self, const int account_id);
-static bool account_db_sql_save(AccountDB* self, const struct mmo_account* acc);
-static bool account_db_sql_load_num(AccountDB* self, struct mmo_account* acc, const int account_id);
-static bool account_db_sql_load_str(AccountDB* self, struct mmo_account* acc, const char* userid);
-static AccountDBIterator* account_db_sql_iterator(AccountDB* self);
-static void account_db_sql_iter_destroy(AccountDBIterator* self);
-static bool account_db_sql_iter_next(AccountDBIterator* self, struct mmo_account* acc);
-
-static bool mmo_auth_fromsql(AccountDB_SQL* db, struct mmo_account* acc, int account_id);
-static bool mmo_auth_tosql(AccountDB_SQL* db, const struct mmo_account* acc, bool is_new);
+static struct account_interface account_s;
+struct account_interface *account;
/// public constructor
-AccountDB* account_db_sql(void)
+static AccountDB *account_db_sql(void)
{
AccountDB_SQL* db = (AccountDB_SQL*)aCalloc(1, sizeof(AccountDB_SQL));
// set up the vtable
- db->vtable.init = &account_db_sql_init;
- db->vtable.destroy = &account_db_sql_destroy;
- db->vtable.get_property = &account_db_sql_get_property;
- db->vtable.set_property = &account_db_sql_set_property;
- db->vtable.save = &account_db_sql_save;
- db->vtable.create = &account_db_sql_create;
- db->vtable.remove = &account_db_sql_remove;
- db->vtable.load_num = &account_db_sql_load_num;
- db->vtable.load_str = &account_db_sql_load_str;
- db->vtable.iterator = &account_db_sql_iterator;
+ db->vtable.init = account->db_sql_init;
+ db->vtable.destroy = account->db_sql_destroy;
+ db->vtable.get_property = account->db_sql_get_property;
+ db->vtable.set_property = account->db_sql_set_property;
+ db->vtable.save = account->db_sql_save;
+ db->vtable.create = account->db_sql_create;
+ db->vtable.remove = account->db_sql_remove;
+ db->vtable.load_num = account->db_sql_load_num;
+ db->vtable.load_str = account->db_sql_load_str;
+ db->vtable.iterator = account->db_sql_iterator;
// initialize to default values
db->accounts = NULL;
@@ -123,12 +77,10 @@ AccountDB* account_db_sql(void)
return &db->vtable;
}
-
/* ------------------------------------------------------------------------- */
-
/// establishes database connection
-static bool account_db_sql_init(AccountDB* self)
+static bool account_db_sql_init(AccountDB *self)
{
AccountDB_SQL* db = (AccountDB_SQL*)self;
struct Sql *sql_handle = NULL;
@@ -157,7 +109,7 @@ static bool account_db_sql_init(AccountDB* self)
}
/// disconnects from database
-static void account_db_sql_destroy(AccountDB* self)
+static void account_db_sql_destroy(AccountDB *self)
{
AccountDB_SQL* db = (AccountDB_SQL*)self;
@@ -168,7 +120,7 @@ static void account_db_sql_destroy(AccountDB* self)
}
/// Gets a property from this database.
-static bool account_db_sql_get_property(AccountDB* self, const char* key, char* buf, size_t buflen)
+static bool account_db_sql_get_property(AccountDB *self, const char *key, char *buf, size_t buflen)
{
/* TODO:
* This functionality is not being used as of now, it was removed in
@@ -254,7 +206,7 @@ static bool account_db_sql_get_property(AccountDB* self, const char* key, char*
*
* @retval false in case of error.
*/
-bool account_db_read_inter(AccountDB_SQL *db, const char *filename, bool imported)
+static bool account_db_read_inter(AccountDB_SQL *db, const char *filename, bool imported)
{
struct config_t config;
struct config_setting_t *setting = NULL;
@@ -299,7 +251,7 @@ bool account_db_read_inter(AccountDB_SQL *db, const char *filename, bool importe
*
* @retval false in case of error.
*/
-static bool account_db_sql_set_property(AccountDB* self, struct config_t *config, bool imported)
+static bool account_db_sql_set_property(AccountDB *self, struct config_t *config, bool imported)
{
AccountDB_SQL* db = (AccountDB_SQL*)self;
struct config_setting_t *setting = NULL;
@@ -323,7 +275,7 @@ static bool account_db_sql_set_property(AccountDB* self, struct config_t *config
libconfig->setting_lookup_uint16(setting, "db_port", &db->db_port);
libconfig->setting_lookup_bool_real(setting, "case_sensitive", &db->case_sensitive);
- account_db_read_inter(db, "conf/common/inter-server.conf", imported);
+ account->db_read_inter(db, "conf/common/inter-server.conf", imported);
return true;
}
@@ -331,7 +283,7 @@ static bool account_db_sql_set_property(AccountDB* self, struct config_t *config
/// create a new account entry
/// If acc->account_id is -1, the account id will be auto-generated,
/// and its value will be written to acc->account_id if everything succeeds.
-static bool account_db_sql_create(AccountDB* self, struct mmo_account* acc)
+static bool account_db_sql_create(AccountDB *self, struct mmo_account *acc)
{
AccountDB_SQL* db = (AccountDB_SQL*)self;
struct Sql *sql_handle;
@@ -381,11 +333,11 @@ static bool account_db_sql_create(AccountDB* self, struct mmo_account* acc)
// insert the data into the database
acc->account_id = account_id;
- return mmo_auth_tosql(db, acc, true);
+ return account->mmo_auth_tosql(db, acc, true);
}
/// delete an existing account entry + its regs
-static bool account_db_sql_remove(AccountDB* self, const int account_id)
+static bool account_db_sql_remove(AccountDB *self, const int account_id)
{
AccountDB_SQL* db = (AccountDB_SQL*)self;
struct Sql *sql_handle;
@@ -408,21 +360,21 @@ static bool account_db_sql_remove(AccountDB* self, const int account_id)
}
/// update an existing account with the provided new data (both account and regs)
-static bool account_db_sql_save(AccountDB* self, const struct mmo_account* acc)
+static bool account_db_sql_save(AccountDB *self, const struct mmo_account *acc)
{
AccountDB_SQL* db = (AccountDB_SQL*)self;
- return mmo_auth_tosql(db, acc, false);
+ return account->mmo_auth_tosql(db, acc, false);
}
/// retrieve data from db and store it in the provided data structure
-static bool account_db_sql_load_num(AccountDB* self, struct mmo_account* acc, const int account_id)
+static bool account_db_sql_load_num(AccountDB *self, struct mmo_account *acc, const int account_id)
{
AccountDB_SQL* db = (AccountDB_SQL*)self;
- return mmo_auth_fromsql(db, acc, account_id);
+ return account->mmo_auth_fromsql(db, acc, account_id);
}
/// retrieve data from db and store it in the provided data structure
-static bool account_db_sql_load_str(AccountDB* self, struct mmo_account* acc, const char* userid)
+static bool account_db_sql_load_str(AccountDB *self, struct mmo_account *acc, const char *userid)
{
AccountDB_SQL* db = (AccountDB_SQL*)self;
struct Sql *sql_handle;
@@ -458,12 +410,11 @@ static bool account_db_sql_load_str(AccountDB* self, struct mmo_account* acc, co
SQL->GetData(sql_handle, 0, &data, NULL);
account_id = atoi(data);
- return account_db_sql_load_num(self, acc, account_id);
+ return account->db_sql_load_num(self, acc, account_id);
}
-
/// Returns a new forward iterator.
-static AccountDBIterator* account_db_sql_iterator(AccountDB* self)
+static AccountDBIterator *account_db_sql_iterator(AccountDB *self)
{
AccountDB_SQL* db = (AccountDB_SQL*)self;
AccountDBIterator_SQL* iter;
@@ -471,8 +422,8 @@ static AccountDBIterator* account_db_sql_iterator(AccountDB* self)
nullpo_retr(NULL, db);
iter = (AccountDBIterator_SQL*)aCalloc(1, sizeof(AccountDBIterator_SQL));
// set up the vtable
- iter->vtable.destroy = &account_db_sql_iter_destroy;
- iter->vtable.next = &account_db_sql_iter_next;
+ iter->vtable.destroy = account->db_sql_iter_destroy;
+ iter->vtable.next = account->db_sql_iter_next;
// fill data
iter->db = db;
@@ -483,15 +434,14 @@ static AccountDBIterator* account_db_sql_iterator(AccountDB* self)
/// Destroys this iterator, releasing all allocated memory (including itself).
-static void account_db_sql_iter_destroy(AccountDBIterator* self)
+static void account_db_sql_iter_destroy(AccountDBIterator *self)
{
AccountDBIterator_SQL* iter = (AccountDBIterator_SQL*)self;
aFree(iter);
}
-
/// Fetches the next account in the database.
-static bool account_db_sql_iter_next(AccountDBIterator* self, struct mmo_account* acc)
+static bool account_db_sql_iter_next(AccountDBIterator *self, struct mmo_account *acc)
{
AccountDBIterator_SQL* iter = (AccountDBIterator_SQL*)self;
AccountDB_SQL* db;
@@ -516,8 +466,7 @@ static bool account_db_sql_iter_next(AccountDBIterator* self, struct mmo_account
{// get account data
int account_id;
account_id = atoi(data);
- if( mmo_auth_fromsql(db, acc, account_id) )
- {
+ if (account->mmo_auth_fromsql(db, acc, account_id)) {
iter->last_account_id = account_id;
SQL->FreeResult(sql_handle);
return true;
@@ -527,8 +476,7 @@ static bool account_db_sql_iter_next(AccountDBIterator* self, struct mmo_account
return false;
}
-
-static bool mmo_auth_fromsql(AccountDB_SQL* db, struct mmo_account* acc, int account_id)
+static bool account_mmo_auth_fromsql(AccountDB_SQL *db, struct mmo_account *acc, int account_id)
{
struct Sql *sql_handle;
char* data;
@@ -573,7 +521,7 @@ static bool mmo_auth_fromsql(AccountDB_SQL* db, struct mmo_account* acc, int acc
return true;
}
-static bool mmo_auth_tosql(AccountDB_SQL* db, const struct mmo_account* acc, bool is_new)
+static bool account_mmo_auth_tosql(AccountDB_SQL *db, const struct mmo_account *acc, bool is_new)
{
struct Sql *sql_handle;
struct SqlStmt *stmt;
@@ -599,16 +547,16 @@ static bool mmo_auth_tosql(AccountDB_SQL* db, const struct mmo_account* acc, boo
if( SQL_SUCCESS != SQL->StmtPrepare(stmt,
"INSERT INTO `%s` (`account_id`, `userid`, `user_pass`, `sex`, `email`, `group_id`, `state`, `unban_time`, `expiration_time`, `logincount`, `lastlogin`, `last_ip`, `birthdate`, `character_slots`, `pincode`, `pincode_change`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
db->account_db)
- || SQL_SUCCESS != SQL->StmtBindParam(stmt, 0, SQLDT_INT, &acc->account_id, sizeof(acc->account_id))
+ || SQL_SUCCESS != SQL->StmtBindParam(stmt, 0, SQLDT_INT, &acc->account_id, sizeof acc->account_id)
|| SQL_SUCCESS != SQL->StmtBindParam(stmt, 1, SQLDT_STRING, acc->userid, strlen(acc->userid))
|| SQL_SUCCESS != SQL->StmtBindParam(stmt, 2, SQLDT_STRING, acc->pass, strlen(acc->pass))
- || SQL_SUCCESS != SQL->StmtBindParam(stmt, 3, SQLDT_ENUM, &acc->sex, sizeof(acc->sex))
+ || SQL_SUCCESS != SQL->StmtBindParam(stmt, 3, SQLDT_ENUM, &acc->sex, sizeof acc->sex)
|| SQL_SUCCESS != SQL->StmtBindParam(stmt, 4, SQLDT_STRING, &acc->email, strlen(acc->email))
- || SQL_SUCCESS != SQL->StmtBindParam(stmt, 5, SQLDT_INT, &acc->group_id, sizeof(acc->group_id))
- || SQL_SUCCESS != SQL->StmtBindParam(stmt, 6, SQLDT_UINT, &acc->state, sizeof(acc->state))
- || SQL_SUCCESS != SQL->StmtBindParam(stmt, 7, SQLDT_LONG, &acc->unban_time, sizeof(acc->unban_time))
- || SQL_SUCCESS != SQL->StmtBindParam(stmt, 8, SQLDT_INT, &acc->expiration_time, sizeof(acc->expiration_time))
- || SQL_SUCCESS != SQL->StmtBindParam(stmt, 9, SQLDT_UINT, &acc->logincount, sizeof(acc->logincount))
+ || SQL_SUCCESS != SQL->StmtBindParam(stmt, 5, SQLDT_INT, &acc->group_id, sizeof acc->group_id)
+ || SQL_SUCCESS != SQL->StmtBindParam(stmt, 6, SQLDT_UINT, &acc->state, sizeof acc->state)
+ || SQL_SUCCESS != SQL->StmtBindParam(stmt, 7, SQLDT_TIME, &acc->unban_time, sizeof acc->unban_time)
+ || SQL_SUCCESS != SQL->StmtBindParam(stmt, 8, SQLDT_TIME, &acc->expiration_time, sizeof acc->expiration_time)
+ || SQL_SUCCESS != SQL->StmtBindParam(stmt, 9, SQLDT_UINT, &acc->logincount, sizeof acc->logincount)
|| SQL_SUCCESS != (acc->lastlogin[0] < '1' || acc->lastlogin[0] > '9' ?
SQL->StmtBindParam(stmt, 10, SQLDT_NULL, NULL, 0) :
SQL->StmtBindParam(stmt, 10, SQLDT_STRING, &acc->lastlogin, strlen(acc->lastlogin))
@@ -618,9 +566,9 @@ static bool mmo_auth_tosql(AccountDB_SQL* db, const struct mmo_account* acc, boo
SQL->StmtBindParam(stmt, 12, SQLDT_NULL, NULL, 0) :
SQL->StmtBindParam(stmt, 12, SQLDT_STRING, &acc->birthdate, strlen(acc->birthdate))
)
- || SQL_SUCCESS != SQL->StmtBindParam(stmt, 13, SQLDT_UCHAR, &acc->char_slots, sizeof(acc->char_slots))
+ || SQL_SUCCESS != SQL->StmtBindParam(stmt, 13, SQLDT_UINT8, &acc->char_slots, sizeof acc->char_slots)
|| SQL_SUCCESS != SQL->StmtBindParam(stmt, 14, SQLDT_STRING, &acc->pincode, strlen(acc->pincode))
- || SQL_SUCCESS != SQL->StmtBindParam(stmt, 15, SQLDT_LONG, &acc->pincode_change, sizeof(acc->pincode_change))
+ || SQL_SUCCESS != SQL->StmtBindParam(stmt, 15, SQLDT_UINT, &acc->pincode_change, sizeof acc->pincode_change)
|| SQL_SUCCESS != SQL->StmtExecute(stmt)
) {
SqlStmt_ShowDebug(stmt);
@@ -630,13 +578,13 @@ static bool mmo_auth_tosql(AccountDB_SQL* db, const struct mmo_account* acc, boo
if( SQL_SUCCESS != SQL->StmtPrepare(stmt, "UPDATE `%s` SET `userid`=?,`user_pass`=?,`sex`=?,`email`=?,`group_id`=?,`state`=?,`unban_time`=?,`expiration_time`=?,`logincount`=?,`lastlogin`=?,`last_ip`=?,`birthdate`=?,`character_slots`=?,`pincode`=?,`pincode_change`=? WHERE `account_id` = '%d'", db->account_db, acc->account_id)
|| SQL_SUCCESS != SQL->StmtBindParam(stmt, 0, SQLDT_STRING, acc->userid, strlen(acc->userid))
|| SQL_SUCCESS != SQL->StmtBindParam(stmt, 1, SQLDT_STRING, acc->pass, strlen(acc->pass))
- || SQL_SUCCESS != SQL->StmtBindParam(stmt, 2, SQLDT_ENUM, &acc->sex, sizeof(acc->sex))
+ || SQL_SUCCESS != SQL->StmtBindParam(stmt, 2, SQLDT_ENUM, &acc->sex, sizeof acc->sex)
|| SQL_SUCCESS != SQL->StmtBindParam(stmt, 3, SQLDT_STRING, acc->email, strlen(acc->email))
- || SQL_SUCCESS != SQL->StmtBindParam(stmt, 4, SQLDT_INT, &acc->group_id, sizeof(acc->group_id))
- || SQL_SUCCESS != SQL->StmtBindParam(stmt, 5, SQLDT_UINT, &acc->state, sizeof(acc->state))
- || SQL_SUCCESS != SQL->StmtBindParam(stmt, 6, SQLDT_LONG, &acc->unban_time, sizeof(acc->unban_time))
- || SQL_SUCCESS != SQL->StmtBindParam(stmt, 7, SQLDT_LONG, &acc->expiration_time, sizeof(acc->expiration_time))
- || SQL_SUCCESS != SQL->StmtBindParam(stmt, 8, SQLDT_UINT, &acc->logincount, sizeof(acc->logincount))
+ || SQL_SUCCESS != SQL->StmtBindParam(stmt, 4, SQLDT_INT, &acc->group_id, sizeof acc->group_id)
+ || SQL_SUCCESS != SQL->StmtBindParam(stmt, 5, SQLDT_UINT, &acc->state, sizeof acc->state)
+ || SQL_SUCCESS != SQL->StmtBindParam(stmt, 6, SQLDT_TIME, &acc->unban_time, sizeof acc->unban_time)
+ || SQL_SUCCESS != SQL->StmtBindParam(stmt, 7, SQLDT_TIME, &acc->expiration_time, sizeof acc->expiration_time)
+ || SQL_SUCCESS != SQL->StmtBindParam(stmt, 8, SQLDT_UINT, &acc->logincount, sizeof acc->logincount)
|| SQL_SUCCESS != (acc->lastlogin[0] < '1' || acc->lastlogin[0] > '9' ?
SQL->StmtBindParam(stmt, 9, SQLDT_NULL, NULL, 0) :
SQL->StmtBindParam(stmt, 9, SQLDT_STRING, &acc->lastlogin, strlen(acc->lastlogin))
@@ -646,9 +594,9 @@ static bool mmo_auth_tosql(AccountDB_SQL* db, const struct mmo_account* acc, boo
SQL->StmtBindParam(stmt, 11, SQLDT_NULL, NULL, 0) :
SQL->StmtBindParam(stmt, 11, SQLDT_STRING, &acc->birthdate, strlen(acc->birthdate))
)
- || SQL_SUCCESS != SQL->StmtBindParam(stmt, 12, SQLDT_UCHAR, &acc->char_slots, sizeof(acc->char_slots))
+ || SQL_SUCCESS != SQL->StmtBindParam(stmt, 12, SQLDT_UINT8, &acc->char_slots, sizeof acc->char_slots)
|| SQL_SUCCESS != SQL->StmtBindParam(stmt, 13, SQLDT_STRING, &acc->pincode, strlen(acc->pincode))
- || SQL_SUCCESS != SQL->StmtBindParam(stmt, 14, SQLDT_LONG, &acc->pincode_change, sizeof(acc->pincode_change))
+ || SQL_SUCCESS != SQL->StmtBindParam(stmt, 14, SQLDT_UINT, &acc->pincode_change, sizeof acc->pincode_change)
|| SQL_SUCCESS != SQL->StmtExecute(stmt)
) {
SqlStmt_ShowDebug(stmt);
@@ -668,12 +616,13 @@ static bool mmo_auth_tosql(AccountDB_SQL* db, const struct mmo_account* acc, boo
return result;
}
-struct Sql *account_db_sql_up(AccountDB* self)
+static struct Sql *account_db_sql_up(AccountDB *self)
{
AccountDB_SQL* db = (AccountDB_SQL*)self;
return db ? db->accounts : NULL;
}
-void mmo_save_accreg2(AccountDB* self, int fd, int account_id, int char_id)
+
+static void account_mmo_save_accreg2(AccountDB *self, int fd, int account_id, int char_id)
{
struct Sql *sql_handle;
AccountDB_SQL* db = (AccountDB_SQL*)self;
@@ -725,7 +674,7 @@ void mmo_save_accreg2(AccountDB* self, int fd, int account_id, int char_id)
}
}
-void mmo_send_accreg2(AccountDB* self, int fd, int account_id, int char_id)
+static void account_mmo_send_accreg2(AccountDB *self, int fd, int account_id, int char_id)
{
struct Sql *sql_handle;
AccountDB_SQL* db = (AccountDB_SQL*)self;
@@ -869,3 +818,29 @@ void mmo_send_accreg2(AccountDB* self, int fd, int account_id, int char_id)
SQL->FreeResult(sql_handle);
}
+
+void account_defaults(void)
+{
+ account = &account_s;
+
+ account->db_sql_up = account_db_sql_up;
+ account->mmo_send_accreg2 = account_mmo_send_accreg2;
+ account->mmo_save_accreg2 = account_mmo_save_accreg2;
+ account->mmo_auth_fromsql = account_mmo_auth_fromsql;
+ account->mmo_auth_tosql = account_mmo_auth_tosql;
+
+ account->db_sql = account_db_sql;
+ account->db_sql_init = account_db_sql_init;
+ account->db_sql_destroy = account_db_sql_destroy;
+ account->db_sql_get_property = account_db_sql_get_property;
+ account->db_sql_set_property = account_db_sql_set_property;
+ account->db_sql_create = account_db_sql_create;
+ account->db_sql_remove = account_db_sql_remove;
+ account->db_sql_save = account_db_sql_save;
+ account->db_sql_load_num = account_db_sql_load_num;
+ account->db_sql_load_str = account_db_sql_load_str;
+ account->db_sql_iterator = account_db_sql_iterator;
+ account->db_sql_iter_destroy = account_db_sql_iter_destroy;
+ account->db_sql_iter_next = account_db_sql_iter_next;
+ account->db_read_inter = account_db_read_inter;
+}
diff --git a/src/login/account.h b/src/login/account.h
index 9bb07fda3..312bb85c5 100644
--- a/src/login/account.h
+++ b/src/login/account.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -33,12 +33,6 @@ struct config_t; // common/conf.h
typedef struct AccountDB AccountDB;
typedef struct AccountDBIterator AccountDBIterator;
-
-#ifdef HERCULES_CORE
-// standard engines
-AccountDB* account_db_sql(void);
-#endif // HERCULES_CORE
-
struct mmo_account
{
int account_id;
@@ -59,7 +53,6 @@ struct mmo_account
char birthdate[10+1]; // assigned birth date (format: YYYY-MM-DD, default: 0000-00-00)
};
-
struct AccountDBIterator
{
/// Destroys this iterator, releasing all allocated memory (including itself).
@@ -161,11 +154,66 @@ struct AccountDB
AccountDBIterator* (*iterator)(AccountDB* self);
};
-#ifdef HERCULES_CORE
-struct Sql *account_db_sql_up(AccountDB* self);
+typedef struct AccountDB_SQL
+{
+ AccountDB vtable; // public interface
+
+ struct Sql *accounts; // SQL accounts storage
+
+ // Sql settings
+ char db_hostname[32];
+ uint16 db_port;
+ char db_username[32];
+ char db_password[100];
+ char db_database[32];
+ char codepage[32];
+ // other settings
+ bool case_sensitive;
+ char account_db[32];
+ char global_acc_reg_num_db[32];
+ char global_acc_reg_str_db[32];
+} AccountDB_SQL;
+
+/// internal structure
+typedef struct AccountDBIterator_SQL
+{
+ AccountDBIterator vtable; // public interface
+
+ AccountDB_SQL* db;
+ int last_account_id;
+} AccountDBIterator_SQL;
-void mmo_send_accreg2(AccountDB* self, int fd, int account_id, int char_id);
-void mmo_save_accreg2(AccountDB* self, int fd, int account_id, int char_id);
+/**
+ * Account.c Interface
+ **/
+struct account_interface {
+ struct Sql* (*db_sql_up) (AccountDB* self);
+ void (*mmo_send_accreg2) (AccountDB* self, int fd, int account_id, int char_id);
+ void (*mmo_save_accreg2) (AccountDB* self, int fd, int account_id, int char_id);
+ bool (*mmo_auth_fromsql) (AccountDB_SQL* db, struct mmo_account* acc, int account_id);
+ bool (*mmo_auth_tosql) (AccountDB_SQL* db, const struct mmo_account* acc, bool is_new);
+
+ AccountDB* (*db_sql) (void);
+ bool (*db_sql_init) (AccountDB* self);
+ void (*db_sql_destroy) (AccountDB* self);
+ bool (*db_sql_get_property) (AccountDB* self, const char* key, char* buf, size_t buflen);
+ bool (*db_sql_set_property) (AccountDB* self, struct config_t *config, bool imported);
+ bool (*db_sql_create) (AccountDB* self, struct mmo_account* acc);
+ bool (*db_sql_remove) (AccountDB* self, const int account_id);
+ bool (*db_sql_save) (AccountDB* self, const struct mmo_account* acc);
+ bool (*db_sql_load_num) (AccountDB* self, struct mmo_account* acc, const int account_id);
+ bool (*db_sql_load_str) (AccountDB* self, struct mmo_account* acc, const char* userid);
+ AccountDBIterator* (*db_sql_iterator) (AccountDB* self);
+ void (*db_sql_iter_destroy) (AccountDBIterator* self);
+ bool (*db_sql_iter_next) (AccountDBIterator* self, struct mmo_account* acc);
+
+ bool (*db_read_inter) (AccountDB_SQL *db, const char *filename, bool imported);
+};
+
+#ifdef HERCULES_CORE
+void account_defaults(void);
#endif // HERCULES_CORE
+HPShared struct account_interface *account;
+
#endif /* LOGIN_ACCOUNT_H */
diff --git a/src/login/ipban_sql.c b/src/login/ipban.c
index d74e6c4fa..32ee1a19b 100644
--- a/src/login/ipban_sql.c
+++ b/src/login/ipban.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -34,67 +34,54 @@
#include <stdlib.h>
-// Sql settings
-static char ipban_db_hostname[32] = "127.0.0.1";
-static uint16 ipban_db_port = 3306;
-static char ipban_db_username[32] = "ragnarok";
-static char ipban_db_password[100] = "ragnarok";
-static char ipban_db_database[32] = "ragnarok";
-static char ipban_codepage[32] = "";
-static char ipban_table[32] = "ipbanlist";
-
-// globals
-static struct Sql *sql_handle = NULL;
-static int cleanup_timer_id = INVALID_TIMER;
-static bool ipban_inited = false;
-
-int ipban_cleanup(int tid, int64 tick, int id, intptr_t data);
-
+static struct ipban_interface ipban_s;
+struct ipban_interface *ipban;
+static struct s_ipban_dbs ipbandbs;
// initialize
-void ipban_init(void)
+static void ipban_init(void)
{
- ipban_inited = true;
+ ipban->inited = true;
if (!login->config->ipban)
return;// ipban disabled
// establish connections
- sql_handle = SQL->Malloc();
- if (SQL_ERROR == SQL->Connect(sql_handle, ipban_db_username, ipban_db_password,
- ipban_db_hostname, ipban_db_port, ipban_db_database)) {
- Sql_ShowDebug(sql_handle);
- SQL->Free(sql_handle);
+ ipban->sql_handle = SQL->Malloc();
+ if (SQL_ERROR == SQL->Connect(ipban->sql_handle, ipban->dbs->db_username, ipban->dbs->db_password,
+ ipban->dbs->db_hostname, ipban->dbs->db_port, ipban->dbs->db_database)) {
+ Sql_ShowDebug(ipban->sql_handle);
+ SQL->Free(ipban->sql_handle);
exit(EXIT_FAILURE);
}
- if (ipban_codepage[0] != '\0' && SQL_ERROR == SQL->SetEncoding(sql_handle, ipban_codepage))
- Sql_ShowDebug(sql_handle);
+ if (ipban->dbs->codepage[0] != '\0' && SQL_ERROR == SQL->SetEncoding(ipban->sql_handle, ipban->dbs->codepage))
+ Sql_ShowDebug(ipban->sql_handle);
if (login->config->ipban_cleanup_interval > 0) {
// set up periodic cleanup of connection history and active bans
- timer->add_func_list(ipban_cleanup, "ipban_cleanup");
- cleanup_timer_id = timer->add_interval(timer->gettick()+10, ipban_cleanup, 0, 0, login->config->ipban_cleanup_interval*1000);
+ timer->add_func_list(ipban->cleanup, "ipban_cleanup");
+ ipban->cleanup_timer_id = timer->add_interval(timer->gettick()+10, ipban->cleanup, 0, 0, login->config->ipban_cleanup_interval*1000);
} else {
// make sure it gets cleaned up on login-server start regardless of interval-based cleanups
- ipban_cleanup(0,0,0,0);
+ ipban->cleanup(0,0,0,0);
}
}
// finalize
-void ipban_final(void)
+static void ipban_final(void)
{
if (!login->config->ipban)
return;// ipban disabled
if (login->config->ipban_cleanup_interval > 0)
// release data
- timer->delete(cleanup_timer_id, ipban_cleanup);
+ timer->delete(ipban->cleanup_timer_id, ipban->cleanup);
- ipban_cleanup(0,0,0,0); // always clean up on login-server stop
+ ipban->cleanup(0,0,0,0); // always clean up on login-server stop
// close connections
- SQL->Free(sql_handle);
- sql_handle = NULL;
+ SQL->Free(ipban->sql_handle);
+ ipban->sql_handle = NULL;
}
/**
@@ -107,7 +94,7 @@ void ipban_final(void)
* @retval false in case of error.
*/
-bool ipban_config_read_inter(const char *filename, bool imported)
+static bool ipban_config_read_inter(const char *filename, bool imported)
{
struct config_t config;
struct config_setting_t *setting = NULL;
@@ -126,14 +113,14 @@ bool ipban_config_read_inter(const char *filename, bool imported)
ShowError("ipban_config_read: inter_configuration/database_names was not found!\n");
return false;
}
- libconfig->setting_lookup_mutable_string(setting, "ipban_table", ipban_table, sizeof(ipban_table));
+ libconfig->setting_lookup_mutable_string(setting, "ipban_table", ipban->dbs->table, sizeof(ipban->dbs->table));
// import should overwrite any previous configuration, so it should be called last
if (libconfig->lookup_string(&config, "import", &import) == CONFIG_TRUE) {
if (strcmp(import, filename) == 0 || strcmp(import, "conf/common/inter-server.conf") == 0) {
ShowWarning("ipban_config_read_inter: Loop detected! Skipping 'import'...\n");
} else {
- if (!ipban_config_read_inter(import, true))
+ if (!ipban->config_read_inter(import, true))
retval = false;
}
}
@@ -151,7 +138,7 @@ bool ipban_config_read_inter(const char *filename, bool imported)
*
* @retval false in case of error.
*/
-bool ipban_config_read_connection(const char *filename, struct config_t *config, bool imported)
+static bool ipban_config_read_connection(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
@@ -165,13 +152,13 @@ bool ipban_config_read_connection(const char *filename, struct config_t *config,
return false;
}
- libconfig->setting_lookup_mutable_string(setting, "db_hostname", ipban_db_hostname, sizeof(ipban_db_hostname));
- libconfig->setting_lookup_mutable_string(setting, "db_database", ipban_db_database, sizeof(ipban_db_database));
+ libconfig->setting_lookup_mutable_string(setting, "db_hostname", ipban->dbs->db_hostname, sizeof(ipban->dbs->db_hostname));
+ libconfig->setting_lookup_mutable_string(setting, "db_database", ipban->dbs->db_database, sizeof(ipban->dbs->db_database));
- libconfig->setting_lookup_mutable_string(setting, "db_username", ipban_db_username, sizeof(ipban_db_username));
- libconfig->setting_lookup_mutable_string(setting, "db_password", ipban_db_password, sizeof(ipban_db_password));
- libconfig->setting_lookup_mutable_string(setting, "codepage", ipban_codepage, sizeof(ipban_codepage));
- libconfig->setting_lookup_uint16(setting, "db_port", &ipban_db_port);
+ libconfig->setting_lookup_mutable_string(setting, "db_username", ipban->dbs->db_username, sizeof(ipban->dbs->db_username));
+ libconfig->setting_lookup_mutable_string(setting, "db_password", ipban->dbs->db_password, sizeof(ipban->dbs->db_password));
+ libconfig->setting_lookup_mutable_string(setting, "codepage", ipban->dbs->codepage, sizeof(ipban->dbs->codepage));
+ libconfig->setting_lookup_uint16(setting, "db_port", &ipban->dbs->db_port);
return true;
}
@@ -185,7 +172,7 @@ bool ipban_config_read_connection(const char *filename, struct config_t *config,
*
* @retval false in case of error.
*/
-bool ipban_config_read_dynamic(const char *filename, struct config_t *config, bool imported)
+static bool ipban_config_read_dynamic(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
@@ -216,7 +203,7 @@ bool ipban_config_read_dynamic(const char *filename, struct config_t *config, bo
*
* @retval false in case of error.
*/
-bool ipban_config_read(const char *filename, struct config_t *config, bool imported)
+static bool ipban_config_read(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
bool retval = true;
@@ -224,7 +211,7 @@ bool ipban_config_read(const char *filename, struct config_t *config, bool impor
nullpo_retr(false, filename);
nullpo_retr(false, config);
- if (ipban_inited)
+ if (ipban->inited)
return false; // settings can only be changed before init
if ((setting = libconfig->lookup(config, "login_configuration/account/ipban")) == NULL) {
@@ -247,7 +234,7 @@ bool ipban_config_read(const char *filename, struct config_t *config, bool impor
}
// check ip against active bans list
-bool ipban_check(uint32 ip)
+static bool ipban_check(uint32 ip)
{
uint8* p = (uint8*)&ip;
char* data = NULL;
@@ -256,53 +243,84 @@ bool ipban_check(uint32 ip)
if (!login->config->ipban)
return false;// ipban disabled
- if( SQL_ERROR == SQL->Query(sql_handle, "SELECT count(*) FROM `%s` WHERE `rtime` > NOW() AND (`list` = '%u.*.*.*' OR `list` = '%u.%u.*.*' OR `list` = '%u.%u.%u.*' OR `list` = '%u.%u.%u.%u')",
- ipban_table, p[3], p[3], p[2], p[3], p[2], p[1], p[3], p[2], p[1], p[0]) )
+ if( SQL_ERROR == SQL->Query(ipban->sql_handle, "SELECT count(*) FROM `%s` WHERE `rtime` > NOW() AND (`list` = '%u.*.*.*' OR `list` = '%u.%u.*.*' OR `list` = '%u.%u.%u.*' OR `list` = '%u.%u.%u.%u')",
+ ipban->dbs->table, p[3], p[3], p[2], p[3], p[2], p[1], p[3], p[2], p[1], p[0]) )
{
- Sql_ShowDebug(sql_handle);
+ Sql_ShowDebug(ipban->sql_handle);
// close connection because we can't verify their connectivity.
return true;
}
- if( SQL_SUCCESS != SQL->NextRow(sql_handle) )
+ if( SQL_SUCCESS != SQL->NextRow(ipban->sql_handle) )
return false;
- SQL->GetData(sql_handle, 0, &data, NULL);
+ SQL->GetData(ipban->sql_handle, 0, &data, NULL);
matches = atoi(data);
- SQL->FreeResult(sql_handle);
+ SQL->FreeResult(ipban->sql_handle);
return( matches > 0 );
}
// log failed attempt
-void ipban_log(uint32 ip)
+static void ipban_log(uint32 ip)
{
unsigned long failures;
if (!login->config->ipban)
return;// ipban disabled
- failures = loginlog_failedattempts(ip, login->config->dynamic_pass_failure_ban_interval);// how many times failed account? in one ip.
+ failures = loginlog->failedattempts(ip, login->config->dynamic_pass_failure_ban_interval);// how many times failed account? in one ip.
// if over the limit, add a temporary ban entry
if (failures >= login->config->dynamic_pass_failure_ban_limit)
{
uint8* p = (uint8*)&ip;
- if (SQL_ERROR == SQL->Query(sql_handle, "INSERT INTO `%s`(`list`,`btime`,`rtime`,`reason`) VALUES ('%u.%u.%u.*', NOW() , NOW() + INTERVAL %u MINUTE ,'Password error ban')",
- ipban_table, p[3], p[2], p[1], login->config->dynamic_pass_failure_ban_duration))
+ if (SQL_ERROR == SQL->Query(ipban->sql_handle, "INSERT INTO `%s`(`list`,`btime`,`rtime`,`reason`) VALUES ('%u.%u.%u.*', NOW() , NOW() + INTERVAL %u MINUTE ,'Password error ban')",
+ ipban->dbs->table, p[3], p[2], p[1], login->config->dynamic_pass_failure_ban_duration))
{
- Sql_ShowDebug(sql_handle);
+ Sql_ShowDebug(ipban->sql_handle);
}
}
}
// remove expired bans
-int ipban_cleanup(int tid, int64 tick, int id, intptr_t data) {
+static int ipban_cleanup(int tid, int64 tick, int id, intptr_t data)
+{
if (!login->config->ipban)
return 0;// ipban disabled
- if( SQL_ERROR == SQL->Query(sql_handle, "DELETE FROM `%s` WHERE `rtime` <= NOW()", ipban_table) )
- Sql_ShowDebug(sql_handle);
+ if( SQL_ERROR == SQL->Query(ipban->sql_handle, "DELETE FROM `%s` WHERE `rtime` <= NOW()", ipban->dbs->table) )
+ Sql_ShowDebug(ipban->sql_handle);
return 0;
}
+
+void ipban_defaults(void)
+{
+ ipban = &ipban_s;
+
+ ipban->dbs = &ipbandbs;
+
+ ipban->sql_handle = NULL;
+ ipban->cleanup_timer_id = INVALID_TIMER;
+ ipban->inited = false;
+
+ // Sql settings
+ strcpy(ipban->dbs->db_hostname, "127.0.0.1");
+ ipban->dbs->db_port = 3306;
+ strcpy(ipban->dbs->db_username, "ragnarok");
+ strcpy(ipban->dbs->db_password, "ragnarok");
+ strcpy(ipban->dbs->db_database, "ragnarok");
+ *ipban->dbs->codepage = 0;
+ strcpy(ipban->dbs->table, "ipbanlist");
+
+ ipban->init = ipban_init;
+ ipban->final = ipban_final;
+ ipban->cleanup = ipban_cleanup;
+ ipban->config_read_inter = ipban_config_read_inter;
+ ipban->config_read_connection = ipban_config_read_connection;
+ ipban->config_read_dynamic = ipban_config_read_dynamic;
+ ipban->config_read = ipban_config_read;
+ ipban->check = ipban_check;
+ ipban->log = ipban_log;
+}
diff --git a/src/login/ipban.h b/src/login/ipban.h
index 104e3a8a3..ac502b50d 100644
--- a/src/login/ipban.h
+++ b/src/login/ipban.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -22,26 +22,44 @@
#define LOGIN_IPBAN_H
#include "common/cbasetypes.h"
+#include "common/hercules.h"
/* Forward Declarations */
struct config_t; // common/conf.h
-#ifdef HERCULES_CORE
-// TODO: Interface
-// initialize
-void ipban_init(void);
-
-// finalize
-void ipban_final(void);
-
-// check ip against ban list
-bool ipban_check(uint32 ip);
+struct s_ipban_dbs {
+ char db_hostname[32];
+ uint16 db_port;
+ char db_username[32];
+ char db_password[100];
+ char db_database[32];
+ char codepage[32];
+ char table[32];
+};
-// increases failure count for the specified IP
-void ipban_log(uint32 ip);
+/**
+ * Ipban.c Interface
+ **/
+struct ipban_interface {
+ struct s_ipban_dbs *dbs;
+ struct Sql *sql_handle;
+ int cleanup_timer_id;
+ bool inited;
+ void (*init) (void);
+ void (*final) (void);
+ int (*cleanup) (int tid, int64 tick, int id, intptr_t data);
+ bool (*config_read_inter) (const char *filename, bool imported);
+ bool (*config_read_connection) (const char *filename, struct config_t *config, bool imported);
+ bool (*config_read_dynamic) (const char *filename, struct config_t *config, bool imported);
+ bool (*config_read) (const char *filename, struct config_t *config, bool imported);
+ bool (*check) (uint32 ip);
+ void (*log) (uint32 ip);
+};
-// parses configuration options
-bool ipban_config_read(const char *filename, struct config_t *config, bool imported);
+#ifdef HERCULES_CORE
+void ipban_defaults(void);
#endif // HERCULES_CORE
+HPShared struct ipban_interface *ipban;
+
#endif /* LOGIN_IPBAN_H */
diff --git a/src/login/lclif.c b/src/login/lclif.c
index 3ed257e85..97871922d 100644
--- a/src/login/lclif.c
+++ b/src/login/lclif.c
@@ -24,6 +24,8 @@
#include "login/ipban.h"
#include "login/login.h"
#include "login/loginlog.h"
+#include "login/packets_ac_struct.h"
+#include "login/packets_ca_struct.h"
#include "common/HPM.h"
#include "common/cbasetypes.h"
#include "common/db.h"
@@ -41,44 +43,44 @@
* Implementation of the login client interface.
*/
-struct lclif_interface lclif_s;
-struct lclif_interface_private lclif_p;
-struct lclif_interface_dbs lclif_dbs;
+static struct lclif_interface lclif_s;
+static struct lclif_interface_private lclif_p;
+static struct lclif_interface_dbs lclif_dbs;
struct lclif_interface *lclif;
/// @copydoc lclif_interface::connection_error()
-void lclif_connection_error(int fd, uint8 error)
+static void lclif_connection_error(int fd, uint8 error)
{
- struct packet_SC_NOTIFY_BAN *packet = NULL;
+ struct PACKET_SC_NOTIFY_BAN *packet = NULL;
WFIFOHEAD(fd, sizeof(*packet));
packet = WP2PTR(fd);
- packet->packet_id = PACKET_ID_SC_NOTIFY_BAN;
+ packet->packet_id = HEADER_SC_NOTIFY_BAN;
packet->error_code = error;
WFIFOSET(fd, sizeof(*packet));
}
/// @copydoc lclif_interface_private::parse_CA_CONNECT_INFO_CHANGED()
-enum parsefunc_rcode lclif_parse_CA_CONNECT_INFO_CHANGED(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
-enum parsefunc_rcode lclif_parse_CA_CONNECT_INFO_CHANGED(int fd, struct login_session_data *sd)
+static enum parsefunc_rcode lclif_parse_CA_CONNECT_INFO_CHANGED(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static enum parsefunc_rcode lclif_parse_CA_CONNECT_INFO_CHANGED(int fd, struct login_session_data *sd)
{
return PACKET_VALID;
}
/// @copydoc lclif_interface_private::parse_CA_EXE_HASHCHECK()
-enum parsefunc_rcode lclif_parse_CA_EXE_HASHCHECK(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
-enum parsefunc_rcode lclif_parse_CA_EXE_HASHCHECK(int fd, struct login_session_data *sd)
+static enum parsefunc_rcode lclif_parse_CA_EXE_HASHCHECK(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static enum parsefunc_rcode lclif_parse_CA_EXE_HASHCHECK(int fd, struct login_session_data *sd)
{
- const struct packet_CA_EXE_HASHCHECK *packet = RP2PTR(fd);
+ const struct PACKET_CA_EXE_HASHCHECK *packet = RP2PTR(fd);
sd->has_client_hash = 1;
memcpy(sd->client_hash, packet->hash_value, 16);
return PACKET_VALID;
}
/// @copydoc lclif_interface_private::parse_CA_LOGIN()
-enum parsefunc_rcode lclif_parse_CA_LOGIN(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
-enum parsefunc_rcode lclif_parse_CA_LOGIN(int fd, struct login_session_data *sd)
+static enum parsefunc_rcode lclif_parse_CA_LOGIN(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static enum parsefunc_rcode lclif_parse_CA_LOGIN(int fd, struct login_session_data *sd)
{
- const struct packet_CA_LOGIN *packet = RP2PTR(fd);
+ const struct PACKET_CA_LOGIN *packet = RP2PTR(fd);
sd->version = packet->version;
sd->clienttype = packet->clienttype;
@@ -94,10 +96,10 @@ enum parsefunc_rcode lclif_parse_CA_LOGIN(int fd, struct login_session_data *sd)
}
/// @copydoc lclif_interface_private::parse_CA_LOGIN2()
-enum parsefunc_rcode lclif_parse_CA_LOGIN2(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
-enum parsefunc_rcode lclif_parse_CA_LOGIN2(int fd, struct login_session_data *sd)
+static enum parsefunc_rcode lclif_parse_CA_LOGIN2(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static enum parsefunc_rcode lclif_parse_CA_LOGIN2(int fd, struct login_session_data *sd)
{
- const struct packet_CA_LOGIN2 *packet = RP2PTR(fd);
+ const struct PACKET_CA_LOGIN2 *packet = RP2PTR(fd);
sd->version = packet->version;
sd->clienttype = packet->clienttype;
@@ -110,10 +112,10 @@ enum parsefunc_rcode lclif_parse_CA_LOGIN2(int fd, struct login_session_data *sd
}
/// @copydoc lclif_interface_private::parse_CA_LOGIN3()
-enum parsefunc_rcode lclif_parse_CA_LOGIN3(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
-enum parsefunc_rcode lclif_parse_CA_LOGIN3(int fd, struct login_session_data *sd)
+static enum parsefunc_rcode lclif_parse_CA_LOGIN3(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static enum parsefunc_rcode lclif_parse_CA_LOGIN3(int fd, struct login_session_data *sd)
{
- const struct packet_CA_LOGIN3 *packet = RP2PTR(fd);
+ const struct PACKET_CA_LOGIN3 *packet = RP2PTR(fd);
sd->version = packet->version;
sd->clienttype = packet->clienttype;
@@ -128,10 +130,10 @@ enum parsefunc_rcode lclif_parse_CA_LOGIN3(int fd, struct login_session_data *sd
}
/// @copydoc lclif_interface_private::parse_CA_LOGIN4()
-enum parsefunc_rcode lclif_parse_CA_LOGIN4(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
-enum parsefunc_rcode lclif_parse_CA_LOGIN4(int fd, struct login_session_data *sd)
+static enum parsefunc_rcode lclif_parse_CA_LOGIN4(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static enum parsefunc_rcode lclif_parse_CA_LOGIN4(int fd, struct login_session_data *sd)
{
- const struct packet_CA_LOGIN4 *packet = RP2PTR(fd);
+ const struct PACKET_CA_LOGIN4 *packet = RP2PTR(fd);
sd->version = packet->version;
sd->clienttype = packet->clienttype;
@@ -146,10 +148,10 @@ enum parsefunc_rcode lclif_parse_CA_LOGIN4(int fd, struct login_session_data *sd
}
/// @copydoc lclif_interface_private::parse_CA_LOGIN_PCBANG()
-enum parsefunc_rcode lclif_parse_CA_LOGIN_PCBANG(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
-enum parsefunc_rcode lclif_parse_CA_LOGIN_PCBANG(int fd, struct login_session_data *sd)
+static enum parsefunc_rcode lclif_parse_CA_LOGIN_PCBANG(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static enum parsefunc_rcode lclif_parse_CA_LOGIN_PCBANG(int fd, struct login_session_data *sd)
{
- const struct packet_CA_LOGIN_PCBANG *packet = RP2PTR(fd);
+ const struct PACKET_CA_LOGIN_PCBANG *packet = RP2PTR(fd);
sd->version = packet->version;
sd->clienttype = packet->clienttype;
@@ -168,10 +170,10 @@ enum parsefunc_rcode lclif_parse_CA_LOGIN_PCBANG(int fd, struct login_session_da
}
/// @copydoc lclif_interface_private::parse_CA_LOGIN_HAN()
-enum parsefunc_rcode lclif_parse_CA_LOGIN_HAN(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
-enum parsefunc_rcode lclif_parse_CA_LOGIN_HAN(int fd, struct login_session_data *sd)
+static enum parsefunc_rcode lclif_parse_CA_LOGIN_HAN(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static enum parsefunc_rcode lclif_parse_CA_LOGIN_HAN(int fd, struct login_session_data *sd)
{
- const struct packet_CA_LOGIN_HAN *packet = RP2PTR(fd);
+ const struct PACKET_CA_LOGIN_HAN *packet = RP2PTR(fd);
sd->version = packet->version;
sd->clienttype = packet->clienttype;
@@ -191,14 +193,14 @@ enum parsefunc_rcode lclif_parse_CA_LOGIN_HAN(int fd, struct login_session_data
}
/// @copydoc lclif_interface_private::parse_CA_SSO_LOGIN_REQ()
-enum parsefunc_rcode lclif_parse_CA_SSO_LOGIN_REQ(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
-enum parsefunc_rcode lclif_parse_CA_SSO_LOGIN_REQ(int fd, struct login_session_data *sd)
+static enum parsefunc_rcode lclif_parse_CA_SSO_LOGIN_REQ(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static enum parsefunc_rcode lclif_parse_CA_SSO_LOGIN_REQ(int fd, struct login_session_data *sd)
{
- const struct packet_CA_SSO_LOGIN_REQ *packet = RP2PTR(fd);
+ const struct PACKET_CA_SSO_LOGIN_REQ *packet = RP2PTR(fd);
int tokenlen = (int)RFIFOREST(fd) - (int)sizeof(*packet);
if (tokenlen > PASSWD_LEN || tokenlen < 1) {
- ShowError("packet_CA_SSO_LOGIN_REQ: Token length is not between allowed password length, kicking player ('%s')", packet->id);
+ ShowError("PACKET_CA_SSO_LOGIN_REQ: Token length is not between allowed password length, kicking player ('%s')", packet->id);
sockt->eof(fd);
return PACKET_VALID;
}
@@ -216,9 +218,34 @@ enum parsefunc_rcode lclif_parse_CA_SSO_LOGIN_REQ(int fd, struct login_session_d
return PACKET_VALID;
}
+/// @copydoc lclif_interface_private::parse_CA_LOGIN_OTP()
+static enum parsefunc_rcode lclif_parse_CA_LOGIN_OTP(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static enum parsefunc_rcode lclif_parse_CA_LOGIN_OTP(int fd, struct login_session_data *sd)
+{
+ //const struct PACKET_CA_LOGIN_OTP *packet = RP2PTR(fd);
+ login->client_login_otp(fd, sd);
+ return PACKET_VALID;
+}
+
+/// @copydoc lclif_interface_private::parse_CA_ACK_MOBILE_OTP()
+static enum parsefunc_rcode lclif_parse_CA_ACK_MOBILE_OTP(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static enum parsefunc_rcode lclif_parse_CA_ACK_MOBILE_OTP(int fd, struct login_session_data *sd)
+{
+ // TODO: parsing packet data
+ return PACKET_VALID;
+}
+
+/// @copydoc lclif_interface_private::parse_CA_OTP_CODE()
+static enum parsefunc_rcode lclif_parse_CA_OTP_CODE(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static enum parsefunc_rcode lclif_parse_CA_OTP_CODE(int fd, struct login_session_data *sd)
+{
+ // TODO: parsing packet data
+ return PACKET_VALID;
+}
+
/// @copydoc lclif_interface_private::parse_CA_REQ_HASH()
-enum parsefunc_rcode lclif_parse_CA_REQ_HASH(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
-enum parsefunc_rcode lclif_parse_CA_REQ_HASH(int fd, struct login_session_data *sd)
+static enum parsefunc_rcode lclif_parse_CA_REQ_HASH(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static enum parsefunc_rcode lclif_parse_CA_REQ_HASH(int fd, struct login_session_data *sd)
{
memset(sd->md5key, '\0', sizeof(sd->md5key));
sd->md5keylen = (uint16)(12 + rnd() % 4);
@@ -229,8 +256,8 @@ enum parsefunc_rcode lclif_parse_CA_REQ_HASH(int fd, struct login_session_data *
}
/// @copydoc lclif_interface_private::parse_CA_CHARSERVERCONNECT()
-enum parsefunc_rcode lclif_parse_CA_CHARSERVERCONNECT(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
-enum parsefunc_rcode lclif_parse_CA_CHARSERVERCONNECT(int fd, struct login_session_data *sd)
+static enum parsefunc_rcode lclif_parse_CA_CHARSERVERCONNECT(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static enum parsefunc_rcode lclif_parse_CA_CHARSERVERCONNECT(int fd, struct login_session_data *sd)
{
char ip[16];
uint32 ipl = sockt->session[fd]->client_addr;
@@ -242,14 +269,14 @@ enum parsefunc_rcode lclif_parse_CA_CHARSERVERCONNECT(int fd, struct login_sessi
}
/// @copydoc lclif_interface::server_list()
-bool lclif_send_server_list(struct login_session_data *sd)
+static bool lclif_send_server_list(struct login_session_data *sd)
{
int server_num = 0, i, n, length;
uint32 ip;
- struct packet_AC_ACCEPT_LOGIN *packet = NULL;
+ struct PACKET_AC_ACCEPT_LOGIN *packet = NULL;
- for (i = 0; i < ARRAYLENGTH(server); ++i) {
- if (sockt->session_is_active(server[i].fd))
+ for (i = 0; i < ARRAYLENGTH(login->dbs->server); ++i) {
+ if (sockt->session_is_active(login->dbs->server[i].fd))
server_num++;
}
if (server_num == 0)
@@ -262,7 +289,11 @@ bool lclif_send_server_list(struct login_session_data *sd)
WFIFOHEAD(sd->fd, length);
packet = WP2PTR(sd->fd);
- packet->packet_id = PACKET_ID_AC_ACCEPT_LOGIN;
+#if PACKETVER < 20170315
+ packet->packet_id = HEADER_AC_ACCEPT_LOGIN;
+#else
+ packet->packet_id = HEADER_AC_ACCEPT_LOGIN2;
+#endif
packet->packet_len = length;
packet->auth_code = sd->login_id1;
packet->aid = sd->account_id;
@@ -270,24 +301,24 @@ bool lclif_send_server_list(struct login_session_data *sd)
packet->last_login_ip = 0; // Not used anymore
memset(packet->last_login_time, '\0', sizeof(packet->last_login_time)); // Not used anymore
packet->sex = sex_str2num(sd->sex);
- for (i = 0, n = 0; i < ARRAYLENGTH(server); ++i) {
+ for (i = 0, n = 0; i < ARRAYLENGTH(login->dbs->server); ++i) {
uint32 subnet_char_ip;
- if (!sockt->session_is_valid(server[i].fd))
+ if (!sockt->session_is_valid(login->dbs->server[i].fd))
continue;
subnet_char_ip = login->lan_subnet_check(ip);
- packet->server_list[n].ip = htonl((subnet_char_ip) ? subnet_char_ip : server[i].ip);
- packet->server_list[n].port = sockt->ntows(htons(server[i].port)); // [!] LE byte order here [!]
- safestrncpy(packet->server_list[n].name, server[i].name, 20);
- packet->server_list[n].usercount = server[i].users;
+ packet->server_list[n].ip = htonl((subnet_char_ip) ? subnet_char_ip : login->dbs->server[i].ip);
+ packet->server_list[n].port = sockt->ntows(htons(login->dbs->server[i].port)); // [!] LE byte order here [!]
+ safestrncpy(packet->server_list[n].name, login->dbs->server[i].name, 20);
+ packet->server_list[n].usercount = login->convert_users_to_colors(login->dbs->server[i].users);
- if (server[i].type == CST_PAYING && sd->expiration_time > time(NULL))
+ if (login->dbs->server[i].type == CST_PAYING && sd->expiration_time > time(NULL))
packet->server_list[n].property = CST_NORMAL;
else
- packet->server_list[n].property = server[i].type;
+ packet->server_list[n].property = login->dbs->server[i].type;
- packet->server_list[n].state = server[i].new_;
+ packet->server_list[n].state = login->dbs->server[i].new_;
++n;
}
WFIFOSET(sd->fd, length);
@@ -296,14 +327,17 @@ bool lclif_send_server_list(struct login_session_data *sd)
}
/// @copydoc lclif_interface::auth_failed()
-void lclif_send_auth_failed(int fd, time_t ban, uint32 error)
+static void lclif_send_auth_failed(int fd, time_t ban, uint32 error)
{
-#if PACKETVER >= 20120000 /* not sure when this started */
- struct packet_AC_REFUSE_LOGIN_R2 *packet = NULL;
- int packet_id = PACKET_ID_AC_REFUSE_LOGIN_R2;
+#if PACKETVER >= 20180627
+ struct PACKET_AC_REFUSE_LOGIN_R2 *packet = NULL;
+ int packet_id = HEADER_AC_REFUSE_LOGIN_R3;
+#elif PACKETVER >= 20101123
+ struct PACKET_AC_REFUSE_LOGIN_R2 *packet = NULL;
+ int packet_id = HEADER_AC_REFUSE_LOGIN_R2;
#else
- struct packet_AC_REFUSE_LOGIN *packet = NULL;
- int packet_id = PACKET_ID_AC_REFUSE_LOGIN;
+ struct PACKET_AC_REFUSE_LOGIN *packet = NULL;
+ int packet_id = HEADER_AC_REFUSE_LOGIN;
#endif
WFIFOHEAD(fd, sizeof(*packet));
packet = WP2PTR(fd);
@@ -317,34 +351,34 @@ void lclif_send_auth_failed(int fd, time_t ban, uint32 error)
}
/// @copydoc lclif_interface::login_error()
-void lclif_send_login_error(int fd, uint8 error)
+static void lclif_send_login_error(int fd, uint8 error)
{
- struct packet_AC_REFUSE_LOGIN *packet = NULL;
+ struct PACKET_AC_REFUSE_LOGIN *packet = NULL;
WFIFOHEAD(fd, sizeof(*packet));
packet = WP2PTR(fd);
- packet->packet_id = PACKET_ID_AC_REFUSE_LOGIN;
+ packet->packet_id = HEADER_AC_REFUSE_LOGIN;
packet->error_code = error;
memset(packet->block_date, '\0', sizeof(packet->block_date));
WFIFOSET(fd, sizeof(*packet));
}
/// @copydoc lclif_interface::coding_key()
-void lclif_send_coding_key(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
-void lclif_send_coding_key(int fd, struct login_session_data *sd)
+static void lclif_send_coding_key(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static void lclif_send_coding_key(int fd, struct login_session_data *sd)
{
- struct packet_AC_ACK_HASH *packet = NULL;
+ struct PACKET_AC_ACK_HASH *packet = NULL;
int16 size = sizeof(*packet) + sd->md5keylen;
WFIFOHEAD(fd, size);
packet = WP2PTR(fd);
- packet->packet_id = PACKET_ID_AC_ACK_HASH;
+ packet->packet_id = HEADER_AC_ACK_HASH;
packet->packet_len = size;
memcpy(packet->secret, sd->md5key, sd->md5keylen);
WFIFOSET(fd, size);
}
/// @copydoc lclif_interface::parse()
-int lclif_parse(int fd)
+static int lclif_parse(int fd)
{
struct login_session_data *sd = NULL;
int i;
@@ -360,9 +394,9 @@ int lclif_parse(int fd)
if ((sd = sockt->session[fd]->session_data) == NULL) {
// Perform ip-ban check
- if (login->config->ipban && !sockt->trusted_ip_check(ipl) && ipban_check(ipl)) {
+ if (login->config->ipban && !sockt->trusted_ip_check(ipl) && ipban->check(ipl)) {
ShowStatus("Connection refused: IP isn't authorized (deny/allow, ip: %s).\n", ip);
- login_log(ipl, "unknown", -3, "ip banned");
+ loginlog->log(ipl, "unknown", -3, "ip banned");
lclif->login_error(fd, 3); // 3 = Rejected from Server
sockt->eof(fd);
return 0;
@@ -410,7 +444,7 @@ int lclif_parse(int fd)
}
/// @copydoc lclif_interface_private::parse_sub()
-enum parsefunc_rcode lclif_parse_sub(int fd, struct login_session_data *sd)
+static enum parsefunc_rcode lclif_parse_sub(int fd, struct login_session_data *sd)
{
int packet_len = (int)RFIFOREST(fd);
int16 packet_id = RFIFOW(fd, 0);
@@ -458,19 +492,19 @@ enum parsefunc_rcode lclif_parse_sub(int fd, struct login_session_data *sd)
}
/// @copydoc lclif_interface::packet()
-const struct login_packet_db *lclif_packet(int16 packet_id)
+static const struct login_packet_db *lclif_packet(int16 packet_id)
{
- if (packet_id == PACKET_ID_CA_CHARSERVERCONNECT)
+ if (packet_id == HEADER_CA_CHARSERVERCONNECT)
return &lclif->p->dbs->packet_db[0];
- if (packet_id > MAX_PACKET_DB || packet_id < MIN_PACKET_DB)
+ if (packet_id > MAX_PACKET_LOGIN_DB || packet_id < MIN_PACKET_DB)
return NULL;
return &lclif->p->dbs->packet_db[packet_id];
}
/// @copydoc lclif_interface::parse_packet()
-enum parsefunc_rcode lclif_parse_packet(const struct login_packet_db *lpd, int fd, struct login_session_data *sd)
+static enum parsefunc_rcode lclif_parse_packet(const struct login_packet_db *lpd, int fd, struct login_session_data *sd)
{
int result;
result = (*lpd->pFunc)(fd, sd);
@@ -479,7 +513,7 @@ enum parsefunc_rcode lclif_parse_packet(const struct login_packet_db *lpd, int f
}
/// @copydoc lclif_interface_private::packetdb_loaddb()
-void packetdb_loaddb(void)
+static void packetdb_loaddb(void)
{
int i;
struct packet {
@@ -487,8 +521,8 @@ void packetdb_loaddb(void)
int16 packet_len;
LoginParseFunc **pFunc;
} packet[] = {
-#define packet_def(name) { PACKET_ID_ ## name, sizeof(struct packet_ ## name), &lclif->p->parse_ ## name }
-#define packet_def2(name, len) { PACKET_ID_ ## name, (len), &lclif->p->parse_ ## name }
+#define packet_def(name) { HEADER_ ## name, sizeof(struct PACKET_ ## name), &lclif->p->parse_ ## name }
+#define packet_def2(name, len) { HEADER_ ## name, (len), &lclif->p->parse_ ## name }
packet_def(CA_CONNECT_INFO_CHANGED),
packet_def(CA_EXE_HASHCHECK),
packet_def(CA_LOGIN),
@@ -498,6 +532,13 @@ void packetdb_loaddb(void)
packet_def(CA_LOGIN_PCBANG),
packet_def(CA_LOGIN_HAN),
packet_def2(CA_SSO_LOGIN_REQ, -1),
+ packet_def(CA_LOGIN_OTP),
+#if PACKETVER_MAIN_NUM >= 20181114 || PACKETVER_RE_NUM >= 20181114
+ packet_def(CA_ACK_MOBILE_OTP),
+#endif
+#if PACKETVER_MAIN_NUM >= 20181114 || PACKETVER_RE_NUM >= 20181114 || defined(PACKETVER_ZERO)
+ packet_def(CA_OTP_CODE),
+#endif
packet_def(CA_REQ_HASH),
#undef packet_def
#undef packet_def2
@@ -508,24 +549,24 @@ void packetdb_loaddb(void)
for (i = 0; i < length; ++i) {
int16 packet_id = packet[i].packet_id;
- Assert_retb(packet_id >= MIN_PACKET_DB && packet_id < MAX_PACKET_DB);
+ Assert_retb(packet_id >= MIN_PACKET_DB && packet_id <= MAX_PACKET_LOGIN_DB);
lclif->p->dbs->packet_db[packet_id].len = packet[i].packet_len;
lclif->p->dbs->packet_db[packet_id].pFunc = packet[i].pFunc;
}
//Explict case, we will save character login packet in position 0 which is unused and not valid by normal
- lclif->p->dbs->packet_db[0].len = sizeof(struct packet_CA_CHARSERVERCONNECT);
+ lclif->p->dbs->packet_db[0].len = sizeof(struct PACKET_CA_CHARSERVERCONNECT);
lclif->p->dbs->packet_db[0].pFunc = &lclif->p->parse_CA_CHARSERVERCONNECT;
}
/// @copydoc lclif_interface::init()
-void lclif_init(void)
+static void lclif_init(void)
{
lclif->p->packetdb_loaddb();
}
/// @copydoc lclif_interface::final()
-void lclif_final(void)
+static void lclif_final(void)
{
}
@@ -561,6 +602,9 @@ void lclif_defaults(void)
lclif->p->parse_CA_LOGIN_PCBANG = lclif_parse_CA_LOGIN_PCBANG;
lclif->p->parse_CA_LOGIN_HAN = lclif_parse_CA_LOGIN_HAN;
lclif->p->parse_CA_SSO_LOGIN_REQ = lclif_parse_CA_SSO_LOGIN_REQ;
+ lclif->p->parse_CA_LOGIN_OTP = lclif_parse_CA_LOGIN_OTP;
+ lclif->p->parse_CA_ACK_MOBILE_OTP = lclif_parse_CA_ACK_MOBILE_OTP;
+ lclif->p->parse_CA_OTP_CODE = lclif_parse_CA_OTP_CODE;
lclif->p->parse_CA_REQ_HASH = lclif_parse_CA_REQ_HASH;
lclif->p->parse_CA_CHARSERVERCONNECT = lclif_parse_CA_CHARSERVERCONNECT;
}
diff --git a/src/login/lclif.h b/src/login/lclif.h
index d1e4317a2..26c061367 100644
--- a/src/login/lclif.h
+++ b/src/login/lclif.h
@@ -87,8 +87,8 @@ struct lclif_interface {
* @param fd The client connection file descriptor.
* @param ban The ban duration (if error == 6).
* @param error The authentication error code.
- * @see #PACKET_ID_AC_REFUSE_LOGIN.
- * @see #PACKET_ID_AC_REFUSE_LOGIN_R2.
+ * @see #HEADER_AC_REFUSE_LOGIN.
+ * @see #HEADER_AC_REFUSE_LOGIN_R2.
*/
void (*auth_failed)(int fd, time_t ban, uint32 error);
diff --git a/src/login/lclif.p.h b/src/login/lclif.p.h
index ae9d1bc14..cc9805ea8 100644
--- a/src/login/lclif.p.h
+++ b/src/login/lclif.p.h
@@ -31,261 +31,23 @@
/* Definitions and macros */
/// Maximum amount of packets processed at once from the same client
+#ifndef MAX_PROCESSED_PACKETS
#define MAX_PROCESSED_PACKETS (3)
+#endif
// Packet DB
+#ifndef MIN_PACKET_DB
#define MIN_PACKET_DB 0x0064
-#define MAX_PACKET_DB 0x08ff
-
-/* Enums */
-
-/// Packet IDs
-enum login_packet_id {
- // CA (Client to Login)
- PACKET_ID_CA_LOGIN = 0x0064,
- PACKET_ID_CA_LOGIN2 = 0x01dd,
- PACKET_ID_CA_LOGIN3 = 0x01fa,
- PACKET_ID_CA_CONNECT_INFO_CHANGED = 0x0200,
- PACKET_ID_CA_EXE_HASHCHECK = 0x0204,
- PACKET_ID_CA_LOGIN_PCBANG = 0x0277,
- PACKET_ID_CA_LOGIN4 = 0x027c,
- PACKET_ID_CA_LOGIN_HAN = 0x02b0,
- PACKET_ID_CA_SSO_LOGIN_REQ = 0x0825,
- PACKET_ID_CA_REQ_HASH = 0x01db,
- PACKET_ID_CA_CHARSERVERCONNECT = 0x2710, // Custom Hercules Packet
- //PACKET_ID_CA_SSO_LOGIN_REQa = 0x825a, /* unused */
-
- // AC (Login to Client)
- PACKET_ID_AC_ACCEPT_LOGIN = 0x0069,
- PACKET_ID_AC_REFUSE_LOGIN = 0x006a,
- PACKET_ID_SC_NOTIFY_BAN = 0x0081,
- PACKET_ID_AC_ACK_HASH = 0x01dc,
- PACKET_ID_AC_REFUSE_LOGIN_R2 = 0x083e,
-};
-
-/* Packets Structs */
-#if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
-#pragma pack(push, 1)
-#endif // not NetBSD < 6 / Solaris
-
-/**
- * Packet structure for CA_LOGIN.
- */
-struct packet_CA_LOGIN {
- int16 packet_id; ///< Packet ID (#PACKET_ID_CA_LOGIN)
- uint32 version; ///< Client Version
- char id[24]; ///< Username
- char password[24]; ///< Password
- uint8 clienttype; ///< Client Type
-} __attribute__((packed));
-
-/**
- * Packet structure for CA_LOGIN2.
- */
-struct packet_CA_LOGIN2 {
- int16 packet_id; ///< Packet ID (#PACKET_ID_CA_LOGIN2)
- uint32 version; ///< Client Version
- char id[24]; ///< Username
- uint8 password_md5[16]; ///< Password hash
- uint8 clienttype; ///< Client Type
-} __attribute__((packed));
-
-/**
- * Packet structure for CA_LOGIN3.
- */
-struct packet_CA_LOGIN3 {
- int16 packet_id; ///< Packet ID (#PACKET_ID_CA_LOGIN3)
- uint32 version; ///< Client Version
- char id[24]; ///< Username
- uint8 password_md5[16]; ///< Password hash
- uint8 clienttype; ///< Client Type
- uint8 clientinfo; ///< Index of the connection in the clientinfo file (+10 if the command-line contains "pc")
-} __attribute__((packed));
-
-/**
- * Packet structure for CA_LOGIN4.
- */
-struct packet_CA_LOGIN4 {
- int16 packet_id; ///< Packet ID (#PACKET_ID_CA_LOGIN4)
- uint32 version; ///< Client Version
- char id[24]; ///< Username
- uint8 password_md5[16]; ///< Password hash
- uint8 clienttype; ///< Client Type
- char mac_address[13]; ///< MAC Address
-} __attribute__((packed));
-
-/**
- * Packet structure for CA_LOGIN_PCBANG.
- */
-struct packet_CA_LOGIN_PCBANG {
- int16 packet_id; ///< Packet ID (#PACKET_ID_CA_LOGIN_PCBANG)
- uint32 version; ///< Client Version
- char id[24]; ///< Username
- char password[24]; ///< Password
- uint8 clienttype; ///< Client Type
- char ip[16]; ///< IP Address
- char mac_address[13]; ///< MAC Address
-} __attribute__((packed));
-
-/**
- * Packet structure for CA_LOGIN_HAN.
- */
-struct packet_CA_LOGIN_HAN {
- int16 packet_id; ///< Packet ID (#PACKET_ID_CA_LOGIN_HAN)
- uint32 version; ///< Client Version
- char id[24]; ///< Username
- char password[24]; ///< Password
- uint8 clienttype; ///< Client Type
- char ip[16]; ///< IP Address
- char mac_address[13]; ///< MAC Address
- uint8 is_han_game_user; ///< 'isGravityID'
-} __attribute__((packed));
-
-/**
- * Packet structure for CA_SSO_LOGIN_REQ.
- *
- * Variable-length packet.
- */
-struct packet_CA_SSO_LOGIN_REQ {
- int16 packet_id; ///< Packet ID (#PACKET_ID_CA_SSO_LOGIN_REQ)
- int16 packet_len; ///< Length (variable length)
- uint32 version; ///< Clientver
- uint8 clienttype; ///< Clienttype
- char id[24]; ///< Username
- char password[27]; ///< Password
- int8 mac_address[17]; ///< MAC Address
- char ip[15]; ///< IP Address
- char t1[]; ///< SSO Login Token (variable length)
-} __attribute__((packed));
-
-#if 0 // Unused
-struct packet_CA_SSO_LOGIN_REQa {
- int16 packet_id;
- int16 packet_len;
- uint32 version;
- uint8 clienttype;
- char id[24];
- int8 mac_address[17];
- char ip[15];
- char t1[];
-} __attribute__((packed));
-#endif // unused
-
-/**
- * Packet structure for CA_CONNECT_INFO_CHANGED.
- *
- * New alive packet. Used to verify if client is always alive.
- */
-struct packet_CA_CONNECT_INFO_CHANGED {
- int16 packet_id; ///< Packet ID (#PACKET_ID_CA_CONNECT_INFO_CHANGED)
- char id[24]; ///< account.userid
-} __attribute__((packed));
-
-/**
- * Packet structure for CA_EXE_HASHCHECK.
- *
- * (kRO 2004-05-31aSakexe langtype 0 and 6)
- */
-struct packet_CA_EXE_HASHCHECK {
- int16 packet_id; ///< Packet ID (#PACKET_ID_CA_EXE_HASHCHECK)
- uint8 hash_value[16]; ///< Client MD5 hash
-} __attribute__((packed));
-
-/**
- * Packet structure for CA_REQ_HASH.
- */
-struct packet_CA_REQ_HASH {
- int16 packet_id; ///< Packet ID (#PACKET_ID_CA_REQ_HASH)
-} __attribute__((packed));
-
-/**
- * Packet structure for CA_CHARSERVERCONNECT.
- *
- * This packet is used internally, to signal a char-server connection.
- */
-struct packet_CA_CHARSERVERCONNECT {
- int16 packet_id; ///< Packet ID (#PACKET_ID_CA_CHARSERVERCONNECT)
- char userid[24]; ///< Username
- char password[24]; ///< Password
- int32 unknown;
- int32 ip; ///< Charserver IP
- int16 port; ///< Charserver port
- char name[20]; ///< Charserver name
- int16 unknown2;
- int16 type; ///< Charserver type
- int16 new; ///< Whether charserver is to be marked as new
-} __attribute__((packed));
-
-/**
- * Packet structure for SC_NOTIFY_BAN.
- */
-struct packet_SC_NOTIFY_BAN {
- int16 packet_id; ///< Packet ID (#PACKET_ID_SC_NOTIFY_BAN)
- uint8 error_code; ///< Error code
-} __attribute__((packed));
-
-/**
- * Packet structure for AC_REFUSE_LOGIN.
- */
-struct packet_AC_REFUSE_LOGIN {
- int16 packet_id; ///< Packet ID (#PACKET_ID_AC_REFUSE_LOGIN)
- uint8 error_code; ///< Error code
- char block_date[20]; ///< Ban expiration date
-} __attribute__((packed));
-
-/**
- * Packet structure for AC_REFUSE_LOGIN_R2.
- */
-struct packet_AC_REFUSE_LOGIN_R2 {
- int16 packet_id; ///< Packet ID (#PACKET_ID_AC_REFUSE_LOGIN_R2)
- uint32 error_code; ///< Error code
- char block_date[20]; ///< Ban expiration date
-} __attribute__((packed));
-
-/**
- * Packet structure for AC_ACCEPT_LOGIN.
- *
- * Variable-length packet.
- */
-struct packet_AC_ACCEPT_LOGIN {
- int16 packet_id; ///< Packet ID (#PACKET_ID_AC_ACCEPT_LOGIN)
- int16 packet_len; ///< Packet length (variable length)
- int32 auth_code; ///< Authentication code
- uint32 aid; ///< Account ID
- uint32 user_level; ///< User level
- uint32 last_login_ip; ///< Last login IP
- char last_login_time[26]; ///< Last login timestamp
- uint8 sex; ///< Account sex
- struct {
- uint32 ip; ///< Server IP address
- int16 port; ///< Server port
- char name[20]; ///< Server name
- uint16 usercount; ///< Online users
- uint16 state; ///< Server state
- uint16 property; ///< Server property
- } server_list[]; ///< List of charservers
-} __attribute__((packed));
-
-/**
- * Packet structure for AC_ACK_HASH.
- *
- * Variable-length packet
- */
-struct packet_AC_ACK_HASH {
- int16 packet_id; ///< Packet ID (#PACKET_ID_AC_ACK_HASH)
- int16 packet_len; ///< Packet length (variable length)
- uint8 secret[]; ///< Challenge string
-} __attribute__((packed));
-
-#if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
-#pragma pack(pop)
-#endif // not NetBSD < 6 / Solaris
+#endif
+#ifndef MAX_PACKET_LOGIN_DB
+#define MAX_PACKET_LOGIN_DB 0x0ad0
+#endif
/**
* Login Client Interface additional data
*/
struct lclif_interface_dbs {
- struct login_packet_db packet_db[MAX_PACKET_DB + 1]; ///< Packet database.
+ struct login_packet_db packet_db[MAX_PACKET_LOGIN_DB + 1]; ///< Packet database.
};
/**
@@ -308,17 +70,20 @@ struct lclif_interface_private {
*/
enum parsefunc_rcode (*parse_sub)(int fd, struct login_session_data *sd);
- LoginParseFunc *parse_CA_CONNECT_INFO_CHANGED; ///< Packet handler for #packet_CA_CONNECT_INFO_CHANGED.
- LoginParseFunc *parse_CA_EXE_HASHCHECK; ///< Packet handler for #packet_CA_EXE_HASHCHECK.
- LoginParseFunc *parse_CA_LOGIN; ///< Packet handler for #packet_CA_LOGIN.
- LoginParseFunc *parse_CA_LOGIN2; ///< Packet handler for #packet_CA_LOGIN2.
- LoginParseFunc *parse_CA_LOGIN3; ///< Packet handler for #packet_CA_LOGIN3.
- LoginParseFunc *parse_CA_LOGIN4; ///< Packet handler for #packet_CA_LOGIN4.
- LoginParseFunc *parse_CA_LOGIN_PCBANG; ///< Packet handler for #packet_CA_LOGIN_PCBANG.
- LoginParseFunc *parse_CA_LOGIN_HAN; ///< Packet handler for #packet_CA_LOGIN_HAN.
- LoginParseFunc *parse_CA_SSO_LOGIN_REQ; ///< Packet handler for #packet_CA_SSO_LOGIN_REQ.
- LoginParseFunc *parse_CA_REQ_HASH; ///< Packet handler for #packet_CA_REQ_HASH.
- LoginParseFunc *parse_CA_CHARSERVERCONNECT; ///< Packet handler for #packet_CA_CHARSERVERCONNECT.
+ LoginParseFunc *parse_CA_CONNECT_INFO_CHANGED; ///< Packet handler for #PACKET_CA_CONNECT_INFO_CHANGED.
+ LoginParseFunc *parse_CA_EXE_HASHCHECK; ///< Packet handler for #PACKET_CA_EXE_HASHCHECK.
+ LoginParseFunc *parse_CA_LOGIN; ///< Packet handler for #PACKET_CA_LOGIN.
+ LoginParseFunc *parse_CA_LOGIN2; ///< Packet handler for #PACKET_CA_LOGIN2.
+ LoginParseFunc *parse_CA_LOGIN3; ///< Packet handler for #PACKET_CA_LOGIN3.
+ LoginParseFunc *parse_CA_LOGIN4; ///< Packet handler for #PACKET_CA_LOGIN4.
+ LoginParseFunc *parse_CA_LOGIN_PCBANG; ///< Packet handler for #PACKET_CA_LOGIN_PCBANG.
+ LoginParseFunc *parse_CA_LOGIN_HAN; ///< Packet handler for #PACKET_CA_LOGIN_HAN.
+ LoginParseFunc *parse_CA_SSO_LOGIN_REQ; ///< Packet handler for #PACKET_CA_SSO_LOGIN_REQ.
+ LoginParseFunc *parse_CA_LOGIN_OTP; ///< Packet handler for #PACKET_CA_LOGIN_OTP.
+ LoginParseFunc *parse_CA_ACK_MOBILE_OTP; ///< Packet handler for #PACKET_CA_ACK_MOBILE_OTP.
+ LoginParseFunc *parse_CA_OTP_CODE; ///< Packet handler for #PACKET_CA_OTP_CODE.
+ LoginParseFunc *parse_CA_REQ_HASH; ///< Packet handler for #PACKET_CA_REQ_HASH.
+ LoginParseFunc *parse_CA_CHARSERVERCONNECT; ///< Packet handler for #PACKET_CA_CHARSERVERCONNECT.
};
#endif // LOGIN_LCLIF_P_H
diff --git a/src/login/login.c b/src/login/login.c
index ae584206f..4c40677fa 100644
--- a/src/login/login.c
+++ b/src/login/login.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -27,6 +27,7 @@
#include "login/ipban.h"
#include "login/loginlog.h"
#include "login/lclif.h"
+#include "login/packets_ac_struct.h"
#include "common/HPM.h"
#include "common/cbasetypes.h"
#include "common/conf.h"
@@ -35,6 +36,7 @@
#include "common/memmgr.h"
#include "common/md5calc.h"
#include "common/nullpo.h"
+#include "common/packetsstatic_len.h"
#include "common/random.h"
#include "common/showmsg.h"
#include "common/socket.h"
@@ -50,17 +52,17 @@
* Implementation of the login interface.
*/
-struct login_interface login_s;
+static struct login_interface login_s;
struct login_interface *login;
-struct Login_Config login_config_;
-struct mmo_char_server server[MAX_SERVERS]; // char server data
+static struct s_login_dbs logindbs;
+static struct lchrif_interface lchrif_s;
+struct lchrif_interface *lchrif;
+static struct Login_Config login_config_;
-struct Account_engine account_engine[] = {
- {account_db_sql, NULL}
-};
+static struct Account_engine account_engine;
// account database
-AccountDB* accounts = NULL;
+static AccountDB *accounts = NULL;
//-----------------------------------------------------
// Auth database
@@ -80,7 +82,7 @@ static struct DBData login_create_online_user(union DBKey key, va_list args)
return DB->ptr2data(p);
}
-struct online_login_data* login_add_online_user(int char_server, int account_id)
+static struct online_login_data* login_add_online_user(int char_server, int account_id)
{
struct online_login_data* p;
p = idb_ensure(login->online_db, account_id, login->create_online_user);
@@ -93,7 +95,7 @@ struct online_login_data* login_add_online_user(int char_server, int account_id)
return p;
}
-void login_remove_online_user(int account_id)
+static void login_remove_online_user(int account_id)
{
struct online_login_data* p;
p = (struct online_login_data*)idb_get(login->online_db, account_id);
@@ -105,7 +107,8 @@ void login_remove_online_user(int account_id)
idb_remove(login->online_db, account_id);
}
-static int login_waiting_disconnect_timer(int tid, int64 tick, int id, intptr_t data) {
+static int login_waiting_disconnect_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct online_login_data* p = (struct online_login_data*)idb_get(login->online_db, id);
if( p != NULL && p->waiting_disconnect == tid && p->account_id == id )
{
@@ -150,7 +153,8 @@ static int login_online_data_cleanup_sub(union DBKey key, struct DBData *data, v
return 0;
}
-static int login_online_data_cleanup(int tid, int64 tick, int id, intptr_t data) {
+static int login_online_data_cleanup(int tid, int64 tick, int id, intptr_t data)
+{
login->online_db->foreach(login->online_db, login->online_data_cleanup_sub);
return 0;
}
@@ -159,14 +163,14 @@ static int login_online_data_cleanup(int tid, int64 tick, int id, intptr_t data)
//--------------------------------------------------------------------
// Packet send to all char-servers, except one (wos: without our self)
//--------------------------------------------------------------------
-int charif_sendallwos(int sfd, uint8* buf, size_t len)
+static int charif_sendallwos(int sfd, uint8 *buf, size_t len)
{
int i, c;
nullpo_ret(buf);
- for( i = 0, c = 0; i < ARRAYLENGTH(server); ++i )
+ for (i = 0, c = 0; i < ARRAYLENGTH(login->dbs->server); ++i)
{
- int fd = server[i].fd;
+ int fd = login->dbs->server[i].fd;
if (sockt->session_is_valid(fd) && fd != sfd) {
WFIFOHEAD(fd,len);
memcpy(WFIFOP(fd,0), buf, len);
@@ -180,48 +184,49 @@ int charif_sendallwos(int sfd, uint8* buf, size_t len)
/// Initializes a server structure.
-void chrif_server_init(int id)
+static void lchrif_server_init(int id)
{
Assert_retv(id >= 0 && id < MAX_SERVERS);
- memset(&server[id], 0, sizeof(server[id]));
- server[id].fd = -1;
+ memset(&login->dbs->server[id], 0, sizeof(login->dbs->server[id]));
+ login->dbs->server[id].fd = -1;
}
/// Destroys a server structure.
-void chrif_server_destroy(int id)
+static void lchrif_server_destroy(int id)
{
Assert_retv(id >= 0 && id < MAX_SERVERS);
- if (server[id].fd != -1)
+ if (login->dbs->server[id].fd != -1)
{
- sockt->close(server[id].fd);
- server[id].fd = -1;
+ sockt->close(login->dbs->server[id].fd);
+ login->dbs->server[id].fd = -1;
}
}
/// Resets all the data related to a server.
-void chrif_server_reset(int id)
+static void lchrif_server_reset(int id)
{
login->online_db->foreach(login->online_db, login->online_db_setoffline, id); //Set all chars from this char server to offline.
- chrif_server_destroy(id);
- chrif_server_init(id);
+ lchrif->server_destroy(id);
+ lchrif->server_init(id);
}
/// Called when the connection to Char Server is disconnected.
-void chrif_on_disconnect(int id)
+static void lchrif_on_disconnect(int id)
{
Assert_retv(id >= 0 && id < MAX_SERVERS);
- ShowStatus("Char-server '%s' has disconnected.\n", server[id].name);
- chrif_server_reset(id);
+ ShowStatus("Char-server '%s' has disconnected.\n", login->dbs->server[id].name);
+ lchrif->server_reset(id);
}
//-----------------------------------------------------
// periodic ip address synchronization
//-----------------------------------------------------
-static int login_sync_ip_addresses(int tid, int64 tick, int id, intptr_t data) {
+static int login_sync_ip_addresses(int tid, int64 tick, int id, intptr_t data)
+{
uint8 buf[2];
ShowInfo("IP Sync in progress...\n");
WBUFW(buf,0) = 0x2735;
@@ -233,7 +238,7 @@ static int login_sync_ip_addresses(int tid, int64 tick, int id, intptr_t data) {
//-----------------------------------------------------
// encrypted/unencrypted password check (from eApp)
//-----------------------------------------------------
-bool login_check_encrypted(const char* str1, const char* str2, const char* passwd)
+static bool login_check_encrypted(const char *str1, const char *str2, const char *passwd)
{
char tmpstr[64+1], md5str[32+1];
@@ -246,7 +251,7 @@ bool login_check_encrypted(const char* str1, const char* str2, const char* passw
return (0==strcmp(passwd, md5str));
}
-bool login_check_password(const char* md5key, int passwdenc, const char* passwd, const char* refpass)
+static bool login_check_password(const char *md5key, int passwdenc, const char *passwd, const char *refpass)
{
nullpo_ret(passwd);
nullpo_ret(refpass);
@@ -269,12 +274,12 @@ bool login_check_password(const char* md5key, int passwdenc, const char* passwd,
* @retval 0 if it is a WAN IP.
* @return the appropriate LAN server address to send, if it is a LAN IP.
*/
-uint32 login_lan_subnet_check(uint32 ip)
+static uint32 login_lan_subnet_check(uint32 ip)
{
return sockt->lan_subnet_check(ip, NULL);
}
-void login_fromchar_auth_ack(int fd, int account_id, uint32 login_id1, uint32 login_id2, uint8 sex, int request_id, struct login_auth_node* node)
+static void login_fromchar_auth_ack(int fd, int account_id, uint32 login_id1, uint32 login_id2, uint8 sex, int request_id, struct login_auth_node *node)
{
WFIFOHEAD(fd,33);
WFIFOW(fd,0) = 0x2713;
@@ -303,7 +308,7 @@ void login_fromchar_auth_ack(int fd, int account_id, uint32 login_id1, uint32 lo
WFIFOSET(fd,33);
}
-void login_fromchar_parse_auth(int fd, int id, const char *const ip)
+static void login_fromchar_parse_auth(int fd, int id, const char *const ip)
{
struct login_auth_node* node;
@@ -324,7 +329,7 @@ void login_fromchar_parse_auth(int fd, int id, const char *const ip)
node->sex == sex_num2str(sex) /*&&
node->ip == ip_*/ )
{// found
- //ShowStatus("Char-server '%s': authentication of the account %d accepted (ip: %s).\n", server[id].name, account_id, ip);
+ //ShowStatus("Char-server '%s': authentication of the account %d accepted (ip: %s).\n", login->dbs->server[id].name, account_id, ip);
// send ack
login->fromchar_auth_ack(fd, account_id, login_id1, login_id2, sex, request_id, node);
@@ -334,26 +339,26 @@ void login_fromchar_parse_auth(int fd, int id, const char *const ip)
else
{// authentication not found
nullpo_retv(ip);
- ShowStatus("Char-server '%s': authentication of the account %d REFUSED (ip: %s).\n", server[id].name, account_id, ip);
+ ShowStatus("Char-server '%s': authentication of the account %d REFUSED (ip: %s).\n", login->dbs->server[id].name, account_id, ip);
login->fromchar_auth_ack(fd, account_id, login_id1, login_id2, sex, request_id, NULL);
}
}
-void login_fromchar_parse_update_users(int fd, int id)
+static void login_fromchar_parse_update_users(int fd, int id)
{
int users = RFIFOL(fd,2);
RFIFOSKIP(fd,6);
// how many users on world? (update)
- if( server[id].users != users )
+ if (login->dbs->server[id].users != users)
{
- ShowStatus("set users %s : %d\n", server[id].name, users);
+ ShowStatus("set users %s : %d\n", login->dbs->server[id].name, users);
- server[id].users = (uint16)users;
+ login->dbs->server[id].users = (uint16)users;
}
}
-void login_fromchar_parse_request_change_email(int fd, int id, const char *const ip)
+static void login_fromchar_parse_request_change_email(int fd, int id, const char *const ip)
{
struct mmo_account acc;
char email[40];
@@ -363,19 +368,19 @@ void login_fromchar_parse_request_change_email(int fd, int id, const char *const
RFIFOSKIP(fd,46);
if( e_mail_check(email) == 0 )
- ShowNotice("Char-server '%s': Attempt to create an e-mail on an account with a default e-mail REFUSED - e-mail is invalid (account: %d, ip: %s)\n", server[id].name, account_id, ip);
+ ShowNotice("Char-server '%s': Attempt to create an e-mail on an account with a default e-mail REFUSED - e-mail is invalid (account: %d, ip: %s)\n", login->dbs->server[id].name, account_id, ip);
else
if( !accounts->load_num(accounts, &acc, account_id) || strcmp(acc.email, "a@a.com") == 0 || acc.email[0] == '\0' )
- ShowNotice("Char-server '%s': Attempt to create an e-mail on an account with a default e-mail REFUSED - account doesn't exist or e-mail of account isn't default e-mail (account: %d, ip: %s).\n", server[id].name, account_id, ip);
+ ShowNotice("Char-server '%s': Attempt to create an e-mail on an account with a default e-mail REFUSED - account doesn't exist or e-mail of account isn't default e-mail (account: %d, ip: %s).\n", login->dbs->server[id].name, account_id, ip);
else {
memcpy(acc.email, email, sizeof(acc.email));
- ShowNotice("Char-server '%s': Create an e-mail on an account with a default e-mail (account: %d, new e-mail: %s, ip: %s).\n", server[id].name, account_id, email, ip);
+ ShowNotice("Char-server '%s': Create an e-mail on an account with a default e-mail (account: %d, new e-mail: %s, ip: %s).\n", login->dbs->server[id].name, account_id, email, ip);
// Save
accounts->save(accounts, &acc);
}
}
-void login_fromchar_account(int fd, int account_id, struct mmo_account *acc)
+static void login_fromchar_account(int fd, int account_id, struct mmo_account *acc)
{
WFIFOHEAD(fd,72);
WFIFOW(fd,0) = 0x2717;
@@ -419,7 +424,7 @@ void login_fromchar_account(int fd, int account_id, struct mmo_account *acc)
WFIFOSET(fd,72);
}
-void login_fromchar_parse_account_data(int fd, int id, const char *const ip)
+static void login_fromchar_parse_account_data(int fd, int id, const char *const ip)
{
struct mmo_account acc;
@@ -428,7 +433,7 @@ void login_fromchar_parse_account_data(int fd, int id, const char *const ip)
if( !accounts->load_num(accounts, &acc, account_id) )
{
- ShowNotice("Char-server '%s': account %d NOT found (ip: %s).\n", server[id].name, account_id, ip);
+ ShowNotice("Char-server '%s': account %d NOT found (ip: %s).\n", login->dbs->server[id].name, account_id, ip);
login->fromchar_account(fd, account_id, NULL);
}
else {
@@ -436,20 +441,20 @@ void login_fromchar_parse_account_data(int fd, int id, const char *const ip)
}
}
-void login_fromchar_pong(int fd)
+static void login_fromchar_pong(int fd)
{
WFIFOHEAD(fd,2);
WFIFOW(fd,0) = 0x2718;
WFIFOSET(fd,2);
}
-void login_fromchar_parse_ping(int fd)
+static void login_fromchar_parse_ping(int fd)
{
RFIFOSKIP(fd,2);
login->fromchar_pong(fd);
}
-void login_fromchar_parse_change_email(int fd, int id, const char *const ip)
+static void login_fromchar_parse_change_email(int fd, int id, const char *const ip)
{
struct mmo_account acc;
char actual_email[40];
@@ -461,28 +466,28 @@ void login_fromchar_parse_change_email(int fd, int id, const char *const ip)
RFIFOSKIP(fd, 86);
if( e_mail_check(actual_email) == 0 )
- ShowNotice("Char-server '%s': Attempt to modify an e-mail on an account (@email GM command), but actual email is invalid (account: %d, ip: %s)\n", server[id].name, account_id, ip);
+ ShowNotice("Char-server '%s': Attempt to modify an e-mail on an account (@email GM command), but actual email is invalid (account: %d, ip: %s)\n", login->dbs->server[id].name, account_id, ip);
else
if( e_mail_check(new_email) == 0 )
- ShowNotice("Char-server '%s': Attempt to modify an e-mail on an account (@email GM command) with a invalid new e-mail (account: %d, ip: %s)\n", server[id].name, account_id, ip);
+ ShowNotice("Char-server '%s': Attempt to modify an e-mail on an account (@email GM command) with a invalid new e-mail (account: %d, ip: %s)\n", login->dbs->server[id].name, account_id, ip);
else
if( strcmpi(new_email, "a@a.com") == 0 )
- ShowNotice("Char-server '%s': Attempt to modify an e-mail on an account (@email GM command) with a default e-mail (account: %d, ip: %s)\n", server[id].name, account_id, ip);
+ ShowNotice("Char-server '%s': Attempt to modify an e-mail on an account (@email GM command) with a default e-mail (account: %d, ip: %s)\n", login->dbs->server[id].name, account_id, ip);
else
if( !accounts->load_num(accounts, &acc, account_id) )
- ShowNotice("Char-server '%s': Attempt to modify an e-mail on an account (@email GM command), but account doesn't exist (account: %d, ip: %s).\n", server[id].name, account_id, ip);
+ ShowNotice("Char-server '%s': Attempt to modify an e-mail on an account (@email GM command), but account doesn't exist (account: %d, ip: %s).\n", login->dbs->server[id].name, account_id, ip);
else
if( strcmpi(acc.email, actual_email) != 0 )
- ShowNotice("Char-server '%s': Attempt to modify an e-mail on an account (@email GM command), but actual e-mail is incorrect (account: %d (%s), actual e-mail: %s, proposed e-mail: %s, ip: %s).\n", server[id].name, account_id, acc.userid, acc.email, actual_email, ip);
+ ShowNotice("Char-server '%s': Attempt to modify an e-mail on an account (@email GM command), but actual e-mail is incorrect (account: %d (%s), actual e-mail: %s, proposed e-mail: %s, ip: %s).\n", login->dbs->server[id].name, account_id, acc.userid, acc.email, actual_email, ip);
else {
safestrncpy(acc.email, new_email, sizeof(acc.email));
- ShowNotice("Char-server '%s': Modify an e-mail on an account (@email GM command) (account: %d (%s), new e-mail: %s, ip: %s).\n", server[id].name, account_id, acc.userid, new_email, ip);
+ ShowNotice("Char-server '%s': Modify an e-mail on an account (@email GM command) (account: %d (%s), new e-mail: %s, ip: %s).\n", login->dbs->server[id].name, account_id, acc.userid, new_email, ip);
// Save
accounts->save(accounts, &acc);
}
}
-void login_fromchar_account_update_other(int account_id, unsigned int state)
+static void login_fromchar_account_update_other(int account_id, unsigned int state)
{
uint8 buf[11];
WBUFW(buf,0) = 0x2731;
@@ -492,7 +497,7 @@ void login_fromchar_account_update_other(int account_id, unsigned int state)
charif_sendallwos(-1, buf, 11);
}
-void login_fromchar_parse_account_update(int fd, int id, const char *const ip)
+static void login_fromchar_parse_account_update(int fd, int id, const char *const ip)
{
struct mmo_account acc;
@@ -501,12 +506,12 @@ void login_fromchar_parse_account_update(int fd, int id, const char *const ip)
RFIFOSKIP(fd,10);
if( !accounts->load_num(accounts, &acc, account_id) )
- ShowNotice("Char-server '%s': Error of Status change (account: %d not found, suggested status %u, ip: %s).\n", server[id].name, account_id, state, ip);
+ ShowNotice("Char-server '%s': Error of Status change (account: %d not found, suggested status %u, ip: %s).\n", login->dbs->server[id].name, account_id, state, ip);
else
if( acc.state == state )
- ShowNotice("Char-server '%s': Error of Status change - actual status is already the good status (account: %d, status %u, ip: %s).\n", server[id].name, account_id, state, ip);
+ ShowNotice("Char-server '%s': Error of Status change - actual status is already the good status (account: %d, status %u, ip: %s).\n", login->dbs->server[id].name, account_id, state, ip);
else {
- ShowNotice("Char-server '%s': Status change (account: %d, new status %u, ip: %s).\n", server[id].name, account_id, state, ip);
+ ShowNotice("Char-server '%s': Status change (account: %d, new status %u, ip: %s).\n", login->dbs->server[id].name, account_id, state, ip);
acc.state = state;
// Save
@@ -519,7 +524,7 @@ void login_fromchar_parse_account_update(int fd, int id, const char *const ip)
}
}
-void login_fromchar_ban(int account_id, time_t timestamp)
+static void login_fromchar_ban(int account_id, time_t timestamp)
{
uint8 buf[11];
WBUFW(buf,0) = 0x2731;
@@ -529,7 +534,7 @@ void login_fromchar_ban(int account_id, time_t timestamp)
charif_sendallwos(-1, buf, 11);
}
-void login_fromchar_parse_ban(int fd, int id, const char *const ip)
+static void login_fromchar_parse_ban(int fd, int id, const char *const ip)
{
struct mmo_account acc;
@@ -543,7 +548,7 @@ void login_fromchar_parse_ban(int fd, int id, const char *const ip)
RFIFOSKIP(fd,18);
if (!accounts->load_num(accounts, &acc, account_id)) {
- ShowNotice("Char-server '%s': Error of ban request (account: %d not found, ip: %s).\n", server[id].name, account_id, ip);
+ ShowNotice("Char-server '%s': Error of ban request (account: %d not found, ip: %s).\n", login->dbs->server[id].name, account_id, ip);
} else {
time_t timestamp;
struct tm *tmtime;
@@ -560,14 +565,14 @@ void login_fromchar_parse_ban(int fd, int id, const char *const ip)
tmtime->tm_sec += sec;
timestamp = mktime(tmtime);
if (timestamp == -1) {
- ShowNotice("Char-server '%s': Error of ban request (account: %d, invalid date, ip: %s).\n", server[id].name, account_id, ip);
+ ShowNotice("Char-server '%s': Error of ban request (account: %d, invalid date, ip: %s).\n", login->dbs->server[id].name, account_id, ip);
} else if( timestamp <= time(NULL) || timestamp == 0 ) {
- ShowNotice("Char-server '%s': Error of ban request (account: %d, new date unbans the account, ip: %s).\n", server[id].name, account_id, ip);
+ ShowNotice("Char-server '%s': Error of ban request (account: %d, new date unbans the account, ip: %s).\n", login->dbs->server[id].name, account_id, ip);
} else {
char tmpstr[24];
timestamp2string(tmpstr, sizeof(tmpstr), timestamp, login->config->date_format);
ShowNotice("Char-server '%s': Ban request (account: %d, new final date of banishment: %ld (%s), ip: %s).\n",
- server[id].name, account_id, (long)timestamp, tmpstr, ip);
+ login->dbs->server[id].name, account_id, (long)timestamp, tmpstr, ip);
acc.unban_time = timestamp;
@@ -579,7 +584,7 @@ void login_fromchar_parse_ban(int fd, int id, const char *const ip)
}
}
-void login_fromchar_change_sex_other(int account_id, char sex)
+static void login_fromchar_change_sex_other(int account_id, char sex)
{
unsigned char buf[7];
WBUFW(buf,0) = 0x2723;
@@ -588,7 +593,7 @@ void login_fromchar_change_sex_other(int account_id, char sex)
charif_sendallwos(-1, buf, 7);
}
-void login_fromchar_parse_change_sex(int fd, int id, const char *const ip)
+static void login_fromchar_parse_change_sex(int fd, int id, const char *const ip)
{
struct mmo_account acc;
@@ -596,15 +601,15 @@ void login_fromchar_parse_change_sex(int fd, int id, const char *const ip)
RFIFOSKIP(fd,6);
if( !accounts->load_num(accounts, &acc, account_id) )
- ShowNotice("Char-server '%s': Error of sex change (account: %d not found, ip: %s).\n", server[id].name, account_id, ip);
+ ShowNotice("Char-server '%s': Error of sex change (account: %d not found, ip: %s).\n", login->dbs->server[id].name, account_id, ip);
else
if( acc.sex == 'S' )
- ShowNotice("Char-server '%s': Error of sex change - account to change is a Server account (account: %d, ip: %s).\n", server[id].name, account_id, ip);
+ ShowNotice("Char-server '%s': Error of sex change - account to change is a Server account (account: %d, ip: %s).\n", login->dbs->server[id].name, account_id, ip);
else
{
char sex = ( acc.sex == 'M' ) ? 'F' : 'M'; //Change gender
- ShowNotice("Char-server '%s': Sex change (account: %d, new sex %c, ip: %s).\n", server[id].name, account_id, sex, ip);
+ ShowNotice("Char-server '%s': Sex change (account: %d, new sex %c, ip: %s).\n", login->dbs->server[id].name, account_id, sex, ip);
acc.sex = sex;
// Save
@@ -615,21 +620,21 @@ void login_fromchar_parse_change_sex(int fd, int id, const char *const ip)
}
}
-void login_fromchar_parse_account_reg2(int fd, int id, const char *const ip)
+static void login_fromchar_parse_account_reg2(int fd, int id, const char *const ip)
{
struct mmo_account acc;
int account_id = RFIFOL(fd,4);
if( !accounts->load_num(accounts, &acc, account_id) )
- ShowStatus("Char-server '%s': receiving (from the char-server) of account_reg2 (account: %d not found, ip: %s).\n", server[id].name, account_id, ip);
+ ShowStatus("Char-server '%s': receiving (from the char-server) of account_reg2 (account: %d not found, ip: %s).\n", login->dbs->server[id].name, account_id, ip);
else {
- mmo_save_accreg2(accounts,fd,account_id,RFIFOL(fd, 8));
+ account->mmo_save_accreg2(accounts,fd,account_id,RFIFOL(fd, 8));
}
RFIFOSKIP(fd,RFIFOW(fd,2));
}
-void login_fromchar_parse_unban(int fd, int id, const char *const ip)
+static void login_fromchar_parse_unban(int fd, int id, const char *const ip)
{
struct mmo_account acc;
@@ -637,31 +642,31 @@ void login_fromchar_parse_unban(int fd, int id, const char *const ip)
RFIFOSKIP(fd,6);
if( !accounts->load_num(accounts, &acc, account_id) )
- ShowNotice("Char-server '%s': Error of Unban request (account: %d not found, ip: %s).\n", server[id].name, account_id, ip);
+ ShowNotice("Char-server '%s': Error of Unban request (account: %d not found, ip: %s).\n", login->dbs->server[id].name, account_id, ip);
else
if( acc.unban_time == 0 )
- ShowNotice("Char-server '%s': Error of Unban request (account: %d, no change for unban date, ip: %s).\n", server[id].name, account_id, ip);
+ ShowNotice("Char-server '%s': Error of Unban request (account: %d, no change for unban date, ip: %s).\n", login->dbs->server[id].name, account_id, ip);
else
{
- ShowNotice("Char-server '%s': Unban request (account: %d, ip: %s).\n", server[id].name, account_id, ip);
+ ShowNotice("Char-server '%s': Unban request (account: %d, ip: %s).\n", login->dbs->server[id].name, account_id, ip);
acc.unban_time = 0;
accounts->save(accounts, &acc);
}
}
-void login_fromchar_parse_account_online(int fd, int id)
+static void login_fromchar_parse_account_online(int fd, int id)
{
login->add_online_user(id, RFIFOL(fd,2));
RFIFOSKIP(fd,6);
}
-void login_fromchar_parse_account_offline(int fd)
+static void login_fromchar_parse_account_offline(int fd)
{
login->remove_online_user(RFIFOL(fd,2));
RFIFOSKIP(fd,6);
}
-void login_fromchar_parse_online_accounts(int fd, int id)
+static void login_fromchar_parse_online_accounts(int fd, int id)
{
uint32 i, users;
login->online_db->foreach(login->online_db, login->online_db_setoffline, id); //Set all chars from this char-server offline first
@@ -678,30 +683,30 @@ void login_fromchar_parse_online_accounts(int fd, int id)
}
}
-void login_fromchar_parse_request_account_reg2(int fd)
+static void login_fromchar_parse_request_account_reg2(int fd)
{
int account_id = RFIFOL(fd,2);
int char_id = RFIFOL(fd,6);
RFIFOSKIP(fd,10);
- mmo_send_accreg2(accounts,fd,account_id,char_id);
+ account->mmo_send_accreg2(accounts,fd,account_id,char_id);
}
-void login_fromchar_parse_update_wan_ip(int fd, int id)
+static void login_fromchar_parse_update_wan_ip(int fd, int id)
{
- server[id].ip = ntohl(RFIFOL(fd,2));
- ShowInfo("Updated IP of Server #%d to %u.%u.%u.%u.\n",id, CONVIP(server[id].ip));
+ login->dbs->server[id].ip = ntohl(RFIFOL(fd,2));
+ ShowInfo("Updated IP of Server #%d to %u.%u.%u.%u.\n",id, CONVIP(login->dbs->server[id].ip));
RFIFOSKIP(fd,6);
}
-void login_fromchar_parse_all_offline(int fd, int id)
+static void login_fromchar_parse_all_offline(int fd, int id)
{
ShowInfo("Setting accounts from char-server %d offline.\n", id);
login->online_db->foreach(login->online_db, login->online_db_setoffline, id);
RFIFOSKIP(fd,2);
}
-void login_fromchar_parse_change_pincode(int fd)
+static void login_fromchar_parse_change_pincode(int fd)
{
struct mmo_account acc;
@@ -713,7 +718,7 @@ void login_fromchar_parse_change_pincode(int fd)
RFIFOSKIP(fd,11);
}
-bool login_fromchar_parse_wrong_pincode(int fd)
+static bool login_fromchar_parse_wrong_pincode(int fd)
{
struct mmo_account acc;
@@ -725,7 +730,7 @@ bool login_fromchar_parse_wrong_pincode(int fd)
return true;
}
- login_log(sockt->host2ip(acc.last_ip), acc.userid, 100, "PIN Code check failed"); // FIXME: Do we really want to log this with the same code as successful logins?
+ loginlog->log(sockt->host2ip(acc.last_ip), acc.userid, 100, "PIN Code check failed"); // FIXME: Do we really want to log this with the same code as successful logins?
}
login->remove_online_user(acc.account_id);
@@ -733,7 +738,7 @@ bool login_fromchar_parse_wrong_pincode(int fd)
return false;
}
-void login_fromchar_accinfo(int fd, int account_id, int u_fd, int u_aid, int u_group, int map_fd, struct mmo_account *acc)
+static void login_fromchar_accinfo(int fd, int account_id, int u_fd, int u_aid, int u_group, int map_fd, struct mmo_account *acc)
{
if (acc)
{
@@ -773,7 +778,7 @@ void login_fromchar_accinfo(int fd, int account_id, int u_fd, int u_aid, int u_g
}
}
-void login_fromchar_parse_accinfo(int fd)
+static void login_fromchar_parse_accinfo(int fd)
{
struct mmo_account acc;
int account_id = RFIFOL(fd, 2), u_fd = RFIFOL(fd, 6), u_aid = RFIFOL(fd, 10), u_group = RFIFOL(fd, 14), map_fd = RFIFOL(fd, 18);
@@ -788,14 +793,14 @@ void login_fromchar_parse_accinfo(int fd)
//--------------------------------
// Packet parsing for char-servers
//--------------------------------
-int login_parse_fromchar(int fd)
+static int login_parse_fromchar(int fd)
{
int id;
uint32 ipl;
char ip[16];
- ARR_FIND( 0, ARRAYLENGTH(server), id, server[id].fd == fd );
- if( id == ARRAYLENGTH(server) )
+ ARR_FIND(0, ARRAYLENGTH(login->dbs->server), id, login->dbs->server[id].fd == fd);
+ if (id == ARRAYLENGTH(login->dbs->server))
{// not a char server
ShowDebug("login_parse_fromchar: Disconnecting invalid session #%d (is not a char-server)\n", fd);
sockt->eof(fd);
@@ -806,12 +811,12 @@ int login_parse_fromchar(int fd)
if( sockt->session[fd]->flag.eof )
{
sockt->close(fd);
- server[id].fd = -1;
- chrif_on_disconnect(id);
+ login->dbs->server[id].fd = -1;
+ lchrif->on_disconnect(id);
return 0;
}
- ipl = server[id].ip;
+ ipl = login->dbs->server[id].ip;
sockt->ip2str(ipl, ip);
while (RFIFOREST(fd) >= 2) {
@@ -992,7 +997,8 @@ int login_parse_fromchar(int fd)
//-------------------------------------
// Make new account
//-------------------------------------
-int login_mmo_auth_new(const char* userid, const char* pass, const char sex, const char* last_ip) {
+static int login_mmo_auth_new(const char *userid, const char *pass, const char sex, const char *last_ip)
+{
static int num_regs = 0; // registration counter
static int64 new_reg_tick = 0;
int64 tick = timer->gettick();
@@ -1054,7 +1060,8 @@ int login_mmo_auth_new(const char* userid, const char* pass, const char sex, con
// Check/authentication of a connection
//-----------------------------------------------------
// TODO: Map result values to an enum (or at least document them)
-int login_mmo_auth(struct login_session_data* sd, bool isServer) {
+static int login_mmo_auth(struct login_session_data *sd, bool isServer)
+{
struct mmo_account acc;
size_t len;
@@ -1191,7 +1198,7 @@ int login_mmo_auth(struct login_session_data* sd, bool isServer) {
return -1; // account OK
}
-void login_kick(struct login_session_data* sd)
+static void login_kick(struct login_session_data *sd)
{
uint8 buf[6];
nullpo_retv(sd);
@@ -1200,7 +1207,7 @@ void login_kick(struct login_session_data* sd)
charif_sendallwos(-1, buf, 6);
}
-void login_auth_ok(struct login_session_data* sd)
+static void login_auth_ok(struct login_session_data *sd)
{
int fd = 0;
uint32 ip;
@@ -1258,7 +1265,7 @@ void login_auth_ok(struct login_session_data* sd)
return;
}
- login_log(ip, sd->userid, 100, "login ok");
+ loginlog->log(ip, sd->userid, 100, "login ok");
ShowStatus("Connection of the account '%s' accepted.\n", sd->userid);
// create temporary auth entry
@@ -1285,7 +1292,7 @@ void login_auth_ok(struct login_session_data* sd)
}
}
-void login_auth_failed(struct login_session_data *sd, int result)
+static void login_auth_failed(struct login_session_data *sd, int result)
{
int fd;
uint32 ip;
@@ -1322,11 +1329,11 @@ void login_auth_failed(struct login_session_data *sd, int result)
default : error = "Unknown Error."; break;
}
- login_log(ip, sd->userid, result, error); // FIXME: result can be 100, conflicting with the value 100 we use for successful login...
+ loginlog->log(ip, sd->userid, result, error); // FIXME: result can be 100, conflicting with the value 100 we use for successful login...
}
if (result == 1 && login->config->dynamic_pass_failure_ban && !sockt->trusted_ip_check(ip))
- ipban_log(ip); // log failed password attempt
+ ipban->log(ip); // log failed password attempt
if (result == 6) {
struct mmo_account acc = { 0 };
@@ -1336,8 +1343,8 @@ void login_auth_failed(struct login_session_data *sd, int result)
lclif->auth_failed(fd, ban_time, result);
}
-bool login_client_login(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
-bool login_client_login(int fd, struct login_session_data *sd)
+static bool login_client_login(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static bool login_client_login(int fd, struct login_session_data *sd)
{
int result;
char ip[16];
@@ -1360,8 +1367,44 @@ bool login_client_login(int fd, struct login_session_data *sd)
return false;
}
-void login_char_server_connection_status(int fd, struct login_session_data* sd, uint8 status) __attribute__((nonnull (2)));
-void login_char_server_connection_status(int fd, struct login_session_data* sd, uint8 status)
+static bool login_client_login_otp(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static bool login_client_login_otp(int fd, struct login_session_data *sd)
+{
+#if PACKETVER_MAIN_NUM >= 20170621 || PACKETVER_RE_NUM >= 20170621 || defined(PACKETVER_ZERO)
+ // send ok response with fake token
+ const int len = sizeof(struct PACKET_AC_LOGIN_OTP) + 6; // + "token" string
+ WFIFOHEAD(fd, len);
+ struct PACKET_AC_LOGIN_OTP *packet = WP2PTR(sd->fd);
+ memset(packet, 0, len);
+ packet->packet_id = HEADER_AC_LOGIN_OTP;
+ packet->packet_len = len;
+ packet->loginFlag = 0; // normal login
+#if PACKETVER_MAIN_NUM >= 20171213 || PACKETVER_RE_NUM >= 20171213 || PACKETVER_ZERO_NUM >= 20171123
+ safestrncpy(packet->loginFlag2, "S1000", 6);
+#endif // PACKETVER_MAIN_NUM >= 20171213 || PACKETVER_RE_NUM >= 20171213 || PACKETVER_ZERO_NUM >= 20171123
+
+ safestrncpy(packet->token, "token", 6);
+ WFIFOSET(fd, len);
+ return true;
+#else // PACKETVER_MAIN_NUM >= 20170621 || PACKETVER_RE_NUM >= 20170621 || defined(PACKETVER_ZERO)
+ return false;
+#endif // PACKETVER_MAIN_NUM >= 20170621 || PACKETVER_RE_NUM >= 20170621 || defined(PACKETVER_ZERO)
+}
+
+static void login_client_login_mobile_otp_request(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static void login_client_login_mobile_otp_request(int fd, struct login_session_data *sd)
+{
+#if PACKETVER_MAIN_NUM >= 20181114 || PACKETVER_RE_NUM >= 20181114 || defined(PACKETVER_ZERO)
+ WFIFOHEAD(sd->fd, sizeof(struct PACKET_AC_REQ_MOBILE_OTP));
+ struct PACKET_AC_REQ_MOBILE_OTP *packet = WP2PTR(sd->fd);
+ packet->packet_id = HEADER_AC_REQ_MOBILE_OTP;
+ packet->aid = sd->account_id;
+ WFIFOSET(fd, sizeof(struct PACKET_AC_REQ_MOBILE_OTP));
+#endif
+}
+
+static void login_char_server_connection_status(int fd, struct login_session_data* sd, uint8 status) __attribute__((nonnull (2)));
+static void login_char_server_connection_status(int fd, struct login_session_data* sd, uint8 status)
{
WFIFOHEAD(fd,3);
WFIFOW(fd,0) = 0x2711;
@@ -1370,8 +1413,8 @@ void login_char_server_connection_status(int fd, struct login_session_data* sd,
}
// CA_CHARSERVERCONNECT
-void login_parse_request_connection(int fd, struct login_session_data* sd, const char *const ip, uint32 ipl) __attribute__((nonnull (2, 3)));
-void login_parse_request_connection(int fd, struct login_session_data* sd, const char *const ip, uint32 ipl)
+static void login_parse_request_connection(int fd, struct login_session_data* sd, const char *const ip, uint32 ipl) __attribute__((nonnull (2, 3)));
+static void login_parse_request_connection(int fd, struct login_session_data* sd, const char *const ip, uint32 ipl)
{
char server_name[20];
char message[256];
@@ -1395,28 +1438,29 @@ void login_parse_request_connection(int fd, struct login_session_data* sd, const
ShowInfo("Connection request of the char-server '%s' @ %u.%u.%u.%u:%u (account: '%s', pass: '%s', ip: '%s')\n", server_name, CONVIP(server_ip), server_port, sd->userid, sd->passwd, ip);
sprintf(message, "charserver - %s@%u.%u.%u.%u:%u", server_name, CONVIP(server_ip), server_port);
- login_log(sockt->session[fd]->client_addr, sd->userid, 100, message);
+ loginlog->log(sockt->session[fd]->client_addr, sd->userid, 100, message);
result = login->mmo_auth(sd, true);
if (core->runflag == LOGINSERVER_ST_RUNNING &&
result == -1 &&
sd->sex == 'S' &&
sd->account_id >= 0 &&
- sd->account_id < ARRAYLENGTH(server) &&
- !sockt->session_is_valid(server[sd->account_id].fd) &&
+ sd->account_id < ARRAYLENGTH(login->dbs->server) &&
+ !sockt->session_is_valid(login->dbs->server[sd->account_id].fd) &&
sockt->allowed_ip_check(ipl))
{
ShowStatus("Connection of the char-server '%s' accepted.\n", server_name);
- safestrncpy(server[sd->account_id].name, server_name, sizeof(server[sd->account_id].name));
- server[sd->account_id].fd = fd;
- server[sd->account_id].ip = server_ip;
- server[sd->account_id].port = server_port;
- server[sd->account_id].users = 0;
- server[sd->account_id].type = type;
- server[sd->account_id].new_ = new_;
+ safestrncpy(login->dbs->server[sd->account_id].name, server_name, sizeof(login->dbs->server[sd->account_id].name));
+ login->dbs->server[sd->account_id].fd = fd;
+ login->dbs->server[sd->account_id].ip = server_ip;
+ login->dbs->server[sd->account_id].port = server_port;
+ login->dbs->server[sd->account_id].users = 0;
+ login->dbs->server[sd->account_id].type = type;
+ login->dbs->server[sd->account_id].new_ = new_;
sockt->session[fd]->func_parse = login->parse_fromchar;
sockt->session[fd]->flag.server = 1;
+ sockt->session[fd]->flag.validate = 0;
sockt->realloc_fifo(fd, FIFOSIZE_SERVERLINK, FIFOSIZE_SERVERLINK);
// send connection success
@@ -1429,7 +1473,7 @@ void login_parse_request_connection(int fd, struct login_session_data* sd, const
}
}
-void login_config_set_defaults(void)
+static void login_config_set_defaults(void)
{
login->config->login_ip = INADDR_ANY;
login->config->login_port = 6900;
@@ -1468,7 +1512,7 @@ void login_config_set_defaults(void)
*
* @retval false in case of error.
*/
-bool login_config_read_inter(const char *filename, struct config_t *config, bool imported)
+static bool login_config_read_inter(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
const char *str = NULL;
@@ -1508,7 +1552,7 @@ bool login_config_read_inter(const char *filename, struct config_t *config, bool
*
* @retval false in case of error.
*/
-bool login_config_read_console(const char *filename, struct config_t *config, bool imported)
+static bool login_config_read_console(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
@@ -1541,7 +1585,7 @@ bool login_config_read_console(const char *filename, struct config_t *config, bo
*
* @retval false in case of error.
*/
-bool login_config_read_log(const char *filename, struct config_t *config, bool imported)
+static bool login_config_read_log(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
@@ -1569,10 +1613,10 @@ bool login_config_read_log(const char *filename, struct config_t *config, bool i
*
* @retval false in case of error.
*/
-bool login_config_read_account(const char *filename, struct config_t *config, bool imported)
+static bool login_config_read_account(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
- AccountDB *db = account_engine[0].db;
+ AccountDB *db = login->dbs->account_engine->db;
bool retval = true;
nullpo_retr(false, filename);
@@ -1595,7 +1639,7 @@ bool login_config_read_account(const char *filename, struct config_t *config, bo
if (!db->set_property(db, config, imported))
retval = false;
- if (!ipban_config_read(filename, config, imported))
+ if (!ipban->config_read(filename, config, imported))
retval = false;
return retval;
@@ -1604,7 +1648,7 @@ bool login_config_read_account(const char *filename, struct config_t *config, bo
/**
* Frees login->config->client_hash_nodes
**/
-void clear_client_hash_nodes(void)
+static void login_clear_client_hash_nodes(void)
{
struct client_hash_node *node = login->config->client_hash_nodes;
@@ -1618,16 +1662,16 @@ void clear_client_hash_nodes(void)
}
/**
- * Reads information from login_configuration.permission.hash.md5_hashes.
+ * Reads information from login_configuration.permission.hash.md5_hashes (unused function)
*
* @param setting The setting to read from.
*/
-void login_config_set_md5hash(struct config_setting_t *setting)
+static void login_config_set_md5hash(struct config_setting_t *setting)
{
int i;
int count = libconfig->setting_length(setting);
- clear_client_hash_nodes();
+ login->clear_client_hash_nodes();
// There's no need to parse if it's disabled or if there's no list
if (count <= 0 || !login->config->client_hash_check)
@@ -1685,7 +1729,7 @@ void login_config_set_md5hash(struct config_setting_t *setting)
*
* @retval false in case of error.
*/
-bool login_config_read_permission_hash(const char *filename, struct config_t *config, bool imported)
+static bool login_config_read_permission_hash(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
@@ -1702,7 +1746,7 @@ bool login_config_read_permission_hash(const char *filename, struct config_t *co
libconfig->setting_lookup_bool_real(setting, "enabled", &login->config->client_hash_check);
if ((setting = libconfig->lookup(config, "login_configuration/permission/hash/MD5_hashes")) != NULL)
- login_config_set_md5hash(setting);
+ login->config_set_md5hash(setting);
return true;
}
@@ -1710,7 +1754,7 @@ bool login_config_read_permission_hash(const char *filename, struct config_t *co
/**
* Clears login->config->dnsbl_servers, freeing any allocated memory.
*/
-void clear_dnsbl_servers(void)
+static void login_clear_dnsbl_servers(void)
{
while (VECTOR_LENGTH(login->config->dnsbl_servers) > 0) {
aFree(&VECTOR_POP(login->config->dnsbl_servers));
@@ -1723,12 +1767,12 @@ void clear_dnsbl_servers(void)
*
* @param setting The configuration setting to read from.
*/
-void login_config_set_dnsbl_servers(struct config_setting_t *setting)
+static void login_config_set_dnsbl_servers(struct config_setting_t *setting)
{
int i;
int count = libconfig->setting_length(setting);
- clear_dnsbl_servers();
+ login->clear_dnsbl_servers();
// There's no need to parse if it's disabled
if (count <= 0 || !login->config->use_dnsbl)
@@ -1755,7 +1799,7 @@ void login_config_set_dnsbl_servers(struct config_setting_t *setting)
*
* @retval false in case of error.
*/
-bool login_config_read_permission_blacklist(const char *filename, struct config_t *config, bool imported)
+static bool login_config_read_permission_blacklist(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
@@ -1772,7 +1816,7 @@ bool login_config_read_permission_blacklist(const char *filename, struct config_
libconfig->setting_lookup_bool_real(setting, "enabled", &login->config->use_dnsbl);
if ((setting = libconfig->lookup(config, "login_configuration/permission/DNS_blacklist/dnsbl_servers")) != NULL)
- login_config_set_dnsbl_servers(setting);
+ login->config_set_dnsbl_servers(setting);
return true;
}
@@ -1786,7 +1830,7 @@ bool login_config_read_permission_blacklist(const char *filename, struct config_
*
* @retval false in case of error.
*/
-bool login_config_read_permission(const char *filename, struct config_t *config, bool imported)
+static bool login_config_read_permission(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
bool retval = true;
@@ -1806,15 +1850,47 @@ bool login_config_read_permission(const char *filename, struct config_t *config,
libconfig->setting_lookup_bool_real(setting, "check_client_version", &login->config->check_client_version);
libconfig->setting_lookup_uint32(setting, "client_version_to_connect", &login->config->client_version_to_connect);
- if (!login_config_read_permission_hash(filename, config, imported))
+ if (!login->config_read_permission_hash(filename, config, imported))
retval = false;
- if (!login_config_read_permission_blacklist(filename, config, imported))
+ if (!login->config_read_permission_blacklist(filename, config, imported))
retval = false;
return retval;
}
/**
+ * Reads 'login_configuration.users_count' and initializes required variables.
+ *
+ * @param filename Path to configuration file (used in error and warning messages).
+ * @param config The current config being parsed.
+ * @param imported Whether the current config is imported from another file.
+ *
+ * @retval false in case of error.
+ */
+static bool login_config_read_users(const char *filename, struct config_t *config, bool imported)
+{
+ struct config_setting_t *setting = NULL;
+ bool retval = true;
+
+ nullpo_retr(false, filename);
+ nullpo_retr(false, config);
+
+ if ((setting = libconfig->lookup(config, "login_configuration/users_count")) == NULL) {
+ if (imported)
+ return true;
+ ShowError("login_config_read: login_configuration/users_count was not found in %s!\n", filename);
+ return false;
+ }
+
+ libconfig->setting_lookup_bool_real(setting, "send_user_count_description", &login->config->send_user_count_description);
+ libconfig->setting_lookup_uint32(setting, "low", &login->config->users_low);
+ libconfig->setting_lookup_uint32(setting, "medium", &login->config->users_medium);
+ libconfig->setting_lookup_uint32(setting, "high", &login->config->users_high);
+
+ return retval;
+}
+
+/**
* Reads the 'login-config' configuration file and initializes required variables.
*
* @param filename Path to configuration file.
@@ -1822,7 +1898,7 @@ bool login_config_read_permission(const char *filename, struct config_t *config,
*
* @retval false in case of error.
**/
-bool login_config_read(const char *filename, bool imported)
+static bool login_config_read(const char *filename, bool imported)
{
struct config_t config;
const char *import = NULL;
@@ -1833,18 +1909,20 @@ bool login_config_read(const char *filename, bool imported)
if (!libconfig->load_file(&config, filename))
return false; // Error message is already shown by libconfig->load_file
- if (!login_config_read_inter(filename, &config, imported))
+ if (!login->config_read_inter(filename, &config, imported))
+ retval = false;
+ if (!login->config_read_console(filename, &config, imported))
retval = false;
- if (!login_config_read_console(filename, &config, imported))
+ if (!login->config_read_log(filename, &config, imported))
retval = false;
- if (!login_config_read_log(filename, &config, imported))
+ if (!login->config_read_account(filename, &config, imported))
retval = false;
- if (!login_config_read_account(filename, &config, imported))
+ if (!login->config_read_permission(filename, &config, imported))
retval = false;
- if (!login_config_read_permission(filename, &config, imported))
+ if (!login->config_read_users(filename, &config, imported))
retval = false;
- if (!loginlog_config_read("conf/common/inter-server.conf", imported)) // Only inter-server
+ if (!loginlog->config_read("conf/common/inter-server.conf", imported)) // Only inter-server
retval = false;
if (!HPM->parse_conf(&config, filename, HPCT_LOGIN, imported))
@@ -1866,6 +1944,30 @@ bool login_config_read(const char *filename, bool imported)
return retval;
}
+/**
+ * Convert users count to colors.
+ *
+ * @param users Actual users count.
+ *
+ * @retval users count or color id.
+ **/
+static uint16 login_convert_users_to_colors(uint16 users)
+{
+#if PACKETVER >= 20170726
+ if (!login->config->send_user_count_description)
+ return 4;
+ if (users <= login->config->users_low)
+ return 0;
+ else if (users <= login->config->users_medium)
+ return 1;
+ else if (users <= login->config->users_high)
+ return 2;
+ return 3;
+#else
+ return users;
+#endif
+}
+
//--------------------------------------
// Function called at exit of the server
//--------------------------------------
@@ -1877,27 +1979,28 @@ int do_final(void)
HPM->event(HPET_FINAL);
- clear_client_hash_nodes();
- clear_dnsbl_servers();
+ login->clear_client_hash_nodes();
+ login->clear_dnsbl_servers();
- login_log(0, "login server", 100, "login server shutdown");
+ loginlog->log(0, "login server", 100, "login server shutdown");
if (login->config->log_login)
- loginlog_final();
+ loginlog->final();
- ipban_final();
+ ipban->final();
- if( account_engine[0].db )
+ if (login->dbs->account_engine->db)
{// destroy account engine
- account_engine[0].db->destroy(account_engine[0].db);
- account_engine[0].db = NULL;
+ login->dbs->account_engine->db->destroy(login->dbs->account_engine->db);
+ login->dbs->account_engine->db = NULL;
}
- accounts = NULL; // destroyed in account_engine
+ login->accounts = NULL; // destroyed in account_engine
+ accounts = NULL;
login->online_db->destroy(login->online_db, NULL);
login->auth_db->destroy(login->auth_db, NULL);
- for( i = 0; i < ARRAYLENGTH(server); ++i )
- chrif_server_destroy(i);
+ for (i = 0; i < ARRAYLENGTH(login->dbs->server); ++i)
+ lchrif->server_destroy(i);
if( login->fd != -1 )
{
@@ -1926,13 +2029,14 @@ void do_abort(void)
{
}
-void set_server_type(void) {
+void set_server_type(void)
+{
SERVER_TYPE = SERVER_TYPE_LOGIN;
}
/// Called when a terminate signal is received.
-void do_shutdown_login(void)
+static void do_shutdown_login(void)
{
if( core->runflag != LOGINSERVER_ST_SHUTDOWN )
{
@@ -1940,8 +2044,8 @@ void do_shutdown_login(void)
core->runflag = LOGINSERVER_ST_SHUTDOWN;
ShowStatus("Shutting down...\n");
// TODO proper shutdown procedure; kick all characters, wait for acks, ... [FlavioJS]
- for( id = 0; id < ARRAYLENGTH(server); ++id )
- chrif_server_reset(id);
+ for (id = 0; id < ARRAYLENGTH(login->dbs->server); ++id)
+ lchrif->server_reset(id);
sockt->flush_fifos();
core->runflag = CORE_ST_STOP;
}
@@ -1997,20 +2101,27 @@ void cmdline_args_init_local(void)
//------------------------------
// Login server initialization
//------------------------------
-int do_init(int argc, char** argv)
+int do_init(int argc, char **argv)
{
int i;
+ account_defaults();
+ login_defaults();
+
// initialize engine (to accept config settings)
- account_engine[0].db = account_engine[0].constructor();
- accounts = account_engine[0].db;
+ login->dbs->account_engine->constructor = account->db_sql;
+ login->dbs->account_engine->db = login->dbs->account_engine->constructor();
+ accounts = login->dbs->account_engine->db;
+ login->accounts = accounts;
if( accounts == NULL ) {
ShowFatalError("do_init: account engine 'sql' not found.\n");
exit(EXIT_FAILURE);
}
- login_defaults();
+ ipban_defaults();
+ lchrif_defaults();
lclif_defaults();
+ loginlog_defaults();
// read login-server configuration
login->config_set_defaults();
@@ -2049,15 +2160,15 @@ int do_init(int argc, char** argv)
login->config_read(login->LOGIN_CONF_NAME, false);
sockt->net_config_read(login->NET_CONF_NAME);
- for( i = 0; i < ARRAYLENGTH(server); ++i )
- chrif_server_init(i);
+ for (i = 0; i < ARRAYLENGTH(login->dbs->server); ++i)
+ lchrif->server_init(i);
// initialize logging
if (login->config->log_login)
- loginlog_init();
+ loginlog->init();
// initialize static and dynamic ipban system
- ipban_init();
+ ipban->init();
// Online user database init
login->online_db = idb_alloc(DB_OPT_RELEASE_DATA);
@@ -2068,6 +2179,7 @@ int do_init(int argc, char** argv)
// set default parser as lclif->parse function
sockt->set_defaultparse(lclif->parse);
+ sockt->validate = true;
// every 10 minutes cleanup online account db.
timer->add_func_list(login->online_data_cleanup, "login->online_data_cleanup");
@@ -2103,18 +2215,23 @@ int do_init(int argc, char** argv)
#endif // CONSOLE_INPUT
ShowStatus("The login-server is "CL_GREEN"ready"CL_RESET" (Server is listening on the port %u).\n\n", login->config->login_port);
- login_log(0, "login server", 100, "login server started");
+ loginlog->log(0, "login server", 100, "login server started");
HPM->event(HPET_READY);
return 0;
}
-void login_defaults(void) {
+void login_defaults(void)
+{
login = &login_s;
login->config = &login_config_;
login->accounts = accounts;
+ login->dbs = &logindbs;
+ login->dbs->account_engine = &account_engine;
+ login->dbs->account_engine->constructor = NULL;
+ login->dbs->account_engine->db = NULL;
login->mmo_auth = login_mmo_auth;
login->mmo_auth_new = login_mmo_auth_new;
@@ -2160,6 +2277,8 @@ void login_defaults(void) {
login->parse_fromchar = login_parse_fromchar;
login->client_login = login_client_login;
+ login->client_login_otp = login_client_login_otp;
+ login->client_login_mobile_otp_request = login_client_login_mobile_otp_request;
login->parse_request_connection = login_parse_request_connection;
login->auth_ok = login_auth_ok;
login->auth_failed = login_auth_failed;
@@ -2168,6 +2287,29 @@ void login_defaults(void) {
login->config_set_defaults = login_config_set_defaults;
login->config_read = login_config_read;
+ login->config_read_inter = login_config_read_inter;
+ login->config_read_console = login_config_read_console;
+ login->config_read_log = login_config_read_log;
+ login->config_read_account = login_config_read_account;
+ login->config_read_permission = login_config_read_permission;
+ login->config_read_permission_hash = login_config_read_permission_hash;
+ login->config_read_permission_blacklist = login_config_read_permission_blacklist;
+ login->config_read_users = login_config_read_users;
+ login->config_set_dnsbl_servers = login_config_set_dnsbl_servers;
+
+ login->clear_dnsbl_servers = login_clear_dnsbl_servers;
+ login->clear_client_hash_nodes = login_clear_client_hash_nodes;
+ login->config_set_md5hash = login_config_set_md5hash;
+ login->convert_users_to_colors = login_convert_users_to_colors;
login->LOGIN_CONF_NAME = NULL;
login->NET_CONF_NAME = NULL;
}
+
+void lchrif_defaults(void)
+{
+ lchrif = &lchrif_s;
+ lchrif->server_init = lchrif_server_init;
+ lchrif->server_destroy = lchrif_server_destroy;
+ lchrif->server_reset = lchrif_server_reset;
+ lchrif->on_disconnect = lchrif_on_disconnect;
+}
diff --git a/src/login/login.h b/src/login/login.h
index 5632e6529..7f74057c6 100644
--- a/src/login/login.h
+++ b/src/login/login.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -32,6 +32,8 @@
struct mmo_account;
struct AccountDB;
+struct config_t;
+struct config_setting_t;
enum E_LOGINSERVER_ST
{
@@ -119,6 +121,11 @@ struct Login_Config {
bool use_dnsbl; ///< dns blacklist blocking ?
VECTOR_DECL(char *) dnsbl_servers; ///< dnsbl servers
+ bool send_user_count_description;
+ uint32 users_low;
+ uint32 users_medium;
+ uint32 users_high;
+
bool client_hash_check; ///< flags for checking client md5
// TODO: VECTOR candidate
struct client_hash_node *client_hash_nodes; ///< linked list containg md5 hash for each gm group
@@ -150,6 +157,11 @@ struct online_login_data {
#define MAX_SERVERS 30
+struct s_login_dbs {
+ struct mmo_char_server server[MAX_SERVERS];
+ struct Account_engine *account_engine;
+};
+
/**
* Login.c Interface
**/
@@ -159,6 +171,7 @@ struct login_interface {
int fd;
struct Login_Config *config;
struct AccountDB* accounts;
+ struct s_login_dbs *dbs;
int (*mmo_auth) (struct login_session_data* sd, bool isServer);
int (*mmo_auth_new) (const char* userid, const char* pass, const char sex, const char* last_ip);
@@ -205,20 +218,45 @@ struct login_interface {
void (*auth_ok) (struct login_session_data* sd);
void (*auth_failed) (struct login_session_data* sd, int result);
bool (*client_login) (int fd, struct login_session_data *sd);
+ bool (*client_login_otp) (int fd, struct login_session_data *sd);
+ void (*client_login_mobile_otp_request) (int fd, struct login_session_data *sd);
void (*char_server_connection_status) (int fd, struct login_session_data* sd, uint8 status);
void (*parse_request_connection) (int fd, struct login_session_data* sd, const char *ip, uint32 ipl);
void (*config_set_defaults) (void);
bool (*config_read) (const char *filename, bool included);
+ bool (*config_read_inter) (const char *filename, struct config_t *config, bool imported);
+ bool (*config_read_console) (const char *filename, struct config_t *config, bool imported);
+ bool (*config_read_log) (const char *filename, struct config_t *config, bool imported);
+ bool (*config_read_account) (const char *filename, struct config_t *config, bool imported);
+ bool (*config_read_permission) (const char *filename, struct config_t *config, bool imported);
+ bool (*config_read_permission_hash) (const char *filename, struct config_t *config, bool imported);
+ bool (*config_read_permission_blacklist) (const char *filename, struct config_t *config, bool imported);
+ bool (*config_read_users) (const char *filename, struct config_t *config, bool imported);
+ void (*clear_dnsbl_servers) (void);
+ void (*config_set_dnsbl_servers) (struct config_setting_t *setting);
+ void (*clear_client_hash_nodes) (void);
+ void (*config_set_md5hash) (struct config_setting_t *setting);
+ uint16 (*convert_users_to_colors) (uint16 users);
char *LOGIN_CONF_NAME;
char *NET_CONF_NAME; ///< Network configuration filename
};
-#ifdef HERCULES_CORE
-extern struct mmo_char_server server[MAX_SERVERS];
+/**
+ * Login.c Interface
+ **/
+struct lchrif_interface {
+ void (*server_init) (int id);
+ void (*server_destroy) (int id);
+ void (*server_reset) (int id);
+ void (*on_disconnect) (int id);
+};
+#ifdef HERCULES_CORE
void login_defaults(void);
+void lchrif_defaults(void);
#endif // HERCULES_CORE
HPShared struct login_interface *login;
+HPShared struct lchrif_interface *lchrif;
#endif /* LOGIN_LOGIN_H */
diff --git a/src/login/loginlog_sql.c b/src/login/loginlog.c
index 7dff14990..19f269ab5 100644
--- a/src/login/loginlog_sql.c
+++ b/src/login/loginlog.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -33,37 +33,30 @@
#include <stdlib.h> // exit
-// Sql settings
-static char log_db_hostname[32] = "127.0.0.1";
-static uint16 log_db_port = 3306;
-static char log_db_username[32] = "ragnarok";
-static char log_db_password[100] = "ragnarok";
-static char log_db_database[32] = "ragnarok";
-static char log_codepage[32] = "";
-static char log_login_db[256] = "loginlog";
-static struct Sql *sql_handle = NULL;
-static bool enabled = false;
+static struct loginlog_interface loginlog_s;
+struct loginlog_interface *loginlog;
+static struct s_loginlog_dbs loginlogdbs;
// Returns the number of failed login attempts by the ip in the last minutes.
-unsigned long loginlog_failedattempts(uint32 ip, unsigned int minutes)
+static unsigned long loginlog_failedattempts(uint32 ip, unsigned int minutes)
{
unsigned long failures = 0;
- if( !enabled )
+ if( !loginlog->enabled )
return 0;
- if( SQL_ERROR == SQL->Query(sql_handle, "SELECT count(*) FROM `%s` WHERE `ip` = '%s' AND `rcode` = '1' AND `time` > NOW() - INTERVAL %u MINUTE",
- log_login_db, sockt->ip2str(ip,NULL), minutes) )// how many times failed account? in one ip.
- Sql_ShowDebug(sql_handle);
+ if( SQL_ERROR == SQL->Query(loginlog->sql_handle, "SELECT count(*) FROM `%s` WHERE `ip` = '%s' AND `rcode` = '1' AND `time` > NOW() - INTERVAL %u MINUTE",
+ loginlog->dbs->log_login_db, sockt->ip2str(ip,NULL), minutes) )// how many times failed account? in one ip.
+ Sql_ShowDebug(loginlog->sql_handle);
- if( SQL_SUCCESS == SQL->NextRow(sql_handle) )
+ if( SQL_SUCCESS == SQL->NextRow(loginlog->sql_handle) )
{
char* data;
- SQL->GetData(sql_handle, 0, &data, NULL);
+ SQL->GetData(loginlog->sql_handle, 0, &data, NULL);
failures = strtoul(data, NULL, 10);
- SQL->FreeResult(sql_handle);
+ SQL->FreeResult(loginlog->sql_handle);
}
return failures;
}
@@ -73,7 +66,7 @@ unsigned long loginlog_failedattempts(uint32 ip, unsigned int minutes)
* Records an event in the login log
*---------------------------------------------*/
// TODO: add an enum of rcode values
-void login_log(uint32 ip, const char* username, int rcode, const char* message)
+static void loginlog_log(uint32 ip, const char *username, int rcode, const char *message)
{
char esc_username[NAME_LENGTH*2+1];
char esc_message[255*2+1];
@@ -81,43 +74,43 @@ void login_log(uint32 ip, const char* username, int rcode, const char* message)
nullpo_retv(username);
nullpo_retv(message);
- if( !enabled )
+ if( !loginlog->enabled )
return;
- SQL->EscapeStringLen(sql_handle, esc_username, username, strnlen(username, NAME_LENGTH));
- SQL->EscapeStringLen(sql_handle, esc_message, message, strnlen(message, 255));
+ SQL->EscapeStringLen(loginlog->sql_handle, esc_username, username, strnlen(username, NAME_LENGTH));
+ SQL->EscapeStringLen(loginlog->sql_handle, esc_message, message, strnlen(message, 255));
- retcode = SQL->Query(sql_handle,
+ retcode = SQL->Query(loginlog->sql_handle,
"INSERT INTO `%s`(`time`,`ip`,`user`,`rcode`,`log`) VALUES (NOW(), '%s', '%s', '%d', '%s')",
- log_login_db, sockt->ip2str(ip,NULL), esc_username, rcode, esc_message);
+ loginlog->dbs->log_login_db, sockt->ip2str(ip,NULL), esc_username, rcode, esc_message);
if( retcode != SQL_SUCCESS )
- Sql_ShowDebug(sql_handle);
+ Sql_ShowDebug(loginlog->sql_handle);
}
-bool loginlog_init(void)
+static bool loginlog_init(void)
{
- sql_handle = SQL->Malloc();
+ loginlog->sql_handle = SQL->Malloc();
- if (SQL_ERROR == SQL->Connect(sql_handle, log_db_username, log_db_password,
- log_db_hostname, log_db_port, log_db_database)) {
- Sql_ShowDebug(sql_handle);
- SQL->Free(sql_handle);
+ if (SQL_ERROR == SQL->Connect(loginlog->sql_handle, loginlog->dbs->log_db_username, loginlog->dbs->log_db_password,
+ loginlog->dbs->log_db_hostname, loginlog->dbs->log_db_port, loginlog->dbs->log_db_database)) {
+ Sql_ShowDebug(loginlog->sql_handle);
+ SQL->Free(loginlog->sql_handle);
exit(EXIT_FAILURE);
}
- if (log_codepage[0] != '\0' && SQL_ERROR == SQL->SetEncoding(sql_handle, log_codepage))
- Sql_ShowDebug(sql_handle);
+ if (loginlog->dbs->log_codepage[0] != '\0' && SQL_ERROR == SQL->SetEncoding(loginlog->sql_handle, loginlog->dbs->log_codepage))
+ Sql_ShowDebug(loginlog->sql_handle);
- enabled = true;
+ loginlog->enabled = true;
return true;
}
-bool loginlog_final(void)
+static bool loginlog_final(void)
{
- SQL->Free(sql_handle);
- sql_handle = NULL;
+ SQL->Free(loginlog->sql_handle);
+ loginlog->sql_handle = NULL;
return true;
}
@@ -131,7 +124,7 @@ bool loginlog_final(void)
*
* @retval false in case of error.
*/
-bool loginlog_config_read_names(const char *filename, struct config_t *config, bool imported)
+static bool loginlog_config_read_names(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
@@ -145,7 +138,7 @@ bool loginlog_config_read_names(const char *filename, struct config_t *config, b
return false;
}
- libconfig->setting_lookup_mutable_string(setting, "login_db", log_login_db, sizeof(log_login_db));
+ libconfig->setting_lookup_mutable_string(setting, "login_db", loginlog->dbs->log_login_db, sizeof(loginlog->dbs->log_login_db));
return true;
}
@@ -160,7 +153,7 @@ bool loginlog_config_read_names(const char *filename, struct config_t *config, b
*
* @retval false in case of error.
*/
-bool loginlog_config_read_log(const char *filename, struct config_t *config, bool imported)
+static bool loginlog_config_read_log(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
@@ -174,13 +167,13 @@ bool loginlog_config_read_log(const char *filename, struct config_t *config, boo
return false;
}
- libconfig->setting_lookup_mutable_string(setting, "db_hostname", log_db_hostname, sizeof(log_db_hostname));
- libconfig->setting_lookup_mutable_string(setting, "db_database", log_db_database, sizeof(log_db_database));
- libconfig->setting_lookup_mutable_string(setting, "db_username", log_db_username, sizeof(log_db_username));
- libconfig->setting_lookup_mutable_string(setting, "db_password", log_db_password, sizeof(log_db_password));
+ libconfig->setting_lookup_mutable_string(setting, "db_hostname", loginlog->dbs->log_db_hostname, sizeof(loginlog->dbs->log_db_hostname));
+ libconfig->setting_lookup_mutable_string(setting, "db_database", loginlog->dbs->log_db_database, sizeof(loginlog->dbs->log_db_database));
+ libconfig->setting_lookup_mutable_string(setting, "db_username", loginlog->dbs->log_db_username, sizeof(loginlog->dbs->log_db_username));
+ libconfig->setting_lookup_mutable_string(setting, "db_password", loginlog->dbs->log_db_password, sizeof(loginlog->dbs->log_db_password));
- libconfig->setting_lookup_uint16(setting, "db_port", &log_db_port);
- libconfig->setting_lookup_mutable_string(setting, "codepage", log_codepage, sizeof(log_codepage));
+ libconfig->setting_lookup_uint16(setting, "db_port", &loginlog->dbs->log_db_port);
+ libconfig->setting_lookup_mutable_string(setting, "codepage", loginlog->dbs->log_codepage, sizeof(loginlog->dbs->log_codepage));
return true;
}
@@ -195,7 +188,7 @@ bool loginlog_config_read_log(const char *filename, struct config_t *config, boo
*
* @retval false in case of error.
**/
-bool loginlog_config_read(const char *filename, bool imported)
+static bool loginlog_config_read(const char *filename, bool imported)
{
struct config_t config;
const char *import = NULL;
@@ -206,16 +199,16 @@ bool loginlog_config_read(const char *filename, bool imported)
if (!libconfig->load_file(&config, filename))
return false; // Error message is already shown by libconfig->load_file
- if (!loginlog_config_read_names(filename, &config, imported))
+ if (!loginlog->config_read_names(filename, &config, imported))
retval = false;
- if (!loginlog_config_read_log(filename, &config, imported))
+ if (!loginlog->config_read_log(filename, &config, imported))
retval = false;
if (libconfig->lookup_string(&config, "import", &import) == CONFIG_TRUE) {
if (strcmp(import, filename) == 0 || strcmp(import, "conf/common/inter-server.conf") == 0) {
ShowWarning("inter_config_read: Loop detected! Skipping 'import'...\n");
} else {
- if (!loginlog_config_read(import, true))
+ if (!loginlog->config_read(import, true))
retval = false;
}
}
@@ -223,3 +216,29 @@ bool loginlog_config_read(const char *filename, bool imported)
libconfig->destroy(&config);
return retval;
}
+
+void loginlog_defaults(void)
+{
+ loginlog = &loginlog_s;
+ loginlog->dbs = &loginlogdbs;
+
+ loginlog->sql_handle = NULL;
+ loginlog->enabled = false;
+
+ // Sql settings
+ strcpy(loginlog->dbs->log_db_hostname, "127.0.0.1");
+ loginlog->dbs->log_db_port = 3306;
+ strcpy(loginlog->dbs->log_db_username, "ragnarok");
+ strcpy(loginlog->dbs->log_db_password, "ragnarok");
+ strcpy(loginlog->dbs->log_db_database, "ragnarok");
+ *loginlog->dbs->log_codepage = 0;
+ strcpy(loginlog->dbs->log_login_db, "loginlog");
+
+ loginlog->failedattempts = loginlog_failedattempts;
+ loginlog->log = loginlog_log;
+ loginlog->init = loginlog_init;
+ loginlog->final = loginlog_final;
+ loginlog->config_read_names = loginlog_config_read_names;
+ loginlog->config_read_log = loginlog_config_read_log;
+ loginlog->config_read = loginlog_config_read;
+}
diff --git a/src/login/loginlog.h b/src/login/loginlog.h
index 589bc4fa1..0fcbae568 100644
--- a/src/login/loginlog.h
+++ b/src/login/loginlog.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -21,15 +21,41 @@
#ifndef LOGIN_LOGINLOG_H
#define LOGIN_LOGINLOG_H
+#include "common/hercules.h"
#include "common/cbasetypes.h"
+struct config_t;
+
+struct s_loginlog_dbs {
+ char log_db_hostname[32];
+ uint16 log_db_port;
+ char log_db_username[32];
+ char log_db_password[100];
+ char log_db_database[32];
+ char log_codepage[32];
+ char log_login_db[256];
+};
+
+/**
+ * Loginlog.c Interface
+ **/
+struct loginlog_interface {
+ struct Sql *sql_handle;
+ bool enabled;
+ struct s_loginlog_dbs *dbs;
+ unsigned long (*failedattempts) (uint32 ip, unsigned int minutes);
+ void (*log) (uint32 ip, const char* username, int rcode, const char* message);
+ bool (*init) (void);
+ bool (*final) (void);
+ bool (*config_read_names) (const char *filename, struct config_t *config, bool imported);
+ bool (*config_read_log) (const char *filename, struct config_t *config, bool imported);
+ bool (*config_read) (const char *filename, bool imported);
+};
+
#ifdef HERCULES_CORE
-// TODO: Interface
-unsigned long loginlog_failedattempts(uint32 ip, unsigned int minutes);
-void login_log(uint32 ip, const char* username, int rcode, const char* message);
-bool loginlog_init(void);
-bool loginlog_final(void);
-bool loginlog_config_read(const char *filename, bool imported);
+void loginlog_defaults(void);
#endif // HERCULES_CORE
+HPShared struct loginlog_interface *loginlog;
+
#endif /* LOGIN_LOGINLOG_H */
diff --git a/src/login/packets_ac_struct.h b/src/login/packets_ac_struct.h
new file mode 100644
index 000000000..c9fb04f26
--- /dev/null
+++ b/src/login/packets_ac_struct.h
@@ -0,0 +1,156 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2016-2018 Hercules Dev Team
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef LOGIN_PACKETS_AC_STRUCT_H
+#define LOGIN_PACKETS_AC_STRUCT_H
+
+#include "common/hercules.h"
+#include "common/mmo.h"
+#include "common/packetsstatic_len.h"
+
+/* Enums */
+
+/// Packet IDs
+enum login_ac_packet_id {
+ HEADER_AC_ACCEPT_LOGIN = 0x0069,
+ HEADER_AC_ACCEPT_LOGIN2 = 0x0ac4,
+ HEADER_AC_REFUSE_LOGIN = 0x006a,
+ HEADER_SC_NOTIFY_BAN = 0x0081,
+ HEADER_AC_ACK_HASH = 0x01dc,
+ HEADER_AC_REFUSE_LOGIN_R2 = 0x083e,
+ HEADER_AC_REFUSE_LOGIN_R3 = 0x0b02,
+};
+
+/* Packets Structs */
+#if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
+#pragma pack(push, 1)
+#endif // not NetBSD < 6 / Solaris
+
+/**
+ * Packet structure for SC_NOTIFY_BAN.
+ */
+struct PACKET_SC_NOTIFY_BAN {
+ int16 packet_id; ///< Packet ID (#HEADER_SC_NOTIFY_BAN)
+ uint8 error_code; ///< Error code
+} __attribute__((packed));
+
+/**
+ * Packet structure for AC_REFUSE_LOGIN.
+ */
+struct PACKET_AC_REFUSE_LOGIN {
+ int16 packet_id; ///< Packet ID (#HEADER_AC_REFUSE_LOGIN)
+ uint8 error_code; ///< Error code
+ char block_date[20]; ///< Ban expiration date
+} __attribute__((packed));
+
+/**
+ * Packet structure for AC_REFUSE_LOGIN_R2.
+ */
+struct PACKET_AC_REFUSE_LOGIN_R2 {
+ int16 packet_id; ///< Packet ID (#HEADER_AC_REFUSE_LOGIN_R2)
+ uint32 error_code; ///< Error code
+ char block_date[20]; ///< Ban expiration date
+} __attribute__((packed));
+
+/**
+ * Packet structure for AC_ACCEPT_LOGIN.
+ *
+ * Variable-length packet.
+ */
+struct PACKET_AC_ACCEPT_LOGIN {
+ int16 packet_id; ///< Packet ID (#HEADER_AC_ACCEPT_LOGIN)
+ int16 packet_len; ///< Packet length (variable length)
+ int32 auth_code; ///< Authentication code
+ uint32 aid; ///< Account ID
+ uint32 user_level; ///< User level
+ uint32 last_login_ip; ///< Last login IP
+ char last_login_time[26]; ///< Last login timestamp
+ uint8 sex; ///< Account sex
+#if PACKETVER >= 20170315
+ char twitter_auth_token[16];
+ uint8 twitter_flag;
+#endif
+ struct {
+ uint32 ip; ///< Server IP address
+ int16 port; ///< Server port
+ char name[20]; ///< Server name
+ uint16 usercount; ///< Online users
+ uint16 state; ///< Server state
+ uint16 property; ///< Server property
+#if PACKETVER >= 20170315
+ char unknown2[128];
+#endif
+ } server_list[]; ///< List of charservers
+} __attribute__((packed));
+
+/**
+ * Packet structure for AC_ACK_HASH.
+ *
+ * Variable-length packet
+ */
+struct PACKET_AC_ACK_HASH {
+ int16 packet_id; ///< Packet ID (#HEADER_AC_ACK_HASH)
+ int16 packet_len; ///< Packet length (variable length)
+ uint8 secret[]; ///< Challenge string
+} __attribute__((packed));
+
+#if PACKETVER_MAIN_NUM >= 20181114 || PACKETVER_RE_NUM >= 20181114 || defined(PACKETVER_ZERO)
+struct PACKET_AC_REQ_MOBILE_OTP {
+ int16 packet_id; ///< Packet ID (#HEADER_CA_SSO_LOGIN_REQ)
+ uint32 aid; ///< Account ID
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(AC_REQ_MOBILE_OTP, 0x09a2);
+#endif
+
+#if PACKETVER_MAIN_NUM >= 20171213 || PACKETVER_RE_NUM >= 20171213 || PACKETVER_ZERO_NUM >= 20171808
+// AC_LOGIN_OTP2
+struct PACKET_AC_LOGIN_OTP {
+ int16 packet_id;
+ int16 packet_len;
+ int32 loginFlag;
+ char loginFlag2[20];
+ char token[];
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(AC_LOGIN_OTP, 0x0ae3);
+#elif PACKETVER_ZERO_NUM >= 20171123
+// AC_LOGIN_OTP2
+struct PACKET_AC_LOGIN_OTP {
+ int16 packet_id;
+ int16 packet_len;
+ int32 loginFlag;
+ char loginFlag2[6];
+ char token[];
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(AC_LOGIN_OTP, 0x0ae3);
+#elif PACKETVER_MAIN_NUM >= 20170621 || PACKETVER_RE_NUM >= 20170621 || defined(PACKETVER_ZERO)
+// AC_LOGIN_OTP1
+struct PACKET_AC_LOGIN_OTP {
+ int16 packet_id;
+ int16 packet_len;
+ int32 loginFlag;
+ char token[];
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(AC_LOGIN_OTP, 0x0ad1);
+#endif
+
+#if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
+#pragma pack(pop)
+#endif // not NetBSD < 6 / Solaris
+
+#endif // LOGIN_PACKETS_AC_STRUCT_H
diff --git a/src/login/packets_ca_struct.h b/src/login/packets_ca_struct.h
new file mode 100644
index 000000000..0828c7293
--- /dev/null
+++ b/src/login/packets_ca_struct.h
@@ -0,0 +1,239 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2016-2018 Hercules Dev Team
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef LOGIN_PACKETS_CA_STRUCT_H
+#define LOGIN_PACKETS_CA_STRUCT_H
+
+#include "common/hercules.h"
+#include "common/mmo.h"
+#include "common/packetsstatic_len.h"
+
+/* Enums */
+
+/// Packet IDs
+enum login_packet_ca_id {
+ HEADER_CA_LOGIN = 0x0064,
+ HEADER_CA_LOGIN2 = 0x01dd,
+ HEADER_CA_LOGIN3 = 0x01fa,
+ HEADER_CA_CONNECT_INFO_CHANGED = 0x0200,
+ HEADER_CA_EXE_HASHCHECK = 0x0204,
+ HEADER_CA_LOGIN_PCBANG = 0x0277,
+ HEADER_CA_LOGIN4 = 0x027c,
+ HEADER_CA_LOGIN_HAN = 0x02b0,
+ HEADER_CA_SSO_LOGIN_REQ = 0x0825,
+ HEADER_CA_LOGIN_OTP = 0x0acf,
+ HEADER_CA_REQ_HASH = 0x01db,
+ HEADER_CA_CHARSERVERCONNECT = 0x2710, // Custom Hercules Packet
+ //HEADER_CA_SSO_LOGIN_REQa = 0x825a, /* unused */
+};
+
+/* Packets Structs */
+#if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
+#pragma pack(push, 1)
+#endif // not NetBSD < 6 / Solaris
+
+/**
+ * Packet structure for CA_LOGIN.
+ */
+struct PACKET_CA_LOGIN {
+ int16 packet_id; ///< Packet ID (#HEADER_CA_LOGIN)
+ uint32 version; ///< Client Version
+ char id[24]; ///< Username
+ char password[24]; ///< Password
+ uint8 clienttype; ///< Client Type
+} __attribute__((packed));
+
+/**
+ * Packet structure for CA_LOGIN2.
+ */
+struct PACKET_CA_LOGIN2 {
+ int16 packet_id; ///< Packet ID (#HEADER_CA_LOGIN2)
+ uint32 version; ///< Client Version
+ char id[24]; ///< Username
+ uint8 password_md5[16]; ///< Password hash
+ uint8 clienttype; ///< Client Type
+} __attribute__((packed));
+
+/**
+ * Packet structure for CA_LOGIN3.
+ */
+struct PACKET_CA_LOGIN3 {
+ int16 packet_id; ///< Packet ID (#HEADER_CA_LOGIN3)
+ uint32 version; ///< Client Version
+ char id[24]; ///< Username
+ uint8 password_md5[16]; ///< Password hash
+ uint8 clienttype; ///< Client Type
+ uint8 clientinfo; ///< Index of the connection in the clientinfo file (+10 if the command-line contains "pc")
+} __attribute__((packed));
+
+/**
+ * Packet structure for CA_LOGIN4.
+ */
+struct PACKET_CA_LOGIN4 {
+ int16 packet_id; ///< Packet ID (#HEADER_CA_LOGIN4)
+ uint32 version; ///< Client Version
+ char id[24]; ///< Username
+ uint8 password_md5[16]; ///< Password hash
+ uint8 clienttype; ///< Client Type
+ char mac_address[13]; ///< MAC Address
+} __attribute__((packed));
+
+/**
+ * Packet structure for CA_LOGIN_PCBANG.
+ */
+struct PACKET_CA_LOGIN_PCBANG {
+ int16 packet_id; ///< Packet ID (#HEADER_CA_LOGIN_PCBANG)
+ uint32 version; ///< Client Version
+ char id[24]; ///< Username
+ char password[24]; ///< Password
+ uint8 clienttype; ///< Client Type
+ char ip[16]; ///< IP Address
+ char mac_address[13]; ///< MAC Address
+} __attribute__((packed));
+
+/**
+ * Packet structure for CA_LOGIN_HAN.
+ */
+struct PACKET_CA_LOGIN_HAN {
+ int16 packet_id; ///< Packet ID (#HEADER_CA_LOGIN_HAN)
+ uint32 version; ///< Client Version
+ char id[24]; ///< Username
+ char password[24]; ///< Password
+ uint8 clienttype; ///< Client Type
+ char ip[16]; ///< IP Address
+ char mac_address[13]; ///< MAC Address
+ uint8 is_han_game_user; ///< 'isGravityID'
+} __attribute__((packed));
+
+/**
+ * Packet structure for CA_SSO_LOGIN_REQ.
+ *
+ * Variable-length packet.
+ */
+struct PACKET_CA_SSO_LOGIN_REQ {
+ int16 packet_id; ///< Packet ID (#HEADER_CA_SSO_LOGIN_REQ)
+ int16 packet_len; ///< Length (variable length)
+ uint32 version; ///< Clientver
+ uint8 clienttype; ///< Clienttype
+ char id[24]; ///< Username
+ char password[27]; ///< Password
+ int8 mac_address[17]; ///< MAC Address
+ char ip[15]; ///< IP Address
+ char t1[]; ///< SSO Login Token (variable length)
+} __attribute__((packed));
+
+#if PACKETVER_MAIN_NUM >= 20181114 || PACKETVER_RE_NUM >= 20181114
+/**
+ * Packet structure for CA_SSO_LOGIN_REQ.
+ *
+ * Variable-length packet.
+ */
+struct PACKET_CA_ACK_MOBILE_OTP {
+ int16 packet_id; ///< Packet ID (#HEADER_CA_ACK_MOBILE_OTP)
+ int16 packet_len; ///< Length (variable length)
+ uint32 aid; ///< Account ID
+ char code[6]; ///< Code
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(CA_ACK_MOBILE_OTP, 0x09a3);
+#endif
+
+#if PACKETVER_MAIN_NUM >= 20181114 || PACKETVER_RE_NUM >= 20181114 || defined(PACKETVER_ZERO)
+struct PACKET_CA_OTP_CODE {
+ int16 packet_id; ///< Packet ID (#HEADER_CA_OTP_CODE)
+ char code[9]; ///< Code
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(CA_OTP_CODE, 0x0ad0);
+#endif
+
+/**
+ * Packet structure for CA_LOGIN_OTP.
+ */
+struct PACKET_CA_LOGIN_OTP {
+ int16 packet_id; ///< Packet ID (#HEADER_CA_LOGIN_OTP)
+#if PACKETVER >= 20171113
+ uint32 devFlags; ///< flags including dev flag
+#endif
+ char login[25]; ///< Username
+ char password[32]; ///< Password encrypted by rijndael
+ char flagsStr[5]; ///< Unknown flags. Normally string: G000
+} __attribute__((packed));
+
+#if 0 // Unused
+struct PACKET_CA_SSO_LOGIN_REQa {
+ int16 packet_id;
+ int16 packet_len;
+ uint32 version;
+ uint8 clienttype;
+ char id[24];
+ int8 mac_address[17];
+ char ip[15];
+ char t1[];
+} __attribute__((packed));
+#endif // unused
+
+/**
+ * Packet structure for CA_CONNECT_INFO_CHANGED.
+ *
+ * New alive packet. Used to verify if client is always alive.
+ */
+struct PACKET_CA_CONNECT_INFO_CHANGED {
+ int16 packet_id; ///< Packet ID (#HEADER_CA_CONNECT_INFO_CHANGED)
+ char id[24]; ///< account.userid
+} __attribute__((packed));
+
+/**
+ * Packet structure for CA_EXE_HASHCHECK.
+ *
+ * (kRO 2004-05-31aSakexe langtype 0 and 6)
+ */
+struct PACKET_CA_EXE_HASHCHECK {
+ int16 packet_id; ///< Packet ID (#HEADER_CA_EXE_HASHCHECK)
+ uint8 hash_value[16]; ///< Client MD5 hash
+} __attribute__((packed));
+
+/**
+ * Packet structure for CA_REQ_HASH.
+ */
+struct PACKET_CA_REQ_HASH {
+ int16 packet_id; ///< Packet ID (#HEADER_CA_REQ_HASH)
+} __attribute__((packed));
+
+/**
+ * Packet structure for CA_CHARSERVERCONNECT.
+ *
+ * This packet is used internally, to signal a char-server connection.
+ */
+struct PACKET_CA_CHARSERVERCONNECT {
+ int16 packet_id; ///< Packet ID (#HEADER_CA_CHARSERVERCONNECT)
+ char userid[24]; ///< Username
+ char password[24]; ///< Password
+ int32 unknown;
+ int32 ip; ///< Charserver IP
+ int16 port; ///< Charserver port
+ char name[20]; ///< Charserver name
+ int16 unknown2;
+ int16 type; ///< Charserver type
+ int16 new; ///< Whether charserver is to be marked as new
+} __attribute__((packed));
+
+#if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
+#pragma pack(pop)
+#endif // not NetBSD < 6 / Solaris
+
+#endif // LOGIN_PACKETS_CA_STRUCT_H
diff --git a/src/map/HPMmap.c b/src/map/HPMmap.c
index 84544976a..6eff37df8 100644
--- a/src/map/HPMmap.c
+++ b/src/map/HPMmap.c
@@ -38,6 +38,7 @@
#include "common/mapindex.h"
#include "common/mmo.h"
#include "common/nullpo.h"
+#include "common/packets.h"
#include "common/random.h"
#include "common/showmsg.h"
#include "common/socket.h"
@@ -47,6 +48,7 @@
#include "common/sysinfo.h"
#include "common/timer.h"
#include "common/utils.h"
+#include "map/achievement.h"
#include "map/atcommand.h"
#include "map/battle.h"
#include "map/battleground.h"
@@ -54,6 +56,7 @@
#include "map/channel.h"
#include "map/chat.h"
#include "map/chrif.h"
+#include "map/clan.h"
#include "map/clif.h"
#include "map/date.h"
#include "map/duel.h"
@@ -71,13 +74,13 @@
#include "map/mercenary.h"
#include "map/mob.h"
#include "map/npc.h"
-#include "map/packets_struct.h"
#include "map/party.h"
#include "map/path.h"
#include "map/pc.h"
#include "map/pc_groups.h"
#include "map/pet.h"
#include "map/quest.h"
+#include "map/rodex.h"
#include "map/script.h"
#include "map/searchstore.h"
#include "map/skill.h"
@@ -102,8 +105,8 @@ struct HPM_atcommand_list {
AtCommandFunc func;
};
-struct HPM_atcommand_list *atcommand_list = NULL;
-unsigned int atcommand_list_items = 0;
+static struct HPM_atcommand_list *atcommand_list = NULL;
+static unsigned int atcommand_list_items = 0;
/**
* HPM plugin data store validator sub-handler (map-server)
@@ -113,33 +116,36 @@ unsigned int atcommand_list_items = 0;
bool HPM_map_data_store_validate(enum HPluginDataTypes type, struct hplugin_data_store **storeptr, bool initialize)
{
switch (type) {
- case HPDT_MSD:
- case HPDT_NPCD:
- case HPDT_MAP:
- case HPDT_PARTY:
- case HPDT_GUILD:
- case HPDT_INSTANCE:
- case HPDT_MOBDB:
- case HPDT_MOBDATA:
- case HPDT_ITEMDATA:
- case HPDT_BGDATA:
- case HPDT_AUTOTRADE_VEND:
- // Initialized by the caller.
- return true;
- default:
- break;
+ case HPDT_MSD:
+ case HPDT_NPCD:
+ case HPDT_MAP:
+ case HPDT_PARTY:
+ case HPDT_GUILD:
+ case HPDT_INSTANCE:
+ case HPDT_MOBDB:
+ case HPDT_MOBDATA:
+ case HPDT_ITEMDATA:
+ case HPDT_BGDATA:
+ case HPDT_AUTOTRADE_VEND:
+ case HPDT_CLAN:
+ // Initialized by the caller.
+ return true;
+ default:
+ break;
}
return false;
}
-void HPM_map_plugin_load_sub(struct hplugin *plugin) {
+void HPM_map_plugin_load_sub(struct hplugin *plugin)
+{
plugin->hpi->sql_handle = map->mysql_handle;
plugin->hpi->addCommand = atcommand->create;
plugin->hpi->addScript = script->addScript;
plugin->hpi->addPCGPermission = HPM_map_add_group_permission;
}
-bool HPM_map_add_atcommand(char *name, AtCommandFunc func) {
+bool HPM_map_add_atcommand(char *name, AtCommandFunc func)
+{
unsigned int i = 0;
for(i = 0; i < atcommand_list_items; i++) {
@@ -159,7 +165,8 @@ bool HPM_map_add_atcommand(char *name, AtCommandFunc func) {
return true;
}
-void HPM_map_atcommands(void) {
+void HPM_map_atcommands(void)
+{
unsigned int i;
for(i = 0; i < atcommand_list_items; i++) {
@@ -170,7 +177,8 @@ void HPM_map_atcommands(void) {
/**
* Adds a new group permission to the HPM-provided list
**/
-void HPM_map_add_group_permission(unsigned int pluginID, char *name, unsigned int *mask) {
+void HPM_map_add_group_permission(unsigned int pluginID, char *name, unsigned int *mask)
+{
unsigned char index = pcg->HPMpermissions_count;
RECREATE(pcg->HPMpermissions, struct pc_groups_new_permission, ++pcg->HPMpermissions_count);
@@ -180,14 +188,16 @@ void HPM_map_add_group_permission(unsigned int pluginID, char *name, unsigned in
pcg->HPMpermissions[index].mask = mask;
}
-void HPM_map_do_init(void) {
+void HPM_map_do_init(void)
+{
HPM->load_sub = HPM_map_plugin_load_sub;
HPM->data_store_validate_sub = HPM_map_data_store_validate;
HPM->datacheck_init(HPMDataCheck, HPMDataCheckLen, HPMDataCheckVer);
HPM_shared_symbols(SERVER_TYPE_MAP);
}
-void HPM_map_do_final(void) {
+void HPM_map_do_final(void)
+{
if (atcommand_list)
aFree(atcommand_list);
/**
diff --git a/src/map/Makefile.in b/src/map/Makefile.in
index c01826bfb..3705fda0e 100644
--- a/src/map/Makefile.in
+++ b/src/map/Makefile.in
@@ -1,7 +1,7 @@
# This file is part of Hercules.
# http://herc.ws - http://github.com/HerculesWS/Hercules
#
-# Copyright (C) 2012-2016 Hercules Dev Team
+# Copyright (C) 2012-2018 Hercules Dev Team
# Copyright (C) Athena Dev Teams
#
# Hercules is free software: you can redistribute it and/or modify
@@ -40,19 +40,22 @@ MT19937AR_D = $(THIRDPARTY_D)/mt19937ar
MT19937AR_OBJ = $(MT19937AR_D)/mt19937ar.o
MT19937AR_H = $(MT19937AR_D)/mt19937ar.h
-MAP_C = atcommand.c battle.c battleground.c buyingstore.c channel.c chat.c \
- chrif.c clif.c date.c duel.c elemental.c guild.c homunculus.c HPMmap.c \
+MAP_C = achievement.c atcommand.c battle.c battleground.c buyingstore.c channel.c chat.c \
+ chrif.c clan.c clif.c date.c duel.c elemental.c guild.c homunculus.c HPMmap.c \
instance.c intif.c irc-bot.c itemdb.c log.c mail.c map.c mapreg_sql.c \
mercenary.c mob.c npc.c npc_chat.c party.c path.c pc.c pc_groups.c \
- pet.c quest.c script.c searchstore.c skill.c status.c storage.c \
+ pet.c quest.c rodex.c script.c searchstore.c skill.c status.c storage.c \
trade.c unit.c vending.c
MAP_OBJ = $(addprefix obj_sql/, $(patsubst %c,%o,$(MAP_C)))
-MAP_H = atcommand.h battle.h battleground.h buyingstore.h channel.h chat.h \
- chrif.h clif.h date.h duel.h elemental.h guild.h homunculus.h HPMmap.h \
+MAP_H = achievement.h atcommand.h battle.h battleground.h buyingstore.h channel.h chat.h \
+ chrif.h clan.h clif.h date.h duel.h elemental.h guild.h homunculus.h HPMmap.h \
instance.h intif.h irc-bot.h itemdb.h log.h mail.h map.h mapreg.h \
- mercenary.h mob.h npc.h packets.h packets_struct.h party.h path.h \
- pc.h pc_groups.h pet.h quest.h script.h searchstore.h skill.h \
- status.h storage.h trade.h unit.h vending.h
+ mercenary.h messages.h messages_ad.h messages_main.h messages_re.h \
+ messages_sak.h messages_zero.h mob.h npc.h packets.h packets_keys_main.h \
+ packets_keys_zero.h packets_shuffle_main.h packets_shuffle_re.h \
+ packets_shuffle_zero.h packets_struct.h party.h path.h pc.h pc_groups.h \
+ pet.h quest.h rodex.h script.h searchstore.h skill.h status.h storage.h \
+ trade.h unit.h vending.h
MAP_PH =
HAVE_MYSQL=@HAVE_MYSQL@
diff --git a/src/map/achievement.c b/src/map/achievement.c
new file mode 100644
index 000000000..057ea29c3
--- /dev/null
+++ b/src/map/achievement.c
@@ -0,0 +1,2002 @@
+/**
+* This file is part of Hercules.
+* http://herc.ws - http://github.com/HerculesWS/Hercules
+*
+* Copyright (C) 2017 Hercules Dev Team
+* Copyright (C) Smokexyz
+* Copyright (C) Dastgir
+*
+* Hercules is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#define HERCULES_CORE
+
+#include "map/achievement.h"
+
+#include "map/itemdb.h"
+#include "map/mob.h"
+#include "map/party.h"
+#include "map/pc.h"
+#include "map/script.h"
+
+#include "common/conf.h"
+#include "common/db.h"
+#include "common/memmgr.h"
+#include "common/nullpo.h"
+#include "common/showmsg.h"
+#include "common/strlib.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+static struct achievement_interface achievement_s;
+struct achievement_interface *achievement;
+
+/**
+ * Retrieve an achievement via it's ID.
+ * @param aid as the achievement ID.
+ * @return NULL or pointer to the achievement data.
+ */
+static const struct achievement_data *achievement_get(int aid)
+{
+ return (struct achievement_data *) idb_get(achievement->db, aid);
+}
+
+/**
+ * Searches the provided achievement data for an achievement,
+ * optionally creates a new one if no key exists.
+ * @param[in] sd a pointer to map_session_data.
+ * @param[in] aid ID of the achievement provided as key.
+ * @param[in] create new key creation flag.
+ * @return pointer to the session's achievement data.
+ */
+static struct achievement *achievement_ensure(struct map_session_data *sd, const struct achievement_data *ad)
+{
+ struct achievement *s_ad = NULL;
+ int i = 0;
+
+ nullpo_retr(NULL, sd);
+ nullpo_retr(NULL, ad);
+
+ /* Lookup for achievement entry */
+ ARR_FIND(0, VECTOR_LENGTH(sd->achievement), i, (s_ad = &VECTOR_INDEX(sd->achievement, i)) && s_ad->id == ad->id);
+
+ if (i == VECTOR_LENGTH(sd->achievement)) {
+ struct achievement ta = { 0 };
+ ta.id = ad->id;
+
+ VECTOR_ENSURE(sd->achievement, 1, 1);
+ VECTOR_PUSH(sd->achievement, ta);
+
+ s_ad = &VECTOR_LAST(sd->achievement);
+ }
+
+ return s_ad;
+}
+
+/**
+ * Calculates the achievement's totals via reference.
+ * @param[in] sd pointer to map_session_data
+ * @param[out] tota_points pointer to total points var
+ * @param[out] completed pointer to total var
+ * @param[out] rank pointer to completed var
+ * @param[out] curr_rank_points pointer to achievement rank var
+ */
+static void achievement_calculate_totals(const struct map_session_data *sd, int *total_points, int *completed, int *rank, int *curr_rank_points)
+{
+ const struct achievement *a = NULL;
+ const struct achievement_data *ad = NULL;
+ int tmp_curr_points = 0;
+ int tmp_total_points = 0;
+ int tmp_total_completed = 0;
+ int tmp_rank = 0;
+ int i = 0;
+
+ nullpo_retv(sd);
+
+ for (i = 0; i < VECTOR_LENGTH(sd->achievement); i++) {
+ a = &VECTOR_INDEX(sd->achievement, i);
+
+ if ((ad = achievement->get(a->id)) == NULL)
+ continue;
+
+ if (a->completed_at != 0) {
+ tmp_total_points += ad->points;
+ tmp_total_completed++;
+ }
+ }
+
+ if (tmp_total_points > 0) {
+ tmp_curr_points = tmp_total_points;
+ for (i = 0; i < MAX_ACHIEVEMENT_RANKS
+ && tmp_curr_points >= VECTOR_INDEX(achievement->rank_exp, i)
+ && i < VECTOR_LENGTH(achievement->rank_exp); i++) {
+ tmp_curr_points -= VECTOR_INDEX(achievement->rank_exp, i);
+ tmp_rank++;
+ }
+ }
+
+ if (total_points != NULL)
+ *total_points = tmp_total_points;
+
+ if (completed != NULL)
+ *completed = tmp_total_completed;
+
+ if (rank != NULL)
+ *rank = tmp_rank;
+
+ if (curr_rank_points != NULL)
+ *curr_rank_points = tmp_curr_points;
+}
+
+/**
+ * Checks whether all objectives of the achievement are completed.
+ * @param[in] sd as the map_session_data pointer
+ * @param[in] ad as the achievement_data pointer
+ * @return true if complete, false if not.
+ */
+static bool achievement_check_complete(struct map_session_data *sd, const struct achievement_data *ad)
+{
+ int i;
+ struct achievement *ach = NULL;
+
+ nullpo_retr(false, sd);
+ nullpo_retr(false, ad);
+
+ if ((ach = achievement->ensure(sd, ad)) == NULL)
+ return false;
+ for (i = 0; i < VECTOR_LENGTH(ad->objective); i++)
+ if (ach->objective[i] < VECTOR_INDEX(ad->objective, i).goal)
+ return false;
+
+ return true;
+}
+
+/**
+ * Compares the progress of an objective against it's goal.
+ * Increments the progress of the objective by the specified amount, towards the goal.
+ * @param sd [in] as a pointer to map_session_data
+ * @param ad [in] as a pointer to the achievement_data
+ * @param obj_idx [in] as the index of the objective.
+ * @param progress [in] as the progress of the objective to be added.
+ */
+static void achievement_progress_add(struct map_session_data *sd, const struct achievement_data *ad, unsigned int obj_idx, int progress)
+{
+ struct achievement *ach = NULL;
+
+ nullpo_retv(sd);
+ nullpo_retv(ad);
+
+ Assert_retv(progress != 0);
+ Assert_retv(obj_idx < VECTOR_LENGTH(ad->objective));
+
+ if ((ach = achievement->ensure(sd, ad)) == NULL)
+ return;
+
+ if (ach->completed_at)
+ return; // ignore the call if the achievement is completed.
+
+ // Check and increment the objective count.
+ if (!ach->objective[obj_idx] || ach->objective[obj_idx] < VECTOR_INDEX(ad->objective, obj_idx).goal) {
+ ach->objective[obj_idx] = min(progress + ach->objective[obj_idx], VECTOR_INDEX(ad->objective, obj_idx).goal);
+
+ // Check if the Achievement is complete.
+ if (achievement->check_complete(sd, ad)) {
+ achievement->validate_achieve(sd, ad->id);
+ ach->completed_at = time(NULL);
+ }
+
+ // update client.
+ clif->achievement_send_update(sd->fd, sd, ad);
+ }
+}
+
+/**
+ * Compare an absolute progress value against the goal of an objective.
+ * Does not add/increase progress.
+ * @param sd [in] pointer to map-server session data.
+ * @param ad [in] pointer to achievement data.
+ * @param obj_idx [in] index of the objective in question.
+ * @param progress progress of the objective in question.
+ */
+static void achievement_progress_set(struct map_session_data *sd, const struct achievement_data *ad, unsigned int obj_idx, int progress)
+{
+ struct achievement *ach = NULL;
+
+ nullpo_retv(sd);
+ nullpo_retv(ad);
+
+ Assert_retv(progress != 0);
+ Assert_retv(obj_idx < VECTOR_LENGTH(ad->objective));
+
+ if (progress >= VECTOR_INDEX(ad->objective, obj_idx).goal) {
+
+ if ((ach = achievement->ensure(sd, ad)) == NULL)
+ return;
+
+ if (ach->completed_at)
+ return;
+
+ ach->objective[obj_idx] = VECTOR_INDEX(ad->objective, obj_idx).goal;
+
+ if (achievement->check_complete(sd, ad)) {
+ achievement->validate_achieve(sd, ad->id);
+ ach->completed_at = time(NULL);
+ }
+
+ clif->achievement_send_update(sd->fd, sd, ad);
+ }
+}
+
+/**
+* Checks if the given criteria satisfies the achievement's objective.
+* @param objective [in] pointer to the achievement's objectives data.
+* @param criteria [in] pointer to the current session's criteria as a comparand.
+* @return true if all criteria are satisfied, else false.
+*/
+static bool achievement_check_criteria(const struct achievement_objective *objective, const struct achievement_objective *criteria)
+{
+ int i = 0, j = 0;
+
+ nullpo_retr(false, objective);
+ nullpo_retr(false, criteria);
+
+ /* Item Id */
+ if (objective->unique_type == CRITERIA_UNIQUE_ITEM_ID && objective->unique.itemid != criteria->unique.itemid)
+ return false;
+ /* Weapon Level */
+ else if (objective->unique_type == CRITERIA_UNIQUE_WEAPON_LV && objective->unique.weapon_lv != criteria->unique.weapon_lv)
+ return false;
+ /* Status Types */
+ else if (objective->unique_type == CRITERIA_UNIQUE_STATUS_TYPE && objective->unique.status_type != criteria->unique.status_type)
+ return false;
+ /* Achievement Id */
+ else if (objective->unique_type == CRITERIA_UNIQUE_ACHIEVE_ID && objective->unique.achieve_id != criteria->unique.achieve_id)
+ return false;
+
+ /* Monster Id */
+ if (objective->mobid > 0 && objective->mobid != criteria->mobid)
+ return false;
+
+ /* Item Type */
+ if (objective->item_type > 0 && (objective->item_type & (2 << criteria->item_type)) == 0)
+ return false;
+
+ /* Job Ids */
+ for (i = 0; i < VECTOR_LENGTH(objective->jobid); i++) {
+ ARR_FIND(0, VECTOR_LENGTH(criteria->jobid), j, VECTOR_INDEX(criteria->jobid, j) != VECTOR_INDEX(objective->jobid, i));
+ if (j < VECTOR_LENGTH(criteria->jobid))
+ return false;
+ }
+
+ return true;
+}
+
+/**
+ * Validates an Achievement Objective of similar types.
+ * @param[in] sd as a pointer to the map session data.
+ * @param[in] type as the type of the achievement.
+ * @param[in] criteria as the criteria of the objective (mob id, job id etc.. 0 for no criteria).
+ * @param[in] progress as the current progress of the objective.
+ * @return total number of updated achievements on success, 0 on failure.
+ */
+static int achievement_validate_type(struct map_session_data *sd, enum achievement_types type, const struct achievement_objective *criteria, bool additive)
+{
+ int i = 0, total = 0;
+ struct achievement *ach = NULL;
+
+ nullpo_ret(sd);
+ nullpo_ret(criteria);
+
+ Assert_ret(criteria->goal != 0);
+
+ if (type == ACH_QUEST) {
+ ShowError("achievement_validate_type: ACH_QUEST is not handled by this function. (use achievement_validate())\n");
+ return 0;
+ } else if (type >= ACH_TYPE_MAX) {
+ ShowError("achievement_validate_type: Invalid Achievement Type %d! (min: %d, max: %d)\n", (int)type, (int)ACH_QUEST, (int)ACH_TYPE_MAX - 1);
+ return 0;
+ }
+
+ /* Loop through all achievements of the type, checking for possible matches. */
+ for (i = 0; i < VECTOR_LENGTH(achievement->category[type]); i++) {
+ int j = 0;
+ bool updated = false;
+ const struct achievement_data *ad = NULL;
+
+ if ((ad = achievement->get(VECTOR_INDEX(achievement->category[type], i))) == NULL)
+ continue;
+
+ for (j = 0; j < VECTOR_LENGTH(ad->objective); j++) {
+ // Check if objective criteria matches.
+ if (achievement->check_criteria(&VECTOR_INDEX(ad->objective, j), criteria) == false)
+ continue;
+ // Ensure availability of the achievement.
+ if ((ach = achievement->ensure(sd, ad)) == NULL)
+ return false;
+ // Criteria passed, check if not completed and update progress.
+ if ((ach->completed_at == 0 && ach->objective[j] < VECTOR_INDEX(ad->objective, j).goal)) {
+ if (additive == true)
+ achievement->progress_add(sd, ad, j, criteria->goal);
+ else
+ achievement->progress_set(sd, ad, j, criteria->goal);
+ updated = true;
+ }
+ }
+
+ if (updated == true)
+ total++;
+ }
+
+ return total;
+}
+
+/**
+ * Validates any achievement's specific objective index.
+ * @param[in] sd pointer to the session data.
+ * @param[in] aid ID of the achievement.
+ * @param[in] index index of the objective.
+ * @param[in] progress progress to be added towards the goal.
+ */
+static bool achievement_validate(struct map_session_data *sd, int aid, unsigned int obj_idx, int progress, bool additive)
+{
+ const struct achievement_data *ad = NULL;
+ struct achievement *ach = NULL;
+
+ nullpo_retr(false, sd);
+ Assert_retr(false, progress > 0);
+ Assert_retr(false, obj_idx < MAX_ACHIEVEMENT_OBJECTIVES);
+
+ if ((ad = achievement->get(aid)) == NULL) {
+ ShowError("achievement_validate: Invalid Achievement %d provided.", aid);
+ return false;
+ }
+
+ // Ensure availability of the achievement.
+ if ((ach = achievement->ensure(sd, ad)) == NULL)
+ return false;
+
+ // Check if not completed and update progress.
+ if ((!ach->completed_at && ach->objective[obj_idx] < VECTOR_INDEX(ad->objective, obj_idx).goal)) {
+ if (additive == true)
+ achievement->progress_add(sd, ad, obj_idx, progress);
+ else
+ achievement->progress_set(sd, ad, obj_idx, progress);
+ }
+
+ return true;
+}
+
+/**
+ * Validates monster kill type objectives.
+ * @type ACH_KILL_MOB_CLASS
+ * @param[in] sd pointer to session data.
+ * @param[in] mob_id (criteria) class of the monster checked for.
+ * @param[in] progress (goal) progress to be added.
+ * @see achievement_vaildate_type()
+ */
+static void achievement_validate_mob_kill(struct map_session_data *sd, int mob_id)
+{
+ struct achievement_objective criteria = { 0 };
+
+ nullpo_retv(sd);
+ Assert_retv(mob_id > 0 && mob->db(mob_id) != NULL);
+
+ if (sd->achievements_received == false)
+ return;
+
+ criteria.mobid = mob_id;
+ criteria.goal = 1;
+
+ achievement->validate_type(sd, ACH_KILL_MOB_CLASS, &criteria, true);
+}
+
+/**
+ * Validate monster damage type objectives.
+ * @types ACH_DAMAGE_MOB_REC_MAX
+ * ACH_DAMAGE_MOB_REC_TOTAL
+ * @param[in] sd pointer to session data.
+ * @param[in] damage amount of damage received/dealt.
+ * @param received received/dealt boolean switch.
+ */
+static void achievement_validate_mob_damage(struct map_session_data *sd, unsigned int damage, bool received)
+{
+ struct achievement_objective criteria = { 0 };
+
+ nullpo_retv(sd);
+ Assert_retv(damage > 0);
+
+ if (sd->achievements_received == false)
+ return;
+
+ criteria.goal = (int) damage;
+
+ if (received) {
+ achievement->validate_type(sd, ACH_DAMAGE_MOB_REC_MAX, &criteria, false);
+ achievement->validate_type(sd, ACH_DAMAGE_MOB_REC_TOTAL, &criteria, true);
+ } else {
+ achievement->validate_type(sd, ACH_DAMAGE_MOB_MAX, &criteria, false);
+ achievement->validate_type(sd, ACH_DAMAGE_MOB_TOTAL, &criteria, true);
+ }
+
+}
+
+/**
+ * Validate player kill (PVP) achievements.
+ * @types ACH_KILL_PC_TOTAL
+ * ACH_KILL_PC_JOB
+ * ACH_KILL_PC_JOBTYPE
+ * @param[in] sd pointer to killed player's session data.
+ * @param[in] dstsd pointer to killer's session data.
+ */
+static void achievement_validate_pc_kill(struct map_session_data *sd, struct map_session_data *dstsd)
+{
+ struct achievement_objective criteria = { 0 };
+
+ nullpo_retv(sd);
+ nullpo_retv(dstsd);
+
+ if (sd->achievements_received == false)
+ return;
+
+ criteria.goal = 1;
+
+ /* */
+ achievement->validate_type(sd, ACH_KILL_PC_TOTAL, &criteria, true);
+
+ /* */
+ VECTOR_INIT(criteria.jobid);
+ VECTOR_ENSURE(criteria.jobid, 1, 1);
+ VECTOR_PUSH(criteria.jobid, dstsd->status.class);
+
+ /* Job class */
+ achievement->validate_type(sd, ACH_KILL_PC_JOB, &criteria, true);
+ /* Job Type */
+ achievement->validate_type(sd, ACH_KILL_PC_JOBTYPE, &criteria, true);
+
+ VECTOR_CLEAR(criteria.jobid);
+}
+
+/**
+ * Validate player kill (PVP) achievements.
+ * @types ACH_DAMAGE_PC_MAX
+ * ACH_DAMAGE_PC_TOTAL
+ * ACH_DAMAGE_PC_REC_MAX
+ * ACH_DAMAGE_PC_REC_TOTAL
+ * @param[in] sd pointer to source player's session data.
+ * @param[in] dstsd pointer to target player's session data.
+ * @param[in] damage amount of damage dealt / received.
+ */
+static void achievement_validate_pc_damage(struct map_session_data *sd, struct map_session_data *dstsd, unsigned int damage)
+{
+ struct achievement_objective criteria = { 0 };
+
+ nullpo_retv(sd);
+
+ if (sd->achievements_received == false)
+ return;
+
+ if (damage == 0)
+ return;
+
+ criteria.goal = (int) damage;
+
+ /* */
+ achievement->validate_type(sd, ACH_DAMAGE_PC_MAX, &criteria, false);
+ achievement->validate_type(sd, ACH_DAMAGE_PC_TOTAL, &criteria, true);
+
+ /* */
+ achievement->validate_type(dstsd, ACH_DAMAGE_PC_REC_MAX, &criteria, false);
+ achievement->validate_type(dstsd, ACH_DAMAGE_PC_REC_TOTAL, &criteria, true);
+}
+
+/**
+ * Validates job change objectives.
+ * @type ACH_JOB_CHANGE
+ * @param[in] sd pointer to session data.
+ * @see achivement_validate_type()
+ */
+static void achievement_validate_jobchange(struct map_session_data *sd)
+{
+ struct achievement_objective criteria = { 0 };
+
+ nullpo_retv(sd);
+
+ if (sd->achievements_received == false)
+ return;
+
+ VECTOR_INIT(criteria.jobid);
+ VECTOR_ENSURE(criteria.jobid, 1, 1);
+ VECTOR_PUSH(criteria.jobid, sd->status.class);
+
+ criteria.goal = 1;
+
+ achievement->validate_type(sd, ACH_JOB_CHANGE, &criteria, false);
+
+ VECTOR_CLEAR(criteria.jobid);
+}
+
+/**
+ * Validates stat type objectives.
+ * @types ACH_STATUS
+ * ACH_STATUS_BY_JOB
+ * ACH_STATUS_BY_JOBTYPE
+ * @param[in] sd pointer to session data.
+ * @param[in] stat_type (criteria) status point type. (see status_point_types)
+ * @param[in] progress (goal) amount of absolute progress to check.
+ * @see achievement_validate_type()
+ */
+static void achievement_validate_stats(struct map_session_data *sd, enum status_point_types stat_type, int progress)
+{
+ struct achievement_objective criteria = { 0 };
+
+ nullpo_retv(sd);
+ Assert_retv(progress > 0);
+
+ if (sd->achievements_received == false)
+ return;
+
+ if (!achievement_valid_status_types(stat_type)) {
+ ShowError("achievement_validate_stats: Invalid status type %d given.\n", (int) stat_type);
+ return;
+ }
+
+ criteria.unique.status_type = stat_type;
+
+ criteria.goal = progress;
+
+ achievement->validate_type(sd, ACH_STATUS, &criteria, false);
+
+ VECTOR_INIT(criteria.jobid);
+ VECTOR_ENSURE(criteria.jobid, 1, 1);
+ VECTOR_PUSH(criteria.jobid, sd->status.class);
+
+ /* Stat and Job class */
+ achievement->validate_type(sd, ACH_STATUS_BY_JOB, &criteria, false);
+
+ /* Stat and Job Type */
+ achievement->validate_type(sd, ACH_STATUS_BY_JOBTYPE, &criteria, false);
+
+ VECTOR_CLEAR(criteria.jobid);
+}
+
+/**
+ * Validates chatroom creation type objectives.
+ * @types ACH_CHATROOM_CREATE
+ * ACH_CHATROOM_CREATE_DEAD
+ * @param[in] sd pointer to session data.
+ * @see achievement_validate_type()
+ */
+static void achievement_validate_chatroom_create(struct map_session_data *sd)
+{
+ struct achievement_objective criteria = { 0 };
+
+ nullpo_retv(sd);
+
+ if (sd->achievements_received == false)
+ return;
+
+ criteria.goal = 1;
+
+ if (pc_isdead(sd)) {
+ achievement->validate_type(sd, ACH_CHATROOM_CREATE_DEAD, &criteria, true);
+ return;
+ }
+
+ achievement->validate_type(sd, ACH_CHATROOM_CREATE, &criteria, true);
+}
+
+/**
+ * Validates chatroom member count type objectives.
+ * @type ACH_CHATROOM_MEMBERS
+ * @param[in] sd pointer to session data.
+ * @param[in] progress (goal) amount of progress to be added.
+ * @see achievement_validate_type()
+ */
+static void achievement_validate_chatroom_members(struct map_session_data *sd, int progress)
+{
+ struct achievement_objective criteria = { 0 };
+
+ nullpo_retv(sd);
+
+ if (sd->achievements_received == false)
+ return;
+
+ Assert_retv(progress > 0);
+
+ criteria.goal = progress;
+
+ achievement->validate_type(sd, ACH_CHATROOM_MEMBERS, &criteria, false);
+}
+
+/**
+ * Validates friend add type objectives.
+ * @type ACH_FRIEND_ADD
+ * @param[in] sd pointer to session data.
+ * @see achievement_validate_type()
+ */
+static void achievement_validate_friend_add(struct map_session_data *sd)
+{
+ struct achievement_objective criteria = { 0 };
+
+ nullpo_retv(sd);
+
+ if (sd->achievements_received == false)
+ return;
+
+ criteria.goal = 1;
+
+ achievement->validate_type(sd, ACH_FRIEND_ADD, &criteria, true);
+}
+
+/**
+ * Validates party creation type objectives.
+ * @type ACH_PARTY_CREATE
+ * @param[in] sd pointer to session data.
+ * @see achievement_validate_type()
+ */
+static void achievement_validate_party_create(struct map_session_data *sd)
+{
+ struct achievement_objective criteria = { 0 };
+
+ nullpo_retv(sd);
+
+ if (sd->achievements_received == false)
+ return;
+
+ criteria.goal = 1;
+ achievement->validate_type(sd, ACH_PARTY_CREATE, &criteria, true);
+}
+
+/**
+ * Validates marriage type objectives.
+ * @type ACH_MARRY
+ * @param[in] sd pointer to session data.
+ * @see achievement_validate_type()
+ */
+static void achievement_validate_marry(struct map_session_data *sd)
+{
+ struct achievement_objective criteria = { 0 };
+
+ nullpo_retv(sd);
+
+ if (sd->achievements_received == false)
+ return;
+
+ criteria.goal = 1;
+
+ achievement->validate_type(sd, ACH_MARRY, &criteria, true);
+}
+
+/**
+ * Validates adoption type objectives.
+ * @types ACH_ADOPT_PARENT
+ * ACH_ADOPT_BABY
+ * @param[in] sd pointer to session data.
+ * @param[in] parent (type) boolean value to indicate if parent (true) or baby (false).
+ * @see achievement_validate_type()
+ */
+static void achievement_validate_adopt(struct map_session_data *sd, bool parent)
+{
+ struct achievement_objective criteria = { 0 };
+
+ nullpo_retv(sd);
+
+ if (sd->achievements_received == false)
+ return;
+
+ criteria.goal = 1;
+
+ if (parent)
+ achievement->validate_type(sd, ACH_ADOPT_PARENT, &criteria, true);
+ else
+ achievement->validate_type(sd, ACH_ADOPT_BABY, &criteria, true);
+}
+
+/**
+ * Validates zeny type objectives.
+ * @types ACH_ZENY_HOLD
+ * ACH_ZENY_GET_ONCE
+ * ACH_ZENY_GET_TOTAL
+ * ACH_ZENY_SPEND_ONCE
+ * ACH_ZENY_SPEND_TOTAL
+ * @param[in] sd pointer to session data.
+ * @param[in] amount (goal) amount of zeny earned or spent.
+ * @see achievement_validate_type()
+ */
+static void achievement_validate_zeny(struct map_session_data *sd, int amount)
+{
+ struct achievement_objective criteria = { 0 };
+
+ nullpo_retv(sd);
+
+ if (sd->achievements_received == false)
+ return;
+
+ Assert_retv(amount != 0);
+
+ if (amount > 0) {
+ criteria.goal = sd->status.zeny;
+ achievement->validate_type(sd, ACH_ZENY_HOLD, &criteria, false);
+ criteria.goal = amount;
+ achievement->validate_type(sd, ACH_ZENY_GET_ONCE, &criteria, false);
+ achievement->validate_type(sd, ACH_ZENY_GET_TOTAL, &criteria, true);
+ } else {
+ criteria.goal = -amount;
+ achievement->validate_type(sd, ACH_ZENY_SPEND_ONCE, &criteria, false);
+ achievement->validate_type(sd, ACH_ZENY_SPEND_TOTAL, &criteria, true);
+ }
+}
+
+/**
+ * Validates equipment refinement type objectives.
+ * @types ACH_EQUIP_REFINE_SUCCESS
+ * ACH_EQUIP_REFINE_FAILURE
+ * ACH_EQUIP_REFINE_SUCCESS_TOTAL
+ * ACH_EQUIP_REFINE_FAILURE_TOTAL
+ * ACH_EQUIP_REFINE_SUCCESS_WLV
+ * ACH_EQUIP_REFINE_FAILURE_WLV
+ * ACH_EQUIP_REFINE_SUCCESS_ID
+ * ACH_EQUIP_REFINE_FAILURE_ID
+ * @param[in] sd pointer to session data.
+ * @param[in] idx Inventory index of the item.
+ * @param[in] success (type) boolean switch for failure / success.
+ * @see achievement_validate_type()
+ */
+static void achievement_validate_refine(struct map_session_data *sd, unsigned int idx, bool success)
+{
+ struct achievement_objective criteria = { 0 };
+ struct item_data *id = NULL;
+
+ nullpo_retv(sd);
+ Assert_retv(idx < sd->status.inventorySize);
+
+ id = itemdb->exists(sd->status.inventory[idx].nameid);
+
+ if (sd->achievements_received == false)
+ return;
+
+ Assert_retv(id != NULL);
+
+ criteria.goal = sd->status.inventory[idx].refine;
+
+ // achievement should not trigger if refine is 0
+ if (criteria.goal == 0)
+ return;
+
+ /* Universal */
+ achievement->validate_type(sd,
+ success ? ACH_EQUIP_REFINE_SUCCESS : ACH_EQUIP_REFINE_FAILURE,
+ &criteria, false);
+
+ /* Total */
+ criteria.goal = 1;
+ achievement->validate_type(sd,
+ success ? ACH_EQUIP_REFINE_SUCCESS_TOTAL : ACH_EQUIP_REFINE_FAILURE_TOTAL,
+ &criteria, true);
+
+ /* By Weapon Level */
+ if (id->type == IT_WEAPON) {
+ criteria.item_type = id->type;
+ criteria.unique.weapon_lv = id->wlv;
+ criteria.goal = sd->status.inventory[idx].refine;
+ achievement->validate_type(sd,
+ success ? ACH_EQUIP_REFINE_SUCCESS_WLV : ACH_EQUIP_REFINE_FAILURE_WLV,
+ &criteria, false);
+ criteria.item_type = 0;
+ criteria.unique.weapon_lv = 0; // cleanup
+ }
+
+ /* By NameId */
+ criteria.unique.itemid = id->nameid;
+ criteria.goal = sd->status.inventory[idx].refine;
+ achievement->validate_type(sd,
+ success ? ACH_EQUIP_REFINE_SUCCESS_ID : ACH_EQUIP_REFINE_FAILURE_ID,
+ &criteria, false);
+ criteria.unique.itemid = 0; // cleanup
+}
+
+/**
+ * Validates item received type objectives.
+ * @types ACH_ITEM_GET_COUNT
+ * ACH_ITEM_GET_WORTH
+ * ACH_ITEM_GET_COUNT_ITEMTYPE
+ * @param[in] sd pointer to session data.
+ * @param[in] nameid (criteria) ID of the item.
+ * @param[in] amount (goal) amount of the item collected.
+ */
+static void achievement_validate_item_get(struct map_session_data *sd, int nameid, int amount)
+{
+ struct item_data *it = itemdb->exists(nameid);
+ struct achievement_objective criteria = { 0 };
+
+ nullpo_retv(sd);
+
+ if (sd->achievements_received == false)
+ return;
+
+ Assert_retv(amount > 0);
+ nullpo_retv(it);
+
+ criteria.unique.itemid = it->nameid;
+ criteria.goal = amount;
+ achievement->validate_type(sd, ACH_ITEM_GET_COUNT, &criteria, false);
+ criteria.unique.itemid = 0; // cleanup
+
+ /* Item Buy Value*/
+ criteria.goal = max(it->value_buy, 1);
+ achievement->validate_type(sd, ACH_ITEM_GET_WORTH, &criteria, false);
+
+ /* Item Type */
+ criteria.item_type = it->type;
+ criteria.goal = 1;
+ achievement->validate_type(sd, ACH_ITEM_GET_COUNT_ITEMTYPE, &criteria, false);
+ criteria.item_type = 0; // cleanup
+}
+
+/**
+ * Validates item sold type objectives.
+ * @type ACH_ITEM_SELL_WORTH
+ * @param[in] sd pointer to session data.
+ * @param[in] nameid Item Id in question.
+ * @param[in] amount amount of item in question.
+ */
+static void achievement_validate_item_sell(struct map_session_data *sd, int nameid, int amount)
+{
+ struct item_data *it = itemdb->exists(nameid);
+ struct achievement_objective criteria = { 0 };
+
+ nullpo_retv(sd);
+
+ if (sd->achievements_received == false)
+ return;
+
+ Assert_retv(amount > 0);
+ nullpo_retv(it);
+
+ criteria.unique.itemid = it->nameid;
+
+ criteria.goal = max(it->value_sell, 1);
+
+ achievement->validate_type(sd, ACH_ITEM_SELL_WORTH, &criteria, false);
+}
+
+/**
+ * Validates achievement type objectives.
+ * @type ACH_ACHIEVE
+ * @param[in] sd pointer to session data.
+ * @param[in] achid (criteria) achievement id.
+ */
+static void achievement_validate_achieve(struct map_session_data *sd, int achid)
+{
+ const struct achievement_data *ad = achievement->get(achid);
+ struct achievement_objective criteria = { 0 };
+
+ nullpo_retv(sd);
+ nullpo_retv(ad);
+
+ if (sd->achievements_received == false)
+ return;
+
+ Assert_retv(achid > 0);
+
+ criteria.unique.achieve_id = ad->id;
+
+ criteria.goal = 1;
+
+ achievement->validate_type(sd, ACH_ACHIEVE, &criteria, false);
+}
+
+/**
+ * Validates taming type objectives.
+ * @type ACH_PET_CREATE
+ * @param[in] sd pointer to session data.
+ * @param[in] class (criteria) class of the monster tamed.
+ */
+static void achievement_validate_taming(struct map_session_data *sd, int class)
+{
+ struct achievement_objective criteria = { 0 };
+
+ nullpo_retv(sd);
+
+ if (sd->achievements_received == false)
+ return;
+
+ Assert_retv(class > 0);
+ Assert_retv(mob->db(class) != mob->dummy);
+
+ criteria.mobid = class;
+ criteria.goal = 1;
+
+ achievement->validate_type(sd, ACH_PET_CREATE, &criteria, true);
+}
+
+/**
+ * Validated achievement rank type objectives.
+ * @type ACH_ACHIEVEMENT_RANK
+ * @param[in] sd pointer to session data.
+ * @param[in] rank (goal) rank of earned.
+ */
+static void achievement_validate_achievement_rank(struct map_session_data *sd, int rank)
+{
+ struct achievement_objective criteria = { 0 };
+
+ nullpo_retv(sd);
+
+ if (sd->achievements_received == false)
+ return;
+
+ Assert_retv(rank >= 0 && rank <= VECTOR_LENGTH(achievement->rank_exp));
+
+ criteria.goal = 1;
+
+ achievement->validate_type(sd, ACH_ACHIEVEMENT_RANK, &criteria, false);
+}
+
+/**
+ * Verifies if an achievement type requires a criteria field.
+ * @param[in] type achievement type in question.
+ * @return true if required, false if not.
+ */
+static bool achievement_type_requires_criteria(enum achievement_types type)
+{
+ if (type == ACH_KILL_PC_JOB
+ || type == ACH_KILL_PC_JOBTYPE
+ || type == ACH_KILL_MOB_CLASS
+ || type == ACH_JOB_CHANGE
+ || type == ACH_STATUS
+ || type == ACH_STATUS_BY_JOB
+ || type == ACH_STATUS_BY_JOBTYPE
+ || type == ACH_EQUIP_REFINE_SUCCESS_WLV
+ || type == ACH_EQUIP_REFINE_FAILURE_WLV
+ || type == ACH_EQUIP_REFINE_SUCCESS_ID
+ || type == ACH_EQUIP_REFINE_FAILURE_ID
+ || type == ACH_ITEM_GET_COUNT
+ || type == ACH_PET_CREATE
+ || type == ACH_ACHIEVE)
+ return true;
+
+ return false;
+}
+
+/**
+ * Stores all the title ID that has been earned by player
+ * @param[in] sd pointer to session data.
+ */
+static void achievement_init_titles(struct map_session_data *sd)
+{
+ int i;
+ nullpo_retv(sd);
+
+ VECTOR_INIT(sd->title_ids);
+ /* Browse through the session's achievement list and gather their values. */
+ for (i = 0; i < VECTOR_LENGTH(sd->achievement); i++) {
+ struct achievement *a = &VECTOR_INDEX(sd->achievement, i);
+ const struct achievement_data *ad = NULL;
+
+ /* Sanity check for nonull pointers. */
+ if (a == NULL || (ad = achievement->get(a->id)) == NULL)
+ continue;
+
+ if (a->completed_at > 0 && a->rewarded_at > 0 && ad->rewards.title_id > 0) {
+ VECTOR_ENSURE(sd->title_ids, 1, 1);
+ VECTOR_PUSH(sd->title_ids, ad->rewards.title_id);
+ }
+ }
+}
+
+/**
+ * Validates whether player has earned the title.
+ * @param[in] sd pointer to session data.
+ * @param[in] title_id Title ID
+ * @return true, if title has been earned, else false
+ */
+static bool achievement_check_title(struct map_session_data *sd, int title_id) {
+ int i;
+
+ nullpo_retr(false, sd);
+
+ if (title_id == 0)
+ return true;
+
+ for (i = 0; i < VECTOR_LENGTH(sd->title_ids); i++) {
+ if (VECTOR_INDEX(sd->title_ids, i) == title_id) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+static void achievement_get_rewards_buffs(struct map_session_data *sd, const struct achievement_data *ad)
+{
+ nullpo_retv(sd);
+ nullpo_retv(ad);
+
+ if (ad->rewards.bonus != NULL)
+ script->run(ad->rewards.bonus, 0, sd->bl.id, 0);
+}
+
+// TODO: kro send items by rodex
+static void achievement_get_rewards_items(struct map_session_data *sd, const struct achievement_data *ad)
+{
+ nullpo_retv(sd);
+ nullpo_retv(ad);
+
+ struct item it = { 0 };
+ it.identify = 1;
+
+ for (int i = 0; i < VECTOR_LENGTH(ad->rewards.item); i++) {
+ it.nameid = VECTOR_INDEX(ad->rewards.item, i).id;
+ int total = VECTOR_INDEX(ad->rewards.item, i).amount;
+
+ //Check if it's stackable.
+ if (!itemdb->isstackable(it.nameid)) {
+ it.amount = 1;
+ for (int j = 0; j < total; ++j)
+ pc->additem(sd, &it, 1, LOG_TYPE_SCRIPT);
+ } else {
+ it.amount = total;
+ pc->additem(sd, &it, total, LOG_TYPE_SCRIPT);
+ }
+ }
+}
+
+/**
+ * Achievement rewards are given to player
+ * @param sd session data
+ * @param ad achievement data
+ */
+static bool achievement_get_rewards(struct map_session_data *sd, const struct achievement_data *ad)
+{
+ nullpo_retr(false, sd);
+ nullpo_retr(false, ad);
+
+ struct achievement *ach = achievement->ensure(sd, ad);
+ if (ach == NULL)
+ return false;
+
+ /* Buff */
+ achievement->get_rewards_buffs(sd, ad);
+
+ ach->rewarded_at = time(NULL);
+
+ if (ad->rewards.title_id > 0) { // Add Title
+ VECTOR_ENSURE(sd->title_ids, 1, 1);
+ VECTOR_PUSH(sd->title_ids, ad->rewards.title_id);
+ clif->achievement_send_list(sd->fd, sd);
+ } else {
+ clif->achievement_send_update(sd->fd, sd, ad); // send update.
+ clif->achievement_reward_ack(sd->fd, sd, ad);
+ }
+
+ /* Give Items */
+ achievement->get_rewards_items(sd, ad);
+
+ return true;
+}
+
+/**
+ * Parses the Achievement Ranks.
+ * @read db/achievement_rank_db.conf
+ */
+static void achievement_readdb_ranks(void)
+{
+ const char *filename = "db/achievement_rank_db.conf";
+ struct config_t ar_conf = { 0 };
+ struct config_setting_t *ardb = NULL, *conf = NULL;
+ int entry = 0;
+
+ if (!libconfig->load_file(&ar_conf, filename))
+ return; // report error.
+
+ if (!(ardb = libconfig->setting_get_member(ar_conf.root, "achievement_rank_db"))) {
+ ShowError("achievement_readdb_ranks: Could not process contents of file '%s', skipping...\n", filename);
+ libconfig->destroy(&ar_conf);
+ return;
+ }
+
+ while (entry < libconfig->setting_length(ardb) && entry < MAX_ACHIEVEMENT_RANKS) {
+ char rank[16];
+
+ if (!(conf = libconfig->setting_get_elem(ardb, entry))) {
+ ShowError("achievement_readdb_ranks: Could not read value for entry %d, skipping...\n", entry+1);
+ continue;
+ }
+
+ entry++; // Rank counter;
+
+ sprintf(rank, "Rank%d", entry);
+
+ if (strcmp(rank, config_setting_name(conf)) == 0) {
+ int exp = 0;
+
+ if ((exp = libconfig->setting_get_int(conf)) <= 0) {
+ ShowError("achievement_readdb_ranks: Invalid value provided for %s in '%s'.\n", rank, filename);
+ continue;
+ }
+
+ VECTOR_ENSURE(achievement->rank_exp, 1, 1);
+ VECTOR_PUSH(achievement->rank_exp, exp);
+ } else {
+ ShowWarning("achievement_readdb_ranks: Ranks are not in order! Ignoring all ranks after Rank %d...\n", entry);
+ break; // break if elements are not in order or rank doesn't exist.
+ }
+ }
+
+ if (libconfig->setting_length(ardb) > MAX_ACHIEVEMENT_RANKS)
+ ShowWarning("achievement_rankdb_ranks: Maximum number of achievement ranks exceeded. Skipping all after entry %d...\n", entry);
+
+ libconfig->destroy(&ar_conf);
+
+ if (!entry) {
+ ShowError("achievement_readdb_ranks: No ranks provided in '%s'!\n", filename);
+ return;
+ }
+
+ ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' entries in '"CL_WHITE"%s"CL_RESET"'.\n", entry, filename);
+}
+
+/**
+ * Validates Mob Id criteria of an objective while parsing an achievement entry.
+ * @param[in] t pointer to the config setting.
+ * @param[out] obj pointer to the achievement objective entry being parsed.
+ * @param[in] type Type of the achievement being parsed.
+ * @param[in] entry_id Id of the entry being parsed.
+ * @param[in] obj_idx Index of the objective entry being parsed.
+ * @return false on failure, true on success
+ */
+static bool achievement_readdb_validate_criteria_mobid(const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx)
+{
+ int val = 0;
+ const char *string = NULL;
+
+ nullpo_retr(false, t);
+ nullpo_retr(false, obj);
+
+ if (libconfig->setting_lookup_int(t, "MobId", &val)) {
+ if (mob->db_checkid(val) == 0) {
+ ShowError("achievement_readdb_validate_criteria_mobid: Non-existant monster with ID %id provided (Achievement: %d, Objective: %d). Skipping...\n", val, entry_id, obj_idx);
+ return false;
+ }
+
+ obj->mobid = val;
+ } else if (libconfig->setting_lookup_string(t, "MobId", &string)) {
+ if (!script->get_constant(string, &val)) {
+ ShowError("achievement_readdb_validate_criteria_mobid: Non-existant constant %s provided (Achievement: %d, Objective: %d). Skipping...\n", string, entry_id, obj_idx);
+ return false;
+ }
+
+ obj->mobid = val;
+ } else if (achievement_criteria_mobid(type)) {
+ ShowError("achievement_readdb_validate_criteria_mobid: Achievement type of ID %d requires MobId as objective criteria, setting not provided. Skipping...\n", entry_id);
+ return false;
+ }
+
+ return true;
+}
+
+/**
+ * Validates Job Id criteria of an objective while parsing an achievement entry.
+ * @param[in] t pointer to the config setting.
+ * @param[out] obj pointer to the achievement objective entry being parsed.
+ * @param[in] type Type of the achievement being parsed.
+ * @param[in] entry_id Id of the entry being parsed.
+ * @param[in] obj_idx Index of the objective entry being parsed.
+ * @return false on failure, true on success.
+ */
+static bool achievement_readdb_validate_criteria_jobid(const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx)
+{
+ int job_id = 0;
+ const char *string = NULL;
+ struct config_setting_t *tt = NULL;
+
+ nullpo_retr(false, t);
+ nullpo_retr(false, obj);
+
+ // initialize the buffered objective jobid vector.
+ VECTOR_INIT(obj->jobid);
+
+ if (libconfig->setting_lookup_int(t, "JobId", &job_id)) {
+ if (pc->jobid2mapid(job_id) == -1) {
+ ShowError("achievement_readdb_validate_criteria_jobid: Invalid JobId %d provided (Achievement: %d, Objective: %d). Skipping...\n", job_id, entry_id, obj_idx);
+ return false;
+ }
+
+ VECTOR_ENSURE(obj->jobid, 1, 1);
+ VECTOR_PUSH(obj->jobid, job_id);
+ } else if (libconfig->setting_lookup_string(t, "JobId", &string)) {
+ if (script->get_constant(string, &job_id) == false) {
+ ShowError("achievement_readdb_validate_criteria_jobid: Invalid JobId %d provided (Achievement: %d, Objective: %d). Skipping...\n", job_id, entry_id, obj_idx);
+ return false;
+ }
+
+ VECTOR_ENSURE(obj->jobid, 1, 1);
+ VECTOR_PUSH(obj->jobid, job_id);
+ } else if ((tt = libconfig->setting_get_member(t, "JobId")) && config_setting_is_array(tt)) {
+ int j = 0;
+
+ while (j < libconfig->setting_length(tt)) {
+ if ((job_id = libconfig->setting_get_int_elem(tt, j)) == 0) {
+ if ((string = libconfig->setting_get_string_elem(tt, j)) != NULL && script->get_constant(string, &job_id) == false) {
+ ShowError("achievement_readdb_validate_criteria_jobid: Invalid JobId provided at index %d (Achievement: %d, Objective: %d). Skipping...\n", j, entry_id, obj_idx);
+ continue;
+ }
+ }
+
+ /* Ensure size and allocation */
+ VECTOR_ENSURE(obj->jobid, 1, 1);
+ /* push buffer */
+ VECTOR_PUSH(obj->jobid, job_id);
+ j++;
+ }
+ } else if (achievement_criteria_jobid(type)) {
+ ShowError("achievement_readdb_validate_criteria_jobid: Achievement type of ID %d requires a JobId field in the objective criteria, setting not provided. Skipping...\n", entry_id);
+ return false;
+ }
+
+ return true;
+
+}
+
+/**
+ * Validates Item Id criteria of an objective while parsing an achievement entry.
+ * @param[in] t pointer to the config setting.
+ * @param[out] obj pointer to the achievement objective entry being parsed.
+ * @param[in] type Type of the achievement being parsed.
+ * @param[in] entry_id Id of the entry being parsed.
+ * @param[in] obj_idx Index of the objective entry being parsed.
+ * @return false on failure, true on success.
+ */
+static bool achievement_readdb_validate_criteria_itemid(const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx)
+{
+ int val = 0;
+ const char *string = NULL;
+
+ nullpo_retr(false, t);
+ nullpo_retr(false, obj);
+
+
+ if (libconfig->setting_lookup_int(t, "ItemId", &val)) {
+ if (itemdb->exists(val) == NULL) {
+ ShowError("achievement_readdb_validate_criteria_itemid: Invalid ItemID %d provided (Achievement: %d, Objective: %d). Skipping...\n", val, entry_id, obj_idx);
+ return false;
+ } else if (obj->unique_type != CRITERIA_UNIQUE_NONE) {
+ ShowError("achievement_readdb_validate_criteria_itemid: Unique criteria has already been set to type %d. (Achievement: %d, Objective: %d). Skipping...\n", (int) obj->unique_type, entry_id, obj_idx);
+ return false;
+ }
+
+ obj->unique.itemid = val;
+ obj->unique_type = CRITERIA_UNIQUE_ITEM_ID;
+ } else if (libconfig->setting_lookup_string(t, "ItemId", &string)) {
+ if (script->get_constant(string, &val) == false) {
+ ShowError("achievement_readdb_validate_criteria_itemid: Invalid ItemID %d provided (Achievement: %d, Objective: %d). Skipping...\n", val, entry_id, obj_idx);
+ return false;
+ } else if (obj->unique_type != CRITERIA_UNIQUE_NONE) {
+ ShowError("achievement_readdb_validate_criteria_itemid: Unique criteria has already been set to type %d. (Achievement: %d, Objective: %d). Skipping...\n", (int) obj->unique_type, entry_id, obj_idx);
+ return false;
+ }
+
+ obj->unique.itemid = val;
+ obj->unique_type = CRITERIA_UNIQUE_ITEM_ID;
+ } else if (achievement_criteria_itemid(type)) {
+ ShowError("achievement_readdb_validate_criteria_itemid: Criteria requires a ItemId field (Achievement: %d, Objective: %d). Skipping...\n", entry_id, obj_idx);
+ return false;
+ }
+
+ return true;
+}
+
+/**
+ * Validates Status Type criteria of an objective while parsing an achievement entry.
+ * @param[in] t pointer to the config setting.
+ * @param[out] obj pointer to the achievement objective entry being parsed.
+ * @param[in] type Type of the achievement being parsed.
+ * @param[in] entry_id Id of the entry being parsed.
+ * @param[in] obj_idx Index of the objective entry being parsed.
+ * @return false on failure, true on success.
+ */
+static bool achievement_readdb_validate_criteria_statustype(const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx)
+{
+ int val = 0;
+ const char *string = NULL;
+
+ nullpo_retr(false, t);
+ nullpo_retr(false, obj);
+
+ if (libconfig->setting_lookup_int(t, "StatusType", &val)) {
+ if (!achievement_valid_status_types(val)) {
+ ShowError("achievement_readdb_validate_criteria_statustype: Invalid StatusType %d provided (Achievement: %d, Objective: %d). Skipping...\n", val, entry_id, obj_idx);
+ return false;
+ } else if (obj->unique_type != CRITERIA_UNIQUE_NONE) {
+ ShowError("achievement_readdb_validate_criteria_statustype: Unique criteria has already been set to type %d. (Achievement: %d, Objective: %d). Skipping...\n", (int) obj->unique_type, entry_id, obj_idx);
+ return false;
+ }
+
+ obj->unique.status_type = (enum status_point_types) val;
+ obj->unique_type = CRITERIA_UNIQUE_STATUS_TYPE;
+ } else if (libconfig->setting_lookup_string(t, "StatusType", &string)) {
+ if (strcmp(string, "SP_STR") == 0) val = SP_STR;
+ else if (strcmp(string, "SP_AGI") == 0) val = SP_AGI;
+ else if (strcmp(string, "SP_VIT") == 0) val = SP_VIT;
+ else if (strcmp(string, "SP_INT") == 0) val = SP_INT;
+ else if (strcmp(string, "SP_DEX") == 0) val = SP_DEX;
+ else if (strcmp(string, "SP_LUK") == 0) val = SP_LUK;
+ else if (strcmp(string, "SP_BASELEVEL") == 0) val = SP_BASELEVEL;
+ else if (strcmp(string, "SP_JOBLEVEL") == 0) val = SP_JOBLEVEL;
+ else val = SP_NONE;
+
+ if (!achievement_valid_status_types(val)) {
+ ShowError("achievement_readdb_validate_criteria_statustype: Invalid StatusType %s provided (Achievement: %d, Objective: %d). Skipping...\n", string, entry_id, obj_idx);
+ return false;
+ } else if (obj->unique_type != CRITERIA_UNIQUE_NONE) {
+ ShowError("achievement_readdb_validate_criteria_statustype: Unique criteria has already been set to type %d. (Achievement: %d, Objective: %d). Skipping...\n", (int) obj->unique_type, entry_id, obj_idx);
+ return false;
+ }
+
+ obj->unique.status_type = (enum status_point_types) val;
+ obj->unique_type = CRITERIA_UNIQUE_STATUS_TYPE;
+ } else if (achievement_criteria_stattype(type)) {
+ ShowError("achievement_readdb_validate_criteria_statustype: Criteria requires a StatusType field (Achievement: %d, Objective: %d). Skipping...\n", entry_id, obj_idx);
+ return false;
+ }
+
+ return true;
+}
+
+/**
+ * Validates Item Type criteria of an objective while parsing an achievement entry.
+ * @param[in] t pointer to the config setting.
+ * @param[out] obj pointer to the achievement objective entry being parsed.
+ * @param[in] type Type of the achievement being parsed.
+ * @param[in] entry_id Id of the entry being parsed.
+ * @param[in] obj_idx Index of the objective entry being parsed.
+ * @return false on failure, true on success.
+ */
+static bool achievement_readdb_validate_criteria_itemtype(const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx)
+{
+ int val = 0;
+ const char *string = NULL;
+ struct config_setting_t *tt = NULL;
+
+ nullpo_retr(false, t);
+ nullpo_retr(false, obj);
+
+ if (libconfig->setting_lookup_int(t, "ItemType", &val)) {
+ if (val < IT_HEALING || val > IT_MAX) {
+ ShowError("achievement_readdb_validate_criteria_itemtype: Invalid ItemType %d provided (Achievement: %d, Objective: %d). Skipping...\n", val, entry_id, obj_idx);
+ return false;
+ }
+
+ if (val == IT_MAX) {
+ obj->item_type |= (2 << val) - 1;
+ } else {
+ obj->item_type |= (2 << val);
+ }
+
+ } else if (libconfig->setting_lookup_string(t, "ItemType", &string)) {
+ if (!script->get_constant(string, &val) || val < IT_HEALING || val > IT_MAX) {
+ ShowError("achievement_readdb_validate_criteria_itemtype: Invalid ItemType %d provided (Achievement: %d, Objective: %d). Skipping...\n", val, entry_id, obj_idx);
+ return false;
+ }
+
+ if (val == IT_MAX) {
+ obj->item_type |= (2 << val) - 1;
+ } else {
+ obj->item_type |= (2 << val);
+ }
+ } else if ((tt = libconfig->setting_get_member(t, "ItemType")) && config_setting_is_array(tt)) {
+ int j = 0;
+
+ while (j < libconfig->setting_length(tt)) {
+ if ((val = libconfig->setting_get_int_elem(tt, j))) {
+ if (val < IT_HEALING || val > IT_MAX) {
+ ShowError("achievement_readdb_validate_criteria_itemtype: Invalid ItemType %d provided (Achievement: %d, Objective: %d). Skipping...\n", val, entry_id, obj_idx);
+ continue;
+ }
+ if (val == IT_MAX) {
+ obj->item_type |= (2 << val) - 1;
+ } else {
+ obj->item_type |= (2 << val);
+ }
+ } else if ((string = libconfig->setting_get_string_elem(tt, j))) {
+ if (!script->get_constant(string, &val)) {
+ ShowError("achievement_readdb_validate_criteria_itemtype: Invalid ItemType %s provided (Achievement: %d, Objective: %d). Skipping...\n", string, entry_id, obj_idx);
+ continue;
+ }
+
+ if (val == IT_MAX) {
+ obj->item_type |= (2 << val) - 1;
+ } else {
+ obj->item_type |= (2 << val);
+ }
+ }
+ j++;
+ }
+ } else if (achievement_criteria_itemtype(type)) {
+ ShowError("achievement_readdb_validate_criteria_itemtype: Criteria requires a ItemType field (Achievement: %d, Objective: %d). Skipping...\n", entry_id, obj_idx);
+ return false;
+ }
+
+ return true;
+}
+
+/**
+ * Validates Weapon Level criteria of an objective while parsing an achievement entry.
+ * @param[in] t pointer to the config setting.
+ * @param[out] obj pointer to the achievement objective entry being parsed.
+ * @param[in] type Type of the achievement being parsed.
+ * @param[in] entry_id Id of the entry being parsed.
+ * @param[in] obj_idx Index of the objective entry being parsed.
+ * @return false on failure, true on success.
+ */
+static bool achievement_readdb_validate_criteria_weaponlv(const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx)
+{
+ int val = 0;
+
+ nullpo_retr(false, t);
+ nullpo_retr(false, obj);
+
+ if (libconfig->setting_lookup_int(t, "WeaponLevel", &val)) {
+ if (val < 1 || val > 4) {
+ ShowError("achievement_readdb_validate_criteria_weaponlv: Invalid WeaponLevel %d provided (Achievement: %d, Objective: %d). Skipping...\n", val, entry_id, obj_idx);
+ return false;
+ } else if (obj->unique_type != CRITERIA_UNIQUE_NONE) {
+ ShowError("achievement_readdb_validate_criteria_weaponlv: Unique criteria has already been set to type %d. (Achievement: %d, Objective: %d). Skipping...\n", (int) obj->unique_type, entry_id, obj_idx);
+ return false;
+ }
+
+ obj->unique.weapon_lv = val;
+ obj->unique_type = CRITERIA_UNIQUE_WEAPON_LV;
+ } else if (achievement_criteria_weaponlv(type)) {
+ ShowError("achievement_readdb_validate_criteria_weaponlv: Criteria requires a WeaponType field. (Achievement: %d, Objective: %d). Skipping...\n", entry_id, obj_idx);
+ return false;
+ }
+
+ return true;
+}
+
+/**
+ * Validates achievement Id criteria of an objective while parsing an achievement entry.
+ * @param[in] t pointer to the config setting.
+ * @param[out] obj pointer to the achievement objective entry being parsed.
+ * @param[in] type Type of the achievement being parsed.
+ * @param[in] entry_id Id of the entry being parsed.
+ * @param[in] obj_idx Index of the objective entry being parsed.
+ * @return false on failure, true on success.
+ */
+static bool achievement_readdb_validate_criteria_achievement(const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx)
+{
+ int val = 0;
+
+ nullpo_retr(false, t);
+ nullpo_retr(false, obj);
+
+ if (libconfig->setting_lookup_int(t, "Achieve", &val)) {
+ if (achievement->get(val) == NULL) {
+ ShowError("achievement_readdb_validate_criteria_achievement: Invalid Achievement %d provided as objective (Achievement %d, Objective %d). Skipping...\n", val, entry_id, obj_idx);
+ return false;
+ } else if (obj->unique_type != CRITERIA_UNIQUE_NONE) {
+ ShowError("achievement_readdb_validate_criteria_achievement: Unique criteria has already been set to type %d. (Achievement: %d, Objective: %d). Skipping...\n", (int) obj->unique_type, entry_id, obj_idx);
+ return false;
+ }
+
+ obj->unique.achieve_id = val;
+ obj->unique_type = CRITERIA_UNIQUE_ACHIEVE_ID;
+ } else if (type == ACH_ACHIEVE) {
+ ShowError("achievement_readdb_validate_criteria_achievement: Achievement type of ID %d requires an Achieve field in the objective criteria, setting not provided. Skipping...\n", entry_id);
+ return false;
+ }
+
+ return true;
+}
+
+/**
+ * Read a single objective entry of an achievement.
+ * @param[in] conf config pointer.
+ * @param[in] index Index of the objective being in the objective list being parsed.
+ * @param[out] entry pointer to the achievement db entry being parsed.
+ * @return false on failure, true on success.
+ */
+static bool achievement_readdb_objective_sub(const struct config_setting_t *conf, int index, struct achievement_data *entry)
+{
+ struct config_setting_t *tt = NULL;
+ char objnum[12];
+
+ nullpo_retr(false, conf);
+ nullpo_retr(false, entry);
+
+ sprintf(objnum, "*%d", index); // Search Objective 1..MAX
+ if ((tt = libconfig->setting_get_member(conf, objnum)) && config_setting_is_group(tt)) {
+ struct achievement_objective obj = { 0 };
+ struct config_setting_t *c = NULL;
+
+ /* Description */
+ if (libconfig->setting_lookup_mutable_string(tt, "Description", obj.description, OBJECTIVE_DESCRIPTION_LENGTH) == 0) {
+ ShowError("achievement_readdb_objective_sub: Objective %d has no description for Achievement %d, skipping...\n", index, entry->id);
+ return false;
+ }
+
+ /* Criteria */
+ if ((c = libconfig->setting_get_member(tt, "Criteria")) && config_setting_is_group(tt)) {
+ /* MobId */
+ if (achievement->readdb_validate_criteria_mobid(c, &obj, entry->type, entry->id, index) == false)
+ return false;
+
+ /* ItemId */
+ if (achievement->readdb_validate_criteria_itemid(c, &obj, entry->type, entry->id, index) == false)
+ return false;
+
+ /* StatusType */
+ if (achievement->readdb_validate_criteria_statustype(c, &obj, entry->type, entry->id, index) == false)
+ return false;
+
+ /* ItemType */
+ if (achievement->readdb_validate_criteria_itemtype(c, &obj, entry->type, entry->id, index) == false)
+ return false;
+
+ /* WeaponLevel */
+ if (achievement->readdb_validate_criteria_weaponlv(c, &obj, entry->type, entry->id, index) == false)
+ return false;
+
+ /* Achievement */
+ if (achievement->readdb_validate_criteria_achievement(c, &obj, entry->type, entry->id, index) == false)
+ return false;
+
+ /**
+ * Vectors are read last to avoid memory leaks if either of the above break, in cases where they are stacked with other criteria.
+ * Note to future editors - be sure to cleanup previous vectors before breaks.
+ */
+ /* JobId */
+ if (achievement->readdb_validate_criteria_jobid(c, &obj, entry->type, entry->id, index) == false)
+ return false;
+ } else if (achievement->type_requires_criteria(entry->type)) {
+ ShowError("achievement_readdb_objective_sub: No criteria field added (Achievement: %d, Objective: %d)! Skipping...\n", entry->id, index);
+ return false;
+ }
+
+ /* Goal */
+ if (libconfig->setting_lookup_int(tt, "Goal", &obj.goal) <= 0)
+ obj.goal = 1; // 1 count by default.
+
+ /* Ensure size and allocation */
+ VECTOR_ENSURE(entry->objective, 1, 1);
+
+ /* Push buffer */
+ VECTOR_PUSH(entry->objective, obj);
+ } else { // Break if not in order, to comply with the client's objective order.
+ ShowWarning("achievement_readdb_objective_sub: Objectives for Achievement %d are not in order (starting from *%d). Remaining objectives will be skipped.\n", entry->id, index);
+ return false;
+ }
+
+ return true;
+}
+
+/**
+ * Parses achievement objective entries of the current achievement db entry being parsed.
+ * @param[in] conf config pointer.
+ * @param[out] entry pointer to the achievement db entry being parsed.
+ * @return false on failure, true on success.
+ */
+static bool achievement_readdb_objectives(const struct config_setting_t *conf, struct achievement_data *entry)
+{
+ struct config_setting_t *t = NULL;
+
+ nullpo_retr(false, conf);
+ nullpo_retr(false, entry);
+
+ if ((t = libconfig->setting_get_member(conf, "Objectives")) && config_setting_is_group(t)) {
+ int i = 0;
+ // Initialize the buffer objective vector.
+ VECTOR_INIT(entry->objective);
+
+ for (i = 0; i < libconfig->setting_length(t) && i < MAX_ACHIEVEMENT_OBJECTIVES; i++)
+ if (achievement_readdb_objective_sub(t, i + 1, entry) == false)
+ break;
+
+ // Assess total objectives.
+ if (libconfig->setting_length(t) > MAX_ACHIEVEMENT_OBJECTIVES)
+ ShowWarning("achievement_readdb_objectives: Exceeded maximum number of objectives (%d) for Achievement %d. Remaining objectives will be skipped.\n", MAX_ACHIEVEMENT_OBJECTIVES, entry->id);
+ if (i == 0) {
+ ShowError("achievement_readdb_objectives: No Objectives provided for Achievement %d, skipping...\n", entry->id);
+ return false;
+ }
+ } else {
+ ShowError("achievement_readdb_objectives: No Objectives provided for Achievement %d, skipping...\n", entry->id);
+ return false;
+ } // end of "Objectives"
+
+ return true;
+}
+
+/**
+ * Validates a single reward item in the reward item list of an achievement.
+ * @param[in] t pointer to the config setting.
+ * @param[in] index Index of the item in the reward list.
+ * @param[out] entry pointer to the achievement entry being parsed.
+ * @return false on failure, true on success.
+ */
+static bool achievement_readdb_validate_reward_item_sub(const struct config_setting_t *t, int index, struct achievement_data *entry)
+{
+ struct config_setting_t *it = NULL;
+ struct achievement_reward_item item = { 0 };
+ const char *name = NULL;
+ int amount = 0;
+ int val = 0;
+
+ nullpo_retr(false, t);
+ nullpo_retr(false, entry);
+
+ if ((it = libconfig->setting_get_elem(t, index)) == NULL)
+ return false;
+
+ name = config_setting_name(it);
+ amount = libconfig->setting_get_int(it);
+
+ if (name[0] == 'I' && name[1] == 'D' && itemdb->exists(atoi(name+2))) {
+ val = atoi(name);
+ } else if (!script->get_constant(name, &val)) {
+ ShowWarning("achievement_readdb_validate_reward_item_sub: Non existant Item %s provided as a reward in Achievement %d, skipping...\n", name, entry->id);
+ return false;
+ }
+
+ if (amount <= 0) {
+ ShowWarning("achievement_readdb_validate_reward_item_sub: No amount provided for Item %s as a reward in Achievement %d, skipping...\n", name, entry->id);
+ return false;
+ }
+
+ /* Ensure size and allocation */
+ VECTOR_ENSURE(entry->rewards.item, 1, 1);
+
+ item.id = val;
+ item.amount = amount;
+
+ /* push buffer */
+ VECTOR_PUSH(entry->rewards.item, item);
+
+ return true;
+}
+
+/**
+ * Validates the reward items when parsing an achievement db entry.
+ * @param[in] t pointer to the config setting.
+ * @param[out] entry pointer to the achievement entry being parsed.
+ */
+static void achievement_readdb_validate_reward_items(const struct config_setting_t *t, struct achievement_data *entry)
+{
+ struct config_setting_t *tt = NULL;
+ int i = 0;
+
+ nullpo_retv(t);
+ nullpo_retv(entry);
+
+ if ((tt = libconfig->setting_get_member(t, "Items")) && config_setting_is_group(t)) {
+ for (i = 0; i < libconfig->setting_length(tt) && i < MAX_ACHIEVEMENT_ITEM_REWARDS; i++)
+ if (achievement->readdb_validate_reward_item_sub(tt, i, entry) == false)
+ continue;
+
+ if (libconfig->setting_length(tt) > MAX_ACHIEVEMENT_ITEM_REWARDS)
+ ShowError("achievement_readdb_validate_reward_items: Maximum amount of item rewards (%d) exceeded for Achievement %d. Remaining items will be skipped.\n", MAX_ACHIEVEMENT_ITEM_REWARDS, entry->id);
+ }
+}
+
+/**
+ * Validates the reward Bonus script when parsing an achievement db entry.
+ * @param[in] t pointer to the config setting.
+ * @param[out] entry pointer to the achievement entry being parsed.
+ * @param[in] source pointer to the source file name.
+ */
+static void achievement_readdb_validate_reward_bonus(const struct config_setting_t *t, struct achievement_data *entry, const char *source)
+{
+ const char *string = NULL;
+
+ nullpo_retv(source);
+ nullpo_retv(t);
+ nullpo_retv(entry);
+
+ if (libconfig->setting_lookup_string(t, "Bonus", &string))
+ entry->rewards.bonus = string ? script->parse(string, source, 0, SCRIPT_IGNORE_EXTERNAL_BRACKETS, NULL) : NULL;
+}
+
+/**
+ * Validates the reward Title Id when parsing an achievement entry.
+ * @param[in] t pointer to the config setting.
+ * @param[out] entry pointer to the entry.
+ */
+static void achievement_readdb_validate_reward_titleid(const struct config_setting_t *t, struct achievement_data *entry)
+{
+ nullpo_retv(t);
+ nullpo_retv(entry);
+
+ libconfig->setting_lookup_int(t, "TitleId", &entry->rewards.title_id);
+}
+
+/**
+ * Validates the reward Bonus script when parsing an achievement db entry.
+ * @param[in] conf pointer to the config setting.
+ * @param[out] entry pointer to the achievement entry being parsed.
+ * @param[in] source pointer to the source file name.
+ */
+static bool achievement_readdb_rewards(const struct config_setting_t *conf, struct achievement_data *entry, const char *source)
+{
+ struct config_setting_t *t = NULL;
+
+ nullpo_retr(false, conf);
+ nullpo_retr(false, entry);
+ nullpo_retr(false, source);
+
+ VECTOR_INIT(entry->rewards.item);
+
+ if ((t = libconfig->setting_get_member(conf, "Rewards")) && config_setting_is_group(t)) {
+ /* Items */
+ achievement->readdb_validate_reward_items(t, entry);
+
+ /* Buff/Bonus Script Code */
+ achievement->readdb_validate_reward_bonus(t, entry, source);
+
+ /* Title Id */
+ // @TODO Check Title ID against title DB!
+ achievement->readdb_validate_reward_titleid(t, entry);
+
+ }
+
+ return true;
+}
+
+/**
+ * Validates the reward Bonus script when parsing an achievement db entry.
+ * @param[in] conf pointer to the config setting.
+ * @param[out] entry pointer to the achievement entry being parsed.
+ * @param[in] source pointer to the source file name.
+ */
+static void achievement_readdb_additional_fields(const struct config_setting_t *conf, struct achievement_data *entry, const char *source)
+{
+ // plugins do their own thing.
+}
+
+/**
+ * Parses the Achievement DB.
+ * @read achievement_db.conf
+ */
+static void achievement_readb(void)
+{
+ const char *filename = "db/"DBPATH"achievement_db.conf";
+ struct config_t ach_conf = { 0 };
+ struct config_setting_t *achdb = NULL, *conf = NULL;
+ int entry = 0, count = 0;
+ VECTOR_DECL(int) duplicate;
+
+ if (!libconfig->load_file(&ach_conf, filename))
+ return; // report error.
+
+ if (!(achdb = libconfig->setting_get_member(ach_conf.root, "achievement_db"))) {
+ ShowError("achievement_readdb: Could not process contents of file '%s', skipping...\n", filename);
+ libconfig->destroy(&ach_conf);
+ return;
+ }
+
+ VECTOR_INIT(duplicate);
+
+ while ((conf = libconfig->setting_get_elem(achdb, entry++))) {
+ const char *string = NULL;
+ int val = 0, i = 0;
+ struct achievement_data t_ad = { 0 }, *p_ad = NULL;
+
+ /* Achievement ID */
+ if (libconfig->setting_lookup_int(conf, "Id", &t_ad.id) == 0) {
+ ShowError("achievement_readdb: Id field for entry %d is not provided! Skipping...\n", entry);
+ continue;
+ } else if (t_ad.id <= 0) {
+ ShowError("achievement_readdb: Invalid Id %d for entry %d. Skipping...\n", t_ad.id, entry);
+ continue;
+ }
+
+ ARR_FIND(0, VECTOR_LENGTH(duplicate), i, VECTOR_INDEX(duplicate, i) == t_ad.id);
+ if (i != VECTOR_LENGTH(duplicate)) {
+ ShowError("achievement_readdb: Duplicate Id %d for entry %d. Skipping...\n", t_ad.id, entry);
+ continue;
+ }
+
+ /* Achievement Name */
+ if (libconfig->setting_lookup_mutable_string(conf, "Name", t_ad.name, ACHIEVEMENT_NAME_LENGTH) == 0) {
+ ShowError("achievement_readdb: Name field not provided for Achievement %d!\n", t_ad.id);
+ continue;
+ }
+
+ /* Achievement Type*/
+ if (libconfig->setting_lookup_string(conf, "Type", &string) == 0) {
+ ShowError("achievement_readdb: Type field not provided for Achievement %d! Skipping...\n", t_ad.id);
+ continue;
+ } else if (!script->get_constant(string, &val)) {
+ ShowError("achievement_readdb: Invalid constant %s provided as type for Achievement %d! Skipping...\n", string, t_ad.id);
+ continue;
+ }
+
+ t_ad.type = (enum achievement_types) val;
+
+ /* Objectives */
+ achievement->readdb_objectives(conf, &t_ad);
+
+ /* Rewards */
+ achievement->readdb_rewards(conf, &t_ad, filename);
+
+ /* Achievement Points */
+ libconfig->setting_lookup_int(conf, "Points", &t_ad.points);
+
+ /* Additional Fields */
+ achievement->readdb_additional_fields(conf, &t_ad, filename);
+
+ /* Allocate memory for data. */
+ CREATE(p_ad, struct achievement_data, 1);
+ *p_ad = t_ad;
+
+ /* Place in the database. */
+ idb_put(achievement->db, p_ad->id, p_ad);
+
+ /* Put achievement key in categories. */
+ VECTOR_ENSURE(achievement->category[p_ad->type], 1, 1);
+ VECTOR_PUSH(achievement->category[p_ad->type], p_ad->id);
+
+ /* Qualify for duplicate Id checks */
+ VECTOR_ENSURE(duplicate, 1, 1);
+ VECTOR_PUSH(duplicate, t_ad.id);
+
+ count++;
+ } // end of achievement_db parsing.
+
+ /* Destroy the buffer */
+ libconfig->destroy(&ach_conf);
+
+ VECTOR_CLEAR(duplicate);
+
+ ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' entries in '"CL_WHITE"%s"CL_RESET"'.\n", count, filename);
+}
+
+/**
+ * On server initiation.
+ * @param[in] minimal ignores alocating/reading databases.
+ */
+static void do_init_achievement(bool minimal)
+{
+ int i = 0;
+
+ if (minimal)
+ return;
+
+ /* DB Initialization */
+ achievement->db = idb_alloc(DB_OPT_RELEASE_DATA);
+
+ for (i = 0; i < ACH_TYPE_MAX; i++)
+ VECTOR_INIT(achievement->category[i]);
+
+ VECTOR_INIT(achievement->rank_exp);
+
+ /* Read LibConfig Files */
+ achievement->readdb();
+ achievement->readdb_ranks();
+}
+
+/**
+ * Cleaning function called through achievement->db->destroy()
+ */
+static int achievement_db_finalize(union DBKey key, struct DBData *data, va_list args)
+{
+ int i = 0;
+ struct achievement_data *ad = DB->data2ptr(data);
+
+ for(i = 0; i < VECTOR_LENGTH(ad->objective); i++)
+ VECTOR_CLEAR(VECTOR_INDEX(ad->objective, i).jobid);
+
+ VECTOR_CLEAR(ad->objective);
+ VECTOR_CLEAR(ad->rewards.item);
+
+ // Free the script
+ if (ad->rewards.bonus != NULL) {
+ script->free_code(ad->rewards.bonus);
+ ad->rewards.bonus = NULL;
+ }
+
+ return 0;
+}
+
+/**
+ * On server finalizing.
+ */
+static void do_final_achievement(void)
+{
+ int i = 0;
+
+ achievement->db->destroy(achievement->db, achievement->db_finalize);
+
+ for (i = 0; i < ACH_TYPE_MAX; i++)
+ VECTOR_CLEAR(achievement->category[i]);
+
+ VECTOR_CLEAR(achievement->rank_exp);
+}
+
+/**
+ * Achievement Interface
+ */
+void achievement_defaults(void)
+{
+ achievement = &achievement_s;
+ /* */
+ achievement->init = do_init_achievement;
+ achievement->final = do_final_achievement;
+ /* */
+ achievement->db_finalize = achievement_db_finalize;
+ /* */
+ achievement->readdb = achievement_readb;
+ /* */
+ achievement->readdb_objectives_sub = achievement_readdb_objective_sub;
+ achievement->readdb_objectives = achievement_readdb_objectives;
+ /* */
+ achievement->readdb_validate_criteria_mobid = achievement_readdb_validate_criteria_mobid;
+ achievement->readdb_validate_criteria_jobid = achievement_readdb_validate_criteria_jobid;
+ achievement->readdb_validate_criteria_itemid = achievement_readdb_validate_criteria_itemid;
+ achievement->readdb_validate_criteria_statustype = achievement_readdb_validate_criteria_statustype;
+ achievement->readdb_validate_criteria_itemtype = achievement_readdb_validate_criteria_itemtype;
+ achievement->readdb_validate_criteria_weaponlv = achievement_readdb_validate_criteria_weaponlv;
+ achievement->readdb_validate_criteria_achievement = achievement_readdb_validate_criteria_achievement;
+ /* */
+ achievement->readdb_rewards = achievement_readdb_rewards;
+ achievement->readdb_validate_reward_items = achievement_readdb_validate_reward_items;
+ achievement->readdb_validate_reward_item_sub = achievement_readdb_validate_reward_item_sub;
+ achievement->readdb_validate_reward_bonus = achievement_readdb_validate_reward_bonus;
+ achievement->readdb_validate_reward_titleid = achievement_readdb_validate_reward_titleid;
+ /* */
+ achievement->readdb_additional_fields = achievement_readdb_additional_fields;
+ /* */
+ achievement->readdb_ranks = achievement_readdb_ranks;
+ /* */
+ achievement->get = achievement_get;
+ achievement->ensure = achievement_ensure;
+ /* */
+ achievement->calculate_totals = achievement_calculate_totals;
+ achievement->check_complete = achievement_check_complete;
+ achievement->progress_add = achievement_progress_add;
+ achievement->progress_set = achievement_progress_set;
+ achievement->check_criteria = achievement_check_criteria;
+ /* */
+ achievement->validate = achievement_validate;
+ achievement->validate_type = achievement_validate_type;
+ /* */
+ achievement->validate_mob_kill = achievement_validate_mob_kill;
+ achievement->validate_mob_damage = achievement_validate_mob_damage;
+ achievement->validate_pc_kill = achievement_validate_pc_kill;
+ achievement->validate_pc_damage = achievement_validate_pc_damage;
+ achievement->validate_jobchange = achievement_validate_jobchange;
+ achievement->validate_stats = achievement_validate_stats;
+ achievement->validate_chatroom_create = achievement_validate_chatroom_create;
+ achievement->validate_chatroom_members = achievement_validate_chatroom_members;
+ achievement->validate_friend_add = achievement_validate_friend_add;
+ achievement->validate_party_create = achievement_validate_party_create;
+ achievement->validate_marry = achievement_validate_marry;
+ achievement->validate_adopt = achievement_validate_adopt;
+ achievement->validate_zeny = achievement_validate_zeny;
+ achievement->validate_refine = achievement_validate_refine;
+ achievement->validate_item_get = achievement_validate_item_get;
+ achievement->validate_item_sell = achievement_validate_item_sell;
+ achievement->validate_achieve = achievement_validate_achieve;
+ achievement->validate_taming = achievement_validate_taming;
+ achievement->validate_achievement_rank = achievement_validate_achievement_rank;
+ /* */
+ achievement->type_requires_criteria = achievement_type_requires_criteria;
+ /* */
+ achievement->init_titles = achievement_init_titles;
+ achievement->check_title = achievement_check_title;
+ achievement->get_rewards = achievement_get_rewards;
+ achievement->get_rewards_buffs = achievement_get_rewards_buffs;
+ achievement->get_rewards_items = achievement_get_rewards_items;
+}
diff --git a/src/map/achievement.h b/src/map/achievement.h
new file mode 100644
index 000000000..de5eaa060
--- /dev/null
+++ b/src/map/achievement.h
@@ -0,0 +1,291 @@
+/**
+* This file is part of Hercules.
+* http://herc.ws - http://github.com/HerculesWS/Hercules
+*
+* Copyright (C) 2018 Hercules Dev Team
+* Copyright (C) Smokexyz
+*
+* Hercules is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#ifndef MAP_ACHIEVEMENT_H
+#define MAP_ACHIEVEMENT_H
+
+#include "common/hercules.h"
+#include "common/db.h"
+#include "map/map.h" // enum status_point_types
+
+#define ACHIEVEMENT_NAME_LENGTH 50
+#define OBJECTIVE_DESCRIPTION_LENGTH 100
+
+struct achievement;
+struct map_session_data;
+struct char_achievements;
+
+/**
+ * Achievement Types
+ */
+enum achievement_types {
+ // Quest
+ ACH_QUEST, // achievement and objective specific
+ // PC Kills
+ ACH_KILL_PC_TOTAL,
+ ACH_KILL_PC_JOB,
+ ACH_KILL_PC_JOBTYPE,
+ // Mob Kills
+ ACH_KILL_MOB_CLASS,
+ // PC Damage
+ ACH_DAMAGE_PC_MAX,
+ ACH_DAMAGE_PC_TOTAL,
+ ACH_DAMAGE_PC_REC_MAX,
+ ACH_DAMAGE_PC_REC_TOTAL,
+ // Mob Damage
+ ACH_DAMAGE_MOB_MAX,
+ ACH_DAMAGE_MOB_TOTAL,
+ ACH_DAMAGE_MOB_REC_MAX,
+ ACH_DAMAGE_MOB_REC_TOTAL,
+ // Job
+ ACH_JOB_CHANGE,
+ // Status
+ ACH_STATUS,
+ ACH_STATUS_BY_JOB,
+ ACH_STATUS_BY_JOBTYPE,
+ // Chatroom
+ ACH_CHATROOM_CREATE_DEAD,
+ ACH_CHATROOM_CREATE,
+ ACH_CHATROOM_MEMBERS,
+ // Friend
+ ACH_FRIEND_ADD,
+ // Party
+ ACH_PARTY_CREATE,
+ ACH_PARTY_JOIN,
+ // Marriage
+ ACH_MARRY,
+ // Adoption
+ ACH_ADOPT_BABY,
+ ACH_ADOPT_PARENT,
+ // Zeny
+ ACH_ZENY_HOLD,
+ ACH_ZENY_GET_ONCE,
+ ACH_ZENY_GET_TOTAL,
+ ACH_ZENY_SPEND_ONCE,
+ ACH_ZENY_SPEND_TOTAL,
+ // Equipment
+ ACH_EQUIP_REFINE_SUCCESS,
+ ACH_EQUIP_REFINE_FAILURE,
+ ACH_EQUIP_REFINE_SUCCESS_TOTAL,
+ ACH_EQUIP_REFINE_FAILURE_TOTAL,
+ ACH_EQUIP_REFINE_SUCCESS_WLV,
+ ACH_EQUIP_REFINE_FAILURE_WLV,
+ ACH_EQUIP_REFINE_SUCCESS_ID,
+ ACH_EQUIP_REFINE_FAILURE_ID,
+ // Items
+ ACH_ITEM_GET_COUNT,
+ ACH_ITEM_GET_COUNT_ITEMTYPE,
+ ACH_ITEM_GET_WORTH,
+ ACH_ITEM_SELL_WORTH,
+ // Monsters
+ ACH_PET_CREATE,
+ // Achievement
+ ACH_ACHIEVE,
+ ACH_ACHIEVEMENT_RANK,
+ ACH_TYPE_MAX
+};
+
+enum unique_criteria_types {
+ CRITERIA_UNIQUE_NONE,
+ CRITERIA_UNIQUE_ACHIEVE_ID,
+ CRITERIA_UNIQUE_ITEM_ID,
+ CRITERIA_UNIQUE_STATUS_TYPE,
+ CRITERIA_UNIQUE_WEAPON_LV
+};
+
+/**
+ * Achievement Objective Structure
+ *
+ * @see achievement_type_requires_criteria()
+ * @see achievement_criteria_mobid()
+ * @see achievement_criteria_jobid()
+ * @see achievement_criteria_itemid()
+ * @see achievement_criteria_stattype()
+ * @see achievement_criteria_itemtype()
+ * @see achievement_criteria_weaponlv()
+ */
+struct achievement_objective {
+ int goal;
+ char description[OBJECTIVE_DESCRIPTION_LENGTH];
+ /**
+ * Those criteria that do not make sense if stacked together.
+ * union identifier is set in unique_type. (@see unique_criteria_type)
+ */
+ union {
+ int achieve_id;
+ int itemid;
+ enum status_point_types status_type;
+ int weapon_lv;
+ } unique;
+ enum unique_criteria_types unique_type;
+ /* */
+ uint32 item_type;
+ int mobid;
+ VECTOR_DECL(int) jobid;
+};
+
+struct achievement_reward_item {
+ int id, amount;
+};
+
+struct achievement_rewards {
+ int title_id;
+ struct script_code *bonus;
+ VECTOR_DECL(struct achievement_reward_item) item;
+};
+
+/**
+ * Achievement Data Structure
+ */
+struct achievement_data {
+ int id;
+ char name[ACHIEVEMENT_NAME_LENGTH];
+ enum achievement_types type;
+ int points;
+ VECTOR_DECL(struct achievement_objective) objective;
+ struct achievement_rewards rewards;
+};
+
+// Achievements types that use Mob ID as criteria.
+#define achievement_criteria_mobid(t) ( \
+ (t) == ACH_KILL_MOB_CLASS \
+ || (t) == ACH_PET_CREATE )
+
+// Achievements types that use JobID vector as criteria.
+#define achievement_criteria_jobid(t) ( \
+ (t) == ACH_KILL_PC_JOB \
+ || (t) == ACH_KILL_PC_JOBTYPE \
+ || (t) == ACH_JOB_CHANGE \
+ || (t) == ACH_STATUS_BY_JOB \
+ || (t) == ACH_STATUS_BY_JOBTYPE )
+
+// Achievements types that use Item ID as criteria.
+#define achievement_criteria_itemid(t) ( \
+ (t) == ACH_ITEM_GET_COUNT \
+ || (t) == ACH_EQUIP_REFINE_SUCCESS_ID \
+ || (t) == ACH_EQUIP_REFINE_FAILURE_ID )
+
+// Achievements types that use status type parameter as criteria.
+#define achievement_criteria_stattype(t) ( \
+ (t) == ACH_STATUS \
+ || (t) == ACH_STATUS_BY_JOB \
+ || (t) == ACH_STATUS_BY_JOBTYPE )
+
+// Achievements types that use item type mask as criteria.
+#define achievement_criteria_itemtype(t) ( \
+ (t) == ACH_ITEM_GET_COUNT_ITEMTYPE )
+
+// Achievements types that use weapon level as criteria.
+#define achievement_criteria_weaponlv(t) ( \
+ (t) == ACH_EQUIP_REFINE_SUCCESS_WLV \
+ || (t) == ACH_EQUIP_REFINE_FAILURE_WLV )
+
+// Valid status types for objective criteria.
+#define achievement_valid_status_types(s) ( \
+ (s) == SP_STR \
+ || (s) == SP_AGI \
+ || (s) == SP_VIT \
+ || (s) == SP_INT \
+ || (s) == SP_DEX \
+ || (s) == SP_LUK \
+ || (s) == SP_BASELEVEL || (s) == SP_JOBLEVEL )
+
+struct achievement_interface {
+ struct DBMap *db; // int id -> struct achievement_data *
+ /* */
+ VECTOR_DECL(int) rank_exp; // Achievement Rank Exp Requirements
+ VECTOR_DECL(int) category[ACH_TYPE_MAX]; /* A collection of Ids per type for faster processing. */
+ /* */
+ void (*init) (bool minimal);
+ void (*final) (void);
+ /* */
+ int (*db_finalize) (union DBKey key, struct DBData *data, va_list args);
+ /* */
+ void (*readdb)(void);
+ /* */
+ bool (*readdb_objectives_sub) (const struct config_setting_t *conf, int index, struct achievement_data *entry);
+ bool (*readdb_objectives) (const struct config_setting_t *conf, struct achievement_data *entry);
+ /* */
+ bool (*readdb_validate_criteria_mobid) (const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx);
+ bool (*readdb_validate_criteria_jobid) (const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx);
+ bool (*readdb_validate_criteria_itemid) (const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx);
+ bool (*readdb_validate_criteria_statustype) (const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx);
+ bool (*readdb_validate_criteria_itemtype) (const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx);
+ bool (*readdb_validate_criteria_weaponlv) (const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx);
+ bool (*readdb_validate_criteria_achievement) (const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx);
+ /* */
+ bool (*readdb_rewards) (const struct config_setting_t *conf, struct achievement_data *entry, const char *source);
+ void (*readdb_validate_reward_items) (const struct config_setting_t *t, struct achievement_data *entry);
+ bool (*readdb_validate_reward_item_sub) (const struct config_setting_t *t, int element, struct achievement_data *entry);
+ void (*readdb_validate_reward_bonus) (const struct config_setting_t *t, struct achievement_data *entry, const char *source);
+ void (*readdb_validate_reward_titleid) (const struct config_setting_t *t, struct achievement_data *entry);
+ /* */
+ void (*readdb_additional_fields) (const struct config_setting_t *conf, struct achievement_data *entry, const char *source);
+ /* */
+ void (*readdb_ranks) (void);
+ /* */
+ const struct achievement_data *(*get) (int aid);
+ struct achievement *(*ensure) (struct map_session_data *sd, const struct achievement_data *ad);
+ /* */
+ void (*calculate_totals) (const struct map_session_data *sd, int *points, int *completed, int *rank, int *curr_rank_points);
+ bool (*check_complete) (struct map_session_data *sd, const struct achievement_data *ad);
+ void (*progress_add) (struct map_session_data *sd, const struct achievement_data *ad, unsigned int obj_idx, int progress);
+ void (*progress_set) (struct map_session_data *sd, const struct achievement_data *ad, unsigned int obj_idx, int progress);
+ bool (*check_criteria) (const struct achievement_objective *objective, const struct achievement_objective *criteria);
+ /* */
+ bool (*validate) (struct map_session_data *sd, int aid, unsigned int obj_idx, int progress, bool additive);
+ int (*validate_type) (struct map_session_data *sd, enum achievement_types type, const struct achievement_objective *criteria, bool additive);
+ /* */
+ void (*validate_mob_kill) (struct map_session_data *sd, int mob_id);
+ void (*validate_mob_damage) (struct map_session_data *sd, unsigned int damage, bool received);
+ void (*validate_pc_kill) (struct map_session_data *sd, struct map_session_data *dstsd);
+ void (*validate_pc_damage) (struct map_session_data *sd, struct map_session_data *dstsd, unsigned int damage);
+ void (*validate_jobchange) (struct map_session_data *sd);
+ void (*validate_stats) (struct map_session_data *sd, enum status_point_types stat_type, int progress);
+ void (*validate_chatroom_create) (struct map_session_data *sd);
+ void (*validate_chatroom_members) (struct map_session_data *sd, int progress);
+ void (*validate_friend_add) (struct map_session_data *sd);
+ void (*validate_party_create) (struct map_session_data *sd);
+ void (*validate_marry) (struct map_session_data *sd);
+ void (*validate_adopt) (struct map_session_data *sd, bool parent);
+ void (*validate_zeny) (struct map_session_data *sd, int amount);
+ void (*validate_refine) (struct map_session_data *sd, unsigned int idx, bool success);
+ void (*validate_item_get) (struct map_session_data *sd, int nameid, int amount);
+ void (*validate_item_sell) (struct map_session_data *sd, int nameid, int amount);
+ void (*validate_achieve) (struct map_session_data *sd, int achid);
+ void (*validate_taming) (struct map_session_data *sd, int class);
+ void (*validate_achievement_rank) (struct map_session_data *sd, int rank);
+ /* */
+ bool (*type_requires_criteria) (enum achievement_types type);
+ /* */
+ void (*init_titles) (struct map_session_data *sd);
+ bool (*check_title) (struct map_session_data *sd, int title_id);
+ bool (*get_rewards) (struct map_session_data *sd, const struct achievement_data *ad);
+ void (*get_rewards_buffs) (struct map_session_data *sd, const struct achievement_data *ad);
+ void (*get_rewards_items) (struct map_session_data *sd, const struct achievement_data *ad);
+};
+
+#ifdef HERCULES_CORE
+void achievement_defaults(void);
+#endif // HERCULES_CORE
+
+HPShared struct achievement_interface *achievement;
+
+#endif // MAP_ACHIEVEMENT_H
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index 2beb6c634..0a1fd6da3 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -28,6 +28,7 @@
#include "map/channel.h"
#include "map/chat.h"
#include "map/chrif.h"
+#include "map/clan.h"
#include "map/clif.h"
#include "map/duel.h"
#include "map/elemental.h"
@@ -54,12 +55,14 @@
#include "map/storage.h"
#include "map/trade.h"
#include "map/unit.h"
+#include "map/achievement.h"
#include "common/cbasetypes.h"
#include "common/conf.h"
#include "common/core.h"
#include "common/memmgr.h"
#include "common/mmo.h" // MAX_CARTS
#include "common/nullpo.h"
+#include "common/packets.h"
#include "common/random.h"
#include "common/showmsg.h"
#include "common/socket.h"
@@ -73,14 +76,15 @@
#include <stdlib.h>
#include <string.h>
-struct atcommand_interface atcommand_s;
+static struct atcommand_interface atcommand_s;
struct atcommand_interface *atcommand;
static char atcmd_output[CHAT_SIZE_MAX];
static char atcmd_player_name[NAME_LENGTH];
// @commands (script-based)
-struct atcmd_binding_data* get_atcommandbind_byname(const char* name) {
+static struct atcmd_binding_data *get_atcommandbind_byname(const char *name)
+{
int i = 0;
nullpo_retr(NULL, name);
@@ -92,14 +96,16 @@ struct atcmd_binding_data* get_atcommandbind_byname(const char* name) {
return ( i < atcommand->binding_count ) ? atcommand->binding[i] : NULL;
}
-const char* atcommand_msgsd(struct map_session_data *sd, int msg_number) {
+static const char *atcommand_msgsd(struct map_session_data *sd, int msg_number)
+{
Assert_retr("??", msg_number >= 0 && msg_number < MAX_MSG && atcommand->msg_table[0][msg_number] != NULL);
if (!sd || sd->lang_id >= atcommand->max_message_table || !atcommand->msg_table[sd->lang_id][msg_number])
return atcommand->msg_table[0][msg_number];
return atcommand->msg_table[sd->lang_id][msg_number];
}
-const char* atcommand_msgfd(int fd, int msg_number) {
+static const char *atcommand_msgfd(int fd, int msg_number)
+{
struct map_session_data *sd = sockt->session_is_valid(fd) ? sockt->session[fd]->session_data : NULL;
Assert_retr("??", msg_number >= 0 && msg_number < MAX_MSG && atcommand->msg_table[0][msg_number] != NULL);
if (!sd || sd->lang_id >= atcommand->max_message_table || !atcommand->msg_table[sd->lang_id][msg_number])
@@ -110,7 +116,8 @@ const char* atcommand_msgfd(int fd, int msg_number) {
//-----------------------------------------------------------
// Return the message string of the specified number by [Yor]
//-----------------------------------------------------------
-const char* atcommand_msg(int msg_number) {
+static const char *atcommand_msg(int msg_number)
+{
Assert_retr("??", msg_number >= 0 && msg_number < MAX_MSG);
if (atcommand->msg_table[map->default_lang_id][msg_number] != NULL && atcommand->msg_table[map->default_lang_id][msg_number][0] != '\0')
return atcommand->msg_table[map->default_lang_id][msg_number];
@@ -128,7 +135,8 @@ const char* atcommand_msg(int msg_number) {
* @param[in] allow_override whether to allow duplicate message IDs to override the original value.
* @return success state.
*/
-bool msg_config_read(const char *cfg_name, bool allow_override) {
+static bool msg_config_read(const char *cfg_name, bool allow_override)
+{
int msg_number;
char line[1024], w1[1024], w2[1024];
FILE *fp;
@@ -175,7 +183,8 @@ bool msg_config_read(const char *cfg_name, bool allow_override) {
/*==========================================
* Cleanup Message Data
*------------------------------------------*/
-void do_final_msg(void) {
+static void do_final_msg(void)
+{
int i, j;
for(i = 0; i < atcommand->max_message_table; i++) {
@@ -193,7 +202,8 @@ void do_final_msg(void) {
/**
* retrieves the help string associated with a given command.
*/
-static inline const char* atcommand_help_string(AtCommandInfo *info) {
+static inline const char *atcommand_help_string(AtCommandInfo *info)
+{
return info->help;
}
@@ -253,12 +263,15 @@ ACMD(send)
if (len) {
// show packet length
- safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,904), type, clif->packet(type)->len); // Packet 0x%x length: %d
+ Assert_retr(false, type <= MAX_PACKET_DB && type >= MIN_PACKET_DB);
+ len = packets->db[type];
+ safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,904), type, len); // Packet 0x%x length: %d
clif->message(fd, atcmd_output);
return true;
}
- len = clif->packet(type)->len;
+ Assert_retr(false, type <= MAX_PACKET_DB && type >= MIN_PACKET_DB);
+ len = packets->db[type];
if (len == -1) {
// dynamic packet
@@ -406,7 +419,7 @@ ACMD(send)
SKIP_VALUE(message);
}
- if (clif->packet(type)->len == -1) { // send dynamic packet
+ if (packets->db[type] == -1) { // send dynamic packet
WFIFOW(sd->fd,2)=TOW(off);
WFIFOSET(sd->fd,off);
} else {// send static packet
@@ -430,7 +443,8 @@ ACMD(send)
/*==========================================
* @rura, @warp, @mapmove
*------------------------------------------*/
-ACMD(mapmove) {
+ACMD(mapmove)
+{
char map_name[MAP_NAME_LENGTH_EXT];
unsigned short map_index;
short x = 0, y = 0;
@@ -485,7 +499,8 @@ ACMD(mapmove) {
/*==========================================
* Displays where a character is. Corrected version by Silent. [Skotlex]
*------------------------------------------*/
-ACMD(where) {
+ACMD(where)
+{
struct map_session_data* pl_sd;
memset(atcmd_player_name, '\0', sizeof atcmd_player_name);
@@ -513,7 +528,8 @@ ACMD(where) {
/*==========================================
*
*------------------------------------------*/
-ACMD(jumpto) {
+ACMD(jumpto)
+{
struct map_session_data *pl_sd = NULL;
if (!*message) {
@@ -596,7 +612,8 @@ ACMD(jump)
* Display list of online characters with
* various info.
*------------------------------------------*/
-ACMD(who) {
+ACMD(who)
+{
const struct map_session_data *pl_sd = NULL;
struct s_mapiterator *iter = NULL;
char player_name[NAME_LENGTH] = "";
@@ -793,7 +810,8 @@ ACMD(save)
/*==========================================
*
*------------------------------------------*/
-ACMD(load) {
+ACMD(load)
+{
int16 m;
m = map->mapindex2mapid(sd->status.save_point.map);
@@ -931,7 +949,8 @@ ACMD(option)
/*==========================================
*
*------------------------------------------*/
-ACMD(hide) {
+ACMD(hide)
+{
if (pc_isinvisible(sd)) {
sd->sc.option &= ~OPTION_INVISIBLE;
if (sd->disguise != -1 )
@@ -950,6 +969,7 @@ ACMD(hide) {
//bugreport:2266
map->foreachinmovearea(clif->insight, &sd->bl, AREA_SIZE, sd->bl.x, sd->bl.y, BL_ALL, &sd->bl);
} else {
+ clif->clearunit_area(&sd->bl, CLR_OUTSIGHT);
sd->sc.option |= OPTION_INVISIBLE;
sd->vd.class = INVISIBLE_CLASS;
clif->message(fd, msg_fd(fd,11)); // Invisible: On
@@ -1115,7 +1135,7 @@ ACMD(heal)
}
if ( hp > 0 && sp >= 0 ) {
- if(!status->heal(&sd->bl, hp, sp, 0))
+ if (status->heal(&sd->bl, hp, sp, STATUS_HEAL_DEFAULT) == 0)
clif->message(fd, msg_fd(fd,157)); // HP and SP are already with the good value.
else
clif->message(fd, msg_fd(fd,17)); // HP, SP recovered.
@@ -1132,7 +1152,7 @@ ACMD(heal)
//Opposing signs.
if ( hp ) {
if (hp > 0)
- status->heal(&sd->bl, hp, 0, 0);
+ status->heal(&sd->bl, hp, 0, STATUS_HEAL_DEFAULT);
else {
status->damage(NULL, &sd->bl, -hp, 0, 0, 0);
clif->damage(&sd->bl,&sd->bl, 0, 0, -hp, 0, BDT_ENDURE, 0);
@@ -1141,7 +1161,7 @@ ACMD(heal)
if ( sp ) {
if (sp > 0)
- status->heal(&sd->bl, 0, sp, 0);
+ status->heal(&sd->bl, 0, sp, STATUS_HEAL_DEFAULT);
else
status->damage(NULL, &sd->bl, 0, -sp, 0, 0);
}
@@ -1339,9 +1359,7 @@ ACMD(item2)
*------------------------------------------*/
ACMD(itemreset)
{
- int i;
-
- for (i = 0; i < MAX_INVENTORY; i++) {
+ for (int i = 0; i < sd->status.inventorySize; i++) {
if (sd->status.inventory[i].amount && sd->status.inventory[i].equip == 0) {
pc->delitem(sd, i, sd->status.inventory[i].amount, 0, DELITEM_NORMAL, LOG_TYPE_COMMAND);
}
@@ -1406,9 +1424,13 @@ ACMD(baselevelup)
clif->updatestatus(sd, SP_BASEEXP);
clif->updatestatus(sd, SP_NEXTBASEEXP);
pc->baselevelchanged(sd);
+
+ // achievements
+ achievement->validate_stats(sd, SP_BASELEVEL, sd->status.base_level);
+
if(sd->status.party_id)
party->send_levelup(sd);
-
+
if (level > 0 && battle_config.atcommand_levelup_events)
npc->script_event(sd, NPCE_BASELVUP); // Trigger OnPCBaseLvUpEvent
@@ -1471,7 +1493,8 @@ ACMD(joblevelup)
/*==========================================
* @help
*------------------------------------------*/
-ACMD(help) {
+ACMD(help)
+{
const char *command_name = NULL;
char *default_command = "help";
AtCommandInfo *tinfo = NULL;
@@ -1539,7 +1562,7 @@ ACMD(help) {
* Arglist parameters:
* - (int) id: If 0, stop any attacks. Otherwise, the target block list id to stop attacking.
*/
-int atcommand_stopattack(struct block_list *bl,va_list ap)
+static int atcommand_stopattack(struct block_list *bl, va_list ap)
{
struct unit_data *ud = NULL;
int id = 0;
@@ -1558,7 +1581,7 @@ int atcommand_stopattack(struct block_list *bl,va_list ap)
/*==========================================
*
*------------------------------------------*/
-int atcommand_pvpoff_sub(struct block_list *bl,va_list ap)
+static int atcommand_pvpoff_sub(struct block_list *bl, va_list ap)
{
struct map_session_data *sd = NULL;
nullpo_ret(bl);
@@ -1596,7 +1619,7 @@ ACMD(pvpoff)
/*==========================================
*
*------------------------------------------*/
-int atcommand_pvpon_sub(struct block_list *bl,va_list ap)
+static int atcommand_pvpon_sub(struct block_list *bl, va_list ap)
{
struct map_session_data *sd = NULL;
nullpo_ret(bl);
@@ -1604,7 +1627,8 @@ int atcommand_pvpon_sub(struct block_list *bl,va_list ap)
sd = BL_UCAST(BL_PC, bl);
if (sd->pvp_timer == INVALID_TIMER) {
- sd->pvp_timer = timer->add(timer->gettick() + 200, pc->calc_pvprank_timer, sd->bl.id, 0);
+ if (!map->list[sd->bl.m].flag.pvp_nocalcrank)
+ sd->pvp_timer = timer->add(timer->gettick() + 200, pc->calc_pvprank_timer, sd->bl.id, 0);
sd->pvp_rank = 0;
sd->pvp_lastusers = 0;
sd->pvp_point = 5;
@@ -1638,7 +1662,8 @@ ACMD(pvpon)
/*==========================================
*
*------------------------------------------*/
-ACMD(gvgoff) {
+ACMD(gvgoff)
+{
if (!map->list[sd->bl.m].flag.gvg) {
clif->message(fd, msg_fd(fd,162)); // GvG is already Off.
@@ -1677,6 +1702,45 @@ ACMD(gvgon)
/*==========================================
*
*------------------------------------------*/
+ACMD(cvcoff)
+{
+ if (!map->list[sd->bl.m].flag.cvc) {
+ clif->message(fd, msg_fd(fd, 141)); // CvC is already Off.
+ return false;
+ }
+
+ map->zone_change2(sd->bl.m, map->list[sd->bl.m].prev_zone);
+ map->list[sd->bl.m].flag.cvc = 0;
+ clif->map_property_mapall(sd->bl.m, MAPPROPERTY_NOTHING);
+ clif->maptypeproperty2(&sd->bl, ALL_SAMEMAP);
+ map->foreachinmap(atcommand->stopattack, sd->bl.m, BL_CHAR, 0);
+ clif->message(fd, msg_fd(fd, 137)); // CvC: Off.
+
+ return true;
+}
+
+/*==========================================
+ *
+ *------------------------------------------*/
+ACMD(cvcon)
+{
+ if (map->list[sd->bl.m].flag.cvc) {
+ clif->message(fd, msg_fd(fd, 142)); // CvC is already On.
+ return false;
+ }
+
+ map->zone_change2(sd->bl.m, strdb_get(map->zone_db, MAP_ZONE_CVC_NAME));
+ map->list[sd->bl.m].flag.cvc = 1;
+ clif->map_property_mapall(sd->bl.m, MAPPROPERTY_AGITZONE);
+ clif->maptypeproperty2(&sd->bl, ALL_SAMEMAP);
+ clif->message(fd, msg_fd(fd, 138)); // CvC: On.
+
+ return true;
+}
+
+/*==========================================
+ *
+ *------------------------------------------*/
ACMD(model)
{
int hair_style = 0, hair_color = 0, cloth_color = 0;
@@ -1714,7 +1778,12 @@ ACMD(bodystyle)
memset(atcmd_output, '\0', sizeof(atcmd_output));
- if (!*message || sscanf(message, "%d", &body_style) < 1) {
+ if (!pc->has_second_costume(sd)) {
+ 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 +1791,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;
}
@@ -1809,10 +1878,68 @@ ACMD(hair_color)
return true;
}
+ACMD(setzone)
+{
+ char zone_name[MAP_ZONE_MAPFLAG_LENGTH];
+ memset(zone_name, '\0', sizeof(zone_name));
+
+ char fmt_str[8] = "";
+ safesnprintf(fmt_str, 8, "%%%ds", MAP_ZONE_MAPFLAG_LENGTH - 1);
+
+ if (*message == '\0' || sscanf(message, fmt_str, zone_name) < 1) {
+ clif->message(fd, msg_fd(fd, 924)); // usage info
+ return false;
+ }
+
+ struct map_zone_data *zone = strdb_get(map->zone_db, zone_name);
+ const char *prev_zone_name = map->list[sd->bl.m].zone->name;
+
+ // handle special zones:
+ if (zone == NULL && strcmp(zone_name, MAP_ZONE_NORMAL_NAME) == 0) {
+ zone = &map->zone_all;
+ } else if (zone == NULL && strcmp(zone_name, MAP_ZONE_PK_NAME) == 0) {
+ zone = &map->zone_pk;
+ }
+
+ if (zone != NULL) {
+ if (map->list[sd->bl.m].zone != zone) {
+ if (strcmp(prev_zone_name, MAP_ZONE_PVP_NAME) == 0) {
+ atcommand_pvpoff(fd, sd, command, message, info);
+ } else if (strcmp(prev_zone_name, MAP_ZONE_GVG_NAME) == 0) {
+ atcommand_gvgoff(fd, sd, command, message, info);
+ } else if (strcmp(prev_zone_name, MAP_ZONE_CVC_NAME) == 0) {
+ atcommand_cvcoff(fd, sd, command, message, info);
+ }
+ } else {
+ safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 925), zone_name);
+ clif->message(fd, atcmd_output); // nothing to do
+ return false;
+ }
+
+ if (strcmp(zone_name, MAP_ZONE_PVP_NAME) == 0) {
+ atcommand_pvpon(fd, sd, command, message, info);
+ } else if (strcmp(zone_name, MAP_ZONE_GVG_NAME) == 0) {
+ atcommand_gvgon(fd, sd, command, message, info);
+ } else if (strcmp(zone_name, MAP_ZONE_CVC_NAME) == 0) {
+ atcommand_cvcon(fd, sd, command, message, info);
+ } else {
+ map->zone_change2(sd->bl.m, zone);
+ }
+ } else {
+ clif->message(fd, msg_fd(fd, 926)); // zone not found
+ return false;
+ }
+
+ safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 927), prev_zone_name, zone_name);
+ clif->message(fd, atcmd_output); // changed successfully
+ return true;
+}
+
/*==========================================
* @go [city_number or city_name] - Updated by Harbin
*------------------------------------------*/
-ACMD(go) {
+ACMD(go)
+{
int town = INT_MAX; // Initialized to INT_MAX instead of -1 to avoid conflicts with those who map [-3:-1] to @memo locations.
char map_name[MAP_NAME_LENGTH];
@@ -1999,7 +2126,7 @@ ACMD(monster)
number = 1;
if (!name[0])
- strcpy(name, "--ja--");
+ strcpy(name, DEFAULT_MOB_JNAME);
// If value of atcommand_spawn_quantity_limit directive is greater than or equal to 1 and quantity of monsters is greater than value of the directive
if (battle_config.atc_spawn_quantity_limit && number > battle_config.atc_spawn_quantity_limit)
@@ -2042,7 +2169,7 @@ ACMD(monster)
/*==========================================
*
*------------------------------------------*/
-int atkillmonster_sub(struct block_list *bl, va_list ap)
+static int atkillmonster_sub(struct block_list *bl, va_list ap)
{
struct mob_data *md = NULL;
int flag = va_arg(ap, int);
@@ -2060,7 +2187,8 @@ int atkillmonster_sub(struct block_list *bl, va_list ap)
return 1;
}
-ACMD(killmonster) {
+ACMD(killmonster)
+{
int map_id, drop_flag;
char map_name[MAP_NAME_LENGTH_EXT];
@@ -2257,7 +2385,8 @@ ACMD(memo)
/*==========================================
*
*------------------------------------------*/
-ACMD(gat) {
+ACMD(gat)
+{
int y;
memset(atcmd_output, '\0', sizeof(atcmd_output));
@@ -2403,7 +2532,8 @@ ACMD(zeny)
/*==========================================
*
*------------------------------------------*/
-ACMD(param) {
+ACMD(param)
+{
int i, value = 0, new_value, max;
const char* param[] = { "str", "agi", "vit", "int", "dex", "luk" };
short* stats[6];
@@ -2449,6 +2579,7 @@ ACMD(param) {
clif->updatestatus(sd, SP_USTR + i);
status_calc_pc(sd, SCO_FORCE);
clif->message(fd, msg_fd(fd,42)); // Stat changed.
+ achievement->validate_stats(sd, SP_STR + i, new_value); // Achievements [Smokexyz/Hercules]
} else {
if (value < 0)
clif->message(fd, msg_fd(fd,41)); // Unable to decrease the number/value.
@@ -2463,7 +2594,8 @@ ACMD(param) {
/*==========================================
* Stat all by fritz (rewritten by [Yor])
*------------------------------------------*/
-ACMD(stat_all) {
+ACMD(stat_all)
+{
int index, count, value, max, new_value;
short* stats[6];
//we don't use direct initialization because it isn't part of the c standard.
@@ -2519,7 +2651,8 @@ ACMD(stat_all) {
/*==========================================
*
*------------------------------------------*/
-ACMD(guildlevelup) {
+ACMD(guildlevelup)
+{
int level = 0;
int16 added_level;
struct guild *guild_info;
@@ -2586,7 +2719,7 @@ ACMD(makeegg)
intif->create_pet(
sd->status.account_id, sd->status.char_id,
(short)pet->db[pet_id].class_, (short)mob->db(pet->db[pet_id].class_)->lv,
- (short)pet->db[pet_id].EggID, 0, (short)pet->db[pet_id].intimate,
+ pet->db[pet_id].EggID, 0, (short)pet->db[pet_id].intimate,
100, 0, 1, pet->db[pet_id].jname);
} else {
clif->message(fd, msg_fd(fd,180)); // The monster/egg name/id doesn't exist.
@@ -2708,7 +2841,8 @@ ACMD(petrename)
/*==========================================
*
*------------------------------------------*/
-ACMD(recall) {
+ACMD(recall)
+{
struct map_session_data *pl_sd = NULL;
if (!*message) {
@@ -2980,7 +3114,7 @@ ACMD(doommap)
/*==========================================
*
*------------------------------------------*/
-void atcommand_raise_sub(struct map_session_data* sd)
+static void atcommand_raise_sub(struct map_session_data *sd)
{
nullpo_retv(sd);
status->revive(&sd->bl, 100, 100);
@@ -3278,7 +3412,8 @@ ACMD(breakguild)
/*==========================================
*
*------------------------------------------*/
-ACMD(agitstart) {
+ACMD(agitstart)
+{
if (map->agit_flag == 1) {
clif->message(fd, msg_fd(fd,73)); // War of Emperium is currently in progress.
return false;
@@ -3294,7 +3429,8 @@ ACMD(agitstart) {
/*==========================================
*
*------------------------------------------*/
-ACMD(agitstart2) {
+ACMD(agitstart2)
+{
if (map->agit2_flag == 1) {
clif->message(fd, msg_fd(fd,404)); // "War of Emperium SE is currently in progress."
return false;
@@ -3310,7 +3446,8 @@ ACMD(agitstart2) {
/*==========================================
*
*------------------------------------------*/
-ACMD(agitend) {
+ACMD(agitend)
+{
if (map->agit_flag == 0) {
clif->message(fd, msg_fd(fd,75)); // War of Emperium is currently not in progress.
return false;
@@ -3326,7 +3463,8 @@ ACMD(agitend) {
/*==========================================
*
*------------------------------------------*/
-ACMD(agitend2) {
+ACMD(agitend2)
+{
if (map->agit2_flag == 0) {
clif->message(fd, msg_fd(fd,406)); // "War of Emperium SE is currently not in progress."
return false;
@@ -3342,7 +3480,8 @@ ACMD(agitend2) {
/*==========================================
* @mapexit - shuts down the map server
*------------------------------------------*/
-ACMD(mapexit) {
+ACMD(mapexit)
+{
map->do_shutdown();
return true;
}
@@ -3552,7 +3691,8 @@ ACMD(reloaditemdb)
/*==========================================
*
*------------------------------------------*/
-ACMD(reloadmobdb) {
+ACMD(reloadmobdb)
+{
mob->reload();
pet->read_db();
homun->reload();
@@ -3581,7 +3721,8 @@ ACMD(reloadskilldb)
/*==========================================
* @reloadatcommand - reloads conf/atcommand.conf conf/groups.conf
*------------------------------------------*/
-ACMD(reloadatcommand) {
+ACMD(reloadatcommand)
+{
struct config_t run_test;
if (!libconfig->load_file(&run_test, "conf/groups.conf")) {
@@ -3655,13 +3796,14 @@ ACMD(reloadbattleconf)
/*==========================================
* @reloadstatusdb - reloads job_db1.txt job_db2.txt job_db2-2.txt refine_db.txt size_fix.txt
*------------------------------------------*/
-ACMD(reloadstatusdb) {
+ACMD(reloadstatusdb)
+{
status->readdb();
clif->message(fd, msg_fd(fd,256));
return true;
}
/*==========================================
- * @reloadpcdb - reloads exp.txt skill_tree.txt attr_fix.txt statpoint.txt
+ * @reloadpcdb - reloads exp_group_db.conf skill_tree.txt attr_fix.txt statpoint.txt
*------------------------------------------*/
ACMD(reloadpcdb)
{
@@ -3673,7 +3815,8 @@ ACMD(reloadpcdb)
/*==========================================
* @reloadscript - reloads all scripts (npcs, warps, mob spawns, ...)
*------------------------------------------*/
-ACMD(reloadscript) {
+ACMD(reloadscript)
+{
struct s_mapiterator* iter;
struct map_session_data* pl_sd;
@@ -3782,6 +3925,9 @@ ACMD(mapinfo)
if (map->list[m_id].flag.battleground)
clif->message(fd, msg_fd(fd,1045)); // Battlegrounds ON
+ if (map->list[m_id].flag.cvc)
+ clif->message(fd, msg_fd(fd, 139)); // CvC ON
+
strcpy(atcmd_output,msg_fd(fd,1046)); // PvP Flags:
if (map->list[m_id].flag.pvp)
strcat(atcmd_output, msg_fd(fd,1047)); // Pvp ON |
@@ -3892,8 +4038,14 @@ ACMD(mapinfo)
strcat(atcmd_output, msg_fd(fd,1096)); // PartyLock |
if (map->list[m_id].flag.guildlock)
strcat(atcmd_output, msg_fd(fd,1097)); // GuildLock |
+ if (map->list[m_id].flag.noautoloot)
+ strcat(atcmd_output, msg_fd(fd, 1063)); // NoAutoloot |
if (map->list[m_id].flag.noviewid != EQP_NONE)
strcat(atcmd_output, msg_fd(fd,1079)); // NoViewID |
+ if (map->list[m_id].flag.pairship_startable)
+ strcat(atcmd_output, msg_fd(fd, 1292)); // PrivateAirshipStartable |
+ if (map->list[m_id].flag.pairship_endable)
+ strcat(atcmd_output, msg_fd(fd, 1293)); // PrivateAirshipEndable |
clif->message(fd, atcmd_output);
switch (list) {
@@ -4037,7 +4189,8 @@ ACMD(mount_peco)
/*==========================================
*Spy Commands by Syrus22
*------------------------------------------*/
-ACMD(guildspy) {
+ACMD(guildspy)
+{
char guild_name[NAME_LENGTH];
struct guild *g;
@@ -4076,7 +4229,8 @@ ACMD(guildspy) {
/*==========================================
*
*------------------------------------------*/
-ACMD(partyspy) {
+ACMD(partyspy)
+{
char party_name[NAME_LENGTH];
struct party_data *p;
@@ -4118,10 +4272,10 @@ ACMD(partyspy) {
*------------------------------------------*/
ACMD(repairall)
{
- int count, i;
-
- count = 0;
- for (i = 0; i < MAX_INVENTORY; i++) {
+ int count = 0;
+ for (int i = 0; i < sd->status.inventorySize; i++) {
+ if (sd->status.inventory[i].card[0] == CARD0_PET)
+ continue;
if (sd->status.inventory[i].nameid && (sd->status.inventory[i].attribute & ATTR_BROKEN) != 0) {
sd->status.inventory[i].attribute |= ATTR_BROKEN;
sd->status.inventory[i].attribute ^= ATTR_BROKEN;
@@ -4132,7 +4286,7 @@ ACMD(repairall)
if (count > 0) {
clif->misceffect(&sd->bl, 3);
- clif->equiplist(sd);
+ clif->equipList(sd);
clif->message(fd, msg_fd(fd,107)); // All items have been repaired.
} else {
clif->message(fd, msg_fd(fd,108)); // No item need to be repaired.
@@ -4145,7 +4299,8 @@ ACMD(repairall)
/*==========================================
* @nuke [Valaris]
*------------------------------------------*/
-ACMD(nuke) {
+ACMD(nuke)
+{
struct map_session_data *pl_sd;
memset(atcmd_player_name, '\0', sizeof(atcmd_player_name));
@@ -4174,7 +4329,8 @@ ACMD(nuke) {
/*==========================================
* @tonpc
*------------------------------------------*/
-ACMD(tonpc) {
+ACMD(tonpc)
+{
char npcname[NAME_LENGTH+1];
struct npc_data *nd;
@@ -4300,7 +4456,8 @@ ACMD(unloadnpc)
/*==========================================
* time in txt for time command (by [Yor])
*------------------------------------------*/
-char* txt_time(int fd, unsigned int duration) {
+static char *txt_time(int fd, unsigned int duration)
+{
int days, hours, minutes, seconds;
static char temp1[CHAT_SIZE_MAX];
int tlen = 0;
@@ -4338,7 +4495,8 @@ char* txt_time(int fd, unsigned int duration) {
* @time/@date/@serverdate/@servertime: Display the date/time of the server (by [Yor]
* Calculation management of GM modification (@day/@night GM commands) is done
*------------------------------------------*/
-ACMD(servertime) {
+ACMD(servertime)
+{
time_t time_server; // variable for number of seconds (used with time() function)
struct tm *datetime; // variable for time in structure ->tm_mday, ->tm_sec, ...
char temp[CHAT_SIZE_MAX];
@@ -4393,7 +4551,7 @@ ACMD(servertime) {
//Added by Coltaro
//We're using this function here instead of using time_t so that it only counts player's jail time when he/she's online (and since the idea is to reduce the amount of minutes one by one in status->change_timer...).
//Well, using time_t could still work but for some reason that looks like more coding x_x
-void get_jail_time(int jailtime, int* year, int* month, int* day, int* hour, int* minute)
+static void get_jail_time(int jailtime, int *year, int *month, int *day, int *hour, int *minute)
{
const int factor_year = 518400; //12*30*24*60 = 518400
const int factor_month = 43200; //30*24*60 = 43200
@@ -4427,7 +4585,8 @@ void get_jail_time(int jailtime, int* year, int* month, int* day, int* hour, int
* @jail <char_name> by [Yor]
* Special warp! No check with nowarp and nowarpto flag
*------------------------------------------*/
-ACMD(jail) {
+ACMD(jail)
+{
struct map_session_data *pl_sd;
int x, y;
unsigned short m_index;
@@ -4480,7 +4639,8 @@ ACMD(jail) {
* @unjail/@discharge <char_name> by [Yor]
* Special warp! No check with nowarp and nowarpto flag
*------------------------------------------*/
-ACMD(unjail) {
+ACMD(unjail)
+{
struct map_session_data *pl_sd;
memset(atcmd_player_name, '\0', sizeof(atcmd_player_name));
@@ -4514,7 +4674,8 @@ ACMD(unjail) {
return true;
}
-ACMD(jailfor) {
+ACMD(jailfor)
+{
struct map_session_data *pl_sd = NULL;
int year, month, day, hour, minute;
char * modif_p;
@@ -4798,7 +4959,8 @@ ACMD(undisguise)
/*==========================================
* UndisguiseAll
*------------------------------------------*/
-ACMD(undisguiseall) {
+ACMD(undisguiseall)
+{
struct map_session_data *pl_sd;
struct s_mapiterator* iter;
@@ -4850,21 +5012,19 @@ ACMD(undisguiseguild)
*------------------------------------------*/
ACMD(exp)
{
- char output[CHAT_SIZE_MAX];
- double nextb, nextj;
-
- memset(output, '\0', sizeof(output));
+ double percentb = 0.0, percentj = 0.0;
+ uint64 nextb, nextj;
nextb = pc->nextbaseexp(sd);
- if (nextb)
- nextb = sd->status.base_exp*100.0/nextb;
+ if (nextb != 0)
+ percentb = sd->status.base_exp * 100.0 / nextb;
nextj = pc->nextjobexp(sd);
- if (nextj)
- nextj = sd->status.job_exp*100.0/nextj;
+ if (nextj != 0)
+ percentj = sd->status.job_exp * 100.0 / nextj;
- sprintf(output, msg_fd(fd,1148), sd->status.base_level, nextb, sd->status.job_level, nextj); // Base Level: %d (%.3f%%) | Job Level: %d (%.3f%%)
- clif->message(fd, output);
+ sprintf(atcmd_output, msg_fd(fd,1148), sd->status.base_level, percentb, sd->status.job_level, percentj); // Base Level: %d (%.3f%%) | Job Level: %d (%.3f%%)
+ clif->message(fd, atcmd_output);
return true;
}
@@ -4978,7 +5138,8 @@ ACMD(killer)
* @killable by MouseJstr
* enable other people killing you
*------------------------------------------*/
-ACMD(killable) {
+ACMD(killable)
+{
sd->state.killable = !sd->state.killable;
if (sd->state.killable) {
@@ -4994,7 +5155,8 @@ ACMD(killable) {
* @skillon by MouseJstr
* turn skills on for the map
*------------------------------------------*/
-ACMD(skillon) {
+ACMD(skillon)
+{
map->list[sd->bl.m].flag.noskill = 0;
clif->message(fd, msg_fd(fd,244));
return true;
@@ -5004,7 +5166,8 @@ ACMD(skillon) {
* @skilloff by MouseJstr
* Turn skills off on the map
*------------------------------------------*/
-ACMD(skilloff) {
+ACMD(skilloff)
+{
map->list[sd->bl.m].flag.noskill = 1;
clif->message(fd, msg_fd(fd,243));
return true;
@@ -5014,7 +5177,8 @@ ACMD(skilloff) {
* @npcmove by MouseJstr
* move a npc
*------------------------------------------*/
-ACMD(npcmove) {
+ACMD(npcmove)
+{
int x = 0, y = 0, m;
struct npc_data *nd = 0;
@@ -5084,7 +5248,8 @@ ACMD(addwarp)
* @follow by [MouseJstr]
* Follow a player .. staying no more then 5 spaces away
*------------------------------------------*/
-ACMD(follow) {
+ACMD(follow)
+{
struct map_session_data *pl_sd = NULL;
if (!*message) {
@@ -5117,9 +5282,7 @@ ACMD(follow) {
*------------------------------------------*/
ACMD(dropall)
{
- int i;
-
- for (i = 0; i < MAX_INVENTORY; i++) {
+ for (int i = 0; i < sd->status.inventorySize; i++) {
if (sd->status.inventory[i].amount) {
if(sd->status.inventory[i].equip != 0)
pc->unequipitem(sd, i, PCUNEQUIPITEM_RECALC|PCUNEQUIPITEM_FORCE);
@@ -5135,8 +5298,6 @@ ACMD(dropall)
*------------------------------------------*/
ACMD(storeall)
{
- int i;
-
if (sd->state.storage_flag != STORAGE_FLAG_NORMAL) {
//Open storage.
if (storage->open(sd) == 1) {
@@ -5145,7 +5306,12 @@ ACMD(storeall)
}
}
- for (i = 0; i < MAX_INVENTORY; i++) {
+ if (sd->storage.received == false) {
+ clif->message(fd, msg_fd(fd, 27)); // "Storage has not been loaded yet"
+ return false;
+ }
+
+ for (int i = 0; i < sd->status.inventorySize; i++) {
if (sd->status.inventory[i].amount) {
if(sd->status.inventory[i].equip != 0)
pc->unequipitem(sd, i, PCUNEQUIPITEM_RECALC|PCUNEQUIPITEM_FORCE);
@@ -5160,17 +5326,25 @@ ACMD(storeall)
ACMD(clearstorage)
{
- int i, j;
+ int i;
if (sd->state.storage_flag == STORAGE_FLAG_NORMAL) {
clif->message(fd, msg_fd(fd,250));
return false;
}
- j = sd->status.storage.storage_amount;
- for (i = 0; i < j; ++i) {
- storage->delitem(sd, i, sd->status.storage.items[i].amount);
+ if (sd->storage.received == false) {
+ clif->message(fd, msg_fd(fd, 27)); // "Storage has not been loaded yet"
+ return false;
+ }
+
+ for (i = 0; i < VECTOR_LENGTH(sd->storage.item); ++i) {
+ if (VECTOR_INDEX(sd->storage.item, i).nameid == 0)
+ continue; // we skip the already deleted items.
+
+ storage->delitem(sd, i, VECTOR_INDEX(sd->storage.item, i).amount);
}
+
storage->close(sd);
clif->message(fd, msg_fd(fd,1394)); // Your storage was cleaned.
@@ -5267,12 +5441,13 @@ ACMD(skillid)
iter = db_iterator(skill->name2id_db);
for (data = iter->first(iter,&key); iter->exists(iter); data = iter->next(iter,&key)) {
- int idx = skill->get_index(DB->data2i(data));
- if (strnicmp(key.str, message, skillen) == 0 || strnicmp(skill->dbs->db[idx].desc, message, skillen) == 0) {
- safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1164), DB->data2i(data), skill->dbs->db[idx].desc, key.str); // skill %d: %s (%s)
+ int skill_id = DB->data2i(data);
+ const char *skill_desc = skill->get_desc(skill_id);
+ if (strnicmp(key.str, message, skillen) == 0 || strnicmp(skill_desc, message, skillen) == 0) {
+ safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 1164), skill_id, skill_desc, key.str); // skill %d: %s (%s)
clif->message(fd, atcmd_output);
- } else if ( found < MAX_SKILLID_PARTIAL_RESULTS && ( stristr(key.str,message) || stristr(skill->dbs->db[idx].desc,message) ) ) {
- snprintf(partials[found], MAX_SKILLID_PARTIAL_RESULTS_LEN, msg_fd(fd,1164), DB->data2i(data), skill->dbs->db[idx].desc, key.str);
+ } else if (found < MAX_SKILLID_PARTIAL_RESULTS && (stristr(key.str, message) != NULL || stristr(skill_desc, message) != NULL)) {
+ snprintf(partials[found], MAX_SKILLID_PARTIAL_RESULTS_LEN, msg_fd(fd, 1164), skill_id, skill_desc, key.str);
found++;
}
}
@@ -5295,7 +5470,8 @@ ACMD(skillid)
* @useskill by [MouseJstr]
* A way of using skills without having to find them in the skills menu
*------------------------------------------*/
-ACMD(useskill) {
+ACMD(useskill)
+{
struct map_session_data *pl_sd = NULL;
struct block_list *bl;
uint16 skill_id;
@@ -5341,7 +5517,8 @@ ACMD(useskill) {
* Debug command to locate new skill IDs. It sends the
* three possible skill-effect packets to the area.
*------------------------------------------*/
-ACMD(displayskill) {
+ACMD(displayskill)
+{
struct status_data *st;
int64 tick;
uint16 skill_id;
@@ -5399,7 +5576,7 @@ ACMD(skilltree)
for (j = 0; j < VECTOR_LENGTH(entry->need); j++) {
struct skill_tree_requirement *req = &VECTOR_INDEX(entry->need, j);
if (pc->checkskill(sd, req->id) < req->lv) {
- safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1170), req->lv, skill->dbs->db[req->id].desc); // Player requires level %d of skill %s.
+ safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1170), req->lv, skill->get_desc(req->id)); // Player requires level %d of skill %s.
clif->message(fd, atcmd_output);
meets = 0;
}
@@ -5412,7 +5589,8 @@ ACMD(skilltree)
}
// Hand a ring with partners name on it to this char
-void atcommand_getring(struct map_session_data* sd) {
+static void atcommand_getring(struct map_session_data *sd)
+{
int flag, item_id;
struct item item_tmp;
nullpo_retv(sd);
@@ -5427,7 +5605,7 @@ void atcommand_getring(struct map_session_data* sd) {
if((flag = pc->additem(sd,&item_tmp,1,LOG_TYPE_COMMAND))) {
clif->additem(sd,0,0,flag);
- map->addflooritem(&sd->bl, &item_tmp, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0);
+ map->addflooritem(&sd->bl, &item_tmp, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false);
}
}
@@ -5435,7 +5613,8 @@ void atcommand_getring(struct map_session_data* sd) {
* @marry by [MouseJstr], fixed by Lupus
* Marry two players
*------------------------------------------*/
-ACMD(marry) {
+ACMD(marry)
+{
struct map_session_data *pl_sd = NULL;
char player_name[NAME_LENGTH] = "";
@@ -5554,7 +5733,8 @@ ACMD(autotrade)
* @changegm by durf (changed by Lupus)
* Changes Master of your Guild to a specified guild member
*------------------------------------------*/
-ACMD(changegm) {
+ACMD(changegm)
+{
struct guild *g;
struct map_session_data *pl_sd;
@@ -5578,7 +5758,7 @@ ACMD(changegm) {
return false;
}
- guild->gm_change(sd->status.guild_id, pl_sd);
+ guild->gm_change(sd->status.guild_id, pl_sd->status.char_id);
return true;
}
@@ -5586,7 +5766,8 @@ ACMD(changegm) {
* @changeleader by Skotlex
* Changes the leader of a party.
*------------------------------------------*/
-ACMD(changeleader) {
+ACMD(changeleader)
+{
if (!message[0]) {
clif->message(fd, msg_fd(fd,1185)); // Usage: @changeleader <party_member_name>
@@ -5775,7 +5956,8 @@ ACMD(autolootitem)
* Credits:
* chriser,Aleos
*------------------------------------------*/
-ACMD(autoloottype) {
+ACMD(autoloottype)
+{
uint8 action = 3; // 1=add, 2=remove, 3=help+list (default), 4=reset
enum item_types type = -1;
int ITEM_NONE = 0;
@@ -5888,8 +6070,8 @@ ACMD(snow)
/*==========================================
* Cherry tree snowstorm is made to fall. (Sakura)
*------------------------------------------*/
-ACMD(sakura) {
-
+ACMD(sakura)
+{
if (map->list[sd->bl.m].flag.sakura) {
map->list[sd->bl.m].flag.sakura=0;
clif->weather(sd->bl.m);
@@ -5905,8 +6087,8 @@ ACMD(sakura) {
/*==========================================
* Clouds appear.
*------------------------------------------*/
-ACMD(clouds) {
-
+ACMD(clouds)
+{
if (map->list[sd->bl.m].flag.clouds) {
map->list[sd->bl.m].flag.clouds=0;
clif->weather(sd->bl.m);
@@ -5923,8 +6105,8 @@ ACMD(clouds) {
/*==========================================
* Different type of clouds using effect 516
*------------------------------------------*/
-ACMD(clouds2) {
-
+ACMD(clouds2)
+{
if (map->list[sd->bl.m].flag.clouds2) {
map->list[sd->bl.m].flag.clouds2=0;
clif->weather(sd->bl.m);
@@ -5941,8 +6123,8 @@ ACMD(clouds2) {
/*==========================================
* Fog hangs over.
*------------------------------------------*/
-ACMD(fog) {
-
+ACMD(fog)
+{
if (map->list[sd->bl.m].flag.fog) {
map->list[sd->bl.m].flag.fog=0;
clif->weather(sd->bl.m);
@@ -5958,8 +6140,8 @@ ACMD(fog) {
/*==========================================
* Fallen leaves fall.
*------------------------------------------*/
-ACMD(leaves) {
-
+ACMD(leaves)
+{
if (map->list[sd->bl.m].flag.leaves) {
map->list[sd->bl.m].flag.leaves=0;
clif->weather(sd->bl.m);
@@ -5976,8 +6158,8 @@ ACMD(leaves) {
/*==========================================
* Fireworks appear.
*------------------------------------------*/
-ACMD(fireworks) {
-
+ACMD(fireworks)
+{
if (map->list[sd->bl.m].flag.fireworks) {
map->list[sd->bl.m].flag.fireworks=0;
clif->weather(sd->bl.m);
@@ -6054,9 +6236,10 @@ ACMD(mobsearch)
clif->message(fd, atcmd_output);
return false;
}
- if (mob_id == atoi(mob_name))
- strcpy(mob_name,mob->db(mob_id)->jname); // --ja--
- //strcpy(mob_name,mob_db(mob_id)->name); // --en--
+ if (mob_id == atoi(mob_name)) {
+ strcpy(mob_name,mob->db(mob_id)->jname); // DEFAULT_MOB_JNAME
+ //strcpy(mob_name,mob_db(mob_id)->name); // DEFAULT_MOB_NAME
+ }
snprintf(atcmd_output, sizeof atcmd_output, msg_fd(fd,1220), mob_name, mapindex_id2name(sd->mapindex)); // Mob Search... %s %s
clif->message(fd, atcmd_output);
@@ -6084,20 +6267,23 @@ ACMD(mobsearch)
* @cleanmap - cleans items on the ground
* @cleanarea - cleans items on the ground within an specified area
*------------------------------------------*/
-int atcommand_cleanfloor_sub(struct block_list *bl, va_list ap) {
+static int atcommand_cleanfloor_sub(struct block_list *bl, va_list ap)
+{
nullpo_ret(bl);
map->clearflooritem(bl);
return 0;
}
-ACMD(cleanmap) {
+ACMD(cleanmap)
+{
map->foreachinmap(atcommand->cleanfloor_sub, sd->bl.m, BL_ITEM);
clif->message(fd, msg_fd(fd,1221)); // All dropped items have been cleaned up.
return true;
}
-ACMD(cleanarea) {
+ACMD(cleanarea)
+{
int x0 = 0, y0 = 0, x1 = 0, y1 = 0, n = 0;
if (!*message || (n=sscanf(message, "%d %d %d %d", &x0, &y0, &x1, &y1)) < 1) {
@@ -6118,7 +6304,7 @@ ACMD(cleanarea) {
*------------------------------------------*/
ACMD(npctalk)
{
- char name[NAME_LENGTH],mes[100],temp[100];
+ char name[NAME_LENGTH], mes[100], temp[200];
struct npc_data *nd;
bool ifcolor=(*(info->command + 7) != 'c' && *(info->command + 7) != 'C')?0:1;
unsigned int color = 0;
@@ -6148,14 +6334,14 @@ ACMD(npctalk)
snprintf(temp, sizeof(temp), "%s : %s", name, mes);
if(ifcolor) clif->messagecolor(&nd->bl,color,temp);
- else clif->disp_overhead(&nd->bl, temp);
+ else clif->disp_overhead(&nd->bl, temp, AREA_CHAT_WOC, NULL);
return true;
}
ACMD(pettalk)
{
- char mes[100],temp[100];
+ char mes[100], temp[200];
struct pet_data *pd;
if (battle_config.min_chat_delay) {
@@ -6208,7 +6394,7 @@ ACMD(pettalk)
}
snprintf(temp, sizeof temp ,"%s : %s", pd->pet.name, mes);
- clif->disp_overhead(&pd->bl, temp);
+ clif->disp_overhead(&pd->bl, temp, AREA_CHAT_WOC, NULL);
return true;
}
@@ -6261,7 +6447,8 @@ ACMD(users)
/*==========================================
*
*------------------------------------------*/
-ACMD(reset) {
+ACMD(reset)
+{
pc->resetstate(sd);
pc->resetskill(sd, PCRESETSKILL_RESYNC);
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,208), sd->status.name); // '%s' skill and stats points reseted!
@@ -6299,7 +6486,7 @@ ACMD(summon)
return false;
}
- md = mob->once_spawn_sub(&sd->bl, sd->bl.m, -1, -1, "--ja--", mob_id, "", SZ_SMALL, AI_NONE);
+ md = mob->once_spawn_sub(&sd->bl, sd->bl.m, -1, -1, DEFAULT_MOB_JNAME, mob_id, "", SZ_SMALL, AI_NONE);
if(!md)
return false;
@@ -6344,7 +6531,8 @@ ACMD(adjgroup)
* @trade by [MouseJstr]
* Open a trade window with a remote player
*------------------------------------------*/
-ACMD(trade) {
+ACMD(trade)
+{
struct map_session_data *pl_sd = NULL;
if (!*message) {
@@ -6387,7 +6575,8 @@ ACMD(setbattleflag)
/*==========================================
* @unmute [Valaris]
*------------------------------------------*/
-ACMD(unmute) {
+ACMD(unmute)
+{
struct map_session_data *pl_sd = NULL;
if (!*message) {
@@ -6438,7 +6627,8 @@ ACMD(uptime)
* @changesex <sex>
* => Changes one's sex. Argument sex can be 0 or 1, m or f, male or female.
*------------------------------------------*/
-ACMD(changesex) {
+ACMD(changesex)
+{
int i;
pc->resetskill(sd, PCRESETSKILL_CHSEX);
@@ -6452,7 +6642,8 @@ ACMD(changesex) {
/*================================================
* @mute - Mutes a player for a set amount of time
*------------------------------------------------*/
-ACMD(mute) {
+ACMD(mute)
+{
struct map_session_data *pl_sd = NULL;
int manner;
@@ -6515,9 +6706,9 @@ ACMD(refreshall)
*------------------------------------------*/
ACMD(identify)
{
- int i,num;
+ int num = 0;
- for (i=num=0;i<MAX_INVENTORY;i++) {
+ for (int i = 0; i < sd->status.inventorySize; i++) {
if(sd->status.inventory[i].nameid > 0 && sd->status.inventory[i].identify!=1){
num++;
}
@@ -6530,7 +6721,8 @@ ACMD(identify)
return true;
}
-ACMD(misceffect) {
+ACMD(misceffect)
+{
int effect = 0;
if (!*message)
@@ -6740,9 +6932,10 @@ ACMD(showmobs)
return false;
}
- if(mob_id == atoi(mob_name))
- strcpy(mob_name,mob->db(mob_id)->jname); // --ja--
- //strcpy(mob_name,mob_db(mob_id)->name); // --en--
+ if (mob_id == atoi(mob_name)) {
+ strcpy(mob_name,mob->db(mob_id)->jname); // DEFAULT_MOB_JNAME
+ //strcpy(mob_name,mob_db(mob_id)->name); // DEFAULT_MOB_NAME
+ }
snprintf(atcmd_output, sizeof atcmd_output, msg_fd(fd,1252), // Mob Search... %s %s
mob_name, mapindex_id2name(sd->mapindex));
@@ -6770,7 +6963,8 @@ ACMD(showmobs)
/*==========================================
* homunculus level up [orn]
*------------------------------------------*/
-ACMD(homlevel) {
+ACMD(homlevel)
+{
struct homun_data *hd;
int level = 0;
enum homun_type htype;
@@ -6841,7 +7035,8 @@ ACMD(homevolution)
return true;
}
-ACMD(hommutate) {
+ACMD(hommutate)
+{
int homun_id;
enum homun_type m_class, m_id;
@@ -6870,7 +7065,8 @@ ACMD(hommutate) {
/*==========================================
* call choosen homunculus [orn]
*------------------------------------------*/
-ACMD(makehomun) {
+ACMD(makehomun)
+{
int homunid;
if (!*message) {
@@ -6960,7 +7156,7 @@ ACMD(homhungry)
*------------------------------------------*/
ACMD(homtalk)
{
- char mes[100],temp[100];
+ char mes[100], temp[200];
if (battle_config.min_chat_delay) {
if (DIFF_TICK(sd->cantalk_tick, timer->gettick()) > 0)
@@ -6982,7 +7178,7 @@ ACMD(homtalk)
}
snprintf(temp, sizeof temp ,"%s : %s", sd->hd->homunculus.name, mes);
- clif->disp_overhead(&sd->hd->bl, temp);
+ clif->disp_overhead(&sd->hd->bl, temp, AREA_CHAT_WOC, NULL);
return true;
}
@@ -6990,7 +7186,8 @@ ACMD(homtalk)
/*==========================================
* Show homunculus stats
*------------------------------------------*/
-ACMD(hominfo) {
+ACMD(hominfo)
+{
struct homun_data *hd;
struct status_data *st;
@@ -7250,7 +7447,8 @@ ACMD(whereis)
return true;
}
-ACMD(version) {
+ACMD(version)
+{
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1296), sysinfo->is64bit() ? 64 : 32, sysinfo->platform()); // Hercules %d-bit for %s
clif->message(fd, atcmd_output);
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1295), sysinfo->vcstype(), sysinfo->vcsrevision_src(), sysinfo->vcsrevision_scripts()); // %s revision '%s' (src) / '%s' (scripts)
@@ -7262,8 +7460,9 @@ ACMD(version) {
/*==========================================
* @mutearea by MouseJstr
*------------------------------------------*/
-int atcommand_mutearea_sub(struct block_list *bl, va_list ap)
-{ // As it is being used [ACMD(mutearea)] there's no need to be a bool, but if there's need to reuse it, it's better to be this way
+static int atcommand_mutearea_sub(struct block_list *bl, va_list ap)
+{
+ // As it is being used [ACMD(mutearea)] there's no need to be a bool, but if there's need to reuse it, it's better to be this way
int time, id;
struct map_session_data *pl_sd = BL_CAST(BL_PC, bl);
@@ -7283,7 +7482,8 @@ int atcommand_mutearea_sub(struct block_list *bl, va_list ap)
return 1;
}
-ACMD(mutearea) {
+ACMD(mutearea)
+{
int time;
if (!*message) {
@@ -7342,7 +7542,7 @@ ACMD(me)
}
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,270), sd->status.name, tempmes); // *%s %s*
- clif->disp_overhead(&sd->bl, atcmd_output);
+ clif->disp_overhead(&sd->bl, atcmd_output, AREA_CHAT_WOC, NULL);
return true;
}
@@ -7448,11 +7648,11 @@ ACMD(sizeguild)
*------------------------------------------*/
ACMD(monsterignore)
{
- if (!sd->state.monster_ignore) {
- sd->state.monster_ignore = 1;
+ if (!sd->block_action.immune) {
+ sd->block_action.immune = 1;
clif->message(sd->fd, msg_fd(fd,1305)); // You are now immune to attacks.
} else {
- sd->state.monster_ignore = 0;
+ sd->block_action.immune = 0;
clif->message(sd->fd, msg_fd(fd,1306)); // Returned to normal state.
}
@@ -7498,7 +7698,8 @@ ACMD(fakename)
/*==========================================
* Ragnarok Resources
*------------------------------------------*/
-ACMD(mapflag) {
+ACMD(mapflag)
+{
#define CHECKFLAG( cmd ) do { if (map->list[ sd->bl.m ].flag.cmd ) clif->message(sd->fd,#cmd);} while(0)
#define SETFLAG( cmd ) do { \
if (strcmp( flag_name , #cmd ) == 0) { \
@@ -7521,15 +7722,15 @@ ACMD(mapflag) {
CHECKFLAG(noreturn); CHECKFLAG(monster_noteleport); CHECKFLAG(nosave); CHECKFLAG(nobranch);
CHECKFLAG(noexppenalty); CHECKFLAG(pvp); CHECKFLAG(pvp_noparty); CHECKFLAG(pvp_noguild);
CHECKFLAG(pvp_nightmaredrop); CHECKFLAG(pvp_nocalcrank); CHECKFLAG(gvg_castle); CHECKFLAG(gvg);
- CHECKFLAG(gvg_dungeon); CHECKFLAG(gvg_noparty); CHECKFLAG(battleground); CHECKFLAG(nozenypenalty);
- CHECKFLAG(notrade); CHECKFLAG(noskill); CHECKFLAG(nowarp); CHECKFLAG(nowarpto);
- CHECKFLAG(noicewall); CHECKFLAG(snow); CHECKFLAG(clouds); CHECKFLAG(clouds2);
- CHECKFLAG(fog); CHECKFLAG(fireworks); CHECKFLAG(sakura); CHECKFLAG(leaves);
- CHECKFLAG(nobaseexp);
+ CHECKFLAG(gvg_dungeon); CHECKFLAG(gvg_noparty); CHECKFLAG(battleground); CHECKFLAG(cvc);
+ CHECKFLAG(nozenypenalty); CHECKFLAG(notrade); CHECKFLAG(noskill); CHECKFLAG(nowarp);
+ CHECKFLAG(nowarpto); CHECKFLAG(noicewall); CHECKFLAG(snow); CHECKFLAG(clouds);
+ CHECKFLAG(clouds2); CHECKFLAG(fog); CHECKFLAG(fireworks); CHECKFLAG(sakura);
+ CHECKFLAG(leaves); CHECKFLAG(nobaseexp);
CHECKFLAG(nojobexp); CHECKFLAG(nomobloot); CHECKFLAG(nomvploot); CHECKFLAG(nightenabled);
CHECKFLAG(nodrop); CHECKFLAG(novending); CHECKFLAG(loadevent);
CHECKFLAG(nochat); CHECKFLAG(partylock); CHECKFLAG(guildlock); CHECKFLAG(src4instance);
- CHECKFLAG(notomb); CHECKFLAG(nocashshop); CHECKFLAG(noviewid);
+ CHECKFLAG(notomb); CHECKFLAG(nocashshop); CHECKFLAG(noviewid); CHECKFLAG(town);
clif->message(sd->fd," ");
clif->message(sd->fd,msg_fd(fd,1312)); // Usage: "@mapflag monster_noteleport 1" (0=Off | 1=On)
clif->message(sd->fd,msg_fd(fd,1313)); // Type "@mapflag available" to list the available mapflags.
@@ -7537,48 +7738,54 @@ ACMD(mapflag) {
}
for (i = 0; flag_name[i]; i++) flag_name[i] = TOLOWER(flag_name[i]); //lowercase
- if (strcmp( flag_name , "gvg" ) == 0) {
- if( flag && !map->list[sd->bl.m].flag.gvg )
- map->zone_change2(sd->bl.m,strdb_get(map->zone_db, MAP_ZONE_GVG_NAME));
- else if ( !flag && map->list[sd->bl.m].flag.gvg )
- map->zone_change2(sd->bl.m,map->list[sd->bl.m].prev_zone);
- } else if ( strcmp( flag_name , "pvp" ) == 0 ) {
- if ( flag && !map->list[sd->bl.m].flag.pvp )
- map->zone_change2(sd->bl.m,strdb_get(map->zone_db, MAP_ZONE_PVP_NAME));
- else if ( !flag && map->list[sd->bl.m].flag.pvp )
- map->zone_change2(sd->bl.m,map->list[sd->bl.m].prev_zone);
- } else if ( strcmp( flag_name , "battleground" ) == 0 ) {
- if ( flag && !map->list[sd->bl.m].flag.battleground )
- map->zone_change2(sd->bl.m,strdb_get(map->zone_db, MAP_ZONE_BG_NAME));
- else if ( !flag && map->list[sd->bl.m].flag.battleground )
- map->zone_change2(sd->bl.m,map->list[sd->bl.m].prev_zone);
+ if (strcmp(flag_name, "gvg") == 0) {
+ if (flag && !map->list[sd->bl.m].flag.gvg)
+ map->zone_change2(sd->bl.m, strdb_get(map->zone_db, MAP_ZONE_GVG_NAME));
+ else if (!flag && map->list[sd->bl.m].flag.gvg)
+ map->zone_change2(sd->bl.m, map->list[sd->bl.m].prev_zone);
+ } else if (strcmp(flag_name, "pvp") == 0) {
+ if (flag && !map->list[sd->bl.m].flag.pvp)
+ map->zone_change2(sd->bl.m, strdb_get(map->zone_db, MAP_ZONE_PVP_NAME));
+ else if (!flag && map->list[sd->bl.m].flag.pvp)
+ map->zone_change2(sd->bl.m, map->list[sd->bl.m].prev_zone);
+ } else if (strcmp(flag_name, "battleground") == 0) {
+ if (flag && !map->list[sd->bl.m].flag.battleground)
+ map->zone_change2(sd->bl.m, strdb_get(map->zone_db, MAP_ZONE_BG_NAME));
+ else if (!flag && map->list[sd->bl.m].flag.battleground)
+ map->zone_change2(sd->bl.m, map->list[sd->bl.m].prev_zone);
+ } else if (strcmp(flag_name, "cvc") == 0) {
+ if (flag && !map->list[sd->bl.m].flag.cvc)
+ map->zone_change2(sd->bl.m, strdb_get(map->zone_db, MAP_ZONE_CVC_NAME));
+ else if (!flag && map->list[sd->bl.m].flag.cvc)
+ map->zone_change2(sd->bl.m, map->list[sd->bl.m].prev_zone);
}
SETFLAG(autotrade); SETFLAG(allowks); SETFLAG(nomemo); SETFLAG(noteleport);
SETFLAG(noreturn); SETFLAG(monster_noteleport); SETFLAG(nosave); SETFLAG(nobranch);
SETFLAG(noexppenalty); SETFLAG(pvp); SETFLAG(pvp_noparty); SETFLAG(pvp_noguild);
SETFLAG(pvp_nightmaredrop); SETFLAG(pvp_nocalcrank); SETFLAG(gvg_castle); SETFLAG(gvg);
- SETFLAG(gvg_dungeon); SETFLAG(gvg_noparty); SETFLAG(battleground); SETFLAG(nozenypenalty);
- SETFLAG(notrade); SETFLAG(noskill); SETFLAG(nowarp); SETFLAG(nowarpto);
- SETFLAG(noicewall); SETFLAG(snow); SETFLAG(clouds); SETFLAG(clouds2);
- SETFLAG(fog); SETFLAG(fireworks); SETFLAG(sakura); SETFLAG(leaves);
- SETFLAG(nobaseexp);
- SETFLAG(nojobexp); SETFLAG(nomobloot); SETFLAG(nomvploot); SETFLAG(nightenabled);
- SETFLAG(nodrop); SETFLAG(novending); SETFLAG(loadevent);
- SETFLAG(nochat); SETFLAG(partylock); SETFLAG(guildlock); SETFLAG(src4instance);
- SETFLAG(notomb); SETFLAG(nocashshop); SETFLAG(noviewid);
-
- clif->message(sd->fd,msg_fd(fd,1314)); // Invalid flag name or flag.
- clif->message(sd->fd,msg_fd(fd,1312)); // Usage: "@mapflag monster_noteleport 1" (0=Off | 1=On)
- clif->message(sd->fd,msg_fd(fd,1315)); // Available Flags:
- clif->message(sd->fd,"----------------------------------");
- clif->message(sd->fd,"town, autotrade, allowks, nomemo, noteleport, noreturn, monster_noteleport, nosave,");
- clif->message(sd->fd,"nobranch, noexppenalty, pvp, pvp_noparty, pvp_noguild, pvp_nightmaredrop,");
- clif->message(sd->fd,"pvp_nocalcrank, gvg_castle, gvg, gvg_dungeon, gvg_noparty, battleground,");
- clif->message(sd->fd,"nozenypenalty, notrade, noskill, nowarp, nowarpto, noicewall, snow, clouds, clouds2,");
- clif->message(sd->fd,"fog, fireworks, sakura, leaves, nobaseexp, nojobexp, nomobloot,");
- clif->message(sd->fd,"nomvploot, nightenabled, nodrop, novending, loadevent, nochat, partylock,");
- clif->message(sd->fd,"guildlock, src4instance, notomb, nocashshop, noviewid");
+ SETFLAG(gvg_dungeon); SETFLAG(gvg_noparty); SETFLAG(battleground); SETFLAG(cvc);
+ SETFLAG(nozenypenalty); SETFLAG(notrade); SETFLAG(noskill); SETFLAG(nowarp);
+ SETFLAG(nowarpto); SETFLAG(noicewall); SETFLAG(snow); SETFLAG(clouds);
+ SETFLAG(clouds2); SETFLAG(fog); SETFLAG(fireworks); SETFLAG(sakura);
+ SETFLAG(leaves); SETFLAG(nobaseexp); SETFLAG(nojobexp); SETFLAG(nomobloot);
+ SETFLAG(nomvploot); SETFLAG(nightenabled); SETFLAG(nodrop); SETFLAG(novending);
+ SETFLAG(loadevent); SETFLAG(nochat); SETFLAG(partylock); SETFLAG(guildlock);
+ SETFLAG(src4instance); SETFLAG(notomb); SETFLAG(nocashshop); SETFLAG(noviewid);
+ SETFLAG(town);
+
+
+ clif->message(sd->fd, msg_fd(fd, 1314)); // Invalid flag name or flag.
+ clif->message(sd->fd, msg_fd(fd, 1312)); // Usage: "@mapflag monster_noteleport 1" (0=Off | 1=On)
+ clif->message(sd->fd, msg_fd(fd, 1315)); // Available Flags:
+ clif->message(sd->fd, "----------------------------------");
+ clif->message(sd->fd, "town, autotrade, allowks, nomemo, noteleport, noreturn, monster_noteleport, nosave,");
+ clif->message(sd->fd, "nobranch, noexppenalty, pvp, pvp_noparty, pvp_noguild, pvp_nightmaredrop,");
+ clif->message(sd->fd, "pvp_nocalcrank, gvg_castle, gvg, gvg_dungeon, gvg_noparty, battleground, cvc,");
+ clif->message(sd->fd, "nozenypenalty, notrade, noskill, nowarp, nowarpto, noicewall, snow, clouds, clouds2,");
+ clif->message(sd->fd, "fog, fireworks, sakura, leaves, nobaseexp, nojobexp, nomobloot,");
+ clif->message(sd->fd, "nomvploot, nightenabled, nodrop, novending, loadevent, nochat, partylock,");
+ clif->message(sd->fd, "guildlock, src4instance, notomb, nocashshop, noviewid");
#undef CHECKFLAG
#undef SETFLAG
@@ -7681,7 +7888,8 @@ ACMD(invite)
return true;
}
-ACMD(duel) {
+ACMD(duel)
+{
unsigned int maxpl = 0;
if (sd->duel_group > 0) {
@@ -7734,7 +7942,8 @@ ACMD(duel) {
return true;
}
-ACMD(leave) {
+ACMD(leave)
+{
if (sd->duel_group <= 0) {
// "Duel: @leave without @duel."
clif->message(fd, msg_fd(fd,358));
@@ -7745,7 +7954,8 @@ ACMD(leave) {
return true;
}
-ACMD(accept) {
+ACMD(accept)
+{
if (!duel->checktime(sd)) {
char output[CHAT_SIZE_MAX];
// "Duel: You can take part in duel only one time per %d minutes."
@@ -7773,7 +7983,8 @@ ACMD(accept) {
return true;
}
-ACMD(reject) {
+ACMD(reject)
+{
if (sd->duel_invite <= 0) {
// "Duel: @reject without invitation."
clif->message(fd, msg_fd(fd,362));
@@ -7793,7 +8004,6 @@ ACMD(cash)
{
char output[128];
int value;
- int ret=0;
if (!*message || (value = atoi(message)) == 0) {
clif->message(fd, msg_fd(fd,1322)); // Please enter an amount.
@@ -7801,38 +8011,38 @@ ACMD(cash)
}
if (!strcmpi(info->command,"cash")) {
- if( value > 0 ) {
- if( (ret=pc->getcash(sd, value, 0)) >= 0){
+ if (value > 0) {
+ if ((pc->getcash(sd, value, 0)) >= 0) {
// If this option is set, the message is already sent by pc function
- if( !battle_config.cashshop_show_points ){
- sprintf(output, msg_fd(fd,505), ret, sd->cashPoints);
+ if (!battle_config.cashshop_show_points) {
+ sprintf(output, msg_fd(fd,505), value, sd->cashPoints);
clif_disp_onlyself(sd, output);
clif->message(fd, output);
}
} else
clif->message(fd, msg_fd(fd,149)); // Unable to decrease the number/value.
} else {
- if( (ret=pc->paycash(sd, -value, 0)) >= 0){
- sprintf(output, msg_fd(fd,410), ret, sd->cashPoints);
+ if ((pc->paycash(sd, -value, 0)) >= 0) {
+ sprintf(output, msg_fd(fd,410), -value, sd->cashPoints);
clif_disp_onlyself(sd, output);
clif->message(fd, output);
} else
clif->message(fd, msg_fd(fd,41)); // Unable to decrease the number/value.
}
} else { // @points
- if( value > 0 ) {
- if( (ret=pc->getcash(sd, 0, value)) >= 0) {
+ if (value > 0) {
+ if ((pc->getcash(sd, 0, value)) >= 0) {
// If this option is set, the message is already sent by pc function
- if( !battle_config.cashshop_show_points ){
- sprintf(output, msg_fd(fd,506), ret, sd->kafraPoints);
+ if (!battle_config.cashshop_show_points) {
+ sprintf(output, msg_fd(fd,506), value, sd->kafraPoints);
clif_disp_onlyself(sd, output);
clif->message(fd, output);
}
} else
clif->message(fd, msg_fd(fd,149)); // Unable to decrease the number/value.
} else {
- if( (ret=pc->paycash(sd, -value, -value)) >= 0){
- sprintf(output, msg_fd(fd,411), ret, sd->kafraPoints);
+ if ((pc->paycash(sd, -value, -value)) >= 0) {
+ sprintf(output, msg_fd(fd,411), -value, sd->kafraPoints);
clif_disp_onlyself(sd, output);
clif->message(fd, output);
} else
@@ -7844,7 +8054,8 @@ ACMD(cash)
}
// @clone/@slaveclone/@evilclone <playername> [Valaris]
-ACMD(clone) {
+ACMD(clone)
+{
int x=0,y=0,flag=0,master=0,i=0;
struct map_session_data *pl_sd=NULL;
@@ -7962,7 +8173,8 @@ ACMD(auction)
/*==========================================
* Kill Steal Protection
*------------------------------------------*/
-ACMD(ksprotection) {
+ACMD(ksprotection)
+{
if( sd->state.noks ) {
sd->state.noks = KSPROTECT_NONE;
clif->message(fd, msg_fd(fd,1325)); // [ K.S Protection Inactive ]
@@ -8027,8 +8239,8 @@ ACMD(itemlist)
if( strcmpi(info->command, "storagelist") == 0 ) {
location = "storage";
- items = sd->status.storage.items;
- size = MAX_STORAGE;
+ items = VECTOR_DATA(sd->storage.item);
+ size = VECTOR_LENGTH(sd->storage.item);
} else if( strcmpi(info->command, "cartlist") == 0 ) {
location = "cart";
items = sd->status.cart;
@@ -8036,7 +8248,7 @@ ACMD(itemlist)
} else if( strcmpi(info->command, "itemlist") == 0 ) {
location = "inventory";
items = sd->status.inventory;
- size = MAX_INVENTORY;
+ size = sd->status.inventorySize;
} else
return false;
@@ -8049,7 +8261,7 @@ ACMD(itemlist)
const struct item* it = &items[i];
struct item_data* itd;
- if( it->nameid == 0 || (itd = itemdb->exists(it->nameid)) == NULL )
+ if (it->nameid == 0 || (itd = itemdb->exists(it->nameid)) == NULL)
continue;
counter += it->amount;
@@ -8222,7 +8434,8 @@ ACMD(stats)
return true;
}
-ACMD(delitem) {
+ACMD(delitem)
+{
char item_name[100];
int nameid, amount = 0, total, idx;
struct item_data* id;
@@ -8283,7 +8496,8 @@ ACMD(delitem) {
/*==========================================
* Custom Fonts
*------------------------------------------*/
-ACMD(font) {
+ACMD(font)
+{
int font_id;
font_id = atoi(message);
@@ -8318,7 +8532,7 @@ ACMD(font) {
/*==========================================
* type: 1 = commands (@), 2 = charcommands (#)
*------------------------------------------*/
-void atcommand_commands_sub(struct map_session_data* sd, const int fd, AtCommandType type)
+static void atcommand_commands_sub(struct map_session_data *sd, const int fd, AtCommandType type)
{
char line_buff[CHATBOX_SIZE];
char* cur = line_buff;
@@ -8366,6 +8580,38 @@ void atcommand_commands_sub(struct map_session_data* sd, const int fd, AtCommand
dbi_destroy(iter);
clif->message(fd,line_buff);
+ if (atcommand->binding_count > 0) {
+ int i, count_bind = 0;
+ int gm_lvl = pc_get_group_level(sd);
+
+ for (i = 0; i < atcommand->binding_count; i++) {
+ if (gm_lvl >= ((type == COMMAND_ATCOMMAND) ? atcommand->binding[i]->group_lv : atcommand->binding[i]->group_lv_char)
+ || (type == COMMAND_ATCOMMAND && atcommand->binding[i]->at_groups[pcg->get_idx(sd->group)] > 0)
+ || (type == COMMAND_CHARCOMMAND && atcommand->binding[i]->char_groups[pcg->get_idx(sd->group)] > 0)) {
+ size_t slen = strlen(atcommand->binding[i]->command);
+ if (count_bind == 0) {
+ cur = line_buff;
+ memset(line_buff, ' ', CHATBOX_SIZE);
+ line_buff[CHATBOX_SIZE - 1] = 0;
+ clif->message(fd, "------------------");
+ clif->message(fd, "Custom commands:");
+ }
+ if (slen + cur - line_buff >= CHATBOX_SIZE) {
+ clif->message(fd, line_buff);
+ cur = line_buff;
+ memset(line_buff, ' ', CHATBOX_SIZE);
+ line_buff[CHATBOX_SIZE - 1] = 0;
+ }
+ memcpy(cur, atcommand->binding[i]->command, slen);
+ cur += slen + (10 - slen % 10);
+ count_bind++;
+ }
+ }
+ if (count_bind > 0)
+ clif->message(fd, line_buff); // Last Line
+ count += count_bind;
+ }
+
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,274), count); // "%d commands found."
clif->message(fd, atcmd_output);
@@ -8390,26 +8636,29 @@ ACMD(charcommands)
return true;
}
-/* for new mounts */
+/* For new mounts */
ACMD(cashmount)
{
if (pc_hasmount(sd)) {
- clif->message(fd, msg_fd(fd,1476)); // You are already mounting something else
+ clif->message(fd, msg_fd(fd, 1476)); // You are already mounting something else
return false;
}
- clif->message(sd->fd,msg_fd(fd,1362)); // NOTICE: If you crash with mount your LUA is outdated.
+ clif->message(sd->fd, msg_fd(fd, 1362)); // NOTICE: If you crash with mount your LUA is outdated.
+
if (!sd->sc.data[SC_ALL_RIDING]) {
- clif->message(sd->fd,msg_fd(fd,1363)); // You have mounted.
- sc_start(NULL, &sd->bl, SC_ALL_RIDING, 100, 25, INFINITE_DURATION);
+ clif->message(sd->fd, msg_fd(fd, 1363)); // You have mounted.
+ sc_start(NULL, &sd->bl, SC_ALL_RIDING, 100, battle_config.boarding_halter_speed, INFINITE_DURATION);
} else {
- clif->message(sd->fd,msg_fd(fd,1364)); // You have released your mount.
+ clif->message(sd->fd, msg_fd(fd, 1364)); // You have released your mount.
status_change_end(&sd->bl, SC_ALL_RIDING, INVALID_TIMER);
}
+
return true;
}
-ACMD(accinfo) {
+ACMD(accinfo)
+{
char query[NAME_LENGTH];
if (!*message || strlen(message) > NAME_LENGTH ) {
@@ -8474,19 +8723,19 @@ ACMD(set)
const char *str = NULL;
switch (reg[0]) {
case '@':
- str = pc->readregstr(sd, script->add_str(reg));
+ str = pc->readregstr(sd, script->add_variable(reg));
break;
case '$':
- str = mapreg->readregstr(script->add_str(reg));
+ str = mapreg->readregstr(script->add_variable(reg));
break;
case '#':
if (reg[1] == '#')
- str = pc_readaccountreg2str(sd, script->add_str(reg));// global
+ str = pc_readaccountreg2str(sd, script->add_variable(reg));// global
else
- str = pc_readaccountregstr(sd, script->add_str(reg));// local
+ str = pc_readaccountregstr(sd, script->add_variable(reg));// local
break;
default:
- str = pc_readglobalreg_str(sd, script->add_str(reg));
+ str = pc_readglobalreg_str(sd, script->add_variable(reg));
break;
}
if (str == NULL || str[0] == '\0') {
@@ -8502,19 +8751,19 @@ ACMD(set)
data->type = C_INT;
switch( reg[0] ) {
case '@':
- data->u.num = pc->readreg(sd, script->add_str(reg));
+ data->u.num = pc->readreg(sd, script->add_variable(reg));
break;
case '$':
- data->u.num = mapreg->readreg(script->add_str(reg));
+ data->u.num = mapreg->readreg(script->add_variable(reg));
break;
case '#':
if( reg[1] == '#' )
- data->u.num = pc_readaccountreg2(sd, script->add_str(reg));// global
+ data->u.num = pc_readaccountreg2(sd, script->add_variable(reg));// global
else
- data->u.num = pc_readaccountreg(sd, script->add_str(reg));// local
+ data->u.num = pc_readaccountreg(sd, script->add_variable(reg));// local
break;
default:
- data->u.num = pc_readglobalreg(sd, script->add_str(reg));
+ data->u.num = pc_readglobalreg(sd, script->add_variable(reg));
break;
}
}
@@ -8538,12 +8787,16 @@ ACMD(set)
aFree(data);
return true;
}
-ACMD(reloadquestdb) {
+
+ACMD(reloadquestdb)
+{
quest->reload();
clif->message(fd, msg_fd(fd,1377)); // Quest database has been reloaded.
return true;
}
-ACMD(addperm) {
+
+ACMD(addperm)
+{
int perm_size = pcg->permission_count;
bool add = (strcmpi(info->command, "addperm") == 0) ? true : false;
int i;
@@ -8599,6 +8852,7 @@ ACMD(addperm) {
return true;
}
+
ACMD(unloadnpcfile)
{
if (!*message) {
@@ -8614,7 +8868,9 @@ ACMD(unloadnpcfile)
}
return true;
}
-ACMD(cart) {
+
+ACMD(cart)
+{
#define MC_CART_MDFY(x,idx) do { \
sd->status.skill[idx].id = (x)?MC_PUSHCART:0; \
sd->status.skill[idx].lv = (x)?1:0; \
@@ -8623,7 +8879,7 @@ ACMD(cart) {
int val = atoi(message);
bool need_skill = pc->checkskill(sd, MC_PUSHCART) ? false : true;
- unsigned int index = skill->get_index(MC_PUSHCART);
+ int index = skill->get_index(MC_PUSHCART);
if (!*message || val < 0 || val > MAX_CARTS) {
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1390),command,MAX_CARTS); // Unknown Cart (usage: %s <0-%d>).
@@ -8656,6 +8912,7 @@ ACMD(cart) {
return true;
#undef MC_CART_MDFY
}
+
/* [Ind/Hercules] */
ACMD(join)
{
@@ -8699,8 +8956,10 @@ ACMD(join)
return true;
}
+
/* [Ind/Hercules] */
-void atcommand_channel_help(int fd, const char *command, bool can_create) {
+static void atcommand_channel_help(int fd, const char *command, bool can_create)
+{
nullpo_retv(command);
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1404),command); // %s failed.
clif->message(fd, atcmd_output);
@@ -8729,9 +8988,7 @@ void atcommand_channel_help(int fd, const char *command, bool can_create) {
clif->message(fd, msg_fd(fd,1428));// - binds global chat to <channel name>, making anything you type in global be sent to the channel
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1429),command);// -- %s unbind
clif->message(fd, atcmd_output);
- clif->message(fd, msg_fd(fd,1430));// - unbinds your global chat from its attached channel (if binded)
- safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1429),command);// -- %s unbind
- clif->message(fd, atcmd_output);
+ clif->message(fd, msg_fd(fd,1430));// - unbinds your global chat from its attached channel (if bound)
if( can_create ) {
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1456),command);// -- %s ban <channel name> <character name>
clif->message(fd, atcmd_output);
@@ -8750,11 +9007,12 @@ void atcommand_channel_help(int fd, const char *command, bool can_create) {
clif->message(fd, msg_fd(fd,1463));// - adds or removes <option name> with <option value> to <channel name> channel
}
}
+
/* [Ind/Hercules] */
-ACMD(channel) {
+ACMD(channel)
+{
struct channel_data *chan;
char subcmd[HCS_NAME_LENGTH], sub1[HCS_NAME_LENGTH], sub2[HCS_NAME_LENGTH], sub3[HCS_NAME_LENGTH];
- unsigned char k = 0;
sub1[0] = sub2[0] = sub3[0] = '\0';
if (!*message || sscanf(message, "%19s %19s %19s %19s", subcmd, sub1, sub2, sub3) < 1) {
@@ -8791,7 +9049,7 @@ ACMD(channel) {
} else if (strcmpi(subcmd,"list") == 0) {
// sub1 = list type; sub2 = unused; sub3 = unused
if (sub1[0] != '\0' && strcmpi(sub1,"colors") == 0) {
- for (k = 0; k < channel->config->colors_count; k++) {
+ for (int k = 0; k < channel->config->colors_count; k++) {
safesnprintf(atcmd_output, sizeof(atcmd_output), "[ %s list colors ] : %s", command, channel->config->colors_name[k]);
clif->messagecolor_self(fd, channel->config->colors[k], atcmd_output);
@@ -8820,6 +9078,7 @@ ACMD(channel) {
}
} else if (strcmpi(subcmd,"setcolor") == 0) {
// sub1 = channel name; sub2 = color; sub3 = unused
+ int k;
if (sub1[0] != '#') {
clif->message(fd, msg_fd(fd,1405));// Channel name must start with a '#'
return false;
@@ -8837,10 +9096,7 @@ ACMD(channel) {
return false;
}
- for (k = 0; k < channel->config->colors_count; k++) {
- if (strcmpi(sub2, channel->config->colors_name[k]) == 0)
- break;
- }
+ ARR_FIND(0, channel->config->colors_count, k, strcmpi(sub2, channel->config->colors_name[k]) == 0);
if (k == channel->config->colors_count) {
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1411), sub2);// Unknown color '%s'
clif->message(fd, atcmd_output);
@@ -8851,51 +9107,45 @@ ACMD(channel) {
clif->message(fd, atcmd_output);
} else if (strcmpi(subcmd,"leave") == 0) {
// sub1 = channel name; sub2 = unused; sub3 = unused
+ int k;
if (sub1[0] != '#') {
clif->message(fd, msg_fd(fd,1405));// Channel name must start with a '#'
return false;
}
- for (k = 0; k < sd->channel_count; k++) {
- if (strcmpi(sub1+1,sd->channels[k]->name) == 0)
- break;
- }
- if (k == sd->channel_count) {
+ ARR_FIND(0, VECTOR_LENGTH(sd->channels), k, strcmpi(sub1 + 1, VECTOR_INDEX(sd->channels, k)->name) == 0);
+ if (k == VECTOR_LENGTH(sd->channels)) {
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1425),sub1);// You're not part of the '%s' channel
clif->message(fd, atcmd_output);
return false;
}
- if (sd->channels[k]->type == HCS_TYPE_ALLY) {
- do {
- for (k = 0; k < sd->channel_count; k++) {
- if (sd->channels[k]->type == HCS_TYPE_ALLY) {
- channel->leave(sd->channels[k],sd);
- break;
- }
+ if (VECTOR_INDEX(sd->channels, k)->type == HCS_TYPE_ALLY) {
+ for (k = VECTOR_LENGTH(sd->channels) - 1; k >= 0; k--) {
+ // Loop downward to avoid issues when channel->leave() compacts the array
+ if (VECTOR_INDEX(sd->channels, k)->type == HCS_TYPE_ALLY) {
+ channel->leave(VECTOR_INDEX(sd->channels, k), sd);
}
- } while (k != sd->channel_count);
+ }
} else {
- channel->leave(sd->channels[k],sd);
+ channel->leave(VECTOR_INDEX(sd->channels, k), sd);
}
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1426),sub1); // You've left the '%s' channel
clif->message(fd, atcmd_output);
} else if (strcmpi(subcmd,"bindto") == 0) {
// sub1 = channel name; sub2 = unused; sub3 = unused
+ int k;
if (sub1[0] != '#') {
clif->message(fd, msg_fd(fd,1405));// Channel name must start with a '#'
return false;
}
- for (k = 0; k < sd->channel_count; k++) {
- if (strcmpi(sub1+1,sd->channels[k]->name) == 0)
- break;
- }
- if (k == sd->channel_count) {
+ ARR_FIND(0, VECTOR_LENGTH(sd->channels), k, strcmpi(sub1 + 1, VECTOR_INDEX(sd->channels, k)->name) == 0);
+ if (k == VECTOR_LENGTH(sd->channels)) {
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1425),sub1);// You're not part of the '%s' channel
clif->message(fd, atcmd_output);
return false;
}
- sd->gcbind = sd->channels[k];
+ sd->gcbind = VECTOR_INDEX(sd->channels, k);
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1431),sub1); // Your global chat is now bound to the '%s' channel
clif->message(fd, atcmd_output);
} else if (strcmpi(subcmd,"unbind") == 0) {
@@ -9067,6 +9317,7 @@ ACMD(channel) {
dbi_destroy(iter);
} else if (strcmpi(subcmd,"setopt") == 0) {
// sub1 = channel name; sub2 = option name; sub3 = value
+ int k;
const char* opt_str[3] = {
"None",
"JoinAnnounce",
@@ -9122,8 +9373,8 @@ ACMD(channel) {
} else {
int v = atoi(sub3);
if (k == HCS_OPT_MSG_DELAY) {
- if (v < 0 || v > 10) {
- safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1451), v, opt_str[k]);// value '%d' for option '%s' is out of range (limit is 0-10)
+ if (v < 0 || v > channel->config->channel_opt_msg_delay) {
+ safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 1451), v, opt_str[k], channel->config->channel_opt_msg_delay);// value '%d' for option '%s' is out of range (limit is 0-%d)
clif->message(fd, atcmd_output);
return false;
}
@@ -9170,8 +9421,10 @@ ACMD(channel) {
}
return true;
}
+
/* debug only, delete after */
-ACMD(fontcolor) {
+ACMD(fontcolor)
+{
unsigned char k;
if (!*message) {
@@ -9203,7 +9456,9 @@ ACMD(fontcolor) {
return true;
}
-ACMD(searchstore){
+
+ACMD(searchstore)
+{
int val = atoi(message);
switch (val) {
@@ -9218,7 +9473,12 @@ ACMD(searchstore){
searchstore->open(sd, 99, val);
return true;
}
-ACMD(costume){
+
+/*==========================================
+* @costume
+*------------------------------------------*/
+ACMD(costume)
+{
const char* names[] = {
"Wedding",
"Xmas",
@@ -9227,6 +9487,9 @@ ACMD(costume){
#if PACKETVER >= 20131218
"Oktoberfest",
#endif
+#if PACKETVER >= 20141022
+ "Summer2",
+#endif
};
const int name2id[] = {
SC_WEDDING,
@@ -9236,41 +9499,54 @@ ACMD(costume){
#if PACKETVER >= 20131218
SC_OKTOBERFEST,
#endif
+#if PACKETVER >= 20141022
+ SC_DRESS_UP,
+#endif
};
unsigned short k = 0, len = ARRAYLENGTH(names);
+ bool isChangeDress = (strcmpi(info->command, "changedress") == 0 || strcmpi(info->command, "nocosplay") == 0);
+
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);
+
+ if (isChangeDress)
+ return true;
+ 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);
+ if (isChangeDress)
+ return true;
+
+ 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;
}
@@ -9278,6 +9554,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)
@@ -9292,10 +9569,12 @@ ACMD(skdebug)
clif->message(fd,atcmd_output);
return true;
}
+
/**
* cooldown-debug
**/
-ACMD(cddebug) {
+ACMD(cddebug)
+{
int i;
struct skill_cd* cd = NULL;
@@ -9316,7 +9595,7 @@ ACMD(cddebug) {
}
if (!cd || (*message && !strcmpi(message,"reset"))) {
- for(i = 0; i < MAX_SKILL; i++) {
+ for (i = 0; i < MAX_SKILL_DB; i++) {
if( sd->blockskill[i] ) {
clif->messages(fd,"Found skill '%s', unblocking...",skill->dbs->db[i].name);
sd->blockskill[i] = false;
@@ -9340,7 +9619,8 @@ ACMD(cddebug) {
/**
*
**/
-ACMD(lang) {
+ACMD(lang)
+{
uint8 i;
if (!*message) {
@@ -9372,12 +9652,164 @@ ACMD(lang) {
return true;
}
+
+ACMD(claninfo)
+{
+ struct DBIterator *iter = db_iterator(clan->db);
+ struct clan *c;
+ int i, count;
+
+ for (c = dbi_first(iter); dbi_exists(iter); c = dbi_next(iter)) {
+ safesnprintf(atcmd_output, sizeof(atcmd_output), "Clan #%d:", c->clan_id);
+ clif->messagecolor_self(fd, COLOR_DEFAULT, atcmd_output);
+
+ safesnprintf(atcmd_output, sizeof(atcmd_output), "- Name: %s", c->name);
+ clif->messagecolor_self(fd, COLOR_DEFAULT, atcmd_output);
+
+ safesnprintf(atcmd_output, sizeof(atcmd_output), "- Constant: %s", c->constant);
+ clif->messagecolor_self(fd, COLOR_DEFAULT, atcmd_output);
+
+ safesnprintf(atcmd_output, sizeof(atcmd_output), "- Master: %s", c->master);
+ clif->messagecolor_self(fd, COLOR_DEFAULT, atcmd_output);
+
+ safesnprintf(atcmd_output, sizeof(atcmd_output), "- Map: %s", c->map);
+ clif->messagecolor_self(fd, COLOR_DEFAULT, atcmd_output);
+
+ safesnprintf(atcmd_output, sizeof(atcmd_output), "- Max Member: %d", c->max_member);
+ clif->messagecolor_self(fd, COLOR_DEFAULT, atcmd_output);
+
+ safesnprintf(atcmd_output, sizeof(atcmd_output), "- Kick Time: %dh", c->kick_time / 3600);
+ clif->messagecolor_self(fd, COLOR_DEFAULT, atcmd_output);
+
+ safesnprintf(atcmd_output, sizeof(atcmd_output), "- Check Time: %dh", c->check_time / 3600000);
+ clif->messagecolor_self(fd, COLOR_DEFAULT, atcmd_output);
+
+ safesnprintf(atcmd_output, sizeof(atcmd_output), "- Connected Members: %d", c->connect_member);
+ clif->messagecolor_self(fd, COLOR_DEFAULT, atcmd_output);
+
+ safesnprintf(atcmd_output, sizeof(atcmd_output), "- Total Members: %d", c->member_count);
+ clif->messagecolor_self(fd, COLOR_DEFAULT, atcmd_output);
+
+ safesnprintf(atcmd_output, sizeof(atcmd_output), "- Allies: %d", VECTOR_LENGTH(c->allies));
+ clif->messagecolor_self(fd, COLOR_DEFAULT, atcmd_output);
+
+ count = 0;
+ for (i = 0; i < VECTOR_LENGTH(c->allies); i++) {
+ struct clan_relationship *ally = &VECTOR_INDEX(c->allies, i);
+
+ safesnprintf(atcmd_output, sizeof(atcmd_output), "- - Ally #%d (Id: %d): %s", i + 1, ally->clan_id, ally->constant);
+ clif->messagecolor_self(fd, COLOR_DEFAULT, atcmd_output);
+ count++;
+ }
+
+ if (count == 0) {
+ clif->messagecolor_self(fd, COLOR_DEFAULT, "- - No Allies Found!");
+ }
+
+ safesnprintf(atcmd_output, sizeof(atcmd_output), "- Antagonists: %d", VECTOR_LENGTH(c->antagonists));
+ clif->messagecolor_self(fd, COLOR_DEFAULT, atcmd_output);
+
+ count = 0;
+ for (i = 0; i < VECTOR_LENGTH(c->antagonists); i++) {
+ struct clan_relationship *antagonist = &VECTOR_INDEX(c->antagonists, i);
+
+ safesnprintf(atcmd_output, sizeof(atcmd_output), "- - Antagonist #%d (Id: %d): %s", i + 1, antagonist->clan_id, antagonist->constant);
+ clif->messagecolor_self(fd, COLOR_DEFAULT, atcmd_output);
+ count++;
+ }
+
+ if (count == 0) {
+ clif->messagecolor_self(fd, COLOR_DEFAULT, "- - No Antagonists Found!");
+ }
+
+ clif->messagecolor_self(fd, COLOR_DEFAULT, "============================");
+ }
+ dbi_destroy(iter);
+ return true;
+}
+
+/**
+ * Clan System: Joins in the given clan
+ */
+ACMD(joinclan)
+{
+ int clan_id;
+
+ if (*message == '\0') {
+ clif->message(fd, "Please enter a Clan ID (usage: @joinclan <clan ID>).");
+ return false;
+ }
+ if (sd->status.clan_id != 0) {
+ clif->messagecolor_self(fd, COLOR_RED, "You are already in a clan.");
+ return false;
+ } else if (sd->status.guild_id != 0) {
+ clif->messagecolor_self(fd, COLOR_RED, "You must leave your guild before enter in a clan.");
+ return false;
+ }
+
+ clan_id = atoi(message);
+ if (clan_id <= 0) {
+ clif->messagecolor_self(fd, COLOR_RED, "Invalid Clan ID.");
+ return false;
+ }
+ if (!clan->join(sd, clan_id)) {
+ clif->messagecolor_self(fd, COLOR_RED, "The clan couldn't be joined.");
+ return false;
+ }
+ return true;
+}
+
+/**
+ * Clan System: Leaves current clan
+ */
+ACMD(leaveclan)
+{
+ if (sd->status.clan_id == 0) {
+ clif->messagecolor_self(fd, COLOR_RED, "You aren't in a clan.");
+ return false;
+ }
+ if (!clan->leave(sd, false)) {
+ clif->messagecolor_self(fd, COLOR_RED, "Failed on leaving clan.");
+ return false;
+ }
+ return true;
+}
+
+/**
+ * Clan System: Reloads clan db
+ */
+ACMD(reloadclans)
+{
+ clan->reload();
+ clif->messagecolor_self(fd, COLOR_DEFAULT, "Clan configuration and database have been reloaded.");
+ return true;
+}
+
+// show camera window or change camera parameters
+ACMD(camerainfo)
+{
+ if (*message == '\0') {
+ clif->camera_showWindow(sd);
+ return true;
+ }
+ float range = 0;
+ float rotation = 0;
+ float latitude = 0;
+ if (sscanf(message, "%15f %15f %15f", &range, &rotation, &latitude) < 3) {
+ clif->message(fd, msg_fd(fd, 452)); // usage @camerainfo range rotation latitude
+ return false;
+ }
+ clif->camera_change(sd, range, rotation, latitude, SELF);
+ return true;
+}
+
/**
* Fills the reference of available commands in atcommand DBMap
**/
#define ACMD_DEF(x) { #x, atcommand_ ## x, NULL, NULL, NULL, true }
#define ACMD_DEF2(x2, x) { x2, atcommand_ ## x, NULL, NULL, NULL, true }
-void atcommand_basecommands(void) {
+static void atcommand_basecommands(void)
+{
/**
* Command reference list, place the base of your commands here
**/
@@ -9640,10 +10072,20 @@ void atcommand_basecommands(void) {
ACMD_DEF(fontcolor),
ACMD_DEF(searchstore),
ACMD_DEF(costume),
+ ACMD_DEF2("changedress", costume),
+ ACMD_DEF2("nocosplay", costume),
ACMD_DEF(skdebug),
ACMD_DEF(cddebug),
ACMD_DEF(lang),
ACMD_DEF(bodystyle),
+ ACMD_DEF(cvcoff),
+ ACMD_DEF(cvcon),
+ ACMD_DEF(claninfo),
+ ACMD_DEF(joinclan),
+ ACMD_DEF(leaveclan),
+ ACMD_DEF(reloadclans),
+ ACMD_DEF(setzone),
+ ACMD_DEF(camerainfo),
};
int i;
@@ -9662,7 +10104,8 @@ void atcommand_basecommands(void) {
#undef ACMD_DEF
#undef ACMD_DEF2
-bool atcommand_add(char *name, AtCommandFunc func, bool replace) {
+static bool atcommand_add(char *name, AtCommandFunc func, bool replace)
+{
AtCommandInfo* cmd;
nullpo_retr(false, name);
@@ -9685,18 +10128,21 @@ bool atcommand_add(char *name, AtCommandFunc func, bool replace) {
/*==========================================
* Command lookup functions
*------------------------------------------*/
-AtCommandInfo* atcommand_exists(const char* name) {
+static AtCommandInfo *atcommand_exists(const char *name)
+{
return strdb_get(atcommand->db, name);
}
-AtCommandInfo* get_atcommandinfo_byname(const char *name) {
+static AtCommandInfo *get_atcommandinfo_byname(const char *name)
+{
AtCommandInfo *cmd;
if ((cmd = strdb_get(atcommand->db, name)))
return cmd;
return NULL;
}
-const char* atcommand_checkalias(const char *aliasname) {
+static const char *atcommand_checkalias(const char *aliasname)
+{
AliasInfo *alias_info = NULL;
if ((alias_info = (AliasInfo*)strdb_get(atcommand->alias_db, aliasname)) != NULL)
return alias_info->command->command;
@@ -9704,7 +10150,8 @@ const char* atcommand_checkalias(const char *aliasname) {
}
/// AtCommand suggestion
-void atcommand_get_suggestions(struct map_session_data* sd, const char *name, bool is_atcmd_cmd) {
+static void atcommand_get_suggestions(struct map_session_data *sd, const char *name, bool is_atcmd_cmd)
+{
struct DBIterator *atcommand_iter, *alias_iter;
AtCommandInfo* command_info = NULL;
AliasInfo* alias_info = NULL;
@@ -9785,10 +10232,11 @@ void atcommand_get_suggestions(struct map_session_data* sd, const char *name, bo
* @retval true if the message was recognized as atcommand.
* @retval false if the message should be considered a non-command message.
*/
-bool atcommand_exec(const int fd, struct map_session_data *sd, const char *message, bool player_invoked)
+static bool atcommand_exec(const int fd, struct map_session_data *sd, const char *message, bool player_invoked)
{
char params[100], command[100];
char output[CHAT_SIZE_MAX];
+ bool logCommand;
// Reconstructed message
char atcmd_msg[CHAT_SIZE_MAX];
@@ -9823,6 +10271,8 @@ bool atcommand_exec(const int fd, struct map_session_data *sd, const char *messa
return false;
}
}
+ if (sd->block_action.commands) // *pcblock script command
+ return false;
if (*message == atcommand->char_symbol)
is_atcommand = false;
@@ -9887,6 +10337,8 @@ bool atcommand_exec(const int fd, struct map_session_data *sd, const char *messa
&& (
(is_atcommand && pc_get_group_level(sd) >= binding->group_lv)
|| (!is_atcommand && pc_get_group_level(sd) >= binding->group_lv_char)
+ || (is_atcommand && binding->at_groups[pcg->get_idx(sd->group)] > 0)
+ || (!is_atcommand && binding->char_groups[pcg->get_idx(sd->group)] > 0)
)
) {
if (binding->log) /* log only if this command should be logged [Ind/Hercules] */
@@ -9930,6 +10382,7 @@ bool atcommand_exec(const int fd, struct map_session_data *sd, const char *messa
}
}
+ logCommand = info->log;
//Attempt to use the command
if ((info->func(fd, ssd, command, params,info) != true)) {
#ifdef AUTOTRADE_PERSISTENCY
@@ -9941,7 +10394,8 @@ bool atcommand_exec(const int fd, struct map_session_data *sd, const char *messa
return true;
}
- if (info->log) /* log only if this command should be logged [Ind/Hercules] */
+ // info->log cant be used here, because info can be freed [4144]
+ if (logCommand) /* log only if this command should be logged [Ind/Hercules] */
logs->atcommand(sd, is_atcommand ? atcmd_msg : message);
return true;
@@ -9950,7 +10404,8 @@ bool atcommand_exec(const int fd, struct map_session_data *sd, const char *messa
/*==========================================
*
*------------------------------------------*/
-void atcommand_config_read(const char* config_filename) {
+static void atcommand_config_read(const char *config_filename)
+{
struct config_t atcommand_config;
struct config_setting_t *aliases = NULL, *help = NULL, *nolog = NULL;
const char *symbol = NULL;
@@ -10089,7 +10544,7 @@ static inline int atcommand_command_type2idx(AtCommandType type)
* Loads permissions for groups to use commands.
*
*/
-void atcommand_db_load_groups(GroupSettings **groups, struct config_setting_t **commands_, size_t sz)
+static void atcommand_db_load_groups(GroupSettings **groups, struct config_setting_t **commands_, size_t sz)
{
struct DBIterator *iter = db_iterator(atcommand->db);
AtCommandInfo *atcmd;
@@ -10149,37 +10604,44 @@ void atcommand_db_load_groups(GroupSettings **groups, struct config_setting_t **
return;
}
-bool atcommand_can_use(struct map_session_data *sd, const char *command) {
- AtCommandInfo *info = atcommand->get_info_byname(atcommand->check_alias(command + 1));
+static bool atcommand_can_use(struct map_session_data *sd, const char *command)
+{
+ AtCommandInfo *acmd_d;
+ struct atcmd_binding_data *bcmd_d;
nullpo_retr(false, sd);
- nullpo_retr(false, command);
- if (info == NULL)
- return false;
- if ((*command == atcommand->at_symbol && info->at_groups[pcg->get_idx(sd->group)] != 0) ||
- (*command == atcommand->char_symbol && info->char_groups[pcg->get_idx(sd->group)] != 0) ) {
- return true;
+ if ((acmd_d = atcommand->get_info_byname(atcommand->check_alias(command + 1))) != NULL) {
+ return ((*command == atcommand->at_symbol && acmd_d->at_groups[pcg->get_idx(sd->group)] > 0) ||
+ (*command == atcommand->char_symbol && acmd_d->char_groups[pcg->get_idx(sd->group)] > 0));
+ } else if ((bcmd_d = atcommand->get_bind_byname(atcommand->check_alias(command + 1))) != NULL) {
+ return ((*command == atcommand->at_symbol && bcmd_d->at_groups[pcg->get_idx(sd->group)] > 0) ||
+ (*command == atcommand->char_symbol && bcmd_d->char_groups[pcg->get_idx(sd->group)] > 0));
}
return false;
}
-bool atcommand_can_use2(struct map_session_data *sd, const char *command, AtCommandType type) {
- AtCommandInfo *info = atcommand->get_info_byname(atcommand->check_alias(command));
+
+static bool atcommand_can_use2(struct map_session_data *sd, const char *command, AtCommandType type)
+{
+ AtCommandInfo *acmd_d;
+ struct atcmd_binding_data *bcmd_d;
nullpo_retr(false, sd);
- nullpo_retr(false, command);
- if (info == NULL)
- return false;
- if ((type == COMMAND_ATCOMMAND && info->at_groups[pcg->get_idx(sd->group)] != 0) ||
- (type == COMMAND_CHARCOMMAND && info->char_groups[pcg->get_idx(sd->group)] != 0) ) {
- return true;
+ if ((acmd_d = atcommand->get_info_byname(atcommand->check_alias(command))) != NULL) {
+ return ((type == COMMAND_ATCOMMAND && acmd_d->at_groups[pcg->get_idx(sd->group)] > 0) ||
+ (type == COMMAND_CHARCOMMAND && acmd_d->char_groups[pcg->get_idx(sd->group)] > 0));
+ } else if ((bcmd_d = atcommand->get_bind_byname(atcommand->check_alias(command))) != NULL) {
+ return ((type == COMMAND_ATCOMMAND && bcmd_d->at_groups[pcg->get_idx(sd->group)] > 0) ||
+ (type == COMMAND_CHARCOMMAND && bcmd_d->char_groups[pcg->get_idx(sd->group)] > 0));
}
return false;
}
-bool atcommand_hp_add(char *name, AtCommandFunc func) {
+
+static bool atcommand_hp_add(char *name, AtCommandFunc func)
+{
/* if commands are added after group permissions are thrown in, they end up with no permissions */
/* so we restrict commands to be linked in during boot */
if( core->runflag == MAPSERVER_ST_RUNNING ) {
@@ -10193,7 +10655,7 @@ bool atcommand_hp_add(char *name, AtCommandFunc func) {
/**
* @see DBApply
*/
-int atcommand_db_clear_sub(union DBKey key, struct DBData *data, va_list args)
+static int atcommand_db_clear_sub(union DBKey key, struct DBData *data, va_list args)
{
AtCommandInfo *cmd = DB->data2ptr(data);
aFree(cmd->at_groups);
@@ -10203,7 +10665,8 @@ int atcommand_db_clear_sub(union DBKey key, struct DBData *data, va_list args)
return 0;
}
-void atcommand_db_clear(void) {
+static void atcommand_db_clear(void)
+{
if( atcommand->db != NULL ) {
atcommand->db->destroy(atcommand->db, atcommand->cmd_db_clear_sub);
atcommand->db = NULL;
@@ -10214,7 +10677,8 @@ void atcommand_db_clear(void) {
}
}
-void atcommand_doload(void) {
+static void atcommand_doload(void)
+{
if( core->runflag >= MAPSERVER_ST_RUNNING )
atcommand->cmd_db_clear();
if( atcommand->db == NULL )
@@ -10225,12 +10689,14 @@ void atcommand_doload(void) {
atcommand->config_read(map->ATCOMMAND_CONF_FILENAME);
}
-void atcommand_expand_message_table(void) {
+static void atcommand_expand_message_table(void)
+{
RECREATE(atcommand->msg_table, char **, ++atcommand->max_message_table);
CREATE(atcommand->msg_table[atcommand->max_message_table - 1], char *, MAX_MSG);
}
-void do_init_atcommand(bool minimal) {
+static void do_init_atcommand(bool minimal)
+{
if (minimal)
return;
@@ -10241,11 +10707,13 @@ void do_init_atcommand(bool minimal) {
atcommand->doload();
}
-void do_final_atcommand(void) {
+static void do_final_atcommand(void)
+{
atcommand->cmd_db_clear();
}
-void atcommand_defaults(void) {
+void atcommand_defaults(void)
+{
atcommand = &atcommand_s;
atcommand->db = NULL;
diff --git a/src/map/atcommand.h b/src/map/atcommand.h
index 35b3c382e..3bbbefa20 100644
--- a/src/map/atcommand.h
+++ b/src/map/atcommand.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -79,8 +79,10 @@ struct AtCommandInfo {
struct atcmd_binding_data {
char command[ATCOMMAND_LENGTH];
char npc_event[ATCOMMAND_LENGTH];
- int group_lv;
- int group_lv_char;
+ int group_lv; // DEPRECATED
+ int group_lv_char; // DEPRECATED
+ char *at_groups; // quick @commands "can-use" lookup
+ char *char_groups; // quick @charcommands "can-use" lookup
bool log;
};
diff --git a/src/map/battle.c b/src/map/battle.c
index 64fda033f..f51240810 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -20,11 +20,11 @@
*/
#define HERCULES_CORE
-#include "config/core.h" // CELL_NOSTACK, CIRCULAR_AREA, CONSOLE_INPUT, HMAP_ZONE_DAMAGE_CAP_TYPE, OFFICIAL_WALKPATH, RENEWAL, RENEWAL_ASPD, RENEWAL_CAST, RENEWAL_DROP, RENEWAL_EDP, RENEWAL_EXP, RENEWAL_LVDMG, RE_LVL_DMOD(), RE_LVL_MDMOD(), RE_LVL_TMDMOD(), RE_SKILL_REDUCTION(), SCRIPT_CALLFUNC_CHECK, SECURE_NPCTIMEOUT, STATS_OPT_OUT
+#include "config/core.h" // CELL_NOSTACK, CIRCULAR_AREA, CONSOLE_INPUT, HMAP_ZONE_DAMAGE_CAP_TYPE, OFFICIAL_WALKPATH, RENEWAL, RENEWAL_ASPD, RENEWAL_CAST, RENEWAL_DROP, RENEWAL_EDP, RENEWAL_EXP, RENEWAL_LVDMG, RE_LVL_DMOD(), RE_LVL_MDMOD(), RE_LVL_TMDMOD(), RE_SKILL_REDUCTION(), SCRIPT_CALLFUNC_CHECK, SECURE_NPCTIMEOUT
#include "battle.h"
#include "map/battleground.h"
-#include "map/chrif.h"
+#include "map/clan.h"
#include "map/clif.h"
#include "map/elemental.h"
#include "map/guild.h"
@@ -59,7 +59,7 @@
#include <string.h>
struct Battle_Config battle_config;
-struct battle_interface battle_s;
+static struct battle_interface battle_s;
struct battle_interface *battle;
/**
@@ -68,7 +68,7 @@ struct battle_interface *battle;
* @param bl The bl to check.
* @return The current/last skill ID.
*/
-int battle_getcurrentskill(struct block_list *bl)
+static int battle_getcurrentskill(struct block_list *bl)
{
const struct unit_data *ud;
@@ -91,7 +91,8 @@ int battle_getcurrentskill(struct block_list *bl)
/*==========================================
* Get random targeting enemy
*------------------------------------------*/
-int battle_gettargeted_sub(struct block_list *bl, va_list ap) {
+static int battle_gettargeted_sub(struct block_list *bl, va_list ap)
+{
struct block_list **bl_list;
struct unit_data *ud;
int target_id;
@@ -119,7 +120,8 @@ int battle_gettargeted_sub(struct block_list *bl, va_list ap) {
return 0;
}
-struct block_list* battle_gettargeted(struct block_list *target) {
+static struct block_list *battle_gettargeted(struct block_list *target)
+{
struct block_list *bl_list[24];
int c = 0;
nullpo_retr(NULL, target);
@@ -134,7 +136,8 @@ struct block_list* battle_gettargeted(struct block_list *target) {
}
//Returns the id of the current targeted character of the passed bl. [Skotlex]
-int battle_gettarget(struct block_list* bl) {
+static int battle_gettarget(struct block_list *bl)
+{
nullpo_ret(bl);
switch (bl->type) {
@@ -149,7 +152,8 @@ int battle_gettarget(struct block_list* bl) {
return 0;
}
-int battle_getenemy_sub(struct block_list *bl, va_list ap) {
+static int battle_getenemy_sub(struct block_list *bl, va_list ap)
+{
struct block_list **bl_list;
struct block_list *target;
int *c;
@@ -177,7 +181,8 @@ int battle_getenemy_sub(struct block_list *bl, va_list ap) {
}
// Picks a random enemy of the given type (BL_PC, BL_CHAR, etc) within the range given. [Skotlex]
-struct block_list* battle_getenemy(struct block_list *target, int type, int range) {
+static struct block_list *battle_getenemy(struct block_list *target, int type, int range)
+{
struct block_list *bl_list[24];
int c = 0;
@@ -193,7 +198,9 @@ struct block_list* battle_getenemy(struct block_list *target, int type, int rang
return bl_list[rnd()%c];
}
-int battle_getenemyarea_sub(struct block_list *bl, va_list ap) {
+
+static int battle_getenemyarea_sub(struct block_list *bl, va_list ap)
+{
struct block_list **bl_list, *src;
int *c, ignore_id;
@@ -223,7 +230,8 @@ int battle_getenemyarea_sub(struct block_list *bl, va_list ap) {
}
// Pick a random enemy
-struct block_list* battle_getenemyarea(struct block_list *src, int x, int y, int range, int type, int ignore_id) {
+static struct block_list *battle_getenemyarea(struct block_list *src, int x, int y, int range, int type, int ignore_id)
+{
struct block_list *bl_list[24];
int c = 0;
@@ -239,7 +247,8 @@ struct block_list* battle_getenemyarea(struct block_list *src, int x, int y, int
return bl_list[rnd()%c];
}
-int battle_delay_damage_sub(int tid, int64 tick, int id, intptr_t data) {
+static int battle_delay_damage_sub(int tid, int64 tick, int id, intptr_t data)
+{
struct delay_damage *dat = (struct delay_damage *)data;
if ( dat ) {
@@ -280,7 +289,8 @@ int battle_delay_damage_sub(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-int battle_delay_damage(int64 tick, int amotion, struct block_list *src, struct block_list *target, int attack_type, uint16 skill_id, uint16 skill_lv, int64 damage, enum damage_lv dmg_lv, int ddelay, bool additional_effects) {
+static int battle_delay_damage(int64 tick, int amotion, struct block_list *src, struct block_list *target, int attack_type, uint16 skill_id, uint16 skill_lv, int64 damage, enum damage_lv dmg_lv, int ddelay, bool additional_effects)
+{
struct delay_damage *dat;
struct status_change *sc;
struct block_list *d_tbl = NULL;
@@ -328,7 +338,8 @@ int battle_delay_damage(int64 tick, int amotion, struct block_list *src, struct
return 0;
}
-int battle_attr_ratio(int atk_elem,int def_type, int def_lv)
+
+static int battle_attr_ratio(int atk_elem, int def_type, int def_lv)
{
if (atk_elem < ELE_NEUTRAL || atk_elem >= ELE_MAX)
return 100;
@@ -344,7 +355,7 @@ int battle_attr_ratio(int atk_elem,int def_type, int def_lv)
* Added passing of the chars so that the status changes can affect it. [Skotlex]
* Note: Passing src/target == NULL is perfectly valid, it skips SC_ checks.
*------------------------------------------*/
-int64 battle_attr_fix(struct block_list *src, struct block_list *target, int64 damage,int atk_elem,int def_type, int def_lv)
+static int64 battle_attr_fix(struct block_list *src, struct block_list *target, int64 damage, int atk_elem, int def_type, int def_lv)
{
struct status_change *sc=NULL, *tsc=NULL;
int ratio;
@@ -438,8 +449,10 @@ int64 battle_attr_fix(struct block_list *src, struct block_list *target, int64 d
return damage + (damage * (ratio - 100) / 100);
}
+// [malufett]
//FIXME: Missing documentation for flag, flag2
-int64 battle_calc_weapon_damage(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, struct weapon_atk *watk, int nk, bool n_ele, short s_ele, short s_ele_, int size, int type, int flag, int flag2){ // [malufett]
+static int64 battle_calc_weapon_damage(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, struct weapon_atk *watk, int nk, bool n_ele, short s_ele, short s_ele_, int size, int type, int flag, int flag2)
+{
#ifdef RENEWAL
int64 damage, eatk = 0;
struct status_change *sc;
@@ -511,6 +524,7 @@ int64 battle_calc_weapon_damage(struct block_list *src, struct block_list *bl, u
return 0;
#endif
}
+
/*==========================================
* Calculates the standard damage of a normal attack assuming it hits,
* it calculates nothing extra fancy, is needed for magnum breaks WATK_ELEMENT bonus. [Skotlex]
@@ -525,7 +539,8 @@ int64 battle_calc_weapon_damage(struct block_list *src, struct block_list *bl, u
*/
/* 'battle_calc_base_damage' is used on renewal, 'battle_calc_base_damage2' otherwise. */
// FIXME: Missing documentation for flag2
-int64 battle_calc_base_damage(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int nk, bool n_ele, short s_ele, short s_ele_, int type, int flag, int flag2) {
+static int64 battle_calc_base_damage(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int nk, bool n_ele, short s_ele, short s_ele_, int type, int flag, int flag2)
+{
int64 damage;
struct status_data *st = status->get_status_data(src);
struct status_change *sc = status->get_sc(src);
@@ -562,7 +577,9 @@ int64 battle_calc_base_damage(struct block_list *src, struct block_list *bl, uin
return damage;
}
-int64 battle_calc_base_damage2(struct status_data *st, struct weapon_atk *wa, struct status_change *sc, unsigned short t_size, struct map_session_data *sd, int flag) {
+
+static int64 battle_calc_base_damage2(struct status_data *st, struct weapon_atk *wa, struct status_change *sc, unsigned short t_size, struct map_session_data *sd, int flag)
+{
unsigned int atkmin=0, atkmax=0;
short type = 0;
int64 damage = 0;
@@ -643,7 +660,8 @@ int64 battle_calc_base_damage2(struct status_data *st, struct weapon_atk *wa, st
return damage;
}
-int64 battle_calc_sizefix(struct map_session_data *sd, int64 damage, int type, int size, bool ignore){
+static int64 battle_calc_sizefix(struct map_session_data *sd, int64 damage, int type, int size, bool ignore)
+{
//SizeFix only for players
nullpo_retr(damage, sd);
if (!(sd->special_state.no_sizefix || (ignore)))
@@ -655,7 +673,8 @@ int64 battle_calc_sizefix(struct map_session_data *sd, int64 damage, int type, i
* Passive skill damages increases
*------------------------------------------*/
// FIXME: type is undocumented
-int64 battle_addmastery(struct map_session_data *sd,struct block_list *target,int64 dmg,int type) {
+static int64 battle_addmastery(struct map_session_data *sd, struct block_list *target, int64 dmg, int type)
+{
int64 damage;
struct status_data *st = status->get_status_data(target);
int weapon, skill_lv;
@@ -767,7 +786,8 @@ int64 battle_addmastery(struct map_session_data *sd,struct block_list *target,in
/*==========================================
* Calculates ATK masteries.
*------------------------------------------*/
-int64 battle_calc_masteryfix(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int64 damage, int div, bool left, bool weapon) {
+static int64 battle_calc_masteryfix(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int64 damage, int div, bool left, bool weapon)
+{
int skill2_lv, i;
struct status_change *sc;
struct map_session_data *sd;
@@ -875,7 +895,7 @@ int64 battle_calc_masteryfix(struct block_list *src, struct block_list *target,
}
#else
if( skill_id != ASC_BREAKER && weapon ) // Adv Katar Mastery is does not applies to ASC_BREAKER, but other masteries DO apply >_>
- if( sd->status.weapon == W_KATAR && (skill2_lv=pc->checkskill(sd,ASC_KATAR)) > 0 )
+ if (sd->weapontype == W_KATAR && (skill2_lv=pc->checkskill(sd,ASC_KATAR)) > 0)
damage += damage * (10 + 2 * skill2_lv) / 100;
#endif
@@ -901,14 +921,16 @@ int64 battle_calc_masteryfix(struct block_list *src, struct block_list *target,
return damage;
}
-void battle_calc_masteryfix_unknown(struct block_list *src, struct block_list *target, uint16 *skill_id, uint16 *skill_lv, int64 *damage, int *div, bool *left, bool *weapon) {
+static void battle_calc_masteryfix_unknown(struct block_list *src, struct block_list *target, uint16 *skill_id, uint16 *skill_lv, int64 *damage, int *div, bool *left, bool *weapon)
+{
}
/*==========================================
* Elemental attribute fix.
*------------------------------------------*/
// FIXME: flag is undocumented
-int64 battle_calc_elefix(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int64 damage, int nk, int n_ele, int s_ele, int s_ele_, bool left, int flag){
+static int64 battle_calc_elefix(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int64 damage, int nk, int n_ele, int s_ele, int s_ele_, bool left, int flag)
+{
struct status_data *tstatus;
nullpo_ret(src);
@@ -953,7 +975,8 @@ int64 battle_calc_elefix(struct block_list *src, struct block_list *target, uint
#endif
return damage;
}
-int64 battle_calc_cardfix2(struct block_list *src, struct block_list *bl, int64 damage, int s_ele, int nk, int flag) {
+static int64 battle_calc_cardfix2(struct block_list *src, struct block_list *bl, int64 damage, int s_ele, int nk, int flag)
+{
#ifdef RENEWAL
struct map_session_data *tsd;
struct status_data *sstatus;
@@ -984,6 +1007,7 @@ int64 battle_calc_cardfix2(struct block_list *src, struct block_list *bl, int64
#endif
return damage;
}
+
/*==========================================
* Calculates card bonuses damage adjustments.
* cflag(cardfix flag):
@@ -991,13 +1015,10 @@ int64 battle_calc_cardfix2(struct block_list *src, struct block_list *bl, int64
* &2 - atker side cardfix(BF_WEAPON) otherwise target side(BF_WEAPON).
*------------------------------------------*/
// FIXME: wflag is undocumented
-int64 battle_calc_cardfix(int attack_type, struct block_list *src, struct block_list *target, int nk, int s_ele, int s_ele_, int64 damage, int cflag, int wflag){
+static int64 battle_calc_cardfix(int attack_type, struct block_list *src, struct block_list *target, int nk, int s_ele, int s_ele_, int64 damage, int cflag, int wflag)
+{
struct map_session_data *sd, *tsd;
-#ifdef RENEWAL
- short cardfix = 100;
-#else
- short cardfix = 1000;
-#endif
+ int cardfix = 1000;
short t_class, s_class, s_race2, t_race2;
struct status_data *sstatus, *tstatus;
int i;
@@ -1073,24 +1094,14 @@ int64 battle_calc_cardfix(int attack_type, struct block_list *src, struct block_
if( tsd->sc.data[SC_PROTECT_MDEF] )
cardfix = cardfix * ( 100 - tsd->sc.data[SC_PROTECT_MDEF]->val1 ) / 100;
}
-#ifdef RENEWAL
- if ( cardfix != 100 )
- damage += damage * (cardfix - 100) / 100;
-#else
if ( cardfix != 1000 )
damage = damage * cardfix / 1000;
-#endif
break;
case BF_WEAPON:
t_race2 = status->get_race2(target);
if( cflag&2 ){
if( sd && !(nk&NK_NO_CARDFIX_ATK) ){
- short cardfix_ =
-#ifdef RENEWAL
- 100;
-#else
- 1000;
-#endif
+ int cardfix_ = 1000;
if( sd->state.arrow_atk ){
cardfix = cardfix * (100 + sd->right_weapon.addrace[tstatus->race] + sd->arrow_addrace[tstatus->race]) / 100;
if( !(nk&NK_NO_ELEFIX) ){
@@ -1190,16 +1201,11 @@ int64 battle_calc_cardfix(int attack_type, struct block_list *src, struct block_
#ifndef RENEWAL
if( wflag&BF_LONG )
cardfix = cardfix * (100 + sd->bonus.long_attack_atk_rate) / 100;
+#endif
if( (cflag&1) && cardfix_ != 1000 )
damage = damage * cardfix_ / 1000;
else if( cardfix != 1000 )
damage = damage * cardfix / 1000;
-#else
- if ((cflag & 1) && cardfix_ != 100)
- damage += damage * (cardfix_ - 100) / 100;
- else if (cardfix != 100)
- damage += damage * (cardfix - 100) / 100;
-#endif
}
}else{
// Target side
@@ -1249,13 +1255,8 @@ int64 battle_calc_cardfix(int attack_type, struct block_list *src, struct block_
#endif
if( tsd->sc.data[SC_PROTECT_DEF] )
cardfix = cardfix * (100 - tsd->sc.data[SC_PROTECT_DEF]->val1) / 100;
-#ifdef RENEWAL
- if ( cardfix != 100 )
- damage += damage * (cardfix - 100) / 100;
-#else
if( cardfix != 1000 )
damage = damage * cardfix / 1000;
-#endif
}
}
break;
@@ -1287,13 +1288,8 @@ int64 battle_calc_cardfix(int attack_type, struct block_list *src, struct block_
cardfix = cardfix*(100 - tsd->subsize[sstatus->size]) / 100;
cardfix = cardfix*(100 - tsd->subrace2[s_race2]) / 100;
cardfix = cardfix * (100 - tsd->bonus.misc_def_rate) / 100;
-#ifdef RENEWAL
- if ( cardfix != 100 )
- damage += damage * (cardfix - 100) / 100;
-#else
if ( cardfix != 1000 )
damage = damage * cardfix / 1000;
-#endif
}
break;
}
@@ -1309,7 +1305,8 @@ int64 battle_calc_cardfix(int attack_type, struct block_list *src, struct block_
* &4 - tdef(Total defense reduction)
*------------------------------------------*/
// TODO: Add an enum for flag
-int64 battle_calc_defense(int attack_type, struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int64 damage, int flag, int pdef){
+static int64 battle_calc_defense(int attack_type, struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int64 damage, int flag, int pdef)
+{
struct status_data *sstatus, *tstatus;
struct map_session_data *sd, *tsd;
struct status_change *sc, *tsc;
@@ -1368,24 +1365,28 @@ int64 battle_calc_defense(int attack_type, struct block_list *src, struct block_
#endif
}
- if( battle_config.vit_penalty_type && battle_config.vit_penalty_target&target->type ) {
- unsigned char target_count; //256 max targets should be a sane max
- target_count = unit->counttargeted(target);
- if(target_count >= battle_config.vit_penalty_count) {
- if(battle_config.vit_penalty_type == 1) {
- if( !tsc || !tsc->data[SC_STEELBODY] )
- def1 = (def1 * (100 - (target_count - (battle_config.vit_penalty_count - 1))*battle_config.vit_penalty_num))/100;
- def2 = (def2 * (100 - (target_count - (battle_config.vit_penalty_count - 1))*battle_config.vit_penalty_num))/100;
- } else { //Assume type 2
- if( !tsc || !tsc->data[SC_STEELBODY] )
- def1 -= (target_count - (battle_config.vit_penalty_count - 1))*battle_config.vit_penalty_num;
- def2 -= (target_count - (battle_config.vit_penalty_count - 1))*battle_config.vit_penalty_num;
+ if (battle_config.vit_penalty_type != 0 && (battle_config.vit_penalty_target & target->type) != 0) {
+ int target_count = unit->counttargeted(target);
+ if (target_count >= battle_config.vit_penalty_count) {
+ int penalty = (target_count - (battle_config.vit_penalty_count - 1)) * battle_config.vit_penalty_num;
+ if (battle_config.vit_penalty_type == 1) {
+ if (tsc == NULL || tsc->data[SC_STEELBODY] == NULL)
+ def1 = def1 * (100 - penalty) / 100;
+ def2 = def2 * (100 - penalty) / 100;
+ } else { // Assume type 2
+ if (tsc == NULL || tsc->data[SC_STEELBODY] == NULL)
+ def1 -= penalty;
+ def2 -= penalty;
}
}
#ifndef RENEWAL
- if(skill_id == AM_ACIDTERROR) def1 = 0; //Acid Terror ignores only armor defense. [Skotlex]
+ if (skill_id == AM_ACIDTERROR)
+ def1 = 0; // Acid Terror ignores only armor defense. [Skotlex]
#endif
- if(def2 < 1) def2 = 1;
+ if (def1 < 0)
+ def1 = 0;
+ if (def2 < 1)
+ def2 = 1;
}
//Vitality reduction from rodatazone: http://rodatazone.simgaming.net/mechanics/substats.php#def
if (tsd) {
@@ -1497,7 +1498,8 @@ int64 battle_calc_defense(int attack_type, struct block_list *src, struct block_
}
// Minstrel/Wanderer number check for chorus skills.
-int battle_calc_chorusbonus(struct map_session_data *sd) {
+static int battle_calc_chorusbonus(struct map_session_data *sd)
+{
int members = 0;
if (!sd || !sd->status.party_id)
@@ -1513,7 +1515,8 @@ int battle_calc_chorusbonus(struct map_session_data *sd) {
}
// FIXME: flag is undocumented
-int battle_calc_skillratio(int attack_type, struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int skillratio, int flag){
+static int battle_calc_skillratio(int attack_type, struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int skillratio, int flag)
+{
int i;
struct status_change *sc, *tsc;
struct map_session_data *sd, *tsd;
@@ -2032,7 +2035,7 @@ int battle_calc_skillratio(int attack_type, struct block_list *src, struct block
skillratio += 100 + 100 * skill_lv + 100 * (skill_lv / 2);
break;
case RG_BACKSTAP:
- if( sd && sd->status.weapon == W_BOW && battle_config.backstab_bow_penalty )
+ if (sd != NULL && sd->weapontype == W_BOW && battle_config.backstab_bow_penalty)
skillratio += (200 + 40 * skill_lv) / 2;
else
skillratio += 200 + 40 * skill_lv;
@@ -2053,10 +2056,10 @@ int battle_calc_skillratio(int attack_type, struct block_list *src, struct block
case CR_HOLYCROSS:
{
int ratio = 35 * skill_lv;
- #ifdef RENEWAL
- if(sd && sd->status.weapon == W_2HSPEAR)
- ratio *= 2;
- #endif
+#ifdef RENEWAL
+ if (sd != NULL && sd->weapontype == W_2HSPEAR)
+ ratio *= 2;
+#endif
skillratio += ratio;
break;
}
@@ -2714,7 +2717,7 @@ int battle_calc_skillratio(int attack_type, struct block_list *src, struct block
skillratio += 2*sc->data[SC_TRUESIGHT]->val1;
if( sc->data[SC_LKCONCENTRATION] )
skillratio += sc->data[SC_LKCONCENTRATION]->val2;
- if( sd && sd->status.weapon == W_KATAR && (i=pc->checkskill(sd,ASC_KATAR)) > 0 )
+ if (sd != NULL && sd->weapontype == W_KATAR && (i=pc->checkskill(sd,ASC_KATAR)) > 0)
skillratio += skillratio * (10 + 2 * i) / 100;
#endif
if( (!skill_id || skill_id == KN_AUTOCOUNTER) && sc->data[SC_CRUSHSTRIKE] ){
@@ -2735,10 +2738,12 @@ int battle_calc_skillratio(int attack_type, struct block_list *src, struct block
return skillratio;
}
-void battle_calc_skillratio_magic_unknown(int *attack_type, struct block_list *src, struct block_list *target, uint16 *skill_id, uint16 *skill_lv, int *skillratio, int *flag) {
+static void battle_calc_skillratio_magic_unknown(int *attack_type, struct block_list *src, struct block_list *target, uint16 *skill_id, uint16 *skill_lv, int *skillratio, int *flag)
+{
}
-void battle_calc_skillratio_weapon_unknown(int *attack_type, struct block_list *src, struct block_list *target, uint16 *skill_id, uint16 *skill_lv, int *skillratio, int *flag) {
+static void battle_calc_skillratio_weapon_unknown(int *attack_type, struct block_list *src, struct block_list *target, uint16 *skill_id, uint16 *skill_lv, int *skillratio, int *flag)
+{
}
/*==========================================
@@ -2746,7 +2751,8 @@ void battle_calc_skillratio_weapon_unknown(int *attack_type, struct block_list *
* ATK may be MISS, BLOCKED FAIL, reduce, increase, end status...
* After this we apply bg/gvg reduction
*------------------------------------------*/
-int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damage *d,int64 damage,uint16 skill_id,uint16 skill_lv) {
+static int64 battle_calc_damage(struct block_list *src, struct block_list *bl, struct Damage *d, int64 damage, uint16 skill_id, uint16 skill_lv)
+{
struct map_session_data *s_sd, *t_sd;
struct status_change *s_sc, *sc;
struct status_change_entry *sce;
@@ -2870,7 +2876,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
if( sc->data[SC__MAELSTROM] && (flag&BF_MAGIC) && skill_id && (skill->get_inf(skill_id)&INF_GROUND_SKILL) ) {
// {(Maelstrom Skill LevelxAbsorbed Skill Level)+(Caster's Job/5)}/2
int sp = (sc->data[SC__MAELSTROM]->val1 * skill_lv + (t_sd ? t_sd->status.job_level / 5 : 0)) / 2;
- status->heal(bl, 0, sp, 3);
+ status->heal(bl, 0, sp, STATUS_HEAL_FORCED | STATUS_HEAL_SHOWEFFECT);
d->dmg_lv = ATK_BLOCK;
return 0;
}
@@ -3023,7 +3029,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
status_change_end(bl,SC_DEEP_SLEEP,INVALID_TIMER);
}
if( s_sd && t_sd && sc->data[SC_COLD] && flag&BF_WEAPON ){
- switch(s_sd->status.weapon){
+ switch (s_sd->weapontype) {
case W_MACE:
case W_2HMACE:
case W_1HAXE:
@@ -3165,7 +3171,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
if( (sce = sc->data[SC_STONEHARDSKIN]) && flag&(BF_SHORT|BF_WEAPON) && damage > 0 ) {
sce->val2 -= (int)cap_value(damage,INT_MIN,INT_MAX);
if( src->type == BL_PC ) {
- if (s_sd && s_sd->status.weapon != W_BOW)
+ if (s_sd != NULL && s_sd->weapontype != W_BOW)
skill->break_equip(src, EQP_WEAPON, 3000, BCT_SELF);
} else
skill->break_equip(src, EQP_WEAPON, 3000, BCT_SELF);
@@ -3241,7 +3247,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
//(since battle_drain is strictly for players currently)
if ((sce=sc->data[SC_HAMI_BLOODLUST]) && flag&BF_WEAPON && damage > 0 &&
rnd()%100 < sce->val3)
- status->heal(src, damage*sce->val4/100, 0, 3);
+ status->heal(src, damage*sce->val4/100, 0, STATUS_HEAL_FORCED | STATUS_HEAL_SHOWEFFECT);
if( (sce = sc->data[SC_FORCEOFVANGUARD]) && flag&BF_WEAPON
&& rnd()%100 < sce->val2 && sc->fv_counter <= sce->val3 )
@@ -3356,7 +3362,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
return damage;
}
-int64 battle_calc_pc_damage(struct block_list *src, struct block_list *bl, struct Damage *d, int64 damage, uint16 skill_id, uint16 skill_lv)
+static int64 battle_calc_pc_damage(struct block_list *src, struct block_list *bl, struct Damage *d, int64 damage, uint16 skill_id, uint16 skill_lv)
{
int flag = d->flag;
@@ -3391,7 +3397,8 @@ int64 battle_calc_pc_damage(struct block_list *src, struct block_list *bl, struc
* Calculates BG related damage adjustments.
*------------------------------------------*/
// FIXME: flag is undocumented
-int64 battle_calc_bg_damage(struct block_list *src, struct block_list *bl, int64 damage, int div_, uint16 skill_id, uint16 skill_lv, int flag) {
+static int64 battle_calc_bg_damage(struct block_list *src, struct block_list *bl, int64 damage, int div_, uint16 skill_id, uint16 skill_lv, int flag)
+{
if (!damage)
return 0;
@@ -3411,7 +3418,8 @@ int64 battle_calc_bg_damage(struct block_list *src, struct block_list *bl, int64
* Calculates GVG related damage adjustments.
*------------------------------------------*/
// FIXME: flag is undocumented
-int64 battle_calc_gvg_damage(struct block_list *src,struct block_list *bl,int64 damage,int div_,uint16 skill_id,uint16 skill_lv,int flag) {
+static int64 battle_calc_gvg_damage(struct block_list *src, struct block_list *bl, int64 damage, int div_, uint16 skill_id, uint16 skill_lv, int flag)
+{
struct mob_data* md = BL_CAST(BL_MOB, bl);
int class_ = status->get_class(bl);
@@ -3472,7 +3480,8 @@ int64 battle_calc_gvg_damage(struct block_list *src,struct block_list *bl,int64
/*==========================================
* HP/SP drain calculation
*------------------------------------------*/
-int battle_calc_drain(int64 damage, int rate, int per) {
+static int battle_calc_drain(int64 damage, int rate, int per)
+{
int64 diff = 0;
if (per && rnd()%1000 < rate) {
@@ -3490,7 +3499,7 @@ int battle_calc_drain(int64 damage, int rate, int per) {
/*==========================================
* Consumes ammo for the given skill.
*------------------------------------------*/
-void battle_consume_ammo(struct map_session_data *sd, int skill_id, int lv)
+static void battle_consume_ammo(struct map_session_data *sd, int skill_id, int lv)
{
int qty=1;
@@ -3510,7 +3519,8 @@ void battle_consume_ammo(struct map_session_data *sd, int skill_id, int lv)
}
//Skill Range Criteria
-int battle_range_type(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv) {
+static int battle_range_type(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv)
+{
nullpo_retr(BF_SHORT, src);
nullpo_retr(BF_SHORT, target);
@@ -3534,7 +3544,9 @@ int battle_range_type(struct block_list *src, struct block_list *target, uint16
return BF_SHORT;
return BF_LONG;
}
-int battle_adjust_skill_damage(int m, unsigned short skill_id) {
+
+static int battle_adjust_skill_damage(int m, unsigned short skill_id)
+{
if( map->list[m].skill_count ) {
int i;
ARR_FIND(0, map->list[m].skill_count, i, map->list[m].skills[i]->skill_id == skill_id );
@@ -3547,7 +3559,8 @@ int battle_adjust_skill_damage(int m, unsigned short skill_id) {
return 0;
}
-int battle_blewcount_bonus(struct map_session_data *sd, uint16 skill_id) {
+static int battle_blewcount_bonus(struct map_session_data *sd, uint16 skill_id)
+{
int i;
nullpo_ret(sd);
if (!sd->skillblown[0].id)
@@ -3559,13 +3572,15 @@ int battle_blewcount_bonus(struct map_session_data *sd, uint16 skill_id) {
}
return 0;
}
+
//For quick div adjustment.
#define damage_div_fix(dmg, div) do { if ((div) > 1) (dmg)*=(div); else if ((div) < 0) (div)*=-1; } while(0)
/*==========================================
* battle_calc_magic_attack [DracoRPG]
*------------------------------------------*/
// FIXME: mflag is undocumented
-struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list *target,uint16 skill_id,uint16 skill_lv,int mflag) {
+static struct Damage battle_calc_magic_attack(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int mflag)
+{
int nk;
short s_ele = 0;
struct map_session_data *sd = NULL;
@@ -3902,7 +3917,8 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
* Calculate Misc damage for skill_id
*------------------------------------------*/
// FIXME: mflag is undocumented
-struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list *target,uint16 skill_id,uint16 skill_lv,int mflag) {
+static struct Damage battle_calc_misc_attack(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int mflag)
+{
int temp;
short i, nk;
short s_ele;
@@ -4212,16 +4228,16 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list *
hitrate = 80; //Default hitrate
#endif
- if(battle_config.agi_penalty_type && battle_config.agi_penalty_target&target->type) {
- unsigned char attacker_count; //256 max targets should be a sane max
- attacker_count = unit->counttargeted(target);
- if(attacker_count >= battle_config.agi_penalty_count)
- {
+ if (battle_config.agi_penalty_type != 0 && (battle_config.agi_penalty_target & target->type) != 0) {
+ int attacker_count = unit->counttargeted(target);
+ if (attacker_count >= battle_config.agi_penalty_count) {
+ int penalty = (attacker_count - (battle_config.agi_penalty_count - 1)) * battle_config.agi_penalty_num;
if (battle_config.agi_penalty_type == 1)
- flee = (flee * (100 - (attacker_count - (battle_config.agi_penalty_count - 1))*battle_config.agi_penalty_num))/100;
+ flee = flee * (100 - penalty) / 100;
else // assume type 2: absolute reduction
- flee -= (attacker_count - (battle_config.agi_penalty_count - 1))*battle_config.agi_penalty_num;
- if(flee < 1) flee = 1;
+ flee -= penalty;
+ if (flee < 1)
+ flee = 1;
}
}
@@ -4327,18 +4343,21 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list *
}
break;
}
+
+ battle->reflect_trap(target, src, &md, skill_id);
return md;
}
-void battle_calc_misc_attack_unknown(struct block_list *src, struct block_list *target, uint16 *skill_id, uint16 *skill_lv, int *mflag, struct Damage *md) {
+static void battle_calc_misc_attack_unknown(struct block_list *src, struct block_list *target, uint16 *skill_id, uint16 *skill_lv, int *mflag, struct Damage *md)
+{
}
/*==========================================
* battle_calc_weapon_attack (by Skotlex)
*------------------------------------------*/
// FIXME: wflag is undocumented
-struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list *target,uint16 skill_id,uint16 skill_lv,int wflag)
+static struct Damage battle_calc_weapon_attack(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int wflag)
{
short temp=0;
short s_ele, s_ele_;
@@ -4575,8 +4594,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list
if(!skill_id) {
//Skills ALWAYS use ONLY your right-hand weapon (tested on Aegis 10.2)
- if (sd && sd->weapontype1 == 0 && sd->weapontype2 > 0)
- {
+ if (sd && sd->weapontype1 == W_FIST && sd->weapontype2 != W_FIST) {
flag.rh=0;
flag.lh=1;
}
@@ -4649,7 +4667,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list
short cri = sstatus->cri;
if (sd != NULL) {
// if show_katar_crit_bonus is enabled, it already done the calculation in status.c
- if (!battle_config.show_katar_crit_bonus && sd->status.weapon == W_KATAR) {
+ if (!battle_config.show_katar_crit_bonus && sd->weapontype == W_KATAR) {
cri <<= 1;
}
@@ -4737,15 +4755,16 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list
short hitrate = 80; //Default hitrate
#endif
- if(battle_config.agi_penalty_type && battle_config.agi_penalty_target&target->type) {
- unsigned char attacker_count; //256 max targets should be a sane max
- attacker_count = unit->counttargeted(target);
- if(attacker_count >= battle_config.agi_penalty_count) {
+ if (battle_config.agi_penalty_type != 0 && (battle_config.agi_penalty_target & target->type) != 0) {
+ int attacker_count = unit->counttargeted(target);
+ if (attacker_count >= battle_config.agi_penalty_count) {
+ int penalty = (attacker_count - (battle_config.agi_penalty_count - 1)) * battle_config.agi_penalty_num;
if (battle_config.agi_penalty_type == 1)
- flee = (flee * (100 - (attacker_count - (battle_config.agi_penalty_count - 1))*battle_config.agi_penalty_num))/100;
- else //asume type 2: absolute reduction
- flee -= (attacker_count - (battle_config.agi_penalty_count - 1))*battle_config.agi_penalty_num;
- if(flee < 1) flee = 1;
+ flee = flee * (100 - penalty) / 100;
+ else // asume type 2: absolute reduction
+ flee -= penalty;
+ if (flee < 1)
+ flee = 1;
}
}
@@ -4822,8 +4841,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list
if ((temp = pc->checkskill(sd,BS_WEAPONRESEARCH)) > 0)
hitrate += hitrate * ( 2 * temp ) / 100;
- if( (sd->status.weapon == W_1HSWORD || sd->status.weapon == W_DAGGER) &&
- (temp = pc->checkskill(sd, GN_TRAINING_SWORD))>0 )
+ if ((sd->weapontype == W_1HSWORD || sd->weapontype == W_DAGGER) && (temp = pc->checkskill(sd, GN_TRAINING_SWORD)) > 0)
hitrate += 3 * temp;
}
@@ -4957,7 +4975,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list
(!skill_id && sc && sc->data[SC_HLIF_CHANGE]?4:0)|
(sc && sc->data[SC_WEAPONPERFECT]?8:0);
if (flag.arrow && sd)
- switch(sd->status.weapon) {
+ switch (sd->weapontype) {
case W_BOW:
case W_REVOLVER:
case W_GATLING:
@@ -5583,7 +5601,8 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list
if(wd.damage < 1) wd.damage = 1;
if(wd.damage2 < 1) wd.damage2 = 1;
#endif
- } else if(sd->status.weapon == W_KATAR && !skill_id) { //Katars (offhand damage only applies to normal attacks, tested on Aegis 10.2)
+ } else if (sd->weapontype == W_KATAR && skill_id == 0) {
+ // Katars (offhand damage only applies to normal attacks, tested on Aegis 10.2)
temp = pc->checkskill(sd,TF_DOUBLE);
wd.damage2 = wd.damage * (1 + (temp * 2))/100;
@@ -5702,7 +5721,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list
}
//Reject Sword bugreport:4493 by Daegaladh
if (wd.damage != 0 && tsc != NULL && tsc->data[SC_SWORDREJECT] != NULL
- && (sd == NULL || sd->weapontype1 == W_DAGGER || sd->weapontype1 == W_1HSWORD || sd->status.weapon == W_2HSWORD)
+ && (sd == NULL || sd->weapontype1 == W_DAGGER || sd->weapontype1 == W_1HSWORD || sd->weapontype == W_2HSWORD)
&& rnd()%100 < tsc->data[SC_SWORDREJECT]->val2
) {
ATK_RATER(50);
@@ -5725,7 +5744,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list
/*==========================================
* Battle main entry, from skill->attack
*------------------------------------------*/
-struct Damage battle_calc_attack(int attack_type,struct block_list *bl,struct block_list *target,uint16 skill_id,uint16 skill_lv,int count)
+static struct Damage battle_calc_attack(int attack_type, struct block_list *bl, struct block_list *target, uint16 skill_id, uint16 skill_lv, int count)
{
struct Damage d;
struct map_session_data *sd=BL_CAST(BL_PC,bl);
@@ -5787,7 +5806,8 @@ struct Damage battle_calc_attack(int attack_type,struct block_list *bl,struct bl
}
//Performs reflect damage (magic (maya) is performed over skill.c).
-void battle_reflect_damage(struct block_list *target, struct block_list *src, struct Damage *wd,uint16 skill_id) {
+static void battle_reflect_damage(struct block_list *target, struct block_list *src, struct Damage *wd, uint16 skill_id)
+{
int64 damage, rdamage = 0, trdamage = 0;
struct map_session_data *sd, *tsd;
struct status_change *sc;
@@ -5995,7 +6015,38 @@ void battle_reflect_damage(struct block_list *target, struct block_list *src, st
#undef NORMALIZE_RDAMAGE
}
-void battle_drain(struct map_session_data *sd, struct block_list *tbl, int64 rdamage, int64 ldamage, int race, int boss)
+/**
+ * Reflects damage from certain traps, if battle_config.trap_reflect is true.
+ * @param target : Player who triggered the trap
+ * @param src : Player who set the trap
+ * @param md : Trap damage structure
+ * @param skill_id : Trap skill ID
+ */
+static void battle_reflect_trap(struct block_list *target, struct block_list *src, struct Damage *md, uint16 skill_id)
+{
+ if (battle_config.trap_reflect == true) {
+ if (src != target) { // Don't reflect your own damage
+ switch (skill_id) {
+ case HT_CLAYMORETRAP:
+ case HT_LANDMINE:
+ case HT_FREEZINGTRAP:
+ case HT_BLASTMINE:
+ // Needs official info
+ //case RA_CLUSTERBOMB:
+ //case RA_FIRINGTRAP:
+ //case RA_ICEBOUNDTRAP:
+ //case GN_THORNS_TRAP:
+ //case KO_MAKIBISHI:
+ case MA_LANDMINE:
+ case MA_FREEZINGTRAP:
+ battle->reflect_damage(target, src, md, skill_id);
+ break;
+ }
+ }
+ }
+}
+
+static void battle_drain(struct map_session_data *sd, struct block_list *tbl, int64 rdamage, int64 ldamage, int race, int boss)
{
struct weapon_data *wd;
int type, thp = 0, tsp = 0, rhp = 0, rsp = 0, hp, sp, i;
@@ -6048,13 +6099,15 @@ void battle_drain(struct map_session_data *sd, struct block_list *tbl, int64 rda
if (!thp && !tsp) return;
- status->heal(&sd->bl, thp, tsp, battle_config.show_hp_sp_drain ? 3 : 1);
+ status->heal(&sd->bl, thp, tsp, STATUS_HEAL_FORCED | (battle_config.show_hp_sp_drain ? STATUS_HEAL_SHOWEFFECT : STATUS_HEAL_DEFAULT));
if (rhp || rsp)
status_zap(tbl, rhp, rsp);
}
+
// Deals the same damage to targets in area. [pakpil]
-int battle_damage_area(struct block_list *bl, va_list ap) {
+static int battle_damage_area(struct block_list *bl, va_list ap)
+{
int64 tick;
int amotion, dmotion, damage;
struct block_list *src;
@@ -6088,21 +6141,21 @@ int battle_damage_area(struct block_list *bl, va_list ap) {
return 0;
}
-bool battle_check_arrows(struct map_session_data *sd)
+static bool battle_check_arrows(struct map_session_data *sd)
{
int index = sd->equip_index[EQI_AMMO];
if (index < 0) {
if (sd->weapontype1 > W_KATAR && sd->weapontype1 < W_HUUMA)
- clif->skill_fail(sd, 0, USESKILL_FAIL_NEED_MORE_BULLET, 0);
+ clif->skill_fail(sd, 0, USESKILL_FAIL_NEED_MORE_BULLET, 0, 0);
else
clif->arrow_fail(sd, 0);
return false;
}
//Ammo check by Ishizu-chan
if (sd->inventory_data[index]) {
- switch (sd->status.weapon) {
+ switch (sd->weapontype) {
case W_BOW:
- if (sd->inventory_data[index]->look != A_ARROW) {
+ if (sd->inventory_data[index]->subtype != A_ARROW) {
clif->arrow_fail(sd, 0);
return false;
}
@@ -6111,14 +6164,14 @@ bool battle_check_arrows(struct map_session_data *sd)
case W_RIFLE:
case W_GATLING:
case W_SHOTGUN:
- if (sd->inventory_data[index]->look != A_BULLET) {
- clif->skill_fail(sd, 0, USESKILL_FAIL_NEED_MORE_BULLET, 0);
+ if (sd->inventory_data[index]->subtype != A_BULLET) {
+ clif->skill_fail(sd, 0, USESKILL_FAIL_NEED_MORE_BULLET, 0, 0);
return false;
}
break;
case W_GRENADE:
- if (sd->inventory_data[index]->look != A_GRENADE) {
- clif->skill_fail(sd, 0, USESKILL_FAIL_NEED_MORE_BULLET, 0);
+ if (sd->inventory_data[index]->subtype != A_GRENADE) {
+ clif->skill_fail(sd, 0, USESKILL_FAIL_NEED_MORE_BULLET, 0, 0);
return false;
}
break;
@@ -6131,7 +6184,8 @@ bool battle_check_arrows(struct map_session_data *sd)
* Do a basic physical attack (call trough unit_attack_timer)
*------------------------------------------*/
// FIXME: flag is undocumented
-enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* target, int64 tick, int flag) {
+static enum damage_lv battle_weapon_attack(struct block_list *src, struct block_list *target, int64 tick, int flag)
+{
struct map_session_data *sd = NULL, *tsd = NULL;
struct status_data *sstatus, *tstatus;
struct status_change *sc, *tsc;
@@ -6161,7 +6215,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
if (sd)
{
- sd->state.arrow_atk = (sd->status.weapon == W_BOW || (sd->status.weapon >= W_REVOLVER && sd->status.weapon <= W_GRENADE));
+ sd->state.arrow_atk = (sd->weapontype == W_BOW || (sd->weapontype >= W_REVOLVER && sd->weapontype <= W_GRENADE));
if (sd->state.arrow_atk)
{
if (battle->check_arrows(sd) == false)
@@ -6187,7 +6241,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
return ATK_BLOCK;
}
}
- if( tsc && tsc->data[SC_BLADESTOP_WAIT] && !is_boss(src) && (src->type == BL_PC || tsd == NULL || distance_bl(src, target) <= (tsd->status.weapon == W_FIST ? 1 : 2)) )
+ if( tsc && tsc->data[SC_BLADESTOP_WAIT] && !is_boss(src) && (src->type == BL_PC || tsd == NULL || distance_bl(src, target) <= (tsd->weapontype == W_FIST ? 1 : 2)) )
{
uint16 skill_lv = tsc->data[SC_BLADESTOP_WAIT]->val1;
int duration = skill->get_time2(MO_BLADESTOP,skill_lv);
@@ -6385,7 +6439,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
}
if( type != CAST_GROUND ) {
- clif->skill_fail(sd,r_skill,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, r_skill, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return wd.dmg_lv;
}
@@ -6441,7 +6495,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
#undef GET_NORMAL_ATTACK
#undef GET_NORMAL_ATTACK2
-bool battle_check_undead(int race,int element)
+static bool battle_check_undead(int race, int element)
{
if(battle_config.undead_detect_type == 0) {
if(element == ELE_UNDEAD)
@@ -6459,7 +6513,7 @@ bool battle_check_undead(int race,int element)
}
//Returns the upmost level master starting with the given object
-struct block_list *battle_get_master(struct block_list *src)
+static struct block_list *battle_get_master(struct block_list *src)
{
struct block_list *prev = NULL; //Used for infinite loop check (master of yourself?)
nullpo_retr(NULL, src);
@@ -6523,7 +6577,7 @@ struct block_list *battle_get_master(struct block_list *src)
* -1: flag fails
* 0: Invalid target (non-targetable ever)
*------------------------------------------*/
-int battle_check_target( struct block_list *src, struct block_list *target,int flag)
+static int battle_check_target(struct block_list *src, struct block_list *target, int flag)
{
int16 m; //map
int state = 0; //Initial state none
@@ -6679,7 +6733,7 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f
if (t_bl == s_bl)
break;
- if( sd->state.monster_ignore && flag&BCT_ENEMY )
+ if (sd->block_action.immune && flag&BCT_ENEMY)
return 0; // Global immunity only to Attacks
if (sd->status.karma && s_bl->type == BL_PC && BL_UCCAST(BL_PC, s_bl)->status.karma)
state |= BCT_ENEMY; // Characters with bad karma may fight amongst them
@@ -6804,37 +6858,55 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f
return (flag&state)?1:-1;
}
- if( map_flag_vs(m) ) {
+ if (map_flag_vs(m)) {
//Check rivalry settings.
- int sbg_id = 0, tbg_id = 0;
- if( map->list[m].flag.battleground ) {
+ int sbg_id = 0, tbg_id = 0, s_clan = 0, t_clan = 0;
+ if (map->list[m].flag.battleground) {
sbg_id = bg->team_get_id(s_bl);
tbg_id = bg->team_get_id(t_bl);
+ } else if (map->list[m].flag.cvc) {
+ s_clan = clan->get_id(s_bl);
+ t_clan = clan->get_id(t_bl);
}
- if( flag&(BCT_PARTY|BCT_ENEMY) ) {
+ if (flag & (BCT_PARTY | BCT_ENEMY)) {
int s_party = status->get_party_id(s_bl);
int s_guild = status->get_guild_id(s_bl);
+ int t_guild = status->get_guild_id(t_bl);
- if( s_party && s_party == status->get_party_id(t_bl)
- && !(map->list[m].flag.pvp && map->list[m].flag.pvp_noparty)
- && !(map_flag_gvg(m) && map->list[m].flag.gvg_noparty && !( s_guild && s_guild == status->get_guild_id(t_bl) ))
- && (!map->list[m].flag.battleground || sbg_id == tbg_id) )
- state |= BCT_PARTY;
- else
+ if (s_party != 0 && s_party == status->get_party_id(t_bl)) {
+ if (map_flag_gvg(m) && map->list[m].flag.gvg_noparty) {
+ if (s_guild != 0 && t_guild != 0 && (s_guild == t_guild || guild->isallied(s_guild, t_guild)))
+ state |= BCT_PARTY;
+ else
+ state |= flag & BCT_ENEMY ? BCT_ENEMY : BCT_PARTY;
+ } else if (!(map->list[m].flag.pvp && map->list[m].flag.pvp_noparty)
+ && (!map->list[m].flag.battleground || sbg_id == tbg_id)) {
+ state |= BCT_PARTY;
+ } else if (!map->list[m].flag.cvc || s_clan == t_clan) {
+ state |= BCT_PARTY;
+ } else {
+ state |= BCT_ENEMY;
+ }
+ } else {
state |= BCT_ENEMY;
+ }
}
- if( flag&(BCT_GUILD|BCT_ENEMY) ) {
+ if (flag & (BCT_GUILD | BCT_ENEMY)) {
int s_guild = status->get_guild_id(s_bl);
int t_guild = status->get_guild_id(t_bl);
- if( !(map->list[m].flag.pvp && map->list[m].flag.pvp_noguild)
+ if (!(map->list[m].flag.pvp && map->list[m].flag.pvp_noguild)
&& s_guild && t_guild
- && (s_guild == t_guild || (!(flag&BCT_SAMEGUILD) && guild->isallied(s_guild, t_guild)))
- && (!map->list[m].flag.battleground || sbg_id == tbg_id) )
+ && (s_guild == t_guild || (!(flag & BCT_SAMEGUILD) && guild->isallied(s_guild, t_guild)))
+ && (!map->list[m].flag.battleground || sbg_id == tbg_id)
+ && (!map->list[m].flag.cvc || s_clan == t_clan)
+ ) {
state |= BCT_GUILD;
- else
+ } else {
state |= BCT_ENEMY;
+ }
}
- if( state&BCT_ENEMY && map->list[m].flag.battleground && sbg_id && sbg_id == tbg_id )
+
+ if (state & BCT_ENEMY && ((map->list[m].flag.battleground && sbg_id && sbg_id == tbg_id) || (map->list[m].flag.cvc && s_clan && s_clan == t_clan)))
state &= ~BCT_ENEMY;
if (state&BCT_ENEMY && battle_config.pk_mode && !map_flag_gvg(m) && s_bl->type == BL_PC && t_bl->type == BL_PC) {
@@ -6874,11 +6946,12 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f
return (flag&state)?1:-1;
}
+
/*==========================================
* Check if can attack from this range
* Basic check then calling path->search for obstacle etc..
*------------------------------------------*/
-bool battle_check_range(struct block_list *src, struct block_list *bl, int range)
+static bool battle_check_range(struct block_list *src, struct block_list *bl, int range)
{
int d;
nullpo_retr(false, src);
@@ -6966,7 +7039,7 @@ static const struct battle_data {
{ "chase_range_rate", &battle_config.chase_range_rate, 100, 0, INT_MAX, },
{ "gtb_sc_immunity", &battle_config.gtb_sc_immunity, 50, 0, INT_MAX, },
{ "guild_max_castles", &battle_config.guild_max_castles, 0, 0, INT_MAX, },
- { "guild_skill_relog_delay", &battle_config.guild_skill_relog_delay, 0, 0, 1, },
+ { "guild_skill_relog_delay", &battle_config.guild_skill_relog_delay, 0, 0, 2, },
{ "emergency_call", &battle_config.emergency_call, 11, 0, 31, },
{ "atcommand_spawn_quantity_limit", &battle_config.atc_spawn_quantity_limit, 100, 0, INT_MAX, },
{ "atcommand_slave_clone_limit", &battle_config.atc_slave_clone_limit, 25, 0, INT_MAX, },
@@ -7025,14 +7098,15 @@ static const struct battle_data {
{ "max_heal_lv", &battle_config.max_heal_lv, 11, 1, INT_MAX, },
{ "max_heal", &battle_config.max_heal, 9999, 0, INT_MAX, },
{ "combo_delay_rate", &battle_config.combo_delay_rate, 100, 0, INT_MAX, },
- { "item_check", &battle_config.item_check, 0, 0, 1, },
+ { "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, },
@@ -7087,6 +7161,7 @@ static const struct battle_data {
{ "vending_over_max", &battle_config.vending_over_max, 1, 0, 1, },
{ "show_steal_in_same_party", &battle_config.show_steal_in_same_party, 0, 0, 1, },
{ "party_hp_mode", &battle_config.party_hp_mode, 0, 0, 1, },
+ { "party_change_leader_same_map", &battle_config.party_change_leader_same_map, 0, 0, 1, },
{ "show_party_share_picker", &battle_config.party_show_share_picker, 1, 0, 1, },
{ "show_picker_item_type", &battle_config.show_picker_item_type, 112, 0, INT_MAX, },
{ "party_update_interval", &battle_config.party_update_interval, 1000, 100, INT_MAX, },
@@ -7168,6 +7243,7 @@ static const struct battle_data {
{ "vcast_stat_scale", &battle_config.vcast_stat_scale, 530, 1, INT_MAX, },
{ "area_size", &battle_config.area_size, 14, 0, INT_MAX, },
{ "chat_area_size", &battle_config.chat_area_size, 9, 0, INT_MAX, },
+ { "dead_area_size", &battle_config.dead_area_size, 32, 0, INT_MAX, },
{ "zeny_from_mobs", &battle_config.zeny_from_mobs, 0, 0, 1, },
{ "mobs_level_up", &battle_config.mobs_level_up, 0, 0, 1, },
{ "mobs_level_up_exp_rate", &battle_config.mobs_level_up_exp_rate, 1, 1, INT_MAX, },
@@ -7201,7 +7277,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, },
@@ -7275,6 +7350,7 @@ static const struct battle_data {
{ "atcommand_max_stat_bypass", &battle_config.atcommand_max_stat_bypass, 0, 0, 100, },
{ "skill_amotion_leniency", &battle_config.skill_amotion_leniency, 90, 0, 300 },
{ "mvp_tomb_enabled", &battle_config.mvp_tomb_enabled, 1, 0, 1 },
+ { "mvp_tomb_spawn_delay", &battle_config.mvp_tomb_spawn_delay, 10000, 0, INT_MAX },
{ "features/atcommand_suggestions", &battle_config.atcommand_suggestions_enabled, 0, 0, 1 },
{ "min_npc_vendchat_distance", &battle_config.min_npc_vendchat_distance, 3, 0, 100 },
{ "vendchat_near_hiddennpc", &battle_config.vendchat_near_hiddennpc, 0, 0, 1 },
@@ -7287,6 +7363,7 @@ static const struct battle_data {
* Hercules
**/
{ "skill_trap_type", &battle_config.skill_trap_type, 0, 0, 1, },
+ { "trap_reflect", &battle_config.trap_reflect, 1, 0, 1, },
{ "item_restricted_consumption_type", &battle_config.item_restricted_consumption_type,1, 0, 1, },
{ "unequip_restricted_equipment", &battle_config.unequip_restricted_equipment, 0, 0, 3, },
{ "max_walk_path", &battle_config.max_walk_path, 17, 1, MAX_WALKPATH, },
@@ -7319,173 +7396,26 @@ static const struct battle_data {
{ "max_body_style", &battle_config.max_body_style, 4, 0, SHRT_MAX, },
{ "save_body_style", &battle_config.save_body_style, 0, 0, 1, },
{ "player_warp_keep_direction", &battle_config.player_warp_keep_direction, 0, 0, 1, },
- { "atcommand_levelup_events", &battle_config.atcommand_levelup_events, 0, 0, 1, },
+ { "atcommand_levelup_events", &battle_config.atcommand_levelup_events, 0, 0, 1, },
+ { "bow_unequip_arrow", &battle_config.bow_unequip_arrow, 1, 0, 1, },
{ "max_summoner_parameter", &battle_config.max_summoner_parameter, 120, 10, 10000, },
+ { "mvp_exp_reward_message", &battle_config.mvp_exp_reward_message, 0, 0, 1, },
+ { "monster_eye_range_bonus", &battle_config.mob_eye_range_bonus, 0, 0, 10, },
+ { "prevent_logout_trigger", &battle_config.prevent_logout_trigger, 0xE, 0, 0xF, },
+ { "boarding_halter_speed", &battle_config.boarding_halter_speed, 25, 0, 100, },
+ { "features/rodex", &battle_config.feature_rodex, 1, 0, 1, },
+ { "features/rodex_use_accountmail", &battle_config.feature_rodex_use_accountmail, 0, 0, 1, },
+ { "features/enable_homun_autofeed", &battle_config.feature_enable_homun_autofeed, 1, 0, 1, },
+ { "features/enable_pet_autofeed", &battle_config.feature_enable_pet_autofeed, 1, 0, 1, },
+ { "storage_use_item", &battle_config.storage_use_item, 0, 0, 1, },
+ { "features/enable_attendance_system", &battle_config.feature_enable_attendance_system,1, 0, 1, },
+ { "features/feature_attendance_endtime",&battle_config.feature_attendance_endtime, 1, 0, 99999999, },
+ { "min_item_buy_price", &battle_config.min_item_buy_price, 1, 0, INT_MAX, },
+ { "min_item_sell_price", &battle_config.min_item_sell_price, 0, 0, INT_MAX, },
+ { "display_fake_hp_when_dead", &battle_config.display_fake_hp_when_dead, 1, 0, 1, },
};
-#ifndef STATS_OPT_OUT
-/**
- * Hercules anonymous statistic usage report -- packet is built here, and sent to char server to report.
- **/
-void Hercules_report(char* date, char *time_c) {
- int i, bd_size = ARRAYLENGTH(battle_data);
- unsigned int config = 0;
- char timestring[25];
- time_t curtime;
- char* buf;
-
- enum config_table {
- C_CIRCULAR_AREA = 0x0001,
- C_CELLNOSTACK = 0x0002,
- C_CONSOLE_INPUT = 0x0004,
- C_SCRIPT_CALLFUNC_CHECK = 0x0008,
- C_OFFICIAL_WALKPATH = 0x0010,
- C_RENEWAL = 0x0020,
- C_RENEWAL_CAST = 0x0040,
- C_RENEWAL_DROP = 0x0080,
- C_RENEWAL_EXP = 0x0100,
- C_RENEWAL_LVDMG = 0x0200,
- C_RENEWAL_EDP = 0x0400,
- C_RENEWAL_ASPD = 0x0800,
- C_SECURE_NPCTIMEOUT = 0x1000,
- //C_SQL_DB_ITEM = 0x2000,
- C_SQL_LOGS = 0x4000,
- C_MEMWATCH = 0x8000,
- C_DMALLOC = 0x10000,
- C_GCOLLECT = 0x20000,
- C_SEND_SHORTLIST = 0x40000,
- //C_SQL_DB_MOB = 0x80000,
- //C_SQL_DB_MOBSKILL = 0x100000,
- C_PACKETVER_RE = 0x200000,
- };
-
- /* we get the current time */
- time(&curtime);
- strftime(timestring, 24, "%Y-%m-%d %H:%M:%S", localtime(&curtime));
-
-#ifdef CIRCULAR_AREA
- config |= C_CIRCULAR_AREA;
-#endif
-#ifdef CELL_NOSTACK
- config |= C_CELLNOSTACK;
-#endif
-
-#ifdef CONSOLE_INPUT
- config |= C_CONSOLE_INPUT;
-#endif
-
-#ifdef SCRIPT_CALLFUNC_CHECK
- config |= C_SCRIPT_CALLFUNC_CHECK;
-#endif
-
-#ifdef OFFICIAL_WALKPATH
- config |= C_OFFICIAL_WALKPATH;
-#endif
-
-#ifdef RENEWAL
- config |= C_RENEWAL;
-#endif
-
-#ifdef RENEWAL_CAST
- config |= C_RENEWAL_CAST;
-#endif
-
-#ifdef RENEWAL_DROP
- config |= C_RENEWAL_DROP;
-#endif
-
-#ifdef RENEWAL_EXP
- config |= C_RENEWAL_EXP;
-#endif
-
-#ifdef RENEWAL_LVDMG
- config |= C_RENEWAL_LVDMG;
-#endif
-
-#ifdef RENEWAL_EDP
- config |= C_RENEWAL_EDP;
-#endif
-
-#ifdef RENEWAL_ASPD
- config |= C_RENEWAL_ASPD;
-#endif
-
-#ifdef SECURE_NPCTIMEOUT
- config |= C_SECURE_NPCTIMEOUT;
-#endif
-
-#ifdef PACKETVER_RE
- config |= C_PACKETVER_RE;
-#endif
-
- /* non-define part */
- if( logs->config.sql_logs )
- config |= C_SQL_LOGS;
-
-#ifdef MEMWATCH
- config |= C_MEMWATCH;
-#endif
-#ifdef DMALLOC
- config |= C_DMALLOC;
-#endif
-#ifdef GCOLLECT
- config |= C_GCOLLECT;
-#endif
-
-#ifdef SEND_SHORTLIST
- config |= C_SEND_SHORTLIST;
-#endif
-
-#define BFLAG_LENGTH 35
-
- CREATE(buf, char, 262 + ( bd_size * ( BFLAG_LENGTH + 4 ) ) + 1 );
-
- /* build packet */
-
- WBUFW(buf,0) = 0x3000;
- WBUFW(buf,2) = 262 + ( bd_size * ( BFLAG_LENGTH + 4 ) );
- WBUFW(buf,4) = 0x9f;
-
- safestrncpy(WBUFP(buf,6), date, 12);
- safestrncpy(WBUFP(buf,18), time_c, 9);
- safestrncpy(WBUFP(buf,27), timestring, 24);
-
- safestrncpy(WBUFP(buf,51), sysinfo->platform(), 16);
- safestrncpy(WBUFP(buf,67), sysinfo->osversion(), 50);
- safestrncpy(WBUFP(buf,117), sysinfo->cpu(), 32);
- WBUFL(buf,149) = sysinfo->cpucores();
- safestrncpy(WBUFP(buf,153), sysinfo->arch(), 8);
- WBUFB(buf,161) = sysinfo->vcstypeid();
- WBUFB(buf,162) = sysinfo->is64bit();
- safestrncpy(WBUFP(buf,163), sysinfo->vcsrevision_src(), 41);
- safestrncpy(WBUFP(buf,204), sysinfo->vcsrevision_scripts(), 41);
- WBUFB(buf,245) = (sysinfo->is_superuser()? 1 : 0);
- WBUFL(buf,246) = map->getusers();
-
- WBUFL(buf,250) = config;
- WBUFL(buf,254) = PACKETVER;
-
- WBUFL(buf,258) = bd_size;
- for( i = 0; i < bd_size; i++ ) {
- safestrncpy(WBUFP(buf,262 + ( i * ( BFLAG_LENGTH + 4 ) ) ), battle_data[i].str, BFLAG_LENGTH);
- WBUFL(buf,262 + BFLAG_LENGTH + ( i * ( BFLAG_LENGTH + 4 ) ) ) = *battle_data[i].val;
- }
-
- chrif->send_report(buf, 262 + ( bd_size * ( BFLAG_LENGTH + 4 ) ) );
-
- aFree(buf);
-
-#undef BFLAG_LENGTH
-}
-static int Hercules_report_timer(int tid, int64 tick, int id, intptr_t data) {
- if( chrif->isconnected() ) {/* char server relays it, so it must be online. */
- Hercules_report(__DATE__,__TIME__);
- }
- return 0;
-}
-#endif
-
-bool battle_set_value_sub(int index, int value)
+static bool battle_set_value_sub(int index, int value)
{
Assert_retr(false, index >= 0);
if (value < battle_data[index].min || value > battle_data[index].max) {
@@ -7497,7 +7427,7 @@ bool battle_set_value_sub(int index, int value)
return true;
}
-bool battle_set_value(const char *param, const char *value)
+static bool battle_set_value(const char *param, const char *value)
{
int val;
int i;
@@ -7517,7 +7447,7 @@ bool battle_set_value(const char *param, const char *value)
return battle->config_set_value_sub(i, val);
}
-bool battle_get_value(const char *w1, int *value)
+static bool battle_get_value(const char *w1, int *value)
{
int i;
@@ -7536,13 +7466,15 @@ bool battle_get_value(const char *w1, int *value)
return false;
}
-void battle_set_defaults(void) {
+static void battle_set_defaults(void)
+{
int i;
for (i = 0; i < ARRAYLENGTH(battle_data); i++)
*battle_data[i].val = battle_data[i].defval;
}
-void battle_adjust_conf(void) {
+static void battle_adjust_conf(void)
+{
battle_config.monster_max_aspd = 2000 - battle_config.monster_max_aspd*10;
battle_config.max_aspd = 2000 - battle_config.max_aspd*10;
battle_config.max_third_aspd = 2000 - battle_config.max_third_aspd*10;
@@ -7599,6 +7531,13 @@ void battle_adjust_conf(void) {
}
#endif
+#if PACKETVER < 20131223
+ if (battle_config.mvp_exp_reward_message) {
+ ShowWarning("conf/map/battle/client.conf MVP EXP reward message is enabled but it requires PACKETVER 2013-12-23 or newer, disabling...\n");
+ battle_config.mvp_exp_reward_message = 0;
+ }
+#endif
+
#ifndef CELL_NOSTACK
if (battle_config.custom_cell_stack_limit != 1)
ShowWarning("Battle setting 'custom_cell_stack_limit' takes no effect as this server was compiled without Cell Stack Limit support.\n");
@@ -7612,7 +7551,7 @@ void battle_adjust_conf(void) {
* @param imported Whether the current config is imported from another file.
* @retval false in case of error.
*/
-bool battle_config_read(const char *filename, bool imported)
+static bool battle_config_read(const char *filename, bool imported)
{
struct config_t config;
const struct config_setting_t *setting = NULL;
@@ -7679,26 +7618,23 @@ bool battle_config_read(const char *filename, bool imported)
return retval;
}
-void do_init_battle(bool minimal) {
+static void do_init_battle(bool minimal)
+{
if (minimal)
return;
battle->delay_damage_ers = ers_new(sizeof(struct delay_damage),"battle.c::delay_damage_ers",ERS_OPT_CLEAR);
timer->add_func_list(battle->delay_damage_sub, "battle_delay_damage_sub");
-
-#ifndef STATS_OPT_OUT
- timer->add_func_list(Hercules_report_timer, "Hercules_report_timer");
- timer->add_interval(timer->gettick()+30000, Hercules_report_timer, 0, 0, 60000 * 30);
-#endif
-
}
-void do_final_battle(void) {
+static void do_final_battle(void)
+{
ers_destroy(battle->delay_damage_ers);
}
/* initialize the interface */
-void battle_defaults(void) {
+void battle_defaults(void)
+{
battle = &battle_s;
battle->bc = &battle_config;
@@ -7720,6 +7656,7 @@ void battle_defaults(void) {
battle->delay_damage = battle_delay_damage;
battle->drain = battle_drain;
battle->reflect_damage = battle_reflect_damage;
+ battle->reflect_trap = battle_reflect_trap;
battle->attr_ratio = battle_attr_ratio;
battle->attr_fix = battle_attr_fix;
battle->calc_cardfix = battle_calc_cardfix;
diff --git a/src/map/battle.h b/src/map/battle.h
index c55d5ef19..d2fd92450 100644
--- a/src/map/battle.h
+++ b/src/map/battle.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -54,6 +54,7 @@ struct status_data;
enum {
// Flag of the final calculation
+ BF_NONE = 0x0000,
BF_WEAPON = 0x0001,
BF_MAGIC = 0x0002,
BF_MISC = 0x0004,
@@ -240,12 +241,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;
@@ -297,6 +299,7 @@ struct Battle_Config {
int show_steal_in_same_party;
int party_share_type;
int party_hp_mode;
+ int party_change_leader_same_map;
int party_show_share_picker;
int show_picker_item_type;
int attack_attr_none;
@@ -363,6 +366,7 @@ struct Battle_Config {
int castrate_dex_scale; // added by [MouseJstr]
int area_size; // added by [MouseJstr]
int chat_area_size; // added by [gumi]
+ int dead_area_size; // Monster die area [KirieZ]
int max_def, over_def_bonus; //added by [Skotlex]
@@ -407,7 +411,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]
@@ -488,6 +491,7 @@ struct Battle_Config {
int vcast_stat_scale;
int mvp_tomb_enabled;
+ int mvp_tomb_spawn_delay;
int atcommand_suggestions_enabled;
int min_npc_vendchat_distance;
@@ -502,6 +506,7 @@ struct Battle_Config {
/** Hercules **/
int skill_trap_type;
+ int trap_reflect;
int item_restricted_consumption_type;
int unequip_restricted_equipment;
int max_walk_path;
@@ -544,9 +549,33 @@ struct Battle_Config {
// Warp Face Direction
int player_warp_keep_direction;
- int atcommand_levelup_events; // Enable atcommands trigger level up events for NPCs
+ int atcommand_levelup_events; // Enable atcommands trigger level up events for NPCs
+
+ int bow_unequip_arrow;
int max_summoner_parameter; // Summoner Max Stats
+ int mvp_exp_reward_message;
+
+ int mob_eye_range_bonus; //Vulture's Eye and Snake's Eye range bonus
+
+ int prevent_logout_trigger;
+ int boarding_halter_speed;
+
+ int feature_rodex;
+ int feature_rodex_use_accountmail;
+
+ int feature_enable_homun_autofeed;
+ int feature_enable_pet_autofeed;
+
+ int storage_use_item;
+
+ int feature_enable_attendance_system;
+ int feature_attendance_endtime;
+
+ int min_item_buy_price;
+ int min_item_sell_price;
+
+ int display_fake_hp_when_dead;
};
/* criteria for battle_config.idletime_critera */
@@ -561,6 +590,7 @@ enum e_battle_config_idletime {
BCIDLE_EMOTION = 0x080,
BCIDLE_DROPITEM = 0x100,
BCIDLE_ATCOMMAND = 0x200,
+ BCIDLE_SCRIPT = 0x400,
};
// Damage delayed info
@@ -613,6 +643,8 @@ struct battle_interface {
void (*drain) (struct map_session_data *sd, struct block_list *tbl, int64 rdamage, int64 ldamage, int race, int boss);
/* damage reflect */
void (*reflect_damage) (struct block_list *target, struct block_list *src, struct Damage *wd,uint16 skill_id);
+ /* trap reflect */
+ void(*reflect_trap) (struct block_list *target, struct block_list *src, struct Damage *md, uint16 skill_id);
/* attribute rate */
int (*attr_ratio) (int atk_elem, int def_type, int def_lv);
/* applies attribute modifiers */
diff --git a/src/map/battleground.c b/src/map/battleground.c
index cd7178951..c2772a2b9 100644
--- a/src/map/battleground.c
+++ b/src/map/battleground.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -47,16 +47,18 @@
#include <stdio.h>
#include <string.h>
-struct battleground_interface bg_s;
+static struct battleground_interface bg_s;
struct battleground_interface *bg;
/// Search a BG Team using bg_id
-struct battleground_data* bg_team_search(int bg_id) {
+static struct battleground_data* bg_team_search(int bg_id)
+{
if( !bg_id ) return NULL;
return (struct battleground_data *)idb_get(bg->team_db, bg_id);
}
-struct map_session_data* bg_getavailablesd(struct battleground_data *bgd) {
+static struct map_session_data* bg_getavailablesd(struct battleground_data *bgd)
+{
int i;
nullpo_retr(NULL, bgd);
ARR_FIND(0, MAX_BG_MEMBERS, i, bgd->members[i].sd != NULL);
@@ -64,7 +66,8 @@ struct map_session_data* bg_getavailablesd(struct battleground_data *bgd) {
}
/// Deletes BG Team from db
-bool bg_team_delete(int bg_id) {
+static bool bg_team_delete(int bg_id)
+{
int i;
struct battleground_data *bgd = bg->team_search(bg_id);
@@ -82,7 +85,8 @@ bool bg_team_delete(int bg_id) {
}
/// Warps a Team
-bool bg_team_warp(int bg_id, unsigned short map_index, short x, short y) {
+static bool bg_team_warp(int bg_id, unsigned short map_index, short x, short y)
+{
int i;
struct battleground_data *bgd = bg->team_search(bg_id);
if( bgd == NULL ) return false;
@@ -91,13 +95,15 @@ bool bg_team_warp(int bg_id, unsigned short map_index, short x, short y) {
return true;
}
-void bg_send_dot_remove(struct map_session_data *sd) {
+static void bg_send_dot_remove(struct map_session_data *sd)
+{
if( sd && sd->bg_id )
clif->bg_xy_remove(sd);
}
/// Player joins team
-bool bg_team_join(int bg_id, struct map_session_data *sd) {
+static bool bg_team_join(int bg_id, struct map_session_data *sd)
+{
int i;
struct battleground_data *bgd = bg->team_search(bg_id);
@@ -135,7 +141,8 @@ bool bg_team_join(int bg_id, struct map_session_data *sd) {
}
/// Single Player leaves team
-int bg_team_leave(struct map_session_data *sd, enum bg_team_leave_type flag) {
+static int bg_team_leave(struct map_session_data *sd, enum bg_team_leave_type flag)
+{
int i, bg_id;
struct battleground_data *bgd;
@@ -185,7 +192,8 @@ int bg_team_leave(struct map_session_data *sd, enum bg_team_leave_type flag) {
}
/// Respawn after killed
-bool bg_member_respawn(struct map_session_data *sd) {
+static bool bg_member_respawn(struct map_session_data *sd)
+{
struct battleground_data *bgd;
if( sd == NULL || !pc_isdead(sd) || !sd->bg_id || (bgd = bg->team_search(sd->bg_id)) == NULL )
return false;
@@ -197,7 +205,8 @@ bool bg_member_respawn(struct map_session_data *sd) {
return true; // Warped
}
-int bg_create(unsigned short map_index, short rx, short ry, const char *ev, const char *dev) {
+static int bg_create(unsigned short map_index, short rx, short ry, const char *ev, const char *dev)
+{
struct battleground_data *bgd;
bg->team_counter++;
@@ -216,7 +225,8 @@ int bg_create(unsigned short map_index, short rx, short ry, const char *ev, cons
return bgd->bg_id;
}
-int bg_team_get_id(struct block_list *bl) {
+static int bg_team_get_id(struct block_list *bl)
+{
nullpo_ret(bl);
switch( bl->type ) {
case BL_PC:
@@ -265,7 +275,7 @@ int bg_team_get_id(struct block_list *bl) {
return 0;
}
-bool bg_send_message(struct map_session_data *sd, const char *mes)
+static bool bg_send_message(struct map_session_data *sd, const char *mes)
{
struct battleground_data *bgd;
@@ -280,7 +290,7 @@ bool bg_send_message(struct map_session_data *sd, const char *mes)
/**
* @see DBApply
*/
-int bg_send_xy_timer_sub(union DBKey key, struct DBData *data, va_list ap)
+static int bg_send_xy_timer_sub(union DBKey key, struct DBData *data, va_list ap)
{
struct battleground_data *bgd = DB->data2ptr(data);
struct map_session_data *sd;
@@ -298,12 +308,14 @@ int bg_send_xy_timer_sub(union DBKey key, struct DBData *data, va_list ap)
return 0;
}
-int bg_send_xy_timer(int tid, int64 tick, int id, intptr_t data) {
+static int bg_send_xy_timer(int tid, int64 tick, int id, intptr_t data)
+{
bg->team_db->foreach(bg->team_db, bg->send_xy_timer_sub, tick);
return 0;
}
-enum bg_queue_types bg_str2teamtype (const char *str) {
+static enum bg_queue_types bg_str2teamtype(const char *str)
+{
char temp[200], *parse;
enum bg_queue_types type = BGQT_INVALID;
@@ -331,7 +343,8 @@ enum bg_queue_types bg_str2teamtype (const char *str) {
return type;
}
-void bg_config_read(void) {
+static void bg_config_read(void)
+{
struct config_t bg_conf;
struct config_setting_t *data = NULL;
const char *config_filename = "conf/battlegrounds.conf"; // FIXME hardcoded name
@@ -497,7 +510,8 @@ void bg_config_read(void) {
}
libconfig->destroy(&bg_conf);
}
-struct bg_arena *bg_name2arena(const char *name)
+
+static struct bg_arena *bg_name2arena(const char *name)
{
int i;
nullpo_retr(NULL, name);
@@ -517,7 +531,7 @@ struct bg_arena *bg_name2arena(const char *name)
* @return the position (starting at 1).
* @retval 0 if the queue doesn't exist or the given account ID isn't present in it.
*/
-int bg_id2pos(int queue_id, int account_id)
+static int bg_id2pos(int queue_id, int account_id)
{
struct script_queue *queue = script->queue(queue_id);
if (queue) {
@@ -530,7 +544,7 @@ int bg_id2pos(int queue_id, int account_id)
return 0;
}
-void bg_queue_ready_ack(struct bg_arena *arena, struct map_session_data *sd, bool response)
+static void bg_queue_ready_ack(struct bg_arena *arena, struct map_session_data *sd, bool response)
{
nullpo_retv(arena);
nullpo_retv(sd);
@@ -561,7 +575,8 @@ void bg_queue_ready_ack(struct bg_arena *arena, struct map_session_data *sd, boo
}
}
-void bg_queue_player_cleanup(struct map_session_data *sd) {
+static void bg_queue_player_cleanup(struct map_session_data *sd)
+{
nullpo_retv(sd);
if ( sd->bg_queue.client_has_bg_data ) {
if( sd->bg_queue.arena )
@@ -576,7 +591,9 @@ void bg_queue_player_cleanup(struct map_session_data *sd) {
sd->bg_queue.client_has_bg_data = 0;
sd->bg_queue.type = 0;
}
-void bg_match_over(struct bg_arena *arena, bool canceled) {
+
+static void bg_match_over(struct bg_arena *arena, bool canceled)
+{
struct script_queue *queue = script->queue(arena->queue_id);
int i;
@@ -598,7 +615,7 @@ void bg_match_over(struct bg_arena *arena, bool canceled) {
if (canceled)
clif->messagecolor_self(sd->fd, COLOR_RED, "BG Match Canceled: not enough players");
else
- pc_setglobalreg(sd, script->add_str(arena->delay_var), (unsigned int)time(NULL));
+ pc_setglobalreg(sd, script->add_variable(arena->delay_var), (unsigned int)time(NULL));
}
arena->begin_timer = INVALID_TIMER;
@@ -606,7 +623,9 @@ void bg_match_over(struct bg_arena *arena, bool canceled) {
/* reset queue */
script->queue_clear(arena->queue_id);
}
-void bg_begin(struct bg_arena *arena) {
+
+static void bg_begin(struct bg_arena *arena)
+{
struct script_queue *queue = script->queue(arena->queue_id);
int i, count = 0;
@@ -635,8 +654,8 @@ void bg_begin(struct bg_arena *arena) {
bg->afk_timer_id = timer->add(timer->gettick()+10000,bg->afk_timer,0,0);
/* TODO: make this a arena-independent var? or just .@? */
- mapreg->setreg(script->add_str("$@bg_queue_id"),arena->queue_id);
- mapreg->setregstr(script->add_str("$@bg_delay_var$"),bg->gdelay_var);
+ mapreg->setreg(script->add_variable("$@bg_queue_id"),arena->queue_id);
+ mapreg->setregstr(script->add_variable("$@bg_delay_var$"),bg->gdelay_var);
count = 0;
for (i = 0; i < VECTOR_LENGTH(queue->entries); i++) {
@@ -645,31 +664,34 @@ void bg_begin(struct bg_arena *arena) {
if (sd == NULL || sd->bg_queue.ready != 1)
continue;
- mapreg->setreg(reference_uid(script->add_str("$@bg_member"), count), sd->status.account_id);
- mapreg->setreg(reference_uid(script->add_str("$@bg_member_group"), count),
+ mapreg->setreg(reference_uid(script->add_variable("$@bg_member"), count), sd->status.account_id);
+ mapreg->setreg(reference_uid(script->add_variable("$@bg_member_group"), count),
sd->bg_queue.type == BGQT_GUILD ? sd->status.guild_id :
sd->bg_queue.type == BGQT_PARTY ? sd->status.party_id :
0
);
- mapreg->setreg(reference_uid(script->add_str("$@bg_member_type"), count),
+ mapreg->setreg(reference_uid(script->add_variable("$@bg_member_type"), count),
sd->bg_queue.type == BGQT_GUILD ? 1 :
sd->bg_queue.type == BGQT_PARTY ? 2 :
0
);
count++;
}
- mapreg->setreg(script->add_str("$@bg_member_size"),count);
+ mapreg->setreg(script->add_variable("$@bg_member_size"),count);
npc->event_do(arena->npc_event);
}
}
-int bg_begin_timer(int tid, int64 tick, int id, intptr_t data) {
+
+static int bg_begin_timer(int tid, int64 tick, int id, intptr_t data)
+{
bg->begin(bg->arena[id]);
bg->arena[id]->begin_timer = INVALID_TIMER;
return 0;
}
-int bg_afk_timer(int tid, int64 tick, int id, intptr_t data) {
+static int bg_afk_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct s_mapiterator* iter;
struct map_session_data* sd;
int count = 0;
@@ -691,7 +713,8 @@ int bg_afk_timer(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-void bg_queue_pregame(struct bg_arena *arena) {
+static void bg_queue_pregame(struct bg_arena *arena)
+{
struct script_queue *queue;
int i;
nullpo_retv(arena);
@@ -706,13 +729,16 @@ void bg_queue_pregame(struct bg_arena *arena) {
}
arena->begin_timer = timer->add( timer->gettick() + (arena->pregame_duration*1000), bg->begin_timer, arena->id, 0 );
}
-int bg_fillup_timer(int tid, int64 tick, int id, intptr_t data) {
+
+static int bg_fillup_timer(int tid, int64 tick, int id, intptr_t data)
+{
bg->queue_pregame(bg->arena[id]);
bg->arena[id]->fillup_timer = INVALID_TIMER;
return 0;
}
-void bg_queue_check(struct bg_arena *arena) {
+static void bg_queue_check(struct bg_arena *arena)
+{
int count;
struct script_queue *queue;
nullpo_retv(arena);
@@ -729,7 +755,9 @@ void bg_queue_check(struct bg_arena *arena) {
arena->fillup_timer = timer->add( timer->gettick() + (arena->fillup_duration*1000), bg->fillup_timer, arena->id, 0 );
}
}
-void bg_queue_add(struct map_session_data *sd, struct bg_arena *arena, enum bg_queue_types type) {
+
+static void bg_queue_add(struct map_session_data *sd, struct bg_arena *arena, enum bg_queue_types type)
+{
enum BATTLEGROUNDS_QUEUE_ACK result = bg->can_queue(sd,arena,type);
struct script_queue *queue = NULL;
int i, count = 0;
@@ -810,7 +838,9 @@ void bg_queue_add(struct map_session_data *sd, struct bg_arena *arena, enum bg_q
clif->bgqueue_ack(sd,BGQA_SUCCESS,arena->id);
bg->queue_check(arena);
}
-enum BATTLEGROUNDS_QUEUE_ACK bg_canqueue(struct map_session_data *sd, struct bg_arena *arena, enum bg_queue_types type) {
+
+static enum BATTLEGROUNDS_QUEUE_ACK bg_canqueue(struct map_session_data *sd, struct bg_arena *arena, enum bg_queue_types type)
+{
int tick;
unsigned int tsec;
@@ -827,7 +857,7 @@ enum BATTLEGROUNDS_QUEUE_ACK bg_canqueue(struct map_session_data *sd, struct bg_
tsec = (unsigned int)time(NULL);
- if ( ( tick = pc_readglobalreg(sd, script->add_str(bg->gdelay_var)) ) && tsec < tick ) {
+ if ( ( tick = pc_readglobalreg(sd, script->add_variable(bg->gdelay_var)) ) && tsec < tick ) {
char response[100];
if( (tick-tsec) > 60 )
sprintf(response, "You are a deserter! Wait %u minute(s) before you can apply again", (tick - tsec) / 60);
@@ -837,7 +867,7 @@ enum BATTLEGROUNDS_QUEUE_ACK bg_canqueue(struct map_session_data *sd, struct bg_
return BGQA_FAIL_DESERTER;
}
- if ( ( tick = pc_readglobalreg(sd, script->add_str(arena->delay_var)) ) && tsec < tick ) {
+ if ( ( tick = pc_readglobalreg(sd, script->add_variable(arena->delay_var)) ) && tsec < tick ) {
char response[100];
if( (tick-tsec) > 60 )
sprintf(response, "You can't reapply to this arena so fast. Apply to the different arena or wait %u minute(s)", (tick - tsec) / 60);
@@ -914,7 +944,9 @@ enum BATTLEGROUNDS_QUEUE_ACK bg_canqueue(struct map_session_data *sd, struct bg_
}
return BGQA_SUCCESS;
}
-void do_init_battleground(bool minimal) {
+
+static void do_init_battleground(bool minimal)
+{
if (minimal)
return;
@@ -927,7 +959,7 @@ void do_init_battleground(bool minimal) {
/**
* @see DBApply
*/
-int bg_team_db_final(union DBKey key, struct DBData *data, va_list ap)
+static int bg_team_db_final(union DBKey key, struct DBData *data, va_list ap)
{
struct battleground_data* bgd = DB->data2ptr(data);
@@ -936,7 +968,7 @@ int bg_team_db_final(union DBKey key, struct DBData *data, va_list ap)
return 0;
}
-void do_final_battleground(void)
+static void do_final_battleground(void)
{
bg->team_db->destroy(bg->team_db,bg->team_db_final);
@@ -949,7 +981,9 @@ void do_final_battleground(void)
aFree(bg->arena);
}
}
-void battleground_defaults(void) {
+
+void battleground_defaults(void)
+{
bg = &bg_s;
bg->queue_on = false;
diff --git a/src/map/battleground.h b/src/map/battleground.h
index 6bd0f2c99..4f6e5507e 100644
--- a/src/map/battleground.h
+++ b/src/map/battleground.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/map/buyingstore.c b/src/map/buyingstore.c
index 70e08a4b4..df622e4ab 100644
--- a/src/map/buyingstore.c
+++ b/src/map/buyingstore.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -35,15 +35,16 @@
#include "common/socket.h" // RBUF*
#include "common/strlib.h" // safestrncpy
-struct buyingstore_interface buyingstore_s;
+static struct buyingstore_interface buyingstore_s;
struct buyingstore_interface *buyingstore;
/// Returns unique buying store id
-unsigned int buyingstore_getuid(void) {
+static unsigned int buyingstore_getuid(void)
+{
return buyingstore->nextid++;
}
-bool buyingstore_setup(struct map_session_data* sd, unsigned char slots)
+static bool buyingstore_setup(struct map_session_data *sd, unsigned char slots)
{
nullpo_retr(false, sd);
if( !battle_config.feature_buying_store || sd->state.vending || sd->state.buyingstore || sd->state.trading || slots == 0 )
@@ -80,7 +81,7 @@ bool buyingstore_setup(struct map_session_data* sd, unsigned char slots)
return true;
}
-void buyingstore_create(struct map_session_data* sd, int zenylimit, unsigned char result, const char* storename, const uint8* itemlist, unsigned int count)
+static void buyingstore_create(struct map_session_data *sd, int zenylimit, unsigned char result, const char *storename, const struct PACKET_CZ_REQ_OPEN_BUYING_STORE_sub *itemlist, unsigned int count)
{
unsigned int i, weight, listidx;
@@ -127,13 +128,14 @@ void buyingstore_create(struct map_session_data* sd, int zenylimit, unsigned cha
// check item list
for (i = 0; i < count; i++) {
// itemlist: <name id>.W <amount>.W <price>.L
- unsigned short nameid, amount;
+ int nameid;
+ unsigned short amount;
int price, idx;
struct item_data* id;
- nameid = RBUFW(itemlist,i*8+0);
- amount = RBUFW(itemlist,i*8+2);
- price = RBUFL(itemlist,i*8+4);
+ nameid = itemlist[i].itemId;
+ amount = itemlist[i].amount;
+ price = itemlist[i].price;
if( ( id = itemdb->exists(nameid) ) == NULL || amount == 0 )
{// invalid input
@@ -161,7 +163,8 @@ void buyingstore_create(struct map_session_data* sd, int zenylimit, unsigned cha
ARR_FIND( 0, i, listidx, sd->buyingstore.items[listidx].nameid == nameid );
if( listidx != i )
{// duplicate
- ShowWarning("buyingstore_create: Found duplicate item on buying list (nameid=%hu, amount=%hu, account_id=%d, char_id=%d).\n", nameid, amount, sd->status.account_id, sd->status.char_id);
+ ShowWarning("buyingstore_create: Found duplicate item on buying list (nameid=%d, amount=%hu, account_id=%d, char_id=%d).\n",
+ nameid, amount, sd->status.account_id, sd->status.char_id);
break;
}
}
@@ -196,7 +199,7 @@ void buyingstore_create(struct map_session_data* sd, int zenylimit, unsigned cha
clif->buyingstore_entry(sd);
}
-void buyingstore_close(struct map_session_data* sd)
+static void buyingstore_close(struct map_session_data *sd)
{
nullpo_retv(sd);
if (sd->state.buyingstore)
@@ -210,7 +213,7 @@ void buyingstore_close(struct map_session_data* sd)
}
}
-void buyingstore_open(struct map_session_data* sd, int account_id)
+static void buyingstore_open(struct map_session_data *sd, int account_id)
{
struct map_session_data* pl_sd;
@@ -240,8 +243,7 @@ void buyingstore_open(struct map_session_data* sd, int account_id)
clif->buyingstore_itemlist(sd, pl_sd);
}
-
-void buyingstore_trade(struct map_session_data* sd, int account_id, unsigned int buyer_id, const uint8* itemlist, unsigned int count)
+static void buyingstore_trade(struct map_session_data* sd, int account_id, unsigned int buyer_id, const struct PACKET_CZ_REQ_TRADE_BUYING_STORE_sub* itemlist, unsigned int count)
{
int zeny = 0;
unsigned int i, weight, listidx, k;
@@ -289,20 +291,21 @@ void buyingstore_trade(struct map_session_data* sd, int account_id, unsigned int
// check item list
for( i = 0; i < count; i++ )
{// itemlist: <index>.W <name id>.W <amount>.W
- unsigned short nameid, amount;
+ int nameid;
+ unsigned short amount;
int index;
- index = RBUFW(itemlist,i*6+0)-2;
- nameid = RBUFW(itemlist,i*6+2);
- amount = RBUFW(itemlist,i*6+4);
+ index = itemlist[i].index - 2;
+ nameid = itemlist[i].itemId;
+ amount = itemlist[i].amount;
- if( i )
+ if (i)
{// duplicate check. as the client does this too, only malicious intent should be caught here
- ARR_FIND( 0, i, k, RBUFW(itemlist,k*6+0)-2 == index );
- if( k != i )
+ ARR_FIND(0, i, k, itemlist[k].index - 2 == index);
+ if (k != i)
{// duplicate
- ShowWarning("buyingstore_trade: Found duplicate item on selling list (prevnameid=%hu, prevamount=%hu, nameid=%hu, amount=%hu, account_id=%d, char_id=%d).\n",
- RBUFW(itemlist,k*6+2), RBUFW(itemlist,k*6+4), nameid, amount, sd->status.account_id, sd->status.char_id);
+ ShowWarning("buyingstore_trade: Found duplicate item on selling list (prevnameid=%d, prevamount=%d, nameid=%d, amount=%hu, account_id=%d, char_id=%d).\n",
+ (int)itemlist[k].itemId, (int)itemlist[k].amount, nameid, amount, sd->status.account_id, sd->status.char_id);
clif->buyingstore_trade_failed_seller(sd, BUYINGSTORE_TRADE_SELLER_FAILED, nameid);
return;
}
@@ -361,14 +364,15 @@ void buyingstore_trade(struct map_session_data* sd, int account_id, unsigned int
// process item list
for( i = 0; i < count; i++ )
{// itemlist: <index>.W <name id>.W <amount>.W
- unsigned short nameid, amount;
+ int nameid;
+ unsigned short amount;
int index;
- index = RBUFW(itemlist,i*6+0)-2;
- nameid = RBUFW(itemlist,i*6+2);
- amount = RBUFW(itemlist,i*6+4);
+ index = itemlist[i].index - 2;
+ nameid = itemlist[i].itemId;
+ amount = itemlist[i].amount;
- ARR_FIND( 0, pl_sd->buyingstore.slots, listidx, pl_sd->buyingstore.items[listidx].nameid == nameid );
+ ARR_FIND(0, pl_sd->buyingstore.slots, listidx, pl_sd->buyingstore.items[listidx].nameid == nameid );
zeny = amount*pl_sd->buyingstore.items[listidx].price;
// move item
@@ -415,9 +419,8 @@ void buyingstore_trade(struct map_session_data* sd, int account_id, unsigned int
}
}
-
/// Checks if an item is being bought in given player's buying store.
-bool buyingstore_search(struct map_session_data* sd, unsigned short nameid)
+static bool buyingstore_search(struct map_session_data *sd, int nameid)
{
unsigned int i;
@@ -436,10 +439,9 @@ bool buyingstore_search(struct map_session_data* sd, unsigned short nameid)
return true;
}
-
/// Searches for all items in a buyingstore, that match given ids, price and possible cards.
/// @return Whether or not the search should be continued.
-bool buyingstore_searchall(struct map_session_data* sd, const struct s_search_store_search* s)
+static bool buyingstore_searchall(struct map_session_data *sd, const struct s_search_store_search *s)
{
unsigned int i, idx;
struct s_buyingstore_item* it;
@@ -475,7 +477,8 @@ bool buyingstore_searchall(struct map_session_data* sd, const struct s_search_st
;
}
- if( !searchstore->result(s->search_sd, sd->buyer_id, sd->status.account_id, sd->message, it->nameid, it->amount, it->price, buyingstore->blankslots, 0) )
+ // TODO: add support for cards and options
+ if (!searchstore->result(s->search_sd, sd->buyer_id, sd->status.account_id, sd->message, it->nameid, it->amount, it->price, buyingstore->blankslots, 0, buyingstore->blankoptions))
{// result set full
return false;
}
@@ -483,11 +486,14 @@ bool buyingstore_searchall(struct map_session_data* sd, const struct s_search_st
return true;
}
-void buyingstore_defaults(void) {
+
+void buyingstore_defaults(void)
+{
buyingstore = &buyingstore_s;
buyingstore->nextid = 0;
- memset(buyingstore->blankslots,0,sizeof(buyingstore->blankslots));
+ memset(buyingstore->blankslots, 0, sizeof(buyingstore->blankslots));
+ memset(buyingstore->blankoptions, 0, sizeof(buyingstore->blankoptions));
/* */
buyingstore->setup = buyingstore_setup;
buyingstore->create = buyingstore_create;
@@ -497,5 +503,4 @@ void buyingstore_defaults(void) {
buyingstore->search = buyingstore_search;
buyingstore->searchall = buyingstore_searchall;
buyingstore->getuid = buyingstore_getuid;
-
}
diff --git a/src/map/buyingstore.h b/src/map/buyingstore.h
index b3756c39e..63762f321 100644
--- a/src/map/buyingstore.h
+++ b/src/map/buyingstore.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -30,6 +30,8 @@ struct map_session_data;
* Declarations
**/
struct s_search_store_search;
+struct PACKET_CZ_REQ_OPEN_BUYING_STORE_sub;
+struct PACKET_CZ_REQ_TRADE_BUYING_STORE_sub;
/**
* Defines
@@ -61,7 +63,7 @@ enum e_buyingstore_failure {
struct s_buyingstore_item {
int price;
unsigned short amount;
- unsigned short nameid;
+ int nameid;
};
struct s_buyingstore {
@@ -75,14 +77,15 @@ struct s_buyingstore {
**/
struct buyingstore_interface {
unsigned int nextid;
- short blankslots[MAX_SLOTS]; // used when checking whether or not an item's card slots are blank
+ int blankslots[MAX_SLOTS]; // used when checking whether or not an item's card slots are blank
+ struct item_option blankoptions[MAX_ITEM_OPTIONS]; // used for search result temporary.
/* */
bool (*setup) (struct map_session_data* sd, unsigned char slots);
- void (*create) (struct map_session_data* sd, int zenylimit, unsigned char result, const char* storename, const uint8* itemlist, unsigned int count);
+ void (*create) (struct map_session_data* sd, int zenylimit, unsigned char result, const char* storename, const struct PACKET_CZ_REQ_OPEN_BUYING_STORE_sub* itemlist, unsigned int count);
void (*close) (struct map_session_data* sd);
void (*open) (struct map_session_data* sd, int account_id);
- void (*trade) (struct map_session_data* sd, int account_id, unsigned int buyer_id, const uint8* itemlist, unsigned int count);
- bool (*search) (struct map_session_data* sd, unsigned short nameid);
+ void (*trade) (struct map_session_data* sd, int account_id, unsigned int buyer_id, const struct PACKET_CZ_REQ_TRADE_BUYING_STORE_sub* itemlist, unsigned int count);
+ bool (*search) (struct map_session_data* sd, int nameid);
bool (*searchall) (struct map_session_data* sd, const struct s_search_store_search* s);
unsigned int (*getuid) (void);
};
diff --git a/src/map/channel.c b/src/map/channel.c
index ee8242b23..e27e9fb0b 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"
@@ -43,7 +44,7 @@
#include <stdlib.h>
#include <string.h>
-struct channel_interface channel_s;
+static struct channel_interface channel_s;
struct channel_interface *channel;
static struct Channel_Config channel_config;
@@ -55,7 +56,7 @@ static struct Channel_Config channel_config;
* @param sd The issuer character, for character-specific channels (i.e. map, ally)
* @return a pointer to the channel, or NULL.
*/
-struct channel_data *channel_search(const char *name, struct map_session_data *sd)
+static struct channel_data *channel_search(const char *name, struct map_session_data *sd)
{
const char *realname = name;
if (!realname || !*realname)
@@ -94,7 +95,7 @@ struct channel_data *channel_search(const char *name, struct map_session_data *s
* @param color The channel chat color.
* @return A pointer to the created channel.
*/
-struct channel_data *channel_create(enum channel_types type, const char *name, unsigned char color)
+static struct channel_data *channel_create(enum channel_types type, const char *name, unsigned char color)
{
struct channel_data *chan;
@@ -122,7 +123,7 @@ struct channel_data *channel_create(enum channel_types type, const char *name, u
*
* @param chan The channel to delete
*/
-void channel_delete(struct channel_data *chan)
+static void channel_delete(struct channel_data *chan)
{
nullpo_retv(chan);
@@ -155,7 +156,7 @@ void channel_delete(struct channel_data *chan)
* @param chan The channel to edit.
* @param pass The password to set. Pass NULL to remove existing passwords.
*/
-void channel_set_password(struct channel_data *chan, const char *password)
+static void channel_set_password(struct channel_data *chan, const char *password)
{
nullpo_retv(chan);
if (password)
@@ -175,7 +176,7 @@ void channel_set_password(struct channel_data *chan, const char *password)
* @retval HCS_STATUS_NOPERM if the source character doesn't have enough permissions.
* @retval HCS_STATUS_FAIL in case of generic failure.
*/
-enum channel_operation_status channel_ban(struct channel_data *chan, const struct map_session_data *ssd, struct map_session_data *tsd)
+static enum channel_operation_status channel_ban(struct channel_data *chan, const struct map_session_data *ssd, struct map_session_data *tsd)
{
struct channel_ban_entry *entry = NULL;
@@ -214,7 +215,7 @@ enum channel_operation_status channel_ban(struct channel_data *chan, const struc
* @retval HCS_STATUS_NOPERM if the source character doesn't have enough permissions.
* @retval HCS_STATUS_FAIL in case of generic failure.
*/
-enum channel_operation_status channel_unban(struct channel_data *chan, const struct map_session_data *ssd, struct map_session_data *tsd)
+static enum channel_operation_status channel_unban(struct channel_data *chan, const struct map_session_data *ssd, struct map_session_data *tsd)
{
nullpo_retr(HCS_STATUS_FAIL, chan);
@@ -250,7 +251,7 @@ enum channel_operation_status channel_unban(struct channel_data *chan, const str
* @param chan The channel.
* @param options The new options set to apply.
*/
-void channel_set_options(struct channel_data *chan, unsigned int options)
+static void channel_set_options(struct channel_data *chan, unsigned int options)
{
nullpo_retv(chan);
@@ -266,7 +267,7 @@ void channel_set_options(struct channel_data *chan, unsigned int options)
*
* If no source character is specified, it'll send an anonymous message.
*/
-void channel_send(struct channel_data *chan, struct map_session_data *sd, const char *msg)
+static void channel_send(struct channel_data *chan, struct map_session_data *sd, const char *msg)
{
char message[150];
nullpo_retv(chan);
@@ -275,15 +276,26 @@ void channel_send(struct channel_data *chan, struct map_session_data *sd, const
if (sd && chan->msg_delay != 0
&& DIFF_TICK(sd->hchsysch_tick + chan->msg_delay*1000, timer->gettick()) > 0
&& !pc_has_permission(sd, PC_PERM_HCHSYS_ADMIN)) {
- clif->messagecolor_self(sd->fd, COLOR_RED, msg_sd(sd,1455));
+ char output[CHAT_SIZE_MAX];
+ sprintf(output, msg_sd(sd, 1455), DIFF_TICK(sd->hchsysch_tick + chan->msg_delay * 1000, timer->gettick()) / 1000); // "You cannot send a message to this channel for another %d seconds."
+ clif->messagecolor_self(sd->fd, COLOR_RED, output);
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_variable("@channelmes$"), msg);
+ npc->event(sd, chan->handlers[i], 0);
+ }
+ }
} else {
safesnprintf(message, 150, "[ #%s ] %s", chan->name, msg);
clif->channel_msg2(chan, message);
@@ -299,7 +311,7 @@ void channel_send(struct channel_data *chan, struct map_session_data *sd, const
* @param sd The character
* @param stealth If true, hide join announcements.
*/
-void channel_join_sub(struct channel_data *chan, struct map_session_data *sd, bool stealth)
+static void channel_join_sub(struct channel_data *chan, struct map_session_data *sd, bool stealth)
{
nullpo_retv(chan);
nullpo_retv(sd);
@@ -307,8 +319,8 @@ void channel_join_sub(struct channel_data *chan, struct map_session_data *sd, bo
if (idb_put(chan->users, sd->status.char_id, sd))
return;
- RECREATE(sd->channels, struct channel_data *, ++sd->channel_count);
- sd->channels[sd->channel_count - 1] = chan;
+ VECTOR_ENSURE(sd->channels, 1, 1);
+ VECTOR_PUSH(sd->channels, chan);
if (!stealth && (chan->options&HCS_OPT_ANNOUNCE_JOIN)) {
char message[60];
@@ -317,7 +329,7 @@ void channel_join_sub(struct channel_data *chan, struct map_session_data *sd, bo
}
/* someone is cheating, we kindly disconnect the bastard */
- if (sd->channel_count > 200) {
+ if (VECTOR_LENGTH(sd->channels) > 200) {
sockt->eof(sd->fd);
}
@@ -339,7 +351,7 @@ void channel_join_sub(struct channel_data *chan, struct map_session_data *sd, bo
* @retval HCS_STATUS_BANNED if the character is in the channel's ban list
* @retval HCS_STATUS_FAIL in case of generic error
*/
-enum channel_operation_status channel_join(struct channel_data *chan, struct map_session_data *sd, const char *password, bool silent)
+static enum channel_operation_status channel_join(struct channel_data *chan, struct map_session_data *sd, const char *password, bool silent)
{
bool stealth = false;
@@ -397,41 +409,25 @@ enum channel_operation_status channel_join(struct channel_data *chan, struct map
* @param chan The channel to leave
* @param sd The character
*/
-void channel_leave_sub(struct channel_data *chan, struct map_session_data *sd)
+static void channel_leave_sub(struct channel_data *chan, struct map_session_data *sd)
{
- unsigned char i;
+ int i;
nullpo_retv(chan);
nullpo_retv(sd);
- for (i = 0; i < sd->channel_count; i++) {
- if (sd->channels[i] == chan) {
- sd->channels[i] = NULL;
- break;
- }
- }
- if (i < sd->channel_count) {
- unsigned char cursor = 0;
- for (i = 0; i < sd->channel_count; i++) {
- if (sd->channels[i] == NULL)
- continue;
- if (cursor != i) {
- sd->channels[cursor] = sd->channels[i];
- }
- cursor++;
- }
- if (!(sd->channel_count = cursor)) {
- aFree(sd->channels);
- sd->channels = NULL;
- }
+ ARR_FIND(0, VECTOR_LENGTH(sd->channels), i, VECTOR_INDEX(sd->channels, i) == chan);
+ if (i < VECTOR_LENGTH(sd->channels)) {
+ VECTOR_ERASE(sd->channels, i);
}
}
+
/**
* Leaves a channel.
*
* @param chan The channel to leave
* @param sd The character
*/
-void channel_leave(struct channel_data *chan, struct map_session_data *sd)
+static void channel_leave(struct channel_data *chan, struct map_session_data *sd)
{
nullpo_retv(chan);
nullpo_retv(sd);
@@ -460,17 +456,12 @@ void channel_leave(struct channel_data *chan, struct map_session_data *sd)
*
* @param sd The target character
*/
-void channel_quit(struct map_session_data *sd)
+static void channel_quit(struct map_session_data *sd)
{
nullpo_retv(sd);
- while (sd->channel_count > 0) {
+ while (VECTOR_LENGTH(sd->channels) > 0) {
// Loop downward to avoid unnecessary array compactions by channel_leave
- struct channel_data *chan = sd->channels[sd->channel_count-1];
-
- if (chan == NULL) {
- sd->channel_count--;
- continue;
- }
+ struct channel_data *chan = VECTOR_LAST(sd->channels);
channel->leave(chan, sd);
}
@@ -481,7 +472,7 @@ void channel_quit(struct map_session_data *sd)
*
* @param sd The target character (sd must be non null)
*/
-void channel_map_join(struct map_session_data *sd)
+static void channel_map_join(struct map_session_data *sd)
{
nullpo_retv(sd);
if (sd->state.autotrade || sd->state.standalone)
@@ -497,7 +488,7 @@ void channel_map_join(struct map_session_data *sd)
channel->join(map->list[sd->bl.m].channel, sd, "", false);
}
-void channel_irc_join(struct map_session_data *sd)
+static void channel_irc_join(struct map_session_data *sd)
{
struct channel_data *chan = ircbot->channel;
@@ -519,7 +510,7 @@ void channel_irc_join(struct map_session_data *sd)
* @param g_source Source guild
* @param g_ally Allied guild
*/
-void channel_guild_join_alliance(const struct guild *g_source, const struct guild *g_ally)
+static void channel_guild_join_alliance(const struct guild *g_source, const struct guild *g_ally)
{
struct channel_data *chan;
@@ -547,7 +538,7 @@ void channel_guild_join_alliance(const struct guild *g_source, const struct guil
* @param g_source Source guild
* @param g_ally Former allied guild
*/
-void channel_guild_leave_alliance(const struct guild *g_source, const struct guild *g_ally)
+static void channel_guild_leave_alliance(const struct guild *g_source, const struct guild *g_ally)
{
struct channel_data *chan;
@@ -571,22 +562,21 @@ void channel_guild_leave_alliance(const struct guild *g_source, const struct gui
*
* @param sd The character (must be non null)
*/
-void channel_quit_guild(struct map_session_data *sd)
+static void channel_quit_guild(struct map_session_data *sd)
{
- unsigned char i;
-
nullpo_retv(sd);
- for (i = 0; i < sd->channel_count; i++) {
- struct channel_data *chan = sd->channels[i];
+ for (int i = VECTOR_LENGTH(sd->channels) - 1; i >= 0; i--) {
+ // Loop downward to avoid issues when channel->leave() compacts the array
+ struct channel_data *chan = VECTOR_INDEX(sd->channels, i);
- if (chan == NULL || chan->type != HCS_TYPE_ALLY)
+ if (chan->type != HCS_TYPE_ALLY)
continue;
channel->leave(chan, sd);
}
}
-void read_channels_config(void)
+static void read_channels_config(void)
{
struct config_t channels_conf;
struct config_setting_t *chsys = NULL;
@@ -612,7 +602,8 @@ void read_channels_config(void)
irc_autojoin = 0,
irc_flood_protection_rate = 0,
irc_flood_protection_burst = 0,
- irc_flood_protection_enabled = 0;
+ irc_flood_protection_enabled = 0,
+ channel_opt_msg_delay = 10;
if( !libconfig->setting_lookup_string(settings, "map_local_channel_name", &local_name) )
local_name = "map";
@@ -808,6 +799,16 @@ void read_channels_config(void)
}
}
+ libconfig->setting_lookup_int(settings, "channel_opt_msg_delay", &channel_opt_msg_delay);
+ if (channel_opt_msg_delay < 0) {
+ ShowWarning("channels.conf: channel_opt_msg_delay value '%d' must be from 0-255. Defaulting to 0...\n", channel_opt_msg_delay);
+ channel_opt_msg_delay = 0;
+ } else if (channel_opt_msg_delay > 255) {
+ ShowWarning("channels.conf: channel_opt_msg_delay value '%d' must be from 0-255. Defaulting to 255...\n", channel_opt_msg_delay);
+ channel_opt_msg_delay = 255;
+ }
+ channel->config->channel_opt_msg_delay = channel_opt_msg_delay;
+
ShowStatus("Done reading '"CL_WHITE"%u"CL_RESET"' channels in '"CL_WHITE"%s"CL_RESET"'.\n", db_size(channel->db), config_filename);
}
libconfig->destroy(&channels_conf);
@@ -816,7 +817,7 @@ void read_channels_config(void)
/*==========================================
*
*------------------------------------------*/
-int do_init_channel(bool minimal)
+static int do_init_channel(bool minimal)
{
if (minimal)
return 0;
@@ -828,11 +829,10 @@ int do_init_channel(bool minimal)
return 0;
}
-void do_final_channel(void)
+static void do_final_channel(void)
{
struct DBIterator *iter = db_iterator(channel->db);
struct channel_data *chan;
- unsigned char i;
for( chan = dbi_first(iter); dbi_exists(iter); chan = dbi_next(iter) ) {
channel->delete(chan);
@@ -840,7 +840,7 @@ void do_final_channel(void)
dbi_destroy(iter);
- for(i = 0; i < channel->config->colors_count; i++) {
+ for (int i = 0; i < channel->config->colors_count; i++) {
aFree(channel->config->colors_name[i]);
}
diff --git a/src/map/channel.h b/src/map/channel.h
index e8696fd90..c56227c66 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
**/
@@ -73,6 +75,7 @@ struct Channel_Config {
char irc_server[40], irc_channel[50], irc_nick[40], irc_nick_pw[30];
unsigned short irc_server_port;
bool irc_use_ghost;
+ int channel_opt_msg_delay;
};
struct channel_ban_entry {
@@ -85,6 +88,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/chat.c b/src/map/chat.c
index 763d98f7a..d9b642219 100644
--- a/src/map/chat.c
+++ b/src/map/chat.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -29,6 +29,7 @@
#include "map/npc.h" // npc_event_do()
#include "map/pc.h"
#include "map/skill.h" // ext_skill_unit_onplace()
+#include "map/achievement.h"
#include "common/cbasetypes.h"
#include "common/memmgr.h"
#include "common/mmo.h"
@@ -39,12 +40,12 @@
#include <stdio.h>
#include <string.h>
-struct chat_interface chat_s;
+static struct chat_interface chat_s;
struct chat_interface *chat;
/// Initializes a chatroom object (common functionality for both pc and npc chatrooms).
/// Returns a chatroom object on success, or NULL on failure.
-struct chat_data* chat_createchat(struct block_list* bl, const char* title, const char* pass, int limit, bool pub, int trigger, const char* ev, int zeny, int min_level, int max_level)
+static struct chat_data *chat_createchat(struct block_list *bl, const char *title, const char *pass, int limit, bool pub, int trigger, const char *ev, int zeny, int min_level, int max_level)
{
struct chat_data* cd;
nullpo_retr(NULL, bl);
@@ -91,7 +92,8 @@ struct chat_data* chat_createchat(struct block_list* bl, const char* title, cons
/*==========================================
* player chatroom creation
*------------------------------------------*/
-bool chat_createpcchat(struct map_session_data* sd, const char* title, const char* pass, int limit, bool pub) {
+static bool chat_createpcchat(struct map_session_data *sd, const char *title, const char *pass, int limit, bool pub)
+{
struct chat_data* cd;
nullpo_ret(sd);
nullpo_ret(title);
@@ -125,6 +127,7 @@ bool chat_createpcchat(struct map_session_data* sd, const char* title, const cha
pc_stop_attack(sd);
clif->createchat(sd,0); // 0 = success
clif->dispchat(cd,0);
+ achievement->validate_chatroom_create(sd); // Achievements [Smokexyz/Hercules]
return true;
}
clif->createchat(sd,1); // 1 = Room limit exceeded
@@ -135,7 +138,8 @@ bool chat_createpcchat(struct map_session_data* sd, const char* title, const cha
/*==========================================
* join an existing chatroom
*------------------------------------------*/
-bool chat_joinchat(struct map_session_data* sd, int chatid, const char* pass) {
+static bool chat_joinchat(struct map_session_data *sd, int chatid, const char *pass)
+{
struct chat_data* cd;
nullpo_ret(sd);
@@ -179,6 +183,9 @@ bool chat_joinchat(struct map_session_data* sd, int chatid, const char* pass) {
cd->usersd[cd->users] = sd;
cd->users++;
+ if (cd->owner->type == BL_PC)
+ achievement->validate_chatroom_members(BL_UCAST(BL_PC, cd->owner), cd->users);
+
pc_setchatid(sd,cd->bl.id);
clif->joinchatok(sd, cd); //To the person who newly joined the list of all
@@ -190,7 +197,6 @@ bool chat_joinchat(struct map_session_data* sd, int chatid, const char* pass) {
return true;
}
-
/*==========================================
* Leave a chatroom
* Return
@@ -199,7 +205,8 @@ bool chat_joinchat(struct map_session_data* sd, int chatid, const char* pass) {
* 2: Chat room deleted (chat room empty)
* 3: Owner changed (Owner left and a new one as assigned)
*------------------------------------------*/
-int chat_leavechat(struct map_session_data* sd, bool kicked) {
+static int chat_leavechat(struct map_session_data *sd, bool kicked)
+{
struct chat_data* cd;
int i;
int leavechar;
@@ -273,7 +280,8 @@ int chat_leavechat(struct map_session_data* sd, bool kicked) {
* 0: User not found/Missing data
* 1: Success
*------------------------------------------*/
-bool chat_changechatowner(struct map_session_data* sd, const char* nextownername) {
+static bool chat_changechatowner(struct map_session_data *sd, const char *nextownername)
+{
struct chat_data* cd;
struct map_session_data* tmpsd;
int i;
@@ -319,7 +327,8 @@ bool chat_changechatowner(struct map_session_data* sd, const char* nextownername
* 0: Missing data
* 1: Success
*------------------------------------------*/
-bool chat_changechatstatus(struct map_session_data* sd, const char* title, const char* pass, int limit, bool pub) {
+static bool chat_changechatstatus(struct map_session_data *sd, const char *title, const char *pass, int limit, bool pub)
+{
struct chat_data* cd;
nullpo_ret(sd);
@@ -347,7 +356,8 @@ bool chat_changechatstatus(struct map_session_data* sd, const char* title, const
* 0: User cannot be kicked (is gm)/Missing data
* 1: Success
*------------------------------------------*/
-bool chat_kickchat(struct map_session_data* sd, const char* kickusername) {
+static bool chat_kickchat(struct map_session_data *sd, const char *kickusername)
+{
struct chat_data* cd;
int i;
@@ -375,7 +385,7 @@ bool chat_kickchat(struct map_session_data* sd, const char* kickusername) {
/*==========================================
* Creates a chat room for the npc
*------------------------------------------*/
-bool chat_createnpcchat(struct npc_data* nd, const char* title, int limit, bool pub, int trigger, const char* ev, int zeny, int min_level, int max_level)
+static bool chat_createnpcchat(struct npc_data *nd, const char *title, int limit, bool pub, int trigger, const char *ev, int zeny, int min_level, int max_level)
{
struct chat_data* cd;
nullpo_ret(nd);
@@ -407,7 +417,8 @@ bool chat_createnpcchat(struct npc_data* nd, const char* title, int limit, bool
* 0: Missing data
* 1: Success
*------------------------------------------*/
-bool chat_deletenpcchat(struct npc_data* nd) {
+static bool chat_deletenpcchat(struct npc_data *nd)
+{
struct chat_data *cd;
nullpo_ret(nd);
@@ -431,7 +442,7 @@ bool chat_deletenpcchat(struct npc_data* nd) {
* 0: Couldn't trigger / Missing data
* 1: Success
*------------------------------------------*/
-bool chat_triggerevent(struct chat_data *cd)
+static bool chat_triggerevent(struct chat_data *cd)
{
nullpo_ret(cd);
@@ -445,7 +456,7 @@ bool chat_triggerevent(struct chat_data *cd)
/// Enables the event of the chat room.
/// At most, 127 users are needed to trigger the event.
-bool chat_enableevent(struct chat_data* cd)
+static bool chat_enableevent(struct chat_data *cd)
{
nullpo_ret(cd);
@@ -455,7 +466,7 @@ bool chat_enableevent(struct chat_data* cd)
}
/// Disables the event of the chat room
-bool chat_disableevent(struct chat_data* cd)
+static bool chat_disableevent(struct chat_data *cd)
{
nullpo_ret(cd);
@@ -464,7 +475,7 @@ bool chat_disableevent(struct chat_data* cd)
}
/// Kicks all the users from the chat room.
-bool chat_npckickall(struct chat_data* cd)
+static bool chat_npckickall(struct chat_data *cd)
{
nullpo_ret(cd);
@@ -479,7 +490,8 @@ bool chat_npckickall(struct chat_data* cd)
* Generated by HerculesInterfaceMaker
* created by Susu
*-------------------------------------*/
-void chat_defaults(void) {
+void chat_defaults(void)
+{
chat = &chat_s;
/* funcs */
diff --git a/src/map/chat.h b/src/map/chat.h
index bcdf674f7..9bea51a82 100644
--- a/src/map/chat.h
+++ b/src/map/chat.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/map/chrif.c b/src/map/chrif.c
index bf613b029..a3277d4c2 100644
--- a/src/map/chrif.c
+++ b/src/map/chrif.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -20,7 +20,7 @@
*/
#define HERCULES_CORE
-#include "config/core.h" // AUTOTRADE_PERSISTENCY, STATS_OPT_OUT
+#include "config/core.h" // AUTOTRADE_PERSISTENCY
#include "chrif.h"
#include "map/battle.h"
@@ -53,7 +53,7 @@
#include <stdlib.h>
#include <sys/types.h>
-struct chrif_interface chrif_s;
+static struct chrif_interface chrif_s;
struct chrif_interface *chrif;
//Used Packets:
@@ -109,18 +109,21 @@ struct chrif_interface *chrif;
//This define should spare writing the check in every function. [Skotlex]
#define chrif_check(a) do { if(!chrif->isconnected()) return a; } while(0)
+#if 0 // Unused
/// Resets all the data.
-void chrif_reset(void) __attribute__ ((noreturn));
-void chrif_reset(void)
+static void chrif_reset(void) __attribute__ ((noreturn));
+static void chrif_reset(void)
{
// TODO kick everyone out and reset everything [FlavioJS]
exit(EXIT_FAILURE);
}
+#endif // 0
/// Checks the conditions for the server to stop.
/// Releases the cookie when all characters are saved.
/// If all the conditions are met, it stops the core loop.
-void chrif_check_shutdown(void) {
+static void chrif_check_shutdown(void)
+{
if( core->runflag != MAPSERVER_ST_SHUTDOWN )
return;
if( db_size(chrif->auth_db) > 0 )
@@ -128,16 +131,19 @@ void chrif_check_shutdown(void) {
core->runflag = CORE_ST_STOP;
}
-struct auth_node* chrif_search(int account_id) {
+static struct auth_node* chrif_search(int account_id)
+{
return (struct auth_node*)idb_get(chrif->auth_db, account_id);
}
-struct auth_node* chrif_auth_check(int account_id, int char_id, enum sd_state state) {
+static struct auth_node* chrif_auth_check(int account_id, int char_id, enum sd_state state)
+{
struct auth_node *node = chrif->search(account_id);
return ( node && node->char_id == char_id && node->state == state ) ? node : NULL;
}
-bool chrif_auth_delete(int account_id, int char_id, enum sd_state state) {
+static bool chrif_auth_delete(int account_id, int char_id, enum sd_state state)
+{
struct auth_node *node;
if ( (node = chrif->auth_check(account_id, char_id, state) ) ) {
@@ -165,7 +171,7 @@ bool chrif_auth_delete(int account_id, int char_id, enum sd_state state) {
}
//Moves the sd character to the auth_db structure.
-bool chrif_sd_to_auth(struct map_session_data *sd, enum sd_state state)
+static bool chrif_sd_to_auth(struct map_session_data *sd, enum sd_state state)
{
struct auth_node *node;
@@ -194,7 +200,7 @@ bool chrif_sd_to_auth(struct map_session_data *sd, enum sd_state state)
return true;
}
-bool chrif_auth_logout(struct map_session_data *sd, enum sd_state state)
+static bool chrif_auth_logout(struct map_session_data *sd, enum sd_state state)
{
nullpo_retr(false, sd);
if(sd->fd && state == ST_LOGOUT) { //Disassociate player, and free it after saving ack returns. [Skotlex]
@@ -207,7 +213,7 @@ bool chrif_auth_logout(struct map_session_data *sd, enum sd_state state)
return chrif->sd_to_auth(sd, state);
}
-bool chrif_auth_finished(struct map_session_data *sd)
+static bool chrif_auth_finished(struct map_session_data *sd)
{
struct auth_node *node;
@@ -223,19 +229,22 @@ bool chrif_auth_finished(struct map_session_data *sd)
}
// sets char-server's user id
-void chrif_setuserid(char *id) {
+static void chrif_setuserid(char *id)
+{
nullpo_retv(id);
memcpy(chrif->userid, id, NAME_LENGTH);
}
// sets char-server's password
-void chrif_setpasswd(char *pwd) {
+static void chrif_setpasswd(char *pwd)
+{
nullpo_retv(pwd);
memcpy(chrif->passwd, pwd, NAME_LENGTH);
}
// security check, prints warning if using default password
-void chrif_checkdefaultlogin(void) {
+static void chrif_checkdefaultlogin(void)
+{
#ifndef BUILDBOT
if (strcmp(chrif->userid, "s1")==0 && strcmp(chrif->passwd, "p1")==0) {
ShowWarning("Using the default user/password s1/p1 is NOT RECOMMENDED.\n");
@@ -246,7 +255,8 @@ void chrif_checkdefaultlogin(void) {
}
// sets char-server's ip address
-bool chrif_setip(const char* ip) {
+static bool chrif_setip(const char *ip)
+{
char ip_str[16];
nullpo_retr(false, ip);
@@ -263,12 +273,14 @@ bool chrif_setip(const char* ip) {
}
// sets char-server's port number
-void chrif_setport(uint16 port) {
+static void chrif_setport(uint16 port)
+{
chrif->port = port;
}
// says whether the char-server is connected or not
-int chrif_isconnected(void) {
+static int chrif_isconnected(void)
+{
return (chrif->fd > 0 && sockt->session[chrif->fd] != NULL && chrif->state == 2);
}
@@ -278,7 +290,8 @@ int chrif_isconnected(void) {
* Flag = 2: Character is changing map-servers
*------------------------------------------*/
// TODO: Flag enum
-bool chrif_save(struct map_session_data *sd, int flag) {
+static bool chrif_save(struct map_session_data *sd, int flag)
+{
nullpo_ret(sd);
pc->makesavestatus(sd);
@@ -323,12 +336,18 @@ bool chrif_save(struct map_session_data *sd, int flag) {
elemental->save(sd->ed);
if( sd->save_quest )
intif->quest_save(sd);
+ if (VECTOR_LENGTH(sd->achievement) > 0)
+ intif->achievements_save(sd);
+
+ if (sd->storage.received == true && sd->storage.save == true)
+ intif->send_account_storage(sd);
return true;
}
// connects to char-server (plaintext)
-void chrif_connect(int fd) {
+static void chrif_connect(int fd)
+{
ShowStatus("Logging in to char server...\n");
WFIFOHEAD(fd,60);
WFIFOW(fd,0) = 0x2af8;
@@ -341,7 +360,8 @@ void chrif_connect(int fd) {
}
// sends maps to char-server
-void chrif_sendmap(int fd) {
+static void chrif_sendmap(int fd)
+{
int i;
ShowStatus("Sending maps to char server...\n");
@@ -356,7 +376,8 @@ void chrif_sendmap(int fd) {
}
// receive maps from some other map-server (relayed via char-server)
-void chrif_recvmap(int fd) {
+static void chrif_recvmap(int fd)
+{
int i, j;
uint32 ip = ntohl(RFIFOL(fd,4));
uint16 port = ntohs(RFIFOW(fd,8));
@@ -372,7 +393,8 @@ void chrif_recvmap(int fd) {
}
// remove specified maps (used when some other map-server disconnects)
-void chrif_removemap(int fd) {
+static void chrif_removemap(int fd)
+{
int i, j;
uint32 ip = RFIFOL(fd,4);
uint16 port = RFIFOW(fd,8);
@@ -387,13 +409,15 @@ void chrif_removemap(int fd) {
}
// received after a character has been "final saved" on the char-server
-void chrif_save_ack(int fd) {
+static void chrif_save_ack(int fd)
+{
chrif->auth_delete(RFIFOL(fd,2), RFIFOL(fd,6), ST_LOGOUT);
chrif->check_shutdown();
}
// request to move a character between mapservers
-bool chrif_changemapserver(struct map_session_data* sd, uint32 ip, uint16 port) {
+static bool chrif_changemapserver(struct map_session_data *sd, uint32 ip, uint16 port)
+{
nullpo_ret(sd);
if (chrif->other_mapserver_count < 1) {//No other map servers are online!
@@ -424,7 +448,8 @@ bool chrif_changemapserver(struct map_session_data* sd, uint32 ip, uint16 port)
/// map-server change request acknowledgment (positive or negative)
/// R 2b06 <account_id>.L <login_id1>.L <login_id2>.L <char_id>.L <map_index>.W <x>.W <y>.W <ip>.L <port>.W
-bool chrif_changemapserverack(int account_id, int login_id1, int login_id2, int char_id, short map_index, short x, short y, uint32 ip, uint16 port) {
+static bool chrif_changemapserverack(int account_id, int login_id1, int login_id2, int char_id, short map_index, short x, short y, uint32 ip, uint16 port)
+{
struct auth_node *node;
if ( !( node = chrif->auth_check(account_id, char_id, ST_MAPCHANGE) ) )
@@ -434,7 +459,7 @@ bool chrif_changemapserverack(int account_id, int login_id1, int login_id2, int
ShowError("chrif_changemapserverack: map server change failed.\n");
clif->authfail_fd(node->fd, 0); // Disconnected from server
} else
- clif->changemapserver(node->sd, map_index, x, y, ntohl(ip), ntohs(port));
+ clif->changemapserver(node->sd, map_index, x, y, ntohl(ip), ntohs(port), NULL);
//Player has been saved already, remove him from memory. [Skotlex]
chrif->auth_delete(account_id, char_id, ST_MAPCHANGE);
@@ -445,7 +470,8 @@ bool chrif_changemapserverack(int account_id, int login_id1, int login_id2, int
/*==========================================
*
*------------------------------------------*/
-void chrif_connectack(int fd) {
+static void chrif_connectack(int fd)
+{
static bool char_init_done = false;
if (RFIFOB(fd,2)) {
@@ -473,7 +499,7 @@ void chrif_connectack(int fd) {
/**
* @see DBApply
*/
-int chrif_reconnect(union DBKey key, struct DBData *data, va_list ap)
+static int chrif_reconnect(union DBKey key, struct DBData *data, va_list ap)
{
struct auth_node *node = DB->data2ptr(data);
@@ -506,7 +532,8 @@ int chrif_reconnect(union DBKey key, struct DBData *data, va_list ap)
}
/// Called when all the connection steps are completed.
-void chrif_on_ready(void) {
+static void chrif_on_ready(void)
+{
static bool once = false;
ShowStatus("Map Server is now online.\n");
@@ -537,7 +564,7 @@ void chrif_on_ready(void) {
/*==========================================
*
*------------------------------------------*/
-void chrif_sendmapack(int fd)
+static void chrif_sendmapack(int fd)
{
if (RFIFOB(fd,2)) {
ShowFatalError("chrif : send map list to char server failed %d\n", RFIFOB(fd,2));
@@ -552,7 +579,7 @@ void chrif_sendmapack(int fd)
/*==========================================
* Request sc_data from charserver [Skotlex]
*------------------------------------------*/
-bool chrif_scdata_request(int account_id, int char_id)
+static bool chrif_scdata_request(int account_id, int char_id)
{
#ifdef ENABLE_SC_SAVING
chrif_check(false);
@@ -569,7 +596,8 @@ bool chrif_scdata_request(int account_id, int char_id)
/*==========================================
* Request auth confirmation
*------------------------------------------*/
-void chrif_authreq(struct map_session_data *sd, bool hstandalone) {
+static void chrif_authreq(struct map_session_data *sd, bool hstandalone)
+{
struct auth_node *node= chrif->search(sd->bl.id);
nullpo_retv(sd);
@@ -593,7 +621,8 @@ void chrif_authreq(struct map_session_data *sd, bool hstandalone) {
/*==========================================
* Auth confirmation ack
*------------------------------------------*/
-void chrif_authok(int fd) {
+static void chrif_authok(int fd)
+{
int account_id, group_id, char_id;
uint32 login_id1,login_id2;
time_t expiration_time;
@@ -655,7 +684,9 @@ void chrif_authok(int fd) {
}
// client authentication failed
-void chrif_authfail(int fd) {/* HELLO WORLD. ip in RFIFOL 15 is not being used (but is available) */
+static void chrif_authfail(int fd)
+{
+ /* HELLO WORLD. ip in RFIFOL 15 is not being used (but is available) */
int account_id, char_id;
uint32 login_id1;
char sex;
@@ -684,7 +715,7 @@ void chrif_authfail(int fd) {/* HELLO WORLD. ip in RFIFOL 15 is not being used (
* This can still happen (client times out while waiting for char to confirm auth data)
* @see DBApply
*/
-int auth_db_cleanup_sub(union DBKey key, struct DBData *data, va_list ap)
+static int auth_db_cleanup_sub(union DBKey key, struct DBData *data, va_list ap)
{
struct auth_node *node = DB->data2ptr(data);
@@ -709,7 +740,8 @@ int auth_db_cleanup_sub(union DBKey key, struct DBData *data, va_list ap)
return 0;
}
-int auth_db_cleanup(int tid, int64 tick, int id, intptr_t data) {
+static int auth_db_cleanup(int tid, int64 tick, int id, intptr_t data)
+{
chrif_check(0);
chrif->auth_db->foreach(chrif->auth_db, chrif->auth_db_cleanup_sub);
return 0;
@@ -718,7 +750,8 @@ int auth_db_cleanup(int tid, int64 tick, int id, intptr_t data) {
/*==========================================
* Request char selection
*------------------------------------------*/
-bool chrif_charselectreq(struct map_session_data* sd, uint32 s_ip) {
+static bool chrif_charselectreq(struct map_session_data *sd, uint32 s_ip)
+{
nullpo_ret(sd);
if( !sd->bl.id || !sd->login_id1 )
@@ -741,7 +774,8 @@ bool chrif_charselectreq(struct map_session_data* sd, uint32 s_ip) {
/*==========================================
* Search Char trough id on char serv
*------------------------------------------*/
-bool chrif_searchcharid(int char_id) {
+static bool chrif_searchcharid(int char_id)
+{
if( !char_id )
return false;
@@ -759,7 +793,8 @@ bool chrif_searchcharid(int char_id) {
/*==========================================
* Change Email
*------------------------------------------*/
-bool chrif_changeemail(int id, const char *actual_email, const char *new_email) {
+static bool chrif_changeemail(int id, const char *actual_email, const char *new_email)
+{
if (battle_config.etc_log)
ShowInfo("chrif_changeemail: account: %d, actual_email: '%s', new_email: '%s'.\n", id, actual_email, new_email);
@@ -792,7 +827,7 @@ bool chrif_changeemail(int id, const char *actual_email, const char *new_email)
* charunban { n/a }
* changecharsex { <sex>.b } -- use chrif_changesex
*------------------------------------------*/
-bool chrif_char_ask_name(int acc, const char* character_name, unsigned short operation_type, int year, int month, int day, int hour, int minute, int second)
+static bool chrif_char_ask_name(int acc, const char *character_name, unsigned short operation_type, int year, int month, int day, int hour, int minute, int second)
{
nullpo_retr(false, character_name);
chrif_check(false);
@@ -823,7 +858,7 @@ bool chrif_char_ask_name(int acc, const char* character_name, unsigned short ope
* @param change_account Whether to change the per-account sex.
* @retval true.
*/
-bool chrif_changesex(struct map_session_data *sd, bool change_account)
+static bool chrif_changesex(struct map_session_data *sd, bool change_account)
{
nullpo_retr(false, sd);
chrif_check(false);
@@ -852,7 +887,8 @@ bool chrif_changesex(struct map_session_data *sd, bool change_account)
* type of operation: @see chrif_char_ask_name
* type of answer: @see hz_char_ask_name_answer
*------------------------------------------*/
-bool chrif_char_ask_name_answer(int acc, const char* player_name, uint16 type, uint16 answer) {
+static bool chrif_char_ask_name_answer(int acc, const char *player_name, uint16 type, uint16 answer)
+{
struct map_session_data* sd;
char action[25];
char output[256];
@@ -890,7 +926,8 @@ bool chrif_char_ask_name_answer(int acc, const char* player_name, uint16 type, u
/*==========================================
* Request char server to change sex of char (modified by Yor)
*------------------------------------------*/
-void chrif_changedsex(int fd) {
+static void chrif_changedsex(int fd)
+{
int acc = RFIFOL(fd,2);
//int sex = RFIFOL(fd,6); // Dead store. Uncomment if needed again.
@@ -907,10 +944,12 @@ void chrif_changedsex(int fd) {
// of this process, but there's no need to perform map-server specific response
// as everything should been changed through char-server [Panikon]
}
+
/*==========================================
* Request Char Server to Divorce Players
*------------------------------------------*/
-bool chrif_divorce(int partner_id1, int partner_id2) {
+static bool chrif_divorce(int partner_id1, int partner_id2)
+{
chrif_check(false);
WFIFOHEAD(chrif->fd,10);
@@ -926,7 +965,8 @@ bool chrif_divorce(int partner_id1, int partner_id2) {
* Divorce players
* only used if 'partner_id' is offline
*------------------------------------------*/
-bool chrif_divorceack(int char_id, int partner_id) {
+static bool chrif_divorceack(int char_id, int partner_id)
+{
struct map_session_data* sd;
int i;
@@ -935,24 +975,26 @@ bool chrif_divorceack(int char_id, int partner_id) {
if( ( sd = map->charid2sd(char_id) ) != NULL && sd->status.partner_id == partner_id ) {
sd->status.partner_id = 0;
- for(i = 0; i < MAX_INVENTORY; i++)
+ for (i = 0; i < sd->status.inventorySize; i++)
if (sd->status.inventory[i].nameid == WEDDING_RING_M || sd->status.inventory[i].nameid == WEDDING_RING_F)
pc->delitem(sd, i, 1, 0, DELITEM_NORMAL, LOG_TYPE_DIVORCE);
}
if( ( sd = map->charid2sd(partner_id) ) != NULL && sd->status.partner_id == char_id ) {
sd->status.partner_id = 0;
- for(i = 0; i < MAX_INVENTORY; i++)
+ for (i = 0; i < sd->status.inventorySize; i++)
if (sd->status.inventory[i].nameid == WEDDING_RING_M || sd->status.inventory[i].nameid == WEDDING_RING_F)
pc->delitem(sd, i, 1, 0, DELITEM_NORMAL, LOG_TYPE_DIVORCE);
}
return true;
}
+
/*==========================================
* Removes Baby from parents
*------------------------------------------*/
-void chrif_deadopt(int father_id, int mother_id, int child_id) {
+static void chrif_deadopt(int father_id, int mother_id, int child_id)
+{
struct map_session_data* sd;
int idx = skill->get_index(WE_CALLBABY);
@@ -977,7 +1019,8 @@ void chrif_deadopt(int father_id, int mother_id, int child_id) {
/*==========================================
* Disconnection of a player (account or char has been banned of has a status, from login or char server) by [Yor]
*------------------------------------------*/
-void chrif_idbanned(int fd) {
+static void chrif_idbanned(int fd)
+{
int id;
struct map_session_data *sd;
@@ -1024,7 +1067,8 @@ void chrif_idbanned(int fd) {
//Disconnect the player out of the game, simple packet
//packet.w AID.L WHY.B 2+4+1 = 7byte
-int chrif_disconnectplayer(int fd) {
+static int chrif_disconnectplayer(int fd)
+{
struct map_session_data* sd;
int account_id = RFIFOL(fd, 2);
@@ -1059,7 +1103,7 @@ int chrif_disconnectplayer(int fd) {
/*==========================================
* Request/Receive top 10 Fame character list
*------------------------------------------*/
-int chrif_updatefamelist(struct map_session_data *sd)
+static int chrif_updatefamelist(struct map_session_data *sd)
{
int type;
@@ -1081,7 +1125,8 @@ int chrif_updatefamelist(struct map_session_data *sd)
return 0;
}
-bool chrif_buildfamelist(void) {
+static bool chrif_buildfamelist(void)
+{
chrif_check(false);
WFIFOHEAD(chrif->fd,2);
@@ -1091,7 +1136,8 @@ bool chrif_buildfamelist(void) {
return true;
}
-void chrif_recvfamelist(int fd) {
+static void chrif_recvfamelist(int fd)
+{
int num, size;
int total = 0, len = 8;
@@ -1125,7 +1171,8 @@ void chrif_recvfamelist(int fd) {
/// fame ranking update confirmation
/// R 2b22 <table>.B <index>.B <value>.L
-int chrif_updatefamelist_ack(int fd) {
+static int chrif_updatefamelist_ack(int fd)
+{
struct fame_list* list;
uint8 index;
@@ -1145,8 +1192,9 @@ int chrif_updatefamelist_ack(int fd) {
return 1;
}
-bool chrif_save_scdata(struct map_session_data *sd) { //parses the sc_data of the player and sends it to the char-server for saving. [Skotlex]
-
+//parses the sc_data of the player and sends it to the char-server for saving. [Skotlex]
+static bool chrif_save_scdata(struct map_session_data *sd)
+{
#ifdef ENABLE_SC_SAVING
int i, count=0;
int64 tick;
@@ -1200,8 +1248,8 @@ bool chrif_save_scdata(struct map_session_data *sd) { //parses the sc_data of th
}
//Retrieve and load sc_data for a player. [Skotlex]
-bool chrif_load_scdata(int fd) {
-
+static bool chrif_load_scdata(int fd)
+{
#ifdef ENABLE_SC_SAVING
struct map_session_data *sd;
int aid, cid, i, count;
@@ -1238,7 +1286,8 @@ bool chrif_load_scdata(int fd) {
* Send rates to char server [Wizputer]
* S 2b16 <base rate>.L <job rate>.L <drop rate>.L
*------------------------------------------*/
-bool chrif_ragsrvinfo(int base_rate, int job_rate, int drop_rate) {
+static bool chrif_ragsrvinfo(int base_rate, int job_rate, int drop_rate)
+{
chrif_check(false);
WFIFOHEAD(chrif->fd,14);
@@ -1253,7 +1302,8 @@ bool chrif_ragsrvinfo(int base_rate, int job_rate, int drop_rate) {
/*=========================================
* Tell char-server character disconnected [Wizputer]
*-----------------------------------------*/
-bool chrif_char_offline_nsd(int account_id, int char_id) {
+static bool chrif_char_offline_nsd(int account_id, int char_id)
+{
chrif_check(false);
WFIFOHEAD(chrif->fd,10);
@@ -1268,7 +1318,8 @@ bool chrif_char_offline_nsd(int account_id, int char_id) {
/*=========================================
* Tell char-server to reset all chars offline [Wizputer]
*-----------------------------------------*/
-bool chrif_flush(void) {
+static bool chrif_flush(void)
+{
chrif_check(false);
sockt->set_nonblocking(chrif->fd, 0);
@@ -1281,7 +1332,8 @@ bool chrif_flush(void) {
/*=========================================
* Tell char-server to reset all chars offline [Wizputer]
*-----------------------------------------*/
-bool chrif_char_reset_offline(void) {
+static bool chrif_char_reset_offline(void)
+{
chrif_check(false);
WFIFOHEAD(chrif->fd,2);
@@ -1294,7 +1346,8 @@ bool chrif_char_reset_offline(void) {
/*=========================================
* Tell char-server character is online [Wizputer]. Look like unused.
*-----------------------------------------*/
-bool chrif_char_online(struct map_session_data *sd) {
+static bool chrif_char_online(struct map_session_data *sd)
+{
chrif_check(false);
nullpo_retr(false, sd);
@@ -1308,7 +1361,8 @@ bool chrif_char_online(struct map_session_data *sd) {
}
/// Called when the connection to Char Server is disconnected.
-void chrif_on_disconnect(void) {
+static void chrif_on_disconnect(void)
+{
if( chrif->connected != 1 )
ShowWarning("Connection to Char Server lost.\n\n");
chrif->connected = 0;
@@ -1320,7 +1374,8 @@ void chrif_on_disconnect(void) {
timer->add(timer->gettick() + 1000, chrif->check_connect_char_server, 0, 0);
}
-void chrif_update_ip(int fd) {
+static void chrif_update_ip(int fd)
+{
uint32 new_ip;
WFIFOHEAD(fd,6);
@@ -1341,15 +1396,20 @@ void chrif_update_ip(int fd) {
}
// pings the charserver ( since on-demand flag.ping was introduced, shouldn't this be dropped? only wasting traffic and processing [Ind])
-void chrif_keepalive(int fd) {
+static void chrif_keepalive(int fd)
+{
WFIFOHEAD(fd,2);
WFIFOW(fd,0) = 0x2b23;
WFIFOSET(fd,2);
}
-void chrif_keepalive_ack(int fd) {
+
+static void chrif_keepalive_ack(int fd)
+{
sockt->session[fd]->flag.ping = 0;/* reset ping state, we received a packet */
}
-void chrif_skillid2idx(int fd) {
+
+static void chrif_skillid2idx(int fd)
+{
int i, count = 0;
if( fd == 0 ) fd = chrif->fd;
@@ -1357,11 +1417,11 @@ void chrif_skillid2idx(int fd) {
if (!sockt->session_is_valid(fd))
return;
- WFIFOHEAD(fd,4 + (MAX_SKILL * 4));
+ WFIFOHEAD(fd,4 + (MAX_SKILL_DB * 4));
WFIFOW(fd,0) = 0x2b0b;
- for(i = 0; i < MAX_SKILL; i++) {
- if( skill->dbs->db[i].nameid ) {
- WFIFOW(fd, 4 + (count*4)) = skill->dbs->db[i].nameid;
+ for (i = 0; i < MAX_SKILL_DB; i++) {
+ if (skill->dbs->db[i].nameid != 0) {
+ WFIFOW(fd, 4 + (count*4)) = skill->dbs->db[i].nameid; // really skill id
WFIFOW(fd, 6 + (count*4)) = i;
count++;
}
@@ -1370,10 +1430,12 @@ void chrif_skillid2idx(int fd) {
WFIFOSET(fd,4 + (count * 4));
}
+
/*==========================================
*
*------------------------------------------*/
-int chrif_parse(int fd) {
+static int chrif_parse(int fd)
+{
int packet_len, cmd;
// only process data from the char-server
@@ -1467,7 +1529,8 @@ int chrif_parse(int fd) {
return 0;
}
-int send_usercount_tochar(int tid, int64 tick, int id, intptr_t data) {
+static int send_usercount_tochar(int tid, int64 tick, int id, intptr_t data)
+{
chrif_check(-1);
WFIFOHEAD(chrif->fd,4);
@@ -1481,7 +1544,8 @@ int send_usercount_tochar(int tid, int64 tick, int id, intptr_t data) {
* timerFunction
* Send to char the number of client connected to map
*------------------------------------------*/
-bool send_users_tochar(void) {
+static bool send_users_tochar(void)
+{
int users = 0, i = 0;
const struct map_session_data *sd;
struct s_mapiterator *iter;
@@ -1512,7 +1576,8 @@ bool send_users_tochar(void) {
* timerFunction
* Check the connection to char server, (if it down)
*------------------------------------------*/
-int check_connect_char_server(int tid, int64 tick, int id, intptr_t data) {
+static int check_connect_char_server(int tid, int64 tick, int id, intptr_t data)
+{
static int displayed = 0;
if ( chrif->fd <= 0 || sockt->session[chrif->fd] == NULL ) {
if ( !displayed ) {
@@ -1527,6 +1592,7 @@ int check_connect_char_server(int tid, int64 tick, int id, intptr_t data) {
sockt->session[chrif->fd]->func_parse = chrif->parse;
sockt->session[chrif->fd]->flag.server = 1;
+ sockt->session[chrif->fd]->flag.validate = 0;
sockt->realloc_fifo(chrif->fd, FIFOSIZE_SERVERLINK, FIFOSIZE_SERVERLINK);
chrif->connect(chrif->fd);
@@ -1546,7 +1612,7 @@ int check_connect_char_server(int tid, int64 tick, int id, intptr_t data) {
/*==========================================
* Asks char server to remove friend_id from the friend list of char_id
*------------------------------------------*/
-bool chrif_removefriend(int char_id, int friend_id)
+static bool chrif_removefriend(int char_id, int friend_id)
{
chrif_check(false);
@@ -1558,26 +1624,10 @@ bool chrif_removefriend(int char_id, int friend_id)
return true;
}
-void chrif_send_report(char* buf, int len) {
-#ifndef STATS_OPT_OUT
- if( chrif->fd > 0 ) {
- nullpo_retv(buf);
- WFIFOHEAD(chrif->fd,len + 2);
-
- WFIFOW(chrif->fd,0) = 0x3008;
- memcpy(WFIFOP(chrif->fd,2), buf, len);
-
- WFIFOSET(chrif->fd,len + 2);
-
- sockt->flush(chrif->fd); /* ensure it's sent now. */
- }
-#endif
-}
-
/**
* Sends a single scdata for saving into char server, meant to ensure integrity of duration-less conditions
**/
-void chrif_save_scdata_single(int account_id, int char_id, short type, struct status_change_entry *sce)
+static void chrif_save_scdata_single(int account_id, int char_id, short type, struct status_change_entry *sce)
{
if( !chrif->isconnected() )
return;
@@ -1596,10 +1646,11 @@ void chrif_save_scdata_single(int account_id, int char_id, short type, struct st
WFIFOSET(chrif->fd, 28);
}
+
/**
* Sends a single scdata deletion request into char server, meant to ensure integrity of duration-less conditions
**/
-void chrif_del_scdata_single(int account_id, int char_id, short type)
+static void chrif_del_scdata_single(int account_id, int char_id, short type)
{
if( !chrif->isconnected() ) {
ShowError("MAYDAY! failed to delete status %d from CID:%d/AID:%d\n",type,char_id,account_id);
@@ -1619,7 +1670,7 @@ void chrif_del_scdata_single(int account_id, int char_id, short type)
/**
* @see DBApply
*/
-int auth_db_final(union DBKey key, struct DBData *data, va_list ap)
+static int auth_db_final(union DBKey key, struct DBData *data, va_list ap)
{
struct auth_node *node = DB->data2ptr(data);
@@ -1641,7 +1692,7 @@ int auth_db_final(union DBKey key, struct DBData *data, va_list ap)
/*==========================================
* Destructor
*------------------------------------------*/
-void do_final_chrif(void)
+static void do_final_chrif(void)
{
if( chrif->fd != -1 ) {
sockt->close(chrif->fd);
@@ -1656,7 +1707,8 @@ void do_final_chrif(void)
/*==========================================
*
*------------------------------------------*/
-void do_init_chrif(bool minimal) {
+static void do_init_chrif(bool minimal)
+{
if (minimal)
return;
@@ -1682,7 +1734,8 @@ void do_init_chrif(bool minimal) {
* Generated by HerculesInterfaceMaker
* created by Susu
*-------------------------------------*/
-void chrif_defaults(void) {
+void chrif_defaults(void)
+{
const int packet_len_table[CHRIF_PACKET_LEN_TABLE_SIZE] = { // U - used, F - free
60, 3, -1, 27, 10, -1, 6, -1, // 2af8-2aff: U->2af8, U->2af9, U->2afa, U->2afb, U->2afc, U->2afd, U->2afe, U->2aff
6, -1, 18, 7, -1, 39, 30, 10, // 2b00-2b07: U->2b00, U->2b01, U->2b02, U->2b03, U->2b04, U->2b05, U->2b06, U->2b07
@@ -1753,7 +1806,6 @@ void chrif_defaults(void) {
chrif->divorce = chrif_divorce;
chrif->removefriend = chrif_removefriend;
- chrif->send_report = chrif_send_report;
chrif->flush = chrif_flush;
chrif->skillid2idx = chrif_skillid2idx;
diff --git a/src/map/chrif.h b/src/map/chrif.h
index 615521e0f..78910d24b 100644
--- a/src/map/chrif.h
+++ b/src/map/chrif.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -124,7 +124,6 @@ struct chrif_interface {
bool (*divorce) (int partner_id1, int partner_id2);
bool (*removefriend) (int char_id, int friend_id);
- void (*send_report) (char* buf, int len);
bool (*flush) (void);
void (*skillid2idx) (int fd);
diff --git a/src/map/clan.c b/src/map/clan.c
new file mode 100644
index 000000000..3d5c70eb1
--- /dev/null
+++ b/src/map/clan.c
@@ -0,0 +1,1075 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2017 Hercules Dev Team
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#define HERCULES_CORE
+
+#include "config/core.h"
+#include "clan.h"
+
+#include "map/clif.h"
+#include "map/chrif.h"
+#include "map/homunculus.h"
+#include "map/intif.h"
+#include "map/log.h"
+#include "map/mercenary.h"
+#include "map/mob.h"
+#include "map/npc.h"
+#include "map/pc.h"
+#include "map/pet.h"
+#include "map/script.h"
+#include "map/skill.h"
+#include "map/status.h"
+#include "common/HPM.h"
+#include "common/conf.h"
+#include "common/cbasetypes.h"
+#include "common/db.h"
+#include "common/memmgr.h"
+#include "common/mapindex.h"
+#include "common/nullpo.h"
+#include "common/showmsg.h"
+#include "common/socket.h"
+#include "common/strlib.h"
+#include "common/timer.h"
+#include "common/utils.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+static struct clan_interface clan_s;
+struct clan_interface *clan;
+
+/**
+ * Searches a Clan by clan_id
+ *
+ * @param clan_id Clan ID
+ * @return struct clan*
+ */
+static struct clan *clan_search(int clan_id)
+{
+ if (clan_id <= 0) {
+ return NULL;
+ }
+ return (struct clan *)idb_get(clan->db, clan_id);
+}
+
+/**
+ * Searches a Clan by clan_name or constant
+ *
+ * @param name Clan Name
+ * @return struct clan*
+ */
+static struct clan *clan_searchname(const char *name)
+{
+ struct clan *c;
+ struct DBIterator *iter;
+
+ nullpo_retr(NULL, name);
+
+ iter = db_iterator(clan->db);
+ for (c = dbi_first(iter); dbi_exists(iter); c = dbi_next(iter)) {
+ if (strncmpi(c->name, name, NAME_LENGTH) == 0 || strncmpi(c->constant, name, NAME_LENGTH) == 0) {
+ break;
+ }
+ }
+ dbi_destroy(iter);
+ return c;
+}
+
+/**
+ * Returns the first online character of clan
+ *
+ * @param (struct clan *) c clan structure
+ * @return (struct map_session_data *)
+ */
+static struct map_session_data *clan_getonlinesd(struct clan *c)
+{
+ int i;
+ nullpo_retr(NULL, c);
+
+ ARR_FIND(0, VECTOR_LENGTH(c->members), i, (VECTOR_INDEX(c->members, i).sd != NULL && VECTOR_INDEX(c->members, i).online == 1));
+ return (i < VECTOR_LENGTH(c->members)) ? VECTOR_INDEX(c->members, i).sd : NULL;
+}
+
+/**
+ * Returns the member index of given Player
+ *
+ * @param c Clan Data
+ * @param char_id Player's Char ID
+ * @return int
+ */
+static int clan_getindex(const struct clan *c, int char_id)
+{
+ int i;
+ nullpo_retr(INDEX_NOT_FOUND, c);
+
+ ARR_FIND(0, VECTOR_LENGTH(c->members), i, VECTOR_INDEX(c->members, i).char_id == char_id);
+
+ if (i == VECTOR_LENGTH(c->members)) {
+ return INDEX_NOT_FOUND;
+ }
+ return i;
+}
+
+/**
+ * Starts clan buff
+ */
+static void clan_buff_start(struct map_session_data *sd, struct clan *c)
+{
+ nullpo_retv(sd);
+ nullpo_retv(c);
+
+ if (c->buff.icon <= 0) {
+ return;
+ }
+
+ clif->sc_load(&sd->bl, sd->bl.id, SELF, c->buff.icon, 0, c->clan_id, 0);
+ script->run(c->buff.script, 0, sd->bl.id, npc->fake_nd->bl.id);
+}
+
+/**
+ * Ends clan buff
+ */
+static void clan_buff_end(struct map_session_data *sd, struct clan *c)
+{
+ nullpo_retv(sd);
+ nullpo_retv(c);
+
+ if (c->buff.icon <= 0) {
+ return;
+ }
+
+ clif->sc_end(&sd->bl, sd->bl.id, SELF, c->buff.icon);
+}
+
+/**
+ * Joins a Player into a Clan
+ *
+ * @param sd Player's Map Session Data
+ * @param clan_id Clan which will add this player
+ * @return bool
+ */
+static bool clan_join(struct map_session_data *sd, int clan_id)
+{
+ struct clan *c;
+ struct clan_member m;
+
+ nullpo_ret(sd);
+
+ // Already joined a guild or clan
+ if (sd->status.guild_id > 0 || sd->guild != NULL) {
+ ShowError("clan_join: Player already joined in a guild. char_id: %d\n", sd->status.char_id);
+ return false;
+ } else if ( sd->status.clan_id > 0 || sd->clan != NULL) {
+ ShowError("clan_join: Player already joined in a clan. char_id: %d\n", sd->status.char_id);
+ return false;
+ }
+
+ c = clan->search(clan_id);
+ if (c == NULL) {
+ ShowError("clan_join: Invalid Clan ID: %d\n", clan_id);
+ return false;
+ }
+
+ if (!c->received) {
+ return false;
+ }
+
+ if (clan->getindex(c, sd->status.char_id) != INDEX_NOT_FOUND) {
+ ShowError("clan_join: Player already joined this clan. char_id: %d clan_id: %d\n", sd->status.char_id, clan_id);
+ return false;
+ }
+
+ if (VECTOR_LENGTH(c->members) >= c->max_member || c->member_count >= c->max_member) {
+ ShowError("clan_join: Clan '%s' already reached its max capacity!\n", c->name);
+ return false;
+ }
+
+ VECTOR_ENSURE(c->members, 1, 1);
+
+ m.sd = sd;
+ m.char_id = sd->status.char_id;
+ m.online = 1;
+ m.last_login = sd->status.last_login;
+ VECTOR_PUSH(c->members, m);
+
+ c->connect_member++;
+ c->member_count++;
+
+ sd->status.clan_id = c->clan_id;
+ sd->clan = c;
+
+ sc_start2(NULL, &sd->bl, SC_CLAN_INFO, 10000, 0, c->clan_id, INFINITE_DURATION);
+ status_calc_pc(sd, SCO_FORCE);
+
+ chrif->save(sd, 0);
+ clif->clan_basicinfo(sd);
+ clif->clan_onlinecount(c);
+ return true;
+}
+
+/**
+ * Invoked when a player joins
+ * It assumes that clan_id is not 0
+ *
+ * @param sd Player Data
+ */
+static void clan_member_online(struct map_session_data *sd, bool first)
+{
+ struct clan *c;
+ int i, inactivity;
+ nullpo_retv(sd);
+
+ // For invalid values we must reset it to 0 (no clan)
+ if (sd->status.clan_id < 0) {
+ ShowError("clan_member_online: Invalid clan id, changing to '0'. clan_id='%d' char_id='%d'\n", sd->status.clan_id, sd->status.char_id);
+ sd->status.clan_id = 0;
+ return;
+ }
+
+ c = clan->search(sd->status.clan_id);
+ if (c == NULL) {
+ // This is a silent return because it will reset clan_id in case
+ // a custom clan that was removed and this is a remaining member
+ sd->status.clan_id = 0;
+ sd->clan = NULL;
+ if (!first) {
+ status_change_end(&sd->bl, SC_CLAN_INFO, INVALID_TIMER); // Remove the status
+ status_calc_pc(sd, SCO_FORCE);
+ }
+ clif->clan_leave(sd);
+ return;
+ }
+
+ if (!c->received) {
+ return;
+ }
+
+ if (c->max_member <= c->member_count || VECTOR_LENGTH(c->members) >= c->max_member) {
+ ShowError("Clan System: More members than the maximum allowed in clan #%d\n", c->clan_id);
+ return;
+ }
+
+ i = clan->getindex(c, sd->status.char_id);
+ inactivity = (int)(time(NULL) - sd->status.last_login);
+ if (i == INDEX_NOT_FOUND) {
+ struct clan_member m;
+
+ if (c->kick_time > 0 && inactivity > c->kick_time) {
+ sd->status.clan_id = 0;
+ sd->clan = NULL;
+ clan->buff_end(sd, c);
+ status_change_end(&sd->bl, SC_CLAN_INFO, INVALID_TIMER);
+ clif->clan_leave(sd);
+ return;
+ }
+
+ VECTOR_ENSURE(c->members, 1, 1);
+
+ m.sd = sd;
+ m.char_id = sd->status.char_id;
+ m.online = 1;
+ m.last_login = sd->status.last_login;
+ VECTOR_PUSH(c->members, m);
+ } else {
+ struct clan_member *m = &VECTOR_INDEX(c->members, i);
+
+
+ if (c->kick_time > 0 && inactivity > c->kick_time) {
+ if (m->online == 1) {
+ m->online = 0;
+ m->sd = NULL;
+ c->connect_member--;
+ c->member_count--;
+ }
+ clan->buff_end(sd, c);
+ sd->status.clan_id = 0;
+ sd->clan = NULL;
+ status_change_end(&sd->bl, SC_CLAN_INFO, INVALID_TIMER);
+ VECTOR_ERASE(c->members, i);
+ clif->clan_leave(sd);
+ return;
+ }
+
+ m->sd = sd;
+ m->online = 1;
+ m->last_login = sd->status.last_login;
+ }
+
+ sd->clan = c;
+ c->connect_member++;
+
+ sc_start2(NULL, &sd->bl, SC_CLAN_INFO, 10000, 0, c->clan_id, INFINITE_DURATION);
+
+ if (!first) {
+ // When first called from pc.c we don't need to do status_calc
+ status_calc_pc(sd, SCO_FORCE);
+ }
+
+ clif->clan_basicinfo(sd);
+ clif->clan_onlinecount(c);
+}
+
+/**
+ * Re-join a player on its clan
+ */
+static int clan_rejoin(struct map_session_data *sd, va_list ap)
+{
+ nullpo_ret(sd);
+
+ if (sd->status.clan_id != 0) {
+ // Note: Even if the value is invalid (lower than zero)
+ // the function will fix the invalid value
+ clan->member_online(sd, false);
+ }
+ return 0;
+}
+
+/**
+ * Removes Player from clan
+ */
+static bool clan_leave(struct map_session_data *sd, bool first)
+{
+ int i;
+ struct clan *c;
+
+ nullpo_ret(sd);
+
+ c = sd->clan;
+
+ if (c == NULL) {
+ return false;
+ }
+
+ if (!c->received) {
+ return false;
+ }
+
+ i = clan->getindex(c, sd->status.char_id);
+ if (i != INDEX_NOT_FOUND) {
+ VECTOR_ERASE(c->members, i);
+ c->connect_member--;
+ c->member_count--;
+ }
+
+ sd->status.clan_id = 0;
+ sd->clan = NULL;
+ clan->buff_end(sd, c);
+
+ status_change_end(&sd->bl, SC_CLAN_INFO, INVALID_TIMER);
+ if (!first) {
+ status_calc_pc(sd, SCO_FORCE);
+ }
+
+ chrif->save(sd, 0);
+ clif->clan_onlinecount(c);
+ clif->clan_leave(sd);
+ return true;
+}
+
+/**
+ * Sets a player offline
+ *
+ * @param (struct map_session_data *) sd Player Data
+ */
+static void clan_member_offline(struct map_session_data *sd)
+{
+ struct clan *c;
+ int i;
+
+ nullpo_retv(sd);
+
+ c = sd->clan;
+
+ if (c == NULL) {
+ return;
+ }
+
+ i = clan->getindex(c, sd->status.char_id);
+ if (i != INDEX_NOT_FOUND && VECTOR_INDEX(c->members, i).online == 1) {
+ // Only if it is online, because unit->free is called twice
+ VECTOR_INDEX(c->members, i).online = 0;
+ VECTOR_INDEX(c->members, i).sd = NULL;
+ c->connect_member--;
+ }
+ clif->clan_onlinecount(c);
+}
+
+
+/**
+ * Sends a message to the whole clan
+ */
+static bool clan_send_message(struct map_session_data *sd, const char *mes)
+{
+ int len;
+ nullpo_retr(false, sd);
+ nullpo_retr(false, mes);
+
+ len = (int)strlen(mes);
+
+ if (sd->status.clan_id == 0) {
+ return false;
+ }
+ clan->recv_message(sd->clan, mes, len);
+
+ // Chat logging type 'C' / Clan Chat
+ logs->chat(LOG_CHAT_CLAN, sd->status.clan_id, sd->status.char_id, sd->status.account_id, mapindex_id2name(sd->mapindex), sd->bl.x, sd->bl.y, NULL, mes);
+
+ return true;
+}
+
+/**
+ * Clan receive a message, will be displayed to whole clan
+ */
+static void clan_recv_message(struct clan *c, const char *mes, int len)
+{
+ clif->clan_message(c, mes, len);
+}
+
+/**
+ * Set constants for each clan
+ */
+static void clan_set_constants(void)
+{
+ struct DBIterator *iter = db_iterator(clan->db);
+ struct clan *c;
+
+ for (c = dbi_first(iter); dbi_exists(iter); c = dbi_next(iter)) {
+ script->set_constant2(c->constant, c->clan_id, false, false);
+ }
+
+ dbi_destroy(iter);
+}
+
+/**
+ * Returns the clan_id of bl
+ */
+static int clan_get_id(const struct block_list *bl)
+{
+ nullpo_ret(bl);
+
+ switch (bl->type) {
+ case BL_PC: {
+ const struct map_session_data *sd = BL_UCCAST(BL_PC, bl);
+ return sd->status.clan_id;
+ }
+ case BL_NPC: {
+ const struct npc_data *nd = BL_UCCAST(BL_NPC, bl);
+ return nd->clan_id;
+ }
+ case BL_PET: {
+ const struct pet_data *pd = BL_UCCAST(BL_PET, bl);
+ if (pd->msd != NULL)
+ return pd->msd->status.clan_id;
+ }
+ break;
+ case BL_MOB: {
+ const struct mob_data *md = BL_UCCAST(BL_MOB, bl);
+ const struct map_session_data *msd;
+ if (md->special_state.ai != AI_NONE && (msd = map->id2sd(md->master_id)) != NULL) {
+ return msd->status.clan_id;
+ }
+ return md->clan_id;
+ }
+ case BL_HOM: {
+ const struct homun_data *hd = BL_UCCAST(BL_HOM, bl);
+ if (hd->master != NULL) {
+ return hd->master->status.clan_id;
+ }
+ }
+ break;
+ case BL_MER: {
+ const struct mercenary_data *md = BL_UCCAST(BL_MER, bl);
+ if (md->master != NULL) {
+ return md->master->status.clan_id;
+ }
+ }
+ break;
+ case BL_SKILL: {
+ const struct skill_unit *su = BL_UCCAST(BL_SKILL, bl);
+ if (su->group != NULL)
+ return su->group->clan_id;
+ }
+ break;
+ }
+
+ return 0;
+}
+
+/**
+ * Checks every clan player and remove those who are inactive
+ */
+static int clan_inactivity_kick(int tid, int64 tick, int id, intptr_t data)
+{
+ struct clan *c = NULL;
+ int i;
+
+ if ((c = clan->search(id)) != NULL) {
+ if (!c->kick_time || c->tid != tid || tid == INVALID_TIMER || c->tid == INVALID_TIMER) {
+ ShowError("Timer Mismatch (Time: %d seconds) %d != %d", c->kick_time, c->tid, tid);
+ Assert_report(0);
+ return 0;
+ }
+ for (i = 0; i < VECTOR_LENGTH(c->members); i++) {
+ struct clan_member *m = &VECTOR_INDEX(c->members, i);
+ if (m->char_id <= 0 || m->online <= 0)
+ continue;
+
+ if (m->online) {
+ struct map_session_data *sd = m->sd;
+ if (DIFF_TICK32(sockt->last_tick, sd->idletime) > c->kick_time) {
+ clan->leave(sd, false);
+ }
+ } else if ((time(NULL) - m->last_login) > c->kick_time) {
+ VECTOR_ERASE(c->members, i);
+ c->member_count--;
+ clif->clan_onlinecount(c);
+ }
+ }
+ //Perform the kick for offline members that didn't connect after a server restart
+ c->received = false;
+ intif->clan_kickoffline(c->clan_id, c->kick_time);
+ c->tid = timer->add(timer->gettick() + c->check_time, clan->inactivity_kick, c->clan_id, 0);
+ }
+ return 1;
+}
+
+/**
+ * Timeout for the request of offline kick
+ */
+static int clan_request_kickoffline(int tid, int64 tick, int id, intptr_t data)
+{
+ struct clan *c = NULL;
+
+ if ((c = clan->search(id)) != NULL) {
+ if (c->req_kick_tid != tid || c->req_kick_tid == INVALID_TIMER) {
+ ShowError("Timer Mismatch %d != %d", c->tid, tid);
+ return 0;
+ }
+
+ if (c->received) {
+ c->req_kick_tid = INVALID_TIMER;
+ return 1;
+ }
+
+ intif->clan_kickoffline(c->clan_id, c->kick_time);
+ c->req_kick_tid = timer->add(timer->gettick() + clan->req_timeout, clan->request_kickoffline, c->clan_id, 0);
+ }
+ return 1;
+}
+
+/**
+ * Timeout of the request for counting members
+ */
+static int clan_request_membercount(int tid, int64 tick, int id, intptr_t data)
+{
+ struct clan *c = NULL;
+
+ if ((c = clan->search(id)) != NULL) {
+ if (c->req_count_tid != tid || c->req_count_tid == INVALID_TIMER) {
+ ShowError("Timer Mismatch %d != %d", c->tid, tid);
+ return 0;
+ }
+
+ if (c->received) {
+ c->req_count_tid = INVALID_TIMER;
+ return 1;
+ }
+
+ intif->clan_membercount(c->clan_id, c->kick_time);
+ c->req_count_tid = timer->add(timer->gettick() + clan->req_timeout, clan->request_membercount, c->clan_id, 0);
+ }
+ return 1;
+}
+
+/**
+ * Processes any (plugin-defined) additional fields for a clan entry.
+ *
+ * @param[in, out] entry The destination clan entry, already initialized (clan_id is expected to be already set).
+ * @param[in] t The libconfig entry.
+ * @param[in] n Ordinal number of the entry, to be displayed in case of validation errors.
+ * @param[in] source Source of the entry (file name), to be displayed in case of validation errors.
+ */
+static void clan_read_db_additional_fields(struct clan *entry, struct config_setting_t *t, int n, const char *source)
+{
+ // do nothing. plugins can do own work
+}
+
+static void clan_read_buffs(struct clan *c, struct config_setting_t *buff, const char *source)
+{
+ struct clan_buff *b;
+ const char *str = NULL;
+
+ nullpo_retv(c);
+ nullpo_retv(buff);
+
+ b = &c->buff;
+
+ if (!libconfig->setting_lookup_int(buff, "Icon", &b->icon)) {
+ const char *temp_str = NULL;
+ if (libconfig->setting_lookup_string(buff, "Icon", &temp_str)) {
+ if (*temp_str && !script->get_constant(temp_str, &b->icon)) {
+ ShowWarning("Clan %d: Invalid Buff icon value. Defaulting to SI_BLANK.\n", c->clan_id);
+ b->icon = -1; // SI_BLANK
+ }
+ }
+ }
+
+ if (libconfig->setting_lookup_string(buff, "Script", &str)) {
+ b->script = *str ? script->parse(str, source, -b->icon, SCRIPT_IGNORE_EXTERNAL_BRACKETS, NULL) : NULL;
+ }
+}
+
+/**
+ * Processes one clandb entry from the libconfig file, loading and inserting it
+ * into the clan database.
+ *
+ * @param settings Libconfig setting entry. It is expected to be valid and it
+ * won't be freed (it is care of the caller to do so if
+ * necessary).
+ * @param source Source of the entry (file name), to be displayed in case of
+ * validation errors.
+ * @return int.
+ */
+static int clan_read_db_sub(struct config_setting_t *settings, const char *source, bool reload)
+{
+ int total, s, valid = 0;
+
+ nullpo_retr(false, settings);
+
+ total = libconfig->setting_length(settings);
+
+ for (s = 0; s < total; s++) {
+ struct clan *c;
+ struct config_setting_t *cl, *buff, *allies, *antagonists;
+ const char *aName, *aLeader, *aMap, *aConst;
+ int max_members, kicktime = 0, kickchecktime = 0, id, i, j;
+
+ cl = libconfig->setting_get_elem(settings, s);
+
+ if (libconfig->setting_lookup_int(cl, "Id", &id)) {
+ if (id <= 0) {
+ ShowError("clan_read_db: Invalid Clan Id %d, skipping...\n", id);
+ return false;
+ }
+
+ if (clan->search(id) != NULL) {
+ ShowError("clan_read_db: Duplicate entry for Clan Id %d, skipping...\n", id);
+ return false;
+ }
+ } else {
+ ShowError("clan_read_db: failed to find 'Id' for clan #%d\n", s);
+ return false;
+ }
+
+ if (libconfig->setting_lookup_string(cl, "Const", &aConst)) {
+ if (!*aConst) {
+ ShowError("clan_read_db: Invalid Clan Const '%s', skipping...\n", aConst);
+ return false;
+ }
+
+ if (strlen(aConst) > NAME_LENGTH) {
+ ShowError("clan_read_db: Clan Name '%s' is longer than %d characters, skipping...\n", aConst, NAME_LENGTH);
+ return false;
+ }
+
+ if (clan->searchname(aConst) != NULL) {
+ ShowError("clan_read_db: Duplicate entry for Clan Const '%s', skipping...\n", aConst);
+ return false;
+ }
+ } else {
+ ShowError("clan_read_db: failed to find 'Const' for clan #%d\n", s);
+ return false;
+ }
+
+ if (libconfig->setting_lookup_string(cl, "Name", &aName)) {
+ if (!*aName) {
+ ShowError("clan_read_db: Invalid Clan Name '%s', skipping...\n", aName);
+ return false;
+ }
+
+ if (strlen(aName) > NAME_LENGTH) {
+ ShowError("clan_read_db: Clan Name '%s' is longer than %d characters, skipping...\n", aName, NAME_LENGTH);
+ return false;
+ }
+
+ if (clan->searchname(aName) != NULL) {
+ ShowError("clan_read_db: Duplicate entry for Clan Name '%s', skipping...\n", aName);
+ return false;
+ }
+ } else {
+ ShowError("clan_read_db: failed to find 'Name' for clan #%d\n", s);
+ return false;
+ }
+
+ if (!libconfig->setting_lookup_string(cl, "Leader", &aLeader)) {
+ ShowError("clan_read_db: failed to find 'Leader' for clan #%d\n", s);
+ return false;
+ }
+
+ if (!libconfig->setting_lookup_string(cl, "Map", &aMap)) {
+ ShowError("clan_read_db: failed to find 'Map' for clan #%d\n", s);
+ return false;
+ }
+
+ CREATE(c, struct clan, 1);
+
+ c->clan_id = id;
+ safestrncpy(c->constant, aConst, NAME_LENGTH);
+ safestrncpy(c->name, aName, NAME_LENGTH);
+ safestrncpy(c->master, aLeader, NAME_LENGTH);
+ safestrncpy(c->map, aMap, MAP_NAME_LENGTH_EXT);
+ c->connect_member = 0;
+ c->member_count = 0; // Char server will count members for us
+ c->received = false;
+ c->req_count_tid = INVALID_TIMER;
+ c->req_kick_tid = INVALID_TIMER;
+ c->tid = INVALID_TIMER;
+
+ if (libconfig->setting_lookup_int(cl, "MaxMembers", &max_members)) {
+ if (max_members > 0) {
+ c->max_member = max_members;
+ } else {
+ ShowError("clan_read_db: Clan #%d has invalid value for 'MaxMembers' setting, defaulting to 'clan->max'...\n", id);
+ c->max_member = clan->max;
+ }
+ } else {
+ c->max_member = clan->max;
+ }
+
+ if (libconfig->setting_lookup_int(cl, "KickTime", &kicktime)) {
+ c->kick_time = 60 * 60 * kicktime;
+ } else {
+ c->kick_time = clan->kicktime;
+ }
+
+ if (libconfig->setting_lookup_int(cl, "CheckTime", &kickchecktime)) {
+ c->check_time = 60 * 60 * max(1, kickchecktime) * 1000;
+ } else {
+ c->check_time = clan->checktime;
+ }
+
+ if ((buff = libconfig->setting_get_member(cl, "Buff")) != NULL) {
+ clan->read_buffs(c, buff, source);
+ }
+
+ allies = libconfig->setting_get_member(cl, "Allies");
+
+ if (allies != NULL) {
+ int a = libconfig->setting_length(allies);
+
+ VECTOR_INIT(c->allies);
+ if (a > 0 && clan->max_relations > 0) {
+ const char *allyConst;
+
+ if (a > clan->max_relations) {
+ ShowWarning("clan_read_db: Clan %d has more allies(%d) than allowed(%d), reading only the first %d...\n", c->clan_id, a, clan->max_relations, clan->max_relations);
+ a = clan->max_relations;
+ }
+
+ VECTOR_ENSURE(c->allies, a, 1);
+ for (i = 0; i < a; i++) {
+ struct clan_relationship r;
+ if ((allyConst = libconfig->setting_get_string_elem(allies, i)) != NULL) {
+ ARR_FIND(0, VECTOR_LENGTH(c->allies), j, strcmp(VECTOR_INDEX(c->allies, j).constant, allyConst) == 0);
+ if (j != VECTOR_LENGTH(c->allies)) {
+ ShowError("clan_read_db: Duplicate entry '%s' in allies for Clan %d in '%s', skipping...\n", allyConst, c->clan_id, source);
+ continue;
+ } else if (strcmp(allyConst, c->constant) == 0) {
+ ShowError("clan_read_db: Clans can't be allies of themselves! Clan Id: %d, in '%s'\n", c->clan_id, source);
+ continue;
+ }
+ safestrncpy(r.constant, allyConst, NAME_LENGTH);
+ VECTOR_PUSH(c->allies, r);
+ }
+
+ }
+ }
+ }
+ antagonists = libconfig->setting_get_member(cl, "Antagonists");
+
+ if (antagonists != NULL) {
+ int a = libconfig->setting_length(antagonists);
+
+ VECTOR_INIT(c->antagonists);
+ if (a > 0 && clan->max_relations > 0) {
+ const char *antagonistConst;
+
+ if (a > clan->max_relations) {
+ ShowWarning("clan_read_db: Clan %d has more antagonists(%d) than allowed(%d), reading only the first %d...\n", c->clan_id, a, clan->max_relations, clan->max_relations);
+ a = clan->max_relations;
+ }
+
+ VECTOR_ENSURE(c->antagonists, a, 1);
+ for (i = 0; i < a; i++) {
+ struct clan_relationship r;
+ if ((antagonistConst = libconfig->setting_get_string_elem(antagonists, i)) != NULL) {
+ ARR_FIND(0, VECTOR_LENGTH(c->antagonists), j, strcmp(VECTOR_INDEX(c->antagonists, j).constant, antagonistConst) == 0);
+ if (j != VECTOR_LENGTH(c->antagonists)) {
+ ShowError("clan_read_db: Duplicate entry '%s' in antagonists for Clan %d in '%s', skipping...\n", antagonistConst, c->clan_id, source);
+ continue;
+ } else if (strcmp(antagonistConst, c->constant) == 0) {
+ ShowError("clan_read_db: Clans can't be antagonists of themselves! Clan Id: %d, in '%s'\n", c->clan_id, source);
+ continue;
+ }
+ safestrncpy(r.constant, antagonistConst, NAME_LENGTH);
+ VECTOR_PUSH(c->antagonists, r);
+ }
+ }
+ }
+ }
+
+ clan->read_db_additional_fields(c, cl, s, source);
+ if (c->kick_time > 0) {
+ c->tid = timer->add(timer->gettick() + c->check_time, clan->inactivity_kick, c->clan_id, 0);
+ }
+ c->received = false;
+ c->req_state = reload ? CLAN_REQ_RELOAD : CLAN_REQ_FIRST;
+ c->req_count_tid = timer->add(timer->gettick() + clan->req_timeout, clan->request_membercount, c->clan_id, 0);
+ idb_put(clan->db, c->clan_id, c);
+ VECTOR_INIT(c->members);
+ valid++;
+ }
+
+ // Validating Relations
+ if (valid > 0) {
+ struct DBIterator *iter = db_iterator(clan->db);
+ struct clan *c_ok, *c;
+ int i;
+
+ for (c_ok = dbi_first(iter); dbi_exists(iter); c_ok = dbi_next(iter)) {
+ i = VECTOR_LENGTH(c_ok->allies);
+ while ( i > 0) {
+ struct clan_relationship *r;
+
+ i--;
+ r = &VECTOR_INDEX(c_ok->allies, i);
+ if ((c = clan->searchname(r->constant)) == NULL) {
+ ShowError("clan_read_db: Invalid (nonexistent) Ally '%s' for clan %d in '%s', skipping ally...\n", r->constant, c_ok->clan_id, source);
+ VECTOR_ERASE(c_ok->allies, i);
+ } else {
+ r->clan_id = c->clan_id;
+ }
+ }
+
+ i = VECTOR_LENGTH(c_ok->antagonists);
+ while ( i > 0) {
+ struct clan_relationship *r;
+
+ i--;
+ r = &VECTOR_INDEX(c_ok->antagonists, i);
+ if ((c = clan->searchname(r->constant)) == NULL) {
+ ShowError("clan_read_db: Invalid (nonexistent) Antagonist '%s' for clan %d in '%s', skipping antagonist...", r->constant, c_ok->clan_id, source);
+ VECTOR_ERASE(c_ok->antagonists, i);
+ } else {
+ r->clan_id = c->clan_id;
+ }
+ }
+ }
+ dbi_destroy(iter);
+ }
+
+ ShowStatus("Done reading '" CL_WHITE "%d" CL_RESET "' valid clans of '" CL_WHITE "%d" CL_RESET "' entries in '" CL_WHITE "%s" CL_RESET "'.\n", valid, total, source);
+ return valid;
+}
+
+/**
+ * Reads Clan DB included by clan configuration file.
+ *
+ * @param settings The Settings Group from config file.
+ * @param source File name.
+ */
+static void clan_read_db(struct config_setting_t *settings, const char *source, bool reload)
+{
+ struct config_setting_t *clans;
+
+ nullpo_retv(settings);
+
+ if ((clans = libconfig->setting_get_member(settings, "clans")) != NULL) {
+ int read;
+
+ read = clan->read_db_sub(clans, source, reload);
+ if (read > 0) {
+ clan->set_constants();
+ }
+ } else {
+ ShowError("clan_read_db: Can't find setting 'clans' in '%s'. No Clans found.\n", source);
+ }
+}
+
+/**
+ * Reads clan config file
+ *
+ * @param bool clear Whether to clear clan->db before reading clans
+ */
+static bool clan_config_read(bool reload)
+{
+ struct config_t clan_conf;
+ struct config_setting_t *settings = NULL;
+ const char *config_filename = "conf/clans.conf"; // FIXME: hardcoded name
+ int kicktime = 0, kickchecktime = 0;
+
+ if (reload) {
+ struct DBIterator *iter = db_iterator(clan->db);
+ struct clan *c_clear;
+
+ for (c_clear = dbi_first(iter); dbi_exists(iter); c_clear = dbi_next(iter)) {
+ if (c_clear->buff.script != NULL) {
+ script->free_code(c_clear->buff.script);
+ }
+ if (c_clear->tid != INVALID_TIMER) {
+ timer->delete(c_clear->tid, clan->inactivity_kick);
+ }
+ VECTOR_CLEAR(c_clear->allies);
+ VECTOR_CLEAR(c_clear->antagonists);
+ VECTOR_CLEAR(c_clear->members);
+ HPM->data_store_destroy(&c_clear->hdata);
+ }
+ dbi_destroy(iter);
+ clan->db->clear(clan->db, NULL);
+ }
+
+ if (!libconfig->load_file(&clan_conf, config_filename)) {
+ return false;
+ }
+
+ if ((settings = libconfig->lookup(&clan_conf, "clan_configuration")) == NULL) {
+ ShowError("clan_config_read: failed to find 'clan_configuration'.\n");
+ return false;
+ }
+
+ libconfig->setting_lookup_int(settings, "MaxMembers", &clan->max);
+ libconfig->setting_lookup_int(settings, "MaxRelations", &clan->max_relations);
+ libconfig->setting_lookup_int(settings, "InactivityKickTime", &kicktime);
+ if (!libconfig->setting_lookup_int(settings, "InactivityCheckTime", &kickchecktime)) {
+ ShowError("clan_config_read: failed to find InactivityCheckTime using official value.\n");
+ kickchecktime = 24;
+ }
+
+ // On config file we set the time in hours but here we use in seconds
+ clan->kicktime = 60 * 60 * kicktime;
+ clan->checktime = 60 * 60 * max(kickchecktime, 1) * 1000;
+
+ clan->config_read_additional_settings(settings, config_filename);
+ clan->read_db(settings, config_filename, reload);
+ libconfig->destroy(&clan_conf);
+ return true;
+}
+
+/**
+ * Processes any (plugin-defined) additional settings for clan config.
+ *
+ * @param settings The Settings Group from config file.
+ * @param source Source of the entry (file name), to be displayed in
+ * case of validation errors.
+ */
+static void clan_config_read_additional_settings(struct config_setting_t *settings, const char *source)
+{
+ // do nothing. plugins can do own work
+}
+
+/**
+ * Reloads Clan DB
+ */
+static void clan_reload(void)
+{
+ clan->config_read(true);
+}
+
+/**
+ *
+ */
+static void do_init_clan(bool minimal)
+{
+ clan->db = idb_alloc(DB_OPT_RELEASE_DATA);
+
+ if (minimal) {
+ return;
+ }
+ clan->config_read(false);
+ timer->add_func_list(clan->inactivity_kick, "clan_inactivity_kick");
+}
+
+/**
+ *
+ */
+static void do_final_clan(void)
+{
+ struct DBIterator *iter = db_iterator(clan->db);
+ struct clan *c;
+
+ for (c = dbi_first(iter); dbi_exists(iter); c = dbi_next(iter)) {
+ if (c->buff.script) {
+ script->free_code(c->buff.script);
+ }
+ if (c->tid != INVALID_TIMER) {
+ timer->delete(c->tid, clan->inactivity_kick);
+ }
+ VECTOR_CLEAR(c->allies);
+ VECTOR_CLEAR(c->antagonists);
+ VECTOR_CLEAR(c->members);
+ HPM->data_store_destroy(&c->hdata);
+ }
+ dbi_destroy(iter);
+ db_destroy(clan->db);
+}
+
+/**
+ * Inits Clan Defaults
+ */
+void clan_defaults(void)
+{
+ clan = &clan_s;
+
+ clan->init = do_init_clan;
+ clan->final = do_final_clan;
+ /* */
+ clan->db = NULL;
+ clan->max = 0;
+ clan->max_relations = 0;
+ clan->kicktime = 0;
+ clan->checktime = 0;
+ clan->req_timeout = 60;
+ /* */
+ clan->config_read = clan_config_read;
+ clan->config_read_additional_settings = clan_config_read_additional_settings;
+ clan->read_db = clan_read_db;
+ clan->read_db_sub = clan_read_db_sub;
+ clan->read_db_additional_fields = clan_read_db_additional_fields;
+ clan->read_buffs = clan_read_buffs;
+ clan->search = clan_search;
+ clan->searchname = clan_searchname;
+ clan->getonlinesd = clan_getonlinesd;
+ clan->getindex = clan_getindex;
+ clan->join = clan_join;
+ clan->member_online = clan_member_online;
+ clan->leave = clan_leave;
+ clan->send_message = clan_send_message;
+ clan->recv_message = clan_recv_message;
+ clan->member_offline = clan_member_offline;
+ clan->set_constants = clan_set_constants;
+ clan->get_id = clan_get_id;
+ clan->buff_start = clan_buff_start;
+ clan->buff_end = clan_buff_end;
+ clan->reload = clan_reload;
+ clan->rejoin = clan_rejoin;
+ clan->inactivity_kick = clan_inactivity_kick;
+ clan->request_kickoffline = clan_request_kickoffline;
+ clan->request_membercount = clan_request_membercount;
+}
diff --git a/src/map/clan.h b/src/map/clan.h
new file mode 100644
index 000000000..15ed52680
--- /dev/null
+++ b/src/map/clan.h
@@ -0,0 +1,85 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2017 Hercules Dev Team
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef MAP_CLAN_H
+#define MAP_CLAN_H
+
+#include "map/map.h"
+#include "common/hercules.h"
+#include "common/db.h"
+#include "common/mmo.h"
+
+struct map_session_data;
+
+enum clan_req_state {
+ CLAN_REQ_NONE = 0,
+ CLAN_REQ_FIRST = 1,
+ CLAN_REQ_RELOAD = 2,
+ CLAN_REQ_AFTER_KICK = 3,
+};
+
+/**
+ * clan Interface
+ **/
+struct clan_interface {
+ struct DBMap *db; // int clan_id -> struct clan*
+
+ int max;
+ int max_relations;
+ int kicktime;
+ int checktime;
+ int req_timeout;
+
+ void (*init) (bool minimal);
+ void (*final) (void);
+
+ bool (*config_read) (bool reload);
+ void (*config_read_additional_settings) (struct config_setting_t *settings, const char *source);
+ void (*read_db) (struct config_setting_t *settings, const char *source, bool reload);
+ int (*read_db_sub) (struct config_setting_t *settings, const char *source, bool reload);
+ void (*read_db_additional_fields) (struct clan *entry, struct config_setting_t *t, int n, const char *source);
+ void (*read_buffs) (struct clan *c, struct config_setting_t *buff, const char *source);
+ struct clan *(*search) (int clan_id);
+ struct clan *(*searchname) (const char *name);
+ struct map_session_data *(*getonlinesd) (struct clan *c);
+ int (*getindex) (const struct clan *c, int char_id);
+ bool (*join) (struct map_session_data *sd, int clan_id);
+ void (*member_online) (struct map_session_data *sd, bool first);
+ bool (*leave) (struct map_session_data *sd, bool first);
+ bool (*send_message) (struct map_session_data *sd, const char *mes);
+ void (*recv_message) (struct clan *c, const char *mes, int len);
+ void (*member_offline) (struct map_session_data *sd);
+ void (*set_constants) (void);
+ int (*get_id) (const struct block_list *bl);
+ void (*buff_start) (struct map_session_data *sd, struct clan *c);
+ void (*buff_end) (struct map_session_data *sd, struct clan *c);
+ void (*reload) (void);
+ int (*rejoin) (struct map_session_data *sd, va_list ap);
+ int (*inactivity_kick) (int tid, int64 tick, int id, intptr_t data);
+ int (*request_kickoffline) (int tid, int64 tick, int id, intptr_t data);
+ int (*request_membercount) (int tid, int64 tick, int id, intptr_t data);
+};
+
+#ifdef HERCULES_CORE
+void clan_defaults (void);
+#endif // HERCULES_CORE
+
+HPShared struct clan_interface *clan;
+
+#endif /* MAP_CLAN_H */
diff --git a/src/map/clif.c b/src/map/clif.c
index 6897c357a..eba2ddce3 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -29,6 +29,7 @@
#include "map/channel.h"
#include "map/chat.h"
#include "map/chrif.h"
+#include "map/clan.h"
#include "map/elemental.h"
#include "map/guild.h"
#include "map/homunculus.h"
@@ -40,12 +41,14 @@
#include "map/mail.h"
#include "map/map.h"
#include "map/mercenary.h"
+#include "map/messages.h"
#include "map/mob.h"
#include "map/npc.h"
#include "map/party.h"
#include "map/pc.h"
#include "map/pet.h"
#include "map/quest.h"
+#include "map/rodex.h"
#include "map/script.h"
#include "map/skill.h"
#include "map/status.h"
@@ -53,14 +56,16 @@
#include "map/trade.h"
#include "map/unit.h"
#include "map/vending.h"
+#include "map/achievement.h"
#include "common/HPM.h"
#include "common/cbasetypes.h"
#include "common/conf.h"
#include "common/ers.h"
#include "common/grfio.h"
#include "common/memmgr.h"
-#include "common/mmo.h" // NEW_CARTS
+#include "common/mmo.h" // NEW_CARTS, char_achievements
#include "common/nullpo.h"
+#include "common/packets.h"
#include "common/random.h"
#include "common/showmsg.h"
#include "common/socket.h"
@@ -74,26 +79,28 @@
#include <stdarg.h>
#include <time.h>
-struct clif_interface clif_s;
+static struct clif_interface clif_s;
struct clif_interface *clif;
-struct s_packet_db packet_db[MAX_PACKET_DB + 1];
+static struct s_packet_db packet_db[MAX_PACKET_DB + 1];
/* re-usable */
static struct packet_itemlist_normal itemlist_normal;
static struct packet_itemlist_equip itemlist_equip;
-static struct packet_storelist_normal storelist_normal;
-static struct packet_storelist_equip storelist_equip;
+static struct ZC_STORE_ITEMLIST_NORMAL storelist_normal;
+static struct ZC_STORE_ITEMLIST_EQUIP storelist_equip;
static struct packet_viewequip_ack viewequip_list;
#if PACKETVER >= 20131223
static struct packet_npc_market_result_ack npcmarket_result;
-static struct packet_npc_market_open npcmarket_open;
#endif
+// temporart buffer for send big packets
+char packet_buf[0xffff];
//#define DUMP_UNKNOWN_PACKET
//#define DUMP_INVALID_PACKET
//Converts item type in case of pet eggs.
-static inline int itemtype(int type) {
+static inline int itemtype(int type)
+{
switch( type ) {
#if PACKETVER >= 20080827
case IT_WEAPON:
@@ -108,7 +115,8 @@ static inline int itemtype(int type) {
}
}
-static inline void WBUFPOS(uint8* p, unsigned short pos, short x, short y, unsigned char dir) {
+static inline void WBUFPOS(uint8 *p, unsigned short pos, short x, short y, unsigned char dir)
+{
p += pos;
p[0] = (uint8)(x>>2);
p[1] = (uint8)((x<<6) | ((y>>4)&0x3f));
@@ -116,7 +124,8 @@ static inline void WBUFPOS(uint8* p, unsigned short pos, short x, short y, unsig
}
// client-side: x0+=sx0*0.0625-0.5 and y0+=sy0*0.0625-0.5
-static inline void WBUFPOS2(uint8* p, unsigned short pos, short x0, short y0, short x1, short y1, unsigned char sx0, unsigned char sy0) {
+static inline void WBUFPOS2(uint8 *p, unsigned short pos, short x0, short y0, short x1, short y1, unsigned char sx0, unsigned char sy0)
+{
p += pos;
p[0] = (uint8)(x0>>2);
p[1] = (uint8)((x0<<6) | ((y0>>4)&0x3f));
@@ -127,16 +136,19 @@ static inline void WBUFPOS2(uint8* p, unsigned short pos, short x0, short y0, sh
}
#if 0 // Currently unused
-static inline void WFIFOPOS(int fd, unsigned short pos, short x, short y, unsigned char dir) {
+static inline void WFIFOPOS(int fd, unsigned short pos, short x, short y, unsigned char dir)
+{
WBUFPOS(WFIFOP(fd,pos), 0, x, y, dir);
}
#endif // 0
-static inline void WFIFOPOS2(int fd, unsigned short pos, short x0, short y0, short x1, short y1, unsigned char sx0, unsigned char sy0) {
+static inline void WFIFOPOS2(int fd, unsigned short pos, short x0, short y0, short x1, short y1, unsigned char sx0, unsigned char sy0)
+{
WBUFPOS2(WFIFOP(fd,pos), 0, x0, y0, x1, y1, sx0, sy0);
}
-static inline void RBUFPOS(const uint8* p, unsigned short pos, short* x, short* y, unsigned char* dir) {
+static inline void RBUFPOS(const uint8 *p, unsigned short pos, short *x, short *y, unsigned char *dir)
+{
p += pos;
if( x ) {
@@ -152,12 +164,14 @@ static inline void RBUFPOS(const uint8* p, unsigned short pos, short* x, short*
}
}
-static inline void RFIFOPOS(int fd, unsigned short pos, short* x, short* y, unsigned char* dir) {
+static inline void RFIFOPOS(int fd, unsigned short pos, short *x, short *y, unsigned char *dir)
+{
RBUFPOS(RFIFOP(fd,pos), 0, x, y, dir);
}
#if 0 // currently unused
-static inline void RBUFPOS2(const uint8* p, unsigned short pos, short* x0, short* y0, short* x1, short* y1, unsigned char* sx0, unsigned char* sy0) {
+static inline void RBUFPOS2(const uint8 *p, unsigned short pos, short *x0, short *y0, short *x1, short *y1, unsigned char *sx0, unsigned char *sy0)
+{
p += pos;
if( x0 ) {
@@ -184,13 +198,15 @@ static inline void RBUFPOS2(const uint8* p, unsigned short pos, short* x0, short
sy0[0] = ( p[5] & 0x0f ) >> 0;
}
}
-static inline void RFIFOPOS2(int fd, unsigned short pos, short* x0, short* y0, short* x1, short* y1, unsigned char* sx0, unsigned char* sy0) {
+
+static inline void RFIFOPOS2(int fd, unsigned short pos, short *x0, short *y0, short *x1, short *y1, unsigned char *sx0, unsigned char *sy0)
+{
RBUFPOS2(WFIFOP(fd,pos), 0, x0, y0, x1, y1, sx0, sy0);
}
#endif // 0
//To identify disguised characters.
-bool clif_isdisguised(struct block_list* bl)
+static bool clif_isdisguised(struct block_list *bl)
{
struct map_session_data *sd = BL_CAST(BL_PC, bl);
if (sd == NULL || sd->disguise == -1)
@@ -201,7 +217,8 @@ bool clif_isdisguised(struct block_list* bl)
/*==========================================
* Ip setting of map-server
*------------------------------------------*/
-bool clif_setip(const char* ip) {
+static bool clif_setip(const char *ip)
+{
char ip_str[16];
nullpo_retr(false, ip);
clif->map_ip = sockt->host2ip(ip);
@@ -215,7 +232,8 @@ bool clif_setip(const char* ip) {
return true;
}
-bool clif_setbindip(const char* ip) {
+static bool clif_setbindip(const char *ip)
+{
nullpo_retr(false, ip);
clif->bind_ip = sockt->host2ip(ip);
if ( clif->bind_ip ) {
@@ -231,30 +249,35 @@ bool clif_setbindip(const char* ip) {
* Sets map port to 'port'
* is run from map.c upon loading map server configuration
*------------------------------------------*/
-void clif_setport(uint16 port)
+static void clif_setport(uint16 port)
{
clif->map_port = port;
}
+#if 0 // Unused function
/*==========================================
* Returns map server IP
*------------------------------------------*/
-uint32 clif_getip(void)
+static uint32 clif_getip(void)
{
return clif->map_ip;
}
+#endif // 0
+#if 0 // Unused function
/*==========================================
* Returns map port which is set by clif_setport()
*------------------------------------------*/
-uint16 clif_getport(void)
+static uint16 clif_getport(void)
{
return clif->map_port;
}
+#endif // 0
+
/*==========================================
* Updates server ip resolution and returns it
*------------------------------------------*/
-uint32 clif_refresh_ip(void)
+static uint32 clif_refresh_ip(void)
{
uint32 new_ip = sockt->host2ip(clif->map_ip_str);
if ( new_ip && new_ip != clif->map_ip ) {
@@ -265,7 +288,7 @@ uint32 clif_refresh_ip(void)
return 0;
}
-unsigned char clif_bl_type(struct block_list *bl)
+static unsigned char clif_bl_type(struct block_list *bl)
{
#if PACKETVER >= 20071106
struct view_data *vd;
@@ -292,7 +315,11 @@ unsigned char clif_bl_type(struct block_list *bl)
case BL_NPC:
vd = status->get_viewdata(bl);
nullpo_retr(CLUT_NPC, vd);
+#if PACKETVER >= 20170726
+ return CLUT_EVENT;
+#else
return pc->db_checkid(vd->class) ? CLUT_PC : CLUT_EVENT;
+#endif
case BL_PET:
vd = status->get_viewdata(bl);
nullpo_retr(CLUT_NPC, vd);
@@ -320,7 +347,8 @@ unsigned char clif_bl_type(struct block_list *bl)
* - AREA_WOS (AREA WITHOUT SELF) : Not run for self
* - AREA_CHAT_WOC : Everyone in the area of your chat without a chat
*------------------------------------------*/
-int clif_send_sub(struct block_list *bl, va_list ap) {
+static int clif_send_sub(struct block_list *bl, va_list ap)
+{
struct block_list *src_bl;
struct map_session_data *sd;
void *buf;
@@ -376,7 +404,7 @@ int clif_send_sub(struct block_list *bl, va_list ap) {
return clif->send_actual(fd, buf, len);
}
-int clif_send_actual(int fd, void *buf, int len)
+static int clif_send_actual(int fd, void *buf, int len)
{
nullpo_retr(0, buf);
WFIFOHEAD(fd, len);
@@ -400,7 +428,8 @@ int clif_send_actual(int fd, void *buf, int len)
* Packet Delegation (called on all packets that require data to be sent to more than one client)
* functions that are sent solely to one use whose ID it posses use WFIFOSET
*------------------------------------------*/
-bool clif_send(const void* buf, int len, struct block_list* bl, enum send_target type) {
+static bool clif_send(const void *buf, int len, struct block_list *bl, enum send_target type)
+{
int i;
struct map_session_data *sd, *tsd;
struct party_data *p = NULL;
@@ -408,14 +437,21 @@ bool clif_send(const void* buf, int len, struct block_list* bl, enum send_target
struct battleground_data *bgd = NULL;
int x0 = 0, x1 = 0, y0 = 0, y1 = 0, fd;
struct s_mapiterator* iter;
+ int area_size;
if( type != ALL_CLIENT )
nullpo_ret(bl);
sd = BL_CAST(BL_PC, bl);
- switch(type) {
+ if (sd != NULL && pc_isinvisible(sd)) {
+ if (type == AREA || type == BG || type == BG_AREA)
+ type = SELF;
+ else if (type == AREA_WOS || type == BG_WOS || type == BG_AREA_WOS)
+ return true;
+ }
+ switch(type) {
case ALL_CLIENT: //All player clients.
iter = mapit_getallusers();
while ((tsd = BL_UCAST(BL_PC, mapit->next(iter))) != NULL) {
@@ -440,13 +476,18 @@ bool clif_send(const void* buf, int len, struct block_list* bl, enum send_target
case AREA:
case AREA_WOSC:
+ case AREA_DEAD:
if (sd && bl->prev == NULL) //Otherwise source misses the packet.[Skotlex]
clif->send (buf, len, bl, SELF);
/* Fall through */
case AREA_WOC:
case AREA_WOS:
+ if (type == AREA_DEAD)
+ area_size = DEAD_AREA_SIZE;
+ else
+ area_size = AREA_SIZE;
nullpo_retr(true, bl);
- map->foreachinarea(clif->send_sub, bl->m, bl->x-AREA_SIZE, bl->y-AREA_SIZE, bl->x+AREA_SIZE, bl->y+AREA_SIZE,
+ map->foreachinarea(clif->send_sub, bl->m, bl->x - area_size, bl->y - area_size, bl->x + area_size, bl->y + area_size,
BL_PC, buf, len, bl, type);
break;
case AREA_CHAT_WOC:
@@ -654,6 +695,22 @@ bool clif_send(const void* buf, int len, struct block_list* bl, enum send_target
}
break;
+ case CLAN:
+ if (sd && sd->status.clan_id) {
+ struct clan *c = clan->search(sd->status.clan_id);
+
+ nullpo_retr(false, c);
+
+ for (i = 0; i < VECTOR_LENGTH(c->members); i++) {
+ if (VECTOR_INDEX(c->members, i).online == 0 || (sd = VECTOR_INDEX(c->members, i).sd) == NULL || (fd = sd->fd) <= 0)
+ continue;
+ WFIFOHEAD(fd, len);
+ memcpy(WFIFOP(fd, 0), buf, len);
+ WFIFOSET(fd, len);
+ }
+ }
+ break;
+
default:
ShowError("clif_send: Unrecognized type %u\n", type);
return false;
@@ -665,7 +722,7 @@ bool clif_send(const void* buf, int len, struct block_list* bl, enum send_target
/// Notifies the client, that it's connection attempt was accepted.
/// 0073 <start time>.L <position>.3B <x size>.B <y size>.B (ZC_ACCEPT_ENTER)
/// 02eb <start time>.L <position>.3B <x size>.B <y size>.B <font>.W (ZC_ACCEPT_ENTER2)
-void clif_authok(struct map_session_data *sd)
+static void clif_authok(struct map_session_data *sd)
{
struct packet_authok p;
@@ -677,12 +734,14 @@ void clif_authok(struct map_session_data *sd)
#if PACKETVER >= 20080102
p.font = sd->status.font;
#endif
-#if PACKETVER >= 20141016
+// Some clients smaller than 20160330 cant be tested [4144]
+#if PACKETVER >= 20141022 && PACKETVER < 20160330
p.sex = sd->status.sex;
#endif
clif->send(&p,sizeof(p),&sd->bl,SELF);
}
+/// [4144] Packet not using error_code anymore. Works for fixed error only (MsgString: 9 - Rejected from Server)
/// Notifies the client, that it's connection attempt was refused (ZC_REFUSE_ENTER).
/// 0074 <error code>.B
/// error code:
@@ -691,7 +750,7 @@ void clif_authok(struct map_session_data *sd)
/// 2 = mobile - out of available time
/// 3 = mobile - already logged in
/// 4 = mobile - waiting state
-void clif_authrefuse(int fd, uint8 error_code)
+static void clif_authrefuse(int fd, uint8 error_code)
{
WFIFOHEAD(fd,packet_len(0x74));
WFIFOW(fd,0) = 0x74;
@@ -730,9 +789,11 @@ void clif_authrefuse(int fd, uint8 error_code)
/// 108 = BAN_IP_BLOCK
/// 109 = BAN_INVALID_PWD_CNT
/// 110 = BAN_NOT_ALLOWED_JOBCLASS
+/// 113 = access is restricted between the hours of midnight to 6:00am.
+/// 115 = You are in game connection ban period.
/// ? = disconnected -> MsgStringTable[3]
// TODO: type enum
-void clif_authfail_fd(int fd, int type)
+static void clif_authfail_fd(int fd, int type)
{
if (!fd || !sockt->session[fd] || sockt->session[fd]->func_parse != clif->parse) //clif_authfail should only be invoked on players!
return;
@@ -750,7 +811,8 @@ void clif_authfail_fd(int fd, int type)
/// type:
/// 1 = disconnect, char-select
/// ? = nothing
-void clif_charselectok(int id, uint8 ok) {
+static void clif_charselectok(int id, uint8 ok)
+{
struct map_session_data* sd;
int fd;
@@ -767,7 +829,8 @@ void clif_charselectok(int id, uint8 ok) {
/// Makes an item appear on the ground.
/// 009e <id>.L <name id>.W <identified>.B <x>.W <y>.W <subX>.B <subY>.B <amount>.W (ZC_ITEM_FALL_ENTRY)
/// 084b (ZC_ITEM_FALL_ENTRY4)
-void clif_dropflooritem(struct flooritem_data* fitem) {
+static void clif_dropflooritem(struct flooritem_data *fitem)
+{
struct packet_dropflooritem p;
int view;
@@ -788,13 +851,21 @@ void clif_dropflooritem(struct flooritem_data* fitem) {
p.subX = fitem->subx;
p.subY = fitem->suby;
p.count = fitem->item_data.amount;
-
+#if defined(PACKETVER_ZERO) || PACKETVER >= 20180418
+ if (fitem->showdropeffect) {
+ p.showdropeffect = itemdb_showdropeffect(fitem->item_data.nameid);
+ p.dropeffectmode = itemdb_dropeffectmode(fitem->item_data.nameid);
+ } else {
+ p.showdropeffect = 0;
+ p.dropeffectmode = 0;
+ }
+#endif
clif->send(&p, sizeof(p), &fitem->bl, AREA);
}
/// Makes an item disappear from the ground.
/// 00a1 <id>.L (ZC_ITEM_DISAPPEAR)
-void clif_clearflooritem(struct flooritem_data *fitem, int fd)
+static void clif_clearflooritem(struct flooritem_data *fitem, int fd)
{
unsigned char buf[16];
@@ -820,7 +891,7 @@ void clif_clearflooritem(struct flooritem_data *fitem, int fd)
/// 2 = logged out
/// 3 = teleport
/// 4 = trickdead
-void clif_clearunit_single(int id, clr_type type, int fd)
+static void clif_clearunit_single(int id, enum clr_type type, int fd)
{
WFIFOHEAD(fd, packet_len(0x80));
WFIFOW(fd,0) = 0x80;
@@ -837,7 +908,7 @@ void clif_clearunit_single(int id, clr_type type, int fd)
/// 2 = logged out
/// 3 = teleport
/// 4 = trickdead
-void clif_clearunit_area(struct block_list* bl, clr_type type)
+static void clif_clearunit_area(struct block_list *bl, enum clr_type type)
{
unsigned char buf[8];
@@ -847,7 +918,12 @@ void clif_clearunit_area(struct block_list* bl, clr_type type)
WBUFL(buf,2) = bl->id;
WBUFB(buf,6) = type;
- clif->send(buf, packet_len(0x80), bl, type == CLR_DEAD ? AREA : AREA_WOS);
+ /**
+ * When monster dies, there's a delay before the packet is sent,
+ * so we send it to a bigger area to avoid clients at the edge
+ * walking out of the area and missing it [KirieZ]
+ */
+ clif->send(buf, packet_len(0x80), bl, type == CLR_DEAD ? AREA_DEAD : AREA_WOS);
if (clif->isdisguised(bl)) {
WBUFL(buf,2) = -bl->id;
@@ -858,14 +934,16 @@ void clif_clearunit_area(struct block_list* bl, clr_type type)
/// Used to make monsters with player-sprites disappear after dying
/// like normal monsters, because the client does not remove those
/// automatically.
-int clif_clearunit_delayed_sub(int tid, int64 tick, int id, intptr_t data) {
+static int clif_clearunit_delayed_sub(int tid, int64 tick, int id, intptr_t data)
+{
struct block_list *bl = (struct block_list *)data;
- clif->clearunit_area(bl, (clr_type) id);
+ clif->clearunit_area(bl, (enum clr_type) id);
ers_free(clif->delay_clearunit_ers,bl);
return 0;
}
-void clif_clearunit_delayed(struct block_list* bl, clr_type type, int64 tick) {
+static void clif_clearunit_delayed(struct block_list *bl, enum clr_type type, int64 tick)
+{
struct block_list *tbl;
nullpo_retv(bl);
@@ -875,7 +953,7 @@ void clif_clearunit_delayed(struct block_list* bl, clr_type type, int64 tick) {
}
/// Gets weapon view info from sd's inventory_data and points (*rhand,*lhand)
-void clif_get_weapon_view(struct map_session_data* sd, unsigned short *rhand, unsigned short *lhand)
+static void clif_get_weapon_view(struct map_session_data *sd, int *rhand, int *lhand)
{
nullpo_retv(sd);
nullpo_retv(rhand);
@@ -886,8 +964,8 @@ void clif_get_weapon_view(struct map_session_data* sd, unsigned short *rhand, un
}
#if PACKETVER < 4
- *rhand = sd->status.weapon;
- *lhand = sd->status.shield;
+ *rhand = sd->status.look.weapon;
+ *lhand = sd->status.look.shield;
#else
if (sd->equip_index[EQI_HAND_R] >= 0 &&
sd->inventory_data[sd->equip_index[EQI_HAND_R]])
@@ -915,7 +993,8 @@ void clif_get_weapon_view(struct map_session_data* sd, unsigned short *rhand, un
}
//To make the assignation of the level based on limits clearer/easier. [Skotlex]
-static int clif_setlevel_sub(int lv) {
+static int clif_setlevel_sub(int lv)
+{
if( lv < battle_config.max_lv ) {
;
} else if( lv < battle_config.aura_lv ) {
@@ -927,7 +1006,8 @@ static int clif_setlevel_sub(int lv) {
return lv;
}
-static int clif_setlevel(struct block_list* bl) {
+static int clif_setlevel(struct block_list *bl)
+{
int lv = status->get_lv(bl);
nullpo_retr(0, bl);
if( battle_config.client_limit_unit_lv&bl->type )
@@ -940,8 +1020,10 @@ static int clif_setlevel(struct block_list* bl) {
}
return lv;
}
+
/* for 'packetver < 20091103' 0x78 non-pc-looking unit handling */
-void clif_set_unit_idle2(struct block_list* bl, struct map_session_data *tsd, enum send_target target) {
+static void clif_set_unit_idle2(struct block_list *bl, struct map_session_data *tsd, enum send_target target)
+{
#if PACKETVER < 20091103
struct map_session_data* sd;
struct status_change* sc = status->get_sc(bl);
@@ -993,10 +1075,12 @@ void clif_set_unit_idle2(struct block_list* bl, struct map_session_data *tsd, en
return;
#endif
}
+
/*==========================================
* Prepares 'unit standing' packet
*------------------------------------------*/
-void clif_set_unit_idle(struct block_list* bl, struct map_session_data *tsd, enum send_target target) {
+static void clif_set_unit_idle(struct block_list *bl, struct map_session_data *tsd, enum send_target target)
+{
struct map_session_data* sd;
struct status_change* sc = status->get_sc(bl);
struct view_data* vd = status->get_viewdata(bl);
@@ -1033,7 +1117,7 @@ void clif_set_unit_idle(struct block_list* bl, struct map_session_data *tsd, enu
p.head = vd->hair_style;
p.weapon = vd->weapon;
p.accessory = vd->head_bottom;
-#if PACKETVER < 7
+#if PACKETVER < 7 || PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
p.shield = vd->shield;
#endif
p.accessory2 = vd->head_top;
@@ -1065,14 +1149,17 @@ void clif_set_unit_idle(struct block_list* bl, struct map_session_data *tsd, enu
#endif
#if PACKETVER >= 20120221
if (battle_config.show_monster_hp_bar && bl->type == BL_MOB && status_get_hp(bl) < status_get_max_hp(bl)) {
- const struct mob_data *md = BL_UCCAST(BL_MOB, bl);
p.maxHP = status_get_max_hp(bl);
p.HP = status_get_hp(bl);
- p.isBoss = (md->spawn != NULL && md->spawn->state.boss) ? 1 : 0;
} else {
p.maxHP = -1;
p.HP = -1;
- p.isBoss = 0;
+ }
+ if (bl->type == BL_MOB) {
+ const struct mob_data *md = BL_UCCAST(BL_MOB, bl);
+ p.isBoss = (md->spawn != NULL) ? md->spawn->state.boss : BTYPE_NONE;
+ } else {
+ p.isBoss = BTYPE_NONE;
}
#endif
#if PACKETVER >= 20150513
@@ -1099,8 +1186,10 @@ void clif_set_unit_idle(struct block_list* bl, struct map_session_data *tsd, enu
}
}
+
/* for 'packetver < 20091103' 0x7c non-pc-looking unit handling */
-void clif_spawn_unit2(struct block_list* bl, enum send_target target) {
+static void clif_spawn_unit2(struct block_list *bl, enum send_target target)
+{
#if PACKETVER < 20091103
struct map_session_data* sd;
struct status_change* sc = status->get_sc(bl);
@@ -1146,7 +1235,9 @@ void clif_spawn_unit2(struct block_list* bl, enum send_target target) {
return;
#endif
}
-void clif_spawn_unit(struct block_list* bl, enum send_target target) {
+
+static void clif_spawn_unit(struct block_list *bl, enum send_target target)
+{
struct map_session_data* sd;
struct status_change* sc = status->get_sc(bl);
struct view_data* vd = status->get_viewdata(bl);
@@ -1183,7 +1274,7 @@ void clif_spawn_unit(struct block_list* bl, enum send_target target) {
p.head = vd->hair_style;
p.weapon = vd->weapon;
p.accessory = vd->head_bottom;
-#if PACKETVER < 7
+#if PACKETVER < 7 || PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
p.shield = vd->shield;
#endif
p.accessory2 = vd->head_top;
@@ -1214,14 +1305,17 @@ void clif_spawn_unit(struct block_list* bl, enum send_target target) {
#endif
#if PACKETVER >= 20120221
if (battle_config.show_monster_hp_bar && bl->type == BL_MOB && status_get_hp(bl) < status_get_max_hp(bl)) {
- const struct mob_data *md = BL_UCCAST(BL_MOB, bl);
p.maxHP = status_get_max_hp(bl);
p.HP = status_get_hp(bl);
- p.isBoss = (md->spawn != NULL && md->spawn->state.boss) ? 1 : 0;
} else {
p.maxHP = -1;
p.HP = -1;
- p.isBoss = 0;
+ }
+ if (bl->type == BL_MOB) {
+ const struct mob_data *md = BL_UCCAST(BL_MOB, bl);
+ p.isBoss = (md->spawn != NULL) ? md->spawn->state.boss : BTYPE_NONE;
+ } else {
+ p.isBoss = BTYPE_NONE;
}
#endif
#if PACKETVER >= 20150513
@@ -1254,7 +1348,8 @@ void clif_spawn_unit(struct block_list* bl, enum send_target target) {
/*==========================================
* Prepares 'unit walking' packet
*------------------------------------------*/
-void clif_set_unit_walking(struct block_list* bl, struct map_session_data *tsd, struct unit_data* ud, enum send_target target) {
+static void clif_set_unit_walking(struct block_list *bl, struct map_session_data *tsd, struct unit_data *ud, enum send_target target)
+{
struct map_session_data* sd;
struct status_change* sc = status->get_sc(bl);
struct view_data* vd = status->get_viewdata(bl);
@@ -1288,7 +1383,7 @@ void clif_set_unit_walking(struct block_list* bl, struct map_session_data *tsd,
p.weapon = vd->weapon;
p.accessory = vd->head_bottom;
p.moveStartTime = (unsigned int)timer->gettick();
-#if PACKETVER < 7
+#if PACKETVER < 7 || PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
p.shield = vd->shield;
#endif
p.accessory2 = vd->head_top;
@@ -1313,14 +1408,17 @@ void clif_set_unit_walking(struct block_list* bl, struct map_session_data *tsd,
#endif
#if PACKETVER >= 20120221
if (battle_config.show_monster_hp_bar && bl->type == BL_MOB && status_get_hp(bl) < status_get_max_hp(bl)) {
- const struct mob_data *md = BL_UCCAST(BL_MOB, bl);
p.maxHP = status_get_max_hp(bl);
p.HP = status_get_hp(bl);
- p.isBoss = (md->spawn != NULL && md->spawn->state.boss) ? 1 : 0;
} else {
p.maxHP = -1;
p.HP = -1;
- p.isBoss = 0;
+ }
+ if (bl->type == BL_MOB) {
+ const struct mob_data *md = BL_UCCAST(BL_MOB, bl);
+ p.isBoss = (md->spawn != NULL) ? md->spawn->state.boss : BTYPE_NONE;
+ } else {
+ p.isBoss = BTYPE_NONE;
}
#endif
#if PACKETVER >= 20150513
@@ -1352,7 +1450,7 @@ void clif_set_unit_walking(struct block_list* bl, struct map_session_data *tsd,
/// 01b0 <id>.L <type>.B <value>.L
/// type:
/// unused
-void clif_class_change(struct block_list *bl, int class_, int type, struct map_session_data *sd)
+static void clif_class_change(struct block_list *bl, int class_, int type, struct map_session_data *sd)
{
nullpo_retv(bl);
@@ -1374,7 +1472,8 @@ void clif_class_change(struct block_list *bl, int class_, int type, struct map_s
/// Notifies the client of an object's spirits.
/// 01d0 <id>.L <amount>.W (ZC_SPIRITS)
/// 01e1 <id>.L <amount>.W (ZC_SPIRITS2)
-void clif_spiritball_single(int fd, struct map_session_data *sd) {
+static void clif_spiritball_single(int fd, struct map_session_data *sd)
+{
nullpo_retv(sd);
WFIFOHEAD(fd, packet_len(0x1e1));
WFIFOW(fd,0)=0x1e1;
@@ -1386,7 +1485,7 @@ void clif_spiritball_single(int fd, struct map_session_data *sd) {
/*==========================================
* Kagerou/Oboro amulet spirit
*------------------------------------------*/
-void clif_charm_single(int fd, struct map_session_data *sd)
+static void clif_charm_single(int fd, struct map_session_data *sd)
{
#if PACKETVER >= 20110809
nullpo_retv(sd);
@@ -1403,7 +1502,8 @@ void clif_charm_single(int fd, struct map_session_data *sd)
* Run when player changes map / refreshes
* Tells its client to display all weather settings being used by this map
*------------------------------------------*/
-void clif_weather_check(struct map_session_data *sd) {
+static void clif_weather_check(struct map_session_data *sd)
+{
int16 m;
int fd;
@@ -1428,10 +1528,11 @@ void clif_weather_check(struct map_session_data *sd) {
if (map->list[m].flag.leaves)
clif->specialeffect_single(&sd->bl, 333, fd);
}
+
/**
* Run when the weather on a map changes, throws all players in map id 'm' to clif_weather_check function
**/
-void clif_weather(int16 m)
+static void clif_weather(int16 m)
{
struct s_mapiterator* iter;
struct map_session_data *sd=NULL;
@@ -1443,10 +1544,11 @@ void clif_weather(int16 m)
}
mapit->free(iter);
}
+
/**
* Main function to spawn a unit on the client (player/mob/pet/etc)
**/
-bool clif_spawn(struct block_list *bl)
+static bool clif_spawn(struct block_list *bl)
{
struct view_data *vd;
@@ -1489,8 +1591,9 @@ bool clif_spawn(struct block_list *bl)
}
if (sd->charm_type != CHARM_TYPE_NONE && sd->charm_count > 0)
clif->spiritcharm(sd);
- if (sd->status.robe)
- clif->refreshlook(bl,bl->id,LOOK_ROBE,sd->status.robe,AREA);
+ if (sd->status.look.robe != 0)
+ clif->refreshlook(bl, bl->id, LOOK_ROBE, sd->status.look.robe, AREA);
+ clif->hat_effect(bl, NULL, AREA);
}
break;
case BL_MOB:
@@ -1509,6 +1612,8 @@ bool clif_spawn(struct block_list *bl)
clif->specialeffect(&nd->bl,423,AREA);
else if (nd->size == SZ_MEDIUM)
clif->specialeffect(&nd->bl,421,AREA);
+ if (nd->clan_id > 0)
+ clif->sc_load(&nd->bl, nd->bl.id, AREA, status->dbs->IconChangeTable[SC_CLAN_INFO], 0, nd->clan_id, 0);
}
break;
case BL_PET:
@@ -1521,19 +1626,12 @@ bool clif_spawn(struct block_list *bl)
/// Sends information about owned homunculus to the client (ZC_PROPERTY_HOMUN). [orn]
/// 022e <name>.24B <modified>.B <level>.W <hunger>.W <intimacy>.W <equip id>.W <atk>.W <matk>.W <hit>.W <crit>.W <def>.W <mdef>.W <flee>.W <aspd>.W <hp>.W <max hp>.W <sp>.W <max sp>.W <exp>.L <max exp>.L <skill points>.W <atk range>.W
-void clif_hominfo(struct map_session_data *sd, struct homun_data *hd, int flag) {
+static void clif_hominfo(struct map_session_data *sd, struct homun_data *hd, int flag)
+{
+#if PACKETVER_MAIN_NUM >= 20101005 || PACKETVER_RE_NUM >= 20080827 || defined(PACKETVER_ZERO)
struct status_data *hstatus;
- unsigned char buf[128];
enum homun_type htype;
- int offset = 0;
-
-// probably can works also for < 20141223, but in 3CeaM packet size defined only for 20150513
-#if PACKETVER < 20150513
- int cmd = 0x22e;
-#else
- int cmd = 0x9f7;
-#endif
- int len = packet_len(cmd);
+ struct PACKET_ZC_PROPERTY_HOMUN p;
nullpo_retv(sd);
nullpo_retv(hd);
@@ -1541,75 +1639,74 @@ void clif_hominfo(struct map_session_data *sd, struct homun_data *hd, int flag)
hstatus = &hd->battle_status;
htype = homun->class2type(hd->homunculus.class_);
- memset(buf, 0, len);
- WBUFW(buf, 0) = cmd;
- memcpy(WBUFP(buf, 2), hd->homunculus.name, NAME_LENGTH);
+ memset(&p, 0, sizeof(p));
+ p.packetType = HEADER_ZC_PROPERTY_HOMUN;
+ memcpy(p.name, hd->homunculus.name, NAME_LENGTH);
// Bit field, bit 0 : rename_flag (1 = already renamed), bit 1 : homunc vaporized (1 = true), bit 2 : homunc dead (1 = true)
- WBUFB(buf, 26) = (!battle_config.hom_rename && hd->homunculus.rename_flag ? 0x1 : 0x0) | (hd->homunculus.vaporize == HOM_ST_REST ? 0x2 : 0) | (hd->homunculus.hp > 0 ? 0x4 : 0);
- WBUFW(buf, 27) = hd->homunculus.level;
- WBUFW(buf, 29) = hd->homunculus.hunger;
- WBUFW(buf, 31) = (unsigned short) (hd->homunculus.intimacy / 100) ;
- WBUFW(buf, 33) = 0; // equip id
+ p.flags = (!battle_config.hom_rename && hd->homunculus.rename_flag ? 0x1 : 0x0) | (hd->homunculus.vaporize == HOM_ST_REST ? 0x2 : 0) | (hd->homunculus.hp > 0 ? 0x4 : 0);
+ p.level = hd->homunculus.level;
+ p.hunger = hd->homunculus.hunger;
+ p.intimacy = hd->homunculus.intimacy / 100;
+ p.itemId = 0; // equip id
#ifdef RENEWAL
- WBUFW(buf, 35) = cap_value(hstatus->rhw.atk2, 0, INT16_MAX);
+ p.atk2 = cap_value(hstatus->rhw.atk2, 0, INT16_MAX);
#else
- WBUFW(buf,35) = cap_value(hstatus->rhw.atk2 + hstatus->batk, 0, INT16_MAX);
+ p.atk2 = cap_value(hstatus->rhw.atk2 + hstatus->batk, 0, INT16_MAX);
#endif
- WBUFW(buf,37) = cap_value(hstatus->matk_max, 0, INT16_MAX);
- WBUFW(buf,39) = hstatus->hit;
+ p.matk = cap_value(hstatus->matk_max, 0, INT16_MAX);
+ p.hit = hstatus->hit;
if (battle_config.hom_setting&0x10)
- WBUFW(buf, 41) = hstatus->luk / 3 + 1; //crit is a +1 decimal value! Just display purpose.[Vicious]
+ p.crit = hstatus->luk / 3 + 1; //crit is a +1 decimal value! Just display purpose.[Vicious]
else
- WBUFW(buf, 41) = hstatus->cri / 10;
+ p.crit = hstatus->cri / 10;
#ifdef RENEWAL
- WBUFW(buf, 43) = hstatus->def + hstatus->def2;
- WBUFW(buf, 45) = hstatus->mdef + hstatus->mdef2;
+ p.def = hstatus->def + hstatus->def2;
+ p.mdef = hstatus->mdef + hstatus->mdef2;
#else
- WBUFW(buf, 43) =hstatus->def + hstatus->vit ;
- WBUFW(buf, 45) = hstatus->mdef;
+ p.def = hstatus->def + hstatus->vit ;
+ p.mdef = hstatus->mdef;
#endif
- WBUFW(buf, 47) = hstatus->flee;
- WBUFW(buf, 49) = (flag) ? 0 : hstatus->amotion;
+ p.flee = hstatus->flee;
+ p.amotion = (flag) ? 0 : hstatus->amotion;
// probably can works also for < 20141223, but in 3CeaM packet size defined only for 20150513
#if PACKETVER < 20150513
if (hstatus->max_hp > INT16_MAX) {
- WBUFW(buf, 51) = hstatus->hp / (hstatus->max_hp / 100);
- WBUFW(buf, 53) = 100;
+ p.hp = hstatus->hp / (hstatus->max_hp / 100);
+ p.maxHp = 100;
} else {
- WBUFW(buf, 51) = hstatus->hp;
- WBUFW(buf, 53) = hstatus->max_hp;
+ p.hp = hstatus->hp;
+ p.maxHp = hstatus->max_hp;
}
#else
- WBUFL(buf, 51) = hstatus->hp;
- WBUFL(buf, 55) = hstatus->max_hp;
- offset = 4;
+ p.hp = hstatus->hp;
+ p.maxHp = hstatus->max_hp;
#endif
if (hstatus->max_sp > INT16_MAX) {
- WBUFW(buf, 55 + offset) = hstatus->sp / (hstatus->max_sp / 100);
- WBUFW(buf, 57 + offset) = 100;
+ p.sp = hstatus->sp / (hstatus->max_sp / 100);
+ p.maxSp = 100;
} else {
- WBUFW(buf, 55 + offset) = hstatus->sp;
- WBUFW(buf, 57 + offset) = hstatus->max_sp;
+ p.sp = hstatus->sp;
+ p.maxSp = hstatus->max_sp;
}
- WBUFL(buf, 59 + offset) = hd->homunculus.exp;
- WBUFL(buf, 63 + offset) = hd->exp_next;
+ p.exp = hd->homunculus.exp;
+ p.expNext = hd->exp_next;
switch (htype) {
case HT_REG:
case HT_EVO:
if (hd->homunculus.level >= battle_config.hom_max_level)
- WBUFL(buf, 63 + offset) = 0;
+ p.expNext = 0;
break;
case HT_S:
if (hd->homunculus.level >= battle_config.hom_S_max_level)
- WBUFL(buf, 63 + offset) = 0;
+ p.expNext = 0;
break;
}
- WBUFW(buf, 67 + offset) = hd->homunculus.skillpts;
- WBUFW(buf, 69 + offset) = status_get_range(&hd->bl);
-
- clif->send(buf, len, &sd->bl, SELF);
+ p.skillPoints = hd->homunculus.skillpts;
+ p.range = status_get_range(&hd->bl);
+ clif->send(&p, sizeof(p), &sd->bl, SELF);
+#endif
}
/// Notification about a change in homunuculus' state (ZC_CHANGESTATE_MER).
@@ -1622,7 +1719,7 @@ void clif_hominfo(struct map_session_data *sd, struct homun_data *hd, int flag)
/// 2 = hunger
/// 3 = accessory?
/// ? = ignored
-void clif_send_homdata(struct map_session_data *sd, int state, int param)
+static void clif_send_homdata(struct map_session_data *sd, int state, int param)
{
int fd;
@@ -1643,7 +1740,8 @@ void clif_send_homdata(struct map_session_data *sd, int state, int param)
}
/// Prepares and sends homun related information [orn]
-void clif_homskillinfoblock(struct map_session_data *sd) {
+static void clif_homskillinfoblock(struct map_session_data *sd)
+{
struct homun_data *hd;
int fd;
int i,j;
@@ -1664,8 +1762,7 @@ void clif_homskillinfoblock(struct map_session_data *sd) {
if ( id != 0 ) {
j = id - HM_SKILLBASE;
WFIFOW(fd, len) = id;
- WFIFOW(fd, len + 2) = skill->get_inf(id);
- WFIFOW(fd, len + 4) = 0;
+ WFIFOL(fd, len + 2) = skill->get_inf(id);
WFIFOW(fd, len + 6) = hd->homunculus.hskill[j].lv;
if ( hd->homunculus.hskill[j].lv ) {
WFIFOW(fd, len + 8) = skill->get_sp(id, hd->homunculus.hskill[j].lv);
@@ -1685,7 +1782,9 @@ void clif_homskillinfoblock(struct map_session_data *sd) {
return;
}
-void clif_homskillup(struct map_session_data *sd, uint16 skill_id) { //[orn]
+//[orn]
+static void clif_homskillup(struct map_session_data *sd, uint16 skill_id)
+{
struct homun_data *hd;
int fd, idx;
nullpo_retv(sd);
@@ -1705,24 +1804,30 @@ void clif_homskillup(struct map_session_data *sd, uint16 skill_id) { //[orn]
WFIFOSET(fd,packet_len(0x239));
}
-void clif_hom_food(struct map_session_data *sd,int foodid,int fail)
+/// Result of request to feed a homun/merc (ZC_FEED_MER).
+/// 022f <result>.B <name id>.W
+/// result:
+/// 0 = failure
+/// 1 = success
+static void clif_hom_food(struct map_session_data *sd, int foodid, int fail)
{
int fd;
+ struct PACKET_ZC_FEED_MER p;
+
nullpo_retv(sd);
fd = sd->fd;
- WFIFOHEAD(fd,packet_len(0x22f));
- WFIFOW(fd,0)=0x22f;
- WFIFOB(fd,2)=fail;
- WFIFOW(fd,3)=foodid;
- WFIFOSET(fd,packet_len(0x22f));
-
- return;
+ WFIFOHEAD(fd, sizeof(p));
+ p.packetType = 0x22f;
+ p.result = fail;
+ p.itemId = foodid;
+ memcpy(WFIFOP(fd, 0), &p, sizeof(p));
+ WFIFOSET(fd, sizeof(p));
}
/// Notifies the client, that it is walking (ZC_NOTIFY_PLAYERMOVE).
/// 0087 <walk start time>.L <walk data>.6B
-void clif_walkok(struct map_session_data *sd)
+static void clif_walkok(struct map_session_data *sd)
{
int fd;
@@ -1735,7 +1840,8 @@ void clif_walkok(struct map_session_data *sd)
WFIFOSET(fd,packet_len(0x87));
}
-void clif_move2(struct block_list *bl, struct view_data *vd, struct unit_data *ud) {
+static void clif_move2(struct block_list *bl, struct view_data *vd, struct unit_data *ud)
+{
#ifdef ANTI_MAYAP_CHEAT
struct status_change *sc = NULL;
#endif
@@ -1789,7 +1895,7 @@ void clif_move2(struct block_list *bl, struct view_data *vd, struct unit_data *u
/// Notifies clients in an area, that an other visible object is walking (ZC_NOTIFY_PLAYERMOVE).
/// 0086 <id>.L <walk data>.6B <walk start time>.L
/// Note: unit must not be self
-void clif_move(struct unit_data *ud)
+static void clif_move(struct unit_data *ud)
{
unsigned char buf[16];
struct view_data *vd;
@@ -1843,7 +1949,8 @@ void clif_move(struct unit_data *ud)
/*==========================================
* Delays the map->quit of a player after they are disconnected. [Skotlex]
*------------------------------------------*/
-int clif_delayquit(int tid, int64 tick, int id, intptr_t data) {
+static int clif_delayquit(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data *sd = NULL;
//Remove player from map server
@@ -1855,7 +1962,8 @@ int clif_delayquit(int tid, int64 tick, int id, intptr_t data) {
/*==========================================
*
*------------------------------------------*/
-void clif_quitsave(int fd, struct map_session_data *sd) {
+static void clif_quitsave(int fd, struct map_session_data *sd)
+{
nullpo_retv(sd);
if (!battle_config.prevent_logout ||
DIFF_TICK(timer->gettick(), sd->canlog_tick) > battle_config.prevent_logout)
@@ -1871,7 +1979,8 @@ void clif_quitsave(int fd, struct map_session_data *sd) {
/// Notifies the client of a position change to coordinates on given map (ZC_NPCACK_MAPMOVE).
/// 0091 <map name>.16B <x>.W <y>.W
-void clif_changemap(struct map_session_data *sd, short m, int x, int y) {
+static void clif_changemap(struct map_session_data *sd, short m, int x, int y)
+{
int fd;
nullpo_retv(sd);
fd = sd->fd;
@@ -1884,24 +1993,81 @@ void clif_changemap(struct map_session_data *sd, short m, int x, int y) {
WFIFOSET(fd,packet_len(0x91));
}
+/// Notifies the client of a position change (on air ship) to coordinates on given map (ZC_AIRSHIP_MAPMOVE).
+/// 0A4B <map name>.16B <x>.W <y>.W
+static void clif_changemap_airship(struct map_session_data *sd, short m, int x, int y)
+{
+#if PACKETVER_MAIN_NUM >= 20180620 || PACKETVER_RE_NUM >= 20180321 || PACKETVER_ZERO_NUM >= 20171027
+ // [4144] this packet is not used yet by kro, but it here
+ int fd;
+ nullpo_retv(sd);
+ fd = sd->fd;
+
+ WFIFOHEAD(fd, packet_len(0xa4b));
+ WFIFOW(fd, 0) = 0xa4b;
+ mapindex->getmapname_ext(map->list[m].custom_name ? map->list[map->list[m].instance_src_map].name : map->list[m].name, WFIFOP(fd,2));
+ WFIFOW(fd, 18) = x;
+ WFIFOW(fd, 20) = y;
+ WFIFOSET(fd, packet_len(0xa4b));
+#endif
+}
+
/// Notifies the client of a position change to coordinates on given map, which is on another map-server (ZC_NPCACK_SERVERMOVE).
/// 0092 <map name>.16B <x>.W <y>.W <ip>.L <port>.W
-void clif_changemapserver(struct map_session_data* sd, unsigned short map_index, int x, int y, uint32 ip, uint16 port) {
+/// 0ac7 <map name>.16B <x>.W <y>.W <ip>.L <port>.W <dns host>.128B
+static void clif_changemapserver(struct map_session_data *sd, unsigned short map_index, int x, int y, uint32 ip, uint16 port, char *dnsHost)
+{
int fd;
+#if PACKETVER >= 20170315
+ const int cmd = 0xac7;
+#else
+ const int cmd = 0x92;
+#endif
nullpo_retv(sd);
fd = sd->fd;
- WFIFOHEAD(fd,packet_len(0x92));
- WFIFOW(fd,0) = 0x92;
- mapindex->getmapname_ext(mapindex_id2name(map_index), WFIFOP(fd,2));
- WFIFOW(fd,18) = x;
- WFIFOW(fd,20) = y;
- WFIFOL(fd,22) = htonl(ip);
- WFIFOW(fd,26) = sockt->ntows(htons(port)); // [!] LE byte order here [!]
- WFIFOSET(fd,packet_len(0x92));
+ WFIFOHEAD(fd, packet_len(cmd));
+ WFIFOW(fd, 0) = cmd;
+ mapindex->getmapname_ext(mapindex_id2name(map_index), WFIFOP(fd, 2));
+ WFIFOW(fd, 18) = x;
+ WFIFOW(fd, 20) = y;
+ WFIFOL(fd, 22) = htonl(ip);
+ WFIFOW(fd, 26) = sockt->ntows(htons(port)); // [!] LE byte order here [!]
+
+#if PACKETVER >= 20170315
+ if (dnsHost != NULL) {
+ safestrncpy(WFIFOP(fd, 28), dnsHost, 128);
+ } else {
+ memset(WFIFOP(fd, 28), 0, 128);
+ }
+#endif
+
+ WFIFOSET(fd, packet_len(cmd));
}
-void clif_blown(struct block_list *bl)
+/// Notifies the client of a position change (with air ship) to coordinates on given map, which is on another map-server (ZC_NPCACK_SERVERMOVE).
+/// 0a4c <map name>.16B <x>.W <y>.W <ip>.L <port>.W
+static void clif_changemapserver_airship(struct map_session_data *sd, unsigned short map_index, int x, int y, uint32 ip, uint16 port)
+{
+#if (PACKETVER_MAIN_NUM >= 20180620) || (PACKETVER_RE_NUM >= 20180321) || (PACKETVER_ZERO_NUM >= 20171027)
+ // [4144] this packet is not used yet by kro, but it here
+ int fd;
+ const int cmd = 0xa4c;
+ nullpo_retv(sd);
+ fd = sd->fd;
+
+ WFIFOHEAD(fd, packet_len(cmd));
+ WFIFOW(fd, 0) = cmd;
+ mapindex->getmapname_ext(mapindex_id2name(map_index), WFIFOP(fd, 2));
+ WFIFOW(fd, 18) = x;
+ WFIFOW(fd, 20) = y;
+ WFIFOL(fd, 22) = htonl(ip);
+ WFIFOW(fd, 26) = sockt->ntows(htons(port)); // [!] LE byte order here [!]
+ WFIFOSET(fd, packet_len(cmd));
+#endif
+}
+
+static void clif_blown(struct block_list *bl)
{
//Aegis packets says fixpos, but it's unsure whether slide works better or not.
nullpo_retv(bl);
@@ -1913,7 +2079,8 @@ void clif_blown(struct block_list *bl)
/// isn't walkable, the char doesn't move at all. If the char is
/// sitting it will stand up (ZC_STOPMOVE).
/// 0088 <id>.L <x>.W <y>.W
-void clif_fixpos(struct block_list *bl) {
+static void clif_fixpos(struct block_list *bl)
+{
unsigned char buf[10];
nullpo_retv(bl);
@@ -1932,7 +2099,7 @@ void clif_fixpos(struct block_list *bl) {
/// Displays the buy/sell dialog of an NPC shop (ZC_SELECT_DEALTYPE).
/// 00c4 <shop id>.L
-void clif_npcbuysell(struct map_session_data* sd, int id)
+static void clif_npcbuysell(struct map_session_data *sd, int id)
{
int fd;
@@ -1947,15 +2114,17 @@ void clif_npcbuysell(struct map_session_data* sd, int id)
/// Presents list of items, that can be bought in an NPC shop (ZC_PC_PURCHASE_ITEMLIST).
/// 00c6 <packet len>.W { <price>.L <discount price>.L <item type>.B <name id>.W }*
-void clif_buylist(struct map_session_data *sd, struct npc_data *nd) {
+static void clif_buylist(struct map_session_data *sd, struct npc_data *nd)
+{
struct npc_item_list *shop = NULL;
unsigned short shop_size = 0;
- int fd,i,c;
+ int fd, i, c, len;
+ struct PACKET_ZC_PC_PURCHASE_ITEMLIST *p;
nullpo_retv(sd);
nullpo_retv(nd);
- if( nd->subtype == SCRIPT ) {
+ if (nd->subtype == SCRIPT) {
shop = nd->u.scr.shop->item;
shop_size = nd->u.scr.shop->items;
} else {
@@ -1965,40 +2134,43 @@ void clif_buylist(struct map_session_data *sd, struct npc_data *nd) {
fd = sd->fd;
- WFIFOHEAD(fd, 4 + shop_size * 11);
- WFIFOW(fd,0) = 0xc6;
+ len = sizeof(struct PACKET_ZC_PC_PURCHASE_ITEMLIST) + shop_size * sizeof(struct PACKET_ZC_PC_PURCHASE_ITEMLIST_sub);
+ WFIFOHEAD(fd, len);
+ p = WFIFOP(fd, 0);
+ p->packetType = 0xc6;
c = 0;
- for( i = 0; i < shop_size; i++ ) {
- if( shop[i].nameid ) {
+ for (i = 0; i < shop_size; i++) {
+ if (shop[i].nameid) {
struct item_data* id = itemdb->exists(shop[i].nameid);
int val = shop[i].value;
- if( id == NULL )
+ if (id == NULL)
continue;
- WFIFOL(fd, 4+c*11) = val;
- WFIFOL(fd, 8+c*11) = pc->modifybuyvalue(sd,val);
- WFIFOB(fd,12+c*11) = itemtype(id->type);
- WFIFOW(fd,13+c*11) = ( id->view_id > 0 ) ? id->view_id : id->nameid;
+ p->items[c].price = val;
+ p->items[c].discountPrice = pc->modifybuyvalue(sd, val);
+ p->items[c].itemType = itemtype(id->type);
+ p->items[c].itemId = (id->view_id > 0) ? id->view_id : id->nameid;
c++;
}
}
- WFIFOW(fd,2) = 4 + c*11;
- WFIFOSET(fd,WFIFOW(fd,2));
+ len = sizeof(struct PACKET_ZC_PC_PURCHASE_ITEMLIST) + c * sizeof(struct PACKET_ZC_PC_PURCHASE_ITEMLIST_sub);
+ p->packetLength = len;
+ WFIFOSET(fd, len);
}
/// Presents list of items, that can be sold to an NPC shop (ZC_PC_SELL_ITEMLIST).
/// 00c7 <packet len>.W { <index>.W <price>.L <overcharge price>.L }*
-void clif_selllist(struct map_session_data *sd)
+static void clif_selllist(struct map_session_data *sd)
{
- int fd,i,c=0,val;
+ int c = 0, val;
nullpo_retv(sd);
- fd=sd->fd;
- WFIFOHEAD(fd, MAX_INVENTORY * 10 + 4);
+ int fd = sd->fd;
+ WFIFOHEAD(fd, sd->status.inventorySize * 10 + 4);
WFIFOW(fd,0)=0xc7;
- for( i = 0; i < MAX_INVENTORY; i++ )
+ for (int i = 0; i < sd->status.inventorySize; i++)
{
if( sd->status.inventory[i].nameid > 0 && sd->inventory_data[i] )
{
@@ -2032,7 +2204,7 @@ void clif_selllist(struct map_session_data *sd)
/// - set npcid of dialog window (0 by default)
/// - if set to clear on next mes, clear contents
/// - append this text
-void clif_scriptmes(struct map_session_data *sd, int npcid, const char *mes)
+static void clif_scriptmes(struct map_session_data *sd, int npcid, const char *mes)
{
int fd, slen;
#ifdef SCRIPT_MES_STRIP_LINEBREAK
@@ -2047,6 +2219,8 @@ void clif_scriptmes(struct map_session_data *sd, int npcid, const char *mes)
slen = (int)strlen(mes) + 9;
Assert_retv(slen <= INT16_MAX);
+ pc->update_idle_time(sd, BCIDLE_SCRIPT);
+
sd->state.dialog = 1;
WFIFOHEAD(fd, slen);
@@ -2077,12 +2251,14 @@ void clif_scriptmes(struct map_session_data *sd, int npcid, const char *mes)
/// - 00B9 <npcid of dialog window>.L
/// - set to clear on next mes
/// - remove 'next' button
-void clif_scriptnext(struct map_session_data *sd, int npcid)
+static void clif_scriptnext(struct map_session_data *sd, int npcid)
{
int fd;
nullpo_retv(sd);
+ pc->update_idle_time(sd, BCIDLE_SCRIPT);
+
fd=sd->fd;
WFIFOHEAD(fd, packet_len(0xb5));
WFIFOW(fd,0)=0xb5;
@@ -2105,12 +2281,14 @@ void clif_scriptnext(struct map_session_data *sd, int npcid)
/// - close the dialog window
/// - close the menu window
/// - 0146 <npcid of dialog window>.L
-void clif_scriptclose(struct map_session_data *sd, int npcid)
+static void clif_scriptclose(struct map_session_data *sd, int npcid)
{
int fd;
nullpo_retv(sd);
+ pc->update_idle_time(sd, BCIDLE_SCRIPT);
+
fd=sd->fd;
WFIFOHEAD(fd, packet_len(0xb6));
WFIFOW(fd,0)=0xb6;
@@ -2121,7 +2299,8 @@ void clif_scriptclose(struct map_session_data *sd, int npcid)
/*==========================================
*
*------------------------------------------*/
-void clif_sendfakenpc(struct map_session_data *sd, int npcid) {
+static void clif_sendfakenpc(struct map_session_data *sd, int npcid)
+{
unsigned char *buf;
int fd;
@@ -2164,7 +2343,7 @@ void clif_sendfakenpc(struct map_session_data *sd, int npcid) {
/// WARNING: the 'cancel' button closes other windows besides the dialog window and the menu window.
/// Which suggests their have intertwined behavior. (probably the mouse targeting)
/// TODO investigate behavior of other windows [FlavioJS]
-void clif_scriptmenu(struct map_session_data *sd, int npcid, const char *mes)
+static void clif_scriptmenu(struct map_session_data *sd, int npcid, const char *mes)
{
int fd, slen;
struct block_list *bl = NULL;
@@ -2181,6 +2360,8 @@ void clif_scriptmenu(struct map_session_data *sd, int npcid, const char *mes)
bl->y<sd->bl.y-AREA_SIZE-1 || bl->y>sd->bl.y+AREA_SIZE+1))))
clif->sendfakenpc(sd, npcid);
+ pc->update_idle_time(sd, BCIDLE_SCRIPT);
+
WFIFOHEAD(fd, slen);
WFIFOW(fd,0) = 0xb7;
WFIFOW(fd,2) = slen;
@@ -2200,7 +2381,8 @@ void clif_scriptmenu(struct map_session_data *sd, int npcid, const char *mes)
/// - if npcid exists in the client:
/// - 0143 <npcid of inputnum window>.L <atoi(text)>.L
/// - close inputnum window
-void clif_scriptinput(struct map_session_data *sd, int npcid) {
+static void clif_scriptinput(struct map_session_data *sd, int npcid)
+{
int fd;
struct block_list *bl = NULL;
@@ -2211,6 +2393,8 @@ void clif_scriptinput(struct map_session_data *sd, int npcid) {
bl->y<sd->bl.y-AREA_SIZE-1 || bl->y>sd->bl.y+AREA_SIZE+1))))
clif->sendfakenpc(sd, npcid);
+ pc->update_idle_time(sd, BCIDLE_SCRIPT);
+
fd=sd->fd;
WFIFOHEAD(fd, packet_len(0x142));
WFIFOW(fd,0)=0x142;
@@ -2229,7 +2413,8 @@ void clif_scriptinput(struct map_session_data *sd, int npcid) {
/// - if npcid is 0 or npcid exists in the client:
/// - 01d5 <packetlen>.W <npcid of inputstr window>.L <text>.?B
/// - close inputstr window
-void clif_scriptinputstr(struct map_session_data *sd, int npcid) {
+static void clif_scriptinputstr(struct map_session_data *sd, int npcid)
+{
int fd;
struct block_list *bl = NULL;
@@ -2240,6 +2425,8 @@ void clif_scriptinputstr(struct map_session_data *sd, int npcid) {
bl->y<sd->bl.y-AREA_SIZE-1 || bl->y>sd->bl.y+AREA_SIZE+1))))
clif->sendfakenpc(sd, npcid);
+ pc->update_idle_time(sd, BCIDLE_SCRIPT);
+
fd=sd->fd;
WFIFOHEAD(fd, packet_len(0x1d4));
WFIFOW(fd,0)=0x1d4;
@@ -2257,7 +2444,7 @@ void clif_scriptinputstr(struct map_session_data *sd, int npcid) {
/// 2 = remove mark
/// color:
/// 0x00RRGGBB
-void clif_viewpoint(struct map_session_data *sd, int npc_id, int type, int x, int y, int id, int color)
+static void clif_viewpoint(struct map_session_data *sd, int npc_id, int type, int x, int y, int id, int color)
{
int fd;
@@ -2284,7 +2471,8 @@ void clif_viewpoint(struct map_session_data *sd, int npc_id, int type, int x, in
/// 2 = bottom right corner
/// 3 = middle of screen, inside a movable window
/// 4 = middle of screen, movable with a close button, chrome-less
-void clif_cutin(struct map_session_data* sd, const char* image, int type)
+/// 255 = hide
+static void clif_cutin(struct map_session_data *sd, const char *image, int type)
{
int fd;
@@ -2301,124 +2489,89 @@ void clif_cutin(struct map_session_data* sd, const char* image, int type)
/*==========================================
* Fills in card data from the given item and into the buffer. [Skotlex]
*------------------------------------------*/
-void clif_addcards(unsigned char* buf, struct item* item) {
- int i=0,j;
+static void clif_addcards(struct EQUIPSLOTINFO *buf, struct item *item)
+{
+ int i = 0, j;
nullpo_retv(buf);
- if( item == NULL ) { //Blank data
- WBUFW(buf,0) = 0;
- WBUFW(buf,2) = 0;
- WBUFW(buf,4) = 0;
- WBUFW(buf,6) = 0;
+ if (item == NULL) { //Blank data
+ buf->card[0] = 0;
+ buf->card[1] = 0;
+ buf->card[2] = 0;
+ buf->card[3] = 0;
return;
}
- if( item->card[0] == CARD0_PET ) { //pet eggs
- WBUFW(buf,0) = 0;
- WBUFW(buf,2) = 0;
- WBUFW(buf,4) = 0;
- WBUFW(buf,6) = item->card[3]; //Pet renamed flag.
+ if (item->card[0] == CARD0_PET) { //pet eggs
+ buf->card[0] = 0;
+ buf->card[1] = 0;
+ buf->card[2] = 0;
+ buf->card[3] = item->card[3]; //Pet renamed flag.
return;
}
- if( item->card[0] == CARD0_FORGE || item->card[0] == CARD0_CREATE ) { //Forged/created items
- WBUFW(buf,0) = item->card[0];
- WBUFW(buf,2) = item->card[1];
- WBUFW(buf,4) = item->card[2];
- WBUFW(buf,6) = item->card[3];
+ if (item->card[0] == CARD0_FORGE || item->card[0] == CARD0_CREATE) { //Forged/created items
+ buf->card[0] = item->card[0];
+ buf->card[1] = item->card[1];
+ buf->card[2] = item->card[2];
+ buf->card[3] = item->card[3];
return;
}
//Client only receives four cards.. so randomly send them a set of cards. [Skotlex]
- if( MAX_SLOTS > 4 && (j = itemdb_slot(item->nameid)) > 4 )
- i = rnd()%(j-3); //eg: 6 slots, possible i values: 0->3, 1->4, 2->5 => i = rnd()%3;
+ if (MAX_SLOTS > 4 && (j = itemdb_slot(item->nameid)) > 4)
+ i = rnd() % (j - 3); //eg: 6 slots, possible i values: 0->3, 1->4, 2->5 => i = rnd()%3;
//Normal items.
- if( item->card[i] > 0 && (j=itemdb_viewid(item->card[i])) > 0 )
- WBUFW(buf,0) = j;
+ if (item->card[i] > 0 && (j = itemdb_viewid(item->card[i])) > 0)
+ buf->card[0] = j;
else
- WBUFW(buf,0) = item->card[i];
+ buf->card[0] = item->card[i];
- if( item->card[++i] > 0 && (j=itemdb_viewid(item->card[i])) > 0 )
- WBUFW(buf,2) = j;
+ if (item->card[++i] > 0 && (j = itemdb_viewid(item->card[i])) > 0)
+ buf->card[1] = j;
else
- WBUFW(buf,2) = item->card[i];
+ buf->card[1] = item->card[i];
- if( item->card[++i] > 0 && (j=itemdb_viewid(item->card[i])) > 0 )
- WBUFW(buf,4) = j;
+ if (item->card[++i] > 0 && (j = itemdb_viewid(item->card[i])) > 0)
+ buf->card[2] = j;
else
- WBUFW(buf,4) = item->card[i];
+ buf->card[2] = item->card[i];
- if( item->card[++i] > 0 && (j=itemdb_viewid(item->card[i])) > 0 )
- WBUFW(buf,6) = j;
+ if (item->card[++i] > 0 && (j = itemdb_viewid(item->card[i])) > 0)
+ buf->card[3] = j;
else
- WBUFW(buf,6) = item->card[i];
-}
-
-void clif_addcards2(unsigned short *cards, struct item* item) {
- int i=0,j;
- nullpo_retv(cards);
- if( item == NULL ) { //Blank data
- cards[0] = 0;
- cards[1] = 0;
- cards[2] = 0;
- cards[3] = 0;
- return;
- }
- if( item->card[0] == CARD0_PET ) { //pet eggs
- cards[0] = 0;
- cards[1] = 0;
- cards[2] = 0;
- cards[3] = item->card[3]; //Pet renamed flag.
- return;
- }
- if( item->card[0] == CARD0_FORGE || item->card[0] == CARD0_CREATE ) { //Forged/created items
- cards[0] = item->card[0];
- cards[1] = item->card[1];
- cards[2] = item->card[2];
- cards[3] = item->card[3];
- return;
- }
- //Client only receives four cards.. so randomly send them a set of cards. [Skotlex]
- if( MAX_SLOTS > 4 && (j = itemdb_slot(item->nameid)) > 4 )
- i = rnd()%(j-3); //eg: 6 slots, possible i values: 0->3, 1->4, 2->5 => i = rnd()%3;
-
- //Normal items.
- if( item->card[i] > 0 && (j=itemdb_viewid(item->card[i])) > 0 )
- cards[0] = j;
- else
- cards[0] = item->card[i];
-
- if( item->card[++i] > 0 && (j=itemdb_viewid(item->card[i])) > 0 )
- cards[1] = j;
- else
- cards[1] = item->card[i];
-
- if( item->card[++i] > 0 && (j=itemdb_viewid(item->card[i])) > 0 )
- cards[2] = j;
- else
- cards[2] = item->card[i];
-
- if( item->card[++i] > 0 && (j=itemdb_viewid(item->card[i])) > 0 )
- cards[3] = j;
- else
- cards[3] = item->card[i];
+ buf->card[3] = item->card[i];
}
/**
- * Fills in RandomOptions(Bonuses) of items into the buffer
+ * Fills in ItemOptions(Bonuses) of items into the buffer
*
- * Dummy datais used since this feature isn't supported yet (ITEM_RDM_OPT).
- * A maximum of 5 random options can be supported.
+ * A maximum of 5 item options can be supported.
*
* @param buf[in,out] The buffer to write to. The pointer must be valid and initialized.
* @param item[in] The source item.
*/
-void clif_add_random_options(unsigned char* buf, struct item* item)
+static int clif_add_item_options(struct ItemOptions *buf, const struct item *it)
{
- int i;
- nullpo_retv(buf);
- for (i = 0; i < 5; i++){
- WBUFW(buf,i*5+0) = 0; // OptIndex
- WBUFW(buf,i*5+2) = 0; // Value
- WBUFB(buf,i*5+4) = 0; // Param1
+ int i = 0, j = 0, total_options = 0;
+
+ nullpo_ret(buf);
+
+ // Append the buffer with existing options first.
+ for (i = 0; i < MAX_ITEM_OPTIONS; i++) {
+ if (it->option[i].index) {
+ WBUFW(buf, j * 5 + 0) = it->option[i].index; // OptIndex
+ WBUFW(buf, j * 5 + 2) = it->option[i].value; // Value
+ WBUFB(buf, j * 5 + 4) = it->option[i].param; // Param1
+ total_options++;
+ j++;
+ }
+ }
+ // Append the remaining buffer with no values;
+ for (; j < MAX_ITEM_OPTIONS || j < 5; j++) {
+ WBUFW(buf, j * 5 + 0) = 0;
+ WBUFW(buf, j * 5 + 2) = 0;
+ WBUFB(buf, j * 5 + 4) = 0;
}
+
+ return total_options;
}
/// Notifies the client, about a received inventory item or the result of a pick-up request.
@@ -2427,7 +2580,9 @@ void clif_add_random_options(unsigned char* buf, struct item* item)
/// 02d4 <index>.W <amount>.W <name id>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W <equip location>.W <item type>.B <result>.B <expire time>.L <bindOnEquipType>.W (ZC_ITEM_PICKUP_ACK3)
/// 0990 <index>.W <amount>.W <name id>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W <equip location>.L <item type>.B <result>.B <expire time>.L <bindOnEquipType>.W (ZC_ITEM_PICKUP_ACK_V5)
/// 0a0c <index>.W <amount>.W <name id>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W <equip location>.L <item type>.B <result>.B <expire time>.L <bindOnEquipType>.W (ZC_ITEM_PICKUP_ACK_V6)
-void clif_additem(struct map_session_data *sd, int n, int amount, int fail) {
+/// 0a37 <index>.W <amount>.W <name id>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W <equip location>.L <item type>.B <result>.B <expire time>.L <bindOnEquipType>.W <favorite>.B <view id>.W (ZC_ITEM_PICKUP_ACK_V7)
+static void clif_additem(struct map_session_data *sd, int n, int amount, int fail)
+{
struct packet_additem p;
nullpo_retv(sd);
@@ -2442,10 +2597,7 @@ void clif_additem(struct map_session_data *sd, int n, int amount, int fail) {
p.count = amount;
if( !fail ) {
-#if PACKETVER >= 20150226
- int i;
-#endif
- if( n < 0 || n >= MAX_INVENTORY || sd->status.inventory[n].nameid <=0 || sd->inventory_data[n] == NULL )
+ if (n < 0 || n >= sd->status.inventorySize || sd->status.inventory[n].nameid <= 0 || sd->inventory_data[n] == NULL)
return;
if (sd->inventory_data[n]->view_id > 0)
@@ -2456,7 +2608,7 @@ void clif_additem(struct map_session_data *sd, int n, int amount, int fail) {
p.IsIdentified = sd->status.inventory[n].identify ? 1 : 0;
p.IsDamaged = (sd->status.inventory[n].attribute & ATTR_BROKEN) != 0 ? 1 : 0;
p.refiningLevel =sd->status.inventory[n].refine;
- clif->addcards2(&p.slot.card[0], &sd->status.inventory[n]);
+ clif->addcards(&p.slot, &sd->status.inventory[n]);
p.location = pc->equippoint(sd,n);
p.type = itemtype(sd->inventory_data[n]->type);
#if PACKETVER >= 20061218
@@ -2469,11 +2621,11 @@ void clif_additem(struct map_session_data *sd, int n, int amount, int fail) {
p.bindOnEquipType = sd->status.inventory[n].bound && !itemdb->isstackable2(sd->inventory_data[n]) ? 2 : sd->inventory_data[n]->flag.bindonequip ? 1 : 0;
#endif
#if PACKETVER >= 20150226
- for (i=0; i<5; i++){
- p.option_data[i].index = 0;
- p.option_data[i].value = 0;
- p.option_data[i].param = 0;
- }
+ clif->add_item_options(&p.option_data[0], &sd->status.inventory[n]);
+#endif
+#if PACKETVER >= 20160921
+ p.favorite = sd->status.inventory[n].favorite;
+ p.look = sd->inventory_data[n]->view_sprite;
#endif
}
p.result = (unsigned char)fail;
@@ -2483,7 +2635,7 @@ void clif_additem(struct map_session_data *sd, int n, int amount, int fail) {
/// Notifies the client, that an inventory item was deleted or dropped (ZC_ITEM_THROW_ACK).
/// 00af <index>.W <amount>.W
-void clif_dropitem(struct map_session_data *sd,int n,int amount)
+static void clif_dropitem(struct map_session_data *sd, int n, int amount)
{
int fd;
@@ -2497,10 +2649,26 @@ void clif_dropitem(struct map_session_data *sd,int n,int amount)
WFIFOSET(fd,packet_len(0xaf));
}
+static void clif_item_movefailed(struct map_session_data *sd, int n)
+{
+#if PACKETVER_MAIN_NUM >= 20161214 || PACKETVER_RE_NUM >= 20161130 || defined(PACKETVER_ZERO)
+ int fd = sd->fd;
+ const int len = sizeof(struct PACKET_ZC_INVENTORY_MOVE_FAILED);
+ WFIFOHEAD(fd, len);
+ struct PACKET_ZC_INVENTORY_MOVE_FAILED *p = WFIFOP(fd, 0);
+ p->packetType = 0xaa7;
+ p->index = n + 2;
+ p->unknown = 1;
+ WFIFOSET(fd, len);
+#else
+ clif->dropitem(sd, n, 0);
+#endif
+}
+
/// Notifies the client, that an inventory item was deleted (ZC_DELETE_ITEM_FROM_BODY).
/// 07fa <delete type>.W <index>.W <amount>.W
/// delete type: @see enum delitem_reason
-void clif_delitem(struct map_session_data *sd,int n,int amount, short reason)
+static void clif_delitem(struct map_session_data *sd, int n, int amount, short reason)
{
#if PACKETVER < 20091117
clif->dropitem(sd,n,amount);
@@ -2524,7 +2692,8 @@ void clif_delitem(struct map_session_data *sd,int n,int amount, short reason)
// Equip is >= 0 for equippable items (holds the equip-point, is 0 for pet
// armor/egg) -1 for stackable items, -2 for stackable items where arrows must send in the equip-point.
// look like unused, not adding checks
-void clif_item_sub(unsigned char *buf, int n, struct item *i, struct item_data *id, int equip) {
+static void clif_item_sub(unsigned char *buf, int n, struct item *i, struct item_data *id, int equip)
+{
if (id->view_id > 0)
WBUFW(buf,n)=id->view_id;
else
@@ -2546,65 +2715,59 @@ void clif_item_sub(unsigned char *buf, int n, struct item *i, struct item_data *
}
-void clif_item_equip(short idx, struct EQUIPITEM_INFO *p, struct item *i, struct item_data *id, int eqp_pos) {
-#if PACKETVER >= 20150226
- int j;
-#endif
+static void clif_item_equip(short idx, struct EQUIPITEM_INFO *p, struct item *it, struct item_data *id, int eqp_pos)
+{
nullpo_retv(p);
- nullpo_retv(i);
+ nullpo_retv(it);
nullpo_retv(id);
p->index = idx;
if (id->view_id > 0)
p->ITID = id->view_id;
else
- p->ITID = i->nameid;
+ p->ITID = it->nameid;
p->type = itemtype(id->type);
#if PACKETVER < 20120925
- p->IsIdentified = i->identify ? 1 : 0;
+ p->IsIdentified = it->identify ? 1 : 0;
#endif
p->location = eqp_pos;
- p->WearState = i->equip;
+ p->WearState = it->equip;
#if PACKETVER < 20120925
- p->IsDamaged = (i->attribute & ATTR_BROKEN) != 0 ? 1 : 0;
+ p->IsDamaged = (it->attribute & ATTR_BROKEN) != 0 ? 1 : 0;
#endif
- p->RefiningLevel = i->refine;
+ p->RefiningLevel = it->refine;
- clif->addcards2(&p->slot.card[0], i);
+ clif->addcards(&p->slot, it);
#if PACKETVER >= 20071002
- p->HireExpireDate = i->expire_time;
+ p->HireExpireDate = it->expire_time;
#endif
#if PACKETVER >= 20080102
- p->bindOnEquipType = i->bound ? 2 : id->flag.bindonequip ? 1 : 0;
+ p->bindOnEquipType = it->bound ? 2 : id->flag.bindonequip ? 1 : 0;
#endif
#if PACKETVER >= 20100629
- p->wItemSpriteNumber = (id->equip&EQP_VISIBLE) ? id->look : 0;
+ p->wItemSpriteNumber = (id->equip&EQP_VISIBLE) ? id->view_sprite : 0;
#endif
#if PACKETVER >= 20120925
- p->Flag.IsIdentified = i->identify ? 1 : 0;
- p->Flag.IsDamaged = (i->attribute & ATTR_BROKEN) != 0 ? 1 : 0;
- p->Flag.PlaceETCTab = i->favorite ? 1 : 0;
+ p->Flag.IsIdentified = it->identify ? 1 : 0;
+ p->Flag.IsDamaged = (it->attribute & ATTR_BROKEN) != 0 ? 1 : 0;
+ p->Flag.PlaceETCTab = it->favorite ? 1 : 0;
p->Flag.SpareBits = 0;
#endif
#if PACKETVER >= 20150226
- p->option_count = 0;
- for (j=0; j<5; j++){
- p->option_data[j].index = 0;
- p->option_data[j].value = 0;
- p->option_data[j].param = 0;
- }
+ p->option_count = clif->add_item_options(p->option_data, it);
#endif
}
-void clif_item_normal(short idx, struct NORMALITEM_INFO *p, struct item *i, struct item_data *id) {
+static void clif_item_normal(short idx, struct NORMALITEM_INFO *p, struct item *i, struct item_data *id)
+{
nullpo_retv(p);
nullpo_retv(i);
nullpo_retv(id);
@@ -2626,7 +2789,7 @@ void clif_item_normal(short idx, struct NORMALITEM_INFO *p, struct item *i, stru
p->WearState = id->equip;
#if PACKETVER >= 5
- clif->addcards2(&p->slot.card[0], i);
+ clif->addcards(&p->slot, i);
#endif
#if PACKETVER >= 20080102
@@ -2640,11 +2803,23 @@ void clif_item_normal(short idx, struct NORMALITEM_INFO *p, struct item *i, stru
#endif
}
-void clif_inventorylist(struct map_session_data *sd) {
+static void clif_inventoryList(struct map_session_data *sd)
+{
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+ clif->inventoryStart(sd, INVTYPE_INVENTORY, "");
+#endif
+ clif->inventoryItems(sd, INVTYPE_INVENTORY);
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+ clif->inventoryEnd(sd, INVTYPE_INVENTORY);
+#endif
+}
+
+static void clif_inventoryItems(struct map_session_data *sd, enum inventory_type type)
+{
int i, normal = 0, equip = 0;
nullpo_retv(sd);
- for( i = 0; i < MAX_INVENTORY; i++ ) {
+ for (i = 0; i < sd->status.inventorySize; i++) {
if( sd->status.inventory[i].nameid <= 0 || sd->inventory_data[i] == NULL )
continue;
@@ -2654,9 +2829,12 @@ void clif_inventorylist(struct map_session_data *sd) {
clif->item_normal(i+2,&itemlist_normal.list[normal++],&sd->status.inventory[i],sd->inventory_data[i]);
}
- if( normal ) {
- itemlist_normal.PacketType = inventorylistnormalType;
- itemlist_normal.PacketLength = 4 + (sizeof(struct NORMALITEM_INFO) * normal);
+ if (normal) {
+ itemlist_normal.PacketType = inventorylistnormalType;
+ itemlist_normal.PacketLength = (sizeof(itemlist_normal) - sizeof(itemlist_normal.list)) + (sizeof(struct NORMALITEM_INFO) * normal);
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+ itemlist_normal.invType = type;
+#endif
clif->send(&itemlist_normal, itemlist_normal.PacketLength, &sd->bl, SELF);
}
@@ -2666,13 +2844,16 @@ void clif_inventorylist(struct map_session_data *sd) {
if( equip ) {
itemlist_equip.PacketType = inventorylistequipType;
- itemlist_equip.PacketLength = 4 + (sizeof(struct EQUIPITEM_INFO) * equip);
+ itemlist_equip.PacketLength = (sizeof(itemlist_equip) - sizeof(itemlist_equip.list)) + (sizeof(struct EQUIPITEM_INFO) * equip);
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+ itemlist_equip.invType = type;
+#endif
clif->send(&itemlist_equip, itemlist_equip.PacketLength, &sd->bl, SELF);
}
/* on 20120925 onwards this is a field on clif_item_equip/normal */
#if PACKETVER >= 20111122 && PACKETVER < 20120925
- for( i = 0; i < MAX_INVENTORY; i++ ) {
+ for (i = 0; i < sd->status.inventorySize; i++) {
if( sd->status.inventory[i].nameid <= 0 || sd->inventory_data[i] == NULL )
continue;
@@ -2682,12 +2863,25 @@ void clif_inventorylist(struct map_session_data *sd) {
#endif
}
+static void clif_equipList(struct map_session_data *sd)
+{
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+ clif->inventoryStart(sd, INVTYPE_INVENTORY, "");
+ clif->inventoryItems(sd, INVTYPE_INVENTORY);
+ clif->inventoryEnd(sd, INVTYPE_INVENTORY);
+#else
+ // [4144] for old packet version it send only equipment. this is bug?
+ clif->equipItems(sd, INVTYPE_INVENTORY);
+#endif
+}
+
//Required when items break/get-repaired. Only sends equippable item list.
-void clif_equiplist(struct map_session_data *sd) {
+static void clif_equipItems(struct map_session_data *sd, enum inventory_type type)
+{
int i, equip = 0;
nullpo_retv(sd);
- for( i = 0; i < MAX_INVENTORY; i++ ) {
+ for (i = 0; i < sd->status.inventorySize; i++) {
if( sd->status.inventory[i].nameid <= 0 || sd->inventory_data[i] == NULL )
continue;
@@ -2695,16 +2889,19 @@ void clif_equiplist(struct map_session_data *sd) {
clif->item_equip(i+2,&itemlist_equip.list[equip++],&sd->status.inventory[i],sd->inventory_data[i],pc->equippoint(sd,i));
}
- if( equip ) {
- itemlist_equip.PacketType = inventorylistequipType;
- itemlist_equip.PacketLength = 4 + (sizeof(struct EQUIPITEM_INFO) * equip);
+ if (equip) {
+ itemlist_equip.PacketType = inventorylistequipType;
+ itemlist_equip.PacketLength = (sizeof(itemlist_equip) - sizeof(itemlist_equip.list)) + (sizeof(struct EQUIPITEM_INFO) * equip);
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+ itemlist_equip.invType = type;
+#endif
clif->send(&itemlist_equip, itemlist_equip.PacketLength, &sd->bl, SELF);
}
/* on 20120925 onwards this is a field on clif_item_equip */
#if PACKETVER >= 20111122 && PACKETVER < 20120925
- for( i = 0; i < MAX_INVENTORY; i++ ) {
+ for (i = 0; i < sd->status.inventorySize; i++) {
if( sd->status.inventory[i].nameid <= 0 || sd->inventory_data[i] == NULL )
continue;
@@ -2714,12 +2911,74 @@ void clif_equiplist(struct map_session_data *sd) {
#endif
}
-void clif_storagelist(struct map_session_data* sd, struct item* items, int items_length) {
- int i = 0;
- struct item_data *id;
+static void clif_storageList(struct map_session_data *sd, struct item *items, int items_length)
+{
+ nullpo_retv(sd);
+
+ clif->inventoryStart(sd, INVTYPE_STORAGE, "Storage");
+ if (sd->storage.aggregate > 0)
+ clif->storageItems(sd, INVTYPE_STORAGE, items, items_length);
+ clif->inventoryEnd(sd, INVTYPE_STORAGE);
+}
+static void clif_guildStorageList(struct map_session_data *sd, struct item *items, int items_length)
+{
+ clif->inventoryStart(sd, INVTYPE_GUILD_STORAGE, "Guild storage");
+ clif->storageItems(sd, INVTYPE_GUILD_STORAGE, items, items_length);
+ clif->inventoryEnd(sd, INVTYPE_GUILD_STORAGE);
+}
+
+static void clif_inventoryStart(struct map_session_data *sd, enum inventory_type type, const char *name)
+{
+#if PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+ nullpo_retv(sd);
+ nullpo_retv(name);
+
+ char buf[sizeof(struct ZC_INVENTORY_START) + 24];
+ memset(buf, 0, sizeof(buf));
+ struct ZC_INVENTORY_START *p = (struct ZC_INVENTORY_START *)buf;
+ p->packetType = 0xb08;
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+ p->invType = type;
+#endif
+#if PACKETVER_RE_NUM >= 20180919 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+ int strLen = (int)safestrnlen(name, 24);
+ if (strLen > 24)
+ strLen = 24;
+ const int len = sizeof(struct ZC_INVENTORY_START) + strLen;
+ p->packetLength = len;
+ safestrncpy(p->name, name, strLen);
+#else
+ const int len = sizeof(struct ZC_INVENTORY_START);
+ safestrncpy(p->name, name, NAME_LENGTH);
+#endif
+ clif->send(p, len, &sd->bl, SELF);
+#endif
+}
+
+static void clif_inventoryEnd(struct map_session_data *sd, enum inventory_type type)
+{
+#if PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+ nullpo_retv(sd);
+
+ struct ZC_INVENTORY_END p;
+ p.packetType = 0xb0b;
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+ p.invType = type;
+#endif
+ p.flag = 0;
+ clif->send(&p, sizeof(p), &sd->bl, SELF);
+#endif
+}
+
+static void clif_storageItems(struct map_session_data *sd, enum inventory_type type, struct item *items, int items_length)
+{
nullpo_retv(sd);
nullpo_retv(items);
+
+ int i = 0;
+ struct item_data *id;
+
do {
int normal = 0, equip = 0, k = 0;
@@ -2737,10 +2996,13 @@ void clif_storagelist(struct map_session_data* sd, struct item* items, int items
}
if( normal ) {
- storelist_normal.PacketType = storagelistnormalType;
+ storelist_normal.PacketType = storageListNormalType;
storelist_normal.PacketLength = ( sizeof( storelist_normal ) - sizeof( storelist_normal.list ) ) + (sizeof(struct NORMALITEM_INFO) * normal);
-#if PACKETVER >= 20120925
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+ storelist_normal.invType = type;
+#endif
+#if PACKETVER >= 20120925 && PACKETVER_RE_NUM < 20180829 && PACKETVER_ZERO_NUM < 20180919 && PACKETVER_MAIN_NUM < 20181002
safestrncpy(storelist_normal.name, "Storage", NAME_LENGTH);
#endif
@@ -2748,10 +3010,13 @@ void clif_storagelist(struct map_session_data* sd, struct item* items, int items
}
if( equip ) {
- storelist_equip.PacketType = storagelistequipType;
+ storelist_equip.PacketType = storageListEquipType;
storelist_equip.PacketLength = ( sizeof( storelist_equip ) - sizeof( storelist_equip.list ) ) + (sizeof(struct EQUIPITEM_INFO) * equip);
-#if PACKETVER >= 20120925
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+ storelist_equip.invType = type;
+#endif
+#if PACKETVER >= 20120925 && PACKETVER_RE_NUM < 20180829 && PACKETVER_ZERO_NUM < 20180919 && PACKETVER_MAIN_NUM < 20181002
safestrncpy(storelist_equip.name, "Storage", NAME_LENGTH);
#endif
@@ -2762,7 +3027,19 @@ void clif_storagelist(struct map_session_data* sd, struct item* items, int items
}
-void clif_cartlist(struct map_session_data *sd) {
+static void clif_cartList(struct map_session_data *sd)
+{
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+ clif->inventoryStart(sd, INVTYPE_CART, "");
+#endif
+ clif->cartItems(sd, INVTYPE_CART);
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+ clif->inventoryEnd(sd, INVTYPE_CART);
+#endif
+}
+
+static void clif_cartItems(struct map_session_data *sd, enum inventory_type type)
+{
int i, normal = 0, equip = 0;
struct item_data *id;
@@ -2779,27 +3056,148 @@ void clif_cartlist(struct map_session_data *sd) {
clif->item_normal(i+2,&itemlist_normal.list[normal++],&sd->status.cart[i],id);
}
- if( normal ) {
- itemlist_normal.PacketType = cartlistnormalType;
- itemlist_normal.PacketLength = 4 + (sizeof(struct NORMALITEM_INFO) * normal);
+ if (normal) {
+ itemlist_normal.PacketType = cartlistnormalType;
+ itemlist_normal.PacketLength = (sizeof(itemlist_normal) - sizeof(itemlist_normal.list)) + (sizeof(struct NORMALITEM_INFO) * normal);
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+ itemlist_normal.invType = type;
+#endif
clif->send(&itemlist_normal, itemlist_normal.PacketLength, &sd->bl, SELF);
}
- if( equip ) {
- itemlist_equip.PacketType = cartlistequipType;
- itemlist_equip.PacketLength = 4 + (sizeof(struct EQUIPITEM_INFO) * equip);
+ if (equip) {
+ itemlist_equip.PacketType = cartlistequipType;
+ itemlist_equip.PacketLength = (sizeof(itemlist_equip) - sizeof(itemlist_equip.list)) + (sizeof(struct EQUIPITEM_INFO) * equip);
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+ itemlist_equip.invType = type;
+#endif
clif->send(&itemlist_equip, itemlist_equip.PacketLength, &sd->bl, SELF);
}
}
+static void clif_inventoryExpansionInfo(struct map_session_data *sd)
+{
+#if PACKETVER_MAIN_NUM >= 20181219 || PACKETVER_RE_NUM >= 20181219 || PACKETVER_ZERO_NUM >= 20181212
+ nullpo_retv(sd);
+
+ const int fd = sd->fd;
+ WFIFOHEAD(fd, sizeof(struct PACKET_ZC_INVENTORY_EXPANSION_INFO));
+ struct PACKET_ZC_INVENTORY_EXPANSION_INFO *p = WFIFOP(fd, 0);
+ p->packetType = HEADER_ZC_INVENTORY_EXPANSION_INFO;
+ p->expansionSize = sd->status.inventorySize - FIXED_INVENTORY_SIZE;
+ WFIFOSET(fd, sizeof(struct PACKET_ZC_INVENTORY_EXPANSION_INFO));
+#endif
+}
+
+static void clif_inventoryExpandAck(struct map_session_data *sd, enum expand_inventory result, int itemId)
+{
+#if PACKETVER_MAIN_NUM >= 20181219 || PACKETVER_RE_NUM >= 20181219 || PACKETVER_ZERO_NUM >= 20181212
+ nullpo_retv(sd);
+
+ const int fd = sd->fd;
+ WFIFOHEAD(fd, sizeof(struct PACKET_ZC_ACK_INVENTORY_EXPAND));
+ struct PACKET_ZC_ACK_INVENTORY_EXPAND *p = WFIFOP(fd, 0);
+ p->packetType = HEADER_ZC_ACK_INVENTORY_EXPAND;
+ p->result = result;
+ p->itemId = itemId;
+ WFIFOSET(fd, sizeof(struct PACKET_ZC_ACK_INVENTORY_EXPAND));
+#endif
+}
+
+static void clif_inventoryExpandResult(struct map_session_data *sd, enum expand_inventory_result result)
+{
+#if PACKETVER_MAIN_NUM >= 20181219 || PACKETVER_RE_NUM >= 20181219 || PACKETVER_ZERO_NUM >= 20181212
+ nullpo_retv(sd);
+
+ const int fd = sd->fd;
+ WFIFOHEAD(fd, sizeof(struct PACKET_ZC_ACK_INVENTORY_EXPAND_RESULT));
+ struct PACKET_ZC_ACK_INVENTORY_EXPAND_RESULT *p = WFIFOP(fd, 0);
+ p->packetType = HEADER_ZC_ACK_INVENTORY_EXPAND_RESULT;
+ p->result = result;
+ WFIFOSET(fd, sizeof(struct PACKET_ZC_ACK_INVENTORY_EXPAND_RESULT));
+#endif
+}
+
+static void clif_parse_inventoryExpansion(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_inventoryExpansion(int fd, struct map_session_data *sd)
+{
+#if PACKETVER_MAIN_NUM >= 20181031 || PACKETVER_RE_NUM >= 20181031 || PACKETVER_ZERO_NUM >= 20181114
+ if (pc_isdead(sd) || pc_cant_act(sd)) {
+ clif->inventoryExpandAck(sd, EXPAND_INVENTORY_OTHER_WORK, 0);
+ return;
+ }
+ if (sd->status.inventorySize == MAX_INVENTORY) {
+ clif->inventoryExpandAck(sd, EXPAND_INVENTORY_MAX_SIZE, 0);
+ return;
+ }
+
+ char evname[EVENT_NAME_LENGTH];
+ struct event_data *ev = NULL;
+
+ safestrncpy(evname, "inventory_expansion::OnInvExpandRequest", EVENT_NAME_LENGTH);
+ if ((ev = strdb_get(npc->ev_db, evname))) {
+ script->run_npc(ev->nd->u.scr.script, ev->pos, sd->bl.id, ev->nd->bl.id);
+ } else {
+ ShowError("clif_parse_inventoryExpansion: event '%s' not found, operation failed.\n", evname);
+ }
+#endif
+}
+
+static void clif_parse_inventoryExpansionConfirmed(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_inventoryExpansionConfirmed(int fd, struct map_session_data *sd)
+{
+#if PACKETVER_MAIN_NUM >= 20181031 || PACKETVER_RE_NUM >= 20181031 || PACKETVER_ZERO_NUM >= 20181114
+ if (pc_isdead(sd) || pc_cant_act(sd)) {
+ clif->inventoryExpandResult(sd, EXPAND_INVENTORY_RESULT_OTHER_WORK);
+ return;
+ }
+ if (sd->status.inventorySize == MAX_INVENTORY) {
+ clif->inventoryExpandResult(sd, EXPAND_INVENTORY_RESULT_MAX_SIZE);
+ return;
+ }
+
+ char evname[EVENT_NAME_LENGTH];
+ struct event_data *ev = NULL;
+
+ safestrncpy(evname, "inventory_expansion::OnInvExpandConfirmed", EVENT_NAME_LENGTH);
+ if ((ev = strdb_get(npc->ev_db, evname))) {
+ script->run_npc(ev->nd->u.scr.script, ev->pos, sd->bl.id, ev->nd->bl.id);
+ } else {
+ ShowError("clif_parse_inventoryExpansionConfirmed: event '%s' not found, operation failed.\n", evname);
+ }
+#endif
+}
+
+static void clif_parse_inventoryExpansionRejected(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_inventoryExpansionRejected(int fd, struct map_session_data *sd)
+{
+#if PACKETVER_MAIN_NUM >= 20181031 || PACKETVER_RE_NUM >= 20181031 || PACKETVER_ZERO_NUM >= 20181114
+ char evname[EVENT_NAME_LENGTH];
+ struct event_data *ev = NULL;
+
+ safestrncpy(evname, "inventory_expansion::OnInvExpandRejected", EVENT_NAME_LENGTH);
+ if ((ev = strdb_get(npc->ev_db, evname))) {
+ script->run_npc(ev->nd->u.scr.script, ev->pos, sd->bl.id, ev->nd->bl.id);
+ } else {
+ ShowError("clif_parse_inventoryExpansionRejected: event '%s' not found, operation failed.\n", evname);
+ }
+#endif
+}
+
+// CZ_REQ_REMAINTIME
+static void clif_parse_reqRemainTime(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_reqRemainTime(int fd, struct map_session_data *sd)
+{
+}
+
/// Removes cart (ZC_CARTOFF).
/// 012b
/// Client behavior:
/// Closes the cart storage and removes all it's items from memory.
/// The Num & Weight values of the cart are left untouched and the cart is NOT removed.
-void clif_clearcart(int fd)
+static void clif_clearcart(int fd)
{
WFIFOHEAD(fd, packet_len(0x12b));
WFIFOW(fd,0) = 0x12b;
@@ -2809,7 +3207,7 @@ void clif_clearcart(int fd)
/// Guild XY locators (ZC_NOTIFY_POSITION_TO_GUILDM) [Valaris]
/// 01eb <account id>.L <x>.W <y>.W
-void clif_guild_xy(struct map_session_data *sd)
+static void clif_guild_xy(struct map_session_data *sd)
{
unsigned char buf[10];
@@ -2825,7 +3223,7 @@ void clif_guild_xy(struct map_session_data *sd)
/*==========================================
* Sends x/y dot to a single fd. [Skotlex]
*------------------------------------------*/
-void clif_guild_xy_single(int fd, struct map_session_data *sd)
+static void clif_guild_xy_single(int fd, struct map_session_data *sd)
{
if( sd->bg_id )
return;
@@ -2840,7 +3238,7 @@ void clif_guild_xy_single(int fd, struct map_session_data *sd)
}
// Guild XY locators [Valaris]
-void clif_guild_xy_remove(struct map_session_data *sd)
+static void clif_guild_xy_remove(struct map_session_data *sd)
{
unsigned char buf[10];
@@ -2856,7 +3254,7 @@ void clif_guild_xy_remove(struct map_session_data *sd)
/*==========================================
*
*------------------------------------------*/
-int clif_hpmeter_sub(struct block_list *bl, va_list ap)
+static int clif_hpmeter_sub(struct block_list *bl, va_list ap)
{
#if PACKETVER < 20100126
const int cmd = 0x106;
@@ -2898,7 +3296,8 @@ int clif_hpmeter_sub(struct block_list *bl, va_list ap)
* Server tells all players that are allowed to view HP bars
* and are nearby 'sd' that 'sd' hp bar was updated.
*------------------------------------------*/
-int clif_hpmeter(struct map_session_data *sd) {
+static int clif_hpmeter(struct map_session_data *sd)
+{
nullpo_ret(sd);
map->foreachinarea(clif->hpmeter_sub, sd->bl.m, sd->bl.x-AREA_SIZE, sd->bl.y-AREA_SIZE, sd->bl.x+AREA_SIZE, sd->bl.y+AREA_SIZE, BL_PC, sd);
return 0;
@@ -2912,7 +3311,7 @@ int clif_hpmeter(struct map_session_data *sd) {
/// 013a <atk range>.W (ZC_ATTACK_RANGE)
/// 0141 <status id>.L <base status>.L <plus status>.L (ZC_COUPLESTATUS)
/// TODO: Extract individual packets.
-void clif_updatestatus(struct map_session_data *sd,int type)
+static void clif_updatestatus(struct map_session_data *sd, int type)
{
int fd,len;
@@ -2976,14 +3375,12 @@ void clif_updatestatus(struct map_session_data *sd,int type)
WFIFOL(fd,4)=sd->battle_status.max_sp;
break;
case SP_HP:
- WFIFOL(fd,4)=sd->battle_status.hp;
- // TODO: Won't these overwrite the current packet?
- if( map->list[sd->bl.m].hpmeter_visible )
- clif->hpmeter(sd);
- if( !battle_config.party_hp_mode && sd->status.party_id )
- clif->party_hp(sd);
- if( sd->bg_id )
- clif->bg_hp(sd);
+ if (sd->battle_status.hp == 0 && battle_config.display_fake_hp_when_dead) {
+ // On official servers, the HP displayed when dead is the HP that the character will have at respawn.
+ WFIFOL(fd, 4) = status->get_restart_hp(sd, &sd->battle_status);
+ } else {
+ WFIFOL(fd, 4) = sd->battle_status.hp;
+ }
break;
case SP_SP:
WFIFOL(fd,4)=sd->battle_status.sp;
@@ -3028,31 +3425,55 @@ void clif_updatestatus(struct map_session_data *sd,int type)
WFIFOL(fd,4)=pc_leftside_matk(sd);
break;
case SP_ZENY:
+// [4144] possible send 64 bit value from PACKETVER_MAIN_NUM >= 20170906 || PACKETVER_RE_NUM >= 20170830 || defined(PACKETVER_ZERO)
+// but kro sending 0xb1 packet only.
WFIFOW(fd,0)=0xb1;
WFIFOL(fd,4)=sd->status.zeny;
len = packet_len(0xb1);
break;
+#if PACKETVER_MAIN_NUM >= 20170906 || PACKETVER_RE_NUM >= 20170830 || defined(PACKETVER_ZERO)
case SP_BASEEXP:
- WFIFOW(fd,0)=0xb1;
- WFIFOL(fd,4)=sd->status.base_exp;
+ WFIFOW(fd, 0) = 0xacb;
+ WFIFOQ(fd, 4) = sd->status.base_exp;
+ len = packet_len(0xacb);
+ break;
+ case SP_JOBEXP:
+ WFIFOW(fd, 0) = 0xacb;
+ WFIFOQ(fd, 4) = sd->status.job_exp;
+ len = packet_len(0xacb);
+ break;
+ case SP_NEXTBASEEXP:
+ WFIFOW(fd, 0) = 0xacb;
+ WFIFOQ(fd, 4) = pc->nextbaseexp(sd);
+ len = packet_len(0xacb);
+ break;
+ case SP_NEXTJOBEXP:
+ WFIFOW(fd, 0) = 0xacb;
+ WFIFOQ(fd, 4) = pc->nextjobexp(sd);
+ len = packet_len(0xacb);
+ break;
+#else
+ case SP_BASEEXP:
+ WFIFOW(fd, 0) = 0xb1;
+ WFIFOL(fd, 4) = (uint32)(sd->status.base_exp);
len = packet_len(0xb1);
break;
case SP_JOBEXP:
- WFIFOW(fd,0)=0xb1;
- WFIFOL(fd,4)=sd->status.job_exp;
+ WFIFOW(fd, 0) = 0xb1;
+ WFIFOL(fd, 4) = (uint32)(sd->status.job_exp);
len = packet_len(0xb1);
break;
case SP_NEXTBASEEXP:
- WFIFOW(fd,0)=0xb1;
- WFIFOL(fd,4)=pc->nextbaseexp(sd);
+ WFIFOW(fd, 0) = 0xb1;
+ WFIFOL(fd, 4) = (uint32)pc->nextbaseexp(sd);
len = packet_len(0xb1);
break;
case SP_NEXTJOBEXP:
- WFIFOW(fd,0)=0xb1;
- WFIFOL(fd,4)=pc->nextjobexp(sd);
+ WFIFOW(fd, 0) = 0xb1;
+ WFIFOL(fd, 4) = (uint32)pc->nextjobexp(sd);
len = packet_len(0xb1);
break;
-
+#endif
/**
* SP_U<STAT> are used to update the amount of points necessary to increase that stat
**/
@@ -3133,11 +3554,26 @@ void clif_updatestatus(struct map_session_data *sd,int type)
return;
}
WFIFOSET(fd,len);
+
+ // Additional update packets that should be sent right after
+ switch (type) {
+ case SP_BASELEVEL:
+ pc->update_job_and_level(sd);
+ break;
+ case SP_HP:
+ if (map->list[sd->bl.m].hpmeter_visible)
+ clif->hpmeter(sd);
+ if (!battle_config.party_hp_mode && sd->status.party_id)
+ clif->party_hp(sd);
+ if (sd->bg_id)
+ clif->bg_hp(sd);
+ break;
+ }
}
/// Notifies client of a parameter change of an another player (ZC_PAR_CHANGE_USER).
/// 01ab <account id>.L <var id>.W <value>.L
-void clif_changestatus(struct map_session_data* sd,int type,int val)
+static void clif_changestatus(struct map_session_data *sd, int type, int val)
{
unsigned char buf[12];
@@ -3161,13 +3597,15 @@ void clif_changestatus(struct map_session_data* sd,int type,int val)
}
/// Updates sprite/style properties of an object.
-void clif_changelook(struct block_list *bl,int type,int val)
+static void clif_changelook(struct block_list *bl, int type, int val)
{
struct map_session_data* sd;
struct status_change* sc;
struct view_data* vd;
enum send_target target = AREA;
+#if PACKETVER >= 4
int val2 = 0;
+#endif
nullpo_retv(bl);
sd = BL_CAST(BL_PC, bl);
@@ -3193,31 +3631,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:
@@ -3236,16 +3674,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 && battle_config.xmas_ignorepalette )
+ if ((sd->sc.option & OPTION_XMAS) != 0 && battle_config.xmas_ignorepalette == true)
val = 0;
- if( sd->sc.option&OPTION_SUMMER && battle_config.summer_ignorepalette )
+ if ((sd->sc.option & OPTION_SUMMER) != 0 && battle_config.summer_ignorepalette == true)
val = 0;
- if( sd->sc.option&OPTION_HANBOK && battle_config.hanbok_ignorepalette )
+ if ((sd->sc.option & OPTION_HANBOK) != 0 && battle_config.hanbok_ignorepalette == true)
val = 0;
- if( sd->sc.option&OPTION_OKTOBERFEST /* TODO: config? */ )
+ if ((sd->sc.option & OPTION_OKTOBERFEST) != 0 && battle_config.oktoberfest_ignorepalette == true)
+ val = 0;
+ if ((sd->sc.option & OPTION_SUMMER2) != 0 && battle_config.summer2_ignorepalette == true)
val = 0;
}
vd->cloth_color = val;
@@ -3289,50 +3729,49 @@ void clif_changelook(struct block_list *bl,int type,int val)
#if PACKETVER < 4
clif->sendlook(bl, bl->id, type, val, 0, target);
#else
- if(type == LOOK_WEAPON || type == LOOK_SHIELD) {
- nullpo_retv(vd);
- type = LOOK_WEAPON;
- val = vd->weapon;
- val2 = vd->shield;
- }
- if (clif->isdisguised(bl)) {
- clif->sendlook(bl, bl->id, type, val, val2, AREA_WOS);
- clif->sendlook(bl, -bl->id, type, val, val2, SELF);
+ if (bl->type != BL_NPC) {
+ if(type == LOOK_WEAPON || type == LOOK_SHIELD) {
+ nullpo_retv(vd);
+ type = LOOK_WEAPON;
+ val = vd->weapon;
+ val2 = vd->shield;
+ }
+ if (clif->isdisguised(bl)) {
+ clif->sendlook(bl, bl->id, type, val, val2, AREA_WOS);
+ clif->sendlook(bl, -bl->id, type, val, val2, SELF);
+ } else {
+ clif->sendlook(bl, bl->id, type, val, val2, target);
+ }
} else {
- clif->sendlook(bl, bl->id, type, val, val2, target);
+ struct npc_data *nd = BL_UCAST(BL_NPC, bl);
+ npc->refresh(nd);
}
#endif
}
//Sends a change-base-look packet required for traps as they are triggered.
-void clif_changetraplook(struct block_list *bl,int val)
+static void clif_changetraplook(struct block_list *bl, int val)
{
clif->sendlook(bl, bl->id, LOOK_BASE, val, 0, AREA);
}
/// 00c3 <id>.L <type>.B <value>.B (ZC_SPRITE_CHANGE)
/// 01d7 <id>.L <type>.B <value>.L (ZC_SPRITE_CHANGE2)
-void clif_sendlook(struct block_list *bl, int id, int type, int val, int val2, enum send_target target)
-{
- unsigned char buf[32];
-#if PACKETVER < 4
- WBUFW(buf,0)=0xc3;
- WBUFL(buf,2)=id;
- WBUFB(buf,6)=type;
- WBUFB(buf,7)=val;
- clif->send(buf,packet_len(0xc3),bl,target);
-#else
- WBUFW(buf,0)=0x1d7;
- WBUFL(buf,2)=id;
- WBUFB(buf,6)=type;
- WBUFW(buf,7)=val;
- WBUFW(buf,9)=val2;
- clif->send(buf,packet_len(0x1d7),bl,target);
+static void clif_sendlook(struct block_list *bl, int id, int type, int val, int val2, enum send_target target)
+{
+ struct PACKET_ZC_SPRITE_CHANGE p;
+ p.packetType = sendLookType;
+ p.AID = id;
+ p.type = type;
+ p.val = val;
+#if PACKETVER >= 4
+ p.val2 = val2;
#endif
+ clif->send(&p, sizeof(p), bl, target);
}
//For the stupid cloth-dye bug. Resends the given view data to the area specified by bl.
-void clif_refreshlook(struct block_list *bl,int id,int type,int val,enum send_target target)
+static void clif_refreshlook(struct block_list *bl, int id, int type, int val, enum send_target target)
{
clif->sendlook(bl, id, type, val, 0, target);
}
@@ -3342,7 +3781,8 @@ void clif_refreshlook(struct block_list *bl,int id,int type,int val,enum send_ta
/// <int>.B <need int>.B <dex>.B <need dex>.B <luk>.B <need luk>.B <atk>.W <atk2>.W
/// <matk min>.W <matk max>.W <def>.W <def2>.W <mdef>.W <mdef2>.W <hit>.W
/// <flee>.W <flee2>.W <crit>.W <aspd>.W <aspd2>.W
-void clif_initialstatus(struct map_session_data *sd) {
+static void clif_initialstatus(struct map_session_data *sd)
+{
int fd, mdef2;
unsigned char *buf;
@@ -3402,7 +3842,7 @@ void clif_initialstatus(struct map_session_data *sd) {
/// Marks an ammunition item in inventory as equipped (ZC_EQUIP_ARROW).
/// 013c <index>.W
-void clif_arrowequip(struct map_session_data *sd,int val)
+static void clif_arrowequip(struct map_session_data *sd, int val)
{
int fd;
@@ -3427,7 +3867,7 @@ void clif_arrowequip(struct map_session_data *sd,int val)
/// 3 = assassin, baby_assassin, assassin_cross => MsgStringTable[1040]="You have equipped throwing daggers."
/// gunslinger => MsgStringTable[1175]="Bullets have been equipped."
/// NOT ninja => MsgStringTable[245]="Ammunition has been equipped."
-void clif_arrow_fail(struct map_session_data *sd,int type)
+static void clif_arrow_fail(struct map_session_data *sd, int type)
{
int fd;
@@ -3442,16 +3882,20 @@ void clif_arrow_fail(struct map_session_data *sd,int type)
/// Presents a list of items, that can be processed by Arrow Crafting (ZC_MAKINGARROW_LIST).
/// 01ad <packet len>.W { <name id>.W }*
-void clif_arrow_create_list(struct map_session_data *sd)
+static void clif_arrow_create_list(struct map_session_data *sd)
{
int i, c;
int fd;
+ int len;
+ struct PACKET_ZC_MAKINGARROW_LIST *p;
nullpo_retv(sd);
fd = sd->fd;
- WFIFOHEAD(fd, MAX_SKILL_ARROW_DB*2+4);
- WFIFOW(fd,0) = 0x1ad;
+ len = MAX_SKILL_ARROW_DB * sizeof(struct PACKET_ZC_MAKINGARROW_LIST_sub) + sizeof(struct PACKET_ZC_MAKINGARROW_LIST);
+ WFIFOHEAD(fd, len);
+ p = WFIFOP(fd, 0);
+ p->packetType = 0x1ad;
for (i = 0, c = 0; i < MAX_SKILL_ARROW_DB; i++) {
int j;
@@ -3460,14 +3904,15 @@ void clif_arrow_create_list(struct map_session_data *sd)
&& !sd->status.inventory[j].equip && sd->status.inventory[j].identify
) {
if ((j = itemdb_viewid(skill->dbs->arrow_db[i].nameid)) > 0)
- WFIFOW(fd,c*2+4) = j;
+ p->items[c].itemId = j;
else
- WFIFOW(fd,c*2+4) = skill->dbs->arrow_db[i].nameid;
+ p->items[c].itemId = skill->dbs->arrow_db[i].nameid;
c++;
}
}
- WFIFOW(fd,2) = c*2+4;
- WFIFOSET(fd, WFIFOW(fd,2));
+ len = c * sizeof(struct PACKET_ZC_MAKINGARROW_LIST_sub) + sizeof(struct PACKET_ZC_MAKINGARROW_LIST);
+ p->packetLength = len;
+ WFIFOSET(fd, len);
if (c > 0) {
sd->menuskill_id = AC_MAKINGARROW;
sd->menuskill_val = c;
@@ -3481,7 +3926,7 @@ void clif_arrow_create_list(struct map_session_data *sd)
/// result:
/// 0 = failure
/// 1 = success
-void clif_statusupack(struct map_session_data *sd,int type,int ok,int val)
+static void clif_statusupack(struct map_session_data *sd, int type, int ok, int val)
{
int fd;
@@ -3499,7 +3944,8 @@ void clif_statusupack(struct map_session_data *sd,int type,int ok,int val)
/// Notifies the client about the result of a request to equip an item (ZC_REQ_WEAR_EQUIP_ACK).
/// 00aa <index>.W <equip location>.W <result>.B
/// 00aa <index>.W <equip location>.W <view id>.W <result>.B (PACKETVER >= 20100629)
-void clif_equipitemack(struct map_session_data *sd,int n,int pos,enum e_EQUIP_ITEM_ACK result) {
+static void clif_equipitemack(struct map_session_data *sd, int n, int pos, enum e_EQUIP_ITEM_ACK result)
+{
struct packet_equipitem_ack p;
nullpo_retv(sd);
@@ -3508,8 +3954,9 @@ void clif_equipitemack(struct map_session_data *sd,int n,int pos,enum e_EQUIP_IT
p.index = n+2;
p.wearLocation = pos;
#if PACKETVER >= 20100629
+ Assert_retv(n >= 0 && n < sd->status.inventorySize);
if (result == EIA_SUCCESS && sd->inventory_data[n]->equip&EQP_VISIBLE)
- p.wItemSpriteNumber = sd->inventory_data[n]->look;
+ p.wItemSpriteNumber = sd->inventory_data[n]->view_sprite;
else
p.wItemSpriteNumber = 0;
#endif
@@ -3520,7 +3967,8 @@ void clif_equipitemack(struct map_session_data *sd,int n,int pos,enum e_EQUIP_IT
/// Notifies the client about the result of a request to take off an item (ZC_REQ_TAKEOFF_EQUIP_ACK).
/// 00ac <index>.W <equip location>.W <result>.B
-void clif_unequipitemack(struct map_session_data *sd,int n,int pos,enum e_UNEQUIP_ITEM_ACK result) {
+static void clif_unequipitemack(struct map_session_data *sd, int n, int pos, enum e_UNEQUIP_ITEM_ACK result)
+{
struct packet_unequipitem_ack p;
nullpo_retv(sd);
@@ -3546,7 +3994,7 @@ void clif_unequipitemack(struct map_session_data *sd,int n,int pos,enum e_UNEQUI
/// 7 = base level up (super novice)
/// 8 = job level up (super novice)
/// 9 = base level up (taekwon)
-void clif_misceffect(struct block_list* bl,int type)
+static void clif_misceffect(struct block_list *bl, int type)
{
unsigned char buf[32];
@@ -3562,7 +4010,7 @@ void clif_misceffect(struct block_list* bl,int type)
/// Notifies clients in the area of a state change.
/// 0119 <id>.L <body state>.W <health state>.W <effect state>.W <pk mode>.B (ZC_STATE_CHANGE)
/// 0229 <id>.L <body state>.W <health state>.W <effect state>.L <pk mode>.B (ZC_STATE_CHANGE3)
-void clif_changeoption(struct block_list* bl)
+static void clif_changeoption(struct block_list *bl)
{
unsigned char buf[32];
struct status_change *sc;
@@ -3613,7 +4061,8 @@ void clif_changeoption(struct block_list* bl)
/// Displays status change effects on NPCs/monsters (ZC_NPC_SHOWEFST_UPDATE).
/// 028a <id>.L <effect state>.L <level>.L <showEFST>.L
-void clif_changeoption2(struct block_list* bl) {
+static void clif_changeoption2(struct block_list *bl)
+{
unsigned char buf[20];
struct status_change *sc;
@@ -3640,42 +4089,35 @@ void clif_changeoption2(struct block_list* bl) {
/// Notifies the client about the result of an item use request.
/// 00a8 <index>.W <amount>.W <result>.B (ZC_USE_ITEM_ACK)
/// 01c8 <index>.W <name id>.W <id>.L <amount>.W <result>.B (ZC_USE_ITEM_ACK2)
-void clif_useitemack(struct map_session_data *sd,int index,int amount,bool ok)
+static void clif_useitemack(struct map_session_data *sd, int index, int amount, bool ok)
{
+ struct PACKET_ZC_USE_ITEM_ACK p;
+ int fd;
+
nullpo_retv(sd);
- if(!ok) {
- int fd=sd->fd;
- WFIFOHEAD(fd,packet_len(0xa8));
- WFIFOW(fd,0)=0xa8;
- WFIFOW(fd,2)=index+2;
- WFIFOW(fd,4)=amount;
- WFIFOB(fd,6)=ok;
- WFIFOSET(fd,packet_len(0xa8));
- }
- else {
-#if PACKETVER < 3
- int fd=sd->fd;
- WFIFOHEAD(fd,packet_len(0xa8));
- WFIFOW(fd,0)=0xa8;
- WFIFOW(fd,2)=index+2;
- WFIFOW(fd,4)=amount;
- WFIFOB(fd,6)=ok;
- WFIFOSET(fd,packet_len(0xa8));
-#else
- unsigned char buf[32];
+ if (index < 0 || index >= sd->status.inventorySize)
+ return;
- WBUFW(buf,0)=0x1c8;
- WBUFW(buf,2)=index+2;
- if(sd->inventory_data[index] && sd->inventory_data[index]->view_id > 0)
- WBUFW(buf,4)=sd->inventory_data[index]->view_id;
- else
- WBUFW(buf,4)=sd->status.inventory[index].nameid;
- WBUFL(buf,6)=sd->bl.id;
- WBUFW(buf,10)=amount;
- WBUFB(buf,12)=ok;
- clif->send(buf,packet_len(0x1c8),&sd->bl,AREA);
+ fd = sd->fd;
+ p.packetType = useItemAckType;
+ p.index = index + 2;
+#if PACKETVER > 3
+ if (sd->inventory_data[index] && sd->inventory_data[index]->view_id > 0)
+ p.itemId = sd->inventory_data[index]->view_id;
+ else
+ p.itemId = sd->status.inventory[index].nameid;
+ p.AID = sd->bl.id;
#endif
+ p.amount = amount;
+ p.result = ok;
+
+ if (!ok) {
+ WFIFOHEAD(fd, sizeof(p));
+ memcpy(WFIFOP(fd, 0), &p, sizeof(p));
+ WFIFOSET(fd, sizeof(p));
+ } else {
+ clif->send(&p, sizeof(p), &sd->bl, AREA);
}
}
@@ -3686,7 +4128,7 @@ void clif_useitemack(struct map_session_data *sd,int index,int amount,bool ok)
/// 1 = Room limit exceeded
/// 2 = Same room already exists
// TODO: Flag enum
-void clif_createchat(struct map_session_data* sd, int flag)
+static void clif_createchat(struct map_session_data *sd, int flag)
{
int fd;
@@ -3706,7 +4148,7 @@ void clif_createchat(struct map_session_data* sd, int flag)
/// 1 = public
/// 2 = arena (npc waiting room)
/// 3 = PK zone (non-clickable)
-void clif_dispchat(struct chat_data *cd, int fd)
+static void clif_dispchat(struct chat_data *cd, int fd)
{
unsigned char buf[128];
uint8 type;
@@ -3746,7 +4188,7 @@ void clif_dispchat(struct chat_data *cd, int fd)
/// 1 = public
/// 2 = arena (npc waiting room)
/// 3 = PK zone (non-clickable)
-void clif_changechatstatus(struct chat_data *cd)
+static void clif_changechatstatus(struct chat_data *cd)
{
unsigned char buf[128];
uint8 type;
@@ -3775,7 +4217,7 @@ void clif_changechatstatus(struct chat_data *cd)
/// Removes the chatroom (ZC_DESTROY_ROOM).
/// 00d8 <chat id>.L
-void clif_clearchat(struct chat_data *cd,int fd)
+static void clif_clearchat(struct chat_data *cd, int fd)
{
unsigned char buf[32];
@@ -3803,7 +4245,7 @@ void clif_clearchat(struct chat_data *cd,int fd)
/// 5 = too low level
/// 6 = too high level
/// 7 = unsuitable job class
-void clif_joinchatfail(struct map_session_data *sd,int flag)
+static void clif_joinchatfail(struct map_session_data *sd, int flag)
{
int fd;
@@ -3822,7 +4264,7 @@ void clif_joinchatfail(struct map_session_data *sd,int flag)
/// role:
/// 0 = owner (menu)
/// 1 = normal
-void clif_joinchatok(struct map_session_data *sd,struct chat_data* cd)
+static void clif_joinchatok(struct map_session_data *sd, struct chat_data *cd)
{
int fd;
int i,t;
@@ -3858,7 +4300,7 @@ void clif_joinchatok(struct map_session_data *sd,struct chat_data* cd)
/// Notifies clients in a chat about a new member (ZC_MEMBER_NEWENTRY).
/// 00dc <users>.W <name>.24B
-void clif_addchat(struct chat_data* cd,struct map_session_data *sd)
+static void clif_addchat(struct chat_data *cd, struct map_session_data *sd)
{
unsigned char buf[32];
@@ -3876,7 +4318,7 @@ void clif_addchat(struct chat_data* cd,struct map_session_data *sd)
/// role:
/// 0 = owner (menu)
/// 1 = normal
-void clif_changechatowner(struct chat_data* cd, struct map_session_data* sd)
+static void clif_changechatowner(struct chat_data *cd, struct map_session_data *sd)
{
unsigned char buf[64];
@@ -3899,7 +4341,7 @@ void clif_changechatowner(struct chat_data* cd, struct map_session_data* sd)
/// flag:
/// 0 = left
/// 1 = kicked
-void clif_leavechat(struct chat_data* cd, struct map_session_data* sd, bool flag)
+static void clif_leavechat(struct chat_data *cd, struct map_session_data *sd, bool flag)
{
unsigned char buf[32];
@@ -3917,7 +4359,7 @@ void clif_leavechat(struct chat_data* cd, struct map_session_data* sd, bool flag
/// Opens a trade request window from char 'name'.
/// 00e5 <nick>.24B (ZC_REQ_EXCHANGE_ITEM)
/// 01f4 <nick>.24B <charid>.L <baselvl>.W (ZC_REQ_EXCHANGE_ITEM2)
-void clif_traderequest(struct map_session_data *sd, const char *name)
+static void clif_traderequest(struct map_session_data *sd, const char *name)
{
int fd;
#if PACKETVER >= 6
@@ -3956,16 +4398,16 @@ void clif_traderequest(struct map_session_data *sd, const char *name)
/// 3 = Accept
/// 4 = Cancel
/// 5 = Busy
-void clif_tradestart(struct map_session_data *sd, uint8 type)
+static void clif_tradestart(struct map_session_data *sd, uint8 type)
{
int fd;
-#if PACKETVER >= 6
+#if PACKETVER >= 20090406
struct map_session_data *tsd = NULL;
#endif // PACKETVER >= 6
nullpo_retv(sd);
fd = sd->fd;
-#if PACKETVER >= 6
+#if PACKETVER >= 20090406
tsd = map->id2sd(sd->trade_partner);
if (tsd) {
WFIFOHEAD(fd,packet_len(0x1f5));
@@ -3976,76 +4418,51 @@ void clif_tradestart(struct map_session_data *sd, uint8 type)
WFIFOSET(fd,packet_len(0x1f5));
return;
}
-#endif // PACKETVER >= 6
+#else
WFIFOHEAD(fd,packet_len(0xe7));
WFIFOW(fd,0) = 0xe7;
WFIFOB(fd,2) = type;
WFIFOSET(fd,packet_len(0xe7));
+#endif // PACKETVER >= 6
}
/// Notifies the client about an item from other player in current trade.
/// 00e9 <amount>.L <nameid>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W (ZC_ADD_EXCHANGE_ITEM)
/// 080f <nameid>.W <item type>.B <amount>.L <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W (ZC_ADD_EXCHANGE_ITEM2)
-void clif_tradeadditem(struct map_session_data* sd, struct map_session_data* tsd, int index, int amount)
+static void clif_tradeadditem(struct map_session_data *sd, struct map_session_data *tsd, int index, int amount)
{
int fd;
- unsigned char *buf;
+ struct PACKET_ZC_ADD_EXCHANGE_ITEM p;
+
nullpo_retv(sd);
nullpo_retv(tsd);
fd = tsd->fd;
- buf = WFIFOP(fd,0);
- WFIFOHEAD(fd,packet_len(tradeaddType));
- WBUFW(buf,0) = tradeaddType;
- if( index == 0 )
- {
-#if PACKETVER < 20100223
- WBUFL(buf,2) = amount; //amount
- WBUFW(buf,6) = 0; // type id
-#else
- WBUFW(buf,2) = 0; // type id
- WBUFB(buf,4) = 0; // item type
- WBUFL(buf,5) = amount; // amount
- buf = WBUFP(buf,1); //Advance 1B
-#endif
- WBUFB(buf,8) = 0; //identify flag
- WBUFB(buf,9) = 0; // attribute
- WBUFB(buf,10)= 0; //refine
- WBUFW(buf,11)= 0; //card (4w)
- WBUFW(buf,13)= 0; //card (4w)
- WBUFW(buf,15)= 0; //card (4w)
- WBUFW(buf,17)= 0; //card (4w)
-#if PACKETVER >= 20150226
- clif->add_random_options(WBUFP(buf, 19), &sd->status.inventory[index]);
-#endif
- }
- else
+ WFIFOHEAD(fd, sizeof(p));
+ memset(&p, 0, sizeof(p));
+ p.packetType = tradeaddType;
+ p.amount = amount;
+ if (index != 0)
{
index -= 2; //index fix
-#if PACKETVER < 20100223
- WBUFL(buf,2) = amount; //amount
- if(sd->inventory_data[index] && sd->inventory_data[index]->view_id > 0)
- WBUFW(buf,6) = sd->inventory_data[index]->view_id;
- else
- WBUFW(buf,6) = sd->status.inventory[index].nameid; // type id
-#else
+ Assert_retv(index >= 0 && index < sd->status.inventorySize);
if(sd->inventory_data[index] && sd->inventory_data[index]->view_id > 0)
- WBUFW(buf,2) = sd->inventory_data[index]->view_id;
+ p.itemId = sd->inventory_data[index]->view_id;
else
- WBUFW(buf,2) = sd->status.inventory[index].nameid; // type id
- WBUFB(buf,4) = sd->inventory_data[index]->type; // item type
- WBUFL(buf,5) = amount; // amount
- buf = WBUFP(buf,1); //Advance 1B
-#endif
- WBUFB(buf,8) = sd->status.inventory[index].identify; //identify flag
- WBUFB(buf,9) = sd->status.inventory[index].attribute; // attribute
- WBUFB(buf,10)= sd->status.inventory[index].refine; //refine
- clif->addcards(WBUFP(buf, 11), &sd->status.inventory[index]);
+ p.itemId = sd->status.inventory[index].nameid;
+#if PACKETVER >= 20100223
+ p.itemType = sd->inventory_data[index]->type;
+#endif
+ p.identified = sd->status.inventory[index].identify;
+ p.damaged = sd->status.inventory[index].attribute;
+ p.refine = sd->status.inventory[index].refine;
+ clif->addcards(&p.slot, &sd->status.inventory[index]);
#if PACKETVER >= 20150226
- clif->add_random_options(WBUFP(buf, 19), &sd->status.inventory[index]);
+ clif->add_item_options(&p.option_data[0], &sd->status.inventory[index]);
#endif
}
- WFIFOSET(fd,packet_len(tradeaddType));
+ memcpy(WFIFOP(fd, 0), &p, sizeof(p));
+ WFIFOSET(fd, sizeof(p));
}
/// Notifies the client about the result of request to add an item to the current trade (ZC_ACK_ADD_EXCHANGE_ITEM).
@@ -4054,7 +4471,9 @@ void clif_tradeadditem(struct map_session_data* sd, struct map_session_data* tsd
/// 0 = success
/// 1 = overweight
/// 2 = trade canceled
-void clif_tradeitemok(struct map_session_data* sd, int index, int fail)
+/// 3 = amount is exceeded. message 0x792
+/// 4 = other amount is exceeded. message 0x793
+static void clif_tradeitemok(struct map_session_data *sd, int index, int fail)
{
int fd;
nullpo_retv(sd);
@@ -4072,7 +4491,7 @@ void clif_tradeitemok(struct map_session_data* sd, int index, int fail)
/// who:
/// 0 = self
/// 1 = other player
-void clif_tradedeal_lock(struct map_session_data* sd, int fail)
+static void clif_tradedeal_lock(struct map_session_data *sd, int fail)
{
int fd;
nullpo_retv(sd);
@@ -4086,7 +4505,7 @@ void clif_tradedeal_lock(struct map_session_data* sd, int fail)
/// Notifies the client about the trade being canceled (ZC_CANCEL_EXCHANGE_ITEM).
/// 00ee
-void clif_tradecancelled(struct map_session_data* sd)
+static void clif_tradecancelled(struct map_session_data *sd)
{
int fd;
nullpo_retv(sd);
@@ -4102,7 +4521,7 @@ void clif_tradecancelled(struct map_session_data* sd)
/// result:
/// 0 = success
/// 1 = failure
-void clif_tradecompleted(struct map_session_data* sd, int fail)
+static void clif_tradecompleted(struct map_session_data *sd, int fail)
{
int fd;
nullpo_retv(sd);
@@ -4119,7 +4538,7 @@ void clif_tradecompleted(struct map_session_data* sd, int fail)
/// NOTE: Unknown purpose. Items are not removed until the window is
/// refreshed (ex. by putting another item in there).
/// unused
-void clif_tradeundo(struct map_session_data* sd)
+static void clif_tradeundo(struct map_session_data *sd)
{
int fd;
@@ -4132,7 +4551,7 @@ void clif_tradeundo(struct map_session_data* sd)
/// Updates storage total amount (ZC_NOTIFY_STOREITEM_COUNTINFO).
/// 00f2 <current count>.W <max count>.W
-void clif_updatestorageamount(struct map_session_data* sd, int amount, int max_amount)
+static void clif_updatestorageamount(struct map_session_data *sd, int amount, int max_amount)
{
int fd;
@@ -4149,54 +4568,56 @@ void clif_updatestorageamount(struct map_session_data* sd, int amount, int max_a
/// Notifies the client of an item being added to the storage.
/// 00f4 <index>.W <amount>.L <nameid>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W (ZC_ADD_ITEM_TO_STORE)
/// 01c4 <index>.W <amount>.L <nameid>.W <type>.B <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W (ZC_ADD_ITEM_TO_STORE2)
-void clif_storageitemadded(struct map_session_data* sd, struct item* i, int index, int amount)
+static void clif_storageitemadded(struct map_session_data *sd, struct item *i, int index, int amount)
{
- int view,fd;
- int offset = 0;
+ int view, fd;
+ struct PACKET_ZC_ADD_ITEM_TO_STORE p;
nullpo_retv(sd);
nullpo_retv(i);
- fd=sd->fd;
+
+ fd = sd->fd;
view = itemdb_viewid(i->nameid);
- WFIFOHEAD(fd,packet_len(storageaddType));
- WFIFOW(fd, 0) = storageaddType; // Storage item added
- WFIFOW(fd, 2) = index+1; // index
- WFIFOL(fd, 4) = amount; // amount
- WFIFOW(fd, 8) = ( view > 0 ) ? view : i->nameid; // id
+ WFIFOHEAD(fd, sizeof(p));
+ p.packetType = storageaddType; // Storage item added
+ p.index = index + 1; // index
+ p.amount = amount; // amount
+ p.itemId = (view > 0) ? view : i->nameid; // id
#if PACKETVER >= 5
- WFIFOB(fd,10) = itemtype(itemdb_type(i->nameid)); //type
- offset += 1;
+ p.itemType = itemtype(itemdb_type(i->nameid)); //type
#endif
- WFIFOB(fd,10+offset) = i->identify; //identify flag
- WFIFOB(fd,11+offset) = i->attribute; // attribute
- WFIFOB(fd,12+offset) = i->refine; //refine
- clif->addcards(WFIFOP(fd,13+offset), i);
+ p.identified = i->identify; //identify flag
+ p.damaged = i->attribute; // attribute
+ p.refine = i->refine; //refine
+ clif->addcards(&p.slot, i);
#if PACKETVER >= 20150226
- clif->add_random_options(WFIFOP(fd,21+offset), i);
+ clif->add_item_options(&p.option_data[0], i);
#endif
- WFIFOSET(fd,packet_len(storageaddType));
+ memcpy(WFIFOP(fd, 0), &p, sizeof(p));
+ WFIFOSET(fd, sizeof(p));
}
/// Notifies the client of an item being deleted from the storage (ZC_DELETE_ITEM_FROM_STORE).
/// 00f6 <index>.W <amount>.L
-void clif_storageitemremoved(struct map_session_data* sd, int index, int amount)
+static void clif_storageitemremoved(struct map_session_data *sd, int index, int amount)
{
int fd;
nullpo_retv(sd);
- fd=sd->fd;
- WFIFOHEAD(fd,packet_len(0xf6));
- WFIFOW(fd,0)=0xf6; // Storage item removed
- WFIFOW(fd,2)=index+1;
- WFIFOL(fd,4)=amount;
- WFIFOSET(fd,packet_len(0xf6));
+ fd = sd->fd;
+
+ WFIFOHEAD(fd, packet_len(0xf6));
+ WFIFOW(fd, 0) = 0xf6; // Storage item removed
+ WFIFOW(fd, 2) = index + 1;
+ WFIFOL(fd, 4) = amount;
+ WFIFOSET(fd, packet_len(0xf6));
}
/// Closes storage (ZC_CLOSE_STORE).
/// 00f8
-void clif_storageclose(struct map_session_data* sd)
+static void clif_storageclose(struct map_session_data *sd)
{
int fd;
@@ -4211,7 +4632,8 @@ void clif_storageclose(struct map_session_data* sd)
/*==========================================
* Server tells 'sd' player client the abouts of 'dstsd' player
*------------------------------------------*/
-void clif_getareachar_pc(struct map_session_data* sd,struct map_session_data* dstsd) {
+static void clif_getareachar_pc(struct map_session_data *sd, struct map_session_data *dstsd)
+{
struct block_list *d_bl;
int i;
@@ -4251,7 +4673,8 @@ void clif_getareachar_pc(struct map_session_data* sd,struct map_session_data* ds
clif->devotion(d_bl, sd);
}
-void clif_getareachar_unit(struct map_session_data* sd,struct block_list *bl) {
+static void clif_getareachar_unit(struct map_session_data *sd, struct block_list *bl)
+{
struct unit_data *ud;
struct view_data *vd;
@@ -4290,8 +4713,9 @@ void clif_getareachar_unit(struct map_session_data* sd,struct block_list *bl) {
clif->specialeffect_single(bl,421,sd->fd);
if (tsd->bg_id != 0 && map->list[tsd->bl.m].flag.battleground)
clif->sendbgemblem_single(sd->fd,tsd);
- if (tsd->status.robe)
- clif->refreshlook(&sd->bl,bl->id,LOOK_ROBE,tsd->status.robe,SELF);
+ if (tsd->status.look.robe != 0)
+ clif->refreshlook(&sd->bl, bl->id, LOOK_ROBE, tsd->status.look.robe, SELF);
+ clif->hat_effect(bl, &sd->bl, SELF);
}
break;
case BL_MER: // Devotion Effects
@@ -4310,6 +4734,8 @@ void clif_getareachar_unit(struct map_session_data* sd,struct block_list *bl) {
clif->specialeffect_single(bl,423,sd->fd);
else if (nd->size == SZ_MEDIUM)
clif->specialeffect_single(bl,421,sd->fd);
+ if (nd->clan_id > 0)
+ clif->sc_load(&nd->bl, nd->bl.id, AREA, status->dbs->IconChangeTable[SC_CLAN_INFO], 0, nd->clan_id, 0);
}
break;
case BL_MOB:
@@ -4349,7 +4775,8 @@ static inline int clif_calc_delay(int type, int div, int damage, int delay)
/*==========================================
* Estimates walk delay based on the damage criteria. [Skotlex]
*------------------------------------------*/
-int clif_calc_walkdelay(struct block_list *bl,int delay, int type, int damage, int div_) {
+static int clif_calc_walkdelay(struct block_list *bl, int delay, int type, int damage, int div_)
+{
if (type == 4 || type == 9 || damage <=0)
return 0;
@@ -4373,7 +4800,8 @@ int clif_calc_walkdelay(struct block_list *bl,int delay, int type, int damage, i
/// 08c8 <src ID>.L <dst ID>.L <server tick>.L <src speed>.L <dst speed>.L <damage>.L <IsSPDamage>.B <div>.W <type>.B <damage2>.L (ZC_NOTIFY_ACT2)
/// type: @see enum battle_dmg_type
/// for BDT_NORMAL: [ damage: total damage, div: amount of hits, damage2: assassin dual-wield damage ]
-int clif_damage(struct block_list* src, struct block_list* dst, int sdelay, int ddelay, int64 in_damage, short div, unsigned char type, int64 in_damage2) {
+static int clif_damage(struct block_list *src, struct block_list *dst, int sdelay, int ddelay, int64 in_damage, short div, unsigned char type, int64 in_damage2)
+{
struct packet_damage p;
struct status_change *sc;
#if PACKETVER < 20071113
@@ -4452,7 +4880,7 @@ int clif_damage(struct block_list* src, struct block_list* dst, int sdelay, int
/*==========================================
* src picks up dst
*------------------------------------------*/
-void clif_takeitem(struct block_list* src, struct block_list* dst)
+static void clif_takeitem(struct block_list *src, struct block_list *dst)
{
//clif->damage(src,dst,0,0,0,0,BDT_PICKUP,0);
unsigned char buf[32];
@@ -4471,7 +4899,7 @@ void clif_takeitem(struct block_list* src, struct block_list* dst)
/*==========================================
* inform clients in area that `bl` is sitting
*------------------------------------------*/
-void clif_sitting(struct block_list* bl)
+static void clif_sitting(struct block_list *bl)
{
unsigned char buf[32];
nullpo_retv(bl);
@@ -4490,7 +4918,7 @@ void clif_sitting(struct block_list* bl)
/*==========================================
* inform clients in area that `bl` is standing
*------------------------------------------*/
-void clif_standing(struct block_list* bl)
+static void clif_standing(struct block_list *bl)
{
unsigned char buf[32];
nullpo_retv(bl);
@@ -4508,7 +4936,8 @@ void clif_standing(struct block_list* bl)
/// Inform client(s) about a map-cell change (ZC_UPDATE_MAPINFO).
/// 0192 <x>.W <y>.W <type>.W <map name>.16B
-void clif_changemapcell(int fd, int16 m, int x, int y, int type, enum send_target target) {
+static void clif_changemapcell(int fd, int16 m, int x, int y, int type, enum send_target target)
+{
unsigned char buf[32];
WBUFW(buf,0) = 0x192;
@@ -4533,30 +4962,35 @@ void clif_changemapcell(int fd, int16 m, int x, int y, int type, enum send_targe
/// Notifies the client about an item on floor (ZC_ITEM_ENTRY).
/// 009d <id>.L <name id>.W <identified>.B <x>.W <y>.W <amount>.W <subX>.B <subY>.B
-void clif_getareachar_item(struct map_session_data* sd,struct flooritem_data* fitem) {
- int view,fd;
+static void clif_getareachar_item(struct map_session_data *sd, struct flooritem_data *fitem)
+{
+ int view, fd;
+ struct PACKET_ZC_ITEM_ENTRY p;
nullpo_retv(sd);
nullpo_retv(fitem);
- fd=sd->fd;
+ fd = sd->fd;
- WFIFOHEAD(fd,packet_len(0x9d));
- WFIFOW(fd,0)=0x9d;
- WFIFOL(fd,2)=fitem->bl.id;
- if((view = itemdb_viewid(fitem->item_data.nameid)) > 0)
- WFIFOW(fd,6)=view;
+ WFIFOHEAD(fd, sizeof(p));
+ p.packetType = 0x9d;
+ p.AID = fitem->bl.id;
+ if ((view = itemdb_viewid(fitem->item_data.nameid)) > 0)
+ p.itemId = view;
else
- WFIFOW(fd,6)=fitem->item_data.nameid;
- WFIFOB(fd,8)=fitem->item_data.identify;
- WFIFOW(fd,9)=fitem->bl.x;
- WFIFOW(fd,11)=fitem->bl.y;
- WFIFOW(fd,13)=fitem->item_data.amount;
- WFIFOB(fd,15)=fitem->subx;
- WFIFOB(fd,16)=fitem->suby;
- WFIFOSET(fd,packet_len(0x9d));
+ p.itemId = fitem->item_data.nameid;
+ p.identify = fitem->item_data.identify;
+ p.x = fitem->bl.x;
+ p.y = fitem->bl.y;
+ p.amount = fitem->item_data.amount;
+ p.subX = fitem->subx;
+ p.subY = fitem->suby;
+
+ memcpy(WFIFOP(fd, 0), &p, sizeof(p));
+ WFIFOSET(fd, sizeof(p));
}
-void clif_graffiti_entry(struct block_list *bl, struct skill_unit *su, enum send_target target) {
+static void clif_graffiti_entry(struct block_list *bl, struct skill_unit *su, enum send_target target)
+{
struct packet_graffiti_entry p;
nullpo_retv(bl);
@@ -4580,7 +5014,8 @@ void clif_graffiti_entry(struct block_list *bl, struct skill_unit *su, enum send
/// 01c9 <id>.L <creator id>.L <x>.W <y>.W <unit id>.B <visible>.B <has msg>.B <msg>.80B (ZC_SKILL_ENTRY2)
/// 08c7 <lenght>.W <id> L <creator id>.L <x>.W <y>.W <unit id>.B <range>.W <visible>.B (ZC_SKILL_ENTRY3)
/// 099f <lenght>.W <id> L <creator id>.L <x>.W <y>.W <unit id>.L <range>.W <visible>.B (ZC_SKILL_ENTRY4)
-void clif_getareachar_skillunit(struct block_list *bl, struct skill_unit *su, enum send_target target) {
+static void clif_getareachar_skillunit(struct block_list *bl, struct skill_unit *su, enum send_target target)
+{
struct packet_skill_entry p;
nullpo_retv(bl);
nullpo_retv(su);
@@ -4634,7 +5069,8 @@ void clif_getareachar_skillunit(struct block_list *bl, struct skill_unit *su, en
/*==========================================
* Server tells client to remove unit of id 'unit->bl.id'
*------------------------------------------*/
-void clif_clearchar_skillunit(struct skill_unit *su, int fd) {
+static void clif_clearchar_skillunit(struct skill_unit *su, int fd)
+{
nullpo_retv(su);
WFIFOHEAD(fd,packet_len(0x120));
@@ -4648,7 +5084,8 @@ void clif_clearchar_skillunit(struct skill_unit *su, int fd) {
/// Removes a skill unit (ZC_SKILL_DISAPPEAR).
/// 0120 <id>.L
-void clif_skill_delunit(struct skill_unit *su) {
+static void clif_skill_delunit(struct skill_unit *su)
+{
unsigned char buf[16];
nullpo_retv(su);
@@ -4661,7 +5098,7 @@ void clif_skill_delunit(struct skill_unit *su) {
/// Sent when an object gets ankle-snared (ZC_SKILL_UPDATE).
/// 01ac <id>.L
/// Only affects units with class [139,153] client-side.
-void clif_skillunit_update(struct block_list* bl)
+static void clif_skillunit_update(struct block_list *bl)
{
unsigned char buf[6];
nullpo_retv(bl);
@@ -4675,7 +5112,8 @@ void clif_skillunit_update(struct block_list* bl)
/*==========================================
*
*------------------------------------------*/
-int clif_getareachar(struct block_list* bl,va_list ap) {
+static int clif_getareachar(struct block_list *bl, va_list ap)
+{
struct map_session_data *sd;
nullpo_ret(bl);
@@ -4704,7 +5142,7 @@ int clif_getareachar(struct block_list* bl,va_list ap) {
/*==========================================
* tbl has gone out of view-size of bl
*------------------------------------------*/
-int clif_outsight(struct block_list *bl,va_list ap)
+static int clif_outsight(struct block_list *bl, va_list ap)
{
struct block_list *tbl;
struct view_data *vd;
@@ -4761,7 +5199,7 @@ int clif_outsight(struct block_list *bl,va_list ap)
/*==========================================
* tbl has come into view of bl
*------------------------------------------*/
-int clif_insight(struct block_list *bl,va_list ap)
+static int clif_insight(struct block_list *bl, va_list ap)
{
struct block_list *tbl;
struct map_session_data *sd, *tsd;
@@ -4794,7 +5232,7 @@ int clif_insight(struct block_list *bl,va_list ap)
/// Updates whole skill tree (ZC_SKILLINFO_LIST).
/// 010f <packet len>.W { <skill id>.W <type>.L <level>.W <sp cost>.W <attack range>.W <skill name>.24B <upgradable>.B }*
-void clif_skillinfoblock(struct map_session_data *sd)
+static void clif_skillinfoblock(struct map_session_data *sd)
{
int fd;
int i,len,id;
@@ -4804,9 +5242,9 @@ void clif_skillinfoblock(struct map_session_data *sd)
fd=sd->fd;
if (!fd) return;
- WFIFOHEAD(fd, MAX_SKILL * 37 + 4);
+ WFIFOHEAD(fd, MAX_SKILL_DB * 37 + 4);
WFIFOW(fd,0) = 0x10f;
- for ( i = 0, len = 4; i < MAX_SKILL; i++) {
+ for ( i = 0, len = 4; i < MAX_SKILL_DB; i++) {
if( (id = sd->status.skill[i].id) != 0 ) {
int level;
// workaround for bugreport:5348
@@ -4837,7 +5275,7 @@ void clif_skillinfoblock(struct map_session_data *sd)
WFIFOSET(fd,len);
// workaround for bugreport:5348; send the remaining skills one by one to bypass packet size limit
- for ( ; i < MAX_SKILL; i++) {
+ for ( ; i < MAX_SKILL_DB; i++) {
if( (id = sd->status.skill[i].id) != 0 ) {
clif->addskill(sd, id);
clif->skillinfo(sd, id, 0);
@@ -4850,7 +5288,7 @@ void clif_skillinfoblock(struct map_session_data *sd)
/// Adds new skill to the skill tree (ZC_ADD_SKILL).
/// 0111 <skill id>.W <type>.L <level>.W <sp cost>.W <attack range>.W <skill name>.24B <upgradable>.B
-void clif_addskill(struct map_session_data *sd, int id)
+static void clif_addskill(struct map_session_data *sd, int id)
{
int fd, skill_lv, idx = skill->get_index(id);
@@ -4886,7 +5324,7 @@ void clif_addskill(struct map_session_data *sd, int id)
/// Deletes a skill from the skill tree (ZC_SKILLINFO_DELETE).
/// 0441 <skill id>.W
-void clif_deleteskill(struct map_session_data *sd, int id)
+static void clif_deleteskill(struct map_session_data *sd, int id)
{
#if PACKETVER >= 20081217
int fd;
@@ -4909,7 +5347,7 @@ void clif_deleteskill(struct map_session_data *sd, int id)
/// flag:
/// 0: guild call
/// 1: player call
-void clif_skillup(struct map_session_data *sd, uint16 skill_id, int skill_lv, int flag)
+static void clif_skillup(struct map_session_data *sd, uint16 skill_id, int skill_lv, int flag)
{
int fd;
nullpo_retv(sd);
@@ -4932,14 +5370,14 @@ void clif_skillup(struct map_session_data *sd, uint16 skill_id, int skill_lv, in
/// Updates a skill in the skill tree (ZC_SKILLINFO_UPDATE2).
/// 07e1 <skill id>.W <type>.L <level>.W <sp cost>.W <attack range>.W <upgradable>.B
-void clif_skillinfo(struct map_session_data *sd,int skill_id, int inf)
+static void clif_skillinfo(struct map_session_data *sd, int skill_id, int inf)
{
const int fd = sd->fd;
int idx = skill->get_index(skill_id);
int skill_lv;
nullpo_retv(sd);
- Assert_retv(idx >= 0 && idx < MAX_SKILL);
+ Assert_retv(idx >= 0 && idx < MAX_SKILL_DB);
skill_lv = sd->status.skill[idx].lv;
@@ -4977,7 +5415,7 @@ void clif_skillinfo(struct map_session_data *sd,int skill_id, int inf)
/// is disposable:
/// 0 = yellow chat text "[src name] will use skill [skill name]."
/// 1 = no text
-void clif_useskill(struct block_list* bl, int src_id, int dst_id, int dst_x, int dst_y, uint16 skill_id, uint16 skill_lv, int casttime)
+static void clif_useskill(struct block_list *bl, int src_id, int dst_id, int dst_x, int dst_y, uint16 skill_id, uint16 skill_lv, int casttime)
{
#if PACKETVER < 20091124
const int cmd = 0x13e;
@@ -5006,11 +5444,15 @@ void clif_useskill(struct block_list* bl, int src_id, int dst_id, int dst_x, int
} else {
clif->send(buf,packet_len(cmd), bl, AREA);
}
+#if PACKETVER >= 20151223
+ if ((skill->get_inf2(skill_id) & INF2_SHOW_SKILL_SCALE) != 0)
+ clif->skill_scale(bl, src_id, bl->x, bl->y, skill_id, skill_lv, casttime);
+#endif
}
/// Notifies clients in area, that an object canceled casting (ZC_DISPEL).
/// 01b9 <id>.L
-void clif_skillcastcancel(struct block_list* bl)
+static void clif_skillcastcancel(struct block_list *bl)
{
unsigned char buf[16];
@@ -5044,9 +5486,10 @@ void clif_skillcastcancel(struct block_list* bl)
/// if(result!=0) doesn't display any of the previous messages
/// Note: when this packet is received an unknown flag is always set to 0,
/// suggesting this is an ACK packet for the UseSkill packets and should be sent on success too [FlavioJS]
-void clif_skill_fail(struct map_session_data *sd,uint16 skill_id,enum useskill_fail_cause cause,int btype)
+static void clif_skill_fail(struct map_session_data *sd, uint16 skill_id, enum useskill_fail_cause cause, int btype, int32 item_id)
{
int fd;
+ struct PACKET_ZC_ACK_TOUSESKILL p;
if (!sd) {
//Since this is the most common nullpo....
@@ -5054,33 +5497,36 @@ void clif_skill_fail(struct map_session_data *sd,uint16 skill_id,enum useskill_f
return;
}
- fd=sd->fd;
+ fd = sd->fd;
if (!fd) return;
- if(battle_config.display_skill_fail&1)
+ if (battle_config.display_skill_fail&1)
return; //Disable all skill failed messages
- if(cause==USESKILL_FAIL_SKILLINTERVAL && !sd->state.showdelay)
+ if (cause == USESKILL_FAIL_SKILLINTERVAL && !sd->state.showdelay)
return; //Disable delay failed messages
- if(skill_id == RG_SNATCHER && battle_config.display_skill_fail&4)
+ if (skill_id == RG_SNATCHER && battle_config.display_skill_fail & 4)
return;
- if(skill_id == TF_POISON && battle_config.display_skill_fail&8)
+ if (skill_id == TF_POISON && battle_config.display_skill_fail & 8)
return;
- WFIFOHEAD(fd,packet_len(0x110));
- WFIFOW(fd,0) = 0x110;
- WFIFOW(fd,2) = skill_id;
- WFIFOL(fd,4) = btype;
- WFIFOB(fd,8) = 0;// success
- WFIFOB(fd,9) = cause;
- WFIFOSET(fd,packet_len(0x110));
+ WFIFOHEAD(fd, sizeof(p));
+ p.packetType = 0x110;
+ p.skillId = skill_id;
+ p.btype = btype;
+ p.itemId = item_id;
+ p.flag = 0; // 0 - failed
+ p.cause = cause;
+
+ memcpy(WFIFOP(fd, 0), &p, sizeof(p));
+ WFIFOSET(fd, sizeof(p));
}
/// Skill cooldown display icon (ZC_SKILL_POSTDELAY).
/// 043d <skill ID>.W <tick>.L
-void clif_skill_cooldown(struct map_session_data *sd, uint16 skill_id, unsigned int duration)
+static void clif_skill_cooldown(struct map_session_data *sd, uint16 skill_id, unsigned int duration)
{
#if PACKETVER>=20081112
int fd;
@@ -5099,7 +5545,8 @@ void clif_skill_cooldown(struct map_session_data *sd, uint16 skill_id, unsigned
/// Skill attack effect and damage.
/// 0114 <skill id>.W <src id>.L <dst id>.L <tick>.L <src delay>.L <dst delay>.L <damage>.W <level>.W <div>.W <type>.B (ZC_NOTIFY_SKILL)
/// 01de <skill id>.W <src id>.L <dst id>.L <tick>.L <src delay>.L <dst delay>.L <damage>.L <level>.W <div>.W <type>.B (ZC_NOTIFY_SKILL2)
-int clif_skill_damage(struct block_list *src, struct block_list *dst, int64 tick, int sdelay, int ddelay, int64 in_damage, int div, uint16 skill_id, uint16 skill_lv, int type) {
+static int clif_skill_damage(struct block_list *src, struct block_list *dst, int64 tick, int sdelay, int ddelay, int64 in_damage, int div, uint16 skill_id, uint16 skill_lv, int type)
+{
unsigned char buf[64];
struct status_change *sc;
int damage;
@@ -5200,7 +5647,8 @@ int clif_skill_damage(struct block_list *src, struct block_list *dst, int64 tick
/// Ground skill attack effect and damage (ZC_NOTIFY_SKILL_POSITION).
/// 0115 <skill id>.W <src id>.L <dst id>.L <tick>.L <src delay>.L <dst delay>.L <x>.W <y>.W <damage>.W <level>.W <div>.W <type>.B
#if 0
-int clif_skill_damage2(struct block_list *src, struct block_list *dst, int64 tick, int sdelay, int ddelay, int damage, int div, uint16 skill_id, uint16 skill_lv, int type) {
+static int clif_skill_damage2(struct block_list *src, struct block_list *dst, int64 tick, int sdelay, int ddelay, int damage, int div, uint16 skill_id, uint16 skill_lv, int type)
+{
unsigned char buf[64];
struct status_change *sc;
@@ -5257,7 +5705,7 @@ int clif_skill_damage2(struct block_list *src, struct block_list *dst, int64 tic
/// Non-damaging skill effect.
/// 011a <skill id>.W <skill lv>.W <dst id>.L <src id>.L <result>.B (ZC_USE_SKILL)
/// 09cb <skill id>.W <skill lv>.L <dst id>.L <src id>.L <result>.B (ZC_USE_SKILL2)
-int clif_skill_nodamage(struct block_list *src, struct block_list *dst, uint16 skill_id, int heal, int fail)
+static int clif_skill_nodamage(struct block_list *src, struct block_list *dst, uint16 skill_id, int heal, int fail)
{
unsigned char buf[32];
short offset = 0;
@@ -5301,7 +5749,8 @@ int clif_skill_nodamage(struct block_list *src, struct block_list *dst, uint16 s
/// Non-damaging ground skill effect (ZC_NOTIFY_GROUNDSKILL).
/// 0117 <skill id>.W <src id>.L <level>.W <x>.W <y>.W <tick>.L
-void clif_skill_poseffect(struct block_list *src, uint16 skill_id, int val, int x, int y, int64 tick) {
+static void clif_skill_poseffect(struct block_list *src, uint16 skill_id, int val, int x, int y, int64 tick)
+{
unsigned char buf[32];
nullpo_retv(src);
@@ -5324,31 +5773,49 @@ void clif_skill_poseffect(struct block_list *src, uint16 skill_id, int val, int
/// Presents a list of available warp destinations (ZC_WARPLIST).
/// 011c <skill id>.W { <map name>.16B }*4
-void clif_skill_warppoint(struct map_session_data* sd, uint16 skill_id, uint16 skill_lv, unsigned short map1, unsigned short map2, unsigned short map3, unsigned short map4)
+static void clif_skill_warppoint(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv, unsigned short map1, unsigned short map2, unsigned short map3, unsigned short map4)
{
int fd;
+ int len;
+ int mapsCount = 0;
+ struct PACKET_ZC_WARPLIST *p;
nullpo_retv(sd);
fd = sd->fd;
+#if PACKETVER_MAIN_NUM >= 20170502 || PACKETVER_RE_NUM >= 20170419 || defined(PACKETVER_ZERO)
+ len = sizeof(struct PACKET_ZC_WARPLIST) + sizeof(struct PACKET_ZC_WARPLIST_sub) * mapsCount;
+#else
+ len = sizeof(struct PACKET_ZC_WARPLIST);
+#endif
- WFIFOHEAD(fd,packet_len(0x11c));
- WFIFOW(fd,0) = 0x11c;
- WFIFOW(fd,2) = skill_id;
- memset(WFIFOP(fd,4), 0x00, 4*MAP_NAME_LENGTH_EXT);
- if (map1 == (unsigned short)-1) strcpy(WFIFOP(fd,4), "Random");
- else // normal map name
- if (map1 > 0) mapindex->getmapname_ext(mapindex_id2name(map1), WFIFOP(fd,4));
- if (map2 > 0) mapindex->getmapname_ext(mapindex_id2name(map2), WFIFOP(fd,20));
- if (map3 > 0) mapindex->getmapname_ext(mapindex_id2name(map3), WFIFOP(fd,36));
- if (map4 > 0) mapindex->getmapname_ext(mapindex_id2name(map4), WFIFOP(fd,52));
- WFIFOSET(fd,packet_len(0x11c));
+ WFIFOHEAD(fd, len);
+ p = WFIFOP(fd, 0);
+ memset(p, 0, len);
+ p->packetType = skilWarpPointType;
+ p->skillId = skill_id;
+ if (map1 == (unsigned short)-1) {
+ strcpy(p->maps[mapsCount++].map, "Random");
+ } else { // normal map name
+ if (map1 > 0) mapindex->getmapname_ext(mapindex_id2name(map1), p->maps[mapsCount++].map);
+ }
+ if (map2 > 0) mapindex->getmapname_ext(mapindex_id2name(map2), p->maps[mapsCount++].map);
+ if (map3 > 0) mapindex->getmapname_ext(mapindex_id2name(map3), p->maps[mapsCount++].map);
+ if (map4 > 0) mapindex->getmapname_ext(mapindex_id2name(map4), p->maps[mapsCount++].map);
+
+#if PACKETVER_MAIN_NUM >= 20170502 || PACKETVER_RE_NUM >= 20170419 || defined(PACKETVER_ZERO)
+ len = sizeof(struct PACKET_ZC_WARPLIST) + sizeof(struct PACKET_ZC_WARPLIST_sub) * mapsCount;
+ p->packetLength = len;
+#endif
+
+ WFIFOSET(fd, len);
sd->menuskill_id = skill_id;
- if (skill_id == AL_WARP){
- sd->menuskill_val = (sd->ud.skillx<<16)|sd->ud.skilly; //Store warp position here.
+ if (skill_id == AL_WARP) {
+ sd->menuskill_val = (sd->ud.skillx << 16) | sd->ud.skilly; //Store warp position here.
sd->state.workinprogress = 3;
- }else
+ } else {
sd->menuskill_val = skill_lv;
+ }
}
/// Memo message (ZC_ACK_REMEMBER_WARPPOINT).
@@ -5357,10 +5824,11 @@ void clif_skill_warppoint(struct map_session_data* sd, uint16 skill_id, uint16 s
/// 0 = "Saved location as a Memo Point for Warp skill." in color 0xFFFF00 (cyan)
/// 1 = "Skill Level is not high enough." in color 0x0000FF (red)
/// 2 = "You haven't learned Warp." in color 0x0000FF (red)
+/// 3 = "Cannot save location as a Memo Point at current location." in color 0x0000FF (red)
///
/// @param sd Who receives the message
/// @param type What message
-void clif_skill_memomessage(struct map_session_data* sd, int type)
+static void clif_skill_memomessage(struct map_session_data *sd, int type)
{
int fd;
@@ -5379,10 +5847,11 @@ void clif_skill_memomessage(struct map_session_data* sd, int type)
/// 0 = "Unable to Teleport in this area" in color 0xFFFF00 (cyan)
/// 1 = "Saved point cannot be memorized." in color 0x0000FF (red)
/// 2 = "This skill cannot be used within this area." in color 0xFFFF00 (cyan)
+/// 3 = "This item cannot be used within this area." in color 0xFFFF00 (cyan)
///
/// @param sd Who receives the message
/// @param type What message
-void clif_skill_mapinfomessage(struct map_session_data *sd, int type)
+static void clif_skill_mapinfomessage(struct map_session_data *sd, int type)
{
int fd;
@@ -5398,7 +5867,8 @@ void clif_skill_mapinfomessage(struct map_session_data *sd, int type)
/// Displays Sense (WZ_ESTIMATION) information window (ZC_MONSTER_INFO).
/// 018c <class>.W <level>.W <size>.W <hp>.L <def>.W <race>.W <mdef>.W <element>.W
/// <water%>.B <earth%>.B <fire%>.B <wind%>.B <poison%>.B <holy%>.B <shadow%>.B <ghost%>.B <undead%>.B
-void clif_skill_estimation(struct map_session_data *sd,struct block_list *dst) {
+static void clif_skill_estimation(struct map_session_data *sd, struct block_list *dst)
+{
struct status_data *dstatus;
unsigned char buf[64];
int i;//, fix;
@@ -5435,37 +5905,42 @@ void clif_skill_estimation(struct map_session_data *sd,struct block_list *dst) {
/// 018d <packet len>.W { <name id>.W { <material id>.W }*3 }*
/// material id:
/// unused by the client
-void clif_skill_produce_mix_list(struct map_session_data *sd, int skill_id , int trigger)
+static void clif_skill_produce_mix_list(struct map_session_data *sd, int skill_id, int trigger)
{
- int i,c,view,fd;
+ int i, c, view, fd;
+ int len;
+ struct PACKET_ZC_MAKABLEITEMLIST *p;
+
nullpo_retv(sd);
- if(sd->menuskill_id == skill_id)
+ if (sd->menuskill_id == skill_id)
return; //Avoid resending the menu twice or more times...
- if( skill_id == GC_CREATENEWPOISON )
+ if (skill_id == GC_CREATENEWPOISON)
skill_id = GC_RESEARCHNEWPOISON;
- fd=sd->fd;
- WFIFOHEAD(fd, MAX_SKILL_PRODUCE_DB * 8 + 8);
- WFIFOW(fd, 0)=0x18d;
-
- for(i=0,c=0;i<MAX_SKILL_PRODUCE_DB;i++){
- if( skill->can_produce_mix(sd,skill->dbs->produce_db[i].nameid, trigger, 1) &&
- ( ( skill_id > 0 && skill->dbs->produce_db[i].req_skill == skill_id ) || skill_id < 0 )
- ){
- if((view = itemdb_viewid(skill->dbs->produce_db[i].nameid)) > 0)
- WFIFOW(fd,c*8+ 4)= view;
+ fd = sd->fd;
+ len = MAX_SKILL_PRODUCE_DB * sizeof(struct PACKET_ZC_MAKABLEITEMLIST_sub) + sizeof(struct PACKET_ZC_MAKABLEITEMLIST);
+ WFIFOHEAD(fd, len);
+ p = WFIFOP(fd, 0);
+ p->packetType = 0x18d;
+
+ for (i = 0, c = 0; i < MAX_SKILL_PRODUCE_DB; i++) {
+ if (skill->can_produce_mix(sd, skill->dbs->produce_db[i].nameid, trigger, 1) &&
+ ((skill_id > 0 && skill->dbs->produce_db[i].req_skill == skill_id) || skill_id < 0)) {
+ if ((view = itemdb_viewid(skill->dbs->produce_db[i].nameid)) > 0)
+ p->items[c].itemId = view;
else
- WFIFOW(fd,c*8+ 4)= skill->dbs->produce_db[i].nameid;
- WFIFOW(fd,c*8+ 6)= 0;
- WFIFOW(fd,c*8+ 8)= 0;
- WFIFOW(fd,c*8+10)= 0;
+ p->items[c].itemId = skill->dbs->produce_db[i].nameid;
+ p->items[c].material[0] = 0;
+ p->items[c].material[1] = 0;
+ p->items[c].material[2] = 0;
c++;
}
}
- WFIFOW(fd, 2)=c*8+8;
- WFIFOSET(fd,WFIFOW(fd,2));
- if(c > 0) {
+ len = c * sizeof(struct PACKET_ZC_MAKABLEITEMLIST_sub) + sizeof(struct PACKET_ZC_MAKABLEITEMLIST);
+ p->packetLength = len;
+ WFIFOSET(fd, len);
+ if (c > 0) {
sd->menuskill_id = skill_id;
sd->menuskill_val = trigger;
return;
@@ -5481,61 +5956,65 @@ void clif_skill_produce_mix_list(struct map_session_data *sd, int skill_id , int
/// 4 = GN_MIX_COOKING
/// 5 = GN_MAKEBOMB
/// 6 = GN_S_PHARMACY
-void clif_cooking_list(struct map_session_data *sd, int trigger, uint16 skill_id, int qty, int list_type)
+static void clif_cooking_list(struct map_session_data *sd, int trigger, uint16 skill_id, int qty, int list_type)
{
int fd;
int i, c;
int view;
+ int len;
+ struct PACKET_ZC_MAKINGITEM_LIST *p;
nullpo_retv(sd);
fd = sd->fd;
- WFIFOHEAD(fd, 6 + 2 * MAX_SKILL_PRODUCE_DB);
- WFIFOW(fd,0) = 0x25a;
- WFIFOW(fd,4) = list_type; // list type
+ len = sizeof(struct PACKET_ZC_MAKINGITEM_LIST) + MAX_SKILL_PRODUCE_DB * sizeof(struct PACKET_ZC_MAKINGITEM_LIST_sub);
+ WFIFOHEAD(fd, len);
+ p = WFIFOP(fd, 0);
+ p->packetType = 0x25a;
+ p->makeItem = list_type; // list type
c = 0;
- for( i = 0; i < MAX_SKILL_PRODUCE_DB; i++ ) {
- if( !skill->can_produce_mix(sd,skill->dbs->produce_db[i].nameid,trigger, qty) )
+ for (i = 0; i < MAX_SKILL_PRODUCE_DB; i++) {
+ if (!skill->can_produce_mix(sd,skill->dbs->produce_db[i].nameid,trigger, qty))
continue;
- if( (view = itemdb_viewid(skill->dbs->produce_db[i].nameid)) > 0 )
- WFIFOW(fd, 6 + 2 * c) = view;
+ if ((view = itemdb_viewid(skill->dbs->produce_db[i].nameid)) > 0)
+ p->items[c].itemId = view;
else
- WFIFOW(fd, 6 + 2 * c) = skill->dbs->produce_db[i].nameid;
+ p->items[c].itemId = skill->dbs->produce_db[i].nameid;
c++;
}
- if( skill_id == AM_PHARMACY ) {
+ len = sizeof(struct PACKET_ZC_MAKINGITEM_LIST) + c * sizeof(struct PACKET_ZC_MAKINGITEM_LIST_sub);
+ p->packetLength = len;
+ if (skill_id == AM_PHARMACY) {
// Only send it while Cooking else check for c.
- WFIFOW(fd,2) = 6 + 2 * c;
- WFIFOSET(fd,WFIFOW(fd,2));
+ WFIFOSET(fd, len);
}
- if( c > 0 ) {
+ if (c > 0) {
sd->menuskill_id = skill_id;
sd->menuskill_val = trigger;
- if( skill_id != AM_PHARMACY ) {
+ if (skill_id != AM_PHARMACY) {
sd->menuskill_val2 = qty; // amount.
- WFIFOW(fd,2) = 6 + 2 * c;
- WFIFOSET(fd,WFIFOW(fd,2));
+ WFIFOSET(fd, len);
}
} else {
clif_menuskill_clear(sd);
- if( skill_id != AM_PHARMACY ) { // AM_PHARMACY is used to Cooking.
+ if (skill_id != AM_PHARMACY) { // AM_PHARMACY is used to Cooking.
// It fails.
-#if PACKETVER >= 20090922
- clif->msgtable_skill(sd, skill_id, MSG_COOKING_LIST_FAIL);
+#if PACKETVER >= 20091013
+ clif->msgtable_skill(sd, skill_id, MSG_SKILL_MATERIAL_FAIL);
#else
- WFIFOW(fd,2) = 6 + 2 * c;
- WFIFOSET(fd,WFIFOW(fd,2));
+ WFIFOSET(fd, len);
#endif
}
}
}
-void clif_status_change_notick(struct block_list *bl,int type,int flag,int tick,int val1, int val2, int val3) {
+static void clif_status_change_notick(struct block_list *bl, int type, int flag, int tick, int val1, int val2, int val3)
+{
struct packet_sc_notick p;
struct map_session_data *sd;
@@ -5563,7 +6042,8 @@ void clif_status_change_notick(struct block_list *bl,int type,int flag,int tick,
/// 08ff <id>.L <index>.W <remain msec>.L { <val>.L }*3 (PACKETVER >= 20111108)
/// 0983 <index>.W <id>.L <state>.B <total msec>.L <remain msec>.L { <val>.L }*3 (PACKETVER >= 20120618)
/// 0984 <id>.L <index>.W <total msec>.L <remain msec>.L { <val>.L }*3 (PACKETVER >= 20120618)
-void clif_status_change(struct block_list *bl,int type,int flag,int tick,int val1, int val2, int val3) {
+static void clif_status_change(struct block_list *bl, int type, int flag, int tick, int val1, int val2, int val3)
+{
struct packet_status_change p;
struct map_session_data *sd;
@@ -5599,7 +6079,7 @@ void clif_status_change(struct block_list *bl,int type,int flag,int tick,int val
/// Send message (modified by [Yor]) (ZC_NOTIFY_PLAYERCHAT).
/// 008e <packet len>.W <message>.?B
-void clif_displaymessage(const int fd, const char *mes)
+static void clif_displaymessage(const int fd, const char *mes)
{
nullpo_retv(mes);
@@ -5624,7 +6104,8 @@ void clif_displaymessage(const int fd, const char *mes)
}
}
-void clif_displaymessage2(const int fd, const char* mes) {
+static void clif_displaymessage2(const int fd, const char *mes)
+{
nullpo_retv(mes);
//Scrapped, as these are shared by disconnected players =X [Skotlex]
@@ -5656,9 +6137,11 @@ void clif_displaymessage2(const int fd, const char* mes) {
aFree(message);
}
}
+
/* oh noo! another version of 0x8e! */
-void clif_displaymessage_sprintf(const int fd, const char *mes, ...) __attribute__((format(printf, 2, 3)));
-void clif_displaymessage_sprintf(const int fd, const char *mes, ...) {
+static void clif_displaymessage_sprintf(const int fd, const char *mes, ...) __attribute__((format(printf, 2, 3)));
+static void clif_displaymessage_sprintf(const int fd, const char *mes, ...)
+{
va_list ap;
nullpo_retv(mes);
@@ -5690,9 +6173,10 @@ void clif_displaymessage_sprintf(const int fd, const char *mes, ...) {
WFIFOSET(fd, 5 + len);
}
}
+
/// Send broadcast message in yellow or blue without font formatting (ZC_BROADCAST).
/// 009a <packet len>.W <message>.?B
-void clif_broadcast(struct block_list *bl, const char *mes, int len, int type, enum send_target target)
+static void clif_broadcast(struct block_list *bl, const char *mes, int len, int type, enum send_target target)
{
int lp = (type&BC_COLOR_MASK) ? 4 : 0;
unsigned char *buf = NULL;
@@ -5716,7 +6200,7 @@ void clif_broadcast(struct block_list *bl, const char *mes, int len, int type, e
* Displays a message on a 'bl' to all it's nearby clients
* Used by npc_globalmessage
*------------------------------------------*/
-void clif_GlobalMessage(struct block_list *bl, const char *message)
+static void clif_GlobalMessage(struct block_list *bl, const char *message)
{
char buf[256];
int len;
@@ -5741,7 +6225,7 @@ void clif_GlobalMessage(struct block_list *bl, const char *message)
/// Send broadcast message with font formatting (ZC_BROADCAST2).
/// 01c3 <packet len>.W <fontColor>.L <fontType>.W <fontSize>.W <fontAlign>.W <fontY>.W <message>.?B
-void clif_broadcast2(struct block_list *bl, const char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY, enum send_target target)
+static void clif_broadcast2(struct block_list *bl, const char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY, enum send_target target)
{
unsigned char *buf;
@@ -5767,7 +6251,7 @@ void clif_broadcast2(struct block_list *bl, const char *mes, int len, unsigned i
/// 5 = HP (SP_HP)
/// 7 = SP (SP_SP)
/// ? = ignored
-void clif_heal(int fd, int type, int val)
+static void clif_heal(int fd, int type, int val)
{
#if PACKETVER < 20150513
short cmd = 0x13d;
@@ -5791,7 +6275,7 @@ void clif_heal(int fd, int type, int val)
/// 0148 <id>.L <type>.W
/// type:
/// ignored
-void clif_resurrection(struct block_list *bl,int type)
+static void clif_resurrection(struct block_list *bl, int type)
{
unsigned char buf[16];
@@ -5815,7 +6299,7 @@ void clif_resurrection(struct block_list *bl,int type)
/// Sets the map property (ZC_NOTIFY_MAPPROPERTY).
/// 0199 <type>.W
-void clif_map_property(struct map_session_data* sd, enum map_property property)
+static void clif_map_property(struct map_session_data *sd, enum map_property property)
{
int fd;
@@ -5830,7 +6314,8 @@ void clif_map_property(struct map_session_data* sd, enum map_property property)
/// Set the map type (ZC_NOTIFY_MAPPROPERTY2).
/// 01d6 <type>.W
-void clif_map_type(struct map_session_data* sd, enum map_type type) {
+static void clif_map_type(struct map_session_data *sd, enum map_type type)
+{
int fd;
nullpo_retv(sd);
@@ -5845,7 +6330,7 @@ void clif_map_type(struct map_session_data* sd, enum map_type type) {
/// Updates PvP ranking (ZC_NOTIFY_RANKING).
/// 019a <id>.L <ranking>.L <total>.L
// FIXME: missing documentation for the 'type' parameter
-void clif_pvpset(struct map_session_data *sd,int pvprank,int pvpnum,int type)
+static void clif_pvpset(struct map_session_data *sd, int pvprank, int pvpnum, int type)
{
nullpo_retv(sd);
@@ -5878,11 +6363,12 @@ void clif_pvpset(struct map_session_data *sd,int pvprank,int pvpnum,int type)
/*==========================================
*
*------------------------------------------*/
-void clif_map_property_mapall(int mapid, enum map_property property)
+static void clif_map_property_mapall(int mapid, enum map_property property)
{
struct block_list bl;
unsigned char buf[16];
+ memset(&bl, 0, sizeof(bl));
bl.id = 0;
bl.type = BL_NUL;
bl.m = mapid;
@@ -5897,7 +6383,7 @@ void clif_map_property_mapall(int mapid, enum map_property property)
/// 0 = success
/// 1 = failure
/// 2 = downgrade
-void clif_refine(int fd, int fail, int index, int val)
+static void clif_refine(int fd, int fail, int index, int val)
{
WFIFOHEAD(fd,packet_len(0x188));
WFIFOW(fd,0)=0x188;
@@ -5914,19 +6400,21 @@ void clif_refine(int fd, int fail, int index, int val)
/// 1 = "weapon upgraded: %s" MsgStringTable[912] in rgb(0,205,205)
/// 2 = "cannot upgrade %s until you level up the upgrade weapon skill" MsgStringTable[913] in rgb(255,200,200)
/// 3 = "you lack the item %s to upgrade the weapon" MsgStringTable[914] in rgb(255,200,200)
-void clif_upgrademessage(int fd, int result, int item_id)
+static void clif_upgrademessage(int fd, int result, int item_id)
{
- WFIFOHEAD(fd,packet_len(0x223));
- WFIFOW(fd,0)=0x223;
- WFIFOL(fd,2)=result;
- WFIFOW(fd,6)=item_id;
- WFIFOSET(fd,packet_len(0x223));
+ struct PACKET_ZC_ACK_WEAPONREFINE p;
+ WFIFOHEAD(fd, sizeof(p));
+ p.packetType = 0x223;
+ p.result = result;
+ p.itemId = item_id;
+ memcpy(WFIFOP(fd, 0), &p, sizeof(p));
+ WFIFOSET(fd, sizeof(p));
}
/// Whisper is transmitted to the destination player (ZC_WHISPER).
/// 0097 <packet len>.W <nick>.24B <message>.?B
/// 0097 <packet len>.W <nick>.24B <isAdmin>.L <message>.?B (PACKETVER >= 20091104)
-void clif_wis_message(int fd, const char *nick, const char *mes, int mes_len)
+static void clif_wis_message(int fd, const char *nick, const char *mes, int mes_len)
{
#if PACKETVER >= 20091104
struct map_session_data *ssd = NULL;
@@ -5961,7 +6449,9 @@ void clif_wis_message(int fd, const char *nick, const char *mes, int mes_len)
/// 1 = target character is not logged in
/// 2 = ignored by target
/// 3 = everyone ignored by target
-void clif_wis_end(int fd, int flag) {
+/// other = target character is not logged in
+static void clif_wis_end(int fd, int flag)
+{
struct map_session_data *sd = sockt->session_is_valid(fd) ? sockt->session[fd]->session_data : NULL;
struct packet_wis_end p;
@@ -5971,7 +6461,7 @@ void clif_wis_end(int fd, int flag) {
p.PacketType = wisendType;
p.result = (char)flag;
#if PACKETVER >= 20131223
- p.unknown = 0;
+ p.AID = sd->bl.id;
#endif
clif->send(&p, sizeof(p), &sd->bl, SELF);
@@ -5979,19 +6469,34 @@ void clif_wis_end(int fd, int flag) {
/// Returns character name requested by char_id (ZC_ACK_REQNAME_BYGID).
/// 0194 <char id>.L <name>.24B
-void clif_solved_charname(int fd, int charid, const char* name)
+/// 0af7 <flag>.W <char id>.L <name>.24B
+static void clif_solved_charname(int fd, int charid, const char *name)
{
nullpo_retv(name);
- WFIFOHEAD(fd,packet_len(0x194));
- WFIFOW(fd,0)=0x194;
- WFIFOL(fd,2)=charid;
- safestrncpy(WFIFOP(fd,6), name, NAME_LENGTH);
- WFIFOSET(fd,packet_len(0x194));
+#if PACKETVER_MAIN_NUM >= 20180307 || PACKETVER_RE_NUM >= 20180221 || PACKETVER_ZERO_NUM >= 20180328
+ WFIFOHEAD(fd, packet_len(0x0af7));
+ WFIFOW(fd, 0) = 0xaf7;
+ if (*name == 0) {
+ WFIFOW(fd, 2) = 2;
+ memset(WFIFOP(fd, 8), 0, NAME_LENGTH);
+ } else {
+ WFIFOW(fd, 2) = 3;
+ safestrncpy(WFIFOP(fd, 8), name, NAME_LENGTH);
+ }
+ WFIFOL(fd, 4) = charid;
+ WFIFOSET(fd, packet_len(0x0af7));
+#else
+ WFIFOHEAD(fd, packet_len(0x194));
+ WFIFOW(fd, 0) = 0x194;
+ WFIFOL(fd, 2) = charid;
+ safestrncpy(WFIFOP(fd, 6), name, NAME_LENGTH);
+ WFIFOSET(fd, packet_len(0x194));
+#endif
}
/// Presents a list of items that can be carded/composed (ZC_ITEMCOMPOSITION_LIST).
-/// 017b <packet len>.W { <name id>.W }*
-void clif_use_card(struct map_session_data *sd,int idx)
+/// 017b <packet len>.W { <index>.W }*
+static void clif_use_card(struct map_session_data *sd, int idx)
{
int i, c;
int fd;
@@ -6003,10 +6508,10 @@ void clif_use_card(struct map_session_data *sd,int idx)
if (!pc->can_insert_card(sd, idx))
return;
- WFIFOHEAD(fd, MAX_INVENTORY * 2 + 4);
+ WFIFOHEAD(fd, sd->status.inventorySize * 2 + 4);
WFIFOW(fd, 0) = 0x17b;
- for (i = c = 0; i < MAX_INVENTORY; i++) {
+ for (i = c = 0; i < sd->status.inventorySize; i++) {
if (!pc->can_insert_card_into(sd, idx, i))
continue;
WFIFOW(fd, 4 + c * 2) = i + 2;
@@ -6024,7 +6529,7 @@ void clif_use_card(struct map_session_data *sd,int idx)
/// result:
/// 0 = success
/// 1 = failure
-void clif_insert_card(struct map_session_data *sd,int idx_equip,int idx_card,int flag)
+static void clif_insert_card(struct map_session_data *sd, int idx_equip, int idx_card, int flag)
{
int fd;
@@ -6040,8 +6545,8 @@ void clif_insert_card(struct map_session_data *sd,int idx_equip,int idx_card,int
}
/// Presents a list of items that can be identified (ZC_ITEMIDENTIFY_LIST).
-/// 0177 <packet len>.W { <name id>.W }*
-void clif_item_identify_list(struct map_session_data *sd)
+/// 0177 <packet len>.W { <index>.W }*
+static void clif_item_identify_list(struct map_session_data *sd)
{
int i,c;
int fd;
@@ -6050,9 +6555,9 @@ void clif_item_identify_list(struct map_session_data *sd)
fd=sd->fd;
- WFIFOHEAD(fd,MAX_INVENTORY * 2 + 4);
+ WFIFOHEAD(fd, sd->status.inventorySize * 2 + 4);
WFIFOW(fd,0)=0x177;
- for(i=c=0;i<MAX_INVENTORY;i++){
+ for (i = c = 0; i < sd->status.inventorySize; i++) {
if(sd->status.inventory[i].nameid > 0 && !sd->status.inventory[i].identify){
WFIFOW(fd,c*2+4)=i+2;
c++;
@@ -6069,7 +6574,7 @@ void clif_item_identify_list(struct map_session_data *sd)
/// Notifies the client about the result of a item identify request (ZC_ACK_ITEMIDENTIFY).
/// 0179 <index>.W <result>.B
-void clif_item_identified(struct map_session_data *sd,int idx,int flag)
+static void clif_item_identified(struct map_session_data *sd, int idx, int flag)
{
int fd;
@@ -6085,36 +6590,42 @@ void clif_item_identified(struct map_session_data *sd,int idx,int flag)
/// Presents a list of items that can be repaired (ZC_REPAIRITEMLIST).
/// 01fc <packet len>.W { <index>.W <name id>.W <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W }*
-void clif_item_repair_list(struct map_session_data *sd,struct map_session_data *dstsd, int lv)
+static void clif_item_repair_list(struct map_session_data *sd, struct map_session_data *dstsd, int lv)
{
int i,c;
int fd;
+ int len;
+ struct PACKET_ZC_REPAIRITEMLIST *p;
nullpo_retv(sd);
nullpo_retv(dstsd);
- fd=sd->fd;
+ fd = sd->fd;
- WFIFOHEAD(fd, MAX_INVENTORY * 13 + 4);
- WFIFOW(fd,0)=0x1fc;
- for (i = c = 0; i < MAX_INVENTORY; i++) {
+ len = dstsd->status.inventorySize * sizeof(struct PACKET_ZC_REPAIRITEMLIST_sub) + sizeof(struct PACKET_ZC_REPAIRITEMLIST);
+ WFIFOHEAD(fd, len);
+ p = WFIFOP(fd, 0);
+ p->packetType = 0x1fc;
+ for (i = c = 0; i < sd->status.inventorySize; i++) {
int nameid = dstsd->status.inventory[i].nameid;
if (nameid > 0 && (dstsd->status.inventory[i].attribute & ATTR_BROKEN) != 0) { // && skill_can_repair(sd,nameid)) {
- WFIFOW(fd,c*13+4) = i;
- WFIFOW(fd,c*13+6) = nameid;
- WFIFOB(fd,c*13+8) = dstsd->status.inventory[i].refine;
- clif->addcards(WFIFOP(fd,c*13+9), &dstsd->status.inventory[i]);
+ p->items[c].index = i;
+ p->items[c].itemId = nameid;
+ p->items[c].refine = dstsd->status.inventory[i].refine;
+ clif->addcards(&p->items[c].slot, &dstsd->status.inventory[i]);
c++;
}
}
- if(c > 0) {
- WFIFOW(fd,2)=c*13+4;
- WFIFOSET(fd,WFIFOW(fd,2));
+ if (c > 0) {
+ len = c * sizeof(struct PACKET_ZC_REPAIRITEMLIST_sub) + sizeof(struct PACKET_ZC_REPAIRITEMLIST);
+ p->packetLength = len;
+ WFIFOSET(fd, len);
sd->menuskill_id = BS_REPAIRWEAPON;
sd->menuskill_val = dstsd->bl.id;
sd->menuskill_val2 = lv;
- }else
- clif->skill_fail(sd,sd->ud.skill_id,USESKILL_FAIL_LEVEL,0);
+ } else {
+ clif->skill_fail(sd, sd->ud.skill_id, USESKILL_FAIL_LEVEL, 0, 0);
+ }
}
/// Notifies the client about the result of a item repair request (ZC_ACK_ITEMREPAIR).
@@ -6124,7 +6635,7 @@ void clif_item_repair_list(struct map_session_data *sd,struct map_session_data *
/// result:
/// 0 = Item repair success.
/// 1 = Item repair failure.
-void clif_item_repaireffect(struct map_session_data *sd,int idx,int flag)
+static void clif_item_repaireffect(struct map_session_data *sd, int idx, int flag)
{
int fd;
@@ -6142,7 +6653,7 @@ void clif_item_repaireffect(struct map_session_data *sd,int idx,int flag)
/// Displays a message, that an equipment got damaged (ZC_EQUIPITEM_DAMAGED).
/// 02bb <equip location>.W <account id>.L
-void clif_item_damaged(struct map_session_data* sd, unsigned short position)
+static void clif_item_damaged(struct map_session_data *sd, unsigned short position)
{
int fd;
@@ -6158,34 +6669,38 @@ void clif_item_damaged(struct map_session_data* sd, unsigned short position)
/// Presents a list of weapon items that can be refined [Taken from jAthena] (ZC_NOTIFY_WEAPONITEMLIST).
/// 0221 <packet len>.W { <index>.W <name id>.W <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W }*
-void clif_item_refine_list(struct map_session_data *sd)
+static void clif_item_refine_list(struct map_session_data *sd)
{
int i,c;
int fd;
+ int len;
+ struct PACKET_ZC_NOTIFY_WEAPONITEMLIST *p;
uint16 skill_lv;
nullpo_retv(sd);
- skill_lv = pc->checkskill(sd,WS_WEAPONREFINE);
-
- fd=sd->fd;
+ skill_lv = pc->checkskill(sd, WS_WEAPONREFINE);
- WFIFOHEAD(fd, MAX_INVENTORY * 13 + 4);
- WFIFOW(fd,0)=0x221;
- for (i = c = 0; i < MAX_INVENTORY; i++) {
- if(sd->status.inventory[i].nameid > 0 && sd->status.inventory[i].identify
+ fd = sd->fd;
+ len = sd->status.inventorySize * sizeof(struct PACKET_ZC_NOTIFY_WEAPONITEMLIST_sub) + sizeof(struct PACKET_ZC_NOTIFY_WEAPONITEMLIST);
+ WFIFOHEAD(fd, len);
+ p = WFIFOP(fd, 0);
+ p->packetType = 0x221;
+ for (i = c = 0; i < sd->status.inventorySize; i++) {
+ if (sd->status.inventory[i].nameid > 0 && sd->status.inventory[i].identify
&& itemdb_wlv(sd->status.inventory[i].nameid) >= 1
&& !sd->inventory_data[i]->flag.no_refine
- && !(sd->status.inventory[i].equip&EQP_ARMS)){
- WFIFOW(fd,c*13+ 4)=i+2;
- WFIFOW(fd,c*13+ 6)=sd->status.inventory[i].nameid;
- WFIFOB(fd,c*13+ 8)=sd->status.inventory[i].refine;
- clif->addcards(WFIFOP(fd,c*13+9), &sd->status.inventory[i]);
+ && !(sd->status.inventory[i].equip & EQP_ARMS)) {
+ p->items[c].index = i + 2;
+ p->items[c].itemId = sd->status.inventory[i].nameid;
+ p->items[c].refine = sd->status.inventory[i].refine;
+ clif->addcards(&p->items[c].slot, &sd->status.inventory[i]);
c++;
}
}
- WFIFOW(fd,2)=c*13+4;
- WFIFOSET(fd,WFIFOW(fd,2));
+ len = c * sizeof(struct PACKET_ZC_NOTIFY_WEAPONITEMLIST_sub) + sizeof(struct PACKET_ZC_NOTIFY_WEAPONITEMLIST);
+ p->packetLength = len;
+ WFIFOSET(fd, len);
if (c > 0) {
sd->menuskill_id = WS_WEAPONREFINE;
sd->menuskill_val = skill_lv;
@@ -6194,7 +6709,7 @@ void clif_item_refine_list(struct map_session_data *sd)
/// Notification of an auto-casted skill (ZC_AUTORUN_SKILL).
/// 0147 <skill id>.W <type>.L <level>.W <sp cost>.W <atk range>.W <skill name>.24B <upgradeable>.B
-void clif_item_skill(struct map_session_data *sd,uint16 skill_id,uint16 skill_lv)
+static void clif_item_skill(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv)
{
int fd;
@@ -6204,8 +6719,7 @@ void clif_item_skill(struct map_session_data *sd,uint16 skill_id,uint16 skill_lv
WFIFOHEAD(fd,packet_len(0x147));
WFIFOW(fd, 0)=0x147;
WFIFOW(fd, 2)=skill_id;
- WFIFOW(fd, 4)=skill->get_inf(skill_id);
- WFIFOW(fd, 6)=0;
+ WFIFOL(fd, 4)=skill->get_inf(skill_id);
WFIFOW(fd, 8)=skill_lv;
WFIFOW(fd,10)=skill->get_sp(skill_id,skill_lv);
WFIFOW(fd,12)=skill->get_range2(&sd->bl, skill_id,skill_lv);
@@ -6217,44 +6731,42 @@ void clif_item_skill(struct map_session_data *sd,uint16 skill_id,uint16 skill_lv
/// Adds an item to character's cart.
/// 0124 <index>.W <amount>.L <name id>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W (ZC_ADD_ITEM_TO_CART)
/// 01c5 <index>.W <amount>.L <name id>.W <type>.B <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W (ZC_ADD_ITEM_TO_CART2)
-void clif_cart_additem(struct map_session_data *sd,int n,int amount,int fail)
+static void clif_cart_additem(struct map_session_data *sd, int n, int amount, int fail)
{
- int view,fd;
- unsigned char *buf;
- int offset = 0;
+ int view, fd;
+ struct PACKET_ZC_ADD_ITEM_TO_CART p;
nullpo_retv(sd);
- fd=sd->fd;
- if(n<0 || n>=MAX_CART || sd->status.cart[n].nameid<=0)
+ fd = sd->fd;
+ if (n < 0 || n >= MAX_CART || sd->status.cart[n].nameid <= 0)
return;
- WFIFOHEAD(fd,packet_len(cartaddType));
- buf=WFIFOP(fd,0);
- WBUFW(buf,0)=cartaddType;
- WBUFW(buf,2)=n+2;
- WBUFL(buf,4)=amount;
- if((view = itemdb_viewid(sd->status.cart[n].nameid)) > 0)
- WBUFW(buf,8)=view;
+ WFIFOHEAD(fd, sizeof(p));
+ p.packetType = cartaddType;
+ p.index = n + 2;
+ p.amount = amount;
+ if ((view = itemdb_viewid(sd->status.cart[n].nameid)) > 0)
+ p.itemId = view;
else
- WBUFW(buf,8)=sd->status.cart[n].nameid;
+ p.itemId = sd->status.cart[n].nameid;
#if PACKETVER >= 5
- WBUFB(buf,10)=itemdb_type(sd->status.cart[n].nameid);
- offset = 1;
+ p.itemType = itemdb_type(sd->status.cart[n].nameid);
#endif
- WBUFB(buf,10+offset)=sd->status.cart[n].identify;
- WBUFB(buf,11+offset)=sd->status.cart[n].attribute;
- WBUFB(buf,12+offset)=sd->status.cart[n].refine;
- clif->addcards(WBUFP(buf,13+offset), &sd->status.cart[n]);
+ p.identified = sd->status.cart[n].identify;
+ p.damaged = sd->status.cart[n].attribute;
+ p.refine = sd->status.cart[n].refine;
+ clif->addcards(&p.slot, &sd->status.cart[n]);
#if PACKETVER >= 20150226
- clif->add_random_options(WBUFP(buf,21+offset), &sd->status.cart[n]);
+ clif->add_item_options(&p.option_data[0], &sd->status.cart[n]);
#endif
- WFIFOSET(fd,packet_len(cartaddType));
+ memcpy(WFIFOP(fd, 0), &p, sizeof(p));
+ WFIFOSET(fd, sizeof(p));
}
/// Deletes an item from character's cart (ZC_DELETE_ITEM_FROM_CART).
/// 0125 <index>.W <amount>.L
-void clif_cart_delitem(struct map_session_data *sd,int n,int amount)
+static void clif_cart_delitem(struct map_session_data *sd, int n, int amount)
{
int fd;
@@ -6273,7 +6785,7 @@ void clif_cart_delitem(struct map_session_data *sd,int n,int amount)
/// 012d <num>.W
/// num:
/// number of allowed item slots
-void clif_openvendingreq(struct map_session_data* sd, int num)
+static void clif_openvendingreq(struct map_session_data *sd, int num)
{
int fd;
@@ -6288,7 +6800,7 @@ void clif_openvendingreq(struct map_session_data* sd, int num)
/// Displays a vending board to target/area (ZC_STORE_ENTRY).
/// 0131 <owner id>.L <message>.80B
-void clif_showvendingboard(struct block_list* bl, const char* message, int fd)
+static void clif_showvendingboard(struct block_list *bl, const char *message, int fd)
{
unsigned char buf[128];
@@ -6309,7 +6821,7 @@ void clif_showvendingboard(struct block_list* bl, const char* message, int fd)
/// Removes a vending board from screen (ZC_DISAPPEAR_ENTRY).
/// 0132 <owner id>.L
-void clif_closevendingboard(struct block_list* bl, int fd)
+static void clif_closevendingboard(struct block_list *bl, int fd)
{
unsigned char buf[16];
@@ -6329,23 +6841,13 @@ void clif_closevendingboard(struct block_list* bl, int fd)
/// Sends a list of items in a shop.
/// R 0133 <packet len>.W <owner id>.L { <price>.L <amount>.W <index>.W <type>.B <name id>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W }* (ZC_PC_PURCHASE_ITEMLIST_FROMMC)
/// R 0800 <packet len>.W <owner id>.L <unique id>.L { <price>.L <amount>.W <index>.W <type>.B <name id>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W }* (ZC_PC_PURCHASE_ITEMLIST_FROMMC2)
-void clif_vendinglist(struct map_session_data* sd, unsigned int id, struct s_vending* vending_items) {
- int i,fd;
+static void clif_vendinglist(struct map_session_data *sd, unsigned int id, struct s_vending *vending_items)
+{
+ int i, fd;
int count;
struct map_session_data* vsd;
-#if PACKETVER < 20100105
- const int cmd = 0x133;
- const int offset = 8;
-#else
- const int cmd = 0x800;
- const int offset = 12;
-#endif
-
-#if PACKETVER >= 20150226
- const int item_length = 47;
-#else
- const int item_length = 22;
-#endif
+ int len;
+ struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC *p;
nullpo_retv(sd);
nullpo_retv(vending_items);
@@ -6353,32 +6855,39 @@ void clif_vendinglist(struct map_session_data* sd, unsigned int id, struct s_ven
fd = sd->fd;
count = vsd->vend_num;
+ len = sizeof(struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC) + count * sizeof(struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC_sub);
- WFIFOHEAD(fd, offset+count*item_length);
- WFIFOW(fd,0) = cmd;
- WFIFOW(fd,2) = offset+count*item_length;
- WFIFOL(fd,4) = id;
+ WFIFOHEAD(fd, len);
+ p = WFIFOP(fd, 0);
+ p->packetType = vendinglistType;
+ p->packetLength = len;
+ p->AID = id;
#if PACKETVER >= 20100105
- WFIFOL(fd,8) = vsd->vender_id;
+ p->venderId = vsd->vender_id;
#endif
- for( i = 0; i < count; i++ ) {
+ for (i = 0; i < count; i++) {
int index = vending_items[i].index;
struct item_data* data = itemdb->search(vsd->status.cart[index].nameid);
- WFIFOL(fd,offset+ 0+i*item_length) = vending_items[i].value;
- WFIFOW(fd,offset+ 4+i*item_length) = vending_items[i].amount;
- WFIFOW(fd,offset+ 6+i*item_length) = vending_items[i].index + 2;
- WFIFOB(fd,offset+ 8+i*item_length) = itemtype(data->type);
- WFIFOW(fd,offset+ 9+i*item_length) = ( data->view_id > 0 ) ? data->view_id : vsd->status.cart[index].nameid;
- WFIFOB(fd,offset+11+i*item_length) = vsd->status.cart[index].identify;
- WFIFOB(fd,offset+12+i*item_length) = vsd->status.cart[index].attribute;
- WFIFOB(fd,offset+13+i*item_length) = vsd->status.cart[index].refine;
- clif->addcards(WFIFOP(fd,offset+14+i*item_length), &vsd->status.cart[index]);
+ p->items[i].price = vending_items[i].value;
+ p->items[i].amount = vending_items[i].amount;
+ p->items[i].index = vending_items[i].index + 2;
+ p->items[i].itemType = itemtype(data->type);
+ p->items[i].itemId = (data->view_id > 0) ? data->view_id : vsd->status.cart[index].nameid;
+ p->items[i].identified = vsd->status.cart[index].identify;
+ p->items[i].damaged = vsd->status.cart[index].attribute;
+ p->items[i].refine = vsd->status.cart[index].refine;
+ clif->addcards(&p->items[i].slot, &vsd->status.cart[index]);
#if PACKETVER >= 20150226
- clif->add_random_options(WFIFOP(fd,offset+22+i*item_length), &vsd->status.cart[index]);
+ clif->add_item_options(&p->items[i].option_data[0], &vsd->status.cart[index]);
+#endif
+// [4144] date 20160921 not confirmed. Can be bigger or smaller
+#if PACKETVER >= 20160921
+ p->items[i].location = pc->item_equippoint(sd, data);
+ p->items[i].viewSprite = data->view_sprite;
#endif
}
- WFIFOSET(fd,WFIFOW(fd,2));
+ WFIFOSET(fd, len);
}
/// Shop purchase failure (ZC_PC_PURCHASE_RESULT_FROMMC).
@@ -6391,7 +6900,7 @@ void clif_vendinglist(struct map_session_data* sd, unsigned int id, struct s_ven
/// 5 = "cannot use an npc shop while in a trade"
/// 6 = Because the store information was incorrect the item was not purchased.
/// 7 = No sales information.
-void clif_buyvending(struct map_session_data* sd, int index, int amount, int fail)
+static void clif_buyvending(struct map_session_data *sd, int index, int amount, int fail)
{
int fd;
@@ -6408,49 +6917,56 @@ void clif_buyvending(struct map_session_data* sd, int index, int amount, int fai
/// Shop creation success (ZC_PC_PURCHASE_MYITEMLIST).
/// 0136 <packet len>.W <owner id>.L { <price>.L <index>.W <amount>.W <type>.B <name id>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W }*
-void clif_openvending(struct map_session_data* sd, int id, struct s_vending* vending_items) {
- int i,fd;
+static void clif_openvending(struct map_session_data *sd, int id, struct s_vending *vending_items)
+{
+ int i, fd;
int count;
-#if PACKETVER >= 20150226
- const int item_length = 47;
-#else
- const int item_length = 22;
-#endif
+ struct PACKET_ZC_PC_PURCHASE_MYITEMLIST *p;
+ int len;
nullpo_retv(sd);
nullpo_retv(vending_items);
fd = sd->fd;
count = sd->vend_num;
-
- WFIFOHEAD(fd, 8+count*item_length);
- WFIFOW(fd,0) = 0x136;
- WFIFOW(fd,2) = 8+count*item_length;
- WFIFOL(fd,4) = id;
- for( i = 0; i < count; i++ ) {
+ len = sizeof(struct PACKET_ZC_PC_PURCHASE_MYITEMLIST) + count * sizeof(struct PACKET_ZC_PC_PURCHASE_MYITEMLIST_sub);
+ WFIFOHEAD(fd, len);
+ p = WFIFOP(fd, 0);
+ p->packetType = 0x136;
+ p->packetLength = len;
+ p->AID = id;
+ for (i = 0; i < count; i++) {
int index = vending_items[i].index;
struct item_data* data = itemdb->search(sd->status.cart[index].nameid);
- WFIFOL(fd, 8+i*item_length) = vending_items[i].value;
- WFIFOW(fd,12+i*item_length) = vending_items[i].index + 2;
- WFIFOW(fd,14+i*item_length) = vending_items[i].amount;
- WFIFOB(fd,16+i*item_length) = itemtype(data->type);
- WFIFOW(fd,17+i*item_length) = ( data->view_id > 0 ) ? data->view_id : sd->status.cart[index].nameid;
- WFIFOB(fd,19+i*item_length) = sd->status.cart[index].identify;
- WFIFOB(fd,20+i*item_length) = sd->status.cart[index].attribute;
- WFIFOB(fd,21+i*item_length) = sd->status.cart[index].refine;
- clif->addcards(WFIFOP(fd,22+i*item_length), &sd->status.cart[index]);
+ p->items[i].price = vending_items[i].value;
+ p->items[i].index = vending_items[i].index + 2;
+ p->items[i].amount = vending_items[i].amount;
+ p->items[i].itemType = itemtype(data->type);
+ p->items[i].itemId = (data->view_id > 0) ? data->view_id : sd->status.cart[index].nameid;
+ p->items[i].identified = sd->status.cart[index].identify;
+ p->items[i].damaged = sd->status.cart[index].attribute;
+ p->items[i].refine = sd->status.cart[index].refine;
+ clif->addcards(&p->items[i].slot, &sd->status.cart[index]);
#if PACKETVER >= 20150226
- clif->add_random_options(WFIFOP(fd,30+22+i*item_length), &sd->status.cart[index]);
+ clif->add_item_options(&p->items[i].option_data[0], &sd->status.cart[index]);
#endif
}
- WFIFOSET(fd,WFIFOW(fd,2));
+ WFIFOSET(fd, len);
+
+ clif->openvendingAck(fd, 0);
+}
+// 0 - open vending success
+// 1 - message MSG_MERCHANTSHOP_MAKING_FAIL
+// 2 - silent ignore
+// 3 - message MSG_ID_C9D (You can not open a stall at the current location)
+static void clif_openvendingAck(int fd, int result)
+{
#if PACKETVER >= 20140625
- /** should go elsewhere perhaps? it has to be bundled with this however. **/
WFIFOHEAD(fd, packet_len(0xa28));
- WFIFOW(fd, 0) = 0xa28;
- WFIFOB(fd, 2) = 0;/** 1 is failure. our current responses to failure are working so not yet implemented **/
+ WFIFOW(fd, 0) = 0xa28; // ZC_ACK_OPENSTORE2
+ WFIFOB(fd, 2) = result;
WFIFOSET(fd, packet_len(0xa28));
#endif
}
@@ -6458,7 +6974,7 @@ void clif_openvending(struct map_session_data* sd, int id, struct s_vending* ven
/// Inform merchant that someone has bought an item.
/// 0137 <index>.W <amount>.W (ZC_DELETEITEM_FROM_MCSTORE).
/// 09e5 <index>.W <amount>.W <GID>.L <Date>.L <zeny>.L (ZC_DELETEITEM_FROM_MCSTORE2).
-void clif_vendingreport(struct map_session_data* sd, int index, int amount, uint32 char_id, int zeny)
+static void clif_vendingreport(struct map_session_data *sd, int index, int amount, uint32 char_id, int zeny)
{
int fd;
#if PACKETVER < 20141016 // TODO : not sure for client date [Napster]
@@ -6491,7 +7007,7 @@ void clif_vendingreport(struct map_session_data* sd, int index, int amount, uint
/// 2 = MsgStringTable[79]="already in a party"
/// 3 = cannot organize parties on this map
/// ? = nothing
-void clif_party_created(struct map_session_data *sd,int result)
+static void clif_party_created(struct map_session_data *sd, int result)
{
int fd;
@@ -6505,90 +7021,126 @@ void clif_party_created(struct map_session_data *sd,int result)
}
/// Adds new member to a party.
-/// 0104 <account id>.L <role>.L <x>.W <y>.W <state>.B <party name>.24B <char name>.24B <map name>.16B (ZC_ADD_MEMBER_TO_GROUP)
-/// 01e9 <account id>.L <role>.L <x>.W <y>.W <state>.B <party name>.24B <char name>.24B <map name>.16B <item pickup rule>.B <item share rule>.B (ZC_ADD_MEMBER_TO_GROUP2)
/// role:
/// 0 = leader
/// 1 = normal
/// state:
/// 0 = connected
/// 1 = disconnected
-void clif_party_member_info(struct party_data *p, struct map_session_data *sd)
+static void clif_party_member_info(struct party_data *p, struct map_session_data *sd)
{
- unsigned char buf[81];
int i;
+ struct PACKET_ZC_ADD_MEMBER_TO_GROUP packet;
nullpo_retv(p);
nullpo_retv(sd);
+
+ memset(&packet, 0, sizeof(packet));
if (!sd) { //Pick any party member (this call is used when changing item share rules)
- ARR_FIND( 0, MAX_PARTY, i, p->data[i].sd != 0 );
+ ARR_FIND(0, MAX_PARTY, i, p->data[i].sd != 0);
} else {
- ARR_FIND( 0, MAX_PARTY, i, p->data[i].sd == sd );
+ ARR_FIND(0, MAX_PARTY, i, p->data[i].sd == sd);
}
- if (i >= MAX_PARTY) return; //Should never happen...
+ if (i >= MAX_PARTY)
+ return; //Should never happen...
sd = p->data[i].sd;
- WBUFW(buf, 0) = 0x1e9;
- WBUFL(buf, 2) = sd->status.account_id;
- WBUFL(buf, 6) = (p->party.member[i].leader)?0:1;
- WBUFW(buf,10) = sd->bl.x;
- WBUFW(buf,12) = sd->bl.y;
- WBUFB(buf,14) = (p->party.member[i].online)?0:1;
- memcpy(WBUFP(buf,15), p->party.name, NAME_LENGTH);
- memcpy(WBUFP(buf,39), sd->status.name, NAME_LENGTH);
- mapindex->getmapname_ext(map->list[sd->bl.m].custom_name ? map->list[map->list[sd->bl.m].instance_src_map].name : map->list[sd->bl.m].name, WBUFP(buf,63));
- WBUFB(buf,79) = (p->party.item&1)?1:0;
- WBUFB(buf,80) = (p->party.item&2)?1:0;
- clif->send(buf,packet_len(0x1e9),&sd->bl,PARTY);
+ packet.packetType = partymemberinfo;
+ packet.AID = sd->status.account_id;
+#if PACKETVER >= 20171207
+ packet.GID = sd->status.char_id;
+#endif
+ packet.leader = (p->party.member[i].leader) ? 0 : 1;
+#if PACKETVER_MAIN_NUM >= 20170524 || PACKETVER_RE_NUM >= 20170502 || defined(PACKETVER_ZERO)
+ packet.class = sd->status.class;
+ packet.baseLevel = sd->status.base_level;
+#endif
+ packet.x = sd->bl.x;
+ packet.y = sd->bl.y;
+ packet.offline = (p->party.member[i].online) ? 0 : 1;
+ memcpy(packet.partyName, p->party.name, NAME_LENGTH);
+ memcpy(packet.playerName, sd->status.name, NAME_LENGTH);
+ mapindex->getmapname_ext(map->list[sd->bl.m].custom_name ? map->list[map->list[sd->bl.m].instance_src_map].name : map->list[sd->bl.m].name, packet.mapName);
+ packet.sharePickup = (p->party.item & 1) ? 1 : 0;
+ packet.shareLoot = (p->party.item & 2) ? 1 : 0;
+ clif->send(&packet, sizeof(packet), &sd->bl, PARTY);
}
/// Sends party information (ZC_GROUP_LIST).
-/// 00fb <packet len>.W <party name>.24B { <account id>.L <nick>.24B <map name>.16B <role>.B <state>.B }*
/// role:
/// 0 = leader
/// 1 = normal
/// state:
/// 0 = connected
/// 1 = disconnected
-void clif_party_info(struct party_data* p, struct map_session_data *sd)
+static void clif_party_info(struct party_data *p, struct map_session_data *sd)
{
- unsigned char buf[2+2+NAME_LENGTH+(4+NAME_LENGTH+MAP_NAME_LENGTH_EXT+1+1)*MAX_PARTY];
+ struct PACKET_ZC_GROUP_LIST *packet;
struct map_session_data* party_sd = NULL;
int i, c;
-
+ unsigned char buf[sizeof(*packet) + sizeof(struct PACKET_ZC_GROUP_LIST_SUB) * MAX_PARTY];
nullpo_retv(p);
- WBUFW(buf,0) = 0xfb;
- memcpy(WBUFP(buf,4), p->party.name, NAME_LENGTH);
+ memset(buf, 0, sizeof(buf));
+ packet = (struct PACKET_ZC_GROUP_LIST *)buf;
+ packet->packetType = partyinfo;
+ memcpy(packet->partyName, p->party.name, NAME_LENGTH);
for(i = 0, c = 0; i < MAX_PARTY; i++)
{
- struct party_member* m = &p->party.member[i];
- if(!m->account_id) continue;
+ struct party_member *m = &p->party.member[i];
+ if (!m->account_id)
+ continue;
- if(party_sd == NULL) party_sd = p->data[i].sd;
+ if (party_sd == NULL)
+ party_sd = p->data[i].sd;
- WBUFL(buf,28+c*46) = m->account_id;
- memcpy(WBUFP(buf,28+c*46+4), m->name, NAME_LENGTH);
- mapindex->getmapname_ext(mapindex_id2name(m->map), WBUFP(buf,28+c*46+28));
- WBUFB(buf,28+c*46+44) = (m->leader) ? 0 : 1;
- WBUFB(buf,28+c*46+45) = (m->online) ? 0 : 1;
+ packet->members[c].AID = m->account_id;
+#if PACKETVER >= 20171207
+ packet->members[c].GID = m->char_id;
+#endif
+ memcpy(packet->members[c].playerName, m->name, NAME_LENGTH);
+ mapindex->getmapname_ext(mapindex_id2name(m->map), packet->members[c].mapName);
+ packet->members[c].leader = (m->leader) ? 0 : 1;
+ packet->members[c].offline = (m->online) ? 0 : 1;
+#if PACKETVER_MAIN_NUM >= 20170524 || PACKETVER_RE_NUM >= 20170502 || defined(PACKETVER_ZERO)
+ packet->members[c].class = m->class;
+ packet->members[c].baseLevel = m->lv;
+#endif
c++;
}
- WBUFW(buf,2) = 28+c*46;
+ packet->packetLen = sizeof(*packet) + c * sizeof(struct PACKET_ZC_GROUP_LIST_SUB);
- if(sd) { // send only to self
- clif->send(buf, WBUFW(buf,2), &sd->bl, SELF);
+ if (sd) { // send only to self
+ clif->send(buf, packet->packetLen, &sd->bl, SELF);
} else if (party_sd) { // send to whole party
- clif->send(buf, WBUFW(buf,2), &party_sd->bl, PARTY);
+ clif->send(buf, packet->packetLen, &party_sd->bl, PARTY);
}
}
+/// Updates the job and level of a party member
+/// 0abd <account id>.L <job>.W <level>.W
+static void clif_party_job_and_level(struct map_session_data *sd)
+{
+#if PACKETVER_MAIN_NUM >= 20170502 || PACKETVER_RE_NUM >= 20170419 || defined(PACKETVER_ZERO)
+ unsigned char buf[10];
+
+ nullpo_retv(sd);
+
+ WBUFW(buf, 0) = 0xabd;
+ WBUFL(buf, 2) = sd->status.account_id;
+ WBUFW(buf, 6) = sd->status.class;
+ WBUFW(buf, 8) = sd->status.base_level;
+
+ clif_send(buf, packet_len(0xabd), &sd->bl, PARTY);
+#endif
+}
+
/// The player's 'party invite' state, sent during login (ZC_PARTY_CONFIG).
/// 02c9 <flag>.B
/// flag:
/// 0 = allow party invites
/// 1 = auto-deny party invites
-void clif_partyinvitationstate(struct map_session_data* sd)
+static void clif_partyinvitationstate(struct map_session_data *sd)
{
int fd;
nullpo_retv(sd);
@@ -6596,14 +7148,14 @@ void clif_partyinvitationstate(struct map_session_data* sd)
WFIFOHEAD(fd, packet_len(0x2c9));
WFIFOW(fd, 0) = 0x2c9;
- WFIFOB(fd, 2) = sd->status.allow_party ? 1 : 0;
+ WFIFOB(fd, 2) = sd->status.allow_party ? 0 : 1;
WFIFOSET(fd, packet_len(0x2c9));
}
/// Party invitation request.
/// 00fe <party id>.L <party name>.24B (ZC_REQ_JOIN_GROUP)
/// 02c6 <party id>.L <party name>.24B (ZC_PARTY_JOIN_REQ)
-void clif_party_invite(struct map_session_data *sd,struct map_session_data *tsd)
+static void clif_party_invite(struct map_session_data *sd, struct map_session_data *tsd)
{
#if PACKETVER < 20070821
const int cmd = 0xfe;
@@ -6631,16 +7183,18 @@ void clif_party_invite(struct map_session_data *sd,struct map_session_data *tsd)
/// Party invite result.
/// 00fd <nick>.24S <result>.B (ZC_ACK_REQ_JOIN_GROUP)
/// 02c5 <nick>.24S <result>.L (ZC_PARTY_JOIN_REQ_ACK)
-/// result=0 : char is already in a party -> MsgStringTable[80]
-/// result=1 : party invite was rejected -> MsgStringTable[81]
-/// result=2 : party invite was accepted -> MsgStringTable[82]
-/// result=3 : party is full -> MsgStringTable[83]
-/// result=4 : char of the same account already joined the party -> MsgStringTable[608]
-/// result=5 : char blocked party invite -> MsgStringTable[1324] (since 20070904)
-/// result=7 : char is not online or doesn't exist -> MsgStringTable[71] (since 20070904)
-/// result=8 : (%s) TODO instance related? -> MsgStringTable[1388] (since 20080527)
-/// return=9 : TODO map prohibits party joining? -> MsgStringTable[1871] (since 20110205)
-void clif_party_inviteack(struct map_session_data* sd, const char* nick, int result)
+/// result=0 : char is already in a party -> MsgStringTable[80]
+/// result=1 : party invite was rejected -> MsgStringTable[81]
+/// result=2 : party invite was accepted -> MsgStringTable[82]
+/// result=3 : party is full -> MsgStringTable[83]
+/// result=4 : char of the same account already joined the party -> MsgStringTable[608]
+/// result=5 : char blocked party invite -> MsgStringTable[1324] (since 20070904)
+/// result=7 : char is not online or doesn't exist -> MsgStringTable[71] (since 20070904)
+/// result=8 : (%s) are currently in restricted map to join a party. -> MsgStringTable[1388] (since 20080527)
+/// result=9 : Cannot join a party in this map. -> MsgStringTable[1871] (since 20110215)
+/// result=10 : You cannot invite or withdraw while in memorial dungeon -> message: MSG_ID_BD3 (since 20161130)
+/// result=11 : The character is a level that can not join the party -> message: MSG_ID_C9A (since 20170412)
+static void clif_party_inviteack(struct map_session_data *sd, const char *nick, int result)
{
int fd;
nullpo_retv(sd);
@@ -6680,7 +7234,7 @@ void clif_party_inviteack(struct map_session_data* sd, const char* nick, int res
/// flag:
/// 0 = send to party
/// 1 = send to sd
-void clif_party_option(struct party_data *p,struct map_session_data *sd,int flag)
+static void clif_party_option(struct party_data *p, struct map_session_data *sd, int flag)
{
unsigned char buf[16];
#if PACKETVER < 20090603
@@ -6717,7 +7271,7 @@ void clif_party_option(struct party_data *p,struct map_session_data *sd,int flag
/// 1 = expel
/// 2 = cannot leave party on this map
/// 3 = cannot expel from party on this map
-void clif_party_withdraw(struct party_data* p, struct map_session_data* sd, int account_id, const char* name, int flag)
+static void clif_party_withdraw(struct party_data *p, struct map_session_data *sd, int account_id, const char *name, int flag)
{
unsigned char buf[64];
@@ -6747,7 +7301,7 @@ void clif_party_withdraw(struct party_data* p, struct map_session_data* sd, int
/// Party chat message (ZC_NOTIFY_CHAT_PARTY).
/// 0109 <packet len>.W <account id>.L <message>.?B
-void clif_party_message(struct party_data *p, int account_id, const char *mes, int len)
+static void clif_party_message(struct party_data *p, int account_id, const char *mes, int len)
{
struct map_session_data *sd;
int i;
@@ -6778,7 +7332,7 @@ void clif_party_message(struct party_data *p, int account_id, const char *mes, i
/// Updates the position of a party member on the minimap (ZC_NOTIFY_POSITION_TO_GROUPM).
/// 0107 <account id>.L <x>.W <y>.W
-void clif_party_xy(struct map_session_data *sd)
+static void clif_party_xy(struct map_session_data *sd)
{
unsigned char buf[16];
@@ -6794,7 +7348,7 @@ void clif_party_xy(struct map_session_data *sd)
/*==========================================
* Sends x/y dot to a single fd. [Skotlex]
*------------------------------------------*/
-void clif_party_xy_single(int fd, struct map_session_data *sd)
+static void clif_party_xy_single(int fd, struct map_session_data *sd)
{
nullpo_retv(sd);
WFIFOHEAD(fd,packet_len(0x107));
@@ -6808,7 +7362,7 @@ void clif_party_xy_single(int fd, struct map_session_data *sd)
/// Updates HP bar of a party member.
/// 0106 <account id>.L <hp>.W <max hp>.W (ZC_NOTIFY_HP_TO_GROUPM)
/// 080e <account id>.L <hp>.L <max hp>.L (ZC_NOTIFY_HP_TO_GROUPM_R2)
-void clif_party_hp(struct map_session_data *sd)
+static void clif_party_hp(struct map_session_data *sd)
{
unsigned char buf[16];
#if PACKETVER < 20100126
@@ -6839,7 +7393,7 @@ void clif_party_hp(struct map_session_data *sd)
/*==========================================
* Sends HP bar to a single fd. [Skotlex]
*------------------------------------------*/
-void clif_hpmeter_single(int fd, int id, unsigned int hp, unsigned int maxhp)
+static void clif_hpmeter_single(int fd, int id, unsigned int hp, unsigned int maxhp)
{
#if PACKETVER < 20100126
const int cmd = 0x106;
@@ -6867,7 +7421,7 @@ void clif_hpmeter_single(int fd, int id, unsigned int hp, unsigned int maxhp)
/// Notifies the client, that it's attack target is too far (ZC_ATTACK_FAILURE_FOR_DISTANCE).
/// 0139 <target id>.L <target x>.W <target y>.W <x>.W <y>.W <atk range>.W
-void clif_movetoattack(struct map_session_data *sd,struct block_list *bl)
+static void clif_movetoattack(struct map_session_data *sd, struct block_list *bl)
{
int fd;
@@ -6893,27 +7447,33 @@ void clif_movetoattack(struct map_session_data *sd,struct block_list *bl)
/// 1 = failure
/// 2 = success (alchemist)
/// 3 = failure (alchemist)
-void clif_produceeffect(struct map_session_data* sd,int flag,int nameid)
+/// 4 = success (???)
+/// 5 = failure (???)
+/// 6 = failure (???)
+/// 7 = failure (???)
+static void clif_produceeffect(struct map_session_data *sd, int flag, int nameid)
{
- int view,fd;
+ int view, fd;
+ struct PACKET_ZC_ACK_REQMAKINGITEM p;
nullpo_retv(sd);
fd = sd->fd;
clif->solved_charname(fd, sd->status.char_id, sd->status.name);
- WFIFOHEAD(fd,packet_len(0x18f));
- WFIFOW(fd, 0)=0x18f;
- WFIFOW(fd, 2)=flag;
- if((view = itemdb_viewid(nameid)) > 0)
- WFIFOW(fd, 4)=view;
+ WFIFOHEAD(fd, sizeof(p));
+ p.packetType = 0x18f;
+ p.result = flag;
+ if ((view = itemdb_viewid(nameid)) > 0)
+ p.itemId = view;
else
- WFIFOW(fd, 4)=nameid;
- WFIFOSET(fd,packet_len(0x18f));
+ p.itemId = nameid;
+ memcpy(WFIFOP(fd, 0), &p, sizeof(p));
+ WFIFOSET(fd, sizeof(p));
}
/// Initiates the pet taming process (ZC_START_CAPTURE).
/// 019e
-void clif_catch_process(struct map_session_data *sd)
+static void clif_catch_process(struct map_session_data *sd)
{
int fd;
@@ -6929,7 +7489,7 @@ void clif_catch_process(struct map_session_data *sd)
/// 01a0 <result>.B
/// 0 = failure
/// 1 = success
-void clif_pet_roulette(struct map_session_data *sd,int data)
+static void clif_pet_roulette(struct map_session_data *sd, int data)
{
int fd;
@@ -6944,7 +7504,8 @@ void clif_pet_roulette(struct map_session_data *sd,int data)
/// Presents a list of pet eggs that can be hatched (ZC_PETEGG_LIST).
/// 01a6 <packet len>.W { <index>.W }*
-void clif_sendegg(struct map_session_data *sd) {
+static void clif_sendegg(struct map_session_data *sd)
+{
int i, n, fd;
nullpo_retv(sd);
@@ -6955,9 +7516,9 @@ void clif_sendegg(struct map_session_data *sd) {
return;
}
- WFIFOHEAD(fd, MAX_INVENTORY * 2 + 4);
+ WFIFOHEAD(fd, sd->status.inventorySize * 2 + 4);
WFIFOW(fd,0) = 0x1a6;
- for (i = n = 0; i < MAX_INVENTORY; i++) {
+ for (i = n = 0; i < sd->status.inventorySize; i++) {
if (sd->status.inventory[i].nameid <= 0 || sd->inventory_data[i] == NULL || sd->inventory_data[i]->type!=IT_PETEGG || sd->status.inventory[i].amount <= 0)
continue;
WFIFOW(fd, n * 2 + 4) = i + 2;
@@ -6982,9 +7543,10 @@ void clif_sendegg(struct map_session_data *sd) {
/// 3 = accessory
/// 4 = performance (data = 1~3: normal, 4: special)
/// 5 = hairstyle
+/// 6 = close egg selection ui and update egg in inventory (PACKETVER >= 20180704)
///
/// If sd is null, the update is sent to nearby objects, otherwise it is sent only to that player.
-void clif_send_petdata(struct map_session_data* sd, struct pet_data* pd, int type, int param)
+static void clif_send_petdata(struct map_session_data *sd, struct pet_data *pd, int type, int param)
{
uint8 buf[16];
nullpo_retv(pd);
@@ -7001,7 +7563,7 @@ void clif_send_petdata(struct map_session_data* sd, struct pet_data* pd, int typ
/// Pet's base data (ZC_PROPERTY_PET).
/// 01a2 <name>.24B <renamed>.B <level>.W <hunger>.W <intimacy>.W <accessory id>.W <class>.W
-void clif_send_petstatus(struct map_session_data *sd)
+static void clif_send_petstatus(struct map_session_data *sd)
{
int fd;
struct s_pet *p;
@@ -7029,7 +7591,7 @@ void clif_send_petstatus(struct map_session_data *sd)
/// 01aa <id>.L <data>.L
/// data:
/// @see CZ_PET_ACT.
-void clif_pet_emotion(struct pet_data *pd,int param)
+static void clif_pet_emotion(struct pet_data *pd, int param)
{
unsigned char buf[16];
@@ -7058,69 +7620,72 @@ void clif_pet_emotion(struct pet_data *pd,int param)
/// result:
/// 0 = failure
/// 1 = success
-void clif_pet_food(struct map_session_data *sd,int foodid,int fail)
+static void clif_pet_food(struct map_session_data *sd, int foodid, int fail)
{
int fd;
+ struct PACKET_ZC_FEED_PET p;
nullpo_retv(sd);
- fd=sd->fd;
- WFIFOHEAD(fd,packet_len(0x1a3));
- WFIFOW(fd,0)=0x1a3;
- WFIFOB(fd,2)=fail;
- WFIFOW(fd,3)=foodid;
- WFIFOSET(fd,packet_len(0x1a3));
+ fd = sd->fd;
+ WFIFOHEAD(fd, sizeof(p));
+ p.packetType = 0x1a3;
+ p.result = fail;
+ p.itemId = foodid;
+ memcpy(WFIFOP(fd, 0), &p, sizeof(p));
+ WFIFOSET(fd, sizeof(p));
}
/// Presents a list of skills that can be auto-spelled (ZC_AUTOSPELLLIST).
/// 01cd { <skill id>.L }*7
-void clif_autospell(struct map_session_data *sd,uint16 skill_lv)
+static void clif_autospell(struct map_session_data *sd, uint16 skill_lv)
{
- int fd;
-
+#if PACKETVER_MAIN_NUM >= 20090406 || defined(PACKETVER_RE) || defined(PACKETVER_ZERO) || PACKETVER_SAK_NUM >= 20080618
nullpo_retv(sd);
- fd=sd->fd;
- WFIFOHEAD(fd,packet_len(0x1cd));
- WFIFOW(fd, 0)=0x1cd;
+ int fd = sd->fd;
+#if PACKETVER_MAIN_NUM >= 20181128 || PACKETVER_RE_NUM >= 20181031
+ // reserve space for 7 skills
+ WFIFOHEAD(fd, sizeof(struct PACKET_ZC_AUTOSPELLLIST) + 4 * 7);
+#else
+ WFIFOHEAD(fd, sizeof(struct PACKET_ZC_AUTOSPELLLIST));
+#endif
+ struct PACKET_ZC_AUTOSPELLLIST *p = WFIFOP(fd, 0);
+ memset(p, 0, sizeof(struct PACKET_ZC_AUTOSPELLLIST));
+ p->packetType = HEADER_ZC_AUTOSPELLLIST;
+ int index = 0;
- if(skill_lv>0 && pc->checkskill(sd,MG_NAPALMBEAT)>0)
- WFIFOL(fd,2)= MG_NAPALMBEAT;
- else
- WFIFOL(fd,2)= 0x00000000;
- if(skill_lv>1 && pc->checkskill(sd,MG_COLDBOLT)>0)
- WFIFOL(fd,6)= MG_COLDBOLT;
- else
- WFIFOL(fd,6)= 0x00000000;
- if(skill_lv>1 && pc->checkskill(sd,MG_FIREBOLT)>0)
- WFIFOL(fd,10)= MG_FIREBOLT;
- else
- WFIFOL(fd,10)= 0x00000000;
- if(skill_lv>1 && pc->checkskill(sd,MG_LIGHTNINGBOLT)>0)
- WFIFOL(fd,14)= MG_LIGHTNINGBOLT;
- else
- WFIFOL(fd,14)= 0x00000000;
- if(skill_lv>4 && pc->checkskill(sd,MG_SOULSTRIKE)>0)
- WFIFOL(fd,18)= MG_SOULSTRIKE;
- else
- WFIFOL(fd,18)= 0x00000000;
- if(skill_lv>7 && pc->checkskill(sd,MG_FIREBALL)>0)
- WFIFOL(fd,22)= MG_FIREBALL;
- else
- WFIFOL(fd,22)= 0x00000000;
- if(skill_lv>9 && pc->checkskill(sd,MG_FROSTDIVER)>0)
- WFIFOL(fd,26)= MG_FROSTDIVER;
- else
- WFIFOL(fd,26)= 0x00000000;
+ if (skill_lv > 0 && pc->checkskill(sd, MG_NAPALMBEAT) > 0)
+ p->skills[index++] = MG_NAPALMBEAT;
+ if (skill_lv > 1 && pc->checkskill(sd, MG_COLDBOLT) > 0)
+ p->skills[index++] = MG_COLDBOLT;
+ if (skill_lv > 1 && pc->checkskill(sd, MG_FIREBOLT) > 0)
+ p->skills[index++] = MG_FIREBOLT;
+ if (skill_lv > 1 && pc->checkskill(sd, MG_LIGHTNINGBOLT) > 0)
+ p->skills[index++] = MG_LIGHTNINGBOLT;
+ if (skill_lv > 4 && pc->checkskill(sd, MG_SOULSTRIKE) > 0)
+ p->skills[index++] = MG_SOULSTRIKE;
+ if (skill_lv > 7 && pc->checkskill(sd, MG_FIREBALL) > 0)
+ p->skills[index++] = MG_FIREBALL;
+ if (skill_lv > 9 && pc->checkskill(sd, MG_FROSTDIVER) > 0)
+ p->skills[index++] = MG_FROSTDIVER;
+
+#if PACKETVER_MAIN_NUM >= 20181128 || PACKETVER_RE_NUM >= 20181031
+ const int len = sizeof(struct PACKET_ZC_AUTOSPELLLIST) + index * 4;
+ p->packetLength = len;
+#else
+ const int len = sizeof(struct PACKET_ZC_AUTOSPELLLIST);
+#endif
+ WFIFOSET(fd, len);
- WFIFOSET(fd,packet_len(0x1cd));
sd->menuskill_id = SA_AUTOSPELL;
sd->menuskill_val = skill_lv;
+#endif
}
/// Devotion's visual effect (ZC_DEVOTIONLIST).
/// 01cf <devoter id>.L { <devotee id>.L }*5 <max distance>.W
-void clif_devotion(struct block_list *src, struct map_session_data *tsd)
+static void clif_devotion(struct block_list *src, struct map_session_data *tsd)
{
unsigned char buf[56];
@@ -7171,7 +7736,8 @@ void clif_devotion(struct block_list *src, struct map_session_data *tsd)
* 01d0 <id>.L <amount>.W (ZC_SPIRITS)
* 01e1 <id>.L <amount>.W (ZC_SPIRITS2)
*------------------------------------------*/
-void clif_spiritball(struct block_list *bl) {
+static void clif_spiritball(struct block_list *bl)
+{
unsigned char buf[16];
struct map_session_data *sd = BL_CAST(BL_PC,bl);
struct homun_data *hd = BL_CAST(BL_HOM,bl);
@@ -7190,7 +7756,7 @@ void clif_spiritball(struct block_list *bl) {
/// Notifies clients in area of a character's combo delay (ZC_COMBODELAY).
/// 01d2 <account id>.L <delay>.L
-void clif_combo_delay(struct block_list *bl,int wait)
+static void clif_combo_delay(struct block_list *bl, int wait)
{
unsigned char buf[32];
@@ -7207,7 +7773,7 @@ void clif_combo_delay(struct block_list *bl,int wait)
/// flag:
/// 0 = inactive
/// 1 = active
-void clif_bladestop(struct block_list *src, int dst_id, int active)
+static void clif_bladestop(struct block_list *src, int dst_id, int active)
{
unsigned char buf[32];
@@ -7223,7 +7789,7 @@ void clif_bladestop(struct block_list *src, int dst_id, int active)
/// MVP effect (ZC_MVP).
/// 010c <account id>.L
-void clif_mvp_effect(struct map_session_data *sd)
+static void clif_mvp_effect(struct map_session_data *sd)
{
unsigned char buf[16];
@@ -7236,35 +7802,40 @@ void clif_mvp_effect(struct map_session_data *sd)
/// MVP item reward message (ZC_MVP_GETTING_ITEM).
/// 010a <name id>.W
-void clif_mvp_item(struct map_session_data *sd,int nameid)
+/// 010a <name id>.L
+static void clif_mvp_item(struct map_session_data *sd, int nameid)
{
- int view,fd;
+ int view, fd;
+ struct PACKET_ZC_MVP_GETTING_ITEM p;
nullpo_retv(sd);
- fd=sd->fd;
- WFIFOHEAD(fd,packet_len(0x10a));
- WFIFOW(fd,0)=0x10a;
- if((view = itemdb_viewid(nameid)) > 0)
- WFIFOW(fd,2)=view;
+ fd = sd->fd;
+ WFIFOHEAD(fd, sizeof(p));
+ p.packetType = 0x10a;
+ if ((view = itemdb_viewid(nameid)) > 0)
+ p.itemId = view;
else
- WFIFOW(fd,2)=nameid;
- WFIFOSET(fd,packet_len(0x10a));
+ p.itemId = nameid;
+ memcpy(WFIFOP(fd, 0), &p, sizeof(p));
+ WFIFOSET(fd, sizeof(p));
}
/// MVP EXP reward message (ZC_MVP_GETTING_SPECIAL_EXP).
/// 010b <exp>.L
-void clif_mvp_exp(struct map_session_data *sd, unsigned int exp)
+static void clif_mvp_exp(struct map_session_data *sd, unsigned int exp)
{
+#if PACKETVER_RE_NUM >= 20080827 || PACKETVER_MAIN_NUM >= 20090401 || defined(PACKETVER_ZERO)
int fd;
nullpo_retv(sd);
- fd=sd->fd;
- WFIFOHEAD(fd,packet_len(0x10b));
- WFIFOW(fd,0)=0x10b;
- WFIFOL(fd,2)=cap_value(exp,0,INT32_MAX);
- WFIFOSET(fd,packet_len(0x10b));
+ fd = sd->fd;
+ WFIFOHEAD(fd, packet_len(0x10b));
+ WFIFOW(fd, 0) = 0x10b;
+ WFIFOL(fd, 2) = cap_value(exp, 0, INT32_MAX);
+ WFIFOSET(fd, packet_len(0x10b));
+#endif
}
/// Dropped MVP item reward message (ZC_THROW_MVPITEM).
@@ -7272,7 +7843,7 @@ void clif_mvp_exp(struct map_session_data *sd, unsigned int exp)
///
/// "You are the MVP, but cannot obtain the reward because
/// you are overweight."
-void clif_mvp_noitem(struct map_session_data* sd)
+static void clif_mvp_noitem(struct map_session_data *sd)
{
int fd = sd->fd;
@@ -7288,7 +7859,8 @@ void clif_mvp_noitem(struct map_session_data* sd)
/// 1 = "You are already in a Guild."
/// 2 = "That Guild Name already exists."
/// 3 = "You need the necessary item to create a Guild."
-void clif_guild_created(struct map_session_data *sd,int flag)
+/// 4 = "Can't create a Guild in this area."
+static void clif_guild_created(struct map_session_data *sd, int flag)
{
int fd;
@@ -7304,14 +7876,15 @@ void clif_guild_created(struct map_session_data *sd,int flag)
/// Notifies the client that it is belonging to a guild (ZC_UPDATE_GDID).
/// 016c <guild id>.L <emblem id>.L <mode>.L <ismaster>.B <inter sid>.L <guild name>.24B
/// mode: @see enum guild_permission
-void clif_guild_belonginfo(struct map_session_data *sd, struct guild *g)
+static void clif_guild_belonginfo(struct map_session_data *sd, struct guild *g)
{
- int ps,fd;
nullpo_retv(sd);
nullpo_retv(g);
- fd=sd->fd;
- ps=guild->getposition(g,sd);
+ int fd = sd->fd;
+ int ps = guild->getposition(g, sd);
+ Assert_retv(ps != -1);
+
WFIFOHEAD(fd,packet_len(0x16c));
WFIFOW(fd,0)=0x16c;
WFIFOL(fd,2)=g->guild_id;
@@ -7329,7 +7902,7 @@ void clif_guild_belonginfo(struct map_session_data *sd, struct guild *g)
/// status:
/// 0 = offline
/// 1 = online
-void clif_guild_memberlogin_notice(struct guild *g,int idx,int flag)
+static void clif_guild_memberlogin_notice(struct guild *g, int idx, int flag)
{
unsigned char buf[64];
struct map_session_data* sd;
@@ -7366,7 +7939,7 @@ void clif_guild_memberlogin_notice(struct guild *g,int idx,int flag)
// At next time the client would always show the message.
// The function sends all the statuses in the single packet
// to economize traffic. [LuzZza]
-void clif_guild_send_onlineinfo(struct map_session_data *sd)
+static void clif_guild_send_onlineinfo(struct map_session_data *sd)
{
struct guild *g;
unsigned char buf[14*128];
@@ -7405,7 +7978,7 @@ void clif_guild_send_onlineinfo(struct map_session_data *sd)
/// &0x10 = Expulsion list
/// &0x40 = Unknown (GMENUFLAG_ALLGUILDLIST)
/// &0x80 = Notice
-void clif_guild_masterormember(struct map_session_data *sd)
+static void clif_guild_masterormember(struct map_session_data *sd)
{
int fd;
@@ -7421,41 +7994,53 @@ void clif_guild_masterormember(struct map_session_data *sd)
/// Guild basic information (Territories [Valaris])
/// 0150 <guild id>.L <level>.L <member num>.L <member max>.L <exp>.L <max exp>.L <points>.L <honor>.L <virtue>.L <emblem id>.L <name>.24B <master name>.24B <manage land>.16B (ZC_GUILD_INFO)
/// 01b6 <guild id>.L <level>.L <member num>.L <member max>.L <exp>.L <max exp>.L <points>.L <honor>.L <virtue>.L <emblem id>.L <name>.24B <master name>.24B <manage land>.16B <zeny>.L (ZC_GUILD_INFO2)
-void clif_guild_basicinfo(struct map_session_data *sd) {
+static void clif_guild_basicinfo(struct map_session_data *sd)
+{
int fd;
struct guild *g;
+#if PACKETVER < 20160622
+ const int cmd = 0x1b6; //0x150; [4144] this is packet for older versions?
+#else
+ const int cmd = 0xa84;
+#endif
+
nullpo_retv(sd);
fd = sd->fd;
- if( (g = sd->guild) == NULL )
+ if ((g = sd->guild) == NULL)
return;
- WFIFOHEAD(fd,packet_len(0x1b6));
- WFIFOW(fd, 0)=0x1b6;//0x150;
- WFIFOL(fd, 2)=g->guild_id;
- WFIFOL(fd, 6)=g->guild_lv;
- WFIFOL(fd,10)=g->connect_member;
- WFIFOL(fd,14)=g->max_member;
- WFIFOL(fd,18)=g->average_lv;
- WFIFOL(fd,22)=(uint32)cap_value(g->exp,0,INT32_MAX);
- WFIFOL(fd,26)=g->next_exp;
- WFIFOL(fd,30)=0; // Tax Points
- WFIFOL(fd,34)=0; // Honor: (left) Vulgar [-100,100] Famed (right)
- WFIFOL(fd,38)=0; // Virtue: (down) Wicked [-100,100] Righteous (up)
- WFIFOL(fd,42)=g->emblem_id;
- memcpy(WFIFOP(fd,46),g->name, NAME_LENGTH);
- memcpy(WFIFOP(fd,70),g->master, NAME_LENGTH);
-
- safestrncpy(WFIFOP(fd,94),msg_sd(sd,300+guild->checkcastles(g)),16); // "'N' castles"
- WFIFOL(fd,110) = 0; // zeny
+ WFIFOHEAD(fd, packet_len(cmd));
+ WFIFOW(fd, 0) = cmd;
+ WFIFOL(fd, 2) = g->guild_id;
+ WFIFOL(fd, 6) = g->guild_lv;
+ WFIFOL(fd, 10) = g->connect_member;
+ WFIFOL(fd, 14) = g->max_member;
+ WFIFOL(fd, 18) = g->average_lv;
+ WFIFOL(fd, 22) = (uint32)cap_value(g->exp, 0, INT32_MAX);
+ WFIFOL(fd, 26) = g->next_exp;
+ WFIFOL(fd, 30) = 0; // Tax Points
+ WFIFOL(fd, 34) = 0; // Honor: (left) Vulgar [-100,100] Famed (right)
+ WFIFOL(fd, 38) = 0; // Virtue: (down) Wicked [-100,100] Righteous (up)
+ WFIFOL(fd, 42) = g->emblem_id;
+ memcpy(WFIFOP(fd, 46), g->name, NAME_LENGTH);
+#if PACKETVER < 20160622
+ memcpy(WFIFOP(fd, 70), g->master, NAME_LENGTH);
+ safestrncpy(WFIFOP(fd, 94), msg_sd(sd, 300 + guild->checkcastles(g)), 16); // "'N' castles"
+ WFIFOL(fd, 110) = 0; // zeny
+#else
+ safestrncpy(WFIFOP(fd, 70), msg_sd(sd, 300 + guild->checkcastles(g)), 16); // "'N' castles"
+ WFIFOL(fd, 86) = 0; // zeny
+ WFIFOL(fd, 90) = g->member[0].char_id; // leader
+#endif
- WFIFOSET(fd,packet_len(0x1b6));
+ WFIFOSET(fd, packet_len(cmd));
}
/// Guild alliance and opposition list (ZC_MYGUILD_BASIC_INFO).
/// 014c <packet len>.W { <relation>.L <guild id>.L <guild name>.24B }*
-void clif_guild_allianceinfo(struct map_session_data *sd)
+static void clif_guild_allianceinfo(struct map_session_data *sd)
{
int fd,i,c;
struct guild *g;
@@ -7487,45 +8072,58 @@ void clif_guild_allianceinfo(struct map_session_data *sd)
/// 1 = online
/// memo:
/// probably member's self-introduction (unused, no client UI/packets for editing it)
-void clif_guild_memberlist(struct map_session_data *sd)
+static void clif_guild_memberlist(struct map_session_data *sd)
{
int fd;
int i,c;
struct guild *g;
+#if PACKETVER < 20161026
+ const int cmd = 0x154;
+ const int size = 104;
+#else
+ const int cmd = 0xaa5;
+ const int size = 34;
+#endif
+
nullpo_retv(sd);
- if( (fd = sd->fd) == 0 )
+ if ((fd = sd->fd) == 0)
return;
- if( (g = sd->guild) == NULL )
+ if ((g = sd->guild) == NULL)
return;
- WFIFOHEAD(fd, g->max_member * 104 + 4);
- WFIFOW(fd, 0)=0x154;
- for(i=0,c=0;i<g->max_member;i++){
- struct guild_member *m=&g->member[i];
- if(m->account_id==0)
+ WFIFOHEAD(fd, g->max_member * size + 4);
+ WFIFOW(fd, 0) = cmd;
+ for (i = 0, c = 0; i < g->max_member; i++) {
+ struct guild_member *m = &g->member[i];
+ if (m->account_id == 0)
continue;
- WFIFOL(fd,c*104+ 4)=m->account_id;
- WFIFOL(fd,c*104+ 8)=m->char_id;
- WFIFOW(fd,c*104+12)=m->hair;
- WFIFOW(fd,c*104+14)=m->hair_color;
- WFIFOW(fd,c*104+16)=m->gender;
- WFIFOW(fd,c*104+18)=m->class;
- WFIFOW(fd,c*104+20)=m->lv;
- WFIFOL(fd,c*104+22)=(int)cap_value(m->exp,0,INT32_MAX);
- WFIFOL(fd,c*104+26)=m->online;
- WFIFOL(fd,c*104+30)=m->position;
- memset(WFIFOP(fd,c*104+34),0,50); //[Ind] - This is displayed in the 'note' column but being you can't edit it it's sent empty.
- memcpy(WFIFOP(fd,c*104+84),m->name,NAME_LENGTH);
+ WFIFOL(fd, c * size + 4) = m->account_id;
+ WFIFOL(fd, c * size + 8) = m->char_id;
+ WFIFOW(fd, c * size + 12) = m->hair;
+ WFIFOW(fd, c * size + 14) = m->hair_color;
+ WFIFOW(fd, c * size + 16) = m->gender;
+ WFIFOW(fd, c * size + 18) = m->class;
+ WFIFOW(fd, c * size + 20) = m->lv;
+ WFIFOL(fd, c * size + 22) = (int)cap_value(m->exp, 0, INT32_MAX);
+ WFIFOL(fd, c * size + 26) = m->online;
+ WFIFOL(fd, c * size + 30) = m->position;
+#if PACKETVER < 20161026
+ memset(WFIFOP(fd, c * size + 34), 0, 50); //[Ind] - This is displayed in the 'note' column but being you can't edit it it's sent empty.
+ memcpy(WFIFOP(fd, c * size + 84), m->name, NAME_LENGTH);
+#else
+ WFIFOL(fd, c * size + 34) = m->last_login; // [Megasantos] - Shows last date online
+#endif
c++;
}
- WFIFOW(fd, 2)=c*104+4;
- WFIFOSET(fd,WFIFOW(fd,2));
+ WFIFOW(fd, 2) = c * size + 4;
+ WFIFOSET(fd, WFIFOW(fd, 2));
}
/// Guild position name information (ZC_POSITION_ID_NAME_INFO).
/// 0166 <packet len>.W { <position id>.L <position name>.24B }*
-void clif_guild_positionnamelist(struct map_session_data *sd) {
+static void clif_guild_positionnamelist(struct map_session_data *sd)
+{
int i,fd;
struct guild *g;
@@ -7549,7 +8147,8 @@ void clif_guild_positionnamelist(struct map_session_data *sd) {
/// mode: @see enum guild_permission
/// ranking:
/// TODO
-void clif_guild_positioninfolist(struct map_session_data *sd) {
+static void clif_guild_positioninfolist(struct map_session_data *sd)
+{
int i,fd;
struct guild *g;
@@ -7576,7 +8175,7 @@ void clif_guild_positioninfolist(struct map_session_data *sd) {
/// mode: @see enum guild_permission
/// ranking:
/// TODO
-void clif_guild_positionchanged(struct guild *g,int idx)
+static void clif_guild_positionchanged(struct guild *g, int idx)
{
// FIXME: This packet is intended to update the clients after a
// commit of position info changes, not sending one packet per
@@ -7601,7 +8200,7 @@ void clif_guild_positionchanged(struct guild *g,int idx)
/// Notifies clients in a guild about updated member position assignments (ZC_ACK_REQ_CHANGE_MEMBERS).
/// 0156 <packet len>.W { <account id>.L <char id>.L <position id>.L }*
-void clif_guild_memberpositionchanged(struct guild *g,int idx)
+static void clif_guild_memberpositionchanged(struct guild *g, int idx)
{
// FIXME: This packet is intended to update the clients after a
// commit of member position assignment changes, not sending one
@@ -7624,7 +8223,7 @@ void clif_guild_memberpositionchanged(struct guild *g,int idx)
/// Sends emblems bitmap data to the client that requested it (ZC_GUILD_EMBLEM_IMG).
/// 0152 <packet len>.W <guild id>.L <emblem id>.L <emblem data>.?B
-void clif_guild_emblem(struct map_session_data *sd,struct guild *g)
+static void clif_guild_emblem(struct map_session_data *sd, struct guild *g)
{
int fd;
nullpo_retv(sd);
@@ -7645,7 +8244,7 @@ void clif_guild_emblem(struct map_session_data *sd,struct guild *g)
/// Sends update of the guild id/emblem id to everyone in the area (ZC_CHANGE_GUILD).
/// 01b4 <id>.L <guild id>.L <emblem id>.W
-void clif_guild_emblem_area(struct block_list* bl)
+static void clif_guild_emblem_area(struct block_list *bl)
{
uint8 buf[12];
@@ -7662,7 +8261,7 @@ void clif_guild_emblem_area(struct block_list* bl)
/// Sends guild skills (ZC_GUILD_SKILLINFO).
/// 0162 <packet len>.W <skill points>.W { <skill id>.W <type>.L <level>.W <sp cost>.W <atk range>.W <skill name>.24B <upgradeable>.B }*
-void clif_guild_skillinfo(struct map_session_data* sd)
+static void clif_guild_skillinfo(struct map_session_data *sd)
{
int fd;
struct guild* g;
@@ -7701,7 +8300,7 @@ void clif_guild_skillinfo(struct map_session_data* sd)
/// Sends guild notice to client (ZC_GUILD_NOTICE).
/// 016f <subject>.60B <notice>.120B
-void clif_guild_notice(struct map_session_data* sd, struct guild* g)
+static void clif_guild_notice(struct map_session_data *sd, struct guild *g)
{
int fd;
@@ -7725,7 +8324,7 @@ void clif_guild_notice(struct map_session_data* sd, struct guild* g)
/// Guild invite (ZC_REQ_JOIN_GUILD).
/// 016a <guild id>.L <guild name>.24B
-void clif_guild_invite(struct map_session_data *sd,struct guild *g)
+static void clif_guild_invite(struct map_session_data *sd, struct guild *g)
{
int fd;
@@ -7747,7 +8346,8 @@ void clif_guild_invite(struct map_session_data *sd,struct guild *g)
/// 1 = Offer rejected.
/// 2 = Offer accepted.
/// 3 = Guild full.
-void clif_guild_inviteack(struct map_session_data *sd,int flag)
+/// 4 = Offline or not exists
+static void clif_guild_inviteack(struct map_session_data *sd, int flag)
{
int fd;
@@ -7762,47 +8362,52 @@ void clif_guild_inviteack(struct map_session_data *sd,int flag)
/// Notifies clients of a guild of a leaving member (ZC_ACK_LEAVE_GUILD).
/// 015a <char name>.24B <reason>.40B
-void clif_guild_leave(struct map_session_data *sd,const char *name,const char *mes)
+static void clif_guild_leave(struct map_session_data *sd, const char *name, int char_id, const char *mes)
{
- unsigned char buf[128];
-
nullpo_retv(sd);
+ nullpo_retv(name);
+ nullpo_retv(mes);
- WBUFW(buf, 0)=0x15a;
- memcpy(WBUFP(buf, 2),name,NAME_LENGTH);
- memcpy(WBUFP(buf,26),mes,40);
- clif->send(buf,packet_len(0x15a),&sd->bl,GUILD_NOBG);
+ struct PACKET_ZC_ACK_LEAVE_GUILD p;
+ p.packetType = guildLeave;
+#if PACKETVER_MAIN_NUM >= 20161019 || PACKETVER_RE_NUM >= 20160921 || defined(PACKETVER_ZERO)
+ p.GID = char_id;
+#else
+ safestrncpy(&p.name[0], name, NAME_LENGTH);
+#endif
+ safestrncpy(&p.reason[0], mes, 40);
+ clif->send(&p, sizeof(p), &sd->bl, GUILD_NOBG);
}
/// Notifies clients of a guild of an expelled member.
/// 015c <char name>.24B <reason>.40B <account name>.24B (ZC_ACK_BAN_GUILD)
/// 0839 <char name>.24B <reason>.40B (ZC_ACK_BAN_GUILD_SSO)
-void clif_guild_expulsion(struct map_session_data* sd, const char* name, const char* mes, int account_id)
+static void clif_guild_expulsion(struct map_session_data *sd, const char *name, int char_id, const char *mes, int account_id)
{
- unsigned char buf[128];
-#if PACKETVER < 20100803
- const unsigned short cmd = 0x15c;
-#else
- const unsigned short cmd = 0x839;
-#endif
-
nullpo_retv(sd);
nullpo_retv(name);
nullpo_retv(mes);
- WBUFW(buf,0) = cmd;
- safestrncpy(WBUFP(buf,2), name, NAME_LENGTH);
- safestrncpy(WBUFP(buf,26), mes, 40);
+ struct PACKET_ZC_ACK_BAN_GUILD p;
+ p.packetType = guildExpulsion;
+#if PACKETVER_MAIN_NUM >= 20161019 || PACKETVER_RE_NUM >= 20160921 || defined(PACKETVER_ZERO)
+ p.GID = char_id;
+#else
+ safestrncpy(&p.name[0], name, NAME_LENGTH);
+#endif
+ safestrncpy(&p.reason[0], mes, 40);
+
#if PACKETVER < 20100803
- memset(WBUFP(buf,66), 0, NAME_LENGTH); // account name (not used for security reasons)
+ memset(&p.account_name, 0, NAME_LENGTH); // account name (not used for security reasons)
#endif
- clif->send(buf, packet_len(cmd), &sd->bl, GUILD_NOBG);
+ clif->send(&p, sizeof(p), &sd->bl, GUILD_NOBG);
}
/// Guild expulsion list (ZC_BAN_LIST).
/// 0163 <packet len>.W { <char name>.24B <account name>.24B <reason>.40B }*
/// 0163 <packet len>.W { <char name>.24B <reason>.40B }* (PACKETVER >= 20100803)
-void clif_guild_expulsionlist(struct map_session_data* sd) {
+static void clif_guild_expulsionlist(struct map_session_data *sd)
+{
#if PACKETVER < 20100803
const int offset = NAME_LENGTH*2+40;
#else
@@ -7843,7 +8448,7 @@ void clif_guild_expulsionlist(struct map_session_data* sd) {
/// Guild chat message (ZC_GUILD_CHAT).
/// 017f <packet len>.W <message>.?B
-void clif_guild_message(struct guild *g,int account_id,const char *mes,int len)
+static void clif_guild_message(struct guild *g, int account_id, const char *mes, int len)
{// TODO: account_id is not used, candidate for deletion? [Ai4rei]
struct map_session_data *sd;
uint8 buf[256];
@@ -7867,7 +8472,7 @@ void clif_guild_message(struct guild *g,int account_id,const char *mes,int len)
/// Request for guild alliance (ZC_REQ_ALLY_GUILD).
/// 0171 <inviter account id>.L <guild name>.24B
-void clif_guild_reqalliance(struct map_session_data *sd,int account_id,const char *name)
+static void clif_guild_reqalliance(struct map_session_data *sd, int account_id, const char *name)
{
int fd;
@@ -7891,7 +8496,7 @@ void clif_guild_reqalliance(struct map_session_data *sd,int account_id,const cha
/// 3 = They have too any alliances.
/// 4 = You have too many alliances.
/// 5 = Alliances are disabled.
-void clif_guild_allianceack(struct map_session_data *sd,int flag)
+static void clif_guild_allianceack(struct map_session_data *sd, int flag)
{
int fd;
@@ -7909,7 +8514,7 @@ void clif_guild_allianceack(struct map_session_data *sd,int flag)
/// relation:
/// 0 = Ally
/// 1 = Enemy
-void clif_guild_delalliance(struct map_session_data *sd,int guild_id,int flag)
+static void clif_guild_delalliance(struct map_session_data *sd, int guild_id, int flag)
{
int fd;
@@ -7932,7 +8537,7 @@ void clif_guild_delalliance(struct map_session_data *sd,int guild_id,int flag)
/// 1 = Guild has too many Antagonists.
/// 2 = Already set as an Antagonist.
/// 3 = Antagonists are disabled.
-void clif_guild_oppositionack(struct map_session_data *sd,int flag)
+static void clif_guild_oppositionack(struct map_session_data *sd, int flag)
{
int fd;
@@ -7947,8 +8552,8 @@ void clif_guild_oppositionack(struct map_session_data *sd,int flag)
/// Adds alliance or opposition (ZC_ADD_RELATED_GUILD).
/// 0185 <relation>.L <guild id>.L <guild name>.24B
-/*
-void clif_guild_allianceadded(struct guild *g,int idx)
+#if 0
+static void clif_guild_allianceadded(struct guild *g, int idx)
{
unsigned char buf[64];
WBUFW(buf,0)=0x185;
@@ -7957,14 +8562,14 @@ void clif_guild_allianceadded(struct guild *g,int idx)
memcpy(WBUFP(buf,10),g->alliance[idx].name,NAME_LENGTH);
clif->send(buf,packet_len(0x185),guild->getavailablesd(g),GUILD);
}
-*/
+#endif // 0
/// Notifies the client about the result of a guild break (ZC_ACK_DISORGANIZE_GUILD_RESULT).
/// 015e <reason>.L
/// 0 = success
/// 1 = invalid key (guild name, @see clif_parse_GuildBreak)
/// 2 = there are still members in the guild
-void clif_guild_broken(struct map_session_data *sd,int flag)
+static void clif_guild_broken(struct map_session_data *sd, int flag)
{
int fd;
@@ -7977,11 +8582,54 @@ void clif_guild_broken(struct map_session_data *sd,int flag)
WFIFOSET(fd,packet_len(0x15e));
}
+static void clif_guild_position_selected(struct map_session_data *sd)
+{
+#if PACKETVER >= 20180801
+ clif->guild_set_position(sd);
+#else
+ clif->charnameupdate(sd);
+#endif
+}
+
+static void clif_guild_set_position(struct map_session_data *sd)
+{
+ nullpo_retv(sd);
+
+ int len = sizeof(struct PACKET_ZC_GUILD_POSITION);
+ const char *name = NULL;
+ if (sd->status.guild_id > 0) {
+ struct guild *g = sd->guild;
+
+ nullpo_retv(g);
+
+ int i = 0;
+ int ps = -1;
+ ARR_FIND(0, g->max_member, i, g->member[i].account_id == sd->status.account_id && g->member[i].char_id == sd->status.char_id);
+ if (i < g->max_member)
+ ps = g->member[i].position;
+
+ if (ps >= 0 && ps < MAX_GUILDPOSITION) {
+ len += 24;
+ name = g->position[ps].name;
+ }
+ }
+
+ unsigned char buf[sizeof(struct PACKET_ZC_GUILD_POSITION) + NAME_LENGTH];
+ struct PACKET_ZC_GUILD_POSITION *p = WBUFP(buf, 0);
+ p->packetType = 0xafd;
+ p->packetLength = len;
+ p->AID = sd->bl.id;
+ if (name != NULL)
+ memcpy(&p->position, name, 24);
+
+ clif->send(buf, len, &sd->bl, AREA);
+}
+
/// Displays emotion on an object (ZC_EMOTION).
/// 00c0 <id>.L <type>.B
/// type:
/// enum emotion_type
-void clif_emotion(struct block_list *bl,int type)
+static void clif_emotion(struct block_list *bl, int type)
{
unsigned char buf[8];
@@ -7995,7 +8643,7 @@ void clif_emotion(struct block_list *bl,int type)
/// Displays the contents of a talkiebox trap (ZC_TALKBOX_CHATCONTENTS).
/// 0191 <id>.L <contents>.80B
-void clif_talkiebox(struct block_list* bl, const char* talkie)
+static void clif_talkiebox(struct block_list *bl, const char *talkie)
{
unsigned char buf[MESSAGE_SIZE+6];
nullpo_retv(bl);
@@ -8009,7 +8657,7 @@ void clif_talkiebox(struct block_list* bl, const char* talkie)
/// Displays wedding effect centered on an object (ZC_CONGRATULATION).
/// 01ea <id>.L
-void clif_wedding_effect(struct block_list *bl)
+static void clif_wedding_effect(struct block_list *bl)
{
unsigned char buf[6];
@@ -8022,7 +8670,8 @@ void clif_wedding_effect(struct block_list *bl)
/// Notifies the client of the name of the partner character (ZC_COUPLENAME).
/// 01e6 <partner name>.24B
-void clif_callpartner(struct map_session_data *sd) {
+static void clif_callpartner(struct map_session_data *sd)
+{
unsigned char buf[26];
nullpo_retv(sd);
@@ -8047,8 +8696,8 @@ void clif_callpartner(struct map_session_data *sd) {
/// Initiates the partner "taming" process [DracoRPG] (ZC_START_COUPLE).
/// 01e4
/// This packet while still implemented by the client is no longer being officially used.
-/*
-void clif_marriage_process(struct map_session_data *sd)
+#if 0
+static void clif_marriage_process(struct map_session_data *sd)
{
int fd;
nullpo_retv(sd);
@@ -8058,11 +8707,11 @@ void clif_marriage_process(struct map_session_data *sd)
WFIFOW(fd,0)=0x1e4;
WFIFOSET(fd,packet_len(0x1e4));
}
-*/
+#endif // 0
/// Notice of divorce (ZC_DIVORCE).
/// 0205 <partner name>.24B
-void clif_divorced(struct map_session_data* sd, const char* name)
+static void clif_divorced(struct map_session_data *sd, const char *name)
{
int fd;
nullpo_retv(sd);
@@ -8077,8 +8726,8 @@ void clif_divorced(struct map_session_data* sd, const char* name)
/// Marriage proposal (ZC_REQ_COUPLE).
/// 01e2 <account id>.L <char id>.L <char name>.24B
/// This packet while still implemented by the client is no longer being officially used.
-/*
-void clif_marriage_proposal(int fd, struct map_session_data *sd, struct map_session_data* ssd)
+#if 0
+static void clif_marriage_proposal(int fd, struct map_session_data *sd, struct map_session_data *ssd)
{
nullpo_retv(sd);
@@ -8089,12 +8738,12 @@ void clif_marriage_proposal(int fd, struct map_session_data *sd, struct map_sess
safestrncpy(WFIFOP(fd,10), ssd->status.name, NAME_LENGTH);
WFIFOSET(fd, packet_len(0x1e2));
}
-*/
+#endif // 0
/*==========================================
* Displays a message using the guild-chat colors to the specified targets. [Skotlex]
*------------------------------------------*/
-void clif_disp_message(struct block_list *src, const char *mes, enum send_target target)
+static void clif_disp_message(struct block_list *src, const char *mes, enum send_target target)
{
unsigned char buf[256];
int len;
@@ -8123,7 +8772,7 @@ void clif_disp_message(struct block_list *src, const char *mes, enum send_target
/// result:
/// 0 = failure
/// 1 = success
-void clif_GM_kickack(struct map_session_data *sd, int result)
+static void clif_GM_kickack(struct map_session_data *sd, int result)
{
int fd;
@@ -8136,7 +8785,8 @@ void clif_GM_kickack(struct map_session_data *sd, int result)
WFIFOSET(fd, packet_len(0xcd));
}
-void clif_GM_kick(struct map_session_data *sd,struct map_session_data *tsd) {
+static void clif_GM_kick(struct map_session_data *sd, struct map_session_data *tsd)
+{
int fd;
nullpo_retv(tsd);
@@ -8160,7 +8810,7 @@ void clif_GM_kick(struct map_session_data *sd,struct map_session_data *tsd) {
/// 3 = "Chat Block has been applied by GM due to your ill-mannerous action."
/// 4 = "Automated Chat Block has been applied due to Anti-Spam System."
/// 5 = "You got a good point from %s."
-void clif_manner_message(struct map_session_data* sd, uint32 type)
+static void clif_manner_message(struct map_session_data *sd, uint32 type)
{
int fd;
nullpo_retv(sd);
@@ -8177,7 +8827,7 @@ void clif_manner_message(struct map_session_data* sd, uint32 type)
/// type:
/// 0 = positive (unmute)
/// 1 = negative (mute)
-void clif_GM_silence(struct map_session_data* sd, struct map_session_data* tsd, uint8 type)
+static void clif_GM_silence(struct map_session_data *sd, struct map_session_data *tsd, uint8 type)
{
int fd;
nullpo_retv(sd);
@@ -8200,7 +8850,8 @@ void clif_GM_silence(struct map_session_data* sd, struct map_session_data* tsd,
/// 0 = success
/// 1 = failure
/// 2 = too many blocks
-void clif_wisexin(struct map_session_data *sd,int type,int flag) {
+static void clif_wisexin(struct map_session_data *sd, int type, int flag)
+{
int fd;
nullpo_retv(sd);
@@ -8221,7 +8872,8 @@ void clif_wisexin(struct map_session_data *sd,int type,int flag) {
/// result:
/// 0 = success
/// 1 = failure
-void clif_wisall(struct map_session_data *sd,int type,int flag) {
+static void clif_wisall(struct map_session_data *sd, int type, int flag)
+{
int fd;
nullpo_retv(sd);
@@ -8236,7 +8888,7 @@ void clif_wisall(struct map_session_data *sd,int type,int flag) {
/// Play a BGM! [Rikter/Yommy] (ZC_PLAY_NPC_BGM).
/// 07fe <bgm>.24B
-void clif_playBGM(struct map_session_data* sd, const char* name)
+static void clif_playBGM(struct map_session_data *sd, const char *name)
{
int fd;
@@ -8262,7 +8914,7 @@ void clif_playBGM(struct map_session_data* sd, const char* name)
/// npc id:
/// The acoustic direction of the sound is determined by the
/// relative position of the NPC to the player (3D sound).
-void clif_soundeffect(struct map_session_data* sd, struct block_list* bl, const char* name, int type)
+static void clif_soundeffect(struct map_session_data *sd, struct block_list *bl, const char *name, int type)
{
int fd;
@@ -8280,7 +8932,7 @@ void clif_soundeffect(struct map_session_data* sd, struct block_list* bl, const
WFIFOSET(fd,packet_len(0x1d3));
}
-void clif_soundeffectall(struct block_list* bl, const char* name, int type, enum send_target coverage)
+static void clif_soundeffectall(struct block_list *bl, const char *name, int type, enum send_target coverage)
{
unsigned char buf[40];
@@ -8299,7 +8951,7 @@ void clif_soundeffectall(struct block_list* bl, const char* name, int type, enum
/// 01f3 <id>.L <effect id>.L
/// effect id:
/// @see doc/effect_list.txt
-void clif_specialeffect(struct block_list* bl, int type, enum send_target target)
+static void clif_specialeffect(struct block_list *bl, int type, enum send_target target)
{
unsigned char buf[24];
@@ -8319,7 +8971,8 @@ void clif_specialeffect(struct block_list* bl, int type, enum send_target target
}
}
-void clif_specialeffect_single(struct block_list* bl, int type, int fd) {
+static void clif_specialeffect_single(struct block_list *bl, int type, int fd)
+{
nullpo_retv(bl);
WFIFOHEAD(fd,10);
WFIFOW(fd,0) = 0x1f3;
@@ -8334,7 +8987,7 @@ void clif_specialeffect_single(struct block_list* bl, int type, int fd) {
/// @see doc/effect_list.txt
/// num data:
/// effect-dependent value
-void clif_specialeffect_value(struct block_list* bl, int effect_id, int num, send_target target)
+static void clif_specialeffect_value(struct block_list *bl, int effect_id, int num, send_target target)
{
uint8 buf[14];
@@ -8350,6 +9003,45 @@ void clif_specialeffect_value(struct block_list* bl, int effect_id, int num, sen
clif->send(buf, packet_len(0x284), bl, SELF);
}
}
+
+/// Remove special effects (ZC_REMOVE_EFFECT).
+/// 0b0d <id>.L <effect id>.L
+/// effect id:
+/// @see doc/effect_list.txt
+static void clif_removeSpecialEffect(struct block_list *bl, int effectId, enum send_target target)
+{
+#if PACKETVER_MAIN_NUM >= 20181002 || PACKETVER_RE_NUM >= 20181002 || PACKETVER_ZERO_NUM >= 20181010
+ nullpo_retv(bl);
+
+ struct PACKET_ZC_REMOVE_EFFECT p;
+ p.packetType = 0xb0d;
+ p.aid = bl->id;
+ p.effectId = effectId;
+
+ clif->send(&p, sizeof(p), bl, target);
+
+ if (clif->isdisguised(bl)) {
+ p.aid = -bl->id;
+ clif->send(&p, sizeof(p), bl, SELF);
+ }
+#endif
+}
+
+static void clif_removeSpecialEffect_single(struct block_list *bl, int effectId, struct block_list *targetBl)
+{
+#if PACKETVER_MAIN_NUM >= 20181002 || PACKETVER_RE_NUM >= 20181002 || PACKETVER_ZERO_NUM >= 20181010
+ nullpo_retv(bl);
+ nullpo_retv(targetBl);
+
+ struct PACKET_ZC_REMOVE_EFFECT p;
+ p.packetType = 0xb0d;
+ p.aid = bl->id;
+ p.effectId = effectId;
+
+ clif->send(&p, sizeof(p), targetBl, SELF);
+#endif
+}
+
/**
* Modification of clif_messagecolor to send colored messages to players to chat log only (doesn't display overhead).
*
@@ -8359,7 +9051,7 @@ void clif_specialeffect_value(struct block_list* bl, int effect_id, int num, sen
* @param color Message color (RGB format: 0xRRGGBB)
* @param msg Message text
*/
-void clif_messagecolor_self(int fd, uint32 color, const char *msg)
+static void clif_messagecolor_self(int fd, uint32 color, const char *msg)
{
int msg_len;
@@ -8385,7 +9077,7 @@ void clif_messagecolor_self(int fd, uint32 color, const char *msg)
* @param color Message color (RGB format: 0xRRGGBB)
* @param msg Message text
*/
-void clif_messagecolor(struct block_list *bl, uint32 color, const char *msg)
+static void clif_messagecolor(struct block_list *bl, uint32 color, const char *msg)
{
int msg_len;
uint8 buf[256];
@@ -8409,20 +9101,50 @@ void clif_messagecolor(struct block_list *bl, uint32 color, const char *msg)
clif->send(buf, WBUFW(buf,2), bl, AREA_CHAT_WOC);
}
+// Message without owner, not logged in chat
+static void clif_serviceMessageColor(struct map_session_data *sd, uint32 color, const char *msg)
+{
+#if PACKETVER_MAIN_NUM >= 20170830 || PACKETVER_RE_NUM >= 20170830 || defined(PACKETVER_ZERO)
+ nullpo_retv(sd);
+ nullpo_retv(msg);
+
+ int msg_len = (int)strlen(msg) + 1;
+
+ if (msg_len > 512) {
+ ShowWarning("clif_serviceMessageColor: Truncating too long message '%s' (len=%d).\n", msg, msg_len);
+ msg_len = 512;
+ }
+
+ const int len = sizeof(struct PACKET_ZC_SERVICE_MESSAGE_COLOR) + msg_len;
+ const int fd = sd->fd;
+ WFIFOHEAD(fd, len);
+ struct PACKET_ZC_SERVICE_MESSAGE_COLOR *p = WFIFOP(fd, 0);
+
+ p->packetType = HEADER_ZC_SERVICE_MESSAGE_COLOR;
+ p->packetLength = len;
+ p->color = RGB2BGR(color);
+ safestrncpy(p->message, msg, msg_len);
+
+ WFIFOSET(fd, len);
+#endif
+}
+
/**
* Notifies the client that the storage window is still open
*
* Should only be used in cases where the client closed the
* storage window without server's consent
**/
-void clif_refresh_storagewindow(struct map_session_data *sd)
+static void clif_refresh_storagewindow(struct map_session_data *sd)
{
nullpo_retv(sd);
// Notify the client that the storage is open
if (sd->state.storage_flag == STORAGE_FLAG_NORMAL) {
- storage->sortitem(sd->status.storage.items, ARRAYLENGTH(sd->status.storage.items));
- clif->storagelist(sd, sd->status.storage.items, ARRAYLENGTH(sd->status.storage.items));
- clif->updatestorageamount(sd, sd->status.storage.storage_amount, MAX_STORAGE);
+ if (sd->storage.aggregate > 0) {
+ storage->sortitem(VECTOR_DATA(sd->storage.item), VECTOR_LENGTH(sd->storage.item));
+ }
+ clif->storageList(sd, VECTOR_DATA(sd->storage.item), VECTOR_LENGTH(sd->storage.item));
+ clif->updatestorageamount(sd, sd->storage.aggregate, MAX_STORAGE);
}
// Notify the client that the gstorage is open otherwise it will
// remain locked forever and nobody will be able to access it
@@ -8433,21 +9155,21 @@ void clif_refresh_storagewindow(struct map_session_data *sd)
intif->request_guild_storage(sd->status.account_id,sd->status.guild_id);
} else {
storage->sortitem(gstor->items, ARRAYLENGTH(gstor->items));
- clif->storagelist(sd, gstor->items, ARRAYLENGTH(gstor->items));
+ clif->guildStorageList(sd, gstor->items, ARRAYLENGTH(gstor->items));
clif->updatestorageamount(sd, gstor->storage_amount, MAX_GUILD_STORAGE);
}
}
}
// refresh the client's screen, getting rid of any effects
-void clif_refresh(struct map_session_data *sd)
+static void clif_refresh(struct map_session_data *sd)
{
nullpo_retv(sd);
clif->changemap(sd,sd->bl.m,sd->bl.x,sd->bl.y);
- clif->inventorylist(sd);
+ clif->inventoryList(sd);
if(pc_iscarton(sd)) {
- clif->cartlist(sd);
+ clif->cartList(sd);
clif->updatestatus(sd,SP_CARTINFO);
}
clif->updatestatus(sd,SP_WEIGHT);
@@ -8505,17 +9227,18 @@ void clif_refresh(struct map_session_data *sd)
/// Updates the object's (bl) name on client.
/// 0095 <id>.L <char name>.24B (ZC_ACK_REQNAME)
/// 0195 <id>.L <char name>.24B <party name>.24B <guild name>.24B <position name>.24B (ZC_ACK_REQNAMEALL)
-void clif_charnameack (int fd, struct block_list *bl)
+/// 0A30 <id>.L <char name>.24B <party name>.24B <guild name>.24B <position name>.24B <title id>.L (ZC_ACK_REQNAMEALL2)
+static void clif_charnameack(int fd, struct block_list *bl)
{
- unsigned char buf[103];
- int cmd = 0x95;
+ struct packet_reqnameall_ack packet = { 0 };
+ int len = sizeof(struct packet_reqnameall_ack);
nullpo_retv(bl);
- WBUFW(buf,0) = cmd;
- WBUFL(buf,2) = bl->id;
+ packet.packet_id = reqName;
+ packet.gid = bl->id;
- switch( bl->type ) {
+ switch(bl->type) {
case BL_PC:
{
const struct map_session_data *ssd = BL_UCCAST(BL_PC, bl);
@@ -8523,17 +9246,28 @@ void clif_charnameack (int fd, struct block_list *bl)
const struct guild *g = NULL;
int ps = -1;
+ if (ssd->fakename[0] != '\0' || ssd->status.guild_id > 0 || ssd->status.party_id > 0 || ssd->status.title_id > 0) {
+ packet.packet_id = reqNameAllType;
+ }
+
//Requesting your own "shadow" name. [Skotlex]
- if (ssd->fd == fd && ssd->disguise != -1)
- WBUFL(buf,2) = -bl->id;
+ if (ssd->fd == fd && ssd->disguise != -1) {
+ packet.gid = -bl->id;
+ }
if (ssd->fakename[0] != '\0') {
- WBUFW(buf, 0) = cmd = 0x195;
- memcpy(WBUFP(buf,6), ssd->fakename, NAME_LENGTH);
- WBUFB(buf,30) = WBUFB(buf,54) = WBUFB(buf,78) = 0;
+ memcpy(packet.name, ssd->fakename, NAME_LENGTH);
break;
}
- memcpy(WBUFP(buf,6), ssd->status.name, NAME_LENGTH);
+
+#if PACKETVER >= 20150503
+ // Title System [Dastgir/Hercules]
+ if (ssd->status.title_id > 0) {
+ packet.title_id = ssd->status.title_id;
+ }
+#endif
+
+ memcpy(packet.name, ssd->status.name, NAME_LENGTH);
if (ssd->status.party_id != 0) {
p = party->search(ssd->status.party_id);
@@ -8555,47 +9289,41 @@ void clif_charnameack (int fd, struct block_list *bl)
if (p == NULL && g == NULL)
break;
- WBUFW(buf, 0) = cmd = 0x195;
- if (p != NULL)
- memcpy(WBUFP(buf,30), p->party.name, NAME_LENGTH);
- else
- WBUFB(buf,30) = 0;
+ if (p != NULL) {
+ memcpy(packet.party_name, p->party.name, NAME_LENGTH);
+ }
if (g != NULL && ps >= 0 && ps < MAX_GUILDPOSITION) {
- memcpy(WBUFP(buf,54), g->name,NAME_LENGTH);
- memcpy(WBUFP(buf,78), g->position[ps].name, NAME_LENGTH);
- } else { //Assume no guild.
- WBUFB(buf,54) = 0;
- WBUFB(buf,78) = 0;
+ memcpy(packet.guild_name, g->name,NAME_LENGTH);
+ memcpy(packet.position_name, g->position[ps].name, NAME_LENGTH);
}
}
break;
//[blackhole89]
case BL_HOM:
- memcpy(WBUFP(buf,6), BL_UCCAST(BL_HOM, bl)->homunculus.name, NAME_LENGTH);
+ memcpy(packet.name, BL_UCCAST(BL_HOM, bl)->homunculus.name, NAME_LENGTH);
break;
case BL_MER:
- memcpy(WBUFP(buf,6), BL_UCCAST(BL_MER, bl)->db->name, NAME_LENGTH);
+ memcpy(packet.name, BL_UCCAST(BL_MER, bl)->db->name, NAME_LENGTH);
break;
case BL_PET:
- memcpy(WBUFP(buf,6), BL_UCCAST(BL_PET, bl)->pet.name, NAME_LENGTH);
+ memcpy(packet.name, BL_UCCAST(BL_PET, bl)->pet.name, NAME_LENGTH);
break;
case BL_NPC:
- memcpy(WBUFP(buf,6), BL_UCCAST(BL_NPC, bl)->name, NAME_LENGTH);
+ memcpy(packet.name, BL_UCCAST(BL_NPC, bl)->name, NAME_LENGTH);
break;
case BL_MOB:
{
const struct mob_data *md = BL_UCCAST(BL_MOB, bl);
- memcpy(WBUFP(buf,6), md->name, NAME_LENGTH);
+ memcpy(packet.name, md->name, NAME_LENGTH);
if (md->guardian_data && md->guardian_data->g) {
- WBUFW(buf, 0) = cmd = 0x195;
- WBUFB(buf,30) = 0;
- memcpy(WBUFP(buf,54), md->guardian_data->g->name, NAME_LENGTH);
- memcpy(WBUFP(buf,78), md->guardian_data->castle->castle_name, NAME_LENGTH);
+ packet.packet_id = reqNameAllType;
+ memcpy(packet.guild_name, md->guardian_data->g->name, NAME_LENGTH);
+ memcpy(packet.position_name, md->guardian_data->castle->castle_name, NAME_LENGTH);
} else if (battle_config.show_mob_info) {
char mobhp[50], *str_p = mobhp;
- WBUFW(buf, 0) = cmd = 0x195;
+ packet.packet_id = reqNameAllType;
if (battle_config.show_mob_info&4)
str_p += sprintf(str_p, "Lv. %d | ", md->level);
if (battle_config.show_mob_info&1)
@@ -8606,89 +9334,92 @@ void clif_charnameack (int fd, struct block_list *bl)
//can parse it. [Skotlex]
if (str_p != mobhp) {
*(str_p-3) = '\0'; //Remove trailing space + pipe.
- memcpy(WBUFP(buf,30), mobhp, NAME_LENGTH);
- WBUFB(buf,54) = 0;
- WBUFB(buf,78) = 0;
+ memcpy(packet.party_name, mobhp, NAME_LENGTH);
}
}
}
break;
case BL_CHAT:
#if 0 //FIXME: Clients DO request this... what should be done about it? The chat's title may not fit... [Skotlex]
- memcpy(WBUFP(buf,6), BL_UCCAST(BL_CHAT, bl)->title, NAME_LENGTH);
+ memcpy(packet.name, BL_UCCAST(BL_CHAT, bl)->title, NAME_LENGTH);
break;
#endif
return;
case BL_ELEM:
- memcpy(WBUFP(buf,6), BL_UCCAST(BL_ELEM, bl)->db->name, NAME_LENGTH);
+ memcpy(packet.name, BL_UCCAST(BL_ELEM, bl)->db->name, NAME_LENGTH);
break;
default:
ShowError("clif_charnameack: bad type %u(%d)\n", bl->type, bl->id);
return;
}
+ if (packet.packet_id == reqName) {
+ len = sizeof(struct packet_reqname_ack);
+ }
+ // if no recipient specified just update nearby clients
// if no recipient specified just update nearby clients
if (fd == 0) {
- clif->send(buf, packet_len(cmd), bl, AREA);
+ clif->send(&packet, len, bl, AREA);
} else {
- WFIFOHEAD(fd, packet_len(cmd));
- memcpy(WFIFOP(fd, 0), buf, packet_len(cmd));
- WFIFOSET(fd, packet_len(cmd));
+ struct map_session_data *sd = sockt->session_is_valid(fd) ? sockt->session[fd]->session_data : NULL;
+ if (sd != NULL) {
+ clif->send(&packet, len, &sd->bl, SELF);
+ } else {
+ clif->send(&packet, len, bl, SELF);
+ }
}
}
//Used to update when a char leaves a party/guild. [Skotlex]
//Needed because when you send a 0x95 packet, the client will not remove the cached party/guild info that is not sent.
-void clif_charnameupdate (struct map_session_data *ssd)
+static void clif_charnameupdate(struct map_session_data *ssd)
{
- unsigned char buf[103];
- int cmd = 0x195, ps = -1;
+ int ps = -1;
struct party_data *p = NULL;
struct guild *g = NULL;
+ struct packet_reqnameall_ack packet = { 0 };
nullpo_retv(ssd);
- if( ssd->fakename[0] )
+ if (ssd->fakename[0])
return; //No need to update as the party/guild was not displayed anyway.
- WBUFW(buf,0) = cmd;
- WBUFL(buf,2) = ssd->bl.id;
+ packet.packet_id = reqNameAllType;
+ packet.gid = ssd->bl.id;
- memcpy(WBUFP(buf,6), ssd->status.name, NAME_LENGTH);
+ memcpy(packet.name, ssd->status.name, NAME_LENGTH);
if (!battle_config.display_party_name) {
if (ssd->status.party_id > 0 && ssd->status.guild_id > 0 && (g = ssd->guild) != NULL)
p = party->search(ssd->status.party_id);
- }else{
+ } else {
if (ssd->status.party_id > 0)
p = party->search(ssd->status.party_id);
}
- if( ssd->status.guild_id > 0 && (g = ssd->guild) != NULL )
- {
+ if (ssd->status.guild_id > 0 && (g = ssd->guild) != NULL) {
int i;
ARR_FIND(0, g->max_member, i, g->member[i].account_id == ssd->status.account_id && g->member[i].char_id == ssd->status.char_id);
if( i < g->max_member ) ps = g->member[i].position;
}
- if( p )
- memcpy(WBUFP(buf,30), p->party.name, NAME_LENGTH);
- else
- WBUFB(buf,30) = 0;
+ if (p != NULL)
+ memcpy(packet.party_name, p->party.name, NAME_LENGTH);
- if( g && ps >= 0 && ps < MAX_GUILDPOSITION )
- {
- memcpy(WBUFP(buf,54), g->name,NAME_LENGTH);
- memcpy(WBUFP(buf,78), g->position[ps].name, NAME_LENGTH);
+ if (g != NULL && ps >= 0 && ps < MAX_GUILDPOSITION) {
+ memcpy(packet.guild_name, g->name,NAME_LENGTH);
+ memcpy(packet.position_name, g->position[ps].name, NAME_LENGTH);
}
- else
- {
- WBUFB(buf,54) = 0;
- WBUFB(buf,78) = 0;
+
+#if PACKETVER >= 20150503
+ // Achievement System [Dastgir/Hercules]
+ if (ssd->status.title_id > 0) {
+ packet.title_id = ssd->status.title_id;
}
+#endif
// Update nearby clients
- clif->send(buf, packet_len(cmd), &ssd->bl, AREA);
+ clif->send(&packet, sizeof(packet), &ssd->bl, AREA);
}
/// Taekwon Jump (TK_HIGHJUMP) effect (ZC_HIGHJUMP).
@@ -8697,7 +9428,7 @@ void clif_charnameupdate (struct map_session_data *ssd)
/// Visually moves(instant) a character to x,y. The char moves even
/// when the target cell isn't walkable. If the char is sitting it
/// stays that way.
-void clif_slide(struct block_list *bl, int x, int y)
+static void clif_slide(struct block_list *bl, int x, int y)
{
unsigned char buf[10];
nullpo_retv(bl);
@@ -8716,40 +9447,65 @@ void clif_slide(struct block_list *bl, int x, int y)
/// Public chat message (ZC_NOTIFY_CHAT). lordalfa/Skotlex - used by @me as well
/// 008d <packet len>.W <id>.L <message>.?B
-void clif_disp_overhead(struct block_list *bl, const char *mes)
+static void clif_disp_overhead(struct block_list *bl, const char *mes, enum send_target target, struct block_list *target_bl)
{
- unsigned char buf[256]; //This should be more than sufficient, the theoretical max is CHAT_SIZE + 8 (pads and extra inserted crap)
+ char buf[CHAT_SIZE_MAX + (int)sizeof(struct PACKET_ZC_NOTIFY_CHAT)];
+ int max_len = CHAT_SIZE_MAX - (int)sizeof(struct PACKET_ZC_NOTIFY_CHAT);
+ struct PACKET_ZC_NOTIFY_CHAT *p = (struct PACKET_ZC_NOTIFY_CHAT *)&buf;
int mes_len;
nullpo_retv(bl);
nullpo_retv(mes);
- mes_len = (int)strlen(mes)+1; //Account for \0
- if (mes_len > (int)sizeof(buf)-8) {
- ShowError("clif_disp_overhead: Message too long (length %d)\n", mes_len);
- mes_len = sizeof(buf)-8; //Trunk it to avoid problems.
+ mes_len = (int)strlen(mes) + 1; //Account for \0
+ if (mes_len > max_len) {
+ ShowError("clif_disp_overhead: Truncated message '%s' (len=%d, max=%d).\n", mes, mes_len, max_len);
+ mes_len = max_len; //Trunk it to avoid problems.
}
+
// send message to others
- WBUFW(buf,0) = 0x8d;
- WBUFW(buf,2) = mes_len + 8; // len of message + 8 (command+len+id)
- WBUFL(buf,4) = bl->id;
- safestrncpy(WBUFP(buf,8), mes, mes_len);
- clif->send(buf, WBUFW(buf,2), bl, AREA_CHAT_WOC);
+ p->PacketType = 0x8d;
+ p->PacketLength = mes_len + (int)sizeof(struct PACKET_ZC_NOTIFY_CHAT); // len of message + 8 (command+len+id)
+ p->GID = bl->id;
+ safestrncpy(p->Message, mes, mes_len);
+ if (target == SELF && target_bl != NULL) {
+ clif->send(p, p->PacketLength, target_bl, SELF);
+ } else {
+ clif->send(p, p->PacketLength, bl, AREA_CHAT_WOC);
- // send back message to the speaker
- if (bl->type == BL_PC) {
- WBUFW(buf,0) = 0x8e;
- WBUFW(buf, 2) = mes_len + 4;
- safestrncpy(WBUFP(buf,4), mes, mes_len);
- clif->send(buf, WBUFW(buf,2), bl, SELF);
+ // send back message to the speaker
+ if (bl->type == BL_PC)
+ clif->notify_playerchat(bl, mes);
+ }
+}
+
+static void clif_notify_playerchat(struct block_list *bl, const char *mes)
+{
+ char buf[CHAT_SIZE_MAX + (int)sizeof(struct PACKET_ZC_NOTIFY_PLAYERCHAT)];
+ int max_len = CHAT_SIZE_MAX - (int)sizeof(struct PACKET_ZC_NOTIFY_PLAYERCHAT);
+ struct PACKET_ZC_NOTIFY_PLAYERCHAT *p = (struct PACKET_ZC_NOTIFY_PLAYERCHAT *)&buf;
+ int mes_len;
+
+ nullpo_retv(bl);
+ nullpo_retv(mes);
+
+ mes_len = (int)strlen(mes) + 1; // Account for \0
+ if (mes_len > max_len) {
+ ShowError("clif_notify_playerchat: Truncated message '%s' (len=%d, max=%d).\n", mes, mes_len, max_len);
+ mes_len = max_len; // Truncate to avoid problems.
}
+
+ p->PacketType = 0x8e;
+ p->PacketLength = mes_len + (int)sizeof(struct PACKET_ZC_NOTIFY_PLAYERCHAT);
+ safestrncpy(p->Message, mes, mes_len);
+ clif->send(p, p->PacketLength, bl, SELF);
}
/*==========================
* Minimap fix [Kevin]
* Remove dot from minimap
*--------------------------*/
-void clif_party_xy_remove(struct map_session_data *sd)
+static void clif_party_xy_remove(struct map_session_data *sd)
{
unsigned char buf[16];
nullpo_retv(sd);
@@ -8775,7 +9531,7 @@ void clif_party_xy_remove(struct map_session_data *sd)
/// 0x20 = HIT/Flee +50 (PA_GOSPEL)
/// 0x28 = Full strip failed because of coating (ST_FULLSTRIP)
/// ? = nothing
-void clif_gospel_info(struct map_session_data *sd, int type)
+static void clif_gospel_info(struct map_session_data *sd, int type)
{
int fd;
@@ -8816,7 +9572,7 @@ void clif_gospel_info(struct map_session_data *sd, int type)
/// 22 = [Collector Rank] Target Item : <monster_id used as item id>
/// 30 = [Sun, Moon and Stars Angel] Designed places and monsters have been reset.
/// 40 = Target HP : <monster_id used as HP>
-void clif_starskill(struct map_session_data* sd, const char* mapname, int monster_id, unsigned char star, unsigned char result)
+static void clif_starskill(struct map_session_data *sd, const char *mapname, int monster_id, unsigned char star, unsigned char result)
{
int fd;
@@ -8837,7 +9593,7 @@ void clif_starskill(struct map_session_data* sd, const char* mapname, int monste
* Info about Star Gladiator save map [Komurka]
* type: 1: Information, 0: Map registered
*------------------------------------------*/
-void clif_feel_info(struct map_session_data* sd, unsigned char feel_level, unsigned char type)
+static void clif_feel_info(struct map_session_data *sd, unsigned char feel_level, unsigned char type)
{
char mapname[MAP_NAME_LENGTH_EXT];
@@ -8851,7 +9607,7 @@ void clif_feel_info(struct map_session_data* sd, unsigned char feel_level, unsig
* Info about Star Gladiator hate mob [Komurka]
* type: 1: Register mob, 0: Information.
*------------------------------------------*/
-void clif_hate_info(struct map_session_data *sd, unsigned char hate_level,int class_, unsigned char type)
+static void clif_hate_info(struct map_session_data *sd, unsigned char hate_level, int class_, unsigned char type)
{
if( pc->db_checkid(class_) ) {
clif->starskill(sd, pc->job_name(class_), class_, hate_level, type ? 10 : 11);
@@ -8865,7 +9621,7 @@ void clif_hate_info(struct map_session_data *sd, unsigned char hate_level,int cl
/*==========================================
* Info about TaeKwon Do TK_MISSION mob [Skotlex]
*------------------------------------------*/
-void clif_mission_info(struct map_session_data *sd, int mob_id, unsigned char progress)
+static void clif_mission_info(struct map_session_data *sd, int mob_id, unsigned char progress)
{
clif->starskill(sd, mob->db(mob_id)->jname, mob_id, progress, 20);
}
@@ -8873,19 +9629,20 @@ void clif_mission_info(struct map_session_data *sd, int mob_id, unsigned char pr
/*==========================================
* Feel/Hate reset (thanks to Rayce) [Skotlex]
*------------------------------------------*/
-void clif_feel_hate_reset(struct map_session_data *sd)
+static void clif_feel_hate_reset(struct map_session_data *sd)
{
clif->starskill(sd, "", 0, 0, 30);
}
-/// Equip window (un)tick ack (ZC_CONFIG).
+/// Send configurations (ZC_CONFIG).
/// 02d9 <type>.L <value>.L
/// type:
/// 0 = open equip window
+/// 3 = homunculus autofeeding
/// value:
/// 0 = disabled
/// 1 = enabled
-void clif_equiptickack(struct map_session_data* sd, int flag)
+static void clif_zc_config(struct map_session_data *sd, enum CZ_CONFIG type, int flag)
{
int fd;
nullpo_retv(sd);
@@ -8893,7 +9650,7 @@ void clif_equiptickack(struct map_session_data* sd, int flag)
WFIFOHEAD(fd, packet_len(0x2d9));
WFIFOW(fd, 0) = 0x2d9;
- WFIFOL(fd, 2) = 0;
+ WFIFOL(fd, 2) = type;
WFIFOL(fd, 6) = flag;
WFIFOSET(fd, packet_len(0x2d9));
}
@@ -8903,7 +9660,7 @@ void clif_equiptickack(struct map_session_data* sd, int flag)
/// open equip window:
/// 0 = disabled
/// 1 = enabled
-void clif_equpcheckbox(struct map_session_data* sd)
+static void clif_equpcheckbox(struct map_session_data *sd)
{
int fd;
nullpo_retv(sd);
@@ -8920,7 +9677,8 @@ void clif_equpcheckbox(struct map_session_data* sd)
/// 02d7 <packet len>.W <name>.24B <class>.W <hairstyle>.W <bottom-viewid>.W <mid-viewid>.W <up-viewid>.W <haircolor>.W <cloth-dye>.W <gender>.B {equip item}.28B* (ZC_EQUIPWIN_MICROSCOPE, PACKETVER >= 20100629)
/// 0859 <packet len>.W <name>.24B <class>.W <hairstyle>.W <bottom-viewid>.W <mid-viewid>.W <up-viewid>.W <haircolor>.W <cloth-dye>.W <gender>.B {equip item}.28B* (ZC_EQUIPWIN_MICROSCOPE2, PACKETVER >= 20101124)
/// 0859 <packet len>.W <name>.24B <class>.W <hairstyle>.W <bottom-viewid>.W <mid-viewid>.W <up-viewid>.W <robe>.W <haircolor>.W <cloth-dye>.W <gender>.B {equip item}.28B* (ZC_EQUIPWIN_MICROSCOPE2, PACKETVER >= 20110111)
-void clif_viewequip_ack(struct map_session_data* sd, struct map_session_data* tsd) {
+static void clif_viewequip_ack(struct map_session_data *sd, struct map_session_data *tsd)
+{
int i, equip = 0;
nullpo_retv(sd);
@@ -8951,6 +9709,9 @@ void clif_viewequip_ack(struct map_session_data* sd, struct map_session_data* ts
#endif
viewequip_list.headpalette = tsd->vd.hair_color;
viewequip_list.bodypalette = tsd->vd.cloth_color;
+#if PACKETVER_MAIN_NUM >= 20180801 || PACKETVER_RE_NUM >= 20180801 || PACKETVER_ZERO_NUM >= 20180808
+ viewequip_list.body2 = tsd->vd.body_style;
+#endif
viewequip_list.sex = tsd->vd.sex;
clif->send(&viewequip_list, viewequip_list.PacketLength, &sd->bl, SELF);
@@ -8964,7 +9725,7 @@ void clif_viewequip_ack(struct map_session_data* sd, struct map_session_data* ts
* @param sd The target character.
* @param msg_id msgstringtable message index, 0-based (@see enum clif_messages)
*/
-void clif_msgtable(struct map_session_data* sd, unsigned short msg_id)
+static void clif_msgtable(struct map_session_data *sd, enum clif_messages msg_id)
{
int fd;
nullpo_retv(sd);
@@ -8985,7 +9746,7 @@ void clif_msgtable(struct map_session_data* sd, unsigned short msg_id)
* @param msg_id msgstringtable message index, 0-based (@see enum clif_messages)
* @param value The value to fill %d.
*/
-void clif_msgtable_num(struct map_session_data *sd, unsigned short msg_id, int value)
+static void clif_msgtable_num(struct map_session_data *sd, enum clif_messages msg_id, int value)
{
#if PACKETVER >= 20090805
int fd;
@@ -9012,7 +9773,7 @@ void clif_msgtable_num(struct map_session_data *sd, unsigned short msg_id, int v
* @param skill_id ID of the skill to display.
* @param msg_id msgstringtable message index, 0-based (@see enum clif_messages)
*/
-void clif_msgtable_skill(struct map_session_data* sd, uint16 skill_id, int msg_id)
+static void clif_msgtable_skill(struct map_session_data *sd, uint16 skill_id, enum clif_messages msg_id)
{
int fd;
@@ -9027,6 +9788,88 @@ void clif_msgtable_skill(struct map_session_data* sd, uint16 skill_id, int msg_i
}
/**
+ * Displays a format string from msgstringtable.txt with a %s value (ZC_FORMATSTRING_MSG).
+ *
+ * @param sd The target character.
+ * @param msg_id msgstringtable message index, 0-based (@see enum clif_messages)
+ * @param value The value to fill %s.
+ */
+static void clif_msgtable_str(struct map_session_data *sd, enum clif_messages msg_id, const char *value)
+{
+ int message_len;
+ int len;
+ struct PACKET_ZC_FORMATSTRING_MSG *p;
+
+ nullpo_retv(sd);
+ nullpo_retv(value);
+
+ message_len = (int)strlen(value) + 1;
+ len = sizeof(*p) + message_len + 1;
+
+ p = (struct PACKET_ZC_FORMATSTRING_MSG *)aMalloc(len);
+ p->PacketType = 0x2c2;
+ p->PacketLength = len;
+ p->MessageId = msg_id;
+ safestrncpy(p->MessageString, value, message_len);
+ p->MessageString[message_len] = 0;
+
+ clif->send(p, p->PacketLength, &sd->bl, SELF);
+ aFree(p);
+}
+
+/**
+ * Displays a format string from msgstringtable.txt with a %s value and color (ZC_FORMATSTRING_MSG).
+ *
+ * @param sd The target character.
+ * @param msg_id msgstringtable message index, 0-based (@see enum clif_messages)
+ * @param value The value to fill %s.
+ * @param color The color to use
+ */
+static void clif_msgtable_str_color(struct map_session_data *sd, enum clif_messages msg_id, const char *value, uint32 color)
+{
+#if PACKETVER >= 20160330
+ nullpo_retv(sd);
+ nullpo_retv(value);
+
+ int message_len = (int)strlen(value) + 1;
+ const int len = sizeof(struct PACKET_ZC_FORMATSTRING_MSG_COLOR) + message_len + 1;
+ struct PACKET_ZC_FORMATSTRING_MSG_COLOR *p = (struct PACKET_ZC_FORMATSTRING_MSG_COLOR *)aMalloc(len);
+
+ p->PacketType = 0xa6f;
+ p->PacketLength = len;
+ p->messageId = msg_id;
+#if PACKETVER >= 20160406
+ p->color = color;
+#endif
+ safestrncpy(p->messageString, value, message_len);
+ p->messageString[message_len] = 0;
+
+ clif->send(p, p->PacketLength, &sd->bl, SELF);
+ aFree(p);
+#endif
+}
+
+/**
+ * Displays a format string from msgstringtable.txt with a color (ZC_MSG_COLOR).
+ *
+ * @param sd The target character.
+ * @param msg_id msgstringtable message index, 0-based (@see enum clif_messages)
+ * @param color The color to use
+ */
+static void clif_msgtable_color(struct map_session_data *sd, enum clif_messages msg_id, uint32 color)
+{
+ struct PACKET_ZC_MSG_COLOR p;
+
+ nullpo_retv(sd);
+
+ p.PacketType = 0x9cd;
+ p.MessageId = msg_id;
+ p.MessageColor = RGB2BGR(color);
+
+ clif->send(&p, sizeof(p), &sd->bl, SELF);
+}
+
+/**
* Validates and processes a global/guild/party message packet.
*
* @param[in] sd The source character.
@@ -9038,7 +9881,7 @@ void clif_msgtable_skill(struct map_session_data* sd, uint16 skill_id, int msg_i
* @retval NULL if the validation failed, the messages was a command or the
* character can't send chat messages. out_buf shan't be used.
*/
-const char *clif_process_chat_message(struct map_session_data *sd, const struct packet_chat_message *packet, char *out_buf, int out_buflen)
+static const char *clif_process_chat_message(struct map_session_data *sd, const struct packet_chat_message *packet, char *out_buf, int out_buflen)
{
const char *srcname = NULL, *srcmessage = NULL, *message = NULL;
int textlen = 0, namelen = 0, messagelen = 0;
@@ -9109,7 +9952,7 @@ const char *clif_process_chat_message(struct map_session_data *sd, const struct
* character can't send chat messages. out_name and out_message
* shan't be used.
*/
-bool clif_process_whisper_message(struct map_session_data *sd, const struct packet_whisper_message *packet, char *out_name, char *out_message, int out_messagelen)
+static bool clif_process_whisper_message(struct map_session_data *sd, const struct packet_whisper_message *packet, char *out_name, char *out_message, int out_messagelen)
{
int namelen = 0, messagelen = 0;
@@ -9160,7 +10003,7 @@ bool clif_process_whisper_message(struct map_session_data *sd, const struct pack
return true;
}
-void clif_channel_msg(struct channel_data *chan, struct map_session_data *sd, char *msg)
+static void clif_channel_msg(struct channel_data *chan, struct map_session_data *sd, char *msg)
{
struct DBIterator *iter;
struct map_session_data *user;
@@ -9195,7 +10038,7 @@ void clif_channel_msg(struct channel_data *chan, struct map_session_data *sd, ch
dbi_destroy(iter);
}
-void clif_channel_msg2(struct channel_data *chan, char *msg)
+static void clif_channel_msg2(struct channel_data *chan, char *msg)
{
struct DBIterator *iter;
struct map_session_data *user;
@@ -9225,6 +10068,22 @@ void clif_channel_msg2(struct channel_data *chan, char *msg)
dbi_destroy(iter);
}
+// TODO: [4144] same packet with login server. need somehow use one function for both servers
+// 3 - Rejected by server
+static void clif_auth_error(int fd, int errorCode)
+{
+ struct packet_ZC_REFUSE_LOGIN p;
+ const int len = sizeof(p);
+
+ p.PacketType = authError;
+ p.error_code = errorCode;
+ p.block_date[0] = '\0';
+
+ WFIFOHEAD(fd, len);
+ memcpy(WFIFOP(fd, 0), &p, len);
+ WFIFOSET(fd, len);
+}
+
// ------------
// clif_parse_*
// ------------
@@ -9234,7 +10093,8 @@ void clif_channel_msg2(struct channel_data *chan, char *msg)
/// 0072 <account id>.L <char id>.L <auth code>.L <client time>.L <gender>.B (CZ_ENTER)
/// 0436 <account id>.L <char id>.L <auth code>.L <client time>.L <gender>.B (CZ_ENTER2)
/// There are various variants of this packet, some of them have padding between fields.
-void clif_parse_WantToConnection(int fd, struct map_session_data* sd) {
+static void clif_parse_WantToConnection(int fd, struct map_session_data *sd)
+{
struct block_list* bl;
struct auth_node* node;
int cmd, account_id, char_id, login_id1, sex;
@@ -9263,10 +10123,7 @@ void clif_parse_WantToConnection(int fd, struct map_session_data* sd) {
bl = map->id2bl(account_id);
if(bl && bl->type != BL_PC) {
ShowError("clif_parse_WantToConnection: a non-player object already has id %d, please increase the starting account number\n", account_id);
- WFIFOHEAD(fd,packet_len(0x6a));
- WFIFOW(fd,0) = 0x6a;
- WFIFOB(fd,2) = 3; // Rejected by server
- WFIFOSET(fd,packet_len(0x6a));
+ clif->auth_error(fd, 3); // Rejected by server
sockt->eof(fd);
return;
@@ -9305,10 +10162,11 @@ void clif_parse_WantToConnection(int fd, struct map_session_data* sd) {
chrif->authreq(sd,false);
}
-void clif_parse_LoadEndAck(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_LoadEndAck(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Notification from the client, that it has finished map loading and is about to display player's character (CZ_NOTIFY_ACTORINIT).
/// 007d
-void clif_parse_LoadEndAck(int fd, struct map_session_data *sd) {
+static void clif_parse_LoadEndAck(int fd, struct map_session_data *sd)
+{
bool first_time = false;
if(sd->bl.prev != NULL)
@@ -9329,31 +10187,36 @@ void clif_parse_LoadEndAck(int fd, struct map_session_data *sd) {
sd->state.warping = 0;
sd->state.dialog = 0;/* reset when warping, client dialog will go missing */
- // look
+ // Character Looks
#if PACKETVER < 4
- clif->changelook(&sd->bl,LOOK_WEAPON,sd->status.weapon);
- clif->changelook(&sd->bl,LOOK_SHIELD,sd->status.shield);
+ clif->changelook(&sd->bl, LOOK_WEAPON, sd->status.look.weapon);
+ clif->changelook(&sd->bl, LOOK_SHIELD, sd->status.look.shield);
#else
clif->changelook(&sd->bl,LOOK_WEAPON,0);
#endif
if(sd->vd.cloth_color)
clif->refreshlook(&sd->bl,sd->bl.id,LOOK_CLOTHES_COLOR,sd->vd.cloth_color,SELF);
+
if (sd->vd.body_style)
clif->refreshlook(&sd->bl,sd->bl.id,LOOK_BODY2,sd->vd.body_style,SELF);
- // item
- clif->inventorylist(sd); // inventory list first, otherwise deleted items in pc->checkitem show up as 'unknown item'
- pc->checkitem(sd);
- // cart
+ // Send character inventory to the client.
+ // call this before pc->checkitem() so that the client isn't called to delete a non-existent item.
+ clif->inventoryList(sd);
+
+ // Send the cart inventory, counts & weight to the client.
if(pc_iscarton(sd)) {
- clif->cartlist(sd);
- clif->updatestatus(sd,SP_CARTINFO);
+ clif->cartList(sd);
+ clif->updatestatus(sd, SP_CARTINFO);
}
- // weight
- clif->updatestatus(sd,SP_WEIGHT);
- clif->updatestatus(sd,SP_MAXWEIGHT);
+ // Check for and delete unavailable/disabled items.
+ pc->checkitem(sd);
+
+ // Send the character's weight to the client.
+ clif->updatestatus(sd, SP_WEIGHT);
+ clif->updatestatus(sd, SP_MAXWEIGHT);
// guild
// (needs to go before clif_spawn() to show guild emblems correctly)
@@ -9548,6 +10411,13 @@ void clif_parse_LoadEndAck(int fd, struct map_session_data *sd) {
clif->partyinvitationstate(sd);
clif->equpcheckbox(sd);
#endif
+
+#if PACKETVER_MAIN_NUM >= 20171025 || PACKETVER_RE_NUM >= 20170920
+ if (sd->hd != NULL)
+ clif->zc_config(sd, CZ_CONFIG_HOMUNCULUS_AUTOFEEDING, sd->hd->homunculus.autofeed);
+ else
+ clif->zc_config(sd, CZ_CONFIG_HOMUNCULUS_AUTOFEEDING, false);
+#endif
if( (battle_config.bg_flee_penalty != 100 || battle_config.gvg_flee_penalty != 100)
&& (map_flag_gvg2(sd->state.pmap) || map_flag_gvg2(sd->bl.m)
|| map->list[sd->state.pmap].flag.battleground || map->list[sd->bl.m].flag.battleground) )
@@ -9652,16 +10522,11 @@ void clif_parse_LoadEndAck(int fd, struct map_session_data *sd) {
#if PACKETVER >= 20090218
{
int i;
- for(i = 0; i < map->list[sd->bl.m].qi_count; i++) {
- struct questinfo *qi = &map->list[sd->bl.m].qi_data[i];
- if( quest->check(sd, qi->quest_id, HAVEQUEST) == -1 ) {// Check if quest is not started
- if( qi->hasJob ) { // Check if quest is job-specific, check is user is said job class.
- if (sd->status.class == qi->job)
- clif->quest_show_event(sd, &qi->nd->bl, qi->icon, qi->color);
- } else {
- clif->quest_show_event(sd, &qi->nd->bl, qi->icon, qi->color);
- }
- }
+ for (i = 0; i < VECTOR_LENGTH(map->list[sd->bl.m].qi_data); i++) {
+ struct questinfo *qi = &VECTOR_INDEX(map->list[sd->bl.m].qi_data, i);
+
+ if (quest->questinfo_validate(sd, qi))
+ clif->quest_show_event(sd, &qi->nd->bl, qi->icon, qi->color);
}
}
#endif
@@ -9669,7 +10534,8 @@ void clif_parse_LoadEndAck(int fd, struct map_session_data *sd) {
/// Server's tick (ZC_NOTIFY_TIME).
/// 007f <time>.L
-void clif_notify_time(struct map_session_data* sd, int64 time) {
+static void clif_notify_time(struct map_session_data *sd, int64 time)
+{
int fd;
nullpo_retv(sd);
@@ -9681,12 +10547,12 @@ void clif_notify_time(struct map_session_data* sd, int64 time) {
WFIFOSET(fd,packet_len(0x7f));
}
-void clif_parse_TickSend(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_TickSend(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request for server's tick.
/// 007e <client tick>.L (CZ_REQUEST_TIME)
/// 0360 <client tick>.L (CZ_REQUEST_TIME2)
/// There are various variants of this packet, some of them have padding between fields.
-void clif_parse_TickSend(int fd, struct map_session_data *sd)
+static void clif_parse_TickSend(int fd, struct map_session_data *sd)
{
sd->client_tick = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]);
@@ -9698,7 +10564,8 @@ void clif_parse_TickSend(int fd, struct map_session_data *sd)
/// 07d9 { <is skill>.B <id>.L <count>.W }*36 (ZC_SHORTCUT_KEY_LIST_V2, PACKETVER >= 20090603)
/// 07d9 { <is skill>.B <id>.L <count>.W }*38 (ZC_SHORTCUT_KEY_LIST_V2, PACKETVER >= 20090617)
/// 0a00 <rotate>.B { <is skill>.B <id>.L <count>.W }*38 (ZC_SHORTCUT_KEY_LIST_V3, PACKETVER >= 20141022)
-void clif_hotkeys_send(struct map_session_data *sd) {
+static void clif_hotkeys_send(struct map_session_data *sd)
+{
#ifdef HOTKEY_SAVING
struct packet_hotkey p;
int i;
@@ -9716,17 +10583,18 @@ void clif_hotkeys_send(struct map_session_data *sd) {
#endif
}
-void clif_parse_HotkeyRowShift(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_HotkeyRowShift(int fd, struct map_session_data *sd)
+static void clif_parse_HotkeyRowShift(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_HotkeyRowShift(int fd, struct map_session_data *sd)
{
int cmd = RFIFOW(fd, 0);
sd->status.hotkey_rowshift = RFIFOB(fd, packet_db[cmd].pos[0]);
}
-void clif_parse_Hotkey(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Hotkey(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to update a position on the hotkey bar (CZ_SHORTCUT_KEY_CHANGE).
/// 02ba <index>.W <is skill>.B <id>.L <count>.W
-void clif_parse_Hotkey(int fd, struct map_session_data *sd) {
+static void clif_parse_Hotkey(int fd, struct map_session_data *sd)
+{
#ifdef HOTKEY_SAVING
unsigned short idx;
int cmd;
@@ -9743,8 +10611,7 @@ void clif_parse_Hotkey(int fd, struct map_session_data *sd) {
/// Displays cast-like progress bar (ZC_PROGRESS).
/// 02f0 <color>.L <time>.L
-/* TODO ZC_PROGRESS_ACTOR <account_id>.L */
-void clif_progressbar(struct map_session_data * sd, unsigned int color, unsigned int second)
+static void clif_progressbar(struct map_session_data *sd, unsigned int color, unsigned int second)
{
int fd;
@@ -9760,7 +10627,7 @@ void clif_progressbar(struct map_session_data * sd, unsigned int color, unsigned
/// Removes an ongoing progress bar (ZC_PROGRESS_CANCEL).
/// 02f2
-void clif_progressbar_abort(struct map_session_data * sd)
+static void clif_progressbar_abort(struct map_session_data *sd)
{
int fd;
@@ -9772,10 +10639,34 @@ void clif_progressbar_abort(struct map_session_data * sd)
WFIFOSET(fd,packet_len(0x2f2));
}
-void clif_parse_progressbar(int fd, struct map_session_data * sd) __attribute__((nonnull (2)));
+/**
+ * Displays cast-like progress bar on a unit.
+ * 09d1 <id>.L <color>.L <time>.L
+ *
+ * @param bl Source block list.
+ * @param color Message color (RGB format: 0xRRGGBB).
+ * @param time Time in seconds.
+ */
+static void clif_progressbar_unit(struct block_list *bl, uint32 color, uint32 time)
+{
+#if PACKETVER >= 20130821
+ struct ZC_PROGRESS_ACTOR p;
+ nullpo_retv(bl);
+
+ p.PacketType = progressbarunit;
+ p.GID = bl->id;
+ p.color = color;
+ p.time = time;
+ clif->send(&p, sizeof(p), bl, AREA);
+#else
+ ShowWarning("clif_progressbar_unit: Using progressbar with units available for PACKETVER >= 20130821 only.");
+#endif
+}
+
+static void clif_parse_progressbar(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Notification from the client, that the progress bar has reached 100% (CZ_PROGRESS).
/// 02f1
-void clif_parse_progressbar(int fd, struct map_session_data * sd)
+static void clif_parse_progressbar(int fd, struct map_session_data *sd)
{
int npc_id = sd->progressbar.npc_id;
@@ -9786,12 +10677,12 @@ void clif_parse_progressbar(int fd, struct map_session_data * sd)
npc->scriptcont(sd, npc_id, false);
}
-void clif_parse_WalkToXY(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_WalkToXY(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to walk to a certain position on the current map.
/// 0085 <dest>.3B (CZ_REQUEST_MOVE)
/// 035f <dest>.3B (CZ_REQUEST_MOVE2)
/// There are various variants of this packet, some of them have padding between fields.
-void clif_parse_WalkToXY(int fd, struct map_session_data *sd)
+static void clif_parse_WalkToXY(int fd, struct map_session_data *sd)
{
short x, y;
@@ -9826,7 +10717,7 @@ void clif_parse_WalkToXY(int fd, struct map_session_data *sd)
/// 0 = disconnect (quit)
/// 1 = cannot disconnect (wait 10 seconds)
/// ? = ignored
-void clif_disconnect_ack(struct map_session_data* sd, short result)
+static void clif_disconnect_ack(struct map_session_data *sd, short result)
{
int fd;
@@ -9839,12 +10730,12 @@ void clif_disconnect_ack(struct map_session_data* sd, short result)
WFIFOSET(fd,packet_len(0x18b));
}
-void clif_parse_QuitGame(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_QuitGame(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to disconnect from server (CZ_REQ_DISCONNECT).
/// 018a <type>.W
/// type:
/// 0 = quit
-void clif_parse_QuitGame(int fd, struct map_session_data *sd)
+static void clif_parse_QuitGame(int fd, struct map_session_data *sd)
{
/* Rovert's prevent logout option fixed [Valaris] */
if (!sd->sc.data[SC_CLOAKING] && !sd->sc.data[SC_HIDING] && !sd->sc.data[SC_CHASEWALK] && !sd->sc.data[SC_CLOAKINGEXCEED] && !sd->sc.data[SC__INVISIBILITY] && !sd->sc.data[SC_SUHIDE] &&
@@ -9856,12 +10747,13 @@ void clif_parse_QuitGame(int fd, struct map_session_data *sd)
}
}
-void clif_parse_GetCharNameRequest(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GetCharNameRequest(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Requesting unit's name.
/// 0094 <id>.L (CZ_REQNAME)
/// 0368 <id>.L (CZ_REQNAME2)
/// There are various variants of this packet, some of them have padding between fields.
-void clif_parse_GetCharNameRequest(int fd, struct map_session_data *sd) {
+static void clif_parse_GetCharNameRequest(int fd, struct map_session_data *sd)
+{
int id = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]);
struct block_list* bl;
//struct status_change *sc;
@@ -9894,7 +10786,8 @@ void clif_parse_GetCharNameRequest(int fd, struct map_session_data *sd) {
clif->charnameack(fd, bl);
}
-int clif_undisguise_timer(int tid, int64 tick, int id, intptr_t data) {
+static int clif_undisguise_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data * sd;
if( (sd = map->id2sd(id)) ) {
sd->fontcolor_tid = INVALID_TIMER;
@@ -9916,8 +10809,8 @@ int clif_undisguise_timer(int tid, int64 tick, int id, intptr_t data) {
* @param fd The incoming file descriptor.
* @param sd The related character.
*/
-void clif_parse_GlobalMessage(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_GlobalMessage(int fd, struct map_session_data *sd)
+static void clif_parse_GlobalMessage(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GlobalMessage(int fd, struct map_session_data *sd)
{
const struct packet_chat_message *packet = NULL;
char full_message[CHAT_SIZE_MAX + NAME_LENGTH + 3 + 1];
@@ -10008,11 +10901,11 @@ void clif_parse_GlobalMessage(int fd, struct map_session_data *sd)
map->foreachinrange(npc_chat->sub, &sd->bl, AREA_SIZE, BL_NPC, full_message, strlen(full_message), &sd->bl);
}
-void clif_parse_MapMove(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_MapMove(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /mm /mapmove (as @rura GM command) (CZ_MOVETO_MAP).
/// Request to warp to a map on given coordinates.
/// 0140 <map name>.16B <x>.W <y>.W
-void clif_parse_MapMove(int fd, struct map_session_data *sd)
+static void clif_parse_MapMove(int fd, struct map_session_data *sd)
{
char command[MAP_NAME_LENGTH_EXT+25];
char map_name[MAP_NAME_LENGTH_EXT];
@@ -10037,7 +10930,7 @@ void clif_parse_MapMove(int fd, struct map_session_data *sd)
/// 5 = southeast
/// 6 = east
/// 7 = northeast
-void clif_changed_dir(struct block_list *bl, enum send_target target)
+static void clif_changed_dir(struct block_list *bl, enum send_target target)
{
unsigned char buf[64];
@@ -10056,12 +10949,12 @@ void clif_changed_dir(struct block_list *bl, enum send_target target)
}
}
-void clif_parse_ChangeDir(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_ChangeDir(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to change own body and head direction.
/// 009b <head dir>.W <dir>.B (CZ_CHANGE_DIRECTION)
/// 0361 <head dir>.W <dir>.B (CZ_CHANGE_DIRECTION2)
/// There are various variants of this packet, some of them have padding between fields.
-void clif_parse_ChangeDir(int fd, struct map_session_data *sd)
+static void clif_parse_ChangeDir(int fd, struct map_session_data *sd)
{
unsigned char headdir, dir;
@@ -10072,24 +10965,24 @@ void clif_parse_ChangeDir(int fd, struct map_session_data *sd)
clif->changed_dir(&sd->bl, AREA_WOS);
}
-void clif_parse_Emotion(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Emotion(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to show an emotion (CZ_REQ_EMOTION).
/// 00bf <type>.B
/// type:
/// @see enum emotion_type
-void clif_parse_Emotion(int fd, struct map_session_data *sd)
+static void clif_parse_Emotion(int fd, struct map_session_data *sd)
{
int emoticon = RFIFOB(fd,packet_db[RFIFOW(fd,0)].pos[0]);
if (battle_config.basic_skill_check == 0 || pc->check_basicskill(sd, 2)) {
if (emoticon == E_MUTE) {// prevent use of the mute emote [Valaris]
- clif->skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 1);
+ clif->skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 1, 0);
return;
}
// fix flood of emotion icon (ro-proxy): flood only the hacker player
if (sd->emotionlasttime + 1 >= time(NULL)) { // not more than 1 per second
sd->emotionlasttime = time(NULL);
- clif->skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 1);
+ clif->skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 1, 0);
return;
}
sd->emotionlasttime = time(NULL);
@@ -10102,12 +10995,13 @@ void clif_parse_Emotion(int fd, struct map_session_data *sd)
clif->emotion(&sd->bl, emoticon);
} else
- clif->skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 1);
+ clif->skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 1, 0);
}
/// Amount of currently online players, reply to /w /who (ZC_USER_COUNT).
/// 00c2 <count>.L
-void clif_user_count(struct map_session_data* sd, int count) {
+static void clif_user_count(struct map_session_data *sd, int count)
+{
int fd;
nullpo_retv(sd);
@@ -10119,15 +11013,16 @@ void clif_user_count(struct map_session_data* sd, int count) {
WFIFOSET(fd,packet_len(0xc2));
}
-void clif_parse_HowManyConnections(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_HowManyConnections(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /w /who (CZ_REQ_USER_COUNT).
/// Request to display amount of currently connected players.
/// 00c1
-void clif_parse_HowManyConnections(int fd, struct map_session_data *sd) {
+static void clif_parse_HowManyConnections(int fd, struct map_session_data *sd)
+{
clif->user_count(sd, map->getusers());
}
-void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type, int target_id, int64 tick)
+static void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type, int target_id, int64 tick)
{
nullpo_retv(sd);
if (pc_isdead(sd)) {
@@ -10171,7 +11066,7 @@ void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type,
if (!battle_config.sdelay_attack_enable && pc->checkskill(sd, SA_FREECAST) <= 0 && (skill->get_inf2(sd->ud.skill_id) & (INF2_FREE_CAST_REDUCED | INF2_FREE_CAST_NORMAL)) == 0) {
if (DIFF_TICK(tick, sd->ud.canact_tick) < 0) {
- clif->skill_fail(sd, 1, USESKILL_FAIL_SKILLINTERVAL, 0);
+ clif->skill_fail(sd, 1, USESKILL_FAIL_SKILLINTERVAL, 0, 0);
return;
}
}
@@ -10183,7 +11078,7 @@ void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type,
break;
case 0x02: // sitdown
if (battle_config.basic_skill_check && !pc->check_basicskill(sd, 3)) {
- clif->skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 2);
+ clif->skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 2, 0);
break;
}
@@ -10196,6 +11091,9 @@ void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type,
return;
}
+ if (sd->block_action.sitstand) // *pcblock script command
+ break;
+
if (sd->ud.skilltimer != INVALID_TIMER || (sd->sc.opt1 && sd->sc.opt1 != OPT1_BURNING ))
break;
@@ -10223,6 +11121,9 @@ void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type,
return;
}
+ if (sd->block_action.sitstand) // *pcblock script command
+ break;
+
pc->update_idle_time(sd, BCIDLE_SIT);
pc->setstand(sd);
@@ -10232,7 +11133,7 @@ void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type,
}
}
-void clif_parse_ActionRequest(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_ActionRequest(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request for an action.
/// 0089 <target id>.L <action>.B (CZ_REQUEST_ACT)
/// 0437 <target id>.L <action>.B (CZ_REQUEST_ACT2)
@@ -10244,7 +11145,7 @@ void clif_parse_ActionRequest(int fd, struct map_session_data *sd) __attribute__
/// 7 = continuous attack
/// 12 = (touch skill?)
/// There are various variants of this packet, some of them have padding between fields.
-void clif_parse_ActionRequest(int fd, struct map_session_data *sd)
+static void clif_parse_ActionRequest(int fd, struct map_session_data *sd)
{
clif->pActionRequest_sub(sd,
RFIFOB(fd,packet_db[RFIFOW(fd,0)].pos[1]),
@@ -10253,13 +11154,14 @@ void clif_parse_ActionRequest(int fd, struct map_session_data *sd)
);
}
-void clif_parse_Restart(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Restart(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Response to the death/system menu (CZ_RESTART).
/// 00b2 <type>.B
/// type:
/// 0 = restart (respawn)
/// 1 = char-select (disconnect)
-void clif_parse_Restart(int fd, struct map_session_data *sd) {
+static void clif_parse_Restart(int fd, struct map_session_data *sd)
+{
switch(RFIFOB(fd,2)) {
case 0x00:
pc->respawn(sd,CLR_OUTSIGHT);
@@ -10289,8 +11191,8 @@ void clif_parse_Restart(int fd, struct map_session_data *sd) {
* @param fd The incoming file descriptor.
* @param sd The related character.
*/
-void clif_parse_WisMessage(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_WisMessage(int fd, struct map_session_data* sd)
+static void clif_parse_WisMessage(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_WisMessage(int fd, struct map_session_data *sd)
{
struct map_session_data* dstsd;
int i;
@@ -10308,7 +11210,7 @@ void clif_parse_WisMessage(int fd, struct map_session_data* sd)
// Lordalfa - Paperboy - To whisper NPC commands //
//-------------------------------------------------------//
if (target[0] && (strncasecmp(target,"NPC:",4) == 0) && (strlen(target) > 4)) {
- const char *str = target+4; //Skip the NPC: string part.
+ char *str = target + 4; // Skip the NPC: string part.
struct npc_data *nd;
if ((nd = npc->name2id(str))) {
char split_data[NUM_WHISPER_VAR][CHAT_SIZE_MAX];
@@ -10348,8 +11250,8 @@ void clif_parse_WisMessage(int fd, struct map_session_data* sd)
if (chan) {
int k;
- ARR_FIND(0, sd->channel_count, k, sd->channels[k] == chan);
- if (k < sd->channel_count || channel->join(chan, sd, "", true) == HCS_STATUS_OK) {
+ ARR_FIND(0, VECTOR_LENGTH(sd->channels), k, VECTOR_INDEX(sd->channels, k) == chan);
+ if (k < VECTOR_LENGTH(sd->channels) || channel->join(chan, sd, "", true) == HCS_STATUS_OK) {
channel->send(chan,sd,message);
} else {
clif->message(fd, msg_fd(fd,1402)); //You're not in that channel, type '@join <#channel_name>'
@@ -10407,11 +11309,11 @@ void clif_parse_WisMessage(int fd, struct map_session_data* sd)
clif->wis_message(dstsd->fd, sd->status.name, message, (int)strlen(message));
}
-void clif_parse_Broadcast(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Broadcast(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /b /nb (CZ_BROADCAST).
/// Request to broadcast a message on whole server.
/// 0099 <packet len>.W <text>.?B 00
-void clif_parse_Broadcast(int fd, struct map_session_data *sd)
+static void clif_parse_Broadcast(int fd, struct map_session_data *sd)
{
const char commandname[] = "kami";
char command[sizeof commandname + 2 + CHAT_SIZE_MAX] = ""; // '@' command + ' ' + message + NUL
@@ -10430,12 +11332,12 @@ void clif_parse_Broadcast(int fd, struct map_session_data *sd)
atcommand->exec(fd, sd, command, true);
}
-void clif_parse_TakeItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_TakeItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to pick up an item.
/// 009f <id>.L (CZ_ITEM_PICKUP)
/// 0362 <id>.L (CZ_ITEM_PICKUP2)
/// There are various variants of this packet, some of them have padding between fields.
-void clif_parse_TakeItem(int fd, struct map_session_data *sd)
+static void clif_parse_TakeItem(int fd, struct map_session_data *sd)
{
int map_object_id = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]);
struct flooritem_data *fitem = map->id2fi(map_object_id);
@@ -10472,12 +11374,12 @@ void clif_parse_TakeItem(int fd, struct map_session_data *sd)
clif->additem(sd,0,0,6);
}
-void clif_parse_DropItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_DropItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to drop an item.
/// 00a2 <index>.W <amount>.W (CZ_ITEM_THROW)
/// 0363 <index>.W <amount>.W (CZ_ITEM_THROW2)
/// There are various variants of this packet, some of them have padding between fields.
-void clif_parse_DropItem(int fd, struct map_session_data *sd)
+static void clif_parse_DropItem(int fd, struct map_session_data *sd)
{
int item_index = RFIFOW(fd,packet_db[RFIFOW(fd,0)].pos[0])-2;
int item_amount = RFIFOW(fd,packet_db[RFIFOW(fd,0)].pos[1]);
@@ -10508,12 +11410,12 @@ void clif_parse_DropItem(int fd, struct map_session_data *sd)
clif->dropitem(sd, item_index, 0);
}
-void clif_parse_UseItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_UseItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to use an item.
/// 00a7 <index>.W <account id>.L (CZ_USE_ITEM)
/// 0439 <index>.W <account id>.L (CZ_USE_ITEM2)
/// There are various variants of this packet, some of them have padding between fields.
-void clif_parse_UseItem(int fd, struct map_session_data *sd)
+static void clif_parse_UseItem(int fd, struct map_session_data *sd)
{
int n;
@@ -10529,17 +11431,17 @@ void clif_parse_UseItem(int fd, struct map_session_data *sd)
pc->update_idle_time(sd, BCIDLE_USEITEM);
n = RFIFOW(fd,packet_db[RFIFOW(fd,0)].pos[0])-2;
- if (n < 0 || n >= MAX_INVENTORY)
+ if (n < 0 || n >= sd->status.inventorySize)
return;
if (!pc->useitem(sd,n))
clif->useitemack(sd,n,0,false); //Send an empty ack packet or the client gets stuck.
}
-void clif_parse_EquipItem(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_EquipItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to equip an item (CZ_REQ_WEAR_EQUIP).
/// 00a9 <index>.W <position>.W
/// 0998 <index>.W <position>.L
-void clif_parse_EquipItem(int fd,struct map_session_data *sd)
+static void clif_parse_EquipItem(int fd, struct map_session_data *sd)
{
const struct packet_equip_item *p = RP2PTR(fd);
int index = 0;
@@ -10550,7 +11452,7 @@ void clif_parse_EquipItem(int fd,struct map_session_data *sd)
}
index = p->index - 2;
- if (index >= MAX_INVENTORY)
+ if (index >= sd->status.inventorySize)
return; //Out of bounds check.
if( sd->npc_id ) {
@@ -10583,10 +11485,10 @@ void clif_parse_EquipItem(int fd,struct map_session_data *sd)
pc->equipitem(sd, index, p->wearLocation);
}
-void clif_parse_UnequipItem(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_UnequipItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to take off an equip (CZ_REQ_TAKEOFF_EQUIP).
/// 00ab <index>.W
-void clif_parse_UnequipItem(int fd,struct map_session_data *sd)
+static void clif_parse_UnequipItem(int fd, struct map_session_data *sd)
{
int index;
@@ -10610,12 +11512,12 @@ void clif_parse_UnequipItem(int fd,struct map_session_data *sd)
pc->unequipitem(sd,index, PCUNEQUIPITEM_RECALC);
}
-void clif_parse_NpcClicked(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_NpcClicked(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to start a conversation with an NPC (CZ_CONTACTNPC).
/// 0090 <id>.L <type>.B
/// type:
/// 1 = click
-void clif_parse_NpcClicked(int fd,struct map_session_data *sd)
+static void clif_parse_NpcClicked(int fd, struct map_session_data *sd)
{
struct block_list *bl;
@@ -10623,9 +11525,11 @@ void clif_parse_NpcClicked(int fd,struct map_session_data *sd)
clif->clearunit_area(&sd->bl,CLR_DEAD);
return;
}
- if( sd->npc_id || sd->state.workinprogress&2 ){
-#ifdef RENEWAL
- clif->msgtable(sd, MSG_NPC_WORK_IN_PROGRESS); // TODO look for the client date that has this message.
+ if (sd->npc_id || sd->state.workinprogress & 2) {
+#if PACKETVER >= 20110308
+ clif->msgtable(sd, MSG_BUSY);
+#else
+ clif->messagecolor_self(fd, COLOR_WHITE, msg_fd(fd, 48));
#endif
return;
}
@@ -10638,9 +11542,11 @@ void clif_parse_NpcClicked(int fd,struct map_session_data *sd)
clif->pActionRequest_sub(sd, 0x07, bl->id, timer->gettick());
break;
case BL_NPC:
- if( sd->ud.skill_id < RK_ENCHANTBLADE && sd->ud.skilltimer != INVALID_TIMER ) {// TODO: should only work with none 3rd job skills
-#ifdef RENEWAL
- clif->msgtable(sd, MSG_NPC_WORK_IN_PROGRESS);
+ if (sd->ud.skill_id < RK_ENCHANTBLADE && sd->ud.skilltimer != INVALID_TIMER) { // TODO: should only work with none 3rd job skills
+#if PACKETVER >= 20110308
+ clif->msgtable(sd, MSG_BUSY);
+#else
+ clif->messagecolor_self(fd, COLOR_WHITE, msg_fd(fd, 48));
#endif
break;
}
@@ -10650,13 +11556,13 @@ void clif_parse_NpcClicked(int fd,struct map_session_data *sd)
}
}
-void clif_parse_NpcBuySellSelected(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_NpcBuySellSelected(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Selection between buy/sell was made (CZ_ACK_SELECT_DEALTYPE).
/// 00c5 <id>.L <type>.B
/// type:
/// 0 = buy
/// 1 = sell
-void clif_parse_NpcBuySellSelected(int fd, struct map_session_data *sd)
+static void clif_parse_NpcBuySellSelected(int fd, struct map_session_data *sd)
{
if (sd->state.trading)
return;
@@ -10670,10 +11576,18 @@ void clif_parse_NpcBuySellSelected(int fd, struct map_session_data *sd)
/// 1 = "You do not have enough zeny."
/// 2 = "You are over your Weight Limit."
/// 3 = "Out of the maximum capacity, you have too many items."
-void clif_npc_buy_result(struct map_session_data* sd, unsigned char result) {
+/// 9 = "Amounts are exceeded the possession of the item is not available for purchase."
+/// 10 = "Props open-air store sales will be traded in RODEX"
+/// 11 = "The exchange failed."
+/// 12 = "The exchange was well done."
+/// 13 = "The item is already sold and out of stock."
+/// 14 = "There is not enough goods to exchange."
+static void clif_npc_buy_result(struct map_session_data *sd, unsigned char result)
+{
int fd;
nullpo_retv(sd);
+ pc->update_idle_time(sd, BCIDLE_SCRIPT);
fd = sd->fd;
WFIFOHEAD(fd,packet_len(0xca));
WFIFOW(fd,0) = 0xca;
@@ -10681,17 +11595,18 @@ void clif_npc_buy_result(struct map_session_data* sd, unsigned char result) {
WFIFOSET(fd,packet_len(0xca));
}
-void clif_parse_NpcBuyListSend(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_NpcBuyListSend(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to buy chosen items from npc shop (CZ_PC_PURCHASE_ITEMLIST).
/// 00c8 <packet len>.W { <amount>.W <name id>.W }*
-void clif_parse_NpcBuyListSend(int fd, struct map_session_data* sd)
+static void clif_parse_NpcBuyListSend(int fd, struct map_session_data *sd)
{
- int n = ((int)RFIFOW(fd,2)-4) / 4;
+ int n = ((int)RFIFOW(fd, 2) - sizeof(struct PACKET_CZ_PC_PURCHASE_ITEMLIST)) / sizeof(struct PACKET_CZ_PC_PURCHASE_ITEMLIST_sub);
int result;
+ const struct PACKET_CZ_PC_PURCHASE_ITEMLIST *p = RFIFOP(fd, 0);
Assert_retv(n >= 0);
- if( sd->state.trading || !sd->npc_shopid || pc_has_permission(sd,PC_PERM_DISABLE_STORE) ) {
+ if (sd->state.trading || !sd->npc_shopid || pc_has_permission(sd, PC_PERM_DISABLE_STORE)) {
result = 1;
} else {
struct itemlist item_list = { 0 };
@@ -10702,8 +11617,8 @@ void clif_parse_NpcBuyListSend(int fd, struct map_session_data* sd)
for (i = 0; i < n; i++) {
struct itemlist_entry entry = { 0 };
- entry.amount = RFIFOW(fd, 4 + 4 * i);
- entry.id = RFIFOW(fd, 4 + 4 * i + 2);
+ entry.amount = p->items[i].amount;
+ entry.id = p->items[i].itemId;
VECTOR_PUSH(item_list, entry);
}
@@ -10721,10 +11636,12 @@ void clif_parse_NpcBuyListSend(int fd, struct map_session_data* sd)
/// result:
/// 0 = "The deal has successfully completed."
/// 1 = "The deal has failed."
-void clif_npc_sell_result(struct map_session_data* sd, unsigned char result) {
+static void clif_npc_sell_result(struct map_session_data *sd, unsigned char result)
+{
int fd;
nullpo_retv(sd);
+ pc->update_idle_time(sd, BCIDLE_SCRIPT);
fd = sd->fd;
WFIFOHEAD(fd,packet_len(0xcb));
WFIFOW(fd,0) = 0xcb;
@@ -10732,10 +11649,10 @@ void clif_npc_sell_result(struct map_session_data* sd, unsigned char result) {
WFIFOSET(fd,packet_len(0xcb));
}
-void clif_parse_NpcSellListSend(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_NpcSellListSend(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to sell chosen items to npc shop (CZ_PC_SELL_ITEMLIST).
/// 00c9 <packet len>.W { <index>.W <amount>.W }*
-void clif_parse_NpcSellListSend(int fd,struct map_session_data *sd)
+static void clif_parse_NpcSellListSend(int fd, struct map_session_data *sd)
{
int fail=0,n;
@@ -10770,26 +11687,34 @@ void clif_parse_NpcSellListSend(int fd,struct map_session_data *sd)
clif->npc_sell_result(sd, fail);
}
-void clif_parse_CreateChatRoom(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_CreateChatRoom(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Chatroom creation request (CZ_CREATE_CHATROOM).
/// 00d5 <packet len>.W <limit>.W <type>.B <passwd>.8B <title>.?B
/// type:
/// 0 = private
/// 1 = public
-void clif_parse_CreateChatRoom(int fd, struct map_session_data* sd)
+static void clif_parse_CreateChatRoom(int fd, struct map_session_data *sd)
{
- int len = RFIFOW(fd,2)-15;
- int limit = RFIFOW(fd,4);
- bool pub = (RFIFOB(fd,6) != 0);
- const char *password = RFIFOP(fd,7); //not zero-terminated
- const char *title = RFIFOP(fd,15); // not zero-terminated
+ int len = (int)RFIFOW(fd, 2) - 15;
+ int limit;
+ bool pub;
+ const char *password; //not zero-terminated
+ const char *title; // not zero-terminated
char s_password[CHATROOM_PASS_SIZE];
char s_title[CHATROOM_TITLE_SIZE];
+ if (len < 1)
+ return;
+
+ limit = RFIFOW(fd, 4);
+ pub = (RFIFOB(fd, 6) != 0);
+ password = RFIFOP(fd, 7); //not zero-terminated
+ title = RFIFOP(fd, 15); // not zero-terminated
+
if (pc_ismuted(&sd->sc, MANNER_NOROOM))
return;
if(battle_config.basic_skill_check && !pc->check_basicskill(sd, 4)) {
- clif->skill_fail(sd,1,USESKILL_FAIL_LEVEL,3);
+ clif->skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 3, 0);
return;
}
if( npc->isnear(&sd->bl) ) {
@@ -10797,23 +11722,20 @@ void clif_parse_CreateChatRoom(int fd, struct map_session_data* sd)
//char output[150];
//sprintf(output, msg_txt(862), battle_config.min_npc_vendchat_distance); // "You're too close to a NPC, you must be at least %d cells away from any NPC."
//clif_displaymessage(sd->fd, output);
- clif->skill_fail(sd,1,USESKILL_FAIL_THERE_ARE_NPC_AROUND,0);
+ clif->skill_fail(sd, 1, USESKILL_FAIL_THERE_ARE_NPC_AROUND, 0, 0);
return;
}
- if( len <= 0 )
- return; // invalid input
-
safestrncpy(s_password, password, CHATROOM_PASS_SIZE);
safestrncpy(s_title, title, min(len+1,CHATROOM_TITLE_SIZE)); //NOTE: assumes that safestrncpy will not access the len+1'th byte
chat->create_pc_chat(sd, s_title, s_password, limit, pub);
}
-void clif_parse_ChatAddMember(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_ChatAddMember(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Chatroom join request (CZ_REQ_ENTER_ROOM).
/// 00d9 <chat ID>.L <passwd>.8B
-void clif_parse_ChatAddMember(int fd, struct map_session_data* sd)
+static void clif_parse_ChatAddMember(int fd, struct map_session_data *sd)
{
int chatid = RFIFOL(fd,2);
const char *password = RFIFOP(fd,6); // not zero-terminated
@@ -10821,24 +11743,29 @@ void clif_parse_ChatAddMember(int fd, struct map_session_data* sd)
chat->join(sd,chatid,password);
}
-void clif_parse_ChatRoomStatusChange(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_ChatRoomStatusChange(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Chatroom properties adjustment request (CZ_CHANGE_CHATROOM).
/// 00de <packet len>.W <limit>.W <type>.B <passwd>.8B <title>.?B
/// type:
/// 0 = private
/// 1 = public
-void clif_parse_ChatRoomStatusChange(int fd, struct map_session_data* sd)
+static void clif_parse_ChatRoomStatusChange(int fd, struct map_session_data *sd)
{
- int len = RFIFOW(fd,2)-15;
- int limit = RFIFOW(fd,4);
- bool pub = (RFIFOB(fd,6) != 0);
- const char *password = RFIFOP(fd,7); // not zero-terminated
- const char *title = RFIFOP(fd,15); // not zero-terminated
+ int len = (int)RFIFOW(fd, 2) - 15;
+ int limit;
+ bool pub;
+ const char *password; // not zero-terminated
+ const char *title; // not zero-terminated
char s_password[CHATROOM_PASS_SIZE];
char s_title[CHATROOM_TITLE_SIZE];
- if( len <= 0 )
- return; // invalid input
+ if (len < 1)
+ return;
+
+ limit = RFIFOW(fd, 4);
+ pub = (RFIFOB(fd, 6) != 0);
+ password = RFIFOP(fd, 7); // not zero-terminated
+ title = RFIFOP(fd, 15); // not zero-terminated
safestrncpy(s_password, password, CHATROOM_PASS_SIZE);
safestrncpy(s_title, title, min(len+1,CHATROOM_TITLE_SIZE)); //NOTE: assumes that safestrncpy will not access the len+1'th byte
@@ -10846,29 +11773,29 @@ void clif_parse_ChatRoomStatusChange(int fd, struct map_session_data* sd)
chat->change_status(sd, s_title, s_password, limit, pub);
}
-void clif_parse_ChangeChatOwner(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_ChangeChatOwner(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to change the chat room ownership (CZ_REQ_ROLE_CHANGE).
/// 00e0 <role>.L <nick>.24B
/// role:
/// 0 = owner
/// 1 = normal
-void clif_parse_ChangeChatOwner(int fd, struct map_session_data* sd)
+static void clif_parse_ChangeChatOwner(int fd, struct map_session_data *sd)
{
- chat->change_owner(sd, RFIFOP(fd,6));
+ chat->change_owner(sd, RFIFOP(fd,6)); // non null terminated
}
-void clif_parse_KickFromChat(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_KickFromChat(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to expel a player from chat room (CZ_REQ_EXPEL_MEMBER).
/// 00e2 <name>.24B
-void clif_parse_KickFromChat(int fd,struct map_session_data *sd)
+static void clif_parse_KickFromChat(int fd, struct map_session_data *sd)
{
- chat->kick(sd, RFIFOP(fd,2));
+ chat->kick(sd, RFIFOP(fd,2)); // non null terminated
}
-void clif_parse_ChatLeave(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_ChatLeave(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to leave the current chatroom (CZ_EXIT_ROOM).
/// 00e3
-void clif_parse_ChatLeave(int fd, struct map_session_data* sd)
+static void clif_parse_ChatLeave(int fd, struct map_session_data *sd)
{
chat->leave(sd, false);
}
@@ -10876,7 +11803,8 @@ void clif_parse_ChatLeave(int fd, struct map_session_data* sd)
//Handles notifying asker and rejecter of what has just occurred.
//Type is used to determine the correct msg_txt to use:
//0:
-void clif_noask_sub(struct map_session_data *src, struct map_session_data *target, int type) {
+static void clif_noask_sub(struct map_session_data *src, struct map_session_data *target, int type)
+{
const char* msg;
char output[256];
nullpo_retv(src);
@@ -10888,10 +11816,11 @@ void clif_noask_sub(struct map_session_data *src, struct map_session_data *targe
clif_disp_onlyself(target, output);
}
-void clif_parse_TradeRequest(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_TradeRequest(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to begin a trade (CZ_REQ_EXCHANGE_ITEM).
/// 00e4 <account id>.L
-void clif_parse_TradeRequest(int fd,struct map_session_data *sd) {
+static void clif_parse_TradeRequest(int fd, struct map_session_data *sd)
+{
struct map_session_data *t_sd;
t_sd = map->id2sd(RFIFOL(fd,2));
@@ -10906,28 +11835,28 @@ void clif_parse_TradeRequest(int fd,struct map_session_data *sd) {
}
if( battle_config.basic_skill_check && !pc->check_basicskill(sd, 1)) {
- clif->skill_fail(sd,1,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 0, 0);
return;
}
trade->request(sd,t_sd);
}
-void clif_parse_TradeAck(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_TradeAck(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to a trade request (CZ_ACK_EXCHANGE_ITEM).
/// 00e6 <result>.B
/// result:
/// 3 = accepted
/// 4 = rejected
-void clif_parse_TradeAck(int fd,struct map_session_data *sd)
+static void clif_parse_TradeAck(int fd, struct map_session_data *sd)
{
trade->ack(sd,RFIFOB(fd,2));
}
-void clif_parse_TradeAddItem(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_TradeAddItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to add an item to current trade (CZ_ADD_EXCHANGE_ITEM).
/// 00e8 <index>.W <amount>.L
-void clif_parse_TradeAddItem(int fd,struct map_session_data *sd)
+static void clif_parse_TradeAddItem(int fd, struct map_session_data *sd)
{
short index = RFIFOW(fd,2);
int amount = RFIFOL(fd,4);
@@ -10938,67 +11867,68 @@ void clif_parse_TradeAddItem(int fd,struct map_session_data *sd)
trade->additem(sd, index, (short)amount);
}
-void clif_parse_TradeOk(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_TradeOk(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to lock items in current trade (CZ_CONCLUDE_EXCHANGE_ITEM).
/// 00eb
-void clif_parse_TradeOk(int fd,struct map_session_data *sd)
+static void clif_parse_TradeOk(int fd, struct map_session_data *sd)
{
trade->ok(sd);
}
-void clif_parse_TradeCancel(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_TradeCancel(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to cancel current trade (CZ_CANCEL_EXCHANGE_ITEM).
/// 00ed
-void clif_parse_TradeCancel(int fd,struct map_session_data *sd)
+static void clif_parse_TradeCancel(int fd, struct map_session_data *sd)
{
trade->cancel(sd);
}
-void clif_parse_TradeCommit(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_TradeCommit(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to commit current trade (CZ_EXEC_EXCHANGE_ITEM).
/// 00ef
-void clif_parse_TradeCommit(int fd,struct map_session_data *sd)
+static void clif_parse_TradeCommit(int fd, struct map_session_data *sd)
{
trade->commit(sd);
}
-void clif_parse_StopAttack(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_StopAttack(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to stop chasing/attacking an unit (CZ_CANCEL_LOCKON).
/// 0118
-void clif_parse_StopAttack(int fd,struct map_session_data *sd)
+static void clif_parse_StopAttack(int fd, struct map_session_data *sd)
{
pc_stop_attack(sd);
}
-void clif_parse_PutItemToCart(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PutItemToCart(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to move an item from inventory to cart (CZ_MOVE_ITEM_FROM_BODY_TO_CART).
/// 0126 <index>.W <amount>.L
-void clif_parse_PutItemToCart(int fd,struct map_session_data *sd) {
+static void clif_parse_PutItemToCart(int fd, struct map_session_data *sd)
+{
int flag = 0;
if (pc_istrading(sd))
return;
if (!pc_iscarton(sd))
return;
if ( (flag = pc->putitemtocart(sd,RFIFOW(fd,2)-2,RFIFOL(fd,4))) ) {
- clif->dropitem(sd, RFIFOW(fd,2)-2,0);
+ clif->item_movefailed(sd, RFIFOW(fd,2)-2);
clif->cart_additem_ack(sd,flag == 1?0x0:0x1);
}
}
-void clif_parse_GetItemFromCart(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GetItemFromCart(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to move an item from cart to inventory (CZ_MOVE_ITEM_FROM_CART_TO_BODY).
/// 0127 <index>.W <amount>.L
-void clif_parse_GetItemFromCart(int fd,struct map_session_data *sd)
+static void clif_parse_GetItemFromCart(int fd, struct map_session_data *sd)
{
if (!pc_iscarton(sd))
return;
pc->getitemfromcart(sd,RFIFOW(fd,2)-2,RFIFOL(fd,4));
}
-void clif_parse_RemoveOption(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_RemoveOption(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to remove cart/falcon/peco/dragon (CZ_REQ_CARTOFF).
/// 012a
-void clif_parse_RemoveOption(int fd,struct map_session_data *sd)
+static void clif_parse_RemoveOption(int fd, struct map_session_data *sd)
{
if (pc_isridingpeco(sd) || pc_isfalcon(sd) || pc_isridingdragon(sd) || pc_ismadogear(sd)) {
// priority to remove this option before we can clear cart
@@ -11013,47 +11943,46 @@ void clif_parse_RemoveOption(int fd,struct map_session_data *sd)
}
}
-void clif_parse_ChangeCart(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_ChangeCart(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to change cart's visual look (CZ_REQ_CHANGECART).
/// 01af <num>.W
-void clif_parse_ChangeCart(int fd,struct map_session_data *sd)
+static void clif_parse_ChangeCart(int fd, struct map_session_data *sd)
{// TODO: State tracking?
int type;
- if( pc->checkskill(sd, MC_CHANGECART) < 1 )
+ if (pc->checkskill(sd, MC_CHANGECART) == 0)
return;
-#ifdef RENEWAL
- if( sd->npc_id || sd->state.workinprogress&1 ){
- clif->msgtable(sd, MSG_NPC_WORK_IN_PROGRESS);
+ if (sd->npc_id || sd->state.workinprogress & 1) {
+#if PACKETVER >= 20110308
+ clif->msgtable(sd, MSG_BUSY);
+#else
+ clif->messagecolor_self(fd, COLOR_WHITE, msg_fd(fd, 48));
+#endif
return;
}
-#endif
- type = RFIFOW(fd,2);
+ type = RFIFOW(fd, 2);
+
+ if (
#ifdef NEW_CARTS
- if( (type == 9 && sd->status.base_level > 131) ||
- (type == 8 && sd->status.base_level > 121) ||
- (type == 7 && sd->status.base_level > 111) ||
- (type == 6 && sd->status.base_level > 101) ||
+ (type == 9 && sd->status.base_level > 130) ||
+ (type == 8 && sd->status.base_level > 120) ||
+ (type == 7 && sd->status.base_level > 110) ||
+ (type == 6 && sd->status.base_level > 100) ||
+#endif
(type == 5 && sd->status.base_level > 90) ||
(type == 4 && sd->status.base_level > 80) ||
(type == 3 && sd->status.base_level > 65) ||
(type == 2 && sd->status.base_level > 40) ||
(type == 1))
-#else
- if( (type == 5 && sd->status.base_level > 90) ||
- (type == 4 && sd->status.base_level > 80) ||
- (type == 3 && sd->status.base_level > 65) ||
- (type == 2 && sd->status.base_level > 40) ||
- (type == 1))
-#endif
- pc->setcart(sd,type);
+
+ pc->setcart(sd, type);
}
/// Request to select cart's visual look for new cart design (CZ_SELECTCART).
/// 0980 <identity>.L <type>.B
-void clif_parse_SelectCart(int fd, struct map_session_data *sd)
+static void clif_parse_SelectCart(int fd, struct map_session_data *sd)
{
#if PACKETVER >= 20150805 // RagexeRE
int type;
@@ -11070,7 +11999,7 @@ void clif_parse_SelectCart(int fd, struct map_session_data *sd)
#endif
}
-void clif_parse_StatusUp(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_StatusUp(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to increase status (CZ_STATUS_CHANGE).
/// 00bb <status id>.W <amount>.B
/// status id:
@@ -11078,7 +12007,8 @@ void clif_parse_StatusUp(int fd,struct map_session_data *sd) __attribute__((nonn
/// amount:
/// Old clients send always 1 for this, even when using /str+ and the like.
/// Newer clients (2013-12-23 and newer) send the correct amount.
-void clif_parse_StatusUp(int fd,struct map_session_data *sd) {
+static void clif_parse_StatusUp(int fd, struct map_session_data *sd)
+{
int increase_amount;
increase_amount = RFIFOB(fd,4);
@@ -11090,15 +12020,16 @@ void clif_parse_StatusUp(int fd,struct map_session_data *sd) {
pc->statusup(sd, RFIFOW(fd,2), increase_amount);
}
-void clif_parse_SkillUp(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_SkillUp(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to increase level of a skill (CZ_UPGRADE_SKILLLEVEL).
/// 0112 <skill id>.W
-void clif_parse_SkillUp(int fd,struct map_session_data *sd)
+static void clif_parse_SkillUp(int fd, struct map_session_data *sd)
{
pc->skillup(sd,RFIFOW(fd,2));
}
-void clif_parse_UseSkillToId_homun(struct homun_data *hd, struct map_session_data *sd, int64 tick, uint16 skill_id, uint16 skill_lv, int target_id) {
+static void clif_parse_UseSkillToId_homun(struct homun_data *hd, struct map_session_data *sd, int64 tick, uint16 skill_id, uint16 skill_lv, int target_id)
+{
int lv;
nullpo_retv(sd);
@@ -11116,7 +12047,7 @@ void clif_parse_UseSkillToId_homun(struct homun_data *hd, struct map_session_dat
else if (DIFF_TICK(tick, hd->ud.canact_tick) < 0){
clif->emotion(&hd->bl, E_DOTS);
if (hd->master)
- clif->skill_fail(hd->master, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0);
+ clif->skill_fail(hd->master, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0, 0);
return;
}
@@ -11128,7 +12059,8 @@ void clif_parse_UseSkillToId_homun(struct homun_data *hd, struct map_session_dat
unit->skilluse_id(&hd->bl, target_id, skill_id, skill_lv);
}
-void clif_parse_UseSkillToPos_homun(struct homun_data *hd, struct map_session_data *sd, int64 tick, uint16 skill_id, uint16 skill_lv, short x, short y, int skillmoreinfo) {
+static void clif_parse_UseSkillToPos_homun(struct homun_data *hd, struct map_session_data *sd, int64 tick, uint16 skill_id, uint16 skill_lv, short x, short y, int skillmoreinfo)
+{
int lv;
nullpo_retv(sd);
if( !hd )
@@ -11143,7 +12075,7 @@ void clif_parse_UseSkillToPos_homun(struct homun_data *hd, struct map_session_da
} else if ( DIFF_TICK(tick, hd->ud.canact_tick) < 0 ) {
clif->emotion(&hd->bl, E_DOTS);
if ( hd->master )
- clif->skill_fail(hd->master, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0);
+ clif->skill_fail(hd->master, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0, 0);
return;
}
@@ -11156,7 +12088,8 @@ void clif_parse_UseSkillToPos_homun(struct homun_data *hd, struct map_session_da
unit->skilluse_pos(&hd->bl, x, y, skill_id, skill_lv);
}
-void clif_parse_UseSkillToId_mercenary(struct mercenary_data *md, struct map_session_data *sd, int64 tick, uint16 skill_id, uint16 skill_lv, int target_id) {
+static void clif_parse_UseSkillToId_mercenary(struct mercenary_data *md, struct map_session_data *sd, int64 tick, uint16 skill_id, uint16 skill_lv, int target_id)
+{
int lv;
nullpo_retv(sd);
@@ -11178,7 +12111,8 @@ void clif_parse_UseSkillToId_mercenary(struct mercenary_data *md, struct map_ses
unit->skilluse_id(&md->bl, target_id, skill_id, skill_lv);
}
-void clif_parse_UseSkillToPos_mercenary(struct mercenary_data *md, struct map_session_data *sd, int64 tick, uint16 skill_id, uint16 skill_lv, short x, short y, int skillmoreinfo) {
+static void clif_parse_UseSkillToPos_mercenary(struct mercenary_data *md, struct map_session_data *sd, int64 tick, uint16 skill_id, uint16 skill_lv, short x, short y, int skillmoreinfo)
+{
int lv;
nullpo_retv(sd);
if( !md )
@@ -11188,7 +12122,7 @@ void clif_parse_UseSkillToPos_mercenary(struct mercenary_data *md, struct map_se
if( md->ud.skilltimer != INVALID_TIMER )
return;
if( DIFF_TICK(tick, md->ud.canact_tick) < 0 ) {
- clif->skill_fail(md->master, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0);
+ clif->skill_fail(md->master, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0, 0);
return;
}
@@ -11201,33 +12135,24 @@ void clif_parse_UseSkillToPos_mercenary(struct mercenary_data *md, struct map_se
unit->skilluse_pos(&md->bl, x, y, skill_id, skill_lv);
}
-void clif_parse_UseSkillToId(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-/// Request to use a targeted skill.
-/// 0113 <skill lv>.W <skill id>.W <target id>.L (CZ_USE_SKILL)
-/// 0438 <skill lv>.W <skill id>.W <target id>.L (CZ_USE_SKILL2)
-/// There are various variants of this packet, some of them have padding between fields.
-void clif_parse_UseSkillToId(int fd, struct map_session_data *sd)
+static void clif_useSkillToIdReal(int fd, struct map_session_data *sd, int skill_id, int skill_lv, int target_id) __attribute__((nonnull (2)));
+static void clif_useSkillToIdReal(int fd, struct map_session_data *sd, int skill_id, int skill_lv, int target_id)
{
- uint16 skill_id, skill_lv;
- int tmp, target_id;
int64 tick = timer->gettick();
- skill_lv = RFIFOW(fd,packet_db[RFIFOW(fd,0)].pos[0]);
- skill_id = RFIFOW(fd,packet_db[RFIFOW(fd,0)].pos[1]);
- target_id = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[2]);
-
- if( skill_lv < 1 ) skill_lv = 1; //No clue, I have seen the client do this with guild skills :/ [Skotlex]
+ if (skill_lv < 1)
+ skill_lv = 1; //No clue, I have seen the client do this with guild skills :/ [Skotlex]
- tmp = skill->get_inf(skill_id);
- if (tmp&INF_GROUND_SKILL || !tmp)
+ int tmp = skill->get_inf(skill_id);
+ if (tmp & INF_GROUND_SKILL || !tmp)
return; //Using a ground/passive skill on a target? WRONG.
- if( skill_id >= HM_SKILLBASE && skill_id < HM_SKILLBASE + MAX_HOMUNSKILL ) {
+ if (skill_id >= HM_SKILLBASE && skill_id < HM_SKILLBASE + MAX_HOMUNSKILL) {
clif->pUseSkillToId_homun(sd->hd, sd, tick, skill_id, skill_lv, target_id);
return;
}
- if( skill_id >= MC_SKILLBASE && skill_id < MC_SKILLBASE + MAX_MERCSKILL ) {
+ if (skill_id >= MC_SKILLBASE && skill_id < MC_SKILLBASE + MAX_MERCSKILL) {
clif->pUseSkillToId_mercenary(sd->md, sd, tick, skill_id, skill_lv, target_id);
return;
}
@@ -11235,58 +12160,61 @@ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd)
// Whether skill fails or not is irrelevant, the char ain't idle. [Skotlex]
pc->update_idle_time(sd, BCIDLE_USESKILLTOID);
- if( sd->npc_id || sd->state.workinprogress&1 ){
-#ifdef RENEWAL
- clif->msgtable(sd, MSG_NPC_WORK_IN_PROGRESS); // TODO look for the client date that has this message.
+ if (sd->npc_id || sd->state.workinprogress & 1) {
+#if PACKETVER >= 20110308
+ clif->msgtable(sd, MSG_BUSY);
+#else
+ clif->messagecolor_self(fd, COLOR_WHITE, msg_fd(fd, 48));
#endif
return;
}
- if( pc_cant_act(sd)
- && skill_id != RK_REFRESH
- && !(skill_id == SR_GENTLETOUCH_CURE && (sd->sc.opt1 == OPT1_STONE || sd->sc.opt1 == OPT1_FREEZE || sd->sc.opt1 == OPT1_STUN))
- && (sd->state.storage_flag != STORAGE_FLAG_CLOSED && !(tmp&INF_SELF_SKILL)) // SELF skills can be used with the storage open, issue: 8027
- )
+ if (pc_cant_act(sd)
+ && skill_id != RK_REFRESH
+ && !(skill_id == SR_GENTLETOUCH_CURE && (sd->sc.opt1 == OPT1_STONE || sd->sc.opt1 == OPT1_FREEZE || sd->sc.opt1 == OPT1_STUN))
+ && (sd->state.storage_flag != STORAGE_FLAG_CLOSED && !(tmp&INF_SELF_SKILL)) // SELF skills can be used with the storage open, issue: 8027
+ ) {
return;
+ }
- if( pc_issit(sd) )
+ if (pc_issit(sd))
return;
- if( skill->not_ok(skill_id, sd) )
+ if (skill->not_ok(skill_id, sd))
return;
- if( sd->bl.id != target_id && tmp&INF_SELF_SKILL )
+ if (sd->bl.id != target_id && tmp & INF_SELF_SKILL)
target_id = sd->bl.id; // never trust the client
- if( target_id < 0 && -target_id == sd->bl.id ) // for disguises [Valaris]
+ if (target_id < 0 && -target_id == sd->bl.id) // for disguises [Valaris]
target_id = sd->bl.id;
- if( sd->ud.skilltimer != INVALID_TIMER ) {
- if( skill_id != SA_CASTCANCEL && skill_id != SO_SPELLFIST )
+ if (sd->ud.skilltimer != INVALID_TIMER) {
+ if (skill_id != SA_CASTCANCEL && skill_id != SO_SPELLFIST)
return;
- } else if( DIFF_TICK(tick, sd->ud.canact_tick) < 0 ) {
- if( sd->skillitem != skill_id ) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0);
+ } else if (DIFF_TICK(tick, sd->ud.canact_tick) < 0) {
+ if (sd->skillitem != skill_id) {
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0, 0);
return;
}
}
- if( sd->sc.option&OPTION_COSTUME )
+ if (sd->sc.option & OPTION_COSTUME)
return;
- if( sd->sc.data[SC_BASILICA] && (skill_id != HP_BASILICA || sd->sc.data[SC_BASILICA]->val4 != sd->bl.id) )
+ if (sd->sc.data[SC_BASILICA] && (skill_id != HP_BASILICA || sd->sc.data[SC_BASILICA]->val4 != sd->bl.id))
return; // On basilica only caster can use Basilica again to stop it.
- if( sd->menuskill_id ) {
- if( sd->menuskill_id == SA_TAMINGMONSTER ) {
+ if (sd->menuskill_id) {
+ if (sd->menuskill_id == SA_TAMINGMONSTER) {
clif_menuskill_clear(sd); //Cancel pet capture.
- } else if( sd->menuskill_id != SA_AUTOSPELL )
+ } else if (sd->menuskill_id != SA_AUTOSPELL)
return; //Can't use skills while a menu is open.
}
- if( sd->skillitem == skill_id ) {
- if( skill_lv != sd->skillitemlv )
+ if (sd->skillitem == skill_id) {
+ if (skill_lv != sd->skillitemlv)
skill_lv = sd->skillitemlv;
- if( !(tmp&INF_SELF_SKILL) )
+ if (!(tmp&INF_SELF_SKILL))
pc->delinvincibletimer(sd); // Target skills through items cancel invincibility. [Inkfish]
unit->skilluse_id(&sd->bl, target_id, skill_id, skill_lv);
return;
@@ -11295,26 +12223,60 @@ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd)
sd->skillitem = sd->skillitemlv = 0;
if (skill_id >= GD_SKILLBASE && skill_id < GD_MAX) {
- if( sd->state.gmaster_flag )
+ if (sd->state.gmaster_flag)
skill_lv = guild->checkskill(sd->guild, skill_id);
else
skill_lv = 0;
} else {
tmp = pc->checkskill(sd, skill_id);
- if( skill_lv > tmp )
+ if (skill_lv > tmp)
skill_lv = tmp;
}
pc->delinvincibletimer(sd);
- if( skill_lv )
+ if (skill_lv)
unit->skilluse_id(&sd->bl, target_id, skill_id, skill_lv);
}
+static void clif_parse_UseSkillToId(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+/// Request to use a targeted skill.
+/// 0113 <skill lv>.W <skill id>.W <target id>.L (CZ_USE_SKILL)
+/// 0438 <skill lv>.W <skill id>.W <target id>.L (CZ_USE_SKILL2)
+/// There are various variants of this packet, some of them have padding between fields.
+static void clif_parse_UseSkillToId(int fd, struct map_session_data *sd)
+{
+ clif->useSkillToIdReal(fd,
+ sd,
+ RFIFOW(fd, packet_db[RFIFOW(fd, 0)].pos[1]),
+ RFIFOW(fd, packet_db[RFIFOW(fd, 0)].pos[0]),
+ RFIFOL(fd, packet_db[RFIFOW(fd, 0)].pos[2]));
+}
+
+static void clif_parse_startUseSkillToId(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_startUseSkillToId(int fd, struct map_session_data *sd)
+{
+#if PACKETVER_MAIN_NUM >= 20181002 || PACKETVER_RE_NUM >= 20181002 || PACKETVER_ZERO_NUM >= 20181010
+ const struct PACKET_CZ_START_USE_SKILL *p = RFIFOP(fd, 0);
+ clif->useSkillToIdReal(fd, sd, p->skillId, p->skillLv, p->targetId);
+#endif
+}
+
+static void clif_parse_stopUseSkillToId(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_stopUseSkillToId(int fd, struct map_session_data *sd)
+{
+#if PACKETVER_MAIN_NUM >= 20181002 || PACKETVER_RE_NUM >= 20181002 || PACKETVER_ZERO_NUM >= 20181010
+ const struct PACKET_CZ_STOP_USE_SKILL *p = RFIFOP(fd, 0);
+ if (p->skillId != GC_ROLLINGCUTTER) {
+ ShowWarning("Packet CZ_STOP_USE_SKILL usage for unknown skill: %d\n", p->skillId);
+ }
+#endif
+}
+
/*==========================================
* Client tells server he'd like to use AoE skill id 'skill_id' of level 'skill_lv' on 'x','y' location
*------------------------------------------*/
-void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uint16 skill_lv, uint16 skill_id, short x, short y, int skillmoreinfo)
+static void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uint16 skill_lv, uint16 skill_id, short x, short y, int skillmoreinfo)
{
int64 tick = timer->gettick();
@@ -11332,12 +12294,14 @@ void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uint16 ski
return;
}
-#ifdef RENEWAL
- if( sd->state.workinprogress&1 ){
- clif->msgtable(sd, MSG_NPC_WORK_IN_PROGRESS); // TODO look for the client date that has this message.
+ if (sd->state.workinprogress & 1) {
+#if PACKETVER >= 20110308
+ clif->msgtable(sd, MSG_BUSY);
+#else
+ clif->messagecolor_self(fd, COLOR_WHITE, msg_fd(fd, 48));
+#endif
return;
}
-#endif
//Whether skill fails or not is irrelevant, the char ain't idle. [Skotlex]
pc->update_idle_time(sd, BCIDLE_USESKILLTOPOS);
@@ -11346,7 +12310,7 @@ void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uint16 ski
return;
if( skillmoreinfo != -1 ) {
if( pc_issit(sd) ) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return;
}
//You can't use Graffiti/TalkieBox AND have a vending open, so this is safe.
@@ -11358,7 +12322,7 @@ void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uint16 ski
if( DIFF_TICK(tick, sd->ud.canact_tick) < 0 ) {
if( sd->skillitem != skill_id ) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0, 0);
return;
}
}
@@ -11393,12 +12357,12 @@ void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uint16 ski
}
}
-void clif_parse_UseSkillToPos(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_UseSkillToPos(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to use a ground skill.
/// 0116 <skill lv>.W <skill id>.W <x>.W <y>.W (CZ_USE_SKILL_TOGROUND)
/// 0366 <skill lv>.W <skill id>.W <x>.W <y>.W (CZ_USE_SKILL_TOGROUND2)
/// There are various variants of this packet, some of them have padding between fields.
-void clif_parse_UseSkillToPos(int fd, struct map_session_data *sd)
+static void clif_parse_UseSkillToPos(int fd, struct map_session_data *sd)
{
if (pc_cant_act(sd))
return;
@@ -11414,12 +12378,12 @@ void clif_parse_UseSkillToPos(int fd, struct map_session_data *sd)
);
}
-void clif_parse_UseSkillToPosMoreInfo(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_UseSkillToPosMoreInfo(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to use a ground skill with text.
/// 0190 <skill lv>.W <skill id>.W <x>.W <y>.W <contents>.80B (CZ_USE_SKILL_TOGROUND_WITHTALKBOX)
/// 0367 <skill lv>.W <skill id>.W <x>.W <y>.W <contents>.80B (CZ_USE_SKILL_TOGROUND_WITHTALKBOX2)
/// There are various variants of this packet, some of them have padding between fields.
-void clif_parse_UseSkillToPosMoreInfo(int fd, struct map_session_data *sd)
+static void clif_parse_UseSkillToPosMoreInfo(int fd, struct map_session_data *sd)
{
if (pc_cant_act(sd))
return;
@@ -11435,10 +12399,10 @@ void clif_parse_UseSkillToPosMoreInfo(int fd, struct map_session_data *sd)
);
}
-void clif_parse_UseSkillMap(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_UseSkillMap(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to map selection dialog (CZ_SELECT_WARPPOINT).
/// 011b <skill id>.W <map name>.16B
-void clif_parse_UseSkillMap(int fd, struct map_session_data* sd)
+static void clif_parse_UseSkillMap(int fd, struct map_session_data *sd)
{
uint16 skill_id = RFIFOW(fd,2);
char map_name[MAP_NAME_LENGTH];
@@ -11459,21 +12423,23 @@ void clif_parse_UseSkillMap(int fd, struct map_session_data* sd)
skill->castend_map(sd,skill_id,map_name);
}
-void clif_parse_RequestMemo(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_RequestMemo(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to set a memo on current map (CZ_REMEMBER_WARPPOINT).
/// 011d
-void clif_parse_RequestMemo(int fd,struct map_session_data *sd)
+static void clif_parse_RequestMemo(int fd, struct map_session_data *sd)
{
if (!pc_isdead(sd))
pc->memo(sd,-1);
}
-void clif_parse_ProduceMix(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_ProduceMix(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to pharmacy item selection dialog (CZ_REQMAKINGITEM).
/// 018e <name id>.W { <material id>.W }*3
-void clif_parse_ProduceMix(int fd,struct map_session_data *sd)
+static void clif_parse_ProduceMix(int fd, struct map_session_data *sd)
{
- switch( sd->menuskill_id ) {
+ const struct PACKET_CZ_REQMAKINGITEM *p = RFIFOP(fd, 0);
+
+ switch (sd->menuskill_id) {
case -1:
case AM_PHARMACY:
case RK_RUNEMASTERY:
@@ -11484,16 +12450,17 @@ void clif_parse_ProduceMix(int fd,struct map_session_data *sd)
}
if (pc_istrading(sd)) {
//Make it fail to avoid shop exploits where you sell something different than you see.
- clif->skill_fail(sd,sd->ud.skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, sd->ud.skill_id, USESKILL_FAIL_LEVEL, 0, 0);
clif_menuskill_clear(sd);
return;
}
- if( skill->can_produce_mix(sd,RFIFOW(fd,2),sd->menuskill_val, 1) )
- skill->produce_mix(sd,0,RFIFOW(fd,2),RFIFOW(fd,4),RFIFOW(fd,6),RFIFOW(fd,8), 1);
+
+ if (skill->can_produce_mix(sd, p->itemId, sd->menuskill_val, 1))
+ skill->produce_mix(sd, 0, p->itemId, p->material[0], p->material[1], p->material[2], 1);
clif_menuskill_clear(sd);
}
-void clif_parse_Cooking(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Cooking(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to mixing item selection dialog (CZ_REQ_MAKINGITEM).
/// 025b <mk type>.W <name id>.W
/// mk type:
@@ -11503,45 +12470,49 @@ void clif_parse_Cooking(int fd,struct map_session_data *sd) __attribute__((nonnu
/// 4 = GN_MIX_COOKING
/// 5 = GN_MAKEBOMB
/// 6 = GN_S_PHARMACY
-void clif_parse_Cooking(int fd,struct map_session_data *sd) {
- int type = RFIFOW(fd,2);
- int nameid = RFIFOW(fd,4);
- int amount = sd->menuskill_val2?sd->menuskill_val2:1;
- if( type == 6 && sd->menuskill_id != GN_MIX_COOKING && sd->menuskill_id != GN_S_PHARMACY )
+static void clif_parse_Cooking(int fd, struct map_session_data *sd)
+{
+ const struct PACKET_CZ_REQ_MAKINGITEM *p = RFIFOP(fd, 0);
+ int type = p->type;
+ int nameid = p->itemId;
+ int amount = sd->menuskill_val2 ? sd->menuskill_val2 : 1;
+ if (type == 6 && sd->menuskill_id != GN_MIX_COOKING && sd->menuskill_id != GN_S_PHARMACY)
return;
if (pc_istrading(sd)) {
//Make it fail to avoid shop exploits where you sell something different than you see.
- clif->skill_fail(sd,sd->ud.skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, sd->ud.skill_id, USESKILL_FAIL_LEVEL, 0, 0);
clif_menuskill_clear(sd);
return;
}
- if( skill->can_produce_mix(sd,nameid,sd->menuskill_val, amount) )
- skill->produce_mix(sd,(type>1?sd->menuskill_id:0),nameid,0,0,0,amount);
+ if (skill->can_produce_mix(sd, nameid, sd->menuskill_val, amount))
+ skill->produce_mix(sd, (type > 1 ? sd->menuskill_id : 0), nameid, 0, 0, 0, amount);
clif_menuskill_clear(sd);
}
-void clif_parse_RepairItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_RepairItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to repair weapon item selection dialog (CZ_REQ_ITEMREPAIR).
/// 01fd <index>.W <name id>.W <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W
-void clif_parse_RepairItem(int fd, struct map_session_data *sd)
+static void clif_parse_RepairItem(int fd, struct map_session_data *sd)
{
+ const struct PACKET_CZ_REQ_ITEMREPAIR *p = RFIFOP(fd, 0);
+
if (sd->menuskill_id != BS_REPAIRWEAPON)
return;
if (pc_istrading(sd)) {
//Make it fail to avoid shop exploits where you sell something different than you see.
- clif->skill_fail(sd,sd->ud.skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, sd->ud.skill_id, USESKILL_FAIL_LEVEL, 0, 0);
clif_menuskill_clear(sd);
return;
}
- skill->repairweapon(sd,RFIFOW(fd,2));
+ skill->repairweapon(sd, p->index);
clif_menuskill_clear(sd);
}
-void clif_parse_WeaponRefine(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_WeaponRefine(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to refine weapon item selection dialog (CZ_REQ_WEAPONREFINE).
/// 0222 <index>.L
-void clif_parse_WeaponRefine(int fd, struct map_session_data *sd)
+static void clif_parse_WeaponRefine(int fd, struct map_session_data *sd)
{
int idx;
@@ -11551,7 +12522,7 @@ void clif_parse_WeaponRefine(int fd, struct map_session_data *sd)
return;
if (pc_istrading(sd)) {
//Make it fail to avoid shop exploits where you sell something different than you see.
- clif->skill_fail(sd,sd->ud.skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, sd->ud.skill_id, USESKILL_FAIL_LEVEL, 0, 0);
clif_menuskill_clear(sd);
return;
}
@@ -11560,7 +12531,7 @@ void clif_parse_WeaponRefine(int fd, struct map_session_data *sd)
clif_menuskill_clear(sd);
}
-void clif_parse_NpcSelectMenu(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_NpcSelectMenu(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to script menu dialog (CZ_CHOOSE_MENU).
/// 00b8 <npc id>.L <choice>.B
/// choice:
@@ -11568,12 +12539,12 @@ void clif_parse_NpcSelectMenu(int fd,struct map_session_data *sd) __attribute__(
/// 255 = cancel
/// NOTE: If there were more than 254 items in the list, choice
/// overflows to choice%256.
-void clif_parse_NpcSelectMenu(int fd,struct map_session_data *sd)
+static void clif_parse_NpcSelectMenu(int fd, struct map_session_data *sd)
{
int npc_id = RFIFOL(fd,2);
uint8 select = RFIFOB(fd,6);
- if( (select > sd->npc_menu && select != 0xff) || select == 0 ) {
+ if( (select > sd->npc_menu && select != MAX_MENU_OPTIONS) || select == 0 ) {
#ifdef SECURE_NPCTIMEOUT
if( sd->npc_idle_timer != INVALID_TIMER ) {
#endif
@@ -11590,18 +12561,18 @@ void clif_parse_NpcSelectMenu(int fd,struct map_session_data *sd)
npc->scriptcont(sd,npc_id, false);
}
-void clif_parse_NpcNextClicked(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_NpcNextClicked(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// NPC dialog 'next' click (CZ_REQ_NEXT_SCRIPT).
/// 00b9 <npc id>.L
-void clif_parse_NpcNextClicked(int fd,struct map_session_data *sd)
+static void clif_parse_NpcNextClicked(int fd, struct map_session_data *sd)
{
npc->scriptcont(sd,RFIFOL(fd,2), false);
}
-void clif_parse_NpcAmountInput(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_NpcAmountInput(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// NPC numeric input dialog value (CZ_INPUT_EDITDLG).
/// 0143 <npc id>.L <value>.L
-void clif_parse_NpcAmountInput(int fd,struct map_session_data *sd)
+static void clif_parse_NpcAmountInput(int fd, struct map_session_data *sd)
{
int npcid = RFIFOL(fd,2);
int amount = RFIFOL(fd,6);
@@ -11613,26 +12584,35 @@ void clif_parse_NpcAmountInput(int fd,struct map_session_data *sd)
npc->scriptcont(sd, npcid, false);
}
-void clif_parse_NpcStringInput(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_NpcStringInput(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// NPC text input dialog value (CZ_INPUT_EDITDLGSTR).
/// 01d5 <packet len>.W <npc id>.L <string>.?B
-void clif_parse_NpcStringInput(int fd, struct map_session_data* sd)
+static void clif_parse_NpcStringInput(int fd, struct map_session_data *sd)
{
- int message_len = RFIFOW(fd,2)-8;
- int npcid = RFIFOL(fd,4);
- const char *message = RFIFOP(fd,8);
+ int len = RFIFOW(fd, 2);
+// [4144] can't confirm exact client version. At least >= correct for 20150513
+#if PACKETVER >= 20151029
+ int message_len = len - 7;
+#else
+ int message_len = len - 8;
+#endif
+ int npcid;
+ const char *message;
+
+ if (len < 9)
+ return;
- if( message_len <= 0 )
- return; // invalid input
+ npcid = RFIFOL(fd, 4);
+ message = RFIFOP(fd, 8);
safestrncpy(sd->npc_str, message, min(message_len,CHATBOX_SIZE));
npc->scriptcont(sd, npcid, false);
}
-void clif_parse_NpcCloseClicked(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_NpcCloseClicked(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// NPC dialog 'close' click (CZ_CLOSE_DIALOG).
/// 0146 <npc id>.L
-void clif_parse_NpcCloseClicked(int fd,struct map_session_data *sd)
+static void clif_parse_NpcCloseClicked(int fd, struct map_session_data *sd)
{
if (!sd->npc_id) //Avoid parsing anything when the script was done with. [Skotlex]
return;
@@ -11640,12 +12620,12 @@ void clif_parse_NpcCloseClicked(int fd,struct map_session_data *sd)
npc->scriptcont(sd, RFIFOL(fd,2), true);
}
-void clif_parse_ItemIdentify(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_ItemIdentify(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to identify item selection dialog (CZ_REQ_ITEMIDENTIFY).
/// 0178 <index>.W
/// index:
/// -1 = cancel
-void clif_parse_ItemIdentify(int fd,struct map_session_data *sd)
+static void clif_parse_ItemIdentify(int fd, struct map_session_data *sd)
{
short idx = RFIFOW(fd,2);
@@ -11661,15 +12641,15 @@ void clif_parse_ItemIdentify(int fd,struct map_session_data *sd)
clif_menuskill_clear(sd);
}
-/// Identifying item with right-click (CZ_REQ_ONECLICK_ITEMIDENTIFY).
-/// 0A35 <index>.W
-void clif_parse_OneClick_ItemIdentify(int fd, struct map_session_data *sd)
+/// Identifying item with right-click (CZ_REQ_ONECLICK_ITEMIDENTIFY).
+/// 0A35 <index>.W
+static void clif_parse_OneClick_ItemIdentify(int fd, struct map_session_data *sd)
{
int cmd = RFIFOW(fd,0);
short idx = RFIFOW(fd, packet_db[cmd].pos[0]) - 2;
int n;
- if (idx < 0 || idx >= MAX_INVENTORY || sd->inventory_data[idx] == NULL || sd->status.inventory[idx].nameid <= 0)
+ if (idx < 0 || idx >= sd->status.inventorySize || sd->inventory_data[idx] == NULL || sd->status.inventory[idx].nameid <= 0)
return;
if ((n = pc->have_magnifier(sd) ) != INDEX_NOT_FOUND &&
@@ -11677,42 +12657,48 @@ void clif_parse_OneClick_ItemIdentify(int fd, struct map_session_data *sd)
skill->identify(sd, idx);
}
-void clif_parse_SelectArrow(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_SelectArrow(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to arrow crafting item selection dialog (CZ_REQ_MAKINGARROW).
/// 01ae <name id>.W
-void clif_parse_SelectArrow(int fd,struct map_session_data *sd)
+static void clif_parse_SelectArrow(int fd, struct map_session_data *sd)
{
+ int itemId;
if (pc_istrading(sd)) {
- //Make it fail to avoid shop exploits where you sell something different than you see.
- clif->skill_fail(sd,sd->ud.skill_id,USESKILL_FAIL_LEVEL,0);
+ //Make it fail to avoid shop exploits where you sell something different than you see.
+ clif->skill_fail(sd, sd->ud.skill_id, USESKILL_FAIL_LEVEL, 0, 0);
clif_menuskill_clear(sd);
return;
}
- switch( sd->menuskill_id ) {
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ itemId = RFIFOL(fd, 2);
+#else
+ itemId = RFIFOW(fd, 2);
+#endif
+ switch (sd->menuskill_id) {
case AC_MAKINGARROW:
- skill->arrow_create(sd,RFIFOW(fd,2));
+ skill->arrow_create(sd, itemId);
break;
case SA_CREATECON:
- skill->produce_mix(sd,SA_CREATECON,RFIFOW(fd,2),0,0,0, 1);
+ skill->produce_mix(sd, SA_CREATECON, itemId, 0, 0, 0, 1);
break;
case WL_READING_SB:
- skill->spellbook(sd,RFIFOW(fd,2));
+ skill->spellbook(sd, itemId);
break;
case GC_POISONINGWEAPON:
- skill->poisoningweapon(sd,RFIFOW(fd,2));
+ skill->poisoningweapon(sd, itemId);
break;
case NC_MAGICDECOY:
- skill->magicdecoy(sd,RFIFOW(fd,2));
+ skill->magicdecoy(sd, itemId);
break;
}
clif_menuskill_clear(sd);
}
-void clif_parse_AutoSpell(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_AutoSpell(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to SA_AUTOSPELL skill selection dialog (CZ_SELECTAUTOSPELL).
/// 01ce <skill id>.L
-void clif_parse_AutoSpell(int fd,struct map_session_data *sd)
+static void clif_parse_AutoSpell(int fd, struct map_session_data *sd)
{
uint16 skill_id = RFIFOL(fd,2);
@@ -11728,42 +12714,44 @@ void clif_parse_AutoSpell(int fd,struct map_session_data *sd)
clif_menuskill_clear(sd);
}
-void clif_parse_UseCard(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_UseCard(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to display item carding/composition list (CZ_REQ_ITEMCOMPOSITION_LIST).
/// 017a <card index>.W
-void clif_parse_UseCard(int fd,struct map_session_data *sd)
+static void clif_parse_UseCard(int fd, struct map_session_data *sd)
{
clif->use_card(sd,RFIFOW(fd,2)-2);
}
-void clif_parse_InsertCard(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_InsertCard(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to carding/composing item selection dialog (CZ_REQ_ITEMCOMPOSITION).
/// 017c <card index>.W <equip index>.W
-void clif_parse_InsertCard(int fd,struct map_session_data *sd)
+static void clif_parse_InsertCard(int fd, struct map_session_data *sd)
{
pc->insert_card(sd,RFIFOW(fd,2)-2,RFIFOW(fd,4)-2);
}
-void clif_parse_SolveCharName(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_SolveCharName(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request of character's name by char ID.
/// 0193 <char id>.L (CZ_REQNAME_BYGID)
/// 0369 <char id>.L (CZ_REQNAME_BYGID2)
/// There are various variants of this packet, some of them have padding between fields.
-void clif_parse_SolveCharName(int fd, struct map_session_data *sd) {
+static void clif_parse_SolveCharName(int fd, struct map_session_data *sd)
+{
int charid;
charid = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]);
map->reqnickdb(sd, charid);
}
-void clif_parse_ResetChar(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_ResetChar(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /resetskill /resetstate (CZ_RESET).
/// Request to reset stats or skills.
/// 0197 <type>.W
/// type:
/// 0 = state
/// 1 = skill
-void clif_parse_ResetChar(int fd, struct map_session_data *sd) {
+static void clif_parse_ResetChar(int fd, struct map_session_data *sd)
+{
char cmd[15];
if( RFIFOW(fd,2) )
@@ -11774,11 +12762,11 @@ void clif_parse_ResetChar(int fd, struct map_session_data *sd) {
atcommand->exec(fd, sd, cmd, true);
}
-void clif_parse_LocalBroadcast(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_LocalBroadcast(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /lb /nlb (CZ_LOCALBROADCAST).
/// Request to broadcast a message on current map.
/// 019c <packet len>.W <text>.?B
-void clif_parse_LocalBroadcast(int fd, struct map_session_data *sd)
+static void clif_parse_LocalBroadcast(int fd, struct map_session_data *sd)
{
const char commandname[] = "lkami";
char command[sizeof commandname + 2 + CHAT_SIZE_MAX] = ""; // '@' + command + ' ' + message + NUL
@@ -11797,12 +12785,12 @@ void clif_parse_LocalBroadcast(int fd, struct map_session_data *sd)
atcommand->exec(fd, sd, command, true);
}
-void clif_parse_MoveToKafra(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_MoveToKafra(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to move an item from inventory to storage.
/// 00f3 <index>.W <amount>.L (CZ_MOVE_ITEM_FROM_BODY_TO_STORE)
/// 0364 <index>.W <amount>.L (CZ_MOVE_ITEM_FROM_BODY_TO_STORE2)
/// There are various variants of this packet, some of them have padding between fields.
-void clif_parse_MoveToKafra(int fd, struct map_session_data *sd)
+static void clif_parse_MoveToKafra(int fd, struct map_session_data *sd)
{
int item_index, item_amount;
@@ -11811,7 +12799,7 @@ void clif_parse_MoveToKafra(int fd, struct map_session_data *sd)
item_index = RFIFOW(fd,packet_db[RFIFOW(fd,0)].pos[0])-2;
item_amount = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[1]);
- if (item_index < 0 || item_index >= MAX_INVENTORY || item_amount < 1)
+ if (item_index < 0 || item_index >= sd->status.inventorySize || item_amount < 1)
return;
if (sd->state.storage_flag == STORAGE_FLAG_NORMAL)
@@ -11820,12 +12808,12 @@ void clif_parse_MoveToKafra(int fd, struct map_session_data *sd)
gstorage->add(sd, item_index, item_amount);
}
-void clif_parse_MoveFromKafra(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_MoveFromKafra(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to move an item from storage to inventory.
/// 00f5 <index>.W <amount>.L (CZ_MOVE_ITEM_FROM_STORE_TO_BODY)
/// 0365 <index>.W <amount>.L (CZ_MOVE_ITEM_FROM_STORE_TO_BODY2)
/// There are various variants of this packet, some of them have padding between fields.
-void clif_parse_MoveFromKafra(int fd,struct map_session_data *sd)
+static void clif_parse_MoveFromKafra(int fd, struct map_session_data *sd)
{
int item_index, item_amount;
@@ -11838,10 +12826,10 @@ void clif_parse_MoveFromKafra(int fd,struct map_session_data *sd)
gstorage->get(sd, item_index, item_amount);
}
-void clif_parse_MoveToKafraFromCart(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_MoveToKafraFromCart(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to move an item from cart to storage (CZ_MOVE_ITEM_FROM_CART_TO_STORE).
/// 0129 <index>.W <amount>.L
-void clif_parse_MoveToKafraFromCart(int fd, struct map_session_data *sd)
+static void clif_parse_MoveToKafraFromCart(int fd, struct map_session_data *sd)
{
if( sd->state.vending )
return;
@@ -11854,10 +12842,10 @@ void clif_parse_MoveToKafraFromCart(int fd, struct map_session_data *sd)
gstorage->addfromcart(sd, RFIFOW(fd,2) - 2, RFIFOL(fd,4));
}
-void clif_parse_MoveFromKafraToCart(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_MoveFromKafraToCart(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to move an item from storage to cart (CZ_MOVE_ITEM_FROM_STORE_TO_CART).
/// 0128 <index>.W <amount>.L
-void clif_parse_MoveFromKafraToCart(int fd, struct map_session_data *sd)
+static void clif_parse_MoveFromKafraToCart(int fd, struct map_session_data *sd)
{
if( sd->state.vending )
return;
@@ -11870,10 +12858,10 @@ void clif_parse_MoveFromKafraToCart(int fd, struct map_session_data *sd)
gstorage->gettocart(sd, RFIFOW(fd,2)-1, RFIFOL(fd,4));
}
-void clif_parse_CloseKafra(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_CloseKafra(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to close storage (CZ_CLOSE_STORE).
/// 00f7
-void clif_parse_CloseKafra(int fd, struct map_session_data *sd)
+static void clif_parse_CloseKafra(int fd, struct map_session_data *sd)
{
if( sd->state.storage_flag == STORAGE_FLAG_NORMAL )
storage->close(sd);
@@ -11881,6 +12869,7 @@ void clif_parse_CloseKafra(int fd, struct map_session_data *sd)
gstorage->close(sd);
}
+#if 0 // Unused function
/// Displays kafra storage password dialog (ZC_REQ_STORE_PASSWORD).
/// 023a <info>.W
/// info:
@@ -11889,7 +12878,7 @@ void clif_parse_CloseKafra(int fd, struct map_session_data *sd)
/// 8 = too many wrong passwords
/// ? = ignored
/// NOTE: This packet is only available on certain non-kRO clients.
-void clif_storagepassword(struct map_session_data* sd, short info)
+static void clif_storagepassword(struct map_session_data *sd, short info)
{
int fd;
@@ -11900,19 +12889,21 @@ void clif_storagepassword(struct map_session_data* sd, short info)
WFIFOW(fd,2) = info;
WFIFOSET(fd,packet_len(0x23a));
}
+#endif // 0
-void clif_parse_StoragePassword(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_StoragePassword(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to the kafra storage password dialog (CZ_ACK_STORE_PASSWORD).
/// 023b <type>.W <password>.16B <new password>.16B
/// type:
/// 2 = change password
/// 3 = check password
/// NOTE: This packet is only available on certain non-kRO clients.
-void clif_parse_StoragePassword(int fd, struct map_session_data *sd)
+static void clif_parse_StoragePassword(int fd, struct map_session_data *sd)
{
//TODO
}
+#if 0 // Unused function
/// Result of kafra storage password validation (ZC_RESULT_STORE_PASSWORD).
/// 023c <result>.W <error count>.W
/// result:
@@ -11923,7 +12914,7 @@ void clif_parse_StoragePassword(int fd, struct map_session_data *sd)
/// 8 = too many wrong passwords
/// ? = ignored
/// NOTE: This packet is only available on certain non-kRO clients.
-void clif_storagepassword_result(struct map_session_data* sd, short result, short error_count)
+static void clif_storagepassword_result(struct map_session_data *sd, short result, short error_count)
{
int fd;
@@ -11935,12 +12926,13 @@ void clif_storagepassword_result(struct map_session_data* sd, short result, shor
WFIFOW(fd,4) = error_count;
WFIFOSET(fd,packet_len(0x23c));
}
+#endif // 0
-void clif_parse_CreateParty(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_CreateParty(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Party creation request
/// 00f9 <party name>.24B (CZ_MAKE_GROUP)
/// 01e8 <party name>.24B <item pickup rule>.B <item share rule>.B (CZ_MAKE_GROUP2)
-void clif_parse_CreateParty(int fd, struct map_session_data *sd)
+static void clif_parse_CreateParty(int fd, struct map_session_data *sd)
{
char name[NAME_LENGTH];
@@ -11952,15 +12944,15 @@ void clif_parse_CreateParty(int fd, struct map_session_data *sd)
return;
}
if (battle_config.basic_skill_check && !pc->check_basicskill(sd, 7)) {
- clif->skill_fail(sd,1,USESKILL_FAIL_LEVEL,4);
+ clif->skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 4, 0);
return;
}
party->create(sd,name,0,0);
}
-void clif_parse_CreateParty2(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_CreateParty2(int fd, struct map_session_data *sd)
+static void clif_parse_CreateParty2(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_CreateParty2(int fd, struct map_session_data *sd)
{
char name[NAME_LENGTH];
int item1 = RFIFOB(fd,26);
@@ -11974,18 +12966,19 @@ void clif_parse_CreateParty2(int fd, struct map_session_data *sd)
return;
}
if (battle_config.basic_skill_check && !pc->check_basicskill(sd, 7)) {
- clif->skill_fail(sd,1,USESKILL_FAIL_LEVEL,4);
+ clif->skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 4, 0);
return;
}
party->create(sd,name,item1,item2);
}
-void clif_parse_PartyInvite(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyInvite(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Party invitation request
/// 00fc <account id>.L (CZ_REQ_JOIN_GROUP)
/// 02c4 <char name>.24B (CZ_PARTY_JOIN_REQ)
-void clif_parse_PartyInvite(int fd, struct map_session_data *sd) {
+static void clif_parse_PartyInvite(int fd, struct map_session_data *sd)
+{
struct map_session_data *t_sd;
if(map->list[sd->bl.m].flag.partylock) {
@@ -12004,8 +12997,8 @@ void clif_parse_PartyInvite(int fd, struct map_session_data *sd) {
party->invite(sd, t_sd);
}
-void clif_parse_PartyInvite2(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_PartyInvite2(int fd, struct map_session_data *sd)
+static void clif_parse_PartyInvite2(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyInvite2(int fd, struct map_session_data *sd)
{
struct map_session_data *t_sd;
char name[NAME_LENGTH];
@@ -12028,28 +13021,29 @@ void clif_parse_PartyInvite2(int fd, struct map_session_data *sd)
party->invite(sd, t_sd);
}
-void clif_parse_ReplyPartyInvite(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_ReplyPartyInvite(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Party invitation reply
/// 00ff <party id>.L <flag>.L (CZ_JOIN_GROUP)
/// 02c7 <party id>.L <flag>.B (CZ_PARTY_JOIN_REQ_ACK)
/// flag:
/// 0 = reject
/// 1 = accept
-void clif_parse_ReplyPartyInvite(int fd,struct map_session_data *sd)
+static void clif_parse_ReplyPartyInvite(int fd, struct map_session_data *sd)
{
party->reply_invite(sd,RFIFOL(fd,2),RFIFOL(fd,6));
}
-void clif_parse_ReplyPartyInvite2(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_ReplyPartyInvite2(int fd,struct map_session_data *sd)
+static void clif_parse_ReplyPartyInvite2(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_ReplyPartyInvite2(int fd, struct map_session_data *sd)
{
party->reply_invite(sd,RFIFOL(fd,2),RFIFOB(fd,6));
}
-void clif_parse_LeaveParty(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_LeaveParty(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to leave party (CZ_REQ_LEAVE_GROUP).
/// 0100
-void clif_parse_LeaveParty(int fd, struct map_session_data *sd) {
+static void clif_parse_LeaveParty(int fd, struct map_session_data *sd)
+{
if(map->list[sd->bl.m].flag.partylock) {
// Party locked.
clif->message(fd, msg_fd(fd,227)); // Party modification is disabled in this map.
@@ -12058,10 +13052,11 @@ void clif_parse_LeaveParty(int fd, struct map_session_data *sd) {
party->leave(sd);
}
-void clif_parse_RemovePartyMember(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_RemovePartyMember(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to expel a party member (CZ_REQ_EXPEL_GROUP_MEMBER).
/// 0103 <account id>.L <char name>.24B
-void clif_parse_RemovePartyMember(int fd, struct map_session_data *sd) {
+static void clif_parse_RemovePartyMember(int fd, struct map_session_data *sd)
+{
if(map->list[sd->bl.m].flag.partylock) {
// Party locked.
clif->message(fd, msg_fd(fd,227)); // Party modification is disabled in this map.
@@ -12070,11 +13065,11 @@ void clif_parse_RemovePartyMember(int fd, struct map_session_data *sd) {
party->removemember(sd, RFIFOL(fd,2), RFIFOP(fd,6));
}
-void clif_parse_PartyChangeOption(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyChangeOption(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to change party options.
/// 0102 <exp share rule>.L (CZ_CHANGE_GROUPEXPOPTION)
/// 07d7 <exp share rule>.L <item pickup rule>.B <item share rule>.B (CZ_GROUPINFO_CHANGE_V2)
-void clif_parse_PartyChangeOption(int fd, struct map_session_data *sd)
+static void clif_parse_PartyChangeOption(int fd, struct map_session_data *sd)
{
struct party_data *p;
int i;
@@ -12111,8 +13106,8 @@ void clif_parse_PartyChangeOption(int fd, struct map_session_data *sd)
* @param fd The incoming file descriptor.
* @param sd The related character.
*/
-void clif_parse_PartyMessage(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_PartyMessage(int fd, struct map_session_data *sd)
+static void clif_parse_PartyMessage(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyMessage(int fd, struct map_session_data *sd)
{
const struct packet_chat_message *packet = RP2PTR(fd);
char message[CHAT_SIZE_MAX + NAME_LENGTH + 3 + 1];
@@ -12123,20 +13118,21 @@ void clif_parse_PartyMessage(int fd, struct map_session_data *sd)
party->send_message(sd, message);
}
-void clif_parse_PartyChangeLeader(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyChangeLeader(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Changes Party Leader (CZ_CHANGE_GROUP_MASTER).
/// 07da <account id>.L
-void clif_parse_PartyChangeLeader(int fd, struct map_session_data* sd) {
+static void clif_parse_PartyChangeLeader(int fd, struct map_session_data *sd)
+{
party->changeleader(sd, map->id2sd(RFIFOL(fd,2)));
}
-void clif_parse_PartyBookingRegisterReq(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyBookingRegisterReq(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Party Booking in KRO [Spiria]
///
/// Request to register a party booking advertisement (CZ_PARTY_BOOKING_REQ_REGISTER).
/// 0802 <level>.W <map id>.W { <job>.W }*6
-void clif_parse_PartyBookingRegisterReq(int fd, struct map_session_data* sd)
+static void clif_parse_PartyBookingRegisterReq(int fd, struct map_session_data *sd)
{
#ifndef PARTY_RECRUIT
short level = RFIFOW(fd,2);
@@ -12159,7 +13155,7 @@ void clif_parse_PartyBookingRegisterReq(int fd, struct map_session_data* sd)
/// 0 = success
/// 1 = failure
/// 2 = already registered
-void clif_PartyBookingRegisterAck(struct map_session_data *sd, int flag)
+static void clif_PartyBookingRegisterAck(struct map_session_data *sd, int flag)
{
#ifndef PARTY_RECRUIT
int fd;
@@ -12175,10 +13171,10 @@ void clif_PartyBookingRegisterAck(struct map_session_data *sd, int flag)
#endif
}
-void clif_parse_PartyBookingSearchReq(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyBookingSearchReq(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to search for party booking advertisement (CZ_PARTY_BOOKING_REQ_SEARCH).
/// 0804 <level>.W <map id>.W <job>.W <last index>.L <result count>.W
-void clif_parse_PartyBookingSearchReq(int fd, struct map_session_data* sd)
+static void clif_parse_PartyBookingSearchReq(int fd, struct map_session_data *sd)
{
#ifndef PARTY_RECRUIT
short level = RFIFOW(fd,2);
@@ -12198,7 +13194,7 @@ void clif_parse_PartyBookingSearchReq(int fd, struct map_session_data* sd)
/// more results:
/// 0 = no
/// 1 = yes
-void clif_PartyBookingSearchAck(int fd, struct party_booking_ad_info** results, int count, bool more_result)
+static void clif_PartyBookingSearchAck(int fd, struct party_booking_ad_info **results, int count, bool more_result)
{
#ifndef PARTY_RECRUIT
int i, j;
@@ -12226,10 +13222,10 @@ void clif_PartyBookingSearchAck(int fd, struct party_booking_ad_info** results,
#endif
}
-void clif_parse_PartyBookingDeleteReq(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyBookingDeleteReq(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to delete own party booking advertisement (CZ_PARTY_BOOKING_REQ_DELETE).
/// 0806
-void clif_parse_PartyBookingDeleteReq(int fd, struct map_session_data* sd)
+static void clif_parse_PartyBookingDeleteReq(int fd, struct map_session_data *sd)
{
#ifndef PARTY_RECRUIT
if(party->booking_delete(sd))
@@ -12246,7 +13242,7 @@ void clif_parse_PartyBookingDeleteReq(int fd, struct map_session_data* sd)
/// 1 = success (auto-removed expired ad)
/// 2 = failure
/// 3 = nothing registered
-void clif_PartyBookingDeleteAck(struct map_session_data* sd, int flag)
+static void clif_PartyBookingDeleteAck(struct map_session_data *sd, int flag)
{
#ifndef PARTY_RECRUIT
int fd;
@@ -12262,10 +13258,10 @@ void clif_PartyBookingDeleteAck(struct map_session_data* sd, int flag)
#endif
}
-void clif_parse_PartyBookingUpdateReq(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyBookingUpdateReq(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to update party booking advertisement (CZ_PARTY_BOOKING_REQ_UPDATE).
/// 0808 { <job>.W }*6
-void clif_parse_PartyBookingUpdateReq(int fd, struct map_session_data* sd)
+static void clif_parse_PartyBookingUpdateReq(int fd, struct map_session_data *sd)
{
#ifndef PARTY_RECRUIT
short job[PARTY_BOOKING_JOBS];
@@ -12282,7 +13278,7 @@ void clif_parse_PartyBookingUpdateReq(int fd, struct map_session_data* sd)
/// Notification about new party booking advertisement (ZC_PARTY_BOOKING_NOTIFY_INSERT).
/// 0809 <index>.L <char name>.24B <expire time>.L <level>.W <map id>.W { <job>.W }*6
-void clif_PartyBookingInsertNotify(struct map_session_data* sd, struct party_booking_ad_info* pb_ad)
+static void clif_PartyBookingInsertNotify(struct map_session_data *sd, struct party_booking_ad_info *pb_ad)
{
#ifndef PARTY_RECRUIT
int i;
@@ -12308,7 +13304,7 @@ void clif_PartyBookingInsertNotify(struct map_session_data* sd, struct party_boo
/// Notification about updated party booking advertisement (ZC_PARTY_BOOKING_NOTIFY_UPDATE).
/// 080a <index>.L { <job>.W }*6
-void clif_PartyBookingUpdateNotify(struct map_session_data* sd, struct party_booking_ad_info* pb_ad)
+static void clif_PartyBookingUpdateNotify(struct map_session_data *sd, struct party_booking_ad_info *pb_ad)
{
#ifndef PARTY_RECRUIT
int i;
@@ -12329,7 +13325,7 @@ void clif_PartyBookingUpdateNotify(struct map_session_data* sd, struct party_boo
/// Notification about deleted party booking advertisement (ZC_PARTY_BOOKING_NOTIFY_DELETE).
/// 080b <index>.L
-void clif_PartyBookingDeleteNotify(struct map_session_data* sd, int index)
+static void clif_PartyBookingDeleteNotify(struct map_session_data *sd, int index)
{
#ifndef PARTY_RECRUIT
uint8 buf[6];
@@ -12344,13 +13340,13 @@ void clif_PartyBookingDeleteNotify(struct map_session_data* sd, int index)
#endif
}
-void clif_parse_PartyRecruitRegisterReq(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyRecruitRegisterReq(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Modified version of Party Booking System for 2012-04-10 or 2012-04-18 (RagexeRE).
/// Code written by mkbu95, Spiria, Yommy and Ind
/// Request to register a party booking advertisement (CZ_PARTY_RECRUIT_REQ_REGISTER).
/// 08e5 <level>.W <notice>.37B
-void clif_parse_PartyRecruitRegisterReq(int fd, struct map_session_data* sd)
+static void clif_parse_PartyRecruitRegisterReq(int fd, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
short level = RFIFOW(fd,2);
@@ -12367,7 +13363,7 @@ void clif_parse_PartyRecruitRegisterReq(int fd, struct map_session_data* sd)
/// more results:
/// 0 = no
/// 1 = yes
-void clif_PartyRecruitSearchAck(int fd, struct party_booking_ad_info** results, int count, bool more_result)
+static void clif_PartyRecruitSearchAck(int fd, struct party_booking_ad_info **results, int count, bool more_result)
{
#ifdef PARTY_RECRUIT
int i;
@@ -12402,7 +13398,7 @@ void clif_PartyRecruitSearchAck(int fd, struct party_booking_ad_info** results,
/// 0 = success
/// 1 = failure
/// 2 = already registered
-void clif_PartyRecruitRegisterAck(struct map_session_data *sd, int flag)
+static void clif_PartyRecruitRegisterAck(struct map_session_data *sd, int flag)
{
#ifdef PARTY_RECRUIT
int fd;
@@ -12418,10 +13414,10 @@ void clif_PartyRecruitRegisterAck(struct map_session_data *sd, int flag)
#endif
}
-void clif_parse_PartyRecruitSearchReq(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyRecruitSearchReq(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to search for party booking advertisement (CZ_PARTY_RECRUIT_REQ_SEARCH).
/// 08e7 <level>.W <map id>.W <last index>.L <result count>.W
-void clif_parse_PartyRecruitSearchReq(int fd, struct map_session_data* sd)
+static void clif_parse_PartyRecruitSearchReq(int fd, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
short level = RFIFOW(fd, 2);
@@ -12435,10 +13431,10 @@ void clif_parse_PartyRecruitSearchReq(int fd, struct map_session_data* sd)
#endif
}
-void clif_parse_PartyRecruitDeleteReq(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyRecruitDeleteReq(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to delete own party booking advertisement (CZ_PARTY_RECRUIT_REQ_DELETE).
/// 08e9
-void clif_parse_PartyRecruitDeleteReq(int fd, struct map_session_data* sd)
+static void clif_parse_PartyRecruitDeleteReq(int fd, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
if(party->booking_delete(sd))
@@ -12455,7 +13451,7 @@ void clif_parse_PartyRecruitDeleteReq(int fd, struct map_session_data* sd)
/// 1 = success (auto-removed expired ad)
/// 2 = failure
/// 3 = nothing registered
-void clif_PartyRecruitDeleteAck(struct map_session_data* sd, int flag)
+static void clif_PartyRecruitDeleteAck(struct map_session_data *sd, int flag)
{
#ifdef PARTY_RECRUIT
int fd;
@@ -12471,10 +13467,10 @@ void clif_PartyRecruitDeleteAck(struct map_session_data* sd, int flag)
#endif
}
-void clif_parse_PartyRecruitUpdateReq(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyRecruitUpdateReq(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to update party booking advertisement (CZ_PARTY_RECRUIT_REQ_UPDATE).
/// 08eb <notice>.37B
-void clif_parse_PartyRecruitUpdateReq(int fd, struct map_session_data *sd)
+static void clif_parse_PartyRecruitUpdateReq(int fd, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
const char *notice = RFIFOP(fd, 2);
@@ -12487,7 +13483,7 @@ void clif_parse_PartyRecruitUpdateReq(int fd, struct map_session_data *sd)
/// Notification about new party booking advertisement (ZC_PARTY_RECRUIT_NOTIFY_INSERT).
/// 08ec <index>.L <expire time>.L <char name>.24B <level>.W <notice>.37B
-void clif_PartyRecruitInsertNotify(struct map_session_data* sd, struct party_booking_ad_info* pb_ad)
+static void clif_PartyRecruitInsertNotify(struct map_session_data *sd, struct party_booking_ad_info *pb_ad)
{
#ifdef PARTY_RECRUIT
unsigned char buf[2+6+6+24+4+37+1];
@@ -12510,7 +13506,7 @@ void clif_PartyRecruitInsertNotify(struct map_session_data* sd, struct party_boo
/// Notification about updated party booking advertisement (ZC_PARTY_RECRUIT_NOTIFY_UPDATE).
/// 08ed <index>.L <notice>.37B
-void clif_PartyRecruitUpdateNotify(struct map_session_data *sd, struct party_booking_ad_info* pb_ad)
+static void clif_PartyRecruitUpdateNotify(struct map_session_data *sd, struct party_booking_ad_info *pb_ad)
{
#ifdef PARTY_RECRUIT
unsigned char buf[2+6+37+1];
@@ -12529,7 +13525,7 @@ void clif_PartyRecruitUpdateNotify(struct map_session_data *sd, struct party_boo
/// Notification about deleted party booking advertisement (ZC_PARTY_RECRUIT_NOTIFY_DELETE).
/// 08ee <index>.L
-void clif_PartyRecruitDeleteNotify(struct map_session_data* sd, int index)
+static void clif_PartyRecruitDeleteNotify(struct map_session_data *sd, int index)
{
#ifdef PARTY_RECRUIT
unsigned char buf[2+6+1];
@@ -12544,10 +13540,10 @@ void clif_PartyRecruitDeleteNotify(struct map_session_data* sd, int index)
#endif
}
-void clif_parse_PartyBookingAddFilteringList(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyBookingAddFilteringList(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to add to filtering list (PARTY_RECRUIT_ADD_FILTERLINGLIST).
/// 08ef <index>.L
-void clif_parse_PartyBookingAddFilteringList(int fd, struct map_session_data *sd)
+static void clif_parse_PartyBookingAddFilteringList(int fd, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
int index = RFIFOL(fd, 2);
@@ -12558,10 +13554,10 @@ void clif_parse_PartyBookingAddFilteringList(int fd, struct map_session_data *sd
#endif
}
-void clif_parse_PartyBookingSubFilteringList(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyBookingSubFilteringList(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to remove from filtering list (PARTY_RECRUIT_SUB_FILTERLINGLIST).
/// 08f0 <GID>.L
-void clif_parse_PartyBookingSubFilteringList(int fd, struct map_session_data *sd)
+static void clif_parse_PartyBookingSubFilteringList(int fd, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
int gid = RFIFOL(fd, 2);
@@ -12572,10 +13568,10 @@ void clif_parse_PartyBookingSubFilteringList(int fd, struct map_session_data *sd
#endif
}
-void clif_parse_PartyBookingReqVolunteer(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyBookingReqVolunteer(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to recruit volunteer (PARTY_RECRUIT_REQ_VOLUNTEER).
/// 08f1 <index>.L
-void clif_parse_PartyBookingReqVolunteer(int fd, struct map_session_data *sd)
+static void clif_parse_PartyBookingReqVolunteer(int fd, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
int index = RFIFOL(fd, 2);
@@ -12588,7 +13584,7 @@ void clif_parse_PartyBookingReqVolunteer(int fd, struct map_session_data *sd)
/// Request volunteer information (PARTY_RECRUIT_VOLUNTEER_INFO).
/// 08f2 <AID>.L <job>.L <level>.W <char name>.24B
-void clif_PartyBookingVolunteerInfo(int index, struct map_session_data *sd)
+static void clif_PartyBookingVolunteerInfo(int index, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
unsigned char buf[2+4+4+2+24+1];
@@ -12608,31 +13604,31 @@ void clif_PartyBookingVolunteerInfo(int index, struct map_session_data *sd)
#if 0 //Disabled for now. Needs more info.
/// 08f3 <packet type>.W <cost>.L
-void clif_PartyBookingPersonalSetting(int fd, struct map_session_data *sd)
+static void clif_PartyBookingPersonalSetting(int fd, struct map_session_data *sd)
{
}
-void clif_parse_PartyBookingShowEquipment(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyBookingShowEquipment(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// 08f4 <target GID>.L
-void clif_parse_PartyBookingShowEquipment(int fd, struct map_session_data *sd)
+static void clif_parse_PartyBookingShowEquipment(int fd, struct map_session_data *sd)
{
}
-void clif_parse_PartyBookingReqRecall(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyBookingReqRecall(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// 08f5 <packet len>.W
-void clif_parse_PartyBookingReqRecall(int fd, struct map_session_data *sd)
+static void clif_parse_PartyBookingReqRecall(int fd, struct map_session_data *sd)
{
}
-void clif_PartyBookingRecallCost(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_PartyBookingRecallCost(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// 08f6 <money>.L <map name>.16B
-void clif_PartyBookingRecallCost(int fd, struct map_session_data *sd)
+static void clif_PartyBookingRecallCost(int fd, struct map_session_data *sd)
{
}
-void clif_parse_PartyBookingAckRecall(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyBookingAckRecall(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// 08f7 <result>.B
-void clif_parse_PartyBookingAckRecall(int fd, struct map_session_data *sd)
+static void clif_parse_PartyBookingAckRecall(int fd, struct map_session_data *sd)
{
}
@@ -12643,15 +13639,15 @@ void clif_parse_PartyBookingAckRecall(int fd, struct map_session_data *sd)
/// REASON_REFUSE = 0x2
/// REASON_NOT_PARTY_MEMBER = 0x3
/// REASON_ETC = 0x4
-void clif_PartyBookingFailedRecall(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_PartyBookingFailedRecall(int fd, struct map_session_data *sd)
+static void clif_PartyBookingFailedRecall(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_PartyBookingFailedRecall(int fd, struct map_session_data *sd)
{
}
#endif //if 0
-void clif_parse_PartyBookingRefuseVolunteer(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyBookingRefuseVolunteer(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// 08f9 <refuse AID>.L
-void clif_parse_PartyBookingRefuseVolunteer(int fd, struct map_session_data *sd)
+static void clif_parse_PartyBookingRefuseVolunteer(int fd, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
unsigned int aid = RFIFOL(fd, 2);
@@ -12662,9 +13658,9 @@ void clif_parse_PartyBookingRefuseVolunteer(int fd, struct map_session_data *sd)
#endif
}
-void clif_PartyBookingRefuseVolunteer(unsigned int aid, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_PartyBookingRefuseVolunteer(unsigned int aid, struct map_session_data *sd) __attribute__((nonnull (2)));
/// 08fa <index>.L
-void clif_PartyBookingRefuseVolunteer(unsigned int aid, struct map_session_data *sd)
+static void clif_PartyBookingRefuseVolunteer(unsigned int aid, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
unsigned char buf[2+6];
@@ -12678,9 +13674,9 @@ void clif_PartyBookingRefuseVolunteer(unsigned int aid, struct map_session_data
#endif
}
-void clif_parse_PartyBookingCancelVolunteer(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyBookingCancelVolunteer(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// 08fb <index>.L
-void clif_parse_PartyBookingCancelVolunteer(int fd, struct map_session_data *sd)
+static void clif_parse_PartyBookingCancelVolunteer(int fd, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
int index = RFIFOL(fd, 2);
@@ -12692,7 +13688,7 @@ void clif_parse_PartyBookingCancelVolunteer(int fd, struct map_session_data *sd)
}
/// 0909 <index>.L
-void clif_PartyBookingCancelVolunteer(int index, struct map_session_data *sd)
+static void clif_PartyBookingCancelVolunteer(int index, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
unsigned char buf[2+6+1];
@@ -12708,7 +13704,7 @@ void clif_PartyBookingCancelVolunteer(int index, struct map_session_data *sd)
}
/// 090b <gid>.L <char name>.24B
-void clif_PartyBookingAddFilteringList(int index, struct map_session_data *sd)
+static void clif_PartyBookingAddFilteringList(int index, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
unsigned char buf[2+6+24+1];
@@ -12725,7 +13721,7 @@ void clif_PartyBookingAddFilteringList(int index, struct map_session_data *sd)
}
/// 090c <gid>.L <char name>.24B
-void clif_PartyBookingSubFilteringList(int gid, struct map_session_data *sd)
+static void clif_PartyBookingSubFilteringList(int gid, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
unsigned char buf[2+6+24+1];
@@ -12743,28 +13739,28 @@ void clif_PartyBookingSubFilteringList(int gid, struct map_session_data *sd)
#if 0
/// 091c <aid>.L
-void clif_PartyBookingCancelVolunteerToPM(struct map_session_data *sd)
+static void clif_PartyBookingCancelVolunteerToPM(struct map_session_data *sd)
{
}
/// 0971 <pm_aid>.L
-void clif_PartyBookingRefuseVolunteerToPM(struct map_session_data *sd)
+static void clif_PartyBookingRefuseVolunteerToPM(struct map_session_data *sd)
{
}
#endif //if 0
-void clif_parse_CloseVending(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_CloseVending(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to close own vending (CZ_REQ_CLOSESTORE).
/// 012e
-void clif_parse_CloseVending(int fd, struct map_session_data* sd)
+static void clif_parse_CloseVending(int fd, struct map_session_data *sd)
{
vending->close(sd);
}
-void clif_parse_VendingListReq(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_VendingListReq(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to open a vending shop (CZ_REQ_BUY_FROMMC).
/// 0130 <account id>.L
-void clif_parse_VendingListReq(int fd, struct map_session_data* sd)
+static void clif_parse_VendingListReq(int fd, struct map_session_data *sd)
{
if( sd->npc_id ) {// using an NPC
return;
@@ -12772,14 +13768,20 @@ void clif_parse_VendingListReq(int fd, struct map_session_data* sd)
vending->list(sd,RFIFOL(fd,2));
}
-void clif_parse_PurchaseReq(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_PurchaseReq(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Shop item(s) purchase request (CZ_PC_PURCHASE_ITEMLIST_FROMMC).
/// 0134 <packet len>.W <account id>.L { <amount>.W <index>.W }*
-void clif_parse_PurchaseReq(int fd, struct map_session_data* sd)
+static void clif_parse_PurchaseReq(int fd, struct map_session_data *sd)
{
- int len = (int)RFIFOW(fd,2) - 8;
- int id = RFIFOL(fd,4);
- const uint8 *data = RFIFOP(fd,8);
+ int len = (int)RFIFOW(fd, 2) - 8;
+ int id;
+ const uint8 *data;
+
+ if (len < 1)
+ return;
+
+ id = RFIFOL(fd, 4);
+ data = RFIFOP(fd, 8);
vending->purchase(sd, id, sd->vended_id, data, len/4);
@@ -12787,15 +13789,21 @@ void clif_parse_PurchaseReq(int fd, struct map_session_data* sd)
sd->vended_id = 0;
}
-void clif_parse_PurchaseReq2(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_PurchaseReq2(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Shop item(s) purchase request (CZ_PC_PURCHASE_ITEMLIST_FROMMC2).
/// 0801 <packet len>.W <account id>.L <unique id>.L { <amount>.W <index>.W }*
-void clif_parse_PurchaseReq2(int fd, struct map_session_data* sd)
+static void clif_parse_PurchaseReq2(int fd, struct map_session_data *sd)
{
- int len = (int)RFIFOW(fd,2) - 12;
- int aid = RFIFOL(fd,4);
- int uid = RFIFOL(fd,8);
- const uint8 *data = RFIFOP(fd,12);
+ int len = (int)RFIFOW(fd, 2) - 12;
+ int aid;
+ int uid;
+ const uint8 *data;
+
+ if (len < 1)
+ return;
+ aid = RFIFOL(fd, 4);
+ uid = RFIFOL(fd, 8);
+ data = RFIFOP(fd, 12);
vending->purchase(sd, aid, uid, data, len/4);
@@ -12803,18 +13811,26 @@ void clif_parse_PurchaseReq2(int fd, struct map_session_data* sd)
sd->vended_id = 0;
}
-void clif_parse_OpenVending(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_OpenVending(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Confirm or cancel the shop preparation window.
/// 012f <packet len>.W <shop name>.80B { <index>.W <amount>.W <price>.L }* (CZ_REQ_OPENSTORE)
/// 01b2 <packet len>.W <shop name>.80B <result>.B { <index>.W <amount>.W <price>.L }* (CZ_REQ_OPENSTORE2)
/// result:
/// 0 = canceled
/// 1 = open
-void clif_parse_OpenVending(int fd, struct map_session_data* sd) {
- short len = (short)RFIFOW(fd,2) - 85;
- const char *message = RFIFOP(fd,4);
- bool flag = (RFIFOB(fd,84) != 0) ? true : false;
- const uint8 *data = RFIFOP(fd,85);
+static void clif_parse_OpenVending(int fd, struct map_session_data *sd)
+{
+ int len = (int)RFIFOW(fd, 2) - 85;
+ const char *message;
+ bool flag;
+ const uint8 *data;
+
+ if (len < 0)
+ return;
+
+ message = RFIFOP(fd,4);
+ flag = (RFIFOB(fd,84) != 0) ? true : false;
+ data = RFIFOP(fd,85);
if( !flag )
sd->state.prevend = sd->state.workinprogress = 0;
@@ -12836,10 +13852,10 @@ void clif_parse_OpenVending(int fd, struct map_session_data* sd) {
vending->open(sd, message, data, len/8);
}
-void clif_parse_CreateGuild(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_CreateGuild(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Guild creation request (CZ_REQ_MAKE_GUILD).
/// 0165 <char id>.L <guild name>.24B
-void clif_parse_CreateGuild(int fd,struct map_session_data *sd)
+static void clif_parse_CreateGuild(int fd, struct map_session_data *sd)
{
char name[NAME_LENGTH];
safestrncpy(name, RFIFOP(fd,6), NAME_LENGTH);
@@ -12852,15 +13868,15 @@ void clif_parse_CreateGuild(int fd,struct map_session_data *sd)
guild->create(sd, name);
}
-void clif_parse_GuildCheckMaster(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildCheckMaster(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request for guild window interface permissions (CZ_REQ_GUILD_MENUINTERFACE).
/// 014d
-void clif_parse_GuildCheckMaster(int fd, struct map_session_data *sd)
+static void clif_parse_GuildCheckMaster(int fd, struct map_session_data *sd)
{
clif->guild_masterormember(sd);
}
-void clif_parse_GuildRequestInfo(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildRequestInfo(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request for guild window information (CZ_REQ_GUILD_MENU).
/// 014f <type>.L
/// type:
@@ -12871,7 +13887,7 @@ void clif_parse_GuildRequestInfo(int fd, struct map_session_data *sd) __attribut
/// 4 = expulsion list
/// 5 = unknown (GM_ALLGUILDLIST)
/// 6 = notice
-void clif_parse_GuildRequestInfo(int fd, struct map_session_data *sd)
+static void clif_parse_GuildRequestInfo(int fd, struct map_session_data *sd)
{
if( !sd->status.guild_id && !sd->bg_id )
return;
@@ -12901,41 +13917,54 @@ void clif_parse_GuildRequestInfo(int fd, struct map_session_data *sd)
}
}
-void clif_parse_GuildChangePositionInfo(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildChangePositionInfo(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to update guild positions (CZ_REG_CHANGE_GUILD_POSITIONINFO).
/// 0161 <packet len>.W { <position id>.L <mode>.L <ranking>.L <pay rate>.L <name>.24B }*
-void clif_parse_GuildChangePositionInfo(int fd, struct map_session_data *sd)
+static void clif_parse_GuildChangePositionInfo(int fd, struct map_session_data *sd)
{
int i;
+ int count = (RFIFOW(fd, 2) - 4) / 40;
- if(!sd->state.gmaster_flag)
+ if (!sd->state.gmaster_flag)
return;
- for(i = 4; i < RFIFOW(fd,2); i += 40 ){
- guild->change_position(sd->status.guild_id, RFIFOL(fd,i), RFIFOL(fd,i+4), RFIFOL(fd,i+12), RFIFOP(fd,i+16));
+ for (i = 0; i < count; i ++ ) {
+ int idx = i * 40 + 4;
+ guild->change_position(sd->status.guild_id, RFIFOL(fd, idx), RFIFOL(fd, idx + 4), RFIFOL(fd, idx + 12), RFIFOP(fd, idx + 16));
}
}
-void clif_parse_GuildChangeMemberPosition(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildChangeMemberPosition(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to update the position of guild members (CZ_REQ_CHANGE_MEMBERPOS).
/// 0155 <packet len>.W { <account id>.L <char id>.L <position id>.L }*
-void clif_parse_GuildChangeMemberPosition(int fd, struct map_session_data *sd)
+static void clif_parse_GuildChangeMemberPosition(int fd, struct map_session_data *sd)
{
int i;
+ int len = RFIFOW(fd, 2);
+ int count = (len - 4) / 12;
if(!sd->state.gmaster_flag)
return;
- for(i=4;i<RFIFOW(fd,2);i+=12){
- guild->change_memberposition(sd->status.guild_id,
- RFIFOL(fd,i),RFIFOL(fd,i+4),RFIFOL(fd,i+8));
+ // Guild leadership change
+ if (len == 16 && RFIFOL(fd, 12) == 0) {
+ guild->gm_change(sd->status.guild_id, RFIFOL(fd, 8));
+ return;
+ }
+
+ for (i = 0; i < count; i++) {
+ int idx = i * 12 + 4;
+ int position = RFIFOL(fd, idx + 8);
+ if (position > 0 && position < MAX_GUILDPOSITION) {
+ guild->change_memberposition(sd->status.guild_id, RFIFOL(fd, idx), RFIFOL(fd, idx + 4), position);
+ }
}
}
-void clif_parse_GuildRequestEmblem(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildRequestEmblem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request for guild emblem data (CZ_REQ_GUILD_EMBLEM_IMG).
/// 0151 <guild id>.L
-void clif_parse_GuildRequestEmblem(int fd,struct map_session_data *sd)
+static void clif_parse_GuildRequestEmblem(int fd, struct map_session_data *sd)
{
struct guild* g;
int guild_id = RFIFOL(fd,2);
@@ -12945,7 +13974,8 @@ void clif_parse_GuildRequestEmblem(int fd,struct map_session_data *sd)
}
/// Validates data of a guild emblem (compressed bitmap)
-bool clif_validate_emblem(const uint8 *emblem, unsigned long emblem_len) {
+static bool clif_validate_emblem(const uint8 *emblem, unsigned long emblem_len)
+{
enum e_bitmapconst {
RGBTRIPLE_SIZE = 3, // sizeof(RGBTRIPLE)
RGBQUAD_SIZE = 4, // sizeof(RGBQUAD)
@@ -13069,10 +14099,10 @@ bool clif_validate_emblem(const uint8 *emblem, unsigned long emblem_len) {
return true;
}
-void clif_parse_GuildChangeEmblem(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildChangeEmblem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to update the guild emblem (CZ_REGISTER_GUILD_EMBLEM_IMG).
/// 0153 <packet len>.W <emblem data>.?B
-void clif_parse_GuildChangeEmblem(int fd,struct map_session_data *sd)
+static void clif_parse_GuildChangeEmblem(int fd, struct map_session_data *sd)
{
unsigned int emblem_len = RFIFOW(fd,2)-4;
const uint8* emblem = RFIFOP(fd,4);
@@ -13089,10 +14119,10 @@ void clif_parse_GuildChangeEmblem(int fd,struct map_session_data *sd)
guild->change_emblem(sd, emblem_len, (const char*)emblem);
}
-void clif_parse_GuildChangeNotice(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildChangeNotice(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Guild notice update request (CZ_GUILD_NOTICE).
/// 016e <guild id>.L <msg1>.60B <msg2>.120B
-void clif_parse_GuildChangeNotice(int fd, struct map_session_data* sd)
+static void clif_parse_GuildChangeNotice(int fd, struct map_session_data *sd)
{
int guild_id = RFIFOL(fd,2);
char *msg1 = NULL, *msg2 = NULL;
@@ -13114,7 +14144,8 @@ void clif_parse_GuildChangeNotice(int fd, struct map_session_data* sd)
}
// Helper function for guild invite functions
-bool clif_sub_guild_invite(int fd, struct map_session_data *sd, struct map_session_data *t_sd) {
+static bool clif_sub_guild_invite(int fd, struct map_session_data *sd, struct map_session_data *t_sd)
+{
if ( t_sd == NULL )// not online or does not exist
return false;
@@ -13130,24 +14161,31 @@ bool clif_sub_guild_invite(int fd, struct map_session_data *sd, struct map_sessi
return false;
}
+ // Players in a clan can't join a guild
+ if (t_sd->clan != NULL) {
+ clif->message(fd, msg_fd(fd, 140)); // You can't join in a clan if you're in a guild.
+ return false;
+ }
+
guild->invite(sd,t_sd);
return true;
}
-void clif_parse_GuildInvite(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildInvite(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Guild invite request (CZ_REQ_JOIN_GUILD).
/// 0168 <account id>.L <inviter account id>.L <inviter char id>.L
-void clif_parse_GuildInvite(int fd,struct map_session_data *sd) {
+static void clif_parse_GuildInvite(int fd, struct map_session_data *sd)
+{
struct map_session_data *t_sd = map->id2sd(RFIFOL(fd,2));
if (!clif_sub_guild_invite(fd, sd, t_sd))
return;
}
-void clif_parse_GuildInvite2(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildInvite2(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Guild invite request (/guildinvite) (CZ_REQ_JOIN_GUILD2).
/// 0916 <char name>.24B
-void clif_parse_GuildInvite2(int fd, struct map_session_data *sd)
+static void clif_parse_GuildInvite2(int fd, struct map_session_data *sd)
{
char nick[NAME_LENGTH];
struct map_session_data *t_sd = NULL;
@@ -13158,21 +14196,22 @@ void clif_parse_GuildInvite2(int fd, struct map_session_data *sd)
clif_sub_guild_invite(fd, sd, t_sd);
}
-void clif_parse_GuildReplyInvite(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildReplyInvite(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to guild invitation (CZ_JOIN_GUILD).
/// 016b <guild id>.L <answer>.L
/// answer:
/// 0 = refuse
/// 1 = accept
-void clif_parse_GuildReplyInvite(int fd,struct map_session_data *sd)
+static void clif_parse_GuildReplyInvite(int fd, struct map_session_data *sd)
{
guild->reply_invite(sd,RFIFOL(fd,2),RFIFOL(fd,6));
}
-void clif_parse_GuildLeave(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildLeave(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to leave guild (CZ_REQ_LEAVE_GUILD).
/// 0159 <guild id>.L <account id>.L <char id>.L <reason>.40B
-void clif_parse_GuildLeave(int fd,struct map_session_data *sd) {
+static void clif_parse_GuildLeave(int fd, struct map_session_data *sd)
+{
if(map->list[sd->bl.m].flag.guildlock) {
clif->message(fd, msg_fd(fd,228)); // Guild modification is disabled in this map.
return;
@@ -13185,10 +14224,11 @@ void clif_parse_GuildLeave(int fd,struct map_session_data *sd) {
guild->leave(sd,RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10), RFIFOP(fd,14));
}
-void clif_parse_GuildExpulsion(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildExpulsion(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to expel a member of a guild (CZ_REQ_BAN_GUILD).
/// 015b <guild id>.L <account id>.L <char id>.L <reason>.40B
-void clif_parse_GuildExpulsion(int fd,struct map_session_data *sd) {
+static void clif_parse_GuildExpulsion(int fd, struct map_session_data *sd)
+{
if( map->list[sd->bl.m].flag.guildlock || sd->bg_id ) {
clif->message(fd, msg_fd(fd,228)); // Guild modification is disabled in this map.
return;
@@ -13206,8 +14246,8 @@ void clif_parse_GuildExpulsion(int fd,struct map_session_data *sd) {
* @param fd The incoming file descriptor.
* @param sd The related character.
*/
-void clif_parse_GuildMessage(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_GuildMessage(int fd, struct map_session_data *sd)
+static void clif_parse_GuildMessage(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildMessage(int fd, struct map_session_data *sd)
{
const struct packet_chat_message *packet = RP2PTR(fd);
char message[CHAT_SIZE_MAX + NAME_LENGTH + 3 + 1];
@@ -13221,10 +14261,11 @@ void clif_parse_GuildMessage(int fd, struct map_session_data *sd)
guild->send_message(sd, message);
}
-void clif_parse_GuildRequestAlliance(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildRequestAlliance(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Guild alliance request (CZ_REQ_ALLY_GUILD).
/// 0170 <account id>.L <inviter account id>.L <inviter char id>.L
-void clif_parse_GuildRequestAlliance(int fd, struct map_session_data *sd) {
+static void clif_parse_GuildRequestAlliance(int fd, struct map_session_data *sd)
+{
struct map_session_data *t_sd;
if(!sd->state.gmaster_flag)
@@ -13246,24 +14287,25 @@ void clif_parse_GuildRequestAlliance(int fd, struct map_session_data *sd) {
guild->reqalliance(sd,t_sd);
}
-void clif_parse_GuildReplyAlliance(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildReplyAlliance(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to a guild alliance request (CZ_ALLY_GUILD).
/// 0172 <inviter account id>.L <answer>.L
/// answer:
/// 0 = refuse
/// 1 = accept
-void clif_parse_GuildReplyAlliance(int fd, struct map_session_data *sd)
+static void clif_parse_GuildReplyAlliance(int fd, struct map_session_data *sd)
{
guild->reply_reqalliance(sd,RFIFOL(fd,2),RFIFOL(fd,6));
}
-void clif_parse_GuildDelAlliance(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildDelAlliance(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to delete a guild alliance or opposition (CZ_REQ_DELETE_RELATED_GUILD).
/// 0183 <opponent guild id>.L <relation>.L
/// relation:
/// 0 = Ally
/// 1 = Enemy
-void clif_parse_GuildDelAlliance(int fd, struct map_session_data *sd) {
+static void clif_parse_GuildDelAlliance(int fd, struct map_session_data *sd)
+{
if(!sd->state.gmaster_flag)
return;
@@ -13274,10 +14316,11 @@ void clif_parse_GuildDelAlliance(int fd, struct map_session_data *sd) {
guild->delalliance(sd,RFIFOL(fd,2),RFIFOL(fd,6));
}
-void clif_parse_GuildOpposition(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildOpposition(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to set a guild as opposition (CZ_REQ_HOSTILE_GUILD).
/// 0180 <account id>.L
-void clif_parse_GuildOpposition(int fd, struct map_session_data *sd) {
+static void clif_parse_GuildOpposition(int fd, struct map_session_data *sd)
+{
struct map_session_data *t_sd;
if(!sd->state.gmaster_flag)
@@ -13299,24 +14342,27 @@ void clif_parse_GuildOpposition(int fd, struct map_session_data *sd) {
guild->opposition(sd,t_sd);
}
-void clif_parse_GuildBreak(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildBreak(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to delete own guild (CZ_REQ_DISORGANIZE_GUILD).
/// 015d <key>.40B
/// key:
/// now guild name; might have been (intended) email, since the
/// field name and size is same as the one in CH_DELETE_CHAR.
-void clif_parse_GuildBreak(int fd, struct map_session_data *sd) {
+static void clif_parse_GuildBreak(int fd, struct map_session_data *sd)
+{
+ char key[40];
if( map->list[sd->bl.m].flag.guildlock ) {
clif->message(fd, msg_fd(fd,228)); // Guild modification is disabled in this map.
return;
}
- guild->dobreak(sd, RFIFOP(fd,2));
+ safestrncpy(key, RFIFOP(fd, 2), 40);
+ guild->dobreak(sd, key);
}
/// Pet
///
-void clif_parse_PetMenu(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PetMenu(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to invoke a pet menu action (CZ_COMMAND_PET).
/// 01a1 <type>.B
/// type:
@@ -13325,23 +14371,23 @@ void clif_parse_PetMenu(int fd, struct map_session_data *sd) __attribute__((nonn
/// 2 = performance
/// 3 = return to egg
/// 4 = unequip accessory
-void clif_parse_PetMenu(int fd, struct map_session_data *sd)
+static void clif_parse_PetMenu(int fd, struct map_session_data *sd)
{
pet->menu(sd,RFIFOB(fd,2));
}
-void clif_parse_CatchPet(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_CatchPet(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Attempt to tame a monster (CZ_TRYCAPTURE_MONSTER).
/// 019f <id>.L
-void clif_parse_CatchPet(int fd, struct map_session_data *sd)
+static void clif_parse_CatchPet(int fd, struct map_session_data *sd)
{
pet->catch_process2(sd,RFIFOL(fd,2));
}
-void clif_parse_SelectEgg(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_SelectEgg(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to pet incubator egg selection dialog (CZ_SELECT_PETEGG).
/// 01a7 <index>.W
-void clif_parse_SelectEgg(int fd, struct map_session_data *sd)
+static void clif_parse_SelectEgg(int fd, struct map_session_data *sd)
{
if (sd->menuskill_id != SA_TAMINGMONSTER || sd->menuskill_val != -1) {
return;
@@ -13350,7 +14396,7 @@ void clif_parse_SelectEgg(int fd, struct map_session_data *sd)
clif_menuskill_clear(sd);
}
-void clif_parse_SendEmotion(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_SendEmotion(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to display pet's emotion/talk (CZ_PET_ACT).
/// 01a9 <data>.L
/// data:
@@ -13375,26 +14421,137 @@ void clif_parse_SendEmotion(int fd, struct map_session_data *sd) __attribute__((
/// 2 = satisfied (noting)
/// 3 = stuffed (full)
/// 4 = full (so_full)
-void clif_parse_SendEmotion(int fd, struct map_session_data *sd)
+static void clif_parse_SendEmotion(int fd, struct map_session_data *sd)
{
if(sd->pd)
clif->pet_emotion(sd->pd,RFIFOL(fd,2));
}
-void clif_parse_ChangePetName(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_ChangePetName(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to change pet's name (CZ_RENAME_PET).
/// 01a5 <name>.24B
-void clif_parse_ChangePetName(int fd, struct map_session_data *sd)
+static void clif_parse_ChangePetName(int fd, struct map_session_data *sd)
{
pet->change_name(sd, RFIFOP(fd,2));
}
-void clif_parse_GMKick(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_pet_evolution(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+/// Request to Evolve the pet (CZ_PET_EVOLUTION) [Dastgir/Hercules]
+/// 09fb <Length>.W <EvolvedPetEggID>.W {<index>.W <amount>.W}*items
+static void clif_parse_pet_evolution(int fd, struct map_session_data *sd)
+{
+ const struct PACKET_CZ_PET_EVOLUTION *p = RP2PTR(fd);
+ int i = 0, idx, petIndex;
+
+ Assert_retv(p->PacketLength >= (uint16)sizeof(struct PACKET_CZ_PET_EVOLUTION));
+
+ if (sd->status.pet_id == 0) {
+ clif->petEvolutionResult(fd, PET_EVOL_NO_CALLPET);
+ return;
+ }
+
+ ARR_FIND(0, sd->status.inventorySize, idx, sd->status.inventory[idx].card[0] == CARD0_PET &&
+ sd->status.pet_id == MakeDWord(sd->status.inventory[idx].card[1], sd->status.inventory[idx].card[2]));
+
+ if (idx == sd->status.inventorySize) {
+ clif->petEvolutionResult(fd, PET_EVOL_NO_PETEGG);
+ return;
+ }
+
+ // Not Loyal Yet
+ if (sd->pd == NULL || sd->pd->pet.intimate < 900) {
+ clif->petEvolutionResult(fd, PET_EVOL_RG_FAMILIAR);
+ return;
+ }
+
+ ARR_FIND(0, MAX_PET_DB, petIndex, pet->db[petIndex].class_ == sd->pd->pet.class_);
+
+ if (petIndex == MAX_PET_DB) {
+ // Which error?
+ clif->petEvolutionResult(fd, PET_EVOL_UNKNOWN);
+ return;
+ }
+
+ // Client side validation is not done as it is insecure.
+ for (i = 0; i < VECTOR_LENGTH(pet->db[petIndex].evolve_data); i++) {
+ struct pet_evolve_data *ped = &VECTOR_INDEX(pet->db[petIndex].evolve_data, i);
+ if (ped->petEggId == p->EvolvedPetEggID) {
+ int j;
+ int pet_id;
+
+ if (VECTOR_LENGTH(ped->items) == 0) {
+ clif->petEvolutionResult(fd, PET_EVOL_NO_RECIPE);
+ return;
+ }
+ for (j = 0; j < VECTOR_LENGTH(ped->items); j++) {
+ struct itemlist_entry *list = &VECTOR_INDEX(ped->items, j);
+ int n = pc->search_inventory(sd, list->id);
+
+ if (n == INDEX_NOT_FOUND) {
+ clif->petEvolutionResult(fd, PET_EVOL_NO_MATERIAL);
+ return;
+ }
+ }
+
+ for (j = 0; j < VECTOR_LENGTH(ped->items); j++) {
+ struct itemlist_entry *list = &VECTOR_INDEX(ped->items, j);
+ int n = pc->search_inventory(sd, list->id);
+
+ if (pc->delitem(sd, n, list->amount, 0, DELITEM_NORMAL, LOG_TYPE_EGG) == 1) {
+ clif->petEvolutionResult(fd, PET_EVOL_NO_MATERIAL);
+ return;
+ }
+ }
+
+ // Return to Egg
+ pet->return_egg(sd, sd->pd);
+
+ if (pc->delitem(sd, idx, 1, 0, DELITEM_NORMAL, LOG_TYPE_EGG) == 1) {
+ clif->petEvolutionResult(fd, PET_EVOL_NO_PETEGG);
+ return;
+ }
+
+ pet_id = pet->search_petDB_index(ped->petEggId, PET_EGG);
+ if (pet_id >= 0) {
+ sd->catch_target_class = pet->db[pet_id].class_;
+
+ intif->create_pet(
+ sd->status.account_id, sd->status.char_id,
+ (short)pet->db[pet_id].class_, (short)mob->db(pet->db[pet_id].class_)->lv,
+ pet->db[pet_id].EggID, 0, (short)pet->db[pet_id].intimate,
+ 100, 0, 1, pet->db[pet_id].jname);
+ clif->petEvolutionResult(fd, PET_EVOL_SUCCESS);
+ } else {
+ clif->petEvolutionResult(fd, PET_EVOL_UNKNOWN);
+ }
+ return;
+ }
+ }
+
+ clif->petEvolutionResult(fd, PET_EVOL_UNKNOWN);
+}
+
+/**
+ * Result of Pet Evolution (ZC_PET_EVOLUTION_RESULT)
+ * 0x9fc <Result>.L
+ */
+static void clif_pet_evolution_result(int fd, enum pet_evolution_result result)
+{
+#if PACKETVER >= 20140122
+ WFIFOHEAD(fd, packet_len(0x9fc));
+ WFIFOW(fd, 0) = 0x9fc;
+ WFIFOL(fd, 2) = result;
+ WFIFOSET(fd, packet_len(0x9fc));
+#endif
+}
+
+static void clif_parse_GMKick(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /kill (CZ_DISCONNECT_CHARACTER).
/// Request to disconnect a character.
/// 00cc <account id>.L
/// NOTE: Also sent when using GM right click menu "(name) force to quit"
-void clif_parse_GMKick(int fd, struct map_session_data *sd) {
+static void clif_parse_GMKick(int fd, struct map_session_data *sd)
+{
struct block_list *target;
int tid;
@@ -13448,17 +14605,18 @@ void clif_parse_GMKick(int fd, struct map_session_data *sd) {
}
}
-void clif_parse_GMKickAll(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_GMKickAll(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /killall (CZ_DISCONNECT_ALL_CHARACTER).
/// Request to disconnect all characters.
/// 00ce
-void clif_parse_GMKickAll(int fd, struct map_session_data* sd) {
+static void clif_parse_GMKickAll(int fd, struct map_session_data *sd)
+{
char cmd[15];
sprintf(cmd,"%ckickall",atcommand->at_symbol);
atcommand->exec(fd, sd, cmd, true);
}
-void clif_parse_GMShift(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GMShift(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /remove (CZ_REMOVE_AID).
/// Request to warp to a character with given login ID.
/// 01ba <account name>.24B
@@ -13466,7 +14624,7 @@ void clif_parse_GMShift(int fd, struct map_session_data *sd) __attribute__((nonn
/// /shift (CZ_SHIFT).
/// Request to warp to a character with given name.
/// 01bb <char name>.24B
-void clif_parse_GMShift(int fd, struct map_session_data *sd)
+static void clif_parse_GMShift(int fd, struct map_session_data *sd)
{
// FIXME: remove is supposed to receive account name for clients prior 20100803RE
char player_name[NAME_LENGTH];
@@ -13478,11 +14636,12 @@ void clif_parse_GMShift(int fd, struct map_session_data *sd)
atcommand->exec(fd, sd, command, true);
}
-void clif_parse_GMRemove2(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_GMRemove2(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /remove (CZ_REMOVE_AID_SSO).
/// Request to warp to a character with given account ID.
/// 0843 <account id>.L
-void clif_parse_GMRemove2(int fd, struct map_session_data* sd) {
+static void clif_parse_GMRemove2(int fd, struct map_session_data *sd)
+{
int account_id;
struct map_session_data* pl_sd;
@@ -13494,7 +14653,7 @@ void clif_parse_GMRemove2(int fd, struct map_session_data* sd) {
}
}
-void clif_parse_GMRecall(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GMRecall(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /recall (CZ_RECALL).
/// Request to summon a player with given login ID to own position.
/// 01bc <account name>.24B
@@ -13502,7 +14661,7 @@ void clif_parse_GMRecall(int fd, struct map_session_data *sd) __attribute__((non
/// /summon (CZ_RECALL_GID).
/// Request to summon a player with given name to own position.
/// 01bd <char name>.24B
-void clif_parse_GMRecall(int fd, struct map_session_data *sd)
+static void clif_parse_GMRecall(int fd, struct map_session_data *sd)
{
// FIXME: recall is supposed to receive account name for clients prior 20100803RE
char player_name[NAME_LENGTH];
@@ -13514,11 +14673,12 @@ void clif_parse_GMRecall(int fd, struct map_session_data *sd)
atcommand->exec(fd, sd, command, true);
}
-void clif_parse_GMRecall2(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_GMRecall2(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /recall (CZ_RECALL_SSO).
/// Request to summon a player with given account ID to own position.
/// 0842 <account id>.L
-void clif_parse_GMRecall2(int fd, struct map_session_data* sd) {
+static void clif_parse_GMRecall2(int fd, struct map_session_data *sd)
+{
int account_id;
struct map_session_data* pl_sd;
@@ -13530,7 +14690,7 @@ void clif_parse_GMRecall2(int fd, struct map_session_data* sd) {
}
}
-void clif_parse_GM_Monster_Item(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GM_Monster_Item(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /item /monster (CZ_ITEM_CREATE).
/// Request to execute GM commands.
/// usage:
@@ -13544,7 +14704,7 @@ void clif_parse_GM_Monster_Item(int fd, struct map_session_data *sd) __attribute
/// /item agitinvest - reset current global agit investments.(not yet implemented)
/// 013f <item/mob name>.24B
/// 09ce <item/mob name>.100B [Ind/Yommy<3]
-void clif_parse_GM_Monster_Item(int fd, struct map_session_data *sd)
+static void clif_parse_GM_Monster_Item(int fd, struct map_session_data *sd)
{
const struct packet_gm_monster_item *p = RP2PTR(fd);
int i, count;
@@ -13600,12 +14760,13 @@ void clif_parse_GM_Monster_Item(int fd, struct map_session_data *sd)
}
}
-void clif_parse_GMHide(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GMHide(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /hide (CZ_CHANGE_EFFECTSTATE).
/// 019d <effect state>.L
/// effect state:
/// TODO: Any OPTION_* ?
-void clif_parse_GMHide(int fd, struct map_session_data *sd) {
+static void clif_parse_GMHide(int fd, struct map_session_data *sd)
+{
char cmd[6];
sprintf(cmd,"%chide",atcommand->at_symbol);
@@ -13613,14 +14774,15 @@ void clif_parse_GMHide(int fd, struct map_session_data *sd) {
atcommand->exec(fd, sd, cmd, true);
}
-void clif_parse_GMReqNoChat(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GMReqNoChat(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to adjust player's manner points (CZ_REQ_GIVE_MANNER_POINT).
/// 0149 <account id>.L <type>.B <value>.W
/// type:
/// 0 = positive points
/// 1 = negative points
/// 2 = self mute (+10 minutes)
-void clif_parse_GMReqNoChat(int fd,struct map_session_data *sd) {
+static void clif_parse_GMReqNoChat(int fd, struct map_session_data *sd)
+{
int id, type, value;
struct map_session_data *dstsd;
char command[NAME_LENGTH+15];
@@ -13667,11 +14829,11 @@ void clif_parse_GMReqNoChat(int fd,struct map_session_data *sd) {
atcommand->exec(fd, sd, command, true);
}
-void clif_parse_GMRc(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_GMRc(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /rc (CZ_REQ_GIVE_MANNER_BYNAME).
/// GM adjustment of a player's manner value by -60.
/// 0212 <char name>.24B
-void clif_parse_GMRc(int fd, struct map_session_data* sd)
+static void clif_parse_GMRc(int fd, struct map_session_data *sd)
{
char command[NAME_LENGTH+15];
char name[NAME_LENGTH];
@@ -13684,7 +14846,8 @@ void clif_parse_GMRc(int fd, struct map_session_data* sd)
/// Result of request to resolve account name (ZC_ACK_ACCOUNTNAME).
/// 01e0 <account id>.L <account name>.24B
-void clif_account_name(struct map_session_data* sd, int account_id, const char* accname) {
+static void clif_account_name(struct map_session_data *sd, int account_id, const char *accname)
+{
int fd;
nullpo_retv(sd);
@@ -13696,10 +14859,10 @@ void clif_account_name(struct map_session_data* sd, int account_id, const char*
WFIFOSET(fd,packet_len(0x1e0));
}
-void clif_parse_GMReqAccountName(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GMReqAccountName(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// GM requesting account name (for right-click gm menu) (CZ_REQ_ACCOUNTNAME).
/// 01df <account id>.L
-void clif_parse_GMReqAccountName(int fd, struct map_session_data *sd)
+static void clif_parse_GMReqAccountName(int fd, struct map_session_data *sd)
{
int account_id = RFIFOL(fd,2);
@@ -13707,14 +14870,15 @@ void clif_parse_GMReqAccountName(int fd, struct map_session_data *sd)
clif->account_name(sd, account_id, ""); // insert account name here >_<
}
-void clif_parse_GMChangeMapType(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GMChangeMapType(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /changemaptype <x> <y> <type> (CZ_CHANGE_MAPTYPE).
/// GM single cell type change request.
/// 0198 <x>.W <y>.W <type>.W
/// type:
/// 0 = not walkable
/// 1 = walkable
-void clif_parse_GMChangeMapType(int fd, struct map_session_data *sd) {
+static void clif_parse_GMChangeMapType(int fd, struct map_session_data *sd)
+{
int x,y,type;
if (!pc_has_permission(sd, PC_PERM_USE_CHANGEMAPTYPE))
@@ -13729,14 +14893,14 @@ void clif_parse_GMChangeMapType(int fd, struct map_session_data *sd) {
//FIXME: once players leave the map, the client 'forgets' this information.
}
-void clif_parse_PMIgnore(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_PMIgnore(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /in /ex (CZ_SETTING_WHISPER_PC).
/// Request to allow/deny whispers from a nick.
/// 00cf <nick>.24B <type>.B
/// type:
/// 0 = (/ex nick) deny speech from nick
/// 1 = (/in nick) allow speech from nick
-void clif_parse_PMIgnore(int fd, struct map_session_data* sd)
+static void clif_parse_PMIgnore(int fd, struct map_session_data *sd)
{
char nick[NAME_LENGTH];
uint8 type;
@@ -13783,14 +14947,14 @@ void clif_parse_PMIgnore(int fd, struct map_session_data* sd)
clif->wisexin(sd, type, 0); // success
}
-void clif_parse_PMIgnoreAll(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PMIgnoreAll(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /inall /exall (CZ_SETTING_WHISPER_STATE).
/// Request to allow/deny all whispers.
/// 00d0 <type>.B
/// type:
/// 0 = (/exall) deny all speech
/// 1 = (/inall) allow all speech
-void clif_parse_PMIgnoreAll(int fd, struct map_session_data *sd)
+static void clif_parse_PMIgnoreAll(int fd, struct map_session_data *sd)
{
int type = RFIFOB(fd,2), flag;
@@ -13821,7 +14985,8 @@ void clif_parse_PMIgnoreAll(int fd, struct map_session_data *sd)
/// Whisper ignore list (ZC_WHISPER_LIST).
/// 00d4 <packet len>.W { <char name>.24B }*
-void clif_PMIgnoreList(struct map_session_data* sd) {
+static void clif_PMIgnoreList(struct map_session_data *sd)
+{
int i, fd;
nullpo_retv(sd);
@@ -13837,18 +15002,18 @@ void clif_PMIgnoreList(struct map_session_data* sd) {
WFIFOSET(fd,WFIFOW(fd,2));
}
-void clif_parse_PMIgnoreList(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PMIgnoreList(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Whisper ignore list request (CZ_REQ_WHISPER_LIST).
/// 00d3
-void clif_parse_PMIgnoreList(int fd,struct map_session_data *sd)
+static void clif_parse_PMIgnoreList(int fd, struct map_session_data *sd)
{
clif->PMIgnoreList(sd);
}
-void clif_parse_NoviceDoriDori(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_NoviceDoriDori(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to invoke the /doridori recovery bonus (CZ_DORIDORI).
/// 01e7
-void clif_parse_NoviceDoriDori(int fd, struct map_session_data *sd)
+static void clif_parse_NoviceDoriDori(int fd, struct map_session_data *sd)
{
if (sd->state.doridori) return;
@@ -13865,7 +15030,7 @@ void clif_parse_NoviceDoriDori(int fd, struct map_session_data *sd)
}
}
-void clif_parse_NoviceExplosionSpirits(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_NoviceExplosionSpirits(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to invoke the effect of super novice's guardian angel prayer (CZ_CHOPOKGI).
/// 01ed
/// Note: This packet is caused by 7 lines of any text, followed by
@@ -13874,14 +15039,14 @@ void clif_parse_NoviceExplosionSpirits(int fd, struct map_session_data *sd) __at
/// "Dear angel, can you hear my voice?"
/// "I am" (space separated player name) "Super Novice~"
/// "Help me out~ Please~ T_T"
-void clif_parse_NoviceExplosionSpirits(int fd, struct map_session_data *sd)
+static void clif_parse_NoviceExplosionSpirits(int fd, struct map_session_data *sd)
{
/* [Ind/Hercules] */
/* game client is currently broken on this (not sure the packetver range) */
/* it sends the request when the criteria doesn't match (and of course we let it fail) */
/* so restoring the old parse_globalmes method. */
if ((sd->job & MAPID_UPPERMASK) == MAPID_SUPER_NOVICE) {
- unsigned int next = pc->nextbaseexp(sd);
+ uint64 next = pc->nextbaseexp(sd);
if( next == 0 ) next = pc->thisbaseexp(sd);
if( next ) {
int percent = (int)( ( (float)sd->status.base_exp/(float)next )*1000. );
@@ -13899,10 +15064,12 @@ void clif_parse_NoviceExplosionSpirits(int fd, struct map_session_data *sd)
/// Toggles a single friend online/offline [Skotlex] (ZC_FRIENDS_STATE).
/// 0206 <account id>.L <char id>.L <state>.B
+/// 0206 <account id>.L <char id>.L <state>.B <name>.24B
/// state:
/// 0 = online
/// 1 = offline
-void clif_friendslist_toggle(struct map_session_data *sd,int account_id, int char_id, int online) {
+static void clif_friendslist_toggle(struct map_session_data *sd, int account_id, int char_id, int online)
+{
int i, fd;
nullpo_retv(sd);
@@ -13918,12 +15085,16 @@ void clif_friendslist_toggle(struct map_session_data *sd,int account_id, int cha
WFIFOW(fd, 0) = 0x206;
WFIFOL(fd, 2) = sd->status.friends[i].account_id;
WFIFOL(fd, 6) = sd->status.friends[i].char_id;
- WFIFOB(fd,10) = !online; //Yeah, a 1 here means "logged off", go figure...
+ WFIFOB(fd, 10) = !online; //Yeah, a 1 here means "logged off", go figure...
+#if PACKETVER_MAIN_NUM >= 20180307 || PACKETVER_RE_NUM >= 20180221
+ memcpy(WFIFOP(fd, 11), sd->status.friends[i].name, NAME_LENGTH);
+#endif // PACKETVER_ZERO
+
WFIFOSET(fd, packet_len(0x206));
}
//Sub-function called from clif_foreachclient to toggle friends on/off [Skotlex]
-int clif_friendslist_toggle_sub(struct map_session_data *sd,va_list ap)
+static int clif_friendslist_toggle_sub(struct map_session_data *sd, va_list ap)
{
int account_id, char_id, online;
account_id = va_arg(ap, int);
@@ -13935,22 +15106,30 @@ int clif_friendslist_toggle_sub(struct map_session_data *sd,va_list ap)
/// Sends the whole friends list (ZC_FRIENDS_LIST).
/// 0201 <packet len>.W { <account id>.L <char id>.L <name>.24B }*
-void clif_friendslist_send(struct map_session_data *sd)
+/// 0201 <packet len>.W { <account id>.L <char id>.L }*
+static void clif_friendslist_send(struct map_session_data *sd)
{
int i = 0, n, fd = sd->fd;
+#if PACKETVER_MAIN_NUM >= 20180307 || PACKETVER_RE_NUM >= 20180221
+ const int offset = 8;
+#else
+ const int offset = 32;
+#endif
nullpo_retv(sd);
// Send friends list
- WFIFOHEAD(fd, MAX_FRIENDS * 32 + 4);
+ WFIFOHEAD(fd, MAX_FRIENDS * offset + 4);
WFIFOW(fd, 0) = 0x201;
for(i = 0; i < MAX_FRIENDS && sd->status.friends[i].char_id; i++) {
- WFIFOL(fd, 4 + 32 * i + 0) = sd->status.friends[i].account_id;
- WFIFOL(fd, 4 + 32 * i + 4) = sd->status.friends[i].char_id;
- memcpy(WFIFOP(fd, 4 + 32 * i + 8), &sd->status.friends[i].name, NAME_LENGTH);
+ WFIFOL(fd, 4 + offset * i + 0) = sd->status.friends[i].account_id;
+ WFIFOL(fd, 4 + offset * i + 4) = sd->status.friends[i].char_id;
+#if !(PACKETVER_MAIN_NUM >= 20180307 || PACKETVER_RE_NUM >= 20180221)
+ memcpy(WFIFOP(fd, 4 + offset * i + 8), &sd->status.friends[i].name, NAME_LENGTH);
+#endif
}
if (i) {
- WFIFOW(fd,2) = 4 + 32 * i;
+ WFIFOW(fd,2) = 4 + offset * i;
WFIFOSET(fd, WFIFOW(fd,2));
}
@@ -13967,7 +15146,7 @@ void clif_friendslist_send(struct map_session_data *sd)
/// 1 = MsgStringTable[822]="(%s) does not want to be friends with you."
/// 2 = MsgStringTable[819]="Your Friend List is full."
/// 3 = MsgStringTable[820]="(%s)'s Friend List is full."
-void clif_friendslist_reqack(struct map_session_data *sd, struct map_session_data *f_sd, int type)
+static void clif_friendslist_reqack(struct map_session_data *sd, struct map_session_data *f_sd, int type)
{
int fd;
nullpo_retv(sd);
@@ -13986,7 +15165,8 @@ void clif_friendslist_reqack(struct map_session_data *sd, struct map_session_dat
/// Asks a player for permission to be added as friend (ZC_REQ_ADD_FRIENDS).
/// 0207 <req account id>.L <req char id>.L <req char name>.24B
-void clif_friendlist_req(struct map_session_data* sd, int account_id, int char_id, const char* name) {
+static void clif_friendlist_req(struct map_session_data *sd, int account_id, int char_id, const char *name)
+{
int fd;
nullpo_retv(sd);
@@ -13999,10 +15179,10 @@ void clif_friendlist_req(struct map_session_data* sd, int account_id, int char_i
WFIFOSET(fd,packet_len(0x207));
}
-void clif_parse_FriendsListAdd(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_FriendsListAdd(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to add a player as friend (CZ_ADD_FRIENDS).
/// 0202 <name>.24B
-void clif_parse_FriendsListAdd(int fd, struct map_session_data *sd)
+static void clif_parse_FriendsListAdd(int fd, struct map_session_data *sd)
{
struct map_session_data *f_sd;
int i;
@@ -14050,14 +15230,14 @@ void clif_parse_FriendsListAdd(int fd, struct map_session_data *sd)
clif->friendlist_req(f_sd, sd->status.account_id, sd->status.char_id, sd->status.name);
}
-void clif_parse_FriendsListReply(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_FriendsListReply(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to a friend add request (CZ_ACK_REQ_ADD_FRIENDS).
/// 0208 <inviter account id>.L <inviter char id>.L <result>.B
/// 0208 <inviter account id>.L <inviter char id>.L <result>.L (PACKETVER >= 6)
/// result:
/// 0 = rejected
/// 1 = accepted
-void clif_parse_FriendsListReply(int fd, struct map_session_data *sd)
+static void clif_parse_FriendsListReply(int fd, struct map_session_data *sd)
{
struct map_session_data *f_sd;
int account_id;
@@ -14096,6 +15276,7 @@ void clif_parse_FriendsListReply(int fd, struct map_session_data *sd)
f_sd->status.friends[i].char_id = sd->status.char_id;
memcpy(f_sd->status.friends[i].name, sd->status.name, NAME_LENGTH);
clif->friendslist_reqack(f_sd, sd, 0);
+ achievement->validate_friend_add(f_sd); // Achievements [Smokexyz/Hercules]
if (battle_config.friend_auto_add) {
// Also add f_sd to sd's friendlist.
@@ -14114,14 +15295,15 @@ void clif_parse_FriendsListReply(int fd, struct map_session_data *sd)
sd->status.friends[i].char_id = f_sd->status.char_id;
memcpy(sd->status.friends[i].name, f_sd->status.name, NAME_LENGTH);
clif->friendslist_reqack(sd, f_sd, 0);
+ achievement->validate_friend_add(sd); // Achievements [Smokexyz/Hercules]
}
}
}
-void clif_parse_FriendsListRemove(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_FriendsListRemove(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to delete a friend (CZ_DELETE_FRIENDS).
/// 0203 <account id>.L <char id>.L
-void clif_parse_FriendsListRemove(int fd, struct map_session_data *sd)
+static void clif_parse_FriendsListRemove(int fd, struct map_session_data *sd)
{
struct map_session_data *f_sd = NULL;
int account_id, char_id;
@@ -14184,7 +15366,8 @@ void clif_parse_FriendsListRemove(int fd, struct map_session_data *sd)
/// /pvpinfo list (ZC_ACK_PVPPOINT).
/// 0210 <char id>.L <account id>.L <win point>.L <lose point>.L <point>.L
-void clif_PVPInfo(struct map_session_data* sd) {
+static void clif_PVPInfo(struct map_session_data *sd)
+{
int fd;
nullpo_retv(sd);
@@ -14199,10 +15382,10 @@ void clif_PVPInfo(struct map_session_data* sd) {
WFIFOSET(fd, packet_len(0x210));
}
-void clif_parse_PVPInfo(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PVPInfo(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /pvpinfo (CZ_REQ_PVPPOINT).
/// 020f <char id>.L <account id>.L
-void clif_parse_PVPInfo(int fd,struct map_session_data *sd)
+static void clif_parse_PVPInfo(int fd, struct map_session_data *sd)
{
// TODO: Is there a way to use this on an another player (char/acc id)?
clif->PVPInfo(sd);
@@ -14211,7 +15394,8 @@ void clif_parse_PVPInfo(int fd,struct map_session_data *sd)
/// Ranking list
/// ranking pointlist { <name>.24B <point>.L }*10
-void clif_ranklist_sub(unsigned char *buf, enum fame_list_type type) {
+static void clif_ranklist_sub(unsigned char *buf, enum fame_list_type type)
+{
const char* name;
struct fame_list* list;
int i;
@@ -14244,7 +15428,7 @@ void clif_ranklist_sub(unsigned char *buf, enum fame_list_type type) {
}
/// 097d <RankingType>.W {<CharName>.24B <point>L}*10 <mypoint>L (ZC_ACK_RANKING)
-void clif_ranklist(struct map_session_data *sd, enum fame_list_type type)
+static void clif_ranklist(struct map_session_data *sd, enum fame_list_type type)
{
#if PACKETVER >= 20120502
int fd;
@@ -14267,11 +15451,12 @@ void clif_ranklist(struct map_session_data *sd, enum fame_list_type type)
#endif
}
-void clif_parse_ranklist(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_ranklist(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/*
* 097c <type> (CZ_REQ_RANKING)
* */
-void clif_parse_ranklist(int fd, struct map_session_data *sd) {
+static void clif_parse_ranklist(int fd, struct map_session_data *sd)
+{
int16 type = RFIFOW(fd, 2); //type
switch( type ) {
@@ -14284,7 +15469,7 @@ void clif_parse_ranklist(int fd, struct map_session_data *sd) {
}
// 097e <RankingType>.W <point>.L <TotalPoint>.L (ZC_UPDATE_RANKING_POINT)
-void clif_update_rankingpoint(struct map_session_data *sd, enum fame_list_type type, int points)
+static void clif_update_rankingpoint(struct map_session_data *sd, enum fame_list_type type, int points)
{
#if PACKETVER < 20120502
switch( type ) {
@@ -14310,7 +15495,8 @@ void clif_update_rankingpoint(struct map_session_data *sd, enum fame_list_type t
/// /blacksmith list (ZC_BLACKSMITH_RANK).
/// 0219 { <name>.24B }*10 { <point>.L }*10
-void clif_blacksmith(struct map_session_data* sd) {
+static void clif_blacksmith(struct map_session_data *sd)
+{
int fd;
nullpo_retv(sd);
@@ -14321,16 +15507,18 @@ void clif_blacksmith(struct map_session_data* sd) {
WFIFOSET(fd, packet_len(0x219));
}
-void clif_parse_Blacksmith(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Blacksmith(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /blacksmith (CZ_BLACKSMITH_RANK).
/// 0217
-void clif_parse_Blacksmith(int fd,struct map_session_data *sd) {
+static void clif_parse_Blacksmith(int fd, struct map_session_data *sd)
+{
clif->blacksmith(sd);
}
/// Notification about backsmith points (ZC_BLACKSMITH_POINT).
/// 021b <points>.L <total points>.L
-void clif_fame_blacksmith(struct map_session_data *sd, int points) {
+static void clif_fame_blacksmith(struct map_session_data *sd, int points)
+{
int fd;
nullpo_retv(sd);
@@ -14344,7 +15532,8 @@ void clif_fame_blacksmith(struct map_session_data *sd, int points) {
/// /alchemist list (ZC_ALCHEMIST_RANK).
/// 021a { <name>.24B }*10 { <point>.L }*10
-void clif_alchemist(struct map_session_data* sd) {
+static void clif_alchemist(struct map_session_data *sd)
+{
int fd;
nullpo_retv(sd);
@@ -14355,16 +15544,18 @@ void clif_alchemist(struct map_session_data* sd) {
WFIFOSET(fd, packet_len(0x21a));
}
-void clif_parse_Alchemist(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Alchemist(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /alchemist (CZ_ALCHEMIST_RANK).
/// 0218
-void clif_parse_Alchemist(int fd,struct map_session_data *sd) {
+static void clif_parse_Alchemist(int fd, struct map_session_data *sd)
+{
clif->alchemist(sd);
}
/// Notification about alchemist points (ZC_ALCHEMIST_POINT).
/// 021c <points>.L <total points>.L
-void clif_fame_alchemist(struct map_session_data *sd, int points) {
+static void clif_fame_alchemist(struct map_session_data *sd, int points)
+{
int fd;
nullpo_retv(sd);
@@ -14378,7 +15569,8 @@ void clif_fame_alchemist(struct map_session_data *sd, int points) {
/// /taekwon list (ZC_TAEKWON_RANK).
/// 0226 { <name>.24B }*10 { <point>.L }*10
-void clif_taekwon(struct map_session_data* sd) {
+static void clif_taekwon(struct map_session_data *sd)
+{
int fd;
nullpo_retv(sd);
@@ -14389,16 +15581,18 @@ void clif_taekwon(struct map_session_data* sd) {
WFIFOSET(fd, packet_len(0x226));
}
-void clif_parse_Taekwon(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Taekwon(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /taekwon (CZ_TAEKWON_RANK).
/// 0225
-void clif_parse_Taekwon(int fd,struct map_session_data *sd) {
+static void clif_parse_Taekwon(int fd, struct map_session_data *sd)
+{
clif->taekwon(sd);
}
/// Notification about taekwon points (ZC_TAEKWON_POINT).
/// 0224 <points>.L <total points>.L
-void clif_fame_taekwon(struct map_session_data *sd, int points) {
+static void clif_fame_taekwon(struct map_session_data *sd, int points)
+{
int fd;
nullpo_retv(sd);
@@ -14412,7 +15606,8 @@ void clif_fame_taekwon(struct map_session_data *sd, int points) {
/// /pk list (ZC_KILLER_RANK).
/// 0238 { <name>.24B }*10 { <point>.L }*10
-void clif_ranking_pk(struct map_session_data* sd) {
+static void clif_ranking_pk(struct map_session_data *sd)
+{
int i, fd;
nullpo_retv(sd);
@@ -14426,21 +15621,22 @@ void clif_ranking_pk(struct map_session_data* sd) {
WFIFOSET(fd, packet_len(0x238));
}
-void clif_parse_RankingPk(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_RankingPk(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /pk (CZ_KILLER_RANK).
/// 0237
-void clif_parse_RankingPk(int fd,struct map_session_data *sd) {
+static void clif_parse_RankingPk(int fd, struct map_session_data *sd)
+{
clif->ranking_pk(sd);
}
-void clif_parse_FeelSaveOk(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_FeelSaveOk(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// SG Feel save OK [Komurka] (CZ_AGREE_STARPLACE).
/// 0254 <which>.B
/// which:
/// 0 = sun
/// 1 = moon
/// 2 = star
-void clif_parse_FeelSaveOk(int fd,struct map_session_data *sd)
+static void clif_parse_FeelSaveOk(int fd, struct map_session_data *sd)
{
int i;
if (sd->menuskill_id != SG_FEEL)
@@ -14450,7 +15646,7 @@ void clif_parse_FeelSaveOk(int fd,struct map_session_data *sd)
sd->feel_map[i].index = map_id2index(sd->bl.m);
sd->feel_map[i].m = sd->bl.m;
- pc_setglobalreg(sd,script->add_str(pc->sg_info[i].feel_var),sd->feel_map[i].index);
+ pc_setglobalreg(sd,script->add_variable(pc->sg_info[i].feel_var),sd->feel_map[i].index);
#if 0 // Are these really needed? Shouldn't they show up automatically from the feel save packet?
clif_misceffect2(&sd->bl, 0x1b0);
@@ -14466,7 +15662,7 @@ void clif_parse_FeelSaveOk(int fd,struct map_session_data *sd)
/// 0 = sun
/// 1 = moon
/// 2 = star
-void clif_feel_req(int fd, struct map_session_data *sd, uint16 skill_lv)
+static void clif_feel_req(int fd, struct map_session_data *sd, uint16 skill_lv)
{
nullpo_retv(sd);
WFIFOHEAD(fd,packet_len(0x253));
@@ -14477,18 +15673,18 @@ void clif_feel_req(int fd, struct map_session_data *sd, uint16 skill_lv)
sd->menuskill_val = skill_lv;
}
-void clif_parse_ChangeHomunculusName(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_ChangeHomunculusName(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to change homunculus' name (CZ_RENAME_MER).
/// 0231 <name>.24B
-void clif_parse_ChangeHomunculusName(int fd, struct map_session_data *sd)
+static void clif_parse_ChangeHomunculusName(int fd, struct map_session_data *sd)
{
homun->change_name(sd, RFIFOP(fd,2));
}
-void clif_parse_HomMoveToMaster(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_HomMoveToMaster(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to warp/move homunculus/mercenary to it's owner (CZ_REQUEST_MOVETOOWNER).
/// 0234 <id>.L
-void clif_parse_HomMoveToMaster(int fd, struct map_session_data *sd)
+static void clif_parse_HomMoveToMaster(int fd, struct map_session_data *sd)
{
int id = RFIFOL(fd,2); // Mercenary or Homunculus
struct block_list *bl = NULL;
@@ -14506,10 +15702,10 @@ void clif_parse_HomMoveToMaster(int fd, struct map_session_data *sd)
unit->walktoxy(bl, ud->to_x, ud->to_y, 4);
}
-void clif_parse_HomMoveTo(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_HomMoveTo(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to move homunculus/mercenary (CZ_REQUEST_MOVENPC).
/// 0232 <id>.L <position data>.3B
-void clif_parse_HomMoveTo(int fd, struct map_session_data *sd)
+static void clif_parse_HomMoveTo(int fd, struct map_session_data *sd)
{
int id = RFIFOL(fd,2); // Mercenary or Homunculus
struct block_list *bl = NULL;
@@ -14527,12 +15723,12 @@ void clif_parse_HomMoveTo(int fd, struct map_session_data *sd)
unit->walktoxy(bl, x, y, 4);
}
-void clif_parse_HomAttack(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_HomAttack(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to do an action with homunculus/mercenary (CZ_REQUEST_ACTNPC).
/// 0233 <id>.L <target id>.L <action>.B
/// action:
/// always 0
-void clif_parse_HomAttack(int fd,struct map_session_data *sd)
+static void clif_parse_HomAttack(int fd, struct map_session_data *sd)
{
struct block_list *bl = NULL;
int id = RFIFOL(fd,2),
@@ -14549,7 +15745,7 @@ void clif_parse_HomAttack(int fd,struct map_session_data *sd)
unit->attack(bl, target_id, action_type != 0);
}
-void clif_parse_HomMenu(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_HomMenu(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to invoke a homunculus menu action (CZ_COMMAND_MER).
/// 022d <type>.W <command>.B
/// type:
@@ -14558,7 +15754,8 @@ void clif_parse_HomMenu(int fd, struct map_session_data *sd) __attribute__((nonn
/// 0 = homunculus information
/// 1 = feed
/// 2 = delete
-void clif_parse_HomMenu(int fd, struct map_session_data *sd) { //[orn]
+static void clif_parse_HomMenu(int fd, struct map_session_data *sd)
+{ //[orn]
int cmd;
cmd = RFIFOW(fd,0);
@@ -14569,10 +15766,11 @@ void clif_parse_HomMenu(int fd, struct map_session_data *sd) { //[orn]
homun->menu(sd,RFIFOB(fd,packet_db[cmd].pos[1]));
}
-void clif_parse_AutoRevive(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_AutoRevive(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to resurrect oneself using Token of Siegfried (CZ_STANDING_RESURRECTION).
/// 0292
-void clif_parse_AutoRevive(int fd, struct map_session_data *sd) {
+static void clif_parse_AutoRevive(int fd, struct map_session_data *sd)
+{
int item_position = pc->search_inventory(sd, ITEMID_TOKEN_OF_SIEGFRIED);
int hpsp = 100;
@@ -14604,7 +15802,8 @@ void clif_parse_AutoRevive(int fd, struct map_session_data *sd) {
/// <itemdefPower>.W <plusdefPower>.W <mdefPower>.W <plusmdefPower>.W
/// <hitSuccessValue>.W <avoidSuccessValue>.W <plusAvoidSuccessValue>.W
/// <criticalSuccessValue>.W <ASPD>.W <plusASPD>.W
-void clif_check(int fd, struct map_session_data* pl_sd) {
+static void clif_check(int fd, struct map_session_data *pl_sd)
+{
nullpo_retv(pl_sd);
WFIFOHEAD(fd,packet_len(0x214));
WFIFOW(fd, 0) = 0x214;
@@ -14637,11 +15836,11 @@ void clif_check(int fd, struct map_session_data* pl_sd) {
WFIFOSET(fd,packet_len(0x214));
}
-void clif_parse_Check(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Check(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /check (CZ_REQ_STATUS_GM).
/// Request character's status values.
/// 0213 <char name>.24B
-void clif_parse_Check(int fd, struct map_session_data *sd)
+static void clif_parse_Check(int fd, struct map_session_data *sd)
{
char charname[NAME_LENGTH];
struct map_session_data* pl_sd;
@@ -14667,7 +15866,7 @@ void clif_parse_Check(int fd, struct map_session_data *sd)
/// result:
/// 0 = success
/// 1 = failure
-void clif_Mail_setattachment(int fd, int index, uint8 flag)
+static void clif_Mail_setattachment(int fd, int index, uint8 flag)
{
WFIFOHEAD(fd,packet_len(0x255));
WFIFOW(fd,0) = 0x255;
@@ -14682,7 +15881,7 @@ void clif_Mail_setattachment(int fd, int index, uint8 flag)
/// 0 = success
/// 1 = failure
/// 2 = too many items
-void clif_Mail_getattachment(int fd, uint8 flag)
+static void clif_Mail_getattachment(int fd, uint8 flag)
{
WFIFOHEAD(fd,packet_len(0x245));
WFIFOW(fd,0) = 0x245;
@@ -14695,7 +15894,7 @@ void clif_Mail_getattachment(int fd, uint8 flag)
/// result:
/// 0 = success
/// 1 = recipient does not exist
-void clif_Mail_send(int fd, bool fail)
+static void clif_Mail_send(int fd, bool fail)
{
WFIFOHEAD(fd,packet_len(0x249));
WFIFOW(fd,0) = 0x249;
@@ -14708,7 +15907,7 @@ void clif_Mail_send(int fd, bool fail)
/// result:
/// 0 = success
/// 1 = failure
-void clif_Mail_delete(int fd, int mail_id, short fail)
+static void clif_Mail_delete(int fd, int mail_id, short fail)
{
WFIFOHEAD(fd, packet_len(0x257));
WFIFOW(fd,0) = 0x257;
@@ -14722,7 +15921,7 @@ void clif_Mail_delete(int fd, int mail_id, short fail)
/// result:
/// 0 = success
/// 1 = failure
-void clif_Mail_return(int fd, int mail_id, short fail)
+static void clif_Mail_return(int fd, int mail_id, short fail)
{
WFIFOHEAD(fd,packet_len(0x274));
WFIFOW(fd,0) = 0x274;
@@ -14733,7 +15932,7 @@ void clif_Mail_return(int fd, int mail_id, short fail)
/// Notification about new mail (ZC_MAIL_RECEIVE).
/// 024a <mail id>.L <title>.40B <sender>.24B
-void clif_Mail_new(int fd, int mail_id, const char *sender, const char *title)
+static void clif_Mail_new(int fd, int mail_id, const char *sender, const char *title)
{
nullpo_retv(sender);
nullpo_retv(title);
@@ -14750,7 +15949,7 @@ void clif_Mail_new(int fd, int mail_id, const char *sender, const char *title)
/// type:
/// 0 = open
/// 1 = close
-void clif_Mail_window(int fd, int flag)
+static void clif_Mail_window(int fd, int flag)
{
WFIFOHEAD(fd,packet_len(0x260));
WFIFOW(fd,0) = 0x260;
@@ -14763,7 +15962,7 @@ void clif_Mail_window(int fd, int flag)
/// read:
/// 0 = unread
/// 1 = read
-void clif_Mail_refreshinbox(struct map_session_data *sd)
+static void clif_Mail_refreshinbox(struct map_session_data *sd)
{
int fd = sd->fd;
struct mail_data *md;
@@ -14800,10 +15999,10 @@ void clif_Mail_refreshinbox(struct map_session_data *sd)
}
}
-void clif_parse_Mail_refreshinbox(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Mail_refreshinbox(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Mail inbox list request (CZ_MAIL_GET_LIST).
/// 023f
-void clif_parse_Mail_refreshinbox(int fd, struct map_session_data *sd)
+static void clif_parse_Mail_refreshinbox(int fd, struct map_session_data *sd)
{
struct mail_data* md = &sd->mail.inbox;
@@ -14820,7 +16019,7 @@ void clif_parse_Mail_refreshinbox(int fd, struct map_session_data *sd)
/// 0242 <packet len>.W <mail id>.L <title>.40B <sender>.24B <time>.L <zeny>.L
/// <amount>.L <name id>.W <item type>.W <identified>.B <damaged>.B <refine>.B
/// <card1>.W <card2>.W <card3>.W <card4>.W <message>.?B
-void clif_Mail_read(struct map_session_data *sd, int mail_id)
+static void clif_Mail_read(struct map_session_data *sd, int mail_id)
{
int i, fd = sd->fd;
@@ -14883,10 +16082,10 @@ void clif_Mail_read(struct map_session_data *sd, int mail_id)
}
}
-void clif_parse_Mail_read(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Mail_read(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to open a mail (CZ_MAIL_OPEN).
/// 0241 <mail id>.L
-void clif_parse_Mail_read(int fd, struct map_session_data *sd)
+static void clif_parse_Mail_read(int fd, struct map_session_data *sd)
{
int mail_id = RFIFOL(fd,2);
@@ -14898,10 +16097,10 @@ void clif_parse_Mail_read(int fd, struct map_session_data *sd)
clif->mail_read(sd, RFIFOL(fd,2));
}
-void clif_parse_Mail_getattach(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Mail_getattach(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to receive mail's attachment (CZ_MAIL_GET_ITEM).
/// 0244 <mail id>.L
-void clif_parse_Mail_getattach(int fd, struct map_session_data *sd)
+static void clif_parse_Mail_getattach(int fd, struct map_session_data *sd)
{
int mail_id = RFIFOL(fd,2);
int i;
@@ -14966,10 +16165,10 @@ void clif_parse_Mail_getattach(int fd, struct map_session_data *sd)
intif->Mail_getattach(sd->status.char_id, mail_id);
}
-void clif_parse_Mail_delete(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Mail_delete(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to delete a mail (CZ_MAIL_DELETE).
/// 0243 <mail id>.L
-void clif_parse_Mail_delete(int fd, struct map_session_data *sd)
+static void clif_parse_Mail_delete(int fd, struct map_session_data *sd)
{
int mail_id = RFIFOL(fd,2);
int i;
@@ -14997,10 +16196,10 @@ void clif_parse_Mail_delete(int fd, struct map_session_data *sd)
}
}
-void clif_parse_Mail_return(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Mail_return(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to return a mail (CZ_REQ_MAIL_RETURN).
/// 0273 <mail id>.L <receive name>.24B
-void clif_parse_Mail_return(int fd, struct map_session_data *sd)
+static void clif_parse_Mail_return(int fd, struct map_session_data *sd)
{
int mail_id = RFIFOL(fd,2);
int i;
@@ -15021,10 +16220,10 @@ void clif_parse_Mail_return(int fd, struct map_session_data *sd)
}
}
-void clif_parse_Mail_setattach(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Mail_setattach(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to add an item or Zeny to mail (CZ_MAIL_ADD_ITEM).
/// 0247 <index>.W <amount>.L
-void clif_parse_Mail_setattach(int fd, struct map_session_data *sd)
+static void clif_parse_Mail_setattach(int fd, struct map_session_data *sd)
{
int idx = RFIFOW(fd,2);
int amount = RFIFOL(fd,4);
@@ -15039,14 +16238,14 @@ void clif_parse_Mail_setattach(int fd, struct map_session_data *sd)
clif->mail_setattachment(fd,idx,flag);
}
-void clif_parse_Mail_winopen(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Mail_winopen(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to reset mail item and/or Zeny (CZ_MAIL_RESET_ITEM).
/// 0246 <type>.W
/// type:
/// 0 = reset all
/// 1 = remove item
/// 2 = remove zeny
-void clif_parse_Mail_winopen(int fd, struct map_session_data *sd)
+static void clif_parse_Mail_winopen(int fd, struct map_session_data *sd)
{
int flag = RFIFOW(fd,2);
@@ -15056,20 +16255,22 @@ void clif_parse_Mail_winopen(int fd, struct map_session_data *sd)
mail->removezeny(sd, 0);
}
-void clif_parse_Mail_send(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Mail_send(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to send mail (CZ_MAIL_SEND).
/// 0248 <packet len>.W <recipient>.24B <title>.40B <body len>.B <body>.?B
-void clif_parse_Mail_send(int fd, struct map_session_data *sd)
+
+static void clif_parse_Mail_send(int fd, struct map_session_data *sd)
{
struct mail_message msg;
int body_len;
+ int len = RFIFOW(fd, 2);
if( !chrif->isconnected() )
return;
if( sd->state.trading )
return;
- if( RFIFOW(fd,2) < 69 ) {
+ if (len < 69) {
ShowWarning("Invalid Msg Len from account %d.\n", sd->status.account_id);
return;
}
@@ -15085,6 +16286,11 @@ void clif_parse_Mail_send(int fd, struct map_session_data *sd)
if (body_len > MAIL_BODY_LENGTH)
body_len = MAIL_BODY_LENGTH;
+ if (body_len + 69 > len) {
+ ShowWarning("Invalid Msg Len from account %d.\n", sd->status.account_id);
+ return;
+ }
+
memset(&msg, 0, sizeof(msg));
if (!mail->setattachment(sd, &msg)) { // Invalid Append condition
clif->mail_send(sd->fd, true); // fail
@@ -15125,7 +16331,7 @@ void clif_parse_Mail_send(int fd, struct map_session_data *sd)
/// type:
/// 0 = open
/// 1 = close
-void clif_Auction_openwindow(struct map_session_data *sd)
+static void clif_Auction_openwindow(struct map_session_data *sd)
{
int fd;
@@ -15145,7 +16351,7 @@ void clif_Auction_openwindow(struct map_session_data *sd)
/// Returns auction item search results (ZC_AUCTION_ITEM_REQ_SEARCH).
/// 0252 <packet len>.W <pages>.L <count>.L { <auction id>.L <seller name>.24B <name id>.W <type>.L <amount>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W <now price>.L <max price>.L <buyer name>.24B <delete time>.L }*
-void clif_Auction_results(struct map_session_data *sd, short count, short pages, const uint8 *buf)
+static void clif_Auction_results(struct map_session_data *sd, short count, short pages, const uint8 *buf)
{
int i, fd, len = sizeof(struct auction_data);
struct auction_data auction;
@@ -15193,7 +16399,8 @@ void clif_Auction_results(struct map_session_data *sd, short count, short pages,
/// result:
/// 0 = success
/// 1 = failure
-void clif_Auction_setitem(int fd, int index, bool fail) {
+static void clif_Auction_setitem(int fd, int index, bool fail)
+{
WFIFOHEAD(fd,packet_len(0x256));
WFIFOW(fd,0) = 0x256;
WFIFOW(fd,2) = index;
@@ -15201,14 +16408,14 @@ void clif_Auction_setitem(int fd, int index, bool fail) {
WFIFOSET(fd,packet_len(0x256));
}
-void clif_parse_Auction_cancelreg(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Auction_cancelreg(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to initialize 'new auction' data (CZ_AUCTION_CREATE).
/// 024b <type>.W
/// type:
/// 0 = create (any other action in auction window)
/// 1 = cancel (cancel pressed on register tab)
/// ? = junk, uninitialized value (ex. when switching between list filters)
-void clif_parse_Auction_cancelreg(int fd, struct map_session_data *sd)
+static void clif_parse_Auction_cancelreg(int fd, struct map_session_data *sd)
{
if( sd->auction.amount > 0 )
clif->additem(sd, sd->auction.index, sd->auction.amount, 0);
@@ -15216,10 +16423,10 @@ void clif_parse_Auction_cancelreg(int fd, struct map_session_data *sd)
sd->auction.amount = 0;
}
-void clif_parse_Auction_setitem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Auction_setitem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to add an item to the action (CZ_AUCTION_ADD_ITEM).
/// 024c <index>.W <count>.L
-void clif_parse_Auction_setitem(int fd, struct map_session_data *sd)
+static void clif_parse_Auction_setitem(int fd, struct map_session_data *sd)
{
int idx = RFIFOW(fd,2) - 2;
int amount = RFIFOL(fd,4); // Always 1
@@ -15231,7 +16438,7 @@ void clif_parse_Auction_setitem(int fd, struct map_session_data *sd)
if( sd->auction.amount > 0 )
sd->auction.amount = 0;
- if( idx < 0 || idx >= MAX_INVENTORY ) {
+ if (idx < 0 || idx >= sd->status.inventorySize) {
ShowWarning("Character %s trying to set invalid item index in auctions.\n", sd->status.name);
return;
}
@@ -15273,7 +16480,7 @@ void clif_parse_Auction_setitem(int fd, struct map_session_data *sd)
/// 7 = You have failed to win the auction
/// 8 = You do not have enough Zeny
/// 9 = You cannot place more than 5 bids at a time
-void clif_Auction_message(int fd, unsigned char flag)
+static void clif_Auction_message(int fd, unsigned char flag)
{
WFIFOHEAD(fd,packet_len(0x250));
WFIFOW(fd,0) = 0x250;
@@ -15287,7 +16494,7 @@ void clif_Auction_message(int fd, unsigned char flag)
/// 0 = You have ended the auction
/// 1 = You cannot end the auction
/// 2 = Auction ID is incorrect
-void clif_Auction_close(int fd, unsigned char flag)
+static void clif_Auction_close(int fd, unsigned char flag)
{
WFIFOHEAD(fd, 4);
WFIFOW(fd,0) = 0x25d; // BUG: The client identifies this packet as 0x25d (CZ_AUCTION_REQ_MY_SELL_STOP)
@@ -15295,10 +16502,10 @@ void clif_Auction_close(int fd, unsigned char flag)
WFIFOSET(fd, 4);
}
-void clif_parse_Auction_register(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Auction_register(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to add an auction (CZ_AUCTION_ADD).
/// 024d <now money>.L <max money>.L <delete hour>.W
-void clif_parse_Auction_register(int fd, struct map_session_data *sd)
+static void clif_parse_Auction_register(int fd, struct map_session_data *sd)
{
struct auction_data auction;
struct item_data *item;
@@ -15306,7 +16513,7 @@ void clif_parse_Auction_register(int fd, struct map_session_data *sd)
if (!battle_config.feature_auction)
return;
- Assert_retv(sd->auction.index >= 0 && sd->auction.index < MAX_INVENTORY);
+ Assert_retv(sd->auction.index >= 0 && sd->auction.index < sd->status.inventorySize);
memset(&auction, 0, sizeof(auction));
auction.price = RFIFOL(fd,2);
@@ -15390,30 +16597,30 @@ void clif_parse_Auction_register(int fd, struct map_session_data *sd)
}
}
-void clif_parse_Auction_cancel(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Auction_cancel(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Cancels an auction (CZ_AUCTION_ADD_CANCEL).
/// 024e <auction id>.L
-void clif_parse_Auction_cancel(int fd, struct map_session_data *sd)
+static void clif_parse_Auction_cancel(int fd, struct map_session_data *sd)
{
unsigned int auction_id = RFIFOL(fd,2);
intif->Auction_cancel(sd->status.char_id, auction_id);
}
-void clif_parse_Auction_close(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Auction_close(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Closes an auction (CZ_AUCTION_REQ_MY_SELL_STOP).
/// 025d <auction id>.L
-void clif_parse_Auction_close(int fd, struct map_session_data *sd)
+static void clif_parse_Auction_close(int fd, struct map_session_data *sd)
{
unsigned int auction_id = RFIFOL(fd,2);
intif->Auction_close(sd->status.char_id, auction_id);
}
-void clif_parse_Auction_bid(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Auction_bid(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Places a bid on an auction (CZ_AUCTION_BUY).
/// 024f <auction id>.L <money>.L
-void clif_parse_Auction_bid(int fd, struct map_session_data *sd)
+static void clif_parse_Auction_bid(int fd, struct map_session_data *sd)
{
unsigned int auction_id = RFIFOL(fd,2);
int bid = RFIFOL(fd,6);
@@ -15435,7 +16642,7 @@ void clif_parse_Auction_bid(int fd, struct map_session_data *sd)
}
}
-void clif_parse_Auction_search(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_Auction_search(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Auction Search (CZ_AUCTION_ITEM_SEARCH).
/// 0251 <search type>.W <auction id>.L <search text>.24B <page number>.W
/// search type:
@@ -15445,7 +16652,7 @@ void clif_parse_Auction_search(int fd, struct map_session_data* sd) __attribute_
/// 3 = misc
/// 4 = name search
/// 5 = auction id search
-void clif_parse_Auction_search(int fd, struct map_session_data* sd)
+static void clif_parse_Auction_search(int fd, struct map_session_data *sd)
{
char search_text[NAME_LENGTH];
short type = RFIFOW(fd,2), page = RFIFOW(fd,32);
@@ -15460,13 +16667,13 @@ void clif_parse_Auction_search(int fd, struct map_session_data* sd)
intif->Auction_requestlist(sd->status.char_id, type, price, search_text, page);
}
-void clif_parse_Auction_buysell(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_Auction_buysell(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Requests list of own currently active bids or auctions (CZ_AUCTION_REQ_MY_INFO).
/// 025c <type>.W
/// type:
/// 0 = sell (own auctions)
/// 1 = buy (own bids)
-void clif_parse_Auction_buysell(int fd, struct map_session_data* sd)
+static void clif_parse_Auction_buysell(int fd, struct map_session_data *sd)
{
short type = RFIFOW(fd,2) + 6;
@@ -15484,16 +16691,14 @@ void clif_parse_Auction_buysell(int fd, struct map_session_data* sd)
/// List of items offered in a cash shop (ZC_PC_CASH_POINT_ITEMLIST).
/// 0287 <packet len>.W <cash point>.L { <sell price>.L <discount price>.L <item type>.B <name id>.W }*
/// 0287 <packet len>.W <cash point>.L <kafra point>.L { <sell price>.L <discount price>.L <item type>.B <name id>.W }* (PACKETVER >= 20070711)
-void clif_cashshop_show(struct map_session_data *sd, struct npc_data *nd) {
+static void clif_cashshop_show(struct map_session_data *sd, struct npc_data *nd)
+{
struct npc_item_list *shop = NULL;
unsigned short shop_size = 0;
- int fd,i, c = 0;
+ int fd, i, c = 0;
int currency[2] = { 0,0 };
-#if PACKETVER < 20070711
- const int offset = 8;
-#else
- const int offset = 12;
-#endif
+ int len;
+ struct PACKET_ZC_PC_CASH_POINT_ITEMLIST *p;
nullpo_retv(sd);
nullpo_retv(nd);
@@ -15516,33 +16721,36 @@ void clif_cashshop_show(struct map_session_data *sd, struct npc_data *nd) {
fd = sd->fd;
sd->npc_shopid = nd->bl.id;
- WFIFOHEAD(fd,offset+shop_size*11);
- WFIFOW(fd,0) = 0x287;
- /* 0x2 = length, set after parsing */
- WFIFOL(fd,4) = currency[0]; // Cash Points
+ len = sizeof(struct PACKET_ZC_PC_CASH_POINT_ITEMLIST) + shop_size * sizeof(struct PACKET_ZC_PC_CASH_POINT_ITEMLIST_sub);
+ WFIFOHEAD(fd, len);
+ p = WFIFOP(fd, 0);
+ p->packetType = 0x287;
+ p->cashPoints = currency[0];
#if PACKETVER >= 20070711
- WFIFOL(fd,8) = currency[1]; // Kafra Points
+ p->kafraPoints = currency[1];
#endif
- for( i = 0; i < shop_size; i++ ) {
- if( shop[i].nameid ) {
+ for (i = 0; i < shop_size; i++) {
+ if (shop[i].nameid) {
struct item_data* id = itemdb->search(shop[i].nameid);
- WFIFOL(fd,offset+0+i*11) = shop[i].value;
- WFIFOL(fd,offset+4+i*11) = shop[i].value; // Discount Price
- WFIFOB(fd,offset+8+i*11) = itemtype(id->type);
- WFIFOW(fd,offset+9+i*11) = ( id->view_id > 0 ) ? id->view_id : id->nameid;
+ p->items[c].price = shop[i].value;
+ p->items[c].discountPrice = shop[i].value;
+ p->items[c].itemType = itemtype(id->type);
+ p->items[c].itemId = (id->view_id > 0) ? id->view_id : id->nameid;
c++;
}
}
- WFIFOW(fd,2) = offset+c*11;
- WFIFOSET(fd,WFIFOW(fd,2));
+ len = sizeof(struct PACKET_ZC_PC_CASH_POINT_ITEMLIST) + c * sizeof(struct PACKET_ZC_PC_CASH_POINT_ITEMLIST_sub);
+ p->packetLength = len;
+ WFIFOSET(fd, len);
}
/// Cashshop Buy Ack (ZC_PC_CASH_POINT_UPDATE).
/// 0289 <cash point>.L <error>.W
/// 0289 <cash point>.L <kafra point>.L <error>.W (PACKETVER >= 20070711)
/// For error return codes see enum cashshop_error@clif.h
-void clif_cashshop_ack(struct map_session_data* sd, int error) {
+static void clif_cashshop_ack(struct map_session_data *sd, int error)
+{
struct npc_data *nd;
int fd;
int currency[2] = { 0,0 };
@@ -15570,42 +16778,51 @@ void clif_cashshop_ack(struct map_session_data* sd, int error) {
WFIFOSET(fd, packet_len(0x289));
}
-void clif_parse_cashshop_buy(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_cashshop_buy(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to buy item(s) from cash shop (CZ_PC_BUY_CASH_POINT_ITEM).
/// 0288 <name id>.W <amount>.W
/// 0288 <name id>.W <amount>.W <kafra points>.L (PACKETVER >= 20070711)
/// 0288 <packet len>.W <kafra points>.L <count>.W { <amount>.W <name id>.W }.4B*count (PACKETVER >= 20100803)
-void clif_parse_cashshop_buy(int fd, struct map_session_data *sd)
+static void clif_parse_cashshop_buy(int fd, struct map_session_data *sd)
{
int fail = 0;
+ const struct PACKET_CZ_PC_BUY_CASH_POINT_ITEM *p = RFIFOP(fd, 0);
- if( sd->state.trading || !sd->npc_shopid || pc_has_permission(sd,PC_PERM_DISABLE_STORE) )
+ if (sd->state.trading || !sd->npc_shopid || pc_has_permission(sd,PC_PERM_DISABLE_STORE)) {
fail = 1;
- else {
-#if PACKETVER < 20101116
- short nameid = RFIFOW(fd,2);
- short amount = RFIFOW(fd,4);
- int points = RFIFOL(fd,6);
-
- fail = npc->cashshop_buy(sd, nameid, amount, points);
+ } else {
+#if PACKETVER < 20070711
+ fail = npc->cashshop_buy(sd, p->itemId, p->amount, 0);
+#elif PACKETVER < 20101116
+ fail = npc->cashshop_buy(sd, p->itemId, p->amount, p->kafraPoints);
#else
- int len = RFIFOW(fd,2);
- int points = RFIFOL(fd,4);
- int count = RFIFOW(fd,8);
+ int len = p->packetLength;
+ int needLen;
+ int points;
+ int count;
struct itemlist item_list = { 0 };
int i;
- if( len < 10 || len != 10 + count * 4) {
- ShowWarning("Player %d sent incorrect cash shop buy packet (len %d:%d)!\n", sd->status.char_id, len, 10 + count * 4);
+ if (len < sizeof(struct PACKET_CZ_PC_BUY_CASH_POINT_ITEM)) {
+ ShowWarning("Player %d sent incorrect cash shop buy packet (len %d)!\n", sd->status.char_id, len);
+ return;
+ }
+
+ points = p->kafraPoints;
+ count = p->count;
+ needLen = sizeof(struct PACKET_CZ_PC_BUY_CASH_POINT_ITEM) + count * sizeof(struct PACKET_CZ_PC_BUY_CASH_POINT_ITEM_sub);
+ if (len != needLen) {
+ ShowWarning("Player %d sent incorrect cash shop buy packet (len %d:%d)!\n", sd->status.char_id, len, needLen);
return;
}
+
VECTOR_INIT(item_list);
VECTOR_ENSURE(item_list, count, 1);
for (i = 0; i < count; i++) {
struct itemlist_entry entry = { 0 };
- entry.amount = RFIFOW(fd, 10 + 4 * i);
- entry.id = RFIFOW(fd, 10 + 4 * i + 2); // Nameid
+ entry.amount = p->items[i].amount;
+ entry.id = p->items[i].itemId;
VECTOR_PUSH(item_list, entry);
}
@@ -15626,7 +16843,7 @@ void clif_parse_cashshop_buy(int fd, struct map_session_data *sd)
/// 0 = "You cannot adopt more than 1 child."
/// 1 = "You must be at least character level 70 in order to adopt someone."
/// 2 = "You cannot adopt a married person."
-void clif_Adopt_reply(struct map_session_data *sd, int type)
+static void clif_Adopt_reply(struct map_session_data *sd, int type)
{
int fd;
@@ -15640,7 +16857,8 @@ void clif_Adopt_reply(struct map_session_data *sd, int type)
/// Adoption confirmation (ZC_REQ_BABY).
/// 01f6 <account id>.L <char id>.L <name>.B
-void clif_Adopt_request(struct map_session_data *sd, struct map_session_data *src, int p_id) {
+static void clif_Adopt_request(struct map_session_data *sd, struct map_session_data *src, int p_id)
+{
int fd;
nullpo_retv(sd);
@@ -15654,10 +16872,11 @@ void clif_Adopt_request(struct map_session_data *sd, struct map_session_data *sr
WFIFOSET(fd,34);
}
-void clif_parse_Adopt_request(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Adopt_request(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to adopt a player (CZ_REQ_JOIN_BABY).
/// 01f9 <account id>.L
-void clif_parse_Adopt_request(int fd, struct map_session_data *sd) {
+static void clif_parse_Adopt_request(int fd, struct map_session_data *sd)
+{
struct map_session_data *tsd = map->id2sd(RFIFOL(fd,2)), *p_sd = map->charid2sd(sd->status.partner_id);
if( pc->can_Adopt(sd, p_sd, tsd) ) {
@@ -15666,13 +16885,14 @@ void clif_parse_Adopt_request(int fd, struct map_session_data *sd) {
}
}
-void clif_parse_Adopt_reply(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Adopt_reply(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to adopt confirmation (CZ_JOIN_BABY).
/// 01f7 <account id>.L <char id>.L <answer>.L
/// answer:
/// 0 = rejected
/// 1 = accepted
-void clif_parse_Adopt_reply(int fd, struct map_session_data *sd) {
+static void clif_parse_Adopt_reply(int fd, struct map_session_data *sd)
+{
int p1_id = RFIFOL(fd,2);
int p2_id = RFIFOL(fd,6);
int result = RFIFOL(fd,10);
@@ -15701,7 +16921,7 @@ void clif_parse_Adopt_reply(int fd, struct map_session_data *sd) {
/// 1 = Boss is alive (position update) (BOSS_INFO_ALIVE).
/// 2 = Boss is alive (initial announce) (BOSS_INFO_ALIVE_WITHMSG).
/// 3 = Boss is dead (BOSS_INFO_DEAD).
-void clif_bossmapinfo(int fd, struct mob_data *md, short flag)
+static void clif_bossmapinfo(int fd, struct mob_data *md, short flag)
{
WFIFOHEAD(fd,70);
memset(WFIFOP(fd,0),0,70);
@@ -15735,47 +16955,78 @@ void clif_bossmapinfo(int fd, struct mob_data *md, short flag)
WFIFOSET(fd,70);
}
-void clif_parse_ViewPlayerEquip(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_ViewPlayerEquip(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Requesting equip of a player (CZ_EQUIPWIN_MICROSCOPE).
/// 02d6 <account id>.L
-void clif_parse_ViewPlayerEquip(int fd, struct map_session_data* sd) {
+static void clif_parse_ViewPlayerEquip(int fd, struct map_session_data *sd)
+{
int charid = RFIFOL(fd, 2);
struct map_session_data* tsd = map->id2sd(charid);
if (!tsd)
return;
- if( tsd->status.show_equip || pc_has_permission(sd, PC_PERM_VIEW_EQUIPMENT) )
+ if (tsd->status.show_equip || pc_has_permission(sd, PC_PERM_VIEW_EQUIPMENT)) {
clif->viewequip_ack(sd, tsd);
- else
- clif->msgtable(sd, MSG_EQUIP_NOT_PUBLIC);
+ } else {
+#if PACKETVER >= 20070918
+ clif->msgtable(sd, MSG_OPEN_EQUIPEDITEM_REFUSED);
+#endif
+ }
}
-void clif_parse_EquipTick(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
-/// Request to change equip window tick (CZ_CONFIG).
+static void clif_parse_cz_config(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+/// Receive configurations (CZ_CONFIG).
/// 02d8 <type>.L <value>.L
/// type:
/// 0 = open equip window
+/// 2 = pet autofeeding
+/// 3 = homunculus autofeeding
/// value:
/// 0 = disabled
/// 1 = enabled
-void clif_parse_EquipTick(int fd, struct map_session_data* sd)
+static void clif_parse_cz_config(int fd, struct map_session_data *sd)
{
- bool flag = (RFIFOL(fd,6) != 0) ? true : false;
- sd->status.show_equip = flag;
- clif->equiptickack(sd, flag);
+ enum CZ_CONFIG type = RFIFOL(fd, 2);
+ int flag = RFIFOL(fd, 6);
+
+ switch (type) {
+ case CZ_CONFIG_OPEN_EQUIPMENT_WINDOW:
+ sd->status.show_equip = flag;
+ break;
+ case CZ_CONFIG_PET_AUTOFEEDING: {
+ struct pet_data *pd = sd->pd;
+ nullpo_retv(pd);
+ if (pd->petDB->autofeed == 0) {
+ clif->message(fd, "Autofeed is disabled for this pet.");
+ return;
+ }
+ pd->pet.autofeed = flag;
+ break;
+ }
+ case CZ_CONFIG_HOMUNCULUS_AUTOFEEDING: {
+ struct homun_data *hd = sd->hd;
+ nullpo_retv(hd);
+ hd->homunculus.autofeed = flag;
+ break;
+ }
+ default:
+ ShowWarning("clif_parse_cz_config: Unsupported type has been received (%u).\n", type);
+ return;
+ }
+ clif->zc_config(sd, type, flag);
}
-void clif_parse_PartyTick(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyTick(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to change party invitation tick.
/// value:
-/// 0 = disabled
-/// 1 = enabled
-void clif_parse_PartyTick(int fd, struct map_session_data* sd)
+/// 0 = enabled
+/// 1 = disabled
+static void clif_parse_PartyTick(int fd, struct map_session_data *sd)
{
- bool flag = RFIFOB(fd,6)?true:false;
- sd->status.allow_party = flag;
- clif->partytickack(sd, flag);
+ const struct PACKET_CZ_PARTY_CONFIG *const p = RFIFOP(fd, 0);
+ sd->status.allow_party = p->refuseInvite ? false : true;
+ clif->partytickack(sd, sd->status.allow_party);
}
/// Questlog System [Kevin] [Inkfish]
@@ -15784,7 +17035,8 @@ void clif_parse_PartyTick(int fd, struct map_session_data* sd)
/// Sends list of all quest states (ZC_ALL_QUEST_LIST).
/// 02b1 <packet len>.W <num>.L { <quest id>.L <active>.B }*num
/// 097a <packet len>.W <num>.L { <quest id>.L <active>.B <remaining time>.L <time>.L <count>.W { <mob_id>.L <killed>.W <total>.W <mob name>.24B }*count }*num
-void clif_quest_send_list(struct map_session_data *sd)
+/// 09f8 <packet len>.W <num>.L { <quest id>.L <active>.B <remaining time>.L <time>.L <count>.W { <hunt identification>.L <mob type>.L <mob_id>.L <min level>.L <max level>.L <killed>.W <total>.W <mob name>.24B }*count }*num
+static void clif_quest_send_list(struct map_session_data *sd)
{
int i, len, real_len;
uint8 *buf = NULL;
@@ -15822,8 +17074,20 @@ void clif_quest_send_list(struct map_session_data *sd)
real_len += sizeof(info->objectives[j]);
mob_data = mob->db(qi->objectives[j].mob);
-
+#if PACKETVER_ZERO_NUM >= 20181010 || PACKETVER >= 20181017
+ info->objectives[j].huntIdent = sd->quest_log[i].quest_id;
+ info->objectives[j].huntIdent2 = j;
+ info->objectives[j].mobType = 0; // Info Needed
+#elif PACKETVER >= 20150513
+ info->objectives[j].huntIdent = (sd->quest_log[i].quest_id * 1000) + j;
+ info->objectives[j].mobType = 0; // Info Needed
+#endif
info->objectives[j].mob_id = qi->objectives[j].mob;
+#if PACKETVER >= 20150513
+ // Info Needed
+ info->objectives[j].levelMin = 0;
+ info->objectives[j].levelMax = 0;
+#endif
info->objectives[j].huntCount = sd->quest_log[i].count[j];
info->objectives[j].maxCount = qi->objectives[j].count;
safestrncpy(info->objectives[j].mobName, mob_data->jname, sizeof(info->objectives[j].mobName));
@@ -15837,7 +17101,7 @@ void clif_quest_send_list(struct map_session_data *sd)
/// Sends list of all quest missions (ZC_ALL_QUEST_MISSION).
/// 02b2 <packet len>.W <num>.L { <quest id>.L <start time>.L <expire time>.L <mobs>.W { <mob id>.L <mob count>.W <mob name>.24B }*3 }*num
-void clif_quest_send_mission(struct map_session_data *sd)
+static void clif_quest_send_mission(struct map_session_data *sd)
{
int fd = sd->fd;
int i, j;
@@ -15871,38 +17135,63 @@ void clif_quest_send_mission(struct map_session_data *sd)
/// Notification about a new quest (ZC_ADD_QUEST).
/// 02b3 <quest id>.L <active>.B <start time>.L <expire time>.L <mobs>.W { <mob id>.L <mob count>.W <mob name>.24B }*3
-void clif_quest_add(struct map_session_data *sd, struct quest *qd)
+/// 09f9 <quest id>.L <active>.B <start time>.L <expire time>.L <mobs>.W { <hunt identification>.L <mob type>.L <mob id>.L <min level>.L <max level>.L <mob count>.W <mob name>.24B }*3
+static void clif_quest_add(struct map_session_data *sd, struct quest *qd)
{
- int fd;
- int i;
+ int i, len;
+ uint8 *buf = NULL;
+ struct packet_quest_add_header *packet = NULL;
struct quest_db *qi;
nullpo_retv(sd);
nullpo_retv(qd);
- fd = sd->fd;
+
qi = quest->db(qd->quest_id);
- WFIFOHEAD(fd, packet_len(0x2b3));
- WFIFOW(fd, 0) = 0x2b3;
- WFIFOL(fd, 2) = qd->quest_id;
- WFIFOB(fd, 6) = qd->state;
- WFIFOB(fd, 7) = qd->time - qi->time;
- WFIFOL(fd, 11) = qd->time;
- WFIFOW(fd, 15) = qi->objectives_count;
+ Assert_retv(qi->objectives_count < MAX_QUEST_OBJECTIVES);
+
+ len = sizeof(struct packet_quest_add_header)
+ + MAX_QUEST_OBJECTIVES * sizeof(struct packet_quest_hunt_sub); // >= than the actual length
+
+ buf = aCalloc(1, len);
+ packet = (struct packet_quest_add_header *)WBUFP(buf, 0);
+
+ packet->PacketType = questAddType;
+ packet->questID = qd->quest_id;
+ packet->active = qd->state;
+ packet->quest_svrTime = qd->time - qi->time;
+ packet->quest_endTime = qd->time;
+ packet->count = qi->objectives_count;
for (i = 0; i < qi->objectives_count; i++) {
struct mob_db *monster;
- WFIFOL(fd, i*30+17) = qi->objectives[i].mob;
- WFIFOW(fd, i*30+21) = qd->count[i];
+
monster = mob->db(qi->objectives[i].mob);
- memcpy(WFIFOP(fd, i*30+23), monster->jname, NAME_LENGTH);
- }
- WFIFOSET(fd, packet_len(0x2b3));
+#if PACKETVER_ZERO_NUM >= 20181010 || PACKETVER >= 20181017
+ packet->objectives[i].huntIdent = qd->quest_id;
+ packet->objectives[i].huntIdent2 = i;
+ packet->objectives[i].mobType = 0; // Info Needed
+#elif PACKETVER >= 20150513
+ packet->objectives[i].huntIdent = (qd->quest_id * 1000) + i;
+ packet->objectives[i].mobType = 0; // Info Needed
+#endif
+ packet->objectives[i].mob_id = qi->objectives[i].mob;
+#if PACKETVER >= 20150513
+ // Info Needed
+ packet->objectives[i].levelMin = 0;
+ packet->objectives[i].levelMax = 0;
+#endif
+ packet->objectives[i].huntCount = qd->count[i];
+ memcpy(packet->objectives[i].mobName, monster->jname, NAME_LENGTH);
+ }
+ clif->send(buf, len, &sd->bl, SELF);
+ aFree(buf);
}
/// Notification about a quest being removed (ZC_DEL_QUEST).
/// 02b4 <quest id>.L
-void clif_quest_delete(struct map_session_data *sd, int quest_id) {
+static void clif_quest_delete(struct map_session_data *sd, int quest_id)
+{
int fd;
nullpo_retv(sd);
@@ -15915,44 +17204,101 @@ void clif_quest_delete(struct map_session_data *sd, int quest_id) {
/// Notification of an update to the hunting mission counter (ZC_UPDATE_MISSION_HUNT).
/// 02b5 <packet len>.W <mobs>.W { <quest id>.L <mob id>.L <total count>.W <current count>.W }*3
-void clif_quest_update_objective(struct map_session_data *sd, struct quest *qd)
+/// 09fa <packet len>.W <mobs>.W { <quest id>.L <hunt identification>.L <total count>.W <current count>.W }*3
+static void clif_quest_update_objective(struct map_session_data *sd, struct quest *qd)
{
- int fd;
- int i;
+ int i, len, real_len;
+ uint8 *buf = NULL;
+ struct packet_quest_update_header *packet = NULL;
struct quest_db *qi;
- int len;
nullpo_retv(sd);
nullpo_retv(qd);
- fd = sd->fd;
+
qi = quest->db(qd->quest_id);
- len = qi->objectives_count * 12 + 6;
+ Assert_retv(qi->objectives_count < MAX_QUEST_OBJECTIVES);
- WFIFOHEAD(fd, len);
- WFIFOW(fd, 0) = 0x2b5;
- WFIFOW(fd, 2) = len;
- WFIFOW(fd, 4) = qi->objectives_count;
+ len = sizeof(struct packet_quest_update_header)
+ + MAX_QUEST_OBJECTIVES * sizeof(struct packet_quest_update_hunt); // >= than the actual length
+
+ buf = aCalloc(1, len);
+ packet = (struct packet_quest_update_header *)WBUFP(buf, 0);
+ real_len = sizeof(*packet);
+
+ packet->PacketType = questUpdateType;
+ packet->count = qi->objectives_count;
for (i = 0; i < qi->objectives_count; i++) {
- WFIFOL(fd, i*12+6) = qd->quest_id;
- WFIFOL(fd, i*12+10) = qi->objectives[i].mob;
- WFIFOW(fd, i*12+14) = qi->objectives[i].count;
- WFIFOW(fd, i*12+16) = qd->count[i];
+ real_len += sizeof(packet->objectives[i]);
+
+ packet->objectives[i].questID = qd->quest_id;
+#if PACKETVER_ZERO_NUM >= 20181010 || PACKETVER >= 20181017
+ packet->objectives[i].huntIdent = qd->quest_id;
+ packet->objectives[i].huntIdent2 = i;
+#elif PACKETVER >= 20150513
+ packet->objectives[i].huntIdent = (qd->quest_id * 1000) + i;
+#else
+ packet->objectives[i].mob_id = qi->objectives[i].mob;
+#endif
+ packet->objectives[i].maxCount = qi->objectives[i].count;
+ packet->objectives[i].count = qd->count[i];
}
+ packet->PacketLength = real_len;
+ clif->send(buf, real_len, &sd->bl, SELF);
+ aFree(buf);
+}
- WFIFOSET(fd, len);
+/// Notification of an hunting mission counter just after quest is added (ZC_HUNTING_QUEST_INFO).
+/// 08fe <packet len>.W { <quest id>.L <mob id>.L <total count>.W <current count>.W }*3
+static void clif_quest_notify_objective(struct map_session_data *sd, struct quest *qd)
+{
+#if PACKETVER >= 20150513
+ int i, len, real_len;
+ uint8 *buf = NULL;
+ struct packet_quest_hunt_info *packet = NULL;
+ struct quest_db *qi;
+
+ nullpo_retv(sd);
+ nullpo_retv(qd);
+
+ qi = quest->db(qd->quest_id);
+ Assert_retv(qi->objectives_count < MAX_QUEST_OBJECTIVES);
+
+ len = sizeof(struct packet_quest_hunt_info)
+ + MAX_QUEST_OBJECTIVES * sizeof(struct packet_quest_hunt_info_sub); // >= than the actual length
+
+ buf = aCalloc(1, len);
+ packet = (struct packet_quest_hunt_info *)WBUFP(buf, 0);
+ real_len = sizeof(*packet);
+
+ packet->PacketType = questUpdateType2;
+
+ for (i = 0; i < qi->objectives_count; i++) {
+ real_len += sizeof(packet->info[i]);
+
+ packet->info[i].questID = qd->quest_id;
+ packet->info[i].mob_id = qi->objectives[i].mob;
+ packet->info[i].maxCount = qi->objectives[i].count;
+ packet->info[i].count = qd->count[i];
+ }
+ packet->PacketLength = real_len;
+ clif->send(buf, real_len, &sd->bl, SELF);
+ aFree(buf);
+#endif
}
-void clif_parse_questStateAck(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_questStateAck(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to change the state of a quest (CZ_ACTIVE_QUEST).
/// 02b6 <quest id>.L <active>.B
-void clif_parse_questStateAck(int fd, struct map_session_data *sd) {
+static void clif_parse_questStateAck(int fd, struct map_session_data *sd)
+{
quest->update_status(sd, RFIFOL(fd,2), RFIFOB(fd,6)?Q_ACTIVE:Q_INACTIVE);
}
/// Notification about the change of a quest state (ZC_ACTIVE_QUEST).
/// 02b7 <quest id>.L <active>.B
-void clif_quest_update_status(struct map_session_data *sd, int quest_id, bool active) {
+static void clif_quest_update_status(struct map_session_data *sd, int quest_id, bool active)
+{
int fd;
nullpo_retv(sd);
@@ -15975,7 +17321,7 @@ void clif_quest_update_status(struct map_session_data *sd, int quest_id, bool ac
/// 1 = orange
/// 2 = green
/// 3 = purple
-void clif_quest_show_event(struct map_session_data *sd, struct block_list *bl, short state, short color)
+static void clif_quest_show_event(struct map_session_data *sd, struct block_list *bl, short state, short color)
{
#if PACKETVER >= 20090218
int fd;
@@ -15999,7 +17345,8 @@ void clif_quest_show_event(struct map_session_data *sd, struct block_list *bl, s
/// Notification about a mercenary status parameter change (ZC_MER_PAR_CHANGE).
/// 02a2 <var id>.W <value>.L
-void clif_mercenary_updatestatus(struct map_session_data *sd, int type) {
+static void clif_mercenary_updatestatus(struct map_session_data *sd, int type)
+{
struct mercenary_data *md;
struct status_data *mstatus;
int fd;
@@ -16065,7 +17412,8 @@ void clif_mercenary_updatestatus(struct map_session_data *sd, int type) {
/// 029b <id>.L <atk>.W <matk>.W <hit>.W <crit>.W <def>.W <mdef>.W <flee>.W <aspd>.W
/// <name>.24B <level>.W <hp>.L <maxhp>.L <sp>.L <maxsp>.L <expire time>.L <faith>.W
/// <calls>.L <kills>.L <atk range>.W
-void clif_mercenary_info(struct map_session_data *sd) {
+static void clif_mercenary_info(struct map_session_data *sd)
+{
int fd;
struct mercenary_data *md;
struct status_data *mstatus;
@@ -16121,7 +17469,7 @@ void clif_mercenary_info(struct map_session_data *sd) {
/// Mercenary skill tree (ZC_MER_SKILLINFO_LIST).
/// 029d <packet len>.W { <skill id>.W <type>.L <level>.W <sp cost>.W <attack range>.W <skill name>.24B <upgradeable>.B }*
-void clif_mercenary_skillblock(struct map_session_data *sd)
+static void clif_mercenary_skillblock(struct map_session_data *sd)
{
struct mercenary_data *md;
int fd, i, len = 4, j;
@@ -16156,12 +17504,12 @@ void clif_mercenary_skillblock(struct map_session_data *sd)
WFIFOSET(fd,len);
}
-void clif_parse_mercenary_action(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_mercenary_action(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to invoke a mercenary menu action (CZ_MER_COMMAND).
/// 029f <command>.B
/// 1 = mercenary information
/// 2 = delete
-void clif_parse_mercenary_action(int fd, struct map_session_data* sd)
+static void clif_parse_mercenary_action(int fd, struct map_session_data *sd)
{
int option = RFIFOB(fd,2);
if (sd->md == NULL)
@@ -16177,36 +17525,42 @@ void clif_parse_mercenary_action(int fd, struct map_session_data* sd)
/// 1 = Your mercenary soldier has been killed.
/// 2 = Your mercenary soldier has been fired.
/// 3 = Your mercenary soldier has ran away.
-void clif_mercenary_message(struct map_session_data* sd, int message)
+static void clif_mercenary_message(struct map_session_data *sd, int message)
{
- clif->msgtable(sd, MSG_MERCENARY_EXPIRED + message);
+#if PACKETVER >= 20070227
+ clif->msgtable(sd, MSG_MER_FINISH + message);
+#endif
}
/// Notification about the remaining time of a rental item (ZC_CASH_TIME_COUNTER).
/// 0298 <name id>.W <seconds>.L
-void clif_rental_time(int fd, int nameid, int seconds)
+static void clif_rental_time(int fd, int nameid, int seconds)
{ // '<ItemName>' item will disappear in <seconds/60> minutes.
- WFIFOHEAD(fd,packet_len(0x298));
- WFIFOW(fd,0) = 0x298;
- WFIFOW(fd,2) = nameid;
- WFIFOL(fd,4) = seconds;
- WFIFOSET(fd,packet_len(0x298));
+ struct PACKET_ZC_CASH_TIME_COUNTER p;
+ WFIFOHEAD(fd, sizeof(p));
+ p.packetType = 0x298;
+ p.itemId = nameid;
+ p.seconds = seconds;
+ memcpy(WFIFOP(fd, 0), &p, sizeof(p));
+ WFIFOSET(fd, sizeof(p));
}
/// Deletes a rental item from client's inventory (ZC_CASH_ITEM_DELETE).
/// 0299 <index>.W <name id>.W
-void clif_rental_expired(int fd, int index, int nameid)
+static void clif_rental_expired(int fd, int index, int nameid)
{ // '<ItemName>' item has been deleted from the Inventory
- WFIFOHEAD(fd,packet_len(0x299));
- WFIFOW(fd,0) = 0x299;
- WFIFOW(fd,2) = index+2;
- WFIFOW(fd,4) = nameid;
- WFIFOSET(fd,packet_len(0x299));
+ struct PACKET_ZC_CASH_ITEM_DELETE p;
+ WFIFOHEAD(fd, sizeof(p));
+ p.packetType = 0x299;
+ p.index = index + 2;
+ p.itemId = nameid;
+ memcpy(WFIFOP(fd, 0), &p, sizeof(p));
+ WFIFOSET(fd, sizeof(p));
}
/// Book Reading (ZC_READ_BOOK).
/// 0294 <book id>.L <page>.L
-void clif_readbook(int fd, int book_id, int page)
+static void clif_readbook(int fd, int book_id, int page)
{
WFIFOHEAD(fd,packet_len(0x294));
WFIFOW(fd,0) = 0x294;
@@ -16221,11 +17575,11 @@ void clif_readbook(int fd, int book_id, int page)
/// Updates HP bar of a camp member.
/// 02e0 <account id>.L <name>.24B <hp>.W <max hp>.W (ZC_BATTLEFIELD_NOTIFY_HP).
/// 0a0e <account id>.L <hp>.L <max hp>.L (ZC_BATTLEFIELD_NOTIFY_HP2)
-void clif_bg_hp(struct map_session_data *sd)
+static void clif_bg_hp(struct map_session_data *sd)
{
unsigned char buf[34];
-// packet version can be wrong, because inconsistend data in other servers.
+// packet version can be wrong, because inconsistend data in other servers. From packets table it start from 20140312 [4144]
#if PACKETVER < 20140613
const int cmd = 0x2e0;
nullpo_retv(sd);
@@ -16264,7 +17618,7 @@ void clif_bg_hp(struct map_session_data *sd)
/// Updates the position of a camp member on the minimap (ZC_BATTLEFIELD_NOTIFY_POSITION).
/// 02df <account id>.L <name>.24B <class>.W <x>.W <y>.W
-void clif_bg_xy(struct map_session_data *sd)
+static void clif_bg_xy(struct map_session_data *sd)
{
unsigned char buf[36];
nullpo_retv(sd);
@@ -16279,7 +17633,7 @@ void clif_bg_xy(struct map_session_data *sd)
clif->send(buf, packet_len(0x2df), &sd->bl, BG_SAMEMAP_WOS);
}
-void clif_bg_xy_remove(struct map_session_data *sd)
+static void clif_bg_xy_remove(struct map_session_data *sd)
{
unsigned char buf[36];
nullpo_retv(sd);
@@ -16296,7 +17650,7 @@ void clif_bg_xy_remove(struct map_session_data *sd)
/// Notifies clients of a battleground message (ZC_BATTLEFIELD_CHAT).
/// 02dc <packet len>.W <account id>.L <name>.24B <message>.?B
-void clif_bg_message(struct battleground_data *bgd, int src_id, const char *name, const char *mes)
+static void clif_bg_message(struct battleground_data *bgd, int src_id, const char *name, const char *mes)
{
struct map_session_data *sd;
unsigned char *buf;
@@ -16310,15 +17664,15 @@ void clif_bg_message(struct battleground_data *bgd, int src_id, const char *name
return;
len = (int)strlen(mes);
- Assert_retv(len <= INT16_MAX - NAME_LENGTH - 8);
- buf = (unsigned char*)aMalloc((len + NAME_LENGTH + 8)*sizeof(unsigned char));
+ Assert_retv(len <= INT16_MAX - NAME_LENGTH - 9);
+ buf = (unsigned char *)aCalloc(len + NAME_LENGTH + 9, sizeof(unsigned char));
- WBUFW(buf,0) = 0x2dc;
- WBUFW(buf,2) = len + NAME_LENGTH + 8;
- WBUFL(buf,4) = src_id;
- memcpy(WBUFP(buf,8), name, NAME_LENGTH);
- memcpy(WBUFP(buf,32), mes, len); // [!] no NUL terminator
- clif->send(buf,WBUFW(buf,2), &sd->bl, BG);
+ WBUFW(buf, 0) = 0x2dc;
+ WBUFW(buf, 2) = len + NAME_LENGTH + 9;
+ WBUFL(buf, 4) = src_id;
+ safestrncpy(WBUFP(buf, 8), name, NAME_LENGTH);
+ safestrncpy(WBUFP(buf, 32), mes, len + 1);
+ clif->send(buf, WBUFW(buf, 2), &sd->bl, BG);
aFree(buf);
}
@@ -16333,8 +17687,8 @@ void clif_bg_message(struct battleground_data *bgd, int src_id, const char *name
* @param fd The incoming file descriptor.
* @param sd The related character.
*/
-void clif_parse_BattleChat(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_BattleChat(int fd, struct map_session_data *sd)
+static void clif_parse_BattleChat(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_BattleChat(int fd, struct map_session_data *sd)
{
const struct packet_chat_message *packet = RP2PTR(fd);
char message[CHAT_SIZE_MAX + NAME_LENGTH + 3 + 1];
@@ -16347,11 +17701,12 @@ void clif_parse_BattleChat(int fd, struct map_session_data *sd)
/// Notifies client of a battleground score change (ZC_BATTLEFIELD_NOTIFY_POINT).
/// 02de <camp A points>.W <camp B points>.W
-void clif_bg_updatescore(int16 m) {
+static void clif_bg_updatescore(int16 m)
+{
struct block_list bl;
unsigned char buf[6];
- bl.id = 0;
+ memset(&bl, 0, sizeof(bl));
bl.type = BL_NUL;
bl.m = m;
@@ -16361,7 +17716,8 @@ void clif_bg_updatescore(int16 m) {
clif->send(buf,packet_len(0x2de),&bl,ALL_SAMEMAP);
}
-void clif_bg_updatescore_single(struct map_session_data *sd) {
+static void clif_bg_updatescore_single(struct map_session_data *sd)
+{
int fd;
nullpo_retv(sd);
fd = sd->fd;
@@ -16375,7 +17731,7 @@ void clif_bg_updatescore_single(struct map_session_data *sd) {
/// Battleground camp belong-information (ZC_BATTLEFIELD_NOTIFY_CAMPINFO).
/// 02dd <account id>.L <name>.24B <camp>.W
-void clif_sendbgemblem_area(struct map_session_data *sd)
+static void clif_sendbgemblem_area(struct map_session_data *sd)
{
unsigned char buf[33];
nullpo_retv(sd);
@@ -16387,7 +17743,7 @@ void clif_sendbgemblem_area(struct map_session_data *sd)
clif->send(buf,packet_len(0x2dd), &sd->bl, AREA);
}
-void clif_sendbgemblem_single(int fd, struct map_session_data *sd)
+static void clif_sendbgemblem_single(int fd, struct map_session_data *sd)
{
nullpo_retv(sd);
WFIFOHEAD(fd,32);
@@ -16400,7 +17756,7 @@ void clif_sendbgemblem_single(int fd, struct map_session_data *sd)
/// Custom Fonts (ZC_NOTIFY_FONT).
/// 02ef <account_id>.L <font id>.W
-void clif_font(struct map_session_data *sd)
+static void clif_font(struct map_session_data *sd)
{
#if PACKETVER >= 20080102
unsigned char buf[8];
@@ -16415,7 +17771,8 @@ void clif_font(struct map_session_data *sd)
/*==========================================
* Instancing Window
*------------------------------------------*/
-int clif_instance(int instance_id, int type, int flag) {
+static int clif_instance(int instance_id, int type, int flag)
+{
struct map_session_data *sd = NULL;
unsigned char buf[255];
enum send_target target = PARTY;
@@ -16453,6 +17810,7 @@ int clif_instance(int instance_id, int type, int flag) {
case 2:
// S 0x2cc <Standby Position>.W
// To announce Instancing queue creation if no maps available
+ // flag is priority, negative value mean cancel reservation
WBUFW(buf,0) = 0x02CC;
WBUFW(buf,2) = flag;
clif->send(buf,packet_len(0x02CC),&sd->bl,target);
@@ -16487,7 +17845,7 @@ int clif_instance(int instance_id, int type, int flag) {
return 0;
}
-void clif_instance_join(int fd, int instance_id)
+static void clif_instance_join(int fd, int instance_id)
{
if( instance->list[instance_id].idle_timer != INVALID_TIMER ) {
WFIFOHEAD(fd,packet_len(0x02CD));
@@ -16512,7 +17870,7 @@ void clif_instance_join(int fd, int instance_id)
}
}
-void clif_instance_leave(int fd)
+static void clif_instance_leave(int fd)
{
WFIFOHEAD(fd,packet_len(0x02CE));
WFIFOW(fd,0) = 0x02ce;
@@ -16522,25 +17880,25 @@ void clif_instance_leave(int fd)
/// Notifies clients about item picked up by a party member (ZC_ITEM_PICKUP_PARTY).
/// 02b8 <account id>.L <name id>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W <equip location>.W <item type>.B
-void clif_party_show_picker(struct map_session_data * sd, struct item * item_data)
+static void clif_party_show_picker(struct map_session_data *sd, struct item *item_data)
{
#if PACKETVER >= 20071002
- unsigned char buf[22];
struct item_data* id;
+ struct PACKET_ZC_ITEM_PICKUP_PARTY p;
nullpo_retv(sd);
nullpo_retv(item_data);
id = itemdb->search(item_data->nameid);
- WBUFW(buf,0) = 0x2b8;
- WBUFL(buf,2) = sd->status.account_id;
- WBUFW(buf,6) = item_data->nameid;
- WBUFB(buf,8) = item_data->identify;
- WBUFB(buf,9) = item_data->attribute;
- WBUFB(buf,10) = item_data->refine;
- clif->addcards(WBUFP(buf,11), item_data);
- WBUFW(buf,19) = id->equip; // equip location
- WBUFB(buf,21) = itemtype(id->type); // item type
- clif->send(buf, packet_len(0x2b8), &sd->bl, PARTY_SAMEMAP_WOS);
+ p.packetType = 0x2b8;
+ p.AID = sd->status.account_id;
+ p.itemId = item_data->nameid;
+ p.identified = item_data->identify;
+ p.damaged = item_data->attribute;
+ p.refine = item_data->refine;
+ clif->addcards(&p.slot, item_data);
+ p.location = id->equip; // equip location
+ p.itemType = itemtype(id->type); // item type
+ clif->send(&p, sizeof(p), &sd->bl, PARTY_SAMEMAP_WOS);
#endif
}
@@ -16551,20 +17909,32 @@ void clif_party_show_picker(struct map_session_data * sd, struct item * item_dat
/// exp type:
/// 0 = normal exp gain/loss
/// 1 = quest exp gain/loss
-void clif_displayexp(struct map_session_data *sd, unsigned int exp, char type, bool is_quest) {
+static void clif_displayexp(struct map_session_data *sd, uint64 exp, char type, bool is_quest)
+{
int fd;
+#if PACKETVER_MAIN_NUM >= 20170906 || PACKETVER_RE_NUM >= 20170830 || defined(PACKETVER_ZERO)
+ const int cmd = 0xacc;
+#else
+ const int cmd = 0x7f6;
+#endif
nullpo_retv(sd);
fd = sd->fd;
- WFIFOHEAD(fd, packet_len(0x7f6));
- WFIFOW(fd,0) = 0x7f6;
- WFIFOL(fd,2) = sd->bl.id;
- WFIFOL(fd,6) = exp;
- WFIFOW(fd,10) = type;
- WFIFOW(fd,12) = is_quest?1:0;// Normal exp is shown in yellow, quest exp is shown in purple.
- WFIFOSET(fd,packet_len(0x7f6));
+ WFIFOHEAD(fd, packet_len(cmd));
+ WFIFOW(fd, 0) = cmd;
+ WFIFOL(fd, 2) = sd->bl.id;
+#if PACKETVER_MAIN_NUM >= 20170906 || PACKETVER_RE_NUM >= 20170830 || defined(PACKETVER_ZERO)
+ WFIFOQ(fd, 6) = exp;
+ WFIFOW(fd, 14) = type;
+ WFIFOW(fd, 16) = is_quest ? 1 : 0; // Normal exp is shown in yellow, quest exp is shown in purple.
+#else
+ WFIFOL(fd, 6) = (uint32)exp;
+ WFIFOW(fd, 10) = type;
+ WFIFOW(fd, 12) = is_quest ? 1 : 0; // Normal exp is shown in yellow, quest exp is shown in purple.
+#endif
+ WFIFOSET(fd, packet_len(cmd));
}
/// Displays digital clock digits on top of the screen (ZC_SHOWDIGIT).
@@ -16575,7 +17945,7 @@ void clif_displayexp(struct map_session_data *sd, unsigned int exp, char type, b
/// 3 = Decremental counter (1 tick/second), 'value' specifies start value (stops when reaching 0, displays at most 2 digits).
/// value:
/// Except for type 3 it is interpreted as seconds for displaying as DD:HH:MM:SS, HH:MM:SS, MM:SS or SS (leftmost '00' is not displayed).
-void clif_showdigit(struct map_session_data* sd, unsigned char type, int value)
+static void clif_showdigit(struct map_session_data *sd, unsigned char type, int value)
{
nullpo_retv(sd);
WFIFOHEAD(sd->fd, packet_len(0x1b1));
@@ -16585,7 +17955,7 @@ void clif_showdigit(struct map_session_data* sd, unsigned char type, int value)
WFIFOSET(sd->fd, packet_len(0x1b1));
}
-void clif_parse_LessEffect(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_LessEffect(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Notification of the state of client command /effect (CZ_LESSEFFECT).
/// 021d <state>.L
/// state:
@@ -16598,18 +17968,18 @@ void clif_parse_LessEffect(int fd, struct map_session_data* sd) __attribute__((n
/// constructed, this state tracking was rendered useless,
/// as the only skill unit, that is sent with 0x1c9 is
/// Graffiti.
-void clif_parse_LessEffect(int fd, struct map_session_data* sd)
+static void clif_parse_LessEffect(int fd, struct map_session_data *sd)
{
int isLess = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]);
sd->state.lesseffect = ( isLess != 0 );
}
-void clif_parse_ItemListWindowSelected(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_ItemListWindowSelected(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// S 07e4 <length>.w <option>.l <val>.l {<index>.w <amount>.w).4b*
-void clif_parse_ItemListWindowSelected(int fd, struct map_session_data *sd)
+static void clif_parse_ItemListWindowSelected(int fd, struct map_session_data *sd)
{
- int n = ((int)RFIFOW(fd,2) - 12) / 4;
+ int n = ((int)RFIFOW(fd, 2) - 12) / 4;
int type = RFIFOL(fd,4);
int flag = RFIFOL(fd,8); // Button clicked: 0 = Cancel, 1 = OK
struct itemlist item_list = { 0 };
@@ -16623,8 +17993,8 @@ void clif_parse_ItemListWindowSelected(int fd, struct map_session_data *sd)
return; // Canceled by player.
}
- if (n > MAX_INVENTORY)
- n = MAX_INVENTORY; // It should be impossible to have more than that.
+ if (n > sd->status.inventorySize)
+ n = sd->status.inventorySize; // It should be impossible to have more than that.
if (sd->menuskill_id != SO_EL_ANALYSIS && sd->menuskill_id != GN_CHANGEMATERIAL) {
clif_menuskill_clear(sd);
@@ -16658,7 +18028,8 @@ void clif_parse_ItemListWindowSelected(int fd, struct map_session_data *sd)
/*==========================================
* Elemental System
*==========================================*/
-void clif_elemental_updatestatus(struct map_session_data *sd, int type) {
+static void clif_elemental_updatestatus(struct map_session_data *sd, int type)
+{
struct elemental_data *ed;
struct status_data *estatus;
int fd;
@@ -16688,7 +18059,8 @@ void clif_elemental_updatestatus(struct map_session_data *sd, int type) {
WFIFOSET(fd,8);
}
-void clif_elemental_info(struct map_session_data *sd) {
+static void clif_elemental_info(struct map_session_data *sd)
+{
int fd;
struct elemental_data *ed;
struct status_data *estatus;
@@ -16714,7 +18086,7 @@ void clif_elemental_info(struct map_session_data *sd) {
/// Opens preparation window for buying store (ZC_OPEN_BUYING_STORE).
/// 0810 <slots>.B
-void clif_buyingstore_open(struct map_session_data* sd)
+static void clif_buyingstore_open(struct map_session_data *sd)
{
#if PACKETVER >= 20100303
int fd;
@@ -16728,44 +18100,48 @@ void clif_buyingstore_open(struct map_session_data* sd)
#endif
}
-void clif_parse_ReqOpenBuyingStore(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_ReqOpenBuyingStore(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to create a buying store (CZ_REQ_OPEN_BUYING_STORE).
/// 0811 <packet len>.W <limit zeny>.L <result>.B <store name>.80B { <name id>.W <amount>.W <price>.L }*
/// result:
/// 0 = cancel
/// 1 = open
-void clif_parse_ReqOpenBuyingStore(int fd, struct map_session_data* sd) {
- const unsigned int blocksize = 8;
- const uint8 *itemlist;
+static void clif_parse_ReqOpenBuyingStore(int fd, struct map_session_data *sd)
+{
+ const unsigned int blocksize = sizeof(struct PACKET_CZ_REQ_OPEN_BUYING_STORE_sub);
+ const struct PACKET_CZ_REQ_OPEN_BUYING_STORE_sub *itemlist;
char storename[MESSAGE_SIZE];
unsigned char result;
int zenylimit;
- unsigned int count, packet_len;
- struct s_packet_db* info = &packet_db[RFIFOW(fd,0)];
+ int count, packet_len;
+ const struct PACKET_CZ_REQ_OPEN_BUYING_STORE *p = RFIFOP(fd, 0);
- packet_len = RFIFOW(fd,info->pos[0]);
+ packet_len = p->packetLength;
// TODO: Make this check global for all variable length packets.
- if( packet_len < 89 )
+ if (packet_len < sizeof(struct PACKET_CZ_REQ_OPEN_BUYING_STORE))
{// minimum packet length
- ShowError("clif_parse_ReqOpenBuyingStore: Malformed packet (expected length=%u, length=%u, account_id=%d).\n", 89U, packet_len, sd->bl.id);
+ ShowError("clif_parse_ReqOpenBuyingStore: Malformed packet (expected length=%u, length=%d, account_id=%d).\n", (uint32)sizeof(struct PACKET_CZ_REQ_OPEN_BUYING_STORE), packet_len, sd->bl.id);
return;
}
- zenylimit = RFIFOL(fd,info->pos[1]);
- result = RFIFOL(fd,info->pos[2]);
- safestrncpy(storename, RFIFOP(fd,info->pos[3]), sizeof(storename));
- itemlist = RFIFOP(fd,info->pos[4]);
+ zenylimit = p->zenyLimit;
+ result = p->result;
+ safestrncpy(storename, p->storeName, sizeof(storename));
+ itemlist = &p->items[0];
// so that buyingstore_create knows, how many elements it has access to
- packet_len-= info->pos[4];
+ packet_len -= sizeof(struct PACKET_CZ_REQ_OPEN_BUYING_STORE);
+
+ if (packet_len < 0)
+ return;
- if( packet_len%blocksize )
+ if (packet_len % blocksize)
{
- ShowError("clif_parse_ReqOpenBuyingStore: Unexpected item list size %u (account_id=%d, block size=%u)\n", packet_len, sd->bl.id, blocksize);
+ ShowError("clif_parse_ReqOpenBuyingStore: Unexpected item list size %d (account_id=%d, block size=%u)\n", packet_len, sd->bl.id, blocksize);
return;
}
- count = packet_len/blocksize;
+ count = packet_len / blocksize;
buyingstore->create(sd, zenylimit, result, storename, itemlist, count);
}
@@ -16775,9 +18151,10 @@ void clif_parse_ReqOpenBuyingStore(int fd, struct map_session_data* sd) {
/// result:
/// 1 = "Failed to open buying store." (0x6cd, MSI_BUYINGSTORE_OPEN_FAILED)
/// 2 = "Total amount of then possessed items exceeds the weight limit by <weight/10-maxweight*90%>. Please re-enter." (0x6ce, MSI_BUYINGSTORE_OVERWEIGHT)
-/// 8 = "No sale (purchase) information available." (0x705)
+/// 9 = "No sale (purchase) information available." (0x705)
+/// 10 = "Cant open store at this location." (0xC9D)
/// ? = nothing
-void clif_buyingstore_open_failed(struct map_session_data* sd, unsigned short result, unsigned int weight)
+static void clif_buyingstore_open_failed(struct map_session_data *sd, unsigned short result, unsigned int weight)
{
#if PACKETVER >= 20100420
int fd;
@@ -16794,33 +18171,37 @@ void clif_buyingstore_open_failed(struct map_session_data* sd, unsigned short re
/// Notification, that the requested buying store was created (ZC_MYITEMLIST_BUYING_STORE).
/// 0813 <packet len>.W <account id>.L <limit zeny>.L { <price>.L <count>.W <type>.B <name id>.W }*
-void clif_buyingstore_myitemlist(struct map_session_data* sd)
+static void clif_buyingstore_myitemlist(struct map_session_data *sd)
{
int fd;
unsigned int i;
+ struct PACKET_ZC_MYITEMLIST_BUYING_STORE *p;
+ int len;
nullpo_retv(sd);
fd = sd->fd;
- WFIFOHEAD(fd,12+sd->buyingstore.slots*9);
- WFIFOW(fd,0) = 0x813;
- WFIFOW(fd,2) = 12+sd->buyingstore.slots*9;
- WFIFOL(fd,4) = sd->bl.id;
- WFIFOL(fd,8) = sd->buyingstore.zenylimit;
+ len = sizeof(struct PACKET_ZC_MYITEMLIST_BUYING_STORE) + sd->buyingstore.slots * sizeof(struct PACKET_ZC_MYITEMLIST_BUYING_STORE_sub);
+ WFIFOHEAD(fd, len);
+ p = WFIFOP(fd, 0);
+ p->packetType = 0x813;
+ p->packetLength = len;
+ p->AID = sd->bl.id;
+ p->zenyLimit = sd->buyingstore.zenylimit;
- for( i = 0; i < sd->buyingstore.slots; i++ )
+ for (i = 0; i < sd->buyingstore.slots; i++)
{
- WFIFOL(fd,12+i*9) = sd->buyingstore.items[i].price;
- WFIFOW(fd,16+i*9) = sd->buyingstore.items[i].amount;
- WFIFOB(fd,18+i*9) = itemtype(itemdb_type(sd->buyingstore.items[i].nameid));
- WFIFOW(fd,19+i*9) = sd->buyingstore.items[i].nameid;
+ p->items[i].price = sd->buyingstore.items[i].price;
+ p->items[i].amount = sd->buyingstore.items[i].amount;
+ p->items[i].itemType = itemtype(itemdb_type(sd->buyingstore.items[i].nameid));
+ p->items[i].itemId = sd->buyingstore.items[i].nameid;
}
- WFIFOSET(fd,WFIFOW(fd,2));
+ WFIFOSET(fd, len);
}
/// Notifies clients in area of a buying store (ZC_BUYING_STORE_ENTRY).
/// 0814 <account id>.L <store name>.80B
-void clif_buyingstore_entry(struct map_session_data* sd)
+static void clif_buyingstore_entry(struct map_session_data *sd)
{
#if PACKETVER >= 20100420
uint8 buf[86];
@@ -16833,7 +18214,7 @@ void clif_buyingstore_entry(struct map_session_data* sd)
clif->send(buf, packet_len(0x814), &sd->bl, AREA_WOS);
#endif
}
-void clif_buyingstore_entry_single(struct map_session_data* sd, struct map_session_data* pl_sd)
+static void clif_buyingstore_entry_single(struct map_session_data *sd, struct map_session_data *pl_sd)
{
#if PACKETVER >= 20100420
int fd;
@@ -16848,16 +18229,17 @@ void clif_buyingstore_entry_single(struct map_session_data* sd, struct map_sessi
#endif
}
-void clif_parse_ReqCloseBuyingStore(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_ReqCloseBuyingStore(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to close own buying store (CZ_REQ_CLOSE_BUYING_STORE).
/// 0815
-void clif_parse_ReqCloseBuyingStore(int fd, struct map_session_data* sd) {
+static void clif_parse_ReqCloseBuyingStore(int fd, struct map_session_data *sd)
+{
buyingstore->close(sd);
}
/// Notifies clients in area that a buying store was closed (ZC_DISAPPEAR_BUYING_STORE_ENTRY).
/// 0816 <account id>.L
-void clif_buyingstore_disappear_entry(struct map_session_data* sd)
+static void clif_buyingstore_disappear_entry(struct map_session_data *sd)
{
#if PACKETVER >= 20100309
uint8 buf[6];
@@ -16870,7 +18252,7 @@ void clif_buyingstore_disappear_entry(struct map_session_data* sd)
#endif
}
-void clif_buyingstore_disappear_entry_single(struct map_session_data* sd, struct map_session_data* pl_sd)
+static void clif_buyingstore_disappear_entry_single(struct map_session_data *sd, struct map_session_data *pl_sd)
{
#if PACKETVER >= 20100309
int fd;
@@ -16887,7 +18269,7 @@ void clif_buyingstore_disappear_entry_single(struct map_session_data* sd, struct
/// Request to open someone else's buying store (CZ_REQ_CLICK_TO_BUYING_STORE).
/// 0817 <account id>.L
-void clif_parse_ReqClickBuyingStore(int fd, struct map_session_data* sd)
+static void clif_parse_ReqClickBuyingStore(int fd, struct map_session_data *sd)
{
int account_id;
@@ -16898,63 +18280,70 @@ void clif_parse_ReqClickBuyingStore(int fd, struct map_session_data* sd)
/// Sends buying store item list (ZC_ACK_ITEMLIST_BUYING_STORE).
/// 0818 <packet len>.W <account id>.L <store id>.L <limit zeny>.L { <price>.L <amount>.W <type>.B <name id>.W }*
-void clif_buyingstore_itemlist(struct map_session_data* sd, struct map_session_data* pl_sd)
+static void clif_buyingstore_itemlist(struct map_session_data *sd, struct map_session_data *pl_sd)
{
int fd;
unsigned int i;
+ struct PACKET_ZC_ACK_ITEMLIST_BUYING_STORE *p;
+ int len;
nullpo_retv(sd);
nullpo_retv(pl_sd);
fd = sd->fd;
- WFIFOHEAD(fd,16+pl_sd->buyingstore.slots*9);
- WFIFOW(fd,0) = 0x818;
- WFIFOW(fd,2) = 16+pl_sd->buyingstore.slots*9;
- WFIFOL(fd,4) = pl_sd->bl.id;
- WFIFOL(fd,8) = pl_sd->buyer_id;
- WFIFOL(fd,12) = pl_sd->buyingstore.zenylimit;
-
- for( i = 0; i < pl_sd->buyingstore.slots; i++ )
+ len = sizeof(struct PACKET_ZC_ACK_ITEMLIST_BUYING_STORE) + pl_sd->buyingstore.slots * sizeof(struct PACKET_ZC_ACK_ITEMLIST_BUYING_STORE_sub);
+ WFIFOHEAD(fd, len);
+ p = WFIFOP(fd, 0);
+ p->packetType = 0x818;
+ p->packetLength = len;
+ p->AID = pl_sd->bl.id;
+ p->storeId = pl_sd->buyer_id;
+ p->zenyLimit = pl_sd->buyingstore.zenylimit;
+
+ for (i = 0; i < pl_sd->buyingstore.slots; i++)
{
- WFIFOL(fd,16+i*9) = pl_sd->buyingstore.items[i].price;
- WFIFOW(fd,20+i*9) = pl_sd->buyingstore.items[i].amount; // TODO: Figure out, if no longer needed items (amount == 0) are listed on official.
- WFIFOB(fd,22+i*9) = itemtype(itemdb_type(pl_sd->buyingstore.items[i].nameid));
- WFIFOW(fd,23+i*9) = pl_sd->buyingstore.items[i].nameid;
+ p->items[i].price = pl_sd->buyingstore.items[i].price;
+ p->items[i].amount = pl_sd->buyingstore.items[i].amount; // TODO: Figure out, if no longer needed items (amount == 0) are listed on official.
+ p->items[i].itemType = itemtype(itemdb_type(pl_sd->buyingstore.items[i].nameid));
+ p->items[i].itemId = pl_sd->buyingstore.items[i].nameid;
}
- WFIFOSET(fd,WFIFOW(fd,2));
+ WFIFOSET(fd, len);
}
-void clif_parse_ReqTradeBuyingStore(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_ReqTradeBuyingStore(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to sell items to a buying store (CZ_REQ_TRADE_BUYING_STORE).
/// 0819 <packet len>.W <account id>.L <store id>.L { <index>.W <name id>.W <amount>.W }*
-void clif_parse_ReqTradeBuyingStore(int fd, struct map_session_data* sd) {
- const unsigned int blocksize = 6;
- const uint8 *itemlist;
+static void clif_parse_ReqTradeBuyingStore(int fd, struct map_session_data *sd)
+{
+ const unsigned int blocksize = sizeof(struct PACKET_CZ_REQ_TRADE_BUYING_STORE_sub);
+ const struct PACKET_CZ_REQ_TRADE_BUYING_STORE_sub *itemlist;
int account_id;
- unsigned int count, packet_len, buyer_id;
- struct s_packet_db* info = &packet_db[RFIFOW(fd,0)];
-
- packet_len = RFIFOW(fd,info->pos[0]);
+ unsigned int buyer_id;
+ int count, packet_len;
+ const struct PACKET_CZ_REQ_TRADE_BUYING_STORE *p = RFIFOP(fd, 0);
+ packet_len = p->packetLength;
- if( packet_len < 12 )
+ if (packet_len < sizeof(struct PACKET_CZ_REQ_TRADE_BUYING_STORE))
{// minimum packet length
- ShowError("clif_parse_ReqTradeBuyingStore: Malformed packet (expected length=%u, length=%u, account_id=%d).\n", 12U, packet_len, sd->bl.id);
+ ShowError("clif_parse_ReqTradeBuyingStore: Malformed packet (expected length=%u, length=%d, account_id=%d).\n", (uint32)sizeof(struct PACKET_CZ_REQ_TRADE_BUYING_STORE), packet_len, sd->bl.id);
return;
}
- account_id = RFIFOL(fd,info->pos[1]);
- buyer_id = RFIFOL(fd,info->pos[2]);
- itemlist = RFIFOP(fd,info->pos[3]);
+ account_id = p->AID;
+ buyer_id = p->storeId;
+ itemlist = &p->items[0];
// so that buyingstore_trade knows, how many elements it has access to
- packet_len-= info->pos[3];
+ packet_len -= sizeof(struct PACKET_CZ_REQ_TRADE_BUYING_STORE);
+ if (packet_len < 0)
+ return;
- if( packet_len%blocksize )
+ if (packet_len % blocksize)
{
- ShowError("clif_parse_ReqTradeBuyingStore: Unexpected item list size %u (account_id=%d, buyer_id=%d, block size=%u)\n", packet_len, sd->bl.id, account_id, blocksize);
+ ShowError("clif_parse_ReqTradeBuyingStore: Unexpected item list size %d (account_id=%d, buyer_id=%d, block size=%u)\n", packet_len, sd->bl.id, account_id, blocksize);
return;
}
- count = packet_len/blocksize;
+ count = packet_len / blocksize;
buyingstore->trade(sd, account_id, buyer_id, itemlist, count);
}
@@ -16965,7 +18354,7 @@ void clif_parse_ReqTradeBuyingStore(int fd, struct map_session_data* sd) {
/// 3 = "All items within the buy limit were purchased." (0x6cf, MSI_BUYINGSTORE_TRADE_OVERLIMITZENY)
/// 4 = "All items were purchased." (0x6d0, MSI_BUYINGSTORE_TRADE_BUYCOMPLETE)
/// ? = nothing
-void clif_buyingstore_trade_failed_buyer(struct map_session_data* sd, short result)
+static void clif_buyingstore_trade_failed_buyer(struct map_session_data *sd, short result)
{
#if PACKETVER >= 20100420
int fd;
@@ -16981,31 +18370,26 @@ void clif_buyingstore_trade_failed_buyer(struct map_session_data* sd, short resu
/// Updates the zeny limit and an item in the buying store item list (ZC_UPDATE_ITEM_FROM_BUYING_STORE).
/// 081b <name id>.W <amount>.W <limit zeny>.L
-void clif_buyingstore_update_item(struct map_session_data* sd, unsigned short nameid, unsigned short amount, uint32 char_id, int zeny)
+static void clif_buyingstore_update_item(struct map_session_data *sd, int nameid, unsigned short amount, uint32 char_id, int zeny)
{
int fd;
-#if PACKETVER < 20141016 // TODO : not sure for client date [Napster]
- const int cmd = 0x81b;
-#else
- const int cmd = 0x9e6;
-#endif
- const int len = packet_len(cmd);
+ struct PACKET_ZC_UPDATE_ITEM_FROM_BUYING_STORE p;
nullpo_retv(sd);
+
fd = sd->fd;
- WFIFOHEAD(fd, len);
- WFIFOW(fd, 0) = cmd;
- WFIFOW(fd, 2) = nameid;
- WFIFOW(fd, 4) = amount; // amount of nameid received
-#if PACKETVER < 20141016
- WFIFOL(fd, 6) = sd->buyingstore.zenylimit;
-#else
- WFIFOL(fd, 6) = zeny; // zeny
- WFIFOL(fd, 10) = sd->buyingstore.zenylimit;
- WFIFOL(fd, 14) = char_id; // GID
- WFIFOL(fd, 18) = (int)time(NULL); // date
+ WFIFOHEAD(fd, sizeof(p));
+ p.packetType = buyingStoreUpdateItemType;
+ p.itemId = nameid;
+ p.amount = amount;
+ p.zenyLimit = sd->buyingstore.zenylimit;
+#if PACKETVER >= 20141016
+ p.zeny = zeny;
+ p.charId = char_id; // GID
+ p.updateTime = (int)time(NULL);
#endif
- WFIFOSET(fd, len);
+ memcpy(WFIFOP(fd, 0), &p, sizeof(p));
+ WFIFOSET(fd, sizeof(p));
}
/// Deletes item from inventory, that was sold to a buying store (ZC_ITEM_DELETE_BUYING_STORE).
@@ -17014,7 +18398,7 @@ void clif_buyingstore_update_item(struct map_session_data* sd, unsigned short na
/// "%s (%d) were sold at %dz." (0x6d2, MSI_BUYINGSTORE_TRADE_SELLCOMPLETE)
///
/// NOTE: This function has to be called _instead_ of clif_delitem/clif_dropitem.
-void clif_buyingstore_delete_item(struct map_session_data* sd, short index, unsigned short amount, int price)
+static void clif_buyingstore_delete_item(struct map_session_data *sd, short index, unsigned short amount, int price)
{
#if PACKETVER >= 20100420
int fd;
@@ -17037,22 +18421,24 @@ void clif_buyingstore_delete_item(struct map_session_data* sd, short index, unsi
/// 6 = "The trade failed, because the entered amount of item %s is higher, than the buyer is willing to buy." (0x6d3, MSI_BUYINGSTORE_TRADE_OVERCOUNT)
/// 7 = "The trade failed, because the buyer is lacking required balance." (0x6d1, MSI_BUYINGSTORE_TRADE_LACKBUYERZENY)
/// ? = nothing
-void clif_buyingstore_trade_failed_seller(struct map_session_data* sd, short result, unsigned short nameid)
+static void clif_buyingstore_trade_failed_seller(struct map_session_data *sd, short result, int nameid)
{
#if PACKETVER >= 20100420
int fd;
+ struct PACKET_ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER p;
nullpo_retv(sd);
fd = sd->fd;
- WFIFOHEAD(fd,packet_len(0x824));
- WFIFOW(fd,0) = 0x824;
- WFIFOW(fd,2) = result;
- WFIFOW(fd,4) = nameid;
- WFIFOSET(fd,packet_len(0x824));
+ WFIFOHEAD(fd, sizeof(p));
+ p.packetType = 0x824;
+ p.result = result;
+ p.itemId = nameid;
+ memcpy(WFIFOP(fd, 0), &p, sizeof(p));
+ WFIFOSET(fd, sizeof(p));
#endif
}
-void clif_parse_SearchStoreInfo(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_SearchStoreInfo(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Search Store Info System
///
@@ -17065,47 +18451,67 @@ void clif_parse_SearchStoreInfo(int fd, struct map_session_data* sd) __attribute
/// NOTE: The client determines the item ids by specifying a name and optionally,
/// amount of card slots. If the client does not know about the item it
/// cannot be searched.
-void clif_parse_SearchStoreInfo(int fd, struct map_session_data* sd) {
- const unsigned int blocksize = 2;
- const uint8* itemlist;
- const uint8* cardlist;
+static void clif_parse_SearchStoreInfo(int fd, struct map_session_data *sd)
+{
+ const unsigned int blocksize = sizeof(struct PACKET_CZ_SEARCH_STORE_INFO_item);
+ const struct PACKET_CZ_SEARCH_STORE_INFO_item* itemlist;
+ const struct PACKET_CZ_SEARCH_STORE_INFO_item* cardlist;
unsigned char type;
- unsigned int min_price, max_price, packet_len, count, item_count, card_count;
- struct s_packet_db* info = &packet_db[RFIFOW(fd,0)];
+ unsigned int min_price, max_price;
+ int packet_len, count, item_count, card_count;
+ int i;
+ const struct PACKET_CZ_SEARCH_STORE_INFO *p = RFIFOP(fd, 0);
+ uint32 *items_list;
+ uint32 *cards_list;
- packet_len = RFIFOW(fd,info->pos[0]);
+ packet_len = p->packetLength;
- if( packet_len < 15 )
+ if (packet_len < sizeof(struct PACKET_CZ_SEARCH_STORE_INFO))
{// minimum packet length
- ShowError("clif_parse_SearchStoreInfo: Malformed packet (expected length=%u, length=%u, account_id=%d).\n", 15U, packet_len, sd->bl.id);
+ ShowError("clif_parse_SearchStoreInfo: Malformed packet (expected length=%u, length=%d, account_id=%d).\n", (uint32)sizeof(struct PACKET_CZ_SEARCH_STORE_INFO), packet_len, sd->bl.id);
return;
}
- type = RFIFOB(fd,info->pos[1]);
- max_price = RFIFOL(fd,info->pos[2]);
- min_price = RFIFOL(fd,info->pos[3]);
- item_count = RFIFOB(fd,info->pos[4]);
- card_count = RFIFOB(fd,info->pos[5]);
- itemlist = RFIFOP(fd,info->pos[6]);
- cardlist = RFIFOP(fd,info->pos[6]+blocksize*item_count);
+ type = p->searchType;
+ max_price = p->maxPrice;
+ min_price = p->minPrice;
+ item_count = p->itemsCount;
+ card_count = p->cardsCount;
+ itemlist = &p->items[0];
// check, if there is enough data for the claimed count of items
- packet_len-= info->pos[6];
+ packet_len -= sizeof(struct PACKET_CZ_SEARCH_STORE_INFO);
+
+ if (packet_len < 0)
+ return;
- if( packet_len%blocksize )
+ if (packet_len % blocksize)
{
- ShowError("clif_parse_SearchStoreInfo: Unexpected item list size %u (account_id=%d, block size=%u)\n", packet_len, sd->bl.id, blocksize);
+ ShowError("clif_parse_SearchStoreInfo: Unexpected item list size %d (account_id=%d, block size=%u)\n", packet_len, sd->bl.id, blocksize);
return;
}
- count = packet_len/blocksize;
+ count = packet_len / blocksize;
- if( count < item_count+card_count )
+ if (count < item_count + card_count)
{
- ShowError("clif_parse_SearchStoreInfo: Malformed packet (expected count=%u, count=%u, account_id=%d).\n", item_count+card_count, count, sd->bl.id);
+ ShowError("clif_parse_SearchStoreInfo: Malformed packet (expected count=%d, count=%d, account_id=%d).\n", item_count + card_count, count, sd->bl.id);
return;
}
- searchstore->query(sd, type, min_price, max_price, (const unsigned short*)itemlist, item_count, (const unsigned short*)cardlist, card_count);
+ cardlist = RFIFOP(fd, sizeof(struct PACKET_CZ_SEARCH_STORE_INFO) + blocksize * item_count);
+
+ items_list = aMalloc(sizeof(uint32) * item_count);
+ cards_list = aMalloc(sizeof(uint32) * card_count);
+ for (i = 0; i < item_count; i ++) {
+ items_list[i] = itemlist[i].itemId;
+ }
+ for (i = 0; i < card_count; i ++) {
+ cards_list[i] = cardlist[i].itemId;
+ }
+ // TODO: add search by item options.
+ searchstore->query(sd, type, min_price, max_price, items_list, item_count, cards_list, card_count);
+ aFree(items_list);
+ aFree(cards_list);
}
/// Results for a store search request (ZC_SEARCH_STORE_INFO_ACK).
@@ -17116,36 +18522,40 @@ void clif_parse_SearchStoreInfo(int fd, struct map_session_data* sd) {
/// is next page:
/// 0 = no "next" label
/// 1 = "next" label to retrieve more results
-void clif_search_store_info_ack(struct map_session_data* sd)
+static void clif_search_store_info_ack(struct map_session_data *sd)
{
- const unsigned int blocksize = MESSAGE_SIZE+26;
+ const unsigned int blocksize = sizeof(struct PACKET_ZC_SEARCH_STORE_INFO_ACK_sub);
int fd;
unsigned int i, start, end;
+ struct PACKET_ZC_SEARCH_STORE_INFO_ACK *p;
+ int len;
nullpo_retv(sd);
fd = sd->fd;
- start = sd->searchstore.pages*SEARCHSTORE_RESULTS_PER_PAGE;
- end = min(sd->searchstore.count, start+SEARCHSTORE_RESULTS_PER_PAGE);
+ start = sd->searchstore.pages * SEARCHSTORE_RESULTS_PER_PAGE;
+ end = min(sd->searchstore.count, start + SEARCHSTORE_RESULTS_PER_PAGE);
- WFIFOHEAD(fd,7+(end-start)*blocksize);
- WFIFOW(fd,0) = 0x836;
- WFIFOW(fd,2) = 7+(end-start)*blocksize;
- WFIFOB(fd,4) = !sd->searchstore.pages;
- WFIFOB(fd,5) = searchstore->querynext(sd);
- WFIFOB(fd,6) = (unsigned char)min(sd->searchstore.uses, UINT8_MAX);
-
- for( i = start; i < end; i++ ) {
+ len = sizeof(struct PACKET_ZC_SEARCH_STORE_INFO_ACK) + (end - start) * blocksize;
+ WFIFOHEAD(fd, len);
+ p = WFIFOP(fd, 0);
+ p->packetType = 0x836;
+ p->packetLength = len;
+ p->firstPage = !sd->searchstore.pages;
+ p->nextPage = searchstore->querynext(sd);
+ p->usesCount = (unsigned char)min(sd->searchstore.uses, UINT8_MAX);
+
+ for (i = start; i < end; i++) {
struct s_search_store_info_item* ssitem = &sd->searchstore.items[i];
struct item it;
- WFIFOL(fd,i*blocksize+ 7) = ssitem->store_id;
- WFIFOL(fd,i*blocksize+11) = ssitem->account_id;
- memcpy(WFIFOP(fd,i*blocksize+15), ssitem->store_name, MESSAGE_SIZE);
- WFIFOW(fd,i*blocksize+15+MESSAGE_SIZE) = ssitem->nameid;
- WFIFOB(fd,i*blocksize+17+MESSAGE_SIZE) = itemtype(itemdb_type(ssitem->nameid));
- WFIFOL(fd,i*blocksize+18+MESSAGE_SIZE) = ssitem->price;
- WFIFOW(fd,i*blocksize+22+MESSAGE_SIZE) = ssitem->amount;
- WFIFOB(fd,i*blocksize+24+MESSAGE_SIZE) = ssitem->refine;
+ p->items[i].storeId = ssitem->store_id;
+ p->items[i].AID = ssitem->account_id;
+ memcpy(&p->items[i].shopName, ssitem->store_name, MESSAGE_SIZE);
+ p->items[i].itemId = ssitem->nameid;
+ p->items[i].itemType = itemtype(itemdb_type(ssitem->nameid));
+ p->items[i].price = ssitem->price;
+ p->items[i].amount = ssitem->amount;
+ p->items[i].refine = ssitem->refine;
// make-up an item for clif_addcards
memset(&it, 0, sizeof(it));
@@ -17153,10 +18563,14 @@ void clif_search_store_info_ack(struct map_session_data* sd)
it.nameid = ssitem->nameid;
it.amount = ssitem->amount;
- clif->addcards(WFIFOP(fd,i*blocksize+25+MESSAGE_SIZE), &it);
+ clif->addcards(&p->items[i].slot, &it);
+#if PACKETVER >= 20150226
+ memcpy(&it.option, &ssitem->option, sizeof(it.option));
+ clif->add_item_options(&p->items[i].option_data[0], &it);
+#endif
}
- WFIFOSET(fd,WFIFOW(fd,2));
+ WFIFOSET(fd, len);
}
/// Notification of failure when searching for stores (ZC_SEARCH_STORE_INFO_FAILED).
@@ -17167,7 +18581,7 @@ void clif_search_store_info_ack(struct map_session_data* sd)
/// 2 = "You cannot search anymore." (0x706)
/// 3 = "You cannot search yet." (0x708)
/// 4 = "No sale (purchase) information available." (0x705)
-void clif_search_store_info_failed(struct map_session_data* sd, unsigned char reason)
+static void clif_search_store_info_failed(struct map_session_data *sd, unsigned char reason)
{
#if PACKETVER >= 20100601
int fd;
@@ -17181,10 +18595,10 @@ void clif_search_store_info_failed(struct map_session_data* sd, unsigned char re
#endif
}
-void clif_parse_SearchStoreInfoNextPage(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_SearchStoreInfoNextPage(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to display next page of results (CZ_SEARCH_STORE_INFO_NEXT_PAGE).
/// 0838
-void clif_parse_SearchStoreInfoNextPage(int fd, struct map_session_data* sd)
+static void clif_parse_SearchStoreInfoNextPage(int fd, struct map_session_data *sd)
{
searchstore->next(sd);
}
@@ -17194,7 +18608,7 @@ void clif_parse_SearchStoreInfoNextPage(int fd, struct map_session_data* sd)
/// type:
/// 0 = Search Stores
/// 1 = Search Stores (Cash), asks for confirmation, when clicking a store
-void clif_open_search_store_info(struct map_session_data* sd)
+static void clif_open_search_store_info(struct map_session_data *sd)
{
#if PACKETVER >= 20100608
int fd;
@@ -17211,33 +18625,26 @@ void clif_open_search_store_info(struct map_session_data* sd)
#endif
}
-void clif_parse_CloseSearchStoreInfo(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_CloseSearchStoreInfo(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to close the store search window (CZ_CLOSE_SEARCH_STORE_INFO).
/// 083b
-void clif_parse_CloseSearchStoreInfo(int fd, struct map_session_data* sd)
+static void clif_parse_CloseSearchStoreInfo(int fd, struct map_session_data *sd)
{
searchstore->close(sd);
}
-void clif_parse_SearchStoreInfoListItemClick(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_SearchStoreInfoListItemClick(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to invoke catalog effect on a store from search results (CZ_SSILIST_ITEM_CLICK).
/// 083c <account id>.L <store id>.L <nameid>.W
-void clif_parse_SearchStoreInfoListItemClick(int fd, struct map_session_data* sd)
+static void clif_parse_SearchStoreInfoListItemClick(int fd, struct map_session_data *sd)
{
- unsigned short nameid;
- int account_id, store_id;
- struct s_packet_db* info = &packet_db[RFIFOW(fd,0)];
-
- account_id = RFIFOL(fd,info->pos[0]);
- store_id = RFIFOL(fd,info->pos[1]);
- nameid = RFIFOW(fd,info->pos[2]);
-
- searchstore->click(sd, account_id, store_id, nameid);
+ const struct PACKET_CZ_SSILIST_ITEM_CLICK *p = RFIFOP(fd, 0);
+ searchstore->click(sd, p->AID, p->storeId, p->itemId);
}
/// Notification of the store position on current map (ZC_SSILIST_ITEM_CLICK_ACK).
/// 083d <xPos>.W <yPos>.W
-void clif_search_store_info_click_ack(struct map_session_data* sd, short x, short y)
+static void clif_search_store_info_click_ack(struct map_session_data *sd, short x, short y)
{
#if PACKETVER >= 20100608
int fd;
@@ -17253,14 +18660,15 @@ void clif_search_store_info_click_ack(struct map_session_data* sd, short x, shor
}
/// Parse function for packet debugging.
-void clif_parse_debug(int fd,struct map_session_data *sd) {
+static void clif_parse_debug(int fd, struct map_session_data *sd)
+{
int cmd, packet_len;
// clif_parse ensures, that there is at least 2 bytes of data
cmd = RFIFOW(fd,0);
if( sd ) {
- packet_len = packet_db[cmd].len;
+ packet_len = packets->db[cmd];
if( packet_len == -1 ) {// variable length
packet_len = RFIFOW(fd,2); // clif_parse ensures, that this amount of data is already received
@@ -17277,7 +18685,8 @@ void clif_parse_debug(int fd,struct map_session_data *sd) {
* Server tells client to display a window similar to Magnifier (item) one
* Server populates the window with available elemental converter options according to player's inventory
*------------------------------------------*/
-int clif_elementalconverter_list(struct map_session_data *sd) {
+static int clif_elementalconverter_list(struct map_session_data *sd)
+{
int i,c,view,fd;
nullpo_ret(sd);
@@ -17308,7 +18717,8 @@ int clif_elementalconverter_list(struct map_session_data *sd) {
/**
* Rune Knight
**/
-void clif_millenniumshield(struct block_list *bl, short shields ) {
+static void clif_millenniumshield(struct block_list *bl, short shields)
+{
#if PACKETVER >= 20081217
unsigned char buf[10];
@@ -17326,7 +18736,7 @@ void clif_millenniumshield(struct block_list *bl, short shields ) {
/*==========================================
* Spellbook list [LimitLine/3CeAM]
*------------------------------------------*/
-int clif_spellbook_list(struct map_session_data *sd)
+static int clif_spellbook_list(struct map_session_data *sd)
{
int i, c;
int fd;
@@ -17337,7 +18747,7 @@ int clif_spellbook_list(struct map_session_data *sd)
WFIFOHEAD(fd, 8 * 8 + 8);
WFIFOW(fd,0) = 0x1ad;
- for( i = 0, c = 0; i < MAX_INVENTORY; i ++ )
+ for (i = 0, c = 0; i < sd->status.inventorySize; i ++ )
{
if( itemdb_is_spellbook(sd->status.inventory[i].nameid) )
{
@@ -17355,7 +18765,7 @@ int clif_spellbook_list(struct map_session_data *sd)
}
else{
status_change_end(&sd->bl,SC_STOP,INVALID_TIMER);
- clif->skill_fail(sd, WL_READING_SB, USESKILL_FAIL_SPELLBOOK, 0);
+ clif->skill_fail(sd, WL_READING_SB, USESKILL_FAIL_SPELLBOOK, 0, 0);
}
return 1;
@@ -17366,7 +18776,8 @@ int clif_spellbook_list(struct map_session_data *sd)
/*==========================================
* Magic Decoy Material List
*------------------------------------------*/
-int clif_magicdecoy_list(struct map_session_data *sd, uint16 skill_lv, short x, short y) {
+static int clif_magicdecoy_list(struct map_session_data *sd, uint16 skill_lv, short x, short y)
+{
int i, c;
int fd;
@@ -17376,7 +18787,7 @@ int clif_magicdecoy_list(struct map_session_data *sd, uint16 skill_lv, short x,
WFIFOHEAD(fd, 8 * 8 + 8);
WFIFOW(fd,0) = 0x1ad; // This is the official packet. [pakpil]
- for( i = 0, c = 0; i < MAX_INVENTORY; i ++ ) {
+ for (i = 0, c = 0; i < sd->status.inventorySize; i ++) {
if( itemdb_is_element(sd->status.inventory[i].nameid) ) {
WFIFOW(fd, c * 2 + 4) = sd->status.inventory[i].nameid;
c ++;
@@ -17390,7 +18801,7 @@ int clif_magicdecoy_list(struct map_session_data *sd, uint16 skill_lv, short x,
WFIFOW(fd,2) = c * 2 + 4;
WFIFOSET(fd, WFIFOW(fd, 2));
} else {
- clif->skill_fail(sd,NC_MAGICDECOY,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, NC_MAGICDECOY, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
@@ -17402,7 +18813,8 @@ int clif_magicdecoy_list(struct map_session_data *sd, uint16 skill_lv, short x,
/*==========================================
* Guillotine Cross Poisons List
*------------------------------------------*/
-int clif_poison_list(struct map_session_data *sd, uint16 skill_lv) {
+static int clif_poison_list(struct map_session_data *sd, uint16 skill_lv)
+{
int i, c;
int fd;
@@ -17412,7 +18824,7 @@ int clif_poison_list(struct map_session_data *sd, uint16 skill_lv) {
WFIFOHEAD(fd, 8 * 8 + 8);
WFIFOW(fd,0) = 0x1ad; // This is the official packet. [pakpil]
- for( i = 0, c = 0; i < MAX_INVENTORY; i ++ ) {
+ for (i = 0, c = 0; i < sd->status.inventorySize; i ++) {
if( itemdb_is_poison(sd->status.inventory[i].nameid) ) {
WFIFOW(fd, c * 2 + 4) = sd->status.inventory[i].nameid;
c ++;
@@ -17424,13 +18836,14 @@ int clif_poison_list(struct map_session_data *sd, uint16 skill_lv) {
WFIFOW(fd,2) = c * 2 + 4;
WFIFOSET(fd, WFIFOW(fd, 2));
} else {
- clif->skill_fail(sd,GC_POISONINGWEAPON,USESKILL_FAIL_GUILLONTINE_POISON,0);
+ clif->skill_fail(sd, GC_POISONINGWEAPON, USESKILL_FAIL_GUILLONTINE_POISON, 0, 0);
return 0;
}
return 1;
}
-int clif_autoshadowspell_list(struct map_session_data *sd) {
+static int clif_autoshadowspell_list(struct map_session_data *sd)
+{
int fd, i, c;
nullpo_ret(sd);
fd = sd->fd;
@@ -17441,7 +18854,7 @@ int clif_autoshadowspell_list(struct map_session_data *sd) {
WFIFOHEAD(fd, 2 * 6 + 4);
WFIFOW(fd,0) = 0x442;
- for( i = 0, c = 0; i < MAX_SKILL; i++ )
+ for (i = 0, c = 0; i < MAX_SKILL_DB; i++)
if( sd->status.skill[i].flag == SKILL_FLAG_PLAGIARIZED && sd->status.skill[i].id > 0 &&
sd->status.skill[i].id < GS_GLITTERING && skill->get_type(sd->status.skill[i].id) == BF_MAGIC )
{ // Can't auto cast both Extended class and 3rd class skills.
@@ -17457,7 +18870,7 @@ int clif_autoshadowspell_list(struct map_session_data *sd) {
sd->menuskill_val = c;
} else {
status_change_end(&sd->bl,SC_STOP,INVALID_TIMER);
- clif->skill_fail(sd,SC_AUTOSHADOWSPELL,USESKILL_FAIL_IMITATION_SKILL_NONE,0);
+ clif->skill_fail(sd, SC_AUTOSHADOWSPELL, USESKILL_FAIL_IMITATION_SKILL_NONE, 0, 0);
}
return 1;
@@ -17466,7 +18879,7 @@ int clif_autoshadowspell_list(struct map_session_data *sd) {
* Skill list for Four Elemental Analysis
* and Change Material skills.
*------------------------------------------*/
-int clif_skill_itemlistwindow( struct map_session_data *sd, uint16 skill_id, uint16 skill_lv )
+static int clif_skill_itemlistwindow(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv)
{
#if PACKETVER >= 20090922
int fd;
@@ -17492,18 +18905,19 @@ int clif_skill_itemlistwindow( struct map_session_data *sd, uint16 skill_id, uin
}
-void clif_parse_SkillSelectMenu(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_SkillSelectMenu(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/*==========================================
* used by SC_AUTOSHADOWSPELL
* RFIFOL(fd,2) - flag (currently not used)
*------------------------------------------*/
-void clif_parse_SkillSelectMenu(int fd, struct map_session_data *sd) {
+static void clif_parse_SkillSelectMenu(int fd, struct map_session_data *sd)
+{
if( sd->menuskill_id != SC_AUTOSHADOWSPELL )
return;
if( pc_istrading(sd) ) {
- clif->skill_fail(sd,sd->ud.skill_id,0,0);
+ clif->skill_fail(sd, sd->ud.skill_id, 0, 0, 0);
clif_menuskill_clear(sd);
return;
}
@@ -17516,7 +18930,7 @@ void clif_parse_SkillSelectMenu(int fd, struct map_session_data *sd) {
/*==========================================
* Kagerou/Oboro amulet spirit
*------------------------------------------*/
-void clif_charm(struct map_session_data *sd)
+static void clif_charm(struct map_session_data *sd)
{
#if PACKETVER >= 20110809
unsigned char buf[10];
@@ -17531,7 +18945,7 @@ void clif_charm(struct map_session_data *sd)
#endif
}
-void clif_parse_MoveItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_MoveItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Move Item from or to Personal Tab (CZ_WHATSOEVER) [FE]
/// 0907 <index>.W
///
@@ -17539,7 +18953,8 @@ void clif_parse_MoveItem(int fd, struct map_session_data *sd) __attribute__((non
/// type:
/// 0 = move item to personal tab
/// 1 = move item to normal tab
-void clif_parse_MoveItem(int fd, struct map_session_data *sd) {
+static void clif_parse_MoveItem(int fd, struct map_session_data *sd)
+{
#if PACKETVER >= 20111122
int index;
@@ -17550,7 +18965,7 @@ void clif_parse_MoveItem(int fd, struct map_session_data *sd) {
index = RFIFOW(fd,2)-2;
- if (index < 0 || index >= MAX_INVENTORY)
+ if (index < 0 || index >= sd->status.inventorySize)
return;
if ( sd->status.inventory[index].favorite && RFIFOB(fd, 4) == 1 )
@@ -17565,7 +18980,8 @@ void clif_parse_MoveItem(int fd, struct map_session_data *sd) {
}
/* [Ind/Hercules] */
-void clif_cashshop_db(void) {
+static void clif_cashshop_db(void)
+{
struct config_t cashshop_conf;
struct config_setting_t *cashshop = NULL, *cats = NULL;
const char *config_filename = "db/cashshop_db.conf"; // FIXME hardcoded name
@@ -17583,7 +18999,7 @@ void clif_cashshop_db(void) {
if( cashshop != NULL && (cats = libconfig->setting_get_elem(cashshop, 0)) != NULL ) {
for(i = 0; i < CASHSHOP_TAB_MAX; i++) {
struct config_setting_t *cat;
- char entry_name[10];
+ char entry_name[15];
sprintf(entry_name,"cat_%d",i);
@@ -17601,7 +19017,7 @@ void clif_cashshop_db(void) {
continue;
}
- if( name[0] == 'I' && name[1] == 'D' && strlen(name) <= 7 ) {
+ if (name[0] == 'I' && name[1] == 'D' && strlen(name) <= 12) {
if( !( data = itemdb->exists(atoi(name+2))) ) {
ShowWarning("cashshop_db: unknown item id '%s' in category '%s'\n", name+2, entry_name);
continue;
@@ -17629,7 +19045,8 @@ void clif_cashshop_db(void) {
}
/// Items that are in favorite tab of inventory (ZC_ITEM_FAVORITE).
/// 0900 <index>.W <favorite>.B
-void clif_favorite_item(struct map_session_data* sd, unsigned short index) {
+static void clif_favorite_item(struct map_session_data *sd, unsigned short index)
+{
#if PACKETVER >= 20120410
int fd;
@@ -17643,7 +19060,8 @@ void clif_favorite_item(struct map_session_data* sd, unsigned short index) {
#endif
}
-void clif_snap( struct block_list *bl, short x, short y ) {
+static void clif_snap(struct block_list *bl, short x, short y)
+{
#if PACKETVER >= 20110809
unsigned char buf[10];
@@ -17657,7 +19075,7 @@ void clif_snap( struct block_list *bl, short x, short y ) {
#endif
}
-void clif_monster_hp_bar(struct mob_data *md, struct map_session_data *sd)
+static void clif_monster_hp_bar(struct mob_data *md, struct map_session_data *sd)
{
#if PACKETVER >= 20120228
struct packet_monster_hp p;
@@ -17674,12 +19092,26 @@ void clif_monster_hp_bar(struct mob_data *md, struct map_session_data *sd)
}
/* [Ind/Hercules] placeholder for unsupported incoming packets (avoids server disconnecting client) */
-void __attribute__ ((unused)) clif_parse_dull(int fd,struct map_session_data *sd) {
+static void clif_parse_dull(int fd, struct map_session_data *sd)
+{
+ const int cmd = clif->cmd;
+ Assert_retv(cmd <= MAX_PACKET_DB && cmd >= MIN_PACKET_DB);
+
+ int packet_len = packets->db[cmd];
+ if (packet_len == -1) { // variable-length packet
+ packet_len = RFIFOW(fd, 2);
+ }
+ if (sd) {
+ ShowWarning("Unhandled packet 0x%04X (length %d), %s session #%d, %d/%d (AID/CID)\n", (uint32)cmd, packet_len, sd->state.active ? "authed" : "unauthed", fd, sd->status.account_id, sd->status.char_id);
+ } else {
+ ShowWarning("Unhandled packet 0x%04X (length %d), session #%d\n", (uint32)cmd, packet_len, fd);
+ }
return;
}
-void clif_parse_CashShopOpen(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_CashShopOpen(int fd, struct map_session_data *sd) {
+static void clif_parse_CashShopOpen(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_CashShopOpen(int fd, struct map_session_data *sd)
+{
if (map->list[sd->bl.m].flag.nocashshop) {
clif->messagecolor_self(fd, COLOR_RED, msg_fd(fd,1489)); //Cash Shop is disabled in this map
@@ -17693,78 +19125,110 @@ void clif_parse_CashShopOpen(int fd, struct map_session_data *sd) {
WFIFOSET(fd, 10);
}
-void clif_parse_CashShopClose(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_CashShopClose(int fd, struct map_session_data *sd) {
+static void clif_parse_CashShopClose(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_CashShopClose(int fd, struct map_session_data *sd)
+{
/* TODO apply some state tracking */
}
-void clif_parse_CashShopSchedule(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_CashShopSchedule(int fd, struct map_session_data *sd)
+static void clif_parse_CashShopSchedule(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_CashShopSchedule(int fd, struct map_session_data *sd)
+{
+ clif->cashShopSchedule(fd, sd);
+}
+
+void clif_cashShopSchedule(int fd, struct map_session_data *sd)
{
#if PACKETVER >= 20110614
- int i, j = 0;
+ int i = 0;
- for( i = 0; i < CASHSHOP_TAB_MAX; i++ ) {
- if( clif->cs.item_count[i] == 0 )
+ nullpo_retv(sd);
+ for (i = 0; i < CASHSHOP_TAB_MAX; i++) {
+ const int len = sizeof(struct PACKET_ZC_ACK_SCHEDULER_CASHITEM) + (clif->cs.item_count[i] * sizeof(struct PACKET_ZC_ACK_SCHEDULER_CASHITEM_sub));
+ int j = 0;
+ struct PACKET_ZC_ACK_SCHEDULER_CASHITEM *p;
+ if (clif->cs.item_count[i] == 0)
continue; // Skip empty tabs, the client only expects filled ones
- WFIFOHEAD(fd, 8 + ( clif->cs.item_count[i] * 6 ) );
- WFIFOW(fd, 0) = 0x8ca;
- WFIFOW(fd, 2) = 8 + ( clif->cs.item_count[i] * 6 );
- WFIFOW(fd, 4) = clif->cs.item_count[i];
- WFIFOW(fd, 6) = i;
+ WFIFOHEAD(fd, len);
+ p = WFIFOP(fd, 0);
+ p->packetType = 0x8ca;
+ p->packetLength = len;
+ p->count = clif->cs.item_count[i];
+ p->tabNum = i;
- for( j = 0; j < clif->cs.item_count[i]; j++ ) {
- WFIFOW(fd, 8 + ( 6 * j ) ) = clif->cs.data[i][j]->id;
- WFIFOL(fd, 10 + ( 6 * j ) ) = clif->cs.data[i][j]->price;
+ for (j = 0; j < clif->cs.item_count[i]; j++) {
+ p->items[j].itemId = clif->cs.data[i][j]->id;
+ p->items[j].price = clif->cs.data[i][j]->price;
}
- WFIFOSET(fd, 8 + ( clif->cs.item_count[i] * 6 ));
+ WFIFOSET(fd, len);
}
#endif
}
-void clif_parse_CashShopBuy(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_CashShopBuy(int fd, struct map_session_data *sd) {
- unsigned short limit = RFIFOW(fd, 4), i, j;
- unsigned int kafra_pay = RFIFOL(fd, 6);// [Ryuuzaki] - These are free cash points (strangely #CASH = main cash currently for us, confusing)
+/// R 0848 <len>.W <limit>.W <kafra pay>.L (<item id>.L <amount>.L <tab>.W)*
+static void clif_parse_CashShopBuy(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_CashShopBuy(int fd, struct map_session_data *sd)
+{
+ int len = RFIFOW(fd, 2);
+ unsigned short limit, i, j;
+ unsigned int kafra_pay;
+ int count;
if (map->list[sd->bl.m].flag.nocashshop) {
clif->messagecolor_self(fd, COLOR_RED, msg_fd(fd,1489)); //Cash Shop is disabled in this map
return;
}
+ if (len < 10)
+ return;
+
+ limit = RFIFOW(fd, 4);
+ kafra_pay = RFIFOL(fd, 6); // [Ryuuzaki] - These are free cash points (strangely #CASH = main cash currently for us, confusing)
+ count = (len - 10) / 10;
+ if (count != limit) {
+ ShowError("Wrong cash shop limit: %d\n", limit);
+ return;
+ }
+
for(i = 0; i < limit; i++) {
int qty = RFIFOL(fd, 14 + ( i * 10 ));
int id = RFIFOL(fd, 10 + ( i * 10 ));
short tab = RFIFOW(fd, 18 + ( i * 10 ));
enum CASH_SHOP_BUY_RESULT result = CSBR_UNKNOWN;
- if( tab < 0 || tab >= CASHSHOP_TAB_MAX )
+ if(tab < 0 || tab >= CASHSHOP_TAB_MAX)
continue;
- for( j = 0; j < clif->cs.item_count[tab]; j++ ) {
+ for(j = 0; j < clif->cs.item_count[tab]; j++) {
if( clif->cs.data[tab][j]->id == id )
break;
}
- if( j < clif->cs.item_count[tab] ) {
+ if(j < clif->cs.item_count[tab]) {
struct item_data *data;
- if( sd->kafraPoints < kafra_pay ) {
+ if(sd->kafraPoints < kafra_pay) {
result = CSBR_SHORTTAGE_CASH;
- } else if( (sd->cashPoints+kafra_pay) < (clif->cs.data[tab][j]->price * qty) ) {
+ } else if((sd->cashPoints+kafra_pay) < (clif->cs.data[tab][j]->price * qty)) {
result = CSBR_SHORTTAGE_CASH;
- } else if ( !( data = itemdb->exists(clif->cs.data[tab][j]->id) ) ) {
+ } else if (!(data = itemdb->exists(clif->cs.data[tab][j]->id))) {
result = CSBR_UNKONWN_ITEM;
} else {
struct item item_tmp;
int k, get_count;
+ int ret = 0;
get_count = qty;
if (!itemdb->isstackable2(data))
get_count = 1;
- pc->paycash(sd, clif->cs.data[tab][j]->price * qty, kafra_pay);// [Ryuuzaki]
+ ret = pc->paycash(sd, clif->cs.data[tab][j]->price * qty, kafra_pay);// [Ryuuzaki] //changed Kafrapoints calculation. [Normynator]
+ if (ret < 0) {
+ ShowError("clif_parse_CashShopBuy: The return from pc->paycash was negative which is not allowed.\n");
+ break; //This should never happen.
+ }
+ kafra_pay = ret;
for (k = 0; k < qty; k += get_count) {
if (!pet->create_egg(sd, data->nameid)) {
memset(&item_tmp, 0, sizeof(item_tmp));
@@ -17813,11 +19277,12 @@ void clif_parse_CashShopBuy(int fd, struct map_session_data *sd) {
}
}
-void clif_parse_CashShopReqTab(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_CashShopReqTab(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/* [Ind/Hercules] */
-void clif_parse_CashShopReqTab(int fd, struct map_session_data *sd)
+static void clif_parse_CashShopReqTab(int fd, struct map_session_data *sd)
{
-#if PACKETVER >= 20110222
+// [4144] packet exists only in 2011 and was dropped after
+#if PACKETVER >= 20110222 && PACKETVER < 20120000
short tab = RFIFOW(fd, 2);
int j;
@@ -17840,7 +19305,7 @@ void clif_parse_CashShopReqTab(int fd, struct map_session_data *sd)
}
/* [Ind/Hercules] */
-void clif_maptypeproperty2(struct block_list *bl,enum send_target t)
+static void clif_maptypeproperty2(struct block_list *bl, enum send_target t)
{
#if PACKETVER >= 20121010
struct packet_maptypeproperty2 p;
@@ -17868,7 +19333,8 @@ void clif_maptypeproperty2(struct block_list *bl,enum send_target t)
#endif
}
-void clif_status_change2(struct block_list *bl, int tid, enum send_target target, int type, int val1, int val2, int val3) {
+static void clif_status_change2(struct block_list *bl, int tid, enum send_target target, int type, int val1, int val2, int val3)
+{
struct packet_status_change2 p;
p.PacketType = status_change2Type;
@@ -17883,7 +19349,8 @@ void clif_status_change2(struct block_list *bl, int tid, enum send_target target
clif->send(&p,sizeof(p), bl, target);
}
-void clif_partytickack(struct map_session_data* sd, bool flag) {
+static void clif_partytickack(struct map_session_data *sd, bool flag)
+{
nullpo_retv(sd);
WFIFOHEAD(sd->fd, packet_len(0x2c9));
@@ -17892,7 +19359,7 @@ void clif_partytickack(struct map_session_data* sd, bool flag) {
WFIFOSET(sd->fd, packet_len(0x2c9));
}
-void clif_ShowScript(struct block_list *bl, const char *message)
+static void clif_ShowScript(struct block_list *bl, const char *message)
{
#if PACKETVER >= 20110111
char buf[256];
@@ -17917,7 +19384,8 @@ void clif_ShowScript(struct block_list *bl, const char *message)
#endif
}
-void clif_status_change_end(struct block_list *bl, int tid, enum send_target target, int type) {
+static void clif_status_change_end(struct block_list *bl, int tid, enum send_target target, int type)
+{
struct packet_status_change_end p;
nullpo_retv(bl);
@@ -17933,7 +19401,8 @@ void clif_status_change_end(struct block_list *bl, int tid, enum send_target tar
clif->send(&p,sizeof(p), bl, target);
}
-void clif_bgqueue_ack(struct map_session_data *sd, enum BATTLEGROUNDS_QUEUE_ACK response, unsigned char arena_id) {
+static void clif_bgqueue_ack(struct map_session_data *sd, enum BATTLEGROUNDS_QUEUE_ACK response, unsigned char arena_id)
+{
switch (response) {
case BGQA_FAIL_COOLDOWN:
case BGQA_FAIL_DESERTER:
@@ -17953,7 +19422,7 @@ void clif_bgqueue_ack(struct map_session_data *sd, enum BATTLEGROUNDS_QUEUE_ACK
}
}
-void clif_bgqueue_notice_delete(struct map_session_data *sd, enum BATTLEGROUNDS_QUEUE_NOTICE_DELETED response, const char *name)
+static void clif_bgqueue_notice_delete(struct map_session_data *sd, enum BATTLEGROUNDS_QUEUE_NOTICE_DELETED response, const char *name)
{
struct packet_bgqueue_notice_delete p;
@@ -17965,8 +19434,8 @@ void clif_bgqueue_notice_delete(struct map_session_data *sd, enum BATTLEGROUNDS_
clif->send(&p,sizeof(p), &sd->bl, SELF);
}
-void clif_parse_bgqueue_register(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_bgqueue_register(int fd, struct map_session_data *sd)
+static void clif_parse_bgqueue_register(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_bgqueue_register(int fd, struct map_session_data *sd)
{
const struct packet_bgqueue_register *p = RP2PTR(fd);
struct bg_arena *arena = NULL;
@@ -17990,7 +19459,8 @@ void clif_parse_bgqueue_register(int fd, struct map_session_data *sd)
bg->queue_add(sd, arena, (enum bg_queue_types)p->type);
}
-void clif_bgqueue_update_info(struct map_session_data *sd, unsigned char arena_id, int position) {
+static void clif_bgqueue_update_info(struct map_session_data *sd, unsigned char arena_id, int position)
+{
struct packet_bgqueue_update_info p;
nullpo_retv(sd);
@@ -18004,8 +19474,8 @@ void clif_bgqueue_update_info(struct map_session_data *sd, unsigned char arena_i
clif->send(&p,sizeof(p), &sd->bl, SELF);
}
-void clif_parse_bgqueue_checkstate(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_bgqueue_checkstate(int fd, struct map_session_data *sd)
+static void clif_parse_bgqueue_checkstate(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_bgqueue_checkstate(int fd, struct map_session_data *sd)
{
const struct packet_bgqueue_checkstate *p = RP2PTR(fd);
@@ -18016,8 +19486,8 @@ void clif_parse_bgqueue_checkstate(int fd, struct map_session_data *sd)
}
}
-void clif_parse_bgqueue_revoke_req(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_bgqueue_revoke_req(int fd, struct map_session_data *sd)
+static void clif_parse_bgqueue_revoke_req(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_bgqueue_revoke_req(int fd, struct map_session_data *sd)
{
const struct packet_bgqueue_revoke_req *p = RP2PTR(fd);
@@ -18027,8 +19497,8 @@ void clif_parse_bgqueue_revoke_req(int fd, struct map_session_data *sd)
clif->bgqueue_notice_delete(sd, BGQND_FAIL_NOT_QUEUING,p->bg_name);
}
-void clif_parse_bgqueue_battlebegin_ack(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_bgqueue_battlebegin_ack(int fd, struct map_session_data *sd)
+static void clif_parse_bgqueue_battlebegin_ack(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_bgqueue_battlebegin_ack(int fd, struct map_session_data *sd)
{
const struct packet_bgqueue_battlebegin_ack *p = RP2PTR(fd);
struct bg_arena *arena;
@@ -18042,7 +19512,8 @@ void clif_parse_bgqueue_battlebegin_ack(int fd, struct map_session_data *sd)
}
}
-void clif_bgqueue_joined(struct map_session_data *sd, int pos) {
+static void clif_bgqueue_joined(struct map_session_data *sd, int pos)
+{
struct packet_bgqueue_notify_entry p;
nullpo_retv(sd);
@@ -18053,13 +19524,15 @@ void clif_bgqueue_joined(struct map_session_data *sd, int pos) {
clif->send(&p,sizeof(p), &sd->bl, BG_QUEUE);
}
-void clif_bgqueue_pcleft(struct map_session_data *sd) {
+static void clif_bgqueue_pcleft(struct map_session_data *sd)
+{
/* no idea */
return;
}
// Sends BG ready req to all with same bg arena/type as sd
-void clif_bgqueue_battlebegins(struct map_session_data *sd, unsigned char arena_id, enum send_target target) {
+static void clif_bgqueue_battlebegins(struct map_session_data *sd, unsigned char arena_id, enum send_target target)
+{
struct packet_bgqueue_battlebegins p;
nullpo_retv(sd);
@@ -18071,7 +19544,7 @@ void clif_bgqueue_battlebegins(struct map_session_data *sd, unsigned char arena_
clif->send(&p,sizeof(p), &sd->bl, target);
}
-void clif_scriptclear(struct map_session_data *sd, int npcid)
+static void clif_scriptclear(struct map_session_data *sd, int npcid)
{
#if PACKETVER >= 20110928
struct packet_script_clear p;
@@ -18085,12 +19558,13 @@ void clif_scriptclear(struct map_session_data *sd, int npcid)
}
/* Made Possible Thanks to Yommy! */
-void clif_package_item_announce(struct map_session_data *sd, unsigned short nameid, unsigned short containerid) {
+static void clif_package_item_announce(struct map_session_data *sd, int nameid, int containerid)
+{
struct packet_package_item_announce p;
nullpo_retv(sd);
p.PacketType = package_item_announceType;
- p.PacketLength = 11+NAME_LENGTH;
+ p.PacketLength = 11 + NAME_LENGTH;
p.type = 0x0;
p.ItemID = nameid;
p.len = NAME_LENGTH;
@@ -18102,24 +19576,31 @@ void clif_package_item_announce(struct map_session_data *sd, unsigned short name
}
/* Made Possible Thanks to Yommy! */
-void clif_item_drop_announce(struct map_session_data *sd, unsigned short nameid, char *monsterName) {
+static void clif_item_drop_announce(struct map_session_data *sd, int nameid, char *monsterName)
+{
struct packet_item_drop_announce p;
nullpo_retv(sd);
p.PacketType = item_drop_announceType;
p.PacketLength = sizeof(p);
- p.type = 0x1;
p.ItemID = nameid;
+ p.monsterNameLen = NAME_LENGTH;
p.len = NAME_LENGTH;
safestrncpy(p.Name, sd->status.name, sizeof(p.Name));
- p.monsterNameLen = NAME_LENGTH;
- safestrncpy(p.monsterName, monsterName, sizeof(p.monsterName));
-
- clif->send(&p,sizeof(p), &sd->bl, ALL_CLIENT);
+ if (monsterName == NULL) {
+ // message: MSG_BROADCASTING_SPECIAL_ITEM_OBTAIN2
+ p.type = 0x2;
+ } else {
+ // message: MSG_BROADCASTING_SPECIAL_ITEM_OBTAIN
+ p.type = 0x1;
+ safestrncpy(p.monsterName, monsterName, sizeof(p.monsterName));
+ }
+ clif->send(&p, sizeof(p), &sd->bl, ALL_CLIENT);
}
/* [Ind/Hercules] special thanks to Yommy~! */
-void clif_skill_cooldown_list(int fd, struct skill_cd* cd) {
+static void clif_skill_cooldown_list(int fd, struct skill_cd *cd)
+{
#if PACKETVER >= 20120604
const int offset = 10;
#else
@@ -18159,7 +19640,8 @@ void clif_skill_cooldown_list(int fd, struct skill_cd* cd) {
* - ADDITEM_TO_CART_FAIL_WEIGHT = 0x0
* - ADDITEM_TO_CART_FAIL_COUNT = 0x1
*/
-void clif_cart_additem_ack(struct map_session_data *sd, int flag) {
+static void clif_cart_additem_ack(struct map_session_data *sd, int flag)
+{
struct packet_cart_additem_ack p;
nullpo_retv(sd);
@@ -18170,8 +19652,8 @@ void clif_cart_additem_ack(struct map_session_data *sd, int flag) {
}
/* Bank System [Yommy/Hercules] */
-void clif_parse_BankDeposit(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_BankDeposit(int fd, struct map_session_data *sd)
+static void clif_parse_BankDeposit(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_BankDeposit(int fd, struct map_session_data *sd)
{
const struct packet_banking_deposit_req *p = RP2PTR(fd);
int money;
@@ -18186,8 +19668,8 @@ void clif_parse_BankDeposit(int fd, struct map_session_data *sd)
pc->bank_deposit(sd,money);
}
-void clif_parse_BankWithdraw(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_BankWithdraw(int fd, struct map_session_data *sd)
+static void clif_parse_BankWithdraw(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_BankWithdraw(int fd, struct map_session_data *sd)
{
const struct packet_banking_withdraw_req *p = RP2PTR(fd);
int money;
@@ -18202,36 +19684,38 @@ void clif_parse_BankWithdraw(int fd, struct map_session_data *sd)
pc->bank_withdraw(sd,money);
}
-void clif_parse_BankCheck(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
-void clif_parse_BankCheck(int fd, struct map_session_data* sd)
+static void clif_parse_BankCheck(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_BankCheck(int fd, struct map_session_data *sd)
{
-#if PACKETVER >= 20130313
+#if PACKETVER >= 20130320
struct packet_banking_check p;
+ p.PacketType = banking_checkType;
if (!battle_config.feature_banking) {
- clif->messagecolor_self(fd, COLOR_RED, msg_fd(fd,1483));
- return;
+ p.Money = 0;
+ p.Reason = (short)1;
+ } else {
+ p.Money = (int)sd->status.bank_vault;
+ p.Reason = (short)0;
}
- p.PacketType = banking_checkType;
- p.Money = (int)sd->status.bank_vault;
- p.Reason = (short)0;
-
- clif->send(&p,sizeof(p), &sd->bl, SELF);
+ clif->send(&p, sizeof(p), &sd->bl, SELF);
#endif
}
-void clif_parse_BankOpen(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
-void clif_parse_BankOpen(int fd, struct map_session_data* sd) {
+static void clif_parse_BankOpen(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_BankOpen(int fd, struct map_session_data *sd)
+{
return;
}
-void clif_parse_BankClose(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
-void clif_parse_BankClose(int fd, struct map_session_data* sd) {
+static void clif_parse_BankClose(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_BankClose(int fd, struct map_session_data *sd)
+{
return;
}
-void clif_bank_deposit(struct map_session_data *sd, enum e_BANKING_DEPOSIT_ACK reason)
+static void clif_bank_deposit(struct map_session_data *sd, enum e_BANKING_DEPOSIT_ACK reason)
{
#if PACKETVER >= 20130313
struct packet_banking_deposit_ack p;
@@ -18246,7 +19730,7 @@ void clif_bank_deposit(struct map_session_data *sd, enum e_BANKING_DEPOSIT_ACK r
#endif
}
-void clif_bank_withdraw(struct map_session_data *sd,enum e_BANKING_WITHDRAW_ACK reason)
+static void clif_bank_withdraw(struct map_session_data *sd, enum e_BANKING_WITHDRAW_ACK reason)
{
#if PACKETVER >= 20130313
struct packet_banking_withdraw_ack p;
@@ -18263,7 +19747,8 @@ void clif_bank_withdraw(struct map_session_data *sd,enum e_BANKING_WITHDRAW_ACK
/* TODO: official response packet (tried 0x8cb/0x97b but the display was quite screwed up.) */
/* currently mimicing */
-void clif_show_modifiers (struct map_session_data *sd) {
+static void clif_show_modifiers(struct map_session_data *sd)
+{
nullpo_retv(sd);
if( sd->status.mod_exp != 100 || sd->status.mod_drop != 100 || sd->status.mod_death != 100 ) {
@@ -18276,7 +19761,8 @@ void clif_show_modifiers (struct map_session_data *sd) {
}
-void clif_notify_bounditem(struct map_session_data *sd, unsigned short index) {
+static void clif_notify_bounditem(struct map_session_data *sd, unsigned short index)
+{
struct packet_notify_bounditem p;
nullpo_retv(sd);
@@ -18286,11 +19772,12 @@ void clif_notify_bounditem(struct map_session_data *sd, unsigned short index) {
clif->send(&p,sizeof(p), &sd->bl, SELF);
}
-void clif_parse_GMFullStrip(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GMFullStrip(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/**
* Parses the (GM) right click option 'remove all equipment'
**/
-void clif_parse_GMFullStrip(int fd, struct map_session_data *sd) {
+static void clif_parse_GMFullStrip(int fd, struct map_session_data *sd)
+{
struct map_session_data *tsd = map->id2sd(RFIFOL(fd,2));
int i;
@@ -18307,7 +19794,8 @@ void clif_parse_GMFullStrip(int fd, struct map_session_data *sd) {
/**
* clif_delay_damage timer, sends the stored data and clears the memory afterwards
**/
-int clif_delay_damage_sub(int tid, int64 tick, int id, intptr_t data) {
+static int clif_delay_damage_sub(int tid, int64 tick, int id, intptr_t data)
+{
struct cdelayed_damage *dd = (struct cdelayed_damage *)data;
clif->send(&dd->p,sizeof(struct packet_damage),&dd->bl,AREA_WOS);
@@ -18331,7 +19819,8 @@ int clif_delay_damage_sub(int tid, int64 tick, int id, intptr_t data) {
*
* @return clif->calc_walkdelay used in further processing
**/
-int clif_delay_damage(int64 tick, struct block_list *src, struct block_list *dst, int sdelay, int ddelay, int64 in_damage, short div, unsigned char type) {
+static int clif_delay_damage(int64 tick, struct block_list *src, struct block_list *dst, int sdelay, int ddelay, int64 in_damage, short div, unsigned char type)
+{
struct cdelayed_damage *dd;
struct status_change *sc;
#if PACKETVER < 20071113
@@ -18390,50 +19879,59 @@ int clif_delay_damage(int64 tick, struct block_list *src, struct block_list *dst
return clif->calc_walkdelay(dst,ddelay,type,damage,div);
}
-void clif_parse_NPCShopClosed(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_NPCShopClosed(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/* Thanks to Yommy */
-void clif_parse_NPCShopClosed(int fd, struct map_session_data *sd) {
+static void clif_parse_NPCShopClosed(int fd, struct map_session_data *sd)
+{
/* TODO track the state <3~ */
sd->npc_shopid = 0;
}
/* NPC Market (by Ind after an extensive debugging of the packet, only possible thanks to Yommy <3) */
-void clif_npc_market_open(struct map_session_data *sd, struct npc_data *nd) {
-#if PACKETVER >= 20131223
- struct npc_item_list *shop;
- unsigned short shop_size, i, c;
-
+static void clif_npc_market_open(struct map_session_data *sd, struct npc_data *nd)
+{
+#if PACKETVER_MAIN_NUM >= 20131120 || PACKETVER_RE_NUM >= 20131106 || defined(PACKETVER_ZERO)
nullpo_retv(sd);
nullpo_retv(nd);
- shop = nd->u.scr.shop->item;
- shop_size = nd->u.scr.shop->items;
- npcmarket_open.PacketType = npcmarketopenType;
+ struct npc_item_list *shop = nd->u.scr.shop->item;
+ const int shop_size = nd->u.scr.shop->items;
+
+ int c = 0;
+ int maxCount = (sizeof(packet_buf) - sizeof(struct PACKET_ZC_NPC_MARKET_OPEN)) / sizeof(struct PACKET_ZC_NPC_MARKET_OPEN_sub);
+ struct PACKET_ZC_NPC_MARKET_OPEN *packet = (struct PACKET_ZC_NPC_MARKET_OPEN*)&packet_buf[0];
+ packet->packetType = HEADER_ZC_NPC_MARKET_OPEN;
- for(i = 0, c = 0; i < shop_size; i++) {
+ for (int i = 0; i < shop_size && c < maxCount; i++) {
struct item_data *id = NULL;
if (shop[i].nameid && (id = itemdb->exists(shop[i].nameid)) != NULL) {
- npcmarket_open.list[c].nameid = shop[i].nameid;
- npcmarket_open.list[c].price = shop[i].value;
- npcmarket_open.list[c].qty = shop[i].qty;
- npcmarket_open.list[c].type = itemtype(id->type);
- npcmarket_open.list[c].view = ( id->view_id > 0 ) ? id->view_id : id->nameid;
+ packet->list[c].nameid = shop[i].nameid;
+ packet->list[c].price = shop[i].value;
+ packet->list[c].qty = shop[i].qty;
+ packet->list[c].type = itemtype(id->type);
+ packet->list[c].weight = id->weight * 10;
c++;
}
}
- npcmarket_open.PacketLength = 4 + ( sizeof(npcmarket_open.list[0]) * c );
-
- clif->send(&npcmarket_open,npcmarket_open.PacketLength,&sd->bl,SELF);
+ packet->packetLength = sizeof(struct PACKET_ZC_NPC_MARKET_OPEN) + sizeof(struct PACKET_ZC_NPC_MARKET_OPEN_sub) * c;
+ clif->send(packet, packet->packetLength, &sd->bl, SELF);
#endif
}
-void clif_parse_NPCMarketClosed(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_NPCMarketClosed(int fd, struct map_session_data *sd) {
+static void clif_parse_NPCMarketClosed(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_NPCMarketClosed(int fd, struct map_session_data *sd)
+{
/* TODO track the state <3~ */
sd->npc_shopid = 0;
}
-void clif_npc_market_purchase_ack(struct map_session_data *sd, const struct itemlist *item_list, unsigned char response)
+static void clif_parse_NPCBarterClosed(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_NPCBarterClosed(int fd, struct map_session_data *sd)
+{
+ sd->npc_shopid = 0;
+}
+
+static void clif_npc_market_purchase_ack(struct map_session_data *sd, const struct itemlist *item_list, unsigned char response)
{
#if PACKETVER >= 20131223
unsigned short c = 0;
@@ -18470,8 +19968,8 @@ void clif_npc_market_purchase_ack(struct map_session_data *sd, const struct item
#endif
}
-void clif_parse_NPCMarketPurchase(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_NPCMarketPurchase(int fd, struct map_session_data *sd)
+static void clif_parse_NPCMarketPurchase(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_NPCMarketPurchase(int fd, struct map_session_data *sd)
{
#if PACKETVER >= 20131223
const struct packet_npc_market_purchase *p = RP2PTR(fd);
@@ -18479,7 +19977,7 @@ void clif_parse_NPCMarketPurchase(int fd, struct map_session_data *sd)
int count = (p->PacketLength - 4) / sizeof p->list[0];
struct itemlist item_list;
- Assert_retv(count >= 0 && count <= MAX_INVENTORY);
+ Assert_retv(count >= 0 && count <= sd->status.inventorySize);
VECTOR_INIT(item_list);
VECTOR_ENSURE(item_list, count, 1);
@@ -18500,7 +19998,8 @@ void clif_parse_NPCMarketPurchase(int fd, struct map_session_data *sd)
#endif
}
-void clif_PartyLeaderChanged(struct map_session_data *sd, int prev_leader_aid, int new_leader_aid) {
+static void clif_PartyLeaderChanged(struct map_session_data *sd, int prev_leader_aid, int new_leader_aid)
+{
struct packet_party_leader_changed p;
nullpo_retv(sd);
@@ -18512,9 +20011,10 @@ void clif_PartyLeaderChanged(struct map_session_data *sd, int prev_leader_aid, i
clif->send(&p,sizeof(p),&sd->bl,PARTY);
}
-void clif_parse_RouletteOpen(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_RouletteOpen(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/* Roulette System [Yommy/Hercules] */
-void clif_parse_RouletteOpen(int fd, struct map_session_data* sd) {
+static void clif_parse_RouletteOpen(int fd, struct map_session_data *sd)
+{
#if PACKETVER >= 20140612
struct packet_roulette_open_ack p;
@@ -18524,21 +20024,21 @@ void clif_parse_RouletteOpen(int fd, struct map_session_data* sd) {
}
p.PacketType = 0xa1a;
- p.Result = 0;
+ p.Result = OPEN_ROULETTE_SUCCESS;
p.Serial = 0;
p.Step = sd->roulette.stage - 1;
p.Idx = (char)sd->roulette.prizeIdx;
p.AdditionItemID = -1; /** TODO **/
- p.BronzePoint = pc_readglobalreg(sd, script->add_str("TmpRouletteBronze"));
- p.GoldPoint = pc_readglobalreg(sd, script->add_str("TmpRouletteGold"));
- p.SilverPoint = pc_readglobalreg(sd, script->add_str("TmpRouletteSilver"));
+ p.BronzePoint = pc_readglobalreg(sd, script->add_variable("TmpRouletteBronze"));
+ p.GoldPoint = pc_readglobalreg(sd, script->add_variable("TmpRouletteGold"));
+ p.SilverPoint = pc_readglobalreg(sd, script->add_variable("TmpRouletteSilver"));
clif->send(&p,sizeof(p), &sd->bl, SELF);
#endif
}
-void clif_parse_RouletteInfo(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
-void clif_parse_RouletteInfo(int fd, struct map_session_data* sd)
+static void clif_parse_RouletteInfo(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_RouletteInfo(int fd, struct map_session_data *sd)
{
#if PACKETVER >= 20140612
struct packet_roulette_info_ack p;
@@ -18550,7 +20050,7 @@ void clif_parse_RouletteInfo(int fd, struct map_session_data* sd)
}
p.PacketType = rouletteinfoackType;
- p.PacketLength = 8 + (42 * 8);
+ p.PacketLength = sizeof(p);
p.RouletteSerial = 1;
for(i = 0; i < MAX_ROULETTE_LEVEL; i++) {
@@ -18559,6 +20059,9 @@ void clif_parse_RouletteInfo(int fd, struct map_session_data* sd)
p.ItemInfo[count].Position = j;
p.ItemInfo[count].ItemId = clif->rd.nameid[i][j];
p.ItemInfo[count].Count = clif->rd.qty[i][j];
+#if PACKETVER >= 20180511
+ p.ItemInfo[count].unused = 0;
+#endif
count++;
}
}
@@ -18566,8 +20069,9 @@ void clif_parse_RouletteInfo(int fd, struct map_session_data* sd)
#endif
}
-void clif_parse_RouletteClose(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
-void clif_parse_RouletteClose(int fd, struct map_session_data* sd) {
+static void clif_parse_RouletteClose(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_RouletteClose(int fd, struct map_session_data *sd)
+{
if( !battle_config.feature_roulette ) {
clif->message(fd, msg_fd(fd,82)); // Roulette is disabled
return;
@@ -18579,8 +20083,9 @@ void clif_parse_RouletteClose(int fd, struct map_session_data* sd) {
return;
}
-void clif_parse_RouletteGenerate(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
-void clif_parse_RouletteGenerate(int fd, struct map_session_data* sd) {
+static void clif_parse_RouletteGenerate(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_RouletteGenerate(int fd, struct map_session_data *sd)
+{
unsigned char result = GENERATE_ROULETTE_SUCCESS;
short stage = sd->roulette.stage;
@@ -18593,21 +20098,21 @@ void clif_parse_RouletteGenerate(int fd, struct map_session_data* sd) {
stage = sd->roulette.stage = 0;
if( stage == 0 ) {
- if( pc_readglobalreg(sd, script->add_str("TmpRouletteBronze")) <= 0 &&
- pc_readglobalreg(sd, script->add_str("TmpRouletteSilver")) < 10 &&
- pc_readglobalreg(sd, script->add_str("TmpRouletteGold")) < 10 )
+ if( pc_readglobalreg(sd, script->add_variable("TmpRouletteBronze")) <= 0 &&
+ pc_readglobalreg(sd, script->add_variable("TmpRouletteSilver")) < 10 &&
+ pc_readglobalreg(sd, script->add_variable("TmpRouletteGold")) < 10 )
result = GENERATE_ROULETTE_NO_ENOUGH_POINT;
}
if( result == GENERATE_ROULETTE_SUCCESS ) {
if( stage == 0 ) {
- if( pc_readglobalreg(sd, script->add_str("TmpRouletteBronze")) > 0 ) {
- pc_setglobalreg(sd, script->add_str("TmpRouletteBronze"), pc_readglobalreg(sd, script->add_str("TmpRouletteBronze")) - 1);
- } else if( pc_readglobalreg(sd, script->add_str("TmpRouletteSilver")) > 9 ) {
- pc_setglobalreg(sd, script->add_str("TmpRouletteSilver"), pc_readglobalreg(sd, script->add_str("TmpRouletteSilver")) - 10);
+ if( pc_readglobalreg(sd, script->add_variable("TmpRouletteBronze")) > 0 ) {
+ pc_setglobalreg(sd, script->add_variable("TmpRouletteBronze"), pc_readglobalreg(sd, script->add_variable("TmpRouletteBronze")) - 1);
+ } else if( pc_readglobalreg(sd, script->add_variable("TmpRouletteSilver")) > 9 ) {
+ pc_setglobalreg(sd, script->add_variable("TmpRouletteSilver"), pc_readglobalreg(sd, script->add_variable("TmpRouletteSilver")) - 10);
stage = sd->roulette.stage = 2;
- } else if( pc_readglobalreg(sd, script->add_str("TmpRouletteGold")) > 9 ) {
- pc_setglobalreg(sd, script->add_str("TmpRouletteGold"), pc_readglobalreg(sd, script->add_str("TmpRouletteGold")) - 10);
+ } else if( pc_readglobalreg(sd, script->add_variable("TmpRouletteGold")) > 9 ) {
+ pc_setglobalreg(sd, script->add_variable("TmpRouletteGold"), pc_readglobalreg(sd, script->add_variable("TmpRouletteGold")) - 10);
stage = sd->roulette.stage = 4;
}
}
@@ -18633,11 +20138,11 @@ void clif_parse_RouletteGenerate(int fd, struct map_session_data* sd) {
sd->roulette.stage++;
}
-void clif_parse_RouletteRecvItem(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_RouletteRecvItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/**
* Request to cash in!
**/
-void clif_parse_RouletteRecvItem(int fd, struct map_session_data* sd)
+static void clif_parse_RouletteRecvItem(int fd, struct map_session_data *sd)
{
#if PACKETVER >= 20140612
struct packet_roulette_itemrecv_ack p;
@@ -18685,7 +20190,8 @@ void clif_parse_RouletteRecvItem(int fd, struct map_session_data* sd)
#endif
}
-bool clif_parse_roulette_db(void) {
+static bool clif_parse_roulette_db(void)
+{
struct config_t roulette_conf;
struct config_setting_t *roulette = NULL, *levels = NULL;
const char *config_filename = "db/roulette_db.conf"; // FIXME hardcoded name
@@ -18720,7 +20226,7 @@ bool clif_parse_roulette_db(void) {
continue;
}
- if( name[0] == 'I' && name[1] == 'D' && strlen(name) <= 7 ) {
+ if (name[0] == 'I' && name[1] == 'D' && strlen(name) <= 12) {
if( !( data = itemdb->exists(atoi(name+2))) ) {
ShowWarning("roulette_db: unknown item id '%s' in category '%s'\n", name+2, entry_name);
continue;
@@ -18777,7 +20283,7 @@ bool clif_parse_roulette_db(void) {
/**
*
**/
-void clif_roulette_generate_ack(struct map_session_data *sd, unsigned char result, short stage, short prizeIdx, short bonusItemID)
+static void clif_roulette_generate_ack(struct map_session_data *sd, enum GENERATE_ROULETTE_ACK result, short stage, short prizeIdx, int bonusItemID)
{
#if PACKETVER >= 20140612
struct packet_roulette_generate_ack p;
@@ -18788,9 +20294,9 @@ void clif_roulette_generate_ack(struct map_session_data *sd, unsigned char resul
p.Step = stage;
p.Idx = prizeIdx;
p.AdditionItemID = bonusItemID;
- p.RemainBronze = pc_readglobalreg(sd, script->add_str("TmpRouletteBronze"));
- p.RemainGold = pc_readglobalreg(sd, script->add_str("TmpRouletteGold"));
- p.RemainSilver = pc_readglobalreg(sd, script->add_str("TmpRouletteSilver"));
+ p.RemainBronze = pc_readglobalreg(sd, script->add_variable("TmpRouletteBronze"));
+ p.RemainGold = pc_readglobalreg(sd, script->add_variable("TmpRouletteGold"));
+ p.RemainSilver = pc_readglobalreg(sd, script->add_variable("TmpRouletteSilver"));
clif->send(&p,sizeof(p), &sd->bl, SELF);
#endif
@@ -18799,7 +20305,7 @@ void clif_roulette_generate_ack(struct map_session_data *sd, unsigned char resul
/**
* Stackable items merger
*/
-void clif_openmergeitem(int fd, struct map_session_data *sd)
+static void clif_openmergeitem(int fd, struct map_session_data *sd)
{
#if PACKETVER > 20120228
int i = 0, n = 0, j = 0;
@@ -18809,7 +20315,7 @@ void clif_openmergeitem(int fd, struct map_session_data *sd)
nullpo_retv(sd);
memset(&merge_items,'\0',sizeof(merge_items));
- for (i = 0; i < MAX_INVENTORY; i++) {
+ for (i = 0; i < sd->status.inventorySize; i++) {
struct item *item_data = &sd->status.inventory[i];
if (item_data->nameid == 0 || !itemdb->isstackable(item_data->nameid) || item_data->bound != IBT_NONE)
@@ -18847,7 +20353,7 @@ void clif_openmergeitem(int fd, struct map_session_data *sd)
#endif
}
-int clif_comparemergeitem(const void *a, const void *b)
+static int clif_comparemergeitem(const void *a, const void *b)
{
const struct merge_item *a_ = a;
const struct merge_item *b_ = b;
@@ -18859,17 +20365,18 @@ int clif_comparemergeitem(const void *a, const void *b)
return a_->nameid > b_->nameid ? -1 : 1;
}
-void clif_ackmergeitems(int fd, struct map_session_data *sd)
+static void clif_ackmergeitems(int fd, struct map_session_data *sd)
{
#if PACKETVER > 20120228
int i = 0, n = 0, length = 0, count = 0;
- int16 nameid = 0, indexes[MAX_INVENTORY] = {0}, amounts[MAX_INVENTORY] = {0};
+ int nameid = 0;
+ int16 indexes[MAX_INVENTORY] = {0}, amounts[MAX_INVENTORY] = {0};
struct item item_data;
nullpo_retv(sd);
length = (RFIFOW(fd,2) - 4)/2;
- if (length >= MAX_INVENTORY || length < 2) {
+ if (length >= sd->status.inventorySize || length < 2) {
WFIFOHEAD(fd,7);
WFIFOW(fd,0) = 0x96f;
WFIFOW(fd,2) = 0;
@@ -18883,7 +20390,7 @@ void clif_ackmergeitems(int fd, struct map_session_data *sd)
int16 idx = RFIFOW(fd,i*2+4) - 2;
struct item *it = NULL;
- if (idx < 0 || idx >= MAX_INVENTORY)
+ if (idx < 0 || idx >= sd->status.inventorySize)
continue;
it = &sd->status.inventory[idx];
@@ -18933,7 +20440,7 @@ void clif_ackmergeitems(int fd, struct map_session_data *sd)
item_data.unique_id = itemdb->unique_id(sd);
pc->additem(sd,&item_data,count,LOG_TYPE_NPC);
- ARR_FIND(0,MAX_INVENTORY,i,item_data.unique_id == sd->status.inventory[i].unique_id);
+ ARR_FIND(0, sd->status.inventorySize, i, item_data.unique_id == sd->status.inventory[i].unique_id);
WFIFOHEAD(fd,7);
WFIFOW(fd,0) = 0x96f;
@@ -18944,13 +20451,13 @@ void clif_ackmergeitems(int fd, struct map_session_data *sd)
#endif
}
-void clif_cancelmergeitem (int fd, struct map_session_data *sd)
+static void clif_cancelmergeitem(int fd, struct map_session_data *sd)
{
//Track The merge item cancelation ?
return;
}
-void clif_dressroom_open(struct map_session_data *sd, int view)
+static void clif_dressroom_open(struct map_session_data *sd, int view)
{
#if PACKETVER >= 20150513
int fd;
@@ -18967,7 +20474,7 @@ void clif_dressroom_open(struct map_session_data *sd, int view)
/// Request to select cart's visual look for new cart design (ZC_SELECTCART).
/// 097f <Length>.W <identity>.L <type>.B
-void clif_selectcart(struct map_session_data *sd)
+static void clif_selectcart(struct map_session_data *sd)
{
#if PACKETVER >= 20150805
int i = 0, fd;
@@ -18988,7 +20495,7 @@ void clif_selectcart(struct map_session_data *sd)
}
/// Starts navigation to the given target on client side
-void clif_navigate_to(struct map_session_data *sd, const char* mapname, uint16 x, uint16 y, uint8 flag, bool hideWindow, uint16 mob_id)
+static void clif_navigate_to(struct map_session_data *sd, const char *mapname, uint16 x, uint16 y, uint8 flag, bool hideWindow, uint16 mob_id)
{
// probably this packet with other fields present in older packet versions
#if PACKETVER >= 20120307
@@ -19035,7 +20542,7 @@ void clif_navigate_to(struct map_session_data *sd, const char* mapname, uint16 x
* @param bl The requested bl.
* @return The bl's name (guaranteed to be non-NULL).
*/
-const char *clif_get_bl_name(const struct block_list *bl)
+static const char *clif_get_bl_name(const struct block_list *bl)
{
const char *name = status->get_name(bl);
@@ -19045,21 +20552,177 @@ const char *clif_get_bl_name(const struct block_list *bl)
return name;
}
+/**
+ * Clan System: Sends the basic clan informations to client.
+ * 098a <length>.W <clan id>.L <clan name>.24B <clan master>.24B <clan map>.16B <alliance count>.B
+ * <antagonist count>.B { <alliance>.24B } * alliance count { <antagonist>.24B } * antagonist count (ZC_CLANINFO)
+ */
+static void clif_clan_basicinfo(struct map_session_data *sd)
+{
+#if PACKETVER_MAIN_NUM >= 20130626 || PACKETVER_RE_NUM >= 20130605 || defined(PACKETVER_ZERO)
+ int len, i, fd;
+ struct clan *c, *ally, *antagonist;
+ struct PACKET_ZC_CLANINFO *packet = NULL;
+ nullpo_retv(sd);
+ nullpo_retv(c = sd->clan);
+
+ len = sizeof(struct PACKET_ZC_CLANINFO);
+ fd = sd->fd;
+
+ const int maxEntries = 100; // max entries with clan names
+ WFIFOHEAD(fd, len + maxEntries * 24);
+ packet = WFIFOP(fd, 0);
+
+ packet->PacketType = HEADER_ZC_CLANINFO;
+ packet->ClanID = c->clan_id;
+
+ safestrncpy(packet->ClanName, c->name, NAME_LENGTH);
+ safestrncpy(packet->MasterName, c->master, NAME_LENGTH);
+
+ mapindex->getmapname_ext(c->map, packet->Map);
+
+ packet->AllyCount = VECTOR_LENGTH(c->allies);
+ packet->AntagonistCount = VECTOR_LENGTH(c->antagonists);
+
+ int cnt = 0;
+ // All allies and antagonists are assumed as valid entries
+ // since it only gets inside the vector after the validation
+ // on clan->config_read
+ for (i = 0; i < VECTOR_LENGTH(c->allies) && cnt < maxEntries; i++) {
+ struct clan_relationship *al = &VECTOR_INDEX(c->allies, i);
+
+ if ((ally = clan->search(al->clan_id)) != NULL) {
+ safestrncpy(WFIFOP(fd, len), ally->name, NAME_LENGTH);
+ len += NAME_LENGTH;
+ cnt ++;
+ }
+ }
+
+ for (i = 0; i < VECTOR_LENGTH(c->antagonists) && cnt < maxEntries; i++) {
+ struct clan_relationship *an = &VECTOR_INDEX(c->antagonists, i);
+
+ if ((antagonist = clan->search(an->clan_id)) != NULL) {
+ safestrncpy(WFIFOP(fd, len), antagonist->name, NAME_LENGTH);
+ len += NAME_LENGTH;
+ cnt ++;
+ }
+ }
+
+ packet->PacketLength = len;
+ WFIFOSET(fd, len);
+#endif
+}
+
+/**
+ * Clan System: Updates the online and maximum player count of a clan.
+ * 0988 <online count>.W <maximum member amount>.W (ZC_NOTIFY_CLAN_CONNECTINFO)
+ */
+static void clif_clan_onlinecount(struct clan *c)
+{
+#if PACKETVER >= 20120716
+ struct map_session_data *sd;
+ struct PACKET_ZC_NOTIFY_CLAN_CONNECTINFO p;
+
+ nullpo_retv(c);
+
+ p.PacketType = clanOnlineCount;
+ p.NumConnect = c->connect_member;
+ p.NumTotal = c->max_member;
+
+ if ((sd = clan->getonlinesd(c)) != NULL) {
+ clif->send(&p, sizeof(p), &sd->bl, CLAN);
+ }
+#endif
+}
+
+/**
+ * Clan System: Notifies the client that the player has left his clan.
+ * 0989 (ZC_ACK_CLAN_LEAVE)
+ */
+static void clif_clan_leave(struct map_session_data *sd)
+{
+#if PACKETVER >= 20131223
+ struct PACKET_ZC_ACK_CLAN_LEAVE p;
+
+ nullpo_retv(sd);
+
+ p.PacketType = clanLeave;
+
+ clif->send(&p, sizeof(p), &sd->bl, SELF);
+#endif
+}
+
+/**
+ * Clan System: Sends a clan message to a player
+ * 098e <length>.W <name>.24B <message>.?B (ZC_NOTIFY_CLAN_CHAT)
+ */
+static void clif_clan_message(struct clan *c, const char *mes, int len)
+{
+#if PACKETVER >= 20120716
+ struct map_session_data *sd;
+ struct PACKET_ZC_NOTIFY_CLAN_CHAT *p;
+ unsigned int max_len = CHAT_SIZE_MAX - 5 - NAME_LENGTH;
+ int packet_length;
+
+ nullpo_retv(c);
+ nullpo_retv(mes);
+
+ if (len == 0) {
+ return;
+ } else if (len > max_len) {
+ ShowWarning("clif_clan_message: Truncated message '%s' (len=%d, max=%u, clan_id=%d).\n", mes, len, max_len, c->clan_id);
+ len = max_len;
+ }
+
+ packet_length = sizeof(*p) + len + 1;
+ p = (struct PACKET_ZC_NOTIFY_CLAN_CHAT *)aMalloc(packet_length);
+ p->PacketType = clanMessage;
+ p->PacketLength = packet_length;
+ // p->MemberName is being ignored on the client side.
+ safestrncpy(p->Message, mes, len + 1);
+
+ if ((sd = clan->getonlinesd(c)) != NULL)
+ clif->send(p, packet_length, &sd->bl, CLAN);
+ aFree(p);
+#endif
+}
+
+static void clif_parse_ClanMessage(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+/**
+ * Clan System: Parses a clan message from a player.
+ * 098d <length>.W <text>.?B (<name> : <message>) (CZ_CLAN_CHAT)
+ */
+static void clif_parse_ClanMessage(int fd, struct map_session_data *sd)
+{
+#if PACKETVER >= 20120716
+ const struct packet_chat_message *packet = RP2PTR(fd);
+ char message[CHAT_SIZE_MAX + NAME_LENGTH + 3 + 1];
+
+ if (clif->process_chat_message(sd, packet, message, sizeof(message)) == NULL)
+ return;
+
+ clan->send_message(sd, message);
+#endif
+}
+
/* */
-unsigned short clif_decrypt_cmd( int cmd, struct map_session_data *sd ) {
+static unsigned short clif_decrypt_cmd(int cmd, struct map_session_data *sd)
+{
if( sd ) {
return (cmd ^ ((sd->cryptKey >> 16) & 0x7FFF));
}
return (cmd ^ (((( clif->cryptKey[0] * clif->cryptKey[1] ) + clif->cryptKey[2]) >> 16) & 0x7FFF));
}
-unsigned short clif_parse_cmd_normal( int fd, struct map_session_data *sd ) {
+static unsigned short clif_parse_cmd_normal(int fd, struct map_session_data *sd)
+{
unsigned short cmd = RFIFOW(fd,0);
return cmd;
}
-unsigned short clif_parse_cmd_decrypt( int fd, struct map_session_data *sd ) {
+static unsigned short clif_parse_cmd_decrypt(int fd, struct map_session_data *sd)
+{
unsigned short cmd = RFIFOW(fd,0);
cmd = clif->decrypt_cmd(cmd, sd);
@@ -19067,11 +20730,12 @@ unsigned short clif_parse_cmd_decrypt( int fd, struct map_session_data *sd ) {
return cmd;
}
-unsigned short clif_parse_cmd_optional( int fd, struct map_session_data *sd ) {
+static unsigned short clif_parse_cmd_optional(int fd, struct map_session_data *sd)
+{
unsigned short cmd = RFIFOW(fd,0);
// filter out invalid / unsupported packets
- if( cmd > MAX_PACKET_DB || cmd < MIN_PACKET_DB || packet_db[cmd].len == 0 ) {
+ if( cmd > MAX_PACKET_DB || cmd < MIN_PACKET_DB || packets->db[cmd] == 0 ) {
if( sd )
sd->parse_cmd_func = clif_parse_cmd_decrypt;
return clif_parse_cmd_decrypt(fd, sd);
@@ -19082,10 +20746,1555 @@ unsigned short clif_parse_cmd_optional( int fd, struct map_session_data *sd ) {
return cmd;
}
+/**
+ * Send all of a session's achievement information to client.
+ * Called only once on login/char-loading. (PACKET_ZC_ALL_ACH_LIST)
+ * @packet [out] 0x0A23 <ID>.W <Length>.W <ach_count>.L <total_points>.L <rank>.W <current_rank_points>.L <next_rank_points>.L <struct ach_list_info *[]>.P
+ * @param fd socket descriptor
+ * @param sd pointer to map_session_data
+ */
+static void clif_achievement_send_list(int fd, struct map_session_data *sd)
+{
+#if PACKETVER_MAIN_NUM >= 20150225 || PACKETVER_RE_NUM >= 20141126 || defined(PACKETVER_ZERO)
+ int i = 0, count = 0, curr_exp_tmp = 0;
+ struct packet_achievement_list p = { 0 };
+
+ nullpo_retv(sd);
+
+ /* Browse through the session's achievement list and gather their values. */
+ for (i = 0; i < VECTOR_LENGTH(sd->achievement); i++) {
+ int j = 0;
+ struct achievement *a = &VECTOR_INDEX(sd->achievement, i);
+ const struct achievement_data *ad = NULL;
+
+ /* Sanity check for nonull pointers. */
+ if (a == NULL || (ad = achievement->get(a->id)) == NULL)
+ continue;
+
+ p.ach[count].ach_id = a->id;
+
+ for (j = 0; j < VECTOR_LENGTH(ad->objective); j++)
+ p.ach[count].objective[j] = a->objective[j];
+
+ if (a->completed_at) {
+ p.ach[count].completed = 1;
+ p.ach[count].completed_at = (uint32) a->completed_at;
+ p.ach[count].reward = a->rewarded_at ? 1 : 0;
+ p.total_points += ad->points;
+ }
+
+ count++;
+ }
+
+ p.packet_id = achievementListType;
+ p.packet_len = sizeof(struct ach_list_info) * count + 22;
+ p.total_achievements = count;
+ /* Determine Achievement Rank and current exp */
+ curr_exp_tmp = p.total_points;
+ for (i = 0; curr_exp_tmp && i < MAX_ACHIEVEMENT_RANKS && i < VECTOR_LENGTH(achievement->rank_exp); i++) {
+ if (curr_exp_tmp >= VECTOR_INDEX(achievement->rank_exp, i)) {
+ curr_exp_tmp -= VECTOR_INDEX(achievement->rank_exp, i);
+ p.rank++;
+
+ // Validate achievement rank type achievements.
+ achievement->validate_achievement_rank(sd, p.rank);
+ }
+ }
+ /* Determine Achievement Rank Exp */
+ p.current_rank_points = curr_exp_tmp;
+ p.next_rank_points = VECTOR_INDEX(achievement->rank_exp, p.rank);
+ /* Send payload */
+ clif->send(&p, p.packet_len, &sd->bl, SELF);
+#endif // PACKETVER >= 20141016
+}
+
+/**
+ * Sends achievement information for a single achievement.
+ * Called on objective progress updates/completion. (PACKET_ZC_ACH_UPDATE)
+ * @packet [out] 0x0A24 <ID>.W <total_points>.L <rank>.W <current_rank_points>.L <next_rank_points>.L <struct ach_list_info *>.P
+ * @param fd socket descriptor
+ * @param sd pointer to struct map_session_data
+ * @param ad const pointer to struct achievement_data from the achievement db.
+ */
+static void clif_achievement_send_update(int fd, struct map_session_data *sd, const struct achievement_data *ad)
+{
+#if PACKETVER_MAIN_NUM >= 20150225 || PACKETVER_RE_NUM >= 20141126 || defined(PACKETVER_ZERO)
+ struct packet_achievement_update p = { 0 };
+ struct achievement *a = NULL;
+ int i = 0, points = 0, rank = 0, curr_rank_points = 0;
+
+ nullpo_retv(sd);
+ nullpo_retv(ad);
+
+ /* Get Session Achievement Data */
+ if ((a = achievement->ensure(sd, ad)) == NULL)
+ return;
+
+ /* Get total points, current rank and current rank points from the session. */
+ achievement->calculate_totals(sd, &points, NULL, &rank, &curr_rank_points);
+
+ p.packet_id = achievementUpdateType;
+
+ /* Determine Total Achievement Points */
+ p.total_points = points;
+
+ /* Determine Achievement Rank */
+ p.rank = rank;
+
+ /* Determine Achievement Rank Exp */
+ p.current_rank_points = curr_rank_points;
+ p.next_rank_points = VECTOR_INDEX(achievement->rank_exp, p.rank);
+
+ p.ach.ach_id = ad->id;
+ p.ach.completed = (uint8) achievement->check_complete(sd, ad);
+
+ for (i = 0; i < VECTOR_LENGTH(ad->objective); i++)
+ p.ach.objective[i] = a->objective[i];
+
+ p.ach.completed_at = (uint32) a->completed_at;
+
+ p.ach.reward = a->rewarded_at ? 1 : 0;
+
+ clif->send(&p, packet_len(achievementUpdateType), &sd->bl, SELF);
+
+ /* Validate rank-related achievements */
+ achievement->validate_achievement_rank(sd, rank);
+
+#endif // PACKETVER >= 20141016
+}
+
+/**
+ * Parses achievement reward packet from session.
+ * @packet [in] 0x0A25 <ach_id>.L
+ * @param fd socket descriptor.
+ * @param sd ptr to session data.
+ */
+static void clif_parse_achievement_get_reward(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_achievement_get_reward(int fd, struct map_session_data *sd)
+{
+ int ach_id = RFIFOL(fd, 2);
+ const struct achievement_data *ad = NULL;
+ struct achievement *ach = NULL;
+
+ if (ach_id <= 0 || (ad = achievement->get(ach_id)) == NULL)
+ return;
+
+ if ((ach = achievement->ensure(sd, ad)) == NULL)
+ return;
+
+ if (achievement->check_complete(sd, ad) && ach->completed_at && ach->rewarded_at == 0) {
+ achievement->get_rewards(sd, ad);
+ }
+}
+
+/**
+ * Sends achievement reward collection acknowledgement to the client.
+ * @packet [out] 0x0A26 <packet_id>.W <received
+ */
+static void clif_achievement_reward_ack(int fd, struct map_session_data *sd, const struct achievement_data *ad)
+{
+#if PACKETVER_MAIN_NUM >= 20150225 || PACKETVER_RE_NUM >= 20141126 || defined(PACKETVER_ZERO)
+ struct packet_achievement_reward_ack p = { 0 };
+
+ nullpo_retv(sd);
+ nullpo_retv(ad);
+
+ p.packet_id = achievementRewardAckType;
+ p.failed = 0;
+ p.ach_id = ad->id;
+
+ clif->send(&p, packet_len(achievementRewardAckType), &sd->bl, SELF);
+#endif // PACKETVER >= 20141016
+}
+
+/**
+ * Sends achievement reward collection acknowledgement to the client.
+ * @packet[in] 0x0A2E <packet_id>.W <title_id>.L
+ */
+static void clif_parse_change_title(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_change_title(int fd, struct map_session_data *sd)
+{
+ int title_id = RFIFOL(fd, 2);
+
+ if (title_id == sd->status.title_id) { // Same Title
+ return;
+ } else if (title_id < 0) {
+ title_id = 0;
+ }
+
+ clif->change_title_ack(fd, sd, title_id);
+}
+
+/**
+ * [clif_change_title_ack description]
+ * @packet [out] 0x0A2F <packet_id>.W <Result>.B <title_id>.L
+ */
+static void clif_change_title_ack(int fd, struct map_session_data *sd, int title_id)
+{
+#if PACKETVER >= 20141016
+ unsigned char failed = 0;
+
+ if (!achievement->check_title(sd, title_id)) {
+ clif->message(fd, "Title is not yet earned.");
+ failed = 1;
+ }
+
+ sd->status.title_id = title_id;
+
+ WFIFOHEAD(fd, packet_len(0xa2f));
+ WFIFOW(fd, 0) = 0xa2f;
+ WFIFOB(fd, 2) = failed;
+ WFIFOL(fd, 3) = sd->status.title_id;
+ WFIFOSET(fd, packet_len(0xa2f));
+
+ // Update names
+ clif->charnameack(fd, &sd->bl);
+ clif->charnameack(0, &sd->bl);
+#endif
+}
+// End of Achievement System
+
+/*==========================================
+ * RoDEX
+ *------------------------------------------*/
+
+static void clif_parse_rodex_open_write_mail(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_rodex_open_write_mail(int fd, struct map_session_data *sd)
+{
+ const struct PACKET_CZ_REQ_OPEN_WRITE_MAIL *rPacket = RFIFOP(fd, 0);
+ int8 result = (rodex->isenabled() == true && sd->npc_id == 0) ? 1 : 0;
+
+ clif->rodex_open_write_mail(fd, rPacket->receiveName, result);
+}
+
+static void clif_rodex_open_write_mail(int fd, const char *receiver_name, int8 result)
+{
+#if PACKETVER >= 20140416
+ struct PACKET_ZC_ACK_OPEN_WRITE_MAIL *sPacket = NULL;
+
+ nullpo_retv(receiver_name);
+
+ WFIFOHEAD(fd, sizeof(*sPacket));
+ sPacket = WFIFOP(fd, 0);
+ sPacket->PacketType = rodexopenwrite;
+ safestrncpy(sPacket->receiveName, receiver_name, NAME_LENGTH);
+ sPacket->result = result;
+ WFIFOSET(fd, sizeof(*sPacket));
+#endif
+}
+
+static void clif_parse_rodex_add_item(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_rodex_add_item(int fd, struct map_session_data *sd)
+{
+ const struct PACKET_CZ_ADD_ITEM_TO_MAIL *rPacket = RFIFOP(fd, 0);
+ int16 idx = rPacket->index - 2;
+
+ rodex->add_item(sd, idx, (int16)rPacket->count);
+}
+
+static void clif_rodex_add_item_result(struct map_session_data *sd, int16 idx, int16 amount, enum rodex_add_item result)
+{
+#if PACKETVER >= 20141119
+ struct PACKET_ZC_ADD_ITEM_TO_MAIL *packet;
+ int fd, j;
+
+ nullpo_retv(sd);
+ if (idx < 0 || idx >= sd->status.inventorySize)
+ return;
+
+ fd = sd->fd;
+
+ WFIFOHEAD(fd, sizeof(*packet));
+ packet = WFIFOP(fd, 0);
+ memset(packet, 0x0, sizeof(*packet));
+ packet->PacketType = rodexadditem;
+ packet->result = result;
+
+ if (result != RODEX_ADD_ITEM_SUCCESS) { //No need to continue building the packet if it failed
+ WFIFOSET(fd, sizeof(*packet));
+ return;
+ }
+
+ packet->index = idx + 2;
+ packet->count = amount;
+ packet->itemId = sd->status.inventory[idx].nameid;
+ packet->type = itemtype(sd->inventory_data[idx]->type);
+ packet->IsIdentified = sd->status.inventory[idx].identify ? 1 : 0;
+ packet->IsDamaged = (sd->status.inventory[idx].attribute & ATTR_BROKEN) != 0 ? 1 : 0;
+ packet->refiningLevel = sd->status.inventory[idx].refine;
+ for (j = 0; j < ARRAYLENGTH(packet->slot.card); ++j)
+ packet->slot.card[j] = sd->status.inventory[idx].card[j];
+ for (j = 0; j < MAX_ITEM_OPTIONS; ++j) {
+ packet->optionData[j].index = sd->status.inventory[idx].option[j].index;
+ packet->optionData[j].param = sd->status.inventory[idx].option[j].param;
+ packet->optionData[j].value = sd->status.inventory[idx].option[j].value;
+ }
+ packet->weight = sd->rodex.tmp.weight / 10;
+ packet->favorite = sd->status.inventory[idx].favorite;
+ packet->location = pc->equippoint(sd, idx);
+ WFIFOSET(fd, sizeof(*packet));
+#endif
+}
+
+static void clif_parse_rodex_remove_item(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_rodex_remove_item(int fd, struct map_session_data *sd)
+{
+ const struct PACKET_CZ_REQ_REMOVE_ITEM_MAIL *rPacket = RFIFOP(fd, 0);
+ int16 idx = rPacket->index - 2;
+
+ rodex->remove_item(sd, idx, (int16)rPacket->cnt);
+}
+
+static void clif_rodex_remove_item_result(struct map_session_data *sd, int16 idx, int16 amount)
+{
+#if PACKETVER >= 20140521
+ struct PACKET_ZC_ACK_REMOVE_ITEM_MAIL *packet;
+ int fd;
+
+ nullpo_retv(sd);
+ Assert_retv(idx >= 0 && idx < sd->status.inventorySize);
+
+ fd = sd->fd;
+
+ WFIFOHEAD(fd, sizeof(*packet));
+ packet = WFIFOP(fd, 0);
+ packet->PacketType = rodexremoveitem;
+ packet->result = (amount < 0) ? 0 : 1;
+ packet->cnt = (amount < 0) ? 0 : sd->status.inventory[idx].amount - amount;
+ packet->index = idx + 2;
+ packet->weight = sd->rodex.tmp.weight / 10;
+ WFIFOSET(fd, sizeof(*packet));
+#endif
+}
+
+static void clif_parse_rodex_checkname(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_rodex_checkname(int fd, struct map_session_data *sd)
+{
+ const struct PACKET_CZ_CHECKNAME *rPacket = RFIFOP(fd, 0);
+ int char_id = 0, base_level = 0;
+ short class = 0;
+ char name[NAME_LENGTH];
+
+ safestrncpy(name, rPacket->Name, NAME_LENGTH);
+
+ rodex->check_player(sd, name, &base_level, &char_id, &class);
+}
+
+static void clif_rodex_checkname_result(struct map_session_data *sd, int char_id, short class_, int base_level, const char *name)
+{
+#if PACKETVER >= 20140521
+ struct PACKET_ZC_CHECKNAME *sPacket;
+ int fd;
+
+ nullpo_retv(sd);
+ nullpo_retv(name);
+
+ fd = sd->fd;
+ WFIFOHEAD(fd, sizeof(*sPacket));
+ sPacket = WFIFOP(fd, 0);
+ sPacket->PacketType = rodexcheckplayer;
+ if (char_id == 0) {
+ sPacket->CharId = 0;
+ WFIFOSET(fd, sizeof(*sPacket));
+ return;
+ }
+ sPacket->CharId = char_id;
+ sPacket->Class = class_;
+ sPacket->BaseLevel = base_level;
+#if PACKETVER >= 20160316
+ strncpy(sPacket->Name, name, NAME_LENGTH);
+#endif
+ WFIFOSET(fd, sizeof(*sPacket));
+#endif
+}
+
+static void clif_parse_rodex_send_mail(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_rodex_send_mail(int fd, struct map_session_data *sd)
+{
+ const struct PACKET_CZ_SEND_MAIL *rPacket = RFIFOP(fd, 0);
+ int8 result;
+
+ if (rPacket->TextcontentsLength + rPacket->Titlelength > rPacket->PacketLength - sizeof(*rPacket)) {
+ result = RODEX_SEND_MAIL_FATAL_ERROR;
+ } else if (rPacket->TextcontentsLength > RODEX_BODY_LENGTH || rPacket->Titlelength > RODEX_TITLE_LENGTH) {
+ result = RODEX_SEND_MAIL_FATAL_ERROR;
+ } else {
+ char rname[NAME_LENGTH] = "";
+ char title[RODEX_TITLE_LENGTH] = "";
+ char body[RODEX_BODY_LENGTH] = "";
+
+ safestrncpy(rname, rPacket->receiveName, NAME_LENGTH);
+ safestrncpy(title, rPacket->string, RODEX_TITLE_LENGTH);
+ safestrncpy(body, &rPacket->string[rPacket->Titlelength], RODEX_BODY_LENGTH);
+
+ result = rodex->send_mail(sd, rname, body, title, rPacket->zeny);
+ }
+
+ if (result != RODEX_SEND_MAIL_SUCCESS)
+ clif->rodex_send_mail_result(fd, sd, result);
+ rodex->clean(sd, 1);
+}
+
+static void clif_rodex_send_mail_result(int fd, struct map_session_data *sd, int8 result)
+{
+#if PACKETVER >= 20131230
+ struct PACKET_ZC_WRITE_MAIL_RESULT *sPacket;
+
+ WFIFOHEAD(fd, sizeof(*sPacket));
+ sPacket = WFIFOP(fd, 0);
+ sPacket->PacketType = rodexwriteresult;
+ sPacket->result = result;
+ WFIFOSET(fd, sizeof(*sPacket));
+#endif
+}
+
+static void clif_rodex_send_maillist(int fd, struct map_session_data *sd, int8 open_type, int64 page_start)
+{
+#if PACKETVER >= 20131218
+ struct PACKET_ZC_MAIL_LIST *packet;
+ struct maillistinfo *inner;
+ int16 size = sizeof(*packet);
+ int8 count = 0;
+
+ nullpo_retv(sd);
+
+ WFIFOHEAD(fd, sizeof(*packet) + (sizeof(*inner) + RODEX_TITLE_LENGTH) * RODEX_MAIL_PER_PAGE);
+ packet = WFIFOP(fd, 0);
+ packet->PacketType = ((page_start == (VECTOR_LENGTH(sd->rodex.messages) - 1)) ? rodexmailList : rodexnextpage);
+#if PACKETVER < 20170419
+ packet->opentype = open_type;
+#endif
+ inner = WFIFOP(fd, size);
+
+ while (page_start >= 0 && count < RODEX_MAIL_PER_PAGE) {
+ struct rodex_message *msg = &VECTOR_INDEX(sd->rodex.messages, page_start);
+ --page_start;
+
+ if (msg->is_deleted)
+ continue;
+
+ inner->MailID = msg->id;
+ inner->Isread = (msg->is_read == true || msg->sender_read == true) ? 1 : 0;
+ inner->type = msg->type;
+#if PACKETVER >= 20170419
+ inner->openType = msg->opentype;
+#else
+ inner->regDateTime = (int)time(NULL) - msg->send_date;
+#endif
+ inner->expireDateTime = msg->expire_date - (int)time(NULL);
+ if (open_type == RODEX_OPENTYPE_RETURN) {
+ inner->expireDateTime += RODEX_EXPIRE;
+ }
+ inner->Titlelength = (int16)strlen(msg->title) + 1;
+ if (open_type != RODEX_OPENTYPE_RETURN) {
+ strncpy(inner->SenderName, msg->sender_name, sizeof(inner->SenderName));
+ } else {
+ strncpy(inner->SenderName, msg->receiver_name, sizeof(inner->SenderName));
+ }
+ strncpy(inner->title, msg->title, inner->Titlelength);
+ size += sizeof(*inner) + inner->Titlelength;
+ inner = WFIFOP(fd, size);
+ ++count;
+ }
+
+ packet->PacketLength = size;
+#if PACKETVER < 20170419
+ packet->cnt = count;
+#endif
+ packet->IsEnd = page_start > 0 ? 0 : 1;
+ WFIFOSET(fd, size);
+#endif
+}
+
+static void clif_rodex_send_mails_all(int fd, struct map_session_data *sd, int64 mail_id)
+{
+#if PACKETVER >= 20170419
+ struct PACKET_ZC_MAIL_LIST *packet;
+ struct maillistinfo *inner;
+ int16 size = sizeof(*packet);
+ int packetMailCount = 0;
+ int mailListCount = 0;
+ int mailsSize, i;
+ int j = -1;
+
+ nullpo_retv(sd);
+
+ mailsSize = VECTOR_LENGTH(sd->rodex.messages);
+
+ if (mail_id > 0)
+ ARR_FIND(0, VECTOR_LENGTH(sd->rodex.messages), j, (VECTOR_INDEX(sd->rodex.messages, j)).id == mail_id);
+
+ WFIFOHEAD(fd, sizeof(*packet) + (sizeof(*inner) + RODEX_TITLE_LENGTH) * RODEX_MAIL_PER_PAGE);
+ packet = WFIFOP(fd, 0);
+ packet->PacketType = rodexmailList;
+ inner = WFIFOP(fd, size);
+
+ i = mailsSize - 1;
+ mailsSize -= (j + 1);
+ while (i > j) {
+ struct rodex_message *msg = &VECTOR_INDEX(sd->rodex.messages, i);
+ --i;
+
+ if (msg->is_deleted)
+ continue;
+
+ inner->MailID = msg->id;
+ inner->Isread = (msg->is_read == true || msg->sender_read == true) ? 1 : 0;
+ inner->type = msg->type;
+ inner->openType = msg->opentype;
+ inner->expireDateTime = msg->expire_date - (int)time(NULL);
+ if (msg->opentype == RODEX_OPENTYPE_RETURN) {
+ inner->expireDateTime += RODEX_EXPIRE;
+ }
+ inner->Titlelength = (int16)strlen(msg->title) + 1;
+ if (msg->opentype != RODEX_OPENTYPE_RETURN) {
+ strncpy(inner->SenderName, msg->sender_name, sizeof(inner->SenderName));
+ } else {
+ strncpy(inner->SenderName, msg->receiver_name, sizeof(inner->SenderName));
+ }
+ strncpy(inner->title, msg->title, inner->Titlelength);
+ size += sizeof(*inner) + inner->Titlelength;
+ inner = WFIFOP(fd, size);
+ packetMailCount ++;
+ mailListCount ++;
+ if (packetMailCount == RODEX_MAIL_PER_PAGE) {
+ packet->PacketLength = size;
+ packet->IsEnd = mailListCount > mailsSize ? 1 : 0;
+ WFIFOSET(fd, size);
+ WFIFOHEAD(fd, sizeof(*packet) + (sizeof(*inner) + RODEX_TITLE_LENGTH) * RODEX_MAIL_PER_PAGE);
+ packet = WFIFOP(fd, 0);
+ packet->PacketType = rodexmailList;
+ size = sizeof(*packet);
+ inner = WFIFOP(fd, size);
+ packetMailCount = 0;
+ }
+ }
+
+ if (packetMailCount > 0 || mailListCount == 0) {
+ packet->PacketLength = size;
+ packet->IsEnd = 1;
+ WFIFOSET(fd, size);
+ }
+#endif
+}
+
+static void clif_rodex_send_refresh(int fd, struct map_session_data *sd, int8 open_type, int count)
+{
+#if PACKETVER >= 20131218
+ struct PACKET_ZC_MAIL_LIST *packet;
+ struct maillistinfo *inner;
+ int16 size = sizeof(*packet);
+ int i, j;
+
+ nullpo_retv(sd);
+
+ WFIFOHEAD(fd, sizeof(*packet) + (sizeof(*inner) + RODEX_TITLE_LENGTH) * RODEX_MAIL_PER_PAGE);
+ packet = WFIFOP(fd, 0);
+ packet->PacketType = rodexmailList;
+#if PACKETVER < 20170419
+ packet->opentype = open_type;
+#endif
+ inner = WFIFOP(fd, size);
+
+ i = VECTOR_LENGTH(sd->rodex.messages) - 1;
+ j = count;
+ while (i >= 0 && j > 0) {
+ struct rodex_message *msg = &VECTOR_INDEX(sd->rodex.messages, i);
+ --i;
+
+ if (msg->is_deleted)
+ continue;
+
+ inner->MailID = msg->id;
+ inner->Isread = (msg->is_read == true || msg->sender_read == true) ? 1 : 0;
+ inner->type = msg->type;
+#if PACKETVER >= 20170419
+ inner->openType = msg->opentype;
+#else
+ inner->regDateTime = (int)time(NULL) - msg->send_date;
+#endif
+ inner->expireDateTime = msg->expire_date - (int)time(NULL);
+ if (open_type == RODEX_OPENTYPE_RETURN) {
+ inner->expireDateTime += RODEX_EXPIRE;
+ }
+ inner->Titlelength = (int16)strlen(msg->title) + 1;
+ if (open_type != RODEX_OPENTYPE_RETURN) {
+ strncpy(inner->SenderName, msg->sender_name, sizeof(inner->SenderName));
+ } else {
+ strncpy(inner->SenderName, msg->receiver_name, sizeof(inner->SenderName));
+ }
+ strncpy(inner->title, msg->title, inner->Titlelength);
+ size += sizeof(*inner) + inner->Titlelength;
+ inner = WFIFOP(fd, size);
+ --j;
+ }
+
+ packet->PacketLength = size;
+#if PACKETVER < 20170419
+ packet->cnt = count;
+#endif
+ packet->IsEnd = 1;
+ WFIFOSET(fd, size);
+#endif
+}
+
+static void clif_parse_rodex_next_maillist(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_rodex_next_maillist(int fd, struct map_session_data *sd)
+{
+ const struct PACKET_CZ_REQ_NEXT_MAIL_LIST *packet = RFIFOP(fd, 0);
+
+ rodex->next_page(sd, packet->opentype, packet->Lower_MailID);
+}
+
+static void clif_parse_rodex_read_mail(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_rodex_read_mail(int fd, struct map_session_data *sd)
+{
+ const struct PACKET_CZ_REQ_READ_MAIL *rPacket = RFIFOP(fd, 0);
+
+ rodex->read_mail(sd, rPacket->MailID);
+}
+
+static void clif_rodex_read_mail(struct map_session_data *sd, int8 opentype, struct rodex_message *msg)
+{
+#if PACKETVER >= 20140115
+ struct PACKET_ZC_READ_MAIL *sPacket;
+ struct mail_item *item;
+ int fd, i, body_len, size;
+
+ nullpo_retv(sd);
+ nullpo_retv(msg);
+
+ fd = sd->fd;
+ body_len = (int)strlen(msg->body) + 1;
+ size = sizeof(*sPacket);
+
+ WFIFOHEAD(fd, sizeof(*sPacket) + body_len + (sizeof(*item) * RODEX_MAX_ITEM));
+ sPacket = WFIFOP(fd, 0);
+ sPacket->PacketType = rodexread;
+ sPacket->opentype = opentype;
+ sPacket->MailID = msg->id;
+ sPacket->TextcontentsLength = body_len;
+ sPacket->zeny = msg->zeny;
+ sPacket->ItemCnt = msg->items_count;
+ strncpy(WFIFOP(fd, size), msg->body, body_len);
+ size += body_len;
+ for (i = 0; i < RODEX_MAX_ITEM; ++i) {
+ struct item *it = &msg->items[i].item;
+ struct item_data *data;
+ int j, k;
+
+ if (it->nameid == 0)
+ continue;
+ data = itemdb->search(it->nameid);
+ if (data == NULL)
+ continue;
+
+ item = WFIFOP(fd, size);
+ memset(item, 0x0, sizeof(*item));
+ item->ITID = it->nameid;
+ item->count = it->amount;
+ item->type = itemtype(itemdb->search(it->nameid)->type);
+ item->IsIdentified = it->identify ? 1 : 0;
+ item->IsDamaged = (it->attribute & ATTR_BROKEN) != 0 ? 1 : 0;
+ item->refiningLevel = it->refine;
+ item->location = pc->item_equippoint(sd, data);
+ item->viewSprite = data->view_sprite;
+ item->bindOnEquip = it->bound ? 2 : data->flag.bindonequip ? 1 : 0;
+ for (k = 0; k < MAX_SLOTS; ++k) {
+ item->slot.card[k] = it->card[k];
+ }
+ for (j = 0; j < MAX_ITEM_OPTIONS; ++j) {
+ item->optionData[j].index = it->option[j].index;
+ item->optionData[j].value = it->option[j].value;
+ }
+
+ size += sizeof(*item);
+ }
+ sPacket->PacketLength = size;
+ WFIFOSET(fd, size);
+#endif
+}
+
+static void clif_parse_rodex_delete_mail(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_rodex_delete_mail(int fd, struct map_session_data *sd)
+{
+ const struct PACKET_CZ_REQ_DELETE_MAIL *rPacket = RFIFOP(fd, 0);
+
+ rodex->delete_mail(sd, rPacket->MailID);
+}
+
+static void clif_rodex_delete_mail(struct map_session_data *sd, int8 opentype, int64 mail_id)
+{
+#if PACKETVER >= 20131218
+ struct PACKET_ZC_ACK_DELETE_MAIL *sPacket;
+ int fd;
+
+ nullpo_retv(sd);
+
+ fd = sd->fd;
+
+ WFIFOHEAD(fd, sizeof(*sPacket));
+ sPacket = WFIFOP(fd, 0);
+ sPacket->PacketType = rodexdelete;
+ sPacket->opentype = opentype;
+ sPacket->MailID = mail_id;
+ WFIFOSET(fd, sizeof(*sPacket));
+#endif
+}
+
+static void clif_parse_rodex_request_zeny(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_rodex_request_zeny(int fd, struct map_session_data *sd)
+{
+ const struct PACKET_CZ_REQ_ZENY_FROM_MAIL *rPacket = RFIFOP(fd, 0);
+
+ rodex->get_zeny(sd, rPacket->opentype, rPacket->MailID);
+}
+
+static void clif_rodex_request_zeny(struct map_session_data *sd, int8 opentype, int64 mail_id, enum rodex_get_zeny result)
+{
+#if PACKETVER >= 20140409
+ struct PACKET_ZC_ACK_ZENY_FROM_MAIL *sPacket;
+ int fd;
+
+ nullpo_retv(sd);
+
+ fd = sd->fd;
+
+ WFIFOHEAD(fd, sizeof(*sPacket));
+ sPacket = WFIFOP(fd, 0);
+ sPacket->PacketType = rodexgetzeny;
+ sPacket->MailID = mail_id;
+ sPacket->opentype = opentype;
+ sPacket->result = result;
+ WFIFOSET(fd, sizeof(*sPacket));
+#endif
+}
+
+static void clif_parse_rodex_request_items(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_rodex_request_items(int fd, struct map_session_data *sd)
+{
+ const struct PACKET_CZ_REQ_ITEM_FROM_MAIL *rPacket = RFIFOP(fd, 0);
+
+ rodex->get_items(sd, rPacket->opentype, rPacket->MailID);
+}
+
+static void clif_rodex_request_items(struct map_session_data *sd, int8 opentype, int64 mail_id, enum rodex_get_items result)
+{
+#if PACKETVER >= 20140409
+ struct PACKET_ZC_ACK_ITEM_FROM_MAIL *sPacket;
+ int fd;
+
+ nullpo_retv(sd);
+
+ fd = sd->fd;
+
+ WFIFOHEAD(fd, sizeof(*sPacket));
+ sPacket = WFIFOP(fd, 0);
+ sPacket->PacketType = rodexgetitem;
+ sPacket->MailID = mail_id;
+ sPacket->opentype = opentype;
+ sPacket->result = result;
+ WFIFOSET(fd, sizeof(*sPacket));
+#endif
+}
+
+static void clif_rodex_icon(int fd, bool show)
+{
+// packet add date is 20140716, but from players reports it wrong. Using closer known correct version.
+#if PACKETVER >= 20141112
+ WFIFOHEAD(fd, 3);
+ WFIFOW(fd, 0) = rodexicon;
+ WFIFOB(fd, 2) = (show == true ? 1 : 0);
+ WFIFOSET(fd, 3);
+#endif
+}
+
+static void clif_parse_rodex_refresh_maillist(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_rodex_refresh_maillist(int fd, struct map_session_data *sd)
+{
+ const struct PACKET_CZ_REQ_REFRESH_MAIL_LIST *packet = RFIFOP(fd, 0);
+#if PACKETVER >= 20170419
+ rodex->refresh(sd, RODEX_OPENTYPE_UNSET, packet->Upper_MailID);
+#else
+ rodex->refresh(sd, packet->opentype, packet->Upper_MailID);
+#endif
+}
+
+static void clif_parse_rodex_open_mailbox(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_rodex_open_mailbox(int fd, struct map_session_data *sd)
+{
+ const struct PACKET_CZ_REQ_OPEN_MAIL *packet = RFIFOP(fd, 0);
+#if PACKETVER >= 20170419
+ rodex->open(sd, RODEX_OPENTYPE_UNSET, packet->char_Upper_MailID);
+#else
+ rodex->open(sd, packet->opentype, packet->Upper_MailID);
+#endif
+ rodex->clean(sd, 1);
+}
+
+static void clif_parse_rodex_close_mailbox(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_rodex_close_mailbox(int fd, struct map_session_data *sd)
+{
+ rodex->clean(sd, 0);
+ intif->rodex_checkhasnew(sd);
+}
+
+static void clif_parse_rodex_cancel_write_mail(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_rodex_cancel_write_mail(int fd, struct map_session_data *sd)
+{
+ rodex->clean(sd, 1);
+}
+
+static void clif_skill_scale(struct block_list *bl, int src_id, int x, int y, uint16 skill_id, uint16 skill_lv, int casttime)
+{
+#if PACKETVER >= 20151223
+ struct PACKET_ZC_SKILL_SCALE p;
+
+ p.PacketType = skillscale;
+ p.AID = src_id;
+ p.skill_id = skill_id;
+ p.skill_lv = skill_lv;
+ p.x = x;
+ p.y = y;
+ p.casttime = casttime;
+
+ if (clif->isdisguised(bl)) {
+ clif->send(&p, sizeof(p), bl, AREA_WOS);
+ p.AID = -src_id;
+ clif->send(&p, sizeof(p), bl, SELF);
+ } else {
+ clif->send(&p, sizeof(p), bl, AREA);
+ }
+#else
+ ShowWarning("clif_skill_scale: showing skill scale available only for clients >= 20151223.");
+ return;
+#endif
+}
+
+/// Send hat effects to the client (ZC_HAT_EFFECT).
+/// 0A3B <Length>.W <AID>.L <Status>.B { <HatEffectId>.W }
+static void clif_hat_effect(struct block_list *bl, struct block_list *tbl, enum send_target target)
+{
+#if PACKETVER >= 20150422
+ unsigned char *buf;
+ int len, i;
+ struct map_session_data *sd;
+
+ nullpo_retv(bl);
+
+ sd = BL_CAST(BL_PC, bl);
+
+ nullpo_retv(sd);
+
+ len = 9 + VECTOR_LENGTH(sd->hatEffectId) * 2;
+
+ buf = (unsigned char*)aMalloc(len);
+
+ WBUFW(buf, 0) = 0xa3b;
+ WBUFW(buf, 2) = len;
+ WBUFL(buf, 4) = bl->id;
+ WBUFB(buf, 8) = 1;
+
+ for( i = 0; i < VECTOR_LENGTH(sd->hatEffectId); i++ ){
+ WBUFW(buf, 9 + i * 2) = VECTOR_INDEX(sd->hatEffectId, i);
+ }
+
+ if (tbl != NULL) {
+ clif->send(buf, len, tbl, target);
+ } else {
+ clif->send(buf, len, bl, target);
+ }
+
+ aFree(buf);
+#endif
+}
+
+static void clif_hat_effect_single(struct block_list *bl, uint16 effectId, bool enable){
+#if PACKETVER >= 20150422
+ unsigned char buf[13];
+
+ nullpo_retv(bl);
+
+ WBUFW(buf,0) = 0xa3b;
+ WBUFW(buf,2) = 13;
+ WBUFL(buf,4) = bl->id;
+ WBUFB(buf,8) = enable;
+ WBUFL(buf,9) = effectId;
+
+ clif_send(buf, 13, bl, AREA);
+#endif
+}
+
+static bool clif_parse_attendance_db(void)
+{
+ struct config_t attendance_conf;
+ struct config_setting_t *attendance = NULL, *it = NULL;
+ const char *config_filename = "db/attendance_db.conf"; // FIXME hardcoded name
+ int i = 0;
+
+ if (!libconfig->load_file(&attendance_conf, config_filename))
+ return false;
+ attendance = libconfig->lookup(&attendance_conf, "attendance_db");
+
+ VECTOR_CLEAR(clif->attendance_data);
+
+ while ((it = libconfig->setting_get_elem(attendance, i++))) {
+ clif->attendancedb_libconfig_sub(it, i, config_filename);
+ }
+
+ libconfig->destroy(&attendance_conf);
+ ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' entries in '"CL_WHITE"%s"CL_RESET"'.\n", i, config_filename);
+ return true;
+}
+
+static bool clif_attendancedb_libconfig_sub(struct config_setting_t *it, int n, const char *source)
+{
+ struct attendance_entry entry = { 0 };
+ int i32 = 0;
+
+ nullpo_ret(it);
+ nullpo_ret(source);
+
+ if (!itemdb->lookup_const(it, "ItemID", &i32) || i32 < 0) {
+ ShowWarning("clif_attendancedb_libconfig_sub: unknown item %d, entry #%d, skipping.\n", i32, n);
+ return false;
+ }
+ entry.nameid = i32;
+
+ if (!libconfig->setting_lookup_int(it, "Amount", &i32) || i32 < 1) {
+ ShowWarning("clif_attendancedb_libconfig_sub: invalid amount %d, entry #%d, skipping.\n", i32, n);
+ return false;
+ }
+ entry.qty = i32;
+
+ VECTOR_ENSURE(clif->attendance_data, 1, 1);
+ VECTOR_PUSH(clif->attendance_data, entry);
+ return true;
+}
+
+static bool clif_attendance_timediff(struct map_session_data *sd)
+{
+ int64 timediff;
+
+ nullpo_retr(false, sd);
+
+ timediff = (time(NULL) / (60 * 60 * 24)) - (sd->status.attendance_timer / (60 * 60 * 24));
+
+ if (timediff <= 0)
+ return false;
+ return true;
+}
+static time_t clif_attendance_getendtime(void)
+{
+ time_t timestamp;
+ struct tm tmtime = { 0 };
+ int year = 0, month = 0, day = 0;
+ char timestring[9];
+
+ sprintf(timestring, "%8d", battle_config.feature_attendance_endtime);
+ sscanf(timestring, "%4d%2d%2d", &year, &month, &day);
+
+ tmtime.tm_year = year - 1900;
+ tmtime.tm_mon = month - 1;
+ tmtime.tm_mday = day;
+
+ timestamp = mktime(&tmtime);
+
+ return timestamp;
+}
+
+static void clif_parse_open_ui_request(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_open_ui_request(int fd, struct map_session_data *sd)
+{
+ const struct PACKET_CZ_OPEN_UI *p = RP2PTR(fd);
+
+
+ clif->open_ui(sd, p->UIType);
+}
+
+static void clif_open_ui(struct map_session_data *sd, enum cz_ui_types uiType)
+{
+#if PACKETVER >= 20150128
+ struct PACKET_ZC_OPEN_UI p;
+#if PACKETVER_RE_NUM >= 20180307 || PACKETVER_MAIN_NUM >= 20180404 || PACKETVER_ZERO_NUM >= 20180411
+ int claimed = 0;
+#endif
+
+ nullpo_retv(sd);
+
+ p.PacketType = openUiType;
+ switch (uiType) {
+ case CZ_STYLIST_UI:
+ p.UIType = ZC_STYLIST_UI;
+#if PACKETVER >= 20171122
+ p.data = 0;
+#endif
+ break;
+ case CZ_ATTENDANCE_UI:
+ {
+ if (clif->attendance_getendtime() < time(NULL)) {
+#if PACKETVER >= 20180207
+ clif->msgtable_color(sd, MSG_ATTENDANCE_UNAVAILABLE, COLOR_RED);
+#endif
+ return;
+ }
+ if (battle_config.feature_enable_attendance_system != 1)
+ return;
+#if PACKETVER_RE_NUM >= 20180307 || PACKETVER_MAIN_NUM >= 20180404 || PACKETVER_ZERO_NUM >= 20180411
+ if (clif->attendance_timediff(sd) != true)
+ ++claimed;
+ else if (sd->status.attendance_count >= VECTOR_LENGTH(clif->attendance_data))
+ sd->status.attendance_count = 0;
+ p.UIType = ZC_ATTENDANCE_UI;
+ p.data = sd->status.attendance_count * 10 + claimed;
+#else
+ ShowWarning("Attendance System available only for PACKETVER_RE_NUM >= 20180307 || PACKETVER_MAIN_NUM >= 20180404 || PACKETVER_ZERO_NUM >= 20180411.\n");
+ return;
+#endif
+ break;
+ }
+ default:
+ ShowWarning("clif_open_ui: Requested UI (%u) is not implemented yet.\n", uiType);
+ return;
+ }
+
+ clif->send(&p, sizeof(p), &sd->bl, SELF);
+#endif
+}
+
+static void clif_parse_attendance_reward_request(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_attendance_reward_request(int fd, struct map_session_data *sd)
+{
+#if PACKETVER_RE_NUM >= 20180307 || PACKETVER_MAIN_NUM >= 20180404 || PACKETVER_ZERO_NUM >= 20180411
+
+ struct rodex_message msg = { 0 };
+ struct attendance_entry *entry;
+ int attendance_count;
+ char title[RODEX_TITLE_LENGTH], body[MAIL_BODY_LENGTH];
+
+ if (clif->attendance_getendtime() < time(NULL)) {
+ clif->msgtable_color(sd, MSG_ATTENDANCE_UNAVAILABLE, COLOR_RED);
+ return;
+ }
+
+ if (battle_config.feature_enable_attendance_system != 1)
+ return;
+
+ if (clif->attendance_timediff(sd) != true)
+ return;
+
+ if (sd->status.attendance_count >= VECTOR_LENGTH(clif->attendance_data))
+ sd->status.attendance_count = 0;
+
+ attendance_count = sd->status.attendance_count;
+ ++sd->status.attendance_count;
+ sd->status.attendance_timer = time(NULL);
+
+ msg.receiver_id = sd->status.char_id;
+ sprintf(title, msg_txt(545), attendance_count + 1);
+ sprintf(body, msg_txt(545), attendance_count + 1);
+
+ entry = &VECTOR_INDEX(clif->attendance_data, attendance_count);
+ msg.items[0].item.nameid = entry->nameid;
+ msg.items[0].item.amount = entry->qty;
+ msg.items[0].item.identify = 1;
+ msg.type = MAIL_TYPE_NPC | MAIL_TYPE_ITEM;
+
+ safestrncpy(msg.sender_name, msg_txt(544), NAME_LENGTH);
+ safestrncpy(msg.title, title, RODEX_TITLE_LENGTH);
+ safestrncpy(msg.body, body, MAIL_BODY_LENGTH);
+ msg.send_date = (int)time(NULL);
+ msg.expire_date = (int)time(NULL) + RODEX_EXPIRE;
+
+ intif->rodex_sendmail(&msg);
+ clif->ui_action(sd, 0, sd->status.attendance_count);
+#else
+ ShowWarning("Attendance System available only for PACKETVER_RE_NUM >= 20180307 || PACKETVER_MAIN_NUM >= 20180404 || PACKETVER_ZERO_NUM >= 20180411.\n");
+#endif
+}
+
+static void clif_parse_cz_blocking_play_cancel(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_cz_blocking_play_cancel(int fd, struct map_session_data *sd)
+{
+}
+
+static void clif_ui_action(struct map_session_data *sd, int32 UIType, int32 data)
+{
+
+ struct PACKET_ZC_UI_ACTION p;
+
+ nullpo_retv(sd);
+
+ p.PacketType = 0xAF0;
+ p.UIType = UIType;
+ p.data = data;
+
+ clif->send(&p, sizeof(p), &sd->bl, SELF);
+}
+
+static void clif_parse_private_airship_request(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_private_airship_request(int fd, struct map_session_data *sd)
+{
+#if PACKETVER_RE_NUM >= 20180321 || PACKETVER_MAIN_NUM >= 20180620 || defined(PACKETVER_ZERO)
+ char evname[EVENT_NAME_LENGTH];
+ struct event_data *ev = NULL;
+ const struct PACKET_CZ_PRIVATE_AIRSHIP_REQUEST *p = RP2PTR(fd);
+
+ safestrncpy(evname, "private_airship::OnAirShipRequest", EVENT_NAME_LENGTH);
+ if ((ev = strdb_get(npc->ev_db, evname))) {
+ pc->setregstr(sd, script->add_variable("@mapname$"), p->mapName);
+ pc->setreg(sd, script->add_variable("@itemid"), p->ItemID);
+ script->run_npc(ev->nd->u.scr.script, ev->pos, sd->bl.id, ev->nd->bl.id);
+ } else {
+ ShowError("clif_parse_private_airship_request: event '%s' not found, operation failed.\n", evname);
+ }
+#else
+ ShowWarning("clif_parse_private_airship_request: private airship is not supported in this client version, possible packet manipulation.\n");
+#endif
+}
+
+static void clif_private_airship_response(struct map_session_data *sd, uint32 flag)
+{
+#if PACKETVER_RE_NUM >= 20180321 || PACKETVER_MAIN_NUM >= 20180620 || defined(PACKETVER_ZERO)
+ struct PACKET_ZC_PRIVATE_AIRSHIP_RESPONSE p;
+
+ nullpo_retv(sd);
+
+ if (flag > P_AIRSHIP_ITEM_INVALID) {
+ ShowError("clif_private_airship_response: invalid flag given '%u', defaulting to 0.\n", flag);
+ flag = 0;
+ }
+
+ p.PacketType = 0xA4A;
+ p.flag = flag;
+
+ clif->send(&p, sizeof(p), &sd->bl, SELF);
+#else
+ ShowWarning("clif_private_airship_response: private airship works only for clients PACKETVER_RE_NUM >= 20180321 || PACKETVER_MAIN_NUM >= 20180620.\n");
+#endif
+}
+
+static void clif_stylist_vector_init(void)
+{
+ int i;
+ for (i = 0; i < MAX_STYLIST_TYPE; i++) {
+ VECTOR_INIT(stylist_data[i]);
+ }
+}
+
+static void clif_stylist_vector_clear(void)
+{
+ int i;
+ for (i = 0; i < MAX_STYLIST_TYPE; i++) {
+ VECTOR_CLEAR(stylist_data[i]);
+ }
+}
+
+static bool clif_stylist_read_db_libconfig(void)
+{
+ struct config_t stylist_conf;
+ struct config_setting_t *stylist = NULL, *it = NULL;
+ const char *config_filename = "db/stylist_db.conf"; // FIXME hardcoded name
+ int i = 0;
+
+ if (!libconfig->load_file(&stylist_conf, config_filename))
+ return false;
+
+ if ((stylist = libconfig->setting_get_member(stylist_conf.root, "stylist_db")) == NULL) {
+ ShowError("can't read %s\n", config_filename);
+ return false;
+ }
+
+ clif->stylist_vector_clear();
+
+ while ((it = libconfig->setting_get_elem(stylist, i++))) {
+ clif->stylist_read_db_libconfig_sub(it, i - 1, config_filename);
+ }
+
+ libconfig->destroy(&stylist_conf);
+ ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' entries in '"CL_WHITE"%s"CL_RESET"'.\n", i, config_filename);
+ return true;
+}
+
+static bool clif_stylist_read_db_libconfig_sub(struct config_setting_t *it, int idx, const char *source)
+{
+ struct stylist_data_entry entry = { 0 };
+ int i32 = 0, type = 0;
+ int64 i64 = 0;
+
+ nullpo_ret(it);
+ nullpo_ret(source);
+
+ if (!itemdb->lookup_const(it, "Type", &type) || type >= MAX_STYLIST_TYPE || type < 0) {
+ ShowWarning("clif_stylist_read_db_libconfig_sub: Invalid or missing Type (%d) in \"%s\", entry #%d, skipping.\n", type, source, idx);
+ return false;
+ }
+ if (!itemdb->lookup_const(it, "Id", &i32) || i32 < 0) {
+ ShowWarning("clif_stylist_read_db_libconfig_sub: Invalid or missing Id (%d) in \"%s\", entry #%d, skipping.\n", i32, source, idx);
+ return false;
+ }
+ entry.id = i32;
+
+ if (libconfig->setting_lookup_int64(it, "Zeny", &i64)) {
+ if (i64 > MAX_ZENY) {
+ ShowWarning("clif_stylist_read_db_libconfig_sub: zeny is too big in \"%s\", entry #%d, capping to MAX_ZENY.\n", source, idx);
+ entry.zeny = MAX_ZENY;
+ } else {
+ entry.zeny = (int)i64;
+ }
+ }
+
+ if (itemdb->lookup_const(it, "ItemID", &i32))
+ entry.itemid = i32;
+
+ if (itemdb->lookup_const(it, "BoxItemID", &i32))
+ entry.boxid = i32;
+
+ if (libconfig->setting_lookup_bool(it, "AllowDoram", &i32))
+ entry.allow_doram = (i32 == 0) ? false : true;
+
+ VECTOR_ENSURE(stylist_data[type], 1, 1);
+ VECTOR_PUSH(stylist_data[type], entry);
+ return true;
+}
+
+static bool clif_style_change_validate_requirements(struct map_session_data *sd, int type, int16 idx)
+{
+ struct item it;
+ struct stylist_data_entry *entry;
+
+ nullpo_retr(false, sd);
+ Assert_retr(false, type >= 0 && type < MAX_STYLIST_TYPE);
+ Assert_retr(false, idx >= 0 && idx < VECTOR_LENGTH(stylist_data[type]));
+
+ entry = &VECTOR_INDEX(stylist_data[type], idx);
+
+ if (sd->status.class == JOB_SUMMONER && (entry->allow_doram == false))
+ return false;
+
+ if (entry->id >= 0) {
+ if (entry->zeny != 0) {
+ if (sd->status.zeny < entry->zeny)
+ return false;
+
+ sd->status.zeny -= entry->zeny;
+ clif->updatestatus(sd, SP_ZENY);
+ } else if (entry->itemid != 0) {
+ it.nameid = entry->itemid;
+ it.amount = 1;
+ return script->buildin_delitem_search(sd, &it, false);
+ } else if (entry->boxid != 0) {
+ it.nameid = entry->boxid;
+ it.amount = 1;
+ return script->buildin_delitem_search(sd, &it, false);
+ }
+ return true;
+ }
+ return false;
+}
+static void clif_stylist_send_rodexitem(struct map_session_data *sd, int itemid)
+{
+ struct rodex_message msg = { 0 };
+
+ nullpo_retv(sd);
+
+ msg.receiver_id = sd->status.char_id;
+ msg.items[0].item.nameid = itemid;
+ msg.items[0].item.amount = 1;
+ msg.items[0].item.identify = 1;
+ msg.type = MAIL_TYPE_NPC | MAIL_TYPE_ITEM;
+
+ safestrncpy(msg.sender_name, msg_txt(366), NAME_LENGTH);
+ safestrncpy(msg.title, msg_txt(367), RODEX_TITLE_LENGTH);
+ safestrncpy(msg.body, msg_txt(368), MAIL_BODY_LENGTH);
+ msg.send_date = (int)time(NULL);
+ msg.expire_date = (int)time(NULL) + RODEX_EXPIRE;
+
+ intif->rodex_sendmail(&msg);
+}
+
+static void clif_parse_cz_req_style_change(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_cz_req_style_change(int fd, struct map_session_data *sd)
+{
+ const struct PACKET_CZ_REQ_STYLE_CHANGE *p = RP2PTR(fd);
+
+ if (p->HeadStyle > 0)
+ clif->cz_req_style_change_sub(sd, LOOK_HAIR, p->HeadStyle, false);
+ if (p->HeadPalette > 0)
+ clif->cz_req_style_change_sub(sd, LOOK_HAIR_COLOR, p->HeadPalette, false);
+ if (p->BodyPalette > 0)
+ clif->cz_req_style_change_sub(sd, LOOK_CLOTHES_COLOR, p->BodyPalette, false);
+ if (p->TopAccessory > 0)
+ clif->cz_req_style_change_sub(sd, LOOK_HEAD_TOP, p->TopAccessory, true);
+ if (p->MidAccessory > 0)
+ clif->cz_req_style_change_sub(sd, LOOK_HEAD_MID, p->MidAccessory, true);
+ if (p->BottomAccessory > 0)
+ clif->cz_req_style_change_sub(sd, LOOK_HEAD_BOTTOM, p->BottomAccessory, true);
+ clif->style_change_response(sd, STYLIST_SHOP_SUCCESS);
+ return;
+}
+
+static void clif_parse_cz_req_style_change2(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_cz_req_style_change2(int fd, struct map_session_data *sd)
+{
+ const struct PACKET_CZ_REQ_STYLE_CHANGE2 *p = RP2PTR(fd);
+
+ if (p->HeadStyle > 0)
+ clif->cz_req_style_change_sub(sd, LOOK_HAIR, p->HeadStyle, false);
+ if (p->HeadPalette > 0)
+ clif->cz_req_style_change_sub(sd, LOOK_HAIR_COLOR, p->HeadPalette, false);
+ if (p->BodyPalette > 0)
+ clif->cz_req_style_change_sub(sd, LOOK_CLOTHES_COLOR, p->BodyPalette, false);
+ if (p->TopAccessory > 0)
+ clif->cz_req_style_change_sub(sd, LOOK_HEAD_TOP, p->TopAccessory, true);
+ if (p->MidAccessory > 0)
+ clif->cz_req_style_change_sub(sd, LOOK_HEAD_MID, p->MidAccessory, true);
+ if (p->BottomAccessory > 0)
+ clif->cz_req_style_change_sub(sd, LOOK_HEAD_BOTTOM, p->BottomAccessory, true);
+ if (p->BodyStyle > 0) {
+ if (pc->has_second_costume(sd)) {
+ clif->cz_req_style_change_sub(sd, LOOK_BODY2, p->BodyStyle, false);
+ }
+ }
+ clif->style_change_response(sd, STYLIST_SHOP_SUCCESS);
+ return;
+}
+
+static void clif_cz_req_style_change_sub(struct map_session_data *sd, int type, int16 idx, bool isitem)
+{
+ struct stylist_data_entry *entry;
+
+ nullpo_retv(sd);
+ Assert_retv(idx > 0);
+ Assert_retv(type >= 0 && type < MAX_STYLIST_TYPE);
+
+ if ((idx - 1) < VECTOR_LENGTH(stylist_data[type])) {
+ entry = &VECTOR_INDEX(stylist_data[type], idx - 1);
+ if (clif->style_change_validate_requirements(sd, type, idx - 1)) {
+ if (isitem == false)
+ pc->changelook(sd, type, entry->id);
+ else
+ clif->stylist_send_rodexitem(sd, entry->id);
+ }
+ }
+}
+
+static void clif_style_change_response(struct map_session_data *sd, enum stylist_shop flag)
+{
+#if PACKETVER >= 20151104
+ struct PACKET_ZC_STYLE_CHANGE_RES p;
+
+ nullpo_retv(sd);
+
+ p.PacketType = 0x0a47;
+ p.flag = flag;
+
+ clif->send(&p, sizeof(p), &sd->bl, SELF);
+#else
+ ShowWarning("clif_style_change_response: unsupported client version is being used.");
+#endif
+}
+
+static void clif_overweight_percent(struct map_session_data *sd)
+{
+#if PACKETVER_MAIN_NUM >= 20171108 || PACKETVER_RE_NUM >= 20171025 || PACKETVER_ZERO_NUM >= 20171019
+ struct PACKET_ZC_OVERWEIGHT_PERCENT p;
+
+ nullpo_retv(sd);
+
+ p.packetType = 0xade;
+ p.percent = battle_config.natural_heal_weight_rate;
+ clif->send(&p, sizeof(p), &sd->bl, SELF);
+#endif
+}
+
+static void clif_parse_changeDress(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+/// 0ae8 <packet len>.W
+static void clif_parse_changeDress(int fd, struct map_session_data *sd)
+{
+ const char commandname[] = "changedress";
+ char command[sizeof commandname + 3] = ""; // '@' command + ' ' + NUL
+
+ sprintf(command, "%c%s ", atcommand->at_symbol, commandname);
+ atcommand->exec(fd, sd, command, true);
+}
+
+static void clif_party_dead_notification(struct map_session_data *sd)
+{
+#if PACKETVER_MAIN_NUM >= 20170524 || PACKETVER_RE_NUM >= 20170502 || defined(PACKETVER_ZERO)
+ struct PACKET_ZC_GROUP_ISALIVE p;
+
+ nullpo_retv(sd);
+
+ p.packetType = 0xab2;
+ p.AID = sd->bl.id;
+ p.isDead = pc_isdead(sd);
+ clif->send(&p, sizeof(p), &sd->bl, PARTY_WOS);
+#endif
+}
+
+static void clif_parse_memorial_dungeon_command(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_memorial_dungeon_command(int fd, struct map_session_data *sd)
+{
+ const struct PACKET_CZ_MEMORIALDUNGEON_COMMAND *p = RP2PTR(fd);
+
+ switch (p->command) {
+ case COMMAND_MEMORIALDUNGEON_DESTROY_FORCE:
+ instance->force_destroy(sd);
+ }
+}
+
+static void clif_camera_showWindow(struct map_session_data *sd)
+{
+#if PACKETVER >= 20160525
+ nullpo_retv(sd);
+ struct PACKET_ZC_CAMERA_INFO p;
+ p.packetType = HEADER_ZC_CAMERA_INFO;
+ p.action = 1;
+ p.range = 0;
+ p.rotation = 0;
+ p.latitude = 0;
+ clif->send(&p, sizeof(p), &sd->bl, SELF);
+#endif
+}
+
+static void clif_camera_change(struct map_session_data *sd, float range, float rotation, float latitude, enum send_target target)
+{
+#if PACKETVER >= 20160525
+ nullpo_retv(sd);
+ struct PACKET_ZC_CAMERA_INFO p;
+ p.packetType = HEADER_ZC_CAMERA_INFO;
+ p.action = 0;
+ p.range = range;
+ p.rotation = rotation;
+ p.latitude = latitude;
+ clif->send(&p, sizeof(p), &sd->bl, target);
+#endif
+}
+
+static void clif_parse_cameraInfo(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_cameraInfo(int fd, struct map_session_data *sd)
+{
+#if PACKETVER >= 20160525
+ const struct PACKET_CZ_CAMERA_INFO *const p = RFIFOP(fd, 0);
+ char command[100];
+ if (p->action == 1) {
+ sprintf(command, "%ccamerainfo", atcommand->at_symbol);
+ } else {
+ sprintf(command, "%ccamerainfo %15f %15f %15f", atcommand->at_symbol, p->range, p->rotation, p->latitude);
+ }
+ atcommand->exec(fd, sd, command, true);
+#endif
+}
+
+// show item preview in already opened preview window
+static void clif_item_preview(struct map_session_data *sd, int n)
+{
+#if PACKETVER_MAIN_NUM >= 20170726 || PACKETVER_RE_NUM >= 20170621 || defined(PACKETVER_ZERO)
+ nullpo_retv(sd);
+ Assert_retv(n >= 0 && n < sd->status.inventorySize);
+
+ struct PACKET_ZC_ITEM_PREVIEW p;
+ p.packetType = HEADER_ZC_ITEM_PREVIEW;
+ p.index = n + 2;
+#if PACKETVER_MAIN_NUM >= 20181017 || PACKETVER_RE_NUM >= 20181017 || PACKETVER_ZERO_NUM >= 20181024
+ p.isDamaged = (sd->status.inventory[n].attribute & ATTR_BROKEN) != 0 ? 1 : 0;
+#endif
+ p.refiningLevel = sd->status.inventory[n].refine;
+ clif->addcards(&p.slot, &sd->status.inventory[n]);
+ clif->add_item_options(&p.option_data[0], &sd->status.inventory[n]);
+ clif->send(&p, sizeof(p), &sd->bl, SELF);
+#endif
+}
+
+// insert cardId into equipped item in pos equipment slot into slot cardSlot.
+static bool clif_enchant_equipment(struct map_session_data *sd, enum equip_pos pos, int cardSlot, int cardId)
+{
+#if PACKETVER_MAIN_NUM >= 20160831 || PACKETVER_RE_NUM >= 20151118 || defined(PACKETVER_ZERO)
+ nullpo_ret(sd);
+ Assert_ret(cardSlot >= 0 && cardSlot < MAX_SLOTS);
+ struct PACKET_ZC_ENCHANT_EQUIPMENT p;
+ p.packetType = HEADER_ZC_ENCHANT_EQUIPMENT;
+ p.wearState = pos;
+ p.cardSlot = cardSlot;
+ p.itemId = cardId;
+ clif->send(&p, sizeof(p), &sd->bl, SELF);
+ return true;
+#else
+ return false;
+#endif
+}
+
+static void clif_npc_barter_open(struct map_session_data *sd, struct npc_data *nd)
+{
+#if PACKETVER_ZERO_NUM >= 20181226
+ nullpo_retv(sd);
+ nullpo_retv(nd);
+ struct npc_item_list *shop = nd->u.scr.shop->item;
+ const int shop_size = nd->u.scr.shop->items;
+
+ int c = 0;
+ int maxCount = (sizeof(packet_buf) - sizeof(struct PACKET_ZC_NPC_BARTER_OPEN)) / sizeof(struct PACKET_ZC_NPC_BARTER_OPEN_sub);
+ struct PACKET_ZC_NPC_BARTER_OPEN *packet = (struct PACKET_ZC_NPC_BARTER_OPEN*)&packet_buf[0];
+ packet->packetType = HEADER_ZC_NPC_BARTER_OPEN;
+
+ for (int i = 0; i < shop_size && c < maxCount; i++) {
+ if (shop[i].nameid) {
+ struct item_data *id = itemdb->exists(shop[i].nameid);
+ if (id == NULL)
+ continue;
+
+ packet->list[c].nameid = shop[i].nameid;
+ packet->list[c].type = itemtype(id->type);
+ packet->list[c].amount = shop[i].qty;
+ packet->list[c].currencyNameid = shop[i].value;
+ packet->list[c].currencyAmount = shop[i].value2;
+ packet->list[c].weight = id->weight * 10;
+ packet->list[c].index = i;
+ c++;
+ }
+ }
+
+ packet->packetLength = sizeof(struct PACKET_ZC_NPC_BARTER_OPEN) + sizeof(struct PACKET_ZC_NPC_BARTER_OPEN_sub) * c;
+ clif->send(packet, packet->packetLength, &sd->bl, SELF);
+#endif
+}
+
+static void clif_parse_NPCBarterPurchase(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_NPCBarterPurchase(int fd, struct map_session_data *sd)
+{
+#if PACKETVER_ZERO_NUM >= 20181226
+ const struct PACKET_CZ_NPC_BARTER_PURCHASE *p = RP2PTR(fd);
+ int count = (p->packetLength - sizeof(struct PACKET_CZ_NPC_BARTER_PURCHASE)) / sizeof p->list[0];
+ struct barteritemlist item_list;
+
+ Assert_retv(count >= 0 && count <= sd->status.inventorySize);
+
+ VECTOR_INIT(item_list);
+ VECTOR_ENSURE(item_list, count, 1);
+
+ for (int i = 0; i < count; i++) {
+ struct barter_itemlist_entry entry = { 0 };
+ entry.addId = p->list[i].itemId;
+ entry.addAmount = p->list[i].amount;
+ entry.removeIndex = p->list[i].invIndex - 2;
+ entry.shopIndex = p->list[i].shopIndex;
+
+ VECTOR_PUSH(item_list, entry);
+ }
+
+ int response = npc->barter_buylist(sd, &item_list);
+ clif->npc_buy_result(sd, response);
+
+ VECTOR_CLEAR(item_list);
+#endif
+}
+
/*==========================================
* Main client packet processing function
*------------------------------------------*/
-int clif_parse(int fd) {
+static int clif_parse(int fd)
+{
int cmd, packet_len;
struct map_session_data *sd;
int pnum;
@@ -19132,6 +22341,7 @@ int clif_parse(int fd) {
parse_cmd_func = clif->parse_cmd;
cmd = parse_cmd_func(fd,sd);
+ clif->cmd = cmd;
if (VECTOR_LENGTH(HPM->packets[hpClif_Parse]) > 0) {
int result = HPM->parse_packets(fd,cmd,hpClif_Parse);
@@ -19142,7 +22352,7 @@ int clif_parse(int fd) {
}
// filter out invalid / unsupported packets
- if (cmd > MAX_PACKET_DB || cmd < MIN_PACKET_DB || packet_db[cmd].len == 0) {
+ if (cmd > MAX_PACKET_DB || cmd < MIN_PACKET_DB || packets->db[cmd] == 0) {
ShowWarning("clif_parse: Received unsupported packet (packet 0x%04x (0x%04x), %"PRIuS" bytes received), disconnecting session #%d.\n",
(unsigned int)cmd, RFIFOW(fd,0), RFIFOREST(fd), fd);
#ifdef DUMP_INVALID_PACKET
@@ -19153,7 +22363,7 @@ int clif_parse(int fd) {
}
// determine real packet length
- if ( ( packet_len = packet_db[cmd].len ) == -1) { // variable-length packet
+ if ((packet_len = packets->db[cmd]) == -1) { // variable-length packet
if (RFIFOREST(fd) < 4)
return 0;
@@ -19195,8 +22405,8 @@ int clif_parse(int fd) {
else
packet_db[cmd].func(fd, sd);
}
-#ifdef DUMP_UNKNOWN_PACKET
else {
+#ifdef DUMP_UNKNOWN_PACKET
const char* packet_txt = "save/packet.txt";
FILE* fp;
@@ -19222,8 +22432,10 @@ int clif_parse(int fd) {
ShowDump(RFIFOP(fd,0), packet_len);
}
- }
+#else
+ clif->pDull(fd, sd);
#endif
+ }
RFIFOSKIP(fd, packet_len);
@@ -19238,14 +22450,15 @@ int clif_parse(int fd) {
* @param packet_id The packet ID.
* @return The corresponding packet_db entry, if any.
*/
-const struct s_packet_db *clif_packet(int packet_id)
+static const struct s_packet_db *clif_packet(int packet_id)
{
- if (packet_id < MIN_PACKET_DB || packet_id > MAX_PACKET_DB || packet_db[packet_id].len == 0)
+ if (packet_id < MIN_PACKET_DB || packet_id > MAX_PACKET_DB || packets->db[packet_id] == 0)
return NULL;
return &packet_db[packet_id];
}
-static void __attribute__ ((unused)) packetdb_addpacket(short cmd, int len, ...) {
+static void __attribute__ ((unused)) packetdb_addpacket(int cmd, ...)
+{
va_list va;
int i;
int pos;
@@ -19261,21 +22474,19 @@ static void __attribute__ ((unused)) packetdb_addpacket(short cmd, int len, ...)
return;
}
- packet_db[cmd].len = len;
-
- va_start(va,len);
+ va_start(va, cmd);
pos = va_arg(va, int);
va_end(va);
- if( pos == 0xFFFF ) { /* nothing more to do */
+ if (pos == 0xFFFF) { /* nothing more to do */
return;
}
- va_start(va,len);
+ va_start(va, cmd);
- func = va_arg(va,pFunc);
+ func = va_arg(va, pFunc);
packet_db[cmd].func = func;
@@ -19289,16 +22500,36 @@ static void __attribute__ ((unused)) packetdb_addpacket(short cmd, int len, ...)
}
va_end(va);
}
-void packetdb_loaddb(void) {
+
+static void packetdb_loaddb(void)
+{
memset(packet_db,0,sizeof(packet_db));
-#define packet(id, size, ...) packetdb_addpacket((id), (size), ##__VA_ARGS__, 0xFFFF)
-#define packetKeys(a,b,c) do { clif->cryptKey[0] = (a); clif->cryptKey[1] = (b); clif->cryptKey[2] = (c); } while(0)
-#include "packets.h" /* load structure data */
+#define packet(id, ...) packetdb_addpacket((id), ##__VA_ARGS__, 0xFFFF)
+#include "map/packets.h" /* load structure data */
+#ifdef PACKETVER_ZERO
+#include "map/packets_shuffle_zero.h"
+#elif defined(PACKETVER_RE)
+#include "map/packets_shuffle_re.h"
+#else // PACKETVER_ZERO
+#include "map/packets_shuffle_main.h"
+#endif // PACKETVER_ZERO
#undef packet
+#define packetKeys(a,b,c) do { clif->cryptKey[0] = (a); clif->cryptKey[1] = (b); clif->cryptKey[2] = (c); } while(0)
+#if defined(OBFUSCATIONKEY1) && defined(OBFUSCATIONKEY2) && defined(OBFUSCATIONKEY3)
+ packetKeys(OBFUSCATIONKEY1,OBFUSCATIONKEY2,OBFUSCATIONKEY3);
+#else // defined(OBFUSCATIONKEY1) && defined(OBFUSCATIONKEY2) && defined(OBFUSCATIONKEY3)
+#ifdef PACKETVER_ZERO
+#include "map/packets_keys_zero.h"
+#else // PACKETVER_ZERO
+#include "map/packets_keys_main.h"
+#endif // PACKETVER_ZERO
+#endif // defined(OBFUSCATIONKEY1) && defined(OBFUSCATIONKEY2) && defined(OBFUSCATIONKEY3)
#undef packetKeys
}
-void clif_bc_ready(void) {
+
+static void clif_bc_ready(void)
+{
if( battle_config.display_status_timers )
clif->status_change = clif_status_change;
else
@@ -19320,7 +22551,7 @@ void clif_bc_ready(void) {
/*==========================================
*
*------------------------------------------*/
-int do_init_clif(bool minimal)
+static int do_init_clif(bool minimal)
{
if (minimal)
return 0;
@@ -19328,6 +22559,7 @@ int do_init_clif(bool minimal)
packetdb_loaddb();
sockt->set_defaultparse(clif->parse);
+ sockt->validate = true;
if (sockt->make_listen_bind(clif->bind_ip,clif->map_port) == -1) {
ShowFatalError("Failed to bind to port '"CL_WHITE"%d"CL_RESET"'\n",clif->map_port);
exit(EXIT_FAILURE);
@@ -19342,7 +22574,7 @@ int do_init_clif(bool minimal)
return 0;
}
-void do_final_clif(void)
+static void do_final_clif(void)
{
unsigned char i;
@@ -19365,13 +22597,16 @@ void do_final_clif(void)
}
}
-void clif_defaults(void) {
+
+void clif_defaults(void)
+{
clif = &clif_s;
/* vars */
clif->bind_ip = INADDR_ANY;
clif->map_port = 5121;
clif->ally_only = false;
clif->delayed_damage_ers = NULL;
+ clif->cmd = -1;
/* core */
clif->init = do_init_clif;
clif->final = do_final_clif;
@@ -19388,6 +22623,7 @@ void clif_defaults(void) {
clif->packet = clif_packet;
/* auth */
clif->authok = clif_authok;
+ clif->auth_error = clif_auth_error;
clif->authrefuse = clif_authrefuse;
clif->authfail_fd = clif_authfail_fd;
clif->charselectok = clif_charselectok;
@@ -19398,6 +22634,7 @@ void clif_defaults(void) {
clif->dropitem = clif_dropitem;
clif->delitem = clif_delitem;
clif->takeitem = clif_takeitem;
+ clif->item_movefailed = clif_item_movefailed;
clif->item_equip = clif_item_equip;
clif->item_normal = clif_item_normal;
clif->arrowequip = clif_arrowequip;
@@ -19409,11 +22646,11 @@ void clif_defaults(void) {
clif->unequipitemack = clif_unequipitemack;
clif->useitemack = clif_useitemack;
clif->addcards = clif_addcards;
- clif->addcards2 = clif_addcards2;
clif->item_sub = clif_item_sub; // look like unused
clif->getareachar_item = clif_getareachar_item;
clif->cart_additem_ack = clif_cart_additem_ack;
clif->cashshop_load = clif_cashshop_db;
+ clif->cashShopSchedule = clif_cashShopSchedule;
clif->package_announce = clif_package_item_announce;
clif->item_drop_announce = clif_item_drop_announce;
/* unit-related */
@@ -19449,6 +22686,7 @@ void clif_defaults(void) {
clif->spawn = clif_spawn;
/* map-related */
clif->changemap = clif_changemap;
+ clif->changemap_airship = clif_changemap_airship;
clif->changemapcell = clif_changemapcell;
clif->map_property = clif_map_property;
clif->pvpset = clif_pvpset;
@@ -19458,6 +22696,7 @@ void clif_defaults(void) {
clif->maptypeproperty2 = clif_maptypeproperty2;
/* multi-map-server */
clif->changemapserver = clif_changemapserver;
+ clif->changemapserver_airship = clif_changemapserver_airship;
/* npc-shop-related */
clif->npcbuysell = clif_npcbuysell;
clif->buylist = clif_buylist;
@@ -19504,9 +22743,18 @@ void clif_defaults(void) {
clif->combo_delay = clif_combo_delay;
clif->status_change = clif_status_change;
clif->insert_card = clif_insert_card;
- clif->inventorylist = clif_inventorylist;
- clif->equiplist = clif_equiplist;
- clif->cartlist = clif_cartlist;
+ clif->inventoryList = clif_inventoryList;
+ clif->inventoryItems = clif_inventoryItems;
+ clif->equipList = clif_equipList;
+ clif->equipItems = clif_equipItems;
+ clif->cartList = clif_cartList;
+ clif->cartItems = clif_cartItems;
+ clif->inventoryExpansionInfo = clif_inventoryExpansionInfo;
+ clif->inventoryExpandAck = clif_inventoryExpandAck;
+ clif->inventoryExpandResult = clif_inventoryExpandResult;
+ clif->pInventoryExpansion = clif_parse_inventoryExpansion;
+ clif->pInventoryExpansionConfirmed = clif_parse_inventoryExpansionConfirmed;
+ clif->pInventoryExpansionRejected = clif_parse_inventoryExpansionRejected;
clif->favorite_item = clif_favorite_item;
clif->clearcart = clif_clearcart;
clif->item_identify_list = clif_item_identify_list;
@@ -19535,13 +22783,14 @@ void clif_defaults(void) {
clif->mission_info = clif_mission_info;
clif->feel_hate_reset = clif_feel_hate_reset;
clif->partytickack = clif_partytickack;
- clif->equiptickack = clif_equiptickack;
+ clif->zc_config = clif_zc_config;
clif->viewequip_ack = clif_viewequip_ack;
clif->equpcheckbox = clif_equpcheckbox;
clif->displayexp = clif_displayexp;
clif->font = clif_font;
clif->progressbar = clif_progressbar;
clif->progressbar_abort = clif_progressbar_abort;
+ clif->progressbar_unit = clif_progressbar_unit;
clif->showdigit = clif_showdigit;
clif->elementalconverter_list = clif_elementalconverter_list;
clif->spellbook_list = clif_spellbook_list;
@@ -19598,6 +22847,8 @@ void clif_defaults(void) {
clif->specialeffect = clif_specialeffect;
clif->specialeffect_single = clif_specialeffect_single;
clif->specialeffect_value = clif_specialeffect_value;
+ clif->removeSpecialEffect = clif_removeSpecialEffect;
+ clif->removeSpecialEffect_single = clif_removeSpecialEffect_single;
clif->millenniumshield = clif_millenniumshield;
clif->spiritcharm = clif_charm;
clif->charm_single = clif_charm_single;
@@ -19625,10 +22876,15 @@ void clif_defaults(void) {
clif->broadcast2 = clif_broadcast2;
clif->messagecolor_self = clif_messagecolor_self;
clif->messagecolor = clif_messagecolor;
+ clif->serviceMessageColor = clif_serviceMessageColor;
clif->disp_overhead = clif_disp_overhead;
+ clif->notify_playerchat = clif_notify_playerchat;
clif->msgtable_skill = clif_msgtable_skill;
clif->msgtable = clif_msgtable;
clif->msgtable_num = clif_msgtable_num;
+ clif->msgtable_str = clif_msgtable_str;
+ clif->msgtable_str_color = clif_msgtable_str_color;
+ clif->msgtable_color = clif_msgtable_color;
clif->message = clif_displaymessage;
clif->messageln = clif_displaymessage2;
clif->messages = clif_displaymessage_sprintf;
@@ -19654,9 +22910,14 @@ void clif_defaults(void) {
clif->vendinglist = clif_vendinglist;
clif->buyvending = clif_buyvending;
clif->openvending = clif_openvending;
+ clif->openvendingAck = clif_openvendingAck;
clif->vendingreport = clif_vendingreport;
/* storage handling */
- clif->storagelist = clif_storagelist;
+ clif->storageList = clif_storageList;
+ clif->guildStorageList = clif_guildStorageList;
+ clif->storageItems = clif_storageItems;
+ clif->inventoryStart = clif_inventoryStart;
+ clif->inventoryEnd = clif_inventoryEnd;
clif->updatestorageamount = clif_updatestorageamount;
clif->storageitemadded = clif_storageitemadded;
clif->storageitemremoved = clif_storageitemremoved;
@@ -19671,6 +22932,7 @@ void clif_defaults(void) {
clif->party_created = clif_party_created;
clif->party_member_info = clif_party_member_info;
clif->party_info = clif_party_info;
+ clif->party_job_and_level = clif_party_job_and_level;
clif->party_invite = clif_party_invite;
clif->party_inviteack = clif_party_inviteack;
clif->party_option = clif_party_option;
@@ -19714,6 +22976,8 @@ void clif_defaults(void) {
clif->guild_positionnamelist = clif_guild_positionnamelist;
clif->guild_positioninfolist = clif_guild_positioninfolist;
clif->guild_expulsionlist = clif_guild_expulsionlist;
+ clif->guild_set_position = clif_guild_set_position;
+ clif->guild_position_selected = clif_guild_position_selected;
clif->validate_emblem = clif_validate_emblem;
/* battleground-specific */
clif->bg_hp = clif_bg_hp;
@@ -19762,6 +23026,7 @@ void clif_defaults(void) {
clif->quest_delete = clif_quest_delete;
clif->quest_update_status = clif_quest_update_status;
clif->quest_update_objective = clif_quest_update_objective;
+ clif->quest_notify_objective = clif_quest_notify_objective;
clif->quest_show_event = clif_quest_show_event;
/* mail-related */
clif->mail_window = clif_Mail_window;
@@ -19874,6 +23139,14 @@ void clif_defaults(void) {
clif->isdisguised = clif_isdisguised;
clif->navigate_to = clif_navigate_to;
clif->bl_type = clif_bl_type;
+ /* Achievement System */
+ clif->achievement_send_list = clif_achievement_send_list;
+ clif->achievement_send_update = clif_achievement_send_update;
+ clif->pAchievementGetReward = clif_parse_achievement_get_reward;
+ clif->achievement_reward_ack = clif_achievement_reward_ack;
+ /* Title */
+ clif->change_title_ack = clif_change_title_ack;
+ clif->pChangeTitle = clif_parse_change_title;
/*------------------------
*- Parse Incoming Packet
@@ -19928,6 +23201,9 @@ void clif_defaults(void) {
clif->pUseSkillToId = clif_parse_UseSkillToId;
clif->pUseSkillToId_homun = clif_parse_UseSkillToId_homun;
clif->pUseSkillToId_mercenary = clif_parse_UseSkillToId_mercenary;
+ clif->pStartUseSkillToId = clif_parse_startUseSkillToId;
+ clif->pStopUseSkillToId = clif_parse_stopUseSkillToId;
+ clif->useSkillToIdReal = clif_useSkillToIdReal;
clif->pUseSkillToPos = clif_parse_UseSkillToPos;
clif->pUseSkillToPosSub = clif_parse_UseSkillToPosSub;
clif->pUseSkillToPos_homun = clif_parse_UseSkillToPos_homun;
@@ -20059,7 +23335,7 @@ void clif_defaults(void) {
clif->pAdopt_request = clif_parse_Adopt_request;
clif->pAdopt_reply = clif_parse_Adopt_reply;
clif->pViewPlayerEquip = clif_parse_ViewPlayerEquip;
- clif->pEquipTick = clif_parse_EquipTick;
+ clif->p_cz_config = clif_parse_cz_config;
clif->pquestStateAck = clif_parse_questStateAck;
clif->pmercenary_action = clif_parse_mercenary_action;
clif->pBattleChat = clif_parse_BattleChat;
@@ -20076,6 +23352,9 @@ void clif_defaults(void) {
clif->pDebug = clif_parse_debug;
clif->pSkillSelectMenu = clif_parse_SkillSelectMenu;
clif->pMoveItem = clif_parse_MoveItem;
+ clif->p_cz_blocking_play_cancel = clif_parse_cz_blocking_play_cancel;
+ clif->overweight_percent = clif_overweight_percent;
+ clif->pChangeDress = clif_parse_changeDress;
/* dull */
clif->pDull = clif_parse_dull;
/* BGQueue */
@@ -20116,9 +23395,88 @@ void clif_defaults(void) {
clif->pNPCMarketClosed = clif_parse_NPCMarketClosed;
clif->pNPCMarketPurchase = clif_parse_NPCMarketPurchase;
/* */
- clif->add_random_options = clif_add_random_options;
+ clif->add_item_options = clif_add_item_options;
clif->pHotkeyRowShift = clif_parse_HotkeyRowShift;
clif->dressroom_open = clif_dressroom_open;
clif->pOneClick_ItemIdentify = clif_parse_OneClick_ItemIdentify;
+ /* Achievements [Smokexyz/Hercules] */
clif->get_bl_name = clif_get_bl_name;
+ /* RODEX */
+ clif->pRodexOpenWriteMail = clif_parse_rodex_open_write_mail;
+ clif->rodex_open_write_mail = clif_rodex_open_write_mail;
+ clif->pRodexAddItem = clif_parse_rodex_add_item;
+ clif->rodex_add_item_result = clif_rodex_add_item_result;
+ clif->pRodexRemoveItem = clif_parse_rodex_remove_item;
+ clif->rodex_remove_item_result = clif_rodex_remove_item_result;
+ clif->pRodexSendMail = clif_parse_rodex_send_mail;
+ clif->rodex_send_mail_result = clif_rodex_send_mail_result;
+ clif->rodex_send_maillist = clif_rodex_send_maillist;
+ clif->rodex_send_refresh = clif_rodex_send_refresh;
+ clif->pRodexReadMail = clif_parse_rodex_read_mail;
+ clif->rodex_read_mail = clif_rodex_read_mail;
+ clif->pRodexNextMaillist = clif_parse_rodex_next_maillist;
+ clif->pRodexCloseMailbox = clif_parse_rodex_close_mailbox;
+ clif->pRodexCancelWriteMail = clif_parse_rodex_cancel_write_mail;
+ clif->pRodexOpenMailbox = clif_parse_rodex_open_mailbox;
+ clif->pRodexCheckName = clif_parse_rodex_checkname;
+ clif->rodex_checkname_result = clif_rodex_checkname_result;
+ clif->pRodexDeleteMail = clif_parse_rodex_delete_mail;
+ clif->rodex_delete_mail = clif_rodex_delete_mail;
+ clif->pRodexRefreshMaillist = clif_parse_rodex_refresh_maillist;
+ clif->pRodexRequestZeny = clif_parse_rodex_request_zeny;
+ clif->rodex_request_zeny = clif_rodex_request_zeny;
+ clif->pRodexRequestItems = clif_parse_rodex_request_items;
+ clif->rodex_request_items = clif_rodex_request_items;
+ clif->rodex_icon = clif_rodex_icon;
+ clif->rodex_send_mails_all = clif_rodex_send_mails_all;
+ clif->skill_scale = clif_skill_scale;
+ // -- Clan system
+ clif->clan_basicinfo = clif_clan_basicinfo;
+ clif->clan_onlinecount = clif_clan_onlinecount;
+ clif->clan_leave = clif_clan_leave;
+ clif->clan_message = clif_clan_message;
+ clif->pClanMessage = clif_parse_ClanMessage;
+ // -- Hat Effect
+ clif->hat_effect = clif_hat_effect;
+ clif->hat_effect_single = clif_hat_effect_single;
+ clif->party_dead_notification = clif_party_dead_notification;
+
+ clif->pAttendanceDB = clif_parse_attendance_db;
+ clif->attendancedb_libconfig_sub = clif_attendancedb_libconfig_sub;
+ clif->attendance_timediff = clif_attendance_timediff;
+ clif->attendance_getendtime = clif_attendance_getendtime;
+ clif->pOpenUIRequest = clif_parse_open_ui_request;
+ clif->open_ui = clif_open_ui;
+ clif->pAttendanceRewardRequest = clif_parse_attendance_reward_request;
+ clif->ui_action = clif_ui_action;
+ clif->pPrivateAirshipRequest = clif_parse_private_airship_request;
+ clif->PrivateAirshipResponse = clif_private_airship_response;
+
+ clif->stylist_vector_init = clif_stylist_vector_init;
+ clif->stylist_vector_clear = clif_stylist_vector_clear;
+ clif->stylist_read_db_libconfig = clif_stylist_read_db_libconfig;
+ clif->stylist_read_db_libconfig_sub = clif_stylist_read_db_libconfig_sub;
+ clif->style_change_validate_requirements = clif_style_change_validate_requirements;
+ clif->stylist_send_rodexitem = clif_stylist_send_rodexitem;
+ clif->pReqStyleChange = clif_parse_cz_req_style_change;
+ clif->pReqStyleChange2 = clif_parse_cz_req_style_change2;
+ clif->cz_req_style_change_sub = clif_cz_req_style_change_sub;
+ clif->style_change_response = clif_style_change_response;
+
+ clif->camera_showWindow = clif_camera_showWindow;
+ clif->camera_change = clif_camera_change;
+ clif->pCameraInfo = clif_parse_cameraInfo;
+ clif->item_preview = clif_item_preview;
+ clif->enchant_equipment = clif_enchant_equipment;
+
+ // -- Pet Evolution
+ clif->pPetEvolution = clif_parse_pet_evolution;
+ clif->petEvolutionResult = clif_pet_evolution_result;
+
+ clif->pMemorialDungeonCommand = clif_parse_memorial_dungeon_command;
+ clif->pReqRemainTime = clif_parse_reqRemainTime;
+
+ clif->npc_barter_open = clif_npc_barter_open;
+ clif->pNPCBarterClosed = clif_parse_NPCBarterClosed;
+ clif->pNPCBarterPurchase = clif_parse_NPCBarterPurchase;
}
diff --git a/src/map/clif.h b/src/map/clif.h
index aefba5974..1aee11c33 100644
--- a/src/map/clif.h
+++ b/src/map/clif.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -54,20 +54,32 @@ struct skill_cd;
struct skill_unit;
struct unit_data;
struct view_data;
+struct achievement_data; // map/achievement.h
+
+enum clif_messages;
+enum rodex_add_item;
+enum rodex_get_zeny;
+enum rodex_get_items;
/**
* Defines
**/
-#define packet_len(cmd) packet_db[cmd].len
+#define packet_len(cmd) packets->db[cmd]
#define clif_menuskill_clear(sd) ((sd)->menuskill_id = (sd)->menuskill_val = (sd)->menuskill_val2 = 0)
#define clif_disp_onlyself(sd, mes) clif->disp_message(&(sd)->bl, (mes), SELF)
#define MAX_ROULETTE_LEVEL 7 /** client-defined value **/
#define MAX_ROULETTE_COLUMNS 9 /** client-defined value **/
#define RGB2BGR(c) (((c) & 0x0000FF) << 16 | ((c) & 0x00FF00) | ((c) & 0xFF0000) >> 16)
+#ifndef MAX_STYLIST_TYPE
+#define MAX_STYLIST_TYPE LOOK_MAX
+#endif
+
+#define COLOR_CYAN 0x00ffffU
#define COLOR_RED 0xff0000U
#define COLOR_GREEN 0x00ff00U
#define COLOR_WHITE 0xffffffU
+#define COLOR_YELLOW 0xffff00U
#define COLOR_DEFAULT COLOR_GREEN
/**
@@ -81,6 +93,7 @@ typedef enum send_target {
AREA_WOC, // area, without chatrooms
AREA_WOSC, // area, without own chatrooms
AREA_CHAT_WOC, // hearable area, without chatrooms
+ AREA_DEAD, // area, for clear unit (monster death)
CHAT, // current chatroom
CHAT_WOS, // current chatroom, without self
PARTY,
@@ -108,6 +121,8 @@ typedef enum send_target {
BG_AREA_WOS,
BG_QUEUE,
+
+ CLAN, // Clan System
} send_target;
typedef enum broadcast_flags {
@@ -222,13 +237,13 @@ typedef enum emotion_type {
E_MAX
} emotion_type;
-typedef enum clr_type {
+enum clr_type {
CLR_OUTSIGHT = 0,
CLR_DEAD,
CLR_RESPAWN,
CLR_TELEPORT,
CLR_TRICKDEAD,
-} clr_type;
+};
enum map_property { // clif_map_property
MAPPROPERTY_NOTHING = 0,
@@ -354,34 +369,8 @@ typedef enum useskill_fail_cause { // clif_skill_fail
USESKILL_FAIL_STYLE_CHANGE_GRAPPLER = 82,
USESKILL_FAIL_THERE_ARE_NPC_AROUND = 83,
USESKILL_FAIL_NEED_MORE_BULLET = 84,
-}useskill_fail_cause;
-
-enum clif_messages {
- MSG_ITEM_CANT_OBTAIN_WEIGHT = 0x034, ///< You cannot carry more items because you are overweight.
- MSG_ITEM_NEED_STANDING = 0x297, ///< You cannot use this item while sitting.
- MSG_MERCENARY_EXPIRED = 0x4f2, ///< The mercenary contract has expired.
- MSG_MERCENARY_DIED = 0x4f3, ///< The mercenary has died.
- MSG_MERCENARY_RELEASED = 0x4f4, ///< You have released the mercenary.
- MSG_MERCENARY_ESCAPED = 0x4f5, ///< The mercenary has run away.
- MSG_SKILL_CANT_USE_AREA = 0x536, ///< This skill cannot be used within this area
- MSG_ITEM_CANT_USE_AREA = 0x537, ///< This item cannot be used within this area.
- MSG_EQUIP_NOT_PUBLIC = 0x54d, ///< This character's equipment information is not open to the public.
- MSG_ITEM_NEED_MADO = 0x59b, ///< Item can only be used when Mado Gear is mounted.
- MSG_ITEM_NEED_CART = 0x5ef, ///< Usable only when cart is put on
- MSG_RUNE_STONE_MAX_AMOUNT = 0x61b, ///< Cannot create Rune stone more than the maximum amount.
- MSG_SKILL_POINTS_LEFT_JOB1 = 0x61e, ///< You must consume all '%d' remaining points in your 1st Job tab.
- MSG_SKILL_POINTS_LEFT_JOB2 = 0x61f, ///< You must consume all '%d' remaining points in your 2nd Job tab. 1st Tab is already done.
- MSG_SKILL_ITEM_NOT_FOUND = 0x623, // FIXME[Haru]: This seems to be 0x622 in the msgstringtable files I found.
- MSG_SKILL_SUCCESS = 0x627, // FIXME[Haru]: This seems to be 0x626 in the msgstringtable files I found.
- MSG_SKILL_FAILURE = 0x628, // FIXME[Haru]: This seems to be 0x627 in the msgstringtable files I found.
- MSG_SKILL_ITEM_NEED_IDENTIFY = 0x62d, ///< Unable to use unchecked items as materials.
- MSG_ITEM_CANT_EQUIP_LVL = 0x6ed, // FIXME[Haru]: This seems to be 0x6ee in the msgstringtable files I found.
- MSG_ITEM_CANT_USE_LVL = 0x6ee, // FIXME[Haru]: This seems to be 0x6ef in the msgstringtable files I found.
- MSG_COOKING_LIST_FAIL = 0x625, // FIXME[Haru]: This might be a wrong message ID. Not sure what it should be.
- MSG_SECONDS_UNTIL_USE = 0x746, ///< %d seconds left until you can use
- MSG_NPC_WORK_IN_PROGRESS = 0x783, // FIXME[Haru]: This seems to be 0x784 in the msgstringtable files I found.
- MSG_REINS_CANT_USE_MOUNTED = 0x78b, // FIXME[Haru]: This seems to be 0x785 in the msgstringtalbe files I found.
-};
+ // max known value 96
+} useskill_fail_cause;
/**
* Used to answer CZ_PC_BUY_CASH_POINT_ITEM (clif_parse_cashshop_buy)
@@ -450,11 +439,13 @@ enum e_BANKING_DEPOSIT_ACK {
BDA_ERROR = 0x1,
BDA_NO_MONEY = 0x2,
BDA_OVERFLOW = 0x3,
+ BDA_PROHIBIT = 0x4,
};
enum e_BANKING_WITHDRAW_ACK {
BWA_SUCCESS = 0x0,
BWA_NO_MONEY = 0x1,
BWA_UNKNOWN_ERROR = 0x2,
+ BWA_PROHIBIT = 0x3,
};
/* because the client devs were replaced by monkeys. */
@@ -502,13 +493,17 @@ enum RECV_ROULETTE_ITEM_ACK {
};
enum GENERATE_ROULETTE_ACK {
- GENERATE_ROULETTE_SUCCESS = 0x0,
- GENERATE_ROULETTE_FAILED = 0x1,
- GENERATE_ROULETTE_NO_ENOUGH_POINT = 0x2,
- GENERATE_ROULETTE_LOSING = 0x3,
+ GENERATE_ROULETTE_SUCCESS = 0x0,
+ GENERATE_ROULETTE_FAILED = 0x1,
+ GENERATE_ROULETTE_NO_ENOUGH_POINT = 0x2,
+ GENERATE_ROULETTE_LOSING = 0x3,
+ GENERATE_ROULETTE_NO_ENOUGH_INVENTORY_SPACE = 0x4,
+#if PACKETVER >= 20141001
+ GENERATE_ROULETTE_CANT_PLAY = 0x5,
+#endif
};
-enum OPEN_ROULETTE_ACK{
+enum OPEN_ROULETTE_ACK {
OPEN_ROULETTE_SUCCESS = 0x0,
OPEN_ROULETTE_FAILED = 0x1,
};
@@ -558,19 +553,89 @@ enum clif_unittype {
CLUT_MERCNARY = 0x9,
CLUT_ELEMENTAL = 0xa,
};
+/**
+* Receive configuration types
+**/
+enum CZ_CONFIG {
+ CZ_CONFIG_OPEN_EQUIPMENT_WINDOW = 0,
+ // Unknown = 1,
+ CZ_CONFIG_PET_AUTOFEEDING = 2,
+ CZ_CONFIG_HOMUNCULUS_AUTOFEEDING = 3,
+};
+
+/**
+* Client UI types
+* used with packet 0xAE2 to request the client to open a specific ui
+**/
+enum zc_ui_types {
+#if PACKETVER >= 20150128
+ ZC_BANK_UI = 0,
+ ZC_STYLIST_UI = 1,
+ ZC_CAPTCHA_UI = 2,
+ ZC_MACRO_UI = 3,
+#endif
+ zc_ui_unused = 4, // for avoid compilation errors
+#if PACKETVER >= 20171122
+ ZC_TIPBOX_UI = 5,
+ ZC_RENEWQUEST_UI = 6,
+ ZC_ATTENDANCE_UI = 7
+#endif
+};
+
+/**
+* Client to server open ui request types (packet 0x0a68)
+**/
+enum cz_ui_types {
+ CZ_STYLIST_UI = 1,
+ CZ_MACRO_REGISTER_UI = 2,
+ CZ_MACRO_DETECTOR_UI = 3,
+ CZ_ATTENDANCE_UI = 5
+};
+
+/**
+* Private Airship Responds
+**/
+enum private_airship {
+ P_AIRSHIP_NONE,
+ P_AIRSHIP_RETRY,
+ P_AIRSHIP_ITEM_NOT_ENOUGH,
+ P_AIRSHIP_INVALID_END_MAP,
+ P_AIRSHIP_INVALID_START_MAP,
+ P_AIRSHIP_ITEM_INVALID
+};
+
+/** Pet Evolution Results */
+enum pet_evolution_result {
+ PET_EVOL_UNKNOWN = 0x0,
+ PET_EVOL_NO_CALLPET = 0x1,
+ PET_EVOL_NO_PETEGG = 0x2,
+ PET_EVOL_NO_RECIPE = 0x3,
+ PET_EVOL_NO_MATERIAL = 0x4,
+ PET_EVOL_RG_FAMILIAR = 0x5,
+ PET_EVOL_SUCCESS = 0x6,
+};
+
+/**
+ * Inventory type for clients 2018-09-12 RE +
+ **/
+enum inventory_type {
+ INVTYPE_INVENTORY = 0,
+ INVTYPE_CART = 1,
+ INVTYPE_STORAGE = 2,
+ INVTYPE_GUILD_STORAGE = 3,
+};
/**
* Structures
**/
typedef void (*pFunc)(int, struct map_session_data *); //cant help but put it first
struct s_packet_db {
- short len;
pFunc func;
short pos[MAX_PACKET_POS];
};
struct hCSData {
- unsigned short id;
+ int id;
unsigned int price;
};
@@ -581,7 +646,60 @@ struct cdelayed_damage {
struct merge_item {
int16 position;
- int16 nameid;
+ int nameid;
+};
+
+/* attendance data */
+struct attendance_entry {
+ int nameid;
+ int qty;
+};
+
+/* Stylist data [Asheraf/Hercules]*/
+struct stylist_data_entry {
+ int16 id;
+ int32 zeny;
+ int itemid;
+ int boxid;
+ bool allow_doram;
+};
+VECTOR_DECL(struct stylist_data_entry) stylist_data[MAX_STYLIST_TYPE];
+
+struct barter_itemlist_entry {
+ int addId;
+ int addAmount;
+ int removeIndex;
+ int shopIndex;
+};
+
+VECTOR_STRUCT_DECL(barteritemlist, struct barter_itemlist_entry);
+
+/**
+* Stylist Shop Responds
+**/
+enum stylist_shop {
+ STYLIST_SHOP_SUCCESS,
+ STYLIST_SHOP_FAILURE
+};
+
+enum memorial_dungeon_command {
+ COMMAND_MEMORIALDUNGEON_DESTROY_FORCE = 0x3,
+};
+
+enum expand_inventory {
+ EXPAND_INVENTORY_ASK_CONFIRMATION = 0,
+ EXPAND_INVENTORY_FAILED = 1,
+ EXPAND_INVENTORY_OTHER_WORK = 2,
+ EXPAND_INVENTORY_MISSING_ITEM = 3,
+ EXPAND_INVENTORY_MAX_SIZE = 4
+};
+
+enum expand_inventory_result {
+ EXPAND_INVENTORY_RESULT_SUCCESS = 0,
+ EXPAND_INVENTORY_RESULT_FAILED = 1,
+ EXPAND_INVENTORY_RESULT_OTHER_WORK = 2,
+ EXPAND_INVENTORY_RESULT_MISSING_ITEM = 3,
+ EXPAND_INVENTORY_RESULT_MAX_SIZE = 4
};
/**
@@ -594,6 +712,7 @@ struct clif_interface {
uint16 map_port;
char map_ip_str[128];
int map_fd;
+ int cmd;
/* for clif_clearunit_delayed */
struct eri *delay_clearunit_ers;
/* Cash Shop [Ind/Hercules] */
@@ -613,6 +732,8 @@ struct clif_interface {
bool ally_only;
/* */
struct eri *delayed_damage_ers;
+ /* */
+ VECTOR_DECL(struct attendance_entry) attendance_data;
/* core */
int (*init) (bool minimal);
void (*final) (void);
@@ -629,6 +750,7 @@ struct clif_interface {
unsigned short (*decrypt_cmd) ( int cmd, struct map_session_data *sd );
/* auth */
void (*authok) (struct map_session_data *sd);
+ void (*auth_error) (int fd, int errorCode);
void (*authrefuse) (int fd, uint8 error_code);
void (*authfail_fd) (int fd, int type);
void (*charselectok) (int id, uint8 ok);
@@ -639,6 +761,7 @@ struct clif_interface {
void (*dropitem) (struct map_session_data *sd,int n,int amount);
void (*delitem) (struct map_session_data *sd,int n,int amount, short reason);
void (*takeitem) (struct block_list* src, struct block_list* dst);
+ void (*item_movefailed) (struct map_session_data *sd, int n);
void (*item_equip) (short idx, struct EQUIPITEM_INFO *p, struct item *i, struct item_data *id, int eqp_pos);
void (*item_normal) (short idx, struct NORMALITEM_INFO *p, struct item *i, struct item_data *id);
void (*arrowequip) (struct map_session_data *sd,int val);
@@ -649,18 +772,18 @@ struct clif_interface {
void (*equipitemack) (struct map_session_data *sd,int n,int pos,enum e_EQUIP_ITEM_ACK result);
void (*unequipitemack) (struct map_session_data *sd,int n,int pos,enum e_UNEQUIP_ITEM_ACK result);
void (*useitemack) (struct map_session_data *sd,int index,int amount,bool ok);
- void (*addcards) (unsigned char* buf, struct item* item);
- void (*addcards2) (unsigned short *cards, struct item* item);
+ void (*addcards) (struct EQUIPSLOTINFO *buf, struct item* item);
void (*item_sub) (unsigned char *buf, int n, struct item *i, struct item_data *id, int equip);
void (*getareachar_item) (struct map_session_data* sd,struct flooritem_data* fitem);
void (*cart_additem_ack) (struct map_session_data *sd, int flag);
void (*cashshop_load) (void);
- void (*package_announce) (struct map_session_data *sd, unsigned short nameid, unsigned short containerid);
- void (*item_drop_announce) (struct map_session_data *sd, unsigned short nameid, char *monsterName);
+ void (*cashShopSchedule) (int fd, struct map_session_data *sd);
+ void (*package_announce) (struct map_session_data *sd, int nameid, int containerid);
+ void (*item_drop_announce) (struct map_session_data *sd, int nameid, char *monsterName);
/* unit-related */
- void (*clearunit_single) (int id, clr_type type, int fd);
- void (*clearunit_area) (struct block_list* bl, clr_type type);
- void (*clearunit_delayed) (struct block_list* bl, clr_type type, int64 tick);
+ void (*clearunit_single) (int id, enum clr_type type, int fd);
+ void (*clearunit_area) (struct block_list* bl, enum clr_type type);
+ void (*clearunit_delayed) (struct block_list* bl, enum clr_type type, int64 tick);
void (*walkok) (struct map_session_data *sd);
void (*move) (struct unit_data *ud);
void (*move2) (struct block_list *bl, struct view_data *vd, struct unit_data *ud);
@@ -690,6 +813,7 @@ struct clif_interface {
bool (*spawn) (struct block_list *bl);
/* map-related */
void (*changemap) (struct map_session_data *sd, short m, int x, int y);
+ void (*changemap_airship) (struct map_session_data *sd, short m, int x, int y);
void (*changemapcell) (int fd, int16 m, int x, int y, int type, enum send_target target);
void (*map_property) (struct map_session_data* sd, enum map_property property);
void (*pvpset) (struct map_session_data *sd, int pvprank, int pvpnum,int type);
@@ -698,7 +822,8 @@ struct clif_interface {
void (*map_type) (struct map_session_data* sd, enum map_type type);
void (*maptypeproperty2) (struct block_list *bl,enum send_target t);
/* multi-map-server */
- void (*changemapserver) (struct map_session_data* sd, unsigned short map_index, int x, int y, uint32 ip, uint16 port);
+ void (*changemapserver) (struct map_session_data* sd, unsigned short map_index, int x, int y, uint32 ip, uint16 port, char *dnsHost);
+ void (*changemapserver_airship) (struct map_session_data* sd, unsigned short map_index, int x, int y, uint32 ip, uint16 port);
/* npc-shop-related */
void (*npcbuysell) (struct map_session_data* sd, int id);
void (*buylist) (struct map_session_data *sd, struct npc_data *nd);
@@ -735,7 +860,7 @@ struct clif_interface {
int (*insight) (struct block_list *bl,va_list ap);
int (*outsight) (struct block_list *bl,va_list ap);
void (*skillcastcancel) (struct block_list* bl);
- void (*skill_fail) (struct map_session_data *sd,uint16 skill_id,enum useskill_fail_cause cause,int btype);
+ void (*skill_fail) (struct map_session_data *sd, uint16 skill_id, enum useskill_fail_cause cause, int btype, int32 item_id);
void (*skill_cooldown) (struct map_session_data *sd, uint16 skill_id, unsigned int duration);
void (*skill_memomessage) (struct map_session_data* sd, int type);
void (*skill_mapinfomessage) (struct map_session_data *sd, int type);
@@ -745,9 +870,18 @@ struct clif_interface {
void (*combo_delay) (struct block_list *bl,int wait);
void (*status_change) (struct block_list *bl,int type,int flag,int tick,int val1, int val2, int val3);
void (*insert_card) (struct map_session_data *sd,int idx_equip,int idx_card,int flag);
- void (*inventorylist) (struct map_session_data *sd);
- void (*equiplist) (struct map_session_data *sd);
- void (*cartlist) (struct map_session_data *sd);
+ void (*inventoryList) (struct map_session_data *sd);
+ void (*inventoryItems) (struct map_session_data *sd, enum inventory_type type);
+ void (*equipList) (struct map_session_data *sd);
+ void (*equipItems) (struct map_session_data *sd, enum inventory_type type);
+ void (*cartList) (struct map_session_data *sd);
+ void (*cartItems) (struct map_session_data *sd, enum inventory_type type);
+ void (*inventoryExpansionInfo) (struct map_session_data *sd);
+ void (*inventoryExpandAck) (struct map_session_data *sd, enum expand_inventory result, int itemId);
+ void (*inventoryExpandResult) (struct map_session_data *sd, enum expand_inventory_result result);
+ void (*pInventoryExpansion) (int fd, struct map_session_data *sd);
+ void (*pInventoryExpansionConfirmed) (int fd, struct map_session_data *sd);
+ void (*pInventoryExpansionRejected) (int fd, struct map_session_data *sd);
void (*favorite_item) (struct map_session_data* sd, unsigned short index);
void (*clearcart) (int fd);
void (*item_identify_list) (struct map_session_data *sd);
@@ -767,7 +901,7 @@ struct clif_interface {
void (*hpmeter_single) (int fd, int id, unsigned int hp, unsigned int maxhp);
int (*hpmeter_sub) (struct block_list *bl, va_list ap);
void (*upgrademessage) (int fd, int result, int item_id);
- void (*get_weapon_view) (struct map_session_data* sd, unsigned short *rhand, unsigned short *lhand);
+ void (*get_weapon_view) (struct map_session_data* sd, int *rhand, int *lhand);
void (*gospel_info) (struct map_session_data *sd, int type);
void (*feel_req) (int fd, struct map_session_data *sd, uint16 skill_lv);
void (*starskill) (struct map_session_data* sd, const char* mapname, int monster_id, unsigned char star, unsigned char result);
@@ -776,13 +910,14 @@ struct clif_interface {
void (*mission_info) (struct map_session_data *sd, int mob_id, unsigned char progress);
void (*feel_hate_reset) (struct map_session_data *sd);
void (*partytickack) (struct map_session_data* sd, bool flag);
- void (*equiptickack) (struct map_session_data* sd, int flag);
+ void (*zc_config) (struct map_session_data *sd, enum CZ_CONFIG type, int flag);
void (*viewequip_ack) (struct map_session_data* sd, struct map_session_data* tsd);
void (*equpcheckbox) (struct map_session_data* sd);
- void (*displayexp) (struct map_session_data *sd, unsigned int exp, char type, bool is_quest);
+ void (*displayexp) (struct map_session_data *sd, uint64 exp, char type, bool is_quest);
void (*font) (struct map_session_data *sd);
void (*progressbar) (struct map_session_data * sd, unsigned int color, unsigned int second);
void (*progressbar_abort) (struct map_session_data * sd);
+ void (*progressbar_unit) (struct block_list *bl, uint32 color, uint32 time);
void (*showdigit) (struct map_session_data* sd, unsigned char type, int value);
int (*elementalconverter_list) (struct map_session_data *sd);
int (*spellbook_list) (struct map_session_data *sd);
@@ -839,6 +974,8 @@ struct clif_interface {
void (*specialeffect) (struct block_list* bl, int type, enum send_target target);
void (*specialeffect_single) (struct block_list* bl, int type, int fd);
void (*specialeffect_value) (struct block_list* bl, int effect_id, int num, send_target target);
+ void (*removeSpecialEffect) (struct block_list *bl, int effectId, enum send_target target);
+ void (*removeSpecialEffect_single) (struct block_list *bl, int effectId, struct block_list *targetBl);
void (*millenniumshield) (struct block_list *bl, short shields );
void (*spiritcharm) (struct map_session_data *sd);
void (*charm_single) (int fd, struct map_session_data *sd);
@@ -866,10 +1003,15 @@ struct clif_interface {
void (*broadcast2) (struct block_list *bl, const char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY, enum send_target target);
void (*messagecolor_self) (int fd, uint32 color, const char *msg);
void (*messagecolor) (struct block_list* bl, uint32 color, const char* msg);
- void (*disp_overhead) (struct block_list *bl, const char* mes);
- void (*msgtable) (struct map_session_data* sd, unsigned short msg_id);
- void (*msgtable_num) (struct map_session_data *sd, unsigned short msg_id, int value);
- void (*msgtable_skill) (struct map_session_data *sd, uint16 skill_id, int msg_id);
+ void (*serviceMessageColor) (struct map_session_data *sd, uint32 color, const char *msg);
+ void (*disp_overhead) (struct block_list *bl, const char *mes, enum send_target target, struct block_list *target_bl);
+ void (*notify_playerchat) (struct block_list *bl, const char *mes);
+ void (*msgtable) (struct map_session_data* sd, enum clif_messages msg_id);
+ void (*msgtable_num) (struct map_session_data *sd, enum clif_messages msg_id, int value);
+ void (*msgtable_skill) (struct map_session_data *sd, uint16 skill_id, enum clif_messages msg_id);
+ void (*msgtable_str) (struct map_session_data *sd, enum clif_messages, const char *value);
+ void (*msgtable_str_color) (struct map_session_data *sd, enum clif_messages, const char *value, uint32 color);
+ void (*msgtable_color) (struct map_session_data *sd, enum clif_messages, uint32 color);
void (*message) (const int fd, const char* mes);
void (*messageln) (const int fd, const char* mes);
/* message+s(printf) */
@@ -896,9 +1038,14 @@ struct clif_interface {
void (*vendinglist) (struct map_session_data* sd, unsigned int id, struct s_vending* vending_list);
void (*buyvending) (struct map_session_data* sd, int index, int amount, int fail);
void (*openvending) (struct map_session_data* sd, int id, struct s_vending* vending_list);
+ void (*openvendingAck) (int fd, int result);
void (*vendingreport) (struct map_session_data* sd, int index, int amount, uint32 char_id, int zeny);
/* storage handling */
- void (*storagelist) (struct map_session_data* sd, struct item* items, int items_length);
+ void (*storageList) (struct map_session_data* sd, struct item* items, int items_length);
+ void (*guildStorageList) (struct map_session_data* sd, struct item* items, int items_length);
+ void (*storageItems) (struct map_session_data* sd, enum inventory_type type, struct item* items, int items_length);
+ void (*inventoryStart) (struct map_session_data* sd, enum inventory_type type, const char* name);
+ void (*inventoryEnd) (struct map_session_data* sd, enum inventory_type type);
void (*updatestorageamount) (struct map_session_data* sd, int amount, int max_amount);
void (*storageitemadded) (struct map_session_data* sd, struct item* i, int index, int amount);
void (*storageitemremoved) (struct map_session_data* sd, int index, int amount);
@@ -913,6 +1060,7 @@ struct clif_interface {
void (*party_created) (struct map_session_data *sd,int result);
void (*party_member_info) (struct party_data *p, struct map_session_data *sd);
void (*party_info) (struct party_data* p, struct map_session_data *sd);
+ void (*party_job_and_level) (struct map_session_data *sd);
void (*party_invite) (struct map_session_data *sd,struct map_session_data *tsd);
void (*party_inviteack) (struct map_session_data* sd, const char* nick, int result);
void (*party_option) (struct party_data *p,struct map_session_data *sd,int flag);
@@ -937,8 +1085,8 @@ struct clif_interface {
void (*guild_memberlogin_notice) (struct guild *g,int idx,int flag);
void (*guild_invite) (struct map_session_data *sd,struct guild *g);
void (*guild_inviteack) (struct map_session_data *sd,int flag);
- void (*guild_leave) (struct map_session_data *sd,const char *name,const char *mes);
- void (*guild_expulsion) (struct map_session_data* sd, const char* name, const char* mes, int account_id);
+ void (*guild_leave) (struct map_session_data *sd, const char *name, int char_id, const char *mes);
+ void (*guild_expulsion) (struct map_session_data* sd, const char* name, int char_id, const char* mes, int account_id);
void (*guild_positionchanged) (struct guild *g,int idx);
void (*guild_memberpositionchanged) (struct guild *g,int idx);
void (*guild_emblem) (struct map_session_data *sd,struct guild *g);
@@ -956,6 +1104,9 @@ struct clif_interface {
void (*guild_positionnamelist) (struct map_session_data *sd);
void (*guild_positioninfolist) (struct map_session_data *sd);
void (*guild_expulsionlist) (struct map_session_data* sd);
+ void (*guild_set_position) (struct map_session_data *sd);
+ void (*guild_position_selected) (struct map_session_data *sd);
+
bool (*validate_emblem) (const uint8* emblem, unsigned long emblem_len);
/* battleground-specific */
void (*bg_hp) (struct map_session_data *sd);
@@ -1004,6 +1155,7 @@ struct clif_interface {
void (*quest_delete) (struct map_session_data *sd, int quest_id);
void (*quest_update_status) (struct map_session_data *sd, int quest_id, bool active);
void (*quest_update_objective) (struct map_session_data *sd, struct quest *qd);
+ void (*quest_notify_objective) (struct map_session_data *sd, struct quest *qd);
void (*quest_show_event) (struct map_session_data *sd, struct block_list *bl, short state, short color);
/* mail-related */
void (*mail_window) (int fd, int flag);
@@ -1058,9 +1210,9 @@ struct clif_interface {
void (*buyingstore_disappear_entry_single) (struct map_session_data* sd, struct map_session_data* pl_sd);
void (*buyingstore_itemlist) (struct map_session_data* sd, struct map_session_data* pl_sd);
void (*buyingstore_trade_failed_buyer) (struct map_session_data* sd, short result);
- void (*buyingstore_update_item) (struct map_session_data* sd, unsigned short nameid, unsigned short amount, uint32 char_id, int zeny);
+ void (*buyingstore_update_item) (struct map_session_data* sd, int nameid, unsigned short amount, uint32 char_id, int zeny);
void (*buyingstore_delete_item) (struct map_session_data* sd, short index, unsigned short amount, int price);
- void (*buyingstore_trade_failed_seller) (struct map_session_data* sd, short result, unsigned short nameid);
+ void (*buyingstore_trade_failed_seller) (struct map_session_data* sd, short result, int nameid);
/* search store-related */
void (*search_store_info_ack) (struct map_session_data* sd);
void (*search_store_info_failed) (struct map_session_data* sd, unsigned char reason);
@@ -1103,7 +1255,7 @@ struct clif_interface {
void (*npc_market_purchase_ack) (struct map_session_data *sd, const struct itemlist *item_list, unsigned char response);
/* */
bool (*parse_roulette_db) (void);
- void (*roulette_generate_ack) (struct map_session_data *sd, unsigned char result, short stage, short prizeIdx, short bonusItemID);
+ void (*roulette_generate_ack) (struct map_session_data *sd, enum GENERATE_ROULETTE_ACK result, short stage, short prizeIdx, int bonusItemID);
/* Merge Items */
void (*openmergeitem) (int fd, struct map_session_data *sd);
void (*cancelmergeitem) (int fd, struct map_session_data *sd);
@@ -1113,6 +1265,13 @@ struct clif_interface {
bool (*isdisguised) (struct block_list* bl);
void (*navigate_to) (struct map_session_data *sd, const char* mapname, uint16 x, uint16 y, uint8 flag, bool hideWindow, uint16 mob_id);
unsigned char (*bl_type) (struct block_list *bl);
+ /* Achievement System */
+ void (*achievement_send_list) (int fd, struct map_session_data *sd);
+ void (*achievement_send_update) (int fd, struct map_session_data *sd, const struct achievement_data *ad);
+ void (*pAchievementGetReward) (int fd, struct map_session_data *sd);
+ void (*achievement_reward_ack) (int fd, struct map_session_data *sd, const struct achievement_data *ad);
+ void (*change_title_ack) (int fd, struct map_session_data *sd, int title_id);
+ void (*pChangeTitle) (int fd, struct map_session_data *sd);
/*------------------------
*- Parse Incoming Packet
*------------------------*/
@@ -1162,7 +1321,10 @@ struct clif_interface {
void (*pChangeCart) (int fd,struct map_session_data *sd);
void (*pStatusUp) (int fd,struct map_session_data *sd);
void (*pSkillUp) (int fd,struct map_session_data *sd);
+ void (*useSkillToIdReal) (int fd, struct map_session_data *sd, int skill_id, int skill_lv, int target_id);
void (*pUseSkillToId) (int fd, struct map_session_data *sd);
+ void (*pStartUseSkillToId) (int fd, struct map_session_data *sd);
+ void (*pStopUseSkillToId) (int fd, struct map_session_data *sd);
void (*pUseSkillToId_homun) (struct homun_data *hd, struct map_session_data *sd, int64 tick, uint16 skill_id, uint16 skill_lv, int target_id);
void (*pUseSkillToId_mercenary) (struct mercenary_data *md, struct map_session_data *sd, int64 tick, uint16 skill_id, uint16 skill_lv, int target_id);
void (*pUseSkillToPos) (int fd, struct map_session_data *sd);
@@ -1296,7 +1458,7 @@ struct clif_interface {
void (*pAdopt_request) (int fd, struct map_session_data *sd);
void (*pAdopt_reply) (int fd, struct map_session_data *sd);
void (*pViewPlayerEquip) (int fd, struct map_session_data* sd);
- void (*pEquipTick) (int fd, struct map_session_data* sd);
+ void (*p_cz_config) (int fd, struct map_session_data *sd);
void (*pquestStateAck) (int fd, struct map_session_data * sd);
void (*pmercenary_action) (int fd, struct map_session_data* sd);
void (*pBattleChat) (int fd, struct map_session_data* sd);
@@ -1314,6 +1476,7 @@ struct clif_interface {
void (*pSkillSelectMenu) (int fd, struct map_session_data *sd);
void (*pMoveItem) (int fd, struct map_session_data *sd);
void (*pDull) (int fd, struct map_session_data *sd);
+ void (*p_cz_blocking_play_cancel) (int fd, struct map_session_data *sd);
/* BGQueue */
void (*pBGQueueRegister) (int fd, struct map_session_data *sd);
void (*pBGQueueCheckState) (int fd, struct map_session_data *sd);
@@ -1351,7 +1514,7 @@ struct clif_interface {
void (*pNPCMarketClosed) (int fd, struct map_session_data *sd);
void (*pNPCMarketPurchase) (int fd, struct map_session_data *sd);
/* */
- void (*add_random_options) (unsigned char* buf, struct item* item);
+ int (*add_item_options) (struct ItemOptions *buf, const struct item *it);
void (*pHotkeyRowShift) (int fd, struct map_session_data *sd);
void (*dressroom_open) (struct map_session_data *sd, int view);
void (*pOneClick_ItemIdentify) (int fd,struct map_session_data *sd);
@@ -1360,6 +1523,82 @@ struct clif_interface {
void (*pSelectCart) (int fd, struct map_session_data *sd);
const char *(*get_bl_name) (const struct block_list *bl);
+
+ /* RoDEX */
+ void (*pRodexOpenWriteMail) (int fd, struct map_session_data *sd);
+ void (*rodex_open_write_mail) (int fd, const char *receiver_name, int8 result);
+ void (*pRodexAddItem) (int fd, struct map_session_data *sd);
+ void (*rodex_add_item_result) (struct map_session_data *sd, int16 idx, int16 amount, enum rodex_add_item result);
+ void (*pRodexRemoveItem) (int fd, struct map_session_data *sd);
+ void (*rodex_remove_item_result) (struct map_session_data *sd, int16 idx, int16 amount);
+ void (*pRodexSendMail) (int fd, struct map_session_data *sd);
+ void (*rodex_send_mail_result) (int fd, struct map_session_data *sd, int8 result);
+ void (*rodex_send_maillist) (int fd, struct map_session_data *sd, int8 open_type, int64 page_start);
+ void (*rodex_send_refresh) (int fd, struct map_session_data *sd, int8 open_type, int count);
+ void (*rodex_send_mails_all) (int fd, struct map_session_data *sd, int64 mail_id);
+ void (*pRodexReadMail) (int fd, struct map_session_data *sd);
+ void (*rodex_read_mail) (struct map_session_data *sd, int8 opentype, struct rodex_message *msg);
+ void (*pRodexNextMaillist) (int fd, struct map_session_data *sd);
+ void (*pRodexCloseMailbox) (int fd, struct map_session_data *sd);
+ void (*pRodexCancelWriteMail) (int fd, struct map_session_data *sd);
+ void (*pRodexOpenMailbox) (int fd, struct map_session_data *sd);
+ void (*pRodexCheckName) (int fd, struct map_session_data *sd);
+ void (*rodex_checkname_result) (struct map_session_data *sd, int char_id, short class_, int base_level, const char *name);
+ void (*pRodexDeleteMail) (int fd, struct map_session_data *sd);
+ void (*rodex_delete_mail) (struct map_session_data *sd, int8 opentype, int64 mail_id);
+ void (*pRodexRefreshMaillist) (int fd, struct map_session_data *sd);
+ void (*pRodexRequestZeny) (int fd, struct map_session_data *sd);
+ void (*rodex_request_zeny) (struct map_session_data *sd, int8 opentype, int64 mail_id, enum rodex_get_zeny result);
+ void (*pRodexRequestItems) (int fd, struct map_session_data *sd);
+ void (*rodex_request_items) (struct map_session_data *sd, int8 opentype, int64 mail_id, enum rodex_get_items result);
+ void (*rodex_icon) (int fd, bool show);
+ void (*skill_scale) (struct block_list *bl, int src_id, int x, int y, uint16 skill_id, uint16 skill_lv, int casttime);
+ /* Clan System */
+ void (*clan_basicinfo) (struct map_session_data *sd);
+ void (*clan_onlinecount) (struct clan *c);
+ void (*clan_leave) (struct map_session_data *sd);
+ void (*clan_message) (struct clan *c, const char *mes, int len);
+ void (*pClanMessage) (int fd, struct map_session_data* sd);
+ /* Hat Effect */
+ void (*hat_effect) (struct block_list *bl, struct block_list *tbl, enum send_target target);
+ void (*hat_effect_single) (struct block_list *bl, uint16 effectId, bool enable);
+ void (*overweight_percent) (struct map_session_data *sd);
+ void (*pChangeDress) (int fd, struct map_session_data *sd);
+
+ bool (*pAttendanceDB) (void);
+ bool (*attendancedb_libconfig_sub) (struct config_setting_t *it, int n, const char *source);
+ bool (*attendance_timediff) (struct map_session_data *sd);
+ time_t (*attendance_getendtime) (void);
+ void (*pOpenUIRequest) (int fd, struct map_session_data *sd);
+ void (*open_ui) (struct map_session_data *sd, enum cz_ui_types uiType);
+ void (*pAttendanceRewardRequest) (int fd, struct map_session_data *sd);
+ void (*ui_action) (struct map_session_data *sd, int32 UIType, int32 data);
+ void (*pPrivateAirshipRequest) (int fd, struct map_session_data *sd);
+ void (*PrivateAirshipResponse) (struct map_session_data *sd, uint32 flag);
+
+ void (*stylist_vector_init) (void);
+ void (*stylist_vector_clear) (void);
+ bool (*stylist_read_db_libconfig) (void);
+ bool (*stylist_read_db_libconfig_sub) (struct config_setting_t *it, int idx, const char *source);
+ bool (*style_change_validate_requirements) (struct map_session_data *sd, int type, int16 idx);
+ void (*stylist_send_rodexitem) (struct map_session_data *sd, int itemid);
+ void (*pReqStyleChange) (int fd, struct map_session_data *sd);
+ void (*pReqStyleChange2) (int fd, struct map_session_data *sd);
+ void (*cz_req_style_change_sub) (struct map_session_data *sd, int type, int16 idx, bool isitem);
+ void (*style_change_response) (struct map_session_data *sd, enum stylist_shop flag);
+ void (*pPetEvolution) (int fd, struct map_session_data *sd);
+ void (*petEvolutionResult) (int fd, enum pet_evolution_result result);
+ void (*party_dead_notification) (struct map_session_data *sd);
+ void (*pMemorialDungeonCommand) (int fd, struct map_session_data *sd);
+ void (*camera_showWindow) (struct map_session_data *sd);
+ void (*camera_change) (struct map_session_data *sd, float range, float rotation, float latitude, enum send_target target);
+ void (*pCameraInfo) (int fd, struct map_session_data *sd);
+ void (*item_preview) (struct map_session_data *sd, int n);
+ bool (*enchant_equipment) (struct map_session_data *sd, enum equip_pos pos, int cardSlot, int cardId);
+ void (*pReqRemainTime) (int fd, struct map_session_data *sd);
+ void (*npc_barter_open) (struct map_session_data *sd, struct npc_data *nd);
+ void (*pNPCBarterClosed) (int fd, struct map_session_data *sd);
+ void (*pNPCBarterPurchase) (int fd, struct map_session_data *sd);
};
#ifdef HERCULES_CORE
diff --git a/src/map/constants.inc b/src/map/constants.inc
new file mode 100644
index 000000000..355e2a825
--- /dev/null
+++ b/src/map/constants.inc
@@ -0,0 +1,1029 @@
+ script->constdb_comment("Status Icons");
+
+ script->set_constant("SI_BLANK", SI_BLANK, false, false);
+
+ script->set_constant("SI_PROVOKE", SI_PROVOKE, false, false);
+ script->set_constant("SI_ENDURE", SI_ENDURE, false, false);
+ script->set_constant("SI_TWOHANDQUICKEN", SI_TWOHANDQUICKEN, false, false);
+ script->set_constant("SI_CONCENTRATION", SI_CONCENTRATION, false, false);
+ script->set_constant("SI_HIDING", SI_HIDING, false, false);
+ script->set_constant("SI_CLOAKING", SI_CLOAKING, false, false);
+ script->set_constant("SI_ENCHANTPOISON", SI_ENCHANTPOISON, false, false);
+ script->set_constant("SI_POISONREACT", SI_POISONREACT, false, false);
+ script->set_constant("SI_QUAGMIRE", SI_QUAGMIRE, false, false);
+ script->set_constant("SI_ANGELUS", SI_ANGELUS, false, false);
+ script->set_constant("SI_BLESSING", SI_BLESSING, false, false);
+ script->set_constant("SI_CRUCIS", SI_CRUCIS, false, false);
+ script->set_constant("SI_INC_AGI", SI_INC_AGI, false, false);
+ script->set_constant("SI_DEC_AGI", SI_DEC_AGI, false, false);
+ script->set_constant("SI_SLOWPOISON", SI_SLOWPOISON, false, false);
+ script->set_constant("SI_IMPOSITIO", SI_IMPOSITIO, false, false);
+ script->set_constant("SI_SUFFRAGIUM", SI_SUFFRAGIUM, false, false);
+ script->set_constant("SI_ASPERSIO", SI_ASPERSIO, false, false);
+ script->set_constant("SI_BENEDICTIO", SI_BENEDICTIO, false, false);
+ script->set_constant("SI_KYRIE", SI_KYRIE, false, false);
+ script->set_constant("SI_MAGNIFICAT", SI_MAGNIFICAT, false, false);
+ script->set_constant("SI_GLORIA", SI_GLORIA, false, false);
+ script->set_constant("SI_LEXAETERNA", SI_LEXAETERNA, false, false);
+ script->set_constant("SI_ADRENALINE", SI_ADRENALINE, false, false);
+ script->set_constant("SI_WEAPONPERFECT", SI_WEAPONPERFECT, false, false);
+ script->set_constant("SI_OVERTHRUST", SI_OVERTHRUST, false, false);
+ script->set_constant("SI_MAXIMIZE", SI_MAXIMIZE, false, false);
+ script->set_constant("SI_RIDING", SI_RIDING, false, false);
+ script->set_constant("SI_FALCON", SI_FALCON, false, false);
+ script->set_constant("SI_TRICKDEAD", SI_TRICKDEAD, false, false);
+ script->set_constant("SI_SHOUT", SI_SHOUT, false, false);
+ script->set_constant("SI_ENERGYCOAT", SI_ENERGYCOAT, false, false);
+ script->set_constant("SI_BROKENARMOR", SI_BROKENARMOR, false, false);
+ script->set_constant("SI_BROKENWEAPON", SI_BROKENWEAPON, false, false);
+ script->set_constant("SI_ILLUSION", SI_ILLUSION, false, false);
+ script->set_constant("SI_WEIGHTOVER50", SI_WEIGHTOVER50, false, false);
+ script->set_constant("SI_WEIGHTOVER90", SI_WEIGHTOVER90, false, false);
+ script->set_constant("SI_ATTHASTE_POTION1", SI_ATTHASTE_POTION1, false, false);
+ script->set_constant("SI_ATTHASTE_POTION2", SI_ATTHASTE_POTION2, false, false);
+ script->set_constant("SI_ATTHASTE_POTION3", SI_ATTHASTE_POTION3, false, false);
+ script->set_constant("SI_ATTHASTE_INFINITY", SI_ATTHASTE_INFINITY, false, false);
+ script->set_constant("SI_MOVHASTE_POTION", SI_MOVHASTE_POTION, false, false);
+ script->set_constant("SI_MOVHASTE_INFINITY", SI_MOVHASTE_INFINITY, false, false);
+ //script->set_constant("SI_AUTOCOUNTER", SI_AUTOCOUNTER, false, false);
+ //script->set_constant("SI_SPLASHER", SI_SPLASHER, false, false);
+ script->set_constant("SI_ANKLESNARE", SI_ANKLESNARE, false, false);
+ script->set_constant("SI_POSTDELAY", SI_POSTDELAY, false, false);
+ //script->set_constant("SI_NOACTION", SI_NOACTION, false, false);
+ //script->set_constant("SI_IMPOSSIBLEPICKUP", SI_IMPOSSIBLEPICKUP, false, false);
+ //script->set_constant("SI_BARRIER", SI_BARRIER, false, false);
+
+ script->set_constant("SI_NOEQUIPWEAPON", SI_NOEQUIPWEAPON, false, false);
+ script->set_constant("SI_NOEQUIPSHIELD", SI_NOEQUIPSHIELD, false, false);
+ script->set_constant("SI_NOEQUIPARMOR", SI_NOEQUIPARMOR, false, false);
+ script->set_constant("SI_NOEQUIPHELM", SI_NOEQUIPHELM, false, false);
+ script->set_constant("SI_PROTECTWEAPON", SI_PROTECTWEAPON, false, false);
+ script->set_constant("SI_PROTECTSHIELD", SI_PROTECTSHIELD, false, false);
+ script->set_constant("SI_PROTECTARMOR", SI_PROTECTARMOR, false, false);
+ script->set_constant("SI_PROTECTHELM", SI_PROTECTHELM, false, false);
+ script->set_constant("SI_AUTOGUARD", SI_AUTOGUARD, false, false);
+ script->set_constant("SI_REFLECTSHIELD", SI_REFLECTSHIELD, false, false);
+ //script->set_constant("SI_DEVOTION", SI_DEVOTION, false, false);
+ script->set_constant("SI_PROVIDENCE", SI_PROVIDENCE, false, false);
+ script->set_constant("SI_DEFENDER", SI_DEFENDER, false, false);
+ //script->set_constant("SI_MAGICROD", SI_MAGICROD, false, false);
+ //script->set_constant("SI_WEAPONPROPERTY", SI_WEAPONPROPERTY, false, false);
+ script->set_constant("SI_AUTOSPELL", SI_AUTOSPELL, false, false);
+ //script->set_constant("SI_SPECIALZONE", SI_SPECIALZONE, false, false);
+ //script->set_constant("SI_MASK", SI_MASK, false, false);
+ script->set_constant("SI_SPEARQUICKEN", SI_SPEARQUICKEN, false, false);
+ //script->set_constant("SI_BDPLAYING", SI_BDPLAYING, false, false);
+ //script->set_constant("SI_WHISTLE", SI_WHISTLE, false, false);
+ //script->set_constant("SI_ASSASSINCROSS", SI_ASSASSINCROSS, false, false);
+ //script->set_constant("SI_POEMBRAGI", SI_POEMBRAGI, false, false);
+ //script->set_constant("SI_APPLEIDUN", SI_APPLEIDUN, false, false);
+ //script->set_constant("SI_HUMMING", SI_HUMMING, false, false);
+ //script->set_constant("SI_DONTFORGETME", SI_DONTFORGETME, false, false);
+ //script->set_constant("SI_FORTUNEKISS", SI_FORTUNEKISS, false, false);
+ //script->set_constant("SI_SERVICEFORYOU", SI_SERVICEFORYOU, false, false);
+ //script->set_constant("SI_RICHMANKIM", SI_RICHMANKIM, false, false);
+ //script->set_constant("SI_ETERNALCHAOS", SI_ETERNALCHAOS, false, false);
+ //script->set_constant("SI_DRUMBATTLEFIELD", SI_DRUMBATTLEFIELD, false, false);
+ //script->set_constant("SI_RINGNIBELUNGEN", SI_RINGNIBELUNGEN, false, false);
+ //script->set_constant("SI_ROKISWEIL", SI_ROKISWEIL, false, false);
+ //script->set_constant("SI_INTOABYSS", SI_INTOABYSS, false, false);
+ //script->set_constant("SI_SIEGFRIED", SI_SIEGFRIED, false, false);
+ //script->set_constant("SI_BLADESTOP", SI_BLADESTOP, false, false);
+ script->set_constant("SI_EXPLOSIONSPIRITS", SI_EXPLOSIONSPIRITS, false, false);
+ script->set_constant("SI_STEELBODY", SI_STEELBODY, false, false);
+ script->set_constant("SI_EXTREMITYFIST", SI_EXTREMITYFIST, false, false);
+ //script->set_constant("SI_COMBOATTACK", SI_COMBOATTACK, false, false);
+ script->set_constant("SI_PROPERTYFIRE", SI_PROPERTYFIRE, false, false);
+ script->set_constant("SI_PROPERTYWATER", SI_PROPERTYWATER, false, false);
+ script->set_constant("SI_PROPERTYWIND", SI_PROPERTYWIND, false, false);
+ script->set_constant("SI_PROPERTYGROUND", SI_PROPERTYGROUND, false, false);
+ //script->set_constant("SI_MAGICATTACK", SI_MAGICATTACK, false, false);
+ script->set_constant("SI_STOP", SI_STOP, false, false);
+ //script->set_constant("SI_WEAPONBRAKER", SI_WEAPONBRAKER, false, false);
+ script->set_constant("SI_PROPERTYUNDEAD", SI_PROPERTYUNDEAD, false, false);
+ //script->set_constant("SI_POWERUP", SI_POWERUP, false, false);
+ //script->set_constant("SI_AGIUP", SI_AGIUP, false, false);
+
+ //script->set_constant("SI_SIEGEMODE", SI_SIEGEMODE, false, false);
+ //script->set_constant("SI_INVISIBLE", SI_INVISIBLE, false, false);
+ //script->set_constant("SI_STATUSONE", SI_STATUSONE, false, false);
+ script->set_constant("SI_AURABLADE", SI_AURABLADE, false, false);
+ script->set_constant("SI_PARRYING", SI_PARRYING, false, false);
+ script->set_constant("SI_LKCONCENTRATION", SI_LKCONCENTRATION, false, false);
+ script->set_constant("SI_TENSIONRELAX", SI_TENSIONRELAX, false, false);
+ script->set_constant("SI_BERSERK", SI_BERSERK, false, false);
+ //script->set_constant("SI_SACRIFICE", SI_SACRIFICE, false, false);
+ //script->set_constant("SI_GOSPEL", SI_GOSPEL, false, false);
+ script->set_constant("SI_ASSUMPTIO", SI_ASSUMPTIO, false, false);
+ //script->set_constant("SI_BASILICA", SI_BASILICA, false, false);
+ script->set_constant("SI_GROUNDMAGIC", SI_GROUNDMAGIC, false, false);
+ script->set_constant("SI_MAGICPOWER", SI_MAGICPOWER, false, false);
+ script->set_constant("SI_EDP", SI_EDP, false, false);
+ script->set_constant("SI_TRUESIGHT", SI_TRUESIGHT, false, false);
+ script->set_constant("SI_WINDWALK", SI_WINDWALK, false, false);
+ script->set_constant("SI_MELTDOWN", SI_MELTDOWN, false, false);
+ script->set_constant("SI_CARTBOOST", SI_CARTBOOST, false, false);
+ //script->set_constant("SI_CHASEWALK", SI_CHASEWALK, false, false);
+ script->set_constant("SI_SWORDREJECT", SI_SWORDREJECT, false, false);
+ script->set_constant("SI_MARIONETTE_MASTER", SI_MARIONETTE_MASTER, false, false);
+ script->set_constant("SI_MARIONETTE", SI_MARIONETTE, false, false);
+ script->set_constant("SI_MOON", SI_MOON, false, false);
+ script->set_constant("SI_BLOODING", SI_BLOODING, false, false);
+ script->set_constant("SI_JOINTBEAT", SI_JOINTBEAT, false, false);
+ //script->set_constant("SI_MINDBREAKER", SI_MINDBREAKER, false, false);
+ //script->set_constant("SI_MEMORIZE", SI_MEMORIZE, false, false);
+ //script->set_constant("SI_FOGWALL", SI_FOGWALL, false, false);
+ //script->set_constant("SI_SPIDERWEB", SI_SPIDERWEB, false, false);
+ script->set_constant("SI_PROTECTEXP", SI_PROTECTEXP, false, false);
+ //script->set_constant("SI_SUB_WEAPONPROPERTY", SI_SUB_WEAPONPROPERTY, false, false);
+ script->set_constant("SI_AUTOBERSERK", SI_AUTOBERSERK, false, false);
+ script->set_constant("SI_RUN", SI_RUN, false, false);
+ script->set_constant("SI_TING", SI_TING, false, false);
+ script->set_constant("SI_STORMKICK_ON", SI_STORMKICK_ON, false, false);
+ script->set_constant("SI_STORMKICK_READY", SI_STORMKICK_READY, false, false);
+ script->set_constant("SI_DOWNKICK_ON", SI_DOWNKICK_ON, false, false);
+ script->set_constant("SI_DOWNKICK_READY", SI_DOWNKICK_READY, false, false);
+ script->set_constant("SI_TURNKICK_ON", SI_TURNKICK_ON, false, false);
+ script->set_constant("SI_TURNKICK_READY", SI_TURNKICK_READY, false, false);
+ script->set_constant("SI_COUNTER_ON", SI_COUNTER_ON, false, false);
+ script->set_constant("SI_COUNTER_READY", SI_COUNTER_READY, false, false);
+ script->set_constant("SI_DODGE_ON", SI_DODGE_ON, false, false);
+ script->set_constant("SI_DODGE_READY", SI_DODGE_READY, false, false);
+ script->set_constant("SI_STRUP", SI_STRUP, false, false);
+ script->set_constant("SI_PROPERTYDARK", SI_PROPERTYDARK, false, false);
+ script->set_constant("SI_ADRENALINE2", SI_ADRENALINE2, false, false);
+ script->set_constant("SI_PROPERTYTELEKINESIS", SI_PROPERTYTELEKINESIS, false, false);
+ script->set_constant("SI_SOULLINK", SI_SOULLINK, false, false);
+
+ script->set_constant("SI_PLUSATTACKPOWER", SI_PLUSATTACKPOWER, false, false);
+ script->set_constant("SI_PLUSMAGICPOWER", SI_PLUSMAGICPOWER, false, false);
+ script->set_constant("SI_DEVIL1", SI_DEVIL1, false, false);
+ script->set_constant("SI_KAITE", SI_KAITE, false, false);
+ //script->set_constant("SI_SWOO", SI_SWOO, false, false);
+ //script->set_constant("SI_STAR2", SI_STAR2, false, false);
+ script->set_constant("SI_KAIZEL", SI_KAIZEL, false, false);
+ script->set_constant("SI_KAAHI", SI_KAAHI, false, false);
+ script->set_constant("SI_KAUPE", SI_KAUPE, false, false);
+ script->set_constant("SI_SMA_READY", SI_SMA_READY, false, false);
+ script->set_constant("SI_SKE", SI_SKE, false, false);
+ script->set_constant("SI_ONEHANDQUICKEN", SI_ONEHANDQUICKEN, false, false);
+ //script->set_constant("SI_FRIEND", SI_FRIEND, false, false);
+ //script->set_constant("SI_FRIENDUP", SI_FRIENDUP, false, false);
+ //script->set_constant("SI_SG_WARM", SI_SG_WARM, false, false);
+ script->set_constant("SI_SG_SUN_WARM", SI_SG_SUN_WARM, false, false);
+ //script->set_constant("SI_SG_MOON_WARM", SI_SG_MOON_WARM, false, false);
+ //script->set_constant("SI_SG_STAR_WARM", SI_SG_STAR_WARM, false, false);
+ //script->set_constant("SI_EMOTION", SI_EMOTION, false, false);
+ script->set_constant("SI_SUN_COMFORT", SI_SUN_COMFORT, false, false);
+ script->set_constant("SI_MOON_COMFORT", SI_MOON_COMFORT, false, false);
+ script->set_constant("SI_STAR_COMFORT", SI_STAR_COMFORT, false, false);
+ //script->set_constant("SI_EXPUP", SI_EXPUP, false, false);
+ //script->set_constant("SI_GDSKILL_BATTLEORDER", SI_GDSKILL_BATTLEORDER, false, false);
+ //script->set_constant("SI_GDSKILL_REGENERATION", SI_GDSKILL_REGENERATION, false, false);
+ //script->set_constant("SI_GDSKILL_POSTDELAY", SI_GDSKILL_POSTDELAY, false, false);
+ //script->set_constant("SI_RESISTHANDICAP", SI_RESISTHANDICAP, false, false);
+ //script->set_constant("SI_MAXHPPERCENT", SI_MAXHPPERCENT, false, false);
+ //script->set_constant("SI_MAXSPPERCENT", SI_MAXSPPERCENT, false, false);
+ //script->set_constant("SI_DEFENCE", SI_DEFENCE, false, false);
+ //script->set_constant("SI_SLOWDOWN", SI_SLOWDOWN, false, false);
+ script->set_constant("SI_PRESERVE", SI_PRESERVE, false, false);
+ script->set_constant("SI_INCSTR", SI_INCSTR, false, false);
+ //script->set_constant("SI_NOT_EXTREMITYFIST", SI_NOT_EXTREMITYFIST, false, false);
+ script->set_constant("SI_CLAIRVOYANCE", SI_CLAIRVOYANCE, false, false);
+ script->set_constant("SI_MOVESLOW_POTION", SI_MOVESLOW_POTION, false, false);
+ script->set_constant("SI_DOUBLECASTING", SI_DOUBLECASTING, false, false);
+ //script->set_constant("SI_GRAVITATION", SI_GRAVITATION, false, false);
+ script->set_constant("SI_OVERTHRUSTMAX", SI_OVERTHRUSTMAX, false, false);
+ //script->set_constant("SI_LONGING", SI_LONGING, false, false);
+ //script->set_constant("SI_HERMODE", SI_HERMODE, false, false);
+ script->set_constant("SI_TAROTCARD", SI_TAROTCARD, false, false);
+ //script->set_constant("SI_HLIF_AVOID", SI_HLIF_AVOID, false, false);
+ //script->set_constant("SI_HFLI_FLEET", SI_HFLI_FLEET, false, false);
+ //script->set_constant("SI_HFLI_SPEED", SI_HFLI_SPEED, false, false);
+ //script->set_constant("SI_HLIF_CHANGE", SI_HLIF_CHANGE, false, false);
+ //script->set_constant("SI_HAMI_BLOODLUST", SI_HAMI_BLOODLUST, false, false);
+ script->set_constant("SI_CR_SHRINK", SI_CR_SHRINK, false, false);
+ script->set_constant("SI_WZ_SIGHTBLASTER", SI_WZ_SIGHTBLASTER, false, false);
+ script->set_constant("SI_DC_WINKCHARM", SI_DC_WINKCHARM, false, false);
+
+ script->set_constant("SI_RG_CCONFINE_M", SI_RG_CCONFINE_M, false, false);
+ script->set_constant("SI_RG_CCONFINE_S", SI_RG_CCONFINE_S, false, false);
+ //script->set_constant("SI_DISABLEMOVE", SI_DISABLEMOVE, false, false);
+ script->set_constant("SI_GS_MADNESSCANCEL", SI_GS_MADNESSCANCEL, false, false);
+ script->set_constant("SI_GS_GATLINGFEVER", SI_GS_GATLINGFEVER, false, false);
+ script->set_constant("SI_EARTHSCROLL", SI_EARTHSCROLL, false, false);
+ script->set_constant("SI_NJ_UTSUSEMI", SI_NJ_UTSUSEMI, false, false);
+ script->set_constant("SI_NJ_BUNSINJYUTSU", SI_NJ_BUNSINJYUTSU, false, false);
+ script->set_constant("SI_NJ_NEN", SI_NJ_NEN, false, false);
+ script->set_constant("SI_GS_ADJUSTMENT", SI_GS_ADJUSTMENT, false, false);
+ script->set_constant("SI_GS_ACCURACY", SI_GS_ACCURACY, false, false);
+ script->set_constant("SI_NJ_SUITON", SI_NJ_SUITON, false, false);
+ //script->set_constant("SI_PET", SI_PET, false, false);
+ //script->set_constant("SI_MENTAL", SI_MENTAL, false, false);
+ //script->set_constant("SI_EXPMEMORY", SI_EXPMEMORY, false, false);
+ //script->set_constant("SI_PERFORMANCE", SI_PERFORMANCE, false, false);
+ //script->set_constant("SI_GAIN", SI_GAIN, false, false);
+ //script->set_constant("SI_GRIFFON", SI_GRIFFON, false, false);
+ //script->set_constant("SI_DRIFT", SI_DRIFT, false, false);
+ //script->set_constant("SI_WALLSHIFT", SI_WALLSHIFT, false, false);
+ //script->set_constant("SI_REINCARNATION", SI_REINCARNATION, false, false);
+ //script->set_constant("SI_PATTACK", SI_PATTACK, false, false);
+ //script->set_constant("SI_PSPEED", SI_PSPEED, false, false);
+ //script->set_constant("SI_PDEFENSE", SI_PDEFENSE, false, false);
+ //script->set_constant("SI_PCRITICAL", SI_PCRITICAL, false, false);
+ //script->set_constant("SI_RANKING", SI_RANKING, false, false);
+ //script->set_constant("SI_PTRIPLE", SI_PTRIPLE, false, false);
+ //script->set_constant("SI_DENERGY", SI_DENERGY, false, false);
+ //script->set_constant("SI_WAVE1", SI_WAVE1, false, false);
+ //script->set_constant("SI_WAVE2", SI_WAVE2, false, false);
+ //script->set_constant("SI_WAVE3", SI_WAVE3, false, false);
+ //script->set_constant("SI_WAVE4", SI_WAVE4, false, false);
+ //script->set_constant("SI_DAURA", SI_DAURA, false, false);
+ //script->set_constant("SI_DFREEZER", SI_DFREEZER, false, false);
+ //script->set_constant("SI_DPUNISH", SI_DPUNISH, false, false);
+ //script->set_constant("SI_DBARRIER", SI_DBARRIER, false, false);
+ //script->set_constant("SI_DWARNING", SI_DWARNING, false, false);
+ //script->set_constant("SI_MOUSEWHEEL", SI_MOUSEWHEEL, false, false);
+ //script->set_constant("SI_DGAUGE", SI_DGAUGE, false, false);
+ //script->set_constant("SI_DACCEL", SI_DACCEL, false, false);
+ //script->set_constant("SI_DBLOCK", SI_DBLOCK, false, false);
+ script->set_constant("SI_FOOD_STR", SI_FOOD_STR, false, false);
+ script->set_constant("SI_FOOD_AGI", SI_FOOD_AGI, false, false);
+ script->set_constant("SI_FOOD_VIT", SI_FOOD_VIT, false, false);
+ script->set_constant("SI_FOOD_DEX", SI_FOOD_DEX, false, false);
+ script->set_constant("SI_FOOD_INT", SI_FOOD_INT, false, false);
+ script->set_constant("SI_FOOD_LUK", SI_FOOD_LUK, false, false);
+ script->set_constant("SI_FOOD_BASICAVOIDANCE", SI_FOOD_BASICAVOIDANCE, false, false);
+ script->set_constant("SI_FOOD_BASICHIT", SI_FOOD_BASICHIT, false, false);
+ script->set_constant("SI_FOOD_CRITICALSUCCESSVALUE", SI_FOOD_CRITICALSUCCESSVALUE, false, false);
+
+ script->set_constant("SI_CASH_PLUSEXP", SI_CASH_PLUSEXP, false, false);
+ script->set_constant("SI_CASH_DEATHPENALTY", SI_CASH_DEATHPENALTY, false, false);
+ script->set_constant("SI_CASH_RECEIVEITEM", SI_CASH_RECEIVEITEM, false, false);
+ script->set_constant("SI_CASH_BOSS_ALARM", SI_CASH_BOSS_ALARM, false, false);
+ //script->set_constant("SI_DA_ENERGY", SI_DA_ENERGY, false, false);
+ //script->set_constant("SI_DA_FIRSTSLOT", SI_DA_FIRSTSLOT, false, false);
+ //script->set_constant("SI_DA_HEADDEF", SI_DA_HEADDEF, false, false);
+ //script->set_constant("SI_DA_SPACE", SI_DA_SPACE, false, false);
+ //script->set_constant("SI_DA_TRANSFORM", SI_DA_TRANSFORM, false, false);
+ //script->set_constant("SI_DA_ITEMREBUILD", SI_DA_ITEMREBUILD, false, false);
+ //script->set_constant("SI_DA_ILLUSION", SI_DA_ILLUSION, false, false);
+ //script->set_constant("SI_DA_DARKPOWER", SI_DA_DARKPOWER, false, false);
+ //script->set_constant("SI_DA_EARPLUG", SI_DA_EARPLUG, false, false);
+ //script->set_constant("SI_DA_CONTRACT", SI_DA_CONTRACT, false, false);
+ //script->set_constant("SI_DA_BLACK", SI_DA_BLACK, false, false);
+ //script->set_constant("SI_DA_MAGICCART", SI_DA_MAGICCART, false, false);
+ //script->set_constant("SI_CRYSTAL", SI_CRYSTAL, false, false);
+ //script->set_constant("SI_DA_REBUILD", SI_DA_REBUILD, false, false);
+ //script->set_constant("SI_DA_EDARKNESS", SI_DA_EDARKNESS, false, false);
+ //script->set_constant("SI_DA_EGUARDIAN", SI_DA_EGUARDIAN, false, false);
+ //script->set_constant("SI_DA_TIMEOUT", SI_DA_TIMEOUT, false, false);
+ script->set_constant("SI_FOOD_STR_CASH", SI_FOOD_STR_CASH, false, false);
+ script->set_constant("SI_FOOD_AGI_CASH", SI_FOOD_AGI_CASH, false, false);
+ script->set_constant("SI_FOOD_VIT_CASH", SI_FOOD_VIT_CASH, false, false);
+ script->set_constant("SI_FOOD_DEX_CASH", SI_FOOD_DEX_CASH, false, false);
+ script->set_constant("SI_FOOD_INT_CASH", SI_FOOD_INT_CASH, false, false);
+ script->set_constant("SI_FOOD_LUK_CASH", SI_FOOD_LUK_CASH, false, false);
+ script->set_constant("SI_MER_FLEE", SI_MER_FLEE, false, false);
+ script->set_constant("SI_MER_ATK", SI_MER_ATK, false, false);
+ script->set_constant("SI_MER_HP", SI_MER_HP, false, false);
+ script->set_constant("SI_MER_SP", SI_MER_SP, false, false);
+ script->set_constant("SI_MER_HIT", SI_MER_HIT, false, false);
+ script->set_constant("SI_SLOWCAST", SI_SLOWCAST, false, false);
+ //script->set_constant("SI_MAGICMIRROR", SI_MAGICMIRROR, false, false);
+ //script->set_constant("SI_STONESKIN", SI_STONESKIN, false, false);
+ //script->set_constant("SI_ANTIMAGIC", SI_ANTIMAGIC, false, false);
+ script->set_constant("SI_CRITICALWOUND", SI_CRITICALWOUND, false, false);
+ //script->set_constant("SI_NPC_DEFENDER", SI_NPC_DEFENDER, false, false);
+ //script->set_constant("SI_NOACTION_WAIT", SI_NOACTION_WAIT, false, false);
+ script->set_constant("SI_MOVHASTE_HORSE", SI_MOVHASTE_HORSE, false, false);
+ script->set_constant("SI_PROTECT_DEF", SI_PROTECT_DEF, false, false);
+ script->set_constant("SI_PROTECT_MDEF", SI_PROTECT_MDEF, false, false);
+ script->set_constant("SI_HEALPLUS", SI_HEALPLUS, false, false);
+ script->set_constant("SI_S_LIFEPOTION", SI_S_LIFEPOTION, false, false);
+ script->set_constant("SI_L_LIFEPOTION", SI_L_LIFEPOTION, false, false);
+ script->set_constant("SI_CRITICALPERCENT", SI_CRITICALPERCENT, false, false);
+ script->set_constant("SI_PLUSAVOIDVALUE", SI_PLUSAVOIDVALUE, false, false);
+ script->set_constant("SI_ATKER_ASPD", SI_ATKER_ASPD, false, false);
+ script->set_constant("SI_TARGET_ASPD", SI_TARGET_ASPD, false, false);
+ script->set_constant("SI_ATKER_MOVESPEED", SI_ATKER_MOVESPEED, false, false);
+
+ script->set_constant("SI_ATKER_BLOOD", SI_ATKER_BLOOD, false, false);
+ script->set_constant("SI_TARGET_BLOOD", SI_TARGET_BLOOD, false, false);
+ script->set_constant("SI_ARMOR_PROPERTY", SI_ARMOR_PROPERTY, false, false);
+ //script->set_constant("SI_REUSE_LIMIT_A", SI_REUSE_LIMIT_A, false, false);
+ script->set_constant("SI_HELLPOWER", SI_HELLPOWER, false, false);
+ script->set_constant("SI_STEAMPACK", SI_STEAMPACK, false, false);
+ //script->set_constant("SI_REUSE_LIMIT_B", SI_REUSE_LIMIT_B, false, false);
+ //script->set_constant("SI_REUSE_LIMIT_C", SI_REUSE_LIMIT_C, false, false);
+ //script->set_constant("SI_REUSE_LIMIT_D", SI_REUSE_LIMIT_D, false, false);
+ //script->set_constant("SI_REUSE_LIMIT_E", SI_REUSE_LIMIT_E, false, false);
+ //script->set_constant("SI_REUSE_LIMIT_F", SI_REUSE_LIMIT_F, false, false);
+ script->set_constant("SI_INVINCIBLE", SI_INVINCIBLE, false, false);
+ script->set_constant("SI_CASH_PLUSONLYJOBEXP", SI_CASH_PLUSONLYJOBEXP, false, false);
+ script->set_constant("SI_PARTYFLEE", SI_PARTYFLEE, false, false);
+ script->set_constant("SI_ANGEL_PROTECT", SI_ANGEL_PROTECT, false, false);
+ //script->set_constant("SI_ENDURE_MDEF", SI_ENDURE_MDEF, false, false);
+ script->set_constant("SI_ENCHANTBLADE", SI_ENCHANTBLADE, false, false);
+ script->set_constant("SI_DEATHBOUND", SI_DEATHBOUND, false, false);
+ script->set_constant("SI_REFRESH", SI_REFRESH, false, false);
+ script->set_constant("SI_GIANTGROWTH", SI_GIANTGROWTH, false, false);
+ script->set_constant("SI_STONEHARDSKIN", SI_STONEHARDSKIN, false, false);
+ script->set_constant("SI_VITALITYACTIVATION", SI_VITALITYACTIVATION, false, false);
+ script->set_constant("SI_FIGHTINGSPIRIT", SI_FIGHTINGSPIRIT, false, false);
+ script->set_constant("SI_ABUNDANCE", SI_ABUNDANCE, false, false);
+ script->set_constant("SI_REUSE_MILLENNIUMSHIELD", SI_REUSE_MILLENNIUMSHIELD, false, false);
+ script->set_constant("SI_REUSE_CRUSHSTRIKE", SI_REUSE_CRUSHSTRIKE, false, false);
+ script->set_constant("SI_REUSE_REFRESH", SI_REUSE_REFRESH, false, false);
+ script->set_constant("SI_REUSE_STORMBLAST", SI_REUSE_STORMBLAST, false, false);
+ script->set_constant("SI_VENOMIMPRESS", SI_VENOMIMPRESS, false, false);
+ script->set_constant("SI_EPICLESIS", SI_EPICLESIS, false, false);
+ script->set_constant("SI_ORATIO", SI_ORATIO, false, false);
+ script->set_constant("SI_LAUDAAGNUS", SI_LAUDAAGNUS, false, false);
+ script->set_constant("SI_LAUDARAMUS", SI_LAUDARAMUS, false, false);
+ script->set_constant("SI_CLOAKINGEXCEED", SI_CLOAKINGEXCEED, false, false);
+ script->set_constant("SI_HALLUCINATIONWALK", SI_HALLUCINATIONWALK, false, false);
+ script->set_constant("SI_HALLUCINATIONWALK_POSTDELAY", SI_HALLUCINATIONWALK_POSTDELAY, false, false);
+ script->set_constant("SI_RENOVATIO", SI_RENOVATIO, false, false);
+ script->set_constant("SI_WEAPONBLOCKING", SI_WEAPONBLOCKING, false, false);
+ script->set_constant("SI_WEAPONBLOCKING_POSTDELAY", SI_WEAPONBLOCKING_POSTDELAY, false, false);
+ script->set_constant("SI_ROLLINGCUTTER", SI_ROLLINGCUTTER, false, false);
+ script->set_constant("SI_EXPIATIO", SI_EXPIATIO, false, false);
+ script->set_constant("SI_POISONINGWEAPON", SI_POISONINGWEAPON, false, false);
+ script->set_constant("SI_TOXIN", SI_TOXIN, false, false);
+ script->set_constant("SI_PARALYSE", SI_PARALYSE, false, false);
+ script->set_constant("SI_VENOMBLEED", SI_VENOMBLEED, false, false);
+ script->set_constant("SI_MAGICMUSHROOM", SI_MAGICMUSHROOM, false, false);
+ script->set_constant("SI_DEATHHURT", SI_DEATHHURT, false, false);
+ script->set_constant("SI_PYREXIA", SI_PYREXIA, false, false);
+ script->set_constant("SI_OBLIVIONCURSE", SI_OBLIVIONCURSE, false, false);
+ script->set_constant("SI_LEECHESEND", SI_LEECHESEND, false, false);
+
+ script->set_constant("SI_DUPLELIGHT", SI_DUPLELIGHT, false, false);
+ script->set_constant("SI_FROSTMISTY", SI_FROSTMISTY, false, false);
+ script->set_constant("SI_FEARBREEZE", SI_FEARBREEZE, false, false);
+ script->set_constant("SI_ELECTRICSHOCKER", SI_ELECTRICSHOCKER, false, false);
+ script->set_constant("SI_MARSHOFABYSS", SI_MARSHOFABYSS, false, false);
+ script->set_constant("SI_RECOGNIZEDSPELL", SI_RECOGNIZEDSPELL, false, false);
+ script->set_constant("SI_STASIS", SI_STASIS, false, false);
+ script->set_constant("SI_WUGRIDER", SI_WUGRIDER, false, false);
+ script->set_constant("SI_WUGDASH", SI_WUGDASH, false, false);
+ script->set_constant("SI_WUGBITE", SI_WUGBITE, false, false);
+ script->set_constant("SI_CAMOUFLAGE", SI_CAMOUFLAGE, false, false);
+ script->set_constant("SI_ACCELERATION", SI_ACCELERATION, false, false);
+ script->set_constant("SI_HOVERING", SI_HOVERING, false, false);
+ script->set_constant("SI_SPHERE_1", SI_SPHERE_1, false, false);
+ script->set_constant("SI_SPHERE_2", SI_SPHERE_2, false, false);
+ script->set_constant("SI_SPHERE_3", SI_SPHERE_3, false, false);
+ script->set_constant("SI_SPHERE_4", SI_SPHERE_4, false, false);
+ script->set_constant("SI_SPHERE_5", SI_SPHERE_5, false, false);
+ script->set_constant("SI_MVPCARD_TAOGUNKA", SI_MVPCARD_TAOGUNKA, false, false);
+ script->set_constant("SI_MVPCARD_MISTRESS", SI_MVPCARD_MISTRESS, false, false);
+ script->set_constant("SI_MVPCARD_ORCHERO", SI_MVPCARD_ORCHERO, false, false);
+ script->set_constant("SI_MVPCARD_ORCLORD", SI_MVPCARD_ORCLORD, false, false);
+ script->set_constant("SI_OVERHEAT_LIMITPOINT", SI_OVERHEAT_LIMITPOINT, false, false);
+ script->set_constant("SI_OVERHEAT", SI_OVERHEAT, false, false);
+ script->set_constant("SI_SHAPESHIFT", SI_SHAPESHIFT, false, false);
+ script->set_constant("SI_INFRAREDSCAN", SI_INFRAREDSCAN, false, false);
+ script->set_constant("SI_MAGNETICFIELD", SI_MAGNETICFIELD, false, false);
+ script->set_constant("SI_NEUTRALBARRIER", SI_NEUTRALBARRIER, false, false);
+ script->set_constant("SI_NEUTRALBARRIER_MASTER", SI_NEUTRALBARRIER_MASTER, false, false);
+ script->set_constant("SI_STEALTHFIELD", SI_STEALTHFIELD, false, false);
+ script->set_constant("SI_STEALTHFIELD_MASTER", SI_STEALTHFIELD_MASTER, false, false);
+ script->set_constant("SI_MANU_ATK", SI_MANU_ATK, false, false);
+ script->set_constant("SI_MANU_DEF", SI_MANU_DEF, false, false);
+ script->set_constant("SI_SPL_ATK", SI_SPL_ATK, false, false);
+ script->set_constant("SI_SPL_DEF", SI_SPL_DEF, false, false);
+ script->set_constant("SI_REPRODUCE", SI_REPRODUCE, false, false);
+ script->set_constant("SI_MANU_MATK", SI_MANU_MATK, false, false);
+ script->set_constant("SI_SPL_MATK", SI_SPL_MATK, false, false);
+ script->set_constant("SI_STR_SCROLL", SI_STR_SCROLL, false, false);
+ script->set_constant("SI_INT_SCROLL", SI_INT_SCROLL, false, false);
+ script->set_constant("SI_LG_REFLECTDAMAGE", SI_LG_REFLECTDAMAGE, false, false);
+ script->set_constant("SI_FORCEOFVANGUARD", SI_FORCEOFVANGUARD, false, false);
+ script->set_constant("SI_BUCHEDENOEL", SI_BUCHEDENOEL, false, false);
+ script->set_constant("SI_AUTOSHADOWSPELL", SI_AUTOSHADOWSPELL, false, false);
+ script->set_constant("SI_SHADOWFORM", SI_SHADOWFORM, false, false);
+ script->set_constant("SI_RAID", SI_RAID, false, false);
+ script->set_constant("SI_SHIELDSPELL_DEF", SI_SHIELDSPELL_DEF, false, false);
+ script->set_constant("SI_SHIELDSPELL_MDEF", SI_SHIELDSPELL_MDEF, false, false);
+ script->set_constant("SI_SHIELDSPELL_REF", SI_SHIELDSPELL_REF, false, false);
+ script->set_constant("SI_BODYPAINT", SI_BODYPAINT, false, false);
+
+ script->set_constant("SI_EXEEDBREAK", SI_EXEEDBREAK, false, false);
+ script->set_constant("SI_ADORAMUS", SI_ADORAMUS, false, false);
+ script->set_constant("SI_PRESTIGE", SI_PRESTIGE, false, false);
+ script->set_constant("SI_INVISIBILITY", SI_INVISIBILITY, false, false);
+ script->set_constant("SI_DEADLYINFECT", SI_DEADLYINFECT, false, false);
+ script->set_constant("SI_BANDING", SI_BANDING, false, false);
+ script->set_constant("SI_EARTHDRIVE", SI_EARTHDRIVE, false, false);
+ script->set_constant("SI_INSPIRATION", SI_INSPIRATION, false, false);
+ script->set_constant("SI_ENERVATION", SI_ENERVATION, false, false);
+ script->set_constant("SI_GROOMY", SI_GROOMY, false, false);
+ script->set_constant("SI_RAISINGDRAGON", SI_RAISINGDRAGON, false, false);
+ script->set_constant("SI_IGNORANCE", SI_IGNORANCE, false, false);
+ script->set_constant("SI_LAZINESS", SI_LAZINESS, false, false);
+ script->set_constant("SI_LIGHTNINGWALK", SI_LIGHTNINGWALK, false, false);
+ script->set_constant("SI_ACARAJE", SI_ACARAJE, false, false);
+ script->set_constant("SI_UNLUCKY", SI_UNLUCKY, false, false);
+ script->set_constant("SI_CURSEDCIRCLE_ATKER", SI_CURSEDCIRCLE_ATKER, false, false);
+ script->set_constant("SI_CURSEDCIRCLE_TARGET", SI_CURSEDCIRCLE_TARGET, false, false);
+ script->set_constant("SI_WEAKNESS", SI_WEAKNESS, false, false);
+ script->set_constant("SI_CRESCENTELBOW", SI_CRESCENTELBOW, false, false);
+ script->set_constant("SI_NOEQUIPACCESSARY", SI_NOEQUIPACCESSARY, false, false);
+ script->set_constant("SI_STRIPACCESSARY", SI_STRIPACCESSARY, false, false);
+ script->set_constant("SI_MANHOLE", SI_MANHOLE, false, false);
+ script->set_constant("SI_POPECOOKIE", SI_POPECOOKIE, false, false);
+ script->set_constant("SI_FALLENEMPIRE", SI_FALLENEMPIRE, false, false);
+ script->set_constant("SI_GENTLETOUCH_ENERGYGAIN", SI_GENTLETOUCH_ENERGYGAIN, false, false);
+ script->set_constant("SI_GENTLETOUCH_CHANGE", SI_GENTLETOUCH_CHANGE, false, false);
+ script->set_constant("SI_GENTLETOUCH_REVITALIZE", SI_GENTLETOUCH_REVITALIZE, false, false);
+ script->set_constant("SI_BLOODYLUST", SI_BLOODYLUST, false, false);
+ script->set_constant("SI_SWINGDANCE", SI_SWINGDANCE, false, false);
+ script->set_constant("SI_SYMPHONYOFLOVERS", SI_SYMPHONYOFLOVERS, false, false);
+ script->set_constant("SI_PROPERTYWALK", SI_PROPERTYWALK, false, false);
+ script->set_constant("SI_SPELLFIST", SI_SPELLFIST, false, false);
+ script->set_constant("SI_NETHERWORLD", SI_NETHERWORLD, false, false);
+ script->set_constant("SI_SIREN", SI_SIREN, false, false);
+ script->set_constant("SI_DEEPSLEEP", SI_DEEPSLEEP, false, false);
+ script->set_constant("SI_SIRCLEOFNATURE", SI_SIRCLEOFNATURE, false, false);
+ script->set_constant("SI_COLD", SI_COLD, false, false);
+ script->set_constant("SI_GLOOMYDAY", SI_GLOOMYDAY, false, false);
+ script->set_constant("SI_SONG_OF_MANA", SI_SONG_OF_MANA, false, false);
+ script->set_constant("SI_CLOUDKILL", SI_CLOUDKILL, false, false);
+ script->set_constant("SI_DANCEWITHWUG", SI_DANCEWITHWUG, false, false);
+ script->set_constant("SI_RUSHWINDMILL", SI_RUSHWINDMILL, false, false);
+ script->set_constant("SI_ECHOSONG", SI_ECHOSONG, false, false);
+ script->set_constant("SI_HARMONIZE", SI_HARMONIZE, false, false);
+ script->set_constant("SI_STRIKING", SI_STRIKING, false, false);
+ //script->set_constant("SI_WARMER", SI_WARMER, false, false);
+ script->set_constant("SI_MOONLITSERENADE", SI_MOONLITSERENADE, false, false);
+ script->set_constant("SI_SATURDAYNIGHTFEVER", SI_SATURDAYNIGHTFEVER, false, false);
+ script->set_constant("SI_SITDOWN_FORCE", SI_SITDOWN_FORCE, false, false);
+
+ script->set_constant("SI_ANALYZE", SI_ANALYZE, false, false);
+ script->set_constant("SI_LERADSDEW", SI_LERADSDEW, false, false);
+ script->set_constant("SI_MELODYOFSINK", SI_MELODYOFSINK, false, false);
+ script->set_constant("SI_WARCRYOFBEYOND", SI_WARCRYOFBEYOND, false, false);
+ script->set_constant("SI_UNLIMITEDHUMMINGVOICE", SI_UNLIMITEDHUMMINGVOICE, false, false);
+ script->set_constant("SI_SPELLBOOK1", SI_SPELLBOOK1, false, false);
+ script->set_constant("SI_SPELLBOOK2", SI_SPELLBOOK2, false, false);
+ script->set_constant("SI_SPELLBOOK3", SI_SPELLBOOK3, false, false);
+ script->set_constant("SI_FREEZE_SP", SI_FREEZE_SP, false, false);
+ script->set_constant("SI_GN_TRAINING_SWORD", SI_GN_TRAINING_SWORD, false, false);
+ script->set_constant("SI_GN_REMODELING_CART", SI_GN_REMODELING_CART, false, false);
+ script->set_constant("SI_CARTSBOOST", SI_CARTSBOOST, false, false);
+ script->set_constant("SI_FIXEDCASTINGTM_REDUCE", SI_FIXEDCASTINGTM_REDUCE, false, false);
+ script->set_constant("SI_THORNTRAP", SI_THORNTRAP, false, false);
+ script->set_constant("SI_BLOODSUCKER", SI_BLOODSUCKER, false, false);
+ script->set_constant("SI_SPORE_EXPLOSION", SI_SPORE_EXPLOSION, false, false);
+ script->set_constant("SI_DEMONIC_FIRE", SI_DEMONIC_FIRE, false, false);
+ script->set_constant("SI_FIRE_EXPANSION_SMOKE_POWDER", SI_FIRE_EXPANSION_SMOKE_POWDER, false, false);
+ script->set_constant("SI_FIRE_EXPANSION_TEAR_GAS", SI_FIRE_EXPANSION_TEAR_GAS, false, false);
+ script->set_constant("SI_BLOCKING_PLAY", SI_BLOCKING_PLAY, false, false);
+ script->set_constant("SI_MANDRAGORA", SI_MANDRAGORA, false, false);
+ script->set_constant("SI_ACTIVATE", SI_ACTIVATE, false, false);
+ script->set_constant("SI_SECRAMENT", SI_SECRAMENT, false, false);
+ script->set_constant("SI_ASSUMPTIO2", SI_ASSUMPTIO2, false, false);
+ script->set_constant("SI_TK_SEVENWIND", SI_TK_SEVENWIND, false, false);
+ script->set_constant("SI_LIMIT_ODINS_RECALL", SI_LIMIT_ODINS_RECALL, false, false);
+ script->set_constant("SI_STOMACHACHE", SI_STOMACHACHE, false, false);
+ script->set_constant("SI_MYSTERIOUS_POWDER", SI_MYSTERIOUS_POWDER, false, false);
+ script->set_constant("SI_MELON_BOMB", SI_MELON_BOMB, false, false);
+ script->set_constant("SI_BANANA_BOMB_SITDOWN_POSTDELAY", SI_BANANA_BOMB_SITDOWN_POSTDELAY, false, false);
+ script->set_constant("SI_PROMOTE_HEALTH_RESERCH", SI_PROMOTE_HEALTH_RESERCH, false, false);
+ script->set_constant("SI_ENERGY_DRINK_RESERCH", SI_ENERGY_DRINK_RESERCH, false, false);
+ script->set_constant("SI_EXTRACT_WHITE_POTION_Z", SI_EXTRACT_WHITE_POTION_Z, false, false);
+ script->set_constant("SI_VITATA_500", SI_VITATA_500, false, false);
+ script->set_constant("SI_EXTRACT_SALAMINE_JUICE", SI_EXTRACT_SALAMINE_JUICE, false, false);
+ script->set_constant("SI_BOOST500", SI_BOOST500, false, false);
+ script->set_constant("SI_FULL_SWING_K", SI_FULL_SWING_K, false, false);
+ script->set_constant("SI_MANA_PLUS", SI_MANA_PLUS, false, false);
+ script->set_constant("SI_MUSTLE_M", SI_MUSTLE_M, false, false);
+ script->set_constant("SI_LIFE_FORCE_F", SI_LIFE_FORCE_F, false, false);
+ script->set_constant("SI_VACUUM_EXTREME", SI_VACUUM_EXTREME, false, false);
+ script->set_constant("SI_SAVAGE_STEAK", SI_SAVAGE_STEAK, false, false);
+ script->set_constant("SI_COCKTAIL_WARG_BLOOD", SI_COCKTAIL_WARG_BLOOD, false, false);
+ script->set_constant("SI_MINOR_BBQ", SI_MINOR_BBQ, false, false);
+ script->set_constant("SI_SIROMA_ICE_TEA", SI_SIROMA_ICE_TEA, false, false);
+ script->set_constant("SI_DROCERA_HERB_STEAMED", SI_DROCERA_HERB_STEAMED, false, false);
+ script->set_constant("SI_PUTTI_TAILS_NOODLES", SI_PUTTI_TAILS_NOODLES, false, false);
+ script->set_constant("SI_BANANA_BOMB", SI_BANANA_BOMB, false, false);
+ script->set_constant("SI_SUMMON_AGNI", SI_SUMMON_AGNI, false, false);
+ script->set_constant("SI_SPELLBOOK4", SI_SPELLBOOK4, false, false);
+
+ script->set_constant("SI_SPELLBOOK5", SI_SPELLBOOK5, false, false);
+ script->set_constant("SI_SPELLBOOK6", SI_SPELLBOOK6, false, false);
+ script->set_constant("SI_SPELLBOOK7", SI_SPELLBOOK7, false, false);
+ script->set_constant("SI_ELEMENTAL_AGGRESSIVE", SI_ELEMENTAL_AGGRESSIVE, false, false);
+ script->set_constant("SI_RETURN_TO_ELDICASTES", SI_RETURN_TO_ELDICASTES, false, false);
+ script->set_constant("SI_BANDING_DEFENCE", SI_BANDING_DEFENCE, false, false);
+ script->set_constant("SI_SKELSCROLL", SI_SKELSCROLL, false, false);
+ script->set_constant("SI_DISTRUCTIONSCROLL", SI_DISTRUCTIONSCROLL, false, false);
+ script->set_constant("SI_ROYALSCROLL", SI_ROYALSCROLL, false, false);
+ script->set_constant("SI_IMMUNITYSCROLL", SI_IMMUNITYSCROLL, false, false);
+ script->set_constant("SI_MYSTICSCROLL", SI_MYSTICSCROLL, false, false);
+ script->set_constant("SI_BATTLESCROLL", SI_BATTLESCROLL, false, false);
+ script->set_constant("SI_ARMORSCROLL", SI_ARMORSCROLL, false, false);
+ script->set_constant("SI_FREYJASCROLL", SI_FREYJASCROLL, false, false);
+ script->set_constant("SI_SOULSCROLL", SI_SOULSCROLL, false, false);
+ script->set_constant("SI_CIRCLE_OF_FIRE", SI_CIRCLE_OF_FIRE, false, false);
+ script->set_constant("SI_CIRCLE_OF_FIRE_OPTION", SI_CIRCLE_OF_FIRE_OPTION, false, false);
+ script->set_constant("SI_FIRE_CLOAK", SI_FIRE_CLOAK, false, false);
+ script->set_constant("SI_FIRE_CLOAK_OPTION", SI_FIRE_CLOAK_OPTION, false, false);
+ script->set_constant("SI_WATER_SCREEN", SI_WATER_SCREEN, false, false);
+ script->set_constant("SI_WATER_SCREEN_OPTION", SI_WATER_SCREEN_OPTION, false, false);
+ script->set_constant("SI_WATER_DROP", SI_WATER_DROP, false, false);
+ script->set_constant("SI_WATER_DROP_OPTION", SI_WATER_DROP_OPTION, false, false);
+ script->set_constant("SI_WIND_STEP", SI_WIND_STEP, false, false);
+ script->set_constant("SI_WIND_STEP_OPTION", SI_WIND_STEP_OPTION, false, false);
+ script->set_constant("SI_WIND_CURTAIN", SI_WIND_CURTAIN, false, false);
+ script->set_constant("SI_WIND_CURTAIN_OPTION", SI_WIND_CURTAIN_OPTION, false, false);
+ script->set_constant("SI_WATER_BARRIER", SI_WATER_BARRIER, false, false);
+ script->set_constant("SI_ZEPHYR", SI_ZEPHYR, false, false);
+ script->set_constant("SI_SOLID_SKIN", SI_SOLID_SKIN, false, false);
+ script->set_constant("SI_SOLID_SKIN_OPTION", SI_SOLID_SKIN_OPTION, false, false);
+ script->set_constant("SI_STONE_SHIELD", SI_STONE_SHIELD, false, false);
+ script->set_constant("SI_STONE_SHIELD_OPTION", SI_STONE_SHIELD_OPTION, false, false);
+ script->set_constant("SI_POWER_OF_GAIA", SI_POWER_OF_GAIA, false, false);
+ //script->set_constant("SI_EL_WAIT", SI_EL_WAIT, false, false);
+ //script->set_constant("SI_EL_PASSIVE", SI_EL_PASSIVE, false, false);
+ //script->set_constant("SI_EL_DEFENSIVE", SI_EL_DEFENSIVE, false, false);
+ //script->set_constant("SI_EL_OFFENSIVE", SI_EL_OFFENSIVE, false, false);
+ //script->set_constant("SI_EL_COST", SI_EL_COST, false, false);
+ script->set_constant("SI_PYROTECHNIC", SI_PYROTECHNIC, false, false);
+ script->set_constant("SI_PYROTECHNIC_OPTION", SI_PYROTECHNIC_OPTION, false, false);
+ script->set_constant("SI_HEATER", SI_HEATER, false, false);
+ script->set_constant("SI_HEATER_OPTION", SI_HEATER_OPTION, false, false);
+ script->set_constant("SI_TROPIC", SI_TROPIC, false, false);
+ script->set_constant("SI_TROPIC_OPTION", SI_TROPIC_OPTION, false, false);
+ script->set_constant("SI_AQUAPLAY", SI_AQUAPLAY, false, false);
+ script->set_constant("SI_AQUAPLAY_OPTION", SI_AQUAPLAY_OPTION, false, false);
+ script->set_constant("SI_COOLER", SI_COOLER, false, false);
+ script->set_constant("SI_COOLER_OPTION", SI_COOLER_OPTION, false, false);
+ script->set_constant("SI_CHILLY_AIR", SI_CHILLY_AIR, false, false);
+
+ script->set_constant("SI_CHILLY_AIR_OPTION", SI_CHILLY_AIR_OPTION, false, false);
+ script->set_constant("SI_GUST", SI_GUST, false, false);
+ script->set_constant("SI_GUST_OPTION", SI_GUST_OPTION, false, false);
+ script->set_constant("SI_BLAST", SI_BLAST, false, false);
+ script->set_constant("SI_BLAST_OPTION", SI_BLAST_OPTION, false, false);
+ script->set_constant("SI_WILD_STORM", SI_WILD_STORM, false, false);
+ script->set_constant("SI_WILD_STORM_OPTION", SI_WILD_STORM_OPTION, false, false);
+ script->set_constant("SI_PETROLOGY", SI_PETROLOGY, false, false);
+ script->set_constant("SI_PETROLOGY_OPTION", SI_PETROLOGY_OPTION, false, false);
+ script->set_constant("SI_CURSED_SOIL", SI_CURSED_SOIL, false, false);
+ script->set_constant("SI_CURSED_SOIL_OPTION", SI_CURSED_SOIL_OPTION, false, false);
+ script->set_constant("SI_UPHEAVAL", SI_UPHEAVAL, false, false);
+ script->set_constant("SI_UPHEAVAL_OPTION", SI_UPHEAVAL_OPTION, false, false);
+ script->set_constant("SI_TIDAL_WEAPON", SI_TIDAL_WEAPON, false, false);
+ script->set_constant("SI_TIDAL_WEAPON_OPTION", SI_TIDAL_WEAPON_OPTION, false, false);
+ script->set_constant("SI_ROCK_CRUSHER", SI_ROCK_CRUSHER, false, false);
+ script->set_constant("SI_ROCK_CRUSHER_ATK", SI_ROCK_CRUSHER_ATK, false, false);
+ script->set_constant("SI_FIRE_INSIGNIA", SI_FIRE_INSIGNIA, false, false);
+ script->set_constant("SI_WATER_INSIGNIA", SI_WATER_INSIGNIA, false, false);
+ script->set_constant("SI_WIND_INSIGNIA", SI_WIND_INSIGNIA, false, false);
+ script->set_constant("SI_EARTH_INSIGNIA", SI_EARTH_INSIGNIA, false, false);
+ script->set_constant("SI_EQUIPED_FLOOR", SI_EQUIPED_FLOOR, false, false);
+ script->set_constant("SI_GUARDIAN_RECALL", SI_GUARDIAN_RECALL, false, false);
+ script->set_constant("SI_MORA_BUFF", SI_MORA_BUFF, false, false);
+ script->set_constant("SI_REUSE_LIMIT_G", SI_REUSE_LIMIT_G, false, false);
+ script->set_constant("SI_REUSE_LIMIT_H", SI_REUSE_LIMIT_H, false, false);
+ script->set_constant("SI_NEEDLE_OF_PARALYZE", SI_NEEDLE_OF_PARALYZE, false, false);
+ script->set_constant("SI_PAIN_KILLER", SI_PAIN_KILLER, false, false);
+ script->set_constant("SI_G_LIFEPOTION", SI_G_LIFEPOTION, false, false);
+ script->set_constant("SI_VITALIZE_POTION", SI_VITALIZE_POTION, false, false);
+ script->set_constant("SI_LIGHT_OF_REGENE", SI_LIGHT_OF_REGENE, false, false);
+ script->set_constant("SI_OVERED_BOOST", SI_OVERED_BOOST, false, false);
+ script->set_constant("SI_SILENT_BREEZE", SI_SILENT_BREEZE, false, false);
+ script->set_constant("SI_ODINS_POWER", SI_ODINS_POWER, false, false);
+ script->set_constant("SI_STYLE_CHANGE", SI_STYLE_CHANGE, false, false);
+ script->set_constant("SI_SONIC_CLAW_POSTDELAY", SI_SONIC_CLAW_POSTDELAY, false, false);
+ // 586
+ // 587
+ // 588
+ // 589
+ // 590
+ // 591
+ // 592
+ // 593
+ // 594
+ // 595
+ script->set_constant("SI_SILVERVEIN_RUSH_POSTDELAY", SI_SILVERVEIN_RUSH_POSTDELAY, false, false);
+ script->set_constant("SI_MIDNIGHT_FRENZY_POSTDELAY", SI_MIDNIGHT_FRENZY_POSTDELAY, false, false);
+ script->set_constant("SI_GOLDENE_FERSE", SI_GOLDENE_FERSE, false, false);
+ script->set_constant("SI_ANGRIFFS_MODUS", SI_ANGRIFFS_MODUS, false, false);
+
+ script->set_constant("SI_TINDER_BREAKER", SI_TINDER_BREAKER, false, false);
+ script->set_constant("SI_TINDER_BREAKER_POSTDELAY", SI_TINDER_BREAKER_POSTDELAY, false, false);
+ script->set_constant("SI_CBC", SI_CBC, false, false);
+ script->set_constant("SI_CBC_POSTDELAY", SI_CBC_POSTDELAY, false, false);
+ script->set_constant("SI_EQC", SI_EQC, false, false);
+ script->set_constant("SI_MAGMA_FLOW", SI_MAGMA_FLOW, false, false);
+ script->set_constant("SI_GRANITIC_ARMOR", SI_GRANITIC_ARMOR, false, false);
+ script->set_constant("SI_PYROCLASTIC", SI_PYROCLASTIC, false, false);
+ script->set_constant("SI_VOLCANIC_ASH", SI_VOLCANIC_ASH, false, false);
+ script->set_constant("SI_SPIRITS_SAVEINFO1", SI_SPIRITS_SAVEINFO1, false, false);
+ script->set_constant("SI_SPIRITS_SAVEINFO2", SI_SPIRITS_SAVEINFO2, false, false);
+ script->set_constant("SI_MAGIC_CANDY", SI_MAGIC_CANDY, false, false);
+ script->set_constant("SI_SEARCH_STORE_INFO", SI_SEARCH_STORE_INFO, false, false);
+ script->set_constant("SI_ALL_RIDING", SI_ALL_RIDING, false, false);
+ script->set_constant("SI_ALL_RIDING_REUSE_LIMIT", SI_ALL_RIDING_REUSE_LIMIT, false, false);
+ script->set_constant("SI_MACRO", SI_MACRO, false, false);
+ script->set_constant("SI_MACRO_POSTDELAY", SI_MACRO_POSTDELAY, false, false);
+ script->set_constant("SI_BEER_BOTTLE_CAP", SI_BEER_BOTTLE_CAP, false, false);
+ script->set_constant("SI_OVERLAPEXPUP", SI_OVERLAPEXPUP, false, false);
+ script->set_constant("SI_PC_IZ_DUN05", SI_PC_IZ_DUN05, false, false);
+ script->set_constant("SI_CRUSHSTRIKE", SI_CRUSHSTRIKE, false, false);
+ script->set_constant("SI_MONSTER_TRANSFORM", SI_MONSTER_TRANSFORM, false, false);
+ script->set_constant("SI_SIT", SI_SIT, false, false);
+ script->set_constant("SI_ONAIR", SI_ONAIR, false, false);
+ script->set_constant("SI_MTF_ASPD", SI_MTF_ASPD, false, false);
+ script->set_constant("SI_MTF_RANGEATK", SI_MTF_RANGEATK, false, false);
+ script->set_constant("SI_MTF_MATK", SI_MTF_MATK, false, false);
+ script->set_constant("SI_MTF_MLEATKED", SI_MTF_MLEATKED, false, false);
+ script->set_constant("SI_MTF_CRIDAMAGE", SI_MTF_CRIDAMAGE, false, false);
+ script->set_constant("SI_REUSE_LIMIT_MTF", SI_REUSE_LIMIT_MTF, false, false);
+ script->set_constant("SI_MACRO_PERMIT", SI_MACRO_PERMIT, false, false);
+ script->set_constant("SI_MACRO_PLAY", SI_MACRO_PLAY, false, false);
+ script->set_constant("SI_SKF_CAST", SI_SKF_CAST, false, false);
+ script->set_constant("SI_SKF_ASPD", SI_SKF_ASPD, false, false);
+ script->set_constant("SI_SKF_ATK", SI_SKF_ATK, false, false);
+ script->set_constant("SI_SKF_MATK", SI_SKF_MATK, false, false);
+ script->set_constant("SI_REWARD_PLUSONLYJOBEXP", SI_REWARD_PLUSONLYJOBEXP, false, false);
+ script->set_constant("SI_HANDICAPSTATE_NORECOVER", SI_HANDICAPSTATE_NORECOVER, false, false);
+ script->set_constant("SI_SET_NUM_DEF", SI_SET_NUM_DEF, false, false);
+ script->set_constant("SI_SET_NUM_MDEF", SI_SET_NUM_MDEF, false, false);
+ script->set_constant("SI_SET_PER_DEF", SI_SET_PER_DEF, false, false);
+ script->set_constant("SI_SET_PER_MDEF", SI_SET_PER_MDEF, false, false);
+ script->set_constant("SI_PARTYBOOKING_SEARCH_DEALY", SI_PARTYBOOKING_SEARCH_DEALY, false, false);
+ script->set_constant("SI_PARTYBOOKING_REGISTER_DEALY", SI_PARTYBOOKING_REGISTER_DEALY, false, false);
+ script->set_constant("SI_PERIOD_TIME_CHECK_DETECT_SKILL", SI_PERIOD_TIME_CHECK_DETECT_SKILL, false, false);
+ script->set_constant("SI_KO_JYUMONJIKIRI", SI_KO_JYUMONJIKIRI, false, false);
+ script->set_constant("SI_MEIKYOUSISUI", SI_MEIKYOUSISUI, false, false);
+ script->set_constant("SI_ATTHASTE_CASH", SI_ATTHASTE_CASH, false, false);
+ script->set_constant("SI_EQUIPPED_DIVINE_ARMOR", SI_EQUIPPED_DIVINE_ARMOR, false, false);
+ script->set_constant("SI_EQUIPPED_HOLY_ARMOR", SI_EQUIPPED_HOLY_ARMOR, false, false);
+
+ script->set_constant("SI_2011RWC", SI_2011RWC, false, false);
+ script->set_constant("SI_KYOUGAKU", SI_KYOUGAKU, false, false);
+ script->set_constant("SI_IZAYOI", SI_IZAYOI, false, false);
+ script->set_constant("SI_ZENKAI", SI_ZENKAI, false, false);
+ script->set_constant("SI_KG_KAGEHUMI", SI_KG_KAGEHUMI, false, false);
+ script->set_constant("SI_KYOMU", SI_KYOMU, false, false);
+ script->set_constant("SI_KAGEMUSYA", SI_KAGEMUSYA, false, false);
+ script->set_constant("SI_ZANGETSU", SI_ZANGETSU, false, false);
+ script->set_constant("SI_PHI_DEMON", SI_PHI_DEMON, false, false);
+ script->set_constant("SI_GENSOU", SI_GENSOU, false, false);
+ script->set_constant("SI_AKAITSUKI", SI_AKAITSUKI, false, false);
+ script->set_constant("SI_TETANY", SI_TETANY, false, false);
+ script->set_constant("SI_GM_BATTLE", SI_GM_BATTLE, false, false);
+ script->set_constant("SI_GM_BATTLE2", SI_GM_BATTLE2, false, false);
+ script->set_constant("SI_2011RWC_SCROLL", SI_2011RWC_SCROLL, false, false);
+ script->set_constant("SI_ACTIVE_MONSTER_TRANSFORM", SI_ACTIVE_MONSTER_TRANSFORM, false, false);
+ script->set_constant("SI_MYSTICPOWDER", SI_MYSTICPOWDER, false, false);
+ script->set_constant("SI_ECLAGE_RECALL", SI_ECLAGE_RECALL, false, false);
+ script->set_constant("SI_ENTRY_QUEUE_APPLY_DELAY", SI_ENTRY_QUEUE_APPLY_DELAY, false, false);
+ script->set_constant("SI_REUSE_LIMIT_ECL", SI_REUSE_LIMIT_ECL, false, false);
+ script->set_constant("SI_M_LIFEPOTION", SI_M_LIFEPOTION, false, false);
+ script->set_constant("SI_ENTRY_QUEUE_NOTIFY_ADMISSION_TIME_OUT", SI_ENTRY_QUEUE_NOTIFY_ADMISSION_TIME_OUT, false, false);
+ script->set_constant("SI_UNKNOWN_NAME", SI_UNKNOWN_NAME, false, false);
+ script->set_constant("SI_ON_PUSH_CART", SI_ON_PUSH_CART, false, false);
+ script->set_constant("SI_HAT_EFFECT", SI_HAT_EFFECT, false, false);
+ script->set_constant("SI_FLOWER_LEAF", SI_FLOWER_LEAF, false, false);
+ script->set_constant("SI_RAY_OF_PROTECTION", SI_RAY_OF_PROTECTION, false, false);
+ script->set_constant("SI_GLASTHEIM_ATK", SI_GLASTHEIM_ATK, false, false);
+ script->set_constant("SI_GLASTHEIM_DEF", SI_GLASTHEIM_DEF, false, false);
+ script->set_constant("SI_GLASTHEIM_HEAL", SI_GLASTHEIM_HEAL, false, false);
+ script->set_constant("SI_GLASTHEIM_HIDDEN", SI_GLASTHEIM_HIDDEN, false, false);
+ script->set_constant("SI_GLASTHEIM_STATE", SI_GLASTHEIM_STATE, false, false);
+ script->set_constant("SI_GLASTHEIM_ITEMDEF", SI_GLASTHEIM_ITEMDEF, false, false);
+ script->set_constant("SI_GLASTHEIM_HPSP", SI_GLASTHEIM_HPSP, false, false);
+ script->set_constant("SI_HOMUN_SKILL_POSTDELAY", SI_HOMUN_SKILL_POSTDELAY, false, false);
+ script->set_constant("SI_ALMIGHTY", SI_ALMIGHTY, false, false);
+ script->set_constant("SI_GVG_GIANT", SI_GVG_GIANT, false, false);
+ script->set_constant("SI_GVG_GOLEM", SI_GVG_GOLEM, false, false);
+ script->set_constant("SI_GVG_STUN", SI_GVG_STUN, false, false);
+ script->set_constant("SI_GVG_STONE", SI_GVG_STONE, false, false);
+ script->set_constant("SI_GVG_FREEZ", SI_GVG_FREEZ, false, false);
+ script->set_constant("SI_GVG_SLEEP", SI_GVG_SLEEP, false, false);
+ script->set_constant("SI_GVG_CURSE", SI_GVG_CURSE, false, false);
+ script->set_constant("SI_GVG_SILENCE", SI_GVG_SILENCE, false, false);
+ script->set_constant("SI_GVG_BLIND", SI_GVG_BLIND, false, false);
+ script->set_constant("SI_CLIENT_ONLY_EQUIP_ARROW", SI_CLIENT_ONLY_EQUIP_ARROW, false, false);
+ script->set_constant("SI_CLAN_INFO", SI_CLAN_INFO, false, false);
+ script->set_constant("SI_JP_EVENT01", SI_JP_EVENT01, false, false);
+ script->set_constant("SI_JP_EVENT02", SI_JP_EVENT02, false, false);
+ script->set_constant("SI_JP_EVENT03", SI_JP_EVENT03, false, false);
+
+ script->set_constant("SI_JP_EVENT04", SI_JP_EVENT04, false, false);
+ script->set_constant("SI_TELEPORT_FIXEDCASTINGDELAY", SI_TELEPORT_FIXEDCASTINGDELAY, false, false);
+ script->set_constant("SI_GEFFEN_MAGIC1", SI_GEFFEN_MAGIC1, false, false);
+ script->set_constant("SI_GEFFEN_MAGIC2", SI_GEFFEN_MAGIC2, false, false);
+ script->set_constant("SI_GEFFEN_MAGIC3", SI_GEFFEN_MAGIC3, false, false);
+ script->set_constant("SI_QUEST_BUFF1", SI_QUEST_BUFF1, false, false);
+ script->set_constant("SI_QUEST_BUFF2", SI_QUEST_BUFF2, false, false);
+ script->set_constant("SI_QUEST_BUFF3", SI_QUEST_BUFF3, false, false);
+ script->set_constant("SI_REUSE_LIMIT_RECALL", SI_REUSE_LIMIT_RECALL, false, false);
+ script->set_constant("SI_SAVEPOSITION", SI_SAVEPOSITION, false, false);
+ script->set_constant("SI_HANDICAPSTATE_ICEEXPLO", SI_HANDICAPSTATE_ICEEXPLO, false, false);
+ script->set_constant("SI_FENRIR_CARD", SI_FENRIR_CARD, false, false);
+ script->set_constant("SI_REUSE_LIMIT_ASPD_POTION", SI_REUSE_LIMIT_ASPD_POTION, false, false);
+ script->set_constant("SI_MAXPAIN", SI_MAXPAIN, false, false);
+ script->set_constant("SI_PC_STOP", SI_PC_STOP, false, false);
+ script->set_constant("SI_FRIGG_SONG", SI_FRIGG_SONG, false, false);
+ script->set_constant("SI_OFFERTORIUM", SI_OFFERTORIUM, false, false);
+ script->set_constant("SI_TELEKINESIS_INTENSE", SI_TELEKINESIS_INTENSE, false, false);
+ script->set_constant("SI_MOONSTAR", SI_MOONSTAR, false, false);
+ script->set_constant("SI_STRANGELIGHTS", SI_STRANGELIGHTS, false, false);
+ script->set_constant("SI_FULL_THROTTLE", SI_FULL_THROTTLE, false, false);
+ script->set_constant("SI_REBOUND", SI_REBOUND, false, false);
+ script->set_constant("SI_UNLIMIT", SI_UNLIMIT, false, false);
+ script->set_constant("SI_KINGS_GRACE", SI_KINGS_GRACE, false, false);
+ script->set_constant("SI_ITEM_ATKMAX", SI_ITEM_ATKMAX, false, false);
+ script->set_constant("SI_ITEM_ATKMIN", SI_ITEM_ATKMIN, false, false);
+ script->set_constant("SI_ITEM_MATKMAX", SI_ITEM_MATKMAX, false, false);
+ script->set_constant("SI_ITEM_MATKMIN", SI_ITEM_MATKMIN, false, false);
+ script->set_constant("SI_SUPER_STAR", SI_SUPER_STAR, false, false);
+ script->set_constant("SI_HIGH_RANKER", SI_HIGH_RANKER, false, false);
+ script->set_constant("SI_DARKCROW", SI_DARKCROW, false, false);
+ script->set_constant("SI_2013_VALENTINE1", SI_2013_VALENTINE1, false, false);
+ script->set_constant("SI_2013_VALENTINE2", SI_2013_VALENTINE2, false, false);
+ script->set_constant("SI_2013_VALENTINE3", SI_2013_VALENTINE3, false, false);
+ script->set_constant("SI_ILLUSIONDOPING", SI_ILLUSIONDOPING, false, false);
+ //script->set_constant("SI_WIDEWEB", SI_WIDEWEB, false, false);
+ script->set_constant("SI_CHILL", SI_CHILL, false, false);
+ script->set_constant("SI_BURNT", SI_BURNT, false, false);
+ //script->set_constant("SI_PCCAFE_PLAY_TIME", SI_PCCAFE_PLAY_TIME, false, false);
+ //script->set_constant("SI_TWISTED_TIME", SI_TWISTED_TIME, false, false);
+ script->set_constant("SI_FLASHCOMBO", SI_FLASHCOMBO, false, false);
+ //script->set_constant("SI_JITTER_BUFF1", SI_JITTER_BUFF1, false, false);
+ //script->set_constant("SI_JITTER_BUFF2", SI_JITTER_BUFF2, false, false);
+ //script->set_constant("SI_JITTER_BUFF3", SI_JITTER_BUFF3, false, false);
+ //script->set_constant("SI_JITTER_BUFF4", SI_JITTER_BUFF4, false, false);
+ //script->set_constant("SI_JITTER_BUFF5", SI_JITTER_BUFF5, false, false);
+ //script->set_constant("SI_JITTER_BUFF6", SI_JITTER_BUFF6, false, false);
+ //script->set_constant("SI_JITTER_BUFF7", SI_JITTER_BUFF7, false, false);
+ //script->set_constant("SI_JITTER_BUFF8", SI_JITTER_BUFF8, false, false);
+ //script->set_constant("SI_JITTER_BUFF9", SI_JITTER_BUFF9, false, false);
+
+ //script->set_constant("SI_JITTER_BUFF10", SI_JITTER_BUFF10, false, false);
+ script->set_constant("SI_CUP_OF_BOZA", SI_CUP_OF_BOZA, false, false);
+ script->set_constant("SI_B_TRAP", SI_B_TRAP, false, false);
+ script->set_constant("SI_E_CHAIN", SI_E_CHAIN, false, false);
+ script->set_constant("SI_E_QD_SHOT_READY", SI_E_QD_SHOT_READY, false, false);
+ script->set_constant("SI_C_MARKER", SI_C_MARKER, false, false);
+ script->set_constant("SI_H_MINE", SI_H_MINE, false, false);
+ script->set_constant("SI_H_MINE_SPLASH", SI_H_MINE_SPLASH, false, false);
+ script->set_constant("SI_P_ALTER", SI_P_ALTER, false, false);
+ script->set_constant("SI_HEAT_BARREL", SI_HEAT_BARREL, false, false);
+ script->set_constant("SI_ANTI_M_BLAST", SI_ANTI_M_BLAST, false, false);
+ script->set_constant("SI_SLUGSHOT", SI_SLUGSHOT, false, false);
+ script->set_constant("SI_SWORDCLAN", SI_SWORDCLAN, false, false);
+ script->set_constant("SI_ARCWANDCLAN", SI_ARCWANDCLAN, false, false);
+ script->set_constant("SI_GOLDENMACECLAN", SI_GOLDENMACECLAN, false, false);
+ script->set_constant("SI_CROSSBOWCLAN", SI_CROSSBOWCLAN, false, false);
+ script->set_constant("SI_PACKING_ENVELOPE1", SI_PACKING_ENVELOPE1, false, false);
+ script->set_constant("SI_PACKING_ENVELOPE2", SI_PACKING_ENVELOPE2, false, false);
+ script->set_constant("SI_PACKING_ENVELOPE3", SI_PACKING_ENVELOPE3, false, false);
+ script->set_constant("SI_PACKING_ENVELOPE4", SI_PACKING_ENVELOPE4, false, false);
+ script->set_constant("SI_PACKING_ENVELOPE5", SI_PACKING_ENVELOPE5, false, false);
+ script->set_constant("SI_PACKING_ENVELOPE6", SI_PACKING_ENVELOPE6, false, false);
+ script->set_constant("SI_PACKING_ENVELOPE7", SI_PACKING_ENVELOPE7, false, false);
+ script->set_constant("SI_PACKING_ENVELOPE8", SI_PACKING_ENVELOPE8, false, false);
+ script->set_constant("SI_PACKING_ENVELOPE9", SI_PACKING_ENVELOPE9, false, false);
+ script->set_constant("SI_PACKING_ENVELOPE10", SI_PACKING_ENVELOPE10, false, false);
+ script->set_constant("SI_GLASTHEIM_TRANS", SI_GLASTHEIM_TRANS, false, false);
+ //script->set_constant("SI_ZONGZI_POUCH_TRANS", SI_ZONGZI_POUCH_TRANS, false, false);
+ script->set_constant("SI_HEAT_BARREL_AFTER", SI_HEAT_BARREL_AFTER, false, false);
+ script->set_constant("SI_DECORATION_OF_MUSIC", SI_DECORATION_OF_MUSIC, false, false);
+ //script->set_constant("SI_OVERSEAEXPUP", SI_OVERSEAEXPUP, false, false);
+ //script->set_constant("SI_CLOWN_N_GYPSY_CARD", SI_CLOWN_N_GYPSY_CARD, false, false);
+ //script->set_constant("SI_OPEN_NPC_MARKET", SI_OPEN_NPC_MARKET, false, false);
+ //script->set_constant("SI_BEEF_RIB_STEW", SI_BEEF_RIB_STEW, false, false);
+ //script->set_constant("SI_PORK_RIB_STEW", SI_PORK_RIB_STEW, false, false);
+ //script->set_constant("SI_CHUSEOK_MONDAY", SI_CHUSEOK_MONDAY, false, false);
+ //script->set_constant("SI_CHUSEOK_TUESDAY", SI_CHUSEOK_TUESDAY, false, false);
+ //script->set_constant("SI_CHUSEOK_WEDNESDAY", SI_CHUSEOK_WEDNESDAY, false, false);
+ //script->set_constant("SI_CHUSEOK_THURSDAY", SI_CHUSEOK_THURSDAY, false, false);
+ //script->set_constant("SI_CHUSEOK_FRIDAY", SI_CHUSEOK_FRIDAY, false, false);
+ //script->set_constant("SI_CHUSEOK_WEEKEND", SI_CHUSEOK_WEEKEND, false, false);
+ //script->set_constant("SI_ALL_LIGHTGUARD", SI_ALL_LIGHTGUARD, false, false);
+ //script->set_constant("SI_ALL_LIGHTGUARD_COOL_TIME", SI_ALL_LIGHTGUARD_COOL_TIME, false, false);
+ script->set_constant("SI_MTF_MHP", SI_MTF_MHP, false, false);
+ script->set_constant("SI_MTF_MSP", SI_MTF_MSP, false, false);
+ script->set_constant("SI_MTF_PUMPKIN", SI_MTF_PUMPKIN, false, false);
+ script->set_constant("SI_MTF_HITFLEE", SI_MTF_HITFLEE, false, false);
+ //script->set_constant("SI_MTF_CRIDAMAGE2", SI_MTF_CRIDAMAGE2, false, false);
+ //script->set_constant("SI_MTF_SPDRAIN", SI_MTF_SPDRAIN, false, false);
+ //script->set_constant("SI_ACUO_MINT_GUM", SI_ACUO_MINT_GUM, false, false);
+
+ //script->set_constant("SI_S_HEALPOTION", SI_S_HEALPOTION, false, false);
+ //script->set_constant("SI_REUSE_LIMIT_S_HEAL_POTION", SI_REUSE_LIMIT_S_HEAL_POTION, false, false);
+ //script->set_constant("SI_PLAYTIME_STATISTICS", SI_PLAYTIME_STATISTICS, false, false);
+ //script->set_constant("SI_GN_CHANGEMATERIAL_OPERATOR", SI_GN_CHANGEMATERIAL_OPERATOR, false, false);
+ //script->set_constant("SI_GN_MIX_COOKING_OPERATOR", SI_GN_MIX_COOKING_OPERATOR, false, false);
+ //script->set_constant("SI_GN_MAKEBOMB_OPERATOR", SI_GN_MAKEBOMB_OPERATOR, false, false);
+ //script->set_constant("SI_GN_S_PHARMACY_OPERATOR", SI_GN_S_PHARMACY_OPERATOR, false, false);
+ //script->set_constant("SI_SO_EL_ANALYSIS_DISASSEMBLY_OPERATOR", SI_SO_EL_ANALYSIS_DISASSEMBLY_OPERATOR, false, false);
+ //script->set_constant("SI_SO_EL_ANALYSIS_COMBINATION_OPERATOR", SI_SO_EL_ANALYSIS_COMBINATION_OPERATOR, false, false);
+ //script->set_constant("SI_NC_MAGICDECOY_OPERATOR", SI_NC_MAGICDECOY_OPERATOR, false, false);
+ //script->set_constant("SI_GUILD_STORAGE", SI_GUILD_STORAGE, false, false);
+ //script->set_constant("SI_GC_POISONINGWEAPON_OPERATOR", SI_GC_POISONINGWEAPON_OPERATOR, false, false);
+ //script->set_constant("SI_WS_WEAPONREFINE_OPERATOR", SI_WS_WEAPONREFINE_OPERATOR, false, false);
+ //script->set_constant("SI_BS_REPAIRWEAPON_OPERATOR", SI_BS_REPAIRWEAPON_OPERATOR, false, false);
+ //script->set_constant("SI_GET_MAILBOX", SI_GET_MAILBOX, false, false);
+ //script->set_constant("SI_JUMPINGCLAN", SI_JUMPINGCLAN, false, false);
+ //script->set_constant("SI_JP_OTP", SI_JP_OTP, false, false);
+ //script->set_constant("SI_HANDICAPTOLERANCE_LEVELGAP", SI_HANDICAPTOLERANCE_LEVELGAP, false, false);
+ //script->set_constant("SI_MTF_RANGEATK2", SI_MTF_RANGEATK2, false, false);
+ //script->set_constant("SI_MTF_ASPD2", SI_MTF_ASPD2, false, false);
+ //script->set_constant("SI_MTF_MATK2", SI_MTF_MATK2, false, false);
+ //script->set_constant("SI_SHOW_NPCHPBAR", SI_SHOW_NPCHPBAR, false, false);
+ script->set_constant("SI_FLOWERSMOKE", SI_FLOWERSMOKE, false, false);
+ script->set_constant("SI_FSTONE", SI_FSTONE, false, false);
+ //script->set_constant("SI_DAILYSENDMAILCNT", SI_DAILYSENDMAILCNT, false, false);
+ //script->set_constant("SI_QSCARABA", SI_QSCARABA, false, false);
+ script->set_constant("SI_LJOSALFAR", SI_LJOSALFAR, false, false);
+ //script->set_constant("SI_PAD_READER_KNIGHT", SI_PAD_READER_KNIGHT, false, false);
+ //script->set_constant("SI_PAD_READER_CRUSADER", SI_PAD_READER_CRUSADER, false, false);
+ //script->set_constant("SI_PAD_READER_BLACKSMITH", SI_PAD_READER_BLACKSMITH, false, false);
+ //script->set_constant("SI_PAD_READER_ALCHEMIST", SI_PAD_READER_ALCHEMIST, false, false);
+ //script->set_constant("SI_PAD_READER_ASSASSIN", SI_PAD_READER_ASSASSIN, false, false);
+ //script->set_constant("SI_PAD_READER_ROGUE", SI_PAD_READER_ROGUE, false, false);
+ //script->set_constant("SI_PAD_READER_WIZARD", SI_PAD_READER_WIZARD, false, false);
+ //script->set_constant("SI_PAD_READER_SAGE", SI_PAD_READER_SAGE, false, false);
+ //script->set_constant("SI_PAD_READER_PRIEST", SI_PAD_READER_PRIEST, false, false);
+ //script->set_constant("SI_PAD_READER_MONK", SI_PAD_READER_MONK, false, false);
+ //script->set_constant("SI_PAD_READER_HUNTER", SI_PAD_READER_HUNTER, false, false);
+ //script->set_constant("SI_PAD_READER_BARD", SI_PAD_READER_BARD, false, false);
+ //script->set_constant("SI_PAD_READER_DANCER", SI_PAD_READER_DANCER, false, false);
+ //script->set_constant("SI_PAD_READER_TAEKWON", SI_PAD_READER_TAEKWON, false, false);
+ //script->set_constant("SI_PAD_READER_NINJA", SI_PAD_READER_NINJA, false, false);
+ //script->set_constant("SI_PAD_READER_GUNSLINGER", SI_PAD_READER_GUNSLINGER, false, false);
+ //script->set_constant("SI_PAD_READER_SUPERNOVICE", SI_PAD_READER_SUPERNOVICE, false, false);
+ //script->set_constant("SI_ESSENCE_OF_TIME", SI_ESSENCE_OF_TIME, false, false);
+ //script->set_constant("SI_MINIGAME_ROULETTE", SI_MINIGAME_ROULETTE, false, false);
+ //script->set_constant("SI_MINIGAME_GOLD_POINT", SI_MINIGAME_GOLD_POINT, false, false);
+ //script->set_constant("SI_MINIGAME_SILVER_POINT", SI_MINIGAME_SILVER_POINT, false, false);
+ //script->set_constant("SI_MINIGAME_BRONZE_POINT", SI_MINIGAME_BRONZE_POINT, false, false);
+ script->set_constant("SI_HAPPINESS_STAR", SI_HAPPINESS_STAR, false, false);
+
+ //script->set_constant("SI_SUMMEREVENT01", SI_SUMMEREVENT01, false, false);
+ //script->set_constant("SI_SUMMEREVENT02", SI_SUMMEREVENT02, false, false);
+ //script->set_constant("SI_SUMMEREVENT03", SI_SUMMEREVENT03, false, false);
+ //script->set_constant("SI_SUMMEREVENT04", SI_SUMMEREVENT04, false, false);
+ //script->set_constant("SI_SUMMEREVENT05", SI_SUMMEREVENT05, false, false);
+ //script->set_constant("SI_MINIGAME_ROULETTE_BONUS_ITEM", SI_MINIGAME_ROULETTE_BONUS_ITEM, false, false);
+ //script->set_constant("SI_DRESS_UP", SI_DRESS_UP, false, false);
+ script->set_constant("SI_MAPLE_FALLS", SI_MAPLE_FALLS, false, false);
+ //script->set_constant("SI_ALL_NIFLHEIM_RECALL", SI_ALL_NIFLHEIM_RECALL, false, false);
+ // 859
+ //script->set_constant("SI_MTF_MARIONETTE", SI_MTF_MARIONETTE, false, false);
+ //script->set_constant("SI_MTF_LUDE", SI_MTF_LUDE, false, false);
+ //script->set_constant("SI_MTF_CRUISER", SI_MTF_CRUISER, false, false);
+ script->set_constant("SI_MERMAID_LONGING", SI_MERMAID_LONGING, false, false);
+ script->set_constant("SI_MAGICAL_FEATHER", SI_MAGICAL_FEATHER, false, false);
+ //script->set_constant("SI_DRACULA_CARD", SI_DRACULA_CARD, false, false);
+ // 866
+ //script->set_constant("SI_LIMIT_POWER_BOOSTER", SI_LIMIT_POWER_BOOSTER, false, false);
+ // 868
+ // 869
+ // 870
+ // 871
+ script->set_constant("SI_TIME_ACCESSORY", SI_TIME_ACCESSORY, false, false);
+ //script->set_constant("SI_EP16_DEF", SI_EP16_DEF, false, false);
+ //script->set_constant("SI_NORMAL_ATKED_SP", SI_NORMAL_ATKED_SP, false, false);
+ //script->set_constant("SI_BODYSTATE_STONECURSE", SI_BODYSTATE_STONECURSE, false, false);
+ //script->set_constant("SI_BODYSTATE_FREEZING", SI_BODYSTATE_FREEZING, false, false);
+ //script->set_constant("SI_BODYSTATE_STUN", SI_BODYSTATE_STUN, false, false);
+ //script->set_constant("SI_BODYSTATE_SLEEP", SI_BODYSTATE_SLEEP, false, false);
+ //script->set_constant("SI_BODYSTATE_UNDEAD", SI_BODYSTATE_UNDEAD, false, false);
+ //script->set_constant("SI_BODYSTATE_STONECURSE_ING", SI_BODYSTATE_STONECURSE_ING, false, false);
+ //script->set_constant("SI_BODYSTATE_BURNNING", SI_BODYSTATE_BURNNING, false, false);
+ //script->set_constant("SI_BODYSTATE_IMPRISON", SI_BODYSTATE_IMPRISON, false, false);
+ //script->set_constant("SI_HEALTHSTATE_POISON", SI_HEALTHSTATE_POISON, false, false);
+ //script->set_constant("SI_HEALTHSTATE_CURSE", SI_HEALTHSTATE_CURSE, false, false);
+ //script->set_constant("SI_HEALTHSTATE_SILENCE", SI_HEALTHSTATE_SILENCE, false, false);
+ //script->set_constant("SI_HEALTHSTATE_CONFUSION", SI_HEALTHSTATE_CONFUSION, false, false);
+ //script->set_constant("SI_HEALTHSTATE_BLIND", SI_HEALTHSTATE_BLIND, false, false);
+ //script->set_constant("SI_HEALTHSTATE_ANGELUS", SI_HEALTHSTATE_ANGELUS, false, false);
+ //script->set_constant("SI_HEALTHSTATE_BLOODING", SI_HEALTHSTATE_BLOODING, false, false);
+ //script->set_constant("SI_HEALTHSTATE_HEAVYPOISON", SI_HEALTHSTATE_HEAVYPOISON, false, false);
+ //script->set_constant("SI_HEALTHSTATE_FEAR", SI_HEALTHSTATE_FEAR, false, false);
+ //script->set_constant("SI_CHERRY_BLOSSOM_CAKE", SI_CHERRY_BLOSSOM_CAKE, false, false);
+ script->set_constant("SI_SU_STOOP", SI_SU_STOOP, false, false);
+ script->set_constant("SI_CATNIPPOWDER", SI_CATNIPPOWDER, false, false);
+ script->set_constant("SI_BLOSSOM_FLUTTERING", SI_BLOSSOM_FLUTTERING, false, false);
+ script->set_constant("SI_SV_ROOTTWIST", SI_SV_ROOTTWIST, false, false);
+ //script->set_constant("SI_ATTACK_PROPERTY_NOTHING", SI_ATTACK_PROPERTY_NOTHING, false, false);
+ //script->set_constant("SI_ATTACK_PROPERTY_WATER", SI_ATTACK_PROPERTY_WATER, false, false);
+ //script->set_constant("SI_ATTACK_PROPERTY_GROUND", SI_ATTACK_PROPERTY_GROUND, false, false);
+
+ //script->set_constant("SI_ATTACK_PROPERTY_FIRE", SI_ATTACK_PROPERTY_FIRE, false, false);
+ //script->set_constant("SI_ATTACK_PROPERTY_WIND", SI_ATTACK_PROPERTY_WIND, false, false);
+ //script->set_constant("SI_ATTACK_PROPERTY_POISON", SI_ATTACK_PROPERTY_POISON, false, false);
+ //script->set_constant("SI_ATTACK_PROPERTY_SAINT", SI_ATTACK_PROPERTY_SAINT, false, false);
+ //script->set_constant("SI_ATTACK_PROPERTY_DARKNESS", SI_ATTACK_PROPERTY_DARKNESS, false, false);
+ //script->set_constant("SI_ATTACK_PROPERTY_TELEKINESIS", SI_ATTACK_PROPERTY_TELEKINESIS, false, false);
+ //script->set_constant("SI_ATTACK_PROPERTY_UNDEAD", SI_ATTACK_PROPERTY_UNDEAD, false, false);
+ //script->set_constant("SI_RESIST_PROPERTY_NOTHING", SI_RESIST_PROPERTY_NOTHING, false, false);
+ //script->set_constant("SI_RESIST_PROPERTY_WATER", SI_RESIST_PROPERTY_WATER, false, false);
+ //script->set_constant("SI_RESIST_PROPERTY_GROUND", SI_RESIST_PROPERTY_GROUND, false, false);
+ //script->set_constant("SI_RESIST_PROPERTY_FIRE", SI_RESIST_PROPERTY_FIRE, false, false);
+ //script->set_constant("SI_RESIST_PROPERTY_WIND", SI_RESIST_PROPERTY_WIND, false, false);
+ //script->set_constant("SI_RESIST_PROPERTY_POISON", SI_RESIST_PROPERTY_POISON, false, false);
+ //script->set_constant("SI_RESIST_PROPERTY_SAINT", SI_RESIST_PROPERTY_SAINT, false, false);
+ //script->set_constant("SI_RESIST_PROPERTY_DARKNESS", SI_RESIST_PROPERTY_DARKNESS, false, false);
+ //script->set_constant("SI_RESIST_PROPERTY_TELEKINESIS", SI_RESIST_PROPERTY_TELEKINESIS, false, false);
+ //script->set_constant("SI_RESIST_PROPERTY_UNDEAD", SI_RESIST_PROPERTY_UNDEAD, false, false);
+ script->set_constant("SI_BITESCAR", SI_BITESCAR, false, false);
+ script->set_constant("SI_ARCLOUSEDASH", SI_ARCLOUSEDASH, false, false);
+ script->set_constant("SI_TUNAPARTY", SI_TUNAPARTY, false, false);
+ script->set_constant("SI_SHRIMP", SI_SHRIMP, false, false);
+ script->set_constant("SI_FRESHSHRIMP", SI_FRESHSHRIMP, false, false);
+ //script->set_constant("SI_PERIOD_RECEIVEITEM", SI_PERIOD_RECEIVEITEM, false, false);
+ //script->set_constant("SI_PERIOD_PLUSEXP", SI_PERIOD_PLUSEXP, false, false);
+ //script->set_constant("SI_PERIOD_PLUSJOBEXP", SI_PERIOD_PLUSJOBEXP, false, false);
+ //script->set_constant("SI_RUNEHELM", SI_RUNEHELM, false, false);
+ //script->set_constant("SI_HELM_VERKANA", SI_HELM_VERKANA, false, false);
+ //script->set_constant("SI_HELM_RHYDO", SI_HELM_RHYDO, false, false);
+ //script->set_constant("SI_HELM_TURISUS", SI_HELM_TURISUS, false, false);
+ //script->set_constant("SI_HELM_HAGALAS", SI_HELM_HAGALAS, false, false);
+ //script->set_constant("SI_HELM_ISIA", SI_HELM_ISIA, false, false);
+ //script->set_constant("SI_HELM_ASIR", SI_HELM_ASIR, false, false);
+ //script->set_constant("SI_HELM_URJ", SI_HELM_URJ, false, false);
+ script->set_constant("SI_SUHIDE", SI_SUHIDE, false, false);
+ // 934
+ //script->set_constant("SI_DORAM_BUF_01", SI_DORAM_BUF_01, false, false);
+ //script->set_constant("SI_DORAM_BUF_02", SI_DORAM_BUF_02, false, false);
+ script->set_constant("SI_SPRITEMABLE", SI_SPRITEMABLE, false, false);
+ //script->set_constant("SI_AID_PERIOD_RECEIVEITEM", SI_AID_PERIOD_RECEIVEITEM, false, false);
+ //script->set_constant("SI_AID_PERIOD_PLUSEXP", SI_AID_PERIOD_PLUSEXP, false, false);
+ //script->set_constant("SI_AID_PERIOD_PLUSJOBEXP", SI_AID_PERIOD_PLUSJOBEXP, false, false);
+ //script->set_constant("SI_AID_PERIOD_DEADPENALTY", SI_AID_PERIOD_DEADPENALTY, false, false);
+ //script->set_constant("SI_AID_PERIOD_ADDSTOREITEMCOUNT", SI_AID_PERIOD_ADDSTOREITEMCOUNT, false, false);
+ // 943
+ // 944
+ // 945
+ // 946
+ // 947
+ // 948
+ // 949
+ //script->set_constant("SI_HISS", SI_HISS, false, false);
+ // 951
+ //script->set_constant("SI_NYANGGRASS", SI_NYANGGRASS, false, false);
+ //script->set_constant("SI_CHATTERING", SI_CHATTERING, false, false);
+ // 954
+ // 955
+ // 956
+ // 957
+ // 958
+ // 959
+ // 960
+ //script->set_constant("SI_GROOMING", SI_GROOMING, false, false);
+ //script->set_constant("SI_PROTECTIONOFSHRIMP", SI_PROTECTIONOFSHRIMP, false, false);
+ //script->set_constant("SI_EP16_2_BUFF_SS", SI_EP16_2_BUFF_SS, false, false);
+ //script->set_constant("SI_EP16_2_BUFF_SC", SI_EP16_2_BUFF_SC, false, false);
+ //script->set_constant("SI_EP16_2_BUFF_AC", SI_EP16_2_BUFF_AC, false, false);
+ //script->set_constant("SI_GS_MAGICAL_BULLET", SI_GS_MAGICAL_BULLET, false, false);
+ // 967
+ // 968
+ // 969
+ // 970
+ // 971
+ // 972
+ // 973
+ // 974
+ // 975
+ //script->set_constant("SI_FALLEN_ANGEL", SI_FALLEN_ANGEL, false, false);
+ // 977
+ // 978
+ //script->set_constant("SI_BLAZE_BEAD", SI_BLAZE_BEAD, false, false);
+ //script->set_constant("SI_FROZEN_BEAD", SI_FROZEN_BEAD, false, false);
+ //script->set_constant("SI_BREEZE_BEAD", SI_BREEZE_BEAD, false, false);
+ // 982
+ //script->set_constant("SI_AID_PERIOD_RECEIVEITEM_2ND", SI_AID_PERIOD_RECEIVEITEM_2ND, false, false);
+ //script->set_constant("SI_AID_PERIOD_PLUSEXP_2ND", SI_AID_PERIOD_PLUSEXP_2ND, false, false);
+ //script->set_constant("SI_AID_PERIOD_PLUSJOBEXP_2ND", SI_AID_PERIOD_PLUSJOBEXP_2ND, false, false);
+ //script->set_constant("SI_PRONTERA_JP", SI_PRONTERA_JP, false, false);
+ // 987
+ //script->set_constant("SI_GLOOM_CARD", SI_GLOOM_CARD, false, false);
+ //script->set_constant("SI_PHARAOH_CARD", SI_PHARAOH_CARD, false, false);
+ //script->set_constant("SI_KIEL_CARD", SI_KIEL_CARD, false, false);
+ // 991
+ //script->set_constant("SI_CHEERUP", SI_CHEERUP, false, false);
+ // 993
+ // 994
+ //script->set_constant("SI_S_MANAPOTION", SI_S_MANAPOTION, false, false);
+ //script->set_constant("SI_M_DEFSCROLL", SI_M_DEFSCROLL, false, false);
+ // 997
+ // 998
+ // 999
+ //script->set_constant("SI_AS_RAGGED_GOLEM_CARD", SI_AS_RAGGED_GOLEM_CARD, false, false);
+ //script->set_constant("SI_LHZ_DUN_N1", SI_LHZ_DUN_N1, false, false);
+ //script->set_constant("SI_LHZ_DUN_N2", SI_LHZ_DUN_N2, false, false);
+ //script->set_constant("SI_LHZ_DUN_N3", SI_LHZ_DUN_N3, false, false);
+ //script->set_constant("SI_LHZ_DUN_N4", SI_LHZ_DUN_N4, false, false);
+
+ script->set_constant("SI_MAX", SI_MAX, false, false);
diff --git a/src/map/date.c b/src/map/date.c
index a20578e51..8060db458 100644
--- a/src/map/date.c
+++ b/src/map/date.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -77,6 +77,27 @@ int date_get_sec(void)
return lt->tm_sec;
}
+int date_get_dayofweek(void)
+{
+ time_t t = time(NULL);
+ struct tm *lt = localtime(&t);
+ return lt->tm_wday;
+}
+
+// Returns YYYYMMDD of now
+int date_get_date(void)
+{
+ time_t t;
+ struct tm * lt;
+ t = time(NULL);
+ lt = localtime(&t);
+
+ return
+ (lt->tm_year + 1900) * 10000 +
+ (lt->tm_mon + 1) * 100 +
+ (lt->tm_mday);
+}
+
/*==========================================
* Star gladiator related checks
*------------------------------------------*/
diff --git a/src/map/date.h b/src/map/date.h
index 3a109d1ad..c5fe56d5f 100644
--- a/src/map/date.h
+++ b/src/map/date.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -31,6 +31,8 @@ int date_get_day(void);
int date_get_hour(void);
int date_get_min(void);
int date_get_sec(void);
+int date_get_dayofweek(void);
+int date_get_date(void);
bool is_day_of_sun(void);
bool is_day_of_moon(void);
diff --git a/src/map/duel.c b/src/map/duel.c
index 558dc1d9e..c2c24e37b 100644
--- a/src/map/duel.c
+++ b/src/map/duel.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -33,23 +33,25 @@
#include <string.h>
#include <time.h>
-struct duel_interface duel_s;
+static struct duel_interface duel_s;
struct duel_interface *duel;
/*==========================================
* Duel organizing functions [LuzZza]
*------------------------------------------*/
-void duel_savetime(struct map_session_data* sd) {
+static void duel_savetime(struct map_session_data *sd)
+{
time_t clock;
struct tm *t;
time(&clock);
t = localtime(&clock);
- pc_setglobalreg(sd, script->add_str("PC_LAST_DUEL_TIME"), t->tm_mday*24*60 + t->tm_hour*60 + t->tm_min);
+ pc_setglobalreg(sd, script->add_variable("PC_LAST_DUEL_TIME"), t->tm_mday*24*60 + t->tm_hour*60 + t->tm_min);
}
-int duel_checktime(struct map_session_data* sd) {
+static int duel_checktime(struct map_session_data *sd)
+{
int diff;
time_t clock;
struct tm *t;
@@ -57,12 +59,12 @@ int duel_checktime(struct map_session_data* sd) {
time(&clock);
t = localtime(&clock);
- diff = t->tm_mday*24*60 + t->tm_hour*60 + t->tm_min - pc_readglobalreg(sd, script->add_str("PC_LAST_DUEL_TIME") );
+ diff = t->tm_mday*24*60 + t->tm_hour*60 + t->tm_min - pc_readglobalreg(sd, script->add_variable("PC_LAST_DUEL_TIME") );
return !(diff >= 0 && diff < battle_config.duel_time_interval);
}
-static int duel_showinfo_sub(struct map_session_data* sd, va_list va)
+static int duel_showinfo_sub(struct map_session_data *sd, va_list va)
{
struct map_session_data *ssd = va_arg(va, struct map_session_data*);
int *p = va_arg(va, int*);
@@ -77,7 +79,8 @@ static int duel_showinfo_sub(struct map_session_data* sd, va_list va)
return 1;
}
-void duel_showinfo(const unsigned int did, struct map_session_data* sd) {
+static void duel_showinfo(const unsigned int did, struct map_session_data *sd)
+{
int p=0;
char output[256];
@@ -97,7 +100,8 @@ void duel_showinfo(const unsigned int did, struct map_session_data* sd) {
map->foreachpc(duel_showinfo_sub, sd, &p);
}
-int duel_create(struct map_session_data* sd, const unsigned int maxpl) {
+static int duel_create(struct map_session_data *sd, const unsigned int maxpl)
+{
int i=1;
char output[256];
@@ -120,7 +124,8 @@ int duel_create(struct map_session_data* sd, const unsigned int maxpl) {
return i;
}
-void duel_invite(const unsigned int did, struct map_session_data* sd, struct map_session_data* target_sd) {
+static void duel_invite(const unsigned int did, struct map_session_data *sd, struct map_session_data *target_sd)
+{
char output[256];
nullpo_retv(sd);
@@ -137,7 +142,7 @@ void duel_invite(const unsigned int did, struct map_session_data* sd, struct map
clif->broadcast(&target_sd->bl, output, (int)strlen(output)+1, BC_BLUE, SELF);
}
-static int duel_leave_sub(struct map_session_data* sd, va_list va)
+static int duel_leave_sub(struct map_session_data *sd, va_list va)
{
int did = va_arg(va, int);
nullpo_ret(sd);
@@ -146,7 +151,8 @@ static int duel_leave_sub(struct map_session_data* sd, va_list va)
return 0;
}
-void duel_leave(const unsigned int did, struct map_session_data* sd) {
+static void duel_leave(const unsigned int did, struct map_session_data *sd)
+{
char output[256];
nullpo_retv(sd);
@@ -166,7 +172,8 @@ void duel_leave(const unsigned int did, struct map_session_data* sd) {
clif->maptypeproperty2(&sd->bl,SELF);
}
-void duel_accept(const unsigned int did, struct map_session_data* sd) {
+static void duel_accept(const unsigned int did, struct map_session_data *sd)
+{
char output[256];
nullpo_retv(sd);
@@ -183,7 +190,8 @@ void duel_accept(const unsigned int did, struct map_session_data* sd) {
clif->maptypeproperty2(&sd->bl,SELF);
}
-void duel_reject(const unsigned int did, struct map_session_data* sd) {
+static void duel_reject(const unsigned int did, struct map_session_data *sd)
+{
char output[256];
nullpo_retv(sd);
@@ -195,10 +203,12 @@ void duel_reject(const unsigned int did, struct map_session_data* sd) {
sd->duel_invite = 0;
}
-void do_final_duel(void) {
+static void do_final_duel(void)
+{
}
-void do_init_duel(bool minimal) {
+static void do_init_duel(bool minimal)
+{
if (minimal)
return;
@@ -206,11 +216,12 @@ void do_init_duel(bool minimal) {
}
/*=====================================
-* Default Functions : duel.h
-* Generated by HerculesInterfaceMaker
-* created by Susu
-*-------------------------------------*/
-void duel_defaults(void) {
+ * Default Functions : duel.h
+ * Generated by HerculesInterfaceMaker
+ * created by Susu
+ *-------------------------------------*/
+void duel_defaults(void)
+{
duel = &duel_s;
/* vars */
duel->count = 0;
diff --git a/src/map/duel.h b/src/map/duel.h
index c0af04df6..facb09ff9 100644
--- a/src/map/duel.h
+++ b/src/map/duel.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/map/elemental.c b/src/map/elemental.c
index ae1fda0a2..b7bd5c090 100644
--- a/src/map/elemental.c
+++ b/src/map/elemental.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -57,20 +57,23 @@
#include <stdlib.h>
#include <string.h>
-struct elemental_interface elemental_s;
+static struct elemental_interface elemental_s;
struct elemental_interface *elemental;
-int elemental_search_index(int class_) {
+static int elemental_search_index(int class_)
+{
int i;
ARR_FIND(0, MAX_ELEMENTAL_CLASS, i, elemental->db[i].class_ == class_);
return (i == MAX_ELEMENTAL_CLASS)?-1:i;
}
-bool elemental_class(int class_) {
+static bool elemental_class(int class_)
+{
return (bool)(elemental->search_index(class_) > -1);
}
-struct view_data * elemental_get_viewdata(int class_) {
+static struct view_data *elemental_get_viewdata(int class_)
+{
int i = elemental->search_index(class_);
if( i < 0 )
return 0;
@@ -78,7 +81,8 @@ struct view_data * elemental_get_viewdata(int class_) {
return &elemental->db[i].vd;
}
-int elemental_create(struct map_session_data *sd, int class_, unsigned int lifetime) {
+static int elemental_create(struct map_session_data *sd, int class_, unsigned int lifetime)
+{
struct s_elemental ele;
struct s_elemental_db *db;
int i, summon_level, skill_level;
@@ -169,7 +173,8 @@ int elemental_create(struct map_session_data *sd, int class_, unsigned int lifet
return 1;
}
-int elemental_get_lifetime(struct elemental_data *ed) {
+static int elemental_get_lifetime(struct elemental_data *ed)
+{
const struct TimerData * td;
if( ed == NULL || ed->summon_timer == INVALID_TIMER )
return 0;
@@ -178,7 +183,8 @@ int elemental_get_lifetime(struct elemental_data *ed) {
return (td != NULL) ? DIFF_TICK32(td->tick, timer->gettick()) : 0;
}
-int elemental_save(struct elemental_data *ed) {
+static int elemental_save(struct elemental_data *ed)
+{
nullpo_retr(1, ed);
ed->elemental.mode = ed->battle_status.mode;
ed->elemental.hp = ed->battle_status.hp;
@@ -197,7 +203,8 @@ int elemental_save(struct elemental_data *ed) {
return 1;
}
-int elemental_summon_end_timer(int tid, int64 tick, int id, intptr_t data) {
+static int elemental_summon_end_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data *sd;
struct elemental_data *ed;
@@ -217,14 +224,16 @@ int elemental_summon_end_timer(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-void elemental_summon_stop(struct elemental_data *ed) {
+static void elemental_summon_stop(struct elemental_data *ed)
+{
nullpo_retv(ed);
if( ed->summon_timer != INVALID_TIMER )
timer->delete(ed->summon_timer, elemental->summon_end_timer);
ed->summon_timer = INVALID_TIMER;
}
-int elemental_delete(struct elemental_data *ed, int reply) {
+static int elemental_delete(struct elemental_data *ed, int reply)
+{
struct map_session_data *sd;
nullpo_ret(ed);
@@ -246,7 +255,8 @@ int elemental_delete(struct elemental_data *ed, int reply) {
return unit->remove_map(&ed->bl, 0, ALC_MARK);
}
-void elemental_summon_init(struct elemental_data *ed) {
+static void elemental_summon_init(struct elemental_data *ed)
+{
nullpo_retv(ed);
if (ed->summon_timer == INVALID_TIMER)
ed->summon_timer = timer->add(timer->gettick() + ed->elemental.life_time, elemental->summon_end_timer, ed->master->bl.id, 0);
@@ -254,7 +264,7 @@ void elemental_summon_init(struct elemental_data *ed) {
ed->regen.state.block = 0;
}
-int elemental_data_received(const struct s_elemental *ele, bool flag)
+static int elemental_data_received(const struct s_elemental *ele, bool flag)
{
struct map_session_data *sd;
struct elemental_data *ed;
@@ -318,7 +328,8 @@ int elemental_data_received(const struct s_elemental *ele, bool flag)
return 1;
}
-int elemental_clean_single_effect(struct elemental_data *ed, uint16 skill_id) {
+static int elemental_clean_single_effect(struct elemental_data *ed, uint16 skill_id)
+{
struct block_list *bl;
sc_type type = status->skill2sc(skill_id);
@@ -365,7 +376,8 @@ int elemental_clean_single_effect(struct elemental_data *ed, uint16 skill_id) {
return 1;
}
-int elemental_clean_effect(struct elemental_data *ed) {
+static int elemental_clean_effect(struct elemental_data *ed)
+{
struct map_session_data *sd;
nullpo_ret(ed);
@@ -425,7 +437,8 @@ int elemental_clean_effect(struct elemental_data *ed) {
return 1;
}
-int elemental_action(struct elemental_data *ed, struct block_list *bl, int64 tick) {
+static int elemental_action(struct elemental_data *ed, struct block_list *bl, int64 tick)
+{
struct skill_condition req;
uint16 skill_id, skill_lv;
int i;
@@ -506,7 +519,8 @@ int elemental_action(struct elemental_data *ed, struct block_list *bl, int64 tic
* Action that elemental perform after changing mode.
* Activates one of the skills of the new mode.
*-------------------------------------------------------------*/
-int elemental_change_mode_ack(struct elemental_data *ed, int mode) {
+static int elemental_change_mode_ack(struct elemental_data *ed, int mode)
+{
struct block_list *bl = &ed->master->bl;
uint16 skill_id, skill_lv;
int i;
@@ -552,7 +566,7 @@ int elemental_change_mode_ack(struct elemental_data *ed, int mode) {
* @param mode The new mode.
* @retval 1 in case of success.
*/
-int elemental_change_mode(struct elemental_data *ed, uint32 mode)
+static int elemental_change_mode(struct elemental_data *ed, uint32 mode)
{
int skillmode = EL_SKILLMODE_PASIVE;
nullpo_ret(ed);
@@ -580,7 +594,8 @@ int elemental_change_mode(struct elemental_data *ed, uint32 mode)
return 1;
}
-void elemental_heal(struct elemental_data *ed, int hp, int sp) {
+static void elemental_heal(struct elemental_data *ed, int hp, int sp)
+{
nullpo_retv(ed);
if( hp )
clif->elemental_updatestatus(ed->master, SP_HP);
@@ -588,12 +603,14 @@ void elemental_heal(struct elemental_data *ed, int hp, int sp) {
clif->elemental_updatestatus(ed->master, SP_SP);
}
-int elemental_dead(struct elemental_data *ed) {
+static int elemental_dead(struct elemental_data *ed)
+{
elemental->delete(ed, 1);
return 0;
}
-int elemental_unlocktarget(struct elemental_data *ed) {
+static int elemental_unlocktarget(struct elemental_data *ed)
+{
nullpo_ret(ed);
ed->target_id = 0;
@@ -602,7 +619,8 @@ int elemental_unlocktarget(struct elemental_data *ed) {
return 0;
}
-int elemental_skillnotok(uint16 skill_id, struct elemental_data *ed) {
+static int elemental_skillnotok(uint16 skill_id, struct elemental_data *ed)
+{
int idx = skill->get_index(skill_id);
nullpo_retr(1,ed);
@@ -612,7 +630,8 @@ int elemental_skillnotok(uint16 skill_id, struct elemental_data *ed) {
return skill->not_ok(skill_id, ed->master);
}
-struct skill_condition elemental_skill_get_requirements(uint16 skill_id, uint16 skill_lv){
+static struct skill_condition elemental_skill_get_requirements(uint16 skill_id, uint16 skill_lv)
+{
struct skill_condition req;
int idx = skill->get_index(skill_id);
@@ -630,7 +649,8 @@ struct skill_condition elemental_skill_get_requirements(uint16 skill_id, uint16
return req;
}
-int elemental_set_target( struct map_session_data *sd, struct block_list *bl ) {
+static int elemental_set_target(struct map_session_data *sd, struct block_list *bl)
+{
struct elemental_data *ed;
nullpo_ret(sd);
@@ -650,7 +670,8 @@ int elemental_set_target( struct map_session_data *sd, struct block_list *bl ) {
return 1;
}
-int elemental_ai_sub_timer_activesearch(struct block_list *bl, va_list ap) {
+static int elemental_ai_sub_timer_activesearch(struct block_list *bl, va_list ap)
+{
struct elemental_data *ed;
struct block_list **target;
int dist;
@@ -689,7 +710,8 @@ int elemental_ai_sub_timer_activesearch(struct block_list *bl, va_list ap) {
return 0;
}
-int elemental_ai_sub_timer(struct elemental_data *ed, struct map_session_data *sd, int64 tick) {
+static int elemental_ai_sub_timer(struct elemental_data *ed, struct map_session_data *sd, int64 tick)
+{
struct block_list *target = NULL;
int master_dist, view_range;
uint32 mode;
@@ -805,7 +827,8 @@ int elemental_ai_sub_timer(struct elemental_data *ed, struct map_session_data *s
return 0;
}
-int elemental_ai_sub_foreachclient(struct map_session_data *sd, va_list ap) {
+static int elemental_ai_sub_foreachclient(struct map_session_data *sd, va_list ap)
+{
int64 tick = va_arg(ap,int64);
nullpo_ret(sd);
if(sd->status.ele_id && sd->ed)
@@ -814,12 +837,14 @@ int elemental_ai_sub_foreachclient(struct map_session_data *sd, va_list ap) {
return 0;
}
-int elemental_ai_timer(int tid, int64 tick, int id, intptr_t data) {
+static int elemental_ai_timer(int tid, int64 tick, int id, intptr_t data)
+{
map->foreachpc(elemental->ai_sub_foreachclient,tick);
return 0;
}
-int read_elementaldb(void) {
+static int read_elementaldb(void)
+{
FILE *fp;
char line[1024], *p;
char *str[26];
@@ -885,7 +910,7 @@ int read_elementaldb(void) {
estatus->race = atoi(str[20]);
ele = atoi(str[21]);
- estatus->def_ele = ele%10;
+ estatus->def_ele = ele % ELE_MAX;
estatus->ele_lv = ele/20;
if( estatus->def_ele >= ELE_MAX ) {
ShowWarning("Elemental %d has invalid element type %d (max element is %d)\n", db->class_, estatus->def_ele, ELE_MAX - 1);
@@ -911,7 +936,8 @@ int read_elementaldb(void) {
return 0;
}
-int read_elemental_skilldb(void) {
+static int read_elemental_skilldb(void)
+{
FILE *fp;
char line[1024], *p;
char *str[4];
@@ -983,16 +1009,19 @@ int read_elemental_skilldb(void) {
return 0;
}
-void reload_elementaldb(void) {
+static void reload_elementaldb(void)
+{
elemental->read_db();
elemental->reload_skilldb();
}
-void reload_elemental_skilldb(void) {
+static void reload_elemental_skilldb(void)
+{
elemental->read_skilldb();
}
-int do_init_elemental(bool minimal) {
+static int do_init_elemental(bool minimal)
+{
if (minimal)
return 0;
@@ -1005,16 +1034,18 @@ int do_init_elemental(bool minimal) {
return 0;
}
-void do_final_elemental(void) {
+static void do_final_elemental(void)
+{
return;
}
/*=====================================
-* Default Functions : elemental.h
-* Generated by HerculesInterfaceMaker
-* created by Susu
-*-------------------------------------*/
-void elemental_defaults(void) {
+ * Default Functions : elemental.h
+ * Generated by HerculesInterfaceMaker
+ * created by Susu
+ *-------------------------------------*/
+void elemental_defaults(void)
+{
elemental = &elemental_s;
/* */
diff --git a/src/map/elemental.h b/src/map/elemental.h
index f13d095df..0c6b4ec27 100644
--- a/src/map/elemental.h
+++ b/src/map/elemental.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/map/guild.c b/src/map/guild.c
index 6e5b1c539..17bf7fa6b 100644
--- a/src/map/guild.c
+++ b/src/map/guild.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -51,13 +51,13 @@
#include <stdlib.h>
#include <string.h>
-struct guild_interface guild_s;
+static struct guild_interface guild_s;
struct guild_interface *guild;
/*==========================================
* Retrieves and validates the sd pointer for this guild member [Skotlex]
*------------------------------------------*/
-struct map_session_data *guild_sd_check(int guild_id, int account_id, int char_id)
+static struct map_session_data *guild_sd_check(int guild_id, int account_id, int char_id)
{
struct map_session_data *sd = map->id2sd(account_id);
@@ -74,14 +74,16 @@ struct map_session_data *guild_sd_check(int guild_id, int account_id, int char_i
}
// Modified [Komurka]
-int guild_skill_get_max (int id) {
+static int guild_skill_get_max(int id)
+{
if (id < GD_SKILLBASE || id >= GD_SKILLBASE+MAX_GUILDSKILL)
return 0;
return guild->skill_tree[id-GD_SKILLBASE].max;
}
// Retrieve skill_lv learned by guild
-int guild_checkskill(struct guild *g, int id) {
+static int guild_checkskill(struct guild *g, int id)
+{
int idx = id - GD_SKILLBASE;
nullpo_ret(g);
if (idx < 0 || idx >= MAX_GUILDSKILL)
@@ -92,7 +94,7 @@ int guild_checkskill(struct guild *g, int id) {
/*==========================================
* guild_skill_tree.txt reading - from jA [Komurka]
*------------------------------------------*/
-bool guild_read_guildskill_tree_db(char* split[], int columns, int current)
+static bool guild_read_guildskill_tree_db(char *split[], int columns, int current)
{// <skill id>,<max lv>,<req id1>,<req lv1>,<req id2>,<req lv2>,<req id3>,<req lv3>,<req id4>,<req lv4>,<req id5>,<req lv5>
int k, id, skill_id;
@@ -125,7 +127,7 @@ bool guild_read_guildskill_tree_db(char* split[], int columns, int current)
/*==========================================
* Guild skill check - from jA [Komurka]
*------------------------------------------*/
-int guild_check_skill_require(struct guild *g,int id)
+static int guild_check_skill_require(struct guild *g, int id)
{
int i;
int idx = id-GD_SKILLBASE;
@@ -145,7 +147,7 @@ int guild_check_skill_require(struct guild *g,int id)
return 1;
}
-bool guild_read_castledb(char* str[], int columns, int current)
+static bool guild_read_castledb(char *str[], int columns, int current)
{// <castle id>,<map name>,<castle name>,<castle event>[,<reserved/unused switch flag>]
struct guild_castle *gc;
int index;
@@ -169,13 +171,13 @@ bool guild_read_castledb(char* str[], int columns, int current)
}
/// lookup: guild id -> guild*
-struct guild* guild_search(int guild_id)
+static struct guild *guild_search(int guild_id)
{
return (struct guild*)idb_get(guild->db,guild_id);
}
/// lookup: guild name -> guild*
-struct guild* guild_searchname(char* str)
+static struct guild *guild_searchname(char *str)
{
struct guild* g;
struct DBIterator *iter = db_iterator(guild->db);
@@ -192,13 +194,13 @@ struct guild* guild_searchname(char* str)
}
/// lookup: castle id -> castle*
-struct guild_castle* guild_castle_search(int gcid)
+static struct guild_castle *guild_castle_search(int gcid)
{
return (struct guild_castle*)idb_get(guild->castle_db,gcid);
}
/// lookup: map index -> castle*
-struct guild_castle* guild_mapindex2gc(short map_index)
+static struct guild_castle *guild_mapindex2gc(short map_index)
{
struct guild_castle* gc;
struct DBIterator *iter = db_iterator(guild->castle_db);
@@ -214,12 +216,12 @@ struct guild_castle* guild_mapindex2gc(short map_index)
}
/// lookup: map name -> castle*
-struct guild_castle* guild_mapname2gc(const char* mapname)
+static struct guild_castle *guild_mapname2gc(const char *mapname)
{
return guild->mapindex2gc(mapindex->name2id(mapname));
}
-struct map_session_data* guild_getavailablesd(struct guild* g)
+static struct map_session_data *guild_getavailablesd(struct guild *g)
{
int i;
@@ -230,7 +232,7 @@ struct map_session_data* guild_getavailablesd(struct guild* g)
}
/// lookup: player AID/CID -> member index
-int guild_getindex(const struct guild *g, int account_id, int char_id)
+static int guild_getindex(const struct guild *g, int account_id, int char_id)
{
int i;
@@ -245,7 +247,7 @@ int guild_getindex(const struct guild *g, int account_id, int char_id)
}
/// lookup: player sd -> member position
-int guild_getposition(struct guild* g, struct map_session_data* sd)
+static int guild_getposition(struct guild *g, struct map_session_data *sd)
{
int i;
@@ -257,7 +259,7 @@ int guild_getposition(struct guild* g, struct map_session_data* sd)
}
//Creation of member information
-void guild_makemember(struct guild_member *m,struct map_session_data *sd)
+static void guild_makemember(struct guild_member *m, struct map_session_data *sd)
{
nullpo_retv(sd);
nullpo_retv(m);
@@ -275,6 +277,7 @@ void guild_makemember(struct guild_member *m,struct map_session_data *sd)
m->online = 1;
m->position = MAX_GUILDPOSITION-1;
memcpy(m->name,sd->status.name,NAME_LENGTH);
+ m->last_login = (uint32)time(NULL); // When player create or join a guild the date is updated
return;
}
@@ -282,7 +285,7 @@ void guild_makemember(struct guild_member *m,struct map_session_data *sd)
* Server cache to be flushed to inter the Guild EXP
* @see DBApply
*/
-int guild_payexp_timer_sub(union DBKey key, struct DBData *data, va_list ap)
+static int guild_payexp_timer_sub(union DBKey key, struct DBData *data, va_list ap)
{
int i;
struct guild_expcache *c;
@@ -310,7 +313,8 @@ int guild_payexp_timer_sub(union DBKey key, struct DBData *data, va_list ap)
return 0;
}
-int guild_payexp_timer(int tid, int64 tick, int id, intptr_t data) {
+static int guild_payexp_timer(int tid, int64 tick, int id, intptr_t data)
+{
guild->expcache_db->clear(guild->expcache_db,guild->payexp_timer_sub);
return 0;
}
@@ -319,7 +323,7 @@ int guild_payexp_timer(int tid, int64 tick, int id, intptr_t data) {
* Taken from party_send_xy_timer_sub. [Skotlex]
* @see DBApply
*/
-int guild_send_xy_timer_sub(union DBKey key, struct DBData *data, va_list ap)
+static int guild_send_xy_timer_sub(union DBKey key, struct DBData *data, va_list ap)
{
struct guild *g = DB->data2ptr(data);
int i;
@@ -344,12 +348,13 @@ int guild_send_xy_timer_sub(union DBKey key, struct DBData *data, va_list ap)
}
//Code from party_send_xy_timer [Skotlex]
-int guild_send_xy_timer(int tid, int64 tick, int id, intptr_t data) {
+static int guild_send_xy_timer(int tid, int64 tick, int id, intptr_t data)
+{
guild->db->foreach(guild->db,guild->send_xy_timer_sub,tick);
return 0;
}
-int guild_send_dot_remove(struct map_session_data *sd)
+static int guild_send_dot_remove(struct map_session_data *sd)
{
nullpo_ret(sd);
if (sd->status.guild_id)
@@ -358,13 +363,18 @@ int guild_send_dot_remove(struct map_session_data *sd)
}
//------------------------------------------------------------------------
-int guild_create(struct map_session_data *sd, const char *name)
+static int guild_create(struct map_session_data *sd, const char *name)
{
char tname[NAME_LENGTH];
struct guild_member m;
nullpo_ret(sd);
nullpo_ret(name);
+ if (sd->clan != NULL) {
+ clif->messagecolor_self(sd->fd, COLOR_RED, "You cannot create a guild because you are in a clan.");
+ return 0;
+ }
+
safestrncpy(tname, name, NAME_LENGTH);
trim(tname);
@@ -387,7 +397,8 @@ int guild_create(struct map_session_data *sd, const char *name)
}
//Whether or not to create guild
-int guild_created(int account_id,int guild_id) {
+static int guild_created(int account_id, int guild_id)
+{
struct map_session_data *sd=map->id2sd(account_id);
if(sd==NULL)
@@ -408,13 +419,13 @@ int guild_created(int account_id,int guild_id) {
}
//Information request
-int guild_request_info(int guild_id)
+static int guild_request_info(int guild_id)
{
return intif->guild_request_info(guild_id);
}
//Information request with event
-int guild_npc_request_info(int guild_id,const char *event)
+static int guild_npc_request_info(int guild_id, const char *event)
{
if (guild->search(guild_id) != NULL) {
if (event != NULL && *event != '\0')
@@ -437,7 +448,7 @@ int guild_npc_request_info(int guild_id,const char *event)
}
//Confirmation of the character belongs to guild
-int guild_check_member(const struct guild *g)
+static int guild_check_member(const struct guild *g)
{
int i;
struct map_session_data *sd;
@@ -463,7 +474,7 @@ int guild_check_member(const struct guild *g)
}
//Delete association with guild_id for all characters
-int guild_recv_noinfo(int guild_id)
+static int guild_recv_noinfo(int guild_id)
{
struct map_session_data *sd;
struct s_mapiterator* iter;
@@ -479,7 +490,7 @@ int guild_recv_noinfo(int guild_id)
}
//Get and display information for all member
-int guild_recv_info(const struct guild *sg)
+static int guild_recv_info(const struct guild *sg)
{
struct guild *g,before;
int i,bm,m;
@@ -546,7 +557,7 @@ int guild_recv_info(const struct guild *sg)
if ((sd = map->nick2sd(sg->master)) != NULL) {
//If the guild master is online the first time the guild_info is received,
//that means he was the first to join, so apply guild skill blocking here.
- if( battle_config.guild_skill_relog_delay )
+ if( battle_config.guild_skill_relog_delay == 1)
guild->block_skill(sd, 300000);
//Also set the guild master flag.
@@ -628,7 +639,8 @@ int guild_recv_info(const struct guild *sg)
/*=============================================
* Player sd send a guild invatation to player tsd to join his guild
*--------------------------------------------*/
-int guild_invite(struct map_session_data *sd, struct map_session_data *tsd) {
+static int guild_invite(struct map_session_data *sd, struct map_session_data *tsd)
+{
struct guild *g;
int i;
@@ -682,7 +694,8 @@ int guild_invite(struct map_session_data *sd, struct map_session_data *tsd) {
/// Guild invitation reply.
/// flag: 0:rejected, 1:accepted
-int guild_reply_invite(struct map_session_data* sd, int guild_id, int flag) {
+static int guild_reply_invite(struct map_session_data *sd, int guild_id, int flag)
+{
struct map_session_data* tsd;
nullpo_ret(sd);
@@ -708,7 +721,6 @@ int guild_reply_invite(struct map_session_data* sd, int guild_id, int flag) {
}
else
{// accepted
- struct guild_member m;
struct guild* g;
int i;
@@ -728,8 +740,8 @@ int guild_reply_invite(struct map_session_data* sd, int guild_id, int flag) {
return 0;
}
- guild->makemember(&m,sd);
- intif->guild_addmember(guild_id, &m);
+ guild->makemember(&g->member[i], sd);
+ intif->guild_addmember(guild_id, &g->member[i]);
//TODO: send a minimap update to this player
}
@@ -740,7 +752,7 @@ int guild_reply_invite(struct map_session_data* sd, int guild_id, int flag) {
//- If guild is not in memory, it is requested
//- Otherwise sd pointer is set up.
//- Player must be authed and must belong to a guild before invoking this method
-void guild_member_joined(struct map_session_data *sd)
+static void guild_member_joined(struct map_session_data *sd)
{
struct guild* g;
int i;
@@ -754,7 +766,7 @@ void guild_member_joined(struct map_session_data *sd)
// set the Guild Master flag
sd->state.gmaster_flag = 1;
// prevent Guild Skills from being used directly after relog
- if( battle_config.guild_skill_relog_delay )
+ if( battle_config.guild_skill_relog_delay == 1 )
guild->block_skill(sd, 300000);
}
i = guild->getindex(g, sd->status.account_id, sd->status.char_id);
@@ -774,7 +786,8 @@ void guild_member_joined(struct map_session_data *sd)
/*==========================================
* Add a player to a given guild_id
*----------------------------------------*/
-int guild_member_added(int guild_id,int account_id,int char_id,int flag) {
+static int guild_member_added(int guild_id, int account_id, int char_id, int flag)
+{
struct map_session_data *sd = map->id2sd(account_id),*sd2;
struct guild *g;
@@ -815,6 +828,11 @@ int guild_member_added(int guild_id,int account_id,int char_id,int flag) {
//Next line commented because it do nothing, look at guild_recv_info [LuzZza]
//clif->charnameupdate(sd); //Update display name [Skotlex]
+ // Makes the character join their respective guild's channel for #ally chat
+ if (channel->config->ally && channel->config->ally_autojoin) {
+ channel->join(g->channel, sd, "", true);
+ }
+
return 0;
}
@@ -822,7 +840,7 @@ int guild_member_added(int guild_id,int account_id,int char_id,int flag) {
* Player request leaving a given guild_id
* mes - non null terminated string
*----------------------------------------*/
-int guild_leave(struct map_session_data* sd, int guild_id, int account_id, int char_id, const char* mes)
+static int guild_leave(struct map_session_data *sd, int guild_id, int account_id, int char_id, const char *mes)
{
struct guild *g;
@@ -851,7 +869,8 @@ int guild_leave(struct map_session_data* sd, int guild_id, int account_id, int c
* Request remove a player to a given guild_id
* mes - non null terminated string
*----------------------------------------*/
-int guild_expulsion(struct map_session_data* sd, int guild_id, int account_id, int char_id, const char* mes) {
+static int guild_expulsion(struct map_session_data *sd, int guild_id, int account_id, int char_id, const char *mes)
+{
struct map_session_data *tsd;
struct guild *g;
int i,ps;
@@ -886,7 +905,7 @@ int guild_expulsion(struct map_session_data* sd, int guild_id, int account_id, i
return 0;
}
-int guild_member_withdraw(int guild_id, int account_id, int char_id, int flag, const char* name, const char* mes)
+static int guild_member_withdraw(int guild_id, int account_id, int char_id, int flag, const char *name, const char *mes)
{
int i;
struct guild* g = guild->search(guild_id);
@@ -910,9 +929,9 @@ int guild_member_withdraw(int guild_id, int account_id, int char_id, int flag, c
#endif
if(!flag)
- clif->guild_leave(online_member_sd, name, mes);
+ clif->guild_leave(online_member_sd, name, char_id, mes);
else
- clif->guild_expulsion(online_member_sd, name, mes, account_id);
+ clif->guild_expulsion(online_member_sd, name, char_id, mes, account_id);
// remove member from guild
memset(&g->member[i],0,sizeof(struct guild_member));
@@ -942,7 +961,8 @@ int guild_member_withdraw(int guild_id, int account_id, int char_id, int flag, c
return 0;
}
-void guild_retrieveitembound(int char_id,int aid,int guild_id) {
+static void guild_retrieveitembound(int char_id, int aid, int guild_id)
+{
#ifdef GP_BOUND_ITEMS
struct map_session_data *sd = map->charid2sd(char_id);
if (sd != NULL) { //Character is online
@@ -964,8 +984,9 @@ void guild_retrieveitembound(int char_id,int aid,int guild_id) {
#endif
}
-int guild_send_memberinfoshort(struct map_session_data *sd,int online)
-{ // cleaned up [LuzZza]
+// cleaned up [LuzZza]
+static int guild_send_memberinfoshort(struct map_session_data *sd, int online)
+{
struct guild *g;
nullpo_ret(sd);
@@ -996,8 +1017,9 @@ int guild_send_memberinfoshort(struct map_session_data *sd,int online)
return 0;
}
-int guild_recv_memberinfoshort(int guild_id, int account_id, int char_id, int online, int lv, int16 class)
-{ // cleaned up [LuzZza]
+// cleaned up [LuzZza]
+static int guild_recv_memberinfoshort(int guild_id, int account_id, int char_id, int online, int lv, int16 class, uint32 last_login)
+{
int i, alv, c, idx = INDEX_NOT_FOUND, om = 0, oldonline = -1;
struct guild *g = guild->search(guild_id);
@@ -1012,6 +1034,7 @@ int guild_recv_memberinfoshort(int guild_id, int account_id, int char_id, int on
m->online=online;
m->lv=lv;
m->class = class;
+ m->last_login = last_login;
idx=i;
}
alv+=m->lv;
@@ -1061,7 +1084,7 @@ int guild_recv_memberinfoshort(int guild_id, int account_id, int char_id, int on
/*====================================================
* Send a message to whole guild
*---------------------------------------------------*/
-int guild_send_message(struct map_session_data *sd, const char *mes)
+static int guild_send_message(struct map_session_data *sd, const char *mes)
{
int len = (int)strlen(mes);
nullpo_ret(sd);
@@ -1080,7 +1103,7 @@ int guild_send_message(struct map_session_data *sd, const char *mes)
/*====================================================
* Guild receive a message, will be displayed to whole member
*---------------------------------------------------*/
-int guild_recv_message(int guild_id,int account_id,const char *mes,int len)
+static int guild_recv_message(int guild_id, int account_id, const char *mes, int len)
{
struct guild *g;
if( (g=guild->search(guild_id))==NULL)
@@ -1092,7 +1115,7 @@ int guild_recv_message(int guild_id,int account_id,const char *mes,int len)
/*====================================================
* Member changing position in guild
*---------------------------------------------------*/
-int guild_change_memberposition(int guild_id,int account_id,int char_id,short idx)
+static int guild_change_memberposition(int guild_id, int account_id, int char_id, short idx)
{
return intif->guild_change_memberinfo(guild_id,account_id,char_id,GMI_POSITION,&idx,sizeof(idx));
}
@@ -1100,7 +1123,7 @@ int guild_change_memberposition(int guild_id,int account_id,int char_id,short id
/*====================================================
* Notification of new position for member
*---------------------------------------------------*/
-int guild_memberposition_changed(struct guild *g,int idx,int pos)
+static int guild_memberposition_changed(struct guild *g, int idx, int pos)
{
nullpo_ret(g);
Assert_ret(idx >= 0 && idx < MAX_GUILD);
@@ -1110,14 +1133,14 @@ int guild_memberposition_changed(struct guild *g,int idx,int pos)
// Update char position in client [LuzZza]
if(g->member[idx].sd != NULL)
- clif->charnameupdate(g->member[idx].sd);
+ clif->guild_position_selected(g->member[idx].sd);
return 0;
}
/*====================================================
* Change guild title or member
*---------------------------------------------------*/
-int guild_change_position(int guild_id,int idx,int mode,int exp_mode,const char *name)
+static int guild_change_position(int guild_id, int idx, int mode, int exp_mode, const char *name)
{
struct guild_position p;
nullpo_ret(name);
@@ -1132,7 +1155,7 @@ int guild_change_position(int guild_id,int idx,int mode,int exp_mode,const char
/*====================================================
* Notification of member has changed his guild title
*---------------------------------------------------*/
-int guild_position_changed(int guild_id, int idx, const struct guild_position *p)
+static int guild_position_changed(int guild_id, int idx, const struct guild_position *p)
{
struct guild *g=guild->search(guild_id);
int i;
@@ -1146,14 +1169,14 @@ int guild_position_changed(int guild_id, int idx, const struct guild_position *p
// Update char name in client [LuzZza]
for(i=0;i<g->max_member;i++)
if(g->member[i].position == idx && g->member[i].sd != NULL)
- clif->charnameupdate(g->member[i].sd);
+ clif->guild_position_selected(g->member[i].sd);
return 0;
}
/*====================================================
* Change guild notice
*---------------------------------------------------*/
-int guild_change_notice(struct map_session_data *sd,int guild_id,const char *mes1,const char *mes2)
+static int guild_change_notice(struct map_session_data *sd, int guild_id, const char *mes1, const char *mes2)
{
nullpo_ret(sd);
@@ -1165,7 +1188,7 @@ int guild_change_notice(struct map_session_data *sd,int guild_id,const char *mes
/*====================================================
* Notification of guild has changed his notice
*---------------------------------------------------*/
-int guild_notice_changed(int guild_id,const char *mes1,const char *mes2)
+static int guild_notice_changed(int guild_id, const char *mes1, const char *mes2)
{
int i;
struct guild *g=guild->search(guild_id);
@@ -1188,14 +1211,14 @@ int guild_notice_changed(int guild_id,const char *mes1,const char *mes2)
/*====================================================
* Change guild emblem
*---------------------------------------------------*/
-int guild_change_emblem(struct map_session_data *sd,int len,const char *data)
+static int guild_change_emblem(struct map_session_data *sd, int len, const char *data)
{
struct guild *g;
nullpo_ret(sd);
if (battle_config.require_glory_guild &&
!((g = sd->guild) && guild->checkskill(g, GD_GLORYGUILD)>0)) {
- clif->skill_fail(sd,GD_GLORYGUILD,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, GD_GLORYGUILD, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
@@ -1205,7 +1228,7 @@ int guild_change_emblem(struct map_session_data *sd,int len,const char *data)
/*====================================================
* Notification of guild emblem changed
*---------------------------------------------------*/
-int guild_emblem_changed(int len,int guild_id,int emblem_id,const char *data)
+static int guild_emblem_changed(int len, int guild_id, int emblem_id, const char *data)
{
int i;
struct map_session_data *sd;
@@ -1265,7 +1288,7 @@ int guild_emblem_changed(int len,int guild_id,int emblem_id,const char *data)
/**
* @see DBCreateData
*/
-struct DBData create_expcache(union DBKey key, va_list args)
+static struct DBData create_expcache(union DBKey key, va_list args)
{
struct guild_expcache *c;
struct map_session_data *sd = va_arg(args, struct map_session_data*);
@@ -1282,7 +1305,8 @@ struct DBData create_expcache(union DBKey key, va_list args)
/*====================================================
* Return taxed experience from player sd to guild
*---------------------------------------------------*/
-unsigned int guild_payexp(struct map_session_data *sd,unsigned int exp) {
+static uint64 guild_payexp(struct map_session_data *sd, uint64 exp)
+{
struct guild *g;
struct guild_expcache *c;
int per;
@@ -1315,7 +1339,7 @@ unsigned int guild_payexp(struct map_session_data *sd,unsigned int exp) {
* Add this experience to guild exp
* [Celest]
*---------------------------------------------------*/
-int guild_getexp(struct map_session_data *sd,int exp)
+static int guild_getexp(struct map_session_data *sd, int exp)
{
struct guild_expcache *c;
nullpo_ret(sd);
@@ -1334,7 +1358,7 @@ int guild_getexp(struct map_session_data *sd,int exp)
/*====================================================
* Ask to increase guildskill skill_id
*---------------------------------------------------*/
-int guild_skillup(struct map_session_data *sd, uint16 skill_id)
+static int guild_skillup(struct map_session_data *sd, uint16 skill_id)
{
struct guild* g;
int idx = skill_id - GD_SKILLBASE;
@@ -1358,7 +1382,8 @@ int guild_skillup(struct map_session_data *sd, uint16 skill_id)
/*====================================================
* Notification of guildskill skill_id increase request
*---------------------------------------------------*/
-int guild_skillupack(int guild_id,uint16 skill_id,int account_id) {
+static int guild_skillupack(int guild_id, uint16 skill_id, int account_id)
+{
struct map_session_data *sd=map->id2sd(account_id);
struct guild *g=guild->search(guild_id);
int i;
@@ -1387,7 +1412,8 @@ int guild_skillupack(int guild_id,uint16 skill_id,int account_id) {
return 0;
}
-void guild_guildaura_refresh(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv) {
+static void guild_guildaura_refresh(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv)
+{
struct skill_unit_group* group = NULL;
int type = status->skill2sc(skill_id);
nullpo_retv(sd);
@@ -1413,7 +1439,7 @@ void guild_guildaura_refresh(struct map_session_data *sd, uint16 skill_id, uint1
* 0 = allied
* 1 = enemy
*---------------------------------------------------*/
-int guild_get_alliance_count(struct guild *g,int flag)
+static int guild_get_alliance_count(struct guild *g, int flag)
{
int i,c;
@@ -1427,7 +1453,7 @@ int guild_get_alliance_count(struct guild *g,int flag)
}
// Blocks all guild skills which have a common delay time.
-void guild_block_skill(struct map_session_data *sd, int time)
+static void guild_block_skill(struct map_session_data *sd, int time)
{
uint16 skill_id[] = { GD_BATTLEORDER, GD_REGENERATION, GD_RESTORE, GD_EMERGENCYCALL };
int i;
@@ -1442,7 +1468,7 @@ void guild_block_skill(struct map_session_data *sd, int time)
* 1 = enemy
* Returns true if yes.
*---------------------------------------------------*/
-int guild_check_alliance(int guild_id1, int guild_id2, int flag)
+static int guild_check_alliance(int guild_id1, int guild_id2, int flag)
{
struct guild *g;
int i;
@@ -1458,7 +1484,8 @@ int guild_check_alliance(int guild_id1, int guild_id2, int flag)
/*====================================================
* Player sd, asking player tsd an alliance between their 2 guilds
*---------------------------------------------------*/
-int guild_reqalliance(struct map_session_data *sd,struct map_session_data *tsd) {
+static int guild_reqalliance(struct map_session_data *sd, struct map_session_data *tsd)
+{
struct guild *g[2];
int i;
@@ -1514,7 +1541,8 @@ int guild_reqalliance(struct map_session_data *sd,struct map_session_data *tsd)
/*====================================================
* Player sd, answer to player tsd (account_id) for an alliance request
*---------------------------------------------------*/
-int guild_reply_reqalliance(struct map_session_data *sd,int account_id,int flag) {
+static int guild_reply_reqalliance(struct map_session_data *sd, int account_id, int flag)
+{
struct map_session_data *tsd;
nullpo_ret(sd);
@@ -1574,7 +1602,8 @@ int guild_reply_reqalliance(struct map_session_data *sd,int account_id,int flag)
/*====================================================
* Player sd asking to break alliance with guild guild_id
*---------------------------------------------------*/
-int guild_delalliance(struct map_session_data *sd,int guild_id,int flag) {
+static int guild_delalliance(struct map_session_data *sd, int guild_id, int flag)
+{
nullpo_ret(sd);
if(map->agit_flag || map->agit2_flag) {
@@ -1590,7 +1619,7 @@ int guild_delalliance(struct map_session_data *sd,int guild_id,int flag) {
/*====================================================
* Player sd, asking player tsd a formal enemy relation between their 2 guilds
*---------------------------------------------------*/
-int guild_opposition(struct map_session_data *sd,struct map_session_data *tsd)
+static int guild_opposition(struct map_session_data *sd, struct map_session_data *tsd)
{
struct guild *g;
int i;
@@ -1633,7 +1662,8 @@ int guild_opposition(struct map_session_data *sd,struct map_session_data *tsd)
/*====================================================
* Notification of a relationship between 2 guilds
*---------------------------------------------------*/
-int guild_allianceack(int guild_id1,int guild_id2,int account_id1,int account_id2,int flag,const char *name1,const char *name2) {
+static int guild_allianceack(int guild_id1, int guild_id2, int account_id1, int account_id2, int flag, const char *name1, const char *name2)
+{
struct guild *g[2] = { NULL };
int guild_id[2] = { 0 };
const char *guild_name[2] = { NULL };
@@ -1723,7 +1753,7 @@ int guild_allianceack(int guild_id1,int guild_id2,int account_id1,int account_id
* Notification for the guild disbanded
* @see DBApply
*/
-int guild_broken_sub(union DBKey key, struct DBData *data, va_list ap)
+static int guild_broken_sub(union DBKey key, struct DBData *data, va_list ap)
{
struct guild *g = DB->data2ptr(data);
int guild_id=va_arg(ap,int);
@@ -1749,7 +1779,7 @@ int guild_broken_sub(union DBKey key, struct DBData *data, va_list ap)
* Invoked on Castles when a guild is broken. [Skotlex]
* @see DBApply
*/
-int castle_guild_broken_sub(union DBKey key, struct DBData *data, va_list ap)
+static int castle_guild_broken_sub(union DBKey key, struct DBData *data, va_list ap)
{
struct guild_castle *gc = DB->data2ptr(data);
int guild_id = va_arg(ap, int);
@@ -1770,7 +1800,7 @@ int castle_guild_broken_sub(union DBKey key, struct DBData *data, va_list ap)
}
//Invoked on /breakguild "Guild name"
-int guild_broken(int guild_id,int flag)
+static int guild_broken(int guild_id, int flag)
{
struct guild *g = guild->search(guild_id);
struct map_session_data *sd = NULL;
@@ -1814,28 +1844,33 @@ int guild_broken(int guild_id,int flag)
}
//Changes the Guild Master to the specified player. [Skotlex]
-int guild_gm_change(int guild_id, struct map_session_data *sd)
+static int guild_gm_change(int guild_id, int char_id)
{
- struct guild *g;
- nullpo_ret(sd);
+ struct guild *g = guild->search(guild_id);
+ char *name;
+ int i;
- if (sd->status.guild_id != guild_id)
- return 0;
+ nullpo_ret(g);
- g=guild->search(guild_id);
+ ARR_FIND(0, MAX_GUILD, i, g->member[i].char_id == char_id);
- nullpo_ret(g);
+ if (i == MAX_GUILD ) {
+ // Not part of the guild
+ return 0;
+ }
- if (strcmp(g->master, sd->status.name) == 0) //Nothing to change.
+ name = g->member[i].name;
+
+ if (strcmp(g->master, name) == 0) //Nothing to change.
return 0;
//Notify servers that master has changed.
- intif->guild_change_gm(guild_id, sd->status.name, (int)strlen(sd->status.name)+1);
+ intif->guild_change_gm(guild_id, name, (int)strlen(name) + 1);
return 1;
}
//Notification from Char server that a guild's master has changed. [Skotlex]
-int guild_gm_changed(int guild_id, int account_id, int char_id)
+static int guild_gm_changed(int guild_id, int account_id, int char_id)
{
struct guild *g;
struct guild_member gm;
@@ -1864,6 +1899,7 @@ int guild_gm_changed(int guild_id, int account_id, int char_id)
if (g->member[pos].sd && g->member[pos].sd->fd) {
clif->message(g->member[pos].sd->fd, msg_sd(g->member[pos].sd,878)); //"You no longer are the Guild Master."
g->member[pos].sd->state.gmaster_flag = 0;
+ clif->charnameack(0, &g->member[pos].sd->bl);
}
if (g->member[0].sd && g->member[0].sd->fd) {
@@ -1871,6 +1907,7 @@ int guild_gm_changed(int guild_id, int account_id, int char_id)
g->member[0].sd->state.gmaster_flag = 1;
//Block his skills for 5 minutes to prevent abuse.
guild->block_skill(g->member[0].sd, 300000);
+ clif->charnameack(0, &g->member[pos].sd->bl);
}
// announce the change to all guild members
@@ -1880,6 +1917,7 @@ int guild_gm_changed(int guild_id, int account_id, int char_id)
{
clif->guild_basicinfo(g->member[i].sd);
clif->guild_memberlist(g->member[i].sd);
+ clif->guild_belonginfo(g->member[i].sd, g); // Update clientside guildmaster flag
}
}
@@ -1889,7 +1927,7 @@ int guild_gm_changed(int guild_id, int account_id, int char_id)
/*====================================================
* Guild disbanded
*---------------------------------------------------*/
-int guild_break(struct map_session_data *sd, const char *name)
+static int guild_break(struct map_session_data *sd, const char *name)
{
struct guild *g;
struct unit_data *ud;
@@ -1951,7 +1989,7 @@ int guild_break(struct map_session_data *sd, const char *name)
* Creates a list of guild castle IDs to be requested
* from char-server.
*/
-void guild_castle_map_init(void)
+static void guild_castle_map_init(void)
{
int num = db_size(guild->castle_db);
@@ -1981,7 +2019,7 @@ void guild_castle_map_init(void)
* @param index Type of data to change
* @param value New value
*/
-int guild_castledatasave(int castle_id, int index, int value)
+static int guild_castledatasave(int castle_id, int index, int value)
{
struct guild_castle *gc = guild->castle_search(castle_id);
@@ -2042,7 +2080,7 @@ int guild_castledatasave(int castle_id, int index, int value)
return 0;
}
-void guild_castle_reconnect_sub(void *key, void *data, va_list ap)
+static void guild_castle_reconnect_sub(void *key, void *data, va_list ap)
{
int castle_id = GetWord((int)h64BPTRSIZE(key), 0);
int index = GetWord((int)h64BPTRSIZE(key), 1);
@@ -2055,7 +2093,7 @@ void guild_castle_reconnect_sub(void *key, void *data, va_list ap)
* disconnected.
* On reconnect pushes all changes to char-server for saving.
*/
-void guild_castle_reconnect(int castle_id, int index, int value)
+static void guild_castle_reconnect(int castle_id, int index, int value)
{
static struct linkdb_node *gc_save_pending = NULL;
@@ -2071,7 +2109,7 @@ void guild_castle_reconnect(int castle_id, int index, int value)
}
// Load castle data then invoke OnAgitInit* on last
-int guild_castledataloadack(int len, const struct guild_castle *gc)
+static int guild_castledataloadack(int len, const struct guild_castle *gc)
{
int i;
int n = (len-4) / sizeof(struct guild_castle);
@@ -2114,7 +2152,7 @@ int guild_castledataloadack(int len, const struct guild_castle *gc)
/*====================================================
* Start normal woe and triggers all npc OnAgitStart
*---------------------------------------------------*/
-void guild_agit_start(void)
+static void guild_agit_start(void)
{
// Run All NPC_Event[OnAgitStart]
int c = npc->event_doall("OnAgitStart");
@@ -2124,7 +2162,7 @@ void guild_agit_start(void)
/*====================================================
* End normal woe and triggers all npc OnAgitEnd
*---------------------------------------------------*/
-void guild_agit_end(void)
+static void guild_agit_end(void)
{
// Run All NPC_Event[OnAgitEnd]
int c = npc->event_doall("OnAgitEnd");
@@ -2134,7 +2172,7 @@ void guild_agit_end(void)
/*====================================================
* Start woe2 and triggers all npc OnAgitStart2
*---------------------------------------------------*/
-void guild_agit2_start(void)
+static void guild_agit2_start(void)
{
// Run All NPC_Event[OnAgitStart2]
int c = npc->event_doall("OnAgitStart2");
@@ -2144,7 +2182,7 @@ void guild_agit2_start(void)
/*====================================================
* End woe2 and triggers all npc OnAgitEnd2
*---------------------------------------------------*/
-void guild_agit2_end(void)
+static void guild_agit2_end(void)
{
// Run All NPC_Event[OnAgitEnd2]
int c = npc->event_doall("OnAgitEnd2");
@@ -2152,7 +2190,7 @@ void guild_agit2_end(void)
}
// How many castles does this guild have?
-int guild_checkcastles(struct guild *g)
+static int guild_checkcastles(struct guild *g)
{
int nb_cas = 0;
struct guild_castle* gc = NULL;
@@ -2168,7 +2206,7 @@ int guild_checkcastles(struct guild *g)
}
// Are these two guilds allied?
-bool guild_isallied(int guild_id, int guild_id2)
+static bool guild_isallied(int guild_id, int guild_id2)
{
int i;
struct guild* g = guild->search(guild_id);
@@ -2178,7 +2216,8 @@ bool guild_isallied(int guild_id, int guild_id2)
return( i < MAX_GUILDALLIANCE && g->alliance[i].opposition == 0 );
}
-void guild_flag_add(struct npc_data *nd) {
+static void guild_flag_add(struct npc_data *nd)
+{
int i;
nullpo_retv(nd);
@@ -2196,7 +2235,8 @@ void guild_flag_add(struct npc_data *nd) {
guild->flags[i] = nd;
}
-void guild_flag_remove(struct npc_data *nd) {
+static void guild_flag_remove(struct npc_data *nd)
+{
int i, cursor;
nullpo_retv(nd);
if( guild->flags_count == 0 )
@@ -2225,7 +2265,7 @@ void guild_flag_remove(struct npc_data *nd) {
/**
* @see DBApply
*/
-int eventlist_db_final(union DBKey key, struct DBData *data, va_list ap)
+static int eventlist_db_final(union DBKey key, struct DBData *data, va_list ap)
{
struct eventlist *next = NULL;
struct eventlist *current = DB->data2ptr(data);
@@ -2240,7 +2280,7 @@ int eventlist_db_final(union DBKey key, struct DBData *data, va_list ap)
/**
* @see DBApply
*/
-int guild_expcache_db_final(union DBKey key, struct DBData *data, va_list ap)
+static int guild_expcache_db_final(union DBKey key, struct DBData *data, va_list ap)
{
ers_free(guild->expcache_ers, DB->data2ptr(data));
return 0;
@@ -2249,7 +2289,7 @@ int guild_expcache_db_final(union DBKey key, struct DBData *data, va_list ap)
/**
* @see DBApply
*/
-int guild_castle_db_final(union DBKey key, struct DBData *data, va_list ap)
+static int guild_castle_db_final(union DBKey key, struct DBData *data, va_list ap)
{
struct guild_castle* gc = DB->data2ptr(data);
if( gc->temp_guardians )
@@ -2259,7 +2299,8 @@ int guild_castle_db_final(union DBKey key, struct DBData *data, va_list ap)
}
/* called when scripts are reloaded/unloaded */
-void guild_flags_clear(void) {
+static void guild_flags_clear(void)
+{
int i;
for( i = 0; i < guild->flags_count; i++ ) {
if( guild->flags[i] )
@@ -2269,7 +2310,8 @@ void guild_flags_clear(void) {
guild->flags_count = 0;
}
-void do_init_guild(bool minimal) {
+static void do_init_guild(bool minimal)
+{
if (minimal)
return;
@@ -2289,7 +2331,7 @@ void do_init_guild(bool minimal) {
timer->add_interval(timer->gettick()+GUILD_SEND_XY_INVERVAL,guild->send_xy_timer,0,0,GUILD_SEND_XY_INVERVAL);
}
-void do_final_guild(void)
+static void do_final_guild(void)
{
struct DBIterator *iter = db_iterator(guild->db);
struct guild *g;
@@ -2315,7 +2357,9 @@ void do_final_guild(void)
if( guild->flags )
aFree(guild->flags);
}
-void guild_defaults(void) {
+
+void guild_defaults(void)
+{
guild = &guild_s;
guild->init = do_init_guild;
diff --git a/src/map/guild.h b/src/map/guild.h
index cdb28a37b..3df86a3ca 100644
--- a/src/map/guild.h
+++ b/src/map/guild.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -100,7 +100,7 @@ struct guild_interface {
struct map_session_data *(*getavailablesd) (struct guild *g);
int (*getindex) (const struct guild *g, int account_id, int char_id);
int (*getposition) (struct guild *g, struct map_session_data *sd);
- unsigned int (*payexp) (struct map_session_data *sd,unsigned int exp);
+ uint64 (*payexp) (struct map_session_data *sd, uint64 exp);
int (*getexp) (struct map_session_data *sd,int exp); // [Celest]
/* */
int (*create) (struct map_session_data *sd, const char *name);
@@ -126,7 +126,7 @@ struct guild_interface {
int (*check_alliance) (int guild_id1, int guild_id2, int flag);
/* */
int (*send_memberinfoshort) (struct map_session_data *sd,int online);
- int (*recv_memberinfoshort) (int guild_id, int account_id, int char_id, int online, int lv, int16 class);
+ int (*recv_memberinfoshort) (int guild_id, int account_id, int char_id, int online, int lv, int16 class, uint32 last_login);
int (*change_memberposition) (int guild_id,int account_id,int char_id,short idx);
int (*memberposition_changed) (struct guild *g,int idx,int pos);
int (*change_position) (int guild_id,int idx,int mode,int exp_mode,const char *name);
@@ -141,7 +141,7 @@ struct guild_interface {
int (*skillupack) (int guild_id,uint16 skill_id,int account_id);
int (*dobreak) (struct map_session_data *sd, const char *name);
int (*broken) (int guild_id,int flag);
- int (*gm_change) (int guild_id, struct map_session_data *sd);
+ int (*gm_change) (int guild_id, int char_id);
int (*gm_changed) (int guild_id, int account_id, int char_id);
/* */
void (*castle_map_init) (void);
diff --git a/src/map/homunculus.c b/src/map/homunculus.c
index 91a455416..6df272243 100644
--- a/src/map/homunculus.c
+++ b/src/map/homunculus.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -37,6 +37,7 @@
#include "map/party.h"
#include "map/pc.h"
#include "map/pet.h"
+#include "map/quest.h"
#include "map/script.h"
#include "map/skill.h"
#include "map/status.h"
@@ -58,19 +59,21 @@
#include <stdlib.h>
#include <string.h>
-struct homunculus_interface homunculus_s;
-struct homun_dbs homundbs;
+static struct homunculus_interface homunculus_s;
+static struct homun_dbs homundbs;
struct homunculus_interface *homun;
//Returns the viewdata for homunculus
-struct view_data* homunculus_get_viewdata(int class_) {
+static struct view_data *homunculus_get_viewdata(int class_)
+{
Assert_retr(NULL, homdb_checkid(class_));
return &homun->dbs->viewdb[class_-HM_CLASS_BASE];
}
-enum homun_type homunculus_class2type(int class_) {
+static enum homun_type homunculus_class2type(int class_)
+{
switch(class_) {
// Normal Homunculus
case HOMID_LIF:
@@ -104,7 +107,8 @@ enum homun_type homunculus_class2type(int class_) {
}
}
-void homunculus_addspiritball(struct homun_data *hd, int max) {
+static void homunculus_addspiritball(struct homun_data *hd, int max)
+{
nullpo_retv(hd);
if (max > MAX_SKILL_LEVEL)
@@ -121,7 +125,8 @@ void homunculus_addspiritball(struct homun_data *hd, int max) {
clif->spiritball(&hd->bl);
}
-void homunculus_delspiritball(struct homun_data *hd, int count, int type) {
+static void homunculus_delspiritball(struct homun_data *hd, int count, int type)
+{
nullpo_retv(hd);
if (hd->homunculus.spiritball <= 0) {
@@ -140,11 +145,13 @@ void homunculus_delspiritball(struct homun_data *hd, int count, int type) {
clif->spiritball(&hd->bl);
}
-void homunculus_damaged(struct homun_data *hd) {
+static void homunculus_damaged(struct homun_data *hd)
+{
clif->hominfo(hd->master,hd,0);
}
-int homunculus_dead(struct homun_data *hd) {
+static int homunculus_dead(struct homun_data *hd)
+{
//There's no intimacy penalties on death (from Tharis)
struct map_session_data *sd;
@@ -165,7 +172,8 @@ int homunculus_dead(struct homun_data *hd) {
}
//Vaporize a character's homun. If flag, HP needs to be 80% or above.
-int homunculus_vaporize(struct map_session_data *sd, enum homun_state flag) {
+static int homunculus_vaporize(struct map_session_data *sd, enum homun_state flag)
+{
struct homun_data *hd;
nullpo_ret(sd);
@@ -193,7 +201,8 @@ int homunculus_vaporize(struct map_session_data *sd, enum homun_state flag) {
//delete a homunculus, completely "killing it".
//Emote is the emotion the master should use, send negative to disable.
-int homunculus_delete(struct homun_data *hd, int emote) {
+static int homunculus_delete(struct homun_data *hd, int emote)
+{
struct map_session_data *sd;
nullpo_ret(hd);
sd = hd->master;
@@ -212,7 +221,8 @@ int homunculus_delete(struct homun_data *hd, int emote) {
return unit->remove_map(&hd->bl,CLR_OUTSIGHT, ALC_MARK);
}
-int homunculus_calc_skilltree(struct homun_data *hd, int flag_evolve) {
+static int homunculus_calc_skilltree(struct homun_data *hd, int flag_evolve)
+{
int i, id = 0;
int j, f = 1;
int c = 0;
@@ -269,7 +279,8 @@ int homunculus_calc_skilltree(struct homun_data *hd, int flag_evolve) {
return 0;
}
-int homunculus_checkskill(struct homun_data *hd,uint16 skill_id) {
+static int homunculus_checkskill(struct homun_data *hd, uint16 skill_id)
+{
int i = skill_id - HM_SKILLBASE;
if(!hd)
return 0;
@@ -281,7 +292,8 @@ int homunculus_checkskill(struct homun_data *hd,uint16 skill_id) {
return 0;
}
-int homunculus_skill_tree_get_max(int id, int b_class) {
+static int homunculus_skill_tree_get_max(int id, int b_class)
+{
int i, skill_id;
b_class -= HM_CLASS_BASE;
Assert_ret(b_class >= 0 && b_class < MAX_HOMUNCULUS_CLASS);
@@ -291,7 +303,8 @@ int homunculus_skill_tree_get_max(int id, int b_class) {
return skill->get_max(id);
}
-void homunculus_skillup(struct homun_data *hd,uint16 skill_id) {
+static void homunculus_skillup(struct homun_data *hd, uint16 skill_id)
+{
int i = 0 ;
nullpo_retv(hd);
@@ -317,7 +330,8 @@ void homunculus_skillup(struct homun_data *hd,uint16 skill_id) {
}
}
-bool homunculus_levelup(struct homun_data *hd) {
+static bool homunculus_levelup(struct homun_data *hd)
+{
struct s_homunculus *hom;
struct h_stats *min, *max;
int growth_str, growth_agi, growth_vit, growth_int, growth_dex, growth_luk ;
@@ -393,10 +407,12 @@ bool homunculus_levelup(struct homun_data *hd) {
growth_int/10.0, growth_dex/10.0, growth_luk/10.0);
clif_disp_onlyself(hd->master, output);
}
+ quest->questinfo_refresh(hd->master);
return true;
}
-int homunculus_change_class(struct homun_data *hd, short class_) {
+static int homunculus_change_class(struct homun_data *hd, short class_)
+{
int i = homun->db_search(class_,HOMUNCULUS_CLASS);
nullpo_retr(0, hd);
if (i == INDEX_NOT_FOUND)
@@ -405,10 +421,12 @@ int homunculus_change_class(struct homun_data *hd, short class_) {
hd->homunculus.class_ = class_;
status->set_viewdata(&hd->bl, class_);
homun->calc_skilltree(hd, 1);
+ quest->questinfo_refresh(hd->master);
return 1;
}
-bool homunculus_evolve(struct homun_data *hd) {
+static bool homunculus_evolve(struct homun_data *hd)
+{
struct s_homunculus *hom;
struct h_stats *max, *min;
struct map_session_data *sd;
@@ -456,11 +474,12 @@ bool homunculus_evolve(struct homun_data *hd) {
if (!(battle_config.hom_setting&0x2))
skill->unit_move(&sd->hd->bl,timer->gettick(),1); // apply land skills immediately
-
+ quest->questinfo_refresh(sd);
return true;
}
-bool homunculus_mutate(struct homun_data *hd, int homun_id) {
+static bool homunculus_mutate(struct homun_data *hd, int homun_id)
+{
struct s_homunculus *hom;
struct map_session_data *sd;
int prev_class = 0;
@@ -506,7 +525,8 @@ bool homunculus_mutate(struct homun_data *hd, int homun_id) {
return true;
}
-int homunculus_gainexp(struct homun_data *hd,unsigned int exp) {
+static int homunculus_gainexp(struct homun_data *hd, unsigned int exp)
+{
enum homun_type htype;
nullpo_ret(hd);
@@ -550,7 +570,8 @@ int homunculus_gainexp(struct homun_data *hd,unsigned int exp) {
}
// Return the new value
-unsigned int homunculus_add_intimacy(struct homun_data *hd, unsigned int value) {
+static unsigned int homunculus_add_intimacy(struct homun_data *hd, unsigned int value)
+{
nullpo_ret(hd);
if (battle_config.homunculus_friendly_rate != 100)
value = (value * battle_config.homunculus_friendly_rate) / 100;
@@ -563,7 +584,8 @@ unsigned int homunculus_add_intimacy(struct homun_data *hd, unsigned int value)
}
// Return 0 if decrease fails or intimacy became 0 else the new value
-unsigned int homunculus_consume_intimacy(struct homun_data *hd, unsigned int value) {
+static unsigned int homunculus_consume_intimacy(struct homun_data *hd, unsigned int value)
+{
nullpo_ret(hd);
if (hd->homunculus.intimacy >= value)
hd->homunculus.intimacy -= value;
@@ -573,12 +595,14 @@ unsigned int homunculus_consume_intimacy(struct homun_data *hd, unsigned int val
return hd->homunculus.intimacy;
}
-void homunculus_healed (struct homun_data *hd) {
+static void homunculus_healed(struct homun_data *hd)
+{
nullpo_retv(hd);
clif->hominfo(hd->master,hd,0);
}
-void homunculus_save(struct homun_data *hd) {
+static void homunculus_save(struct homun_data *hd)
+{
// copy data that must be saved in homunculus struct ( hp / sp )
struct map_session_data *sd = NULL;
//Do not check for max_hp/max_sp caps as current could be higher to max due
@@ -592,7 +616,8 @@ void homunculus_save(struct homun_data *hd) {
intif->homunculus_requestsave(sd->status.account_id, &hd->homunculus);
}
-unsigned char homunculus_menu(struct map_session_data *sd,unsigned char menu_num) {
+static unsigned char homunculus_menu(struct map_session_data *sd, unsigned char menu_num)
+{
nullpo_ret(sd);
if (sd->hd == NULL)
return 1;
@@ -613,7 +638,8 @@ unsigned char homunculus_menu(struct map_session_data *sd,unsigned char menu_num
return 0;
}
-bool homunculus_feed(struct map_session_data *sd, struct homun_data *hd) {
+static bool homunculus_feed(struct map_session_data *sd, struct homun_data *hd)
+{
int i, foodID, emotion;
nullpo_retr(false, hd);
@@ -661,7 +687,8 @@ bool homunculus_feed(struct map_session_data *sd, struct homun_data *hd) {
return true;
}
-int homunculus_hunger_timer(int tid, int64 tick, int id, intptr_t data) {
+static int homunculus_hunger_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data *sd;
struct homun_data *hd;
@@ -683,7 +710,12 @@ int homunculus_hunger_timer(int tid, int64 tick, int id, intptr_t data) {
} else if(hd->homunculus.hunger == 75) {
clif->emotion(&hd->bl, E_OK);
}
-
+ if (battle_config.feature_enable_homun_autofeed != 0) {
+ if (hd->homunculus.autofeed) {
+ if (hd->homunculus.hunger < 30)
+ homun->feed(sd, hd);
+ }
+ }
if(hd->homunculus.hunger < 0) {
hd->homunculus.hunger = 0;
// Delete the homunculus if intimacy <= 100
@@ -697,7 +729,8 @@ int homunculus_hunger_timer(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-void homunculus_hunger_timer_delete(struct homun_data *hd) {
+static void homunculus_hunger_timer_delete(struct homun_data *hd)
+{
nullpo_retv(hd);
if(hd->hungry_timer != INVALID_TIMER) {
timer->delete(hd->hungry_timer,homun->hunger_timer);
@@ -705,7 +738,7 @@ void homunculus_hunger_timer_delete(struct homun_data *hd) {
}
}
-int homunculus_change_name(struct map_session_data *sd, const char *name)
+static int homunculus_change_name(struct map_session_data *sd, const char *name)
{
int i;
struct homun_data *hd;
@@ -726,7 +759,7 @@ int homunculus_change_name(struct map_session_data *sd, const char *name)
return intif_rename_hom(sd, name);
}
-bool homunculus_change_name_ack(struct map_session_data *sd, const char *name, int flag)
+static bool homunculus_change_name_ack(struct map_session_data *sd, const char *name, int flag)
{
struct homun_data *hd;
char *newname = NULL;
@@ -752,7 +785,8 @@ bool homunculus_change_name_ack(struct map_session_data *sd, const char *name, i
return true;
}
-int homunculus_db_search(int key,int type) {
+static int homunculus_db_search(int key, int type)
+{
int i;
for(i=0;i<MAX_HOMUNCULUS_CLASS;i++) {
@@ -786,7 +820,7 @@ int homunculus_db_search(int key,int type) {
* @param hom The homunculus source data.
* @retval false in case of errors.
*/
-bool homunculus_create(struct map_session_data *sd, const struct s_homunculus *hom)
+static bool homunculus_create(struct map_session_data *sd, const struct s_homunculus *hom)
{
struct homun_data *hd;
int i = 0;
@@ -836,14 +870,16 @@ bool homunculus_create(struct map_session_data *sd, const struct s_homunculus *h
return true;
}
-void homunculus_init_timers(struct homun_data * hd) {
+static void homunculus_init_timers(struct homun_data *hd)
+{
nullpo_retv(hd);
if (hd->hungry_timer == INVALID_TIMER)
hd->hungry_timer = timer->add(timer->gettick()+hd->homunculusDB->hungryDelay,homun->hunger_timer,hd->master->bl.id,0);
hd->regen.state.block = 0; //Restore HP/SP block.
}
-bool homunculus_call(struct map_session_data *sd) {
+static bool homunculus_call(struct map_session_data *sd)
+{
struct homun_data *hd;
nullpo_retr(false, sd);
@@ -881,7 +917,7 @@ bool homunculus_call(struct map_session_data *sd) {
}
// Receive homunculus data from char server
-bool homunculus_recv_data(int account_id, const struct s_homunculus *sh, int flag)
+static bool homunculus_recv_data(int account_id, const struct s_homunculus *sh, int flag)
{
struct map_session_data *sd;
struct homun_data *hd;
@@ -940,7 +976,8 @@ bool homunculus_recv_data(int account_id, const struct s_homunculus *sh, int fla
}
// Ask homunculus creation to char server
-bool homunculus_creation_request(struct map_session_data *sd, int class_) {
+static bool homunculus_creation_request(struct map_session_data *sd, int class_)
+{
struct s_homunculus hom;
struct h_stats *base;
int i;
@@ -976,7 +1013,8 @@ bool homunculus_creation_request(struct map_session_data *sd, int class_) {
return true;
}
-bool homunculus_ressurect(struct map_session_data* sd, unsigned char per, short x, short y) {
+static bool homunculus_ressurect(struct map_session_data *sd, unsigned char per, short x, short y)
+{
struct homun_data* hd;
nullpo_retr(false,sd);
@@ -1009,7 +1047,8 @@ bool homunculus_ressurect(struct map_session_data* sd, unsigned char per, short
return true;
}
-void homunculus_revive(struct homun_data *hd, unsigned int hp, unsigned int sp) {
+static void homunculus_revive(struct homun_data *hd, unsigned int hp, unsigned int sp)
+{
struct map_session_data *sd;
nullpo_retv(hd);
@@ -1023,7 +1062,8 @@ void homunculus_revive(struct homun_data *hd, unsigned int hp, unsigned int sp)
clif->homskillinfoblock(sd);
}
//Resets a homunc stats back to zero (but doesn't touches hunger or intimacy)
-void homunculus_stat_reset(struct homun_data *hd) {
+static void homunculus_stat_reset(struct homun_data *hd)
+{
struct s_homunculus_db *db;
struct s_homunculus *hom;
struct h_stats *base;
@@ -1047,7 +1087,8 @@ void homunculus_stat_reset(struct homun_data *hd) {
hd->homunculus.skillpts = 0;
}
-bool homunculus_shuffle(struct homun_data *hd) {
+static bool homunculus_shuffle(struct homun_data *hd)
+{
struct map_session_data *sd;
int lv, skillpts;
unsigned int exp;
@@ -1096,7 +1137,8 @@ bool homunculus_shuffle(struct homun_data *hd) {
return true;
}
-bool homunculus_read_db_sub(char* str[], int columns, int current) {
+static bool homunculus_read_db_sub(char *str[], int columns, int current)
+{
int classid;
struct s_homunculus_db *db;
@@ -1207,7 +1249,8 @@ bool homunculus_read_db_sub(char* str[], int columns, int current) {
return true;
}
-void homunculus_read_db(void) {
+static void homunculus_read_db(void)
+{
int i;
const char *filename[]={DBPATH"homunculus_db.txt","homunculus_db2.txt"};
memset(homun->dbs->db, 0, sizeof(homun->dbs->db));
@@ -1215,7 +1258,7 @@ void homunculus_read_db(void) {
if( i > 0 ) {
char filepath[256];
- snprintf(filepath, 256, "%s/%s", map->db_path, filename[i]);
+ safesnprintf(filepath, 256, "%s/%s", map->db_path, filename[i]);
if( !exists(filepath) ) {
continue;
@@ -1227,7 +1270,8 @@ void homunculus_read_db(void) {
}
// <hom class>,<skill id>,<max level>[,<job level>],<req id1>,<req lv1>,<req id2>,<req lv2>,<req id3>,<req lv3>,<req id4>,<req lv4>,<req id5>,<req lv5>,<intimacy lv req>
-bool homunculus_read_skill_db_sub(char* split[], int columns, int current) {
+static bool homunculus_read_skill_db_sub(char *split[], int columns, int current)
+{
int k, classid;
int j;
int minJobLevelPresent = 0;
@@ -1267,7 +1311,8 @@ bool homunculus_read_skill_db_sub(char* split[], int columns, int current) {
return true;
}
-int8 homunculus_get_intimacy_grade(struct homun_data *hd) {
+static int8 homunculus_get_intimacy_grade(struct homun_data *hd)
+{
unsigned int val;
nullpo_ret(hd);
val = hd->homunculus.intimacy / 100;
@@ -1287,12 +1332,14 @@ int8 homunculus_get_intimacy_grade(struct homun_data *hd) {
return 0;
}
-void homunculus_skill_db_read(void) {
+static void homunculus_skill_db_read(void)
+{
memset(homun->dbs->skill_tree, 0, sizeof(homun->dbs->skill_tree));
sv->readdb(map->db_path, "homun_skill_tree.txt", ',', 13, 15, -1, homun->read_skill_db_sub);
}
-void homunculus_exp_db_read(void) {
+static void homunculus_exp_db_read(void)
+{
char line[1024];
int i, j=0;
char *filename[]={
@@ -1326,16 +1373,19 @@ void homunculus_exp_db_read(void) {
}
}
-void homunculus_reload(void) {
+static void homunculus_reload(void)
+{
homun->read_db();
homun->exp_db_read();
}
-void homunculus_skill_reload(void) {
+static void homunculus_skill_reload(void)
+{
homun->skill_db_read();
}
-void do_init_homunculus(bool minimal) {
+static void do_init_homunculus(bool minimal)
+{
int class_;
if (minimal)
@@ -1353,11 +1403,13 @@ void do_init_homunculus(bool minimal) {
homun->dbs->viewdb[class_].class = HM_CLASS_BASE + class_;
}
-void do_final_homunculus(void) {
+static void do_final_homunculus(void)
+{
}
-void homunculus_defaults(void) {
+void homunculus_defaults(void)
+{
homun = &homunculus_s;
homun->dbs = &homundbs;
diff --git a/src/map/homunculus.h b/src/map/homunculus.h
index a80392cf6..f0a156fd7 100644
--- a/src/map/homunculus.h
+++ b/src/map/homunculus.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -124,7 +124,7 @@ struct homun_data {
struct map_session_data *master; //pointer back to its master
int hungry_timer; //[orn]
unsigned int exp_next;
- char blockskill[MAX_SKILL]; // [orn]
+ char blockskill[MAX_SKILL_DB]; // [orn]
int64 masterteleport_timer;
};
diff --git a/src/map/instance.c b/src/map/instance.c
index 21ee6bf80..1e83b0b76 100644
--- a/src/map/instance.c
+++ b/src/map/instance.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -30,6 +30,7 @@
#include "map/npc.h"
#include "map/party.h"
#include "map/pc.h"
+#include "map/quest.h"
#include "common/HPM.h"
#include "common/cbasetypes.h"
#include "common/db.h"
@@ -47,11 +48,12 @@
#include <string.h>
#include <time.h>
-struct instance_interface instance_s;
+static struct instance_interface instance_s;
struct instance_interface *instance;
/// Checks whether given instance id is valid or not.
-bool instance_is_valid(int instance_id) {
+static bool instance_is_valid(int instance_id)
+{
if( instance_id < 0 || instance_id >= instance->instances ) {// out of range
return false;
}
@@ -69,7 +71,8 @@ bool instance_is_valid(int instance_id) {
* -4 = already exists | -3 = no free instances | -2 = owner not found | -1 = invalid type
* On success return instance_id
*--------------------------------------*/
-int instance_create(int owner_id, const char *name, enum instance_owner_type type) {
+static int instance_create(int owner_id, const char *name, enum instance_owner_type type)
+{
struct map_session_data *sd = NULL;
unsigned short *icptr = NULL;
struct party_data *p = NULL;
@@ -180,7 +183,8 @@ int instance_create(int owner_id, const char *name, enum instance_owner_type typ
* @retval -3 No more map indices available.
* @retval -4 Source map is already an instance.
**/
-int instance_add_map(const char *name, int instance_id, bool usebasename, const char *map_name) {
+static int instance_add_map(const char *name, int instance_id, bool usebasename, const char *map_name)
+{
int16 m = map->mapname2mapid(name);
int i, im = -1;
size_t num_cell, size, j;
@@ -292,10 +296,10 @@ int instance_add_map(const char *name, int instance_id, bool usebasename, const
}
//Mimic questinfo
- if( map->list[m].qi_count ) {
- map->list[im].qi_count = map->list[m].qi_count;
- CREATE( map->list[im].qi_data, struct questinfo, map->list[im].qi_count );
- memcpy( map->list[im].qi_data, map->list[m].qi_data, map->list[im].qi_count * sizeof(struct questinfo) );
+ VECTOR_INIT(map->list[im].qi_data);
+ VECTOR_ENSURE(map->list[im].qi_data, VECTOR_LENGTH(map->list[m].qi_data), 1);
+ for (i = 0; i < VECTOR_LENGTH(map->list[m].qi_data); i++) {
+ VECTOR_PUSH(map->list[im].qi_data, VECTOR_INDEX(map->list[m].qi_data, i));
}
map->list[im].m = im;
@@ -317,7 +321,8 @@ int instance_add_map(const char *name, int instance_id, bool usebasename, const
* party_id : source party of this instance
* type : result (0 = map id | 1 = instance id)
*--------------------------------------*/
-int instance_map2imap(int16 m, int instance_id) {
+static int instance_map2imap(int16 m, int instance_id)
+{
int i;
if( !instance->valid(instance_id) ) {
@@ -331,7 +336,8 @@ int instance_map2imap(int16 m, int instance_id) {
return -1;
}
-int instance_mapname2imap(const char *map_name, int instance_id) {
+static int instance_mapname2imap(const char *map_name, int instance_id)
+{
int i;
nullpo_retr(-1, map_name);
@@ -351,7 +357,8 @@ int instance_mapname2imap(const char *map_name, int instance_id) {
* instance_id : where to search
* result : mapid of map "m" in this instance
*--------------------------------------*/
-int instance_mapid2imapid(int16 m, int instance_id) {
+static int instance_mapid2imapid(int16 m, int instance_id)
+{
Assert_retr(-1, m >= 0 && m < map->count);
if( map->list[m].flag.src4instance == 0 )
return m; // not instances found for this map
@@ -369,7 +376,7 @@ int instance_mapid2imapid(int16 m, int instance_id) {
/*--------------------------------------
* Used on Init instance. Duplicates each script on source map
*--------------------------------------*/
-int instance_map_npcsub(struct block_list* bl, va_list args)
+static int instance_map_npcsub(struct block_list *bl, va_list args)
{
struct npc_data *nd = NULL;
int16 m = va_arg(args, int); // Destination Map
@@ -384,7 +391,7 @@ int instance_map_npcsub(struct block_list* bl, va_list args)
return 1;
}
-int instance_init_npc(struct block_list* bl, va_list args)
+static int instance_init_npc(struct block_list *bl, va_list args)
{
struct npc_data *nd = NULL;
struct event_data *ev;
@@ -405,7 +412,8 @@ int instance_init_npc(struct block_list* bl, va_list args)
/*--------------------------------------
* Init all map on the instance. Npcs are created here
*--------------------------------------*/
-void instance_init(int instance_id) {
+static void instance_init(int instance_id)
+{
int i;
if( !instance->valid(instance_id) )
@@ -424,7 +432,8 @@ void instance_init(int instance_id) {
* Used on instance deleting process.
* Warps all players on each instance map to its save points.
*--------------------------------------*/
-int instance_del_load(struct map_session_data* sd, va_list args) {
+static int instance_del_load(struct map_session_data *sd, va_list args)
+{
int16 m = va_arg(args,int);
if( !sd || sd->bl.m != m )
@@ -435,7 +444,8 @@ int instance_del_load(struct map_session_data* sd, va_list args) {
}
/* for npcs behave differently when being unloaded within a instance */
-int instance_cleanup_sub(struct block_list *bl, va_list ap) {
+static int instance_cleanup_sub(struct block_list *bl, va_list ap)
+{
nullpo_ret(bl);
switch(bl->type) {
@@ -465,7 +475,8 @@ int instance_cleanup_sub(struct block_list *bl, va_list ap) {
/*--------------------------------------
* Removes a simple instance map
*--------------------------------------*/
-void instance_del_map(int16 m) {
+static void instance_del_map(int16 m)
+{
int i;
if( m <= 0 || map->list[m].instance_id == -1 ) {
@@ -507,8 +518,7 @@ void instance_del_map(int16 m) {
aFree(map->list[m].zone_mf);
}
- if( map->list[m].qi_data )
- aFree(map->list[m].qi_data);
+ quest->questinfo_vector_clear(m);
// Remove from instance
for( i = 0; i < instance->list[map->list[m].instance_id].num_map; i++ ) {
@@ -537,7 +547,8 @@ void instance_del_map(int16 m) {
/*--------------------------------------
* Timer to destroy instance by process or idle
*--------------------------------------*/
-int instance_destroy_timer(int tid, int64 tick, int id, intptr_t data) {
+static int instance_destroy_timer(int tid, int64 tick, int id, intptr_t data)
+{
instance->destroy(id);
return 0;
}
@@ -545,7 +556,8 @@ int instance_destroy_timer(int tid, int64 tick, int id, intptr_t data) {
/*--------------------------------------
* Removes a instance, all its maps and npcs.
*--------------------------------------*/
-void instance_destroy(int instance_id) {
+static void instance_destroy(int instance_id)
+{
struct map_session_data *sd = NULL;
unsigned short *icptr = NULL;
struct party_data *p = NULL;
@@ -636,7 +648,8 @@ void instance_destroy(int instance_id) {
/*--------------------------------------
* Checks if there are users in the instance or not to start idle timer
*--------------------------------------*/
-void instance_check_idle(int instance_id) {
+static void instance_check_idle(int instance_id)
+{
bool idle = true;
unsigned int now = (unsigned int)time(NULL);
@@ -661,7 +674,7 @@ void instance_check_idle(int instance_id) {
/*--------------------------------------
* Set instance Timers
*--------------------------------------*/
-void instance_set_timeout(int instance_id, unsigned int progress_timeout, unsigned int idle_timeout)
+static void instance_set_timeout(int instance_id, unsigned int progress_timeout, unsigned int idle_timeout)
{
unsigned int now = (unsigned int)time(0);
@@ -700,7 +713,8 @@ void instance_set_timeout(int instance_id, unsigned int progress_timeout, unsign
/*--------------------------------------
* Checks if sd in on a instance and should be kicked from it
*--------------------------------------*/
-void instance_check_kick(struct map_session_data *sd) {
+static void instance_check_kick(struct map_session_data *sd)
+{
int16 m = sd->bl.m;
nullpo_retv(sd);
@@ -713,7 +727,68 @@ void instance_check_kick(struct map_session_data *sd) {
}
}
-void do_reload_instance(void) {
+/**
+ * Look up existing memorial dungeon of the player and destroy it
+ *
+ * @param sd session data.
+ *
+ */
+static void instance_force_destroy(struct map_session_data *sd)
+{
+ nullpo_retv(sd);
+
+ for (int i = 0; i < instance->instances; ++i) {
+ switch (instance->list[i].owner_type) {
+ case IOT_CHAR:
+ {
+ if (instance->list[i].owner_id != sd->status.char_id)
+ continue;
+ break;
+ }
+ case IOT_PARTY:
+ {
+ int party_id = sd->status.party_id;
+ if (instance->list[i].owner_id != party_id)
+ continue;
+ int j = 0;
+ struct party_data *pt = party->search(party_id);
+ nullpo_retv(pt);
+
+ ARR_FIND(0, MAX_PARTY, j, pt->party.member[j].leader);
+ if (j == MAX_PARTY) {
+ ShowWarning("clif_parse_memorial_dungeon_command: trying to destroy a party instance, while the party has no leader.");
+ return;
+ }
+ if (pt->party.member[j].char_id != sd->status.char_id) {
+ ShowWarning("clif_parse_memorial_dungeon_command: trying to destroy a party instance, from a non party-leader player.");
+ return;
+ }
+ break;
+ }
+ case IOT_GUILD:
+ {
+ int guild_id = sd->status.guild_id;
+ if (instance->list[i].owner_id != guild_id)
+ continue;
+ struct guild *g = guild->search(guild_id);
+ nullpo_retv(g);
+
+ if (g->member[0].char_id != sd->status.char_id) {
+ ShowWarning("clif_parse_memorial_dungeon_command: trying to destroy a guild instance, from a non guild-master player.");
+ return;
+ }
+ break;
+ }
+ default:
+ continue;
+ }
+ instance->destroy(instance->list[i].id);
+ return;
+ }
+}
+
+static void do_reload_instance(void)
+{
struct s_mapiterator *iter;
struct map_session_data *sd;
int i, k;
@@ -743,7 +818,8 @@ void do_reload_instance(void) {
mapit->free(iter);
}
-void do_final_instance(void) {
+static void do_final_instance(void)
+{
int i;
for(i = 0; i < instance->instances; i++) {
@@ -757,14 +833,16 @@ void do_final_instance(void) {
instance->instances = 0;
}
-void do_init_instance(bool minimal) {
+static void do_init_instance(bool minimal)
+{
if (minimal)
return;
timer->add_func_list(instance->destroy_timer, "instance_destroy_timer");
}
-void instance_defaults(void) {
+void instance_defaults(void)
+{
instance = &instance_s;
instance->init = do_init_instance;
@@ -792,4 +870,5 @@ void instance_defaults(void) {
instance->set_timeout = instance_set_timeout;
instance->valid = instance_is_valid;
instance->destroy_timer = instance_destroy_timer;
+ instance->force_destroy = instance_force_destroy;
}
diff --git a/src/map/instance.h b/src/map/instance.h
index 141d37a8f..91928bf40 100644
--- a/src/map/instance.h
+++ b/src/map/instance.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -96,6 +96,7 @@ struct instance_interface {
void (*set_timeout) (int instance_id, unsigned int progress_timeout, unsigned int idle_timeout);
bool (*valid) (int instance_id);
int (*destroy_timer) (int tid, int64 tick, int id, intptr_t data);
+ void (*force_destroy) (struct map_session_data *sd);
};
#ifdef HERCULES_CORE
diff --git a/src/map/intif.c b/src/map/intif.c
index 10a9ea8a9..ed4c0e2d2 100644
--- a/src/map/intif.c
+++ b/src/map/intif.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -26,6 +26,7 @@
#include "map/atcommand.h"
#include "map/battle.h"
#include "map/chrif.h"
+#include "map/clan.h"
#include "map/clif.h"
#include "map/elemental.h"
#include "map/guild.h"
@@ -38,7 +39,10 @@
#include "map/pc.h"
#include "map/pet.h"
#include "map/quest.h"
+#include "map/rodex.h"
#include "map/storage.h"
+#include "map/achievement.h"
+
#include "common/memmgr.h"
#include "common/nullpo.h"
#include "common/showmsg.h"
@@ -53,7 +57,7 @@
#include <string.h>
#include <sys/types.h>
-struct intif_interface intif_s;
+static struct intif_interface intif_s;
struct intif_interface *intif;
#define inter_fd (chrif->fd) // alias
@@ -61,37 +65,37 @@ struct intif_interface *intif;
//-----------------------------------------------------------------
// Send to inter server
-int CheckForCharServer(void)
+static int CheckForCharServer(void)
{
return ((chrif->fd <= 0) || sockt->session[chrif->fd] == NULL || sockt->session[chrif->fd]->wdata == NULL);
}
// pet
-int intif_create_pet(int account_id,int char_id,short pet_class,short pet_lv,short pet_egg_id,
- short pet_equip,short intimate,short hungry,char rename_flag,char incubate,char *pet_name)
+static int intif_create_pet(int account_id, int char_id, short pet_class, short pet_lv, int pet_egg_id,
+ int pet_equip, short intimate, short hungry, char rename_flag, char incubate, char *pet_name)
{
if (intif->CheckForCharServer())
return 0;
nullpo_ret(pet_name);
- WFIFOHEAD(inter_fd, 24 + NAME_LENGTH);
- WFIFOW(inter_fd,0) = 0x3080;
- WFIFOL(inter_fd,2) = account_id;
- WFIFOL(inter_fd,6) = char_id;
- WFIFOW(inter_fd,10) = pet_class;
- WFIFOW(inter_fd,12) = pet_lv;
- WFIFOW(inter_fd,14) = pet_egg_id;
- WFIFOW(inter_fd,16) = pet_equip;
- WFIFOW(inter_fd,18) = intimate;
- WFIFOW(inter_fd,20) = hungry;
- WFIFOB(inter_fd,22) = rename_flag;
- WFIFOB(inter_fd,23) = incubate;
- memcpy(WFIFOP(inter_fd,24),pet_name,NAME_LENGTH);
- WFIFOSET(inter_fd,24+NAME_LENGTH);
+ WFIFOHEAD(inter_fd, 28 + NAME_LENGTH);
+ WFIFOW(inter_fd, 0) = 0x3080;
+ WFIFOL(inter_fd, 2) = account_id;
+ WFIFOL(inter_fd, 6) = char_id;
+ WFIFOW(inter_fd, 10) = pet_class;
+ WFIFOW(inter_fd, 12) = pet_lv;
+ WFIFOL(inter_fd, 14) = pet_egg_id;
+ WFIFOL(inter_fd, 18) = pet_equip;
+ WFIFOW(inter_fd, 22) = intimate;
+ WFIFOW(inter_fd, 24) = hungry;
+ WFIFOB(inter_fd, 26) = rename_flag;
+ WFIFOB(inter_fd, 27) = incubate;
+ memcpy(WFIFOP(inter_fd, 28), pet_name, NAME_LENGTH);
+ WFIFOSET(inter_fd, 28 + NAME_LENGTH);
return 0;
}
-int intif_request_petdata(int account_id,int char_id,int pet_id)
+static int intif_request_petdata(int account_id, int char_id, int pet_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -105,7 +109,7 @@ int intif_request_petdata(int account_id,int char_id,int pet_id)
return 0;
}
-int intif_save_petdata(int account_id,struct s_pet *p)
+static int intif_save_petdata(int account_id, struct s_pet *p)
{
if (intif->CheckForCharServer())
return 0;
@@ -120,7 +124,7 @@ int intif_save_petdata(int account_id,struct s_pet *p)
return 0;
}
-int intif_delete_petdata(int pet_id)
+static int intif_delete_petdata(int pet_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -132,7 +136,7 @@ int intif_delete_petdata(int pet_id)
return 1;
}
-int intif_rename(struct map_session_data *sd, int type, const char *name)
+static int intif_rename(struct map_session_data *sd, int type, const char *name)
{
if (intif->CheckForCharServer())
return 1;
@@ -150,7 +154,7 @@ int intif_rename(struct map_session_data *sd, int type, const char *name)
}
// GM Send a message
-int intif_broadcast(const char *mes, int len, int type)
+static int intif_broadcast(const char *mes, int len, int type)
{
int lp = (type&BC_COLOR_MASK) ? 4 : 0;
@@ -182,7 +186,7 @@ int intif_broadcast(const char *mes, int len, int type)
return 0;
}
-int intif_broadcast2(const char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY)
+static int intif_broadcast2(const char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY)
{
nullpo_ret(mes);
Assert_ret(len < 32000);
@@ -211,7 +215,7 @@ int intif_broadcast2(const char *mes, int len, unsigned int fontColor, short fon
/// send a message using the main chat system
/// <sd> the source of message
/// <message> the message that was sent
-int intif_main_message(struct map_session_data* sd, const char* message)
+static int intif_main_message(struct map_session_data *sd, const char *message)
{
char output[256];
@@ -231,7 +235,7 @@ int intif_main_message(struct map_session_data* sd, const char* message)
}
// The transmission of Wisp/Page to inter-server (player not found on this server)
-int intif_wis_message(struct map_session_data *sd, const char *nick, const char *mes, int mes_len)
+static int intif_wis_message(struct map_session_data *sd, const char *nick, const char *mes, int mes_len)
{
if (intif->CheckForCharServer())
return 0;
@@ -260,7 +264,7 @@ int intif_wis_message(struct map_session_data *sd, const char *nick, const char
}
// The reply of Wisp/page
-int intif_wis_replay(int id, int flag)
+static int intif_wis_replay(int id, int flag)
{
if (intif->CheckForCharServer())
return 0;
@@ -277,7 +281,7 @@ int intif_wis_replay(int id, int flag)
}
// The transmission of GM only Wisp/Page from server to inter-server
-int intif_wis_message_to_gm(char *wisp_name, int permission, char *mes)
+static int intif_wis_message_to_gm(char *wisp_name, int permission, char *mes)
{
int mes_len;
if (intif->CheckForCharServer())
@@ -302,7 +306,7 @@ int intif_wis_message_to_gm(char *wisp_name, int permission, char *mes)
}
//Request for saving registry values.
-int intif_saveregistry(struct map_session_data *sd)
+static int intif_saveregistry(struct map_session_data *sd)
{
struct DBIterator *iter;
union DBKey key;
@@ -419,7 +423,7 @@ int intif_saveregistry(struct map_session_data *sd)
}
//Request the registries for this player.
-int intif_request_registry(struct map_session_data *sd, int flag)
+static int intif_request_registry(struct map_session_data *sd, int flag)
{
nullpo_ret(sd);
@@ -439,7 +443,137 @@ int intif_request_registry(struct map_session_data *sd, int flag)
return 0;
}
-int intif_request_guild_storage(int account_id,int guild_id)
+//=================================================================
+// Account Storage
+//-----------------------------------------------------------------
+
+/**
+ * Request the inter-server for a character's storage data.
+ * @packet 0x3010 [out] <account_id>.L
+ * @param sd [in] pointer to session data.
+ */
+static void intif_request_account_storage(const struct map_session_data *sd)
+{
+ nullpo_retv(sd);
+
+ /* Check for character server availability */
+ if (intif->CheckForCharServer())
+ return;
+
+ WFIFOHEAD(inter_fd, 6);
+ WFIFOW(inter_fd, 0) = 0x3010;
+ WFIFOL(inter_fd, 2) = sd->status.account_id;
+ WFIFOSET(inter_fd, 6);
+}
+
+/**
+ * Parse the reception of account storage from the inter-server.
+ * @packet 0x3805 [in] <packet_len>.W <account_id>.L <struct item[]>.P
+ * @param fd [in] file/socket descriptor.
+ */
+static void intif_parse_account_storage(int fd)
+{
+ int account_id = 0, payload_size = 0, storage_count = 0;
+ int i = 0;
+ struct map_session_data *sd = NULL;
+
+ Assert_retv(fd > 0);
+
+ payload_size = RFIFOW(fd, 2) - 8;
+
+ if ((account_id = RFIFOL(fd, 4)) == 0 || (sd = map->id2sd(account_id)) == NULL) {
+ ShowError("intif_parse_account_storage: Session pointer was null for account id %d!\n", account_id);
+ return;
+ }
+
+ if (sd->storage.received == true) {
+ ShowError("intif_parse_account_storage: Multiple calls from the inter-server received.\n");
+ return;
+ }
+
+ storage_count = (payload_size/sizeof(struct item));
+
+ VECTOR_ENSURE(sd->storage.item, storage_count, 1);
+
+ sd->storage.aggregate = storage_count; // Total items in storage.
+
+ for (i = 0; i < storage_count; i++) {
+ const struct item *it = RFIFOP(fd, 8 + i * sizeof(struct item));
+ VECTOR_PUSH(sd->storage.item, *it);
+ }
+
+ sd->storage.received = true; // Mark the storage state as received.
+ sd->storage.save = false; // Initialize the save flag as false.
+
+ pc->checkitem(sd); // re-check remaining items.
+}
+
+/**
+ * Send account storage information for saving.
+ * @packet 0x3011 [out] <packet_len>.W <account_id>.L <struct item[]>.P
+ * @param sd [in] pointer to session data.
+ */
+static void intif_send_account_storage(struct map_session_data *sd)
+{
+ int len = 0, i = 0, c = 0;
+
+ nullpo_retv(sd);
+
+ // Assert that at this point in the code, both flags are true.
+ Assert_retv(sd->storage.save == true);
+ Assert_retv(sd->storage.received == true);
+
+ if (intif->CheckForCharServer())
+ return;
+
+ len = 8 + sd->storage.aggregate * sizeof(struct item);
+
+ WFIFOHEAD(inter_fd, len);
+
+ WFIFOW(inter_fd, 0) = 0x3011;
+ WFIFOW(inter_fd, 2) = (uint16) len;
+ WFIFOL(inter_fd, 4) = sd->status.account_id;
+ for (i = 0, c = 0; i < VECTOR_LENGTH(sd->storage.item); i++) {
+ if (VECTOR_INDEX(sd->storage.item, i).nameid == 0)
+ continue;
+ memcpy(WFIFOP(inter_fd, 8 + c * sizeof(struct item)), &VECTOR_INDEX(sd->storage.item, i), sizeof(struct item));
+ c++;
+ }
+
+ WFIFOSET(inter_fd, len);
+
+ sd->storage.save = false; // Save request has been sent
+}
+
+/**
+ * Parse acknowledgement packet for the saving of an account's storage.
+ * @packet 0x3808 [in] <account_id>.L <saved_flag>.B
+ * @param fd [in] file/socket descriptor.
+ */
+static void intif_parse_account_storage_save_ack(int fd)
+{
+ int account_id = RFIFOL(fd, 2);
+ uint8 saved = RFIFOB(fd, 6);
+ struct map_session_data *sd = NULL;
+
+ Assert_retv(account_id > 0);
+ Assert_retv(fd > 0);
+
+ if ((sd = map->id2sd(account_id)) == NULL)
+ return; // character is most probably offline.
+
+ if (saved == 0) {
+ ShowError("intif_parse_account_storage_save_ack: Storage has not been saved! (AID: %d)\n", account_id);
+ sd->storage.save = true; // Flag it as unsaved, to re-attempt later
+ return;
+ }
+}
+
+//=================================================================
+// Guild Storage
+//-----------------------------------------------------------------
+
+static int intif_request_guild_storage(int account_id, int guild_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -450,7 +584,7 @@ int intif_request_guild_storage(int account_id,int guild_id)
WFIFOSET(inter_fd,10);
return 0;
}
-int intif_send_guild_storage(int account_id,struct guild_storage *gstor)
+static int intif_send_guild_storage(int account_id, struct guild_storage *gstor)
{
if (intif->CheckForCharServer())
return 0;
@@ -466,7 +600,7 @@ int intif_send_guild_storage(int account_id,struct guild_storage *gstor)
}
// Party creation request
-int intif_create_party(struct party_member *member, const char *name, int item, int item2)
+static int intif_create_party(struct party_member *member, const char *name, int item, int item2)
{
if (intif->CheckForCharServer())
return 0;
@@ -485,7 +619,7 @@ int intif_create_party(struct party_member *member, const char *name, int item,
}
// Party information request
-int intif_request_partyinfo(int party_id, int char_id)
+static int intif_request_partyinfo(int party_id, int char_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -498,7 +632,7 @@ int intif_request_partyinfo(int party_id, int char_id)
}
// Request to add a member to party
-int intif_party_addmember(int party_id,struct party_member *member)
+static int intif_party_addmember(int party_id, struct party_member *member)
{
if (intif->CheckForCharServer())
return 0;
@@ -513,7 +647,7 @@ int intif_party_addmember(int party_id,struct party_member *member)
}
// Request to change party configuration (exp,item share)
-int intif_party_changeoption(int party_id,int account_id,int exp,int item)
+static int intif_party_changeoption(int party_id, int account_id, int exp, int item)
{
if (intif->CheckForCharServer())
return 0;
@@ -528,7 +662,7 @@ int intif_party_changeoption(int party_id,int account_id,int exp,int item)
}
// Request to leave party
-int intif_party_leave(int party_id,int account_id, int char_id)
+static int intif_party_leave(int party_id, int account_id, int char_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -542,7 +676,8 @@ int intif_party_leave(int party_id,int account_id, int char_id)
}
// Request keeping party for new map ??
-int intif_party_changemap(struct map_session_data *sd,int online) {
+static int intif_party_changemap(struct map_session_data *sd, int online)
+{
int16 m, map_index;
if (intif->CheckForCharServer())
@@ -568,7 +703,7 @@ int intif_party_changemap(struct map_session_data *sd,int online) {
}
// Request breaking party
-int intif_break_party(int party_id)
+static int intif_break_party(int party_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -580,7 +715,7 @@ int intif_break_party(int party_id)
}
// Sending party chat
-int intif_party_message(int party_id,int account_id,const char *mes,int len)
+static int intif_party_message(int party_id, int account_id, const char *mes, int len)
{
if (intif->CheckForCharServer())
return 0;
@@ -601,7 +736,7 @@ int intif_party_message(int party_id,int account_id,const char *mes,int len)
}
// Request a new leader for party
-int intif_party_leaderchange(int party_id,int account_id,int char_id)
+static int intif_party_leaderchange(int party_id, int account_id, int char_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -614,8 +749,83 @@ int intif_party_leaderchange(int party_id,int account_id,int char_id)
return 0;
}
+//=========================
+// Clan System
+//-------------------------
+
+/**
+ * Request clan member count
+ *
+ * @param clan_id Id of the clan to have members counted
+ * @param kick_interval Interval of the inactivity kick
+ */
+static int intif_clan_membercount(int clan_id, int kick_interval)
+{
+ if (intif->CheckForCharServer() || clan_id == 0 || kick_interval <= 0)
+ return 0;
+
+ WFIFOHEAD(inter_fd, 10);
+ WFIFOW(inter_fd, 0) = 0x3044;
+ WFIFOL(inter_fd, 2) = clan_id;
+ WFIFOL(inter_fd, 6) = kick_interval;
+ WFIFOSET(inter_fd, 10);
+ return 1;
+}
+
+static int intif_clan_kickoffline(int clan_id, int kick_interval)
+{
+ if (intif->CheckForCharServer() || clan_id == 0 || kick_interval <= 0)
+ return 0;
+
+ WFIFOHEAD(inter_fd, 10);
+ WFIFOW(inter_fd, 0) = 0x3045;
+ WFIFOL(inter_fd, 2) = clan_id;
+ WFIFOL(inter_fd, 6) = kick_interval;
+ WFIFOSET(inter_fd, 10);
+ return 1;
+}
+
+static void intif_parse_RecvClanMemberAction(int fd)
+{
+ struct clan *c;
+ int clan_id = RFIFOL(fd, 2);
+ int count = RFIFOL(fd, 6);
+
+ if ((c = clan->search(clan_id)) == NULL) {
+ ShowError("intif_parse_RecvClanMemberAction: Received invalid clan_id '%d'\n", clan_id);
+ return;
+ }
+
+ if (count < 0) {
+ ShowError("intif_parse_RecvClanMemberAction: Received invalid member count value '%d'\n", count);
+ return;
+ }
+
+ c->received = true;
+ if (c->req_count_tid != INVALID_TIMER) {
+ timer->delete(c->req_count_tid, clan->request_membercount);
+ c->req_count_tid = INVALID_TIMER;
+ }
+
+ c->member_count = count;
+ switch (c->req_state) {
+ case CLAN_REQ_AFTER_KICK:
+ if (c->req_kick_tid != INVALID_TIMER) {
+ timer->delete(c->req_kick_tid, clan->request_kickoffline);
+ c->req_kick_tid = INVALID_TIMER;
+ }
+ break;
+ case CLAN_REQ_RELOAD:
+ map->foreachpc(clan->rejoin);
+ break;
+ default:
+ break;
+ }
+ c->req_state = CLAN_REQ_NONE;
+}
+
// Request a Guild creation
-int intif_guild_create(const char *name,const struct guild_member *master)
+static int intif_guild_create(const char *name, const struct guild_member *master)
{
if (intif->CheckForCharServer())
return 0;
@@ -633,7 +843,7 @@ int intif_guild_create(const char *name,const struct guild_member *master)
}
// Request Guild information
-int intif_guild_request_info(int guild_id)
+static int intif_guild_request_info(int guild_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -645,7 +855,7 @@ int intif_guild_request_info(int guild_id)
}
// Request to add member to the guild
-int intif_guild_addmember(int guild_id,struct guild_member *m)
+static int intif_guild_addmember(int guild_id, struct guild_member *m)
{
if (intif->CheckForCharServer())
return 0;
@@ -660,7 +870,7 @@ int intif_guild_addmember(int guild_id,struct guild_member *m)
}
// Request a new leader for guild
-int intif_guild_change_gm(int guild_id, const char *name, int len)
+static int intif_guild_change_gm(int guild_id, const char *name, int len)
{
if (intif->CheckForCharServer())
return 0;
@@ -676,7 +886,7 @@ int intif_guild_change_gm(int guild_id, const char *name, int len)
}
// Request to leave guild
-int intif_guild_leave(int guild_id,int account_id,int char_id,int flag,const char *mes)
+static int intif_guild_leave(int guild_id, int account_id, int char_id, int flag, const char *mes)
{
if (intif->CheckForCharServer())
return 0;
@@ -693,7 +903,7 @@ int intif_guild_leave(int guild_id,int account_id,int char_id,int flag,const cha
}
//Update request / Lv online status of the guild members
-int intif_guild_memberinfoshort(int guild_id, int account_id, int char_id, int online, int lv, int16 class)
+static int intif_guild_memberinfoshort(int guild_id, int account_id, int char_id, int online, int lv, int16 class)
{
if (intif->CheckForCharServer())
return 0;
@@ -710,7 +920,7 @@ int intif_guild_memberinfoshort(int guild_id, int account_id, int char_id, int o
}
//Guild disbanded notification
-int intif_guild_break(int guild_id)
+static int intif_guild_break(int guild_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -722,7 +932,7 @@ int intif_guild_break(int guild_id)
}
// Send a guild message
-int intif_guild_message(int guild_id,int account_id,const char *mes,int len)
+static int intif_guild_message(int guild_id, int account_id, const char *mes, int len)
{
if (intif->CheckForCharServer())
return 0;
@@ -747,7 +957,7 @@ int intif_guild_message(int guild_id,int account_id,const char *mes,int len)
* Requests to change a basic guild information, it is parsed via mapif_parse_GuildBasicInfoChange
* To see the information types that can be changed see mmo.h::guild_basic_info
**/
-int intif_guild_change_basicinfo(int guild_id,int type,const void *data,int len)
+static int intif_guild_change_basicinfo(int guild_id, int type, const void *data, int len)
{
if (intif->CheckForCharServer())
return 0;
@@ -764,8 +974,7 @@ int intif_guild_change_basicinfo(int guild_id,int type,const void *data,int len)
}
// Request a change of Guild member information
-int intif_guild_change_memberinfo(int guild_id,int account_id,int char_id,
- int type,const void *data,int len)
+static int intif_guild_change_memberinfo(int guild_id, int account_id, int char_id, int type, const void *data, int len)
{
if (intif->CheckForCharServer())
return 0;
@@ -784,7 +993,7 @@ int intif_guild_change_memberinfo(int guild_id,int account_id,int char_id,
}
// Request a change of Guild title
-int intif_guild_position(int guild_id,int idx,struct guild_position *p)
+static int intif_guild_position(int guild_id, int idx, struct guild_position *p)
{
if (intif->CheckForCharServer())
return 0;
@@ -800,7 +1009,7 @@ int intif_guild_position(int guild_id,int idx,struct guild_position *p)
}
// Request an update of Guildskill skill_id
-int intif_guild_skillup(int guild_id, uint16 skill_id, int account_id, int max)
+static int intif_guild_skillup(int guild_id, uint16 skill_id, int account_id, int max)
{
if( intif->CheckForCharServer() )
return 0;
@@ -815,7 +1024,7 @@ int intif_guild_skillup(int guild_id, uint16 skill_id, int account_id, int max)
}
// Request a new guild relationship
-int intif_guild_alliance(int guild_id1,int guild_id2,int account_id1,int account_id2,int flag)
+static int intif_guild_alliance(int guild_id1, int guild_id2, int account_id1, int account_id2, int flag)
{
if (intif->CheckForCharServer())
return 0;
@@ -831,7 +1040,7 @@ int intif_guild_alliance(int guild_id1,int guild_id2,int account_id1,int account
}
// Request to change guild notice
-int intif_guild_notice(int guild_id,const char *mes1,const char *mes2)
+static int intif_guild_notice(int guild_id, const char *mes1, const char *mes2)
{
if (intif->CheckForCharServer())
return 0;
@@ -847,7 +1056,7 @@ int intif_guild_notice(int guild_id,const char *mes1,const char *mes2)
}
// Request to change guild emblem
-int intif_guild_emblem(int guild_id,int len,const char *data)
+static int intif_guild_emblem(int guild_id, int len, const char *data)
{
if (intif->CheckForCharServer())
return 0;
@@ -870,7 +1079,7 @@ int intif_guild_emblem(int guild_id,int len,const char *data)
* @param num Number of castles, size of castle_ids array.
* @param castle_ids Pointer to array of castle IDs.
*/
-int intif_guild_castle_dataload(int num, int *castle_ids)
+static int intif_guild_castle_dataload(int num, int *castle_ids)
{
if (intif->CheckForCharServer())
return 0;
@@ -884,7 +1093,7 @@ int intif_guild_castle_dataload(int num, int *castle_ids)
}
// Request change castle guild owner and save data
-int intif_guild_castle_datasave(int castle_id,int index, int value)
+static int intif_guild_castle_datasave(int castle_id, int index, int value)
{
if (intif->CheckForCharServer())
return 0;
@@ -901,7 +1110,7 @@ int intif_guild_castle_datasave(int castle_id,int index, int value)
// Homunculus Packets send to Inter server [albator]
//-----------------------------------------------------------------
-int intif_homunculus_create(int account_id, struct s_homunculus *sh)
+static int intif_homunculus_create(int account_id, struct s_homunculus *sh)
{
if (intif->CheckForCharServer())
return 0;
@@ -915,7 +1124,8 @@ int intif_homunculus_create(int account_id, struct s_homunculus *sh)
return 0;
}
-bool intif_homunculus_requestload(int account_id, int homun_id) {
+static bool intif_homunculus_requestload(int account_id, int homun_id)
+{
if (intif->CheckForCharServer())
return false;
WFIFOHEAD(inter_fd, 10);
@@ -926,7 +1136,7 @@ bool intif_homunculus_requestload(int account_id, int homun_id) {
return true;
}
-int intif_homunculus_requestsave(int account_id, struct s_homunculus* sh)
+static int intif_homunculus_requestsave(int account_id, struct s_homunculus *sh)
{
if (intif->CheckForCharServer())
return 0;
@@ -941,7 +1151,7 @@ int intif_homunculus_requestsave(int account_id, struct s_homunculus* sh)
}
-int intif_homunculus_requestdelete(int homun_id)
+static int intif_homunculus_requestdelete(int homun_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -957,7 +1167,8 @@ int intif_homunculus_requestdelete(int homun_id)
// Packets receive from inter server
// Wisp/Page reception // rewritten by [Yor]
-void intif_parse_WisMessage(int fd) {
+static void intif_parse_WisMessage(int fd)
+{
struct map_session_data* sd;
const char *wisp_source;
char name[NAME_LENGTH];
@@ -993,7 +1204,7 @@ void intif_parse_WisMessage(int fd) {
}
// Wisp/page transmission result reception
-void intif_parse_WisEnd(int fd)
+static void intif_parse_WisEnd(int fd)
{
struct map_session_data* sd;
const char *playername = RFIFOP(fd, 2);
@@ -1007,7 +1218,7 @@ void intif_parse_WisEnd(int fd)
return;
}
-int intif_parse_WisToGM_sub(struct map_session_data *sd, va_list va)
+static int intif_parse_WisToGM_sub(struct map_session_data *sd, va_list va)
{
int permission = va_arg(va, int);
char *wisp_name;
@@ -1026,7 +1237,7 @@ int intif_parse_WisToGM_sub(struct map_session_data *sd, va_list va)
// Received wisp message from map-server via char-server for ALL gm
// 0x3003/0x3803 <packet_len>.w <wispname>.24B <permission>.l <message>.?B
-void intif_parse_WisToGM(int fd)
+static void intif_parse_WisToGM(int fd)
{
int permission, mes_len;
char Wisp_name[NAME_LENGTH];
@@ -1048,7 +1259,7 @@ void intif_parse_WisToGM(int fd)
}
// Request player registre
-void intif_parse_Registers(int fd)
+static void intif_parse_Registers(int fd)
{
int flag;
struct map_session_data *sd;
@@ -1114,7 +1325,7 @@ void intif_parse_Registers(int fd)
safestrncpy(sval, RFIFOP(fd, cursor + 1), min((int)sizeof(sval), len));
cursor += len + 1;
- script->set_reg(NULL,sd,reference_uid(script->add_str(key), index), key, sval, NULL);
+ script->set_reg(NULL,sd,reference_uid(script->add_variable(key), index), key, sval, NULL);
}
/**
* Vessel!
@@ -1136,7 +1347,7 @@ void intif_parse_Registers(int fd)
ival = RFIFOL(fd, cursor);
cursor += 4;
- script->set_reg(NULL,sd,reference_uid(script->add_str(key), index), key, (const void *)h64BPTRSIZE(ival), NULL);
+ script->set_reg(NULL,sd,reference_uid(script->add_variable(key), index), key, (const void *)h64BPTRSIZE(ival), NULL);
}
}
script->parser_current_file = NULL;/* reset */
@@ -1149,7 +1360,7 @@ void intif_parse_Registers(int fd)
pc->reg_received(sd); //Received all registry values, execute init scripts and what-not. [Skotlex]
}
-void intif_parse_LoadGuildStorage(int fd)
+static void intif_parse_LoadGuildStorage(int fd)
{
struct guild_storage *gstor;
struct map_session_data *sd;
@@ -1191,13 +1402,13 @@ void intif_parse_LoadGuildStorage(int fd)
}
// ACK guild_storage saved
-void intif_parse_SaveGuildStorage(int fd)
+static void intif_parse_SaveGuildStorage(int fd)
{
gstorage->saved(/*RFIFOL(fd,2), */RFIFOL(fd,6));
}
// ACK party creation
-void intif_parse_PartyCreated(int fd)
+static void intif_parse_PartyCreated(int fd)
{
if(battle_config.etc_log)
ShowInfo("intif: party created by account %u\n\n", RFIFOL(fd,2));
@@ -1205,7 +1416,8 @@ void intif_parse_PartyCreated(int fd)
}
// Receive party info
-void intif_parse_PartyInfo(int fd) {
+static void intif_parse_PartyInfo(int fd)
+{
if (RFIFOW(fd,2) == 12) {
ShowWarning("intif: party noinfo (char_id=%u party_id=%u)\n", RFIFOL(fd,4), RFIFOL(fd,8));
party->recv_noinfo(RFIFOL(fd,8), RFIFOL(fd,4));
@@ -1219,7 +1431,7 @@ void intif_parse_PartyInfo(int fd) {
}
// ACK adding party member
-void intif_parse_PartyMemberAdded(int fd)
+static void intif_parse_PartyMemberAdded(int fd)
{
if(battle_config.etc_log)
ShowInfo("intif: party member added Party (%u), Account(%u), Char(%u)\n", RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10));
@@ -1227,13 +1439,13 @@ void intif_parse_PartyMemberAdded(int fd)
}
// ACK changing party option
-void intif_parse_PartyOptionChanged(int fd)
+static void intif_parse_PartyOptionChanged(int fd)
{
party->optionchanged(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOW(fd,10),RFIFOW(fd,12),RFIFOB(fd,14));
}
// ACK member leaving party
-void intif_parse_PartyMemberWithdraw(int fd)
+static void intif_parse_PartyMemberWithdraw(int fd)
{
if(battle_config.etc_log)
ShowInfo("intif: party member withdraw: Party(%u), Account(%u), Char(%u)\n", RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10));
@@ -1241,28 +1453,32 @@ void intif_parse_PartyMemberWithdraw(int fd)
}
// ACK party break
-void intif_parse_PartyBroken(int fd) {
+static void intif_parse_PartyBroken(int fd)
+{
party->broken(RFIFOL(fd,2));
}
// ACK party on new map
-void intif_parse_PartyMove(int fd)
+static void intif_parse_PartyMove(int fd)
{
party->recv_movemap(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10),RFIFOW(fd,14),RFIFOB(fd,16),RFIFOW(fd,17));
}
// ACK party messages
-void intif_parse_PartyMessage(int fd) {
+static void intif_parse_PartyMessage(int fd)
+{
party->recv_message(RFIFOL(fd,4), RFIFOL(fd,8), RFIFOP(fd,12), RFIFOW(fd,2)-12);
}
// ACK guild creation
-void intif_parse_GuildCreated(int fd) {
+static void intif_parse_GuildCreated(int fd)
+{
guild->created(RFIFOL(fd,2),RFIFOL(fd,6));
}
// ACK guild infos
-void intif_parse_GuildInfo(int fd) {
+static void intif_parse_GuildInfo(int fd)
+{
if (RFIFOW(fd,2) == 8) {
ShowWarning("intif: guild noinfo %u\n", RFIFOL(fd,4));
guild->recv_noinfo(RFIFOL(fd,4));
@@ -1275,30 +1491,35 @@ void intif_parse_GuildInfo(int fd) {
}
// ACK adding guild member
-void intif_parse_GuildMemberAdded(int fd) {
+static void intif_parse_GuildMemberAdded(int fd)
+{
if(battle_config.etc_log)
ShowInfo("intif: guild member added %u %u %u %d\n", RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10), RFIFOB(fd,14));
guild->member_added(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10),RFIFOB(fd,14));
}
// ACK member leaving guild
-void intif_parse_GuildMemberWithdraw(int fd) {
+static void intif_parse_GuildMemberWithdraw(int fd)
+{
guild->member_withdraw(RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10), RFIFOB(fd,14), RFIFOP(fd,55), RFIFOP(fd,15));
}
// ACK guild member basic info
-void intif_parse_GuildMemberInfoShort(int fd) {
- guild->recv_memberinfoshort(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10),RFIFOB(fd,14),RFIFOW(fd,15),RFIFOW(fd,17));
+static void intif_parse_GuildMemberInfoShort(int fd)
+{
+ guild->recv_memberinfoshort(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10),RFIFOB(fd,14),RFIFOW(fd,15),RFIFOW(fd,17),RFIFOL(fd,19));
}
// ACK guild break
-void intif_parse_GuildBroken(int fd) {
+static void intif_parse_GuildBroken(int fd)
+{
guild->broken(RFIFOL(fd,2),RFIFOB(fd,6));
}
// basic guild info change notice
// 0x3839 <packet len>.w <guild id>.l <type>.w <data>.?b
-void intif_parse_GuildBasicInfoChanged(int fd) {
+static void intif_parse_GuildBasicInfoChanged(int fd)
+{
//int len = RFIFOW(fd,2) - 10;
int guild_id = RFIFOL(fd,4);
int type = RFIFOW(fd,8);
@@ -1334,7 +1555,8 @@ void intif_parse_GuildBasicInfoChanged(int fd) {
// guild member info change notice
// 0x383a <packet len>.w <guild id>.l <account id>.l <char id>.l <type>.w <data>.?b
-void intif_parse_GuildMemberInfoChanged(int fd) {
+static void intif_parse_GuildMemberInfoChanged(int fd)
+{
//int len = RFIFOW(fd,2) - 18;
int guild_id = RFIFOL(fd,4);
int account_id = RFIFOL(fd,8);
@@ -1365,7 +1587,8 @@ void intif_parse_GuildMemberInfoChanged(int fd) {
}
// ACK change of guild title
-void intif_parse_GuildPosition(int fd) {
+static void intif_parse_GuildPosition(int fd)
+{
if (RFIFOW(fd,2)!=sizeof(struct guild_position)+12)
ShowError("intif: guild info: data size mismatch (%u) %d != %"PRIuS"\n",
RFIFOL(fd,4), RFIFOW(fd,2), sizeof(struct guild_position) + 12);
@@ -1373,47 +1596,56 @@ void intif_parse_GuildPosition(int fd) {
}
// ACK change of guild skill update
-void intif_parse_GuildSkillUp(int fd) {
+static void intif_parse_GuildSkillUp(int fd)
+{
guild->skillupack(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10));
}
// ACK change of guild relationship
-void intif_parse_GuildAlliance(int fd) {
+static void intif_parse_GuildAlliance(int fd)
+{
guild->allianceack(RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10), RFIFOL(fd,14), RFIFOB(fd,18), RFIFOP(fd,19), RFIFOP(fd,43));
}
// ACK change of guild notice
-void intif_parse_GuildNotice(int fd) {
+static void intif_parse_GuildNotice(int fd)
+{
guild->notice_changed(RFIFOL(fd,2), RFIFOP(fd,6), RFIFOP(fd,66));
}
// ACK change of guild emblem
-void intif_parse_GuildEmblem(int fd) {
+static void intif_parse_GuildEmblem(int fd)
+{
guild->emblem_changed(RFIFOW(fd,2)-12, RFIFOL(fd,4), RFIFOL(fd,8), RFIFOP(fd,12));
}
// ACK guild message
-void intif_parse_GuildMessage(int fd) {
+static void intif_parse_GuildMessage(int fd)
+{
guild->recv_message(RFIFOL(fd,4), RFIFOL(fd,8), RFIFOP(fd,12), RFIFOW(fd,2)-12);
}
// Reply guild castle data request
-void intif_parse_GuildCastleDataLoad(int fd) {
+static void intif_parse_GuildCastleDataLoad(int fd)
+{
guild->castledataloadack(RFIFOW(fd,2), RFIFOP(fd,4));
}
// ACK change of guildmaster
-void intif_parse_GuildMasterChanged(int fd) {
+static void intif_parse_GuildMasterChanged(int fd)
+{
guild->gm_changed(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10));
}
// Request pet creation
-void intif_parse_CreatePet(int fd) {
+static void intif_parse_CreatePet(int fd)
+{
pet->get_egg(RFIFOL(fd,2), RFIFOW(fd,6), RFIFOL(fd,8));
}
// ACK pet data
-void intif_parse_RecvPetData(int fd) {
+static void intif_parse_RecvPetData(int fd)
+{
struct s_pet p;
int len;
len=RFIFOW(fd,2);
@@ -1427,19 +1659,21 @@ void intif_parse_RecvPetData(int fd) {
}
/* Really? Whats the point, shouldn't be sent when successful then [Ind] */
// ACK pet save data
-void intif_parse_SavePetOk(int fd) {
+static void intif_parse_SavePetOk(int fd)
+{
if(RFIFOB(fd,6) == 1)
ShowError("pet data save failure\n");
}
/* Really? Whats the point, shouldn't be sent when successful then [Ind] */
// ACK deleting pet
-void intif_parse_DeletePetOk(int fd) {
+static void intif_parse_DeletePetOk(int fd)
+{
if(RFIFOB(fd,2) == 1)
ShowError("pet data delete failure\n");
}
// ACK changing name request, players,pets,homun
-void intif_parse_ChangeNameOk(int fd)
+static void intif_parse_ChangeNameOk(int fd)
{
struct map_session_data *sd = NULL;
if((sd=map->id2sd(RFIFOL(fd,2)))==NULL ||
@@ -1462,7 +1696,8 @@ void intif_parse_ChangeNameOk(int fd)
//----------------------------------------------------------------
// Homunculus recv packets [albator]
-void intif_parse_CreateHomunculus(int fd) {
+static void intif_parse_CreateHomunculus(int fd)
+{
int len = RFIFOW(fd,2)-9;
if (sizeof(struct s_homunculus) != len) {
if (battle_config.etc_log)
@@ -1472,7 +1707,8 @@ void intif_parse_CreateHomunculus(int fd) {
homun->recv_data(RFIFOL(fd,4), RFIFOP(fd,9), RFIFOB(fd,8)) ;
}
-void intif_parse_RecvHomunculusData(int fd) {
+static void intif_parse_RecvHomunculusData(int fd)
+{
int len = RFIFOW(fd,2)-9;
if (sizeof(struct s_homunculus) != len) {
@@ -1484,29 +1720,122 @@ void intif_parse_RecvHomunculusData(int fd) {
}
/* Really? Whats the point, shouldn't be sent when successful then [Ind] */
-void intif_parse_SaveHomunculusOk(int fd) {
+static void intif_parse_SaveHomunculusOk(int fd)
+{
if(RFIFOB(fd,6) != 1)
ShowError("homunculus data save failure for account %u\n", RFIFOL(fd,2));
}
/* Really? Whats the point, shouldn't be sent when successful then [Ind] */
-void intif_parse_DeleteHomunculusOk(int fd) {
+static void intif_parse_DeleteHomunculusOk(int fd)
+{
if(RFIFOB(fd,2) != 1)
ShowError("Homunculus data delete failure\n");
}
-/**************************************
+/***************************************
+ * ACHIEVEMENT SYSTEM FUNCTIONS
+ ***************************************/
+/**
+ * Sends a request to the inter-server to load
+ * and send a character's achievement data.
+ * @packet [out] 0x3012 <char_id>.L
+ * @param sd pointer to map_session_data.
+ */
+static void intif_achievements_request(struct map_session_data *sd)
+{
+ nullpo_retv(sd);
+
+ if (intif->CheckForCharServer())
+ return;
+
+ WFIFOHEAD(inter_fd, 6);
+ WFIFOW(inter_fd, 0) = 0x3012;
+ WFIFOL(inter_fd, 2) = sd->status.char_id;
+ WFIFOSET(inter_fd, 6);
+}
+
+/**
+ * Handles reception of achievement data for a character from the inter-server.
+ * @packet [in] 0x3810 <packet_len>.W <char_id>.L <char_achievements[]>.P
+ * @param fd socket descriptor.
+ */
+static void intif_parse_achievements_load(int fd)
+{
+ int size = RFIFOW(fd, 2);
+ int char_id = RFIFOL(fd, 4);
+ int payload_count = (size - 8) / sizeof(struct achievement);
+ struct map_session_data *sd = map->charid2sd(char_id);
+ int i = 0;
+
+ if (sd == NULL) {
+ ShowError("intif_parse_achievements_load: Parse request for achievements received but character is offline!\n");
+ return;
+ }
+
+ if (VECTOR_LENGTH(sd->achievement) > 0) {
+ ShowError("intif_parse_achievements_load: Achievements already loaded! Possible multiple calls from the inter-server received.\n");
+ return;
+ }
+
+ VECTOR_ENSURE(sd->achievement, payload_count, 1);
+
+ for (i = 0; i < payload_count; i++) {
+ struct achievement t_ach = { 0 };
+
+ memcpy(&t_ach, RFIFOP(fd, 8 + i * sizeof(struct achievement)), sizeof(struct achievement));
-QUESTLOG SYSTEM FUNCTIONS
+ if (achievement->get(t_ach.id) == NULL) {
+ ShowError("intif_parse_achievements_load: Invalid Achievement %d received from character %d. Ignoring...\n", t_ach.id, char_id);
+ continue;
+ }
+
+ VECTOR_PUSH(sd->achievement, t_ach);
+ }
-***************************************/
+ achievement->init_titles(sd);
+ clif->achievement_send_list(fd, sd);
+ sd->achievements_received = true;
+}
+
+/**
+ * Send character's achievement data to the inter-server.
+ * @packet 0x3013 <packet_len>.W <char_id>.L <achievements[]>.P
+ * @param sd pointer to map session data.
+ */
+static void intif_achievements_save(struct map_session_data *sd)
+{
+ int packet_len = 0, payload_size = 0, i = 0;
+
+ nullpo_retv(sd);
+ /* check for character server. */
+ if (intif->CheckForCharServer())
+ return;
+ /* Return if no data. */
+ if (!(payload_size = VECTOR_LENGTH(sd->achievement) * sizeof(struct achievement)))
+ return;
+
+ packet_len = payload_size + 8;
+
+ WFIFOHEAD(inter_fd, packet_len);
+ WFIFOW(inter_fd, 0) = 0x3013;
+ WFIFOW(inter_fd, 2) = packet_len;
+ WFIFOL(inter_fd, 4) = sd->status.char_id;
+ for (i = 0; i < VECTOR_LENGTH(sd->achievement); i++)
+ memcpy(WFIFOP(inter_fd, 8 + i * sizeof(struct achievement)), &VECTOR_INDEX(sd->achievement, i), sizeof(struct achievement));
+ WFIFOSET(inter_fd, packet_len);
+}
+
+/**************************************
+ * QUESTLOG SYSTEM FUNCTIONS *
+ **************************************/
/**
* Requests a character's quest log entries to the inter server.
*
* @param sd Character's data
*/
-void intif_request_questlog(struct map_session_data *sd)
+static void intif_request_questlog(struct map_session_data *sd)
{
nullpo_retv(sd);
WFIFOHEAD(inter_fd,6);
@@ -1522,7 +1851,8 @@ void intif_request_questlog(struct map_session_data *sd)
*
* @see intif_parse
*/
-void intif_parse_QuestLog(int fd) {
+static void intif_parse_QuestLog(int fd)
+{
int char_id = RFIFOL(fd, 4), num_received = (RFIFOW(fd, 2)-8)/sizeof(struct quest);
struct map_session_data *sd = map->charid2sd(char_id);
@@ -1577,7 +1907,8 @@ void intif_parse_QuestLog(int fd) {
*
* @see intif_parse
*/
-void intif_parse_QuestSave(int fd) {
+static void intif_parse_QuestSave(int fd)
+{
int cid = RFIFOL(fd, 2);
struct map_session_data *sd = map->id2sd(cid);
@@ -1593,7 +1924,7 @@ void intif_parse_QuestSave(int fd) {
* @param sd Character's data
* @return 0 in case of success, nonzero otherwise
*/
-int intif_quest_save(struct map_session_data *sd)
+static int intif_quest_save(struct map_session_data *sd)
{
int len = sizeof(struct quest)*sd->num_quests + 8;
@@ -1620,7 +1951,7 @@ int intif_quest_save(struct map_session_data *sd)
* Inbox Request
* flag: 0 Update Inbox | 1 OpenMail
*------------------------------------------*/
-int intif_Mail_requestinbox(int char_id, unsigned char flag)
+static int intif_Mail_requestinbox(int char_id, unsigned char flag)
{
if (intif->CheckForCharServer())
return 0;
@@ -1634,7 +1965,8 @@ int intif_Mail_requestinbox(int char_id, unsigned char flag)
return 0;
}
-void intif_parse_MailInboxReceived(int fd) {
+static void intif_parse_MailInboxReceived(int fd)
+{
struct map_session_data *sd;
unsigned char flag = RFIFOB(fd,8);
@@ -1663,7 +1995,7 @@ void intif_parse_MailInboxReceived(int fd) {
/*------------------------------------------
* Mail Read
*------------------------------------------*/
-int intif_Mail_read(int mail_id)
+static int intif_Mail_read(int mail_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -1678,7 +2010,7 @@ int intif_Mail_read(int mail_id)
/*------------------------------------------
* Get Attachment
*------------------------------------------*/
-int intif_Mail_getattach(int char_id, int mail_id)
+static int intif_Mail_getattach(int char_id, int mail_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -1692,7 +2024,8 @@ int intif_Mail_getattach(int char_id, int mail_id)
return 0;
}
-void intif_parse_MailGetAttach(int fd) {
+static void intif_parse_MailGetAttach(int fd)
+{
struct map_session_data *sd;
struct item item;
int zeny = RFIFOL(fd,8);
@@ -1717,7 +2050,7 @@ void intif_parse_MailGetAttach(int fd) {
/*------------------------------------------
* Delete Message
*------------------------------------------*/
-int intif_Mail_delete(int char_id, int mail_id)
+static int intif_Mail_delete(int char_id, int mail_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -1731,7 +2064,8 @@ int intif_Mail_delete(int char_id, int mail_id)
return 0;
}
-void intif_parse_MailDelete(int fd) {
+static void intif_parse_MailDelete(int fd)
+{
struct map_session_data *sd;
int char_id = RFIFOL(fd,2);
int mail_id = RFIFOL(fd,6);
@@ -1759,7 +2093,7 @@ void intif_parse_MailDelete(int fd) {
/*------------------------------------------
* Return Message
*------------------------------------------*/
-int intif_Mail_return(int char_id, int mail_id)
+static int intif_Mail_return(int char_id, int mail_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -1773,7 +2107,8 @@ int intif_Mail_return(int char_id, int mail_id)
return 0;
}
-void intif_parse_MailReturn(int fd) {
+static void intif_parse_MailReturn(int fd)
+{
struct map_session_data *sd = map->charid2sd(RFIFOL(fd,2));
int mail_id = RFIFOL(fd,6);
short fail = RFIFOB(fd,10);
@@ -1800,7 +2135,7 @@ void intif_parse_MailReturn(int fd) {
/*------------------------------------------
* Send Mail
*------------------------------------------*/
-int intif_Mail_send(int account_id, struct mail_message *msg)
+static int intif_Mail_send(int account_id, struct mail_message *msg)
{
int len = sizeof(struct mail_message) + 8;
@@ -1818,7 +2153,8 @@ int intif_Mail_send(int account_id, struct mail_message *msg)
return 1;
}
-void intif_parse_MailSend(int fd) {
+static void intif_parse_MailSend(int fd)
+{
struct mail_message msg;
struct map_session_data *sd;
bool fail;
@@ -1844,7 +2180,8 @@ void intif_parse_MailSend(int fd) {
}
}
-void intif_parse_MailNew(int fd) {
+static void intif_parse_MailNew(int fd)
+{
struct map_session_data *sd = map->charid2sd(RFIFOL(fd,2));
int mail_id = RFIFOL(fd,6);
const char *sender_name = RFIFOP(fd,10);
@@ -1861,7 +2198,7 @@ void intif_parse_MailNew(int fd) {
* AUCTION SYSTEM
* By Zephyrus
*==========================================*/
-int intif_Auction_requestlist(int char_id, short type, int price, const char* searchtext, short page)
+static int intif_Auction_requestlist(int char_id, short type, int price, const char *searchtext, short page)
{
int len = NAME_LENGTH + 16;
@@ -1882,7 +2219,8 @@ int intif_Auction_requestlist(int char_id, short type, int price, const char* se
return 0;
}
-void intif_parse_AuctionResults(int fd) {
+static void intif_parse_AuctionResults(int fd)
+{
struct map_session_data *sd = map->charid2sd(RFIFOL(fd,4));
short count = RFIFOW(fd,8);
short pages = RFIFOW(fd,10);
@@ -1894,7 +2232,7 @@ void intif_parse_AuctionResults(int fd) {
clif->auction_results(sd, count, pages, data);
}
-int intif_Auction_register(struct auction_data *auction)
+static int intif_Auction_register(struct auction_data *auction)
{
int len = sizeof(struct auction_data) + 4;
@@ -1911,7 +2249,8 @@ int intif_Auction_register(struct auction_data *auction)
return 1;
}
-void intif_parse_AuctionRegister(int fd) {
+static void intif_parse_AuctionRegister(int fd)
+{
struct map_session_data *sd;
struct auction_data auction;
@@ -1938,7 +2277,7 @@ void intif_parse_AuctionRegister(int fd) {
}
}
-int intif_Auction_cancel(int char_id, unsigned int auction_id)
+static int intif_Auction_cancel(int char_id, unsigned int auction_id)
{
if( intif->CheckForCharServer() )
return 0;
@@ -1952,7 +2291,8 @@ int intif_Auction_cancel(int char_id, unsigned int auction_id)
return 0;
}
-void intif_parse_AuctionCancel(int fd) {
+static void intif_parse_AuctionCancel(int fd)
+{
struct map_session_data *sd = map->charid2sd(RFIFOL(fd,2));
int result = RFIFOB(fd,6);
@@ -1967,7 +2307,7 @@ void intif_parse_AuctionCancel(int fd) {
}
}
-int intif_Auction_close(int char_id, unsigned int auction_id)
+static int intif_Auction_close(int char_id, unsigned int auction_id)
{
if( intif->CheckForCharServer() )
return 0;
@@ -1981,7 +2321,8 @@ int intif_Auction_close(int char_id, unsigned int auction_id)
return 0;
}
-void intif_parse_AuctionClose(int fd) {
+static void intif_parse_AuctionClose(int fd)
+{
struct map_session_data *sd = map->charid2sd(RFIFOL(fd,2));
unsigned char result = RFIFOB(fd,6);
@@ -1996,7 +2337,7 @@ void intif_parse_AuctionClose(int fd) {
}
}
-int intif_Auction_bid(int char_id, const char* name, unsigned int auction_id, int bid)
+static int intif_Auction_bid(int char_id, const char *name, unsigned int auction_id, int bid)
{
int len = 16 + NAME_LENGTH;
@@ -2016,7 +2357,8 @@ int intif_Auction_bid(int char_id, const char* name, unsigned int auction_id, in
return 0;
}
-void intif_parse_AuctionBid(int fd) {
+static void intif_parse_AuctionBid(int fd)
+{
struct map_session_data *sd = map->charid2sd(RFIFOL(fd,2));
int bid = RFIFOL(fd,6);
unsigned char result = RFIFOB(fd,10);
@@ -2035,7 +2377,8 @@ void intif_parse_AuctionBid(int fd) {
}
// Used to send 'You have won the auction' and 'You failed to won the auction' messages
-void intif_parse_AuctionMessage(int fd) {
+static void intif_parse_AuctionMessage(int fd)
+{
struct map_session_data *sd = map->charid2sd(RFIFOL(fd,2));
unsigned char result = RFIFOB(fd,6);
@@ -2048,7 +2391,7 @@ void intif_parse_AuctionMessage(int fd) {
/*==========================================
* Mercenary's System
*------------------------------------------*/
-int intif_mercenary_create(struct s_mercenary *merc)
+static int intif_mercenary_create(struct s_mercenary *merc)
{
int size = sizeof(struct s_mercenary) + 4;
@@ -2064,7 +2407,8 @@ int intif_mercenary_create(struct s_mercenary *merc)
return 0;
}
-void intif_parse_MercenaryReceived(int fd) {
+static void intif_parse_MercenaryReceived(int fd)
+{
int len = RFIFOW(fd,2) - 5;
if (sizeof(struct s_mercenary) != len) {
@@ -2076,7 +2420,7 @@ void intif_parse_MercenaryReceived(int fd) {
mercenary->data_received(RFIFOP(fd,5), RFIFOB(fd,4));
}
-int intif_mercenary_request(int merc_id, int char_id)
+static int intif_mercenary_request(int merc_id, int char_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -2089,7 +2433,7 @@ int intif_mercenary_request(int merc_id, int char_id)
return 0;
}
-int intif_mercenary_delete(int merc_id)
+static int intif_mercenary_delete(int merc_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -2101,12 +2445,13 @@ int intif_mercenary_delete(int merc_id)
return 0;
}
/* Really? Whats the point, shouldn't be sent when successful then [Ind] */
-void intif_parse_MercenaryDeleted(int fd) {
+static void intif_parse_MercenaryDeleted(int fd)
+{
if( RFIFOB(fd,2) != 1 )
ShowError("Mercenary data delete failure\n");
}
-int intif_mercenary_save(struct s_mercenary *merc)
+static int intif_mercenary_save(struct s_mercenary *merc)
{
int size = sizeof(struct s_mercenary) + 4;
@@ -2122,7 +2467,8 @@ int intif_mercenary_save(struct s_mercenary *merc)
return 0;
}
/* Really? Whats the point, shouldn't be sent when successful then [Ind] */
-void intif_parse_MercenarySaved(int fd) {
+static void intif_parse_MercenarySaved(int fd)
+{
if( RFIFOB(fd,2) != 1 )
ShowError("Mercenary data save failure\n");
}
@@ -2130,7 +2476,7 @@ void intif_parse_MercenarySaved(int fd) {
/*==========================================
* Elemental's System
*------------------------------------------*/
-int intif_elemental_create(struct s_elemental *ele)
+static int intif_elemental_create(struct s_elemental *ele)
{
int size = sizeof(struct s_elemental) + 4;
@@ -2146,7 +2492,8 @@ int intif_elemental_create(struct s_elemental *ele)
return 0;
}
-void intif_parse_ElementalReceived(int fd) {
+static void intif_parse_ElementalReceived(int fd)
+{
int len = RFIFOW(fd,2) - 5;
if (sizeof(struct s_elemental) != len) {
@@ -2158,7 +2505,7 @@ void intif_parse_ElementalReceived(int fd) {
elemental->data_received(RFIFOP(fd,5), RFIFOB(fd,4));
}
-int intif_elemental_request(int ele_id, int char_id)
+static int intif_elemental_request(int ele_id, int char_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -2171,7 +2518,7 @@ int intif_elemental_request(int ele_id, int char_id)
return 0;
}
-int intif_elemental_delete(int ele_id)
+static int intif_elemental_delete(int ele_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -2183,12 +2530,13 @@ int intif_elemental_delete(int ele_id)
return 0;
}
/* Really? Whats the point, shouldn't be sent when successful then [Ind] */
-void intif_parse_ElementalDeleted(int fd) {
+static void intif_parse_ElementalDeleted(int fd)
+{
if( RFIFOB(fd,2) != 1 )
ShowError("Elemental data delete failure\n");
}
-int intif_elemental_save(struct s_elemental *ele)
+static int intif_elemental_save(struct s_elemental *ele)
{
int size = sizeof(struct s_elemental) + 4;
@@ -2204,12 +2552,14 @@ int intif_elemental_save(struct s_elemental *ele)
return 0;
}
/* Really? Whats the point, shouldn't be sent when successful then [Ind] */
-void intif_parse_ElementalSaved(int fd) {
+static void intif_parse_ElementalSaved(int fd)
+{
if( RFIFOB(fd,2) != 1 )
ShowError("Elemental data save failure\n");
}
-void intif_request_accinfo( int u_fd, int aid, int group_lv, char* query ) {
+static void intif_request_accinfo(int u_fd, int aid, int group_lv, char *query)
+{
nullpo_retv(query);
WFIFOHEAD(inter_fd,2 + 4 + 4 + 4 + NAME_LENGTH);
@@ -2224,7 +2574,8 @@ void intif_request_accinfo( int u_fd, int aid, int group_lv, char* query ) {
return;
}
-void intif_parse_MessageToFD(int fd) {
+static void intif_parse_MessageToFD(int fd)
+{
int u_fd = RFIFOL(fd,4);
Assert_retv(sockt->session_is_valid(u_fd));
@@ -2245,7 +2596,8 @@ void intif_parse_MessageToFD(int fd) {
/*==========================================
* Item Bound System [Xantara][Mhalicot]
*------------------------------------------*/
-void intif_itembound_req(int char_id,int aid,int guild_id) {
+static void intif_itembound_req(int char_id, int aid, int guild_id)
+{
#ifdef GP_BOUND_ITEMS
struct guild_storage *gstor = idb_get(gstorage->db,guild_id);
WFIFOHEAD(inter_fd,12);
@@ -2260,7 +2612,8 @@ void intif_itembound_req(int char_id,int aid,int guild_id) {
}
//3856
-void intif_parse_Itembound_ack(int fd) {
+static void intif_parse_Itembound_ack(int fd)
+{
#ifdef GP_BOUND_ITEMS
struct guild_storage *gstor;
int guild_id = RFIFOW(fd,6);
@@ -2270,11 +2623,243 @@ void intif_parse_Itembound_ack(int fd) {
gstor->lock = 0; //Unlock now that operation is completed
#endif
}
+
+/*==========================================
+ * RoDEX System
+ *==========================================*/
+
+/*------------------------------------------
+ * Mail List
+ *------------------------------------------*/
+
+// Rodex Inbox Request
+// char_id: char_id
+// account_id: account_id (used by account mail)
+// flag: 0 - Open/Refresh ; 1 = Next Page
+static int intif_rodex_requestinbox(int char_id, int account_id, int8 flag, int8 opentype, int64 mail_id)
+{
+ if (intif->CheckForCharServer())
+ return 0;
+
+ WFIFOHEAD(inter_fd, 20);
+ WFIFOW(inter_fd, 0) = 0x3095;
+ WFIFOL(inter_fd, 2) = char_id;
+ WFIFOL(inter_fd, 6) = account_id;
+ WFIFOL(inter_fd, 10) = flag;
+ WFIFOB(inter_fd, 11) = opentype;
+ WFIFOQ(inter_fd, 12) = mail_id;
+ WFIFOSET(inter_fd, 20);
+
+ return 0;
+}
+
+static void intif_parse_RequestRodexOpenInbox(int fd)
+{
+ struct map_session_data *sd;
+#if PACKETVER < 20170419
+ int8 opentype = RFIFOB(fd, 8);
+#endif
+ int8 flag = RFIFOB(fd, 9);
+ int8 is_end = RFIFOB(fd, 10);
+ int is_first = RFIFOB(fd, 11);
+ int count = RFIFOL(fd, 12);
+#if PACKETVER >= 20170419
+ int64 mail_id = RFIFOQ(fd, 16);
+#endif
+ int i, j;
+
+ sd = map->charid2sd(RFIFOL(fd, 4));
+
+ if (sd == NULL) // user is not online anymore
+ return;
+
+ if (is_first == false && sd->rodex.total == 0) {
+ ShowError("intif_parse_RodexInboxOpenReceived: mail list received in wrong order.\n");
+ return;
+ }
+
+ if (is_first)
+ sd->rodex.total = count;
+ else
+ sd->rodex.total += count;
+
+ if (RFIFOW(fd, 2) - 24 != count * sizeof(struct rodex_message)) {
+ ShowError("intif_parse_RodexInboxOpenReceived: data size mismatch %d != %"PRIuS"\n", RFIFOW(fd, 2) - 24, count * sizeof(struct rodex_message));
+ return;
+ }
+
+ if (flag == 0 && is_first)
+ VECTOR_CLEAR(sd->rodex.messages);
+
+ for (i = 0, j = 24; i < count; ++i, j += sizeof(struct rodex_message)) {
+ struct rodex_message msg = { 0 };
+ VECTOR_ENSURE(sd->rodex.messages, 1, 1);
+ memcpy(&msg, RFIFOP(fd, j), sizeof(struct rodex_message));
+ VECTOR_PUSH(sd->rodex.messages, msg);
+ }
+
+ if (is_end == true) {
+#if PACKETVER >= 20170419
+ clif->rodex_send_mails_all(sd->fd, sd, mail_id);
+#else
+ if (flag == 0)
+ clif->rodex_send_maillist(sd->fd, sd, opentype, VECTOR_LENGTH(sd->rodex.messages) - 1);
+ else
+ clif->rodex_send_refresh(sd->fd, sd, opentype, count);
+#endif
+ }
+}
+
+/*------------------------------------------
+ * Notifications
+ *------------------------------------------*/
+static int intif_rodex_hasnew(struct map_session_data *sd)
+{
+ nullpo_retr(0, sd);
+
+ if (intif->CheckForCharServer())
+ return 0;
+
+ WFIFOHEAD(inter_fd, 10);
+ WFIFOW(inter_fd, 0) = 0x3096;
+ WFIFOL(inter_fd, 2) = sd->status.char_id;
+ WFIFOL(inter_fd, 6) = sd->status.account_id;
+ WFIFOSET(inter_fd, 10);
+
+ return 0;
+}
+
+static void intif_parse_RodexNotifications(int fd)
+{
+ struct map_session_data *sd;
+ bool has_messages;
+
+ sd = map->charid2sd(RFIFOL(fd, 2));
+ has_messages = RFIFOB(fd, 6);
+
+ if (sd == NULL) // user is not online anymore
+ return;
+
+ clif->rodex_icon(sd->fd, has_messages);
+}
+
+/*------------------------------------------
+ * Update Mail
+ *------------------------------------------*/
+
+/// Updates a mail
+/// flag:
+/// 0 - receiver Read
+/// 1 - user got Zeny
+/// 2 - user got Items
+/// 3 - delete
+/// 4 - sender Read (returned mail)
+static int intif_rodex_updatemail(int64 mail_id, int8 flag)
+{
+ if (intif->CheckForCharServer())
+ return 0;
+
+ WFIFOHEAD(inter_fd, 11);
+ WFIFOW(inter_fd, 0) = 0x3097;
+ WFIFOQ(inter_fd, 2) = mail_id;
+ WFIFOB(inter_fd, 10) = flag;
+ WFIFOSET(inter_fd, 11);
+
+ return 0;
+}
+
+/*------------------------------------------
+ * Send Mail
+ *------------------------------------------*/
+static int intif_rodex_sendmail(struct rodex_message *msg)
+{
+ if (intif->CheckForCharServer())
+ return 0;
+
+ nullpo_retr(0, msg);
+
+ WFIFOHEAD(inter_fd, 4 + sizeof(struct rodex_message));
+ WFIFOW(inter_fd, 0) = 0x3098;
+ WFIFOW(inter_fd, 2) = 4 + sizeof(struct rodex_message);
+ memcpy(WFIFOP(inter_fd, 4), msg, sizeof(struct rodex_message));
+ WFIFOSET(inter_fd, 4 + sizeof(struct rodex_message));
+
+ return 0;
+}
+
+static void intif_parse_RodexSendMail(int fd)
+{
+ struct map_session_data *ssd = NULL, *rsd = NULL;
+ int sender_id = RFIFOL(fd, 2);
+ int receiver_id = RFIFOL(fd, 6);
+ int receiver_accountid = RFIFOL(fd, 10);
+
+ if (sender_id > 0)
+ ssd = map->charid2sd(sender_id);
+
+ if (receiver_id > 0)
+ rsd = map->charid2sd(receiver_id);
+ else if (receiver_accountid > 0)
+ rsd = map->id2sd(receiver_accountid);
+
+ rodex->send_mail_result(ssd, rsd, RFIFOL(fd, 14));
+}
+
+/*------------------------------------------
+ * Check Player
+ *------------------------------------------*/
+static int intif_rodex_checkname(struct map_session_data *sd, const char *name)
+{
+ if (intif->CheckForCharServer())
+ return 0;
+
+ nullpo_retr(0, sd);
+ nullpo_retr(0, name);
+
+ WFIFOHEAD(inter_fd, 6 + NAME_LENGTH);
+ WFIFOW(inter_fd, 0) = 0x3099;
+ WFIFOL(inter_fd, 2) = sd->status.char_id;
+ safestrncpy(WFIFOP(inter_fd, 6), name, NAME_LENGTH);
+ WFIFOSET(inter_fd, 6 + NAME_LENGTH);
+
+ return 0;
+}
+
+static void intif_parse_RodexCheckName(int fd)
+{
+ struct map_session_data *sd = NULL;
+ int reqchar_id = RFIFOL(fd, 2);
+ int target_char_id = RFIFOL(fd, 6);
+ short target_class = RFIFOW(fd, 10);
+ int target_level = RFIFOL(fd, 12);
+ char name[NAME_LENGTH];
+
+ safestrncpy(name, RFIFOP(inter_fd, 16), NAME_LENGTH);
+
+ if (reqchar_id <= 0)
+ return;
+
+ sd = map->charid2sd(reqchar_id);
+
+ if (sd == NULL) // User is not online anymore
+ return;
+
+ if (target_char_id == 0) {
+ clif->rodex_checkname_result(sd, 0, 0, 0, name);
+ return;
+ }
+
+ sd->rodex.tmp.receiver_id = target_char_id;
+ safestrncpy(sd->rodex.tmp.receiver_name, name, NAME_LENGTH);
+
+ clif->rodex_checkname_result(sd, target_char_id, target_class, target_level, name);
+}
+
//-----------------------------------------------------------------
// Communication from the inter server
// Return a 0 (false) if there were any errors.
// 1, 2 if there are not enough to return the length of the packet if the packet processing
-int intif_parse(int fd)
+static int intif_parse(int fd)
{
int packet_len, cmd;
cmd = RFIFOW(fd,0);
@@ -2306,8 +2891,11 @@ int intif_parse(int fd)
case 0x3802: intif->pWisEnd(fd); break;
case 0x3803: intif->pWisToGM(fd); break;
case 0x3804: intif->pRegisters(fd); break;
+ case 0x3805: intif->pAccountStorage(fd); break;
case 0x3806: intif->pChangeNameOk(fd); break;
case 0x3807: intif->pMessageToFD(fd); break;
+ case 0x3808: intif->pAccountStorageSaveAck(fd); break;
+ case 0x3810: intif->pAchievementsLoad(fd); break;
case 0x3818: intif->pLoadGuildStorage(fd); break;
case 0x3819: intif->pSaveGuildStorage(fd); break;
case 0x3820: intif->pPartyCreated(fd); break;
@@ -2378,6 +2966,15 @@ int intif_parse(int fd)
case 0x3891: intif->pRecvHomunculusData(fd); break;
case 0x3892: intif->pSaveHomunculusOk(fd); break;
case 0x3893: intif->pDeleteHomunculusOk(fd); break;
+
+ // RoDEX
+ case 0x3895: intif->pRequestRodexOpenInbox(fd); break;
+ case 0x3896: intif->pRodexHasNew(fd); break;
+ case 0x3897: intif->pRodexSendMail(fd); break;
+ case 0x3898: intif->pRodexCheckName(fd); break;
+
+ // Clan System
+ case 0x3858: intif->pRecvClanMemberAction(fd); break;
default:
ShowError("intif_parse : unknown packet %d %x\n",fd,RFIFOW(fd,0));
return 0;
@@ -2388,22 +2985,23 @@ int intif_parse(int fd)
}
/*=====================================
-* Default Functions : intif.h
-* Generated by HerculesInterfaceMaker
-* created by Susu
-*-------------------------------------*/
-void intif_defaults(void) {
+ * Default Functions : intif.h
+ * Generated by HerculesInterfaceMaker
+ * created by Susu
+ *-------------------------------------*/
+void intif_defaults(void)
+{
const int packet_len_table [INTIF_PACKET_LEN_TABLE_SIZE] = {
- -1,-1,27,-1, -1, 0,37,-1, 0, 0, 0, 0, 0, 0, 0, 0, //0x3800-0x380f
- 0, 0, 0, 0, 0, 0, 0, 0, -1,11, 0, 0, 0, 0, 0, 0, //0x3810
+ -1,-1,27,-1, -1,-1,37,-1, 7, 0, 0, 0, 0, 0, 0, 0, //0x3800-0x380f
+ -1, 0, 0, 0, 0, 0, 0, 0, -1,11, 0, 0, 0, 0, 0, 0, //0x3810 Achievements [Smokexyz/Hercules]
39,-1,15,15, 14,19, 7,-1, 0, 0, 0, 0, 0, 0, 0, 0, //0x3820
- 10,-1,15, 0, 79,19, 7,-1, 0,-1,-1,-1, 14,67,186,-1, //0x3830
+ 10,-1,15, 0, 79,23, 7,-1, 0,-1,-1,-1, 14,67,186,-1, //0x3830
-1, 0, 0,14, 0, 0, 0, 0, -1,74,-1,11, 11,-1, 0, 0, //0x3840
- -1,-1, 7, 7, 7,11, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, //0x3850 Auctions [Zephyrus] itembound[Akinari]
+ -1,-1, 7, 7, 7,11, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, //0x3850 Auctions [Zephyrus] itembound[Akinari] Clan System[Murilo BiO]
-1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //0x3860 Quests [Kevin] [Inkfish]
-1, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 3, 3, 0, //0x3870 Mercenaries [Zephyrus] / Elemental [pakpil]
12,-1, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //0x3880
- -1,-1, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //0x3890 Homunculus [albator]
+ -1,-1, 7, 3, 0,-1, 7, 15,16 + NAME_LENGTH, 0, 0, 0, 0, 0, 0, 0, //0x3890 Homunculus [albator] / RoDEX [KirieZ]
};
intif = &intif_s;
@@ -2421,6 +3019,8 @@ void intif_defaults(void) {
intif->wis_message_to_gm = intif_wis_message_to_gm;
intif->saveregistry = intif_saveregistry;
intif->request_registry = intif_request_registry;
+ intif->request_account_storage = intif_request_account_storage;
+ intif->send_account_storage = intif_send_account_storage;
intif->request_guild_storage = intif_request_guild_storage;
intif->send_guild_storage = intif_send_guild_storage;
intif->create_party = intif_create_party;
@@ -2483,12 +3083,24 @@ void intif_defaults(void) {
intif->elemental_request = intif_elemental_request;
intif->elemental_delete = intif_elemental_delete;
intif->elemental_save = intif_elemental_save;
+ // RoDEX
+ intif->rodex_requestinbox = intif_rodex_requestinbox;
+ intif->rodex_checkhasnew = intif_rodex_hasnew;
+ intif->rodex_updatemail = intif_rodex_updatemail;
+ intif->rodex_sendmail = intif_rodex_sendmail;
+ intif->rodex_checkname = intif_rodex_checkname;
+ /* Clan System */
+ intif->clan_kickoffline = intif_clan_kickoffline;
+ intif->clan_membercount = intif_clan_membercount;
/* @accinfo */
intif->request_accinfo = intif_request_accinfo;
/* */
intif->CheckForCharServer = CheckForCharServer;
/* */
intif->itembound_req = intif_itembound_req;
+ /* Achievement System */
+ intif->achievements_request = intif_achievements_request;
+ intif->achievements_save = intif_achievements_save;
/* parse functions */
intif->pWisMessage = intif_parse_WisMessage;
intif->pWisEnd = intif_parse_WisEnd;
@@ -2497,6 +3109,8 @@ void intif_defaults(void) {
intif->pRegisters = intif_parse_Registers;
intif->pChangeNameOk = intif_parse_ChangeNameOk;
intif->pMessageToFD = intif_parse_MessageToFD;
+ intif->pAccountStorage = intif_parse_account_storage;
+ intif->pAccountStorageSaveAck = intif_parse_account_storage_save_ack;
intif->pLoadGuildStorage = intif_parse_LoadGuildStorage;
intif->pSaveGuildStorage = intif_parse_SaveGuildStorage;
intif->pPartyCreated = intif_parse_PartyCreated;
@@ -2552,4 +3166,13 @@ void intif_defaults(void) {
intif->pRecvHomunculusData = intif_parse_RecvHomunculusData;
intif->pSaveHomunculusOk = intif_parse_SaveHomunculusOk;
intif->pDeleteHomunculusOk = intif_parse_DeleteHomunculusOk;
+ /* RoDEX */
+ intif->pRequestRodexOpenInbox = intif_parse_RequestRodexOpenInbox;
+ intif->pRodexHasNew = intif_parse_RodexNotifications;
+ intif->pRodexSendMail = intif_parse_RodexSendMail;
+ intif->pRodexCheckName = intif_parse_RodexCheckName;
+ /* Clan System */
+ intif->pRecvClanMemberAction = intif_parse_RecvClanMemberAction;
+ /* Achievement System */
+ intif->pAchievementsLoad = intif_parse_achievements_load;
}
diff --git a/src/map/intif.h b/src/map/intif.h
index b20acf029..21f7a494c 100644
--- a/src/map/intif.h
+++ b/src/map/intif.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -37,6 +37,7 @@ struct s_elemental;
struct s_homunculus;
struct s_mercenary;
struct s_pet;
+struct rodex_message;
/**
* Defines
@@ -57,8 +58,8 @@ struct intif_interface {
int packet_len_table[INTIF_PACKET_LEN_TABLE_SIZE];
/* funcs */
int (*parse) (int fd);
- int (*create_pet)(int account_id, int char_id, short pet_type, short pet_lv, short pet_egg_id,
- short pet_equip, short intimate, short hungry, char rename_flag, char incubate, char *pet_name);
+ int (*create_pet)(int account_id, int char_id, short pet_type, short pet_lv, int pet_egg_id,
+ int pet_equip, short intimate, short hungry, char rename_flag, char incubate, char *pet_name);
int (*broadcast) (const char *mes, int len, int type);
int (*broadcast2) (const char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY);
int (*main_message) (struct map_session_data* sd, const char* message);
@@ -66,6 +67,8 @@ struct intif_interface {
int (*wis_message_to_gm) (char *Wisp_name, int permission, char *mes);
int (*saveregistry) (struct map_session_data *sd);
int (*request_registry) (struct map_session_data *sd, int flag);
+ void (*request_account_storage) (const struct map_session_data *sd);
+ void (*send_account_storage) (struct map_session_data *sd);
int (*request_guild_storage) (int account_id, int guild_id);
int (*send_guild_storage) (int account_id, struct guild_storage *gstor);
int (*create_party) (struct party_member *member, const char *name, int item, int item2);
@@ -129,18 +132,32 @@ struct intif_interface {
int (*elemental_request) (int ele_id, int char_id);
int (*elemental_delete) (int ele_id);
int (*elemental_save) (struct s_elemental *ele);
+ // RoDEX
+ int(*rodex_requestinbox) (int char_id, int account_id, int8 flag, int8 opentype, int64 mail_id);
+ int(*rodex_checkhasnew) (struct map_session_data *sd);
+ int(*rodex_updatemail) (int64 mail_id, int8 flag);
+ int(*rodex_sendmail) (struct rodex_message *msg);
+ int(*rodex_checkname) (struct map_session_data *sd, const char *name);
+ /* Clan System */
+ int (*clan_kickoffline) (int clan_id, int kick_interval);
+ int (*clan_membercount) (int clan_id, int kick_interval);
/* @accinfo */
void (*request_accinfo) (int u_fd, int aid, int group_lv, char* query);
/* */
int (*CheckForCharServer) (void);
+ /* Achievement System [Smokexyz/Hercules] */
+ void(*achievements_request) (struct map_session_data *sd);
+ void(*achievements_save) (struct map_session_data *sd);
/* */
void (*pWisMessage) (int fd);
void (*pWisEnd) (int fd);
int (*pWisToGM_sub) (struct map_session_data* sd,va_list va);
void (*pWisToGM) (int fd);
void (*pRegisters) (int fd);
+ void (*pAccountStorage) (int fd);
void (*pChangeNameOk) (int fd);
void (*pMessageToFD) (int fd);
+ void (*pAccountStorageSaveAck) (int fd);
void (*pLoadGuildStorage) (int fd);
void (*pSaveGuildStorage) (int fd);
void (*pPartyCreated) (int fd);
@@ -196,6 +213,15 @@ struct intif_interface {
void (*pRecvHomunculusData) (int fd);
void (*pSaveHomunculusOk) (int fd);
void (*pDeleteHomunculusOk) (int fd);
+ /* RoDEX */
+ void(*pRequestRodexOpenInbox) (int fd);
+ void(*pRodexHasNew) (int fd);
+ void(*pRodexSendMail) (int fd);
+ void(*pRodexCheckName) (int fd);
+ /* Clan System */
+ void (*pRecvClanMemberAction) (int fd);
+ /* Achievements */
+ void (*pAchievementsLoad) (int fd);
};
#ifdef HERCULES_CORE
diff --git a/src/map/irc-bot.c b/src/map/irc-bot.c
index d087588af..996107fea 100644
--- a/src/map/irc-bot.c
+++ b/src/map/irc-bot.c
@@ -43,13 +43,14 @@
//#define IRCBOT_DEBUG
-struct irc_bot_interface irc_bot_s;
+static struct irc_bot_interface irc_bot_s;
struct irc_bot_interface *ircbot;
-char send_string[IRC_MESSAGE_LENGTH];
+static char send_string[IRC_MESSAGE_LENGTH];
/// @copydoc irc_bot_interface::connect_timer()
-int irc_connect_timer(int tid, int64 tick, int id, intptr_t data) {
+static int irc_connect_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct hSockOpt opt;
if( ircbot->isOn || ++ircbot->fails >= 3 )
return 0;
@@ -62,6 +63,7 @@ int irc_connect_timer(int tid, int64 tick, int id, intptr_t data) {
if ((ircbot->fd = sockt->make_connection(ircbot->ip, channel->config->irc_server_port, &opt)) > 0) {
sockt->session[ircbot->fd]->func_parse = ircbot->parse;
sockt->session[ircbot->fd]->flag.server = 1;
+ sockt->session[ircbot->fd]->flag.validate = 0;
timer->add(timer->gettick() + 3000, ircbot->identify_timer, 0, 0);
ircbot->isOn = true;
}
@@ -69,7 +71,8 @@ int irc_connect_timer(int tid, int64 tick, int id, intptr_t data) {
}
/// @copydoc irc_bot_interface::identify_timer()
-int irc_identify_timer(int tid, int64 tick, int id, intptr_t data) {
+static int irc_identify_timer(int tid, int64 tick, int id, intptr_t data)
+{
if( !ircbot->isOn )
return 0;
@@ -84,7 +87,8 @@ int irc_identify_timer(int tid, int64 tick, int id, intptr_t data) {
}
/// @copydoc irc_bot_interface::join_timer()
-int irc_join_timer(int tid, int64 tick, int id, intptr_t data) {
+static int irc_join_timer(int tid, int64 tick, int id, intptr_t data)
+{
if( !ircbot->isOn )
return 0;
@@ -105,7 +109,8 @@ int irc_join_timer(int tid, int64 tick, int id, intptr_t data) {
}
/// @copydoc irc_bot_interface::func_search()
-struct irc_func* irc_func_search(char* function_name) {
+static struct irc_func *irc_func_search(char *function_name)
+{
int i;
nullpo_retr(NULL, function_name);
for(i = 0; i < ircbot->funcs.size; i++) {
@@ -117,7 +122,8 @@ struct irc_func* irc_func_search(char* function_name) {
}
/// @copydoc irc_bot_interface::parse()
-int irc_parse(int fd) {
+static int irc_parse(int fd)
+{
char *parse_string = NULL, *p = NULL, *str_safe = NULL;
if (sockt->session[fd]->flag.eof) {
@@ -151,7 +157,8 @@ int irc_parse(int fd) {
}
/// @copydoc irc_bot_interface::parse_source()
-void irc_parse_source(char *source, char *nick, char *ident, char *host) {
+static void irc_parse_source(char *source, char *nick, char *ident, char *host)
+{
int i, pos = 0;
size_t len;
unsigned char stage = 0;
@@ -175,7 +182,8 @@ void irc_parse_source(char *source, char *nick, char *ident, char *host) {
}
/// @copydoc irc_bot_interface::parse_sub()
-void irc_parse_sub(int fd, char *str) {
+static void irc_parse_sub(int fd, char *str)
+{
char source[180], command[60], buf1[IRC_MESSAGE_LENGTH], buf2[IRC_MESSAGE_LENGTH];
char *target = buf1, *message = buf2;
struct irc_func *func;
@@ -205,7 +213,7 @@ void irc_parse_sub(int fd, char *str) {
}
/// @copydoc irc_bot_interface::queue()
-void irc_queue(char *str)
+static void irc_queue(char *str)
{
struct message_flood *queue_entry = NULL;
@@ -242,7 +250,7 @@ void irc_queue(char *str)
}
/// @copydoc irc_bot_interface::queue_timer()
-int irc_queue_timer(int tid, int64 tick, int id, intptr_t data)
+static int irc_queue_timer(int tid, int64 tick, int id, intptr_t data)
{
struct message_flood *queue_entry = ircbot->message_current;
nullpo_ret(queue_entry);
@@ -263,7 +271,7 @@ int irc_queue_timer(int tid, int64 tick, int id, intptr_t data)
}
/// @copydoc irc_bot_interface::send()
-void irc_send(char *str, bool force)
+static void irc_send(char *str, bool force)
{
size_t len;
nullpo_retv(str);
@@ -283,14 +291,16 @@ void irc_send(char *str, bool force)
}
/// @copydoc irc_interface_bot::pong()
-void irc_pong(int fd, char *cmd, char *source, char *target, char *msg) {
+static void irc_pong(int fd, char *cmd, char *source, char *target, char *msg)
+{
nullpo_retv(cmd);
snprintf(send_string, IRC_MESSAGE_LENGTH, "PONG %s", cmd);
ircbot->send(send_string, false);
}
/// @copydoc irc_interface_bot::privmsg_ctcp()
-void irc_privmsg_ctcp(int fd, char *cmd, char *source, char *target, char *msg) {
+static void irc_privmsg_ctcp(int fd, char *cmd, char *source, char *target, char *msg)
+{
char source_nick[IRC_NICK_LENGTH], source_ident[IRC_IDENT_LENGTH], source_host[IRC_HOST_LENGTH];
source_nick[0] = source_ident[0] = source_host[0] = '\0';
@@ -336,7 +346,8 @@ void irc_privmsg_ctcp(int fd, char *cmd, char *source, char *target, char *msg)
}
/// @copydoc irc_bot_interface::privmsg()
-void irc_privmsg(int fd, char *cmd, char *source, char *target, char *msg) {
+static void irc_privmsg(int fd, char *cmd, char *source, char *target, char *msg)
+{
size_t len = msg ? strlen(msg) : 0;
nullpo_retv(source);
nullpo_retv(target);
@@ -374,7 +385,8 @@ void irc_privmsg(int fd, char *cmd, char *source, char *target, char *msg) {
}
/// @copydoc irc_bot_interface::userjoin()
-void irc_userjoin(int fd, char *cmd, char *source, char *target, char *msg) {
+static void irc_userjoin(int fd, char *cmd, char *source, char *target, char *msg)
+{
char source_nick[IRC_NICK_LENGTH], source_ident[IRC_IDENT_LENGTH], source_host[IRC_HOST_LENGTH];
nullpo_retv(source);
@@ -390,7 +402,8 @@ void irc_userjoin(int fd, char *cmd, char *source, char *target, char *msg) {
}
/// @copydoc irc_bot_interface::userleave()
-void irc_userleave(int fd, char *cmd, char *source, char *target, char *msg) {
+static void irc_userleave(int fd, char *cmd, char *source, char *target, char *msg)
+{
char source_nick[IRC_NICK_LENGTH], source_ident[IRC_IDENT_LENGTH], source_host[IRC_HOST_LENGTH];
nullpo_retv(source);
@@ -409,7 +422,8 @@ void irc_userleave(int fd, char *cmd, char *source, char *target, char *msg) {
}
/// @copydoc irc_bot_interface::usernick()
-void irc_usernick(int fd, char *cmd, char *source, char *target, char *msg) {
+static void irc_usernick(int fd, char *cmd, char *source, char *target, char *msg)
+{
char source_nick[IRC_NICK_LENGTH], source_ident[IRC_IDENT_LENGTH], source_host[IRC_HOST_LENGTH];
nullpo_retv(source);
@@ -425,7 +439,7 @@ void irc_usernick(int fd, char *cmd, char *source, char *target, char *msg) {
}
/// @copydoc irc_bot_interface::relay()
-void irc_relay(const char *name, const char *msg)
+static void irc_relay(const char *name, const char *msg)
{
if (!ircbot->isIn)
return;
@@ -440,7 +454,8 @@ void irc_relay(const char *name, const char *msg)
}
/// @copydoc irc_bot_interface::init()
-void irc_bot_init(bool minimal) {
+static void irc_bot_init(bool minimal)
+{
/// Command handlers
const struct irc_func irc_func_base[] = {
{ "PING" , ircbot->pong },
@@ -491,7 +506,8 @@ void irc_bot_init(bool minimal) {
}
/// @copydoc irc_bot_interface::final()
-void irc_bot_final(void) {
+static void irc_bot_final(void)
+{
int i;
if (!channel->config->irc)
@@ -519,7 +535,8 @@ void irc_bot_final(void) {
/**
* IRC bot interface defaults initializer
*/
-void ircbot_defaults(void) {
+void ircbot_defaults(void)
+{
ircbot = &irc_bot_s;
ircbot->channel = NULL;
diff --git a/src/map/itemdb.c b/src/map/itemdb.c
index 445307aeb..03f0fdc06 100644
--- a/src/map/itemdb.c
+++ b/src/map/itemdb.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -41,7 +41,7 @@
#include <stdlib.h>
#include <string.h>
-struct itemdb_interface itemdb_s;
+static struct itemdb_interface itemdb_s;
struct itemdb_interface *itemdb;
/**
@@ -49,7 +49,7 @@ struct itemdb_interface *itemdb;
* name = item alias, so we should find items aliases first. if not found then look for "jname" (full name)
* @see DBApply
*/
-int itemdb_searchname_sub(union DBKey key, struct DBData *data, va_list ap)
+static int itemdb_searchname_sub(union DBKey key, struct DBData *data, va_list ap)
{
struct item_data *item = DB->data2ptr(data), **dst, **dst2;
char *str;
@@ -78,7 +78,8 @@ int itemdb_searchname_sub(union DBKey key, struct DBData *data, va_list ap)
/*==========================================
* Return item data from item name. (lookup)
*------------------------------------------*/
-struct item_data* itemdb_searchname(const char *str) {
+static struct item_data *itemdb_searchname(const char *str)
+{
struct item_data* item;
struct item_data* item2=NULL;
int i;
@@ -105,14 +106,15 @@ struct item_data* itemdb_searchname(const char *str) {
return item?item:item2;
}
/* name to item data */
-struct item_data* itemdb_name2id(const char *str) {
+static struct item_data *itemdb_name2id(const char *str)
+{
return strdb_get(itemdb->names,str);
}
/**
* @see DBMatcher
*/
-int itemdb_searchname_array_sub(union DBKey key, struct DBData data, va_list ap)
+static int itemdb_searchname_array_sub(union DBKey key, struct DBData data, va_list ap)
{
struct item_data *item = DB->data2ptr(&data);
char *str;
@@ -135,7 +137,8 @@ int itemdb_searchname_array_sub(union DBKey key, struct DBData data, va_list ap)
* 0 - approximate match
* 1 - exact match
*------------------------------------------*/
-int itemdb_searchname_array(struct item_data** data, int size, const char *str, int flag) {
+static int itemdb_searchname_array(struct item_data **data, int size, const char *str, int flag)
+{
struct item_data* item;
int i;
int count=0;
@@ -181,7 +184,8 @@ int itemdb_searchname_array(struct item_data** data, int size, const char *str,
return count;
}
/* [Ind/Hercules] */
-int itemdb_chain_item(unsigned short chain_id, int *rate) {
+static int itemdb_chain_item(unsigned short chain_id, int *rate)
+{
struct item_chain_entry *entry;
if( chain_id >= itemdb->chain_count ) {
@@ -199,7 +203,8 @@ int itemdb_chain_item(unsigned short chain_id, int *rate) {
return entry->id;
}
/* [Ind/Hercules] */
-void itemdb_package_item(struct map_session_data *sd, struct item_package *package) {
+static void itemdb_package_item(struct map_session_data *sd, struct item_package *package)
+{
int i = 0, get_count, j, flag;
nullpo_retv(sd);
@@ -287,7 +292,8 @@ void itemdb_package_item(struct map_session_data *sd, struct item_package *packa
/*==========================================
* Return a random item id from group. (takes into account % chance giving/tot group)
*------------------------------------------*/
-int itemdb_searchrandomid(struct item_group *group) {
+static int itemdb_searchrandomid(struct item_group *group)
+{
nullpo_retr(UNKNOWN_ITEM_ID, group);
if (group->qty)
@@ -296,7 +302,8 @@ int itemdb_searchrandomid(struct item_group *group) {
ShowError("itemdb_searchrandomid: No item entries for group id %d\n", group->id);
return UNKNOWN_ITEM_ID;
}
-bool itemdb_in_group(struct item_group *group, int nameid) {
+static bool itemdb_in_group(struct item_group *group, int nameid)
+{
int i;
nullpo_retr(false, group);
@@ -309,7 +316,7 @@ bool itemdb_in_group(struct item_group *group, int nameid) {
/// Searches for the item_data.
/// Returns the item_data or NULL if it does not exist.
-struct item_data* itemdb_exists(int nameid)
+static struct item_data *itemdb_exists(int nameid)
{
struct item_data* item;
@@ -321,9 +328,19 @@ struct item_data* itemdb_exists(int nameid)
return item;
}
+/**
+ * Searches for the item_option data.
+ * @param option_index as the index of the item option (client side).
+ * @return pointer to struct itemdb_option data or NULL.
+ */
+static struct itemdb_option *itemdb_option_exists(int idx)
+{
+ return (struct itemdb_option *)idb_get(itemdb->options, idx);
+}
+
/// Returns human readable name for given item type.
/// @param type Type id to retrieve name for ( IT_* ).
-const char* itemdb_typename(int type)
+static const char *itemdb_typename(int type)
{
switch(type)
{
@@ -352,7 +369,7 @@ const char* itemdb_typename(int type)
*
* @author Dastgir
*/
-void itemdb_jobid2mapid(uint64 *bclass, int job_class, bool enable)
+static void itemdb_jobid2mapid(uint64 *bclass, int job_class, bool enable)
{
uint64 mask[3] = { 0 };
int i;
@@ -479,7 +496,7 @@ void itemdb_jobid2mapid(uint64 *bclass, int job_class, bool enable)
* @param bclass Pointer to the variable containing the new format.
* @param jobmask Variable containing JobMask.
*/
-void itemdb_jobmask2mapid(uint64 *bclass, uint64 jobmask)
+static void itemdb_jobmask2mapid(uint64 *bclass, uint64 jobmask)
{
nullpo_retv(bclass);
bclass[0] = bclass[1] = bclass[2] = 0;
@@ -562,7 +579,7 @@ void itemdb_jobmask2mapid(uint64 *bclass, uint64 jobmask)
bclass[0] |= 1ULL<<MAPID_SUMMONER;
}
-void create_dummy_data(void)
+static void create_dummy_data(void)
{
memset(&itemdb->dummy, 0, sizeof(struct item_data));
itemdb->dummy.nameid=500;
@@ -574,7 +591,7 @@ void create_dummy_data(void)
itemdb->dummy.view_id=UNKNOWN_ITEM_ID;
}
-struct item_data* create_item_data(int nameid)
+static struct item_data *create_item_data(int nameid)
{
struct item_data *id;
CREATE(id, struct item_data, 1);
@@ -587,7 +604,8 @@ struct item_data* create_item_data(int nameid)
/*==========================================
* Loads (and creates if not found) an item from the db.
*------------------------------------------*/
-struct item_data* itemdb_load(int nameid) {
+static struct item_data *itemdb_load(int nameid)
+{
struct item_data *id;
if( nameid >= 0 && nameid < ARRAYLENGTH(itemdb->array) )
@@ -610,7 +628,7 @@ struct item_data* itemdb_load(int nameid) {
/*==========================================
* Loads an item from the db. If not found, it will return the dummy item.
*------------------------------------------*/
-struct item_data* itemdb_search(int nameid)
+static struct item_data *itemdb_search(int nameid)
{
struct item_data* id;
if( nameid >= 0 && nameid < ARRAYLENGTH(itemdb->array) )
@@ -630,7 +648,7 @@ struct item_data* itemdb_search(int nameid)
/*==========================================
* Returns if given item is a player-equippable piece.
*------------------------------------------*/
-int itemdb_isequip(int nameid)
+static int itemdb_isequip(int nameid)
{
int type=itemdb_type(nameid);
switch (type) {
@@ -646,7 +664,8 @@ int itemdb_isequip(int nameid)
/*==========================================
* Alternate version of itemdb_isequip
*------------------------------------------*/
-int itemdb_isequip2(struct item_data *data) {
+static int itemdb_isequip2(struct item_data *data)
+{
nullpo_ret(data);
switch(data->type) {
case IT_WEAPON:
@@ -661,7 +680,7 @@ int itemdb_isequip2(struct item_data *data) {
/*==========================================
* Returns if given item's type is stackable.
*------------------------------------------*/
-int itemdb_isstackable(int nameid)
+static int itemdb_isstackable(int nameid)
{
int type=itemdb_type(nameid);
switch(type) {
@@ -678,7 +697,7 @@ int itemdb_isstackable(int nameid)
/*==========================================
* Alternate version of itemdb_isstackable
*------------------------------------------*/
-int itemdb_isstackable2(struct item_data *data)
+static int itemdb_isstackable2(struct item_data *data)
{
nullpo_ret(data);
switch(data->type) {
@@ -695,43 +714,52 @@ int itemdb_isstackable2(struct item_data *data)
/*==========================================
* Trade Restriction functions [Skotlex]
*------------------------------------------*/
-int itemdb_isdropable_sub(struct item_data *item, int gmlv, int unused) {
+static int itemdb_isdropable_sub(struct item_data *item, int gmlv, int unused)
+{
return (item && (!(item->flag.trade_restriction&ITR_NODROP) || gmlv >= item->gm_lv_trade_override));
}
-int itemdb_cantrade_sub(struct item_data* item, int gmlv, int gmlv2) {
+static int itemdb_cantrade_sub(struct item_data *item, int gmlv, int gmlv2)
+{
return (item && (!(item->flag.trade_restriction&ITR_NOTRADE) || gmlv >= item->gm_lv_trade_override || gmlv2 >= item->gm_lv_trade_override));
}
-int itemdb_canpartnertrade_sub(struct item_data* item, int gmlv, int gmlv2) {
+static int itemdb_canpartnertrade_sub(struct item_data *item, int gmlv, int gmlv2)
+{
return (item && (item->flag.trade_restriction&ITR_PARTNEROVERRIDE || gmlv >= item->gm_lv_trade_override || gmlv2 >= item->gm_lv_trade_override));
}
-int itemdb_cansell_sub(struct item_data* item, int gmlv, int unused) {
+static int itemdb_cansell_sub(struct item_data *item, int gmlv, int unused)
+{
return (item && (!(item->flag.trade_restriction&ITR_NOSELLTONPC) || gmlv >= item->gm_lv_trade_override));
}
-int itemdb_cancartstore_sub(struct item_data* item, int gmlv, int unused) {
+static int itemdb_cancartstore_sub(struct item_data *item, int gmlv, int unused)
+{
return (item && (!(item->flag.trade_restriction&ITR_NOCART) || gmlv >= item->gm_lv_trade_override));
}
-int itemdb_canstore_sub(struct item_data* item, int gmlv, int unused) {
+static int itemdb_canstore_sub(struct item_data *item, int gmlv, int unused)
+{
return (item && (!(item->flag.trade_restriction&ITR_NOSTORAGE) || gmlv >= item->gm_lv_trade_override));
}
-int itemdb_canguildstore_sub(struct item_data* item, int gmlv, int unused) {
+static int itemdb_canguildstore_sub(struct item_data *item, int gmlv, int unused)
+{
return (item && (!(item->flag.trade_restriction&ITR_NOGSTORAGE) || gmlv >= item->gm_lv_trade_override));
}
-int itemdb_canmail_sub(struct item_data* item, int gmlv, int unused) {
+static int itemdb_canmail_sub(struct item_data *item, int gmlv, int unused)
+{
return (item && (!(item->flag.trade_restriction&ITR_NOMAIL) || gmlv >= item->gm_lv_trade_override));
}
-int itemdb_canauction_sub(struct item_data* item, int gmlv, int unused) {
+static int itemdb_canauction_sub(struct item_data *item, int gmlv, int unused)
+{
return (item && (!(item->flag.trade_restriction&ITR_NOAUCTION) || gmlv >= item->gm_lv_trade_override));
}
-int itemdb_isrestricted(struct item* item, int gmlv, int gmlv2, int (*func)(struct item_data*, int, int))
+static int itemdb_isrestricted(struct item *item, int gmlv, int gmlv2, int (*func)(struct item_data*, int, int))
{
struct item_data* item_data;
int i;
@@ -755,7 +783,8 @@ int itemdb_isrestricted(struct item* item, int gmlv, int gmlv2, int (*func)(stru
/*==========================================
* Specifies if item-type should drop unidentified.
*------------------------------------------*/
-int itemdb_isidentified(int nameid) {
+static int itemdb_isidentified(int nameid)
+{
int type=itemdb_type(nameid);
switch (type) {
case IT_WEAPON:
@@ -767,7 +796,8 @@ int itemdb_isidentified(int nameid) {
}
}
/* same as itemdb_isidentified but without a lookup */
-int itemdb_isidentified2(struct item_data *data) {
+static int itemdb_isidentified2(struct item_data *data)
+{
nullpo_ret(data);
switch (data->type) {
case IT_WEAPON:
@@ -779,7 +809,8 @@ int itemdb_isidentified2(struct item_data *data) {
}
}
-void itemdb_read_groups(void) {
+static void itemdb_read_groups(void)
+{
struct config_t item_group_conf;
struct config_setting_t *itg = NULL, *it = NULL;
#ifdef RENEWAL
@@ -832,7 +863,7 @@ void itemdb_read_groups(void) {
itemdb->groups[count].id = data->nameid;
itemdb->groups[count].qty = gsize[ count ];
- CREATE(itemdb->groups[count].nameid, unsigned short, gsize[ count ] + 1);
+ CREATE(itemdb->groups[count].nameid, int, gsize[count] + 1);
c = 0;
while( (it = libconfig->setting_get_elem(itg,c++)) ) {
int repeat = 1;
@@ -842,7 +873,7 @@ void itemdb_read_groups(void) {
} else
itname = libconfig->setting_get_string_elem(itg,c - 1);
- if( itname[0] == 'I' && itname[1] == 'D' && strlen(itname) < 8 ) {
+ if (itname[0] == 'I' && itname[1] == 'D' && strlen(itname) <= 12) {
if( !( data = itemdb->exists(atoi(itname+2)) ) )
ShowWarning("itemdb_read_groups: unknown item ID '%d' in group '%s'!\n",atoi(itname+2),config_setting_name(itg));
} else if( !( data = itemdb->name2id(itname) ) )
@@ -867,7 +898,8 @@ void itemdb_read_groups(void) {
}
/* [Ind/Hercules] - HCache for Packages */
-void itemdb_write_cached_packages(const char *config_filename) {
+static void itemdb_write_cached_packages(const char *config_filename)
+{
FILE *file;
unsigned short pcount = itemdb->package_count;
unsigned short i;
@@ -881,7 +913,8 @@ void itemdb_write_cached_packages(const char *config_filename) {
hwrite(&pcount,sizeof(pcount),1,file);
for(i = 0; i < pcount; i++) {
- unsigned short id = itemdb->packages[i].id, random_qty = itemdb->packages[i].random_qty, must_qty = itemdb->packages[i].must_qty;
+ int id = itemdb->packages[i].id;
+ unsigned short random_qty = itemdb->packages[i].random_qty, must_qty = itemdb->packages[i].must_qty;
unsigned short c;
//into a package, first 2 bytes = id.
hwrite(&id,sizeof(id),1,file);
@@ -938,7 +971,9 @@ void itemdb_write_cached_packages(const char *config_filename) {
return;
}
-bool itemdb_read_cached_packages(const char *config_filename) {
+
+static bool itemdb_read_cached_packages(const char *config_filename)
+{
FILE *file;
unsigned short pcount = 0;
unsigned short i;
@@ -955,12 +990,13 @@ bool itemdb_read_cached_packages(const char *config_filename) {
itemdb->package_count = pcount;
for( i = 0; i < pcount; i++ ) {
- unsigned short id = 0, random_qty = 0, must_qty = 0;
+ int id = 0;
+ unsigned short random_qty = 0, must_qty = 0;
struct item_data *pdata;
struct item_package *package = &itemdb->packages[i];
unsigned short c;
- //into a package, first 2 bytes = id.
+ //into a package, first 4 bytes = id.
hread(&id,sizeof(id),1,file);
//next 2 bytes = must count
hread(&must_qty,sizeof(must_qty),1,file);
@@ -983,10 +1019,11 @@ bool itemdb_read_cached_packages(const char *config_filename) {
//now we loop into must
for(c = 0; c < package->must_qty; c++) {
struct item_package_must_entry *entry = &itemdb->packages[i].must_items[c];
- unsigned short mid = 0, qty = 0, hours = 0;
+ int mid = 0;
+ unsigned short qty = 0, hours = 0;
unsigned char announce = 0, named = 0, force_serial = 0;
struct item_data *data;
- //first 2 byte = item id
+ //first 4 byte = item id
hread(&mid,sizeof(mid),1,file);
//next 2 byte = qty
hread(&qty,sizeof(qty),1,file);
@@ -1026,7 +1063,8 @@ bool itemdb_read_cached_packages(const char *config_filename) {
//now we loop into the group's list
for(h = 0; h < group_qty; h++) {
struct item_package_rand_entry *entry = &itemdb->packages[i].random_groups[c].random_list[h];
- unsigned short mid = 0, qty = 0, hours = 0, rate = 0;
+ int mid = 0;
+ unsigned short qty = 0, hours = 0, rate = 0;
unsigned char announce = 0, named = 0, force_serial = 0;
struct item_data *data;
@@ -1069,7 +1107,8 @@ bool itemdb_read_cached_packages(const char *config_filename) {
return true;
}
-void itemdb_read_packages(void) {
+static void itemdb_read_packages(void)
+{
struct config_t item_packages_conf;
struct config_setting_t *itg = NULL, *it = NULL, *t = NULL;
#ifdef RENEWAL
@@ -1201,7 +1240,7 @@ void itemdb_read_packages(void) {
itname = config_setting_name(it);
- if( itname[0] == 'I' && itname[1] == 'D' && strlen(itname) < 8 ) {
+ if (itname[0] == 'I' && itname[1] == 'D' && strlen(itname) <= 12) {
if( !( data = itemdb->exists(atoi(itname+2)) ) )
ShowWarning("itemdb_read_packages: unknown item ID '%d' in package '%s'!\n",atoi(itname+2),config_setting_name(itg));
} else if( !( data = itemdb->name2id(itname) ) )
@@ -1299,7 +1338,127 @@ void itemdb_read_packages(void) {
ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' entries in '"CL_WHITE"%s"CL_RESET"'.\n", count, config_filename);
}
-void itemdb_read_chains(void) {
+/**
+ * Processes any (plugin-defined) additional fields for a itemdb_options entry.
+ *
+ * @param[in,out] entry The destination ito entry, already initialized
+ * (item_opt.index, status.mode are expected to be already set).
+ * @param[in] t The libconfig entry.
+ * @param[in] source Source of the entry (file name), to be displayed in
+ * case of validation errors.
+ */
+static void itemdb_readdb_options_additional_fields(struct itemdb_option *ito, struct config_setting_t *t, const char *source)
+{
+ // do nothing. plugins can do their own work
+}
+
+/**
+ * Reads the Item Options configuration file.
+ */
+static void itemdb_read_options(void)
+{
+ struct config_t item_options_db;
+ struct config_setting_t *ito = NULL, *conf = NULL;
+ int index = 0, count = 0;
+ const char *filepath = "db/item_options.conf";
+ VECTOR_DECL(int) duplicate_id;
+
+ if (!libconfig->load_file(&item_options_db, filepath))
+ return;
+
+#ifdef ENABLE_CASE_CHECK
+ script->parser_current_file = filepath;
+#endif // ENABLE_CASE_CHECK
+
+ if ((ito=libconfig->setting_get_member(item_options_db.root, "item_options_db")) == NULL) {
+ ShowError("itemdb_read_options: '%s' could not be loaded.\n", filepath);
+ libconfig->destroy(&item_options_db);
+ return;
+ }
+
+ VECTOR_INIT(duplicate_id);
+
+ VECTOR_ENSURE(duplicate_id, libconfig->setting_length(ito), 1);
+
+ while ((conf = libconfig->setting_get_elem(ito, index++))) {
+ struct itemdb_option t_opt = { 0 }, *s_opt = NULL;
+ const char *str = NULL;
+ int i = 0;
+
+ /* Id Lookup */
+ if (!libconfig->setting_lookup_int16(conf, "Id", &t_opt.index) || t_opt.index <= 0) {
+ ShowError("itemdb_read_options: Invalid Option Id provided for entry %d in '%s', skipping...\n", t_opt.index, filepath);
+ continue;
+ }
+
+ /* Checking for duplicate entries. */
+ ARR_FIND(0, VECTOR_LENGTH(duplicate_id), i, VECTOR_INDEX(duplicate_id, i) == t_opt.index);
+
+ if (i != VECTOR_LENGTH(duplicate_id)) {
+ ShowError("itemdb_read_options: Duplicate entry for Option Id %d in '%s', skipping...\n", t_opt.index, filepath);
+ continue;
+ }
+
+ VECTOR_PUSH(duplicate_id, t_opt.index);
+
+ /* Name Lookup */
+ if (!libconfig->setting_lookup_string(conf, "Name", &str)) {
+ ShowError("itemdb_read_options: Invalid Option Name '%s' provided for Id %d in '%s', skipping...\n", str, t_opt.index, filepath);
+ continue;
+ }
+
+ /* check for illegal characters in the constant. */
+ {
+ const char *c = str;
+
+ while (ISALNUM(*c) || *c == '_')
+ ++c;
+
+ if (*c != '\0') {
+ ShowError("itemdb_read_options: Invalid characters in Option Name '%s' for Id %d in '%s', skipping...\n", str, t_opt.index, filepath);
+ continue;
+ }
+ }
+
+ /* Set name as a script constant with index as value. */
+ script->set_constant2(str, t_opt.index, false, false);
+
+ /* Script Code Lookup */
+ if (!libconfig->setting_lookup_string(conf, "Script", &str)) {
+ ShowError("itemdb_read_options: Script code not found for entry %s (Id: %d) in '%s', skipping...\n", str, t_opt.index, filepath);
+ continue;
+ }
+
+ /* Set Script */
+ t_opt.script = *str ? script->parse(str, filepath, t_opt.index, SCRIPT_IGNORE_EXTERNAL_BRACKETS, NULL) : NULL;
+
+ /* Additional fields through plugins */
+ itemdb->readdb_options_additional_fields(&t_opt, ito, filepath);
+
+ /* Allocate memory and copy contents */
+ CREATE(s_opt, struct itemdb_option, 1);
+
+ *s_opt = t_opt;
+
+ /* Store ptr in the database */
+ idb_put(itemdb->options, t_opt.index, s_opt);
+
+ count++;
+ }
+
+#ifdef ENABLE_CASE_CHECK
+ script->parser_current_file = NULL;
+#endif // ENABLE_CASE_CHECK
+
+ libconfig->destroy(&item_options_db);
+
+ VECTOR_CLEAR(duplicate_id);
+
+ ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' entries in '"CL_WHITE"%s"CL_RESET"'.\n", count, filepath);
+}
+
+static void itemdb_read_chains(void)
+{
struct config_t item_chain_conf;
struct config_setting_t *itc = NULL;
#ifdef RENEWAL
@@ -1332,7 +1491,7 @@ void itemdb_read_chains(void) {
while( (entry = libconfig->setting_get_elem(itc,c++)) ) {
const char *itname = config_setting_name(entry);
- if( itname[0] == 'I' && itname[1] == 'D' && strlen(itname) < 8 ) {
+ if (itname[0] == 'I' && itname[1] == 'D' && strlen(itname) <= 12) {
if( !( data = itemdb->exists(atoi(itname+2)) ) )
ShowWarning("itemdb_read_chains: unknown item ID '%d' in chain '%s'!\n",atoi(itname+2),name);
} else if( !( data = itemdb->name2id(itname) ) )
@@ -1369,7 +1528,8 @@ void itemdb_read_chains(void) {
/**
* @return: amount of retrieved entries.
**/
-int itemdb_combo_split_atoi (char *str, int *val) {
+static int itemdb_combo_split_atoi(char *str, int *val)
+{
int i;
nullpo_ret(val);
@@ -1391,14 +1551,14 @@ int itemdb_combo_split_atoi (char *str, int *val) {
/**
* <combo{:combo{:combo:{..}}}>,<{ script }>
**/
-void itemdb_read_combos(void)
+static void itemdb_read_combos(void)
{
uint32 lines = 0, count = 0;
char line[1024];
char filepath[256];
FILE* fp;
- snprintf(filepath, 256, "%s/%s", map->db_path, DBPATH"item_combo_db.txt");
+ safesnprintf(filepath, 256, "%s/%s", map->db_path, DBPATH"item_combo_db.txt");
if ((fp = fopen(filepath, "r")) == NULL) {
ShowError("itemdb_read_combos: File not found \"%s\".\n", filepath);
@@ -1502,16 +1662,16 @@ void itemdb_read_combos(void)
/*======================================
* Applies gender restrictions according to settings. [Skotlex]
*======================================*/
-int itemdb_gendercheck(struct item_data *id)
+static int itemdb_gendercheck(struct item_data *id)
{
nullpo_ret(id);
if (id->nameid == WEDDING_RING_M) //Grom Ring
return 1;
if (id->nameid == WEDDING_RING_F) //Bride Ring
return 0;
- if (id->look == W_MUSICAL && id->type == IT_WEAPON) //Musical instruments are always male-only
+ if (id->subtype == W_MUSICAL && id->type == IT_WEAPON) //Musical instruments are always male-only
return 1;
- if (id->look == W_WHIP && id->type == IT_WEAPON) //Whips are always female-only
+ if (id->subtype == W_WHIP && id->type == IT_WEAPON) //Whips are always female-only
return 0;
return (battle_config.ignore_items_gender) ? 2 : id->sex;
@@ -1534,14 +1694,20 @@ int itemdb_gendercheck(struct item_data *id)
* (i.e. item_db2 inheritance), as it will make sure not to free any scripts
* still in use by the new entry.
*/
-int itemdb_validate_entry(struct item_data *entry, int n, const char *source) {
+static int itemdb_validate_entry(struct item_data *entry, int n, const char *source)
+{
struct item_data *item;
nullpo_ret(entry);
nullpo_ret(source);
- if( entry->nameid <= 0 || entry->nameid >= MAX_ITEMDB ) {
- ShowWarning("itemdb_validate_entry: Invalid item ID %d in entry %d of '%s', allowed values 0 < ID < %d (MAX_ITEMDB), skipping.\n",
- entry->nameid, n, source, MAX_ITEMDB);
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ if (entry->nameid <= 0 || entry->nameid > MAX_ITEM_ID) {
+#else
+ if (entry->nameid <= 0) {
+#endif
+ // item id wrong for any packet versions
+ ShowWarning("itemdb_validate_entry: Invalid item ID %d in entry %d of '%s', allowed values 0 < ID < %d (MAX_ITEM_ID), skipping.\n",
+ entry->nameid, n, source, MAX_ITEM_ID);
if (entry->script) {
script->free_code(entry->script);
entry->script = NULL;
@@ -1555,7 +1721,14 @@ int itemdb_validate_entry(struct item_data *entry, int n, const char *source) {
entry->unequip_script = NULL;
}
return 0;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ }
+#else
+ } else if (entry->nameid > MAX_ITEM_ID) {
+ // item id too big for packet version before item id in 4 bytes
+ entry->view_id = UNKNOWN_ITEM_ID;
}
+#endif
{
const char *c = entry->name;
@@ -1659,10 +1832,14 @@ int itemdb_validate_entry(struct item_data *entry, int n, const char *source) {
memset(&entry->stack, '\0', sizeof(entry->stack));
}
- if (entry->type == IT_WEAPON && (entry->look < 0 || entry->look >= MAX_SINGLE_WEAPON_TYPE)) {
- ShowWarning("itemdb_validate_entry: Invalid View for weapon items. View value %d for item %d (%s) in '%s', defaulting to 1.\n",
- entry->look, entry->nameid, entry->jname, source);
- entry->look = 1;
+ if (entry->type == IT_WEAPON && (entry->subtype <= 0 || entry->subtype >= MAX_SINGLE_WEAPON_TYPE)) {
+ ShowWarning("itemdb_validate_entry: Invalid View for weapon items. View value %d for item %d (%s) in '%s', defaulting to W_DAGGER.\n",
+ entry->subtype, entry->nameid, entry->jname, source);
+ entry->subtype = W_DAGGER;
+ } else if (entry->type == IT_AMMO && (entry->subtype <= 0 || entry->subtype >= MAX_AMMO_TYPE)) {
+ ShowWarning("itemdb_validate_entry: Invalid View for ammunition items. View value %d for item %d (%s) in '%s', defaulting to A_ARROW.\n",
+ entry->subtype, entry->nameid, entry->jname, source);
+ entry->subtype = A_ARROW;
}
entry->wlv = cap_value(entry->wlv, REFINE_TYPE_ARMOR, REFINE_TYPE_MAX);
@@ -1675,6 +1852,9 @@ int itemdb_validate_entry(struct item_data *entry, int n, const char *source) {
if( entry->type != IT_ARMOR && entry->type != IT_WEAPON && !entry->flag.no_refine )
entry->flag.no_refine = 1;
+ if (entry->type != IT_ARMOR && entry->type != IT_WEAPON && !entry->flag.no_options)
+ entry->flag.no_options = 1;
+
if (entry->flag.available != 1) {
entry->flag.available = 1;
entry->view_id = 0;
@@ -1702,7 +1882,7 @@ int itemdb_validate_entry(struct item_data *entry, int n, const char *source) {
return item->nameid;
}
-void itemdb_readdb_additional_fields(int itemid, struct config_setting_t *it, int n, const char *source)
+static void itemdb_readdb_additional_fields(int itemid, struct config_setting_t *it, int n, const char *source)
{
// do nothing. plugins can do own work
}
@@ -1714,7 +1894,7 @@ void itemdb_readdb_additional_fields(int itemid, struct config_setting_t *it, in
* @param t Libconfig setting entry. It is expected to be valid and it won't
* be freed (it is care of the caller to do so if necessary).
*/
-void itemdb_readdb_job_sub(struct item_data *id, struct config_setting_t *t)
+static void itemdb_readdb_job_sub(struct item_data *id, struct config_setting_t *t)
{
int idx = 0;
struct config_setting_t *it = NULL;
@@ -1753,7 +1933,8 @@ void itemdb_readdb_job_sub(struct item_data *id, struct config_setting_t *t)
* validation errors.
* @return Nameid of the validated entry, or 0 in case of failure.
*/
-int itemdb_readdb_libconfig_sub(struct config_setting_t *it, int n, const char *source) {
+static int itemdb_readdb_libconfig_sub(struct config_setting_t *it, int n, const char *source)
+{
struct item_data id = { 0 };
struct config_setting_t *t = NULL;
const char *str = NULL;
@@ -1818,7 +1999,7 @@ int itemdb_readdb_libconfig_sub(struct config_setting_t *it, int n, const char *
ShowWarning("itemdb_readdb_libconfig_sub: Invalid or missing id in \"%s\", entry #%d, skipping.\n", source, n);
return 0;
}
- id.nameid = (uint16)i32;
+ id.nameid = i32;
if( (t = libconfig->setting_get_member(it, "Inherit")) && (inherit = libconfig->setting_get_bool(t)) ) {
if( !itemdb->exists(id.nameid) ) {
@@ -1854,6 +2035,14 @@ int itemdb_readdb_libconfig_sub(struct config_setting_t *it, int n, const char *
else if( !inherit )
id.type = IT_ETC;
+ if (itemdb->lookup_const(it, "Subtype", &i32) && i32 >= 0) {
+ if (id.type == IT_WEAPON || id.type == IT_AMMO)
+ id.subtype = i32;
+ else
+ ShowWarning("itemdb_readdb_libconfig_sub: Field 'Subtype' is only allowed for IT_WEAPON or IT_AMMO (Item #%d: %s). Ignoring.\n",
+ id.nameid, id.name);
+ }
+
if( itemdb->lookup_const(it, "Buy", &i32) )
id.value_buy = i32;
else if( !inherit )
@@ -1893,7 +2082,7 @@ int itemdb_readdb_libconfig_sub(struct config_setting_t *it, int n, const char *
itemdb->jobmask2mapid(id.class_base, UINT64_MAX);
}
- if( itemdb->lookup_const(it, "Upper", &i32) && i32 >= 0 )
+ if (itemdb->lookup_const_mask(it, "Upper", &i32) && i32 >= 0)
id.class_upper = (unsigned int)i32;
else if( !inherit )
id.class_upper = ITEMUPPER_ALL;
@@ -1903,7 +2092,7 @@ int itemdb_readdb_libconfig_sub(struct config_setting_t *it, int n, const char *
else if( !inherit )
id.sex = 2;
- if( itemdb->lookup_const(it, "Loc", &i32) && i32 >= 0 )
+ if (itemdb->lookup_const_mask(it, "Loc", &i32) && i32 >= 0)
id.equip = i32;
if( itemdb->lookup_const(it, "WeaponLv", &i32) && i32 >= 0 )
@@ -1923,8 +2112,32 @@ int itemdb_readdb_libconfig_sub(struct config_setting_t *it, int n, const char *
if( (t = libconfig->setting_get_member(it, "Refine")) )
id.flag.no_refine = libconfig->setting_get_bool(t) ? 0 : 1;
- if( itemdb->lookup_const(it, "View", &i32) && i32 >= 0 )
- id.look = i32;
+ if ((t = libconfig->setting_get_member(it, "DisableOptions")))
+ id.flag.no_options = libconfig->setting_get_bool(t) ? 1 : 0;
+
+ if ((t = libconfig->setting_get_member(it, "ShowDropEffect")))
+ id.flag.showdropeffect = libconfig->setting_get_bool(t) ? 1 : 0;
+
+ if (itemdb->lookup_const(it, "DropEffectMode", &i32) && i32 >= 0)
+ id.dropeffectmode = i32;
+
+ if (itemdb->lookup_const(it, "ViewSprite", &i32) && i32 >= 0)
+ id.view_sprite = i32;
+
+ if (itemdb->lookup_const(it, "View", &i32) && i32 >= 0) { // TODO: Remove (Deprecated - 2016-09-04 [Haru])
+ if ((id.type == IT_WEAPON || id.type == IT_AMMO) && id.subtype == 0) {
+ ShowWarning("itemdb_readdb_libconfig_sub: The 'View' field is deprecated. Please rename it to 'Subtype' (or 'ViewSprite'). (Item #%d: %s)\n",
+ id.nameid, id.name);
+ id.subtype = i32;
+ } else if ((id.type != IT_WEAPON && id.type != IT_AMMO) && id.view_sprite == 0) {
+ ShowWarning("itemdb_readdb_libconfig_sub: The 'View' field is deprecated. Please rename it to 'ViewSprite' (or 'Subtype'). (Item #%d: %s)\n",
+ id.nameid, id.name);
+ id.view_sprite = i32;
+ } else {
+ ShowWarning("itemdb_readdb_libconfig_sub: The 'View' field is deprecated. Please rename it to 'Subtype' or 'ViewSprite'. (Item #%d: %s)\n",
+ id.nameid, id.name);
+ }
+ }
if( (t = libconfig->setting_get_member(it, "BindOnEquip")) )
id.flag.bindonequip = libconfig->setting_get_bool(t) ? 1 : 0;
@@ -1938,6 +2151,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;
@@ -2057,23 +2273,78 @@ int itemdb_readdb_libconfig_sub(struct config_setting_t *it, int n, const char *
return itemdb->validate_entry(&id, n, source);
}
-bool itemdb_lookup_const(const struct config_setting_t *it, const char *name, int *value)
+static bool itemdb_lookup_const(const struct config_setting_t *it, const char *name, int *value)
{
+ const char *str = NULL;
+
nullpo_retr(false, name);
nullpo_retr(false, value);
- if (libconfig->setting_lookup_int(it, name, value))
- {
+
+ if (libconfig->setting_lookup_int(it, name, value)) {
return true;
}
- else
- {
+
+ if (libconfig->setting_lookup_string(it, name, &str)) {
+ if (*str && script->get_constant(str, value))
+ return true;
+ }
+
+ return false;
+}
+
+static bool itemdb_lookup_const_mask(const struct config_setting_t *it, const char *name, int *value)
+{
+ const struct config_setting_t *t = NULL;
+
+ nullpo_retr(false, it);
+ nullpo_retr(false, name);
+ nullpo_retr(false, value);
+
+ if ((t = libconfig->setting_get_member(it, name)) == NULL) {
+ return false;
+ }
+
+ if (config_setting_is_scalar(t)) {
const char *str = NULL;
- if (libconfig->setting_lookup_string(it, name, &str))
- {
- if (*str && script->get_constant(str, value))
+
+ if (config_setting_is_number(t)) {
+ *value = libconfig->setting_get_int(t);
+ return true;
+ }
+
+ if ((str = libconfig->setting_get_string(t)) != NULL) {
+ int i32 = -1;
+ if (script->get_constant(str, &i32) && i32 >= 0) {
+ *value = i32;
return true;
+ }
+ }
+
+ return false;
+ }
+
+ if (config_setting_is_aggregate(t) && libconfig->setting_length(t) >= 1) {
+ const struct config_setting_t *elem = NULL;
+ int i = 0;
+
+ *value = 0;
+
+ while ((elem = libconfig->setting_get_elem(t, i++)) != NULL) {
+ const char *str = libconfig->setting_get_string(elem);
+ int i32 = -1;
+
+ if (str == NULL)
+ return false;
+
+ if (!script->get_constant(str, &i32) || i32 < 0)
+ return false;
+
+ *value |= i32;
}
+
+ return true;
}
+
return false;
}
@@ -2084,8 +2355,10 @@ bool itemdb_lookup_const(const struct config_setting_t *it, const char *name, in
* @param filename File name, relative to the database path.
* @return The number of found entries.
*/
-int itemdb_readdb_libconfig(const char *filename) {
+static int itemdb_readdb_libconfig(const char *filename)
+{
bool duplicate[MAX_ITEMDB];
+ struct DBMap *duplicate_db;
struct config_t item_db_conf;
struct config_setting_t *itdb, *it;
char filepath[256];
@@ -2093,7 +2366,7 @@ int itemdb_readdb_libconfig(const char *filename) {
nullpo_ret(filename);
- sprintf(filepath, "%s/%s", map->db_path, filename);
+ safesnprintf(filepath, sizeof(filepath), "%s/%s", map->db_path, filename);
if (!libconfig->load_file(&item_db_conf, filepath))
return 0;
@@ -2102,34 +2375,47 @@ int itemdb_readdb_libconfig(const char *filename) {
return 0;
}
+ // TODO add duplicates check for itemdb->other
memset(&duplicate,0,sizeof(duplicate));
+ duplicate_db = idb_alloc(DB_OPT_BASE);
while( (it = libconfig->setting_get_elem(itdb,i++)) ) {
int nameid = itemdb->readdb_libconfig_sub(it, i-1, filename);
- if (nameid <= 0 || nameid >= MAX_ITEMDB)
+ if (nameid <= 0 || nameid > MAX_ITEM_ID)
continue;
itemdb->readdb_additional_fields(nameid, it, i - 1, filename);
count++;
- if( duplicate[nameid] ) {
- ShowWarning("itemdb_readdb:%s: duplicate entry of ID #%d (%s/%s)\n",
- filename, nameid, itemdb_name(nameid), itemdb_jname(nameid));
- } else
- duplicate[nameid] = true;
+ if (nameid < MAX_ITEMDB) {
+ if (duplicate[nameid]) {
+ ShowWarning("itemdb_readdb:%s: duplicate entry of ID #%d (%s/%s)\n",
+ filename, nameid, itemdb_name(nameid), itemdb_jname(nameid));
+ } else {
+ duplicate[nameid] = true;
+ }
+ } else {
+ if (idb_exists(duplicate_db, nameid)) {
+ ShowWarning("itemdb_readdb:%s: duplicate entry of ID #%d (%s/%s)\n",
+ filename, nameid, itemdb_name(nameid), itemdb_jname(nameid));
+ } else {
+ idb_iput(duplicate_db, nameid, true);
+ }
+ }
}
+ db_destroy(duplicate_db);
libconfig->destroy(&item_db_conf);
ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' entries in '"CL_WHITE"%s"CL_RESET"'.\n", count, filename);
-
return count;
}
/*==========================================
-* Unique item ID function
-* Only one operation by once
-*------------------------------------------*/
-uint64 itemdb_unique_id(struct map_session_data *sd) {
+ * Unique item ID function
+ * Only one operation by once
+ *------------------------------------------*/
+static uint64 itemdb_unique_id(struct map_session_data *sd)
+{
nullpo_ret(sd);
return ((uint64)sd->status.char_id << 32) | sd->status.uniqueitem_counter++;
@@ -2138,7 +2424,8 @@ uint64 itemdb_unique_id(struct map_session_data *sd) {
/**
* Reads all item-related databases.
*/
-void itemdb_read(bool minimal) {
+static void itemdb_read(bool minimal)
+{
int i;
struct DBData prev;
@@ -2149,6 +2436,7 @@ void itemdb_read(bool minimal) {
for (i = 0; i < ARRAYLENGTH(filename); i++)
itemdb->readdb_libconfig(filename[i]);
+ // TODO check duplicate names also in itemdb->other
for( i = 0; i < ARRAYLENGTH(itemdb->array); ++i ) {
if( itemdb->array[i] ) {
if( itemdb->names->put(itemdb->names,DB->str2key(itemdb->array[i]->name),DB->ptr2data(itemdb->array[i]),&prev) ) {
@@ -2158,20 +2446,43 @@ void itemdb_read(bool minimal) {
}
}
+ itemdb->other->foreach(itemdb->other, itemdb->addname_sub);
+
if (minimal)
return;
+ itemdb->name_constants();
+
itemdb->read_combos();
itemdb->read_groups();
itemdb->read_chains();
itemdb->read_packages();
+ itemdb->read_options();
+ clif->stylist_read_db_libconfig();
+}
+
+/**
+ * Add item name with high id into map
+ * @see DBApply
+ */
+static int itemdb_addname_sub(union DBKey key, struct DBData *data, va_list ap)
+{
+ struct item_data *item = DB->data2ptr(data);
+ struct DBData prev;
+
+ if (itemdb->names->put(itemdb->names, DB->str2key(item->name), DB->ptr2data(item), &prev)) {
+ struct item_data *oldItem = DB->data2ptr(&prev);
+ ShowError("itemdb_read: duplicate AegisName '%s' in item ID %d and %d\n", item->name, item->nameid, oldItem->nameid);
+ }
+ return 0;
}
/**
* retrieves item_combo data by combo id
**/
-struct item_combo * itemdb_id2combo( unsigned short id ) {
+static struct item_combo *itemdb_id2combo(int id)
+{
if( id > itemdb->combo_count )
return NULL;
return itemdb->combos[id];
@@ -2180,7 +2491,7 @@ struct item_combo * itemdb_id2combo( unsigned short id ) {
/**
* check is item have usable type
**/
-bool itemdb_is_item_usable(struct item_data *item)
+static bool itemdb_is_item_usable(struct item_data *item)
{
nullpo_retr(false, item);
return item->type == IT_HEALING || item->type == IT_USABLE || item->type == IT_CASH;
@@ -2191,7 +2502,7 @@ bool itemdb_is_item_usable(struct item_data *item)
*------------------------------------------*/
/// Destroys the item_data.
-void destroy_item_data(struct item_data* self, int free_self)
+static void destroy_item_data(struct item_data *self, int free_self)
{
if( self == NULL )
return;
@@ -2217,7 +2528,7 @@ void destroy_item_data(struct item_data* self, int free_self)
/**
* @see DBApply
*/
-int itemdb_final_sub(union DBKey key, struct DBData *data, va_list ap)
+static int itemdb_final_sub(union DBKey key, struct DBData *data, va_list ap)
{
struct item_data *id = DB->data2ptr(data);
@@ -2226,7 +2537,19 @@ int itemdb_final_sub(union DBKey key, struct DBData *data, va_list ap)
return 0;
}
-void itemdb_clear(bool total) {
+
+static int itemdb_options_final_sub(union DBKey key, struct DBData *data, va_list ap)
+{
+ struct itemdb_option *ito = DB->data2ptr(data);
+
+ if (ito->script != NULL)
+ script->free_code(ito->script);
+
+ return 0;
+}
+
+static void itemdb_clear(bool total)
+{
int i;
// clear the previous itemdb data
for( i = 0; i < ARRAYLENGTH(itemdb->array); ++i ) {
@@ -2289,13 +2612,15 @@ void itemdb_clear(bool total) {
return;
itemdb->other->clear(itemdb->other, itemdb->final_sub);
+ itemdb->options->clear(itemdb->options, itemdb->options_final_sub);
memset(itemdb->array, 0, sizeof(itemdb->array));
db_clear(itemdb->names);
}
-void itemdb_reload(void) {
+static void itemdb_reload(void)
+{
struct s_mapiterator* iter;
struct map_session_data* sd;
@@ -2339,21 +2664,25 @@ void itemdb_reload(void) {
for (sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); sd = BL_UCAST(BL_PC, mapit->next(iter))) {
memset(sd->item_delay, 0, sizeof(sd->item_delay)); // reset item delays
pc->setinventorydata(sd);
- if( battle_config.item_check )
- sd->state.itemcheck = 1;
+
+ if (battle->bc->item_check != PCCHECKITEM_NONE) // Check and flag items for inspection.
+ sd->itemcheck = (enum pc_checkitem_types) battle->bc->item_check;
+
/* clear combo bonuses */
- if( sd->combo_count ) {
+ if (sd->combo_count) {
aFree(sd->combos);
sd->combos = NULL;
sd->combo_count = 0;
if( pc->load_combo(sd) > 0 )
status_calc_pc(sd,SCO_FORCE);
}
+
+ // Check for and delete unavailable/disabled items.
pc->checkitem(sd);
}
mapit->free(iter);
}
-void itemdb_name_constants(void)
+static void itemdb_name_constants(void)
{
struct DBIterator *iter = db_iterator(itemdb->names);
struct item_data *data;
@@ -2369,19 +2698,26 @@ void itemdb_name_constants(void)
dbi_destroy(iter);
}
-void do_final_itemdb(void) {
+static void do_final_itemdb(void)
+{
itemdb->clear(true);
itemdb->other->destroy(itemdb->other, itemdb->final_sub);
+ itemdb->options->destroy(itemdb->options, itemdb->options_final_sub);
itemdb->destroy_item_data(&itemdb->dummy, 0);
db_destroy(itemdb->names);
+ VECTOR_CLEAR(clif->attendance_data);
+ clif->stylist_vector_clear();
}
-void do_init_itemdb(bool minimal) {
+static void do_init_itemdb(bool minimal)
+{
memset(itemdb->array, 0, sizeof(itemdb->array));
itemdb->other = idb_alloc(DB_OPT_BASE);
+ itemdb->options = idb_alloc(DB_OPT_RELEASE_DATA);
itemdb->names = strdb_alloc(DB_OPT_BASE,ITEM_NAME_LENGTH);
itemdb->create_dummy_data(); //Dummy data item.
+ clif->stylist_vector_init();
itemdb->read(minimal);
if (minimal)
@@ -2392,8 +2728,11 @@ void do_init_itemdb(bool minimal) {
/** it failed? we disable it **/
if (battle_config.feature_roulette == 1 && !clif->parse_roulette_db())
battle_config.feature_roulette = 0;
+ VECTOR_INIT(clif->attendance_data);
+ clif->pAttendanceDB();
}
-void itemdb_defaults(void) {
+void itemdb_defaults(void)
+{
itemdb = &itemdb_s;
itemdb->init = do_init_itemdb;
@@ -2422,6 +2761,7 @@ void itemdb_defaults(void) {
itemdb->read_groups = itemdb_read_groups;
itemdb->read_chains = itemdb_read_chains;
itemdb->read_packages = itemdb_read_packages;
+ itemdb->read_options = itemdb_read_options;
/* */
itemdb->write_cached_packages = itemdb_write_cached_packages;
itemdb->read_cached_packages = itemdb_read_cached_packages;
@@ -2432,6 +2772,7 @@ void itemdb_defaults(void) {
itemdb->load = itemdb_load;
itemdb->search = itemdb_search;
itemdb->exists = itemdb_exists;
+ itemdb->option_exists = itemdb_option_exists;
itemdb->in_group = itemdb_in_group;
itemdb->group_item = itemdb_searchrandomid;
itemdb->chain_item = itemdb_chain_item;
@@ -2464,6 +2805,7 @@ void itemdb_defaults(void) {
itemdb->read_combos = itemdb_read_combos;
itemdb->gendercheck = itemdb_gendercheck;
itemdb->validate_entry = itemdb_validate_entry;
+ itemdb->readdb_options_additional_fields = itemdb_readdb_options_additional_fields;
itemdb->readdb_additional_fields = itemdb_readdb_additional_fields;
itemdb->readdb_job_sub = itemdb_readdb_job_sub;
itemdb->readdb_libconfig_sub = itemdb_readdb_libconfig_sub;
@@ -2472,8 +2814,11 @@ void itemdb_defaults(void) {
itemdb->read = itemdb_read;
itemdb->destroy_item_data = destroy_item_data;
itemdb->final_sub = itemdb_final_sub;
+ itemdb->options_final_sub = itemdb_options_final_sub;
itemdb->clear = itemdb_clear;
itemdb->id2combo = itemdb_id2combo;
itemdb->is_item_usable = itemdb_is_item_usable;
itemdb->lookup_const = itemdb_lookup_const;
+ itemdb->lookup_const_mask = itemdb_lookup_const_mask;
+ itemdb->addname_sub = itemdb_addname_sub;
}
diff --git a/src/map/itemdb.h b/src/map/itemdb.h
index 571512e49..315787993 100644
--- a/src/map/itemdb.h
+++ b/src/map/itemdb.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -33,10 +33,29 @@ struct hplugin_data_store;
/**
* Defines
**/
-#define MAX_ITEMDB 0x8000 // 32k array entries in array (the rest goes to the db)
+#ifndef MAX_ITEMDB
+#define MAX_ITEMDB 0xFFFF
+#endif
+
+#ifndef MAX_ITEM_ID
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+#define MAX_ITEM_ID 0x20000
+#else
+#define MAX_ITEM_ID 0xFFFF
+#endif
+#endif
+
+#ifndef MAX_ITEMDELAYS
#define MAX_ITEMDELAYS 10 // The maximum number of item delays
+#endif
+
+#ifndef MAX_SEARCH
#define MAX_SEARCH 5 //Designed for search functions, species max number of matches to display.
+#endif
+
+#ifndef MAX_ITEMS_PER_COMBO
#define MAX_ITEMS_PER_COMBO 6 /* maximum amount of items a combo may require */
+#endif
#define CARD0_FORGE 0x00FF
#define CARD0_CREATE 0x00FE
@@ -45,8 +64,17 @@ struct hplugin_data_store;
//Marks if the card0 given is "special" (non-item id used to mark pets/created items. [Skotlex]
#define itemdb_isspecial(i) ((i) == CARD0_FORGE || (i) == CARD0_CREATE || (i) == CARD0_PET)
+#ifndef UNKNOWN_ITEM_ID
//Use apple for unknown items.
#define UNKNOWN_ITEM_ID 512
+#endif
+
+#if MAX_ITEM_ID < MAX_ITEMDB
+#error "MAX_ITEM_ID must be bigger or same with MAX_ITEMDB"
+#endif
+#if MAX_ITEM_ID > 0xFFFF && PACKETVER_MAIN_NUM < 20181121 && PACKETVER_RE_NUM < 20180704 && PACKETVER_ZERO_NUM < 20181114
+#error "For clients before 20181121 Main and 20180704 RE and 20181114 zero, MAX_ITEM_ID must be smaller than 0x10000"
+#endif
enum item_itemid {
ITEMID_RED_POTION = 501,
@@ -111,8 +139,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,
@@ -139,6 +165,8 @@ enum item_itemid {
ITEMID_MAGIC_CASTLE = 12308,
ITEMID_BULGING_HEAD = 12309,
ITEMID_THICK_MANUAL50 = 12312,
+ ITEMID_N_FLY_WING = 12323,
+ ITEMID_N_BUTTERFLY_WING = 12324,
ITEMID_N_MAGNIFIER = 12325,
ITEMID_ANSILA = 12333,
ITEMID_REPAIRA = 12392,
@@ -147,6 +175,24 @@ enum item_itemid {
ITEMID_BLACK_THING = 12435,
ITEMID_BOARDING_HALTER = 12622,
ITEMID_NOBLE_NAMEPLATE = 12705,
+ ITEMID_POISON_PARALYSIS = 12717,
+ ITEMID_POISON_LEECH = 12718,
+ ITEMID_POISON_OBLIVION = 12719,
+ ITEMID_POISON_CONTAMINATION = 12720,
+ ITEMID_POISON_NUMB = 12721,
+ ITEMID_POISON_FEVER = 12722,
+ ITEMID_POISON_LAUGHING = 12723,
+ ITEMID_POISON_FATIGUE = 12724,
+ ITEMID_NAUTHIZ = 12725,
+ ITEMID_RAIDO = 12726,
+ ITEMID_BERKANA = 12727,
+ ITEMID_ISA = 12728,
+ ITEMID_OTHILA = 12729,
+ ITEMID_URUZ = 12730,
+ ITEMID_THURISAZ = 12731,
+ ITEMID_WYRD = 12732,
+ ITEMID_HAGALAZ = 12733,
+ ITEMID_C_WING_OF_FLY = 12887,
ITEMID_DUN_TELE_SCROLL1 = 14527,
ITEMID_BATTLE_MANUAL25 = 14532,
ITEMID_BATTLE_MANUAL100 = 14533,
@@ -161,6 +207,7 @@ enum item_itemid {
ITEMID_PILEBUNCKER_S = 16030,
ITEMID_PILEBUNCKER_P = 16031,
ITEMID_PILEBUNCKER_T = 16032,
+ ITEMID_LUX_ANIMA = 22540,
};
enum cards_item_list {
@@ -250,49 +297,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
-};
-
-/**
- * GC Poison
- */
-enum poison_item_list {
- ITEMID_POISON_PARALYSIS = 12717,
- ITEMID_POISON_LEECH, // 12718
- ITEMID_POISON_OBLIVION, // 12719
- ITEMID_POISON_CONTAMINATION, // 12720
- ITEMID_POISON_NUMB, // 12721
- ITEMID_POISON_FEVER, // 12722
- ITEMID_POISON_LAUGHING, // 12723
- ITEMID_POISON_FATIGUE, // 12724
-};
-
-
-/**
- * Rune Knight
- **/
-enum rune_item_list {
- ITEMID_NAUTHIZ = 12725,
- ITEMID_RAIDO, // 12726
- ITEMID_BERKANA, // 12727
- ITEMID_ISA, // 12728
- ITEMID_OTHILA, // 12729
- ITEMID_URUZ, // 12730
- ITEMID_THURISAZ, // 12731
- ITEMID_WYRD, // 12732
- ITEMID_HAGALAZ, // 12733
- ITEMID_LUX_ANIMA = 22540,
-};
-
-/**
* Geneticist
*/
enum geneticist_item_list {
@@ -364,7 +368,7 @@ enum item_class_upper {
ITEMUPPER_UPPER = 0x02,
ITEMUPPER_BABY = 0x04,
ITEMUPPER_THIRD = 0x08,
- ITEMUPPER_THURDUPPER = 0x10,
+ ITEMUPPER_THIRDUPPER = 0x10,
ITEMUPPER_THIRDBABY = 0x20,
ITEMUPPER_ALL = 0x3f, // Sum of all the above
};
@@ -388,7 +392,7 @@ enum ItemTradeRestrictions {
};
/**
- * Iten No-use restrictions
+ * Item No-use restrictions
*/
enum ItemNouseRestrictions {
INR_NONE = 0x0, ///< No restrictions
@@ -397,6 +401,16 @@ enum ItemNouseRestrictions {
INR_ALL = 0x1 ///< Sum of all the above values
};
+/**
+ * Item Option Types
+ */
+enum ItemOptionTypes {
+ IT_OPT_INDEX = 0,
+ IT_OPT_VALUE,
+ IT_OPT_PARAM,
+ IT_OPT_MAX
+};
+
/** Convenience item list (entry) used in various functions */
struct itemlist_entry {
int id; ///< Item ID or (inventory) index
@@ -407,19 +421,19 @@ VECTOR_STRUCT_DECL(itemlist, struct itemlist_entry);
struct item_combo {
struct script_code *script;
- unsigned short nameid[MAX_ITEMS_PER_COMBO];/* nameid array */
+ int nameid[MAX_ITEMS_PER_COMBO];/* nameid array */
unsigned char count;
- unsigned short id;/* id of this combo */
+ int id; /* id of this combo */
};
struct item_group {
- unsigned short id;
- unsigned short *nameid;
+ int id;
+ int *nameid;
unsigned short qty;
};
struct item_chain_entry {
- unsigned short id;
+ int id;
unsigned short rate;
struct item_chain_entry *next;
};
@@ -430,7 +444,7 @@ struct item_chain {
};
struct item_package_rand_entry {
- unsigned short id;
+ int id;
unsigned short qty;
unsigned short rate;
unsigned short hours;
@@ -441,7 +455,7 @@ struct item_package_rand_entry {
};
struct item_package_must_entry {
- unsigned short id;
+ int id;
unsigned short qty;
unsigned short hours;
unsigned int announce : 1;
@@ -455,21 +469,26 @@ struct item_package_rand_group {
};
struct item_package {
- unsigned short id;
+ int id;
struct item_package_rand_group *random_groups;
struct item_package_must_entry *must_items;
unsigned short random_qty;
unsigned short must_qty;
};
+struct itemdb_option {
+ int16 index;
+ struct script_code *script;
+};
+
struct item_data {
- uint16 nameid;
+ int nameid;
char name[ITEM_NAME_LENGTH],jname[ITEM_NAME_LENGTH];
- //Do not add stuff between value_buy and view_id (see how getiteminfo works)
int value_buy;
int value_sell;
int type;
+ int subtype;
int maxchance; //For logs, for external game info, for scripts: Max drop chance of this item (e.g. 0.01% , etc.. if it = 0, then monsters don't drop it, -1 denotes items sold in shops only) [Lupus]
int sex;
int equip;
@@ -478,16 +497,15 @@ struct item_data {
int def;
int range;
int slot;
- int look;
+ int view_sprite;
int elv;
int wlv;
int view_id;
int matk;
int elvmax;/* maximum level for this item */
+ int dropeffectmode;
int delay;
-//Lupus: I rearranged order of these fields due to compatibility with ITEMINFO script command
-// some script commands should be revised as well...
uint64 class_base[3]; ///< Specifies if the base can wear this item (split in 3 indexes per type: 1-1, 2-1, 2-2)
unsigned class_upper : 6; ///< Specifies if the upper-type can equip it (bitfield, 0x01: normal, 0x02: upper, 0x04: baby normal, 0x08: third normal, 0x10: third upper, 0x20: third baby)
struct {
@@ -507,6 +525,9 @@ struct item_data {
unsigned bindonequip : 1;
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]
+ unsigned showdropeffect: 1; // < Allow showing effect on item drop [Asheraf]
} flag;
struct {// item stacking limitation
unsigned short amount;
@@ -534,7 +555,8 @@ struct item_data {
#define itemdb_type(n) (itemdb->search(n)->type)
#define itemdb_atk(n) (itemdb->search(n)->atk)
#define itemdb_def(n) (itemdb->search(n)->def)
-#define itemdb_look(n) (itemdb->search(n)->look)
+#define itemdb_subtype(n) (itemdb->search(n)->subtype)
+#define itemdb_sprite(n) (itemdb->search(n)->view_sprite)
#define itemdb_weight(n) (itemdb->search(n)->weight)
#define itemdb_equip(n) (itemdb->search(n)->equip)
#define itemdb_usescript(n) (itemdb->search(n)->script)
@@ -548,13 +570,14 @@ struct item_data {
#define itemdb_value_buy(n) (itemdb->search(n)->value_buy)
#define itemdb_value_sell(n) (itemdb->search(n)->value_sell)
#define itemdb_canrefine(n) (!itemdb->search(n)->flag.no_refine)
+#define itemdb_allowoption(n) (!itemdb->search(n)->flag.no_options)
+#define itemdb_showdropeffect(n) (itemdb->search(n)->flag.showdropeffect)
+#define itemdb_dropeffectmode(n) (itemdb->search(n)->dropeffectmode)
-#define itemdb_is_rune(n) (((n) >= ITEMID_NAUTHIZ && (n) <= ITEMID_HAGALAZ) || (n) == ITEMID_LUX_ANIMA)
#define itemdb_is_element(n) ((n) >= ITEMID_SCARLET_PTS && (n) <= ITEMID_LIME_GREEN_PTS)
#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)
@@ -595,11 +618,13 @@ struct itemdb_interface {
/* */
struct item_data *array[MAX_ITEMDB];
struct DBMap *other;// int nameid -> struct item_data*
+ struct DBMap *options; // int opt_id -> struct itemdb_option*
struct item_data dummy; //This is the default dummy item used for non-existant items. [Skotlex]
/* */
void (*read_groups) (void);
void (*read_chains) (void);
void (*read_packages) (void);
+ void (*read_options) (void);
/* */
void (*write_cached_packages) (const char *config_filename);
bool (*read_cached_packages) (const char *config_filename);
@@ -610,6 +635,7 @@ struct itemdb_interface {
struct item_data* (*load)(int nameid);
struct item_data* (*search)(int nameid);
struct item_data* (*exists) (int nameid);
+ struct itemdb_option* (*option_exists) (int idx);
bool (*in_group) (struct item_group *group, int nameid);
int (*group_item) (struct item_group *group);
int (*chain_item) (unsigned short chain_id, int *rate);
@@ -642,6 +668,7 @@ struct itemdb_interface {
void (*read_combos) (void);
int (*gendercheck) (struct item_data *id);
int (*validate_entry) (struct item_data *entry, int n, const char *source);
+ void (*readdb_options_additional_fields) (struct itemdb_option *ito, struct config_setting_t *t, const char *source);
void (*readdb_additional_fields) (int itemid, struct config_setting_t *it, int n, const char *source);
void (*readdb_job_sub) (struct item_data *id, struct config_setting_t *t);
int (*readdb_libconfig_sub) (struct config_setting_t *it, int n, const char *source);
@@ -650,10 +677,13 @@ struct itemdb_interface {
void (*read) (bool minimal);
void (*destroy_item_data) (struct item_data *self, int free_self);
int (*final_sub) (union DBKey key, struct DBData *data, va_list ap);
+ int (*options_final_sub) (union DBKey key, struct DBData *data, va_list ap);
void (*clear) (bool total);
- struct item_combo * (*id2combo) (unsigned short id);
+ struct item_combo * (*id2combo) (int id);
bool (*is_item_usable) (struct item_data *item);
bool (*lookup_const) (const struct config_setting_t *it, const char *name, int *value);
+ bool (*lookup_const_mask) (const struct config_setting_t *it, const char *name, int *value);
+ int (*addname_sub) (union DBKey key, struct DBData *data, va_list ap);
};
#ifdef HERCULES_CORE
diff --git a/src/map/log.c b/src/map/log.c
index 902d428a7..efb7fefbc 100644
--- a/src/map/log.c
+++ b/src/map/log.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -39,11 +39,12 @@
#include <stdlib.h>
#include <string.h>
-struct log_interface log_s;
+static struct log_interface log_s;
struct log_interface *logs;
/// obtain log type character for item/zeny logs
-char log_picktype2char(e_log_pick_type type) {
+static char log_picktype2char(e_log_pick_type type)
+{
switch( type ) {
case LOG_TYPE_TRADE: return 'T'; // (T)rade
case LOG_TYPE_VENDING: return 'V'; // (V)ending
@@ -82,13 +83,21 @@ char log_picktype2char(e_log_pick_type type) {
}
/// obtain log type character for chat logs
-char log_chattype2char(e_log_chat_type type) {
- switch( type ) {
- case LOG_CHAT_GLOBAL: return 'O'; // Gl(O)bal
- case LOG_CHAT_WHISPER: return 'W'; // (W)hisper
- case LOG_CHAT_PARTY: return 'P'; // (P)arty
- case LOG_CHAT_GUILD: return 'G'; // (G)uild
- case LOG_CHAT_MAINCHAT: return 'M'; // (M)ain chat
+static char log_chattype2char(e_log_chat_type type)
+{
+ switch (type) {
+ case LOG_CHAT_GLOBAL:
+ return 'O'; // Gl(O)bal
+ case LOG_CHAT_WHISPER:
+ return 'W'; // (W)hisper
+ case LOG_CHAT_PARTY:
+ return 'P'; // (P)arty
+ case LOG_CHAT_GUILD:
+ return 'G'; // (G)uild
+ case LOG_CHAT_MAINCHAT:
+ return 'M'; // (M)ain chat
+ case LOG_CHAT_CLAN:
+ return 'C'; // (C)lan
}
// should not get here, fallback
@@ -97,7 +106,8 @@ char log_chattype2char(e_log_chat_type type) {
}
/// check if this item should be logged according the settings
-bool should_log_item(int nameid, int amount, int refine, struct item_data *id) {
+static bool should_log_item(int nameid, int amount, int refine, struct item_data *id)
+{
int filter = logs->config.filter;
if( id == NULL )
@@ -120,7 +130,7 @@ bool should_log_item(int nameid, int amount, int refine, struct item_data *id) {
return false;
}
-void log_branch_sub_sql(struct map_session_data* sd)
+static void log_branch_sub_sql(struct map_session_data *sd)
{
struct SqlStmt *stmt;
@@ -136,7 +146,8 @@ void log_branch_sub_sql(struct map_session_data* sd)
}
SQL->StmtFree(stmt);
}
-void log_branch_sub_txt(struct map_session_data* sd) {
+static void log_branch_sub_txt(struct map_session_data *sd)
+{
char timestring[255];
time_t curtime;
FILE* logfp;
@@ -151,7 +162,8 @@ void log_branch_sub_txt(struct map_session_data* sd) {
}
/// logs items, that summon monsters
-void log_branch(struct map_session_data* sd) {
+static void log_branch(struct map_session_data *sd)
+{
nullpo_retv(sd);
if( !logs->config.branch )
@@ -159,19 +171,24 @@ void log_branch(struct map_session_data* sd) {
logs->branch_sub(sd);
}
-void log_pick_sub_sql(int id, int16 m, e_log_pick_type type, int amount, struct item* itm, struct item_data *data) {
+static void log_pick_sub_sql(int id, int16 m, e_log_pick_type type, int amount, struct item *itm, struct item_data *data)
+{
nullpo_retv(itm);
- if( SQL_ERROR == SQL->Query(logs->mysql_handle,
- LOG_QUERY " INTO `%s` (`time`, `char_id`, `type`, `nameid`, `amount`, `refine`, `card0`, `card1`, `card2`, `card3`, `map`, `unique_id`) "
- "VALUES (NOW(), '%d', '%c', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%s', '%"PRIu64"')",
+ if (SQL_ERROR == SQL->Query(logs->mysql_handle,
+ LOG_QUERY " INTO `%s` (`time`, `char_id`, `type`, `nameid`, `amount`, `refine`, `card0`, `card1`, `card2`, `card3`, "
+ "`opt_idx0`, `opt_val0`, `opt_idx1`, `opt_val1`, `opt_idx2`, `opt_val2`, `opt_idx3`, `opt_val3`, `opt_idx4`, `opt_val4`, `map`, `unique_id`) "
+ "VALUES (NOW(), '%d', '%c', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%s', '%"PRIu64"')",
logs->config.log_pick, id, logs->picktype2char(type), itm->nameid, amount, itm->refine, itm->card[0], itm->card[1], itm->card[2], itm->card[3],
- map->list[m].name, itm->unique_id)
- ) {
+ itm->option[0].index, itm->option[0].value, itm->option[1].index, itm->option[1].value, itm->option[2].index, itm->option[2].value,
+ itm->option[3].index, itm->option[3].value, itm->option[4].index, itm->option[4].value,
+ map->list[m].name, itm->unique_id))
+ {
Sql_ShowDebug(logs->mysql_handle);
return;
}
}
-void log_pick_sub_txt(int id, int16 m, e_log_pick_type type, int amount, struct item* itm, struct item_data *data) {
+static void log_pick_sub_txt(int id, int16 m, e_log_pick_type type, int amount, struct item *itm, struct item_data *data)
+{
char timestring[255];
time_t curtime;
FILE* logfp;
@@ -187,7 +204,8 @@ void log_pick_sub_txt(int id, int16 m, e_log_pick_type type, int amount, struct
fclose(logfp);
}
/// logs item transactions (generic)
-void log_pick(int id, int16 m, e_log_pick_type type, int amount, struct item* itm, struct item_data *data) {
+static void log_pick(int id, int16 m, e_log_pick_type type, int amount, struct item *itm, struct item_data *data)
+{
nullpo_retv(itm);
if( ( logs->config.enable_logs&type ) == 0 ) {// disabled
return;
@@ -200,19 +218,22 @@ void log_pick(int id, int16 m, e_log_pick_type type, int amount, struct item* it
}
/// logs item transactions (players)
-void log_pick_pc(struct map_session_data* sd, e_log_pick_type type, int amount, struct item* itm, struct item_data *data) {
+static void log_pick_pc(struct map_session_data *sd, e_log_pick_type type, int amount, struct item *itm, struct item_data *data)
+{
nullpo_retv(sd);
nullpo_retv(itm);
log_pick(sd->status.char_id, sd->bl.m, type, amount, itm, data ? data : itemdb->exists(itm->nameid));
}
/// logs item transactions (monsters)
-void log_pick_mob(struct mob_data* md, e_log_pick_type type, int amount, struct item* itm, struct item_data *data) {
+static void log_pick_mob(struct mob_data *md, e_log_pick_type type, int amount, struct item *itm, struct item_data *data)
+{
nullpo_retv(md);
nullpo_retv(itm);
log_pick(md->class_, md->bl.m, type, amount, itm, data ? data : itemdb->exists(itm->nameid));
}
-void log_zeny_sub_sql(struct map_session_data* sd, e_log_pick_type type, struct map_session_data* src_sd, int amount) {
+static void log_zeny_sub_sql(struct map_session_data *sd, e_log_pick_type type, struct map_session_data *src_sd, int amount)
+{
nullpo_retv(sd);
nullpo_retv(src_sd);
if( SQL_ERROR == SQL->Query(logs->mysql_handle, LOG_QUERY " INTO `%s` (`time`, `char_id`, `src_id`, `type`, `amount`, `map`) VALUES (NOW(), '%d', '%d', '%c', '%d', '%s')",
@@ -222,7 +243,8 @@ void log_zeny_sub_sql(struct map_session_data* sd, e_log_pick_type type, struct
return;
}
}
-void log_zeny_sub_txt(struct map_session_data* sd, e_log_pick_type type, struct map_session_data* src_sd, int amount) {
+static void log_zeny_sub_txt(struct map_session_data *sd, e_log_pick_type type, struct map_session_data *src_sd, int amount)
+{
char timestring[255];
time_t curtime;
FILE* logfp;
@@ -237,7 +259,7 @@ void log_zeny_sub_txt(struct map_session_data* sd, e_log_pick_type type, struct
fclose(logfp);
}
/// logs zeny transactions
-void log_zeny(struct map_session_data* sd, e_log_pick_type type, struct map_session_data* src_sd, int amount)
+static void log_zeny(struct map_session_data *sd, e_log_pick_type type, struct map_session_data *src_sd, int amount)
{
nullpo_retv(sd);
@@ -246,7 +268,8 @@ void log_zeny(struct map_session_data* sd, e_log_pick_type type, struct map_sess
logs->zeny_sub(sd,type,src_sd,amount);
}
-void log_mvpdrop_sub_sql(struct map_session_data* sd, int monster_id, int* log_mvp) {
+static void log_mvpdrop_sub_sql(struct map_session_data *sd, int monster_id, int *log_mvp)
+{
nullpo_retv(sd);
nullpo_retv(log_mvp);
if( SQL_ERROR == SQL->Query(logs->mysql_handle, LOG_QUERY " INTO `%s` (`mvp_date`, `kill_char_id`, `monster_id`, `prize`, `mvpexp`, `map`) VALUES (NOW(), '%d', '%d', '%d', '%d', '%s') ",
@@ -256,7 +279,8 @@ void log_mvpdrop_sub_sql(struct map_session_data* sd, int monster_id, int* log_m
return;
}
}
-void log_mvpdrop_sub_txt(struct map_session_data* sd, int monster_id, int* log_mvp) {
+static void log_mvpdrop_sub_txt(struct map_session_data *sd, int monster_id, int *log_mvp)
+{
char timestring[255];
time_t curtime;
FILE* logfp;
@@ -271,7 +295,7 @@ void log_mvpdrop_sub_txt(struct map_session_data* sd, int monster_id, int* log_m
fclose(logfp);
}
/// logs MVP monster rewards
-void log_mvpdrop(struct map_session_data* sd, int monster_id, int* log_mvp)
+static void log_mvpdrop(struct map_session_data *sd, int monster_id, int *log_mvp)
{
nullpo_retv(sd);
@@ -281,7 +305,7 @@ void log_mvpdrop(struct map_session_data* sd, int monster_id, int* log_mvp)
logs->mvpdrop_sub(sd,monster_id,log_mvp);
}
-void log_atcommand_sub_sql(struct map_session_data* sd, const char* message)
+static void log_atcommand_sub_sql(struct map_session_data *sd, const char *message)
{
struct SqlStmt *stmt;
@@ -299,7 +323,8 @@ void log_atcommand_sub_sql(struct map_session_data* sd, const char* message)
}
SQL->StmtFree(stmt);
}
-void log_atcommand_sub_txt(struct map_session_data* sd, const char* message) {
+static void log_atcommand_sub_txt(struct map_session_data *sd, const char *message)
+{
char timestring[255];
time_t curtime;
FILE* logfp;
@@ -314,7 +339,7 @@ void log_atcommand_sub_txt(struct map_session_data* sd, const char* message) {
fclose(logfp);
}
/// logs used atcommands
-void log_atcommand(struct map_session_data* sd, const char* message)
+static void log_atcommand(struct map_session_data *sd, const char *message)
{
nullpo_retv(sd);
@@ -325,7 +350,7 @@ void log_atcommand(struct map_session_data* sd, const char* message)
logs->atcommand_sub(sd,message);
}
-void log_npc_sub_sql(struct map_session_data *sd, const char *message)
+static void log_npc_sub_sql(struct map_session_data *sd, const char *message)
{
struct SqlStmt *stmt;
@@ -343,7 +368,8 @@ void log_npc_sub_sql(struct map_session_data *sd, const char *message)
}
SQL->StmtFree(stmt);
}
-void log_npc_sub_txt(struct map_session_data *sd, const char *message) {
+static void log_npc_sub_txt(struct map_session_data *sd, const char *message)
+{
char timestring[255];
time_t curtime;
FILE* logfp;
@@ -358,7 +384,7 @@ void log_npc_sub_txt(struct map_session_data *sd, const char *message) {
fclose(logfp);
}
/// logs messages passed to script command 'logmes'
-void log_npc(struct map_session_data* sd, const char* message)
+static void log_npc(struct map_session_data *sd, const char *message)
{
nullpo_retv(sd);
@@ -381,7 +407,7 @@ void log_npc(struct map_session_data* sd, const char* message)
* @param dst_charname Destination character name. Must not be NULL.
* @param message Message to log.
*/
-void log_chat_sub_sql(e_log_chat_type type, int type_id, int src_charid, int src_accid, const char *mapname, int x, int y, const char *dst_charname, const char *message)
+static void log_chat_sub_sql(e_log_chat_type type, int type_id, int src_charid, int src_accid, const char *mapname, int x, int y, const char *dst_charname, const char *message)
{
struct SqlStmt* stmt;
@@ -413,7 +439,7 @@ void log_chat_sub_sql(e_log_chat_type type, int type_id, int src_charid, int src
* @param dst_charname Destination character name. Must not be NULL.
* @param message Message to log.
*/
-void log_chat_sub_txt(e_log_chat_type type, int type_id, int src_charid, int src_accid, const char *mapname, int x, int y, const char *dst_charname, const char *message)
+static void log_chat_sub_txt(e_log_chat_type type, int type_id, int src_charid, int src_accid, const char *mapname, int x, int y, const char *dst_charname, const char *message)
{
char timestring[255];
time_t curtime;
@@ -443,7 +469,7 @@ void log_chat_sub_txt(e_log_chat_type type, int type_id, int src_charid, int src
* @param dst_charname Destination character name. May be NULL when unused.
* @param message Message to log.
*/
-void log_chat(e_log_chat_type type, int type_id, int src_charid, int src_accid, const char *mapname, int x, int y, const char *dst_charname, const char *message)
+static void log_chat(e_log_chat_type type, int type_id, int src_charid, int src_accid, const char *mapname, int x, int y, const char *dst_charname, const char *message)
{
if ((logs->config.chat&type) == 0) {
// disabled
@@ -461,7 +487,8 @@ void log_chat(e_log_chat_type type, int type_id, int src_charid, int src_accid,
logs->chat_sub(type,type_id,src_charid,src_accid,mapname,x,y,dst_charname,message);
}
-void log_sql_init(void) {
+static void log_sql_init(void)
+{
// log db connection
logs->mysql_handle = SQL->Malloc();
@@ -474,7 +501,8 @@ void log_sql_init(void) {
if ( SQL_ERROR == SQL->SetEncoding(logs->mysql_handle, map->default_codepage) )
Sql_ShowDebug(logs->mysql_handle);
}
-void log_sql_final(void) {
+static void log_sql_final(void)
+{
ShowStatus("Close Log DB Connection....\n");
SQL->Free(logs->mysql_handle);
logs->mysql_handle = NULL;
@@ -727,7 +755,8 @@ bool log_config_read(const char *filename, bool imported)
return retval;
}
-void log_config_complete(void) {
+void log_config_complete(void)
+{
if( logs->config.sql_logs ) {
logs->pick_sub = log_pick_sub_sql;
logs->zeny_sub = log_zeny_sub_sql;
@@ -742,7 +771,8 @@ void log_config_complete(void) {
/**
* Initializes the log interface to the default values.
*/
-void log_defaults(void) {
+void log_defaults(void)
+{
logs = &log_s;
sprintf(logs->db_ip,"127.0.0.1");
diff --git a/src/map/log.h b/src/map/log.h
index 7ff36d126..db802575d 100644
--- a/src/map/log.h
+++ b/src/map/log.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -52,6 +52,7 @@ typedef enum e_log_chat_type {
LOG_CHAT_PARTY = 0x04,
LOG_CHAT_GUILD = 0x08,
LOG_CHAT_MAINCHAT = 0x10,
+ LOG_CHAT_CLAN = 0x20,
// all
LOG_CHAT_ALL = 0xFF,
} e_log_chat_type;
diff --git a/src/map/mail.c b/src/map/mail.c
index d8a354cc7..0a4b91e34 100644
--- a/src/map/mail.c
+++ b/src/map/mail.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -34,10 +34,10 @@
#include <time.h>
#include <string.h>
-struct mail_interface mail_s;
+static struct mail_interface mail_s;
struct mail_interface *mail;
-void mail_clear(struct map_session_data *sd)
+static void mail_clear(struct map_session_data *sd)
{
nullpo_retv(sd);
sd->mail.nameid = 0;
@@ -48,7 +48,7 @@ void mail_clear(struct map_session_data *sd)
return;
}
-int mail_removeitem(struct map_session_data *sd, short flag)
+static int mail_removeitem(struct map_session_data *sd, short flag)
{
nullpo_ret(sd);
@@ -66,7 +66,7 @@ int mail_removeitem(struct map_session_data *sd, short flag)
return 1;
}
-int mail_removezeny(struct map_session_data *sd, short flag)
+static int mail_removezeny(struct map_session_data *sd, short flag)
{
nullpo_ret(sd);
@@ -79,7 +79,8 @@ int mail_removezeny(struct map_session_data *sd, short flag)
return 1;
}
-unsigned char mail_setitem(struct map_session_data *sd, int idx, int amount) {
+static unsigned char mail_setitem(struct map_session_data *sd, int idx, int amount)
+{
nullpo_retr(1, sd);
if( pc_istrading(sd) )
@@ -99,7 +100,7 @@ unsigned char mail_setitem(struct map_session_data *sd, int idx, int amount) {
idx -= 2;
mail->removeitem(sd, 0);
- if( idx < 0 || idx >= MAX_INVENTORY )
+ if (idx < 0 || idx >= sd->status.inventorySize)
return 1;
if( amount <= 0 || amount > sd->status.inventory[idx].amount )
return 1;
@@ -116,7 +117,7 @@ unsigned char mail_setitem(struct map_session_data *sd, int idx, int amount) {
}
}
-bool mail_setattachment(struct map_session_data *sd, struct mail_message *msg)
+static bool mail_setattachment(struct map_session_data *sd, struct mail_message *msg)
{
int n;
@@ -127,7 +128,7 @@ bool mail_setattachment(struct map_session_data *sd, struct mail_message *msg)
return false;
n = sd->mail.index;
- Assert_retr(false, n >= 0 && n < MAX_INVENTORY);
+ Assert_retr(false, n >= 0 && n < sd->status.inventorySize);
if( sd->mail.amount )
{
if( sd->status.inventory[n].nameid != sd->mail.nameid )
@@ -156,7 +157,7 @@ bool mail_setattachment(struct map_session_data *sd, struct mail_message *msg)
return true;
}
-void mail_getattachment(struct map_session_data* sd, int zeny, struct item* item)
+static void mail_getattachment(struct map_session_data *sd, int zeny, struct item *item)
{
nullpo_retv(sd);
nullpo_retv(item);
@@ -172,7 +173,7 @@ void mail_getattachment(struct map_session_data* sd, int zeny, struct item* item
}
}
-int mail_openmail(struct map_session_data *sd)
+static int mail_openmail(struct map_session_data *sd)
{
nullpo_ret(sd);
@@ -184,7 +185,7 @@ int mail_openmail(struct map_session_data *sd)
return 1;
}
-void mail_deliveryfail(struct map_session_data *sd, struct mail_message *msg)
+static void mail_deliveryfail(struct map_session_data *sd, struct mail_message *msg)
{
nullpo_retv(sd);
nullpo_retv(msg);
@@ -204,7 +205,8 @@ void mail_deliveryfail(struct map_session_data *sd, struct mail_message *msg)
}
// This function only check if the mail operations are valid
-bool mail_invalid_operation(struct map_session_data *sd) {
+static bool mail_invalid_operation(struct map_session_data *sd)
+{
nullpo_retr(false, sd);
if( !map->list[sd->bl.m].flag.town && !pc->can_use_command(sd, "@mail") ) {
ShowWarning("clif->parse_Mail: char '%s' trying to do invalid mail operations.\n", sd->status.name);
diff --git a/src/map/mail.h b/src/map/mail.h
index 0391f83c4..9aeb46120 100644
--- a/src/map/mail.h
+++ b/src/map/mail.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/map/map.c b/src/map/map.c
index 16d5e645d..6212493c8 100644
--- a/src/map/map.c
+++ b/src/map/map.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -30,6 +30,7 @@
#include "map/channel.h"
#include "map/chat.h"
#include "map/chrif.h"
+#include "map/clan.h"
#include "map/clif.h"
#include "map/duel.h"
#include "map/elemental.h"
@@ -55,8 +56,10 @@
#include "map/skill.h"
#include "map/status.h"
#include "map/storage.h"
+#include "map/rodex.h"
#include "map/trade.h"
#include "map/unit.h"
+#include "map/achievement.h"
#include "common/HPM.h"
#include "common/cbasetypes.h"
#include "common/conf.h"
@@ -64,6 +67,7 @@
#include "common/core.h"
#include "common/ers.h"
#include "common/grfio.h"
+#include "common/md5calc.h"
#include "common/memmgr.h"
#include "common/nullpo.h"
#include "common/random.h"
@@ -84,8 +88,8 @@
#include <unistd.h>
#endif
-struct map_interface map_s;
-struct mapit_interface mapit_s;
+static struct map_interface map_s;
+static struct mapit_interface mapit_s;
struct map_interface *map;
struct mapit_interface *mapit;
@@ -93,18 +97,21 @@ struct mapit_interface *mapit;
/*==========================================
* server player count (of all mapservers)
*------------------------------------------*/
-void map_setusers(int users) {
+static void map_setusers(int users)
+{
map->users = users;
}
-int map_getusers(void) {
+static int map_getusers(void)
+{
return map->users;
}
/**
* Expands map->bl_list on demand
**/
-static inline void map_bl_list_expand(void) {
+static inline void map_bl_list_expand(void)
+{
map->bl_list_size += 250;
RECREATE(map->bl_list, struct block_list *, map->bl_list_size);
}
@@ -112,7 +119,8 @@ static inline void map_bl_list_expand(void) {
/**
* Expands map->block_free on demand
**/
-static inline void map_block_free_expand(void) {
+static inline void map_block_free_expand(void)
+{
map->block_free_list_size += 100;
RECREATE(map->block_free, struct block_list *, map->block_free_list_size);
}
@@ -120,14 +128,16 @@ static inline void map_block_free_expand(void) {
/*==========================================
* server player count (this mapserver only)
*------------------------------------------*/
-int map_usercount(void) {
+static int map_usercount(void)
+{
return db_size(map->pc_db);
}
/*==========================================
* Attempt to free a map blocklist
*------------------------------------------*/
-int map_freeblock (struct block_list *bl) {
+static int map_freeblock(struct block_list *bl)
+{
nullpo_retr(map->block_free_lock, bl);
if (map->block_free_lock == 0) {
@@ -148,14 +158,16 @@ int map_freeblock (struct block_list *bl) {
/*==========================================
* Lock blocklist, (prevent map->freeblock usage)
*------------------------------------------*/
-int map_freeblock_lock (void) {
+static int map_freeblock_lock(void)
+{
return ++map->block_free_lock;
}
/*==========================================
* Remove the lock on map_bl
*------------------------------------------*/
-int map_freeblock_unlock (void) {
+static int map_freeblock_unlock(void)
+{
if ((--map->block_free_lock) == 0) {
int i;
for (i = 0; i < map->block_free_count; i++) {
@@ -176,7 +188,8 @@ int map_freeblock_unlock (void) {
// Timer function to check if there some remaining lock and remove them if so.
// Called each 1s
-int map_freeblock_timer(int tid, int64 tick, int id, intptr_t data) {
+static int map_freeblock_timer(int tid, int64 tick, int id, intptr_t data)
+{
if (map->block_free_lock > 0) {
ShowError("map_freeblock_timer: block_free_lock(%d) is invalid.\n", map->block_free_lock);
map->block_free_lock = 1;
@@ -190,7 +203,8 @@ int map_freeblock_timer(int tid, int64 tick, int id, intptr_t data) {
* Updates the counter (cell.cell_bl) of how many objects are on a tile.
* @param add Whether the counter should be increased or decreased
**/
-void map_update_cell_bl( struct block_list *bl, bool increase ) {
+static void map_update_cell_bl(struct block_list *bl, bool increase)
+{
#ifdef CELL_NOSTACK
int pos;
@@ -219,7 +233,7 @@ void map_update_cell_bl( struct block_list *bl, bool increase ) {
* Adds a block to the map.
* Returns 0 on success, 1 on failure (illegal coordinates).
*------------------------------------------*/
-int map_addblock(struct block_list* bl)
+static int map_addblock(struct block_list *bl)
{
int16 m, x, y;
int pos;
@@ -267,7 +281,7 @@ int map_addblock(struct block_list* bl)
/*==========================================
* Removes a block from the map.
*------------------------------------------*/
-int map_delblock(struct block_list* bl)
+static int map_delblock(struct block_list *bl)
{
int pos;
nullpo_ret(bl);
@@ -310,7 +324,8 @@ int map_delblock(struct block_list* bl)
* Pass flag as 1 to prevent doing skill->unit_move checks
* (which are executed by default on BL_CHAR types)
*------------------------------------------*/
-int map_moveblock(struct block_list *bl, int x1, int y1, int64 tick) {
+static int map_moveblock(struct block_list *bl, int x1, int y1, int64 tick)
+{
struct status_change *sc = NULL;
int x0, y0;
int moveblock;
@@ -428,7 +443,8 @@ int map_moveblock(struct block_list *bl, int x1, int y1, int64 tick) {
* 0x2 - don't count invinsible units
* TODO: merge with bl_getall_area
*------------------------------------------*/
-int map_count_oncell(int16 m, int16 x, int16 y, int type, int flag) {
+static int map_count_oncell(int16 m, int16 x, int16 y, int type, int flag)
+{
int bx,by;
struct block_list *bl;
int count = 0;
@@ -446,6 +462,11 @@ int map_count_oncell(int16 m, int16 x, int16 y, int type, int flag) {
struct status_change *sc = status->get_sc(bl);
if (sc && (sc->option&OPTION_INVISIBLE))
continue;
+ if (bl->type == BL_NPC) {
+ const struct npc_data *nd = BL_UCCAST(BL_NPC, bl);
+ if (nd->class_ == FAKE_NPC || nd->class_ == HIDDEN_WARP_CLASS)
+ continue;
+ }
}
if (flag&0x1) {
struct unit_data *ud = unit->bl2ud(bl);
@@ -481,7 +502,8 @@ int map_count_oncell(int16 m, int16 x, int16 y, int type, int flag) {
* Looks for a skill unit on a given cell
* flag&1: runs battle_check_target check based on unit->group->target_flag
*/
-struct skill_unit* map_find_skill_unit_oncell(struct block_list* target,int16 x,int16 y,uint16 skill_id,struct skill_unit* out_unit, int flag) {
+static struct skill_unit *map_find_skill_unit_oncell(struct block_list *target, int16 x, int16 y, uint16 skill_id, struct skill_unit *out_unit, int flag)
+{
int16 m,bx,by;
struct block_list *bl;
struct skill_unit *su;
@@ -522,7 +544,8 @@ struct skill_unit* map_find_skill_unit_oncell(struct block_list* target,int16 x,
* @param args Extra arguments for func
* @return Sum of the values returned by func
*/
-static int bl_vforeach(int (*func)(struct block_list*, va_list), int blockcount, int max, va_list args) {
+static int bl_vforeach(int (*func)(struct block_list*, va_list), int blockcount, int max, va_list args)
+{
int i;
int returnCount = 0;
@@ -551,7 +574,8 @@ static int bl_vforeach(int (*func)(struct block_list*, va_list), int blockcount,
* @param args Extra arguments for func
* @return Sum of the values returned by func
*/
-static int map_vforeachinmap(int (*func)(struct block_list*, va_list), int16 m, int type, va_list args) {
+static int map_vforeachinmap(int (*func)(struct block_list*, va_list), int16 m, int type, va_list args)
+{
int i;
int returnCount = 0;
int bsize;
@@ -599,7 +623,8 @@ static int map_vforeachinmap(int (*func)(struct block_list*, va_list), int16 m,
* @param ... Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_foreachinmap(int (*func)(struct block_list*, va_list), int16 m, int type, ...) {
+static int map_foreachinmap(int (*func)(struct block_list*, va_list), int16 m, int type, ...)
+{
int returnCount;
va_list ap;
@@ -610,6 +635,18 @@ int map_foreachinmap(int (*func)(struct block_list*, va_list), int16 m, int type
return returnCount;
}
+static int map_forcountinmap(int (*func)(struct block_list*, va_list), int16 m, int count, int type, ...)
+{
+ int returnCount;
+ va_list ap;
+
+ va_start(ap, type);
+ returnCount = map->vforcountinarea(func, m, 0, 0, map->list[m].xs, map->list[m].ys, count, type, ap);
+ va_end(ap);
+
+ return returnCount;
+}
+
/**
* Applies func to every block_list object of bl_type type on all maps
* of instance instance_id.
@@ -621,7 +658,8 @@ int map_foreachinmap(int (*func)(struct block_list*, va_list), int16 m, int type
* @param ap Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_vforeachininstance(int (*func)(struct block_list*, va_list), int16 instance_id, int type, va_list ap) {
+static int map_vforeachininstance(int (*func)(struct block_list*, va_list), int16 instance_id, int type, va_list ap)
+{
int i;
int returnCount = 0;
@@ -647,7 +685,8 @@ int map_vforeachininstance(int (*func)(struct block_list*, va_list), int16 insta
* @param ... Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_foreachininstance(int (*func)(struct block_list*, va_list), int16 instance_id, int type, ...) {
+static int map_foreachininstance(int (*func)(struct block_list*, va_list), int16 instance_id, int type, ...)
+{
int returnCount;
va_list ap;
@@ -667,7 +706,8 @@ int map_foreachininstance(int (*func)(struct block_list*, va_list), int16 instan
* @param ... Extra arguments for func
* @return Number of found objects
*/
-static int bl_getall_area(int type, int m, int x0, int y0, int x1, int y1, int (*func)(struct block_list*, va_list), ...) {
+static int bl_getall_area(int type, int m, int x0, int y0, int x1, int y1, int (*func)(struct block_list*, va_list), ...)
+{
va_list args;
int bx, by;
struct block_list *bl;
@@ -805,7 +845,8 @@ static int bl_vgetall_inrange(struct block_list *bl, va_list args)
* @param ap Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_vforeachinrange(int (*func)(struct block_list*, va_list), struct block_list* center, int16 range, int type, va_list ap) {
+static int map_vforeachinrange(int (*func)(struct block_list*, va_list), struct block_list *center, int16 range, int type, va_list ap)
+{
int returnCount = 0;
int blockcount = map->bl_list_count;
va_list apcopy;
@@ -833,7 +874,8 @@ int map_vforeachinrange(int (*func)(struct block_list*, va_list), struct block_l
* @param ... Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_foreachinrange(int (*func)(struct block_list*, va_list), struct block_list* center, int16 range, int type, ...) {
+static int map_foreachinrange(int (*func)(struct block_list*, va_list), struct block_list *center, int16 range, int type, ...)
+{
int returnCount;
va_list ap;
@@ -857,7 +899,8 @@ int map_foreachinrange(int (*func)(struct block_list*, va_list), struct block_li
* @param ap Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_vforcountinrange(int (*func)(struct block_list*, va_list), struct block_list* center, int16 range, int count, int type, va_list ap) {
+static int map_vforcountinrange(int (*func)(struct block_list*, va_list), struct block_list *center, int16 range, int count, int type, va_list ap)
+{
int returnCount = 0;
int blockcount = map->bl_list_count;
va_list apcopy;
@@ -887,7 +930,8 @@ int map_vforcountinrange(int (*func)(struct block_list*, va_list), struct block_
* @param ... Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_forcountinrange(int (*func)(struct block_list*, va_list), struct block_list* center, int16 range, int count, int type, ...) {
+static int map_forcountinrange(int (*func)(struct block_list*, va_list), struct block_list *center, int16 range, int count, int type, ...)
+{
int returnCount;
va_list ap;
@@ -933,7 +977,8 @@ static int bl_vgetall_inshootrange(struct block_list *bl, va_list args)
* @param ap Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_vforeachinshootrange(int (*func)(struct block_list*, va_list), struct block_list* center, int16 range, int type, va_list ap) {
+static int map_vforeachinshootrange(int (*func)(struct block_list*, va_list), struct block_list *center, int16 range, int type, va_list ap)
+{
int returnCount = 0;
int blockcount = map->bl_list_count;
va_list apcopy;
@@ -961,7 +1006,8 @@ int map_vforeachinshootrange(int (*func)(struct block_list*, va_list), struct bl
* @param ... Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_foreachinshootrange(int (*func)(struct block_list*, va_list), struct block_list* center, int16 range, int type, ...) {
+static int map_foreachinshootrange(int (*func)(struct block_list*, va_list), struct block_list *center, int16 range, int type, ...)
+{
int returnCount;
va_list ap;
@@ -986,7 +1032,8 @@ int map_foreachinshootrange(int (*func)(struct block_list*, va_list), struct blo
* @param ap Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_vforeachinarea(int (*func)(struct block_list*, va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int type, va_list ap) {
+static int map_vforeachinarea(int (*func)(struct block_list*, va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int type, va_list ap)
+{
int returnCount = 0;
int blockcount = map->bl_list_count;
va_list apcopy;
@@ -1015,7 +1062,8 @@ int map_vforeachinarea(int (*func)(struct block_list*, va_list), int16 m, int16
* @param ... Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_foreachinarea(int (*func)(struct block_list*, va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int type, ...) {
+static int map_foreachinarea(int (*func)(struct block_list*, va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int type, ...)
+{
int returnCount;
va_list ap;
@@ -1042,7 +1090,8 @@ int map_foreachinarea(int (*func)(struct block_list*, va_list), int16 m, int16 x
* @param ap Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_vforcountinarea(int (*func)(struct block_list*,va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int count, int type, va_list ap) {
+static int map_vforcountinarea(int (*func)(struct block_list*, va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int count, int type, va_list ap)
+{
int returnCount = 0;
int blockcount = map->bl_list_count;
va_list apcopy;
@@ -1073,7 +1122,8 @@ int map_vforcountinarea(int (*func)(struct block_list*,va_list), int16 m, int16
* @param ... Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_forcountinarea(int (*func)(struct block_list*,va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int count, int type, ...) {
+static int map_forcountinarea(int (*func)(struct block_list*, va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int count, int type, ...)
+{
int returnCount;
va_list ap;
@@ -1130,7 +1180,8 @@ static int bl_vgetall_inmovearea(struct block_list *bl, va_list args)
* @param ap Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_vforeachinmovearea(int (*func)(struct block_list*, va_list), struct block_list* center, int16 range, int16 dx, int16 dy, int type, va_list ap) {
+static int map_vforeachinmovearea(int (*func)(struct block_list*, va_list), struct block_list *center, int16 range, int16 dx, int16 dy, int type, va_list ap)
+{
int returnCount = 0;
int blockcount = map->bl_list_count;
int m, x0, x1, y0, y1;
@@ -1188,7 +1239,8 @@ int map_vforeachinmovearea(int (*func)(struct block_list*, va_list), struct bloc
* @param ... Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_foreachinmovearea(int (*func)(struct block_list*, va_list), struct block_list* center, int16 range, int16 dx, int16 dy, int type, ...) {
+static int map_foreachinmovearea(int (*func)(struct block_list*, va_list), struct block_list *center, int16 range, int16 dx, int16 dy, int type, ...)
+{
int returnCount;
va_list ap;
@@ -1211,7 +1263,8 @@ int map_foreachinmovearea(int (*func)(struct block_list*, va_list), struct block
* @param ap Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_vforeachincell(int (*func)(struct block_list*, va_list), int16 m, int16 x, int16 y, int type, va_list ap) {
+static int map_vforeachincell(int (*func)(struct block_list*, va_list), int16 m, int16 x, int16 y, int type, va_list ap)
+{
int returnCount = 0;
int blockcount = map->bl_list_count;
va_list apcopy;
@@ -1237,7 +1290,8 @@ int map_vforeachincell(int (*func)(struct block_list*, va_list), int16 m, int16
* @param ... Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_foreachincell(int (*func)(struct block_list*, va_list), int16 m, int16 x, int16 y, int type, ...) {
+static int map_foreachincell(int (*func)(struct block_list*, va_list), int16 m, int16 x, int16 y, int type, ...)
+{
int returnCount;
va_list ap;
@@ -1316,7 +1370,8 @@ static int bl_vgetall_inpath(struct block_list *bl, va_list args)
* @param ap Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_vforeachinpath(int (*func)(struct block_list*, va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int16 range, int length, int type, va_list ap) {
+static int map_vforeachinpath(int (*func)(struct block_list*, va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int16 range, int length, int type, va_list ap)
+{
// [Skotlex]
// check for all targets in the square that
// contains the initial and final positions (area range increased to match the
@@ -1393,7 +1448,8 @@ int map_vforeachinpath(int (*func)(struct block_list*, va_list), int16 m, int16
* @param ... Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_foreachinpath(int (*func)(struct block_list*, va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int16 range, int length, int type, ...) {
+static int map_foreachinpath(int (*func)(struct block_list*, va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int16 range, int length, int type, ...)
+{
int returnCount;
va_list ap;
@@ -1409,7 +1465,7 @@ int map_foreachinpath(int (*func)(struct block_list*, va_list), int16 m, int16 x
/// Generates a new flooritem object id from the interval [MIN_FLOORITEM, MAX_FLOORITEM).
/// Used for floor items, skill units and chatroom objects.
/// @return The new object id
-int map_get_new_object_id(void)
+static int map_get_new_object_id(void)
{
static int last_object_id = MIN_FLOORITEM - 1;
int i;
@@ -1441,7 +1497,7 @@ int map_get_new_object_id(void)
* Timered function to clear the floor (remove remaining item)
* Called each flooritem_lifetime ms
*------------------------------------------*/
-int map_clearflooritem_timer(int tid, int64 tick, int id, intptr_t data)
+static int map_clearflooritem_timer(int tid, int64 tick, int id, intptr_t data)
{
struct block_list *bl = idb_get(map->id_db, id);
struct flooritem_data *fitem = BL_CAST(BL_ITEM, bl);
@@ -1464,7 +1520,7 @@ int map_clearflooritem_timer(int tid, int64 tick, int id, intptr_t data)
/*
* clears a single bl item out of the bazooonga.
*/
-void map_clearflooritem(struct block_list *bl)
+static void map_clearflooritem(struct block_list *bl)
{
struct flooritem_data *fitem = BL_CAST(BL_ITEM, bl);
@@ -1484,7 +1540,8 @@ void map_clearflooritem(struct block_list *bl)
* to place an BL_ITEM object. Scan area is 9x9, returns 1 on success.
* x and y are modified with the target cell when successful.
*------------------------------------------*/
-int map_searchrandfreecell(int16 m, const struct block_list *bl, int16 *x, int16 *y, int stack) {
+static int map_searchrandfreecell(int16 m, const struct block_list *bl, int16 *x, int16 *y, int stack)
+{
int free_cell,i,j;
int free_cells[9][2];
@@ -1514,7 +1571,8 @@ int map_searchrandfreecell(int16 m, const struct block_list *bl, int16 *x, int16
return 1;
}
-int map_count_sub(struct block_list *bl,va_list ap) {
+static int map_count_sub(struct block_list *bl, va_list ap)
+{
return 1;
}
@@ -1530,7 +1588,7 @@ int map_count_sub(struct block_list *bl,va_list ap) {
* &2 = the target should be able to walk to the target tile.
* &4 = there shouldn't be any players around the target tile (use the no_spawn_on_player setting)
*------------------------------------------*/
-int map_search_freecell(struct block_list *src, int16 m, int16 *x,int16 *y, int16 rx, int16 ry, int flag)
+static int map_search_freecell(struct block_list *src, int16 m, int16 *x, int16 *y, int16 rx, int16 ry, int flag)
{
int tries, spawn=0;
int bx, by;
@@ -1604,7 +1662,7 @@ int map_search_freecell(struct block_list *src, int16 m, int16 *x,int16 *y, int1
* flag:
* 0x1 - only count standing units
*------------------------------------------*/
-bool map_closest_freecell(int16 m, const struct block_list *bl, int16 *x, int16 *y, int type, int flag)
+static bool map_closest_freecell(int16 m, const struct block_list *bl, int16 *x, int16 *y, int type, int flag)
{
uint8 dir = 6;
int16 tx;
@@ -1688,8 +1746,9 @@ bool map_closest_freecell(int16 m, const struct block_list *bl, int16 *x, int16
* @m, @x, @y mapid,x,y
* @first_charid, @second_charid, @third_charid, looting priority
* @flag: &1 MVP item. &2 do stacking check.
+ * @showdropeffect: show effect when the item is dropped.
*------------------------------------------*/
-int map_addflooritem(const struct block_list *bl, struct item *item_data, int amount, int16 m, int16 x, int16 y, int first_charid, int second_charid, int third_charid, int flags)
+static int map_addflooritem(const struct block_list *bl, struct item *item_data, int amount, int16 m, int16 x, int16 y, int first_charid, int second_charid, int third_charid, int flags, bool showdropeffect)
{
int r;
struct flooritem_data *fitem=NULL;
@@ -1708,6 +1767,7 @@ int map_addflooritem(const struct block_list *bl, struct item *item_data, int am
fitem->bl.x = x;
fitem->bl.y = y;
fitem->bl.id = map->get_new_object_id();
+ fitem->showdropeffect = showdropeffect;
if(fitem->bl.id==0){
ers_free(map->flooritem_ers, fitem);
return 0;
@@ -1736,7 +1796,7 @@ int map_addflooritem(const struct block_list *bl, struct item *item_data, int am
/**
* @see DBCreateData
*/
-struct DBData create_charid2nick(union DBKey key, va_list args)
+static struct DBData create_charid2nick(union DBKey key, va_list args)
{
struct charid2nick *p;
CREATE(p, struct charid2nick, 1);
@@ -1745,7 +1805,7 @@ struct DBData create_charid2nick(union DBKey key, va_list args)
/// Adds(or replaces) the nick of charid to nick_db and fullfils pending requests.
/// Does nothing if the character is online.
-void map_addnickdb(int charid, const char* nick)
+static void map_addnickdb(int charid, const char *nick)
{
struct charid2nick* p;
struct charid_request* req;
@@ -1769,7 +1829,7 @@ void map_addnickdb(int charid, const char* nick)
/// Removes the nick of charid from nick_db.
/// Sends name to all pending requests on charid.
-void map_delnickdb(int charid, const char* name)
+static void map_delnickdb(int charid, const char *name)
{
struct charid2nick* p;
struct charid_request* req;
@@ -1793,7 +1853,7 @@ void map_delnickdb(int charid, const char* name)
/// Notifies sd of the nick of charid.
/// Uses the name in the character if online.
/// Uses the name in nick_db if offline.
-void map_reqnickdb(struct map_session_data * sd, int charid)
+static void map_reqnickdb(struct map_session_data *sd, int charid)
{
struct charid2nick* p;
struct charid_request* req;
@@ -1822,7 +1882,7 @@ void map_reqnickdb(struct map_session_data * sd, int charid)
/*==========================================
* add bl to id_db
*------------------------------------------*/
-void map_addiddb(struct block_list *bl)
+static void map_addiddb(struct block_list *bl)
{
nullpo_retv(bl);
@@ -1834,7 +1894,7 @@ void map_addiddb(struct block_list *bl)
struct mob_data *md = BL_UCAST(BL_MOB, bl);
idb_put(map->mobid_db,bl->id,bl);
- if( md->state.boss )
+ if (md->state.boss == BTYPE_MVP)
idb_put(map->bossid_db, bl->id, bl);
}
@@ -1847,7 +1907,7 @@ void map_addiddb(struct block_list *bl)
/*==========================================
* remove bl from id_db
*------------------------------------------*/
-void map_deliddb(struct block_list *bl)
+static void map_deliddb(struct block_list *bl)
{
nullpo_retv(bl);
@@ -1869,7 +1929,8 @@ void map_deliddb(struct block_list *bl)
/*==========================================
* Standard call when a player connection is closed.
*------------------------------------------*/
-int map_quit(struct map_session_data *sd) {
+static int map_quit(struct map_session_data *sd)
+{
int i;
nullpo_ret(sd);
@@ -1896,6 +1957,9 @@ int map_quit(struct map_session_data *sd) {
if( sd->bg_id && !sd->bg_queue.arena ) /* TODO: dump this chunk after bg_queue is fully enabled */
bg->team_leave(sd,BGTL_QUIT);
+ if (sd->status.clan_id)
+ clan->member_offline(sd);
+
if (sd->state.autotrade && core->runflag != MAPSERVER_ST_SHUTDOWN && !channel->config->closing)
pc->autotrade_update(sd,PAUC_REMOVE);
@@ -1915,6 +1979,7 @@ int map_quit(struct map_session_data *sd) {
}
npc->script_event(sd, NPCE_LOGOUT);
+ rodex->clean(sd, 0);
//Unit_free handles clearing the player related data,
//map->quit handles extra specific data which is related to quitting normally
@@ -1995,7 +2060,7 @@ int map_quit(struct map_session_data *sd) {
* @return The searched map_session_data, if it exists.
* @retval NULL if the ID is invalid or doesn't belong to a player unit.
*/
-struct map_session_data *map_id2sd(int id)
+static struct map_session_data *map_id2sd(int id)
{
struct block_list *bl = NULL;
if (id <= 0)
@@ -2015,7 +2080,7 @@ struct map_session_data *map_id2sd(int id)
* @return The searched npc_data, if it exists.
* @retval NULL if the ID is invalid or doesn't belong to a NPC.
*/
-struct npc_data *map_id2nd(int id)
+static struct npc_data *map_id2nd(int id)
{
// just a id2bl lookup because there's no npc_db
struct block_list* bl = map->id2bl(id);
@@ -2032,7 +2097,7 @@ struct npc_data *map_id2nd(int id)
* @return The searched mob_data, if it exists.
* @retval NULL if the ID is invalid or doesn't belong to a mob unit.
*/
-struct mob_data *map_id2md(int id)
+static struct mob_data *map_id2md(int id)
{
struct block_list *bl = NULL;
if (id <= 0)
@@ -2052,7 +2117,7 @@ struct mob_data *map_id2md(int id)
* @return The searched flooritem_data, if it exists.
* @retval NULL if the ID is invalid or doesn't belong to a floor item.
*/
-struct flooritem_data *map_id2fi(int id)
+static struct flooritem_data *map_id2fi(int id)
{
struct block_list* bl = map->id2bl(id);
@@ -2066,7 +2131,7 @@ struct flooritem_data *map_id2fi(int id)
* @return The searched chat_data, if it exists.
* @retval NULL if the ID is invalid or doesn't belong to a chat.
*/
-struct chat_data *map_id2cd(int id)
+static struct chat_data *map_id2cd(int id)
{
struct block_list* bl = map->id2bl(id);
@@ -2080,7 +2145,7 @@ struct chat_data *map_id2cd(int id)
* @return The searched skill_unit data, if it exists.
* @retval NULL if the ID is invalid or doesn't belong to a skill unit.
*/
-struct skill_unit *map_id2su(int id)
+static struct skill_unit *map_id2su(int id)
{
struct block_list* bl = map->id2bl(id);
@@ -2094,7 +2159,7 @@ struct skill_unit *map_id2su(int id)
* @return The searched pet_data, if it exists.
* @retval NULL if the ID is invalid or doesn't belong to a pet.
*/
-struct pet_data *map_id2pd(int id)
+static struct pet_data *map_id2pd(int id)
{
struct block_list* bl = map->id2bl(id);
@@ -2108,7 +2173,7 @@ struct pet_data *map_id2pd(int id)
* @return The searched homun_data, if it exists.
* @retval NULL if the ID is invalid or doesn't belong to a homunculus.
*/
-struct homun_data *map_id2hd(int id)
+static struct homun_data *map_id2hd(int id)
{
struct block_list* bl = map->id2bl(id);
@@ -2122,7 +2187,7 @@ struct homun_data *map_id2hd(int id)
* @return The searched mercenary_data, if it exists.
* @retval NULL if the ID is invalid or doesn't belong to a mercenary.
*/
-struct mercenary_data *map_id2mc(int id)
+static struct mercenary_data *map_id2mc(int id)
{
struct block_list* bl = map->id2bl(id);
@@ -2136,7 +2201,7 @@ struct mercenary_data *map_id2mc(int id)
* @return The searched elemental_data, if it exists.
* @retval NULL if the ID is invalid or doesn't belong to an elemental.
*/
-struct elemental_data *map_id2ed(int id)
+static struct elemental_data *map_id2ed(int id)
{
struct block_list* bl = map->id2bl(id);
@@ -2152,7 +2217,7 @@ struct elemental_data *map_id2ed(int id)
* @return The searched block_list, if it exists.
* @retval NULL if the ID is invalid.
*/
-struct block_list *map_id2bl(int id)
+static struct block_list *map_id2bl(int id)
{
return idb_get(map->id_db, id);
}
@@ -2164,13 +2229,14 @@ struct block_list *map_id2bl(int id)
* @retval true if the ID exists and is valid.
* @retval false otherwise.
*/
-bool map_blid_exists(int id)
+static bool map_blid_exists(int id)
{
return (idb_exists(map->id_db,id));
}
/// Returns the nick of the target charid or NULL if unknown (requests the nick to the char server).
-const char *map_charid2nick(int charid) {
+static const char *map_charid2nick(int charid)
+{
struct charid2nick *p;
struct map_session_data* sd;
@@ -2187,7 +2253,7 @@ const char *map_charid2nick(int charid) {
}
/// Returns the struct map_session_data of the charid or NULL if the char is not online.
-struct map_session_data* map_charid2sd(int charid)
+static struct map_session_data *map_charid2sd(int charid)
{
struct block_list *bl = idb_get(map->charid_db, charid);
if (bl)
@@ -2200,7 +2266,7 @@ struct map_session_data* map_charid2sd(int charid)
* (without sensitive case if necessary)
* return map_session_data pointer or NULL
*------------------------------------------*/
-struct map_session_data * map_nick2sd(const char *nick)
+static struct map_session_data *map_nick2sd(const char *nick)
{
struct map_session_data* sd;
struct map_session_data* found_sd;
@@ -2248,7 +2314,7 @@ struct map_session_data * map_nick2sd(const char *nick)
/*==========================================
* Convext Mirror
*------------------------------------------*/
-struct mob_data *map_getmob_boss(int16 m)
+static struct mob_data *map_getmob_boss(int16 m)
{
struct DBIterator *iter;
struct mob_data *md = NULL;
@@ -2266,7 +2332,7 @@ struct mob_data *map_getmob_boss(int16 m)
return (found)? md : NULL;
}
-struct mob_data *map_id2boss(int id)
+static struct mob_data *map_id2boss(int id)
{
struct block_list *bl = NULL;
if (id <= 0)
@@ -2284,7 +2350,7 @@ struct mob_data *map_id2boss(int id)
*
* @return The equivalent race bitmask.
*/
-uint32 map_race_id2mask(int race)
+static uint32 map_race_id2mask(int race)
{
if (race >= RC_FORMLESS && race < RC_MAX)
return 1 << race;
@@ -2312,7 +2378,7 @@ uint32 map_race_id2mask(int race)
/// Applies func to all the players in the db.
/// Stops iterating if func returns -1.
-void map_vforeachpc(int (*func)(struct map_session_data* sd, va_list args), va_list args)
+static void map_vforeachpc(int (*func)(struct map_session_data *sd, va_list args), va_list args)
{
struct DBIterator *iter = db_iterator(map->pc_db);
struct map_session_data *sd = NULL;
@@ -2334,7 +2400,8 @@ void map_vforeachpc(int (*func)(struct map_session_data* sd, va_list args), va_l
/// Applies func to all the players in the db.
/// Stops iterating if func returns -1.
/// @see map_vforeachpc
-void map_foreachpc(int (*func)(struct map_session_data* sd, va_list args), ...) {
+static void map_foreachpc(int (*func)(struct map_session_data *sd, va_list args), ...)
+{
va_list args;
va_start(args, func);
@@ -2344,7 +2411,7 @@ void map_foreachpc(int (*func)(struct map_session_data* sd, va_list args), ...)
/// Applies func to all the mobs in the db.
/// Stops iterating if func returns -1.
-void map_vforeachmob(int (*func)(struct mob_data* md, va_list args), va_list args)
+static void map_vforeachmob(int (*func)(struct mob_data *md, va_list args), va_list args)
{
struct DBIterator *iter = db_iterator(map->mobid_db);
struct mob_data *md = NULL;
@@ -2365,7 +2432,8 @@ void map_vforeachmob(int (*func)(struct mob_data* md, va_list args), va_list arg
/// Applies func to all the mobs in the db.
/// Stops iterating if func returns -1.
/// @see map_vforeachmob
-void map_foreachmob(int (*func)(struct mob_data* md, va_list args), ...) {
+static void map_foreachmob(int (*func)(struct mob_data *md, va_list args), ...)
+{
va_list args;
va_start(args, func);
@@ -2375,7 +2443,7 @@ void map_foreachmob(int (*func)(struct mob_data* md, va_list args), ...) {
/// Applies func to all the npcs in the db.
/// Stops iterating if func returns -1.
-void map_vforeachnpc(int (*func)(struct npc_data* nd, va_list args), va_list args)
+static void map_vforeachnpc(int (*func)(struct npc_data *nd, va_list args), va_list args)
{
struct DBIterator *iter = db_iterator(map->id_db);
struct block_list *bl = NULL;
@@ -2399,7 +2467,8 @@ void map_vforeachnpc(int (*func)(struct npc_data* nd, va_list args), va_list arg
/// Applies func to all the npcs in the db.
/// Stops iterating if func returns -1.
/// @see map_vforeachnpc
-void map_foreachnpc(int (*func)(struct npc_data* nd, va_list args), ...) {
+static void map_foreachnpc(int (*func)(struct npc_data *nd, va_list args), ...)
+{
va_list args;
va_start(args, func);
@@ -2409,7 +2478,7 @@ void map_foreachnpc(int (*func)(struct npc_data* nd, va_list args), ...) {
/// Applies func to everything in the db.
/// Stops iterating gif func returns -1.
-void map_vforeachregen(int (*func)(struct block_list* bl, va_list args), va_list args)
+static void map_vforeachregen(int (*func)(struct block_list *bl, va_list args), va_list args)
{
struct DBIterator *iter = db_iterator(map->regen_db);
struct block_list *bl = NULL;
@@ -2430,7 +2499,8 @@ void map_vforeachregen(int (*func)(struct block_list* bl, va_list args), va_list
/// Applies func to everything in the db.
/// Stops iterating gif func returns -1.
/// @see map_vforeachregen
-void map_foreachregen(int (*func)(struct block_list* bl, va_list args), ...) {
+static void map_foreachregen(int (*func)(struct block_list *bl, va_list args), ...)
+{
va_list args;
va_start(args, func);
@@ -2440,7 +2510,7 @@ void map_foreachregen(int (*func)(struct block_list* bl, va_list args), ...) {
/// Applies func to everything in the db.
/// Stops iterating if func returns -1.
-void map_vforeachiddb(int (*func)(struct block_list* bl, va_list args), va_list args)
+static void map_vforeachiddb(int (*func)(struct block_list *bl, va_list args), va_list args)
{
struct DBIterator *iter = db_iterator(map->id_db);
struct block_list *bl = NULL;
@@ -2461,7 +2531,8 @@ void map_vforeachiddb(int (*func)(struct block_list* bl, va_list args), va_list
/// Applies func to everything in the db.
/// Stops iterating if func returns -1.
/// @see map_vforeachiddb
-void map_foreachiddb(int (*func)(struct block_list* bl, va_list args), ...) {
+static void map_foreachiddb(int (*func)(struct block_list *bl, va_list args), ...)
+{
va_list args;
va_start(args, func);
@@ -2493,7 +2564,8 @@ struct s_mapiterator {
/// @param flags Flags of the iterator
/// @param type Target types
/// @return Iterator
-struct s_mapiterator* mapit_alloc(enum e_mapitflags flags, enum bl_type types) {
+static struct s_mapiterator *mapit_alloc(enum e_mapitflags flags, enum bl_type types)
+{
struct s_mapiterator* iter;
iter = ers_alloc(map->iterator_ers, struct s_mapiterator);
@@ -2508,7 +2580,8 @@ struct s_mapiterator* mapit_alloc(enum e_mapitflags flags, enum bl_type types) {
/// Frees the iterator.
///
/// @param iter Iterator
-void mapit_free(struct s_mapiterator* iter) {
+static void mapit_free(struct s_mapiterator *iter)
+{
nullpo_retv(iter);
dbi_destroy(iter->dbi);
@@ -2520,7 +2593,8 @@ void mapit_free(struct s_mapiterator* iter) {
///
/// @param iter Iterator
/// @return first block_list or NULL
-struct block_list* mapit_first(struct s_mapiterator* iter) {
+static struct block_list *mapit_first(struct s_mapiterator *iter)
+{
struct block_list* bl;
nullpo_retr(NULL,iter);
@@ -2537,7 +2611,8 @@ struct block_list* mapit_first(struct s_mapiterator* iter) {
///
/// @param iter Iterator
/// @return last block_list or NULL
-struct block_list* mapit_last(struct s_mapiterator* iter) {
+static struct block_list *mapit_last(struct s_mapiterator *iter)
+{
struct block_list* bl;
nullpo_retr(NULL,iter);
@@ -2554,7 +2629,8 @@ struct block_list* mapit_last(struct s_mapiterator* iter) {
///
/// @param iter Iterator
/// @return next block_list or NULL
-struct block_list* mapit_next(struct s_mapiterator* iter) {
+static struct block_list *mapit_next(struct s_mapiterator *iter)
+{
struct block_list* bl;
nullpo_retr(NULL,iter);
@@ -2575,7 +2651,8 @@ struct block_list* mapit_next(struct s_mapiterator* iter) {
///
/// @param iter Iterator
/// @return previous block_list or NULL
-struct block_list* mapit_prev(struct s_mapiterator* iter) {
+static struct block_list *mapit_prev(struct s_mapiterator *iter)
+{
struct block_list* bl;
nullpo_retr(NULL,iter);
@@ -2595,7 +2672,8 @@ struct block_list* mapit_prev(struct s_mapiterator* iter) {
///
/// @param iter Iterator
/// @return true if it exists
-bool mapit_exists(struct s_mapiterator* iter) {
+static bool mapit_exists(struct s_mapiterator *iter)
+{
nullpo_retr(false,iter);
return dbi_exists(iter->dbi);
@@ -2604,7 +2682,8 @@ bool mapit_exists(struct s_mapiterator* iter) {
/*==========================================
* Add npc-bl to id_db, basically register npc to map
*------------------------------------------*/
-bool map_addnpc(int16 m,struct npc_data *nd) {
+static bool map_addnpc(int16 m, struct npc_data *nd)
+{
nullpo_ret(nd);
if( m < 0 || m >= map->count )
@@ -2626,7 +2705,8 @@ bool map_addnpc(int16 m,struct npc_data *nd) {
*-----------------------------------------*/
// Stores the spawn data entry in the mob list.
// Returns the index of successful, or -1 if the list was full.
-int map_addmobtolist(unsigned short m, struct spawn_data *spawn) {
+static int map_addmobtolist(unsigned short m, struct spawn_data *spawn)
+{
int i;
nullpo_retr(-1, spawn);
ARR_FIND( 0, MAX_MOB_LIST_PER_MAP, i, map->list[m].moblist[i] == NULL );
@@ -2637,7 +2717,8 @@ int map_addmobtolist(unsigned short m, struct spawn_data *spawn) {
return -1;
}
-void map_spawnmobs(int16 m) {
+static void map_spawnmobs(int16 m)
+{
int i, k=0;
if (map->list[m].mob_delete_timer != INVALID_TIMER) {
//Mobs have not been removed yet [Skotlex]
@@ -2656,7 +2737,7 @@ void map_spawnmobs(int16 m) {
}
}
-int map_removemobs_sub(struct block_list *bl, va_list ap)
+static int map_removemobs_sub(struct block_list *bl, va_list ap)
{
struct mob_data *md = NULL;
nullpo_ret(bl);
@@ -2685,7 +2766,8 @@ int map_removemobs_sub(struct block_list *bl, va_list ap)
return 1;
}
-int map_removemobs_timer(int tid, int64 tick, int id, intptr_t data) {
+static int map_removemobs_timer(int tid, int64 tick, int id, intptr_t data)
+{
int count;
const int16 m = id;
@@ -2709,7 +2791,8 @@ int map_removemobs_timer(int tid, int64 tick, int id, intptr_t data) {
return 1;
}
-void map_removemobs(int16 m) {
+static void map_removemobs(int16 m)
+{
Assert_retv(m >= 0 && m < map->count);
if (map->list[m].mob_delete_timer != INVALID_TIMER) // should never happen
return; //Mobs are already scheduled for removal
@@ -2720,7 +2803,8 @@ void map_removemobs(int16 m) {
/*==========================================
* Hookup, get map_id from map_name
*------------------------------------------*/
-int16 map_mapname2mapid(const char* name) {
+static int16 map_mapname2mapid(const char *name)
+{
unsigned short map_index;
map_index = mapindex->name2id(name);
if (!map_index)
@@ -2731,7 +2815,8 @@ int16 map_mapname2mapid(const char* name) {
/*==========================================
* Returns the map of the given mapindex. [Skotlex]
*------------------------------------------*/
-int16 map_mapindex2mapid(unsigned short map_index) {
+static int16 map_mapindex2mapid(unsigned short map_index)
+{
if (!map_index || map_index >= MAX_MAPINDEX)
return -1;
@@ -2742,7 +2827,8 @@ int16 map_mapindex2mapid(unsigned short map_index) {
/*==========================================
* Switching Ip, port ? (like changing map_server) get ip/port from map_name
*------------------------------------------*/
-int map_mapname2ipport(unsigned short name, uint32* ip, uint16* port) {
+static int map_mapname2ipport(unsigned short name, uint32 *ip, uint16 *port)
+{
struct map_data_other_server *mdos;
nullpo_retr(-1, ip);
@@ -2756,9 +2842,9 @@ int map_mapname2ipport(unsigned short name, uint32* ip, uint16* port) {
}
/*==========================================
-* Checks if both dirs point in the same direction.
-*------------------------------------------*/
-int map_check_dir(int s_dir,int t_dir)
+ * Checks if both dirs point in the same direction.
+ *------------------------------------------*/
+static int map_check_dir(int s_dir, int t_dir)
{
if(s_dir == t_dir)
return 0;
@@ -2778,7 +2864,7 @@ int map_check_dir(int s_dir,int t_dir)
/*==========================================
* Returns the direction of the given cell, relative to 'src'
*------------------------------------------*/
-uint8 map_calc_dir(struct block_list* src, int16 x, int16 y)
+static uint8 map_calc_dir(struct block_list *src, int16 x, int16 y)
{
uint8 dir = 0;
int dx, dy;
@@ -2820,7 +2906,7 @@ uint8 map_calc_dir(struct block_list* src, int16 x, int16 y)
* Randomizes target cell x,y to a random walkable cell that
* has the same distance from object as given coordinates do. [Skotlex]
*------------------------------------------*/
-int map_random_dir(struct block_list *bl, int16 *x, int16 *y)
+static int map_random_dir(struct block_list *bl, int16 *x, int16 *y)
{
short xi;
short yi;
@@ -2856,7 +2942,8 @@ int map_random_dir(struct block_list *bl, int16 *x, int16 *y)
}
// gat system
-struct mapcell map_gat2cell(int gat) {
+static struct mapcell map_gat2cell(int gat)
+{
struct mapcell cell;
memset(&cell,0,sizeof(struct mapcell));
@@ -2877,7 +2964,8 @@ struct mapcell map_gat2cell(int gat) {
return cell;
}
-int map_cell2gat(struct mapcell cell) {
+static int map_cell2gat(struct mapcell cell)
+{
if( cell.walkable == 1 && cell.shootable == 1 && cell.water == 0 ) return 0;
if( cell.walkable == 0 && cell.shootable == 0 && cell.water == 0 ) return 1;
if( cell.walkable == 1 && cell.shootable == 1 && cell.water == 1 ) return 3;
@@ -2886,21 +2974,26 @@ int map_cell2gat(struct mapcell cell) {
ShowWarning("map_cell2gat: cell has no matching gat type\n");
return 1; // default to 'wall'
}
-void map_cellfromcache(struct map_data *m) {
- struct map_cache_map_info *info;
+/**
+ * Extracts a map's cell data from its compressed mapcache.
+ *
+ * @param[in, out] m The target map.
+ */
+static void map_cellfromcache(struct map_data *m)
+{
nullpo_retv(m);
- info = (struct map_cache_map_info *)m->cellPos;
- if (info) {
+ if (m->cell_buf.data != NULL) {
char decode_buffer[MAX_MAP_SIZE];
unsigned long size, xy;
int i;
- size = (unsigned long)info->xs*(unsigned long)info->ys;
+ size = (unsigned long)m->xs * (unsigned long)m->ys;
// TO-DO: Maybe handle the scenario, if the decoded buffer isn't the same size as expected? [Shinryo]
- grfio->decode_zip(decode_buffer, &size, m->cellPos+sizeof(struct map_cache_map_info), info->len);
+ grfio->decode_zip(decode_buffer, &size, m->cell_buf.data, m->cell_buf.len);
+
CREATE(m->cell, struct mapcell, size);
// Set cell properties
@@ -2920,11 +3013,13 @@ void map_cellfromcache(struct map_data *m) {
/*==========================================
* Confirm if celltype in (m,x,y) match the one given in cellchk
*------------------------------------------*/
-int map_getcell(int16 m, const struct block_list *bl, int16 x, int16 y, cell_chk cellchk) {
+static int map_getcell(int16 m, const struct block_list *bl, int16 x, int16 y, cell_chk cellchk)
+{
return (m < 0 || m >= map->count) ? 0 : map->list[m].getcellp(&map->list[m], bl, x, y, cellchk);
}
-int map_getcellp(struct map_data* m, const struct block_list *bl, int16 x, int16 y, cell_chk cellchk) {
+static int map_getcellp(struct map_data *m, const struct block_list *bl, int16 x, int16 y, cell_chk cellchk)
+{
struct mapcell cell;
nullpo_ret(m);
@@ -2992,7 +3087,8 @@ int map_getcellp(struct map_data* m, const struct block_list *bl, int16 x, int16
}
/* [Ind/Hercules] */
-int map_sub_getcellp(struct map_data* m, const struct block_list *bl, int16 x, int16 y, cell_chk cellchk) {
+static int map_sub_getcellp(struct map_data *m, const struct block_list *bl, int16 x, int16 y, cell_chk cellchk)
+{
nullpo_ret(m);
map->cellfromcache(m);
m->getcellp = map->getcellp;
@@ -3005,7 +3101,8 @@ int map_sub_getcellp(struct map_data* m, const struct block_list *bl, int16 x, i
* 'cell' - which flag to modify
* 'flag' - true = on, false = off
*------------------------------------------*/
-void map_setcell(int16 m, int16 x, int16 y, cell_t cell, bool flag) {
+static void map_setcell(int16 m, int16 x, int16 y, cell_t cell, bool flag)
+{
int j;
if( m < 0 || m >= map->count || x < 0 || x >= map->list[m].xs || y < 0 || y >= map->list[m].ys )
@@ -3031,7 +3128,8 @@ void map_setcell(int16 m, int16 x, int16 y, cell_t cell, bool flag) {
break;
}
}
-void map_sub_setcell(int16 m, int16 x, int16 y, cell_t cell, bool flag) {
+static void map_sub_setcell(int16 m, int16 x, int16 y, cell_t cell, bool flag)
+{
if( m < 0 || m >= map->count || x < 0 || x >= map->list[m].xs || y < 0 || y >= map->list[m].ys )
return;
@@ -3040,7 +3138,8 @@ void map_sub_setcell(int16 m, int16 x, int16 y, cell_t cell, bool flag) {
map->list[m].getcellp = map->getcellp;
map->list[m].setcell(m,x,y,cell,flag);
}
-void map_setgatcell(int16 m, int16 x, int16 y, int gat) {
+static void map_setgatcell(int16 m, int16 x, int16 y, int gat)
+{
int j;
struct mapcell cell;
@@ -3056,9 +3155,9 @@ void map_setgatcell(int16 m, int16 x, int16 y, int gat) {
}
/*==========================================
-* Invisible Walls
-*------------------------------------------*/
-void map_iwall_nextxy(int16 x, int16 y, int8 dir, int pos, int16 *x1, int16 *y1)
+ * Invisible Walls
+ *------------------------------------------*/
+static void map_iwall_nextxy(int16 x, int16 y, int8 dir, int pos, int16 *x1, int16 *y1)
{
nullpo_retv(x1);
nullpo_retv(y1);
@@ -3078,7 +3177,7 @@ void map_iwall_nextxy(int16 x, int16 y, int8 dir, int pos, int16 *x1, int16 *y1)
*y1 = y + pos;
}
-bool map_iwall_set(int16 m, int16 x, int16 y, int size, int8 dir, bool shootable, const char* wall_name)
+static bool map_iwall_set(int16 m, int16 x, int16 y, int size, int8 dir, bool shootable, const char *wall_name)
{
struct iwall_data *iwall;
int i;
@@ -3122,7 +3221,7 @@ bool map_iwall_set(int16 m, int16 x, int16 y, int size, int8 dir, bool shootable
return true;
}
-void map_iwall_get(struct map_session_data *sd)
+static void map_iwall_get(struct map_session_data *sd)
{
struct iwall_data *iwall;
struct DBIterator *iter;
@@ -3147,13 +3246,13 @@ void map_iwall_get(struct map_session_data *sd)
dbi_destroy(iter);
}
-void map_iwall_remove(const char *wall_name)
+static bool map_iwall_remove(const char *wall_name)
{
struct iwall_data *iwall;
int16 i, x1, y1;
if( (iwall = (struct iwall_data *)strdb_get(map->iwall_db, wall_name)) == NULL )
- return; // Nothing to do
+ return false;
for( i = 0; i < iwall->size; i++ ) {
map->iwall_nextxy(iwall->x, iwall->y, iwall->dir, i, &x1, &y1);
@@ -3166,12 +3265,13 @@ void map_iwall_remove(const char *wall_name)
map->list[iwall->m].iwall_num--;
strdb_remove(map->iwall_db, iwall->wall_name);
+ return true;
}
/**
* @see DBCreateData
*/
-struct DBData create_map_data_other_server(union DBKey key, va_list args)
+static struct DBData create_map_data_other_server(union DBKey key, va_list args)
{
struct map_data_other_server *mdos;
unsigned short map_index = (unsigned short)key.ui;
@@ -3184,7 +3284,7 @@ struct DBData create_map_data_other_server(union DBKey key, va_list args)
/*==========================================
* Add mapindex to db of another map server
*------------------------------------------*/
-int map_setipport(unsigned short map_index, uint32 ip, uint16 port)
+static int map_setipport(unsigned short map_index, uint32 ip, uint16 port)
{
struct map_data_other_server *mdos;
@@ -3206,7 +3306,7 @@ int map_setipport(unsigned short map_index, uint32 ip, uint16 port)
* Delete all the other maps server management
* @see DBApply
*/
-int map_eraseallipport_sub(union DBKey key, struct DBData *data, va_list va)
+static int map_eraseallipport_sub(union DBKey key, struct DBData *data, va_list va)
{
struct map_data_other_server *mdos = DB->data2ptr(data);
nullpo_ret(mdos);
@@ -3217,7 +3317,8 @@ int map_eraseallipport_sub(union DBKey key, struct DBData *data, va_list va)
return 0;
}
-int map_eraseallipport(void) {
+static int map_eraseallipport(void)
+{
map->map_db->foreach(map->map_db,map->eraseallipport_sub);
return 1;
}
@@ -3225,7 +3326,8 @@ int map_eraseallipport(void) {
/*==========================================
* Delete mapindex from db of another map server
*------------------------------------------*/
-int map_eraseipport(unsigned short map_index, uint32 ip, uint16 port) {
+static int map_eraseipport(unsigned short map_index, uint32 ip, uint16 port)
+{
struct map_data_other_server *mdos;
mdos = (struct map_data_other_server*)uidb_get(map->map_db,(unsigned int)map_index);
@@ -3240,97 +3342,125 @@ int map_eraseipport(unsigned short map_index, uint32 ip, uint16 port) {
return 0;
}
-/*==========================================
- * [Shinryo]: Init the mapcache
- *------------------------------------------*/
-char *map_init_mapcache(FILE *fp) {
- struct map_cache_main_header header;
- size_t size = 0;
- char *buffer;
-
- // No file open? Return..
- nullpo_ret(fp);
+/**
+ * Reads a map's compressed cell data from its mapcache file.
+ *
+ * @param[in,out] m The target map.
+ * @return The loading success state.
+ * @retval false in case of errors.
+ */
+static bool map_readfromcache(struct map_data *m)
+{
+ unsigned int file_size;
+ char file_path[256];
+ FILE *fp = NULL;
+ bool retval = false;
+ int16 version;
- // Get file size
- fseek(fp, 0, SEEK_END);
- size = ftell(fp);
- fseek(fp, 0, SEEK_SET);
+ nullpo_retr(false, m);
- // Allocate enough space
- CREATE(buffer, char, size);
+ snprintf(file_path, sizeof(file_path), "%s%s%s.%s", "maps/", DBPATH, m->name, "mcache");
+ fp = fopen(file_path, "rb");
- // No memory? Return..
- nullpo_ret(buffer);
+ if (fp == NULL) {
+ ShowWarning("map_readfromcache: Could not open the mapcache file for map '%s' at path '%s'.\n", m->name, file_path);
+ return false;
+ }
- // Read file into buffer..
- if(fread(buffer, sizeof(char), size, fp) != size) {
- ShowError("map_init_mapcache: Could not read entire mapcache file\n");
- aFree(buffer);
- return NULL;
+ if (fread(&version, sizeof(version), 1, fp) < 1) {
+ ShowError("map_readfromcache: Could not read file version for map '%s'.\n", m->name);
+ fclose(fp);
+ return false;
}
- rewind(fp);
+ fseek(fp, 0, SEEK_END);
+ file_size = (unsigned int)ftell(fp);
+ fseek(fp, 0, SEEK_SET); // Rewind file pointer before passing it to the read function.
- // Get main header to verify if data is corrupted
- if( fread(&header, sizeof(header), 1, fp) != 1 ) {
- ShowError("map_init_mapcache: Error obtaining main header!\n");
- aFree(buffer);
- return NULL;
- }
- if( GetULong((unsigned char *)&(header.file_size)) != size ) {
- ShowError("map_init_mapcache: Map cache is corrupted!\n");
- aFree(buffer);
- return NULL;
+ switch(version) {
+ case 1:
+ retval = map->readfromcache_v1(fp, m, file_size);
+ break;
+ default:
+ ShowError("map_readfromcache: Mapcache file has unknown version '%d' for map '%s'.\n", version, m->name);
+ break;
}
- return buffer;
+ fclose(fp);
+ return retval;
}
-/*==========================================
- * Map cache reading
- * [Shinryo]: Optimized some behaviour to speed this up
- *==========================================*/
-int map_readfromcache(struct map_data *m, char *buffer) {
- int i;
- struct map_cache_main_header *header = (struct map_cache_main_header *)buffer;
- struct map_cache_map_info *info = NULL;
- char *p = buffer + sizeof(struct map_cache_main_header);
-
- nullpo_ret(m);
- nullpo_ret(buffer);
-
- for(i = 0; i < header->map_count; i++) {
- info = (struct map_cache_map_info *)p;
+/**
+ * Reads a map's compressed cell data from its mapcache file (file format
+ * version 1).
+ *
+ * @param[in] fp The file pointer to read from (opened and closed by
+ * the caller).
+ * @param[in,out] m The target map.
+ * @param[in] file_size The size of the file to load from.
+ * @return The loading success state.
+ * @retval false in case of errors.
+ */
+static bool map_readfromcache_v1(FILE *fp, struct map_data *m, unsigned int file_size)
+{
+ struct map_cache_header mheader = { 0 };
+ uint8 md5buf[16] = { 0 };
+ int map_size;
+ nullpo_retr(false, fp);
+ nullpo_retr(false, m);
+
+ if (file_size <= sizeof(mheader) || fread(&mheader, sizeof(mheader), 1, fp) < 1) {
+ ShowError("map_readfromcache: Failed to read cache header for map '%s'.\n", m->name);
+ return false;
+ }
- if( strcmp(m->name, info->name) == 0 )
- break; // Map found
+ if (mheader.len <= 0) {
+ ShowError("map_readfromcache: A file with negative or zero compressed length passed '%d'.\n", mheader.len);
+ return false;
+ }
- // Jump to next entry..
- p += sizeof(struct map_cache_map_info) + info->len;
+ if (file_size < sizeof(mheader) + mheader.len) {
+ ShowError("map_readfromcache: An incomplete file passed for map '%s'.\n", m->name);
+ return false;
}
- if( info && i < header->map_count ) {
- unsigned long size;
+ if (mheader.ys <= 0 || mheader.xs <= 0) {
+ ShowError("map_readfromcache: A map with invalid size passed '%s' xs: '%d' ys: '%d'.\n", m->name, mheader.xs, mheader.ys);
+ return false;
+ }
- if( info->xs <= 0 || info->ys <= 0 )
- return 0;// Invalid
+ m->xs = mheader.xs;
+ m->ys = mheader.ys;
+ map_size = (int)mheader.xs * (int)mheader.ys;
- m->xs = info->xs;
- m->ys = info->ys;
- size = (unsigned long)info->xs*(unsigned long)info->ys;
+ if (map_size > MAX_MAP_SIZE) {
+ ShowWarning("map_readfromcache: %s exceeded MAX_MAP_SIZE of %d.\n", m->name, MAX_MAP_SIZE);
+ return false;
+ }
- if(size > MAX_MAP_SIZE) {
- ShowWarning("map_readfromcache: %s exceeded MAX_MAP_SIZE of %d\n", info->name, MAX_MAP_SIZE);
- return 0; // Say not found to remove it from list.. [Shinryo]
- }
+ CREATE(m->cell_buf.data, uint8, mheader.len);
+ m->cell_buf.len = mheader.len;
+ if (fread(m->cell_buf.data, mheader.len, 1, fp) < 1) {
+ ShowError("mapreadfromcache: Could not load the compressed cell data for map '%s'.\n", m->name);
+ aFree(m->cell_buf.data);
+ m->cell_buf.data = NULL;
+ m->cell_buf.len = 0;
+ return false;
+ }
- m->cellPos = p;
- m->cell = (struct mapcell *)0xdeadbeaf;
+ md5->binary(m->cell_buf.data, m->cell_buf.len, md5buf);
- return 1;
+ if (memcmp(md5buf, mheader.md5_checksum, sizeof(md5buf)) != 0) {
+ ShowError("mapreadfromcache: md5 checksum check failed for map '%s'\n", m->name);
+ aFree(m->cell_buf.data);
+ m->cell_buf.data = NULL;
+ m->cell_buf.len = 0;
+ return false;
}
- return 0; // Not found
+ m->cell = (struct mapcell *)0xdeadbeaf;
+
+ return true;
}
/**
@@ -3341,7 +3471,7 @@ int map_readfromcache(struct map_data *m, char *buffer) {
* @param mapname The new map's name.
* @return success state.
*/
-int map_addmap(const char *mapname)
+static int map_addmap(const char *mapname)
{
map->list[map->count].instance_id = -1;
mapindex->getmapname(mapname, map->list[map->count++].name);
@@ -3353,7 +3483,7 @@ int map_addmap(const char *mapname)
*
* @param id The map ID.
*/
-void map_delmapid(int id)
+static void map_delmapid(int id)
{
Assert_retv(id >= 0 && id < map->count);
ShowNotice("Removing map [ %s ] from maplist"CL_CLL"\n",map->list[id].name);
@@ -3367,7 +3497,7 @@ void map_delmapid(int id)
* @param mapname The name of the map to remove.
* @return the number of removed maps.
*/
-int map_delmap(const char *mapname)
+static int map_delmap(const char *mapname)
{
int i;
char map_name[MAP_NAME_LENGTH];
@@ -3391,7 +3521,8 @@ int map_delmap(const char *mapname)
/**
*
**/
-void map_zone_clear_single(struct map_zone_data *zone) {
+static void map_zone_clear_single(struct map_zone_data *zone)
+{
int i;
nullpo_retv(zone);
@@ -3433,7 +3564,7 @@ void map_zone_clear_single(struct map_zone_data *zone) {
/**
*
**/
-void map_zone_db_clear(void)
+static void map_zone_db_clear(void)
{
struct DBIterator *iter = db_iterator(map->zone_db);
struct map_zone_data *zone = NULL;
@@ -3451,7 +3582,8 @@ void map_zone_db_clear(void)
/* clear the main zone stuff */
map->zone_clear_single(&map->zone_all);
}
-void map_clean(int i) {
+static void map_clean(int i)
+{
int v;
Assert_retv(i >= 0 && i < map->count);
if(map->list[i].cell && map->list[i].cell != (struct mapcell *)0xdeadbeaf) aFree(map->list[i].cell);
@@ -3502,7 +3634,8 @@ void map_clean(int i) {
if( map->list[i].channel )
channel->delete(map->list[i].channel);
}
-void do_final_maps(void) {
+static void do_final_maps(void)
+{
int i, v = 0;
for( i = 0; i < map->count; i++ ) {
@@ -3561,8 +3694,7 @@ void do_final_maps(void) {
if( map->list[i].channel )
channel->delete(map->list[i].channel);
- if( map->list[i].qi_data )
- aFree(map->list[i].qi_data);
+ quest->questinfo_vector_clear(i);
HPM->data_store_destroy(&map->list[i].hdata);
}
@@ -3570,8 +3702,36 @@ void do_final_maps(void) {
map->zone_db_clear();
}
+
+static void map_zonedb_reload(void)
+{
+ // first, reset maps to their initial zones:
+ for (int i = 0; i < map->count; i++) {
+ map->zone_remove_all(i);
+
+ if (battle_config.pk_mode) {
+ map->list[i].flag.pvp = 1;
+ map->list[i].zone = &map->zone_pk;
+ } else {
+ map->list[i].flag.pvp = 0;
+ map->list[i].zone = &map->zone_all;
+ }
+
+ map->list[i].prev_zone = map->list[i].zone;
+ }
+
+ // now it's safe to remove the zones:
+ map->zone_db_clear();
+
+ // then reload everything from scratch:
+ map->zone_db = strdb_alloc(DB_OPT_DUP_KEY | DB_OPT_RELEASE_DATA, MAP_ZONE_NAME_LENGTH);
+ map->read_zone_db();
+}
+
+
/// Initializes map flags and adjusts them depending on configuration.
-void map_flags_init(void) {
+static void map_flags_init(void)
+{
int i, v = 0;
for( i = 0; i < map->count; i++ ) {
@@ -3631,11 +3791,7 @@ void map_flags_init(void) {
map->list[i].short_damage_rate = 100;
map->list[i].long_damage_rate = 100;
- if( map->list[i].qi_data )
- aFree(map->list[i].qi_data);
-
- map->list[i].qi_data = NULL;
- map->list[i].qi_count = 0;
+ VECTOR_INIT(map->list[i].qi_data);
}
}
@@ -3647,7 +3803,7 @@ void map_flags_init(void) {
* Assumed path for file is data/mapname.rsw
* Credits to LittleWolf
*/
-int map_waterheight(char* mapname)
+static int map_waterheight(char *mapname)
{
char fn[256];
char *rsw = NULL;
@@ -3675,7 +3831,7 @@ int map_waterheight(char* mapname)
/*==================================
* .GAT format
*----------------------------------*/
-int map_readgat (struct map_data* m)
+static int map_readgat(struct map_data *m)
{
char filename[256];
uint8* gat;
@@ -3719,12 +3875,14 @@ int map_readgat (struct map_data* m)
/*======================================
* Add/Remove map to the map_db
*--------------------------------------*/
-void map_addmap2db(struct map_data *m) {
+static void map_addmap2db(struct map_data *m)
+{
nullpo_retv(m);
map->index2mapid[m->index] = m->m;
}
-void map_removemapdb(struct map_data *m) {
+static void map_removemapdb(struct map_data *m)
+{
nullpo_retv(m);
map->index2mapid[m->index] = -1;
}
@@ -3732,28 +3890,15 @@ void map_removemapdb(struct map_data *m) {
/*======================================
* Initiate maps loading stage
*--------------------------------------*/
-int map_readallmaps (void) {
+static int map_readallmaps(void)
+{
int i;
- FILE* fp=NULL;
int maps_removed = 0;
- if( map->enable_grf )
+ if (map->enable_grf) {
ShowStatus("Loading maps (using GRF files)...\n");
- else {
- char mapcachefilepath[256];
- snprintf(mapcachefilepath, 256, "%s/%s%s", map->db_path, DBPATH, "map_cache.dat");
- ShowStatus("Loading maps (using %s as map cache)...\n", mapcachefilepath);
- if( (fp = fopen(mapcachefilepath, "rb")) == NULL ) {
- ShowFatalError("Unable to open map cache file "CL_WHITE"%s"CL_RESET"\n", mapcachefilepath);
- exit(EXIT_FAILURE); //No use launching server if maps can't be read.
- }
-
- // Init mapcache data.. [Shinryo]
- map->cache_buffer = map->init_mapcache(fp);
- if(!map->cache_buffer) {
- ShowFatalError("Failed to initialize mapcache data (%s)..\n", mapcachefilepath);
- exit(EXIT_FAILURE);
- }
+ } else {
+ ShowStatus("Loading maps using map cache files...\n");
}
for(i = 0; i < map->count; i++) {
@@ -3767,7 +3912,7 @@ int map_readallmaps (void) {
if( !
(map->enable_grf?
map->readgat(&map->list[i])
- :map->readfromcache(&map->list[i], map->cache_buffer))
+ :map->readfromcache(&map->list[i]))
) {
map->delmapid(i);
maps_removed++;
@@ -3809,10 +3954,6 @@ int map_readallmaps (void) {
// intialization and configuration-dependent adjustments of mapflags
map->flags_init();
- if( !map->enable_grf ) {
- fclose(fp);
- }
-
// finished map loading
ShowInfo("Successfully loaded '"CL_WHITE"%d"CL_RESET"' maps."CL_CLL"\n",map->count);
instance->start_id = map->count; // Next Map Index will be instances
@@ -3832,7 +3973,7 @@ int map_readallmaps (void) {
*
* @retval false in case of error.
*/
-bool map_config_read_console(const char *filename, struct config_t *config, bool imported)
+static bool map_config_read_console(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
@@ -3866,7 +4007,7 @@ bool map_config_read_console(const char *filename, struct config_t *config, bool
*
* @retval false in case of error.
*/
-bool map_config_read_connection(const char *filename, struct config_t *config, bool imported)
+static bool map_config_read_connection(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
@@ -3899,7 +4040,7 @@ bool map_config_read_connection(const char *filename, struct config_t *config, b
*
* @retval false in case of error.
*/
-bool map_config_read_inter(const char *filename, struct config_t *config, bool imported)
+static bool map_config_read_inter(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
const char *str = NULL;
@@ -3949,7 +4090,7 @@ bool map_config_read_inter(const char *filename, struct config_t *config, bool i
*
* @retval false in case of error.
*/
-bool map_config_read_database(const char *filename, struct config_t *config, bool imported)
+static bool map_config_read_database(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
@@ -3989,7 +4130,7 @@ bool map_config_read_database(const char *filename, struct config_t *config, boo
*
* @retval false in case of error.
*/
-bool map_config_read_map_list(const char *filename, struct config_t *config, bool imported)
+static bool map_config_read_map_list(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
int i, count = 0;
@@ -4064,7 +4205,7 @@ bool map_config_read_map_list(const char *filename, struct config_t *config, boo
*
* @retval false in case of error.
*/
-bool map_config_read(const char *filename, bool imported)
+static bool map_config_read(const char *filename, bool imported)
{
struct config_t config;
struct config_setting_t *setting = NULL;
@@ -4124,7 +4265,7 @@ bool map_config_read(const char *filename, bool imported)
*
* @retval false in case of error.
*/
-bool map_read_npclist(const char *filename, bool imported)
+static bool map_read_npclist(const char *filename, bool imported)
{
struct config_t config;
struct config_setting_t *setting = NULL;
@@ -4211,7 +4352,8 @@ bool map_read_npclist(const char *filename, bool imported)
*
* @param clear whether to clear the script list before reloading.
*/
-void map_reloadnpc(bool clear) {
+static void map_reloadnpc(bool clear)
+{
int i;
if (clear)
npc->clearsrcfile();
@@ -4236,7 +4378,7 @@ void map_reloadnpc(bool clear) {
*
* @retval false in case of error.
*/
-bool inter_config_read(const char *filename, bool imported)
+static bool inter_config_read(const char *filename, bool imported)
{
struct config_t config;
const struct config_setting_t *setting = NULL;
@@ -4287,7 +4429,7 @@ bool inter_config_read(const char *filename, bool imported)
*
* @retval false in case of error.
*/
-bool inter_config_read_connection(const char *filename, const struct config_t *config, bool imported)
+static bool inter_config_read_connection(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL;
@@ -4319,7 +4461,7 @@ bool inter_config_read_connection(const char *filename, const struct config_t *c
*
* @retval false in case of error.
*/
-bool inter_config_read_database_names(const char *filename, const struct config_t *config, bool imported)
+static bool inter_config_read_database_names(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL;
bool retval = true;
@@ -4337,6 +4479,7 @@ bool inter_config_read_database_names(const char *filename, const struct config_
libconfig->setting_lookup_mutable_string(setting, "autotrade_merchants_db", map->autotrade_merchants_db, sizeof(map->autotrade_merchants_db));
libconfig->setting_lookup_mutable_string(setting, "autotrade_data_db", map->autotrade_data_db, sizeof(map->autotrade_data_db));
libconfig->setting_lookup_mutable_string(setting, "npc_market_data_db", map->npc_market_data_db, sizeof(map->npc_market_data_db));
+ libconfig->setting_lookup_mutable_string(setting, "npc_barter_data_db", map->npc_barter_data_db, sizeof(map->npc_barter_data_db));
if (!mapreg->config_read(filename, setting, imported))
retval = false;
@@ -4353,7 +4496,7 @@ bool inter_config_read_database_names(const char *filename, const struct config_
/*=======================================
* MySQL Init
*---------------------------------------*/
-int map_sql_init(void)
+static int map_sql_init(void)
{
// main db connection
map->mysql_handle = SQL->Malloc();
@@ -4370,7 +4513,7 @@ int map_sql_init(void)
return 0;
}
-int map_sql_close(void)
+static int map_sql_close(void)
{
ShowStatus("Close Map DB Connection....\n");
SQL->Free(map->mysql_handle);
@@ -4388,7 +4531,8 @@ int map_sql_close(void)
*
* @return the newly created zone from merging main and other
**/
-struct map_zone_data *map_merge_zone(struct map_zone_data *main, struct map_zone_data *other) {
+static struct map_zone_data *map_merge_zone(struct map_zone_data *main, struct map_zone_data *other)
+{
char newzone[MAP_ZONE_NAME_LENGTH];
struct map_zone_data *zone = NULL;
int cursor, i, j;
@@ -4396,7 +4540,7 @@ struct map_zone_data *map_merge_zone(struct map_zone_data *main, struct map_zone
nullpo_retr(NULL, main);
nullpo_retr(NULL, other);
- snprintf(newzone, MAP_ZONE_NAME_LENGTH, "%s+%s", main->name, other->name);
+ safesnprintf(newzone, MAP_ZONE_NAME_LENGTH, "%s+%s", main->name, other->name);
if( (zone = strdb_get(map->zone_db, newzone)) )
return zone;/* this zone has already been merged */
@@ -4485,10 +4629,12 @@ struct map_zone_data *map_merge_zone(struct map_zone_data *main, struct map_zone
return zone;
}
-void map_zone_change2(int m, struct map_zone_data *zone)
+static void map_zone_change2(int m, struct map_zone_data *zone)
{
const char *empty = "";
+ if (zone == NULL)
+ return;
Assert_retv(m >= 0 && m < map->count);
if( map->list[m].zone == zone )
return;
@@ -4506,7 +4652,8 @@ void map_zone_change2(int m, struct map_zone_data *zone)
map->zone_apply(m,zone,empty,empty,empty);
}
/* when changing from a mapflag to another during runtime */
-void map_zone_change(int m, struct map_zone_data *zone, const char* start, const char* buffer, const char* filepath) {
+static void map_zone_change(int m, struct map_zone_data *zone, const char *start, const char *buffer, const char *filepath)
+{
Assert_retv(m >= 0 && m < map->count);
map->list[m].prev_zone = map->list[m].zone;
@@ -4515,7 +4662,7 @@ void map_zone_change(int m, struct map_zone_data *zone, const char* start, const
map->zone_apply(m,zone,start,buffer,filepath);
}
/* removes previous mapflags from this map */
-void map_zone_remove(int m)
+static void map_zone_remove(int m)
{
char flag[MAP_ZONE_MAPFLAG_LENGTH], params[MAP_ZONE_MAPFLAG_LENGTH];
unsigned short k;
@@ -4542,7 +4689,29 @@ void map_zone_remove(int m)
map->list[m].zone_mf = NULL;
map->list[m].zone_mf_count = 0;
}
-static inline void map_zone_mf_cache_add(int m, char *rflag) {
+// this one removes every flag, even if they were previously turned on before
+// the current zone was applied
+static void map_zone_remove_all(int m)
+{
+ Assert_retv(m >= 0 && m < map->count);
+
+ for (unsigned short k = 0; k < map->list[m].zone_mf_count; k++) {
+ char flag[MAP_ZONE_MAPFLAG_LENGTH];
+
+ memcpy(flag, map->list[m].zone_mf[k], MAP_ZONE_MAPFLAG_LENGTH);
+ strtok(flag, "\t");
+
+ npc->parse_mapflag(map->list[m].name, "", flag, "off", "", "", "", NULL);
+ aFree(map->list[m].zone_mf[k]);
+ map->list[m].zone_mf[k] = NULL;
+ }
+
+ aFree(map->list[m].zone_mf);
+ map->list[m].zone_mf = NULL;
+ map->list[m].zone_mf_count = 0;
+}
+static inline void map_zone_mf_cache_add(int m, char *rflag)
+{
Assert_retv(m >= 0 && m < map->count);
RECREATE(map->list[m].zone_mf, char *, ++map->list[m].zone_mf_count);
CREATE(map->list[m].zone_mf[map->list[m].zone_mf_count - 1], char, MAP_ZONE_MAPFLAG_LENGTH);
@@ -4550,7 +4719,8 @@ static inline void map_zone_mf_cache_add(int m, char *rflag) {
}
/* TODO: introduce enumerations to each mapflag so instead of reading the string a number of times we read it only once and use its value wherever we need */
/* cache previous values to revert */
-bool map_zone_mf_cache(int m, char *flag, char *params) {
+static bool map_zone_mf_cache(int m, char *flag, char *params)
+{
char rflag[MAP_ZONE_MAPFLAG_LENGTH];
int state = 1;
@@ -4806,6 +4976,15 @@ bool map_zone_mf_cache(int m, char *flag, char *params) {
else if( map->list[m].flag.battleground )
map_zone_mf_cache_add(m,"battleground");
}
+ } else if (!strcmpi(flag,"cvc")) {
+ if (state && map->list[m].flag.cvc) {
+ ;/* nothing to do */
+ } else {
+ if (state)
+ map_zone_mf_cache_add(m,"cvc\toff");
+ else if (map->list[m].flag.cvc)
+ map_zone_mf_cache_add(m,"cvc");
+ }
} else if (!strcmpi(flag,"noexppenalty")) {
if( state && map->list[m].flag.noexppenalty )
;/* nothing to do */
@@ -5078,11 +5257,12 @@ bool map_zone_mf_cache(int m, char *flag, char *params) {
}
} else if (!strcmpi(flag,"adjust_unit_duration")) {
int skill_id, k;
- char skill_name[MAP_ZONE_MAPFLAG_LENGTH], modifier[MAP_ZONE_MAPFLAG_LENGTH];
- size_t len = strlen(params);
+ char skill_name[MAX_SKILL_NAME_LENGTH], modifier[MAP_ZONE_MAPFLAG_LENGTH];
+ size_t len;
modifier[0] = '\0';
- memcpy(skill_name, params, MAP_ZONE_MAPFLAG_LENGTH);
+ safestrncpy(skill_name, params, MAX_SKILL_NAME_LENGTH);
+ len = strlen(skill_name);
for(k = 0; k < len; k++) {
if( skill_name[k] == '\t' ) {
@@ -5111,11 +5291,12 @@ bool map_zone_mf_cache(int m, char *flag, char *params) {
}
} else if (!strcmpi(flag,"adjust_skill_damage")) {
int skill_id, k;
- char skill_name[MAP_ZONE_MAPFLAG_LENGTH], modifier[MAP_ZONE_MAPFLAG_LENGTH];
- size_t len = strlen(params);
+ char skill_name[MAX_SKILL_NAME_LENGTH], modifier[MAP_ZONE_MAPFLAG_LENGTH];
+ size_t len;
modifier[0] = '\0';
- memcpy(skill_name, params, MAP_ZONE_MAPFLAG_LENGTH);
+ safestrncpy(skill_name, params, MAX_SKILL_NAME_LENGTH);
+ len = strlen(skill_name);
for(k = 0; k < len; k++) {
if( skill_name[k] == '\t' ) {
@@ -5249,7 +5430,7 @@ bool map_zone_mf_cache(int m, char *flag, char *params) {
return false;
}
-void map_zone_apply(int m, struct map_zone_data *zone, const char* start, const char* buffer, const char* filepath)
+static void map_zone_apply(int m, struct map_zone_data *zone, const char *start, const char *buffer, const char *filepath)
{
int i;
const char *empty = "";
@@ -5277,7 +5458,7 @@ void map_zone_apply(int m, struct map_zone_data *zone, const char* start, const
}
}
/* used on npc load and reload to apply all "Normal" and "PK Mode" zones */
-void map_zone_init(void)
+static void map_zone_init(void)
{
char flag[MAP_ZONE_MAPFLAG_LENGTH], params[MAP_ZONE_MAPFLAG_LENGTH];
struct map_zone_data *zone;
@@ -5331,12 +5512,13 @@ void map_zone_init(void)
}
}
-unsigned short map_zone_str2itemid(const char *name) {
+static int map_zone_str2itemid(const char *name)
+{
struct item_data *data;
if( !name )
return 0;
- if( name[0] == 'I' && name[1] == 'D' && strlen(name) < 8 ) {
+ if (name[0] == 'I' && name[1] == 'D' && strlen(name) <= 12) {
if( !( data = itemdb->exists(atoi(name+2))) ) {
return 0;
}
@@ -5347,13 +5529,14 @@ unsigned short map_zone_str2itemid(const char *name) {
}
return data->nameid;
}
-unsigned short map_zone_str2skillid(const char *name) {
+static unsigned short map_zone_str2skillid(const char *name)
+{
unsigned short nameid = 0;
if( !name )
return 0;
- if( name[0] == 'I' && name[1] == 'D' && strlen(name) < 8 ) {
+ if (name[0] == 'I' && name[1] == 'D' && strlen(name) <= 12) {
if( !skill->get_index((nameid = atoi(name+2))) )
return 0;
} else {
@@ -5363,7 +5546,8 @@ unsigned short map_zone_str2skillid(const char *name) {
}
return nameid;
}
-enum bl_type map_zone_bl_type(const char *entry, enum map_zone_skill_subtype *subtype) {
+static enum bl_type map_zone_bl_type(const char *entry, enum map_zone_skill_subtype *subtype)
+{
char temp[200], *parse;
enum bl_type bl = BL_NUL;
@@ -5409,7 +5593,8 @@ enum bl_type map_zone_bl_type(const char *entry, enum map_zone_skill_subtype *su
return bl;
}
/* [Ind/Hercules] */
-void read_map_zone_db(void) {
+static void read_map_zone_db(void)
+{
struct config_t map_zone_db;
struct config_setting_t *zones = NULL;
/* TODO: #ifndef required for re/pre-re */
@@ -5830,43 +6015,38 @@ void read_map_zone_db(void) {
zone->merge_type = MZMT_MERGEABLE;
if( (zone = strdb_get(map->zone_db, MAP_ZONE_BG_NAME)) )
zone->merge_type = MZMT_MERGEABLE;
+ if ((zone = strdb_get(map->zone_db, MAP_ZONE_CVC_NAME)))
+ zone->merge_type = MZMT_MERGEABLE;
}
/* not supposed to go in here but in skill_final whatever */
libconfig->destroy(&map_zone_db);
}
-int map_get_new_bonus_id (void) {
+static int map_get_new_bonus_id(void)
+{
return map->bonus_id++;
}
-void map_add_questinfo(int m, struct questinfo *qi) {
- unsigned short i;
-
+static void map_add_questinfo(int m, struct questinfo *qi)
+{
nullpo_retv(qi);
Assert_retv(m >= 0 && m < map->count);
- /* duplicate, override */
- for(i = 0; i < map->list[m].qi_count; i++) {
- if( map->list[m].qi_data[i].nd == qi->nd )
- break;
- }
-
- if( i == map->list[m].qi_count )
- RECREATE(map->list[m].qi_data, struct questinfo, ++map->list[m].qi_count);
- memcpy(&map->list[m].qi_data[i], qi, sizeof(struct questinfo));
+ VECTOR_ENSURE(map->list[m].qi_data, 1, 1);
+ VECTOR_PUSH(map->list[m].qi_data, *qi);
}
-bool map_remove_questinfo(int m, struct npc_data *nd) {
+static bool map_remove_questinfo(int m, struct npc_data *nd)
+{
unsigned short i;
+ nullpo_retr(false, nd);
Assert_retr(false, m >= 0 && m < map->count);
- for(i = 0; i < map->list[m].qi_count; i++) {
- struct questinfo *qi = &map->list[m].qi_data[i];
- if( qi->nd == nd ) {
- memset(&map->list[m].qi_data[i], 0, sizeof(struct questinfo));
- if( i != --map->list[m].qi_count ) {
- memmove(&map->list[m].qi_data[i],&map->list[m].qi_data[i+1],sizeof(struct questinfo)*(map->list[m].qi_count-i));
- }
+
+ for (i = 0; i < VECTOR_LENGTH(map->list[m].qi_data); i++) {
+ struct questinfo *qi_data = &VECTOR_INDEX(map->list[m].qi_data, i);
+ if (qi_data->nd == nd) {
+ VECTOR_ERASE(map->list[m].qi_data, i);
return true;
}
}
@@ -5876,7 +6056,7 @@ bool map_remove_questinfo(int m, struct npc_data *nd) {
/**
* @see DBApply
*/
-int map_db_final(union DBKey key, struct DBData *data, va_list ap)
+static int map_db_final(union DBKey key, struct DBData *data, va_list ap)
{
struct map_data_other_server *mdos = DB->data2ptr(data);
@@ -5889,7 +6069,7 @@ int map_db_final(union DBKey key, struct DBData *data, va_list ap)
/**
* @see DBApply
*/
-int nick_db_final(union DBKey key, struct DBData *data, va_list args)
+static int nick_db_final(union DBKey key, struct DBData *data, va_list args)
{
struct charid2nick* p = DB->data2ptr(data);
struct charid_request* req;
@@ -5906,7 +6086,8 @@ int nick_db_final(union DBKey key, struct DBData *data, va_list args)
return 0;
}
-int cleanup_sub(struct block_list *bl, va_list ap) {
+static int cleanup_sub(struct block_list *bl, va_list ap)
+{
nullpo_ret(bl);
switch(bl->type) {
@@ -5936,7 +6117,7 @@ int cleanup_sub(struct block_list *bl, va_list ap) {
/**
* @see DBApply
*/
-int cleanup_db_sub(union DBKey key, struct DBData *data, va_list va)
+static int cleanup_db_sub(union DBKey key, struct DBData *data, va_list va)
{
return map->cleanup_sub(DB->data2ptr(data), va);
}
@@ -5944,7 +6125,8 @@ int cleanup_db_sub(union DBKey key, struct DBData *data, va_list va)
/*==========================================
* map destructor
*------------------------------------------*/
-int do_final(void) {
+int do_final(void)
+{
int i;
struct map_session_data* sd;
struct s_mapiterator* iter;
@@ -5990,6 +6172,7 @@ int do_final(void) {
ircbot->final();/* before channel. */
channel->final();
chrif->final();
+ clan->final();
clif->final();
npc->final();
quest->final();
@@ -6012,6 +6195,8 @@ int do_final(void) {
elemental->final();
map->list_final();
vending->final();
+ rodex->final();
+ achievement->final();
HPM_map_do_final();
@@ -6034,6 +6219,11 @@ int do_final(void) {
ers_destroy(map->iterator_ers);
ers_destroy(map->flooritem_ers);
+ for (i = 0; i < map->count; ++i) {
+ if (map->list[i].cell_buf.data != NULL)
+ aFree(map->list[i].cell_buf.data);
+ map->list[i].cell_buf.len = 0;
+ }
aFree(map->list);
if( map->block_free )
@@ -6041,9 +6231,6 @@ int do_final(void) {
if( map->bl_list )
aFree(map->bl_list);
- if( !map->enable_grf )
- aFree(map->cache_buffer);
-
aFree(map->MAP_CONF_NAME);
aFree(map->BATTLE_CONF_FILENAME);
aFree(map->ATCOMMAND_CONF_FILENAME);
@@ -6059,7 +6246,8 @@ int do_final(void) {
return map->retval;
}
-int map_abort_sub(struct map_session_data* sd, va_list ap) {
+static int map_abort_sub(struct map_session_data *sd, va_list ap)
+{
chrif->save(sd,1);
return 1;
}
@@ -6088,12 +6276,13 @@ void do_abort(void)
chrif->flush();
}
-void set_server_type(void) {
+void set_server_type(void)
+{
SERVER_TYPE = SERVER_TYPE_MAP;
}
/// Called when a terminate signal is received.
-void do_shutdown(void)
+static void do_shutdown(void)
{
if( core->runflag != MAPSERVER_ST_SHUTDOWN )
{
@@ -6111,7 +6300,8 @@ void do_shutdown(void)
}
}
-CPCMD(gm_position) {
+static CPCMD(gm_position)
+{
int x = 0, y = 0, m = 0;
char map_name[25];
@@ -6135,7 +6325,8 @@ CPCMD(gm_position) {
map->cpsd->bl.y = y;
map->cpsd->bl.m = m;
}
-CPCMD(gm_use) {
+static CPCMD(gm_use)
+{
if( line == NULL ) {
ShowError("gm:use invalid syntax. use '"CL_WHITE"gm:use @command <optional params>"CL_RESET"'\n");
@@ -6152,7 +6343,8 @@ CPCMD(gm_use) {
map->cpsd_active = false;
}
/* Hercules Console Parser */
-void map_cp_defaults(void) {
+static void map_cp_defaults(void)
+{
#ifdef CONSOLE_INPUT
/* default HCP data */
map->cpsd = pc->get_dummy_sd();
@@ -6166,7 +6358,8 @@ void map_cp_defaults(void) {
#endif
}
-void map_load_defaults(void) {
+static void map_load_defaults(void)
+{
mapindex_defaults();
map_defaults();
/* */
@@ -6175,6 +6368,7 @@ void map_load_defaults(void) {
battleground_defaults();
buyingstore_defaults();
channel_defaults();
+ clan_defaults();
clif_defaults();
chrif_defaults();
guild_defaults();
@@ -6207,7 +6401,9 @@ void map_load_defaults(void) {
pet_defaults();
path_defaults();
quest_defaults();
+ achievement_defaults();
npc_chat_defaults();
+ rodex_defaults();
}
/**
* --run-once handler
@@ -6506,6 +6702,7 @@ int do_init(int argc, char *argv[])
ircbot->init(minimal);
script->init(minimal);
itemdb->init(minimal);
+ clan->init(minimal);
skill->init(minimal);
if (!minimal)
map->read_zone_db();/* read after item and skill initialization */
@@ -6520,11 +6717,13 @@ int do_init(int argc, char *argv[])
mercenary->init(minimal);
elemental->init(minimal);
quest->init(minimal);
+ achievement->init(minimal);
npc->init(minimal);
unit->init(minimal);
bg->init(minimal);
duel->init(minimal);
vending->init(minimal);
+ rodex->init(minimal);
if (map->scriptcheck) {
bool failed = map->extra_scripts_count > 0 ? false : true;
@@ -6544,6 +6743,7 @@ int do_init(int argc, char *argv[])
npc->event_do_oninit( false ); // Init npcs (OnInit)
npc->market_fromsql(); /* after OnInit */
+ npc->barter_fromsql(); /* after OnInit */
if (battle_config.pk_mode)
ShowNotice("Server is running on '"CL_WHITE"PK Mode"CL_RESET"'.\n");
@@ -6571,11 +6771,12 @@ int do_init(int argc, char *argv[])
}
/*=====================================
-* Default Functions : map.h
-* Generated by HerculesInterfaceMaker
-* created by Susu
-*-------------------------------------*/
-void map_defaults(void) {
+ * Default Functions : map.h
+ * Generated by HerculesInterfaceMaker
+ * created by Susu
+ *-------------------------------------*/
+void map_defaults(void)
+{
map = &map_s;
/* */
@@ -6655,7 +6856,6 @@ void map_defaults(void) {
map->list = NULL;
map->iterator_ers = NULL;
- map->cache_buffer = NULL;
map->flooritem_ers = NULL;
/* */
@@ -6663,9 +6863,11 @@ void map_defaults(void) {
/* funcs */
map->zone_init = map_zone_init;
map->zone_remove = map_zone_remove;
+ map->zone_remove_all = map_zone_remove_all;
map->zone_apply = map_zone_apply;
map->zone_change = map_zone_change;
map->zone_change2 = map_zone_change2;
+ map->zone_reload = map_zonedb_reload;
map->getcell = map_getcell;
map->setgatcell = map_setgatcell;
@@ -6735,6 +6937,7 @@ void map_defaults(void) {
map->foreachinpath = map_foreachinpath;
map->vforeachinmap = map_vforeachinmap;
map->foreachinmap = map_foreachinmap;
+ map->forcountinmap = map_forcountinmap;
map->vforeachininstance = map_vforeachininstance;
map->foreachininstance = map_foreachininstance;
@@ -6802,8 +7005,8 @@ void map_defaults(void) {
map->iwall_nextxy = map_iwall_nextxy;
map->create_map_data_other_server = create_map_data_other_server;
map->eraseallipport_sub = map_eraseallipport_sub;
- map->init_mapcache = map_init_mapcache;
map->readfromcache = map_readfromcache;
+ map->readfromcache_v1 = map_readfromcache_v1;
map->addmap = map_addmap;
map->delmapid = map_delmapid;
map->zone_db_clear = map_zone_db_clear;
diff --git a/src/map/map.h b/src/map/map.h
index 8c5372093..d31ff4839 100644
--- a/src/map/map.h
+++ b/src/map/map.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -48,6 +48,7 @@ enum E_MAPSERVER_ST {
#define MAX_NPC_PER_MAP 512
#define AREA_SIZE (battle->bc->area_size)
#define CHAT_AREA_SIZE (battle->bc->chat_area_size)
+#define DEAD_AREA_SIZE (battle->bc->dead_area_size)
#define DAMAGELOG_SIZE 30
#define LOOTITEM_SIZE 10
#define MAX_MOBSKILL 50
@@ -65,6 +66,16 @@ enum E_MAPSERVER_ST {
#define block_free_max 1048576
#define BL_LIST_MAX 1048576
+// The following system marks a different job ID system used by the map server,
+// which makes a lot more sense than the normal one. [Skotlex]
+// These marks the "level" of the job.
+#define JOBL_2_1 0x0100
+#define JOBL_2_2 0x0200
+#define JOBL_2 0x0300 // JOBL_2_1 | JOBL_2_2
+#define JOBL_UPPER 0x1000
+#define JOBL_BABY 0x2000
+#define JOBL_THIRD 0x4000
+
// For filtering and quick checking.
#define MAPID_BASEMASK 0x00ff
#define MAPID_UPPERMASK 0x0fff
@@ -352,6 +363,7 @@ STATIC_ASSERT(((MAPID_1_1_MAX - 1) | MAPID_BASEMASK) == MAPID_BASEMASK, "First c
|| map->list[m].flag.gvg \
|| ((map->agit_flag || map->agit2_flag) && map->list[m].flag.gvg_castle) \
|| map->list[m].flag.battleground \
+ || map->list[m].flag.cvc \
)
// Specifies maps that have special GvG/WoE restrictions
#define map_flag_gvg(m) (map->list[m].flag.gvg || ((map->agit_flag || map->agit2_flag) && map->list[m].flag.gvg_castle))
@@ -519,7 +531,7 @@ struct spawn_data {
//0: Normal mob | 1: Standard summon, attacks mobs
//2: Alchemist Marine Sphere | 3: Alchemist Summon Flora | 4: Summon Zanzou
unsigned int dynamic : 1; ///< Whether this data is indexed by a map's dynamic mob list
- unsigned int boss : 1; ///< 0: Non-boss monster | 1: Boss monster
+ uint8 boss; ///< 0: Non-boss monster | 1: Boss monster | 2: MVP
} state;
char name[NAME_LENGTH], eventname[EVENT_NAME_LENGTH]; //Name/event
};
@@ -531,9 +543,11 @@ struct flooritem_data {
int first_get_charid,second_get_charid,third_get_charid;
int64 first_get_tick,second_get_tick,third_get_tick;
struct item item_data;
+ bool showdropeffect;
};
enum status_point_types { //we better clean up this enum and change it name [Hemagx]
+ SP_NONE = -1,
SP_SPEED,SP_BASEEXP,SP_JOBEXP,SP_KARMA,SP_MANNER,SP_HP,SP_MAXHP,SP_SP, // 0-7
SP_MAXSP,SP_STATUSPOINT,SP_0a,SP_BASELEVEL,SP_SKILLPOINT,SP_STR,SP_AGI,SP_VIT, // 8-15
SP_INT,SP_DEX,SP_LUK,SP_CLASS,SP_ZENY,SP_SEX,SP_NEXTBASEEXP,SP_NEXTJOBEXP, // 16-23
@@ -553,6 +567,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,
@@ -622,6 +637,10 @@ enum look {
LOOK_FLOOR,
LOOK_ROBE,
LOOK_BODY2,
+
+#ifndef LOOK_MAX
+ LOOK_MAX
+#endif
};
// used by map_setcell()
@@ -707,7 +726,7 @@ enum map_zone_skill_subtype {
};
struct map_zone_disabled_skill_entry {
- unsigned short nameid;
+ int nameid;
enum bl_type type;
enum map_zone_skill_subtype subtype;
};
@@ -717,7 +736,7 @@ struct map_zone_disabled_command_entry {
};
struct map_zone_skill_damage_cap_entry {
- unsigned short nameid;
+ int nameid;
unsigned int cap;
enum bl_type type;
enum map_zone_skill_subtype subtype;
@@ -735,8 +754,9 @@ enum map_zone_merge_type {
#define MAP_ZONE_PVP_NAME "PvP"
#define MAP_ZONE_GVG_NAME "GvG"
#define MAP_ZONE_BG_NAME "Battlegrounds"
+#define MAP_ZONE_CVC_NAME "CvC"
#define MAP_ZONE_PK_NAME "PK Mode"
-#define MAP_ZONE_MAPFLAG_LENGTH 50
+#define MAP_ZONE_MAPFLAG_LENGTH 65
struct map_zone_data {
char name[MAP_ZONE_NAME_LENGTH];/* 20'd */
@@ -764,14 +784,38 @@ struct map_drop_list {
int drop_per;
};
+struct questinfo_qreq {
+ int id;
+ int state;
+};
+
+struct questinfo_itemreq {
+ int nameid;
+ int min;
+ int max;
+};
struct questinfo {
struct npc_data *nd;
unsigned short icon;
unsigned char color;
- int quest_id;
bool hasJob;
unsigned short job;/* perhaps a mapid mask would be most flexible? */
+ bool sex_enabled;
+ int sex;
+ struct {
+ int min;
+ int max;
+ } base_level;
+ struct {
+ int min;
+ int max;
+ } job_level;
+ VECTOR_DECL(struct questinfo_itemreq) items;
+ struct s_homunculus homunculus;
+ int homunculus_type;
+ VECTOR_DECL(struct questinfo_qreq) quest_requirement;
+ int mercenary_class;
};
@@ -821,6 +865,7 @@ struct map_data {
unsigned gvg_dungeon : 1; // Celest
unsigned gvg_noparty : 1;
unsigned battleground : 2; // [BattleGround System]
+ unsigned cvc : 1;
unsigned nozenypenalty : 1;
unsigned notrade : 1;
unsigned noskill : 1;
@@ -851,6 +896,9 @@ struct map_data {
unsigned noknockback : 1;
unsigned notomb : 1;
unsigned nocashshop : 1;
+ unsigned noautoloot : 1;
+ unsigned pairship_startable : 1;
+ unsigned pairship_endable : 1;
uint32 noviewid; ///< noviewid (bitmask - @see enum equip_pos)
} flag;
struct point save;
@@ -903,11 +951,13 @@ struct map_data {
/* */
int (*getcellp)(struct map_data* m, const struct block_list *bl, int16 x, int16 y, cell_chk cellchk);
void (*setcell) (int16 m, int16 x, int16 y, cell_t cell, bool flag);
- char *cellPos;
+ struct {
+ uint8 *data;
+ int len;
+ } cell_buf;
/* ShowEvent Data Cache */
- struct questinfo *qi_data;
- unsigned short qi_count;
+ VECTOR_DECL(struct questinfo) qi_data;
/* speeds up clif_updatestatus processing by causing hpmeter to run only when someone with the permission can view it */
unsigned short hpmeter_visible;
@@ -1058,20 +1108,20 @@ struct charid2nick {
struct charid_request* requests;// requests of notification on this nick
};
-// This is the main header found at the very beginning of the map cache
-struct map_cache_main_header {
- uint32 file_size;
- uint16 map_count;
-};
-
-// This is the header appended before every compressed map cells info in the map cache
-struct map_cache_map_info {
- char name[MAP_NAME_LENGTH];
+// New mcache file format header
+#if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
+#pragma pack(push, 1)
+#endif // not NetBSD < 6 / Solaris
+struct map_cache_header {
+ int16 version;
+ uint8 md5_checksum[16];
int16 xs;
int16 ys;
int32 len;
-};
-
+} __attribute__((packed));
+#if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
+#pragma pack(pop)
+#endif // not NetBSD < 6 / Solaris
/*=====================================
* Interface : map.h
@@ -1117,6 +1167,7 @@ struct map_interface {
char autotrade_merchants_db[32];
char autotrade_data_db[32];
char npc_market_data_db[32];
+ char npc_barter_data_db[32];
char default_codepage[32];
char default_lang_str[64];
@@ -1161,7 +1212,6 @@ END_ZEROED_BLOCK;
struct map_data *list;
/* [Ind/Hercules] */
struct eri *iterator_ers;
- char *cache_buffer; // Has the uncompressed gat data of all maps, so just one allocation has to be made
/* */
struct eri *flooritem_ers;
/* */
@@ -1171,9 +1221,11 @@ END_ZEROED_BLOCK;
/* funcs */
void (*zone_init) (void);
void (*zone_remove) (int m);
+ void (*zone_remove_all) (int m);
void (*zone_apply) (int m, struct map_zone_data *zone, const char* start, const char* buffer, const char* filepath);
void (*zone_change) (int m, struct map_zone_data *zone, const char* start, const char* buffer, const char* filepath);
void (*zone_change2) (int m, struct map_zone_data *zone);
+ void (*zone_reload) (void);
int (*getcell) (int16 m, const struct block_list *bl, int16 x, int16 y, cell_chk cellchk);
void (*setgatcell) (int16 m, int16 x, int16 y, int gat);
@@ -1206,7 +1258,7 @@ END_ZEROED_BLOCK;
int (*clearflooritem_timer) (int tid, int64 tick, int id, intptr_t data);
int (*removemobs_timer) (int tid, int64 tick, int id, intptr_t data);
void (*clearflooritem) (struct block_list* bl);
- int (*addflooritem) (const struct block_list *bl, struct item *item_data, int amount, int16 m, int16 x, int16 y, int first_charid, int second_charid, int third_charid, int flags);
+ int (*addflooritem) (const struct block_list *bl, struct item *item_data, int amount, int16 m, int16 x, int16 y, int first_charid, int second_charid, int third_charid, int flags, bool showdropeffect);
// player to map session
void (*addnickdb) (int charid, const char* nick);
void (*delnickdb) (int charid, const char* nick);
@@ -1243,6 +1295,7 @@ END_ZEROED_BLOCK;
int (*foreachinpath) (int (*func)(struct block_list*,va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int16 range, int length, int type, ...);
int (*vforeachinmap) (int (*func)(struct block_list*,va_list), int16 m, int type, va_list args);
int (*foreachinmap) (int (*func)(struct block_list*,va_list), int16 m, int type, ...);
+ int (*forcountinmap) (int (*func)(struct block_list*,va_list), int16 m, int count, int type, ...);
int (*vforeachininstance)(int (*func)(struct block_list*,va_list), int16 instance_id, int type, va_list ap);
int (*foreachininstance)(int (*func)(struct block_list*,va_list), int16 instance_id, int type,...);
@@ -1285,7 +1338,7 @@ END_ZEROED_BLOCK;
bool (*iwall_set) (int16 m, int16 x, int16 y, int size, int8 dir, bool shootable, const char* wall_name);
void (*iwall_get) (struct map_session_data *sd);
- void (*iwall_remove) (const char *wall_name);
+ bool (*iwall_remove) (const char *wall_name);
int (*addmobtolist) (unsigned short m, struct spawn_data *spawn); // [Wizputer]
void (*spawnmobs) (int16 m); // [Wizputer]
@@ -1311,8 +1364,8 @@ END_ZEROED_BLOCK;
void (*iwall_nextxy) (int16 x, int16 y, int8 dir, int pos, int16 *x1, int16 *y1);
struct DBData (*create_map_data_other_server) (union DBKey key, va_list args);
int (*eraseallipport_sub) (union DBKey key, struct DBData *data, va_list va);
- char* (*init_mapcache) (FILE *fp);
- int (*readfromcache) (struct map_data *m, char *buffer);
+ bool (*readfromcache) (struct map_data *m);
+ bool (*readfromcache_v1) (FILE *fp, struct map_data *m, unsigned int file_size);
int (*addmap) (const char *mapname);
void (*delmapid) (int id);
void (*zone_db_clear) (void);
@@ -1328,7 +1381,7 @@ END_ZEROED_BLOCK;
int (*sql_init) (void);
int (*sql_close) (void);
bool (*zone_mf_cache) (int m, char *flag, char *params);
- unsigned short (*zone_str2itemid) (const char *name);
+ int (*zone_str2itemid) (const char *name);
unsigned short (*zone_str2skillid) (const char *name);
enum bl_type (*zone_bl_type) (const char *entry, enum map_zone_skill_subtype *subtype);
void (*read_zone_db) (void);
diff --git a/src/map/mapreg.h b/src/map/mapreg.h
index 642bce48e..4a9fd9e97 100644
--- a/src/map/mapreg.h
+++ b/src/map/mapreg.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/map/mapreg_sql.c b/src/map/mapreg_sql.c
index 4cdb91b21..516be56cb 100644
--- a/src/map/mapreg_sql.c
+++ b/src/map/mapreg_sql.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -38,7 +38,7 @@
#include <stdlib.h>
#include <string.h>
-struct mapreg_interface mapreg_s;
+static struct mapreg_interface mapreg_s;
struct mapreg_interface *mapreg;
#define MAPREG_AUTOSAVE_INTERVAL (300*1000)
@@ -49,7 +49,8 @@ struct mapreg_interface *mapreg;
* @param uid variable's unique identifier.
* @return variable's integer value
*/
-int mapreg_readreg(int64 uid) {
+static int mapreg_readreg(int64 uid)
+{
struct mapreg_save *m = i64db_get(mapreg->regs.vars, uid);
return m?m->u.i:0;
}
@@ -60,7 +61,8 @@ int mapreg_readreg(int64 uid) {
* @param uid variable's unique identifier
* @return variable's string value
*/
-char* mapreg_readregstr(int64 uid) {
+static char *mapreg_readregstr(int64 uid)
+{
struct mapreg_save *m = i64db_get(mapreg->regs.vars, uid);
return m?m->u.str:NULL;
}
@@ -72,7 +74,8 @@ char* mapreg_readregstr(int64 uid) {
* @param val new value
* @retval true value was successfully set
*/
-bool mapreg_setreg(int64 uid, int val) {
+static bool mapreg_setreg(int64 uid, int val)
+{
struct mapreg_save *m;
int num = script_getvarid(uid);
unsigned int i = script_getvaridx(uid);
@@ -129,7 +132,8 @@ bool mapreg_setreg(int64 uid, int val) {
* @param str new value
* @retval true value was successfully set
*/
-bool mapreg_setregstr(int64 uid, const char* str) {
+static bool mapreg_setregstr(int64 uid, const char *str)
+{
struct mapreg_save *m;
int num = script_getvarid(uid);
unsigned int i = script_getvaridx(uid);
@@ -188,7 +192,8 @@ bool mapreg_setregstr(int64 uid, const char* str) {
/**
* Loads permanent variables from database.
*/
-void script_load_mapreg(void) {
+static void script_load_mapreg(void)
+{
/*
0 1 2
+-------------------------+
@@ -211,12 +216,12 @@ void script_load_mapreg(void) {
mapreg->skip_insert = true;
- SQL->StmtBindColumn(stmt, 0, SQLDT_STRING, &varname[0], sizeof(varname), &length, NULL);
- SQL->StmtBindColumn(stmt, 1, SQLDT_INT, &index, 0, NULL, NULL);
- SQL->StmtBindColumn(stmt, 2, SQLDT_STRING, &value[0], sizeof(value), NULL, NULL);
+ SQL->StmtBindColumn(stmt, 0, SQLDT_STRING, &varname, sizeof varname, &length, NULL);
+ SQL->StmtBindColumn(stmt, 1, SQLDT_INT, &index, sizeof index, NULL, NULL);
+ SQL->StmtBindColumn(stmt, 2, SQLDT_STRING, &value, sizeof value, NULL, NULL);
while ( SQL_SUCCESS == SQL->StmtNextRow(stmt) ) {
- int s = script->add_str(varname);
+ int s = script->add_variable(varname);
int i = index;
@@ -241,7 +246,7 @@ void script_load_mapreg(void) {
/**
* Saves permanent variables to database.
*/
-void script_save_mapreg(void)
+static void script_save_mapreg(void)
{
if (mapreg->dirty) {
struct DBIterator *iter = db_iterator(mapreg->regs.vars);
@@ -274,7 +279,8 @@ void script_save_mapreg(void)
*
* @see timer->do_timer
*/
-int script_autosave_mapreg(int tid, int64 tick, int id, intptr_t data) {
+static int script_autosave_mapreg(int tid, int64 tick, int id, intptr_t data)
+{
mapreg->save();
return 0;
}
@@ -284,7 +290,7 @@ int script_autosave_mapreg(int tid, int64 tick, int id, intptr_t data) {
*
* @see DBApply
*/
-int mapreg_destroyreg(union DBKey key, struct DBData *data, va_list ap)
+static int mapreg_destroyreg(union DBKey key, struct DBData *data, va_list ap)
{
struct mapreg_save *m = NULL;
@@ -308,7 +314,8 @@ int mapreg_destroyreg(union DBKey key, struct DBData *data, va_list ap)
* This has the effect of clearing the temporary variables, and
* reloading the permanent ones.
*/
-void mapreg_reload(void) {
+static void mapreg_reload(void)
+{
mapreg->save();
mapreg->regs.vars->clear(mapreg->regs.vars, mapreg->destroyreg);
@@ -324,7 +331,8 @@ void mapreg_reload(void) {
/**
* Finalizer.
*/
-void mapreg_final(void) {
+static void mapreg_final(void)
+{
mapreg->save();
mapreg->regs.vars->destroy(mapreg->regs.vars, mapreg->destroyreg);
@@ -338,7 +346,8 @@ void mapreg_final(void) {
/**
* Initializer.
*/
-void mapreg_init(void) {
+static void mapreg_init(void)
+{
mapreg->regs.vars = i64db_alloc(DB_OPT_BASE);
mapreg->ers = ers_new(sizeof(struct mapreg_save), "mapreg_sql.c::mapreg_ers", ERS_OPT_CLEAN);
@@ -357,7 +366,7 @@ void mapreg_init(void) {
*
* @retval false in case of error.
*/
-bool mapreg_config_read(const char *filename, const struct config_setting_t *config, bool imported)
+static bool mapreg_config_read(const char *filename, const struct config_setting_t *config, bool imported)
{
nullpo_retr(false, filename);
nullpo_retr(false, config);
@@ -371,7 +380,8 @@ bool mapreg_config_read(const char *filename, const struct config_setting_t *con
/**
* Interface defaults initializer.
*/
-void mapreg_defaults(void) {
+void mapreg_defaults(void)
+{
mapreg = &mapreg_s;
/* */
diff --git a/src/map/mercenary.c b/src/map/mercenary.c
index f5d3fe11c..918701c9d 100644
--- a/src/map/mercenary.c
+++ b/src/map/mercenary.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -57,12 +57,12 @@
#include <stdlib.h>
#include <string.h>
-struct mercenary_interface mercenary_s;
-struct s_mercenary_db mercdb[MAX_MERCENARY_CLASS];
+static struct mercenary_interface mercenary_s;
+static struct s_mercenary_db mercdb[MAX_MERCENARY_CLASS];
struct mercenary_interface *mercenary;
-int merc_search_index(int class_)
+static int merc_search_index(int class_)
{
int i;
ARR_FIND(0, MAX_MERCENARY_CLASS, i, mercenary->db[i].class_ == class_);
@@ -71,14 +71,14 @@ int merc_search_index(int class_)
return i;
}
-bool merc_class(int class_)
+static bool merc_class(int class_)
{
if (mercenary->search_index(class_) != INDEX_NOT_FOUND)
return true;
return false;
}
-struct view_data * merc_get_viewdata(int class_)
+static struct view_data *merc_get_viewdata(int class_)
{
int i = mercenary->search_index(class_);
if (i == INDEX_NOT_FOUND)
@@ -87,7 +87,7 @@ struct view_data * merc_get_viewdata(int class_)
return &mercenary->db[i].vd;
}
-int merc_create(struct map_session_data *sd, int class_, unsigned int lifetime)
+static int merc_create(struct map_session_data *sd, int class_, unsigned int lifetime)
{
struct s_mercenary merc;
struct s_mercenary_db *db;
@@ -112,7 +112,7 @@ int merc_create(struct map_session_data *sd, int class_, unsigned int lifetime)
return 1;
}
-int mercenary_get_lifetime(struct mercenary_data *md)
+static int mercenary_get_lifetime(struct mercenary_data *md)
{
const struct TimerData * td;
if( md == NULL || md->contract_timer == INVALID_TIMER )
@@ -122,7 +122,7 @@ int mercenary_get_lifetime(struct mercenary_data *md)
return (td != NULL) ? DIFF_TICK32(td->tick, timer->gettick()) : 0;
}
-int mercenary_get_guild(struct mercenary_data *md)
+static int mercenary_get_guild(struct mercenary_data *md)
{
int class_;
@@ -141,7 +141,7 @@ int mercenary_get_guild(struct mercenary_data *md)
return -1;
}
-int mercenary_get_faith(struct mercenary_data *md)
+static int mercenary_get_faith(struct mercenary_data *md)
{
struct map_session_data *sd;
int class_;
@@ -161,7 +161,7 @@ int mercenary_get_faith(struct mercenary_data *md)
return 0;
}
-int mercenary_set_faith(struct mercenary_data *md, int value)
+static int mercenary_set_faith(struct mercenary_data *md, int value)
{
struct map_session_data *sd;
int class_, *faith;
@@ -187,7 +187,7 @@ int mercenary_set_faith(struct mercenary_data *md, int value)
return 0;
}
-int mercenary_get_calls(struct mercenary_data *md)
+static int mercenary_get_calls(struct mercenary_data *md)
{
struct map_session_data *sd;
int class_;
@@ -207,7 +207,7 @@ int mercenary_get_calls(struct mercenary_data *md)
return 0;
}
-int mercenary_set_calls(struct mercenary_data *md, int value)
+static int mercenary_set_calls(struct mercenary_data *md, int value)
{
struct map_session_data *sd;
int class_, *calls;
@@ -232,7 +232,7 @@ int mercenary_set_calls(struct mercenary_data *md, int value)
return 0;
}
-int mercenary_save(struct mercenary_data *md)
+static int mercenary_save(struct mercenary_data *md)
{
nullpo_retr(1, md);
md->mercenary.hp = md->battle_status.hp;
@@ -243,7 +243,8 @@ int mercenary_save(struct mercenary_data *md)
return 1;
}
-int merc_contract_end_timer(int tid, int64 tick, int id, intptr_t data) {
+static int merc_contract_end_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data *sd;
struct mercenary_data *md;
@@ -264,7 +265,7 @@ int merc_contract_end_timer(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-int merc_delete(struct mercenary_data *md, int reply)
+static int merc_delete(struct mercenary_data *md, int reply)
{
struct map_session_data *sd;
@@ -293,7 +294,7 @@ int merc_delete(struct mercenary_data *md, int reply)
return unit->remove_map(&md->bl, CLR_OUTSIGHT, ALC_MARK);
}
-void merc_contract_stop(struct mercenary_data *md)
+static void merc_contract_stop(struct mercenary_data *md)
{
nullpo_retv(md);
if( md->contract_timer != INVALID_TIMER )
@@ -301,7 +302,7 @@ void merc_contract_stop(struct mercenary_data *md)
md->contract_timer = INVALID_TIMER;
}
-void merc_contract_init(struct mercenary_data *md)
+static void merc_contract_init(struct mercenary_data *md)
{
nullpo_retv(md);
if( md->contract_timer == INVALID_TIMER )
@@ -310,7 +311,7 @@ void merc_contract_init(struct mercenary_data *md)
md->regen.state.block = 0;
}
-int merc_data_received(const struct s_mercenary *merc, bool flag)
+static int merc_data_received(const struct s_mercenary *merc, bool flag)
{
struct map_session_data *sd;
struct mercenary_data *md;
@@ -375,7 +376,7 @@ int merc_data_received(const struct s_mercenary *merc, bool flag)
return 1;
}
-void mercenary_heal(struct mercenary_data *md, int hp, int sp)
+static void mercenary_heal(struct mercenary_data *md, int hp, int sp)
{
nullpo_retv(md);
if( hp )
@@ -384,13 +385,13 @@ void mercenary_heal(struct mercenary_data *md, int hp, int sp)
clif->mercenary_updatestatus(md->master, SP_SP);
}
-int mercenary_dead(struct mercenary_data *md)
+static int mercenary_dead(struct mercenary_data *md)
{
mercenary->delete(md, 1);
return 0;
}
-int mercenary_killbonus(struct mercenary_data *md)
+static int mercenary_killbonus(struct mercenary_data *md)
{
const enum sc_type scs[] = { SC_MER_FLEE, SC_MER_ATK, SC_MER_HP, SC_MER_SP, SC_MER_HIT };
int index = rnd() % ARRAYLENGTH(scs);
@@ -400,7 +401,7 @@ int mercenary_killbonus(struct mercenary_data *md)
return 0;
}
-int mercenary_kills(struct mercenary_data *md)
+static int mercenary_kills(struct mercenary_data *md)
{
nullpo_ret(md);
md->mercenary.kill_count++;
@@ -418,7 +419,7 @@ int mercenary_kills(struct mercenary_data *md)
return 0;
}
-int mercenary_checkskill(struct mercenary_data *md, uint16 skill_id)
+static int mercenary_checkskill(struct mercenary_data *md, uint16 skill_id)
{
int i = skill_id - MC_SKILLBASE;
@@ -430,7 +431,8 @@ int mercenary_checkskill(struct mercenary_data *md, uint16 skill_id)
return 0;
}
-bool read_mercenarydb_sub(char* str[], int columns, int current) {
+static bool read_mercenarydb_sub(char *str[], int columns, int current)
+{
int ele;
struct s_mercenary_db *db;
struct status_data *mstatus;
@@ -465,7 +467,7 @@ bool read_mercenarydb_sub(char* str[], int columns, int current) {
mstatus->race = atoi(str[20]);
ele = atoi(str[21]);
- mstatus->def_ele = ele%10;
+ mstatus->def_ele = ele % ELE_MAX;
mstatus->ele_lv = ele/20;
if( mstatus->def_ele >= ELE_MAX ) {
ShowWarning("Mercenary %d has invalid element type %d (max element is %d)\n", db->class_, mstatus->def_ele, ELE_MAX - 1);
@@ -485,15 +487,17 @@ bool read_mercenarydb_sub(char* str[], int columns, int current) {
return true;
}
-int read_mercenarydb(void) {
+static int read_mercenarydb(void)
+{
memset(mercenary->db, 0, sizeof(struct s_mercenary_db) * MAX_MERCENARY_CLASS);
sv->readdb(map->db_path, "mercenary_db.txt", ',', 26, 26, MAX_MERCENARY_CLASS, mercenary->read_db_sub);
return 0;
}
-bool read_mercenary_skilldb_sub(char* str[], int columns, int current)
-{// <merc id>,<skill id>,<skill level>
+static bool read_mercenary_skilldb_sub(char *str[], int columns, int current)
+{
+ // <merc id>,<skill id>,<skill level>
struct s_mercenary_db *db;
int i, class_;
uint16 skill_id, skill_lv;
@@ -524,13 +528,15 @@ bool read_mercenary_skilldb_sub(char* str[], int columns, int current)
return true;
}
-int read_mercenary_skilldb(void) {
+static int read_mercenary_skilldb(void)
+{
sv->readdb(map->db_path, "mercenary_skill_db.txt", ',', 3, 3, -1, mercenary->read_skill_db_sub);
return 0;
}
-void do_init_mercenary(bool minimal) {
+static void do_init_mercenary(bool minimal)
+{
if (minimal)
return;
@@ -541,11 +547,12 @@ void do_init_mercenary(bool minimal) {
}
/*=====================================
-* Default Functions : mercenary.h
-* Generated by HerculesInterfaceMaker
-* created by Susu
-*-------------------------------------*/
-void mercenary_defaults(void) {
+ * Default Functions : mercenary.h
+ * Generated by HerculesInterfaceMaker
+ * created by Susu
+ *-------------------------------------*/
+void mercenary_defaults(void)
+{
mercenary = &mercenary_s;
/* vars */
diff --git a/src/map/mercenary.h b/src/map/mercenary.h
index 0af75e8a2..65e8d5338 100644
--- a/src/map/mercenary.h
+++ b/src/map/mercenary.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -92,7 +92,7 @@ struct mercenary_data {
struct regen_data regen;
struct s_mercenary_db *db;
struct s_mercenary mercenary;
- char blockskill[MAX_SKILL];
+ char blockskill[MAX_SKILL_DB];
struct map_session_data *master;
int contract_timer;
diff --git a/src/map/messages.h b/src/map/messages.h
new file mode 100644
index 000000000..5bfd476a2
--- /dev/null
+++ b/src/map/messages.h
@@ -0,0 +1,36 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) Athena Dev Teams
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef MAP_MESSAGES_H
+#define MAP_MESSAGES_H
+
+#if defined(PACKETVER_ZERO)
+#include "map/messages_zero.h"
+#elif defined(PACKETVER_RE)
+#include "map/messages_re.h"
+#elif defined(PACKETVER_SAK)
+#include "map/messages_sak.h"
+#elif defined(PACKETVER_AD)
+#include "map/messages_ad.h"
+#else
+#include "map/messages_main.h"
+#endif
+
+#endif /* MAP_MESSAGES_H */
diff --git a/src/map/messages_ad.h b/src/map/messages_ad.h
new file mode 100644
index 000000000..e0a4e5c98
--- /dev/null
+++ b/src/map/messages_ad.h
@@ -0,0 +1,7311 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2013-2019 Hercules Dev Team
+ * Copyright (C) 2018-2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef MAP_MESSAGES_AD_H
+#define MAP_MESSAGES_AD_H
+
+/* This file is autogenerated, please do not commit manual changes
+
+Latest version: 20080701
+*/
+
+enum clif_messages {
+/*20040804 to latest
+동의 하십니까?
+Do you agree?
+*/
+ MSG_DO_YOU_AGREE = 0x0,
+/*20040804 to latest
+서버 연결 실패
+Failed to Connect to Server.
+*/
+ MSG_SERVER_CONNECTION_FAILED = 0x1,
+/*20040804 to latest
+서버와 연결이 끊어졌습니다.
+Disconnected from Server.
+*/
+ MSG_UNABLE_TO_CONNECT_SERVER = 0x2,
+/*20040804 to 20080617
+서버와 연결이 끊어졌습니다.
+Disconnected from Server.
+20080624 to latest
+서버와 연결이 끊어졌습니다!
+Disconnected from Server!
+*/
+ MSG_BANNED = 0x3,
+/*20040804 to latest
+서버 종료됨
+Server Closed.
+*/
+ MSG_SERVER_OFF = 0x4,
+/*20040804 to latest
+같은 계정으로 다른 사용자가 로그인 하였습니다.
+Someone has Logged in with this ID.
+*/
+ MSG_DOUBLE_LOGIN_PROHIBITED = 0x5,
+/*20040804 to latest
+등록되지 않은 계정입니다. 다시 확인 바랍니다.
+Unregistered ID. Please make sure you have a registered account and you have correctly typed in the user ID.
+*/
+ MSG_INCORRECT_USERID = 0x6,
+/*20040804 to 20070704
+비밀번호가 틀립니다
+20070710 to latest
+입력하신 비밀번호가 올바르지 않습니다.
+Incorrect User ID or Password. Please try again.
+*/
+ MSG_INCORRECT_PASSWORD = 0x7,
+/*20040804 to latest
+본 ID 는 사용기간이 만료 되었습니다
+This ID is expired.
+*/
+ MSG_ID_EXPIRED = 0x8,
+/*20040804 to latest
+서버 접근 거부
+Rejected from Server.
+*/
+ MSG_ACCESS_DENIED = 0x9,
+/*20040804 to latest
+같은 캐릭터 이름이 있습니다.
+Character Name already exists.
+*/
+ MSG_CHARACTER_NAME_ALREADY_EXISTS = 0xa,
+/*20040804 to latest
+캐릭터 생성 거부됨
+Character Creation is denied.
+*/
+ MSG_CHARACTER_CREATION_DENIED = 0xb,
+/*20040804 to latest
+캐릭터 삭제 거부
+Character Deletion is denied.
+*/
+ MSG_CANNOT_DELETE_CHARACTER = 0xc,
+/*20040804 to latest
+방제목를 입력하세요.
+Please Enter Room Title.
+*/
+ MSG_ENTER_ROOM_TITLE = 0xd,
+/*20040804 to latest
+불량단어가 검출되었습니다.
+Foul Language Detected.
+*/
+ MSG_BAD_SENTANGE = 0xe,
+/*20040804 to latest
+암호를 입력하세요.
+Please enter Password.
+*/
+ MSG_ENTER_PASSWORD = 0xf,
+/*20040804 to latest
+암호를 영문 4자 이상 입력하세요.
+Please enter Password. Passwords must be at least 4 characters long.
+*/
+ MSG_Enter_Password_more_than_4_char = 0x10,
+/*20040804 to latest
+종료 하시겠습니까?
+Are you sure that you want to quit?
+*/
+ MSG_DO_YOU_REALLY_WANT_TO_QUIT = 0x11,
+/*20040804 to latest
+4자 이상 입력해주세요. 사용자 계정이 없으신분들은 왼쪽 하단의 [신청] 버튼을 눌러 계정을 만드시기 바랍니다.
+Passwords are at least 4 characters long. Please try again.
+*/
+ MSG_NAME_MUST_EXCEED_4_CHAR = 0x12,
+/*20040804 to 20070704
+캐릭터를 삭제하겠습니까?
+20070618 to latest
+한 번 삭제된 캐릭터 및 관련 정보는 다시 복구되지 않습니다. 캐릭터를 삭제하시겠습니까?
+Are you sure that you want to delete this character?
+*/
+ MSG_DELETE_CHARACTER = 0x13,
+/*20040804 to latest
+불량단어가 검출되었습니다.
+Foul Language Detected.
+*/
+ MSG_BAD_NAME = 0x14,
+/*20040804 to latest
+이름을 입력해 주세요.(한글 2자 영문 4자 이상)
+Character Name must be at least 4 characters long.
+*/
+ MSG_ENTER_NAME_MORE_THAN_4_CHAR = 0x15,
+/*20040804 to latest
+명령어 일람: /h
+Command List: /h | /help
+*/
+ MSG_LIST_COMMAND = 0x16,
+/*20040804 to latest
+이펙트 On
+Effects On
+*/
+ MSG_EFFECT_ON = 0x17,
+/*20040804 to latest
+이펙트 Off
+Effects Off
+*/
+ MSG_EFFECT_OFF = 0x18,
+/*20040804 to latest
+사운드 볼륨
+Sound Volume
+*/
+ MSG_VOLUME_OF_SOUND = 0x19,
+/*20040804 to latest
+배경음악 볼륨
+BGM Volume
+*/
+ MSG_VOLUME_OF_BGM = 0x1a,
+/*20040804 to latest
+효과음 On
+Sound Effects On
+*/
+ MSG_SOUND_ON = 0x1b,
+/*20040804 to latest
+효과음 Off
+Sound Effects Off
+*/
+ MSG_SOUND_OFF = 0x1c,
+/*20040804 to latest
+프레임스킵 On
+Frame Skip On
+*/
+ MSG_FRAME_SKIP_ON = 0x1d,
+/*20040804 to latest
+프레임스킵 Off
+Frame Skip Off
+*/
+ MSG_FRAME_SKIP_OFF = 0x1e,
+/*20040804 to latest
+배경음악 On
+BGM On
+*/
+ MSG_BGM_ON = 0x1f,
+/*20040804 to latest
+배경음악 Off
+BGM Off
+*/
+ MSG_BGM_OFF = 0x20,
+/*20040804 to latest
+/h or /help: 명령어 일람
+/h or /help: Shows this Command Help List
+*/
+ MSG_EXPLAIN_HELP = 0x21,
+/*20040804 to latest
+/w or /who or /접속자 or /누구: 현재 접속자수 보기
+/w or /who or /player or /who: wiew current the number of player
+*/
+ MSG_EXPLAIN_WHO = 0x22,
+/*20040804 to latest
+/음악 : 배경음악 On Off
+/music: Turns BGM On or Off
+*/
+ MSG_EXPLAIN_MUSIC = 0x23,
+/*20040804 to latest
+/효과음 : 효과음 On Off
+/sound: Turns Sound Effects On or Off
+*/
+ MSG_EXPLAIN_SOUND = 0x24,
+/*20040804 to latest
+/이펙트 : 이펙트 On Off
+/effect: Effects On or Off
+*/
+ MSG_EXPLAIN_EFFECT = 0x25,
+/*20040804 to latest
+/좌표 or /장소: 현재 위치 표시
+/where: Shows your present location
+*/
+ MSG_EXPLAIN_POS = 0x26,
+/*20040804 to latest
+/skip : 프래임스킵 On Off
+/skip: Turns Frame Skip On or Off
+*/
+ MSG_EXPLAIN_FRAMESKIP = 0x27,
+/*20040804 to latest
+/v (0~127): 효과음 볼륨조정
+/v (0~127): Controls the volume of the Sound Effects
+*/
+ MSG_EXPLAIN_SOUNDVOLUME = 0x28,
+/*20040804 to latest
+/bv (0~127): 배경음악 볼륨조정
+/bv (0~127): Controls the volume of the BGM
+*/
+ MSG_EXPLAIN_BGMVOLUME = 0x29,
+/*20040804 to latest
+/ex (캐릭터이름) or /차단 (캐릭터이름) : 해당캐릭터에 대해 귓말차단
+/ex (Character Name): Blocks whispering from the Character
+*/
+ MSG_EXPLAIN_SAYISOLATION = 0x2a,
+/*20040804 to latest
+/ex or /차단 : 귓말차단 캐릭터 리스트
+/ex: View a list of Characters you have Blocked
+*/
+ MSG_EXPLAIN_LIST_SAYISOLATION_CHAR = 0x2b,
+/*20040804 to latest
+/in (캐릭터이름) or /해제 (캐릭터이름) : 해당캐릭터에 대해 귓말허용
+/in (Character Name): Allows whispering from the Character
+*/
+ MSG_EXPLAIN_SAY_PERMIT = 0x2c,
+/*20040804 to latest
+/inall or /해제전부 : 모두에게 귓말허용
+/inall: Allows whispers from anyone
+*/
+ MSG_EXPLAIN_SAY_PERMITALL = 0x2d,
+/*20040804 to latest
+/exall or /차단전부 : 모두에게 귓말차단
+/exall: Blocks whispers from everyone
+*/
+ MSG_EXPLAIN_SAY_ISOLATEALL = 0x2e,
+/*20040804 to latest
+다른유저 캐릭터를 마우스 오른버튼을 누르고 있는 상태에서 왼버튼으로 클릭하면 그캐릭터이름이 귓말콤보박스에 저장됩니다.
+Right click on a character and select [Register as a Friend] to add a person to your Friend List.
+*/
+ MSG_EXPLAIN_TIP1 = 0x2f,
+/*20040804 to latest
+단축아이탬창(F12) 소비장비 아이템을 드래그한후 사용하세요. 사용키(F1F2F3F4F5F6F7F8F9)
+F12 Brings up a Hotkey Window which allows you to drag and drop Recovery Items, Equipment and Skills into it for faster access.
+*/
+ MSG_EXPLAIN_TIP2 = 0x30,
+/*20040804 to latest
+같은말을 3번이상 연속해서 전송할 수 없습니다.
+You can't type the same word/phrase more than 3 times.
+*/
+ MSG_NO_SAME_SENTANCE = 0x31,
+/*20040804 to latest
+불량단어 검출로 전송이 중단 되었습니다.
+Chat Filter: Yeah, uh, I don't think so buddy...
+*/
+ MSG_NO_SEND_BECAUSE_INSULT = 0x32,
+/*20040804 to latest
+같은아이템은 한번만 올릴수 있습니다.
+You cannot overlap items on a window.
+*/
+ MSG_CAN_DRAG_ITEM_OLNY_ONETIME = 0x33,
+/*20040804 to latest
+무게가 초과하여 아이템을 가질 수 없습니다.
+You cannot carry more items because you are overweight.
+*/
+ MSG_CANT_GET_ITEM_BECAUSE_WEIGHT = 0x34,
+/*20040804 to latest
+아이템을 가질 수 없습니다.
+You cannot get the item.
+*/
+ MSG_CANT_GET_ITEM = 0x35,
+/*20040804 to latest
+거래가 잘 이루어졌습니다.
+The deal has successfully completed.
+*/
+ MSG_DEAL_SECCESS = 0x36,
+/*20040804 to latest
+돈이 부족합니다.
+You do not have enough zeny.
+*/
+ MSG_INSUFFICIENT_MONEY = 0x37,
+/*20040804 to latest
+무게가 초과 되었습니다.
+You are over your Weight Limit.
+*/
+ MSG_OVER_WEIGHT = 0x38,
+/*20040804 to latest
+거래가 실패 했습니다.
+The deal has failed.
+*/
+ MSG_DEAL_FAIL = 0x39,
+/*20040804 to latest
+모두에게 귓말거부상태로됨
+You've blocked whispers from everyone.
+*/
+ MSG_REFUSE_HEAR_ALL = 0x3a,
+/*20040804 to latest
+모두에게 귓말거부요청 실패함
+You've failed to block all whispers.
+*/
+ MSG_REQ_REFUSE_HEAR_ALL_FAIL = 0x3b,
+/*20040804 to latest
+모두에게 귓말가능상태가됨
+You've allowed whispers from everyone.
+*/
+ MSG_HEAR_ALL = 0x3c,
+/*20040804 to latest
+모두에게 귓말가능요청 실패함
+You've failed to allow all whispers.
+*/
+ MSG_REQ_HEAR_ALL_FAIL = 0x3d,
+/*20040804 to latest
+귓말 거부 리스트가 없습니다
+You have no Block List.
+*/
+ MSG_NO_REFUSE_HEAR_LIST = 0x3e,
+/*20040804 to latest
+-귓말 거부 리스트-
+[ Character Block List ]
+*/
+ MSG_REFUSE_HEAR_LIST = 0x3f,
+/*20040804 to latest
+방이 잘 만들어 졌습니다.
+Room has been successfully created.
+*/
+ MSG_ROOM_IS_MADE = 0x40,
+/*20040804 to latest
+방갯수가 허용갯수를 초과 하였습니다.
+Room Limit Exceeded.
+*/
+ MSG_TOO_MANY_ROOM = 0x41,
+/*20040804 to latest
+같은 방제목이 있습니다.
+Same Room exists.
+*/
+ MSG_SAME_ROOM_TITLE = 0x42,
+/*20040804 to latest
+인원초과로 방에 들어갈 수 없습니다.
+The Room is full.
+*/
+ MSG_TOO_MANY_PEOPLE_IN_ROOM = 0x43,
+/*20040804 to latest
+강제로 퇴장된 방입니다.
+You have been kicked out of this room.
+*/
+ MSG_YOU_HAVE_BANNED_FROM_THE_ROOM = 0x44,
+/*20040804 to latest
+교환요청을 거절 했습니다.
+The deal has been rejected.
+*/
+ MSG_REJECT_DEAL = 0x45,
+/*20040804 to latest
+교환가능거리를 벗어났습니다.
+You are too far away from the person to trade.
+*/
+ MSG_TOO_FAR_TO_DEAL = 0x46,
+/*20040804 to latest
+해당 캐릭터가 없습니다.
+The Character is not currently online or does not exist.
+*/
+ MSG_CHARACTER_IS_NOT_EXIST = 0x47,
+/*20040804 to latest
+다른캐릭터와 교환중입니다.
+The person is in another deal.
+*/
+ MSG_CHARACTER_IS_DEALING = 0x48,
+/*20040804 to latest
+상태캐릭터 중량초과로 올려놓을수가 없습니다.
+*/
+ MSG_CHARACTER_IS_OVER_WEIGHT = 0x49,
+/*20040804 to latest
+거래가 취소 되었습니다.
+The deal has been canceled.
+*/
+ MSG_DEAL_IS_CANCELED = 0x4a,
+/*20040804 to latest
+아이템 교환이 잘 되었습니다.
+The deal has successfully completed.
+*/
+ MSG_DEAL_SUCCESS = 0x4b,
+/*20040804 to latest
+아이템 교환이 실패 하였습니다.
+The deal has failed.
+*/
+ MSG_DEAL_FAILED = 0x4c,
+/*20040804 to latest
+파티가 만들어졌습니다.
+Party has successfully been organized.
+*/
+ MSG_PARTY_MAKE_SUCCEED = 0x4d,
+/*20040804 to latest
+같은 파티이름이 있습니다.
+That Party Name already exists.
+*/
+ MSG_SAME_PARTY_NAME = 0x4e,
+/*20040804 to latest
+이미 파티에 속해있습니다.
+The Character is already in a party.
+*/
+ MSG_YOU_ARE_ALREADY_IN_PARTY = 0x4f,
+/*20040804 to latest
+다른파티에 가입되어 있습니다.
+The Character already joined another party.
+*/
+ MSG_CHARACTER_IS_ALREADY_IN_PARTY = 0x50,
+/*20040804 to latest
+파티가입을 거부했습니다.
+Request for party rejected.
+*/
+ MSG_CHARACTER_REJECT_JOIN = 0x51,
+/*20040804 to latest
+파티가입을 수락했습니다.
+Request for party accepted.
+*/
+ MSG_CHARACTER_ACCEPT_JOIN = 0x52,
+/*20040804 to latest
+파티정원을 초과했습니다.
+Party Capacity exceeded.
+*/
+ MSG_TOO_MANY_PEOPLE_IN_PARTY = 0x53,
+/*20040804 to latest
+파티에서 탈퇴하였습니다.
+You left the party.
+*/
+ MSG_YOU_LEAVE_FROM_PARTY = 0x54,
+/*20040804 to latest
+전체에게 보냄
+Send to All
+*/
+ MSG_SEND_TO_ALL = 0x55,
+/*20040804 to latest
+파티에게 보냄
+Send to Party
+*/
+ MSG_SEND_TO_PARTY = 0x56,
+/*20040804 to latest
+님과의 거래요청
+Request a deal with %s
+*/
+ MSG_REQ_DEAL_WITH = 0x57,
+/*20040804 to latest
+님 파티에 가입요청
+Ask %s to join your party
+*/
+ MSG_REQ_JOIN_PARTY = 0x58,
+/*20040804 to latest
+비공개 :
+Pri:
+*/
+ MSG_ROOM_PRIVATE = 0x59,
+/*20040804 to latest
+공개 :
+Pub:
+*/
+ MSG_ROOM_PUBLIC = 0x5a,
+/*20040804 to latest
+마지막 체크지점부터 시작하려면 '재시작'을 캐릭터 선택으로 돌아가려면 '종료'를 눌러주세요.
+Click ''Restart'' to go back to your save point or click ''Exit'' to select another character.
+*/
+ MSG_RESTART_MSG = 0x5b,
+/*20040804 to latest
+원하는 거래를 선택하세요.
+Please select a Deal Type.
+*/
+ MSG_SELECT_DEAL_TYPE = 0x5c,
+/*20040804 to latest
+님이 거래를 요청했습니다.
+ requests a deal.
+*/
+ MSG_SUGGEST_DEAL = 0x5d,
+/*20040804 to latest
+ 파티에서 초청 메시지가 왔습니다. 합류하겠습니까?
+ Party has sent you an invitation. Would you like to join?
+*/
+ MSG_SUGGEST_JOIN_PARTY = 0x5e,
+/*20040804 to latest
+명령이 틀렸습니다.
+Invalid Command
+*/
+ MSG_INVALID_COMMAND = 0x5f,
+/*20040804 to latest
+탈퇴하기
+Leave party
+*/
+ MSG_LEAVE_PARTY = 0x60,
+/*20040804 to latest
+제명시키기
+Expel
+*/
+ MSG_EXPEL = 0x61,
+/*20040804 to latest
+쪽지보내기
+Send Message
+*/
+ MSG_MSG = 0x62,
+/*20040804 to latest
+1:1 대화
+1:1 Chat
+*/
+ MSG_1ON1 = 0x63,
+/*20040804 to latest
+정보
+Information
+*/
+ MSG_CHARACTER_INFO = 0x64,
+/*20040804 to latest
+파티설정
+Party Setup
+*/
+ MSG_PARTY_SETTING = 0x65,
+/*20040804 to latest
+친구
+Friend
+*/
+ MSG_FRIEND = 0x66,
+/*20040804 to latest
+파티
+Party
+*/
+ MSG_PARTY = 0x67,
+/*20040804 to latest
+장착아이템
+Equipment
+*/
+ MSG_EQUIPED_ITEM = 0x68,
+/*20040804 to latest
+스테이터스
+Status
+*/
+ MSG_STATUS_ = 0x69,
+/*20040804 to latest
+소지아이템
+Inventory
+*/
+ MSG_ITEM = 0x6a,
+/*20040804 to latest
+/결성 [파티이름] : 파티결성 /탈퇴 : 파티탈퇴
+/organize ''Party Name'' To organize a party. Type /leave To leave a Party.
+*/
+ MSG_EXPLAIN_PARTY = 0x6b,
+/*20040804 to latest
+자신이 파티리더일때 캐릭터를 오른버튼으로 클릭하면 파티에 가입요청하기 메뉴가 뜹니다.
+If you are the party master, you can invite someone into your party by right-clicking on a Character.
+*/
+ MSG_EXPLAIN_TIP3 = 0x6c,
+/*20040804 to latest
+회복
+Consumables
+*/
+ MSG_RESTORE = 0x6d,
+/*20040804 to latest
+공격
+Attack
+*/
+ MSG_ATTACK = 0x6e,
+/*20040804 to latest
+보조
+Support
+*/
+ MSG_SUPPORT = 0x6f,
+/*20040804 to latest
+전체
+All
+*/
+ MSG_ALL = 0x70,
+/*20040804 to latest
+무기
+Weapons
+*/
+ MSG_WEAPON = 0x71,
+/*20040804 to latest
+방어
+Defense
+*/
+ MSG_DEFENCE = 0x72,
+/*20040804 to latest
+수
+Water
+*/
+ MSG_WATER = 0x73,
+/*20040804 to latest
+지
+Earth
+*/
+ MSG_EARTH = 0x74,
+/*20040804 to latest
+화
+Fire
+*/
+ MSG_FIRE = 0x75,
+/*20040804 to latest
+풍
+Wind
+*/
+ MSG_WIND = 0x76,
+/*20040804 to latest
+같은종류의 장비아이템은 한번에 한개만 살 수 있습니다.
+Please avoid buying 2 of the same items at one time.
+*/
+ MSG_EQUIPITEM_OLNY_ONE = 0x77,
+/*20040804 to latest
+창모드에서 실행 할때는 16비트 컬러로 맞춰주세요.
+Please change your desktop Color Depth to 16-bit when running Ragnarok in windowed mode.
+*/
+ MSG_ONLY_16BIT_WHEN_WINDOWMODE = 0x78,
+/*20040804 to latest
+잠시만 기다려 주세요.
+Please wait...
+*/
+ MSG_PLEASE_BE_PATIENT = 0x79,
+/*20040804 to latest
+잠시만 기다려 주세요.
+Please wait...
+*/
+ MSG_WAITING_RESPONSE_FROM_SERVER = 0x7a,
+/*20040804 to latest
+잠시만 기다려 주세요.
+Please wait...
+*/
+ MSG_MAKING_CHARACTER = 0x7b,
+/*20040804 to latest
+잠시만 기다려 주세요.
+Please wait...
+*/
+ MSG_DELETING_CHARACTER = 0x7c,
+/*20040804 to latest
+방 만들기
+Make a Room
+*/
+ MSG_MAKING_ROOM = 0x7d,
+/*20040804 to latest
+방셋팅 바꾸기
+Room Setup
+*/
+ MSG_CHANGE_ROOM_SETTING = 0x7e,
+/*20040804 to latest
+강퇴시키기
+Kick Character Out
+*/
+ MSG_BAN = 0x7f,
+/*20040804 to latest
+방장권한 주기
+Give Master Authority
+*/
+ MSG_GIVE_GIVE_ROOM_POWER = 0x80,
+/*20040804 to latest
+정보보기
+View Information
+*/
+ MSG_SEE_INFORMATION_OF_CHARACTER = 0x81,
+/*20040804 to latest
+대화방
+Chat Room
+*/
+ MSG_CHAT_ROOM = 0x82,
+/*20040804 to latest
+명
+Ppl
+*/
+ MSG_COUNT_UNIT_OF_PEOPLE = 0x83,
+/*20040804 to latest
+/앉기 or /sit : 앉기. 앉아있을때 서기
+/sit: Sit command. If you are sitting, you will stand instead.
+*/
+ MSG_EXPLAIN_SIT = 0x84,
+/*20040804 to latest
+/서기 or /stand : 서기. 서있을때 앉기
+/stand: Stand command. If you are standing, you will sit instead.
+*/
+ MSG_EXPLAIN_STAND = 0x85,
+/*20040804 to latest
+/채팅방 or /chat : 채팅방 만들기창 띄우기
+/chat: Creates a Chat Room
+*/
+ MSG_EXPLAIN_MAKE_CHAT = 0x86,
+/*20040804 to latest
+/q : 채팅방 나가기.
+/q: Leaves a Chat Room
+*/
+ MSG_EXPLAIN_EXIT_CHAT_ROOM = 0x87,
+/*20040804 to latest
+/거래 [캐릭터이름] or /교환 [캐릭터이름] or /deal [캐릭터이름] : 해당 캐릭터와 거래요청
+/deal ''Character Name'' Requests a deal with a character
+*/
+ MSG_EXPLAIN_DEAL = 0x88,
+/*20040804 to latest
+/결성 [파티이름] or /organize [파티이름] : 파티결성
+/organize ''Party Name'' Organizes a party
+*/
+ MSG_EXPLAIN_ORGANIZE_PARTY = 0x89,
+/*20040804 to latest
+/탈퇴 or /leave : 파티 탈퇴
+/leave: Leaves a party
+*/
+ MSG_EXPLAIN_LEAVE_PARTY = 0x8a,
+/*20040804 to latest
+/제명 [캐릭터이름] or /expel [캐릭터이름] : 해당캐릭터를 파티에서 제명시킴
+/expel ''Character Name'' kicks a Character out of your party
+*/
+ MSG_EXPLAIN_EXPEL_PARTY_MEMBER = 0x8b,
+/*20040804 to latest
+[Alt] + [End] : 플레이어 hp/sp 게이지 On Off
+[Alt] + [End]: Turns HP/SP Bar On or Off
+*/
+ MSG_EXPLAIN_TIP4 = 0x8c,
+/*20040804 to latest
+[Alt] + [Home] : 지면 커서 표시 On Off
+[Alt] + [Home]: Turns Ground Cursor On or Off
+*/
+ MSG_EXPLAIN_TIP5 = 0x8d,
+/*20040804 to latest
+[Insert] : 앉기 서기
+[Insert]: Makes you sit or stand. (Hotkey to toggle between /sit and /stand)
+*/
+ MSG_EXPLAIN_TIP6 = 0x8e,
+/*20040804 to latest
+MVP가 되셨습니다!! MVP 아이템은
+Congratulations! You are the MVP! Your reward item is
+*/
+ MSG_YOU_RECEIVE_MVP_ITEM = 0x8f,
+/*20040804 to latest
+ !!
+!!
+*/
+ MSG_YOU_RECEIVE_MVP_ITEM2 = 0x90,
+/*20040804 to latest
+MVP가 되셨습니다!! 특별경험치
+Congratulations! You are the MVP! Your reward EXP Points are
+*/
+ MSG_YOU_RECEIVE_MVP_EXP = 0x91,
+/*20040804 to latest
+ 획득!!
+!!
+*/
+ MSG_YOU_RECEIVE_MVP_EXP2 = 0x92,
+/*20040804 to latest
+MVP가 되셨습니다만 무게초과로 MVP 아이템을 가질 수 없었습니다!!
+You are the MVP, but you can't take the reward because you are over your weight limit.
+*/
+ MSG_YOU_THROW_MVPITEM = 0x93,
+/*20040804 to latest
+ 없는 캐릭터 이름 입니다.
+There is no such character name or the user is offline.
+*/
+ MSG_NOT_EXIST_CHARACTER = 0x94,
+/*20040804 to latest
+ 수신 거부 상태입니다.
+ doesn't want to receive your messages.
+*/
+ MSG_NO_RECEIVE_MODE = 0x95,
+/*20040804 to latest
+ 모든 캐릭터에 대해 수신 거부 상태 입니다.
+ is not in the mood to talk with anyone.
+*/
+ MSG_NO_RECEIVE_MODE_FOR_ALL = 0x96,
+/*20040804 to latest
+캐릭터 접속끊기 성공.
+Killed/Disconnected User.
+*/
+ MSG_SUCCESS_DISCONNECT_CHARACTER = 0x97,
+/*20040804 to latest
+캐릭터 접속끊기 실패.
+Kill has failed.
+*/
+ MSG_FAIL_DISCONNECT_CHARACTER = 0x98,
+/*20040804 to latest
+%s %d 개 획득
+You got %s (%d).
+*/
+ MSG_GET_ITEM = 0x99,
+/*20040804 to latest
+[Alt] + [=] : 알파벳 간격이 넓어졌을때 되돌리기.
+[Alt] + [=]: Fix the interval error between letters.
+*/
+ MSG_EXPLAIN_TIP7 = 0x9a,
+/*20040804 to latest
+[F10] : 채팅창 크기조정 [Alt] + [F10] : 채팅창 On Off
+[F10]: To toggle Chat Window size; [Alt] + [F10]: Toggle Chat Window On or Off
+*/
+ MSG_EXPLAIN_TIP8 = 0x9b,
+/*20040804 to latest
+귓속말 하는법 : 채팅창 왼쪽 입력란에 캐릭터이름을 입력하고 오른쪽 입력란에 말을 입력하면 됩니다. TAB키로 두입력란 사이로 커서를 이동할 수 있습니다.
+How to Whisper: Enter a Character's Name on the left side of chat window and type your message on the right side. The Tab key helps you move between these boxes.
+*/
+ MSG_EXPLAIN_TIP9 = 0x9c,
+/*20040804 to latest
+/! /? /기쁨 /하트 /땀 /아하 /짜증 /화 /돈 /... /가위 /바위 /보 : Alt + (1~9) Ctrl + (-=\) 에 대응되는 명령어 입니다.
+/!,/?,/ho,/lv,/lv2,/swt,/ic,/an,/ag,/$,/….,/thx,/wah,/sry,/heh,/swt2,/hmm,/no1,/??,/omg,/oh,/X,/hp,/go,/sob,/gg,/kis,/kis2,/pif,/ok: Emotion icons corresponding to Alt + (1~9) Ctrl + (-=\\)
+*/
+ MSG_EXPLAIN_TIP10 = 0x9d,
+/*20040804 to latest
+파티원에게 말하는법 : 말의 제일앞에 '%'를 붙이면 파티원에게 말이 갑니다. (예: "%안녕")
+How to Speak to Party: Add % in front of every message.(Example: \%Hello\)
+*/
+ MSG_EXPLAIN_TIP11 = 0x9e,
+/*20040804 to latest
+스킬레벨이 부족합니다. 교환 불능.
+You haven't learned enough Basic Skills to Trade.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE1 = 0x9f,
+/*20040804 to latest
+스킬레벨이 부족합니다. 이모션 불능.
+You haven't learned enough Basic Skills to use Emotion icons.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE2 = 0xa0,
+/*20040804 to latest
+스킬레벨이 부족합니다. 앉기 불능.
+You haven't learned enough Basic Skills to Sit.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE3 = 0xa1,
+/*20040804 to latest
+스킬레벨이 부족합니다. 채팅방만들기 불능.
+You haven't learned enough Basic Skills to create a chat room.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE4 = 0xa2,
+/*20040804 to latest
+스킬레벨이 부족합니다. 파티만들기 불능
+You haven't learned enough Basic Skills to Party.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE5 = 0xa3,
+/*20040804 to latest
+스킬레벨이 부족합니다. 외치기 불능
+You haven't learned enough skills to Shout.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE6 = 0xa4,
+/*20040804 to latest
+스킬레벨이 부족합니다. pk 불능
+You haven't learned enough skills for Pking.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE7 = 0xa5,
+/*20040804 to latest
+사고자하는 품목
+Buying Items
+*/
+ MSG_ITEMS_FOR_BUY = 0xa6,
+/*20040804 to latest
+아이템 상점
+Item Shop
+*/
+ MSG_ITEM_STORE = 0xa7,
+/*20040804 to latest
+팔고자하는 품목
+Selling Items
+*/
+ MSG_ITEMS_FOR_SELL = 0xa8,
+/*20040804 to latest
+보관아이템
+Storage
+*/
+ MSG_ITEMS_THAT_IS_STORED = 0xa9,
+/*20040804 to latest
+ 장비가 장착 되었습니다.
+ is put on.
+*/
+ MSG_ITEM_IS_EQUIPED = 0xaa,
+/*20040804 to latest
+ 장비가 해제 되었습니다.
+ is taken off.
+*/
+ MSG_ITEM_IS_REMOVED = 0xab,
+/*20040804 to latest
+귓말리스트에 이름넣기
+To add names on the Whispering List
+*/
+ MSG_ADD_TO_WHISPER_CHAR_LIST = 0xac,
+/*20040804 to latest
+스크린샷 찍는법 : [Print Screen]키나 [Scroll Lock]키를 누르면 됩니다.
+How to Take Screen Shots: Press [Print Screen] or [Scroll Lock]
+*/
+ MSG_EXPLAIN_TIP12 = 0xad,
+/*20040804 to latest
+오늘의 팁
+Tip of the Day
+*/
+ MSG_TIPOFTHEDAY = 0xae,
+/*20040804 to latest
+^3850a0알고 계셨습니까... ^000000 //^709fed
+^3850a0Did you know...?^709fed
+*/
+ MSG_DIDYOUKNOW = 0xaf,
+/*20040804 to latest
+시작할때 열기
+Display at startup
+*/
+ MSG_SHOWTIPSATSTARTUP = 0xb0,
+/*20040804 to latest
+/tip : 오늘의팁 열기
+/tip: Opens ''Tip of the Day''
+*/
+ MSG_EXPLAIN_OPENTIP = 0xb1,
+/*20040804 to latest
+현재 접속자 %d명
+There are %d Players Currently Connected.
+*/
+ MSG_NUMPEOPLE = 0xb2,
+/*20040804 to latest
+(%s)님이 입장 하였습니다.
+(%s) has entered.
+*/
+ MSG_USERGETINTHEROOM = 0xb3,
+/*20040804 to latest
+(%s)님이 퇴장 하였습니다.
+(%s) has left.
+*/
+ MSG_USERGETOUTOFTHEROOM = 0xb4,
+/*20040804 to latest
+(%s)님이 강제 퇴장 되었습니다.
+(%s) was kicked out.
+*/
+ MSG_USERGETOUTOFTHEROOMBYFORCE = 0xb5,
+/*20040804 to latest
+ %d 개
+%d ea.
+*/
+ MSG_EA = 0xb6,
+/*20040804 to latest
+%s : %d 개
+%s: %d ea.
+*/
+ MSG_EA2 = 0xb7,
+/*20040804 to latest
+%s %s : %d 개
+%s %s: %d
+*/
+ MSG_EA3 = 0xb8,
+/*20040804 to latest
+팔 수 있는 품목
+Available Items to sell
+*/
+ MSG_ITEMSYOUCANSELL = 0xb9,
+/*20040804 to latest
+상점에서 파는 품목
+Shop Items
+*/
+ MSG_SHOPITEMS = 0xba,
+/*20040804 to latest
+알 수 없는곳
+Unknown Area
+*/
+ MSG_NOWHERE = 0xbb,
+/*20040804 to latest
+서버와 언어가 맞지 않습니다.
+Your Client language doesn't match the Server language.
+*/
+ MSG_CLIENTTYPEMISMATCH = 0xbc,
+/*20040804 to latest
+아이템을 버릴려면 장비창을 닫으세요.
+Please move your equipment to the inventory. And close the equipment window.
+*/
+ MSG_CLOSEEQUIPWND = 0xbd,
+/*20040804 to latest
+영어만 됩니다.
+This server provides English Text Characters Only.
+*/
+ MSG_ENGLISHONLY = 0xbe,
+/*20040804 to latest
+지금은 지원되지 않습니다.
+This is not implemented yet.
+*/
+ MSG_NOTSUPPORTEDYET = 0xbf,
+/*20040804 to latest
+귓말 리스트가 없습니다.
+No Whisper List.
+*/
+ MSG_NOWHISPERLIST = 0xc0,
+/*20040804 to latest
+ 에게 귓말거부상태로됨
+: Whispering Blocked.
+*/
+ MSG_WHISPERIGNORESUCCESS = 0xc1,
+/*20040804 to latest
+ 에게 귓말거부 요청실패함
+: Whispering Block has failed.
+*/
+ MSG_WHISPERIGNOREFAILED1 = 0xc2,
+/*20040804 to latest
+ 에게 귓말거부 요청실패함 (인원초과)
+: Whispering Block has failed. Block List is full.
+*/
+ MSG_WHISPERIGNOREFAILED2 = 0xc3,
+/*20040804 to latest
+ 에게 귓말가능상태로됨
+: Whispering accepted.
+*/
+ MSG_WHISPERNOIGNORESUCCESS = 0xc4,
+/*20040804 to latest
+ 에게 귓말가능 요청실패함
+: Command has failed.
+*/
+ MSG_WHISPERNOIGNOREFAILED1 = 0xc5,
+/*20040804 to latest
+ 에게 귓말가능 요청실패함 (인원초과)
+: Command has failed. Block List is full.
+*/
+ MSG_WHISPERNOIGNOREFAILED2 = 0xc6,
+/*20040804 to latest
+이름의 처음과 마지막에는 공백문자를 사용할 수 없습니다.
+You cannot put a space at the beginning or end of a name.
+*/
+ MSG_NO_SPACE_IN_NAME = 0xc7,
+/*20040804 to latest
+비공개
+Private
+*/
+ MSG_ROOM_PRIVATE2 = 0xc8,
+/*20040804 to latest
+공개
+Public
+*/
+ MSG_ROOM_PUBLIC2 = 0xc9,
+/*20040804 to latest
+SP가 부족합니다.
+Not Enough SP
+*/
+ MSG_USESKILL_FAIL_SP_INSUFFICIENT = 0xca,
+/*20040804 to latest
+HP가 부족합니다.
+Not Enough HP
+*/
+ MSG_USESKILL_FAIL_HP_INSUFFICIENT = 0xcb,
+/*20040804 to latest
+스킬사용 실패.
+Skill has failed.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE8 = 0xcc,
+/*20040804 to latest
+훔치기 실패.
+Steal has failed.
+*/
+ MSG_FAIL_STEAL = 0xcd,
+/*20040804 to latest
+교환창
+Trade
+*/
+ MSG_EXCHANGE = 0xce,
+/*20040804 to latest
+독걸기 실패.
+Envenom skill has failed.
+*/
+ MSG_FAIL_POISON = 0xcf,
+/*20040804 to latest
+이 아이디로는 이 서버에 접속할 수 없습니다.
+You cannot use this ID on this server.
+*/
+ MSG_ID_MISMATCH = 0xd0,
+/*20040804 to latest
+스피드가 향상되었습니다.
+Your Speed has increased.
+*/
+ MSG_SPEEDUP = 0xd1,
+/*20040804 to latest
+스피드가 감소되었습니다.
+Your Speed has decreased.
+*/
+ MSG_SPEEDDOWN = 0xd2,
+/*20040804 to latest
+/기억 : 워프할 장소 기억(워프 스킬이 있는경우)
+/memo: To memorize a place as Warp Point (If you are an Acolyte Class character)
+*/
+ MSG_EXPLAIN_TIP13 = 0xd3,
+/*20040804 to latest
+임의의 위치
+Random Area
+*/
+ MSG_RANDOM_POS = 0xd4,
+/*20040804 to latest
+워프 할 위치를 선택하세요.
+Select an Area to Warp
+*/
+ MSG_SELECTWHERETOWARP = 0xd5,
+/*20040804 to latest
+스킬레벨이 부족합니다.
+Skill Level is not high enough
+*/
+ MSG_NOTENOUGHSKILLLEVEL = 0xd6,
+/*20040804 to latest
+저장된 워프할 장소가 없습니다.
+There are no memorized locations (Memo Points).
+*/
+ MSG_NO_STORED_PLACE_TO_WARP = 0xd7,
+/*20040804 to latest
+워프 관련 스킬이 없습니다.
+You haven't learned Warp.
+*/
+ MSG_NOWARPSKILL = 0xd8,
+/*20040804 to latest
+워프 장소로 저장됨.
+Saved location as a Memo Point for Warp Skill.
+*/
+ MSG_WARPPOINTSTORED = 0xd9,
+/*20040804 to latest
+취소
+Cancel
+*/
+ MSG_CANCEL = 0xda,
+/*20040804 to latest
+스킬 사용후 시간이 충분히 지나지 않았습니다.
+There is a Delay after using a Skill.
+*/
+ MSG_SKILLINTERVAL = 0xdb,
+/*20040804 to latest
+한번에 가질 수 있는 아이템 종류수를 초과하여 아이템을 가질 수 없습니다.
+You can't have this item because you will exceed the weight limit.
+*/
+ MSG_CANT_GET_ITEM_BECAUSE_COUNT = 0xdc,
+/*20040804 to latest
+아이템 최대 종류수를 초과 하였습니다.
+Out of the maximum capacity
+*/
+ MSG_INSUFFICIENT_OVER_COUNT = 0xdd,
+/*20040804 to latest
+수레아이템
+Cart Items
+*/
+ MSG_MERCHANTITEM = 0xde,
+/*20040804 to latest
+수레 벗기
+Take off Cart
+*/
+ MSG_CARTOFF = 0xdf,
+/*20040804 to latest
+노점 개설
+Opening a stall
+*/
+ MSG_MERCHANTSHOPMAKER = 0xe0,
+/*20040804 to 20041207
+노점이름를 입력하세요.
+20041213 to latest
+노점이름을 입력하세요.
+Please Name your Shop.
+*/
+ MSG_ENTER_SHOP_TITLE = 0xe1,
+/*20040804 to latest
+나의 노점
+My Shop
+*/
+ MSG_ITEM_MY_STORE = 0xe2,
+/*20040804 to latest
+상인 아이템 상점
+Merchant Shop
+*/
+ MSG_ITEM_MERCHANT_STORE = 0xe3,
+/*20040804 to latest
+상인에게 사고자하는 품목
+Buying Items
+*/
+ MSG_ITEMS_FOR_BUY_FROM_MERCHANT = 0xe4,
+/*20040804 to latest
+%s 사기 실패 %s
+*/
+ MSG_FAIL_BUY_ITEM_FROM_MERCHANT = 0xe5,
+/*20040804 to latest
+재고 부족.
+Out of Stock
+*/
+ MSG_INSUFFICIENT_STOCK = 0xe6,
+/*20040804 to latest
+%s %d 개 팔림.
+%s %d sold.
+*/
+ MSG_ITEM_IS_SOLD = 0xe7,
+/*20040804 to latest
+노점에서 팔 수 있는 아이템
+Available Items for Vending
+*/
+ MSG_MERCHANTMIRRORITEM = 0xe8,
+/*20040804 to latest
+돈이 부족해서 스킬을 쓸 수 없습니다.
+*/
+ MSG_SKILL_FAIL_MONEY = 0xe9,
+/*20040804 to latest
+사용할 대상을 선택하세요
+Select a Target.
+*/
+ MSG_SELECTTARGET = 0xea,
+/*20040804 to latest
+/pk on : pk On /pk off : pk Off
+/pk on: Turns PK On. /pk off: Turns PK Off.
+*/
+ MSG_EXPLAIN_TIP14 = 0xeb,
+/*20040804 to latest
+노점
+Shop
+*/
+ MSG_STREETSHOP = 0xec,
+/*20040804 to latest
+수레 아이템 [Alt+W]
+Cart Items [Alt+W]
+*/
+ MSG_OPENCARTWINDOW = 0xed,
+/*20040804 to latest
+기본정보
+Basic Information
+*/
+ MSG_BASICINFOWND = 0xee,
+/*20040804 to latest
+이무기로는 이스킬을 사용할수 없습니다.
+The skill cannot be used with this weapon.
+*/
+ MSG_USESKILL_FAIL_NOT_SUITABLE_WEAPON = 0xef,
+/*20040804 to latest
+%s 사기 실패 재고 부족 현재 재고 %d 개.
+Buying %s has been failed. Out of Stock. Current Stock %d.
+*/
+ MSG_FAIL_BUY_ITEM_FROM_MERCHANT_NO_STOCK = 0xf0,
+/*20040804 to latest
+서버와 동기화가 틀려 연결이 끊어졌습니다.
+You've been disconnected due to a time gap between you and the server.
+*/
+ MSG_SPEEDHACK = 0xf1,
+/*20040804 to latest
+화살을 장착하세요
+Please equip the proper ammunition first.
+*/
+ MSG_ERR_ATTACK_ARROW = 0xf2,
+/*20040804 to latest
+중량과다로 공격이나 스킬을 사용할 수 없습니다.
+You can't attack or use skills because you've exceeded the Weight Limit.
+*/
+ MSG_ERR_ATTACK_WEIGHT = 0xf3,
+/*20040804 to latest
+중량과다로 스킬을 사용할 수 없습니다.
+You can't use skills because you've exceeded the Weight Limit.
+*/
+ MSG_ERR_SKILL_WEIGHT = 0xf4,
+/*20040804 to latest
+화살이 장착되었습니다.
+Ammunition has been equipped.
+*/
+ MSG_MSG_ARROW_EQUIPMENT_SUCCESS = 0xf5,
+/*20040804 to latest
+레드젬스톤이 필요합니다.
+Red Gemstone required.
+*/
+ MSG_NEED_REDJAMSTONE = 0xf6,
+/*20040804 to latest
+블루젬스톤이 필요합니다.
+Blue Gemstone required.
+*/
+ MSG_NEED_BLUEJAMSTONE = 0xf7,
+/*20040804 to latest
+힘 파라메터
+Strength
+*/
+ MSG_DESC_STR = 0xf8,
+/*20040804 to latest
+민첩성 파라메터
+Agility
+*/
+ MSG_DESC_AGI = 0xf9,
+/*20040804 to latest
+체력 파라메터
+Vitality
+*/
+ MSG_DESC_VIT = 0xfa,
+/*20040804 to latest
+지력 파라메터
+Intelligence
+*/
+ MSG_DESC_INT = 0xfb,
+/*20040804 to latest
+손재주 파라메터
+Dexterity
+*/
+ MSG_DESC_DEX = 0xfc,
+/*20040804 to latest
+운 파라메터
+Luck
+*/
+ MSG_DESC_LUK = 0xfd,
+/*20040804 to latest
+공격력
+Hit Point
+*/
+ MSG_DESC_ATK = 0xfe,
+/*20040804 to latest
+방어력
+Defence Rate
+*/
+ MSG_DESC_DEF = 0xff,
+/*20040804 to latest
+명중률
+Accuracy
+*/
+ MSG_DESC_HIT = 0x100,
+/*20040804 to latest
+필살공격률
+Critical Attack
+*/
+ MSG_DESC_CRI = 0x101,
+/*20040804 to latest
+소속길드
+Affiliated Guild
+*/
+ MSG_DESC_GUILD = 0x102,
+/*20040804 to latest
+각 파라메터 레벨업에 사용되는 포인트
+Points to level up each Parameter
+*/
+ MSG_DESC_POINT = 0x103,
+/*20040804 to latest
+마법공격력
+Magic Attack
+*/
+ MSG_DESC_MATK = 0x104,
+/*20040804 to latest
+마법방어력
+Magic Defense
+*/
+ MSG_DESC_MDEF = 0x105,
+/*20040804 to latest
+회피율
+Dodge
+*/
+ MSG_DESC_FLEE = 0x106,
+/*20040804 to latest
+공격스피드
+Attack Speed
+*/
+ MSG_DESC_ASPD = 0x107,
+/*20040804 to latest
+지역당 수용인원 초과로 접속할 수 없습니다.
+Server is jammed due to over population. Please try again shortly.
+*/
+ MSG_PC_OVERFLOW = 0x108,
+/*20040804 to latest
+옵션
+Option
+*/
+ MSG_OPTIONWND = 0x109,
+/*20040804 to latest
+E-MAIL 인증이 되지않았거나 블럭된 계정입니다.
+Account ID blocked by the Game Master Team.
+*/
+ MSG_ID_EMAIL_CONFIRM_NEEDED = 0x10a,
+/*20040804 to latest
+비밀번호가 틀립니다.
+Incorrect User ID or Password. Please try again.
+*/
+ MSG_INCORRECT_LOGIN_PASSWORD = 0x10b,
+/*20040804 to latest
+머리모양 선택
+Choose Hairstyle
+*/
+ MSG_SELECT_HAIR_STYLE = 0x10c,
+/*20040804 to latest
+공격력
+Hit Point
+*/
+ MSG_ATK = 0x10d,
+/*20040804 to latest
+방어력
+Defence Rate
+*/
+ MSG_DEF = 0x10e,
+/*20040804 to latest
+공격스냅 On
+Attack Snap On
+*/
+ MSG_ATTACK_SNAP_ON = 0x10f,
+/*20040804 to latest
+공격스냅 Off
+Attack Snap Off
+*/
+ MSG_ATTACK_SNAP_OFF = 0x110,
+/*20040804 to latest
+스킬스냅 On
+Skill Snap On
+*/
+ MSG_SKILL_SNAP_ON = 0x111,
+/*20040804 to latest
+스킬스냅 Off
+Skill Snap Off
+*/
+ MSG_SKILL_SNAP_OFF = 0x112,
+/*20040804 to latest
+/스냅 or /snap: 몬스터 공격시 스냅 On Off /스킬스냅 or /skillsnap: 스킬로 몬스터 공격시 스냅 On Off /아이템스냅 or /itemsnap: 아이템 주울때 스냅 On Off
+/snap: Turns snap On | Off for fights, /skillsnap: Turns snap On | Off for skills. /itemsnap: Turns snap On | Off for items on the grounds.
+*/
+ MSG_EXPLAIN_SNAP = 0x113,
+/*20040804 to latest
+아이템스냅 On
+Item Snap On
+*/
+ MSG_ITEM_SNAP_ON = 0x114,
+/*20040804 to latest
+아이템스냅 Off
+Item Snap Off
+*/
+ MSG_ITEM_SNAP_OFF = 0x115,
+/*20040804 to latest
+스냅
+Snap
+*/
+ MSG_SNAP = 0x116,
+/*20040804 to latest
+한가지 아이템을 3만개 이상 가질수 없습니다.
+You cannot carry more than 30,000 of one kind of item.
+*/
+ MSG_CANT_GET_ITEM_OVERCOUNT_ONEITEM = 0x117,
+/*20040804 to latest
+레벨 30이상의 캐릭터는 삭제할 수 없습니다. 삭제를 원하시면 관계자에게 문의 하세요.
+You cannot delete a Character with a level greater than 30. If you want to delete the character please contact a Game Master.
+*/
+ MSG_CANT_DELETE_CHARACTER_OVER_30_LEVEL = 0x118,
+/*20040804 to latest
+이이템 교환중에는 아이템을 사고 팔 수 없습니다.
+*/
+ MSG_FAIL_BUY_ITEM_ITEM_EXCHANGING = 0x119,
+/*20040804 to latest
+상점명
+Shop Name
+*/
+ MSG_STALL_NAME = 0x11a,
+/*20040804 to latest
+스킬목록
+Skill Tree
+*/
+ MSG_SKILLLIST = 0x11b,
+/*20040804 to latest
+스킬포인트 : %d
+Skill Point: %d
+*/
+ MSG_SKILLPOINT = 0x11c,
+/*20040804 to latest
+스킬사용 실패
+Skill has failed.
+*/
+ MSG_USESKILL_FAIL = 0x11d,
+/*20040804 to latest
+패시브
+Passive
+*/
+ MSG_PASSIVE = 0x11e,
+/*20040804 to latest
+각자 취득
+Individual
+*/
+ MSG_EXPDIV1 = 0x11f,
+/*20040804 to latest
+균등하게 분배
+Shared
+*/
+ MSG_EXPDIV2 = 0x120,
+/*20040804 to latest
+각자 취득
+Individual
+*/
+ MSG_ITEMCOLLECT1 = 0x121,
+/*20040804 to latest
+파티 전체 공유
+Party Share
+*/
+ MSG_ITEMCOLLECT2 = 0x122,
+/*20040804 to latest
+파티 설정
+Party Setup
+*/
+ MSG_PARTYSETTING = 0x123,
+/*20040804 to latest
+경험치 분배방식
+How to share EXP
+*/
+ MSG_HOWEXPDIV = 0x124,
+/*20040804 to latest
+아이템 수집방식
+How to share Items
+*/
+ MSG_HOWITEMCOLLECT = 0x125,
+/*20040804 to latest
+파티 리더만 설정할 수 있습니다.
+Only the Party Leader can change this setting.
+*/
+ MSG_ONLY_PARTYMASTER = 0x126,
+/*20040804 to latest
+아이템 갯수 안물어보기
+Toggle Item Amount.
+*/
+ MSG_NOQUESTION_ITEMCOUNT = 0x127,
+/*20040804 to latest
+^ff0000%d^000000 초 후에 캐릭터가 지워집니다. 취소 하려면 취소 버튼을 누르세요.
+Character will be deleted after ^ff0000%d^000000 seconds. Press Cancel to quit.
+*/
+ MSG_CHARARATER_DELETE_COUNT = 0x128,
+/*20040804 to latest
+교환할 수 있는 최대 아이템 갯수는 10가지 입니다.
+You cannot trade more than 10 types of items per trade.
+*/
+ MSG_MAXEXCHANGE_IS_10_KIND = 0x129,
+/*20040804 to latest
+이서버를 이용할 수 없는 나이입니다.
+You are underaged.
+*/
+ MSG_LIMIT_AGE = 0x12a,
+/*20040804 to latest
+이메일 주소를 입력하세요.
+Please enter the deletion password.
+*/
+ MSG_ENTER_EMAIL = 0x12b,
+/*20040804 to latest
+이메일 주소 입력하기
+E-mail Address (Case Sensitive).
+*/
+ MSG_ENTER_EMAIL_TOOLTIP = 0x12c,
+/*20040804 to latest
+이메일 주소가 틀려서 캐릭터가 삭제 되지 않았습니다.
+Character Deletion has failed because you have entered an incorrect e-mail address.
+*/
+ MSG_CANNOT_DELETE_CHARACTER_EMAIL = 0x12d,
+/*20040804 to 20070703
+주민등록번호 뒷자리를 입력하세요.
+20070618 to 20070622
+비밀번호를 한 번 더 입력해 주시기 바랍니다.
+20070704 to latest
+계정 비밀번호를 입력하세요.
+Enter Second Serial Cord of your Social Security number.
+*/
+ MSG_ENTER_PEOPLE_REG_NUMBER = 0x12e,
+/*20040804 to 20070703
+주민등록번호 뒷자리가 틀려서 캐릭터가 삭제 되지 않았습니다.
+20070618 to 20070622
+비밀번호가 맞지 않아 캐릭터가 삭제 되지 않았습니다.
+20070704 to latest
+비밀번호가 틀려서 캐릭터가 삭제 되지 않았습니다.
+Character Deletion has failed because you have entered an incorrect SSN.
+*/
+ MSG_CANNOT_DELETE_CHARACTER_PEOPLE_REG_NUMBER = 0x12f,
+/*20040804 to latest
+한번에 15가지 이상의 아이템을 팔 수 없습니다.
+You can't sell more than 15 types of Items at one time.
+*/
+ MSG_CANT_SELL_OVER_15 = 0x130,
+/*20040804 to latest
+나이제한 때문에 이계정으로 이서버에 접속할 수 없습니다.
+The age limit from commandment tables cannot connect to this server.
+*/
+ MSG_UNDER_AGE = 0x131,
+/*20040804 to latest
+무게가 50 퍼센트 이상일때는 HP SP가 자연적으로 회복이 되지 않습니다.
+HP/SP will not be restored when your carried weight is over 50% of the Weight Limit.
+*/
+ MSG_NO_RECOVER_OVERWEIGHT = 0x132,
+/*20040804 to latest
+무게가 90 퍼센트 이상일때는 공격과 스킬을 사용할 수 없습니다.
+You can't use Skills or Attack while your carried weight is over 90% of your Weight Limit.
+*/
+ MSG_NO_ATTACK_OVERWEIGHT = 0x133,
+/*20040804 to latest
+HP SP가 자연적으로 회복이 가능한 상태가 되었습니다.
+Your HP/SP are now being restored naturally.
+*/
+ MSG_NO_RECOVER_OVERWEIGHT_RELEASED = 0x134,
+/*20040804 to latest
+공격과 스킬이 가능한 상태가 되었습니다.
+Attack and Skills are now available.
+*/
+ MSG_NO_ATTACK_OVERWEIGHT_RELEASED = 0x135,
+/*20040804 to latest
+서버 점검중입니다.
+Your Game's Exe File is not the latest version.
+*/
+ MSG_INVALID_VERSION = 0x136,
+/*20040804 to latest
+아이템이 모두 팔렸습니다.
+Items are sold out.
+*/
+ MSG_ITEM_IS_SOLD_OUT = 0x137,
+/*20040804 to latest
+채팅내용 파일로 저장하기
+Save Chat as Text File
+*/
+ MSG_WRITE_CHAT_TO_FILE = 0x138,
+/*20040804 to latest
+/갈무리 or /savechat : 채팅 내용 파일로 저장하기.
+/savechat: Save a Chat Log
+*/
+ MSG_EXPLAIN_SAVE_CHAT = 0x139,
+/*20040804 to latest
+계정 만들기
+Register
+*/
+ MSG_MAKEACCOUNT = 0x13a,
+/*20040804 to latest
+수신거부하기
+Reject Whispering
+*/
+ MSG_REQ_EX_LIST = 0x13b,
+/*20040804 to latest
+수신거부해제하기
+Allow Whispering
+*/
+ MSG_REQ_IN = 0x13c,
+/*20040804 to latest
+미스표시 On
+Shows ''Miss''
+*/
+ MSG_MISS_EFFECT_ON = 0x13d,
+/*20040804 to latest
+미스표시 Off
+Shows ''Miss''
+*/
+ MSG_MISS_EFFECT_OFF = 0x13e,
+/*20040804 to latest
+카메라고정 On
+Camera Zooming On
+*/
+ MSG_FIXED_CAMERA_ON = 0x13f,
+/*20040804 to latest
+카메라고정 Off
+Camera Zooming Off
+*/
+ MSG_FIXED_CAMERA_OFF = 0x140,
+/*20040804 to latest
+/camera : 플레이어에게 카메라고정 On Off /miss : 미스이펙트 On Off
+/camera: Camera Zooming On or Off. /miss: Toggle ''Miss'' display
+*/
+ MSG_EXPLAIN_CAMERA_MISS = 0x141,
+/*20040804 to latest
+스킬정보보기
+View Skill Info
+*/
+ MSG_SEE_INFORMATION_OF_SKILL = 0x142,
+/*20040804 to latest
+스킬이름바꾸기
+Change Skill
+*/
+ MSG_CHANGE_SKILL_NAME = 0x143,
+/*20040804 to latest
+스프라이트 해상도
+Sprite Resolution
+*/
+ MSG_SPRITE_RESOLUTION = 0x144,
+/*20040804 to latest
+텍스쳐 해상도
+Texture Resolution
+*/
+ MSG_TEXTURE_RESOLUTION = 0x145,
+/*20040804 to latest
+디테일 조정
+Arrange Detail
+*/
+ MSG_DETAILLEVELWND = 0x146,
+/*20040804 to latest
+%s Zeny 획득
+You got %s Zeny
+*/
+ MSG_GET_ZENY = 0x147,
+/*20040804 to latest
+길드명
+Guild Name
+*/
+ MSG_GUILDNAME = 0x148,
+/*20040804 to latest
+길드레벨
+Guild lvl
+*/
+ MSG_GUILDLEVEL = 0x149,
+/*20040804 to latest
+마스터이름
+ClanMaster Name
+*/
+ MSG_GUILD_MASTER_NAME = 0x14a,
+/*20040804 to latest
+조합원수
+Number of Members
+*/
+ MSG_GUILD_NUM_MEMBER = 0x14b,
+/*20040804 to latest
+조합원 평균레벨
+Avg.lvl of Guildsmen
+*/
+ MSG_GUILD_AVG_MEMBER_LEVEL = 0x14c,
+/*20040804 to latest
+관리영지
+Castles Owned
+*/
+ MSG_GUILD_MANAGE_LAND = 0x14d,
+/*20040804 to latest
+성향
+Tendency
+*/
+ MSG_GUILD_FAIR = 0x14e,
+/*20040804 to latest
+경험치
+EXP
+*/
+ MSG_GUILD_EXP = 0x14f,
+/*20040804 to latest
+길드엠블렘
+Emblem
+*/
+ MSG_GUILD_EMBLEM = 0x150,
+/*20040804 to latest
+길드상납포인트
+Tax Point
+*/
+ MSG_GUILD_POINT = 0x151,
+/*20040804 to latest
+동맹길드
+Alliances
+*/
+ MSG_ALLY_GUILD = 0x152,
+/*20040804 to latest
+적대길드
+Antagonists
+*/
+ MSG_HOSTILITY_GUILD = 0x153,
+/*20040804 to latest
+길드정보
+Guild Info
+*/
+ MSG_GUILDINFOMANAGE = 0x154,
+/*20040804 to latest
+조합원정보
+Guildsmen Info
+*/
+ MSG_GUILDMEMBERMANAGE = 0x155,
+/*20040804 to latest
+직위설정
+Position
+*/
+ MSG_GUILDPOSITIONMANAGE = 0x156,
+/*20040804 to latest
+길드스킬
+Guild Skill
+*/
+ MSG_GUILDSKILL = 0x157,
+/*20040804 to latest
+추방자 리스트
+Expel History
+*/
+ MSG_GUILDBANISHEDMEMBER = 0x158,
+/*20040804 to latest
+공지사항
+Guild Notice
+*/
+ MSG_GUILDNOTICE = 0x159,
+/*20040804 to latest
+전체길드 리스트
+Entire Guild List
+*/
+ MSG_GUILDTOTALINFO = 0x15a,
+/*20040804 to latest
+귓말 리스트
+Whispering List
+*/
+ MSG_WHISPERLISTWND = 0x15b,
+/*20040804 to latest
+귓말창 열기
+Open Whispering Window
+*/
+ MSG_OPENWHISPERLISTWND = 0x15c,
+/*20040804 to latest
+귓말 리스트 창 여는법 : [Alt] + [H] 를 누르면 귓말 리스트 창이 열립니다.
+How to Open Whispering List: Press [Alt] + [H]
+*/
+ MSG_EXPLAIN_WHISPER_LIST_WND = 0x15d,
+/*20040804 to latest
+자동으로 귓말창 열기
+Open Whispering List Automatically
+*/
+ MSG_AUTOOPENWHISPERLISTWND = 0x15e,
+/*20040804 to latest
+지우기
+Delete
+*/
+ MSG_DELETE = 0x15f,
+/*20040804 to latest
+다음부터 열리지 않음
+Close since next
+*/
+ MSG_DONTOPEN = 0x160,
+/*20040804 to latest
+마지막으로 접속한 시간
+Last Log-in Time
+*/
+ MSG_LAST_LOGIN_TIME = 0x161,
+/*20040804 to latest
+마지막으로 접속한 IP
+Last Log-in IP
+*/
+ MSG_LAST_LOGIN_IP = 0x162,
+/*20040804 to latest
+친구 설정
+Friend Setup
+*/
+ MSG_FRIEND_SETTING = 0x163,
+/*20040804 to latest
+정말 지우시겠습니까?
+Are you sure that you want to delete?
+*/
+ MSG_DO_YOU_REALLY_WANT_DELETE = 0x164,
+/*20040804 to latest
+정말 탈퇴하시겠습니까?
+Are you sure that you want to leave?
+*/
+ MSG_DO_YOU_REALLY_WANT_LEAVE = 0x165,
+/*20040804 to latest
+친구로 등록하기
+Register as a Friend
+*/
+ MSG_ADD_TO_FRIEND_CHAR_LIST = 0x166,
+/*20040804 to latest
+친구일때 자동으로 1:1창 열기
+Open 1:1 Chat between Friends
+*/
+ MSG_AUTOOPENWHISPERLISTWND_FRIEND = 0x167,
+/*20040804 to latest
+1:1창 열기
+Open 1:1 Chat
+*/
+ MSG_OPEN_1ON1_WINDOW = 0x168,
+/*20040804 to latest
+친구가 아닐때 자동으로 1:1창 열기
+Open 1:1 Chat between Strangers
+*/
+ MSG_AUTOOPEN_1ON1_WINDOW = 0x169,
+/*20040804 to latest
+1:1창 열릴때 소리로 알림
+Alarm when you recieve a 1:1 Chat
+*/
+ MSG_WHISPER_OPEN_SOUND = 0x16a,
+/*20040804 to latest
+정말 제명시키시겠습니까?
+Are you sure that you want to expel?
+*/
+ MSG_DO_YOU_REALLY_WANT_EXPEL = 0x16b,
+/*20040804 to latest
+%s 님이 길드를 탈퇴했습니다.
+%s has withdrawn from the guild.
+*/
+ MSG_USER_LEFT_GUILD = 0x16c,
+/*20040804 to latest
+탈퇴사유 : %s
+Secession Reason: %s
+*/
+ MSG_REASON_LEAVE_GUILD = 0x16d,
+/*20040804 to latest
+길드 해체 실패
+*/
+ MSG_DISORGANIZE_GUILD_FAILURE = 0x16e,
+/*20040804 to latest
+길드해체사유 : %s
+Disband Reason: %s
+*/
+ MSG_DISORGANIZATION_REASON = 0x16f,
+/*20040804 to latest
+해당 계정은 삭제된 아이디 입니다.
+This ID has been removed.
+*/
+ MSG_DELETED_ACCOUNT = 0x170,
+/*20040804 to latest
+판매가 :
+Price:
+*/
+ MSG_SELLPRICE = 0x171,
+/*20040804 to latest
+%s 님이 길드에서 추방되었습니다.
+%s has been expelled from our guild.
+*/
+ MSG_BAN_GUILD = 0x172,
+/*20040804 to latest
+추방사유 : %s
+Expulsion Reason: %s
+*/
+ MSG_REASON_BAN_GUILD = 0x173,
+/*20040804 to latest
+아이템을 착용할 수 없습니다.
+You can't put this item on.
+*/
+ MSG_CAN_NOT_EQUIP_ITEM = 0x174,
+/*20040804 to latest
+파티설정을 변경할 수 없습니다.
+You can't modify Party Setup.
+*/
+ MSG_PARTYSETTING_CHANGE_IMPOSSIBLE = 0x175,
+/*20040804 to latest
+길드가 만들어 졌습니다.
+Guild has been Created.
+*/
+ MSG_GUILD_MAKE_SUCCESS = 0x176,
+/*20040804 to latest
+이미 길드에 속해있습니다.
+You are already in a Guild.
+*/
+ MSG_GUILD_MAKE_ALREADY_MEMBER = 0x177,
+/*20040804 to latest
+같은이름의 길드가 존재합니다.
+That Guild Name already exists.
+*/
+ MSG_GUILD_MAKE_GUILD_EXIST = 0x178,
+/*20040804 to latest
+ 길드에서 초청 메시지가 왔습니다. 가입하겠습니까?
+ Guild has sent you an invitation. Would you like to join this Guild?
+*/
+ MSG_SUGGEST_JOIN_GUILD = 0x179,
+/*20040804 to latest
+다른길드에 가입되어 있습니다.
+He/She is already in a Guild.
+*/
+ MSG_CHARACTER_IS_ALREADY_IN_GUILD = 0x17a,
+/*20040804 to latest
+길드가입을 거절 했습니다.
+Offer Rejected
+*/
+ MSG_CHARACTER_REJECT_JOIN_GUILD = 0x17b,
+/*20040804 to latest
+길드가입을 수락했습니다.
+Offer Accepted
+*/
+ MSG_CHARACTER_ACCEPT_JOIN_GUILD = 0x17c,
+/*20040804 to latest
+길드정원을 초과했습니다.
+Your Guild is Full.
+*/
+ MSG_TOO_MANY_PEOPLE_IN_GUILD = 0x17d,
+/*20040804 to latest
+(%s)님 길드에 가입요청
+Send (%s) a Guild invitation
+*/
+ MSG_REQ_JOIN_GUILD = 0x17e,
+/*20040804 to latest
+스킬 레벨이 모자라서 매너포인트를 줄 수 없습니다.
+You haven't learned enough skills for aligning.
+*/
+ MSG_NOT_ENOUGH_FOR_MANNER_POINT = 0x17f,
+/*20040804 to latest
+매너 포인트 주기 성공
+Aligning completed.
+*/
+ MSG_GIVING_MANNER_POINT_SUCCESS = 0x180,
+/*20040804 to latest
+오늘 이미 사용했습니다.
+You already spent your point for today.
+*/
+ MSG_YOU_USE_TODAY_ALREADY = 0x181,
+/*20040804 to latest
+이캐릭터에게 지급한지 한달이 지나지 않았습니다.
+Hasn't been a month yet since you aligned this person.
+*/
+ MSG_ONE_MONTH_NOT_PASSED = 0x182,
+/*20040804 to latest
+%s 님으로부터 플러스 매너 포인트를 받았습니다.
+Remember, Spamming isn't nice.
+*/
+ MSG_RECEIVE_PLUS_MANNER_POINT = 0x183,
+/*20040804 to latest
+%s 님으로부터 마이너스 매너 포인트를 받았습니다.
+Please refrain from ill-mannered conduct, thank you.
+*/
+ MSG_RECEIVE_MINUS_MANNER_POINT = 0x184,
+/*20040804 to latest
+채팅 금지 시간 줄이기(풀기)
+Align with a Good Point
+*/
+ MSG_GIVE_PLUS_MANNER_POINT = 0x185,
+/*20040804 to latest
+채팅 금지 시간 늘이기(걸기)
+Align with a Bad Point
+*/
+ MSG_GIVE_MINUS_MANNER_POINT = 0x186,
+/*20040804 to latest
+(%s)님과의 거래요청
+Request a deal with (%s)
+*/
+ MSG_REQ_DEAL_WITH2 = 0x187,
+/*20040804 to latest
+(%s)님 파티에 가입요청
+Ask (%s) to join your party
+*/
+ MSG_REQ_JOIN_PARTY2 = 0x188,
+/*20040804 to latest
+ 길드에서 동맹요청 메시지가 왔습니다. 동맹하겠습니까?
+ Guild is asking you to agree to an Alliance with them. Do you accept?
+*/
+ MSG_SUGGEST_ALLY_GUILD = 0x189,
+/*20040804 to latest
+이미 동맹되어 있습니다.
+This Guild is already your Ally.
+*/
+ MSG_REQALLYGUILD_ALREADY_ALLIED = 0x18a,
+/*20040804 to latest
+동맹을 거절 했습니다.
+You reject the offer
+*/
+ MSG_REQALLYGUILD_REJECT = 0x18b,
+/*20040804 to latest
+동맹을 수락 했습니다.
+You accept the offer
+*/
+ MSG_REQALLYGUILD_ACCEPT = 0x18c,
+/*20040804 to latest
+상대길드의 동맹길드의 수가 초과 되었습니다.
+They have too many Alliances.
+*/
+ MSG_REQALLYGUILD_OVERSIZE = 0x18d,
+/*20040804 to latest
+길드의 동맹길드의 수가 초과 되었습니다.
+You have too many Alliances.
+*/
+ MSG_REQALLYMYGUILD_OVERSIZE = 0x18e,
+/*20040804 to latest
+길드 동맹 요청
+Set this guild as an Alliance
+*/
+ MSG_REQ_ALLY_GUILD = 0x18f,
+/*20040804 to latest
+길드가 성공적으로 해체 되었습니다.
+Guild was successfully disbanded.
+*/
+ MSG_DISORGANIZE_GUILD_SUCCESS = 0x190,
+/*20040804 to latest
+주민등록번호가 틀려서 길드가 해체되지 않았습니다.
+You have failed to disband the guild due to your incorrect SSN.
+*/
+ MSG_DISORGANIZE_GUILD_INVALIDKEY = 0x191,
+/*20040804 to latest
+길드맴버가 존재해서 길드가 해체되지 않았습니다.
+You have failed to disband the guild because there are guildsmen still present.
+*/
+ MSG_DISORGANIZE_GUILD_MEMBEREXIST = 0x192,
+/*20040804 to latest
+길드 적대 요청
+Set this guild as an Antagonist
+*/
+ MSG_REQ_HOSTILE_GUILD = 0x193,
+/*20040804 to latest
+머리색깔 선택
+Choose Hair Color
+*/
+ MSG_SELECT_HAIR_COLOR = 0x194,
+/*20040804 to latest
+길드결성시 필요한 아이템이 없습니다.
+You don't have necessary item to create a Guild.
+*/
+ MSG_GUILD_MAKE_GUILD_NONE_ITEM = 0x195,
+/*20040804 to latest
+몬스터 정보
+Monster Info
+*/
+ MSG_MONSTER_INFO_WINDOW = 0x196,
+/*20040804 to latest
+이름
+Name
+*/
+ MSG_NAME = 0x197,
+/*20040804 to latest
+레벨
+Level
+*/
+ MSG_LEVEL = 0x198,
+/*20040804 to latest
+HP
+*/
+ MSG_HP = 0x199,
+/*20040804 to latest
+크기
+Size
+*/
+ MSG_SIZE = 0x19a,
+/*20040804 to latest
+종족
+Type
+*/
+ MSG_RACETYPE = 0x19b,
+/*20040804 to latest
+MDEF
+*/
+ MSG_MDEFPOWER = 0x19c,
+/*20040804 to latest
+속성
+Attribute
+*/
+ MSG_PROPERTY = 0x19d,
+/*20040804 to latest
+無
+Neutral
+*/
+ MSG_PROPERTY_NEUTURAL = 0x19e,
+/*20040804 to latest
+水
+Water
+*/
+ MSG_PROPERTY_WATER = 0x19f,
+/*20040804 to latest
+地
+Earth
+*/
+ MSG_PROPERTY_EARTH = 0x1a0,
+/*20040804 to latest
+火
+Fire
+*/
+ MSG_PROPERTY_FIRE = 0x1a1,
+/*20040804 to latest
+風
+Wind
+*/
+ MSG_PROPERTY_WIND = 0x1a2,
+/*20040804 to latest
+毒
+Poison
+*/
+ MSG_PROPERTY_POISON = 0x1a3,
+/*20040804 to latest
+聖
+Holy
+*/
+ MSG_PROPERTY_SAINT = 0x1a4,
+/*20040804 to latest
+暗
+Shadow
+*/
+ MSG_PROPERTY_DARK = 0x1a5,
+/*20040804 to latest
+念
+Ghost
+*/
+ MSG_PROPERTY_MENTAL = 0x1a6,
+/*20040804 to latest
+死
+Undead
+*/
+ MSG_PROPERTY_UNDEAD = 0x1a7,
+/*20040804 to latest
+현재는 아이템을 만들 수 없습니다.
+You can't create items yet.
+*/
+ MSG_CANT_MAKE_ITEM = 0x1a8,
+/*20040804 to latest
+제조 목록
+Item List you can craft
+*/
+ MSG_MAKE_LIST = 0x1a9,
+/*20040804 to latest
+ 만들기
+ Create
+*/
+ MSG_MAKE_TARGET = 0x1aa,
+/*20040804 to latest
+ 에 필요한 재료:
+'s materials
+*/
+ MSG_REQUIRE_FOR_MAKE_TARGET = 0x1ab,
+/*20040804 to latest
+ 만들기 실패
+ item creation failed.
+*/
+ MSG_MAKE_TARGET_FAIL = 0x1ac,
+/*20040804 to latest
+ 만들기 성공
+ item created successfully.
+*/
+ MSG_MAKE_TARGET_SUCCEESS = 0x1ad,
+/*20040804 to latest
+%s 만들기를 실패하였습니다.
+ item creation failed.
+*/
+ MSG_MAKE_TARGET_FAIL_MSG = 0x1ae,
+/*20040804 to latest
+%s 만들기를 성공했습니다.
+ item created successfully.
+*/
+ MSG_MAKE_TARGET_SUCCEESS_MSG = 0x1af,
+/*20040804 to latest
+레벨이 부족합니다.
+You are not the required lvl.
+*/
+ MSG_NOT_ENOUGH_LEVEL = 0x1b0,
+/*20040804 to latest
+레벨이 너무 높습니다.
+Too high lvl for this job.
+*/
+ MSG_TOO_HIGH_LEVEL = 0x1b1,
+/*20040804 to latest
+직업이 적합하지 않습니다.
+Not the suitable job for this type of work.
+*/
+ MSG_NOT_ACCEPTABLE_JOB = 0x1b2,
+/*20040804 to latest
+토키 박스 트랩 메세지
+Record a message in the Talkie Box
+*/
+ MSG_TALKBOX_WINDOW = 0x1b3,
+/*20040804 to latest
+기록할 메세지를 입력하시기 바랍니다.
+Please type a message for the Talkie Box
+*/
+ MSG_TALKBOX_WINDOW_MSG = 0x1b4,
+/*20040804 to latest
+길드에게 보냄
+Send to Guild
+*/
+ MSG_SEND_TO_GUILD = 0x1b5,
+/*20040804 to latest
+결제된 계정이 아닙니다. 결제 페이지로 이동하시겠습니까?
+You didn't pay for this ID. Would you like to pay for it now?
+*/
+ MSG_NOT_SETTLED = 0x1b6,
+/*20040804 to latest
+서버가 혼잡한 관계로 잠시후 다시 시도해 주시기 바랍니다.
+Server is jammed due to overpopulation. Please try again after few minutes.
+*/
+ MSG_ACCOUNT_BUSY = 0x1b7,
+/*20040804 to latest
+지난 접속 정보가 남아 있습니다. 30초정도 지난뒤에 다시 시도해 주시기 바랍니다.
+Server still recognizes your last log-in. Please try again after a few minutes.
+*/
+ MSG_INFORMATION_REMAINED = 0x1b8,
+/*20040804 to latest
+매 풀어주기
+Release Falcon
+*/
+ MSG_BIRDOFF = 0x1b9,
+/*20040804 to latest
+페코페코 내리기
+Dismount
+*/
+ MSG_CHIKENOFF = 0x1ba,
+/*20040804 to latest
+小
+Small
+*/
+ MSG_SIZE_SMALL = 0x1bb,
+/*20040804 to latest
+中
+Med
+*/
+ MSG_SIZE_MIDDLE = 0x1bc,
+/*20040804 to latest
+大
+Big
+*/
+ MSG_SIZE_BIG = 0x1bd,
+/*20040804 to latest
+더블
+Double
+*/
+ MSG_DOUBLE = 0x1be,
+/*20040804 to latest
+트리플
+Triple
+*/
+ MSG_TRIPLE = 0x1bf,
+/*20040804 to latest
+쿼드로플
+Quadruple
+*/
+ MSG_QUADROPLE = 0x1c0,
+/*20040804 to latest
+%s 까지 로그인을 금지하고 있습니다.
+You are prohibited to log in until %s.
+*/
+ MSG_LOGIN_REFUSE_BLOCKED_UNTIL = 0x1c1,
+/*20040804 to latest
+의
+'s
+*/
+ MSG_MANUFACTURED_NORMAL_ITEM = 0x1c2,
+/*20040804 to latest
+의 파이어
+'s Fire
+*/
+ MSG_MANUFACTURED_FIRE_ITEM = 0x1c3,
+/*20040804 to latest
+의 아이스
+'s Ice
+*/
+ MSG_MANUFACTURED_ICE_ITEM = 0x1c4,
+/*20040804 to latest
+의 윈드
+'s Wind
+*/
+ MSG_MANUFACTURED_WIND_ITEM = 0x1c5,
+/*20040804 to latest
+의 어스
+'s Earth
+*/
+ MSG_MANUFACTURED_EARTH_ITEM = 0x1c6,
+/*20040804 to latest
+211.239.161.246
+38.144.194.2
+*/
+ MSG_ACCOUNT_ADDRESS = 0x1c7,
+/*20040804 to latest
+6900
+*/
+ MSG_ACCOUNT_PORT = 0x1c8,
+/*20040804 to latest
+http://www.ragnarok.co.kr
+*/
+ MSG_REGISTRATION_WEB_URL = 0x1c9,
+/*20040804 to latest
+%s 사용자 강제 종료
+Kill %s
+*/
+ MSG_BAN_USER = 0x1ca,
+/*20040804 to latest
+무지쎈
+Very Strong
+*/
+ MSG_ONE_STARPIECE = 0x1cb,
+/*20040804 to latest
+무지무지쎈
+Very Very Strong
+*/
+ MSG_TWO_STARPIECE = 0x1cc,
+/*20040804 to latest
+무무무쎈
+Very Very Very Strong
+*/
+ MSG_THREE_STARPIECE = 0x1cd,
+/*20040804 to latest
+길드 추방 사유
+The Reason of Expulsion
+*/
+ MSG_GUILD_KICK_REASON = 0x1ce,
+/*20040804 to latest
+ 공격 속도가 증가했습니다.
+Attack Speed is up.
+*/
+ MSG_INCATTACKSPEED = 0x1cf,
+/*20040804 to latest
+ 공격 속도가 감소했습니다.
+Attack Speed is down.
+*/
+ MSG_DECATTACKSPEED = 0x1d0,
+/*20040804 to latest
+ 무기의 공격력이 향상되었습니다.
+Weapon Damage is improved.
+*/
+ MSG_INCWEAPONATTACK = 0x1d1,
+/*20040804 to latest
+ 무기의 공격력이 감소되었습니다.
+Weapon Damage is reduced.
+*/
+ MSG_DECWEAPONATTACK = 0x1d2,
+/*20040804 to latest
+ 시전 딜레이가 줄었습니다.
+Cast Delay is reduced.
+*/
+ MSG_FASTPREDELAY = 0x1d3,
+/*20040804 to latest
+ 시전 딜레이가 정상으로 되었습니다.
+Cast Delay has returned to normal.
+*/
+ MSG_NORMALPREDELAY = 0x1d4,
+/*20040804 to latest
+ 무기에 독속성이 부여되었습니다.
+Weapon is temporarily enchanted with Poison.
+*/
+ MSG_WEAPONPROPERTYPOISON = 0x1d5,
+/*20040804 to latest
+ 무기에 성속성이 부여되었습니다.
+Weapon is temporarily enchanted with an elemental property.
+*/
+ MSG_WEAPONPROPERTYSAINT = 0x1d6,
+/*20040804 to latest
+ 무기의 원래속성이 적용되었습니다.
+Weapon has changed back to normal.
+*/
+ MSG_WEAPONPROPERTYORIGINAL = 0x1d7,
+/*20040804 to latest
+ 방어구에 성속성이 부여되었습니다.
+Armor has been enchanted with the Holy Ghost.
+*/
+ MSG_ARMORPROPERTYSAINT = 0x1d8,
+/*20040804 to latest
+ 방어구의 원래속성이 적용되었습니다.
+Armor has changed back to normal.
+*/
+ MSG_ARMORPROPERTYORIGINAL = 0x1d9,
+/*20040804 to latest
+ 배리어 상태가 되었습니다.
+Barrier Formed.
+*/
+ MSG_BARRIOR = 0x1da,
+/*20040804 to latest
+ 배리어 상태가 해제 되었습니다.
+Barrier Canceled.
+*/
+ MSG_DISAPPEARBARRIOR = 0x1db,
+/*20040804 to latest
+ 소형, 중형, 대형 몬스터에게 100% 공격력을 줍니다.
+Weapon Perfection Initiated.
+*/
+ MSG_PERFECTDAMAGE = 0x1dc,
+/*20040804 to latest
+ 웨폰퍼펙션 모드가 해제 되었습니다.
+Weapon perfection Canceled.
+*/
+ MSG_DISAPPEARPERFECTDAMAGE = 0x1dd,
+/*20040804 to latest
+ 무기가 파괴될 가능성이 높아진 대신 무기의 공격력이 증가하였습니다.
+Power-Thrust Initiated.
+*/
+ MSG_OVERTHRUSTING = 0x1de,
+/*20040804 to 20050118
+ 오버트러스팅 상태가 해제 되었습니다.
+20050124 to latest
+ 오버트러스트 상태가 해제 되었습니다.
+Power-Thrust Canceled.
+*/
+ MSG_DISAPPEAROVERTHRUSTING = 0x1df,
+/*20040804 to latest
+ 무기의 최대 성능을 끌어냅니다.
+Maximize-Power Initiated.
+*/
+ MSG_MAXIMIZE = 0x1e0,
+/*20040804 to latest
+ 맥시마이즈 상태가 해제 되었습니다.
+Maximize-Power Canceled.
+*/
+ MSG_DISAPPEARMAXIMIZE = 0x1e1,
+/*20040804 to latest
+[신서버]
+[New Server]
+*/
+ MSG_SERVER_PROPERTY_NEW = 0x1e2,
+/*20040804 to latest
+(%d 명)
+(%d players)
+*/
+ MSG_SERVER_USER_COUNT = 0x1e3,
+/*20040804 to latest
+(점검중)
+(On the maintenance)
+*/
+ MSG_SERVER_INSPECTING = 0x1e4,
+/*20040804 to latest
+길드멤버 %s님이 접속하셨습니다.
+Guild member %s has connected.
+*/
+ MSG_GUILD_MEMBER_STATUS_ONLINE = 0x1e5,
+/*20040804 to latest
+길드멤버 %s님이 종료하셨습니다.
+Guild member %s has disconnected.
+*/
+ MSG_GUILD_MEMBER_STATUS_OFFLINE = 0x1e6,
+/*20040804 to latest
+경험치 %d 얻음
+You got %d Base EXP.
+*/
+ MSG_GOT_EXPERIENCE_POINT = 0x1e7,
+/*20040804 to latest
+잡경험치 %d 얻음
+You got %d Job EXP.
+*/
+ MSG_GOT_JOB_EXPERIENCE_POINT = 0x1e8,
+/*20040804 to latest
+길드에서 탈퇴 했습니다.
+You left the guild.
+*/
+ MSG_LEFT_GUILD = 0x1e9,
+/*20040804 to latest
+길드에서 추방 당했습니다.
+You have been expelled from the Guild.
+*/
+ MSG_BAN_FROM_GUILD = 0x1ea,
+/*20040804 to latest
+아이템 감정 성공
+Item Appraisal has completed successfully.
+*/
+ MSG_ITEM_IDENTIFY_SUCCEESS = 0x1eb,
+/*20040804 to latest
+아이템 감정 실패
+Item appraisal has failed.
+*/
+ MSG_ITEM_IDENTIFY_FAIL = 0x1ec,
+/*20040804 to latest
+아이템 조합 성공
+Compounding has completed successfully.
+*/
+ MSG_ITEM_COMPOUNDING_SUCCEESS = 0x1ed,
+/*20040804 to latest
+아이템 조합 실패
+Compounding has failed.
+*/
+ MSG_ITEM_COMPOUNDING_FAIL = 0x1ee,
+/*20040804 to latest
+길드 적대 성공
+Antagonist has been set.
+*/
+ MSG_HOSTILE_GUILD_SUCCEESS = 0x1ef,
+/*20040804 to latest
+적대 길드수 초과로 길드 적대 실패
+Guild has too many Antagonists.
+*/
+ MSG_TOO_MANY_HOSTILE_GUILD = 0x1f0,
+/*20040804 to latest
+이미 적대 길드 입니다
+Already set as an Antagonist
+*/
+ MSG_ALREADY_REGISTERED_HOSTILE_GUILD = 0x1f1,
+/*20040804 to latest
+제련이 성공적으로 되었습니다.
+Upgrade has been completed successfully.
+*/
+ MSG_ITEM_REFINING_SUCCEESS = 0x1f2,
+/*20040804 to latest
+제련이 실패하였습니다.
+Upgrade has failed.
+*/
+ MSG_ITEM_REFINING_FAIL = 0x1f3,
+/*20040804 to latest
+이곳에서는 순간이동이 불가능합니다.
+Unavailable Area to Teleport
+*/
+ MSG_IMPOSSIBLE_TELEPORT_AREA = 0x1f4,
+/*20040804 to latest
+이 장소는 기억할 수 없습니다.
+Unable to memorize this place as Warp Point
+*/
+ MSG_POSSIBLE_TELEPORT_AREA = 0x1f5,
+/*20040804 to latest
+지금은 종료할 수 없습니다.
+Please wait 10 seconds before trying to log out.
+*/
+ MSG_CANT_EXIT_NOW = 0x1f6,
+/*20040804 to latest
+직위
+Position
+*/
+ MSG_POSITION = 0x1f7,
+/*20040804 to latest
+직업
+Job
+*/
+ MSG_JOB = 0x1f8,
+/*20040804 to latest
+메모
+Note
+*/
+ MSG_MEMO = 0x1f9,
+/*20040804 to latest
+기여
+Devotion
+*/
+ MSG_CONTRIBUTION = 0x1fa,
+/*20040804 to latest
+상납경험치
+Tax Point
+*/
+ MSG_EXP_CONTIRIBUTION = 0x1fb,
+/*20040804 to latest
+길드탈퇴
+Leave Guild
+*/
+ MSG_LEAVE_GUILD = 0x1fc,
+/*20040804 to latest
+제명시키기
+Expel
+*/
+ MSG_EXPEL_GUILD = 0x1fd,
+/*20040804 to latest
+서열
+Rank
+*/
+ MSG_GRADE = 0x1fe,
+/*20040804 to latest
+직위명
+Position Title
+*/
+ MSG_POSITION_NAME = 0x1ff,
+/*20040804 to latest
+가입권한
+Invitation
+*/
+ MSG_JOIN_AUTHORITY = 0x200,
+/*20040804 to latest
+처벌권한
+Punish
+*/
+ MSG_PENALTY_AUTORITY = 0x201,
+/*20040804 to latest
+상납%
+Tax %
+*/
+ MSG_CONTRIBUTION_PERCENT = 0x202,
+/*20040804 to latest
+제목
+Title
+*/
+ MSG_TITLE = 0x203,
+/*20040804 to latest
+내용
+For
+*/
+ MSG_CONTENTS = 0x204,
+/*20040804 to latest
+길드이름
+Guild Name
+*/
+ MSG_GUILD_NAME = 0x205,
+/*20040804 to latest
+길드레벨
+Guild lvl
+*/
+ MSG_GUILD_LEVEL = 0x206,
+/*20040804 to latest
+조합원수
+Number of Members
+*/
+ MSG_GUILD_PEOPLE_COUNT = 0x207,
+/*20040804 to latest
+랭킹
+Ranking
+*/
+ MSG_RANKING = 0x208,
+/*20040804 to latest
+아이템 감정
+Item Appraisal
+*/
+ MSG_ITEM_IDENTIFY = 0x209,
+/*20040804 to latest
+아이템 조합
+Insert Card
+*/
+ MSG_ITEM_COMPOUNDING = 0x20a,
+/*20040804 to latest
+탈퇴 사유를 입력해주세요.
+Please enter the reason of Secession.
+*/
+ MSG_PLEASE_INPUT_WHY_LEAVING = 0x20b,
+/*20040804 to latest
+추방 사유를 입력해주세요.
+Please enter the reason of Expulsion.
+*/
+ MSG_PELASE_INPUT_WHY_EXPEL = 0x20c,
+/*20040804 to latest
+상점을 닫으세요.
+Please close Shop.
+*/
+ MSG_PLEASE_CLOSE_STORE = 0x20d,
+/*20040804 to latest
+스킬 이름
+Skill
+*/
+ MSG_SKILL_NAME = 0x20e,
+/*20040804 to latest
+아이템 이름
+Item Name
+*/
+ MSG_ITEM_NAME = 0x20f,
+/*20040804 to latest
+https://payment.ragnarok.co.kr
+https://pay.ragnarok.co.kr (Billing Web)
+*/
+ MSG_SETTLE_WEB_URL = 0x210,
+/*20040804 to latest
+게임방에서 사용가능한 IP개수가 모두 사용중입니다. 개인 계정으로 결제 하시겠습니까?
+IP capacity of this Internet Cafe is full. Would you like to pay the personal base?
+*/
+ MSG_BAN_IP_OVERFLOW = 0x211,
+/*20040804 to latest
+결제시간이 다되어 게임을 종료합니다.
+You are out of available paid playing time. Game will be shut down automatically.
+*/
+ MSG_BAN_PAY_OUT = 0x212,
+/*20040804 to latest
+이름이 너무 깁니다. 한글 11자 영문 23자 이내로 써주십시오.
+Name is too long. Please enter a name no greater than 23 english characters.
+*/
+ MSG_NAMELENGTH_TOO_LONG = 0x213,
+/*20040804 to latest
+deleted
+Character will be deleted in %d seconds.
+*/
+ MSG_DELETE_AFTER_10_SECOND = 0x214,
+/*20040804 to latest
+귀하는 개인 정액제 사용자입니다.
+You paid with the personal regular base.
+*/
+ MSG_BILLING_100 = 0x215,
+/*20040804 to latest
+귀하는 개인정량제 사용자입니다.
+You paid with the personal regular base. Available time is xx hrs xx mins xx secs.
+*/
+ MSG_BILLING_200 = 0x216,
+/*20040804 to latest
+귀하는 개인 무료 사용자입니다.
+You are free!
+*/
+ MSG_BILLING_300 = 0x217,
+/*20040804 to latest
+귀하는 개인 무료 허용기간 사용자입니다.
+You are free for the test, your available time is xx hrs xx mins xx secs.
+*/
+ MSG_BILLING_400 = 0x218,
+/*20040804 to latest
+귀하는 게임방 정액제 사용자입니다.
+You paid with the Internet Cafe regular base. Available time is xx hrs xx mins xx secs.
+*/
+ MSG_BILLING_500 = 0x219,
+/*20040804 to latest
+귀하는 게임방 정량제 사용자입니다.
+You paid with the Time Limit for Internet Cafe. Available time is xx hrs xx mins xx secs.
+*/
+ MSG_BILLING_501 = 0x21a,
+/*20040804 to latest
+귀하는 게임방 무료 허용기간 사용자입니다.
+You are free for the test of Internet Cafe version .
+*/
+ MSG_BILLING_600 = 0x21b,
+/*20040804 to latest
+귀하는 게임방 무료 사용자입니다.
+You are free for the Internet Cafe version.
+*/
+ MSG_BILLING_700 = 0x21c,
+/*20040804 to latest
+귀하는 종량제 사이트 이용자입니다.
+You paid on the Time Limit Website.
+*/
+ MSG_BILLING_800 = 0x21d,
+/*20040804 to latest
+이모션 목록
+Emotion icon List
+*/
+ MSG_EMOTION_LIST = 0x21e,
+/*20040804 to latest
+/이모션
+/emo
+*/
+ MSG_VIEW_EMOTION = 0x21f,
+/*20040804 to latest
+/!
+*/
+ MSG_EMOTION_SURPRISE = 0x220,
+/*20040804 to latest
+/?
+*/
+ MSG_EMOTION_QUESTION = 0x221,
+/*20040804 to latest
+/기쁨
+/ho
+*/
+ MSG_EMOTION_DELIGHT = 0x222,
+/*20040804 to latest
+/하트
+/lv
+*/
+ MSG_EMOTION_THROB = 0x223,
+/*20040804 to latest
+/왕하트
+/lv2
+*/
+ MSG_EMOTION_BIGTHROB = 0x224,
+/*20040804 to latest
+/땀
+/swt
+*/
+ MSG_EMOTION_SWEAT = 0x225,
+/*20040804 to latest
+/아하
+/ic
+*/
+ MSG_EMOTION_AHA = 0x226,
+/*20040804 to latest
+/짜증
+/an
+*/
+ MSG_EMOTION_FRET = 0x227,
+/*20040804 to latest
+/화
+/ag
+*/
+ MSG_EMOTION_ANGER = 0x228,
+/*20040804 to latest
+/돈
+/$
+*/
+ MSG_EMOTION_MONEY = 0x229,
+/*20040804 to latest
+/...
+*/
+ MSG_EMOTION_THINK = 0x22a,
+/*20040804 to latest
+/감사
+/thx
+*/
+ MSG_EMOTION_THANKS = 0x22b,
+/*20040804 to latest
+/꽥
+/wah
+*/
+ MSG_EMOTION_KEK = 0x22c,
+/*20040804 to latest
+/죄송
+/sry
+*/
+ MSG_EMOTION_SORRY = 0x22d,
+/*20040804 to latest
+/웃음
+/heh
+*/
+ MSG_EMOTION_SMILE = 0x22e,
+/*20040804 to latest
+/뻘뻘
+/swt2
+*/
+ MSG_EMOTION_PROFUSELY_SWEAT = 0x22f,
+/*20040804 to latest
+/긁적
+/hmm
+*/
+ MSG_EMOTION_SCRATCH = 0x230,
+/*20040804 to latest
+/최고
+/no1
+*/
+ MSG_EMOTION_BEST = 0x231,
+/*20040804 to latest
+/두리번
+/??
+*/
+ MSG_EMOTION_STARE_ABOUT = 0x232,
+/*20040804 to latest
+/헉
+/omg
+*/
+ MSG_EMOTION_HUK = 0x233,
+/*20040804 to latest
+/오
+/oh
+*/
+ MSG_EMOTION_O = 0x234,
+/*20040804 to latest
+/엑스
+/X
+*/
+ MSG_EMOTION_X = 0x235,
+/*20040804 to latest
+/헬프
+/hlp
+*/
+ MSG_EMOTION_HELP = 0x236,
+/*20040804 to latest
+/가
+/go
+*/
+ MSG_EMOTION_GO = 0x237,
+/*20040804 to latest
+/엉엉
+/sob
+*/
+ MSG_EMOTION_CRY = 0x238,
+/*20040804 to latest
+/킥킥
+/gg
+*/
+ MSG_EMOTION_KIK = 0x239,
+/*20040804 to latest
+/쪽
+/kis
+*/
+ MSG_EMOTION_CHUP = 0x23a,
+/*20040804 to latest
+/쪽쪽
+/kis2
+*/
+ MSG_EMOTION_CHUPCHUP = 0x23b,
+/*20040804 to latest
+/흥
+/pif
+*/
+ MSG_EMOTION_HNG = 0x23c,
+/*20040804 to latest
+/응
+/ok
+*/
+ MSG_EMOTION_OK = 0x23d,
+/*20040804 to latest
+단축키 목록
+Shortcut List
+*/
+ MSG_SHORTCUT_LIST = 0x23e,
+/*20040804 to latest
+귀하의 계정은 보류되었습니다.
+Your account is suspended.
+*/
+ MSG_BAN_PAY_SUSPEND = 0x23f,
+/*20040804 to latest
+과금 정책 변경으로 인해 일시 종료됩니다. 다시 접속하여 주시기 바랍니다.
+Your connection is terminated due to change in the billing policy. Please connect again.
+*/
+ MSG_BAN_PAY_CHANGE = 0x240,
+/*20040804 to latest
+어카운트 서버에 인증된 IP와 귀하의 IP가 달라 연결을 종료합니다.
+Your connection is terminated because your IP doesn't match the authorized IP from the account server.
+*/
+ MSG_BAN_PAY_WRONGIP = 0x241,
+/*20040804 to latest
+게임방 IP에서 개인 종량제 과금을 막기 위해 연결을 종료합니다. 개인 종량제 과금을 사용하기 위해서는 게임방IP로 등록이 되지 않은 IP를 사용해 주세요.
+Your connection is terminated to prevent charging from your account's play time.
+*/
+ MSG_BAN_PAY_PNGAMEROOM = 0x242,
+/*20040804 to latest
+귀하는 운영자에 의해 강제 종료 되었습니다.
+You have been forced to disconnect by the Game Master Team.
+*/
+ MSG_BAN_OP_FORCE = 0x243,
+/*20040804 to latest
+무게가 90%를 초과하여 스킬을 사용할 수 없습니다.
+You can't use this Skill because you are over your Weight Limit.
+*/
+ MSG_USESKILL_FAIL_WEIGHTOVER = 0x244,
+/*20040804 to latest
+무명
+Nameless
+*/
+ MSG_NAMELESS_USER = 0x245,
+/*20040804 to latest
+축하합니다. %s님의 현재 랭킹이 %d위로 상승하였습니다.
+Congratulations! %s ranking has gone up to %d.
+*/
+ MSG_RANK_IN_TEN = 0x246,
+/*20040804 to latest
+안타깝게도 %s님의 현재 랭킹이 %d위로 하락하였습니다.
+What a pity! %s ranking has gone down to %d.
+*/
+ MSG_RANK_OUT_TEN = 0x247,
+/*20040804 to latest
+Pet Info
+*/
+ MSG_PET_INFO = 0x248,
+/*20040804 to latest
+만복도
+Hunger
+*/
+ MSG_PET_HUNGRY = 0x249,
+/*20040804 to latest
+친밀도
+Intimacy
+*/
+ MSG_PET_FRIENDLY = 0x24a,
+/*20040804 to latest
+상점과 채팅방을 동시에 열수 없습니다.
+Please avoid opening a chatroom while vending.
+*/
+ MSG_CANT_OPEN_STORE_WHILE_CHAT = 0x24b,
+/*20040804 to latest
+개
+Total
+*/
+ MSG_EA4 = 0x24c,
+/*20040804 to latest
+%s 를 전투불능으로 만들었습니다.
+You have knocked down %s.
+*/
+ MSG_SLAIN = 0x24d,
+/*20040804 to latest
+%s 님에 의해 전투불능 상태가 되었습니다.
+You have been knocked down by %s.
+*/
+ MSG_SLAINBY = 0x24e,
+/*20040804 to latest
+먹이 - '%s' 아이템이 존재하지 않습니다..
+Feed - "%s" is not available.
+*/
+ MSG_NOT_EXIST_PET_FOOD = 0x24f,
+/*20040804 to latest
+먹이 주기
+Feed Pet
+*/
+ MSG_PET_FEEDING = 0x250,
+/*20040804 to latest
+퍼포먼스
+Performance
+*/
+ MSG_PET_PERFORMANCE = 0x251,
+/*20040804 to latest
+알로 되돌리기
+Return to Egg Shell
+*/
+ MSG_PET_RETURN_EGG = 0x252,
+/*20040804 to latest
+악세사리 해제
+Unequip Accessory
+*/
+ MSG_PET_ACC_OFF = 0x253,
+/*20040804 to latest
+Pet 상태 보기
+Check Pet Status
+*/
+ MSG_PET_SHOWINFO = 0x254,
+/*20040804 to latest
+악세사리
+Accessory
+*/
+ MSG_PET_ACCESSARY = 0x255,
+/*20040804 to latest
+장착됨
+Equipped
+*/
+ MSG_ITEM_EQUIPED = 0x256,
+/*20040804 to latest
+펫 리스트
+Pet List
+*/
+ MSG_PET_EGG_LIST = 0x257,
+/*20040804 to latest
+장착 안됨
+Unequipped
+*/
+ MSG_ITEM_UNEQUIPED = 0x258,
+/*20040804 to latest
+정말로 먹이를 주시겠습니까?
+Are you sure that you want to feed your pet?
+*/
+ MSG_SURE_TO_FEED_PET = 0x259,
+/*20040804 to latest
+가격을 쓰실땐 숫자(0~9)만 써주십시오.
+Only the numbers (0~9) are available.
+*/
+ MSG_CAN_INPUT_NUMBER_ONLY = 0x25a,
+/*20040804 to latest
+감정되지 않은 아이템은 판매할 수 없습니다.
+You cannot sell unidentified items.
+*/
+ MSG_CANT_SELL_UNIDENTIFIED_ITEM = 0x25b,
+/*20040804 to latest
+가격이 0 Zeny인 아이템이 존재합니다. 계속 하시겠습니까?
+Item at 0 Zeny exists. Do you wish to continue?
+*/
+ MSG_YOU_HAVE_FREE_ITEM_ON_SHOP = 0x25c,
+/*20040804 to latest
+[새로 추가된 이모션 리스트]
+[New Emotion List]
+*/
+ MSG_NEW_EMOTION_LIST = 0x25d,
+/*20040804 to latest
+일본쪽 베타 사용자들에게 전하는 메세지. -> 겅호에서 재가입 하세요.
+N/A
+*/
+ MSG_BAN_JAPAN_REFUSE1 = 0x25e,
+/*20040804 to latest
+일본쪽 과금이 종료된 사용자들에게 전하는 메세지. -> 돈내라. 두 번내라.
+N/A
+*/
+ MSG_BAN_JAPAN_REFUSE2 = 0x25f,
+/*20040804 to latest
+같은 계정의 캐릭터가 이미 가입되어있습니다.
+Character in the same account already joined.
+*/
+ MSG_ALREADY_SAME_AID_JOINED = 0x260,
+/*20040804 to latest
+(%d 명) - 만18세이상
+(%d ppl) - over the age 18
+*/
+ MSG_SERVER_PROPERTY_ADULT = 0x261,
+/*20040804 to latest
+ 프로보크 상태가 되었습니다.
+Provoke initiated.
+*/
+ MSG_ENST_PROVOKE = 0x262,
+/*20040804 to latest
+ 프로보크 상태가 해제되었습니다.
+Provoke canceled.
+*/
+ MSG_DSST_PROVOKE = 0x263,
+/*20040804 to latest
+ 인듀어 상태가 되었습니다.
+Endure initiated.
+*/
+ MSG_ENST_ENDURE = 0x264,
+/*20040804 to latest
+ 인듀어 상태가 해제되었습니다.
+Endure canceled.
+*/
+ MSG_DSST_ENDURE = 0x265,
+/*20040804 to latest
+ 집중력 향상 상태가 되었습니다.
+Improve Concentration initiated.
+*/
+ MSG_ENST_CONCENTRATION = 0x266,
+/*20040804 to latest
+ 집중력 향상 상태가 해제되었습니다.
+Improve Concentration canceled.
+*/
+ MSG_DSST_CONCENTRATION = 0x267,
+/*20040804 to latest
+ 하이딩 상태가 되었습니다.
+Hiding Initiated.
+*/
+ MSG_ENST_HIDING = 0x268,
+/*20040804 to latest
+ 하이딩 상태가 해제되었습니다.
+Hiding Canceled.
+*/
+ MSG_DSST_HIDING = 0x269,
+/*20040804 to latest
+ 클로킹 상태가 되었습니다.
+Cloaking initiated.
+*/
+ MSG_ENST_CLOAKING = 0x26a,
+/*20040804 to latest
+ 클로킹 상태가 해제되었습니다.
+Cloaking canceled.
+*/
+ MSG_DSST_CLOAKING = 0x26b,
+/*20040804 to latest
+ 독을 반사 할 수 있는 상태가 되었습니다.
+Poison React initiated.
+*/
+ MSG_ENST_POISONREACT = 0x26c,
+/*20040804 to latest
+ 포이즌 리액트 상태가 해제되었습니다.
+Poison React canceled.
+*/
+ MSG_DSST_POISONREACT = 0x26d,
+/*20040804 to latest
+ 이동속도가 감소하였습니다.
+Speed reduced.
+*/
+ MSG_ENST_QUAGMIRE = 0x26e,
+/*20040804 to latest
+ 콰그마이어 상태가 해제되었습니다.
+Quagmire canceled.
+*/
+ MSG_DSST_QUAGMIRE = 0x26f,
+/*20040804 to latest
+ 방어력이 증가되었습니다.
+Defense increased.
+*/
+ MSG_ENST_ANGELUS = 0x270,
+/*20040804 to latest
+ 안젤루스 상태가 해제되었습니다.
+Angelus canceled.
+*/
+ MSG_DSST_ANGELUS = 0x271,
+/*20040804 to latest
+ 힘과 지능, 덱스가 증가하였습니다.
+Blessing aligned.
+*/
+ MSG_ENST_BLESSING = 0x272,
+/*20040804 to latest
+ 블레싱 상태가 해제되었습니다.
+Blessing canceled.
+*/
+ MSG_DSST_BLESSING = 0x273,
+/*20040804 to latest
+ 시그넘 크루시스를 사용하였습니다.
+Signum Crusis initiated.
+*/
+ MSG_ENST_CRUCIS = 0x274,
+/*20040804 to latest
+ 시그넘 크루시스 상태가 해제되었습니다.
+Signum Crusis canceled.
+*/
+ MSG_DSST_CRUCIS = 0x275,
+/*20040804 to latest
+ 독이 퍼지는 속도가 느려졌습니다.
+Slow Poison initiated.
+*/
+ MSG_ENST_SLOWPOISON = 0x276,
+/*20040804 to latest
+ 슬로우 포이즌 상태가 해제되었습니다.
+Slow Poison Canceled.
+*/
+ MSG_DSST_SLOWPOISON = 0x277,
+/*20040804 to latest
+ SP의 회복 속도가 향상 되었습니다.
+HP/SP recovery increased.
+*/
+ MSG_ENST_MAGNIFICAT = 0x278,
+/*20040804 to latest
+ 마니피캇 상태가 해제되었습니다.
+Magnificat canceled.
+*/
+ MSG_DSST_MAGNIFICAT = 0x279,
+/*20040804 to latest
+ 행운이 향상되었습니다.
+Luck increased.
+*/
+ MSG_ENST_GLORIA = 0x27a,
+/*20040804 to latest
+ 글로리아 상태가 해제되었습니다.
+Gloria canceled.
+*/
+ MSG_DSST_GLORIA = 0x27b,
+/*20040804 to latest
+ 1회 공격에 두 배 데미지를 받는 상태가 되었습니다.
+You will received double damage from all attacking opponents.
+*/
+ MSG_ENST_LEXAETERNA = 0x27c,
+/*20040804 to latest
+ 렉스에테르나 상태가 해제되었습니다.
+Lex Eterna canceled.
+*/
+ MSG_DSST_LEXAETERNA = 0x27d,
+/*20040804 to latest
+ 공격속도가 증가하였습니다.
+Attack Speed increased.
+*/
+ MSG_ENST_ADRENALINE = 0x27e,
+/*20040804 to latest
+ 공격속도가 감소하였습니다.
+Attack Speed reduced.
+*/
+ MSG_DSST_ADRENALINE = 0x27f,
+/*20040804 to latest
+ 페코에 올라 탔습니다.
+You've just been on a Peco Peco.
+*/
+ MSG_ENST_RIDING = 0x280,
+/*20040804 to latest
+ 페코에서 내렸습니다.
+You've just got off of a Peco Peco.
+*/
+ MSG_DSST_RIDING = 0x281,
+/*20040804 to latest
+ 팔콘을 장착하였습니다.
+You've just carried a Falcon with.
+*/
+ MSG_ENST_FALCON = 0x282,
+/*20040804 to latest
+ 팔콘을 풀어주었습니다.
+You've just released a Falcon.
+*/
+ MSG_DSST_FALCON = 0x283,
+/*20040804 to latest
+ 죽은척하기 상태가 되었습니다.
+Play Dead initiated.
+*/
+ MSG_ENST_TRICKDEAD = 0x284,
+/*20040804 to latest
+ 죽은척하기 상태가 해제되었습니다.
+Play Dead canceled.
+*/
+ MSG_DSST_TRICKDEAD = 0x285,
+/*20040804 to latest
+ 힘이 강해졌습니다.
+STR improved.
+*/
+ MSG_ENST_SHOUT = 0x286,
+/*20040804 to latest
+ 힘이 원래대로 돌아왔습니다.
+STR turned back to normal.
+*/
+ MSG_DSST_SHOUT = 0x287,
+/*20040804 to latest
+ 에너지코트 상태가 되었습니다.
+Energy Coat initiated.
+*/
+ MSG_ENST_ENERGYCOAT = 0x288,
+/*20040804 to latest
+ 에너지코트 상태가 해제되었습니다.
+Energy Coat canceled.
+*/
+ MSG_DSST_ENERGYCOAT = 0x289,
+/*20040804 to latest
+ 방어구가 파괴되었습니다.
+Armor destroyed.
+*/
+ MSG_ENST_BROKENAMOR = 0x28a,
+/*20040804 to latest
+ ...
+Weapon has just been released from destroyed status.
+*/
+ MSG_DSST_BROKENAMOR = 0x28b,
+/*20040804 to latest
+ 무기가 파괴되었니다.
+Weapon destroyed.
+*/
+ MSG_ENST_BROKENWEAPON = 0x28c,
+/*20040804 to latest
+ ...
+Weapon has just been released from destroyed status.
+*/
+ MSG_DSST_BROKENWEAPON = 0x28d,
+/*20040804 to latest
+ 환영상태가 되었습니다.
+Invisibility initiated.
+*/
+ MSG_ENST_ILLUSION = 0x28e,
+/*20040804 to latest
+ 환영상태가 해제되었습니다.
+Invisibility canceled.
+*/
+ MSG_DSST_ILLUSION = 0x28f,
+/*20040804 to latest
+과금 정보 처리가 늦어지고 있어 접속이 지연되고 있습니다. 잠시 후에 다시 시도해 주시기 바랍니다.
+Sorry. It is delayed due to the process of payment. Please re-connect in a minute.
+*/
+ MSG_REFUSE_BLOCK_TEMPORARY = 0x290,
+/*20040804 to 20060403
+장착된 화살을 해제 하여야 합니다.
+20060410 to 20061009
+장착된 화살 또는 탄환을 해제 하여야 합니다.
+20061016 to latest
+장착된 화살/탄환/수리검 을 해제해야합니다.
+You must unequip ammunition first.
+*/
+ MSG_UNEQUIP_ARROW = 0x291,
+/*20040804 to latest
+화살 목록
+Arrow List
+*/
+ MSG_ARROW_LIST = 0x292,
+/*20040804 to latest
+카트 목록
+Cart List
+*/
+ MSG_CART_LIST = 0x293,
+/*20040804 to latest
+카트를 장착한 상태여야 합니다.
+You must have a Pushcart.
+*/
+ MSG_MUST_EQUIP_CART = 0x294,
+/*20040804 to latest
+채팅방을 개설 할 수 없습니다.
+You cannot open a Chat Window.
+*/
+ MSG_CANT_MAKE_CHAT_ROOM = 0x295,
+/*20040804 to latest
+라그나로크 홈페이지로 접속하여 계정을 만듭니다. 처음 계정을 만드시면 3일 동안은 무료로 이용하실 수 있습니다.
+Registering an account is the first step to accessing the game. Do you want to visit the registration page now?
+*/
+ MSG_3DAY_FREE = 0x296,
+/*20040804 to latest
+앉은 상태에서는 이 아이템을 사용할 수 없습니다.
+You cannot use this item while sitting.
+*/
+ MSG_CANT_USE_WHEN_SITDOWN = 0x297,
+/*20040804 to latest
+채팅, 스킬, 아이템 사용금지가 %d 분간 남아 있습니다.
+Your use of skills and chat will be blocked for the next %d minutes.
+*/
+ MSG_BAD_MANNER_REMAIN = 0x298,
+/*20040804 to latest
+채팅, 스킬, 아이템 사용금지가 해지 되었습니다.
+Your use of skills and chat have been reinstated.
+*/
+ MSG_BAD_MANNER_END = 0x299,
+/*20040804 to latest
+-[장착안됨]
+- [Not equipped]
+*/
+ MSG_REF_UNEQUIP = 0x29a,
+/*20040804 to latest
+배고픔
+Very Hungry
+*/
+ MSG_VERY_HUNGRY = 0x29b,
+/*20040804 to latest
+출출함
+Hungry
+*/
+ MSG_HUNGRY = 0x29c,
+/*20040804 to latest
+보통
+Normal
+*/
+ MSG_NORMAL = 0x29d,
+/*20040804 to latest
+배부름
+Satisfied
+*/
+ MSG_REPLETE = 0x29e,
+/*20040804 to latest
+아주 배부름
+Stuffed
+*/
+ MSG_VERY_REPLETE = 0x29f,
+/*20040804 to latest
+서먹서먹함
+Awkward
+*/
+ MSG_VERY_AWKWARD = 0x2a0,
+/*20040804 to latest
+어색함
+Shy
+*/
+ MSG_AWKWARD = 0x2a1,
+/*20040804 to latest
+친함
+Cordial
+*/
+ MSG_FRIENDLY = 0x2a2,
+/*20040804 to latest
+절친함
+Loyal
+*/
+ MSG_VERY_FRIENDLY = 0x2a3,
+/*20040804 to latest
+알수 없음
+Unknown
+*/
+ MSG_UNKNOWN = 0x2a4,
+/*20040804 to 20080513
+(태국)귀하는 앞으로 %일 %d시간 %d분 사용이 가능합니다.
+20080520 to latest
+귀하는 앞으로 %일 %d시간 %d분 사용이 가능합니다.
+Your account has play time of %d day %d hour %d minute.
+*/
+ MSG_BILLING_DAY_HOUR_MINUTES = 0x2a5,
+/*20040804 to 20080513
+(태국)이 계정은 이미 다른 어카운트 서버로 접속한 상태입니다.
+20080520 to latest
+이 계정은 이미 다른 어카운트 서버로 접속한 상태입니다.
+Your account is already connected to account server.
+*/
+ MSG_BAN_INFORMATION_REMAINED_ANOTHER_ACCOUNT = 0x2a6,
+/*20040804 to 20080513
+(태국)귀하는 앞으로 %d시간 %d분 사용이 가능합니다.
+20080520 to latest
+귀하는 앞으로 %d시간 %d분 사용이 가능합니다.
+Your account has play time of %d hour %d minute.
+*/
+ MSG_BILLING_HOUR_MINUTES = 0x2a7,
+/*20040804 to 20080513
+(태국)귀하는 무료 사용자 입니다.
+20080520 to latest
+귀하는 무료 사용자 입니다.
+Your account is a free account.
+*/
+ MSG_BILLING_FREE_USER = 0x2a8,
+/*20040804 to 20080513
+(태국)이 계정으로 사크라이에 접속할수 없습니다.
+20080520 to latest
+이 계정으로 사크라이에 접속할수 없습니다.
+This account can't connect the Sakray server.
+*/
+ MSG_REFUSE_NONSAKRAY_ID_BLOCKED = 0x2a9,
+/*20040804 to latest
+펫의 이름은 영문 23, 한글 11자 이내로 정해 주세요.
+Your pet name must be 23 characters or less.
+*/
+ MSG_PETNAME_IN23 = 0x2aa,
+/*20040804 to latest
+이름은 단 한번만 바꿀수 있습니다. 펫 이름을 ^0000ff^0000ff %s^000000^000000 로 수정합니다. 계속 하시겠습니까?
+You may change your pet's name only once. Your pet's name will be changed to ^0000ff^0000ff %s^000000^000000. Do you wish to continue?
+*/
+ MSG_PETNAME_CHANGE_ONLYONCE = 0x2ab,
+/*20040804 to latest
+/폰트
+/font
+*/
+ MSG_NAMEBALLOON_TYPE = 0x2ac,
+/*20040804 to latest
+길드에 남은 제니가 부족하여 작업이 실패하였습니다.
+Your guild lacks the funds to pay for this venture.
+*/
+ MSG_GUILDZENY_NOT_ENOUGH = 0x2ad,
+/*20040804 to latest
+길드가 소유할 수 있는 최대 금액을 초과하여 작업이 실패하였습니다.
+Your guild zeny limit prevents you from performing this action.
+*/
+ MSG_GUILDZENY_OVER = 0x2ae,
+/*20040804 to latest
+이펙트 간략화 On
+Simplified effects have been activated.
+*/
+ MSG_MINEFFECT_ON = 0x2af,
+/*20040804 to latest
+이펙트 간략화 Off
+Simplified effects have been deactivated.
+*/
+ MSG_MINEFFECT_OFF = 0x2b0,
+/*20040804 to latest
+자본금
+Required Fee
+*/
+ MSG_CAPITAL = 0x2b1,
+/*20040804 to latest
+아이템을 바닥에 버리려면, 아이템 창을 열어 주십시오.
+If you wish to drop an item, you must first open your Item Window (alt+e).
+*/
+ MSG_OPEN_ITEMWND_TO_THROW = 0x2b2,
+/*20040804 to latest
+PC방 요금이 종료하여 개인 요금제로 전환합니다. 개인 요금으로 게임을 계속 하시겠습니까?
+Internet Cafe Time Plan has been ended. Would you like to continue the game with your personal play time?
+*/
+ MSG_ASK_PNGAMEROOM = 0x2b3,
+/*20040804 to latest
+
+*/
+ MSG_REPLY_REMAINTIME = 0x2b4,
+/*20040804 to latest
+
+*/
+ MSG_INFO_REMAINTIME = 0x2b5,
+/*20040804 to latest
+돈이 모자라거나, 가질 수 있는 최대 금액을 초과하였습니다.
+Your lack of zeny or your zeny limit have prevented you from performing this action.
+*/
+ MSG_OVER_OR_LOW_MONEY = 0x2b6,
+/*20040804 to latest
+전투불능 상태가 되었습니다. esc키를 누르시면 선택창이 뜹니다.
+Your character has fainted. Push the ESC key to restart.
+*/
+ MSG_PRESS_ESC_TO_RESTART = 0x2b7,
+/*20040804 to latest
+ %d 개 획득
+- %d obtained.
+*/
+ MSG_EA_OBTAIN = 0x2b8,
+/*20040804 to latest
+스펠 리스트
+Spell List
+*/
+ MSG_SPELL_LIST = 0x2b9,
+/*20040804 to latest
+/최소화
+/minimize
+*/
+ MSG_MINEFFECT = 0x2ba,
+/*20040804 to latest
+이 아이템은 손상되어 있습니다..
+This item has been damaged.
+*/
+ MSG_DAMAGED_ITEM = 0x2bb,
+/*20040804 to latest
+/noshift : 쉬프트를 누르지않고 힐로 적을 공격할수있게됩니다 On Off
+/noshift: You may use your ''force heal'' ability without the Shift key. On | Off
+*/
+ MSG_EXPLAIN_NOSHIFT = 0x2bc,
+/*20040804 to latest
+시프트를 누르지 않고도 힐로 언데드를 공격할수 있습니다 [/ns ON]
+[no shift] option activated. [ON]
+*/
+ MSG_NOSHIFT_ON = 0x2bd,
+/*20040804 to latest
+시프트를 눌러야 힐로 언데드를 공격할수 있습니다 [/ns OFF]
+[no shift] option deactivated. [OFF]
+*/
+ MSG_NOSHIFT_OFF = 0x2be,
+/*20040804 to latest
+MSI_REFUSE_BAN_BY_DBA
+*/
+ MSG_REFUSE_BAN_BY_DBA = 0x2bf,
+/*20040804 to latest
+MSI_REFUSE_EMAIL_NOT_CONFIRMED
+*/
+ MSG_REFUSE_EMAIL_NOT_CONFIRMED = 0x2c0,
+/*20040804 to latest
+MSI_REFUSE_BAN_BY_GM
+*/
+ MSG_REFUSE_BAN_BY_GM = 0x2c1,
+/*20040804 to latest
+MSI_REFUSE_TEMP_BAN_FOR_DBWORK
+*/
+ MSG_REFUSE_TEMP_BAN_FOR_DBWORK = 0x2c2,
+/*20040804 to latest
+MSI_REFUSE_SELF_LOCK
+*/
+ MSG_REFUSE_SELF_LOCK = 0x2c3,
+/*20040804 to latest
+MSI_REFUSE_NOT_PERMITTED_GROUP
+*/
+ MSG_REFUSE_NOT_PERMITTED_GROUP = 0x2c4,
+/*20040804 to latest
+MSI_REFUSE_WAIT_FOR_SAKRAY_ACTIVE
+*/
+ MSG_REFUSE_WAIT_FOR_SAKRAY_ACTIVE = 0x2c5,
+/*20040804 to latest
+/aura : 오오라를 간략화 시킬수있습니다 On Off
+/aura: Simplify Aura effect On | Off
+*/
+ MSG_EXPLAIN_AURA = 0x2c6,
+/*20040804 to latest
+오오라가 정상적으로 표시됩니다 [오오라 ON]
+Turn On Aura [Aura ON]
+*/
+ MSG_AURA_ON = 0x2c7,
+/*20040804 to latest
+오오라가 간략화되서 표시됩니다 [오오라 OFF]
+Simplify Aura enabled. [ON]
+*/
+ MSG_AURA_OFF = 0x2c8,
+/*20040804 to latest
+채팅금지 기록 %d 회
+Chat block record %d times
+*/
+ MSG_PROHIBIT_LOG = 0x2c9,
+/*20040804 to latest
+채팅 금지 리스트
+Chat block list
+*/
+ MSG_PROHIBIT_LIST = 0x2ca,
+/*20040804 to latest
+/이름표시 or /showname : 캐릭터의 이름 표시 방식을 변경합니다.
+/showname: Change the name font type.
+*/
+ MSG_EXPLAIN_SHOWNAMETYPE = 0x2cb,
+/*20040804 to latest
+/noctrl : 콘트롤을 누르지않아도 자동공격이 됩니다. On Off
+/noctrl | /nc: Auto attack without pressing ctrl key. On | Off
+*/
+ MSG_EXPLAIN_NOCTRL = 0x2cc,
+/*20040804 to latest
+콘트롤을 누르지 않아도 자동공격을 합니다 [/nc ON]
+Use auto attack without Ctrl. [Auto attack ON]
+*/
+ MSG_NOCTRL_ON = 0x2cd,
+/*20040804 to latest
+콘트롤을 눌러야 자동공격을 합니다 [/nc OFF]
+Use auto attack with Ctrl. [Auto attack OFF]
+*/
+ MSG_NOCTRL_OFF = 0x2ce,
+/*20040804 to latest
+채팅 금지 주기
+Mute this player.
+*/
+ MSG_APPEND_PROHIBIT = 0x2cf,
+/*20040804 to latest
+채팅 금지 완전 풀기 & 로그 삭제
+Unmute player & Erase mute time.
+*/
+ MSG_ERASE_PROHIBIT = 0x2d0,
+/*20040804 to latest
+채팅 금지 시간 줄이기(로그 삭제 안됨)
+Decrease Player Mute time.
+*/
+ MSG_REDUCE_PROHIBIT = 0x2d1,
+/*20040804 to latest
+폰트가 정상적으로 바뀌었습니다 [이름표시방식 1]
+Normal Font Displayed. [showname type 1]
+*/
+ MSG_SHOWNAME_ON = 0x2d2,
+/*20040804 to latest
+폰트가 가늘게 바뀌면서 파티명도 표시됩니다 [이름표시방식 2]
+Font will be thin and party name will be shown [showname type 2]
+*/
+ MSG_SHOWNAME_OFF = 0x2d3,
+/*20040804 to latest
+/doridori : 연속해서 이 명령어를 쳐주면 캐릭터가 도리도리 ^^;;
+/doridori: Shake head
+*/
+ MSG_EXPLAIN_DORIDORI = 0x2d4,
+/*20040804 to latest
+인터넷 카페에서 과금을 하고 있습니다.
+Internet room is paying now.
+*/
+ MSG_BILLING_INTERNET_CAFE = 0x2d5,
+/*20040804 to latest
+정액제 과금은 %d일 %d시간 %d분이 남았습니다.
+종량제 과금은 %d시간 %d분이 남았습니다.
+Prepaid voucher validate until %d days %d hours %d minutes later.
+Time limit voucher validate untill %d hours %d minutes later.
+*/
+ MSG_BILLING_BOTH = 0x2d6,
+/*20040804 to latest
+/bingbing : 연속해서 이 명령어를 쳐주면 캐릭터가 빙글빙글 ^^;;
+/bingbing: Rotates player counter clockwise.
+*/
+ MSG_EXPLAIN_BINGBING = 0x2d7,
+/*20040804 to latest
+/bangbang : 연속해서 이 명령어를 쳐주면 캐릭터가 뱅글뱅글 ^^;;
+/bangbang: Rotates player clockwise.
+*/
+ MSG_EXPLAIN_BANGBANG = 0x2d8,
+/*20040804 to latest
+/skillfail : 빨간색의 스킬사용 실패 메세지를 표시하지 않습니다 On Off
+/skillfail: Display red font message when skill fails. On | Off
+*/
+ MSG_EXPLAIN_SKILLFAIL = 0x2d9,
+/*20040804 to latest
+스킬사용 실패 메세지를 표시합니다 [/sf ON]
+Skill fail messages will be displayed. [Display On]
+*/
+ MSG_SKILLFAIL_ON = 0x2da,
+/*20040804 to latest
+스킬사용 실패 메세지를 표시하지 않습니다 [/sf OFF]
+Skill fail messages will not be displayed. [Display OFF]
+*/
+ MSG_SKILLFAIL_OFF = 0x2db,
+/*20040804 to latest
+/notalkmsg : 채팅내용을 채팅창에 표시하지 않습니다 On Off
+/notalkmsg: Chat will not be displayed in chat window. On | Off
+*/
+ MSG_EXPLAIN_NOTALKMSG = 0x2dc,
+/*20040804 to latest
+채팅내용을 채팅창에 표시합니다 [/nm ON]
+Chat content will be displayed in the chat window. [Display ON]
+*/
+ MSG_NOTALKMSG_ON = 0x2dd,
+/*20040804 to latest
+채팅내용을 채팅창에 표시하지않습니다 [/nm OFF]
+Chat content will not be displayed in the chat window. [Display OFF]
+*/
+ MSG_NOTALKMSG_OFF = 0x2de,
+/*20040804 to latest
+/set1 : /nc + /showname + /sf + /wi, /set2 : + /q3
+/set1: /noctrl + /showname + /skillfail
+*/
+ MSG_EXPLAIN_SET1 = 0x2df,
+/*20040804 to latest
+/fog : FOG이펙트를 키거나 끌수있습니다 On Off
+/fog: Fog effect. On | Off
+*/
+ MSG_EXPLAIN_FOG = 0x2e0,
+/*20040804 to latest
+ 청혼을 해왔습니다. 승낙하시겠습니까?
+You have received a marriage proposal. Do you accept?
+*/
+ MSG_SUGGEST_COUPLE = 0x2e1,
+/*20040804 to latest
+아이템 분배 방식
+Item sharing type
+*/
+ MSG_HOWITEMDIV = 0x2e2,
+/*20040804 to latest
+각자 취득
+Individual
+*/
+ MSG_ITEMDIV1 = 0x2e3,
+/*20040804 to latest
+균등하게 분배
+Shared
+*/
+ MSG_ITEMDIV2 = 0x2e4,
+/*20040804 to latest
+nProtect KeyCrypt
+*/
+ MSG_KEYCRYPT = 0x2e5,
+/*20040804 to latest
+Keyboard Driver가 검출되었습니다.
+
+키보드 보안 입력을 위해 추가기능을 설치하시겠습니까?
+
+(추가기능 설치후, 시스템 reboot 필수)
+Keyboard Driver has been detected.
+
+Do you want to install a program for keyboard security?
+
+(After installation, System Reboot is required)
+*/
+ MSG_KEYCRYPT_INSTALL_KEYDRIVER = 0x2e6,
+/*20040804 to latest
+설치가 완료 되었습니다.
+
+시스템을 Reboot 합니다.
+Installation has been completed.
+
+System will be rebooted.
+*/
+ MSG_KEYCRYPT_REBOOT = 0x2e7,
+/*20040804 to latest
+설치 실패.
+Installation has been failed.
+*/
+ MSG_KEYCRYPT_INSTALLFAIL = 0x2e8,
+/*20040804 to latest
+키보드 보안을 적용하지 않고 계속합니다.
+Keyboard Security will be skipped.
+*/
+ MSG_KEYCRYPT_SKIPKEYCRYPT = 0x2e9,
+/*20040804 to latest
+키보드 보안에 필요한 파일이 존재하지 않습니다.
+
+(npkeyc.vxd, npkeyc.sys, npkeycs.sys)
+Required file for Keyboard Security is not existing.
+
+(npkeyc.vxd, npkeyc.sys, npkeycs.sys)
+*/
+ MSG_KEYCRYPT_NOKEYCRYPTFILE = 0x2ea,
+/*20040804 to latest
+USB Keyboard가 검출되었습니다.
+
+키보드 보안 입력을 위해 추가기능을 설치하시겠습니까?
+
+(추가기능 설치후, 시스템 reboot 필수)
+USB Keyboard has been detected.
+
+Do you want to install a program for keyboard security?
+
+(After installation, System Reboot is required)
+*/
+ MSG_KEYCRYPT_USBKEYBOARD = 0x2eb,
+/*20040804 to latest
+ftp://ragnarok.nefficient.co.kr/pub/ragnarok/ragnarok0526.exe
+*/
+ MSG_FINDHACK_PATH = 0x2ec,
+/*20040804 to latest
+FindHack이 정상적으로 설치가 되어있지 않습니다. ragnarok0226.exe 를 다운로드 하여 라그나로크가 설치된 폴더에 설치해 주시기 바랍니다.(%d).
+FindHack is not installed correctly. Please download ragnarok0226.exe and install it in RagnarokOnline directory.(%d).
+*/
+ MSG_FINDHACK_NOTINSTALLED = 0x2ed,
+/*20040804 to latest
+해킹툴이 존재하지만 치료가 정상적으로 되지 않았습니다. 라그나로크가 실행되지 않습니다.
+Hacking tool is existing but it hasn't been cleaned. Rangarok Online will not be executed.
+*/
+ MSG_FINDHACK_HACKTOOLEXIST = 0x2ee,
+/*20040804 to latest
+해킹툴 진단 프로그램이 정상적으로 다운로드 되지 않았습니다. ragnarok0226.exe 를 다운로드 하여 라그나로크가 설치된 폴더에 설치해 주시기 바랍니다.
+Hacking tool scan program has not been downloaded correctly. Please download ragnarok0226.exe and install it in RagnarokOnline directory.
+*/
+ MSG_FINDHACK_CANTDOWNLOAD = 0x2ef,
+/*20040804 to latest
+NPX.DLL 등록에러 이거나 FindHack 구동에 필요한 파일이 없습니다. ragnarok0226.exe 를 다운로드 하여 라그나로크가 설치된 폴더에 설치해 주시기 바랍니다.
+NPX.DLL register error or there is no necessary file to run FindHack. Please download ragnarok0226.exe and install it in RagnarokOnline directory.
+*/
+ MSG_FINDHACK_NOFILE = 0x2f0,
+/*20040804 to latest
+예외사항이 발생했습니다. (02-3281-0361)로 문의해주세요. 리턴값(%d)
+Exceptional Error. Please contact the customer support. Return Value: (%d)
+*/
+ MSG_FINDHACK_EXCEPTION = 0x2f1,
+/*20040804 to latest
+종료버튼을 클릭 하셨습니다.
+Exit button has been clicked.
+*/
+ MSG_FINDHACK_EXITPRESSED = 0x2f2,
+/*20040804 to latest
+Findhack 업데이트 서버접근 실패하였습니다. 잠시 후에 다시 시도해 주시거나 그라비티 운영팀으로 연락해주시기 바랍니다.
+Unable to connect Findhack Update Server. Please try again or contact the customer support.
+*/
+ MSG_FINDHACK_UPDATEFAILED = 0x2f3,
+/*20040804 to latest
+사랑받고있는
+Beloved
+*/
+ MSG_NAMED_PET = 0x2f4,
+/*20040804 to latest
+/report or /신고 : 신고용 갈무리 파일을 저장합니다.
+/report: Save a chat log file.
+*/
+ MSG_REPORTCOMMAND_EXPLANATION = 0x2f5,
+/*20040804 to latest
+이 파일은 (주)그라비티의 운영팀에서 게임내의 부정행위나 비매너 행위에 대한
+증거자료로 사용하게 됩니다.
+문서를 다른 문서 형식으로 저장하거나 내용을 변경하여 원본과 일치하지 않게
+ 될 경우 그 문서는 증거 효력을 상실하게 됩니다.
+Chat logs are not accepted as evidence for any ill-mannered violation on account of possible file modifications. However this feature is provided for players' personal reference.
+*/
+ MSG_REPORTTEXT_HEADER = 0x2f6,
+/*20040804 to latest
+당신을 사랑해요 ♡
+I love you.
+*/
+ MSG_LOVE_SKILL = 0x2f7,
+/*20040804 to latest
+화면 또는 이펙트가 밝아서 눈에 부담이 되시는분들은 모니터의 밝기를 조정해주시기바랍니다.
+Please adjust your monitor/video brightness if effects appear too bright.
+*/
+ MSG_EXPLAIN_BRIGHT = 0x2f8,
+/*20040804 to latest
+전체화면모드가 잘안되는 경우에 게임실행후 ALT+TAB으로 화면을 전환하면 잘되는 기종도 있습니다
+If full screen mode fails to work, it is suggested you alt+tab [or ctrl+esc] to inactivate and reactivate the Ragnarok Client.
+*/
+ MSG_EXPLAIN_ALTTAB = 0x2f9,
+/*20040804 to latest
+(%d 명) - 유료서버
+(%d players) - Pay to Play Server
+*/
+ MSG_SERVER_PROPERTY_PAY = 0x2fa,
+/*20040804 to latest
+(%d 명) - 무료서버
+(%d players) - Free Server
+*/
+ MSG_SERVER_PROPERTY_FREE = 0x2fb,
+/*20040804 to latest
+무료 회원은 유료 서버로 접속할 수 없습니다.
+Trial players can't connect Pay to Play Server.
+*/
+ MSG_CANT_CONNECT_TO_PAY_SERVER = 0x2fc,
+/*20040804 to latest
+마우스 우클릭으로 F9에 저장한 스킬을 쓸수있습니다 [/q1 ON]
+Right click menu skills for F9 are Enabled.[/q1 ON]
+*/
+ MSG_QUICKSPELL_ON = 0x2fd,
+/*20040804 to latest
+마우스 우클릭으로 스킬을 사용하지 못합니다 [/q1 OFF]
+Right click menu skills for F9 are Disabled.[/q1 OFF]
+*/
+ MSG_QUICKSPELL_OFF = 0x2fe,
+/*20040804 to latest
+/quickspell : 마우스 우클릭으로 F9에 저장한 스킬을 사용합니다 On Off
+/quickspell: Right-click menu enables you to use skills assigned to the F9 hotkey. On | Off
+*/
+ MSG_EXPLAIN_QUICKSPELL = 0x2ff,
+/*20040804 to latest
+마우스의 WHEEL을 사용해서 F7 과 F8에 저장한 스킬을 사용합니다 [/q2 ON]
+Mouse wheel skills for F7 and F8 are Enabled.[/q2 ON]
+*/
+ MSG_QUICKSPELL2_ON = 0x300,
+/*20040804 to latest
+마우스 WHEEL로 스킬을 사용하지 못합니다 [/q2 OFF]
+Mouse wheel skills for F7 and F8 are Disabled.[/q2 OFF]
+*/
+ MSG_QUICKSPELL2_OFF = 0x301,
+/*20040804 to latest
+/quickspell2 : 마우스 WHEEL을 위,아래로 굴려서 F7과F8에 저장한 스킬을 사용합니다 On Off
+/quickspell2: By rolling the mouse wheel up and down, you are able to use skills registered on F7 and F8 hotkeys. On | Off
+*/
+ MSG_EXPLAIN_QUICKSPELL2 = 0x302,
+/*20040804 to latest
+/q3 : /quickspell (/q1) + /quickspell2 (/q2)
+/q3: /quickspell (/q1) + /quickspell2 (/q2)
+*/
+ MSG_EXPLAIN_QUICKSPELL3 = 0x303,
+/*20040804 to latest
+/찌릿
+/bzz
+*/
+ MSG_EMOTION_STARE = 0x304,
+/*20040804 to latest
+/밥
+/rice
+*/
+ MSG_EMOTION_HUNGRY = 0x305,
+/*20040804 to latest
+/멋져
+/awsm
+*/
+ MSG_EMOTION_COOL = 0x306,
+/*20040804 to latest
+/메롱
+/meh
+*/
+ MSG_EMOTION_MERONG = 0x307,
+/*20040804 to latest
+/부끄
+/shy
+*/
+ MSG_EMOTION_SHY = 0x308,
+/*20040804 to latest
+/쓱쓱
+/pat
+*/
+ MSG_EMOTION_GOODBOY = 0x309,
+/*20040804 to latest
+/엠탐
+/mp
+*/
+ MSG_EMOTION_SPTIME = 0x30a,
+/*20040804 to latest
+/질질
+/slur
+*/
+ MSG_EMOTION_SEXY = 0x30b,
+/*20040804 to latest
+/컴온
+/com
+*/
+ MSG_EMOTION_COMEON = 0x30c,
+/*20040804 to latest
+/하품
+/yawn
+*/
+ MSG_EMOTION_SLEEPY = 0x30d,
+/*20040804 to latest
+/축하
+/grat
+*/
+ MSG_EMOTION_CONGRATULATION = 0x30e,
+/*20040804 to latest
+/피탐
+/hp
+*/
+ MSG_EMOTION_HPTIME = 0x30f,
+/*20040804 to latest
+/이모션 : 현재 사용가능한 이모션의 리스트를 보여줍니다.
+/emotion: views the emoticon list.
+*/
+ MSG_EXPLAIN_EMOTION = 0x310,
+/*20040804 to latest
+키보드를 이용해서 스킬단축창 1,2,3의 스킬들을 사용합니다. [/bm ON]
+Skills assigned to shortcut windows 1, 2, 3 are Enabled. [/bm ON]
+*/
+ MSG_BATTLE_ON = 0x311,
+/*20040804 to latest
+키보드를 이용해서 스킬단축창 1,2,3의 스킬들을 사용하지못합니다. [/bm OFF]
+Skills assigned to shortcut windows 1, 2, 3 are Disabled. [/bm OFF]
+*/
+ MSG_BATTLE_OFF = 0x312,
+/*20040804 to latest
+/battlemode : Q ~ O 를 누르면 스킬단축창2의 스킬들이 사용됩니다.
+/battlemode: allows you to use skills assigned to Shortcut Window 2 by pressing Q ~ O keys.
+*/
+ MSG_EXPLAIN_BATTLE = 0x313,
+/*20040804 to latest
+ A ~ L 을 누르면 스킬단축창3의 스킬들이 사용됩니다.
+A ~ L keys allow you to use skills assigned to Shortcut Window 3.
+*/
+ MSG_EXPLAIN_BATTLE2 = 0x314,
+/*20040804 to latest
+라그나로크를 실행하실때 다른 프로그램을 띄우시면 게임이 느려질수도있습니다.
+Please remember, programs running in the background while playing may affect the game's performance.
+*/
+ MSG_EXPLAIN_LAG = 0x315,
+/*20040804 to 20041130
+천사님 제 목소리 들리세여? ^^;
+20041206 to latest
+천사님 제 목소리 들리세요? ^^;
+Dear angel, can you hear my voice?
+*/
+ MSG_SUPERNOVICE1 = 0x316,
+/*20040804 to latest
+슈퍼노비스
+Super Novice
+*/
+ MSG_SUPERNOVICE2 = 0x317,
+/*20040804 to 20041130
+예여~
+20041206 to latest
+예요~
+Super Novice~
+*/
+ MSG_SUPERNOVICE3 = 0x318,
+/*20040804 to 20041130
+저 좀 도와주세여~ ㅠ_ㅠ
+20041206 to latest
+저 좀 도와주세요~ ㅠ_ㅠ
+Help me out~ Please~ T_T
+*/
+ MSG_SUPERNOVICE4 = 0x319,
+/*20040804 to 20041011
+ 입양을 요청해왔습니다. 승낙하시겠습니까?
+20041018 to latest
+님께서 당신을 입양시키고 싶어하십니다. 승낙하시겠습니까?
+ wishes to adopt you. Do you accept?
+*/
+ MSG_SUGGEST_BABY = 0x31a,
+/*20040804 to latest
+ Z ~ > 을 누르면 스킬단축창1의 스킬들이 사용됩니다. On Off
+Z ~ > keys allow you to use skills assigned on shortcut window 1. On | Off
+*/
+ MSG_EXPLAIN_BATTLE3 = 0x31b,
+/*20040804 to latest
+ Space를 한번 누른뒤에 글자를 입력하면 채팅을 할수있습니다.
+Press the space bar to Chat when in Battle mode [/battlemode | /bm].
+*/
+ MSG_EXPLAIN_BATTLE4 = 0x31c,
+/*20040804 to latest
+게임가드 파일이 없거나 변조되었습니다. 게임가드 셋업 파일을 설치해보시기 바랍니다.
+"Either there's no Game Guard installed on the program or Game Guard is cracked. Please, try to reinstall Game Guard from its setup file."
+*/
+ MSG_NPGAMEMON_ERROR_AUTH_GAMEGUARD = 0x31d,
+/*20040804 to latest
+윈도우의 일부 시스템 파일이 손상되었습니다. 인터넷 익스플로러(IE)를 다시 설치해보시기 바랍니다.
+Some of Windows system files have been damaged. Please re-install your Internet Explorer.
+*/
+ MSG_NPGAMEMON_ERROR_CRYPTOAPI = 0x31e,
+/*20040804 to latest
+게임가드 실행에 실패했습니다. 게임가드 셋업 파일을 다시 설치해보시기 바랍니다.
+"Failed to run Game Guard. Please, try to reinstall Game Guard from its setup file."
+*/
+ MSG_NPGAMEMON_ERROR_EXECUTE = 0x31f,
+/*20040804 to latest
+불법 프로그램이 발견되었습니다. 불필요한 프로그램을 종료한 후 다시 실행해보시기 바랍니다.
+"At least one hazardous program has been detected. Please, terminate all the unnecessary programs before executing Game Guard."
+*/
+ MSG_NPGAMEMON_ERROR_ILLEGAL_PRG = 0x320,
+/*20040804 to latest
+게임가드 업데이트를 취소하셨습니다. 접속이 계속 되지 않을 경우 인터넷 및 방화벽 상태를 점검해보시기 바랍니다.
+"Game Guard update is canceled. If the disconnection continues, please, check your internet or firewall settings."
+*/
+ MSG_NPGMUP_ERROR_ABORT = 0x321,
+/*20040804 to latest
+게임가드 업데이트 서버 접속에 실패하였습니다. 잠시 후 재시도 해보거나, 인터넷 및 방화벽 상태를 점검해 보시기 바랍니다.
+"Failed to connect to Game Guard update server. Try to connect again later, or try to check the internet or firewall settings."
+*/
+ MSG_NPGMUP_ERROR_CONNECT = 0x322,
+/*20040804 to latest
+게임가드 업데이트를 완료하지 못 했습니다. 바이러스 검사를 해보시거나, PC 관리 프로그램을 사용하시면 설정을 조정한 후 게임을 실행해 보시기 바랍니다.
+"Can't complete Game Guard update process. Please, try to execute a vaccine program to remove viruses. Or, please try to modify the settings of your PC managing tool if you are using any."
+*/
+ MSG_NPGMUP_ERROR_AUTH = 0x323,
+/*20040804 to latest
+/notrade : 거래신청을 자동으로 거절합니다 On Off
+/notrade: Declines trade offers automatically. On | Off
+*/
+ MSG_EXPLAIN_NOTRADE = 0x324,
+/*20040804 to 20040805
+거래신청을 자동으로 거절합니다 [/nt ON]
+20040809 to latest
+거래신청과 친구등록요청을 자동으로 거절합니다 [/nt ON]
+Auto decline trade offers has been Enabled. [/nt ON]
+*/
+ MSG_NOTRADE_ON = 0x325,
+/*20040804 to 20040805
+거래신청을 정상적으로 받습니다 [/nt OFF]
+20040809 to latest
+거래신청과 친구등록요청을 정상적으로 받습니다 [/nt OFF]
+Auto decline trade offers has been Disabled. [/nt OFF]
+*/
+ MSG_NOTRADE_OFF = 0x326,
+/*20040804 to latest
+같은 아이템은 한번에 30000개 이상은 살수 없습니다.
+You cannot buy more than 30,000ea items at once.
+*/
+ MSG_LIMIT_BUY_ITEM = 0x327,
+/*20040804 to latest
+재료가 충분하지 않습니다.
+You do not have enough ingredients.
+*/
+ MSG_NOT_ENOUGH_SOURCE = 0x328,
+/*20040804 to latest
+%s에 계정정보가 남아있습니다.
+Login information remains at %s.
+*/
+ MSG_ALREADY_CONNECT = 0x329,
+/*20040804 to 20040906
+해킹 관련 조사를 위해 로그인이 금지되 었습니다. 자세한 문의는 해킹관련 메일로 하여주시기 바랍니다.
+20040913 to latest
+계정도용 조사를 위해 로그인이 금지되었습니다. 자세한 문의는 계정도용 관련 문의 메일로 해주시기 바랍니다.
+Account has been locked for a hacking investigation. Please contact the GM Team for more information.
+*/
+ MSG_HACKING_INVESTIGATION = 0x32a,
+/*20040804 to latest
+귀하는 버그관련 조사중이므로 일시적으로 접속을 금합니다
+This account has been temporarily prohibited from login due to a bug-related investigation.
+*/
+ MSG_BUG_INVESTIGATION = 0x32b,
+/*20040804 to latest
+수리가능한 아이템
+Repairable items
+*/
+ MSG_REPAIRITEMLIST = 0x32c,
+/*20040804 to latest
+아이템 수리 성공
+Item has been successfully repaired.
+*/
+ MSG_ITEM_REPAIR_SUCCEESS = 0x32d,
+/*20040804 to latest
+아이템 수리 실패 (재료 또는 상대와의 거리등을 확인해주십시요)
+You have failed to repair this item. Please check the distance between you and opponent.
+*/
+ MSG_ITEM_REPAIR_FAIL = 0x32e,
+/*20040804 to latest
+시스템 상황을 지속적으로 체크 합니다.[운영자모드] [/sc ON]
+System process enabled [GM mode] [/sc ON]
+*/
+ MSG_SYSTEM_CHECK_ON = 0x32f,
+/*20040804 to latest
+시스템 상황을 지속적으로 체크 하지 않습니다.[운영자모드] [/sc OFF]
+System process disabled [GM mode] [/sc OFF]
+*/
+ MSG_SYSTEM_CHECK_OFF = 0x330,
+/*20040804 to latest
+/systemcheck : 시스템 상황을 지속적으로 체크 합니다.[운영자모드]
+/systemcheck: Check the system process [GM mode] On | Off
+*/
+ MSG_EXPLAIN_SYSTEM_CHECK = 0x331,
+/*20040804 to latest
+(%s)님이 친구 신청을 하셨습니다. 친구가 되시겠습니까?
+(%s) wishes to be friends with you. Would you like to accept?
+*/
+ MSG_SUGGEST_JOIN_FRIEND = 0x332,
+/*20040804 to latest
+더 이상 친구 등록을 하실수 없습니다.
+Your Friend List is full.
+*/
+ MSG_FRIEND_ADD_ME_OVERSIZE = 0x333,
+/*20040804 to latest
+(%s)님이 더 이상 친구 등록을 하실수 없습니다.
+(%s)'s Friend List is full.
+*/
+ MSG_FRIEND_ADD_OTHER_OVERSIZE = 0x334,
+/*20040804 to latest
+(%s)님과 친구가 되셨습니다.
+You have become friends with (%s).
+*/
+ MSG_FRIEND_ADD_SUCCEED = 0x335,
+/*20040804 to latest
+(%s)님이 친구 되기를 원하지 않습니다.
+(%s) does not want to be friends with you.
+*/
+ MSG_FRIEND_ADD_FALSE = 0x336,
+/*20040804 to latest
+이 캐릭터는 %s 까지 블럭되어있습니다.
+This character will be blocked to use until %s.
+*/
+ MSG_BLOCKED = 0x337,
+/*20040804 to latest
+천만제니 이상 입력하셔도 가격은 천만제니로 판매됩니다.
+Price will be fixed at 10,000,000 zeny, even if you enter higher price.
+*/
+ MSG_OVERPRICE = 0x338,
+/*20040804 to latest
+(적음)
+(Very low)
+*/
+ MSG_LITTLEUSER = 0x339,
+/*20040804 to latest
+(약간 적음)
+(Low)
+*/
+ MSG_ALITTLEUSER = 0x33a,
+/*20040804 to latest
+(보통)
+(Normal)
+*/
+ MSG_NORMLEUSER = 0x33b,
+/*20040804 to latest
+(많음)
+(High)
+*/
+ MSG_MANYUSER = 0x33c,
+/*20040804 to latest
+(매우 많음)
+(Very high)
+*/
+ MSG_VERYMANYUSER = 0x33d,
+/*20040804 to latest
+비매너에 의해 운영자로부터 채팅금지가 적용됩니다.
+You have been blocked from using chat and skills for %d minutes by the GM Team.
+*/
+ MSG_GM_BAD_MANNER_START = 0x33e,
+/*20040804 to latest
+GM에 의한 채팅금지가 %d 분 남아 있습니다.
+%d minutes remain until release from the GM penalty.
+*/
+ MSG_GM_BAD_MANNER_REMAIN = 0x33f,
+/*20040804 to latest
+GM에 의한 채팅금지가 해지 되었습니다.
+You have been released from the GM penalty.
+*/
+ MSG_GM_BAD_MANNER_END = 0x340,
+/*20040804 to latest
+도배 방지 시스템으로 인한 자동 채팅금지가 적용됩니다.
+You have been blocked from using chat and skills for %d as an automatic penalty.
+*/
+ MSG_AUTO_BAD_MANNER_START = 0x341,
+/*20040804 to latest
+도배 방지 시스템으로 인한 채팅금지가 %d 분 남아 있습니다.
+%d minutes remain until release from auto penalty.
+*/
+ MSG_AUTO_BAD_MANNER_REMAIN = 0x342,
+/*20040804 to latest
+도배 방지 시스템으로 인한 채팅금지가 해지되었습니다. 게임진행 시에는 도배에 대해서 주의하여 주시기 바랍니다.
+You have been released from the auto penalty. Please refrain from spamming in-game.
+*/
+ MSG_AUTO_BAD_MANNER_END = 0x343,
+/*20040804 to latest
+%s님과 %s님이 이혼하셨습니다.
+%s and %s have divorced from each other.
+*/
+ MSG_DIVORCE = 0x344,
+/*20040804 to 20041108
+星鬪士 %s의 태양의 장소로 %s 가 지정됐습니다.
+20041115 to latest
+拳聖 %s의 태양의 장소로 %s 가 지정됐습니다.
+%s has been designated as Gravity %s's Solar Space.
+20041220 to 20050816
+태양과 달과 별의 전사 %s의 태양의 장소로 %s 가 지정됐습니다.
+*/
+ MSG_STARPLACE1 = 0x345,
+/*20040804 to 20041108
+星鬪士 %s의 달의 장소로 %s 가 지정됐습니다.
+20041115 to latest
+拳聖 %s의 달의 장소로 %s 가 지정됐습니다.
+%s has been designated as Gravity %s's Luna Space.
+20041220 to 20050816
+태양과 달과 별의 전사 %s의 달의 장소로 %s 가 지정됐습니다.
+*/
+ MSG_STARPLACE2 = 0x346,
+/*20040804 to 20041108
+星鬪士 %s의 별의 장소로 %s 가 지정됐습니다.
+20041115 to latest
+拳聖 %s의 별의 장소로 %s 가 지정됐습니다.
+%s has been designated as Gravity %s's Stellar Space.
+20041220 to 20050816
+태양과 달과 별의 전사 %s의 별의 장소로 %s 가 지정됐습니다.
+*/
+ MSG_STARPLACE3 = 0x347,
+/*20040804 to 20041108
+星鬪士 %s의 태양의 장소는 %s 입니다
+20041115 to latest
+拳聖 %s의 태양의 장소는 %s 입니다
+Gravity %s's Solar Space: %s
+20041220 to 20050816
+태양과 달과 별의 전사 %s의 태양의 장소는 %s 입니다
+*/
+ MSG_STARPLACE4 = 0x348,
+/*20040804 to 20041108
+星鬪士 %s의 달의 장소는 %s 입니다
+20041115 to latest
+拳聖 %s의 달의 장소는 %s 입니다
+Gravity %s's Luna Space: %s
+20041220 to 20050816
+태양과 달과 별의 전사 %s의 달의 장소는 %s 입니다
+*/
+ MSG_STARPLACE5 = 0x349,
+/*20040804 to 20041108
+星鬪士 %s의 별의 장소는 %s 입니다
+20041115 to latest
+拳聖 %s의 별의 장소는 %s 입니다
+Gravity %s's Stellar Space: %s
+20041220 to 20050816
+태양과 달과 별의 전사 %s의 별의 장소는 %s 입니다
+*/
+ MSG_STARPLACE6 = 0x34a,
+/*20040804 to 20041108
+星鬪士 %s의 태양의 몬스터로 %s 가 지정됐습니다.
+20041115 to latest
+拳聖 %s의 태양의 몬스터로 %s 가 지정됐습니다.
+%s has been designated as Gravity %s's Solar Monster.
+20041220 to 20050816
+태양과 달과 별의 전사 %s의 태양의 몬스터로 %s 가 지정됐습니다.
+*/
+ MSG_STARMONSTER1 = 0x34b,
+/*20040804 to 20041108
+星鬪士 %s의 달의 몬스터로 %s 가 지정됐습니다.
+20041115 to latest
+拳聖 %s의 달의 몬스터로 %s 가 지정됐습니다.
+%s has been designated as Gravity %s's Luna Monster.
+20041220 to 20050816
+태양과 달과 별의 전사 %s의 달의 몬스터로 %s 가 지정됐습니다.
+*/
+ MSG_STARMONSTER2 = 0x34c,
+/*20040804 to 20041108
+星鬪士 %s의 별의 몬스터로 %s 가 지정됐습니다.
+20041115 to latest
+拳聖 %s의 별의 몬스터로 %s 가 지정됐습니다.
+%s has been designated as Gravity %s's Stellar Monster.
+20041220 to 20050816
+태양과 달과 별의 전사 %s의 별의 몬스터로 %s 가 지정됐습니다.
+*/
+ MSG_STARMONSTER3 = 0x34d,
+/*20040804 to 20041108
+星鬪士 %s의 태양의 몬스터는 %s 입니다
+20041115 to latest
+拳聖 %s의 태양의 몬스터는 %s 입니다
+Gravity %s's Solar Monster: %s
+20041220 to 20050816
+태양과 달과 별의 전사 %s의 태양의 몬스터는 %s 입니다
+*/
+ MSG_STARMONSTER4 = 0x34e,
+/*20040804 to 20041108
+星鬪士 %s의 달의 몬스터는 %s 입니다
+20041115 to latest
+拳聖 %s의 달의 몬스터는 %s 입니다
+Gravity %s's Luna Monster: %s
+20041220 to 20050816
+태양과 달과 별의 전사 %s의 달의 몬스터는 %s 입니다
+*/
+ MSG_STARMONSTER5 = 0x34f,
+/*20040804 to 20041108
+星鬪士 %s의 별의 몬스터는 %s 입니다
+20041115 to latest
+拳聖 %s의 별의 몬스터는 %s 입니다
+Gravity %s's Stellar Monster: %s
+20041220 to 20050816
+태양과 달과 별의 전사 %s의 별의 몬스터는 %s 입니다
+*/
+ MSG_STARMONSTER6 = 0x350,
+/*20040804 to latest
+/window : 창 위치 이동시 다른 창과 달라붙는 속성이 들어갑니다 On Off
+/window: Display windows will snap/dock together. On | Off
+*/
+ MSG_EXPLAIN_WINDOW = 0x351,
+/*20040804 to latest
+창 위치 이동시 다른 창과 잘 붙습니다 [/wi ON]
+Display window docking enabled. [/wi ON]
+*/
+ MSG_WINDOW_ON = 0x352,
+/*20040804 to latest
+창 위치 이동시 다른 창과 붙으려는 속성을 가지지 않습니다 [/wi OFF]
+Display window docking disabled. [/wi OFF]
+*/
+ MSG_WINDOW_OFF = 0x353,
+/*20040804 to latest
+/pvpinfo : 자신의 PVP 승패와 PVP 포인트를 알 수 있습니다.
+/pvpinfo: shows your PVP result and PVP points.
+*/
+ MSG_EXPLAIN_PVP_INFO = 0x354,
+/*20040804 to latest
+현재 %d승, %d패, PVP포인트는 %d입니다.
+You have won %d times and have lost %d times in PVP. Current points %d.
+*/
+ MSG_PVP_INFO = 0x355,
+/*20040804 to latest
+매너 포인트를 성공적으로 보냈습니다.
+A manner point has been successfully aligned.
+*/
+ MSG_SEND_MANNER_POINT = 0x356,
+#if PACKETVER >= 20040809
+/*20040809 to latest
+현재 이곳은 PK 가능 지역입니다. 불의의 공격에 유의 하시기 바랍니다.
+You are in a PK area. Please beware of sudden attack.
+*/
+ MSG_PKZONE = 0x357,
+#endif
+#if PACKETVER >= 20040817
+/*20040817 to latest
+게임가드 업데이트가 바이러스나 스파이웨어와의 충돌로 실패했습니다. 백신 프로그램/스파이웨어 제거 프로그램을 사용한 후 접속해 주십시기 바랍니다
+Game Guard update has been failed when either Virus or Spyware conflicted with. Please, Uninstall Spyware and Virus protection program before you log in.
+*/
+ MSG_NPGAMEMON_ERROR_100ERROR = 0x358,
+#endif
+#if PACKETVER >= 20040823
+/*20040823 to latest
+윈도우 호환성 문제로 프로그램을 종료합니다. 게임을 다시 실행해 주시기 바랍니다
+Program has encountered an error related to Windows compatibility. Please start the game again.
+*/
+ MSG_NPGAMEMON_XP_COMPATIBILITY = 0x359,
+#endif
+#if PACKETVER >= 20040906
+/*20040906 to latest
+채팅, 스킬, 아이템을 사용할수없게 되었습니다.
+You have been blocked from chatting, using skills and items.
+*/
+ MSG_PK_HONOR = 0x35a,
+/*20040906 to latest
+캐릭터 삭제 작업중이므로 접속이 일시적으로 제한됩니다.
+Login is temporarily unavailable while this character is being deleted.
+*/
+ MSG_DELETING_CHAR = 0x35b,
+/*20040906 to latest
+결혼 상대자의 캐릭터 삭제 작업중이므로 접속이 일시적으로 제한됩니다.
+Login is temporarily unavailable while your spouse character is being deleted.
+*/
+ MSG_DELETING_SPOUSE_CHAR = 0x35c,
+#endif
+#if PACKETVER >= 20040913
+/*20040913 to latest
+Novice
+*/
+ MSG_NOVICE = 0x35d,
+/*20040913 to latest
+Swordman
+*/
+ MSG_SWORDMAN = 0x35e,
+/*20040913 to latest
+Magician
+Mage
+*/
+ MSG_MAGICIAN = 0x35f,
+/*20040913 to latest
+Archer
+*/
+ MSG_ARCHER = 0x360,
+/*20040913 to latest
+Acolyte
+*/
+ MSG_ACOLYTE = 0x361,
+/*20040913 to latest
+Merchant
+*/
+ MSG_MERCHANT = 0x362,
+/*20040913 to latest
+Thief
+*/
+ MSG_THIEF = 0x363,
+/*20040913 to latest
+Knight
+*/
+ MSG_KNIGHT = 0x364,
+/*20040913 to latest
+Prieset
+Priest
+*/
+ MSG_PRIEST = 0x365,
+/*20040913 to latest
+Wizerd
+Wizard
+*/
+ MSG_WIZARD = 0x366,
+/*20040913 to latest
+Blacksmith
+*/
+ MSG_BLACKSMITH = 0x367,
+/*20040913 to latest
+Hunter
+*/
+ MSG_HUNTER = 0x368,
+/*20040913 to latest
+Assassin
+*/
+ MSG_ASSASSIN = 0x369,
+/*20040913 to latest
+Novice
+*/
+ MSG_NOVICE_W = 0x36a,
+/*20040913 to latest
+Swordman
+*/
+ MSG_SWORDMAN_W = 0x36b,
+/*20040913 to latest
+Magician
+Mage
+*/
+ MSG_MAGICIAN_W = 0x36c,
+/*20040913 to latest
+Archer
+*/
+ MSG_ARCHER_W = 0x36d,
+/*20040913 to latest
+Acolyte
+*/
+ MSG_ACOLYTE_W = 0x36e,
+/*20040913 to latest
+Merchant
+*/
+ MSG_MERCHANT_W = 0x36f,
+/*20040913 to latest
+Thief
+*/
+ MSG_THIEF_W = 0x370,
+/*20040913 to latest
+Knight
+*/
+ MSG_KNIGHT_W = 0x371,
+/*20040913 to latest
+Prieset
+Priest
+*/
+ MSG_PRIEST_W = 0x372,
+/*20040913 to latest
+Wizerd
+Wizard
+*/
+ MSG_WIZARD_W = 0x373,
+/*20040913 to latest
+Blacksmith
+*/
+ MSG_BLACKSMITH_W = 0x374,
+/*20040913 to latest
+Hunter
+*/
+ MSG_HUNTER_W = 0x375,
+/*20040913 to latest
+Assassin
+*/
+ MSG_ASSASSIN_W = 0x376,
+#endif
+#if PACKETVER >= 20041018
+/*20041018 to latest
+(%s)님을 아이로 입양신청
+Send an adoption request to %s
+*/
+ MSG_REQ_JOIN_BABY = 0x377,
+/*20041018 to 20041025
+아이가 되시면 전승을 하실수 없게 됩니다. 그래도 괜찮습니까?
+20041101 to latest
+아이가 되면 전승을 할수없고 스텟은 80이상 올릴수없게되며 HP와 SP가 줄어듭니다. 그래도 괜찮습니까?
+When you become a child, you will be unable to become a Transcendent Class character, all stats will be limited to a maximum of 80, and Max HP/SP will be reduced. Are you sure that you want to be adopted?
+*/
+ MSG_SUGGEST_BABY2 = 0x378,
+#endif
+#if PACKETVER >= 20041101
+/*20041101 to latest
+모든 나쁜 상태이상이 제거 되었습니다.
+All abnormal status effects have been removed.
+*/
+ MSG_GOSPEL1 = 0x379,
+/*20041101 to latest
+1분간 모든 상태이상에 대해 면역이 됩니다.
+You will be immune to abnormal status effects for the next minute.
+*/
+ MSG_GOSPEL2 = 0x37a,
+/*20041101 to latest
+1분간 최대 생명력이 크게 늘어납니다.
+Your Max HP will stay increased for the next minute.
+*/
+ MSG_GOSPEL3 = 0x37b,
+/*20041101 to latest
+1분간 최대 마법력이 크게 늘어납니다.
+Your Max SP will stay increased for the next minute.
+*/
+ MSG_GOSPEL4 = 0x37c,
+/*20041101 to latest
+1분간 모든 능력이 크게 상승합니다.
+All of your Stats will stay increased for the next minute.
+*/
+ MSG_GOSPEL5 = 0x37d,
+/*20041101 to latest
+1분간 사용하는 무기에 성스러운 속성이 부여됩니다.
+Your weapon will remain blessed with Holy power for the next minute.
+*/
+ MSG_GOSPEL6 = 0x37e,
+/*20041101 to latest
+1분간 사용하는 갑옷에 성스러운 속성이 부여됩니다.
+Your armor will remain blessed with Holy power for the next minute.
+*/
+ MSG_GOSPEL7 = 0x37f,
+/*20041101 to latest
+10초간 방어력이 크게 상승합니다.
+Your Defense will stay increased for the next 10 seconds.
+*/
+ MSG_GOSPEL8 = 0x380,
+/*20041101 to latest
+1분간 공격력이 크게 증가합니다.
+Your Attack strength will be increased for the next minute.
+*/
+ MSG_GOSPEL9 = 0x381,
+/*20041101 to latest
+1분간 명중률과 회피율이 크게 상승합니다.
+Your Accuracy and Flee Rate will be increased for the next minute.
+*/
+ MSG_GOSPEL10 = 0x382,
+#endif
+#if PACKETVER >= 20041108
+/*20041108 to latest
+아이를 한번 입양했던 부부는 추가 입양이 불가능합니다.
+You cannot adopt more than 1 child.
+*/
+ MSG_BABY1 = 0x383,
+/*20041108 to latest
+부부가 둘다 레벨70이 넘어야 아이를 입양할수있습니다.
+You must be at least character level 70 in order to adopt someone.
+*/
+ MSG_BABY2 = 0x384,
+/*20041108 to 20041108
+블랙스미스 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+20041115 to latest
+[POINT] 블랙스미스 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[Point] You have been rewarded with %d Blacksmith rank points. Your point total is %d.
+*/
+ MSG_BLACKSMITH_POINT = 0x385,
+/*20041108 to 20041108
+알케미스트 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+20041115 to latest
+[POINT] 알케미스트 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[Point] You have been rewarded with %d Alchemist rank points. Your point total is %d.
+*/
+ MSG_ALCHEMIST_POINT = 0x386,
+#endif
+#if PACKETVER >= 20041115
+/*20041115 to 20041130
+천사님 제 목소리 들리세요? ^^;
+Dear angel, can you hear my voice?
+20041206 to latest
+X
+Help me out~ Please~ T_T
+*/
+ MSG_SUPERNOVICE11 = 0x387,
+/*20041115 to 20041130
+슈퍼노비스
+Super Novice
+20041206 to latest
+X
+Help me out~ Please~ T_T
+*/
+ MSG_SUPERNOVICE12 = 0x388,
+/*20041115 to 20041130
+예요~
+Super Novice~
+20041206 to latest
+X
+Help me out~ Please~ T_T
+*/
+ MSG_SUPERNOVICE13 = 0x389,
+/*20041115 to 20041130
+저 좀 도와주세요~ ㅠ_ㅠ
+Help me out~ Please~ T_T
+20041206 to latest
+X
+Help me out~ Please~ T_T
+*/
+ MSG_SUPERNOVICE14 = 0x38a,
+/*20041115 to latest
+/notalkmsg2 : 채팅내용을 채팅창에 표시하지 않습니다 (길드말 포함) On Off
+/notalkmsg2: Hides chat messages(including guild chat). On Off
+*/
+ MSG_EXPLAIN_NOTALKMSG2 = 0x38b,
+/*20041115 to latest
+채팅내용을 채팅창에 표시합니다 [/nm2 ON]
+Show chat messages. [/nm2 ON]
+*/
+ MSG_NOTALKMSG2_ON = 0x38c,
+/*20041115 to latest
+채팅내용을 채팅창에 표시하지않습니다 (길드말 포함) [/nm2 OFF]
+Hide chat messages(including guild chat) [/nm2 OFF]
+*/
+ MSG_NOTALKMSG2_OFF = 0x38d,
+#endif
+#if PACKETVER >= 20041129
+/*20041129 to latest
+제련가능한 아이템
+Upgradable Weapons
+*/
+ MSG_REFINEITEMLIST = 0x38e,
+/*20041129 to latest
+제련한 무기 : %s
+Weapons upgraded: %s
+*/
+ MSG_ITEM_REFINE_SUCCEESS = 0x38f,
+/*20041129 to latest
+제련한 무기 : %s
+Weapons upgraded: %s
+*/
+ MSG_ITEM_REFINE_FAIL = 0x390,
+/*20041129 to latest
+무기제련스킬의 레벨이 부족해서 %s 제련을 할수없습니다.
+You cannot upgrade %s until you level up your Upgrade Weapon skill.
+*/
+ MSG_ITEM_REFINE_FAIL_LEVEL = 0x391,
+/*20041129 to latest
+제련에 필요한 아이템 (%s) 이 없으므로 제련할수없습니다.
+You lack a necessary item %s to upgrade this weapon.
+*/
+ MSG_ITEM_REFINE_FAIL_MATERIAL = 0x392,
+#endif
+#if PACKETVER >= 20041206
+/*20041206 to latest
+완벽하게 코팅되어있어서 풀스트립이 통하지 않습니다.
+Full Divestment cannot pierce the target. The target is fully shielded.
+*/
+ MSG_FULLSTRIP = 0x393,
+#endif
+#if PACKETVER >= 20041213
+/*20041213 to latest
+결혼한 캐릭터는 입양시킬수 없습니다.
+You cannot adopt a married person.
+*/
+ MSG_BABY3 = 0x394,
+#endif
+#if PACKETVER >= 20041220
+/*20041220 to latest
+친구로 등록된 이름과 비슷하지만 등록된 이름이 아닙니다. 아는사람인지 확인하십시요.
+This name is not registered in your Friend List. Please check the name again.
+*/
+ MSG_ID_WARNING = 0x395,
+/*20041220 to latest
+/hi 또는 /hi 문장 : 친구로 등록된 캐릭터들에게 인사를 합니다.
+/hi or /hi message: Send greetings to people who are online and registered on your Friend List.
+*/
+ MSG_EXPLAIN_HI = 0x396,
+#endif
+#if PACKETVER >= 20041227
+/*20041227 to latest
+길드원의 이름과 비슷하지만 길드원이 아닙니다. 길드원인지 확인하십시요.
+This character is not your guildsman. Please check the name again.
+*/
+ MSG_ID_WARNING_GUILD = 0x397,
+#endif
+#if PACKETVER >= 20050117
+/*20050117 to latest
+9999만제니 이상 입력하셔도 가격은 9999만제니로 판매됩니다.
+Please be aware that the maximum selling price is fixed as 2 Billion. You cannot sell an item higher than that.
+*/
+ MSG_OVERPRICE9999 = 0x398,
+#endif
+#if PACKETVER >= 20050131
+/*20050131 to latest
+친구의 귓속말은 [ Friend ] , 길드원은 [ Member ] 로 표시됩니다.
+Whispers from friends are displayed as [ Friend ], and ones from guildsmen are displayed as [ Member ].
+*/
+ MSG_EXPLAIN_SACHING1 = 0x399,
+/*20050131 to latest
+( From 캐릭터이름 : ) 이라고 표시 되는 귓속말은 친구나 길드원이 아닙니다.
+( From character name: ) is from an anonymous character who is neither your friend nor guildsman.
+*/
+ MSG_EXPLAIN_SACHING2 = 0x39a,
+#endif
+#if PACKETVER >= 20050214
+/*20050214 to 20050310
+블랙스미스의 상위 10위권 랭킹을 보여줍니다.
+20050314 to latest
+/blacksmith : 블랙스미스의 상위 10위권 랭킹을 보여줍니다.
+/blacksmith: Shows top 10 Blacksmiths in the server.
+*/
+ MSG_EXPLAIN_BLACKSMITH = 0x39b,
+/*20050214 to 20050310
+알케미스트의 상위 10위권 랭킹을 보여줍니다.
+20050314 to latest
+/alchemist : 알케미스트의 상위 10위권 랭킹을 보여줍니다.
+/alchemist: Shows top 10 Alchemists in the server.
+*/
+ MSG_EXPLAIN_ALCHEMIST = 0x39c,
+/*20050214 to latest
+ALT+Y : 여러가지 명령어를 쉽게 쓸수있는 윈도우가 열립니다.
+ALT+Y: Opens a window which allows you to use various commands with ease.
+*/
+ MSG_EXPLAIN_ALTY = 0x39d,
+#endif
+#if PACKETVER >= 20050328
+/*20050328 to latest
+[POINT] 태권미션 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[POINT] You have been rewarded with %d Tae-Kwon Mission rank points. Your point total is %d.
+*/
+ MSG_TAEKWON_POINT = 0x39e,
+#endif
+#if PACKETVER >= 20050404
+/*20050404 to latest
+[태권미션] Target Monster : %s (%d%%)
+[Taekwon Mission] Target Monster: %s (%d%%)
+*/
+ MSG_TAEKWON_MISSION = 0x39f,
+#endif
+#if PACKETVER >= 20050502
+/*20050502 to latest
+게임가드 초기화 에러 : %lu
+Error - Failed to initialize GameGuard: %lu
+*/
+ MSG_INIT_ERROR = 0x3a0,
+/*20050502 to latest
+스피드핵이 감지되었습니다.
+Speed Hack has been detected.
+*/
+ MSG_SPEEDHACK_DETECT = 0x3a1,
+/*20050502 to latest
+불법 프로그램 (%s) 가 발견되었습니다
+The illegal program, (%s) has been detected.
+*/
+ MSG_GAMEHACK_DETECT = 0x3a2,
+/*20050502 to latest
+게임이나 게임가드가 변조되었습니다.
+The Game or Gameguard has been cracked.
+*/
+ MSG_GAMEHACK_DOUBT = 0x3a3,
+/*20050502 to latest
+게임가드가 실행 중 입니다. 잠시 후에 다시 실행해보시기 바랍니다.
+GameGuard is currently running. Please wait for sometime and restart the game.
+*/
+ MSG_ERROR_EXIST = 0x3a4,
+/*20050502 to latest
+게임이 중복 실행되었거나 게임가드가 이미 실행 중 입니다. 게임 종료 후 다시 실행해보시기 바랍니다.
+The Game or GameGuard is already running. Please close the game and restart the game.
+*/
+ MSG_GAME_EXIST = 0x3a5,
+/*20050502 to latest
+게임가드 초기화 에러입니다. 재부팅 후 다시 실행해보거나 충돌할 수 있는 다른 프로그램들을 종료한 후 실행해 보시기 바랍니다.
+Failed to intialize GameGuard. Please try again after rebooting the system or closing other programs.
+*/
+ MSG_ERROR_INIT = 0x3a6,
+/*20050502 to latest
+바이러스 및 해킹툴 검사 모듈 로딩에 실패 했습니다. 메모리 부족이거나 바이러스에 의한 감염일 수 있습니다.
+Failed to load the scan module of virus and hacking tool. It's caused by lack of memory or PC virus infection.
+*/
+ MSG_ERROR_NPSCAN = 0x3a7,
+#endif
+#if PACKETVER >= 20050509
+/*20050509 to latest
+호문클루스 정보
+Homunculus Info
+*/
+ MSG_HOMUN_INFO = 0x3a8,
+#endif
+#if PACKETVER >= 20050523
+/*20050523 to latest
+호문클루스 스킬목록
+Homunculus Skill List
+*/
+ MSG_HOMUN_SKILLLIST = 0x3a9,
+/*20050523 to latest
+호문클루스의 이름은 영문 23, 한글 11자 이내로 정해 주세요.
+Please give your Homunculus a name no longer than 23 letters.
+*/
+ MSG_HOMUN_NAME_IN23 = 0x3aa,
+/*20050523 to latest
+이름은 단 한번만 바꿀수 있습니다. 호문클루스의 이름을 ^0000ff^0000ff %s^000000^000000 로 수정합니다. 계속 하시겠습니까?
+You can name a Homunculus only once. You have entered the name, ^0000ff%s^000000. Would you like to continue?
+*/
+ MSG_HOMUN_NAME_CHANGE_ONLYONCE = 0x3ab,
+/*20050523 to latest
+지금은 부재중~
+(Away)
+*/
+ MSG_AUTO_MSG = 0x3ac,
+/*20050523 to latest
+[자동응답]
+[Automated Message]
+*/
+ MSG_AUTO_MSG2 = 0x3ad,
+/*20050523 to latest
+부재시 타인의 귓말에 자동응답합니다.
+Send an automated message while you are away.
+*/
+ MSG_AUTO_MSG_ON = 0x3ae,
+/*20050523 to latest
+부재시 타인의 귓말에 자동응답하지 않습니다.
+Cancel automated away message.
+*/
+ MSG_AUTO_MSG_OFF = 0x3af,
+/*20050523 to latest
+자동 응답 메시지를 입력하세요.
+Please enter Away Message.
+*/
+ MSG_ENTER_AUTO_MSG = 0x3b0,
+#endif
+#if PACKETVER >= 20050530
+/*20050530 to latest
+/번쩍
+/fsh
+*/
+ MSG_EMOTION_SPARK = 0x3b1,
+/*20050530 to latest
+/빙빙
+/spin
+*/
+ MSG_EMOTION_CONFUSE = 0x3b2,
+/*20050530 to latest
+/하아
+/sigh
+*/
+ MSG_EMOTION_OHNO = 0x3b3,
+/*20050530 to latest
+/덤덤
+/dum
+*/
+ MSG_EMOTION_HUM = 0x3b4,
+/*20050530 to latest
+/시끌
+/crwd
+*/
+ MSG_EMOTION_BLABLA = 0x3b5,
+/*20050530 to latest
+/좌절
+/desp
+*/
+ MSG_EMOTION_OTL = 0x3b6,
+/*20050530 to latest
+/주사위
+/dice
+*/
+ MSG_EMOTION_DICE = 0x3b7,
+/*20050530 to latest
+/pk : 학살자의 상위 10위권 랭킹을 보여줍니다.
+/pk: Shows top 10 Slayers in the server.
+*/
+ MSG_EXPLAIN_KILLER_RANK = 0x3b8,
+/*20050530 to latest
+[POINT] 학살자 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[POINT] You have been rewarded with %d Slayer rank points. Your point total is %d.
+*/
+ MSG_KILLER_POINT = 0x3b9,
+#endif
+#if PACKETVER >= 20050608
+/*20050608 to latest
+진화 가능
+Evolution Available
+*/
+ MSG_HOMUN_EVOLVE = 0x3ba,
+/*20050608 to latest
+^ff0000^ff0000호문클루스를 삭제합니다.^000000^000000 삭제하실 경우 지금까지 키운 내역이 모두 삭제됩니다. 계속하시겠습니까?
+You have decided to delete this Homunculus ^ff0000^ff0000. When deleted, the homunculus and its history will be deleted and they cannot be restored in the future. Would you like to continue?
+*/
+ MSG_DELETE_HOMUN = 0x3bb,
+#endif
+#if PACKETVER >= 20050613
+/*20050613 to latest
+호문의 상태를 파일에 저장합니다.
+Save Homunculus status as a file.
+*/
+ MSG_TRACE_AI_ON = 0x3bc,
+/*20050613 to latest
+호문의 상태를 파일에 저장하지 않습니다.
+Do not save Homunculus status as a file.
+*/
+ MSG_TRACE_AI_OFF = 0x3bd,
+/*20050613 to latest
+Crusader
+*/
+ MSG_CRUSADER = 0x3be,
+/*20050613 to latest
+Monk
+*/
+ MSG_MONK = 0x3bf,
+/*20050613 to latest
+Sage
+*/
+ MSG_SAGE = 0x3c0,
+/*20050613 to latest
+Rouge
+Rogue
+*/
+ MSG_ROGUE = 0x3c1,
+/*20050613 to latest
+Alchemist
+*/
+ MSG_ALCHEMIST = 0x3c2,
+/*20050613 to latest
+Bard
+*/
+ MSG_BARD = 0x3c3,
+/*20050613 to latest
+Crusader_W
+Crusader
+*/
+ MSG_CRUSADER_W = 0x3c4,
+/*20050613 to latest
+Monk_W
+Monk
+*/
+ MSG_MONK_W = 0x3c5,
+/*20050613 to latest
+Sage_W
+Sage
+*/
+ MSG_SAGE_W = 0x3c6,
+/*20050613 to latest
+Rouge_W
+Rogue
+*/
+ MSG_ROGUE_W = 0x3c7,
+/*20050613 to latest
+Alchemist_W
+Alchemist
+*/
+ MSG_ALCHEMIST_W = 0x3c8,
+/*20050613 to latest
+Dancer
+*/
+ MSG_DANCER = 0x3c9,
+/*20050613 to latest
+Novice High
+High Novice
+*/
+ MSG_NOVICE_H = 0x3ca,
+/*20050613 to latest
+Swordman High
+High Swordman
+*/
+ MSG_SWORDMAN_H = 0x3cb,
+/*20050613 to latest
+Magician High
+High Mage
+*/
+ MSG_MAGICIAN_H = 0x3cc,
+/*20050613 to latest
+Archer High
+High Archer
+*/
+ MSG_ARCHER_H = 0x3cd,
+/*20050613 to latest
+Acolyte High
+High Acolyte
+*/
+ MSG_ACOLYTE_H = 0x3ce,
+/*20050613 to latest
+Merchant High
+High Merchant
+*/
+ MSG_MERCHANT_H = 0x3cf,
+/*20050613 to latest
+Thief High
+High Thief
+*/
+ MSG_THIEF_H = 0x3d0,
+/*20050613 to latest
+Novice High_W
+High Novice
+*/
+ MSG_NOVICE_H_W = 0x3d1,
+/*20050613 to latest
+Swordman High_W
+High Swordman
+*/
+ MSG_SWORDMAN_H_W = 0x3d2,
+/*20050613 to latest
+Magician High_W
+High Mage
+*/
+ MSG_MAGICIAN_H_W = 0x3d3,
+/*20050613 to latest
+Archer High_W
+High Archer
+*/
+ MSG_ARCHER_H_W = 0x3d4,
+/*20050613 to latest
+Acolyte High_W
+High Acolyte
+*/
+ MSG_ACOLYTE_H_W = 0x3d5,
+/*20050613 to latest
+Merchant High_W
+High Merchant
+*/
+ MSG_MERCHANT_H_W = 0x3d6,
+/*20050613 to latest
+Thief High_W
+High Thief
+*/
+ MSG_THIEF_H_W = 0x3d7,
+/*20050613 to latest
+Lord Knight
+*/
+ MSG_KNIGHT_H = 0x3d8,
+/*20050613 to latest
+High Priest
+*/
+ MSG_PRIEST_H = 0x3d9,
+/*20050613 to latest
+High Wizard
+*/
+ MSG_WIZARD_H = 0x3da,
+/*20050613 to latest
+White Smith
+WhiteSmith
+*/
+ MSG_BLACKSMITH_H = 0x3db,
+/*20050613 to latest
+Sniper
+*/
+ MSG_HUNTER_H = 0x3dc,
+/*20050613 to latest
+Saaassin Cross
+Assassin Cross
+*/
+ MSG_ASSASSIN_H = 0x3dd,
+/*20050613 to latest
+Lord Knight_W
+Lord Knight
+*/
+ MSG_KNIGHT_H_W = 0x3de,
+/*20050613 to latest
+High Priest_W
+High Priest
+*/
+ MSG_PRIEST_H_W = 0x3df,
+/*20050613 to latest
+High Wizard_W
+High Wizard
+*/
+ MSG_WIZARD_H_W = 0x3e0,
+/*20050613 to latest
+White Smith_W
+WhiteSmith
+*/
+ MSG_BLACKSMITH_H_W = 0x3e1,
+/*20050613 to latest
+Sniper_W
+Sniper
+*/
+ MSG_HUNTER_H_W = 0x3e2,
+/*20050613 to latest
+Saaassin Cross_W
+Assassin Cross
+*/
+ MSG_ASSASSIN_H_W = 0x3e3,
+/*20050613 to latest
+Paladin
+*/
+ MSG_CRUSADER_H = 0x3e4,
+/*20050613 to latest
+Champion
+*/
+ MSG_MONK_H = 0x3e5,
+/*20050613 to latest
+Professor
+Scholar
+*/
+ MSG_SAGE_H = 0x3e6,
+/*20050613 to latest
+Stalker
+*/
+ MSG_ROGUE_H = 0x3e7,
+/*20050613 to latest
+Creator
+Biochemist
+*/
+ MSG_ALCHEMIST_H = 0x3e8,
+/*20050613 to latest
+Clown
+Minstrel
+*/
+ MSG_BARD_H = 0x3e9,
+/*20050613 to latest
+Paladin_W
+Paladin
+*/
+ MSG_CRUSADER_H_W = 0x3ea,
+/*20050613 to latest
+Champion_W
+Champion
+*/
+ MSG_MONK_H_W = 0x3eb,
+/*20050613 to latest
+Professor_W
+Professor
+*/
+ MSG_SAGE_H_W = 0x3ec,
+/*20050613 to latest
+Stalker_W
+Stalker
+*/
+ MSG_ROGUE_H_W = 0x3ed,
+/*20050613 to latest
+Creator_W
+Creator
+*/
+ MSG_ALCHEMIST_H_W = 0x3ee,
+/*20050613 to latest
+Gypsy
+*/
+ MSG_DANCER_H = 0x3ef,
+/*20050613 to latest
+비밀번호가 지정되어 있지 않습니다. 새로운 비밀번호를 지정하시겠습니까?
+You have not set a password yet. Would you like to create one now?
+*/
+ MSG_STORE_PASSWORD_REQ = 0x3f0,
+/*20050613 to latest
+비밀번호를 3회 틀려셨습니다. 나중에 다시 시도해 주세요.
+You have incorrectly entered the password 3 times. Please try again later.
+*/
+ MSG_STORE_PASSWORD_PENALTY = 0x3f1,
+/*20050613 to latest
+비밀번호 변경이 실패하였습니다.
+Password creation has failed.
+*/
+ MSG_STORE_PASSWORD_CHANGE_NG = 0x3f2,
+/*20050613 to latest
+비밀번호는 4자리 이상 8자리이하여야만 합니다.
+Password must be 4~8 letters long.
+*/
+ MSG_STORE_PASSWORD_4_8 = 0x3f3,
+/*20050613 to latest
+비밀번호
+Password
+*/
+ MSG_STORE_PASSWORD = 0x3f4,
+/*20050613 to latest
+신규 비밀번호
+New Password
+*/
+ MSG_STORE_NEW_PASSWORD = 0x3f5,
+/*20050613 to latest
+확인 비밀번호
+Confirm Password
+*/
+ MSG_STORE_RENEW_PASSWORD = 0x3f6,
+/*20050613 to latest
+비밀번호 변경이 완료되었습니다.
+Password has been changed.
+*/
+ MSG_STORE_PASSWORD_CHANGE_OK = 0x3f7,
+/*20050613 to latest
+비밀번호가 서로 다릅니다.
+Password does not match.
+*/
+ MSG_STORE_PASSWORD_MISMATCH = 0x3f8,
+/*20050613 to latest
+비밀번호 입력
+Enter Password
+*/
+ MSG_STORE_PASSWORD_INPUT = 0x3f9,
+#endif
+#if PACKETVER >= 20050624
+/*20050624 to 20050624
+호문이 아사 직전입니다!!! 밥좀 주셈~!!
+20050628 to latest
+호문이 아사 직전입니다! 먹이를 주지 않으면 가출하게됩니다.
+Your Homunculus is starving. Please feed it, otherwise it will leave you.
+*/
+ MSG_HOMUN_HUNGRY = 0x3fa,
+/*20050624 to latest
+경험치
+EXP
+*/
+ MSG_HOMUN_EXP = 0x3fb,
+#endif
+#if PACKETVER >= 20050628
+/*20050628 to latest
+[EVENT] 이벤트에 당첨되셨습니다. 게임내에서 아이템을 지급받으십시요.
+*/
+ MSG_EVENT_RESULT = 0x3fc,
+#endif
+#if PACKETVER >= 20050704
+/*20050704 to latest
+싫어함
+Hate
+*/
+ MSG_HATE = 0x3fd,
+/*20050704 to 20050704
+매우 싫어함
+20050711 to latest
+매우싫어함
+Hate with a Passion
+*/
+ MSG_VERYHATE = 0x3fe,
+#endif
+#if PACKETVER >= 20050718
+/*20050718 to latest
+호문클루스가 사용자 인공지능으로 동작합니다.
+Homunculus has been customized.
+*/
+ MSG_HOMUN_USERAI_ON = 0x3ff,
+/*20050718 to latest
+호문클루스가 기본 인공지능으로 동작합니다.
+Homunculus has been activated with the basic AI.
+*/
+ MSG_HOMUN_USERAI_OFF = 0x400,
+#endif
+#if PACKETVER >= 20050808
+/*20050808 to latest
+편지목록
+Mail List
+*/
+ MSG_MAIL_LIST = 0x401,
+/*20050808 to latest
+편지쓰기
+Write Mail
+*/
+ MSG_MAIL_WRITE = 0x402,
+/*20050808 to latest
+편지읽기
+Read Mail
+*/
+ MSG_MAIL_READ = 0x403,
+#endif
+#if PACKETVER >= 20050822
+/*20050822 to latest
+한번 지정하시면 변경이 불가능합니다! 이 맵으로 지정하시겠습니까?
+You cannot change a map's designation once it is designated. Are you sure that you want to designate this map?
+*/
+ MSG_STARPLACE_ACCEPT = 0x404,
+/*20050822 to 20050822
+보내실 아이템이 추가 되었습니다.
+20050829 to 20051017
+아이템창에 아이템이 추가 되었습니다.
+20051024 to latest
+메일 아이템을 수령했습니다.
+Item has been added in the Item Window.
+*/
+ MSG_MAIL_ADD_ITEM_SUCCESS = 0x405,
+/*20050822 to 20050822
+보내실 아이템이 추가 되지 않았습니다.
+20050829 to 20051017
+아이템창에 아이템이 추가 되지 않았습니다.
+20051024 to latest
+메일 아이템을 수령하지 못했습니다.
+You have failed to add the item in the Item Window.
+*/
+ MSG_MAIL_ADD_ITEM_FAILURE = 0x406,
+/*20050822 to latest
+메일 보내기가 성공하였습니다.
+You have successfully mailed a message.
+*/
+ MSG_MAIL_SEND_SUCCESS = 0x407,
+/*20050822 to latest
+메일 보내기가 실패하였습니다. 받는 사람이 존재하지 않습니다.
+You have failed to mail a message. Recipient does not exist.
+*/
+ MSG_MAIL_USER_NOT_FOUND = 0x408,
+#endif
+#if PACKETVER >= 20050829
+/*20050829 to latest
+[태양과 달과 별의 천사] 지정했던 장소들과 몬스터들이 초기화됐습니다!
+[Solar, Lunar and Stellar Angel] Designated places and monsters have been reset.
+*/
+ MSG_STAR_ANGEL = 0x409,
+/*20050829 to latest
+경매 등록이 실패했습니다.
+The minimum starting bid for auctions is 10,000,000 zeny.
+*/
+ MSG_AUCTION_ADD_FALSE = 0x40a,
+/*20050829 to latest
+경매 등록이 성공했습니다.
+You have successfully started a new auction.
+*/
+ MSG_AUCTION_ADD_TRUE = 0x40b,
+/*20050829 to latest
+해당 경매가 취소되었습니다.
+The auction has been canceled.
+*/
+ MSG_AUCTION_ADD_CANCEL = 0x40c,
+/*20050829 to latest
+입찰자가 있는 경매는 취소할 수 없습니다.
+An auction with at least one bidder cannot be canceled.
+*/
+ MSG_AUCTION_ADD_CANCEL_FALSE = 0x40d,
+#endif
+#if PACKETVER >= 20050905
+/*20050905 to latest
+메일 삭제가 성공하였습니다.
+Mail has been successfully deleted.
+*/
+ MSG_MAIL_DELETE_SUCCESS = 0x40e,
+/*20050905 to latest
+메일 삭제가 실패하였습니다.
+You have failed to delete the mail.
+*/
+ MSG_MAIL_DELETE_FAILURE = 0x40f,
+#endif
+#if PACKETVER >= 20050912
+/*20050912 to latest
+던지는 단검이 장착되었습니다.
+You have equipped throwing daggers.
+*/
+ MSG_MSG_KNIFE_EQUIPMENT_SUCCESS = 0x410,
+#endif
+#if PACKETVER >= 20050926
+/*20050926 to latest
+%s 님이 로그인했습니다.
+%s has logged in.
+*/
+ MSG_LOGIN_FRIEND = 0x411,
+/*20050926 to latest
+%s 님이 로그아웃했습니다.
+%s has logged out.
+*/
+ MSG_LOGOUT_FRIEND = 0x412,
+#endif
+#if PACKETVER >= 20051004
+/*20051004 to latest
+/loginout : 길드원과 친구들의 접속관련 메세지를 보여줍니다. On Off
+/loginout: Shows guildsmen and friends online status. On Off
+*/
+ MSG_EXPLAIN_LOGINOUT = 0x413,
+/*20051004 to latest
+친구들의 접속관련 메세지를 대화창에 표시합니다. [/li ON]
+Display online status of friends in Chat Window. [/li ON]
+*/
+ MSG_LOGINOUT_ON = 0x414,
+/*20051004 to latest
+친구들의 접속관련 메세지를 대화창에 표시하지않습니다. [/li OFF]
+Do not display online status of friends in Chat Window. [/li OFF]
+*/
+ MSG_LOGINOUT_OFF = 0x415,
+/*20051004 to latest
+이미 실행중입니다.
+It is already running.
+*/
+ MSG_SGP_CODE_ALREADY_RUNNING = 0x416,
+/*20051004 to latest
+매크로 사용이 감지되었습니다.
+Use of Macro program has been detected.
+*/
+ MSG_SGP_CODE_DETECTED_MACRO = 0x417,
+/*20051004 to latest
+스피드해킹이 감지되었습니다.
+Use of Speed hack has been detected.
+*/
+ MSG_SGP_CODE_DETECTED_SPEEDHACK = 0x418,
+/*20051004 to latest
+API 후킹이 감지되었습니다.
+API Hooking has been detected.
+*/
+ MSG_SGP_CODE_DETECTED_APIHOOK = 0x419,
+/*20051004 to latest
+메시지 후킹이 감지되었습니다.
+Message Hooking has been detected.
+*/
+ MSG_SGP_CODE_DETECTED_MSGHOOK = 0x41a,
+/*20051004 to latest
+모듈이 변조 또는 손상되었거나 버전이 일치하지 않습니다.
+Module has been modified or damaged or its version does not match.
+*/
+ MSG_SGP_CODE_NOT_EQUALENCRYPTEDDATA = 0x41b,
+#endif
+#if PACKETVER >= 20051010
+/*20051010 to latest
+(태국)귀하는 게임방 과금으로 로그인 하셨습니다.
+(Thailand) You have logged in game with PC cafe payment.
+*/
+ MSG_BILLING_PCB = 0x41c,
+#endif
+#if PACKETVER >= 20051017
+/*20051017 to latest
+이전
+Prev
+*/
+ MSG_PREV_PAGE = 0x41d,
+/*20051017 to latest
+다음
+Next
+*/
+ MSG_NEXT_PAGE = 0x41e,
+/*20051017 to latest
+경매
+Auction
+*/
+ MSG_AUCTION = 0x41f,
+/*20051017 to latest
+물품보기
+Product List
+*/
+ MSG_AUCTION_VIEW = 0x420,
+/*20051017 to latest
+등록하기
+Register
+*/
+ MSG_AUCTION_ADD = 0x421,
+/*20051017 to latest
+판매 진행상태
+Sale Status
+*/
+ MSG_AUCTION_SELL = 0x422,
+/*20051017 to latest
+구매 진행상태
+Purchase Status
+*/
+ MSG_AUCTION_BUY = 0x423,
+/*20051017 to latest
+아이템
+Item
+*/
+ MSG_ITEM2 = 0x424,
+/*20051017 to latest
+아이템명
+Name
+*/
+ MSG_ITEM_NAME2 = 0x425,
+/*20051017 to latest
+가격 / 즉시구입가격
+Current Bid / Max Bid
+*/
+ MSG_ITEM_PRICE = 0x426,
+/*20051017 to latest
+판매자
+Seller
+*/
+ MSG_SELLER = 0x427,
+/*20051017 to latest
+구매자
+Buyer
+*/
+ MSG_BUYER = 0x428,
+/*20051017 to latest
+종료시간
+End Time
+*/
+ MSG_FINISH_TIME = 0x429,
+/*20051017 to latest
+%m월 %d일 %H시
+%m %d %H
+*/
+ MSG_TIME_TYPE = 0x42a,
+/*20051017 to latest
+시간설정
+Time (Hr)
+*/
+ MSG_SET_TIME = 0x42b,
+/*20051017 to latest
+수수료
+Fee
+*/
+ MSG_CHARGE = 0x42c,
+/*20051017 to latest
+검색 된 아이템이 없습니다.
+*/
+ MSG_NOTHING_SEARCH_ITEM = 0x42d,
+/*20051017 to latest
+현재 판매중인 아이템이 없습니다.
+Your Sale List is empty.
+*/
+ MSG_NOTHING_SEARCH_SELL_ITEM = 0x42e,
+/*20051017 to latest
+현재 구매중인 아이템이 없습니다.
+Your Purchase List is empty.
+*/
+ MSG_NOTHING_SEARCH_BUY_ITEM = 0x42f,
+/*20051017 to latest
+경매정보가 정확하지 않습니다.
+Auction Information is incorrect or incomplete.
+*/
+ MSG_ERROR_AUCTION_ITEM_INFO = 0x430,
+/*20051017 to latest
+경매에 등록할 아이템 정보가 없습니다.
+You must drag and drop an item from your Inventory into the Register Window to begin a new auction.
+*/
+ MSG_NOTHING_AUCTION_ITEM_INFO = 0x431,
+/*20051017 to latest
+이미 등록된 경매입니다.
+The auction has already been registered.
+*/
+ MSG_ERROR_ADD_AUCTION = 0x432,
+/*20051017 to latest
+제시가격
+Starting Bid
+*/
+ MSG_PRICE = 0x433,
+/*20051017 to latest
+구입희망가격
+Current Bid
+*/
+ MSG_PRICE2 = 0x434,
+/*20051017 to latest
+즉시구입가격
+Buy Now Price
+*/
+ MSG_PRICE3 = 0x435,
+/*20051017 to latest
+현재소지제니
+Your Current Zeny
+*/
+ MSG_PRICE4 = 0x436,
+/*20051017 to latest
+현재최고가격
+Highest Bid
+*/
+ MSG_PRICE5 = 0x437,
+/*20051017 to latest
+이전입찰가격
+Previous Bid
+*/
+ MSG_PRICE6 = 0x438,
+/*20051017 to latest
+추가입찰가격
+Next Bid
+*/
+ MSG_PRICE7 = 0x439,
+/*20051017 to latest
+구입하시겠습니까?
+Press buy to confirm.
+*/
+ MSG_BUY_ACTION_ITEM = 0x43a,
+/*20051017 to latest
+이 가격에 판매하시겠습니까?
+Would you like to sell this item?
+*/
+ MSG_SELL_ACTION_ITEM = 0x43b,
+/*20051017 to latest
+입찰하기
+Place Bid
+*/
+ MSG_BUY_AUCTION = 0x43c,
+/*20051017 to latest
+즉시구매하기
+Buy Now
+*/
+ MSG_BUY_AUCTION2 = 0x43d,
+/*20051017 to latest
+경매종료하기
+End the Auction
+*/
+ MSG_BUY_AUCTION3 = 0x43e,
+/*20051017 to latest
+재입찰하기
+Place another Bid
+*/
+ MSG_FINISH_AUCTION = 0x43f,
+/*20051017 to latest
+해당 경매에 대한 입찰이 성공했습니다.
+You have placed a bid.
+*/
+ MSG_RESULT_BUY_TRUE = 0x440,
+/*20051017 to latest
+해당 경매에 대한 입찰이 실패했습니다.
+You have failed to place a bid.
+*/
+ MSG_RESULT_BUY_FALSE = 0x441,
+/*20051017 to latest
+제니가 충분하지 않습니다.
+You do not have enough zeny.
+*/
+ MSG_RESULT_BUY_FALSE_MONEY = 0x442,
+#endif
+#if PACKETVER >= 20051024
+/*20051024 to latest
+방어구
+Armors
+*/
+ MSG_EQUIP = 0x443,
+/*20051024 to latest
+카드
+Card
+*/
+ MSG_CARD = 0x444,
+/*20051024 to latest
+기타
+Other
+*/
+ MSG_ETC = 0x445,
+/*20051024 to latest
+경매번호
+Bid
+*/
+ MSG_AUCTION_NUM = 0x446,
+/*20051024 to latest
+검색
+Search
+*/
+ MSG_AUCTION_SEARCH = 0x447,
+/*20051024 to latest
+해당 경매를 종료했습니다.
+You have ended the auction.
+*/
+ MSG_RESULT_MY_SELL_STOP_TRUE = 0x448,
+/*20051024 to latest
+해당 경매를 종료 할 수 없습니다.
+You cannot end the auction.
+*/
+ MSG_RESULT_MY_SELL_STOP_FALSE = 0x449,
+/*20051024 to latest
+경매 번호가 정확하지 않습니다.
+Bid Number is incorrect.
+*/
+ MSG_RESULT_AUCTION_ID_FALSE = 0x44a,
+/*20051024 to latest
+받는이
+To
+*/
+ MSG_SENDER = 0x44b,
+#endif
+#if PACKETVER >= 20051205
+/*20051205 to latest
+제 목
+Title
+*/
+ MSG_TITLE2 = 0x44c,
+/*20051205 to latest
+새 메일이 도착하였습니다.
+You have received a message in the mail.
+*/
+ MSG_NEW_MAIL = 0x44d,
+/*20051205 to latest
+검색중입니다.
+Searching...
+*/
+ MSG_SEARCHING_ITEM = 0x44e,
+/*20051205 to latest
+더 이상 경매 등록할 수 없습니다. 경매 등록은 최대 5개까지 가능합니다.
+You cannot register more than 5 items in an auction at a time.
+*/
+ MSG_AUCTION_ADD_OVER = 0x44f,
+/*20051205 to latest
+더 이상 경매 물품에 입찰할 수 없습니다. 경매 물품 입찰은 최대 5개까지 가능합니다.
+You cannot place more than 5 bids at a time.
+*/
+ MSG_RESULT_BUY_OVER = 0x450,
+/*20051205 to latest
+삭제하려는 메일에 수령하지 않은 아이템이 있습니다.
+Please accept all items from your mail before deleting.
+*/
+ MSG_MAIL_DELETE_ERROR = 0x451,
+/*20051205 to latest
+메일 제목을 입력하여 주십시오.
+Please enter a title.
+*/
+ MSG_MAIL_SEND_ERROR = 0x452,
+/*20051205 to latest
+/shopping : 클릭 한번으로 상점을 열고 상점이름 오른쪽 클릭으로 상점을 닫습니다 On Off
+/shopping: Enables you to open a shop with a single left-click and close your shop with a single right-click. On Off
+*/
+ MSG_EXPLAIN_SHOPPING = 0x453,
+/*20051205 to latest
+클릭 한번으로 상점을 열고 상점이름을 오른쪽 클릭해서 상점을 닫을수있습니다. [/sh ON]
+You can now open a shop with a single left-click and close your shop with a single right-click. [sh ON].
+*/
+ MSG_SHOPPING_ON = 0x454,
+/*20051205 to latest
+더블클릭 으로 상점을 열게됩니다. [/sh OFF]
+You can open a shop by double-clicking. [/sh OFF]
+*/
+ MSG_SHOPPING_OFF = 0x455,
+/*20051205 to latest
+메일을 보내려면, 제니 입력을 완료해야 합니다.
+Please enter zeny amount before sending mail.
+*/
+ MSG_MAIL_SEND_ERROR2 = 0x456,
+/*20051205 to latest
+경매 수수료가 부족합니다.
+You do not have enough zeny to pay the Auction Fee.
+*/
+ MSG_ADD_MONEY_FALSE = 0x457,
+/*20051205 to latest
+상태보기
+View Status
+*/
+ MSG_HOMUN_SHOWINFO = 0x458,
+/*20051205 to latest
+먹이주기
+Feed
+*/
+ MSG_HOMUN_FEEDING = 0x459,
+/*20051205 to latest
+대기
+Stand By
+*/
+ MSG_HOMUN_WAITING = 0x45a,
+/*20051205 to latest
+슈퍼노비스(남)
+Super Novice (Male)
+*/
+ MSG_JOB_SUPERNOVICE_M = 0x45b,
+/*20051205 to latest
+슈퍼노비스(여)
+Super Novice (Female)
+*/
+ MSG_JOB_SUPERNOVICE_F = 0x45c,
+/*20051205 to latest
+태권소년
+Taekwon Boy
+*/
+ MSG_JOB_TAEKWON_M = 0x45d,
+/*20051205 to latest
+태권소녀
+Taekwon Girl
+*/
+ MSG_JOB_TAEKWON_F = 0x45e,
+/*20051205 to latest
+권성(남)
+Taekwon Master (Male)
+*/
+ MSG_KWONSUNG_M = 0x45f,
+/*20051205 to latest
+권성(여)
+Taekwon Master (Female)
+*/
+ MSG_KWONSUNG_F = 0x460,
+/*20051205 to latest
+소울링커(남)
+Soul Linker (Male)
+*/
+ MSG_SOULLINGKER_M = 0x461,
+/*20051205 to latest
+소울링커(여)
+Soul Linker (Female)
+*/
+ MSG_SOULLINGKER_F = 0x462,
+/*20051205 to latest
+PC방요금제로 2개이상의 계정이 접속되고있습니다. 확인후 다시 사용하시기 바랍니다.
+Please check the connection, more than 2 accounts are connected with Internet Cafe Time Plan.
+*/
+ MSG_BAN_PC_IP_UNFAIR = 0x463,
+/*20051205 to latest
+귀하는 월정액 요금제 사용자 입니다. (남은기간 : %d일)
+Your account is using monthly payment. (Remaining day: %d day)
+*/
+ MSG_BILLING_1 = 0x464,
+/*20051205 to latest
+귀하는 정량 요금제 사용자 입니다. (남은시간 : %d시간 %분 %초)
+Your account is using time limited. (Remaining time: %d hour %d minute %d second)
+*/
+ MSG_BILLING_2 = 0x465,
+#endif
+#if PACKETVER >= 20051212
+/*20051212 to latest
+해당 아이템은 메일에 첨부 할수 없는 아이템입니다.
+This item cannot be mailed.
+*/
+ MSG_MAIL_ITEM_ADD_FAILED = 0x466,
+/*20051212 to latest
+더이상 아이템을 가질수 없습니다. 아이템은 메일로 보관하겠습니다.
+You cannot accept any more items. Please try again later.
+*/
+ MSG_MAIL_ADD_ITEM_OVER_FAILURE = 0x467,
+#endif
+#if PACKETVER >= 20060109
+/*20060109 to latest
+남성
+Male
+*/
+ MSG_PTSEX1 = 0x468,
+/*20060109 to latest
+여성
+Female
+*/
+ MSG_PTSEX2 = 0x469,
+/*20060109 to latest
+새로운 유저입니다
+New User.
+*/
+ MSG_PT_NEWUSER = 0x46a,
+/*20060109 to latest
+E-mail은 캐릭터를 지울때 필요합니다.
+E-mail address is required to delete a character.
+*/
+ MSG_PT_ACINFO = 0x46b,
+/*20060109 to latest
+정확한 형식으로 입력해 주세요.
+Please enter the correct information.
+*/
+ MSG_PT_ACINFO2 = 0x46c,
+/*20060109 to latest
+이 키를 사용하세요
+Please use this key.
+*/
+ MSG_PT_NEWKEYINFO = 0x46d,
+/*20060109 to latest
+정확한 카드 패스워드를 다시 입력해주세요
+Please enter the correct card password.
+*/
+ MSG_PT_FAIL_CARDPASS = 0x46e,
+/*20060109 to latest
+PT정보
+PT Info
+*/
+ MSG_PTID1 = 0x46f,
+/*20060109 to latest
+PT_ID는 %s
+PT_ID is %s
+*/
+ MSG_PTID2 = 0x470,
+/*20060109 to latest
+NUM_ID는 %s
+NUM_ID is %s
+*/
+ MSG_PTID3 = 0x471,
+/*20060109 to latest
+잊지않게 주의하세요
+Please don't forget this information.
+*/
+ MSG_PTID4 = 0x472,
+/*20060109 to latest
+1001
+*/
+ MSG_PT_ERROR_1001 = 0x473,
+/*20060109 to latest
+1002
+*/
+ MSG_PT_ERROR_1002 = 0x474,
+/*20060109 to latest
+1003
+*/
+ MSG_PT_ERROR_1003 = 0x475,
+/*20060109 to latest
+1004
+*/
+ MSG_PT_ERROR_1004 = 0x476,
+/*20060109 to latest
+1006
+*/
+ MSG_PT_ERROR_1006 = 0x477,
+/*20060109 to latest
+1007
+*/
+ MSG_PT_ERROR_1007 = 0x478,
+/*20060109 to latest
+1008
+*/
+ MSG_PT_ERROR_1008 = 0x479,
+/*20060109 to latest
+1009
+*/
+ MSG_PT_ERROR_1009 = 0x47a,
+/*20060109 to latest
+1012
+*/
+ MSG_PT_ERROR_1012 = 0x47b,
+/*20060109 to latest
+1013
+*/
+ MSG_PT_ERROR_1013 = 0x47c,
+/*20060109 to latest
+1014
+*/
+ MSG_PT_ERROR_1014 = 0x47d,
+/*20060109 to latest
+1015
+*/
+ MSG_PT_ERROR_1015 = 0x47e,
+/*20060109 to latest
+1019
+*/
+ MSG_PT_ERROR_1019 = 0x47f,
+/*20060109 to latest
+1020
+Navigation
+*/
+ MSG_PT_ERROR_1020 = 0x480,
+/*20060109 to latest
+1021
+*/
+ MSG_PT_ERROR_1021 = 0x481,
+/*20060109 to latest
+1023
+*/
+ MSG_PT_ERROR_1023 = 0x482,
+/*20060109 to latest
+1024
+*/
+ MSG_PT_ERROR_1024 = 0x483,
+/*20060109 to latest
+1025
+*/
+ MSG_PT_ERROR_1025 = 0x484,
+/*20060109 to latest
+1027
+*/
+ MSG_PT_ERROR_1027 = 0x485,
+/*20060109 to latest
+1028
+*/
+ MSG_PT_ERROR_1028 = 0x486,
+/*20060109 to latest
+10
+*/
+ MSG_PT_ERROR_10 = 0x487,
+/*20060109 to latest
+20
+*/
+ MSG_PT_ERROR_20 = 0x488,
+/*20060109 to latest
+40
+*/
+ MSG_PT_ERROR_40 = 0x489,
+/*20060109 to latest
+50
+*/
+ MSG_PT_ERROR_50 = 0x48a,
+/*20060109 to latest
+60
+*/
+ MSG_PT_ERROR_60 = 0x48b,
+/*20060109 to latest
+70
+*/
+ MSG_PT_ERROR_70 = 0x48c,
+/*20060109 to latest
+80
+*/
+ MSG_PT_ERROR_80 = 0x48d,
+/*20060109 to latest
+90
+*/
+ MSG_PT_ERROR_90 = 0x48e,
+/*20060109 to latest
+100
+*/
+ MSG_PT_ERROR_100 = 0x48f,
+/*20060109 to latest
+110
+*/
+ MSG_PT_ERROR_110 = 0x490,
+#endif
+#if PACKETVER >= 20060126
+/*20060126 to latest
+30포인트를 받으시겠습니까?
+Do you want to receive 30 points?
+*/
+ MSG_PT_POINT1 = 0x491,
+/*20060126 to latest
+30포인트(5시간)이 충전되었습니다
+30 points (5 hours) have been added.
+*/
+ MSG_PT_POINT2 = 0x492,
+#endif
+#if PACKETVER >= 20060213
+/*20060213 to latest
+감정되지 않은 아이템은 경매에 등록할 수 없습니다.
+You cannot register Unidentified Items in auctions.
+*/
+ MSG_AUCTION_ADD_ITEM_FAILURE = 0x493,
+/*20060213 to latest
+소비 아이템은 경매에 등록할 수 없습니다.
+You cannot register this Consumable Item in an auction.
+*/
+ MSG_AUCTION_ADD_ITEM_FAILURE2 = 0x494,
+#endif
+#if PACKETVER >= 20060306
+/*20060306 to latest
+메일창을 열려면 카트창을 닫아 주십시요.
+Please close the Cart Window to open the Mail Window.
+*/
+ MSG_CLOSE_MERCHANTITEMWND = 0x495,
+/*20060306 to latest
+카트창을 열려면 메일창을 닫아 주십시요.
+Please close the Mail Window to open the Cart Window.
+*/
+ MSG_CLOSE_MAILWND = 0x496,
+#endif
+#if PACKETVER >= 20060313
+/*20060313 to latest
+탄환이 장착되었습니다.
+Bullets have been equipped.
+*/
+ MSG_MSG_BULLET_EQUIPMENT_SUCCESS = 0x497,
+/*20060313 to latest
+메일이 반송되었습니다.
+The mail has been returned to sender.
+*/
+ MSG_MAIL_RETURN_SUCCESS = 0x498,
+/*20060313 to latest
+메일이 존재하지 않습니다.
+The mail no longer exists.
+*/
+ MSG_MAIL_RETURN_FAILURE = 0x499,
+#endif
+#if PACKETVER >= 20060522
+/*20060522 to 20060522
+한시간 동안, 동일한 IP로 접속한 유저가 60건 이상입니다. 확인후 다시 사용하시기 바랍니다.
+20060523 to latest
+한시간 동안, 동일한 IP로 접속한 유저가 30건 이상입니다. 확인후 다시 사용하시기 바랍니다.
+More than 30 players sharing the same IP have logged into the game for an hour. Please check this matter.
+*/
+ MSG_BAN_PC_IP_COUNT_ALL = 0x49a,
+/*20060522 to latest
+한시간 동안, 동일한 IP로 10번 이상 접속되었습니다. 확인후 다시 사용하시기 바랍니다.
+More than 10 connections sharing the same IP have logged into the game for an hour. Please check this matter.
+*/
+ MSG_BAN_PC_IP_COUNT = 0x49b,
+/*20060522 to latest
+게임을 재시작 하십시오
+Please restart the game.
+*/
+ MSG_GAMEGUARD_RESTART = 0x49c,
+#endif
+#if PACKETVER >= 20060703
+/*20060703 to latest
+용병정보 - 아쳐타입
+Mercenary: Archer
+*/
+ MSG_MER_INFO_TYPE_ARCHER = 0x49d,
+/*20060703 to latest
+용병정보 - 검사타입
+Mercenary: Swordman
+*/
+ MSG_MER_INFO_TYPE_SWORDMAN = 0x49e,
+/*20060703 to latest
+용병정보 - 창병타입
+Mercenary: Spearman
+*/
+ MSG_MER_INFO_TYPE_LANCER = 0x49f,
+/*20060703 to 20070109
+남은시간
+20070115 to latest
+삭제시간
+Expiration
+*/
+ MSG_LEFT_TIME = 0x4a0,
+/*20060703 to latest
+신뢰도
+Loyalty
+*/
+ MSG_MER_FRIENDLY = 0x4a1,
+/*20060703 to latest
+소환횟수
+Summons
+*/
+ MSG_MER_CALLCOUNT = 0x4a2,
+/*20060703 to latest
+Kill
+*/
+ MSG_MER_KILL = 0x4a3,
+#endif
+#if PACKETVER >= 20060904
+/*20060904 to latest
+펫이 배가 고파서 당신을 원망하고 있다는 느낌이 든다.
+You can feel hatred from your pet for neglecting to feed it.
+*/
+ MSG_PET_STARVING = 0x4a4,
+/*20060904 to latest
+[POINT] 테이밍미션 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[POINT] You earned %d Taming Mission Ranking Points, giving you a total of %d points.
+*/
+ MSG_GANGSI_POINT = 0x4a5,
+/*20060904 to latest
+[테이밍미션] Target Monster : %s
+[Taming Mission] Target Monster: %s
+*/
+ MSG_GANGSI_MISSION = 0x4a6,
+#endif
+#if PACKETVER >= 20060918
+/*20060918 to latest
+/hunting : 사냥 목록을 보여줍니다.
+/hunting: You can check the your hunting list.
+*/
+ MSG_EXPLAIN_HUNTING = 0x4a7,
+/*20060918 to latest
+[천사의질문] 소녀에게 가르쳐주시어요. %s는 몇 스킬 찍으셨나요?
+[Angel's Question] Please tell me, how many %s skills do you have?
+*/
+ MSG_DEATH_Q01 = 0x4a8,
+/*20060918 to latest
+[천사의질문] 소녀에게 가르쳐주시어요. 소지하시고있는 제니를 십만으로 나누면 얼마가 되시나요?
+[Angel's Question] Please tell me, how much zeny you'll have if you divide it by 100,000?
+*/
+ MSG_DEATH_Q02 = 0x4a9,
+/*20060918 to latest
+[천사의질문] 소녀에게 가르쳐주시어요. 오늘이 몇일이신지 아시나요?
+[Angel's Question] Please tell me, what is today's date?
+*/
+ MSG_DEATH_Q03 = 0x4aa,
+/*20060918 to latest
+[천사의질문] 소녀에게 가르쳐주시어요. %s은 지금 몇이신가요?
+[Angel's Question] Please tell me, how many %s do you have?
+*/
+ MSG_DEATH_Q04 = 0x4ab,
+/*20060918 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 슈노, 태권계열, 무낙계열을 담당하고있는 SiYeon씨의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in SiYeon's name?
+*/
+ MSG_DEATH_Q05 = 0x4ac,
+/*20060918 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 귀엽고 어여쁜 라그나로크의 히로인 Munak의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in Munak's name?
+*/
+ MSG_DEATH_Q06 = 0x4ad,
+/*20060918 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 제가 어여뻐하는 Bongun의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in Bongun's name?
+*/
+ MSG_DEATH_Q07 = 0x4ae,
+/*20060918 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 저희가 존재하는 온라인세계 Ragnarok의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, Ragnarok?
+*/
+ MSG_DEATH_Q08 = 0x4af,
+/*20060918 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 언제나 Online상태인 천사동료들은 큰힘이 되어주죠. Online의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, online?
+*/
+ MSG_DEATH_Q09 = 0x4b0,
+/*20060918 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 죽음도 두려워하지않는 기사들을 상징하는 단어인 Death의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, death?
+*/
+ MSG_DEATH_Q10 = 0x4b1,
+/*20060918 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 기사들은 너무 멋진다고 생각해요. Knight의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, knight?
+*/
+ MSG_DEATH_Q11 = 0x4b2,
+/*20060918 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 중력을 뜻하는 단어인 Gravity의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, gravity?
+*/
+ MSG_DEATH_Q12 = 0x4b3,
+/*20060918 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 어둠속에서도 밝게 사는게 중요하지요. Dark의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, dark?
+*/
+ MSG_DEATH_Q13 = 0x4b4,
+/*20060918 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 뭐든지 수집하는 Collector의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, collecter?
+*/
+ MSG_DEATH_Q14 = 0x4b5,
+/*20060918 to latest
+[천사의대답] 소녀에게 정확한 사실을 가르쳐주셔서 감사하옵니다.
+[Angel's Answer] Thank you for letting me know~
+*/
+ MSG_DEATH_R01 = 0x4b6,
+/*20060918 to latest
+[천사의대답] 사랑스러우신 분이시군요. 소녀 감탄했사옵니다.
+[Angel's Answer] I'm very pleased with your answer. You are a splendid adventurer.
+*/
+ MSG_DEATH_R02 = 0x4b7,
+/*20060918 to latest
+[천사의대답] 소녀 실망했사옵니다.
+[Angel's Answer] You've disappointed me...
+*/
+ MSG_DEATH_R05 = 0x4b8,
+#endif
+#if PACKETVER >= 20060925
+/*20060925 to latest
+[POINT] 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[Point] You earned %d Ranking Points, giving you a total of %d Ranking Points.
+*/
+ MSG_DEATH_POINT = 0x4b9,
+#endif
+#if PACKETVER >= 20060927
+/*20060927 to 20070417
+[%s]의 소지 Point : %d Point
+20070423 to latest
+[%s]의 소지 캐시 : %d 캐시
+[%s]'s Points: %d Points
+*/
+ MSG_POINT_SHOP = 0x4ba,
+#endif
+#if PACKETVER >= 20061009
+/*20061009 to latest
+선택하지 않은 캐릭터는 삭제 됩니다. 완료하시겠습니까?
+Unselected Characters will be deleted. Continue?
+*/
+ MSG_CONFIRM_SELECT_CHARACTERS = 0x4bb,
+/*20061009 to latest
+9개 이상 선택하실 수 없습니다.
+You cannot select more than 8.
+*/
+ MSG_ERROR_SELECT_CHARACTERS = 0x4bc,
+#endif
+#if PACKETVER >= 20061016
+/*20061016 to latest
+캐릭터명을 '%s' (으)로 변경하시겠습니까?
+Do you want to change your name to '%s'?
+*/
+ MSG_CONFIRM_TO_CHANGE_NAME = 0x4bd,
+/*20061016 to latest
+캐릭터명이 성공적으로 변경되었습니다.
+Character Name has been changed successfully.
+*/
+ MSG_CHANGE_NAME_SUCCESS = 0x4be,
+/*20061016 to latest
+캐릭터명 변경이 실패하였습니다.
+You have failed to change this character's name.
+*/
+ MSG_CHANGE_NAME_FAILURE = 0x4bf,
+/*20061016 to latest
+한 번에 한 종류의 아이템만 구매할 수 있습니다.
+You can purchase only one kind of item at a time.
+*/
+ MSG_CAN_BUY_ONLY_ONEITEM = 0x4c0,
+#endif
+#if PACKETVER >= 20061023
+/*20061023 to latest
+캐릭터가 한개도 선택되지 않았습니다. 반드시 한개 이상의 캐릭터를 선택하여야 합니다.
+No characters were selected. You must select at least one character.
+*/
+ MSG_NO_SELECT_CHARACTERS = 0x4c1,
+/*20061023 to latest
+이미 캐릭터명을 변경한 적이 있습니다. 더 이상 변경 할 수 없습니다.
+This character's name has already been changed. You cannot change a character's name more than once.
+*/
+ MSG_ALREADY_CHANGED_NAME = 0x4c2,
+/*20061023 to latest
+사용자 정보가 정확하지 않습니다.
+User Information is not correct.
+*/
+ MSG_NOTREGISTED_USER = 0x4c3,
+/*20061023 to latest
+다른 사용자가 같은 캐릭터 명을 먼저 사용하였습니다. 다른 캐릭터명을 사용하여 주십시요.
+Another user is using this character name, so please select another one.
+*/
+ MSG_DUPLICATED_CHAR_NAME = 0x4c4,
+#endif
+#if PACKETVER >= 20061030
+/*20061030 to latest
+파티장 권한이 없어 파티원을 소환하지 못했습니다.
+The party member was not summoned because you are not the party leader.
+*/
+ MSG_CANNOT_PARTYCALL = 0x4c5,
+/*20061030 to latest
+현재 맵에는 소환될 파티원이 존재하지 않습니다.
+There is no party member to summon in the current map.
+*/
+ MSG_NO_PARTYMEM_ON_THISMAP = 0x4c6,
+/*20061030 to latest
+이 지역에선 보스몬스터의 흔적을 찾을 수가 없습니다.
+You cannot find any trace of a Boss Monster in this area.
+*/
+ MSG_NOTFIND_BOSSMON = 0x4c7,
+/*20061030 to 20070122
+보스 몬스터 '%s'의 등장 예정시간 %02d시:%02d분
+20070129 to 20071204
+보스 몬스터 '%s'(이)가 %d시 %d분 후에 등장합니다.
+20071211 to latest
+보스 몬스터 '%s'(이)가 %d시간 %d분 후에 등장합니다.
+Boss Monster, '%s' will appear in %02d hour(s) and %02d minute(s).
+*/
+ MSG_APPEARANCE_TIME_OF_BOSSMON = 0x4c8,
+/*20061030 to latest
+보스 몬스터 '%s'의 위치가 미니맵에 표시됩니다.
+The location of Boss Monster, '%s', will be displayed on your Mini-Map.
+*/
+ MSG_SHOW_POSITION_OF_BOSSMON = 0x4c9,
+#endif
+#if PACKETVER >= 20061106
+/*20061106 to 20061211
+%s를 개봉 하시겠습니까? 한번 개봉된 아이템은 창고 저장 외의 다른 이동은 불가하며 동일한 아이템을 중복 사용하더라도 효과가 중첩되지 않습니다.
+20061218 to 20070618
+'%s'를 개봉 하시겠습니까? 한번 개봉된 아이템은 창고 저장 외의 다른 이동은 불가하며 동일한 아이템을 중복 사용하더라도 효과가 중첩되지 않습니다.
+20070619 to 20071218
+'%s'를 개봉 하시겠습니까? 한번 개봉된 아이템은 창고 저장 외의 다른 이동은 불가하며 임대 아이템은 창고 저장도 불가합니다. 동일한 아이템을 중복 사용하더라도 효과가 중첩되지 않습니다.
+20080102 to latest
+'%s'를 개봉 하시겠습니까? 한번 개봉된 아이템은 창고 저장 외의 다른 이동은 불가하며 임대 아이템은 창고 저장도 불가합니다. 한정 아이템은 거래 및 이동이 가능 합니다. 동일한 아이템을 중복 사용하더라도 효과가 중첩되지 않습니다.
+*/
+ MSG_CONFIRM_TO_OPEN_CASH_ITEM = 0x4ca,
+/*20061106 to latest
+NPC가 존재하지 않아 구매가 실패하였습니다.
+The Purchase has failed because the NPC does not exist.
+*/
+ MSG_BUY_CASH_FAIL_NPC = 0x4cb,
+/*20061106 to latest
+부분 유료화 시스템이 정상 작동하지 않아 구매가 실패하였습니다.
+The Purchase has failed because the Kafra Shop System is not working correctly.
+*/
+ MSG_BUY_CASH_FAIL_SYSTEM = 0x4cc,
+/*20061106 to latest
+교환중에는 아이템을 구매 할 수 없습니다.
+You cannot purchase items while you are in a trade.
+*/
+ MSG_BUY_CASH_FAIL_EXCHANGE = 0x4cd,
+/*20061106 to latest
+아이템 정보가 정확하지 않아 구매가 실패하였습니다.
+The Purchase has failed because the Item Information was incorrect.
+*/
+ MSG_BUY_CASH_FAIL_ITEM_ID = 0x4ce,
+#endif
+#if PACKETVER >= 20061204
+/*20061204 to latest
+ STR이 향상되었습니다.
+STR has increased.
+*/
+ MSG_ENST_STR = 0x4cf,
+/*20061204 to latest
+ STR이 원래대로 돌아왔습니다.
+STR has returned to normal.
+*/
+ MSG_DSST_STR = 0x4d0,
+/*20061204 to latest
+ AGI이 향상되었습니다.
+AGI has increased.
+*/
+ MSG_ENST_AGI = 0x4d1,
+/*20061204 to latest
+ AGI이 원래대로 돌아왔습니다.
+AGI has returned to normal.
+*/
+ MSG_DSST_AGI = 0x4d2,
+/*20061204 to latest
+ VIT이 향상되었습니다.
+VIT has increased.
+*/
+ MSG_ENST_VIT = 0x4d3,
+/*20061204 to latest
+ VIT이 원래대로 돌아왔습니다.
+VIT has returned to normal.
+*/
+ MSG_DSST_VIT = 0x4d4,
+/*20061204 to latest
+ INT이 향상되었습니다.
+INT has increased.
+*/
+ MSG_ENST_INT = 0x4d5,
+/*20061204 to latest
+ INT이 원래대로 돌아왔습니다.
+INT has returned to normal.
+*/
+ MSG_DSST_INT = 0x4d6,
+/*20061204 to latest
+ DEX이 향상되었습니다.
+DEX has increased.
+*/
+ MSG_ENST_DEX = 0x4d7,
+/*20061204 to latest
+ DEX이 원래대로 돌아왔습니다.
+DEX has returned to normal.
+*/
+ MSG_DSST_DEX = 0x4d8,
+/*20061204 to latest
+ LUK이 향상되었습니다.
+LUK has increased.
+*/
+ MSG_ENST_LUK = 0x4d9,
+/*20061204 to latest
+ LUK이 원래대로 돌아왔습니다.
+LUK has returned to normal.
+*/
+ MSG_DSST_LUK = 0x4da,
+/*20061204 to latest
+ 회피율이 향상되었습니다.
+Flee Rate (Flee) has increased.
+*/
+ MSG_ENST_AVOIDANCE = 0x4db,
+/*20061204 to latest
+ 회피율이 원래대로 돌아왔습니다.
+Flee Rate has returned to normal.
+*/
+ MSG_DSST_AVOIDANCE = 0x4dc,
+/*20061204 to latest
+ 명중률이 향상되었습니다.
+Accuracy Rate (Hit) has increased.
+*/
+ MSG_ENST_HIT = 0x4dd,
+/*20061204 to latest
+ 명중률이 원래대로 돌아왔습니다.
+Accuracy Rate has returned to normal.
+*/
+ MSG_DSST_HIT = 0x4de,
+/*20061204 to latest
+ 크리티컬 확률이 향상되었습니다.
+Critical Attack (Critical) has increased.
+*/
+ MSG_ENST_CRITICALSUCCESSVALUE = 0x4df,
+/*20061204 to latest
+ 크리티컬 확률이 원래대로 돌아왔습니다.
+Critical Attack has returned to normal.
+*/
+ MSG_DSST_CRITICALSUCCESSVALUE = 0x4e0,
+/*20061204 to latest
+ 몬스터 사냥을 통해 얻을 수 있는 경험치가 30분간 1.5배로 증가합니다.
+*/
+ MSG_PLUSEXP = 0x4e1,
+/*20061204 to latest
+ 30분내 사망시 1회에 한해 경험치 감소가 일어나지 않습니다.
+This character will not receive any EXP penalty if killed within the next 30 minutes.
+*/
+ MSG_DDEATHPENALTY = 0x4e2,
+/*20061204 to latest
+ 몬스터 사냥을 통해 얻을 수 있는 기본 아이템의 드롭률이 30분간 2배로 증가합니다.
+Regular item drops from monsters will be doubled for the next 30 minutes.
+*/
+ MSG_RECEIVEITEM = 0x4e3,
+/*20061204 to latest
+ 10분간 맵 내에 출현 가능한 보스 몬스터에 대한 정보를 안내해 드립니다.
+Boss Monster Map Information for the next 10 minutes.
+*/
+ MSG_BOSS_ALARM = 0x4e4,
+/*20061204 to 20061211
+ 정말로 %s아이템을 구매하시겠습니까?, %d포인트가 차감됩니다.
+20061218 to 20070423
+ 정말로 '%s'아이템을 구매하시겠습니까?, %d포인트가 차감됩니다.
+20070423 to 20080603
+ 정말로 '%s'아이템을 구매하시겠습니까?, %d캐시가 차감됩니다.
+20080610 to latest
+ 본 아이템은 청약 철회나 환불 대상에서 제외되는 아이템입니다. 정말로 '%s'아이템을 구매하시겠습니까?, %d캐시가 차감됩니다.
+*/
+ MSG_BUY_RECONFIRM = 0x4e5,
+#endif
+#if PACKETVER >= 20061211
+/*20061211 to 20061211
+'%s'아이템의 사용시간이 %d분 남았습니다.
+20061218 to 20070423
+ 포인트가 부족합니다.
+20070423 to latest
+ 캐시가 부족합니다.
+ You do not have enough Kafra Credit Points.
+*/
+ MSG_BUY_CASH_FAIL_MONEY = 0x4e6,
+/*20061211 to 20061211
+1분 후, '%s'아이템이 인벤토리에서 삭제됩니다.
+20061218 to latest
+ ^ff0000파기일시: %s^000000
+ ^ff0000Expiration Date: %s^000000
+*/
+ MSG_NOTICE_TO_DELETE_TIME = 0x4e7,
+/*20061211 to 20061211
+'%s'아이템이 인벤토리에서 삭제되었습니다.
+20061218 to latest
+ '%s'아이템의 사용시간이 %d분 남았습니다.
+ The '%s' item will disappear in %d minutes.
+20070102 to 20070312
+ '%s'아이템의 사용시간이 %s 남았습니다.
+*/
+ MSG_NOTICE_TO_REMAIN_ITEMUSINGTIME = 0x4e8,
+#endif
+#if PACKETVER >= 20061218
+/*20061218 to latest
+ 1분 후, '%s'아이템이 인벤토리에서 삭제됩니다.
+ '%s' item will be deleted from the Inventory in 1 minute.
+*/
+ MSG_LAST_NOTICE_TO_REMAIN_ITEMUSINGTIME = 0x4e9,
+/*20061218 to latest
+ '%s'아이템이 인벤토리에서 삭제되었습니다.
+ '%s' item has been deleted from the Inventory.
+*/
+ MSG_NOTICE_TO_DELETE_ITEM = 0x4ea,
+#endif
+#if PACKETVER >= 20070102
+/*20070102 to latest
+Input Number
+*/
+ MSG_INPUT_NUMBER = 0x4eb,
+/*20070102 to latest
+%m월 %d일 %H시 %M분
+%m/%d %H:%M
+*/
+ MSG_TIME_TYPE2 = 0x4ec,
+#endif
+#if PACKETVER >= 20070129
+/*20070129 to 20071120
+보스 몬스터 '%s'(이)가 1분 이내에 등장합니다.
+20071127 to latest
+보스 몬스터 '%s'(이)가 잠시 후에 등장합니다.
+Boss Monster '%s' will appear within 1 minute.
+*/
+ MSG_APPEARANCE_TIME_OF_BOSSMON2 = 0x4ed,
+/*20070129 to latest
+용병 스킬목록
+Mercenary Soldier Skill List
+*/
+ MSG_MER_SKILLLIST = 0x4ee,
+/*20070129 to latest
+블랙젬스톤 1개와 백만제니를 소모하는 마법의 실행에 동의합니까?
+Do you agree to cast the magic spell that consumes 1 Black Gemstone and 1,000,000 Zeny?
+*/
+ MSG_DA_EXP_ACCEPT = 0x4ef,
+#endif
+#if PACKETVER >= 20070220
+/*20070220 to latest
+[POINT] 콜렉터랭킹 포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[Point] You have gained %d Collector Rank Points; you now have a total of %d Collector Rank Points.
+*/
+ MSG_COLLECTOR_POINT = 0x4f0,
+/*20070220 to latest
+[콜렉터랭킹] Target Item : %s
+[Collector Rank] Target Item: %s
+*/
+ MSG_COLLECTOR_MISSION = 0x4f1,
+#endif
+#if PACKETVER >= 20070227
+/*20070227 to latest
+용병 사용시간이 만료되었습니다.
+The mercenary contract has expired.
+*/
+ MSG_MER_FINISH = 0x4f2,
+/*20070227 to latest
+용병이 사망하였습니다.
+The mercenary has died.
+*/
+ MSG_MER_DIE = 0x4f3,
+/*20070227 to latest
+용병이 해고되었습니다.
+You have released the mercenary.
+*/
+ MSG_MER_RETIRE = 0x4f4,
+/*20070227 to latest
+용병이 도망갔습니다.
+The mercenary has run away.
+*/
+ MSG_MER_RUNAWAY = 0x4f5,
+#endif
+#if PACKETVER >= 20070319
+/*20070319 to latest
+ '%s'아이템의 사용시간이 %d초 남았습니다.
+ The '%s' item will disappear in %d seconds.
+*/
+ MSG_NOTICE_TO_REMAIN_ITEMUSINGTIME2 = 0x4f6,
+#endif
+#if PACKETVER >= 20070326
+/*20070326 to 20070821
+PC방 이벤트 : 경험치 증가 %d%%, 죽을때 경험치 %d%%, 드롭율 증가 %d%%
+20070828 to latest
+PC방 프리미엄 서비스 : 경험치 %d%% 증가, 사망 페널티 %d%% 감소, 드롭율 %d%% 증가
+IP Bonus: EXP/JEXP %d%%, Death Penalty %d%%, Item Drop %d%%
+*/
+ MSG_PCBANG_EVENT = 0x4f7,
+#endif
+#if PACKETVER >= 20070402
+/*20070402 to latest
+24시간 이후에 시도하세요
+Symbols in Character Names are forbidden.
+*/
+ MSG_LIMIT_CHAR_DELETE = 0x4f8,
+#endif
+#if PACKETVER >= 20070416
+/*20070416 to latest
+용병이 사용자 인공지능으로 동작합니다.
+Mercenary will follow custom AI.
+*/
+ MSG_MER_USERAI_ON = 0x4f9,
+/*20070416 to latest
+용병이 기본 인공지능으로 동작합니다.
+Mercenary will follow basic AI.
+*/
+ MSG_MER_USERAI_OFF = 0x4fa,
+#endif
+#if PACKETVER >= 20070611
+/*20070611 to latest
+ %s님의
+ %s's
+*/
+ MSG_CHARACTER_NAME = 0x4fb,
+/*20070611 to 20070801
+%s님이 %s를 획득하셨습니다.
+20070807 to latest
+%s님이 %s 아이템을 획득하셨습니다.
+%s has acquired %s.
+*/
+ MSG_ITEM_PICKUP_PARTY = 0x4fc,
+/*20070611 to latest
+공개 채팅 메시지 표시
+Public Chat Display
+*/
+ MSG_VIEW_CHAT_MSG = 0x4fd,
+/*20070611 to latest
+귓속말 채팅 메시지 표시
+Whisper Display
+*/
+ MSG_VIEW_WHISPER_MSG = 0x4fe,
+/*20070611 to latest
+파티 채팅 메시지 표시
+Party Chat Display
+*/
+ MSG_VIEW_PARTY_MSG = 0x4ff,
+/*20070611 to latest
+길드 채팅 메시지 표시
+Guild Chat Display
+*/
+ MSG_VIEW_GUILD_MSG = 0x500,
+/*20070611 to latest
+아이템 획득/드롭 메시지 표시
+Item Get/Drop Message Display
+*/
+ MSG_VIEW_GET_ITEM_MSG = 0x501,
+/*20070611 to latest
+장비 장착/해제 메시지 표시
+Equipment On/Off Message Display
+*/
+ MSG_VIEW_EQUIP_MSG = 0x502,
+/*20070611 to latest
+상태이상 메시지 표시
+Abnormal Status Message Display
+*/
+ MSG_VIEW_CHANGE_STATUS_MSG = 0x503,
+/*20070611 to latest
+파티원의 주요 아이템 획득 메시지 표시
+Party Member's Obtained Item Message Display
+*/
+ MSG_VIEW_GET_ITEM_PARTY_MSG = 0x504,
+/*20070611 to latest
+파티원의 상태이상 메시지 표시
+Party Member's Abnormal Status Message Display
+*/
+ MSG_VIEW_CHANGE_STATUS_PARTY_MSG = 0x505,
+/*20070611 to latest
+스킬 사용 실패 메시지 표시
+Skill Failure Message Display
+*/
+ MSG_VIEW_FAIL_SKILL_MSG = 0x506,
+/*20070611 to latest
+파티 설정 메시지 표시
+Party Configuration Message Display
+*/
+ MSG_VIEW_PARTY_SETUP_MSG = 0x507,
+/*20070611 to latest
+장비 손상 메시지 표시
+Damaged Equipment Message Display
+*/
+ MSG_VIEW_DAMAGED_EQUIP_MSG = 0x508,
+/*20070611 to latest
+배틀 메시지 창 표시 정보
+Battle Message Window Display
+*/
+ MSG_BATTLE_CHAT_WND_OPTION = 0x509,
+/*20070611 to latest
+[%s]의 소지 한코인 : %d 한코인
+[%s]'s Han Coin: %d Han Coin
+*/
+ MSG_POINT_SHOP_NHN = 0x50a,
+#endif
+#if PACKETVER >= 20070618
+/*20070618 to latest
+일반 메시지
+Public Log
+*/
+ MSG_ST_CHAT = 0x50b,
+/*20070618 to latest
+배틀 메시지
+Battle Log
+*/
+ MSG_BT_CHAT = 0x50c,
+/*20070618 to latest
+휴대폰 인증.
+Mobile Authentication
+*/
+ MSG_PHONE_CONFIRM = 0x50d,
+/*20070618 to latest
+읽기
+Read
+*/
+ MSG_BOOK_READ = 0x50e,
+/*20070618 to latest
+자동낭독
+Auto Read
+*/
+ MSG_BOOK_AUTOREAD = 0x50f,
+/*20070618 to latest
+책갈피
+Bookmark
+*/
+ MSG_BOOK_KEEP = 0x510,
+/*20070618 to latest
+이전페이지
+Previous
+*/
+ MSG_BOOK_PREV = 0x511,
+/*20070618 to latest
+다음페이지
+Next
+*/
+ MSG_BOOK_NEXT = 0x512,
+/*20070618 to latest
+닫기
+Close
+*/
+ MSG_BOOK_CLOSE = 0x513,
+#endif
+#if PACKETVER >= 20070622
+/*20070622 to latest
+%s 장비가 손상되었습니다.
+%s's Equipment has been damaged.
+*/
+ MSG_DAMAGED_EQUIP = 0x514,
+/*20070622 to latest
+%s님의 %s 손상되었습니다.
+%s's %s was damaged.
+*/
+ MSG_DAMAGED_EQUIP_PARTY = 0x515,
+/*20070622 to latest
+무기가
+Weapon
+*/
+ MSG_DAMAGED_WEAPON = 0x516,
+/*20070622 to latest
+갑옷이
+Armor
+*/
+ MSG_DAMAGED_BODY = 0x517,
+/*20070622 to latest
+스킬레벨이 부족합니다. 파티가입 불능
+Insufficient Skill Level for joining a Party
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE5_2 = 0x518,
+#endif
+#if PACKETVER >= 20070703
+/*20070703 to latest
+[%s]의 무료 캐시 : %d 캐시
+[%s]'s Free Cash: %d Cash
+*/
+ MSG_POINT_SHOP2 = 0x519,
+/*20070703 to latest
+무료 캐시 사용 :
+Use Free Cash:
+*/
+ MSG_USE_FREE_POINT = 0x51a,
+/*20070703 to latest
+캐시
+Cash
+*/
+ MSG_CASH = 0x51b,
+#endif
+#if PACKETVER >= 20070710
+/*20070710 to latest
+http://payment.ro.hangame.com/index.asp
+*/
+ MSG_SETTLE_WEB_URL_HANGAME = 0x51c,
+/*20070710 to latest
+그라비티 회원 정보동의를 하셔야 사용할수있습니다.
+*/
+ MSG_BAN_GRAVITY_MEM_AGREE = 0x51d,
+/*20070710 to latest
+이용약관에 동의를 하셔야 본 서비스를 이용하실 수 있습니다.
+You need to accept the User Agreement in order to use the service.
+*/
+ MSG_BAN_GAME_MEM_AGREE = 0x51e,
+/*20070710 to 20080513
+존재하지 않는 한게임 ID이거나 잘못된 ID입니다.
+20080520 to latest
+입력하신 아이디와 비밀번호가 등록된 정보와 일치하지 않습니다.
+Incorrect or nonexistent ID.
+*/
+ MSG_BAN_HAN_VALID = 0x51f,
+#endif
+#if PACKETVER >= 20070711
+/*20070711 to 20080603
+ 정말로 '%s'아이템을 구매하시겠습니까?, 일반 %d캐시, 무료 %d캐시가 차감됩니다.
+20080610 to latest
+ 본 아이템은 청약 철회나 환불 대상에서 제외되는 아이템입니다. 정말로 '%s'아이템을 구매하시겠습니까?, 일반 %d캐시, 무료 %d캐시가 차감됩니다.
+*/
+ MSG_BUY_RECONFIRM2 = 0x520,
+#endif
+#if PACKETVER >= 20070718
+/*20070718 to latest
+%d시간이 경과하였습니다.
+%d hour(s) has passed.
+*/
+ MSG_NOTIFY_PLAYTIME1 = 0x521,
+/*20070718 to latest
+%d시간 %d분이 경과하였습니다.
+%d hour(s) %d minute(s) has passed.
+*/
+ MSG_NOTIFY_PLAYTIME2 = 0x522,
+/*20070718 to latest
+게임을 종료하세요, 경험치 및 모든게 50%로 조정됩니다
+Please stop playing the game, and take a break. Exp and other features will be reduced to 50%.
+*/
+ MSG_WARNING_MSG1 = 0x523,
+/*20070718 to latest
+불건전 시간대에 접어들었습니다. 게임을 종료하세요, 경험치 및 모든게 0%로 조정됩니다
+Please stop playing the game since you'll need to rest. Exp and other features will be fixed to 0%.
+*/
+ MSG_WARNING_MSG2 = 0x524,
+#endif
+#if PACKETVER >= 20070724
+/*20070724 to latest
+퀘스트 목록
+Quest List
+*/
+ MSG_QUESTWIN = 0x525,
+#endif
+#if PACKETVER >= 20070807
+/*20070807 to latest
+RO SHOP
+RO Shop
+*/
+ MSG_RO_SHOP = 0x526,
+#endif
+#if PACKETVER >= 20070821
+/*20070821 to 20070904
+메모리얼던젼 '%s'이 예약되었습니다.
+20070911 to latest
+메모리얼던젼 '%s'의 예약이 알수없는 이유로 실패 하였습니다.
+Memorial Dungeon, '%s' is booked.
+*/
+ MSG_MDUNGEON_SUBSCRIPTION_ERROR_UNKNOWN = 0x527,
+/*20070821 to 20070904
+메모리얼던젼 '%s' 예약이 실패했습니다.
+20070911 to latest
+메모리얼던젼 '%s'의 예약이 예약중복으로 실패 하였습니다.
+Failed to book Memorial Dungeon, '%s'.
+*/
+ MSG_MDUNGEON_SUBSCRIPTION_ERROR_DUPLICATE = 0x528,
+/*20070821 to 20070904
+메모리얼던젼 '%s' 이미 예약중입니다.
+20070911 to latest
+메모리얼던젼 '%s'의 예약이 권한문제로 실패 하였습니다.
+Memorial Dungeon, '%s' is already booked.
+*/
+ MSG_MDUNGEON_SUBSCRIPTION_ERROR_RIGHT = 0x529,
+/*20070821 to 20070904
+메모리얼던젼 '%s'가 생성 되었습니다
+ 5분내에 입장하세요.
+20070911 to latest
+메모리얼던젼 '%s'의 예약이 중복생성요청으로 실패하였습니다.
+Memorial Dungeon, '%s' is created.
+ Please enter in 5 minutes.
+*/
+ MSG_MDUNGEON_SUBSCRIPTION_ERROR_EXIST = 0x52a,
+/*20070821 to 20070904
+메모리얼던젼 '%s' 생성에 실패했습니다.
+ 나중에 다시 시도하세요.
+20070911 to latest
+메모리얼던젼 '%s'의 예약취소가 실패 하였습니다.
+Failed to create Memorial Dungeon, '%s'.
+ Please try again.
+*/
+ MSG_MDUNGEON_SUBSCRIPTION_CANCEL_FAIL = 0x52b,
+/*20070821 to latest
+상대방이 파티 초대 거부 상태입니다.
+The character blocked the party invitation.
+*/
+ MSG_JOINMSG_REFUSE = 0x52c,
+#endif
+#if PACKETVER >= 20070828
+/*20070828 to latest
+모든 파티 초대를 거부합니다.
+Block all party invitations.
+*/
+ MSG_INVITE_PARTY_REFUSE = 0x52d,
+/*20070828 to latest
+모든 파티 초대를 수락합니다.
+Allow all party invitations.
+*/
+ MSG_INVITE_PARTY_ACCEPT = 0x52e,
+#endif
+#if PACKETVER >= 20070904
+/*20070904 to latest
+착용하시면 이 아이템은 영구 귀속됩니다. 착용하시겠습니까?
+This item will be permanently bound to this character once it is equipped. Do you really want to equip this item?
+*/
+ MSG_YOURITEM_EQUIP = 0x52f,
+/*20070904 to latest
+%s 아이템이 귀속되었습니다.
+%s is now permanently bound to this character.
+*/
+ MSG_YOURITEM_EQUIPED = 0x530,
+/*20070904 to latest
+캐시가 부족합니다. 무료 캐시 포인트를 입력해 주시기 바랍니다.
+You do not have enough Kafra Credit Points. Please enter whether you have free credit points.
+*/
+ MSG_BUY_TO_FREE_POINT = 0x531,
+/*20070904 to latest
+파티 가입요청
+Request to Join Party
+*/
+ MSG_REQ_JOIN_PARTY3 = 0x532,
+#endif
+#if PACKETVER >= 20070912
+/*20070912 to latest
+공성 정보 메시지 표시
+Display WOE Info
+*/
+ MSG_VIEW_SIEGE_INFO_MSG = 0x533,
+/*20070912 to latest
+메모리얼던젼 '%s'의 예약이 취소 되었습니다.
+Memorial Dungeon %s's reservation has been canceled.
+*/
+ MSG_MDUNGEON_SUBSCRIPTION_CANCEL_SUCCESS = 0x534,
+/*20070912 to latest
+메모리얼던젼 '%s' 생성에 실패하였습니다. 다시 시도 하세요.
+Failed to create Memorial Dungeon %s. Please try again.
+*/
+ MSG_MDUNGEON_CREATE_FAIL = 0x535,
+/*20070912 to latest
+이 장소에서는 사용할 수 없는 스킬입니다.
+This skill cannot be used within this area.
+*/
+ MSG_IMPOSSIBLE_SKILL_AREA = 0x536,
+/*20070912 to latest
+이 장소에서는 사용할 수 없는 아이템입니다.
+This item cannot be used within this area.
+*/
+ MSG_IMPOSSIBLE_USEITEM_AREA = 0x537,
+#endif
+#if PACKETVER >= 20070918
+/*20070918 to latest
+메모리얼 던전
+Memorial Dungeon
+*/
+ MSG_MEMORIAL_DUN = 0x538,
+/*20070918 to latest
+%s 대기중
+%s in Standby
+*/
+ MSG_MEMORIAL_DUN_WAITING = 0x539,
+/*20070918 to latest
+%s 입장 가능
+%s Available
+*/
+ MSG_MEMORIAL_DUN_READY = 0x53a,
+/*20070918 to 20071120
+%s 내부
+20071127 to latest
+%s 진행중
+%s in Progress
+*/
+ MSG_MEMORIAL_DUN_IN = 0x53b,
+/*20070918 to latest
+시간 안에 입장하지 않아 메모리얼 던전이 사라졌습니다.
+No one entered the Memorial Dungeon within its duration; the dungeon has disappeared.
+*/
+ MSG_MEMORIAL_DUN_OUT1 = 0x53c,
+/*20070918 to latest
+이용하시려면 이용 신청을 처음부터 다시 해주시기 바랍니다.
+Please apply for dungeon entry again to play in this dungeon.
+*/
+ MSG_MEMORIAL_DUN_OUT2 = 0x53d,
+/*20070918 to latest
+대기 순위 : ^ff0000%d^000000
+Your Standby Priority: ^ff0000%d^000000
+*/
+ MSG_MEMORIAL_DUN_PRIORITY = 0x53e,
+/*20070918 to latest
+^ff0000%s^000000 내에 입장하지 않을 경우 신청하신 던전이 삭제 됩니다.
+The requested dungeon will be removed if you do not enter within ^ff0000%s^000000.
+*/
+ MSG_MEMORIAL_DUN_NOTIFY = 0x53f,
+/*20070918 to latest
+던전 미션 제한 시간 :
+Dungeon Mission Time Limit:
+*/
+ MSG_MEMORIAL_DUN_NOTIFY2 = 0x540,
+/*20070918 to latest
+메모리얼 던전 예약이 취소되었습니다.
+The Memorial Dungeon reservation has been canceled.
+*/
+ MSG_MEMORIAL_DUN_CANCEL = 0x541,
+/*20070918 to latest
+메모리얼 던전이 유지 시간 제한에 의해 파괴되었습니다.
+The Memorial Dungeon duration expired; it has been destroyed.
+*/
+ MSG_MEMORIAL_DUN_LIVE_TIME_OUT = 0x542,
+/*20070918 to latest
+메모리얼 던전이 입장 시간 제한에 의해 파괴되었습니다.
+The Memorial Dungeon's entry time limit expired; it has been destroyed.
+*/
+ MSG_MEMORIAL_DUN_ENTER_TIME_OUT = 0x543,
+/*20070918 to latest
+메모리얼 던전이 삭제 되었습니다.
+The Memorial Dungeon has been removed.
+*/
+ MSG_MEMORIAL_DUN_DESTROY_REQUEST = 0x544,
+/*20070918 to latest
+메모리얼 던전에 시스템 오류가 발생하였습니다. 정상적인 게임 진행을 위해 재접속을 해주십시오.
+A system error has occurred in the Memorial Dungeon. Please relog in to the game to continue playing.
+*/
+ MSG_MEMORIAL_DUN_ERROR = 0x545,
+/*20070918 to latest
+사용할 수 없는 슬롯입니다.
+This slot is not usable.
+*/
+ MSG_FR_INVALID_SLOT = 0x546,
+/*20070918 to latest
+Base Level이 15를 넘었습니다.
+Your Base Level is over 15.
+*/
+ MSG_FR_BASELVL = 0x547,
+/*20070918 to latest
+Job Level이 15를 넘었습니다.
+Your Job Level is over 15.
+*/
+ MSG_FR_INVALID_JOBLV = 0x548,
+/*20070918 to latest
+해당슬롯 캐릭터에 직업군의 상인이므로 게임을 할 수 없습니다.
+You cannot play the Merchant class character in this slot.
+*/
+ MSG_FR_JOB = 0x549,
+/*20070918 to latest
+추후 사용예정
+Not Yet Implemented
+*/
+ MSG_FR_MAP = 0x54a,
+/*20070918 to latest
+만들수 있는 케릭터 슬롯이 아닙니다.
+You are not eligible to open the Character Slot.
+*/
+ MSG_FR_ERR_MKCHAR_INVALID_SLOT = 0x54b,
+/*20070918 to latest
+삭제할 수 없는 케릭터 입니다.
+This character cannot be deleted.
+*/
+ MSG_FR_ERR_DELCHAR_INVALID_SLOT = 0x54c,
+/*20070918 to latest
+상대방의 장비창이 공개되어 있지 않습니다.
+This character's equipment information is not open to the public.
+*/
+ MSG_OPEN_EQUIPEDITEM_REFUSED = 0x54d,
+/*20070918 to latest
+장비창을 공개하지 않습니다.
+Equipment information not open to the public.
+*/
+ MSG_OPEN_EQUIPEDITEM_REFUSE = 0x54e,
+/*20070918 to latest
+장비창을 공개합니다.
+Equipment information open to the public.
+*/
+ MSG_OPEN_EQUIPEDITEM_ACCEPT = 0x54f,
+/*20070918 to latest
+(%s)님 장비창 보기
+Check %s's Equipment Info
+*/
+ MSG_REQ_VIEW_OTHERUSER = 0x550,
+/*20070918 to latest
+%s의 장착아이템
+'%s's Equipment
+*/
+ MSG_OTHERUSER_EQUIPED_ITEM = 0x551,
+/*20070918 to latest
+장비창 공개
+Show Equip
+*/
+ MSG_OPEN_EQUIPED_ITEM = 0x552,
+#endif
+#if PACKETVER >= 20071002
+/*20071002 to latest
+프리미엄 서비스를 이용해 주시기 바랍니다.
+This service is only available for premium users.
+*/
+ MSG_NEED_PREMIUM_SERVICE = 0x553,
+/*20071002 to latest
+무료 사용자는 최대 50000제니까지 소유할 수 있습니다.
+Free Trial users can only hold up to 50,000 zeny.
+*/
+ MSG_FR_INVALID_MONEY = 0x554,
+#endif
+#if PACKETVER >= 20071009
+/*20071009 to latest
+전장채팅 상태가 되었습니다.
+Battlefield Chat has been activated.
+*/
+ MSG_BATTLECHAT_ON = 0x555,
+/*20071009 to latest
+전장채팅 상태가 해제되었습니다.
+Battlefield Chat has been deactivated.
+*/
+ MSG_BATTLECHAT_OFF = 0x556,
+#endif
+#if PACKETVER >= 20071017
+/*20071017 to latest
+용병정보 - 몬스터타입
+Mercenary Info - Monster Type
+*/
+ MSG_MER_INFO_TYPE_MONSTER = 0x557,
+#endif
+#if PACKETVER >= 20071106
+/*20071106 to latest
+전체 맵 보기
+World Map
+*/
+ MSG_RO_MAP = 0x558,
+#endif
+#if PACKETVER >= 20071127
+/*20071127 to latest
+메모리얼던젼이 CLOSE 상태입니다.
+The Memorial Dungeon is now closed.
+*/
+ MSG_MEMORIAL_DUN_CLOSE = 0x559,
+#endif
+#if PACKETVER >= 20071204
+/*20071204 to latest
+^ff0000^ff0000용병을 삭제합니다.^000000^000000 삭제하실 경우 지금까지 키운 내역이 모두 삭제됩니다. 계속하시겠습니까?
+^ff0000Deleting a Mercenary Soldier^000000 will also delete his growth history. Do you really want to proceed with the deletion?
+*/
+ MSG_DELETE_MER = 0x55a,
+#endif
+#if PACKETVER >= 20071211
+/*20071211 to latest
+메모리얼던젼이 OPEN 상태입니다.
+The Memorial Dungeon is now open.
+*/
+ MSG_MEMORIAL_DUN_OPEN = 0x55b,
+#endif
+#if PACKETVER >= 20080108
+/*20080108 to latest
+위의 계정은 아직 통신 안전 키에 연결되지 않았습니다. 먼저 안전 키를 해제하신 뒤 게임에 접속해 주십시오.
+This account has not been confirmed by connecting to the safe communication key. Please connect to the key first, and then log into the game.
+*/
+ MSG_PHONE_BLOCK = 0x55c,
+/*20080108 to latest
+한 아이피로 접속 가능한 유저수를 초과하였습니다.
+The number of accounts connected to this IP has exceeded the limit.
+*/
+ MSG_BAN_PC_IP_LIMIT_ACCESS = 0x55d,
+#endif
+#if PACKETVER >= 20080219
+/*20080219 to latest
+새로운 퀘스트를 받았습니다
+You have received a new quest.
+*/
+ MSG_QUESTGET = 0x55e,
+#endif
+#if PACKETVER >= 20080401
+/*20080401 to latest
+^777777습득조건 :
+^CC3399Requirement:
+*/
+ MSG_FINDTEXT_TO_SKILLDES = 0x55f,
+/*20080401 to latest
+스킬 설명 보기
+View Skill Info
+*/
+ MSG_VIEW_SKILL_DESCRIPT = 0x560,
+#endif
+#if PACKETVER >= 20080408
+/*20080408 to latest
+사용된 스킬 포인트는 다시 되돌릴 수 없습니다. 적용하시겠습니까?
+Once used, skill points cannot be re-allocated. Would you like to use the skill points?
+*/
+ MSG_APPLY_SKILL_UP = 0x561,
+/*20080408 to latest
+노비스·1차직업
+1st
+*/
+ MSG_1TABNAME_SKILLWND = 0x562,
+/*20080408 to latest
+2차·전승직업
+2nd
+*/
+ MSG_2TABNAME_SKILLWND = 0x563,
+/*20080408 to 20080513
+불법프로그램을 사용하였거나 혹은 해킹을 시도한 계정입니다. 블럭시간 : %s
+20080520 to latest
+불법프로그램을 사용하였거나 혹은 해킹을 시도한 계정입니다. 블럭종료시간 : %s
+This account has been used for illegal program or hacking program. Block Time: %s
+*/
+ MSG_RE17 = 0x564,
+/*20080408 to latest
+불법프로그램이 실행, 바이러스 감염, 또는 해킹툴이 설치되어 있을 가능성이 있습니다. 정상 클라이언트를 실행하여 주시기 바랍니다. 함께 만드는 밝은 라그나로크가 될 수 있도록 노력하고 있습니다.
+The possibility of exposure to illegal program, PC virus infection or Hacking Tool has been detected. Please execute licensed client. Our team is trying to make a best environment for Ro players.
+*/
+ MSG_RE18 = 0x565,
+#endif
+#if PACKETVER >= 20080415
+/*20080415 to latest
+당신은 지금 건강한 게임 시간 대에 있습니다, 즐거운 게임이 되시길 바랍니다
+You are currently playing in the best game environment. Please enjoy the Ragnarok.
+*/
+ MSG_WARNING_MSG3 = 0x566,
+/*20080415 to latest
+ 몬스터 사냥을 통해 얻을 수 있는 Job경험치가 30분간 1.5배로 증가합니다.
+*/
+ MSG_PLUSONLYJOBEXP = 0x567,
+/*20080415 to latest
+ 몬스터 사냥을 통해 얻을 수 있는 경험치가 30분간 1.25배로 증가합니다.
+*/
+ MSG_PLUSEXP14532 = 0x568,
+/*20080415 to latest
+ 몬스터 사냥을 통해 얻을 수 있는 경험치가 30분간 2배로 증가합니다.
+EXP points from hunting monsters are increased by 100%% for 30 minutes.
+*/
+ MSG_PLUSEXP14533 = 0x569,
+/*20080415 to latest
+ 몬스터 사냥을 통해 얻을 수 있는 경험치가 60분간 1.5배로 증가합니다.
+EXP points from hunting monsters are increased by 50% for 60 minutes.
+*/
+ MSG_PLUSEXP12312 = 0x56a,
+#endif
+#if PACKETVER >= 20080520
+/*20080520 to latest
+이 맵에서는 파티를 결성할 수 없습니다.
+Unable to organize a party in this map.
+*/
+ MSG_NOPARTY = 0x56b,
+/*20080520 to latest
+(%s)님은 파티에 참여할 수 없는 맵에 있습니다.
+(%s) are currently in restricted map to join a party.
+*/
+ MSG_NOPARTY2 = 0x56c,
+#endif
+#if PACKETVER >= 20080528
+/*20080528 to 20080603
+간편아이템샵.
+20080610 to latest
+간편아이템샵
+Simple Item Shop
+*/
+ MSG_SIMPLE_CASH_SHOP = 0x56d,
+/*20080528 to latest
+소지 한코인 : %d 한코인
+Han Coin: %d Han Coin
+*/
+ MSG_SIMPLE_POINT_SHOP_NHN = 0x56e,
+/*20080528 to latest
+소지 캐시 : %d 캐시
+RoK Point: %d RoK Point
+*/
+ MSG_SIMPLE_POINT_SHOP = 0x56f,
+/*20080528 to latest
+무료 캐시 : %d 캐시
+Free Cash: %d Cash
+*/
+ MSG_SIMPLE_POINT_SHOP2 = 0x570,
+#endif
+
+};
+#endif /* MAP_MESSAGES_AD_H */
diff --git a/src/map/messages_main.h b/src/map/messages_main.h
new file mode 100644
index 000000000..1ce77451e
--- /dev/null
+++ b/src/map/messages_main.h
@@ -0,0 +1,21471 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2013-2019 Hercules Dev Team
+ * Copyright (C) 2018-2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef MAP_MESSAGES_MAIN_H
+#define MAP_MESSAGES_MAIN_H
+
+/* This file is autogenerated, please do not commit manual changes
+
+Latest version: 20190109
+*/
+
+enum clif_messages {
+/*20031028 to latest
+동의 하십니까?
+Do you agree?
+*/
+ MSG_DO_YOU_AGREE = 0x0,
+/*20031028 to latest
+서버 연결 실패
+Failed to Connect to Server.
+*/
+ MSG_SERVER_CONNECTION_FAILED = 0x1,
+/*20031028 to latest
+서버와 연결이 끊어졌습니다.
+Disconnected from Server.
+*/
+ MSG_UNABLE_TO_CONNECT_SERVER = 0x2,
+/*20031028 to 20080617
+서버와 연결이 끊어졌습니다.
+Disconnected from Server.
+20080624 to latest
+서버와 연결이 끊어졌습니다!
+Disconnected from Server!
+*/
+ MSG_BANNED = 0x3,
+/*20031028 to latest
+서버 종료됨
+Server Closed.
+*/
+ MSG_SERVER_OFF = 0x4,
+/*20031028 to latest
+같은 계정으로 다른 사용자가 로그인 하였습니다.
+Someone has Logged in with this ID.
+*/
+ MSG_DOUBLE_LOGIN_PROHIBITED = 0x5,
+/*20031028 to latest
+등록되지 않은 계정입니다. 다시 확인 바랍니다.
+Unregistered ID. Please make sure you have a registered account and you have correctly typed in the user ID.
+*/
+ MSG_INCORRECT_USERID = 0x6,
+/*20031028 to 20070704
+비밀번호가 틀립니다
+20070710 to latest
+입력하신 비밀번호가 올바르지 않습니다.
+Incorrect User ID or Password. Please try again.
+*/
+ MSG_INCORRECT_PASSWORD = 0x7,
+/*20031028 to latest
+본 ID 는 사용기간이 만료 되었습니다
+This ID is expired.
+*/
+ MSG_ID_EXPIRED = 0x8,
+/*20031028 to latest
+서버 접근 거부
+Rejected from Server.
+*/
+ MSG_ACCESS_DENIED = 0x9,
+/*20031028 to latest
+같은 캐릭터 이름이 있습니다.
+Character Name already exists.
+*/
+ MSG_CHARACTER_NAME_ALREADY_EXISTS = 0xa,
+/*20031028 to latest
+캐릭터 생성 거부됨
+Character Creation is denied.
+*/
+ MSG_CHARACTER_CREATION_DENIED = 0xb,
+/*20031028 to latest
+캐릭터 삭제 거부
+Character Deletion is denied.
+*/
+ MSG_CANNOT_DELETE_CHARACTER = 0xc,
+/*20031028 to latest
+방제목를 입력하세요.
+Please Enter Room Title.
+*/
+ MSG_ENTER_ROOM_TITLE = 0xd,
+/*20031028 to latest
+불량단어가 검출되었습니다.
+Foul Language Detected.
+*/
+ MSG_BAD_SENTANGE = 0xe,
+/*20031028 to latest
+암호를 입력하세요.
+Please enter Password.
+*/
+ MSG_ENTER_PASSWORD = 0xf,
+/*20031028 to latest
+암호를 영문 4자 이상 입력하세요.
+Please enter Password. Passwords must be at least 4 characters long.
+*/
+ MSG_Enter_Password_more_than_4_char = 0x10,
+/*20031028 to latest
+종료 하시겠습니까?
+Are you sure that you want to quit?
+*/
+ MSG_DO_YOU_REALLY_WANT_TO_QUIT = 0x11,
+/*20031028 to latest
+4자 이상 입력해주세요. 사용자 계정이 없으신분들은 왼쪽 하단의 [신청] 버튼을 눌러 계정을 만드시기 바랍니다.
+Passwords are at least 4 characters long. Please try again.
+*/
+ MSG_NAME_MUST_EXCEED_4_CHAR = 0x12,
+/*20031028 to 20070704
+캐릭터를 삭제하겠습니까?
+20070618 to latest
+한 번 삭제된 캐릭터 및 관련 정보는 다시 복구되지 않습니다. 캐릭터를 삭제하시겠습니까?
+Are you sure that you want to delete this character?
+*/
+ MSG_DELETE_CHARACTER = 0x13,
+/*20031028 to latest
+불량단어가 검출되었습니다.
+Foul Language Detected.
+*/
+ MSG_BAD_NAME = 0x14,
+/*20031028 to latest
+이름을 입력해 주세요.(한글 2자 영문 4자 이상)
+Character Name must be at least 4 characters long.
+*/
+ MSG_ENTER_NAME_MORE_THAN_4_CHAR = 0x15,
+/*20031028 to latest
+명령어 일람: /h
+Command List: /h | /help
+*/
+ MSG_LIST_COMMAND = 0x16,
+/*20031028 to latest
+이펙트 On
+Effects On
+*/
+ MSG_EFFECT_ON = 0x17,
+/*20031028 to latest
+이펙트 Off
+Effects Off
+*/
+ MSG_EFFECT_OFF = 0x18,
+/*20031028 to latest
+사운드 볼륨
+Sound Volume
+*/
+ MSG_VOLUME_OF_SOUND = 0x19,
+/*20031028 to latest
+배경음악 볼륨
+BGM Volume
+*/
+ MSG_VOLUME_OF_BGM = 0x1a,
+/*20031028 to latest
+효과음 On
+Sound Effects On
+*/
+ MSG_SOUND_ON = 0x1b,
+/*20031028 to latest
+효과음 Off
+Sound Effects Off
+*/
+ MSG_SOUND_OFF = 0x1c,
+/*20031028 to latest
+프레임스킵 On
+Frame Skip On
+*/
+ MSG_FRAME_SKIP_ON = 0x1d,
+/*20031028 to latest
+프레임스킵 Off
+Frame Skip Off
+*/
+ MSG_FRAME_SKIP_OFF = 0x1e,
+/*20031028 to latest
+배경음악 On
+BGM On
+*/
+ MSG_BGM_ON = 0x1f,
+/*20031028 to latest
+배경음악 Off
+BGM Off
+*/
+ MSG_BGM_OFF = 0x20,
+/*20031028 to latest
+/h or /help: 명령어 일람
+/h or /help: Shows this Command Help List
+*/
+ MSG_EXPLAIN_HELP = 0x21,
+/*20031028 to latest
+/w or /who or /접속자 or /누구: 현재 접속자수 보기
+/w or /who or /player or /who: wiew current the number of player
+*/
+ MSG_EXPLAIN_WHO = 0x22,
+/*20031028 to latest
+/음악 : 배경음악 On Off
+/music: Turns BGM On or Off
+*/
+ MSG_EXPLAIN_MUSIC = 0x23,
+/*20031028 to latest
+/효과음 : 효과음 On Off
+/sound: Turns Sound Effects On or Off
+*/
+ MSG_EXPLAIN_SOUND = 0x24,
+/*20031028 to latest
+/이펙트 : 이펙트 On Off
+/effect: Effects On or Off
+*/
+ MSG_EXPLAIN_EFFECT = 0x25,
+/*20031028 to latest
+/좌표 or /장소: 현재 위치 표시
+/where: Shows your present location
+*/
+ MSG_EXPLAIN_POS = 0x26,
+/*20031028 to latest
+/skip : 프래임스킵 On Off
+/skip: Turns Frame Skip On or Off
+*/
+ MSG_EXPLAIN_FRAMESKIP = 0x27,
+/*20031028 to latest
+/v (0~127): 효과음 볼륨조정
+/v (0~127): Controls the volume of the Sound Effects
+*/
+ MSG_EXPLAIN_SOUNDVOLUME = 0x28,
+/*20031028 to latest
+/bv (0~127): 배경음악 볼륨조정
+/bv (0~127): Controls the volume of the BGM
+*/
+ MSG_EXPLAIN_BGMVOLUME = 0x29,
+/*20031028 to latest
+/ex (캐릭터이름) or /차단 (캐릭터이름) : 해당캐릭터에 대해 귓말차단
+/ex (Character Name): Blocks whispering from the Character
+*/
+ MSG_EXPLAIN_SAYISOLATION = 0x2a,
+/*20031028 to latest
+/ex or /차단 : 귓말차단 캐릭터 리스트
+/ex: View a list of Characters you have Blocked
+*/
+ MSG_EXPLAIN_LIST_SAYISOLATION_CHAR = 0x2b,
+/*20031028 to latest
+/in (캐릭터이름) or /해제 (캐릭터이름) : 해당캐릭터에 대해 귓말허용
+/in (Character Name): Allows whispering from the Character
+*/
+ MSG_EXPLAIN_SAY_PERMIT = 0x2c,
+/*20031028 to latest
+/inall or /해제전부 : 모두에게 귓말허용
+/inall: Allows whispers from anyone
+*/
+ MSG_EXPLAIN_SAY_PERMITALL = 0x2d,
+/*20031028 to latest
+/exall or /차단전부 : 모두에게 귓말차단
+/exall: Blocks whispers from everyone
+*/
+ MSG_EXPLAIN_SAY_ISOLATEALL = 0x2e,
+/*20031028 to latest
+다른유저 캐릭터를 마우스 오른버튼을 누르고 있는 상태에서 왼버튼으로 클릭하면 그캐릭터이름이 귓말콤보박스에 저장됩니다.
+Right click on a character and select [Register as a Friend] to add a person to your Friend List.
+*/
+ MSG_EXPLAIN_TIP1 = 0x2f,
+/*20031028 to latest
+단축아이탬창(F12) 소비장비 아이템을 드래그한후 사용하세요. 사용키(F1F2F3F4F5F6F7F8F9)
+F12 Brings up a Hotkey Window which allows you to drag and drop Recovery Items, Equipment and Skills into it for faster access.
+*/
+ MSG_EXPLAIN_TIP2 = 0x30,
+/*20031028 to latest
+같은말을 3번이상 연속해서 전송할 수 없습니다.
+You can't type the same word/phrase more than 3 times.
+*/
+ MSG_NO_SAME_SENTANCE = 0x31,
+/*20031028 to latest
+불량단어 검출로 전송이 중단 되었습니다.
+Chat Filter: Yeah, uh, I don't think so buddy...
+*/
+ MSG_NO_SEND_BECAUSE_INSULT = 0x32,
+/*20031028 to latest
+같은아이템은 한번만 올릴수 있습니다.
+You cannot overlap items on a window.
+*/
+ MSG_CAN_DRAG_ITEM_OLNY_ONETIME = 0x33,
+/*20031028 to latest
+무게가 초과하여 아이템을 가질 수 없습니다.
+You cannot carry more items because you are overweight.
+*/
+ MSG_CANT_GET_ITEM_BECAUSE_WEIGHT = 0x34,
+/*20031028 to latest
+아이템을 가질 수 없습니다.
+You cannot get the item.
+*/
+ MSG_CANT_GET_ITEM = 0x35,
+/*20031028 to latest
+거래가 잘 이루어졌습니다.
+The deal has successfully completed.
+*/
+ MSG_DEAL_SECCESS = 0x36,
+/*20031028 to latest
+돈이 부족합니다.
+You do not have enough zeny.
+*/
+ MSG_INSUFFICIENT_MONEY = 0x37,
+/*20031028 to latest
+무게가 초과 되었습니다.
+You are over your Weight Limit.
+*/
+ MSG_OVER_WEIGHT = 0x38,
+/*20031028 to latest
+거래가 실패 했습니다.
+The deal has failed.
+*/
+ MSG_DEAL_FAIL = 0x39,
+/*20031028 to latest
+모두에게 귓말거부상태로됨
+You've blocked whispers from everyone.
+*/
+ MSG_REFUSE_HEAR_ALL = 0x3a,
+/*20031028 to latest
+모두에게 귓말거부요청 실패함
+You've failed to block all whispers.
+*/
+ MSG_REQ_REFUSE_HEAR_ALL_FAIL = 0x3b,
+/*20031028 to latest
+모두에게 귓말가능상태가됨
+You've allowed whispers from everyone.
+*/
+ MSG_HEAR_ALL = 0x3c,
+/*20031028 to latest
+모두에게 귓말가능요청 실패함
+You've failed to allow all whispers.
+*/
+ MSG_REQ_HEAR_ALL_FAIL = 0x3d,
+/*20031028 to latest
+귓말 거부 리스트가 없습니다
+You have no Block List.
+*/
+ MSG_NO_REFUSE_HEAR_LIST = 0x3e,
+/*20031028 to latest
+-귓말 거부 리스트-
+[ Character Block List ]
+*/
+ MSG_REFUSE_HEAR_LIST = 0x3f,
+/*20031028 to latest
+방이 잘 만들어 졌습니다.
+Room has been successfully created.
+*/
+ MSG_ROOM_IS_MADE = 0x40,
+/*20031028 to latest
+방갯수가 허용갯수를 초과 하였습니다.
+Room Limit Exceeded.
+*/
+ MSG_TOO_MANY_ROOM = 0x41,
+/*20031028 to latest
+같은 방제목이 있습니다.
+Same Room exists.
+*/
+ MSG_SAME_ROOM_TITLE = 0x42,
+/*20031028 to latest
+인원초과로 방에 들어갈 수 없습니다.
+The Room is full.
+*/
+ MSG_TOO_MANY_PEOPLE_IN_ROOM = 0x43,
+/*20031028 to latest
+강제로 퇴장된 방입니다.
+You have been kicked out of this room.
+*/
+ MSG_YOU_HAVE_BANNED_FROM_THE_ROOM = 0x44,
+/*20031028 to latest
+교환요청을 거절 했습니다.
+The deal has been rejected.
+*/
+ MSG_REJECT_DEAL = 0x45,
+/*20031028 to latest
+교환가능거리를 벗어났습니다.
+You are too far away from the person to trade.
+*/
+ MSG_TOO_FAR_TO_DEAL = 0x46,
+/*20031028 to latest
+해당 캐릭터가 없습니다.
+The Character is not currently online or does not exist.
+*/
+ MSG_CHARACTER_IS_NOT_EXIST = 0x47,
+/*20031028 to latest
+다른캐릭터와 교환중입니다.
+The person is in another deal.
+*/
+ MSG_CHARACTER_IS_DEALING = 0x48,
+/*20031028 to 20110627
+상태캐릭터 중량초과로 올려놓을수가 없습니다.
+20110705 to latest
+상대 캐릭터 중량초과로 올려놓을 수 없습니다.
+You cannot trade because this character will exceed his weight limit.
+*/
+ MSG_CHARACTER_IS_OVER_WEIGHT = 0x49,
+/*20031028 to latest
+거래가 취소 되었습니다.
+The deal has been canceled.
+*/
+ MSG_DEAL_IS_CANCELED = 0x4a,
+/*20031028 to latest
+아이템 교환이 잘 되었습니다.
+The deal has successfully completed.
+*/
+ MSG_DEAL_SUCCESS = 0x4b,
+/*20031028 to latest
+아이템 교환이 실패 하였습니다.
+The deal has failed.
+*/
+ MSG_DEAL_FAILED = 0x4c,
+/*20031028 to latest
+파티가 만들어졌습니다.
+Party has successfully been organized.
+*/
+ MSG_PARTY_MAKE_SUCCEED = 0x4d,
+/*20031028 to latest
+같은 파티이름이 있습니다.
+That Party Name already exists.
+*/
+ MSG_SAME_PARTY_NAME = 0x4e,
+/*20031028 to latest
+이미 파티에 속해있습니다.
+The Character is already in a party.
+*/
+ MSG_YOU_ARE_ALREADY_IN_PARTY = 0x4f,
+/*20031028 to latest
+다른파티에 가입되어 있습니다.
+The Character already joined another party.
+*/
+ MSG_CHARACTER_IS_ALREADY_IN_PARTY = 0x50,
+/*20031028 to latest
+파티가입을 거부했습니다.
+Request for party rejected.
+*/
+ MSG_CHARACTER_REJECT_JOIN = 0x51,
+/*20031028 to latest
+파티가입을 수락했습니다.
+Request for party accepted.
+*/
+ MSG_CHARACTER_ACCEPT_JOIN = 0x52,
+/*20031028 to latest
+파티정원을 초과했습니다.
+Party Capacity exceeded.
+*/
+ MSG_TOO_MANY_PEOPLE_IN_PARTY = 0x53,
+/*20031028 to latest
+파티에서 탈퇴하였습니다.
+You left the party.
+*/
+ MSG_YOU_LEAVE_FROM_PARTY = 0x54,
+/*20031028 to latest
+전체에게 보냄
+Send to All
+*/
+ MSG_SEND_TO_ALL = 0x55,
+/*20031028 to latest
+파티에게 보냄
+Send to Party
+*/
+ MSG_SEND_TO_PARTY = 0x56,
+/*20031028 to latest
+님과의 거래요청
+Request a deal with %s
+*/
+ MSG_REQ_DEAL_WITH = 0x57,
+/*20031028 to latest
+님 파티에 가입요청
+Ask %s to join your party
+*/
+ MSG_REQ_JOIN_PARTY = 0x58,
+/*20031028 to latest
+비공개 :
+Pri:
+*/
+ MSG_ROOM_PRIVATE = 0x59,
+/*20031028 to latest
+공개 :
+Pub:
+*/
+ MSG_ROOM_PUBLIC = 0x5a,
+/*20031028 to latest
+마지막 체크지점부터 시작하려면 '재시작'을 캐릭터 선택으로 돌아가려면 '종료'를 눌러주세요.
+Click ''Restart'' to go back to your save point or click ''Exit'' to select another character.
+*/
+ MSG_RESTART_MSG = 0x5b,
+/*20031028 to latest
+원하는 거래를 선택하세요.
+Please select a Deal Type.
+*/
+ MSG_SELECT_DEAL_TYPE = 0x5c,
+/*20031028 to latest
+님이 거래를 요청했습니다.
+ requests a deal.
+*/
+ MSG_SUGGEST_DEAL = 0x5d,
+/*20031028 to latest
+ 파티에서 초청 메시지가 왔습니다. 합류하겠습니까?
+ Party has sent you an invitation. Would you like to join?
+*/
+ MSG_SUGGEST_JOIN_PARTY = 0x5e,
+/*20031028 to latest
+명령이 틀렸습니다.
+Invalid Command
+*/
+ MSG_INVALID_COMMAND = 0x5f,
+/*20031028 to latest
+탈퇴하기
+Leave party
+*/
+ MSG_LEAVE_PARTY = 0x60,
+/*20031028 to latest
+제명시키기
+Expel
+*/
+ MSG_EXPEL = 0x61,
+/*20031028 to latest
+쪽지보내기
+Send Message
+*/
+ MSG_MSG = 0x62,
+/*20031028 to latest
+1:1 대화
+1:1 Chat
+*/
+ MSG_1ON1 = 0x63,
+/*20031028 to latest
+정보
+Information
+*/
+ MSG_CHARACTER_INFO = 0x64,
+/*20031028 to latest
+파티설정
+Party Setup
+*/
+ MSG_PARTY_SETTING = 0x65,
+/*20031028 to latest
+친구
+Friend
+*/
+ MSG_FRIEND = 0x66,
+/*20031028 to latest
+파티
+Party
+*/
+ MSG_PARTY = 0x67,
+/*20031028 to latest
+장착아이템
+Equipment
+*/
+ MSG_EQUIPED_ITEM = 0x68,
+/*20031028 to latest
+스테이터스
+Status
+*/
+ MSG_STATUS_ = 0x69,
+/*20031028 to latest
+소지아이템
+Inventory
+*/
+ MSG_ITEM = 0x6a,
+/*20031028 to latest
+/결성 [파티이름] : 파티결성 /탈퇴 : 파티탈퇴
+/organize ''Party Name'' To organize a party. Type /leave To leave a Party.
+*/
+ MSG_EXPLAIN_PARTY = 0x6b,
+/*20031028 to latest
+자신이 파티리더일때 캐릭터를 오른버튼으로 클릭하면 파티에 가입요청하기 메뉴가 뜹니다.
+If you are the party master, you can invite someone into your party by right-clicking on a Character.
+*/
+ MSG_EXPLAIN_TIP3 = 0x6c,
+/*20031028 to latest
+회복
+Consumables
+*/
+ MSG_RESTORE = 0x6d,
+/*20031028 to latest
+공격
+Attack
+*/
+ MSG_ATTACK = 0x6e,
+/*20031028 to latest
+보조
+Support
+*/
+ MSG_SUPPORT = 0x6f,
+/*20031028 to latest
+전체
+All
+*/
+ MSG_ALL = 0x70,
+/*20031028 to latest
+무기
+Weapons
+*/
+ MSG_WEAPON = 0x71,
+/*20031028 to latest
+방어
+Defense
+*/
+ MSG_DEFENCE = 0x72,
+/*20031028 to latest
+수
+Water
+*/
+ MSG_WATER = 0x73,
+/*20031028 to latest
+지
+Earth
+*/
+ MSG_EARTH = 0x74,
+/*20031028 to latest
+화
+Fire
+*/
+ MSG_FIRE = 0x75,
+/*20031028 to latest
+풍
+Wind
+*/
+ MSG_WIND = 0x76,
+/*20031028 to latest
+같은종류의 장비아이템은 한번에 한개만 살 수 있습니다.
+Please avoid buying 2 of the same items at one time.
+*/
+ MSG_EQUIPITEM_OLNY_ONE = 0x77,
+/*20031028 to latest
+창모드에서 실행 할때는 16비트 컬러로 맞춰주세요.
+Please change your desktop Color Depth to 16-bit when running Ragnarok in windowed mode.
+*/
+ MSG_ONLY_16BIT_WHEN_WINDOWMODE = 0x78,
+/*20031028 to latest
+잠시만 기다려 주세요.
+Please wait...
+*/
+ MSG_PLEASE_BE_PATIENT = 0x79,
+/*20031028 to latest
+잠시만 기다려 주세요.
+Please wait...
+*/
+ MSG_WAITING_RESPONSE_FROM_SERVER = 0x7a,
+/*20031028 to latest
+잠시만 기다려 주세요.
+Please wait...
+*/
+ MSG_MAKING_CHARACTER = 0x7b,
+/*20031028 to latest
+잠시만 기다려 주세요.
+Please wait...
+*/
+ MSG_DELETING_CHARACTER = 0x7c,
+/*20031028 to latest
+방 만들기
+Make a Room
+*/
+ MSG_MAKING_ROOM = 0x7d,
+/*20031028 to latest
+방셋팅 바꾸기
+Room Setup
+*/
+ MSG_CHANGE_ROOM_SETTING = 0x7e,
+/*20031028 to latest
+강퇴시키기
+Kick Character Out
+*/
+ MSG_BAN = 0x7f,
+/*20031028 to latest
+방장권한 주기
+Give Master Authority
+*/
+ MSG_GIVE_GIVE_ROOM_POWER = 0x80,
+/*20031028 to latest
+정보보기
+View Information
+*/
+ MSG_SEE_INFORMATION_OF_CHARACTER = 0x81,
+/*20031028 to latest
+대화방
+Chat Room
+*/
+ MSG_CHAT_ROOM = 0x82,
+/*20031028 to latest
+명
+Ppl
+*/
+ MSG_COUNT_UNIT_OF_PEOPLE = 0x83,
+/*20031028 to latest
+/앉기 or /sit : 앉기. 앉아있을때 서기
+/sit: Sit command. If you are sitting, you will stand instead.
+*/
+ MSG_EXPLAIN_SIT = 0x84,
+/*20031028 to latest
+/서기 or /stand : 서기. 서있을때 앉기
+/stand: Stand command. If you are standing, you will sit instead.
+*/
+ MSG_EXPLAIN_STAND = 0x85,
+/*20031028 to latest
+/채팅방 or /chat : 채팅방 만들기창 띄우기
+/chat: Creates a Chat Room
+*/
+ MSG_EXPLAIN_MAKE_CHAT = 0x86,
+/*20031028 to latest
+/q : 채팅방 나가기.
+/q: Leaves a Chat Room
+*/
+ MSG_EXPLAIN_EXIT_CHAT_ROOM = 0x87,
+/*20031028 to latest
+/거래 [캐릭터이름] or /교환 [캐릭터이름] or /deal [캐릭터이름] : 해당 캐릭터와 거래요청
+/deal ''Character Name'' Requests a deal with a character
+*/
+ MSG_EXPLAIN_DEAL = 0x88,
+/*20031028 to latest
+/결성 [파티이름] or /organize [파티이름] : 파티결성
+/organize ''Party Name'' Organizes a party
+*/
+ MSG_EXPLAIN_ORGANIZE_PARTY = 0x89,
+/*20031028 to latest
+/탈퇴 or /leave : 파티 탈퇴
+/leave: Leaves a party
+*/
+ MSG_EXPLAIN_LEAVE_PARTY = 0x8a,
+/*20031028 to latest
+/제명 [캐릭터이름] or /expel [캐릭터이름] : 해당캐릭터를 파티에서 제명시킴
+/expel ''Character Name'' kicks a Character out of your party
+*/
+ MSG_EXPLAIN_EXPEL_PARTY_MEMBER = 0x8b,
+/*20031028 to latest
+[Alt] + [End] : 플레이어 hp/sp 게이지 On Off
+[Alt] + [End]: Turns HP/SP Bar On or Off
+*/
+ MSG_EXPLAIN_TIP4 = 0x8c,
+/*20031028 to latest
+[Alt] + [Home] : 지면 커서 표시 On Off
+[Alt] + [Home]: Turns Ground Cursor On or Off
+*/
+ MSG_EXPLAIN_TIP5 = 0x8d,
+/*20031028 to latest
+[Insert] : 앉기 서기
+[Insert]: Makes you sit or stand. (Hotkey to toggle between /sit and /stand)
+*/
+ MSG_EXPLAIN_TIP6 = 0x8e,
+/*20031028 to latest
+MVP가 되셨습니다!! MVP 아이템은
+Congratulations! You are the MVP! Your reward item is
+*/
+ MSG_YOU_RECEIVE_MVP_ITEM = 0x8f,
+/*20031028 to latest
+ !!
+!!
+*/
+ MSG_YOU_RECEIVE_MVP_ITEM2 = 0x90,
+/*20031028 to latest
+MVP가 되셨습니다!! 특별경험치
+Congratulations! You are the MVP! Your reward EXP Points are
+*/
+ MSG_YOU_RECEIVE_MVP_EXP = 0x91,
+/*20031028 to latest
+ 획득!!
+!!
+*/
+ MSG_YOU_RECEIVE_MVP_EXP2 = 0x92,
+/*20031028 to latest
+MVP가 되셨습니다만 무게초과로 MVP 아이템을 가질 수 없었습니다!!
+You are the MVP, but you can't take the reward because you are over your weight limit.
+*/
+ MSG_YOU_THROW_MVPITEM = 0x93,
+/*20031028 to latest
+ 없는 캐릭터 이름 입니다.
+There is no such character name or the user is offline.
+*/
+ MSG_NOT_EXIST_CHARACTER = 0x94,
+/*20031028 to latest
+ 수신 거부 상태입니다.
+ doesn't want to receive your messages.
+*/
+ MSG_NO_RECEIVE_MODE = 0x95,
+/*20031028 to latest
+ 모든 캐릭터에 대해 수신 거부 상태 입니다.
+ is not in the mood to talk with anyone.
+*/
+ MSG_NO_RECEIVE_MODE_FOR_ALL = 0x96,
+/*20031028 to latest
+캐릭터 접속끊기 성공.
+Killed/Disconnected User.
+*/
+ MSG_SUCCESS_DISCONNECT_CHARACTER = 0x97,
+/*20031028 to latest
+캐릭터 접속끊기 실패.
+Kill has failed.
+*/
+ MSG_FAIL_DISCONNECT_CHARACTER = 0x98,
+/*20031028 to latest
+%s %d 개 획득
+You got %s (%d).
+*/
+ MSG_GET_ITEM = 0x99,
+/*20031028 to latest
+[Alt] + [=] : 알파벳 간격이 넓어졌을때 되돌리기.
+[Alt] + [=]: Fix the interval error between letters.
+*/
+ MSG_EXPLAIN_TIP7 = 0x9a,
+/*20031028 to latest
+[F10] : 채팅창 크기조정 [Alt] + [F10] : 채팅창 On Off
+[F10]: To toggle Chat Window size; [Alt] + [F10]: Toggle Chat Window On or Off
+*/
+ MSG_EXPLAIN_TIP8 = 0x9b,
+/*20031028 to latest
+귓속말 하는법 : 채팅창 왼쪽 입력란에 캐릭터이름을 입력하고 오른쪽 입력란에 말을 입력하면 됩니다. TAB키로 두입력란 사이로 커서를 이동할 수 있습니다.
+How to Whisper: Enter a Character's Name on the left side of chat window and type your message on the right side. The Tab key helps you move between these boxes.
+*/
+ MSG_EXPLAIN_TIP9 = 0x9c,
+/*20031028 to latest
+/! /? /기쁨 /하트 /땀 /아하 /짜증 /화 /돈 /... /가위 /바위 /보 : Alt + (1~9) Ctrl + (-=\) 에 대응되는 명령어 입니다.
+/!,/?,/ho,/lv,/lv2,/swt,/ic,/an,/ag,/$,/….,/thx,/wah,/sry,/heh,/swt2,/hmm,/no1,/??,/omg,/oh,/X,/hp,/go,/sob,/gg,/kis,/kis2,/pif,/ok: Emotion icons corresponding to Alt + (1~9) Ctrl + (-=\\)
+*/
+ MSG_EXPLAIN_TIP10 = 0x9d,
+/*20031028 to latest
+파티원에게 말하는법 : 말의 제일앞에 '%'를 붙이면 파티원에게 말이 갑니다. (예: "%안녕")
+How to Speak to Party: Add % in front of every message.(Example: \%Hello\)
+*/
+ MSG_EXPLAIN_TIP11 = 0x9e,
+/*20031028 to latest
+스킬레벨이 부족합니다. 교환 불능.
+You haven't learned enough Basic Skills to Trade.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE1 = 0x9f,
+/*20031028 to latest
+스킬레벨이 부족합니다. 이모션 불능.
+You haven't learned enough Basic Skills to use Emotion icons.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE2 = 0xa0,
+/*20031028 to latest
+스킬레벨이 부족합니다. 앉기 불능.
+You haven't learned enough Basic Skills to Sit.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE3 = 0xa1,
+/*20031028 to latest
+스킬레벨이 부족합니다. 채팅방만들기 불능.
+You haven't learned enough Basic Skills to create a chat room.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE4 = 0xa2,
+/*20031028 to latest
+스킬레벨이 부족합니다. 파티만들기 불능
+You haven't learned enough Basic Skills to Party.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE5 = 0xa3,
+/*20031028 to latest
+스킬레벨이 부족합니다. 외치기 불능
+You haven't learned enough skills to Shout.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE6 = 0xa4,
+/*20031028 to latest
+스킬레벨이 부족합니다. pk 불능
+You haven't learned enough skills for Pking.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE7 = 0xa5,
+/*20031028 to latest
+사고자하는 품목
+Buying Items
+*/
+ MSG_ITEMS_FOR_BUY = 0xa6,
+/*20031028 to latest
+아이템 상점
+Item Shop
+*/
+ MSG_ITEM_STORE = 0xa7,
+/*20031028 to latest
+팔고자하는 품목
+Selling Items
+*/
+ MSG_ITEMS_FOR_SELL = 0xa8,
+/*20031028 to latest
+보관아이템
+Storage
+*/
+ MSG_ITEMS_THAT_IS_STORED = 0xa9,
+/*20031028 to latest
+ 장비가 장착 되었습니다.
+ is put on.
+*/
+ MSG_ITEM_IS_EQUIPED = 0xaa,
+/*20031028 to latest
+ 장비가 해제 되었습니다.
+ is taken off.
+*/
+ MSG_ITEM_IS_REMOVED = 0xab,
+/*20031028 to latest
+귓말리스트에 이름넣기
+To add names on the Whispering List
+*/
+ MSG_ADD_TO_WHISPER_CHAR_LIST = 0xac,
+/*20031028 to latest
+스크린샷 찍는법 : [Print Screen]키나 [Scroll Lock]키를 누르면 됩니다.
+How to Take Screen Shots: Press [Print Screen] or [Scroll Lock]
+*/
+ MSG_EXPLAIN_TIP12 = 0xad,
+/*20031028 to latest
+오늘의 팁
+Tip of the Day
+*/
+ MSG_TIPOFTHEDAY = 0xae,
+/*20031028 to latest
+^3850a0알고 계셨습니까... ^000000 //^709fed
+^3850a0Did you know...?^709fed
+*/
+ MSG_DIDYOUKNOW = 0xaf,
+/*20031028 to latest
+시작할때 열기
+Display at startup
+*/
+ MSG_SHOWTIPSATSTARTUP = 0xb0,
+/*20031028 to latest
+/tip : 오늘의팁 열기
+/tip: Opens ''Tip of the Day''
+*/
+ MSG_EXPLAIN_OPENTIP = 0xb1,
+/*20031028 to latest
+현재 접속자 %d명
+There are %d Players Currently Connected.
+*/
+ MSG_NUMPEOPLE = 0xb2,
+/*20031028 to latest
+(%s)님이 입장 하였습니다.
+(%s) has entered.
+*/
+ MSG_USERGETINTHEROOM = 0xb3,
+/*20031028 to latest
+(%s)님이 퇴장 하였습니다.
+(%s) has left.
+*/
+ MSG_USERGETOUTOFTHEROOM = 0xb4,
+/*20031028 to latest
+(%s)님이 강제 퇴장 되었습니다.
+(%s) was kicked out.
+*/
+ MSG_USERGETOUTOFTHEROOMBYFORCE = 0xb5,
+/*20031028 to latest
+ %d 개
+%d ea.
+*/
+ MSG_EA = 0xb6,
+/*20031028 to latest
+%s : %d 개
+%s: %d ea.
+*/
+ MSG_EA2 = 0xb7,
+/*20031028 to latest
+%s %s : %d 개
+%s %s: %d
+*/
+ MSG_EA3 = 0xb8,
+/*20031028 to latest
+팔 수 있는 품목
+Available Items to sell
+*/
+ MSG_ITEMSYOUCANSELL = 0xb9,
+/*20031028 to latest
+상점에서 파는 품목
+Shop Items
+*/
+ MSG_SHOPITEMS = 0xba,
+/*20031028 to latest
+알 수 없는곳
+Unknown Area
+*/
+ MSG_NOWHERE = 0xbb,
+/*20031028 to latest
+서버와 언어가 맞지 않습니다.
+Your Client language doesn't match the Server language.
+*/
+ MSG_CLIENTTYPEMISMATCH = 0xbc,
+/*20031028 to latest
+아이템을 버릴려면 장비창을 닫으세요.
+Please move your equipment to the inventory. And close the equipment window.
+*/
+ MSG_CLOSEEQUIPWND = 0xbd,
+/*20031028 to latest
+영어만 됩니다.
+This server provides English Text Characters Only.
+*/
+ MSG_ENGLISHONLY = 0xbe,
+/*20031028 to latest
+지금은 지원되지 않습니다.
+This is not implemented yet.
+*/
+ MSG_NOTSUPPORTEDYET = 0xbf,
+/*20031028 to latest
+귓말 리스트가 없습니다.
+No Whisper List.
+*/
+ MSG_NOWHISPERLIST = 0xc0,
+/*20031028 to latest
+ 에게 귓말거부상태로됨
+: Whispering Blocked.
+*/
+ MSG_WHISPERIGNORESUCCESS = 0xc1,
+/*20031028 to latest
+ 에게 귓말거부 요청실패함
+: Whispering Block has failed.
+*/
+ MSG_WHISPERIGNOREFAILED1 = 0xc2,
+/*20031028 to latest
+ 에게 귓말거부 요청실패함 (인원초과)
+: Whispering Block has failed. Block List is full.
+*/
+ MSG_WHISPERIGNOREFAILED2 = 0xc3,
+/*20031028 to latest
+ 에게 귓말가능상태로됨
+: Whispering accepted.
+*/
+ MSG_WHISPERNOIGNORESUCCESS = 0xc4,
+/*20031028 to latest
+ 에게 귓말가능 요청실패함
+: Command has failed.
+*/
+ MSG_WHISPERNOIGNOREFAILED1 = 0xc5,
+/*20031028 to latest
+ 에게 귓말가능 요청실패함 (인원초과)
+: Command has failed. Block List is full.
+*/
+ MSG_WHISPERNOIGNOREFAILED2 = 0xc6,
+/*20031028 to latest
+이름의 처음과 마지막에는 공백문자를 사용할 수 없습니다.
+You cannot put a space at the beginning or end of a name.
+*/
+ MSG_NO_SPACE_IN_NAME = 0xc7,
+/*20031028 to latest
+비공개
+Private
+*/
+ MSG_ROOM_PRIVATE2 = 0xc8,
+/*20031028 to latest
+공개
+Public
+*/
+ MSG_ROOM_PUBLIC2 = 0xc9,
+/*20031028 to latest
+SP가 부족합니다.
+Not Enough SP
+*/
+ MSG_USESKILL_FAIL_SP_INSUFFICIENT = 0xca,
+/*20031028 to latest
+HP가 부족합니다.
+Not Enough HP
+*/
+ MSG_USESKILL_FAIL_HP_INSUFFICIENT = 0xcb,
+/*20031028 to latest
+스킬사용 실패.
+Skill has failed.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE8 = 0xcc,
+/*20031028 to latest
+훔치기 실패.
+Steal has failed.
+*/
+ MSG_FAIL_STEAL = 0xcd,
+/*20031028 to latest
+교환창
+Trade
+*/
+ MSG_EXCHANGE = 0xce,
+/*20031028 to latest
+독걸기 실패.
+Envenom skill has failed.
+*/
+ MSG_FAIL_POISON = 0xcf,
+/*20031028 to latest
+이 아이디로는 이 서버에 접속할 수 없습니다.
+You cannot use this ID on this server.
+*/
+ MSG_ID_MISMATCH = 0xd0,
+/*20031028 to latest
+스피드가 향상되었습니다.
+Your Speed has increased.
+*/
+ MSG_SPEEDUP = 0xd1,
+/*20031028 to latest
+스피드가 감소되었습니다.
+Your Speed has decreased.
+*/
+ MSG_SPEEDDOWN = 0xd2,
+/*20031028 to latest
+/기억 : 워프할 장소 기억(워프 스킬이 있는경우)
+/memo: To memorize a place as Warp Point (If you are an Acolyte Class character)
+*/
+ MSG_EXPLAIN_TIP13 = 0xd3,
+/*20031028 to latest
+임의의 위치
+Random Area
+*/
+ MSG_RANDOM_POS = 0xd4,
+/*20031028 to latest
+워프 할 위치를 선택하세요.
+Select an Area to Warp
+*/
+ MSG_SELECTWHERETOWARP = 0xd5,
+/*20031028 to latest
+스킬레벨이 부족합니다.
+Skill Level is not high enough
+*/
+ MSG_NOTENOUGHSKILLLEVEL = 0xd6,
+/*20031028 to latest
+저장된 워프할 장소가 없습니다.
+There are no memorized locations (Memo Points).
+*/
+ MSG_NO_STORED_PLACE_TO_WARP = 0xd7,
+/*20031028 to latest
+워프 관련 스킬이 없습니다.
+You haven't learned Warp.
+*/
+ MSG_NOWARPSKILL = 0xd8,
+/*20031028 to latest
+워프 장소로 저장됨.
+Saved location as a Memo Point for Warp Skill.
+*/
+ MSG_WARPPOINTSTORED = 0xd9,
+/*20031028 to latest
+취소
+Cancel
+*/
+ MSG_CANCEL = 0xda,
+/*20031028 to latest
+스킬 사용후 시간이 충분히 지나지 않았습니다.
+There is a Delay after using a Skill.
+*/
+ MSG_SKILLINTERVAL = 0xdb,
+/*20031028 to latest
+한번에 가질 수 있는 아이템 종류수를 초과하여 아이템을 가질 수 없습니다.
+You can't have this item because you will exceed the weight limit.
+*/
+ MSG_CANT_GET_ITEM_BECAUSE_COUNT = 0xdc,
+/*20031028 to latest
+아이템 최대 종류수를 초과 하였습니다.
+Out of the maximum capacity
+*/
+ MSG_INSUFFICIENT_OVER_COUNT = 0xdd,
+/*20031028 to latest
+수레아이템
+Cart Items
+*/
+ MSG_MERCHANTITEM = 0xde,
+/*20031028 to latest
+수레 벗기
+Take off Cart
+*/
+ MSG_CARTOFF = 0xdf,
+/*20031028 to latest
+노점 개설
+Opening a stall
+*/
+ MSG_MERCHANTSHOPMAKER = 0xe0,
+/*20031028 to 20041207
+노점이름를 입력하세요.
+20041213 to latest
+노점이름을 입력하세요.
+Please Name your Shop.
+*/
+ MSG_ENTER_SHOP_TITLE = 0xe1,
+/*20031028 to latest
+나의 노점
+My Shop
+*/
+ MSG_ITEM_MY_STORE = 0xe2,
+/*20031028 to latest
+상인 아이템 상점
+Merchant Shop
+*/
+ MSG_ITEM_MERCHANT_STORE = 0xe3,
+/*20031028 to latest
+상인에게 사고자하는 품목
+Buying Items
+*/
+ MSG_ITEMS_FOR_BUY_FROM_MERCHANT = 0xe4,
+/*20031028 to 20130508
+%s 사기 실패 %s
+20130515 to latest
+%s 구입 실패 %s
+%s Purchase Failed %s
+*/
+ MSG_FAIL_BUY_ITEM_FROM_MERCHANT = 0xe5,
+/*20031028 to latest
+재고 부족.
+Out of Stock
+*/
+ MSG_INSUFFICIENT_STOCK = 0xe6,
+/*20031028 to latest
+%s %d 개 팔림.
+%s %d sold.
+*/
+ MSG_ITEM_IS_SOLD = 0xe7,
+/*20031028 to latest
+노점에서 팔 수 있는 아이템
+Available Items for Vending
+*/
+ MSG_MERCHANTMIRRORITEM = 0xe8,
+/*20031028 to 20111012
+돈이 부족해서 스킬을 쓸 수 없습니다.
+20111017 to latest
+제니가 부족해서 스킬을 사용 할 수 없습니다.
+Skill has failed because you do not have enough zeny.
+*/
+ MSG_SKILL_FAIL_MONEY = 0xe9,
+/*20031028 to latest
+사용할 대상을 선택하세요
+Select a Target.
+*/
+ MSG_SELECTTARGET = 0xea,
+/*20031028 to latest
+/pk on : pk On /pk off : pk Off
+/pk on: Turns PK On. /pk off: Turns PK Off.
+*/
+ MSG_EXPLAIN_TIP14 = 0xeb,
+/*20031028 to latest
+노점
+Shop
+*/
+ MSG_STREETSHOP = 0xec,
+/*20031028 to latest
+수레 아이템 [Alt+W]
+Cart Items [Alt+W]
+*/
+ MSG_OPENCARTWINDOW = 0xed,
+/*20031028 to latest
+기본정보
+Basic Information
+*/
+ MSG_BASICINFOWND = 0xee,
+/*20031028 to latest
+이무기로는 이스킬을 사용할수 없습니다.
+The skill cannot be used with this weapon.
+*/
+ MSG_USESKILL_FAIL_NOT_SUITABLE_WEAPON = 0xef,
+/*20031028 to latest
+%s 사기 실패 재고 부족 현재 재고 %d 개.
+Buying %s has been failed. Out of Stock. Current Stock %d.
+*/
+ MSG_FAIL_BUY_ITEM_FROM_MERCHANT_NO_STOCK = 0xf0,
+/*20031028 to latest
+서버와 동기화가 틀려 연결이 끊어졌습니다.
+You've been disconnected due to a time gap between you and the server.
+*/
+ MSG_SPEEDHACK = 0xf1,
+/*20031028 to latest
+화살을 장착하세요
+Please equip the proper ammunition first.
+*/
+ MSG_ERR_ATTACK_ARROW = 0xf2,
+/*20031028 to latest
+중량과다로 공격이나 스킬을 사용할 수 없습니다.
+You can't attack or use skills because you've exceeded the Weight Limit.
+*/
+ MSG_ERR_ATTACK_WEIGHT = 0xf3,
+/*20031028 to latest
+중량과다로 스킬을 사용할 수 없습니다.
+You can't use skills because you've exceeded the Weight Limit.
+*/
+ MSG_ERR_SKILL_WEIGHT = 0xf4,
+/*20031028 to latest
+화살이 장착되었습니다.
+Ammunition has been equipped.
+*/
+ MSG_MSG_ARROW_EQUIPMENT_SUCCESS = 0xf5,
+/*20031028 to latest
+레드젬스톤이 필요합니다.
+Red Gemstone required.
+*/
+ MSG_NEED_REDJAMSTONE = 0xf6,
+/*20031028 to latest
+블루젬스톤이 필요합니다.
+Blue Gemstone required.
+*/
+ MSG_NEED_BLUEJAMSTONE = 0xf7,
+/*20031028 to latest
+힘 파라메터
+Strength
+*/
+ MSG_DESC_STR = 0xf8,
+/*20031028 to latest
+민첩성 파라메터
+Agility
+*/
+ MSG_DESC_AGI = 0xf9,
+/*20031028 to latest
+체력 파라메터
+Vitality
+*/
+ MSG_DESC_VIT = 0xfa,
+/*20031028 to latest
+지력 파라메터
+Intelligence
+*/
+ MSG_DESC_INT = 0xfb,
+/*20031028 to latest
+손재주 파라메터
+Dexterity
+*/
+ MSG_DESC_DEX = 0xfc,
+/*20031028 to latest
+운 파라메터
+Luck
+*/
+ MSG_DESC_LUK = 0xfd,
+/*20031028 to latest
+공격력
+Hit Point
+*/
+ MSG_DESC_ATK = 0xfe,
+/*20031028 to latest
+방어력
+Defence Rate
+*/
+ MSG_DESC_DEF = 0xff,
+/*20031028 to latest
+명중률
+Accuracy
+*/
+ MSG_DESC_HIT = 0x100,
+/*20031028 to latest
+필살공격률
+Critical Attack
+*/
+ MSG_DESC_CRI = 0x101,
+/*20031028 to latest
+소속길드
+Affiliated Guild
+*/
+ MSG_DESC_GUILD = 0x102,
+/*20031028 to latest
+각 파라메터 레벨업에 사용되는 포인트
+Points to level up each Parameter
+*/
+ MSG_DESC_POINT = 0x103,
+/*20031028 to latest
+마법공격력
+Magic Attack
+*/
+ MSG_DESC_MATK = 0x104,
+/*20031028 to latest
+마법방어력
+Magic Defense
+*/
+ MSG_DESC_MDEF = 0x105,
+/*20031028 to latest
+회피율
+Dodge
+*/
+ MSG_DESC_FLEE = 0x106,
+/*20031028 to latest
+공격스피드
+Attack Speed
+*/
+ MSG_DESC_ASPD = 0x107,
+/*20031028 to latest
+지역당 수용인원 초과로 접속할 수 없습니다.
+Server is jammed due to over population. Please try again shortly.
+*/
+ MSG_PC_OVERFLOW = 0x108,
+/*20031028 to latest
+옵션
+Option
+*/
+ MSG_OPTIONWND = 0x109,
+/*20031028 to latest
+E-MAIL 인증이 되지않았거나 블럭된 계정입니다.
+Account ID blocked by the Game Master Team.
+*/
+ MSG_ID_EMAIL_CONFIRM_NEEDED = 0x10a,
+/*20031028 to latest
+비밀번호가 틀립니다.
+Incorrect User ID or Password. Please try again.
+*/
+ MSG_INCORRECT_LOGIN_PASSWORD = 0x10b,
+/*20031028 to latest
+머리모양 선택
+Choose Hairstyle
+*/
+ MSG_SELECT_HAIR_STYLE = 0x10c,
+/*20031028 to latest
+공격력
+Hit Point
+*/
+ MSG_ATK = 0x10d,
+/*20031028 to latest
+방어력
+Defence Rate
+*/
+ MSG_DEF = 0x10e,
+/*20031028 to latest
+공격스냅 On
+Attack Snap On
+*/
+ MSG_ATTACK_SNAP_ON = 0x10f,
+/*20031028 to latest
+공격스냅 Off
+Attack Snap Off
+*/
+ MSG_ATTACK_SNAP_OFF = 0x110,
+/*20031028 to latest
+스킬스냅 On
+Skill Snap On
+*/
+ MSG_SKILL_SNAP_ON = 0x111,
+/*20031028 to latest
+스킬스냅 Off
+Skill Snap Off
+*/
+ MSG_SKILL_SNAP_OFF = 0x112,
+/*20031028 to latest
+/스냅 or /snap: 몬스터 공격시 스냅 On Off /스킬스냅 or /skillsnap: 스킬로 몬스터 공격시 스냅 On Off /아이템스냅 or /itemsnap: 아이템 주울때 스냅 On Off
+/snap: Turns snap On | Off for fights, /skillsnap: Turns snap On | Off for skills. /itemsnap: Turns snap On | Off for items on the grounds.
+*/
+ MSG_EXPLAIN_SNAP = 0x113,
+/*20031028 to latest
+아이템스냅 On
+Item Snap On
+*/
+ MSG_ITEM_SNAP_ON = 0x114,
+/*20031028 to latest
+아이템스냅 Off
+Item Snap Off
+*/
+ MSG_ITEM_SNAP_OFF = 0x115,
+/*20031028 to latest
+스냅
+Snap
+*/
+ MSG_SNAP = 0x116,
+/*20031028 to latest
+한가지 아이템을 3만개 이상 가질수 없습니다.
+You cannot carry more than 30,000 of one kind of item.
+*/
+ MSG_CANT_GET_ITEM_OVERCOUNT_ONEITEM = 0x117,
+/*20031028 to latest
+레벨 30이상의 캐릭터는 삭제할 수 없습니다. 삭제를 원하시면 관계자에게 문의 하세요.
+You cannot delete a Character with a level greater than 30. If you want to delete the character please contact a Game Master.
+*/
+ MSG_CANT_DELETE_CHARACTER_OVER_30_LEVEL = 0x118,
+/*20031028 to 20091208
+이이템 교환중에는 아이템을 사고 팔 수 없습니다.
+20091215 to latest
+아이템 교환중에는 아이템을 사고 팔 수 없습니다.
+You cannot use an NPC shop while in a trade.
+*/
+ MSG_FAIL_BUY_ITEM_ITEM_EXCHANGING = 0x119,
+/*20031028 to latest
+상점명
+Shop Name
+*/
+ MSG_STALL_NAME = 0x11a,
+/*20031028 to latest
+스킬목록
+Skill Tree
+*/
+ MSG_SKILLLIST = 0x11b,
+/*20031028 to latest
+스킬포인트 : %d
+Skill Point: %d
+*/
+ MSG_SKILLPOINT = 0x11c,
+/*20031028 to latest
+스킬사용 실패
+Skill has failed.
+*/
+ MSG_USESKILL_FAIL = 0x11d,
+/*20031028 to latest
+패시브
+Passive
+*/
+ MSG_PASSIVE = 0x11e,
+/*20031028 to latest
+각자 취득
+Individual
+*/
+ MSG_EXPDIV1 = 0x11f,
+/*20031028 to latest
+균등하게 분배
+Shared
+*/
+ MSG_EXPDIV2 = 0x120,
+/*20031028 to latest
+각자 취득
+Individual
+*/
+ MSG_ITEMCOLLECT1 = 0x121,
+/*20031028 to latest
+파티 전체 공유
+Party Share
+*/
+ MSG_ITEMCOLLECT2 = 0x122,
+/*20031028 to latest
+파티 설정
+Party Setup
+*/
+ MSG_PARTYSETTING = 0x123,
+/*20031028 to latest
+경험치 분배방식
+How to share EXP
+*/
+ MSG_HOWEXPDIV = 0x124,
+/*20031028 to latest
+아이템 수집방식
+How to share Items
+*/
+ MSG_HOWITEMCOLLECT = 0x125,
+/*20031028 to latest
+파티 리더만 설정할 수 있습니다.
+Only the Party Leader can change this setting.
+*/
+ MSG_ONLY_PARTYMASTER = 0x126,
+/*20031028 to latest
+아이템 갯수 안물어보기
+Toggle Item Amount.
+*/
+ MSG_NOQUESTION_ITEMCOUNT = 0x127,
+/*20031028 to latest
+^ff0000%d^000000 초 후에 캐릭터가 지워집니다. 취소 하려면 취소 버튼을 누르세요.
+Character will be deleted after ^ff0000%d^000000 seconds. Press Cancel to quit.
+*/
+ MSG_CHARARATER_DELETE_COUNT = 0x128,
+/*20031028 to latest
+교환할 수 있는 최대 아이템 갯수는 10가지 입니다.
+You cannot trade more than 10 types of items per trade.
+*/
+ MSG_MAXEXCHANGE_IS_10_KIND = 0x129,
+/*20031028 to latest
+이서버를 이용할 수 없는 나이입니다.
+You are underaged.
+*/
+ MSG_LIMIT_AGE = 0x12a,
+/*20031028 to latest
+이메일 주소를 입력하세요.
+Please enter the deletion password.
+*/
+ MSG_ENTER_EMAIL = 0x12b,
+/*20031028 to latest
+이메일 주소 입력하기
+E-mail Address (Case Sensitive).
+*/
+ MSG_ENTER_EMAIL_TOOLTIP = 0x12c,
+/*20031028 to latest
+이메일 주소가 틀려서 캐릭터가 삭제 되지 않았습니다.
+Character Deletion has failed because you have entered an incorrect e-mail address.
+*/
+ MSG_CANNOT_DELETE_CHARACTER_EMAIL = 0x12d,
+/*20031028 to 20070703
+주민등록번호 뒷자리를 입력하세요.
+20070618 to 20070622
+비밀번호를 한 번 더 입력해 주시기 바랍니다.
+20070704 to latest
+계정 비밀번호를 입력하세요.
+Enter Second Serial Cord of your Social Security number.
+*/
+ MSG_ENTER_PEOPLE_REG_NUMBER = 0x12e,
+/*20031028 to 20070703
+주민등록번호 뒷자리가 틀려서 캐릭터가 삭제 되지 않았습니다.
+20070618 to 20070622
+비밀번호가 맞지 않아 캐릭터가 삭제 되지 않았습니다.
+20070704 to latest
+비밀번호가 틀려서 캐릭터가 삭제 되지 않았습니다.
+Character Deletion has failed because you have entered an incorrect SSN.
+*/
+ MSG_CANNOT_DELETE_CHARACTER_PEOPLE_REG_NUMBER = 0x12f,
+/*20031028 to latest
+한번에 15가지 이상의 아이템을 팔 수 없습니다.
+You can't sell more than 15 types of Items at one time.
+*/
+ MSG_CANT_SELL_OVER_15 = 0x130,
+/*20031028 to latest
+나이제한 때문에 이계정으로 이서버에 접속할 수 없습니다.
+The age limit from commandment tables cannot connect to this server.
+*/
+ MSG_UNDER_AGE = 0x131,
+/*20031028 to latest
+무게가 50 퍼센트 이상일때는 HP SP가 자연적으로 회복이 되지 않습니다.
+HP/SP will not be restored when your carried weight is over 50% of the Weight Limit.
+*/
+ MSG_NO_RECOVER_OVERWEIGHT = 0x132,
+/*20031028 to latest
+무게가 90 퍼센트 이상일때는 공격과 스킬을 사용할 수 없습니다.
+You can't use Skills or Attack while your carried weight is over 90% of your Weight Limit.
+*/
+ MSG_NO_ATTACK_OVERWEIGHT = 0x133,
+/*20031028 to latest
+HP SP가 자연적으로 회복이 가능한 상태가 되었습니다.
+Your HP/SP are now being restored naturally.
+*/
+ MSG_NO_RECOVER_OVERWEIGHT_RELEASED = 0x134,
+/*20031028 to latest
+공격과 스킬이 가능한 상태가 되었습니다.
+Attack and Skills are now available.
+*/
+ MSG_NO_ATTACK_OVERWEIGHT_RELEASED = 0x135,
+/*20031028 to latest
+서버 점검중입니다.
+Your Game's Exe File is not the latest version.
+*/
+ MSG_INVALID_VERSION = 0x136,
+/*20031028 to latest
+아이템이 모두 팔렸습니다.
+Items are sold out.
+*/
+ MSG_ITEM_IS_SOLD_OUT = 0x137,
+/*20031028 to latest
+채팅내용 파일로 저장하기
+Save Chat as Text File
+*/
+ MSG_WRITE_CHAT_TO_FILE = 0x138,
+/*20031028 to latest
+/갈무리 or /savechat : 채팅 내용 파일로 저장하기.
+/savechat: Save a Chat Log
+*/
+ MSG_EXPLAIN_SAVE_CHAT = 0x139,
+/*20031028 to latest
+계정 만들기
+Register
+*/
+ MSG_MAKEACCOUNT = 0x13a,
+/*20031028 to latest
+수신거부하기
+Reject Whispering
+*/
+ MSG_REQ_EX_LIST = 0x13b,
+/*20031028 to latest
+수신거부해제하기
+Allow Whispering
+*/
+ MSG_REQ_IN = 0x13c,
+/*20031028 to latest
+미스표시 On
+Shows ''Miss''
+*/
+ MSG_MISS_EFFECT_ON = 0x13d,
+/*20031028 to latest
+미스표시 Off
+Shows ''Miss''
+*/
+ MSG_MISS_EFFECT_OFF = 0x13e,
+/*20031028 to latest
+카메라고정 On
+Camera Zooming On
+*/
+ MSG_FIXED_CAMERA_ON = 0x13f,
+/*20031028 to latest
+카메라고정 Off
+Camera Zooming Off
+*/
+ MSG_FIXED_CAMERA_OFF = 0x140,
+/*20031028 to latest
+/camera : 플레이어에게 카메라고정 On Off /miss : 미스이펙트 On Off
+/camera: Camera Zooming On or Off. /miss: Toggle ''Miss'' display
+*/
+ MSG_EXPLAIN_CAMERA_MISS = 0x141,
+/*20031028 to latest
+스킬정보보기
+View Skill Info
+*/
+ MSG_SEE_INFORMATION_OF_SKILL = 0x142,
+/*20031028 to latest
+스킬이름바꾸기
+Change Skill
+*/
+ MSG_CHANGE_SKILL_NAME = 0x143,
+/*20031028 to latest
+스프라이트 해상도
+Sprite Resolution
+*/
+ MSG_SPRITE_RESOLUTION = 0x144,
+/*20031028 to latest
+텍스쳐 해상도
+Texture Resolution
+*/
+ MSG_TEXTURE_RESOLUTION = 0x145,
+/*20031028 to latest
+디테일 조정
+Arrange Detail
+*/
+ MSG_DETAILLEVELWND = 0x146,
+/*20031028 to latest
+%s Zeny 획득
+You got %s Zeny
+*/
+ MSG_GET_ZENY = 0x147,
+/*20031028 to latest
+길드명
+Guild Name
+*/
+ MSG_GUILDNAME = 0x148,
+/*20031028 to latest
+길드레벨
+Guild lvl
+*/
+ MSG_GUILDLEVEL = 0x149,
+/*20031028 to latest
+마스터이름
+ClanMaster Name
+*/
+ MSG_GUILD_MASTER_NAME = 0x14a,
+/*20031028 to latest
+조합원수
+Number of Members
+*/
+ MSG_GUILD_NUM_MEMBER = 0x14b,
+/*20031028 to latest
+조합원 평균레벨
+Avg.lvl of Guildsmen
+*/
+ MSG_GUILD_AVG_MEMBER_LEVEL = 0x14c,
+/*20031028 to latest
+관리영지
+Castles Owned
+*/
+ MSG_GUILD_MANAGE_LAND = 0x14d,
+/*20031028 to latest
+성향
+Tendency
+*/
+ MSG_GUILD_FAIR = 0x14e,
+/*20031028 to latest
+경험치
+EXP
+*/
+ MSG_GUILD_EXP = 0x14f,
+/*20031028 to latest
+길드엠블렘
+Emblem
+*/
+ MSG_GUILD_EMBLEM = 0x150,
+/*20031028 to latest
+길드상납포인트
+Tax Point
+*/
+ MSG_GUILD_POINT = 0x151,
+/*20031028 to latest
+동맹길드
+Alliances
+*/
+ MSG_ALLY_GUILD = 0x152,
+/*20031028 to latest
+적대길드
+Antagonists
+*/
+ MSG_HOSTILITY_GUILD = 0x153,
+/*20031028 to latest
+길드정보
+Guild Info
+*/
+ MSG_GUILDINFOMANAGE = 0x154,
+/*20031028 to latest
+조합원정보
+Guildsmen Info
+*/
+ MSG_GUILDMEMBERMANAGE = 0x155,
+/*20031028 to latest
+직위설정
+Position
+*/
+ MSG_GUILDPOSITIONMANAGE = 0x156,
+/*20031028 to latest
+길드스킬
+Guild Skill
+*/
+ MSG_GUILDSKILL = 0x157,
+/*20031028 to latest
+추방자 리스트
+Expel History
+*/
+ MSG_GUILDBANISHEDMEMBER = 0x158,
+/*20031028 to latest
+공지사항
+Guild Notice
+*/
+ MSG_GUILDNOTICE = 0x159,
+/*20031028 to latest
+전체길드 리스트
+Entire Guild List
+*/
+ MSG_GUILDTOTALINFO = 0x15a,
+/*20031028 to latest
+귓말 리스트
+Whispering List
+*/
+ MSG_WHISPERLISTWND = 0x15b,
+/*20031028 to latest
+귓말창 열기
+Open Whispering Window
+*/
+ MSG_OPENWHISPERLISTWND = 0x15c,
+/*20031028 to latest
+귓말 리스트 창 여는법 : [Alt] + [H] 를 누르면 귓말 리스트 창이 열립니다.
+How to Open Whispering List: Press [Alt] + [H]
+*/
+ MSG_EXPLAIN_WHISPER_LIST_WND = 0x15d,
+/*20031028 to latest
+자동으로 귓말창 열기
+Open Whispering List Automatically
+*/
+ MSG_AUTOOPENWHISPERLISTWND = 0x15e,
+/*20031028 to latest
+지우기
+Delete
+*/
+ MSG_DELETE = 0x15f,
+/*20031028 to latest
+다음부터 열리지 않음
+Close since next
+*/
+ MSG_DONTOPEN = 0x160,
+/*20031028 to latest
+마지막으로 접속한 시간
+Last Log-in Time
+*/
+ MSG_LAST_LOGIN_TIME = 0x161,
+/*20031028 to latest
+마지막으로 접속한 IP
+Last Log-in IP
+*/
+ MSG_LAST_LOGIN_IP = 0x162,
+/*20031028 to latest
+친구 설정
+Friend Setup
+*/
+ MSG_FRIEND_SETTING = 0x163,
+/*20031028 to latest
+정말 지우시겠습니까?
+Are you sure that you want to delete?
+*/
+ MSG_DO_YOU_REALLY_WANT_DELETE = 0x164,
+/*20031028 to latest
+정말 탈퇴하시겠습니까?
+Are you sure that you want to leave?
+*/
+ MSG_DO_YOU_REALLY_WANT_LEAVE = 0x165,
+/*20031028 to latest
+친구로 등록하기
+Register as a Friend
+*/
+ MSG_ADD_TO_FRIEND_CHAR_LIST = 0x166,
+/*20031028 to latest
+친구일때 자동으로 1:1창 열기
+Open 1:1 Chat between Friends
+*/
+ MSG_AUTOOPENWHISPERLISTWND_FRIEND = 0x167,
+/*20031028 to latest
+1:1창 열기
+Open 1:1 Chat
+*/
+ MSG_OPEN_1ON1_WINDOW = 0x168,
+/*20031028 to latest
+친구가 아닐때 자동으로 1:1창 열기
+Open 1:1 Chat between Strangers
+*/
+ MSG_AUTOOPEN_1ON1_WINDOW = 0x169,
+/*20031028 to latest
+1:1창 열릴때 소리로 알림
+Alarm when you recieve a 1:1 Chat
+*/
+ MSG_WHISPER_OPEN_SOUND = 0x16a,
+/*20031028 to latest
+정말 제명시키시겠습니까?
+Are you sure that you want to expel?
+*/
+ MSG_DO_YOU_REALLY_WANT_EXPEL = 0x16b,
+/*20031028 to latest
+%s 님이 길드를 탈퇴했습니다.
+%s has withdrawn from the guild.
+*/
+ MSG_USER_LEFT_GUILD = 0x16c,
+/*20031028 to latest
+탈퇴사유 : %s
+Secession Reason: %s
+*/
+ MSG_REASON_LEAVE_GUILD = 0x16d,
+/*20031028 to 20120202
+길드 해체 실패
+20120207 to latest
+길드명이 일치하지 않습니다
+You have failed to disband the guild.
+*/
+ MSG_DISORGANIZE_GUILD_FAILURE = 0x16e,
+/*20031028 to latest
+길드해체사유 : %s
+Disband Reason: %s
+*/
+ MSG_DISORGANIZATION_REASON = 0x16f,
+/*20031028 to latest
+해당 계정은 삭제된 아이디 입니다.
+This ID has been removed.
+*/
+ MSG_DELETED_ACCOUNT = 0x170,
+/*20031028 to latest
+판매가 :
+Price:
+*/
+ MSG_SELLPRICE = 0x171,
+/*20031028 to latest
+%s 님이 길드에서 추방되었습니다.
+%s has been expelled from our guild.
+*/
+ MSG_BAN_GUILD = 0x172,
+/*20031028 to latest
+추방사유 : %s
+Expulsion Reason: %s
+*/
+ MSG_REASON_BAN_GUILD = 0x173,
+/*20031028 to latest
+아이템을 착용할 수 없습니다.
+You can't put this item on.
+*/
+ MSG_CAN_NOT_EQUIP_ITEM = 0x174,
+/*20031028 to latest
+파티설정을 변경할 수 없습니다.
+You can't modify Party Setup.
+*/
+ MSG_PARTYSETTING_CHANGE_IMPOSSIBLE = 0x175,
+/*20031028 to latest
+길드가 만들어 졌습니다.
+Guild has been Created.
+*/
+ MSG_GUILD_MAKE_SUCCESS = 0x176,
+/*20031028 to latest
+이미 길드에 속해있습니다.
+You are already in a Guild.
+*/
+ MSG_GUILD_MAKE_ALREADY_MEMBER = 0x177,
+/*20031028 to latest
+같은이름의 길드가 존재합니다.
+That Guild Name already exists.
+*/
+ MSG_GUILD_MAKE_GUILD_EXIST = 0x178,
+/*20031028 to latest
+ 길드에서 초청 메시지가 왔습니다. 가입하겠습니까?
+ Guild has sent you an invitation. Would you like to join this Guild?
+*/
+ MSG_SUGGEST_JOIN_GUILD = 0x179,
+/*20031028 to latest
+다른길드에 가입되어 있습니다.
+He/She is already in a Guild.
+*/
+ MSG_CHARACTER_IS_ALREADY_IN_GUILD = 0x17a,
+/*20031028 to latest
+길드가입을 거절 했습니다.
+Offer Rejected
+*/
+ MSG_CHARACTER_REJECT_JOIN_GUILD = 0x17b,
+/*20031028 to latest
+길드가입을 수락했습니다.
+Offer Accepted
+*/
+ MSG_CHARACTER_ACCEPT_JOIN_GUILD = 0x17c,
+/*20031028 to latest
+길드정원을 초과했습니다.
+Your Guild is Full.
+*/
+ MSG_TOO_MANY_PEOPLE_IN_GUILD = 0x17d,
+/*20031028 to latest
+(%s)님 길드에 가입요청
+Send (%s) a Guild invitation
+*/
+ MSG_REQ_JOIN_GUILD = 0x17e,
+/*20031028 to latest
+스킬 레벨이 모자라서 매너포인트를 줄 수 없습니다.
+You haven't learned enough skills for aligning.
+*/
+ MSG_NOT_ENOUGH_FOR_MANNER_POINT = 0x17f,
+/*20031028 to latest
+매너 포인트 주기 성공
+Aligning completed.
+*/
+ MSG_GIVING_MANNER_POINT_SUCCESS = 0x180,
+/*20031028 to latest
+오늘 이미 사용했습니다.
+You already spent your point for today.
+*/
+ MSG_YOU_USE_TODAY_ALREADY = 0x181,
+/*20031028 to latest
+이캐릭터에게 지급한지 한달이 지나지 않았습니다.
+Hasn't been a month yet since you aligned this person.
+*/
+ MSG_ONE_MONTH_NOT_PASSED = 0x182,
+/*20031028 to latest
+%s 님으로부터 플러스 매너 포인트를 받았습니다.
+Remember, Spamming isn't nice.
+*/
+ MSG_RECEIVE_PLUS_MANNER_POINT = 0x183,
+/*20031028 to latest
+%s 님으로부터 마이너스 매너 포인트를 받았습니다.
+Please refrain from ill-mannered conduct, thank you.
+*/
+ MSG_RECEIVE_MINUS_MANNER_POINT = 0x184,
+/*20031028 to latest
+채팅 금지 시간 줄이기(풀기)
+Align with a Good Point
+*/
+ MSG_GIVE_PLUS_MANNER_POINT = 0x185,
+/*20031028 to latest
+채팅 금지 시간 늘이기(걸기)
+Align with a Bad Point
+*/
+ MSG_GIVE_MINUS_MANNER_POINT = 0x186,
+/*20031028 to latest
+(%s)님과의 거래요청
+Request a deal with (%s)
+*/
+ MSG_REQ_DEAL_WITH2 = 0x187,
+/*20031028 to latest
+(%s)님 파티에 가입요청
+Ask (%s) to join your party
+*/
+ MSG_REQ_JOIN_PARTY2 = 0x188,
+/*20031028 to latest
+ 길드에서 동맹요청 메시지가 왔습니다. 동맹하겠습니까?
+ Guild is asking you to agree to an Alliance with them. Do you accept?
+*/
+ MSG_SUGGEST_ALLY_GUILD = 0x189,
+/*20031028 to latest
+이미 동맹되어 있습니다.
+This Guild is already your Ally.
+*/
+ MSG_REQALLYGUILD_ALREADY_ALLIED = 0x18a,
+/*20031028 to latest
+동맹을 거절 했습니다.
+You reject the offer
+*/
+ MSG_REQALLYGUILD_REJECT = 0x18b,
+/*20031028 to latest
+동맹을 수락 했습니다.
+You accept the offer
+*/
+ MSG_REQALLYGUILD_ACCEPT = 0x18c,
+/*20031028 to latest
+상대길드의 동맹길드의 수가 초과 되었습니다.
+They have too many Alliances.
+*/
+ MSG_REQALLYGUILD_OVERSIZE = 0x18d,
+/*20031028 to latest
+길드의 동맹길드의 수가 초과 되었습니다.
+You have too many Alliances.
+*/
+ MSG_REQALLYMYGUILD_OVERSIZE = 0x18e,
+/*20031028 to latest
+길드 동맹 요청
+Set this guild as an Alliance
+*/
+ MSG_REQ_ALLY_GUILD = 0x18f,
+/*20031028 to latest
+길드가 성공적으로 해체 되었습니다.
+Guild was successfully disbanded.
+*/
+ MSG_DISORGANIZE_GUILD_SUCCESS = 0x190,
+/*20031028 to latest
+주민등록번호가 틀려서 길드가 해체되지 않았습니다.
+You have failed to disband the guild due to your incorrect SSN.
+*/
+ MSG_DISORGANIZE_GUILD_INVALIDKEY = 0x191,
+/*20031028 to latest
+길드맴버가 존재해서 길드가 해체되지 않았습니다.
+You have failed to disband the guild because there are guildsmen still present.
+*/
+ MSG_DISORGANIZE_GUILD_MEMBEREXIST = 0x192,
+/*20031028 to latest
+길드 적대 요청
+Set this guild as an Antagonist
+*/
+ MSG_REQ_HOSTILE_GUILD = 0x193,
+/*20031028 to latest
+머리색깔 선택
+Choose Hair Color
+*/
+ MSG_SELECT_HAIR_COLOR = 0x194,
+/*20031028 to latest
+길드결성시 필요한 아이템이 없습니다.
+You don't have necessary item to create a Guild.
+*/
+ MSG_GUILD_MAKE_GUILD_NONE_ITEM = 0x195,
+/*20031028 to latest
+몬스터 정보
+Monster Info
+*/
+ MSG_MONSTER_INFO_WINDOW = 0x196,
+/*20031028 to latest
+이름
+Name
+*/
+ MSG_NAME = 0x197,
+/*20031028 to latest
+레벨
+Level
+*/
+ MSG_LEVEL = 0x198,
+/*20031028 to latest
+HP
+*/
+ MSG_HP = 0x199,
+/*20031028 to latest
+크기
+Size
+*/
+ MSG_SIZE = 0x19a,
+/*20031028 to latest
+종족
+Type
+*/
+ MSG_RACETYPE = 0x19b,
+/*20031028 to latest
+MDEF
+*/
+ MSG_MDEFPOWER = 0x19c,
+/*20031028 to latest
+속성
+Attribute
+*/
+ MSG_PROPERTY = 0x19d,
+/*20031028 to latest
+無
+Neutral
+*/
+ MSG_PROPERTY_NEUTURAL = 0x19e,
+/*20031028 to latest
+水
+Water
+*/
+ MSG_PROPERTY_WATER = 0x19f,
+/*20031028 to latest
+地
+Earth
+*/
+ MSG_PROPERTY_EARTH = 0x1a0,
+/*20031028 to latest
+火
+Fire
+*/
+ MSG_PROPERTY_FIRE = 0x1a1,
+/*20031028 to latest
+風
+Wind
+*/
+ MSG_PROPERTY_WIND = 0x1a2,
+/*20031028 to latest
+毒
+Poison
+*/
+ MSG_PROPERTY_POISON = 0x1a3,
+/*20031028 to latest
+聖
+Holy
+*/
+ MSG_PROPERTY_SAINT = 0x1a4,
+/*20031028 to latest
+暗
+Shadow
+*/
+ MSG_PROPERTY_DARK = 0x1a5,
+/*20031028 to latest
+念
+Ghost
+*/
+ MSG_PROPERTY_MENTAL = 0x1a6,
+/*20031028 to latest
+死
+Undead
+*/
+ MSG_PROPERTY_UNDEAD = 0x1a7,
+/*20031028 to latest
+현재는 아이템을 만들 수 없습니다.
+You can't create items yet.
+*/
+ MSG_CANT_MAKE_ITEM = 0x1a8,
+/*20031028 to latest
+제조 목록
+Item List you can craft
+*/
+ MSG_MAKE_LIST = 0x1a9,
+/*20031028 to latest
+ 만들기
+ Create
+*/
+ MSG_MAKE_TARGET = 0x1aa,
+/*20031028 to latest
+ 에 필요한 재료:
+'s materials
+*/
+ MSG_REQUIRE_FOR_MAKE_TARGET = 0x1ab,
+/*20031028 to latest
+ 만들기 실패
+ item creation failed.
+*/
+ MSG_MAKE_TARGET_FAIL = 0x1ac,
+/*20031028 to latest
+ 만들기 성공
+ item created successfully.
+*/
+ MSG_MAKE_TARGET_SUCCEESS = 0x1ad,
+/*20031028 to latest
+%s 만들기를 실패하였습니다.
+ item creation failed.
+*/
+ MSG_MAKE_TARGET_FAIL_MSG = 0x1ae,
+/*20031028 to latest
+%s 만들기를 성공했습니다.
+ item created successfully.
+*/
+ MSG_MAKE_TARGET_SUCCEESS_MSG = 0x1af,
+/*20031028 to latest
+레벨이 부족합니다.
+You are not the required lvl.
+*/
+ MSG_NOT_ENOUGH_LEVEL = 0x1b0,
+/*20031028 to latest
+레벨이 너무 높습니다.
+Too high lvl for this job.
+*/
+ MSG_TOO_HIGH_LEVEL = 0x1b1,
+/*20031028 to latest
+직업이 적합하지 않습니다.
+Not the suitable job for this type of work.
+*/
+ MSG_NOT_ACCEPTABLE_JOB = 0x1b2,
+/*20031028 to latest
+토키 박스 트랩 메세지
+Record a message in the Talkie Box
+*/
+ MSG_TALKBOX_WINDOW = 0x1b3,
+/*20031028 to latest
+기록할 메세지를 입력하시기 바랍니다.
+Please type a message for the Talkie Box
+*/
+ MSG_TALKBOX_WINDOW_MSG = 0x1b4,
+/*20031028 to latest
+길드에게 보냄
+Send to Guild
+*/
+ MSG_SEND_TO_GUILD = 0x1b5,
+/*20031028 to latest
+결제된 계정이 아닙니다. 결제 페이지로 이동하시겠습니까?
+You didn't pay for this ID. Would you like to pay for it now?
+*/
+ MSG_NOT_SETTLED = 0x1b6,
+/*20031028 to latest
+서버가 혼잡한 관계로 잠시후 다시 시도해 주시기 바랍니다.
+Server is jammed due to overpopulation. Please try again after few minutes.
+*/
+ MSG_ACCOUNT_BUSY = 0x1b7,
+/*20031028 to latest
+지난 접속 정보가 남아 있습니다. 30초정도 지난뒤에 다시 시도해 주시기 바랍니다.
+Server still recognizes your last log-in. Please try again after a few minutes.
+*/
+ MSG_INFORMATION_REMAINED = 0x1b8,
+/*20031028 to latest
+매 풀어주기
+Release Falcon
+*/
+ MSG_BIRDOFF = 0x1b9,
+/*20031028 to latest
+페코페코 내리기
+Dismount
+*/
+ MSG_CHIKENOFF = 0x1ba,
+/*20031028 to latest
+小
+Small
+*/
+ MSG_SIZE_SMALL = 0x1bb,
+/*20031028 to latest
+中
+Med
+*/
+ MSG_SIZE_MIDDLE = 0x1bc,
+/*20031028 to latest
+大
+Big
+*/
+ MSG_SIZE_BIG = 0x1bd,
+/*20031028 to latest
+더블
+Double
+*/
+ MSG_DOUBLE = 0x1be,
+/*20031028 to latest
+트리플
+Triple
+*/
+ MSG_TRIPLE = 0x1bf,
+/*20031028 to latest
+쿼드로플
+Quadruple
+*/
+ MSG_QUADROPLE = 0x1c0,
+/*20031028 to latest
+%s 까지 로그인을 금지하고 있습니다.
+You are prohibited to log in until %s.
+*/
+ MSG_LOGIN_REFUSE_BLOCKED_UNTIL = 0x1c1,
+/*20031028 to latest
+의
+'s
+*/
+ MSG_MANUFACTURED_NORMAL_ITEM = 0x1c2,
+/*20031028 to latest
+의 파이어
+'s Fire
+*/
+ MSG_MANUFACTURED_FIRE_ITEM = 0x1c3,
+/*20031028 to latest
+의 아이스
+'s Ice
+*/
+ MSG_MANUFACTURED_ICE_ITEM = 0x1c4,
+/*20031028 to latest
+의 윈드
+'s Wind
+*/
+ MSG_MANUFACTURED_WIND_ITEM = 0x1c5,
+/*20031028 to latest
+의 어스
+'s Earth
+*/
+ MSG_MANUFACTURED_EARTH_ITEM = 0x1c6,
+/*20031028 to latest
+211.239.161.246
+38.144.194.2
+*/
+ MSG_ACCOUNT_ADDRESS = 0x1c7,
+/*20031028 to latest
+6900
+*/
+ MSG_ACCOUNT_PORT = 0x1c8,
+/*20031028 to 20171206
+http://www.ragnarok.co.kr
+20171213 to latest
+http://roz.gnjoy.com/
+http://www.ragnarok.co.kr
+*/
+ MSG_REGISTRATION_WEB_URL = 0x1c9,
+/*20031028 to latest
+%s 사용자 강제 종료
+Kill %s
+*/
+ MSG_BAN_USER = 0x1ca,
+/*20031028 to latest
+무지쎈
+Very Strong
+*/
+ MSG_ONE_STARPIECE = 0x1cb,
+/*20031028 to latest
+무지무지쎈
+Very Very Strong
+*/
+ MSG_TWO_STARPIECE = 0x1cc,
+/*20031028 to 20031028
+무지무지무지쎈
+20031103 to latest
+무무무쎈
+Very Very Very Strong
+*/
+ MSG_THREE_STARPIECE = 0x1cd,
+/*20031028 to latest
+길드 추방 사유
+The Reason of Expulsion
+*/
+ MSG_GUILD_KICK_REASON = 0x1ce,
+/*20031028 to latest
+ 공격 속도가 증가했습니다.
+Attack Speed is up.
+*/
+ MSG_INCATTACKSPEED = 0x1cf,
+/*20031028 to latest
+ 공격 속도가 감소했습니다.
+Attack Speed is down.
+*/
+ MSG_DECATTACKSPEED = 0x1d0,
+/*20031028 to latest
+ 무기의 공격력이 향상되었습니다.
+Weapon Damage is improved.
+*/
+ MSG_INCWEAPONATTACK = 0x1d1,
+/*20031028 to latest
+ 무기의 공격력이 감소되었습니다.
+Weapon Damage is reduced.
+*/
+ MSG_DECWEAPONATTACK = 0x1d2,
+/*20031028 to latest
+ 시전 딜레이가 줄었습니다.
+Cast Delay is reduced.
+*/
+ MSG_FASTPREDELAY = 0x1d3,
+/*20031028 to latest
+ 시전 딜레이가 정상으로 되었습니다.
+Cast Delay has returned to normal.
+*/
+ MSG_NORMALPREDELAY = 0x1d4,
+/*20031028 to latest
+ 무기에 독속성이 부여되었습니다.
+Weapon is temporarily enchanted with Poison.
+*/
+ MSG_WEAPONPROPERTYPOISON = 0x1d5,
+/*20031028 to latest
+ 무기에 성속성이 부여되었습니다.
+Weapon is temporarily enchanted with an elemental property.
+*/
+ MSG_WEAPONPROPERTYSAINT = 0x1d6,
+/*20031028 to latest
+ 무기의 원래속성이 적용되었습니다.
+Weapon has changed back to normal.
+*/
+ MSG_WEAPONPROPERTYORIGINAL = 0x1d7,
+/*20031028 to latest
+ 방어구에 성속성이 부여되었습니다.
+Armor has been enchanted with the Holy Ghost.
+*/
+ MSG_ARMORPROPERTYSAINT = 0x1d8,
+/*20031028 to latest
+ 방어구의 원래속성이 적용되었습니다.
+Armor has changed back to normal.
+*/
+ MSG_ARMORPROPERTYORIGINAL = 0x1d9,
+/*20031028 to latest
+ 배리어 상태가 되었습니다.
+Barrier Formed.
+*/
+ MSG_BARRIOR = 0x1da,
+/*20031028 to latest
+ 배리어 상태가 해제 되었습니다.
+Barrier Canceled.
+*/
+ MSG_DISAPPEARBARRIOR = 0x1db,
+/*20031028 to latest
+ 소형, 중형, 대형 몬스터에게 100% 공격력을 줍니다.
+Weapon Perfection Initiated.
+*/
+ MSG_PERFECTDAMAGE = 0x1dc,
+/*20031028 to latest
+ 웨폰퍼펙션 모드가 해제 되었습니다.
+Weapon perfection Canceled.
+*/
+ MSG_DISAPPEARPERFECTDAMAGE = 0x1dd,
+/*20031028 to latest
+ 무기가 파괴될 가능성이 높아진 대신 무기의 공격력이 증가하였습니다.
+Power-Thrust Initiated.
+*/
+ MSG_OVERTHRUSTING = 0x1de,
+/*20031028 to 20050118
+ 오버트러스팅 상태가 해제 되었습니다.
+20050124 to latest
+ 오버트러스트 상태가 해제 되었습니다.
+Power-Thrust Canceled.
+*/
+ MSG_DISAPPEAROVERTHRUSTING = 0x1df,
+/*20031028 to latest
+ 무기의 최대 성능을 끌어냅니다.
+Maximize-Power Initiated.
+*/
+ MSG_MAXIMIZE = 0x1e0,
+/*20031028 to latest
+ 맥시마이즈 상태가 해제 되었습니다.
+Maximize-Power Canceled.
+*/
+ MSG_DISAPPEARMAXIMIZE = 0x1e1,
+/*20031028 to latest
+[신서버]
+[New Server]
+*/
+ MSG_SERVER_PROPERTY_NEW = 0x1e2,
+/*20031028 to latest
+(%d 명)
+(%d players)
+*/
+ MSG_SERVER_USER_COUNT = 0x1e3,
+/*20031028 to latest
+(점검중)
+(On the maintenance)
+*/
+ MSG_SERVER_INSPECTING = 0x1e4,
+/*20031028 to latest
+길드멤버 %s님이 접속하셨습니다.
+Guild member %s has connected.
+*/
+ MSG_GUILD_MEMBER_STATUS_ONLINE = 0x1e5,
+/*20031028 to latest
+길드멤버 %s님이 종료하셨습니다.
+Guild member %s has disconnected.
+*/
+ MSG_GUILD_MEMBER_STATUS_OFFLINE = 0x1e6,
+/*20031028 to latest
+경험치 %d 얻음
+You got %d Base EXP.
+*/
+ MSG_GOT_EXPERIENCE_POINT = 0x1e7,
+/*20031028 to latest
+잡경험치 %d 얻음
+You got %d Job EXP.
+*/
+ MSG_GOT_JOB_EXPERIENCE_POINT = 0x1e8,
+/*20031028 to latest
+길드에서 탈퇴 했습니다.
+You left the guild.
+*/
+ MSG_LEFT_GUILD = 0x1e9,
+/*20031028 to latest
+길드에서 추방 당했습니다.
+You have been expelled from the Guild.
+*/
+ MSG_BAN_FROM_GUILD = 0x1ea,
+/*20031028 to latest
+아이템 감정 성공
+Item Appraisal has completed successfully.
+*/
+ MSG_ITEM_IDENTIFY_SUCCEESS = 0x1eb,
+/*20031028 to latest
+아이템 감정 실패
+Item appraisal has failed.
+*/
+ MSG_ITEM_IDENTIFY_FAIL = 0x1ec,
+/*20031028 to latest
+아이템 조합 성공
+Compounding has completed successfully.
+*/
+ MSG_ITEM_COMPOUNDING_SUCCEESS = 0x1ed,
+/*20031028 to latest
+아이템 조합 실패
+Compounding has failed.
+*/
+ MSG_ITEM_COMPOUNDING_FAIL = 0x1ee,
+/*20031028 to latest
+길드 적대 성공
+Antagonist has been set.
+*/
+ MSG_HOSTILE_GUILD_SUCCEESS = 0x1ef,
+/*20031028 to latest
+적대 길드수 초과로 길드 적대 실패
+Guild has too many Antagonists.
+*/
+ MSG_TOO_MANY_HOSTILE_GUILD = 0x1f0,
+/*20031028 to latest
+이미 적대 길드 입니다
+Already set as an Antagonist
+*/
+ MSG_ALREADY_REGISTERED_HOSTILE_GUILD = 0x1f1,
+/*20031028 to latest
+제련이 성공적으로 되었습니다.
+Upgrade has been completed successfully.
+*/
+ MSG_ITEM_REFINING_SUCCEESS = 0x1f2,
+/*20031028 to latest
+제련이 실패하였습니다.
+Upgrade has failed.
+*/
+ MSG_ITEM_REFINING_FAIL = 0x1f3,
+/*20031028 to 20040311
+텔레포트 불가능 지역입니다.
+20040315 to latest
+이곳에서는 순간이동이 불가능합니다.
+Unavailable Area to Teleport
+*/
+ MSG_IMPOSSIBLE_TELEPORT_AREA = 0x1f4,
+/*20031028 to 20040311
+텔레포트 가능 지역입니다.
+20040315 to latest
+이 장소는 기억할 수 없습니다.
+Unable to memorize this place as Warp Point
+*/
+ MSG_POSSIBLE_TELEPORT_AREA = 0x1f5,
+/*20031028 to latest
+지금은 종료할 수 없습니다.
+Please wait 10 seconds before trying to log out.
+*/
+ MSG_CANT_EXIT_NOW = 0x1f6,
+/*20031028 to latest
+직위
+Position
+*/
+ MSG_POSITION = 0x1f7,
+/*20031028 to latest
+직업
+Job
+*/
+ MSG_JOB = 0x1f8,
+/*20031028 to latest
+메모
+Note
+*/
+ MSG_MEMO = 0x1f9,
+/*20031028 to latest
+기여
+Devotion
+*/
+ MSG_CONTRIBUTION = 0x1fa,
+/*20031028 to latest
+상납경험치
+Tax Point
+*/
+ MSG_EXP_CONTIRIBUTION = 0x1fb,
+/*20031028 to latest
+길드탈퇴
+Leave Guild
+*/
+ MSG_LEAVE_GUILD = 0x1fc,
+/*20031028 to latest
+제명시키기
+Expel
+*/
+ MSG_EXPEL_GUILD = 0x1fd,
+/*20031028 to latest
+서열
+Rank
+*/
+ MSG_GRADE = 0x1fe,
+/*20031028 to latest
+직위명
+Position Title
+*/
+ MSG_POSITION_NAME = 0x1ff,
+/*20031028 to latest
+가입권한
+Invitation
+*/
+ MSG_JOIN_AUTHORITY = 0x200,
+/*20031028 to latest
+처벌권한
+Punish
+*/
+ MSG_PENALTY_AUTORITY = 0x201,
+/*20031028 to latest
+상납%
+Tax %
+*/
+ MSG_CONTRIBUTION_PERCENT = 0x202,
+/*20031028 to latest
+제목
+Title
+*/
+ MSG_TITLE = 0x203,
+/*20031028 to latest
+내용
+For
+*/
+ MSG_CONTENTS = 0x204,
+/*20031028 to latest
+길드이름
+Guild Name
+*/
+ MSG_GUILD_NAME = 0x205,
+/*20031028 to latest
+길드레벨
+Guild lvl
+*/
+ MSG_GUILD_LEVEL = 0x206,
+/*20031028 to latest
+조합원수
+Number of Members
+*/
+ MSG_GUILD_PEOPLE_COUNT = 0x207,
+/*20031028 to latest
+랭킹
+Ranking
+*/
+ MSG_RANKING = 0x208,
+/*20031028 to latest
+아이템 감정
+Item Appraisal
+*/
+ MSG_ITEM_IDENTIFY = 0x209,
+/*20031028 to latest
+아이템 조합
+Insert Card
+*/
+ MSG_ITEM_COMPOUNDING = 0x20a,
+/*20031028 to latest
+탈퇴 사유를 입력해주세요.
+Please enter the reason of Secession.
+*/
+ MSG_PLEASE_INPUT_WHY_LEAVING = 0x20b,
+/*20031028 to latest
+추방 사유를 입력해주세요.
+Please enter the reason of Expulsion.
+*/
+ MSG_PELASE_INPUT_WHY_EXPEL = 0x20c,
+/*20031028 to latest
+상점을 닫으세요.
+Please close Shop.
+*/
+ MSG_PLEASE_CLOSE_STORE = 0x20d,
+/*20031028 to latest
+스킬 이름
+Skill
+*/
+ MSG_SKILL_NAME = 0x20e,
+/*20031028 to latest
+아이템 이름
+Item Name
+*/
+ MSG_ITEM_NAME = 0x20f,
+/*20031028 to 20031118
+https://pay.ragnarok.co.kr
+20031119 to latest
+https://payment.ragnarok.co.kr
+https://pay.ragnarok.co.kr (Billing Web)
+*/
+ MSG_SETTLE_WEB_URL = 0x210,
+/*20031028 to latest
+게임방에서 사용가능한 IP개수가 모두 사용중입니다. 개인 계정으로 결제 하시겠습니까?
+IP capacity of this Internet Cafe is full. Would you like to pay the personal base?
+*/
+ MSG_BAN_IP_OVERFLOW = 0x211,
+/*20031028 to latest
+결제시간이 다되어 게임을 종료합니다.
+You are out of available paid playing time. Game will be shut down automatically.
+*/
+ MSG_BAN_PAY_OUT = 0x212,
+/*20031028 to latest
+이름이 너무 깁니다. 한글 11자 영문 23자 이내로 써주십시오.
+Name is too long. Please enter a name no greater than 23 english characters.
+*/
+ MSG_NAMELENGTH_TOO_LONG = 0x213,
+/*20031028 to latest
+deleted
+Character will be deleted in %d seconds.
+*/
+ MSG_DELETE_AFTER_10_SECOND = 0x214,
+/*20031028 to latest
+귀하는 개인 정액제 사용자입니다.
+You paid with the personal regular base.
+*/
+ MSG_BILLING_100 = 0x215,
+/*20031028 to latest
+귀하는 개인정량제 사용자입니다.
+You paid with the personal regular base. Available time is xx hrs xx mins xx secs.
+*/
+ MSG_BILLING_200 = 0x216,
+/*20031028 to latest
+귀하는 개인 무료 사용자입니다.
+You are free!
+*/
+ MSG_BILLING_300 = 0x217,
+/*20031028 to latest
+귀하는 개인 무료 허용기간 사용자입니다.
+You are free for the test, your available time is xx hrs xx mins xx secs.
+*/
+ MSG_BILLING_400 = 0x218,
+/*20031028 to latest
+귀하는 게임방 정액제 사용자입니다.
+You paid with the Internet Cafe regular base. Available time is xx hrs xx mins xx secs.
+*/
+ MSG_BILLING_500 = 0x219,
+/*20031028 to latest
+귀하는 게임방 정량제 사용자입니다.
+You paid with the Time Limit for Internet Cafe. Available time is xx hrs xx mins xx secs.
+*/
+ MSG_BILLING_501 = 0x21a,
+/*20031028 to latest
+귀하는 게임방 무료 허용기간 사용자입니다.
+You are free for the test of Internet Cafe version .
+*/
+ MSG_BILLING_600 = 0x21b,
+/*20031028 to latest
+귀하는 게임방 무료 사용자입니다.
+You are free for the Internet Cafe version.
+*/
+ MSG_BILLING_700 = 0x21c,
+/*20031028 to latest
+귀하는 종량제 사이트 이용자입니다.
+You paid on the Time Limit Website.
+*/
+ MSG_BILLING_800 = 0x21d,
+/*20031028 to latest
+이모션 목록
+Emotion icon List
+*/
+ MSG_EMOTION_LIST = 0x21e,
+/*20031028 to latest
+/이모션
+/emo
+*/
+ MSG_VIEW_EMOTION = 0x21f,
+/*20031028 to latest
+/!
+*/
+ MSG_EMOTION_SURPRISE = 0x220,
+/*20031028 to latest
+/?
+*/
+ MSG_EMOTION_QUESTION = 0x221,
+/*20031028 to latest
+/기쁨
+/ho
+*/
+ MSG_EMOTION_DELIGHT = 0x222,
+/*20031028 to latest
+/하트
+/lv
+*/
+ MSG_EMOTION_THROB = 0x223,
+/*20031028 to latest
+/왕하트
+/lv2
+*/
+ MSG_EMOTION_BIGTHROB = 0x224,
+/*20031028 to latest
+/땀
+/swt
+*/
+ MSG_EMOTION_SWEAT = 0x225,
+/*20031028 to latest
+/아하
+/ic
+*/
+ MSG_EMOTION_AHA = 0x226,
+/*20031028 to latest
+/짜증
+/an
+*/
+ MSG_EMOTION_FRET = 0x227,
+/*20031028 to latest
+/화
+/ag
+*/
+ MSG_EMOTION_ANGER = 0x228,
+/*20031028 to latest
+/돈
+/$
+*/
+ MSG_EMOTION_MONEY = 0x229,
+/*20031028 to latest
+/...
+*/
+ MSG_EMOTION_THINK = 0x22a,
+/*20031028 to latest
+/감사
+/thx
+*/
+ MSG_EMOTION_THANKS = 0x22b,
+/*20031028 to latest
+/꽥
+/wah
+*/
+ MSG_EMOTION_KEK = 0x22c,
+/*20031028 to latest
+/죄송
+/sry
+*/
+ MSG_EMOTION_SORRY = 0x22d,
+/*20031028 to latest
+/웃음
+/heh
+*/
+ MSG_EMOTION_SMILE = 0x22e,
+/*20031028 to latest
+/뻘뻘
+/swt2
+*/
+ MSG_EMOTION_PROFUSELY_SWEAT = 0x22f,
+/*20031028 to latest
+/긁적
+/hmm
+*/
+ MSG_EMOTION_SCRATCH = 0x230,
+/*20031028 to latest
+/최고
+/no1
+*/
+ MSG_EMOTION_BEST = 0x231,
+/*20031028 to latest
+/두리번
+/??
+*/
+ MSG_EMOTION_STARE_ABOUT = 0x232,
+/*20031028 to latest
+/헉
+/omg
+*/
+ MSG_EMOTION_HUK = 0x233,
+/*20031028 to latest
+/오
+/oh
+*/
+ MSG_EMOTION_O = 0x234,
+/*20031028 to latest
+/엑스
+/X
+*/
+ MSG_EMOTION_X = 0x235,
+/*20031028 to latest
+/헬프
+/hlp
+*/
+ MSG_EMOTION_HELP = 0x236,
+/*20031028 to latest
+/가
+/go
+*/
+ MSG_EMOTION_GO = 0x237,
+/*20031028 to latest
+/엉엉
+/sob
+*/
+ MSG_EMOTION_CRY = 0x238,
+/*20031028 to latest
+/킥킥
+/gg
+*/
+ MSG_EMOTION_KIK = 0x239,
+/*20031028 to latest
+/쪽
+/kis
+*/
+ MSG_EMOTION_CHUP = 0x23a,
+/*20031028 to latest
+/쪽쪽
+/kis2
+*/
+ MSG_EMOTION_CHUPCHUP = 0x23b,
+/*20031028 to latest
+/흥
+/pif
+*/
+ MSG_EMOTION_HNG = 0x23c,
+/*20031028 to latest
+/응
+/ok
+*/
+ MSG_EMOTION_OK = 0x23d,
+/*20031028 to latest
+단축키 목록
+Shortcut List
+*/
+ MSG_SHORTCUT_LIST = 0x23e,
+/*20031028 to latest
+귀하의 계정은 보류되었습니다.
+Your account is suspended.
+*/
+ MSG_BAN_PAY_SUSPEND = 0x23f,
+/*20031028 to latest
+과금 정책 변경으로 인해 일시 종료됩니다. 다시 접속하여 주시기 바랍니다.
+Your connection is terminated due to change in the billing policy. Please connect again.
+*/
+ MSG_BAN_PAY_CHANGE = 0x240,
+/*20031028 to latest
+어카운트 서버에 인증된 IP와 귀하의 IP가 달라 연결을 종료합니다.
+Your connection is terminated because your IP doesn't match the authorized IP from the account server.
+*/
+ MSG_BAN_PAY_WRONGIP = 0x241,
+/*20031028 to latest
+게임방 IP에서 개인 종량제 과금을 막기 위해 연결을 종료합니다. 개인 종량제 과금을 사용하기 위해서는 게임방IP로 등록이 되지 않은 IP를 사용해 주세요.
+Your connection is terminated to prevent charging from your account's play time.
+*/
+ MSG_BAN_PAY_PNGAMEROOM = 0x242,
+/*20031028 to latest
+귀하는 운영자에 의해 강제 종료 되었습니다.
+You have been forced to disconnect by the Game Master Team.
+*/
+ MSG_BAN_OP_FORCE = 0x243,
+/*20031028 to latest
+무게가 90%를 초과하여 스킬을 사용할 수 없습니다.
+You can't use this Skill because you are over your Weight Limit.
+*/
+ MSG_USESKILL_FAIL_WEIGHTOVER = 0x244,
+/*20031028 to latest
+무명
+Nameless
+*/
+ MSG_NAMELESS_USER = 0x245,
+/*20031028 to latest
+축하합니다. %s님의 현재 랭킹이 %d위로 상승하였습니다.
+Congratulations! %s ranking has gone up to %d.
+*/
+ MSG_RANK_IN_TEN = 0x246,
+/*20031028 to latest
+안타깝게도 %s님의 현재 랭킹이 %d위로 하락하였습니다.
+What a pity! %s ranking has gone down to %d.
+*/
+ MSG_RANK_OUT_TEN = 0x247,
+/*20031028 to latest
+Pet Info
+*/
+ MSG_PET_INFO = 0x248,
+/*20031028 to latest
+만복도
+Hunger
+*/
+ MSG_PET_HUNGRY = 0x249,
+/*20031028 to latest
+친밀도
+Intimacy
+*/
+ MSG_PET_FRIENDLY = 0x24a,
+/*20031028 to latest
+상점과 채팅방을 동시에 열수 없습니다.
+Please avoid opening a chatroom while vending.
+*/
+ MSG_CANT_OPEN_STORE_WHILE_CHAT = 0x24b,
+/*20031028 to latest
+개
+Total
+*/
+ MSG_EA4 = 0x24c,
+/*20031028 to latest
+%s 를 전투불능으로 만들었습니다.
+You have knocked down %s.
+*/
+ MSG_SLAIN = 0x24d,
+/*20031028 to latest
+%s 님에 의해 전투불능 상태가 되었습니다.
+You have been knocked down by %s.
+*/
+ MSG_SLAINBY = 0x24e,
+/*20031028 to latest
+먹이 - '%s' 아이템이 존재하지 않습니다..
+Feed - "%s" is not available.
+*/
+ MSG_NOT_EXIST_PET_FOOD = 0x24f,
+/*20031028 to latest
+먹이 주기
+Feed Pet
+*/
+ MSG_PET_FEEDING = 0x250,
+/*20031028 to latest
+퍼포먼스
+Performance
+*/
+ MSG_PET_PERFORMANCE = 0x251,
+/*20031028 to latest
+알로 되돌리기
+Return to Egg Shell
+*/
+ MSG_PET_RETURN_EGG = 0x252,
+/*20031028 to latest
+악세사리 해제
+Unequip Accessory
+*/
+ MSG_PET_ACC_OFF = 0x253,
+/*20031028 to latest
+Pet 상태 보기
+Check Pet Status
+*/
+ MSG_PET_SHOWINFO = 0x254,
+/*20031028 to latest
+악세사리
+Accessory
+*/
+ MSG_PET_ACCESSARY = 0x255,
+/*20031028 to latest
+장착됨
+Equipped
+*/
+ MSG_ITEM_EQUIPED = 0x256,
+/*20031028 to latest
+펫 리스트
+Pet List
+*/
+ MSG_PET_EGG_LIST = 0x257,
+/*20031028 to latest
+장착 안됨
+Unequipped
+*/
+ MSG_ITEM_UNEQUIPED = 0x258,
+/*20031028 to latest
+정말로 먹이를 주시겠습니까?
+Are you sure that you want to feed your pet?
+*/
+ MSG_SURE_TO_FEED_PET = 0x259,
+/*20031028 to latest
+가격을 쓰실땐 숫자(0~9)만 써주십시오.
+Only the numbers (0~9) are available.
+*/
+ MSG_CAN_INPUT_NUMBER_ONLY = 0x25a,
+/*20031028 to latest
+감정되지 않은 아이템은 판매할 수 없습니다.
+You cannot sell unidentified items.
+*/
+ MSG_CANT_SELL_UNIDENTIFIED_ITEM = 0x25b,
+/*20031028 to latest
+가격이 0 Zeny인 아이템이 존재합니다. 계속 하시겠습니까?
+Item at 0 Zeny exists. Do you wish to continue?
+*/
+ MSG_YOU_HAVE_FREE_ITEM_ON_SHOP = 0x25c,
+/*20031028 to latest
+[새로 추가된 이모션 리스트]
+[New Emotion List]
+*/
+ MSG_NEW_EMOTION_LIST = 0x25d,
+/*20031028 to latest
+일본쪽 베타 사용자들에게 전하는 메세지. -> 겅호에서 재가입 하세요.
+N/A
+*/
+ MSG_BAN_JAPAN_REFUSE1 = 0x25e,
+/*20031028 to latest
+일본쪽 과금이 종료된 사용자들에게 전하는 메세지. -> 돈내라. 두 번내라.
+N/A
+*/
+ MSG_BAN_JAPAN_REFUSE2 = 0x25f,
+/*20031028 to latest
+같은 계정의 캐릭터가 이미 가입되어있습니다.
+Character in the same account already joined.
+*/
+ MSG_ALREADY_SAME_AID_JOINED = 0x260,
+/*20031028 to latest
+(%d 명) - 만18세이상
+(%d ppl) - over the age 18
+*/
+ MSG_SERVER_PROPERTY_ADULT = 0x261,
+/*20031028 to latest
+ 프로보크 상태가 되었습니다.
+Provoke initiated.
+*/
+ MSG_ENST_PROVOKE = 0x262,
+/*20031028 to latest
+ 프로보크 상태가 해제되었습니다.
+Provoke canceled.
+*/
+ MSG_DSST_PROVOKE = 0x263,
+/*20031028 to latest
+ 인듀어 상태가 되었습니다.
+Endure initiated.
+*/
+ MSG_ENST_ENDURE = 0x264,
+/*20031028 to latest
+ 인듀어 상태가 해제되었습니다.
+Endure canceled.
+*/
+ MSG_DSST_ENDURE = 0x265,
+/*20031028 to latest
+ 집중력 향상 상태가 되었습니다.
+Improve Concentration initiated.
+*/
+ MSG_ENST_CONCENTRATION = 0x266,
+/*20031028 to latest
+ 집중력 향상 상태가 해제되었습니다.
+Improve Concentration canceled.
+*/
+ MSG_DSST_CONCENTRATION = 0x267,
+/*20031028 to latest
+ 하이딩 상태가 되었습니다.
+Hiding Initiated.
+*/
+ MSG_ENST_HIDING = 0x268,
+/*20031028 to latest
+ 하이딩 상태가 해제되었습니다.
+Hiding Canceled.
+*/
+ MSG_DSST_HIDING = 0x269,
+/*20031028 to latest
+ 클로킹 상태가 되었습니다.
+Cloaking initiated.
+*/
+ MSG_ENST_CLOAKING = 0x26a,
+/*20031028 to latest
+ 클로킹 상태가 해제되었습니다.
+Cloaking canceled.
+*/
+ MSG_DSST_CLOAKING = 0x26b,
+/*20031028 to latest
+ 독을 반사 할 수 있는 상태가 되었습니다.
+Poison React initiated.
+*/
+ MSG_ENST_POISONREACT = 0x26c,
+/*20031028 to latest
+ 포이즌 리액트 상태가 해제되었습니다.
+Poison React canceled.
+*/
+ MSG_DSST_POISONREACT = 0x26d,
+/*20031028 to latest
+ 이동속도가 감소하였습니다.
+Speed reduced.
+*/
+ MSG_ENST_QUAGMIRE = 0x26e,
+/*20031028 to latest
+ 콰그마이어 상태가 해제되었습니다.
+Quagmire canceled.
+*/
+ MSG_DSST_QUAGMIRE = 0x26f,
+/*20031028 to latest
+ 방어력이 증가되었습니다.
+Defense increased.
+*/
+ MSG_ENST_ANGELUS = 0x270,
+/*20031028 to 20031223
+ 안젤루스 상태가 해제돼었습니다.
+20031229 to latest
+ 안젤루스 상태가 해제되었습니다.
+Angelus canceled.
+*/
+ MSG_DSST_ANGELUS = 0x271,
+/*20031028 to latest
+ 힘과 지능, 덱스가 증가하였습니다.
+Blessing aligned.
+*/
+ MSG_ENST_BLESSING = 0x272,
+/*20031028 to latest
+ 블레싱 상태가 해제되었습니다.
+Blessing canceled.
+*/
+ MSG_DSST_BLESSING = 0x273,
+/*20031028 to latest
+ 시그넘 크루시스를 사용하였습니다.
+Signum Crusis initiated.
+*/
+ MSG_ENST_CRUCIS = 0x274,
+/*20031028 to latest
+ 시그넘 크루시스 상태가 해제되었습니다.
+Signum Crusis canceled.
+*/
+ MSG_DSST_CRUCIS = 0x275,
+/*20031028 to latest
+ 독이 퍼지는 속도가 느려졌습니다.
+Slow Poison initiated.
+*/
+ MSG_ENST_SLOWPOISON = 0x276,
+/*20031028 to latest
+ 슬로우 포이즌 상태가 해제되었습니다.
+Slow Poison Canceled.
+*/
+ MSG_DSST_SLOWPOISON = 0x277,
+/*20031028 to latest
+ SP의 회복 속도가 향상 되었습니다.
+HP/SP recovery increased.
+*/
+ MSG_ENST_MAGNIFICAT = 0x278,
+/*20031028 to latest
+ 마니피캇 상태가 해제되었습니다.
+Magnificat canceled.
+*/
+ MSG_DSST_MAGNIFICAT = 0x279,
+/*20031028 to latest
+ 행운이 향상되었습니다.
+Luck increased.
+*/
+ MSG_ENST_GLORIA = 0x27a,
+/*20031028 to latest
+ 글로리아 상태가 해제되었습니다.
+Gloria canceled.
+*/
+ MSG_DSST_GLORIA = 0x27b,
+/*20031028 to latest
+ 1회 공격에 두 배 데미지를 받는 상태가 되었습니다.
+You will received double damage from all attacking opponents.
+*/
+ MSG_ENST_LEXAETERNA = 0x27c,
+/*20031028 to latest
+ 렉스에테르나 상태가 해제되었습니다.
+Lex Eterna canceled.
+*/
+ MSG_DSST_LEXAETERNA = 0x27d,
+/*20031028 to latest
+ 공격속도가 증가하였습니다.
+Attack Speed increased.
+*/
+ MSG_ENST_ADRENALINE = 0x27e,
+/*20031028 to latest
+ 공격속도가 감소하였습니다.
+Attack Speed reduced.
+*/
+ MSG_DSST_ADRENALINE = 0x27f,
+/*20031028 to latest
+ 페코에 올라 탔습니다.
+You've just been on a Peco Peco.
+*/
+ MSG_ENST_RIDING = 0x280,
+/*20031028 to latest
+ 페코에서 내렸습니다.
+You've just got off of a Peco Peco.
+*/
+ MSG_DSST_RIDING = 0x281,
+/*20031028 to latest
+ 팔콘을 장착하였습니다.
+You've just carried a Falcon with.
+*/
+ MSG_ENST_FALCON = 0x282,
+/*20031028 to latest
+ 팔콘을 풀어주었습니다.
+You've just released a Falcon.
+*/
+ MSG_DSST_FALCON = 0x283,
+/*20031028 to latest
+ 죽은척하기 상태가 되었습니다.
+Play Dead initiated.
+*/
+ MSG_ENST_TRICKDEAD = 0x284,
+/*20031028 to latest
+ 죽은척하기 상태가 해제되었습니다.
+Play Dead canceled.
+*/
+ MSG_DSST_TRICKDEAD = 0x285,
+/*20031028 to latest
+ 힘이 강해졌습니다.
+STR improved.
+*/
+ MSG_ENST_SHOUT = 0x286,
+/*20031028 to latest
+ 힘이 원래대로 돌아왔습니다.
+STR turned back to normal.
+*/
+ MSG_DSST_SHOUT = 0x287,
+/*20031028 to latest
+ 에너지코트 상태가 되었습니다.
+Energy Coat initiated.
+*/
+ MSG_ENST_ENERGYCOAT = 0x288,
+/*20031028 to latest
+ 에너지코트 상태가 해제되었습니다.
+Energy Coat canceled.
+*/
+ MSG_DSST_ENERGYCOAT = 0x289,
+/*20031028 to latest
+ 방어구가 파괴되었습니다.
+Armor destroyed.
+*/
+ MSG_ENST_BROKENAMOR = 0x28a,
+/*20031028 to latest
+ ...
+Weapon has just been released from destroyed status.
+*/
+ MSG_DSST_BROKENAMOR = 0x28b,
+/*20031028 to latest
+ 무기가 파괴되었니다.
+Weapon destroyed.
+*/
+ MSG_ENST_BROKENWEAPON = 0x28c,
+/*20031028 to latest
+ ...
+Weapon has just been released from destroyed status.
+*/
+ MSG_DSST_BROKENWEAPON = 0x28d,
+/*20031028 to latest
+ 환영상태가 되었습니다.
+Invisibility initiated.
+*/
+ MSG_ENST_ILLUSION = 0x28e,
+/*20031028 to latest
+ 환영상태가 해제되었습니다.
+Invisibility canceled.
+*/
+ MSG_DSST_ILLUSION = 0x28f,
+/*20031028 to latest
+과금 정보 처리가 늦어지고 있어 접속이 지연되고 있습니다. 잠시 후에 다시 시도해 주시기 바랍니다.
+Sorry. It is delayed due to the process of payment. Please re-connect in a minute.
+*/
+ MSG_REFUSE_BLOCK_TEMPORARY = 0x290,
+/*20031028 to 20060403
+장착된 화살을 해제 하여야 합니다.
+20060410 to 20061009
+장착된 화살 또는 탄환을 해제 하여야 합니다.
+20061016 to latest
+장착된 화살/탄환/수리검 을 해제해야합니다.
+You must unequip ammunition first.
+*/
+ MSG_UNEQUIP_ARROW = 0x291,
+/*20031028 to latest
+화살 목록
+Arrow List
+*/
+ MSG_ARROW_LIST = 0x292,
+/*20031028 to latest
+카트 목록
+Cart List
+*/
+ MSG_CART_LIST = 0x293,
+/*20031028 to latest
+카트를 장착한 상태여야 합니다.
+You must have a Pushcart.
+*/
+ MSG_MUST_EQUIP_CART = 0x294,
+/*20031028 to latest
+채팅방을 개설 할 수 없습니다.
+You cannot open a Chat Window.
+*/
+ MSG_CANT_MAKE_CHAT_ROOM = 0x295,
+/*20031028 to latest
+라그나로크 홈페이지로 접속하여 계정을 만듭니다. 처음 계정을 만드시면 3일 동안은 무료로 이용하실 수 있습니다.
+Registering an account is the first step to accessing the game. Do you want to visit the registration page now?
+*/
+ MSG_3DAY_FREE = 0x296,
+/*20031028 to latest
+앉은 상태에서는 이 아이템을 사용할 수 없습니다.
+You cannot use this item while sitting.
+*/
+ MSG_CANT_USE_WHEN_SITDOWN = 0x297,
+/*20031028 to 20040413
+운영자에 의한 채팅 및 스킬 금지가 %d 분간 남아 있습니다.
+20040419 to 20040714
+운영자에 의한 채팅, 스킬, 아이템 사용금지가 %d 분간 남아 있습니다.
+20040726 to latest
+채팅, 스킬, 아이템 사용금지가 %d 분간 남아 있습니다.
+Your use of skills and chat will be blocked for the next %d minutes.
+*/
+ MSG_BAD_MANNER_REMAIN = 0x298,
+/*20031028 to 20040413
+운영자에 의한 채팅 및 스킬 금지가 해지 되었습니다.
+20040419 to 20040714
+운영자에 의한 채팅, 스킬, 아이템 사용금지가 해지 되었습니다.
+20040726 to latest
+채팅, 스킬, 아이템 사용금지가 해지 되었습니다.
+Your use of skills and chat have been reinstated.
+*/
+ MSG_BAD_MANNER_END = 0x299,
+/*20031028 to latest
+-[장착안됨]
+- [Not equipped]
+*/
+ MSG_REF_UNEQUIP = 0x29a,
+/*20031028 to latest
+배고픔
+Very Hungry
+*/
+ MSG_VERY_HUNGRY = 0x29b,
+/*20031028 to latest
+출출함
+Hungry
+*/
+ MSG_HUNGRY = 0x29c,
+/*20031028 to latest
+보통
+Normal
+*/
+ MSG_NORMAL = 0x29d,
+/*20031028 to latest
+배부름
+Satisfied
+*/
+ MSG_REPLETE = 0x29e,
+/*20031028 to latest
+아주 배부름
+Stuffed
+*/
+ MSG_VERY_REPLETE = 0x29f,
+/*20031028 to latest
+서먹서먹함
+Awkward
+*/
+ MSG_VERY_AWKWARD = 0x2a0,
+/*20031028 to latest
+어색함
+Shy
+*/
+ MSG_AWKWARD = 0x2a1,
+/*20031028 to latest
+친함
+Cordial
+*/
+ MSG_FRIENDLY = 0x2a2,
+/*20031028 to latest
+절친함
+Loyal
+*/
+ MSG_VERY_FRIENDLY = 0x2a3,
+/*20031028 to latest
+알수 없음
+Unknown
+*/
+ MSG_UNKNOWN = 0x2a4,
+/*20031028 to 20080513
+(태국)귀하는 앞으로 %일 %d시간 %d분 사용이 가능합니다.
+20080514 to latest
+귀하는 앞으로 %일 %d시간 %d분 사용이 가능합니다.
+Your account has play time of %d day %d hour %d minute.
+*/
+ MSG_BILLING_DAY_HOUR_MINUTES = 0x2a5,
+/*20031028 to 20080513
+(태국)이 계정은 이미 다른 어카운트 서버로 접속한 상태입니다.
+20080514 to latest
+이 계정은 이미 다른 어카운트 서버로 접속한 상태입니다.
+Your account is already connected to account server.
+*/
+ MSG_BAN_INFORMATION_REMAINED_ANOTHER_ACCOUNT = 0x2a6,
+/*20031028 to 20080513
+(태국)귀하는 앞으로 %d시간 %d분 사용이 가능합니다.
+20080514 to latest
+귀하는 앞으로 %d시간 %d분 사용이 가능합니다.
+Your account has play time of %d hour %d minute.
+*/
+ MSG_BILLING_HOUR_MINUTES = 0x2a7,
+/*20031028 to 20080513
+(태국)귀하는 무료 사용자 입니다.
+20080514 to latest
+귀하는 무료 사용자 입니다.
+Your account is a free account.
+*/
+ MSG_BILLING_FREE_USER = 0x2a8,
+/*20031028 to 20080513
+(태국)이 계정으로 사크라이에 접속할수 없습니다.
+20080514 to latest
+이 계정으로 사크라이에 접속할수 없습니다.
+This account can't connect the Sakray server.
+*/
+ MSG_REFUSE_NONSAKRAY_ID_BLOCKED = 0x2a9,
+/*20031028 to latest
+펫의 이름은 영문 23, 한글 11자 이내로 정해 주세요.
+Your pet name must be 23 characters or less.
+*/
+ MSG_PETNAME_IN23 = 0x2aa,
+/*20031028 to latest
+이름은 단 한번만 바꿀수 있습니다. 펫 이름을 ^0000ff^0000ff %s^000000^000000 로 수정합니다. 계속 하시겠습니까?
+You may change your pet's name only once. Your pet's name will be changed to ^0000ff^0000ff %s^000000^000000. Do you wish to continue?
+*/
+ MSG_PETNAME_CHANGE_ONLYONCE = 0x2ab,
+/*20031028 to latest
+/폰트
+/font
+*/
+ MSG_NAMEBALLOON_TYPE = 0x2ac,
+/*20031028 to latest
+길드에 남은 제니가 부족하여 작업이 실패하였습니다.
+Your guild lacks the funds to pay for this venture.
+*/
+ MSG_GUILDZENY_NOT_ENOUGH = 0x2ad,
+/*20031028 to latest
+길드가 소유할 수 있는 최대 금액을 초과하여 작업이 실패하였습니다.
+Your guild zeny limit prevents you from performing this action.
+*/
+ MSG_GUILDZENY_OVER = 0x2ae,
+/*20031028 to latest
+이펙트 간략화 On
+Simplified effects have been activated.
+*/
+ MSG_MINEFFECT_ON = 0x2af,
+/*20031028 to latest
+이펙트 간략화 Off
+Simplified effects have been deactivated.
+*/
+ MSG_MINEFFECT_OFF = 0x2b0,
+/*20031028 to latest
+자본금
+Required Fee
+*/
+ MSG_CAPITAL = 0x2b1,
+/*20031028 to latest
+아이템을 바닥에 버리려면, 아이템 창을 열어 주십시오.
+If you wish to drop an item, you must first open your Item Window (alt+e).
+*/
+ MSG_OPEN_ITEMWND_TO_THROW = 0x2b2,
+/*20031028 to latest
+PC방 요금이 종료하여 개인 요금제로 전환합니다. 개인 요금으로 게임을 계속 하시겠습니까?
+Internet Cafe Time Plan has been ended. Would you like to continue the game with your personal play time?
+*/
+ MSG_ASK_PNGAMEROOM = 0x2b3,
+/*20031028 to 20100928
+
+20081008 to latest
+
+Current admission application state.
+*/
+ MSG_REPLY_REMAINTIME = 0x2b4,
+/*20031028 to 20100928
+
+20081008 to latest
+
+Current admission application state.
+*/
+ MSG_INFO_REMAINTIME = 0x2b5,
+/*20031028 to latest
+돈이 모자라거나, 가질 수 있는 최대 금액을 초과하였습니다.
+Your lack of zeny or your zeny limit have prevented you from performing this action.
+*/
+ MSG_OVER_OR_LOW_MONEY = 0x2b6,
+/*20031028 to latest
+전투불능 상태가 되었습니다. esc키를 누르시면 선택창이 뜹니다.
+Your character has fainted. Push the ESC key to restart.
+*/
+ MSG_PRESS_ESC_TO_RESTART = 0x2b7,
+/*20031028 to latest
+ %d 개 획득
+- %d obtained.
+*/
+ MSG_EA_OBTAIN = 0x2b8,
+/*20031028 to latest
+스펠 리스트
+Spell List
+*/
+ MSG_SPELL_LIST = 0x2b9,
+/*20031028 to latest
+/최소화
+/minimize
+*/
+ MSG_MINEFFECT = 0x2ba,
+/*20031028 to latest
+이 아이템은 손상되어 있습니다..
+This item has been damaged.
+*/
+ MSG_DAMAGED_ITEM = 0x2bb,
+/*20031028 to latest
+/noshift : 쉬프트를 누르지않고 힐로 적을 공격할수있게됩니다 On Off
+/noshift: You may use your ''force heal'' ability without the Shift key. On | Off
+*/
+ MSG_EXPLAIN_NOSHIFT = 0x2bc,
+/*20031028 to 20040223
+시프트를 누르지 않고도 힐로 몬스터를 공격할수 있습니다 [ON]
+20040225 to latest
+시프트를 누르지 않고도 힐로 언데드를 공격할수 있습니다 [/ns ON]
+[no shift] option activated. [ON]
+*/
+ MSG_NOSHIFT_ON = 0x2bd,
+/*20031028 to 20040223
+시프트를 누르지 않고도 힐로 몬스터를 공격할수 있습니다 [OFF]
+20040225 to 20040315
+시프트를 누르지 않고도 힐로 언데드를 공격할수 있습니다 [/ns OFF]
+20040322 to latest
+시프트를 눌러야 힐로 언데드를 공격할수 있습니다 [/ns OFF]
+[no shift] option deactivated. [OFF]
+*/
+ MSG_NOSHIFT_OFF = 0x2be,
+/*20031028 to latest
+MSI_REFUSE_BAN_BY_DBA
+*/
+ MSG_REFUSE_BAN_BY_DBA = 0x2bf,
+/*20031028 to latest
+MSI_REFUSE_EMAIL_NOT_CONFIRMED
+*/
+ MSG_REFUSE_EMAIL_NOT_CONFIRMED = 0x2c0,
+/*20031028 to latest
+MSI_REFUSE_BAN_BY_GM
+*/
+ MSG_REFUSE_BAN_BY_GM = 0x2c1,
+/*20031028 to latest
+MSI_REFUSE_TEMP_BAN_FOR_DBWORK
+*/
+ MSG_REFUSE_TEMP_BAN_FOR_DBWORK = 0x2c2,
+/*20031028 to latest
+MSI_REFUSE_SELF_LOCK
+*/
+ MSG_REFUSE_SELF_LOCK = 0x2c3,
+/*20031028 to latest
+MSI_REFUSE_NOT_PERMITTED_GROUP
+*/
+ MSG_REFUSE_NOT_PERMITTED_GROUP = 0x2c4,
+/*20031028 to latest
+MSI_REFUSE_WAIT_FOR_SAKRAY_ACTIVE
+*/
+ MSG_REFUSE_WAIT_FOR_SAKRAY_ACTIVE = 0x2c5,
+/*20031028 to latest
+/aura : 오오라를 간략화 시킬수있습니다 On Off
+/aura: Simplify Aura effect On | Off
+*/
+ MSG_EXPLAIN_AURA = 0x2c6,
+/*20031028 to latest
+오오라가 정상적으로 표시됩니다 [오오라 ON]
+Turn On Aura [Aura ON]
+*/
+ MSG_AURA_ON = 0x2c7,
+/*20031028 to latest
+오오라가 간략화되서 표시됩니다 [오오라 OFF]
+Simplify Aura enabled. [ON]
+*/
+ MSG_AURA_OFF = 0x2c8,
+/*20031028 to latest
+채팅금지 기록 %d 회
+Chat block record %d times
+*/
+ MSG_PROHIBIT_LOG = 0x2c9,
+/*20031028 to latest
+채팅 금지 리스트
+Chat block list
+*/
+ MSG_PROHIBIT_LIST = 0x2ca,
+/*20031028 to latest
+/이름표시 or /showname : 캐릭터의 이름 표시 방식을 변경합니다.
+/showname: Change the name font type.
+*/
+ MSG_EXPLAIN_SHOWNAMETYPE = 0x2cb,
+/*20031028 to latest
+/noctrl : 콘트롤을 누르지않아도 자동공격이 됩니다. On Off
+/noctrl | /nc: Auto attack without pressing ctrl key. On | Off
+*/
+ MSG_EXPLAIN_NOCTRL = 0x2cc,
+/*20031028 to 20040223
+콘트롤을 누르지 않아도 자동공격을 합니다 [자동공격 ON]
+20040225 to latest
+콘트롤을 누르지 않아도 자동공격을 합니다 [/nc ON]
+Use auto attack without Ctrl. [Auto attack ON]
+*/
+ MSG_NOCTRL_ON = 0x2cd,
+/*20031028 to 20040223
+콘트롤을 눌러야 자동공격을 합니다 [자동공격 OFF]
+20040225 to latest
+콘트롤을 눌러야 자동공격을 합니다 [/nc OFF]
+Use auto attack with Ctrl. [Auto attack OFF]
+*/
+ MSG_NOCTRL_OFF = 0x2ce,
+/*20031028 to latest
+채팅 금지 주기
+Mute this player.
+*/
+ MSG_APPEND_PROHIBIT = 0x2cf,
+/*20031028 to latest
+채팅 금지 완전 풀기 & 로그 삭제
+Unmute player & Erase mute time.
+*/
+ MSG_ERASE_PROHIBIT = 0x2d0,
+/*20031028 to latest
+채팅 금지 시간 줄이기(로그 삭제 안됨)
+Decrease Player Mute time.
+*/
+ MSG_REDUCE_PROHIBIT = 0x2d1,
+/*20031028 to latest
+폰트가 정상적으로 바뀌었습니다 [이름표시방식 1]
+Normal Font Displayed. [showname type 1]
+*/
+ MSG_SHOWNAME_ON = 0x2d2,
+/*20031028 to latest
+폰트가 가늘게 바뀌면서 파티명도 표시됩니다 [이름표시방식 2]
+Font will be thin and party name will be shown [showname type 2]
+*/
+ MSG_SHOWNAME_OFF = 0x2d3,
+/*20031028 to latest
+/doridori : 연속해서 이 명령어를 쳐주면 캐릭터가 도리도리 ^^;;
+/doridori: Shake head
+*/
+ MSG_EXPLAIN_DORIDORI = 0x2d4,
+/*20031028 to latest
+인터넷 카페에서 과금을 하고 있습니다.
+Internet room is paying now.
+*/
+ MSG_BILLING_INTERNET_CAFE = 0x2d5,
+/*20031028 to latest
+정액제 과금은 %d일 %d시간 %d분이 남았습니다.
+종량제 과금은 %d시간 %d분이 남았습니다.
+Prepaid voucher validate until %d days %d hours %d minutes later.
+Time limit voucher validate untill %d hours %d minutes later.
+*/
+ MSG_BILLING_BOTH = 0x2d6,
+/*20031028 to latest
+/bingbing : 연속해서 이 명령어를 쳐주면 캐릭터가 빙글빙글 ^^;;
+/bingbing: Rotates player counter clockwise.
+*/
+ MSG_EXPLAIN_BINGBING = 0x2d7,
+/*20031028 to latest
+/bangbang : 연속해서 이 명령어를 쳐주면 캐릭터가 뱅글뱅글 ^^;;
+/bangbang: Rotates player clockwise.
+*/
+ MSG_EXPLAIN_BANGBANG = 0x2d8,
+/*20031028 to latest
+/skillfail : 빨간색의 스킬사용 실패 메세지를 표시하지 않습니다 On Off
+/skillfail: Display red font message when skill fails. On | Off
+*/
+ MSG_EXPLAIN_SKILLFAIL = 0x2d9,
+/*20031028 to 20040223
+스킬사용 실패 메세지를 표시합니다 [표시 ON]
+20040225 to latest
+스킬사용 실패 메세지를 표시합니다 [/sf ON]
+Skill fail messages will be displayed. [Display On]
+*/
+ MSG_SKILLFAIL_ON = 0x2da,
+/*20031028 to 20040223
+스킬사용 실패 메세지를 표시하지 않습니다 [표시 OFF]
+20040225 to latest
+스킬사용 실패 메세지를 표시하지 않습니다 [/sf OFF]
+Skill fail messages will not be displayed. [Display OFF]
+*/
+ MSG_SKILLFAIL_OFF = 0x2db,
+/*20031028 to latest
+/notalkmsg : 채팅내용을 채팅창에 표시하지 않습니다 On Off
+/notalkmsg: Chat will not be displayed in chat window. On | Off
+*/
+ MSG_EXPLAIN_NOTALKMSG = 0x2dc,
+/*20031028 to 20040223
+채팅내용을 채팅창에 표시합니다 [표시 ON]
+20040225 to latest
+채팅내용을 채팅창에 표시합니다 [/nm ON]
+Chat content will be displayed in the chat window. [Display ON]
+*/
+ MSG_NOTALKMSG_ON = 0x2dd,
+/*20031028 to 20040223
+채팅내용을 채팅창에 표시하지않습니다 [표시 OFF]
+20040225 to latest
+채팅내용을 채팅창에 표시하지않습니다 [/nm OFF]
+Chat content will not be displayed in the chat window. [Display OFF]
+*/
+ MSG_NOTALKMSG_OFF = 0x2de,
+/*20031028 to 20040423
+/set1 : /noctrl + /showname + /skillfail
+20040426 to 20040707
+/set1 : /noctrl + /showname + /skillfail , /set2 : + /q3
+20040707 to latest
+/set1 : /nc + /showname + /sf + /wi, /set2 : + /q3
+/set1: /noctrl + /showname + /skillfail
+*/
+ MSG_EXPLAIN_SET1 = 0x2df,
+/*20031028 to latest
+/fog : FOG이펙트를 키거나 끌수있습니다 On Off
+/fog: Fog effect. On | Off
+*/
+ MSG_EXPLAIN_FOG = 0x2e0,
+/*20031028 to latest
+ 청혼을 해왔습니다. 승낙하시겠습니까?
+You have received a marriage proposal. Do you accept?
+*/
+ MSG_SUGGEST_COUPLE = 0x2e1,
+/*20031028 to latest
+아이템 분배 방식
+Item sharing type
+*/
+ MSG_HOWITEMDIV = 0x2e2,
+/*20031028 to latest
+각자 취득
+Individual
+*/
+ MSG_ITEMDIV1 = 0x2e3,
+/*20031028 to latest
+균등하게 분배
+Shared
+*/
+ MSG_ITEMDIV2 = 0x2e4,
+#if PACKETVER >= 20031103
+/*20031103 to latest
+nProtect KeyCrypt
+*/
+ MSG_KEYCRYPT = 0x2e5,
+/*20031103 to latest
+Keyboard Driver가 검출되었습니다.
+
+키보드 보안 입력을 위해 추가기능을 설치하시겠습니까?
+
+(추가기능 설치후, 시스템 reboot 필수)
+Keyboard Driver has been detected.
+
+Do you want to install a program for keyboard security?
+
+(After installation, System Reboot is required)
+*/
+ MSG_KEYCRYPT_INSTALL_KEYDRIVER = 0x2e6,
+/*20031103 to latest
+설치가 완료 되었습니다.
+
+시스템을 Reboot 합니다.
+Installation has been completed.
+
+System will be rebooted.
+*/
+ MSG_KEYCRYPT_REBOOT = 0x2e7,
+/*20031103 to latest
+설치 실패.
+Installation has been failed.
+*/
+ MSG_KEYCRYPT_INSTALLFAIL = 0x2e8,
+/*20031103 to latest
+키보드 보안을 적용하지 않고 계속합니다.
+Keyboard Security will be skipped.
+*/
+ MSG_KEYCRYPT_SKIPKEYCRYPT = 0x2e9,
+/*20031103 to latest
+키보드 보안에 필요한 파일이 존재하지 않습니다.
+
+(npkeyc.vxd, npkeyc.sys, npkeycs.sys)
+Required file for Keyboard Security is not existing.
+
+(npkeyc.vxd, npkeyc.sys, npkeycs.sys)
+*/
+ MSG_KEYCRYPT_NOKEYCRYPTFILE = 0x2ea,
+/*20031103 to latest
+USB Keyboard가 검출되었습니다.
+
+키보드 보안 입력을 위해 추가기능을 설치하시겠습니까?
+
+(추가기능 설치후, 시스템 reboot 필수)
+USB Keyboard has been detected.
+
+Do you want to install a program for keyboard security?
+
+(After installation, System Reboot is required)
+*/
+ MSG_KEYCRYPT_USBKEYBOARD = 0x2eb,
+/*20031103 to latest
+ftp://ragnarok.nefficient.co.kr/pub/ragnarok/ragnarok0526.exe
+*/
+ MSG_FINDHACK_PATH = 0x2ec,
+/*20031103 to latest
+FindHack이 정상적으로 설치가 되어있지 않습니다. ragnarok0226.exe 를 다운로드 하여 라그나로크가 설치된 폴더에 설치해 주시기 바랍니다.(%d).
+FindHack is not installed correctly. Please download ragnarok0226.exe and install it in RagnarokOnline directory.(%d).
+*/
+ MSG_FINDHACK_NOTINSTALLED = 0x2ed,
+/*20031103 to latest
+해킹툴이 존재하지만 치료가 정상적으로 되지 않았습니다. 라그나로크가 실행되지 않습니다.
+Hacking tool is existing but it hasn't been cleaned. Rangarok Online will not be executed.
+*/
+ MSG_FINDHACK_HACKTOOLEXIST = 0x2ee,
+/*20031103 to latest
+해킹툴 진단 프로그램이 정상적으로 다운로드 되지 않았습니다. ragnarok0226.exe 를 다운로드 하여 라그나로크가 설치된 폴더에 설치해 주시기 바랍니다.
+Hacking tool scan program has not been downloaded correctly. Please download ragnarok0226.exe and install it in RagnarokOnline directory.
+*/
+ MSG_FINDHACK_CANTDOWNLOAD = 0x2ef,
+/*20031103 to latest
+NPX.DLL 등록에러 이거나 FindHack 구동에 필요한 파일이 없습니다. ragnarok0226.exe 를 다운로드 하여 라그나로크가 설치된 폴더에 설치해 주시기 바랍니다.
+NPX.DLL register error or there is no necessary file to run FindHack. Please download ragnarok0226.exe and install it in RagnarokOnline directory.
+*/
+ MSG_FINDHACK_NOFILE = 0x2f0,
+/*20031103 to latest
+예외사항이 발생했습니다. (02-3281-0361)로 문의해주세요. 리턴값(%d)
+Exceptional Error. Please contact the customer support. Return Value: (%d)
+*/
+ MSG_FINDHACK_EXCEPTION = 0x2f1,
+/*20031103 to latest
+종료버튼을 클릭 하셨습니다.
+Exit button has been clicked.
+*/
+ MSG_FINDHACK_EXITPRESSED = 0x2f2,
+/*20031103 to latest
+Findhack 업데이트 서버접근 실패하였습니다. 잠시 후에 다시 시도해 주시거나 그라비티 운영팀으로 연락해주시기 바랍니다.
+Unable to connect Findhack Update Server. Please try again or contact the customer support.
+*/
+ MSG_FINDHACK_UPDATEFAILED = 0x2f3,
+/*20031103 to latest
+사랑받고있는
+Beloved
+*/
+ MSG_NAMED_PET = 0x2f4,
+#endif
+#if PACKETVER >= 20031110
+/*20031110 to latest
+/report or /신고 : 신고용 갈무리 파일을 저장합니다.
+/report: Save a chat log file.
+*/
+ MSG_REPORTCOMMAND_EXPLANATION = 0x2f5,
+/*20031110 to 20031112
+이 파일은 (주)그라비티의 운영팀에서 게임내의 부정행위나 비매너 행위에 대한
+증거자료로사용하게 됩니다.
+문서를 다른 문서 형식으로 저장하거나 내용을 변경하여 원본과 일치하지 않게
+ 될 경우 그 문서는 증거 효력을 상실하게 됩니다.
+20031117 to latest
+이 파일은 (주)그라비티의 운영팀에서 게임내의 부정행위나 비매너 행위에 대한
+증거자료로 사용하게 됩니다.
+문서를 다른 문서 형식으로 저장하거나 내용을 변경하여 원본과 일치하지 않게
+ 될 경우 그 문서는 증거 효력을 상실하게 됩니다.
+Chat logs are not accepted as evidence for any ill-mannered violation on account of possible file modifications. However this feature is provided for players' personal reference.
+*/
+ MSG_REPORTTEXT_HEADER = 0x2f6,
+/*20031110 to latest
+당신을 사랑해요 ♡
+I love you.
+*/
+ MSG_LOVE_SKILL = 0x2f7,
+#endif
+#if PACKETVER >= 20031124
+/*20031124 to latest
+화면 또는 이펙트가 밝아서 눈에 부담이 되시는분들은 모니터의 밝기를 조정해주시기바랍니다.
+Please adjust your monitor/video brightness if effects appear too bright.
+*/
+ MSG_EXPLAIN_BRIGHT = 0x2f8,
+#endif
+#if PACKETVER >= 20031218
+/*20031218 to latest
+전체화면모드가 잘안되는 경우에 게임실행후 ALT+TAB으로 화면을 전환하면 잘되는 기종도 있습니다
+If full screen mode fails to work, it is suggested you alt+tab [or ctrl+esc] to inactivate and reactivate the Ragnarok Client.
+*/
+ MSG_EXPLAIN_ALTTAB = 0x2f9,
+#endif
+#if PACKETVER >= 20031223
+/*20031223 to latest
+(%d 명) - 유료서버
+(%d players) - Pay to Play Server
+*/
+ MSG_SERVER_PROPERTY_PAY = 0x2fa,
+/*20031223 to latest
+(%d 명) - 무료서버
+(%d players) - Free Server
+*/
+ MSG_SERVER_PROPERTY_FREE = 0x2fb,
+/*20031223 to latest
+무료 회원은 유료 서버로 접속할 수 없습니다.
+Trial players can't connect Pay to Play Server.
+*/
+ MSG_CANT_CONNECT_TO_PAY_SERVER = 0x2fc,
+#endif
+#if PACKETVER >= 20031230
+/*20031230 to 20040108
+마우스 우클릭으로 F9에 저장한 스킬을 쓸수있습니다 [QUICK ON]
+20040112 to latest
+마우스 우클릭으로 F9에 저장한 스킬을 쓸수있습니다 [/q1 ON]
+Right click menu skills for F9 are Enabled.[/q1 ON]
+*/
+ MSG_QUICKSPELL_ON = 0x2fd,
+/*20031230 to 20040108
+마우스 우클릭으로 스킬을 사용하지 못합니다 [QUICK OFF]
+20040112 to latest
+마우스 우클릭으로 스킬을 사용하지 못합니다 [/q1 OFF]
+Right click menu skills for F9 are Disabled.[/q1 OFF]
+*/
+ MSG_QUICKSPELL_OFF = 0x2fe,
+/*20031230 to 20040119
+/quickspell : 마우스 우클릭으로 F9에 저장한 스킬을 사용합니다 On Off
+20040126 to latest
+/quickspell : 마우스 우클릭으로 F9에 저장한 스킬을 사용합니다 On Off
+/quickspell: Right-click menu enables you to use skills assigned to the F9 hotkey. On | Off
+*/
+ MSG_EXPLAIN_QUICKSPELL = 0x2ff,
+#endif
+#if PACKETVER >= 20040112
+/*20040112 to latest
+마우스의 WHEEL을 사용해서 F7 과 F8에 저장한 스킬을 사용합니다 [/q2 ON]
+Mouse wheel skills for F7 and F8 are Enabled.[/q2 ON]
+*/
+ MSG_QUICKSPELL2_ON = 0x300,
+/*20040112 to latest
+마우스 WHEEL로 스킬을 사용하지 못합니다 [/q2 OFF]
+Mouse wheel skills for F7 and F8 are Disabled.[/q2 OFF]
+*/
+ MSG_QUICKSPELL2_OFF = 0x301,
+/*20040112 to 20040119
+/quickspell2 : 마우스 WHEEL로 F7 과 F8에 저장한 스킬을 사용합니다 On Off
+20040126 to latest
+/quickspell2 : 마우스 WHEEL을 위,아래로 굴려서 F7과F8에 저장한 스킬을 사용합니다 On Off
+/quickspell2: By rolling the mouse wheel up and down, you are able to use skills registered on F7 and F8 hotkeys. On | Off
+*/
+ MSG_EXPLAIN_QUICKSPELL2 = 0x302,
+/*20040112 to latest
+/q3 : /quickspell (/q1) + /quickspell2 (/q2)
+/q3: /quickspell (/q1) + /quickspell2 (/q2)
+*/
+ MSG_EXPLAIN_QUICKSPELL3 = 0x303,
+#endif
+#if PACKETVER >= 20040202
+/*20040202 to latest
+/찌릿
+/bzz
+*/
+ MSG_EMOTION_STARE = 0x304,
+/*20040202 to latest
+/밥
+/rice
+*/
+ MSG_EMOTION_HUNGRY = 0x305,
+/*20040202 to latest
+/멋져
+/awsm
+*/
+ MSG_EMOTION_COOL = 0x306,
+/*20040202 to latest
+/메롱
+/meh
+*/
+ MSG_EMOTION_MERONG = 0x307,
+/*20040202 to latest
+/부끄
+/shy
+*/
+ MSG_EMOTION_SHY = 0x308,
+/*20040202 to latest
+/쓱쓱
+/pat
+*/
+ MSG_EMOTION_GOODBOY = 0x309,
+/*20040202 to latest
+/엠탐
+/mp
+*/
+ MSG_EMOTION_SPTIME = 0x30a,
+/*20040202 to latest
+/질질
+/slur
+*/
+ MSG_EMOTION_SEXY = 0x30b,
+/*20040202 to latest
+/컴온
+/com
+*/
+ MSG_EMOTION_COMEON = 0x30c,
+/*20040202 to latest
+/하품
+/yawn
+*/
+ MSG_EMOTION_SLEEPY = 0x30d,
+/*20040202 to latest
+/축하
+/grat
+*/
+ MSG_EMOTION_CONGRATULATION = 0x30e,
+/*20040202 to latest
+/피탐
+/hp
+*/
+ MSG_EMOTION_HPTIME = 0x30f,
+/*20040202 to latest
+/이모션 : 현재 사용가능한 이모션의 리스트를 보여줍니다.
+/emotion: views the emoticon list.
+*/
+ MSG_EXPLAIN_EMOTION = 0x310,
+#endif
+#if PACKETVER >= 20040223
+/*20040223 to 20040302
+키보드를 이용해서 스킬단축창2 와 3의 스킬들을 사용합니다. [/bm ON]
+20040308 to latest
+키보드를 이용해서 스킬단축창 1,2,3의 스킬들을 사용합니다. [/bm ON]
+Skills assigned to shortcut windows 1, 2, 3 are Enabled. [/bm ON]
+*/
+ MSG_BATTLE_ON = 0x311,
+/*20040223 to 20040302
+키보드를 이용해서 스킬단축창2 와 3의 스킬들을 사용하지못합니다. [/bm OFF]
+20040308 to latest
+키보드를 이용해서 스킬단축창 1,2,3의 스킬들을 사용하지못합니다. [/bm OFF]
+Skills assigned to shortcut windows 1, 2, 3 are Disabled. [/bm OFF]
+*/
+ MSG_BATTLE_OFF = 0x312,
+/*20040223 to latest
+/battlemode : Q ~ O 를 누르면 스킬단축창2의 스킬들이 사용됩니다.
+/battlemode: allows you to use skills assigned to Shortcut Window 2 by pressing Q ~ O keys.
+*/
+ MSG_EXPLAIN_BATTLE = 0x313,
+/*20040223 to 20040302
+ A ~ L 을 누르면 스킬단축창3의 스킬들이 사용됩니다. On Off
+20040308 to latest
+ A ~ L 을 누르면 스킬단축창3의 스킬들이 사용됩니다.
+A ~ L keys allow you to use skills assigned to Shortcut Window 3.
+*/
+ MSG_EXPLAIN_BATTLE2 = 0x314,
+/*20040223 to latest
+라그나로크를 실행하실때 다른 프로그램을 띄우시면 게임이 느려질수도있습니다.
+Please remember, programs running in the background while playing may affect the game's performance.
+*/
+ MSG_EXPLAIN_LAG = 0x315,
+#endif
+#if PACKETVER >= 20040302
+/*20040302 to 20041130
+천사님 제 목소리 들리세여? ^^;
+20041206 to latest
+천사님 제 목소리 들리세요? ^^;
+Dear angel, can you hear my voice?
+*/
+ MSG_SUPERNOVICE1 = 0x316,
+/*20040302 to latest
+슈퍼노비스
+Super Novice
+*/
+ MSG_SUPERNOVICE2 = 0x317,
+/*20040302 to 20041130
+예여~
+20041206 to latest
+예요~
+Super Novice~
+*/
+ MSG_SUPERNOVICE3 = 0x318,
+/*20040302 to 20041130
+저 좀 도와주세여~ ㅠ_ㅠ
+20041206 to latest
+저 좀 도와주세요~ ㅠ_ㅠ
+Help me out~ Please~ T_T
+*/
+ MSG_SUPERNOVICE4 = 0x319,
+#endif
+#if PACKETVER >= 20040308
+/*20040308 to 20041011
+ 입양을 요청해왔습니다. 승낙하시겠습니까?
+20041018 to latest
+님께서 당신을 입양시키고 싶어하십니다. 승낙하시겠습니까?
+ wishes to adopt you. Do you accept?
+*/
+ MSG_SUGGEST_BABY = 0x31a,
+/*20040308 to latest
+ Z ~ > 을 누르면 스킬단축창1의 스킬들이 사용됩니다. On Off
+Z ~ > keys allow you to use skills assigned on shortcut window 1. On | Off
+*/
+ MSG_EXPLAIN_BATTLE3 = 0x31b,
+/*20040308 to latest
+ Space를 한번 누른뒤에 글자를 입력하면 채팅을 할수있습니다.
+Press the space bar to Chat when in Battle mode [/battlemode | /bm].
+*/
+ MSG_EXPLAIN_BATTLE4 = 0x31c,
+/*20040308 to latest
+게임가드 파일이 없거나 변조되었습니다. 게임가드 셋업 파일을 설치해보시기 바랍니다.
+"Either there's no Game Guard installed on the program or Game Guard is cracked. Please, try to reinstall Game Guard from its setup file."
+*/
+ MSG_NPGAMEMON_ERROR_AUTH_GAMEGUARD = 0x31d,
+/*20040308 to latest
+윈도우의 일부 시스템 파일이 손상되었습니다. 인터넷 익스플로러(IE)를 다시 설치해보시기 바랍니다.
+Some of Windows system files have been damaged. Please re-install your Internet Explorer.
+*/
+ MSG_NPGAMEMON_ERROR_CRYPTOAPI = 0x31e,
+/*20040308 to latest
+게임가드 실행에 실패했습니다. 게임가드 셋업 파일을 다시 설치해보시기 바랍니다.
+"Failed to run Game Guard. Please, try to reinstall Game Guard from its setup file."
+*/
+ MSG_NPGAMEMON_ERROR_EXECUTE = 0x31f,
+/*20040308 to latest
+불법 프로그램이 발견되었습니다. 불필요한 프로그램을 종료한 후 다시 실행해보시기 바랍니다.
+"At least one hazardous program has been detected. Please, terminate all the unnecessary programs before executing Game Guard."
+*/
+ MSG_NPGAMEMON_ERROR_ILLEGAL_PRG = 0x320,
+/*20040308 to latest
+게임가드 업데이트를 취소하셨습니다. 접속이 계속 되지 않을 경우 인터넷 및 방화벽 상태를 점검해보시기 바랍니다.
+"Game Guard update is canceled. If the disconnection continues, please, check your internet or firewall settings."
+*/
+ MSG_NPGMUP_ERROR_ABORT = 0x321,
+/*20040308 to latest
+게임가드 업데이트 서버 접속에 실패하였습니다. 잠시 후 재시도 해보거나, 인터넷 및 방화벽 상태를 점검해 보시기 바랍니다.
+"Failed to connect to Game Guard update server. Try to connect again later, or try to check the internet or firewall settings."
+*/
+ MSG_NPGMUP_ERROR_CONNECT = 0x322,
+/*20040308 to latest
+게임가드 업데이트를 완료하지 못 했습니다. 바이러스 검사를 해보시거나, PC 관리 프로그램을 사용하시면 설정을 조정한 후 게임을 실행해 보시기 바랍니다.
+"Can't complete Game Guard update process. Please, try to execute a vaccine program to remove viruses. Or, please try to modify the settings of your PC managing tool if you are using any."
+*/
+ MSG_NPGMUP_ERROR_AUTH = 0x323,
+#endif
+#if PACKETVER >= 20040311
+/*20040311 to latest
+/notrade : 거래신청을 자동으로 거절합니다 On Off
+/notrade: Declines trade offers automatically. On | Off
+*/
+ MSG_EXPLAIN_NOTRADE = 0x324,
+/*20040311 to 20040804
+거래신청을 자동으로 거절합니다 [/nt ON]
+20040809 to latest
+거래신청과 친구등록요청을 자동으로 거절합니다 [/nt ON]
+Auto decline trade offers has been Enabled. [/nt ON]
+*/
+ MSG_NOTRADE_ON = 0x325,
+/*20040311 to 20040804
+거래신청을 정상적으로 받습니다 [/nt OFF]
+20040809 to latest
+거래신청과 친구등록요청을 정상적으로 받습니다 [/nt OFF]
+Auto decline trade offers has been Disabled. [/nt OFF]
+*/
+ MSG_NOTRADE_OFF = 0x326,
+#endif
+#if PACKETVER >= 20040329
+/*20040329 to latest
+같은 아이템은 한번에 30000개 이상은 살수 없습니다.
+You cannot buy more than 30,000ea items at once.
+*/
+ MSG_LIMIT_BUY_ITEM = 0x327,
+/*20040329 to latest
+재료가 충분하지 않습니다.
+You do not have enough ingredients.
+*/
+ MSG_NOT_ENOUGH_SOURCE = 0x328,
+#endif
+#if PACKETVER >= 20040419
+/*20040419 to latest
+%s에 계정정보가 남아있습니다.
+Login information remains at %s.
+*/
+ MSG_ALREADY_CONNECT = 0x329,
+#endif
+#if PACKETVER >= 20040423
+/*20040423 to 20040429
+해킹조사에 관련되어 %s 까지 로그인을 금지하고 있습니다.
+20040503 to 20040906
+해킹 관련 조사를 위해 로그인이 금지되 었습니다. 자세한 문의는 해킹관련 메일로 하여주시기 바랍니다.
+20040913 to latest
+계정도용 조사를 위해 로그인이 금지되었습니다. 자세한 문의는 계정도용 관련 문의 메일로 해주시기 바랍니다.
+Account has been locked for a hacking investigation. Please contact the GM Team for more information.
+*/
+ MSG_HACKING_INVESTIGATION = 0x32a,
+/*20040423 to 20040429
+버그조사에 관련되어 %s 까지 로그인을 금지하고 있습니다.
+20040503 to latest
+귀하는 버그관련 조사중이므로 일시적으로 접속을 금합니다
+This account has been temporarily prohibited from login due to a bug-related investigation.
+*/
+ MSG_BUG_INVESTIGATION = 0x32b,
+/*20040423 to latest
+수리가능한 아이템
+Repairable items
+*/
+ MSG_REPAIRITEMLIST = 0x32c,
+#endif
+#if PACKETVER >= 20040426
+/*20040426 to latest
+아이템 수리 성공
+Item has been successfully repaired.
+*/
+ MSG_ITEM_REPAIR_SUCCEESS = 0x32d,
+/*20040426 to latest
+아이템 수리 실패 (재료 또는 상대와의 거리등을 확인해주십시요)
+You have failed to repair this item. Please check the distance between you and opponent.
+*/
+ MSG_ITEM_REPAIR_FAIL = 0x32e,
+#endif
+#if PACKETVER >= 20040531
+/*20040531 to latest
+시스템 상황을 지속적으로 체크 합니다.[운영자모드] [/sc ON]
+System process enabled [GM mode] [/sc ON]
+*/
+ MSG_SYSTEM_CHECK_ON = 0x32f,
+/*20040531 to latest
+시스템 상황을 지속적으로 체크 하지 않습니다.[운영자모드] [/sc OFF]
+System process disabled [GM mode] [/sc OFF]
+*/
+ MSG_SYSTEM_CHECK_OFF = 0x330,
+/*20040531 to latest
+/systemcheck : 시스템 상황을 지속적으로 체크 합니다.[운영자모드]
+/systemcheck: Check the system process [GM mode] On | Off
+*/
+ MSG_EXPLAIN_SYSTEM_CHECK = 0x331,
+#endif
+#if PACKETVER >= 20040614
+/*20040614 to latest
+(%s)님이 친구 신청을 하셨습니다. 친구가 되시겠습니까?
+(%s) wishes to be friends with you. Would you like to accept?
+*/
+ MSG_SUGGEST_JOIN_FRIEND = 0x332,
+#endif
+#if PACKETVER >= 20040621
+/*20040621 to latest
+더 이상 친구 등록을 하실수 없습니다.
+Your Friend List is full.
+*/
+ MSG_FRIEND_ADD_ME_OVERSIZE = 0x333,
+/*20040621 to latest
+(%s)님이 더 이상 친구 등록을 하실수 없습니다.
+(%s)'s Friend List is full.
+*/
+ MSG_FRIEND_ADD_OTHER_OVERSIZE = 0x334,
+/*20040621 to latest
+(%s)님과 친구가 되셨습니다.
+You have become friends with (%s).
+*/
+ MSG_FRIEND_ADD_SUCCEED = 0x335,
+/*20040621 to latest
+(%s)님이 친구 되기를 원하지 않습니다.
+(%s) does not want to be friends with you.
+*/
+ MSG_FRIEND_ADD_FALSE = 0x336,
+/*20040621 to latest
+이 캐릭터는 %s 까지 블럭되어있습니다.
+This character will be blocked to use until %s.
+*/
+ MSG_BLOCKED = 0x337,
+/*20040621 to 20040621
+천만제니이상을 입력하신 아이템은 천만제니로 판매됩니다.
+20040628 to latest
+천만제니 이상 입력하셔도 가격은 천만제니로 판매됩니다.
+Price will be fixed at 10,000,000 zeny, even if you enter higher price.
+*/
+ MSG_OVERPRICE = 0x338,
+#endif
+#if PACKETVER >= 20040628
+/*20040628 to latest
+(적음)
+(Very low)
+*/
+ MSG_LITTLEUSER = 0x339,
+/*20040628 to latest
+(약간 적음)
+(Low)
+*/
+ MSG_ALITTLEUSER = 0x33a,
+/*20040628 to latest
+(보통)
+(Normal)
+*/
+ MSG_NORMLEUSER = 0x33b,
+/*20040628 to latest
+(많음)
+(High)
+*/
+ MSG_MANYUSER = 0x33c,
+/*20040628 to latest
+(매우 많음)
+(Very high)
+*/
+ MSG_VERYMANYUSER = 0x33d,
+/*20040628 to 20040714
+비매너에 의해 GM으로부터 채팅금지가 %d 분간 적용됩니다.
+20040726 to latest
+비매너에 의해 운영자로부터 채팅금지가 적용됩니다.
+You have been blocked from using chat and skills for %d minutes by the GM Team.
+*/
+ MSG_GM_BAD_MANNER_START = 0x33e,
+/*20040628 to latest
+GM에 의한 채팅금지가 %d 분 남아 있습니다.
+%d minutes remain until release from the GM penalty.
+*/
+ MSG_GM_BAD_MANNER_REMAIN = 0x33f,
+/*20040628 to latest
+GM에 의한 채팅금지가 해지 되었습니다.
+You have been released from the GM penalty.
+*/
+ MSG_GM_BAD_MANNER_END = 0x340,
+/*20040628 to 20040714
+도배 방지 시스템으로 인한 채팅금지가 %d 분간 적용됩니다.
+20040726 to latest
+도배 방지 시스템으로 인한 자동 채팅금지가 적용됩니다.
+You have been blocked from using chat and skills for %d as an automatic penalty.
+*/
+ MSG_AUTO_BAD_MANNER_START = 0x341,
+/*20040628 to latest
+도배 방지 시스템으로 인한 채팅금지가 %d 분 남아 있습니다.
+%d minutes remain until release from auto penalty.
+*/
+ MSG_AUTO_BAD_MANNER_REMAIN = 0x342,
+/*20040628 to latest
+도배 방지 시스템으로 인한 채팅금지가 해지되었습니다. 게임진행 시에는 도배에 대해서 주의하여 주시기 바랍니다.
+You have been released from the auto penalty. Please refrain from spamming in-game.
+*/
+ MSG_AUTO_BAD_MANNER_END = 0x343,
+/*20040628 to latest
+%s님과 %s님이 이혼하셨습니다.
+%s and %s have divorced from each other.
+*/
+ MSG_DIVORCE = 0x344,
+#endif
+#if PACKETVER >= 20040705
+/*20040705 to 20041108
+星鬪士 %s의 태양의 장소로 %s 가 지정됐습니다.
+20041115 to latest
+拳聖 %s의 태양의 장소로 %s 가 지정됐습니다.
+%s has been designated as Gravity %s's Solar Space.
+20041220 to 20050816
+태양과 달과 별의 전사 %s의 태양의 장소로 %s 가 지정됐습니다.
+*/
+ MSG_STARPLACE1 = 0x345,
+/*20040705 to 20041108
+星鬪士 %s의 달의 장소로 %s 가 지정됐습니다.
+20041115 to latest
+拳聖 %s의 달의 장소로 %s 가 지정됐습니다.
+%s has been designated as Gravity %s's Luna Space.
+20041220 to 20050816
+태양과 달과 별의 전사 %s의 달의 장소로 %s 가 지정됐습니다.
+*/
+ MSG_STARPLACE2 = 0x346,
+/*20040705 to 20041108
+星鬪士 %s의 별의 장소로 %s 가 지정됐습니다.
+20041115 to latest
+拳聖 %s의 별의 장소로 %s 가 지정됐습니다.
+%s has been designated as Gravity %s's Stellar Space.
+20041220 to 20050816
+태양과 달과 별의 전사 %s의 별의 장소로 %s 가 지정됐습니다.
+*/
+ MSG_STARPLACE3 = 0x347,
+/*20040705 to 20040726
+星鬪士 %s의 태양의 장소 : %s
+20040804 to 20041108
+星鬪士 %s의 태양의 장소는 %s 입니다
+20041115 to latest
+拳聖 %s의 태양의 장소는 %s 입니다
+Gravity %s's Solar Space: %s
+20041220 to 20050816
+태양과 달과 별의 전사 %s의 태양의 장소는 %s 입니다
+*/
+ MSG_STARPLACE4 = 0x348,
+/*20040705 to 20040726
+星鬪士 %s의 달의 장소 : %s
+20040804 to 20041108
+星鬪士 %s의 달의 장소는 %s 입니다
+20041115 to latest
+拳聖 %s의 달의 장소는 %s 입니다
+Gravity %s's Luna Space: %s
+20041220 to 20050816
+태양과 달과 별의 전사 %s의 달의 장소는 %s 입니다
+*/
+ MSG_STARPLACE5 = 0x349,
+/*20040705 to 20040726
+星鬪士 %s의 별의 장소 : %s
+20040804 to 20041108
+星鬪士 %s의 별의 장소는 %s 입니다
+20041115 to latest
+拳聖 %s의 별의 장소는 %s 입니다
+Gravity %s's Stellar Space: %s
+20041220 to 20050816
+태양과 달과 별의 전사 %s의 별의 장소는 %s 입니다
+*/
+ MSG_STARPLACE6 = 0x34a,
+#endif
+#if PACKETVER >= 20040706
+/*20040706 to 20041108
+星鬪士 %s의 태양의 몬스터로 %s 가 지정됐습니다.
+20041115 to latest
+拳聖 %s의 태양의 몬스터로 %s 가 지정됐습니다.
+%s has been designated as Gravity %s's Solar Monster.
+20041220 to 20050816
+태양과 달과 별의 전사 %s의 태양의 몬스터로 %s 가 지정됐습니다.
+*/
+ MSG_STARMONSTER1 = 0x34b,
+/*20040706 to 20041108
+星鬪士 %s의 달의 몬스터로 %s 가 지정됐습니다.
+20041115 to latest
+拳聖 %s의 달의 몬스터로 %s 가 지정됐습니다.
+%s has been designated as Gravity %s's Luna Monster.
+20041220 to 20050816
+태양과 달과 별의 전사 %s의 달의 몬스터로 %s 가 지정됐습니다.
+*/
+ MSG_STARMONSTER2 = 0x34c,
+/*20040706 to 20041108
+星鬪士 %s의 별의 몬스터로 %s 가 지정됐습니다.
+20041115 to latest
+拳聖 %s의 별의 몬스터로 %s 가 지정됐습니다.
+%s has been designated as Gravity %s's Stellar Monster.
+20041220 to 20050816
+태양과 달과 별의 전사 %s의 별의 몬스터로 %s 가 지정됐습니다.
+*/
+ MSG_STARMONSTER3 = 0x34d,
+/*20040706 to 20040726
+星鬪士 %s의 태양의 몬스터 : %s
+20040804 to 20041108
+星鬪士 %s의 태양의 몬스터는 %s 입니다
+20041115 to latest
+拳聖 %s의 태양의 몬스터는 %s 입니다
+Gravity %s's Solar Monster: %s
+20041220 to 20050816
+태양과 달과 별의 전사 %s의 태양의 몬스터는 %s 입니다
+*/
+ MSG_STARMONSTER4 = 0x34e,
+/*20040706 to 20040726
+星鬪士 %s의 달의 몬스터 : %s
+20040804 to 20041108
+星鬪士 %s의 달의 몬스터는 %s 입니다
+20041115 to latest
+拳聖 %s의 달의 몬스터는 %s 입니다
+Gravity %s's Luna Monster: %s
+20041220 to 20050816
+태양과 달과 별의 전사 %s의 달의 몬스터는 %s 입니다
+*/
+ MSG_STARMONSTER5 = 0x34f,
+/*20040706 to 20040726
+星鬪士 %s의 별의 몬스터 : %s
+20040804 to 20041108
+星鬪士 %s의 별의 몬스터는 %s 입니다
+20041115 to latest
+拳聖 %s의 별의 몬스터는 %s 입니다
+Gravity %s's Stellar Monster: %s
+20041220 to 20050816
+태양과 달과 별의 전사 %s의 별의 몬스터는 %s 입니다
+*/
+ MSG_STARMONSTER6 = 0x350,
+#endif
+#if PACKETVER >= 20040707
+/*20040707 to latest
+/window : 창 위치 이동시 다른 창과 달라붙는 속성이 들어갑니다 On Off
+/window: Display windows will snap/dock together. On | Off
+*/
+ MSG_EXPLAIN_WINDOW = 0x351,
+/*20040707 to latest
+창 위치 이동시 다른 창과 잘 붙습니다 [/wi ON]
+Display window docking enabled. [/wi ON]
+*/
+ MSG_WINDOW_ON = 0x352,
+/*20040707 to latest
+창 위치 이동시 다른 창과 붙으려는 속성을 가지지 않습니다 [/wi OFF]
+Display window docking disabled. [/wi OFF]
+*/
+ MSG_WINDOW_OFF = 0x353,
+#endif
+#if PACKETVER >= 20040712
+/*20040712 to latest
+/pvpinfo : 자신의 PVP 승패와 PVP 포인트를 알 수 있습니다.
+/pvpinfo: shows your PVP result and PVP points.
+*/
+ MSG_EXPLAIN_PVP_INFO = 0x354,
+/*20040712 to latest
+현재 %d승, %d패, PVP포인트는 %d입니다.
+You have won %d times and have lost %d times in PVP. Current points %d.
+*/
+ MSG_PVP_INFO = 0x355,
+#endif
+#if PACKETVER >= 20040726
+/*20040726 to latest
+매너 포인트를 성공적으로 보냈습니다.
+A manner point has been successfully aligned.
+*/
+ MSG_SEND_MANNER_POINT = 0x356,
+#endif
+#if PACKETVER >= 20040809
+/*20040809 to latest
+현재 이곳은 PK 가능 지역입니다. 불의의 공격에 유의 하시기 바랍니다.
+You are in a PK area. Please beware of sudden attack.
+*/
+ MSG_PKZONE = 0x357,
+#endif
+#if PACKETVER >= 20040817
+/*20040817 to latest
+게임가드 업데이트가 바이러스나 스파이웨어와의 충돌로 실패했습니다. 백신 프로그램/스파이웨어 제거 프로그램을 사용한 후 접속해 주십시기 바랍니다
+Game Guard update has been failed when either Virus or Spyware conflicted with. Please, Uninstall Spyware and Virus protection program before you log in.
+*/
+ MSG_NPGAMEMON_ERROR_100ERROR = 0x358,
+#endif
+#if PACKETVER >= 20040823
+/*20040823 to latest
+윈도우 호환성 문제로 프로그램을 종료합니다. 게임을 다시 실행해 주시기 바랍니다
+Program has encountered an error related to Windows compatibility. Please start the game again.
+*/
+ MSG_NPGAMEMON_XP_COMPATIBILITY = 0x359,
+#endif
+#if PACKETVER >= 20040906
+/*20040906 to latest
+채팅, 스킬, 아이템을 사용할수없게 되었습니다.
+You have been blocked from chatting, using skills and items.
+*/
+ MSG_PK_HONOR = 0x35a,
+/*20040906 to latest
+캐릭터 삭제 작업중이므로 접속이 일시적으로 제한됩니다.
+Login is temporarily unavailable while this character is being deleted.
+*/
+ MSG_DELETING_CHAR = 0x35b,
+/*20040906 to latest
+결혼 상대자의 캐릭터 삭제 작업중이므로 접속이 일시적으로 제한됩니다.
+Login is temporarily unavailable while your spouse character is being deleted.
+*/
+ MSG_DELETING_SPOUSE_CHAR = 0x35c,
+#endif
+#if PACKETVER >= 20040913
+/*20040913 to latest
+Novice
+*/
+ MSG_NOVICE = 0x35d,
+/*20040913 to latest
+Swordman
+*/
+ MSG_SWORDMAN = 0x35e,
+/*20040913 to latest
+Magician
+Mage
+*/
+ MSG_MAGICIAN = 0x35f,
+/*20040913 to latest
+Archer
+*/
+ MSG_ARCHER = 0x360,
+/*20040913 to latest
+Acolyte
+*/
+ MSG_ACOLYTE = 0x361,
+/*20040913 to latest
+Merchant
+*/
+ MSG_MERCHANT = 0x362,
+/*20040913 to latest
+Thief
+*/
+ MSG_THIEF = 0x363,
+/*20040913 to latest
+Knight
+*/
+ MSG_KNIGHT = 0x364,
+/*20040913 to 20181128
+Prieset
+Priest
+20181205 to latest
+Priest
+*/
+ MSG_PRIEST = 0x365,
+/*20040913 to latest
+Wizerd
+Wizard
+*/
+ MSG_WIZARD = 0x366,
+/*20040913 to latest
+Blacksmith
+*/
+ MSG_BLACKSMITH = 0x367,
+/*20040913 to latest
+Hunter
+*/
+ MSG_HUNTER = 0x368,
+/*20040913 to latest
+Assassin
+*/
+ MSG_ASSASSIN = 0x369,
+/*20040913 to latest
+Novice
+*/
+ MSG_NOVICE_W = 0x36a,
+/*20040913 to latest
+Swordman
+*/
+ MSG_SWORDMAN_W = 0x36b,
+/*20040913 to latest
+Magician
+Mage
+*/
+ MSG_MAGICIAN_W = 0x36c,
+/*20040913 to latest
+Archer
+*/
+ MSG_ARCHER_W = 0x36d,
+/*20040913 to latest
+Acolyte
+*/
+ MSG_ACOLYTE_W = 0x36e,
+/*20040913 to latest
+Merchant
+*/
+ MSG_MERCHANT_W = 0x36f,
+/*20040913 to latest
+Thief
+*/
+ MSG_THIEF_W = 0x370,
+/*20040913 to latest
+Knight
+*/
+ MSG_KNIGHT_W = 0x371,
+/*20040913 to latest
+Prieset
+Priest
+*/
+ MSG_PRIEST_W = 0x372,
+/*20040913 to latest
+Wizerd
+Wizard
+*/
+ MSG_WIZARD_W = 0x373,
+/*20040913 to latest
+Blacksmith
+*/
+ MSG_BLACKSMITH_W = 0x374,
+/*20040913 to latest
+Hunter
+*/
+ MSG_HUNTER_W = 0x375,
+/*20040913 to latest
+Assassin
+*/
+ MSG_ASSASSIN_W = 0x376,
+#endif
+#if PACKETVER >= 20041018
+/*20041018 to latest
+(%s)님을 아이로 입양신청
+Send an adoption request to %s
+*/
+ MSG_REQ_JOIN_BABY = 0x377,
+/*20041018 to 20041025
+아이가 되시면 전승을 하실수 없게 됩니다. 그래도 괜찮습니까?
+20041101 to latest
+아이가 되면 전승을 할수없고 스텟은 80이상 올릴수없게되며 HP와 SP가 줄어듭니다. 그래도 괜찮습니까?
+When you become a child, you will be unable to become a Transcendent Class character, all stats will be limited to a maximum of 80, and Max HP/SP will be reduced. Are you sure that you want to be adopted?
+*/
+ MSG_SUGGEST_BABY2 = 0x378,
+#endif
+#if PACKETVER >= 20041101
+/*20041101 to latest
+모든 나쁜 상태이상이 제거 되었습니다.
+All abnormal status effects have been removed.
+*/
+ MSG_GOSPEL1 = 0x379,
+/*20041101 to latest
+1분간 모든 상태이상에 대해 면역이 됩니다.
+You will be immune to abnormal status effects for the next minute.
+*/
+ MSG_GOSPEL2 = 0x37a,
+/*20041101 to latest
+1분간 최대 생명력이 크게 늘어납니다.
+Your Max HP will stay increased for the next minute.
+*/
+ MSG_GOSPEL3 = 0x37b,
+/*20041101 to latest
+1분간 최대 마법력이 크게 늘어납니다.
+Your Max SP will stay increased for the next minute.
+*/
+ MSG_GOSPEL4 = 0x37c,
+/*20041101 to latest
+1분간 모든 능력이 크게 상승합니다.
+All of your Stats will stay increased for the next minute.
+*/
+ MSG_GOSPEL5 = 0x37d,
+/*20041101 to latest
+1분간 사용하는 무기에 성스러운 속성이 부여됩니다.
+Your weapon will remain blessed with Holy power for the next minute.
+*/
+ MSG_GOSPEL6 = 0x37e,
+/*20041101 to latest
+1분간 사용하는 갑옷에 성스러운 속성이 부여됩니다.
+Your armor will remain blessed with Holy power for the next minute.
+*/
+ MSG_GOSPEL7 = 0x37f,
+/*20041101 to latest
+10초간 방어력이 크게 상승합니다.
+Your Defense will stay increased for the next 10 seconds.
+*/
+ MSG_GOSPEL8 = 0x380,
+/*20041101 to latest
+1분간 공격력이 크게 증가합니다.
+Your Attack strength will be increased for the next minute.
+*/
+ MSG_GOSPEL9 = 0x381,
+/*20041101 to latest
+1분간 명중률과 회피율이 크게 상승합니다.
+Your Accuracy and Flee Rate will be increased for the next minute.
+*/
+ MSG_GOSPEL10 = 0x382,
+#endif
+#if PACKETVER >= 20041108
+/*20041108 to latest
+아이를 한번 입양했던 부부는 추가 입양이 불가능합니다.
+You cannot adopt more than 1 child.
+*/
+ MSG_BABY1 = 0x383,
+/*20041108 to latest
+부부가 둘다 레벨70이 넘어야 아이를 입양할수있습니다.
+You must be at least character level 70 in order to adopt someone.
+*/
+ MSG_BABY2 = 0x384,
+/*20041108 to 20041108
+블랙스미스 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+20041115 to latest
+[POINT] 블랙스미스 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[Point] You have been rewarded with %d Blacksmith rank points. Your point total is %d.
+*/
+ MSG_BLACKSMITH_POINT = 0x385,
+/*20041108 to 20041108
+알케미스트 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+20041115 to latest
+[POINT] 알케미스트 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[Point] You have been rewarded with %d Alchemist rank points. Your point total is %d.
+*/
+ MSG_ALCHEMIST_POINT = 0x386,
+#endif
+#if PACKETVER >= 20041115
+/*20041115 to 20041130
+천사님 제 목소리 들리세요? ^^;
+Dear angel, can you hear my voice?
+20041206 to latest
+X
+Help me out~ Please~ T_T
+*/
+ MSG_SUPERNOVICE11 = 0x387,
+/*20041115 to 20041130
+슈퍼노비스
+Super Novice
+20041206 to latest
+X
+Help me out~ Please~ T_T
+*/
+ MSG_SUPERNOVICE12 = 0x388,
+/*20041115 to 20041130
+예요~
+Super Novice~
+20041206 to latest
+X
+Help me out~ Please~ T_T
+*/
+ MSG_SUPERNOVICE13 = 0x389,
+/*20041115 to 20041130
+저 좀 도와주세요~ ㅠ_ㅠ
+Help me out~ Please~ T_T
+20041206 to latest
+X
+Help me out~ Please~ T_T
+*/
+ MSG_SUPERNOVICE14 = 0x38a,
+/*20041115 to latest
+/notalkmsg2 : 채팅내용을 채팅창에 표시하지 않습니다 (길드말 포함) On Off
+/notalkmsg2: Hides chat messages(including guild chat). On Off
+*/
+ MSG_EXPLAIN_NOTALKMSG2 = 0x38b,
+/*20041115 to latest
+채팅내용을 채팅창에 표시합니다 [/nm2 ON]
+Show chat messages. [/nm2 ON]
+*/
+ MSG_NOTALKMSG2_ON = 0x38c,
+/*20041115 to latest
+채팅내용을 채팅창에 표시하지않습니다 (길드말 포함) [/nm2 OFF]
+Hide chat messages(including guild chat) [/nm2 OFF]
+*/
+ MSG_NOTALKMSG2_OFF = 0x38d,
+#endif
+#if PACKETVER >= 20041129
+/*20041129 to latest
+제련가능한 아이템
+Upgradable Weapons
+*/
+ MSG_REFINEITEMLIST = 0x38e,
+/*20041129 to latest
+제련한 무기 : %s
+Weapons upgraded: %s
+*/
+ MSG_ITEM_REFINE_SUCCEESS = 0x38f,
+/*20041129 to latest
+제련한 무기 : %s
+Weapons upgraded: %s
+*/
+ MSG_ITEM_REFINE_FAIL = 0x390,
+/*20041129 to latest
+무기제련스킬의 레벨이 부족해서 %s 제련을 할수없습니다.
+You cannot upgrade %s until you level up your Upgrade Weapon skill.
+*/
+ MSG_ITEM_REFINE_FAIL_LEVEL = 0x391,
+/*20041129 to latest
+제련에 필요한 아이템 (%s) 이 없으므로 제련할수없습니다.
+You lack a necessary item %s to upgrade this weapon.
+*/
+ MSG_ITEM_REFINE_FAIL_MATERIAL = 0x392,
+#endif
+#if PACKETVER >= 20041206
+/*20041206 to latest
+완벽하게 코팅되어있어서 풀스트립이 통하지 않습니다.
+Full Divestment cannot pierce the target. The target is fully shielded.
+*/
+ MSG_FULLSTRIP = 0x393,
+#endif
+#if PACKETVER >= 20041213
+/*20041213 to latest
+결혼한 캐릭터는 입양시킬수 없습니다.
+You cannot adopt a married person.
+*/
+ MSG_BABY3 = 0x394,
+#endif
+#if PACKETVER >= 20041220
+/*20041220 to latest
+친구로 등록된 이름과 비슷하지만 등록된 이름이 아닙니다. 아는사람인지 확인하십시요.
+This name is not registered in your Friend List. Please check the name again.
+*/
+ MSG_ID_WARNING = 0x395,
+/*20041220 to latest
+/hi 또는 /hi 문장 : 친구로 등록된 캐릭터들에게 인사를 합니다.
+/hi or /hi message: Send greetings to people who are online and registered on your Friend List.
+*/
+ MSG_EXPLAIN_HI = 0x396,
+#endif
+#if PACKETVER >= 20041227
+/*20041227 to latest
+길드원의 이름과 비슷하지만 길드원이 아닙니다. 길드원인지 확인하십시요.
+This character is not your guildsman. Please check the name again.
+*/
+ MSG_ID_WARNING_GUILD = 0x397,
+#endif
+#if PACKETVER >= 20050117
+/*20050117 to latest
+9999만제니 이상 입력하셔도 가격은 9999만제니로 판매됩니다.
+Please be aware that the maximum selling price is fixed as 2 Billion. You cannot sell an item higher than that.
+*/
+ MSG_OVERPRICE9999 = 0x398,
+#endif
+#if PACKETVER >= 20050131
+/*20050131 to latest
+친구의 귓속말은 [ Friend ] , 길드원은 [ Member ] 로 표시됩니다.
+Whispers from friends are displayed as [ Friend ], and ones from guildsmen are displayed as [ Member ].
+*/
+ MSG_EXPLAIN_SACHING1 = 0x399,
+/*20050131 to latest
+( From 캐릭터이름 : ) 이라고 표시 되는 귓속말은 친구나 길드원이 아닙니다.
+( From character name: ) is from an anonymous character who is neither your friend nor guildsman.
+*/
+ MSG_EXPLAIN_SACHING2 = 0x39a,
+#endif
+#if PACKETVER >= 20050214
+/*20050214 to 20050310
+블랙스미스의 상위 10위권 랭킹을 보여줍니다.
+20050314 to latest
+/blacksmith : 블랙스미스의 상위 10위권 랭킹을 보여줍니다.
+/blacksmith: Shows top 10 Blacksmiths in the server.
+*/
+ MSG_EXPLAIN_BLACKSMITH = 0x39b,
+/*20050214 to 20050310
+알케미스트의 상위 10위권 랭킹을 보여줍니다.
+20050314 to latest
+/alchemist : 알케미스트의 상위 10위권 랭킹을 보여줍니다.
+/alchemist: Shows top 10 Alchemists in the server.
+*/
+ MSG_EXPLAIN_ALCHEMIST = 0x39c,
+/*20050214 to latest
+ALT+Y : 여러가지 명령어를 쉽게 쓸수있는 윈도우가 열립니다.
+ALT+Y: Opens a window which allows you to use various commands with ease.
+*/
+ MSG_EXPLAIN_ALTY = 0x39d,
+#endif
+#if PACKETVER >= 20050328
+/*20050328 to latest
+[POINT] 태권미션 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[POINT] You have been rewarded with %d Tae-Kwon Mission rank points. Your point total is %d.
+*/
+ MSG_TAEKWON_POINT = 0x39e,
+#endif
+#if PACKETVER >= 20050404
+/*20050404 to latest
+[태권미션] Target Monster : %s (%d%%)
+[Taekwon Mission] Target Monster: %s (%d%%)
+*/
+ MSG_TAEKWON_MISSION = 0x39f,
+#endif
+#if PACKETVER >= 20050502
+/*20050502 to latest
+게임가드 초기화 에러 : %lu
+Error - Failed to initialize GameGuard: %lu
+*/
+ MSG_INIT_ERROR = 0x3a0,
+/*20050502 to latest
+스피드핵이 감지되었습니다.
+Speed Hack has been detected.
+*/
+ MSG_SPEEDHACK_DETECT = 0x3a1,
+/*20050502 to latest
+불법 프로그램 (%s) 가 발견되었습니다
+The illegal program, (%s) has been detected.
+*/
+ MSG_GAMEHACK_DETECT = 0x3a2,
+/*20050502 to latest
+게임이나 게임가드가 변조되었습니다.
+The Game or Gameguard has been cracked.
+*/
+ MSG_GAMEHACK_DOUBT = 0x3a3,
+/*20050502 to latest
+게임가드가 실행 중 입니다. 잠시 후에 다시 실행해보시기 바랍니다.
+GameGuard is currently running. Please wait for sometime and restart the game.
+*/
+ MSG_ERROR_EXIST = 0x3a4,
+/*20050502 to latest
+게임이 중복 실행되었거나 게임가드가 이미 실행 중 입니다. 게임 종료 후 다시 실행해보시기 바랍니다.
+The Game or GameGuard is already running. Please close the game and restart the game.
+*/
+ MSG_GAME_EXIST = 0x3a5,
+/*20050502 to latest
+게임가드 초기화 에러입니다. 재부팅 후 다시 실행해보거나 충돌할 수 있는 다른 프로그램들을 종료한 후 실행해 보시기 바랍니다.
+Failed to intialize GameGuard. Please try again after rebooting the system or closing other programs.
+*/
+ MSG_ERROR_INIT = 0x3a6,
+/*20050502 to latest
+바이러스 및 해킹툴 검사 모듈 로딩에 실패 했습니다. 메모리 부족이거나 바이러스에 의한 감염일 수 있습니다.
+Failed to load the scan module of virus and hacking tool. It's caused by lack of memory or PC virus infection.
+*/
+ MSG_ERROR_NPSCAN = 0x3a7,
+#endif
+#if PACKETVER >= 20050509
+/*20050509 to latest
+호문클루스 정보
+Homunculus Info
+*/
+ MSG_HOMUN_INFO = 0x3a8,
+#endif
+#if PACKETVER >= 20050523
+/*20050523 to latest
+호문클루스 스킬목록
+Homunculus Skill List
+*/
+ MSG_HOMUN_SKILLLIST = 0x3a9,
+/*20050523 to latest
+호문클루스의 이름은 영문 23, 한글 11자 이내로 정해 주세요.
+Please give your Homunculus a name no longer than 23 letters.
+*/
+ MSG_HOMUN_NAME_IN23 = 0x3aa,
+/*20050523 to latest
+이름은 단 한번만 바꿀수 있습니다. 호문클루스의 이름을 ^0000ff^0000ff %s^000000^000000 로 수정합니다. 계속 하시겠습니까?
+You can name a Homunculus only once. You have entered the name, ^0000ff%s^000000. Would you like to continue?
+*/
+ MSG_HOMUN_NAME_CHANGE_ONLYONCE = 0x3ab,
+/*20050523 to latest
+지금은 부재중~
+(Away)
+*/
+ MSG_AUTO_MSG = 0x3ac,
+/*20050523 to latest
+[자동응답]
+[Automated Message]
+*/
+ MSG_AUTO_MSG2 = 0x3ad,
+/*20050523 to latest
+부재시 타인의 귓말에 자동응답합니다.
+Send an automated message while you are away.
+*/
+ MSG_AUTO_MSG_ON = 0x3ae,
+/*20050523 to latest
+부재시 타인의 귓말에 자동응답하지 않습니다.
+Cancel automated away message.
+*/
+ MSG_AUTO_MSG_OFF = 0x3af,
+/*20050523 to latest
+자동 응답 메시지를 입력하세요.
+Please enter Away Message.
+*/
+ MSG_ENTER_AUTO_MSG = 0x3b0,
+#endif
+#if PACKETVER >= 20050530
+/*20050530 to latest
+/번쩍
+/fsh
+*/
+ MSG_EMOTION_SPARK = 0x3b1,
+/*20050530 to latest
+/빙빙
+/spin
+*/
+ MSG_EMOTION_CONFUSE = 0x3b2,
+/*20050530 to latest
+/하아
+/sigh
+*/
+ MSG_EMOTION_OHNO = 0x3b3,
+/*20050530 to latest
+/덤덤
+/dum
+*/
+ MSG_EMOTION_HUM = 0x3b4,
+/*20050530 to latest
+/시끌
+/crwd
+*/
+ MSG_EMOTION_BLABLA = 0x3b5,
+/*20050530 to latest
+/좌절
+/desp
+*/
+ MSG_EMOTION_OTL = 0x3b6,
+/*20050530 to latest
+/주사위
+/dice
+*/
+ MSG_EMOTION_DICE = 0x3b7,
+/*20050530 to latest
+/pk : 학살자의 상위 10위권 랭킹을 보여줍니다.
+/pk: Shows top 10 Slayers in the server.
+*/
+ MSG_EXPLAIN_KILLER_RANK = 0x3b8,
+/*20050530 to latest
+[POINT] 학살자 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[POINT] You have been rewarded with %d Slayer rank points. Your point total is %d.
+*/
+ MSG_KILLER_POINT = 0x3b9,
+#endif
+#if PACKETVER >= 20050608
+/*20050608 to latest
+진화 가능
+Evolution Available
+*/
+ MSG_HOMUN_EVOLVE = 0x3ba,
+/*20050608 to latest
+^ff0000^ff0000호문클루스를 삭제합니다.^000000^000000 삭제하실 경우 지금까지 키운 내역이 모두 삭제됩니다. 계속하시겠습니까?
+You have decided to delete this Homunculus ^ff0000^ff0000. When deleted, the homunculus and its history will be deleted and they cannot be restored in the future. Would you like to continue?
+*/
+ MSG_DELETE_HOMUN = 0x3bb,
+#endif
+#if PACKETVER >= 20050613
+/*20050613 to latest
+호문의 상태를 파일에 저장합니다.
+Save Homunculus status as a file.
+*/
+ MSG_TRACE_AI_ON = 0x3bc,
+/*20050613 to latest
+호문의 상태를 파일에 저장하지 않습니다.
+Do not save Homunculus status as a file.
+*/
+ MSG_TRACE_AI_OFF = 0x3bd,
+/*20050613 to latest
+Crusader
+*/
+ MSG_CRUSADER = 0x3be,
+/*20050613 to latest
+Monk
+*/
+ MSG_MONK = 0x3bf,
+/*20050613 to latest
+Sage
+*/
+ MSG_SAGE = 0x3c0,
+/*20050613 to latest
+Rouge
+Rogue
+*/
+ MSG_ROGUE = 0x3c1,
+/*20050613 to latest
+Alchemist
+*/
+ MSG_ALCHEMIST = 0x3c2,
+/*20050613 to latest
+Bard
+*/
+ MSG_BARD = 0x3c3,
+/*20050613 to latest
+Crusader_W
+Crusader
+*/
+ MSG_CRUSADER_W = 0x3c4,
+/*20050613 to latest
+Monk_W
+Monk
+*/
+ MSG_MONK_W = 0x3c5,
+/*20050613 to latest
+Sage_W
+Sage
+*/
+ MSG_SAGE_W = 0x3c6,
+/*20050613 to latest
+Rouge_W
+Rogue
+*/
+ MSG_ROGUE_W = 0x3c7,
+/*20050613 to latest
+Alchemist_W
+Alchemist
+*/
+ MSG_ALCHEMIST_W = 0x3c8,
+/*20050613 to latest
+Dancer
+*/
+ MSG_DANCER = 0x3c9,
+/*20050613 to latest
+Novice High
+High Novice
+*/
+ MSG_NOVICE_H = 0x3ca,
+/*20050613 to latest
+Swordman High
+High Swordman
+*/
+ MSG_SWORDMAN_H = 0x3cb,
+/*20050613 to latest
+Magician High
+High Mage
+*/
+ MSG_MAGICIAN_H = 0x3cc,
+/*20050613 to latest
+Archer High
+High Archer
+*/
+ MSG_ARCHER_H = 0x3cd,
+/*20050613 to latest
+Acolyte High
+High Acolyte
+*/
+ MSG_ACOLYTE_H = 0x3ce,
+/*20050613 to latest
+Merchant High
+High Merchant
+*/
+ MSG_MERCHANT_H = 0x3cf,
+/*20050613 to latest
+Thief High
+High Thief
+*/
+ MSG_THIEF_H = 0x3d0,
+/*20050613 to latest
+Novice High_W
+High Novice
+*/
+ MSG_NOVICE_H_W = 0x3d1,
+/*20050613 to latest
+Swordman High_W
+High Swordman
+*/
+ MSG_SWORDMAN_H_W = 0x3d2,
+/*20050613 to latest
+Magician High_W
+High Mage
+*/
+ MSG_MAGICIAN_H_W = 0x3d3,
+/*20050613 to latest
+Archer High_W
+High Archer
+*/
+ MSG_ARCHER_H_W = 0x3d4,
+/*20050613 to latest
+Acolyte High_W
+High Acolyte
+*/
+ MSG_ACOLYTE_H_W = 0x3d5,
+/*20050613 to latest
+Merchant High_W
+High Merchant
+*/
+ MSG_MERCHANT_H_W = 0x3d6,
+/*20050613 to latest
+Thief High_W
+High Thief
+*/
+ MSG_THIEF_H_W = 0x3d7,
+/*20050613 to latest
+Lord Knight
+*/
+ MSG_KNIGHT_H = 0x3d8,
+/*20050613 to latest
+High Priest
+*/
+ MSG_PRIEST_H = 0x3d9,
+/*20050613 to latest
+High Wizard
+*/
+ MSG_WIZARD_H = 0x3da,
+/*20050613 to latest
+White Smith
+WhiteSmith
+*/
+ MSG_BLACKSMITH_H = 0x3db,
+/*20050613 to latest
+Sniper
+*/
+ MSG_HUNTER_H = 0x3dc,
+/*20050613 to 20181128
+Saaassin Cross
+Assassin Cross
+20181205 to latest
+Assassin Cross
+*/
+ MSG_ASSASSIN_H = 0x3dd,
+/*20050613 to latest
+Lord Knight_W
+Lord Knight
+*/
+ MSG_KNIGHT_H_W = 0x3de,
+/*20050613 to latest
+High Priest_W
+High Priest
+*/
+ MSG_PRIEST_H_W = 0x3df,
+/*20050613 to latest
+High Wizard_W
+High Wizard
+*/
+ MSG_WIZARD_H_W = 0x3e0,
+/*20050613 to latest
+White Smith_W
+WhiteSmith
+*/
+ MSG_BLACKSMITH_H_W = 0x3e1,
+/*20050613 to latest
+Sniper_W
+Sniper
+*/
+ MSG_HUNTER_H_W = 0x3e2,
+/*20050613 to 20181128
+Saaassin Cross_W
+Assassin Cross
+20181205 to latest
+Assassin Cross_W
+*/
+ MSG_ASSASSIN_H_W = 0x3e3,
+/*20050613 to latest
+Paladin
+*/
+ MSG_CRUSADER_H = 0x3e4,
+/*20050613 to latest
+Champion
+*/
+ MSG_MONK_H = 0x3e5,
+/*20050613 to latest
+Professor
+Scholar
+*/
+ MSG_SAGE_H = 0x3e6,
+/*20050613 to latest
+Stalker
+*/
+ MSG_ROGUE_H = 0x3e7,
+/*20050613 to latest
+Creator
+Biochemist
+*/
+ MSG_ALCHEMIST_H = 0x3e8,
+/*20050613 to latest
+Clown
+Minstrel
+*/
+ MSG_BARD_H = 0x3e9,
+/*20050613 to latest
+Paladin_W
+Paladin
+*/
+ MSG_CRUSADER_H_W = 0x3ea,
+/*20050613 to latest
+Champion_W
+Champion
+*/
+ MSG_MONK_H_W = 0x3eb,
+/*20050613 to latest
+Professor_W
+Professor
+*/
+ MSG_SAGE_H_W = 0x3ec,
+/*20050613 to latest
+Stalker_W
+Stalker
+*/
+ MSG_ROGUE_H_W = 0x3ed,
+/*20050613 to latest
+Creator_W
+Creator
+*/
+ MSG_ALCHEMIST_H_W = 0x3ee,
+/*20050613 to latest
+Gypsy
+*/
+ MSG_DANCER_H = 0x3ef,
+/*20050613 to latest
+비밀번호가 지정되어 있지 않습니다. 새로운 비밀번호를 지정하시겠습니까?
+You have not set a password yet. Would you like to create one now?
+*/
+ MSG_STORE_PASSWORD_REQ = 0x3f0,
+/*20050613 to latest
+비밀번호를 3회 틀려셨습니다. 나중에 다시 시도해 주세요.
+You have incorrectly entered the password 3 times. Please try again later.
+*/
+ MSG_STORE_PASSWORD_PENALTY = 0x3f1,
+/*20050613 to latest
+비밀번호 변경이 실패하였습니다.
+Password creation has failed.
+*/
+ MSG_STORE_PASSWORD_CHANGE_NG = 0x3f2,
+/*20050613 to latest
+비밀번호는 4자리 이상 8자리이하여야만 합니다.
+Password must be 4~8 letters long.
+*/
+ MSG_STORE_PASSWORD_4_8 = 0x3f3,
+/*20050613 to latest
+비밀번호
+Password
+*/
+ MSG_STORE_PASSWORD = 0x3f4,
+/*20050613 to latest
+신규 비밀번호
+New Password
+*/
+ MSG_STORE_NEW_PASSWORD = 0x3f5,
+/*20050613 to latest
+확인 비밀번호
+Confirm Password
+*/
+ MSG_STORE_RENEW_PASSWORD = 0x3f6,
+/*20050613 to latest
+비밀번호 변경이 완료되었습니다.
+Password has been changed.
+*/
+ MSG_STORE_PASSWORD_CHANGE_OK = 0x3f7,
+/*20050613 to latest
+비밀번호가 서로 다릅니다.
+Password does not match.
+*/
+ MSG_STORE_PASSWORD_MISMATCH = 0x3f8,
+/*20050613 to latest
+비밀번호 입력
+Enter Password
+*/
+ MSG_STORE_PASSWORD_INPUT = 0x3f9,
+#endif
+#if PACKETVER >= 20050624
+/*20050624 to 20050624
+호문이 아사 직전입니다!!! 밥좀 주셈~!!
+20050628 to latest
+호문이 아사 직전입니다! 먹이를 주지 않으면 가출하게됩니다.
+Your Homunculus is starving. Please feed it, otherwise it will leave you.
+*/
+ MSG_HOMUN_HUNGRY = 0x3fa,
+/*20050624 to latest
+경험치
+EXP
+*/
+ MSG_HOMUN_EXP = 0x3fb,
+#endif
+#if PACKETVER >= 20050628
+/*20050628 to 20110526
+[EVENT] 이벤트에 당첨되셨습니다. 게임내에서 아이템을 지급받으십시요.
+20110531 to latest
+수령하지 않은 아이템이 존재합니다. 알베르타의 존다 기획사 직원을 찾아주세요. ^ff0000※ 아이템 수령 기간이 지나면 아이템이 소실 됩니다!^000000
+[EVENT] You have won an event prize. Please claim your prize in game.
+*/
+ MSG_EVENT_RESULT = 0x3fc,
+#endif
+#if PACKETVER >= 20050704
+/*20050704 to latest
+싫어함
+Hate
+*/
+ MSG_HATE = 0x3fd,
+/*20050704 to 20050704
+매우 싫어함
+20050711 to latest
+매우싫어함
+Hate with a Passion
+*/
+ MSG_VERYHATE = 0x3fe,
+#endif
+#if PACKETVER >= 20050718
+/*20050718 to latest
+호문클루스가 사용자 인공지능으로 동작합니다.
+Homunculus has been customized.
+*/
+ MSG_HOMUN_USERAI_ON = 0x3ff,
+/*20050718 to latest
+호문클루스가 기본 인공지능으로 동작합니다.
+Homunculus has been activated with the basic AI.
+*/
+ MSG_HOMUN_USERAI_OFF = 0x400,
+#endif
+#if PACKETVER >= 20050808
+/*20050808 to latest
+편지목록
+Mail List
+*/
+ MSG_MAIL_LIST = 0x401,
+/*20050808 to latest
+편지쓰기
+Write Mail
+*/
+ MSG_MAIL_WRITE = 0x402,
+/*20050808 to latest
+편지읽기
+Read Mail
+*/
+ MSG_MAIL_READ = 0x403,
+#endif
+#if PACKETVER >= 20050822
+/*20050822 to latest
+한번 지정하시면 변경이 불가능합니다! 이 맵으로 지정하시겠습니까?
+You cannot change a map's designation once it is designated. Are you sure that you want to designate this map?
+*/
+ MSG_STARPLACE_ACCEPT = 0x404,
+/*20050822 to 20050822
+보내실 아이템이 추가 되었습니다.
+20050829 to 20051018
+아이템창에 아이템이 추가 되었습니다.
+20051024 to latest
+메일 아이템을 수령했습니다.
+Item has been added in the Item Window.
+*/
+ MSG_MAIL_ADD_ITEM_SUCCESS = 0x405,
+/*20050822 to 20050822
+보내실 아이템이 추가 되지 않았습니다.
+20050829 to 20051018
+아이템창에 아이템이 추가 되지 않았습니다.
+20051024 to latest
+메일 아이템을 수령하지 못했습니다.
+You have failed to add the item in the Item Window.
+*/
+ MSG_MAIL_ADD_ITEM_FAILURE = 0x406,
+/*20050822 to latest
+메일 보내기가 성공하였습니다.
+You have successfully mailed a message.
+*/
+ MSG_MAIL_SEND_SUCCESS = 0x407,
+/*20050822 to latest
+메일 보내기가 실패하였습니다. 받는 사람이 존재하지 않습니다.
+You have failed to mail a message. Recipient does not exist.
+*/
+ MSG_MAIL_USER_NOT_FOUND = 0x408,
+#endif
+#if PACKETVER >= 20050829
+/*20050829 to latest
+[태양과 달과 별의 천사] 지정했던 장소들과 몬스터들이 초기화됐습니다!
+[Solar, Lunar and Stellar Angel] Designated places and monsters have been reset.
+*/
+ MSG_STAR_ANGEL = 0x409,
+/*20050829 to latest
+경매 등록이 실패했습니다.
+The minimum starting bid for auctions is 10,000,000 zeny.
+*/
+ MSG_AUCTION_ADD_FALSE = 0x40a,
+/*20050829 to latest
+경매 등록이 성공했습니다.
+You have successfully started a new auction.
+*/
+ MSG_AUCTION_ADD_TRUE = 0x40b,
+/*20050829 to latest
+해당 경매가 취소되었습니다.
+The auction has been canceled.
+*/
+ MSG_AUCTION_ADD_CANCEL = 0x40c,
+/*20050829 to latest
+입찰자가 있는 경매는 취소할 수 없습니다.
+An auction with at least one bidder cannot be canceled.
+*/
+ MSG_AUCTION_ADD_CANCEL_FALSE = 0x40d,
+#endif
+#if PACKETVER >= 20050905
+/*20050905 to latest
+메일 삭제가 성공하였습니다.
+Mail has been successfully deleted.
+*/
+ MSG_MAIL_DELETE_SUCCESS = 0x40e,
+/*20050905 to latest
+메일 삭제가 실패하였습니다.
+You have failed to delete the mail.
+*/
+ MSG_MAIL_DELETE_FAILURE = 0x40f,
+#endif
+#if PACKETVER >= 20050912
+/*20050912 to latest
+던지는 단검이 장착되었습니다.
+You have equipped throwing daggers.
+*/
+ MSG_MSG_KNIFE_EQUIPMENT_SUCCESS = 0x410,
+#endif
+#if PACKETVER >= 20050926
+/*20050926 to latest
+%s 님이 로그인했습니다.
+%s has logged in.
+*/
+ MSG_LOGIN_FRIEND = 0x411,
+/*20050926 to latest
+%s 님이 로그아웃했습니다.
+%s has logged out.
+*/
+ MSG_LOGOUT_FRIEND = 0x412,
+#endif
+#if PACKETVER >= 20051004
+/*20051004 to latest
+/loginout : 길드원과 친구들의 접속관련 메세지를 보여줍니다. On Off
+/loginout: Shows guildsmen and friends online status. On Off
+*/
+ MSG_EXPLAIN_LOGINOUT = 0x413,
+/*20051004 to latest
+친구들의 접속관련 메세지를 대화창에 표시합니다. [/li ON]
+Display online status of friends in Chat Window. [/li ON]
+*/
+ MSG_LOGINOUT_ON = 0x414,
+/*20051004 to latest
+친구들의 접속관련 메세지를 대화창에 표시하지않습니다. [/li OFF]
+Do not display online status of friends in Chat Window. [/li OFF]
+*/
+ MSG_LOGINOUT_OFF = 0x415,
+/*20051004 to latest
+이미 실행중입니다.
+It is already running.
+*/
+ MSG_SGP_CODE_ALREADY_RUNNING = 0x416,
+/*20051004 to latest
+매크로 사용이 감지되었습니다.
+Use of Macro program has been detected.
+*/
+ MSG_SGP_CODE_DETECTED_MACRO = 0x417,
+/*20051004 to latest
+스피드해킹이 감지되었습니다.
+Use of Speed hack has been detected.
+*/
+ MSG_SGP_CODE_DETECTED_SPEEDHACK = 0x418,
+/*20051004 to latest
+API 후킹이 감지되었습니다.
+API Hooking has been detected.
+*/
+ MSG_SGP_CODE_DETECTED_APIHOOK = 0x419,
+/*20051004 to latest
+메시지 후킹이 감지되었습니다.
+Message Hooking has been detected.
+*/
+ MSG_SGP_CODE_DETECTED_MSGHOOK = 0x41a,
+/*20051004 to latest
+모듈이 변조 또는 손상되었거나 버전이 일치하지 않습니다.
+Module has been modified or damaged or its version does not match.
+*/
+ MSG_SGP_CODE_NOT_EQUALENCRYPTEDDATA = 0x41b,
+#endif
+#if PACKETVER >= 20051010
+/*20051010 to latest
+(태국)귀하는 게임방 과금으로 로그인 하셨습니다.
+(Thailand) You have logged in game with PC cafe payment.
+*/
+ MSG_BILLING_PCB = 0x41c,
+#endif
+#if PACKETVER >= 20051017
+/*20051017 to latest
+이전
+Prev
+*/
+ MSG_PREV_PAGE = 0x41d,
+/*20051017 to latest
+다음
+Next
+*/
+ MSG_NEXT_PAGE = 0x41e,
+/*20051017 to latest
+경매
+Auction
+*/
+ MSG_AUCTION = 0x41f,
+/*20051017 to latest
+물품보기
+Product List
+*/
+ MSG_AUCTION_VIEW = 0x420,
+/*20051017 to latest
+등록하기
+Register
+*/
+ MSG_AUCTION_ADD = 0x421,
+/*20051017 to latest
+판매 진행상태
+Sale Status
+*/
+ MSG_AUCTION_SELL = 0x422,
+/*20051017 to latest
+구매 진행상태
+Purchase Status
+*/
+ MSG_AUCTION_BUY = 0x423,
+/*20051017 to latest
+아이템
+Item
+*/
+ MSG_ITEM2 = 0x424,
+/*20051017 to latest
+아이템명
+Name
+*/
+ MSG_ITEM_NAME2 = 0x425,
+/*20051017 to latest
+가격 / 즉시구입가격
+Current Bid / Max Bid
+*/
+ MSG_ITEM_PRICE = 0x426,
+/*20051017 to latest
+판매자
+Seller
+*/
+ MSG_SELLER = 0x427,
+/*20051017 to latest
+구매자
+Buyer
+*/
+ MSG_BUYER = 0x428,
+/*20051017 to latest
+종료시간
+End Time
+*/
+ MSG_FINISH_TIME = 0x429,
+/*20051017 to latest
+%m월 %d일 %H시
+%m %d %H
+*/
+ MSG_TIME_TYPE = 0x42a,
+/*20051017 to latest
+시간설정
+Time (Hr)
+*/
+ MSG_SET_TIME = 0x42b,
+/*20051017 to latest
+수수료
+Fee
+*/
+ MSG_CHARGE = 0x42c,
+/*20051017 to 20170906
+검색 된 아이템이 없습니다.
+20170913 to latest
+검색된 아이템이 없습니다.
+No items found in search.
+*/
+ MSG_NOTHING_SEARCH_ITEM = 0x42d,
+/*20051017 to latest
+현재 판매중인 아이템이 없습니다.
+Your Sale List is empty.
+*/
+ MSG_NOTHING_SEARCH_SELL_ITEM = 0x42e,
+/*20051017 to latest
+현재 구매중인 아이템이 없습니다.
+Your Purchase List is empty.
+*/
+ MSG_NOTHING_SEARCH_BUY_ITEM = 0x42f,
+/*20051017 to latest
+경매정보가 정확하지 않습니다.
+Auction Information is incorrect or incomplete.
+*/
+ MSG_ERROR_AUCTION_ITEM_INFO = 0x430,
+/*20051017 to latest
+경매에 등록할 아이템 정보가 없습니다.
+You must drag and drop an item from your Inventory into the Register Window to begin a new auction.
+*/
+ MSG_NOTHING_AUCTION_ITEM_INFO = 0x431,
+/*20051017 to latest
+이미 등록된 경매입니다.
+The auction has already been registered.
+*/
+ MSG_ERROR_ADD_AUCTION = 0x432,
+/*20051017 to latest
+제시가격
+Starting Bid
+*/
+ MSG_PRICE = 0x433,
+/*20051017 to latest
+구입희망가격
+Current Bid
+*/
+ MSG_PRICE2 = 0x434,
+/*20051017 to latest
+즉시구입가격
+Buy Now Price
+*/
+ MSG_PRICE3 = 0x435,
+/*20051017 to latest
+현재소지제니
+Your Current Zeny
+*/
+ MSG_PRICE4 = 0x436,
+/*20051017 to latest
+현재최고가격
+Highest Bid
+*/
+ MSG_PRICE5 = 0x437,
+/*20051017 to latest
+이전입찰가격
+Previous Bid
+*/
+ MSG_PRICE6 = 0x438,
+/*20051017 to latest
+추가입찰가격
+Next Bid
+*/
+ MSG_PRICE7 = 0x439,
+/*20051017 to latest
+구입하시겠습니까?
+Press buy to confirm.
+*/
+ MSG_BUY_ACTION_ITEM = 0x43a,
+/*20051017 to latest
+이 가격에 판매하시겠습니까?
+Would you like to sell this item?
+*/
+ MSG_SELL_ACTION_ITEM = 0x43b,
+/*20051017 to latest
+입찰하기
+Place Bid
+*/
+ MSG_BUY_AUCTION = 0x43c,
+/*20051017 to latest
+즉시구매하기
+Buy Now
+*/
+ MSG_BUY_AUCTION2 = 0x43d,
+/*20051017 to latest
+경매종료하기
+End the Auction
+*/
+ MSG_BUY_AUCTION3 = 0x43e,
+/*20051017 to latest
+재입찰하기
+Place another Bid
+*/
+ MSG_FINISH_AUCTION = 0x43f,
+/*20051017 to latest
+해당 경매에 대한 입찰이 성공했습니다.
+You have placed a bid.
+*/
+ MSG_RESULT_BUY_TRUE = 0x440,
+/*20051017 to latest
+해당 경매에 대한 입찰이 실패했습니다.
+You have failed to place a bid.
+*/
+ MSG_RESULT_BUY_FALSE = 0x441,
+/*20051017 to latest
+제니가 충분하지 않습니다.
+You do not have enough zeny.
+*/
+ MSG_RESULT_BUY_FALSE_MONEY = 0x442,
+#endif
+#if PACKETVER >= 20051024
+/*20051024 to latest
+방어구
+Armors
+*/
+ MSG_EQUIP = 0x443,
+/*20051024 to latest
+카드
+Card
+*/
+ MSG_CARD = 0x444,
+/*20051024 to latest
+기타
+Other
+*/
+ MSG_ETC = 0x445,
+/*20051024 to latest
+경매번호
+Bid
+*/
+ MSG_AUCTION_NUM = 0x446,
+/*20051024 to latest
+검색
+Search
+*/
+ MSG_AUCTION_SEARCH = 0x447,
+/*20051024 to latest
+해당 경매를 종료했습니다.
+You have ended the auction.
+*/
+ MSG_RESULT_MY_SELL_STOP_TRUE = 0x448,
+/*20051024 to latest
+해당 경매를 종료 할 수 없습니다.
+You cannot end the auction.
+*/
+ MSG_RESULT_MY_SELL_STOP_FALSE = 0x449,
+/*20051024 to latest
+경매 번호가 정확하지 않습니다.
+Bid Number is incorrect.
+*/
+ MSG_RESULT_AUCTION_ID_FALSE = 0x44a,
+/*20051024 to latest
+받는이
+To
+*/
+ MSG_SENDER = 0x44b,
+#endif
+#if PACKETVER >= 20051205
+/*20051205 to latest
+제 목
+Title
+*/
+ MSG_TITLE2 = 0x44c,
+/*20051205 to latest
+새 메일이 도착하였습니다.
+You have received a message in the mail.
+*/
+ MSG_NEW_MAIL = 0x44d,
+/*20051205 to latest
+검색중입니다.
+Searching...
+*/
+ MSG_SEARCHING_ITEM = 0x44e,
+/*20051205 to latest
+더 이상 경매 등록할 수 없습니다. 경매 등록은 최대 5개까지 가능합니다.
+You cannot register more than 5 items in an auction at a time.
+*/
+ MSG_AUCTION_ADD_OVER = 0x44f,
+/*20051205 to latest
+더 이상 경매 물품에 입찰할 수 없습니다. 경매 물품 입찰은 최대 5개까지 가능합니다.
+You cannot place more than 5 bids at a time.
+*/
+ MSG_RESULT_BUY_OVER = 0x450,
+/*20051205 to latest
+삭제하려는 메일에 수령하지 않은 아이템이 있습니다.
+Please accept all items from your mail before deleting.
+*/
+ MSG_MAIL_DELETE_ERROR = 0x451,
+/*20051205 to latest
+메일 제목을 입력하여 주십시오.
+Please enter a title.
+*/
+ MSG_MAIL_SEND_ERROR = 0x452,
+/*20051205 to latest
+/shopping : 클릭 한번으로 상점을 열고 상점이름 오른쪽 클릭으로 상점을 닫습니다 On Off
+/shopping: Enables you to open a shop with a single left-click and close your shop with a single right-click. On Off
+*/
+ MSG_EXPLAIN_SHOPPING = 0x453,
+/*20051205 to latest
+클릭 한번으로 상점을 열고 상점이름을 오른쪽 클릭해서 상점을 닫을수있습니다. [/sh ON]
+You can now open a shop with a single left-click and close your shop with a single right-click. [sh ON].
+*/
+ MSG_SHOPPING_ON = 0x454,
+/*20051205 to latest
+더블클릭 으로 상점을 열게됩니다. [/sh OFF]
+You can open a shop by double-clicking. [/sh OFF]
+*/
+ MSG_SHOPPING_OFF = 0x455,
+/*20051205 to latest
+메일을 보내려면, 제니 입력을 완료해야 합니다.
+Please enter zeny amount before sending mail.
+*/
+ MSG_MAIL_SEND_ERROR2 = 0x456,
+/*20051205 to latest
+경매 수수료가 부족합니다.
+You do not have enough zeny to pay the Auction Fee.
+*/
+ MSG_ADD_MONEY_FALSE = 0x457,
+/*20051205 to latest
+상태보기
+View Status
+*/
+ MSG_HOMUN_SHOWINFO = 0x458,
+/*20051205 to latest
+먹이주기
+Feed
+*/
+ MSG_HOMUN_FEEDING = 0x459,
+/*20051205 to latest
+대기
+Stand By
+*/
+ MSG_HOMUN_WAITING = 0x45a,
+/*20051205 to latest
+슈퍼노비스(남)
+Super Novice (Male)
+*/
+ MSG_JOB_SUPERNOVICE_M = 0x45b,
+/*20051205 to latest
+슈퍼노비스(여)
+Super Novice (Female)
+*/
+ MSG_JOB_SUPERNOVICE_F = 0x45c,
+/*20051205 to latest
+태권소년
+Taekwon Boy
+*/
+ MSG_JOB_TAEKWON_M = 0x45d,
+/*20051205 to latest
+태권소녀
+Taekwon Girl
+*/
+ MSG_JOB_TAEKWON_F = 0x45e,
+/*20051205 to latest
+권성(남)
+Taekwon Master (Male)
+*/
+ MSG_KWONSUNG_M = 0x45f,
+/*20051205 to latest
+권성(여)
+Taekwon Master (Female)
+*/
+ MSG_KWONSUNG_F = 0x460,
+/*20051205 to latest
+소울링커(남)
+Soul Linker (Male)
+*/
+ MSG_SOULLINGKER_M = 0x461,
+/*20051205 to latest
+소울링커(여)
+Soul Linker (Female)
+*/
+ MSG_SOULLINGKER_F = 0x462,
+/*20051205 to latest
+PC방요금제로 2개이상의 계정이 접속되고있습니다. 확인후 다시 사용하시기 바랍니다.
+Please check the connection, more than 2 accounts are connected with Internet Cafe Time Plan.
+*/
+ MSG_BAN_PC_IP_UNFAIR = 0x463,
+/*20051205 to latest
+귀하는 월정액 요금제 사용자 입니다. (남은기간 : %d일)
+Your account is using monthly payment. (Remaining day: %d day)
+*/
+ MSG_BILLING_1 = 0x464,
+/*20051205 to latest
+귀하는 정량 요금제 사용자 입니다. (남은시간 : %d시간 %분 %초)
+Your account is using time limited. (Remaining time: %d hour %d minute %d second)
+*/
+ MSG_BILLING_2 = 0x465,
+#endif
+#if PACKETVER >= 20051212
+/*20051212 to latest
+해당 아이템은 메일에 첨부 할수 없는 아이템입니다.
+This item cannot be mailed.
+*/
+ MSG_MAIL_ITEM_ADD_FAILED = 0x466,
+/*20051212 to latest
+더이상 아이템을 가질수 없습니다. 아이템은 메일로 보관하겠습니다.
+You cannot accept any more items. Please try again later.
+*/
+ MSG_MAIL_ADD_ITEM_OVER_FAILURE = 0x467,
+#endif
+#if PACKETVER >= 20060109
+/*20060109 to latest
+남성
+Male
+*/
+ MSG_PTSEX1 = 0x468,
+/*20060109 to latest
+여성
+Female
+*/
+ MSG_PTSEX2 = 0x469,
+/*20060109 to latest
+새로운 유저입니다
+New User.
+*/
+ MSG_PT_NEWUSER = 0x46a,
+/*20060109 to latest
+E-mail은 캐릭터를 지울때 필요합니다.
+E-mail address is required to delete a character.
+*/
+ MSG_PT_ACINFO = 0x46b,
+/*20060109 to latest
+정확한 형식으로 입력해 주세요.
+Please enter the correct information.
+*/
+ MSG_PT_ACINFO2 = 0x46c,
+/*20060109 to latest
+이 키를 사용하세요
+Please use this key.
+*/
+ MSG_PT_NEWKEYINFO = 0x46d,
+/*20060109 to latest
+정확한 카드 패스워드를 다시 입력해주세요
+Please enter the correct card password.
+*/
+ MSG_PT_FAIL_CARDPASS = 0x46e,
+/*20060109 to latest
+PT정보
+PT Info
+*/
+ MSG_PTID1 = 0x46f,
+/*20060109 to latest
+PT_ID는 %s
+PT_ID is %s
+*/
+ MSG_PTID2 = 0x470,
+/*20060109 to latest
+NUM_ID는 %s
+NUM_ID is %s
+*/
+ MSG_PTID3 = 0x471,
+/*20060109 to latest
+잊지않게 주의하세요
+Please don't forget this information.
+*/
+ MSG_PTID4 = 0x472,
+/*20060109 to latest
+1001
+*/
+ MSG_PT_ERROR_1001 = 0x473,
+/*20060109 to latest
+1002
+*/
+ MSG_PT_ERROR_1002 = 0x474,
+/*20060109 to latest
+1003
+*/
+ MSG_PT_ERROR_1003 = 0x475,
+/*20060109 to latest
+1004
+*/
+ MSG_PT_ERROR_1004 = 0x476,
+/*20060109 to latest
+1006
+*/
+ MSG_PT_ERROR_1006 = 0x477,
+/*20060109 to latest
+1007
+*/
+ MSG_PT_ERROR_1007 = 0x478,
+/*20060109 to latest
+1008
+*/
+ MSG_PT_ERROR_1008 = 0x479,
+/*20060109 to latest
+1009
+*/
+ MSG_PT_ERROR_1009 = 0x47a,
+/*20060109 to latest
+1012
+*/
+ MSG_PT_ERROR_1012 = 0x47b,
+/*20060109 to latest
+1013
+*/
+ MSG_PT_ERROR_1013 = 0x47c,
+/*20060109 to latest
+1014
+*/
+ MSG_PT_ERROR_1014 = 0x47d,
+/*20060109 to latest
+1015
+*/
+ MSG_PT_ERROR_1015 = 0x47e,
+/*20060109 to latest
+1019
+*/
+ MSG_PT_ERROR_1019 = 0x47f,
+/*20060109 to latest
+1020
+Navigation
+*/
+ MSG_PT_ERROR_1020 = 0x480,
+/*20060109 to latest
+1021
+*/
+ MSG_PT_ERROR_1021 = 0x481,
+/*20060109 to latest
+1023
+*/
+ MSG_PT_ERROR_1023 = 0x482,
+/*20060109 to latest
+1024
+*/
+ MSG_PT_ERROR_1024 = 0x483,
+/*20060109 to latest
+1025
+*/
+ MSG_PT_ERROR_1025 = 0x484,
+/*20060109 to latest
+1027
+*/
+ MSG_PT_ERROR_1027 = 0x485,
+/*20060109 to latest
+1028
+*/
+ MSG_PT_ERROR_1028 = 0x486,
+/*20060109 to latest
+10
+*/
+ MSG_PT_ERROR_10 = 0x487,
+/*20060109 to latest
+20
+*/
+ MSG_PT_ERROR_20 = 0x488,
+/*20060109 to latest
+40
+*/
+ MSG_PT_ERROR_40 = 0x489,
+/*20060109 to latest
+50
+*/
+ MSG_PT_ERROR_50 = 0x48a,
+/*20060109 to latest
+60
+*/
+ MSG_PT_ERROR_60 = 0x48b,
+/*20060109 to latest
+70
+*/
+ MSG_PT_ERROR_70 = 0x48c,
+/*20060109 to latest
+80
+*/
+ MSG_PT_ERROR_80 = 0x48d,
+/*20060109 to latest
+90
+*/
+ MSG_PT_ERROR_90 = 0x48e,
+/*20060109 to latest
+100
+*/
+ MSG_PT_ERROR_100 = 0x48f,
+/*20060109 to latest
+110
+*/
+ MSG_PT_ERROR_110 = 0x490,
+#endif
+#if PACKETVER >= 20060126
+/*20060126 to latest
+30포인트를 받으시겠습니까?
+Do you want to receive 30 points?
+*/
+ MSG_PT_POINT1 = 0x491,
+/*20060126 to latest
+30포인트(5시간)이 충전되었습니다
+30 points (5 hours) have been added.
+*/
+ MSG_PT_POINT2 = 0x492,
+#endif
+#if PACKETVER >= 20060213
+/*20060213 to latest
+감정되지 않은 아이템은 경매에 등록할 수 없습니다.
+You cannot register Unidentified Items in auctions.
+*/
+ MSG_AUCTION_ADD_ITEM_FAILURE = 0x493,
+/*20060213 to latest
+소비 아이템은 경매에 등록할 수 없습니다.
+You cannot register this Consumable Item in an auction.
+*/
+ MSG_AUCTION_ADD_ITEM_FAILURE2 = 0x494,
+#endif
+#if PACKETVER >= 20060306
+/*20060306 to latest
+메일창을 열려면 카트창을 닫아 주십시요.
+Please close the Cart Window to open the Mail Window.
+*/
+ MSG_CLOSE_MERCHANTITEMWND = 0x495,
+/*20060306 to latest
+카트창을 열려면 메일창을 닫아 주십시요.
+Please close the Mail Window to open the Cart Window.
+*/
+ MSG_CLOSE_MAILWND = 0x496,
+#endif
+#if PACKETVER >= 20060313
+/*20060313 to latest
+탄환이 장착되었습니다.
+Bullets have been equipped.
+*/
+ MSG_MSG_BULLET_EQUIPMENT_SUCCESS = 0x497,
+/*20060313 to latest
+메일이 반송되었습니다.
+The mail has been returned to sender.
+*/
+ MSG_MAIL_RETURN_SUCCESS = 0x498,
+/*20060313 to latest
+메일이 존재하지 않습니다.
+The mail no longer exists.
+*/
+ MSG_MAIL_RETURN_FAILURE = 0x499,
+#endif
+#if PACKETVER >= 20060522
+/*20060522 to 20060522
+한시간 동안, 동일한 IP로 접속한 유저가 60건 이상입니다. 확인후 다시 사용하시기 바랍니다.
+20060523 to latest
+한시간 동안, 동일한 IP로 접속한 유저가 30건 이상입니다. 확인후 다시 사용하시기 바랍니다.
+More than 30 players sharing the same IP have logged into the game for an hour. Please check this matter.
+*/
+ MSG_BAN_PC_IP_COUNT_ALL = 0x49a,
+/*20060522 to latest
+한시간 동안, 동일한 IP로 10번 이상 접속되었습니다. 확인후 다시 사용하시기 바랍니다.
+More than 10 connections sharing the same IP have logged into the game for an hour. Please check this matter.
+*/
+ MSG_BAN_PC_IP_COUNT = 0x49b,
+/*20060522 to latest
+게임을 재시작 하십시오
+Please restart the game.
+*/
+ MSG_GAMEGUARD_RESTART = 0x49c,
+#endif
+#if PACKETVER >= 20060703
+/*20060703 to latest
+용병정보 - 아쳐타입
+Mercenary: Archer
+*/
+ MSG_MER_INFO_TYPE_ARCHER = 0x49d,
+/*20060703 to latest
+용병정보 - 검사타입
+Mercenary: Swordman
+*/
+ MSG_MER_INFO_TYPE_SWORDMAN = 0x49e,
+/*20060703 to latest
+용병정보 - 창병타입
+Mercenary: Spearman
+*/
+ MSG_MER_INFO_TYPE_LANCER = 0x49f,
+/*20060703 to 20070109
+남은시간
+20070115 to latest
+삭제시간
+Expiration
+*/
+ MSG_LEFT_TIME = 0x4a0,
+/*20060703 to latest
+신뢰도
+Loyalty
+*/
+ MSG_MER_FRIENDLY = 0x4a1,
+/*20060703 to latest
+소환횟수
+Summons
+*/
+ MSG_MER_CALLCOUNT = 0x4a2,
+/*20060703 to latest
+Kill
+*/
+ MSG_MER_KILL = 0x4a3,
+#endif
+#if PACKETVER >= 20060904
+/*20060904 to latest
+펫이 배가 고파서 당신을 원망하고 있다는 느낌이 든다.
+You can feel hatred from your pet for neglecting to feed it.
+*/
+ MSG_PET_STARVING = 0x4a4,
+/*20060904 to latest
+[POINT] 테이밍미션 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[POINT] You earned %d Taming Mission Ranking Points, giving you a total of %d points.
+*/
+ MSG_GANGSI_POINT = 0x4a5,
+/*20060904 to latest
+[테이밍미션] Target Monster : %s
+[Taming Mission] Target Monster: %s
+*/
+ MSG_GANGSI_MISSION = 0x4a6,
+#endif
+#if PACKETVER >= 20060918
+/*20060918 to latest
+/hunting : 사냥 목록을 보여줍니다.
+/hunting: You can check the your hunting list.
+*/
+ MSG_EXPLAIN_HUNTING = 0x4a7,
+/*20060918 to latest
+[천사의질문] 소녀에게 가르쳐주시어요. %s는 몇 스킬 찍으셨나요?
+[Angel's Question] Please tell me, how many %s skills do you have?
+*/
+ MSG_DEATH_Q01 = 0x4a8,
+/*20060918 to latest
+[천사의질문] 소녀에게 가르쳐주시어요. 소지하시고있는 제니를 십만으로 나누면 얼마가 되시나요?
+[Angel's Question] Please tell me, how much zeny you'll have if you divide it by 100,000?
+*/
+ MSG_DEATH_Q02 = 0x4a9,
+/*20060918 to latest
+[천사의질문] 소녀에게 가르쳐주시어요. 오늘이 몇일이신지 아시나요?
+[Angel's Question] Please tell me, what is today's date?
+*/
+ MSG_DEATH_Q03 = 0x4aa,
+/*20060918 to latest
+[천사의질문] 소녀에게 가르쳐주시어요. %s은 지금 몇이신가요?
+[Angel's Question] Please tell me, how many %s do you have?
+*/
+ MSG_DEATH_Q04 = 0x4ab,
+/*20060918 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 슈노, 태권계열, 무낙계열을 담당하고있는 SiYeon씨의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in SiYeon's name?
+*/
+ MSG_DEATH_Q05 = 0x4ac,
+/*20060918 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 귀엽고 어여쁜 라그나로크의 히로인 Munak의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in Munak's name?
+*/
+ MSG_DEATH_Q06 = 0x4ad,
+/*20060918 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 제가 어여뻐하는 Bongun의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in Bongun's name?
+*/
+ MSG_DEATH_Q07 = 0x4ae,
+/*20060918 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 저희가 존재하는 온라인세계 Ragnarok의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, Ragnarok?
+*/
+ MSG_DEATH_Q08 = 0x4af,
+/*20060918 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 언제나 Online상태인 천사동료들은 큰힘이 되어주죠. Online의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, online?
+*/
+ MSG_DEATH_Q09 = 0x4b0,
+/*20060918 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 죽음도 두려워하지않는 기사들을 상징하는 단어인 Death의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, death?
+*/
+ MSG_DEATH_Q10 = 0x4b1,
+/*20060918 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 기사들은 너무 멋진다고 생각해요. Knight의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, knight?
+*/
+ MSG_DEATH_Q11 = 0x4b2,
+/*20060918 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 중력을 뜻하는 단어인 Gravity의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, gravity?
+*/
+ MSG_DEATH_Q12 = 0x4b3,
+/*20060918 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 어둠속에서도 밝게 사는게 중요하지요. Dark의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, dark?
+*/
+ MSG_DEATH_Q13 = 0x4b4,
+/*20060918 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 뭐든지 수집하는 Collector의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, collecter?
+*/
+ MSG_DEATH_Q14 = 0x4b5,
+/*20060918 to latest
+[천사의대답] 소녀에게 정확한 사실을 가르쳐주셔서 감사하옵니다.
+[Angel's Answer] Thank you for letting me know~
+*/
+ MSG_DEATH_R01 = 0x4b6,
+/*20060918 to latest
+[천사의대답] 사랑스러우신 분이시군요. 소녀 감탄했사옵니다.
+[Angel's Answer] I'm very pleased with your answer. You are a splendid adventurer.
+*/
+ MSG_DEATH_R02 = 0x4b7,
+/*20060918 to latest
+[천사의대답] 소녀 실망했사옵니다.
+[Angel's Answer] You've disappointed me...
+*/
+ MSG_DEATH_R05 = 0x4b8,
+#endif
+#if PACKETVER >= 20060925
+/*20060925 to latest
+[POINT] 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[Point] You earned %d Ranking Points, giving you a total of %d Ranking Points.
+*/
+ MSG_DEATH_POINT = 0x4b9,
+#endif
+#if PACKETVER >= 20060927
+/*20060927 to 20070417
+[%s]의 소지 Point : %d Point
+20070423 to latest
+[%s]의 소지 캐시 : %d 캐시
+[%s]'s Points: %d Points
+*/
+ MSG_POINT_SHOP = 0x4ba,
+#endif
+#if PACKETVER >= 20061009
+/*20061009 to latest
+선택하지 않은 캐릭터는 삭제 됩니다. 완료하시겠습니까?
+Unselected Characters will be deleted. Continue?
+*/
+ MSG_CONFIRM_SELECT_CHARACTERS = 0x4bb,
+/*20061009 to latest
+9개 이상 선택하실 수 없습니다.
+You cannot select more than 8.
+*/
+ MSG_ERROR_SELECT_CHARACTERS = 0x4bc,
+#endif
+#if PACKETVER >= 20061016
+/*20061016 to latest
+캐릭터명을 '%s' (으)로 변경하시겠습니까?
+Do you want to change your name to '%s'?
+*/
+ MSG_CONFIRM_TO_CHANGE_NAME = 0x4bd,
+/*20061016 to latest
+캐릭터명이 성공적으로 변경되었습니다.
+Character Name has been changed successfully.
+*/
+ MSG_CHANGE_NAME_SUCCESS = 0x4be,
+/*20061016 to latest
+캐릭터명 변경이 실패하였습니다.
+You have failed to change this character's name.
+*/
+ MSG_CHANGE_NAME_FAILURE = 0x4bf,
+/*20061016 to latest
+한 번에 한 종류의 아이템만 구매할 수 있습니다.
+You can purchase only one kind of item at a time.
+*/
+ MSG_CAN_BUY_ONLY_ONEITEM = 0x4c0,
+#endif
+#if PACKETVER >= 20061017
+/*20061017 to 20061017
+캐릭터가 하나도 선택되지 않았습니다. 반드시 하나 이상의 캐릭터를 선택하여야 합니다.
+20061023 to latest
+캐릭터가 한개도 선택되지 않았습니다. 반드시 한개 이상의 캐릭터를 선택하여야 합니다.
+No characters were selected. You must select at least one character.
+*/
+ MSG_NO_SELECT_CHARACTERS = 0x4c1,
+#endif
+#if PACKETVER >= 20061023
+/*20061023 to latest
+이미 캐릭터명을 변경한 적이 있습니다. 더 이상 변경 할 수 없습니다.
+This character's name has already been changed. You cannot change a character's name more than once.
+*/
+ MSG_ALREADY_CHANGED_NAME = 0x4c2,
+/*20061023 to latest
+사용자 정보가 정확하지 않습니다.
+User Information is not correct.
+*/
+ MSG_NOTREGISTED_USER = 0x4c3,
+/*20061023 to latest
+다른 사용자가 같은 캐릭터 명을 먼저 사용하였습니다. 다른 캐릭터명을 사용하여 주십시요.
+Another user is using this character name, so please select another one.
+*/
+ MSG_DUPLICATED_CHAR_NAME = 0x4c4,
+#endif
+#if PACKETVER >= 20061030
+/*20061030 to latest
+파티장 권한이 없어 파티원을 소환하지 못했습니다.
+The party member was not summoned because you are not the party leader.
+*/
+ MSG_CANNOT_PARTYCALL = 0x4c5,
+/*20061030 to latest
+현재 맵에는 소환될 파티원이 존재하지 않습니다.
+There is no party member to summon in the current map.
+*/
+ MSG_NO_PARTYMEM_ON_THISMAP = 0x4c6,
+/*20061030 to latest
+이 지역에선 보스몬스터의 흔적을 찾을 수가 없습니다.
+You cannot find any trace of a Boss Monster in this area.
+*/
+ MSG_NOTFIND_BOSSMON = 0x4c7,
+/*20061030 to 20070122
+보스 몬스터 '%s'의 등장 예정시간 %02d시:%02d분
+20070129 to 20071205
+보스 몬스터 '%s'(이)가 %d시 %d분 후에 등장합니다.
+20071211 to latest
+보스 몬스터 '%s'(이)가 %d시간 %d분 후에 등장합니다.
+Boss Monster, '%s' will appear in %02d hour(s) and %02d minute(s).
+*/
+ MSG_APPEARANCE_TIME_OF_BOSSMON = 0x4c8,
+/*20061030 to latest
+보스 몬스터 '%s'의 위치가 미니맵에 표시됩니다.
+The location of Boss Monster, '%s', will be displayed on your Mini-Map.
+*/
+ MSG_SHOW_POSITION_OF_BOSSMON = 0x4c9,
+#endif
+#if PACKETVER >= 20061106
+/*20061106 to 20061211
+%s를 개봉 하시겠습니까? 한번 개봉된 아이템은 창고 저장 외의 다른 이동은 불가하며 동일한 아이템을 중복 사용하더라도 효과가 중첩되지 않습니다.
+20061218 to 20070618
+'%s'를 개봉 하시겠습니까? 한번 개봉된 아이템은 창고 저장 외의 다른 이동은 불가하며 동일한 아이템을 중복 사용하더라도 효과가 중첩되지 않습니다.
+20070619 to 20071218
+'%s'를 개봉 하시겠습니까? 한번 개봉된 아이템은 창고 저장 외의 다른 이동은 불가하며 임대 아이템은 창고 저장도 불가합니다. 동일한 아이템을 중복 사용하더라도 효과가 중첩되지 않습니다.
+20080102 to 20101026
+'%s'를 개봉 하시겠습니까? 한번 개봉된 아이템은 창고 저장 외의 다른 이동은 불가하며 임대 아이템은 창고 저장도 불가합니다. 한정 아이템은 거래 및 이동이 가능 합니다. 동일한 아이템을 중복 사용하더라도 효과가 중첩되지 않습니다.
+20101102 to 20110330
+'%s'를 개봉 하시겠습니까? ^ff0000상자를 개봉하시면 청약 철회 및 환불 대상에서 제외 됩니다.^000000 한번 개봉 된 아이템은 창고 저장 외의 다른 이동은 불가하며 임대 아이템은 창고 저장도 불가합니다. 한정 아이템은 거래 및 이동이 가능 합니다. 동일한 아이템을 중복 사용하더라도 효과가 중첩되지 않습니다.
+20110405 to latest
+'%s'를 개봉 하시겠습니까? ^ff0000상자를 개봉하시면 청약 철회 대상에서 제외 됩니다.^000000 한번 개봉 된 아이템은 창고 저장 외의 다른 이동은 불가하며 임대 아이템은 창고 저장도 불가합니다. 한정 아이템은 거래 및 이동이 가능 합니다. 동일한 아이템을 중복 사용하더라도 효과가 중첩되지 않습니다.
+Do you want to open '%s'? Once opened, the contents cannot be moved to other locations aside from the Kafra Storage. The item effect isn't doubled, even if the same items are used more than once.
+*/
+ MSG_CONFIRM_TO_OPEN_CASH_ITEM = 0x4ca,
+/*20061106 to latest
+NPC가 존재하지 않아 구매가 실패하였습니다.
+The Purchase has failed because the NPC does not exist.
+*/
+ MSG_BUY_CASH_FAIL_NPC = 0x4cb,
+/*20061106 to latest
+부분 유료화 시스템이 정상 작동하지 않아 구매가 실패하였습니다.
+The Purchase has failed because the Kafra Shop System is not working correctly.
+*/
+ MSG_BUY_CASH_FAIL_SYSTEM = 0x4cc,
+/*20061106 to latest
+교환중에는 아이템을 구매 할 수 없습니다.
+You cannot purchase items while you are in a trade.
+*/
+ MSG_BUY_CASH_FAIL_EXCHANGE = 0x4cd,
+/*20061106 to latest
+아이템 정보가 정확하지 않아 구매가 실패하였습니다.
+The Purchase has failed because the Item Information was incorrect.
+*/
+ MSG_BUY_CASH_FAIL_ITEM_ID = 0x4ce,
+#endif
+#if PACKETVER >= 20061204
+/*20061204 to latest
+ STR이 향상되었습니다.
+STR has increased.
+*/
+ MSG_ENST_STR = 0x4cf,
+/*20061204 to latest
+ STR이 원래대로 돌아왔습니다.
+STR has returned to normal.
+*/
+ MSG_DSST_STR = 0x4d0,
+/*20061204 to latest
+ AGI이 향상되었습니다.
+AGI has increased.
+*/
+ MSG_ENST_AGI = 0x4d1,
+/*20061204 to latest
+ AGI이 원래대로 돌아왔습니다.
+AGI has returned to normal.
+*/
+ MSG_DSST_AGI = 0x4d2,
+/*20061204 to latest
+ VIT이 향상되었습니다.
+VIT has increased.
+*/
+ MSG_ENST_VIT = 0x4d3,
+/*20061204 to latest
+ VIT이 원래대로 돌아왔습니다.
+VIT has returned to normal.
+*/
+ MSG_DSST_VIT = 0x4d4,
+/*20061204 to latest
+ INT이 향상되었습니다.
+INT has increased.
+*/
+ MSG_ENST_INT = 0x4d5,
+/*20061204 to latest
+ INT이 원래대로 돌아왔습니다.
+INT has returned to normal.
+*/
+ MSG_DSST_INT = 0x4d6,
+/*20061204 to latest
+ DEX이 향상되었습니다.
+DEX has increased.
+*/
+ MSG_ENST_DEX = 0x4d7,
+/*20061204 to latest
+ DEX이 원래대로 돌아왔습니다.
+DEX has returned to normal.
+*/
+ MSG_DSST_DEX = 0x4d8,
+/*20061204 to latest
+ LUK이 향상되었습니다.
+LUK has increased.
+*/
+ MSG_ENST_LUK = 0x4d9,
+/*20061204 to latest
+ LUK이 원래대로 돌아왔습니다.
+LUK has returned to normal.
+*/
+ MSG_DSST_LUK = 0x4da,
+/*20061204 to latest
+ 회피율이 향상되었습니다.
+Flee Rate (Flee) has increased.
+*/
+ MSG_ENST_AVOIDANCE = 0x4db,
+/*20061204 to latest
+ 회피율이 원래대로 돌아왔습니다.
+Flee Rate has returned to normal.
+*/
+ MSG_DSST_AVOIDANCE = 0x4dc,
+/*20061204 to latest
+ 명중률이 향상되었습니다.
+Accuracy Rate (Hit) has increased.
+*/
+ MSG_ENST_HIT = 0x4dd,
+/*20061204 to latest
+ 명중률이 원래대로 돌아왔습니다.
+Accuracy Rate has returned to normal.
+*/
+ MSG_DSST_HIT = 0x4de,
+/*20061204 to latest
+ 크리티컬 확률이 향상되었습니다.
+Critical Attack (Critical) has increased.
+*/
+ MSG_ENST_CRITICALSUCCESSVALUE = 0x4df,
+/*20061204 to latest
+ 크리티컬 확률이 원래대로 돌아왔습니다.
+Critical Attack has returned to normal.
+*/
+ MSG_DSST_CRITICALSUCCESSVALUE = 0x4e0,
+/*20061204 to 20111021
+ 몬스터 사냥을 통해 얻을 수 있는 경험치가 30분간 1.5배로 증가합니다.
+20111025 to 20111101
+ 30분간 얻을 수 있는 경험치가 75%% 증가합니다.
+20111102 to latest
+ 30분간 얻을 수 있는 경험치가 50%% 증가합니다.
+You will receive 1.5 times more EXP from hunting monsters for the next 30 minutes.
+*/
+ MSG_PLUSEXP = 0x4e1,
+/*20061204 to latest
+ 30분내 사망시 1회에 한해 경험치 감소가 일어나지 않습니다.
+This character will not receive any EXP penalty if killed within the next 30 minutes.
+*/
+ MSG_DDEATHPENALTY = 0x4e2,
+/*20061204 to latest
+ 몬스터 사냥을 통해 얻을 수 있는 기본 아이템의 드롭률이 30분간 2배로 증가합니다.
+Regular item drops from monsters will be doubled for the next 30 minutes.
+*/
+ MSG_RECEIVEITEM = 0x4e3,
+/*20061204 to latest
+ 10분간 맵 내에 출현 가능한 보스 몬스터에 대한 정보를 안내해 드립니다.
+Boss Monster Map Information for the next 10 minutes.
+*/
+ MSG_BOSS_ALARM = 0x4e4,
+/*20061204 to 20061211
+ 정말로 %s아이템을 구매하시겠습니까?, %d포인트가 차감됩니다.
+20061218 to 20070423
+ 정말로 '%s'아이템을 구매하시겠습니까?, %d포인트가 차감됩니다.
+20070423 to 20080603
+ 정말로 '%s'아이템을 구매하시겠습니까?, %d캐시가 차감됩니다.
+20080610 to 20100629
+ 본 아이템은 청약 철회나 환불 대상에서 제외되는 아이템입니다. 정말로 '%s'아이템을 구매하시겠습니까?, %d캐시가 차감됩니다.
+20100701 to 20101026
+ 본 아이템은 청약 철회나 환불 대상에서 제외되는 아이템입니다. 정말로 %s아이템을 구매하시겠습니까?, %d캐시가 차감됩니다.
+20101102 to 20101130
+ ^ff0000본 아이템을 구매 후 개봉하시면 청약 철회 및 환불 대상에서 제외 됩니다.^000000 정말로 %s아이템을 구매하시겠습니까? 구매하실 경우 %d캐시가 차감됩니다.
+20101207 to 20110330
+ ^ff0000본 아이템을 구매 후 개봉하시면 청약 철회 및 환불 대상에서 제외 됩니다.^000000 정말로 아이템을 구매하시겠습니까? 구매하실 경우 %d캐시가 차감됩니다.
+20110405 to 20120618
+ ^ff0000본 아이템을 구매 후 7일 이내에는 청약 철회가 가능합니다. 다만, 7일이 지났거나 아이템을 개봉하시면 청약 철회 대상에서 제외 됩니다.^000000 정말로 아이템을 구매하시겠습니까? 구매하실 경우 %d캐시가 차감됩니다.
+20120626 to latest
+ ^ff0000본 아이템을 구매 후 7일 이내에는 청약 철회가 가능합니다. 다만, 7일이 지났거나 아이템을 개봉하시면 청약 철회 대상에서 제외 됩니다.또한 구매시 사용된 무료캐시는 청약철회시 반환되지 않습니다.^000000 정말로 아이템을 구매하시겠습니까? 구매하실 경우 %d캐시가 차감됩니다.
+Do you really want to purchase this item? %d points will be deducted from your total Kafra Credit Points.
+*/
+ MSG_BUY_RECONFIRM = 0x4e5,
+#endif
+#if PACKETVER >= 20061211
+/*20061211 to 20061211
+'%s'아이템의 사용시간이 %d분 남았습니다.
+20061218 to 20070423
+ 포인트가 부족합니다.
+20070423 to latest
+ 캐시가 부족합니다.
+ You do not have enough Kafra Credit Points.
+*/
+ MSG_BUY_CASH_FAIL_MONEY = 0x4e6,
+/*20061211 to 20061211
+1분 후, '%s'아이템이 인벤토리에서 삭제됩니다.
+20061218 to latest
+ ^ff0000파기일시: %s^000000
+ ^ff0000Expiration Date: %s^000000
+*/
+ MSG_NOTICE_TO_DELETE_TIME = 0x4e7,
+/*20061211 to 20061211
+'%s'아이템이 인벤토리에서 삭제되었습니다.
+20061218 to latest
+ '%s'아이템의 사용시간이 %d분 남았습니다.
+ The '%s' item will disappear in %d minutes.
+20070102 to 20070312
+ '%s'아이템의 사용시간이 %s 남았습니다.
+*/
+ MSG_NOTICE_TO_REMAIN_ITEMUSINGTIME = 0x4e8,
+#endif
+#if PACKETVER >= 20061218
+/*20061218 to latest
+ 1분 후, '%s'아이템이 인벤토리에서 삭제됩니다.
+ '%s' item will be deleted from the Inventory in 1 minute.
+*/
+ MSG_LAST_NOTICE_TO_REMAIN_ITEMUSINGTIME = 0x4e9,
+/*20061218 to latest
+ '%s'아이템이 인벤토리에서 삭제되었습니다.
+ '%s' item has been deleted from the Inventory.
+*/
+ MSG_NOTICE_TO_DELETE_ITEM = 0x4ea,
+#endif
+#if PACKETVER >= 20070102
+/*20070102 to latest
+Input Number
+*/
+ MSG_INPUT_NUMBER = 0x4eb,
+/*20070102 to latest
+%m월 %d일 %H시 %M분
+%m/%d %H:%M
+*/
+ MSG_TIME_TYPE2 = 0x4ec,
+#endif
+#if PACKETVER >= 20070129
+/*20070129 to 20071120
+보스 몬스터 '%s'(이)가 1분 이내에 등장합니다.
+20071127 to latest
+보스 몬스터 '%s'(이)가 잠시 후에 등장합니다.
+Boss Monster '%s' will appear within 1 minute.
+*/
+ MSG_APPEARANCE_TIME_OF_BOSSMON2 = 0x4ed,
+/*20070129 to latest
+용병 스킬목록
+Mercenary Soldier Skill List
+*/
+ MSG_MER_SKILLLIST = 0x4ee,
+/*20070129 to latest
+블랙젬스톤 1개와 백만제니를 소모하는 마법의 실행에 동의합니까?
+Do you agree to cast the magic spell that consumes 1 Black Gemstone and 1,000,000 Zeny?
+*/
+ MSG_DA_EXP_ACCEPT = 0x4ef,
+#endif
+#if PACKETVER >= 20070220
+/*20070220 to latest
+[POINT] 콜렉터랭킹 포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[Point] You have gained %d Collector Rank Points; you now have a total of %d Collector Rank Points.
+*/
+ MSG_COLLECTOR_POINT = 0x4f0,
+/*20070220 to latest
+[콜렉터랭킹] Target Item : %s
+[Collector Rank] Target Item: %s
+*/
+ MSG_COLLECTOR_MISSION = 0x4f1,
+#endif
+#if PACKETVER >= 20070227
+/*20070227 to latest
+용병 사용시간이 만료되었습니다.
+The mercenary contract has expired.
+*/
+ MSG_MER_FINISH = 0x4f2,
+/*20070227 to latest
+용병이 사망하였습니다.
+The mercenary has died.
+*/
+ MSG_MER_DIE = 0x4f3,
+/*20070227 to latest
+용병이 해고되었습니다.
+You have released the mercenary.
+*/
+ MSG_MER_RETIRE = 0x4f4,
+/*20070227 to latest
+용병이 도망갔습니다.
+The mercenary has run away.
+*/
+ MSG_MER_RUNAWAY = 0x4f5,
+#endif
+#if PACKETVER >= 20070319
+/*20070319 to latest
+ '%s'아이템의 사용시간이 %d초 남았습니다.
+ The '%s' item will disappear in %d seconds.
+*/
+ MSG_NOTICE_TO_REMAIN_ITEMUSINGTIME2 = 0x4f6,
+#endif
+#if PACKETVER >= 20070326
+/*20070326 to 20070821
+PC방 이벤트 : 경험치 증가 %d%%, 죽을때 경험치 %d%%, 드롭율 증가 %d%%
+20070828 to latest
+PC방 프리미엄 서비스 : 경험치 %d%% 증가, 사망 페널티 %d%% 감소, 드롭율 %d%% 증가
+IP Bonus: EXP/JEXP %d%%, Death Penalty %d%%, Item Drop %d%%
+*/
+ MSG_PCBANG_EVENT = 0x4f7,
+#endif
+#if PACKETVER >= 20070402
+/*20070402 to latest
+24시간 이후에 시도하세요
+Symbols in Character Names are forbidden.
+*/
+ MSG_LIMIT_CHAR_DELETE = 0x4f8,
+#endif
+#if PACKETVER >= 20070416
+/*20070416 to latest
+용병이 사용자 인공지능으로 동작합니다.
+Mercenary will follow custom AI.
+*/
+ MSG_MER_USERAI_ON = 0x4f9,
+/*20070416 to latest
+용병이 기본 인공지능으로 동작합니다.
+Mercenary will follow basic AI.
+*/
+ MSG_MER_USERAI_OFF = 0x4fa,
+#endif
+#if PACKETVER >= 20070611
+/*20070611 to latest
+ %s님의
+ %s's
+*/
+ MSG_CHARACTER_NAME = 0x4fb,
+/*20070611 to 20070801
+%s님이 %s를 획득하셨습니다.
+20070807 to latest
+%s님이 %s 아이템을 획득하셨습니다.
+%s has acquired %s.
+*/
+ MSG_ITEM_PICKUP_PARTY = 0x4fc,
+/*20070611 to latest
+공개 채팅 메시지 표시
+Public Chat Display
+*/
+ MSG_VIEW_CHAT_MSG = 0x4fd,
+/*20070611 to latest
+귓속말 채팅 메시지 표시
+Whisper Display
+*/
+ MSG_VIEW_WHISPER_MSG = 0x4fe,
+/*20070611 to latest
+파티 채팅 메시지 표시
+Party Chat Display
+*/
+ MSG_VIEW_PARTY_MSG = 0x4ff,
+/*20070611 to latest
+길드 채팅 메시지 표시
+Guild Chat Display
+*/
+ MSG_VIEW_GUILD_MSG = 0x500,
+/*20070611 to latest
+아이템 획득/드롭 메시지 표시
+Item Get/Drop Message Display
+*/
+ MSG_VIEW_GET_ITEM_MSG = 0x501,
+/*20070611 to latest
+장비 장착/해제 메시지 표시
+Equipment On/Off Message Display
+*/
+ MSG_VIEW_EQUIP_MSG = 0x502,
+/*20070611 to latest
+상태이상 메시지 표시
+Abnormal Status Message Display
+*/
+ MSG_VIEW_CHANGE_STATUS_MSG = 0x503,
+/*20070611 to latest
+파티원의 주요 아이템 획득 메시지 표시
+Party Member's Obtained Item Message Display
+*/
+ MSG_VIEW_GET_ITEM_PARTY_MSG = 0x504,
+/*20070611 to latest
+파티원의 상태이상 메시지 표시
+Party Member's Abnormal Status Message Display
+*/
+ MSG_VIEW_CHANGE_STATUS_PARTY_MSG = 0x505,
+/*20070611 to latest
+스킬 사용 실패 메시지 표시
+Skill Failure Message Display
+*/
+ MSG_VIEW_FAIL_SKILL_MSG = 0x506,
+/*20070611 to latest
+파티 설정 메시지 표시
+Party Configuration Message Display
+*/
+ MSG_VIEW_PARTY_SETUP_MSG = 0x507,
+/*20070611 to latest
+장비 손상 메시지 표시
+Damaged Equipment Message Display
+*/
+ MSG_VIEW_DAMAGED_EQUIP_MSG = 0x508,
+/*20070611 to latest
+배틀 메시지 창 표시 정보
+Battle Message Window Display
+*/
+ MSG_BATTLE_CHAT_WND_OPTION = 0x509,
+/*20070611 to latest
+[%s]의 소지 한코인 : %d 한코인
+[%s]'s Han Coin: %d Han Coin
+*/
+ MSG_POINT_SHOP_NHN = 0x50a,
+#endif
+#if PACKETVER >= 20070618
+/*20070618 to latest
+일반 메시지
+Public Log
+*/
+ MSG_ST_CHAT = 0x50b,
+/*20070618 to latest
+배틀 메시지
+Battle Log
+*/
+ MSG_BT_CHAT = 0x50c,
+/*20070618 to latest
+휴대폰 인증.
+Mobile Authentication
+*/
+ MSG_PHONE_CONFIRM = 0x50d,
+/*20070618 to latest
+읽기
+Read
+*/
+ MSG_BOOK_READ = 0x50e,
+/*20070618 to latest
+자동낭독
+Auto Read
+*/
+ MSG_BOOK_AUTOREAD = 0x50f,
+/*20070618 to latest
+책갈피
+Bookmark
+*/
+ MSG_BOOK_KEEP = 0x510,
+/*20070618 to latest
+이전페이지
+Previous
+*/
+ MSG_BOOK_PREV = 0x511,
+/*20070618 to latest
+다음페이지
+Next
+*/
+ MSG_BOOK_NEXT = 0x512,
+/*20070618 to latest
+닫기
+Close
+*/
+ MSG_BOOK_CLOSE = 0x513,
+#endif
+#if PACKETVER >= 20070622
+/*20070622 to latest
+%s 장비가 손상되었습니다.
+%s's Equipment has been damaged.
+*/
+ MSG_DAMAGED_EQUIP = 0x514,
+/*20070622 to latest
+%s님의 %s 손상되었습니다.
+%s's %s was damaged.
+*/
+ MSG_DAMAGED_EQUIP_PARTY = 0x515,
+/*20070622 to latest
+무기가
+Weapon
+*/
+ MSG_DAMAGED_WEAPON = 0x516,
+/*20070622 to latest
+갑옷이
+Armor
+*/
+ MSG_DAMAGED_BODY = 0x517,
+/*20070622 to latest
+스킬레벨이 부족합니다. 파티가입 불능
+Insufficient Skill Level for joining a Party
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE5_2 = 0x518,
+#endif
+#if PACKETVER >= 20070703
+/*20070703 to latest
+[%s]의 무료 캐시 : %d 캐시
+[%s]'s Free Cash: %d Cash
+*/
+ MSG_POINT_SHOP2 = 0x519,
+/*20070703 to latest
+무료 캐시 사용 :
+Use Free Cash:
+*/
+ MSG_USE_FREE_POINT = 0x51a,
+/*20070703 to latest
+캐시
+Cash
+*/
+ MSG_CASH = 0x51b,
+#endif
+#if PACKETVER >= 20070710
+/*20070710 to latest
+http://payment.ro.hangame.com/index.asp
+*/
+ MSG_SETTLE_WEB_URL_HANGAME = 0x51c,
+/*20070710 to 20090603
+그라비티 회원 정보동의를 하셔야 사용할수있습니다.
+20090610 to latest
+그라비티 회원 정보동의를 하셔야 사용할 수 있습니다.
+You need to accept the Privacy Policy from Gravity in order to use the service.
+*/
+ MSG_BAN_GRAVITY_MEM_AGREE = 0x51d,
+/*20070710 to latest
+이용약관에 동의를 하셔야 본 서비스를 이용하실 수 있습니다.
+You need to accept the User Agreement in order to use the service.
+*/
+ MSG_BAN_GAME_MEM_AGREE = 0x51e,
+/*20070710 to 20080514
+존재하지 않는 한게임 ID이거나 잘못된 ID입니다.
+20080520 to latest
+입력하신 아이디와 비밀번호가 등록된 정보와 일치하지 않습니다.
+Incorrect or nonexistent ID.
+*/
+ MSG_BAN_HAN_VALID = 0x51f,
+#endif
+#if PACKETVER >= 20070711
+/*20070711 to 20080603
+ 정말로 '%s'아이템을 구매하시겠습니까?, 일반 %d캐시, 무료 %d캐시가 차감됩니다.
+20080610 to 20100629
+ 본 아이템은 청약 철회나 환불 대상에서 제외되는 아이템입니다. 정말로 '%s'아이템을 구매하시겠습니까?, 일반 %d캐시, 무료 %d캐시가 차감됩니다.
+20100701 to 20101026
+ 본 아이템은 청약 철회나 환불 대상에서 제외되는 아이템입니다. 정말로 %s아이템을 구매하시겠습니까?, 일반 %d캐시, 무료 %d캐시가 차감됩니다.
+20101102 to 20101130
+ ^ff0000본 아이템을 구매 후 개봉하시면 청약 철회 및 환불 대상에서 제외됩니다.^000000 정말로 %s아이템을 구매하시겠습니까? 구매하실 경우 일반 %d캐시, 무료 %d캐시가 차감됩니다.
+20101207 to 20110330
+ ^ff0000본 아이템을 구매 후 개봉하시면 청약 철회 및 환불 대상에서 제외됩니다.^000000 정말로 아이템을 구매하시겠습니까? 구매하실 경우 일반 %d캐시, 무료 %d캐시가 차감됩니다.
+20110405 to 20120618
+ ^ff0000본 아이템을 구매 후 7일 이내에는 청약 철회가 가능합니다. 다만, 7일이 지났거나 아이템을 개봉하시면 청약 철회 대상에서 제외 됩니다.^000000 정말로 아이템을 구매하시겠습니까? 구매하실 경우 일반 %d캐시, 무료 %d캐시가 차감됩니다.
+20120626 to latest
+ ^ff0000본 아이템을 구매 후 7일 이내에는 청약 철회가 가능합니다. 다만, 7일이 지났거나 아이템을 개봉하시면 청약 철회 대상에서 제외 됩니다.또한 구매시 사용된 무료캐시는 청약철회시 반환되지 않습니다.^000000 정말로 아이템을 구매하시겠습니까? 구매하실 경우 일반 %d캐시, 무료 %d캐시가 차감됩니다.
+Do you really want to purchase these items? You will spend %d Regular Cash Points and %d Free Cash Points.
+*/
+ MSG_BUY_RECONFIRM2 = 0x520,
+#endif
+#if PACKETVER >= 20070718
+/*20070718 to latest
+%d시간이 경과하였습니다.
+%d hour(s) has passed.
+*/
+ MSG_NOTIFY_PLAYTIME1 = 0x521,
+/*20070718 to latest
+%d시간 %d분이 경과하였습니다.
+%d hour(s) %d minute(s) has passed.
+*/
+ MSG_NOTIFY_PLAYTIME2 = 0x522,
+/*20070718 to latest
+게임을 종료하세요, 경험치 및 모든게 50%로 조정됩니다
+Please stop playing the game, and take a break. Exp and other features will be reduced to 50%.
+*/
+ MSG_WARNING_MSG1 = 0x523,
+/*20070718 to latest
+불건전 시간대에 접어들었습니다. 게임을 종료하세요, 경험치 및 모든게 0%로 조정됩니다
+Please stop playing the game since you'll need to rest. Exp and other features will be fixed to 0%.
+*/
+ MSG_WARNING_MSG2 = 0x524,
+#endif
+#if PACKETVER >= 20070724
+/*20070724 to latest
+퀘스트 목록
+Quest List
+*/
+ MSG_QUESTWIN = 0x525,
+#endif
+#if PACKETVER >= 20070807
+/*20070807 to latest
+RO SHOP
+RO Shop
+*/
+ MSG_RO_SHOP = 0x526,
+#endif
+#if PACKETVER >= 20070821
+/*20070821 to 20070904
+메모리얼던젼 '%s'이 예약되었습니다.
+20070911 to latest
+메모리얼던젼 '%s'의 예약이 알수없는 이유로 실패 하였습니다.
+Memorial Dungeon, '%s' is booked.
+*/
+ MSG_MDUNGEON_SUBSCRIPTION_ERROR_UNKNOWN = 0x527,
+/*20070821 to 20070904
+메모리얼던젼 '%s' 예약이 실패했습니다.
+20070911 to latest
+메모리얼던젼 '%s'의 예약이 예약중복으로 실패 하였습니다.
+Failed to book Memorial Dungeon, '%s'.
+*/
+ MSG_MDUNGEON_SUBSCRIPTION_ERROR_DUPLICATE = 0x528,
+/*20070821 to 20070904
+메모리얼던젼 '%s' 이미 예약중입니다.
+20070911 to latest
+메모리얼던젼 '%s'의 예약이 권한문제로 실패 하였습니다.
+Memorial Dungeon, '%s' is already booked.
+*/
+ MSG_MDUNGEON_SUBSCRIPTION_ERROR_RIGHT = 0x529,
+/*20070821 to 20070904
+메모리얼던젼 '%s'가 생성 되었습니다
+ 5분내에 입장하세요.
+20070911 to latest
+메모리얼던젼 '%s'의 예약이 중복생성요청으로 실패하였습니다.
+Memorial Dungeon, '%s' is created.
+ Please enter in 5 minutes.
+*/
+ MSG_MDUNGEON_SUBSCRIPTION_ERROR_EXIST = 0x52a,
+/*20070821 to 20070904
+메모리얼던젼 '%s' 생성에 실패했습니다.
+ 나중에 다시 시도하세요.
+20070911 to latest
+메모리얼던젼 '%s'의 예약취소가 실패 하였습니다.
+Failed to create Memorial Dungeon, '%s'.
+ Please try again.
+*/
+ MSG_MDUNGEON_SUBSCRIPTION_CANCEL_FAIL = 0x52b,
+/*20070821 to latest
+상대방이 파티 초대 거부 상태입니다.
+The character blocked the party invitation.
+*/
+ MSG_JOINMSG_REFUSE = 0x52c,
+#endif
+#if PACKETVER >= 20070828
+/*20070828 to latest
+모든 파티 초대를 거부합니다.
+Block all party invitations.
+*/
+ MSG_INVITE_PARTY_REFUSE = 0x52d,
+/*20070828 to latest
+모든 파티 초대를 수락합니다.
+Allow all party invitations.
+*/
+ MSG_INVITE_PARTY_ACCEPT = 0x52e,
+#endif
+#if PACKETVER >= 20070904
+/*20070904 to latest
+착용하시면 이 아이템은 영구 귀속됩니다. 착용하시겠습니까?
+This item will be permanently bound to this character once it is equipped. Do you really want to equip this item?
+*/
+ MSG_YOURITEM_EQUIP = 0x52f,
+/*20070904 to latest
+%s 아이템이 귀속되었습니다.
+%s is now permanently bound to this character.
+*/
+ MSG_YOURITEM_EQUIPED = 0x530,
+/*20070904 to latest
+캐시가 부족합니다. 무료 캐시 포인트를 입력해 주시기 바랍니다.
+You do not have enough Kafra Credit Points. Please enter whether you have free credit points.
+*/
+ MSG_BUY_TO_FREE_POINT = 0x531,
+/*20070904 to latest
+파티 가입요청
+Request to Join Party
+*/
+ MSG_REQ_JOIN_PARTY3 = 0x532,
+#endif
+#if PACKETVER >= 20070912
+/*20070912 to latest
+공성 정보 메시지 표시
+Display WOE Info
+*/
+ MSG_VIEW_SIEGE_INFO_MSG = 0x533,
+/*20070912 to latest
+메모리얼던젼 '%s'의 예약이 취소 되었습니다.
+Memorial Dungeon %s's reservation has been canceled.
+*/
+ MSG_MDUNGEON_SUBSCRIPTION_CANCEL_SUCCESS = 0x534,
+/*20070912 to latest
+메모리얼던젼 '%s' 생성에 실패하였습니다. 다시 시도 하세요.
+Failed to create Memorial Dungeon %s. Please try again.
+*/
+ MSG_MDUNGEON_CREATE_FAIL = 0x535,
+/*20070912 to latest
+이 장소에서는 사용할 수 없는 스킬입니다.
+This skill cannot be used within this area.
+*/
+ MSG_IMPOSSIBLE_SKILL_AREA = 0x536,
+/*20070912 to latest
+이 장소에서는 사용할 수 없는 아이템입니다.
+This item cannot be used within this area.
+*/
+ MSG_IMPOSSIBLE_USEITEM_AREA = 0x537,
+#endif
+#if PACKETVER >= 20070918
+/*20070918 to latest
+메모리얼 던전
+Memorial Dungeon
+*/
+ MSG_MEMORIAL_DUN = 0x538,
+/*20070918 to latest
+%s 대기중
+%s in Standby
+*/
+ MSG_MEMORIAL_DUN_WAITING = 0x539,
+/*20070918 to latest
+%s 입장 가능
+%s Available
+*/
+ MSG_MEMORIAL_DUN_READY = 0x53a,
+/*20070918 to 20071120
+%s 내부
+20071127 to latest
+%s 진행중
+%s in Progress
+*/
+ MSG_MEMORIAL_DUN_IN = 0x53b,
+/*20070918 to latest
+시간 안에 입장하지 않아 메모리얼 던전이 사라졌습니다.
+No one entered the Memorial Dungeon within its duration; the dungeon has disappeared.
+*/
+ MSG_MEMORIAL_DUN_OUT1 = 0x53c,
+/*20070918 to latest
+이용하시려면 이용 신청을 처음부터 다시 해주시기 바랍니다.
+Please apply for dungeon entry again to play in this dungeon.
+*/
+ MSG_MEMORIAL_DUN_OUT2 = 0x53d,
+/*20070918 to latest
+대기 순위 : ^ff0000%d^000000
+Your Standby Priority: ^ff0000%d^000000
+*/
+ MSG_MEMORIAL_DUN_PRIORITY = 0x53e,
+/*20070918 to latest
+^ff0000%s^000000 내에 입장하지 않을 경우 신청하신 던전이 삭제 됩니다.
+The requested dungeon will be removed if you do not enter within ^ff0000%s^000000.
+*/
+ MSG_MEMORIAL_DUN_NOTIFY = 0x53f,
+/*20070918 to latest
+던전 미션 제한 시간 :
+Dungeon Mission Time Limit:
+*/
+ MSG_MEMORIAL_DUN_NOTIFY2 = 0x540,
+/*20070918 to latest
+메모리얼 던전 예약이 취소되었습니다.
+The Memorial Dungeon reservation has been canceled.
+*/
+ MSG_MEMORIAL_DUN_CANCEL = 0x541,
+/*20070918 to latest
+메모리얼 던전이 유지 시간 제한에 의해 파괴되었습니다.
+The Memorial Dungeon duration expired; it has been destroyed.
+*/
+ MSG_MEMORIAL_DUN_LIVE_TIME_OUT = 0x542,
+/*20070918 to latest
+메모리얼 던전이 입장 시간 제한에 의해 파괴되었습니다.
+The Memorial Dungeon's entry time limit expired; it has been destroyed.
+*/
+ MSG_MEMORIAL_DUN_ENTER_TIME_OUT = 0x543,
+/*20070918 to latest
+메모리얼 던전이 삭제 되었습니다.
+The Memorial Dungeon has been removed.
+*/
+ MSG_MEMORIAL_DUN_DESTROY_REQUEST = 0x544,
+/*20070918 to latest
+메모리얼 던전에 시스템 오류가 발생하였습니다. 정상적인 게임 진행을 위해 재접속을 해주십시오.
+A system error has occurred in the Memorial Dungeon. Please relog in to the game to continue playing.
+*/
+ MSG_MEMORIAL_DUN_ERROR = 0x545,
+/*20070918 to latest
+사용할 수 없는 슬롯입니다.
+This slot is not usable.
+*/
+ MSG_FR_INVALID_SLOT = 0x546,
+/*20070918 to latest
+Base Level이 15를 넘었습니다.
+Your Base Level is over 15.
+*/
+ MSG_FR_BASELVL = 0x547,
+/*20070918 to latest
+Job Level이 15를 넘었습니다.
+Your Job Level is over 15.
+*/
+ MSG_FR_INVALID_JOBLV = 0x548,
+/*20070918 to latest
+해당슬롯 캐릭터에 직업군의 상인이므로 게임을 할 수 없습니다.
+You cannot play the Merchant class character in this slot.
+*/
+ MSG_FR_JOB = 0x549,
+/*20070918 to latest
+추후 사용예정
+Not Yet Implemented
+*/
+ MSG_FR_MAP = 0x54a,
+/*20070918 to latest
+만들수 있는 케릭터 슬롯이 아닙니다.
+You are not eligible to open the Character Slot.
+*/
+ MSG_FR_ERR_MKCHAR_INVALID_SLOT = 0x54b,
+/*20070918 to latest
+삭제할 수 없는 케릭터 입니다.
+This character cannot be deleted.
+*/
+ MSG_FR_ERR_DELCHAR_INVALID_SLOT = 0x54c,
+/*20070918 to latest
+상대방의 장비창이 공개되어 있지 않습니다.
+This character's equipment information is not open to the public.
+*/
+ MSG_OPEN_EQUIPEDITEM_REFUSED = 0x54d,
+/*20070918 to latest
+장비창을 공개하지 않습니다.
+Equipment information not open to the public.
+*/
+ MSG_OPEN_EQUIPEDITEM_REFUSE = 0x54e,
+/*20070918 to latest
+장비창을 공개합니다.
+Equipment information open to the public.
+*/
+ MSG_OPEN_EQUIPEDITEM_ACCEPT = 0x54f,
+/*20070918 to latest
+(%s)님 장비창 보기
+Check %s's Equipment Info
+*/
+ MSG_REQ_VIEW_OTHERUSER = 0x550,
+/*20070918 to latest
+%s의 장착아이템
+'%s's Equipment
+*/
+ MSG_OTHERUSER_EQUIPED_ITEM = 0x551,
+/*20070918 to latest
+장비창 공개
+Show Equip
+*/
+ MSG_OPEN_EQUIPED_ITEM = 0x552,
+#endif
+#if PACKETVER >= 20071002
+/*20071002 to latest
+프리미엄 서비스를 이용해 주시기 바랍니다.
+This service is only available for premium users.
+*/
+ MSG_NEED_PREMIUM_SERVICE = 0x553,
+/*20071002 to latest
+무료 사용자는 최대 50000제니까지 소유할 수 있습니다.
+Free Trial users can only hold up to 50,000 zeny.
+*/
+ MSG_FR_INVALID_MONEY = 0x554,
+#endif
+#if PACKETVER >= 20071009
+/*20071009 to latest
+전장채팅 상태가 되었습니다.
+Battlefield Chat has been activated.
+*/
+ MSG_BATTLECHAT_ON = 0x555,
+/*20071009 to latest
+전장채팅 상태가 해제되었습니다.
+Battlefield Chat has been deactivated.
+*/
+ MSG_BATTLECHAT_OFF = 0x556,
+#endif
+#if PACKETVER >= 20071017
+/*20071017 to latest
+용병정보 - 몬스터타입
+Mercenary Info - Monster Type
+*/
+ MSG_MER_INFO_TYPE_MONSTER = 0x557,
+#endif
+#if PACKETVER >= 20071106
+/*20071106 to latest
+전체 맵 보기
+World Map
+*/
+ MSG_RO_MAP = 0x558,
+#endif
+#if PACKETVER >= 20071127
+/*20071127 to latest
+메모리얼던젼이 CLOSE 상태입니다.
+The Memorial Dungeon is now closed.
+*/
+ MSG_MEMORIAL_DUN_CLOSE = 0x559,
+#endif
+#if PACKETVER >= 20071204
+/*20071204 to latest
+^ff0000^ff0000용병을 삭제합니다.^000000^000000 삭제하실 경우 지금까지 키운 내역이 모두 삭제됩니다. 계속하시겠습니까?
+^ff0000Deleting a Mercenary Soldier^000000 will also delete his growth history. Do you really want to proceed with the deletion?
+*/
+ MSG_DELETE_MER = 0x55a,
+#endif
+#if PACKETVER >= 20071211
+/*20071211 to latest
+메모리얼던젼이 OPEN 상태입니다.
+The Memorial Dungeon is now open.
+*/
+ MSG_MEMORIAL_DUN_OPEN = 0x55b,
+#endif
+#if PACKETVER >= 20080108
+/*20080108 to latest
+위의 계정은 아직 통신 안전 키에 연결되지 않았습니다. 먼저 안전 키를 해제하신 뒤 게임에 접속해 주십시오.
+This account has not been confirmed by connecting to the safe communication key. Please connect to the key first, and then log into the game.
+*/
+ MSG_PHONE_BLOCK = 0x55c,
+/*20080108 to latest
+한 아이피로 접속 가능한 유저수를 초과하였습니다.
+The number of accounts connected to this IP has exceeded the limit.
+*/
+ MSG_BAN_PC_IP_LIMIT_ACCESS = 0x55d,
+#endif
+#if PACKETVER >= 20080219
+/*20080219 to latest
+새로운 퀘스트를 받았습니다
+You have received a new quest.
+*/
+ MSG_QUESTGET = 0x55e,
+#endif
+#if PACKETVER >= 20080401
+/*20080401 to latest
+^777777습득조건 :
+^CC3399Requirement:
+*/
+ MSG_FINDTEXT_TO_SKILLDES = 0x55f,
+/*20080401 to latest
+스킬 설명 보기
+View Skill Info
+*/
+ MSG_VIEW_SKILL_DESCRIPT = 0x560,
+#endif
+#if PACKETVER >= 20080408
+/*20080408 to latest
+사용된 스킬 포인트는 다시 되돌릴 수 없습니다. 적용하시겠습니까?
+Once used, skill points cannot be re-allocated. Would you like to use the skill points?
+*/
+ MSG_APPLY_SKILL_UP = 0x561,
+/*20080408 to latest
+노비스·1차직업
+1st
+*/
+ MSG_1TABNAME_SKILLWND = 0x562,
+/*20080408 to latest
+2차·전승직업
+2nd
+*/
+ MSG_2TABNAME_SKILLWND = 0x563,
+/*20080408 to 20080514
+불법프로그램을 사용하였거나 혹은 해킹을 시도한 계정입니다. 블럭시간 : %s
+20080520 to latest
+불법프로그램을 사용하였거나 혹은 해킹을 시도한 계정입니다. 블럭종료시간 : %s
+This account has been used for illegal program or hacking program. Block Time: %s
+20081210 to 20081218
+불법프로그램을 사용하였거나 해킹을 시도한 계정이거나 그라비티 이전을 신청한 한게임 계정입니다. 블럭종료시간 : %s
+*/
+ MSG_RE17 = 0x564,
+/*20080408 to latest
+불법프로그램이 실행, 바이러스 감염, 또는 해킹툴이 설치되어 있을 가능성이 있습니다. 정상 클라이언트를 실행하여 주시기 바랍니다. 함께 만드는 밝은 라그나로크가 될 수 있도록 노력하고 있습니다.
+The possibility of exposure to illegal program, PC virus infection or Hacking Tool has been detected. Please execute licensed client. Our team is trying to make a best environment for Ro players.
+*/
+ MSG_RE18 = 0x565,
+#endif
+#if PACKETVER >= 20080415
+/*20080415 to latest
+당신은 지금 건강한 게임 시간 대에 있습니다, 즐거운 게임이 되시길 바랍니다
+You are currently playing in the best game environment. Please enjoy the Ragnarok.
+*/
+ MSG_WARNING_MSG3 = 0x566,
+/*20080415 to 20100720
+ 몬스터 사냥을 통해 얻을 수 있는 Job경험치가 30분간 1.5배로 증가합니다.
+20100727 to latest
+ 몬스터 사냥을 통해 얻을 수 있는 Job경험치가 30분간 1.25배로 증가합니다.
+Job Exp points from hunting monsters are increased by 50% for 30 minutes.
+*/
+ MSG_PLUSONLYJOBEXP = 0x567,
+/*20080415 to 20091110
+ 몬스터 사냥을 통해 얻을 수 있는 경험치가 30분간 1.25배로 증가합니다.
+20091117 to latest
+ 몬스터 사냥을 통해 얻을 수 있는 경험치가 30분간 1.2배로 증가합니다.
+Exp points from hunting monsters are increased by 25% for 30 minutes.
+*/
+ MSG_PLUSEXP14532 = 0x568,
+/*20080415 to latest
+ 몬스터 사냥을 통해 얻을 수 있는 경험치가 30분간 2배로 증가합니다.
+EXP points from hunting monsters are increased by 100%% for 30 minutes.
+*/
+ MSG_PLUSEXP14533 = 0x569,
+/*20080415 to latest
+ 몬스터 사냥을 통해 얻을 수 있는 경험치가 60분간 1.5배로 증가합니다.
+EXP points from hunting monsters are increased by 50% for 60 minutes.
+*/
+ MSG_PLUSEXP12312 = 0x56a,
+#endif
+#if PACKETVER >= 20080520
+/*20080520 to latest
+이 맵에서는 파티를 결성할 수 없습니다.
+Unable to organize a party in this map.
+*/
+ MSG_NOPARTY = 0x56b,
+/*20080520 to latest
+(%s)님은 파티에 참여할 수 없는 맵에 있습니다.
+(%s) are currently in restricted map to join a party.
+*/
+ MSG_NOPARTY2 = 0x56c,
+#endif
+#if PACKETVER >= 20080528
+/*20080528 to 20080603
+간편아이템샵.
+20080610 to latest
+간편아이템샵
+Simple Item Shop
+*/
+ MSG_SIMPLE_CASH_SHOP = 0x56d,
+/*20080528 to latest
+소지 한코인 : %d 한코인
+Han Coin: %d Han Coin
+*/
+ MSG_SIMPLE_POINT_SHOP_NHN = 0x56e,
+/*20080528 to latest
+소지 캐시 : %d 캐시
+RoK Point: %d RoK Point
+*/
+ MSG_SIMPLE_POINT_SHOP = 0x56f,
+/*20080528 to latest
+무료 캐시 : %d 캐시
+Free Cash: %d Cash
+*/
+ MSG_SIMPLE_POINT_SHOP2 = 0x570,
+#endif
+#if PACKETVER >= 20080715
+/*20080715 to latest
+본서버 유저는 프리서버에 접속할수 없습니다.
+An user of this server cannot connect to free server
+*/
+ MSG_MAIN_USER_CANONT_LOGIN_FREE_SERVER = 0x571,
+/*20080715 to latest
+유효기간이 지난 비밀번호 입니다. 다시 로그인하여주십시오.
+Your password has expired. Please log in again
+*/
+ MSG_INVALID_ONETIMELIMIT = 0x572,
+#endif
+#if PACKETVER >= 20080903
+/*20080903 to latest
+3차직업
+3rd
+*/
+ MSG_3TABNAME_SKILLWND = 0x573,
+#endif
+#if PACKETVER >= 20080917
+/*20080917 to latest
+이 스킬을 사용할 수 없는 대상입니다.
+This skill can't be used on that target.
+*/
+ MSG_USESKILL_FAIL_TOTARGET = 0x574,
+/*20080917 to latest
+안실라 소유 개수가 초과하여 스킬을 사용할 수 없습니다.
+You can't use skill because you have exceeded the number Ancilla possession limit
+*/
+ MSG_USESKILL_FAIL_ANCILLA_NUMOVER = 0x575,
+/*20080917 to latest
+성수가 필요합니다.
+Unable to use the skill to exceed the number of Ancilla.
+*/
+ MSG_USESKILL_FAIL_HOLYWATER = 0x576,
+/*20080917 to latest
+안실라가 필요합니다.
+Holy water is required.
+*/
+ MSG_USESKILL_FAIL_ANCILLA = 0x577,
+/*20080917 to latest
+일정거리 내에 중복될 수 없습니다.
+Ancilla is required.
+*/
+ MSG_USESKILL_FAIL_DUPLICATE_RANGEIN = 0x578,
+/*20080917 to latest
+이 스킬을 사용하기 위해서는 다른 스킬이 필요합니다.
+Cannot be duplicated within a certain distance.
+*/
+ MSG_USESKILL_FAIL_NEED_OTHER_SKILL = 0x579,
+#endif
+#if PACKETVER >= 20080924
+/*20080924 to latest
+이 맵에서는 채팅을 할 수 없습니다.
+This skill requires other skills to be used.
+*/
+ MSG_NO_CHATTING = 0x57a,
+#endif
+#if PACKETVER >= 20081001
+/*20081001 to latest
+3시간이 지났습니다.
+Chat is not allowed in this map
+*/
+ MSG_VET_3HOUR = 0x57b,
+/*20081001 to latest
+5시간이 지났습니다.
+3 hours have passed.
+*/
+ MSG_VET_5HOUR = 0x57c,
+#endif
+#if PACKETVER >= 20081008
+/*20081008 to latest
+게임가드 초기화 에러 또는 구버전의 게임가드 파일입니다. 게임가드 셋업파일을 다시 설치하고 게임을 실행해 보시기 바랍니다.
+5 hours have passed.
+*/
+ MSG_NPGAMEMON_ERROR_GAMEGUARD = 0x57d,
+/*20081008 to latest
+ini 파일이 없거나 변조되었습니다. 게임가드 셋업파일을 설치하면 해결 할 수 있습니다.
+Game guard initialization error or previous version game guard file is installed. Please re-install the setup file and try again
+*/
+ MSG_NPGMUP_ERROR_PARAM = 0x57e,
+/*20081008 to latest
+게임가드와 충돌 프로그램이 발견되었습니다.
+Either ini file is missing or altered. Install game guard setup file to fix the problem
+*/
+ MSG_NPGG_ERROR_COLLISION = 0x57f,
+#endif
+#if PACKETVER >= 20081112
+/*20081112 to latest
+잘못된 클라이언트입니다. 정상적인 클라이언트를 실행하여 주십시요.
+There is a program found that conflicts with game guard
+*/
+ MSG_PROOF_ERROR = 0x580,
+#endif
+#if PACKETVER >= 20081203
+/*20081203 to latest
+모바일 인증을 받아주시기 바랍니다.
+Incorrect client. Please run a normal client
+*/
+ MSG_MOBILE_LOCKSERVER = 0x581,
+#endif
+#if PACKETVER >= 20081210
+/*20081210 to latest
+모바일 인증에 실패하였습니다.
+Thank you to accept mobile authentication.
+*/
+ MSG_FAILED_MOBILE_LOCKSERVER = 0x582,
+#endif
+#if PACKETVER >= 20081217
+/*20081217 to latest
+이스킬은 혼자서 사용할수 없습니다.
+This skill can't be used alone
+*/
+ MSG_USESKILL_FAIL_NEED_HELPER = 0x583,
+/*20081217 to latest
+이스킬은 특정방향으로만 사용할수 있습니다.
+This skill can be used to certain direction only
+*/
+ MSG_USESKILL_FAIL_INVALID_DIR = 0x584,
+/*20081217 to latest
+더이상 소환할수 없습니다.
+Cannot summon spheres anymore.
+*/
+ MSG_USESKILL_FAIL_SUMMON = 0x585,
+/*20081217 to 20130710
+소환된 구체가 존재하지 않습니다.
+20130717 to latest
+소환된 구체가 존재하지 않거나 부족합니다.
+There is no summoned sphere or you do not have enough sphere.
+*/
+ MSG_USESKILL_FAIL_SUMMON_NONE = 0x586,
+/*20081217 to latest
+사용가능한 모방스킬이 존재하지 않습니다.
+There is no imitation skills available.
+*/
+ MSG_USESKILL_FAIL_IMITATION_SKILL_NONE = 0x587,
+/*20081217 to latest
+이 스킬은 중복해서 사용할수 없습니다.
+You can't reuse this skill
+*/
+ MSG_USESKILL_FAIL_DUPLICATE = 0x588,
+/*20081217 to latest
+스킬을 사용할수 없는 상태입니다.
+Skill can't be used in this state
+*/
+ MSG_USESKILL_FAIL_CONDITION = 0x589,
+/*20081217 to latest
+아이템별 최대 소지량을 초과하여 가질 수 없습니다.
+You have exceeded the maximum amount of possession of another item.
+*/
+ MSG_PICKUP_MAXCOUNT_LIMIT = 0x58a,
+#endif
+#if PACKETVER >= 20090204
+/*20090204 to latest
+관리자 권한이 없습니다. 프로그램 최초 실행은 관리자 권한으로 실행하셔야 합니다.
+No administrative privileges. Must first run the program with administrator privileges.
+*/
+ MSG_NPK_ERROR_NOTADMIN = 0x58b,
+/*20090204 to latest
+nProtect KeyCrypt 드라이버 버전이 맞지 않습니다. 시스템 재 부팅 후에 새로 실행 시켜 주십시오.
+nProtect KeyCrypt not the same. Please restart the program and the computer first.
+*/
+ MSG_NPK_ERROR_DRIVERVERSION = 0x58c,
+/*20090204 to latest
+WindowXP 호환성 모드를 사용하고 계십니다. 현재 프로그램에서 호환성 모드를 제거하였습니다. 프로그램을 새로 시작해 주십시오.
+Currently wearing WindowXP Compatibility Mode. The program now removes Compatibility Mode. Please restart the program.
+*/
+ MSG_NPK_ERROR_VERIFYVERSION = 0x58d,
+/*20090204 to latest
+PS/2 키로거가 존재합니다.
+PS/2 keyloggers exist.
+*/
+ MSG_DETECT_PS2KEYLOGGER = 0x58e,
+/*20090204 to latest
+USB 키보드 드라이버 해킹 시도가 탐지되었습니다.
+USB Keylogging attempt was detected.
+*/
+ MSG_DETECT_USBKEYLOGGER = 0x58f,
+/*20090204 to latest
+HHD 모니터링 툴이 탐지되었습니다.
+HHD monitoring tool has been detected.
+*/
+ MSG_DETECT_HHDUSBH = 0x590,
+/*20090204 to latest
+페인트붓이 필요합니다.
+Paintbrush is required.
+*/
+ MSG_USESKILL_FAIL_PAINTBRUSH = 0x591,
+/*20090204 to 20090401
+그림물감이 필요합니다.
+20090406 to latest
+서페이스페인트가 필요합니다.
+Paint is required.
+*/
+ MSG_USESKILL_FAIL_II_SURFACE_PAINTS = 0x592,
+/*20090204 to latest
+지정한 위치에 스킬을 사용할수 없습니다.
+Use the skills that are not at the specified location.
+*/
+ MSG_USESKILL_FAIL_POS = 0x593,
+/*20090204 to latest
+도우미의 SP가 부족합니다.
+Not enough SP.
+*/
+ MSG_USESKILL_FAIL_HELPER_SP_INSUFFICIENT = 0x594,
+#endif
+#if PACKETVER >= 20090211
+/*20090211 to 20090218
+생성 가능 캐릭터 수는 9개입니다!!(임시)
+20090225 to latest
+캐릭터 선택창의 캐릭터가 %d개를 초과하면 게임에 접속할 수 없습니다. 불필요한 캐릭터를 삭제해주십시오.
+Character %d is character selection window cannot connect to the game that exceeds the total. Please remove unwanted characters.
+*/
+ MSG_BAN_OVER_CHARACTER_LIST = 0x595,
+#endif
+#if PACKETVER >= 20090225
+/*20090225 to latest
+목캔디가 필요합니다.
+Throat Lozenge is required.
+*/
+ MSG_USESKILL_FAIL_II_NECK_CANDY = 0x596,
+/*20090225 to latest
+안타까운눈물이 필요합니다.
+Painful Tears is required.
+*/
+ MSG_USESKILL_FAIL_II_MISERABLE_TEAR = 0x597,
+/*20090225 to latest
+목 보호 캔디가 필요합니다.
+Throat Lozenge is required.
+*/
+ MSG_USESKILL_FAIL_II_PROTECT_NECK_CANDY = 0x598,
+/*20090225 to latest
+웨폰 블로킹의 연계로만 사용가능합니다.
+Cooperation is only available with Weapon Blocking.
+*/
+ MSG_USESKILL_FAIL_GC_WEAPONBLOCKING = 0x599,
+/*20090225 to latest
+길로틴크로스의 독을 바른 무기가 필요합니다.
+Poisoned weapons is required.
+*/
+ MSG_USESKILL_FAIL_GC_POISONINGWEAPON = 0x59a,
+#endif
+#if PACKETVER >= 20090304
+/*20090304 to latest
+마도기어 탑승시에만 사용가능합니다.
+Item can only be used when Mado Gear is mounted.
+*/
+ MSG_USESKILL_FAIL_MADOGEAR = 0x59b,
+/*20090304 to latest
+발칸블릿이 필요합니다.
+Vulcan Bullet is required.
+*/
+ MSG_USESKILL_FAIL_II_VULCANBULLET = 0x59c,
+/*20090304 to latest
+마도기어 연료가 필요합니다.
+Mado Gear Fuel is required.
+*/
+ MSG_USESKILL_FAIL_II_FUELGAS = 0x59d,
+/*20090304 to latest
+액체냉각탄이 필요합니다.
+Liquid Cold Bullet is required.
+*/
+ MSG_USESKILL_FAIL_II_COLDSLOWERBULLET = 0x59e,
+/*20090304 to latest
+캐논볼을 장전 하세요.
+Please load a Cannon Ball.
+*/
+ MSG_USESKILL_FAIL_CANONBALL = 0x59f,
+/*20090304 to latest
+미도기어 가속장치를 착용하세요.
+Please equipped with a Mado Gear Accelerator.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_ACCELERATION = 0x5a0,
+/*20090304 to latest
+호버링부스터를 착용하세요.
+Please equipped with a Hovering Booster.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_HOVERING_BOOSTER = 0x5a1,
+/*20090304 to latest
+[톡신] 독 효과가 무기에 적용되었습니다.
+[Toxin] Poison effect was applied to the weapon.
+*/
+ MSG_TOXIN = 0x5a2,
+/*20090304 to latest
+[패럴라이즈] 독 효과가 무기에 적용되었습니다.
+[Paralysis] Poison effect was applied to the weapon.
+*/
+ MSG_PARALYZE = 0x5a3,
+/*20090304 to latest
+[베놈블리드] 독 효과가 무기에 적용되었습니다.
+[Fatigue] Poison effect was applied to the weapon.
+*/
+ MSG_VENOMBLEED = 0x5a4,
+/*20090304 to latest
+[매직 머쉬룸] 독 효과가 무기에 적용되었습니다.
+[Laughing] Poison effect was applied to the weapon.
+*/
+ MSG_MAGICMUSHROOM = 0x5a5,
+/*20090304 to latest
+[데스 허트] 독 효과가 무기에 적용되었습니다.
+[Disheart] Poison effect was applied to the weapon.
+*/
+ MSG_DEATHHURT = 0x5a6,
+/*20090304 to latest
+[파이렉시아] 독 효과가 무기에 적용되었습니다.
+[Pyrexia] Poison effect was applied to the weapon.
+*/
+ MSG_PHYREXIA = 0x5a7,
+/*20090304 to latest
+[오블리비언 커즈] 독 효과가 무기에 적용되었습니다.
+[Oblivion] Poison effect was applied to the weapon.
+*/
+ MSG_OBLIANCURSE = 0x5a8,
+/*20090304 to latest
+[리치 엔드] 독 효과가 무기에 적용되었습니다.
+[Leech] Poison effect was applied to the weapon.
+*/
+ MSG_RICHEND = 0x5a9,
+#endif
+#if PACKETVER >= 20090311
+/*20090311 to latest
+호버링상태에서만 사용가능합니다.
+Can only be used in Hovering state.
+*/
+ MSG_USESKILL_FAIL_MADOGEAR_HOVERING = 0x5aa,
+/*20090311 to latest
+자폭장치를 장착하세요.
+Please equip a Self-Destruct Mechanism.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_SELFDESTRUCTION_DEVICE = 0x5ab,
+/*20090311 to latest
+셰이프쉬프터를 장착하세요.
+Please equip a Shape Shift.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_SHAPESHIFTER = 0x5ac,
+/*20090311 to latest
+길로틴독이 필요합니다.
+Guillotine Cross Poison is required.
+*/
+ MSG_USESKILL_FAIL_GUILLONTINE_POISON = 0x5ad,
+/*20090311 to latest
+냉각장치를 장착하세요.
+Please equipped with a Cooling System.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_COOLING_DEVICE = 0x5ae,
+/*20090311 to latest
+자기장필드생성기를 착용하세요.
+Please equipped with a Magnetic Field Generator.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_MAGNETICFIELD_GENERATOR = 0x5af,
+/*20090311 to latest
+베리어생성기를 착용하세요.
+Please equipped with a Barrier Generator.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_BARRIER_GENERATOR = 0x5b0,
+/*20090311 to latest
+광학미채발생기를 착용하세요.
+Please equipped with a Optical Camouflage Generator.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_OPTICALCAMOUFLAGE_GENERATOR = 0x5b1,
+/*20090311 to latest
+리페어키트를 착용하세요.
+Please equipped with a Repair Kit.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_REPAIRKIT = 0x5b2,
+/*20090311 to latest
+몽키 스패너가 필요합니다.
+Monkey Wrench is required.
+*/
+ MSG_USESKILL_FAIL_II_MONKEY_SPANNER = 0x5b3,
+#endif
+#if PACKETVER >= 20090312
+/*20090312 to 20090312
+'%s' 시전 시간까지 약 %d 분 남았습니다.
+20090318 to latest
+[%s] 스킬을 시전 할 수 없습니다.
+[%s] Cannot use the skills due to cooldown delay.
+*/
+ MSG_SKILLINTERVAL2 = 0x5b4,
+#endif
+#if PACKETVER >= 20090318
+/*20090318 to latest
+%d레벨 이상은 삭제가 불가능합니다.
+Deletion is impossible for over level %d
+*/
+ MSG_LEMIT_DELETE_LEVEL = 0x5b5,
+/*20090318 to 20110614
+마도기어 탑승시에는 사용할수 없습니다.
+20110620 to latest
+마도기어 탑승시에는 사용 할 수 없습니다.
+Can't be used while on Magic Gear.
+*/
+ MSG_USESKILL_FAIL_MADOGEAR_RIDE = 0x5b6,
+#endif
+#if PACKETVER >= 20090325
+/*20090325 to latest
+드래곤 내리기
+Dismount Dragon
+*/
+ MSG_DRAGONOFF = 0x5b7,
+/*20090325 to latest
+마도기어 내리기
+Dismount Magic Gear
+*/
+ MSG_MADOOFF = 0x5b8,
+#endif
+#if PACKETVER >= 20090401
+/*20090401 to latest
+소비
+I
+*/
+ MSG_STORE_TABNAME_0 = 0x5b9,
+/*20090401 to latest
+캐쉬
+Cash
+*/
+ MSG_STORE_TABNAME_1 = 0x5ba,
+/*20090401 to latest
+방어구
+Armors
+*/
+ MSG_STORE_TABNAME_2 = 0x5bb,
+/*20090401 to latest
+무기
+Weapons
+*/
+ MSG_STORE_TABNAME_3 = 0x5bc,
+/*20090401 to latest
+투사체
+Ammo
+*/
+ MSG_STORE_TABNAME_4 = 0x5bd,
+/*20090401 to latest
+카드
+Card
+*/
+ MSG_STORE_TABNAME_5 = 0x5be,
+/*20090401 to latest
+기타
+Other
+*/
+ MSG_STORE_TABNAME_6 = 0x5bf,
+/*20090401 to latest
+클라이언트 응답시간이 초과되어 연결이 끊어집니다.
+Client response time has passed so connection is terminated
+*/
+ MSG_ERROR_HS_TIMEOUT = 0x5c0,
+/*20090401 to latest
+핵쉴드 파일의 버전이 맞지 않습니다. 클라이언트를 재설치 해주십시오.
+Incorrect version of hack shield file. Please reinstall the client
+*/
+ MSG_ERROR_DIFF_CLIENT = 0x5c1,
+#endif
+#if PACKETVER >= 20090406
+/*20090406 to latest
+마법서가 필요합니다.
+[Magic Book] is required.
+*/
+ MSG_USESKILL_FAIL_SPELLBOOK = 0x5c2,
+/*20090406 to latest
+마법서가 너무 어려워서 졸음이 몰려온다.
+Feel sleepy since Magic Book is too difficult to understand.
+*/
+ MSG_USESKILL_FAIL_SPELLBOOK_DIFFICULT_SLEEP = 0x5c3,
+/*20090406 to latest
+보존포인트가 부족합니다.
+Not enough saved point.
+*/
+ MSG_USESKILL_FAIL_SPELLBOOK_PRESERVATION_POINT = 0x5c4,
+/*20090406 to latest
+더이상 마법서를 읽을수 없습니다.
+Can't read a Magic Book anymore.
+*/
+ MSG_USESKILL_FAIL_SPELLBOOK_READING = 0x5c5,
+/*20090406 to latest
+페이스페인트가 필요합니다.
+Face Paint is required.
+*/
+ MSG_USESKILL_FAIL_II_FACE_PAINTS = 0x5c6,
+/*20090406 to latest
+분장용붓이 필요합니다.
+Brush is required.
+*/
+ MSG_USESKILL_FAIL_II_MAKEUP_BRUSH = 0x5c7,
+#endif
+#if PACKETVER >= 20090408
+/*20090408 to latest
+대기 시간이 초과하였습니다. 다시 로그인 해주십시오.
+Waiting time has passed. Please log in again
+*/
+ MSG_MOBILE_TIMEOVER = 0x5c8,
+/*20090408 to latest
+위험! 이미 동일한 계정이 로그인 중에 있습니다. 잠시 모바일 인증 진행을 멈추시고 비번을 수정한 뒤 재 로그인 해주십시오.
+Watch out! Same account is already logged in. Stop mobile verification and log in again after changing your password
+*/
+ MSG_MOBILE_ANOTHER_LOGIN = 0x5c9,
+/*20090408 to latest
+위험! 현재 동일한 계정이 모바일 인증 대기 중에 있습니다. 잠시 모바일 인증 진행을 멈추시고 비번을 수정한 뒤 재 로그인 해주십시오.
+Watch out! Same account is waiting for mobile verification. Stop mobile verification and log in again after changing your password
+*/
+ MSG_MOBILE_WAITING_STATE = 0x5ca,
+#endif
+#if PACKETVER >= 20090506
+/*20090506 to latest
+게임 옵션창
+Game setting window
+*/
+ MSG_ESC_OPTIONWND = 0x5cb,
+/*20090506 to latest
+그래픽 설정
+Graphics Settings
+*/
+ MSG_GRAPHIC_OPTIONWND = 0x5cc,
+/*20090506 to latest
+사운드 설정
+Sound Settings
+*/
+ MSG_SOUND_OPTIONWND = 0x5cd,
+#endif
+#if PACKETVER >= 20090514
+/*20090514 to latest
+변경 할 단축키를 누르거나, 'ESC'키를 눌러 삭제 해 주세요.
+Press a key to assign. Pressing 'ESC' will remove the assigned key.
+*/
+ MSG_HOTKEYWND_NOTICE1 = 0x5ce,
+/*20090514 to latest
+단일 키로 지정 할 수 없는 키입니다.
+Unable to specify a single key.
+*/
+ MSG_HOTKEYWND_NOTICE2 = 0x5cf,
+/*20090514 to latest
+지정 할 수 없는 키입니다.
+Unable to specify the key assigned.
+*/
+ MSG_HOTKEYWND_NOTICE3 = 0x5d0,
+/*20090514 to latest
+'%s'에 사용된 단축키와 중복됩니다. 바꾸시겠습니까?
+Duplicated with ['%s']. Do you still want to change?
+*/
+ MSG_HOTKEYWND_NOTICE4 = 0x5d1,
+/*20090514 to latest
+저장된 단축키 조합이 초기화 됩니다. 초기화 하시겠습니까?
+Initialization is stored in the shortcut key settings. Do you want to initialized?
+*/
+ MSG_HOTKEYWND_NOTICE5 = 0x5d2,
+/*20090514 to latest
+스킬바
+Skill Bar
+*/
+ MSG_HOTKEYWND_TAB1 = 0x5d3,
+/*20090514 to latest
+인터페이스
+Interface
+*/
+ MSG_HOTKEYWND_TAB2 = 0x5d4,
+/*20090514 to latest
+이모션
+Macros
+*/
+ MSG_HOTKEYWND_TAB3 = 0x5d5,
+/*20090514 to latest
+단축키 설정 창
+Shortcut Settings
+*/
+ MSG_HOTKEYWND_TITLE = 0x5d6,
+#endif
+#if PACKETVER >= 20090520
+/*20090520 to latest
+배경음
+BGM
+*/
+ MSG_BGM = 0x5d7,
+/*20090520 to latest
+효과음
+Effect
+*/
+ MSG_SOUND = 0x5d8,
+/*20090520 to latest
+스킨
+Skin
+*/
+ MSG_SKIN = 0x5d9,
+/*20090520 to latest
+채팅방 입장음만 소리남 On
+Chat room entrance sound on
+*/
+ MSG_TINGONLY_ON = 0x5da,
+/*20090520 to latest
+채팅방 입장음만 소리남 Off
+Chat room entrance sound off
+*/
+ MSG_TINGONLY_OFF = 0x5db,
+/*20090520 to latest
+/tingonly : 채팅방 입장음만 들을수있게됩니다
+/tingonly: you can hear only sound like a chat room entry.
+*/
+ MSG_EXPLAIN_TINGONLY = 0x5dc,
+/*20090520 to latest
+/주먹
+/rock
+*/
+ MSG_EMOTION_ROCK = 0x5dd,
+/*20090520 to latest
+/가위
+/scissors
+*/
+ MSG_EMOTION_SCISSOR = 0x5de,
+/*20090520 to latest
+/보
+/paper
+*/
+ MSG_EMOTION_WRAP = 0x5df,
+/*20090520 to latest
+/러브
+/love
+*/
+ MSG_EMOTION_LUV = 0x5e0,
+/*20090520 to latest
+/mobile
+*/
+ MSG_EMOTION_MOBILE = 0x5e1,
+/*20090520 to latest
+/mail
+*/
+ MSG_EMOTION_MAIL = 0x5e2,
+/*20090520 to latest
+/antenna0
+*/
+ MSG_EMOTION_ANTENNA0 = 0x5e3,
+/*20090520 to latest
+/antenna1
+*/
+ MSG_EMOTION_ANTENNA1 = 0x5e4,
+/*20090520 to latest
+/antenna2
+*/
+ MSG_EMOTION_ANTENNA2 = 0x5e5,
+/*20090520 to latest
+/antenna3
+*/
+ MSG_EMOTION_ANTENNA3 = 0x5e6,
+/*20090520 to latest
+/hum
+*/
+ MSG_EMOTION_HUM2 = 0x5e7,
+/*20090520 to latest
+/abs
+*/
+ MSG_EMOTION_ABS = 0x5e8,
+/*20090520 to latest
+/oops
+*/
+ MSG_EMOTION_OOPS = 0x5e9,
+/*20090520 to latest
+/spit
+*/
+ MSG_EMOTION_SPIT = 0x5ea,
+/*20090520 to latest
+/ene
+*/
+ MSG_EMOTION_ENE = 0x5eb,
+/*20090520 to latest
+/panic
+*/
+ MSG_EMOTION_PANIC = 0x5ec,
+/*20090520 to latest
+/whisp
+*/
+ MSG_EMOTION_WHISP = 0x5ed,
+#endif
+#if PACKETVER >= 20090527
+/*20090527 to latest
+지정안함
+Not Assigned
+*/
+ MSG_HOTKEY_NOTHING = 0x5ee,
+#endif
+#if PACKETVER >= 20090603
+/*20090603 to latest
+카트장착시에만 사용가능합니다.
+Only available when cart is mounted.
+*/
+ MSG_USESKILL_FAIL_CART = 0x5ef,
+/*20090603 to latest
+[가시나무 씨앗]이 필요합니다.
+[Thorny Seed] is required.
+*/
+ MSG_USESKILL_FAIL_II_THORNS_SEED = 0x5f0,
+/*20090603 to latest
+[흡혈 식물 씨앗]이 필요합니다.
+[Bloodsucker Seed] is required.
+*/
+ MSG_USESKILL_FAIL_II_BLOOD_SUCKER_SEED = 0x5f1,
+/*20090603 to latest
+더이상 시전할수 없습니다.
+Cannot be used anymore.
+*/
+ MSG_USESKILL_FAIL_NO_MORE_SPELL = 0x5f2,
+/*20090603 to latest
+[폭탄버섯포자]가 필요합니다.
+[Bomb Mushroom Spore] is required.
+*/
+ MSG_USESKILL_FAIL_II_BOMB_MUSHROOM_SPORE = 0x5f3,
+/*20090603 to latest
+[화염병]이 필요합니다.
+[Fire Bottle] is required.
+*/
+ MSG_USESKILL_FAIL_II_GASOLINE_BOOMB = 0x5f4,
+/*20090603 to latest
+[기름병]이 필요합니다.
+[Oil Bottle] is required.
+*/
+ MSG_USESKILL_FAIL_II_OIL_BOTTLE = 0x5f5,
+/*20090603 to latest
+[폭발가루]가 필요합니다.
+[Explosive Powder] is required.
+*/
+ MSG_USESKILL_FAIL_II_EXPLOSION_POWDER = 0x5f6,
+/*20090603 to latest
+[연막가루]가 필요합니다.
+[Smokescreen Powder] is required.
+*/
+ MSG_USESKILL_FAIL_II_SMOKE_POWDER = 0x5f7,
+/*20090603 to latest
+[최루가스]가 필요합니다.
+[Tear Gas] is required.
+*/
+ MSG_USESKILL_FAIL_II_TEAR_GAS = 0x5f8,
+/*20090603 to latest
+[염산병]이 필요합니다.
+[Acid Bottle] is required.
+*/
+ MSG_USESKILL_FAIL_II_HYDROCHLORIC_ACID_BOTTLE = 0x5f9,
+/*20090603 to latest
+[식인식물병]이 필요합니다.
+[Bottom Man-Eating Plant] is required.
+*/
+ MSG_USESKILL_FAIL_II_HELLS_PLANT_BOTTLE = 0x5fa,
+/*20090603 to latest
+[만드라고라의 화분]이 필요합니다.
+[Pot of Mandragora] is required.
+*/
+ MSG_USESKILL_FAIL_II_MANDRAGORA_FLOWERPOT = 0x5fb,
+/*20090603 to latest
+파티장 위임
+Party delegation
+*/
+ MSG_YIELD_PARTYMASTER = 0x5fc,
+/*20090603 to latest
+정말 파티장을 위임하시겠습니까?
+Do you want to delegate the real party?
+*/
+ MSG_DO_YOU_REALLY_WANT_YIELD_PARTYMASTER = 0x5fd,
+/*20090603 to latest
+파티장을 위임 할 수 없습니다.
+Party cannot be delegated.
+*/
+ MSG_CANNOT_YIELD_PARTYMASTER = 0x5fe,
+/*20090603 to latest
+변경불가
+Immutable
+*/
+ MSG_FAILED_CHANGE = 0x5ff,
+#endif
+#if PACKETVER >= 20090610
+/*20090610 to latest
+[%s]가 %d개 필요합니다.
+[%s] required '%d' amount.
+*/
+ MSG_USESKILL_FAIL_NEED_ITEM = 0x600,
+/*20090610 to latest
+제련 수치가 하향 조정 되었습니다.
+Is now refining the value lowered.
+*/
+ MSG_ITEM_REFINING_DOWNGRADE = 0x601,
+/*20090610 to latest
+[%s]를 장비하고 있어야 사용할 수 있습니다
+Need to put on [%s] in order to use.
+*/
+ MSG_USESKILL_FAIL_NEED_EQUIPMENT = 0x602,
+#endif
+#if PACKETVER >= 20090617
+/*20090617 to 20090922
+전장 리스트
+20090929 to latest
+전장 입장 설정
+Battle field entrance setting
+*/
+ MSG_BATTLEFIELD_LIST = 0x603,
+/*20090617 to 20090929
+전장 - [%s] 신청 하시겠습니까?
+20091006 to latest
+% 전장으로 이동 할 수 없는 상태가 되어 전장 신청이 취소 되었습니다.
+Battlefield - [%s] you sign up?
+*/
+ MSG_CANNOT_JOINTO_BATTLEFIELD = 0x604,
+/*20090617 to 20090715
+전장 - [%s] 입장 신청이 완료되었습니다.
+20090722 to 20090929
+입장 신청이 완료되었습니다.
+20091006 to 20100928
+
+20101005 to latest
+
+Current admission application state.
+*/
+ MSG_COMPLETED_JOINTO_BATTLEFIELD = 0x605,
+/*20090617 to 20090624
+전장 - [%s] 입장 하실 수 없습니다.
+20090701 to 20090715
+전장 - [%s] 에 입장 할 수 없는 상태이므로 등록이 취소 되었습니다.
+20090722 to 20090929
+에 입장 할 수 없는 상태이므로 등록이 취소 되었습니다.
+20091006 to latest
+% 전장 입장이 보류 되었습니다. 다른 플레이어를 기다립니다.
+It was unregistered and not be able to enter the state.
+*/
+ MSG_DIFFER_JOINTO_BATTLEFIELD = 0x606,
+/*20090617 to 20090929
+현재 입장 신청 상태입니다.
+20091006 to 20100928
+
+20101005 to latest
+
+Current admission application state.
+*/
+ MSG_STATUS_JOINTO_BATTLEFIELD = 0x607,
+/*20090617 to 20090929
+입장 신청을 취소하시겠습니까?
+20091006 to 20100616
+%s 전장 신청을 정말로 취소하시겠습니까?
+20100622 to latest
+확인 단추를 누르면 전장 신청이 취소됩니다. 아래 단추를 클릭해 주세요.
+Do you want to cancel the admission application?
+*/
+ MSG_REQ_CANCEL_JOINTO_BATTLEFIELD = 0x608,
+/*20090617 to 20090715
+전장 - [%s] 입장 신청이 취소되었습니다.
+20090722 to 20090929
+입장 신청이 취소되었습니다.
+20091006 to latest
+%s 전장 입장 신청이 취소되었습니다.
+Admission request has been cancelled.
+*/
+ MSG_CANCEL_JOINTO_BATTLEFIELD = 0x609,
+/*20090617 to 20090929
+곧 전장으로 이동 합니다.
+20091006 to latest
+잠시후 %s 전장으로 이동 합니다. 공간 이동을 위한 안정적인 상태를 확보해 주시길 바랍니다. (거래 및 공간 이동 기능 일시 중지됨)
+Go to the battlefield quickly.
+*/
+ MSG_MOVETO_BATTLEFIELD = 0x60a,
+/*20090617 to 20091028
+전장 - [%s]
+20091103 to latest
+전장 명칭
+Battlefield - [%s]
+*/
+ MSG_BATTLEFIELD_NAME = 0x60b,
+#endif
+#if PACKETVER >= 20090624
+/*20090624 to latest
+정말 이동 하시겠습니까?
+Do you really want to go back to your savepoint?
+*/
+ MSG_MOVETO_SAVEPOINT = 0x60c,
+/*20090624 to latest
+파티원 찾기 메세지
+Search Message for Party Members
+*/
+ MSG_VIEW_SEEK_PARTY = 0x60d,
+/*20090624 to latest
+파티원 찾기 메세지 옵션이 꺼져있습니다.
+Message option is off the search party members.
+*/
+ MSG_UNVIEW_SEEK_PARTY = 0x60e,
+/*20090624 to latest
+10초간 파티 지원 딜레이가 걸려있습니다.
+10 seconds delay of party support is in effect
+*/
+ MSG_SEEK_PARTY_DEALY = 0x60f,
+#endif
+#if PACKETVER >= 20090701
+/*20090701 to latest
+ 파티장은 '%s' 님 입니다.
+Party leader is '%s'.
+*/
+ MSG_NOTIFY_PARTY_ROLE_MASTER = 0x610,
+/*20090701 to 20090715
+전장 - [%s] : 시스템 오류로 입장 할 수 없습니다.
+20090722 to latest
+시스템 오류로 입장 할 수 없습니다.
+Unable to enter due to system error.
+*/
+ MSG_ERROR_SYSTEM_ERROR_BATTLEFIELD = 0x611,
+/*20090701 to 20090715
+전장 - [%s] : 대기 인원 수 초과로 입장 할 수 없습니다.
+20090722 to latest
+대기 인원 수 초과로 입장 할 수 없습니다.
+Cannot wait to enter the number of excess.
+*/
+ MSG_ERROR_FULL_ESROOM_BATTLEFIELD = 0x612,
+/*20090701 to 20090715
+전장 - [%s] : 이미 신청 되었습니다.
+20090722 to latest
+이미 신청 되었습니다.
+Has already been applied.
+*/
+ MSG_ERROR_DOUBLE_OFFER_BATTLEFIELD = 0x613,
+/*20090701 to 20090715
+전장 - [%s] : 대기 시간이 초과되어 등록이 취소 되었습니다.
+20090722 to latest
+대기 시간이 초과되어 등록이 취소 되었습니다.
+Registration has been cancelled because of the excessive waiting time.
+*/
+ MSG_ERROR_WAIT_TIMEOUT_BATTLEFIELD = 0x614,
+/*20090701 to 20090715
+전장 - [%s] : 입장 조건이 맞지 않아, 등록이 취소 되었습니다.
+20090722 to latest
+입장 조건이 맞지 않아, 등록이 취소 되었습니다.
+Unregistered because admission requirements are not matching.
+*/
+ MSG_ERROR_BATTLEFILD_ENTER_BATTLEFIELD = 0x615,
+/*20090701 to 20090715
+전장 - [%s] : 오류가 발생하여 등록이 취소 되었습니다.
+20090722 to latest
+오류가 발생하여 등록이 취소 되었습니다.
+Was unregistered and error.
+*/
+ MSG_ERROR_DROP_ENTRANCESTATION_BATTLEFIELD = 0x616,
+#endif
+#if PACKETVER >= 20090708
+/*20090708 to latest
+[%s]의 연계 스킬입니다.
+The skill need [%s].
+*/
+ MSG_USESKILL_FAIL_COMBOSKILL = 0x617,
+/*20090708 to latest
+특정스킬 의 연계 스킬입니다.
+The skill need a particular skill.
+*/
+ MSG_USESKILL_FAIL_COMBOSKILL2 = 0x618,
+/*20090708 to latest
+기구체 %d 개가 필요합니다
+Requires %d mind bullets
+*/
+ MSG_USESKILL_FAIL_SPIRITS = 0x619,
+/*20090708 to 20090708
+기구체 %d 개가 필요합니다
+Requires %d mind bullets
+20090715 to latest
+기구체가 필요합니다
+Mind Bullet is required.
+*/
+ MSG_USESKILL_FAIL_SPIRITS2 = 0x61a,
+#endif
+#if PACKETVER >= 20090729
+/*20090729 to latest
+최대 소지량 보다 많은 룬스톤을 제작할 수 없습니다.
+Cannot create rune stone more than the maximum amount.
+*/
+ MSG_RUNESTONE_MAKEERROR_OVERCOUNT = 0x61b,
+/*20090729 to latest
+전장 리스트를 받을 수 없는 상태입니다. 확인 후 다시 시도 해 주세요.
+Not able to receive battle field list. Please check and try again
+*/
+ MSG_ERROR_LIST_OPEN_BATTLEFIELD = 0x61c,
+/*20090729 to latest
+레벨이 부족하여 입장 할 수 없습니다.
+Level is not high enough to enter
+*/
+ MSG_ERROR_LEVEL_LIMIT_BATTLEFIELD = 0x61d,
+#endif
+#if PACKETVER >= 20090805
+/*20090805 to latest
+ 1차 직업 스킬 %d개를 더 올려 주십시오.
+You must consume all '%d' points in your 1st Tab.
+*/
+ MSG_UPGRADESKILLERROR_MORE_FIRSTJOBSKILL = 0x61e,
+#endif
+#if PACKETVER >= 20091013
+/*20091013 to latest
+ 1차 혹은 2차 직업 스킬 %d개를 더 올려 주십시오.
+You must consume all '%d' remaining points in your 2nd Tab. 1st Tab is already done.
+*/
+ MSG_UPGRADESKILLERROR_MORE_SECONDJOBSKILL = 0x61f,
+/*20091013 to latest
+변환 가능한 아이템
+Items available for conversion
+*/
+ MSG_ITEMSYOUCANCHANGE = 0x620,
+/*20091013 to latest
+변환할 아이템
+Insert items to convert
+*/
+ MSG_ITEMS_FOR_CHANGE = 0x621,
+/*20091013 to latest
+변환이 불가능한 조합 입니다.
+Inconvertible combination
+*/
+ MSG_SKILL_RECIPE_NOTEXIST = 0x622,
+/*20091013 to latest
+인벤토리의 무게가 너무 무겁습니다.
+Inventory weight is too much
+*/
+ MSG_SKILL_INVENTORY_WEIGHT_OVER = 0x623,
+/*20091013 to latest
+인벤토리를 공간을 확보해주세요.
+Please secure some room in the inventory
+*/
+ MSG_SKILL_INVENTORY_KINDCNT_OVER = 0x624,
+/*20091013 to latest
+재료가 존재하지 않습니다.
+Material doesn't exist
+*/
+ MSG_SKILL_MATERIAL_FAIL = 0x625,
+/*20091013 to latest
+성공하였습니다.
+Successful.
+*/
+ MSG_SKILL_SUCCESS = 0x626,
+/*20091013 to latest
+실패 하였습니다.
+Failed.
+*/
+ MSG_SKILL_FAIL = 0x627,
+/*20091013 to latest
+실패하여 모든 재료가 사라졌습니다.
+all materials are gone due to failure
+*/
+ MSG_SKILL_FAIL_MATERIAL_DESTROY = 0x628,
+/*20091013 to latest
+지정하신 탭 이름이 너무 길어 변경 할 수 없습니다.
+unable to change the name of the specified tab, because it's too long.
+*/
+ MSG_FAILED_CHANGE_TABNAME = 0x629,
+/*20091013 to latest
+더 이상 추가 할 수 없습니다.
+Cannot add more.
+*/
+ MSG_FAILED_ADD_TAB = 0x62a,
+/*20091013 to latest
+인증에 실패 했습니다.
+Authentication failed.
+*/
+ MSG_FAILED_LOCKSERVER = 0x62b,
+/*20091013 to 20101012
+봇 체크
+20101019 to 20101019
+자동 로그인 방지
+20101026 to latest
+자동 입력 방지
+Bot checks
+*/
+ MSG_BOT_CHECK = 0x62c,
+/*20091013 to latest
+감정이 않된 아이템은 재료로 사용할 수 없습니다.
+Items cannot be used in materials cannot be emotional.
+*/
+ MSG_SKILL_FAIL_MATERIAL_IDENTITY = 0x62d,
+/*20091013 to latest
+접속하신 IP는 라그나로크 온라인 이용이 불가능 합니다. 고객 지원 센터 또는 홈페이지로 문의 해 주십시오.
+It is impossible to connect using this IP in Ragnarok Online. Please contact the customer support center or home.
+*/
+ MSG_BAN_IP_BLOCK = 0x62e,
+/*20091013 to latest
+비밀번호가 6회 이상 잘못 입력되어 잠시 동안 접속이 제한됩니다. 고객님의 개인정보를 다시 한 번 확인해 주시길 바랍니다.
+You have entered a wrong password for more than six times, please check your personal information again.
+*/
+ MSG_BAN_INVALID_PWD_CNT = 0x62f,
+/*20091013 to latest
+합성에 사용한 아이템은 소모됩니다. 괜찮겠습니까?
+Consumption items are used in the synthesis. Are you sure?
+*/
+ MSG_MIX_ACCEPT = 0x630,
+/*20091013 to latest
+왼쪽에 보이는 글자 및 숫자조합을 입력해주세요.
+Please input the captcha code found at your left side.
+*/
+ MSG_BOT_CHECK_NOTIC = 0x631,
+/*20091013 to latest
+전장 설명 -
+Describes the battlefield --
+*/
+ MSG_DESCRIBE_BATTLEFIELD = 0x632,
+/*20091013 to latest
+입장 대기 상태 -
+Waiting for admission --
+*/
+ MSG_BATTLEFIELD_STATUS = 0x633,
+/*20091013 to latest
+전장 입장 신청 도움말
+Request help battle position
+*/
+ MSG_BATTLEFIELD_HELP = 0x634,
+#endif
+#if PACKETVER >= 20091015
+/*20091015 to latest
+죄송합니다. 해당 직업의 캐릭터는 현재 테스트를 위해서 접속이 금지됩니다.
+Sorry the character you are trying to use is banned for testing connection.
+*/
+ MSG_BAN_NOT_ALLOWED_JOBCLASS = 0x635,
+#endif
+#if PACKETVER >= 20091027
+/*20091027 to latest
+모든 장비 해제
+Remove all equipment
+*/
+ MSG_REMOVE_EQUIPEDITEM = 0x636,
+#endif
+#if PACKETVER >= 20091103
+/*20091103 to latest
+미니 아이콘
+Mini Icon
+*/
+ MSG_MINI_ICON = 0x637,
+/*20091103 to latest
+진영 A : 진영 B
+Camp A: Camp B
+*/
+ MSG_BATTLEFIELD_TEAM = 0x638,
+/*20091103 to 20100616
+대기 상태
+20100622 to latest
+대기열
+Wait
+*/
+ MSG_WAIT_STATUS = 0x639,
+/*20091103 to latest
+전장 신청 취소 알림
+cancellation notice of Battlefield registration.
+*/
+ MSG_NOTIFY_BATTLEFIELD_CANCEL = 0x63a,
+/*20091103 to latest
+전장 필요 인원
+Required field for staff
+*/
+ MSG_BATTLEFIELD_COUNT = 0x63b,
+/*20091103 to latest
+전장 A 대기 인원
+Battlefield staff A is waiting.
+*/
+ MSG_BATTLEFIELD_ATEAM_COUNT = 0x63c,
+/*20091103 to latest
+전장 B 대기 인원
+Battlefield staff B is waiting.
+*/
+ MSG_BATTLEFIELD_BTEAM_COUNT = 0x63d,
+/*20091103 to latest
+내 대기 상황 : %d(진영 A)
+Waiting for my situation: %d (Camp A)
+*/
+ MSG_BATTLEFIELD_ATEAM_WAIT = 0x63e,
+/*20091103 to latest
+내 대기 상황 : %d(진영 B)
+Waiting for my situation: %d (Camp B)
+*/
+ MSG_BATTLEFIELD_BTEAM_WAIT = 0x63f,
+/*20091103 to latest
+전장 아이콘을 보여줍니다.
+Battlefield display icon.
+*/
+ MSG_SHOW_BATTLEFIELD_ICON = 0x640,
+/*20091103 to latest
+전장 아이콘을 보여주지 않습니다.
+Does not display the icon field.
+*/
+ MSG_DONT_SHOW_BATTLEFIELD_ICON = 0x641,
+/*20091103 to latest
+전장 이동 알림
+Field notification was moved.
+*/
+ MSG_NOTIFY_BATTLEFIELD_MOVE = 0x642,
+/*20091103 to latest
+전장 입장 보류 알림
+Admission pending notification of the battlefield
+*/
+ MSG_NOTIFY_BATTLEFIELD_DEFER = 0x643,
+/*20091103 to latest
+누군가
+Anyone
+*/
+ MSG_WHO_IS = 0x644,
+/*20091103 to latest
+ [%s](으)로부터 '%d'의 데미지를 받았습니다.
+ [%s] deal '%d' damage on you.
+*/
+ MSG_I_RECEIVED_DAMAGE = 0x645,
+/*20091103 to 20091104
+ [%s]가 [%s](으)로부터 '%d'의 데미지를 받았습니다.
+20091110 to latest
+ [%s]님이 [%s](으)로부터 '%d'의 데미지를 받았습니다.
+ [%s] received damage from [%s] with '%d' damage.
+*/
+ MSG_PARTY_RECEIVED_DAMAGE = 0x646,
+/*20091103 to latest
+ [%s]에게 '%d'의 데미지를 주었습니다.
+ [%s] received '%d' damage.
+*/
+ MSG_I_GAVE_DAMAGE = 0x647,
+/*20091103 to 20091104
+ [%s님]가 [%s]에게 '%d'의 데미지를 주었습니다.
+20091110 to latest
+ [%s]님이 [%s]에게 '%d'의 데미지를 주었습니다.
+ [%s] deal damage to [%s] with '%d' damage.
+*/
+ MSG_PARTY_GAVE_DAMAGE = 0x648,
+/*20091103 to latest
+%s %d 개 드롭
+You dropped '%s' (%d).
+*/
+ MSG_DROP_ITEM = 0x649,
+/*20091103 to latest
+ [%s]퀘스트의 [%s]몬스터를 처치하였습니다. (%d/%d)
+[%s] Quest - defeated [%s] progress (%d/%d)
+*/
+ MSG_CLEAR_QUEST_MONSTER = 0x64a,
+/*20091103 to latest
+%s 퀘스트가 삭제 되었습니다.
+The Quest '%s' has been removed.
+*/
+ MSG_DELETE_QUEST = 0x64b,
+/*20091103 to latest
+[%s]님이
+[%s] has
+*/
+ MSG_NOTIFY_WHO = 0x64c,
+/*20091103 to latest
+'%d'의 경험치를
+You acquired '%d' Experience Points
+*/
+ MSG_NOTIFY_EXP = 0x64d,
+/*20091103 to latest
+'%d'의 잡경험치를
+You acquired '%d' Job Experience Points
+*/
+ MSG_NOTIFY_JOBEXP = 0x64e,
+/*20091103 to latest
+획득했습니다.
+ gained.
+*/
+ MSG_GET = 0x64f,
+/*20091103 to latest
+상실했습니다.
+ has lost.
+*/
+ MSG_LOSS = 0x650,
+/*20091103 to latest
+ [%s](으)로부터 '%d'의 코인을 스틸했습니다.
+From [%s], '%d' coins were stolen.
+*/
+ MSG_NOTIFY_STEAL_COIN = 0x651,
+/*20091103 to latest
+전투 메시지
+Battle Message
+*/
+ MSG_VIEW_COMBAT_MSG = 0x652,
+/*20091103 to latest
+파티원 전투 메시지
+Display Party Battle Message
+*/
+ MSG_VIEW_PARTY_COMBAT_MSG = 0x653,
+/*20091103 to latest
+획득 경험치
+Display Experience Message
+*/
+ MSG_VIEW_GETTING_EXP_MSG = 0x654,
+/*20091103 to latest
+파티원의 획득 경험치
+Display Party Experience Message
+*/
+ MSG_VIEW_PARTY_GETTING_EXP_MSG = 0x655,
+/*20091103 to latest
+퀘스트 정보 표시
+Display Quest Info Message
+*/
+ MSG_VIEW_QUEST_INFO_MSG = 0x656,
+/*20091103 to latest
+전장 정보 표시
+Display Battlefield Message
+*/
+ MSG_VIEW_BATTLEFIELD_INFO_MSG = 0x657,
+#endif
+#if PACKETVER >= 20091104
+/*20091104 to latest
+[%s]에게
+[%s]
+*/
+ MSG_NOTIFY_TARGET_WHO = 0x658,
+/*20091104 to 20091104
+[%s] 스킬을 캐스팅합니다.
+20091110 to latest
+[%s] 스킬을 사용합니다.
+Casts [%s] skill.
+*/
+ MSG_NOTIFY_SKILL_TO_TARGET = 0x659,
+#endif
+#if PACKETVER >= 20091110
+/*20091110 to latest
+기능제한상태
+Activate lock function
+*/
+ MSG_LOCK_MOUSE = 0x65a,
+/*20091110 to latest
+기능제한해제상태
+Deactivate lock function
+*/
+ MSG_UNLOCK_MOUSE = 0x65b,
+#endif
+#if PACKETVER >= 20091201
+/*20091201 to latest
+[%s]님이 [%s](으)로부터 '%s' 를 획득 했습니다.
+Citizens of Midgard, Lady Luck shines upon [%s] !! [%s] has awarded the player with '%s' !!
+*/
+ MSG_BROADCASTING_SPECIAL_ITEM_OBTAIN = 0x65c,
+#endif
+#if PACKETVER >= 20091208
+/*20091208 to latest
+소드맨
+Swordman
+*/
+ MSG_JOB_SWORDMAN = 0x65d,
+/*20091208 to latest
+매지션
+Magician
+*/
+ MSG_JOB_MAGICIAN = 0x65e,
+/*20091208 to latest
+아처
+Archer
+*/
+ MSG_JOB_ARCHER = 0x65f,
+/*20091208 to latest
+어콜라이트
+Acolyte
+*/
+ MSG_JOB_ACOLYTE = 0x660,
+/*20091208 to latest
+머첸트
+Merchant
+*/
+ MSG_JOB_MERCHANT = 0x661,
+/*20091208 to latest
+씨프
+Thief
+*/
+ MSG_JOB_THIEF = 0x662,
+/*20091208 to latest
+나이트
+Knight
+*/
+ MSG_JOB_KNIGHT = 0x663,
+/*20091208 to latest
+프리스트
+Priest
+*/
+ MSG_JOB_PRIEST = 0x664,
+/*20091208 to latest
+위저드
+Wizard
+*/
+ MSG_JOB_WIZARD = 0x665,
+/*20091208 to latest
+블랙스미스
+Black Smith
+*/
+ MSG_JOB_BLACKSMITH = 0x666,
+/*20091208 to latest
+헌터
+Hunter
+*/
+ MSG_JOB_HUNTER = 0x667,
+/*20091208 to latest
+어새신
+Assasin
+*/
+ MSG_JOB_ASSASSIN = 0x668,
+/*20091208 to latest
+크루세이더
+Crusader
+*/
+ MSG_JOB_CRUSADER = 0x669,
+/*20091208 to latest
+몽크
+Monk
+*/
+ MSG_JOB_MONK = 0x66a,
+/*20091208 to latest
+세이지
+Sage
+*/
+ MSG_JOB_SAGE = 0x66b,
+/*20091208 to latest
+로그
+Rogue
+*/
+ MSG_JOB_ROGUE = 0x66c,
+/*20091208 to latest
+알케미스트
+Alchemist
+*/
+ MSG_JOB_ALCHEMIST = 0x66d,
+/*20091208 to latest
+바드
+Bard
+*/
+ MSG_JOB_BARD = 0x66e,
+/*20091208 to latest
+댄서
+Dancer
+*/
+ MSG_JOB_DANCER = 0x66f,
+/*20091208 to 20100310
+룬나이트
+20100316 to latest
+룬 나이트
+Rune Knight
+*/
+ MSG_JOB_RUNE_KNIGHT = 0x670,
+/*20091208 to latest
+워록
+Warlock
+*/
+ MSG_JOB_WARLOCK = 0x671,
+/*20091208 to latest
+레인져
+Ranger
+*/
+ MSG_JOB_RANGER = 0x672,
+/*20091208 to 20100310
+아크비숍
+20100316 to latest
+아크 비숍
+Arc Bishop
+*/
+ MSG_JOB_ARCHBISHOP = 0x673,
+/*20091208 to latest
+미케닉
+Mechanic
+*/
+ MSG_JOB_MECHANIC = 0x674,
+/*20091208 to 20100310
+길로틴크로스
+20100316 to latest
+길로틴 크로스
+Guillotine Cross
+*/
+ MSG_JOB_GUILLOTINE_CROSS = 0x675,
+/*20091208 to latest
+로얄가드
+Royal Guard
+*/
+ MSG_JOB_ROYAL_GUARD = 0x676,
+/*20091208 to latest
+소서러
+Sorcerer
+*/
+ MSG_JOB_SORCERER = 0x677,
+/*20091208 to latest
+민스트럴
+Minstrel
+*/
+ MSG_JOB_MINSTREL = 0x678,
+/*20091208 to latest
+원더러
+Wanderer
+*/
+ MSG_JOB_WANDERER = 0x679,
+/*20091208 to latest
+수라
+Sura
+*/
+ MSG_JOB_SURA = 0x67a,
+/*20091208 to latest
+제네릭
+Genetic
+*/
+ MSG_JOB_GENETIC = 0x67b,
+/*20091208 to 20100310
+쉐도우체이서
+20100316 to latest
+쉐도우 체이서
+Shadow Chaser
+*/
+ MSG_JOB_SHADOW_CHASER = 0x67c,
+/*20091208 to 20100113
+소드맨_하이
+20100119 to latest
+소드맨 하이
+High Swordman
+*/
+ MSG_JOB_SWORDMAN_H = 0x67d,
+/*20091208 to 20100113
+매지션_하이
+20100119 to latest
+매지션 하이
+High Magician
+*/
+ MSG_JOB_MAGICIAN_H = 0x67e,
+/*20091208 to 20100113
+아처_하이
+20100119 to latest
+아처 하이
+High Archer
+*/
+ MSG_JOB_ARCHER_H = 0x67f,
+/*20091208 to 20100113
+어콜라이트_하이
+20100119 to latest
+어콜라이트 하이
+High Acolyte
+*/
+ MSG_JOB_ACOLYTE_H = 0x680,
+/*20091208 to 20100113
+머첸트_하이
+20100119 to latest
+머첸트 하이
+High Merchant
+*/
+ MSG_JOB_MERCHANT_H = 0x681,
+/*20091208 to 20100113
+시프_하이
+20100119 to 20100223
+시프 하이
+20100302 to latest
+씨프 하이
+High Thief
+*/
+ MSG_JOB_THIEF_H = 0x682,
+/*20091208 to latest
+로드나이트
+Lord Knight
+*/
+ MSG_JOB_KNIGHT_H = 0x683,
+/*20091208 to latest
+하이프리스트
+High Priest
+*/
+ MSG_JOB_PRIEST_H = 0x684,
+/*20091208 to latest
+하이위저드
+High Wizard
+*/
+ MSG_JOB_WIZARD_H = 0x685,
+/*20091208 to latest
+화이트스미스
+White Smith
+*/
+ MSG_JOB_BLACKSMITH_H = 0x686,
+/*20091208 to latest
+스나이퍼
+Sniper
+*/
+ MSG_JOB_HUNTER_H = 0x687,
+/*20091208 to latest
+어새신크로스
+Assasin Cross
+*/
+ MSG_JOB_ASSASSIN_H = 0x688,
+/*20091208 to latest
+팔라딘
+Paladin
+*/
+ MSG_JOB_CRUSADER_H = 0x689,
+/*20091208 to latest
+챔피온
+Champion
+*/
+ MSG_JOB_MONK_H = 0x68a,
+/*20091208 to latest
+프로페서
+Professor
+*/
+ MSG_JOB_SAGE_H = 0x68b,
+/*20091208 to latest
+스토커
+Stalker
+*/
+ MSG_JOB_ROGUE_H = 0x68c,
+/*20091208 to latest
+크리에이터
+Creator
+*/
+ MSG_JOB_ALCHEMIST_H = 0x68d,
+/*20091208 to latest
+클로운
+Clown
+*/
+ MSG_JOB_BARD_H = 0x68e,
+/*20091208 to latest
+집시
+Gypsy
+*/
+ MSG_JOB_DANCER_H = 0x68f,
+/*20091208 to latest
+노비스
+Wedding
+*/
+ MSG_JOB_NOVICE = 0x690,
+/*20091208 to latest
+하이노비스
+High Novice
+*/
+ MSG_JOB_NOVICE_H = 0x691,
+/*20091208 to latest
+슈퍼노비스
+Super Novice
+*/
+ MSG_JOB_SUPERNOVICE = 0x692,
+/*20091208 to latest
+건슬링거
+Gunslinger
+*/
+ MSG_JOB_GUNSLINGER = 0x693,
+/*20091208 to latest
+닌자
+Ninja
+*/
+ MSG_JOB_NINJA = 0x694,
+/*20091208 to 20100105
+태권소녀,태권소년
+20100112 to 20100310
+태권소년소녀
+20100316 to latest
+태권소년/소녀
+Taekwon F/M
+*/
+ MSG_JOB_TAEKWON = 0x695,
+/*20091208 to latest
+권성
+Star Gladiator
+*/
+ MSG_JOB_STAR = 0x696,
+/*20091208 to latest
+소울링커
+Soul Linker
+*/
+ MSG_JOB_LINKER = 0x697,
+/*20091208 to latest
+파티모집
+Party Recruitment
+*/
+ MSG_SEEK_PARTY_MEMBER = 0x698,
+/*20091208 to 20100310
+파티 부킹 리스트
+20100316 to latest
+파티 모집 리스트
+Party Booking List
+*/
+ MSG_SEEK_PARTY_LIST = 0x699,
+/*20091208 to latest
+파티 모집 중
+Recruiting Party
+*/
+ MSG_SEEK_PARTY_CHECK = 0x69a,
+#endif
+#if PACKETVER >= 20091215
+/*20091215 to latest
+[활]을 장착한 상태여야 합니다.
+[Bow] must be equipped.
+*/
+ MSG_FAIL_NEED_EQUIPPED_BOW = 0x69b,
+/*20091215 to latest
+[악기/채찍]을 장착한 상태여야 합니다.
+[Musical Instrument/Whip] must be equipped.
+*/
+ MSG_FAIL_NEED_EQUIPPED_INSTRUMENT_WHIP = 0x69c,
+/*20091215 to latest
+영문과 숫자만 사용가능합니다.
+Only alphanumeric characters are allowed.
+*/
+ MSG_BAD_CHAR = 0x69d,
+/*20091215 to latest
+알림
+Notice
+*/
+ MSG_ALRAM = 0x69e,
+/*20091215 to latest
+상점 정보가 정확하지 않아 아이템 구매가 실패하였습니다.
+Item purchase failed due to incorrect shop information.
+*/
+ MSG_FAIL_BUY_ITEM_INVALID_MCSTORE = 0x69f,
+#endif
+#if PACKETVER >= 20100105
+/*20100105 to latest
+소지 아이템 창에서 버릴 수 있습니다.
+Item cannot be discarded from the window.
+*/
+ MSG_CAN_DROP_ITEM_TO_ITEMWND = 0x6a0,
+#endif
+#if PACKETVER >= 20100112
+/*20100112 to latest
+시간
+Time
+*/
+ MSG_TIME = 0x6a1,
+/*20100112 to latest
+맵
+Map
+*/
+ MSG_MAP = 0x6a2,
+/*20100112 to latest
+거래 상태에서는 아이템 사용 및 장비 착용/해제를 할 수 없습니다.
+You can't use, equip or disarm items when you're trading.
+*/
+ MSG_CANT_USE_WHEN_OPENED_EXCHANGEWND = 0x6a3,
+/*20100112 to latest
+미지정값
+Unspecified value
+*/
+ MSG_HOTKEY_UNKOWN = 0x6a4,
+#endif
+#if PACKETVER >= 20100126
+/*20100126 to latest
+/stateinfo : 상태 아이콘에 대한 설명을 보여줍니다. On Off
+/stateinfo: Shows the description of status icons. On Off
+*/
+ MSG_EXPLAIN_STATEINFO = 0x6a5,
+/*20100126 to latest
+상태 정보 On : 상태 아이콘에 대한 설명이 표시됩니다.
+Status Information On: Status icon description is enabled.
+*/
+ MSG_SHOW_STATEINFO_ON = 0x6a6,
+/*20100126 to latest
+상태 정보 Off: 상태 아이콘에 대한 설명이 표시되지 않습니다.
+Status Information Off: Status icon description is disabled.
+*/
+ MSG_SHOW_STATEINFO_OFF = 0x6a7,
+/*20100126 to 20100126
+같은 아이템은 한번에 %d개 이상은 살수 없습니다.
+20100202 to latest
+같은 아이템은 한번에 %d개 이상은 살 수 없습니다.
+It is not possible to purchase the same item more than %d pieces at a time
+*/
+ MSG_LIMIT_BUY_ITEM2 = 0x6a8,
+#endif
+#if PACKETVER >= 20100202
+/*20100202 to latest
+같은 아이템은 한번에 %d개 이상은 팔 수 없습니다.
+It is not possible to purchase the same item more than %d pieces at a time
+*/
+ MSG_LIMIT_SELL_ITEM = 0x6a9,
+/*20100202 to 20100203
+총 구매 가능 개수는 %d개 입니다.
+20100209 to latest
+해당 아이템의 총 구매 가능 개수는 %d개 입니다.
+Can purchase upto %d pieces of the same item at a time.
+*/
+ MSG_CAN_BUY_ITEM_NUM = 0x6aa,
+#endif
+#if PACKETVER >= 20100209
+/*20100209 to latest
+설정한 내용은 정상 종료 시 [%s\%s]에 저장됩니다.
+User customized key is saved to [%s\%s]
+*/
+ MSG_SAVE_HOTKEY_TO_FILE = 0x6ab,
+#endif
+#if PACKETVER >= 20100216
+/*20100216 to latest
+[%s] 님은 현재 교환 신청을 받을 수 없는 상태입니다.
+[%s] is currently on trade and cannot accept the request.
+*/
+ MSG_CHARACTER_IS_BUSY = 0x6ac,
+#endif
+#if PACKETVER >= 20100309
+/*20100309 to latest
+RO_HELP
+RO_HELP.
+*/
+ MSG_RO_HELP = 0x6ad,
+#endif
+#if PACKETVER >= 20100316
+/*20100316 to latest
+모루가 존재 하지 않습니다.
+Anvil does not exist.
+*/
+ MSG_HAVENOT_ANVIL = 0x6ae,
+/*20100316 to latest
+노비스 레벨 10 이하는 귓속말이 금지됩니다
+Novice below level 10 is not allowed to whisper.
+*/
+ MSG_WHISPER_BLOCK_NOVICE_LEVEL10 = 0x6af,
+#endif
+#if PACKETVER >= 20100323
+/*20100323 to latest
+공격
+Attack
+*/
+ MSG_JOB_ATTACKER = 0x6b0,
+/*20100323 to latest
+방어
+Defense
+*/
+ MSG_JOB_TANKER = 0x6b1,
+/*20100323 to latest
+회복
+Consumables
+*/
+ MSG_JOB_HEALER = 0x6b2,
+/*20100323 to latest
+보조
+Support
+*/
+ MSG_JOB_ASSISTANCE = 0x6b3,
+/*20100323 to latest
+파티 모집 관련 명령어
+Party recruitment related command
+*/
+ MSG_DESCRIBE_PARTY_BOOKING = 0x6b4,
+#endif
+#if PACKETVER >= 20100330
+/*20100330 to latest
+길드 동맹신청이 불가능합니다
+Guild alliance application is not possible.
+*/
+ MSG_GUILD_ALLY_REQUEST_DISABLE = 0x6b5,
+/*20100330 to latest
+길드 적대신청이 불가능합니다
+Guild hostility application is not possible.
+*/
+ MSG_GUILD_HOSTILE_REQUEST_DISABLE = 0x6b6,
+/*20100330 to latest
+아지트맵에서는 친구추가가 불가능합니다
+Adding friends is not possible in this map.
+*/
+ MSG_FRIEND_ADD_FALSE_AGIT = 0x6b7,
+#endif
+#if PACKETVER >= 20100406
+/*20100406 to latest
+구매노점 개설
+Buying Store Window
+*/
+ MSG_BUYINGSTORE_MAKEWND_TITLE = 0x6b8,
+/*20100406 to latest
+구매가 :
+Price:
+*/
+ MSG_BUYINGSTORE_MAKEWND_PRICE = 0x6b9,
+/*20100406 to latest
+소지액 :
+Money:
+*/
+ MSG_BUYINGSTORE_MAKEWND_MYZENY = 0x6ba,
+/*20100406 to latest
+구매 한도액
+Purchase Zeny Limit
+*/
+ MSG_BUYINGSTORE_MAKEWND_LIMITZENY = 0x6bb,
+/*20100406 to 20100414
+판매 가능한 아이템 목록
+Available items:
+20100420 to latest
+구매할 아이템을 등록하지 않았습니다. 구매하실 아이템을 등록해 주세요
+Please register the item first that has to be purchased.
+*/
+ MSG_BUYINGSTORE_MAKEWND_ADDITEM = 0x6bc,
+/*20100406 to 20100414
+나의 구매노점
+Purchase list:
+20100420 to latest
+%s 아이템의 가격을 입력해 주세요.
+Enter the price for item %s.
+*/
+ MSG_BUYINGSTORE_MAKEWND_INPUTPRICE = 0x6bd,
+/*20100406 to 20100414
+구매 노점
+Wanted items
+20100420 to latest
+%s 아이템의 가격을 9999만 Zeny이하로 입력해 주세요.
+Enter the price for item %s. It has to be below 99990000 Zeny.
+*/
+ MSG_BUYINGSTORE_MAKEWND_REINPUTPRICE = 0x6be,
+/*20100406 to 20100414
+제한금액 : %d Zeny
+20100420 to latest
+%s 아이템의 구매수량을 입력해 주세요.
+Enter the item number for %s.
+*/
+ MSG_BUYINGSTORE_MAKEWND_INPUTNUM = 0x6bf,
+/*20100406 to 20100414
+%s %s Zeny %d 개
+Buying %s for %s Zeny. Amount: %d.
+20100420 to latest
+%s 아이템의 소지수량과 구매수량의 합이 9999개 이상입니다. 9999개 이하의 수량을 입력해 주세요.
+The sum of purchasing and belonging items is over 9999. The sum has to be bellow 9999.
+*/
+ MSG_BUYINGSTORE_MAKEWND_REINPUTNUM = 0x6c0,
+/*20100406 to 20100414
+%s : %s Zeny => %s EA
+%s: %s Zeny => %s ea.
+20100420 to latest
+중복된 아이템이 존재합니다.
+You have duplicate items in your purchase list.
+*/
+ MSG_BUYINGSTORE_MAKEWND_DUPLICATEITEM = 0x6c1,
+/*20100406 to 20100414
+%s %d 개 구매.
+20100420 to latest
+제한 금액을 입력해 주세요
+Enter the limited price.
+*/
+ MSG_BUYINGSTORE_MAKEWND_INPUTLIMITZENY = 0x6c2,
+/*20100406 to 20100414
+아이템을 모두 구매했습니다.
+You purchased all items.
+20100420 to latest
+입력한 제한금액이 소지금액을 초과합니다. 다시 설정해 주세요
+You have entered a greater amount of zeny than you have. Please check your zeny.
+*/
+ MSG_BUYINGSTORE_MAKEWND_REINPUTLIMITZENY = 0x6c3,
+/*20100406 to 20100414
+해당 아이템의 총 판매 가능 개수는 %d개 입니다.
+The max. number of items you can sell is %d.
+20100420 to latest
+%s : %s Zeny => %s EA
+%s: %s Zeny => %s ea.
+*/
+ MSG_BUYINGSTORE_MAKEWND_ITEMLIST = 0x6c4,
+/*20100406 to 20100414
+가격이 0 Zeny인 아이템이 존재합니다. 가격을 입력해 주세요.
+20100420 to latest
+구매 가능한 아이템 목록
+Available items:
+*/
+ MSG_BUYINGSTORE_MIRRORBUYITEMLIST = 0x6c5,
+/*20100406 to 20100414
+가격이 9999만 Zeny이상인 아이템이 존재합니다. 9999만 Zeny 이하의 가격을 입력해 주세요.
+20100420 to latest
+나의 구매노점
+Purchase list:
+*/
+ MSG_BUYINGSTORE_MYSHOPWND_TITLE = 0x6c6,
+/*20100406 to 20100414
+구매수량이 0 개인 아이템이 존재합니다. 수량을 입력해 주세요.
+20100420 to 20110208
+제한금액 : %d Zeny
+20110210 to latest
+제한금액 : %s Zeny
+Price limit: %s Zeny
+*/
+ MSG_BUYINGSTORE_MYSHOPWND_LIMITZENY = 0x6c7,
+/*20100406 to 20100414
+구매수량이 9999개 이상인 아이템이 존재합니다. 9999개 이하의 수량을 입력해 주세요.
+20100420 to latest
+%s %s Zeny %d 개
+Buying %s for %s Zeny. Amount: %d.
+*/
+ MSG_BUYINGSTORE_MYSHOPWND_ITEMINFO = 0x6c8,
+/*20100406 to 20100414
+중복된 아이템이 존재합니다.
+You have duplicate items in your purchase list.
+20100420 to latest
+구매 노점
+Wanted items
+*/
+ MSG_BUYINGSTORE_SHOPWND_TITLE = 0x6c9,
+/*20100406 to 20100414
+구매상점 열기에 실패했습니다.
+20100420 to latest
+판매 가능한 아이템 목록
+Available items:
+*/
+ MSG_BUYINGSTORE_MIRRORSELLWND_TITLE = 0x6ca,
+/*20100406 to 20100414
+구매상점 열기에 실패했습니다.
+20100420 to latest
+해당 아이템의 총 판매 가능 개수는 %d개 입니다.
+The max. number of items you can sell is %d.
+*/
+ MSG_BUYINGSTORE_SELLWND_LIMITNUM = 0x6cb,
+/*20100406 to 20100414
+구매가능한 최대 갯수를 초과하였습니다.
+20100420 to 20110208
+구매자의 잔액이 부족하니 다시 설정해 주세요
+20110210 to latest
+구매노점의 제한금액을 초과하여 판매할 수 없습니다.
+Buyer has insufficient money, lower the amount of items you're selling.
+*/
+ MSG_BUYINGSTORE_SELLWND_LACKBUYERZENY = 0x6cc,
+/*20100406 to 20100414
+남은 잔액으로 아이템 구매가 불가능 합니다.
+20100420 to latest
+구매상점 개설에 실패했습니다.
+Failed to open purchase shop.
+*/
+ MSG_BUYINGSTORE_OPEN_FAILED = 0x6cd,
+#endif
+#if PACKETVER >= 20100413
+/*20100413 to 20100414
+소환된 정령이 없습니다.
+You don't have any summoned spirits.
+20100420 to latest
+아이템의 총 무게가 %d 만큼 소지 한계량을 초과합니다. 다시 설정해 주세요.
+You exceed the total amount of items.
+*/
+ MSG_BUYINGSTORE_OVERWEIGHT = 0x6ce,
+/*20100413 to 20100414
+서버연합대전 제약사항 입니다.
+This is a restricted server.
+20100420 to latest
+제한금액만큼의 아이템을 모두 구매하였습니다.
+You have purchased all items within the limited price.
+*/
+ MSG_BUYINGSTORE_TRADE_OVERLIMITZENY = 0x6cf,
+#endif
+#if PACKETVER >= 20100420
+/*20100420 to latest
+아이템을 모두 구매했습니다.
+You purchased all items.
+*/
+ MSG_BUYINGSTORE_TRADE_BUYCOMPLETE = 0x6d0,
+/*20100420 to latest
+구매자의 잔액이 부족하여 거래가 실패하였습니다.
+Failed to deal because you have not enough Zeny.
+*/
+ MSG_BUYINGSTORE_TRADE_LACKBUYERZENY = 0x6d1,
+/*20100420 to latest
+%s %d개를 %dz에 판매하였습니다.
+You have sold %s. Amount: %d. Total Zeny: %dz
+*/
+ MSG_BUYINGSTORE_TRADE_SELLCOMPLETE = 0x6d2,
+/*20100420 to latest
+%s 아이템은 희망 구매갯수보다 수량이 많아 판매하지 못하였습니다
+%s item could not be sold because you do not have the wanted amount of items.
+*/
+ MSG_BUYINGSTORE_TRADE_OVERCOUNT = 0x6d3,
+/*20100420 to latest
+소환된 정령이 없습니다.
+You don't have any summoned spirits.
+20130807 to 20130814
+판매할 아이템을 등록하지 않았습니다. 판매하실 아이템을 등록해 주세요
+Has not registered to sell the item. Please register to sell the item
+*/
+ MSG_USESKILL_FAIL_EL_SUMMON = 0x6d4,
+/*20100420 to latest
+서버연합대전 제약사항 입니다.
+This is a restricted server.
+20130807 to 20130814
+소환된 정령이 없습니다.
+You don't have any summoned spirits.
+*/
+ MSG_AGAINSTSERVERSIEGEWARFARE_RESTRICTION = 0x6d5,
+/*20100420 to latest
+OTP 비밀번호는 6자리 입니다.
+OTP password is 6 digits long.
+20130807 to 20130814
+서버연합대전 제약사항 입니다.
+This is a restricted server.
+*/
+ MSG_OTP_MUST_6_CHAR = 0x6d6,
+/*20100420 to latest
+OTP 정보가 없습니다. 관리자에게 문의하시기 바랍니다.
+OTP information is unavailable. Please contact your administrator.
+20130807 to 20130814
+OTP 비밀번호는 6자리 입니다.
+OTP password is 6 digits long.
+*/
+ MSG_DB_ERROR = 0x6d7,
+/*20100420 to latest
+OTP 인증에 실패 했습니다.
+OTP authentication failed.
+20130807 to 20130814
+OTP 정보가 없습니다. 관리자에게 문의하시기 바랍니다.
+OTP information is unavailable. Please contact your administrator.
+*/
+ MSG_OTP_FAILED = 0x6d8,
+/*20100420 to latest
+파티광고가 추가되었습니다
+Party ad has been added.
+20130807 to 20130814
+OTP 인증에 실패 했습니다.
+OTP authentication failed.
+*/
+ MSG_PARTY_BOOKING_NOTIFY = 0x6d9,
+/*20100420 to 20110718
+파티원 모집 중
+20110726 to latest
+모집 중
+Recruit party members
+20130807 to 20130814
+파티광고가 추가되었습니다
+Party ad has been added.
+*/
+ MSG_PARTY_BOOKING_REQURT = 0x6da,
+/*20100420 to latest
+역할
+Roles
+20130807 to 20130814
+모집 중
+Recruit party members
+*/
+ MSG_PARTY_BOOKING_TYPE = 0x6db,
+/*20100420 to latest
+1차 직업
+1st Jobs
+20130807 to 20130814
+역할
+Roles
+*/
+ MSG_PARTY_BOOKING_TYPE_1 = 0x6dc,
+/*20100420 to latest
+2차 직업
+2nd Jobs
+20130807 to 20130814
+1차 직업
+1st Jobs
+*/
+ MSG_PARTY_BOOKING_TYPE_2 = 0x6dd,
+/*20100420 to latest
+3-1차 직업
+3-1 Classes
+20130807 to 20130814
+2차 직업
+2nd Jobs
+*/
+ MSG_PARTY_BOOKING_TYPE_3_1 = 0x6de,
+/*20100420 to latest
+3-2차 직업
+3-2 Classes
+20130807 to 20130814
+3-1차 직업
+3-1 Classes
+*/
+ MSG_PARTY_BOOKING_TYPE_3_2 = 0x6df,
+/*20100420 to latest
+전승 1차 직업
+1st Job High
+20130807 to 20130814
+3-2차 직업
+3-2 Classes
+*/
+ MSG_PARTY_BOOKING_TYPE_1PLUS = 0x6e0,
+/*20100420 to latest
+전승 2차 직업
+2nd Jobs High
+20130807 to 20130814
+전승 1차 직업
+1st Job High
+*/
+ MSG_PARTY_BOOKING_TYPE_2PLUS = 0x6e1,
+/*20100420 to latest
+기타 직업군
+Other Jobs
+20130807 to 20130814
+전승 2차 직업
+2nd Jobs High
+*/
+ MSG_PARTY_BOOKING_TYPE_ETC = 0x6e2,
+/*20100420 to latest
+모집 하기
+Recruit
+20130807 to 20130814
+기타 직업군
+Other Jobs
+*/
+ MSG_PARTY_BOOKING_REQURTING = 0x6e3,
+/*20100420 to latest
+파티원을 모집합니다.
+Open party recruitment window.
+20130807 to 20130814
+모집 하기
+Recruit
+*/
+ MSG_PARTY_BOOKING_REQURT_TIP = 0x6e4,
+/*20100420 to 20110718
+검색중 -
+20110726 to latest
+검색 중 -
+Searching -
+20130807 to 20130814
+파티원을 모집합니다.
+Open party recruitment window.
+*/
+ MSG_PARTY_BOOKING_SEARCH = 0x6e5,
+/*20100420 to latest
+모두 선택
+Select All
+20130807 to 20130814
+검색 중 -
+Searching -
+*/
+ MSG_PARTY_BOOKING_ALL_SELECT = 0x6e6,
+/*20100420 to latest
+최소한 하나의 직업이 모집 중이어야 합니다.
+Recruitment of at least one job must be running.
+20130807 to 20130814
+모두 선택
+Select All
+*/
+ MSG_PARTY_BOOKING_ERR1 = 0x6e7,
+/*20100420 to latest
+최소 1개이상의 직업을 선택해 주셔야 합니다.
+You have to select atleast 1 or more jobs.
+20130807 to 20130814
+최소한 하나의 직업이 모집 중이어야 합니다.
+Recruitment of at least one job must be running.
+*/
+ MSG_PARTY_BOOKING_ERR2 = 0x6e8,
+/*20100420 to latest
+선택된 직업은 %d개입니다. 최대 6개까지만 직업을 선택할 수 있습니다.
+You have selected %d Jobs. You can only select up to 6 different jobs.
+20130807 to 20130814
+최소 1개이상의 직업을 선택해 주셔야 합니다.
+You have to select atleast 1 or more jobs.
+*/
+ MSG_PARTY_BOOKING_ERR3 = 0x6e9,
+/*20100420 to latest
+레벨에 숫자 이외의 문자는 들어갈 수 없습니다.
+Only numeric characters are allowed.
+20130807 to 20130814
+선택된 직업은 %d개입니다. 최대 6개까지만 직업을 선택할 수 있습니다.
+You have selected %d Jobs. You can only select up to 6 different jobs.
+*/
+ MSG_PARTY_BOOKING_ERR4 = 0x6ea,
+/*20100420 to latest
+레벨은 1~150 사이의 숫자를 입력해 주세요.
+Please enter levels between 1~150.
+20130807 to 20130814
+레벨에 숫자 이외의 문자는 들어갈 수 없습니다.
+Only numeric characters are allowed.
+*/
+ MSG_PARTY_BOOKING_ERR5 = 0x6eb,
+#endif
+#if PACKETVER >= 20100511
+/*20100511 to latest
+ 해당 맵에서는 의상 장비가 보이지 않습니다.
+Nothing found in the selected map.
+20130807 to 20130814
+레벨은 1~150 사이의 숫자를 입력해 주세요.
+Please enter levels between 1~150.
+*/
+ MSG_DISABLE_COSTUMEITEM_MAP = 0x6ec,
+#endif
+#if PACKETVER >= 20100525
+/*20100525 to latest
+아이템을 착용할 수 있는 레벨이 아닙니다.
+You cannot equip this item with your current level.
+20130807 to 20130814
+ 해당 맵에서는 의상 장비가 보이지 않습니다.
+Nothing found in the selected map.
+*/
+ MSG_CANNOT_EQUIP_ITEM_LEVEL = 0x6ed,
+/*20100525 to latest
+아이템을 사용할 수 있는 레벨이 아닙니다.
+You cannot use this item with your current level.
+20130807 to 20130814
+아이템을 착용할 수 있는 레벨이 아닙니다.
+You cannot equip this item with your current level.
+*/
+ MSG_CANNOT_USE_ITEM_LEVEL = 0x6ee,
+#endif
+#if PACKETVER >= 20100601
+/*20100601 to latest
+ 채팅모드 OnOff 활성화
+Enable Battlemode
+20130807 to 20130814
+아이템을 사용할 수 있는 레벨이 아닙니다.
+You cannot use this item with your current level.
+*/
+ MSG_CHATMODE_ONOFF = 0x6ef,
+/*20100601 to latest
+탭사이즈 크기가 초과되어 추가할 수 없습니다.
+Failed to add because you have reached the limit.
+20130807 to 20130814
+ 채팅모드 OnOff 활성화
+Enable Battlemode
+*/
+ MSG_OVER_TABSIZE = 0x6f0,
+/*20100601 to 20100601
+ 창 표시 정보.
+20100608 to latest
+ 창 표시 정보
+Window Sign Information
+20130807 to 20130814
+탭사이즈 크기가 초과되어 추가할 수 없습니다.
+Failed to add because you have reached the limit.
+*/
+ MSG_SET_CHATINFO = 0x6f1,
+#endif
+#if PACKETVER >= 20100608
+/*20100608 to latest
+판매
+Sell
+20130807 to 20130814
+ 창 표시 정보
+Window Sign Information
+*/
+ MSG_SELL = 0x6f2,
+/*20100608 to latest
+구매
+Purchase
+20130807 to 20130814
+판매
+Sell
+*/
+ MSG_BUY = 0x6f3,
+/*20100608 to latest
+노점 검색
+Search for Vends
+20130807 to 20130814
+구매
+Purchase
+*/
+ MSG_SEARCH_STOREINFO = 0x6f4,
+/*20100608 to latest
+노점 이름
+Shop Name
+20130807 to 20130814
+노점 검색
+Search for Vends
+*/
+ MSG_STORE_NAME = 0x6f5,
+/*20100608 to latest
+수량
+Quantity
+20130807 to 20130814
+노점 이름
+Shop Name
+*/
+ MSG_SEARCH_ITEM_COUNT = 0x6f6,
+/*20100608 to latest
+가격
+Cost
+20130807 to 20130814
+수량
+Quantity
+*/
+ MSG_SEARCH_ITEM_PRICE = 0x6f7,
+/*20100608 to latest
+검색 결과가 너무 많습니다. 검색어를 자세히 입력 해 주세요.
+Too much results have been found. Please do a more precisely search.
+20130807 to 20130814
+가격
+Cost
+*/
+ MSG_SSI_FAILED_OVER_MAXCOUNT = 0x6f8,
+/*20100608 to latest
+해당 노점을 여시겠습니까?
+Do you want to open a street stall?
+20130807 to 20130814
+검색 결과가 너무 많습니다. 검색어를 자세히 입력 해 주세요.
+Too much results have been found. Please do a more precisely search.
+*/
+ MSG_OPEN_SEARCH_STORE = 0x6f9,
+/*20100608 to latest
+SSO 인증에 실패하였습니다.
+Failed to recognize SSO.
+20130807 to 20130814
+해당 노점을 여시겠습니까?
+Do you want to open a street stall?
+*/
+ MSG_SSO_FAILED = 0x6fa,
+#endif
+#if PACKETVER >= 20100615
+/*20100615 to latest
+현재 해당지역으로 이동 할 수 없습니다
+Cannot move to the applied area.
+20130807 to 20130814
+SSO 인증에 실패하였습니다.
+Failed to recognize SSO.
+*/
+ MSG_ZONE_MOVE_FAIL = 0x6fb,
+/*20100615 to 20100622
+포함 검색
+20100629 to latest
+단어가 포함된 아이템 검색
+searching item including the word
+20130807 to 20130814
+현재 해당지역으로 이동 할 수 없습니다
+Cannot move to the applied area.
+*/
+ MSG_SEARCH_INCLUDED = 0x6fc,
+/*20100615 to latest
+탈퇴한 유저입니다.
+User has been expelled.
+20130807 to 20130814
+단어가 포함된 아이템 검색
+searching item including the word
+*/
+ MSG_WITHDREW_USERS = 0x6fd,
+/*20100615 to latest
+게임 이용에 동의하지 않았습니다.
+You have not accepted the user agreements yet.
+20130807 to 20130814
+탈퇴한 유저입니다.
+User has been expelled.
+*/
+ MSG_DIDNOT_AGREE = 0x6fe,
+/*20100615 to latest
+존재 하지 않는 계정입니다.
+You will not be disconnect from the game.
+20130807 to 20130814
+게임 이용에 동의하지 않았습니다.
+You have not accepted the user agreements yet.
+*/
+ MSG_ACCOUNT_DOESNOT_EXIST = 0x6ff,
+/*20100615 to latest
+본 게임은 12세 이용가입니다.
+It is available only for 12 hours.
+20130807 to 20130814
+존재 하지 않는 계정입니다.
+You will not be disconnect from the game.
+*/
+ MSG_AGE_RESTRICTIONS = 0x700,
+#endif
+#if PACKETVER >= 20100616
+/*20100616 to latest
+계정도용 조사를 위한 블럭상태입니다.
+Your account is blocked due to illegal use of the game account.
+20130807 to 20130814
+본 게임은 12세 이용가입니다.
+It is available only for 12 hours.
+*/
+ MSG_ACCOUNT_BLOCK = 0x701,
+/*20100616 to latest
+버그조사를 위한 블럭상태입니다.
+Your account is blocked because there may exist a bug with your account.
+20130807 to 20130814
+계정도용 조사를 위한 블럭상태입니다.
+Your account is blocked due to illegal use of the game account.
+*/
+ MSG_BUG_BLOCK = 0x702,
+#endif
+#if PACKETVER >= 20100622
+/*20100622 to latest
+몬스터 사냥을 통해 얻을 수 있는 Base, Job 경험치가 30분간 75% 증가합니다.
+Increases base exp and job exp gained by killing monsters up to 75% for 30 minutes.
+20130807 to 20130814
+버그조사를 위한 블럭상태입니다.
+Your account is blocked because there may exist a bug with your account.
+*/
+ MSG_PLUSEXP75 = 0x703,
+/*20100622 to latest
+몬스터 사냥을 통해 얻을 수 있는 Base, Job 경험치가 30분간 50% 증가합니다.
+Increases base exp and job exp gained by killing monsters up to 50% for 30 minutes.
+20130807 to 20130814
+몬스터 사냥을 통해 얻을 수 있는 Base, Job 경험치가 30분간 75% 증가합니다.
+Increases base exp and job exp gained by killing monsters up to 75% for 30 minutes.
+*/
+ MSG_PLUSEXP50 = 0x704,
+/*20100622 to 20100622
+상점 정보가 정확하지 않아 상점을 열 수 없습니다.
+20100629 to latest
+판매(구매) 정보가 없습니다.
+No sales information.
+20130807 to 20130814
+몬스터 사냥을 통해 얻을 수 있는 Base, Job 경험치가 30분간 50% 증가합니다.
+Increases base exp and job exp gained by killing monsters up to 50% for 30 minutes.
+*/
+ MSG_FAIL_OPEN_STORE = 0x705,
+/*20100622 to latest
+더 이상 검색 할 수 없습니다.
+Failed to search any further.
+20130807 to 20130814
+판매(구매) 정보가 없습니다.
+No sales information.
+*/
+ MSG_SSI_FAILED_SEARCH_CNT = 0x706,
+/*20100622 to 20100622
+검색이 실패하였습니다.
+20100629 to latest
+해당 아이템 명은 존재하지 않습니다.
+The item you have entered does not exist.
+20130807 to 20130814
+더 이상 검색 할 수 없습니다.
+Failed to search any further.
+*/
+ MSG_SSI_FAILED_ITEM_DOES_NOT_EXIST = 0x707,
+/*20100622 to latest
+아직 검색 할 수 없습니다.
+Cannot search yet.
+20130807 to 20130814
+해당 아이템 명은 존재하지 않습니다.
+The item you have entered does not exist.
+*/
+ MSG_SSI_FAILED_LIMIT_SERACH_TIME = 0x708,
+#endif
+#if PACKETVER >= 20100629
+/*20100629 to 20100707
+카드 이름, 접두사, 접미사
+20100713 to latest
+카드 이름 또는 접두사(접미사)를 입력하세요
+Enter the card name or prefix/suffix.
+20130807 to 20130814
+아직 검색 할 수 없습니다.
+Cannot search yet.
+*/
+ MSG_SSI_TOOLTIP_OF_SERACHING_THE_CARD = 0x709,
+/*20100629 to latest
+남은 검색 횟수 : %d
+Searches left: %d
+20130807 to 20130814
+카드 이름 또는 접두사(접미사)를 입력하세요
+Enter the card name or prefix/suffix.
+*/
+ MSG_SSI_REST_OF_NUMBER_OF_SEARCHES = 0x70a,
+/*20100629 to latest
+검색 된 노점이 없습니다.
+No result has been found.
+20130807 to 20130814
+남은 검색 횟수 : %d
+Searches left: %d
+*/
+ MSG_SSI_FAILED_SEARCH_STORE = 0x70b,
+/*20100629 to latest
+아이템 가격 범위가 잘못되었습니다.
+The item price is too high.
+20130807 to 20130814
+검색 된 노점이 없습니다.
+No result has been found.
+*/
+ MSG_SSI_FAILED_PRICE_ISNOT_VALID = 0x70c,
+/*20100629 to latest
+일반 장비
+Normal Gear
+20130807 to 20130814
+아이템 가격 범위가 잘못되었습니다.
+The item price is too high.
+*/
+ MSG_GENERAL_EQUIPMENT = 0x70d,
+/*20100629 to latest
+의상 장비
+Costume
+20130807 to 20130814
+일반 장비
+Normal Gear
+*/
+ MSG_COSTUME_EQUIPMENT = 0x70e,
+#endif
+#if PACKETVER >= 20100713
+/*20100713 to latest
+분
+minute
+20130807 to 20130814
+의상 장비
+Costume
+*/
+ MSG_MINUTE = 0x70f,
+/*20100713 to latest
+초
+second
+20130807 to 20130814
+분
+minute
+*/
+ MSG_SECOND = 0x710,
+/*20100713 to latest
+아이템 명을 입력해 주세요.
+Please enter the name of the item.
+20130807 to 20130814
+초
+second
+*/
+ MSG_SSI_FAILED_ENTER_THE_NAME_OF_ITEM = 0x711,
+/*20100713 to latest
+해당 아이템 명은 존재하지 않습니다.
+The item you have entered does not exist.
+20130807 to 20130814
+아이템 명을 입력해 주세요.
+Please enter the name of the item.
+*/
+ MSG_SSI_FAILED_NAME_OF_ITEM_DOES_NOT_EXIST = 0x712,
+#endif
+#if PACKETVER >= 20100720
+/*20100720 to latest
+진입가능한 맵이 존재하지 않습니다.
+The map is not available.
+20130807 to 20130814
+해당 아이템 명은 존재하지 않습니다.
+The item you have entered does not exist.
+*/
+ MSG_NOT_EXIST_ENTRYMAP = 0x713,
+/*20100720 to latest
+해당 카드 이름이나 접두사(접미사)는 존재하지 않습니다.
+The selected name or prefix/suffix does not exist.
+20130807 to 20130814
+진입가능한 맵이 존재하지 않습니다.
+The map is not available.
+*/
+ MSG_SSI_FAILED_NAME_OF_CARD_DOES_NOT_EXIST = 0x714,
+#endif
+#if PACKETVER >= 20100727
+/*20100727 to latest
+ 한번에 구매 가능 종류는 10개입니다.
+You can purchase up to 10 items.
+20130807 to 20130814
+해당 카드 이름이나 접두사(접미사)는 존재하지 않습니다.
+The selected name or prefix/suffix does not exist.
+*/
+ MSG_CASH_FAILED_TOTAL_CNT = 0x715,
+/*20100727 to latest
+ 일부 아이템의 구매가 실패하였습니다.
+Some items could not be purchased.
+20130807 to 20130814
+ 한번에 구매 가능 종류는 10개입니다.
+You can purchase up to 10 items.
+*/
+ MSG_CASH_FAILED_BUY_SOME = 0x716,
+#endif
+#if PACKETVER >= 20100730
+/*20100730 to latest
+생년월일 6자리를 입력하세요.(예시:801122)
+Enter your 6-digit DOB(YYMMDD) (e.g: 801122)
+20130807 to 20130814
+ 일부 아이템의 구매가 실패하였습니다.
+Some items could not be purchased.
+*/
+ MSG_ENTER_PEOPLE_BIRTH = 0x717,
+/*20100730 to latest
+알 수 없는 오류가 발생하였습니다.
+Now Logging Out.
+20130807 to 20130814
+생년월일 6자리를 입력하세요.(예시:801122)
+Enter your 6-digit DOB(YYMMDD) (e.g: 801122)
+*/
+ MSG_RESULT_FAIL_UNKNOWN = 0x718,
+/*20100730 to latest
+데이타 베이스 오류가 발생하였습니다.
+A database error has occurred.
+20130807 to 20130814
+알 수 없는 오류가 발생하였습니다.
+Now Logging Out.
+*/
+ MSG_RESULT_FAIL_DATABASE = 0x719,
+/*20100730 to latest
+캐릭터를 삭제하기 위해서는 길드에서 탈퇴 해야 합니다.
+Please leave your guild first in order to remove your character.
+20130807 to 20130814
+데이타 베이스 오류가 발생하였습니다.
+A database error has occurred.
+*/
+ MSG_RESULT_FAIL_GUILD = 0x71a,
+/*20100730 to latest
+캐릭터를 삭제하기 위해서는 파티에서 탈퇴 해야 합니다.
+Please leave your party first in order to remove your character.
+20130807 to 20130814
+캐릭터를 삭제하기 위해서는 길드에서 탈퇴 해야 합니다.
+Please leave your guild first in order to remove your character.
+*/
+ MSG_RESULT_FAIL_PARTY = 0x71b,
+/*20100730 to latest
+시스템 설정으로 인해 삭제할 수 없습니다.
+You cannot delete this character because the delete time has not expired yet.
+20130807 to 20130814
+캐릭터를 삭제하기 위해서는 파티에서 탈퇴 해야 합니다.
+Please leave your party first in order to remove your character.
+*/
+ MSG_RESULT_FAIL_CONFIGURATION = 0x71c,
+/*20100730 to latest
+아직 삭제 가능 시간이 아닙니다.
+You cannot delete this character at the moment.
+20130807 to 20130814
+시스템 설정으로 인해 삭제할 수 없습니다.
+You cannot delete this character because the delete time has not expired yet.
+*/
+ MSG_RESULT_FAIL_DATE = 0x71d,
+/*20100730 to latest
+생년월일이 일치하지 않습니다.
+Your entered birthday does not match.
+20130807 to 20130814
+아직 삭제 가능 시간이 아닙니다.
+You cannot delete this character at the moment.
+*/
+ MSG_RESULT_FAIL_BIRTH = 0x71e,
+/*20100730 to latest
+친밀도가 부족합니다.
+You lack of familiarity.
+20130807 to 20130814
+생년월일이 일치하지 않습니다.
+Your entered birthday does not match.
+*/
+ MSG_USESKILL_FAIL_RELATIONGRADE = 0x71f,
+/*20100730 to latest
+스타일체인지 파이터 상태에서만 사용가능합니다.
+This is only available on style change for fighting classes.
+20130807 to 20130814
+친밀도가 부족합니다.
+You lack of familiarity.
+*/
+ MSG_USESKILL_FAIL_STYLE_CHANGE_FIGHTER = 0x720,
+/*20100730 to latest
+스타일체인지 그래플러 상태에서만 사용가능합니다.
+This is only available on style change for novice.
+20130807 to 20130814
+스타일체인지 파이터 상태에서만 사용가능합니다.
+This is only available on style change for fighting classes.
+*/
+ MSG_USESKILL_FAIL_STYLE_CHANGE_GRAPPLER = 0x721,
+#endif
+#if PACKETVER >= 20100817
+/*20100817 to latest
+파티등록실패
+Party Registration failed.
+20130807 to 20130814
+스타일체인지 그래플러 상태에서만 사용가능합니다.
+This is only available on style change for novice.
+*/
+ MSG_PARTY_REGISTRATION_FAILED = 0x722,
+/*20100817 to latest
+검색된 조건의 리스트가 없습니다.
+results have been found.
+20130807 to 20130814
+파티등록실패
+Party Registration failed.
+*/
+ MSG_PARTY_SEARCH_FAILED = 0x723,
+/*20100817 to latest
+광고삭제에 실패했습니다.
+Failed to remove result.
+20130807 to 20130814
+검색된 조건의 리스트가 없습니다.
+results have been found.
+*/
+ MSG_PARTY_AD_DELETE_FAILED = 0x724,
+/*20100817 to latest
+조건에 맞는 광고가 없어 실패했습니다.
+No results have been found.
+20130807 to 20130814
+광고삭제에 실패했습니다.
+Failed to remove result.
+*/
+ MSG_PARTY_NOT_EXIST_AD = 0x725,
+#endif
+#if PACKETVER >= 20100824
+/*20100824 to latest
+결제 정보가 없습니다.
+No payment information has been found.
+20130807 to 20130814
+조건에 맞는 광고가 없어 실패했습니다.
+No results have been found.
+*/
+ MSG_REFUSE_SSO_NOT_PAY_USER = 0x726,
+/*20100824 to latest
+교환 시 스크린샷 찍기
+Screenshot Trade
+20130807 to 20130814
+결제 정보가 없습니다.
+No payment information has been found.
+*/
+ MSG_SCREENSHOT_FOR_EXCHANGE = 0x727,
+/*20100824 to latest
+[거래_%s]
+[Trade_%s]
+20130807 to 20130814
+교환 시 스크린샷 찍기
+Screenshot Trade
+*/
+ MSG_SCREENSHOT_FOR_EXCHANGE_CHARNAME = 0x728,
+#endif
+#if PACKETVER >= 20100914
+/*20100914 to 20180131
+사망으로 인해 신생명보험서가 자동 소비되었습니다
+20130807 to 20130814
+[거래_%s]
+[Trade_%s]
+20180207 to latest
+사망 시 소지한 아이템으로 경험치 손실을 막았습니다.
+Death due to the auto insurance young people are spending.
+*/
+ MSG_NOTIFY_NEO_INSURANCE_ITEM_USE = 0x729,
+/*20100914 to latest
+대화
+Chat Dialog
+20130807 to 20130814
+사망으로 인해 신생명보험서가 자동 소비되었습니다
+*/
+ MSG_TALK = 0x72a,
+#endif
+#if PACKETVER >= 20101019
+/*20101019 to latest
+중복사용이 불가능합니다.
+Redundant is not available.
+20130807 to 20130814
+대화
+Chat Dialog
+*/
+ MSG_MACRO_DUPLICATE = 0x72b,
+/*20101019 to latest
+사용제한이 걸려있습니다.
+Use the limit that has been set.
+20130807 to 20130814
+중복사용이 불가능합니다.
+Redundant is not available.
+*/
+ MSG_MACRO_POSTDELAY = 0x72c,
+/*20101019 to latest
+현재 사용제한이 걸려 있지 않습니다.
+No user restrictions are set.
+20130807 to 20130814
+사용제한이 걸려있습니다.
+Use the limit that has been set.
+*/
+ MSG_MACRO_NOT_POSTDELAY = 0x72d,
+/*20101019 to latest
+예기치 못한 사유로 인해 접속이 실패하였습니다. 관리자에게 문의해 주시기 바랍니다.
+Connection has failed. Please contact your administrator.
+20130807 to 20130814
+현재 사용제한이 걸려 있지 않습니다.
+No user restrictions are set.
+*/
+ MSG_SSO_ERROR_MSG = 0x72e,
+/*20101019 to latest
+접속 정보 인증 실패하였습니다.
+Failed to authenticate.
+20130807 to 20130814
+예기치 못한 사유로 인해 접속이 실패하였습니다. 관리자에게 문의해 주시기 바랍니다.
+Connection has failed. Please contact your administrator.
+*/
+ MSG_REFUSE_SSO_AUTH_INVALID_TOKEN = 0x72f,
+/*20101019 to latest
+가입하지 않은 사용자입니다.
+User is offline.
+20130807 to 20130814
+접속 정보 인증 실패하였습니다.
+Failed to authenticate.
+*/
+ MSG_REFUSE_SSO_AUTH_INVALID_USER = 0x730,
+/*20101019 to latest
+나이제한 때문에 이계정으로 이서버에 접속할 수 없습니다.
+The age limit from commandment tables cannot connect to this server.
+20130807 to 20130814
+가입하지 않은 사용자입니다.
+User is offline.
+*/
+ MSG_REFUSE_SSO_AUTH_INVALID_AGE = 0x731,
+/*20101019 to latest
+구매하기
+Buy
+20130807 to 20130814
+나이제한 때문에 이계정으로 이서버에 접속할 수 없습니다.
+The age limit from commandment tables cannot connect to this server.
+*/
+ MSG_NC_BUY = 0x732,
+/*20101019 to latest
+장바구니 비우기
+Cancel.
+20130807 to 20130814
+구매하기
+Buy
+*/
+ MSG_NC_BLANK = 0x733,
+/*20101019 to latest
+첫 페이지
+First page
+20130807 to 20130814
+장바구니 비우기
+Cancel.
+*/
+ MSG_NC_FIRSTPAGE = 0x734,
+/*20101019 to latest
+마지막 페이지
+Last page
+20130807 to 20130814
+첫 페이지
+First page
+*/
+ MSG_NC_LASTPAGE = 0x735,
+/*20101019 to latest
+신규
+New
+20130807 to 20130814
+마지막 페이지
+Last page
+*/
+ MSG_NC_CAT1 = 0x736,
+/*20101019 to latest
+인기
+Headgears
+20130807 to 20130814
+신규
+New
+*/
+ MSG_NC_CAT2 = 0x737,
+/*20101019 to latest
+한정
+Limited
+20130807 to 20130814
+인기
+Headgears
+*/
+ MSG_NC_CAT3 = 0x738,
+/*20101019 to latest
+임대장비
+Rental Items
+20130807 to 20130814
+한정
+Limited
+*/
+ MSG_NC_CAT4 = 0x739,
+/*20101019 to latest
+영구장비
+Equipments
+20130807 to 20130814
+임대장비
+Rental Items
+*/
+ MSG_NC_CAT5 = 0x73a,
+/*20101019 to latest
+버프
+Scrolls
+20130807 to 20130814
+영구장비
+Equipments
+*/
+ MSG_NC_CAT6 = 0x73b,
+/*20101019 to latest
+회복
+Consumables
+20130807 to 20130814
+버프
+Scrolls
+*/
+ MSG_NC_CAT7 = 0x73c,
+/*20101019 to latest
+기타
+Other
+20130807 to 20130814
+회복
+Consumables
+*/
+ MSG_NC_CAT8 = 0x73d,
+/*20101019 to latest
+가격
+Cost
+20130807 to 20130814
+기타
+Other
+*/
+ MSG_NC_COST = 0x73e,
+/*20101019 to latest
+수량
+Quantity
+20130807 to 20130814
+가격
+Cost
+*/
+ MSG_NC_NUM = 0x73f,
+/*20101019 to latest
+개
+Total
+20130807 to 20130814
+수량
+Quantity
+*/
+ MSG_NC_COUNT = 0x740,
+/*20101019 to latest
+무료 캐시 : %s C
+Free Cash: %s C
+20130807 to 20130814
+개
+Total
+*/
+ MSG_NC_FREECASH = 0x741,
+/*20101019 to latest
+소지 캐시 : %s C
+CashPoints: %s C
+20130807 to 20130814
+무료 캐시 : %s C
+Free Cash: %s C
+*/
+ MSG_NC_CASH = 0x742,
+/*20101019 to latest
+이 지역에서는 몬스터 소환이 불가능합니다.
+You cannot summon a monster in this area.
+20130807 to 20130814
+소지 캐시 : %s C
+CashPoints: %s C
+*/
+ MSG_CALLMONSTER_FAIL_AREA = 0x743,
+#endif
+#if PACKETVER >= 20101109
+/*20101109 to latest
+무료캐시 사용량이 전체 금액을 초과하고있습니다
+Exceeded total free cash
+20130807 to 20130814
+이 지역에서는 몬스터 소환이 불가능합니다.
+You cannot summon a monster in this area.
+*/
+ MSG_BUY_CASH_FAIL2 = 0x744,
+/*20101109 to latest
+ 설정한 내용이 [SaveData_ExMacro%d]에 저장됩니다.
+%d seconds left until you can use
+20130807 to 20130814
+무료캐시 사용량이 전체 금액을 초과하고있습니다
+Exceeded total free cash
+*/
+ MSG_MACRO_SAVE_DATA = 0x745,
+#endif
+#if PACKETVER >= 20101123
+/*20101123 to latest
+약 %d 초 후에 사용할 수 있습니다
+Content has been saved in [SaveData_ExMacro%d]
+20130807 to 20130814
+ 설정한 내용이 [SaveData_ExMacro%d]에 저장됩니다.
+%d seconds left until you can use
+*/
+ MSG_ITEM_REUSE_LIMIT_SECOND = 0x746,
+#endif
+#if PACKETVER >= 20101207
+/*20101207 to latest
+[창]을 장착한 상태여야 합니다.
+~ [Windows] must be equipped with.
+20130807 to 20130814
+약 %d 초 후에 사용할 수 있습니다
+Content has been saved in [SaveData_ExMacro%d]
+*/
+ MSG_FAIL_NEED_EQUIPPED_SPEAR = 0x747,
+#endif
+#if PACKETVER >= 20101214
+/*20101214 to latest
+드래곤 탑승시에만 사용가능합니다.
+Available only on the dragon.
+20130807 to 20130814
+[창]을 장착한 상태여야 합니다.
+~ [Windows] must be equipped with.
+*/
+ MSG_USESKILL_FAIL_DRAGON = 0x748,
+/*20101214 to latest
+본 서버에 접속할 수 있는 정원이 초과되어 진입이 불가능 합니다.
+Unable to proceed due to exceeding capacity.
+20130807 to 20130814
+드래곤 탑승시에만 사용가능합니다.
+Available only on the dragon.
+*/
+ MSG_OVER_CONNECT_USER = 0x749,
+#endif
+#if PACKETVER >= 20101228
+/*20101228 to latest
+실명 인증이 되지 않았습니다. 실명인증 사이트로 이동합니다
+Real name has not been verified. Go to name verification site.
+20130807 to 20130814
+본 서버에 접속할 수 있는 정원이 초과되어 진입이 불가능 합니다.
+Unable to proceed due to exceeding capacity.
+*/
+ MSG_AUTHENTICATE = 0x74a,
+#endif
+#if PACKETVER >= 20110104
+/*20110104 to latest
+저장 할 슬롯을 선택 해 주세요
+Please select slot you are going to save.
+20130807 to 20130814
+실명 인증이 되지 않았습니다. 실명인증 사이트로 이동합니다
+Real name has not been verified. Go to name verification site.
+*/
+ MSG_SELECT_SAVESLOT = 0x74b,
+#endif
+#if PACKETVER >= 20110111
+/*20110111 to latest
+%s, 축하드립니다. '%s' 를 얻으셨습니다!
+Congratulation %s, Acquired '%s' !
+20130807 to 20130814
+저장 할 슬롯을 선택 해 주세요
+Please select slot you are going to save.
+*/
+ MSG_BROADCASTING_SPECIAL_ITEM_OBTAIN2 = 0x74c,
+#endif
+#if PACKETVER >= 20110118
+/*20110118 to latest
+그루미상태에서는 사용할 수 없습니다
+Unable to use in gloomy state
+20130807 to 20130814
+%s, 축하드립니다. '%s' 를 얻으셨습니다!
+Congratulation %s, Acquired '%s' !
+*/
+ MSG_NOTUSE_GROOMY = 0x74d,
+#endif
+#if PACKETVER >= 20110210
+/*20110210 to latest
+구매물품의 합계금액이 케릭터가 소지할 수 있는 최대 금액을 초과하였습니다
+Purchased products has exceeded the total price.
+20130807 to 20130814
+그루미상태에서는 사용할 수 없습니다
+Unable to use in gloomy state
+*/
+ MSG_BUYINGSTORE_OVERFLOW_MONEY = 0x74e,
+#endif
+#if PACKETVER >= 20110215
+/*20110215 to latest
+현재 맵에서는 파티 가입이 불가능합니다.
+Cannot join a party in this map.
+20130807 to 20130814
+구매물품의 합계금액이 케릭터가 소지할 수 있는 최대 금액을 초과하였습니다
+Purchased products has exceeded the total price.
+*/
+ MSG_PREVENT_PARTY_JOIN = 0x74f,
+/*20110215 to latest
+현재 맵에서는 파티 탈퇴가 불가능합니다.
+Cannot leave a party in this map.
+20130807 to 20130814
+현재 맵에서는 파티 가입이 불가능합니다.
+Cannot join a party in this map.
+*/
+ MSG_PREVENT_PARTY_LEAVE = 0x750,
+/*20110215 to latest
+현재 맵에서는 파티 추방이 불가능합니다.
+Cannot withdraw/break the party in this map.
+20130807 to 20130814
+현재 맵에서는 파티 탈퇴가 불가능합니다.
+Cannot leave a party in this map.
+*/
+ MSG_PREVENT_PARTY_EXPEL = 0x751,
+/*20110215 to latest
+실제 성명
+Real Name
+20130807 to 20130814
+현재 맵에서는 파티 추방이 불가능합니다.
+Cannot withdraw/break the party in this map.
+*/
+ MSG_SDO_REALNAME = 0x752,
+/*20110215 to latest
+신분증 번호
+ID Number
+20130807 to 20130814
+실제 성명
+Real Name
+*/
+ MSG_SDO_ID_NUMBER = 0x753,
+/*20110215 to latest
+이메일
+E-mail
+20130807 to 20130814
+신분증 번호
+ID Number
+*/
+ MSG_SDO_EMAIL = 0x754,
+/*20110215 to latest
+입력이 올바르지 않습니다
+Invalid input
+20130807 to 20130814
+이메일
+E-mail
+*/
+ MSG_SDO_WRONG_VALUE = 0x755,
+#endif
+#if PACKETVER >= 20110222
+/*20110222 to 20130508
+상대방에게 제니 지급에 실패했습니다.
+20130515 to latest
+상대 캐릭터가 최대 보유제니량을 초과하여 거래가 불가능합니다.
+Failed to send the zeny
+20130807 to 20130814
+입력이 올바르지 않습니다
+Invalid input
+*/
+ MSG_MCSTORE_FAIL_SELLER_MONEY_GIVE = 0x756,
+/*20110222 to latest
+해당 직업이 아닙니다.
+This is not a relevant job
+20130807 to 20130814
+상대 캐릭터가 최대 보유제니량을 초과하여 거래가 불가능합니다.
+Failed to send the zeny
+*/
+ MSG_INVALID_CLASS = 0x757,
+/*20110222 to latest
+해당 성별이 아닙니다.
+This is not a relevant gender
+20130807 to 20130814
+해당 직업이 아닙니다.
+This is not a relevant job
+*/
+ MSG_INVALID_GENDER = 0x758,
+/*20110222 to latest
+유저님의 정보가 인증에 성공했습니다.
+User information identification was successful.
+20130807 to 20130814
+해당 성별이 아닙니다.
+This is not a relevant gender
+*/
+ MSG_SUCCESS_AUTHENTICATE = 0x759,
+/*20110222 to latest
+이름이 일치하지 않습니다. 재작성 해주세요.
+Name does not match. Please retry.
+20130807 to 20130814
+유저님의 정보가 인증에 성공했습니다.
+User information identification was successful.
+*/
+ MSG_INVALID_REALNAME = 0x75a,
+/*20110222 to latest
+신분증 번호가 일치하지 않습니다. 재작성 해주세요.
+ID number does not match. Please retry.
+20130807 to 20130814
+이름이 일치하지 않습니다. 재작성 해주세요.
+Name does not match. Please retry.
+*/
+ MSG_INVALID_IDNUMBER = 0x75b,
+/*20110222 to latest
+현재 서비스에 이상이 있으니 잠시 후 재시도 해주세요.
+Service is currently unavailable. Please try again later.
+20130807 to 20130814
+신분증 번호가 일치하지 않습니다. 재작성 해주세요.
+ID number does not match. Please retry.
+*/
+ MSG_INVALID_AUTHENTICATE = 0x75c,
+#endif
+#if PACKETVER >= 20110224
+/*20110224 to latest
+ 탑승 상태에서는 공격을 할 수 없습니다.
+Unable to attack while riding.
+20130807 to 20130814
+현재 서비스에 이상이 있으니 잠시 후 재시도 해주세요.
+Service is currently unavailable. Please try again later.
+*/
+ MSG_CANNOT_ATTACK_IN_RIDING_STATE = 0x75d,
+/*20110224 to latest
+ 탑승 상태에서는 스킬 시전을 할 수 없습니다.
+Unable to cast the skill while riding.
+20130807 to 20130814
+ 탑승 상태에서는 공격을 할 수 없습니다.
+Unable to attack while riding.
+*/
+ MSG_CANNOT_USE_SKILL_IN_RIDING_STATE = 0x75e,
+#endif
+#if PACKETVER >= 20110228
+/*20110228 to 20110228
+비밀번호는 4자리 이상 6자리이하여야만 합니다.
+20110308 to latest
+비밀번호는 4자리이하여야만 합니다.
+Pin number should be 4~6 characters.
+20130807 to 20130814
+ 탑승 상태에서는 스킬 시전을 할 수 없습니다.
+Unable to cast the skill while riding.
+*/
+ MSG_STORE_PASSWORD_4_6 = 0x75f,
+/*20110228 to 20110228
+로그인에 성공했습니다.
+20110308 to latest
+보안 인증에 성공했습니다.
+Secured authentication is successful.
+20130807 to 20130814
+비밀번호는 4자리이하여야만 합니다.
+Pin number should be 4~6 characters.
+*/
+ MSG_SECOND_PASSWORD_LOGIN_SUCCESS = 0x760,
+/*20110228 to 20110228
+세컨드 패스워드의 생성에 성공했습니다.
+20110308 to latest
+보안 패스워드의 생성에 성공했습니다.
+Succeeded in creating 2nd password.
+20130807 to 20130814
+보안 인증에 성공했습니다.
+Secured authentication is successful.
+*/
+ MSG_SECOND_PASSWORD_MAKE_SUCCESS = 0x761,
+/*20110228 to 20110228
+세컨드 패스워드를 삭제했습니다.
+20110308 to latest
+보안 패스워드를 삭제했습니다.
+2nd password has been deleted.
+20130807 to 20130814
+보안 패스워드의 생성에 성공했습니다.
+Succeeded in creating 2nd password.
+*/
+ MSG_SECOND_PASSWORD_DEL_SUCCESS = 0x762,
+/*20110228 to 20110228
+세컨드 패스워드를 수정했습니다.
+20110308 to latest
+보안 패스워드를 수정했습니다.
+2nd password has been corrected.
+20130807 to 20130814
+보안 패스워드를 삭제했습니다.
+2nd password has been deleted.
+*/
+ MSG_SECOND_PASSWORD_EDIT_SUCCESS = 0x763,
+/*20110228 to 20110228
+로그인에 실패했습니다.
+20110308 to latest
+잘못된 패스워드입니다.(%d회남음)
+Password is incorrect.
+20130807 to 20130814
+보안 패스워드를 수정했습니다.
+2nd password has been corrected.
+*/
+ MSG_SECOND_PASSWORD_LOGIN_FAILED = 0x764,
+/*20110228 to 20110228
+세컨드 패스워드의 생성에 실패했습니다.
+20110308 to latest
+보안 패스워드의 생성에 실패했습니다.
+Failed to create 2nd password.
+20130807 to 20130814
+잘못된 패스워드입니다.(%d회남음)
+Password is incorrect.
+*/
+ MSG_SECOND_PASSWORD_MAKE_FAILED = 0x765,
+/*20110228 to 20110228
+세컨드 패스워드 삭제에 실패했습니다.
+20110308 to latest
+보안 패스워드 삭제에 실패했습니다.
+Failed to delete 2nd password.
+20130807 to 20130814
+보안 패스워드의 생성에 실패했습니다.
+Failed to create 2nd password.
+*/
+ MSG_SECOND_PASSWORD_DEL_FAILED = 0x766,
+/*20110228 to 20110228
+세컨드 패스워드의 수정에 실패했습니다.
+20110308 to latest
+보안 패스워드의 수정에 실패했습니다.
+Failed to correct 2nd password.
+20130807 to 20130814
+보안 패스워드 삭제에 실패했습니다.
+Failed to delete 2nd password.
+*/
+ MSG_SECOND_PASSWORD_EDIT_FAILED = 0x767,
+/*20110228 to 20110228
+세컨드 비밀번호에는 제한된 번호를 사용할수 없습니다.
+20110308 to latest
+입력하신패스워드는 사용하실수없습니다.
+Unable to use restricted number in 2nd password.
+20130807 to 20130814
+보안 패스워드의 수정에 실패했습니다.
+Failed to correct 2nd password.
+*/
+ MSG_SECOND_PASSWORD_EDIT_RESTRICT_PW = 0x768,
+/*20110228 to latest
+주민등록번호는 사용할수없습니다.
+Unable to use your KSSN number.
+20130807 to 20130814
+입력하신패스워드는 사용하실수없습니다.
+Unable to use restricted number in 2nd password.
+*/
+ MSG_SECOND_PASSWORD_EDIT_PERSONALNUM_PW = 0x769,
+/*20110228 to 20110228
+보안번호
+20110308 to latest
+이미 패스워드가 존재합니다.
+~There is already a password.
+20130807 to 20130814
+주민등록번호는 사용할수없습니다.
+Unable to use your KSSN number.
+*/
+ MSG_SECOND_PASSWORD_MAKE_DUPLICATED_PW = 0x76a,
+/*20110228 to 20110228
+비밀번호 입력 (4~6자리)
+20110308 to latest
+보안 패스워드
+Security Code
+20130807 to 20130814
+이미 패스워드가 존재합니다.
+~There is already a password.
+*/
+ MSG_SECOND_PASSWORD = 0x76b,
+/*20110228 to 20110228
+ITEM
+20110308 to latest
+계정보안을 위하여 추가적인 패스워드 설정을 권장합니다.
+Account for the additional password security settings are recommended.
+20130807 to 20130814
+보안 패스워드
+Security Code
+*/
+ MSG_SECOND_PASSWORD_INPUT = 0x76c,
+/*20110228 to 20110228
+SKILL
+20110308 to latest
+보안 패스워드 사용을 하지 않습니다.
+Do not use secure password.
+20130807 to 20130814
+계정보안을 위하여 추가적인 패스워드 설정을 권장합니다.
+Account for the additional password security settings are recommended.
+*/
+ MSG_SECOND_PASSWDRD_NOT_AVAILABLE_SUCCESS = 0x76d,
+/*20110228 to 20110228
+TACTIC
+20110308 to latest
+보안 패스워드 사용설정에 실패했습니다.
+Use the set security password failed.
+20130807 to 20130814
+보안 패스워드 사용을 하지 않습니다.
+Do not use secure password.
+*/
+ MSG_SECOND_PASSWDRD_NOT_AVAILABLE_FAILED = 0x76e,
+/*20110228 to 20110228
+ETC
+20110308 to latest
+보안 패스워드를 사용합니다. 다음로그인부터 적용됩니다.
+Use secure passwords. Will be applied to your next login.
+20130807 to 20130814
+보안 패스워드 사용설정에 실패했습니다.
+Use the set security password failed.
+*/
+ MSG_SECOND_PASSWDRD_AVAILABLE_SUCCESS = 0x76f,
+/*20110228 to 20110228
+COMBAT
+20110308 to latest
+보안 패스워드 사용 설정에 실패했습니다.
+Use the set security password failed.
+20130807 to 20130814
+보안 패스워드를 사용합니다. 다음로그인부터 적용됩니다.
+Use secure passwords. Will be applied to your next login.
+*/
+ MSG_SECOND_PASSWDRD_AVAILABLE_FAILED = 0x770,
+/*20110228 to 20110228
+NON-COMBAT
+20110308 to latest
+계정보안을 위하여 추가적인 패스워드를 설정합니다.
+Added to the security of your account password is set.
+20130807 to 20130814
+보안 패스워드 사용 설정에 실패했습니다.
+Use the set security password failed.
+*/
+ MSG_SECOND_PASSWORD_INFO_1 = 0x771,
+/*20110228 to 20110228
+BUFF
+20110308 to latest
+아래의 숫자버튼을 마우스를 이용하여 4자리를 클릭하세요.
+Use the mouse to enter the 4-digit password below.
+20130807 to 20130814
+계정보안을 위하여 추가적인 패스워드를 설정합니다.
+Added to the security of your account password is set.
+*/
+ MSG_SECOND_PASSWORD_INFO_2 = 0x772,
+/*20110228 to 20110228
+AUTO EQUIPED
+20110308 to latest
+3회이상 잘못된패스워드 입력으로, 종료됩니다.
+Typing an incorrect password 3 times will shut down the client.
+20130807 to 20130814
+아래의 숫자버튼을 마우스를 이용하여 4자리를 클릭하세요.
+Use the mouse to enter the 4-digit password below.
+*/
+ MSG_SECOND_PASSWORD_INFO_3 = 0x773,
+/*20110228 to 20110228
+1st. ATTACK
+20110308 to latest
+ITEM
+20130807 to 20130814
+3회이상 잘못된패스워드 입력으로, 종료됩니다.
+Typing an incorrect password 3 times will shut down the client.
+*/
+ MSG_MACRO_ITEM = 0x774,
+/*20110228 to 20110228
+ATTACK
+20110308 to latest
+SKILL
+20130807 to 20130814
+ITEM
+*/
+ MSG_MACRO_SKILL = 0x775,
+/*20110228 to 20110228
+Next attack time :
+Next attack time:
+20110308 to latest
+TACTIC
+20130807 to 20130814
+SKILL
+*/
+ MSG_MACRO_TACTIC = 0x776,
+/*20110228 to 20110228
+When died
+20110308 to latest
+ETC
+20130807 to 20130814
+TACTIC
+*/
+ MSG_MACRO_ETC = 0x777,
+/*20110228 to 20110228
+When invited to a party
+20110308 to latest
+COMBAT
+20130807 to 20130814
+ETC
+*/
+ MSG_MACRO_COMBAT = 0x778,
+/*20110228 to 20110228
+Pickup Item
+20110308 to latest
+NON-COMBAT
+20130807 to 20130814
+COMBAT
+*/
+ MSG_MACRO_NON_COMBAT = 0x779,
+/*20110228 to 20110228
+Over 85% Weight
+20110308 to latest
+BUFF
+20130807 to 20130814
+NON-COMBAT
+*/
+ MSG_MACRO_BUFF = 0x77a,
+#endif
+#if PACKETVER >= 20110308
+/*20110308 to latest
+AUTO EQUIPED
+20130807 to 20130814
+BUFF
+*/
+ MSG_MACRO_AUTO_EQUIPED = 0x77b,
+/*20110308 to latest
+1st. ATTACK
+20130807 to 20130814
+AUTO EQUIPED
+*/
+ MSG_MACRO_1ST_ATTACK = 0x77c,
+/*20110308 to latest
+ATTACK
+20130807 to 20130814
+1st. ATTACK
+*/
+ MSG_MACRO_ATTACK = 0x77d,
+/*20110308 to latest
+Next attack time :
+Next attack time:
+20130807 to 20130814
+ATTACK
+*/
+ MSG_MACRO_NEXT_ATK_TIME = 0x77e,
+/*20110308 to latest
+When died
+20130807 to 20130814
+Next attack time :
+Next attack time:
+*/
+ MSG_MACRO_WHEN_DIED = 0x77f,
+/*20110308 to latest
+When invited to a party
+20130807 to 20130814
+When died
+*/
+ MSG_MACRO_WHEN_INVITED_PARTY = 0x780,
+/*20110308 to latest
+Pickup Item
+20130807 to 20130814
+When invited to a party
+*/
+ MSG_MACRO_PICKUP_ITEM = 0x781,
+/*20110308 to latest
+Over 85% Weight
+20130807 to 20130814
+Pickup Item
+*/
+ MSG_MACRO_OVERWEIGHT = 0x782,
+/*20110308 to latest
+진행중이던 작업(NPC대화,제조...)을 종료후에 다시 시도하세요.
+Any work in progress (NPC dialog, manufacturing ...) quit and try again.
+20130807 to 20130814
+Over 85% Weight
+*/
+ MSG_BUSY = 0x783,
+/*20110308 to latest
+ 몬스터 사냥을 통해 얻을 수 있는 Job경험치가 %d분간 %.2f배로 증가합니다.
+Monster Job hunting experience that you can get through the doubling of %d is %.2f minutes.
+20130807 to 20130814
+진행중이던 작업(NPC대화,제조...)을 종료후에 다시 시도하세요.
+Any work in progress (NPC dialog, manufacturing ...) quit and try again.
+*/
+ MSG_PLUSONLYJOBEXP2 = 0x784,
+#endif
+#if PACKETVER >= 20110315
+/*20110315 to 20110405
+ExMacro_SaveData%d
+20110412 to latest
+SaveData_ExMacro%d
+SaveData_ExMacro %d
+20130807 to 20130814
+ 몬스터 사냥을 통해 얻을 수 있는 Job경험치가 %d분간 %.2f배로 증가합니다.
+Monster Job hunting experience that you can get through the doubling of %d is %.2f minutes.
+*/
+ MSG_MACRO_SAVE = 0x785,
+/*20110315 to latest
+ 설정한 내용이 [%s]에 저장됩니다.
+Settings for [%s] are stored in.
+20130807 to 20130814
+SaveData_ExMacro%d
+SaveData_ExMacro %d
+*/
+ MSG_MACRO_SAVE_DATA2 = 0x786,
+#endif
+#if PACKETVER >= 20110322
+/*20110322 to latest
+보안레벨
+Security level
+20130807 to 20130814
+ 설정한 내용이 [%s]에 저장됩니다.
+Settings for [%s] are stored in.
+*/
+ MSG_SECOND_PASSWORD_LEVEL = 0x787,
+#endif
+#if PACKETVER >= 20110412
+/*20110412 to latest
+현재 캐릭터는 파티 또는 길드에 가입되어 있어서 삭제가 불가능합니다.
+The current character is a party or join the guild can not be deleted.
+20130807 to 20130814
+보안레벨
+Security level
+*/
+ MSG_RESULT_FAIL_CHAR_DELETE = 0x788,
+#endif
+#if PACKETVER >= 20110523
+/*20110523 to latest
+벽이나 물체 근처에서만 사용 할 수 있습니다.
+Objects can be used only near the wall.
+20130807 to 20130814
+현재 캐릭터는 파티 또는 길드에 가입되어 있어서 삭제가 불가능합니다.
+The current character is a party or join the guild can not be deleted.
+*/
+ MSG_USESKILL_FAIL_NEER_WALL = 0x789,
+#endif
+#if PACKETVER >= 20110531
+/*20110531 to latest
+%s : 레벨 %d %s 파티구합니다.
+%s: Level %d %s party to obtain level.
+20130807 to 20130814
+벽이나 물체 근처에서만 사용 할 수 있습니다.
+Objects can be used only near the wall.
+*/
+ MSG_SEEK_PARTY_SET = 0x78a,
+/*20110531 to latest
+탑승 중인 상태에서는 고삐 아이템을 사용할 수 없습니다.
+While boarding reins is not available for items.
+20130807 to 20130814
+%s : 레벨 %d %s 파티구합니다.
+%s: Level %d %s party to obtain level.
+*/
+ MSG_FAIELD_RIDING_OVERLAPPED = 0x78b,
+#endif
+#if PACKETVER >= 20110620
+/*20110620 to latest
+이 스킬은 1%의 경험치가 필요합니다.
+This skill requires 1% experience.
+20130807 to 20130814
+탑승 중인 상태에서는 고삐 아이템을 사용할 수 없습니다.
+While boarding reins is not available for items.
+*/
+ MSG_USESKILL_FAIL_NEED_EXP_1PERCENT = 0x78c,
+#endif
+#if PACKETVER >= 20110627
+/*20110627 to latest
+경 험 치 :
+Experience value:
+20130807 to 20130814
+이 스킬은 1%의 경험치가 필요합니다.
+This skill requires 1% experience.
+*/
+ MSG_EXP_MSG = 0x78d,
+/*20110627 to latest
+드 롭 율 :
+Drop rate:
+20130807 to 20130814
+경 험 치 :
+Experience value:
+*/
+ MSG_DROP_MSG = 0x78e,
+/*20110627 to latest
+사망페널티 :
+Death Penalty:
+20130807 to 20130814
+드 롭 율 :
+Drop rate:
+*/
+ MSG_DEATH_MSG = 0x78f,
+/*20110627 to 20110711
+%d%% (PC방 %d%% + 프리미엄 %d%% + %s서버 %d%%)
+20110713 to latest
+%d%% (PC방 %d%% + TPLUS %d%% + 프리미엄 %d%% + %s서버 %d%%)
+%d%% (PCroom %d%% + TPLUS %d%% + Premium %d%% + %s Server %d%%)
+20130807 to 20130814
+사망페널티 :
+Death Penalty:
+*/
+ MSG_BASIC_EXP_MSG = 0x790,
+/*20110627 to latest
+ 합창스킬을 시전할 파티원의 SP량이 부족합니다.
+Amount of party members to cast the skill Chorus SP is low.
+20130807 to 20130814
+%d%% (PC방 %d%% + TPLUS %d%% + 프리미엄 %d%% + %s서버 %d%%)
+%d%% (PCroom %d%% + TPLUS %d%% + Premium %d%% + %s Server %d%%)
+*/
+ MSG_USESKILL_FAIL_CHORUS_SP_INSUFFICIENT = 0x791,
+#endif
+#if PACKETVER >= 20110705
+/*20110705 to latest
+상대 캐릭터의 소지 아이템 종류의 한계량 초과로 거래가 불가능합니다.
+Relative character that has possession of the items can not trade because amount is exceeded.
+20130807 to 20130814
+ 합창스킬을 시전할 파티원의 SP량이 부족합니다.
+Amount of party members to cast the skill Chorus SP is low.
+*/
+ MSG_CHARACTER_IS_OVER_COUNT = 0x792,
+/*20110705 to latest
+상대 캐릭터의 해당 아이템의 소지 한계량 초과로 거래가 불가능합니다.
+Relative character that has possession of the item amount which exceeds makes it impossible to trade.
+20130807 to 20130814
+상대 캐릭터의 소지 아이템 종류의 한계량 초과로 거래가 불가능합니다.
+Relative character that has possession of the items can not trade because amount is exceeded.
+*/
+ MSG_CHARACTER_IS_EACHITEM_OVER_COUNT = 0x793,
+/*20110705 to latest
+해당 아이템의 소지 한계량 초과로 구입이 불가능합니다.
+Amounts are exceeded the possession of the item is not available for purchase.
+20130807 to 20130814
+상대 캐릭터의 해당 아이템의 소지 한계량 초과로 거래가 불가능합니다.
+Relative character that has possession of the item amount which exceeds makes it impossible to trade.
+*/
+ MSG_PURCHASE_FAIL_EACHITEM_COUNT = 0x794,
+/*20110705 to 20110705
+잠시후에 다시 시도해주세요.
+20110711 to latest
+광고 등록 대기중입니다.
+Advertising is pending registration.
+20130807 to 20130814
+해당 아이템의 소지 한계량 초과로 구입이 불가능합니다.
+Amounts are exceeded the possession of the item is not available for purchase.
+*/
+ MSG_PARTY_FAILED_TIMEOUT = 0x795,
+/*20110705 to latest
+아래의 파일과 텍스트내용을 함께
+라그나로크 공식홈페이지 -> 고객센터 -> 문의하기를
+이용하여 보내주시기 바랍니다.
+With the following files and text content Ragnarok Official Website -> Support -> Contact Us to submit your comments by:
+20130807 to 20130814
+광고 등록 대기중입니다.
+Advertising is pending registration.
+*/
+ MSG_UNEXCEPTION_MSG1ST = 0x796,
+#endif
+#if PACKETVER >= 20110718
+/*20110718 to latest
+빌링시스템에 오류가 발생햇습니다(%d)
+Has caused an error in billing system(%d)
+20130807 to 20130814
+아래의 파일과 텍스트내용을 함께
+라그나로크 공식홈페이지 -> 고객센터 -> 문의하기를
+이용하여 보내주시기 바랍니다.
+With the following files and text content Ragnarok Official Website -> Support -> Contact Us to submit your comments by:
+*/
+ MSG_INGAMBA_BILLING_ZSVR_ERROR = 0x797,
+/*20110718 to latest
+룬 아이템 소유 개수가 초과 되어 구매가 실패 하였습니다.
+Failed purchase of runes, items exceed the maximum number that can be held.
+20130807 to 20130814
+빌링시스템에 오류가 발생햇습니다(%d)
+Has caused an error in billing system(%d)
+*/
+ MSG_CASH_FAILED_RUNE_OVERCOUNT = 0x798,
+/*20110718 to latest
+개별 아이템 개수가 초과 되어 구매가 실패 하였습니다.
+Exceeded the number of individual items, purchase failed.
+20130807 to 20130814
+룬 아이템 소유 개수가 초과 되어 구매가 실패 하였습니다.
+Failed purchase of runes, items exceed the maximum number that can be held.
+*/
+ MSG_CASH_FAILED_EACHITEM_OVERCOUNT = 0x799,
+/*20110718 to latest
+알 수 없는 오류가 발생하여 구매가 실패 하였습니다.
+Purchase failed due to an unknown error.
+20130807 to 20130814
+개별 아이템 개수가 초과 되어 구매가 실패 하였습니다.
+Exceeded the number of individual items, purchase failed.
+*/
+ MSG_CASH_FAILED_UNKOWN = 0x79a,
+/*20110718 to latest
+잠시 후 다시 시도해 주십시오.
+Please try again later.
+20130807 to 20130814
+알 수 없는 오류가 발생하여 구매가 실패 하였습니다.
+Purchase failed due to an unknown error.
+*/
+ MSG_CASH_FAILED_BUSY = 0x79b,
+/*20110718 to latest
+ 쿠나이 아이템을 장착 한 상태에서만 사용 가능합니다.
+Kunai must be equipped to use this skill.
+20130807 to 20130814
+잠시 후 다시 시도해 주십시오.
+Please try again later.
+*/
+ MSG_USESKILL_FAIL_NEED_EQUIPMENT_KUNAI = 0x79c,
+#endif
+#if PACKETVER >= 20110726
+/*20110726 to latest
+모집할 최소레벨값을 입력해주세요.
+Please enter the value of the minimum level to be recruited.
+20130807 to 20130814
+ 쿠나이 아이템을 장착 한 상태에서만 사용 가능합니다.
+Kunai must be equipped to use this skill.
+*/
+ MSG_SEEK_PARTY_LEVEL_HELP = 0x79d,
+#endif
+#if PACKETVER >= 20110802
+/*20110802 to latest
+존다기획사NPC 에게 아이템이 수령이 불가능합니다. 소지창의 여유공간을 확보해주세요.
+Jonda agency receipt of the item to the NPC is not possible. Gaining possession of the free space of the window.
+20130807 to 20130814
+모집할 최소레벨값을 입력해주세요.
+Please enter the value of the minimum level to be recruited.
+*/
+ MSG_FAILED_GET_ITEM_FROM_ZONEDA = 0x79e,
+#endif
+#if PACKETVER >= 20110809
+/*20110809 to latest
+이 스킬은 공성전에서만 사용 가능합니다.
+This skill is only available in the siege.
+20130807 to 20130814
+존다기획사NPC 에게 아이템이 수령이 불가능합니다. 소지창의 여유공간을 확보해주세요.
+Jonda agency receipt of the item to the NPC is not possible. Gaining possession of the free space of the window.
+*/
+ MSG_USESKILL_FAIL_SIZE = 0x79f,
+/*20110809 to latest
+이 스킬은 플레이어에게만 사용 가능합니다.
+This skill is available only to the player.
+20130807 to 20130814
+이 스킬은 공성전에서만 사용 가능합니다.
+This skill is only available in the siege.
+*/
+ MSG_USESKILL_FAIL_TOTARGET_PLAYER = 0x7a0,
+/*20110809 to latest
+착용이 금지 된 상태로 착용 할 수 없습니다.
+Forbidden to wear the state can not be worn.
+20130807 to 20130814
+이 스킬은 플레이어에게만 사용 가능합니다.
+This skill is available only to the player.
+*/
+ MSG_CAN_NOT_EQUIP_ITEM_FORBID = 0x7a1,
+/*20110809 to latest
+현재 위치에서는 상점 및 채팅방의 생성이 불가능합니다.
+Current location of the shop and chat room creation is disabled.
+20130807 to 20130814
+착용이 금지 된 상태로 착용 할 수 없습니다.
+Forbidden to wear the state can not be worn.
+*/
+ MSG_USESKILL_FAIL_THERE_ARE_NPC_AROUND = 0x7a2,
+#endif
+#if PACKETVER >= 20110816
+/*20110816 to latest
+Elapsed time: %d:%d:%d / %d:%d:%d
+20130807 to 20130814
+현재 위치에서는 상점 및 채팅방의 생성이 불가능합니다.
+Current location of the shop and chat room creation is disabled.
+*/
+ MSG_REPLAY_ELAPSEDTIME = 0x7a3,
+/*20110816 to latest
+Speed : X 1/4
+Speed: X 1/4
+20130807 to 20130814
+Elapsed time: %d:%d:%d / %d:%d:%d
+*/
+ MSG_REPLAY_SPEED1_4 = 0x7a4,
+/*20110816 to latest
+Speed : X 1/2
+Speed: X 1/2
+20130807 to 20130814
+Speed : X 1/4
+Speed: X 1/4
+*/
+ MSG_REPLAY_SPEED1_2 = 0x7a5,
+/*20110816 to latest
+Speed : X 1
+Speed: X 1
+20130807 to 20130814
+Speed : X 1/2
+Speed: X 1/2
+*/
+ MSG_REPLAY_SPEED1 = 0x7a6,
+/*20110816 to latest
+Speed : X 2
+Speed: X 2
+20130807 to 20130814
+Speed : X 1
+Speed: X 1
+*/
+ MSG_REPLAY_SPEED2 = 0x7a7,
+/*20110816 to latest
+Speed : X 4
+Speed: X 4
+20130807 to 20130814
+Speed : X 2
+Speed: X 2
+*/
+ MSG_REPLAY_SPEED4 = 0x7a8,
+/*20110816 to latest
+Speed : X 8
+Speed: X 8
+20130807 to 20130814
+Speed : X 4
+Speed: X 4
+*/
+ MSG_REPLAY_SPEED8 = 0x7a9,
+/*20110816 to latest
+Speed : X 16
+Speed: X 16
+20130807 to 20130814
+Speed : X 8
+Speed: X 8
+*/
+ MSG_REPLAY_SPEED16 = 0x7aa,
+/*20110816 to latest
+Speed : 알수없음
+Speed: Unknown
+20130807 to 20130814
+Speed : X 16
+Speed: X 16
+*/
+ MSG_REPLAY_SPEEDUNKNOWN = 0x7ab,
+/*20110816 to latest
+Service Info : %s
+Service Info: %s
+20130807 to 20130814
+Speed : 알수없음
+Speed: Unknown
+*/
+ MSG_REPLAY_CHRVICEINFO = 0x7ac,
+/*20110816 to latest
+Character Name : %s
+Character Name: %s
+20130807 to 20130814
+Service Info : %s
+Service Info: %s
+*/
+ MSG_REPLAY_CHARACTERNAME = 0x7ad,
+/*20110816 to latest
+Map Name : %s
+Map Name: %s
+20130807 to 20130814
+Character Name : %s
+Character Name: %s
+*/
+ MSG_REPLAY_MAPNAME = 0x7ae,
+/*20110816 to latest
+Record Time: %d-%01d-%01d %d: %02d: %02d
+20130807 to 20130814
+Map Name : %s
+Map Name: %s
+*/
+ MSG_REPLAY_RECORDTIME = 0x7af,
+/*20110816 to latest
+Play Time: %02d: %02d: %02d
+20130807 to 20130814
+Record Time: %d-%01d-%01d %d: %02d: %02d
+*/
+ MSG_REPLAY_PLAYTIME = 0x7b0,
+/*20110816 to latest
+No Replay File.
+20130807 to 20130814
+Play Time: %02d: %02d: %02d
+*/
+ MSG_REPLAY_NOREPLAYFILE = 0x7b1,
+/*20110816 to latest
+Server No Matching
+20130807 to 20130814
+No Replay File.
+*/
+ MSG_REPLAY_SERVERNOMATCH = 0x7b2,
+/*20110816 to latest
+Replay Option Setting
+20130807 to 20130814
+Server No Matching
+*/
+ MSG_REPLAY_REPLAYOPTIONSETTING = 0x7b3,
+/*20110816 to latest
+파일 이름을 입력하세요.
+Enter File Name
+20130807 to 20130814
+Replay Option Setting
+*/
+ MSG_REPLAY_ENTERTHEFILENAME = 0x7b4,
+/*20110816 to latest
+Set Replay Save Data
+20130807 to 20130814
+파일 이름을 입력하세요.
+Enter File Name
+*/
+ MSG_REPLAY_SETREPLAYSAVEDATA = 0x7b5,
+/*20110816 to latest
+Set Rec Option
+20130807 to 20130814
+Set Replay Save Data
+*/
+ MSG_REPLAY_SETRECOPTION = 0x7b6,
+/*20110816 to latest
+%.1f %% Pos☞:%d:%d:%d
+%.1f % Pos->:%d:%d:%d
+20130807 to 20130814
+Set Rec Option
+*/
+ MSG_REPLAY_GAGEPOS1 = 0x7b7,
+/*20110816 to latest
+%.1f %% Pos☞:이동불가
+%.1f % Pos->:cannot move
+20130807 to 20130814
+%.1f %% Pos☞:%d:%d:%d
+%.1f % Pos->:%d:%d:%d
+*/
+ MSG_REPLAY_GAGEPOS2 = 0x7b8,
+/*20110816 to latest
+Start
+20130807 to 20130814
+%.1f %% Pos☞:이동불가
+%.1f % Pos->:cannot move
+*/
+ MSG_REPLAY_START = 0x7b9,
+/*20110816 to latest
+Stop
+20130807 to 20130814
+Start
+*/
+ MSG_REPLAY_STOP = 0x7ba,
+/*20110816 to latest
+Input FileName -> Start
+20130807 to 20130814
+Stop
+*/
+ MSG_REPLAY_START2 = 0x7bb,
+/*20110816 to latest
+Open Option
+20130807 to 20130814
+Input FileName -> Start
+*/
+ MSG_REPLAY_OPENOPTION = 0x7bc,
+/*20110816 to latest
+Close Option
+20130807 to 20130814
+Open Option
+*/
+ MSG_REPLAY_CLOSEOPION = 0x7bd,
+/*20110816 to latest
+End
+20130807 to 20130814
+Close Option
+*/
+ MSG_REPLAY_END = 0x7be,
+/*20110816 to latest
+Time
+20130807 to 20130814
+End
+*/
+ MSG_REPLAY_TIME = 0x7bf,
+/*20110816 to latest
+파티&친구
+Party & Friends
+20130807 to 20130814
+Time
+*/
+ MSG_REPLAY_PARTYFRIEND = 0x7c0,
+/*20110816 to latest
+채팅
+Chat
+20130807 to 20130814
+파티&친구
+Party & Friends
+*/
+ MSG_REPLAY_CHAT = 0x7c1,
+/*20110816 to latest
+단축키
+Shortcuts
+20130807 to 20130814
+채팅
+Chat
+*/
+ MSG_REPLAY_SHORTCUTS = 0x7c2,
+/*20110816 to latest
+자동 파일명 생성
+Automatic filename generation
+20130807 to 20130814
+단축키
+Shortcuts
+*/
+ MSG_REPLAY_AUTOMATICFILENAME = 0x7c3,
+/*20110816 to latest
+파일 중복 채크
+Checking for duplicate files
+20130807 to 20130814
+자동 파일명 생성
+Automatic filename generation
+*/
+ MSG_REPLAY_CHECKINGFILE = 0x7c4,
+/*20110816 to latest
+동일한 파일이 존재 합니다.
+The same file exists already.
+20130807 to 20130814
+파일 중복 채크
+Checking for duplicate files
+*/
+ MSG_REPLAY_THESAMEFILEEXISTS = 0x7c5,
+/*20110816 to latest
+Record Start
+20130807 to 20130814
+동일한 파일이 존재 합니다.
+The same file exists already.
+*/
+ MSG_REPLAY_RECORDSTART = 0x7c6,
+/*20110816 to latest
+ is Saved.
+20130807 to 20130814
+Record Start
+*/
+ MSG_REPLAY_RECORDEND = 0x7c7,
+#endif
+#if PACKETVER >= 20110823
+/*20110823 to latest
+Weight : %3d / %3d
+Weight: %3d / %3d
+20130807 to 20130814
+ is Saved.
+*/
+ MSG_WEIGHT = 0x7c8,
+/*20110823 to latest
+Total : %s C
+Total: %s C
+20130807 to 20130814
+Weight : %3d / %3d
+Weight: %3d / %3d
+*/
+ MSG_TOTAL = 0x7c9,
+/*20110823 to latest
+[수리검]을 장착한 상태여야 합니다.
+[Shuriken] must be equipped.
+20130807 to 20130814
+Total : %s C
+Total: %s C
+*/
+ MSG_FAIL_NEED_EQUIPPED_SYURIKEN = 0x7ca,
+#endif
+#if PACKETVER >= 20110831
+/*20110831 to latest
+Base Lv. %d
+20130807 to 20130814
+[수리검]을 장착한 상태여야 합니다.
+[Shuriken] must be equipped.
+*/
+ MSG__BASIC_MSG_BASE = 0x7cb,
+/*20110831 to latest
+Job Lv. %d
+20130807 to 20130814
+Base Lv. %d
+*/
+ MSG__BASIC_MSG_JOB = 0x7cc,
+/*20110831 to latest
+Zeny : %s
+Zeny: %s
+20130807 to 20130814
+Job Lv. %d
+*/
+ MSG_BASIC_MSG_ZENY = 0x7cd,
+/*20110831 to latest
+Trilinear
+20130807 to 20130814
+Zeny : %s
+Zeny: %s
+*/
+ MSG_GRAPHIC_MSG_TRILINEAR = 0x7ce,
+/*20110831 to latest
+attack
+20130807 to 20130814
+Trilinear
+*/
+ MSG_GRAPHIC_MSG_ATTACK = 0x7cf,
+/*20110831 to latest
+skill
+20130807 to 20130814
+attack
+*/
+ MSG_GRAPHIC_MSG_SKILL = 0x7d0,
+/*20110831 to latest
+item
+20130807 to 20130814
+skill
+*/
+ MSG_GRAPHIC_MSG_ITEM = 0x7d1,
+/*20110831 to latest
+NoCtrl
+20130807 to 20130814
+item
+*/
+ MSG_GRAPHIC_MSG_NOCTRL = 0x7d2,
+/*20110831 to latest
+전장
+More
+20130807 to 20130814
+NoCtrl
+*/
+ MSG_GRAPHIC_MSG_BATTLE = 0x7d3,
+/*20110831 to latest
+(Character/Total Slot)
+20130807 to 20130814
+전장
+More
+*/
+ MSG_CHARACTER_MSG_CHARACTERTOTALSLOT = 0x7d4,
+/*20110831 to latest
+Premium Service
+VIP Service
+20130807 to 20130814
+(Character/Total Slot)
+*/
+ MSG_CHARACTER_MSG_PREMIUMSERVICE = 0x7d5,
+/*20110831 to latest
+Premium
+VIP
+20130807 to 20130814
+Premium Service
+VIP Service
+*/
+ MSG_CHARACTER_MSG_PREMIUM = 0x7d6,
+/*20110831 to latest
+Service
+20130807 to 20130814
+Premium
+VIP
+*/
+ MSG_CHARACTER_MSG_SERVICE = 0x7d7,
+/*20110831 to latest
+Billing Service
+VIP
+20130807 to 20130814
+Service
+*/
+ MSG_CHARACTER_MSG_BILLINGSERVICE = 0x7d8,
+/*20110831 to latest
+Billing
+VIP
+20130807 to 20130814
+Billing Service
+VIP
+*/
+ MSG_CHARACTER_MSG_BILLING = 0x7d9,
+/*20110831 to latest
+Command List
+20130807 to 20130814
+Billing
+VIP
+*/
+ MSG_MSG_COMMANDLIST = 0x7da,
+/*20110831 to latest
+LEVEL
+20130807 to 20130814
+Command List
+*/
+ MSG_SEEK_PARTY_LEVEL = 0x7db,
+/*20110831 to latest
+MAP
+20130807 to 20130814
+LEVEL
+*/
+ MSG_SEEK_PARTY_MAP = 0x7dc,
+/*20110831 to latest
+JOB
+20130807 to 20130814
+MAP
+*/
+ MSG_SEEK_PARTY_JOB = 0x7dd,
+#endif
+#if PACKETVER >= 20110906
+/*20110906 to latest
+Not Available
+20130807 to 20130814
+JOB
+*/
+ MSG_MSG_NOTAVAILABLE = 0x7de,
+#endif
+#if PACKETVER >= 20110920
+/*20110920 to 20110929
+[수호 천사의 보호] 스킬은 만렙일 경우, 경험치 100% 이상일 때는 사용할 수 없습니다.
+20111004 to latest
+[수호 천사의 보호] 만렙일 경우 사용할 수 없습니다.
+[Protection of Guardian Angel] You can't use it when you reach the highest level.
+20130807 to 20130814
+Not Available
+*/
+ MSG_MSG_SUPERNOVICE_CHOPOKGI_CAPPEDLEVEL = 0x7df,
+#endif
+#if PACKETVER >= 20110928
+/*20110928 to latest
+정말 이동하시겠습니까?
+Do you really want to move?
+20130807 to 20130814
+[수호 천사의 보호] 만렙일 경우 사용할 수 없습니다.
+[Protection of Guardian Angel] You can't use it when you reach the highest level.
+*/
+ MSG_CHANGE_CHARACTER_SLOT = 0x7e0,
+/*20110928 to latest
+캐릭터 슬롯 이동에 실패했습니다.
+Failed to move Char slot.
+20130807 to 20130814
+정말 이동하시겠습니까?
+Do you really want to move?
+*/
+ MSG_CHANGE_CHARACTER_SLOT_FAILED = 0x7e1,
+#endif
+#if PACKETVER >= 20111004
+/*20111004 to latest
+캐릭터 이름이 잘못 되었습니다.
+Character name is invalid.
+20130807 to 20130814
+캐릭터 슬롯 이동에 실패했습니다.
+Failed to move Char slot.
+*/
+ MSG_CHARACTERNAME_ERROR = 0x7e2,
+/*20111004 to latest
+퀘스트보기창
+Show Quest
+20130807 to 20130814
+캐릭터 이름이 잘못 되었습니다.
+Character name is invalid.
+*/
+ MSG_QUEST_DISPLAY_ONOFF = 0x7e3,
+#endif
+#if PACKETVER >= 20111017
+/*20111017 to 20111021
+정말 탭을 제거하시겠습니까?
+20111025 to 20111116
+청소년 보호법에 따라, 잠시 후 0시 부터 6시 까지 ^ff0000만 16세 미만 고객님들의 게임 이용이 제한^000000됩니다.
+20111122 to latest
+ 청소년 보호법에 따라, 잠시 후 0시 부터 6시 까지 만 16세 미만 고객님들의 게임 이용이 제한됩니다.
+Depending on the protection of youth, and 0:00 to 6:00 while under the age of 16 of your game use is limited.
+20130807 to 20130814
+퀘스트보기창
+Show Quest
+*/
+ MSG_SHUTDOWN_ALERT_MSG = 0x7e4,
+/*20111017 to 20111021
+더이상 탭을 제거할 수 없습니다.
+20111025 to latest
+청소년 보호법에 따라, 0시 부터 6시 까지 ^ff0000만 16세 미만 고객님들의 게임 이용이 제한^000000되며, 게임을 종료합니다.
+Depending on the protection of youth, 0:00 to 6:00 ^ff0000 under the age of 16 ^000000 limit your use of the game and the game ends.
+20130807 to 20130814
+ 청소년 보호법에 따라, 잠시 후 0시 부터 6시 까지 만 16세 미만 고객님들의 게임 이용이 제한됩니다.
+Depending on the protection of youth, and 0:00 to 6:00 while under the age of 16 of your game use is limited.
+*/
+ MSG_BAN_SHUTDOWN_TEENAGER = 0x7e5,
+/*20111017 to 20111021
+더이상 탭을 추가할 수 없습니다.
+20111025 to latest
+캐릭터 이름을 변경하기 위해서는 길드에서 탈퇴 해야 합니다.
+In order to change the character name, you must leave the guild.
+20130807 to 20130814
+청소년 보호법에 따라, 0시 부터 6시 까지 ^ff0000만 16세 미만 고객님들의 게임 이용이 제한^000000되며, 게임을 종료합니다.
+Depending on the protection of youth, 0:00 to 6:00 ^ff0000 under the age of 16 ^000000 limit your use of the game and the game ends.
+*/
+ MSG_FAILED_RENAME_BELONGS_TO_GUILD = 0x7e6,
+#endif
+#if PACKETVER >= 20111025
+/*20111025 to latest
+캐릭터 이름을 변경하기 위해서는 파티에서 탈퇴 해야 합니다.
+In order to change the character name, you must leave the party.
+20130807 to 20130814
+캐릭터 이름을 변경하기 위해서는 길드에서 탈퇴 해야 합니다.
+In order to change the character name, you must leave the guild.
+*/
+ MSG_FAILED_RENAME_BELONGS_TO_PARTY = 0x7e7,
+/*20111025 to latest
+알 수 없는 오류로 캐릭터 이름 변경이 실패 하였습니다.
+Character name change failed, due an unknown error.
+20130807 to 20130814
+캐릭터 이름을 변경하기 위해서는 파티에서 탈퇴 해야 합니다.
+In order to change the character name, you must leave the party.
+*/
+ MSG_FAILED_RENAME_UNKOWN = 0x7e8,
+#endif
+#if PACKETVER >= 20111101
+/*20111101 to latest
+이미 캐릭터 슬롯변경이 가능한 상태입니다.(%d)
+Ready to change character slot in.(%d)
+20130807 to 20130814
+알 수 없는 오류로 캐릭터 이름 변경이 실패 하였습니다.
+Character name change failed, due an unknown error.
+*/
+ MSG_CHARSLOT_CHANGE_DUPLICATE = 0x7e9,
+/*20111101 to latest
+이미 캐릭터 이름변경이 가능한 상태입니다.(%d)
+Ready to change character name in.(%d)
+20130807 to 20130814
+이미 캐릭터 슬롯변경이 가능한 상태입니다.(%d)
+Ready to change character slot in.(%d)
+*/
+ MSG_CHARNAME_CHANGE_DUPLICATE = 0x7ea,
+/*20111101 to latest
+변경하려는 이름의 길이가 최대크기를 초과하여 캐릭터 이름 변경이 실패 하였습니다.
+Length exceeds the maximum size of the character name you want to change.
+20130807 to 20130814
+이미 캐릭터 이름변경이 가능한 상태입니다.(%d)
+Ready to change character name in.(%d)
+*/
+ MSG_FAILED_RENAME_OVER_LENGTH = 0x7eb,
+/*20111101 to latest
+사용할 수 없는 단어가 포함되어 캐릭터 이름 변경이 실패 하였습니다.
+Name contains invalid characters. Character name change failed.
+20130807 to 20130814
+변경하려는 이름의 길이가 최대크기를 초과하여 캐릭터 이름 변경이 실패 하였습니다.
+Length exceeds the maximum size of the character name you want to change.
+*/
+ MSG_FAILED_RENAME_PREVENTNAM = 0x7ec,
+/*20111101 to latest
+이름 변경이 금지된 상태이므로 캐릭터 이름 변경이 실패 하였습니다.
+The name change is prohibited. Character name change failed.
+20130807 to 20130814
+사용할 수 없는 단어가 포함되어 캐릭터 이름 변경이 실패 하였습니다.
+Name contains invalid characters. Character name change failed.
+*/
+ MSG_FAILED_RENAME_FORBIDDEN = 0x7ed,
+#endif
+#if PACKETVER >= 20111108
+/*20111108 to latest
+완료
+Complete
+20130807 to 20130814
+이름 변경이 금지된 상태이므로 캐릭터 이름 변경이 실패 하였습니다.
+The name change is prohibited. Character name change failed.
+*/
+ MSG_COMPLETE_HUNTING_QUEST = 0x7ee,
+#endif
+#if PACKETVER >= 20111114
+/*20111114 to 20111116
+ 몬스터 사냥을 통해 얻을 수 있는 경험치가 %d분간 %d%% 증가합니다.
+20111122 to latest
+ %d분간 얻을 수 있는 경험치가 %d%% 증가합니다.
+During %d minutes your Exp will increase by %d%%.
+20130807 to 20130814
+완료
+Complete
+*/
+ MSG_PLUSEXP_VALUE = 0x7ef,
+/*20111114 to latest
+소환까지 %02d초남았습니다.
+%02d seconds left until summon.
+20130807 to 20130814
+ %d분간 얻을 수 있는 경험치가 %d%% 증가합니다.
+During %d minutes your Exp will increase by %d%%.
+*/
+ MSG_PARTY_RECALL_TIME = 0x7f0,
+/*20111114 to latest
+파티장이 당신을 %s (%s) 로 소환합니다.소환시 %d zeny가 소모됩니다.
+Your party leader summons you to %s (%s). Warp costs %d Zeny.
+20130807 to 20130814
+소환까지 %02d초남았습니다.
+%02d seconds left until summon.
+*/
+ MSG_PARTY_RECALL_INFO = 0x7f1,
+/*20111114 to latest
+소환대상
+Summon target
+20130807 to 20130814
+파티장이 당신을 %s (%s) 로 소환합니다.소환시 %d zeny가 소모됩니다.
+Your party leader summons you to %s (%s). Warp costs %d Zeny.
+*/
+ MSG_RECALL_TARGET = 0x7f2,
+/*20111114 to latest
+차단목록
+Block List
+20130807 to 20130814
+소환대상
+Summon target
+*/
+ MSG_PARTY_BLACKLIST = 0x7f3,
+/*20111114 to 20120209
+파티 광고를 등록하기 위해 1000제니가 소모됩니다.
+20120214 to latest
+파티 광고를 등록하기 위해 %d제니가 소모됩니다.
+%d Zeny will be spent for making party ad.
+20130807 to 20130814
+차단목록
+Block List
+*/
+ MSG_PARTY_CF_PAY = 0x7f4,
+/*20111114 to latest
+파티 광고를 하기 위한 제니가 부족합니다.
+Insufficient Zeny for making party ad.
+20130807 to 20130814
+파티 광고를 등록하기 위해 %d제니가 소모됩니다.
+%d Zeny will be spent for making party ad.
+*/
+ MSG_PARTY_CF_PAY_SHORTAGE_COST = 0x7f5,
+/*20111114 to latest
+)님 파티 가입승인
+) party: accept invitation
+20130807 to 20130814
+파티 광고를 하기 위한 제니가 부족합니다.
+Insufficient Zeny for making party ad.
+*/
+ MSG_PARTY_ADD_OK = 0x7f6,
+/*20111114 to latest
+)님 파티 가입거부
+) party: decline invitation
+20130807 to 20130814
+)님 파티 가입승인
+) party: accept invitation
+*/
+ MSG_PARTY_ADD_REFUSES = 0x7f7,
+/*20111114 to latest
+)님 장비창보기
+) party: show equipment window
+20130807 to 20130814
+)님 파티 가입거부
+) party: decline invitation
+*/
+ MSG_PARTY_ITEM_VIEW = 0x7f8,
+/*20111114 to latest
+한글18글자,영문36글자 입력가능
+Up to 36 english letters can be entered
+20130807 to 20130814
+)님 장비창보기
+) party: show equipment window
+*/
+ MSG_SEEK_PARTY_MEMO_HELP = 0x7f9,
+/*20111114 to latest
+지원하기
+Enter
+20130807 to 20130814
+한글18글자,영문36글자 입력가능
+Up to 36 english letters can be entered
+*/
+ MSG_PARTY_REQUEST = 0x7fa,
+/*20111114 to latest
+1:1대화하기
+1:1 Chat
+20130807 to 20130814
+지원하기
+Enter
+*/
+ MSG_DIRECT_CHAT = 0x7fb,
+/*20111114 to latest
+차단하기
+Block
+20130807 to 20130814
+1:1대화하기
+1:1 Chat
+*/
+ MSG_ADD_BLACKLIST = 0x7fc,
+#endif
+#if PACKETVER >= 20111122
+/*20111122 to latest
+파티장에게 소환되기 위한 제니가 부족합니다.
+Insufficient Zeny for recall.
+20130807 to 20130814
+차단하기
+Block
+*/
+ MSG_PARTY_RECRUIT_NOT_RECALL_PAY = 0x7fd,
+/*20111122 to latest
+메모란에 파티광고를 써주세요.
+Input your party ad.
+20130807 to 20130814
+파티장에게 소환되기 위한 제니가 부족합니다.
+Insufficient Zeny for recall.
+*/
+ MSG_PARTY_RECRUIT_MEMO_ERROR = 0x7fe,
+/*20111122 to latest
+파티장만이 파티광고를 등록할수있습니다.
+Only party leader can register party ad.
+20130807 to 20130814
+메모란에 파티광고를 써주세요.
+Input your party ad.
+*/
+ MSG_PARTY_RECRUIT_ERROR = 0x7ff,
+/*20111122 to latest
+이미 지원한 파티광고입니다.
+You have already accepted this ad.
+20130807 to 20130814
+파티장만이 파티광고를 등록할수있습니다.
+Only party leader can register party ad.
+*/
+ MSG_PARTY_REFUSE_ERROR = 0x800,
+/*20111122 to latest
+내용
+For
+20130807 to 20130814
+이미 지원한 파티광고입니다.
+You have already accepted this ad.
+*/
+ MSG_PARTY_RECRUIT_INFO = 0x801,
+/*20111122 to latest
+장비
+E
+20130807 to 20130814
+내용
+For
+*/
+ MSG_INVENTORY_TABNAME_1 = 0x802,
+/*20111122 to latest
+개인
+F
+20130807 to 20130814
+장비
+E
+*/
+ MSG_INVENTORY_TABNAME_3 = 0x803,
+/*20111122 to latest
+ 아이템 버리기 잠금
+ Drop Lock: On/Off
+20130807 to 20130814
+개인
+F
+*/
+ MSG_ITEM_DROP_LOCK = 0x804,
+/*20111122 to latest
+파티원 찾기 알람
+Party Alarm
+20130807 to 20130814
+ 아이템 버리기 잠금
+ Drop Lock: On/Off
+*/
+ MSG_PARTY_RECRUIT_ALRAM = 0x805,
+#endif
+#if PACKETVER >= 20111207
+/*20111207 to latest
+파티결성
+Create Party
+20130807 to 20130814
+파티원 찾기 알람
+Party Alarm
+*/
+ MSG_CREATE_PARTY = 0x806,
+/*20111207 to latest
+파티탈퇴
+Leave Party
+20130807 to 20130814
+파티결성
+Create Party
+*/
+ MSG_WITHDRAW_PARTY = 0x807,
+/*20111207 to latest
+파티초대
+Party Invitation
+20130807 to 20130814
+파티탈퇴
+Leave Party
+*/
+ MSG_INVITE_PARTY = 0x808,
+/*20111207 to latest
+파티 이름 등록
+Party Name:
+20130807 to 20130814
+파티초대
+Party Invitation
+*/
+ MSG_PUT_PARTY_NAME_IN = 0x809,
+/*20111207 to latest
+초대할 캐릭터 이름
+Player Name:
+20130807 to 20130814
+파티 이름 등록
+Party Name:
+*/
+ MSG_PUT_PLAYER_NAME_IN = 0x80a,
+/*20111207 to latest
+님께 파티가입 요청을 보냈습니다.
+ has recieved an invitation to join your party.
+20130807 to 20130814
+초대할 캐릭터 이름
+Player Name:
+*/
+ MSG_CHARACTER_PARTY_INVITATION_TO_JOIN = 0x80b,
+/*20111207 to latest
+님께서 파티가입을 거절했습니다.
+ rejected your party invitation.
+20130807 to 20130814
+님께 파티가입 요청을 보냈습니다.
+ has recieved an invitation to join your party.
+*/
+ MSG_CHARACTER_REJECT_PARTY_INVITATION = 0x80c,
+/*20111207 to latest
+님께서 파티가입을 수락했습니다.
+ accepted your party invitation.
+20130807 to 20130814
+님께서 파티가입을 거절했습니다.
+ rejected your party invitation.
+*/
+ MSG_CHARACTER_ACCEPT_PARTY_INVITATION = 0x80d,
+/*20111207 to latest
+이미 파티모집중입니다.
+Recruitment is already a party.
+20130807 to 20130814
+님께서 파티가입을 수락했습니다.
+ accepted your party invitation.
+*/
+ MSG_PARTY_RECRUIT_ERROR1 = 0x80e,
+/*20111207 to latest
+이전 검색과 같은 조건입니다.
+Same conditions such as the previous search.
+20130807 to 20130814
+이미 파티모집중입니다.
+Recruitment is already a party.
+*/
+ MSG_PARTY_RECRUIT_ERROR2 = 0x80f,
+/*20111207 to latest
+길드 탈퇴 후 사용 가능합니다.
+Guild after withdrwal.
+20130807 to 20130814
+이전 검색과 같은 조건입니다.
+Same conditions such as the previous search.
+*/
+ MSG_CHARNAME_CHANGE_FILED_GUILDMEMBER = 0x810,
+/*20111207 to latest
+파티 탈퇴 후 사용 가능합니다.
+Party after secession.
+20130807 to 20130814
+길드 탈퇴 후 사용 가능합니다.
+Guild after withdrwal.
+*/
+ MSG_CHARNAME_CHANGE_FILED_PARTYMEMBER = 0x811,
+/*20111207 to latest
+소환 유저가 소환이 안되는 맵에 있습니다.
+The player can not be summoned to this map.
+20130807 to 20130814
+파티 탈퇴 후 사용 가능합니다.
+Party after secession.
+*/
+ MSG_PARTY_RECRUIT_RECALL_ERR1 = 0x812,
+/*20111207 to 20120229
+파티장이 있는 맵에서는 소환이 안됩니다.
+20120307 to latest
+현재 파티장이 있는 맵에서는 소환이 안됩니다.
+Party Leader is on a map that is restricted to summon players.
+20130807 to 20130814
+소환 유저가 소환이 안되는 맵에 있습니다.
+The player can not be summoned to this map.
+*/
+ MSG_PARTY_RECRUIT_RECALL_ERR2 = 0x813,
+/*20111207 to latest
+소환거부되었습니다.
+Summon has been denied.
+20130807 to 20130814
+현재 파티장이 있는 맵에서는 소환이 안됩니다.
+Party Leader is on a map that is restricted to summon players.
+*/
+ MSG_PARTY_RECRUIT_RECALL_ERR3 = 0x814,
+/*20111207 to latest
+소환을 할 수 없습니다.
+Can not be summoned.
+20130807 to 20130814
+소환거부되었습니다.
+Summon has been denied.
+*/
+ MSG_PARTY_RECRUIT_RECALL_ERR4 = 0x815,
+/*20111207 to latest
+파티초대는 파티장만 가능합니다.
+Only the leader can invite.
+20130807 to 20130814
+소환을 할 수 없습니다.
+Can not be summoned.
+*/
+ MSG_YOU_ARE_NOT_PARTYMASTER = 0x816,
+#endif
+#if PACKETVER >= 20111213
+/*20111213 to latest
+검색할 아이템명 입력 :
+Search item:
+20130807 to 20130814
+파티초대는 파티장만 가능합니다.
+Only the leader can invite.
+*/
+ MSG_NC_ITEM_SEARCH = 0x817,
+/*20111213 to latest
+캐릭터명을 입력하셔야 합니다.
+You must enter a character name.
+20130807 to 20130814
+검색할 아이템명 입력 :
+Search item:
+*/
+ MSG_PLEASE_PUT_CHARACTER_NAME_IN = 0x818,
+/*20111213 to latest
+파티이름을 입력하셔야 합니다.
+You must enter the name of the party.
+20130807 to 20130814
+캐릭터명을 입력하셔야 합니다.
+You must enter a character name.
+*/
+ MSG_PLEASE_PUT_PARTY_NAME_IN = 0x819,
+#endif
+#if PACKETVER >= 20111220
+/*20111220 to latest
+길드 도우미
+Guild Creation Window
+20130807 to 20130814
+파티이름을 입력하셔야 합니다.
+You must enter the name of the party.
+*/
+ MSG_GUILD_HELPER = 0x81a,
+/*20111220 to latest
+가입되어 있는 길드가 없습니다.
+Join a guild or start your own!
+20130807 to 20130814
+길드 도우미
+Guild Creation Window
+*/
+ MSG_NO_GUILD_CURRENTLY_PARTICIPATED_IN = 0x81b,
+/*20111220 to latest
+길드 결성
+Create Guild
+20130807 to 20130814
+가입되어 있는 길드가 없습니다.
+Join a guild or start your own!
+*/
+ MSG_CREATE_GUILD = 0x81c,
+/*20111220 to latest
+생성할 길드 이름
+Guild Name
+20130807 to 20130814
+길드 결성
+Create Guild
+*/
+ MIS_PUT_GUILD_NAME_IN = 0x81d,
+/*20111220 to latest
+길드 결성 도움말
+Guild System
+20130807 to 20130814
+생성할 길드 이름
+Guild Name
+*/
+ MIS_GUILD_TIP = 0x81e,
+/*20111220 to latest
+길드 시스템이란
+What is the guild system
+20130807 to 20130814
+길드 결성 도움말
+Guild System
+*/
+ MIS_GUILD_SYSTEM = 0x81f,
+/*20111220 to latest
+길드이름을 입력하셔야 합니다.
+You must enter the name of your guild.
+20130807 to 20130814
+길드 시스템이란
+What is the guild system
+*/
+ MSG_PLEASE_PUT_GUILD_NAME_IN = 0x820,
+#endif
+#if PACKETVER >= 20111227
+/*20111227 to latest
+지원한 파티에서 거부당했습니다.
+Supported at the party was rejected.
+20130807 to 20130814
+길드이름을 입력하셔야 합니다.
+You must enter the name of your guild.
+*/
+ MSG_PARTY_RECRUIT_REFUSE_VOLUNTEER = 0x821,
+#endif
+#if PACKETVER >= 20120103
+/*20120103 to latest
+서비스 선택.
+Select Service:
+20130807 to 20130814
+지원한 파티에서 거부당했습니다.
+Supported at the party was rejected.
+*/
+ MSG_SERVICESELECT = 0x822,
+/*20120103 to latest
+탈출 가능한 지역.
+Possible escape area.
+20130807 to 20130814
+서비스 선택.
+Select Service:
+*/
+ MSG_SHOW_MAPNAMETITLE = 0x823,
+/*20120103 to latest
+Replay File List
+20130807 to 20130814
+탈출 가능한 지역.
+Possible escape area.
+*/
+ MSG_REPLAY_STR_REPLAYFILELIST = 0x824,
+/*20120103 to latest
+File info
+20130807 to 20130814
+Replay File List
+*/
+ MSG_REPLAY_STR_FILEINFO = 0x825,
+/*20120103 to latest
+File List
+20130807 to 20130814
+File info
+*/
+ MSG_REPLAY_STR_FILELIST = 0x826,
+#endif
+#if PACKETVER >= 20120117
+/*20120117 to latest
+%s 아이템은 거래가 불가능 합니다.
+%s Item deal not possible.
+20130807 to 20130814
+File List
+*/
+ MSG_NOT_MOVEABLE_TRADE = 0x827,
+#endif
+#if PACKETVER >= 20120207
+/*20120207 to latest
+길드해체
+Disband the Guild
+20130807 to 20130814
+%s 아이템은 거래가 불가능 합니다.
+%s Item deal not possible.
+*/
+ MSG_GUILD_DISBAND = 0x828,
+/*20120207 to latest
+해체할 길드 이름
+Enter Guild Name
+20130807 to 20130814
+길드해체
+Disband the Guild
+*/
+ MSG_PUT_DISBAND_GUILDNAME = 0x829,
+#endif
+#if PACKETVER >= 20120214
+/*20120214 to latest
+접속하지 않았거나 존재하지 않는 캐릭터입니다.
+The character is not online or does not exist.
+20130807 to 20130814
+해체할 길드 이름
+Enter Guild Name
+*/
+ MSG_JOINGUILD_NOTEXIST_USER = 0x82a,
+#endif
+#if PACKETVER >= 20120228
+/*20120228 to latest
+팔콘 호출에 실패하였습니다.
+Failed to call Falcon.
+20130807 to 20130814
+접속하지 않았거나 존재하지 않는 캐릭터입니다.
+The character is not online or does not exist.
+*/
+ MSG_FAILED_SET_EFFECT_BIRD = 0x82b,
+#endif
+#if PACKETVER >= 20120307
+/*20120307 to 20120320
+%d%% ( 프리미엄 %d%% + %s서버 %d%% )
+20120328 to latest
+%d%% ( 기본 100%% + 프리미엄 %d%% + %s서버 %d%% )
+%d%%(default 100%%+ Premium%d%%+%s Server%d%%)
+20130807 to 20130814
+팔콘 호출에 실패하였습니다.
+Failed to call Falcon.
+*/
+ MSG_BASIC_EXP_MSG_BRZ = 0x82c,
+/*20120307 to latest
+해당 유저는 현재 공성전에 참가하고 있습니다.
+This user is currently participating in the siege.
+20130807 to 20130814
+%d%% ( 기본 100%% + 프리미엄 %d%% + %s서버 %d%% )
+%d%%(default 100%%+ Premium%d%%+%s Server%d%%)
+*/
+ MSG_JOINGUILD_TARGET_USER_IN_SIEGEMAP = 0x82d,
+/*20120307 to latest
+동일한 맵에서만 파티장 변경이 가능합니다.
+It is only possible to change the party leader while on the same map.
+20130807 to 20130814
+해당 유저는 현재 공성전에 참가하고 있습니다.
+This user is currently participating in the siege.
+*/
+ MSG_PARTY_MASTER_CHANGE_SAME_MAP = 0x82e,
+/*20120307 to latest
+현재 지역에서는 파티장 변경이 불가능합니다.
+In the current region it is not possible to change the party.
+20130807 to 20130814
+동일한 맵에서만 파티장 변경이 가능합니다.
+It is only possible to change the party leader while on the same map.
+*/
+ MSG_CANNOT_PARTY_MASTER_CHANGE_IN_MAP = 0x82f,
+/*20120307 to latest
+그리폰 내리기
+Gryphon making
+20130807 to 20130814
+현재 지역에서는 파티장 변경이 불가능합니다.
+In the current region it is not possible to change the party.
+*/
+ MSG_ROYAL_CHIKENOFF = 0x830,
+/*20120307 to 20120307
+현재 공성전에 참여 중이므로 길드초대를 하실 수 없습니다.
+You can't invite characters in WoE maps.
+20120314 to latest
+%d월 %d일 %d시 %d분 %d초
+Delete: %d/%d - %d:%d:%d
+20130807 to 20130814
+그리폰 내리기
+Gryphon making
+*/
+ MSG_TIME_TYPE3 = 0x831,
+#endif
+#if PACKETVER >= 20120314
+/*20120314 to latest
+현재 공성전에 참여 중이므로 길드초대를 하실 수 없습니다.
+You can't invite characters in WoE maps.
+20130807 to 20130814
+%d월 %d일 %d시 %d분 %d초
+Delete: %d/%d - %d:%d:%d
+*/
+ MSG_JOINGUILD_REQ_USER_IN_SIEGEMAP = 0x832,
+/*20120314 to latest
+전장에 입장 대기를 신청하셨습니다.
+You are now in the battlefield queue.
+20130807 to 20130814
+현재 공성전에 참여 중이므로 길드초대를 하실 수 없습니다.
+You can't invite characters in WoE maps.
+*/
+ MSG_BATTLEFIELD_MSG_REQUEST_JOINWAIT = 0x833,
+/*20120314 to latest
+인원이 가득 찼습니다.
+Queuing has finished.
+20130807 to 20130814
+전장에 입장 대기를 신청하셨습니다.
+You are now in the battlefield queue.
+*/
+ MSG_BATTLEFIELD_MSG_FULL = 0x834,
+/*20120314 to latest
+확인되지 않은 전장명입니다.
+Invalid name of the battlefield.
+20130807 to 20130814
+인원이 가득 찼습니다.
+Queuing has finished.
+*/
+ MSG_BATTLEFIELD_MSG_UNKNOWN_NAME = 0x835,
+/*20120314 to latest
+확인되지 않은 신청타입입니다.
+Invalid type of application.
+20130807 to 20130814
+확인되지 않은 전장명입니다.
+Invalid name of the battlefield.
+*/
+ MSG_BATTLEFIELD_MSG_UNKNOWN_TYPE = 0x836,
+/*20120314 to latest
+최대 인원을 초과하였습니다.
+People count exceeded.
+20130807 to 20130814
+확인되지 않은 신청타입입니다.
+Invalid type of application.
+*/
+ MSG_BATTLEFIELD_MSG_MAXOVER = 0x837,
+/*20120314 to latest
+입장 레벨이 맞지 않습니다.
+Your level doesn't fit this battlefield rules.
+20130807 to 20130814
+최대 인원을 초과하였습니다.
+People count exceeded.
+*/
+ MSG_BATTLEFIELD_MSG_JOIN_NOTLEVEL = 0x838,
+/*20120314 to latest
+중복 신청하셨습니다.
+Duplicate application.
+20130807 to 20130814
+입장 레벨이 맞지 않습니다.
+Your level doesn't fit this battlefield rules.
+*/
+ MSG_BATTLEFIELD_MSG_JOIN_OVERLAP = 0x839,
+/*20120314 to latest
+재접속후 다시 신청하여 주시기 바랍니다.
+After reconnecting, please re-apply.
+20130807 to 20130814
+중복 신청하셨습니다.
+Duplicate application.
+*/
+ MSG_BATTLEFIELD_MSG_RESTART = 0x83a,
+/*20120314 to latest
+직업이 맞지 않습니다.
+Your class can't participate in this battlefield.
+20130807 to 20130814
+재접속후 다시 신청하여 주시기 바랍니다.
+After reconnecting, please re-apply.
+*/
+ MSG_BATTLEFIELD_MSG_NOTJOB = 0x83b,
+/*20120314 to latest
+파티장이나 길드장만이 신청할 수 있습니다.
+Only party leader / guild master can apply.
+20130807 to 20130814
+직업이 맞지 않습니다.
+Your class can't participate in this battlefield.
+*/
+ MSG_BATTLEFIELD_MSG_JOIN_ONLYBOSS = 0x83c,
+/*20120314 to latest
+전장을 이용 중인 팀원이 있어 신청이 불가능 합니다.
+You can't apply while your team member is already on a battlefield.
+20130807 to 20130814
+파티장이나 길드장만이 신청할 수 있습니다.
+Only party leader / guild master can apply.
+*/
+ MSG_BATTLEFIELD_MSG_BUSY_PARTYMEMBER = 0x83d,
+/*20120314 to latest
+전장 입장 대기가 취소되었습니다.
+You have left the battlefield queue.
+20130807 to 20130814
+전장을 이용 중인 팀원이 있어 신청이 불가능 합니다.
+You can't apply while your team member is already on a battlefield.
+*/
+ MSG_BATTLEFIELD_MSG_CANCEL_JOINWAIT = 0x83e,
+/*20120314 to latest
+잘못된 전장명 입니다.
+Wrong battlefield name.
+20130807 to 20130814
+전장 입장 대기가 취소되었습니다.
+You have left the battlefield queue.
+*/
+ MSG_BATTLEFIELD_MSG_WRONG_NAME = 0x83f,
+/*20120314 to latest
+전장 입장 대기 순위에 없습니다.
+You are not in the battlefield queue list
+20130807 to 20130814
+잘못된 전장명 입니다.
+Wrong battlefield name.
+*/
+ MSG_BATTLEFIELD_MSG_NOTRANK = 0x840,
+/*20120314 to latest
+선택하신 전장은 현재 이용하실 수 없으므로 대기가 취소됩니다.
+The selected arena is unavailable; your application has been cancelled
+20130807 to 20130814
+전장 입장 대기 순위에 없습니다.
+You are not in the battlefield queue list
+*/
+ MSG_BATTLEFIELD_MSG_FAIL_CHOICE = 0x841,
+/*20120314 to latest
+전장 입장을 취소하였습니다.
+You have left the queue
+20130807 to 20130814
+선택하신 전장은 현재 이용하실 수 없으므로 대기가 취소됩니다.
+The selected arena is unavailable; your application has been cancelled
+*/
+ MSG_BATTLEFIELD_MSG_CANCEL_JOIN = 0x842,
+/*20120314 to latest
+전장에 입장하시겠습니까?
+Are you sure you want to join a battleground?
+20130807 to 20130814
+전장 입장을 취소하였습니다.
+You have left the queue
+*/
+ MSG_BATTLEFIELD_MSG_DOYOU_JOIN = 0x843,
+/*20120314 to latest
+전장 입장 신청 시스템
+[Battlefield application rules]
+20130807 to 20130814
+전장에 입장하시겠습니까?
+Are you sure you want to join a battleground?
+*/
+ MSG_BATTLEFIELD_HELP1 = 0x844,
+/*20120314 to latest
+입장 신청 및 전장으로의 공간이동 불가 상황
+Application and position into the battlefield cannot be applied under this circumtances
+20130807 to 20130814
+전장 입장 신청 시스템
+[Battlefield application rules]
+*/
+ MSG_BATTLEFIELD_HELP2 = 0x845,
+/*20120314 to latest
+1. 여러 종류의 전장을 동시에 신청할 수 없습니다.
+1. Different types of battle can not be applied simultaneously.
+20130807 to 20130814
+입장 신청 및 전장으로의 공간이동 불가 상황
+Application and position into the battlefield cannot be applied under this circumtances
+*/
+ MSG_BATTLEFIELD_HELP3 = 0x846,
+/*20120314 to latest
+2. 개인 / 파티 / 길드 전장을 동시에 신청할 수 없습니다.
+2. Personal / party / guild battle can not be applied simultaneously.
+20130807 to 20130814
+1. 여러 종류의 전장을 동시에 신청할 수 없습니다.
+1. Different types of battle can not be applied simultaneously.
+*/
+ MSG_BATTLEFIELD_HELP4 = 0x847,
+/*20120314 to latest
+3. 파티 전장 신청은 파티장만 신청할 수 있으며,
+3. Parties can only be applied by their party leaders.
+20130807 to 20130814
+2. 개인 / 파티 / 길드 전장을 동시에 신청할 수 없습니다.
+2. Personal / party / guild battle can not be applied simultaneously.
+*/
+ MSG_BATTLEFIELD_HELP5 = 0x848,
+/*20120314 to latest
+오프라인중이거나 오프라인 된 파티원은 대기열에서 누락됩니다.
+Offline party members won't proceed to the queue.
+20130807 to 20130814
+3. 파티 전장 신청은 파티장만 신청할 수 있으며,
+3. Parties can only be applied by their party leaders.
+*/
+ MSG_BATTLEFIELD_HELP6 = 0x849,
+/*20120314 to latest
+4. 전장 신청은 전장 맵을 제외한 모든 곳에서 신청 가능하나,
+4. You can add request to enter the arena from any map except for those who don't allow teleport/warp.
+20130807 to 20130814
+오프라인중이거나 오프라인 된 파티원은 대기열에서 누락됩니다.
+Offline party members won't proceed to the queue.
+*/
+ MSG_BATTLEFIELD_HELP7 = 0x84a,
+/*20120314 to latest
+입장한 위치가 마을, 필드, 일반 던전이 아닐 경우 복귀 시 캐릭터 저장 좌표로 이동 됩니다.
+When the battle is finished your character will be returned to the current spot or (if it's not possible) to the save point.
+20130807 to 20130814
+4. 전장 신청은 전장 맵을 제외한 모든 곳에서 신청 가능하나,
+4. You can add request to enter the arena from any map except for those who don't allow teleport/warp.
+*/
+ MSG_BATTLEFIELD_HELP8 = 0x84b,
+/*20120314 to latest
+5. 전장의 보상 및 기타 서비스는 각 마을에 위치한 전장 모병관을 통해 전장 대기실에서 이용해 주십시오.
+5. You can view and choose rewards in the arena waiting room.
+20130807 to 20130814
+입장한 위치가 마을, 필드, 일반 던전이 아닐 경우 복귀 시 캐릭터 저장 좌표로 이동 됩니다.
+When the battle is finished your character will be returned to the current spot or (if it's not possible) to the save point.
+*/
+ MSG_BATTLEFIELD_HELP9 = 0x84c,
+/*20120314 to latest
+전장 입장 신청 도움말
+Request help battle position
+20130807 to 20130814
+5. 전장의 보상 및 기타 서비스는 각 마을에 위치한 전장 모병관을 통해 전장 대기실에서 이용해 주십시오.
+5. You can view and choose rewards in the arena waiting room.
+*/
+ MSG_BATTLEFIELD_HELP10 = 0x84d,
+/*20120314 to latest
+%s 전장이 시작됩니다.
+%s battle begins.
+20130807 to 20130814
+전장 입장 신청 도움말
+Request help battle position
+*/
+ MSG_BATTLEFIELD_START = 0x84e,
+/*20120314 to latest
+전장으로 이동하시겠습니까?
+Do you want to enter the arena?
+20130807 to 20130814
+%s 전장이 시작됩니다.
+%s battle begins.
+*/
+ MSG_BATTLEFIELD_DOYOU_MOVE = 0x84f,
+/*20120314 to latest
+[주의]
+[Note]
+20130807 to 20130814
+전장으로 이동하시겠습니까?
+Do you want to enter the arena?
+*/
+ MSG_BATTLEFIELD_WARNINGMSG1 = 0x850,
+/*20120314 to latest
+현재 위치가 마을, 필드 혹은 일반던전이
+When the battle is finished your character will
+20130807 to 20130814
+[주의]
+[Note]
+*/
+ MSG_BATTLEFIELD_WARNINGMSG2 = 0x851,
+/*20120314 to latest
+아닐 경우 전장 종료 후 저장된 위치로
+be returned to the current spot or (if it's not
+20130807 to 20130814
+현재 위치가 마을, 필드 혹은 일반던전이
+When the battle is finished your character will
+*/
+ MSG_BATTLEFIELD_WARNINGMSG3 = 0x852,
+/*20120314 to latest
+되돌아가게 됩니다.
+possible) to the save point.
+20130807 to 20130814
+아닐 경우 전장 종료 후 저장된 위치로
+be returned to the current spot or (if it's not
+*/
+ MSG_BATTLEFIELD_WARNINGMSG4 = 0x853,
+/*20120314 to latest
+다른 이의 요청 결과를 기다리고 있습니다.
+Waiting for the opponents.
+20130807 to 20130814
+되돌아가게 됩니다.
+possible) to the save point.
+*/
+ MSG_BATTLEFIELD_WAIT_PLAYER = 0x854,
+/*20120314 to latest
+전장 입장 요청
+Battlefield position request
+20130807 to 20130814
+다른 이의 요청 결과를 기다리고 있습니다.
+Waiting for the opponents.
+*/
+ MSG_BATTLEFIELD_REQUEST_JOIN = 0x855,
+/*20120314 to latest
+수락대기시간:%d초
+Accept standby time:%d seconds
+20130807 to 20130814
+전장 입장 요청
+Battlefield position request
+*/
+ MSG_BATTLEFIELD_WAITTIME_D = 0x856,
+/*20120314 to latest
+입장 대기 상태
+Standby position
+20130807 to 20130814
+수락대기시간:%d초
+Accept standby time:%d seconds
+*/
+ MSG_BATTLEFIELD_STATE_JOINWAIT = 0x857,
+/*20120314 to latest
+전장 명칭: %s
+Battlefield name:%s
+20130807 to 20130814
+입장 대기 상태
+Standby position
+*/
+ MSG_BATTLEFIELD_NAME_S = 0x858,
+/*20120314 to latest
+전장 필요 인원: %d
+Persons required:%d
+20130807 to 20130814
+전장 명칭: %s
+Battlefield name:%s
+*/
+ MSG_BATTLEFIELD_MEMBER_D = 0x859,
+/*20120314 to latest
+내 대기순번: %d
+Your position:%d
+20130807 to 20130814
+전장 필요 인원: %d
+Persons required:%d
+*/
+ MSG_BATTLEFIELD_MYRANK_D = 0x85a,
+/*20120314 to latest
+명칭 :
+Name:
+20130807 to 20130814
+내 대기순번: %d
+Your position:%d
+*/
+ MSG_BATTLEFIELD_DP_TITLE = 0x85b,
+/*20120314 to latest
+목표 :
+Goal:
+20130807 to 20130814
+명칭 :
+Name:
+*/
+ MSG_BATTLEFIELD_DP_AIM = 0x85c,
+/*20120314 to latest
+전장의 인원 구성 :
+Format:
+20130807 to 20130814
+목표 :
+Goal:
+*/
+ MSG_BATTLEFIELD_DP_MEMBER = 0x85d,
+/*20120314 to latest
+참여조건 :
+Level:
+20130807 to 20130814
+전장의 인원 구성 :
+Format:
+*/
+ MSG_BATTLEFIELD_DP_REQUIRED = 0x85e,
+/*20120314 to latest
+보상(승) :
+Win:
+20130807 to 20130814
+참여조건 :
+Level:
+*/
+ MSG_BATTLEFIELD_DP_WIN = 0x85f,
+/*20120314 to latest
+보상(무) :
+Draw:
+20130807 to 20130814
+보상(승) :
+Win:
+*/
+ MSG_BATTLEFIELD_DP_DRAW = 0x860,
+/*20120314 to latest
+보상(패) :
+Loss:
+20130807 to 20130814
+보상(무) :
+Draw:
+*/
+ MSG_BATTLEFIELD_DP_LOSS = 0x861,
+/*20120314 to latest
+전장을 개인으로 신청 하셨습니다. 맞습니까?
+Do you want to participate in the individuals battle?
+20130807 to 20130814
+보상(패) :
+Loss:
+*/
+ MSG_BATTLEFIELD_DOYOU_SINGLE = 0x862,
+/*20120314 to latest
+전장을 파티로 신청 하셨습니다. 맞습니까?
+Do you want to participate in the parties battle?
+20130807 to 20130814
+전장을 개인으로 신청 하셨습니다. 맞습니까?
+Do you want to participate in the individuals battle?
+*/
+ MSG_BATTLEFIELD_DOYOU_PALTY = 0x863,
+/*20120314 to latest
+전장을 길드로 신청 하셨습니다. 맞습니까?
+Do you want to participate in the guilds battle?
+20130807 to 20130814
+전장을 파티로 신청 하셨습니다. 맞습니까?
+Do you want to participate in the parties battle?
+*/
+ MSG_BATTLEFIELD_DOYOU_GUILD = 0x864,
+/*20120314 to latest
+전장 목록
+Battleground List
+20130807 to 20130814
+전장을 길드로 신청 하셨습니다. 맞습니까?
+Do you want to participate in the guilds battle?
+*/
+ MSG_BATTLEFIELD_LIST2 = 0x865,
+/*20120314 to latest
+%d VS %d
+20130807 to 20130814
+전장 목록
+Battleground List
+*/
+ MSG_BATTLEFIELD_D_VS_D = 0x866,
+/*20120314 to latest
+Base LV %d 이하
+LV %d and lower
+20130807 to 20130814
+%d VS %d
+*/
+ MSG_BATTLEFIELD_LEVELDOWN_D = 0x867,
+/*20120314 to latest
+Base LV %d 이상
+LV %d and higher
+20130807 to 20130814
+Base LV %d 이하
+LV %d and lower
+*/
+ MSG_BATTLEFIELD_LEVELUP_D = 0x868,
+/*20120314 to latest
+Base LV %d ~ %d
+LV %d ~ %d
+20130807 to 20130814
+Base LV %d 이상
+LV %d and higher
+*/
+ MSG_BATTLEFIELD_LEVEL_D_D = 0x869,
+/*20120314 to latest
+제한 없음
+No restrictions
+20130807 to 20130814
+Base LV %d ~ %d
+LV %d ~ %d
+*/
+ MSG_BATTLEFIELD_LIMITLESS = 0x86a,
+/*20120314 to latest
+[해당 맵에서는 신청하실 수 없습니다.]
+[You can't apply on this map.]
+20130807 to 20130814
+제한 없음
+No restrictions
+*/
+ MSG_BATTLEFIELD_MSG_NOT_JOINMAP = 0x86b,
+/*20120314 to latest
+[전장 재신청까지 약 1분의 대기시간을 필요로 합니다.]
+[You must wait about 1 minute to apply.]
+20130807 to 20130814
+[해당 맵에서는 신청하실 수 없습니다.]
+[You can't apply on this map.]
+*/
+ MSG_BATTLEFIELD_MSG_WAIT_1MM = 0x86c,
+/*20120314 to latest
+[파티에 먼저 가입하셔야 합니다.]
+[You must be in a party.]
+20130807 to 20130814
+[전장 재신청까지 약 1분의 대기시간을 필요로 합니다.]
+[You must wait about 1 minute to apply.]
+*/
+ MSG_BATTLEFIELD_MSG_PLZ_PALTYJOIN = 0x86d,
+/*20120314 to latest
+[파티장만 신청 가능합니다.]
+[Only party leader can apply.]
+20130807 to 20130814
+[파티에 먼저 가입하셔야 합니다.]
+[You must be in a party.]
+*/
+ MSG_BATTLEFIELD_MSG_NOT_PALTYBOSS = 0x86e,
+/*20120314 to latest
+[접속되어있는 파티인원수가 많습니다.]
+[Too many party members online.]
+20130807 to 20130814
+[파티장만 신청 가능합니다.]
+[Only party leader can apply.]
+*/
+ MSG_BATTLEFIELD_MSG_OVER_PARTYMEMBER = 0x86f,
+/*20120314 to latest
+[길드에 먼저 가입하셔야 합니다.]
+[You must be in a guild.]
+20130807 to 20130814
+[접속되어있는 파티인원수가 많습니다.]
+[Too many party members online.]
+*/
+ MSG_BATTLEFIELD_MSG_PLZ_GUILDJOIN = 0x870,
+/*20120314 to latest
+[길드장만 신청 가능합니다.]
+[Only guild master can apply.]
+20130807 to 20130814
+[길드에 먼저 가입하셔야 합니다.]
+[You must be in a guild.]
+*/
+ MSG_BATTLEFIELD_MSG_NOT_GUILDBOSS = 0x871,
+/*20120314 to latest
+[접속되어있는 길드인원수가 많습니다.]
+[Too many guild members online.]
+20130807 to 20130814
+[길드장만 신청 가능합니다.]
+[Only guild master can apply.]
+*/
+ MSG_BATTLEFIELD_MSG_OVER_GUILDMEMBER = 0x872,
+/*20120314 to 20120314
+아이템 합치기
+20120320 to latest
+이동예약
+Moving Book
+20130807 to 20130814
+[접속되어있는 길드인원수가 많습니다.]
+[Too many guild members online.]
+*/
+ MSG_RESERVE_CHANGE_CHARACTER_SLOT = 0x873,
+/*20120314 to 20120314
+같은 종류의 아이템을 2개 이상 선택해주세요.
+Two or more of the same type. Please select an item.
+20120320 to latest
+이동
+Move
+20130807 to 20130814
+이동예약
+Moving Book
+*/
+ MSG_CHARACTER_SLOT_CHANGE = 0x874,
+/*20120314 to 20120314
+아이템 합치기에 성공했습니다.
+Item merge is successful.
+20120320 to latest
+이름변경
+Rename
+20130807 to 20130814
+이동
+Move
+*/
+ MSG_CHANGE_CHARACTER_NAME = 0x875,
+/*20120314 to 20120314
+아이템 합치기는 한번에 1종류씩만 가능합니다.
+Combining items will be only one kind at a time.
+20120320 to latest
+Make Character
+20130807 to 20130814
+이름변경
+Rename
+*/
+ MSG_MSG_MAKECHARCTER = 0x876,
+/*20120314 to 20120314
+아이템의 개수가 30000개 초과 했습니다.
+You cannot have more than 30,000 stacked items.
+20120320 to latest
+http://ro.game.gnjoy.com/
+20130807 to 20130814
+Make Character
+*/
+ MSG_UAE_URL = 0x877,
+#endif
+#if PACKETVER >= 20120320
+/*20120320 to latest
+(%s) Server
+20130807 to 20130814
+http://ro.game.gnjoy.com/
+*/
+ MSG_UAE_SERVERSTR = 0x878,
+/*20120320 to 20120328
+아이템 합치기
+20120404 to latest
+아이템 병합(모두선택 Ctrl+클릭)
+Item Merge
+20130807 to 20130814
+(%s) Server
+*/
+ MSG_MERGE_ITEM = 0x879,
+/*20120320 to latest
+같은 종류의 아이템을 2개 이상 선택해주세요.
+Two or more of the same type. Please select an item.
+20130807 to 20130814
+아이템 병합(모두선택 Ctrl+클릭)
+Item Merge
+*/
+ MSG_SELECT_ITEM_TO_MERGE = 0x87a,
+/*20120320 to latest
+아이템 합치기에 성공했습니다.
+Item merge is successful.
+20130807 to 20130814
+같은 종류의 아이템을 2개 이상 선택해주세요.
+Two or more of the same type. Please select an item.
+*/
+ MSG_MERGE_ITEM_SUCCESS = 0x87b,
+/*20120320 to latest
+아이템 합치기는 한번에 1종류씩만 가능합니다.
+Combining items will be only one kind at a time.
+20130807 to 20130814
+아이템 합치기에 성공했습니다.
+Item merge is successful.
+*/
+ MSG_MERGE_ITEM_FAILED_NOT_MERGE = 0x87c,
+/*20120320 to latest
+아이템의 개수가 30000개 초과 했습니다.
+You cannot have more than 30,000 stacked items.
+20130807 to 20130814
+아이템 합치기는 한번에 1종류씩만 가능합니다.
+Combining items will be only one kind at a time.
+*/
+ MSG_MERGE_ITEM_FAILED_MAX_COUNT = 0x87d,
+#endif
+#if PACKETVER >= 20120328
+/*20120328 to latest
+좌로 회전
+Rotate left
+20130807 to 20130814
+아이템의 개수가 30000개 초과 했습니다.
+You cannot have more than 30,000 stacked items.
+*/
+ MSG_CHARACTER_LEFT_ROLL = 0x87e,
+/*20120328 to latest
+우로 회전
+Rotate right
+20130807 to 20130814
+좌로 회전
+Rotate left
+*/
+ MSG_CHARACTER_RIGHT_ROLL = 0x87f,
+/*20120328 to latest
+(%s)님의 이전서버 정보보기
+(%s) to view the old server information
+20130807 to 20130814
+우로 회전
+Rotate right
+*/
+ MSG_VIEW_BEFORE_WORLDINFO = 0x880,
+/*20120328 to latest
+기존 서버 정보
+Existing server information
+20130807 to 20130814
+(%s)님의 이전서버 정보보기
+(%s) to view the old server information
+*/
+ MSG_VIEW_BEFORE_WORLDINFO_TITLE = 0x881,
+/*20120328 to latest
+^ff0000기존 서버 : ^0000ff
+^ff0000Existing server: ^0000ff
+20130807 to 20130814
+기존 서버 정보
+Existing server information
+*/
+ MSG_VIEW_BEFORE_SERVERINFO = 0x882,
+/*20120328 to latest
+^ff0000기존 캐릭명 : ^0000ff
+^ff0000Existing character: ^0000ff
+20130807 to 20130814
+^ff0000기존 서버 : ^0000ff
+^ff0000Existing server: ^0000ff
+*/
+ MSG_VIEW_BEFORE_CHARNAME = 0x883,
+/*20120328 to latest
+공격한 몬스터의 HP가 표시됩니다.
+Show monster HP bar when attacking.
+20130807 to 20130814
+^ff0000기존 캐릭명 : ^0000ff
+^ff0000Existing character: ^0000ff
+*/
+ MSG_MONSTER_HP_ON = 0x884,
+/*20120328 to 20120328
+공격한 몬스터의 HP가 표시되지 않습니다..
+20120404 to latest
+공격한 몬스터의 HP가 표시되지 않습니다.
+Hide monster HP bar when attacking.
+20130807 to 20130814
+공격한 몬스터의 HP가 표시됩니다.
+Show monster HP bar when attacking.
+*/
+ MSG_MONSTER_HP_OFF = 0x885,
+#endif
+#if PACKETVER >= 20120404
+/*20120404 to latest
+병합 가능한 아이템이 존재하지 않습니다
+Merge does not exist as an item
+20130807 to 20130814
+공격한 몬스터의 HP가 표시되지 않습니다.
+Hide monster HP bar when attacking.
+*/
+ MSG_MERGE_ITEM_FAILED_NOT_EXIST = 0x886,
+/*20120404 to latest
+병합 가능한 아이템이 존재하지 않습니다.
+Merge items available does not exist.
+20130807 to 20130814
+병합 가능한 아이템이 존재하지 않습니다
+Merge does not exist as an item
+*/
+ MSG_NOT_EXIST_MERGE_ITEM = 0x887,
+/*20120404 to latest
+진행중
+Act
+20130807 to 20130814
+병합 가능한 아이템이 존재하지 않습니다.
+Merge items available does not exist.
+*/
+ MSG_QUESTUI_TAB_PROCESS = 0x888,
+/*20120404 to latest
+보류중
+Pen
+20130807 to 20130814
+진행중
+Act
+*/
+ MSG_QUESTUI_TAB_HOLD = 0x889,
+/*20120404 to latest
+추천
+Rec
+20130807 to 20130814
+보류중
+Pen
+*/
+ MSG_QUESTUI_TAB_BEST = 0x88a,
+/*20120404 to latest
+에피소드
+Episode
+20130807 to 20130814
+추천
+Rec
+*/
+ MSG_QUESTUI_TAB_EPISODE = 0x88b,
+/*20120404 to latest
+로컬
+Loc
+20130807 to 20130814
+에피소드
+Episode
+*/
+ MSG_QUESTUI_TAB_LOCAL = 0x88c,
+/*20120404 to latest
+이벤트
+Evt
+20130807 to 20130814
+로컬
+Loc
+*/
+ MSG_QUESTUI_TAB_EVENT = 0x88d,
+/*20120404 to latest
+신규
+New
+20130807 to 20130814
+이벤트
+Evt
+*/
+ MSG_QUESTUI_TAB_NEW = 0x88e,
+/*20120404 to latest
+사냥몬스터
+Monsters to kill
+20130807 to 20130814
+신규
+New
+*/
+ MSG_QUESTUI_HUNTMONSTER = 0x88f,
+/*20120404 to latest
+보상아이템
+Rewards
+20130807 to 20130814
+사냥몬스터
+Monsters to kill
+*/
+ MSG_QUESTUI_REWARDITEM = 0x890,
+/*20120404 to latest
+필요아이템
+Required Items
+20130807 to 20130814
+보상아이템
+Rewards
+*/
+ MSG_QUESTUI_NEEDITEM = 0x891,
+/*20120404 to latest
+제한시간
+Time Limit
+20130807 to 20130814
+필요아이템
+Required Items
+*/
+ MSG_QUESTUI_TIMELIMIT = 0x892,
+/*20120404 to latest
+마감시간
+Deadline
+20130807 to 20130814
+제한시간
+Time Limit
+*/
+ MSG_QUESTUI_CLOSINGTIME = 0x893,
+#endif
+#if PACKETVER >= 20120417
+/*20120417 to latest
+검색
+Search
+20130807 to 20130814
+마감시간
+Deadline
+*/
+ MSG_NAVIGATION_SEARCH = 0x894,
+/*20120417 to latest
+목표로 안내
+Navigation
+20130807 to 20130814
+검색
+Search
+*/
+ MSG_NAVIGATION_TARGETGO = 0x895,
+/*20120417 to latest
+길 정보
+Back to Navigation
+20130807 to 20130814
+목표로 안내
+Navigation
+*/
+ MSG_NAVIGATION_ROUTEINFO = 0x896,
+/*20120417 to latest
+검색 정보
+Find Information
+20130807 to 20130814
+길 정보
+Back to Navigation
+*/
+ MSG_NAVIGATION_SEARCHINFO = 0x897,
+/*20120417 to latest
+보기 모드 변경
+Toggle Minimap
+20130807 to 20130814
+검색 정보
+Find Information
+*/
+ MSG_NAVIGATION_VIEWCHANGE = 0x898,
+/*20120417 to 20130109
+안내 지시 색상 변경
+20130115 to latest
+외부 길정보 파일 읽기
+Read Information from External File
+20130807 to 20130814
+보기 모드 변경
+Toggle Minimap
+*/
+ MSG_NAVIGATION_LIGHTCHANGE = 0x899,
+/*20120417 to latest
+종료
+Exit
+20130807 to 20130814
+외부 길정보 파일 읽기
+Read Information from External File
+*/
+ MSG_NAVIGATION_END = 0x89a,
+/*20120417 to latest
+기본 UI로 변경
+Change the Default UI
+20130807 to 20130814
+종료
+Exit
+*/
+ MSG_NAVIGATION_BASE = 0x89b,
+/*20120417 to latest
+간편 UI로 변경
+Change to Default UI
+20130807 to 20130814
+기본 UI로 변경
+Change the Default UI
+*/
+ MSG_NAVIGATION_MINI = 0x89c,
+/*20120417 to latest
+도움말
+Help
+20130807 to 20130814
+간편 UI로 변경
+Change to Default UI
+*/
+ MSG_NAVIGATION_HELP = 0x89d,
+/*20120417 to latest
+ALL
+All
+20130807 to 20130814
+도움말
+Help
+*/
+ MSG_NAVIGATION_ALL = 0x89e,
+/*20120417 to latest
+Map
+20130807 to 20130814
+ALL
+All
+*/
+ MSG_NAVIGATION_MAP = 0x89f,
+/*20120417 to latest
+Npc
+20130807 to 20130814
+Map
+*/
+ MSG_NAVIGATION_NPC = 0x8a0,
+/*20120417 to latest
+Mob
+20130807 to 20130814
+Npc
+*/
+ MSG_NAVIGATION_MOB = 0x8a1,
+/*20120417 to latest
+검색 단어 설정 (Ex: 단어 단어 ...
+Enter search string... (Ex: word word ...)
+20130807 to 20130814
+Mob
+*/
+ MSG_NAVIGATION_SETSTRING = 0x8a2,
+/*20120417 to latest
+Scroll
+20130807 to 20130814
+검색 단어 설정 (Ex: 단어 단어 ...
+Enter search string... (Ex: word word ...)
+*/
+ MSG_NAVIGATION_SCROLL = 0x8a3,
+/*20120417 to latest
+던전이동 스크롤 사용 적용
+Use Scroll?
+20130807 to 20130814
+Scroll
+*/
+ MSG_NAVIGATION_USESCROLL = 0x8a4,
+/*20120417 to latest
+Service
+20130807 to 20130814
+던전이동 스크롤 사용 적용
+Use Scroll?
+*/
+ MSG_NAVIGATION_SERVICE = 0x8a5,
+/*20120417 to latest
+위치 이동 서비스 허용
+Use Kafra Warp?
+20130807 to 20130814
+Service
+*/
+ MSG_NAVIGATION_USESERVICE = 0x8a6,
+/*20120417 to latest
+Plane
+20130807 to 20130814
+위치 이동 서비스 허용
+Use Kafra Warp?
+*/
+ MSG_NAVIGATION_PLANE = 0x8a7,
+/*20120417 to latest
+비공정 이동 적용
+Use Airship?
+20130807 to 20130814
+Plane
+*/
+ MSG_NAVIGATION_USEPLANE = 0x8a8,
+/*20120417 to latest
+>> 목표 정보를 읽지 못함!
+>> Failed to read the target information.
+20130807 to 20130814
+비공정 이동 적용
+Use Airship?
+*/
+ MSG_NAVIGATION_TARGETUNKNOWN = 0x8a9,
+/*20120417 to latest
+<< 안내중 >>
+>> Destination <<
+20130807 to 20130814
+>> 목표 정보를 읽지 못함!
+>> Failed to read the target information.
+*/
+ MSG_NAVIGATION_GOING = 0x8aa,
+/*20120417 to latest
+<< 검색중... >>
+<< Goal >>
+20130807 to 20130814
+<< 안내중 >>
+>> Destination <<
+*/
+ MSG_NAVIGATION_SEARCHING = 0x8ab,
+/*20120417 to latest
+-----------
+20130807 to 20130814
+<< 검색중... >>
+<< Goal >>
+*/
+ MSG_NAVIGATION_UN = 0x8ac,
+/*20120417 to latest
+Navigation
+20130807 to 20130814
+-----------
+*/
+ MSG_NAVIGATION_NAVI = 0x8ad,
+/*20120417 to latest
+== 검색 결과(%d)==
+= Found (%d) ==
+20130807 to 20130814
+Navigation
+*/
+ MSG_NAVIGATION_SEARCHRESULT_D = 0x8ae,
+/*20120417 to latest
+Npc)%s:%s
+20130807 to 20130814
+== 검색 결과(%d)==
+= Found (%d) ==
+*/
+ MSG_NAVIGATION_NPC_S_S = 0x8af,
+/*20120417 to latest
+Mob)%s:%s
+20130807 to 20130814
+Npc)%s:%s
+*/
+ MSG_NAVIGATION_MOB_S_S = 0x8b0,
+/*20120417 to latest
+Map)%s
+20130807 to 20130814
+Mob)%s:%s
+*/
+ MSG_NAVIGATION_MAP_S = 0x8b1,
+/*20120417 to latest
+======== 결과 정보 ==========
+======== Results ==========
+20130807 to 20130814
+Map)%s
+*/
+ MSG_NAVIGATION_RESULTINFO = 0x8b2,
+/*20120417 to latest
+거리 : %d Sell %d WarpMove
+Dist %d Cell %d WarpMove
+20130807 to 20130814
+======== 결과 정보 ==========
+======== Results ==========
+*/
+ MSG_NAVIGATION_LENGTH = 0x8b3,
+/*20120417 to latest
+목표맵: %s(%s)
+Coords %s(%s)
+20130807 to 20130814
+거리 : %d Sell %d WarpMove
+Dist %d Cell %d WarpMove
+*/
+ MSG_NAVIGATION_TARGETMAP_S_S = 0x8b4,
+/*20120417 to latest
+목표 : %s(%d, %d)
+Goal:%s (%d,%d)
+20130807 to 20130814
+목표맵: %s(%s)
+Coords %s(%s)
+*/
+ MSG_NAVIGATION_TARGET_S_D_D = 0x8b5,
+/*20120417 to latest
+보스
+Boss
+20130807 to 20130814
+목표 : %s(%d, %d)
+Goal:%s (%d,%d)
+*/
+ MSG_NAVIGATION_BOSS = 0x8b6,
+/*20120417 to latest
+일반
+General
+20130807 to 20130814
+보스
+Boss
+*/
+ MSG_NAVIGATION_NORMAL = 0x8b7,
+/*20120417 to latest
+목표 : %s(%s)
+Goal:
+20130807 to 20130814
+일반
+General
+*/
+ MSG_NAVIGATION_TARGET_S_S = 0x8b8,
+/*20120417 to latest
+목표: (%d, %d)
+Goal: (%d, %d)
+20130807 to 20130814
+목표 : %s(%s)
+Goal:
+*/
+ MSG_NAVIGATION_TARGET_D_D = 0x8b9,
+/*20120417 to latest
+======= 길 안내 정보 =======
+======= Guidance =======
+20130807 to 20130814
+목표: (%d, %d)
+Goal: (%d, %d)
+*/
+ MSG_NAVIGATION_GOINFO = 0x8ba,
+/*20120417 to latest
+%2d) Item:%s => %s 사용!
+%2d) Item:%s => %s Use!
+20130807 to 20130814
+======= 길 안내 정보 =======
+======= Guidance =======
+*/
+ MSG_NAVIGATION_ITEM_S_S = 0x8bb,
+/*20120417 to latest
+%2d) %s(%d,%d)=>(%d,%d)
+20130807 to 20130814
+%2d) Item:%s => %s 사용!
+%2d) Item:%s => %s Use!
+*/
+ MSG_NAVIGATION_D_S_D_D_D_D = 0x8bc,
+/*20120417 to latest
+E%2d) %s(%d,%d)=>(%d,%d)
+20130807 to 20130814
+%2d) %s(%d,%d)=>(%d,%d)
+*/
+ MSG_NAVIGATION_E_D_S_D_D_D_D = 0x8bd,
+/*20120417 to latest
+E%2d) %s
+20130807 to 20130814
+E%2d) %s(%d,%d)=>(%d,%d)
+*/
+ MSG_NAVIGATION_E_D_S = 0x8be,
+/*20120417 to latest
+안내중 입니다! 종료 하시겠습니까?
+Do you want to cancel navigation?
+20130807 to 20130814
+E%2d) %s
+*/
+ MSG_NAVIGATION_GOEXIT = 0x8bf,
+/*20120417 to latest
+내비게이션 도움말
+How to Use Navigation
+20130807 to 20130814
+안내중 입니다! 종료 하시겠습니까?
+Do you want to cancel navigation?
+*/
+ MSG_NAVIGATION_HELPTITLE = 0x8c0,
+/*20120417 to latest
+------------------- 명령어 --------------------
+------------------- Instruction --------------------
+20130807 to 20130814
+내비게이션 도움말
+How to Use Navigation
+*/
+ MSG_NAVIGATION_HELP1 = 0x8c1,
+/*20120417 to latest
+1. /navigation /navi
+1) /Navigation or /navi
+20130807 to 20130814
+------------------- 명령어 --------------------
+------------------- Instruction --------------------
+*/
+ MSG_NAVIGATION_HELP2 = 0x8c2,
+/*20120417 to 20120417
+ ex)/navi prontera 100 100 -> 맵이름, 100, 100
+20120424 to latest
+ ex)/navi prontera 100/100 -> 맵이름, 100/100
+ex) /navi prontera 100 100 -> /navi "MAPNAME", 100, 100
+20130807 to 20130814
+1. /navigation /navi
+1) /Navigation or /navi
+*/
+ MSG_NAVIGATION_HELP3 = 0x8c3,
+/*20120417 to 20120417
+2. /navigation2 /navi2
+ex) /navi2 prontera 100 111
+20120424 to latest
+ 기본 명령어는 제니, 비공정 검색을 기본으로 합니다.
+2) /Navigation2 or /navi2
+20130807 to 20130814
+ ex)/navi prontera 100/100 -> 맵이름, 100/100
+ex) /navi prontera 100 100 -> /navi "MAPNAME", 100, 100
+*/
+ MSG_NAVIGATION_HELP4 = 0x8c4,
+/*20120417 to 20120417
+ ex) /navi2 prontera 100090 111
+20120424 to latest
+2. /navigation2 /navi2
+ex) /navi2 prontera 100 111
+20130807 to 20130814
+ 기본 명령어는 제니, 비공정 검색을 기본으로 합니다.
+2) /Navigation2 or /navi2
+*/
+ MSG_NAVIGATION_HELP5 = 0x8c5,
+/*20120417 to 20120417
+-> 맵이름, 위치(100 90), scrool/ zeny/ plane (1:사용함 0: 사용안함)
+20120424 to latest
+ ex) /navi2 prontera 100/100 1/1/1
+-> MAPNAME location (100 90), Scroll | Zeny | Plane (1: Enable or 0: Disable)
+20130807 to 20130814
+2. /navigation2 /navi2
+ex) /navi2 prontera 100 111
+*/
+ MSG_NAVIGATION_HELP6 = 0x8c6,
+/*20120417 to 20120417
+※ /navi2 의 경우 반드시 위치 좌표를 붙여서 3 자리로 적어야 한다
+20120424 to latest
+-> 맵이름, 위치(100/100), scrool/zeny/plane (1:사용함 0: 사용안함)
+-> /navi2 goes with the case with location coordinates. They must be no less than 3 characters
+20130807 to 20130814
+ ex) /navi2 prontera 100/100 1/1/1
+-> MAPNAME location (100 90), Scroll | Zeny | Plane (1: Enable or 0: Disable)
+*/
+ MSG_NAVIGATION_HELP7 = 0x8c7,
+/*20120417 to 20120417
+3. /$$all 모든 항목 출력 (Type 구분 항목으로 출력 종류 구분 가능.)
+20120424 to latest
+3. $$all 모든 항목 출력 (Type 구분 항목으로 출력 종류 구분 가능.)
+3) /$$ Output all the items (Can take a while...)
+20130807 to 20130814
+-> 맵이름, 위치(100/100), scrool/zeny/plane (1:사용함 0: 사용안함)
+-> /navi2 goes with the case with location coordinates. They must be no less than 3 characters
+*/
+ MSG_NAVIGATION_HELP8 = 0x8c8,
+/*20120417 to 20120417
+4. /$$lv30 해당 레벨의 몬스터 출력
+20120424 to latest
+4. $$lv30 해당 레벨의 몬스터 출력
+4) /$$ Lv30 monsters are placed in the output
+20130807 to 20130814
+3. $$all 모든 항목 출력 (Type 구분 항목으로 출력 종류 구분 가능.)
+3) /$$ Output all the items (Can take a while...)
+*/
+ MSG_NAVIGATION_HELP9 = 0x8c9,
+/*20120417 to 20120417
+5. /$$lv20~30 해당 레벨 범위의 몬스터 출력
+20120424 to latest
+5. $$lv20~30 해당 레벨 범위의 몬스터 출력
+5) /$$ Lv20~30 monsters in that level range are placed in the output
+20130807 to 20130814
+4. $$lv30 해당 레벨의 몬스터 출력
+4) /$$ Lv30 monsters are placed in the output
+*/
+ MSG_NAVIGATION_HELP10 = 0x8ca,
+/*20120417 to latest
+------------------- 설명 --------------------
+------------------- Description --------------------
+20130807 to 20130814
+5. $$lv20~30 해당 레벨 범위의 몬스터 출력
+5) /$$ Lv20~30 monsters in that level range are placed in the output
+*/
+ MSG_NAVIGATION_HELP11 = 0x8cb,
+/*20120417 to latest
+1.검색 종류는 전체, 맵, Npc, 몬스터 으로 분류 된다.
+1) One can search for monsters, npcs, maps, or all at once
+20130807 to 20130814
+------------------- 설명 --------------------
+------------------- Description --------------------
+*/
+ MSG_NAVIGATION_HELP12 = 0x8cc,
+/*20120417 to latest
+2.명령어로 검색한다. 규칙은 검색 하려는 문자열이 모두 포함된 정보를 출력 한다.
+2) You can press the search button to get results. It will out put the results depending on what rule you choose
+20130807 to 20130814
+1.검색 종류는 전체, 맵, Npc, 몬스터 으로 분류 된다.
+1) One can search for monsters, npcs, maps, or all at once
+*/
+ MSG_NAVIGATION_HELP13 = 0x8cd,
+/*20120417 to latest
+ ex) 프론 카프 -> 검색 결과 프론테라의 카프라를 모두 출력 한다.
+ex) Drop down box -> Select "Npc", then type in the box "Kafra". Results will now be displayed
+20130807 to 20130814
+2.명령어로 검색한다. 규칙은 검색 하려는 문자열이 모두 포함된 정보를 출력 한다.
+2) You can press the search button to get results. It will out put the results depending on what rule you choose
+*/
+ MSG_NAVIGATION_HELP14 = 0x8ce,
+/*20120417 to latest
+3.리스트에서 항목을 선택하면 정보가 출력된다.
+3) When you select an item from a list, information about it are displayed.
+20130807 to 20130814
+ ex) 프론 카프 -> 검색 결과 프론테라의 카프라를 모두 출력 한다.
+ex) Drop down box -> Select "Npc", then type in the box "Kafra". Results will now be displayed
+*/
+ MSG_NAVIGATION_HELP15 = 0x8cf,
+/*20120417 to latest
+ 출력 되고 있는 목표가 있을때 안내 버튼을 클릭하면 해당 목표로 길을 안내 한다.
+-> When button is clicked, it will point you towards your destination if available
+20130807 to 20130814
+3.리스트에서 항목을 선택하면 정보가 출력된다.
+3) When you select an item from a list, information about it are displayed.
+*/
+ MSG_NAVIGATION_HELP16 = 0x8d0,
+/*20120417 to latest
+4.scrool/ zeny/ plane 상자를 원하는 만큼 체크하여 더 빠른 경로를 안내 받을 수 있다.
+4) Scroll | Zeny | Plane options can be checked to find a faster route
+20130807 to 20130814
+ 출력 되고 있는 목표가 있을때 안내 버튼을 클릭하면 해당 목표로 길을 안내 한다.
+-> When button is clicked, it will point you towards your destination if available
+*/
+ MSG_NAVIGATION_HELP17 = 0x8d1,
+/*20120417 to latest
+5.안내 버튼이 눌러지면 결과 리스트창은 길안내 리스트 장으로 변경 된다.
+5) Guide button is pressed, the result list window displays where routes can change direction
+20130807 to 20130814
+4.scrool/ zeny/ plane 상자를 원하는 만큼 체크하여 더 빠른 경로를 안내 받을 수 있다.
+4) Scroll | Zeny | Plane options can be checked to find a faster route
+*/
+ MSG_NAVIGATION_HELP18 = 0x8d2,
+/*20120417 to latest
+6.검색 리스트창 하단 버튼을 이용하여
+6) Using the button below, search results can be found
+20130807 to 20130814
+5.안내 버튼이 눌러지면 결과 리스트창은 길안내 리스트 장으로 변경 된다.
+5) Guide button is pressed, the result list window displays where routes can change direction
+*/
+ MSG_NAVIGATION_HELP19 = 0x8d3,
+/*20120417 to latest
+ [결과 리스트 창] <-> [길 안내 정보 창] 으로 보기 모드 변경 가능하다.
+-> [Results List Window] <-> [View Modes can be switched]
+20130807 to 20130814
+6.검색 리스트창 하단 버튼을 이용하여
+6) Using the button below, search results can be found
+*/
+ MSG_NAVIGATION_HELP20 = 0x8d4,
+/*20120417 to latest
+Level:%d (보스)
+Level:%d (Boss)
+20130807 to 20130814
+ [결과 리스트 창] <-> [길 안내 정보 창] 으로 보기 모드 변경 가능하다.
+-> [Results List Window] <-> [View Modes can be switched]
+*/
+ MSG_NAVIGATION_LEVEL_D_BOSS = 0x8d5,
+/*20120417 to latest
+Level:%d (일반)
+Level:%d (Mob)
+20130807 to 20130814
+Level:%d (보스)
+Level:%d (Boss)
+*/
+ MSG_NAVIGATION_LEVEL_D_NORMAL = 0x8d6,
+/*20120417 to latest
+수속성%d
+Water %d
+20130807 to 20130814
+Level:%d (일반)
+Level:%d (Mob)
+*/
+ MSG_NAVIGATION_PROPERTY1 = 0x8d7,
+/*20120417 to latest
+지속성%d
+Earth %d
+20130807 to 20130814
+수속성%d
+Water %d
+*/
+ MSG_NAVIGATION_PROPERTY2 = 0x8d8,
+/*20120417 to latest
+화속성%d
+Fire %d
+20130807 to 20130814
+지속성%d
+Earth %d
+*/
+ MSG_NAVIGATION_PROPERTY3 = 0x8d9,
+/*20120417 to latest
+풍속성%d
+Wind %d
+20130807 to 20130814
+화속성%d
+Fire %d
+*/
+ MSG_NAVIGATION_PROPERTY4 = 0x8da,
+/*20120417 to latest
+독속성%d
+Poison %d
+20130807 to 20130814
+풍속성%d
+Wind %d
+*/
+ MSG_NAVIGATION_PROPERTY5 = 0x8db,
+/*20120417 to latest
+성속성%d
+Holy %d
+20130807 to 20130814
+독속성%d
+Poison %d
+*/
+ MSG_NAVIGATION_PROPERTY6 = 0x8dc,
+/*20120417 to latest
+암속성%d
+Shadow %d
+20130807 to 20130814
+성속성%d
+Holy %d
+*/
+ MSG_NAVIGATION_PROPERTY7 = 0x8dd,
+/*20120417 to latest
+염속성%d
+Ghost %d
+20130807 to 20130814
+암속성%d
+Shadow %d
+*/
+ MSG_NAVIGATION_PROPERTY8 = 0x8de,
+/*20120417 to latest
+언데드%d
+Undead %d
+20130807 to 20130814
+염속성%d
+Ghost %d
+*/
+ MSG_NAVIGATION_PROPERTY9 = 0x8df,
+/*20120417 to latest
+무속성%d
+Neutral %d
+20130807 to 20130814
+언데드%d
+Undead %d
+*/
+ MSG_NAVIGATION_PROPERTY0 = 0x8e0,
+/*20120417 to latest
+중형
+Medium
+20130807 to 20130814
+무속성%d
+Neutral %d
+*/
+ MSG_NAVIGATION_SCALE1 = 0x8e1,
+/*20120417 to latest
+대형
+Large
+20130807 to 20130814
+중형
+Medium
+*/
+ MSG_NAVIGATION_SCALE2 = 0x8e2,
+/*20120417 to latest
+소형
+Small
+20130807 to 20130814
+대형
+Large
+*/
+ MSG_NAVIGATION_SCALE0 = 0x8e3,
+/*20120417 to latest
+불사형
+Undead
+20130807 to 20130814
+소형
+Small
+*/
+ MSG_NAVIGATION_RACE1 = 0x8e4,
+/*20120417 to latest
+동물형
+Brute
+20130807 to 20130814
+불사형
+Undead
+*/
+ MSG_NAVIGATION_RACE2 = 0x8e5,
+/*20120417 to latest
+식물형
+Plant
+20130807 to 20130814
+동물형
+Brute
+*/
+ MSG_NAVIGATION_RACE3 = 0x8e6,
+/*20120417 to latest
+곤충형
+Insect
+20130807 to 20130814
+식물형
+Plant
+*/
+ MSG_NAVIGATION_RACE4 = 0x8e7,
+/*20120417 to latest
+어패형
+Fish
+20130807 to 20130814
+곤충형
+Insect
+*/
+ MSG_NAVIGATION_RACE5 = 0x8e8,
+/*20120417 to latest
+악마형
+Demon
+20130807 to 20130814
+어패형
+Fish
+*/
+ MSG_NAVIGATION_RACE6 = 0x8e9,
+/*20120417 to latest
+인간형
+Demi-Human
+20130807 to 20130814
+악마형
+Demon
+*/
+ MSG_NAVIGATION_RACE7 = 0x8ea,
+/*20120417 to latest
+천사형
+Angel
+20130807 to 20130814
+인간형
+Demi-Human
+*/
+ MSG_NAVIGATION_RACE8 = 0x8eb,
+/*20120417 to latest
+용족
+Dragon
+20130807 to 20130814
+천사형
+Angel
+*/
+ MSG_NAVIGATION_RACE9 = 0x8ec,
+/*20120417 to latest
+무형
+Formless
+20130807 to 20130814
+용족
+Dragon
+*/
+ MSG_NAVIGATION_RACE0 = 0x8ed,
+/*20120417 to latest
+%s 이동 클릭
+Click to move %s
+20130807 to 20130814
+무형
+Formless
+*/
+ MSG_NAVIGATION_MOVECLICK = 0x8ee,
+/*20120417 to latest
+Npc 이동 서비스 이용
+Move to the Kafra Service Npc
+20130807 to 20130814
+%s 이동 클릭
+Click to move %s
+*/
+ MSG_NAVIGATION_NPCMOVE = 0x8ef,
+/*20120417 to latest
+NPC 클릭
+Click the NPC
+20130807 to 20130814
+Npc 이동 서비스 이용
+Move to the Kafra Service Npc
+*/
+ MSG_NAVIGATION_NPCCLICK = 0x8f0,
+/*20120417 to latest
+%s 이동
+Move %s
+20130807 to 20130814
+NPC 클릭
+Click the NPC
+*/
+ MSG_NAVIGATION_S_MOVE = 0x8f1,
+/*20120417 to latest
+비공정 이동
+Move to the Airship Service
+20130807 to 20130814
+%s 이동
+Move %s
+*/
+ MSG_NAVIGATION_PLANEMOVE = 0x8f2,
+/*20120417 to latest
+워프 이용
+By Warp
+20130807 to 20130814
+비공정 이동
+Move to the Airship Service
+*/
+ MSG_NAVIGATION_WARPUSE = 0x8f3,
+/*20120417 to latest
+도착점 : ( %d %d )
+End Points: (%d %d)
+20130807 to 20130814
+워프 이용
+By Warp
+*/
+ MSG_NAVIGATION_TARGETPOINT_D_D = 0x8f4,
+/*20120417 to 20170517
+네비게이션이 지원 되지 않는 지역 입니다.
+20130807 to 20130814
+도착점 : ( %d %d )
+End Points: (%d %d)
+20170524 to latest
+내비게이션이 지원 되지 않는 지역 입니다.
+That does not support the navigation area
+*/
+ MSG_NAVIGATION_UNKNOWNMAP = 0x8f5,
+/*20120417 to latest
+찾고자 하는 목적이 불분명 합니다.
+The purpose is unclear
+20130807 to 20130814
+네비게이션이 지원 되지 않는 지역 입니다.
+*/
+ MSG_NAVIGATION_RS_UNKNOWN = 0x8f6,
+/*20120417 to latest
+매칭이 맞지 않는 맵이다.
+Does not meet the map requirement
+20130807 to 20130814
+찾고자 하는 목적이 불분명 합니다.
+The purpose is unclear
+*/
+ MSG_NAVIGATION_RS_NOTSAMEMAP = 0x8f7,
+/*20120417 to latest
+출발 지역에 대한 정보 설정 실패!
+Information Failure | Change settings
+20130807 to 20130814
+매칭이 맞지 않는 맵이다.
+Does not meet the map requirement
+*/
+ MSG_NAVIGATION_RS_FAILSTARTDATA = 0x8f8,
+/*20120417 to latest
+도착 지점에 대한 정보 설정 실패!
+Failed to set info for location!
+20130807 to 20130814
+출발 지역에 대한 정보 설정 실패!
+Information Failure | Change settings
+*/
+ MSG_NAVIGATION_RS_FAILTARGET = 0x8f9,
+/*20120417 to latest
+길 찾기 실패
+Failed to find a path
+20130807 to 20130814
+도착 지점에 대한 정보 설정 실패!
+Failed to set info for location!
+*/
+ MSG_NAVIGATION_RS_FAILROUTE = 0x8fa,
+/*20120417 to latest
+플레이어 위치 찾기 실패
+Failed to find players
+20130807 to 20130814
+길 찾기 실패
+Failed to find a path
+*/
+ MSG_NAVIGATION_RS_FAILPLAYER = 0x8fb,
+/*20120417 to latest
+내비게이션에 정보가 없습니다.
+No Information
+20130807 to 20130814
+플레이어 위치 찾기 실패
+Failed to find players
+*/
+ MSG_NAVIGATION_RS_NODATA = 0x8fc,
+/*20120417 to latest
+해당 맵은 길찾기가 지원 되지 않는 맵입니다.
+Map doesn't support directions
+20130807 to 20130814
+내비게이션에 정보가 없습니다.
+No Information
+*/
+ MSG_NAVIGATION_RS_MAPNOTNAVIGATION = 0x8fd,
+/*20120417 to latest
+목표를 지정 하시기 바랍니다.
+Please specify target goals.
+20130807 to 20130814
+해당 맵은 길찾기가 지원 되지 않는 맵입니다.
+Map doesn't support directions
+*/
+ MSG_NAVIGATION_RS_FAILTARGETROUTE = 0x8fe,
+/*20120417 to latest
+도착.
+Found
+20130807 to 20130814
+목표를 지정 하시기 바랍니다.
+Please specify target goals.
+*/
+ MSG_NAVIGATION_RS_SUCCESS = 0x8ff,
+/*20120417 to latest
+길 안내가 시작 되었습니다.
+Directions were started
+20130807 to 20130814
+도착.
+Found
+*/
+ MSG_NAVIGATION_RS_START = 0x900,
+/*20120417 to latest
+찾고자 하는 몬스터가 있는 맵 입니다.
+Is the map that your looking for mob
+20130807 to 20130814
+길 안내가 시작 되었습니다.
+Directions were started
+*/
+ MSG_NAVIGATION_RS_MOBTARGETMAP = 0x901,
+/*20120417 to latest
+찾고자 하는 맵이 해당 맵 입니다.
+Map appears on the guide you are looking for
+20130807 to 20130814
+찾고자 하는 몬스터가 있는 맵 입니다.
+Is the map that your looking for mob
+*/
+ MSG_NAVIGATION_RS_TARGETMAP = 0x902,
+/*20120417 to latest
+아이템을 사용하여 이동하여 주시기 바랍니다.
+Please navigate using the item
+20130807 to 20130814
+찾고자 하는 맵이 해당 맵 입니다.
+Map appears on the guide you are looking for
+*/
+ MSG_NAVIGATION_RS_SCROLL = 0x903,
+/*20120417 to latest
+안내하는 위치로 이동하시기 바랍니다.
+Please follow the instruction to reach your destination.
+20130807 to 20130814
+아이템을 사용하여 이동하여 주시기 바랍니다.
+Please navigate using the item
+*/
+ MSG_NAVIGATION_RS_ROUTE_SUCCESS = 0x904,
+/*20120417 to latest
+목표 맵에 도착하였습니다.
+Arrived at the target map
+20130807 to 20130814
+안내하는 위치로 이동하시기 바랍니다.
+Please follow the instruction to reach your destination.
+*/
+ MSG_NAVIGATION_RS_MAPTMAP_SUCCESS = 0x905,
+/*20120417 to latest
+찾고자 하는 Npc가 있는 맵에 도착 하였습니다. Npc로 이동하시기 바랍니다.
+Arrived on the map that has the Npc your looking for. Go to that NPC
+20130807 to 20130814
+목표 맵에 도착하였습니다.
+Arrived at the target map
+*/
+ MSG_NAVIGATION_RS_NPCTMAP_SUCCESS = 0x906,
+/*20120417 to latest
+찾고자 하는 Mob이 서식하는 맵에 도착 하였습니다.
+You have arrived at the mob you were looking for
+20130807 to 20130814
+찾고자 하는 Npc가 있는 맵에 도착 하였습니다. Npc로 이동하시기 바랍니다.
+Arrived on the map that has the Npc your looking for. Go to that NPC
+*/
+ MSG_NAVIGATION_RS_MOBTMAP_SUCCESS = 0x907,
+/*20120417 to latest
+이전과 동일한 목표 입니다.
+You have reached your goal
+20130807 to 20130814
+찾고자 하는 Mob이 서식하는 맵에 도착 하였습니다.
+You have arrived at the mob you were looking for
+*/
+ MSG_NAVIGATION_RS_POSTMAP_SUCCESS = 0x908,
+/*20120417 to latest
+가리키는 방향으로 가시기 바랍니다.
+Please go to indicated direction.
+20130807 to 20130814
+이전과 동일한 목표 입니다.
+You have reached your goal
+*/
+ MSG_NAVIGATION_RS_SAMETARGET = 0x909,
+/*20120417 to latest
+목표가 여기 입니다.
+The goal has been reached
+20130807 to 20130814
+가리키는 방향으로 가시기 바랍니다.
+Please go to indicated direction.
+*/
+ MSG_NAVIGATION_RS_HERE = 0x90a,
+/*20120417 to latest
+Navigation >: %s
+20130807 to 20130814
+목표가 여기 입니다.
+The goal has been reached
+*/
+ MSG_NAVIGATION_PRINT_S = 0x90b,
+/*20120417 to latest
+Navigation >: 안내하는 %s(을)를 이용하여
+Navigation >: Talk to Guide "%s" (A)
+20130807 to 20130814
+Navigation >: %s
+*/
+ MSG_NAVIGATION_PRINT_GO_S = 0x90c,
+/*20120417 to latest
+Navigation >: 맵(%s)으로 이동하시기 바랍니다
+Navigation >: Move to (%s) map
+20130807 to 20130814
+Navigation >: 안내하는 %s(을)를 이용하여
+Navigation >: Talk to Guide "%s" (A)
+*/
+ MSG_NAVIGATION_PRINT_MAP_S = 0x90d,
+/*20120417 to latest
+Navigation >: 맵(%s)을 선택하여 이동 하시기 바랍니다
+Navigation >: Choose (%s) Map from Kafra
+20130807 to 20130814
+Navigation >: 맵(%s)으로 이동하시기 바랍니다
+Navigation >: Move to (%s) map
+*/
+ MSG_NAVIGATION_PRINT_SELECTMAP_S = 0x90e,
+/*20120417 to latest
+Navigation >: 비공정으로 이동 하시기 바랍니다
+Navigation >: Please go to the AirShip
+20130807 to 20130814
+Navigation >: 맵(%s)을 선택하여 이동 하시기 바랍니다
+Navigation >: Choose (%s) Map from Kafra
+*/
+ MSG_NAVIGATION_PRINT_PLANE = 0x90f,
+/*20120417 to latest
+Navigation >: 워프를 이용하여 다음 지역으로 이동하시기 바랍니다.
+Navigation >: Get to your destination by using WarpPortal
+20130807 to 20130814
+Navigation >: 비공정으로 이동 하시기 바랍니다
+Navigation >: Please go to the AirShip
+*/
+ MSG_NAVIGATION_PRINT_WARP = 0x910,
+/*20120417 to latest
+Item:
+20130807 to 20130814
+Navigation >: 워프를 이용하여 다음 지역으로 이동하시기 바랍니다.
+Navigation >: Get to your destination by using WarpPortal
+*/
+ MSG_NAVIGATION_PRINT_ITEM = 0x911,
+/*20120417 to latest
+$$
+20130807 to 20130814
+Item:
+*/
+ MSG_NAVIGATION_ZZ = 0x912,
+/*20120417 to latest
+$$lv
+20130807 to 20130814
+$$
+*/
+ MSG_NAVIGATION_ZZLV = 0x913,
+/*20120417 to latest
+~
+20130807 to 20130814
+$$lv
+*/
+ MSG_NAVIGATION_ZZLIMIT = 0x914,
+/*20120417 to latest
+$$all
+20130807 to 20130814
+~
+*/
+ MSG_NAVIGATION_ZZALL = 0x915,
+#endif
+#if PACKETVER >= 20120424
+/*20120424 to latest
+구매 확인서
+Confirm Deal
+20130807 to 20130814
+$$all
+*/
+ MSG_SHOP_ITEM_BAY_TITLE = 0x916,
+/*20120424 to latest
+구입하려는 아이템들의 총가격은
+Below is the total cost:
+20130807 to 20130814
+구매 확인서
+Confirm Deal
+*/
+ MSG_SHOP_ITEM_BAY_MAG1 = 0x917,
+/*20120424 to latest
+Zeny 입니다.
+ Zeny to complete the transaction.
+20130807 to 20130814
+구입하려는 아이템들의 총가격은
+Below is the total cost:
+*/
+ MSG_SHOP_ITEM_BAY_MAG2 = 0x918,
+/*20120424 to latest
+구입하시겠습니까?
+Press buy to confirm.
+20130807 to 20130814
+Zeny 입니다.
+ Zeny to complete the transaction.
+*/
+ MSG_SHOP_ITEM_BAY_MAG3 = 0x919,
+#endif
+#if PACKETVER >= 20120503
+/*20120503 to 20120529
+%.3f%% (PC방 %.3f%% + TPLUS %.3f%% + 프리미엄 %.3f%% + %s서버 %.3f%%)
+20120604 to latest
+%.1f%% (PC방 %.1f%% + TPLUS %.1f%% + 프리미엄 %.1f%% + %s서버 %.1f%%)
+%.1f% (PCRoom %.1f% + TPLUS %.1f% + Premium %.1f% + %sServer %.1f%)
+20130807 to 20130814
+구입하시겠습니까?
+Press buy to confirm.
+*/
+ MSG_BASIC_EXP_MSG2 = 0x91a,
+#endif
+#if PACKETVER >= 20120508
+/*20120508 to latest
+카드 북
+Card Book
+20130807 to 20130814
+%.1f%% (PC방 %.1f%% + TPLUS %.1f%% + 프리미엄 %.1f%% + %s서버 %.1f%%)
+%.1f% (PCRoom %.1f% + TPLUS %.1f% + Premium %.1f% + %sServer %.1f%)
+*/
+ MSG_CARDWIN = 0x91b,
+#endif
+#if PACKETVER >= 20120515
+/*20120515 to latest
+%d%% [ ( 기본 100%% + %s서버 %d%% ) * 활성 %.1f ]
+%d%% [ ( Basic 100%% + %sServer %d%% ) * Active %.1f ]
+20130807 to 20130814
+카드 북
+Card Book
+*/
+ MSG_PERSONAL_INFORMATION_MSG_CHN = 0x91c,
+/*20120515 to latest
+%d%% [ 기본 100%% + %s서버 %d%% ]
+%d%% [ Basic 100%% + %sServer %d%% ]
+20130807 to 20130814
+%d%% [ ( 기본 100%% + %s서버 %d%% ) * 활성 %.1f ]
+%d%% [ ( Basic 100%% + %sServer %d%% ) * Active %.1f ]
+*/
+ MSG_PERSONAL_INFORMATION_MSG_CHN_DEATH = 0x91d,
+#endif
+#if PACKETVER >= 20120522
+/*20120522 to latest
+이곳은 PK 지역입니다. 미성년자는 자발적으로 떠나주시기 바랍니다.
+This is PK region. Minors,Please leave immediately.
+20130807 to 20130814
+%d%% [ 기본 100%% + %s서버 %d%% ]
+%d%% [ Basic 100%% + %sServer %d%% ]
+*/
+ MSG_CAUTION_PKZONE = 0x91e,
+/*20120522 to latest
+피로도
+Fatigue
+20130807 to 20130814
+이곳은 PK 지역입니다. 미성년자는 자발적으로 떠나주시기 바랍니다.
+This is PK region. Minors,Please leave immediately.
+*/
+ MSG_FATIGUE = 0x91f,
+/*20120522 to 20120529
+건강상태 이며 게임수익은 100%%입니다.
+20120604 to latest
+건강상태 이며 게임수익은 100%입니다.
+Health and gaming revenue is 100%%.
+20130807 to 20130814
+피로도
+Fatigue
+*/
+ MSG_FATIGUE_LEVEL_ZERO = 0x920,
+/*20120522 to 20120529
+지금은 피로상태이므로 손님의 게임수익은 50%% 떨어집니다. 건강을 위하여 적당한 휴식 바랍니다.
+20120604 to latest
+지금은 피로상태이므로 손님의 게임수익은 50% 떨어집니다. 건강을 위하여 적당한 휴식 바랍니다.
+Fatigue because it is now a guest of the gaming revenue is down 50 percent.Hope for the proper health
+20130807 to 20130814
+건강상태 이며 게임수익은 100%입니다.
+Health and gaming revenue is 100%%.
+*/
+ MSG_FATIGUE_LEVEL_HALF = 0x921,
+/*20120522 to 20120529
+지금은 비건강상태이므로 손님의 건강을 위하여 게임오프라인을 원합니다. 계속 온라인상태에 있으면 건강에 손상을 주므로 게임 수익은 0%%으로 떨어지며 게임 오프라인 5시간후에 다시 회복됩니다.
+20120604 to latest
+지금은 비건강상태이므로 손님의 건강을 위하여 게임오프라인을 원합니다. 계속 온라인상태에 있으면 건강에 손상을 주므로 게임 수익은 0%으로 떨어지며 게임 오프라인 5시간후에 다시 회복됩니다.
+Now because it is a non-health to the health of the guests want to offline games. If you still are online gaming revenue because the damage to the health of the game falls to 0% again after 5 hours will be restored offline.
+20130807 to 20130814
+지금은 피로상태이므로 손님의 게임수익은 50% 떨어집니다. 건강을 위하여 적당한 휴식 바랍니다.
+Fatigue because it is now a guest of the gaming revenue is down 50 percent.Hope for the proper health
+*/
+ MSG_FATIGUE_LEVEL_FULL = 0x922,
+/*20120522 to latest
+접속시간 %d 분이 되었습니다.
+Online since %d minutes
+20130807 to 20130814
+지금은 비건강상태이므로 손님의 건강을 위하여 게임오프라인을 원합니다. 계속 온라인상태에 있으면 건강에 손상을 주므로 게임 수익은 0%으로 떨어지며 게임 오프라인 5시간후에 다시 회복됩니다.
+Now because it is a non-health to the health of the guests want to offline games. If you still are online gaming revenue because the damage to the health of the game falls to 0% again after 5 hours will be restored offline.
+*/
+ MSG_FATIGUE_MESSAGE0 = 0x923,
+/*20120522 to latest
+접속시간 %d 시간이 되었습니다.
+Online Time: %d
+20130807 to 20130814
+접속시간 %d 분이 되었습니다.
+Online since %d minutes
+*/
+ MSG_FATIGUE_MESSAGE1 = 0x924,
+/*20120522 to latest
+접속시간 %d 시간 %d 분이 되었습니다.
+Online since %d hours and %d minutes
+20130807 to 20130814
+접속시간 %d 시간이 되었습니다.
+Online Time: %d
+*/
+ MSG_FATIGUE_MESSAGE2 = 0x925,
+/*20120522 to latest
+/monsterhp : 공격한 몬스터의 HP정보를 표시합니다. On Off
+/monsterhp: Show the hp of attacked monster. On off
+20130807 to 20130814
+접속시간 %d 시간 %d 분이 되었습니다.
+Online since %d hours and %d minutes
+*/
+ MSG_EXPLAIN_MONSTERHP = 0x926,
+#endif
+#if PACKETVER >= 20120529
+/*20120529 to latest
+스킬포인트 :
+Skill Points:
+20130807 to 20130814
+/monsterhp : 공격한 몬스터의 HP정보를 표시합니다. On Off
+/monsterhp: Show the hp of attacked monster. On off
+*/
+ MSG_SKILLPOINT2 = 0x927,
+#endif
+#if PACKETVER >= 20120604
+/*20120604 to latest
+인증서버로 부터의 응답이 없습니다. 다시 시도해 주세요
+There is no response from the authentification server. Please try again
+20130807 to 20130814
+스킬포인트 :
+Skill Points:
+*/
+ MSG_BAN_BILLING_SERVER_ERROR = 0x928,
+#endif
+#if PACKETVER >= 20120612
+/*20120612 to latest
+암호를 변경하여 주시기 바랍니다.
+Please change your password
+20130807 to 20130814
+인증서버로 부터의 응답이 없습니다. 다시 시도해 주세요
+There is no response from the authentification server. Please try again
+*/
+ MSG_REFUSE_CHANGE_PASSWD_FORCE = 0x929,
+/*20120612 to latest
+http://www.ragnarok.co.kr
+20130807 to 20130814
+암호를 변경하여 주시기 바랍니다.
+Please change your password
+*/
+ MSG_REFUSE_CHANGE_PASSWD_SITE = 0x92a,
+/*20120612 to latest
+고객님께서는 현재 접속금지 시간입니다.
+Guest access is prohibited
+20130807 to 20130814
+http://www.ragnarok.co.kr
+*/
+ MSG_PLANNED_TIME_SHUTDOWN = 0x92b,
+/*20120612 to latest
+셧다운제도에 의해 고객님의 게임제한 시간은 %1.2d-%1.2d-%1.2d %1.2d:%1.2d:%1.2d에 게임이 종료될 예정입니다.
+Your System is been Shutdown, %1.2d-%1.2d-%1.2d %1.2d:%1.2d:%1.2d is the end time.
+20130807 to 20130814
+고객님께서는 현재 접속금지 시간입니다.
+Guest access is prohibited
+*/
+ MSG_SHOUTDOWN_TIME = 0x92c,
+#endif
+#if PACKETVER >= 20120626
+/*20120626 to latest
+고객님의 계정은 선택적 셧다운이 적용된 계정이며, 잔여시간은 %1.2d시간 %1.2d분입니다. 게임 이용에 참고해주시기 바랍니다.
+Selected System Shutdown is activated in your account,Time Left: %1.2d hours %1.2d minutes.
+20130807 to 20130814
+셧다운제도에 의해 고객님의 게임제한 시간은 %1.2d-%1.2d-%1.2d %1.2d:%1.2d:%1.2d에 게임이 종료될 예정입니다.
+Your System is been Shutdown, %1.2d-%1.2d-%1.2d %1.2d:%1.2d:%1.2d is the end time.
+*/
+ MSG_PARTIAL_SHOUTDOWN_TIME = 0x92d,
+#endif
+#if PACKETVER >= 20120702
+/*20120702 to latest
+리플레이
+Replay
+20130807 to 20130814
+고객님의 계정은 선택적 셧다운이 적용된 계정이며, 잔여시간은 %1.2d시간 %1.2d분입니다. 게임 이용에 참고해주시기 바랍니다.
+Selected System Shutdown is activated in your account,Time Left: %1.2d hours %1.2d minutes.
+*/
+ MSG_MENU_REPLAYWND = 0x92e,
+/*20120702 to latest
+매크로
+Macro
+20130807 to 20130814
+리플레이
+Replay
+*/
+ MSG_MENU_MACROWND = 0x92f,
+/*20120702 to latest
+Webbrowser
+20130807 to 20130814
+매크로
+Macro
+*/
+ MSG_MENU_WEBBROWSERWND = 0x930,
+/*20120702 to 20170517
+네비게이션
+20130807 to 20130814
+Webbrowser
+20170524 to latest
+내비게이션
+Navigation
+*/
+ MSG_MENU_NAVIGATIONWND = 0x931,
+/*20120702 to latest
+UAEURL
+20130807 to 20130814
+네비게이션
+*/
+ MSG_MENU_UAEURLWND = 0x932,
+/*20120702 to latest
+ 클랜정보
+Clan Information
+20130807 to 20130814
+UAEURL
+*/
+ MSG_CLAN_INFOMANAGE = 0x933,
+/*20120702 to latest
+클랜레벨
+Clan Level
+20130807 to 20130814
+ 클랜정보
+Clan Information
+*/
+ MSG_CLAN_LEVEL = 0x934,
+/*20120702 to latest
+클랜명
+Clan Name
+20130807 to 20130814
+클랜레벨
+Clan Level
+*/
+ MSG_CLAN_NAME = 0x935,
+/*20120702 to latest
+클랜마크
+Clan Mark
+20130807 to 20130814
+클랜명
+Clan Name
+*/
+ MSG_CLAN_MARK = 0x936,
+/*20120702 to latest
+동맹클랜
+Ally Clan
+20130807 to 20130814
+클랜마크
+Clan Mark
+*/
+ MSG_ALLY_CLAN = 0x937,
+/*20120702 to 20130529
+적대길드
+Antagonists
+20130605 to latest
+적대클랜
+Antagonist Clan
+20130807 to 20130814
+동맹클랜
+Ally Clan
+*/
+ MSG_HOSTILITY_CLAN = 0x938,
+/*20120702 to latest
+클랜에게 보냄
+Send to Clan
+20130807 to 20130814
+적대클랜
+Antagonist Clan
+*/
+ MSG_SEND_TO_CLAN = 0x939,
+/*20120702 to latest
+마스터이름
+ClanMaster Name
+20130807 to 20130814
+클랜에게 보냄
+Send to Clan
+*/
+ MSG_CLAN_MASTER_NAME = 0x93a,
+/*20120702 to latest
+조합원수
+Number of Members
+20130807 to 20130814
+마스터이름
+ClanMaster Name
+*/
+ MSG_CLAN_NUM_MEMBER = 0x93b,
+/*20120702 to 20120702
+조합원 평균레벨
+Avg.lvl of Guildsmen
+20120710 to latest
+관리영지
+Castles Owned
+20130807 to 20130814
+조합원수
+Number of Members
+*/
+ MSG_CLAN_MANAGE_LAND = 0x93c,
+/*20120702 to 20130814
+관리영지
+Castles Owned
+20120716 to latest
+클랜 채팅 메시지 표시
+Clan Chat Messages
+*/
+ MSG_VIEW_CLAN_MSG = 0x93d,
+#endif
+#if PACKETVER >= 20120716
+/*20120716 to latest
+충전 페이지로 이동합니다.
+Go to Page Charged.
+20130807 to 20130814
+클랜 채팅 메시지 표시
+Clan Chat Messages
+*/
+ MSG_TWWAB_WARRING = 0x93e,
+/*20120716 to 20120716
+http://ro.game.gnjoy.com/
+20120724 to latest
+https://gfb.gameflier.com/Billing/ingame/index_new.asp?
+20130807 to 20130814
+충전 페이지로 이동합니다.
+Go to Page Charged.
+*/
+ MSG_TWWAB_URL = 0x93f,
+#endif
+#if PACKETVER >= 20120724
+/*20120724 to latest
+캐릭터 만들기
+Create char
+20130807 to 20130814
+https://gfb.gameflier.com/Billing/ingame/index_new.asp?
+*/
+ MSG_STR_MAKECHARACTER = 0x940,
+/*20120724 to latest
+캐릭명이 일치하지 않습니다.
+Name does not match
+20130807 to 20130814
+캐릭터 만들기
+Create char
+*/
+ MSG_CHR_DELETE_RESERVED_FAIL_CHARNAME = 0x941,
+/*20120724 to latest
+캐릭터명을 입력하세요
+Enter the name of character
+20130807 to 20130814
+캐릭명이 일치하지 않습니다.
+Name does not match
+*/
+ MSG_CHR_DELETE_RESERVED_INPUTCONFIRMSTR_WND_TITLE = 0x942,
+/*20120724 to 20120822
+/bufftimer : 버프에 쿨타이머를 표시합니다. On Off
+20120830 to latest
+성별 선택 창
+Sex Selection Window
+20130807 to 20130814
+캐릭터명을 입력하세요
+Enter the name of character
+*/
+ MSG_SELECT_SEX = 0x943,
+/*20120724 to 20120822
+버프에 쿨타이머가 표시됩니다.
+20120830 to latest
+파일의 위변조가 감지 되었습니다.
+Editing of the File Detected
+20130807 to 20130814
+성별 선택 창
+Sex Selection Window
+*/
+ MSG_SPRITE_ALTER = 0x944,
+/*20120724 to 20120822
+버프에 쿨타이머가 표시되지 않습니다.
+20120830 to latest
+해당 아이템을 개봉하여 획득되는 아이템들은 캐릭터 귀속 아이템 (창고이동 불가능) 입니다. 본 캐릭터에 사용하시는 것이 맞으신지 확인해주시기 바랍니다. 상자를 개봉하시겠습니까?
+Items obtained by opening the item is character bounded (can not move to storage). Do you want to open the box?
+20130807 to 20130814
+파일의 위변조가 감지 되었습니다.
+Editing of the File Detected
+*/
+ MSG_CONFIRM_TO_OPEN_EVENT_ITEM = 0x945,
+#endif
+#if PACKETVER >= 20120808
+/*20120808 to 20120822
+성별 선택 창
+Sex Selection Window
+20120925 to latest
+게임 설정
+Game Settings
+20130807 to 20130814
+해당 아이템을 개봉하여 획득되는 아이템들은 캐릭터 귀속 아이템 (창고이동 불가능) 입니다. 본 캐릭터에 사용하시는 것이 맞으신지 확인해주시기 바랍니다. 상자를 개봉하시겠습니까?
+Items obtained by opening the item is character bounded (can not move to storage). Do you want to open the box?
+*/
+ MSG_GAME_SETTING = 0x946,
+#endif
+#if PACKETVER >= 20120822
+/*20120822 to 20120822
+파일의 위변조가 감지 되었습니다.
+Editing of the File Detected
+20120925 to latest
+게임 시스템
+Game System
+20130807 to 20130814
+게임 설정
+Game Settings
+*/
+ MSG_SYSTEM_SETTING = 0x947,
+#endif
+#if PACKETVER >= 20120925
+/*20120925 to latest
+게임 커맨드
+Game Commands
+20130807 to 20130814
+게임 시스템
+Game System
+*/
+ MSG_COMMAND_SETTING = 0x948,
+/*20120925 to 20120926
+게임 커맨드 리스트
+20121010 to latest
+게임 커맨드 ON/OFF
+Game Command ON/OFF
+20130807 to 20130814
+게임 커맨드
+Game Commands
+*/
+ MSG_COMMAND_LIST = 0x949,
+/*20120925 to latest
+매크로
+Macro
+20130807 to 20130814
+게임 커맨드 ON/OFF
+Game Command ON/OFF
+*/
+ MSG_MACRO_LIST = 0x94a,
+/*20120925 to latest
+이지역은 아이템교환이 금지 되어 있습니다
+Trading is prohibited in this Map
+20130807 to 20130814
+매크로
+Macro
+*/
+ MSG_EXCHANGEITEM_DENY_MAP = 0x94b,
+/*20120925 to latest
+이지역은 카트이용이 금지 되어 있습니다
+Vending is prohibited in this Map
+20130807 to 20130814
+이지역은 아이템교환이 금지 되어 있습니다
+Trading is prohibited in this Map
+*/
+ MSG_CART_USE_DENY_MAP = 0x94c,
+#endif
+#if PACKETVER >= 20121010
+/*20121010 to latest
+이지역은 태양과달과별의 기적 효과가 발생하지 않습니다.
+In this Map,Effect of Mirace of Sun and Moon is nullified.
+20130807 to 20130814
+이지역은 카트이용이 금지 되어 있습니다
+Vending is prohibited in this Map
+*/
+ MSG_BLOCK_SUNMOONSTAR_MIRACLE = 0x94d,
+/*20121010 to latest
+랭킹 보드
+Ranking Board
+20130807 to 20130814
+이지역은 태양과달과별의 기적 효과가 발생하지 않습니다.
+In this Map,Effect of Mirace of Sun and Moon is nullified.
+*/
+ MSG_RANKING_BOARD = 0x94e,
+/*20121010 to latest
+순위
+Rank
+20130807 to 20130814
+랭킹 보드
+Ranking Board
+*/
+ MSG_RANKING_NUMBER = 0x94f,
+/*20121010 to latest
+이름
+Name
+20130807 to 20130814
+순위
+Rank
+*/
+ MSG_RANKING_NAME = 0x950,
+/*20121010 to latest
+포인트
+Points
+20130807 to 20130814
+이름
+Name
+*/
+ MSG_RANKING_POINT = 0x951,
+/*20121010 to latest
+BlackSmith
+20130807 to 20130814
+포인트
+Points
+*/
+ MSG_RANKING_BLACKSMITH = 0x952,
+/*20121010 to latest
+Alchemist
+20130807 to 20130814
+BlackSmith
+*/
+ MSG_RANKING_ALCHEMIST = 0x953,
+/*20121010 to latest
+Taekwon
+20130807 to 20130814
+Alchemist
+*/
+ MSG_RANKING_TAEKWON = 0x954,
+/*20121010 to latest
+Killer
+20130807 to 20130814
+Taekwon
+*/
+ MSG_RANKING_KILLER = 0x955,
+/*20121010 to 20121010
+Munak
+20121017 to 20121107
+1 vs 1
+20121114 to latest
+7 vs 7
+20130807 to 20130814
+Killer
+*/
+ MSG_RANKING_BATTLE_7VS7_ALL = 0x956,
+/*20121010 to 20121010
+DeathKnight
+20121017 to 20130814
+7 vs 7
+20121114 to latest
+RuneKnight
+*/
+ MSG_RANKING_RUNE_KNIGHT = 0x957,
+/*20121010 to 20121010
+Collector
+20121017 to 20121107
+Select Ranking Type
+20121114 to latest
+Warlock
+20130807 to 20130814
+RuneKnight
+*/
+ MSG_RANKING_WARLOCK = 0x958,
+/*20121010 to 20121010
+Select Ranking Type
+20121017 to 20121107
+Ranking Type
+20121114 to latest
+Ranger
+20130807 to 20130814
+Warlock
+*/
+ MSG_RANKING_RANGER = 0x959,
+/*20121010 to 20121010
+Ranking Type
+20121114 to latest
+Mechanic
+20130807 to 20130814
+Ranger
+*/
+ MSG_RANKING_MECHANIC = 0x95a,
+#endif
+#if PACKETVER >= 20121114
+/*20121114 to latest
+GuillotineCross
+20130807 to 20130814
+Mechanic
+*/
+ MSG_RANKING_GUILLOTINE_CROSS = 0x95b,
+/*20121114 to latest
+Archbishop
+20130807 to 20130814
+GuillotineCross
+*/
+ MSG_RANKING_ARCHBISHOP = 0x95c,
+/*20121114 to latest
+RoyalGuard
+20130807 to 20130814
+Archbishop
+*/
+ MSG_RANKING_ROYAL_GUARD = 0x95d,
+/*20121114 to latest
+Sorcerer
+20130807 to 20130814
+RoyalGuard
+*/
+ MSG_RANKING_SORCERER = 0x95e,
+/*20121114 to latest
+Minstrel
+20130807 to 20130814
+Sorcerer
+*/
+ MSG_RANKING_MINSTREL = 0x95f,
+/*20121114 to latest
+Wanderer
+20130807 to 20130814
+Minstrel
+*/
+ MSG_RANKING_WANDERER = 0x960,
+/*20121114 to latest
+Genetic
+20130807 to 20130814
+Wanderer
+*/
+ MSG_RANKING_GENETIC = 0x961,
+/*20121114 to latest
+ShadowChaser
+20130807 to 20130814
+Genetic
+*/
+ MSG_RANKING_SHADOW_CHASER = 0x962,
+/*20121114 to latest
+Sura
+20130807 to 20130814
+ShadowChaser
+*/
+ MSG_RANKING_SURA = 0x963,
+/*20121114 to latest
+Kagerou
+20130807 to 20130814
+Sura
+*/
+ MSG_RANKING_KAGEROU = 0x964,
+/*20121114 to latest
+Oboro
+20130807 to 20130814
+Kagerou
+*/
+ MSG_RANKING_OBORO = 0x965,
+/*20121114 to latest
+Select Ranking Type
+20130807 to 20130814
+Oboro
+*/
+ MSG_RANKING_SELECT = 0x966,
+/*20121114 to latest
+Ranking Type
+20130807 to 20130814
+Select Ranking Type
+*/
+ MSG_RANKING_TYPE = 0x967,
+/*20121114 to latest
+현재 접속 인원이 가득 찼습니다. ^0000ff현재 대기순위 : %d 예상 대기시간 : %d초
+Currently,Server is full. ^0000ffPeople Currently Waiting: %d Expected Waiting Time: %dSeconds
+20130807 to 20130814
+Ranking Type
+*/
+ MSG_WAITING_FOR_ENTER_TO_CHARACTER_SEVER_IN_SEC = 0x968,
+/*20121114 to latest
+현재 접속 인원이 가득 찼습니다. ^0000ff현재 대기순위 : %d 예상 대기시간 : %d분 %d초
+Currently,Server is full. ^0000ffPeople Currently Waiting: %d Expected Waiting Time: %dMinutes %d Seconds
+20130807 to 20130814
+현재 접속 인원이 가득 찼습니다. ^0000ff현재 대기순위 : %d 예상 대기시간 : %d초
+Currently,Server is full. ^0000ffPeople Currently Waiting: %d Expected Waiting Time: %dSeconds
+*/
+ MSG_WAITING_FOR_ENTER_TO_CHARACTER_SEVER_IN_MIN = 0x969,
+/*20121114 to latest
+CBT 초청 유저가 아닙니다
+CBT is not an invited user
+20130807 to 20130814
+현재 접속 인원이 가득 찼습니다. ^0000ff현재 대기순위 : %d 예상 대기시간 : %d분 %d초
+Currently,Server is full. ^0000ffPeople Currently Waiting: %d Expected Waiting Time: %dMinutes %d Seconds
+*/
+ MSG_CBT_ACTIVE_USER_CHECK = 0x96a,
+#endif
+#if PACKETVER >= 20121128
+/*20121128 to latest
+ -------------- Navigation 명령어 --------------
+------------------- Instruction --------------------
+20130807 to 20130814
+CBT 초청 유저가 아닙니다
+CBT is not an invited user
+*/
+ MSG_NAVIGATION_HELP_1 = 0x96b,
+/*20121128 to latest
+/navigation /navi : /navi yuno 100/100 ->> 맵이름, 위치(100/100)
+1) /Navigation or /navi ex) /navi prontera 100 100 -> /navi "MAPNAME", 100, 100
+20130807 to 20130814
+ -------------- Navigation 명령어 --------------
+------------------- Instruction --------------------
+*/
+ MSG_NAVIGATION_HELP_2 = 0x96c,
+/*20121128 to latest
+/navigation2 /navi2 : /navi2 yuno 100/100 1/1/1 ->> 맵이름, 위치(100/100), scrool/zeny/plane (1:사용함 0: 사용안함)
+2) /Navigation2 or /navi2 ex) /navi2 prontera 100 111 -> MAPNAME location (100 90), Scroll | Zeny | Plane (1: Enable or 0: Disable)
+20130807 to 20130814
+/navigation /navi : /navi yuno 100/100 ->> 맵이름, 위치(100/100)
+1) /Navigation or /navi ex) /navi prontera 100 100 -> /navi "MAPNAME", 100, 100
+*/
+ MSG_NAVIGATION_HELP_3 = 0x96d,
+/*20121128 to latest
+ -------------- Navigation 검색창 명령어 -------
+-> /navi2 goes with the case with location coordinates. They must be no less than 3 characters
+20130807 to 20130814
+/navigation2 /navi2 : /navi2 yuno 100/100 1/1/1 ->> 맵이름, 위치(100/100), scrool/zeny/plane (1:사용함 0: 사용안함)
+2) /Navigation2 or /navi2 ex) /navi2 prontera 100 111 -> MAPNAME location (100 90), Scroll | Zeny | Plane (1: Enable or 0: Disable)
+*/
+ MSG_NAVIGATION_HELP_4 = 0x96e,
+/*20121128 to latest
+$$all : 모든 항목 출력 (Type 구분자에서 출력 종류를 나눌수 있다.)
+3) $$all Output all the items (Can take a while...)
+20130807 to 20130814
+ -------------- Navigation 검색창 명령어 -------
+-> /navi2 goes with the case with location coordinates. They must be no less than 3 characters
+*/
+ MSG_NAVIGATION_HELP_5 = 0x96f,
+/*20121128 to latest
+$$lv30 : 해당 레벨의 몬스터 출력 (숫자는 변경 가능)
+4) $$lv30 monsters are placed in the output
+20130807 to 20130814
+$$all : 모든 항목 출력 (Type 구분자에서 출력 종류를 나눌수 있다.)
+3) $$all Output all the items (Can take a while...)
+*/
+ MSG_NAVIGATION_HELP_6 = 0x970,
+/*20121128 to latest
+$$lv20~30 : 해당 레벨 범위의 몬스터 출력 (숫자는 변경 가능)
+5) $$lv20~30 monsters in that level range are placed in the output
+20130807 to 20130814
+$$lv30 : 해당 레벨의 몬스터 출력 (숫자는 변경 가능)
+4) $$lv30 monsters are placed in the output
+*/
+ MSG_NAVIGATION_HELP_7 = 0x971,
+/*20121128 to latest
+1 vs 1
+20130807 to 20130814
+$$lv20~30 : 해당 레벨 범위의 몬스터 출력 (숫자는 변경 가능)
+5) $$lv20~30 monsters in that level range are placed in the output
+*/
+ MSG_RANKING_BATTLE_1VS1_ALL = 0x972,
+#endif
+#if PACKETVER >= 20121205
+/*20121205 to latest
+특수 장비
+Special Gear
+20130807 to 20130814
+1 vs 1
+*/
+ MSG_SHADOW_EQUIPMENT = 0x973,
+#endif
+#if PACKETVER >= 20130109
+/*20130109 to latest
+%d 번째 캐릭터의 직업 정보가 이상합니다. 고객센터로 문의 부탁 드립니다. ErrorCode(%d)
+%d First character of the profession is more than information. Please contact the Customer Care Center. ErrorCode(%d)
+20130807 to 20130814
+특수 장비
+Special Gear
+*/
+ MSG_CHARACTERERROR_JOB = 0x974,
+#endif
+#if PACKETVER >= 20130115
+/*20130115 to latest
+(%s) %d / %d
+20130807 to 20130814
+%d 번째 캐릭터의 직업 정보가 이상합니다. 고객센터로 문의 부탁 드립니다. ErrorCode(%d)
+%d First character of the profession is more than information. Please contact the Customer Care Center. ErrorCode(%d)
+*/
+ MSG_NAVIGATION_ALL_S = 0x975,
+/*20130115 to latest
+%s-%s(%d/%d)
+20130807 to 20130814
+(%s) %d / %d
+*/
+ MSG_NAVIGATION_ALL_SD = 0x976,
+#endif
+#if PACKETVER >= 20130121
+/*20130121 to latest
+접속자 수 초과로 서버에 더이상 접속할 수 없습니다.
+Server Exceeded the maximum number of users,Cannot Connect anymore users.
+20130807 to 20130814
+%s-%s(%d/%d)
+*/
+ MSG_REFUSE_OVER_USERLIMIT = 0x977,
+/*20130121 to latest
+서버접속 실패 (%d)
+Server Connection Failed (%d)
+20130807 to 20130814
+접속자 수 초과로 서버에 더이상 접속할 수 없습니다.
+Server Exceeded the maximum number of users,Cannot Connect anymore users.
+*/
+ MSG_REFUSE_ERRORCODE = 0x978,
+/*20130121 to latest
+로그인 허용시간 초과
+Login Timeout Permitted
+20130807 to 20130814
+서버접속 실패 (%d)
+Server Connection Failed (%d)
+*/
+ MSG_REFUSE_DISCONNECT_KEEP_TIME = 0x979,
+/*20130121 to latest
+로그인 중 인증서버로부터 인증이 실패하였습니다.
+Login Authentication Failed from Authentication Server.
+20130807 to 20130814
+로그인 허용시간 초과
+Login Timeout Permitted
+*/
+ MSG_REFUSE_WEB_AUTH_FAILED = 0x97a,
+#endif
+#if PACKETVER >= 20130206
+/*20130206 to latest
+길드이름에 공백문자를 사용할 수 없습니다.
+Guild Cannot use Space in the name.
+20130807 to 20130814
+로그인 중 인증서버로부터 인증이 실패하였습니다.
+Login Authentication Failed from Authentication Server.
+*/
+ MSG_GUILDNAME_CHECK = 0x97b,
+#endif
+#if PACKETVER >= 20130215
+/*20130215 to latest
+고객님 안녕하세요!
+Hey,Hello There
+20130807 to 20130814
+길드이름에 공백문자를 사용할 수 없습니다.
+Guild Cannot use Space in the name.
+*/
+ MSG_BILLING_CHN_1 = 0x97c,
+/*20130215 to latest
+고객님의 이용 시간은 %d년 %d 월 %d일 %d:%d 에 종료됩니다.
+Available Time will End on %d month %d hour %d:%d
+20130807 to 20130814
+고객님 안녕하세요!
+Hey,Hello There
+*/
+ MSG_BILLING_CHN_2 = 0x97d,
+/*20130215 to latest
+고객님의 이용 시간은 아직 많이 남았으니 안심하고 플레이하세요!
+You've lot of time,Play in Peace.
+20130807 to 20130814
+고객님의 이용 시간은 %d년 %d 월 %d일 %d:%d 에 종료됩니다.
+Available Time will End on %d month %d hour %d:%d
+*/
+ MSG_BILLING_CHN_3 = 0x97e,
+/*20130215 to latest
+고객님의 이용 시간은 이번 주 내로 종료 됩니다. 종료 전에 충전을 하시기 바랍니다.
+Your hours will be terminated within this week. Please Charge before termination.
+20130807 to 20130814
+고객님의 이용 시간은 아직 많이 남았으니 안심하고 플레이하세요!
+You've lot of time,Play in Peace.
+*/
+ MSG_BILLING_CHN_4 = 0x97f,
+/*20130215 to latest
+고객님의 이용 시간은 24시간 내에 종료됩니다. 빨리 충전하시기 바랍니다.
+Your hours will be terminated within 24 hours.Please Charge Quickly.
+20130807 to 20130814
+고객님의 이용 시간은 이번 주 내로 종료 됩니다. 종료 전에 충전을 하시기 바랍니다.
+Your hours will be terminated within this week. Please Charge before termination.
+*/
+ MSG_BILLING_CHN_5 = 0x980,
+/*20130215 to latest
+현재 고객님의 이용 시간은 %d시간 남았습니다. 정상적인 게임 이용을 위해 충전을 하시기 바랍니다.
+Current Time Left:%d hours.Charge the game for uninterrupted play.
+20130807 to 20130814
+고객님의 이용 시간은 24시간 내에 종료됩니다. 빨리 충전하시기 바랍니다.
+Your hours will be terminated within 24 hours.Please Charge Quickly.
+*/
+ MSG_BILLING_CHN_6 = 0x981,
+/*20130215 to latest
+현재 고객님의 이용 시간은 %d분 남았습니다. 이용시간이 끝난 후 강제적으로 종료됩니다. 정상적인 게임 이용을 위해 충전을 하시기 바랍니다.
+Current Time Left:%d minutes.Charge the game for uninterrupted play.
+20130807 to 20130814
+현재 고객님의 이용 시간은 %d시간 남았습니다. 정상적인 게임 이용을 위해 충전을 하시기 바랍니다.
+Current Time Left:%d hours.Charge the game for uninterrupted play.
+*/
+ MSG_BILLING_CHN_7 = 0x982,
+/*20130215 to latest
+고객님의 이용 시간은 %d시간 %d분 남았습니다.
+Time Left: %d hours %d minutes
+20130807 to 20130814
+현재 고객님의 이용 시간은 %d분 남았습니다. 이용시간이 끝난 후 강제적으로 종료됩니다. 정상적인 게임 이용을 위해 충전을 하시기 바랍니다.
+Current Time Left:%d minutes.Charge the game for uninterrupted play.
+*/
+ MSG_BILLING_CHN_8 = 0x983,
+/*20130215 to latest
+%d%% ( 기본 100%% + PC방 %d%% + 프리미엄 %d%% + %s서버 %d%% )
+%d%% ( Basic 100%% + PCRoom %d%% + Premium %d%% + %sServer %d%% )
+20130807 to 20130814
+고객님의 이용 시간은 %d시간 %d분 남았습니다.
+Time Left: %d hours %d minutes
+*/
+ MSG_BASIC_EXP_MSG_THAI = 0x984,
+/*20130215 to latest
+고객님의 이용 시간은 %d시간 %d분 후에 종료됩니다.
+After %d hours %d minutes, your game will be terminated.
+20130807 to 20130814
+%d%% ( 기본 100%% + PC방 %d%% + 프리미엄 %d%% + %s서버 %d%% )
+%d%% ( Basic 100%% + PCRoom %d%% + Premium %d%% + %sServer %d%% )
+*/
+ MSG_CHN_BILLING_EXPIRE_TIME = 0x985,
+#endif
+#if PACKETVER >= 20130220
+/*20130220 to latest
+유저님의 계정은 영구 접속금지 되였습니다
+This Account is permanently Banned.
+20130807 to 20130814
+고객님의 이용 시간은 %d시간 %d분 후에 종료됩니다.
+After %d hours %d minutes, your game will be terminated.
+*/
+ MSG_CHN_BLOCK_FOREVER = 0x986,
+/*20130220 to latest
+유저님의 계정은 접속금지 되였습니다
+ 해지 시간 : %04d-%02d-%02d %02d:%02d
+This Account is banned.
+Termination Time:%04d-%02d-%02d %02d:%02d
+20130807 to 20130814
+유저님의 계정은 영구 접속금지 되였습니다
+This Account is permanently Banned.
+*/
+ MSG_CHN_BLOCK = 0x987,
+#endif
+#if PACKETVER >= 20130227
+/*20130227 to latest
+몬스터(Tab)
+Monster(Tab)
+20130807 to 20130814
+유저님의 계정은 접속금지 되였습니다
+ 해지 시간 : %04d-%02d-%02d %02d:%02d
+This Account is banned.
+Termination Time:%04d-%02d-%02d %02d:%02d
+*/
+ MSG_WORLDMAP_MSG1 = 0x988,
+/*20130227 to latest
+맵(Alt)
+Map(Alt)
+20130807 to 20130814
+몬스터(Tab)
+Monster(Tab)
+*/
+ MSG_WORLDMAP_MSG2 = 0x989,
+/*20130227 to latest
+안내 정보
+Product Information
+20130807 to 20130814
+맵(Alt)
+Map(Alt)
+*/
+ MSG_WORLDMAP_MSG3 = 0x98a,
+/*20130227 to latest
+검색 정보
+Find Information
+20130807 to 20130814
+안내 정보
+Product Information
+*/
+ MSG_WORLDMAP_MSG4 = 0x98b,
+/*20130227 to latest
+비공정
+AirShip
+20130807 to 20130814
+검색 정보
+Find Information
+*/
+ MSG_WORLDMAP_MSG5 = 0x98c,
+/*20130227 to latest
+카프라
+Kafra
+20130807 to 20130814
+비공정
+AirShip
+*/
+ MSG_WORLDMAP_MSG6 = 0x98d,
+/*20130227 to latest
+(도착)
+(Arrival)
+20130807 to 20130814
+카프라
+Kafra
+*/
+ MSG_WORLDMAP_MSG7 = 0x98e,
+#endif
+#if PACKETVER >= 20130313
+/*20130313 to latest
+Mob)%s:%s(%s)
+20130807 to 20130814
+(도착)
+(Arrival)
+*/
+ MSG_NAVIGATION_MOB_S_S_S = 0x98f,
+/*20130313 to latest
+분포도:%s
+Distribution:%s
+20130807 to 20130814
+Mob)%s:%s(%s)
+*/
+ MSG_NAVIGATION_NUM = 0x990,
+/*20130313 to latest
+매우많음
+Very Plenty
+20130807 to 20130814
+분포도:%s
+Distribution:%s
+*/
+ MSG_NAVIGATION_NUM1 = 0x991,
+/*20130313 to latest
+많음
+Plenty
+20130807 to 20130814
+매우많음
+Very Plenty
+*/
+ MSG_NAVIGATION_NUM2 = 0x992,
+/*20130313 to latest
+보통
+Normal
+20130807 to 20130814
+많음
+Plenty
+*/
+ MSG_NAVIGATION_NUM3 = 0x993,
+/*20130313 to latest
+적음
+Low
+20130807 to 20130814
+보통
+Normal
+*/
+ MSG_NAVIGATION_NUM4 = 0x994,
+/*20130313 to latest
+매우적음
+Very Low
+20130807 to 20130814
+적음
+Low
+*/
+ MSG_NAVIGATION_NUM5 = 0x995,
+#endif
+#if PACKETVER >= 20130320
+/*20130320 to latest
+은행을 이용할 수 없습니다. 잠시 후 다시 시도하세요.
+The bank is not available. Please try again in a few minutes.
+20130807 to 20130814
+매우적음
+Very Low
+*/
+ MSG_BANK_SYSTEM_ERROR = 0x996,
+/*20130320 to latest
+은행 잔고가 부족합니다.
+Bank balance is low.
+20130807 to 20130814
+은행을 이용할 수 없습니다. 잠시 후 다시 시도하세요.
+The bank is not available. Please try again in a few minutes.
+*/
+ MSG_BANK_WITHDRAW_NO_MONEY = 0x997,
+#endif
+#if PACKETVER >= 20130327
+/*20130327 to latest
+보유한 Zeny 가 부족해서 입금할 수 없습니다.
+You don't have enough zeny
+20130807 to 20130814
+은행 잔고가 부족합니다.
+Bank balance is low.
+*/
+ MSG_BANK_DEPOSIT_NO_MONEY = 0x998,
+/*20130327 to latest
+1 Zeny 이상 입금 가능합니다.
+Minimum Deposit Amount: 1 zeny
+20130807 to 20130814
+보유한 Zeny 가 부족해서 입금할 수 없습니다.
+You don't have enough zeny
+*/
+ MSG_BANK_DEPOSIT_ZERO = 0x999,
+/*20130327 to latest
+1 Zeny 이상 출금 가능합니다.
+Minimum Withdrawal Amount: 1 zeny
+20130807 to 20130814
+1 Zeny 이상 입금 가능합니다.
+Minimum Deposit Amount: 1 zeny
+*/
+ MSG_BANK_WITHDRAW_ZERO = 0x99a,
+/*20130327 to 20130605
+보유 Zeny 는 21 억을 넘을 수 없습니다.
+20130605 to latest
+보유 Zeny 는 2,147,483,647 Zeny를 넘을 수 없습니다.
+You cannot hold more than 2,147,483,647 Zeny
+20130807 to 20130814
+1 Zeny 이상 출금 가능합니다.
+Minimum Withdrawal Amount: 1 zeny
+*/
+ MSG_BANK_OVER_INT_MAX = 0x99b,
+/*20130327 to latest
+your account is lock by mobil otp
+your account is lock by mobile otp
+20130807 to 20130814
+보유 Zeny 는 2,147,483,647 Zeny를 넘을 수 없습니다.
+You cannot hold more than 2,147,483,647 Zeny
+*/
+ MSG_REFUSE_MOTP_LOCK = 0x99c,
+/*20130327 to latest
+MOTP auth fail
+20130807 to 20130814
+your account is lock by mobil otp
+your account is lock by mobile otp
+*/
+ MSG_REFUSE_MOTP_AUTH_FAIL = 0x99d,
+/*20130327 to latest
+%d분간 몬스터에게 얻을 수 있는 Job경험치가 %d%% 증가합니다.
+For %d minutes,Job Experience obtained from monster is increased by %d%%
+20130807 to 20130814
+MOTP auth fail
+*/
+ MSG_JOBPLUSEXP_VALUE = 0x99e,
+#endif
+#if PACKETVER >= 20130410
+/*20130410 to 20130410
+소지 Zeny : %d Zeny
+20130417 to latest
+소지 Zeny : %s Zeny
+Current Zeny: %s Zeny
+20130807 to 20130814
+%d분간 몬스터에게 얻을 수 있는 Job경험치가 %d%% 증가합니다.
+For %d minutes,Job Experience obtained from monster is increased by %d%%
+*/
+ MSG_BANK_MY_ZENY = 0x99f,
+/*20130410 to latest
+Zeny
+20130807 to 20130814
+소지 Zeny : %s Zeny
+Current Zeny: %s Zeny
+*/
+ MSG_BANK_ZENY = 0x9a0,
+/*20130410 to 20130515
+* 최대 21억 Zeny까지만 보관이 가능합니다.
+20130522 to 20130605
+최대 2,147,483,647억 Zeny까지만 보관이 가능합니다.
+20130605 to 20130605
+최대 2,147,483,647 Zeny까지만 보관이 가능합니다.
+20130612 to latest
+최대 2,147,483,647 Zeny 까지만 보관이 가능합니다.
+The Maximum amount is 2,147,483,647 Zeny
+20130807 to 20130814
+Zeny
+*/
+ MSG_BANK_WARNING = 0x9a1,
+#endif
+#if PACKETVER >= 20130515
+/*20130515 to latest
+총알이 부족합니다.
+Insufficient bullet
+20130807 to 20130814
+최대 2,147,483,647 Zeny 까지만 보관이 가능합니다.
+The Maximum amount is 2,147,483,647 Zeny
+*/
+ MSG_NEED_MORE_BULLET = 0x9a2,
+/*20130515 to latest
+10억제니 이상 입력하셔도 가격은 10억 제니로 판매됩니다.
+You entered more than 1 Billion Zeny, the price will be set to 1 Billion Zeny.
+20130807 to 20130814
+총알이 부족합니다.
+Insufficient bullet
+*/
+ MSG_OVERPRICE_MAX = 0x9a3,
+#endif
+#if PACKETVER >= 20130605
+/*20130605 to latest
+AuthTicket is Not Vaild
+AuthTicket is Not Valid
+20130807 to 20130814
+10억제니 이상 입력하셔도 가격은 10억 제니로 판매됩니다.
+You entered more than 1 Billion Zeny, the price will be set to 1 Billion Zeny.
+*/
+ MSG_NOT_VALID_AUTH_TICKET = 0x9a4,
+/*20130605 to 20130605
+ErrorCode : %d, ErrorValue : %d
+20130612 to latest
+ErrorCategory : %d, ErrorCode : %d (%d,%d,%d,%d)
+ErrorCategory: %d, ErrorCode: %d (%d,%d,%d,%d)
+20130807 to 20130814
+AuthTicket is Not Vaild
+AuthTicket is Not Valid
+*/
+ MSG_STEAMAGENCY_ERROR = 0x9a5,
+#endif
+#if PACKETVER >= 20130618
+/*20130618 to 20130618
+%d%% ( Primary 100%% + Premium %d%% + PCCafe %d%% + %s Server %d%% )
+20130626 to latest
+%d%% ( Basic 100%% + Premium %d%% + PCCafe %d%% + %s Server %d%% )
+%d%% ( Basic 100%% + Premium %d%% + Internet cafe %d%% + %s Server %d%% )
+20130807 to 20130814
+ErrorCategory : %d, ErrorCode : %d (%d,%d,%d,%d)
+ErrorCategory: %d, ErrorCode: %d (%d,%d,%d,%d)
+*/
+ MSG_BASIC_EXP_MSG_INDONESIA = 0x9a6,
+/*20130618 to 20130925
+ 몬스터 사냥을 통해 얻을 수 있는 기본 아이템의 드롭률이 %d분간 %d배로 증가합니다.
+20130807 to 20130814
+%d%% ( Basic 100%% + Premium %d%% + PCCafe %d%% + %s Server %d%% )
+%d%% ( Basic 100%% + Premium %d%% + Internet cafe %d%% + %s Server %d%% )
+20130925 to latest
+ %d분간 몬스터 사냥을 통해 얻을 수 있는 기본 아이템의 드롭률이 %d%%로 증가합니다.
+Basic item drop rate from monster hunting is increased for %dmins by %dtimes.
+*/
+ MSG_RECEIVEITEM_VALUE = 0x9a7,
+/*20130618 to 20130925
+ 몬스터 사냥을 통해 얻을 수 있는 기본 아이템의 드롭률이 %d시 %.2d분간 %d배로 증가합니다.
+20130807 to 20130814
+ 몬스터 사냥을 통해 얻을 수 있는 기본 아이템의 드롭률이 %d분간 %d배로 증가합니다.
+20130925 to latest
+ %d시 %.2d분간 몬스터 사냥을 통해 얻을 수 있는 기본 아이템의 드롭률이 %d%%로 증가합니다.
+Basic item drop rate from monster hunting is increased for %dhour %.2dmins by %dtimes.
+*/
+ MSG_RECEIVEITEM_VALUE_1 = 0x9a8,
+#endif
+#if PACKETVER >= 20130626
+/*20130626 to latest
+%s 의 가격이
+The price of^0000FF %s^000000
+20130807 to 20130814
+ 몬스터 사냥을 통해 얻을 수 있는 기본 아이템의 드롭률이 %d시 %.2d분간 %d배로 증가합니다.
+*/
+ MSG_WARNING_PRICE1 = 0x9a9,
+/*20130626 to latest
+100000000
+1000000000
+20130807 to 20130814
+%s 의 가격이
+The price of^0000FF %s^000000
+*/
+ MSG_WARNING_PRICE2 = 0x9aa,
+/*20130626 to latest
+ ^ff0000%d^0000ff억
+ is over ^FF0000%d^0000FF Billion^000000 Zeny and
+20130807 to 20130814
+100000000
+1000000000
+*/
+ MSG_WARNING_PRICE3 = 0x9ab,
+/*20130626 to latest
+10000000
+20130807 to 20130814
+ ^ff0000%d^0000ff억
+ is over ^FF0000%d^0000FF Billion^000000 Zeny and
+*/
+ MSG_WARNING_PRICE4 = 0x9ac,
+/*20130626 to latest
+ ^ff0000%d^0000ff천만
+ more than^FF0000 %d0^0000FF Million^000000 Zeny
+20130807 to 20130814
+10000000
+*/
+ MSG_WARNING_PRICE5 = 0x9ad,
+/*20130626 to latest
+^0000ffZeny 이상^000000입니다.
+입력금액이 맞습니까?
+. Is this correct?
+20130807 to 20130814
+ ^ff0000%d^0000ff천만
+ more than^FF0000 %d0^0000FF Million^000000 Zeny
+*/
+ MSG_WARNING_PRICE6 = 0x9ae,
+/*20130626 to latest
+천만Zeny이상 안전확인
+Safety check for more than 10m Zeny
+20130807 to 20130814
+^0000ffZeny 이상^000000입니다.
+입력금액이 맞습니까?
+. Is this correct?
+*/
+ MSG_WARNING_PRICE7 = 0x9af,
+/*20130626 to latest
+https://www.warpportal.com/account/login.aspx?ReturnUrl=%2faccount%2fpayment.aspx
+20130807 to 20130814
+천만Zeny이상 안전확인
+Safety check for more than 10m Zeny
+*/
+ MSG_AMERICA_CASHSHOP_URL = 0x9b0,
+/*20130626 to 20131023
+https://kepler.warpportal.com/steam/purchase/?step=1&steamid=76561198071003044&game=rose&accountname=khanhtest111&lang=en
+20130807 to 20130814
+https://www.warpportal.com/account/login.aspx?ReturnUrl=%2faccount%2fpayment.aspx
+20131030 to latest
+https://kepler.warpportal.com/ro1/purchase/?step=1&steamid=%lld&accountname=
+https://kepler.warpportal.com/ror/purchase/?step=1&steamid=%lld&accountname=
+*/
+ MSG_AMERICA_CASHSHOP_URL_STEAM = 0x9b1,
+/*20130626 to latest
+지상의 끝, 스플랑디드와 부유대륙 알프헤임을 잇는 다리, 비프로스트에 생겨난 거대한 균열, 그리고 근원을 알 수 없는 미궁숲.
+A giant crevice appeared in Bifrost, the bridge between Splendide, the end of the world and the floating continent of Alfheim, and you do not know the source of the labyrinth forest.
+20130807 to 20130814
+https://kepler.warpportal.com/steam/purchase/?step=1&steamid=76561198071003044&game=rose&accountname=khanhtest111&lang=en
+*/
+ MSG_QUEST_INFO_01 = 0x9b2,
+/*20130626 to latest
+이것은 여행의 끝을 알리는 표식인가, 새로운 세계를 여는 지표인가! 수호자는 노랫말 같은 유혹에 점차 넋을 잃어가고 있었다.
+This is a marker indicating the end of the trip, a new world is opening indicators! Guardian, such as the lyrics to the temptation was gradually losing the soul.
+20130807 to 20130814
+지상의 끝, 스플랑디드와 부유대륙 알프헤임을 잇는 다리, 비프로스트에 생겨난 거대한 균열, 그리고 근원을 알 수 없는 미궁숲.
+A giant crevice appeared in Bifrost, the bridge between Splendide, the end of the world and the floating continent of Alfheim, and you do not know the source of the labyrinth forest.
+*/
+ MSG_QUEST_INFO_02 = 0x9b3,
+/*20130626 to latest
+수천 년의 세월이 흐르는 동안, 그 스스로가 홀로 안간힘을 쓰며 지켜낸 것이 무엇이었는지, 봉인 되어 긴 시간을 갇혀버린 것은 오히려 자신이 아니었는지 혼란을 느끼고 있었다.
+For thousands of years, a mysterious melody has mesmerized the guardian. After a millennia of slumber, the guardian became confused about what he had been protecting all these years, and began to suspect that he might be the one who has been sealed and hidden away.
+20130807 to 20130814
+이것은 여행의 끝을 알리는 표식인가, 새로운 세계를 여는 지표인가! 수호자는 노랫말 같은 유혹에 점차 넋을 잃어가고 있었다.
+This is a marker indicating the end of the trip, a new world is opening indicators! Guardian, such as the lyrics to the temptation was gradually losing the soul.
+*/
+ MSG_QUEST_INFO_03 = 0x9b4,
+/*20130626 to latest
+유혹의 노랫말이 최고조에 이르렀을 때, 지상의 끝 스플랑디드와 부유대륙 알프헤임을 잇는 다리, 비프로스트에 거대한 균열이 생겨났고, 그로 인해 두 세계간의 왕래가 끊기면서 사람들은 큰 불편을 겪게 되었다.
+When the melody reached its peak, a giant crevice appeared in Bifrost, the bridge between Splendide, the end of the world and the floating continent of Alfheim. As a result, the two worlds were cut off from each other, causing a big problem for the people.
+20130807 to 20130814
+수천 년의 세월이 흐르는 동안, 그 스스로가 홀로 안간힘을 쓰며 지켜낸 것이 무엇이었는지, 봉인 되어 긴 시간을 갇혀버린 것은 오히려 자신이 아니었는지 혼란을 느끼고 있었다.
+For thousands of years, a mysterious melody has mesmerized the guardian. After a millennia of slumber, the guardian became confused about what he had been protecting all these years, and began to suspect that he might be the one who has been sealed and hidden away.
+*/
+ MSG_QUEST_INFO_04 = 0x9b5,
+/*20130626 to latest
+비프로스트의 통로는 이제 미궁숲 뿐. 근원조차 알 수 없는 그곳을 무사히 통과 한 사람은 지금까지 아무도 없었다.
+Now, the only way to get to Bifrost is through the Labyrinth Forest. Nobody knows how the forest came to exist, and nobody has ever come out of it alive...
+20130807 to 20130814
+유혹의 노랫말이 최고조에 이르렀을 때, 지상의 끝 스플랑디드와 부유대륙 알프헤임을 잇는 다리, 비프로스트에 거대한 균열이 생겨났고, 그로 인해 두 세계간의 왕래가 끊기면서 사람들은 큰 불편을 겪게 되었다.
+When the melody reached its peak, a giant crevice appeared in Bifrost, the bridge between Splendide, the end of the world and the floating continent of Alfheim. As a result, the two worlds were cut off from each other, causing a big problem for the people.
+*/
+ MSG_QUEST_INFO_05 = 0x9b6,
+/*20130626 to latest
+숱한 모험가들을 집어 삼킨 혼돈의 지옥, 미궁숲은 그 속을 방황하는 이름 모를 여인의 마음처럼 더욱 깊고 혼란스럽게 확장되고 있었다.
+Swallowed countless adventurers to put a hell of confusion, wandering in the forest labyrinth of nowhere, like the heart of a woman was being extend deeper confusion.
+20130807 to 20130814
+비프로스트의 통로는 이제 미궁숲 뿐. 근원조차 알 수 없는 그곳을 무사히 통과 한 사람은 지금까지 아무도 없었다.
+Now, the only way to get to Bifrost is through the Labyrinth Forest. Nobody knows how the forest came to exist, and nobody has ever come out of it alive...
+*/
+ MSG_QUEST_INFO_06 = 0x9b7,
+#endif
+#if PACKETVER >= 20130717
+/*20130717 to latest
+숫자만 입력 가능합니다.
+You can enter only numbers.
+20130807 to 20130814
+숱한 모험가들을 집어 삼킨 혼돈의 지옥, 미궁숲은 그 속을 방황하는 이름 모를 여인의 마음처럼 더욱 깊고 혼란스럽게 확장되고 있었다.
+Swallowed countless adventurers to put a hell of confusion, wandering in the forest labyrinth of nowhere, like the heart of a woman was being extend deeper confusion.
+*/
+ MSG_BANK_CHECK_NUM = 0x9b8,
+#endif
+#if PACKETVER >= 20130724
+/*20130724 to latest
+교환창 또는 상점이 활성화 된 상태에서는 입출금을 하실수 없습니다.
+Exchange or store window is active and can not register the withdrawal.
+20130807 to 20130814
+숫자만 입력 가능합니다.
+You can enter only numbers.
+*/
+ MSG_BANK_PROHIBIT = 0x9b9,
+#endif
+#if PACKETVER >= 20130731
+/*20130731 to latest
+바로가기
+Go to
+20130807 to 20130814
+교환창 또는 상점이 활성화 된 상태에서는 입출금을 하실수 없습니다.
+Exchange or store window is active and can not register the withdrawal.
+*/
+ MSG_QUEST_INFO_00 = 0x9ba,
+/*20130731 to latest
+아이템 비교
+Item Compare
+20130807 to 20130814
+바로가기
+Go to
+*/
+ MSG_ITEM_COMPARISON = 0x9bb,
+#endif
+#if PACKETVER >= 20130807
+/*20130807 to 20130814
+아이템 비교
+Item Compare
+20130821 to latest
+현재 장착하려고 하는 총기가 장착하고 있는 탄환에 맞지 않습니다
+Now you are trying to mount the gun equipped with bullet does not meet
+*/
+ MSG_WRONG_GUN = 0x9bc,
+/*20130807 to 20130814
+현재 장착하려고 하는 총기가 장착하고 있는 탄환에 맞지 않습니다
+Now you are trying to mount the gun equipped with bullet does not meet
+20130821 to latest
+현재 장착하려고 하는 탄환이 장착하고 있는 총기와 맞지 않습니다
+Now you are trying to mount the guns and bullets will not fit mounted
+*/
+ MSG_WRONG_BULLET = 0x9bd,
+/*20130807 to 20130814
+현재 장착하려고 하는 탄환이 장착하고 있는 총기와 맞지 않습니다
+Now you are trying to mount the guns and bullets will not fit mounted
+20130821 to latest
+판매할 아이템을 등록하지 않았습니다. 판매하실 아이템을 등록해 주세요
+Has not registered to sell the item. Please register to sell the item
+*/
+ MSG_BUYINGSTORE_MAKEWND_ADD_GOODS = 0x9be,
+#endif
+#if PACKETVER >= 20130821
+/*20130821 to latest
+ITEM
+*/
+ MSG_ITEM_IN_MAIL_SYSTEM = 0x9bf,
+#endif
+#if PACKETVER >= 20130828
+/*20130828 to 20130911
+길드 창고를 이용할 수 없습니다. 잠시 후 이용해주세요.
+20130917 to latest
+길드 창고를 이용할 수 없습니다.
+Guild storage is not available.
+*/
+ MSG_GUILD_STORAGE_OPEN_ERROR = 0x9c0,
+/*20130828 to latest
+길드에 가입되어 있지 않습니다. 가입 후 이용해주세요.
+Guild is not subscribed to. After signing up, please use
+*/
+ MSG_GUILD_STORAGE_OPEN_NO_JOIN_GUILD = 0x9c1,
+/*20130828 to latest
+다른 길드원이 사용중입니다. 잠시 후 이용해주세요.
+Two other guild members are in use. Please use it after a while.
+*/
+ MSG_GUILD_STORAGE_WARNING_USING_ANOTHER_MEMBER = 0x9c2,
+/*20130828 to latest
+창고권한
+Storage Permission
+*/
+ MSG_GUILD_STORAGE_PERMISSON = 0x9c3,
+/*20130828 to latest
+길드창고
+Guild Storage
+*/
+ MSG_GUILD_STORAGE_TITLE = 0x9c4,
+/*20130828 to 20130828
+길드창고의 사용 권한이 없습니다. 길드 마스터에게 요청하세요.
+20130904 to latest
+길드창고의 사용 권한이 없습니다.
+You do not have permission to use guild storage.
+*/
+ MSG_GUILD_STORAGE_PERMISSON_WARNING_MSG = 0x9c5,
+#endif
+#if PACKETVER >= 20130917
+/*20130917 to latest
+한정판매 등록창
+Limited Sale Registration Window
+*/
+ MSG_BARGAINSALE_TOOLWND_TITLE = 0x9c6,
+/*20130917 to latest
+아이템 DB명
+Item DB Name
+*/
+ MSG_BARGAINSALE_TOOLWND_DB_NAME = 0x9c7,
+/*20130917 to latest
+아이템 DB번호
+Item DB Number
+*/
+ MSG_BARGAINSALE_TOOLWND_DB_NUMBER = 0x9c8,
+/*20130917 to latest
+판매 갯수
+Number of Sale
+*/
+ MSG_BARGAINSALE_TOOLWND_SELL_COUNT = 0x9c9,
+/*20130917 to latest
+판매 시작시간
+Sale Start Time
+*/
+ MSG_BARGAINSALE_TOOLWND_SELL_STARTTIME = 0x9ca,
+/*20130917 to latest
+판매할 시간
+Time to sell
+*/
+ MSG_BARGAINSALE_TOOLWND_SELL_PERIODTIME = 0x9cb,
+/*20130917 to latest
+판매할 갯수를 입력해 주세요
+Please enter number you want to sell
+*/
+ MSG_BARGAINSALE_TOOLWND_INPUT_COUNT_MSG = 0x9cc,
+/*20130917 to latest
+판매 시작시간을 입력해 주세요
+Enter start time of sale
+*/
+ MSG_BARGAINSALE_TOOLWND_INPUT_STARTTIME_MSG = 0x9cd,
+/*20130917 to latest
+판매 시작시간의 범위가 맞지 않습니다
+Start time does not match the scope of sales.
+*/
+ MSG_BARGAINSALE_TOOLWND_WRONG_RANGE_MSG = 0x9ce,
+/*20130917 to latest
+판매할 시간을 입력해 주세요
+Please enter the time
+*/
+ MSG_BARGAINSALE_TOOLWND_INPUT_PERIODTIME_MSG = 0x9cf,
+/*20130917 to latest
+Item DB Name을 입력해 주세요
+Please enter the Item DB Name
+*/
+ MSG_BARGAINSALE_TOOLWND_INPUT_ITEMDBNAME_MSG = 0x9d0,
+/*20130917 to latest
+Item ID 조회에 실패하였습니다. 확인 후 다시 시도해 주시기 바랍니다
+Item ID lookup failed. Please try again later
+*/
+ MSG_BARGAINSALE_TOOLWND_ITEMID_CHECK_FAILED_MSG = 0x9d1,
+/*20130917 to latest
+>> ItemName : %s / Price : %dc / 수량 : %d / 판매기간 : %d월:%d일:%d시:%d분 ~ %d월:%d일:%d시:%d분
+>> ItemName: %s / Price: %dc / Quantity: %d / TimeOfSale: %dMonth:%dDay:%dMinute:%dSecond ~ %dMonth:%dDay:%dMinute:%dSecond
+*/
+ MSG_BARGAINSALE_TOOLWND_RESULT_FORMAT = 0x9d2,
+/*20130917 to latest
+등록에 성공하였습니다
+Registration successful
+*/
+ MSG_BARGAINSALE_TOOLWND_APPLY_SUCCESS_MSG = 0x9d3,
+/*20130917 to latest
+등록에 실패하였습니다. 다시 시도해 주시기 바랍니다.
+Registration failure. Please try again later.
+*/
+ MSG_BARGAINSALE_TOOLWND_APPLY_FAILED_MSG = 0x9d4,
+/*20130917 to latest
+이미 등록된 아이템이 있습니다. 다시 시도해 주시기 바랍니다.
+Item has already been registered. Please try again later.
+*/
+ MSG_BARGAINSALE_TOOLWND_ALREADY_REGISTERED_MSG = 0x9d5,
+/*20130917 to latest
+아이템 삭제에 실패 하였습니다. 다시 시도해 주시기 바랍니다.
+Failed to delete the item. Please try again later.
+*/
+ MSG_BARGAINSALE_TOOLWND_DELETE_FAILED_MSG = 0x9d6,
+/*20130917 to latest
+%s 아이템이 삭제되었습니다.
+%s item has been deleted.
+*/
+ MSG_BARGAINSALE_TOOLWND_DELETE_SUCCESS_MSG = 0x9d7,
+/*20130917 to latest
+특가
+Special
+*/
+ MSG_BARGAINSALE_CASHSHOP_TAB_NAME = 0x9d8,
+/*20130917 to latest
+한정판매 아이템 판매수량 갱신
+Sales limited sale item update
+*/
+ MSG_BARGAINSALE_CASHSHOP_REFRESH_BTN_TOOLTIP = 0x9d9,
+/*20130917 to latest
+판매종료
+Discontinued
+*/
+ MSG_BARGAINSALE_CASHSHOP_TIMER = 0x9da,
+/*20130917 to latest
+수량갱신이 필요합니다
+Quantity update is required
+*/
+ MSG_BARGAINSALE_CASHSHOP_REFRESH_MSG = 0x9db,
+/*20130917 to latest
+재고가 부족하여 %d 개 만큼만 구입합니다
+The %d is out of stock or to buy as much as
+*/
+ MSG_BARGAINSALE_CASHSHOP_CHECK_COUNT_MSG = 0x9dc,
+/*20130917 to latest
+%s 아이템의 특가판매가 시작되었습니다
+%s Items are on sale
+*/
+ MSG_BARGAINSALE_START_MSG = 0x9dd,
+/*20130917 to latest
+%s 아이템의 매진 또는 판매시간만료로 인해 한정판매가 종료되었습니다
+%s time-out or sale of the items sold has been shut down due to the limited sales
+*/
+ MSG_BARGAINSALE_CLOSE_MSG = 0x9de,
+/*20130917 to latest
+/한정판매
+/limitedsale
+*/
+ MSG_BARGAINSALE_TOOLWND_CALL = 0x9df,
+#endif
+#if PACKETVER >= 20131002
+/*20131002 to latest
+http://www.ragnarokeurope.com/news/home-r70.html
+*/
+ MSG_FRANCE_CASHSHOP_URL = 0x9e0,
+/*20131002 to latest
+http://www.ragnarokeurope.com/index.php?rubrique=70&Steam
+*/
+ MSG_FRANCE_CASHSHOP_URL_STEAM = 0x9e1,
+#endif
+#if PACKETVER >= 20131016
+/*20131016 to latest
+구입에 성공한 품목
+Item purchase successful
+*/
+ MSG_PARA_RESULT_TITLE = 0x9e2,
+/*20131016 to latest
+주문량이 재고량을 초과하였습니다.
+You do not have enough items.
+*/
+ MSG_PARA_WRONG_PURCHASE_COUNT_MSG = 0x9e3,
+/*20131016 to latest
+초대할수 없는 케릭터 이름입니다.
+Name of the character that cannot be invited.
+*/
+ MSG_PARTY_INVITE = 0x9e4,
+/*20131016 to latest
+길드초대할수 없는 케릭터 이름입니다.
+You cannot invite the character to the guild.
+*/
+ MSG_GUILD_INVITE = 0x9e5,
+/*20131016 to latest
+일부 품목은 이미 판매되어 구입에 실패하였습니다.
+Item already Sold,Purchase Failed.
+*/
+ MSG_PARA_PURCHASE_ITEM_FAIL = 0x9e6,
+#endif
+#if PACKETVER >= 20131030
+/*20131030 to latest
+현재 위치에서 워프 장소를 기억 할 수 없습니다.
+The warp spot cannot be memorized in current position.
+*/
+ MSG_NOWARPSKILL2 = 0x9e7,
+/*20131030 to latest
+무게가 초과되어 아이템을 구매할 수 없습니다.
+Cannot purchase item, You exceeded the weight.
+*/
+ MSG_PARA_PURCHASE_ITEM_WEIGHT = 0x9e8,
+/*20131030 to latest
+No.
+*/
+ MSG_GUILD_STORAGE_NUMBER = 0x9e9,
+/*20131030 to latest
+아이템
+Item
+*/
+ MSG_GUILD_STORAGE_ITEM = 0x9ea,
+/*20131030 to latest
+개수
+Number
+*/
+ MSG_GUILD_STORAGE_ITEM_COUNT = 0x9eb,
+/*20131030 to latest
+이름
+Name
+*/
+ MSG_GUILD_STORAGE_USER_NAME = 0x9ec,
+/*20131030 to latest
+시간
+Time
+*/
+ MSG_GUILD_STORAGE_LOG_TIME = 0x9ed,
+/*20131030 to latest
+입/출
+Input/Output
+*/
+ MSG_GUILD_STORAGE_ITEM_IN_OUT = 0x9ee,
+/*20131030 to latest
+로그가 존재하지 않습니다.
+Log does not exist.
+*/
+ MSG_GUILD_STORAGE_LOG_FINISH = 0x9ef,
+/*20131030 to latest
+전 체
+Entire
+*/
+ MSG_GUILD_STORAGE_LOG_ALL = 0x9f0,
+/*20131030 to latest
+넣 기
+Insert Symbol
+*/
+ MSG_GUILD_STORAGE_LOG_IN = 0x9f1,
+/*20131030 to latest
+빼 기
+Remaining Time
+*/
+ MSG_GUILD_STORAGE_LOG_OUT = 0x9f2,
+#endif
+#if PACKETVER >= 20131106
+/*20131106 to latest
+길드 창고 내역
+Guild Storage Logs
+*/
+ MSG_GUILD_STORAGE_LOG_WND_NAME = 0x9f3,
+/*20131106 to latest
+내역은 최근 100개만 표시됩니다.
+100 entries are displayed.
+*/
+ MSG_GUILD_STORAGE_LOG_CAUTION = 0x9f4,
+#endif
+#if PACKETVER >= 20131120
+/*20131120 to 20131120
+%s : +%d
+20131127 to latest
+길드창고의 사용 시간 2분이 경과되어 자동으로 종료됩니다.
+Guild Storage is open only for 2 minutes, and will close automatically.
+*/
+ MSG_GUILD_STORAGE_CLOSE_TIMEOUT = 0x9f5,
+#endif
+#if PACKETVER >= 20131204
+/*20131204 to latest
+Incorrect GameSamba ID. Please Try Again.
+*/
+ MSG_INCORRECT_GAMESAMBEID = 0x9f6,
+/*20131204 to latest
+%s [%d옵션] : %d 개
+%s [%d Option]: %d Quantity
+*/
+ MSG_EA5 = 0x9f7,
+#endif
+#if PACKETVER >= 20131211
+/*20131211 to latest
+코인이 필요합니다.
+Requires a Coin.
+*/
+ MSG_USESKILL_FAIL_COINTS = 0x9f8,
+/*20131211 to latest
+코인이 %d 개가 필요합니다.
+%d Coins are required.
+*/
+ MSG_USESKILL_FAIL_COINTS_NUM = 0x9f9,
+/*20131211 to latest
+개틀링건 계열의 총기류를 장착한 상태여야 합니다.
+Gatling Gun should be equipped with bullets.
+*/
+ MSG_FAIL_NEED_EQUIPPED_GUN_GATLING = 0x9fa,
+/*20131211 to latest
+샷건 계열의 총기류를 장착한 상태여야 합니다.
+Shotguns should be equipped with bullets.
+*/
+ MSG_FAIL_NEED_EQUIPPED_GUN_SHOTGUN = 0x9fb,
+/*20131211 to latest
+라이플 계열의 총기류를 장착한 상태여야 합니다.
+Rifle should be equipped with bullets.
+*/
+ MSG_FAIL_NEED_EQUIPPED_GUN_RIFLE = 0x9fc,
+/*20131211 to latest
+리볼버 계열의 총기류를 장착한 상태여야 합니다.
+Pair of Revolver should be equipped with bullets.
+*/
+ MSG_FAIL_NEED_EQUIPPED_GUN_HANDGUN = 0x9fd,
+/*20131211 to latest
+성속성 블릿을 장착해야 합니다
+[Silver Bullet] weapon class must be equipped.
+*/
+ MSG_FAIL_NEED_EQUIPPED_PROPERTY_SAINT_BULLET = 0x9fe,
+/*20131211 to latest
+아이템 판매 내역
+Item Sell History
+*/
+ MSG_MERCHANT_SOLD_ITEM_LOG = 0x9ff,
+/*20131211 to latest
+아이템 구매 내역
+Item Purchase History
+*/
+ MSG_MERCHANT_ITEM_BUY_LOG = 0xa00,
+#endif
+#if PACKETVER >= 20131218
+/*20131218 to latest
+그레네이드런쳐 계열의 총기류를 장착한 상태여야 합니다.
+Grenade Launcher should be equipped with bullets.
+*/
+ MSG_FAIL_NEED_EQUIPPED_GUN_GRANADE = 0xa01,
+/*20131218 to latest
+[히트배럴],[매드니스 캔슬러],[플래티넘 알터] 의 효과들은 중첩하여 사용할 수 없습니다.
+[Heat barrel],[Last Stand],[Platinum Alter] cannot be used while sitting.
+*/
+ MSG_FAIL_DUPLICATE_HEAT_BARREL_GS_MADNESSCANCEL_P_ALTER = 0xa02,
+#endif
+#if PACKETVER >= 20131223
+/*20131223 to latest
+현재 맵에서는 사용할 수 없는 스킬입니다.
+Cannot use skill in this map.
+*/
+ MSG_USESKILL_FAIL_MAP = 0xa03,
+#endif
+#if PACKETVER >= 20140108
+/*20140108 to latest
+길드 창고를 이용중인 경우 창고의 모든 아이템이 사라지게 됩니다.
+If you are using a guild storage, all items inside it will disappear.
+*/
+ MSG_GUILD_STORAGE_WARNING = 0xa04,
+#endif
+#if PACKETVER >= 20140115
+/*20140115 to latest
+http://ragnarok.gamesamba.com/paytest.html
+http://ragnarok.gamesamba.com/
+*/
+ MSG_AMERICA_CASHSHOP_URL_GAMESAMBA = 0xa05,
+/*20140115 to latest
+로그인을 위해 패스워드를 입력해주세요.
+Please enter a password to login.
+*/
+ MSG_SECOND_PASSWORD_INFO_4 = 0xa06,
+#endif
+#if PACKETVER >= 20140129
+/*20140129 to latest
+펫 진화
+Pet Evolution
+*/
+ MSG_PET_EVOLUTION = 0xa07,
+/*20140129 to latest
+진화 - %s
+Evolution - %s
+*/
+ MSG_PET_EVOLUTION_WITH_PET_NAME = 0xa08,
+/*20140129 to latest
+진화에는 다음의 재료가 필요합니다.
+Evolution requires the following ingredients:
+*/
+ MSG_PET_EVOLUTION_NEED_ITEM = 0xa09,
+/*20140129 to latest
+진화 하시겠습니까?
+Are you sure you want to evolve your pet?
+*/
+ MSG_DO_YOU_WANT_TO_EVOLVE_PET = 0xa0a,
+/*20140129 to latest
+알 수 없는 오류
+Unknown Error
+*/
+ MSG_PET_EVOLUTION_FAIL_UNKNOWN = 0xa0b,
+/*20140129 to latest
+소환된펫을 갖고 있지 않습니다.
+Pet Cannot be hatched.
+*/
+ MSG_PET_EVOLUTION_FAIL_NOTEXIST_CALLPET = 0xa0c,
+/*20140129 to latest
+요청한 것이 펫알이 아닙니다.
+It is not requested petal.
+*/
+ MSG_PET_EVOLUTION_FAIL_NOT_PETEGG = 0xa0d,
+/*20140129 to 20140205
+진화가 불가능한 요청입니다.
+20140212 to latest
+진화 재료가 부족합니다.
+Evolution material is low.
+*/
+ MSG_PET_EVOLUTION_FAIL_RECIPE = 0xa0e,
+/*20140129 to latest
+진화에 필요한 재료가 부족합니다.
+Insufficient materials for evolution.
+*/
+ MSG_PET_EVOLUTION_FAIL_MATERIAL = 0xa0f,
+/*20140129 to latest
+친밀도가 절친인 상태에서만 진화가 가능합니다.
+Loyal Intimacy is required to evolve.
+*/
+ MSG_PET_EVOLUTION_FAIL_RG_FAMILIAR = 0xa10,
+#endif
+#if PACKETVER >= 20140212
+/*20140212 to 20170830
+자동 먹이 주기
+20170906 to latest
+펫 자동 먹이 주기
+Automatic feeding
+*/
+ MSG_PET_AUTO_FEEDING = 0xa11,
+/*20140212 to latest
+펫에게 먹이를 주었습니다. '%s' 잔여량 %d개
+Feeding the pet. %d '%d' remaining
+*/
+ MSG_PET_AUTO_FEEDING_REST = 0xa12,
+/*20140212 to 20170830
+자동 먹이 주기 활성화 On
+20170906 to latest
+펫 자동 먹이 주기 활성화 On
+Automatic feeding turned On
+*/
+ MSG_PET_AUTO_FEEDING_ON = 0xa13,
+/*20140212 to 20170830
+자동 먹이 주기 활성화 Off
+20170906 to latest
+펫 자동 먹이 주기 활성화 Off
+Automatic feeding turned Off
+*/
+ MSG_PET_AUTO_FEEDING_OFF = 0xa14,
+/*20140212 to latest
+갱신
+Update
+*/
+ MSG_REFRESH = 0xa15,
+/*20140212 to 20140702
+%d 분전
+20140709 to latest
+%d 분 전
+%d minutes ago
+*/
+ MSG_TIME_LINE_MINUTE = 0xa16,
+/*20140212 to 20140702
+%d 시간전
+20140709 to latest
+%d 시간 전
+%d hours ago
+*/
+ MSG_TIME_LINE_HOUR = 0xa17,
+/*20140212 to 20140702
+%d 일전
+20140709 to latest
+%d 일 전
+%d days ago
+*/
+ MSG_TIME_LINE_DAY = 0xa18,
+#endif
+#if PACKETVER >= 20140319
+/*20140319 to latest
+%d%% ( Premium %d%% + %s Server )
+%d%%% ( Premium %d%%% + %s Server )
+*/
+ MSG_BASIC_EXP_MSG_PH = 0xa19,
+#endif
+#if PACKETVER >= 20140326
+/*20140326 to latest
+우편 발송
+Mailed
+*/
+ MSG_SEND_MAIL = 0xa1a,
+/*20140326 to latest
+메일이 전송되었습니다.
+Your mail has been sent.
+*/
+ MSG_MAIL_SENT = 0xa1b,
+/*20140326 to latest
+아이템이 인벤토리로 이동되었습니다.
+This item has been moved to the inventory.
+*/
+ MSG_GET_ITEMS_FROM_MAIL_SUCCEED = 0xa1c,
+/*20140326 to latest
+아이템 받기가 실패하였습니다.
+Failed to get items.
+*/
+ MSG_GET_ITEMS_FROM_MAIL_FAILED = 0xa1d,
+/*20140326 to latest
+인벤토리를 비워주세요
+Please empty your inventory.
+*/
+ MSG_GET_ITEMS_FROM_MAIL_OVERWEIGHT = 0xa1e,
+/*20140326 to latest
+제니를 받았습니다.
+Zeny received.
+*/
+ MSG_GET_ZENY_FROM_MAIL_SUCCEED = 0xa1f,
+/*20140326 to latest
+제니 받기가 실패하였습니다.
+Failed to get zeny.
+*/
+ MSG_GET_ZENY_FROM_MAIL_FAILED = 0xa20,
+/*20140326 to latest
+제니의 한계치를 넘었습니다.
+Exceeded the limits of zenny.
+*/
+ MSG_GET_ZENY_FROM_MAIL_OVERAMOUNT = 0xa21,
+/*20140326 to latest
+아이템 첨부 성공
+Items attached success
+*/
+ MSG_SET_ITEMS_TO_MAIL_SUCCEED = 0xa22,
+/*20140326 to latest
+받는 사람의 이름이 반드시 들어가야 합니다.
+The name of the recipient must be included.
+*/
+ MSG_INVALID_MAIL_RECIEVER_INFO = 0xa23,
+/*20140326 to 20140416
+제목의 길이는 4자이상 이어야 합니다.
+20140423 to 20141001
+제목의 길이는 4자이상 16자 이하여야 합니다.
+20141008 to latest
+제목의 길이는 한글 2자~25자, 영문 4자~50자 이어야 합니다.
+The length of the title must be 4 to 50 characters long.
+*/
+ MSG_INVALID_MAIL_TITLE_INFO = 0xa24,
+/*20140326 to latest
+메일 전송이 실패하였습니다.
+Mail delivery failed.
+*/
+ MSG_FAILED_SEND_MAIL = 0xa25,
+/*20140326 to latest
+적절하지 못한 아이템으로 전송 실패하였습니다.
+Transmission has failed to inappropriate items.
+*/
+ MSG_FAILED_SEND_MAIL_ITEM = 0xa26,
+/*20140326 to latest
+받는 사람의 정보가 존재하지 않습니다.
+Information of the recipient does not exist.
+*/
+ MSG_FAIELD_SEND_MAIL_TO = 0xa27,
+#endif
+#if PACKETVER >= 20140402
+/*20140402 to latest
+%s [%d옵션]
+%s [%d Option]
+*/
+ MSG_EA6 = 0xa28,
+/*20140402 to latest
+레벨은 1~%d 사이의 숫자를 입력해 주세요.
+Level, enter a number between 1 and %d.
+*/
+ MSG_PARTY_BOOKING_ERR5R2 = 0xa29,
+#endif
+#if PACKETVER >= 20140409
+/*20140409 to latest
+소지창의 여유공간을 확보해주세요.
+Please free the window possessing space.
+*/
+ MSG_ITEM_WND_OVERFULL = 0xa2a,
+/*20140409 to 20140416
+수신자의 메일 보관 용량이 초과되었습니다.
+20140423 to latest
+메일 보내기 횟수가 초과되었습니다.
+Sending mail count exceeded.
+*/
+ MSG_FAILED_MAIL_LIMIT_CNT = 0xa2b,
+#endif
+#if PACKETVER >= 20140416
+/*20140416 to latest
+메일을 열 수 없습니다.
+You can not open the mail.
+*/
+ MSG_FAILED_TO_WRITE_MAIL = 0xa2c,
+/*20140416 to latest
+You are currently joined in CLan !!
+You are currently joined in Clan !!
+*/
+ MSG_JOINED_IN_CLAN = 0xa2d,
+/*20140416 to latest
+골드 PC방 마일리지 정보
+Gold PC rooms mileage information
+*/
+ MSG_GOLDPCCAFE_MILEAGE = 0xa2e,
+#endif
+#if PACKETVER >= 20140423
+/*20140423 to latest
+펫 액세서리를 해제해야 진화가 가능합니다.
+Unequip pet accessories first to start evolution
+*/
+ MSG_PET_EVOLUTION_FAIL_PET_ACC_OFF = 0xa2f,
+/*20140423 to 20140430
+ / %d 분후
+20140508 to 20140702
+%d 분후
+20140709 to latest
+%d 분 후
+%d minutes later
+*/
+ MSG_TIME_LINE_MINUTE2 = 0xa30,
+/*20140423 to 20140430
+ / %d 시간후
+20140508 to 20140702
+%d 시간후
+20140709 to latest
+%d 시간 후
+%d hours later
+*/
+ MSG_TIME_LINE_HOUR2 = 0xa31,
+/*20140423 to 20140430
+ / %d 일후
+20140508 to 20140702
+%d 일후
+20140709 to latest
+%d 일 후
+%d days later
+*/
+ MSG_TIME_LINE_DAY2 = 0xa32,
+/*20140423 to latest
+확인 버튼을 눌러 C-CODE를 확인하세요.
+Press the OK button to confirm the C-CODE.
+*/
+ MSG_INVALID_CCODE_INFO = 0xa33,
+/*20140423 to latest
+첨부된 물품을 획득 후 삭제가 가능합니다.
+After obtaining the attached article can be deleted.
+*/
+ MSG_FAILED_DELETE_MAIL = 0xa34,
+/*20140423 to latest
+현재 보유 제니 보다 많은 제니를 보낼 수 없습니다.
+You can not send any more zeny.
+*/
+ MSG_FAILED_SEND_MAIL_ZENY = 0xa35,
+/*20140423 to latest
+수수료 : %s Zeny
+Fee: %s Zeny
+*/
+ MSG_SEND_MAIL_COMMISSION = 0xa36,
+/*20140423 to latest
+받는 사람의 이름이 존재하지 않습니다.
+The recipient's name does not exist.
+*/
+ MSG_FAILE_MAIL_RECIEVER_INFO = 0xa37,
+#endif
+#if PACKETVER >= 20140430
+/*20140430 to latest
+E X P : %.1f%% ( basic %.1f%% premium %.1f%% + %s %.1f%%)
+EXP : %.1f%% (Basic %.1f%% Premium %.1f%% + %s %.1f%%)
+*/
+ MSG_TAIWAN_PERSONALINFO_EXPMSG = 0xa38,
+/*20140430 to latest
+DROP : %.1f%% ( basic %.1f%% premium %.1f%% + %s %.1f%%)
+DROP : %.1f%% (Basic %.1f%% Premium %.1f%% + %s %.1f%%)
+*/
+ MSG_TAIWAN_PERSONALINFO_DROPMSG = 0xa39,
+/*20140430 to latest
+DEATH : %.1f%% ( basic %.1f%% premium %.1f%% + %s %.1f%%)
+DEATH: %.1f%% (Basic %.1f%% Premium %.1f%% + %s %.1f%%)
+*/
+ MSG_TAIWAN_PERSONALINFO_DEATHMSG = 0xa3a,
+#endif
+#if PACKETVER >= 20140514
+/*20140514 to 20140528
+보유 가능한 최대 마일리지 : %d
+20140605 to latest
+골드 PC방 마일리지는 최대 %d점까지 모을 수 있습니다.
+You can accumulate points of PC Gold-club up to %d points maximum.
+*/
+ MSG_MILEAGE_HELP = 0xa3b,
+#endif
+#if PACKETVER >= 20140521
+/*20140521 to 20140521
+아이템 버리기가 불 가능한 서버 입니다.
+Items discard is imposible in server.
+20140528 to latest
+해당 서버에서 사용 할 수 없는 기능 입니다
+This function can not be used on the server.
+*/
+ MSG_RESTRAINT_OF_TRADE_1 = 0xa3c,
+/*20140521 to latest
+수래 이용이 불 가능한 서버 입니다.
+Imposible to use in server.
+*/
+ MSG_RESTRAINT_OF_TRADE_2 = 0xa3d,
+/*20140521 to latest
+옥션 이용이 불 가능한 서버 입니다.
+The auction is not available in server.
+*/
+ MSG_RESTRAINT_OF_TRADE_3 = 0xa3e,
+/*20140521 to latest
+거래가 불 가능한 서버 입니다.
+The deal is imposible in server.
+*/
+ MSG_RESTRAINT_OF_TRADE_4 = 0xa3f,
+/*20140521 to 20140521
+아이템 편지 보내기가 불 가능한 서버 입니다.
+20140528 to latest
+아이템 버리기가 불 가능한 서버 입니다.
+Items discard is imposible in server.
+*/
+ MSG_RESTRAINT_OF_TRADE_5 = 0xa40,
+/*20140521 to latest
+상점 판매 기능을 사용할수 없습니다.
+Stores selling features are not available.
+*/
+ MSG_RESTRAINT_OF_TRADE_6 = 0xa41,
+/*20140521 to latest
+소환물의 SP가 부족합니다.
+The SP's summoned enough.
+*/
+ MSG_USESKILL_FAIL_SUMMON_SP_INSUFFICIENT = 0xa42,
+#endif
+#if PACKETVER >= 20140528
+/*20140528 to 20140702
+Weight : %s/%s
+20140709 to latest
+%s/%s
+*/
+ MSG_SEND_MAIL_WEIGHT = 0xa43,
+/*20140528 to latest
+메일 내용의 최대 길이는 1K 이하 입니다.
+The maximum length of the message content is 1K.
+*/
+ MSG_INVALID_MAIL_CONTENTS_INFO = 0xa44,
+/*20140528 to latest
+아이템 첨부 실패
+Failed to attach an item.
+*/
+ MSG_SET_ITEMS_TO_MAIL_FAILED = 0xa45,
+/*20140528 to latest
+메일에 첨부할수 있는 아이템의 무게가 초과되었습니다.
+The weight of the items that can be attached to mail has been exceeded.
+*/
+ MSG_SET_ITEMS_TO_MAIL_OVER_WEIGHT = 0xa46,
+#endif
+#if PACKETVER >= 20140611
+/*20140611 to latest
+이미 서비스 중입니다. 잠시 후 다시 시도해 주세요.
+Is already in service. Please try again in a few minutes.
+*/
+ MSG_DYNAMICNPC_FAIL_DUPLICATENAME = 0xa47,
+#endif
+#if PACKETVER >= 20140618
+/*20140618 to 20140924
+환상의 룰렛창을 열 수 없습니다.
+20141001 to latest
+행운의 룰렛창을 열 수 없습니다.
+Unable to open the window of Lucky Roulette.
+*/
+ MSG_FAILED_OPEN_ROULLETTE = 0xa48,
+/*20140618 to 20140924
+환상의 룰렛창을 닫을 수 없습니다.
+20141001 to latest
+행운의 룰렛창을 닫을 수 없습니다.
+Unable to close the window of the Lucky Roulette.
+*/
+ MSG_FAILED_CLOSE_ROULLETTE = 0xa49,
+/*20140618 to 20140924
+환상의 룰렛을 시작 할 수 없습니다.
+20141001 to latest
+행운의 룰렛을 시작 할 수 없습니다.
+You can not start a roulette wheel of fortune.
+*/
+ MSG_FAILED_GENERATE_ROULLETTE = 0xa4a,
+/*20140618 to 20140924
+환상의 룰렛을 시작하기 위해서는 포인트가 필요합니다.
+20141001 to latest
+행운의 룰렛을 시작하기 위해서는 포인트가 필요합니다.
+Points is required to play Lucky Roulette.
+*/
+ MSG_NOT_ENOUGH_ROULLETTE_POINT = 0xa4b,
+/*20140618 to latest
+당첨된 아이템을 수령할 수 없습니다.
+You can not receive a winning items.
+*/
+ MSG_FAILED_RECV_ITEM = 0xa4c,
+#endif
+#if PACKETVER >= 20140625
+/*20140625 to latest
+인벤토리에 아이템 개수가 초과되었습니다.
+The number of items in the inventory has been exceeded.
+*/
+ MSG_FAILED_RECV_ITEM_OVERCOUNT = 0xa4d,
+/*20140625 to latest
+무게가 초과하였습니다. 소지창의 여유공간을 확보해주세요.
+The weight has been exceeded. Please free up the possesion window.
+*/
+ MSG_FAILED_RECV_ITEM_OVERWEIGHT = 0xa4e,
+/*20140625 to latest
+노점 개설 실패.
+Failed to open stalls.
+*/
+ MSG_MERCHANTSHOP_MAKING_FAIL = 0xa4f,
+/*20140625 to latest
+룰렛이 돌고 있습니다. 경품을 확인 후에 다시 시도해주세요.
+The roulette wheel is spinning. Please try again after checking with prizes.
+*/
+ MSG_FAILED_CLOSE_ROULLETTEWND = 0xa50,
+#endif
+#if PACKETVER >= 20140702
+/*20140702 to 20140917
+환상의 룰렛
+20140924 to latest
+행운의 룰렛
+Lucky Roulette
+*/
+ MSG_ROULLETTE_WND = 0xa51,
+/*20140702 to latest
+아이템 판매 시 소리로 알림
+Notify when item sell out
+*/
+ MSG_SOUNDEFFECT_ITEMSELLWND = 0xa52,
+#endif
+#if PACKETVER >= 20140709
+/*20140709 to latest
+수수료를 확인해주세요.
+Please check the fees.
+*/
+ MSG_FAILED_SEND_MAIL_ITEMS = 0xa53,
+/*20140709 to 20140716
+유저이름확인
+20140723 to latest
+유저이름 확인
+Verify user name
+*/
+ MSG_CHECK_USER_NAME = 0xa54,
+/*20140709 to latest
+삭제 예정
+Schedule deletion
+*/
+ MSG_DELETE_DUE_DATE = 0xa55,
+#endif
+#if PACKETVER >= 20140723
+/*20140723 to latest
+달성과제
+Achievable challenge
+*/
+ MSG_ACHIEVEMENT_SYSTEM = 0xa56,
+/*20140723 to latest
+달성총점
+Achieve overall
+*/
+ MSG_ACHIEVEMENT_TOTAL_SCORE = 0xa57,
+/*20140723 to latest
+달성등급
+Achieve rank
+*/
+ MSG_ACHIEVEMENT_GRADE = 0xa58,
+/*20140723 to 20150217
+다음 보상박스까지 [%5d]점
+20150225 to latest
+다음 달성등급까지 [%5d]점
+The following compensation box until [% 5d] point
+*/
+ MSG_ACHIEVEMENT_SCORE_REQUIRED_TO_REWARD = 0xa59,
+/*20140723 to 20140723
+개요
+Overview
+20140730 to latest
+진척상황
+Progress
+*/
+ MSG_ACHIEVEMENT_SUMMARY_TITLE = 0xa5a,
+/*20140723 to 20140723
+일반
+General
+20140730 to latest
+최근 달성 업적
+Recent Achievements
+*/
+ MSG_ACHIEVEMENT_RECENT_ACHIEVEMENT = 0xa5b,
+/*20140723 to 20140723
+캐릭터
+Role
+20140730 to 20140924
+개다래 열매 품목
+20141001 to latest
+仙貝 품목
+Cracker Item
+*/
+ MSG_CASH_GEDARE1 = 0xa5c,
+/*20140723 to 20140723
+행동
+Action
+20140730 to 20140924
+개다래 열매 : %d / %d GD
+20141001 to latest
+仙貝 : %d / %d
+Cracker : %d / %d
+*/
+ MSG_CASH_GEDARE2 = 0xa5d,
+/*20140723 to 20140723
+전투
+Battle
+20140730 to 20140924
+개다래 열매가 부족합니다.
+20141001 to latest
+仙貝가 부족합니다.
+Cracker is low.
+*/
+ MSG_CASH_GEDARE_FAIL_MONEY = 0xa5e,
+/*20140723 to 20140723
+모험
+Adventure
+20140730 to 20140924
+%s GD
+20141001 to latest
+%s
+%s
+*/
+ MSG_CASH_GEDARE_MONEY = 0xa5f,
+/*20140723 to 20140723
+결투
+Duel
+20140813 to latest
+개요
+Overview
+*/
+ MSG_ACHIEVEMENT_TAB_SUMMARY = 0xa60,
+/*20140723 to 20140723
+수련
+Lily
+20140813 to latest
+일반
+General
+*/
+ MSG_ACHIEVEMENT_TAB_GENERAL = 0xa61,
+/*20140723 to 20140723
+퀘스트
+Quest
+20140813 to latest
+캐릭터
+Role
+*/
+ MSG_ACHIEVEMENT_TAB_GENERAL_CHARACTER = 0xa62,
+/*20140723 to 20140723
+에피소드
+Episode
+20140813 to latest
+행동
+Action
+*/
+ MSG_ACHIEVEMENT_TAB_GENERAL_ACTION = 0xa63,
+/*20140723 to 20140723
+이벤트
+Evt
+20140813 to latest
+기타
+Other
+*/
+ MSG_ACHIEVEMENT_TAB_GENERAL_REST = 0xa64,
+/*20140723 to 20140723
+활동
+20140813 to latest
+모험
+Adventure
+*/
+ MSG_ACHIEVEMENT_TAB_ADVENTURE = 0xa65,
+/*20140723 to 20140723
+커뮤니티
+20140813 to latest
+룬미드가츠
+Rune Midgarts
+*/
+ MSG_ACHIEVEMENT_TAB_ADVENTURE_RUNEMIDGARTS = 0xa66,
+/*20140723 to 20140723
+제련
+Refining
+20140813 to latest
+슈발츠발드
+Schwartzvald
+*/
+ MSG_ACHIEVEMENT_TAB_ADVENTURE_SCHWARZWALD = 0xa67,
+/*20140723 to 20140723
+경제
+20140813 to latest
+아루나펠츠
+Arunafeltz
+*/
+ MSG_ACHIEVEMENT_TAB_ADVENTURE_ARUNAFELTZ = 0xa68,
+/*20140723 to 20140723
+생활
+20140813 to latest
+이계
+Commandment
+*/
+ MSG_ACHIEVEMENT_TAB_ADVENTURE_ANOTHERWORLD = 0xa69,
+/*20140723 to 20140723
+축제
+20140813 to latest
+로컬라이징
+Localizing
+*/
+ MSG_ACHIEVEMENT_TAB_ADVENTURE_LOCALIZING = 0xa6a,
+/*20140723 to 20140723
+위업
+Feat
+20140813 to latest
+던전
+Dungeon
+*/
+ MSG_ACHIEVEMENT_TAB_ADVENTURE_DUNGEON = 0xa6b,
+/*20140723 to 20140723
+달성한 과제
+Achieved challenge
+20140813 to latest
+전투
+Battle
+*/
+ MSG_ACHIEVEMENT_TAB_BATTLE = 0xa6c,
+/*20140723 to 20140723
+진척상황
+Progress
+20140813 to latest
+결투
+Duel
+*/
+ MSG_ACHIEVEMENT_TAB_BATTLE_PVP = 0xa6d,
+/*20140723 to 20140723
+최근 달성 업적
+Recent Achievements
+20140813 to latest
+수련
+Lily
+*/
+ MSG_ACHIEVEMENT_TAB_BATTLE_TRAINING = 0xa6e,
+#endif
+#if PACKETVER >= 20140813
+/*20140813 to latest
+퀘스트
+Quest
+*/
+ MSG_ACHIEVEMENT_TAB_QUEST = 0xa6f,
+/*20140813 to latest
+에피소드
+Episode
+*/
+ MSG_ACHIEVEMENT_TAB_QUEST_EPISODE = 0xa70,
+/*20140813 to latest
+일반
+General
+*/
+ MSG_ACHIEVEMENT_TAB_QUEST_GENERAL = 0xa71,
+/*20140813 to latest
+메모리얼
+Memorial
+*/
+ MSG_ACHIEVEMENT_TAB_MEMORIAL = 0xa72,
+/*20140813 to latest
+미드가르드
+Midgard
+*/
+ MSG_ACHIEVEMENT_TAB_MEMORIAL_MIDGARD = 0xa73,
+/*20140813 to latest
+이계
+Commandment
+*/
+ MSG_ACHIEVEMENT_TAB_MEMORIAL_ANOTHERWORLD = 0xa74,
+/*20140813 to latest
+기타
+Other
+*/
+ MSG_ACHIEVEMENT_TAB_MEMORIAL_REST = 0xa75,
+/*20140813 to latest
+위업
+Feat
+*/
+ MSG_ACHIEVEMENT_TAB_ACHIEVEMENT = 0xa76,
+/*20140813 to latest
+달성한 과제
+Achieved challenge
+*/
+ MSG_ACHIEVEMENT_TAB_TOTAL = 0xa77,
+/*20140813 to latest
+더 이상 추가할 수 없습니다.
+You cannot add anymore.
+*/
+ MSG_FAIL_ADD_ACHIEVEMENT_TRACING = 0xa78,
+/*20140813 to latest
+< %s > 달성하였습니다.
+< %S > achieved.
+*/
+ MSG_NOTICE_COMPLETE_ACHIEVEMENT = 0xa79,
+#endif
+#if PACKETVER >= 20140827
+/*20140827 to latest
+only otp user login allow
+Only OTP users are allowed
+*/
+ MSG_OTPUSER_ONLY = 0xa7a,
+#endif
+#if PACKETVER >= 20140917
+/*20140917 to latest
+이 버튼을 누를 시, 지정된 상품을 받게되며 룰렛은 초기화 됩니다.
+When this button pressed, you will receive a specified initialized roulette item.
+*/
+ MSG_GET_ROULLETE_PRIZE = 0xa7b,
+/*20140917 to latest
+이 버튼을 누를 시, 깜빡이는 화살표의 라인부터 룰렛을 시작 합니다.
+When this button pressed, the flashing arrows from the lines of the roulette wheel begins.
+*/
+ MSG_NOTICE_NEXT_ROULLETE_STAGE = 0xa7c,
+/*20140917 to latest
+칭호
+Style
+*/
+ MSG_TITLE_EQUIPMENT = 0xa7d,
+/*20140917 to latest
+칭호 해제
+Title release
+*/
+ MSG_TAKEOFF_TITLE = 0xa7e,
+/*20140917 to latest
+길드 생성을 할 수 없는 지역입니다.
+Can't create a Guild in this area.
+*/
+ MSG_GUILD_MAKE_GUILD_NOT_PERMITTED_MAP = 0xa7f,
+/*20140917 to latest
+길드 해체를 할 수 없는 지역입니다.
+Can't disband a Guild in this area.
+*/
+ MSG_GUILD_DISORGANIZE_GUILD_NOT_PERMITTED_MAP = 0xa80,
+/*20140917 to latest
+길드 가입을 할 수 없는 지역입니다.
+Can't join a Guild in this area.
+*/
+ MSG_GUILD_JOIN_GUILD_NOT_PERMITTED_MAP = 0xa81,
+/*20140917 to latest
+길드 탈퇴를 할 수 없는 지역입니다.
+Can't leave a Guild in this area.
+*/
+ MSG_GUILD_LEAVE_GUILD_NOT_PERMITTED_MAP = 0xa82,
+/*20140917 to latest
+길드원 추방을 할 수 없는 지역입니다.
+Can't deport a Guild in this area.
+*/
+ MSG_GUILD_EXPEL_GUILD_NOT_PERMITTED_MAP = 0xa83,
+/*20140917 to latest
+길드직위 변경을 할 수 없는 지역입니다.
+Can't change a Guild title in this area
+*/
+ MSG_GUILD_POSITION_CHANGE_NOT_PERMITTED_MAP = 0xa84,
+/*20140917 to latest
+아이템 소지량을 5칸이상 비워주세요
+Please empty at least 5 amount of possession in item window.
+*/
+ MSG_NOT_ENOUGH_SPACE_IN_ITEM_BODY = 0xa85,
+/*20140917 to latest
+E X P : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%%)
+EXP : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%% )
+*/
+ MSG_JPN_PERSONALINFO_EXPMSG = 0xa86,
+/*20140917 to latest
+DROP : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%%)
+DROP : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%% )
+*/
+ MSG_JPN_PERSONALINFO_DROPMSG = 0xa87,
+/*20140917 to latest
+DEATH : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%%)
+DEATH : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%% )
+*/
+ MSG_JPN_PERSONALINFO_DEATHMSG = 0xa88,
+/*20140917 to latest
+첨부할 수 있는 아이템의 갯수가 초과되었습니다.
+The number of items that can be attached is exceeded.
+*/
+ MSG_SET_ITEMS_TO_MAIL_OVERCOUNT = 0xa89,
+/*20140917 to latest
+아이템 구매 시 소리로 알림
+Notify when item purchased
+*/
+ MSG_SOUNDEFFECT_ITEMBUYWND = 0xa8a,
+#endif
+#if PACKETVER >= 20140924
+/*20140924 to latest
+첨부할 수 없는 아이템입니다.
+Unable to attach the items.
+*/
+ MSG_ID_A8B = 0xa8b,
+#endif
+#if PACKETVER >= 20141001
+/*20141001 to latest
+꽝에 당첨되었으므로 다음 상위 단계의 룰렛을 돌리실 수 없습니다.
+Because you can not win a slam room and turn the roulette of the next higher step.
+*/
+ MSG_ID_A8C = 0xa8c,
+/*20141001 to latest
+답장쓰기
+Replying
+*/
+ MSG_ID_A8D = 0xa8d,
+/*20141001 to latest
+내용읽기
+Read more
+*/
+ MSG_ID_A8E = 0xa8e,
+/*20141001 to latest
+메일삭제
+Delete message
+*/
+ MSG_ID_A8F = 0xa8f,
+/*20141001 to latest
+仙貝 : %d
+Crackers : %d
+*/
+ MSG_ID_A90 = 0xa90,
+/*20141001 to latest
+%s %s 仙貝
+%s %s crackers
+*/
+ MSG_ID_A91 = 0xa91,
+/*20141001 to latest
+仙貝
+Crackers
+*/
+ MSG_ID_A92 = 0xa92,
+/*20141001 to latest
+Total : %d 仙貝
+Total : %d Crackers
+*/
+ MSG_ID_A93 = 0xa93,
+/*20141001 to latest
+%d -> %s 仙貝
+%d -> %s Crackers
+*/
+ MSG_ID_A94 = 0xa94,
+/*20141001 to latest
+%s 仙貝
+%s Crackers
+*/
+ MSG_ID_A95 = 0xa95,
+/*20141001 to latest
+ Current 仙貝 : %s
+ Current Crackers : %s
+*/
+ MSG_ID_A96 = 0xa96,
+/*20141001 to latest
+ %s : %s 仙貝
+ %s : %s Crackers
+*/
+ MSG_ID_A97 = 0xa97,
+/*20141001 to latest
+%10s 仙貝
+%10s Crackers
+*/
+ MSG_ID_A98 = 0xa98,
+/*20141001 to latest
+Total : %s 仙貝
+Total : %s Crackers
+*/
+ MSG_ID_A99 = 0xa99,
+/*20141001 to latest
+※수수료 3% / 최소 1仙貝의 수수료 차감
+* Commission 3% / Minimum 1 Crackers comission deducted
+*/
+ MSG_ID_A9A = 0xa9a,
+/*20141001 to latest
+仙貝 입니다.
+The Crackers.
+*/
+ MSG_ID_A9B = 0xa9b,
+/*20141001 to latest
+^0000ff仙貝 이상^000000입니다.
+입력금액이 맞습니까?
+^0000ff more than crackers^000000Did you enter the correct amount?
+*/
+ MSG_ID_A9C = 0xa9c,
+/*20141001 to latest
+10억仙貝이상 안전 확인
+Over than 10billions secure check
+*/
+ MSG_ID_A9D = 0xa9d,
+/*20141001 to latest
+10억 仙貝 이상 입력하셔도 가격은 10억 仙貝로 판매됩니다.
+If you fill over 1 billion, the price will be automatically set as 10 billion Xianbei.
+*/
+ MSG_ID_A9E = 0xa9e,
+/*20141001 to latest
+9,999仙貝 이상 입력하셔도 가격은 9,999仙貝로 판매됩니다.
+If you fill over 9,999 Xianbei, the price will automatically set as 9,999 Xianbei.
+*/
+ MSG_ID_A9F = 0xa9f,
+/*20141001 to latest
+가격이 0 仙貝인 아이템이 존재 합니다. 상점을 열수 없습니다!
+There are items priced 0 Xianbei. You cannot open vending.
+*/
+ MSG_ID_AA0 = 0xaa0,
+/*20141001 to latest
+상대 캐릭터가 최대 보유 仙貝량을 초과하여 거래가 불가능 합니다.
+The opponent is over the Xianbei limit. Trade failed.
+*/
+ MSG_ID_AA1 = 0xaa1,
+/*20141001 to latest
+%s 아이템의 가격을 10억仙貝 이하로 입력해 주세요.
+Please fill out %s item price less than 1 billion Xianbei.
+*/
+ MSG_ID_AA2 = 0xaa2,
+/*20141001 to latest
+%s : %s 仙貝 => %s EA
+%s: %s Xianbei => %s ea
+*/
+ MSG_ID_AA3 = 0xaa3,
+/*20141001 to latest
+제한 금액 : %s 仙貝
+Limited price: %s Xianbei
+*/
+ MSG_ID_AA4 = 0xaa4,
+/*20141001 to latest
+%s %s 仙貝 %d 개
+%s %s %d Xianbei
+*/
+ MSG_ID_AA5 = 0xaa5,
+/*20141001 to latest
+%s %d개를 %d 仙貝에 판매 하였습니다. 수수료는 3%% 입니다.
+%d %s are sold. In total %d Xianbei. 3%% charge will be imposed.
+*/
+ MSG_ID_AA6 = 0xaa6,
+#endif
+#if PACKETVER >= 20141008
+/*20141008 to latest
+RODEX
+*/
+ MSG_ID_AA7 = 0xaa7,
+/*20141008 to latest
+SEND
+*/
+ MSG_ID_AA8 = 0xaa8,
+/*20141008 to latest
+RECEIVE
+*/
+ MSG_ID_AA9 = 0xaa9,
+#endif
+#if PACKETVER >= 20141015
+/*20141015 to latest
+메일 작성창을 닫아주세요.
+Please close the mail compose window.
+*/
+ MSG_ID_AAA = 0xaaa,
+#endif
+#if PACKETVER >= 20141022
+/*20141022 to latest
+서버접근거부(A)
+Server access denied(A)
+*/
+ MSG_ID_AAB = 0xaab,
+/*20141022 to latest
+서버접근거부(B)
+Server access denied(B)
+*/
+ MSG_ID_AAC = 0xaac,
+#endif
+#if PACKETVER >= 20141112
+/*20141112 to latest
+장착된 화살/탄환 을 해제해야합니다.
+Unequipped Arrow/Ammunition.
+*/
+ MSG_ID_AAD = 0xaad,
+/*20141112 to latest
+인벤토리의 아이템이 소모되어 로덱스 쓰기창을 닫습니다.
+Consuming item in inventory will close mail compose window.
+*/
+ MSG_ID_AAE = 0xaae,
+#endif
+#if PACKETVER >= 20141119
+/*20141119 to latest
+소지하신 돋보기가 없습니다.
+Do not have Magnifier.
+*/
+ MSG_ID_AAF = 0xaaf,
+#endif
+#if PACKETVER >= 20141210
+/*20141210 to latest
+아이템을 버릴려면 메일 쓰기창을 닫아주세요.
+Close email window if you want to discard item.
+*/
+ MSG_ID_AB0 = 0xab0,
+/*20141210 to latest
+상대방이 친구 요청중입니다
+The opponent has already requested you to be a friend.
+*/
+ MSG_ID_AB1 = 0xab1,
+#endif
+#if PACKETVER >= 20141217
+/*20141217 to latest
+SCRIPT ERROR AID
+*/
+ MSG_ID_AB2 = 0xab2,
+/*20141217 to 20141231
+
+Errorfile : %s
+ErrorLine : %d 줄
+ErrorContext: %s
+20150107 to latest
+
+Errorfile : %s
+ErrorLine : %d 줄
+ErrorContent:
+*이전 줄 : %s
+*Errorline : %s
+*다음 줄:
+ %s
+
+Errorfile : %s
+ErrorLine : %d item
+ErrorContext: %s
+*/
+ MSG_ID_AB3 = 0xab3,
+#endif
+#if PACKETVER >= 20141224
+/*20141224 to latest
+ ^ff0000해당 아이템을 구매 하시겠습니까? %d포인트 및 %d 仙貝가 차감 됩니다.
+^ff0000Are you sure want to purchase the item? after confirmation will consume %d point and %d crackers.
+*/
+ MSG_ID_AB4 = 0xab4,
+/*20141224 to latest
+닫기
+Close
+*/
+ MSG_ID_AB5 = 0xab5,
+/*20141224 to latest
+퀘스트
+Quest
+*/
+ MSG_ID_AB6 = 0xab6,
+/*20141224 to latest
+퀘스트 아이콘 보기
+View Quest icon
+*/
+ MSG_ID_AB7 = 0xab7,
+/*20141224 to latest
+편의시설
+Facility
+*/
+ MSG_ID_AB8 = 0xab8,
+/*20141224 to latest
+편의시설 아이콘 보기
+View Facility icon
+*/
+ MSG_ID_AB9 = 0xab9,
+/*20141224 to latest
+길드원/파티원
+Guild/Party
+*/
+ MSG_ID_ABA = 0xaba,
+/*20141224 to 20150311
+길드원/파티원 표시
+20150318 to latest
+길드원/파티원 보기
+Show Guild/Party
+*/
+ MSG_ID_ABB = 0xabb,
+/*20141224 to latest
+기록하기
+Record
+*/
+ MSG_ID_ABC = 0xabc,
+/*20141224 to latest
+보스몬스터
+Boss Monster
+*/
+ MSG_ID_ABD = 0xabd,
+/*20141224 to latest
+나
+I
+*/
+ MSG_ID_ABE = 0xabe,
+/*20141224 to latest
+삭제 하시겠습니까?
+Are you sure want to delete it?
+*/
+ MSG_ID_ABF = 0xabf,
+/*20141224 to latest
+퀘스트 NPC
+Quest NPC
+*/
+ MSG_ID_AC0 = 0xac0,
+/*20141224 to latest
+메모할 내용을 기록합니다
+Record content
+*/
+ MSG_ID_AC1 = 0xac1,
+/*20141224 to latest
+저장하기
+Store
+*/
+ MSG_ID_AC2 = 0xac2,
+/*20141224 to latest
+메모하기
+Record
+*/
+ MSG_ID_AC3 = 0xac3,
+#endif
+#if PACKETVER >= 20141231
+/*20141231 to latest
+%s [%d옵션] %d개
+%s [%d Property] %d ea
+*/
+ MSG_ID_AC4 = 0xac4,
+/*20141231 to latest
+%s [%d옵션] %s Zeny
+%s [%d Property] %s Zeny
+*/
+ MSG_ID_AC5 = 0xac5,
+/*20141231 to latest
+%s [%d옵션] %d %s %d -> %s %s
+%s [%d Property] %d %s %d -> %s %s
+*/
+ MSG_ID_AC6 = 0xac6,
+/*20141231 to latest
+%s [%d옵션] %d %s %s %s
+%s [%d Property] %d %s %s %s
+*/
+ MSG_ID_AC7 = 0xac7,
+/*20141231 to latest
+%s [%d옵션] %d -> %s %s
+%s [%d Property] %d -> %s %s
+*/
+ MSG_ID_AC8 = 0xac8,
+/*20141231 to latest
+%s [%d옵션] %s %s
+%s [%d Property] %s %s
+*/
+ MSG_ID_AC9 = 0xac9,
+#endif
+#if PACKETVER >= 20150107
+/*20150107 to latest
+최소 거래 단위 100 仙貝 이상으로 설정 하셔야 합니다.
+The minimum trading unit must be 100 crackers or more.
+*/
+ MSG_ID_ACA = 0xaca,
+#endif
+#if PACKETVER >= 20150114
+/*20150114 to latest
+머리 색
+Hair color
+*/
+ MSG_ID_ACB = 0xacb,
+/*20150114 to latest
+머리 모양
+Hair style
+*/
+ MSG_ID_ACC = 0xacc,
+/*20150114 to latest
+옷 색
+Cloth color
+*/
+ MSG_ID_ACD = 0xacd,
+/*20150114 to latest
+옷 모양
+Cloth pattern
+*/
+ MSG_ID_ACE = 0xace,
+#endif
+#if PACKETVER >= 20150217
+/*20150217 to latest
+지원되지 않는 맵 입니다.
+Unsupported Map.
+*/
+ MSG_ID_ACF = 0xacf,
+#endif
+#if PACKETVER >= 20150304
+/*20150304 to 20150325
+2147483647 Zeny 이하로 입력 하십시오.
+20150401 to latest
+2,147,483,647 Zeny 이하로 입력 하십시오.
+Enter Zeny Below 2,147,483,647.
+*/
+ MSG_ID_AD0 = 0xad0,
+/*20150304 to latest
+1 Zeny 이상 입력 하십시오.
+Please Enter atleast 1 zeny.
+*/
+ MSG_ID_AD1 = 0xad1,
+/*20150304 to latest
+보유한 Zeny 가 없습니다.
+You do not hold any zeny.
+*/
+ MSG_ID_AD2 = 0xad2,
+/*20150304 to latest
+제니 창고
+Zeny Storage
+*/
+ MSG_ID_AD3 = 0xad3,
+/*20150304 to latest
+창고보유액
+in Bank
+*/
+ MSG_ID_AD4 = 0xad4,
+/*20150304 to latest
+소지금
+on hand
+*/
+ MSG_ID_AD5 = 0xad5,
+/*20150304 to latest
+입금
+Deposit
+*/
+ MSG_ID_AD6 = 0xad6,
+/*20150304 to latest
+출금
+Withdraw
+*/
+ MSG_ID_AD7 = 0xad7,
+/*20150304 to latest
+1 z UP
+1z UP
+*/
+ MSG_ID_AD8 = 0xad8,
+/*20150304 to latest
+1 z Down
+1z Down
+*/
+ MSG_ID_AD9 = 0xad9,
+/*20150304 to latest
+Max
+*/
+ MSG_ID_ADA = 0xada,
+/*20150304 to latest
+입력값이 없습니다
+There is no Input value
+*/
+ MSG_ID_ADB = 0xadb,
+/*20150304 to latest
+보유 Zeny 부족
+Not enough zeny
+*/
+ MSG_ID_ADC = 0xadc,
+/*20150304 to latest
+입력값 필요
+Input Required
+*/
+ MSG_ID_ADD = 0xadd,
+/*20150304 to latest
+문자 입력 불가
+Numbers only
+*/
+ MSG_ID_ADE = 0xade,
+/*20150304 to latest
+최대 입력 초과
+Exceeded max input
+*/
+ MSG_ID_ADF = 0xadf,
+/*20150304 to latest
+최소 입력 미만
+Below Minimum Input
+*/
+ MSG_ID_AE0 = 0xae0,
+/*20150304 to latest
+보유 Zeny 부족
+Not enough zeny
+*/
+ MSG_ID_AE1 = 0xae1,
+/*20150304 to latest
+은행 잔고 부족
+Insufficient funds
+*/
+ MSG_ID_AE2 = 0xae2,
+/*20150304 to latest
+최대 보유 Zeny 초과
+Exceeded max zeny
+*/
+ MSG_ID_AE3 = 0xae3,
+#endif
+#if PACKETVER >= 20150311
+/*20150311 to latest
+드롭 X
+Drop X
+*/
+ MSG_ID_AE4 = 0xae4,
+/*20150311 to latest
+창고 X
+Storage X
+*/
+ MSG_ID_AE5 = 0xae5,
+/*20150311 to latest
+카트 X
+Cart X
+*/
+ MSG_ID_AE6 = 0xae6,
+/*20150311 to latest
+메일 X
+Mail X
+*/
+ MSG_ID_AE7 = 0xae7,
+/*20150311 to latest
+교환창 X
+Trade X
+*/
+ MSG_ID_AE8 = 0xae8,
+/*20150311 to latest
+경매장 X
+Auction X
+*/
+ MSG_ID_AE9 = 0xae9,
+/*20150311 to latest
+길드창고 X
+Guild Storage X
+*/
+ MSG_ID_AEA = 0xaea,
+/*20150311 to latest
+NPC에게 판매 X
+Sell to NPC X
+*/
+ MSG_ID_AEB = 0xaeb,
+/*20150311 to latest
+이동제한이 있는 아이템입니다.
+Item moves restriction.
+*/
+ MSG_ID_AEC = 0xaec,
+#endif
+#if PACKETVER >= 20150401
+/*20150401 to latest
+캐릭터를 생성해주세요!
+Please Create a Character!
+*/
+ MSG_ID_AED = 0xaed,
+#endif
+#if PACKETVER >= 20150415
+/*20150415 to latest
+장착된 투사체 아이템을 해제해야 합니다.
+You need to disarm the equipped projectiles.
+*/
+ MSG_ID_AEE = 0xaee,
+#endif
+#if PACKETVER >= 20150513
+/*20150513 to latest
+인원 초과로 메모리얼 던전에 입장 할 수 없습니다
+You cannot enter Memorial Dungeon with excess members
+*/
+ MSG_ID_AEF = 0xaef,
+/*20150513 to latest
+인원수 초과로 인해 메모리얼 던전 입장이 거부되었습니다
+Memorial Dungeon Access was denied due to exceeding number of players
+*/
+ MSG_ID_AF0 = 0xaf0,
+#endif
+#if PACKETVER >= 20150603
+/*20150603 to latest
+%.1f%% ( %s Server: %.1f%% + Premium:%.1f%% )
+*/
+ MSG_ID_AF1 = 0xaf1,
+/*20150603 to latest
+%.1f%% ( %s Server: %.1f%% + Premium:%.1f%% )
+*/
+ MSG_ID_AF2 = 0xaf2,
+/*20150603 to latest
+중복된 아이템이 존재하여 사용이 불가능 합니다.
+Consuming Item denied due to multiple same item.
+*/
+ MSG_ID_AF3 = 0xaf3,
+/*20150603 to latest
+중복된 효과가 존재하여 사용이 불가능 합니다.
+Consuming Item denied due to effect of same consumed item.
+*/
+ MSG_ID_AF4 = 0xaf4,
+#endif
+#if PACKETVER >= 20150701
+/*20150701 to latest
+화면 흔들림 효과 ON
+Flicker Effect ON
+*/
+ MSG_ID_AF5 = 0xaf5,
+/*20150701 to latest
+화면 흔들림 효과 OFF
+Flicker Effect OFF
+*/
+ MSG_ID_AF6 = 0xaf6,
+#endif
+#if PACKETVER >= 20150702
+/*20150702 to latest
+불법 프로그램 발견되었습니다
+Illegal Programs has been detected
+*/
+ MSG_ID_AF7 = 0xaf7,
+#endif
+#if PACKETVER >= 20150722
+/*20150722 to latest
+메일 보내기
+Send Mail
+*/
+ MSG_ID_AF8 = 0xaf8,
+#endif
+#if PACKETVER >= 20150729
+/*20150729 to latest
+E X P : %.1f%% ( basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
+E X P: %.1f%% (Basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
+*/
+ MSG_ID_AF9 = 0xaf9,
+/*20150729 to latest
+DROP : %.1f%% ( basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
+DROP : %.1f%% (Basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
+*/
+ MSG_ID_AFA = 0xafa,
+/*20150729 to latest
+DEATH : %.1f%% ( basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
+DEATH: %.1f%% (Basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
+*/
+ MSG_ID_AFB = 0xafb,
+#endif
+#if PACKETVER >= 20150826
+/*20150826 to 20180919
+ 해당 태그는 이름으로 사용하실 수 없습니다.
+Name with this tag cannot be used.
+20181002 to latest
+ 해당 내용은 이름으로 사용하실 수 없습니다.
+*/
+ MSG_ID_AFC = 0xafc,
+#endif
+#if PACKETVER >= 20150916
+/*20150916 to latest
+???? bdbac5b8c0cfb8b52098de
+Style Shop
+*/
+ MSG_ID_AFD = 0xafd,
+#endif
+#if PACKETVER >= 20151028
+/*20151028 to 20151125
+쿠폰 없음, 상점에서 구매해야해요.
+20151202 to latest
+쿠폰 없음. Cash Shop에서 아이템을 구매해 주세요.
+No serial number, Please visit the store to buy.
+*/
+ MSG_ID_AFE = 0xafe,
+/*20151028 to 20151125
+아이템창의 쿠폰 상자를 열어주세요
+20151202 to latest
+인벤토리에서 아이템 쿠폰 상자를 열어주세요.
+Please turn on Serial item number window box.
+*/
+ MSG_ID_AFF = 0xaff,
+/*20151028 to 20151125
+은행
+Bank
+20151202 to latest
+해당 스타일 정보를 삭제하시겠습니까?
+Bank
+*/
+ MSG_ID_B00 = 0xb00,
+/*20151028 to 20151125
+슬롯이 꽉 찼습니다. 캐릭터를 삭제 후 사용해 주시기 바랍니다
+20151202 to latest
+슬롯이 꽉 찼습니다. 내 스타일에서 캐릭터 삭제 후 사용해 주십시오.
+Slot is full, please delete a character.
+*/
+ MSG_ID_B01 = 0xb01,
+/*20151028 to 20151125
+사용하신 아이템은 되돌릴 수 없습니다. 적용하시겠습니까?
+20151202 to latest
+비용을 지불하고 현재 스타일을 적용하시겠습니까?
+(※ 비용은 반환되지 않습니다.)
+Item cannot be restored, are you sure want to apply it?
+*/
+ MSG_ID_B02 = 0xb02,
+#endif
+#if PACKETVER >= 20151104
+/*20151104 to 20151125
+관심 스타일로 등록되었습니다
+20151202 to latest
+현재 스타일을 저장하였습니다.
+Registered as the following style.
+*/
+ MSG_ID_B03 = 0xb03,
+/*20151104 to 20151125
+은행에 충분한 제니가 있습니다. 먼저 은행으로 가세요.
+20151202 to latest
+보유 Zeny 부족. 은행에 충분한 Zeny가 있습니다.
+There are plenty of golds in the bank, Please go to the bank now.
+*/
+ MSG_ID_B04 = 0xb04,
+#endif
+#if PACKETVER >= 20151118
+/*20151118 to latest
+으로 이동합니다.
+moving...
+*/
+ MSG_ID_B05 = 0xb05,
+/*20151118 to latest
+해당 국가의 영공통과에 대한 허가가 나지 않았습니다.
+You are not allowed to fly over the sovereign airspace of the country.
+*/
+ MSG_ID_B06 = 0xb06,
+/*20151118 to latest
+마나로 대기불안정이 계속되어 비공정 운행이 불가능합니다.
+Airship flight is temporarily unavailable due to atmospheric instability caused by magic.
+*/
+ MSG_ID_B07 = 0xb07,
+/*20151118 to latest
+개인 비공정
+Private airship
+*/
+ MSG_ID_B08 = 0xb08,
+/*20151118 to latest
+잠시 후 다시 시도해주세요.
+Please try again in a moment.
+*/
+ MSG_ID_B09 = 0xb09,
+/*20151118 to latest
+개인 비공정 이용에 필요한 제니가 부족합니다.
+Not enough Zeny to use the private airship.
+*/
+ MSG_ID_B0A = 0xb0a,
+/*20151118 to 20170920
+개인 비공정 이용에 필요한 통조림이 부족합니다.
+20170927 to latest
+개인 비공정 이용에 필요한 아이템이 부족합니다.
+Not enough Cans to use the private airship.
+*/
+ MSG_ID_B0B = 0xb0b,
+/*20151118 to latest
+개인 비공정을 이용할 수 있는 레벨이 아닙니다.
+You cannot meet the level to use the private airship.
+*/
+ MSG_ID_B0C = 0xb0c,
+/*20151118 to latest
+선택한 지점으론 개인비공정이 이동할 수 없습니다.
+You cannot move to the selected point by the private airship.
+*/
+ MSG_ID_B0D = 0xb0d,
+/*20151118 to latest
+현 지점에선 개인비공정을 이용할 수 없습니다.
+You cannot use the private airship where you are now.
+*/
+ MSG_ID_B0E = 0xb0e,
+#endif
+#if PACKETVER >= 20151125
+/*20151125 to 20151125
+악세사리
+Accessory
+20151202 to latest
+액세서리
+Accessory
+*/
+ MSG_ID_B0F = 0xb0f,
+/*20151125 to latest
+세컨드코스튬
+Second costume
+*/
+ MSG_ID_B10 = 0xb10,
+/*20151125 to 20151125
+즐겨찾기
+20151202 to latest
+내 스타일
+Wardrobe
+*/
+ MSG_ID_B11 = 0xb11,
+/*20151125 to 20151125
+염색을 할 수 없는 머리스타일입니다.
+20151202 to latest
+염색할 수 없는 헤어스타일입니다.
+This hairstyle cannot be dyed.
+*/
+ MSG_ID_B12 = 0xb12,
+/*20151125 to 20151125
+화살표를 눌러 마음에 드는 스타일을 선택할 수 있어요.
+20151202 to latest
+화살표를 눌러 마음에 드는 스타일을 선택해 보세요.
+Press an arrow to choose the style you want.
+*/
+ MSG_ID_B13 = 0xb13,
+#endif
+#if PACKETVER >= 20151202
+/*20151202 to 20151202
+스타일 새로운 스타일을 확인해 보세요.
+(※ 액세서리 구매 시 RODEX로 발송됩니다.)
+20151209 to latest
+새로운 스타일을 확인해 보세요.
+(※ 액세서리 구매 시 RODEX로 발송됩니다.)
+Come and see the new styles.
+(Purchased accessories will be sent via RODEX.)
+*/
+ MSG_ID_B14 = 0xb14,
+#endif
+#if PACKETVER >= 20151223
+/*20151223 to latest
+기본 스타일
+Basic style
+*/
+ MSG_ID_B15 = 0xb15,
+#endif
+#if PACKETVER >= 20160106
+/*20160106 to latest
+ 해당 스킬은 BaseLv %d 이상부터 스킬 포인트 투자가 가능합니다.
+You can level up the skill from the base Lv. %d.
+*/
+ MSG_ID_B16 = 0xb16,
+#endif
+#if PACKETVER >= 20160113
+/*20160113 to latest
+해당 특수기호는 이름에 사용하실 수 없습니다.
+Special symbol can't be used in name
+*/
+ MSG_ID_B17 = 0xb17,
+/*20160113 to latest
+MHP가 너무 낮아, 해당 스킬을 사용할 수 없습니다
+MaxHP is to low to use this skill
+*/
+ MSG_ID_B18 = 0xb18,
+/*20160113 to latest
+MSP가 너무 낮아, 해당 스킬을 사용할 수 없습니다
+MaxSP is to low to use this skill
+*/
+ MSG_ID_B19 = 0xb19,
+#endif
+#if PACKETVER >= 20160203
+/*20160203 to latest
+아이템 비교하기
+Compare items
+*/
+ MSG_ID_B1A = 0xb1a,
+/*20160203 to latest
+아이템 버리기 잠금
+Drop lock
+*/
+ MSG_ID_B1B = 0xb1b,
+#endif
+#if PACKETVER >= 20160224
+/*20160224 to latest
+스크린샷 파일이 첨부 되지 않았습니다.
+Screenshots are not attached
+*/
+ MSG_ID_B1C = 0xb1c,
+/*20160224 to 20160511
+SNS통신
+20160518 to 20160817
+TWITTER
+20160824 to latest
+Twitter
+TWITTER
+*/
+ MSG_ID_B1D = 0xb1d,
+/*20160224 to latest
+일반
+General
+*/
+ MSG_ID_B1E = 0xb1e,
+/*20160224 to latest
+공지
+Notice
+*/
+ MSG_ID_B1F = 0xb1f,
+/*20160224 to latest
+반송
+Clear
+*/
+ MSG_ID_B20 = 0xb20,
+/*20160224 to latest
+새로고침
+Refresh
+*/
+ MSG_ID_B21 = 0xb21,
+/*20160224 to latest
+%d분
+%d minute
+*/
+ MSG_ID_B22 = 0xb22,
+/*20160224 to latest
+%d시간
+%d hour
+*/
+ MSG_ID_B23 = 0xb23,
+/*20160224 to latest
+%d일
+%d day
+*/
+ MSG_ID_B24 = 0xb24,
+/*20160224 to latest
+반송됨
+Returned
+*/
+ MSG_ID_B25 = 0xb25,
+/*20160224 to latest
+선택한 메일을 삭제하시겠습니까?
+Do you want to delete the message?
+*/
+ MSG_ID_B26 = 0xb26,
+#endif
+#if PACKETVER >= 20160302
+/*20160302 to latest
+위치표시
+Show information
+*/
+ MSG_ID_B27 = 0xb27,
+/*20160302 to latest
+확대
+Zoom In
+*/
+ MSG_ID_B28 = 0xb28,
+/*20160302 to latest
+축소
+Zoom Out
+*/
+ MSG_ID_B29 = 0xb29,
+/*20160302 to latest
+맵보기
+Maximize
+*/
+ MSG_ID_B2A = 0xb2a,
+/*20160302 to latest
+월드보기
+Show world map
+*/
+ MSG_ID_B2B = 0xb2b,
+/*20160302 to latest
+아이템 소지 종류수
+Total possession item type
+*/
+ MSG_ID_B2C = 0xb2c,
+#endif
+#if PACKETVER >= 20160309
+/*20160309 to latest
+/minimap
+*/
+ MSG_ID_B2D = 0xb2d,
+/*20160309 to latest
+미니맵 버튼을 표시합니다
+Show minimap buttons
+*/
+ MSG_ID_B2E = 0xb2e,
+/*20160309 to latest
+미니맵 버튼을 표시하지 않습니다
+Hide minimap buttons
+*/
+ MSG_ID_B2F = 0xb2f,
+/*20160309 to latest
+길드 접속자 정렬
+Show guild member login status
+*/
+ MSG_ID_B30 = 0xb30,
+#endif
+#if PACKETVER >= 20160323
+/*20160323 to latest
+친밀도 : %s
+Intimacy: %s
+*/
+ MSG_ID_B31 = 0xb31,
+/*20160323 to latest
+확인 전
+Confirmation
+*/
+ MSG_ID_B32 = 0xb32,
+#endif
+#if PACKETVER >= 20160330
+/*20160330 to latest
+파티 이름
+Team name
+*/
+ MSG_ID_B33 = 0xb33,
+/*20160330 to latest
+파티장
+Leader
+*/
+ MSG_ID_B34 = 0xb34,
+/*20160330 to latest
+제한 시간 초과. 클라이언트를 종료합니다.
+Time limit exceeded. Closing the client
+*/
+ MSG_ID_B35 = 0xb35,
+/*20160330 to latest
+잘못된 입력입니다. 클라이언트를 종료합니다.
+Input error. Closing the client
+*/
+ MSG_ID_B36 = 0xb36,
+/*20160330 to latest
+정답 입니다. 보상으로 소정의 버프가 주어집니다.
+Incorrect input. A small buff has given to you
+*/
+ MSG_ID_B37 = 0xb37,
+/*20160330 to latest
+영문 4자, 한글 2자 이상으로 입력해야 합니다.
+Enter 4 english words and 2 chinese words
+*/
+ MSG_ID_B38 = 0xb38,
+/*20160330 to latest
+입력한 답이 [%s]가 맞습니까?
+Your entered answer is [%s]. Is it right?
+*/
+ MSG_ID_B39 = 0xb39,
+/*20160330 to latest
+선택된 이미지가 없습니다.
+Icon is unchecked
+*/
+ MSG_ID_B3A = 0xb3a,
+/*20160330 to latest
+잘못된 입력입니다. (남은 기회 %d번)
+Incorrect input (Remaining chance: %d)
+*/
+ MSG_ID_B3B = 0xb3b,
+/*20160330 to latest
+총 %d명의 유저를 신고하시겠습니까?
+Do you want to announce %d to player?
+*/
+ MSG_ID_B3C = 0xb3c,
+/*20160330 to latest
+유저에게 메시지를 보냈습니다.
+Message has been sent to player
+*/
+ MSG_ID_B3D = 0xb3d,
+/*20160330 to latest
+불법 프로그램 단속에 필요한 데이터가 미등록 상태입니다.
+Needed Data for Query illegal software are not signed.
+*/
+ MSG_ID_B3E = 0xb3e,
+/*20160330 to latest
+이미 매크로 감시중인 유저입니다.
+The player is being monitored.
+*/
+ MSG_ID_B3F = 0xb3f,
+/*20160330 to latest
+매크로가 등록되었습니다..
+Already signed in investigation system.
+*/
+ MSG_ID_B40 = 0xb40,
+/*20160330 to latest
+이미지 등록에 실패하였습니다.
+Failed to store icon.
+*/
+ MSG_ID_B41 = 0xb41,
+/*20160330 to latest
+정답 등록에 실패하였습니다.
+Failed to store replied answer.
+*/
+ MSG_ID_B42 = 0xb42,
+/*20160330 to latest
+안녕하세요. 불법프로그램 단속중입니다.
+Hello, illegal software is being monitored.
+*/
+ MSG_ID_B43 = 0xb43,
+/*20160330 to latest
+지정된 시간내에 아래의 문자를 입력해주세요.
+Please enter the text below within the specified time.
+*/
+ MSG_ID_B44 = 0xb44,
+/*20160330 to latest
+3회 오류시 운영정책에 의거하여 영구블록됩니다.
+According to game regulation, when you enter the wrong text three times, you will get banned.
+*/
+ MSG_ID_B45 = 0xb45,
+/*20160330 to latest
+남은 횟수 : %d
+Remaining chance : %d
+*/
+ MSG_ID_B46 = 0xb46,
+/*20160330 to latest
+캐릭터
+Role
+*/
+ MSG_ID_B47 = 0xb47,
+/*20160330 to latest
+범위
+Range
+*/
+ MSG_ID_B48 = 0xb48,
+/*20160330 to latest
+캐릭터 선택은 좌클릭으로 합니다.
+You use the left mouse button to specify the role
+*/
+ MSG_ID_B49 = 0xb49,
+/*20160330 to latest
+범위 선택은 우클릭으로 합니다.
+You use the left mouse button to specify the range
+*/
+ MSG_ID_B4A = 0xb4a,
+/*20160330 to latest
+범위 크기를 지정하기 위해서는 엔터를 입력해주세요
+Not a valid range, please press Enter
+*/
+ MSG_ID_B4B = 0xb4b,
+/*20160330 to latest
+E X P : %.1f%% ( basic %.1f%% %s %.1f%%)
+*/
+ MSG_ID_B4C = 0xb4c,
+/*20160330 to latest
+DROP : %.1f%% ( basic %.1f%% %s %.1f%%)
+*/
+ MSG_ID_B4D = 0xb4d,
+/*20160330 to latest
+DEATH : %.1f%% ( basic %.1f%% %s %.1f%%)
+*/
+ MSG_ID_B4E = 0xb4e,
+/*20160330 to 20160330
+변경된 캐릭명 %s 로 전송했습니다. 확인 바랍니다
+20160406 to latest
+변경된 캐릭명으로 발송했습니다. 변경된 캐릭명 : %s
+The role name will be sent: %s
+*/
+ MSG_ID_B4F = 0xb4f,
+#endif
+#if PACKETVER >= 20160427
+/*20160427 to latest
+합성에 필요한 재료
+Synthesis of the required materials
+*/
+ MSG_ID_B50 = 0xb50,
+/*20160427 to latest
+조합 재료가 부족해서 조합할 수 없습니다.
+Insufficient synthesis materials
+*/
+ MSG_ID_B51 = 0xb51,
+#endif
+#if PACKETVER >= 20160504
+/*20160504 to latest
+해당 재료는 %d개가 필요합니다.
+Required material %d ea.
+*/
+ MSG_ID_B52 = 0xb52,
+/*20160504 to latest
+제련도가 낮아서 조합할 수 없습니다.
+Refine value is to low for synthesis
+*/
+ MSG_ID_B53 = 0xb53,
+/*20160504 to latest
+모험가중개소에 등록 하시겠습니까?
+Do you want to sign in to the adventurers?
+*/
+ MSG_ID_B54 = 0xb54,
+#endif
+#if PACKETVER >= 20160511
+/*20160511 to latest
+자유롭게 코멘트를 남겨보세요.
+Please leave a message
+*/
+ MSG_ID_B55 = 0xb55,
+#endif
+#if PACKETVER >= 20160518
+/*20160518 to latest
+그림에 보이는 문자를 입력해주세요.
+Please enter the text on the graph
+*/
+ MSG_ID_B56 = 0xb56,
+/*20160518 to latest
+%d초 남았습니다
+%d second left
+*/
+ MSG_ID_B57 = 0xb57,
+/*20160518 to latest
+OTP 인증번호 6자리를 입력해 주세요
+Please enter your 6 identification number.
+*/
+ MSG_ID_B58 = 0xb58,
+/*20160518 to latest
+인증번호
+Identification number.
+*/
+ MSG_ID_B59 = 0xb59,
+/*20160518 to latest
+6자리의 숫자가 아닙니다. 다시 확인해 주세요
+It's not a 6 identification number. Please try again
+*/
+ MSG_ID_B5A = 0xb5a,
+#endif
+#if PACKETVER >= 20160608
+/*20160608 to latest
+이미 삭제된 메일입니다.
+The message has been deleted
+*/
+ MSG_ID_B5B = 0xb5b,
+#endif
+#if PACKETVER >= 20160615
+/*20160615 to latest
+개인 비공정으로 이동할 지역을 선택해주세요.
+Please select the area where the private airship will move
+*/
+ MSG_ID_B5C = 0xb5c,
+/*20160615 to latest
+E X P : %d%% ( basic 100.0%% %s %d%%)
+*/
+ MSG_ID_B5D = 0xb5d,
+/*20160615 to latest
+DROP : %d%% ( basic 100.0%% %s %d%%)
+*/
+ MSG_ID_B5E = 0xb5e,
+/*20160615 to latest
+DEATH : %d%% ( basic 100.0%% %s %d%%)
+*/
+ MSG_ID_B5F = 0xb5f,
+/*20160615 to latest
+목적지로 이동중입니다.
+Move to the destination
+*/
+ MSG_ID_B60 = 0xb60,
+#endif
+#if PACKETVER >= 20160629
+/*20160629 to latest
+[%s] 파일이 존재하지 않아 default AI 로 동작합니다
+The [%s] is not present, the default AI will be used instead.
+*/
+ MSG_ID_B61 = 0xb61,
+/*20160629 to 20160630
+ %.1f%% ( Premium %.1f%% + %s %.1f%%)
+20160706 to latest
+ %.1f%% ( Basic 100.0%% + Premium %.1f%% + %s %.1f%%)
+%.1f%% ( Basic 100.0%% + Premium %.1f%% + %s %.1f%%)
+*/
+ MSG_ID_B62 = 0xb62,
+#endif
+#if PACKETVER >= 20160706
+/*20160706 to latest
+이 자리에 노점을 세우시겠습니까?
+Would you like to open a shop at this location?
+*/
+ MSG_ID_B63 = 0xb63,
+#endif
+#if PACKETVER >= 20160713
+/*20160713 to latest
+도람족은 해당 의상을 입을 수 없습니다.
+Doram race can't wear this clothes
+*/
+ MSG_ID_B64 = 0xb64,
+/*20160713 to 20160727
+구입한 물건이 로덱스로 배송되었습니다.
+20160803 to latest
+판매 노점에서 거래한 아이템이 로덱스로 배송되었습니다.
+Props open-air store sales will be traded in RODEX
+*/
+ MSG_ID_B65 = 0xb65,
+/*20160713 to latest
+30,000 z
+*/
+ MSG_ID_B66 = 0xb66,
+/*20160713 to latest
+말랑도 특산 통조림 100개
+Malangdo Special Can 100 pc
+*/
+ MSG_ID_B67 = 0xb67,
+#endif
+#if PACKETVER >= 20160720
+/*20160720 to latest
+무게가 80%를 초과하여 진행할 수 없습니다.
+Cannot carry anymore because weight limit over 80%
+*/
+ MSG_ID_B68 = 0xb68,
+/*20160720 to latest
+판매되지 못한 상품이 로덱스로 배송되었습니다.
+Unsold items are sent to RODEX
+*/
+ MSG_ID_B69 = 0xb69,
+#endif
+#if PACKETVER >= 20160727
+/*20160727 to latest
+장착 모습
+Preview
+*/
+ MSG_ID_B6A = 0xb6a,
+/*20160727 to latest
+길드마스터 위임
+Assign Guild Leader
+*/
+ MSG_ID_B6B = 0xb6b,
+/*20160727 to latest
+정말로 %s님께 길드마스터를 위임하시겠습니까? 위임 후 당신의 지위는 %s님과 지위가 바뀌게 됩니다.
+Are sure want to assign %s as guild leader? After assigned your position will become %s
+*/
+ MSG_ID_B6C = 0xb6c,
+/*20160727 to latest
+철회
+Cancel
+*/
+ MSG_ID_B6D = 0xb6d,
+/*20160727 to latest
+노점을 철수하시겠습니까?
+Do you want to close the shop?
+*/
+ MSG_ID_B6E = 0xb6e,
+/*20160727 to latest
+%02d일 %02d시간 %02d분 %02d초
+%02d day %02d hour %02d minute %02d second
+*/
+ MSG_ID_B6F = 0xb6f,
+/*20160727 to latest
+접속불가
+Unable to sign in
+*/
+ MSG_ID_B70 = 0xb70,
+/*20160727 to latest
+접속가능인원을 초과하여 접속이 불가능 합니다.
+Unable to sign in because the maximum number of sign-in is exceeded
+*/
+ MSG_ID_B71 = 0xb71,
+/*20160727 to latest
+노점을 설치할 위치를 선택해주세요.
+Please select a location for your shop
+*/
+ MSG_ID_B72 = 0xb72,
+/*20160727 to latest
+펫 이름을 ^0000ff^0000ff %s^000000^000000 로 수정합니다. 계속 하시겠습니까?
+Pet name will be changed to ^0000ff^0000ff %s^000000^000000, do you want to continue?
+*/
+ MSG_ID_B73 = 0xb73,
+#endif
+#if PACKETVER >= 20160803
+/*20160803 to 20160803
+판매 일시 :
+20160810 to latest
+거래 일시 :
+Trade date :
+*/
+ MSG_ID_B74 = 0xb74,
+/*20160803 to 20160803
+판매 아이템 :
+20160810 to latest
+거래 아이템 :
+Trade item :
+*/
+ MSG_ID_B75 = 0xb75,
+/*20160803 to 20160803
+판매 수량 :
+20160810 to latest
+거래 수량 :
+Trade quantity :
+*/
+ MSG_ID_B76 = 0xb76,
+/*20160803 to 20160803
+판매 단가 :
+20160810 to latest
+거래 단가 :
+Trade price :
+*/
+ MSG_ID_B77 = 0xb77,
+/*20160803 to 20160803
+판매 금액 :
+20160810 to latest
+거래 금액 :
+Total trade :
+*/
+ MSG_ID_B78 = 0xb78,
+/*20160803 to latest
+노점 판매 아이템
+Open vending sales agent
+*/
+ MSG_ID_B79 = 0xb79,
+/*20160803 to latest
+노점 구매 아이템
+Open vending purchase agent
+*/
+ MSG_ID_B7A = 0xb7a,
+/*20160803 to latest
+판매 노점 아르바이트 종료
+Close vending sales agent
+*/
+ MSG_ID_B7B = 0xb7b,
+/*20160803 to latest
+구매 노점 아르바이트 종료
+Close vending purchase agent
+*/
+ MSG_ID_B7C = 0xb7c,
+/*20160803 to latest
+남은 금액:
+Balance:
+*/
+ MSG_ID_B7D = 0xb7d,
+/*20160803 to latest
+아이템 리스트:
+Item list:
+*/
+ MSG_ID_B7E = 0xb7e,
+/*20160803 to latest
+노점 아르바이트생
+Vending agent
+*/
+ MSG_ID_B7F = 0xb7f,
+/*20160803 to latest
+반환 아이템:
+Returned item:
+*/
+ MSG_ID_B80 = 0xb80,
+/*20160803 to latest
+반환 수량:
+Returned quantity:
+*/
+ MSG_ID_B81 = 0xb81,
+/*20160803 to latest
+반환 일시:
+Returned date:
+*/
+ MSG_ID_B82 = 0xb82,
+/*20160803 to latest
+구매 노점에서 거래한 금액이 로덱스로 배송되었습니다
+Total trade will be sent to RODEX
+*/
+ MSG_ID_B83 = 0xb83,
+/*20160803 to latest
+사용할 수 없는 이름입니다.
+Name isn't available
+*/
+ MSG_ID_B84 = 0xb84,
+#endif
+#if PACKETVER >= 20160817
+/*20160817 to latest
+상품이 도착했습니다.
+Item has been delivered
+*/
+ MSG_ID_B85 = 0xb85,
+/*20160817 to latest
+구입해주셔서 감사합니다.
+Thank you for purchasing
+*/
+ MSG_ID_B86 = 0xb86,
+#endif
+#if PACKETVER >= 20160824
+/*20160824 to latest
+NPC에게 아이템을 판매하지 않습니다.
+Press again to unlock
+*/
+ MSG_ID_B87 = 0xb87,
+/*20160824 to latest
+아이템 판매 잠금
+Lock from NPC selling
+*/
+ MSG_ID_B88 = 0xb88,
+/*20160824 to latest
+근처에서 소환가능 위치를 찾을수 없습니다.
+There is no callable location nearby
+*/
+ MSG_ID_B89 = 0xb89,
+/*20160824 to latest
+전체 화면 캡쳐
+Capture full screens
+*/
+ MSG_ID_B8A = 0xb8a,
+/*20160824 to latest
+부분 화면 캡쳐
+Capture part of screen
+*/
+ MSG_ID_B8B = 0xb8b,
+/*20160824 to latest
+보내기
+Send
+*/
+ MSG_ID_B8C = 0xb8c,
+/*20160824 to latest
+가족 분과 담당자
+Family Affairs agent
+*/
+ MSG_ID_B8D = 0xb8d,
+/*20160824 to latest
+가족 사항 변동 안내
+Acknowledgement of family member registrations.
+*/
+ MSG_ID_B8E = 0xb8e,
+/*20160824 to latest
+안녕하십니까.
+
+금일 "%s"님과 "%s"님의 자녀인 "%s"님이 독립하여 단독 세대를 구성하였습니다.
+
+이에 서면으로 안내를 드립니다.
+
+가족 관계 확인을 원하시는 분은 프론테라 동사무소의 담당 직원에게 문의하시기 바랍니다.
+
+감사합니다.
+Dear whom it may concern.
+
+ Today, \"%s\" and \"%s\" 's son/daughter \"%s\" has fully separated and independent from your member of family.
+
+Hereat, we inform you in writing.
+
+Please contact to Prontera Family Affairs if you have any enquiries.
+
+Thank you.
+*/
+ MSG_ID_B8F = 0xb8f,
+#endif
+#if PACKETVER >= 20160831
+/*20160831 to latest
+장착
+Equip
+*/
+ MSG_ID_B90 = 0xb90,
+/*20160831 to latest
+이미지 없음
+No image
+*/
+ MSG_ID_B91 = 0xb91,
+#endif
+#if PACKETVER >= 20160907
+/*20160907 to 20160921
+%s은(는) 현재 호출을 차단한 상태입니다.
+20160928 to latest
+[%s]은(는) 현재 호출을 차단한 상태입니다.
+[%s] is blocking Call Massage.
+*/
+ MSG_ID_B92 = 0xb92,
+#endif
+#if PACKETVER >= 20160913
+/*20160913 to latest
+현재 공성전이 진행중이므로, 길드마스터를 위임 할 수 없습니다.
+Currently in WoE hours, unable to delegate Guild leader
+*/
+ MSG_ID_B93 = 0xb93,
+/*20160913 to latest
+현재 길드장 위임을 받은지 만 하루가 지나지 않아, 길드장을 위임할 수 없습니다.
+You have to wait for one day before delegating a new Guild leader
+*/
+ MSG_ID_B94 = 0xb94,
+/*20160913 to latest
+아이가 되면 전승을 할 수 없고 스텟의 제한이 있으며 HP와 SP가 줄어듭니다.
+그래도 괜찮습니까?
+When adopted, character will not able to transcend, maximum stats will be limited, MaxHP and MaxSP will be reduced.
+Are you sure you want to continue?
+*/
+ MSG_ID_B95 = 0xb95,
+/*20160913 to latest
+제련
+Refining
+*/
+ MSG_ID_B96 = 0xb96,
+/*20160913 to latest
+대장장이의 축복을 사용중입니다.
+Use Blacksmith's Blessing
+*/
+ MSG_ID_B97 = 0xb97,
+/*20160913 to latest
+제니가 부족합니다.
+Insufficient zeny
+*/
+ MSG_ID_B98 = 0xb98,
+/*20160913 to latest
+대장장이의 축복 개수가 부족합니다.
+Not enough Blacksmith's Blessing
+*/
+ MSG_ID_B99 = 0xb99,
+/*20160913 to latest
+해당 장비는 제련이 불가능합니다.
+This equipment can not be refined
+*/
+ MSG_ID_B9A = 0xb9a,
+/*20160913 to 20170621
+제련 성공!
+20170628 to latest
+제련 성공
+Upgrade success!
+*/
+ MSG_ID_B9B = 0xb9b,
+/*20160913 to 20170621
+제련 실패!
+20170628 to latest
+제련 실패
+Upgrade failed!
+*/
+ MSG_ID_B9C = 0xb9c,
+/*20160913 to latest
+돌아가기
+Back
+*/
+ MSG_ID_B9D = 0xb9d,
+/*20160913 to latest
+성공
+Success
+*/
+ MSG_ID_B9E = 0xb9e,
+/*20160913 to latest
+원래대로
+Return
+*/
+ MSG_ID_B9F = 0xb9f,
+#endif
+#if PACKETVER >= 20160921
+/*20160921 to latest
+씨와의
+With Mr/Miss
+*/
+ MSG_ID_BA0 = 0xba0,
+/*20160921 to latest
+호문클루스의 이름을 ^0000ff^0000ff %s^000000^000000 로 수정합니다. 계속 하시겠습니까?
+The Homunculus's name will be changed to^0000ff^0000ff %s^000000^000000, Are you sure?
+*/
+ MSG_ID_BA1 = 0xba1,
+#endif
+#if PACKETVER >= 20160928
+/*20160928 to latest
+호출이 허용된 상태입니다. (호출 기능 ON)
+Call function is ON
+*/
+ MSG_ID_BA2 = 0xba2,
+/*20160928 to latest
+호출이 차단된 상태입니다. (호출 기능 OFF)
+Call function is OFF
+*/
+ MSG_ID_BA3 = 0xba3,
+/*20160928 to latest
+호출 메시지 표시
+Display Call messages
+*/
+ MSG_ID_BA4 = 0xba4,
+/*20160928 to latest
+해당 캐릭터가 현재 노점 아이템을 사용 중이므로 삭제할 수 없습니다.
+This character is currently opening a shop and can't be deleted
+*/
+ MSG_ID_BA5 = 0xba5,
+/*20160928 to latest
+이미 동일한 노점 NPC가 설치 중입니다.
+The same vend shop NPC has been set up
+*/
+ MSG_ID_BA6 = 0xba6,
+/*20160928 to latest
+노점을 설치할 수 없는 위치입니다.
+Opening shop is not allowed on this location
+*/
+ MSG_ID_BA7 = 0xba7,
+/*20160928 to latest
+다른 캐릭터가 있는 위치에는 노점을 설치할 수 없습니다.
+Opening shop is not allowed when there is other character
+*/
+ MSG_ID_BA8 = 0xba8,
+#endif
+#if PACKETVER >= 20161005
+/*20161005 to latest
+펫 먹이주기가 실패했습니다. 로덱스 작성창을 닫아주세요.
+Failed to feed pet, please close RODEX window
+*/
+ MSG_ID_BA9 = 0xba9,
+/*20161005 to latest
+장비 세트 설정
+Set item setting
+*/
+ MSG_ID_BAA = 0xbaa,
+/*20161005 to latest
+장착 하기
+Equip
+*/
+ MSG_ID_BAB = 0xbab,
+#endif
+#if PACKETVER >= 20161019
+/*20161019 to latest
+제련 실패시 장비가 사라집니다.
+Equipment will dissapear when refine fails
+*/
+ MSG_ID_BAC = 0xbac,
+/*20161019 to latest
+제련 실패시 장비의 제련도가 내려갑니다.
+Equipment's refine level will decreased when refine fails
+*/
+ MSG_ID_BAD = 0xbad,
+/*20161019 to latest
+제련 실패시 장비의 제련도가 내려가거나 사라질 수 있습니다.
+Equipment will dissapear or refine level will decreased when refine fails
+*/
+ MSG_ID_BAE = 0xbae,
+#endif
+#if PACKETVER >= 20161026
+/*20161026 to latest
+제련 중에는 로덱스를 사용할 수 없습니다. 로덱스를 강제 종료하였습니다.
+You cannot use RODEX while refining. RODEX has closed.
+*/
+ MSG_ID_BAF = 0xbaf,
+/*20161026 to latest
+제련 중에는 로덱스를 사용할 수 없습니다.
+You cannot use RODEX while refining.
+*/
+ MSG_ID_BB0 = 0xbb0,
+/*20161026 to latest
+제련을 진행하려면 다른 창을 닫아주세요.
+Please close other windows to continue.
+*/
+ MSG_ID_BB1 = 0xbb1,
+/*20161026 to latest
+오오라가 정상적으로 표시됩니다 [오오라 ON]
+Turn On Aura [Aura ON]
+*/
+ MSG_ID_BB2 = 0xbb2,
+/*20161026 to latest
+오오라가 표시되지 않습니다 [오오라 OFF]
+Turn Off Aura [Auta OFF]
+*/
+ MSG_ID_BB3 = 0xbb3,
+/*20161026 to latest
+오오라가 Off 상태입니다. Off 를 해제하고 시도해 주세요
+Aura is turned off. Please turn it on and try again
+*/
+ MSG_ID_BB4 = 0xbb4,
+/*20161026 to latest
+스킬 발동시 최소 %d개의 탄알이 필요합니다.
+You need %d bullet(s) to activate the skill.
+*/
+ MSG_ID_BB5 = 0xbb5,
+/*20161026 to latest
+장비 세트를 변경하시겠습니까?
+Do you want to change the equipment set?
+*/
+ MSG_ID_BB6 = 0xbb6,
+/*20161026 to latest
+죽은 상태에서는 할 수 없습니다
+You can not do it while you are dead.
+*/
+ MSG_ID_BB7 = 0xbb7,
+/*20161026 to latest
+캐스팅 도중에는 할 수 없습니다
+You can not do it while casting
+*/
+ MSG_ID_BB8 = 0xbb8,
+/*20161026 to latest
+거래 도중에는 할 수 없습니다
+You can not do it while trading
+*/
+ MSG_ID_BB9 = 0xbb9,
+/*20161026 to latest
+노점 개설 도중에는 할 수 없습니다
+You can not do it while opening vendor
+*/
+ MSG_ID_BBA = 0xbba,
+/*20161026 to latest
+NPC 이용중에는 할 수 없습니다
+You can not do it while using NPC
+*/
+ MSG_ID_BBB = 0xbbb,
+/*20161026 to latest
+채팅방 이용중에는 할 수 없습니다
+You can not do it while using chatting room
+*/
+ MSG_ID_BBC = 0xbbc,
+/*20161026 to latest
+파티원 전원이 접속 상태가 아닙니다.
+Party members are not connected.
+*/
+ MSG_ID_BBD = 0xbbd,
+/*20161026 to latest
+스킬 발동시 최소 %d개의 화살이 필요합니다.
+You need %d arrow(s) to activate the skill.
+*/
+ MSG_ID_BBE = 0xbbe,
+#endif
+#if PACKETVER >= 20161102
+/*20161102 to latest
+아이템 정렬
+Align items
+*/
+ MSG_ID_BBF = 0xbbf,
+/*20161102 to latest
+아이템을 버리려면 장비 설정 창을 닫아주세요.
+Please close item setting window to dump item.
+*/
+ MSG_ID_BC0 = 0xbc0,
+#endif
+#if PACKETVER >= 20161109
+/*20161109 to latest
+교체 할 수 있는 아이템이 없습니다.
+There is no item to replace.
+*/
+ MSG_ID_BC1 = 0xbc1,
+/*20161109 to latest
+삭제된 캐릭터
+Deleted character
+*/
+ MSG_ID_BC2 = 0xbc2,
+#endif
+#if PACKETVER >= 20161116
+/*20161116 to latest
+%Y.%m.%d
+*/
+ MSG_ID_BC3 = 0xbc3,
+/*20161116 to latest
+접속일: %s
+Access date: %s
+*/
+ MSG_ID_BC4 = 0xbc4,
+/*20161116 to latest
+제련 중에는 은행을 사용할 수 없습니다. 은행을 강제 종료하였습니다.
+You can not use bank while refining. Bank has closed.
+*/
+ MSG_ID_BC5 = 0xbc5,
+/*20161116 to latest
+제련 중에는 은행을 사용할 수 없습니다.
+You can not use bank while refining.
+*/
+ MSG_ID_BC6 = 0xbc6,
+/*20161116 to latest
+장비 세트 설정 중인 아이템입니다.
+The item has bind to set equipment.
+*/
+ MSG_ID_BC7 = 0xbc7,
+#endif
+#if PACKETVER >= 20161123
+/*20161123 to latest
+인간
+Human
+*/
+ MSG_ID_BC8 = 0xbc8,
+/*20161123 to latest
+검사, 법사, 상인, 복사, 도둑, 궁수
+Swordman, Mage, Merchant, Acolyte, Thief, Archer
+*/
+ MSG_ID_BC9 = 0xbc9,
+/*20161123 to latest
+도람
+Doram
+*/
+ MSG_ID_BCA = 0xbca,
+/*20161123 to latest
+소환사
+Summoner
+*/
+ MSG_ID_BCB = 0xbcb,
+/*20161123 to latest
+미드가르드 대륙의 대표 종족. 무한한 잠재력과 뛰어난 적응력으로 문제 해결에 탁월한 것이 특징이다.
+Delegate race of Midgard. Very talented race to solve a problem with inifite potential and great adaptability.
+*/
+ MSG_ID_BCC = 0xbcc,
+/*20161123 to latest
+파-스타 대륙의 대표적인 종족 중 하나로, 선천적으로 호기심이 강하고 발랄한 성격을 지녔다.
+One of delegate race of Far-star continent with natural born curiosity and sparky character.
+*/
+ MSG_ID_BCD = 0xbcd,
+/*20161123 to latest
+소지 한계량이 70%를 초과하거나, 인벤토리에 10칸 이상의 여유 공간이 부족한 상태입니다.
+Weight limit has reached toover 70%. Or less then 10 invenrory space.
+*/
+ MSG_ID_BCE = 0xbce,
+/*20161123 to latest
+C
+*/
+ MSG_ID_BCF = 0xbcf,
+/*20161123 to latest
+C
+*/
+ MSG_ID_BD0 = 0xbd0,
+/*20161123 to latest
+다른 일을 하는 중입니다.
+Doing in other activity.
+*/
+ MSG_ID_BD1 = 0xbd1,
+/*20161123 to latest
+오버히트 리미트 : %d
+Overheat limit : %d
+*/
+ MSG_ID_BD2 = 0xbd2,
+#endif
+#if PACKETVER >= 20161130
+/*20161130 to latest
+메모리얼 던전 이용 중엔 초대 및 탈퇴가 되지 않습니다.
+You cannot invite or withdraw while in memorial dungeon.
+*/
+ MSG_ID_BD3 = 0xbd3,
+/*20161130 to latest
+비속어가 포함되어있습니다.
+다시 한번 확인해주세요.
+Expletive has detected.
+Please check again.
+*/
+ MSG_ID_BD4 = 0xbd4,
+#endif
+#if PACKETVER >= 20161207
+/*20161207 to latest
+아이디는 %d자 이상 입력해주세요. 사용자 계정이 없으신분들은 왼쪽 하단의 [신청] 버튼을 눌러 계정을 만드시기 바랍니다.
+Please enter over %d characters. If you don't have user account, please click [Register] button on the bottom left.
+*/
+ MSG_ID_BD5 = 0xbd5,
+/*20161207 to latest
+비밀번호는 %d자 이상 입력해주세요.
+Please enter the password over %d characters.
+*/
+ MSG_ID_BD6 = 0xbd6,
+/*20161207 to latest
+진행중이던 작업을 종료후 다시 시도하세요.
+Please finish your current work and try it again.
+*/
+ MSG_ID_BD7 = 0xbd7,
+/*20161207 to latest
+%.1f%% (PC방 %.1f%% + TPLUS %.1f%% + %s서버 %.1f%%)
+%.1f%% (Internet-Cafe %.1f%% + TPLUS %.1f%% + %sServer %.1f%%)
+*/
+ MSG_ID_BD8 = 0xbd8,
+/*20161207 to latest
+아이템을 등록할 수 없습니다
+The item cannot be registered.
+*/
+ MSG_ID_BD9 = 0xbd9,
+#endif
+#if PACKETVER >= 20161214
+/*20161214 to latest
+/100
+/300
+*/
+ MSG_ID_BDA = 0xbda,
+/*20161214 to latest
+/2000
+/4000
+*/
+ MSG_ID_BDB = 0xbdb,
+/*20161214 to latest
+https://member.gnjoy.com.tw/mRO_SecPwd.aspx
+*/
+ MSG_ID_BDC = 0xbdc,
+/*20161214 to latest
+등록할 emblem이 존재하지 않습니다. emblem 폴더에 파일을 넣고 시도해 주세요
+The emblem you want to register does not exist. Insert it in the emblem file and try again
+*/
+ MSG_ID_BDD = 0xbdd,
+/*20161214 to 20170315
+#라그나로크 #Ragnarok
+20170322 to latest
+라그나로크
+Ragnarok Ragnarok
+*/
+ MSG_ID_BDE = 0xbde,
+/*20161214 to 20161214
+스크린샷에 자신 이외의 캐리터명이 표시되는 경우나 채팅창에 자신 이외의 캐릭터 대화가 표시되는 경우, 해당 사용자에게 반드시 양해를 구한 후 사용 해 주시기 바랍니다.
+20161221 to latest
+스크린샷에 자신 이외의 캐릭터명이 표시되는 경우나 채팅창에 자신 이외의 캐릭터 대화가 표시되는 경우, 해당 사용자에게 반드시 양해를 구한 후 사용 해 주시기 바랍니다.
+If your screenshot or chat box includes other users besides yourself, first ask permission from the other users before using it.
+*/
+ MSG_ID_BDF = 0xbdf,
+#endif
+#if PACKETVER >= 20161221
+/*20161221 to latest
+현재 상태에선 장비를 교체할 수 없습니다
+You cannot change equipment in current condition
+*/
+ MSG_ID_BE0 = 0xbe0,
+/*20161221 to latest
+해당 유저의 이름을 가져오고 있습니다
+Getting the user's name
+*/
+ MSG_ID_BE1 = 0xbe1,
+/*20161221 to latest
+해당 메시지는 사용 할 수 없는 내용을 포함하고 있습니다.
+This message includes contents you are not able to use.
+*/
+ MSG_ID_BE2 = 0xbe2,
+/*20161221 to latest
+아이템 구입에 실패하였습니다.
+Failed to purchase item.
+*/
+ MSG_ID_BE3 = 0xbe3,
+/*20161221 to latest
+신분증번호 하위 7자리가 일치하지 않습니다.
+The lower numbers of the identification number does not match.
+*/
+ MSG_ID_BE4 = 0xbe4,
+#endif
+#if PACKETVER >= 20161228
+/*20161228 to latest
+닫기
+Close
+*/
+ MSG_ID_BE5 = 0xbe5,
+/*20161228 to latest
+규칙
+Rule
+*/
+ MSG_ID_BE6 = 0xbe6,
+/*20161228 to latest
+1회 구매
+Purchase 1x
+*/
+ MSG_ID_BE7 = 0xbe7,
+/*20161228 to latest
+10회 구매
+Purchase 10x
+*/
+ MSG_ID_BE8 = 0xbe8,
+/*20161228 to latest
+100회 구매
+Purchase 100x
+*/
+ MSG_ID_BE9 = 0xbe9,
+/*20161228 to latest
+1등 당첨
+Win 1st prize
+*/
+ MSG_ID_BEA = 0xbea,
+/*20161228 to latest
+2등 당첨
+Win 2nd prize
+*/
+ MSG_ID_BEB = 0xbeb,
+/*20161228 to latest
+3등 당첨
+Win 3rd prize
+*/
+ MSG_ID_BEC = 0xbec,
+/*20161228 to 20170111
+복권 구매 금액
+Lottery purchase amount
+20170118 to latest
+현재 사용하지 않음
+Currently not in use
+*/
+ MSG_ID_BED = 0xbed,
+/*20161228 to 20170111
+참여 캐릭터
+Participating character
+20170118 to latest
+현재 사용하지 않음
+Currently not in use
+*/
+ MSG_ID_BEE = 0xbee,
+/*20161228 to latest
+제니 로또 당첨자
+Zeny Lottery winner
+*/
+ MSG_ID_BEF = 0xbef,
+/*20161228 to 20170111
+복권 진행일
+20170118 to latest
+복권 구매 금액
+Lottery purchase amount
+*/
+ MSG_ID_BF0 = 0xbf0,
+/*20161228 to latest
+참여 캐릭터
+Participating character
+*/
+ MSG_ID_BF1 = 0xbf1,
+/*20161228 to latest
+1등
+1st Price
+*/
+ MSG_ID_BF2 = 0xbf2,
+/*20161228 to latest
+2등
+2nd Price
+*/
+ MSG_ID_BF3 = 0xbf3,
+/*20161228 to latest
+3등
+3rd Price
+*/
+ MSG_ID_BF4 = 0xbf4,
+/*20161228 to latest
+구매 보상 아이템
+Purchase Reward Item
+*/
+ MSG_ID_BF5 = 0xbf5,
+/*20161228 to latest
+^1a1a1a복권 ^b%d개^/b를
+^4435b2%dZeny^1a1a1a로
+구매하시겠습니까?
+^1a1a1a Do you want to purchase ^b%d lottery tickets for
+^4435b2%dZeny^1a1a1a?
+*/
+ MSG_ID_BF6 = 0xbf6,
+/*20161228 to latest
+복권을 성공적으로 구매하였습니다.
+You have successfully purchased the lottery ticket.
+*/
+ MSG_ID_BF7 = 0xbf7,
+/*20161228 to latest
+소지 제니가 부족하여 복권을 구매 할 수 없습니다.
+Not enough Zeny to purchase lottey ticket.
+*/
+ MSG_ID_BF8 = 0xbf8,
+/*20161228 to latest
+최대 복권 구매 횟수는 1000회를 초과 할 수 없습니다.
+You are only able to purchase the tickets upto 1000 times.
+*/
+ MSG_ID_BF9 = 0xbf9,
+/*20161228 to latest
+예
+Yes
+*/
+ MSG_ID_BFA = 0xbfa,
+/*20161228 to latest
+아니요
+No
+*/
+ MSG_ID_BFB = 0xbfb,
+/*20161228 to latest
+HP
+*/
+ MSG_ID_BFC = 0xbfc,
+/*20161228 to latest
+SP
+*/
+ MSG_ID_BFD = 0xbfd,
+/*20161228 to latest
+Lv
+*/
+ MSG_ID_BFE = 0xbfe,
+/*20161228 to latest
+Lv
+*/
+ MSG_ID_BFF = 0xbff,
+/*20161228 to latest
+Exp
+*/
+ MSG_ID_C00 = 0xc00,
+/*20161228 to latest
+ all on
+*/
+ MSG_ID_C01 = 0xc01,
+/*20161228 to latest
+Play Replay Flie
+*/
+ MSG_ID_C02 = 0xc02,
+/*20161228 to latest
+P
+*/
+ MSG_ID_C03 = 0xc03,
+/*20161228 to latest
+Total
+*/
+ MSG_ID_C04 = 0xc04,
+/*20161228 to latest
+Basicinfo
+*/
+ MSG_ID_C05 = 0xc05,
+/*20161228 to latest
+Equip
+*/
+ MSG_ID_C06 = 0xc06,
+/*20161228 to latest
+Item
+*/
+ MSG_ID_C07 = 0xc07,
+/*20161228 to latest
+Skill
+*/
+ MSG_ID_C08 = 0xc08,
+/*20161228 to latest
+Guild
+*/
+ MSG_ID_C09 = 0xc09,
+/*20161228 to latest
+Party
+*/
+ MSG_ID_C0A = 0xc0a,
+/*20161228 to latest
+Chatting
+*/
+ MSG_ID_C0B = 0xc0b,
+/*20161228 to latest
+Shortcut
+*/
+ MSG_ID_C0C = 0xc0c,
+/*20161228 to latest
+Status
+*/
+ MSG_ID_C0D = 0xc0d,
+/*20161228 to latest
+ALL
+All
+*/
+ MSG_ID_C0E = 0xc0e,
+/*20161228 to latest
+User Defined File Name
+*/
+ MSG_ID_C0F = 0xc0f,
+/*20161228 to latest
+Repeated File Check
+*/
+ MSG_ID_C10 = 0xc10,
+/*20161228 to latest
+on
+*/
+ MSG_ID_C11 = 0xc11,
+/*20161228 to latest
+<Basic Skin>
+*/
+ MSG_ID_C12 = 0xc12,
+/*20161228 to latest
+Select Skin
+*/
+ MSG_ID_C13 = 0xc13,
+#endif
+#if PACKETVER >= 20170111
+/*20170111 to latest
+현재 복권에 참여 중이라 삭제할 수 없습니다
+You cannot delete it because you are currently participating in the lottery
+*/
+ MSG_ID_C14 = 0xc14,
+/*20170111 to latest
+/achievement
+*/
+ MSG_ID_C15 = 0xc15,
+/*20170111 to latest
+제니 복권
+Zeny Lottery ticket
+*/
+ MSG_ID_C16 = 0xc16,
+/*20170111 to latest
+제니 복권 %d등 당첨 보상
+Zenyy Lottery %dprize reward
+*/
+ MSG_ID_C17 = 0xc17,
+/*20170111 to latest
+%d등 당첨 보상: %s
+%dprize reward: %s
+*/
+ MSG_ID_C18 = 0xc18,
+/*20170111 to latest
+제니 복권 누적 구매 보상
+Zeny Lottery Cumulative purchase reward
+*/
+ MSG_ID_C19 = 0xc19,
+/*20170111 to latest
+누적 %d회 보상: %s
+Cumulative %d times reward: %s
+*/
+ MSG_ID_C1A = 0xc1a,
+/*20170111 to latest
+제니 복권 구매 환불
+Zeny Lottery Refund
+*/
+ MSG_ID_C1B = 0xc1b,
+/*20170111 to 20170111
+환불 금액: %d Zeny
+환불 사유: 서버 내 복권 추첨 달성 실패
+20170118 to latest
+환불 금액: %d Zeny
+환불 사유: 서버 내 복권 추첨 달성 실패
+Refund amount: %d Zeny
+Reason for Refund: Failed to draw lottery in the server
+*/
+ MSG_ID_C1C = 0xc1c,
+/*20170111 to latest
+미니 파티창 추가
+Add Mini Party Chat
+*/
+ MSG_ID_C1D = 0xc1d,
+/*20170111 to latest
+미니 파티창 삭제
+Delete Mini Party Chat
+*/
+ MSG_ID_C1E = 0xc1e,
+#endif
+#if PACKETVER >= 20170118
+/*20170118 to latest
+복권 추첨이 모두 종료 되었습니다! 당첨자를 확인해주세요
+The lottery draw had ended! Check the winner!
+*/
+ MSG_ID_C1F = 0xc1f,
+/*20170118 to latest
+%d월 %d일
+%dMonth %dDay
+*/
+ MSG_ID_C20 = 0xc20,
+/*20170118 to latest
+다음 등급까지
+Till the next grade
+*/
+ MSG_ID_C21 = 0xc21,
+/*20170118 to latest
+전체
+All
+*/
+ MSG_ID_C22 = 0xc22,
+/*20170118 to latest
+미완료
+Incomplete
+*/
+ MSG_ID_C23 = 0xc23,
+/*20170118 to latest
+(달성!)
+(Accomplished!)
+*/
+ MSG_ID_C24 = 0xc24,
+/*20170118 to latest
+(미달성)
+(Not Accomplished)
+*/
+ MSG_ID_C25 = 0xc25,
+#endif
+#if PACKETVER >= 20170208
+/*20170208 to latest
+장비 교체
+Change equipment
+*/
+ MSG_ID_C26 = 0xc26,
+/*20170208 to latest
+CHANGE
+*/
+ MSG_ID_C27 = 0xc27,
+/*20170208 to latest
+힘 파라메터
+ ^cc0000근접 물리 공격력^ffffff, 소지무게
+Power Parameter
+ ^cc0000Melee PhysicalAttack^ffffff, Carrying Weight
+*/
+ MSG_ID_C28 = 0xc28,
+/*20170208 to latest
+민첩성 파라메터
+^cc0000공격 속도^ffffff, 회피율, 물리 방어력
+Agility Parameter
+^cc0000Attack Speed^ffffff, Dodge, Physical Defense
+*/
+ MSG_ID_C29 = 0xc29,
+/*20170208 to latest
+체력 파라메터
+^cc0000최대 체력^ffffff, 물리 방어력, 마법 방어력
+HP Parameter
+^cc0000Max HP^ffffff, Physical Defense, Magic Defense
+*/
+ MSG_ID_C2A = 0xc2a,
+/*20170208 to latest
+지력 파라메터
+^cc0000마법 공격력^ffffff, 캐스팅 시간, 마법 방어력
+Intellect Parameter
+^cc0000Magic Attack^ffffff, Casting Time, Magic Defense
+*/
+ MSG_ID_C2B = 0xc2b,
+/*20170208 to latest
+손재주 파라메터
+^cc0000원거리 물리 공격력^ffffff, 명중률, 캐스팅 시간, 마법 공격력
+Handcraft Parameter
+^cc0000Long Range Physical Attack^ffffff, Accuracy, Casting Time, Magic Attack
+*/
+ MSG_ID_C2C = 0xc2c,
+/*20170208 to latest
+운 파라메터
+^cc0000치명타율^ffffff, 명중률, 물리공격력, 마법공격력, 회피율
+Moon Parameter
+^cc0000Critical Rate^ffffff, Accuracy, Physical Attack, Magic Attack, Dodge
+*/
+ MSG_ID_C2D = 0xc2d,
+/*20170208 to latest
+물리 공격력
+Physical Attack
+*/
+ MSG_ID_C2E = 0xc2e,
+/*20170208 to latest
+물리 방어력
+Physical Defense
+*/
+ MSG_ID_C2F = 0xc2f,
+/*20170208 to latest
+명중률
+Accuracy
+*/
+ MSG_ID_C30 = 0xc30,
+/*20170208 to latest
+치명타율
+Critical Rate
+*/
+ MSG_ID_C31 = 0xc31,
+/*20170208 to latest
+소속길드
+Affiliated Guild
+*/
+ MSG_ID_C32 = 0xc32,
+/*20170208 to latest
+각 파라메터 레벨업에 사용되는 포인트
+Points to level up each Parameter
+*/
+ MSG_ID_C33 = 0xc33,
+/*20170208 to latest
+마법공격력
+Magic Attack
+*/
+ MSG_ID_C34 = 0xc34,
+/*20170208 to latest
+마법방어력
+Magic Defense
+*/
+ MSG_ID_C35 = 0xc35,
+/*20170208 to latest
+회피율
+Dodge
+*/
+ MSG_ID_C36 = 0xc36,
+/*20170208 to latest
+공격 속도
+Attack Speed
+*/
+ MSG_ID_C37 = 0xc37,
+#endif
+#if PACKETVER >= 20170215
+/*20170215 to latest
+단축키 안내
+Shortcut
+*/
+ MSG_ID_C38 = 0xc38,
+/*20170215 to latest
+옵션
+Option
+*/
+ MSG_ID_C39 = 0xc39,
+/*20170215 to latest
+스킬 단축키 (F1 ~ F9)
+Skill Shortcut Key (F1 ~ F9)
+*/
+ MSG_ID_C3A = 0xc3a,
+/*20170215 to latest
+이미지 캡쳐
+Capture Image
+*/
+ MSG_ID_C3B = 0xc3b,
+/*20170215 to latest
+확대
+Zoom In
+*/
+ MSG_ID_C3C = 0xc3c,
+/*20170215 to latest
+축소
+Zoom Out
+*/
+ MSG_ID_C3D = 0xc3d,
+/*20170215 to latest
+길드
+Guild
+*/
+ MSG_ID_C3E = 0xc3e,
+/*20170215 to latest
+은행
+Bank
+*/
+ MSG_ID_C3F = 0xc3f,
+/*20170215 to latest
+우편
+Mail
+*/
+ MSG_ID_C40 = 0xc40,
+/*20170215 to latest
+캐시 상점
+Cash Shop
+*/
+ MSG_ID_C41 = 0xc41,
+/*20170215 to latest
+앉기
+Sit
+*/
+ MSG_ID_C42 = 0xc42,
+/*20170215 to latest
+이동
+Move
+*/
+ MSG_ID_C43 = 0xc43,
+/*20170215 to latest
+회전
+Rotate
+*/
+ MSG_ID_C44 = 0xc44,
+/*20170215 to latest
+파티장은 파티장을 다른 파티원에게 위임 후 탈퇴 가능합니다.
+The Party Leader can be dropped out only after another party member becomes a Party Leader.
+*/
+ MSG_ID_C45 = 0xc45,
+/*20170215 to latest
+이 동영상을 그만 보시겠습니까?
+Do you want to stop viewing this video?
+*/
+ MSG_ID_C46 = 0xc46,
+/*20170215 to latest
+ 장비가 장비 교체 창에 장착 되었습니다.
+ gear has been equipped in the gear equipment pop-up.
+*/
+ MSG_ID_C47 = 0xc47,
+/*20170215 to latest
+ 장비가 장비 교체 창에서 해제 되었습니다.
+ gear has been removed in the gear equipment pop-up.
+*/
+ MSG_ID_C48 = 0xc48,
+#endif
+#if PACKETVER >= 20170222
+/*20170222 to latest
+현재가 마지막 라인입니다.
+This is the last line.
+*/
+ MSG_ID_C49 = 0xc49,
+/*20170222 to latest
+%.1f%% ( 기본 100%% + 프리미엄 %.1f%%+ %s서버 %.1f%% )
+%.1f%% ( Base 100%% + Premium %.1f%%+ %sServer %.1f%% )
+*/
+ MSG_ID_C4A = 0xc4a,
+#endif
+#if PACKETVER >= 20170228
+/*20170228 to latest
+한자
+Chinese character
+*/
+ MSG_ID_C4B = 0xc4b,
+/*20170228 to latest
+단축키 설정
+Shortcut Settings
+*/
+ MSG_ID_C4C = 0xc4c,
+#endif
+#if PACKETVER >= 20170308
+/*20170308 to latest
+당신의 정액제 기간은 %s에 종료됩니다.
+Your subscription will be ended on%s.
+*/
+ MSG_ID_C4D = 0xc4d,
+/*20170308 to latest
+리플레이 파일을 찾지 못하였습니다.
+Cannot find the replay file.
+*/
+ MSG_ID_C4E = 0xc4e,
+/*20170308 to 20170801
+신발
+Head
+20170809 to latest
+의상
+Shoes
+*/
+ MSG_ID_C4F = 0xc4f,
+/*20170308 to 20170801
+머리
+Costume
+20170809 to latest
+신발
+Head
+*/
+ MSG_ID_C50 = 0xc50,
+/*20170308 to latest
+갑옷
+Armor
+*/
+ MSG_ID_C51 = 0xc51,
+/*20170308 to latest
+어깨
+Shoulders
+*/
+ MSG_ID_C52 = 0xc52,
+/*20170308 to latest
+악세
+Accessory
+*/
+ MSG_ID_C53 = 0xc53,
+/*20170308 to 20170801
+의상
+Shoes
+20170809 to latest
+머리
+Costume
+*/
+ MSG_ID_C54 = 0xc54,
+/*20170308 to latest
+차순정렬
+Sort Order
+*/
+ MSG_ID_C55 = 0xc55,
+/*20170308 to 20170308
+
+Current admission application state.
+20170315 to latest
+일반 장비
+Normal Gear
+*/
+ MSG_ID_C56 = 0xc56,
+/*20170308 to 20170308
+
+Current admission application state.
+20170315 to latest
+특수 장비
+Special Gear
+*/
+ MSG_ID_C57 = 0xc57,
+/*20170308 to 20170308
+
+Current admission application state.
+20170315 to latest
+칭호
+Style
+*/
+ MSG_ID_C58 = 0xc58,
+#endif
+#if PACKETVER >= 20170315
+/*20170315 to latest
+/quake : 화면 흔들림 효과 On/Off
+/quake : Screen Shaking Effect On/Off
+*/
+ MSG_ID_C59 = 0xc59,
+/*20170315 to latest
+/aura2 : 오오라를 완전히 Off 시킬 수 있습니다 On Off
+/aura2 : You can completely turn off the aurora On/Off
+*/
+ MSG_ID_C5A = 0xc5a,
+/*20170315 to latest
+기본 설정
+Default Settings
+*/
+ MSG_ID_C5B = 0xc5b,
+/*20170315 to latest
+고급 설정
+Advanced Settings
+*/
+ MSG_ID_C5C = 0xc5c,
+/*20170315 to latest
+기본설정값이 적용됩니다.
+The Default Settings will be applied.
+*/
+ MSG_ID_C5D = 0xc5d,
+/*20170315 to latest
+기본 설정값이 적용됩니다. 동의하십니까?
+The Default Settings will be applied. Do you agree?
+*/
+ MSG_ID_C5E = 0xc5e,
+/*20170315 to latest
+설정값이 적용됩니다. 동의하십니까?
+The settings will be applied. Do you agree?
+*/
+ MSG_ID_C5F = 0xc5f,
+/*20170315 to latest
+설정값을 적용하려면 재시작이 필요합니다. 동의하십니까?
+Need to restart to apply the settings. Do you agree?
+*/
+ MSG_ID_C60 = 0xc60,
+/*20170315 to latest
+안개
+Fog
+*/
+ MSG_ID_C61 = 0xc61,
+/*20170315 to latest
+오오라 간략화
+Simplified aurora
+*/
+ MSG_ID_C62 = 0xc62,
+/*20170315 to latest
+오오라켜기
+Turn on aurora
+*/
+ MSG_ID_C63 = 0xc63,
+/*20170315 to latest
+이펙트 표시
+Show Effect
+*/
+ MSG_ID_C64 = 0xc64,
+/*20170315 to latest
+음영 표시
+Show Shadows
+*/
+ MSG_ID_C65 = 0xc65,
+/*20170315 to latest
+No Shift
+*/
+ MSG_ID_C66 = 0xc66,
+/*20170315 to latest
+하드웨어 T&L 가속기능을 선택합니다
+Select Hardware T&L Acceleration Function
+*/
+ MSG_ID_C67 = 0xc67,
+/*20170315 to latest
+게임의 해상도를 선택합니다
+Select Game Resolution
+*/
+ MSG_ID_C68 = 0xc68,
+/*20170315 to latest
+전체화면 사용
+Use full screen
+*/
+ MSG_ID_C69 = 0xc69,
+/*20170315 to latest
+마우스 고정
+Fix mouse
+*/
+ MSG_ID_C6A = 0xc6a,
+/*20170315 to latest
+이펙트 설정
+Effect Settings
+*/
+ MSG_ID_C6B = 0xc6b,
+/*20170315 to latest
+Control 설정
+Control Settings
+*/
+ MSG_ID_C6C = 0xc6c,
+/*20170315 to latest
+그래픽 장치 설정
+Graphic Device Settings
+*/
+ MSG_ID_C6D = 0xc6d,
+/*20170315 to latest
+그래픽 해상도 설정
+Graphic Resolution Settings
+*/
+ MSG_ID_C6E = 0xc6e,
+/*20170315 to latest
+전체 화면 유무 설정
+Full Screen Settings
+*/
+ MSG_ID_C6F = 0xc6f,
+/*20170315 to latest
+마우스 고정 여부 설정
+Fix mouse Settings
+*/
+ MSG_ID_C70 = 0xc70,
+/*20170315 to latest
+수수료 :
+Commission :
+*/
+ MSG_ID_C71 = 0xc71,
+/*20170315 to latest
+수수료 총액 :
+Total commission amount :
+*/
+ MSG_ID_C72 = 0xc72,
+/*20170315 to latest
+수신인 설정
+Select receiver
+*/
+ MSG_ID_C73 = 0xc73,
+/*20170315 to latest
+수신그룹 설정
+Select receiving group
+*/
+ MSG_ID_C74 = 0xc74,
+/*20170315 to latest
+크기 변경(F10)
+Change size(F10)
+*/
+ MSG_ID_C75 = 0xc75,
+/*20170315 to latest
+메일함을 불러오는 중 입니다.
+불필요한 메일은 ^c92114삭제^000000해 주세요~!!
+Loading the mailbox.
+^c92114Delete^000000unnecessary emails!!
+*/
+ MSG_ID_C76 = 0xc76,
+/*20170315 to latest
+NOW LOADING..
+*/
+ MSG_ID_C77 = 0xc77,
+/*20170315 to latest
+제목
+Title
+*/
+ MSG_ID_C78 = 0xc78,
+/*20170315 to latest
+보낸이
+Sender
+*/
+ MSG_ID_C79 = 0xc79,
+#endif
+#if PACKETVER >= 20170322
+/*20170322 to latest
+라그나로크 클라이언트와 동시에 실행이 불가능 합니다. setup을 종료합니다
+*/
+ MSG_ID_C7A = 0xc7a,
+/*20170322 to latest
+추가 기능 설정
+*/
+ MSG_ID_C7B = 0xc7b,
+/*20170322 to latest
+This account does not exist.
+*/
+ MSG_ID_C7C = 0xc7c,
+/*20170322 to latest
+Passwords do not match.
+*/
+ MSG_ID_C7D = 0xc7d,
+/*20170322 to latest
+Failed to pass IP authentication
+*/
+ MSG_ID_C7E = 0xc7e,
+/*20170322 to latest
+No identification number, supplement your registration information
+*/
+ MSG_ID_C7F = 0xc7f,
+/*20170322 to latest
+Account block
+*/
+ MSG_ID_C80 = 0xc80,
+/*20170322 to latest
+System error
+*/
+ MSG_ID_C81 = 0xc81,
+/*20170322 to latest
+unknown error found.
+*/
+ MSG_ID_C82 = 0xc82,
+#endif
+#if PACKETVER >= 20170329
+/*20170329 to latest
+길안내 아이콘 설정
+*/
+ MSG_ID_C83 = 0xc83,
+/*20170329 to latest
+길 안내 정보 UI
+*/
+ MSG_ID_C84 = 0xc84,
+/*20170329 to latest
+길 안내 정보 열기
+*/
+ MSG_ID_C85 = 0xc85,
+/*20170329 to latest
+현재 위치 공유
+*/
+ MSG_ID_C86 = 0xc86,
+/*20170329 to latest
+검색결과[0]
+*/
+ MSG_ID_C87 = 0xc87,
+/*20170329 to latest
+검색&안내
+*/
+ MSG_ID_C88 = 0xc88,
+/*20170329 to 20170329
+위치 값은 음수 값이 들어 올 수 없습니다.
+20170405 to latest
+위치가 올바르지 않습니다.
+*/
+ MSG_ID_C89 = 0xc89,
+/*20170329 to latest
+검색결과[%d]
+*/
+ MSG_ID_C8A = 0xc8a,
+/*20170329 to latest
+길안내 표시를 위한 아이콘 설정
+*/
+ MSG_ID_C8B = 0xc8b,
+/*20170329 to latest
+길 찾기에 zeny 허용
+*/
+ MSG_ID_C8C = 0xc8c,
+/*20170329 to latest
+내비게이션 도킹 해제
+*/
+ MSG_ID_C8D = 0xc8d,
+/*20170329 to latest
+활성화 하지 않은 계정입니다.
+*/
+ MSG_ID_C8E = 0xc8e,
+#endif
+#if PACKETVER >= 20170405
+/*20170405 to latest
+클릭한 위치가 채팅창에 공유 됩니다.
+*/
+ MSG_ID_C8F = 0xc8f,
+/*20170405 to latest
+4. Service 항목을 선택하면 Zeny&비공정 이용을 고려하여 안내 한다.
+*/
+ MSG_ID_C90 = 0xc90,
+/*20170405 to latest
+5. [<-] 버튼 : 길안내 모드 <-> 검색 모드를 바꾸거나
+*/
+ MSG_ID_C91 = 0xc91,
+/*20170405 to latest
+공유하기 모드 -> 서치 모드로 돌아갈때 사용 된다.
+*/
+ MSG_ID_C92 = 0xc92,
+/*20170405 to latest
+경험치 %lld 얻음
+*/
+ MSG_ID_C93 = 0xc93,
+/*20170405 to latest
+'%lld'의 경험치를
+*/
+ MSG_ID_C94 = 0xc94,
+/*20170405 to 20170517
+^b- 노점 수수료 안내^/b
+노점 설정 가격에 따라 일정 비율의 수수료가 부가됩니다.
+
+ ^b> 수수료 비율^/b
+각 금액에 따른 수수료의 비율은 아래와 같습니다.
+
+0 z ~ 10,000 z
+ = 수수료율 : ^1567fe0%^000000
+10,001 z ~ 100,000 z
+ = 수수료율 : ^1567fe2%^000000
+100,001 z ~ 1,000,000 z
+ = 수수료율 : ^1567fe4%^000000
+1,000,001 z ~ 10,000,000 z
+ = 수수료율 : ^1567fe6%^000000
+10,000,001 z ~ 100,000,000 z
+ = 수수료율 : ^1567fe8%^000000
+100,000,001 z 이상
+ = 수수료율 : ^1567fe10%^000000
+20170524 to latest
+^b- 노점 수수료 안내^/b
+노점 설정 가격에 따라 일정 비율의 수수료가 부가됩니다.
+
+ ^b> 수수료 비율^/b
+각 금액에 따른 수수료의 비율은 아래와 같습니다.
+
+0 z ~ 10,000 z
+ = 수수료율 : ^1567fe0%^000000
+10,001 z ~ 100,000 z
+ = 수수료율 : ^1567fe0%^000000
+100,001 z ~ 1,000,000 z
+ = 수수료율 : ^1567fe0%^000000
+1,000,001 z ~ 10,000,000 z
+ = 수수료율 : ^1567fe0%^000000
+10,000,001 z ~ 100,000,000 z
+ = 수수료율 : ^1567fe5%^000000
+100,000,001 z 이상
+ = 수수료율 : ^1567fe5%^000000
+*/
+ MSG_ID_C95 = 0xc95,
+/*20170405 to latest
+실거래가 :
+*/
+ MSG_ID_C96 = 0xc96,
+/*20170405 to latest
+※ 아이템 판매시, 실거래가만큼 제니를 획득합니다.
+*/
+ MSG_ID_C97 = 0xc97,
+/*20170405 to latest
+※ 아이템 구매시, 실거래가만큼 제니가 차감됩니다.
+*/
+ MSG_ID_C98 = 0xc98,
+/*20170405 to latest
+채팅방 개설
+*/
+ MSG_ID_C99 = 0xc99,
+#endif
+#if PACKETVER >= 20170412
+/*20170412 to latest
+해당 캐릭터는 파티가입이 가능하지 않은 레벨입니다.
+*/
+ MSG_ID_C9A = 0xc9a,
+/*20170412 to latest
+'%lld'의 잡경험치를
+*/
+ MSG_ID_C9B = 0xc9b,
+/*20170412 to latest
+잡경험치 %lld 얻음
+*/
+ MSG_ID_C9C = 0xc9c,
+#endif
+#if PACKETVER >= 20170419
+/*20170419 to latest
+현재위치(대로)에는 노점을 개설할 수 없습니다.
+*/
+ MSG_ID_C9D = 0xc9d,
+#endif
+#if PACKETVER >= 20170426
+/*20170426 to latest
+초 후 가능합니다.
+*/
+ MSG_ID_C9E = 0xc9e,
+#endif
+#if PACKETVER >= 20170517
+/*20170517 to latest
+파티원
+*/
+ MSG_ID_C9F = 0xc9f,
+/*20170517 to latest
+SNS 전송실패(%d)
+*/
+ MSG_ID_CA0 = 0xca0,
+/*20170517 to latest
+SNS 서버 연결실패
+*/
+ MSG_ID_CA1 = 0xca1,
+/*20170517 to latest
+SNS 로그인 후 사용 가능합니다.
+*/
+ MSG_ID_CA2 = 0xca2,
+/*20170517 to latest
+접속 할 수 있는 주소가 존재하지 않습니다.
+*/
+ MSG_ID_CA3 = 0xca3,
+#endif
+#if PACKETVER >= 20170524
+/*20170524 to latest
+미니파티창이 겹쳐져 있어 사용하실 수 없습니다.
+*/
+ MSG_ID_CA4 = 0xca4,
+#endif
+#if PACKETVER >= 20170531
+/*20170531 to latest
+나의 판매노점
+*/
+ MSG_ID_CA5 = 0xca5,
+#endif
+#if PACKETVER >= 20170614
+/*20170614 to latest
+BOX
+*/
+ MSG_ID_CA6 = 0xca6,
+/*20170614 to latest
+팁박스
+*/
+ MSG_ID_CA7 = 0xca7,
+#endif
+#if PACKETVER >= 20170621
+/*20170621 to latest
+트윗을 성공했습니다.
+*/
+ MSG_ID_CA8 = 0xca8,
+#endif
+#if PACKETVER >= 20170628
+/*20170628 to latest
+다시하기
+*/
+ MSG_ID_CA9 = 0xca9,
+/*20170628 to 20170809
+제련재료가 변경되어 다시하기가 비활성화 되었습니다.
+20170816 to latest
+다시하기가 비활성화되었습니다. 제련 재료를 다시 선택해주세요.
+*/
+ MSG_ID_CAA = 0xcaa,
+/*20170628 to latest
+제련석이 부족하여 다시하기가 비활성화 되었습니다.
+*/
+ MSG_ID_CAB = 0xcab,
+/*20170628 to latest
+제니가 부족하여 다시하기가 비활성화 되었습니다.
+*/
+ MSG_ID_CAC = 0xcac,
+/*20170628 to latest
+대장장이의 축복이 부족하여 다시하기가 비활성화 되었습니다.
+*/
+ MSG_ID_CAD = 0xcad,
+/*20170628 to latest
+아이템이 파괴되었습니다.
+*/
+ MSG_ID_CAE = 0xcae,
+/*20170628 to latest
+모든 스테이터스가 감소되었습니다.
+*/
+ MSG_ID_CAF = 0xcaf,
+/*20170628 to latest
+모든 스테이터스 감소 효과가 해제되었습니다.
+*/
+ MSG_ID_CB0 = 0xcb0,
+/*20170628 to latest
+OTP 비밀번호는 8자리 입니다.
+*/
+ MSG_ID_CB1 = 0xcb1,
+#endif
+#if PACKETVER >= 20170705
+/*20170705 to latest
+통합계정
+*/
+ MSG_ID_CB2 = 0xcb2,
+/*20170705 to latest
+라그나로크
+*/
+ MSG_ID_CB3 = 0xcb3,
+/*20170705 to latest
+서비스 점검 중입니다.
+*/
+ MSG_ID_CB4 = 0xcb4,
+/*20170705 to latest
+검색어를 입력해주세요
+*/
+ MSG_ID_CB5 = 0xcb5,
+/*20170705 to latest
+MOTP
+*/
+ MSG_ID_CB6 = 0xcb6,
+/*20170705 to latest
+인증번호
+Identification number.
+*/
+ MSG_ID_CB7 = 0xcb7,
+/*20170705 to latest
+휴대폰에 다운받은 GNJOY MOTP를 실행하여 인증번호를 입력해 주세요.
+*/
+ MSG_ID_CB8 = 0xcb8,
+#endif
+#if PACKETVER >= 20170712
+/*20170712 to latest
+파티장을 위임할 파티원이 존재하지 않습니다. 파티를 해산하시겠습니까?
+*/
+ MSG_ID_CB9 = 0xcb9,
+#endif
+#if PACKETVER >= 20170719
+/*20170719 to latest
+ - 만18세이상
+*/
+ MSG_ID_CBA = 0xcba,
+/*20170719 to latest
+ - 유료서버
+*/
+ MSG_ID_CBB = 0xcbb,
+/*20170719 to latest
+ - 무료서버
+*/
+ MSG_ID_CBC = 0xcbc,
+/*20170719 to latest
+쾌적
+*/
+ MSG_ID_CBD = 0xcbd,
+/*20170719 to latest
+보통
+Normal
+*/
+ MSG_ID_CBE = 0xcbe,
+/*20170719 to latest
+혼잡
+*/
+ MSG_ID_CBF = 0xcbf,
+/*20170719 to latest
+포화
+*/
+ MSG_ID_CC0 = 0xcc0,
+/*20170719 to latest
+map
+*/
+ MSG_ID_CC1 = 0xcc1,
+/*20170719 to latest
+월드창고는 인벤토리 아이템만 입출고 할 수 있습니다.
+*/
+ MSG_ID_CC2 = 0xcc2,
+/*20170719 to latest
+월드창고에는 펫알을 입고할 수 없습니다.
+*/
+ MSG_ID_CC3 = 0xcc3,
+/*20170719 to latest
+월드창고에는 제작아이템을 입고할 수 없습니다.
+*/
+ MSG_ID_CC4 = 0xcc4,
+/*20170719 to latest
+%s 에서는 출고 할 수 없는 아이템입니다.
+*/
+ MSG_ID_CC5 = 0xcc5,
+#endif
+#if PACKETVER >= 20170726
+/*20170726 to latest
+던전 파괴
+*/
+ MSG_ID_CC6 = 0xcc6,
+/*20170726 to latest
+[%s] 님이 제련을 성공하여, [+%d %s] 아이템을 획득하였습니다.
+*/
+ MSG_ID_CC7 = 0xcc7,
+/*20170726 to latest
+[%s] 님이 [+%d %s] 아이템의 제련에 실패하였습니다.
+*/
+ MSG_ID_CC8 = 0xcc8,
+/*20170726 to latest
+파티장을 위임한 이후에 탈퇴할 수 있습니다.
+*/
+ MSG_ID_CC9 = 0xcc9,
+#endif
+#if PACKETVER >= 20170809
+/*20170809 to latest
+오름
+*/
+ MSG_ID_CCA = 0xcca,
+/*20170809 to latest
+내림
+*/
+ MSG_ID_CCB = 0xccb,
+/*20170809 to latest
+기본
+*/
+ MSG_ID_CCC = 0xccc,
+/*20170809 to latest
+변조된 파일이 발견되었습니다. 게임을 다시 실행시켜주세요.
+*/
+ MSG_ID_CCD = 0xccd,
+#endif
+#if PACKETVER >= 20170823
+/*20170823 to latest
+%s 은(는) 이맵에서 이동이 제한된 아이템입니다.
+*/
+ MSG_ID_CCE = 0xcce,
+#endif
+#if PACKETVER >= 20170906
+/*20170906 to latest
+스스로
+먹이먹기
+*/
+ MSG_ID_CCF = 0xccf,
+/*20170906 to latest
+로덱스 작성창이 열려있는 동안 호문클루스가 먹이를 먹지 못합니다.
+*/
+ MSG_ID_CD0 = 0xcd0,
+/*20170906 to latest
+호문클루스가 먹이를 먹었습니다. '%s' 잔여량 %d개
+*/
+ MSG_ID_CD1 = 0xcd1,
+/*20170906 to latest
+호문클루스 스스로 먹이 먹기 활성화 On
+*/
+ MSG_ID_CD2 = 0xcd2,
+/*20170906 to latest
+호문클루스 스스로 먹이 먹기 활성화 Off
+*/
+ MSG_ID_CD3 = 0xcd3,
+/*20170906 to latest
+호문클루스는 주인이 획득하는 경험치의
+10%만큼을 자신의 경험치로 분배 받습니다.
+*/
+ MSG_ID_CD4 = 0xcd4,
+/*20170906 to latest
+확률 : %d%%
+*/
+ MSG_ID_CD5 = 0xcd5,
+/*20170906 to latest
+해당 대상은 호문의 공격대상이 아닙니다. 'Alt + 우클릭'을 통해 호문클루스의 공격대상을 지정해주세요.
+*/
+ MSG_ID_CD6 = 0xcd6,
+/*20170906 to latest
+호문의 공격대상이 존재하지 않습니다. 'Alt + 우클릭'을 통해 호문클루스의 공격대상을 지정해주세요.
+*/
+ MSG_ID_CD7 = 0xcd7,
+#endif
+#if PACKETVER >= 20170913
+/*20170913 to latest
+판매 리스트
+*/
+ MSG_ID_CD8 = 0xcd8,
+/*20170913 to latest
+구입 리스트
+*/
+ MSG_ID_CD9 = 0xcd9,
+/*20170913 to latest
+신규
+New
+*/
+ MSG_ID_CDA = 0xcda,
+/*20170913 to latest
+인기
+Headgears
+*/
+ MSG_ID_CDB = 0xcdb,
+/*20170913 to latest
+한정
+Limited
+*/
+ MSG_ID_CDC = 0xcdc,
+/*20170913 to latest
+임대장비
+Rental Items
+*/
+ MSG_ID_CDD = 0xcdd,
+/*20170913 to latest
+영구장비
+Equipments
+*/
+ MSG_ID_CDE = 0xcde,
+/*20170913 to latest
+버프
+Scrolls
+*/
+ MSG_ID_CDF = 0xcdf,
+/*20170913 to latest
+회복
+Consumables
+*/
+ MSG_ID_CE0 = 0xce0,
+/*20170913 to latest
+기타
+Other
+*/
+ MSG_ID_CE1 = 0xce1,
+/*20170913 to latest
+특가
+Special
+*/
+ MSG_ID_CE2 = 0xce2,
+/*20170913 to latest
+충전하기
+*/
+ MSG_ID_CE3 = 0xce3,
+/*20170913 to latest
+구입하기
+*/
+ MSG_ID_CE4 = 0xce4,
+/*20170913 to 20171206
+https://payment.gnjoy.com/bill/login.grv
+20171213 to latest
+http://member.gnjoy.com/user/pay/chargelist.asp
+*/
+ MSG_ID_CE5 = 0xce5,
+/*20170913 to latest
+아이템 검색
+*/
+ MSG_ID_CE6 = 0xce6,
+/*20170913 to latest
+무료캐시
+*/
+ MSG_ID_CE7 = 0xce7,
+/*20170913 to latest
+무료캐시 사용
+*/
+ MSG_ID_CE8 = 0xce8,
+/*20170913 to latest
+소지캐시
+*/
+ MSG_ID_CE9 = 0xce9,
+/*20170913 to latest
+수량갱신
+*/
+ MSG_ID_CEA = 0xcea,
+/*20170913 to latest
+성제(여)
+*/
+ MSG_ID_CEB = 0xceb,
+/*20170913 to latest
+소울리퍼(여)
+*/
+ MSG_ID_CEC = 0xcec,
+/*20170913 to latest
+성제(남)
+*/
+ MSG_ID_CED = 0xced,
+/*20170913 to latest
+소울리퍼(남)
+*/
+ MSG_ID_CEE = 0xcee,
+#endif
+#if PACKETVER >= 20170920
+/*20170920 to latest
+무게가 %d 퍼센트 이상일때는 HP SP가 자연적으로 회복이 되지 않습니다.
+*/
+ MSG_ID_CEF = 0xcef,
+/*20170920 to latest
+한 번에 구입 가능한 아이템의 가짓수는 8개입니다.
+*/
+ MSG_ID_CF0 = 0xcf0,
+/*20170920 to latest
+http://gift.zhaouc.com/#/index
+http://gift.zhaouc.com/
+*/
+ MSG_ID_CF1 = 0xcf1,
+#endif
+#if PACKETVER >= 20170927
+/*20170927 to latest
+UNKNOWN ERROR:%d
+*/
+ MSG_ID_CF2 = 0xcf2,
+/*20170927 to latest
+NOT USER
+*/
+ MSG_ID_CF3 = 0xcf3,
+/*20170927 to latest
+THIS ACCOUNT ID IS BLOCKED
+*/
+ MSG_ID_CF4 = 0xcf4,
+/*20170927 to latest
+COUNTRY REJECT (OR NOT AVALIABLE USER )
+*/
+ MSG_ID_CF5 = 0xcf5,
+/*20170927 to latest
+NOT MATCH PASSWORD
+*/
+ MSG_ID_CF6 = 0xcf6,
+/*20170927 to latest
+NOT EMAIL CERT
+*/
+ MSG_ID_CF7 = 0xcf7,
+/*20170927 to latest
+PAYPAL BLOCK
+*/
+ MSG_ID_CF8 = 0xcf8,
+/*20170927 to latest
+COUNTRY REJECT
+*/
+ MSG_ID_CF9 = 0xcf9,
+/*20170927 to latest
+PAYPAL BLOCK
+*/
+ MSG_ID_CFA = 0xcfa,
+/*20170927 to latest
+WEB BLOCK
+*/
+ MSG_ID_CFB = 0xcfb,
+/*20170927 to latest
+AGE LIMIT USER
+*/
+ MSG_ID_CFC = 0xcfc,
+/*20170927 to latest
+PASSWORD HAS NOT BEEN CHANGED FOR MORE THAN 90DAYS
+*/
+ MSG_ID_CFD = 0xcfd,
+/*20170927 to latest
+INPUT DATA ERROR
+*/
+ MSG_ID_CFE = 0xcfe,
+/*20170927 to latest
+ERROR DATABASE
+*/
+ MSG_ID_CFF = 0xcff,
+/*20170927 to latest
+ERROR SYSTEM
+*/
+ MSG_ID_D00 = 0xd00,
+/*20170927 to 20171025
+%s 지불
+20171101 to latest
+%s 소모
+*/
+ MSG_ID_D01 = 0xd01,
+/*20170927 to latest
+비용지불
+*/
+ MSG_ID_D02 = 0xd02,
+/*20170927 to latest
+출발 가능한 맵이 아닙니다.
+*/
+ MSG_ID_D03 = 0xd03,
+/*20170927 to latest
+이동 불가능한 맵입니다
+*/
+ MSG_ID_D04 = 0xd04,
+/*20170927 to latest
+아이템이 부족합니다.
+*/
+ MSG_ID_D05 = 0xd05,
+/*20170927 to latest
+줄 바꿈 없이 한 줄로 입력해주세요.
+*/
+ MSG_ID_D06 = 0xd06,
+#endif
+#if PACKETVER >= 20171011
+/*20171011 to latest
+불량 단어가 포함된 이름은 등록할 수 없습니다.
+*/
+ MSG_ID_D07 = 0xd07,
+#endif
+#if PACKETVER >= 20171018
+/*20171018 to latest
+회원 가입을 위해 공식 홈페이지로 이동됩니다.
+*/
+ MSG_ID_D08 = 0xd08,
+#endif
+#if PACKETVER >= 20171025
+/*20171025 to latest
+TokenAgency 서버 연결 실패
+*/
+ MSG_ID_D09 = 0xd09,
+/*20171025 to latest
+과금정보
+*/
+ MSG_ID_D0A = 0xd0a,
+/*20171025 to latest
+삭제예약
+*/
+ MSG_ID_D0B = 0xd0b,
+/*20171025 to latest
+예약취소
+*/
+ MSG_ID_D0C = 0xd0c,
+/*20171025 to latest
+게임시작
+*/
+ MSG_ID_D0D = 0xd0d,
+/*20171025 to latest
+삭제
+*/
+ MSG_ID_D0E = 0xd0e,
+/*20171025 to latest
+Character List
+*/
+ MSG_ID_D0F = 0xd0f,
+/*20171025 to latest
+공지
+Notice
+*/
+ MSG_ID_D10 = 0xd10,
+/*20171025 to latest
+생성
+*/
+ MSG_ID_D11 = 0xd11,
+/*20171025 to latest
+Hair Style
+*/
+ MSG_ID_D12 = 0xd12,
+/*20171025 to latest
+Hair Color
+*/
+ MSG_ID_D13 = 0xd13,
+/*20171025 to latest
+중복확인
+*/
+ MSG_ID_D14 = 0xd14,
+/*20171025 to latest
+%d시 %d분 %d초
+*/
+ MSG_ID_D15 = 0xd15,
+/*20171025 to latest
+MOTP 입력 시간이 초과되었습니다. 처음부터 다시 로그인해주십시오.
+*/
+ MSG_ID_D16 = 0xd16,
+/*20171025 to latest
+뒤로가기
+*/
+ MSG_ID_D17 = 0xd17,
+#endif
+#if PACKETVER >= 20171101
+/*20171101 to latest
+아이템을 사용할 수 없습니다.
+*/
+ MSG_ID_D18 = 0xd18,
+/*20171101 to latest
+동일한 맵으로 이동할 수 없습니다.
+*/
+ MSG_ID_D19 = 0xd19,
+/*20171101 to latest
+사망시 이동이 불가능합니다.
+*/
+ MSG_ID_D1A = 0xd1a,
+/*20171101 to latest
+캐릭터 생성
+*/
+ MSG_ID_D1B = 0xd1b,
+#endif
+#if PACKETVER >= 20171108
+/*20171108 to latest
+모험가 중개소 등록
+*/
+ MSG_ID_D1C = 0xd1c,
+/*20171108 to latest
+모집 중단
+*/
+ MSG_ID_D1D = 0xd1d,
+/*20171108 to latest
+모험가 중개소 설정
+*/
+ MSG_ID_D1E = 0xd1e,
+/*20171108 to latest
+전 지역
+*/
+ MSG_ID_D1F = 0xd1f,
+/*20171108 to latest
+직접기재
+*/
+ MSG_ID_D20 = 0xd20,
+/*20171108 to latest
+검사계열
+*/
+ MSG_ID_D21 = 0xd21,
+/*20171108 to latest
+법사계열
+*/
+ MSG_ID_D22 = 0xd22,
+/*20171108 to latest
+궁수계열
+*/
+ MSG_ID_D23 = 0xd23,
+/*20171108 to latest
+복사계열
+*/
+ MSG_ID_D24 = 0xd24,
+/*20171108 to latest
+상인계열
+*/
+ MSG_ID_D25 = 0xd25,
+/*20171108 to latest
+도둑계열
+*/
+ MSG_ID_D26 = 0xd26,
+/*20171108 to latest
+태권계열
+*/
+ MSG_ID_D27 = 0xd27,
+/*20171108 to latest
+닌자계열
+*/
+ MSG_ID_D28 = 0xd28,
+/*20171108 to latest
+건슬링거계열
+*/
+ MSG_ID_D29 = 0xd29,
+/*20171108 to latest
+도람족계열
+*/
+ MSG_ID_D2A = 0xd2a,
+/*20171108 to latest
+지역명
+*/
+ MSG_ID_D2B = 0xd2b,
+/*20171108 to latest
+지역명 검색
+*/
+ MSG_ID_D2C = 0xd2c,
+/*20171108 to latest
+가입 요청하기
+*/
+ MSG_ID_D2D = 0xd2d,
+/*20171108 to latest
+신고하기
+*/
+ MSG_ID_D2E = 0xd2e,
+/*20171108 to latest
+파티 모집 중단
+*/
+ MSG_ID_D2F = 0xd2f,
+/*20171108 to latest
+지역명을 입력해주세요.
+*/
+ MSG_ID_D30 = 0xd30,
+/*20171108 to latest
+지역
+*/
+ MSG_ID_D31 = 0xd31,
+/*20171108 to latest
+전 직업
+*/
+ MSG_ID_D32 = 0xd32,
+/*20171108 to latest
+로그인
+*/
+ MSG_ID_D33 = 0xd33,
+/*20171108 to latest
+계정
+*/
+ MSG_ID_D34 = 0xd34,
+/*20171108 to latest
+종료
+Exit
+*/
+ MSG_ID_D35 = 0xd35,
+/*20171108 to latest
+신청
+*/
+ MSG_ID_D36 = 0xd36,
+/*20171108 to latest
+접속
+*/
+ MSG_ID_D37 = 0xd37,
+/*20171108 to latest
+확인
+*/
+ MSG_ID_D38 = 0xd38,
+/*20171108 to latest
+휴대폰에 다운받은 GNJOY MOTP를
+*/
+ MSG_ID_D39 = 0xd39,
+/*20171108 to latest
+실행하여 인증번호를 입력해 주세요.
+*/
+ MSG_ID_D3A = 0xd3a,
+/*20171108 to latest
+NPC가 있는 맵의 랜덤 좌표로 이동 됩니다.
+*/
+ MSG_ID_D3B = 0xd3b,
+/*20171108 to latest
+태권
+*/
+ MSG_ID_D3C = 0xd3c,
+#endif
+#if PACKETVER >= 20171115
+/*20171115 to 20171115
+ 님이 차단 상태로 설정되었습니다.
+20171122 to latest
+ 에게 전체채팅 및 귓말 거부상태
+*/
+ MSG_ID_D3D = 0xd3d,
+/*20171115 to 20171115
+ 님을 차단 상태로 설정하는데 실패하였습니다.
+20171122 to latest
+ 에게 전체채팅 및 귓말 거부 요청 실패
+*/
+ MSG_ID_D3E = 0xd3e,
+/*20171115 to 20171115
+ 님을 차단 상태로 설정하는데 실패하였습니다.(인원 초과)
+20171122 to latest
+ 에게 전체채팅 및 귓말 거부 요청실패 (인원초과)
+*/
+ MSG_ID_D3F = 0xd3f,
+/*20171115 to 20171115
+ 님이 차단 해제 되었습니다.
+20171122 to latest
+ 에게 전체채팅 및 귓말 가능상태
+*/
+ MSG_ID_D40 = 0xd40,
+/*20171115 to 20171115
+ 님을 차단 해제하는데 실패하였습니다.
+20171122 to latest
+ 에게 전체채팅 및 귓말 가능 요청실패
+*/
+ MSG_ID_D41 = 0xd41,
+/*20171115 to 20171115
+ 님을 차단 해제하는데 실패하였습니다.(인원 초과)
+20171122 to latest
+ 에게 전체채팅 및 귓말 가능 요청실패 (인원초과)
+*/
+ MSG_ID_D42 = 0xd42,
+/*20171115 to latest
+차단 리스트가 없습니다
+*/
+ MSG_ID_D43 = 0xd43,
+/*20171115 to latest
+-차단 리스트-
+*/
+ MSG_ID_D44 = 0xd44,
+/*20171115 to latest
+진행중
+Act
+*/
+ MSG_ID_D45 = 0xd45,
+/*20171115 to latest
+추천
+Rec
+*/
+ MSG_ID_D46 = 0xd46,
+/*20171115 to latest
+보류중
+Pen
+*/
+ MSG_ID_D47 = 0xd47,
+/*20171115 to latest
+QUEST
+*/
+ MSG_ID_D48 = 0xd48,
+/*20171115 to latest
+내용
+For
+*/
+ MSG_ID_D49 = 0xd49,
+/*20171115 to latest
+몬스터
+*/
+ MSG_ID_D4A = 0xd4a,
+/*20171115 to latest
+보상
+*/
+ MSG_ID_D4B = 0xd4b,
+/*20171115 to latest
+EXP
+*/
+ MSG_ID_D4C = 0xd4c,
+/*20171115 to latest
+JEXP
+*/
+ MSG_ID_D4D = 0xd4d,
+/*20171115 to latest
+아이템
+Item
+*/
+ MSG_ID_D4E = 0xd4e,
+/*20171115 to latest
+진행/보류
+*/
+ MSG_ID_D4F = 0xd4f,
+/*20171115 to latest
+하단으로 이동
+*/
+ MSG_ID_D50 = 0xd50,
+/*20171115 to latest
+간편 퀘스트창에 표시
+*/
+ MSG_ID_D51 = 0xd51,
+/*20171115 to latest
+입력시간
+*/
+ MSG_ID_D52 = 0xd52,
+#endif
+#if PACKETVER >= 20171122
+/*20171122 to latest
+아이디 저장
+*/
+ MSG_ID_D53 = 0xd53,
+/*20171122 to latest
+비밀번호
+Password
+*/
+ MSG_ID_D54 = 0xd54,
+/*20171122 to latest
+아이디
+*/
+ MSG_ID_D55 = 0xd55,
+/*20171122 to latest
+회원가입
+*/
+ MSG_ID_D56 = 0xd56,
+/*20171122 to latest
+노비스계열
+*/
+ MSG_ID_D57 = 0xd57,
+/*20171122 to latest
+슈퍼노비스계열
+*/
+ MSG_ID_D58 = 0xd58,
+/*20171122 to latest
+모험가 중개소 등록에 실패했습니다.
+*/
+ MSG_ID_D59 = 0xd59,
+/*20171122 to latest
+모험가 중개소에 등록되었습니다.
+*/
+ MSG_ID_D5A = 0xd5a,
+/*20171122 to 20180328
+직업을 한 개 이상 선택해주세요.
+20180404 to latest
+모집을 희망하는 파티원의 직업을 한 개 이상 선택해 주세요.
+*/
+ MSG_ID_D5B = 0xd5b,
+/*20171122 to latest
+지역명을 두 글자 이상 입력해주세요.
+*/
+ MSG_ID_D5C = 0xd5c,
+/*20171122 to latest
+%.1f%% (+ %s서버 %.1f%%)
+*/
+ MSG_ID_D5D = 0xd5d,
+/*20171122 to latest
+/ex (캐릭터이름) or /차단 (캐릭터이름) : 해당 캐릭터에 대해 전체채팅 및 귓말 차단
+*/
+ MSG_ID_D5E = 0xd5e,
+/*20171122 to latest
+/in (캐릭터이름) or /해제 (캐릭터이름) : 해당 캐릭터에 대해 전체채팅 및 귓말 허용
+*/
+ MSG_ID_D5F = 0xd5f,
+/*20171122 to latest
+/ex or /차단 : 전체채팅 및 귓말 차단 캐릭터 리스트
+*/
+ MSG_ID_D60 = 0xd60,
+/*20171122 to latest
+/exall or /차단전부 : 모두에게 전체채팅 및 귓말 차단
+*/
+ MSG_ID_D61 = 0xd61,
+/*20171122 to latest
+/inall or /해제전부 : 모두에게 전체채팅 및 귓말 허용
+*/
+ MSG_ID_D62 = 0xd62,
+/*20171122 to latest
+모두에게 전체채팅 및 귓말 거부상태
+*/
+ MSG_ID_D63 = 0xd63,
+/*20171122 to latest
+모두에게 전체채팅 및 귓말 거부요청 실패
+*/
+ MSG_ID_D64 = 0xd64,
+/*20171122 to latest
+모두에게 전체채팅 및 귓말 가능상태
+*/
+ MSG_ID_D65 = 0xd65,
+/*20171122 to latest
+모두에게 전체채팅 및 귓말 가능요청 실패
+*/
+ MSG_ID_D66 = 0xd66,
+/*20171122 to latest
+오프닝
+*/
+ MSG_ID_D67 = 0xd67,
+#endif
+#if PACKETVER >= 20171206
+/*20171206 to latest
+로그인 화면으로 돌아가시겠습니까?
+*/
+ MSG_ID_D68 = 0xd68,
+/*20171206 to latest
+힘과 공격력이 강해졌습니다.
+*/
+ MSG_ID_D69 = 0xd69,
+/*20171206 to latest
+힘, 지능, 손재주 및 명중률이 증가하였습니다.
+*/
+ MSG_ID_D6A = 0xd6a,
+/*20171206 to latest
+방어력 및 HP가 증가되었습니다.
+*/
+ MSG_ID_D6B = 0xd6b,
+/*20171206 to latest
+젤스타
+*/
+ MSG_ID_D6C = 0xd6c,
+/*20171206 to latest
+계정버프
+*/
+ MSG_ID_D6D = 0xd6d,
+/*20171206 to latest
+정액서비스
+*/
+ MSG_ID_D6E = 0xd6e,
+#endif
+#if PACKETVER >= 20171213
+/*20171213 to latest
+현재 접속이 지연되고 있습니다. 순차적으로 접속이 가능하니 잠시 후 재접속 부탁드립니다.
+*/
+ MSG_ID_D6F = 0xd6f,
+/*20171213 to latest
+현재 접속이 지연되고 있으니 잠시 후 재접속 부탁드립니다.
+*/
+ MSG_ID_D70 = 0xd70,
+/*20171213 to latest
+불량 단어가 포함된 이름은 검색할 수 없습니다.
+*/
+ MSG_ID_D71 = 0xd71,
+/*20171213 to latest
+파티 마스터가 요청을 받을 수 없는 맵에 있습니다.
+*/
+ MSG_ID_D72 = 0xd72,
+/*20171213 to latest
+파티를 찾을 수 없습니다.
+*/
+ MSG_ID_D73 = 0xd73,
+/*20171213 to 20180328
+님의 파티요청입니다.
+20180404 to latest
+님의 파티 가입 요청입니다.
+*/
+ MSG_ID_D74 = 0xd74,
+#endif
+#if PACKETVER >= 20171220
+/*20171220 to latest
+http://ro.gnjoy.com
+*/
+ MSG_ID_D75 = 0xd75,
+/*20171220 to latest
+▲
+*/
+ MSG_ID_D76 = 0xd76,
+/*20171220 to latest
+▼
+*/
+ MSG_ID_D77 = 0xd77,
+#endif
+#if PACKETVER >= 20171227
+/*20171227 to latest
+이미 친구입니다
+*/
+ MSG_ID_D78 = 0xd78,
+/*20171227 to latest
+상대방을 찾을 수 없습니다
+*/
+ MSG_ID_D79 = 0xd79,
+/*20171227 to latest
+이미 다른 캐릭터가 친구 신청 중입니다.
+*/
+ MSG_ID_D7A = 0xd7a,
+/*20171227 to latest
+혼구슬 표시 ON
+*/
+ MSG_ID_D7B = 0xd7b,
+/*20171227 to latest
+혼구슬 표시 OFF
+*/
+ MSG_ID_D7C = 0xd7c,
+#endif
+#if PACKETVER >= 20180117
+/*20180117 to latest
+해당 계정은 2차 비밀번호 오입력으로 인해 게임내 접속이 제한된 상태입니다.
+ %02d시간 %02d분 후에 접속제한이 해제되며, 접속제한의 해제는 홈페이지 -> 개인정보변경 -> 2차 비밀번호 에서 본인인증 후 진행해주시기 바랍니다.
+*/
+ MSG_ID_D7D = 0xd7d,
+/*20180117 to latest
+보안패스워드를 3회이상 틀리셨습니다. 계정 보안을 위해 24시간동안 게임내 접속이 제한됩니다.
+ 접속제한의 해제는 홈페이지 -> 개인정보변경 -> 2차 비밀번호 에서 본인인증 후 진행해주시기 바랍니다.
+*/
+ MSG_ID_D7E = 0xd7e,
+/*20180117 to latest
+운영진
+*/
+ MSG_ID_D7F = 0xd7f,
+/*20180117 to latest
+%d일차 출석 보상이 지급되었습니다.
+*/
+ MSG_ID_D80 = 0xd80,
+/*20180117 to 20180117
+계정설정정보 받아오는데 실패 했습니다.( 재시도를 위해서는 재시작 해야 합니다. )
+20180124 to latest
+계정 설정 데이터를 불러오는 중에 오류가 발생했습니다. ( 재시도를 위해서는 재시작 해야 합니다. )
+*/
+ MSG_ID_D81 = 0xd81,
+/*20180117 to latest
+해당 스킬은 파티 상태에서 사용 가능합니다.
+*/
+ MSG_ID_D82 = 0xd82,
+#endif
+#if PACKETVER >= 20180124
+/*20180124 to latest
+파티 모집을 중단하였습니다.
+*/
+ MSG_ID_D83 = 0xd83,
+/*20180124 to latest
+길드 상납 경험치는 최대 %d%%까지 가능합니다.
+*/
+ MSG_ID_D84 = 0xd84,
+/*20180124 to latest
+길드 레벨이 최대여서 더 이상 경험치를 상납할 수 없습니다.
+*/
+ MSG_ID_D85 = 0xd85,
+#endif
+#if PACKETVER >= 20180207
+/*20180207 to latest
+계정보안을 위하여 MOTP미사용자는 홈페이지 로그인만 가능합니다.
+홈페이지로 로그인을 시도해주시기 바랍니다.
+*/
+ MSG_ID_D86 = 0xd86,
+/*20180207 to latest
+물리 공격력과 마법 공격력이 향상되었습니다.
+*/
+ MSG_ID_D87 = 0xd87,
+/*20180207 to latest
+물리 공격력과 마법 공격력이 감소되었습니다.
+*/
+ MSG_ID_D88 = 0xd88,
+/*20180207 to latest
+%s 출석체크 보상
+%s Attendance Check Reward
+*/
+ MSG_ID_D89 = 0xd89,
+/*20180207 to 20180509
+이벤트 기간 : %02d월 %02d일 ~ %2d월 %2d일 24:00까지
+Event period : From %02d/%02d ~ Until %2d/%2d (Month/Day) 24:00
+20180516 to latest
+이벤트 기간 : %02d월 %02d일 ~ %02d월 %02d일 24:00까지
+*/
+ MSG_ID_D8A = 0xd8a,
+/*20180207 to latest
+%d일차
+%d Day
+*/
+ MSG_ID_D8B = 0xd8b,
+/*20180207 to latest
+%d일차 출석체크
+클릭해주세요~!
+%d Day attendance check
+Please click~!
+*/
+ MSG_ID_D8C = 0xd8c,
+/*20180207 to latest
+%d일차 출석 성공!
+%d Day attendance success!
+*/
+ MSG_ID_D8D = 0xd8d,
+/*20180207 to latest
+D-day
+*/
+ MSG_ID_D8E = 0xd8e,
+/*20180207 to latest
+일
+Day
+*/
+ MSG_ID_D8F = 0xd8f,
+/*20180207 to latest
+출석체크에 실패하였습니다. 다시 실행해주세요.
+Attendance Check failed. Please run again.
+*/
+ MSG_ID_D90 = 0xd90,
+/*20180207 to latest
+출석체크
+Attendance Check
+*/
+ MSG_ID_D91 = 0xd91,
+/*20180207 to latest
+현재 출석체크 이벤트 기간이 아닙니다
+This is not the current attendance check event
+*/
+ MSG_ATTENDANCE_UNAVAILABLE = 0xd92,
+/*20180207 to 20180328
+길드 상납 경험치가 max에 도달하여, 더 이상 길드 경험치를 누적할 수 없습니다
+20180404 to latest
+길드 상납 경험치가 max에 도달하여, 더 이상 길드 경험치를 누적할 수 없습니다.
+*/
+ MSG_ID_D93 = 0xd93,
+/*20180207 to latest
+개인 상납 경험치가 max에 도달하여, 더 이상 길드 경험치를 누적할 수 없습니다.
+*/
+ MSG_ID_D94 = 0xd94,
+#endif
+#if PACKETVER >= 20180213
+/*20180213 to latest
+메시지
+*/
+ MSG_ID_D95 = 0xd95,
+/*20180213 to latest
+트위터에 메세지 전송을 실패 했습니다.
+*/
+ MSG_ID_D96 = 0xd96,
+/*20180213 to latest
+영문 4자, 한글 2자 이상으로 입력해야 합니다.
+Enter 4 english words and 2 chinese words
+*/
+ MSG_ID_D97 = 0xd97,
+#endif
+#if PACKETVER >= 20180307
+/*20180307 to latest
+몬스터의 테이밍이 불가능한 지역입니다.
+*/
+ MSG_ID_D98 = 0xd98,
+#endif
+#if PACKETVER >= 20180321
+/*20180321 to latest
+순위를 가져오고 있습니다...
+*/
+ MSG_ID_D99 = 0xd99,
+/*20180321 to latest
+해당 스킬은 파티장일때만 사용 가능합니다.
+*/
+ MSG_ID_D9A = 0xd9a,
+#endif
+#if PACKETVER >= 20180404
+/*20180404 to latest
+파트너의 SP가 부족하거나, 스킬 사용 불가 상태입니다.
+*/
+ MSG_ID_D9B = 0xd9b,
+/*20180404 to latest
+아르바이트 노점 강제 종료 알림메일
+*/
+ MSG_ID_D9C = 0xd9c,
+/*20180404 to latest
+안녕하세요. 운영팀입니다.
+해당 아르바이트 노점은 운영정책 위배되는 사항이 확인되어 강제 종료되었습니다.
+자세한 확인을 원하시는 경우에는 1:1 문의를 접수해 주시기 바랍니다.
+감사합니다
+*/
+ MSG_ID_D9D = 0xd9d,
+/*20180404 to latest
+50% 이상의 값을 입력할 수 없습니다.
+*/
+ MSG_ID_D9E = 0xd9e,
+/*20180404 to latest
+파티 가입 요청을 보냈습니다.
+*/
+ MSG_ID_D9F = 0xd9f,
+/*20180404 to latest
+모험가 중개소에 파티를 등록할 수 없습니다
+*/
+ MSG_ID_DA0 = 0xda0,
+/*20180404 to latest
+수락
+*/
+ MSG_ID_DA1 = 0xda1,
+/*20180404 to latest
+거절
+*/
+ MSG_ID_DA2 = 0xda2,
+/*20180404 to latest
+설정 권한은 파티장에게 있습니다.
+*/
+ MSG_ID_DA3 = 0xda3,
+/*20180404 to latest
+해당 캐릭터를 찾을 수 없습니다.
+*/
+ MSG_ID_DA4 = 0xda4,
+/*20180404 to latest
+노점 강제 철거
+*/
+ MSG_ID_DA5 = 0xda5,
+/*20180404 to latest
+해당 파티의 파티장을 찾을 수 없습니다.
+*/
+ MSG_ID_DA6 = 0xda6,
+/*20180404 to latest
+잡레벨이 낮아 파티에 가입 할 수 없습니다.
+*/
+ MSG_ID_DA7 = 0xda7,
+/*20180404 to latest
+현재 요청자가 파티가입이 불가능한 지역에 있습니다.
+*/
+ MSG_ID_DA8 = 0xda8,
+/*20180404 to latest
+파티 인원수가 초과되었습니다.
+*/
+ MSG_ID_DA9 = 0xda9,
+/*20180404 to latest
+%s 파티의 파티장이 파티 가입을 승인했습니다.
+*/
+ MSG_ID_DAA = 0xdaa,
+/*20180404 to latest
+%s 파티의 파티장이 파티 가입을 거부했습니다.
+*/
+ MSG_ID_DAB = 0xdab,
+/*20180404 to latest
+%s 님이 이미 파티에 가입 중입니다.
+*/
+ MSG_ID_DAC = 0xdac,
+/*20180404 to latest
+%s 님의 파티 가입을 수락했습니다.
+*/
+ MSG_ID_DAD = 0xdad,
+/*20180404 to latest
+%s 님의 파티 가입을 거부했습니다.
+*/
+ MSG_ID_DAE = 0xdae,
+/*20180404 to latest
+파티 요청을 받을 수 없는 상태여서 %s님의 신청이 거절되었습니다.
+*/
+ MSG_ID_DAF = 0xdaf,
+/*20180404 to latest
+모험가 중개소 리스트
+*/
+ MSG_ID_DB0 = 0xdb0,
+/*20180404 to latest
+파티 가입 요청
+*/
+ MSG_ID_DB1 = 0xdb1,
+/*20180404 to latest
+파티장이 아닌 경우, 모험가 중개소에 파티를 등록할 수 없습니다.
+*/
+ MSG_ID_DB2 = 0xdb2,
+/*20180404 to 20180404
+파티 모집 중단에 실패했습니다.
+20180418 to latest
+파티 모집을 중단할 수 없습니다.
+*/
+ MSG_ID_DB3 = 0xdb3,
+#endif
+#if PACKETVER >= 20180418
+/*20180418 to latest
+존재하지 않는 파티 글입니다.
+*/
+ MSG_ID_DB4 = 0xdb4,
+/*20180418 to 20180418
+시야 확장
+20180425 to latest
+Zoom Out
+*/
+ MSG_ID_DB5 = 0xdb5,
+/*20180418 to 20180418
+%s : 시야확장을 켜거나 끌수 있습니다 On Off
+20180425 to latest
+%s : Zoom Out을 켜거나 끌수 있습니다 On Off
+*/
+ MSG_ID_DB6 = 0xdb6,
+/*20180418 to 20180418
+시야를 확장합니다(On)
+20180425 to latest
+Zoom Out 기능을 켭니다 (On)
+*/
+ MSG_ID_DB7 = 0xdb7,
+/*20180418 to 20180418
+시야확장을 해제합니다(Off)
+20180425 to latest
+Zoom Out 기능을 해제합니다 (Off)
+*/
+ MSG_ID_DB8 = 0xdb8,
+/*20180418 to 20180418
+/expandsight
+20180425 to latest
+/zoom
+*/
+ MSG_ID_DB9 = 0xdb9,
+/*20180418 to latest
+모험가 중개소
+*/
+ MSG_ID_DBA = 0xdba,
+/*20180418 to latest
+파티장인 경우, 가입 요청을 할 수 없습니다.
+*/
+ MSG_ID_DBB = 0xdbb,
+/*20180418 to latest
+모험가 중개소에 등록 중입니다. 잠시만 기다려 주세요.
+*/
+ MSG_ID_DBC = 0xdbc,
+/*20180418 to latest
+더 이상 직업을 선택할 수 없습니다.
+*/
+ MSG_ID_DBD = 0xdbd,
+/*20180418 to latest
+게임 중 해당 유저의 가입 요청을 받지 않습니다.
+*/
+ MSG_ID_DBE = 0xdbe,
+#endif
+#if PACKETVER >= 20180502
+/*20180502 to latest
+잠시 후 다시 열어주시기 바랍니다.
+*/
+ MSG_ID_DBF = 0xdbf,
+/*20180502 to latest
+공성시작 전 %d분 동안은 해당 기능을 이용하실 수 없습니다.
+*/
+ MSG_ID_DC0 = 0xdc0,
+#endif
+#if PACKETVER >= 20180516
+/*20180516 to latest
+/viewclear
+*/
+ MSG_ID_DC1 = 0xdc1,
+/*20180516 to latest
+건물 반 투명화 ON
+*/
+ MSG_ID_DC2 = 0xdc2,
+/*20180516 to latest
+건물 반 투명화 OFF
+*/
+ MSG_ID_DC3 = 0xdc3,
+/*20180516 to latest
+건물 투명화
+*/
+ MSG_ID_DC4 = 0xdc4,
+/*20180516 to latest
+알로 되돌리기가 실패했습니다. 로덱스 작성창을 닫아주세요.
+*/
+ MSG_ID_DC5 = 0xdc5,
+/*20180516 to latest
+Emblem Frame
+*/
+ MSG_ID_DC6 = 0xdc6,
+/*20180516 to latest
+Emblem 테두리를 그려줍니다
+*/
+ MSG_ID_DC7 = 0xdc7,
+/*20180516 to latest
+Emblem 테두리를 그려주지 않습니다
+*/
+ MSG_ID_DC8 = 0xdc8,
+#endif
+#if PACKETVER >= 20180605
+/*20180605 to latest
+장착된 무기가 없습니다.
+*/
+ MSG_ID_DC9 = 0xdc9,
+/*20180605 to latest
+에너지 구체가 부족합니다.
+*/
+ MSG_ID_DCA = 0xdca,
+/*20180605 to latest
+배울 수 없는 스킬(%s)이 포함되어있습니다.
+*/
+ MSG_ID_DCB = 0xdcb,
+/*20180605 to latest
+/frame
+*/
+ MSG_ID_DCC = 0xdcc,
+#endif
+#if PACKETVER >= 20180620
+/*20180620 to latest
+웨폰 블로킹 발동후 제한시간 내에 사용가능한 스킬입니다.
+*/
+ MSG_ID_DCD = 0xdcd,
+#endif
+#if PACKETVER >= 20180704
+/*20180704 to latest
+아이디혹은 패스워드가 잘못되었읍니다.
+*/
+ MSG_ID_DCE = 0xdce,
+#endif
+#if PACKETVER >= 20180718
+/*20180718 to latest
+E X P : %.1f%% ( basic 100.0%% %s %.1f%%)
+*/
+ MSG_ID_DCF = 0xdcf,
+/*20180718 to latest
+DROP : %.1f%% ( basic 100.0%% %s %.1f%%)
+*/
+ MSG_ID_DD0 = 0xdd0,
+/*20180718 to latest
+DEATH : %.1f%% ( basic 100.0%% %s %.1f%%)
+*/
+ MSG_ID_DD1 = 0xdd1,
+#endif
+#if PACKETVER >= 20180829
+/*20180829 to latest
+영문이나 러시아어 단독으로만 사용이 가능합니다.
+*/
+ MSG_ID_DD2 = 0xdd2,
+/*20180829 to latest
+you must have an AccessTicket to login
+*/
+ MSG_ID_DD3 = 0xdd3,
+/*20180829 to latest
+창고를 불러오는 중입니다.
+*/
+ MSG_ID_DD4 = 0xdd4,
+/*20180829 to latest
+NOW LOADING..
+*/
+ MSG_ID_DD5 = 0xdd5,
+#endif
+#if PACKETVER >= 20181002
+/*20181002 to latest
+삭제
+*/
+ MSG_ID_DD6 = 0xdd6,
+/*20181002 to latest
+답장
+*/
+ MSG_ID_DD7 = 0xdd7,
+/*20181002 to latest
+전송
+*/
+ MSG_ID_DD8 = 0xdd8,
+/*20181002 to latest
+이름확인
+*/
+ MSG_ID_DD9 = 0xdd9,
+/*20181002 to latest
+공지
+Notice
+*/
+ MSG_ID_DDA = 0xdda,
+/*20181002 to latest
+일반
+General
+*/
+ MSG_ID_DDB = 0xddb,
+/*20181002 to latest
+반송
+Clear
+*/
+ MSG_ID_DDC = 0xddc,
+/*20181002 to latest
+검색
+Search
+*/
+ MSG_ID_DDD = 0xddd,
+#endif
+#if PACKETVER >= 20181031
+/*20181031 to latest
+펫 먹이주기에 실패했습니다. 먹이를 줄 수 없는 상태입니다.
+*/
+ MSG_ID_DDE = 0xdde,
+/*20181031 to latest
+호문 먹이주기에 실패했습니다. 먹이를 줄 수 없는 상태입니다.
+*/
+ MSG_ID_DDF = 0xddf,
+/*20181031 to latest
+화폐
+*/
+ MSG_ID_DE0 = 0xde0,
+/*20181031 to latest
+%s %d개
+*/
+ MSG_ID_DE1 = 0xde1,
+/*20181031 to latest
+교환에 실패하였습니다.
+*/
+ MSG_ID_DE2 = 0xde2,
+/*20181031 to latest
+교환이 잘 이루어졌습니다.
+*/
+ MSG_ID_DE3 = 0xde3,
+/*20181031 to latest
+교환에 필요한 재화가 부족합니다.
+*/
+ MSG_ID_DE4 = 0xde4,
+/*20181031 to latest
+해당 아이템은 이미 판매되어 재고가 부족합니다.
+*/
+ MSG_ID_DE5 = 0xde5,
+/*20181031 to latest
+사망
+*/
+ MSG_ID_DE6 = 0xde6,
+/*20181031 to latest
+PvP
+*/
+ MSG_ID_DE7 = 0xde7,
+/*20181031 to latest
+아이템 소지 확장
+*/
+ MSG_ID_DE8 = 0xde8,
+/*20181031 to 20181031
+(^0000ff%s^000000)을 소모하여, 아이템 최대 소지 종류수를 확장하시겠습니까?
+(^0000ff%d^000000)에서 (^0000ff%d^000000)로 확장됩니다.
+^ff0000※ 소모된 아이템 및 확장된 최대 소지 종류수는 되돌릴 수 없습니다.^000000
+20181107 to latest
+^0000ff%s^000000을 소모하여, 아이템 최대 소지 종류수를 확장하시겠습니까?
+(^0000ff%d^000000)에서 (^0000ff%d^000000)로 확장됩니다.
+^ff0000※ 소모된 아이템 및 확장된 최대 소지 종류수는 되돌릴 수 없습니다.^000000
+*/
+ MSG_ID_DE9 = 0xde9,
+/*20181031 to 20181031
+아이템 소지 종류 수 확장에 실패하였습니다.
+20181107 to latest
+아이템 최대 소지 종류수 확장에 실패하였습니다.
+*/
+ MSG_ID_DEA = 0xdea,
+/*20181031 to 20181031
+아이템 소지 종류 수 확장을 위해, 다른 작업을 종료하여 주시기 바랍니다.
+20181107 to latest
+아이템 최대 소지 종류수 확장을 위해, 다른 작업을 종료하여 주시기 바랍니다.
+*/
+ MSG_ID_DEB = 0xdeb,
+/*20181031 to 20181031
+아이템 소지 확장에 필요한 아이템을 소지하고 있지 않습니다.
+20181107 to latest
+아이템 최대 소지 종류수 확장에 필요한 아이템을 소지하고 있지 않습니다.
+*/
+ MSG_ID_DEC = 0xdec,
+/*20181031 to 20181031
+이미 아이템 소지 종류 수 확장이 최대로 적용 중입니다.
+20181107 to latest
+더 이상 아이템 최대 소지 종류수를 확장 할 수 없습니다.
+*/
+ MSG_ID_DED = 0xded,
+/*20181031 to 20181031
+아이템 소지 확장에 성공하였습니다.
+20181107 to latest
+아이템 최대 소지 종류수 확장에 성공하였습니다.
+*/
+ MSG_ID_DEE = 0xdee,
+#endif
+#if PACKETVER >= 20181121
+/*20181121 to latest
+같은 아이템을 %d개 이상 가질 수 없습니다.
+*/
+ MSG_ID_DEF = 0xdef,
+/*20181121 to latest
+소지 한계량 초과로 구입이 불가능합니다.
+*/
+ MSG_ID_DF0 = 0xdf0,
+/*20181121 to latest
+해당 아이템은 한 번에 한 개만 살 수 있습니다.
+*/
+ MSG_ID_DF1 = 0xdf1,
+#endif
+#if PACKETVER >= 20181205
+/*20181205 to latest
+성제
+*/
+ MSG_ID_DF2 = 0xdf2,
+/*20181205 to latest
+소울리퍼
+*/
+ MSG_ID_DF3 = 0xdf3,
+#endif
+#if PACKETVER >= 20181212
+/*20181212 to latest
+설정한 내용은 정상 종료 시 서버에 저장됩니다.
+*/
+ MSG_ID_DF4 = 0xdf4,
+#endif
+#if PACKETVER >= 20190109
+/*20190109 to latest
+Capture Monster
+*/
+ MSG_ID_DF5 = 0xdf5,
+/*20190109 to latest
+message
+*/
+ MSG_ID_DF6 = 0xdf6,
+/*20190109 to latest
+TITLE
+*/
+ MSG_ID_DF7 = 0xdf7,
+/*20190109 to latest
+데미지 표기 확장
+*/
+ MSG_ID_DF8 = 0xdf8,
+#endif
+
+};
+#endif /* MAP_MESSAGES_MAIN_H */
diff --git a/src/map/messages_re.h b/src/map/messages_re.h
new file mode 100644
index 000000000..af66a8464
--- /dev/null
+++ b/src/map/messages_re.h
@@ -0,0 +1,20950 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2013-2019 Hercules Dev Team
+ * Copyright (C) 2018-2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef MAP_MESSAGES_RE_H
+#define MAP_MESSAGES_RE_H
+
+/* This file is autogenerated, please do not commit manual changes
+
+Latest version: 20190109
+*/
+
+enum clif_messages {
+/*20080827 to latest
+동의 하십니까?
+Do you agree?
+*/
+ MSG_DO_YOU_AGREE = 0x0,
+/*20080827 to latest
+서버 연결 실패
+Failed to Connect to Server.
+*/
+ MSG_SERVER_CONNECTION_FAILED = 0x1,
+/*20080827 to latest
+서버와 연결이 끊어졌습니다.
+Disconnected from Server.
+*/
+ MSG_UNABLE_TO_CONNECT_SERVER = 0x2,
+/*20080827 to latest
+서버와 연결이 끊어졌습니다!
+Disconnected from Server!
+*/
+ MSG_BANNED = 0x3,
+/*20080827 to latest
+서버 종료됨
+Server Closed.
+*/
+ MSG_SERVER_OFF = 0x4,
+/*20080827 to latest
+같은 계정으로 다른 사용자가 로그인 하였습니다.
+Someone has Logged in with this ID.
+*/
+ MSG_DOUBLE_LOGIN_PROHIBITED = 0x5,
+/*20080827 to latest
+등록되지 않은 계정입니다. 다시 확인 바랍니다.
+Unregistered ID. Please make sure you have a registered account and you have correctly typed in the user ID.
+*/
+ MSG_INCORRECT_USERID = 0x6,
+/*20080827 to latest
+입력하신 비밀번호가 올바르지 않습니다.
+Incorrect User ID or Password. Please try again.
+*/
+ MSG_INCORRECT_PASSWORD = 0x7,
+/*20080827 to latest
+본 ID 는 사용기간이 만료 되었습니다
+This ID is expired.
+*/
+ MSG_ID_EXPIRED = 0x8,
+/*20080827 to latest
+서버 접근 거부
+Rejected from Server.
+*/
+ MSG_ACCESS_DENIED = 0x9,
+/*20080827 to latest
+같은 캐릭터 이름이 있습니다.
+Character Name already exists.
+*/
+ MSG_CHARACTER_NAME_ALREADY_EXISTS = 0xa,
+/*20080827 to latest
+캐릭터 생성 거부됨
+Character Creation is denied.
+*/
+ MSG_CHARACTER_CREATION_DENIED = 0xb,
+/*20080827 to latest
+캐릭터 삭제 거부
+Character Deletion is denied.
+*/
+ MSG_CANNOT_DELETE_CHARACTER = 0xc,
+/*20080827 to latest
+방제목를 입력하세요.
+Please Enter Room Title.
+*/
+ MSG_ENTER_ROOM_TITLE = 0xd,
+/*20080827 to latest
+불량단어가 검출되었습니다.
+Foul Language Detected.
+*/
+ MSG_BAD_SENTANGE = 0xe,
+/*20080827 to latest
+암호를 입력하세요.
+Please enter Password.
+*/
+ MSG_ENTER_PASSWORD = 0xf,
+/*20080827 to latest
+암호를 영문 4자 이상 입력하세요.
+Please enter Password. Passwords must be at least 4 characters long.
+*/
+ MSG_Enter_Password_more_than_4_char = 0x10,
+/*20080827 to latest
+종료 하시겠습니까?
+Are you sure that you want to quit?
+*/
+ MSG_DO_YOU_REALLY_WANT_TO_QUIT = 0x11,
+/*20080827 to latest
+4자 이상 입력해주세요. 사용자 계정이 없으신분들은 왼쪽 하단의 [신청] 버튼을 눌러 계정을 만드시기 바랍니다.
+Passwords are at least 4 characters long. Please try again.
+*/
+ MSG_NAME_MUST_EXCEED_4_CHAR = 0x12,
+/*20080827 to latest
+한 번 삭제된 캐릭터 및 관련 정보는 다시 복구되지 않습니다. 캐릭터를 삭제하시겠습니까?
+Are you sure that you want to delete this character?
+*/
+ MSG_DELETE_CHARACTER = 0x13,
+/*20080827 to latest
+불량단어가 검출되었습니다.
+Foul Language Detected.
+*/
+ MSG_BAD_NAME = 0x14,
+/*20080827 to latest
+이름을 입력해 주세요.(한글 2자 영문 4자 이상)
+Character Name must be at least 4 characters long.
+*/
+ MSG_ENTER_NAME_MORE_THAN_4_CHAR = 0x15,
+/*20080827 to latest
+명령어 일람: /h
+Command List: /h | /help
+*/
+ MSG_LIST_COMMAND = 0x16,
+/*20080827 to latest
+이펙트 On
+Effects On
+*/
+ MSG_EFFECT_ON = 0x17,
+/*20080827 to latest
+이펙트 Off
+Effects Off
+*/
+ MSG_EFFECT_OFF = 0x18,
+/*20080827 to latest
+사운드 볼륨
+Sound Volume
+*/
+ MSG_VOLUME_OF_SOUND = 0x19,
+/*20080827 to latest
+배경음악 볼륨
+BGM Volume
+*/
+ MSG_VOLUME_OF_BGM = 0x1a,
+/*20080827 to latest
+효과음 On
+Sound Effects On
+*/
+ MSG_SOUND_ON = 0x1b,
+/*20080827 to latest
+효과음 Off
+Sound Effects Off
+*/
+ MSG_SOUND_OFF = 0x1c,
+/*20080827 to latest
+프레임스킵 On
+Frame Skip On
+*/
+ MSG_FRAME_SKIP_ON = 0x1d,
+/*20080827 to latest
+프레임스킵 Off
+Frame Skip Off
+*/
+ MSG_FRAME_SKIP_OFF = 0x1e,
+/*20080827 to latest
+배경음악 On
+BGM On
+*/
+ MSG_BGM_ON = 0x1f,
+/*20080827 to latest
+배경음악 Off
+BGM Off
+*/
+ MSG_BGM_OFF = 0x20,
+/*20080827 to latest
+/h or /help: 명령어 일람
+/h or /help: Shows this Command Help List
+*/
+ MSG_EXPLAIN_HELP = 0x21,
+/*20080827 to latest
+/w or /who or /접속자 or /누구: 현재 접속자수 보기
+/w or /who or /player or /who: wiew current the number of player
+*/
+ MSG_EXPLAIN_WHO = 0x22,
+/*20080827 to latest
+/음악 : 배경음악 On Off
+/music: Turns BGM On or Off
+*/
+ MSG_EXPLAIN_MUSIC = 0x23,
+/*20080827 to latest
+/효과음 : 효과음 On Off
+/sound: Turns Sound Effects On or Off
+*/
+ MSG_EXPLAIN_SOUND = 0x24,
+/*20080827 to latest
+/이펙트 : 이펙트 On Off
+/effect: Effects On or Off
+*/
+ MSG_EXPLAIN_EFFECT = 0x25,
+/*20080827 to latest
+/좌표 or /장소: 현재 위치 표시
+/where: Shows your present location
+*/
+ MSG_EXPLAIN_POS = 0x26,
+/*20080827 to latest
+/skip : 프래임스킵 On Off
+/skip: Turns Frame Skip On or Off
+*/
+ MSG_EXPLAIN_FRAMESKIP = 0x27,
+/*20080827 to latest
+/v (0~127): 효과음 볼륨조정
+/v (0~127): Controls the volume of the Sound Effects
+*/
+ MSG_EXPLAIN_SOUNDVOLUME = 0x28,
+/*20080827 to latest
+/bv (0~127): 배경음악 볼륨조정
+/bv (0~127): Controls the volume of the BGM
+*/
+ MSG_EXPLAIN_BGMVOLUME = 0x29,
+/*20080827 to latest
+/ex (캐릭터이름) or /차단 (캐릭터이름) : 해당캐릭터에 대해 귓말차단
+/ex (Character Name): Blocks whispering from the Character
+*/
+ MSG_EXPLAIN_SAYISOLATION = 0x2a,
+/*20080827 to latest
+/ex or /차단 : 귓말차단 캐릭터 리스트
+/ex: View a list of Characters you have Blocked
+*/
+ MSG_EXPLAIN_LIST_SAYISOLATION_CHAR = 0x2b,
+/*20080827 to latest
+/in (캐릭터이름) or /해제 (캐릭터이름) : 해당캐릭터에 대해 귓말허용
+/in (Character Name): Allows whispering from the Character
+*/
+ MSG_EXPLAIN_SAY_PERMIT = 0x2c,
+/*20080827 to latest
+/inall or /해제전부 : 모두에게 귓말허용
+/inall: Allows whispers from anyone
+*/
+ MSG_EXPLAIN_SAY_PERMITALL = 0x2d,
+/*20080827 to latest
+/exall or /차단전부 : 모두에게 귓말차단
+/exall: Blocks whispers from everyone
+*/
+ MSG_EXPLAIN_SAY_ISOLATEALL = 0x2e,
+/*20080827 to latest
+다른유저 캐릭터를 마우스 오른버튼을 누르고 있는 상태에서 왼버튼으로 클릭하면 그캐릭터이름이 귓말콤보박스에 저장됩니다.
+Right click on a character and select [Register as a Friend] to add a person to your Friend List.
+*/
+ MSG_EXPLAIN_TIP1 = 0x2f,
+/*20080827 to latest
+단축아이탬창(F12) 소비장비 아이템을 드래그한후 사용하세요. 사용키(F1F2F3F4F5F6F7F8F9)
+F12 Brings up a Hotkey Window which allows you to drag and drop Recovery Items, Equipment and Skills into it for faster access.
+*/
+ MSG_EXPLAIN_TIP2 = 0x30,
+/*20080827 to latest
+같은말을 3번이상 연속해서 전송할 수 없습니다.
+You can't type the same word/phrase more than 3 times.
+*/
+ MSG_NO_SAME_SENTANCE = 0x31,
+/*20080827 to latest
+불량단어 검출로 전송이 중단 되었습니다.
+Chat Filter: Yeah, uh, I don't think so buddy...
+*/
+ MSG_NO_SEND_BECAUSE_INSULT = 0x32,
+/*20080827 to latest
+같은아이템은 한번만 올릴수 있습니다.
+You cannot overlap items on a window.
+*/
+ MSG_CAN_DRAG_ITEM_OLNY_ONETIME = 0x33,
+/*20080827 to latest
+무게가 초과하여 아이템을 가질 수 없습니다.
+You cannot carry more items because you are overweight.
+*/
+ MSG_CANT_GET_ITEM_BECAUSE_WEIGHT = 0x34,
+/*20080827 to latest
+아이템을 가질 수 없습니다.
+You cannot get the item.
+*/
+ MSG_CANT_GET_ITEM = 0x35,
+/*20080827 to latest
+거래가 잘 이루어졌습니다.
+The deal has successfully completed.
+*/
+ MSG_DEAL_SECCESS = 0x36,
+/*20080827 to latest
+돈이 부족합니다.
+You do not have enough zeny.
+*/
+ MSG_INSUFFICIENT_MONEY = 0x37,
+/*20080827 to latest
+무게가 초과 되었습니다.
+You are over your Weight Limit.
+*/
+ MSG_OVER_WEIGHT = 0x38,
+/*20080827 to latest
+거래가 실패 했습니다.
+The deal has failed.
+*/
+ MSG_DEAL_FAIL = 0x39,
+/*20080827 to latest
+모두에게 귓말거부상태로됨
+You've blocked whispers from everyone.
+*/
+ MSG_REFUSE_HEAR_ALL = 0x3a,
+/*20080827 to latest
+모두에게 귓말거부요청 실패함
+You've failed to block all whispers.
+*/
+ MSG_REQ_REFUSE_HEAR_ALL_FAIL = 0x3b,
+/*20080827 to latest
+모두에게 귓말가능상태가됨
+You've allowed whispers from everyone.
+*/
+ MSG_HEAR_ALL = 0x3c,
+/*20080827 to latest
+모두에게 귓말가능요청 실패함
+You've failed to allow all whispers.
+*/
+ MSG_REQ_HEAR_ALL_FAIL = 0x3d,
+/*20080827 to latest
+귓말 거부 리스트가 없습니다
+You have no Block List.
+*/
+ MSG_NO_REFUSE_HEAR_LIST = 0x3e,
+/*20080827 to latest
+-귓말 거부 리스트-
+[ Character Block List ]
+*/
+ MSG_REFUSE_HEAR_LIST = 0x3f,
+/*20080827 to latest
+방이 잘 만들어 졌습니다.
+Room has been successfully created.
+*/
+ MSG_ROOM_IS_MADE = 0x40,
+/*20080827 to latest
+방갯수가 허용갯수를 초과 하였습니다.
+Room Limit Exceeded.
+*/
+ MSG_TOO_MANY_ROOM = 0x41,
+/*20080827 to latest
+같은 방제목이 있습니다.
+Same Room exists.
+*/
+ MSG_SAME_ROOM_TITLE = 0x42,
+/*20080827 to latest
+인원초과로 방에 들어갈 수 없습니다.
+The Room is full.
+*/
+ MSG_TOO_MANY_PEOPLE_IN_ROOM = 0x43,
+/*20080827 to latest
+강제로 퇴장된 방입니다.
+You have been kicked out of this room.
+*/
+ MSG_YOU_HAVE_BANNED_FROM_THE_ROOM = 0x44,
+/*20080827 to latest
+교환요청을 거절 했습니다.
+The deal has been rejected.
+*/
+ MSG_REJECT_DEAL = 0x45,
+/*20080827 to latest
+교환가능거리를 벗어났습니다.
+You are too far away from the person to trade.
+*/
+ MSG_TOO_FAR_TO_DEAL = 0x46,
+/*20080827 to latest
+해당 캐릭터가 없습니다.
+The Character is not currently online or does not exist.
+*/
+ MSG_CHARACTER_IS_NOT_EXIST = 0x47,
+/*20080827 to latest
+다른캐릭터와 교환중입니다.
+The person is in another deal.
+*/
+ MSG_CHARACTER_IS_DEALING = 0x48,
+/*20080827 to 20110628
+상태캐릭터 중량초과로 올려놓을수가 없습니다.
+20110706 to latest
+상대 캐릭터 중량초과로 올려놓을 수 없습니다.
+You cannot trade because this character will exceed his weight limit.
+*/
+ MSG_CHARACTER_IS_OVER_WEIGHT = 0x49,
+/*20080827 to latest
+거래가 취소 되었습니다.
+The deal has been canceled.
+*/
+ MSG_DEAL_IS_CANCELED = 0x4a,
+/*20080827 to latest
+아이템 교환이 잘 되었습니다.
+The deal has successfully completed.
+*/
+ MSG_DEAL_SUCCESS = 0x4b,
+/*20080827 to latest
+아이템 교환이 실패 하였습니다.
+The deal has failed.
+*/
+ MSG_DEAL_FAILED = 0x4c,
+/*20080827 to latest
+파티가 만들어졌습니다.
+Party has successfully been organized.
+*/
+ MSG_PARTY_MAKE_SUCCEED = 0x4d,
+/*20080827 to latest
+같은 파티이름이 있습니다.
+That Party Name already exists.
+*/
+ MSG_SAME_PARTY_NAME = 0x4e,
+/*20080827 to latest
+이미 파티에 속해있습니다.
+The Character is already in a party.
+*/
+ MSG_YOU_ARE_ALREADY_IN_PARTY = 0x4f,
+/*20080827 to latest
+다른파티에 가입되어 있습니다.
+The Character already joined another party.
+*/
+ MSG_CHARACTER_IS_ALREADY_IN_PARTY = 0x50,
+/*20080827 to latest
+파티가입을 거부했습니다.
+Request for party rejected.
+*/
+ MSG_CHARACTER_REJECT_JOIN = 0x51,
+/*20080827 to latest
+파티가입을 수락했습니다.
+Request for party accepted.
+*/
+ MSG_CHARACTER_ACCEPT_JOIN = 0x52,
+/*20080827 to latest
+파티정원을 초과했습니다.
+Party Capacity exceeded.
+*/
+ MSG_TOO_MANY_PEOPLE_IN_PARTY = 0x53,
+/*20080827 to latest
+파티에서 탈퇴하였습니다.
+You left the party.
+*/
+ MSG_YOU_LEAVE_FROM_PARTY = 0x54,
+/*20080827 to latest
+전체에게 보냄
+Send to All
+*/
+ MSG_SEND_TO_ALL = 0x55,
+/*20080827 to latest
+파티에게 보냄
+Send to Party
+*/
+ MSG_SEND_TO_PARTY = 0x56,
+/*20080827 to latest
+님과의 거래요청
+Request a deal with %s
+*/
+ MSG_REQ_DEAL_WITH = 0x57,
+/*20080827 to latest
+님 파티에 가입요청
+Ask %s to join your party
+*/
+ MSG_REQ_JOIN_PARTY = 0x58,
+/*20080827 to latest
+비공개 :
+Pri:
+*/
+ MSG_ROOM_PRIVATE = 0x59,
+/*20080827 to latest
+공개 :
+Pub:
+*/
+ MSG_ROOM_PUBLIC = 0x5a,
+/*20080827 to latest
+마지막 체크지점부터 시작하려면 '재시작'을 캐릭터 선택으로 돌아가려면 '종료'를 눌러주세요.
+Click ''Restart'' to go back to your save point or click ''Exit'' to select another character.
+*/
+ MSG_RESTART_MSG = 0x5b,
+/*20080827 to latest
+원하는 거래를 선택하세요.
+Please select a Deal Type.
+*/
+ MSG_SELECT_DEAL_TYPE = 0x5c,
+/*20080827 to latest
+님이 거래를 요청했습니다.
+ requests a deal.
+*/
+ MSG_SUGGEST_DEAL = 0x5d,
+/*20080827 to latest
+ 파티에서 초청 메시지가 왔습니다. 합류하겠습니까?
+ Party has sent you an invitation. Would you like to join?
+*/
+ MSG_SUGGEST_JOIN_PARTY = 0x5e,
+/*20080827 to latest
+명령이 틀렸습니다.
+Invalid Command
+*/
+ MSG_INVALID_COMMAND = 0x5f,
+/*20080827 to latest
+탈퇴하기
+Leave party
+*/
+ MSG_LEAVE_PARTY = 0x60,
+/*20080827 to latest
+제명시키기
+Expel
+*/
+ MSG_EXPEL = 0x61,
+/*20080827 to latest
+쪽지보내기
+Send Message
+*/
+ MSG_MSG = 0x62,
+/*20080827 to latest
+1:1 대화
+1:1 Chat
+*/
+ MSG_1ON1 = 0x63,
+/*20080827 to latest
+정보
+Information
+*/
+ MSG_CHARACTER_INFO = 0x64,
+/*20080827 to latest
+파티설정
+Party Setup
+*/
+ MSG_PARTY_SETTING = 0x65,
+/*20080827 to latest
+친구
+Friend
+*/
+ MSG_FRIEND = 0x66,
+/*20080827 to latest
+파티
+Party
+*/
+ MSG_PARTY = 0x67,
+/*20080827 to latest
+장착아이템
+Equipment
+*/
+ MSG_EQUIPED_ITEM = 0x68,
+/*20080827 to latest
+스테이터스
+Status
+*/
+ MSG_STATUS_ = 0x69,
+/*20080827 to latest
+소지아이템
+Inventory
+*/
+ MSG_ITEM = 0x6a,
+/*20080827 to latest
+/결성 [파티이름] : 파티결성 /탈퇴 : 파티탈퇴
+/organize ''Party Name'' To organize a party. Type /leave To leave a Party.
+*/
+ MSG_EXPLAIN_PARTY = 0x6b,
+/*20080827 to latest
+자신이 파티리더일때 캐릭터를 오른버튼으로 클릭하면 파티에 가입요청하기 메뉴가 뜹니다.
+If you are the party master, you can invite someone into your party by right-clicking on a Character.
+*/
+ MSG_EXPLAIN_TIP3 = 0x6c,
+/*20080827 to latest
+회복
+Consumables
+*/
+ MSG_RESTORE = 0x6d,
+/*20080827 to latest
+공격
+Attack
+*/
+ MSG_ATTACK = 0x6e,
+/*20080827 to latest
+보조
+Support
+*/
+ MSG_SUPPORT = 0x6f,
+/*20080827 to latest
+전체
+All
+*/
+ MSG_ALL = 0x70,
+/*20080827 to latest
+무기
+Weapons
+*/
+ MSG_WEAPON = 0x71,
+/*20080827 to latest
+방어
+Defense
+*/
+ MSG_DEFENCE = 0x72,
+/*20080827 to latest
+수
+Water
+*/
+ MSG_WATER = 0x73,
+/*20080827 to latest
+지
+Earth
+*/
+ MSG_EARTH = 0x74,
+/*20080827 to latest
+화
+Fire
+*/
+ MSG_FIRE = 0x75,
+/*20080827 to latest
+풍
+Wind
+*/
+ MSG_WIND = 0x76,
+/*20080827 to latest
+같은종류의 장비아이템은 한번에 한개만 살 수 있습니다.
+Please avoid buying 2 of the same items at one time.
+*/
+ MSG_EQUIPITEM_OLNY_ONE = 0x77,
+/*20080827 to latest
+창모드에서 실행 할때는 16비트 컬러로 맞춰주세요.
+Please change your desktop Color Depth to 16-bit when running Ragnarok in windowed mode.
+*/
+ MSG_ONLY_16BIT_WHEN_WINDOWMODE = 0x78,
+/*20080827 to latest
+잠시만 기다려 주세요.
+Please wait...
+*/
+ MSG_PLEASE_BE_PATIENT = 0x79,
+/*20080827 to latest
+잠시만 기다려 주세요.
+Please wait...
+*/
+ MSG_WAITING_RESPONSE_FROM_SERVER = 0x7a,
+/*20080827 to latest
+잠시만 기다려 주세요.
+Please wait...
+*/
+ MSG_MAKING_CHARACTER = 0x7b,
+/*20080827 to latest
+잠시만 기다려 주세요.
+Please wait...
+*/
+ MSG_DELETING_CHARACTER = 0x7c,
+/*20080827 to latest
+방 만들기
+Make a Room
+*/
+ MSG_MAKING_ROOM = 0x7d,
+/*20080827 to latest
+방셋팅 바꾸기
+Room Setup
+*/
+ MSG_CHANGE_ROOM_SETTING = 0x7e,
+/*20080827 to latest
+강퇴시키기
+Kick Character Out
+*/
+ MSG_BAN = 0x7f,
+/*20080827 to latest
+방장권한 주기
+Give Master Authority
+*/
+ MSG_GIVE_GIVE_ROOM_POWER = 0x80,
+/*20080827 to latest
+정보보기
+View Information
+*/
+ MSG_SEE_INFORMATION_OF_CHARACTER = 0x81,
+/*20080827 to latest
+대화방
+Chat Room
+*/
+ MSG_CHAT_ROOM = 0x82,
+/*20080827 to latest
+명
+Ppl
+*/
+ MSG_COUNT_UNIT_OF_PEOPLE = 0x83,
+/*20080827 to latest
+/앉기 or /sit : 앉기. 앉아있을때 서기
+/sit: Sit command. If you are sitting, you will stand instead.
+*/
+ MSG_EXPLAIN_SIT = 0x84,
+/*20080827 to latest
+/서기 or /stand : 서기. 서있을때 앉기
+/stand: Stand command. If you are standing, you will sit instead.
+*/
+ MSG_EXPLAIN_STAND = 0x85,
+/*20080827 to latest
+/채팅방 or /chat : 채팅방 만들기창 띄우기
+/chat: Creates a Chat Room
+*/
+ MSG_EXPLAIN_MAKE_CHAT = 0x86,
+/*20080827 to latest
+/q : 채팅방 나가기.
+/q: Leaves a Chat Room
+*/
+ MSG_EXPLAIN_EXIT_CHAT_ROOM = 0x87,
+/*20080827 to latest
+/거래 [캐릭터이름] or /교환 [캐릭터이름] or /deal [캐릭터이름] : 해당 캐릭터와 거래요청
+/deal ''Character Name'' Requests a deal with a character
+*/
+ MSG_EXPLAIN_DEAL = 0x88,
+/*20080827 to latest
+/결성 [파티이름] or /organize [파티이름] : 파티결성
+/organize ''Party Name'' Organizes a party
+*/
+ MSG_EXPLAIN_ORGANIZE_PARTY = 0x89,
+/*20080827 to latest
+/탈퇴 or /leave : 파티 탈퇴
+/leave: Leaves a party
+*/
+ MSG_EXPLAIN_LEAVE_PARTY = 0x8a,
+/*20080827 to latest
+/제명 [캐릭터이름] or /expel [캐릭터이름] : 해당캐릭터를 파티에서 제명시킴
+/expel ''Character Name'' kicks a Character out of your party
+*/
+ MSG_EXPLAIN_EXPEL_PARTY_MEMBER = 0x8b,
+/*20080827 to latest
+[Alt] + [End] : 플레이어 hp/sp 게이지 On Off
+[Alt] + [End]: Turns HP/SP Bar On or Off
+*/
+ MSG_EXPLAIN_TIP4 = 0x8c,
+/*20080827 to latest
+[Alt] + [Home] : 지면 커서 표시 On Off
+[Alt] + [Home]: Turns Ground Cursor On or Off
+*/
+ MSG_EXPLAIN_TIP5 = 0x8d,
+/*20080827 to latest
+[Insert] : 앉기 서기
+[Insert]: Makes you sit or stand. (Hotkey to toggle between /sit and /stand)
+*/
+ MSG_EXPLAIN_TIP6 = 0x8e,
+/*20080827 to latest
+MVP가 되셨습니다!! MVP 아이템은
+Congratulations! You are the MVP! Your reward item is
+*/
+ MSG_YOU_RECEIVE_MVP_ITEM = 0x8f,
+/*20080827 to latest
+ !!
+!!
+*/
+ MSG_YOU_RECEIVE_MVP_ITEM2 = 0x90,
+/*20080827 to latest
+MVP가 되셨습니다!! 특별경험치
+Congratulations! You are the MVP! Your reward EXP Points are
+*/
+ MSG_YOU_RECEIVE_MVP_EXP = 0x91,
+/*20080827 to latest
+ 획득!!
+!!
+*/
+ MSG_YOU_RECEIVE_MVP_EXP2 = 0x92,
+/*20080827 to latest
+MVP가 되셨습니다만 무게초과로 MVP 아이템을 가질 수 없었습니다!!
+You are the MVP, but you can't take the reward because you are over your weight limit.
+*/
+ MSG_YOU_THROW_MVPITEM = 0x93,
+/*20080827 to latest
+ 없는 캐릭터 이름 입니다.
+There is no such character name or the user is offline.
+*/
+ MSG_NOT_EXIST_CHARACTER = 0x94,
+/*20080827 to latest
+ 수신 거부 상태입니다.
+ doesn't want to receive your messages.
+*/
+ MSG_NO_RECEIVE_MODE = 0x95,
+/*20080827 to latest
+ 모든 캐릭터에 대해 수신 거부 상태 입니다.
+ is not in the mood to talk with anyone.
+*/
+ MSG_NO_RECEIVE_MODE_FOR_ALL = 0x96,
+/*20080827 to latest
+캐릭터 접속끊기 성공.
+Killed/Disconnected User.
+*/
+ MSG_SUCCESS_DISCONNECT_CHARACTER = 0x97,
+/*20080827 to latest
+캐릭터 접속끊기 실패.
+Kill has failed.
+*/
+ MSG_FAIL_DISCONNECT_CHARACTER = 0x98,
+/*20080827 to latest
+%s %d 개 획득
+You got %s (%d).
+*/
+ MSG_GET_ITEM = 0x99,
+/*20080827 to latest
+[Alt] + [=] : 알파벳 간격이 넓어졌을때 되돌리기.
+[Alt] + [=]: Fix the interval error between letters.
+*/
+ MSG_EXPLAIN_TIP7 = 0x9a,
+/*20080827 to latest
+[F10] : 채팅창 크기조정 [Alt] + [F10] : 채팅창 On Off
+[F10]: To toggle Chat Window size; [Alt] + [F10]: Toggle Chat Window On or Off
+*/
+ MSG_EXPLAIN_TIP8 = 0x9b,
+/*20080827 to latest
+귓속말 하는법 : 채팅창 왼쪽 입력란에 캐릭터이름을 입력하고 오른쪽 입력란에 말을 입력하면 됩니다. TAB키로 두입력란 사이로 커서를 이동할 수 있습니다.
+How to Whisper: Enter a Character's Name on the left side of chat window and type your message on the right side. The Tab key helps you move between these boxes.
+*/
+ MSG_EXPLAIN_TIP9 = 0x9c,
+/*20080827 to latest
+/! /? /기쁨 /하트 /땀 /아하 /짜증 /화 /돈 /... /가위 /바위 /보 : Alt + (1~9) Ctrl + (-=\) 에 대응되는 명령어 입니다.
+/!,/?,/ho,/lv,/lv2,/swt,/ic,/an,/ag,/$,/….,/thx,/wah,/sry,/heh,/swt2,/hmm,/no1,/??,/omg,/oh,/X,/hp,/go,/sob,/gg,/kis,/kis2,/pif,/ok: Emotion icons corresponding to Alt + (1~9) Ctrl + (-=\\)
+*/
+ MSG_EXPLAIN_TIP10 = 0x9d,
+/*20080827 to latest
+파티원에게 말하는법 : 말의 제일앞에 '%'를 붙이면 파티원에게 말이 갑니다. (예: "%안녕")
+How to Speak to Party: Add % in front of every message.(Example: \%Hello\)
+*/
+ MSG_EXPLAIN_TIP11 = 0x9e,
+/*20080827 to latest
+스킬레벨이 부족합니다. 교환 불능.
+You haven't learned enough Basic Skills to Trade.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE1 = 0x9f,
+/*20080827 to latest
+스킬레벨이 부족합니다. 이모션 불능.
+You haven't learned enough Basic Skills to use Emotion icons.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE2 = 0xa0,
+/*20080827 to latest
+스킬레벨이 부족합니다. 앉기 불능.
+You haven't learned enough Basic Skills to Sit.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE3 = 0xa1,
+/*20080827 to latest
+스킬레벨이 부족합니다. 채팅방만들기 불능.
+You haven't learned enough Basic Skills to create a chat room.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE4 = 0xa2,
+/*20080827 to latest
+스킬레벨이 부족합니다. 파티만들기 불능
+You haven't learned enough Basic Skills to Party.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE5 = 0xa3,
+/*20080827 to latest
+스킬레벨이 부족합니다. 외치기 불능
+You haven't learned enough skills to Shout.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE6 = 0xa4,
+/*20080827 to latest
+스킬레벨이 부족합니다. pk 불능
+You haven't learned enough skills for Pking.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE7 = 0xa5,
+/*20080827 to latest
+사고자하는 품목
+Buying Items
+*/
+ MSG_ITEMS_FOR_BUY = 0xa6,
+/*20080827 to latest
+아이템 상점
+Item Shop
+*/
+ MSG_ITEM_STORE = 0xa7,
+/*20080827 to latest
+팔고자하는 품목
+Selling Items
+*/
+ MSG_ITEMS_FOR_SELL = 0xa8,
+/*20080827 to latest
+보관아이템
+Storage
+*/
+ MSG_ITEMS_THAT_IS_STORED = 0xa9,
+/*20080827 to latest
+ 장비가 장착 되었습니다.
+ is put on.
+*/
+ MSG_ITEM_IS_EQUIPED = 0xaa,
+/*20080827 to latest
+ 장비가 해제 되었습니다.
+ is taken off.
+*/
+ MSG_ITEM_IS_REMOVED = 0xab,
+/*20080827 to latest
+귓말리스트에 이름넣기
+To add names on the Whispering List
+*/
+ MSG_ADD_TO_WHISPER_CHAR_LIST = 0xac,
+/*20080827 to latest
+스크린샷 찍는법 : [Print Screen]키나 [Scroll Lock]키를 누르면 됩니다.
+How to Take Screen Shots: Press [Print Screen] or [Scroll Lock]
+*/
+ MSG_EXPLAIN_TIP12 = 0xad,
+/*20080827 to latest
+오늘의 팁
+Tip of the Day
+*/
+ MSG_TIPOFTHEDAY = 0xae,
+/*20080827 to latest
+^3850a0알고 계셨습니까... ^000000 //^709fed
+^3850a0Did you know...?^709fed
+*/
+ MSG_DIDYOUKNOW = 0xaf,
+/*20080827 to latest
+시작할때 열기
+Display at startup
+*/
+ MSG_SHOWTIPSATSTARTUP = 0xb0,
+/*20080827 to latest
+/tip : 오늘의팁 열기
+/tip: Opens ''Tip of the Day''
+*/
+ MSG_EXPLAIN_OPENTIP = 0xb1,
+/*20080827 to latest
+현재 접속자 %d명
+There are %d Players Currently Connected.
+*/
+ MSG_NUMPEOPLE = 0xb2,
+/*20080827 to latest
+(%s)님이 입장 하였습니다.
+(%s) has entered.
+*/
+ MSG_USERGETINTHEROOM = 0xb3,
+/*20080827 to latest
+(%s)님이 퇴장 하였습니다.
+(%s) has left.
+*/
+ MSG_USERGETOUTOFTHEROOM = 0xb4,
+/*20080827 to latest
+(%s)님이 강제 퇴장 되었습니다.
+(%s) was kicked out.
+*/
+ MSG_USERGETOUTOFTHEROOMBYFORCE = 0xb5,
+/*20080827 to latest
+ %d 개
+%d ea.
+*/
+ MSG_EA = 0xb6,
+/*20080827 to latest
+%s : %d 개
+%s: %d ea.
+*/
+ MSG_EA2 = 0xb7,
+/*20080827 to latest
+%s %s : %d 개
+%s %s: %d
+*/
+ MSG_EA3 = 0xb8,
+/*20080827 to latest
+팔 수 있는 품목
+Available Items to sell
+*/
+ MSG_ITEMSYOUCANSELL = 0xb9,
+/*20080827 to latest
+상점에서 파는 품목
+Shop Items
+*/
+ MSG_SHOPITEMS = 0xba,
+/*20080827 to latest
+알 수 없는곳
+Unknown Area
+*/
+ MSG_NOWHERE = 0xbb,
+/*20080827 to latest
+서버와 언어가 맞지 않습니다.
+Your Client language doesn't match the Server language.
+*/
+ MSG_CLIENTTYPEMISMATCH = 0xbc,
+/*20080827 to latest
+아이템을 버릴려면 장비창을 닫으세요.
+Please move your equipment to the inventory. And close the equipment window.
+*/
+ MSG_CLOSEEQUIPWND = 0xbd,
+/*20080827 to latest
+영어만 됩니다.
+This server provides English Text Characters Only.
+*/
+ MSG_ENGLISHONLY = 0xbe,
+/*20080827 to latest
+지금은 지원되지 않습니다.
+This is not implemented yet.
+*/
+ MSG_NOTSUPPORTEDYET = 0xbf,
+/*20080827 to latest
+귓말 리스트가 없습니다.
+No Whisper List.
+*/
+ MSG_NOWHISPERLIST = 0xc0,
+/*20080827 to latest
+ 에게 귓말거부상태로됨
+: Whispering Blocked.
+*/
+ MSG_WHISPERIGNORESUCCESS = 0xc1,
+/*20080827 to latest
+ 에게 귓말거부 요청실패함
+: Whispering Block has failed.
+*/
+ MSG_WHISPERIGNOREFAILED1 = 0xc2,
+/*20080827 to latest
+ 에게 귓말거부 요청실패함 (인원초과)
+: Whispering Block has failed. Block List is full.
+*/
+ MSG_WHISPERIGNOREFAILED2 = 0xc3,
+/*20080827 to latest
+ 에게 귓말가능상태로됨
+: Whispering accepted.
+*/
+ MSG_WHISPERNOIGNORESUCCESS = 0xc4,
+/*20080827 to latest
+ 에게 귓말가능 요청실패함
+: Command has failed.
+*/
+ MSG_WHISPERNOIGNOREFAILED1 = 0xc5,
+/*20080827 to latest
+ 에게 귓말가능 요청실패함 (인원초과)
+: Command has failed. Block List is full.
+*/
+ MSG_WHISPERNOIGNOREFAILED2 = 0xc6,
+/*20080827 to latest
+이름의 처음과 마지막에는 공백문자를 사용할 수 없습니다.
+You cannot put a space at the beginning or end of a name.
+*/
+ MSG_NO_SPACE_IN_NAME = 0xc7,
+/*20080827 to latest
+비공개
+Private
+*/
+ MSG_ROOM_PRIVATE2 = 0xc8,
+/*20080827 to latest
+공개
+Public
+*/
+ MSG_ROOM_PUBLIC2 = 0xc9,
+/*20080827 to latest
+SP가 부족합니다.
+Not Enough SP
+*/
+ MSG_USESKILL_FAIL_SP_INSUFFICIENT = 0xca,
+/*20080827 to latest
+HP가 부족합니다.
+Not Enough HP
+*/
+ MSG_USESKILL_FAIL_HP_INSUFFICIENT = 0xcb,
+/*20080827 to latest
+스킬사용 실패.
+Skill has failed.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE8 = 0xcc,
+/*20080827 to latest
+훔치기 실패.
+Steal has failed.
+*/
+ MSG_FAIL_STEAL = 0xcd,
+/*20080827 to latest
+교환창
+Trade
+*/
+ MSG_EXCHANGE = 0xce,
+/*20080827 to latest
+독걸기 실패.
+Envenom skill has failed.
+*/
+ MSG_FAIL_POISON = 0xcf,
+/*20080827 to latest
+이 아이디로는 이 서버에 접속할 수 없습니다.
+You cannot use this ID on this server.
+*/
+ MSG_ID_MISMATCH = 0xd0,
+/*20080827 to latest
+스피드가 향상되었습니다.
+Your Speed has increased.
+*/
+ MSG_SPEEDUP = 0xd1,
+/*20080827 to latest
+스피드가 감소되었습니다.
+Your Speed has decreased.
+*/
+ MSG_SPEEDDOWN = 0xd2,
+/*20080827 to latest
+/기억 : 워프할 장소 기억(워프 스킬이 있는경우)
+/memo: To memorize a place as Warp Point (If you are an Acolyte Class character)
+*/
+ MSG_EXPLAIN_TIP13 = 0xd3,
+/*20080827 to latest
+임의의 위치
+Random Area
+*/
+ MSG_RANDOM_POS = 0xd4,
+/*20080827 to latest
+워프 할 위치를 선택하세요.
+Select an Area to Warp
+*/
+ MSG_SELECTWHERETOWARP = 0xd5,
+/*20080827 to latest
+스킬레벨이 부족합니다.
+Skill Level is not high enough
+*/
+ MSG_NOTENOUGHSKILLLEVEL = 0xd6,
+/*20080827 to latest
+저장된 워프할 장소가 없습니다.
+There are no memorized locations (Memo Points).
+*/
+ MSG_NO_STORED_PLACE_TO_WARP = 0xd7,
+/*20080827 to latest
+워프 관련 스킬이 없습니다.
+You haven't learned Warp.
+*/
+ MSG_NOWARPSKILL = 0xd8,
+/*20080827 to latest
+워프 장소로 저장됨.
+Saved location as a Memo Point for Warp Skill.
+*/
+ MSG_WARPPOINTSTORED = 0xd9,
+/*20080827 to latest
+취소
+Cancel
+*/
+ MSG_CANCEL = 0xda,
+/*20080827 to latest
+스킬 사용후 시간이 충분히 지나지 않았습니다.
+There is a Delay after using a Skill.
+*/
+ MSG_SKILLINTERVAL = 0xdb,
+/*20080827 to latest
+한번에 가질 수 있는 아이템 종류수를 초과하여 아이템을 가질 수 없습니다.
+You can't have this item because you will exceed the weight limit.
+*/
+ MSG_CANT_GET_ITEM_BECAUSE_COUNT = 0xdc,
+/*20080827 to latest
+아이템 최대 종류수를 초과 하였습니다.
+Out of the maximum capacity
+*/
+ MSG_INSUFFICIENT_OVER_COUNT = 0xdd,
+/*20080827 to latest
+수레아이템
+Cart Items
+*/
+ MSG_MERCHANTITEM = 0xde,
+/*20080827 to latest
+수레 벗기
+Take off Cart
+*/
+ MSG_CARTOFF = 0xdf,
+/*20080827 to latest
+노점 개설
+Opening a stall
+*/
+ MSG_MERCHANTSHOPMAKER = 0xe0,
+/*20080827 to latest
+노점이름을 입력하세요.
+Please Name your Shop.
+*/
+ MSG_ENTER_SHOP_TITLE = 0xe1,
+/*20080827 to latest
+나의 노점
+My Shop
+*/
+ MSG_ITEM_MY_STORE = 0xe2,
+/*20080827 to latest
+상인 아이템 상점
+Merchant Shop
+*/
+ MSG_ITEM_MERCHANT_STORE = 0xe3,
+/*20080827 to latest
+상인에게 사고자하는 품목
+Buying Items
+*/
+ MSG_ITEMS_FOR_BUY_FROM_MERCHANT = 0xe4,
+/*20080827 to 20130508
+%s 사기 실패 %s
+20130515 to latest
+%s 구입 실패 %s
+%s Purchase Failed %s
+*/
+ MSG_FAIL_BUY_ITEM_FROM_MERCHANT = 0xe5,
+/*20080827 to latest
+재고 부족.
+Out of Stock
+*/
+ MSG_INSUFFICIENT_STOCK = 0xe6,
+/*20080827 to latest
+%s %d 개 팔림.
+%s %d sold.
+*/
+ MSG_ITEM_IS_SOLD = 0xe7,
+/*20080827 to latest
+노점에서 팔 수 있는 아이템
+Available Items for Vending
+*/
+ MSG_MERCHANTMIRRORITEM = 0xe8,
+/*20080827 to 20111012
+돈이 부족해서 스킬을 쓸 수 없습니다.
+20111017 to latest
+제니가 부족해서 스킬을 사용 할 수 없습니다.
+Skill has failed because you do not have enough zeny.
+*/
+ MSG_SKILL_FAIL_MONEY = 0xe9,
+/*20080827 to latest
+사용할 대상을 선택하세요
+Select a Target.
+*/
+ MSG_SELECTTARGET = 0xea,
+/*20080827 to latest
+/pk on : pk On /pk off : pk Off
+/pk on: Turns PK On. /pk off: Turns PK Off.
+*/
+ MSG_EXPLAIN_TIP14 = 0xeb,
+/*20080827 to latest
+노점
+Shop
+*/
+ MSG_STREETSHOP = 0xec,
+/*20080827 to latest
+수레 아이템 [Alt+W]
+Cart Items [Alt+W]
+*/
+ MSG_OPENCARTWINDOW = 0xed,
+/*20080827 to latest
+기본정보
+Basic Information
+*/
+ MSG_BASICINFOWND = 0xee,
+/*20080827 to latest
+이무기로는 이스킬을 사용할수 없습니다.
+The skill cannot be used with this weapon.
+*/
+ MSG_USESKILL_FAIL_NOT_SUITABLE_WEAPON = 0xef,
+/*20080827 to latest
+%s 사기 실패 재고 부족 현재 재고 %d 개.
+Buying %s has been failed. Out of Stock. Current Stock %d.
+*/
+ MSG_FAIL_BUY_ITEM_FROM_MERCHANT_NO_STOCK = 0xf0,
+/*20080827 to latest
+서버와 동기화가 틀려 연결이 끊어졌습니다.
+You've been disconnected due to a time gap between you and the server.
+*/
+ MSG_SPEEDHACK = 0xf1,
+/*20080827 to latest
+화살을 장착하세요
+Please equip the proper ammunition first.
+*/
+ MSG_ERR_ATTACK_ARROW = 0xf2,
+/*20080827 to latest
+중량과다로 공격이나 스킬을 사용할 수 없습니다.
+You can't attack or use skills because you've exceeded the Weight Limit.
+*/
+ MSG_ERR_ATTACK_WEIGHT = 0xf3,
+/*20080827 to latest
+중량과다로 스킬을 사용할 수 없습니다.
+You can't use skills because you've exceeded the Weight Limit.
+*/
+ MSG_ERR_SKILL_WEIGHT = 0xf4,
+/*20080827 to latest
+화살이 장착되었습니다.
+Ammunition has been equipped.
+*/
+ MSG_MSG_ARROW_EQUIPMENT_SUCCESS = 0xf5,
+/*20080827 to latest
+레드젬스톤이 필요합니다.
+Red Gemstone required.
+*/
+ MSG_NEED_REDJAMSTONE = 0xf6,
+/*20080827 to latest
+블루젬스톤이 필요합니다.
+Blue Gemstone required.
+*/
+ MSG_NEED_BLUEJAMSTONE = 0xf7,
+/*20080827 to latest
+힘 파라메터
+Strength
+*/
+ MSG_DESC_STR = 0xf8,
+/*20080827 to latest
+민첩성 파라메터
+Agility
+*/
+ MSG_DESC_AGI = 0xf9,
+/*20080827 to latest
+체력 파라메터
+Vitality
+*/
+ MSG_DESC_VIT = 0xfa,
+/*20080827 to latest
+지력 파라메터
+Intelligence
+*/
+ MSG_DESC_INT = 0xfb,
+/*20080827 to latest
+손재주 파라메터
+Dexterity
+*/
+ MSG_DESC_DEX = 0xfc,
+/*20080827 to latest
+운 파라메터
+Luck
+*/
+ MSG_DESC_LUK = 0xfd,
+/*20080827 to latest
+공격력
+Hit Point
+*/
+ MSG_DESC_ATK = 0xfe,
+/*20080827 to latest
+방어력
+Defence Rate
+*/
+ MSG_DESC_DEF = 0xff,
+/*20080827 to latest
+명중률
+Accuracy
+*/
+ MSG_DESC_HIT = 0x100,
+/*20080827 to latest
+필살공격률
+Critical Attack
+*/
+ MSG_DESC_CRI = 0x101,
+/*20080827 to latest
+소속길드
+Affiliated Guild
+*/
+ MSG_DESC_GUILD = 0x102,
+/*20080827 to latest
+각 파라메터 레벨업에 사용되는 포인트
+Points to level up each Parameter
+*/
+ MSG_DESC_POINT = 0x103,
+/*20080827 to latest
+마법공격력
+Magic Attack
+*/
+ MSG_DESC_MATK = 0x104,
+/*20080827 to latest
+마법방어력
+Magic Defense
+*/
+ MSG_DESC_MDEF = 0x105,
+/*20080827 to latest
+회피율
+Dodge
+*/
+ MSG_DESC_FLEE = 0x106,
+/*20080827 to latest
+공격스피드
+Attack Speed
+*/
+ MSG_DESC_ASPD = 0x107,
+/*20080827 to latest
+지역당 수용인원 초과로 접속할 수 없습니다.
+Server is jammed due to over population. Please try again shortly.
+*/
+ MSG_PC_OVERFLOW = 0x108,
+/*20080827 to latest
+옵션
+Option
+*/
+ MSG_OPTIONWND = 0x109,
+/*20080827 to latest
+E-MAIL 인증이 되지않았거나 블럭된 계정입니다.
+Account ID blocked by the Game Master Team.
+*/
+ MSG_ID_EMAIL_CONFIRM_NEEDED = 0x10a,
+/*20080827 to latest
+비밀번호가 틀립니다.
+Incorrect User ID or Password. Please try again.
+*/
+ MSG_INCORRECT_LOGIN_PASSWORD = 0x10b,
+/*20080827 to latest
+머리모양 선택
+Choose Hairstyle
+*/
+ MSG_SELECT_HAIR_STYLE = 0x10c,
+/*20080827 to latest
+공격력
+Hit Point
+*/
+ MSG_ATK = 0x10d,
+/*20080827 to latest
+방어력
+Defence Rate
+*/
+ MSG_DEF = 0x10e,
+/*20080827 to latest
+공격스냅 On
+Attack Snap On
+*/
+ MSG_ATTACK_SNAP_ON = 0x10f,
+/*20080827 to latest
+공격스냅 Off
+Attack Snap Off
+*/
+ MSG_ATTACK_SNAP_OFF = 0x110,
+/*20080827 to latest
+스킬스냅 On
+Skill Snap On
+*/
+ MSG_SKILL_SNAP_ON = 0x111,
+/*20080827 to latest
+스킬스냅 Off
+Skill Snap Off
+*/
+ MSG_SKILL_SNAP_OFF = 0x112,
+/*20080827 to latest
+/스냅 or /snap: 몬스터 공격시 스냅 On Off /스킬스냅 or /skillsnap: 스킬로 몬스터 공격시 스냅 On Off /아이템스냅 or /itemsnap: 아이템 주울때 스냅 On Off
+/snap: Turns snap On | Off for fights, /skillsnap: Turns snap On | Off for skills. /itemsnap: Turns snap On | Off for items on the grounds.
+*/
+ MSG_EXPLAIN_SNAP = 0x113,
+/*20080827 to latest
+아이템스냅 On
+Item Snap On
+*/
+ MSG_ITEM_SNAP_ON = 0x114,
+/*20080827 to latest
+아이템스냅 Off
+Item Snap Off
+*/
+ MSG_ITEM_SNAP_OFF = 0x115,
+/*20080827 to latest
+스냅
+Snap
+*/
+ MSG_SNAP = 0x116,
+/*20080827 to latest
+한가지 아이템을 3만개 이상 가질수 없습니다.
+You cannot carry more than 30,000 of one kind of item.
+*/
+ MSG_CANT_GET_ITEM_OVERCOUNT_ONEITEM = 0x117,
+/*20080827 to latest
+레벨 30이상의 캐릭터는 삭제할 수 없습니다. 삭제를 원하시면 관계자에게 문의 하세요.
+You cannot delete a Character with a level greater than 30. If you want to delete the character please contact a Game Master.
+*/
+ MSG_CANT_DELETE_CHARACTER_OVER_30_LEVEL = 0x118,
+/*20080827 to 20091208
+이이템 교환중에는 아이템을 사고 팔 수 없습니다.
+20091215 to latest
+아이템 교환중에는 아이템을 사고 팔 수 없습니다.
+You cannot use an NPC shop while in a trade.
+*/
+ MSG_FAIL_BUY_ITEM_ITEM_EXCHANGING = 0x119,
+/*20080827 to latest
+상점명
+Shop Name
+*/
+ MSG_STALL_NAME = 0x11a,
+/*20080827 to latest
+스킬목록
+Skill Tree
+*/
+ MSG_SKILLLIST = 0x11b,
+/*20080827 to latest
+스킬포인트 : %d
+Skill Point: %d
+*/
+ MSG_SKILLPOINT = 0x11c,
+/*20080827 to latest
+스킬사용 실패
+Skill has failed.
+*/
+ MSG_USESKILL_FAIL = 0x11d,
+/*20080827 to latest
+패시브
+Passive
+*/
+ MSG_PASSIVE = 0x11e,
+/*20080827 to latest
+각자 취득
+Individual
+*/
+ MSG_EXPDIV1 = 0x11f,
+/*20080827 to latest
+균등하게 분배
+Shared
+*/
+ MSG_EXPDIV2 = 0x120,
+/*20080827 to latest
+각자 취득
+Individual
+*/
+ MSG_ITEMCOLLECT1 = 0x121,
+/*20080827 to latest
+파티 전체 공유
+Party Share
+*/
+ MSG_ITEMCOLLECT2 = 0x122,
+/*20080827 to latest
+파티 설정
+Party Setup
+*/
+ MSG_PARTYSETTING = 0x123,
+/*20080827 to latest
+경험치 분배방식
+How to share EXP
+*/
+ MSG_HOWEXPDIV = 0x124,
+/*20080827 to latest
+아이템 수집방식
+How to share Items
+*/
+ MSG_HOWITEMCOLLECT = 0x125,
+/*20080827 to latest
+파티 리더만 설정할 수 있습니다.
+Only the Party Leader can change this setting.
+*/
+ MSG_ONLY_PARTYMASTER = 0x126,
+/*20080827 to latest
+아이템 갯수 안물어보기
+Toggle Item Amount.
+*/
+ MSG_NOQUESTION_ITEMCOUNT = 0x127,
+/*20080827 to latest
+^ff0000%d^000000 초 후에 캐릭터가 지워집니다. 취소 하려면 취소 버튼을 누르세요.
+Character will be deleted after ^ff0000%d^000000 seconds. Press Cancel to quit.
+*/
+ MSG_CHARARATER_DELETE_COUNT = 0x128,
+/*20080827 to latest
+교환할 수 있는 최대 아이템 갯수는 10가지 입니다.
+You cannot trade more than 10 types of items per trade.
+*/
+ MSG_MAXEXCHANGE_IS_10_KIND = 0x129,
+/*20080827 to latest
+이서버를 이용할 수 없는 나이입니다.
+You are underaged.
+*/
+ MSG_LIMIT_AGE = 0x12a,
+/*20080827 to latest
+이메일 주소를 입력하세요.
+Please enter the deletion password.
+*/
+ MSG_ENTER_EMAIL = 0x12b,
+/*20080827 to latest
+이메일 주소 입력하기
+E-mail Address (Case Sensitive).
+*/
+ MSG_ENTER_EMAIL_TOOLTIP = 0x12c,
+/*20080827 to latest
+이메일 주소가 틀려서 캐릭터가 삭제 되지 않았습니다.
+Character Deletion has failed because you have entered an incorrect e-mail address.
+*/
+ MSG_CANNOT_DELETE_CHARACTER_EMAIL = 0x12d,
+/*20080827 to latest
+계정 비밀번호를 입력하세요.
+Enter Second Serial Cord of your Social Security number.
+*/
+ MSG_ENTER_PEOPLE_REG_NUMBER = 0x12e,
+/*20080827 to latest
+비밀번호가 틀려서 캐릭터가 삭제 되지 않았습니다.
+Character Deletion has failed because you have entered an incorrect SSN.
+*/
+ MSG_CANNOT_DELETE_CHARACTER_PEOPLE_REG_NUMBER = 0x12f,
+/*20080827 to latest
+한번에 15가지 이상의 아이템을 팔 수 없습니다.
+You can't sell more than 15 types of Items at one time.
+*/
+ MSG_CANT_SELL_OVER_15 = 0x130,
+/*20080827 to latest
+나이제한 때문에 이계정으로 이서버에 접속할 수 없습니다.
+The age limit from commandment tables cannot connect to this server.
+*/
+ MSG_UNDER_AGE = 0x131,
+/*20080827 to latest
+무게가 50 퍼센트 이상일때는 HP SP가 자연적으로 회복이 되지 않습니다.
+HP/SP will not be restored when your carried weight is over 50% of the Weight Limit.
+*/
+ MSG_NO_RECOVER_OVERWEIGHT = 0x132,
+/*20080827 to latest
+무게가 90 퍼센트 이상일때는 공격과 스킬을 사용할 수 없습니다.
+You can't use Skills or Attack while your carried weight is over 90% of your Weight Limit.
+*/
+ MSG_NO_ATTACK_OVERWEIGHT = 0x133,
+/*20080827 to latest
+HP SP가 자연적으로 회복이 가능한 상태가 되었습니다.
+Your HP/SP are now being restored naturally.
+*/
+ MSG_NO_RECOVER_OVERWEIGHT_RELEASED = 0x134,
+/*20080827 to latest
+공격과 스킬이 가능한 상태가 되었습니다.
+Attack and Skills are now available.
+*/
+ MSG_NO_ATTACK_OVERWEIGHT_RELEASED = 0x135,
+/*20080827 to latest
+서버 점검중입니다.
+Your Game's Exe File is not the latest version.
+*/
+ MSG_INVALID_VERSION = 0x136,
+/*20080827 to latest
+아이템이 모두 팔렸습니다.
+Items are sold out.
+*/
+ MSG_ITEM_IS_SOLD_OUT = 0x137,
+/*20080827 to latest
+채팅내용 파일로 저장하기
+Save Chat as Text File
+*/
+ MSG_WRITE_CHAT_TO_FILE = 0x138,
+/*20080827 to latest
+/갈무리 or /savechat : 채팅 내용 파일로 저장하기.
+/savechat: Save a Chat Log
+*/
+ MSG_EXPLAIN_SAVE_CHAT = 0x139,
+/*20080827 to latest
+계정 만들기
+Register
+*/
+ MSG_MAKEACCOUNT = 0x13a,
+/*20080827 to latest
+수신거부하기
+Reject Whispering
+*/
+ MSG_REQ_EX_LIST = 0x13b,
+/*20080827 to latest
+수신거부해제하기
+Allow Whispering
+*/
+ MSG_REQ_IN = 0x13c,
+/*20080827 to latest
+미스표시 On
+Shows ''Miss''
+*/
+ MSG_MISS_EFFECT_ON = 0x13d,
+/*20080827 to latest
+미스표시 Off
+Shows ''Miss''
+*/
+ MSG_MISS_EFFECT_OFF = 0x13e,
+/*20080827 to latest
+카메라고정 On
+Camera Zooming On
+*/
+ MSG_FIXED_CAMERA_ON = 0x13f,
+/*20080827 to latest
+카메라고정 Off
+Camera Zooming Off
+*/
+ MSG_FIXED_CAMERA_OFF = 0x140,
+/*20080827 to latest
+/camera : 플레이어에게 카메라고정 On Off /miss : 미스이펙트 On Off
+/camera: Camera Zooming On or Off. /miss: Toggle ''Miss'' display
+*/
+ MSG_EXPLAIN_CAMERA_MISS = 0x141,
+/*20080827 to latest
+스킬정보보기
+View Skill Info
+*/
+ MSG_SEE_INFORMATION_OF_SKILL = 0x142,
+/*20080827 to latest
+스킬이름바꾸기
+Change Skill
+*/
+ MSG_CHANGE_SKILL_NAME = 0x143,
+/*20080827 to latest
+스프라이트 해상도
+Sprite Resolution
+*/
+ MSG_SPRITE_RESOLUTION = 0x144,
+/*20080827 to latest
+텍스쳐 해상도
+Texture Resolution
+*/
+ MSG_TEXTURE_RESOLUTION = 0x145,
+/*20080827 to latest
+디테일 조정
+Arrange Detail
+*/
+ MSG_DETAILLEVELWND = 0x146,
+/*20080827 to latest
+%s Zeny 획득
+You got %s Zeny
+*/
+ MSG_GET_ZENY = 0x147,
+/*20080827 to latest
+길드명
+Guild Name
+*/
+ MSG_GUILDNAME = 0x148,
+/*20080827 to latest
+길드레벨
+Guild lvl
+*/
+ MSG_GUILDLEVEL = 0x149,
+/*20080827 to latest
+마스터이름
+ClanMaster Name
+*/
+ MSG_GUILD_MASTER_NAME = 0x14a,
+/*20080827 to latest
+조합원수
+Number of Members
+*/
+ MSG_GUILD_NUM_MEMBER = 0x14b,
+/*20080827 to latest
+조합원 평균레벨
+Avg.lvl of Guildsmen
+*/
+ MSG_GUILD_AVG_MEMBER_LEVEL = 0x14c,
+/*20080827 to latest
+관리영지
+Castles Owned
+*/
+ MSG_GUILD_MANAGE_LAND = 0x14d,
+/*20080827 to latest
+성향
+Tendency
+*/
+ MSG_GUILD_FAIR = 0x14e,
+/*20080827 to latest
+경험치
+EXP
+*/
+ MSG_GUILD_EXP = 0x14f,
+/*20080827 to latest
+길드엠블렘
+Emblem
+*/
+ MSG_GUILD_EMBLEM = 0x150,
+/*20080827 to latest
+길드상납포인트
+Tax Point
+*/
+ MSG_GUILD_POINT = 0x151,
+/*20080827 to latest
+동맹길드
+Alliances
+*/
+ MSG_ALLY_GUILD = 0x152,
+/*20080827 to latest
+적대길드
+Antagonists
+*/
+ MSG_HOSTILITY_GUILD = 0x153,
+/*20080827 to latest
+길드정보
+Guild Info
+*/
+ MSG_GUILDINFOMANAGE = 0x154,
+/*20080827 to latest
+조합원정보
+Guildsmen Info
+*/
+ MSG_GUILDMEMBERMANAGE = 0x155,
+/*20080827 to latest
+직위설정
+Position
+*/
+ MSG_GUILDPOSITIONMANAGE = 0x156,
+/*20080827 to latest
+길드스킬
+Guild Skill
+*/
+ MSG_GUILDSKILL = 0x157,
+/*20080827 to latest
+추방자 리스트
+Expel History
+*/
+ MSG_GUILDBANISHEDMEMBER = 0x158,
+/*20080827 to latest
+공지사항
+Guild Notice
+*/
+ MSG_GUILDNOTICE = 0x159,
+/*20080827 to latest
+전체길드 리스트
+Entire Guild List
+*/
+ MSG_GUILDTOTALINFO = 0x15a,
+/*20080827 to latest
+귓말 리스트
+Whispering List
+*/
+ MSG_WHISPERLISTWND = 0x15b,
+/*20080827 to latest
+귓말창 열기
+Open Whispering Window
+*/
+ MSG_OPENWHISPERLISTWND = 0x15c,
+/*20080827 to latest
+귓말 리스트 창 여는법 : [Alt] + [H] 를 누르면 귓말 리스트 창이 열립니다.
+How to Open Whispering List: Press [Alt] + [H]
+*/
+ MSG_EXPLAIN_WHISPER_LIST_WND = 0x15d,
+/*20080827 to latest
+자동으로 귓말창 열기
+Open Whispering List Automatically
+*/
+ MSG_AUTOOPENWHISPERLISTWND = 0x15e,
+/*20080827 to latest
+지우기
+Delete
+*/
+ MSG_DELETE = 0x15f,
+/*20080827 to latest
+다음부터 열리지 않음
+Close since next
+*/
+ MSG_DONTOPEN = 0x160,
+/*20080827 to latest
+마지막으로 접속한 시간
+Last Log-in Time
+*/
+ MSG_LAST_LOGIN_TIME = 0x161,
+/*20080827 to latest
+마지막으로 접속한 IP
+Last Log-in IP
+*/
+ MSG_LAST_LOGIN_IP = 0x162,
+/*20080827 to latest
+친구 설정
+Friend Setup
+*/
+ MSG_FRIEND_SETTING = 0x163,
+/*20080827 to latest
+정말 지우시겠습니까?
+Are you sure that you want to delete?
+*/
+ MSG_DO_YOU_REALLY_WANT_DELETE = 0x164,
+/*20080827 to latest
+정말 탈퇴하시겠습니까?
+Are you sure that you want to leave?
+*/
+ MSG_DO_YOU_REALLY_WANT_LEAVE = 0x165,
+/*20080827 to latest
+친구로 등록하기
+Register as a Friend
+*/
+ MSG_ADD_TO_FRIEND_CHAR_LIST = 0x166,
+/*20080827 to latest
+친구일때 자동으로 1:1창 열기
+Open 1:1 Chat between Friends
+*/
+ MSG_AUTOOPENWHISPERLISTWND_FRIEND = 0x167,
+/*20080827 to latest
+1:1창 열기
+Open 1:1 Chat
+*/
+ MSG_OPEN_1ON1_WINDOW = 0x168,
+/*20080827 to latest
+친구가 아닐때 자동으로 1:1창 열기
+Open 1:1 Chat between Strangers
+*/
+ MSG_AUTOOPEN_1ON1_WINDOW = 0x169,
+/*20080827 to latest
+1:1창 열릴때 소리로 알림
+Alarm when you recieve a 1:1 Chat
+*/
+ MSG_WHISPER_OPEN_SOUND = 0x16a,
+/*20080827 to latest
+정말 제명시키시겠습니까?
+Are you sure that you want to expel?
+*/
+ MSG_DO_YOU_REALLY_WANT_EXPEL = 0x16b,
+/*20080827 to latest
+%s 님이 길드를 탈퇴했습니다.
+%s has withdrawn from the guild.
+*/
+ MSG_USER_LEFT_GUILD = 0x16c,
+/*20080827 to latest
+탈퇴사유 : %s
+Secession Reason: %s
+*/
+ MSG_REASON_LEAVE_GUILD = 0x16d,
+/*20080827 to 20120202
+길드 해체 실패
+20120207 to latest
+길드명이 일치하지 않습니다
+You have failed to disband the guild.
+*/
+ MSG_DISORGANIZE_GUILD_FAILURE = 0x16e,
+/*20080827 to latest
+길드해체사유 : %s
+Disband Reason: %s
+*/
+ MSG_DISORGANIZATION_REASON = 0x16f,
+/*20080827 to latest
+해당 계정은 삭제된 아이디 입니다.
+This ID has been removed.
+*/
+ MSG_DELETED_ACCOUNT = 0x170,
+/*20080827 to latest
+판매가 :
+Price:
+*/
+ MSG_SELLPRICE = 0x171,
+/*20080827 to latest
+%s 님이 길드에서 추방되었습니다.
+%s has been expelled from our guild.
+*/
+ MSG_BAN_GUILD = 0x172,
+/*20080827 to latest
+추방사유 : %s
+Expulsion Reason: %s
+*/
+ MSG_REASON_BAN_GUILD = 0x173,
+/*20080827 to latest
+아이템을 착용할 수 없습니다.
+You can't put this item on.
+*/
+ MSG_CAN_NOT_EQUIP_ITEM = 0x174,
+/*20080827 to latest
+파티설정을 변경할 수 없습니다.
+You can't modify Party Setup.
+*/
+ MSG_PARTYSETTING_CHANGE_IMPOSSIBLE = 0x175,
+/*20080827 to latest
+길드가 만들어 졌습니다.
+Guild has been Created.
+*/
+ MSG_GUILD_MAKE_SUCCESS = 0x176,
+/*20080827 to latest
+이미 길드에 속해있습니다.
+You are already in a Guild.
+*/
+ MSG_GUILD_MAKE_ALREADY_MEMBER = 0x177,
+/*20080827 to latest
+같은이름의 길드가 존재합니다.
+That Guild Name already exists.
+*/
+ MSG_GUILD_MAKE_GUILD_EXIST = 0x178,
+/*20080827 to latest
+ 길드에서 초청 메시지가 왔습니다. 가입하겠습니까?
+ Guild has sent you an invitation. Would you like to join this Guild?
+*/
+ MSG_SUGGEST_JOIN_GUILD = 0x179,
+/*20080827 to latest
+다른길드에 가입되어 있습니다.
+He/She is already in a Guild.
+*/
+ MSG_CHARACTER_IS_ALREADY_IN_GUILD = 0x17a,
+/*20080827 to latest
+길드가입을 거절 했습니다.
+Offer Rejected
+*/
+ MSG_CHARACTER_REJECT_JOIN_GUILD = 0x17b,
+/*20080827 to latest
+길드가입을 수락했습니다.
+Offer Accepted
+*/
+ MSG_CHARACTER_ACCEPT_JOIN_GUILD = 0x17c,
+/*20080827 to latest
+길드정원을 초과했습니다.
+Your Guild is Full.
+*/
+ MSG_TOO_MANY_PEOPLE_IN_GUILD = 0x17d,
+/*20080827 to latest
+(%s)님 길드에 가입요청
+Send (%s) a Guild invitation
+*/
+ MSG_REQ_JOIN_GUILD = 0x17e,
+/*20080827 to latest
+스킬 레벨이 모자라서 매너포인트를 줄 수 없습니다.
+You haven't learned enough skills for aligning.
+*/
+ MSG_NOT_ENOUGH_FOR_MANNER_POINT = 0x17f,
+/*20080827 to latest
+매너 포인트 주기 성공
+Aligning completed.
+*/
+ MSG_GIVING_MANNER_POINT_SUCCESS = 0x180,
+/*20080827 to latest
+오늘 이미 사용했습니다.
+You already spent your point for today.
+*/
+ MSG_YOU_USE_TODAY_ALREADY = 0x181,
+/*20080827 to latest
+이캐릭터에게 지급한지 한달이 지나지 않았습니다.
+Hasn't been a month yet since you aligned this person.
+*/
+ MSG_ONE_MONTH_NOT_PASSED = 0x182,
+/*20080827 to latest
+%s 님으로부터 플러스 매너 포인트를 받았습니다.
+Remember, Spamming isn't nice.
+*/
+ MSG_RECEIVE_PLUS_MANNER_POINT = 0x183,
+/*20080827 to latest
+%s 님으로부터 마이너스 매너 포인트를 받았습니다.
+Please refrain from ill-mannered conduct, thank you.
+*/
+ MSG_RECEIVE_MINUS_MANNER_POINT = 0x184,
+/*20080827 to latest
+채팅 금지 시간 줄이기(풀기)
+Align with a Good Point
+*/
+ MSG_GIVE_PLUS_MANNER_POINT = 0x185,
+/*20080827 to latest
+채팅 금지 시간 늘이기(걸기)
+Align with a Bad Point
+*/
+ MSG_GIVE_MINUS_MANNER_POINT = 0x186,
+/*20080827 to latest
+(%s)님과의 거래요청
+Request a deal with (%s)
+*/
+ MSG_REQ_DEAL_WITH2 = 0x187,
+/*20080827 to latest
+(%s)님 파티에 가입요청
+Ask (%s) to join your party
+*/
+ MSG_REQ_JOIN_PARTY2 = 0x188,
+/*20080827 to latest
+ 길드에서 동맹요청 메시지가 왔습니다. 동맹하겠습니까?
+ Guild is asking you to agree to an Alliance with them. Do you accept?
+*/
+ MSG_SUGGEST_ALLY_GUILD = 0x189,
+/*20080827 to latest
+이미 동맹되어 있습니다.
+This Guild is already your Ally.
+*/
+ MSG_REQALLYGUILD_ALREADY_ALLIED = 0x18a,
+/*20080827 to latest
+동맹을 거절 했습니다.
+You reject the offer
+*/
+ MSG_REQALLYGUILD_REJECT = 0x18b,
+/*20080827 to latest
+동맹을 수락 했습니다.
+You accept the offer
+*/
+ MSG_REQALLYGUILD_ACCEPT = 0x18c,
+/*20080827 to latest
+상대길드의 동맹길드의 수가 초과 되었습니다.
+They have too many Alliances.
+*/
+ MSG_REQALLYGUILD_OVERSIZE = 0x18d,
+/*20080827 to latest
+길드의 동맹길드의 수가 초과 되었습니다.
+You have too many Alliances.
+*/
+ MSG_REQALLYMYGUILD_OVERSIZE = 0x18e,
+/*20080827 to latest
+길드 동맹 요청
+Set this guild as an Alliance
+*/
+ MSG_REQ_ALLY_GUILD = 0x18f,
+/*20080827 to latest
+길드가 성공적으로 해체 되었습니다.
+Guild was successfully disbanded.
+*/
+ MSG_DISORGANIZE_GUILD_SUCCESS = 0x190,
+/*20080827 to latest
+주민등록번호가 틀려서 길드가 해체되지 않았습니다.
+You have failed to disband the guild due to your incorrect SSN.
+*/
+ MSG_DISORGANIZE_GUILD_INVALIDKEY = 0x191,
+/*20080827 to latest
+길드맴버가 존재해서 길드가 해체되지 않았습니다.
+You have failed to disband the guild because there are guildsmen still present.
+*/
+ MSG_DISORGANIZE_GUILD_MEMBEREXIST = 0x192,
+/*20080827 to latest
+길드 적대 요청
+Set this guild as an Antagonist
+*/
+ MSG_REQ_HOSTILE_GUILD = 0x193,
+/*20080827 to latest
+머리색깔 선택
+Choose Hair Color
+*/
+ MSG_SELECT_HAIR_COLOR = 0x194,
+/*20080827 to latest
+길드결성시 필요한 아이템이 없습니다.
+You don't have necessary item to create a Guild.
+*/
+ MSG_GUILD_MAKE_GUILD_NONE_ITEM = 0x195,
+/*20080827 to latest
+몬스터 정보
+Monster Info
+*/
+ MSG_MONSTER_INFO_WINDOW = 0x196,
+/*20080827 to latest
+이름
+Name
+*/
+ MSG_NAME = 0x197,
+/*20080827 to latest
+레벨
+Level
+*/
+ MSG_LEVEL = 0x198,
+/*20080827 to latest
+HP
+*/
+ MSG_HP = 0x199,
+/*20080827 to latest
+크기
+Size
+*/
+ MSG_SIZE = 0x19a,
+/*20080827 to latest
+종족
+Type
+*/
+ MSG_RACETYPE = 0x19b,
+/*20080827 to latest
+MDEF
+*/
+ MSG_MDEFPOWER = 0x19c,
+/*20080827 to latest
+속성
+Attribute
+*/
+ MSG_PROPERTY = 0x19d,
+/*20080827 to latest
+無
+Neutral
+*/
+ MSG_PROPERTY_NEUTURAL = 0x19e,
+/*20080827 to latest
+水
+Water
+*/
+ MSG_PROPERTY_WATER = 0x19f,
+/*20080827 to latest
+地
+Earth
+*/
+ MSG_PROPERTY_EARTH = 0x1a0,
+/*20080827 to latest
+火
+Fire
+*/
+ MSG_PROPERTY_FIRE = 0x1a1,
+/*20080827 to latest
+風
+Wind
+*/
+ MSG_PROPERTY_WIND = 0x1a2,
+/*20080827 to latest
+毒
+Poison
+*/
+ MSG_PROPERTY_POISON = 0x1a3,
+/*20080827 to latest
+聖
+Holy
+*/
+ MSG_PROPERTY_SAINT = 0x1a4,
+/*20080827 to latest
+暗
+Shadow
+*/
+ MSG_PROPERTY_DARK = 0x1a5,
+/*20080827 to latest
+念
+Ghost
+*/
+ MSG_PROPERTY_MENTAL = 0x1a6,
+/*20080827 to latest
+死
+Undead
+*/
+ MSG_PROPERTY_UNDEAD = 0x1a7,
+/*20080827 to latest
+현재는 아이템을 만들 수 없습니다.
+You can't create items yet.
+*/
+ MSG_CANT_MAKE_ITEM = 0x1a8,
+/*20080827 to latest
+제조 목록
+Item List you can craft
+*/
+ MSG_MAKE_LIST = 0x1a9,
+/*20080827 to latest
+ 만들기
+ Create
+*/
+ MSG_MAKE_TARGET = 0x1aa,
+/*20080827 to latest
+ 에 필요한 재료:
+'s materials
+*/
+ MSG_REQUIRE_FOR_MAKE_TARGET = 0x1ab,
+/*20080827 to latest
+ 만들기 실패
+ item creation failed.
+*/
+ MSG_MAKE_TARGET_FAIL = 0x1ac,
+/*20080827 to latest
+ 만들기 성공
+ item created successfully.
+*/
+ MSG_MAKE_TARGET_SUCCEESS = 0x1ad,
+/*20080827 to latest
+%s 만들기를 실패하였습니다.
+ item creation failed.
+*/
+ MSG_MAKE_TARGET_FAIL_MSG = 0x1ae,
+/*20080827 to latest
+%s 만들기를 성공했습니다.
+ item created successfully.
+*/
+ MSG_MAKE_TARGET_SUCCEESS_MSG = 0x1af,
+/*20080827 to latest
+레벨이 부족합니다.
+You are not the required lvl.
+*/
+ MSG_NOT_ENOUGH_LEVEL = 0x1b0,
+/*20080827 to latest
+레벨이 너무 높습니다.
+Too high lvl for this job.
+*/
+ MSG_TOO_HIGH_LEVEL = 0x1b1,
+/*20080827 to latest
+직업이 적합하지 않습니다.
+Not the suitable job for this type of work.
+*/
+ MSG_NOT_ACCEPTABLE_JOB = 0x1b2,
+/*20080827 to latest
+토키 박스 트랩 메세지
+Record a message in the Talkie Box
+*/
+ MSG_TALKBOX_WINDOW = 0x1b3,
+/*20080827 to latest
+기록할 메세지를 입력하시기 바랍니다.
+Please type a message for the Talkie Box
+*/
+ MSG_TALKBOX_WINDOW_MSG = 0x1b4,
+/*20080827 to latest
+길드에게 보냄
+Send to Guild
+*/
+ MSG_SEND_TO_GUILD = 0x1b5,
+/*20080827 to latest
+결제된 계정이 아닙니다. 결제 페이지로 이동하시겠습니까?
+You didn't pay for this ID. Would you like to pay for it now?
+*/
+ MSG_NOT_SETTLED = 0x1b6,
+/*20080827 to latest
+서버가 혼잡한 관계로 잠시후 다시 시도해 주시기 바랍니다.
+Server is jammed due to overpopulation. Please try again after few minutes.
+*/
+ MSG_ACCOUNT_BUSY = 0x1b7,
+/*20080827 to latest
+지난 접속 정보가 남아 있습니다. 30초정도 지난뒤에 다시 시도해 주시기 바랍니다.
+Server still recognizes your last log-in. Please try again after a few minutes.
+*/
+ MSG_INFORMATION_REMAINED = 0x1b8,
+/*20080827 to latest
+매 풀어주기
+Release Falcon
+*/
+ MSG_BIRDOFF = 0x1b9,
+/*20080827 to latest
+페코페코 내리기
+Dismount
+*/
+ MSG_CHIKENOFF = 0x1ba,
+/*20080827 to latest
+小
+Small
+*/
+ MSG_SIZE_SMALL = 0x1bb,
+/*20080827 to latest
+中
+Med
+*/
+ MSG_SIZE_MIDDLE = 0x1bc,
+/*20080827 to latest
+大
+Big
+*/
+ MSG_SIZE_BIG = 0x1bd,
+/*20080827 to latest
+더블
+Double
+*/
+ MSG_DOUBLE = 0x1be,
+/*20080827 to latest
+트리플
+Triple
+*/
+ MSG_TRIPLE = 0x1bf,
+/*20080827 to latest
+쿼드로플
+Quadruple
+*/
+ MSG_QUADROPLE = 0x1c0,
+/*20080827 to latest
+%s 까지 로그인을 금지하고 있습니다.
+You are prohibited to log in until %s.
+*/
+ MSG_LOGIN_REFUSE_BLOCKED_UNTIL = 0x1c1,
+/*20080827 to latest
+의
+'s
+*/
+ MSG_MANUFACTURED_NORMAL_ITEM = 0x1c2,
+/*20080827 to latest
+의 파이어
+'s Fire
+*/
+ MSG_MANUFACTURED_FIRE_ITEM = 0x1c3,
+/*20080827 to latest
+의 아이스
+'s Ice
+*/
+ MSG_MANUFACTURED_ICE_ITEM = 0x1c4,
+/*20080827 to latest
+의 윈드
+'s Wind
+*/
+ MSG_MANUFACTURED_WIND_ITEM = 0x1c5,
+/*20080827 to latest
+의 어스
+'s Earth
+*/
+ MSG_MANUFACTURED_EARTH_ITEM = 0x1c6,
+/*20080827 to latest
+211.239.161.246
+38.144.194.2
+*/
+ MSG_ACCOUNT_ADDRESS = 0x1c7,
+/*20080827 to latest
+6900
+*/
+ MSG_ACCOUNT_PORT = 0x1c8,
+/*20080827 to 20171206
+http://www.ragnarok.co.kr
+20171213 to latest
+http://roz.gnjoy.com/
+http://www.ragnarok.co.kr
+*/
+ MSG_REGISTRATION_WEB_URL = 0x1c9,
+/*20080827 to latest
+%s 사용자 강제 종료
+Kill %s
+*/
+ MSG_BAN_USER = 0x1ca,
+/*20080827 to latest
+무지쎈
+Very Strong
+*/
+ MSG_ONE_STARPIECE = 0x1cb,
+/*20080827 to latest
+무지무지쎈
+Very Very Strong
+*/
+ MSG_TWO_STARPIECE = 0x1cc,
+/*20080827 to latest
+무무무쎈
+Very Very Very Strong
+*/
+ MSG_THREE_STARPIECE = 0x1cd,
+/*20080827 to latest
+길드 추방 사유
+The Reason of Expulsion
+*/
+ MSG_GUILD_KICK_REASON = 0x1ce,
+/*20080827 to latest
+ 공격 속도가 증가했습니다.
+Attack Speed is up.
+*/
+ MSG_INCATTACKSPEED = 0x1cf,
+/*20080827 to latest
+ 공격 속도가 감소했습니다.
+Attack Speed is down.
+*/
+ MSG_DECATTACKSPEED = 0x1d0,
+/*20080827 to latest
+ 무기의 공격력이 향상되었습니다.
+Weapon Damage is improved.
+*/
+ MSG_INCWEAPONATTACK = 0x1d1,
+/*20080827 to latest
+ 무기의 공격력이 감소되었습니다.
+Weapon Damage is reduced.
+*/
+ MSG_DECWEAPONATTACK = 0x1d2,
+/*20080827 to latest
+ 시전 딜레이가 줄었습니다.
+Cast Delay is reduced.
+*/
+ MSG_FASTPREDELAY = 0x1d3,
+/*20080827 to latest
+ 시전 딜레이가 정상으로 되었습니다.
+Cast Delay has returned to normal.
+*/
+ MSG_NORMALPREDELAY = 0x1d4,
+/*20080827 to latest
+ 무기에 독속성이 부여되었습니다.
+Weapon is temporarily enchanted with Poison.
+*/
+ MSG_WEAPONPROPERTYPOISON = 0x1d5,
+/*20080827 to latest
+ 무기에 성속성이 부여되었습니다.
+Weapon is temporarily enchanted with an elemental property.
+*/
+ MSG_WEAPONPROPERTYSAINT = 0x1d6,
+/*20080827 to latest
+ 무기의 원래속성이 적용되었습니다.
+Weapon has changed back to normal.
+*/
+ MSG_WEAPONPROPERTYORIGINAL = 0x1d7,
+/*20080827 to latest
+ 방어구에 성속성이 부여되었습니다.
+Armor has been enchanted with the Holy Ghost.
+*/
+ MSG_ARMORPROPERTYSAINT = 0x1d8,
+/*20080827 to latest
+ 방어구의 원래속성이 적용되었습니다.
+Armor has changed back to normal.
+*/
+ MSG_ARMORPROPERTYORIGINAL = 0x1d9,
+/*20080827 to latest
+ 배리어 상태가 되었습니다.
+Barrier Formed.
+*/
+ MSG_BARRIOR = 0x1da,
+/*20080827 to latest
+ 배리어 상태가 해제 되었습니다.
+Barrier Canceled.
+*/
+ MSG_DISAPPEARBARRIOR = 0x1db,
+/*20080827 to latest
+ 소형, 중형, 대형 몬스터에게 100% 공격력을 줍니다.
+Weapon Perfection Initiated.
+*/
+ MSG_PERFECTDAMAGE = 0x1dc,
+/*20080827 to latest
+ 웨폰퍼펙션 모드가 해제 되었습니다.
+Weapon perfection Canceled.
+*/
+ MSG_DISAPPEARPERFECTDAMAGE = 0x1dd,
+/*20080827 to latest
+ 무기가 파괴될 가능성이 높아진 대신 무기의 공격력이 증가하였습니다.
+Power-Thrust Initiated.
+*/
+ MSG_OVERTHRUSTING = 0x1de,
+/*20080827 to latest
+ 오버트러스트 상태가 해제 되었습니다.
+Power-Thrust Canceled.
+*/
+ MSG_DISAPPEAROVERTHRUSTING = 0x1df,
+/*20080827 to latest
+ 무기의 최대 성능을 끌어냅니다.
+Maximize-Power Initiated.
+*/
+ MSG_MAXIMIZE = 0x1e0,
+/*20080827 to latest
+ 맥시마이즈 상태가 해제 되었습니다.
+Maximize-Power Canceled.
+*/
+ MSG_DISAPPEARMAXIMIZE = 0x1e1,
+/*20080827 to latest
+[신서버]
+[New Server]
+*/
+ MSG_SERVER_PROPERTY_NEW = 0x1e2,
+/*20080827 to latest
+(%d 명)
+(%d players)
+*/
+ MSG_SERVER_USER_COUNT = 0x1e3,
+/*20080827 to latest
+(점검중)
+(On the maintenance)
+*/
+ MSG_SERVER_INSPECTING = 0x1e4,
+/*20080827 to latest
+길드멤버 %s님이 접속하셨습니다.
+Guild member %s has connected.
+*/
+ MSG_GUILD_MEMBER_STATUS_ONLINE = 0x1e5,
+/*20080827 to latest
+길드멤버 %s님이 종료하셨습니다.
+Guild member %s has disconnected.
+*/
+ MSG_GUILD_MEMBER_STATUS_OFFLINE = 0x1e6,
+/*20080827 to latest
+경험치 %d 얻음
+You got %d Base EXP.
+*/
+ MSG_GOT_EXPERIENCE_POINT = 0x1e7,
+/*20080827 to latest
+잡경험치 %d 얻음
+You got %d Job EXP.
+*/
+ MSG_GOT_JOB_EXPERIENCE_POINT = 0x1e8,
+/*20080827 to latest
+길드에서 탈퇴 했습니다.
+You left the guild.
+*/
+ MSG_LEFT_GUILD = 0x1e9,
+/*20080827 to latest
+길드에서 추방 당했습니다.
+You have been expelled from the Guild.
+*/
+ MSG_BAN_FROM_GUILD = 0x1ea,
+/*20080827 to latest
+아이템 감정 성공
+Item Appraisal has completed successfully.
+*/
+ MSG_ITEM_IDENTIFY_SUCCEESS = 0x1eb,
+/*20080827 to latest
+아이템 감정 실패
+Item appraisal has failed.
+*/
+ MSG_ITEM_IDENTIFY_FAIL = 0x1ec,
+/*20080827 to latest
+아이템 조합 성공
+Compounding has completed successfully.
+*/
+ MSG_ITEM_COMPOUNDING_SUCCEESS = 0x1ed,
+/*20080827 to latest
+아이템 조합 실패
+Compounding has failed.
+*/
+ MSG_ITEM_COMPOUNDING_FAIL = 0x1ee,
+/*20080827 to latest
+길드 적대 성공
+Antagonist has been set.
+*/
+ MSG_HOSTILE_GUILD_SUCCEESS = 0x1ef,
+/*20080827 to latest
+적대 길드수 초과로 길드 적대 실패
+Guild has too many Antagonists.
+*/
+ MSG_TOO_MANY_HOSTILE_GUILD = 0x1f0,
+/*20080827 to latest
+이미 적대 길드 입니다
+Already set as an Antagonist
+*/
+ MSG_ALREADY_REGISTERED_HOSTILE_GUILD = 0x1f1,
+/*20080827 to latest
+제련이 성공적으로 되었습니다.
+Upgrade has been completed successfully.
+*/
+ MSG_ITEM_REFINING_SUCCEESS = 0x1f2,
+/*20080827 to latest
+제련이 실패하였습니다.
+Upgrade has failed.
+*/
+ MSG_ITEM_REFINING_FAIL = 0x1f3,
+/*20080827 to latest
+이곳에서는 순간이동이 불가능합니다.
+Unavailable Area to Teleport
+*/
+ MSG_IMPOSSIBLE_TELEPORT_AREA = 0x1f4,
+/*20080827 to latest
+이 장소는 기억할 수 없습니다.
+Unable to memorize this place as Warp Point
+*/
+ MSG_POSSIBLE_TELEPORT_AREA = 0x1f5,
+/*20080827 to latest
+지금은 종료할 수 없습니다.
+Please wait 10 seconds before trying to log out.
+*/
+ MSG_CANT_EXIT_NOW = 0x1f6,
+/*20080827 to latest
+직위
+Position
+*/
+ MSG_POSITION = 0x1f7,
+/*20080827 to latest
+직업
+Job
+*/
+ MSG_JOB = 0x1f8,
+/*20080827 to latest
+메모
+Note
+*/
+ MSG_MEMO = 0x1f9,
+/*20080827 to latest
+기여
+Devotion
+*/
+ MSG_CONTRIBUTION = 0x1fa,
+/*20080827 to latest
+상납경험치
+Tax Point
+*/
+ MSG_EXP_CONTIRIBUTION = 0x1fb,
+/*20080827 to latest
+길드탈퇴
+Leave Guild
+*/
+ MSG_LEAVE_GUILD = 0x1fc,
+/*20080827 to latest
+제명시키기
+Expel
+*/
+ MSG_EXPEL_GUILD = 0x1fd,
+/*20080827 to latest
+서열
+Rank
+*/
+ MSG_GRADE = 0x1fe,
+/*20080827 to latest
+직위명
+Position Title
+*/
+ MSG_POSITION_NAME = 0x1ff,
+/*20080827 to latest
+가입권한
+Invitation
+*/
+ MSG_JOIN_AUTHORITY = 0x200,
+/*20080827 to latest
+처벌권한
+Punish
+*/
+ MSG_PENALTY_AUTORITY = 0x201,
+/*20080827 to latest
+상납%
+Tax %
+*/
+ MSG_CONTRIBUTION_PERCENT = 0x202,
+/*20080827 to latest
+제목
+Title
+*/
+ MSG_TITLE = 0x203,
+/*20080827 to latest
+내용
+For
+*/
+ MSG_CONTENTS = 0x204,
+/*20080827 to latest
+길드이름
+Guild Name
+*/
+ MSG_GUILD_NAME = 0x205,
+/*20080827 to latest
+길드레벨
+Guild lvl
+*/
+ MSG_GUILD_LEVEL = 0x206,
+/*20080827 to latest
+조합원수
+Number of Members
+*/
+ MSG_GUILD_PEOPLE_COUNT = 0x207,
+/*20080827 to latest
+랭킹
+Ranking
+*/
+ MSG_RANKING = 0x208,
+/*20080827 to latest
+아이템 감정
+Item Appraisal
+*/
+ MSG_ITEM_IDENTIFY = 0x209,
+/*20080827 to latest
+아이템 조합
+Insert Card
+*/
+ MSG_ITEM_COMPOUNDING = 0x20a,
+/*20080827 to latest
+탈퇴 사유를 입력해주세요.
+Please enter the reason of Secession.
+*/
+ MSG_PLEASE_INPUT_WHY_LEAVING = 0x20b,
+/*20080827 to latest
+추방 사유를 입력해주세요.
+Please enter the reason of Expulsion.
+*/
+ MSG_PELASE_INPUT_WHY_EXPEL = 0x20c,
+/*20080827 to latest
+상점을 닫으세요.
+Please close Shop.
+*/
+ MSG_PLEASE_CLOSE_STORE = 0x20d,
+/*20080827 to latest
+스킬 이름
+Skill
+*/
+ MSG_SKILL_NAME = 0x20e,
+/*20080827 to latest
+아이템 이름
+Item Name
+*/
+ MSG_ITEM_NAME = 0x20f,
+/*20080827 to latest
+https://payment.ragnarok.co.kr
+https://pay.ragnarok.co.kr (Billing Web)
+*/
+ MSG_SETTLE_WEB_URL = 0x210,
+/*20080827 to latest
+게임방에서 사용가능한 IP개수가 모두 사용중입니다. 개인 계정으로 결제 하시겠습니까?
+IP capacity of this Internet Cafe is full. Would you like to pay the personal base?
+*/
+ MSG_BAN_IP_OVERFLOW = 0x211,
+/*20080827 to latest
+결제시간이 다되어 게임을 종료합니다.
+You are out of available paid playing time. Game will be shut down automatically.
+*/
+ MSG_BAN_PAY_OUT = 0x212,
+/*20080827 to latest
+이름이 너무 깁니다. 한글 11자 영문 23자 이내로 써주십시오.
+Name is too long. Please enter a name no greater than 23 english characters.
+*/
+ MSG_NAMELENGTH_TOO_LONG = 0x213,
+/*20080827 to latest
+deleted
+Character will be deleted in %d seconds.
+*/
+ MSG_DELETE_AFTER_10_SECOND = 0x214,
+/*20080827 to latest
+귀하는 개인 정액제 사용자입니다.
+You paid with the personal regular base.
+*/
+ MSG_BILLING_100 = 0x215,
+/*20080827 to latest
+귀하는 개인정량제 사용자입니다.
+You paid with the personal regular base. Available time is xx hrs xx mins xx secs.
+*/
+ MSG_BILLING_200 = 0x216,
+/*20080827 to latest
+귀하는 개인 무료 사용자입니다.
+You are free!
+*/
+ MSG_BILLING_300 = 0x217,
+/*20080827 to latest
+귀하는 개인 무료 허용기간 사용자입니다.
+You are free for the test, your available time is xx hrs xx mins xx secs.
+*/
+ MSG_BILLING_400 = 0x218,
+/*20080827 to latest
+귀하는 게임방 정액제 사용자입니다.
+You paid with the Internet Cafe regular base. Available time is xx hrs xx mins xx secs.
+*/
+ MSG_BILLING_500 = 0x219,
+/*20080827 to latest
+귀하는 게임방 정량제 사용자입니다.
+You paid with the Time Limit for Internet Cafe. Available time is xx hrs xx mins xx secs.
+*/
+ MSG_BILLING_501 = 0x21a,
+/*20080827 to latest
+귀하는 게임방 무료 허용기간 사용자입니다.
+You are free for the test of Internet Cafe version .
+*/
+ MSG_BILLING_600 = 0x21b,
+/*20080827 to latest
+귀하는 게임방 무료 사용자입니다.
+You are free for the Internet Cafe version.
+*/
+ MSG_BILLING_700 = 0x21c,
+/*20080827 to latest
+귀하는 종량제 사이트 이용자입니다.
+You paid on the Time Limit Website.
+*/
+ MSG_BILLING_800 = 0x21d,
+/*20080827 to latest
+이모션 목록
+Emotion icon List
+*/
+ MSG_EMOTION_LIST = 0x21e,
+/*20080827 to latest
+/이모션
+/emo
+*/
+ MSG_VIEW_EMOTION = 0x21f,
+/*20080827 to latest
+/!
+*/
+ MSG_EMOTION_SURPRISE = 0x220,
+/*20080827 to latest
+/?
+*/
+ MSG_EMOTION_QUESTION = 0x221,
+/*20080827 to latest
+/기쁨
+/ho
+*/
+ MSG_EMOTION_DELIGHT = 0x222,
+/*20080827 to latest
+/하트
+/lv
+*/
+ MSG_EMOTION_THROB = 0x223,
+/*20080827 to latest
+/왕하트
+/lv2
+*/
+ MSG_EMOTION_BIGTHROB = 0x224,
+/*20080827 to latest
+/땀
+/swt
+*/
+ MSG_EMOTION_SWEAT = 0x225,
+/*20080827 to latest
+/아하
+/ic
+*/
+ MSG_EMOTION_AHA = 0x226,
+/*20080827 to latest
+/짜증
+/an
+*/
+ MSG_EMOTION_FRET = 0x227,
+/*20080827 to latest
+/화
+/ag
+*/
+ MSG_EMOTION_ANGER = 0x228,
+/*20080827 to latest
+/돈
+/$
+*/
+ MSG_EMOTION_MONEY = 0x229,
+/*20080827 to latest
+/...
+*/
+ MSG_EMOTION_THINK = 0x22a,
+/*20080827 to latest
+/감사
+/thx
+*/
+ MSG_EMOTION_THANKS = 0x22b,
+/*20080827 to latest
+/꽥
+/wah
+*/
+ MSG_EMOTION_KEK = 0x22c,
+/*20080827 to latest
+/죄송
+/sry
+*/
+ MSG_EMOTION_SORRY = 0x22d,
+/*20080827 to latest
+/웃음
+/heh
+*/
+ MSG_EMOTION_SMILE = 0x22e,
+/*20080827 to latest
+/뻘뻘
+/swt2
+*/
+ MSG_EMOTION_PROFUSELY_SWEAT = 0x22f,
+/*20080827 to latest
+/긁적
+/hmm
+*/
+ MSG_EMOTION_SCRATCH = 0x230,
+/*20080827 to latest
+/최고
+/no1
+*/
+ MSG_EMOTION_BEST = 0x231,
+/*20080827 to latest
+/두리번
+/??
+*/
+ MSG_EMOTION_STARE_ABOUT = 0x232,
+/*20080827 to latest
+/헉
+/omg
+*/
+ MSG_EMOTION_HUK = 0x233,
+/*20080827 to latest
+/오
+/oh
+*/
+ MSG_EMOTION_O = 0x234,
+/*20080827 to latest
+/엑스
+/X
+*/
+ MSG_EMOTION_X = 0x235,
+/*20080827 to latest
+/헬프
+/hlp
+*/
+ MSG_EMOTION_HELP = 0x236,
+/*20080827 to latest
+/가
+/go
+*/
+ MSG_EMOTION_GO = 0x237,
+/*20080827 to latest
+/엉엉
+/sob
+*/
+ MSG_EMOTION_CRY = 0x238,
+/*20080827 to latest
+/킥킥
+/gg
+*/
+ MSG_EMOTION_KIK = 0x239,
+/*20080827 to latest
+/쪽
+/kis
+*/
+ MSG_EMOTION_CHUP = 0x23a,
+/*20080827 to latest
+/쪽쪽
+/kis2
+*/
+ MSG_EMOTION_CHUPCHUP = 0x23b,
+/*20080827 to latest
+/흥
+/pif
+*/
+ MSG_EMOTION_HNG = 0x23c,
+/*20080827 to latest
+/응
+/ok
+*/
+ MSG_EMOTION_OK = 0x23d,
+/*20080827 to latest
+단축키 목록
+Shortcut List
+*/
+ MSG_SHORTCUT_LIST = 0x23e,
+/*20080827 to latest
+귀하의 계정은 보류되었습니다.
+Your account is suspended.
+*/
+ MSG_BAN_PAY_SUSPEND = 0x23f,
+/*20080827 to latest
+과금 정책 변경으로 인해 일시 종료됩니다. 다시 접속하여 주시기 바랍니다.
+Your connection is terminated due to change in the billing policy. Please connect again.
+*/
+ MSG_BAN_PAY_CHANGE = 0x240,
+/*20080827 to latest
+어카운트 서버에 인증된 IP와 귀하의 IP가 달라 연결을 종료합니다.
+Your connection is terminated because your IP doesn't match the authorized IP from the account server.
+*/
+ MSG_BAN_PAY_WRONGIP = 0x241,
+/*20080827 to latest
+게임방 IP에서 개인 종량제 과금을 막기 위해 연결을 종료합니다. 개인 종량제 과금을 사용하기 위해서는 게임방IP로 등록이 되지 않은 IP를 사용해 주세요.
+Your connection is terminated to prevent charging from your account's play time.
+*/
+ MSG_BAN_PAY_PNGAMEROOM = 0x242,
+/*20080827 to latest
+귀하는 운영자에 의해 강제 종료 되었습니다.
+You have been forced to disconnect by the Game Master Team.
+*/
+ MSG_BAN_OP_FORCE = 0x243,
+/*20080827 to latest
+무게가 90%를 초과하여 스킬을 사용할 수 없습니다.
+You can't use this Skill because you are over your Weight Limit.
+*/
+ MSG_USESKILL_FAIL_WEIGHTOVER = 0x244,
+/*20080827 to latest
+무명
+Nameless
+*/
+ MSG_NAMELESS_USER = 0x245,
+/*20080827 to latest
+축하합니다. %s님의 현재 랭킹이 %d위로 상승하였습니다.
+Congratulations! %s ranking has gone up to %d.
+*/
+ MSG_RANK_IN_TEN = 0x246,
+/*20080827 to latest
+안타깝게도 %s님의 현재 랭킹이 %d위로 하락하였습니다.
+What a pity! %s ranking has gone down to %d.
+*/
+ MSG_RANK_OUT_TEN = 0x247,
+/*20080827 to latest
+Pet Info
+*/
+ MSG_PET_INFO = 0x248,
+/*20080827 to latest
+만복도
+Hunger
+*/
+ MSG_PET_HUNGRY = 0x249,
+/*20080827 to latest
+친밀도
+Intimacy
+*/
+ MSG_PET_FRIENDLY = 0x24a,
+/*20080827 to latest
+상점과 채팅방을 동시에 열수 없습니다.
+Please avoid opening a chatroom while vending.
+*/
+ MSG_CANT_OPEN_STORE_WHILE_CHAT = 0x24b,
+/*20080827 to latest
+개
+Total
+*/
+ MSG_EA4 = 0x24c,
+/*20080827 to latest
+%s 를 전투불능으로 만들었습니다.
+You have knocked down %s.
+*/
+ MSG_SLAIN = 0x24d,
+/*20080827 to latest
+%s 님에 의해 전투불능 상태가 되었습니다.
+You have been knocked down by %s.
+*/
+ MSG_SLAINBY = 0x24e,
+/*20080827 to latest
+먹이 - '%s' 아이템이 존재하지 않습니다..
+Feed - "%s" is not available.
+*/
+ MSG_NOT_EXIST_PET_FOOD = 0x24f,
+/*20080827 to latest
+먹이 주기
+Feed Pet
+*/
+ MSG_PET_FEEDING = 0x250,
+/*20080827 to latest
+퍼포먼스
+Performance
+*/
+ MSG_PET_PERFORMANCE = 0x251,
+/*20080827 to latest
+알로 되돌리기
+Return to Egg Shell
+*/
+ MSG_PET_RETURN_EGG = 0x252,
+/*20080827 to latest
+악세사리 해제
+Unequip Accessory
+*/
+ MSG_PET_ACC_OFF = 0x253,
+/*20080827 to latest
+Pet 상태 보기
+Check Pet Status
+*/
+ MSG_PET_SHOWINFO = 0x254,
+/*20080827 to latest
+악세사리
+Accessory
+*/
+ MSG_PET_ACCESSARY = 0x255,
+/*20080827 to latest
+장착됨
+Equipped
+*/
+ MSG_ITEM_EQUIPED = 0x256,
+/*20080827 to latest
+펫 리스트
+Pet List
+*/
+ MSG_PET_EGG_LIST = 0x257,
+/*20080827 to latest
+장착 안됨
+Unequipped
+*/
+ MSG_ITEM_UNEQUIPED = 0x258,
+/*20080827 to latest
+정말로 먹이를 주시겠습니까?
+Are you sure that you want to feed your pet?
+*/
+ MSG_SURE_TO_FEED_PET = 0x259,
+/*20080827 to latest
+가격을 쓰실땐 숫자(0~9)만 써주십시오.
+Only the numbers (0~9) are available.
+*/
+ MSG_CAN_INPUT_NUMBER_ONLY = 0x25a,
+/*20080827 to latest
+감정되지 않은 아이템은 판매할 수 없습니다.
+You cannot sell unidentified items.
+*/
+ MSG_CANT_SELL_UNIDENTIFIED_ITEM = 0x25b,
+/*20080827 to latest
+가격이 0 Zeny인 아이템이 존재합니다. 계속 하시겠습니까?
+Item at 0 Zeny exists. Do you wish to continue?
+*/
+ MSG_YOU_HAVE_FREE_ITEM_ON_SHOP = 0x25c,
+/*20080827 to latest
+[새로 추가된 이모션 리스트]
+[New Emotion List]
+*/
+ MSG_NEW_EMOTION_LIST = 0x25d,
+/*20080827 to latest
+일본쪽 베타 사용자들에게 전하는 메세지. -> 겅호에서 재가입 하세요.
+N/A
+*/
+ MSG_BAN_JAPAN_REFUSE1 = 0x25e,
+/*20080827 to latest
+일본쪽 과금이 종료된 사용자들에게 전하는 메세지. -> 돈내라. 두 번내라.
+N/A
+*/
+ MSG_BAN_JAPAN_REFUSE2 = 0x25f,
+/*20080827 to latest
+같은 계정의 캐릭터가 이미 가입되어있습니다.
+Character in the same account already joined.
+*/
+ MSG_ALREADY_SAME_AID_JOINED = 0x260,
+/*20080827 to latest
+(%d 명) - 만18세이상
+(%d ppl) - over the age 18
+*/
+ MSG_SERVER_PROPERTY_ADULT = 0x261,
+/*20080827 to latest
+ 프로보크 상태가 되었습니다.
+Provoke initiated.
+*/
+ MSG_ENST_PROVOKE = 0x262,
+/*20080827 to latest
+ 프로보크 상태가 해제되었습니다.
+Provoke canceled.
+*/
+ MSG_DSST_PROVOKE = 0x263,
+/*20080827 to latest
+ 인듀어 상태가 되었습니다.
+Endure initiated.
+*/
+ MSG_ENST_ENDURE = 0x264,
+/*20080827 to latest
+ 인듀어 상태가 해제되었습니다.
+Endure canceled.
+*/
+ MSG_DSST_ENDURE = 0x265,
+/*20080827 to latest
+ 집중력 향상 상태가 되었습니다.
+Improve Concentration initiated.
+*/
+ MSG_ENST_CONCENTRATION = 0x266,
+/*20080827 to latest
+ 집중력 향상 상태가 해제되었습니다.
+Improve Concentration canceled.
+*/
+ MSG_DSST_CONCENTRATION = 0x267,
+/*20080827 to latest
+ 하이딩 상태가 되었습니다.
+Hiding Initiated.
+*/
+ MSG_ENST_HIDING = 0x268,
+/*20080827 to latest
+ 하이딩 상태가 해제되었습니다.
+Hiding Canceled.
+*/
+ MSG_DSST_HIDING = 0x269,
+/*20080827 to latest
+ 클로킹 상태가 되었습니다.
+Cloaking initiated.
+*/
+ MSG_ENST_CLOAKING = 0x26a,
+/*20080827 to latest
+ 클로킹 상태가 해제되었습니다.
+Cloaking canceled.
+*/
+ MSG_DSST_CLOAKING = 0x26b,
+/*20080827 to latest
+ 독을 반사 할 수 있는 상태가 되었습니다.
+Poison React initiated.
+*/
+ MSG_ENST_POISONREACT = 0x26c,
+/*20080827 to latest
+ 포이즌 리액트 상태가 해제되었습니다.
+Poison React canceled.
+*/
+ MSG_DSST_POISONREACT = 0x26d,
+/*20080827 to latest
+ 이동속도가 감소하였습니다.
+Speed reduced.
+*/
+ MSG_ENST_QUAGMIRE = 0x26e,
+/*20080827 to latest
+ 콰그마이어 상태가 해제되었습니다.
+Quagmire canceled.
+*/
+ MSG_DSST_QUAGMIRE = 0x26f,
+/*20080827 to latest
+ 방어력이 증가되었습니다.
+Defense increased.
+*/
+ MSG_ENST_ANGELUS = 0x270,
+/*20080827 to latest
+ 안젤루스 상태가 해제되었습니다.
+Angelus canceled.
+*/
+ MSG_DSST_ANGELUS = 0x271,
+/*20080827 to latest
+ 힘과 지능, 덱스가 증가하였습니다.
+Blessing aligned.
+*/
+ MSG_ENST_BLESSING = 0x272,
+/*20080827 to latest
+ 블레싱 상태가 해제되었습니다.
+Blessing canceled.
+*/
+ MSG_DSST_BLESSING = 0x273,
+/*20080827 to latest
+ 시그넘 크루시스를 사용하였습니다.
+Signum Crusis initiated.
+*/
+ MSG_ENST_CRUCIS = 0x274,
+/*20080827 to latest
+ 시그넘 크루시스 상태가 해제되었습니다.
+Signum Crusis canceled.
+*/
+ MSG_DSST_CRUCIS = 0x275,
+/*20080827 to latest
+ 독이 퍼지는 속도가 느려졌습니다.
+Slow Poison initiated.
+*/
+ MSG_ENST_SLOWPOISON = 0x276,
+/*20080827 to latest
+ 슬로우 포이즌 상태가 해제되었습니다.
+Slow Poison Canceled.
+*/
+ MSG_DSST_SLOWPOISON = 0x277,
+/*20080827 to latest
+ SP의 회복 속도가 향상 되었습니다.
+HP/SP recovery increased.
+*/
+ MSG_ENST_MAGNIFICAT = 0x278,
+/*20080827 to latest
+ 마니피캇 상태가 해제되었습니다.
+Magnificat canceled.
+*/
+ MSG_DSST_MAGNIFICAT = 0x279,
+/*20080827 to latest
+ 행운이 향상되었습니다.
+Luck increased.
+*/
+ MSG_ENST_GLORIA = 0x27a,
+/*20080827 to latest
+ 글로리아 상태가 해제되었습니다.
+Gloria canceled.
+*/
+ MSG_DSST_GLORIA = 0x27b,
+/*20080827 to latest
+ 1회 공격에 두 배 데미지를 받는 상태가 되었습니다.
+You will received double damage from all attacking opponents.
+*/
+ MSG_ENST_LEXAETERNA = 0x27c,
+/*20080827 to latest
+ 렉스에테르나 상태가 해제되었습니다.
+Lex Eterna canceled.
+*/
+ MSG_DSST_LEXAETERNA = 0x27d,
+/*20080827 to latest
+ 공격속도가 증가하였습니다.
+Attack Speed increased.
+*/
+ MSG_ENST_ADRENALINE = 0x27e,
+/*20080827 to latest
+ 공격속도가 감소하였습니다.
+Attack Speed reduced.
+*/
+ MSG_DSST_ADRENALINE = 0x27f,
+/*20080827 to latest
+ 페코에 올라 탔습니다.
+You've just been on a Peco Peco.
+*/
+ MSG_ENST_RIDING = 0x280,
+/*20080827 to latest
+ 페코에서 내렸습니다.
+You've just got off of a Peco Peco.
+*/
+ MSG_DSST_RIDING = 0x281,
+/*20080827 to latest
+ 팔콘을 장착하였습니다.
+You've just carried a Falcon with.
+*/
+ MSG_ENST_FALCON = 0x282,
+/*20080827 to latest
+ 팔콘을 풀어주었습니다.
+You've just released a Falcon.
+*/
+ MSG_DSST_FALCON = 0x283,
+/*20080827 to latest
+ 죽은척하기 상태가 되었습니다.
+Play Dead initiated.
+*/
+ MSG_ENST_TRICKDEAD = 0x284,
+/*20080827 to latest
+ 죽은척하기 상태가 해제되었습니다.
+Play Dead canceled.
+*/
+ MSG_DSST_TRICKDEAD = 0x285,
+/*20080827 to latest
+ 힘이 강해졌습니다.
+STR improved.
+*/
+ MSG_ENST_SHOUT = 0x286,
+/*20080827 to latest
+ 힘이 원래대로 돌아왔습니다.
+STR turned back to normal.
+*/
+ MSG_DSST_SHOUT = 0x287,
+/*20080827 to latest
+ 에너지코트 상태가 되었습니다.
+Energy Coat initiated.
+*/
+ MSG_ENST_ENERGYCOAT = 0x288,
+/*20080827 to latest
+ 에너지코트 상태가 해제되었습니다.
+Energy Coat canceled.
+*/
+ MSG_DSST_ENERGYCOAT = 0x289,
+/*20080827 to latest
+ 방어구가 파괴되었습니다.
+Armor destroyed.
+*/
+ MSG_ENST_BROKENAMOR = 0x28a,
+/*20080827 to latest
+ ...
+Weapon has just been released from destroyed status.
+*/
+ MSG_DSST_BROKENAMOR = 0x28b,
+/*20080827 to latest
+ 무기가 파괴되었니다.
+Weapon destroyed.
+*/
+ MSG_ENST_BROKENWEAPON = 0x28c,
+/*20080827 to latest
+ ...
+Weapon has just been released from destroyed status.
+*/
+ MSG_DSST_BROKENWEAPON = 0x28d,
+/*20080827 to latest
+ 환영상태가 되었습니다.
+Invisibility initiated.
+*/
+ MSG_ENST_ILLUSION = 0x28e,
+/*20080827 to latest
+ 환영상태가 해제되었습니다.
+Invisibility canceled.
+*/
+ MSG_DSST_ILLUSION = 0x28f,
+/*20080827 to latest
+과금 정보 처리가 늦어지고 있어 접속이 지연되고 있습니다. 잠시 후에 다시 시도해 주시기 바랍니다.
+Sorry. It is delayed due to the process of payment. Please re-connect in a minute.
+*/
+ MSG_REFUSE_BLOCK_TEMPORARY = 0x290,
+/*20080827 to latest
+장착된 화살/탄환/수리검 을 해제해야합니다.
+You must unequip ammunition first.
+*/
+ MSG_UNEQUIP_ARROW = 0x291,
+/*20080827 to latest
+화살 목록
+Arrow List
+*/
+ MSG_ARROW_LIST = 0x292,
+/*20080827 to latest
+카트 목록
+Cart List
+*/
+ MSG_CART_LIST = 0x293,
+/*20080827 to latest
+카트를 장착한 상태여야 합니다.
+You must have a Pushcart.
+*/
+ MSG_MUST_EQUIP_CART = 0x294,
+/*20080827 to latest
+채팅방을 개설 할 수 없습니다.
+You cannot open a Chat Window.
+*/
+ MSG_CANT_MAKE_CHAT_ROOM = 0x295,
+/*20080827 to latest
+라그나로크 홈페이지로 접속하여 계정을 만듭니다. 처음 계정을 만드시면 3일 동안은 무료로 이용하실 수 있습니다.
+Registering an account is the first step to accessing the game. Do you want to visit the registration page now?
+*/
+ MSG_3DAY_FREE = 0x296,
+/*20080827 to latest
+앉은 상태에서는 이 아이템을 사용할 수 없습니다.
+You cannot use this item while sitting.
+*/
+ MSG_CANT_USE_WHEN_SITDOWN = 0x297,
+/*20080827 to latest
+채팅, 스킬, 아이템 사용금지가 %d 분간 남아 있습니다.
+Your use of skills and chat will be blocked for the next %d minutes.
+*/
+ MSG_BAD_MANNER_REMAIN = 0x298,
+/*20080827 to latest
+채팅, 스킬, 아이템 사용금지가 해지 되었습니다.
+Your use of skills and chat have been reinstated.
+*/
+ MSG_BAD_MANNER_END = 0x299,
+/*20080827 to latest
+-[장착안됨]
+- [Not equipped]
+*/
+ MSG_REF_UNEQUIP = 0x29a,
+/*20080827 to latest
+배고픔
+Very Hungry
+*/
+ MSG_VERY_HUNGRY = 0x29b,
+/*20080827 to latest
+출출함
+Hungry
+*/
+ MSG_HUNGRY = 0x29c,
+/*20080827 to latest
+보통
+Normal
+*/
+ MSG_NORMAL = 0x29d,
+/*20080827 to latest
+배부름
+Satisfied
+*/
+ MSG_REPLETE = 0x29e,
+/*20080827 to latest
+아주 배부름
+Stuffed
+*/
+ MSG_VERY_REPLETE = 0x29f,
+/*20080827 to latest
+서먹서먹함
+Awkward
+*/
+ MSG_VERY_AWKWARD = 0x2a0,
+/*20080827 to latest
+어색함
+Shy
+*/
+ MSG_AWKWARD = 0x2a1,
+/*20080827 to latest
+친함
+Cordial
+*/
+ MSG_FRIENDLY = 0x2a2,
+/*20080827 to latest
+절친함
+Loyal
+*/
+ MSG_VERY_FRIENDLY = 0x2a3,
+/*20080827 to latest
+알수 없음
+Unknown
+*/
+ MSG_UNKNOWN = 0x2a4,
+/*20080827 to latest
+귀하는 앞으로 %일 %d시간 %d분 사용이 가능합니다.
+Your account has play time of %d day %d hour %d minute.
+*/
+ MSG_BILLING_DAY_HOUR_MINUTES = 0x2a5,
+/*20080827 to latest
+이 계정은 이미 다른 어카운트 서버로 접속한 상태입니다.
+Your account is already connected to account server.
+*/
+ MSG_BAN_INFORMATION_REMAINED_ANOTHER_ACCOUNT = 0x2a6,
+/*20080827 to latest
+귀하는 앞으로 %d시간 %d분 사용이 가능합니다.
+Your account has play time of %d hour %d minute.
+*/
+ MSG_BILLING_HOUR_MINUTES = 0x2a7,
+/*20080827 to latest
+귀하는 무료 사용자 입니다.
+Your account is a free account.
+*/
+ MSG_BILLING_FREE_USER = 0x2a8,
+/*20080827 to latest
+이 계정으로 사크라이에 접속할수 없습니다.
+This account can't connect the Sakray server.
+*/
+ MSG_REFUSE_NONSAKRAY_ID_BLOCKED = 0x2a9,
+/*20080827 to latest
+펫의 이름은 영문 23, 한글 11자 이내로 정해 주세요.
+Your pet name must be 23 characters or less.
+*/
+ MSG_PETNAME_IN23 = 0x2aa,
+/*20080827 to latest
+이름은 단 한번만 바꿀수 있습니다. 펫 이름을 ^0000ff^0000ff %s^000000^000000 로 수정합니다. 계속 하시겠습니까?
+You may change your pet's name only once. Your pet's name will be changed to ^0000ff^0000ff %s^000000^000000. Do you wish to continue?
+*/
+ MSG_PETNAME_CHANGE_ONLYONCE = 0x2ab,
+/*20080827 to latest
+/폰트
+/font
+*/
+ MSG_NAMEBALLOON_TYPE = 0x2ac,
+/*20080827 to latest
+길드에 남은 제니가 부족하여 작업이 실패하였습니다.
+Your guild lacks the funds to pay for this venture.
+*/
+ MSG_GUILDZENY_NOT_ENOUGH = 0x2ad,
+/*20080827 to latest
+길드가 소유할 수 있는 최대 금액을 초과하여 작업이 실패하였습니다.
+Your guild zeny limit prevents you from performing this action.
+*/
+ MSG_GUILDZENY_OVER = 0x2ae,
+/*20080827 to latest
+이펙트 간략화 On
+Simplified effects have been activated.
+*/
+ MSG_MINEFFECT_ON = 0x2af,
+/*20080827 to latest
+이펙트 간략화 Off
+Simplified effects have been deactivated.
+*/
+ MSG_MINEFFECT_OFF = 0x2b0,
+/*20080827 to latest
+자본금
+Required Fee
+*/
+ MSG_CAPITAL = 0x2b1,
+/*20080827 to latest
+아이템을 바닥에 버리려면, 아이템 창을 열어 주십시오.
+If you wish to drop an item, you must first open your Item Window (alt+e).
+*/
+ MSG_OPEN_ITEMWND_TO_THROW = 0x2b2,
+/*20080827 to latest
+PC방 요금이 종료하여 개인 요금제로 전환합니다. 개인 요금으로 게임을 계속 하시겠습니까?
+Internet Cafe Time Plan has been ended. Would you like to continue the game with your personal play time?
+*/
+ MSG_ASK_PNGAMEROOM = 0x2b3,
+/*20080827 to 20100810
+
+20081111 to latest
+
+Current admission application state.
+*/
+ MSG_REPLY_REMAINTIME = 0x2b4,
+/*20080827 to 20100810
+
+20081111 to latest
+
+Current admission application state.
+*/
+ MSG_INFO_REMAINTIME = 0x2b5,
+/*20080827 to latest
+돈이 모자라거나, 가질 수 있는 최대 금액을 초과하였습니다.
+Your lack of zeny or your zeny limit have prevented you from performing this action.
+*/
+ MSG_OVER_OR_LOW_MONEY = 0x2b6,
+/*20080827 to latest
+전투불능 상태가 되었습니다. esc키를 누르시면 선택창이 뜹니다.
+Your character has fainted. Push the ESC key to restart.
+*/
+ MSG_PRESS_ESC_TO_RESTART = 0x2b7,
+/*20080827 to latest
+ %d 개 획득
+- %d obtained.
+*/
+ MSG_EA_OBTAIN = 0x2b8,
+/*20080827 to latest
+스펠 리스트
+Spell List
+*/
+ MSG_SPELL_LIST = 0x2b9,
+/*20080827 to latest
+/최소화
+/minimize
+*/
+ MSG_MINEFFECT = 0x2ba,
+/*20080827 to latest
+이 아이템은 손상되어 있습니다..
+This item has been damaged.
+*/
+ MSG_DAMAGED_ITEM = 0x2bb,
+/*20080827 to latest
+/noshift : 쉬프트를 누르지않고 힐로 적을 공격할수있게됩니다 On Off
+/noshift: You may use your ''force heal'' ability without the Shift key. On | Off
+*/
+ MSG_EXPLAIN_NOSHIFT = 0x2bc,
+/*20080827 to latest
+시프트를 누르지 않고도 힐로 언데드를 공격할수 있습니다 [/ns ON]
+[no shift] option activated. [ON]
+*/
+ MSG_NOSHIFT_ON = 0x2bd,
+/*20080827 to latest
+시프트를 눌러야 힐로 언데드를 공격할수 있습니다 [/ns OFF]
+[no shift] option deactivated. [OFF]
+*/
+ MSG_NOSHIFT_OFF = 0x2be,
+/*20080827 to latest
+MSI_REFUSE_BAN_BY_DBA
+*/
+ MSG_REFUSE_BAN_BY_DBA = 0x2bf,
+/*20080827 to latest
+MSI_REFUSE_EMAIL_NOT_CONFIRMED
+*/
+ MSG_REFUSE_EMAIL_NOT_CONFIRMED = 0x2c0,
+/*20080827 to latest
+MSI_REFUSE_BAN_BY_GM
+*/
+ MSG_REFUSE_BAN_BY_GM = 0x2c1,
+/*20080827 to latest
+MSI_REFUSE_TEMP_BAN_FOR_DBWORK
+*/
+ MSG_REFUSE_TEMP_BAN_FOR_DBWORK = 0x2c2,
+/*20080827 to latest
+MSI_REFUSE_SELF_LOCK
+*/
+ MSG_REFUSE_SELF_LOCK = 0x2c3,
+/*20080827 to latest
+MSI_REFUSE_NOT_PERMITTED_GROUP
+*/
+ MSG_REFUSE_NOT_PERMITTED_GROUP = 0x2c4,
+/*20080827 to latest
+MSI_REFUSE_WAIT_FOR_SAKRAY_ACTIVE
+*/
+ MSG_REFUSE_WAIT_FOR_SAKRAY_ACTIVE = 0x2c5,
+/*20080827 to latest
+/aura : 오오라를 간략화 시킬수있습니다 On Off
+/aura: Simplify Aura effect On | Off
+*/
+ MSG_EXPLAIN_AURA = 0x2c6,
+/*20080827 to latest
+오오라가 정상적으로 표시됩니다 [오오라 ON]
+Turn On Aura [Aura ON]
+*/
+ MSG_AURA_ON = 0x2c7,
+/*20080827 to latest
+오오라가 간략화되서 표시됩니다 [오오라 OFF]
+Simplify Aura enabled. [ON]
+*/
+ MSG_AURA_OFF = 0x2c8,
+/*20080827 to latest
+채팅금지 기록 %d 회
+Chat block record %d times
+*/
+ MSG_PROHIBIT_LOG = 0x2c9,
+/*20080827 to latest
+채팅 금지 리스트
+Chat block list
+*/
+ MSG_PROHIBIT_LIST = 0x2ca,
+/*20080827 to latest
+/이름표시 or /showname : 캐릭터의 이름 표시 방식을 변경합니다.
+/showname: Change the name font type.
+*/
+ MSG_EXPLAIN_SHOWNAMETYPE = 0x2cb,
+/*20080827 to latest
+/noctrl : 콘트롤을 누르지않아도 자동공격이 됩니다. On Off
+/noctrl | /nc: Auto attack without pressing ctrl key. On | Off
+*/
+ MSG_EXPLAIN_NOCTRL = 0x2cc,
+/*20080827 to latest
+콘트롤을 누르지 않아도 자동공격을 합니다 [/nc ON]
+Use auto attack without Ctrl. [Auto attack ON]
+*/
+ MSG_NOCTRL_ON = 0x2cd,
+/*20080827 to latest
+콘트롤을 눌러야 자동공격을 합니다 [/nc OFF]
+Use auto attack with Ctrl. [Auto attack OFF]
+*/
+ MSG_NOCTRL_OFF = 0x2ce,
+/*20080827 to latest
+채팅 금지 주기
+Mute this player.
+*/
+ MSG_APPEND_PROHIBIT = 0x2cf,
+/*20080827 to latest
+채팅 금지 완전 풀기 & 로그 삭제
+Unmute player & Erase mute time.
+*/
+ MSG_ERASE_PROHIBIT = 0x2d0,
+/*20080827 to latest
+채팅 금지 시간 줄이기(로그 삭제 안됨)
+Decrease Player Mute time.
+*/
+ MSG_REDUCE_PROHIBIT = 0x2d1,
+/*20080827 to latest
+폰트가 정상적으로 바뀌었습니다 [이름표시방식 1]
+Normal Font Displayed. [showname type 1]
+*/
+ MSG_SHOWNAME_ON = 0x2d2,
+/*20080827 to latest
+폰트가 가늘게 바뀌면서 파티명도 표시됩니다 [이름표시방식 2]
+Font will be thin and party name will be shown [showname type 2]
+*/
+ MSG_SHOWNAME_OFF = 0x2d3,
+/*20080827 to latest
+/doridori : 연속해서 이 명령어를 쳐주면 캐릭터가 도리도리 ^^;;
+/doridori: Shake head
+*/
+ MSG_EXPLAIN_DORIDORI = 0x2d4,
+/*20080827 to latest
+인터넷 카페에서 과금을 하고 있습니다.
+Internet room is paying now.
+*/
+ MSG_BILLING_INTERNET_CAFE = 0x2d5,
+/*20080827 to latest
+정액제 과금은 %d일 %d시간 %d분이 남았습니다.
+종량제 과금은 %d시간 %d분이 남았습니다.
+Prepaid voucher validate until %d days %d hours %d minutes later.
+Time limit voucher validate untill %d hours %d minutes later.
+*/
+ MSG_BILLING_BOTH = 0x2d6,
+/*20080827 to latest
+/bingbing : 연속해서 이 명령어를 쳐주면 캐릭터가 빙글빙글 ^^;;
+/bingbing: Rotates player counter clockwise.
+*/
+ MSG_EXPLAIN_BINGBING = 0x2d7,
+/*20080827 to latest
+/bangbang : 연속해서 이 명령어를 쳐주면 캐릭터가 뱅글뱅글 ^^;;
+/bangbang: Rotates player clockwise.
+*/
+ MSG_EXPLAIN_BANGBANG = 0x2d8,
+/*20080827 to latest
+/skillfail : 빨간색의 스킬사용 실패 메세지를 표시하지 않습니다 On Off
+/skillfail: Display red font message when skill fails. On | Off
+*/
+ MSG_EXPLAIN_SKILLFAIL = 0x2d9,
+/*20080827 to latest
+스킬사용 실패 메세지를 표시합니다 [/sf ON]
+Skill fail messages will be displayed. [Display On]
+*/
+ MSG_SKILLFAIL_ON = 0x2da,
+/*20080827 to latest
+스킬사용 실패 메세지를 표시하지 않습니다 [/sf OFF]
+Skill fail messages will not be displayed. [Display OFF]
+*/
+ MSG_SKILLFAIL_OFF = 0x2db,
+/*20080827 to latest
+/notalkmsg : 채팅내용을 채팅창에 표시하지 않습니다 On Off
+/notalkmsg: Chat will not be displayed in chat window. On | Off
+*/
+ MSG_EXPLAIN_NOTALKMSG = 0x2dc,
+/*20080827 to latest
+채팅내용을 채팅창에 표시합니다 [/nm ON]
+Chat content will be displayed in the chat window. [Display ON]
+*/
+ MSG_NOTALKMSG_ON = 0x2dd,
+/*20080827 to latest
+채팅내용을 채팅창에 표시하지않습니다 [/nm OFF]
+Chat content will not be displayed in the chat window. [Display OFF]
+*/
+ MSG_NOTALKMSG_OFF = 0x2de,
+/*20080827 to latest
+/set1 : /nc + /showname + /sf + /wi, /set2 : + /q3
+/set1: /noctrl + /showname + /skillfail
+*/
+ MSG_EXPLAIN_SET1 = 0x2df,
+/*20080827 to latest
+/fog : FOG이펙트를 키거나 끌수있습니다 On Off
+/fog: Fog effect. On | Off
+*/
+ MSG_EXPLAIN_FOG = 0x2e0,
+/*20080827 to latest
+ 청혼을 해왔습니다. 승낙하시겠습니까?
+You have received a marriage proposal. Do you accept?
+*/
+ MSG_SUGGEST_COUPLE = 0x2e1,
+/*20080827 to latest
+아이템 분배 방식
+Item sharing type
+*/
+ MSG_HOWITEMDIV = 0x2e2,
+/*20080827 to latest
+각자 취득
+Individual
+*/
+ MSG_ITEMDIV1 = 0x2e3,
+/*20080827 to latest
+균등하게 분배
+Shared
+*/
+ MSG_ITEMDIV2 = 0x2e4,
+/*20080827 to latest
+nProtect KeyCrypt
+*/
+ MSG_KEYCRYPT = 0x2e5,
+/*20080827 to latest
+Keyboard Driver가 검출되었습니다.
+
+키보드 보안 입력을 위해 추가기능을 설치하시겠습니까?
+
+(추가기능 설치후, 시스템 reboot 필수)
+Keyboard Driver has been detected.
+
+Do you want to install a program for keyboard security?
+
+(After installation, System Reboot is required)
+*/
+ MSG_KEYCRYPT_INSTALL_KEYDRIVER = 0x2e6,
+/*20080827 to latest
+설치가 완료 되었습니다.
+
+시스템을 Reboot 합니다.
+Installation has been completed.
+
+System will be rebooted.
+*/
+ MSG_KEYCRYPT_REBOOT = 0x2e7,
+/*20080827 to latest
+설치 실패.
+Installation has been failed.
+*/
+ MSG_KEYCRYPT_INSTALLFAIL = 0x2e8,
+/*20080827 to latest
+키보드 보안을 적용하지 않고 계속합니다.
+Keyboard Security will be skipped.
+*/
+ MSG_KEYCRYPT_SKIPKEYCRYPT = 0x2e9,
+/*20080827 to latest
+키보드 보안에 필요한 파일이 존재하지 않습니다.
+
+(npkeyc.vxd, npkeyc.sys, npkeycs.sys)
+Required file for Keyboard Security is not existing.
+
+(npkeyc.vxd, npkeyc.sys, npkeycs.sys)
+*/
+ MSG_KEYCRYPT_NOKEYCRYPTFILE = 0x2ea,
+/*20080827 to latest
+USB Keyboard가 검출되었습니다.
+
+키보드 보안 입력을 위해 추가기능을 설치하시겠습니까?
+
+(추가기능 설치후, 시스템 reboot 필수)
+USB Keyboard has been detected.
+
+Do you want to install a program for keyboard security?
+
+(After installation, System Reboot is required)
+*/
+ MSG_KEYCRYPT_USBKEYBOARD = 0x2eb,
+/*20080827 to latest
+ftp://ragnarok.nefficient.co.kr/pub/ragnarok/ragnarok0526.exe
+*/
+ MSG_FINDHACK_PATH = 0x2ec,
+/*20080827 to latest
+FindHack이 정상적으로 설치가 되어있지 않습니다. ragnarok0226.exe 를 다운로드 하여 라그나로크가 설치된 폴더에 설치해 주시기 바랍니다.(%d).
+FindHack is not installed correctly. Please download ragnarok0226.exe and install it in RagnarokOnline directory.(%d).
+*/
+ MSG_FINDHACK_NOTINSTALLED = 0x2ed,
+/*20080827 to latest
+해킹툴이 존재하지만 치료가 정상적으로 되지 않았습니다. 라그나로크가 실행되지 않습니다.
+Hacking tool is existing but it hasn't been cleaned. Rangarok Online will not be executed.
+*/
+ MSG_FINDHACK_HACKTOOLEXIST = 0x2ee,
+/*20080827 to latest
+해킹툴 진단 프로그램이 정상적으로 다운로드 되지 않았습니다. ragnarok0226.exe 를 다운로드 하여 라그나로크가 설치된 폴더에 설치해 주시기 바랍니다.
+Hacking tool scan program has not been downloaded correctly. Please download ragnarok0226.exe and install it in RagnarokOnline directory.
+*/
+ MSG_FINDHACK_CANTDOWNLOAD = 0x2ef,
+/*20080827 to latest
+NPX.DLL 등록에러 이거나 FindHack 구동에 필요한 파일이 없습니다. ragnarok0226.exe 를 다운로드 하여 라그나로크가 설치된 폴더에 설치해 주시기 바랍니다.
+NPX.DLL register error or there is no necessary file to run FindHack. Please download ragnarok0226.exe and install it in RagnarokOnline directory.
+*/
+ MSG_FINDHACK_NOFILE = 0x2f0,
+/*20080827 to latest
+예외사항이 발생했습니다. (02-3281-0361)로 문의해주세요. 리턴값(%d)
+Exceptional Error. Please contact the customer support. Return Value: (%d)
+*/
+ MSG_FINDHACK_EXCEPTION = 0x2f1,
+/*20080827 to latest
+종료버튼을 클릭 하셨습니다.
+Exit button has been clicked.
+*/
+ MSG_FINDHACK_EXITPRESSED = 0x2f2,
+/*20080827 to latest
+Findhack 업데이트 서버접근 실패하였습니다. 잠시 후에 다시 시도해 주시거나 그라비티 운영팀으로 연락해주시기 바랍니다.
+Unable to connect Findhack Update Server. Please try again or contact the customer support.
+*/
+ MSG_FINDHACK_UPDATEFAILED = 0x2f3,
+/*20080827 to latest
+사랑받고있는
+Beloved
+*/
+ MSG_NAMED_PET = 0x2f4,
+/*20080827 to latest
+/report or /신고 : 신고용 갈무리 파일을 저장합니다.
+/report: Save a chat log file.
+*/
+ MSG_REPORTCOMMAND_EXPLANATION = 0x2f5,
+/*20080827 to latest
+이 파일은 (주)그라비티의 운영팀에서 게임내의 부정행위나 비매너 행위에 대한
+증거자료로 사용하게 됩니다.
+문서를 다른 문서 형식으로 저장하거나 내용을 변경하여 원본과 일치하지 않게
+ 될 경우 그 문서는 증거 효력을 상실하게 됩니다.
+Chat logs are not accepted as evidence for any ill-mannered violation on account of possible file modifications. However this feature is provided for players' personal reference.
+*/
+ MSG_REPORTTEXT_HEADER = 0x2f6,
+/*20080827 to latest
+당신을 사랑해요 ♡
+I love you.
+*/
+ MSG_LOVE_SKILL = 0x2f7,
+/*20080827 to latest
+화면 또는 이펙트가 밝아서 눈에 부담이 되시는분들은 모니터의 밝기를 조정해주시기바랍니다.
+Please adjust your monitor/video brightness if effects appear too bright.
+*/
+ MSG_EXPLAIN_BRIGHT = 0x2f8,
+/*20080827 to latest
+전체화면모드가 잘안되는 경우에 게임실행후 ALT+TAB으로 화면을 전환하면 잘되는 기종도 있습니다
+If full screen mode fails to work, it is suggested you alt+tab [or ctrl+esc] to inactivate and reactivate the Ragnarok Client.
+*/
+ MSG_EXPLAIN_ALTTAB = 0x2f9,
+/*20080827 to latest
+(%d 명) - 유료서버
+(%d players) - Pay to Play Server
+*/
+ MSG_SERVER_PROPERTY_PAY = 0x2fa,
+/*20080827 to latest
+(%d 명) - 무료서버
+(%d players) - Free Server
+*/
+ MSG_SERVER_PROPERTY_FREE = 0x2fb,
+/*20080827 to latest
+무료 회원은 유료 서버로 접속할 수 없습니다.
+Trial players can't connect Pay to Play Server.
+*/
+ MSG_CANT_CONNECT_TO_PAY_SERVER = 0x2fc,
+/*20080827 to latest
+마우스 우클릭으로 F9에 저장한 스킬을 쓸수있습니다 [/q1 ON]
+Right click menu skills for F9 are Enabled.[/q1 ON]
+*/
+ MSG_QUICKSPELL_ON = 0x2fd,
+/*20080827 to latest
+마우스 우클릭으로 스킬을 사용하지 못합니다 [/q1 OFF]
+Right click menu skills for F9 are Disabled.[/q1 OFF]
+*/
+ MSG_QUICKSPELL_OFF = 0x2fe,
+/*20080827 to latest
+/quickspell : 마우스 우클릭으로 F9에 저장한 스킬을 사용합니다 On Off
+/quickspell: Right-click menu enables you to use skills assigned to the F9 hotkey. On | Off
+*/
+ MSG_EXPLAIN_QUICKSPELL = 0x2ff,
+/*20080827 to latest
+마우스의 WHEEL을 사용해서 F7 과 F8에 저장한 스킬을 사용합니다 [/q2 ON]
+Mouse wheel skills for F7 and F8 are Enabled.[/q2 ON]
+*/
+ MSG_QUICKSPELL2_ON = 0x300,
+/*20080827 to latest
+마우스 WHEEL로 스킬을 사용하지 못합니다 [/q2 OFF]
+Mouse wheel skills for F7 and F8 are Disabled.[/q2 OFF]
+*/
+ MSG_QUICKSPELL2_OFF = 0x301,
+/*20080827 to latest
+/quickspell2 : 마우스 WHEEL을 위,아래로 굴려서 F7과F8에 저장한 스킬을 사용합니다 On Off
+/quickspell2: By rolling the mouse wheel up and down, you are able to use skills registered on F7 and F8 hotkeys. On | Off
+*/
+ MSG_EXPLAIN_QUICKSPELL2 = 0x302,
+/*20080827 to latest
+/q3 : /quickspell (/q1) + /quickspell2 (/q2)
+/q3: /quickspell (/q1) + /quickspell2 (/q2)
+*/
+ MSG_EXPLAIN_QUICKSPELL3 = 0x303,
+/*20080827 to latest
+/찌릿
+/bzz
+*/
+ MSG_EMOTION_STARE = 0x304,
+/*20080827 to latest
+/밥
+/rice
+*/
+ MSG_EMOTION_HUNGRY = 0x305,
+/*20080827 to latest
+/멋져
+/awsm
+*/
+ MSG_EMOTION_COOL = 0x306,
+/*20080827 to latest
+/메롱
+/meh
+*/
+ MSG_EMOTION_MERONG = 0x307,
+/*20080827 to latest
+/부끄
+/shy
+*/
+ MSG_EMOTION_SHY = 0x308,
+/*20080827 to latest
+/쓱쓱
+/pat
+*/
+ MSG_EMOTION_GOODBOY = 0x309,
+/*20080827 to latest
+/엠탐
+/mp
+*/
+ MSG_EMOTION_SPTIME = 0x30a,
+/*20080827 to latest
+/질질
+/slur
+*/
+ MSG_EMOTION_SEXY = 0x30b,
+/*20080827 to latest
+/컴온
+/com
+*/
+ MSG_EMOTION_COMEON = 0x30c,
+/*20080827 to latest
+/하품
+/yawn
+*/
+ MSG_EMOTION_SLEEPY = 0x30d,
+/*20080827 to latest
+/축하
+/grat
+*/
+ MSG_EMOTION_CONGRATULATION = 0x30e,
+/*20080827 to latest
+/피탐
+/hp
+*/
+ MSG_EMOTION_HPTIME = 0x30f,
+/*20080827 to latest
+/이모션 : 현재 사용가능한 이모션의 리스트를 보여줍니다.
+/emotion: views the emoticon list.
+*/
+ MSG_EXPLAIN_EMOTION = 0x310,
+/*20080827 to latest
+키보드를 이용해서 스킬단축창 1,2,3의 스킬들을 사용합니다. [/bm ON]
+Skills assigned to shortcut windows 1, 2, 3 are Enabled. [/bm ON]
+*/
+ MSG_BATTLE_ON = 0x311,
+/*20080827 to latest
+키보드를 이용해서 스킬단축창 1,2,3의 스킬들을 사용하지못합니다. [/bm OFF]
+Skills assigned to shortcut windows 1, 2, 3 are Disabled. [/bm OFF]
+*/
+ MSG_BATTLE_OFF = 0x312,
+/*20080827 to latest
+/battlemode : Q ~ O 를 누르면 스킬단축창2의 스킬들이 사용됩니다.
+/battlemode: allows you to use skills assigned to Shortcut Window 2 by pressing Q ~ O keys.
+*/
+ MSG_EXPLAIN_BATTLE = 0x313,
+/*20080827 to latest
+ A ~ L 을 누르면 스킬단축창3의 스킬들이 사용됩니다.
+A ~ L keys allow you to use skills assigned to Shortcut Window 3.
+*/
+ MSG_EXPLAIN_BATTLE2 = 0x314,
+/*20080827 to latest
+라그나로크를 실행하실때 다른 프로그램을 띄우시면 게임이 느려질수도있습니다.
+Please remember, programs running in the background while playing may affect the game's performance.
+*/
+ MSG_EXPLAIN_LAG = 0x315,
+/*20080827 to latest
+천사님 제 목소리 들리세요? ^^;
+Dear angel, can you hear my voice?
+*/
+ MSG_SUPERNOVICE1 = 0x316,
+/*20080827 to latest
+슈퍼노비스
+Super Novice
+*/
+ MSG_SUPERNOVICE2 = 0x317,
+/*20080827 to latest
+예요~
+Super Novice~
+*/
+ MSG_SUPERNOVICE3 = 0x318,
+/*20080827 to latest
+저 좀 도와주세요~ ㅠ_ㅠ
+Help me out~ Please~ T_T
+*/
+ MSG_SUPERNOVICE4 = 0x319,
+/*20080827 to latest
+님께서 당신을 입양시키고 싶어하십니다. 승낙하시겠습니까?
+ wishes to adopt you. Do you accept?
+*/
+ MSG_SUGGEST_BABY = 0x31a,
+/*20080827 to latest
+ Z ~ > 을 누르면 스킬단축창1의 스킬들이 사용됩니다. On Off
+Z ~ > keys allow you to use skills assigned on shortcut window 1. On | Off
+*/
+ MSG_EXPLAIN_BATTLE3 = 0x31b,
+/*20080827 to latest
+ Space를 한번 누른뒤에 글자를 입력하면 채팅을 할수있습니다.
+Press the space bar to Chat when in Battle mode [/battlemode | /bm].
+*/
+ MSG_EXPLAIN_BATTLE4 = 0x31c,
+/*20080827 to latest
+게임가드 파일이 없거나 변조되었습니다. 게임가드 셋업 파일을 설치해보시기 바랍니다.
+"Either there's no Game Guard installed on the program or Game Guard is cracked. Please, try to reinstall Game Guard from its setup file."
+*/
+ MSG_NPGAMEMON_ERROR_AUTH_GAMEGUARD = 0x31d,
+/*20080827 to latest
+윈도우의 일부 시스템 파일이 손상되었습니다. 인터넷 익스플로러(IE)를 다시 설치해보시기 바랍니다.
+Some of Windows system files have been damaged. Please re-install your Internet Explorer.
+*/
+ MSG_NPGAMEMON_ERROR_CRYPTOAPI = 0x31e,
+/*20080827 to latest
+게임가드 실행에 실패했습니다. 게임가드 셋업 파일을 다시 설치해보시기 바랍니다.
+"Failed to run Game Guard. Please, try to reinstall Game Guard from its setup file."
+*/
+ MSG_NPGAMEMON_ERROR_EXECUTE = 0x31f,
+/*20080827 to latest
+불법 프로그램이 발견되었습니다. 불필요한 프로그램을 종료한 후 다시 실행해보시기 바랍니다.
+"At least one hazardous program has been detected. Please, terminate all the unnecessary programs before executing Game Guard."
+*/
+ MSG_NPGAMEMON_ERROR_ILLEGAL_PRG = 0x320,
+/*20080827 to latest
+게임가드 업데이트를 취소하셨습니다. 접속이 계속 되지 않을 경우 인터넷 및 방화벽 상태를 점검해보시기 바랍니다.
+"Game Guard update is canceled. If the disconnection continues, please, check your internet or firewall settings."
+*/
+ MSG_NPGMUP_ERROR_ABORT = 0x321,
+/*20080827 to latest
+게임가드 업데이트 서버 접속에 실패하였습니다. 잠시 후 재시도 해보거나, 인터넷 및 방화벽 상태를 점검해 보시기 바랍니다.
+"Failed to connect to Game Guard update server. Try to connect again later, or try to check the internet or firewall settings."
+*/
+ MSG_NPGMUP_ERROR_CONNECT = 0x322,
+/*20080827 to latest
+게임가드 업데이트를 완료하지 못 했습니다. 바이러스 검사를 해보시거나, PC 관리 프로그램을 사용하시면 설정을 조정한 후 게임을 실행해 보시기 바랍니다.
+"Can't complete Game Guard update process. Please, try to execute a vaccine program to remove viruses. Or, please try to modify the settings of your PC managing tool if you are using any."
+*/
+ MSG_NPGMUP_ERROR_AUTH = 0x323,
+/*20080827 to latest
+/notrade : 거래신청을 자동으로 거절합니다 On Off
+/notrade: Declines trade offers automatically. On | Off
+*/
+ MSG_EXPLAIN_NOTRADE = 0x324,
+/*20080827 to latest
+거래신청과 친구등록요청을 자동으로 거절합니다 [/nt ON]
+Auto decline trade offers has been Enabled. [/nt ON]
+*/
+ MSG_NOTRADE_ON = 0x325,
+/*20080827 to latest
+거래신청과 친구등록요청을 정상적으로 받습니다 [/nt OFF]
+Auto decline trade offers has been Disabled. [/nt OFF]
+*/
+ MSG_NOTRADE_OFF = 0x326,
+/*20080827 to latest
+같은 아이템은 한번에 30000개 이상은 살수 없습니다.
+You cannot buy more than 30,000ea items at once.
+*/
+ MSG_LIMIT_BUY_ITEM = 0x327,
+/*20080827 to latest
+재료가 충분하지 않습니다.
+You do not have enough ingredients.
+*/
+ MSG_NOT_ENOUGH_SOURCE = 0x328,
+/*20080827 to latest
+%s에 계정정보가 남아있습니다.
+Login information remains at %s.
+*/
+ MSG_ALREADY_CONNECT = 0x329,
+/*20080827 to latest
+계정도용 조사를 위해 로그인이 금지되었습니다. 자세한 문의는 계정도용 관련 문의 메일로 해주시기 바랍니다.
+Account has been locked for a hacking investigation. Please contact the GM Team for more information.
+*/
+ MSG_HACKING_INVESTIGATION = 0x32a,
+/*20080827 to latest
+귀하는 버그관련 조사중이므로 일시적으로 접속을 금합니다
+This account has been temporarily prohibited from login due to a bug-related investigation.
+*/
+ MSG_BUG_INVESTIGATION = 0x32b,
+/*20080827 to latest
+수리가능한 아이템
+Repairable items
+*/
+ MSG_REPAIRITEMLIST = 0x32c,
+/*20080827 to latest
+아이템 수리 성공
+Item has been successfully repaired.
+*/
+ MSG_ITEM_REPAIR_SUCCEESS = 0x32d,
+/*20080827 to latest
+아이템 수리 실패 (재료 또는 상대와의 거리등을 확인해주십시요)
+You have failed to repair this item. Please check the distance between you and opponent.
+*/
+ MSG_ITEM_REPAIR_FAIL = 0x32e,
+/*20080827 to latest
+시스템 상황을 지속적으로 체크 합니다.[운영자모드] [/sc ON]
+System process enabled [GM mode] [/sc ON]
+*/
+ MSG_SYSTEM_CHECK_ON = 0x32f,
+/*20080827 to latest
+시스템 상황을 지속적으로 체크 하지 않습니다.[운영자모드] [/sc OFF]
+System process disabled [GM mode] [/sc OFF]
+*/
+ MSG_SYSTEM_CHECK_OFF = 0x330,
+/*20080827 to latest
+/systemcheck : 시스템 상황을 지속적으로 체크 합니다.[운영자모드]
+/systemcheck: Check the system process [GM mode] On | Off
+*/
+ MSG_EXPLAIN_SYSTEM_CHECK = 0x331,
+/*20080827 to latest
+(%s)님이 친구 신청을 하셨습니다. 친구가 되시겠습니까?
+(%s) wishes to be friends with you. Would you like to accept?
+*/
+ MSG_SUGGEST_JOIN_FRIEND = 0x332,
+/*20080827 to latest
+더 이상 친구 등록을 하실수 없습니다.
+Your Friend List is full.
+*/
+ MSG_FRIEND_ADD_ME_OVERSIZE = 0x333,
+/*20080827 to latest
+(%s)님이 더 이상 친구 등록을 하실수 없습니다.
+(%s)'s Friend List is full.
+*/
+ MSG_FRIEND_ADD_OTHER_OVERSIZE = 0x334,
+/*20080827 to latest
+(%s)님과 친구가 되셨습니다.
+You have become friends with (%s).
+*/
+ MSG_FRIEND_ADD_SUCCEED = 0x335,
+/*20080827 to latest
+(%s)님이 친구 되기를 원하지 않습니다.
+(%s) does not want to be friends with you.
+*/
+ MSG_FRIEND_ADD_FALSE = 0x336,
+/*20080827 to latest
+이 캐릭터는 %s 까지 블럭되어있습니다.
+This character will be blocked to use until %s.
+*/
+ MSG_BLOCKED = 0x337,
+/*20080827 to latest
+천만제니 이상 입력하셔도 가격은 천만제니로 판매됩니다.
+Price will be fixed at 10,000,000 zeny, even if you enter higher price.
+*/
+ MSG_OVERPRICE = 0x338,
+/*20080827 to latest
+(적음)
+(Very low)
+*/
+ MSG_LITTLEUSER = 0x339,
+/*20080827 to latest
+(약간 적음)
+(Low)
+*/
+ MSG_ALITTLEUSER = 0x33a,
+/*20080827 to latest
+(보통)
+(Normal)
+*/
+ MSG_NORMLEUSER = 0x33b,
+/*20080827 to latest
+(많음)
+(High)
+*/
+ MSG_MANYUSER = 0x33c,
+/*20080827 to latest
+(매우 많음)
+(Very high)
+*/
+ MSG_VERYMANYUSER = 0x33d,
+/*20080827 to latest
+비매너에 의해 운영자로부터 채팅금지가 적용됩니다.
+You have been blocked from using chat and skills for %d minutes by the GM Team.
+*/
+ MSG_GM_BAD_MANNER_START = 0x33e,
+/*20080827 to latest
+GM에 의한 채팅금지가 %d 분 남아 있습니다.
+%d minutes remain until release from the GM penalty.
+*/
+ MSG_GM_BAD_MANNER_REMAIN = 0x33f,
+/*20080827 to latest
+GM에 의한 채팅금지가 해지 되었습니다.
+You have been released from the GM penalty.
+*/
+ MSG_GM_BAD_MANNER_END = 0x340,
+/*20080827 to latest
+도배 방지 시스템으로 인한 자동 채팅금지가 적용됩니다.
+You have been blocked from using chat and skills for %d as an automatic penalty.
+*/
+ MSG_AUTO_BAD_MANNER_START = 0x341,
+/*20080827 to latest
+도배 방지 시스템으로 인한 채팅금지가 %d 분 남아 있습니다.
+%d minutes remain until release from auto penalty.
+*/
+ MSG_AUTO_BAD_MANNER_REMAIN = 0x342,
+/*20080827 to latest
+도배 방지 시스템으로 인한 채팅금지가 해지되었습니다. 게임진행 시에는 도배에 대해서 주의하여 주시기 바랍니다.
+You have been released from the auto penalty. Please refrain from spamming in-game.
+*/
+ MSG_AUTO_BAD_MANNER_END = 0x343,
+/*20080827 to latest
+%s님과 %s님이 이혼하셨습니다.
+%s and %s have divorced from each other.
+*/
+ MSG_DIVORCE = 0x344,
+/*20080827 to latest
+拳聖 %s의 태양의 장소로 %s 가 지정됐습니다.
+%s has been designated as Gravity %s's Solar Space.
+*/
+ MSG_STARPLACE1 = 0x345,
+/*20080827 to latest
+拳聖 %s의 달의 장소로 %s 가 지정됐습니다.
+%s has been designated as Gravity %s's Luna Space.
+*/
+ MSG_STARPLACE2 = 0x346,
+/*20080827 to latest
+拳聖 %s의 별의 장소로 %s 가 지정됐습니다.
+%s has been designated as Gravity %s's Stellar Space.
+*/
+ MSG_STARPLACE3 = 0x347,
+/*20080827 to latest
+拳聖 %s의 태양의 장소는 %s 입니다
+Gravity %s's Solar Space: %s
+*/
+ MSG_STARPLACE4 = 0x348,
+/*20080827 to latest
+拳聖 %s의 달의 장소는 %s 입니다
+Gravity %s's Luna Space: %s
+*/
+ MSG_STARPLACE5 = 0x349,
+/*20080827 to latest
+拳聖 %s의 별의 장소는 %s 입니다
+Gravity %s's Stellar Space: %s
+*/
+ MSG_STARPLACE6 = 0x34a,
+/*20080827 to latest
+拳聖 %s의 태양의 몬스터로 %s 가 지정됐습니다.
+%s has been designated as Gravity %s's Solar Monster.
+*/
+ MSG_STARMONSTER1 = 0x34b,
+/*20080827 to latest
+拳聖 %s의 달의 몬스터로 %s 가 지정됐습니다.
+%s has been designated as Gravity %s's Luna Monster.
+*/
+ MSG_STARMONSTER2 = 0x34c,
+/*20080827 to latest
+拳聖 %s의 별의 몬스터로 %s 가 지정됐습니다.
+%s has been designated as Gravity %s's Stellar Monster.
+*/
+ MSG_STARMONSTER3 = 0x34d,
+/*20080827 to latest
+拳聖 %s의 태양의 몬스터는 %s 입니다
+Gravity %s's Solar Monster: %s
+*/
+ MSG_STARMONSTER4 = 0x34e,
+/*20080827 to latest
+拳聖 %s의 달의 몬스터는 %s 입니다
+Gravity %s's Luna Monster: %s
+*/
+ MSG_STARMONSTER5 = 0x34f,
+/*20080827 to latest
+拳聖 %s의 별의 몬스터는 %s 입니다
+Gravity %s's Stellar Monster: %s
+*/
+ MSG_STARMONSTER6 = 0x350,
+/*20080827 to latest
+/window : 창 위치 이동시 다른 창과 달라붙는 속성이 들어갑니다 On Off
+/window: Display windows will snap/dock together. On | Off
+*/
+ MSG_EXPLAIN_WINDOW = 0x351,
+/*20080827 to latest
+창 위치 이동시 다른 창과 잘 붙습니다 [/wi ON]
+Display window docking enabled. [/wi ON]
+*/
+ MSG_WINDOW_ON = 0x352,
+/*20080827 to latest
+창 위치 이동시 다른 창과 붙으려는 속성을 가지지 않습니다 [/wi OFF]
+Display window docking disabled. [/wi OFF]
+*/
+ MSG_WINDOW_OFF = 0x353,
+/*20080827 to latest
+/pvpinfo : 자신의 PVP 승패와 PVP 포인트를 알 수 있습니다.
+/pvpinfo: shows your PVP result and PVP points.
+*/
+ MSG_EXPLAIN_PVP_INFO = 0x354,
+/*20080827 to latest
+현재 %d승, %d패, PVP포인트는 %d입니다.
+You have won %d times and have lost %d times in PVP. Current points %d.
+*/
+ MSG_PVP_INFO = 0x355,
+/*20080827 to latest
+매너 포인트를 성공적으로 보냈습니다.
+A manner point has been successfully aligned.
+*/
+ MSG_SEND_MANNER_POINT = 0x356,
+/*20080827 to latest
+현재 이곳은 PK 가능 지역입니다. 불의의 공격에 유의 하시기 바랍니다.
+You are in a PK area. Please beware of sudden attack.
+*/
+ MSG_PKZONE = 0x357,
+/*20080827 to latest
+게임가드 업데이트가 바이러스나 스파이웨어와의 충돌로 실패했습니다. 백신 프로그램/스파이웨어 제거 프로그램을 사용한 후 접속해 주십시기 바랍니다
+Game Guard update has been failed when either Virus or Spyware conflicted with. Please, Uninstall Spyware and Virus protection program before you log in.
+*/
+ MSG_NPGAMEMON_ERROR_100ERROR = 0x358,
+/*20080827 to latest
+윈도우 호환성 문제로 프로그램을 종료합니다. 게임을 다시 실행해 주시기 바랍니다
+Program has encountered an error related to Windows compatibility. Please start the game again.
+*/
+ MSG_NPGAMEMON_XP_COMPATIBILITY = 0x359,
+/*20080827 to latest
+채팅, 스킬, 아이템을 사용할수없게 되었습니다.
+You have been blocked from chatting, using skills and items.
+*/
+ MSG_PK_HONOR = 0x35a,
+/*20080827 to latest
+캐릭터 삭제 작업중이므로 접속이 일시적으로 제한됩니다.
+Login is temporarily unavailable while this character is being deleted.
+*/
+ MSG_DELETING_CHAR = 0x35b,
+/*20080827 to latest
+결혼 상대자의 캐릭터 삭제 작업중이므로 접속이 일시적으로 제한됩니다.
+Login is temporarily unavailable while your spouse character is being deleted.
+*/
+ MSG_DELETING_SPOUSE_CHAR = 0x35c,
+/*20080827 to latest
+Novice
+*/
+ MSG_NOVICE = 0x35d,
+/*20080827 to latest
+Swordman
+*/
+ MSG_SWORDMAN = 0x35e,
+/*20080827 to latest
+Magician
+Mage
+*/
+ MSG_MAGICIAN = 0x35f,
+/*20080827 to latest
+Archer
+*/
+ MSG_ARCHER = 0x360,
+/*20080827 to latest
+Acolyte
+*/
+ MSG_ACOLYTE = 0x361,
+/*20080827 to latest
+Merchant
+*/
+ MSG_MERCHANT = 0x362,
+/*20080827 to latest
+Thief
+*/
+ MSG_THIEF = 0x363,
+/*20080827 to latest
+Knight
+*/
+ MSG_KNIGHT = 0x364,
+/*20080827 to 20181128
+Prieset
+Priest
+20181205 to latest
+Priest
+*/
+ MSG_PRIEST = 0x365,
+/*20080827 to latest
+Wizerd
+Wizard
+*/
+ MSG_WIZARD = 0x366,
+/*20080827 to latest
+Blacksmith
+*/
+ MSG_BLACKSMITH = 0x367,
+/*20080827 to latest
+Hunter
+*/
+ MSG_HUNTER = 0x368,
+/*20080827 to latest
+Assassin
+*/
+ MSG_ASSASSIN = 0x369,
+/*20080827 to latest
+Novice
+*/
+ MSG_NOVICE_W = 0x36a,
+/*20080827 to latest
+Swordman
+*/
+ MSG_SWORDMAN_W = 0x36b,
+/*20080827 to latest
+Magician
+Mage
+*/
+ MSG_MAGICIAN_W = 0x36c,
+/*20080827 to latest
+Archer
+*/
+ MSG_ARCHER_W = 0x36d,
+/*20080827 to latest
+Acolyte
+*/
+ MSG_ACOLYTE_W = 0x36e,
+/*20080827 to latest
+Merchant
+*/
+ MSG_MERCHANT_W = 0x36f,
+/*20080827 to latest
+Thief
+*/
+ MSG_THIEF_W = 0x370,
+/*20080827 to latest
+Knight
+*/
+ MSG_KNIGHT_W = 0x371,
+/*20080827 to latest
+Prieset
+Priest
+*/
+ MSG_PRIEST_W = 0x372,
+/*20080827 to latest
+Wizerd
+Wizard
+*/
+ MSG_WIZARD_W = 0x373,
+/*20080827 to latest
+Blacksmith
+*/
+ MSG_BLACKSMITH_W = 0x374,
+/*20080827 to latest
+Hunter
+*/
+ MSG_HUNTER_W = 0x375,
+/*20080827 to latest
+Assassin
+*/
+ MSG_ASSASSIN_W = 0x376,
+/*20080827 to latest
+(%s)님을 아이로 입양신청
+Send an adoption request to %s
+*/
+ MSG_REQ_JOIN_BABY = 0x377,
+/*20080827 to latest
+아이가 되면 전승을 할수없고 스텟은 80이상 올릴수없게되며 HP와 SP가 줄어듭니다. 그래도 괜찮습니까?
+When you become a child, you will be unable to become a Transcendent Class character, all stats will be limited to a maximum of 80, and Max HP/SP will be reduced. Are you sure that you want to be adopted?
+*/
+ MSG_SUGGEST_BABY2 = 0x378,
+/*20080827 to latest
+모든 나쁜 상태이상이 제거 되었습니다.
+All abnormal status effects have been removed.
+*/
+ MSG_GOSPEL1 = 0x379,
+/*20080827 to latest
+1분간 모든 상태이상에 대해 면역이 됩니다.
+You will be immune to abnormal status effects for the next minute.
+*/
+ MSG_GOSPEL2 = 0x37a,
+/*20080827 to latest
+1분간 최대 생명력이 크게 늘어납니다.
+Your Max HP will stay increased for the next minute.
+*/
+ MSG_GOSPEL3 = 0x37b,
+/*20080827 to latest
+1분간 최대 마법력이 크게 늘어납니다.
+Your Max SP will stay increased for the next minute.
+*/
+ MSG_GOSPEL4 = 0x37c,
+/*20080827 to latest
+1분간 모든 능력이 크게 상승합니다.
+All of your Stats will stay increased for the next minute.
+*/
+ MSG_GOSPEL5 = 0x37d,
+/*20080827 to latest
+1분간 사용하는 무기에 성스러운 속성이 부여됩니다.
+Your weapon will remain blessed with Holy power for the next minute.
+*/
+ MSG_GOSPEL6 = 0x37e,
+/*20080827 to latest
+1분간 사용하는 갑옷에 성스러운 속성이 부여됩니다.
+Your armor will remain blessed with Holy power for the next minute.
+*/
+ MSG_GOSPEL7 = 0x37f,
+/*20080827 to latest
+10초간 방어력이 크게 상승합니다.
+Your Defense will stay increased for the next 10 seconds.
+*/
+ MSG_GOSPEL8 = 0x380,
+/*20080827 to latest
+1분간 공격력이 크게 증가합니다.
+Your Attack strength will be increased for the next minute.
+*/
+ MSG_GOSPEL9 = 0x381,
+/*20080827 to latest
+1분간 명중률과 회피율이 크게 상승합니다.
+Your Accuracy and Flee Rate will be increased for the next minute.
+*/
+ MSG_GOSPEL10 = 0x382,
+/*20080827 to latest
+아이를 한번 입양했던 부부는 추가 입양이 불가능합니다.
+You cannot adopt more than 1 child.
+*/
+ MSG_BABY1 = 0x383,
+/*20080827 to latest
+부부가 둘다 레벨70이 넘어야 아이를 입양할수있습니다.
+You must be at least character level 70 in order to adopt someone.
+*/
+ MSG_BABY2 = 0x384,
+/*20080827 to latest
+[POINT] 블랙스미스 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[Point] You have been rewarded with %d Blacksmith rank points. Your point total is %d.
+*/
+ MSG_BLACKSMITH_POINT = 0x385,
+/*20080827 to latest
+[POINT] 알케미스트 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[Point] You have been rewarded with %d Alchemist rank points. Your point total is %d.
+*/
+ MSG_ALCHEMIST_POINT = 0x386,
+/*20080827 to latest
+X
+Help me out~ Please~ T_T
+*/
+ MSG_SUPERNOVICE11 = 0x387,
+/*20080827 to latest
+X
+Help me out~ Please~ T_T
+*/
+ MSG_SUPERNOVICE12 = 0x388,
+/*20080827 to latest
+X
+Help me out~ Please~ T_T
+*/
+ MSG_SUPERNOVICE13 = 0x389,
+/*20080827 to latest
+X
+Help me out~ Please~ T_T
+*/
+ MSG_SUPERNOVICE14 = 0x38a,
+/*20080827 to latest
+/notalkmsg2 : 채팅내용을 채팅창에 표시하지 않습니다 (길드말 포함) On Off
+/notalkmsg2: Hides chat messages(including guild chat). On Off
+*/
+ MSG_EXPLAIN_NOTALKMSG2 = 0x38b,
+/*20080827 to latest
+채팅내용을 채팅창에 표시합니다 [/nm2 ON]
+Show chat messages. [/nm2 ON]
+*/
+ MSG_NOTALKMSG2_ON = 0x38c,
+/*20080827 to latest
+채팅내용을 채팅창에 표시하지않습니다 (길드말 포함) [/nm2 OFF]
+Hide chat messages(including guild chat) [/nm2 OFF]
+*/
+ MSG_NOTALKMSG2_OFF = 0x38d,
+/*20080827 to latest
+제련가능한 아이템
+Upgradable Weapons
+*/
+ MSG_REFINEITEMLIST = 0x38e,
+/*20080827 to latest
+제련한 무기 : %s
+Weapons upgraded: %s
+*/
+ MSG_ITEM_REFINE_SUCCEESS = 0x38f,
+/*20080827 to latest
+제련한 무기 : %s
+Weapons upgraded: %s
+*/
+ MSG_ITEM_REFINE_FAIL = 0x390,
+/*20080827 to latest
+무기제련스킬의 레벨이 부족해서 %s 제련을 할수없습니다.
+You cannot upgrade %s until you level up your Upgrade Weapon skill.
+*/
+ MSG_ITEM_REFINE_FAIL_LEVEL = 0x391,
+/*20080827 to latest
+제련에 필요한 아이템 (%s) 이 없으므로 제련할수없습니다.
+You lack a necessary item %s to upgrade this weapon.
+*/
+ MSG_ITEM_REFINE_FAIL_MATERIAL = 0x392,
+/*20080827 to latest
+완벽하게 코팅되어있어서 풀스트립이 통하지 않습니다.
+Full Divestment cannot pierce the target. The target is fully shielded.
+*/
+ MSG_FULLSTRIP = 0x393,
+/*20080827 to latest
+결혼한 캐릭터는 입양시킬수 없습니다.
+You cannot adopt a married person.
+*/
+ MSG_BABY3 = 0x394,
+/*20080827 to latest
+친구로 등록된 이름과 비슷하지만 등록된 이름이 아닙니다. 아는사람인지 확인하십시요.
+This name is not registered in your Friend List. Please check the name again.
+*/
+ MSG_ID_WARNING = 0x395,
+/*20080827 to latest
+/hi 또는 /hi 문장 : 친구로 등록된 캐릭터들에게 인사를 합니다.
+/hi or /hi message: Send greetings to people who are online and registered on your Friend List.
+*/
+ MSG_EXPLAIN_HI = 0x396,
+/*20080827 to latest
+길드원의 이름과 비슷하지만 길드원이 아닙니다. 길드원인지 확인하십시요.
+This character is not your guildsman. Please check the name again.
+*/
+ MSG_ID_WARNING_GUILD = 0x397,
+/*20080827 to latest
+9999만제니 이상 입력하셔도 가격은 9999만제니로 판매됩니다.
+Please be aware that the maximum selling price is fixed as 2 Billion. You cannot sell an item higher than that.
+*/
+ MSG_OVERPRICE9999 = 0x398,
+/*20080827 to latest
+친구의 귓속말은 [ Friend ] , 길드원은 [ Member ] 로 표시됩니다.
+Whispers from friends are displayed as [ Friend ], and ones from guildsmen are displayed as [ Member ].
+*/
+ MSG_EXPLAIN_SACHING1 = 0x399,
+/*20080827 to latest
+( From 캐릭터이름 : ) 이라고 표시 되는 귓속말은 친구나 길드원이 아닙니다.
+( From character name: ) is from an anonymous character who is neither your friend nor guildsman.
+*/
+ MSG_EXPLAIN_SACHING2 = 0x39a,
+/*20080827 to latest
+/blacksmith : 블랙스미스의 상위 10위권 랭킹을 보여줍니다.
+/blacksmith: Shows top 10 Blacksmiths in the server.
+*/
+ MSG_EXPLAIN_BLACKSMITH = 0x39b,
+/*20080827 to latest
+/alchemist : 알케미스트의 상위 10위권 랭킹을 보여줍니다.
+/alchemist: Shows top 10 Alchemists in the server.
+*/
+ MSG_EXPLAIN_ALCHEMIST = 0x39c,
+/*20080827 to latest
+ALT+Y : 여러가지 명령어를 쉽게 쓸수있는 윈도우가 열립니다.
+ALT+Y: Opens a window which allows you to use various commands with ease.
+*/
+ MSG_EXPLAIN_ALTY = 0x39d,
+/*20080827 to latest
+[POINT] 태권미션 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[POINT] You have been rewarded with %d Tae-Kwon Mission rank points. Your point total is %d.
+*/
+ MSG_TAEKWON_POINT = 0x39e,
+/*20080827 to latest
+[태권미션] Target Monster : %s (%d%%)
+[Taekwon Mission] Target Monster: %s (%d%%)
+*/
+ MSG_TAEKWON_MISSION = 0x39f,
+/*20080827 to latest
+게임가드 초기화 에러 : %lu
+Error - Failed to initialize GameGuard: %lu
+*/
+ MSG_INIT_ERROR = 0x3a0,
+/*20080827 to latest
+스피드핵이 감지되었습니다.
+Speed Hack has been detected.
+*/
+ MSG_SPEEDHACK_DETECT = 0x3a1,
+/*20080827 to latest
+불법 프로그램 (%s) 가 발견되었습니다
+The illegal program, (%s) has been detected.
+*/
+ MSG_GAMEHACK_DETECT = 0x3a2,
+/*20080827 to latest
+게임이나 게임가드가 변조되었습니다.
+The Game or Gameguard has been cracked.
+*/
+ MSG_GAMEHACK_DOUBT = 0x3a3,
+/*20080827 to latest
+게임가드가 실행 중 입니다. 잠시 후에 다시 실행해보시기 바랍니다.
+GameGuard is currently running. Please wait for sometime and restart the game.
+*/
+ MSG_ERROR_EXIST = 0x3a4,
+/*20080827 to latest
+게임이 중복 실행되었거나 게임가드가 이미 실행 중 입니다. 게임 종료 후 다시 실행해보시기 바랍니다.
+The Game or GameGuard is already running. Please close the game and restart the game.
+*/
+ MSG_GAME_EXIST = 0x3a5,
+/*20080827 to latest
+게임가드 초기화 에러입니다. 재부팅 후 다시 실행해보거나 충돌할 수 있는 다른 프로그램들을 종료한 후 실행해 보시기 바랍니다.
+Failed to intialize GameGuard. Please try again after rebooting the system or closing other programs.
+*/
+ MSG_ERROR_INIT = 0x3a6,
+/*20080827 to latest
+바이러스 및 해킹툴 검사 모듈 로딩에 실패 했습니다. 메모리 부족이거나 바이러스에 의한 감염일 수 있습니다.
+Failed to load the scan module of virus and hacking tool. It's caused by lack of memory or PC virus infection.
+*/
+ MSG_ERROR_NPSCAN = 0x3a7,
+/*20080827 to latest
+호문클루스 정보
+Homunculus Info
+*/
+ MSG_HOMUN_INFO = 0x3a8,
+/*20080827 to latest
+호문클루스 스킬목록
+Homunculus Skill List
+*/
+ MSG_HOMUN_SKILLLIST = 0x3a9,
+/*20080827 to latest
+호문클루스의 이름은 영문 23, 한글 11자 이내로 정해 주세요.
+Please give your Homunculus a name no longer than 23 letters.
+*/
+ MSG_HOMUN_NAME_IN23 = 0x3aa,
+/*20080827 to latest
+이름은 단 한번만 바꿀수 있습니다. 호문클루스의 이름을 ^0000ff^0000ff %s^000000^000000 로 수정합니다. 계속 하시겠습니까?
+You can name a Homunculus only once. You have entered the name, ^0000ff%s^000000. Would you like to continue?
+*/
+ MSG_HOMUN_NAME_CHANGE_ONLYONCE = 0x3ab,
+/*20080827 to latest
+지금은 부재중~
+(Away)
+*/
+ MSG_AUTO_MSG = 0x3ac,
+/*20080827 to latest
+[자동응답]
+[Automated Message]
+*/
+ MSG_AUTO_MSG2 = 0x3ad,
+/*20080827 to latest
+부재시 타인의 귓말에 자동응답합니다.
+Send an automated message while you are away.
+*/
+ MSG_AUTO_MSG_ON = 0x3ae,
+/*20080827 to latest
+부재시 타인의 귓말에 자동응답하지 않습니다.
+Cancel automated away message.
+*/
+ MSG_AUTO_MSG_OFF = 0x3af,
+/*20080827 to latest
+자동 응답 메시지를 입력하세요.
+Please enter Away Message.
+*/
+ MSG_ENTER_AUTO_MSG = 0x3b0,
+/*20080827 to latest
+/번쩍
+/fsh
+*/
+ MSG_EMOTION_SPARK = 0x3b1,
+/*20080827 to latest
+/빙빙
+/spin
+*/
+ MSG_EMOTION_CONFUSE = 0x3b2,
+/*20080827 to latest
+/하아
+/sigh
+*/
+ MSG_EMOTION_OHNO = 0x3b3,
+/*20080827 to latest
+/덤덤
+/dum
+*/
+ MSG_EMOTION_HUM = 0x3b4,
+/*20080827 to latest
+/시끌
+/crwd
+*/
+ MSG_EMOTION_BLABLA = 0x3b5,
+/*20080827 to latest
+/좌절
+/desp
+*/
+ MSG_EMOTION_OTL = 0x3b6,
+/*20080827 to latest
+/주사위
+/dice
+*/
+ MSG_EMOTION_DICE = 0x3b7,
+/*20080827 to latest
+/pk : 학살자의 상위 10위권 랭킹을 보여줍니다.
+/pk: Shows top 10 Slayers in the server.
+*/
+ MSG_EXPLAIN_KILLER_RANK = 0x3b8,
+/*20080827 to latest
+[POINT] 학살자 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[POINT] You have been rewarded with %d Slayer rank points. Your point total is %d.
+*/
+ MSG_KILLER_POINT = 0x3b9,
+/*20080827 to latest
+진화 가능
+Evolution Available
+*/
+ MSG_HOMUN_EVOLVE = 0x3ba,
+/*20080827 to latest
+^ff0000^ff0000호문클루스를 삭제합니다.^000000^000000 삭제하실 경우 지금까지 키운 내역이 모두 삭제됩니다. 계속하시겠습니까?
+You have decided to delete this Homunculus ^ff0000^ff0000. When deleted, the homunculus and its history will be deleted and they cannot be restored in the future. Would you like to continue?
+*/
+ MSG_DELETE_HOMUN = 0x3bb,
+/*20080827 to latest
+호문의 상태를 파일에 저장합니다.
+Save Homunculus status as a file.
+*/
+ MSG_TRACE_AI_ON = 0x3bc,
+/*20080827 to latest
+호문의 상태를 파일에 저장하지 않습니다.
+Do not save Homunculus status as a file.
+*/
+ MSG_TRACE_AI_OFF = 0x3bd,
+/*20080827 to latest
+Crusader
+*/
+ MSG_CRUSADER = 0x3be,
+/*20080827 to latest
+Monk
+*/
+ MSG_MONK = 0x3bf,
+/*20080827 to latest
+Sage
+*/
+ MSG_SAGE = 0x3c0,
+/*20080827 to latest
+Rouge
+Rogue
+*/
+ MSG_ROGUE = 0x3c1,
+/*20080827 to latest
+Alchemist
+*/
+ MSG_ALCHEMIST = 0x3c2,
+/*20080827 to latest
+Bard
+*/
+ MSG_BARD = 0x3c3,
+/*20080827 to latest
+Crusader_W
+Crusader
+*/
+ MSG_CRUSADER_W = 0x3c4,
+/*20080827 to latest
+Monk_W
+Monk
+*/
+ MSG_MONK_W = 0x3c5,
+/*20080827 to latest
+Sage_W
+Sage
+*/
+ MSG_SAGE_W = 0x3c6,
+/*20080827 to latest
+Rouge_W
+Rogue
+*/
+ MSG_ROGUE_W = 0x3c7,
+/*20080827 to latest
+Alchemist_W
+Alchemist
+*/
+ MSG_ALCHEMIST_W = 0x3c8,
+/*20080827 to latest
+Dancer
+*/
+ MSG_DANCER = 0x3c9,
+/*20080827 to latest
+Novice High
+High Novice
+*/
+ MSG_NOVICE_H = 0x3ca,
+/*20080827 to latest
+Swordman High
+High Swordman
+*/
+ MSG_SWORDMAN_H = 0x3cb,
+/*20080827 to latest
+Magician High
+High Mage
+*/
+ MSG_MAGICIAN_H = 0x3cc,
+/*20080827 to latest
+Archer High
+High Archer
+*/
+ MSG_ARCHER_H = 0x3cd,
+/*20080827 to latest
+Acolyte High
+High Acolyte
+*/
+ MSG_ACOLYTE_H = 0x3ce,
+/*20080827 to latest
+Merchant High
+High Merchant
+*/
+ MSG_MERCHANT_H = 0x3cf,
+/*20080827 to latest
+Thief High
+High Thief
+*/
+ MSG_THIEF_H = 0x3d0,
+/*20080827 to latest
+Novice High_W
+High Novice
+*/
+ MSG_NOVICE_H_W = 0x3d1,
+/*20080827 to latest
+Swordman High_W
+High Swordman
+*/
+ MSG_SWORDMAN_H_W = 0x3d2,
+/*20080827 to latest
+Magician High_W
+High Mage
+*/
+ MSG_MAGICIAN_H_W = 0x3d3,
+/*20080827 to latest
+Archer High_W
+High Archer
+*/
+ MSG_ARCHER_H_W = 0x3d4,
+/*20080827 to latest
+Acolyte High_W
+High Acolyte
+*/
+ MSG_ACOLYTE_H_W = 0x3d5,
+/*20080827 to latest
+Merchant High_W
+High Merchant
+*/
+ MSG_MERCHANT_H_W = 0x3d6,
+/*20080827 to latest
+Thief High_W
+High Thief
+*/
+ MSG_THIEF_H_W = 0x3d7,
+/*20080827 to latest
+Lord Knight
+*/
+ MSG_KNIGHT_H = 0x3d8,
+/*20080827 to latest
+High Priest
+*/
+ MSG_PRIEST_H = 0x3d9,
+/*20080827 to latest
+High Wizard
+*/
+ MSG_WIZARD_H = 0x3da,
+/*20080827 to latest
+White Smith
+WhiteSmith
+*/
+ MSG_BLACKSMITH_H = 0x3db,
+/*20080827 to latest
+Sniper
+*/
+ MSG_HUNTER_H = 0x3dc,
+/*20080827 to 20181128
+Saaassin Cross
+Assassin Cross
+20181205 to latest
+Assassin Cross
+*/
+ MSG_ASSASSIN_H = 0x3dd,
+/*20080827 to latest
+Lord Knight_W
+Lord Knight
+*/
+ MSG_KNIGHT_H_W = 0x3de,
+/*20080827 to latest
+High Priest_W
+High Priest
+*/
+ MSG_PRIEST_H_W = 0x3df,
+/*20080827 to latest
+High Wizard_W
+High Wizard
+*/
+ MSG_WIZARD_H_W = 0x3e0,
+/*20080827 to latest
+White Smith_W
+WhiteSmith
+*/
+ MSG_BLACKSMITH_H_W = 0x3e1,
+/*20080827 to latest
+Sniper_W
+Sniper
+*/
+ MSG_HUNTER_H_W = 0x3e2,
+/*20080827 to 20181128
+Saaassin Cross_W
+Assassin Cross
+20181205 to latest
+Assassin Cross_W
+*/
+ MSG_ASSASSIN_H_W = 0x3e3,
+/*20080827 to latest
+Paladin
+*/
+ MSG_CRUSADER_H = 0x3e4,
+/*20080827 to latest
+Champion
+*/
+ MSG_MONK_H = 0x3e5,
+/*20080827 to latest
+Professor
+Scholar
+*/
+ MSG_SAGE_H = 0x3e6,
+/*20080827 to latest
+Stalker
+*/
+ MSG_ROGUE_H = 0x3e7,
+/*20080827 to latest
+Creator
+Biochemist
+*/
+ MSG_ALCHEMIST_H = 0x3e8,
+/*20080827 to latest
+Clown
+Minstrel
+*/
+ MSG_BARD_H = 0x3e9,
+/*20080827 to latest
+Paladin_W
+Paladin
+*/
+ MSG_CRUSADER_H_W = 0x3ea,
+/*20080827 to latest
+Champion_W
+Champion
+*/
+ MSG_MONK_H_W = 0x3eb,
+/*20080827 to latest
+Professor_W
+Professor
+*/
+ MSG_SAGE_H_W = 0x3ec,
+/*20080827 to latest
+Stalker_W
+Stalker
+*/
+ MSG_ROGUE_H_W = 0x3ed,
+/*20080827 to latest
+Creator_W
+Creator
+*/
+ MSG_ALCHEMIST_H_W = 0x3ee,
+/*20080827 to latest
+Gypsy
+*/
+ MSG_DANCER_H = 0x3ef,
+/*20080827 to latest
+비밀번호가 지정되어 있지 않습니다. 새로운 비밀번호를 지정하시겠습니까?
+You have not set a password yet. Would you like to create one now?
+*/
+ MSG_STORE_PASSWORD_REQ = 0x3f0,
+/*20080827 to latest
+비밀번호를 3회 틀려셨습니다. 나중에 다시 시도해 주세요.
+You have incorrectly entered the password 3 times. Please try again later.
+*/
+ MSG_STORE_PASSWORD_PENALTY = 0x3f1,
+/*20080827 to latest
+비밀번호 변경이 실패하였습니다.
+Password creation has failed.
+*/
+ MSG_STORE_PASSWORD_CHANGE_NG = 0x3f2,
+/*20080827 to latest
+비밀번호는 4자리 이상 8자리이하여야만 합니다.
+Password must be 4~8 letters long.
+*/
+ MSG_STORE_PASSWORD_4_8 = 0x3f3,
+/*20080827 to latest
+비밀번호
+Password
+*/
+ MSG_STORE_PASSWORD = 0x3f4,
+/*20080827 to latest
+신규 비밀번호
+New Password
+*/
+ MSG_STORE_NEW_PASSWORD = 0x3f5,
+/*20080827 to latest
+확인 비밀번호
+Confirm Password
+*/
+ MSG_STORE_RENEW_PASSWORD = 0x3f6,
+/*20080827 to latest
+비밀번호 변경이 완료되었습니다.
+Password has been changed.
+*/
+ MSG_STORE_PASSWORD_CHANGE_OK = 0x3f7,
+/*20080827 to latest
+비밀번호가 서로 다릅니다.
+Password does not match.
+*/
+ MSG_STORE_PASSWORD_MISMATCH = 0x3f8,
+/*20080827 to latest
+비밀번호 입력
+Enter Password
+*/
+ MSG_STORE_PASSWORD_INPUT = 0x3f9,
+/*20080827 to latest
+호문이 아사 직전입니다! 먹이를 주지 않으면 가출하게됩니다.
+Your Homunculus is starving. Please feed it, otherwise it will leave you.
+*/
+ MSG_HOMUN_HUNGRY = 0x3fa,
+/*20080827 to latest
+경험치
+EXP
+*/
+ MSG_HOMUN_EXP = 0x3fb,
+/*20080827 to 20110526
+[EVENT] 이벤트에 당첨되셨습니다. 게임내에서 아이템을 지급받으십시요.
+20110531 to latest
+수령하지 않은 아이템이 존재합니다. 알베르타의 존다 기획사 직원을 찾아주세요. ^ff0000※ 아이템 수령 기간이 지나면 아이템이 소실 됩니다!^000000
+[EVENT] You have won an event prize. Please claim your prize in game.
+*/
+ MSG_EVENT_RESULT = 0x3fc,
+/*20080827 to latest
+싫어함
+Hate
+*/
+ MSG_HATE = 0x3fd,
+/*20080827 to latest
+매우싫어함
+Hate with a Passion
+*/
+ MSG_VERYHATE = 0x3fe,
+/*20080827 to latest
+호문클루스가 사용자 인공지능으로 동작합니다.
+Homunculus has been customized.
+*/
+ MSG_HOMUN_USERAI_ON = 0x3ff,
+/*20080827 to latest
+호문클루스가 기본 인공지능으로 동작합니다.
+Homunculus has been activated with the basic AI.
+*/
+ MSG_HOMUN_USERAI_OFF = 0x400,
+/*20080827 to latest
+편지목록
+Mail List
+*/
+ MSG_MAIL_LIST = 0x401,
+/*20080827 to latest
+편지쓰기
+Write Mail
+*/
+ MSG_MAIL_WRITE = 0x402,
+/*20080827 to latest
+편지읽기
+Read Mail
+*/
+ MSG_MAIL_READ = 0x403,
+/*20080827 to latest
+한번 지정하시면 변경이 불가능합니다! 이 맵으로 지정하시겠습니까?
+You cannot change a map's designation once it is designated. Are you sure that you want to designate this map?
+*/
+ MSG_STARPLACE_ACCEPT = 0x404,
+/*20080827 to latest
+메일 아이템을 수령했습니다.
+Item has been added in the Item Window.
+*/
+ MSG_MAIL_ADD_ITEM_SUCCESS = 0x405,
+/*20080827 to latest
+메일 아이템을 수령하지 못했습니다.
+You have failed to add the item in the Item Window.
+*/
+ MSG_MAIL_ADD_ITEM_FAILURE = 0x406,
+/*20080827 to latest
+메일 보내기가 성공하였습니다.
+You have successfully mailed a message.
+*/
+ MSG_MAIL_SEND_SUCCESS = 0x407,
+/*20080827 to latest
+메일 보내기가 실패하였습니다. 받는 사람이 존재하지 않습니다.
+You have failed to mail a message. Recipient does not exist.
+*/
+ MSG_MAIL_USER_NOT_FOUND = 0x408,
+/*20080827 to latest
+[태양과 달과 별의 천사] 지정했던 장소들과 몬스터들이 초기화됐습니다!
+[Solar, Lunar and Stellar Angel] Designated places and monsters have been reset.
+*/
+ MSG_STAR_ANGEL = 0x409,
+/*20080827 to latest
+경매 등록이 실패했습니다.
+The minimum starting bid for auctions is 10,000,000 zeny.
+*/
+ MSG_AUCTION_ADD_FALSE = 0x40a,
+/*20080827 to latest
+경매 등록이 성공했습니다.
+You have successfully started a new auction.
+*/
+ MSG_AUCTION_ADD_TRUE = 0x40b,
+/*20080827 to latest
+해당 경매가 취소되었습니다.
+The auction has been canceled.
+*/
+ MSG_AUCTION_ADD_CANCEL = 0x40c,
+/*20080827 to latest
+입찰자가 있는 경매는 취소할 수 없습니다.
+An auction with at least one bidder cannot be canceled.
+*/
+ MSG_AUCTION_ADD_CANCEL_FALSE = 0x40d,
+/*20080827 to latest
+메일 삭제가 성공하였습니다.
+Mail has been successfully deleted.
+*/
+ MSG_MAIL_DELETE_SUCCESS = 0x40e,
+/*20080827 to latest
+메일 삭제가 실패하였습니다.
+You have failed to delete the mail.
+*/
+ MSG_MAIL_DELETE_FAILURE = 0x40f,
+/*20080827 to latest
+던지는 단검이 장착되었습니다.
+You have equipped throwing daggers.
+*/
+ MSG_MSG_KNIFE_EQUIPMENT_SUCCESS = 0x410,
+/*20080827 to latest
+%s 님이 로그인했습니다.
+%s has logged in.
+*/
+ MSG_LOGIN_FRIEND = 0x411,
+/*20080827 to latest
+%s 님이 로그아웃했습니다.
+%s has logged out.
+*/
+ MSG_LOGOUT_FRIEND = 0x412,
+/*20080827 to latest
+/loginout : 길드원과 친구들의 접속관련 메세지를 보여줍니다. On Off
+/loginout: Shows guildsmen and friends online status. On Off
+*/
+ MSG_EXPLAIN_LOGINOUT = 0x413,
+/*20080827 to latest
+친구들의 접속관련 메세지를 대화창에 표시합니다. [/li ON]
+Display online status of friends in Chat Window. [/li ON]
+*/
+ MSG_LOGINOUT_ON = 0x414,
+/*20080827 to latest
+친구들의 접속관련 메세지를 대화창에 표시하지않습니다. [/li OFF]
+Do not display online status of friends in Chat Window. [/li OFF]
+*/
+ MSG_LOGINOUT_OFF = 0x415,
+/*20080827 to latest
+이미 실행중입니다.
+It is already running.
+*/
+ MSG_SGP_CODE_ALREADY_RUNNING = 0x416,
+/*20080827 to latest
+매크로 사용이 감지되었습니다.
+Use of Macro program has been detected.
+*/
+ MSG_SGP_CODE_DETECTED_MACRO = 0x417,
+/*20080827 to latest
+스피드해킹이 감지되었습니다.
+Use of Speed hack has been detected.
+*/
+ MSG_SGP_CODE_DETECTED_SPEEDHACK = 0x418,
+/*20080827 to latest
+API 후킹이 감지되었습니다.
+API Hooking has been detected.
+*/
+ MSG_SGP_CODE_DETECTED_APIHOOK = 0x419,
+/*20080827 to latest
+메시지 후킹이 감지되었습니다.
+Message Hooking has been detected.
+*/
+ MSG_SGP_CODE_DETECTED_MSGHOOK = 0x41a,
+/*20080827 to latest
+모듈이 변조 또는 손상되었거나 버전이 일치하지 않습니다.
+Module has been modified or damaged or its version does not match.
+*/
+ MSG_SGP_CODE_NOT_EQUALENCRYPTEDDATA = 0x41b,
+/*20080827 to latest
+(태국)귀하는 게임방 과금으로 로그인 하셨습니다.
+(Thailand) You have logged in game with PC cafe payment.
+*/
+ MSG_BILLING_PCB = 0x41c,
+/*20080827 to latest
+이전
+Prev
+*/
+ MSG_PREV_PAGE = 0x41d,
+/*20080827 to latest
+다음
+Next
+*/
+ MSG_NEXT_PAGE = 0x41e,
+/*20080827 to latest
+경매
+Auction
+*/
+ MSG_AUCTION = 0x41f,
+/*20080827 to latest
+물품보기
+Product List
+*/
+ MSG_AUCTION_VIEW = 0x420,
+/*20080827 to latest
+등록하기
+Register
+*/
+ MSG_AUCTION_ADD = 0x421,
+/*20080827 to latest
+판매 진행상태
+Sale Status
+*/
+ MSG_AUCTION_SELL = 0x422,
+/*20080827 to latest
+구매 진행상태
+Purchase Status
+*/
+ MSG_AUCTION_BUY = 0x423,
+/*20080827 to latest
+아이템
+Item
+*/
+ MSG_ITEM2 = 0x424,
+/*20080827 to latest
+아이템명
+Name
+*/
+ MSG_ITEM_NAME2 = 0x425,
+/*20080827 to latest
+가격 / 즉시구입가격
+Current Bid / Max Bid
+*/
+ MSG_ITEM_PRICE = 0x426,
+/*20080827 to latest
+판매자
+Seller
+*/
+ MSG_SELLER = 0x427,
+/*20080827 to latest
+구매자
+Buyer
+*/
+ MSG_BUYER = 0x428,
+/*20080827 to latest
+종료시간
+End Time
+*/
+ MSG_FINISH_TIME = 0x429,
+/*20080827 to latest
+%m월 %d일 %H시
+%m %d %H
+*/
+ MSG_TIME_TYPE = 0x42a,
+/*20080827 to latest
+시간설정
+Time (Hr)
+*/
+ MSG_SET_TIME = 0x42b,
+/*20080827 to latest
+수수료
+Fee
+*/
+ MSG_CHARGE = 0x42c,
+/*20080827 to 20170906
+검색 된 아이템이 없습니다.
+20170913 to latest
+검색된 아이템이 없습니다.
+No items found in search.
+*/
+ MSG_NOTHING_SEARCH_ITEM = 0x42d,
+/*20080827 to latest
+현재 판매중인 아이템이 없습니다.
+Your Sale List is empty.
+*/
+ MSG_NOTHING_SEARCH_SELL_ITEM = 0x42e,
+/*20080827 to latest
+현재 구매중인 아이템이 없습니다.
+Your Purchase List is empty.
+*/
+ MSG_NOTHING_SEARCH_BUY_ITEM = 0x42f,
+/*20080827 to latest
+경매정보가 정확하지 않습니다.
+Auction Information is incorrect or incomplete.
+*/
+ MSG_ERROR_AUCTION_ITEM_INFO = 0x430,
+/*20080827 to latest
+경매에 등록할 아이템 정보가 없습니다.
+You must drag and drop an item from your Inventory into the Register Window to begin a new auction.
+*/
+ MSG_NOTHING_AUCTION_ITEM_INFO = 0x431,
+/*20080827 to latest
+이미 등록된 경매입니다.
+The auction has already been registered.
+*/
+ MSG_ERROR_ADD_AUCTION = 0x432,
+/*20080827 to latest
+제시가격
+Starting Bid
+*/
+ MSG_PRICE = 0x433,
+/*20080827 to latest
+구입희망가격
+Current Bid
+*/
+ MSG_PRICE2 = 0x434,
+/*20080827 to latest
+즉시구입가격
+Buy Now Price
+*/
+ MSG_PRICE3 = 0x435,
+/*20080827 to latest
+현재소지제니
+Your Current Zeny
+*/
+ MSG_PRICE4 = 0x436,
+/*20080827 to latest
+현재최고가격
+Highest Bid
+*/
+ MSG_PRICE5 = 0x437,
+/*20080827 to latest
+이전입찰가격
+Previous Bid
+*/
+ MSG_PRICE6 = 0x438,
+/*20080827 to latest
+추가입찰가격
+Next Bid
+*/
+ MSG_PRICE7 = 0x439,
+/*20080827 to latest
+구입하시겠습니까?
+Press buy to confirm.
+*/
+ MSG_BUY_ACTION_ITEM = 0x43a,
+/*20080827 to latest
+이 가격에 판매하시겠습니까?
+Would you like to sell this item?
+*/
+ MSG_SELL_ACTION_ITEM = 0x43b,
+/*20080827 to latest
+입찰하기
+Place Bid
+*/
+ MSG_BUY_AUCTION = 0x43c,
+/*20080827 to latest
+즉시구매하기
+Buy Now
+*/
+ MSG_BUY_AUCTION2 = 0x43d,
+/*20080827 to latest
+경매종료하기
+End the Auction
+*/
+ MSG_BUY_AUCTION3 = 0x43e,
+/*20080827 to latest
+재입찰하기
+Place another Bid
+*/
+ MSG_FINISH_AUCTION = 0x43f,
+/*20080827 to latest
+해당 경매에 대한 입찰이 성공했습니다.
+You have placed a bid.
+*/
+ MSG_RESULT_BUY_TRUE = 0x440,
+/*20080827 to latest
+해당 경매에 대한 입찰이 실패했습니다.
+You have failed to place a bid.
+*/
+ MSG_RESULT_BUY_FALSE = 0x441,
+/*20080827 to latest
+제니가 충분하지 않습니다.
+You do not have enough zeny.
+*/
+ MSG_RESULT_BUY_FALSE_MONEY = 0x442,
+/*20080827 to latest
+방어구
+Armors
+*/
+ MSG_EQUIP = 0x443,
+/*20080827 to latest
+카드
+Card
+*/
+ MSG_CARD = 0x444,
+/*20080827 to latest
+기타
+Other
+*/
+ MSG_ETC = 0x445,
+/*20080827 to latest
+경매번호
+Bid
+*/
+ MSG_AUCTION_NUM = 0x446,
+/*20080827 to latest
+검색
+Search
+*/
+ MSG_AUCTION_SEARCH = 0x447,
+/*20080827 to latest
+해당 경매를 종료했습니다.
+You have ended the auction.
+*/
+ MSG_RESULT_MY_SELL_STOP_TRUE = 0x448,
+/*20080827 to latest
+해당 경매를 종료 할 수 없습니다.
+You cannot end the auction.
+*/
+ MSG_RESULT_MY_SELL_STOP_FALSE = 0x449,
+/*20080827 to latest
+경매 번호가 정확하지 않습니다.
+Bid Number is incorrect.
+*/
+ MSG_RESULT_AUCTION_ID_FALSE = 0x44a,
+/*20080827 to latest
+받는이
+To
+*/
+ MSG_SENDER = 0x44b,
+/*20080827 to latest
+제 목
+Title
+*/
+ MSG_TITLE2 = 0x44c,
+/*20080827 to latest
+새 메일이 도착하였습니다.
+You have received a message in the mail.
+*/
+ MSG_NEW_MAIL = 0x44d,
+/*20080827 to latest
+검색중입니다.
+Searching...
+*/
+ MSG_SEARCHING_ITEM = 0x44e,
+/*20080827 to latest
+더 이상 경매 등록할 수 없습니다. 경매 등록은 최대 5개까지 가능합니다.
+You cannot register more than 5 items in an auction at a time.
+*/
+ MSG_AUCTION_ADD_OVER = 0x44f,
+/*20080827 to latest
+더 이상 경매 물품에 입찰할 수 없습니다. 경매 물품 입찰은 최대 5개까지 가능합니다.
+You cannot place more than 5 bids at a time.
+*/
+ MSG_RESULT_BUY_OVER = 0x450,
+/*20080827 to latest
+삭제하려는 메일에 수령하지 않은 아이템이 있습니다.
+Please accept all items from your mail before deleting.
+*/
+ MSG_MAIL_DELETE_ERROR = 0x451,
+/*20080827 to latest
+메일 제목을 입력하여 주십시오.
+Please enter a title.
+*/
+ MSG_MAIL_SEND_ERROR = 0x452,
+/*20080827 to latest
+/shopping : 클릭 한번으로 상점을 열고 상점이름 오른쪽 클릭으로 상점을 닫습니다 On Off
+/shopping: Enables you to open a shop with a single left-click and close your shop with a single right-click. On Off
+*/
+ MSG_EXPLAIN_SHOPPING = 0x453,
+/*20080827 to latest
+클릭 한번으로 상점을 열고 상점이름을 오른쪽 클릭해서 상점을 닫을수있습니다. [/sh ON]
+You can now open a shop with a single left-click and close your shop with a single right-click. [sh ON].
+*/
+ MSG_SHOPPING_ON = 0x454,
+/*20080827 to latest
+더블클릭 으로 상점을 열게됩니다. [/sh OFF]
+You can open a shop by double-clicking. [/sh OFF]
+*/
+ MSG_SHOPPING_OFF = 0x455,
+/*20080827 to latest
+메일을 보내려면, 제니 입력을 완료해야 합니다.
+Please enter zeny amount before sending mail.
+*/
+ MSG_MAIL_SEND_ERROR2 = 0x456,
+/*20080827 to latest
+경매 수수료가 부족합니다.
+You do not have enough zeny to pay the Auction Fee.
+*/
+ MSG_ADD_MONEY_FALSE = 0x457,
+/*20080827 to latest
+상태보기
+View Status
+*/
+ MSG_HOMUN_SHOWINFO = 0x458,
+/*20080827 to latest
+먹이주기
+Feed
+*/
+ MSG_HOMUN_FEEDING = 0x459,
+/*20080827 to latest
+대기
+Stand By
+*/
+ MSG_HOMUN_WAITING = 0x45a,
+/*20080827 to latest
+슈퍼노비스(남)
+Super Novice (Male)
+*/
+ MSG_JOB_SUPERNOVICE_M = 0x45b,
+/*20080827 to latest
+슈퍼노비스(여)
+Super Novice (Female)
+*/
+ MSG_JOB_SUPERNOVICE_F = 0x45c,
+/*20080827 to latest
+태권소년
+Taekwon Boy
+*/
+ MSG_JOB_TAEKWON_M = 0x45d,
+/*20080827 to latest
+태권소녀
+Taekwon Girl
+*/
+ MSG_JOB_TAEKWON_F = 0x45e,
+/*20080827 to latest
+권성(남)
+Taekwon Master (Male)
+*/
+ MSG_KWONSUNG_M = 0x45f,
+/*20080827 to latest
+권성(여)
+Taekwon Master (Female)
+*/
+ MSG_KWONSUNG_F = 0x460,
+/*20080827 to latest
+소울링커(남)
+Soul Linker (Male)
+*/
+ MSG_SOULLINGKER_M = 0x461,
+/*20080827 to latest
+소울링커(여)
+Soul Linker (Female)
+*/
+ MSG_SOULLINGKER_F = 0x462,
+/*20080827 to latest
+PC방요금제로 2개이상의 계정이 접속되고있습니다. 확인후 다시 사용하시기 바랍니다.
+Please check the connection, more than 2 accounts are connected with Internet Cafe Time Plan.
+*/
+ MSG_BAN_PC_IP_UNFAIR = 0x463,
+/*20080827 to latest
+귀하는 월정액 요금제 사용자 입니다. (남은기간 : %d일)
+Your account is using monthly payment. (Remaining day: %d day)
+*/
+ MSG_BILLING_1 = 0x464,
+/*20080827 to latest
+귀하는 정량 요금제 사용자 입니다. (남은시간 : %d시간 %분 %초)
+Your account is using time limited. (Remaining time: %d hour %d minute %d second)
+*/
+ MSG_BILLING_2 = 0x465,
+/*20080827 to latest
+해당 아이템은 메일에 첨부 할수 없는 아이템입니다.
+This item cannot be mailed.
+*/
+ MSG_MAIL_ITEM_ADD_FAILED = 0x466,
+/*20080827 to latest
+더이상 아이템을 가질수 없습니다. 아이템은 메일로 보관하겠습니다.
+You cannot accept any more items. Please try again later.
+*/
+ MSG_MAIL_ADD_ITEM_OVER_FAILURE = 0x467,
+/*20080827 to latest
+남성
+Male
+*/
+ MSG_PTSEX1 = 0x468,
+/*20080827 to latest
+여성
+Female
+*/
+ MSG_PTSEX2 = 0x469,
+/*20080827 to latest
+새로운 유저입니다
+New User.
+*/
+ MSG_PT_NEWUSER = 0x46a,
+/*20080827 to latest
+E-mail은 캐릭터를 지울때 필요합니다.
+E-mail address is required to delete a character.
+*/
+ MSG_PT_ACINFO = 0x46b,
+/*20080827 to latest
+정확한 형식으로 입력해 주세요.
+Please enter the correct information.
+*/
+ MSG_PT_ACINFO2 = 0x46c,
+/*20080827 to latest
+이 키를 사용하세요
+Please use this key.
+*/
+ MSG_PT_NEWKEYINFO = 0x46d,
+/*20080827 to latest
+정확한 카드 패스워드를 다시 입력해주세요
+Please enter the correct card password.
+*/
+ MSG_PT_FAIL_CARDPASS = 0x46e,
+/*20080827 to latest
+PT정보
+PT Info
+*/
+ MSG_PTID1 = 0x46f,
+/*20080827 to latest
+PT_ID는 %s
+PT_ID is %s
+*/
+ MSG_PTID2 = 0x470,
+/*20080827 to latest
+NUM_ID는 %s
+NUM_ID is %s
+*/
+ MSG_PTID3 = 0x471,
+/*20080827 to latest
+잊지않게 주의하세요
+Please don't forget this information.
+*/
+ MSG_PTID4 = 0x472,
+/*20080827 to latest
+1001
+*/
+ MSG_PT_ERROR_1001 = 0x473,
+/*20080827 to latest
+1002
+*/
+ MSG_PT_ERROR_1002 = 0x474,
+/*20080827 to latest
+1003
+*/
+ MSG_PT_ERROR_1003 = 0x475,
+/*20080827 to latest
+1004
+*/
+ MSG_PT_ERROR_1004 = 0x476,
+/*20080827 to latest
+1006
+*/
+ MSG_PT_ERROR_1006 = 0x477,
+/*20080827 to latest
+1007
+*/
+ MSG_PT_ERROR_1007 = 0x478,
+/*20080827 to latest
+1008
+*/
+ MSG_PT_ERROR_1008 = 0x479,
+/*20080827 to latest
+1009
+*/
+ MSG_PT_ERROR_1009 = 0x47a,
+/*20080827 to latest
+1012
+*/
+ MSG_PT_ERROR_1012 = 0x47b,
+/*20080827 to latest
+1013
+*/
+ MSG_PT_ERROR_1013 = 0x47c,
+/*20080827 to latest
+1014
+*/
+ MSG_PT_ERROR_1014 = 0x47d,
+/*20080827 to latest
+1015
+*/
+ MSG_PT_ERROR_1015 = 0x47e,
+/*20080827 to latest
+1019
+*/
+ MSG_PT_ERROR_1019 = 0x47f,
+/*20080827 to latest
+1020
+Navigation
+*/
+ MSG_PT_ERROR_1020 = 0x480,
+/*20080827 to latest
+1021
+*/
+ MSG_PT_ERROR_1021 = 0x481,
+/*20080827 to latest
+1023
+*/
+ MSG_PT_ERROR_1023 = 0x482,
+/*20080827 to latest
+1024
+*/
+ MSG_PT_ERROR_1024 = 0x483,
+/*20080827 to latest
+1025
+*/
+ MSG_PT_ERROR_1025 = 0x484,
+/*20080827 to latest
+1027
+*/
+ MSG_PT_ERROR_1027 = 0x485,
+/*20080827 to latest
+1028
+*/
+ MSG_PT_ERROR_1028 = 0x486,
+/*20080827 to latest
+10
+*/
+ MSG_PT_ERROR_10 = 0x487,
+/*20080827 to latest
+20
+*/
+ MSG_PT_ERROR_20 = 0x488,
+/*20080827 to latest
+40
+*/
+ MSG_PT_ERROR_40 = 0x489,
+/*20080827 to latest
+50
+*/
+ MSG_PT_ERROR_50 = 0x48a,
+/*20080827 to latest
+60
+*/
+ MSG_PT_ERROR_60 = 0x48b,
+/*20080827 to latest
+70
+*/
+ MSG_PT_ERROR_70 = 0x48c,
+/*20080827 to latest
+80
+*/
+ MSG_PT_ERROR_80 = 0x48d,
+/*20080827 to latest
+90
+*/
+ MSG_PT_ERROR_90 = 0x48e,
+/*20080827 to latest
+100
+*/
+ MSG_PT_ERROR_100 = 0x48f,
+/*20080827 to latest
+110
+*/
+ MSG_PT_ERROR_110 = 0x490,
+/*20080827 to latest
+30포인트를 받으시겠습니까?
+Do you want to receive 30 points?
+*/
+ MSG_PT_POINT1 = 0x491,
+/*20080827 to latest
+30포인트(5시간)이 충전되었습니다
+30 points (5 hours) have been added.
+*/
+ MSG_PT_POINT2 = 0x492,
+/*20080827 to latest
+감정되지 않은 아이템은 경매에 등록할 수 없습니다.
+You cannot register Unidentified Items in auctions.
+*/
+ MSG_AUCTION_ADD_ITEM_FAILURE = 0x493,
+/*20080827 to latest
+소비 아이템은 경매에 등록할 수 없습니다.
+You cannot register this Consumable Item in an auction.
+*/
+ MSG_AUCTION_ADD_ITEM_FAILURE2 = 0x494,
+/*20080827 to latest
+메일창을 열려면 카트창을 닫아 주십시요.
+Please close the Cart Window to open the Mail Window.
+*/
+ MSG_CLOSE_MERCHANTITEMWND = 0x495,
+/*20080827 to latest
+카트창을 열려면 메일창을 닫아 주십시요.
+Please close the Mail Window to open the Cart Window.
+*/
+ MSG_CLOSE_MAILWND = 0x496,
+/*20080827 to latest
+탄환이 장착되었습니다.
+Bullets have been equipped.
+*/
+ MSG_MSG_BULLET_EQUIPMENT_SUCCESS = 0x497,
+/*20080827 to latest
+메일이 반송되었습니다.
+The mail has been returned to sender.
+*/
+ MSG_MAIL_RETURN_SUCCESS = 0x498,
+/*20080827 to latest
+메일이 존재하지 않습니다.
+The mail no longer exists.
+*/
+ MSG_MAIL_RETURN_FAILURE = 0x499,
+/*20080827 to latest
+한시간 동안, 동일한 IP로 접속한 유저가 30건 이상입니다. 확인후 다시 사용하시기 바랍니다.
+More than 30 players sharing the same IP have logged into the game for an hour. Please check this matter.
+*/
+ MSG_BAN_PC_IP_COUNT_ALL = 0x49a,
+/*20080827 to latest
+한시간 동안, 동일한 IP로 10번 이상 접속되었습니다. 확인후 다시 사용하시기 바랍니다.
+More than 10 connections sharing the same IP have logged into the game for an hour. Please check this matter.
+*/
+ MSG_BAN_PC_IP_COUNT = 0x49b,
+/*20080827 to latest
+게임을 재시작 하십시오
+Please restart the game.
+*/
+ MSG_GAMEGUARD_RESTART = 0x49c,
+/*20080827 to latest
+용병정보 - 아쳐타입
+Mercenary: Archer
+*/
+ MSG_MER_INFO_TYPE_ARCHER = 0x49d,
+/*20080827 to latest
+용병정보 - 검사타입
+Mercenary: Swordman
+*/
+ MSG_MER_INFO_TYPE_SWORDMAN = 0x49e,
+/*20080827 to latest
+용병정보 - 창병타입
+Mercenary: Spearman
+*/
+ MSG_MER_INFO_TYPE_LANCER = 0x49f,
+/*20080827 to latest
+삭제시간
+Expiration
+*/
+ MSG_LEFT_TIME = 0x4a0,
+/*20080827 to latest
+신뢰도
+Loyalty
+*/
+ MSG_MER_FRIENDLY = 0x4a1,
+/*20080827 to latest
+소환횟수
+Summons
+*/
+ MSG_MER_CALLCOUNT = 0x4a2,
+/*20080827 to latest
+Kill
+*/
+ MSG_MER_KILL = 0x4a3,
+/*20080827 to latest
+펫이 배가 고파서 당신을 원망하고 있다는 느낌이 든다.
+You can feel hatred from your pet for neglecting to feed it.
+*/
+ MSG_PET_STARVING = 0x4a4,
+/*20080827 to latest
+[POINT] 테이밍미션 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[POINT] You earned %d Taming Mission Ranking Points, giving you a total of %d points.
+*/
+ MSG_GANGSI_POINT = 0x4a5,
+/*20080827 to latest
+[테이밍미션] Target Monster : %s
+[Taming Mission] Target Monster: %s
+*/
+ MSG_GANGSI_MISSION = 0x4a6,
+/*20080827 to latest
+/hunting : 사냥 목록을 보여줍니다.
+/hunting: You can check the your hunting list.
+*/
+ MSG_EXPLAIN_HUNTING = 0x4a7,
+/*20080827 to latest
+[천사의질문] 소녀에게 가르쳐주시어요. %s는 몇 스킬 찍으셨나요?
+[Angel's Question] Please tell me, how many %s skills do you have?
+*/
+ MSG_DEATH_Q01 = 0x4a8,
+/*20080827 to latest
+[천사의질문] 소녀에게 가르쳐주시어요. 소지하시고있는 제니를 십만으로 나누면 얼마가 되시나요?
+[Angel's Question] Please tell me, how much zeny you'll have if you divide it by 100,000?
+*/
+ MSG_DEATH_Q02 = 0x4a9,
+/*20080827 to latest
+[천사의질문] 소녀에게 가르쳐주시어요. 오늘이 몇일이신지 아시나요?
+[Angel's Question] Please tell me, what is today's date?
+*/
+ MSG_DEATH_Q03 = 0x4aa,
+/*20080827 to latest
+[천사의질문] 소녀에게 가르쳐주시어요. %s은 지금 몇이신가요?
+[Angel's Question] Please tell me, how many %s do you have?
+*/
+ MSG_DEATH_Q04 = 0x4ab,
+/*20080827 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 슈노, 태권계열, 무낙계열을 담당하고있는 SiYeon씨의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in SiYeon's name?
+*/
+ MSG_DEATH_Q05 = 0x4ac,
+/*20080827 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 귀엽고 어여쁜 라그나로크의 히로인 Munak의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in Munak's name?
+*/
+ MSG_DEATH_Q06 = 0x4ad,
+/*20080827 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 제가 어여뻐하는 Bongun의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in Bongun's name?
+*/
+ MSG_DEATH_Q07 = 0x4ae,
+/*20080827 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 저희가 존재하는 온라인세계 Ragnarok의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, Ragnarok?
+*/
+ MSG_DEATH_Q08 = 0x4af,
+/*20080827 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 언제나 Online상태인 천사동료들은 큰힘이 되어주죠. Online의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, online?
+*/
+ MSG_DEATH_Q09 = 0x4b0,
+/*20080827 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 죽음도 두려워하지않는 기사들을 상징하는 단어인 Death의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, death?
+*/
+ MSG_DEATH_Q10 = 0x4b1,
+/*20080827 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 기사들은 너무 멋진다고 생각해요. Knight의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, knight?
+*/
+ MSG_DEATH_Q11 = 0x4b2,
+/*20080827 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 중력을 뜻하는 단어인 Gravity의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, gravity?
+*/
+ MSG_DEATH_Q12 = 0x4b3,
+/*20080827 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 어둠속에서도 밝게 사는게 중요하지요. Dark의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, dark?
+*/
+ MSG_DEATH_Q13 = 0x4b4,
+/*20080827 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 뭐든지 수집하는 Collector의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, collecter?
+*/
+ MSG_DEATH_Q14 = 0x4b5,
+/*20080827 to latest
+[천사의대답] 소녀에게 정확한 사실을 가르쳐주셔서 감사하옵니다.
+[Angel's Answer] Thank you for letting me know~
+*/
+ MSG_DEATH_R01 = 0x4b6,
+/*20080827 to latest
+[천사의대답] 사랑스러우신 분이시군요. 소녀 감탄했사옵니다.
+[Angel's Answer] I'm very pleased with your answer. You are a splendid adventurer.
+*/
+ MSG_DEATH_R02 = 0x4b7,
+/*20080827 to latest
+[천사의대답] 소녀 실망했사옵니다.
+[Angel's Answer] You've disappointed me...
+*/
+ MSG_DEATH_R05 = 0x4b8,
+/*20080827 to latest
+[POINT] 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[Point] You earned %d Ranking Points, giving you a total of %d Ranking Points.
+*/
+ MSG_DEATH_POINT = 0x4b9,
+/*20080827 to latest
+[%s]의 소지 캐시 : %d 캐시
+[%s]'s Points: %d Points
+*/
+ MSG_POINT_SHOP = 0x4ba,
+/*20080827 to latest
+선택하지 않은 캐릭터는 삭제 됩니다. 완료하시겠습니까?
+Unselected Characters will be deleted. Continue?
+*/
+ MSG_CONFIRM_SELECT_CHARACTERS = 0x4bb,
+/*20080827 to latest
+9개 이상 선택하실 수 없습니다.
+You cannot select more than 8.
+*/
+ MSG_ERROR_SELECT_CHARACTERS = 0x4bc,
+/*20080827 to latest
+캐릭터명을 '%s' (으)로 변경하시겠습니까?
+Do you want to change your name to '%s'?
+*/
+ MSG_CONFIRM_TO_CHANGE_NAME = 0x4bd,
+/*20080827 to latest
+캐릭터명이 성공적으로 변경되었습니다.
+Character Name has been changed successfully.
+*/
+ MSG_CHANGE_NAME_SUCCESS = 0x4be,
+/*20080827 to latest
+캐릭터명 변경이 실패하였습니다.
+You have failed to change this character's name.
+*/
+ MSG_CHANGE_NAME_FAILURE = 0x4bf,
+/*20080827 to latest
+한 번에 한 종류의 아이템만 구매할 수 있습니다.
+You can purchase only one kind of item at a time.
+*/
+ MSG_CAN_BUY_ONLY_ONEITEM = 0x4c0,
+/*20080827 to latest
+캐릭터가 한개도 선택되지 않았습니다. 반드시 한개 이상의 캐릭터를 선택하여야 합니다.
+No characters were selected. You must select at least one character.
+*/
+ MSG_NO_SELECT_CHARACTERS = 0x4c1,
+/*20080827 to latest
+이미 캐릭터명을 변경한 적이 있습니다. 더 이상 변경 할 수 없습니다.
+This character's name has already been changed. You cannot change a character's name more than once.
+*/
+ MSG_ALREADY_CHANGED_NAME = 0x4c2,
+/*20080827 to latest
+사용자 정보가 정확하지 않습니다.
+User Information is not correct.
+*/
+ MSG_NOTREGISTED_USER = 0x4c3,
+/*20080827 to latest
+다른 사용자가 같은 캐릭터 명을 먼저 사용하였습니다. 다른 캐릭터명을 사용하여 주십시요.
+Another user is using this character name, so please select another one.
+*/
+ MSG_DUPLICATED_CHAR_NAME = 0x4c4,
+/*20080827 to latest
+파티장 권한이 없어 파티원을 소환하지 못했습니다.
+The party member was not summoned because you are not the party leader.
+*/
+ MSG_CANNOT_PARTYCALL = 0x4c5,
+/*20080827 to latest
+현재 맵에는 소환될 파티원이 존재하지 않습니다.
+There is no party member to summon in the current map.
+*/
+ MSG_NO_PARTYMEM_ON_THISMAP = 0x4c6,
+/*20080827 to latest
+이 지역에선 보스몬스터의 흔적을 찾을 수가 없습니다.
+You cannot find any trace of a Boss Monster in this area.
+*/
+ MSG_NOTFIND_BOSSMON = 0x4c7,
+/*20080827 to latest
+보스 몬스터 '%s'(이)가 %d시간 %d분 후에 등장합니다.
+Boss Monster, '%s' will appear in %02d hour(s) and %02d minute(s).
+*/
+ MSG_APPEARANCE_TIME_OF_BOSSMON = 0x4c8,
+/*20080827 to latest
+보스 몬스터 '%s'의 위치가 미니맵에 표시됩니다.
+The location of Boss Monster, '%s', will be displayed on your Mini-Map.
+*/
+ MSG_SHOW_POSITION_OF_BOSSMON = 0x4c9,
+/*20080827 to 20101026
+'%s'를 개봉 하시겠습니까? 한번 개봉된 아이템은 창고 저장 외의 다른 이동은 불가하며 임대 아이템은 창고 저장도 불가합니다. 한정 아이템은 거래 및 이동이 가능 합니다. 동일한 아이템을 중복 사용하더라도 효과가 중첩되지 않습니다.
+20101102 to 20110330
+'%s'를 개봉 하시겠습니까? ^ff0000상자를 개봉하시면 청약 철회 및 환불 대상에서 제외 됩니다.^000000 한번 개봉 된 아이템은 창고 저장 외의 다른 이동은 불가하며 임대 아이템은 창고 저장도 불가합니다. 한정 아이템은 거래 및 이동이 가능 합니다. 동일한 아이템을 중복 사용하더라도 효과가 중첩되지 않습니다.
+20110405 to latest
+'%s'를 개봉 하시겠습니까? ^ff0000상자를 개봉하시면 청약 철회 대상에서 제외 됩니다.^000000 한번 개봉 된 아이템은 창고 저장 외의 다른 이동은 불가하며 임대 아이템은 창고 저장도 불가합니다. 한정 아이템은 거래 및 이동이 가능 합니다. 동일한 아이템을 중복 사용하더라도 효과가 중첩되지 않습니다.
+Do you want to open '%s'? Once opened, the contents cannot be moved to other locations aside from the Kafra Storage. The item effect isn't doubled, even if the same items are used more than once.
+*/
+ MSG_CONFIRM_TO_OPEN_CASH_ITEM = 0x4ca,
+/*20080827 to latest
+NPC가 존재하지 않아 구매가 실패하였습니다.
+The Purchase has failed because the NPC does not exist.
+*/
+ MSG_BUY_CASH_FAIL_NPC = 0x4cb,
+/*20080827 to latest
+부분 유료화 시스템이 정상 작동하지 않아 구매가 실패하였습니다.
+The Purchase has failed because the Kafra Shop System is not working correctly.
+*/
+ MSG_BUY_CASH_FAIL_SYSTEM = 0x4cc,
+/*20080827 to latest
+교환중에는 아이템을 구매 할 수 없습니다.
+You cannot purchase items while you are in a trade.
+*/
+ MSG_BUY_CASH_FAIL_EXCHANGE = 0x4cd,
+/*20080827 to latest
+아이템 정보가 정확하지 않아 구매가 실패하였습니다.
+The Purchase has failed because the Item Information was incorrect.
+*/
+ MSG_BUY_CASH_FAIL_ITEM_ID = 0x4ce,
+/*20080827 to latest
+ STR이 향상되었습니다.
+STR has increased.
+*/
+ MSG_ENST_STR = 0x4cf,
+/*20080827 to latest
+ STR이 원래대로 돌아왔습니다.
+STR has returned to normal.
+*/
+ MSG_DSST_STR = 0x4d0,
+/*20080827 to latest
+ AGI이 향상되었습니다.
+AGI has increased.
+*/
+ MSG_ENST_AGI = 0x4d1,
+/*20080827 to latest
+ AGI이 원래대로 돌아왔습니다.
+AGI has returned to normal.
+*/
+ MSG_DSST_AGI = 0x4d2,
+/*20080827 to latest
+ VIT이 향상되었습니다.
+VIT has increased.
+*/
+ MSG_ENST_VIT = 0x4d3,
+/*20080827 to latest
+ VIT이 원래대로 돌아왔습니다.
+VIT has returned to normal.
+*/
+ MSG_DSST_VIT = 0x4d4,
+/*20080827 to latest
+ INT이 향상되었습니다.
+INT has increased.
+*/
+ MSG_ENST_INT = 0x4d5,
+/*20080827 to latest
+ INT이 원래대로 돌아왔습니다.
+INT has returned to normal.
+*/
+ MSG_DSST_INT = 0x4d6,
+/*20080827 to latest
+ DEX이 향상되었습니다.
+DEX has increased.
+*/
+ MSG_ENST_DEX = 0x4d7,
+/*20080827 to latest
+ DEX이 원래대로 돌아왔습니다.
+DEX has returned to normal.
+*/
+ MSG_DSST_DEX = 0x4d8,
+/*20080827 to latest
+ LUK이 향상되었습니다.
+LUK has increased.
+*/
+ MSG_ENST_LUK = 0x4d9,
+/*20080827 to latest
+ LUK이 원래대로 돌아왔습니다.
+LUK has returned to normal.
+*/
+ MSG_DSST_LUK = 0x4da,
+/*20080827 to latest
+ 회피율이 향상되었습니다.
+Flee Rate (Flee) has increased.
+*/
+ MSG_ENST_AVOIDANCE = 0x4db,
+/*20080827 to latest
+ 회피율이 원래대로 돌아왔습니다.
+Flee Rate has returned to normal.
+*/
+ MSG_DSST_AVOIDANCE = 0x4dc,
+/*20080827 to latest
+ 명중률이 향상되었습니다.
+Accuracy Rate (Hit) has increased.
+*/
+ MSG_ENST_HIT = 0x4dd,
+/*20080827 to latest
+ 명중률이 원래대로 돌아왔습니다.
+Accuracy Rate has returned to normal.
+*/
+ MSG_DSST_HIT = 0x4de,
+/*20080827 to latest
+ 크리티컬 확률이 향상되었습니다.
+Critical Attack (Critical) has increased.
+*/
+ MSG_ENST_CRITICALSUCCESSVALUE = 0x4df,
+/*20080827 to latest
+ 크리티컬 확률이 원래대로 돌아왔습니다.
+Critical Attack has returned to normal.
+*/
+ MSG_DSST_CRITICALSUCCESSVALUE = 0x4e0,
+/*20080827 to 20111021
+ 몬스터 사냥을 통해 얻을 수 있는 경험치가 30분간 1.5배로 증가합니다.
+20111025 to 20111101
+ 30분간 얻을 수 있는 경험치가 75%% 증가합니다.
+20111102 to latest
+ 30분간 얻을 수 있는 경험치가 50%% 증가합니다.
+You will receive 1.5 times more EXP from hunting monsters for the next 30 minutes.
+*/
+ MSG_PLUSEXP = 0x4e1,
+/*20080827 to latest
+ 30분내 사망시 1회에 한해 경험치 감소가 일어나지 않습니다.
+This character will not receive any EXP penalty if killed within the next 30 minutes.
+*/
+ MSG_DDEATHPENALTY = 0x4e2,
+/*20080827 to latest
+ 몬스터 사냥을 통해 얻을 수 있는 기본 아이템의 드롭률이 30분간 2배로 증가합니다.
+Regular item drops from monsters will be doubled for the next 30 minutes.
+*/
+ MSG_RECEIVEITEM = 0x4e3,
+/*20080827 to latest
+ 10분간 맵 내에 출현 가능한 보스 몬스터에 대한 정보를 안내해 드립니다.
+Boss Monster Map Information for the next 10 minutes.
+*/
+ MSG_BOSS_ALARM = 0x4e4,
+/*20080827 to 20100629
+ 본 아이템은 청약 철회나 환불 대상에서 제외되는 아이템입니다. 정말로 '%s'아이템을 구매하시겠습니까?, %d캐시가 차감됩니다.
+20100701 to 20101026
+ 본 아이템은 청약 철회나 환불 대상에서 제외되는 아이템입니다. 정말로 %s아이템을 구매하시겠습니까?, %d캐시가 차감됩니다.
+20101102 to 20101130
+ ^ff0000본 아이템을 구매 후 개봉하시면 청약 철회 및 환불 대상에서 제외 됩니다.^000000 정말로 %s아이템을 구매하시겠습니까? 구매하실 경우 %d캐시가 차감됩니다.
+20101207 to 20110330
+ ^ff0000본 아이템을 구매 후 개봉하시면 청약 철회 및 환불 대상에서 제외 됩니다.^000000 정말로 아이템을 구매하시겠습니까? 구매하실 경우 %d캐시가 차감됩니다.
+20110405 to 20120618
+ ^ff0000본 아이템을 구매 후 7일 이내에는 청약 철회가 가능합니다. 다만, 7일이 지났거나 아이템을 개봉하시면 청약 철회 대상에서 제외 됩니다.^000000 정말로 아이템을 구매하시겠습니까? 구매하실 경우 %d캐시가 차감됩니다.
+20120626 to latest
+ ^ff0000본 아이템을 구매 후 7일 이내에는 청약 철회가 가능합니다. 다만, 7일이 지났거나 아이템을 개봉하시면 청약 철회 대상에서 제외 됩니다.또한 구매시 사용된 무료캐시는 청약철회시 반환되지 않습니다.^000000 정말로 아이템을 구매하시겠습니까? 구매하실 경우 %d캐시가 차감됩니다.
+Do you really want to purchase this item? %d points will be deducted from your total Kafra Credit Points.
+*/
+ MSG_BUY_RECONFIRM = 0x4e5,
+/*20080827 to latest
+ 캐시가 부족합니다.
+ You do not have enough Kafra Credit Points.
+*/
+ MSG_BUY_CASH_FAIL_MONEY = 0x4e6,
+/*20080827 to latest
+ ^ff0000파기일시: %s^000000
+ ^ff0000Expiration Date: %s^000000
+*/
+ MSG_NOTICE_TO_DELETE_TIME = 0x4e7,
+/*20080827 to latest
+ '%s'아이템의 사용시간이 %d분 남았습니다.
+ The '%s' item will disappear in %d minutes.
+*/
+ MSG_NOTICE_TO_REMAIN_ITEMUSINGTIME = 0x4e8,
+/*20080827 to latest
+ 1분 후, '%s'아이템이 인벤토리에서 삭제됩니다.
+ '%s' item will be deleted from the Inventory in 1 minute.
+*/
+ MSG_LAST_NOTICE_TO_REMAIN_ITEMUSINGTIME = 0x4e9,
+/*20080827 to latest
+ '%s'아이템이 인벤토리에서 삭제되었습니다.
+ '%s' item has been deleted from the Inventory.
+*/
+ MSG_NOTICE_TO_DELETE_ITEM = 0x4ea,
+/*20080827 to latest
+Input Number
+*/
+ MSG_INPUT_NUMBER = 0x4eb,
+/*20080827 to latest
+%m월 %d일 %H시 %M분
+%m/%d %H:%M
+*/
+ MSG_TIME_TYPE2 = 0x4ec,
+/*20080827 to latest
+보스 몬스터 '%s'(이)가 잠시 후에 등장합니다.
+Boss Monster '%s' will appear within 1 minute.
+*/
+ MSG_APPEARANCE_TIME_OF_BOSSMON2 = 0x4ed,
+/*20080827 to latest
+용병 스킬목록
+Mercenary Soldier Skill List
+*/
+ MSG_MER_SKILLLIST = 0x4ee,
+/*20080827 to latest
+블랙젬스톤 1개와 백만제니를 소모하는 마법의 실행에 동의합니까?
+Do you agree to cast the magic spell that consumes 1 Black Gemstone and 1,000,000 Zeny?
+*/
+ MSG_DA_EXP_ACCEPT = 0x4ef,
+/*20080827 to latest
+[POINT] 콜렉터랭킹 포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[Point] You have gained %d Collector Rank Points; you now have a total of %d Collector Rank Points.
+*/
+ MSG_COLLECTOR_POINT = 0x4f0,
+/*20080827 to latest
+[콜렉터랭킹] Target Item : %s
+[Collector Rank] Target Item: %s
+*/
+ MSG_COLLECTOR_MISSION = 0x4f1,
+/*20080827 to latest
+용병 사용시간이 만료되었습니다.
+The mercenary contract has expired.
+*/
+ MSG_MER_FINISH = 0x4f2,
+/*20080827 to latest
+용병이 사망하였습니다.
+The mercenary has died.
+*/
+ MSG_MER_DIE = 0x4f3,
+/*20080827 to latest
+용병이 해고되었습니다.
+You have released the mercenary.
+*/
+ MSG_MER_RETIRE = 0x4f4,
+/*20080827 to latest
+용병이 도망갔습니다.
+The mercenary has run away.
+*/
+ MSG_MER_RUNAWAY = 0x4f5,
+/*20080827 to latest
+ '%s'아이템의 사용시간이 %d초 남았습니다.
+ The '%s' item will disappear in %d seconds.
+*/
+ MSG_NOTICE_TO_REMAIN_ITEMUSINGTIME2 = 0x4f6,
+/*20080827 to latest
+PC방 프리미엄 서비스 : 경험치 %d%% 증가, 사망 페널티 %d%% 감소, 드롭율 %d%% 증가
+IP Bonus: EXP/JEXP %d%%, Death Penalty %d%%, Item Drop %d%%
+*/
+ MSG_PCBANG_EVENT = 0x4f7,
+/*20080827 to latest
+24시간 이후에 시도하세요
+Symbols in Character Names are forbidden.
+*/
+ MSG_LIMIT_CHAR_DELETE = 0x4f8,
+/*20080827 to latest
+용병이 사용자 인공지능으로 동작합니다.
+Mercenary will follow custom AI.
+*/
+ MSG_MER_USERAI_ON = 0x4f9,
+/*20080827 to latest
+용병이 기본 인공지능으로 동작합니다.
+Mercenary will follow basic AI.
+*/
+ MSG_MER_USERAI_OFF = 0x4fa,
+/*20080827 to latest
+ %s님의
+ %s's
+*/
+ MSG_CHARACTER_NAME = 0x4fb,
+/*20080827 to latest
+%s님이 %s 아이템을 획득하셨습니다.
+%s has acquired %s.
+*/
+ MSG_ITEM_PICKUP_PARTY = 0x4fc,
+/*20080827 to latest
+공개 채팅 메시지 표시
+Public Chat Display
+*/
+ MSG_VIEW_CHAT_MSG = 0x4fd,
+/*20080827 to latest
+귓속말 채팅 메시지 표시
+Whisper Display
+*/
+ MSG_VIEW_WHISPER_MSG = 0x4fe,
+/*20080827 to latest
+파티 채팅 메시지 표시
+Party Chat Display
+*/
+ MSG_VIEW_PARTY_MSG = 0x4ff,
+/*20080827 to latest
+길드 채팅 메시지 표시
+Guild Chat Display
+*/
+ MSG_VIEW_GUILD_MSG = 0x500,
+/*20080827 to latest
+아이템 획득/드롭 메시지 표시
+Item Get/Drop Message Display
+*/
+ MSG_VIEW_GET_ITEM_MSG = 0x501,
+/*20080827 to latest
+장비 장착/해제 메시지 표시
+Equipment On/Off Message Display
+*/
+ MSG_VIEW_EQUIP_MSG = 0x502,
+/*20080827 to latest
+상태이상 메시지 표시
+Abnormal Status Message Display
+*/
+ MSG_VIEW_CHANGE_STATUS_MSG = 0x503,
+/*20080827 to latest
+파티원의 주요 아이템 획득 메시지 표시
+Party Member's Obtained Item Message Display
+*/
+ MSG_VIEW_GET_ITEM_PARTY_MSG = 0x504,
+/*20080827 to latest
+파티원의 상태이상 메시지 표시
+Party Member's Abnormal Status Message Display
+*/
+ MSG_VIEW_CHANGE_STATUS_PARTY_MSG = 0x505,
+/*20080827 to latest
+스킬 사용 실패 메시지 표시
+Skill Failure Message Display
+*/
+ MSG_VIEW_FAIL_SKILL_MSG = 0x506,
+/*20080827 to latest
+파티 설정 메시지 표시
+Party Configuration Message Display
+*/
+ MSG_VIEW_PARTY_SETUP_MSG = 0x507,
+/*20080827 to latest
+장비 손상 메시지 표시
+Damaged Equipment Message Display
+*/
+ MSG_VIEW_DAMAGED_EQUIP_MSG = 0x508,
+/*20080827 to latest
+배틀 메시지 창 표시 정보
+Battle Message Window Display
+*/
+ MSG_BATTLE_CHAT_WND_OPTION = 0x509,
+/*20080827 to latest
+[%s]의 소지 한코인 : %d 한코인
+[%s]'s Han Coin: %d Han Coin
+*/
+ MSG_POINT_SHOP_NHN = 0x50a,
+/*20080827 to latest
+일반 메시지
+Public Log
+*/
+ MSG_ST_CHAT = 0x50b,
+/*20080827 to latest
+배틀 메시지
+Battle Log
+*/
+ MSG_BT_CHAT = 0x50c,
+/*20080827 to latest
+휴대폰 인증.
+Mobile Authentication
+*/
+ MSG_PHONE_CONFIRM = 0x50d,
+/*20080827 to latest
+읽기
+Read
+*/
+ MSG_BOOK_READ = 0x50e,
+/*20080827 to latest
+자동낭독
+Auto Read
+*/
+ MSG_BOOK_AUTOREAD = 0x50f,
+/*20080827 to latest
+책갈피
+Bookmark
+*/
+ MSG_BOOK_KEEP = 0x510,
+/*20080827 to latest
+이전페이지
+Previous
+*/
+ MSG_BOOK_PREV = 0x511,
+/*20080827 to latest
+다음페이지
+Next
+*/
+ MSG_BOOK_NEXT = 0x512,
+/*20080827 to latest
+닫기
+Close
+*/
+ MSG_BOOK_CLOSE = 0x513,
+/*20080827 to latest
+%s 장비가 손상되었습니다.
+%s's Equipment has been damaged.
+*/
+ MSG_DAMAGED_EQUIP = 0x514,
+/*20080827 to latest
+%s님의 %s 손상되었습니다.
+%s's %s was damaged.
+*/
+ MSG_DAMAGED_EQUIP_PARTY = 0x515,
+/*20080827 to latest
+무기가
+Weapon
+*/
+ MSG_DAMAGED_WEAPON = 0x516,
+/*20080827 to latest
+갑옷이
+Armor
+*/
+ MSG_DAMAGED_BODY = 0x517,
+/*20080827 to latest
+스킬레벨이 부족합니다. 파티가입 불능
+Insufficient Skill Level for joining a Party
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE5_2 = 0x518,
+/*20080827 to latest
+[%s]의 무료 캐시 : %d 캐시
+[%s]'s Free Cash: %d Cash
+*/
+ MSG_POINT_SHOP2 = 0x519,
+/*20080827 to latest
+무료 캐시 사용 :
+Use Free Cash:
+*/
+ MSG_USE_FREE_POINT = 0x51a,
+/*20080827 to latest
+캐시
+Cash
+*/
+ MSG_CASH = 0x51b,
+/*20080827 to latest
+http://payment.ro.hangame.com/index.asp
+*/
+ MSG_SETTLE_WEB_URL_HANGAME = 0x51c,
+/*20080827 to 20090603
+그라비티 회원 정보동의를 하셔야 사용할수있습니다.
+20090605 to latest
+그라비티 회원 정보동의를 하셔야 사용할 수 있습니다.
+You need to accept the Privacy Policy from Gravity in order to use the service.
+*/
+ MSG_BAN_GRAVITY_MEM_AGREE = 0x51d,
+/*20080827 to latest
+이용약관에 동의를 하셔야 본 서비스를 이용하실 수 있습니다.
+You need to accept the User Agreement in order to use the service.
+*/
+ MSG_BAN_GAME_MEM_AGREE = 0x51e,
+/*20080827 to latest
+입력하신 아이디와 비밀번호가 등록된 정보와 일치하지 않습니다.
+Incorrect or nonexistent ID.
+*/
+ MSG_BAN_HAN_VALID = 0x51f,
+/*20080827 to 20100629
+ 본 아이템은 청약 철회나 환불 대상에서 제외되는 아이템입니다. 정말로 '%s'아이템을 구매하시겠습니까?, 일반 %d캐시, 무료 %d캐시가 차감됩니다.
+20100701 to 20101026
+ 본 아이템은 청약 철회나 환불 대상에서 제외되는 아이템입니다. 정말로 %s아이템을 구매하시겠습니까?, 일반 %d캐시, 무료 %d캐시가 차감됩니다.
+20101102 to 20101130
+ ^ff0000본 아이템을 구매 후 개봉하시면 청약 철회 및 환불 대상에서 제외됩니다.^000000 정말로 %s아이템을 구매하시겠습니까? 구매하실 경우 일반 %d캐시, 무료 %d캐시가 차감됩니다.
+20101207 to 20110330
+ ^ff0000본 아이템을 구매 후 개봉하시면 청약 철회 및 환불 대상에서 제외됩니다.^000000 정말로 아이템을 구매하시겠습니까? 구매하실 경우 일반 %d캐시, 무료 %d캐시가 차감됩니다.
+20110405 to 20120618
+ ^ff0000본 아이템을 구매 후 7일 이내에는 청약 철회가 가능합니다. 다만, 7일이 지났거나 아이템을 개봉하시면 청약 철회 대상에서 제외 됩니다.^000000 정말로 아이템을 구매하시겠습니까? 구매하실 경우 일반 %d캐시, 무료 %d캐시가 차감됩니다.
+20120626 to latest
+ ^ff0000본 아이템을 구매 후 7일 이내에는 청약 철회가 가능합니다. 다만, 7일이 지났거나 아이템을 개봉하시면 청약 철회 대상에서 제외 됩니다.또한 구매시 사용된 무료캐시는 청약철회시 반환되지 않습니다.^000000 정말로 아이템을 구매하시겠습니까? 구매하실 경우 일반 %d캐시, 무료 %d캐시가 차감됩니다.
+Do you really want to purchase these items? You will spend %d Regular Cash Points and %d Free Cash Points.
+*/
+ MSG_BUY_RECONFIRM2 = 0x520,
+/*20080827 to latest
+%d시간이 경과하였습니다.
+%d hour(s) has passed.
+*/
+ MSG_NOTIFY_PLAYTIME1 = 0x521,
+/*20080827 to latest
+%d시간 %d분이 경과하였습니다.
+%d hour(s) %d minute(s) has passed.
+*/
+ MSG_NOTIFY_PLAYTIME2 = 0x522,
+/*20080827 to latest
+게임을 종료하세요, 경험치 및 모든게 50%로 조정됩니다
+Please stop playing the game, and take a break. Exp and other features will be reduced to 50%.
+*/
+ MSG_WARNING_MSG1 = 0x523,
+/*20080827 to latest
+불건전 시간대에 접어들었습니다. 게임을 종료하세요, 경험치 및 모든게 0%로 조정됩니다
+Please stop playing the game since you'll need to rest. Exp and other features will be fixed to 0%.
+*/
+ MSG_WARNING_MSG2 = 0x524,
+/*20080827 to latest
+퀘스트 목록
+Quest List
+*/
+ MSG_QUESTWIN = 0x525,
+/*20080827 to latest
+RO SHOP
+RO Shop
+*/
+ MSG_RO_SHOP = 0x526,
+/*20080827 to latest
+메모리얼던젼 '%s'의 예약이 알수없는 이유로 실패 하였습니다.
+Memorial Dungeon, '%s' is booked.
+*/
+ MSG_MDUNGEON_SUBSCRIPTION_ERROR_UNKNOWN = 0x527,
+/*20080827 to latest
+메모리얼던젼 '%s'의 예약이 예약중복으로 실패 하였습니다.
+Failed to book Memorial Dungeon, '%s'.
+*/
+ MSG_MDUNGEON_SUBSCRIPTION_ERROR_DUPLICATE = 0x528,
+/*20080827 to latest
+메모리얼던젼 '%s'의 예약이 권한문제로 실패 하였습니다.
+Memorial Dungeon, '%s' is already booked.
+*/
+ MSG_MDUNGEON_SUBSCRIPTION_ERROR_RIGHT = 0x529,
+/*20080827 to latest
+메모리얼던젼 '%s'의 예약이 중복생성요청으로 실패하였습니다.
+Memorial Dungeon, '%s' is created.
+ Please enter in 5 minutes.
+*/
+ MSG_MDUNGEON_SUBSCRIPTION_ERROR_EXIST = 0x52a,
+/*20080827 to latest
+메모리얼던젼 '%s'의 예약취소가 실패 하였습니다.
+Failed to create Memorial Dungeon, '%s'.
+ Please try again.
+*/
+ MSG_MDUNGEON_SUBSCRIPTION_CANCEL_FAIL = 0x52b,
+/*20080827 to latest
+상대방이 파티 초대 거부 상태입니다.
+The character blocked the party invitation.
+*/
+ MSG_JOINMSG_REFUSE = 0x52c,
+/*20080827 to latest
+모든 파티 초대를 거부합니다.
+Block all party invitations.
+*/
+ MSG_INVITE_PARTY_REFUSE = 0x52d,
+/*20080827 to latest
+모든 파티 초대를 수락합니다.
+Allow all party invitations.
+*/
+ MSG_INVITE_PARTY_ACCEPT = 0x52e,
+/*20080827 to latest
+착용하시면 이 아이템은 영구 귀속됩니다. 착용하시겠습니까?
+This item will be permanently bound to this character once it is equipped. Do you really want to equip this item?
+*/
+ MSG_YOURITEM_EQUIP = 0x52f,
+/*20080827 to latest
+%s 아이템이 귀속되었습니다.
+%s is now permanently bound to this character.
+*/
+ MSG_YOURITEM_EQUIPED = 0x530,
+/*20080827 to latest
+캐시가 부족합니다. 무료 캐시 포인트를 입력해 주시기 바랍니다.
+You do not have enough Kafra Credit Points. Please enter whether you have free credit points.
+*/
+ MSG_BUY_TO_FREE_POINT = 0x531,
+/*20080827 to latest
+파티 가입요청
+Request to Join Party
+*/
+ MSG_REQ_JOIN_PARTY3 = 0x532,
+/*20080827 to latest
+공성 정보 메시지 표시
+Display WOE Info
+*/
+ MSG_VIEW_SIEGE_INFO_MSG = 0x533,
+/*20080827 to latest
+메모리얼던젼 '%s'의 예약이 취소 되었습니다.
+Memorial Dungeon %s's reservation has been canceled.
+*/
+ MSG_MDUNGEON_SUBSCRIPTION_CANCEL_SUCCESS = 0x534,
+/*20080827 to latest
+메모리얼던젼 '%s' 생성에 실패하였습니다. 다시 시도 하세요.
+Failed to create Memorial Dungeon %s. Please try again.
+*/
+ MSG_MDUNGEON_CREATE_FAIL = 0x535,
+/*20080827 to latest
+이 장소에서는 사용할 수 없는 스킬입니다.
+This skill cannot be used within this area.
+*/
+ MSG_IMPOSSIBLE_SKILL_AREA = 0x536,
+/*20080827 to latest
+이 장소에서는 사용할 수 없는 아이템입니다.
+This item cannot be used within this area.
+*/
+ MSG_IMPOSSIBLE_USEITEM_AREA = 0x537,
+/*20080827 to latest
+메모리얼 던전
+Memorial Dungeon
+*/
+ MSG_MEMORIAL_DUN = 0x538,
+/*20080827 to latest
+%s 대기중
+%s in Standby
+*/
+ MSG_MEMORIAL_DUN_WAITING = 0x539,
+/*20080827 to latest
+%s 입장 가능
+%s Available
+*/
+ MSG_MEMORIAL_DUN_READY = 0x53a,
+/*20080827 to latest
+%s 진행중
+%s in Progress
+*/
+ MSG_MEMORIAL_DUN_IN = 0x53b,
+/*20080827 to latest
+시간 안에 입장하지 않아 메모리얼 던전이 사라졌습니다.
+No one entered the Memorial Dungeon within its duration; the dungeon has disappeared.
+*/
+ MSG_MEMORIAL_DUN_OUT1 = 0x53c,
+/*20080827 to latest
+이용하시려면 이용 신청을 처음부터 다시 해주시기 바랍니다.
+Please apply for dungeon entry again to play in this dungeon.
+*/
+ MSG_MEMORIAL_DUN_OUT2 = 0x53d,
+/*20080827 to latest
+대기 순위 : ^ff0000%d^000000
+Your Standby Priority: ^ff0000%d^000000
+*/
+ MSG_MEMORIAL_DUN_PRIORITY = 0x53e,
+/*20080827 to latest
+^ff0000%s^000000 내에 입장하지 않을 경우 신청하신 던전이 삭제 됩니다.
+The requested dungeon will be removed if you do not enter within ^ff0000%s^000000.
+*/
+ MSG_MEMORIAL_DUN_NOTIFY = 0x53f,
+/*20080827 to latest
+던전 미션 제한 시간 :
+Dungeon Mission Time Limit:
+*/
+ MSG_MEMORIAL_DUN_NOTIFY2 = 0x540,
+/*20080827 to latest
+메모리얼 던전 예약이 취소되었습니다.
+The Memorial Dungeon reservation has been canceled.
+*/
+ MSG_MEMORIAL_DUN_CANCEL = 0x541,
+/*20080827 to latest
+메모리얼 던전이 유지 시간 제한에 의해 파괴되었습니다.
+The Memorial Dungeon duration expired; it has been destroyed.
+*/
+ MSG_MEMORIAL_DUN_LIVE_TIME_OUT = 0x542,
+/*20080827 to latest
+메모리얼 던전이 입장 시간 제한에 의해 파괴되었습니다.
+The Memorial Dungeon's entry time limit expired; it has been destroyed.
+*/
+ MSG_MEMORIAL_DUN_ENTER_TIME_OUT = 0x543,
+/*20080827 to latest
+메모리얼 던전이 삭제 되었습니다.
+The Memorial Dungeon has been removed.
+*/
+ MSG_MEMORIAL_DUN_DESTROY_REQUEST = 0x544,
+/*20080827 to latest
+메모리얼 던전에 시스템 오류가 발생하였습니다. 정상적인 게임 진행을 위해 재접속을 해주십시오.
+A system error has occurred in the Memorial Dungeon. Please relog in to the game to continue playing.
+*/
+ MSG_MEMORIAL_DUN_ERROR = 0x545,
+/*20080827 to latest
+사용할 수 없는 슬롯입니다.
+This slot is not usable.
+*/
+ MSG_FR_INVALID_SLOT = 0x546,
+/*20080827 to latest
+Base Level이 15를 넘었습니다.
+Your Base Level is over 15.
+*/
+ MSG_FR_BASELVL = 0x547,
+/*20080827 to latest
+Job Level이 15를 넘었습니다.
+Your Job Level is over 15.
+*/
+ MSG_FR_INVALID_JOBLV = 0x548,
+/*20080827 to latest
+해당슬롯 캐릭터에 직업군의 상인이므로 게임을 할 수 없습니다.
+You cannot play the Merchant class character in this slot.
+*/
+ MSG_FR_JOB = 0x549,
+/*20080827 to latest
+추후 사용예정
+Not Yet Implemented
+*/
+ MSG_FR_MAP = 0x54a,
+/*20080827 to latest
+만들수 있는 케릭터 슬롯이 아닙니다.
+You are not eligible to open the Character Slot.
+*/
+ MSG_FR_ERR_MKCHAR_INVALID_SLOT = 0x54b,
+/*20080827 to latest
+삭제할 수 없는 케릭터 입니다.
+This character cannot be deleted.
+*/
+ MSG_FR_ERR_DELCHAR_INVALID_SLOT = 0x54c,
+/*20080827 to latest
+상대방의 장비창이 공개되어 있지 않습니다.
+This character's equipment information is not open to the public.
+*/
+ MSG_OPEN_EQUIPEDITEM_REFUSED = 0x54d,
+/*20080827 to latest
+장비창을 공개하지 않습니다.
+Equipment information not open to the public.
+*/
+ MSG_OPEN_EQUIPEDITEM_REFUSE = 0x54e,
+/*20080827 to latest
+장비창을 공개합니다.
+Equipment information open to the public.
+*/
+ MSG_OPEN_EQUIPEDITEM_ACCEPT = 0x54f,
+/*20080827 to latest
+(%s)님 장비창 보기
+Check %s's Equipment Info
+*/
+ MSG_REQ_VIEW_OTHERUSER = 0x550,
+/*20080827 to latest
+%s의 장착아이템
+'%s's Equipment
+*/
+ MSG_OTHERUSER_EQUIPED_ITEM = 0x551,
+/*20080827 to latest
+장비창 공개
+Show Equip
+*/
+ MSG_OPEN_EQUIPED_ITEM = 0x552,
+/*20080827 to latest
+프리미엄 서비스를 이용해 주시기 바랍니다.
+This service is only available for premium users.
+*/
+ MSG_NEED_PREMIUM_SERVICE = 0x553,
+/*20080827 to latest
+무료 사용자는 최대 50000제니까지 소유할 수 있습니다.
+Free Trial users can only hold up to 50,000 zeny.
+*/
+ MSG_FR_INVALID_MONEY = 0x554,
+/*20080827 to latest
+전장채팅 상태가 되었습니다.
+Battlefield Chat has been activated.
+*/
+ MSG_BATTLECHAT_ON = 0x555,
+/*20080827 to latest
+전장채팅 상태가 해제되었습니다.
+Battlefield Chat has been deactivated.
+*/
+ MSG_BATTLECHAT_OFF = 0x556,
+/*20080827 to latest
+용병정보 - 몬스터타입
+Mercenary Info - Monster Type
+*/
+ MSG_MER_INFO_TYPE_MONSTER = 0x557,
+/*20080827 to latest
+전체 맵 보기
+World Map
+*/
+ MSG_RO_MAP = 0x558,
+/*20080827 to latest
+메모리얼던젼이 CLOSE 상태입니다.
+The Memorial Dungeon is now closed.
+*/
+ MSG_MEMORIAL_DUN_CLOSE = 0x559,
+/*20080827 to latest
+^ff0000^ff0000용병을 삭제합니다.^000000^000000 삭제하실 경우 지금까지 키운 내역이 모두 삭제됩니다. 계속하시겠습니까?
+^ff0000Deleting a Mercenary Soldier^000000 will also delete his growth history. Do you really want to proceed with the deletion?
+*/
+ MSG_DELETE_MER = 0x55a,
+/*20080827 to latest
+메모리얼던젼이 OPEN 상태입니다.
+The Memorial Dungeon is now open.
+*/
+ MSG_MEMORIAL_DUN_OPEN = 0x55b,
+/*20080827 to latest
+위의 계정은 아직 통신 안전 키에 연결되지 않았습니다. 먼저 안전 키를 해제하신 뒤 게임에 접속해 주십시오.
+This account has not been confirmed by connecting to the safe communication key. Please connect to the key first, and then log into the game.
+*/
+ MSG_PHONE_BLOCK = 0x55c,
+/*20080827 to latest
+한 아이피로 접속 가능한 유저수를 초과하였습니다.
+The number of accounts connected to this IP has exceeded the limit.
+*/
+ MSG_BAN_PC_IP_LIMIT_ACCESS = 0x55d,
+/*20080827 to latest
+새로운 퀘스트를 받았습니다
+You have received a new quest.
+*/
+ MSG_QUESTGET = 0x55e,
+/*20080827 to latest
+^777777습득조건 :
+^CC3399Requirement:
+*/
+ MSG_FINDTEXT_TO_SKILLDES = 0x55f,
+/*20080827 to latest
+스킬 설명 보기
+View Skill Info
+*/
+ MSG_VIEW_SKILL_DESCRIPT = 0x560,
+/*20080827 to latest
+사용된 스킬 포인트는 다시 되돌릴 수 없습니다. 적용하시겠습니까?
+Once used, skill points cannot be re-allocated. Would you like to use the skill points?
+*/
+ MSG_APPLY_SKILL_UP = 0x561,
+/*20080827 to latest
+노비스·1차직업
+1st
+*/
+ MSG_1TABNAME_SKILLWND = 0x562,
+/*20080827 to latest
+2차·전승직업
+2nd
+*/
+ MSG_2TABNAME_SKILLWND = 0x563,
+/*20080827 to latest
+불법프로그램을 사용하였거나 혹은 해킹을 시도한 계정입니다. 블럭종료시간 : %s
+This account has been used for illegal program or hacking program. Block Time: %s
+20081217 to 20081218
+불법프로그램을 사용하였거나 해킹을 시도한 계정이거나 그라비티 이전을 신청한 한게임 계정입니다. 블럭종료시간 : %s
+*/
+ MSG_RE17 = 0x564,
+/*20080827 to latest
+불법프로그램이 실행, 바이러스 감염, 또는 해킹툴이 설치되어 있을 가능성이 있습니다. 정상 클라이언트를 실행하여 주시기 바랍니다. 함께 만드는 밝은 라그나로크가 될 수 있도록 노력하고 있습니다.
+The possibility of exposure to illegal program, PC virus infection or Hacking Tool has been detected. Please execute licensed client. Our team is trying to make a best environment for Ro players.
+*/
+ MSG_RE18 = 0x565,
+/*20080827 to latest
+당신은 지금 건강한 게임 시간 대에 있습니다, 즐거운 게임이 되시길 바랍니다
+You are currently playing in the best game environment. Please enjoy the Ragnarok.
+*/
+ MSG_WARNING_MSG3 = 0x566,
+/*20080827 to 20100721
+ 몬스터 사냥을 통해 얻을 수 있는 Job경험치가 30분간 1.5배로 증가합니다.
+20100727 to latest
+ 몬스터 사냥을 통해 얻을 수 있는 Job경험치가 30분간 1.25배로 증가합니다.
+Job Exp points from hunting monsters are increased by 50% for 30 minutes.
+*/
+ MSG_PLUSONLYJOBEXP = 0x567,
+/*20080827 to 20091110
+ 몬스터 사냥을 통해 얻을 수 있는 경험치가 30분간 1.25배로 증가합니다.
+20091117 to latest
+ 몬스터 사냥을 통해 얻을 수 있는 경험치가 30분간 1.2배로 증가합니다.
+Exp points from hunting monsters are increased by 25% for 30 minutes.
+*/
+ MSG_PLUSEXP14532 = 0x568,
+/*20080827 to latest
+ 몬스터 사냥을 통해 얻을 수 있는 경험치가 30분간 2배로 증가합니다.
+EXP points from hunting monsters are increased by 100%% for 30 minutes.
+*/
+ MSG_PLUSEXP14533 = 0x569,
+/*20080827 to latest
+ 몬스터 사냥을 통해 얻을 수 있는 경험치가 60분간 1.5배로 증가합니다.
+EXP points from hunting monsters are increased by 50% for 60 minutes.
+*/
+ MSG_PLUSEXP12312 = 0x56a,
+/*20080827 to latest
+이 맵에서는 파티를 결성할 수 없습니다.
+Unable to organize a party in this map.
+*/
+ MSG_NOPARTY = 0x56b,
+/*20080827 to latest
+(%s)님은 파티에 참여할 수 없는 맵에 있습니다.
+(%s) are currently in restricted map to join a party.
+*/
+ MSG_NOPARTY2 = 0x56c,
+/*20080827 to latest
+간편아이템샵
+Simple Item Shop
+*/
+ MSG_SIMPLE_CASH_SHOP = 0x56d,
+/*20080827 to latest
+소지 한코인 : %d 한코인
+Han Coin: %d Han Coin
+*/
+ MSG_SIMPLE_POINT_SHOP_NHN = 0x56e,
+/*20080827 to latest
+소지 캐시 : %d 캐시
+RoK Point: %d RoK Point
+*/
+ MSG_SIMPLE_POINT_SHOP = 0x56f,
+/*20080827 to latest
+무료 캐시 : %d 캐시
+Free Cash: %d Cash
+*/
+ MSG_SIMPLE_POINT_SHOP2 = 0x570,
+/*20080827 to latest
+본서버 유저는 프리서버에 접속할수 없습니다.
+An user of this server cannot connect to free server
+*/
+ MSG_MAIN_USER_CANONT_LOGIN_FREE_SERVER = 0x571,
+/*20080827 to latest
+유효기간이 지난 비밀번호 입니다. 다시 로그인하여주십시오.
+Your password has expired. Please log in again
+*/
+ MSG_INVALID_ONETIMELIMIT = 0x572,
+#if PACKETVER >= 20080903
+/*20080903 to latest
+3차직업
+3rd
+*/
+ MSG_3TABNAME_SKILLWND = 0x573,
+#endif
+#if PACKETVER >= 20080917
+/*20080917 to latest
+이 스킬을 사용할 수 없는 대상입니다.
+This skill can't be used on that target.
+*/
+ MSG_USESKILL_FAIL_TOTARGET = 0x574,
+/*20080917 to latest
+안실라 소유 개수가 초과하여 스킬을 사용할 수 없습니다.
+You can't use skill because you have exceeded the number Ancilla possession limit
+*/
+ MSG_USESKILL_FAIL_ANCILLA_NUMOVER = 0x575,
+/*20080917 to latest
+성수가 필요합니다.
+Unable to use the skill to exceed the number of Ancilla.
+*/
+ MSG_USESKILL_FAIL_HOLYWATER = 0x576,
+/*20080917 to latest
+안실라가 필요합니다.
+Holy water is required.
+*/
+ MSG_USESKILL_FAIL_ANCILLA = 0x577,
+/*20080917 to latest
+일정거리 내에 중복될 수 없습니다.
+Ancilla is required.
+*/
+ MSG_USESKILL_FAIL_DUPLICATE_RANGEIN = 0x578,
+/*20080917 to latest
+이 스킬을 사용하기 위해서는 다른 스킬이 필요합니다.
+Cannot be duplicated within a certain distance.
+*/
+ MSG_USESKILL_FAIL_NEED_OTHER_SKILL = 0x579,
+#endif
+#if PACKETVER >= 20080924
+/*20080924 to latest
+이 맵에서는 채팅을 할 수 없습니다.
+This skill requires other skills to be used.
+*/
+ MSG_NO_CHATTING = 0x57a,
+#endif
+#if PACKETVER >= 20081001
+/*20081001 to latest
+3시간이 지났습니다.
+Chat is not allowed in this map
+*/
+ MSG_VET_3HOUR = 0x57b,
+/*20081001 to latest
+5시간이 지났습니다.
+3 hours have passed.
+*/
+ MSG_VET_5HOUR = 0x57c,
+#endif
+#if PACKETVER >= 20081008
+/*20081008 to latest
+게임가드 초기화 에러 또는 구버전의 게임가드 파일입니다. 게임가드 셋업파일을 다시 설치하고 게임을 실행해 보시기 바랍니다.
+5 hours have passed.
+*/
+ MSG_NPGAMEMON_ERROR_GAMEGUARD = 0x57d,
+/*20081008 to latest
+ini 파일이 없거나 변조되었습니다. 게임가드 셋업파일을 설치하면 해결 할 수 있습니다.
+Game guard initialization error or previous version game guard file is installed. Please re-install the setup file and try again
+*/
+ MSG_NPGMUP_ERROR_PARAM = 0x57e,
+/*20081008 to latest
+게임가드와 충돌 프로그램이 발견되었습니다.
+Either ini file is missing or altered. Install game guard setup file to fix the problem
+*/
+ MSG_NPGG_ERROR_COLLISION = 0x57f,
+#endif
+#if PACKETVER >= 20081111
+/*20081111 to latest
+잘못된 클라이언트입니다. 정상적인 클라이언트를 실행하여 주십시요.
+There is a program found that conflicts with game guard
+*/
+ MSG_PROOF_ERROR = 0x580,
+#endif
+#if PACKETVER >= 20081203
+/*20081203 to latest
+모바일 인증을 받아주시기 바랍니다.
+Incorrect client. Please run a normal client
+*/
+ MSG_MOBILE_LOCKSERVER = 0x581,
+#endif
+#if PACKETVER >= 20081217
+/*20081217 to latest
+모바일 인증에 실패하였습니다.
+Thank you to accept mobile authentication.
+*/
+ MSG_FAILED_MOBILE_LOCKSERVER = 0x582,
+/*20081217 to latest
+이스킬은 혼자서 사용할수 없습니다.
+This skill can't be used alone
+*/
+ MSG_USESKILL_FAIL_NEED_HELPER = 0x583,
+/*20081217 to latest
+이스킬은 특정방향으로만 사용할수 있습니다.
+This skill can be used to certain direction only
+*/
+ MSG_USESKILL_FAIL_INVALID_DIR = 0x584,
+/*20081217 to latest
+더이상 소환할수 없습니다.
+Cannot summon spheres anymore.
+*/
+ MSG_USESKILL_FAIL_SUMMON = 0x585,
+/*20081217 to 20130710
+소환된 구체가 존재하지 않습니다.
+20130717 to latest
+소환된 구체가 존재하지 않거나 부족합니다.
+There is no summoned sphere or you do not have enough sphere.
+*/
+ MSG_USESKILL_FAIL_SUMMON_NONE = 0x586,
+/*20081217 to latest
+사용가능한 모방스킬이 존재하지 않습니다.
+There is no imitation skills available.
+*/
+ MSG_USESKILL_FAIL_IMITATION_SKILL_NONE = 0x587,
+/*20081217 to latest
+이 스킬은 중복해서 사용할수 없습니다.
+You can't reuse this skill
+*/
+ MSG_USESKILL_FAIL_DUPLICATE = 0x588,
+/*20081217 to latest
+스킬을 사용할수 없는 상태입니다.
+Skill can't be used in this state
+*/
+ MSG_USESKILL_FAIL_CONDITION = 0x589,
+/*20081217 to latest
+아이템별 최대 소지량을 초과하여 가질 수 없습니다.
+You have exceeded the maximum amount of possession of another item.
+*/
+ MSG_PICKUP_MAXCOUNT_LIMIT = 0x58a,
+#endif
+#if PACKETVER >= 20090204
+/*20090204 to latest
+관리자 권한이 없습니다. 프로그램 최초 실행은 관리자 권한으로 실행하셔야 합니다.
+No administrative privileges. Must first run the program with administrator privileges.
+*/
+ MSG_NPK_ERROR_NOTADMIN = 0x58b,
+/*20090204 to latest
+nProtect KeyCrypt 드라이버 버전이 맞지 않습니다. 시스템 재 부팅 후에 새로 실행 시켜 주십시오.
+nProtect KeyCrypt not the same. Please restart the program and the computer first.
+*/
+ MSG_NPK_ERROR_DRIVERVERSION = 0x58c,
+/*20090204 to latest
+WindowXP 호환성 모드를 사용하고 계십니다. 현재 프로그램에서 호환성 모드를 제거하였습니다. 프로그램을 새로 시작해 주십시오.
+Currently wearing WindowXP Compatibility Mode. The program now removes Compatibility Mode. Please restart the program.
+*/
+ MSG_NPK_ERROR_VERIFYVERSION = 0x58d,
+/*20090204 to latest
+PS/2 키로거가 존재합니다.
+PS/2 keyloggers exist.
+*/
+ MSG_DETECT_PS2KEYLOGGER = 0x58e,
+/*20090204 to latest
+USB 키보드 드라이버 해킹 시도가 탐지되었습니다.
+USB Keylogging attempt was detected.
+*/
+ MSG_DETECT_USBKEYLOGGER = 0x58f,
+/*20090204 to latest
+HHD 모니터링 툴이 탐지되었습니다.
+HHD monitoring tool has been detected.
+*/
+ MSG_DETECT_HHDUSBH = 0x590,
+/*20090204 to latest
+페인트붓이 필요합니다.
+Paintbrush is required.
+*/
+ MSG_USESKILL_FAIL_PAINTBRUSH = 0x591,
+/*20090204 to 20090401
+그림물감이 필요합니다.
+20090408 to latest
+서페이스페인트가 필요합니다.
+Paint is required.
+*/
+ MSG_USESKILL_FAIL_II_SURFACE_PAINTS = 0x592,
+/*20090204 to latest
+지정한 위치에 스킬을 사용할수 없습니다.
+Use the skills that are not at the specified location.
+*/
+ MSG_USESKILL_FAIL_POS = 0x593,
+/*20090204 to latest
+도우미의 SP가 부족합니다.
+Not enough SP.
+*/
+ MSG_USESKILL_FAIL_HELPER_SP_INSUFFICIENT = 0x594,
+#endif
+#if PACKETVER >= 20090211
+/*20090211 to 20090218
+생성 가능 캐릭터 수는 9개입니다!!(임시)
+20090226 to latest
+캐릭터 선택창의 캐릭터가 %d개를 초과하면 게임에 접속할 수 없습니다. 불필요한 캐릭터를 삭제해주십시오.
+Character %d is character selection window cannot connect to the game that exceeds the total. Please remove unwanted characters.
+*/
+ MSG_BAN_OVER_CHARACTER_LIST = 0x595,
+#endif
+#if PACKETVER >= 20090226
+/*20090226 to latest
+목캔디가 필요합니다.
+Throat Lozenge is required.
+*/
+ MSG_USESKILL_FAIL_II_NECK_CANDY = 0x596,
+/*20090226 to latest
+안타까운눈물이 필요합니다.
+Painful Tears is required.
+*/
+ MSG_USESKILL_FAIL_II_MISERABLE_TEAR = 0x597,
+/*20090226 to latest
+목 보호 캔디가 필요합니다.
+Throat Lozenge is required.
+*/
+ MSG_USESKILL_FAIL_II_PROTECT_NECK_CANDY = 0x598,
+/*20090226 to latest
+웨폰 블로킹의 연계로만 사용가능합니다.
+Cooperation is only available with Weapon Blocking.
+*/
+ MSG_USESKILL_FAIL_GC_WEAPONBLOCKING = 0x599,
+/*20090226 to latest
+길로틴크로스의 독을 바른 무기가 필요합니다.
+Poisoned weapons is required.
+*/
+ MSG_USESKILL_FAIL_GC_POISONINGWEAPON = 0x59a,
+/*20090226 to latest
+마도기어 탑승시에만 사용가능합니다.
+Item can only be used when Mado Gear is mounted.
+*/
+ MSG_USESKILL_FAIL_MADOGEAR = 0x59b,
+/*20090226 to latest
+발칸블릿이 필요합니다.
+Vulcan Bullet is required.
+*/
+ MSG_USESKILL_FAIL_II_VULCANBULLET = 0x59c,
+/*20090226 to latest
+마도기어 연료가 필요합니다.
+Mado Gear Fuel is required.
+*/
+ MSG_USESKILL_FAIL_II_FUELGAS = 0x59d,
+/*20090226 to latest
+액체냉각탄이 필요합니다.
+Liquid Cold Bullet is required.
+*/
+ MSG_USESKILL_FAIL_II_COLDSLOWERBULLET = 0x59e,
+/*20090226 to latest
+캐논볼을 장전 하세요.
+Please load a Cannon Ball.
+*/
+ MSG_USESKILL_FAIL_CANONBALL = 0x59f,
+/*20090226 to latest
+미도기어 가속장치를 착용하세요.
+Please equipped with a Mado Gear Accelerator.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_ACCELERATION = 0x5a0,
+/*20090226 to latest
+호버링부스터를 착용하세요.
+Please equipped with a Hovering Booster.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_HOVERING_BOOSTER = 0x5a1,
+#endif
+#if PACKETVER >= 20090304
+/*20090304 to latest
+[톡신] 독 효과가 무기에 적용되었습니다.
+[Toxin] Poison effect was applied to the weapon.
+*/
+ MSG_TOXIN = 0x5a2,
+/*20090304 to latest
+[패럴라이즈] 독 효과가 무기에 적용되었습니다.
+[Paralysis] Poison effect was applied to the weapon.
+*/
+ MSG_PARALYZE = 0x5a3,
+/*20090304 to latest
+[베놈블리드] 독 효과가 무기에 적용되었습니다.
+[Fatigue] Poison effect was applied to the weapon.
+*/
+ MSG_VENOMBLEED = 0x5a4,
+/*20090304 to latest
+[매직 머쉬룸] 독 효과가 무기에 적용되었습니다.
+[Laughing] Poison effect was applied to the weapon.
+*/
+ MSG_MAGICMUSHROOM = 0x5a5,
+/*20090304 to latest
+[데스 허트] 독 효과가 무기에 적용되었습니다.
+[Disheart] Poison effect was applied to the weapon.
+*/
+ MSG_DEATHHURT = 0x5a6,
+/*20090304 to latest
+[파이렉시아] 독 효과가 무기에 적용되었습니다.
+[Pyrexia] Poison effect was applied to the weapon.
+*/
+ MSG_PHYREXIA = 0x5a7,
+/*20090304 to latest
+[오블리비언 커즈] 독 효과가 무기에 적용되었습니다.
+[Oblivion] Poison effect was applied to the weapon.
+*/
+ MSG_OBLIANCURSE = 0x5a8,
+/*20090304 to latest
+[리치 엔드] 독 효과가 무기에 적용되었습니다.
+[Leech] Poison effect was applied to the weapon.
+*/
+ MSG_RICHEND = 0x5a9,
+#endif
+#if PACKETVER >= 20090311
+/*20090311 to latest
+호버링상태에서만 사용가능합니다.
+Can only be used in Hovering state.
+*/
+ MSG_USESKILL_FAIL_MADOGEAR_HOVERING = 0x5aa,
+/*20090311 to latest
+자폭장치를 장착하세요.
+Please equip a Self-Destruct Mechanism.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_SELFDESTRUCTION_DEVICE = 0x5ab,
+/*20090311 to latest
+셰이프쉬프터를 장착하세요.
+Please equip a Shape Shift.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_SHAPESHIFTER = 0x5ac,
+/*20090311 to latest
+길로틴독이 필요합니다.
+Guillotine Cross Poison is required.
+*/
+ MSG_USESKILL_FAIL_GUILLONTINE_POISON = 0x5ad,
+/*20090311 to latest
+냉각장치를 장착하세요.
+Please equipped with a Cooling System.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_COOLING_DEVICE = 0x5ae,
+/*20090311 to latest
+자기장필드생성기를 착용하세요.
+Please equipped with a Magnetic Field Generator.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_MAGNETICFIELD_GENERATOR = 0x5af,
+/*20090311 to latest
+베리어생성기를 착용하세요.
+Please equipped with a Barrier Generator.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_BARRIER_GENERATOR = 0x5b0,
+/*20090311 to latest
+광학미채발생기를 착용하세요.
+Please equipped with a Optical Camouflage Generator.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_OPTICALCAMOUFLAGE_GENERATOR = 0x5b1,
+/*20090311 to latest
+리페어키트를 착용하세요.
+Please equipped with a Repair Kit.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_REPAIRKIT = 0x5b2,
+/*20090311 to latest
+몽키 스패너가 필요합니다.
+Monkey Wrench is required.
+*/
+ MSG_USESKILL_FAIL_II_MONKEY_SPANNER = 0x5b3,
+#endif
+#if PACKETVER >= 20090318
+/*20090318 to latest
+[%s] 스킬을 시전 할 수 없습니다.
+[%s] Cannot use the skills due to cooldown delay.
+*/
+ MSG_SKILLINTERVAL2 = 0x5b4,
+/*20090318 to latest
+%d레벨 이상은 삭제가 불가능합니다.
+Deletion is impossible for over level %d
+*/
+ MSG_LEMIT_DELETE_LEVEL = 0x5b5,
+/*20090318 to 20110614
+마도기어 탑승시에는 사용할수 없습니다.
+20110622 to latest
+마도기어 탑승시에는 사용 할 수 없습니다.
+Can't be used while on Magic Gear.
+*/
+ MSG_USESKILL_FAIL_MADOGEAR_RIDE = 0x5b6,
+#endif
+#if PACKETVER >= 20090319
+/*20090319 to latest
+드래곤 내리기
+Dismount Dragon
+*/
+ MSG_DRAGONOFF = 0x5b7,
+/*20090319 to latest
+마도기어 내리기
+Dismount Magic Gear
+*/
+ MSG_MADOOFF = 0x5b8,
+#endif
+#if PACKETVER >= 20090401
+/*20090401 to latest
+소비
+I
+*/
+ MSG_STORE_TABNAME_0 = 0x5b9,
+/*20090401 to latest
+캐쉬
+Cash
+*/
+ MSG_STORE_TABNAME_1 = 0x5ba,
+/*20090401 to latest
+방어구
+Armors
+*/
+ MSG_STORE_TABNAME_2 = 0x5bb,
+/*20090401 to latest
+무기
+Weapons
+*/
+ MSG_STORE_TABNAME_3 = 0x5bc,
+/*20090401 to latest
+투사체
+Ammo
+*/
+ MSG_STORE_TABNAME_4 = 0x5bd,
+/*20090401 to latest
+카드
+Card
+*/
+ MSG_STORE_TABNAME_5 = 0x5be,
+/*20090401 to latest
+기타
+Other
+*/
+ MSG_STORE_TABNAME_6 = 0x5bf,
+/*20090401 to latest
+클라이언트 응답시간이 초과되어 연결이 끊어집니다.
+Client response time has passed so connection is terminated
+*/
+ MSG_ERROR_HS_TIMEOUT = 0x5c0,
+/*20090401 to latest
+핵쉴드 파일의 버전이 맞지 않습니다. 클라이언트를 재설치 해주십시오.
+Incorrect version of hack shield file. Please reinstall the client
+*/
+ MSG_ERROR_DIFF_CLIENT = 0x5c1,
+#endif
+#if PACKETVER >= 20090408
+/*20090408 to latest
+마법서가 필요합니다.
+[Magic Book] is required.
+*/
+ MSG_USESKILL_FAIL_SPELLBOOK = 0x5c2,
+/*20090408 to latest
+마법서가 너무 어려워서 졸음이 몰려온다.
+Feel sleepy since Magic Book is too difficult to understand.
+*/
+ MSG_USESKILL_FAIL_SPELLBOOK_DIFFICULT_SLEEP = 0x5c3,
+/*20090408 to latest
+보존포인트가 부족합니다.
+Not enough saved point.
+*/
+ MSG_USESKILL_FAIL_SPELLBOOK_PRESERVATION_POINT = 0x5c4,
+/*20090408 to latest
+더이상 마법서를 읽을수 없습니다.
+Can't read a Magic Book anymore.
+*/
+ MSG_USESKILL_FAIL_SPELLBOOK_READING = 0x5c5,
+/*20090408 to latest
+페이스페인트가 필요합니다.
+Face Paint is required.
+*/
+ MSG_USESKILL_FAIL_II_FACE_PAINTS = 0x5c6,
+/*20090408 to latest
+분장용붓이 필요합니다.
+Brush is required.
+*/
+ MSG_USESKILL_FAIL_II_MAKEUP_BRUSH = 0x5c7,
+/*20090408 to latest
+대기 시간이 초과하였습니다. 다시 로그인 해주십시오.
+Waiting time has passed. Please log in again
+*/
+ MSG_MOBILE_TIMEOVER = 0x5c8,
+/*20090408 to latest
+위험! 이미 동일한 계정이 로그인 중에 있습니다. 잠시 모바일 인증 진행을 멈추시고 비번을 수정한 뒤 재 로그인 해주십시오.
+Watch out! Same account is already logged in. Stop mobile verification and log in again after changing your password
+*/
+ MSG_MOBILE_ANOTHER_LOGIN = 0x5c9,
+/*20090408 to latest
+위험! 현재 동일한 계정이 모바일 인증 대기 중에 있습니다. 잠시 모바일 인증 진행을 멈추시고 비번을 수정한 뒤 재 로그인 해주십시오.
+Watch out! Same account is waiting for mobile verification. Stop mobile verification and log in again after changing your password
+*/
+ MSG_MOBILE_WAITING_STATE = 0x5ca,
+#endif
+#if PACKETVER >= 20090506
+/*20090506 to latest
+게임 옵션창
+Game setting window
+*/
+ MSG_ESC_OPTIONWND = 0x5cb,
+/*20090506 to latest
+그래픽 설정
+Graphics Settings
+*/
+ MSG_GRAPHIC_OPTIONWND = 0x5cc,
+/*20090506 to latest
+사운드 설정
+Sound Settings
+*/
+ MSG_SOUND_OPTIONWND = 0x5cd,
+#endif
+#if PACKETVER >= 20090514
+/*20090514 to latest
+변경 할 단축키를 누르거나, 'ESC'키를 눌러 삭제 해 주세요.
+Press a key to assign. Pressing 'ESC' will remove the assigned key.
+*/
+ MSG_HOTKEYWND_NOTICE1 = 0x5ce,
+/*20090514 to latest
+단일 키로 지정 할 수 없는 키입니다.
+Unable to specify a single key.
+*/
+ MSG_HOTKEYWND_NOTICE2 = 0x5cf,
+/*20090514 to latest
+지정 할 수 없는 키입니다.
+Unable to specify the key assigned.
+*/
+ MSG_HOTKEYWND_NOTICE3 = 0x5d0,
+/*20090514 to latest
+'%s'에 사용된 단축키와 중복됩니다. 바꾸시겠습니까?
+Duplicated with ['%s']. Do you still want to change?
+*/
+ MSG_HOTKEYWND_NOTICE4 = 0x5d1,
+/*20090514 to latest
+저장된 단축키 조합이 초기화 됩니다. 초기화 하시겠습니까?
+Initialization is stored in the shortcut key settings. Do you want to initialized?
+*/
+ MSG_HOTKEYWND_NOTICE5 = 0x5d2,
+/*20090514 to latest
+스킬바
+Skill Bar
+*/
+ MSG_HOTKEYWND_TAB1 = 0x5d3,
+/*20090514 to latest
+인터페이스
+Interface
+*/
+ MSG_HOTKEYWND_TAB2 = 0x5d4,
+/*20090514 to latest
+이모션
+Macros
+*/
+ MSG_HOTKEYWND_TAB3 = 0x5d5,
+/*20090514 to latest
+단축키 설정 창
+Shortcut Settings
+*/
+ MSG_HOTKEYWND_TITLE = 0x5d6,
+#endif
+#if PACKETVER >= 20090520
+/*20090520 to latest
+배경음
+BGM
+*/
+ MSG_BGM = 0x5d7,
+/*20090520 to latest
+효과음
+Effect
+*/
+ MSG_SOUND = 0x5d8,
+/*20090520 to latest
+스킨
+Skin
+*/
+ MSG_SKIN = 0x5d9,
+/*20090520 to latest
+채팅방 입장음만 소리남 On
+Chat room entrance sound on
+*/
+ MSG_TINGONLY_ON = 0x5da,
+/*20090520 to latest
+채팅방 입장음만 소리남 Off
+Chat room entrance sound off
+*/
+ MSG_TINGONLY_OFF = 0x5db,
+/*20090520 to latest
+/tingonly : 채팅방 입장음만 들을수있게됩니다
+/tingonly: you can hear only sound like a chat room entry.
+*/
+ MSG_EXPLAIN_TINGONLY = 0x5dc,
+/*20090520 to latest
+/주먹
+/rock
+*/
+ MSG_EMOTION_ROCK = 0x5dd,
+/*20090520 to latest
+/가위
+/scissors
+*/
+ MSG_EMOTION_SCISSOR = 0x5de,
+/*20090520 to latest
+/보
+/paper
+*/
+ MSG_EMOTION_WRAP = 0x5df,
+/*20090520 to latest
+/러브
+/love
+*/
+ MSG_EMOTION_LUV = 0x5e0,
+/*20090520 to latest
+/mobile
+*/
+ MSG_EMOTION_MOBILE = 0x5e1,
+/*20090520 to latest
+/mail
+*/
+ MSG_EMOTION_MAIL = 0x5e2,
+/*20090520 to latest
+/antenna0
+*/
+ MSG_EMOTION_ANTENNA0 = 0x5e3,
+/*20090520 to latest
+/antenna1
+*/
+ MSG_EMOTION_ANTENNA1 = 0x5e4,
+/*20090520 to latest
+/antenna2
+*/
+ MSG_EMOTION_ANTENNA2 = 0x5e5,
+/*20090520 to latest
+/antenna3
+*/
+ MSG_EMOTION_ANTENNA3 = 0x5e6,
+/*20090520 to latest
+/hum
+*/
+ MSG_EMOTION_HUM2 = 0x5e7,
+/*20090520 to latest
+/abs
+*/
+ MSG_EMOTION_ABS = 0x5e8,
+/*20090520 to latest
+/oops
+*/
+ MSG_EMOTION_OOPS = 0x5e9,
+/*20090520 to latest
+/spit
+*/
+ MSG_EMOTION_SPIT = 0x5ea,
+/*20090520 to latest
+/ene
+*/
+ MSG_EMOTION_ENE = 0x5eb,
+/*20090520 to latest
+/panic
+*/
+ MSG_EMOTION_PANIC = 0x5ec,
+/*20090520 to latest
+/whisp
+*/
+ MSG_EMOTION_WHISP = 0x5ed,
+#endif
+#if PACKETVER >= 20090527
+/*20090527 to latest
+지정안함
+Not Assigned
+*/
+ MSG_HOTKEY_NOTHING = 0x5ee,
+#endif
+#if PACKETVER >= 20090529
+/*20090529 to latest
+카트장착시에만 사용가능합니다.
+Only available when cart is mounted.
+*/
+ MSG_USESKILL_FAIL_CART = 0x5ef,
+/*20090529 to latest
+[가시나무 씨앗]이 필요합니다.
+[Thorny Seed] is required.
+*/
+ MSG_USESKILL_FAIL_II_THORNS_SEED = 0x5f0,
+/*20090529 to latest
+[흡혈 식물 씨앗]이 필요합니다.
+[Bloodsucker Seed] is required.
+*/
+ MSG_USESKILL_FAIL_II_BLOOD_SUCKER_SEED = 0x5f1,
+/*20090529 to latest
+더이상 시전할수 없습니다.
+Cannot be used anymore.
+*/
+ MSG_USESKILL_FAIL_NO_MORE_SPELL = 0x5f2,
+/*20090529 to latest
+[폭탄버섯포자]가 필요합니다.
+[Bomb Mushroom Spore] is required.
+*/
+ MSG_USESKILL_FAIL_II_BOMB_MUSHROOM_SPORE = 0x5f3,
+/*20090529 to latest
+[화염병]이 필요합니다.
+[Fire Bottle] is required.
+*/
+ MSG_USESKILL_FAIL_II_GASOLINE_BOOMB = 0x5f4,
+/*20090529 to latest
+[기름병]이 필요합니다.
+[Oil Bottle] is required.
+*/
+ MSG_USESKILL_FAIL_II_OIL_BOTTLE = 0x5f5,
+/*20090529 to latest
+[폭발가루]가 필요합니다.
+[Explosive Powder] is required.
+*/
+ MSG_USESKILL_FAIL_II_EXPLOSION_POWDER = 0x5f6,
+/*20090529 to latest
+[연막가루]가 필요합니다.
+[Smokescreen Powder] is required.
+*/
+ MSG_USESKILL_FAIL_II_SMOKE_POWDER = 0x5f7,
+/*20090529 to latest
+[최루가스]가 필요합니다.
+[Tear Gas] is required.
+*/
+ MSG_USESKILL_FAIL_II_TEAR_GAS = 0x5f8,
+/*20090529 to latest
+[염산병]이 필요합니다.
+[Acid Bottle] is required.
+*/
+ MSG_USESKILL_FAIL_II_HYDROCHLORIC_ACID_BOTTLE = 0x5f9,
+/*20090529 to latest
+[식인식물병]이 필요합니다.
+[Bottom Man-Eating Plant] is required.
+*/
+ MSG_USESKILL_FAIL_II_HELLS_PLANT_BOTTLE = 0x5fa,
+/*20090529 to latest
+[만드라고라의 화분]이 필요합니다.
+[Pot of Mandragora] is required.
+*/
+ MSG_USESKILL_FAIL_II_MANDRAGORA_FLOWERPOT = 0x5fb,
+#endif
+#if PACKETVER >= 20090603
+/*20090603 to latest
+파티장 위임
+Party delegation
+*/
+ MSG_YIELD_PARTYMASTER = 0x5fc,
+/*20090603 to latest
+정말 파티장을 위임하시겠습니까?
+Do you want to delegate the real party?
+*/
+ MSG_DO_YOU_REALLY_WANT_YIELD_PARTYMASTER = 0x5fd,
+/*20090603 to latest
+파티장을 위임 할 수 없습니다.
+Party cannot be delegated.
+*/
+ MSG_CANNOT_YIELD_PARTYMASTER = 0x5fe,
+/*20090603 to latest
+변경불가
+Immutable
+*/
+ MSG_FAILED_CHANGE = 0x5ff,
+/*20090603 to latest
+[%s]가 %d개 필요합니다.
+[%s] required '%d' amount.
+*/
+ MSG_USESKILL_FAIL_NEED_ITEM = 0x600,
+#endif
+#if PACKETVER >= 20090605
+/*20090605 to latest
+제련 수치가 하향 조정 되었습니다.
+Is now refining the value lowered.
+*/
+ MSG_ITEM_REFINING_DOWNGRADE = 0x601,
+/*20090605 to latest
+[%s]를 장비하고 있어야 사용할 수 있습니다
+Need to put on [%s] in order to use.
+*/
+ MSG_USESKILL_FAIL_NEED_EQUIPMENT = 0x602,
+#endif
+#if PACKETVER >= 20090617
+/*20090617 to 20090923
+전장 리스트
+20090929 to latest
+전장 입장 설정
+Battle field entrance setting
+*/
+ MSG_BATTLEFIELD_LIST = 0x603,
+/*20090617 to 20090929
+전장 - [%s] 신청 하시겠습니까?
+20091006 to latest
+% 전장으로 이동 할 수 없는 상태가 되어 전장 신청이 취소 되었습니다.
+Battlefield - [%s] you sign up?
+*/
+ MSG_CANNOT_JOINTO_BATTLEFIELD = 0x604,
+/*20090617 to 20090715
+전장 - [%s] 입장 신청이 완료되었습니다.
+20090722 to 20090929
+입장 신청이 완료되었습니다.
+20091006 to 20100810
+
+20100817 to latest
+
+Current admission application state.
+*/
+ MSG_COMPLETED_JOINTO_BATTLEFIELD = 0x605,
+/*20090617 to 20090624
+전장 - [%s] 입장 하실 수 없습니다.
+20090701 to 20090715
+전장 - [%s] 에 입장 할 수 없는 상태이므로 등록이 취소 되었습니다.
+20090722 to 20090929
+에 입장 할 수 없는 상태이므로 등록이 취소 되었습니다.
+20091006 to latest
+% 전장 입장이 보류 되었습니다. 다른 플레이어를 기다립니다.
+It was unregistered and not be able to enter the state.
+*/
+ MSG_DIFFER_JOINTO_BATTLEFIELD = 0x606,
+/*20090617 to 20090929
+현재 입장 신청 상태입니다.
+20091006 to 20100810
+
+20100817 to latest
+
+Current admission application state.
+*/
+ MSG_STATUS_JOINTO_BATTLEFIELD = 0x607,
+/*20090617 to 20090929
+입장 신청을 취소하시겠습니까?
+20091006 to 20100616
+%s 전장 신청을 정말로 취소하시겠습니까?
+20100622 to latest
+확인 단추를 누르면 전장 신청이 취소됩니다. 아래 단추를 클릭해 주세요.
+Do you want to cancel the admission application?
+*/
+ MSG_REQ_CANCEL_JOINTO_BATTLEFIELD = 0x608,
+/*20090617 to 20090715
+전장 - [%s] 입장 신청이 취소되었습니다.
+20090722 to 20090929
+입장 신청이 취소되었습니다.
+20091006 to latest
+%s 전장 입장 신청이 취소되었습니다.
+Admission request has been cancelled.
+*/
+ MSG_CANCEL_JOINTO_BATTLEFIELD = 0x609,
+/*20090617 to 20090929
+곧 전장으로 이동 합니다.
+20091006 to latest
+잠시후 %s 전장으로 이동 합니다. 공간 이동을 위한 안정적인 상태를 확보해 주시길 바랍니다. (거래 및 공간 이동 기능 일시 중지됨)
+Go to the battlefield quickly.
+*/
+ MSG_MOVETO_BATTLEFIELD = 0x60a,
+/*20090617 to 20091028
+전장 - [%s]
+20091103 to latest
+전장 명칭
+Battlefield - [%s]
+*/
+ MSG_BATTLEFIELD_NAME = 0x60b,
+#endif
+#if PACKETVER >= 20090624
+/*20090624 to latest
+정말 이동 하시겠습니까?
+Do you really want to go back to your savepoint?
+*/
+ MSG_MOVETO_SAVEPOINT = 0x60c,
+/*20090624 to latest
+파티원 찾기 메세지
+Search Message for Party Members
+*/
+ MSG_VIEW_SEEK_PARTY = 0x60d,
+/*20090624 to latest
+파티원 찾기 메세지 옵션이 꺼져있습니다.
+Message option is off the search party members.
+*/
+ MSG_UNVIEW_SEEK_PARTY = 0x60e,
+/*20090624 to latest
+10초간 파티 지원 딜레이가 걸려있습니다.
+10 seconds delay of party support is in effect
+*/
+ MSG_SEEK_PARTY_DEALY = 0x60f,
+#endif
+#if PACKETVER >= 20090701
+/*20090701 to latest
+ 파티장은 '%s' 님 입니다.
+Party leader is '%s'.
+*/
+ MSG_NOTIFY_PARTY_ROLE_MASTER = 0x610,
+/*20090701 to 20090715
+전장 - [%s] : 시스템 오류로 입장 할 수 없습니다.
+20090722 to latest
+시스템 오류로 입장 할 수 없습니다.
+Unable to enter due to system error.
+*/
+ MSG_ERROR_SYSTEM_ERROR_BATTLEFIELD = 0x611,
+/*20090701 to 20090715
+전장 - [%s] : 대기 인원 수 초과로 입장 할 수 없습니다.
+20090722 to latest
+대기 인원 수 초과로 입장 할 수 없습니다.
+Cannot wait to enter the number of excess.
+*/
+ MSG_ERROR_FULL_ESROOM_BATTLEFIELD = 0x612,
+/*20090701 to 20090715
+전장 - [%s] : 이미 신청 되었습니다.
+20090722 to latest
+이미 신청 되었습니다.
+Has already been applied.
+*/
+ MSG_ERROR_DOUBLE_OFFER_BATTLEFIELD = 0x613,
+/*20090701 to 20090715
+전장 - [%s] : 대기 시간이 초과되어 등록이 취소 되었습니다.
+20090722 to latest
+대기 시간이 초과되어 등록이 취소 되었습니다.
+Registration has been cancelled because of the excessive waiting time.
+*/
+ MSG_ERROR_WAIT_TIMEOUT_BATTLEFIELD = 0x614,
+/*20090701 to 20090715
+전장 - [%s] : 입장 조건이 맞지 않아, 등록이 취소 되었습니다.
+20090722 to latest
+입장 조건이 맞지 않아, 등록이 취소 되었습니다.
+Unregistered because admission requirements are not matching.
+*/
+ MSG_ERROR_BATTLEFILD_ENTER_BATTLEFIELD = 0x615,
+/*20090701 to 20090715
+전장 - [%s] : 오류가 발생하여 등록이 취소 되었습니다.
+20090722 to latest
+오류가 발생하여 등록이 취소 되었습니다.
+Was unregistered and error.
+*/
+ MSG_ERROR_DROP_ENTRANCESTATION_BATTLEFIELD = 0x616,
+#endif
+#if PACKETVER >= 20090708
+/*20090708 to latest
+[%s]의 연계 스킬입니다.
+The skill need [%s].
+*/
+ MSG_USESKILL_FAIL_COMBOSKILL = 0x617,
+/*20090708 to latest
+특정스킬 의 연계 스킬입니다.
+The skill need a particular skill.
+*/
+ MSG_USESKILL_FAIL_COMBOSKILL2 = 0x618,
+/*20090708 to latest
+기구체 %d 개가 필요합니다
+Requires %d mind bullets
+*/
+ MSG_USESKILL_FAIL_SPIRITS = 0x619,
+/*20090708 to 20090708
+기구체 %d 개가 필요합니다
+Requires %d mind bullets
+20090715 to latest
+기구체가 필요합니다
+Mind Bullet is required.
+*/
+ MSG_USESKILL_FAIL_SPIRITS2 = 0x61a,
+#endif
+#if PACKETVER >= 20090729
+/*20090729 to latest
+최대 소지량 보다 많은 룬스톤을 제작할 수 없습니다.
+Cannot create rune stone more than the maximum amount.
+*/
+ MSG_RUNESTONE_MAKEERROR_OVERCOUNT = 0x61b,
+/*20090729 to latest
+전장 리스트를 받을 수 없는 상태입니다. 확인 후 다시 시도 해 주세요.
+Not able to receive battle field list. Please check and try again
+*/
+ MSG_ERROR_LIST_OPEN_BATTLEFIELD = 0x61c,
+/*20090729 to latest
+레벨이 부족하여 입장 할 수 없습니다.
+Level is not high enough to enter
+*/
+ MSG_ERROR_LEVEL_LIMIT_BATTLEFIELD = 0x61d,
+#endif
+#if PACKETVER >= 20090805
+/*20090805 to latest
+ 1차 직업 스킬 %d개를 더 올려 주십시오.
+You must consume all '%d' points in your 1st Tab.
+*/
+ MSG_UPGRADESKILLERROR_MORE_FIRSTJOBSKILL = 0x61e,
+#endif
+#if PACKETVER >= 20091013
+/*20091013 to latest
+ 1차 혹은 2차 직업 스킬 %d개를 더 올려 주십시오.
+You must consume all '%d' remaining points in your 2nd Tab. 1st Tab is already done.
+*/
+ MSG_UPGRADESKILLERROR_MORE_SECONDJOBSKILL = 0x61f,
+/*20091013 to latest
+변환 가능한 아이템
+Items available for conversion
+*/
+ MSG_ITEMSYOUCANCHANGE = 0x620,
+/*20091013 to latest
+변환할 아이템
+Insert items to convert
+*/
+ MSG_ITEMS_FOR_CHANGE = 0x621,
+/*20091013 to latest
+변환이 불가능한 조합 입니다.
+Inconvertible combination
+*/
+ MSG_SKILL_RECIPE_NOTEXIST = 0x622,
+/*20091013 to latest
+인벤토리의 무게가 너무 무겁습니다.
+Inventory weight is too much
+*/
+ MSG_SKILL_INVENTORY_WEIGHT_OVER = 0x623,
+/*20091013 to latest
+인벤토리를 공간을 확보해주세요.
+Please secure some room in the inventory
+*/
+ MSG_SKILL_INVENTORY_KINDCNT_OVER = 0x624,
+/*20091013 to latest
+재료가 존재하지 않습니다.
+Material doesn't exist
+*/
+ MSG_SKILL_MATERIAL_FAIL = 0x625,
+/*20091013 to latest
+성공하였습니다.
+Successful.
+*/
+ MSG_SKILL_SUCCESS = 0x626,
+/*20091013 to latest
+실패 하였습니다.
+Failed.
+*/
+ MSG_SKILL_FAIL = 0x627,
+/*20091013 to latest
+실패하여 모든 재료가 사라졌습니다.
+all materials are gone due to failure
+*/
+ MSG_SKILL_FAIL_MATERIAL_DESTROY = 0x628,
+/*20091013 to latest
+지정하신 탭 이름이 너무 길어 변경 할 수 없습니다.
+unable to change the name of the specified tab, because it's too long.
+*/
+ MSG_FAILED_CHANGE_TABNAME = 0x629,
+/*20091013 to latest
+더 이상 추가 할 수 없습니다.
+Cannot add more.
+*/
+ MSG_FAILED_ADD_TAB = 0x62a,
+/*20091013 to latest
+인증에 실패 했습니다.
+Authentication failed.
+*/
+ MSG_FAILED_LOCKSERVER = 0x62b,
+/*20091013 to 20101012
+봇 체크
+20101019 to 20101020
+자동 로그인 방지
+20101026 to latest
+자동 입력 방지
+Bot checks
+*/
+ MSG_BOT_CHECK = 0x62c,
+/*20091013 to latest
+감정이 않된 아이템은 재료로 사용할 수 없습니다.
+Items cannot be used in materials cannot be emotional.
+*/
+ MSG_SKILL_FAIL_MATERIAL_IDENTITY = 0x62d,
+/*20091013 to latest
+접속하신 IP는 라그나로크 온라인 이용이 불가능 합니다. 고객 지원 센터 또는 홈페이지로 문의 해 주십시오.
+It is impossible to connect using this IP in Ragnarok Online. Please contact the customer support center or home.
+*/
+ MSG_BAN_IP_BLOCK = 0x62e,
+/*20091013 to latest
+비밀번호가 6회 이상 잘못 입력되어 잠시 동안 접속이 제한됩니다. 고객님의 개인정보를 다시 한 번 확인해 주시길 바랍니다.
+You have entered a wrong password for more than six times, please check your personal information again.
+*/
+ MSG_BAN_INVALID_PWD_CNT = 0x62f,
+/*20091013 to latest
+합성에 사용한 아이템은 소모됩니다. 괜찮겠습니까?
+Consumption items are used in the synthesis. Are you sure?
+*/
+ MSG_MIX_ACCEPT = 0x630,
+/*20091013 to latest
+왼쪽에 보이는 글자 및 숫자조합을 입력해주세요.
+Please input the captcha code found at your left side.
+*/
+ MSG_BOT_CHECK_NOTIC = 0x631,
+/*20091013 to latest
+전장 설명 -
+Describes the battlefield --
+*/
+ MSG_DESCRIBE_BATTLEFIELD = 0x632,
+/*20091013 to latest
+입장 대기 상태 -
+Waiting for admission --
+*/
+ MSG_BATTLEFIELD_STATUS = 0x633,
+/*20091013 to latest
+전장 입장 신청 도움말
+Request help battle position
+*/
+ MSG_BATTLEFIELD_HELP = 0x634,
+#endif
+#if PACKETVER >= 20091020
+/*20091020 to latest
+죄송합니다. 해당 직업의 캐릭터는 현재 테스트를 위해서 접속이 금지됩니다.
+Sorry the character you are trying to use is banned for testing connection.
+*/
+ MSG_BAN_NOT_ALLOWED_JOBCLASS = 0x635,
+#endif
+#if PACKETVER >= 20091027
+/*20091027 to latest
+모든 장비 해제
+Remove all equipment
+*/
+ MSG_REMOVE_EQUIPEDITEM = 0x636,
+#endif
+#if PACKETVER >= 20091103
+/*20091103 to latest
+미니 아이콘
+Mini Icon
+*/
+ MSG_MINI_ICON = 0x637,
+/*20091103 to latest
+진영 A : 진영 B
+Camp A: Camp B
+*/
+ MSG_BATTLEFIELD_TEAM = 0x638,
+/*20091103 to 20100616
+대기 상태
+20100622 to latest
+대기열
+Wait
+*/
+ MSG_WAIT_STATUS = 0x639,
+/*20091103 to latest
+전장 신청 취소 알림
+cancellation notice of Battlefield registration.
+*/
+ MSG_NOTIFY_BATTLEFIELD_CANCEL = 0x63a,
+/*20091103 to latest
+전장 필요 인원
+Required field for staff
+*/
+ MSG_BATTLEFIELD_COUNT = 0x63b,
+/*20091103 to latest
+전장 A 대기 인원
+Battlefield staff A is waiting.
+*/
+ MSG_BATTLEFIELD_ATEAM_COUNT = 0x63c,
+/*20091103 to latest
+전장 B 대기 인원
+Battlefield staff B is waiting.
+*/
+ MSG_BATTLEFIELD_BTEAM_COUNT = 0x63d,
+/*20091103 to latest
+내 대기 상황 : %d(진영 A)
+Waiting for my situation: %d (Camp A)
+*/
+ MSG_BATTLEFIELD_ATEAM_WAIT = 0x63e,
+/*20091103 to latest
+내 대기 상황 : %d(진영 B)
+Waiting for my situation: %d (Camp B)
+*/
+ MSG_BATTLEFIELD_BTEAM_WAIT = 0x63f,
+/*20091103 to latest
+전장 아이콘을 보여줍니다.
+Battlefield display icon.
+*/
+ MSG_SHOW_BATTLEFIELD_ICON = 0x640,
+/*20091103 to latest
+전장 아이콘을 보여주지 않습니다.
+Does not display the icon field.
+*/
+ MSG_DONT_SHOW_BATTLEFIELD_ICON = 0x641,
+/*20091103 to latest
+전장 이동 알림
+Field notification was moved.
+*/
+ MSG_NOTIFY_BATTLEFIELD_MOVE = 0x642,
+/*20091103 to latest
+전장 입장 보류 알림
+Admission pending notification of the battlefield
+*/
+ MSG_NOTIFY_BATTLEFIELD_DEFER = 0x643,
+/*20091103 to latest
+누군가
+Anyone
+*/
+ MSG_WHO_IS = 0x644,
+/*20091103 to latest
+ [%s](으)로부터 '%d'의 데미지를 받았습니다.
+ [%s] deal '%d' damage on you.
+*/
+ MSG_I_RECEIVED_DAMAGE = 0x645,
+/*20091103 to 20091104
+ [%s]가 [%s](으)로부터 '%d'의 데미지를 받았습니다.
+20091110 to latest
+ [%s]님이 [%s](으)로부터 '%d'의 데미지를 받았습니다.
+ [%s] received damage from [%s] with '%d' damage.
+*/
+ MSG_PARTY_RECEIVED_DAMAGE = 0x646,
+/*20091103 to latest
+ [%s]에게 '%d'의 데미지를 주었습니다.
+ [%s] received '%d' damage.
+*/
+ MSG_I_GAVE_DAMAGE = 0x647,
+/*20091103 to 20091104
+ [%s님]가 [%s]에게 '%d'의 데미지를 주었습니다.
+20091110 to latest
+ [%s]님이 [%s]에게 '%d'의 데미지를 주었습니다.
+ [%s] deal damage to [%s] with '%d' damage.
+*/
+ MSG_PARTY_GAVE_DAMAGE = 0x648,
+/*20091103 to latest
+%s %d 개 드롭
+You dropped '%s' (%d).
+*/
+ MSG_DROP_ITEM = 0x649,
+/*20091103 to latest
+ [%s]퀘스트의 [%s]몬스터를 처치하였습니다. (%d/%d)
+[%s] Quest - defeated [%s] progress (%d/%d)
+*/
+ MSG_CLEAR_QUEST_MONSTER = 0x64a,
+/*20091103 to latest
+%s 퀘스트가 삭제 되었습니다.
+The Quest '%s' has been removed.
+*/
+ MSG_DELETE_QUEST = 0x64b,
+/*20091103 to latest
+[%s]님이
+[%s] has
+*/
+ MSG_NOTIFY_WHO = 0x64c,
+/*20091103 to latest
+'%d'의 경험치를
+You acquired '%d' Experience Points
+*/
+ MSG_NOTIFY_EXP = 0x64d,
+/*20091103 to latest
+'%d'의 잡경험치를
+You acquired '%d' Job Experience Points
+*/
+ MSG_NOTIFY_JOBEXP = 0x64e,
+/*20091103 to latest
+획득했습니다.
+ gained.
+*/
+ MSG_GET = 0x64f,
+/*20091103 to latest
+상실했습니다.
+ has lost.
+*/
+ MSG_LOSS = 0x650,
+/*20091103 to latest
+ [%s](으)로부터 '%d'의 코인을 스틸했습니다.
+From [%s], '%d' coins were stolen.
+*/
+ MSG_NOTIFY_STEAL_COIN = 0x651,
+/*20091103 to latest
+전투 메시지
+Battle Message
+*/
+ MSG_VIEW_COMBAT_MSG = 0x652,
+/*20091103 to latest
+파티원 전투 메시지
+Display Party Battle Message
+*/
+ MSG_VIEW_PARTY_COMBAT_MSG = 0x653,
+/*20091103 to latest
+획득 경험치
+Display Experience Message
+*/
+ MSG_VIEW_GETTING_EXP_MSG = 0x654,
+/*20091103 to latest
+파티원의 획득 경험치
+Display Party Experience Message
+*/
+ MSG_VIEW_PARTY_GETTING_EXP_MSG = 0x655,
+/*20091103 to latest
+퀘스트 정보 표시
+Display Quest Info Message
+*/
+ MSG_VIEW_QUEST_INFO_MSG = 0x656,
+/*20091103 to latest
+전장 정보 표시
+Display Battlefield Message
+*/
+ MSG_VIEW_BATTLEFIELD_INFO_MSG = 0x657,
+#endif
+#if PACKETVER >= 20091104
+/*20091104 to latest
+[%s]에게
+[%s]
+*/
+ MSG_NOTIFY_TARGET_WHO = 0x658,
+/*20091104 to 20091104
+[%s] 스킬을 캐스팅합니다.
+20091110 to latest
+[%s] 스킬을 사용합니다.
+Casts [%s] skill.
+*/
+ MSG_NOTIFY_SKILL_TO_TARGET = 0x659,
+#endif
+#if PACKETVER >= 20091110
+/*20091110 to latest
+기능제한상태
+Activate lock function
+*/
+ MSG_LOCK_MOUSE = 0x65a,
+/*20091110 to latest
+기능제한해제상태
+Deactivate lock function
+*/
+ MSG_UNLOCK_MOUSE = 0x65b,
+#endif
+#if PACKETVER >= 20091201
+/*20091201 to latest
+[%s]님이 [%s](으)로부터 '%s' 를 획득 했습니다.
+Citizens of Midgard, Lady Luck shines upon [%s] !! [%s] has awarded the player with '%s' !!
+*/
+ MSG_BROADCASTING_SPECIAL_ITEM_OBTAIN = 0x65c,
+#endif
+#if PACKETVER >= 20091208
+/*20091208 to latest
+소드맨
+Swordman
+*/
+ MSG_JOB_SWORDMAN = 0x65d,
+/*20091208 to latest
+매지션
+Magician
+*/
+ MSG_JOB_MAGICIAN = 0x65e,
+/*20091208 to latest
+아처
+Archer
+*/
+ MSG_JOB_ARCHER = 0x65f,
+/*20091208 to latest
+어콜라이트
+Acolyte
+*/
+ MSG_JOB_ACOLYTE = 0x660,
+/*20091208 to latest
+머첸트
+Merchant
+*/
+ MSG_JOB_MERCHANT = 0x661,
+/*20091208 to latest
+씨프
+Thief
+*/
+ MSG_JOB_THIEF = 0x662,
+/*20091208 to latest
+나이트
+Knight
+*/
+ MSG_JOB_KNIGHT = 0x663,
+/*20091208 to latest
+프리스트
+Priest
+*/
+ MSG_JOB_PRIEST = 0x664,
+/*20091208 to latest
+위저드
+Wizard
+*/
+ MSG_JOB_WIZARD = 0x665,
+/*20091208 to latest
+블랙스미스
+Black Smith
+*/
+ MSG_JOB_BLACKSMITH = 0x666,
+/*20091208 to latest
+헌터
+Hunter
+*/
+ MSG_JOB_HUNTER = 0x667,
+/*20091208 to latest
+어새신
+Assasin
+*/
+ MSG_JOB_ASSASSIN = 0x668,
+/*20091208 to latest
+크루세이더
+Crusader
+*/
+ MSG_JOB_CRUSADER = 0x669,
+/*20091208 to latest
+몽크
+Monk
+*/
+ MSG_JOB_MONK = 0x66a,
+/*20091208 to latest
+세이지
+Sage
+*/
+ MSG_JOB_SAGE = 0x66b,
+/*20091208 to latest
+로그
+Rogue
+*/
+ MSG_JOB_ROGUE = 0x66c,
+/*20091208 to latest
+알케미스트
+Alchemist
+*/
+ MSG_JOB_ALCHEMIST = 0x66d,
+/*20091208 to latest
+바드
+Bard
+*/
+ MSG_JOB_BARD = 0x66e,
+/*20091208 to latest
+댄서
+Dancer
+*/
+ MSG_JOB_DANCER = 0x66f,
+/*20091208 to 20100310
+룬나이트
+20100316 to latest
+룬 나이트
+Rune Knight
+*/
+ MSG_JOB_RUNE_KNIGHT = 0x670,
+/*20091208 to latest
+워록
+Warlock
+*/
+ MSG_JOB_WARLOCK = 0x671,
+/*20091208 to latest
+레인져
+Ranger
+*/
+ MSG_JOB_RANGER = 0x672,
+/*20091208 to 20100310
+아크비숍
+20100316 to latest
+아크 비숍
+Arc Bishop
+*/
+ MSG_JOB_ARCHBISHOP = 0x673,
+/*20091208 to latest
+미케닉
+Mechanic
+*/
+ MSG_JOB_MECHANIC = 0x674,
+/*20091208 to 20100310
+길로틴크로스
+20100316 to latest
+길로틴 크로스
+Guillotine Cross
+*/
+ MSG_JOB_GUILLOTINE_CROSS = 0x675,
+/*20091208 to latest
+로얄가드
+Royal Guard
+*/
+ MSG_JOB_ROYAL_GUARD = 0x676,
+/*20091208 to latest
+소서러
+Sorcerer
+*/
+ MSG_JOB_SORCERER = 0x677,
+/*20091208 to latest
+민스트럴
+Minstrel
+*/
+ MSG_JOB_MINSTREL = 0x678,
+/*20091208 to latest
+원더러
+Wanderer
+*/
+ MSG_JOB_WANDERER = 0x679,
+/*20091208 to latest
+수라
+Sura
+*/
+ MSG_JOB_SURA = 0x67a,
+/*20091208 to latest
+제네릭
+Genetic
+*/
+ MSG_JOB_GENETIC = 0x67b,
+/*20091208 to 20100310
+쉐도우체이서
+20100316 to latest
+쉐도우 체이서
+Shadow Chaser
+*/
+ MSG_JOB_SHADOW_CHASER = 0x67c,
+/*20091208 to 20100113
+소드맨_하이
+20100119 to latest
+소드맨 하이
+High Swordman
+*/
+ MSG_JOB_SWORDMAN_H = 0x67d,
+/*20091208 to 20100113
+매지션_하이
+20100119 to latest
+매지션 하이
+High Magician
+*/
+ MSG_JOB_MAGICIAN_H = 0x67e,
+/*20091208 to 20100113
+아처_하이
+20100119 to latest
+아처 하이
+High Archer
+*/
+ MSG_JOB_ARCHER_H = 0x67f,
+/*20091208 to 20100113
+어콜라이트_하이
+20100119 to latest
+어콜라이트 하이
+High Acolyte
+*/
+ MSG_JOB_ACOLYTE_H = 0x680,
+/*20091208 to 20100113
+머첸트_하이
+20100119 to latest
+머첸트 하이
+High Merchant
+*/
+ MSG_JOB_MERCHANT_H = 0x681,
+/*20091208 to 20100113
+시프_하이
+20100119 to 20100223
+시프 하이
+20100302 to latest
+씨프 하이
+High Thief
+*/
+ MSG_JOB_THIEF_H = 0x682,
+/*20091208 to latest
+로드나이트
+Lord Knight
+*/
+ MSG_JOB_KNIGHT_H = 0x683,
+/*20091208 to latest
+하이프리스트
+High Priest
+*/
+ MSG_JOB_PRIEST_H = 0x684,
+/*20091208 to latest
+하이위저드
+High Wizard
+*/
+ MSG_JOB_WIZARD_H = 0x685,
+/*20091208 to latest
+화이트스미스
+White Smith
+*/
+ MSG_JOB_BLACKSMITH_H = 0x686,
+/*20091208 to latest
+스나이퍼
+Sniper
+*/
+ MSG_JOB_HUNTER_H = 0x687,
+/*20091208 to latest
+어새신크로스
+Assasin Cross
+*/
+ MSG_JOB_ASSASSIN_H = 0x688,
+/*20091208 to latest
+팔라딘
+Paladin
+*/
+ MSG_JOB_CRUSADER_H = 0x689,
+/*20091208 to latest
+챔피온
+Champion
+*/
+ MSG_JOB_MONK_H = 0x68a,
+/*20091208 to latest
+프로페서
+Professor
+*/
+ MSG_JOB_SAGE_H = 0x68b,
+/*20091208 to latest
+스토커
+Stalker
+*/
+ MSG_JOB_ROGUE_H = 0x68c,
+/*20091208 to latest
+크리에이터
+Creator
+*/
+ MSG_JOB_ALCHEMIST_H = 0x68d,
+/*20091208 to latest
+클로운
+Clown
+*/
+ MSG_JOB_BARD_H = 0x68e,
+/*20091208 to latest
+집시
+Gypsy
+*/
+ MSG_JOB_DANCER_H = 0x68f,
+/*20091208 to latest
+노비스
+Wedding
+*/
+ MSG_JOB_NOVICE = 0x690,
+/*20091208 to latest
+하이노비스
+High Novice
+*/
+ MSG_JOB_NOVICE_H = 0x691,
+/*20091208 to latest
+슈퍼노비스
+Super Novice
+*/
+ MSG_JOB_SUPERNOVICE = 0x692,
+/*20091208 to latest
+건슬링거
+Gunslinger
+*/
+ MSG_JOB_GUNSLINGER = 0x693,
+/*20091208 to latest
+닌자
+Ninja
+*/
+ MSG_JOB_NINJA = 0x694,
+/*20091208 to 20100105
+태권소녀,태권소년
+20100112 to 20100310
+태권소년소녀
+20100316 to latest
+태권소년/소녀
+Taekwon F/M
+*/
+ MSG_JOB_TAEKWON = 0x695,
+/*20091208 to latest
+권성
+Star Gladiator
+*/
+ MSG_JOB_STAR = 0x696,
+/*20091208 to latest
+소울링커
+Soul Linker
+*/
+ MSG_JOB_LINKER = 0x697,
+/*20091208 to latest
+파티모집
+Party Recruitment
+*/
+ MSG_SEEK_PARTY_MEMBER = 0x698,
+/*20091208 to 20100310
+파티 부킹 리스트
+20100316 to latest
+파티 모집 리스트
+Party Booking List
+*/
+ MSG_SEEK_PARTY_LIST = 0x699,
+/*20091208 to latest
+파티 모집 중
+Recruiting Party
+*/
+ MSG_SEEK_PARTY_CHECK = 0x69a,
+#endif
+#if PACKETVER >= 20091215
+/*20091215 to latest
+[활]을 장착한 상태여야 합니다.
+[Bow] must be equipped.
+*/
+ MSG_FAIL_NEED_EQUIPPED_BOW = 0x69b,
+/*20091215 to latest
+[악기/채찍]을 장착한 상태여야 합니다.
+[Musical Instrument/Whip] must be equipped.
+*/
+ MSG_FAIL_NEED_EQUIPPED_INSTRUMENT_WHIP = 0x69c,
+/*20091215 to latest
+영문과 숫자만 사용가능합니다.
+Only alphanumeric characters are allowed.
+*/
+ MSG_BAD_CHAR = 0x69d,
+/*20091215 to latest
+알림
+Notice
+*/
+ MSG_ALRAM = 0x69e,
+/*20091215 to latest
+상점 정보가 정확하지 않아 아이템 구매가 실패하였습니다.
+Item purchase failed due to incorrect shop information.
+*/
+ MSG_FAIL_BUY_ITEM_INVALID_MCSTORE = 0x69f,
+#endif
+#if PACKETVER >= 20100105
+/*20100105 to latest
+소지 아이템 창에서 버릴 수 있습니다.
+Item cannot be discarded from the window.
+*/
+ MSG_CAN_DROP_ITEM_TO_ITEMWND = 0x6a0,
+#endif
+#if PACKETVER >= 20100112
+/*20100112 to latest
+시간
+Time
+*/
+ MSG_TIME = 0x6a1,
+/*20100112 to latest
+맵
+Map
+*/
+ MSG_MAP = 0x6a2,
+/*20100112 to latest
+거래 상태에서는 아이템 사용 및 장비 착용/해제를 할 수 없습니다.
+You can't use, equip or disarm items when you're trading.
+*/
+ MSG_CANT_USE_WHEN_OPENED_EXCHANGEWND = 0x6a3,
+/*20100112 to latest
+미지정값
+Unspecified value
+*/
+ MSG_HOTKEY_UNKOWN = 0x6a4,
+#endif
+#if PACKETVER >= 20100126
+/*20100126 to latest
+/stateinfo : 상태 아이콘에 대한 설명을 보여줍니다. On Off
+/stateinfo: Shows the description of status icons. On Off
+*/
+ MSG_EXPLAIN_STATEINFO = 0x6a5,
+/*20100126 to latest
+상태 정보 On : 상태 아이콘에 대한 설명이 표시됩니다.
+Status Information On: Status icon description is enabled.
+*/
+ MSG_SHOW_STATEINFO_ON = 0x6a6,
+/*20100126 to latest
+상태 정보 Off: 상태 아이콘에 대한 설명이 표시되지 않습니다.
+Status Information Off: Status icon description is disabled.
+*/
+ MSG_SHOW_STATEINFO_OFF = 0x6a7,
+/*20100126 to 20100126
+같은 아이템은 한번에 %d개 이상은 살수 없습니다.
+20100202 to latest
+같은 아이템은 한번에 %d개 이상은 살 수 없습니다.
+It is not possible to purchase the same item more than %d pieces at a time
+*/
+ MSG_LIMIT_BUY_ITEM2 = 0x6a8,
+#endif
+#if PACKETVER >= 20100202
+/*20100202 to latest
+같은 아이템은 한번에 %d개 이상은 팔 수 없습니다.
+It is not possible to purchase the same item more than %d pieces at a time
+*/
+ MSG_LIMIT_SELL_ITEM = 0x6a9,
+/*20100202 to 20100203
+총 구매 가능 개수는 %d개 입니다.
+20100209 to latest
+해당 아이템의 총 구매 가능 개수는 %d개 입니다.
+Can purchase upto %d pieces of the same item at a time.
+*/
+ MSG_CAN_BUY_ITEM_NUM = 0x6aa,
+#endif
+#if PACKETVER >= 20100209
+/*20100209 to latest
+설정한 내용은 정상 종료 시 [%s\%s]에 저장됩니다.
+User customized key is saved to [%s\%s]
+*/
+ MSG_SAVE_HOTKEY_TO_FILE = 0x6ab,
+#endif
+#if PACKETVER >= 20100216
+/*20100216 to latest
+[%s] 님은 현재 교환 신청을 받을 수 없는 상태입니다.
+[%s] is currently on trade and cannot accept the request.
+*/
+ MSG_CHARACTER_IS_BUSY = 0x6ac,
+#endif
+#if PACKETVER >= 20100309
+/*20100309 to latest
+RO_HELP
+RO_HELP.
+*/
+ MSG_RO_HELP = 0x6ad,
+#endif
+#if PACKETVER >= 20100316
+/*20100316 to latest
+모루가 존재 하지 않습니다.
+Anvil does not exist.
+*/
+ MSG_HAVENOT_ANVIL = 0x6ae,
+/*20100316 to latest
+노비스 레벨 10 이하는 귓속말이 금지됩니다
+Novice below level 10 is not allowed to whisper.
+*/
+ MSG_WHISPER_BLOCK_NOVICE_LEVEL10 = 0x6af,
+#endif
+#if PACKETVER >= 20100323
+/*20100323 to latest
+공격
+Attack
+*/
+ MSG_JOB_ATTACKER = 0x6b0,
+/*20100323 to latest
+방어
+Defense
+*/
+ MSG_JOB_TANKER = 0x6b1,
+/*20100323 to latest
+회복
+Consumables
+*/
+ MSG_JOB_HEALER = 0x6b2,
+/*20100323 to latest
+보조
+Support
+*/
+ MSG_JOB_ASSISTANCE = 0x6b3,
+/*20100323 to latest
+파티 모집 관련 명령어
+Party recruitment related command
+*/
+ MSG_DESCRIBE_PARTY_BOOKING = 0x6b4,
+#endif
+#if PACKETVER >= 20100330
+/*20100330 to latest
+길드 동맹신청이 불가능합니다
+Guild alliance application is not possible.
+*/
+ MSG_GUILD_ALLY_REQUEST_DISABLE = 0x6b5,
+/*20100330 to latest
+길드 적대신청이 불가능합니다
+Guild hostility application is not possible.
+*/
+ MSG_GUILD_HOSTILE_REQUEST_DISABLE = 0x6b6,
+/*20100330 to latest
+아지트맵에서는 친구추가가 불가능합니다
+Adding friends is not possible in this map.
+*/
+ MSG_FRIEND_ADD_FALSE_AGIT = 0x6b7,
+#endif
+#if PACKETVER >= 20100406
+/*20100406 to latest
+구매노점 개설
+Buying Store Window
+*/
+ MSG_BUYINGSTORE_MAKEWND_TITLE = 0x6b8,
+/*20100406 to latest
+구매가 :
+Price:
+*/
+ MSG_BUYINGSTORE_MAKEWND_PRICE = 0x6b9,
+/*20100406 to latest
+소지액 :
+Money:
+*/
+ MSG_BUYINGSTORE_MAKEWND_MYZENY = 0x6ba,
+/*20100406 to latest
+구매 한도액
+Purchase Zeny Limit
+*/
+ MSG_BUYINGSTORE_MAKEWND_LIMITZENY = 0x6bb,
+/*20100406 to 20100414
+판매 가능한 아이템 목록
+Available items:
+20100420 to latest
+구매할 아이템을 등록하지 않았습니다. 구매하실 아이템을 등록해 주세요
+Please register the item first that has to be purchased.
+*/
+ MSG_BUYINGSTORE_MAKEWND_ADDITEM = 0x6bc,
+/*20100406 to 20100414
+나의 구매노점
+Purchase list:
+20100420 to latest
+%s 아이템의 가격을 입력해 주세요.
+Enter the price for item %s.
+*/
+ MSG_BUYINGSTORE_MAKEWND_INPUTPRICE = 0x6bd,
+/*20100406 to 20100414
+구매 노점
+Wanted items
+20100420 to latest
+%s 아이템의 가격을 9999만 Zeny이하로 입력해 주세요.
+Enter the price for item %s. It has to be below 99990000 Zeny.
+*/
+ MSG_BUYINGSTORE_MAKEWND_REINPUTPRICE = 0x6be,
+/*20100406 to 20100414
+제한금액 : %d Zeny
+20100420 to latest
+%s 아이템의 구매수량을 입력해 주세요.
+Enter the item number for %s.
+*/
+ MSG_BUYINGSTORE_MAKEWND_INPUTNUM = 0x6bf,
+/*20100406 to 20100414
+%s %s Zeny %d 개
+Buying %s for %s Zeny. Amount: %d.
+20100420 to latest
+%s 아이템의 소지수량과 구매수량의 합이 9999개 이상입니다. 9999개 이하의 수량을 입력해 주세요.
+The sum of purchasing and belonging items is over 9999. The sum has to be bellow 9999.
+*/
+ MSG_BUYINGSTORE_MAKEWND_REINPUTNUM = 0x6c0,
+/*20100406 to 20100414
+%s : %s Zeny => %s EA
+%s: %s Zeny => %s ea.
+20100420 to latest
+중복된 아이템이 존재합니다.
+You have duplicate items in your purchase list.
+*/
+ MSG_BUYINGSTORE_MAKEWND_DUPLICATEITEM = 0x6c1,
+/*20100406 to 20100414
+%s %d 개 구매.
+20100420 to latest
+제한 금액을 입력해 주세요
+Enter the limited price.
+*/
+ MSG_BUYINGSTORE_MAKEWND_INPUTLIMITZENY = 0x6c2,
+/*20100406 to 20100414
+아이템을 모두 구매했습니다.
+You purchased all items.
+20100420 to latest
+입력한 제한금액이 소지금액을 초과합니다. 다시 설정해 주세요
+You have entered a greater amount of zeny than you have. Please check your zeny.
+*/
+ MSG_BUYINGSTORE_MAKEWND_REINPUTLIMITZENY = 0x6c3,
+/*20100406 to 20100414
+해당 아이템의 총 판매 가능 개수는 %d개 입니다.
+The max. number of items you can sell is %d.
+20100420 to latest
+%s : %s Zeny => %s EA
+%s: %s Zeny => %s ea.
+*/
+ MSG_BUYINGSTORE_MAKEWND_ITEMLIST = 0x6c4,
+/*20100406 to 20100414
+가격이 0 Zeny인 아이템이 존재합니다. 가격을 입력해 주세요.
+20100420 to latest
+구매 가능한 아이템 목록
+Available items:
+*/
+ MSG_BUYINGSTORE_MIRRORBUYITEMLIST = 0x6c5,
+/*20100406 to 20100414
+가격이 9999만 Zeny이상인 아이템이 존재합니다. 9999만 Zeny 이하의 가격을 입력해 주세요.
+20100420 to latest
+나의 구매노점
+Purchase list:
+*/
+ MSG_BUYINGSTORE_MYSHOPWND_TITLE = 0x6c6,
+/*20100406 to 20100414
+구매수량이 0 개인 아이템이 존재합니다. 수량을 입력해 주세요.
+20100420 to 20110208
+제한금액 : %d Zeny
+20110215 to latest
+제한금액 : %s Zeny
+Price limit: %s Zeny
+*/
+ MSG_BUYINGSTORE_MYSHOPWND_LIMITZENY = 0x6c7,
+/*20100406 to 20100414
+구매수량이 9999개 이상인 아이템이 존재합니다. 9999개 이하의 수량을 입력해 주세요.
+20100420 to latest
+%s %s Zeny %d 개
+Buying %s for %s Zeny. Amount: %d.
+*/
+ MSG_BUYINGSTORE_MYSHOPWND_ITEMINFO = 0x6c8,
+/*20100406 to 20100414
+중복된 아이템이 존재합니다.
+You have duplicate items in your purchase list.
+20100420 to latest
+구매 노점
+Wanted items
+*/
+ MSG_BUYINGSTORE_SHOPWND_TITLE = 0x6c9,
+/*20100406 to 20100414
+구매상점 열기에 실패했습니다.
+20100420 to latest
+판매 가능한 아이템 목록
+Available items:
+*/
+ MSG_BUYINGSTORE_MIRRORSELLWND_TITLE = 0x6ca,
+/*20100406 to 20100414
+구매상점 열기에 실패했습니다.
+20100420 to latest
+해당 아이템의 총 판매 가능 개수는 %d개 입니다.
+The max. number of items you can sell is %d.
+*/
+ MSG_BUYINGSTORE_SELLWND_LIMITNUM = 0x6cb,
+/*20100406 to 20100414
+구매가능한 최대 갯수를 초과하였습니다.
+20100420 to 20110208
+구매자의 잔액이 부족하니 다시 설정해 주세요
+20110215 to latest
+구매노점의 제한금액을 초과하여 판매할 수 없습니다.
+Buyer has insufficient money, lower the amount of items you're selling.
+*/
+ MSG_BUYINGSTORE_SELLWND_LACKBUYERZENY = 0x6cc,
+/*20100406 to 20100414
+남은 잔액으로 아이템 구매가 불가능 합니다.
+20100420 to latest
+구매상점 개설에 실패했습니다.
+Failed to open purchase shop.
+*/
+ MSG_BUYINGSTORE_OPEN_FAILED = 0x6cd,
+#endif
+#if PACKETVER >= 20100413
+/*20100413 to 20100414
+소환된 정령이 없습니다.
+You don't have any summoned spirits.
+20100420 to latest
+아이템의 총 무게가 %d 만큼 소지 한계량을 초과합니다. 다시 설정해 주세요.
+You exceed the total amount of items.
+*/
+ MSG_BUYINGSTORE_OVERWEIGHT = 0x6ce,
+/*20100413 to 20100414
+서버연합대전 제약사항 입니다.
+This is a restricted server.
+20100420 to latest
+제한금액만큼의 아이템을 모두 구매하였습니다.
+You have purchased all items within the limited price.
+*/
+ MSG_BUYINGSTORE_TRADE_OVERLIMITZENY = 0x6cf,
+#endif
+#if PACKETVER >= 20100420
+/*20100420 to latest
+아이템을 모두 구매했습니다.
+You purchased all items.
+*/
+ MSG_BUYINGSTORE_TRADE_BUYCOMPLETE = 0x6d0,
+/*20100420 to latest
+구매자의 잔액이 부족하여 거래가 실패하였습니다.
+Failed to deal because you have not enough Zeny.
+*/
+ MSG_BUYINGSTORE_TRADE_LACKBUYERZENY = 0x6d1,
+/*20100420 to latest
+%s %d개를 %dz에 판매하였습니다.
+You have sold %s. Amount: %d. Total Zeny: %dz
+*/
+ MSG_BUYINGSTORE_TRADE_SELLCOMPLETE = 0x6d2,
+/*20100420 to latest
+%s 아이템은 희망 구매갯수보다 수량이 많아 판매하지 못하였습니다
+%s item could not be sold because you do not have the wanted amount of items.
+*/
+ MSG_BUYINGSTORE_TRADE_OVERCOUNT = 0x6d3,
+/*20100420 to latest
+소환된 정령이 없습니다.
+You don't have any summoned spirits.
+20130807 to 20130814
+판매할 아이템을 등록하지 않았습니다. 판매하실 아이템을 등록해 주세요
+Has not registered to sell the item. Please register to sell the item
+*/
+ MSG_USESKILL_FAIL_EL_SUMMON = 0x6d4,
+/*20100420 to latest
+서버연합대전 제약사항 입니다.
+This is a restricted server.
+20130807 to 20130814
+소환된 정령이 없습니다.
+You don't have any summoned spirits.
+*/
+ MSG_AGAINSTSERVERSIEGEWARFARE_RESTRICTION = 0x6d5,
+/*20100420 to latest
+OTP 비밀번호는 6자리 입니다.
+OTP password is 6 digits long.
+20130807 to 20130814
+서버연합대전 제약사항 입니다.
+This is a restricted server.
+*/
+ MSG_OTP_MUST_6_CHAR = 0x6d6,
+/*20100420 to latest
+OTP 정보가 없습니다. 관리자에게 문의하시기 바랍니다.
+OTP information is unavailable. Please contact your administrator.
+20130807 to 20130814
+OTP 비밀번호는 6자리 입니다.
+OTP password is 6 digits long.
+*/
+ MSG_DB_ERROR = 0x6d7,
+/*20100420 to latest
+OTP 인증에 실패 했습니다.
+OTP authentication failed.
+20130807 to 20130814
+OTP 정보가 없습니다. 관리자에게 문의하시기 바랍니다.
+OTP information is unavailable. Please contact your administrator.
+*/
+ MSG_OTP_FAILED = 0x6d8,
+/*20100420 to latest
+파티광고가 추가되었습니다
+Party ad has been added.
+20130807 to 20130814
+OTP 인증에 실패 했습니다.
+OTP authentication failed.
+*/
+ MSG_PARTY_BOOKING_NOTIFY = 0x6d9,
+/*20100420 to 20110719
+파티원 모집 중
+20110726 to latest
+모집 중
+Recruit party members
+20130807 to 20130814
+파티광고가 추가되었습니다
+Party ad has been added.
+*/
+ MSG_PARTY_BOOKING_REQURT = 0x6da,
+/*20100420 to latest
+역할
+Roles
+20130807 to 20130814
+모집 중
+Recruit party members
+*/
+ MSG_PARTY_BOOKING_TYPE = 0x6db,
+/*20100420 to latest
+1차 직업
+1st Jobs
+20130807 to 20130814
+역할
+Roles
+*/
+ MSG_PARTY_BOOKING_TYPE_1 = 0x6dc,
+/*20100420 to latest
+2차 직업
+2nd Jobs
+20130807 to 20130814
+1차 직업
+1st Jobs
+*/
+ MSG_PARTY_BOOKING_TYPE_2 = 0x6dd,
+/*20100420 to latest
+3-1차 직업
+3-1 Classes
+20130807 to 20130814
+2차 직업
+2nd Jobs
+*/
+ MSG_PARTY_BOOKING_TYPE_3_1 = 0x6de,
+/*20100420 to latest
+3-2차 직업
+3-2 Classes
+20130807 to 20130814
+3-1차 직업
+3-1 Classes
+*/
+ MSG_PARTY_BOOKING_TYPE_3_2 = 0x6df,
+/*20100420 to latest
+전승 1차 직업
+1st Job High
+20130807 to 20130814
+3-2차 직업
+3-2 Classes
+*/
+ MSG_PARTY_BOOKING_TYPE_1PLUS = 0x6e0,
+/*20100420 to latest
+전승 2차 직업
+2nd Jobs High
+20130807 to 20130814
+전승 1차 직업
+1st Job High
+*/
+ MSG_PARTY_BOOKING_TYPE_2PLUS = 0x6e1,
+/*20100420 to latest
+기타 직업군
+Other Jobs
+20130807 to 20130814
+전승 2차 직업
+2nd Jobs High
+*/
+ MSG_PARTY_BOOKING_TYPE_ETC = 0x6e2,
+/*20100420 to latest
+모집 하기
+Recruit
+20130807 to 20130814
+기타 직업군
+Other Jobs
+*/
+ MSG_PARTY_BOOKING_REQURTING = 0x6e3,
+/*20100420 to latest
+파티원을 모집합니다.
+Open party recruitment window.
+20130807 to 20130814
+모집 하기
+Recruit
+*/
+ MSG_PARTY_BOOKING_REQURT_TIP = 0x6e4,
+/*20100420 to 20110719
+검색중 -
+20110726 to latest
+검색 중 -
+Searching -
+20130807 to 20130814
+파티원을 모집합니다.
+Open party recruitment window.
+*/
+ MSG_PARTY_BOOKING_SEARCH = 0x6e5,
+/*20100420 to latest
+모두 선택
+Select All
+20130807 to 20130814
+검색 중 -
+Searching -
+*/
+ MSG_PARTY_BOOKING_ALL_SELECT = 0x6e6,
+/*20100420 to latest
+최소한 하나의 직업이 모집 중이어야 합니다.
+Recruitment of at least one job must be running.
+20130807 to 20130814
+모두 선택
+Select All
+*/
+ MSG_PARTY_BOOKING_ERR1 = 0x6e7,
+/*20100420 to latest
+최소 1개이상의 직업을 선택해 주셔야 합니다.
+You have to select atleast 1 or more jobs.
+20130807 to 20130814
+최소한 하나의 직업이 모집 중이어야 합니다.
+Recruitment of at least one job must be running.
+*/
+ MSG_PARTY_BOOKING_ERR2 = 0x6e8,
+/*20100420 to latest
+선택된 직업은 %d개입니다. 최대 6개까지만 직업을 선택할 수 있습니다.
+You have selected %d Jobs. You can only select up to 6 different jobs.
+20130807 to 20130814
+최소 1개이상의 직업을 선택해 주셔야 합니다.
+You have to select atleast 1 or more jobs.
+*/
+ MSG_PARTY_BOOKING_ERR3 = 0x6e9,
+/*20100420 to latest
+레벨에 숫자 이외의 문자는 들어갈 수 없습니다.
+Only numeric characters are allowed.
+20130807 to 20130814
+선택된 직업은 %d개입니다. 최대 6개까지만 직업을 선택할 수 있습니다.
+You have selected %d Jobs. You can only select up to 6 different jobs.
+*/
+ MSG_PARTY_BOOKING_ERR4 = 0x6ea,
+/*20100420 to latest
+레벨은 1~150 사이의 숫자를 입력해 주세요.
+Please enter levels between 1~150.
+20130807 to 20130814
+레벨에 숫자 이외의 문자는 들어갈 수 없습니다.
+Only numeric characters are allowed.
+*/
+ MSG_PARTY_BOOKING_ERR5 = 0x6eb,
+#endif
+#if PACKETVER >= 20100511
+/*20100511 to latest
+ 해당 맵에서는 의상 장비가 보이지 않습니다.
+Nothing found in the selected map.
+20130807 to 20130814
+레벨은 1~150 사이의 숫자를 입력해 주세요.
+Please enter levels between 1~150.
+*/
+ MSG_DISABLE_COSTUMEITEM_MAP = 0x6ec,
+#endif
+#if PACKETVER >= 20100525
+/*20100525 to latest
+아이템을 착용할 수 있는 레벨이 아닙니다.
+You cannot equip this item with your current level.
+20130807 to 20130814
+ 해당 맵에서는 의상 장비가 보이지 않습니다.
+Nothing found in the selected map.
+*/
+ MSG_CANNOT_EQUIP_ITEM_LEVEL = 0x6ed,
+/*20100525 to latest
+아이템을 사용할 수 있는 레벨이 아닙니다.
+You cannot use this item with your current level.
+20130807 to 20130814
+아이템을 착용할 수 있는 레벨이 아닙니다.
+You cannot equip this item with your current level.
+*/
+ MSG_CANNOT_USE_ITEM_LEVEL = 0x6ee,
+#endif
+#if PACKETVER >= 20100601
+/*20100601 to latest
+ 채팅모드 OnOff 활성화
+Enable Battlemode
+20130807 to 20130814
+아이템을 사용할 수 있는 레벨이 아닙니다.
+You cannot use this item with your current level.
+*/
+ MSG_CHATMODE_ONOFF = 0x6ef,
+/*20100601 to latest
+탭사이즈 크기가 초과되어 추가할 수 없습니다.
+Failed to add because you have reached the limit.
+20130807 to 20130814
+ 채팅모드 OnOff 활성화
+Enable Battlemode
+*/
+ MSG_OVER_TABSIZE = 0x6f0,
+/*20100601 to 20100601
+ 창 표시 정보.
+20100608 to latest
+ 창 표시 정보
+Window Sign Information
+20130807 to 20130814
+탭사이즈 크기가 초과되어 추가할 수 없습니다.
+Failed to add because you have reached the limit.
+*/
+ MSG_SET_CHATINFO = 0x6f1,
+#endif
+#if PACKETVER >= 20100608
+/*20100608 to latest
+판매
+Sell
+20130807 to 20130814
+ 창 표시 정보
+Window Sign Information
+*/
+ MSG_SELL = 0x6f2,
+/*20100608 to latest
+구매
+Purchase
+20130807 to 20130814
+판매
+Sell
+*/
+ MSG_BUY = 0x6f3,
+/*20100608 to latest
+노점 검색
+Search for Vends
+20130807 to 20130814
+구매
+Purchase
+*/
+ MSG_SEARCH_STOREINFO = 0x6f4,
+/*20100608 to latest
+노점 이름
+Shop Name
+20130807 to 20130814
+노점 검색
+Search for Vends
+*/
+ MSG_STORE_NAME = 0x6f5,
+/*20100608 to latest
+수량
+Quantity
+20130807 to 20130814
+노점 이름
+Shop Name
+*/
+ MSG_SEARCH_ITEM_COUNT = 0x6f6,
+/*20100608 to latest
+가격
+Cost
+20130807 to 20130814
+수량
+Quantity
+*/
+ MSG_SEARCH_ITEM_PRICE = 0x6f7,
+/*20100608 to latest
+검색 결과가 너무 많습니다. 검색어를 자세히 입력 해 주세요.
+Too much results have been found. Please do a more precisely search.
+20130807 to 20130814
+가격
+Cost
+*/
+ MSG_SSI_FAILED_OVER_MAXCOUNT = 0x6f8,
+/*20100608 to latest
+해당 노점을 여시겠습니까?
+Do you want to open a street stall?
+20130807 to 20130814
+검색 결과가 너무 많습니다. 검색어를 자세히 입력 해 주세요.
+Too much results have been found. Please do a more precisely search.
+*/
+ MSG_OPEN_SEARCH_STORE = 0x6f9,
+/*20100608 to latest
+SSO 인증에 실패하였습니다.
+Failed to recognize SSO.
+20130807 to 20130814
+해당 노점을 여시겠습니까?
+Do you want to open a street stall?
+*/
+ MSG_SSO_FAILED = 0x6fa,
+#endif
+#if PACKETVER >= 20100615
+/*20100615 to latest
+현재 해당지역으로 이동 할 수 없습니다
+Cannot move to the applied area.
+20130807 to 20130814
+SSO 인증에 실패하였습니다.
+Failed to recognize SSO.
+*/
+ MSG_ZONE_MOVE_FAIL = 0x6fb,
+/*20100615 to 20100622
+포함 검색
+20100629 to latest
+단어가 포함된 아이템 검색
+searching item including the word
+20130807 to 20130814
+현재 해당지역으로 이동 할 수 없습니다
+Cannot move to the applied area.
+*/
+ MSG_SEARCH_INCLUDED = 0x6fc,
+/*20100615 to latest
+탈퇴한 유저입니다.
+User has been expelled.
+20130807 to 20130814
+단어가 포함된 아이템 검색
+searching item including the word
+*/
+ MSG_WITHDREW_USERS = 0x6fd,
+/*20100615 to latest
+게임 이용에 동의하지 않았습니다.
+You have not accepted the user agreements yet.
+20130807 to 20130814
+탈퇴한 유저입니다.
+User has been expelled.
+*/
+ MSG_DIDNOT_AGREE = 0x6fe,
+/*20100615 to latest
+존재 하지 않는 계정입니다.
+You will not be disconnect from the game.
+20130807 to 20130814
+게임 이용에 동의하지 않았습니다.
+You have not accepted the user agreements yet.
+*/
+ MSG_ACCOUNT_DOESNOT_EXIST = 0x6ff,
+/*20100615 to latest
+본 게임은 12세 이용가입니다.
+It is available only for 12 hours.
+20130807 to 20130814
+존재 하지 않는 계정입니다.
+You will not be disconnect from the game.
+*/
+ MSG_AGE_RESTRICTIONS = 0x700,
+#endif
+#if PACKETVER >= 20100616
+/*20100616 to latest
+계정도용 조사를 위한 블럭상태입니다.
+Your account is blocked due to illegal use of the game account.
+20130807 to 20130814
+본 게임은 12세 이용가입니다.
+It is available only for 12 hours.
+*/
+ MSG_ACCOUNT_BLOCK = 0x701,
+/*20100616 to latest
+버그조사를 위한 블럭상태입니다.
+Your account is blocked because there may exist a bug with your account.
+20130807 to 20130814
+계정도용 조사를 위한 블럭상태입니다.
+Your account is blocked due to illegal use of the game account.
+*/
+ MSG_BUG_BLOCK = 0x702,
+#endif
+#if PACKETVER >= 20100622
+/*20100622 to latest
+몬스터 사냥을 통해 얻을 수 있는 Base, Job 경험치가 30분간 75% 증가합니다.
+Increases base exp and job exp gained by killing monsters up to 75% for 30 minutes.
+20130807 to 20130814
+버그조사를 위한 블럭상태입니다.
+Your account is blocked because there may exist a bug with your account.
+*/
+ MSG_PLUSEXP75 = 0x703,
+/*20100622 to latest
+몬스터 사냥을 통해 얻을 수 있는 Base, Job 경험치가 30분간 50% 증가합니다.
+Increases base exp and job exp gained by killing monsters up to 50% for 30 minutes.
+20130807 to 20130814
+몬스터 사냥을 통해 얻을 수 있는 Base, Job 경험치가 30분간 75% 증가합니다.
+Increases base exp and job exp gained by killing monsters up to 75% for 30 minutes.
+*/
+ MSG_PLUSEXP50 = 0x704,
+/*20100622 to 20100622
+상점 정보가 정확하지 않아 상점을 열 수 없습니다.
+20100629 to latest
+판매(구매) 정보가 없습니다.
+No sales information.
+20130807 to 20130814
+몬스터 사냥을 통해 얻을 수 있는 Base, Job 경험치가 30분간 50% 증가합니다.
+Increases base exp and job exp gained by killing monsters up to 50% for 30 minutes.
+*/
+ MSG_FAIL_OPEN_STORE = 0x705,
+/*20100622 to latest
+더 이상 검색 할 수 없습니다.
+Failed to search any further.
+20130807 to 20130814
+판매(구매) 정보가 없습니다.
+No sales information.
+*/
+ MSG_SSI_FAILED_SEARCH_CNT = 0x706,
+/*20100622 to 20100622
+검색이 실패하였습니다.
+20100629 to latest
+해당 아이템 명은 존재하지 않습니다.
+The item you have entered does not exist.
+20130807 to 20130814
+더 이상 검색 할 수 없습니다.
+Failed to search any further.
+*/
+ MSG_SSI_FAILED_ITEM_DOES_NOT_EXIST = 0x707,
+/*20100622 to latest
+아직 검색 할 수 없습니다.
+Cannot search yet.
+20130807 to 20130814
+해당 아이템 명은 존재하지 않습니다.
+The item you have entered does not exist.
+*/
+ MSG_SSI_FAILED_LIMIT_SERACH_TIME = 0x708,
+#endif
+#if PACKETVER >= 20100629
+/*20100629 to 20100707
+카드 이름, 접두사, 접미사
+20100713 to latest
+카드 이름 또는 접두사(접미사)를 입력하세요
+Enter the card name or prefix/suffix.
+20130807 to 20130814
+아직 검색 할 수 없습니다.
+Cannot search yet.
+*/
+ MSG_SSI_TOOLTIP_OF_SERACHING_THE_CARD = 0x709,
+/*20100629 to latest
+남은 검색 횟수 : %d
+Searches left: %d
+20130807 to 20130814
+카드 이름 또는 접두사(접미사)를 입력하세요
+Enter the card name or prefix/suffix.
+*/
+ MSG_SSI_REST_OF_NUMBER_OF_SEARCHES = 0x70a,
+/*20100629 to latest
+검색 된 노점이 없습니다.
+No result has been found.
+20130807 to 20130814
+남은 검색 횟수 : %d
+Searches left: %d
+*/
+ MSG_SSI_FAILED_SEARCH_STORE = 0x70b,
+/*20100629 to latest
+아이템 가격 범위가 잘못되었습니다.
+The item price is too high.
+20130807 to 20130814
+검색 된 노점이 없습니다.
+No result has been found.
+*/
+ MSG_SSI_FAILED_PRICE_ISNOT_VALID = 0x70c,
+/*20100629 to latest
+일반 장비
+Normal Gear
+20130807 to 20130814
+아이템 가격 범위가 잘못되었습니다.
+The item price is too high.
+*/
+ MSG_GENERAL_EQUIPMENT = 0x70d,
+/*20100629 to latest
+의상 장비
+Costume
+20130807 to 20130814
+일반 장비
+Normal Gear
+*/
+ MSG_COSTUME_EQUIPMENT = 0x70e,
+#endif
+#if PACKETVER >= 20100713
+/*20100713 to latest
+분
+minute
+20130807 to 20130814
+의상 장비
+Costume
+*/
+ MSG_MINUTE = 0x70f,
+/*20100713 to latest
+초
+second
+20130807 to 20130814
+분
+minute
+*/
+ MSG_SECOND = 0x710,
+/*20100713 to latest
+아이템 명을 입력해 주세요.
+Please enter the name of the item.
+20130807 to 20130814
+초
+second
+*/
+ MSG_SSI_FAILED_ENTER_THE_NAME_OF_ITEM = 0x711,
+/*20100713 to latest
+해당 아이템 명은 존재하지 않습니다.
+The item you have entered does not exist.
+20130807 to 20130814
+아이템 명을 입력해 주세요.
+Please enter the name of the item.
+*/
+ MSG_SSI_FAILED_NAME_OF_ITEM_DOES_NOT_EXIST = 0x712,
+#endif
+#if PACKETVER >= 20100720
+/*20100720 to latest
+진입가능한 맵이 존재하지 않습니다.
+The map is not available.
+20130807 to 20130814
+해당 아이템 명은 존재하지 않습니다.
+The item you have entered does not exist.
+*/
+ MSG_NOT_EXIST_ENTRYMAP = 0x713,
+/*20100720 to latest
+해당 카드 이름이나 접두사(접미사)는 존재하지 않습니다.
+The selected name or prefix/suffix does not exist.
+20130807 to 20130814
+진입가능한 맵이 존재하지 않습니다.
+The map is not available.
+*/
+ MSG_SSI_FAILED_NAME_OF_CARD_DOES_NOT_EXIST = 0x714,
+#endif
+#if PACKETVER >= 20100727
+/*20100727 to latest
+ 한번에 구매 가능 종류는 10개입니다.
+You can purchase up to 10 items.
+20130807 to 20130814
+해당 카드 이름이나 접두사(접미사)는 존재하지 않습니다.
+The selected name or prefix/suffix does not exist.
+*/
+ MSG_CASH_FAILED_TOTAL_CNT = 0x715,
+/*20100727 to latest
+ 일부 아이템의 구매가 실패하였습니다.
+Some items could not be purchased.
+20130807 to 20130814
+ 한번에 구매 가능 종류는 10개입니다.
+You can purchase up to 10 items.
+*/
+ MSG_CASH_FAILED_BUY_SOME = 0x716,
+#endif
+#if PACKETVER >= 20100730
+/*20100730 to latest
+생년월일 6자리를 입력하세요.(예시:801122)
+Enter your 6-digit DOB(YYMMDD) (e.g: 801122)
+20130807 to 20130814
+ 일부 아이템의 구매가 실패하였습니다.
+Some items could not be purchased.
+*/
+ MSG_ENTER_PEOPLE_BIRTH = 0x717,
+/*20100730 to latest
+알 수 없는 오류가 발생하였습니다.
+Now Logging Out.
+20130807 to 20130814
+생년월일 6자리를 입력하세요.(예시:801122)
+Enter your 6-digit DOB(YYMMDD) (e.g: 801122)
+*/
+ MSG_RESULT_FAIL_UNKNOWN = 0x718,
+/*20100730 to latest
+데이타 베이스 오류가 발생하였습니다.
+A database error has occurred.
+20130807 to 20130814
+알 수 없는 오류가 발생하였습니다.
+Now Logging Out.
+*/
+ MSG_RESULT_FAIL_DATABASE = 0x719,
+/*20100730 to latest
+캐릭터를 삭제하기 위해서는 길드에서 탈퇴 해야 합니다.
+Please leave your guild first in order to remove your character.
+20130807 to 20130814
+데이타 베이스 오류가 발생하였습니다.
+A database error has occurred.
+*/
+ MSG_RESULT_FAIL_GUILD = 0x71a,
+/*20100730 to latest
+캐릭터를 삭제하기 위해서는 파티에서 탈퇴 해야 합니다.
+Please leave your party first in order to remove your character.
+20130807 to 20130814
+캐릭터를 삭제하기 위해서는 길드에서 탈퇴 해야 합니다.
+Please leave your guild first in order to remove your character.
+*/
+ MSG_RESULT_FAIL_PARTY = 0x71b,
+/*20100730 to latest
+시스템 설정으로 인해 삭제할 수 없습니다.
+You cannot delete this character because the delete time has not expired yet.
+20130807 to 20130814
+캐릭터를 삭제하기 위해서는 파티에서 탈퇴 해야 합니다.
+Please leave your party first in order to remove your character.
+*/
+ MSG_RESULT_FAIL_CONFIGURATION = 0x71c,
+/*20100730 to latest
+아직 삭제 가능 시간이 아닙니다.
+You cannot delete this character at the moment.
+20130807 to 20130814
+시스템 설정으로 인해 삭제할 수 없습니다.
+You cannot delete this character because the delete time has not expired yet.
+*/
+ MSG_RESULT_FAIL_DATE = 0x71d,
+/*20100730 to latest
+생년월일이 일치하지 않습니다.
+Your entered birthday does not match.
+20130807 to 20130814
+아직 삭제 가능 시간이 아닙니다.
+You cannot delete this character at the moment.
+*/
+ MSG_RESULT_FAIL_BIRTH = 0x71e,
+/*20100730 to latest
+친밀도가 부족합니다.
+You lack of familiarity.
+20130807 to 20130814
+생년월일이 일치하지 않습니다.
+Your entered birthday does not match.
+*/
+ MSG_USESKILL_FAIL_RELATIONGRADE = 0x71f,
+/*20100730 to latest
+스타일체인지 파이터 상태에서만 사용가능합니다.
+This is only available on style change for fighting classes.
+20130807 to 20130814
+친밀도가 부족합니다.
+You lack of familiarity.
+*/
+ MSG_USESKILL_FAIL_STYLE_CHANGE_FIGHTER = 0x720,
+/*20100730 to latest
+스타일체인지 그래플러 상태에서만 사용가능합니다.
+This is only available on style change for novice.
+20130807 to 20130814
+스타일체인지 파이터 상태에서만 사용가능합니다.
+This is only available on style change for fighting classes.
+*/
+ MSG_USESKILL_FAIL_STYLE_CHANGE_GRAPPLER = 0x721,
+#endif
+#if PACKETVER >= 20100817
+/*20100817 to latest
+파티등록실패
+Party Registration failed.
+20130807 to 20130814
+스타일체인지 그래플러 상태에서만 사용가능합니다.
+This is only available on style change for novice.
+*/
+ MSG_PARTY_REGISTRATION_FAILED = 0x722,
+/*20100817 to latest
+검색된 조건의 리스트가 없습니다.
+results have been found.
+20130807 to 20130814
+파티등록실패
+Party Registration failed.
+*/
+ MSG_PARTY_SEARCH_FAILED = 0x723,
+/*20100817 to latest
+광고삭제에 실패했습니다.
+Failed to remove result.
+20130807 to 20130814
+검색된 조건의 리스트가 없습니다.
+results have been found.
+*/
+ MSG_PARTY_AD_DELETE_FAILED = 0x724,
+/*20100817 to latest
+조건에 맞는 광고가 없어 실패했습니다.
+No results have been found.
+20130807 to 20130814
+광고삭제에 실패했습니다.
+Failed to remove result.
+*/
+ MSG_PARTY_NOT_EXIST_AD = 0x725,
+#endif
+#if PACKETVER >= 20100824
+/*20100824 to latest
+결제 정보가 없습니다.
+No payment information has been found.
+20130807 to 20130814
+조건에 맞는 광고가 없어 실패했습니다.
+No results have been found.
+*/
+ MSG_REFUSE_SSO_NOT_PAY_USER = 0x726,
+/*20100824 to latest
+교환 시 스크린샷 찍기
+Screenshot Trade
+20130807 to 20130814
+결제 정보가 없습니다.
+No payment information has been found.
+*/
+ MSG_SCREENSHOT_FOR_EXCHANGE = 0x727,
+/*20100824 to latest
+[거래_%s]
+[Trade_%s]
+20130807 to 20130814
+교환 시 스크린샷 찍기
+Screenshot Trade
+*/
+ MSG_SCREENSHOT_FOR_EXCHANGE_CHARNAME = 0x728,
+#endif
+#if PACKETVER >= 20100914
+/*20100914 to 20180124
+사망으로 인해 신생명보험서가 자동 소비되었습니다
+20130807 to 20130814
+[거래_%s]
+[Trade_%s]
+20180207 to latest
+사망 시 소지한 아이템으로 경험치 손실을 막았습니다.
+Death due to the auto insurance young people are spending.
+*/
+ MSG_NOTIFY_NEO_INSURANCE_ITEM_USE = 0x729,
+/*20100914 to latest
+대화
+Chat Dialog
+20130807 to 20130814
+사망으로 인해 신생명보험서가 자동 소비되었습니다
+*/
+ MSG_TALK = 0x72a,
+#endif
+#if PACKETVER >= 20101019
+/*20101019 to latest
+중복사용이 불가능합니다.
+Redundant is not available.
+20130807 to 20130814
+대화
+Chat Dialog
+*/
+ MSG_MACRO_DUPLICATE = 0x72b,
+/*20101019 to latest
+사용제한이 걸려있습니다.
+Use the limit that has been set.
+20130807 to 20130814
+중복사용이 불가능합니다.
+Redundant is not available.
+*/
+ MSG_MACRO_POSTDELAY = 0x72c,
+/*20101019 to latest
+현재 사용제한이 걸려 있지 않습니다.
+No user restrictions are set.
+20130807 to 20130814
+사용제한이 걸려있습니다.
+Use the limit that has been set.
+*/
+ MSG_MACRO_NOT_POSTDELAY = 0x72d,
+/*20101019 to latest
+예기치 못한 사유로 인해 접속이 실패하였습니다. 관리자에게 문의해 주시기 바랍니다.
+Connection has failed. Please contact your administrator.
+20130807 to 20130814
+현재 사용제한이 걸려 있지 않습니다.
+No user restrictions are set.
+*/
+ MSG_SSO_ERROR_MSG = 0x72e,
+/*20101019 to latest
+접속 정보 인증 실패하였습니다.
+Failed to authenticate.
+20130807 to 20130814
+예기치 못한 사유로 인해 접속이 실패하였습니다. 관리자에게 문의해 주시기 바랍니다.
+Connection has failed. Please contact your administrator.
+*/
+ MSG_REFUSE_SSO_AUTH_INVALID_TOKEN = 0x72f,
+/*20101019 to latest
+가입하지 않은 사용자입니다.
+User is offline.
+20130807 to 20130814
+접속 정보 인증 실패하였습니다.
+Failed to authenticate.
+*/
+ MSG_REFUSE_SSO_AUTH_INVALID_USER = 0x730,
+/*20101019 to latest
+나이제한 때문에 이계정으로 이서버에 접속할 수 없습니다.
+The age limit from commandment tables cannot connect to this server.
+20130807 to 20130814
+가입하지 않은 사용자입니다.
+User is offline.
+*/
+ MSG_REFUSE_SSO_AUTH_INVALID_AGE = 0x731,
+/*20101019 to latest
+구매하기
+Buy
+20130807 to 20130814
+나이제한 때문에 이계정으로 이서버에 접속할 수 없습니다.
+The age limit from commandment tables cannot connect to this server.
+*/
+ MSG_NC_BUY = 0x732,
+/*20101019 to latest
+장바구니 비우기
+Cancel.
+20130807 to 20130814
+구매하기
+Buy
+*/
+ MSG_NC_BLANK = 0x733,
+/*20101019 to latest
+첫 페이지
+First page
+20130807 to 20130814
+장바구니 비우기
+Cancel.
+*/
+ MSG_NC_FIRSTPAGE = 0x734,
+/*20101019 to latest
+마지막 페이지
+Last page
+20130807 to 20130814
+첫 페이지
+First page
+*/
+ MSG_NC_LASTPAGE = 0x735,
+/*20101019 to latest
+신규
+New
+20130807 to 20130814
+마지막 페이지
+Last page
+*/
+ MSG_NC_CAT1 = 0x736,
+/*20101019 to latest
+인기
+Headgears
+20130807 to 20130814
+신규
+New
+*/
+ MSG_NC_CAT2 = 0x737,
+/*20101019 to latest
+한정
+Limited
+20130807 to 20130814
+인기
+Headgears
+*/
+ MSG_NC_CAT3 = 0x738,
+/*20101019 to latest
+임대장비
+Rental Items
+20130807 to 20130814
+한정
+Limited
+*/
+ MSG_NC_CAT4 = 0x739,
+/*20101019 to latest
+영구장비
+Equipments
+20130807 to 20130814
+임대장비
+Rental Items
+*/
+ MSG_NC_CAT5 = 0x73a,
+/*20101019 to latest
+버프
+Scrolls
+20130807 to 20130814
+영구장비
+Equipments
+*/
+ MSG_NC_CAT6 = 0x73b,
+/*20101019 to latest
+회복
+Consumables
+20130807 to 20130814
+버프
+Scrolls
+*/
+ MSG_NC_CAT7 = 0x73c,
+/*20101019 to latest
+기타
+Other
+20130807 to 20130814
+회복
+Consumables
+*/
+ MSG_NC_CAT8 = 0x73d,
+/*20101019 to latest
+가격
+Cost
+20130807 to 20130814
+기타
+Other
+*/
+ MSG_NC_COST = 0x73e,
+/*20101019 to latest
+수량
+Quantity
+20130807 to 20130814
+가격
+Cost
+*/
+ MSG_NC_NUM = 0x73f,
+/*20101019 to latest
+개
+Total
+20130807 to 20130814
+수량
+Quantity
+*/
+ MSG_NC_COUNT = 0x740,
+/*20101019 to latest
+무료 캐시 : %s C
+Free Cash: %s C
+20130807 to 20130814
+개
+Total
+*/
+ MSG_NC_FREECASH = 0x741,
+/*20101019 to latest
+소지 캐시 : %s C
+CashPoints: %s C
+20130807 to 20130814
+무료 캐시 : %s C
+Free Cash: %s C
+*/
+ MSG_NC_CASH = 0x742,
+/*20101019 to latest
+이 지역에서는 몬스터 소환이 불가능합니다.
+You cannot summon a monster in this area.
+20130807 to 20130814
+소지 캐시 : %s C
+CashPoints: %s C
+*/
+ MSG_CALLMONSTER_FAIL_AREA = 0x743,
+#endif
+#if PACKETVER >= 20101109
+/*20101109 to latest
+무료캐시 사용량이 전체 금액을 초과하고있습니다
+Exceeded total free cash
+20130807 to 20130814
+이 지역에서는 몬스터 소환이 불가능합니다.
+You cannot summon a monster in this area.
+*/
+ MSG_BUY_CASH_FAIL2 = 0x744,
+/*20101109 to latest
+ 설정한 내용이 [SaveData_ExMacro%d]에 저장됩니다.
+%d seconds left until you can use
+20130807 to 20130814
+무료캐시 사용량이 전체 금액을 초과하고있습니다
+Exceeded total free cash
+*/
+ MSG_MACRO_SAVE_DATA = 0x745,
+#endif
+#if PACKETVER >= 20101123
+/*20101123 to latest
+약 %d 초 후에 사용할 수 있습니다
+Content has been saved in [SaveData_ExMacro%d]
+20130807 to 20130814
+ 설정한 내용이 [SaveData_ExMacro%d]에 저장됩니다.
+%d seconds left until you can use
+*/
+ MSG_ITEM_REUSE_LIMIT_SECOND = 0x746,
+#endif
+#if PACKETVER >= 20101207
+/*20101207 to latest
+[창]을 장착한 상태여야 합니다.
+~ [Windows] must be equipped with.
+20130807 to 20130814
+약 %d 초 후에 사용할 수 있습니다
+Content has been saved in [SaveData_ExMacro%d]
+*/
+ MSG_FAIL_NEED_EQUIPPED_SPEAR = 0x747,
+#endif
+#if PACKETVER >= 20101214
+/*20101214 to latest
+드래곤 탑승시에만 사용가능합니다.
+Available only on the dragon.
+20130807 to 20130814
+[창]을 장착한 상태여야 합니다.
+~ [Windows] must be equipped with.
+*/
+ MSG_USESKILL_FAIL_DRAGON = 0x748,
+/*20101214 to latest
+본 서버에 접속할 수 있는 정원이 초과되어 진입이 불가능 합니다.
+Unable to proceed due to exceeding capacity.
+20130807 to 20130814
+드래곤 탑승시에만 사용가능합니다.
+Available only on the dragon.
+*/
+ MSG_OVER_CONNECT_USER = 0x749,
+#endif
+#if PACKETVER >= 20101228
+/*20101228 to latest
+실명 인증이 되지 않았습니다. 실명인증 사이트로 이동합니다
+Real name has not been verified. Go to name verification site.
+20130807 to 20130814
+본 서버에 접속할 수 있는 정원이 초과되어 진입이 불가능 합니다.
+Unable to proceed due to exceeding capacity.
+*/
+ MSG_AUTHENTICATE = 0x74a,
+#endif
+#if PACKETVER >= 20110104
+/*20110104 to latest
+저장 할 슬롯을 선택 해 주세요
+Please select slot you are going to save.
+20130807 to 20130814
+실명 인증이 되지 않았습니다. 실명인증 사이트로 이동합니다
+Real name has not been verified. Go to name verification site.
+*/
+ MSG_SELECT_SAVESLOT = 0x74b,
+#endif
+#if PACKETVER >= 20110111
+/*20110111 to latest
+%s, 축하드립니다. '%s' 를 얻으셨습니다!
+Congratulation %s, Acquired '%s' !
+20130807 to 20130814
+저장 할 슬롯을 선택 해 주세요
+Please select slot you are going to save.
+*/
+ MSG_BROADCASTING_SPECIAL_ITEM_OBTAIN2 = 0x74c,
+#endif
+#if PACKETVER >= 20110118
+/*20110118 to latest
+그루미상태에서는 사용할 수 없습니다
+Unable to use in gloomy state
+20130807 to 20130814
+%s, 축하드립니다. '%s' 를 얻으셨습니다!
+Congratulation %s, Acquired '%s' !
+*/
+ MSG_NOTUSE_GROOMY = 0x74d,
+#endif
+#if PACKETVER >= 20110215
+/*20110215 to latest
+구매물품의 합계금액이 케릭터가 소지할 수 있는 최대 금액을 초과하였습니다
+Purchased products has exceeded the total price.
+20130807 to 20130814
+그루미상태에서는 사용할 수 없습니다
+Unable to use in gloomy state
+*/
+ MSG_BUYINGSTORE_OVERFLOW_MONEY = 0x74e,
+/*20110215 to latest
+현재 맵에서는 파티 가입이 불가능합니다.
+Cannot join a party in this map.
+20130807 to 20130814
+구매물품의 합계금액이 케릭터가 소지할 수 있는 최대 금액을 초과하였습니다
+Purchased products has exceeded the total price.
+*/
+ MSG_PREVENT_PARTY_JOIN = 0x74f,
+/*20110215 to latest
+현재 맵에서는 파티 탈퇴가 불가능합니다.
+Cannot leave a party in this map.
+20130807 to 20130814
+현재 맵에서는 파티 가입이 불가능합니다.
+Cannot join a party in this map.
+*/
+ MSG_PREVENT_PARTY_LEAVE = 0x750,
+/*20110215 to latest
+현재 맵에서는 파티 추방이 불가능합니다.
+Cannot withdraw/break the party in this map.
+20130807 to 20130814
+현재 맵에서는 파티 탈퇴가 불가능합니다.
+Cannot leave a party in this map.
+*/
+ MSG_PREVENT_PARTY_EXPEL = 0x751,
+/*20110215 to latest
+실제 성명
+Real Name
+20130807 to 20130814
+현재 맵에서는 파티 추방이 불가능합니다.
+Cannot withdraw/break the party in this map.
+*/
+ MSG_SDO_REALNAME = 0x752,
+/*20110215 to latest
+신분증 번호
+ID Number
+20130807 to 20130814
+실제 성명
+Real Name
+*/
+ MSG_SDO_ID_NUMBER = 0x753,
+/*20110215 to latest
+이메일
+E-mail
+20130807 to 20130814
+신분증 번호
+ID Number
+*/
+ MSG_SDO_EMAIL = 0x754,
+/*20110215 to latest
+입력이 올바르지 않습니다
+Invalid input
+20130807 to 20130814
+이메일
+E-mail
+*/
+ MSG_SDO_WRONG_VALUE = 0x755,
+#endif
+#if PACKETVER >= 20110222
+/*20110222 to 20130508
+상대방에게 제니 지급에 실패했습니다.
+20130515 to latest
+상대 캐릭터가 최대 보유제니량을 초과하여 거래가 불가능합니다.
+Failed to send the zeny
+20130807 to 20130814
+입력이 올바르지 않습니다
+Invalid input
+*/
+ MSG_MCSTORE_FAIL_SELLER_MONEY_GIVE = 0x756,
+/*20110222 to latest
+해당 직업이 아닙니다.
+This is not a relevant job
+20130807 to 20130814
+상대 캐릭터가 최대 보유제니량을 초과하여 거래가 불가능합니다.
+Failed to send the zeny
+*/
+ MSG_INVALID_CLASS = 0x757,
+/*20110222 to latest
+해당 성별이 아닙니다.
+This is not a relevant gender
+20130807 to 20130814
+해당 직업이 아닙니다.
+This is not a relevant job
+*/
+ MSG_INVALID_GENDER = 0x758,
+/*20110222 to latest
+유저님의 정보가 인증에 성공했습니다.
+User information identification was successful.
+20130807 to 20130814
+해당 성별이 아닙니다.
+This is not a relevant gender
+*/
+ MSG_SUCCESS_AUTHENTICATE = 0x759,
+/*20110222 to latest
+이름이 일치하지 않습니다. 재작성 해주세요.
+Name does not match. Please retry.
+20130807 to 20130814
+유저님의 정보가 인증에 성공했습니다.
+User information identification was successful.
+*/
+ MSG_INVALID_REALNAME = 0x75a,
+/*20110222 to latest
+신분증 번호가 일치하지 않습니다. 재작성 해주세요.
+ID number does not match. Please retry.
+20130807 to 20130814
+이름이 일치하지 않습니다. 재작성 해주세요.
+Name does not match. Please retry.
+*/
+ MSG_INVALID_IDNUMBER = 0x75b,
+/*20110222 to latest
+현재 서비스에 이상이 있으니 잠시 후 재시도 해주세요.
+Service is currently unavailable. Please try again later.
+20130807 to 20130814
+신분증 번호가 일치하지 않습니다. 재작성 해주세요.
+ID number does not match. Please retry.
+*/
+ MSG_INVALID_AUTHENTICATE = 0x75c,
+#endif
+#if PACKETVER >= 20110224
+/*20110224 to latest
+ 탑승 상태에서는 공격을 할 수 없습니다.
+Unable to attack while riding.
+20130807 to 20130814
+현재 서비스에 이상이 있으니 잠시 후 재시도 해주세요.
+Service is currently unavailable. Please try again later.
+*/
+ MSG_CANNOT_ATTACK_IN_RIDING_STATE = 0x75d,
+/*20110224 to latest
+ 탑승 상태에서는 스킬 시전을 할 수 없습니다.
+Unable to cast the skill while riding.
+20130807 to 20130814
+ 탑승 상태에서는 공격을 할 수 없습니다.
+Unable to attack while riding.
+*/
+ MSG_CANNOT_USE_SKILL_IN_RIDING_STATE = 0x75e,
+#endif
+#if PACKETVER >= 20110228
+/*20110228 to 20110228
+비밀번호는 4자리 이상 6자리이하여야만 합니다.
+20110308 to latest
+비밀번호는 4자리이하여야만 합니다.
+Pin number should be 4~6 characters.
+20130807 to 20130814
+ 탑승 상태에서는 스킬 시전을 할 수 없습니다.
+Unable to cast the skill while riding.
+*/
+ MSG_STORE_PASSWORD_4_6 = 0x75f,
+/*20110228 to 20110228
+로그인에 성공했습니다.
+20110308 to latest
+보안 인증에 성공했습니다.
+Secured authentication is successful.
+20130807 to 20130814
+비밀번호는 4자리이하여야만 합니다.
+Pin number should be 4~6 characters.
+*/
+ MSG_SECOND_PASSWORD_LOGIN_SUCCESS = 0x760,
+/*20110228 to 20110228
+세컨드 패스워드의 생성에 성공했습니다.
+20110308 to latest
+보안 패스워드의 생성에 성공했습니다.
+Succeeded in creating 2nd password.
+20130807 to 20130814
+보안 인증에 성공했습니다.
+Secured authentication is successful.
+*/
+ MSG_SECOND_PASSWORD_MAKE_SUCCESS = 0x761,
+/*20110228 to 20110228
+세컨드 패스워드를 삭제했습니다.
+20110308 to latest
+보안 패스워드를 삭제했습니다.
+2nd password has been deleted.
+20130807 to 20130814
+보안 패스워드의 생성에 성공했습니다.
+Succeeded in creating 2nd password.
+*/
+ MSG_SECOND_PASSWORD_DEL_SUCCESS = 0x762,
+/*20110228 to 20110228
+세컨드 패스워드를 수정했습니다.
+20110308 to latest
+보안 패스워드를 수정했습니다.
+2nd password has been corrected.
+20130807 to 20130814
+보안 패스워드를 삭제했습니다.
+2nd password has been deleted.
+*/
+ MSG_SECOND_PASSWORD_EDIT_SUCCESS = 0x763,
+/*20110228 to 20110228
+로그인에 실패했습니다.
+20110308 to latest
+잘못된 패스워드입니다.(%d회남음)
+Password is incorrect.
+20130807 to 20130814
+보안 패스워드를 수정했습니다.
+2nd password has been corrected.
+*/
+ MSG_SECOND_PASSWORD_LOGIN_FAILED = 0x764,
+/*20110228 to 20110228
+세컨드 패스워드의 생성에 실패했습니다.
+20110308 to latest
+보안 패스워드의 생성에 실패했습니다.
+Failed to create 2nd password.
+20130807 to 20130814
+잘못된 패스워드입니다.(%d회남음)
+Password is incorrect.
+*/
+ MSG_SECOND_PASSWORD_MAKE_FAILED = 0x765,
+/*20110228 to 20110228
+세컨드 패스워드 삭제에 실패했습니다.
+20110308 to latest
+보안 패스워드 삭제에 실패했습니다.
+Failed to delete 2nd password.
+20130807 to 20130814
+보안 패스워드의 생성에 실패했습니다.
+Failed to create 2nd password.
+*/
+ MSG_SECOND_PASSWORD_DEL_FAILED = 0x766,
+/*20110228 to 20110228
+세컨드 패스워드의 수정에 실패했습니다.
+20110308 to latest
+보안 패스워드의 수정에 실패했습니다.
+Failed to correct 2nd password.
+20130807 to 20130814
+보안 패스워드 삭제에 실패했습니다.
+Failed to delete 2nd password.
+*/
+ MSG_SECOND_PASSWORD_EDIT_FAILED = 0x767,
+/*20110228 to 20110228
+세컨드 비밀번호에는 제한된 번호를 사용할수 없습니다.
+20110308 to latest
+입력하신패스워드는 사용하실수없습니다.
+Unable to use restricted number in 2nd password.
+20130807 to 20130814
+보안 패스워드의 수정에 실패했습니다.
+Failed to correct 2nd password.
+*/
+ MSG_SECOND_PASSWORD_EDIT_RESTRICT_PW = 0x768,
+/*20110228 to latest
+주민등록번호는 사용할수없습니다.
+Unable to use your KSSN number.
+20130807 to 20130814
+입력하신패스워드는 사용하실수없습니다.
+Unable to use restricted number in 2nd password.
+*/
+ MSG_SECOND_PASSWORD_EDIT_PERSONALNUM_PW = 0x769,
+/*20110228 to 20110228
+보안번호
+20110308 to latest
+이미 패스워드가 존재합니다.
+~There is already a password.
+20130807 to 20130814
+주민등록번호는 사용할수없습니다.
+Unable to use your KSSN number.
+*/
+ MSG_SECOND_PASSWORD_MAKE_DUPLICATED_PW = 0x76a,
+/*20110228 to 20110228
+비밀번호 입력 (4~6자리)
+20110308 to latest
+보안 패스워드
+Security Code
+20130807 to 20130814
+이미 패스워드가 존재합니다.
+~There is already a password.
+*/
+ MSG_SECOND_PASSWORD = 0x76b,
+/*20110228 to 20110228
+ITEM
+20110308 to latest
+계정보안을 위하여 추가적인 패스워드 설정을 권장합니다.
+Account for the additional password security settings are recommended.
+20130807 to 20130814
+보안 패스워드
+Security Code
+*/
+ MSG_SECOND_PASSWORD_INPUT = 0x76c,
+/*20110228 to 20110228
+SKILL
+20110308 to latest
+보안 패스워드 사용을 하지 않습니다.
+Do not use secure password.
+20130807 to 20130814
+계정보안을 위하여 추가적인 패스워드 설정을 권장합니다.
+Account for the additional password security settings are recommended.
+*/
+ MSG_SECOND_PASSWDRD_NOT_AVAILABLE_SUCCESS = 0x76d,
+/*20110228 to 20110228
+TACTIC
+20110308 to latest
+보안 패스워드 사용설정에 실패했습니다.
+Use the set security password failed.
+20130807 to 20130814
+보안 패스워드 사용을 하지 않습니다.
+Do not use secure password.
+*/
+ MSG_SECOND_PASSWDRD_NOT_AVAILABLE_FAILED = 0x76e,
+/*20110228 to 20110228
+ETC
+20110308 to latest
+보안 패스워드를 사용합니다. 다음로그인부터 적용됩니다.
+Use secure passwords. Will be applied to your next login.
+20130807 to 20130814
+보안 패스워드 사용설정에 실패했습니다.
+Use the set security password failed.
+*/
+ MSG_SECOND_PASSWDRD_AVAILABLE_SUCCESS = 0x76f,
+/*20110228 to 20110228
+COMBAT
+20110308 to latest
+보안 패스워드 사용 설정에 실패했습니다.
+Use the set security password failed.
+20130807 to 20130814
+보안 패스워드를 사용합니다. 다음로그인부터 적용됩니다.
+Use secure passwords. Will be applied to your next login.
+*/
+ MSG_SECOND_PASSWDRD_AVAILABLE_FAILED = 0x770,
+/*20110228 to 20110228
+NON-COMBAT
+20110308 to latest
+계정보안을 위하여 추가적인 패스워드를 설정합니다.
+Added to the security of your account password is set.
+20130807 to 20130814
+보안 패스워드 사용 설정에 실패했습니다.
+Use the set security password failed.
+*/
+ MSG_SECOND_PASSWORD_INFO_1 = 0x771,
+/*20110228 to 20110228
+BUFF
+20110308 to latest
+아래의 숫자버튼을 마우스를 이용하여 4자리를 클릭하세요.
+Use the mouse to enter the 4-digit password below.
+20130807 to 20130814
+계정보안을 위하여 추가적인 패스워드를 설정합니다.
+Added to the security of your account password is set.
+*/
+ MSG_SECOND_PASSWORD_INFO_2 = 0x772,
+/*20110228 to 20110228
+AUTO EQUIPED
+20110308 to latest
+3회이상 잘못된패스워드 입력으로, 종료됩니다.
+Typing an incorrect password 3 times will shut down the client.
+20130807 to 20130814
+아래의 숫자버튼을 마우스를 이용하여 4자리를 클릭하세요.
+Use the mouse to enter the 4-digit password below.
+*/
+ MSG_SECOND_PASSWORD_INFO_3 = 0x773,
+/*20110228 to 20110228
+1st. ATTACK
+20110308 to latest
+ITEM
+20130807 to 20130814
+3회이상 잘못된패스워드 입력으로, 종료됩니다.
+Typing an incorrect password 3 times will shut down the client.
+*/
+ MSG_MACRO_ITEM = 0x774,
+/*20110228 to 20110228
+ATTACK
+20110308 to latest
+SKILL
+20130807 to 20130814
+ITEM
+*/
+ MSG_MACRO_SKILL = 0x775,
+/*20110228 to 20110228
+Next attack time :
+Next attack time:
+20110308 to latest
+TACTIC
+20130807 to 20130814
+SKILL
+*/
+ MSG_MACRO_TACTIC = 0x776,
+/*20110228 to 20110228
+When died
+20110308 to latest
+ETC
+20130807 to 20130814
+TACTIC
+*/
+ MSG_MACRO_ETC = 0x777,
+/*20110228 to 20110228
+When invited to a party
+20110308 to latest
+COMBAT
+20130807 to 20130814
+ETC
+*/
+ MSG_MACRO_COMBAT = 0x778,
+/*20110228 to 20110228
+Pickup Item
+20110308 to latest
+NON-COMBAT
+20130807 to 20130814
+COMBAT
+*/
+ MSG_MACRO_NON_COMBAT = 0x779,
+/*20110228 to 20110228
+Over 85% Weight
+20110308 to latest
+BUFF
+20130807 to 20130814
+NON-COMBAT
+*/
+ MSG_MACRO_BUFF = 0x77a,
+#endif
+#if PACKETVER >= 20110308
+/*20110308 to latest
+AUTO EQUIPED
+20130807 to 20130814
+BUFF
+*/
+ MSG_MACRO_AUTO_EQUIPED = 0x77b,
+/*20110308 to latest
+1st. ATTACK
+20130807 to 20130814
+AUTO EQUIPED
+*/
+ MSG_MACRO_1ST_ATTACK = 0x77c,
+/*20110308 to latest
+ATTACK
+20130807 to 20130814
+1st. ATTACK
+*/
+ MSG_MACRO_ATTACK = 0x77d,
+/*20110308 to latest
+Next attack time :
+Next attack time:
+20130807 to 20130814
+ATTACK
+*/
+ MSG_MACRO_NEXT_ATK_TIME = 0x77e,
+/*20110308 to latest
+When died
+20130807 to 20130814
+Next attack time :
+Next attack time:
+*/
+ MSG_MACRO_WHEN_DIED = 0x77f,
+/*20110308 to latest
+When invited to a party
+20130807 to 20130814
+When died
+*/
+ MSG_MACRO_WHEN_INVITED_PARTY = 0x780,
+/*20110308 to latest
+Pickup Item
+20130807 to 20130814
+When invited to a party
+*/
+ MSG_MACRO_PICKUP_ITEM = 0x781,
+/*20110308 to latest
+Over 85% Weight
+20130807 to 20130814
+Pickup Item
+*/
+ MSG_MACRO_OVERWEIGHT = 0x782,
+/*20110308 to latest
+진행중이던 작업(NPC대화,제조...)을 종료후에 다시 시도하세요.
+Any work in progress (NPC dialog, manufacturing ...) quit and try again.
+20130807 to 20130814
+Over 85% Weight
+*/
+ MSG_BUSY = 0x783,
+/*20110308 to latest
+ 몬스터 사냥을 통해 얻을 수 있는 Job경험치가 %d분간 %.2f배로 증가합니다.
+Monster Job hunting experience that you can get through the doubling of %d is %.2f minutes.
+20130807 to 20130814
+진행중이던 작업(NPC대화,제조...)을 종료후에 다시 시도하세요.
+Any work in progress (NPC dialog, manufacturing ...) quit and try again.
+*/
+ MSG_PLUSONLYJOBEXP2 = 0x784,
+#endif
+#if PACKETVER >= 20110315
+/*20110315 to 20110405
+ExMacro_SaveData%d
+20110412 to latest
+SaveData_ExMacro%d
+SaveData_ExMacro %d
+20130807 to 20130814
+ 몬스터 사냥을 통해 얻을 수 있는 Job경험치가 %d분간 %.2f배로 증가합니다.
+Monster Job hunting experience that you can get through the doubling of %d is %.2f minutes.
+*/
+ MSG_MACRO_SAVE = 0x785,
+/*20110315 to latest
+ 설정한 내용이 [%s]에 저장됩니다.
+Settings for [%s] are stored in.
+20130807 to 20130814
+SaveData_ExMacro%d
+SaveData_ExMacro %d
+*/
+ MSG_MACRO_SAVE_DATA2 = 0x786,
+#endif
+#if PACKETVER >= 20110322
+/*20110322 to latest
+보안레벨
+Security level
+20130807 to 20130814
+ 설정한 내용이 [%s]에 저장됩니다.
+Settings for [%s] are stored in.
+*/
+ MSG_SECOND_PASSWORD_LEVEL = 0x787,
+#endif
+#if PACKETVER >= 20110412
+/*20110412 to latest
+현재 캐릭터는 파티 또는 길드에 가입되어 있어서 삭제가 불가능합니다.
+The current character is a party or join the guild can not be deleted.
+20130807 to 20130814
+보안레벨
+Security level
+*/
+ MSG_RESULT_FAIL_CHAR_DELETE = 0x788,
+#endif
+#if PACKETVER >= 20110517
+/*20110517 to latest
+벽이나 물체 근처에서만 사용 할 수 있습니다.
+Objects can be used only near the wall.
+20130807 to 20130814
+현재 캐릭터는 파티 또는 길드에 가입되어 있어서 삭제가 불가능합니다.
+The current character is a party or join the guild can not be deleted.
+*/
+ MSG_USESKILL_FAIL_NEER_WALL = 0x789,
+#endif
+#if PACKETVER >= 20110531
+/*20110531 to latest
+%s : 레벨 %d %s 파티구합니다.
+%s: Level %d %s party to obtain level.
+20130807 to 20130814
+벽이나 물체 근처에서만 사용 할 수 있습니다.
+Objects can be used only near the wall.
+*/
+ MSG_SEEK_PARTY_SET = 0x78a,
+/*20110531 to latest
+탑승 중인 상태에서는 고삐 아이템을 사용할 수 없습니다.
+While boarding reins is not available for items.
+20130807 to 20130814
+%s : 레벨 %d %s 파티구합니다.
+%s: Level %d %s party to obtain level.
+*/
+ MSG_FAIELD_RIDING_OVERLAPPED = 0x78b,
+#endif
+#if PACKETVER >= 20110622
+/*20110622 to latest
+이 스킬은 1%의 경험치가 필요합니다.
+This skill requires 1% experience.
+20130807 to 20130814
+탑승 중인 상태에서는 고삐 아이템을 사용할 수 없습니다.
+While boarding reins is not available for items.
+*/
+ MSG_USESKILL_FAIL_NEED_EXP_1PERCENT = 0x78c,
+#endif
+#if PACKETVER >= 20110628
+/*20110628 to latest
+경 험 치 :
+Experience value:
+20130807 to 20130814
+이 스킬은 1%의 경험치가 필요합니다.
+This skill requires 1% experience.
+*/
+ MSG_EXP_MSG = 0x78d,
+/*20110628 to latest
+드 롭 율 :
+Drop rate:
+20130807 to 20130814
+경 험 치 :
+Experience value:
+*/
+ MSG_DROP_MSG = 0x78e,
+/*20110628 to latest
+사망페널티 :
+Death Penalty:
+20130807 to 20130814
+드 롭 율 :
+Drop rate:
+*/
+ MSG_DEATH_MSG = 0x78f,
+/*20110628 to 20110713
+%d%% (PC방 %d%% + 프리미엄 %d%% + %s서버 %d%%)
+20110713 to latest
+%d%% (PC방 %d%% + TPLUS %d%% + 프리미엄 %d%% + %s서버 %d%%)
+%d%% (PCroom %d%% + TPLUS %d%% + Premium %d%% + %s Server %d%%)
+20130807 to 20130814
+사망페널티 :
+Death Penalty:
+*/
+ MSG_BASIC_EXP_MSG = 0x790,
+/*20110628 to latest
+ 합창스킬을 시전할 파티원의 SP량이 부족합니다.
+Amount of party members to cast the skill Chorus SP is low.
+20130807 to 20130814
+%d%% (PC방 %d%% + TPLUS %d%% + 프리미엄 %d%% + %s서버 %d%%)
+%d%% (PCroom %d%% + TPLUS %d%% + Premium %d%% + %s Server %d%%)
+*/
+ MSG_USESKILL_FAIL_CHORUS_SP_INSUFFICIENT = 0x791,
+#endif
+#if PACKETVER >= 20110706
+/*20110706 to latest
+상대 캐릭터의 소지 아이템 종류의 한계량 초과로 거래가 불가능합니다.
+Relative character that has possession of the items can not trade because amount is exceeded.
+20130807 to 20130814
+ 합창스킬을 시전할 파티원의 SP량이 부족합니다.
+Amount of party members to cast the skill Chorus SP is low.
+*/
+ MSG_CHARACTER_IS_OVER_COUNT = 0x792,
+/*20110706 to latest
+상대 캐릭터의 해당 아이템의 소지 한계량 초과로 거래가 불가능합니다.
+Relative character that has possession of the item amount which exceeds makes it impossible to trade.
+20130807 to 20130814
+상대 캐릭터의 소지 아이템 종류의 한계량 초과로 거래가 불가능합니다.
+Relative character that has possession of the items can not trade because amount is exceeded.
+*/
+ MSG_CHARACTER_IS_EACHITEM_OVER_COUNT = 0x793,
+/*20110706 to latest
+해당 아이템의 소지 한계량 초과로 구입이 불가능합니다.
+Amounts are exceeded the possession of the item is not available for purchase.
+20130807 to 20130814
+상대 캐릭터의 해당 아이템의 소지 한계량 초과로 거래가 불가능합니다.
+Relative character that has possession of the item amount which exceeds makes it impossible to trade.
+*/
+ MSG_PURCHASE_FAIL_EACHITEM_COUNT = 0x794,
+/*20110706 to 20110706
+잠시후에 다시 시도해주세요.
+20110713 to latest
+광고 등록 대기중입니다.
+Advertising is pending registration.
+20130807 to 20130814
+해당 아이템의 소지 한계량 초과로 구입이 불가능합니다.
+Amounts are exceeded the possession of the item is not available for purchase.
+*/
+ MSG_PARTY_FAILED_TIMEOUT = 0x795,
+/*20110706 to latest
+아래의 파일과 텍스트내용을 함께
+라그나로크 공식홈페이지 -> 고객센터 -> 문의하기를
+이용하여 보내주시기 바랍니다.
+With the following files and text content Ragnarok Official Website -> Support -> Contact Us to submit your comments by:
+20130807 to 20130814
+광고 등록 대기중입니다.
+Advertising is pending registration.
+*/
+ MSG_UNEXCEPTION_MSG1ST = 0x796,
+#endif
+#if PACKETVER >= 20110719
+/*20110719 to latest
+빌링시스템에 오류가 발생햇습니다(%d)
+Has caused an error in billing system(%d)
+20130807 to 20130814
+아래의 파일과 텍스트내용을 함께
+라그나로크 공식홈페이지 -> 고객센터 -> 문의하기를
+이용하여 보내주시기 바랍니다.
+With the following files and text content Ragnarok Official Website -> Support -> Contact Us to submit your comments by:
+*/
+ MSG_INGAMBA_BILLING_ZSVR_ERROR = 0x797,
+/*20110719 to latest
+룬 아이템 소유 개수가 초과 되어 구매가 실패 하였습니다.
+Failed purchase of runes, items exceed the maximum number that can be held.
+20130807 to 20130814
+빌링시스템에 오류가 발생햇습니다(%d)
+Has caused an error in billing system(%d)
+*/
+ MSG_CASH_FAILED_RUNE_OVERCOUNT = 0x798,
+/*20110719 to latest
+개별 아이템 개수가 초과 되어 구매가 실패 하였습니다.
+Exceeded the number of individual items, purchase failed.
+20130807 to 20130814
+룬 아이템 소유 개수가 초과 되어 구매가 실패 하였습니다.
+Failed purchase of runes, items exceed the maximum number that can be held.
+*/
+ MSG_CASH_FAILED_EACHITEM_OVERCOUNT = 0x799,
+/*20110719 to latest
+알 수 없는 오류가 발생하여 구매가 실패 하였습니다.
+Purchase failed due to an unknown error.
+20130807 to 20130814
+개별 아이템 개수가 초과 되어 구매가 실패 하였습니다.
+Exceeded the number of individual items, purchase failed.
+*/
+ MSG_CASH_FAILED_UNKOWN = 0x79a,
+/*20110719 to latest
+잠시 후 다시 시도해 주십시오.
+Please try again later.
+20130807 to 20130814
+알 수 없는 오류가 발생하여 구매가 실패 하였습니다.
+Purchase failed due to an unknown error.
+*/
+ MSG_CASH_FAILED_BUSY = 0x79b,
+/*20110719 to latest
+ 쿠나이 아이템을 장착 한 상태에서만 사용 가능합니다.
+Kunai must be equipped to use this skill.
+20130807 to 20130814
+잠시 후 다시 시도해 주십시오.
+Please try again later.
+*/
+ MSG_USESKILL_FAIL_NEED_EQUIPMENT_KUNAI = 0x79c,
+#endif
+#if PACKETVER >= 20110726
+/*20110726 to latest
+모집할 최소레벨값을 입력해주세요.
+Please enter the value of the minimum level to be recruited.
+20130807 to 20130814
+ 쿠나이 아이템을 장착 한 상태에서만 사용 가능합니다.
+Kunai must be equipped to use this skill.
+*/
+ MSG_SEEK_PARTY_LEVEL_HELP = 0x79d,
+#endif
+#if PACKETVER >= 20110803
+/*20110803 to latest
+존다기획사NPC 에게 아이템이 수령이 불가능합니다. 소지창의 여유공간을 확보해주세요.
+Jonda agency receipt of the item to the NPC is not possible. Gaining possession of the free space of the window.
+20130807 to 20130814
+모집할 최소레벨값을 입력해주세요.
+Please enter the value of the minimum level to be recruited.
+*/
+ MSG_FAILED_GET_ITEM_FROM_ZONEDA = 0x79e,
+#endif
+#if PACKETVER >= 20110810
+/*20110810 to latest
+이 스킬은 공성전에서만 사용 가능합니다.
+This skill is only available in the siege.
+20130807 to 20130814
+존다기획사NPC 에게 아이템이 수령이 불가능합니다. 소지창의 여유공간을 확보해주세요.
+Jonda agency receipt of the item to the NPC is not possible. Gaining possession of the free space of the window.
+*/
+ MSG_USESKILL_FAIL_SIZE = 0x79f,
+/*20110810 to latest
+이 스킬은 플레이어에게만 사용 가능합니다.
+This skill is available only to the player.
+20130807 to 20130814
+이 스킬은 공성전에서만 사용 가능합니다.
+This skill is only available in the siege.
+*/
+ MSG_USESKILL_FAIL_TOTARGET_PLAYER = 0x7a0,
+/*20110810 to latest
+착용이 금지 된 상태로 착용 할 수 없습니다.
+Forbidden to wear the state can not be worn.
+20130807 to 20130814
+이 스킬은 플레이어에게만 사용 가능합니다.
+This skill is available only to the player.
+*/
+ MSG_CAN_NOT_EQUIP_ITEM_FORBID = 0x7a1,
+/*20110810 to latest
+현재 위치에서는 상점 및 채팅방의 생성이 불가능합니다.
+Current location of the shop and chat room creation is disabled.
+20130807 to 20130814
+착용이 금지 된 상태로 착용 할 수 없습니다.
+Forbidden to wear the state can not be worn.
+*/
+ MSG_USESKILL_FAIL_THERE_ARE_NPC_AROUND = 0x7a2,
+#endif
+#if PACKETVER >= 20110816
+/*20110816 to latest
+Elapsed time: %d:%d:%d / %d:%d:%d
+20130807 to 20130814
+현재 위치에서는 상점 및 채팅방의 생성이 불가능합니다.
+Current location of the shop and chat room creation is disabled.
+*/
+ MSG_REPLAY_ELAPSEDTIME = 0x7a3,
+/*20110816 to latest
+Speed : X 1/4
+Speed: X 1/4
+20130807 to 20130814
+Elapsed time: %d:%d:%d / %d:%d:%d
+*/
+ MSG_REPLAY_SPEED1_4 = 0x7a4,
+/*20110816 to latest
+Speed : X 1/2
+Speed: X 1/2
+20130807 to 20130814
+Speed : X 1/4
+Speed: X 1/4
+*/
+ MSG_REPLAY_SPEED1_2 = 0x7a5,
+/*20110816 to latest
+Speed : X 1
+Speed: X 1
+20130807 to 20130814
+Speed : X 1/2
+Speed: X 1/2
+*/
+ MSG_REPLAY_SPEED1 = 0x7a6,
+/*20110816 to latest
+Speed : X 2
+Speed: X 2
+20130807 to 20130814
+Speed : X 1
+Speed: X 1
+*/
+ MSG_REPLAY_SPEED2 = 0x7a7,
+/*20110816 to latest
+Speed : X 4
+Speed: X 4
+20130807 to 20130814
+Speed : X 2
+Speed: X 2
+*/
+ MSG_REPLAY_SPEED4 = 0x7a8,
+/*20110816 to latest
+Speed : X 8
+Speed: X 8
+20130807 to 20130814
+Speed : X 4
+Speed: X 4
+*/
+ MSG_REPLAY_SPEED8 = 0x7a9,
+/*20110816 to latest
+Speed : X 16
+Speed: X 16
+20130807 to 20130814
+Speed : X 8
+Speed: X 8
+*/
+ MSG_REPLAY_SPEED16 = 0x7aa,
+/*20110816 to latest
+Speed : 알수없음
+Speed: Unknown
+20130807 to 20130814
+Speed : X 16
+Speed: X 16
+*/
+ MSG_REPLAY_SPEEDUNKNOWN = 0x7ab,
+/*20110816 to latest
+Service Info : %s
+Service Info: %s
+20130807 to 20130814
+Speed : 알수없음
+Speed: Unknown
+*/
+ MSG_REPLAY_CHRVICEINFO = 0x7ac,
+/*20110816 to latest
+Character Name : %s
+Character Name: %s
+20130807 to 20130814
+Service Info : %s
+Service Info: %s
+*/
+ MSG_REPLAY_CHARACTERNAME = 0x7ad,
+/*20110816 to latest
+Map Name : %s
+Map Name: %s
+20130807 to 20130814
+Character Name : %s
+Character Name: %s
+*/
+ MSG_REPLAY_MAPNAME = 0x7ae,
+/*20110816 to latest
+Record Time: %d-%01d-%01d %d: %02d: %02d
+20130807 to 20130814
+Map Name : %s
+Map Name: %s
+*/
+ MSG_REPLAY_RECORDTIME = 0x7af,
+/*20110816 to latest
+Play Time: %02d: %02d: %02d
+20130807 to 20130814
+Record Time: %d-%01d-%01d %d: %02d: %02d
+*/
+ MSG_REPLAY_PLAYTIME = 0x7b0,
+/*20110816 to latest
+No Replay File.
+20130807 to 20130814
+Play Time: %02d: %02d: %02d
+*/
+ MSG_REPLAY_NOREPLAYFILE = 0x7b1,
+/*20110816 to latest
+Server No Matching
+20130807 to 20130814
+No Replay File.
+*/
+ MSG_REPLAY_SERVERNOMATCH = 0x7b2,
+/*20110816 to latest
+Replay Option Setting
+20130807 to 20130814
+Server No Matching
+*/
+ MSG_REPLAY_REPLAYOPTIONSETTING = 0x7b3,
+/*20110816 to latest
+파일 이름을 입력하세요.
+Enter File Name
+20130807 to 20130814
+Replay Option Setting
+*/
+ MSG_REPLAY_ENTERTHEFILENAME = 0x7b4,
+/*20110816 to latest
+Set Replay Save Data
+20130807 to 20130814
+파일 이름을 입력하세요.
+Enter File Name
+*/
+ MSG_REPLAY_SETREPLAYSAVEDATA = 0x7b5,
+/*20110816 to latest
+Set Rec Option
+20130807 to 20130814
+Set Replay Save Data
+*/
+ MSG_REPLAY_SETRECOPTION = 0x7b6,
+/*20110816 to latest
+%.1f %% Pos☞:%d:%d:%d
+%.1f % Pos->:%d:%d:%d
+20130807 to 20130814
+Set Rec Option
+*/
+ MSG_REPLAY_GAGEPOS1 = 0x7b7,
+/*20110816 to latest
+%.1f %% Pos☞:이동불가
+%.1f % Pos->:cannot move
+20130807 to 20130814
+%.1f %% Pos☞:%d:%d:%d
+%.1f % Pos->:%d:%d:%d
+*/
+ MSG_REPLAY_GAGEPOS2 = 0x7b8,
+/*20110816 to latest
+Start
+20130807 to 20130814
+%.1f %% Pos☞:이동불가
+%.1f % Pos->:cannot move
+*/
+ MSG_REPLAY_START = 0x7b9,
+/*20110816 to latest
+Stop
+20130807 to 20130814
+Start
+*/
+ MSG_REPLAY_STOP = 0x7ba,
+/*20110816 to latest
+Input FileName -> Start
+20130807 to 20130814
+Stop
+*/
+ MSG_REPLAY_START2 = 0x7bb,
+/*20110816 to latest
+Open Option
+20130807 to 20130814
+Input FileName -> Start
+*/
+ MSG_REPLAY_OPENOPTION = 0x7bc,
+/*20110816 to latest
+Close Option
+20130807 to 20130814
+Open Option
+*/
+ MSG_REPLAY_CLOSEOPION = 0x7bd,
+/*20110816 to latest
+End
+20130807 to 20130814
+Close Option
+*/
+ MSG_REPLAY_END = 0x7be,
+/*20110816 to latest
+Time
+20130807 to 20130814
+End
+*/
+ MSG_REPLAY_TIME = 0x7bf,
+/*20110816 to latest
+파티&친구
+Party & Friends
+20130807 to 20130814
+Time
+*/
+ MSG_REPLAY_PARTYFRIEND = 0x7c0,
+/*20110816 to latest
+채팅
+Chat
+20130807 to 20130814
+파티&친구
+Party & Friends
+*/
+ MSG_REPLAY_CHAT = 0x7c1,
+/*20110816 to latest
+단축키
+Shortcuts
+20130807 to 20130814
+채팅
+Chat
+*/
+ MSG_REPLAY_SHORTCUTS = 0x7c2,
+/*20110816 to latest
+자동 파일명 생성
+Automatic filename generation
+20130807 to 20130814
+단축키
+Shortcuts
+*/
+ MSG_REPLAY_AUTOMATICFILENAME = 0x7c3,
+/*20110816 to latest
+파일 중복 채크
+Checking for duplicate files
+20130807 to 20130814
+자동 파일명 생성
+Automatic filename generation
+*/
+ MSG_REPLAY_CHECKINGFILE = 0x7c4,
+/*20110816 to latest
+동일한 파일이 존재 합니다.
+The same file exists already.
+20130807 to 20130814
+파일 중복 채크
+Checking for duplicate files
+*/
+ MSG_REPLAY_THESAMEFILEEXISTS = 0x7c5,
+/*20110816 to latest
+Record Start
+20130807 to 20130814
+동일한 파일이 존재 합니다.
+The same file exists already.
+*/
+ MSG_REPLAY_RECORDSTART = 0x7c6,
+/*20110816 to latest
+ is Saved.
+20130807 to 20130814
+Record Start
+*/
+ MSG_REPLAY_RECORDEND = 0x7c7,
+#endif
+#if PACKETVER >= 20110823
+/*20110823 to latest
+Weight : %3d / %3d
+Weight: %3d / %3d
+20130807 to 20130814
+ is Saved.
+*/
+ MSG_WEIGHT = 0x7c8,
+/*20110823 to latest
+Total : %s C
+Total: %s C
+20130807 to 20130814
+Weight : %3d / %3d
+Weight: %3d / %3d
+*/
+ MSG_TOTAL = 0x7c9,
+/*20110823 to latest
+[수리검]을 장착한 상태여야 합니다.
+[Shuriken] must be equipped.
+20130807 to 20130814
+Total : %s C
+Total: %s C
+*/
+ MSG_FAIL_NEED_EQUIPPED_SYURIKEN = 0x7ca,
+#endif
+#if PACKETVER >= 20110831
+/*20110831 to latest
+Base Lv. %d
+20130807 to 20130814
+[수리검]을 장착한 상태여야 합니다.
+[Shuriken] must be equipped.
+*/
+ MSG__BASIC_MSG_BASE = 0x7cb,
+/*20110831 to latest
+Job Lv. %d
+20130807 to 20130814
+Base Lv. %d
+*/
+ MSG__BASIC_MSG_JOB = 0x7cc,
+/*20110831 to latest
+Zeny : %s
+Zeny: %s
+20130807 to 20130814
+Job Lv. %d
+*/
+ MSG_BASIC_MSG_ZENY = 0x7cd,
+/*20110831 to latest
+Trilinear
+20130807 to 20130814
+Zeny : %s
+Zeny: %s
+*/
+ MSG_GRAPHIC_MSG_TRILINEAR = 0x7ce,
+/*20110831 to latest
+attack
+20130807 to 20130814
+Trilinear
+*/
+ MSG_GRAPHIC_MSG_ATTACK = 0x7cf,
+/*20110831 to latest
+skill
+20130807 to 20130814
+attack
+*/
+ MSG_GRAPHIC_MSG_SKILL = 0x7d0,
+/*20110831 to latest
+item
+20130807 to 20130814
+skill
+*/
+ MSG_GRAPHIC_MSG_ITEM = 0x7d1,
+/*20110831 to latest
+NoCtrl
+20130807 to 20130814
+item
+*/
+ MSG_GRAPHIC_MSG_NOCTRL = 0x7d2,
+/*20110831 to latest
+전장
+More
+20130807 to 20130814
+NoCtrl
+*/
+ MSG_GRAPHIC_MSG_BATTLE = 0x7d3,
+/*20110831 to latest
+(Character/Total Slot)
+20130807 to 20130814
+전장
+More
+*/
+ MSG_CHARACTER_MSG_CHARACTERTOTALSLOT = 0x7d4,
+/*20110831 to latest
+Premium Service
+VIP Service
+20130807 to 20130814
+(Character/Total Slot)
+*/
+ MSG_CHARACTER_MSG_PREMIUMSERVICE = 0x7d5,
+/*20110831 to latest
+Premium
+VIP
+20130807 to 20130814
+Premium Service
+VIP Service
+*/
+ MSG_CHARACTER_MSG_PREMIUM = 0x7d6,
+/*20110831 to latest
+Service
+20130807 to 20130814
+Premium
+VIP
+*/
+ MSG_CHARACTER_MSG_SERVICE = 0x7d7,
+/*20110831 to latest
+Billing Service
+VIP
+20130807 to 20130814
+Service
+*/
+ MSG_CHARACTER_MSG_BILLINGSERVICE = 0x7d8,
+/*20110831 to latest
+Billing
+VIP
+20130807 to 20130814
+Billing Service
+VIP
+*/
+ MSG_CHARACTER_MSG_BILLING = 0x7d9,
+/*20110831 to latest
+Command List
+20130807 to 20130814
+Billing
+VIP
+*/
+ MSG_MSG_COMMANDLIST = 0x7da,
+/*20110831 to latest
+LEVEL
+20130807 to 20130814
+Command List
+*/
+ MSG_SEEK_PARTY_LEVEL = 0x7db,
+/*20110831 to latest
+MAP
+20130807 to 20130814
+LEVEL
+*/
+ MSG_SEEK_PARTY_MAP = 0x7dc,
+/*20110831 to latest
+JOB
+20130807 to 20130814
+MAP
+*/
+ MSG_SEEK_PARTY_JOB = 0x7dd,
+#endif
+#if PACKETVER >= 20110906
+/*20110906 to latest
+Not Available
+20130807 to 20130814
+JOB
+*/
+ MSG_MSG_NOTAVAILABLE = 0x7de,
+#endif
+#if PACKETVER >= 20110920
+/*20110920 to 20110929
+[수호 천사의 보호] 스킬은 만렙일 경우, 경험치 100% 이상일 때는 사용할 수 없습니다.
+20111004 to latest
+[수호 천사의 보호] 만렙일 경우 사용할 수 없습니다.
+[Protection of Guardian Angel] You can't use it when you reach the highest level.
+20130807 to 20130814
+Not Available
+*/
+ MSG_MSG_SUPERNOVICE_CHOPOKGI_CAPPEDLEVEL = 0x7df,
+#endif
+#if PACKETVER >= 20110928
+/*20110928 to latest
+정말 이동하시겠습니까?
+Do you really want to move?
+20130807 to 20130814
+[수호 천사의 보호] 만렙일 경우 사용할 수 없습니다.
+[Protection of Guardian Angel] You can't use it when you reach the highest level.
+*/
+ MSG_CHANGE_CHARACTER_SLOT = 0x7e0,
+/*20110928 to latest
+캐릭터 슬롯 이동에 실패했습니다.
+Failed to move Char slot.
+20130807 to 20130814
+정말 이동하시겠습니까?
+Do you really want to move?
+*/
+ MSG_CHANGE_CHARACTER_SLOT_FAILED = 0x7e1,
+#endif
+#if PACKETVER >= 20111004
+/*20111004 to latest
+캐릭터 이름이 잘못 되었습니다.
+Character name is invalid.
+20130807 to 20130814
+캐릭터 슬롯 이동에 실패했습니다.
+Failed to move Char slot.
+*/
+ MSG_CHARACTERNAME_ERROR = 0x7e2,
+/*20111004 to latest
+퀘스트보기창
+Show Quest
+20130807 to 20130814
+캐릭터 이름이 잘못 되었습니다.
+Character name is invalid.
+*/
+ MSG_QUEST_DISPLAY_ONOFF = 0x7e3,
+#endif
+#if PACKETVER >= 20111017
+/*20111017 to 20111021
+정말 탭을 제거하시겠습니까?
+20111025 to 20111116
+청소년 보호법에 따라, 잠시 후 0시 부터 6시 까지 ^ff0000만 16세 미만 고객님들의 게임 이용이 제한^000000됩니다.
+20111122 to latest
+ 청소년 보호법에 따라, 잠시 후 0시 부터 6시 까지 만 16세 미만 고객님들의 게임 이용이 제한됩니다.
+Depending on the protection of youth, and 0:00 to 6:00 while under the age of 16 of your game use is limited.
+20130807 to 20130814
+퀘스트보기창
+Show Quest
+*/
+ MSG_SHUTDOWN_ALERT_MSG = 0x7e4,
+/*20111017 to 20111021
+더이상 탭을 제거할 수 없습니다.
+20111025 to latest
+청소년 보호법에 따라, 0시 부터 6시 까지 ^ff0000만 16세 미만 고객님들의 게임 이용이 제한^000000되며, 게임을 종료합니다.
+Depending on the protection of youth, 0:00 to 6:00 ^ff0000 under the age of 16 ^000000 limit your use of the game and the game ends.
+20130807 to 20130814
+ 청소년 보호법에 따라, 잠시 후 0시 부터 6시 까지 만 16세 미만 고객님들의 게임 이용이 제한됩니다.
+Depending on the protection of youth, and 0:00 to 6:00 while under the age of 16 of your game use is limited.
+*/
+ MSG_BAN_SHUTDOWN_TEENAGER = 0x7e5,
+/*20111017 to 20111021
+더이상 탭을 추가할 수 없습니다.
+20111025 to latest
+캐릭터 이름을 변경하기 위해서는 길드에서 탈퇴 해야 합니다.
+In order to change the character name, you must leave the guild.
+20130807 to 20130814
+청소년 보호법에 따라, 0시 부터 6시 까지 ^ff0000만 16세 미만 고객님들의 게임 이용이 제한^000000되며, 게임을 종료합니다.
+Depending on the protection of youth, 0:00 to 6:00 ^ff0000 under the age of 16 ^000000 limit your use of the game and the game ends.
+*/
+ MSG_FAILED_RENAME_BELONGS_TO_GUILD = 0x7e6,
+#endif
+#if PACKETVER >= 20111025
+/*20111025 to latest
+캐릭터 이름을 변경하기 위해서는 파티에서 탈퇴 해야 합니다.
+In order to change the character name, you must leave the party.
+20130807 to 20130814
+캐릭터 이름을 변경하기 위해서는 길드에서 탈퇴 해야 합니다.
+In order to change the character name, you must leave the guild.
+*/
+ MSG_FAILED_RENAME_BELONGS_TO_PARTY = 0x7e7,
+/*20111025 to latest
+알 수 없는 오류로 캐릭터 이름 변경이 실패 하였습니다.
+Character name change failed, due an unknown error.
+20130807 to 20130814
+캐릭터 이름을 변경하기 위해서는 파티에서 탈퇴 해야 합니다.
+In order to change the character name, you must leave the party.
+*/
+ MSG_FAILED_RENAME_UNKOWN = 0x7e8,
+#endif
+#if PACKETVER >= 20111101
+/*20111101 to latest
+이미 캐릭터 슬롯변경이 가능한 상태입니다.(%d)
+Ready to change character slot in.(%d)
+20130807 to 20130814
+알 수 없는 오류로 캐릭터 이름 변경이 실패 하였습니다.
+Character name change failed, due an unknown error.
+*/
+ MSG_CHARSLOT_CHANGE_DUPLICATE = 0x7e9,
+/*20111101 to latest
+이미 캐릭터 이름변경이 가능한 상태입니다.(%d)
+Ready to change character name in.(%d)
+20130807 to 20130814
+이미 캐릭터 슬롯변경이 가능한 상태입니다.(%d)
+Ready to change character slot in.(%d)
+*/
+ MSG_CHARNAME_CHANGE_DUPLICATE = 0x7ea,
+/*20111101 to latest
+변경하려는 이름의 길이가 최대크기를 초과하여 캐릭터 이름 변경이 실패 하였습니다.
+Length exceeds the maximum size of the character name you want to change.
+20130807 to 20130814
+이미 캐릭터 이름변경이 가능한 상태입니다.(%d)
+Ready to change character name in.(%d)
+*/
+ MSG_FAILED_RENAME_OVER_LENGTH = 0x7eb,
+/*20111101 to latest
+사용할 수 없는 단어가 포함되어 캐릭터 이름 변경이 실패 하였습니다.
+Name contains invalid characters. Character name change failed.
+20130807 to 20130814
+변경하려는 이름의 길이가 최대크기를 초과하여 캐릭터 이름 변경이 실패 하였습니다.
+Length exceeds the maximum size of the character name you want to change.
+*/
+ MSG_FAILED_RENAME_PREVENTNAM = 0x7ec,
+/*20111101 to latest
+이름 변경이 금지된 상태이므로 캐릭터 이름 변경이 실패 하였습니다.
+The name change is prohibited. Character name change failed.
+20130807 to 20130814
+사용할 수 없는 단어가 포함되어 캐릭터 이름 변경이 실패 하였습니다.
+Name contains invalid characters. Character name change failed.
+*/
+ MSG_FAILED_RENAME_FORBIDDEN = 0x7ed,
+#endif
+#if PACKETVER >= 20111108
+/*20111108 to latest
+완료
+Complete
+20130807 to 20130814
+이름 변경이 금지된 상태이므로 캐릭터 이름 변경이 실패 하였습니다.
+The name change is prohibited. Character name change failed.
+*/
+ MSG_COMPLETE_HUNTING_QUEST = 0x7ee,
+#endif
+#if PACKETVER >= 20111114
+/*20111114 to 20111116
+ 몬스터 사냥을 통해 얻을 수 있는 경험치가 %d분간 %d%% 증가합니다.
+20111122 to latest
+ %d분간 얻을 수 있는 경험치가 %d%% 증가합니다.
+During %d minutes your Exp will increase by %d%%.
+20130807 to 20130814
+완료
+Complete
+*/
+ MSG_PLUSEXP_VALUE = 0x7ef,
+/*20111114 to latest
+소환까지 %02d초남았습니다.
+%02d seconds left until summon.
+20130807 to 20130814
+ %d분간 얻을 수 있는 경험치가 %d%% 증가합니다.
+During %d minutes your Exp will increase by %d%%.
+*/
+ MSG_PARTY_RECALL_TIME = 0x7f0,
+/*20111114 to latest
+파티장이 당신을 %s (%s) 로 소환합니다.소환시 %d zeny가 소모됩니다.
+Your party leader summons you to %s (%s). Warp costs %d Zeny.
+20130807 to 20130814
+소환까지 %02d초남았습니다.
+%02d seconds left until summon.
+*/
+ MSG_PARTY_RECALL_INFO = 0x7f1,
+/*20111114 to latest
+소환대상
+Summon target
+20130807 to 20130814
+파티장이 당신을 %s (%s) 로 소환합니다.소환시 %d zeny가 소모됩니다.
+Your party leader summons you to %s (%s). Warp costs %d Zeny.
+*/
+ MSG_RECALL_TARGET = 0x7f2,
+/*20111114 to latest
+차단목록
+Block List
+20130807 to 20130814
+소환대상
+Summon target
+*/
+ MSG_PARTY_BLACKLIST = 0x7f3,
+/*20111114 to 20120207
+파티 광고를 등록하기 위해 1000제니가 소모됩니다.
+20120214 to latest
+파티 광고를 등록하기 위해 %d제니가 소모됩니다.
+%d Zeny will be spent for making party ad.
+20130807 to 20130814
+차단목록
+Block List
+*/
+ MSG_PARTY_CF_PAY = 0x7f4,
+/*20111114 to latest
+파티 광고를 하기 위한 제니가 부족합니다.
+Insufficient Zeny for making party ad.
+20130807 to 20130814
+파티 광고를 등록하기 위해 %d제니가 소모됩니다.
+%d Zeny will be spent for making party ad.
+*/
+ MSG_PARTY_CF_PAY_SHORTAGE_COST = 0x7f5,
+/*20111114 to latest
+)님 파티 가입승인
+) party: accept invitation
+20130807 to 20130814
+파티 광고를 하기 위한 제니가 부족합니다.
+Insufficient Zeny for making party ad.
+*/
+ MSG_PARTY_ADD_OK = 0x7f6,
+/*20111114 to latest
+)님 파티 가입거부
+) party: decline invitation
+20130807 to 20130814
+)님 파티 가입승인
+) party: accept invitation
+*/
+ MSG_PARTY_ADD_REFUSES = 0x7f7,
+/*20111114 to latest
+)님 장비창보기
+) party: show equipment window
+20130807 to 20130814
+)님 파티 가입거부
+) party: decline invitation
+*/
+ MSG_PARTY_ITEM_VIEW = 0x7f8,
+/*20111114 to latest
+한글18글자,영문36글자 입력가능
+Up to 36 english letters can be entered
+20130807 to 20130814
+)님 장비창보기
+) party: show equipment window
+*/
+ MSG_SEEK_PARTY_MEMO_HELP = 0x7f9,
+/*20111114 to latest
+지원하기
+Enter
+20130807 to 20130814
+한글18글자,영문36글자 입력가능
+Up to 36 english letters can be entered
+*/
+ MSG_PARTY_REQUEST = 0x7fa,
+/*20111114 to latest
+1:1대화하기
+1:1 Chat
+20130807 to 20130814
+지원하기
+Enter
+*/
+ MSG_DIRECT_CHAT = 0x7fb,
+/*20111114 to latest
+차단하기
+Block
+20130807 to 20130814
+1:1대화하기
+1:1 Chat
+*/
+ MSG_ADD_BLACKLIST = 0x7fc,
+#endif
+#if PACKETVER >= 20111122
+/*20111122 to latest
+파티장에게 소환되기 위한 제니가 부족합니다.
+Insufficient Zeny for recall.
+20130807 to 20130814
+차단하기
+Block
+*/
+ MSG_PARTY_RECRUIT_NOT_RECALL_PAY = 0x7fd,
+/*20111122 to latest
+메모란에 파티광고를 써주세요.
+Input your party ad.
+20130807 to 20130814
+파티장에게 소환되기 위한 제니가 부족합니다.
+Insufficient Zeny for recall.
+*/
+ MSG_PARTY_RECRUIT_MEMO_ERROR = 0x7fe,
+/*20111122 to latest
+파티장만이 파티광고를 등록할수있습니다.
+Only party leader can register party ad.
+20130807 to 20130814
+메모란에 파티광고를 써주세요.
+Input your party ad.
+*/
+ MSG_PARTY_RECRUIT_ERROR = 0x7ff,
+/*20111122 to latest
+이미 지원한 파티광고입니다.
+You have already accepted this ad.
+20130807 to 20130814
+파티장만이 파티광고를 등록할수있습니다.
+Only party leader can register party ad.
+*/
+ MSG_PARTY_REFUSE_ERROR = 0x800,
+/*20111122 to latest
+내용
+For
+20130807 to 20130814
+이미 지원한 파티광고입니다.
+You have already accepted this ad.
+*/
+ MSG_PARTY_RECRUIT_INFO = 0x801,
+/*20111122 to latest
+장비
+E
+20130807 to 20130814
+내용
+For
+*/
+ MSG_INVENTORY_TABNAME_1 = 0x802,
+/*20111122 to latest
+개인
+F
+20130807 to 20130814
+장비
+E
+*/
+ MSG_INVENTORY_TABNAME_3 = 0x803,
+/*20111122 to latest
+ 아이템 버리기 잠금
+ Drop Lock: On/Off
+20130807 to 20130814
+개인
+F
+*/
+ MSG_ITEM_DROP_LOCK = 0x804,
+/*20111122 to latest
+파티원 찾기 알람
+Party Alarm
+20130807 to 20130814
+ 아이템 버리기 잠금
+ Drop Lock: On/Off
+*/
+ MSG_PARTY_RECRUIT_ALRAM = 0x805,
+#endif
+#if PACKETVER >= 20111207
+/*20111207 to latest
+파티결성
+Create Party
+20130807 to 20130814
+파티원 찾기 알람
+Party Alarm
+*/
+ MSG_CREATE_PARTY = 0x806,
+/*20111207 to latest
+파티탈퇴
+Leave Party
+20130807 to 20130814
+파티결성
+Create Party
+*/
+ MSG_WITHDRAW_PARTY = 0x807,
+/*20111207 to latest
+파티초대
+Party Invitation
+20130807 to 20130814
+파티탈퇴
+Leave Party
+*/
+ MSG_INVITE_PARTY = 0x808,
+/*20111207 to latest
+파티 이름 등록
+Party Name:
+20130807 to 20130814
+파티초대
+Party Invitation
+*/
+ MSG_PUT_PARTY_NAME_IN = 0x809,
+/*20111207 to latest
+초대할 캐릭터 이름
+Player Name:
+20130807 to 20130814
+파티 이름 등록
+Party Name:
+*/
+ MSG_PUT_PLAYER_NAME_IN = 0x80a,
+/*20111207 to latest
+님께 파티가입 요청을 보냈습니다.
+ has recieved an invitation to join your party.
+20130807 to 20130814
+초대할 캐릭터 이름
+Player Name:
+*/
+ MSG_CHARACTER_PARTY_INVITATION_TO_JOIN = 0x80b,
+/*20111207 to latest
+님께서 파티가입을 거절했습니다.
+ rejected your party invitation.
+20130807 to 20130814
+님께 파티가입 요청을 보냈습니다.
+ has recieved an invitation to join your party.
+*/
+ MSG_CHARACTER_REJECT_PARTY_INVITATION = 0x80c,
+/*20111207 to latest
+님께서 파티가입을 수락했습니다.
+ accepted your party invitation.
+20130807 to 20130814
+님께서 파티가입을 거절했습니다.
+ rejected your party invitation.
+*/
+ MSG_CHARACTER_ACCEPT_PARTY_INVITATION = 0x80d,
+/*20111207 to latest
+이미 파티모집중입니다.
+Recruitment is already a party.
+20130807 to 20130814
+님께서 파티가입을 수락했습니다.
+ accepted your party invitation.
+*/
+ MSG_PARTY_RECRUIT_ERROR1 = 0x80e,
+/*20111207 to latest
+이전 검색과 같은 조건입니다.
+Same conditions such as the previous search.
+20130807 to 20130814
+이미 파티모집중입니다.
+Recruitment is already a party.
+*/
+ MSG_PARTY_RECRUIT_ERROR2 = 0x80f,
+/*20111207 to latest
+길드 탈퇴 후 사용 가능합니다.
+Guild after withdrwal.
+20130807 to 20130814
+이전 검색과 같은 조건입니다.
+Same conditions such as the previous search.
+*/
+ MSG_CHARNAME_CHANGE_FILED_GUILDMEMBER = 0x810,
+/*20111207 to latest
+파티 탈퇴 후 사용 가능합니다.
+Party after secession.
+20130807 to 20130814
+길드 탈퇴 후 사용 가능합니다.
+Guild after withdrwal.
+*/
+ MSG_CHARNAME_CHANGE_FILED_PARTYMEMBER = 0x811,
+/*20111207 to latest
+소환 유저가 소환이 안되는 맵에 있습니다.
+The player can not be summoned to this map.
+20130807 to 20130814
+파티 탈퇴 후 사용 가능합니다.
+Party after secession.
+*/
+ MSG_PARTY_RECRUIT_RECALL_ERR1 = 0x812,
+/*20111207 to 20120229
+파티장이 있는 맵에서는 소환이 안됩니다.
+20120307 to latest
+현재 파티장이 있는 맵에서는 소환이 안됩니다.
+Party Leader is on a map that is restricted to summon players.
+20130807 to 20130814
+소환 유저가 소환이 안되는 맵에 있습니다.
+The player can not be summoned to this map.
+*/
+ MSG_PARTY_RECRUIT_RECALL_ERR2 = 0x813,
+/*20111207 to latest
+소환거부되었습니다.
+Summon has been denied.
+20130807 to 20130814
+현재 파티장이 있는 맵에서는 소환이 안됩니다.
+Party Leader is on a map that is restricted to summon players.
+*/
+ MSG_PARTY_RECRUIT_RECALL_ERR3 = 0x814,
+/*20111207 to latest
+소환을 할 수 없습니다.
+Can not be summoned.
+20130807 to 20130814
+소환거부되었습니다.
+Summon has been denied.
+*/
+ MSG_PARTY_RECRUIT_RECALL_ERR4 = 0x815,
+/*20111207 to latest
+파티초대는 파티장만 가능합니다.
+Only the leader can invite.
+20130807 to 20130814
+소환을 할 수 없습니다.
+Can not be summoned.
+*/
+ MSG_YOU_ARE_NOT_PARTYMASTER = 0x816,
+#endif
+#if PACKETVER >= 20111213
+/*20111213 to latest
+검색할 아이템명 입력 :
+Search item:
+20130807 to 20130814
+파티초대는 파티장만 가능합니다.
+Only the leader can invite.
+*/
+ MSG_NC_ITEM_SEARCH = 0x817,
+/*20111213 to latest
+캐릭터명을 입력하셔야 합니다.
+You must enter a character name.
+20130807 to 20130814
+검색할 아이템명 입력 :
+Search item:
+*/
+ MSG_PLEASE_PUT_CHARACTER_NAME_IN = 0x818,
+/*20111213 to latest
+파티이름을 입력하셔야 합니다.
+You must enter the name of the party.
+20130807 to 20130814
+캐릭터명을 입력하셔야 합니다.
+You must enter a character name.
+*/
+ MSG_PLEASE_PUT_PARTY_NAME_IN = 0x819,
+#endif
+#if PACKETVER >= 20111220
+/*20111220 to latest
+길드 도우미
+Guild Creation Window
+20130807 to 20130814
+파티이름을 입력하셔야 합니다.
+You must enter the name of the party.
+*/
+ MSG_GUILD_HELPER = 0x81a,
+/*20111220 to latest
+가입되어 있는 길드가 없습니다.
+Join a guild or start your own!
+20130807 to 20130814
+길드 도우미
+Guild Creation Window
+*/
+ MSG_NO_GUILD_CURRENTLY_PARTICIPATED_IN = 0x81b,
+/*20111220 to latest
+길드 결성
+Create Guild
+20130807 to 20130814
+가입되어 있는 길드가 없습니다.
+Join a guild or start your own!
+*/
+ MSG_CREATE_GUILD = 0x81c,
+/*20111220 to latest
+생성할 길드 이름
+Guild Name
+20130807 to 20130814
+길드 결성
+Create Guild
+*/
+ MIS_PUT_GUILD_NAME_IN = 0x81d,
+/*20111220 to latest
+길드 결성 도움말
+Guild System
+20130807 to 20130814
+생성할 길드 이름
+Guild Name
+*/
+ MIS_GUILD_TIP = 0x81e,
+/*20111220 to latest
+길드 시스템이란
+What is the guild system
+20130807 to 20130814
+길드 결성 도움말
+Guild System
+*/
+ MIS_GUILD_SYSTEM = 0x81f,
+/*20111220 to latest
+길드이름을 입력하셔야 합니다.
+You must enter the name of your guild.
+20130807 to 20130814
+길드 시스템이란
+What is the guild system
+*/
+ MSG_PLEASE_PUT_GUILD_NAME_IN = 0x820,
+#endif
+#if PACKETVER >= 20111227
+/*20111227 to latest
+지원한 파티에서 거부당했습니다.
+Supported at the party was rejected.
+20130807 to 20130814
+길드이름을 입력하셔야 합니다.
+You must enter the name of your guild.
+*/
+ MSG_PARTY_RECRUIT_REFUSE_VOLUNTEER = 0x821,
+#endif
+#if PACKETVER >= 20120103
+/*20120103 to latest
+서비스 선택.
+Select Service:
+20130807 to 20130814
+지원한 파티에서 거부당했습니다.
+Supported at the party was rejected.
+*/
+ MSG_SERVICESELECT = 0x822,
+/*20120103 to latest
+탈출 가능한 지역.
+Possible escape area.
+20130807 to 20130814
+서비스 선택.
+Select Service:
+*/
+ MSG_SHOW_MAPNAMETITLE = 0x823,
+/*20120103 to latest
+Replay File List
+20130807 to 20130814
+탈출 가능한 지역.
+Possible escape area.
+*/
+ MSG_REPLAY_STR_REPLAYFILELIST = 0x824,
+/*20120103 to latest
+File info
+20130807 to 20130814
+Replay File List
+*/
+ MSG_REPLAY_STR_FILEINFO = 0x825,
+/*20120103 to latest
+File List
+20130807 to 20130814
+File info
+*/
+ MSG_REPLAY_STR_FILELIST = 0x826,
+#endif
+#if PACKETVER >= 20120117
+/*20120117 to latest
+%s 아이템은 거래가 불가능 합니다.
+%s Item deal not possible.
+20130807 to 20130814
+File List
+*/
+ MSG_NOT_MOVEABLE_TRADE = 0x827,
+#endif
+#if PACKETVER >= 20120207
+/*20120207 to latest
+길드해체
+Disband the Guild
+20130807 to 20130814
+%s 아이템은 거래가 불가능 합니다.
+%s Item deal not possible.
+*/
+ MSG_GUILD_DISBAND = 0x828,
+/*20120207 to latest
+해체할 길드 이름
+Enter Guild Name
+20130807 to 20130814
+길드해체
+Disband the Guild
+*/
+ MSG_PUT_DISBAND_GUILDNAME = 0x829,
+#endif
+#if PACKETVER >= 20120214
+/*20120214 to latest
+접속하지 않았거나 존재하지 않는 캐릭터입니다.
+The character is not online or does not exist.
+20130807 to 20130814
+해체할 길드 이름
+Enter Guild Name
+*/
+ MSG_JOINGUILD_NOTEXIST_USER = 0x82a,
+#endif
+#if PACKETVER >= 20120228
+/*20120228 to latest
+팔콘 호출에 실패하였습니다.
+Failed to call Falcon.
+20130807 to 20130814
+접속하지 않았거나 존재하지 않는 캐릭터입니다.
+The character is not online or does not exist.
+*/
+ MSG_FAILED_SET_EFFECT_BIRD = 0x82b,
+#endif
+#if PACKETVER >= 20120307
+/*20120307 to 20120321
+%d%% ( 프리미엄 %d%% + %s서버 %d%% )
+20120328 to latest
+%d%% ( 기본 100%% + 프리미엄 %d%% + %s서버 %d%% )
+%d%%(default 100%%+ Premium%d%%+%s Server%d%%)
+20130807 to 20130814
+팔콘 호출에 실패하였습니다.
+Failed to call Falcon.
+*/
+ MSG_BASIC_EXP_MSG_BRZ = 0x82c,
+/*20120307 to latest
+해당 유저는 현재 공성전에 참가하고 있습니다.
+This user is currently participating in the siege.
+20130807 to 20130814
+%d%% ( 기본 100%% + 프리미엄 %d%% + %s서버 %d%% )
+%d%%(default 100%%+ Premium%d%%+%s Server%d%%)
+*/
+ MSG_JOINGUILD_TARGET_USER_IN_SIEGEMAP = 0x82d,
+/*20120307 to latest
+동일한 맵에서만 파티장 변경이 가능합니다.
+It is only possible to change the party leader while on the same map.
+20130807 to 20130814
+해당 유저는 현재 공성전에 참가하고 있습니다.
+This user is currently participating in the siege.
+*/
+ MSG_PARTY_MASTER_CHANGE_SAME_MAP = 0x82e,
+/*20120307 to latest
+현재 지역에서는 파티장 변경이 불가능합니다.
+In the current region it is not possible to change the party.
+20130807 to 20130814
+동일한 맵에서만 파티장 변경이 가능합니다.
+It is only possible to change the party leader while on the same map.
+*/
+ MSG_CANNOT_PARTY_MASTER_CHANGE_IN_MAP = 0x82f,
+/*20120307 to latest
+그리폰 내리기
+Gryphon making
+20130807 to 20130814
+현재 지역에서는 파티장 변경이 불가능합니다.
+In the current region it is not possible to change the party.
+*/
+ MSG_ROYAL_CHIKENOFF = 0x830,
+/*20120307 to 20120307
+현재 공성전에 참여 중이므로 길드초대를 하실 수 없습니다.
+You can't invite characters in WoE maps.
+20120314 to latest
+%d월 %d일 %d시 %d분 %d초
+Delete: %d/%d - %d:%d:%d
+20130807 to 20130814
+그리폰 내리기
+Gryphon making
+*/
+ MSG_TIME_TYPE3 = 0x831,
+#endif
+#if PACKETVER >= 20120314
+/*20120314 to latest
+현재 공성전에 참여 중이므로 길드초대를 하실 수 없습니다.
+You can't invite characters in WoE maps.
+20130807 to 20130814
+%d월 %d일 %d시 %d분 %d초
+Delete: %d/%d - %d:%d:%d
+*/
+ MSG_JOINGUILD_REQ_USER_IN_SIEGEMAP = 0x832,
+/*20120314 to latest
+전장에 입장 대기를 신청하셨습니다.
+You are now in the battlefield queue.
+20130807 to 20130814
+현재 공성전에 참여 중이므로 길드초대를 하실 수 없습니다.
+You can't invite characters in WoE maps.
+*/
+ MSG_BATTLEFIELD_MSG_REQUEST_JOINWAIT = 0x833,
+/*20120314 to latest
+인원이 가득 찼습니다.
+Queuing has finished.
+20130807 to 20130814
+전장에 입장 대기를 신청하셨습니다.
+You are now in the battlefield queue.
+*/
+ MSG_BATTLEFIELD_MSG_FULL = 0x834,
+/*20120314 to latest
+확인되지 않은 전장명입니다.
+Invalid name of the battlefield.
+20130807 to 20130814
+인원이 가득 찼습니다.
+Queuing has finished.
+*/
+ MSG_BATTLEFIELD_MSG_UNKNOWN_NAME = 0x835,
+/*20120314 to latest
+확인되지 않은 신청타입입니다.
+Invalid type of application.
+20130807 to 20130814
+확인되지 않은 전장명입니다.
+Invalid name of the battlefield.
+*/
+ MSG_BATTLEFIELD_MSG_UNKNOWN_TYPE = 0x836,
+/*20120314 to latest
+최대 인원을 초과하였습니다.
+People count exceeded.
+20130807 to 20130814
+확인되지 않은 신청타입입니다.
+Invalid type of application.
+*/
+ MSG_BATTLEFIELD_MSG_MAXOVER = 0x837,
+/*20120314 to latest
+입장 레벨이 맞지 않습니다.
+Your level doesn't fit this battlefield rules.
+20130807 to 20130814
+최대 인원을 초과하였습니다.
+People count exceeded.
+*/
+ MSG_BATTLEFIELD_MSG_JOIN_NOTLEVEL = 0x838,
+/*20120314 to latest
+중복 신청하셨습니다.
+Duplicate application.
+20130807 to 20130814
+입장 레벨이 맞지 않습니다.
+Your level doesn't fit this battlefield rules.
+*/
+ MSG_BATTLEFIELD_MSG_JOIN_OVERLAP = 0x839,
+/*20120314 to latest
+재접속후 다시 신청하여 주시기 바랍니다.
+After reconnecting, please re-apply.
+20130807 to 20130814
+중복 신청하셨습니다.
+Duplicate application.
+*/
+ MSG_BATTLEFIELD_MSG_RESTART = 0x83a,
+/*20120314 to latest
+직업이 맞지 않습니다.
+Your class can't participate in this battlefield.
+20130807 to 20130814
+재접속후 다시 신청하여 주시기 바랍니다.
+After reconnecting, please re-apply.
+*/
+ MSG_BATTLEFIELD_MSG_NOTJOB = 0x83b,
+/*20120314 to latest
+파티장이나 길드장만이 신청할 수 있습니다.
+Only party leader / guild master can apply.
+20130807 to 20130814
+직업이 맞지 않습니다.
+Your class can't participate in this battlefield.
+*/
+ MSG_BATTLEFIELD_MSG_JOIN_ONLYBOSS = 0x83c,
+/*20120314 to latest
+전장을 이용 중인 팀원이 있어 신청이 불가능 합니다.
+You can't apply while your team member is already on a battlefield.
+20130807 to 20130814
+파티장이나 길드장만이 신청할 수 있습니다.
+Only party leader / guild master can apply.
+*/
+ MSG_BATTLEFIELD_MSG_BUSY_PARTYMEMBER = 0x83d,
+/*20120314 to latest
+전장 입장 대기가 취소되었습니다.
+You have left the battlefield queue.
+20130807 to 20130814
+전장을 이용 중인 팀원이 있어 신청이 불가능 합니다.
+You can't apply while your team member is already on a battlefield.
+*/
+ MSG_BATTLEFIELD_MSG_CANCEL_JOINWAIT = 0x83e,
+/*20120314 to latest
+잘못된 전장명 입니다.
+Wrong battlefield name.
+20130807 to 20130814
+전장 입장 대기가 취소되었습니다.
+You have left the battlefield queue.
+*/
+ MSG_BATTLEFIELD_MSG_WRONG_NAME = 0x83f,
+/*20120314 to latest
+전장 입장 대기 순위에 없습니다.
+You are not in the battlefield queue list
+20130807 to 20130814
+잘못된 전장명 입니다.
+Wrong battlefield name.
+*/
+ MSG_BATTLEFIELD_MSG_NOTRANK = 0x840,
+/*20120314 to latest
+선택하신 전장은 현재 이용하실 수 없으므로 대기가 취소됩니다.
+The selected arena is unavailable; your application has been cancelled
+20130807 to 20130814
+전장 입장 대기 순위에 없습니다.
+You are not in the battlefield queue list
+*/
+ MSG_BATTLEFIELD_MSG_FAIL_CHOICE = 0x841,
+/*20120314 to latest
+전장 입장을 취소하였습니다.
+You have left the queue
+20130807 to 20130814
+선택하신 전장은 현재 이용하실 수 없으므로 대기가 취소됩니다.
+The selected arena is unavailable; your application has been cancelled
+*/
+ MSG_BATTLEFIELD_MSG_CANCEL_JOIN = 0x842,
+/*20120314 to latest
+전장에 입장하시겠습니까?
+Are you sure you want to join a battleground?
+20130807 to 20130814
+전장 입장을 취소하였습니다.
+You have left the queue
+*/
+ MSG_BATTLEFIELD_MSG_DOYOU_JOIN = 0x843,
+/*20120314 to latest
+전장 입장 신청 시스템
+[Battlefield application rules]
+20130807 to 20130814
+전장에 입장하시겠습니까?
+Are you sure you want to join a battleground?
+*/
+ MSG_BATTLEFIELD_HELP1 = 0x844,
+/*20120314 to latest
+입장 신청 및 전장으로의 공간이동 불가 상황
+Application and position into the battlefield cannot be applied under this circumtances
+20130807 to 20130814
+전장 입장 신청 시스템
+[Battlefield application rules]
+*/
+ MSG_BATTLEFIELD_HELP2 = 0x845,
+/*20120314 to latest
+1. 여러 종류의 전장을 동시에 신청할 수 없습니다.
+1. Different types of battle can not be applied simultaneously.
+20130807 to 20130814
+입장 신청 및 전장으로의 공간이동 불가 상황
+Application and position into the battlefield cannot be applied under this circumtances
+*/
+ MSG_BATTLEFIELD_HELP3 = 0x846,
+/*20120314 to latest
+2. 개인 / 파티 / 길드 전장을 동시에 신청할 수 없습니다.
+2. Personal / party / guild battle can not be applied simultaneously.
+20130807 to 20130814
+1. 여러 종류의 전장을 동시에 신청할 수 없습니다.
+1. Different types of battle can not be applied simultaneously.
+*/
+ MSG_BATTLEFIELD_HELP4 = 0x847,
+/*20120314 to latest
+3. 파티 전장 신청은 파티장만 신청할 수 있으며,
+3. Parties can only be applied by their party leaders.
+20130807 to 20130814
+2. 개인 / 파티 / 길드 전장을 동시에 신청할 수 없습니다.
+2. Personal / party / guild battle can not be applied simultaneously.
+*/
+ MSG_BATTLEFIELD_HELP5 = 0x848,
+/*20120314 to latest
+오프라인중이거나 오프라인 된 파티원은 대기열에서 누락됩니다.
+Offline party members won't proceed to the queue.
+20130807 to 20130814
+3. 파티 전장 신청은 파티장만 신청할 수 있으며,
+3. Parties can only be applied by their party leaders.
+*/
+ MSG_BATTLEFIELD_HELP6 = 0x849,
+/*20120314 to latest
+4. 전장 신청은 전장 맵을 제외한 모든 곳에서 신청 가능하나,
+4. You can add request to enter the arena from any map except for those who don't allow teleport/warp.
+20130807 to 20130814
+오프라인중이거나 오프라인 된 파티원은 대기열에서 누락됩니다.
+Offline party members won't proceed to the queue.
+*/
+ MSG_BATTLEFIELD_HELP7 = 0x84a,
+/*20120314 to latest
+입장한 위치가 마을, 필드, 일반 던전이 아닐 경우 복귀 시 캐릭터 저장 좌표로 이동 됩니다.
+When the battle is finished your character will be returned to the current spot or (if it's not possible) to the save point.
+20130807 to 20130814
+4. 전장 신청은 전장 맵을 제외한 모든 곳에서 신청 가능하나,
+4. You can add request to enter the arena from any map except for those who don't allow teleport/warp.
+*/
+ MSG_BATTLEFIELD_HELP8 = 0x84b,
+/*20120314 to latest
+5. 전장의 보상 및 기타 서비스는 각 마을에 위치한 전장 모병관을 통해 전장 대기실에서 이용해 주십시오.
+5. You can view and choose rewards in the arena waiting room.
+20130807 to 20130814
+입장한 위치가 마을, 필드, 일반 던전이 아닐 경우 복귀 시 캐릭터 저장 좌표로 이동 됩니다.
+When the battle is finished your character will be returned to the current spot or (if it's not possible) to the save point.
+*/
+ MSG_BATTLEFIELD_HELP9 = 0x84c,
+/*20120314 to latest
+전장 입장 신청 도움말
+Request help battle position
+20130807 to 20130814
+5. 전장의 보상 및 기타 서비스는 각 마을에 위치한 전장 모병관을 통해 전장 대기실에서 이용해 주십시오.
+5. You can view and choose rewards in the arena waiting room.
+*/
+ MSG_BATTLEFIELD_HELP10 = 0x84d,
+/*20120314 to latest
+%s 전장이 시작됩니다.
+%s battle begins.
+20130807 to 20130814
+전장 입장 신청 도움말
+Request help battle position
+*/
+ MSG_BATTLEFIELD_START = 0x84e,
+/*20120314 to latest
+전장으로 이동하시겠습니까?
+Do you want to enter the arena?
+20130807 to 20130814
+%s 전장이 시작됩니다.
+%s battle begins.
+*/
+ MSG_BATTLEFIELD_DOYOU_MOVE = 0x84f,
+/*20120314 to latest
+[주의]
+[Note]
+20130807 to 20130814
+전장으로 이동하시겠습니까?
+Do you want to enter the arena?
+*/
+ MSG_BATTLEFIELD_WARNINGMSG1 = 0x850,
+/*20120314 to latest
+현재 위치가 마을, 필드 혹은 일반던전이
+When the battle is finished your character will
+20130807 to 20130814
+[주의]
+[Note]
+*/
+ MSG_BATTLEFIELD_WARNINGMSG2 = 0x851,
+/*20120314 to latest
+아닐 경우 전장 종료 후 저장된 위치로
+be returned to the current spot or (if it's not
+20130807 to 20130814
+현재 위치가 마을, 필드 혹은 일반던전이
+When the battle is finished your character will
+*/
+ MSG_BATTLEFIELD_WARNINGMSG3 = 0x852,
+/*20120314 to latest
+되돌아가게 됩니다.
+possible) to the save point.
+20130807 to 20130814
+아닐 경우 전장 종료 후 저장된 위치로
+be returned to the current spot or (if it's not
+*/
+ MSG_BATTLEFIELD_WARNINGMSG4 = 0x853,
+/*20120314 to latest
+다른 이의 요청 결과를 기다리고 있습니다.
+Waiting for the opponents.
+20130807 to 20130814
+되돌아가게 됩니다.
+possible) to the save point.
+*/
+ MSG_BATTLEFIELD_WAIT_PLAYER = 0x854,
+/*20120314 to latest
+전장 입장 요청
+Battlefield position request
+20130807 to 20130814
+다른 이의 요청 결과를 기다리고 있습니다.
+Waiting for the opponents.
+*/
+ MSG_BATTLEFIELD_REQUEST_JOIN = 0x855,
+/*20120314 to latest
+수락대기시간:%d초
+Accept standby time:%d seconds
+20130807 to 20130814
+전장 입장 요청
+Battlefield position request
+*/
+ MSG_BATTLEFIELD_WAITTIME_D = 0x856,
+/*20120314 to latest
+입장 대기 상태
+Standby position
+20130807 to 20130814
+수락대기시간:%d초
+Accept standby time:%d seconds
+*/
+ MSG_BATTLEFIELD_STATE_JOINWAIT = 0x857,
+/*20120314 to latest
+전장 명칭: %s
+Battlefield name:%s
+20130807 to 20130814
+입장 대기 상태
+Standby position
+*/
+ MSG_BATTLEFIELD_NAME_S = 0x858,
+/*20120314 to latest
+전장 필요 인원: %d
+Persons required:%d
+20130807 to 20130814
+전장 명칭: %s
+Battlefield name:%s
+*/
+ MSG_BATTLEFIELD_MEMBER_D = 0x859,
+/*20120314 to latest
+내 대기순번: %d
+Your position:%d
+20130807 to 20130814
+전장 필요 인원: %d
+Persons required:%d
+*/
+ MSG_BATTLEFIELD_MYRANK_D = 0x85a,
+/*20120314 to latest
+명칭 :
+Name:
+20130807 to 20130814
+내 대기순번: %d
+Your position:%d
+*/
+ MSG_BATTLEFIELD_DP_TITLE = 0x85b,
+/*20120314 to latest
+목표 :
+Goal:
+20130807 to 20130814
+명칭 :
+Name:
+*/
+ MSG_BATTLEFIELD_DP_AIM = 0x85c,
+/*20120314 to latest
+전장의 인원 구성 :
+Format:
+20130807 to 20130814
+목표 :
+Goal:
+*/
+ MSG_BATTLEFIELD_DP_MEMBER = 0x85d,
+/*20120314 to latest
+참여조건 :
+Level:
+20130807 to 20130814
+전장의 인원 구성 :
+Format:
+*/
+ MSG_BATTLEFIELD_DP_REQUIRED = 0x85e,
+/*20120314 to latest
+보상(승) :
+Win:
+20130807 to 20130814
+참여조건 :
+Level:
+*/
+ MSG_BATTLEFIELD_DP_WIN = 0x85f,
+/*20120314 to latest
+보상(무) :
+Draw:
+20130807 to 20130814
+보상(승) :
+Win:
+*/
+ MSG_BATTLEFIELD_DP_DRAW = 0x860,
+/*20120314 to latest
+보상(패) :
+Loss:
+20130807 to 20130814
+보상(무) :
+Draw:
+*/
+ MSG_BATTLEFIELD_DP_LOSS = 0x861,
+/*20120314 to latest
+전장을 개인으로 신청 하셨습니다. 맞습니까?
+Do you want to participate in the individuals battle?
+20130807 to 20130814
+보상(패) :
+Loss:
+*/
+ MSG_BATTLEFIELD_DOYOU_SINGLE = 0x862,
+/*20120314 to latest
+전장을 파티로 신청 하셨습니다. 맞습니까?
+Do you want to participate in the parties battle?
+20130807 to 20130814
+전장을 개인으로 신청 하셨습니다. 맞습니까?
+Do you want to participate in the individuals battle?
+*/
+ MSG_BATTLEFIELD_DOYOU_PALTY = 0x863,
+/*20120314 to latest
+전장을 길드로 신청 하셨습니다. 맞습니까?
+Do you want to participate in the guilds battle?
+20130807 to 20130814
+전장을 파티로 신청 하셨습니다. 맞습니까?
+Do you want to participate in the parties battle?
+*/
+ MSG_BATTLEFIELD_DOYOU_GUILD = 0x864,
+/*20120314 to latest
+전장 목록
+Battleground List
+20130807 to 20130814
+전장을 길드로 신청 하셨습니다. 맞습니까?
+Do you want to participate in the guilds battle?
+*/
+ MSG_BATTLEFIELD_LIST2 = 0x865,
+/*20120314 to latest
+%d VS %d
+20130807 to 20130814
+전장 목록
+Battleground List
+*/
+ MSG_BATTLEFIELD_D_VS_D = 0x866,
+/*20120314 to latest
+Base LV %d 이하
+LV %d and lower
+20130807 to 20130814
+%d VS %d
+*/
+ MSG_BATTLEFIELD_LEVELDOWN_D = 0x867,
+/*20120314 to latest
+Base LV %d 이상
+LV %d and higher
+20130807 to 20130814
+Base LV %d 이하
+LV %d and lower
+*/
+ MSG_BATTLEFIELD_LEVELUP_D = 0x868,
+/*20120314 to latest
+Base LV %d ~ %d
+LV %d ~ %d
+20130807 to 20130814
+Base LV %d 이상
+LV %d and higher
+*/
+ MSG_BATTLEFIELD_LEVEL_D_D = 0x869,
+/*20120314 to latest
+제한 없음
+No restrictions
+20130807 to 20130814
+Base LV %d ~ %d
+LV %d ~ %d
+*/
+ MSG_BATTLEFIELD_LIMITLESS = 0x86a,
+/*20120314 to latest
+[해당 맵에서는 신청하실 수 없습니다.]
+[You can't apply on this map.]
+20130807 to 20130814
+제한 없음
+No restrictions
+*/
+ MSG_BATTLEFIELD_MSG_NOT_JOINMAP = 0x86b,
+/*20120314 to latest
+[전장 재신청까지 약 1분의 대기시간을 필요로 합니다.]
+[You must wait about 1 minute to apply.]
+20130807 to 20130814
+[해당 맵에서는 신청하실 수 없습니다.]
+[You can't apply on this map.]
+*/
+ MSG_BATTLEFIELD_MSG_WAIT_1MM = 0x86c,
+/*20120314 to latest
+[파티에 먼저 가입하셔야 합니다.]
+[You must be in a party.]
+20130807 to 20130814
+[전장 재신청까지 약 1분의 대기시간을 필요로 합니다.]
+[You must wait about 1 minute to apply.]
+*/
+ MSG_BATTLEFIELD_MSG_PLZ_PALTYJOIN = 0x86d,
+/*20120314 to latest
+[파티장만 신청 가능합니다.]
+[Only party leader can apply.]
+20130807 to 20130814
+[파티에 먼저 가입하셔야 합니다.]
+[You must be in a party.]
+*/
+ MSG_BATTLEFIELD_MSG_NOT_PALTYBOSS = 0x86e,
+/*20120314 to latest
+[접속되어있는 파티인원수가 많습니다.]
+[Too many party members online.]
+20130807 to 20130814
+[파티장만 신청 가능합니다.]
+[Only party leader can apply.]
+*/
+ MSG_BATTLEFIELD_MSG_OVER_PARTYMEMBER = 0x86f,
+/*20120314 to latest
+[길드에 먼저 가입하셔야 합니다.]
+[You must be in a guild.]
+20130807 to 20130814
+[접속되어있는 파티인원수가 많습니다.]
+[Too many party members online.]
+*/
+ MSG_BATTLEFIELD_MSG_PLZ_GUILDJOIN = 0x870,
+/*20120314 to latest
+[길드장만 신청 가능합니다.]
+[Only guild master can apply.]
+20130807 to 20130814
+[길드에 먼저 가입하셔야 합니다.]
+[You must be in a guild.]
+*/
+ MSG_BATTLEFIELD_MSG_NOT_GUILDBOSS = 0x871,
+/*20120314 to latest
+[접속되어있는 길드인원수가 많습니다.]
+[Too many guild members online.]
+20130807 to 20130814
+[길드장만 신청 가능합니다.]
+[Only guild master can apply.]
+*/
+ MSG_BATTLEFIELD_MSG_OVER_GUILDMEMBER = 0x872,
+/*20120314 to 20120314
+아이템 합치기
+20120320 to latest
+이동예약
+Moving Book
+20130807 to 20130814
+[접속되어있는 길드인원수가 많습니다.]
+[Too many guild members online.]
+*/
+ MSG_RESERVE_CHANGE_CHARACTER_SLOT = 0x873,
+/*20120314 to 20120314
+같은 종류의 아이템을 2개 이상 선택해주세요.
+Two or more of the same type. Please select an item.
+20120320 to latest
+이동
+Move
+20130807 to 20130814
+이동예약
+Moving Book
+*/
+ MSG_CHARACTER_SLOT_CHANGE = 0x874,
+/*20120314 to 20120314
+아이템 합치기에 성공했습니다.
+Item merge is successful.
+20120320 to latest
+이름변경
+Rename
+20130807 to 20130814
+이동
+Move
+*/
+ MSG_CHANGE_CHARACTER_NAME = 0x875,
+/*20120314 to 20120314
+아이템 합치기는 한번에 1종류씩만 가능합니다.
+Combining items will be only one kind at a time.
+20120320 to latest
+Make Character
+20130807 to 20130814
+이름변경
+Rename
+*/
+ MSG_MSG_MAKECHARCTER = 0x876,
+/*20120314 to 20120314
+아이템의 개수가 30000개 초과 했습니다.
+You cannot have more than 30,000 stacked items.
+20120320 to latest
+http://ro.game.gnjoy.com/
+20130807 to 20130814
+Make Character
+*/
+ MSG_UAE_URL = 0x877,
+#endif
+#if PACKETVER >= 20120320
+/*20120320 to latest
+(%s) Server
+20130807 to 20130814
+http://ro.game.gnjoy.com/
+*/
+ MSG_UAE_SERVERSTR = 0x878,
+/*20120320 to 20120328
+아이템 합치기
+20120404 to latest
+아이템 병합(모두선택 Ctrl+클릭)
+Item Merge
+20130807 to 20130814
+(%s) Server
+*/
+ MSG_MERGE_ITEM = 0x879,
+/*20120320 to latest
+같은 종류의 아이템을 2개 이상 선택해주세요.
+Two or more of the same type. Please select an item.
+20130807 to 20130814
+아이템 병합(모두선택 Ctrl+클릭)
+Item Merge
+*/
+ MSG_SELECT_ITEM_TO_MERGE = 0x87a,
+/*20120320 to latest
+아이템 합치기에 성공했습니다.
+Item merge is successful.
+20130807 to 20130814
+같은 종류의 아이템을 2개 이상 선택해주세요.
+Two or more of the same type. Please select an item.
+*/
+ MSG_MERGE_ITEM_SUCCESS = 0x87b,
+/*20120320 to latest
+아이템 합치기는 한번에 1종류씩만 가능합니다.
+Combining items will be only one kind at a time.
+20130807 to 20130814
+아이템 합치기에 성공했습니다.
+Item merge is successful.
+*/
+ MSG_MERGE_ITEM_FAILED_NOT_MERGE = 0x87c,
+/*20120320 to latest
+아이템의 개수가 30000개 초과 했습니다.
+You cannot have more than 30,000 stacked items.
+20130807 to 20130814
+아이템 합치기는 한번에 1종류씩만 가능합니다.
+Combining items will be only one kind at a time.
+*/
+ MSG_MERGE_ITEM_FAILED_MAX_COUNT = 0x87d,
+#endif
+#if PACKETVER >= 20120321
+/*20120321 to latest
+좌로 회전
+Rotate left
+20130807 to 20130814
+아이템의 개수가 30000개 초과 했습니다.
+You cannot have more than 30,000 stacked items.
+*/
+ MSG_CHARACTER_LEFT_ROLL = 0x87e,
+/*20120321 to latest
+우로 회전
+Rotate right
+20130807 to 20130814
+좌로 회전
+Rotate left
+*/
+ MSG_CHARACTER_RIGHT_ROLL = 0x87f,
+#endif
+#if PACKETVER >= 20120328
+/*20120328 to latest
+(%s)님의 이전서버 정보보기
+(%s) to view the old server information
+20130807 to 20130814
+우로 회전
+Rotate right
+*/
+ MSG_VIEW_BEFORE_WORLDINFO = 0x880,
+/*20120328 to latest
+기존 서버 정보
+Existing server information
+20130807 to 20130814
+(%s)님의 이전서버 정보보기
+(%s) to view the old server information
+*/
+ MSG_VIEW_BEFORE_WORLDINFO_TITLE = 0x881,
+/*20120328 to latest
+^ff0000기존 서버 : ^0000ff
+^ff0000Existing server: ^0000ff
+20130807 to 20130814
+기존 서버 정보
+Existing server information
+*/
+ MSG_VIEW_BEFORE_SERVERINFO = 0x882,
+/*20120328 to latest
+^ff0000기존 캐릭명 : ^0000ff
+^ff0000Existing character: ^0000ff
+20130807 to 20130814
+^ff0000기존 서버 : ^0000ff
+^ff0000Existing server: ^0000ff
+*/
+ MSG_VIEW_BEFORE_CHARNAME = 0x883,
+/*20120328 to latest
+공격한 몬스터의 HP가 표시됩니다.
+Show monster HP bar when attacking.
+20130807 to 20130814
+^ff0000기존 캐릭명 : ^0000ff
+^ff0000Existing character: ^0000ff
+*/
+ MSG_MONSTER_HP_ON = 0x884,
+/*20120328 to 20120328
+공격한 몬스터의 HP가 표시되지 않습니다..
+20120404 to latest
+공격한 몬스터의 HP가 표시되지 않습니다.
+Hide monster HP bar when attacking.
+20130807 to 20130814
+공격한 몬스터의 HP가 표시됩니다.
+Show monster HP bar when attacking.
+*/
+ MSG_MONSTER_HP_OFF = 0x885,
+#endif
+#if PACKETVER >= 20120404
+/*20120404 to latest
+병합 가능한 아이템이 존재하지 않습니다
+Merge does not exist as an item
+20130807 to 20130814
+공격한 몬스터의 HP가 표시되지 않습니다.
+Hide monster HP bar when attacking.
+*/
+ MSG_MERGE_ITEM_FAILED_NOT_EXIST = 0x886,
+/*20120404 to latest
+병합 가능한 아이템이 존재하지 않습니다.
+Merge items available does not exist.
+20130807 to 20130814
+병합 가능한 아이템이 존재하지 않습니다
+Merge does not exist as an item
+*/
+ MSG_NOT_EXIST_MERGE_ITEM = 0x887,
+/*20120404 to latest
+진행중
+Act
+20130807 to 20130814
+병합 가능한 아이템이 존재하지 않습니다.
+Merge items available does not exist.
+*/
+ MSG_QUESTUI_TAB_PROCESS = 0x888,
+/*20120404 to latest
+보류중
+Pen
+20130807 to 20130814
+진행중
+Act
+*/
+ MSG_QUESTUI_TAB_HOLD = 0x889,
+/*20120404 to latest
+추천
+Rec
+20130807 to 20130814
+보류중
+Pen
+*/
+ MSG_QUESTUI_TAB_BEST = 0x88a,
+/*20120404 to latest
+에피소드
+Episode
+20130807 to 20130814
+추천
+Rec
+*/
+ MSG_QUESTUI_TAB_EPISODE = 0x88b,
+/*20120404 to latest
+로컬
+Loc
+20130807 to 20130814
+에피소드
+Episode
+*/
+ MSG_QUESTUI_TAB_LOCAL = 0x88c,
+/*20120404 to latest
+이벤트
+Evt
+20130807 to 20130814
+로컬
+Loc
+*/
+ MSG_QUESTUI_TAB_EVENT = 0x88d,
+/*20120404 to latest
+신규
+New
+20130807 to 20130814
+이벤트
+Evt
+*/
+ MSG_QUESTUI_TAB_NEW = 0x88e,
+/*20120404 to latest
+사냥몬스터
+Monsters to kill
+20130807 to 20130814
+신규
+New
+*/
+ MSG_QUESTUI_HUNTMONSTER = 0x88f,
+/*20120404 to latest
+보상아이템
+Rewards
+20130807 to 20130814
+사냥몬스터
+Monsters to kill
+*/
+ MSG_QUESTUI_REWARDITEM = 0x890,
+/*20120404 to latest
+필요아이템
+Required Items
+20130807 to 20130814
+보상아이템
+Rewards
+*/
+ MSG_QUESTUI_NEEDITEM = 0x891,
+/*20120404 to latest
+제한시간
+Time Limit
+20130807 to 20130814
+필요아이템
+Required Items
+*/
+ MSG_QUESTUI_TIMELIMIT = 0x892,
+/*20120404 to latest
+마감시간
+Deadline
+20130807 to 20130814
+제한시간
+Time Limit
+*/
+ MSG_QUESTUI_CLOSINGTIME = 0x893,
+#endif
+#if PACKETVER >= 20120417
+/*20120417 to latest
+검색
+Search
+20130807 to 20130814
+마감시간
+Deadline
+*/
+ MSG_NAVIGATION_SEARCH = 0x894,
+/*20120417 to latest
+목표로 안내
+Navigation
+20130807 to 20130814
+검색
+Search
+*/
+ MSG_NAVIGATION_TARGETGO = 0x895,
+/*20120417 to latest
+길 정보
+Back to Navigation
+20130807 to 20130814
+목표로 안내
+Navigation
+*/
+ MSG_NAVIGATION_ROUTEINFO = 0x896,
+/*20120417 to latest
+검색 정보
+Find Information
+20130807 to 20130814
+길 정보
+Back to Navigation
+*/
+ MSG_NAVIGATION_SEARCHINFO = 0x897,
+/*20120417 to latest
+보기 모드 변경
+Toggle Minimap
+20130807 to 20130814
+검색 정보
+Find Information
+*/
+ MSG_NAVIGATION_VIEWCHANGE = 0x898,
+/*20120417 to 20130109
+안내 지시 색상 변경
+20130115 to latest
+외부 길정보 파일 읽기
+Read Information from External File
+20130807 to 20130814
+보기 모드 변경
+Toggle Minimap
+*/
+ MSG_NAVIGATION_LIGHTCHANGE = 0x899,
+/*20120417 to latest
+종료
+Exit
+20130807 to 20130814
+외부 길정보 파일 읽기
+Read Information from External File
+*/
+ MSG_NAVIGATION_END = 0x89a,
+/*20120417 to latest
+기본 UI로 변경
+Change the Default UI
+20130807 to 20130814
+종료
+Exit
+*/
+ MSG_NAVIGATION_BASE = 0x89b,
+/*20120417 to latest
+간편 UI로 변경
+Change to Default UI
+20130807 to 20130814
+기본 UI로 변경
+Change the Default UI
+*/
+ MSG_NAVIGATION_MINI = 0x89c,
+/*20120417 to latest
+도움말
+Help
+20130807 to 20130814
+간편 UI로 변경
+Change to Default UI
+*/
+ MSG_NAVIGATION_HELP = 0x89d,
+/*20120417 to latest
+ALL
+All
+20130807 to 20130814
+도움말
+Help
+*/
+ MSG_NAVIGATION_ALL = 0x89e,
+/*20120417 to latest
+Map
+20130807 to 20130814
+ALL
+All
+*/
+ MSG_NAVIGATION_MAP = 0x89f,
+/*20120417 to latest
+Npc
+20130807 to 20130814
+Map
+*/
+ MSG_NAVIGATION_NPC = 0x8a0,
+/*20120417 to latest
+Mob
+20130807 to 20130814
+Npc
+*/
+ MSG_NAVIGATION_MOB = 0x8a1,
+/*20120417 to latest
+검색 단어 설정 (Ex: 단어 단어 ...
+Enter search string... (Ex: word word ...)
+20130807 to 20130814
+Mob
+*/
+ MSG_NAVIGATION_SETSTRING = 0x8a2,
+/*20120417 to latest
+Scroll
+20130807 to 20130814
+검색 단어 설정 (Ex: 단어 단어 ...
+Enter search string... (Ex: word word ...)
+*/
+ MSG_NAVIGATION_SCROLL = 0x8a3,
+/*20120417 to latest
+던전이동 스크롤 사용 적용
+Use Scroll?
+20130807 to 20130814
+Scroll
+*/
+ MSG_NAVIGATION_USESCROLL = 0x8a4,
+/*20120417 to latest
+Service
+20130807 to 20130814
+던전이동 스크롤 사용 적용
+Use Scroll?
+*/
+ MSG_NAVIGATION_SERVICE = 0x8a5,
+/*20120417 to latest
+위치 이동 서비스 허용
+Use Kafra Warp?
+20130807 to 20130814
+Service
+*/
+ MSG_NAVIGATION_USESERVICE = 0x8a6,
+/*20120417 to latest
+Plane
+20130807 to 20130814
+위치 이동 서비스 허용
+Use Kafra Warp?
+*/
+ MSG_NAVIGATION_PLANE = 0x8a7,
+/*20120417 to latest
+비공정 이동 적용
+Use Airship?
+20130807 to 20130814
+Plane
+*/
+ MSG_NAVIGATION_USEPLANE = 0x8a8,
+/*20120417 to latest
+>> 목표 정보를 읽지 못함!
+>> Failed to read the target information.
+20130807 to 20130814
+비공정 이동 적용
+Use Airship?
+*/
+ MSG_NAVIGATION_TARGETUNKNOWN = 0x8a9,
+/*20120417 to latest
+<< 안내중 >>
+>> Destination <<
+20130807 to 20130814
+>> 목표 정보를 읽지 못함!
+>> Failed to read the target information.
+*/
+ MSG_NAVIGATION_GOING = 0x8aa,
+/*20120417 to latest
+<< 검색중... >>
+<< Goal >>
+20130807 to 20130814
+<< 안내중 >>
+>> Destination <<
+*/
+ MSG_NAVIGATION_SEARCHING = 0x8ab,
+/*20120417 to latest
+-----------
+20130807 to 20130814
+<< 검색중... >>
+<< Goal >>
+*/
+ MSG_NAVIGATION_UN = 0x8ac,
+/*20120417 to latest
+Navigation
+20130807 to 20130814
+-----------
+*/
+ MSG_NAVIGATION_NAVI = 0x8ad,
+/*20120417 to latest
+== 검색 결과(%d)==
+= Found (%d) ==
+20130807 to 20130814
+Navigation
+*/
+ MSG_NAVIGATION_SEARCHRESULT_D = 0x8ae,
+/*20120417 to latest
+Npc)%s:%s
+20130807 to 20130814
+== 검색 결과(%d)==
+= Found (%d) ==
+*/
+ MSG_NAVIGATION_NPC_S_S = 0x8af,
+/*20120417 to latest
+Mob)%s:%s
+20130807 to 20130814
+Npc)%s:%s
+*/
+ MSG_NAVIGATION_MOB_S_S = 0x8b0,
+/*20120417 to latest
+Map)%s
+20130807 to 20130814
+Mob)%s:%s
+*/
+ MSG_NAVIGATION_MAP_S = 0x8b1,
+/*20120417 to latest
+======== 결과 정보 ==========
+======== Results ==========
+20130807 to 20130814
+Map)%s
+*/
+ MSG_NAVIGATION_RESULTINFO = 0x8b2,
+/*20120417 to latest
+거리 : %d Sell %d WarpMove
+Dist %d Cell %d WarpMove
+20130807 to 20130814
+======== 결과 정보 ==========
+======== Results ==========
+*/
+ MSG_NAVIGATION_LENGTH = 0x8b3,
+/*20120417 to latest
+목표맵: %s(%s)
+Coords %s(%s)
+20130807 to 20130814
+거리 : %d Sell %d WarpMove
+Dist %d Cell %d WarpMove
+*/
+ MSG_NAVIGATION_TARGETMAP_S_S = 0x8b4,
+/*20120417 to latest
+목표 : %s(%d, %d)
+Goal:%s (%d,%d)
+20130807 to 20130814
+목표맵: %s(%s)
+Coords %s(%s)
+*/
+ MSG_NAVIGATION_TARGET_S_D_D = 0x8b5,
+/*20120417 to latest
+보스
+Boss
+20130807 to 20130814
+목표 : %s(%d, %d)
+Goal:%s (%d,%d)
+*/
+ MSG_NAVIGATION_BOSS = 0x8b6,
+/*20120417 to latest
+일반
+General
+20130807 to 20130814
+보스
+Boss
+*/
+ MSG_NAVIGATION_NORMAL = 0x8b7,
+/*20120417 to latest
+목표 : %s(%s)
+Goal:
+20130807 to 20130814
+일반
+General
+*/
+ MSG_NAVIGATION_TARGET_S_S = 0x8b8,
+/*20120417 to latest
+목표: (%d, %d)
+Goal: (%d, %d)
+20130807 to 20130814
+목표 : %s(%s)
+Goal:
+*/
+ MSG_NAVIGATION_TARGET_D_D = 0x8b9,
+/*20120417 to latest
+======= 길 안내 정보 =======
+======= Guidance =======
+20130807 to 20130814
+목표: (%d, %d)
+Goal: (%d, %d)
+*/
+ MSG_NAVIGATION_GOINFO = 0x8ba,
+/*20120417 to latest
+%2d) Item:%s => %s 사용!
+%2d) Item:%s => %s Use!
+20130807 to 20130814
+======= 길 안내 정보 =======
+======= Guidance =======
+*/
+ MSG_NAVIGATION_ITEM_S_S = 0x8bb,
+/*20120417 to latest
+%2d) %s(%d,%d)=>(%d,%d)
+20130807 to 20130814
+%2d) Item:%s => %s 사용!
+%2d) Item:%s => %s Use!
+*/
+ MSG_NAVIGATION_D_S_D_D_D_D = 0x8bc,
+/*20120417 to latest
+E%2d) %s(%d,%d)=>(%d,%d)
+20130807 to 20130814
+%2d) %s(%d,%d)=>(%d,%d)
+*/
+ MSG_NAVIGATION_E_D_S_D_D_D_D = 0x8bd,
+/*20120417 to latest
+E%2d) %s
+20130807 to 20130814
+E%2d) %s(%d,%d)=>(%d,%d)
+*/
+ MSG_NAVIGATION_E_D_S = 0x8be,
+/*20120417 to latest
+안내중 입니다! 종료 하시겠습니까?
+Do you want to cancel navigation?
+20130807 to 20130814
+E%2d) %s
+*/
+ MSG_NAVIGATION_GOEXIT = 0x8bf,
+/*20120417 to latest
+내비게이션 도움말
+How to Use Navigation
+20130807 to 20130814
+안내중 입니다! 종료 하시겠습니까?
+Do you want to cancel navigation?
+*/
+ MSG_NAVIGATION_HELPTITLE = 0x8c0,
+/*20120417 to latest
+------------------- 명령어 --------------------
+------------------- Instruction --------------------
+20130807 to 20130814
+내비게이션 도움말
+How to Use Navigation
+*/
+ MSG_NAVIGATION_HELP1 = 0x8c1,
+/*20120417 to latest
+1. /navigation /navi
+1) /Navigation or /navi
+20130807 to 20130814
+------------------- 명령어 --------------------
+------------------- Instruction --------------------
+*/
+ MSG_NAVIGATION_HELP2 = 0x8c2,
+/*20120417 to 20120418
+ ex)/navi prontera 100 100 -> 맵이름, 100, 100
+20120424 to latest
+ ex)/navi prontera 100/100 -> 맵이름, 100/100
+ex) /navi prontera 100 100 -> /navi "MAPNAME", 100, 100
+20130807 to 20130814
+1. /navigation /navi
+1) /Navigation or /navi
+*/
+ MSG_NAVIGATION_HELP3 = 0x8c3,
+/*20120417 to 20120418
+2. /navigation2 /navi2
+ex) /navi2 prontera 100 111
+20120424 to latest
+ 기본 명령어는 제니, 비공정 검색을 기본으로 합니다.
+2) /Navigation2 or /navi2
+20130807 to 20130814
+ ex)/navi prontera 100/100 -> 맵이름, 100/100
+ex) /navi prontera 100 100 -> /navi "MAPNAME", 100, 100
+*/
+ MSG_NAVIGATION_HELP4 = 0x8c4,
+/*20120417 to 20120418
+ ex) /navi2 prontera 100090 111
+20120424 to latest
+2. /navigation2 /navi2
+ex) /navi2 prontera 100 111
+20130807 to 20130814
+ 기본 명령어는 제니, 비공정 검색을 기본으로 합니다.
+2) /Navigation2 or /navi2
+*/
+ MSG_NAVIGATION_HELP5 = 0x8c5,
+/*20120417 to 20120418
+-> 맵이름, 위치(100 90), scrool/ zeny/ plane (1:사용함 0: 사용안함)
+20120424 to latest
+ ex) /navi2 prontera 100/100 1/1/1
+-> MAPNAME location (100 90), Scroll | Zeny | Plane (1: Enable or 0: Disable)
+20130807 to 20130814
+2. /navigation2 /navi2
+ex) /navi2 prontera 100 111
+*/
+ MSG_NAVIGATION_HELP6 = 0x8c6,
+/*20120417 to 20120418
+※ /navi2 의 경우 반드시 위치 좌표를 붙여서 3 자리로 적어야 한다
+20120424 to latest
+-> 맵이름, 위치(100/100), scrool/zeny/plane (1:사용함 0: 사용안함)
+-> /navi2 goes with the case with location coordinates. They must be no less than 3 characters
+20130807 to 20130814
+ ex) /navi2 prontera 100/100 1/1/1
+-> MAPNAME location (100 90), Scroll | Zeny | Plane (1: Enable or 0: Disable)
+*/
+ MSG_NAVIGATION_HELP7 = 0x8c7,
+/*20120417 to 20120418
+3. /$$all 모든 항목 출력 (Type 구분 항목으로 출력 종류 구분 가능.)
+20120424 to latest
+3. $$all 모든 항목 출력 (Type 구분 항목으로 출력 종류 구분 가능.)
+3) /$$ Output all the items (Can take a while...)
+20130807 to 20130814
+-> 맵이름, 위치(100/100), scrool/zeny/plane (1:사용함 0: 사용안함)
+-> /navi2 goes with the case with location coordinates. They must be no less than 3 characters
+*/
+ MSG_NAVIGATION_HELP8 = 0x8c8,
+/*20120417 to 20120418
+4. /$$lv30 해당 레벨의 몬스터 출력
+20120424 to latest
+4. $$lv30 해당 레벨의 몬스터 출력
+4) /$$ Lv30 monsters are placed in the output
+20130807 to 20130814
+3. $$all 모든 항목 출력 (Type 구분 항목으로 출력 종류 구분 가능.)
+3) /$$ Output all the items (Can take a while...)
+*/
+ MSG_NAVIGATION_HELP9 = 0x8c9,
+/*20120417 to 20120418
+5. /$$lv20~30 해당 레벨 범위의 몬스터 출력
+20120424 to latest
+5. $$lv20~30 해당 레벨 범위의 몬스터 출력
+5) /$$ Lv20~30 monsters in that level range are placed in the output
+20130807 to 20130814
+4. $$lv30 해당 레벨의 몬스터 출력
+4) /$$ Lv30 monsters are placed in the output
+*/
+ MSG_NAVIGATION_HELP10 = 0x8ca,
+/*20120417 to latest
+------------------- 설명 --------------------
+------------------- Description --------------------
+20130807 to 20130814
+5. $$lv20~30 해당 레벨 범위의 몬스터 출력
+5) /$$ Lv20~30 monsters in that level range are placed in the output
+*/
+ MSG_NAVIGATION_HELP11 = 0x8cb,
+/*20120417 to latest
+1.검색 종류는 전체, 맵, Npc, 몬스터 으로 분류 된다.
+1) One can search for monsters, npcs, maps, or all at once
+20130807 to 20130814
+------------------- 설명 --------------------
+------------------- Description --------------------
+*/
+ MSG_NAVIGATION_HELP12 = 0x8cc,
+/*20120417 to latest
+2.명령어로 검색한다. 규칙은 검색 하려는 문자열이 모두 포함된 정보를 출력 한다.
+2) You can press the search button to get results. It will out put the results depending on what rule you choose
+20130807 to 20130814
+1.검색 종류는 전체, 맵, Npc, 몬스터 으로 분류 된다.
+1) One can search for monsters, npcs, maps, or all at once
+*/
+ MSG_NAVIGATION_HELP13 = 0x8cd,
+/*20120417 to latest
+ ex) 프론 카프 -> 검색 결과 프론테라의 카프라를 모두 출력 한다.
+ex) Drop down box -> Select "Npc", then type in the box "Kafra". Results will now be displayed
+20130807 to 20130814
+2.명령어로 검색한다. 규칙은 검색 하려는 문자열이 모두 포함된 정보를 출력 한다.
+2) You can press the search button to get results. It will out put the results depending on what rule you choose
+*/
+ MSG_NAVIGATION_HELP14 = 0x8ce,
+/*20120417 to latest
+3.리스트에서 항목을 선택하면 정보가 출력된다.
+3) When you select an item from a list, information about it are displayed.
+20130807 to 20130814
+ ex) 프론 카프 -> 검색 결과 프론테라의 카프라를 모두 출력 한다.
+ex) Drop down box -> Select "Npc", then type in the box "Kafra". Results will now be displayed
+*/
+ MSG_NAVIGATION_HELP15 = 0x8cf,
+/*20120417 to latest
+ 출력 되고 있는 목표가 있을때 안내 버튼을 클릭하면 해당 목표로 길을 안내 한다.
+-> When button is clicked, it will point you towards your destination if available
+20130807 to 20130814
+3.리스트에서 항목을 선택하면 정보가 출력된다.
+3) When you select an item from a list, information about it are displayed.
+*/
+ MSG_NAVIGATION_HELP16 = 0x8d0,
+/*20120417 to latest
+4.scrool/ zeny/ plane 상자를 원하는 만큼 체크하여 더 빠른 경로를 안내 받을 수 있다.
+4) Scroll | Zeny | Plane options can be checked to find a faster route
+20130807 to 20130814
+ 출력 되고 있는 목표가 있을때 안내 버튼을 클릭하면 해당 목표로 길을 안내 한다.
+-> When button is clicked, it will point you towards your destination if available
+*/
+ MSG_NAVIGATION_HELP17 = 0x8d1,
+/*20120417 to latest
+5.안내 버튼이 눌러지면 결과 리스트창은 길안내 리스트 장으로 변경 된다.
+5) Guide button is pressed, the result list window displays where routes can change direction
+20130807 to 20130814
+4.scrool/ zeny/ plane 상자를 원하는 만큼 체크하여 더 빠른 경로를 안내 받을 수 있다.
+4) Scroll | Zeny | Plane options can be checked to find a faster route
+*/
+ MSG_NAVIGATION_HELP18 = 0x8d2,
+/*20120417 to latest
+6.검색 리스트창 하단 버튼을 이용하여
+6) Using the button below, search results can be found
+20130807 to 20130814
+5.안내 버튼이 눌러지면 결과 리스트창은 길안내 리스트 장으로 변경 된다.
+5) Guide button is pressed, the result list window displays where routes can change direction
+*/
+ MSG_NAVIGATION_HELP19 = 0x8d3,
+/*20120417 to latest
+ [결과 리스트 창] <-> [길 안내 정보 창] 으로 보기 모드 변경 가능하다.
+-> [Results List Window] <-> [View Modes can be switched]
+20130807 to 20130814
+6.검색 리스트창 하단 버튼을 이용하여
+6) Using the button below, search results can be found
+*/
+ MSG_NAVIGATION_HELP20 = 0x8d4,
+/*20120417 to latest
+Level:%d (보스)
+Level:%d (Boss)
+20130807 to 20130814
+ [결과 리스트 창] <-> [길 안내 정보 창] 으로 보기 모드 변경 가능하다.
+-> [Results List Window] <-> [View Modes can be switched]
+*/
+ MSG_NAVIGATION_LEVEL_D_BOSS = 0x8d5,
+/*20120417 to latest
+Level:%d (일반)
+Level:%d (Mob)
+20130807 to 20130814
+Level:%d (보스)
+Level:%d (Boss)
+*/
+ MSG_NAVIGATION_LEVEL_D_NORMAL = 0x8d6,
+/*20120417 to latest
+수속성%d
+Water %d
+20130807 to 20130814
+Level:%d (일반)
+Level:%d (Mob)
+*/
+ MSG_NAVIGATION_PROPERTY1 = 0x8d7,
+/*20120417 to latest
+지속성%d
+Earth %d
+20130807 to 20130814
+수속성%d
+Water %d
+*/
+ MSG_NAVIGATION_PROPERTY2 = 0x8d8,
+/*20120417 to latest
+화속성%d
+Fire %d
+20130807 to 20130814
+지속성%d
+Earth %d
+*/
+ MSG_NAVIGATION_PROPERTY3 = 0x8d9,
+/*20120417 to latest
+풍속성%d
+Wind %d
+20130807 to 20130814
+화속성%d
+Fire %d
+*/
+ MSG_NAVIGATION_PROPERTY4 = 0x8da,
+/*20120417 to latest
+독속성%d
+Poison %d
+20130807 to 20130814
+풍속성%d
+Wind %d
+*/
+ MSG_NAVIGATION_PROPERTY5 = 0x8db,
+/*20120417 to latest
+성속성%d
+Holy %d
+20130807 to 20130814
+독속성%d
+Poison %d
+*/
+ MSG_NAVIGATION_PROPERTY6 = 0x8dc,
+/*20120417 to latest
+암속성%d
+Shadow %d
+20130807 to 20130814
+성속성%d
+Holy %d
+*/
+ MSG_NAVIGATION_PROPERTY7 = 0x8dd,
+/*20120417 to latest
+염속성%d
+Ghost %d
+20130807 to 20130814
+암속성%d
+Shadow %d
+*/
+ MSG_NAVIGATION_PROPERTY8 = 0x8de,
+/*20120417 to latest
+언데드%d
+Undead %d
+20130807 to 20130814
+염속성%d
+Ghost %d
+*/
+ MSG_NAVIGATION_PROPERTY9 = 0x8df,
+/*20120417 to latest
+무속성%d
+Neutral %d
+20130807 to 20130814
+언데드%d
+Undead %d
+*/
+ MSG_NAVIGATION_PROPERTY0 = 0x8e0,
+/*20120417 to latest
+중형
+Medium
+20130807 to 20130814
+무속성%d
+Neutral %d
+*/
+ MSG_NAVIGATION_SCALE1 = 0x8e1,
+/*20120417 to latest
+대형
+Large
+20130807 to 20130814
+중형
+Medium
+*/
+ MSG_NAVIGATION_SCALE2 = 0x8e2,
+/*20120417 to latest
+소형
+Small
+20130807 to 20130814
+대형
+Large
+*/
+ MSG_NAVIGATION_SCALE0 = 0x8e3,
+/*20120417 to latest
+불사형
+Undead
+20130807 to 20130814
+소형
+Small
+*/
+ MSG_NAVIGATION_RACE1 = 0x8e4,
+/*20120417 to latest
+동물형
+Brute
+20130807 to 20130814
+불사형
+Undead
+*/
+ MSG_NAVIGATION_RACE2 = 0x8e5,
+/*20120417 to latest
+식물형
+Plant
+20130807 to 20130814
+동물형
+Brute
+*/
+ MSG_NAVIGATION_RACE3 = 0x8e6,
+/*20120417 to latest
+곤충형
+Insect
+20130807 to 20130814
+식물형
+Plant
+*/
+ MSG_NAVIGATION_RACE4 = 0x8e7,
+/*20120417 to latest
+어패형
+Fish
+20130807 to 20130814
+곤충형
+Insect
+*/
+ MSG_NAVIGATION_RACE5 = 0x8e8,
+/*20120417 to latest
+악마형
+Demon
+20130807 to 20130814
+어패형
+Fish
+*/
+ MSG_NAVIGATION_RACE6 = 0x8e9,
+/*20120417 to latest
+인간형
+Demi-Human
+20130807 to 20130814
+악마형
+Demon
+*/
+ MSG_NAVIGATION_RACE7 = 0x8ea,
+/*20120417 to latest
+천사형
+Angel
+20130807 to 20130814
+인간형
+Demi-Human
+*/
+ MSG_NAVIGATION_RACE8 = 0x8eb,
+/*20120417 to latest
+용족
+Dragon
+20130807 to 20130814
+천사형
+Angel
+*/
+ MSG_NAVIGATION_RACE9 = 0x8ec,
+/*20120417 to latest
+무형
+Formless
+20130807 to 20130814
+용족
+Dragon
+*/
+ MSG_NAVIGATION_RACE0 = 0x8ed,
+/*20120417 to latest
+%s 이동 클릭
+Click to move %s
+20130807 to 20130814
+무형
+Formless
+*/
+ MSG_NAVIGATION_MOVECLICK = 0x8ee,
+/*20120417 to latest
+Npc 이동 서비스 이용
+Move to the Kafra Service Npc
+20130807 to 20130814
+%s 이동 클릭
+Click to move %s
+*/
+ MSG_NAVIGATION_NPCMOVE = 0x8ef,
+/*20120417 to latest
+NPC 클릭
+Click the NPC
+20130807 to 20130814
+Npc 이동 서비스 이용
+Move to the Kafra Service Npc
+*/
+ MSG_NAVIGATION_NPCCLICK = 0x8f0,
+/*20120417 to latest
+%s 이동
+Move %s
+20130807 to 20130814
+NPC 클릭
+Click the NPC
+*/
+ MSG_NAVIGATION_S_MOVE = 0x8f1,
+/*20120417 to latest
+비공정 이동
+Move to the Airship Service
+20130807 to 20130814
+%s 이동
+Move %s
+*/
+ MSG_NAVIGATION_PLANEMOVE = 0x8f2,
+/*20120417 to latest
+워프 이용
+By Warp
+20130807 to 20130814
+비공정 이동
+Move to the Airship Service
+*/
+ MSG_NAVIGATION_WARPUSE = 0x8f3,
+/*20120417 to latest
+도착점 : ( %d %d )
+End Points: (%d %d)
+20130807 to 20130814
+워프 이용
+By Warp
+*/
+ MSG_NAVIGATION_TARGETPOINT_D_D = 0x8f4,
+/*20120417 to 20170517
+네비게이션이 지원 되지 않는 지역 입니다.
+20130807 to 20130814
+도착점 : ( %d %d )
+End Points: (%d %d)
+20170524 to latest
+내비게이션이 지원 되지 않는 지역 입니다.
+That does not support the navigation area
+*/
+ MSG_NAVIGATION_UNKNOWNMAP = 0x8f5,
+/*20120417 to latest
+찾고자 하는 목적이 불분명 합니다.
+The purpose is unclear
+20130807 to 20130814
+네비게이션이 지원 되지 않는 지역 입니다.
+*/
+ MSG_NAVIGATION_RS_UNKNOWN = 0x8f6,
+/*20120417 to latest
+매칭이 맞지 않는 맵이다.
+Does not meet the map requirement
+20130807 to 20130814
+찾고자 하는 목적이 불분명 합니다.
+The purpose is unclear
+*/
+ MSG_NAVIGATION_RS_NOTSAMEMAP = 0x8f7,
+/*20120417 to latest
+출발 지역에 대한 정보 설정 실패!
+Information Failure | Change settings
+20130807 to 20130814
+매칭이 맞지 않는 맵이다.
+Does not meet the map requirement
+*/
+ MSG_NAVIGATION_RS_FAILSTARTDATA = 0x8f8,
+/*20120417 to latest
+도착 지점에 대한 정보 설정 실패!
+Failed to set info for location!
+20130807 to 20130814
+출발 지역에 대한 정보 설정 실패!
+Information Failure | Change settings
+*/
+ MSG_NAVIGATION_RS_FAILTARGET = 0x8f9,
+/*20120417 to latest
+길 찾기 실패
+Failed to find a path
+20130807 to 20130814
+도착 지점에 대한 정보 설정 실패!
+Failed to set info for location!
+*/
+ MSG_NAVIGATION_RS_FAILROUTE = 0x8fa,
+/*20120417 to latest
+플레이어 위치 찾기 실패
+Failed to find players
+20130807 to 20130814
+길 찾기 실패
+Failed to find a path
+*/
+ MSG_NAVIGATION_RS_FAILPLAYER = 0x8fb,
+/*20120417 to latest
+내비게이션에 정보가 없습니다.
+No Information
+20130807 to 20130814
+플레이어 위치 찾기 실패
+Failed to find players
+*/
+ MSG_NAVIGATION_RS_NODATA = 0x8fc,
+/*20120417 to latest
+해당 맵은 길찾기가 지원 되지 않는 맵입니다.
+Map doesn't support directions
+20130807 to 20130814
+내비게이션에 정보가 없습니다.
+No Information
+*/
+ MSG_NAVIGATION_RS_MAPNOTNAVIGATION = 0x8fd,
+/*20120417 to latest
+목표를 지정 하시기 바랍니다.
+Please specify target goals.
+20130807 to 20130814
+해당 맵은 길찾기가 지원 되지 않는 맵입니다.
+Map doesn't support directions
+*/
+ MSG_NAVIGATION_RS_FAILTARGETROUTE = 0x8fe,
+/*20120417 to latest
+도착.
+Found
+20130807 to 20130814
+목표를 지정 하시기 바랍니다.
+Please specify target goals.
+*/
+ MSG_NAVIGATION_RS_SUCCESS = 0x8ff,
+/*20120417 to latest
+길 안내가 시작 되었습니다.
+Directions were started
+20130807 to 20130814
+도착.
+Found
+*/
+ MSG_NAVIGATION_RS_START = 0x900,
+/*20120417 to latest
+찾고자 하는 몬스터가 있는 맵 입니다.
+Is the map that your looking for mob
+20130807 to 20130814
+길 안내가 시작 되었습니다.
+Directions were started
+*/
+ MSG_NAVIGATION_RS_MOBTARGETMAP = 0x901,
+/*20120417 to latest
+찾고자 하는 맵이 해당 맵 입니다.
+Map appears on the guide you are looking for
+20130807 to 20130814
+찾고자 하는 몬스터가 있는 맵 입니다.
+Is the map that your looking for mob
+*/
+ MSG_NAVIGATION_RS_TARGETMAP = 0x902,
+/*20120417 to latest
+아이템을 사용하여 이동하여 주시기 바랍니다.
+Please navigate using the item
+20130807 to 20130814
+찾고자 하는 맵이 해당 맵 입니다.
+Map appears on the guide you are looking for
+*/
+ MSG_NAVIGATION_RS_SCROLL = 0x903,
+/*20120417 to latest
+안내하는 위치로 이동하시기 바랍니다.
+Please follow the instruction to reach your destination.
+20130807 to 20130814
+아이템을 사용하여 이동하여 주시기 바랍니다.
+Please navigate using the item
+*/
+ MSG_NAVIGATION_RS_ROUTE_SUCCESS = 0x904,
+/*20120417 to latest
+목표 맵에 도착하였습니다.
+Arrived at the target map
+20130807 to 20130814
+안내하는 위치로 이동하시기 바랍니다.
+Please follow the instruction to reach your destination.
+*/
+ MSG_NAVIGATION_RS_MAPTMAP_SUCCESS = 0x905,
+/*20120417 to latest
+찾고자 하는 Npc가 있는 맵에 도착 하였습니다. Npc로 이동하시기 바랍니다.
+Arrived on the map that has the Npc your looking for. Go to that NPC
+20130807 to 20130814
+목표 맵에 도착하였습니다.
+Arrived at the target map
+*/
+ MSG_NAVIGATION_RS_NPCTMAP_SUCCESS = 0x906,
+/*20120417 to latest
+찾고자 하는 Mob이 서식하는 맵에 도착 하였습니다.
+You have arrived at the mob you were looking for
+20130807 to 20130814
+찾고자 하는 Npc가 있는 맵에 도착 하였습니다. Npc로 이동하시기 바랍니다.
+Arrived on the map that has the Npc your looking for. Go to that NPC
+*/
+ MSG_NAVIGATION_RS_MOBTMAP_SUCCESS = 0x907,
+/*20120417 to latest
+이전과 동일한 목표 입니다.
+You have reached your goal
+20130807 to 20130814
+찾고자 하는 Mob이 서식하는 맵에 도착 하였습니다.
+You have arrived at the mob you were looking for
+*/
+ MSG_NAVIGATION_RS_POSTMAP_SUCCESS = 0x908,
+/*20120417 to latest
+가리키는 방향으로 가시기 바랍니다.
+Please go to indicated direction.
+20130807 to 20130814
+이전과 동일한 목표 입니다.
+You have reached your goal
+*/
+ MSG_NAVIGATION_RS_SAMETARGET = 0x909,
+/*20120417 to latest
+목표가 여기 입니다.
+The goal has been reached
+20130807 to 20130814
+가리키는 방향으로 가시기 바랍니다.
+Please go to indicated direction.
+*/
+ MSG_NAVIGATION_RS_HERE = 0x90a,
+/*20120417 to latest
+Navigation >: %s
+20130807 to 20130814
+목표가 여기 입니다.
+The goal has been reached
+*/
+ MSG_NAVIGATION_PRINT_S = 0x90b,
+/*20120417 to latest
+Navigation >: 안내하는 %s(을)를 이용하여
+Navigation >: Talk to Guide "%s" (A)
+20130807 to 20130814
+Navigation >: %s
+*/
+ MSG_NAVIGATION_PRINT_GO_S = 0x90c,
+/*20120417 to latest
+Navigation >: 맵(%s)으로 이동하시기 바랍니다
+Navigation >: Move to (%s) map
+20130807 to 20130814
+Navigation >: 안내하는 %s(을)를 이용하여
+Navigation >: Talk to Guide "%s" (A)
+*/
+ MSG_NAVIGATION_PRINT_MAP_S = 0x90d,
+/*20120417 to latest
+Navigation >: 맵(%s)을 선택하여 이동 하시기 바랍니다
+Navigation >: Choose (%s) Map from Kafra
+20130807 to 20130814
+Navigation >: 맵(%s)으로 이동하시기 바랍니다
+Navigation >: Move to (%s) map
+*/
+ MSG_NAVIGATION_PRINT_SELECTMAP_S = 0x90e,
+/*20120417 to latest
+Navigation >: 비공정으로 이동 하시기 바랍니다
+Navigation >: Please go to the AirShip
+20130807 to 20130814
+Navigation >: 맵(%s)을 선택하여 이동 하시기 바랍니다
+Navigation >: Choose (%s) Map from Kafra
+*/
+ MSG_NAVIGATION_PRINT_PLANE = 0x90f,
+/*20120417 to latest
+Navigation >: 워프를 이용하여 다음 지역으로 이동하시기 바랍니다.
+Navigation >: Get to your destination by using WarpPortal
+20130807 to 20130814
+Navigation >: 비공정으로 이동 하시기 바랍니다
+Navigation >: Please go to the AirShip
+*/
+ MSG_NAVIGATION_PRINT_WARP = 0x910,
+/*20120417 to latest
+Item:
+20130807 to 20130814
+Navigation >: 워프를 이용하여 다음 지역으로 이동하시기 바랍니다.
+Navigation >: Get to your destination by using WarpPortal
+*/
+ MSG_NAVIGATION_PRINT_ITEM = 0x911,
+/*20120417 to latest
+$$
+20130807 to 20130814
+Item:
+*/
+ MSG_NAVIGATION_ZZ = 0x912,
+/*20120417 to latest
+$$lv
+20130807 to 20130814
+$$
+*/
+ MSG_NAVIGATION_ZZLV = 0x913,
+/*20120417 to latest
+~
+20130807 to 20130814
+$$lv
+*/
+ MSG_NAVIGATION_ZZLIMIT = 0x914,
+/*20120417 to latest
+$$all
+20130807 to 20130814
+~
+*/
+ MSG_NAVIGATION_ZZALL = 0x915,
+#endif
+#if PACKETVER >= 20120424
+/*20120424 to latest
+구매 확인서
+Confirm Deal
+20130807 to 20130814
+$$all
+*/
+ MSG_SHOP_ITEM_BAY_TITLE = 0x916,
+/*20120424 to latest
+구입하려는 아이템들의 총가격은
+Below is the total cost:
+20130807 to 20130814
+구매 확인서
+Confirm Deal
+*/
+ MSG_SHOP_ITEM_BAY_MAG1 = 0x917,
+/*20120424 to latest
+Zeny 입니다.
+ Zeny to complete the transaction.
+20130807 to 20130814
+구입하려는 아이템들의 총가격은
+Below is the total cost:
+*/
+ MSG_SHOP_ITEM_BAY_MAG2 = 0x918,
+/*20120424 to latest
+구입하시겠습니까?
+Press buy to confirm.
+20130807 to 20130814
+Zeny 입니다.
+ Zeny to complete the transaction.
+*/
+ MSG_SHOP_ITEM_BAY_MAG3 = 0x919,
+#endif
+#if PACKETVER >= 20120502
+/*20120502 to 20120529
+%.3f%% (PC방 %.3f%% + TPLUS %.3f%% + 프리미엄 %.3f%% + %s서버 %.3f%%)
+20120601 to latest
+%.1f%% (PC방 %.1f%% + TPLUS %.1f%% + 프리미엄 %.1f%% + %s서버 %.1f%%)
+%.1f% (PCRoom %.1f% + TPLUS %.1f% + Premium %.1f% + %sServer %.1f%)
+20130807 to 20130814
+구입하시겠습니까?
+Press buy to confirm.
+*/
+ MSG_BASIC_EXP_MSG2 = 0x91a,
+#endif
+#if PACKETVER >= 20120508
+/*20120508 to latest
+카드 북
+Card Book
+20130807 to 20130814
+%.1f%% (PC방 %.1f%% + TPLUS %.1f%% + 프리미엄 %.1f%% + %s서버 %.1f%%)
+%.1f% (PCRoom %.1f% + TPLUS %.1f% + Premium %.1f% + %sServer %.1f%)
+*/
+ MSG_CARDWIN = 0x91b,
+#endif
+#if PACKETVER >= 20120515
+/*20120515 to latest
+%d%% [ ( 기본 100%% + %s서버 %d%% ) * 활성 %.1f ]
+%d%% [ ( Basic 100%% + %sServer %d%% ) * Active %.1f ]
+20130807 to 20130814
+카드 북
+Card Book
+*/
+ MSG_PERSONAL_INFORMATION_MSG_CHN = 0x91c,
+/*20120515 to latest
+%d%% [ 기본 100%% + %s서버 %d%% ]
+%d%% [ Basic 100%% + %sServer %d%% ]
+20130807 to 20130814
+%d%% [ ( 기본 100%% + %s서버 %d%% ) * 활성 %.1f ]
+%d%% [ ( Basic 100%% + %sServer %d%% ) * Active %.1f ]
+*/
+ MSG_PERSONAL_INFORMATION_MSG_CHN_DEATH = 0x91d,
+#endif
+#if PACKETVER >= 20120523
+/*20120523 to latest
+이곳은 PK 지역입니다. 미성년자는 자발적으로 떠나주시기 바랍니다.
+This is PK region. Minors,Please leave immediately.
+20130807 to 20130814
+%d%% [ 기본 100%% + %s서버 %d%% ]
+%d%% [ Basic 100%% + %sServer %d%% ]
+*/
+ MSG_CAUTION_PKZONE = 0x91e,
+/*20120523 to latest
+피로도
+Fatigue
+20130807 to 20130814
+이곳은 PK 지역입니다. 미성년자는 자발적으로 떠나주시기 바랍니다.
+This is PK region. Minors,Please leave immediately.
+*/
+ MSG_FATIGUE = 0x91f,
+/*20120523 to 20120529
+건강상태 이며 게임수익은 100%%입니다.
+20120601 to latest
+건강상태 이며 게임수익은 100%입니다.
+Health and gaming revenue is 100%%.
+20130807 to 20130814
+피로도
+Fatigue
+*/
+ MSG_FATIGUE_LEVEL_ZERO = 0x920,
+/*20120523 to 20120529
+지금은 피로상태이므로 손님의 게임수익은 50%% 떨어집니다. 건강을 위하여 적당한 휴식 바랍니다.
+20120601 to latest
+지금은 피로상태이므로 손님의 게임수익은 50% 떨어집니다. 건강을 위하여 적당한 휴식 바랍니다.
+Fatigue because it is now a guest of the gaming revenue is down 50 percent.Hope for the proper health
+20130807 to 20130814
+건강상태 이며 게임수익은 100%입니다.
+Health and gaming revenue is 100%%.
+*/
+ MSG_FATIGUE_LEVEL_HALF = 0x921,
+/*20120523 to 20120529
+지금은 비건강상태이므로 손님의 건강을 위하여 게임오프라인을 원합니다. 계속 온라인상태에 있으면 건강에 손상을 주므로 게임 수익은 0%%으로 떨어지며 게임 오프라인 5시간후에 다시 회복됩니다.
+20120601 to latest
+지금은 비건강상태이므로 손님의 건강을 위하여 게임오프라인을 원합니다. 계속 온라인상태에 있으면 건강에 손상을 주므로 게임 수익은 0%으로 떨어지며 게임 오프라인 5시간후에 다시 회복됩니다.
+Now because it is a non-health to the health of the guests want to offline games. If you still are online gaming revenue because the damage to the health of the game falls to 0% again after 5 hours will be restored offline.
+20130807 to 20130814
+지금은 피로상태이므로 손님의 게임수익은 50% 떨어집니다. 건강을 위하여 적당한 휴식 바랍니다.
+Fatigue because it is now a guest of the gaming revenue is down 50 percent.Hope for the proper health
+*/
+ MSG_FATIGUE_LEVEL_FULL = 0x922,
+/*20120523 to latest
+접속시간 %d 분이 되었습니다.
+Online since %d minutes
+20130807 to 20130814
+지금은 비건강상태이므로 손님의 건강을 위하여 게임오프라인을 원합니다. 계속 온라인상태에 있으면 건강에 손상을 주므로 게임 수익은 0%으로 떨어지며 게임 오프라인 5시간후에 다시 회복됩니다.
+Now because it is a non-health to the health of the guests want to offline games. If you still are online gaming revenue because the damage to the health of the game falls to 0% again after 5 hours will be restored offline.
+*/
+ MSG_FATIGUE_MESSAGE0 = 0x923,
+/*20120523 to latest
+접속시간 %d 시간이 되었습니다.
+Online Time: %d
+20130807 to 20130814
+접속시간 %d 분이 되었습니다.
+Online since %d minutes
+*/
+ MSG_FATIGUE_MESSAGE1 = 0x924,
+/*20120523 to latest
+접속시간 %d 시간 %d 분이 되었습니다.
+Online since %d hours and %d minutes
+20130807 to 20130814
+접속시간 %d 시간이 되었습니다.
+Online Time: %d
+*/
+ MSG_FATIGUE_MESSAGE2 = 0x925,
+/*20120523 to latest
+/monsterhp : 공격한 몬스터의 HP정보를 표시합니다. On Off
+/monsterhp: Show the hp of attacked monster. On off
+20130807 to 20130814
+접속시간 %d 시간 %d 분이 되었습니다.
+Online since %d hours and %d minutes
+*/
+ MSG_EXPLAIN_MONSTERHP = 0x926,
+#endif
+#if PACKETVER >= 20120529
+/*20120529 to latest
+스킬포인트 :
+Skill Points:
+20130807 to 20130814
+/monsterhp : 공격한 몬스터의 HP정보를 표시합니다. On Off
+/monsterhp: Show the hp of attacked monster. On off
+*/
+ MSG_SKILLPOINT2 = 0x927,
+#endif
+#if PACKETVER >= 20120601
+/*20120601 to latest
+인증서버로 부터의 응답이 없습니다. 다시 시도해 주세요
+There is no response from the authentification server. Please try again
+20130807 to 20130814
+스킬포인트 :
+Skill Points:
+*/
+ MSG_BAN_BILLING_SERVER_ERROR = 0x928,
+#endif
+#if PACKETVER >= 20120612
+/*20120612 to latest
+암호를 변경하여 주시기 바랍니다.
+Please change your password
+20130807 to 20130814
+인증서버로 부터의 응답이 없습니다. 다시 시도해 주세요
+There is no response from the authentification server. Please try again
+*/
+ MSG_REFUSE_CHANGE_PASSWD_FORCE = 0x929,
+/*20120612 to latest
+http://www.ragnarok.co.kr
+20130807 to 20130814
+암호를 변경하여 주시기 바랍니다.
+Please change your password
+*/
+ MSG_REFUSE_CHANGE_PASSWD_SITE = 0x92a,
+/*20120612 to latest
+고객님께서는 현재 접속금지 시간입니다.
+Guest access is prohibited
+20130807 to 20130814
+http://www.ragnarok.co.kr
+*/
+ MSG_PLANNED_TIME_SHUTDOWN = 0x92b,
+/*20120612 to latest
+셧다운제도에 의해 고객님의 게임제한 시간은 %1.2d-%1.2d-%1.2d %1.2d:%1.2d:%1.2d에 게임이 종료될 예정입니다.
+Your System is been Shutdown, %1.2d-%1.2d-%1.2d %1.2d:%1.2d:%1.2d is the end time.
+20130807 to 20130814
+고객님께서는 현재 접속금지 시간입니다.
+Guest access is prohibited
+*/
+ MSG_SHOUTDOWN_TIME = 0x92c,
+#endif
+#if PACKETVER >= 20120626
+/*20120626 to latest
+고객님의 계정은 선택적 셧다운이 적용된 계정이며, 잔여시간은 %1.2d시간 %1.2d분입니다. 게임 이용에 참고해주시기 바랍니다.
+Selected System Shutdown is activated in your account,Time Left: %1.2d hours %1.2d minutes.
+20130807 to 20130814
+셧다운제도에 의해 고객님의 게임제한 시간은 %1.2d-%1.2d-%1.2d %1.2d:%1.2d:%1.2d에 게임이 종료될 예정입니다.
+Your System is been Shutdown, %1.2d-%1.2d-%1.2d %1.2d:%1.2d:%1.2d is the end time.
+*/
+ MSG_PARTIAL_SHOUTDOWN_TIME = 0x92d,
+#endif
+#if PACKETVER >= 20120702
+/*20120702 to latest
+리플레이
+Replay
+20130807 to 20130814
+고객님의 계정은 선택적 셧다운이 적용된 계정이며, 잔여시간은 %1.2d시간 %1.2d분입니다. 게임 이용에 참고해주시기 바랍니다.
+Selected System Shutdown is activated in your account,Time Left: %1.2d hours %1.2d minutes.
+*/
+ MSG_MENU_REPLAYWND = 0x92e,
+/*20120702 to latest
+매크로
+Macro
+20130807 to 20130814
+리플레이
+Replay
+*/
+ MSG_MENU_MACROWND = 0x92f,
+/*20120702 to latest
+Webbrowser
+20130807 to 20130814
+매크로
+Macro
+*/
+ MSG_MENU_WEBBROWSERWND = 0x930,
+/*20120702 to 20170517
+네비게이션
+20130807 to 20130814
+Webbrowser
+20170524 to latest
+내비게이션
+Navigation
+*/
+ MSG_MENU_NAVIGATIONWND = 0x931,
+/*20120702 to latest
+UAEURL
+20130807 to 20130814
+네비게이션
+*/
+ MSG_MENU_UAEURLWND = 0x932,
+/*20120702 to latest
+ 클랜정보
+Clan Information
+20130807 to 20130814
+UAEURL
+*/
+ MSG_CLAN_INFOMANAGE = 0x933,
+/*20120702 to latest
+클랜레벨
+Clan Level
+20130807 to 20130814
+ 클랜정보
+Clan Information
+*/
+ MSG_CLAN_LEVEL = 0x934,
+/*20120702 to latest
+클랜명
+Clan Name
+20130807 to 20130814
+클랜레벨
+Clan Level
+*/
+ MSG_CLAN_NAME = 0x935,
+/*20120702 to latest
+클랜마크
+Clan Mark
+20130807 to 20130814
+클랜명
+Clan Name
+*/
+ MSG_CLAN_MARK = 0x936,
+/*20120702 to latest
+동맹클랜
+Ally Clan
+20130807 to 20130814
+클랜마크
+Clan Mark
+*/
+ MSG_ALLY_CLAN = 0x937,
+/*20120702 to 20130529
+적대길드
+Antagonists
+20130605 to latest
+적대클랜
+Antagonist Clan
+20130807 to 20130814
+동맹클랜
+Ally Clan
+*/
+ MSG_HOSTILITY_CLAN = 0x938,
+/*20120702 to latest
+클랜에게 보냄
+Send to Clan
+20130807 to 20130814
+적대클랜
+Antagonist Clan
+*/
+ MSG_SEND_TO_CLAN = 0x939,
+/*20120702 to latest
+마스터이름
+ClanMaster Name
+20130807 to 20130814
+클랜에게 보냄
+Send to Clan
+*/
+ MSG_CLAN_MASTER_NAME = 0x93a,
+/*20120702 to latest
+조합원수
+Number of Members
+20130807 to 20130814
+마스터이름
+ClanMaster Name
+*/
+ MSG_CLAN_NUM_MEMBER = 0x93b,
+/*20120702 to 20120702
+조합원 평균레벨
+Avg.lvl of Guildsmen
+20120710 to latest
+관리영지
+Castles Owned
+20130807 to 20130814
+조합원수
+Number of Members
+*/
+ MSG_CLAN_MANAGE_LAND = 0x93c,
+/*20120702 to 20130814
+관리영지
+Castles Owned
+20120716 to latest
+클랜 채팅 메시지 표시
+Clan Chat Messages
+*/
+ MSG_VIEW_CLAN_MSG = 0x93d,
+#endif
+#if PACKETVER >= 20120716
+/*20120716 to latest
+충전 페이지로 이동합니다.
+Go to Page Charged.
+20130807 to 20130814
+클랜 채팅 메시지 표시
+Clan Chat Messages
+*/
+ MSG_TWWAB_WARRING = 0x93e,
+/*20120716 to 20120716
+http://ro.game.gnjoy.com/
+20120724 to latest
+https://gfb.gameflier.com/Billing/ingame/index_new.asp?
+20130807 to 20130814
+충전 페이지로 이동합니다.
+Go to Page Charged.
+*/
+ MSG_TWWAB_URL = 0x93f,
+#endif
+#if PACKETVER >= 20120724
+/*20120724 to latest
+캐릭터 만들기
+Create char
+20130807 to 20130814
+https://gfb.gameflier.com/Billing/ingame/index_new.asp?
+*/
+ MSG_STR_MAKECHARACTER = 0x940,
+/*20120724 to latest
+캐릭명이 일치하지 않습니다.
+Name does not match
+20130807 to 20130814
+캐릭터 만들기
+Create char
+*/
+ MSG_CHR_DELETE_RESERVED_FAIL_CHARNAME = 0x941,
+/*20120724 to latest
+캐릭터명을 입력하세요
+Enter the name of character
+20130807 to 20130814
+캐릭명이 일치하지 않습니다.
+Name does not match
+*/
+ MSG_CHR_DELETE_RESERVED_INPUTCONFIRMSTR_WND_TITLE = 0x942,
+/*20120724 to 20120822
+/bufftimer : 버프에 쿨타이머를 표시합니다. On Off
+20120830 to latest
+성별 선택 창
+Sex Selection Window
+20130807 to 20130814
+캐릭터명을 입력하세요
+Enter the name of character
+*/
+ MSG_SELECT_SEX = 0x943,
+/*20120724 to 20120822
+버프에 쿨타이머가 표시됩니다.
+20120830 to latest
+파일의 위변조가 감지 되었습니다.
+Editing of the File Detected
+20130807 to 20130814
+성별 선택 창
+Sex Selection Window
+*/
+ MSG_SPRITE_ALTER = 0x944,
+/*20120724 to 20120822
+버프에 쿨타이머가 표시되지 않습니다.
+20120830 to latest
+해당 아이템을 개봉하여 획득되는 아이템들은 캐릭터 귀속 아이템 (창고이동 불가능) 입니다. 본 캐릭터에 사용하시는 것이 맞으신지 확인해주시기 바랍니다. 상자를 개봉하시겠습니까?
+Items obtained by opening the item is character bounded (can not move to storage). Do you want to open the box?
+20130807 to 20130814
+파일의 위변조가 감지 되었습니다.
+Editing of the File Detected
+*/
+ MSG_CONFIRM_TO_OPEN_EVENT_ITEM = 0x945,
+#endif
+#if PACKETVER >= 20120808
+/*20120808 to 20120822
+성별 선택 창
+Sex Selection Window
+20120925 to latest
+게임 설정
+Game Settings
+20130807 to 20130814
+해당 아이템을 개봉하여 획득되는 아이템들은 캐릭터 귀속 아이템 (창고이동 불가능) 입니다. 본 캐릭터에 사용하시는 것이 맞으신지 확인해주시기 바랍니다. 상자를 개봉하시겠습니까?
+Items obtained by opening the item is character bounded (can not move to storage). Do you want to open the box?
+*/
+ MSG_GAME_SETTING = 0x946,
+#endif
+#if PACKETVER >= 20120822
+/*20120822 to 20120822
+파일의 위변조가 감지 되었습니다.
+Editing of the File Detected
+20120925 to latest
+게임 시스템
+Game System
+20130807 to 20130814
+게임 설정
+Game Settings
+*/
+ MSG_SYSTEM_SETTING = 0x947,
+#endif
+#if PACKETVER >= 20120925
+/*20120925 to latest
+게임 커맨드
+Game Commands
+20130807 to 20130814
+게임 시스템
+Game System
+*/
+ MSG_COMMAND_SETTING = 0x948,
+/*20120925 to 20120926
+게임 커맨드 리스트
+20121010 to latest
+게임 커맨드 ON/OFF
+Game Command ON/OFF
+20130807 to 20130814
+게임 커맨드
+Game Commands
+*/
+ MSG_COMMAND_LIST = 0x949,
+/*20120925 to latest
+매크로
+Macro
+20130807 to 20130814
+게임 커맨드 ON/OFF
+Game Command ON/OFF
+*/
+ MSG_MACRO_LIST = 0x94a,
+/*20120925 to latest
+이지역은 아이템교환이 금지 되어 있습니다
+Trading is prohibited in this Map
+20130807 to 20130814
+매크로
+Macro
+*/
+ MSG_EXCHANGEITEM_DENY_MAP = 0x94b,
+/*20120925 to latest
+이지역은 카트이용이 금지 되어 있습니다
+Vending is prohibited in this Map
+20130807 to 20130814
+이지역은 아이템교환이 금지 되어 있습니다
+Trading is prohibited in this Map
+*/
+ MSG_CART_USE_DENY_MAP = 0x94c,
+#endif
+#if PACKETVER >= 20121010
+/*20121010 to latest
+이지역은 태양과달과별의 기적 효과가 발생하지 않습니다.
+In this Map,Effect of Mirace of Sun and Moon is nullified.
+20130807 to 20130814
+이지역은 카트이용이 금지 되어 있습니다
+Vending is prohibited in this Map
+*/
+ MSG_BLOCK_SUNMOONSTAR_MIRACLE = 0x94d,
+/*20121010 to latest
+랭킹 보드
+Ranking Board
+20130807 to 20130814
+이지역은 태양과달과별의 기적 효과가 발생하지 않습니다.
+In this Map,Effect of Mirace of Sun and Moon is nullified.
+*/
+ MSG_RANKING_BOARD = 0x94e,
+/*20121010 to latest
+순위
+Rank
+20130807 to 20130814
+랭킹 보드
+Ranking Board
+*/
+ MSG_RANKING_NUMBER = 0x94f,
+/*20121010 to latest
+이름
+Name
+20130807 to 20130814
+순위
+Rank
+*/
+ MSG_RANKING_NAME = 0x950,
+/*20121010 to latest
+포인트
+Points
+20130807 to 20130814
+이름
+Name
+*/
+ MSG_RANKING_POINT = 0x951,
+/*20121010 to latest
+BlackSmith
+20130807 to 20130814
+포인트
+Points
+*/
+ MSG_RANKING_BLACKSMITH = 0x952,
+/*20121010 to latest
+Alchemist
+20130807 to 20130814
+BlackSmith
+*/
+ MSG_RANKING_ALCHEMIST = 0x953,
+/*20121010 to latest
+Taekwon
+20130807 to 20130814
+Alchemist
+*/
+ MSG_RANKING_TAEKWON = 0x954,
+/*20121010 to latest
+Killer
+20130807 to 20130814
+Taekwon
+*/
+ MSG_RANKING_KILLER = 0x955,
+/*20121010 to 20121011
+Munak
+20121017 to 20121107
+1 vs 1
+20121114 to latest
+7 vs 7
+20130807 to 20130814
+Killer
+*/
+ MSG_RANKING_BATTLE_7VS7_ALL = 0x956,
+/*20121010 to 20121011
+DeathKnight
+20121017 to 20130814
+7 vs 7
+20121114 to latest
+RuneKnight
+*/
+ MSG_RANKING_RUNE_KNIGHT = 0x957,
+/*20121010 to 20121011
+Collector
+20121017 to 20121107
+Select Ranking Type
+20121114 to latest
+Warlock
+20130807 to 20130814
+RuneKnight
+*/
+ MSG_RANKING_WARLOCK = 0x958,
+/*20121010 to 20121011
+Select Ranking Type
+20121017 to 20121107
+Ranking Type
+20121114 to latest
+Ranger
+20130807 to 20130814
+Warlock
+*/
+ MSG_RANKING_RANGER = 0x959,
+/*20121010 to 20121011
+Ranking Type
+20121114 to latest
+Mechanic
+20130807 to 20130814
+Ranger
+*/
+ MSG_RANKING_MECHANIC = 0x95a,
+#endif
+#if PACKETVER >= 20121114
+/*20121114 to latest
+GuillotineCross
+20130807 to 20130814
+Mechanic
+*/
+ MSG_RANKING_GUILLOTINE_CROSS = 0x95b,
+/*20121114 to latest
+Archbishop
+20130807 to 20130814
+GuillotineCross
+*/
+ MSG_RANKING_ARCHBISHOP = 0x95c,
+/*20121114 to latest
+RoyalGuard
+20130807 to 20130814
+Archbishop
+*/
+ MSG_RANKING_ROYAL_GUARD = 0x95d,
+/*20121114 to latest
+Sorcerer
+20130807 to 20130814
+RoyalGuard
+*/
+ MSG_RANKING_SORCERER = 0x95e,
+/*20121114 to latest
+Minstrel
+20130807 to 20130814
+Sorcerer
+*/
+ MSG_RANKING_MINSTREL = 0x95f,
+/*20121114 to latest
+Wanderer
+20130807 to 20130814
+Minstrel
+*/
+ MSG_RANKING_WANDERER = 0x960,
+/*20121114 to latest
+Genetic
+20130807 to 20130814
+Wanderer
+*/
+ MSG_RANKING_GENETIC = 0x961,
+/*20121114 to latest
+ShadowChaser
+20130807 to 20130814
+Genetic
+*/
+ MSG_RANKING_SHADOW_CHASER = 0x962,
+/*20121114 to latest
+Sura
+20130807 to 20130814
+ShadowChaser
+*/
+ MSG_RANKING_SURA = 0x963,
+/*20121114 to latest
+Kagerou
+20130807 to 20130814
+Sura
+*/
+ MSG_RANKING_KAGEROU = 0x964,
+/*20121114 to latest
+Oboro
+20130807 to 20130814
+Kagerou
+*/
+ MSG_RANKING_OBORO = 0x965,
+/*20121114 to latest
+Select Ranking Type
+20130807 to 20130814
+Oboro
+*/
+ MSG_RANKING_SELECT = 0x966,
+/*20121114 to latest
+Ranking Type
+20130807 to 20130814
+Select Ranking Type
+*/
+ MSG_RANKING_TYPE = 0x967,
+/*20121114 to latest
+현재 접속 인원이 가득 찼습니다. ^0000ff현재 대기순위 : %d 예상 대기시간 : %d초
+Currently,Server is full. ^0000ffPeople Currently Waiting: %d Expected Waiting Time: %dSeconds
+20130807 to 20130814
+Ranking Type
+*/
+ MSG_WAITING_FOR_ENTER_TO_CHARACTER_SEVER_IN_SEC = 0x968,
+/*20121114 to latest
+현재 접속 인원이 가득 찼습니다. ^0000ff현재 대기순위 : %d 예상 대기시간 : %d분 %d초
+Currently,Server is full. ^0000ffPeople Currently Waiting: %d Expected Waiting Time: %dMinutes %d Seconds
+20130807 to 20130814
+현재 접속 인원이 가득 찼습니다. ^0000ff현재 대기순위 : %d 예상 대기시간 : %d초
+Currently,Server is full. ^0000ffPeople Currently Waiting: %d Expected Waiting Time: %dSeconds
+*/
+ MSG_WAITING_FOR_ENTER_TO_CHARACTER_SEVER_IN_MIN = 0x969,
+/*20121114 to latest
+CBT 초청 유저가 아닙니다
+CBT is not an invited user
+20130807 to 20130814
+현재 접속 인원이 가득 찼습니다. ^0000ff현재 대기순위 : %d 예상 대기시간 : %d분 %d초
+Currently,Server is full. ^0000ffPeople Currently Waiting: %d Expected Waiting Time: %dMinutes %d Seconds
+*/
+ MSG_CBT_ACTIVE_USER_CHECK = 0x96a,
+#endif
+#if PACKETVER >= 20121128
+/*20121128 to latest
+ -------------- Navigation 명령어 --------------
+------------------- Instruction --------------------
+20130807 to 20130814
+CBT 초청 유저가 아닙니다
+CBT is not an invited user
+*/
+ MSG_NAVIGATION_HELP_1 = 0x96b,
+/*20121128 to latest
+/navigation /navi : /navi yuno 100/100 ->> 맵이름, 위치(100/100)
+1) /Navigation or /navi ex) /navi prontera 100 100 -> /navi "MAPNAME", 100, 100
+20130807 to 20130814
+ -------------- Navigation 명령어 --------------
+------------------- Instruction --------------------
+*/
+ MSG_NAVIGATION_HELP_2 = 0x96c,
+/*20121128 to latest
+/navigation2 /navi2 : /navi2 yuno 100/100 1/1/1 ->> 맵이름, 위치(100/100), scrool/zeny/plane (1:사용함 0: 사용안함)
+2) /Navigation2 or /navi2 ex) /navi2 prontera 100 111 -> MAPNAME location (100 90), Scroll | Zeny | Plane (1: Enable or 0: Disable)
+20130807 to 20130814
+/navigation /navi : /navi yuno 100/100 ->> 맵이름, 위치(100/100)
+1) /Navigation or /navi ex) /navi prontera 100 100 -> /navi "MAPNAME", 100, 100
+*/
+ MSG_NAVIGATION_HELP_3 = 0x96d,
+/*20121128 to latest
+ -------------- Navigation 검색창 명령어 -------
+-> /navi2 goes with the case with location coordinates. They must be no less than 3 characters
+20130807 to 20130814
+/navigation2 /navi2 : /navi2 yuno 100/100 1/1/1 ->> 맵이름, 위치(100/100), scrool/zeny/plane (1:사용함 0: 사용안함)
+2) /Navigation2 or /navi2 ex) /navi2 prontera 100 111 -> MAPNAME location (100 90), Scroll | Zeny | Plane (1: Enable or 0: Disable)
+*/
+ MSG_NAVIGATION_HELP_4 = 0x96e,
+/*20121128 to latest
+$$all : 모든 항목 출력 (Type 구분자에서 출력 종류를 나눌수 있다.)
+3) $$all Output all the items (Can take a while...)
+20130807 to 20130814
+ -------------- Navigation 검색창 명령어 -------
+-> /navi2 goes with the case with location coordinates. They must be no less than 3 characters
+*/
+ MSG_NAVIGATION_HELP_5 = 0x96f,
+/*20121128 to latest
+$$lv30 : 해당 레벨의 몬스터 출력 (숫자는 변경 가능)
+4) $$lv30 monsters are placed in the output
+20130807 to 20130814
+$$all : 모든 항목 출력 (Type 구분자에서 출력 종류를 나눌수 있다.)
+3) $$all Output all the items (Can take a while...)
+*/
+ MSG_NAVIGATION_HELP_6 = 0x970,
+/*20121128 to latest
+$$lv20~30 : 해당 레벨 범위의 몬스터 출력 (숫자는 변경 가능)
+5) $$lv20~30 monsters in that level range are placed in the output
+20130807 to 20130814
+$$lv30 : 해당 레벨의 몬스터 출력 (숫자는 변경 가능)
+4) $$lv30 monsters are placed in the output
+*/
+ MSG_NAVIGATION_HELP_7 = 0x971,
+/*20121128 to latest
+1 vs 1
+20130807 to 20130814
+$$lv20~30 : 해당 레벨 범위의 몬스터 출력 (숫자는 변경 가능)
+5) $$lv20~30 monsters in that level range are placed in the output
+*/
+ MSG_RANKING_BATTLE_1VS1_ALL = 0x972,
+#endif
+#if PACKETVER >= 20121205
+/*20121205 to latest
+특수 장비
+Special Gear
+20130807 to 20130814
+1 vs 1
+*/
+ MSG_SHADOW_EQUIPMENT = 0x973,
+#endif
+#if PACKETVER >= 20130109
+/*20130109 to latest
+%d 번째 캐릭터의 직업 정보가 이상합니다. 고객센터로 문의 부탁 드립니다. ErrorCode(%d)
+%d First character of the profession is more than information. Please contact the Customer Care Center. ErrorCode(%d)
+20130807 to 20130814
+특수 장비
+Special Gear
+*/
+ MSG_CHARACTERERROR_JOB = 0x974,
+#endif
+#if PACKETVER >= 20130115
+/*20130115 to latest
+(%s) %d / %d
+20130807 to 20130814
+%d 번째 캐릭터의 직업 정보가 이상합니다. 고객센터로 문의 부탁 드립니다. ErrorCode(%d)
+%d First character of the profession is more than information. Please contact the Customer Care Center. ErrorCode(%d)
+*/
+ MSG_NAVIGATION_ALL_S = 0x975,
+/*20130115 to latest
+%s-%s(%d/%d)
+20130807 to 20130814
+(%s) %d / %d
+*/
+ MSG_NAVIGATION_ALL_SD = 0x976,
+#endif
+#if PACKETVER >= 20130121
+/*20130121 to latest
+접속자 수 초과로 서버에 더이상 접속할 수 없습니다.
+Server Exceeded the maximum number of users,Cannot Connect anymore users.
+20130807 to 20130814
+%s-%s(%d/%d)
+*/
+ MSG_REFUSE_OVER_USERLIMIT = 0x977,
+/*20130121 to latest
+서버접속 실패 (%d)
+Server Connection Failed (%d)
+20130807 to 20130814
+접속자 수 초과로 서버에 더이상 접속할 수 없습니다.
+Server Exceeded the maximum number of users,Cannot Connect anymore users.
+*/
+ MSG_REFUSE_ERRORCODE = 0x978,
+/*20130121 to latest
+로그인 허용시간 초과
+Login Timeout Permitted
+20130807 to 20130814
+서버접속 실패 (%d)
+Server Connection Failed (%d)
+*/
+ MSG_REFUSE_DISCONNECT_KEEP_TIME = 0x979,
+/*20130121 to latest
+로그인 중 인증서버로부터 인증이 실패하였습니다.
+Login Authentication Failed from Authentication Server.
+20130807 to 20130814
+로그인 허용시간 초과
+Login Timeout Permitted
+*/
+ MSG_REFUSE_WEB_AUTH_FAILED = 0x97a,
+#endif
+#if PACKETVER >= 20130206
+/*20130206 to latest
+길드이름에 공백문자를 사용할 수 없습니다.
+Guild Cannot use Space in the name.
+20130807 to 20130814
+로그인 중 인증서버로부터 인증이 실패하였습니다.
+Login Authentication Failed from Authentication Server.
+*/
+ MSG_GUILDNAME_CHECK = 0x97b,
+#endif
+#if PACKETVER >= 20130215
+/*20130215 to latest
+고객님 안녕하세요!
+Hey,Hello There
+20130807 to 20130814
+길드이름에 공백문자를 사용할 수 없습니다.
+Guild Cannot use Space in the name.
+*/
+ MSG_BILLING_CHN_1 = 0x97c,
+/*20130215 to latest
+고객님의 이용 시간은 %d년 %d 월 %d일 %d:%d 에 종료됩니다.
+Available Time will End on %d month %d hour %d:%d
+20130807 to 20130814
+고객님 안녕하세요!
+Hey,Hello There
+*/
+ MSG_BILLING_CHN_2 = 0x97d,
+/*20130215 to latest
+고객님의 이용 시간은 아직 많이 남았으니 안심하고 플레이하세요!
+You've lot of time,Play in Peace.
+20130807 to 20130814
+고객님의 이용 시간은 %d년 %d 월 %d일 %d:%d 에 종료됩니다.
+Available Time will End on %d month %d hour %d:%d
+*/
+ MSG_BILLING_CHN_3 = 0x97e,
+/*20130215 to latest
+고객님의 이용 시간은 이번 주 내로 종료 됩니다. 종료 전에 충전을 하시기 바랍니다.
+Your hours will be terminated within this week. Please Charge before termination.
+20130807 to 20130814
+고객님의 이용 시간은 아직 많이 남았으니 안심하고 플레이하세요!
+You've lot of time,Play in Peace.
+*/
+ MSG_BILLING_CHN_4 = 0x97f,
+/*20130215 to latest
+고객님의 이용 시간은 24시간 내에 종료됩니다. 빨리 충전하시기 바랍니다.
+Your hours will be terminated within 24 hours.Please Charge Quickly.
+20130807 to 20130814
+고객님의 이용 시간은 이번 주 내로 종료 됩니다. 종료 전에 충전을 하시기 바랍니다.
+Your hours will be terminated within this week. Please Charge before termination.
+*/
+ MSG_BILLING_CHN_5 = 0x980,
+/*20130215 to latest
+현재 고객님의 이용 시간은 %d시간 남았습니다. 정상적인 게임 이용을 위해 충전을 하시기 바랍니다.
+Current Time Left:%d hours.Charge the game for uninterrupted play.
+20130807 to 20130814
+고객님의 이용 시간은 24시간 내에 종료됩니다. 빨리 충전하시기 바랍니다.
+Your hours will be terminated within 24 hours.Please Charge Quickly.
+*/
+ MSG_BILLING_CHN_6 = 0x981,
+/*20130215 to latest
+현재 고객님의 이용 시간은 %d분 남았습니다. 이용시간이 끝난 후 강제적으로 종료됩니다. 정상적인 게임 이용을 위해 충전을 하시기 바랍니다.
+Current Time Left:%d minutes.Charge the game for uninterrupted play.
+20130807 to 20130814
+현재 고객님의 이용 시간은 %d시간 남았습니다. 정상적인 게임 이용을 위해 충전을 하시기 바랍니다.
+Current Time Left:%d hours.Charge the game for uninterrupted play.
+*/
+ MSG_BILLING_CHN_7 = 0x982,
+/*20130215 to latest
+고객님의 이용 시간은 %d시간 %d분 남았습니다.
+Time Left: %d hours %d minutes
+20130807 to 20130814
+현재 고객님의 이용 시간은 %d분 남았습니다. 이용시간이 끝난 후 강제적으로 종료됩니다. 정상적인 게임 이용을 위해 충전을 하시기 바랍니다.
+Current Time Left:%d minutes.Charge the game for uninterrupted play.
+*/
+ MSG_BILLING_CHN_8 = 0x983,
+/*20130215 to latest
+%d%% ( 기본 100%% + PC방 %d%% + 프리미엄 %d%% + %s서버 %d%% )
+%d%% ( Basic 100%% + PCRoom %d%% + Premium %d%% + %sServer %d%% )
+20130807 to 20130814
+고객님의 이용 시간은 %d시간 %d분 남았습니다.
+Time Left: %d hours %d minutes
+*/
+ MSG_BASIC_EXP_MSG_THAI = 0x984,
+/*20130215 to latest
+고객님의 이용 시간은 %d시간 %d분 후에 종료됩니다.
+After %d hours %d minutes, your game will be terminated.
+20130807 to 20130814
+%d%% ( 기본 100%% + PC방 %d%% + 프리미엄 %d%% + %s서버 %d%% )
+%d%% ( Basic 100%% + PCRoom %d%% + Premium %d%% + %sServer %d%% )
+*/
+ MSG_CHN_BILLING_EXPIRE_TIME = 0x985,
+#endif
+#if PACKETVER >= 20130220
+/*20130220 to latest
+유저님의 계정은 영구 접속금지 되였습니다
+This Account is permanently Banned.
+20130807 to 20130814
+고객님의 이용 시간은 %d시간 %d분 후에 종료됩니다.
+After %d hours %d minutes, your game will be terminated.
+*/
+ MSG_CHN_BLOCK_FOREVER = 0x986,
+/*20130220 to latest
+유저님의 계정은 접속금지 되였습니다
+ 해지 시간 : %04d-%02d-%02d %02d:%02d
+This Account is banned.
+Termination Time:%04d-%02d-%02d %02d:%02d
+20130807 to 20130814
+유저님의 계정은 영구 접속금지 되였습니다
+This Account is permanently Banned.
+*/
+ MSG_CHN_BLOCK = 0x987,
+#endif
+#if PACKETVER >= 20130227
+/*20130227 to latest
+몬스터(Tab)
+Monster(Tab)
+20130807 to 20130814
+유저님의 계정은 접속금지 되였습니다
+ 해지 시간 : %04d-%02d-%02d %02d:%02d
+This Account is banned.
+Termination Time:%04d-%02d-%02d %02d:%02d
+*/
+ MSG_WORLDMAP_MSG1 = 0x988,
+/*20130227 to latest
+맵(Alt)
+Map(Alt)
+20130807 to 20130814
+몬스터(Tab)
+Monster(Tab)
+*/
+ MSG_WORLDMAP_MSG2 = 0x989,
+/*20130227 to latest
+안내 정보
+Product Information
+20130807 to 20130814
+맵(Alt)
+Map(Alt)
+*/
+ MSG_WORLDMAP_MSG3 = 0x98a,
+/*20130227 to latest
+검색 정보
+Find Information
+20130807 to 20130814
+안내 정보
+Product Information
+*/
+ MSG_WORLDMAP_MSG4 = 0x98b,
+/*20130227 to latest
+비공정
+AirShip
+20130807 to 20130814
+검색 정보
+Find Information
+*/
+ MSG_WORLDMAP_MSG5 = 0x98c,
+/*20130227 to latest
+카프라
+Kafra
+20130807 to 20130814
+비공정
+AirShip
+*/
+ MSG_WORLDMAP_MSG6 = 0x98d,
+/*20130227 to latest
+(도착)
+(Arrival)
+20130807 to 20130814
+카프라
+Kafra
+*/
+ MSG_WORLDMAP_MSG7 = 0x98e,
+#endif
+#if PACKETVER >= 20130313
+/*20130313 to latest
+Mob)%s:%s(%s)
+20130807 to 20130814
+(도착)
+(Arrival)
+*/
+ MSG_NAVIGATION_MOB_S_S_S = 0x98f,
+/*20130313 to latest
+분포도:%s
+Distribution:%s
+20130807 to 20130814
+Mob)%s:%s(%s)
+*/
+ MSG_NAVIGATION_NUM = 0x990,
+/*20130313 to latest
+매우많음
+Very Plenty
+20130807 to 20130814
+분포도:%s
+Distribution:%s
+*/
+ MSG_NAVIGATION_NUM1 = 0x991,
+/*20130313 to latest
+많음
+Plenty
+20130807 to 20130814
+매우많음
+Very Plenty
+*/
+ MSG_NAVIGATION_NUM2 = 0x992,
+/*20130313 to latest
+보통
+Normal
+20130807 to 20130814
+많음
+Plenty
+*/
+ MSG_NAVIGATION_NUM3 = 0x993,
+/*20130313 to latest
+적음
+Low
+20130807 to 20130814
+보통
+Normal
+*/
+ MSG_NAVIGATION_NUM4 = 0x994,
+/*20130313 to latest
+매우적음
+Very Low
+20130807 to 20130814
+적음
+Low
+*/
+ MSG_NAVIGATION_NUM5 = 0x995,
+#endif
+#if PACKETVER >= 20130320
+/*20130320 to latest
+은행을 이용할 수 없습니다. 잠시 후 다시 시도하세요.
+The bank is not available. Please try again in a few minutes.
+20130807 to 20130814
+매우적음
+Very Low
+*/
+ MSG_BANK_SYSTEM_ERROR = 0x996,
+/*20130320 to latest
+은행 잔고가 부족합니다.
+Bank balance is low.
+20130807 to 20130814
+은행을 이용할 수 없습니다. 잠시 후 다시 시도하세요.
+The bank is not available. Please try again in a few minutes.
+*/
+ MSG_BANK_WITHDRAW_NO_MONEY = 0x997,
+#endif
+#if PACKETVER >= 20130327
+/*20130327 to latest
+보유한 Zeny 가 부족해서 입금할 수 없습니다.
+You don't have enough zeny
+20130807 to 20130814
+은행 잔고가 부족합니다.
+Bank balance is low.
+*/
+ MSG_BANK_DEPOSIT_NO_MONEY = 0x998,
+/*20130327 to latest
+1 Zeny 이상 입금 가능합니다.
+Minimum Deposit Amount: 1 zeny
+20130807 to 20130814
+보유한 Zeny 가 부족해서 입금할 수 없습니다.
+You don't have enough zeny
+*/
+ MSG_BANK_DEPOSIT_ZERO = 0x999,
+/*20130327 to latest
+1 Zeny 이상 출금 가능합니다.
+Minimum Withdrawal Amount: 1 zeny
+20130807 to 20130814
+1 Zeny 이상 입금 가능합니다.
+Minimum Deposit Amount: 1 zeny
+*/
+ MSG_BANK_WITHDRAW_ZERO = 0x99a,
+/*20130327 to 20130529
+보유 Zeny 는 21 억을 넘을 수 없습니다.
+20130605 to latest
+보유 Zeny 는 2,147,483,647 Zeny를 넘을 수 없습니다.
+You cannot hold more than 2,147,483,647 Zeny
+20130807 to 20130814
+1 Zeny 이상 출금 가능합니다.
+Minimum Withdrawal Amount: 1 zeny
+*/
+ MSG_BANK_OVER_INT_MAX = 0x99b,
+/*20130327 to latest
+your account is lock by mobil otp
+your account is lock by mobile otp
+20130807 to 20130814
+보유 Zeny 는 2,147,483,647 Zeny를 넘을 수 없습니다.
+You cannot hold more than 2,147,483,647 Zeny
+*/
+ MSG_REFUSE_MOTP_LOCK = 0x99c,
+/*20130327 to latest
+MOTP auth fail
+20130807 to 20130814
+your account is lock by mobil otp
+your account is lock by mobile otp
+*/
+ MSG_REFUSE_MOTP_AUTH_FAIL = 0x99d,
+/*20130327 to latest
+%d분간 몬스터에게 얻을 수 있는 Job경험치가 %d%% 증가합니다.
+For %d minutes,Job Experience obtained from monster is increased by %d%%
+20130807 to 20130814
+MOTP auth fail
+*/
+ MSG_JOBPLUSEXP_VALUE = 0x99e,
+#endif
+#if PACKETVER >= 20130410
+/*20130410 to 20130410
+소지 Zeny : %d Zeny
+20130417 to latest
+소지 Zeny : %s Zeny
+Current Zeny: %s Zeny
+20130807 to 20130814
+%d분간 몬스터에게 얻을 수 있는 Job경험치가 %d%% 증가합니다.
+For %d minutes,Job Experience obtained from monster is increased by %d%%
+*/
+ MSG_BANK_MY_ZENY = 0x99f,
+/*20130410 to latest
+Zeny
+20130807 to 20130814
+소지 Zeny : %s Zeny
+Current Zeny: %s Zeny
+*/
+ MSG_BANK_ZENY = 0x9a0,
+/*20130410 to 20130515
+* 최대 21억 Zeny까지만 보관이 가능합니다.
+20130522 to 20130529
+최대 2,147,483,647억 Zeny까지만 보관이 가능합니다.
+20130605 to 20130605
+최대 2,147,483,647 Zeny까지만 보관이 가능합니다.
+20130612 to latest
+최대 2,147,483,647 Zeny 까지만 보관이 가능합니다.
+The Maximum amount is 2,147,483,647 Zeny
+20130807 to 20130814
+Zeny
+*/
+ MSG_BANK_WARNING = 0x9a1,
+#endif
+#if PACKETVER >= 20130515
+/*20130515 to latest
+총알이 부족합니다.
+Insufficient bullet
+20130807 to 20130814
+최대 2,147,483,647 Zeny 까지만 보관이 가능합니다.
+The Maximum amount is 2,147,483,647 Zeny
+*/
+ MSG_NEED_MORE_BULLET = 0x9a2,
+/*20130515 to latest
+10억제니 이상 입력하셔도 가격은 10억 제니로 판매됩니다.
+You entered more than 1 Billion Zeny, the price will be set to 1 Billion Zeny.
+20130807 to 20130814
+총알이 부족합니다.
+Insufficient bullet
+*/
+ MSG_OVERPRICE_MAX = 0x9a3,
+#endif
+#if PACKETVER >= 20130605
+/*20130605 to latest
+AuthTicket is Not Vaild
+AuthTicket is Not Valid
+20130807 to 20130814
+10억제니 이상 입력하셔도 가격은 10억 제니로 판매됩니다.
+You entered more than 1 Billion Zeny, the price will be set to 1 Billion Zeny.
+*/
+ MSG_NOT_VALID_AUTH_TICKET = 0x9a4,
+/*20130605 to 20130605
+ErrorCode : %d, ErrorValue : %d
+20130612 to latest
+ErrorCategory : %d, ErrorCode : %d (%d,%d,%d,%d)
+ErrorCategory: %d, ErrorCode: %d (%d,%d,%d,%d)
+20130807 to 20130814
+AuthTicket is Not Vaild
+AuthTicket is Not Valid
+*/
+ MSG_STEAMAGENCY_ERROR = 0x9a5,
+#endif
+#if PACKETVER >= 20130618
+/*20130618 to 20130618
+%d%% ( Primary 100%% + Premium %d%% + PCCafe %d%% + %s Server %d%% )
+20130626 to latest
+%d%% ( Basic 100%% + Premium %d%% + PCCafe %d%% + %s Server %d%% )
+%d%% ( Basic 100%% + Premium %d%% + Internet cafe %d%% + %s Server %d%% )
+20130807 to 20130814
+ErrorCategory : %d, ErrorCode : %d (%d,%d,%d,%d)
+ErrorCategory: %d, ErrorCode: %d (%d,%d,%d,%d)
+*/
+ MSG_BASIC_EXP_MSG_INDONESIA = 0x9a6,
+/*20130618 to 20130925
+ 몬스터 사냥을 통해 얻을 수 있는 기본 아이템의 드롭률이 %d분간 %d배로 증가합니다.
+20130807 to 20130814
+%d%% ( Basic 100%% + Premium %d%% + PCCafe %d%% + %s Server %d%% )
+%d%% ( Basic 100%% + Premium %d%% + Internet cafe %d%% + %s Server %d%% )
+20130925 to latest
+ %d분간 몬스터 사냥을 통해 얻을 수 있는 기본 아이템의 드롭률이 %d%%로 증가합니다.
+Basic item drop rate from monster hunting is increased for %dmins by %dtimes.
+*/
+ MSG_RECEIVEITEM_VALUE = 0x9a7,
+/*20130618 to 20130925
+ 몬스터 사냥을 통해 얻을 수 있는 기본 아이템의 드롭률이 %d시 %.2d분간 %d배로 증가합니다.
+20130807 to 20130814
+ 몬스터 사냥을 통해 얻을 수 있는 기본 아이템의 드롭률이 %d분간 %d배로 증가합니다.
+20130925 to latest
+ %d시 %.2d분간 몬스터 사냥을 통해 얻을 수 있는 기본 아이템의 드롭률이 %d%%로 증가합니다.
+Basic item drop rate from monster hunting is increased for %dhour %.2dmins by %dtimes.
+*/
+ MSG_RECEIVEITEM_VALUE_1 = 0x9a8,
+#endif
+#if PACKETVER >= 20130626
+/*20130626 to latest
+%s 의 가격이
+The price of^0000FF %s^000000
+20130807 to 20130814
+ 몬스터 사냥을 통해 얻을 수 있는 기본 아이템의 드롭률이 %d시 %.2d분간 %d배로 증가합니다.
+*/
+ MSG_WARNING_PRICE1 = 0x9a9,
+/*20130626 to latest
+100000000
+1000000000
+20130807 to 20130814
+%s 의 가격이
+The price of^0000FF %s^000000
+*/
+ MSG_WARNING_PRICE2 = 0x9aa,
+/*20130626 to latest
+ ^ff0000%d^0000ff억
+ is over ^FF0000%d^0000FF Billion^000000 Zeny and
+20130807 to 20130814
+100000000
+1000000000
+*/
+ MSG_WARNING_PRICE3 = 0x9ab,
+/*20130626 to latest
+10000000
+20130807 to 20130814
+ ^ff0000%d^0000ff억
+ is over ^FF0000%d^0000FF Billion^000000 Zeny and
+*/
+ MSG_WARNING_PRICE4 = 0x9ac,
+/*20130626 to latest
+ ^ff0000%d^0000ff천만
+ more than^FF0000 %d0^0000FF Million^000000 Zeny
+20130807 to 20130814
+10000000
+*/
+ MSG_WARNING_PRICE5 = 0x9ad,
+/*20130626 to latest
+^0000ffZeny 이상^000000입니다.
+입력금액이 맞습니까?
+. Is this correct?
+20130807 to 20130814
+ ^ff0000%d^0000ff천만
+ more than^FF0000 %d0^0000FF Million^000000 Zeny
+*/
+ MSG_WARNING_PRICE6 = 0x9ae,
+/*20130626 to latest
+천만Zeny이상 안전확인
+Safety check for more than 10m Zeny
+20130807 to 20130814
+^0000ffZeny 이상^000000입니다.
+입력금액이 맞습니까?
+. Is this correct?
+*/
+ MSG_WARNING_PRICE7 = 0x9af,
+/*20130626 to latest
+https://www.warpportal.com/account/login.aspx?ReturnUrl=%2faccount%2fpayment.aspx
+20130807 to 20130814
+천만Zeny이상 안전확인
+Safety check for more than 10m Zeny
+*/
+ MSG_AMERICA_CASHSHOP_URL = 0x9b0,
+/*20130626 to 20131023
+https://kepler.warpportal.com/steam/purchase/?step=1&steamid=76561198071003044&game=rose&accountname=khanhtest111&lang=en
+20130807 to 20130814
+https://www.warpportal.com/account/login.aspx?ReturnUrl=%2faccount%2fpayment.aspx
+20131030 to latest
+https://kepler.warpportal.com/ro1/purchase/?step=1&steamid=%lld&accountname=
+https://kepler.warpportal.com/ror/purchase/?step=1&steamid=%lld&accountname=
+*/
+ MSG_AMERICA_CASHSHOP_URL_STEAM = 0x9b1,
+/*20130626 to latest
+지상의 끝, 스플랑디드와 부유대륙 알프헤임을 잇는 다리, 비프로스트에 생겨난 거대한 균열, 그리고 근원을 알 수 없는 미궁숲.
+A giant crevice appeared in Bifrost, the bridge between Splendide, the end of the world and the floating continent of Alfheim, and you do not know the source of the labyrinth forest.
+20130807 to 20130814
+https://kepler.warpportal.com/steam/purchase/?step=1&steamid=76561198071003044&game=rose&accountname=khanhtest111&lang=en
+*/
+ MSG_QUEST_INFO_01 = 0x9b2,
+/*20130626 to latest
+이것은 여행의 끝을 알리는 표식인가, 새로운 세계를 여는 지표인가! 수호자는 노랫말 같은 유혹에 점차 넋을 잃어가고 있었다.
+This is a marker indicating the end of the trip, a new world is opening indicators! Guardian, such as the lyrics to the temptation was gradually losing the soul.
+20130807 to 20130814
+지상의 끝, 스플랑디드와 부유대륙 알프헤임을 잇는 다리, 비프로스트에 생겨난 거대한 균열, 그리고 근원을 알 수 없는 미궁숲.
+A giant crevice appeared in Bifrost, the bridge between Splendide, the end of the world and the floating continent of Alfheim, and you do not know the source of the labyrinth forest.
+*/
+ MSG_QUEST_INFO_02 = 0x9b3,
+/*20130626 to latest
+수천 년의 세월이 흐르는 동안, 그 스스로가 홀로 안간힘을 쓰며 지켜낸 것이 무엇이었는지, 봉인 되어 긴 시간을 갇혀버린 것은 오히려 자신이 아니었는지 혼란을 느끼고 있었다.
+For thousands of years, a mysterious melody has mesmerized the guardian. After a millennia of slumber, the guardian became confused about what he had been protecting all these years, and began to suspect that he might be the one who has been sealed and hidden away.
+20130807 to 20130814
+이것은 여행의 끝을 알리는 표식인가, 새로운 세계를 여는 지표인가! 수호자는 노랫말 같은 유혹에 점차 넋을 잃어가고 있었다.
+This is a marker indicating the end of the trip, a new world is opening indicators! Guardian, such as the lyrics to the temptation was gradually losing the soul.
+*/
+ MSG_QUEST_INFO_03 = 0x9b4,
+/*20130626 to latest
+유혹의 노랫말이 최고조에 이르렀을 때, 지상의 끝 스플랑디드와 부유대륙 알프헤임을 잇는 다리, 비프로스트에 거대한 균열이 생겨났고, 그로 인해 두 세계간의 왕래가 끊기면서 사람들은 큰 불편을 겪게 되었다.
+When the melody reached its peak, a giant crevice appeared in Bifrost, the bridge between Splendide, the end of the world and the floating continent of Alfheim. As a result, the two worlds were cut off from each other, causing a big problem for the people.
+20130807 to 20130814
+수천 년의 세월이 흐르는 동안, 그 스스로가 홀로 안간힘을 쓰며 지켜낸 것이 무엇이었는지, 봉인 되어 긴 시간을 갇혀버린 것은 오히려 자신이 아니었는지 혼란을 느끼고 있었다.
+For thousands of years, a mysterious melody has mesmerized the guardian. After a millennia of slumber, the guardian became confused about what he had been protecting all these years, and began to suspect that he might be the one who has been sealed and hidden away.
+*/
+ MSG_QUEST_INFO_04 = 0x9b5,
+/*20130626 to latest
+비프로스트의 통로는 이제 미궁숲 뿐. 근원조차 알 수 없는 그곳을 무사히 통과 한 사람은 지금까지 아무도 없었다.
+Now, the only way to get to Bifrost is through the Labyrinth Forest. Nobody knows how the forest came to exist, and nobody has ever come out of it alive...
+20130807 to 20130814
+유혹의 노랫말이 최고조에 이르렀을 때, 지상의 끝 스플랑디드와 부유대륙 알프헤임을 잇는 다리, 비프로스트에 거대한 균열이 생겨났고, 그로 인해 두 세계간의 왕래가 끊기면서 사람들은 큰 불편을 겪게 되었다.
+When the melody reached its peak, a giant crevice appeared in Bifrost, the bridge between Splendide, the end of the world and the floating continent of Alfheim. As a result, the two worlds were cut off from each other, causing a big problem for the people.
+*/
+ MSG_QUEST_INFO_05 = 0x9b6,
+/*20130626 to latest
+숱한 모험가들을 집어 삼킨 혼돈의 지옥, 미궁숲은 그 속을 방황하는 이름 모를 여인의 마음처럼 더욱 깊고 혼란스럽게 확장되고 있었다.
+Swallowed countless adventurers to put a hell of confusion, wandering in the forest labyrinth of nowhere, like the heart of a woman was being extend deeper confusion.
+20130807 to 20130814
+비프로스트의 통로는 이제 미궁숲 뿐. 근원조차 알 수 없는 그곳을 무사히 통과 한 사람은 지금까지 아무도 없었다.
+Now, the only way to get to Bifrost is through the Labyrinth Forest. Nobody knows how the forest came to exist, and nobody has ever come out of it alive...
+*/
+ MSG_QUEST_INFO_06 = 0x9b7,
+#endif
+#if PACKETVER >= 20130717
+/*20130717 to latest
+숫자만 입력 가능합니다.
+You can enter only numbers.
+20130807 to 20130814
+숱한 모험가들을 집어 삼킨 혼돈의 지옥, 미궁숲은 그 속을 방황하는 이름 모를 여인의 마음처럼 더욱 깊고 혼란스럽게 확장되고 있었다.
+Swallowed countless adventurers to put a hell of confusion, wandering in the forest labyrinth of nowhere, like the heart of a woman was being extend deeper confusion.
+*/
+ MSG_BANK_CHECK_NUM = 0x9b8,
+#endif
+#if PACKETVER >= 20130724
+/*20130724 to latest
+교환창 또는 상점이 활성화 된 상태에서는 입출금을 하실수 없습니다.
+Exchange or store window is active and can not register the withdrawal.
+20130807 to 20130814
+숫자만 입력 가능합니다.
+You can enter only numbers.
+*/
+ MSG_BANK_PROHIBIT = 0x9b9,
+#endif
+#if PACKETVER >= 20130731
+/*20130731 to latest
+바로가기
+Go to
+20130807 to 20130814
+교환창 또는 상점이 활성화 된 상태에서는 입출금을 하실수 없습니다.
+Exchange or store window is active and can not register the withdrawal.
+*/
+ MSG_QUEST_INFO_00 = 0x9ba,
+/*20130731 to latest
+아이템 비교
+Item Compare
+20130807 to 20130814
+바로가기
+Go to
+*/
+ MSG_ITEM_COMPARISON = 0x9bb,
+#endif
+#if PACKETVER >= 20130807
+/*20130807 to 20130814
+아이템 비교
+Item Compare
+20130821 to latest
+현재 장착하려고 하는 총기가 장착하고 있는 탄환에 맞지 않습니다
+Now you are trying to mount the gun equipped with bullet does not meet
+*/
+ MSG_WRONG_GUN = 0x9bc,
+/*20130807 to 20130814
+현재 장착하려고 하는 총기가 장착하고 있는 탄환에 맞지 않습니다
+Now you are trying to mount the gun equipped with bullet does not meet
+20130821 to latest
+현재 장착하려고 하는 탄환이 장착하고 있는 총기와 맞지 않습니다
+Now you are trying to mount the guns and bullets will not fit mounted
+*/
+ MSG_WRONG_BULLET = 0x9bd,
+/*20130807 to 20130814
+현재 장착하려고 하는 탄환이 장착하고 있는 총기와 맞지 않습니다
+Now you are trying to mount the guns and bullets will not fit mounted
+20130821 to latest
+판매할 아이템을 등록하지 않았습니다. 판매하실 아이템을 등록해 주세요
+Has not registered to sell the item. Please register to sell the item
+*/
+ MSG_BUYINGSTORE_MAKEWND_ADD_GOODS = 0x9be,
+#endif
+#if PACKETVER >= 20130821
+/*20130821 to latest
+ITEM
+*/
+ MSG_ITEM_IN_MAIL_SYSTEM = 0x9bf,
+#endif
+#if PACKETVER >= 20130828
+/*20130828 to 20130911
+길드 창고를 이용할 수 없습니다. 잠시 후 이용해주세요.
+20130917 to latest
+길드 창고를 이용할 수 없습니다.
+Guild storage is not available.
+*/
+ MSG_GUILD_STORAGE_OPEN_ERROR = 0x9c0,
+/*20130828 to latest
+길드에 가입되어 있지 않습니다. 가입 후 이용해주세요.
+Guild is not subscribed to. After signing up, please use
+*/
+ MSG_GUILD_STORAGE_OPEN_NO_JOIN_GUILD = 0x9c1,
+/*20130828 to latest
+다른 길드원이 사용중입니다. 잠시 후 이용해주세요.
+Two other guild members are in use. Please use it after a while.
+*/
+ MSG_GUILD_STORAGE_WARNING_USING_ANOTHER_MEMBER = 0x9c2,
+/*20130828 to latest
+창고권한
+Storage Permission
+*/
+ MSG_GUILD_STORAGE_PERMISSON = 0x9c3,
+/*20130828 to latest
+길드창고
+Guild Storage
+*/
+ MSG_GUILD_STORAGE_TITLE = 0x9c4,
+/*20130828 to 20130828
+길드창고의 사용 권한이 없습니다. 길드 마스터에게 요청하세요.
+20130904 to latest
+길드창고의 사용 권한이 없습니다.
+You do not have permission to use guild storage.
+*/
+ MSG_GUILD_STORAGE_PERMISSON_WARNING_MSG = 0x9c5,
+#endif
+#if PACKETVER >= 20130917
+/*20130917 to latest
+한정판매 등록창
+Limited Sale Registration Window
+*/
+ MSG_BARGAINSALE_TOOLWND_TITLE = 0x9c6,
+/*20130917 to latest
+아이템 DB명
+Item DB Name
+*/
+ MSG_BARGAINSALE_TOOLWND_DB_NAME = 0x9c7,
+/*20130917 to latest
+아이템 DB번호
+Item DB Number
+*/
+ MSG_BARGAINSALE_TOOLWND_DB_NUMBER = 0x9c8,
+/*20130917 to latest
+판매 갯수
+Number of Sale
+*/
+ MSG_BARGAINSALE_TOOLWND_SELL_COUNT = 0x9c9,
+/*20130917 to latest
+판매 시작시간
+Sale Start Time
+*/
+ MSG_BARGAINSALE_TOOLWND_SELL_STARTTIME = 0x9ca,
+/*20130917 to latest
+판매할 시간
+Time to sell
+*/
+ MSG_BARGAINSALE_TOOLWND_SELL_PERIODTIME = 0x9cb,
+/*20130917 to latest
+판매할 갯수를 입력해 주세요
+Please enter number you want to sell
+*/
+ MSG_BARGAINSALE_TOOLWND_INPUT_COUNT_MSG = 0x9cc,
+/*20130917 to latest
+판매 시작시간을 입력해 주세요
+Enter start time of sale
+*/
+ MSG_BARGAINSALE_TOOLWND_INPUT_STARTTIME_MSG = 0x9cd,
+/*20130917 to latest
+판매 시작시간의 범위가 맞지 않습니다
+Start time does not match the scope of sales.
+*/
+ MSG_BARGAINSALE_TOOLWND_WRONG_RANGE_MSG = 0x9ce,
+/*20130917 to latest
+판매할 시간을 입력해 주세요
+Please enter the time
+*/
+ MSG_BARGAINSALE_TOOLWND_INPUT_PERIODTIME_MSG = 0x9cf,
+/*20130917 to latest
+Item DB Name을 입력해 주세요
+Please enter the Item DB Name
+*/
+ MSG_BARGAINSALE_TOOLWND_INPUT_ITEMDBNAME_MSG = 0x9d0,
+/*20130917 to latest
+Item ID 조회에 실패하였습니다. 확인 후 다시 시도해 주시기 바랍니다
+Item ID lookup failed. Please try again later
+*/
+ MSG_BARGAINSALE_TOOLWND_ITEMID_CHECK_FAILED_MSG = 0x9d1,
+/*20130917 to latest
+>> ItemName : %s / Price : %dc / 수량 : %d / 판매기간 : %d월:%d일:%d시:%d분 ~ %d월:%d일:%d시:%d분
+>> ItemName: %s / Price: %dc / Quantity: %d / TimeOfSale: %dMonth:%dDay:%dMinute:%dSecond ~ %dMonth:%dDay:%dMinute:%dSecond
+*/
+ MSG_BARGAINSALE_TOOLWND_RESULT_FORMAT = 0x9d2,
+/*20130917 to latest
+등록에 성공하였습니다
+Registration successful
+*/
+ MSG_BARGAINSALE_TOOLWND_APPLY_SUCCESS_MSG = 0x9d3,
+/*20130917 to latest
+등록에 실패하였습니다. 다시 시도해 주시기 바랍니다.
+Registration failure. Please try again later.
+*/
+ MSG_BARGAINSALE_TOOLWND_APPLY_FAILED_MSG = 0x9d4,
+/*20130917 to latest
+이미 등록된 아이템이 있습니다. 다시 시도해 주시기 바랍니다.
+Item has already been registered. Please try again later.
+*/
+ MSG_BARGAINSALE_TOOLWND_ALREADY_REGISTERED_MSG = 0x9d5,
+/*20130917 to latest
+아이템 삭제에 실패 하였습니다. 다시 시도해 주시기 바랍니다.
+Failed to delete the item. Please try again later.
+*/
+ MSG_BARGAINSALE_TOOLWND_DELETE_FAILED_MSG = 0x9d6,
+/*20130917 to latest
+%s 아이템이 삭제되었습니다.
+%s item has been deleted.
+*/
+ MSG_BARGAINSALE_TOOLWND_DELETE_SUCCESS_MSG = 0x9d7,
+/*20130917 to latest
+특가
+Special
+*/
+ MSG_BARGAINSALE_CASHSHOP_TAB_NAME = 0x9d8,
+/*20130917 to latest
+한정판매 아이템 판매수량 갱신
+Sales limited sale item update
+*/
+ MSG_BARGAINSALE_CASHSHOP_REFRESH_BTN_TOOLTIP = 0x9d9,
+/*20130917 to latest
+판매종료
+Discontinued
+*/
+ MSG_BARGAINSALE_CASHSHOP_TIMER = 0x9da,
+/*20130917 to latest
+수량갱신이 필요합니다
+Quantity update is required
+*/
+ MSG_BARGAINSALE_CASHSHOP_REFRESH_MSG = 0x9db,
+/*20130917 to latest
+재고가 부족하여 %d 개 만큼만 구입합니다
+The %d is out of stock or to buy as much as
+*/
+ MSG_BARGAINSALE_CASHSHOP_CHECK_COUNT_MSG = 0x9dc,
+/*20130917 to latest
+%s 아이템의 특가판매가 시작되었습니다
+%s Items are on sale
+*/
+ MSG_BARGAINSALE_START_MSG = 0x9dd,
+/*20130917 to latest
+%s 아이템의 매진 또는 판매시간만료로 인해 한정판매가 종료되었습니다
+%s time-out or sale of the items sold has been shut down due to the limited sales
+*/
+ MSG_BARGAINSALE_CLOSE_MSG = 0x9de,
+/*20130917 to latest
+/한정판매
+/limitedsale
+*/
+ MSG_BARGAINSALE_TOOLWND_CALL = 0x9df,
+#endif
+#if PACKETVER >= 20131002
+/*20131002 to latest
+http://www.ragnarokeurope.com/news/home-r70.html
+*/
+ MSG_FRANCE_CASHSHOP_URL = 0x9e0,
+/*20131002 to latest
+http://www.ragnarokeurope.com/index.php?rubrique=70&Steam
+*/
+ MSG_FRANCE_CASHSHOP_URL_STEAM = 0x9e1,
+#endif
+#if PACKETVER >= 20131016
+/*20131016 to latest
+구입에 성공한 품목
+Item purchase successful
+*/
+ MSG_PARA_RESULT_TITLE = 0x9e2,
+/*20131016 to latest
+주문량이 재고량을 초과하였습니다.
+You do not have enough items.
+*/
+ MSG_PARA_WRONG_PURCHASE_COUNT_MSG = 0x9e3,
+/*20131016 to latest
+초대할수 없는 케릭터 이름입니다.
+Name of the character that cannot be invited.
+*/
+ MSG_PARTY_INVITE = 0x9e4,
+/*20131016 to latest
+길드초대할수 없는 케릭터 이름입니다.
+You cannot invite the character to the guild.
+*/
+ MSG_GUILD_INVITE = 0x9e5,
+/*20131016 to latest
+일부 품목은 이미 판매되어 구입에 실패하였습니다.
+Item already Sold,Purchase Failed.
+*/
+ MSG_PARA_PURCHASE_ITEM_FAIL = 0x9e6,
+#endif
+#if PACKETVER >= 20131030
+/*20131030 to latest
+현재 위치에서 워프 장소를 기억 할 수 없습니다.
+The warp spot cannot be memorized in current position.
+*/
+ MSG_NOWARPSKILL2 = 0x9e7,
+/*20131030 to latest
+무게가 초과되어 아이템을 구매할 수 없습니다.
+Cannot purchase item, You exceeded the weight.
+*/
+ MSG_PARA_PURCHASE_ITEM_WEIGHT = 0x9e8,
+/*20131030 to latest
+No.
+*/
+ MSG_GUILD_STORAGE_NUMBER = 0x9e9,
+/*20131030 to latest
+아이템
+Item
+*/
+ MSG_GUILD_STORAGE_ITEM = 0x9ea,
+/*20131030 to latest
+개수
+Number
+*/
+ MSG_GUILD_STORAGE_ITEM_COUNT = 0x9eb,
+/*20131030 to latest
+이름
+Name
+*/
+ MSG_GUILD_STORAGE_USER_NAME = 0x9ec,
+/*20131030 to latest
+시간
+Time
+*/
+ MSG_GUILD_STORAGE_LOG_TIME = 0x9ed,
+/*20131030 to latest
+입/출
+Input/Output
+*/
+ MSG_GUILD_STORAGE_ITEM_IN_OUT = 0x9ee,
+/*20131030 to latest
+로그가 존재하지 않습니다.
+Log does not exist.
+*/
+ MSG_GUILD_STORAGE_LOG_FINISH = 0x9ef,
+/*20131030 to latest
+전 체
+Entire
+*/
+ MSG_GUILD_STORAGE_LOG_ALL = 0x9f0,
+/*20131030 to latest
+넣 기
+Insert Symbol
+*/
+ MSG_GUILD_STORAGE_LOG_IN = 0x9f1,
+/*20131030 to latest
+빼 기
+Remaining Time
+*/
+ MSG_GUILD_STORAGE_LOG_OUT = 0x9f2,
+#endif
+#if PACKETVER >= 20131106
+/*20131106 to latest
+길드 창고 내역
+Guild Storage Logs
+*/
+ MSG_GUILD_STORAGE_LOG_WND_NAME = 0x9f3,
+/*20131106 to latest
+내역은 최근 100개만 표시됩니다.
+100 entries are displayed.
+*/
+ MSG_GUILD_STORAGE_LOG_CAUTION = 0x9f4,
+#endif
+#if PACKETVER >= 20131120
+/*20131120 to 20131120
+%s : +%d
+20131127 to latest
+길드창고의 사용 시간 2분이 경과되어 자동으로 종료됩니다.
+Guild Storage is open only for 2 minutes, and will close automatically.
+*/
+ MSG_GUILD_STORAGE_CLOSE_TIMEOUT = 0x9f5,
+#endif
+#if PACKETVER >= 20131204
+/*20131204 to latest
+Incorrect GameSamba ID. Please Try Again.
+*/
+ MSG_INCORRECT_GAMESAMBEID = 0x9f6,
+/*20131204 to latest
+%s [%d옵션] : %d 개
+%s [%d Option]: %d Quantity
+*/
+ MSG_EA5 = 0x9f7,
+#endif
+#if PACKETVER >= 20131211
+/*20131211 to latest
+코인이 필요합니다.
+Requires a Coin.
+*/
+ MSG_USESKILL_FAIL_COINTS = 0x9f8,
+/*20131211 to latest
+코인이 %d 개가 필요합니다.
+%d Coins are required.
+*/
+ MSG_USESKILL_FAIL_COINTS_NUM = 0x9f9,
+/*20131211 to latest
+개틀링건 계열의 총기류를 장착한 상태여야 합니다.
+Gatling Gun should be equipped with bullets.
+*/
+ MSG_FAIL_NEED_EQUIPPED_GUN_GATLING = 0x9fa,
+/*20131211 to latest
+샷건 계열의 총기류를 장착한 상태여야 합니다.
+Shotguns should be equipped with bullets.
+*/
+ MSG_FAIL_NEED_EQUIPPED_GUN_SHOTGUN = 0x9fb,
+/*20131211 to latest
+라이플 계열의 총기류를 장착한 상태여야 합니다.
+Rifle should be equipped with bullets.
+*/
+ MSG_FAIL_NEED_EQUIPPED_GUN_RIFLE = 0x9fc,
+/*20131211 to latest
+리볼버 계열의 총기류를 장착한 상태여야 합니다.
+Pair of Revolver should be equipped with bullets.
+*/
+ MSG_FAIL_NEED_EQUIPPED_GUN_HANDGUN = 0x9fd,
+/*20131211 to latest
+성속성 블릿을 장착해야 합니다
+[Silver Bullet] weapon class must be equipped.
+*/
+ MSG_FAIL_NEED_EQUIPPED_PROPERTY_SAINT_BULLET = 0x9fe,
+/*20131211 to latest
+아이템 판매 내역
+Item Sell History
+*/
+ MSG_MERCHANT_SOLD_ITEM_LOG = 0x9ff,
+/*20131211 to latest
+아이템 구매 내역
+Item Purchase History
+*/
+ MSG_MERCHANT_ITEM_BUY_LOG = 0xa00,
+#endif
+#if PACKETVER >= 20131218
+/*20131218 to latest
+그레네이드런쳐 계열의 총기류를 장착한 상태여야 합니다.
+Grenade Launcher should be equipped with bullets.
+*/
+ MSG_FAIL_NEED_EQUIPPED_GUN_GRANADE = 0xa01,
+/*20131218 to latest
+[히트배럴],[매드니스 캔슬러],[플래티넘 알터] 의 효과들은 중첩하여 사용할 수 없습니다.
+[Heat barrel],[Last Stand],[Platinum Alter] cannot be used while sitting.
+*/
+ MSG_FAIL_DUPLICATE_HEAT_BARREL_GS_MADNESSCANCEL_P_ALTER = 0xa02,
+#endif
+#if PACKETVER >= 20131223
+/*20131223 to latest
+현재 맵에서는 사용할 수 없는 스킬입니다.
+Cannot use skill in this map.
+*/
+ MSG_USESKILL_FAIL_MAP = 0xa03,
+#endif
+#if PACKETVER >= 20140108
+/*20140108 to latest
+길드 창고를 이용중인 경우 창고의 모든 아이템이 사라지게 됩니다.
+If you are using a guild storage, all items inside it will disappear.
+*/
+ MSG_GUILD_STORAGE_WARNING = 0xa04,
+#endif
+#if PACKETVER >= 20140115
+/*20140115 to latest
+http://ragnarok.gamesamba.com/paytest.html
+http://ragnarok.gamesamba.com/
+*/
+ MSG_AMERICA_CASHSHOP_URL_GAMESAMBA = 0xa05,
+/*20140115 to latest
+로그인을 위해 패스워드를 입력해주세요.
+Please enter a password to login.
+*/
+ MSG_SECOND_PASSWORD_INFO_4 = 0xa06,
+#endif
+#if PACKETVER >= 20140129
+/*20140129 to latest
+펫 진화
+Pet Evolution
+*/
+ MSG_PET_EVOLUTION = 0xa07,
+/*20140129 to latest
+진화 - %s
+Evolution - %s
+*/
+ MSG_PET_EVOLUTION_WITH_PET_NAME = 0xa08,
+/*20140129 to latest
+진화에는 다음의 재료가 필요합니다.
+Evolution requires the following ingredients:
+*/
+ MSG_PET_EVOLUTION_NEED_ITEM = 0xa09,
+/*20140129 to latest
+진화 하시겠습니까?
+Are you sure you want to evolve your pet?
+*/
+ MSG_DO_YOU_WANT_TO_EVOLVE_PET = 0xa0a,
+/*20140129 to latest
+알 수 없는 오류
+Unknown Error
+*/
+ MSG_PET_EVOLUTION_FAIL_UNKNOWN = 0xa0b,
+/*20140129 to latest
+소환된펫을 갖고 있지 않습니다.
+Pet Cannot be hatched.
+*/
+ MSG_PET_EVOLUTION_FAIL_NOTEXIST_CALLPET = 0xa0c,
+/*20140129 to latest
+요청한 것이 펫알이 아닙니다.
+It is not requested petal.
+*/
+ MSG_PET_EVOLUTION_FAIL_NOT_PETEGG = 0xa0d,
+/*20140129 to 20140205
+진화가 불가능한 요청입니다.
+20140212 to latest
+진화 재료가 부족합니다.
+Evolution material is low.
+*/
+ MSG_PET_EVOLUTION_FAIL_RECIPE = 0xa0e,
+/*20140129 to latest
+진화에 필요한 재료가 부족합니다.
+Insufficient materials for evolution.
+*/
+ MSG_PET_EVOLUTION_FAIL_MATERIAL = 0xa0f,
+/*20140129 to latest
+친밀도가 절친인 상태에서만 진화가 가능합니다.
+Loyal Intimacy is required to evolve.
+*/
+ MSG_PET_EVOLUTION_FAIL_RG_FAMILIAR = 0xa10,
+#endif
+#if PACKETVER >= 20140212
+/*20140212 to 20170830
+자동 먹이 주기
+20170906 to latest
+펫 자동 먹이 주기
+Automatic feeding
+*/
+ MSG_PET_AUTO_FEEDING = 0xa11,
+/*20140212 to latest
+펫에게 먹이를 주었습니다. '%s' 잔여량 %d개
+Feeding the pet. %d '%d' remaining
+*/
+ MSG_PET_AUTO_FEEDING_REST = 0xa12,
+/*20140212 to 20170830
+자동 먹이 주기 활성화 On
+20170906 to latest
+펫 자동 먹이 주기 활성화 On
+Automatic feeding turned On
+*/
+ MSG_PET_AUTO_FEEDING_ON = 0xa13,
+/*20140212 to 20170830
+자동 먹이 주기 활성화 Off
+20170906 to latest
+펫 자동 먹이 주기 활성화 Off
+Automatic feeding turned Off
+*/
+ MSG_PET_AUTO_FEEDING_OFF = 0xa14,
+/*20140212 to latest
+갱신
+Update
+*/
+ MSG_REFRESH = 0xa15,
+/*20140212 to 20140702
+%d 분전
+20140709 to latest
+%d 분 전
+%d minutes ago
+*/
+ MSG_TIME_LINE_MINUTE = 0xa16,
+/*20140212 to 20140702
+%d 시간전
+20140709 to latest
+%d 시간 전
+%d hours ago
+*/
+ MSG_TIME_LINE_HOUR = 0xa17,
+/*20140212 to 20140702
+%d 일전
+20140709 to latest
+%d 일 전
+%d days ago
+*/
+ MSG_TIME_LINE_DAY = 0xa18,
+#endif
+#if PACKETVER >= 20140319
+/*20140319 to latest
+%d%% ( Premium %d%% + %s Server )
+%d%%% ( Premium %d%%% + %s Server )
+*/
+ MSG_BASIC_EXP_MSG_PH = 0xa19,
+#endif
+#if PACKETVER >= 20140326
+/*20140326 to latest
+우편 발송
+Mailed
+*/
+ MSG_SEND_MAIL = 0xa1a,
+/*20140326 to latest
+메일이 전송되었습니다.
+Your mail has been sent.
+*/
+ MSG_MAIL_SENT = 0xa1b,
+/*20140326 to latest
+아이템이 인벤토리로 이동되었습니다.
+This item has been moved to the inventory.
+*/
+ MSG_GET_ITEMS_FROM_MAIL_SUCCEED = 0xa1c,
+/*20140326 to latest
+아이템 받기가 실패하였습니다.
+Failed to get items.
+*/
+ MSG_GET_ITEMS_FROM_MAIL_FAILED = 0xa1d,
+/*20140326 to latest
+인벤토리를 비워주세요
+Please empty your inventory.
+*/
+ MSG_GET_ITEMS_FROM_MAIL_OVERWEIGHT = 0xa1e,
+/*20140326 to latest
+제니를 받았습니다.
+Zeny received.
+*/
+ MSG_GET_ZENY_FROM_MAIL_SUCCEED = 0xa1f,
+/*20140326 to latest
+제니 받기가 실패하였습니다.
+Failed to get zeny.
+*/
+ MSG_GET_ZENY_FROM_MAIL_FAILED = 0xa20,
+/*20140326 to latest
+제니의 한계치를 넘었습니다.
+Exceeded the limits of zenny.
+*/
+ MSG_GET_ZENY_FROM_MAIL_OVERAMOUNT = 0xa21,
+/*20140326 to latest
+아이템 첨부 성공
+Items attached success
+*/
+ MSG_SET_ITEMS_TO_MAIL_SUCCEED = 0xa22,
+/*20140326 to latest
+받는 사람의 이름이 반드시 들어가야 합니다.
+The name of the recipient must be included.
+*/
+ MSG_INVALID_MAIL_RECIEVER_INFO = 0xa23,
+/*20140326 to 20140416
+제목의 길이는 4자이상 이어야 합니다.
+20140423 to 20141001
+제목의 길이는 4자이상 16자 이하여야 합니다.
+20141008 to latest
+제목의 길이는 한글 2자~25자, 영문 4자~50자 이어야 합니다.
+The length of the title must be 4 to 50 characters long.
+*/
+ MSG_INVALID_MAIL_TITLE_INFO = 0xa24,
+/*20140326 to latest
+메일 전송이 실패하였습니다.
+Mail delivery failed.
+*/
+ MSG_FAILED_SEND_MAIL = 0xa25,
+/*20140326 to latest
+적절하지 못한 아이템으로 전송 실패하였습니다.
+Transmission has failed to inappropriate items.
+*/
+ MSG_FAILED_SEND_MAIL_ITEM = 0xa26,
+/*20140326 to latest
+받는 사람의 정보가 존재하지 않습니다.
+Information of the recipient does not exist.
+*/
+ MSG_FAIELD_SEND_MAIL_TO = 0xa27,
+#endif
+#if PACKETVER >= 20140402
+/*20140402 to latest
+%s [%d옵션]
+%s [%d Option]
+*/
+ MSG_EA6 = 0xa28,
+/*20140402 to latest
+레벨은 1~%d 사이의 숫자를 입력해 주세요.
+Level, enter a number between 1 and %d.
+*/
+ MSG_PARTY_BOOKING_ERR5R2 = 0xa29,
+#endif
+#if PACKETVER >= 20140409
+/*20140409 to latest
+소지창의 여유공간을 확보해주세요.
+Please free the window possessing space.
+*/
+ MSG_ITEM_WND_OVERFULL = 0xa2a,
+/*20140409 to 20140416
+수신자의 메일 보관 용량이 초과되었습니다.
+20140423 to latest
+메일 보내기 횟수가 초과되었습니다.
+Sending mail count exceeded.
+*/
+ MSG_FAILED_MAIL_LIMIT_CNT = 0xa2b,
+#endif
+#if PACKETVER >= 20140416
+/*20140416 to latest
+메일을 열 수 없습니다.
+You can not open the mail.
+*/
+ MSG_FAILED_TO_WRITE_MAIL = 0xa2c,
+/*20140416 to latest
+You are currently joined in CLan !!
+You are currently joined in Clan !!
+*/
+ MSG_JOINED_IN_CLAN = 0xa2d,
+/*20140416 to latest
+골드 PC방 마일리지 정보
+Gold PC rooms mileage information
+*/
+ MSG_GOLDPCCAFE_MILEAGE = 0xa2e,
+#endif
+#if PACKETVER >= 20140423
+/*20140423 to latest
+펫 액세서리를 해제해야 진화가 가능합니다.
+Unequip pet accessories first to start evolution
+*/
+ MSG_PET_EVOLUTION_FAIL_PET_ACC_OFF = 0xa2f,
+/*20140423 to 20140430
+ / %d 분후
+20140508 to 20140702
+%d 분후
+20140709 to latest
+%d 분 후
+%d minutes later
+*/
+ MSG_TIME_LINE_MINUTE2 = 0xa30,
+/*20140423 to 20140430
+ / %d 시간후
+20140508 to 20140702
+%d 시간후
+20140709 to latest
+%d 시간 후
+%d hours later
+*/
+ MSG_TIME_LINE_HOUR2 = 0xa31,
+/*20140423 to 20140430
+ / %d 일후
+20140508 to 20140702
+%d 일후
+20140709 to latest
+%d 일 후
+%d days later
+*/
+ MSG_TIME_LINE_DAY2 = 0xa32,
+/*20140423 to latest
+확인 버튼을 눌러 C-CODE를 확인하세요.
+Press the OK button to confirm the C-CODE.
+*/
+ MSG_INVALID_CCODE_INFO = 0xa33,
+/*20140423 to latest
+첨부된 물품을 획득 후 삭제가 가능합니다.
+After obtaining the attached article can be deleted.
+*/
+ MSG_FAILED_DELETE_MAIL = 0xa34,
+/*20140423 to latest
+현재 보유 제니 보다 많은 제니를 보낼 수 없습니다.
+You can not send any more zeny.
+*/
+ MSG_FAILED_SEND_MAIL_ZENY = 0xa35,
+/*20140423 to latest
+수수료 : %s Zeny
+Fee: %s Zeny
+*/
+ MSG_SEND_MAIL_COMMISSION = 0xa36,
+/*20140423 to latest
+받는 사람의 이름이 존재하지 않습니다.
+The recipient's name does not exist.
+*/
+ MSG_FAILE_MAIL_RECIEVER_INFO = 0xa37,
+#endif
+#if PACKETVER >= 20140430
+/*20140430 to latest
+E X P : %.1f%% ( basic %.1f%% premium %.1f%% + %s %.1f%%)
+EXP : %.1f%% (Basic %.1f%% Premium %.1f%% + %s %.1f%%)
+*/
+ MSG_TAIWAN_PERSONALINFO_EXPMSG = 0xa38,
+/*20140430 to latest
+DROP : %.1f%% ( basic %.1f%% premium %.1f%% + %s %.1f%%)
+DROP : %.1f%% (Basic %.1f%% Premium %.1f%% + %s %.1f%%)
+*/
+ MSG_TAIWAN_PERSONALINFO_DROPMSG = 0xa39,
+/*20140430 to latest
+DEATH : %.1f%% ( basic %.1f%% premium %.1f%% + %s %.1f%%)
+DEATH: %.1f%% (Basic %.1f%% Premium %.1f%% + %s %.1f%%)
+*/
+ MSG_TAIWAN_PERSONALINFO_DEATHMSG = 0xa3a,
+#endif
+#if PACKETVER >= 20140514
+/*20140514 to 20140528
+보유 가능한 최대 마일리지 : %d
+20140605 to latest
+골드 PC방 마일리지는 최대 %d점까지 모을 수 있습니다.
+You can accumulate points of PC Gold-club up to %d points maximum.
+*/
+ MSG_MILEAGE_HELP = 0xa3b,
+#endif
+#if PACKETVER >= 20140521
+/*20140521 to 20140521
+아이템 버리기가 불 가능한 서버 입니다.
+Items discard is imposible in server.
+20140528 to latest
+해당 서버에서 사용 할 수 없는 기능 입니다
+This function can not be used on the server.
+*/
+ MSG_RESTRAINT_OF_TRADE_1 = 0xa3c,
+/*20140521 to latest
+수래 이용이 불 가능한 서버 입니다.
+Imposible to use in server.
+*/
+ MSG_RESTRAINT_OF_TRADE_2 = 0xa3d,
+/*20140521 to latest
+옥션 이용이 불 가능한 서버 입니다.
+The auction is not available in server.
+*/
+ MSG_RESTRAINT_OF_TRADE_3 = 0xa3e,
+/*20140521 to latest
+거래가 불 가능한 서버 입니다.
+The deal is imposible in server.
+*/
+ MSG_RESTRAINT_OF_TRADE_4 = 0xa3f,
+/*20140521 to 20140521
+아이템 편지 보내기가 불 가능한 서버 입니다.
+20140528 to latest
+아이템 버리기가 불 가능한 서버 입니다.
+Items discard is imposible in server.
+*/
+ MSG_RESTRAINT_OF_TRADE_5 = 0xa40,
+/*20140521 to latest
+상점 판매 기능을 사용할수 없습니다.
+Stores selling features are not available.
+*/
+ MSG_RESTRAINT_OF_TRADE_6 = 0xa41,
+/*20140521 to latest
+소환물의 SP가 부족합니다.
+The SP's summoned enough.
+*/
+ MSG_USESKILL_FAIL_SUMMON_SP_INSUFFICIENT = 0xa42,
+#endif
+#if PACKETVER >= 20140528
+/*20140528 to 20140702
+Weight : %s/%s
+20140709 to latest
+%s/%s
+*/
+ MSG_SEND_MAIL_WEIGHT = 0xa43,
+/*20140528 to latest
+메일 내용의 최대 길이는 1K 이하 입니다.
+The maximum length of the message content is 1K.
+*/
+ MSG_INVALID_MAIL_CONTENTS_INFO = 0xa44,
+/*20140528 to latest
+아이템 첨부 실패
+Failed to attach an item.
+*/
+ MSG_SET_ITEMS_TO_MAIL_FAILED = 0xa45,
+/*20140528 to latest
+메일에 첨부할수 있는 아이템의 무게가 초과되었습니다.
+The weight of the items that can be attached to mail has been exceeded.
+*/
+ MSG_SET_ITEMS_TO_MAIL_OVER_WEIGHT = 0xa46,
+#endif
+#if PACKETVER >= 20140611
+/*20140611 to latest
+이미 서비스 중입니다. 잠시 후 다시 시도해 주세요.
+Is already in service. Please try again in a few minutes.
+*/
+ MSG_DYNAMICNPC_FAIL_DUPLICATENAME = 0xa47,
+#endif
+#if PACKETVER >= 20140618
+/*20140618 to 20140924
+환상의 룰렛창을 열 수 없습니다.
+20141001 to latest
+행운의 룰렛창을 열 수 없습니다.
+Unable to open the window of Lucky Roulette.
+*/
+ MSG_FAILED_OPEN_ROULLETTE = 0xa48,
+/*20140618 to 20140924
+환상의 룰렛창을 닫을 수 없습니다.
+20141001 to latest
+행운의 룰렛창을 닫을 수 없습니다.
+Unable to close the window of the Lucky Roulette.
+*/
+ MSG_FAILED_CLOSE_ROULLETTE = 0xa49,
+/*20140618 to 20140924
+환상의 룰렛을 시작 할 수 없습니다.
+20141001 to latest
+행운의 룰렛을 시작 할 수 없습니다.
+You can not start a roulette wheel of fortune.
+*/
+ MSG_FAILED_GENERATE_ROULLETTE = 0xa4a,
+/*20140618 to 20140924
+환상의 룰렛을 시작하기 위해서는 포인트가 필요합니다.
+20141001 to latest
+행운의 룰렛을 시작하기 위해서는 포인트가 필요합니다.
+Points is required to play Lucky Roulette.
+*/
+ MSG_NOT_ENOUGH_ROULLETTE_POINT = 0xa4b,
+/*20140618 to latest
+당첨된 아이템을 수령할 수 없습니다.
+You can not receive a winning items.
+*/
+ MSG_FAILED_RECV_ITEM = 0xa4c,
+#endif
+#if PACKETVER >= 20140625
+/*20140625 to latest
+인벤토리에 아이템 개수가 초과되었습니다.
+The number of items in the inventory has been exceeded.
+*/
+ MSG_FAILED_RECV_ITEM_OVERCOUNT = 0xa4d,
+/*20140625 to latest
+무게가 초과하였습니다. 소지창의 여유공간을 확보해주세요.
+The weight has been exceeded. Please free up the possesion window.
+*/
+ MSG_FAILED_RECV_ITEM_OVERWEIGHT = 0xa4e,
+/*20140625 to latest
+노점 개설 실패.
+Failed to open stalls.
+*/
+ MSG_MERCHANTSHOP_MAKING_FAIL = 0xa4f,
+/*20140625 to latest
+룰렛이 돌고 있습니다. 경품을 확인 후에 다시 시도해주세요.
+The roulette wheel is spinning. Please try again after checking with prizes.
+*/
+ MSG_FAILED_CLOSE_ROULLETTEWND = 0xa50,
+#endif
+#if PACKETVER >= 20140702
+/*20140702 to 20140917
+환상의 룰렛
+20140924 to latest
+행운의 룰렛
+Lucky Roulette
+*/
+ MSG_ROULLETTE_WND = 0xa51,
+/*20140702 to latest
+아이템 판매 시 소리로 알림
+Notify when item sell out
+*/
+ MSG_SOUNDEFFECT_ITEMSELLWND = 0xa52,
+#endif
+#if PACKETVER >= 20140709
+/*20140709 to latest
+수수료를 확인해주세요.
+Please check the fees.
+*/
+ MSG_FAILED_SEND_MAIL_ITEMS = 0xa53,
+/*20140709 to 20140716
+유저이름확인
+20140723 to latest
+유저이름 확인
+Verify user name
+*/
+ MSG_CHECK_USER_NAME = 0xa54,
+/*20140709 to latest
+삭제 예정
+Schedule deletion
+*/
+ MSG_DELETE_DUE_DATE = 0xa55,
+#endif
+#if PACKETVER >= 20140723
+/*20140723 to latest
+달성과제
+Achievable challenge
+*/
+ MSG_ACHIEVEMENT_SYSTEM = 0xa56,
+/*20140723 to latest
+달성총점
+Achieve overall
+*/
+ MSG_ACHIEVEMENT_TOTAL_SCORE = 0xa57,
+/*20140723 to latest
+달성등급
+Achieve rank
+*/
+ MSG_ACHIEVEMENT_GRADE = 0xa58,
+/*20140723 to 20150225
+다음 보상박스까지 [%5d]점
+20150225 to latest
+다음 달성등급까지 [%5d]점
+The following compensation box until [% 5d] point
+*/
+ MSG_ACHIEVEMENT_SCORE_REQUIRED_TO_REWARD = 0xa59,
+/*20140723 to 20140723
+개요
+Overview
+20140730 to latest
+진척상황
+Progress
+*/
+ MSG_ACHIEVEMENT_SUMMARY_TITLE = 0xa5a,
+/*20140723 to 20140723
+일반
+General
+20140730 to latest
+최근 달성 업적
+Recent Achievements
+*/
+ MSG_ACHIEVEMENT_RECENT_ACHIEVEMENT = 0xa5b,
+/*20140723 to 20140723
+캐릭터
+Role
+20140730 to 20140924
+개다래 열매 품목
+20141001 to latest
+仙貝 품목
+Cracker Item
+*/
+ MSG_CASH_GEDARE1 = 0xa5c,
+/*20140723 to 20140723
+행동
+Action
+20140730 to 20140924
+개다래 열매 : %d / %d GD
+20141001 to latest
+仙貝 : %d / %d
+Cracker : %d / %d
+*/
+ MSG_CASH_GEDARE2 = 0xa5d,
+/*20140723 to 20140723
+전투
+Battle
+20140730 to 20140924
+개다래 열매가 부족합니다.
+20141001 to latest
+仙貝가 부족합니다.
+Cracker is low.
+*/
+ MSG_CASH_GEDARE_FAIL_MONEY = 0xa5e,
+/*20140723 to 20140723
+모험
+Adventure
+20140730 to 20140924
+%s GD
+20141001 to latest
+%s
+%s
+*/
+ MSG_CASH_GEDARE_MONEY = 0xa5f,
+/*20140723 to 20140723
+결투
+Duel
+20140813 to latest
+개요
+Overview
+*/
+ MSG_ACHIEVEMENT_TAB_SUMMARY = 0xa60,
+/*20140723 to 20140723
+수련
+Lily
+20140813 to latest
+일반
+General
+*/
+ MSG_ACHIEVEMENT_TAB_GENERAL = 0xa61,
+/*20140723 to 20140723
+퀘스트
+Quest
+20140813 to latest
+캐릭터
+Role
+*/
+ MSG_ACHIEVEMENT_TAB_GENERAL_CHARACTER = 0xa62,
+/*20140723 to 20140723
+에피소드
+Episode
+20140813 to latest
+행동
+Action
+*/
+ MSG_ACHIEVEMENT_TAB_GENERAL_ACTION = 0xa63,
+/*20140723 to 20140723
+이벤트
+Evt
+20140813 to latest
+기타
+Other
+*/
+ MSG_ACHIEVEMENT_TAB_GENERAL_REST = 0xa64,
+/*20140723 to 20140723
+활동
+20140813 to latest
+모험
+Adventure
+*/
+ MSG_ACHIEVEMENT_TAB_ADVENTURE = 0xa65,
+/*20140723 to 20140723
+커뮤니티
+20140813 to latest
+룬미드가츠
+Rune Midgarts
+*/
+ MSG_ACHIEVEMENT_TAB_ADVENTURE_RUNEMIDGARTS = 0xa66,
+/*20140723 to 20140723
+제련
+Refining
+20140813 to latest
+슈발츠발드
+Schwartzvald
+*/
+ MSG_ACHIEVEMENT_TAB_ADVENTURE_SCHWARZWALD = 0xa67,
+/*20140723 to 20140723
+경제
+20140813 to latest
+아루나펠츠
+Arunafeltz
+*/
+ MSG_ACHIEVEMENT_TAB_ADVENTURE_ARUNAFELTZ = 0xa68,
+/*20140723 to 20140723
+생활
+20140813 to latest
+이계
+Commandment
+*/
+ MSG_ACHIEVEMENT_TAB_ADVENTURE_ANOTHERWORLD = 0xa69,
+/*20140723 to 20140723
+축제
+20140813 to latest
+로컬라이징
+Localizing
+*/
+ MSG_ACHIEVEMENT_TAB_ADVENTURE_LOCALIZING = 0xa6a,
+/*20140723 to 20140723
+위업
+Feat
+20140813 to latest
+던전
+Dungeon
+*/
+ MSG_ACHIEVEMENT_TAB_ADVENTURE_DUNGEON = 0xa6b,
+/*20140723 to 20140723
+달성한 과제
+Achieved challenge
+20140813 to latest
+전투
+Battle
+*/
+ MSG_ACHIEVEMENT_TAB_BATTLE = 0xa6c,
+/*20140723 to 20140723
+진척상황
+Progress
+20140813 to latest
+결투
+Duel
+*/
+ MSG_ACHIEVEMENT_TAB_BATTLE_PVP = 0xa6d,
+/*20140723 to 20140723
+최근 달성 업적
+Recent Achievements
+20140813 to latest
+수련
+Lily
+*/
+ MSG_ACHIEVEMENT_TAB_BATTLE_TRAINING = 0xa6e,
+#endif
+#if PACKETVER >= 20140813
+/*20140813 to latest
+퀘스트
+Quest
+*/
+ MSG_ACHIEVEMENT_TAB_QUEST = 0xa6f,
+/*20140813 to latest
+에피소드
+Episode
+*/
+ MSG_ACHIEVEMENT_TAB_QUEST_EPISODE = 0xa70,
+/*20140813 to latest
+일반
+General
+*/
+ MSG_ACHIEVEMENT_TAB_QUEST_GENERAL = 0xa71,
+/*20140813 to latest
+메모리얼
+Memorial
+*/
+ MSG_ACHIEVEMENT_TAB_MEMORIAL = 0xa72,
+/*20140813 to latest
+미드가르드
+Midgard
+*/
+ MSG_ACHIEVEMENT_TAB_MEMORIAL_MIDGARD = 0xa73,
+/*20140813 to latest
+이계
+Commandment
+*/
+ MSG_ACHIEVEMENT_TAB_MEMORIAL_ANOTHERWORLD = 0xa74,
+/*20140813 to latest
+기타
+Other
+*/
+ MSG_ACHIEVEMENT_TAB_MEMORIAL_REST = 0xa75,
+/*20140813 to latest
+위업
+Feat
+*/
+ MSG_ACHIEVEMENT_TAB_ACHIEVEMENT = 0xa76,
+/*20140813 to latest
+달성한 과제
+Achieved challenge
+*/
+ MSG_ACHIEVEMENT_TAB_TOTAL = 0xa77,
+/*20140813 to latest
+더 이상 추가할 수 없습니다.
+You cannot add anymore.
+*/
+ MSG_FAIL_ADD_ACHIEVEMENT_TRACING = 0xa78,
+/*20140813 to latest
+< %s > 달성하였습니다.
+< %S > achieved.
+*/
+ MSG_NOTICE_COMPLETE_ACHIEVEMENT = 0xa79,
+#endif
+#if PACKETVER >= 20140827
+/*20140827 to latest
+only otp user login allow
+Only OTP users are allowed
+*/
+ MSG_OTPUSER_ONLY = 0xa7a,
+#endif
+#if PACKETVER >= 20140917
+/*20140917 to latest
+이 버튼을 누를 시, 지정된 상품을 받게되며 룰렛은 초기화 됩니다.
+When this button pressed, you will receive a specified initialized roulette item.
+*/
+ MSG_GET_ROULLETE_PRIZE = 0xa7b,
+/*20140917 to latest
+이 버튼을 누를 시, 깜빡이는 화살표의 라인부터 룰렛을 시작 합니다.
+When this button pressed, the flashing arrows from the lines of the roulette wheel begins.
+*/
+ MSG_NOTICE_NEXT_ROULLETE_STAGE = 0xa7c,
+/*20140917 to latest
+칭호
+Style
+*/
+ MSG_TITLE_EQUIPMENT = 0xa7d,
+/*20140917 to latest
+칭호 해제
+Title release
+*/
+ MSG_TAKEOFF_TITLE = 0xa7e,
+/*20140917 to latest
+길드 생성을 할 수 없는 지역입니다.
+Can't create a Guild in this area.
+*/
+ MSG_GUILD_MAKE_GUILD_NOT_PERMITTED_MAP = 0xa7f,
+/*20140917 to latest
+길드 해체를 할 수 없는 지역입니다.
+Can't disband a Guild in this area.
+*/
+ MSG_GUILD_DISORGANIZE_GUILD_NOT_PERMITTED_MAP = 0xa80,
+/*20140917 to latest
+길드 가입을 할 수 없는 지역입니다.
+Can't join a Guild in this area.
+*/
+ MSG_GUILD_JOIN_GUILD_NOT_PERMITTED_MAP = 0xa81,
+/*20140917 to latest
+길드 탈퇴를 할 수 없는 지역입니다.
+Can't leave a Guild in this area.
+*/
+ MSG_GUILD_LEAVE_GUILD_NOT_PERMITTED_MAP = 0xa82,
+/*20140917 to latest
+길드원 추방을 할 수 없는 지역입니다.
+Can't deport a Guild in this area.
+*/
+ MSG_GUILD_EXPEL_GUILD_NOT_PERMITTED_MAP = 0xa83,
+/*20140917 to latest
+길드직위 변경을 할 수 없는 지역입니다.
+Can't change a Guild title in this area
+*/
+ MSG_GUILD_POSITION_CHANGE_NOT_PERMITTED_MAP = 0xa84,
+/*20140917 to latest
+아이템 소지량을 5칸이상 비워주세요
+Please empty at least 5 amount of possession in item window.
+*/
+ MSG_NOT_ENOUGH_SPACE_IN_ITEM_BODY = 0xa85,
+/*20140917 to latest
+E X P : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%%)
+EXP : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%% )
+*/
+ MSG_JPN_PERSONALINFO_EXPMSG = 0xa86,
+/*20140917 to latest
+DROP : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%%)
+DROP : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%% )
+*/
+ MSG_JPN_PERSONALINFO_DROPMSG = 0xa87,
+/*20140917 to latest
+DEATH : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%%)
+DEATH : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%% )
+*/
+ MSG_JPN_PERSONALINFO_DEATHMSG = 0xa88,
+/*20140917 to latest
+첨부할 수 있는 아이템의 갯수가 초과되었습니다.
+The number of items that can be attached is exceeded.
+*/
+ MSG_SET_ITEMS_TO_MAIL_OVERCOUNT = 0xa89,
+/*20140917 to latest
+아이템 구매 시 소리로 알림
+Notify when item purchased
+*/
+ MSG_SOUNDEFFECT_ITEMBUYWND = 0xa8a,
+#endif
+#if PACKETVER >= 20140924
+/*20140924 to latest
+첨부할 수 없는 아이템입니다.
+Unable to attach the items.
+*/
+ MSG_ID_A8B = 0xa8b,
+#endif
+#if PACKETVER >= 20141001
+/*20141001 to latest
+꽝에 당첨되었으므로 다음 상위 단계의 룰렛을 돌리실 수 없습니다.
+Because you can not win a slam room and turn the roulette of the next higher step.
+*/
+ MSG_ID_A8C = 0xa8c,
+/*20141001 to latest
+답장쓰기
+Replying
+*/
+ MSG_ID_A8D = 0xa8d,
+/*20141001 to latest
+내용읽기
+Read more
+*/
+ MSG_ID_A8E = 0xa8e,
+/*20141001 to latest
+메일삭제
+Delete message
+*/
+ MSG_ID_A8F = 0xa8f,
+/*20141001 to latest
+仙貝 : %d
+Crackers : %d
+*/
+ MSG_ID_A90 = 0xa90,
+/*20141001 to latest
+%s %s 仙貝
+%s %s crackers
+*/
+ MSG_ID_A91 = 0xa91,
+/*20141001 to latest
+仙貝
+Crackers
+*/
+ MSG_ID_A92 = 0xa92,
+/*20141001 to latest
+Total : %d 仙貝
+Total : %d Crackers
+*/
+ MSG_ID_A93 = 0xa93,
+/*20141001 to latest
+%d -> %s 仙貝
+%d -> %s Crackers
+*/
+ MSG_ID_A94 = 0xa94,
+/*20141001 to latest
+%s 仙貝
+%s Crackers
+*/
+ MSG_ID_A95 = 0xa95,
+/*20141001 to latest
+ Current 仙貝 : %s
+ Current Crackers : %s
+*/
+ MSG_ID_A96 = 0xa96,
+/*20141001 to latest
+ %s : %s 仙貝
+ %s : %s Crackers
+*/
+ MSG_ID_A97 = 0xa97,
+/*20141001 to latest
+%10s 仙貝
+%10s Crackers
+*/
+ MSG_ID_A98 = 0xa98,
+/*20141001 to latest
+Total : %s 仙貝
+Total : %s Crackers
+*/
+ MSG_ID_A99 = 0xa99,
+/*20141001 to latest
+※수수료 3% / 최소 1仙貝의 수수료 차감
+* Commission 3% / Minimum 1 Crackers comission deducted
+*/
+ MSG_ID_A9A = 0xa9a,
+/*20141001 to latest
+仙貝 입니다.
+The Crackers.
+*/
+ MSG_ID_A9B = 0xa9b,
+/*20141001 to latest
+^0000ff仙貝 이상^000000입니다.
+입력금액이 맞습니까?
+^0000ff more than crackers^000000Did you enter the correct amount?
+*/
+ MSG_ID_A9C = 0xa9c,
+/*20141001 to latest
+10억仙貝이상 안전 확인
+Over than 10billions secure check
+*/
+ MSG_ID_A9D = 0xa9d,
+/*20141001 to latest
+10억 仙貝 이상 입력하셔도 가격은 10억 仙貝로 판매됩니다.
+If you fill over 1 billion, the price will be automatically set as 10 billion Xianbei.
+*/
+ MSG_ID_A9E = 0xa9e,
+/*20141001 to latest
+9,999仙貝 이상 입력하셔도 가격은 9,999仙貝로 판매됩니다.
+If you fill over 9,999 Xianbei, the price will automatically set as 9,999 Xianbei.
+*/
+ MSG_ID_A9F = 0xa9f,
+/*20141001 to latest
+가격이 0 仙貝인 아이템이 존재 합니다. 상점을 열수 없습니다!
+There are items priced 0 Xianbei. You cannot open vending.
+*/
+ MSG_ID_AA0 = 0xaa0,
+/*20141001 to latest
+상대 캐릭터가 최대 보유 仙貝량을 초과하여 거래가 불가능 합니다.
+The opponent is over the Xianbei limit. Trade failed.
+*/
+ MSG_ID_AA1 = 0xaa1,
+/*20141001 to latest
+%s 아이템의 가격을 10억仙貝 이하로 입력해 주세요.
+Please fill out %s item price less than 1 billion Xianbei.
+*/
+ MSG_ID_AA2 = 0xaa2,
+/*20141001 to latest
+%s : %s 仙貝 => %s EA
+%s: %s Xianbei => %s ea
+*/
+ MSG_ID_AA3 = 0xaa3,
+/*20141001 to latest
+제한 금액 : %s 仙貝
+Limited price: %s Xianbei
+*/
+ MSG_ID_AA4 = 0xaa4,
+/*20141001 to latest
+%s %s 仙貝 %d 개
+%s %s %d Xianbei
+*/
+ MSG_ID_AA5 = 0xaa5,
+/*20141001 to latest
+%s %d개를 %d 仙貝에 판매 하였습니다. 수수료는 3%% 입니다.
+%d %s are sold. In total %d Xianbei. 3%% charge will be imposed.
+*/
+ MSG_ID_AA6 = 0xaa6,
+#endif
+#if PACKETVER >= 20141008
+/*20141008 to latest
+RODEX
+*/
+ MSG_ID_AA7 = 0xaa7,
+/*20141008 to latest
+SEND
+*/
+ MSG_ID_AA8 = 0xaa8,
+/*20141008 to latest
+RECEIVE
+*/
+ MSG_ID_AA9 = 0xaa9,
+#endif
+#if PACKETVER >= 20141015
+/*20141015 to latest
+메일 작성창을 닫아주세요.
+Please close the mail compose window.
+*/
+ MSG_ID_AAA = 0xaaa,
+#endif
+#if PACKETVER >= 20141022
+/*20141022 to latest
+서버접근거부(A)
+Server access denied(A)
+*/
+ MSG_ID_AAB = 0xaab,
+/*20141022 to latest
+서버접근거부(B)
+Server access denied(B)
+*/
+ MSG_ID_AAC = 0xaac,
+#endif
+#if PACKETVER >= 20141112
+/*20141112 to latest
+장착된 화살/탄환 을 해제해야합니다.
+Unequipped Arrow/Ammunition.
+*/
+ MSG_ID_AAD = 0xaad,
+#endif
+#if PACKETVER >= 20141119
+/*20141119 to latest
+인벤토리의 아이템이 소모되어 로덱스 쓰기창을 닫습니다.
+Consuming item in inventory will close mail compose window.
+*/
+ MSG_ID_AAE = 0xaae,
+/*20141119 to latest
+소지하신 돋보기가 없습니다.
+Do not have Magnifier.
+*/
+ MSG_ID_AAF = 0xaaf,
+#endif
+#if PACKETVER >= 20141210
+/*20141210 to latest
+아이템을 버릴려면 메일 쓰기창을 닫아주세요.
+Close email window if you want to discard item.
+*/
+ MSG_ID_AB0 = 0xab0,
+/*20141210 to latest
+상대방이 친구 요청중입니다
+The opponent has already requested you to be a friend.
+*/
+ MSG_ID_AB1 = 0xab1,
+#endif
+#if PACKETVER >= 20141217
+/*20141217 to latest
+SCRIPT ERROR AID
+*/
+ MSG_ID_AB2 = 0xab2,
+/*20141217 to 20141231
+
+Errorfile : %s
+ErrorLine : %d 줄
+ErrorContext: %s
+20150107 to latest
+
+Errorfile : %s
+ErrorLine : %d 줄
+ErrorContent:
+*이전 줄 : %s
+*Errorline : %s
+*다음 줄:
+ %s
+
+Errorfile : %s
+ErrorLine : %d item
+ErrorContext: %s
+*/
+ MSG_ID_AB3 = 0xab3,
+#endif
+#if PACKETVER >= 20141223
+/*20141223 to latest
+ ^ff0000해당 아이템을 구매 하시겠습니까? %d포인트 및 %d 仙貝가 차감 됩니다.
+^ff0000Are you sure want to purchase the item? after confirmation will consume %d point and %d crackers.
+*/
+ MSG_ID_AB4 = 0xab4,
+/*20141223 to latest
+닫기
+Close
+*/
+ MSG_ID_AB5 = 0xab5,
+/*20141223 to latest
+퀘스트
+Quest
+*/
+ MSG_ID_AB6 = 0xab6,
+/*20141223 to latest
+퀘스트 아이콘 보기
+View Quest icon
+*/
+ MSG_ID_AB7 = 0xab7,
+/*20141223 to latest
+편의시설
+Facility
+*/
+ MSG_ID_AB8 = 0xab8,
+/*20141223 to latest
+편의시설 아이콘 보기
+View Facility icon
+*/
+ MSG_ID_AB9 = 0xab9,
+/*20141223 to latest
+길드원/파티원
+Guild/Party
+*/
+ MSG_ID_ABA = 0xaba,
+/*20141223 to 20150311
+길드원/파티원 표시
+20150318 to latest
+길드원/파티원 보기
+Show Guild/Party
+*/
+ MSG_ID_ABB = 0xabb,
+/*20141223 to latest
+기록하기
+Record
+*/
+ MSG_ID_ABC = 0xabc,
+/*20141223 to latest
+보스몬스터
+Boss Monster
+*/
+ MSG_ID_ABD = 0xabd,
+/*20141223 to latest
+나
+I
+*/
+ MSG_ID_ABE = 0xabe,
+/*20141223 to latest
+삭제 하시겠습니까?
+Are you sure want to delete it?
+*/
+ MSG_ID_ABF = 0xabf,
+/*20141223 to latest
+퀘스트 NPC
+Quest NPC
+*/
+ MSG_ID_AC0 = 0xac0,
+/*20141223 to latest
+메모할 내용을 기록합니다
+Record content
+*/
+ MSG_ID_AC1 = 0xac1,
+/*20141223 to latest
+저장하기
+Store
+*/
+ MSG_ID_AC2 = 0xac2,
+/*20141223 to latest
+메모하기
+Record
+*/
+ MSG_ID_AC3 = 0xac3,
+/*20141223 to latest
+%s [%d옵션] %d개
+%s [%d Property] %d ea
+*/
+ MSG_ID_AC4 = 0xac4,
+/*20141223 to latest
+%s [%d옵션] %s Zeny
+%s [%d Property] %s Zeny
+*/
+ MSG_ID_AC5 = 0xac5,
+#endif
+#if PACKETVER >= 20141231
+/*20141231 to latest
+%s [%d옵션] %d %s %d -> %s %s
+%s [%d Property] %d %s %d -> %s %s
+*/
+ MSG_ID_AC6 = 0xac6,
+/*20141231 to latest
+%s [%d옵션] %d %s %s %s
+%s [%d Property] %d %s %s %s
+*/
+ MSG_ID_AC7 = 0xac7,
+/*20141231 to latest
+%s [%d옵션] %d -> %s %s
+%s [%d Property] %d -> %s %s
+*/
+ MSG_ID_AC8 = 0xac8,
+/*20141231 to latest
+%s [%d옵션] %s %s
+%s [%d Property] %s %s
+*/
+ MSG_ID_AC9 = 0xac9,
+#endif
+#if PACKETVER >= 20150107
+/*20150107 to latest
+최소 거래 단위 100 仙貝 이상으로 설정 하셔야 합니다.
+The minimum trading unit must be 100 crackers or more.
+*/
+ MSG_ID_ACA = 0xaca,
+#endif
+#if PACKETVER >= 20150114
+/*20150114 to latest
+머리 색
+Hair color
+*/
+ MSG_ID_ACB = 0xacb,
+/*20150114 to latest
+머리 모양
+Hair style
+*/
+ MSG_ID_ACC = 0xacc,
+/*20150114 to latest
+옷 색
+Cloth color
+*/
+ MSG_ID_ACD = 0xacd,
+/*20150114 to latest
+옷 모양
+Cloth pattern
+*/
+ MSG_ID_ACE = 0xace,
+#endif
+#if PACKETVER >= 20150217
+/*20150217 to latest
+지원되지 않는 맵 입니다.
+Unsupported Map.
+*/
+ MSG_ID_ACF = 0xacf,
+#endif
+#if PACKETVER >= 20150304
+/*20150304 to 20150318
+2147483647 Zeny 이하로 입력 하십시오.
+20150325 to latest
+2,147,483,647 Zeny 이하로 입력 하십시오.
+Enter Zeny Below 2,147,483,647.
+*/
+ MSG_ID_AD0 = 0xad0,
+/*20150304 to latest
+1 Zeny 이상 입력 하십시오.
+Please Enter atleast 1 zeny.
+*/
+ MSG_ID_AD1 = 0xad1,
+/*20150304 to latest
+보유한 Zeny 가 없습니다.
+You do not hold any zeny.
+*/
+ MSG_ID_AD2 = 0xad2,
+/*20150304 to latest
+제니 창고
+Zeny Storage
+*/
+ MSG_ID_AD3 = 0xad3,
+/*20150304 to latest
+창고보유액
+in Bank
+*/
+ MSG_ID_AD4 = 0xad4,
+/*20150304 to latest
+소지금
+on hand
+*/
+ MSG_ID_AD5 = 0xad5,
+/*20150304 to latest
+입금
+Deposit
+*/
+ MSG_ID_AD6 = 0xad6,
+/*20150304 to latest
+출금
+Withdraw
+*/
+ MSG_ID_AD7 = 0xad7,
+/*20150304 to latest
+1 z UP
+1z UP
+*/
+ MSG_ID_AD8 = 0xad8,
+/*20150304 to latest
+1 z Down
+1z Down
+*/
+ MSG_ID_AD9 = 0xad9,
+/*20150304 to latest
+Max
+*/
+ MSG_ID_ADA = 0xada,
+/*20150304 to latest
+입력값이 없습니다
+There is no Input value
+*/
+ MSG_ID_ADB = 0xadb,
+/*20150304 to latest
+보유 Zeny 부족
+Not enough zeny
+*/
+ MSG_ID_ADC = 0xadc,
+/*20150304 to latest
+입력값 필요
+Input Required
+*/
+ MSG_ID_ADD = 0xadd,
+/*20150304 to latest
+문자 입력 불가
+Numbers only
+*/
+ MSG_ID_ADE = 0xade,
+/*20150304 to latest
+최대 입력 초과
+Exceeded max input
+*/
+ MSG_ID_ADF = 0xadf,
+/*20150304 to latest
+최소 입력 미만
+Below Minimum Input
+*/
+ MSG_ID_AE0 = 0xae0,
+/*20150304 to latest
+보유 Zeny 부족
+Not enough zeny
+*/
+ MSG_ID_AE1 = 0xae1,
+/*20150304 to latest
+은행 잔고 부족
+Insufficient funds
+*/
+ MSG_ID_AE2 = 0xae2,
+/*20150304 to latest
+최대 보유 Zeny 초과
+Exceeded max zeny
+*/
+ MSG_ID_AE3 = 0xae3,
+#endif
+#if PACKETVER >= 20150311
+/*20150311 to latest
+드롭 X
+Drop X
+*/
+ MSG_ID_AE4 = 0xae4,
+/*20150311 to latest
+창고 X
+Storage X
+*/
+ MSG_ID_AE5 = 0xae5,
+/*20150311 to latest
+카트 X
+Cart X
+*/
+ MSG_ID_AE6 = 0xae6,
+/*20150311 to latest
+메일 X
+Mail X
+*/
+ MSG_ID_AE7 = 0xae7,
+/*20150311 to latest
+교환창 X
+Trade X
+*/
+ MSG_ID_AE8 = 0xae8,
+/*20150311 to latest
+경매장 X
+Auction X
+*/
+ MSG_ID_AE9 = 0xae9,
+/*20150311 to latest
+길드창고 X
+Guild Storage X
+*/
+ MSG_ID_AEA = 0xaea,
+/*20150311 to latest
+NPC에게 판매 X
+Sell to NPC X
+*/
+ MSG_ID_AEB = 0xaeb,
+/*20150311 to latest
+이동제한이 있는 아이템입니다.
+Item moves restriction.
+*/
+ MSG_ID_AEC = 0xaec,
+#endif
+#if PACKETVER >= 20150401
+/*20150401 to latest
+캐릭터를 생성해주세요!
+Please Create a Character!
+*/
+ MSG_ID_AED = 0xaed,
+#endif
+#if PACKETVER >= 20150415
+/*20150415 to latest
+장착된 투사체 아이템을 해제해야 합니다.
+You need to disarm the equipped projectiles.
+*/
+ MSG_ID_AEE = 0xaee,
+#endif
+#if PACKETVER >= 20150513
+/*20150513 to latest
+인원 초과로 메모리얼 던전에 입장 할 수 없습니다
+You cannot enter Memorial Dungeon with excess members
+*/
+ MSG_ID_AEF = 0xaef,
+/*20150513 to latest
+인원수 초과로 인해 메모리얼 던전 입장이 거부되었습니다
+Memorial Dungeon Access was denied due to exceeding number of players
+*/
+ MSG_ID_AF0 = 0xaf0,
+#endif
+#if PACKETVER >= 20150603
+/*20150603 to latest
+%.1f%% ( %s Server: %.1f%% + Premium:%.1f%% )
+*/
+ MSG_ID_AF1 = 0xaf1,
+/*20150603 to latest
+%.1f%% ( %s Server: %.1f%% + Premium:%.1f%% )
+*/
+ MSG_ID_AF2 = 0xaf2,
+/*20150603 to latest
+중복된 아이템이 존재하여 사용이 불가능 합니다.
+Consuming Item denied due to multiple same item.
+*/
+ MSG_ID_AF3 = 0xaf3,
+/*20150603 to latest
+중복된 효과가 존재하여 사용이 불가능 합니다.
+Consuming Item denied due to effect of same consumed item.
+*/
+ MSG_ID_AF4 = 0xaf4,
+#endif
+#if PACKETVER >= 20150701
+/*20150701 to latest
+화면 흔들림 효과 ON
+Flicker Effect ON
+*/
+ MSG_ID_AF5 = 0xaf5,
+/*20150701 to latest
+화면 흔들림 효과 OFF
+Flicker Effect OFF
+*/
+ MSG_ID_AF6 = 0xaf6,
+#endif
+#if PACKETVER >= 20150708
+/*20150708 to latest
+불법 프로그램 발견되었습니다
+Illegal Programs has been detected
+*/
+ MSG_ID_AF7 = 0xaf7,
+#endif
+#if PACKETVER >= 20150722
+/*20150722 to latest
+메일 보내기
+Send Mail
+*/
+ MSG_ID_AF8 = 0xaf8,
+#endif
+#if PACKETVER >= 20150729
+/*20150729 to latest
+E X P : %.1f%% ( basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
+E X P: %.1f%% (Basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
+*/
+ MSG_ID_AF9 = 0xaf9,
+/*20150729 to latest
+DROP : %.1f%% ( basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
+DROP : %.1f%% (Basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
+*/
+ MSG_ID_AFA = 0xafa,
+/*20150729 to latest
+DEATH : %.1f%% ( basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
+DEATH: %.1f%% (Basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
+*/
+ MSG_ID_AFB = 0xafb,
+#endif
+#if PACKETVER >= 20150826
+/*20150826 to 20180919
+ 해당 태그는 이름으로 사용하실 수 없습니다.
+Name with this tag cannot be used.
+20181002 to latest
+ 해당 내용은 이름으로 사용하실 수 없습니다.
+*/
+ MSG_ID_AFC = 0xafc,
+#endif
+#if PACKETVER >= 20150916
+/*20150916 to latest
+???? bdbac5b8c0cfb8b52098de
+Style Shop
+*/
+ MSG_ID_AFD = 0xafd,
+#endif
+#if PACKETVER >= 20151028
+/*20151028 to 20151125
+쿠폰 없음, 상점에서 구매해야해요.
+20151202 to latest
+쿠폰 없음. Cash Shop에서 아이템을 구매해 주세요.
+No serial number, Please visit the store to buy.
+*/
+ MSG_ID_AFE = 0xafe,
+/*20151028 to 20151125
+아이템창의 쿠폰 상자를 열어주세요
+20151202 to latest
+인벤토리에서 아이템 쿠폰 상자를 열어주세요.
+Please turn on Serial item number window box.
+*/
+ MSG_ID_AFF = 0xaff,
+/*20151028 to 20151125
+은행
+Bank
+20151202 to latest
+해당 스타일 정보를 삭제하시겠습니까?
+Bank
+*/
+ MSG_ID_B00 = 0xb00,
+/*20151028 to 20151125
+슬롯이 꽉 찼습니다. 캐릭터를 삭제 후 사용해 주시기 바랍니다
+20151202 to latest
+슬롯이 꽉 찼습니다. 내 스타일에서 캐릭터 삭제 후 사용해 주십시오.
+Slot is full, please delete a character.
+*/
+ MSG_ID_B01 = 0xb01,
+/*20151028 to 20151125
+사용하신 아이템은 되돌릴 수 없습니다. 적용하시겠습니까?
+20151202 to latest
+비용을 지불하고 현재 스타일을 적용하시겠습니까?
+(※ 비용은 반환되지 않습니다.)
+Item cannot be restored, are you sure want to apply it?
+*/
+ MSG_ID_B02 = 0xb02,
+#endif
+#if PACKETVER >= 20151104
+/*20151104 to 20151125
+관심 스타일로 등록되었습니다
+20151202 to latest
+현재 스타일을 저장하였습니다.
+Registered as the following style.
+*/
+ MSG_ID_B03 = 0xb03,
+/*20151104 to 20151125
+은행에 충분한 제니가 있습니다. 먼저 은행으로 가세요.
+20151202 to latest
+보유 Zeny 부족. 은행에 충분한 Zeny가 있습니다.
+There are plenty of golds in the bank, Please go to the bank now.
+*/
+ MSG_ID_B04 = 0xb04,
+#endif
+#if PACKETVER >= 20151118
+/*20151118 to latest
+으로 이동합니다.
+moving...
+*/
+ MSG_ID_B05 = 0xb05,
+/*20151118 to latest
+해당 국가의 영공통과에 대한 허가가 나지 않았습니다.
+You are not allowed to fly over the sovereign airspace of the country.
+*/
+ MSG_ID_B06 = 0xb06,
+/*20151118 to latest
+마나로 대기불안정이 계속되어 비공정 운행이 불가능합니다.
+Airship flight is temporarily unavailable due to atmospheric instability caused by magic.
+*/
+ MSG_ID_B07 = 0xb07,
+/*20151118 to latest
+개인 비공정
+Private airship
+*/
+ MSG_ID_B08 = 0xb08,
+/*20151118 to latest
+잠시 후 다시 시도해주세요.
+Please try again in a moment.
+*/
+ MSG_ID_B09 = 0xb09,
+/*20151118 to latest
+개인 비공정 이용에 필요한 제니가 부족합니다.
+Not enough Zeny to use the private airship.
+*/
+ MSG_ID_B0A = 0xb0a,
+/*20151118 to 20170920
+개인 비공정 이용에 필요한 통조림이 부족합니다.
+20170927 to latest
+개인 비공정 이용에 필요한 아이템이 부족합니다.
+Not enough Cans to use the private airship.
+*/
+ MSG_ID_B0B = 0xb0b,
+/*20151118 to latest
+개인 비공정을 이용할 수 있는 레벨이 아닙니다.
+You cannot meet the level to use the private airship.
+*/
+ MSG_ID_B0C = 0xb0c,
+/*20151118 to latest
+선택한 지점으론 개인비공정이 이동할 수 없습니다.
+You cannot move to the selected point by the private airship.
+*/
+ MSG_ID_B0D = 0xb0d,
+/*20151118 to latest
+현 지점에선 개인비공정을 이용할 수 없습니다.
+You cannot use the private airship where you are now.
+*/
+ MSG_ID_B0E = 0xb0e,
+#endif
+#if PACKETVER >= 20151125
+/*20151125 to 20151125
+악세사리
+Accessory
+20151202 to latest
+액세서리
+Accessory
+*/
+ MSG_ID_B0F = 0xb0f,
+/*20151125 to latest
+세컨드코스튬
+Second costume
+*/
+ MSG_ID_B10 = 0xb10,
+/*20151125 to 20151125
+즐겨찾기
+20151202 to latest
+내 스타일
+Wardrobe
+*/
+ MSG_ID_B11 = 0xb11,
+/*20151125 to 20151125
+염색을 할 수 없는 머리스타일입니다.
+20151202 to latest
+염색할 수 없는 헤어스타일입니다.
+This hairstyle cannot be dyed.
+*/
+ MSG_ID_B12 = 0xb12,
+/*20151125 to 20151125
+화살표를 눌러 마음에 드는 스타일을 선택할 수 있어요.
+20151202 to latest
+화살표를 눌러 마음에 드는 스타일을 선택해 보세요.
+Press an arrow to choose the style you want.
+*/
+ MSG_ID_B13 = 0xb13,
+#endif
+#if PACKETVER >= 20151202
+/*20151202 to 20151202
+스타일 새로운 스타일을 확인해 보세요.
+(※ 액세서리 구매 시 RODEX로 발송됩니다.)
+20151209 to latest
+새로운 스타일을 확인해 보세요.
+(※ 액세서리 구매 시 RODEX로 발송됩니다.)
+Come and see the new styles.
+(Purchased accessories will be sent via RODEX.)
+*/
+ MSG_ID_B14 = 0xb14,
+#endif
+#if PACKETVER >= 20151223
+/*20151223 to latest
+기본 스타일
+Basic style
+*/
+ MSG_ID_B15 = 0xb15,
+#endif
+#if PACKETVER >= 20160106
+/*20160106 to latest
+ 해당 스킬은 BaseLv %d 이상부터 스킬 포인트 투자가 가능합니다.
+You can level up the skill from the base Lv. %d.
+*/
+ MSG_ID_B16 = 0xb16,
+#endif
+#if PACKETVER >= 20160113
+/*20160113 to latest
+해당 특수기호는 이름에 사용하실 수 없습니다.
+Special symbol can't be used in name
+*/
+ MSG_ID_B17 = 0xb17,
+/*20160113 to latest
+MHP가 너무 낮아, 해당 스킬을 사용할 수 없습니다
+MaxHP is to low to use this skill
+*/
+ MSG_ID_B18 = 0xb18,
+/*20160113 to latest
+MSP가 너무 낮아, 해당 스킬을 사용할 수 없습니다
+MaxSP is to low to use this skill
+*/
+ MSG_ID_B19 = 0xb19,
+#endif
+#if PACKETVER >= 20160203
+/*20160203 to latest
+아이템 비교하기
+Compare items
+*/
+ MSG_ID_B1A = 0xb1a,
+/*20160203 to latest
+아이템 버리기 잠금
+Drop lock
+*/
+ MSG_ID_B1B = 0xb1b,
+#endif
+#if PACKETVER >= 20160224
+/*20160224 to latest
+스크린샷 파일이 첨부 되지 않았습니다.
+Screenshots are not attached
+*/
+ MSG_ID_B1C = 0xb1c,
+/*20160224 to 20160511
+SNS통신
+20160518 to 20160817
+TWITTER
+20160824 to latest
+Twitter
+TWITTER
+*/
+ MSG_ID_B1D = 0xb1d,
+/*20160224 to latest
+일반
+General
+*/
+ MSG_ID_B1E = 0xb1e,
+/*20160224 to latest
+공지
+Notice
+*/
+ MSG_ID_B1F = 0xb1f,
+/*20160224 to latest
+반송
+Clear
+*/
+ MSG_ID_B20 = 0xb20,
+/*20160224 to latest
+새로고침
+Refresh
+*/
+ MSG_ID_B21 = 0xb21,
+/*20160224 to latest
+%d분
+%d minute
+*/
+ MSG_ID_B22 = 0xb22,
+/*20160224 to latest
+%d시간
+%d hour
+*/
+ MSG_ID_B23 = 0xb23,
+/*20160224 to latest
+%d일
+%d day
+*/
+ MSG_ID_B24 = 0xb24,
+/*20160224 to latest
+반송됨
+Returned
+*/
+ MSG_ID_B25 = 0xb25,
+/*20160224 to latest
+선택한 메일을 삭제하시겠습니까?
+Do you want to delete the message?
+*/
+ MSG_ID_B26 = 0xb26,
+#endif
+#if PACKETVER >= 20160302
+/*20160302 to latest
+위치표시
+Show information
+*/
+ MSG_ID_B27 = 0xb27,
+/*20160302 to latest
+확대
+Zoom In
+*/
+ MSG_ID_B28 = 0xb28,
+/*20160302 to latest
+축소
+Zoom Out
+*/
+ MSG_ID_B29 = 0xb29,
+/*20160302 to latest
+맵보기
+Maximize
+*/
+ MSG_ID_B2A = 0xb2a,
+/*20160302 to latest
+월드보기
+Show world map
+*/
+ MSG_ID_B2B = 0xb2b,
+/*20160302 to latest
+아이템 소지 종류수
+Total possession item type
+*/
+ MSG_ID_B2C = 0xb2c,
+#endif
+#if PACKETVER >= 20160309
+/*20160309 to latest
+/minimap
+*/
+ MSG_ID_B2D = 0xb2d,
+/*20160309 to latest
+미니맵 버튼을 표시합니다
+Show minimap buttons
+*/
+ MSG_ID_B2E = 0xb2e,
+/*20160309 to latest
+미니맵 버튼을 표시하지 않습니다
+Hide minimap buttons
+*/
+ MSG_ID_B2F = 0xb2f,
+/*20160309 to latest
+길드 접속자 정렬
+Show guild member login status
+*/
+ MSG_ID_B30 = 0xb30,
+#endif
+#if PACKETVER >= 20160323
+/*20160323 to latest
+친밀도 : %s
+Intimacy: %s
+*/
+ MSG_ID_B31 = 0xb31,
+/*20160323 to latest
+확인 전
+Confirmation
+*/
+ MSG_ID_B32 = 0xb32,
+#endif
+#if PACKETVER >= 20160330
+/*20160330 to latest
+파티 이름
+Team name
+*/
+ MSG_ID_B33 = 0xb33,
+/*20160330 to latest
+파티장
+Leader
+*/
+ MSG_ID_B34 = 0xb34,
+/*20160330 to latest
+제한 시간 초과. 클라이언트를 종료합니다.
+Time limit exceeded. Closing the client
+*/
+ MSG_ID_B35 = 0xb35,
+/*20160330 to latest
+잘못된 입력입니다. 클라이언트를 종료합니다.
+Input error. Closing the client
+*/
+ MSG_ID_B36 = 0xb36,
+/*20160330 to latest
+정답 입니다. 보상으로 소정의 버프가 주어집니다.
+Incorrect input. A small buff has given to you
+*/
+ MSG_ID_B37 = 0xb37,
+/*20160330 to latest
+영문 4자, 한글 2자 이상으로 입력해야 합니다.
+Enter 4 english words and 2 chinese words
+*/
+ MSG_ID_B38 = 0xb38,
+/*20160330 to latest
+입력한 답이 [%s]가 맞습니까?
+Your entered answer is [%s]. Is it right?
+*/
+ MSG_ID_B39 = 0xb39,
+/*20160330 to latest
+선택된 이미지가 없습니다.
+Icon is unchecked
+*/
+ MSG_ID_B3A = 0xb3a,
+/*20160330 to latest
+잘못된 입력입니다. (남은 기회 %d번)
+Incorrect input (Remaining chance: %d)
+*/
+ MSG_ID_B3B = 0xb3b,
+/*20160330 to latest
+총 %d명의 유저를 신고하시겠습니까?
+Do you want to announce %d to player?
+*/
+ MSG_ID_B3C = 0xb3c,
+/*20160330 to latest
+유저에게 메시지를 보냈습니다.
+Message has been sent to player
+*/
+ MSG_ID_B3D = 0xb3d,
+/*20160330 to latest
+불법 프로그램 단속에 필요한 데이터가 미등록 상태입니다.
+Needed Data for Query illegal software are not signed.
+*/
+ MSG_ID_B3E = 0xb3e,
+/*20160330 to latest
+이미 매크로 감시중인 유저입니다.
+The player is being monitored.
+*/
+ MSG_ID_B3F = 0xb3f,
+/*20160330 to latest
+매크로가 등록되었습니다..
+Already signed in investigation system.
+*/
+ MSG_ID_B40 = 0xb40,
+/*20160330 to latest
+이미지 등록에 실패하였습니다.
+Failed to store icon.
+*/
+ MSG_ID_B41 = 0xb41,
+/*20160330 to latest
+정답 등록에 실패하였습니다.
+Failed to store replied answer.
+*/
+ MSG_ID_B42 = 0xb42,
+/*20160330 to latest
+안녕하세요. 불법프로그램 단속중입니다.
+Hello, illegal software is being monitored.
+*/
+ MSG_ID_B43 = 0xb43,
+/*20160330 to latest
+지정된 시간내에 아래의 문자를 입력해주세요.
+Please enter the text below within the specified time.
+*/
+ MSG_ID_B44 = 0xb44,
+/*20160330 to latest
+3회 오류시 운영정책에 의거하여 영구블록됩니다.
+According to game regulation, when you enter the wrong text three times, you will get banned.
+*/
+ MSG_ID_B45 = 0xb45,
+/*20160330 to latest
+남은 횟수 : %d
+Remaining chance : %d
+*/
+ MSG_ID_B46 = 0xb46,
+/*20160330 to latest
+캐릭터
+Role
+*/
+ MSG_ID_B47 = 0xb47,
+/*20160330 to latest
+범위
+Range
+*/
+ MSG_ID_B48 = 0xb48,
+/*20160330 to latest
+캐릭터 선택은 좌클릭으로 합니다.
+You use the left mouse button to specify the role
+*/
+ MSG_ID_B49 = 0xb49,
+/*20160330 to latest
+범위 선택은 우클릭으로 합니다.
+You use the left mouse button to specify the range
+*/
+ MSG_ID_B4A = 0xb4a,
+/*20160330 to latest
+범위 크기를 지정하기 위해서는 엔터를 입력해주세요
+Not a valid range, please press Enter
+*/
+ MSG_ID_B4B = 0xb4b,
+/*20160330 to latest
+E X P : %.1f%% ( basic %.1f%% %s %.1f%%)
+*/
+ MSG_ID_B4C = 0xb4c,
+/*20160330 to latest
+DROP : %.1f%% ( basic %.1f%% %s %.1f%%)
+*/
+ MSG_ID_B4D = 0xb4d,
+/*20160330 to latest
+DEATH : %.1f%% ( basic %.1f%% %s %.1f%%)
+*/
+ MSG_ID_B4E = 0xb4e,
+/*20160330 to 20160330
+변경된 캐릭명 %s 로 전송했습니다. 확인 바랍니다
+20160406 to latest
+변경된 캐릭명으로 발송했습니다. 변경된 캐릭명 : %s
+The role name will be sent: %s
+*/
+ MSG_ID_B4F = 0xb4f,
+#endif
+#if PACKETVER >= 20160427
+/*20160427 to latest
+합성에 필요한 재료
+Synthesis of the required materials
+*/
+ MSG_ID_B50 = 0xb50,
+/*20160427 to latest
+조합 재료가 부족해서 조합할 수 없습니다.
+Insufficient synthesis materials
+*/
+ MSG_ID_B51 = 0xb51,
+#endif
+#if PACKETVER >= 20160504
+/*20160504 to latest
+해당 재료는 %d개가 필요합니다.
+Required material %d ea.
+*/
+ MSG_ID_B52 = 0xb52,
+/*20160504 to latest
+제련도가 낮아서 조합할 수 없습니다.
+Refine value is to low for synthesis
+*/
+ MSG_ID_B53 = 0xb53,
+/*20160504 to latest
+모험가중개소에 등록 하시겠습니까?
+Do you want to sign in to the adventurers?
+*/
+ MSG_ID_B54 = 0xb54,
+#endif
+#if PACKETVER >= 20160511
+/*20160511 to latest
+자유롭게 코멘트를 남겨보세요.
+Please leave a message
+*/
+ MSG_ID_B55 = 0xb55,
+#endif
+#if PACKETVER >= 20160518
+/*20160518 to latest
+그림에 보이는 문자를 입력해주세요.
+Please enter the text on the graph
+*/
+ MSG_ID_B56 = 0xb56,
+/*20160518 to latest
+%d초 남았습니다
+%d second left
+*/
+ MSG_ID_B57 = 0xb57,
+/*20160518 to latest
+OTP 인증번호 6자리를 입력해 주세요
+Please enter your 6 identification number.
+*/
+ MSG_ID_B58 = 0xb58,
+/*20160518 to latest
+인증번호
+Identification number.
+*/
+ MSG_ID_B59 = 0xb59,
+/*20160518 to latest
+6자리의 숫자가 아닙니다. 다시 확인해 주세요
+It's not a 6 identification number. Please try again
+*/
+ MSG_ID_B5A = 0xb5a,
+#endif
+#if PACKETVER >= 20160601
+/*20160601 to latest
+이미 삭제된 메일입니다.
+The message has been deleted
+*/
+ MSG_ID_B5B = 0xb5b,
+#endif
+#if PACKETVER >= 20160615
+/*20160615 to latest
+개인 비공정으로 이동할 지역을 선택해주세요.
+Please select the area where the private airship will move
+*/
+ MSG_ID_B5C = 0xb5c,
+/*20160615 to latest
+E X P : %d%% ( basic 100.0%% %s %d%%)
+*/
+ MSG_ID_B5D = 0xb5d,
+/*20160615 to latest
+DROP : %d%% ( basic 100.0%% %s %d%%)
+*/
+ MSG_ID_B5E = 0xb5e,
+/*20160615 to latest
+DEATH : %d%% ( basic 100.0%% %s %d%%)
+*/
+ MSG_ID_B5F = 0xb5f,
+/*20160615 to latest
+목적지로 이동중입니다.
+Move to the destination
+*/
+ MSG_ID_B60 = 0xb60,
+#endif
+#if PACKETVER >= 20160629
+/*20160629 to latest
+[%s] 파일이 존재하지 않아 default AI 로 동작합니다
+The [%s] is not present, the default AI will be used instead.
+*/
+ MSG_ID_B61 = 0xb61,
+/*20160629 to 20160630
+ %.1f%% ( Premium %.1f%% + %s %.1f%%)
+20160706 to latest
+ %.1f%% ( Basic 100.0%% + Premium %.1f%% + %s %.1f%%)
+%.1f%% ( Basic 100.0%% + Premium %.1f%% + %s %.1f%%)
+*/
+ MSG_ID_B62 = 0xb62,
+#endif
+#if PACKETVER >= 20160706
+/*20160706 to latest
+이 자리에 노점을 세우시겠습니까?
+Would you like to open a shop at this location?
+*/
+ MSG_ID_B63 = 0xb63,
+#endif
+#if PACKETVER >= 20160713
+/*20160713 to latest
+도람족은 해당 의상을 입을 수 없습니다.
+Doram race can't wear this clothes
+*/
+ MSG_ID_B64 = 0xb64,
+/*20160713 to 20160727
+구입한 물건이 로덱스로 배송되었습니다.
+20160803 to latest
+판매 노점에서 거래한 아이템이 로덱스로 배송되었습니다.
+Props open-air store sales will be traded in RODEX
+*/
+ MSG_ID_B65 = 0xb65,
+/*20160713 to latest
+30,000 z
+*/
+ MSG_ID_B66 = 0xb66,
+/*20160713 to latest
+말랑도 특산 통조림 100개
+Malangdo Special Can 100 pc
+*/
+ MSG_ID_B67 = 0xb67,
+#endif
+#if PACKETVER >= 20160720
+/*20160720 to latest
+무게가 80%를 초과하여 진행할 수 없습니다.
+Cannot carry anymore because weight limit over 80%
+*/
+ MSG_ID_B68 = 0xb68,
+/*20160720 to latest
+판매되지 못한 상품이 로덱스로 배송되었습니다.
+Unsold items are sent to RODEX
+*/
+ MSG_ID_B69 = 0xb69,
+#endif
+#if PACKETVER >= 20160727
+/*20160727 to latest
+장착 모습
+Preview
+*/
+ MSG_ID_B6A = 0xb6a,
+/*20160727 to latest
+길드마스터 위임
+Assign Guild Leader
+*/
+ MSG_ID_B6B = 0xb6b,
+/*20160727 to latest
+정말로 %s님께 길드마스터를 위임하시겠습니까? 위임 후 당신의 지위는 %s님과 지위가 바뀌게 됩니다.
+Are sure want to assign %s as guild leader? After assigned your position will become %s
+*/
+ MSG_ID_B6C = 0xb6c,
+/*20160727 to latest
+철회
+Cancel
+*/
+ MSG_ID_B6D = 0xb6d,
+/*20160727 to latest
+노점을 철수하시겠습니까?
+Do you want to close the shop?
+*/
+ MSG_ID_B6E = 0xb6e,
+/*20160727 to latest
+%02d일 %02d시간 %02d분 %02d초
+%02d day %02d hour %02d minute %02d second
+*/
+ MSG_ID_B6F = 0xb6f,
+/*20160727 to latest
+접속불가
+Unable to sign in
+*/
+ MSG_ID_B70 = 0xb70,
+/*20160727 to latest
+접속가능인원을 초과하여 접속이 불가능 합니다.
+Unable to sign in because the maximum number of sign-in is exceeded
+*/
+ MSG_ID_B71 = 0xb71,
+/*20160727 to latest
+노점을 설치할 위치를 선택해주세요.
+Please select a location for your shop
+*/
+ MSG_ID_B72 = 0xb72,
+/*20160727 to latest
+펫 이름을 ^0000ff^0000ff %s^000000^000000 로 수정합니다. 계속 하시겠습니까?
+Pet name will be changed to ^0000ff^0000ff %s^000000^000000, do you want to continue?
+*/
+ MSG_ID_B73 = 0xb73,
+#endif
+#if PACKETVER >= 20160803
+/*20160803 to 20160803
+판매 일시 :
+20160810 to latest
+거래 일시 :
+Trade date :
+*/
+ MSG_ID_B74 = 0xb74,
+/*20160803 to 20160803
+판매 아이템 :
+20160810 to latest
+거래 아이템 :
+Trade item :
+*/
+ MSG_ID_B75 = 0xb75,
+/*20160803 to 20160803
+판매 수량 :
+20160810 to latest
+거래 수량 :
+Trade quantity :
+*/
+ MSG_ID_B76 = 0xb76,
+/*20160803 to 20160803
+판매 단가 :
+20160810 to latest
+거래 단가 :
+Trade price :
+*/
+ MSG_ID_B77 = 0xb77,
+/*20160803 to 20160803
+판매 금액 :
+20160810 to latest
+거래 금액 :
+Total trade :
+*/
+ MSG_ID_B78 = 0xb78,
+/*20160803 to latest
+노점 판매 아이템
+Open vending sales agent
+*/
+ MSG_ID_B79 = 0xb79,
+/*20160803 to latest
+노점 구매 아이템
+Open vending purchase agent
+*/
+ MSG_ID_B7A = 0xb7a,
+/*20160803 to latest
+판매 노점 아르바이트 종료
+Close vending sales agent
+*/
+ MSG_ID_B7B = 0xb7b,
+/*20160803 to latest
+구매 노점 아르바이트 종료
+Close vending purchase agent
+*/
+ MSG_ID_B7C = 0xb7c,
+/*20160803 to latest
+남은 금액:
+Balance:
+*/
+ MSG_ID_B7D = 0xb7d,
+/*20160803 to latest
+아이템 리스트:
+Item list:
+*/
+ MSG_ID_B7E = 0xb7e,
+/*20160803 to latest
+노점 아르바이트생
+Vending agent
+*/
+ MSG_ID_B7F = 0xb7f,
+/*20160803 to latest
+반환 아이템:
+Returned item:
+*/
+ MSG_ID_B80 = 0xb80,
+/*20160803 to latest
+반환 수량:
+Returned quantity:
+*/
+ MSG_ID_B81 = 0xb81,
+/*20160803 to latest
+반환 일시:
+Returned date:
+*/
+ MSG_ID_B82 = 0xb82,
+/*20160803 to latest
+구매 노점에서 거래한 금액이 로덱스로 배송되었습니다
+Total trade will be sent to RODEX
+*/
+ MSG_ID_B83 = 0xb83,
+/*20160803 to latest
+사용할 수 없는 이름입니다.
+Name isn't available
+*/
+ MSG_ID_B84 = 0xb84,
+#endif
+#if PACKETVER >= 20160817
+/*20160817 to latest
+상품이 도착했습니다.
+Item has been delivered
+*/
+ MSG_ID_B85 = 0xb85,
+/*20160817 to latest
+구입해주셔서 감사합니다.
+Thank you for purchasing
+*/
+ MSG_ID_B86 = 0xb86,
+#endif
+#if PACKETVER >= 20160824
+/*20160824 to latest
+NPC에게 아이템을 판매하지 않습니다.
+Press again to unlock
+*/
+ MSG_ID_B87 = 0xb87,
+/*20160824 to latest
+아이템 판매 잠금
+Lock from NPC selling
+*/
+ MSG_ID_B88 = 0xb88,
+/*20160824 to latest
+근처에서 소환가능 위치를 찾을수 없습니다.
+There is no callable location nearby
+*/
+ MSG_ID_B89 = 0xb89,
+/*20160824 to latest
+전체 화면 캡쳐
+Capture full screens
+*/
+ MSG_ID_B8A = 0xb8a,
+/*20160824 to latest
+부분 화면 캡쳐
+Capture part of screen
+*/
+ MSG_ID_B8B = 0xb8b,
+/*20160824 to latest
+보내기
+Send
+*/
+ MSG_ID_B8C = 0xb8c,
+/*20160824 to latest
+가족 분과 담당자
+Family Affairs agent
+*/
+ MSG_ID_B8D = 0xb8d,
+/*20160824 to latest
+가족 사항 변동 안내
+Acknowledgement of family member registrations.
+*/
+ MSG_ID_B8E = 0xb8e,
+/*20160824 to latest
+안녕하십니까.
+
+금일 "%s"님과 "%s"님의 자녀인 "%s"님이 독립하여 단독 세대를 구성하였습니다.
+
+이에 서면으로 안내를 드립니다.
+
+가족 관계 확인을 원하시는 분은 프론테라 동사무소의 담당 직원에게 문의하시기 바랍니다.
+
+감사합니다.
+Dear whom it may concern.
+
+ Today, \"%s\" and \"%s\" 's son/daughter \"%s\" has fully separated and independent from your member of family.
+
+Hereat, we inform you in writing.
+
+Please contact to Prontera Family Affairs if you have any enquiries.
+
+Thank you.
+*/
+ MSG_ID_B8F = 0xb8f,
+#endif
+#if PACKETVER >= 20160831
+/*20160831 to latest
+장착
+Equip
+*/
+ MSG_ID_B90 = 0xb90,
+/*20160831 to latest
+이미지 없음
+No image
+*/
+ MSG_ID_B91 = 0xb91,
+#endif
+#if PACKETVER >= 20160907
+/*20160907 to 20160921
+%s은(는) 현재 호출을 차단한 상태입니다.
+20160928 to latest
+[%s]은(는) 현재 호출을 차단한 상태입니다.
+[%s] is blocking Call Massage.
+*/
+ MSG_ID_B92 = 0xb92,
+#endif
+#if PACKETVER >= 20160913
+/*20160913 to latest
+현재 공성전이 진행중이므로, 길드마스터를 위임 할 수 없습니다.
+Currently in WoE hours, unable to delegate Guild leader
+*/
+ MSG_ID_B93 = 0xb93,
+/*20160913 to latest
+현재 길드장 위임을 받은지 만 하루가 지나지 않아, 길드장을 위임할 수 없습니다.
+You have to wait for one day before delegating a new Guild leader
+*/
+ MSG_ID_B94 = 0xb94,
+/*20160913 to latest
+아이가 되면 전승을 할 수 없고 스텟의 제한이 있으며 HP와 SP가 줄어듭니다.
+그래도 괜찮습니까?
+When adopted, character will not able to transcend, maximum stats will be limited, MaxHP and MaxSP will be reduced.
+Are you sure you want to continue?
+*/
+ MSG_ID_B95 = 0xb95,
+/*20160913 to latest
+제련
+Refining
+*/
+ MSG_ID_B96 = 0xb96,
+/*20160913 to latest
+대장장이의 축복을 사용중입니다.
+Use Blacksmith's Blessing
+*/
+ MSG_ID_B97 = 0xb97,
+/*20160913 to latest
+제니가 부족합니다.
+Insufficient zeny
+*/
+ MSG_ID_B98 = 0xb98,
+/*20160913 to latest
+대장장이의 축복 개수가 부족합니다.
+Not enough Blacksmith's Blessing
+*/
+ MSG_ID_B99 = 0xb99,
+/*20160913 to latest
+해당 장비는 제련이 불가능합니다.
+This equipment can not be refined
+*/
+ MSG_ID_B9A = 0xb9a,
+/*20160913 to 20170621
+제련 성공!
+20170628 to latest
+제련 성공
+Upgrade success!
+*/
+ MSG_ID_B9B = 0xb9b,
+/*20160913 to 20170621
+제련 실패!
+20170628 to latest
+제련 실패
+Upgrade failed!
+*/
+ MSG_ID_B9C = 0xb9c,
+/*20160913 to latest
+돌아가기
+Back
+*/
+ MSG_ID_B9D = 0xb9d,
+/*20160913 to latest
+성공
+Success
+*/
+ MSG_ID_B9E = 0xb9e,
+/*20160913 to latest
+원래대로
+Return
+*/
+ MSG_ID_B9F = 0xb9f,
+#endif
+#if PACKETVER >= 20160921
+/*20160921 to latest
+씨와의
+With Mr/Miss
+*/
+ MSG_ID_BA0 = 0xba0,
+/*20160921 to latest
+호문클루스의 이름을 ^0000ff^0000ff %s^000000^000000 로 수정합니다. 계속 하시겠습니까?
+The Homunculus's name will be changed to^0000ff^0000ff %s^000000^000000, Are you sure?
+*/
+ MSG_ID_BA1 = 0xba1,
+#endif
+#if PACKETVER >= 20160928
+/*20160928 to latest
+호출이 허용된 상태입니다. (호출 기능 ON)
+Call function is ON
+*/
+ MSG_ID_BA2 = 0xba2,
+/*20160928 to latest
+호출이 차단된 상태입니다. (호출 기능 OFF)
+Call function is OFF
+*/
+ MSG_ID_BA3 = 0xba3,
+/*20160928 to latest
+호출 메시지 표시
+Display Call messages
+*/
+ MSG_ID_BA4 = 0xba4,
+/*20160928 to latest
+해당 캐릭터가 현재 노점 아이템을 사용 중이므로 삭제할 수 없습니다.
+This character is currently opening a shop and can't be deleted
+*/
+ MSG_ID_BA5 = 0xba5,
+/*20160928 to latest
+이미 동일한 노점 NPC가 설치 중입니다.
+The same vend shop NPC has been set up
+*/
+ MSG_ID_BA6 = 0xba6,
+/*20160928 to latest
+노점을 설치할 수 없는 위치입니다.
+Opening shop is not allowed on this location
+*/
+ MSG_ID_BA7 = 0xba7,
+/*20160928 to latest
+다른 캐릭터가 있는 위치에는 노점을 설치할 수 없습니다.
+Opening shop is not allowed when there is other character
+*/
+ MSG_ID_BA8 = 0xba8,
+#endif
+#if PACKETVER >= 20161005
+/*20161005 to latest
+펫 먹이주기가 실패했습니다. 로덱스 작성창을 닫아주세요.
+Failed to feed pet, please close RODEX window
+*/
+ MSG_ID_BA9 = 0xba9,
+/*20161005 to latest
+장비 세트 설정
+Set item setting
+*/
+ MSG_ID_BAA = 0xbaa,
+/*20161005 to latest
+장착 하기
+Equip
+*/
+ MSG_ID_BAB = 0xbab,
+#endif
+#if PACKETVER >= 20161019
+/*20161019 to latest
+제련 실패시 장비가 사라집니다.
+Equipment will dissapear when refine fails
+*/
+ MSG_ID_BAC = 0xbac,
+/*20161019 to latest
+제련 실패시 장비의 제련도가 내려갑니다.
+Equipment's refine level will decreased when refine fails
+*/
+ MSG_ID_BAD = 0xbad,
+/*20161019 to latest
+제련 실패시 장비의 제련도가 내려가거나 사라질 수 있습니다.
+Equipment will dissapear or refine level will decreased when refine fails
+*/
+ MSG_ID_BAE = 0xbae,
+#endif
+#if PACKETVER >= 20161026
+/*20161026 to latest
+제련 중에는 로덱스를 사용할 수 없습니다. 로덱스를 강제 종료하였습니다.
+You cannot use RODEX while refining. RODEX has closed.
+*/
+ MSG_ID_BAF = 0xbaf,
+/*20161026 to latest
+제련 중에는 로덱스를 사용할 수 없습니다.
+You cannot use RODEX while refining.
+*/
+ MSG_ID_BB0 = 0xbb0,
+/*20161026 to latest
+제련을 진행하려면 다른 창을 닫아주세요.
+Please close other windows to continue.
+*/
+ MSG_ID_BB1 = 0xbb1,
+/*20161026 to latest
+오오라가 정상적으로 표시됩니다 [오오라 ON]
+Turn On Aura [Aura ON]
+*/
+ MSG_ID_BB2 = 0xbb2,
+/*20161026 to latest
+오오라가 표시되지 않습니다 [오오라 OFF]
+Turn Off Aura [Auta OFF]
+*/
+ MSG_ID_BB3 = 0xbb3,
+/*20161026 to latest
+오오라가 Off 상태입니다. Off 를 해제하고 시도해 주세요
+Aura is turned off. Please turn it on and try again
+*/
+ MSG_ID_BB4 = 0xbb4,
+/*20161026 to latest
+스킬 발동시 최소 %d개의 탄알이 필요합니다.
+You need %d bullet(s) to activate the skill.
+*/
+ MSG_ID_BB5 = 0xbb5,
+/*20161026 to latest
+장비 세트를 변경하시겠습니까?
+Do you want to change the equipment set?
+*/
+ MSG_ID_BB6 = 0xbb6,
+/*20161026 to latest
+죽은 상태에서는 할 수 없습니다
+You can not do it while you are dead.
+*/
+ MSG_ID_BB7 = 0xbb7,
+/*20161026 to latest
+캐스팅 도중에는 할 수 없습니다
+You can not do it while casting
+*/
+ MSG_ID_BB8 = 0xbb8,
+/*20161026 to latest
+거래 도중에는 할 수 없습니다
+You can not do it while trading
+*/
+ MSG_ID_BB9 = 0xbb9,
+/*20161026 to latest
+노점 개설 도중에는 할 수 없습니다
+You can not do it while opening vendor
+*/
+ MSG_ID_BBA = 0xbba,
+/*20161026 to latest
+NPC 이용중에는 할 수 없습니다
+You can not do it while using NPC
+*/
+ MSG_ID_BBB = 0xbbb,
+/*20161026 to latest
+채팅방 이용중에는 할 수 없습니다
+You can not do it while using chatting room
+*/
+ MSG_ID_BBC = 0xbbc,
+/*20161026 to latest
+파티원 전원이 접속 상태가 아닙니다.
+Party members are not connected.
+*/
+ MSG_ID_BBD = 0xbbd,
+/*20161026 to latest
+스킬 발동시 최소 %d개의 화살이 필요합니다.
+You need %d arrow(s) to activate the skill.
+*/
+ MSG_ID_BBE = 0xbbe,
+#endif
+#if PACKETVER >= 20161102
+/*20161102 to latest
+아이템 정렬
+Align items
+*/
+ MSG_ID_BBF = 0xbbf,
+/*20161102 to latest
+아이템을 버리려면 장비 설정 창을 닫아주세요.
+Please close item setting window to dump item.
+*/
+ MSG_ID_BC0 = 0xbc0,
+#endif
+#if PACKETVER >= 20161109
+/*20161109 to latest
+교체 할 수 있는 아이템이 없습니다.
+There is no item to replace.
+*/
+ MSG_ID_BC1 = 0xbc1,
+/*20161109 to latest
+삭제된 캐릭터
+Deleted character
+*/
+ MSG_ID_BC2 = 0xbc2,
+/*20161109 to 20161109
+제련 중에는 은행을 사용할 수 없습니다. 로덱스를 강제 종료하였습니다.
+20161116 to latest
+%Y.%m.%d
+*/
+ MSG_ID_BC3 = 0xbc3,
+/*20161109 to 20161109
+제련 중에는 은행을 사용할 수 없습니다.
+You can not use bank while refining.
+20161116 to latest
+접속일: %s
+Access date: %s
+*/
+ MSG_ID_BC4 = 0xbc4,
+#endif
+#if PACKETVER >= 20161116
+/*20161116 to latest
+제련 중에는 은행을 사용할 수 없습니다. 은행을 강제 종료하였습니다.
+You can not use bank while refining. Bank has closed.
+*/
+ MSG_ID_BC5 = 0xbc5,
+/*20161116 to latest
+제련 중에는 은행을 사용할 수 없습니다.
+You can not use bank while refining.
+*/
+ MSG_ID_BC6 = 0xbc6,
+/*20161116 to latest
+장비 세트 설정 중인 아이템입니다.
+The item has bind to set equipment.
+*/
+ MSG_ID_BC7 = 0xbc7,
+#endif
+#if PACKETVER >= 20161123
+/*20161123 to latest
+인간
+Human
+*/
+ MSG_ID_BC8 = 0xbc8,
+/*20161123 to latest
+검사, 법사, 상인, 복사, 도둑, 궁수
+Swordman, Mage, Merchant, Acolyte, Thief, Archer
+*/
+ MSG_ID_BC9 = 0xbc9,
+/*20161123 to latest
+도람
+Doram
+*/
+ MSG_ID_BCA = 0xbca,
+/*20161123 to latest
+소환사
+Summoner
+*/
+ MSG_ID_BCB = 0xbcb,
+/*20161123 to latest
+미드가르드 대륙의 대표 종족. 무한한 잠재력과 뛰어난 적응력으로 문제 해결에 탁월한 것이 특징이다.
+Delegate race of Midgard. Very talented race to solve a problem with inifite potential and great adaptability.
+*/
+ MSG_ID_BCC = 0xbcc,
+/*20161123 to latest
+파-스타 대륙의 대표적인 종족 중 하나로, 선천적으로 호기심이 강하고 발랄한 성격을 지녔다.
+One of delegate race of Far-star continent with natural born curiosity and sparky character.
+*/
+ MSG_ID_BCD = 0xbcd,
+/*20161123 to latest
+소지 한계량이 70%를 초과하거나, 인벤토리에 10칸 이상의 여유 공간이 부족한 상태입니다.
+Weight limit has reached toover 70%. Or less then 10 invenrory space.
+*/
+ MSG_ID_BCE = 0xbce,
+/*20161123 to latest
+C
+*/
+ MSG_ID_BCF = 0xbcf,
+/*20161123 to latest
+C
+*/
+ MSG_ID_BD0 = 0xbd0,
+/*20161123 to latest
+다른 일을 하는 중입니다.
+Doing in other activity.
+*/
+ MSG_ID_BD1 = 0xbd1,
+/*20161123 to latest
+오버히트 리미트 : %d
+Overheat limit : %d
+*/
+ MSG_ID_BD2 = 0xbd2,
+#endif
+#if PACKETVER >= 20161130
+/*20161130 to latest
+메모리얼 던전 이용 중엔 초대 및 탈퇴가 되지 않습니다.
+You cannot invite or withdraw while in memorial dungeon.
+*/
+ MSG_ID_BD3 = 0xbd3,
+/*20161130 to latest
+비속어가 포함되어있습니다.
+다시 한번 확인해주세요.
+Expletive has detected.
+Please check again.
+*/
+ MSG_ID_BD4 = 0xbd4,
+#endif
+#if PACKETVER >= 20161207
+/*20161207 to latest
+아이디는 %d자 이상 입력해주세요. 사용자 계정이 없으신분들은 왼쪽 하단의 [신청] 버튼을 눌러 계정을 만드시기 바랍니다.
+Please enter over %d characters. If you don't have user account, please click [Register] button on the bottom left.
+*/
+ MSG_ID_BD5 = 0xbd5,
+/*20161207 to latest
+비밀번호는 %d자 이상 입력해주세요.
+Please enter the password over %d characters.
+*/
+ MSG_ID_BD6 = 0xbd6,
+/*20161207 to latest
+진행중이던 작업을 종료후 다시 시도하세요.
+Please finish your current work and try it again.
+*/
+ MSG_ID_BD7 = 0xbd7,
+/*20161207 to latest
+%.1f%% (PC방 %.1f%% + TPLUS %.1f%% + %s서버 %.1f%%)
+%.1f%% (Internet-Cafe %.1f%% + TPLUS %.1f%% + %sServer %.1f%%)
+*/
+ MSG_ID_BD8 = 0xbd8,
+/*20161207 to latest
+아이템을 등록할 수 없습니다
+The item cannot be registered.
+*/
+ MSG_ID_BD9 = 0xbd9,
+#endif
+#if PACKETVER >= 20161214
+/*20161214 to latest
+/100
+/300
+*/
+ MSG_ID_BDA = 0xbda,
+/*20161214 to latest
+/2000
+/4000
+*/
+ MSG_ID_BDB = 0xbdb,
+/*20161214 to latest
+https://member.gnjoy.com.tw/mRO_SecPwd.aspx
+*/
+ MSG_ID_BDC = 0xbdc,
+/*20161214 to latest
+등록할 emblem이 존재하지 않습니다. emblem 폴더에 파일을 넣고 시도해 주세요
+The emblem you want to register does not exist. Insert it in the emblem file and try again
+*/
+ MSG_ID_BDD = 0xbdd,
+/*20161214 to 20170315
+#라그나로크 #Ragnarok
+20170322 to latest
+라그나로크
+Ragnarok Ragnarok
+*/
+ MSG_ID_BDE = 0xbde,
+/*20161214 to 20161214
+스크린샷에 자신 이외의 캐리터명이 표시되는 경우나 채팅창에 자신 이외의 캐릭터 대화가 표시되는 경우, 해당 사용자에게 반드시 양해를 구한 후 사용 해 주시기 바랍니다.
+20161221 to latest
+스크린샷에 자신 이외의 캐릭터명이 표시되는 경우나 채팅창에 자신 이외의 캐릭터 대화가 표시되는 경우, 해당 사용자에게 반드시 양해를 구한 후 사용 해 주시기 바랍니다.
+If your screenshot or chat box includes other users besides yourself, first ask permission from the other users before using it.
+*/
+ MSG_ID_BDF = 0xbdf,
+#endif
+#if PACKETVER >= 20161221
+/*20161221 to latest
+현재 상태에선 장비를 교체할 수 없습니다
+You cannot change equipment in current condition
+*/
+ MSG_ID_BE0 = 0xbe0,
+/*20161221 to latest
+해당 유저의 이름을 가져오고 있습니다
+Getting the user's name
+*/
+ MSG_ID_BE1 = 0xbe1,
+/*20161221 to latest
+해당 메시지는 사용 할 수 없는 내용을 포함하고 있습니다.
+This message includes contents you are not able to use.
+*/
+ MSG_ID_BE2 = 0xbe2,
+/*20161221 to latest
+아이템 구입에 실패하였습니다.
+Failed to purchase item.
+*/
+ MSG_ID_BE3 = 0xbe3,
+/*20161221 to latest
+신분증번호 하위 7자리가 일치하지 않습니다.
+The lower numbers of the identification number does not match.
+*/
+ MSG_ID_BE4 = 0xbe4,
+#endif
+#if PACKETVER >= 20161228
+/*20161228 to latest
+닫기
+Close
+*/
+ MSG_ID_BE5 = 0xbe5,
+/*20161228 to latest
+규칙
+Rule
+*/
+ MSG_ID_BE6 = 0xbe6,
+/*20161228 to latest
+1회 구매
+Purchase 1x
+*/
+ MSG_ID_BE7 = 0xbe7,
+/*20161228 to latest
+10회 구매
+Purchase 10x
+*/
+ MSG_ID_BE8 = 0xbe8,
+/*20161228 to latest
+100회 구매
+Purchase 100x
+*/
+ MSG_ID_BE9 = 0xbe9,
+/*20161228 to latest
+1등 당첨
+Win 1st prize
+*/
+ MSG_ID_BEA = 0xbea,
+/*20161228 to latest
+2등 당첨
+Win 2nd prize
+*/
+ MSG_ID_BEB = 0xbeb,
+/*20161228 to latest
+3등 당첨
+Win 3rd prize
+*/
+ MSG_ID_BEC = 0xbec,
+/*20161228 to 20170111
+복권 구매 금액
+Lottery purchase amount
+20170118 to latest
+현재 사용하지 않음
+Currently not in use
+*/
+ MSG_ID_BED = 0xbed,
+/*20161228 to 20170111
+참여 캐릭터
+Participating character
+20170118 to latest
+현재 사용하지 않음
+Currently not in use
+*/
+ MSG_ID_BEE = 0xbee,
+/*20161228 to latest
+제니 로또 당첨자
+Zeny Lottery winner
+*/
+ MSG_ID_BEF = 0xbef,
+/*20161228 to 20170111
+복권 진행일
+20170118 to latest
+복권 구매 금액
+Lottery purchase amount
+*/
+ MSG_ID_BF0 = 0xbf0,
+/*20161228 to latest
+참여 캐릭터
+Participating character
+*/
+ MSG_ID_BF1 = 0xbf1,
+/*20161228 to latest
+1등
+1st Price
+*/
+ MSG_ID_BF2 = 0xbf2,
+/*20161228 to latest
+2등
+2nd Price
+*/
+ MSG_ID_BF3 = 0xbf3,
+/*20161228 to latest
+3등
+3rd Price
+*/
+ MSG_ID_BF4 = 0xbf4,
+/*20161228 to latest
+구매 보상 아이템
+Purchase Reward Item
+*/
+ MSG_ID_BF5 = 0xbf5,
+/*20161228 to latest
+^1a1a1a복권 ^b%d개^/b를
+^4435b2%dZeny^1a1a1a로
+구매하시겠습니까?
+^1a1a1a Do you want to purchase ^b%d lottery tickets for
+^4435b2%dZeny^1a1a1a?
+*/
+ MSG_ID_BF6 = 0xbf6,
+/*20161228 to latest
+복권을 성공적으로 구매하였습니다.
+You have successfully purchased the lottery ticket.
+*/
+ MSG_ID_BF7 = 0xbf7,
+/*20161228 to latest
+소지 제니가 부족하여 복권을 구매 할 수 없습니다.
+Not enough Zeny to purchase lottey ticket.
+*/
+ MSG_ID_BF8 = 0xbf8,
+/*20161228 to latest
+최대 복권 구매 횟수는 1000회를 초과 할 수 없습니다.
+You are only able to purchase the tickets upto 1000 times.
+*/
+ MSG_ID_BF9 = 0xbf9,
+/*20161228 to latest
+예
+Yes
+*/
+ MSG_ID_BFA = 0xbfa,
+/*20161228 to latest
+아니요
+No
+*/
+ MSG_ID_BFB = 0xbfb,
+/*20161228 to latest
+HP
+*/
+ MSG_ID_BFC = 0xbfc,
+/*20161228 to latest
+SP
+*/
+ MSG_ID_BFD = 0xbfd,
+/*20161228 to latest
+Lv
+*/
+ MSG_ID_BFE = 0xbfe,
+/*20161228 to latest
+Lv
+*/
+ MSG_ID_BFF = 0xbff,
+/*20161228 to latest
+Exp
+*/
+ MSG_ID_C00 = 0xc00,
+/*20161228 to latest
+ all on
+*/
+ MSG_ID_C01 = 0xc01,
+/*20161228 to latest
+Play Replay Flie
+*/
+ MSG_ID_C02 = 0xc02,
+/*20161228 to latest
+P
+*/
+ MSG_ID_C03 = 0xc03,
+/*20161228 to latest
+Total
+*/
+ MSG_ID_C04 = 0xc04,
+/*20161228 to latest
+Basicinfo
+*/
+ MSG_ID_C05 = 0xc05,
+/*20161228 to latest
+Equip
+*/
+ MSG_ID_C06 = 0xc06,
+/*20161228 to latest
+Item
+*/
+ MSG_ID_C07 = 0xc07,
+/*20161228 to latest
+Skill
+*/
+ MSG_ID_C08 = 0xc08,
+/*20161228 to latest
+Guild
+*/
+ MSG_ID_C09 = 0xc09,
+/*20161228 to latest
+Party
+*/
+ MSG_ID_C0A = 0xc0a,
+/*20161228 to latest
+Chatting
+*/
+ MSG_ID_C0B = 0xc0b,
+/*20161228 to latest
+Shortcut
+*/
+ MSG_ID_C0C = 0xc0c,
+/*20161228 to latest
+Status
+*/
+ MSG_ID_C0D = 0xc0d,
+/*20161228 to latest
+ALL
+All
+*/
+ MSG_ID_C0E = 0xc0e,
+/*20161228 to latest
+User Defined File Name
+*/
+ MSG_ID_C0F = 0xc0f,
+/*20161228 to latest
+Repeated File Check
+*/
+ MSG_ID_C10 = 0xc10,
+/*20161228 to latest
+on
+*/
+ MSG_ID_C11 = 0xc11,
+/*20161228 to latest
+<Basic Skin>
+*/
+ MSG_ID_C12 = 0xc12,
+/*20161228 to latest
+Select Skin
+*/
+ MSG_ID_C13 = 0xc13,
+#endif
+#if PACKETVER >= 20170111
+/*20170111 to latest
+현재 복권에 참여 중이라 삭제할 수 없습니다
+You cannot delete it because you are currently participating in the lottery
+*/
+ MSG_ID_C14 = 0xc14,
+/*20170111 to latest
+/achievement
+*/
+ MSG_ID_C15 = 0xc15,
+/*20170111 to latest
+제니 복권
+Zeny Lottery ticket
+*/
+ MSG_ID_C16 = 0xc16,
+/*20170111 to latest
+제니 복권 %d등 당첨 보상
+Zenyy Lottery %dprize reward
+*/
+ MSG_ID_C17 = 0xc17,
+/*20170111 to latest
+%d등 당첨 보상: %s
+%dprize reward: %s
+*/
+ MSG_ID_C18 = 0xc18,
+/*20170111 to latest
+제니 복권 누적 구매 보상
+Zeny Lottery Cumulative purchase reward
+*/
+ MSG_ID_C19 = 0xc19,
+/*20170111 to latest
+누적 %d회 보상: %s
+Cumulative %d times reward: %s
+*/
+ MSG_ID_C1A = 0xc1a,
+/*20170111 to latest
+제니 복권 구매 환불
+Zeny Lottery Refund
+*/
+ MSG_ID_C1B = 0xc1b,
+/*20170111 to 20170111
+환불 금액: %d Zeny
+환불 사유: 서버 내 복권 추첨 달성 실패
+20170118 to latest
+환불 금액: %d Zeny
+환불 사유: 서버 내 복권 추첨 달성 실패
+Refund amount: %d Zeny
+Reason for Refund: Failed to draw lottery in the server
+*/
+ MSG_ID_C1C = 0xc1c,
+/*20170111 to latest
+미니 파티창 추가
+Add Mini Party Chat
+*/
+ MSG_ID_C1D = 0xc1d,
+/*20170111 to latest
+미니 파티창 삭제
+Delete Mini Party Chat
+*/
+ MSG_ID_C1E = 0xc1e,
+#endif
+#if PACKETVER >= 20170118
+/*20170118 to latest
+복권 추첨이 모두 종료 되었습니다! 당첨자를 확인해주세요
+The lottery draw had ended! Check the winner!
+*/
+ MSG_ID_C1F = 0xc1f,
+/*20170118 to latest
+%d월 %d일
+%dMonth %dDay
+*/
+ MSG_ID_C20 = 0xc20,
+/*20170118 to latest
+다음 등급까지
+Till the next grade
+*/
+ MSG_ID_C21 = 0xc21,
+/*20170118 to latest
+전체
+All
+*/
+ MSG_ID_C22 = 0xc22,
+/*20170118 to latest
+미완료
+Incomplete
+*/
+ MSG_ID_C23 = 0xc23,
+/*20170118 to latest
+(달성!)
+(Accomplished!)
+*/
+ MSG_ID_C24 = 0xc24,
+/*20170118 to latest
+(미달성)
+(Not Accomplished)
+*/
+ MSG_ID_C25 = 0xc25,
+#endif
+#if PACKETVER >= 20170208
+/*20170208 to latest
+장비 교체
+Change equipment
+*/
+ MSG_ID_C26 = 0xc26,
+/*20170208 to latest
+CHANGE
+*/
+ MSG_ID_C27 = 0xc27,
+/*20170208 to latest
+힘 파라메터
+ ^cc0000근접 물리 공격력^ffffff, 소지무게
+Power Parameter
+ ^cc0000Melee PhysicalAttack^ffffff, Carrying Weight
+*/
+ MSG_ID_C28 = 0xc28,
+/*20170208 to latest
+민첩성 파라메터
+^cc0000공격 속도^ffffff, 회피율, 물리 방어력
+Agility Parameter
+^cc0000Attack Speed^ffffff, Dodge, Physical Defense
+*/
+ MSG_ID_C29 = 0xc29,
+/*20170208 to latest
+체력 파라메터
+^cc0000최대 체력^ffffff, 물리 방어력, 마법 방어력
+HP Parameter
+^cc0000Max HP^ffffff, Physical Defense, Magic Defense
+*/
+ MSG_ID_C2A = 0xc2a,
+/*20170208 to latest
+지력 파라메터
+^cc0000마법 공격력^ffffff, 캐스팅 시간, 마법 방어력
+Intellect Parameter
+^cc0000Magic Attack^ffffff, Casting Time, Magic Defense
+*/
+ MSG_ID_C2B = 0xc2b,
+/*20170208 to latest
+손재주 파라메터
+^cc0000원거리 물리 공격력^ffffff, 명중률, 캐스팅 시간, 마법 공격력
+Handcraft Parameter
+^cc0000Long Range Physical Attack^ffffff, Accuracy, Casting Time, Magic Attack
+*/
+ MSG_ID_C2C = 0xc2c,
+/*20170208 to latest
+운 파라메터
+^cc0000치명타율^ffffff, 명중률, 물리공격력, 마법공격력, 회피율
+Moon Parameter
+^cc0000Critical Rate^ffffff, Accuracy, Physical Attack, Magic Attack, Dodge
+*/
+ MSG_ID_C2D = 0xc2d,
+/*20170208 to latest
+물리 공격력
+Physical Attack
+*/
+ MSG_ID_C2E = 0xc2e,
+/*20170208 to latest
+물리 방어력
+Physical Defense
+*/
+ MSG_ID_C2F = 0xc2f,
+/*20170208 to latest
+명중률
+Accuracy
+*/
+ MSG_ID_C30 = 0xc30,
+/*20170208 to latest
+치명타율
+Critical Rate
+*/
+ MSG_ID_C31 = 0xc31,
+/*20170208 to latest
+소속길드
+Affiliated Guild
+*/
+ MSG_ID_C32 = 0xc32,
+/*20170208 to latest
+각 파라메터 레벨업에 사용되는 포인트
+Points to level up each Parameter
+*/
+ MSG_ID_C33 = 0xc33,
+/*20170208 to latest
+마법공격력
+Magic Attack
+*/
+ MSG_ID_C34 = 0xc34,
+/*20170208 to latest
+마법방어력
+Magic Defense
+*/
+ MSG_ID_C35 = 0xc35,
+/*20170208 to latest
+회피율
+Dodge
+*/
+ MSG_ID_C36 = 0xc36,
+/*20170208 to latest
+공격 속도
+Attack Speed
+*/
+ MSG_ID_C37 = 0xc37,
+#endif
+#if PACKETVER >= 20170215
+/*20170215 to latest
+단축키 안내
+Shortcut
+*/
+ MSG_ID_C38 = 0xc38,
+/*20170215 to latest
+옵션
+Option
+*/
+ MSG_ID_C39 = 0xc39,
+/*20170215 to latest
+스킬 단축키 (F1 ~ F9)
+Skill Shortcut Key (F1 ~ F9)
+*/
+ MSG_ID_C3A = 0xc3a,
+/*20170215 to latest
+이미지 캡쳐
+Capture Image
+*/
+ MSG_ID_C3B = 0xc3b,
+/*20170215 to latest
+확대
+Zoom In
+*/
+ MSG_ID_C3C = 0xc3c,
+/*20170215 to latest
+축소
+Zoom Out
+*/
+ MSG_ID_C3D = 0xc3d,
+/*20170215 to latest
+길드
+Guild
+*/
+ MSG_ID_C3E = 0xc3e,
+/*20170215 to latest
+은행
+Bank
+*/
+ MSG_ID_C3F = 0xc3f,
+/*20170215 to latest
+우편
+Mail
+*/
+ MSG_ID_C40 = 0xc40,
+/*20170215 to latest
+캐시 상점
+Cash Shop
+*/
+ MSG_ID_C41 = 0xc41,
+/*20170215 to latest
+앉기
+Sit
+*/
+ MSG_ID_C42 = 0xc42,
+/*20170215 to latest
+이동
+Move
+*/
+ MSG_ID_C43 = 0xc43,
+/*20170215 to latest
+회전
+Rotate
+*/
+ MSG_ID_C44 = 0xc44,
+/*20170215 to latest
+파티장은 파티장을 다른 파티원에게 위임 후 탈퇴 가능합니다.
+The Party Leader can be dropped out only after another party member becomes a Party Leader.
+*/
+ MSG_ID_C45 = 0xc45,
+/*20170215 to latest
+이 동영상을 그만 보시겠습니까?
+Do you want to stop viewing this video?
+*/
+ MSG_ID_C46 = 0xc46,
+/*20170215 to latest
+ 장비가 장비 교체 창에 장착 되었습니다.
+ gear has been equipped in the gear equipment pop-up.
+*/
+ MSG_ID_C47 = 0xc47,
+/*20170215 to latest
+ 장비가 장비 교체 창에서 해제 되었습니다.
+ gear has been removed in the gear equipment pop-up.
+*/
+ MSG_ID_C48 = 0xc48,
+#endif
+#if PACKETVER >= 20170222
+/*20170222 to latest
+현재가 마지막 라인입니다.
+This is the last line.
+*/
+ MSG_ID_C49 = 0xc49,
+/*20170222 to latest
+%.1f%% ( 기본 100%% + 프리미엄 %.1f%%+ %s서버 %.1f%% )
+%.1f%% ( Base 100%% + Premium %.1f%%+ %sServer %.1f%% )
+*/
+ MSG_ID_C4A = 0xc4a,
+#endif
+#if PACKETVER >= 20170228
+/*20170228 to latest
+한자
+Chinese character
+*/
+ MSG_ID_C4B = 0xc4b,
+/*20170228 to latest
+단축키 설정
+Shortcut Settings
+*/
+ MSG_ID_C4C = 0xc4c,
+#endif
+#if PACKETVER >= 20170308
+/*20170308 to latest
+당신의 정액제 기간은 %s에 종료됩니다.
+Your subscription will be ended on%s.
+*/
+ MSG_ID_C4D = 0xc4d,
+/*20170308 to latest
+리플레이 파일을 찾지 못하였습니다.
+Cannot find the replay file.
+*/
+ MSG_ID_C4E = 0xc4e,
+/*20170308 to 20170801
+신발
+Head
+20170809 to latest
+의상
+Shoes
+*/
+ MSG_ID_C4F = 0xc4f,
+/*20170308 to 20170801
+머리
+Costume
+20170809 to latest
+신발
+Head
+*/
+ MSG_ID_C50 = 0xc50,
+/*20170308 to latest
+갑옷
+Armor
+*/
+ MSG_ID_C51 = 0xc51,
+/*20170308 to latest
+어깨
+Shoulders
+*/
+ MSG_ID_C52 = 0xc52,
+/*20170308 to latest
+악세
+Accessory
+*/
+ MSG_ID_C53 = 0xc53,
+/*20170308 to 20170801
+의상
+Shoes
+20170809 to latest
+머리
+Costume
+*/
+ MSG_ID_C54 = 0xc54,
+/*20170308 to latest
+차순정렬
+Sort Order
+*/
+ MSG_ID_C55 = 0xc55,
+/*20170308 to 20170308
+
+Current admission application state.
+20170315 to latest
+일반 장비
+Normal Gear
+*/
+ MSG_ID_C56 = 0xc56,
+/*20170308 to 20170308
+
+Current admission application state.
+20170315 to latest
+특수 장비
+Special Gear
+*/
+ MSG_ID_C57 = 0xc57,
+/*20170308 to 20170308
+
+Current admission application state.
+20170315 to latest
+칭호
+Style
+*/
+ MSG_ID_C58 = 0xc58,
+#endif
+#if PACKETVER >= 20170315
+/*20170315 to latest
+/quake : 화면 흔들림 효과 On/Off
+/quake : Screen Shaking Effect On/Off
+*/
+ MSG_ID_C59 = 0xc59,
+/*20170315 to latest
+/aura2 : 오오라를 완전히 Off 시킬 수 있습니다 On Off
+/aura2 : You can completely turn off the aurora On/Off
+*/
+ MSG_ID_C5A = 0xc5a,
+/*20170315 to latest
+기본 설정
+Default Settings
+*/
+ MSG_ID_C5B = 0xc5b,
+/*20170315 to latest
+고급 설정
+Advanced Settings
+*/
+ MSG_ID_C5C = 0xc5c,
+/*20170315 to latest
+기본설정값이 적용됩니다.
+The Default Settings will be applied.
+*/
+ MSG_ID_C5D = 0xc5d,
+/*20170315 to latest
+기본 설정값이 적용됩니다. 동의하십니까?
+The Default Settings will be applied. Do you agree?
+*/
+ MSG_ID_C5E = 0xc5e,
+/*20170315 to latest
+설정값이 적용됩니다. 동의하십니까?
+The settings will be applied. Do you agree?
+*/
+ MSG_ID_C5F = 0xc5f,
+/*20170315 to latest
+설정값을 적용하려면 재시작이 필요합니다. 동의하십니까?
+Need to restart to apply the settings. Do you agree?
+*/
+ MSG_ID_C60 = 0xc60,
+/*20170315 to latest
+안개
+Fog
+*/
+ MSG_ID_C61 = 0xc61,
+/*20170315 to latest
+오오라 간략화
+Simplified aurora
+*/
+ MSG_ID_C62 = 0xc62,
+/*20170315 to latest
+오오라켜기
+Turn on aurora
+*/
+ MSG_ID_C63 = 0xc63,
+/*20170315 to latest
+이펙트 표시
+Show Effect
+*/
+ MSG_ID_C64 = 0xc64,
+/*20170315 to latest
+음영 표시
+Show Shadows
+*/
+ MSG_ID_C65 = 0xc65,
+/*20170315 to latest
+No Shift
+*/
+ MSG_ID_C66 = 0xc66,
+/*20170315 to latest
+하드웨어 T&L 가속기능을 선택합니다
+Select Hardware T&L Acceleration Function
+*/
+ MSG_ID_C67 = 0xc67,
+/*20170315 to latest
+게임의 해상도를 선택합니다
+Select Game Resolution
+*/
+ MSG_ID_C68 = 0xc68,
+/*20170315 to latest
+전체화면 사용
+Use full screen
+*/
+ MSG_ID_C69 = 0xc69,
+/*20170315 to latest
+마우스 고정
+Fix mouse
+*/
+ MSG_ID_C6A = 0xc6a,
+/*20170315 to latest
+이펙트 설정
+Effect Settings
+*/
+ MSG_ID_C6B = 0xc6b,
+/*20170315 to latest
+Control 설정
+Control Settings
+*/
+ MSG_ID_C6C = 0xc6c,
+/*20170315 to latest
+그래픽 장치 설정
+Graphic Device Settings
+*/
+ MSG_ID_C6D = 0xc6d,
+/*20170315 to latest
+그래픽 해상도 설정
+Graphic Resolution Settings
+*/
+ MSG_ID_C6E = 0xc6e,
+/*20170315 to latest
+전체 화면 유무 설정
+Full Screen Settings
+*/
+ MSG_ID_C6F = 0xc6f,
+/*20170315 to latest
+마우스 고정 여부 설정
+Fix mouse Settings
+*/
+ MSG_ID_C70 = 0xc70,
+/*20170315 to latest
+수수료 :
+Commission :
+*/
+ MSG_ID_C71 = 0xc71,
+/*20170315 to latest
+수수료 총액 :
+Total commission amount :
+*/
+ MSG_ID_C72 = 0xc72,
+/*20170315 to latest
+수신인 설정
+Select receiver
+*/
+ MSG_ID_C73 = 0xc73,
+/*20170315 to latest
+수신그룹 설정
+Select receiving group
+*/
+ MSG_ID_C74 = 0xc74,
+/*20170315 to latest
+크기 변경(F10)
+Change size(F10)
+*/
+ MSG_ID_C75 = 0xc75,
+/*20170315 to latest
+메일함을 불러오는 중 입니다.
+불필요한 메일은 ^c92114삭제^000000해 주세요~!!
+Loading the mailbox.
+^c92114Delete^000000unnecessary emails!!
+*/
+ MSG_ID_C76 = 0xc76,
+/*20170315 to latest
+NOW LOADING..
+*/
+ MSG_ID_C77 = 0xc77,
+/*20170315 to latest
+제목
+Title
+*/
+ MSG_ID_C78 = 0xc78,
+/*20170315 to latest
+보낸이
+Sender
+*/
+ MSG_ID_C79 = 0xc79,
+#endif
+#if PACKETVER >= 20170322
+/*20170322 to latest
+라그나로크 클라이언트와 동시에 실행이 불가능 합니다. setup을 종료합니다
+*/
+ MSG_ID_C7A = 0xc7a,
+/*20170322 to latest
+추가 기능 설정
+*/
+ MSG_ID_C7B = 0xc7b,
+/*20170322 to latest
+This account does not exist.
+*/
+ MSG_ID_C7C = 0xc7c,
+/*20170322 to latest
+Passwords do not match.
+*/
+ MSG_ID_C7D = 0xc7d,
+/*20170322 to latest
+Failed to pass IP authentication
+*/
+ MSG_ID_C7E = 0xc7e,
+/*20170322 to latest
+No identification number, supplement your registration information
+*/
+ MSG_ID_C7F = 0xc7f,
+/*20170322 to latest
+Account block
+*/
+ MSG_ID_C80 = 0xc80,
+/*20170322 to latest
+System error
+*/
+ MSG_ID_C81 = 0xc81,
+/*20170322 to latest
+unknown error found.
+*/
+ MSG_ID_C82 = 0xc82,
+#endif
+#if PACKETVER >= 20170329
+/*20170329 to latest
+길안내 아이콘 설정
+*/
+ MSG_ID_C83 = 0xc83,
+/*20170329 to latest
+길 안내 정보 UI
+*/
+ MSG_ID_C84 = 0xc84,
+/*20170329 to latest
+길 안내 정보 열기
+*/
+ MSG_ID_C85 = 0xc85,
+/*20170329 to latest
+현재 위치 공유
+*/
+ MSG_ID_C86 = 0xc86,
+/*20170329 to latest
+검색결과[0]
+*/
+ MSG_ID_C87 = 0xc87,
+/*20170329 to latest
+검색&안내
+*/
+ MSG_ID_C88 = 0xc88,
+/*20170329 to 20170329
+위치 값은 음수 값이 들어 올 수 없습니다.
+20170405 to latest
+위치가 올바르지 않습니다.
+*/
+ MSG_ID_C89 = 0xc89,
+/*20170329 to latest
+검색결과[%d]
+*/
+ MSG_ID_C8A = 0xc8a,
+/*20170329 to latest
+길안내 표시를 위한 아이콘 설정
+*/
+ MSG_ID_C8B = 0xc8b,
+/*20170329 to latest
+길 찾기에 zeny 허용
+*/
+ MSG_ID_C8C = 0xc8c,
+/*20170329 to latest
+내비게이션 도킹 해제
+*/
+ MSG_ID_C8D = 0xc8d,
+/*20170329 to latest
+활성화 하지 않은 계정입니다.
+*/
+ MSG_ID_C8E = 0xc8e,
+#endif
+#if PACKETVER >= 20170405
+/*20170405 to latest
+클릭한 위치가 채팅창에 공유 됩니다.
+*/
+ MSG_ID_C8F = 0xc8f,
+/*20170405 to latest
+4. Service 항목을 선택하면 Zeny&비공정 이용을 고려하여 안내 한다.
+*/
+ MSG_ID_C90 = 0xc90,
+/*20170405 to latest
+5. [<-] 버튼 : 길안내 모드 <-> 검색 모드를 바꾸거나
+*/
+ MSG_ID_C91 = 0xc91,
+/*20170405 to latest
+공유하기 모드 -> 서치 모드로 돌아갈때 사용 된다.
+*/
+ MSG_ID_C92 = 0xc92,
+/*20170405 to latest
+경험치 %lld 얻음
+*/
+ MSG_ID_C93 = 0xc93,
+/*20170405 to latest
+'%lld'의 경험치를
+*/
+ MSG_ID_C94 = 0xc94,
+/*20170405 to 20170517
+^b- 노점 수수료 안내^/b
+노점 설정 가격에 따라 일정 비율의 수수료가 부가됩니다.
+
+ ^b> 수수료 비율^/b
+각 금액에 따른 수수료의 비율은 아래와 같습니다.
+
+0 z ~ 10,000 z
+ = 수수료율 : ^1567fe0%^000000
+10,001 z ~ 100,000 z
+ = 수수료율 : ^1567fe2%^000000
+100,001 z ~ 1,000,000 z
+ = 수수료율 : ^1567fe4%^000000
+1,000,001 z ~ 10,000,000 z
+ = 수수료율 : ^1567fe6%^000000
+10,000,001 z ~ 100,000,000 z
+ = 수수료율 : ^1567fe8%^000000
+100,000,001 z 이상
+ = 수수료율 : ^1567fe10%^000000
+20170524 to latest
+^b- 노점 수수료 안내^/b
+노점 설정 가격에 따라 일정 비율의 수수료가 부가됩니다.
+
+ ^b> 수수료 비율^/b
+각 금액에 따른 수수료의 비율은 아래와 같습니다.
+
+0 z ~ 10,000 z
+ = 수수료율 : ^1567fe0%^000000
+10,001 z ~ 100,000 z
+ = 수수료율 : ^1567fe0%^000000
+100,001 z ~ 1,000,000 z
+ = 수수료율 : ^1567fe0%^000000
+1,000,001 z ~ 10,000,000 z
+ = 수수료율 : ^1567fe0%^000000
+10,000,001 z ~ 100,000,000 z
+ = 수수료율 : ^1567fe5%^000000
+100,000,001 z 이상
+ = 수수료율 : ^1567fe5%^000000
+*/
+ MSG_ID_C95 = 0xc95,
+/*20170405 to latest
+실거래가 :
+*/
+ MSG_ID_C96 = 0xc96,
+/*20170405 to latest
+※ 아이템 판매시, 실거래가만큼 제니를 획득합니다.
+*/
+ MSG_ID_C97 = 0xc97,
+/*20170405 to latest
+※ 아이템 구매시, 실거래가만큼 제니가 차감됩니다.
+*/
+ MSG_ID_C98 = 0xc98,
+/*20170405 to latest
+채팅방 개설
+*/
+ MSG_ID_C99 = 0xc99,
+#endif
+#if PACKETVER >= 20170412
+/*20170412 to latest
+해당 캐릭터는 파티가입이 가능하지 않은 레벨입니다.
+*/
+ MSG_ID_C9A = 0xc9a,
+/*20170412 to latest
+'%lld'의 잡경험치를
+*/
+ MSG_ID_C9B = 0xc9b,
+/*20170412 to latest
+잡경험치 %lld 얻음
+*/
+ MSG_ID_C9C = 0xc9c,
+#endif
+#if PACKETVER >= 20170419
+/*20170419 to latest
+현재위치(대로)에는 노점을 개설할 수 없습니다.
+*/
+ MSG_ID_C9D = 0xc9d,
+#endif
+#if PACKETVER >= 20170426
+/*20170426 to latest
+초 후 가능합니다.
+*/
+ MSG_ID_C9E = 0xc9e,
+#endif
+#if PACKETVER >= 20170517
+/*20170517 to latest
+파티원
+*/
+ MSG_ID_C9F = 0xc9f,
+/*20170517 to latest
+SNS 전송실패(%d)
+*/
+ MSG_ID_CA0 = 0xca0,
+/*20170517 to latest
+SNS 서버 연결실패
+*/
+ MSG_ID_CA1 = 0xca1,
+/*20170517 to latest
+SNS 로그인 후 사용 가능합니다.
+*/
+ MSG_ID_CA2 = 0xca2,
+/*20170517 to latest
+접속 할 수 있는 주소가 존재하지 않습니다.
+*/
+ MSG_ID_CA3 = 0xca3,
+#endif
+#if PACKETVER >= 20170531
+/*20170531 to latest
+미니파티창이 겹쳐져 있어 사용하실 수 없습니다.
+*/
+ MSG_ID_CA4 = 0xca4,
+/*20170531 to latest
+나의 판매노점
+*/
+ MSG_ID_CA5 = 0xca5,
+#endif
+#if PACKETVER >= 20170614
+/*20170614 to latest
+BOX
+*/
+ MSG_ID_CA6 = 0xca6,
+/*20170614 to latest
+팁박스
+*/
+ MSG_ID_CA7 = 0xca7,
+#endif
+#if PACKETVER >= 20170621
+/*20170621 to latest
+트윗을 성공했습니다.
+*/
+ MSG_ID_CA8 = 0xca8,
+#endif
+#if PACKETVER >= 20170628
+/*20170628 to latest
+다시하기
+*/
+ MSG_ID_CA9 = 0xca9,
+/*20170628 to 20170809
+제련재료가 변경되어 다시하기가 비활성화 되었습니다.
+20170816 to latest
+다시하기가 비활성화되었습니다. 제련 재료를 다시 선택해주세요.
+*/
+ MSG_ID_CAA = 0xcaa,
+/*20170628 to latest
+제련석이 부족하여 다시하기가 비활성화 되었습니다.
+*/
+ MSG_ID_CAB = 0xcab,
+/*20170628 to latest
+제니가 부족하여 다시하기가 비활성화 되었습니다.
+*/
+ MSG_ID_CAC = 0xcac,
+/*20170628 to latest
+대장장이의 축복이 부족하여 다시하기가 비활성화 되었습니다.
+*/
+ MSG_ID_CAD = 0xcad,
+/*20170628 to latest
+아이템이 파괴되었습니다.
+*/
+ MSG_ID_CAE = 0xcae,
+/*20170628 to latest
+모든 스테이터스가 감소되었습니다.
+*/
+ MSG_ID_CAF = 0xcaf,
+/*20170628 to latest
+모든 스테이터스 감소 효과가 해제되었습니다.
+*/
+ MSG_ID_CB0 = 0xcb0,
+/*20170628 to latest
+OTP 비밀번호는 8자리 입니다.
+*/
+ MSG_ID_CB1 = 0xcb1,
+#endif
+#if PACKETVER >= 20170705
+/*20170705 to latest
+통합계정
+*/
+ MSG_ID_CB2 = 0xcb2,
+/*20170705 to latest
+라그나로크
+*/
+ MSG_ID_CB3 = 0xcb3,
+/*20170705 to latest
+서비스 점검 중입니다.
+*/
+ MSG_ID_CB4 = 0xcb4,
+/*20170705 to latest
+검색어를 입력해주세요
+*/
+ MSG_ID_CB5 = 0xcb5,
+/*20170705 to latest
+MOTP
+*/
+ MSG_ID_CB6 = 0xcb6,
+/*20170705 to latest
+인증번호
+Identification number.
+*/
+ MSG_ID_CB7 = 0xcb7,
+/*20170705 to latest
+휴대폰에 다운받은 GNJOY MOTP를 실행하여 인증번호를 입력해 주세요.
+*/
+ MSG_ID_CB8 = 0xcb8,
+#endif
+#if PACKETVER >= 20170712
+/*20170712 to latest
+파티장을 위임할 파티원이 존재하지 않습니다. 파티를 해산하시겠습니까?
+*/
+ MSG_ID_CB9 = 0xcb9,
+#endif
+#if PACKETVER >= 20170719
+/*20170719 to latest
+ - 만18세이상
+*/
+ MSG_ID_CBA = 0xcba,
+/*20170719 to latest
+ - 유료서버
+*/
+ MSG_ID_CBB = 0xcbb,
+/*20170719 to latest
+ - 무료서버
+*/
+ MSG_ID_CBC = 0xcbc,
+/*20170719 to latest
+쾌적
+*/
+ MSG_ID_CBD = 0xcbd,
+/*20170719 to latest
+보통
+Normal
+*/
+ MSG_ID_CBE = 0xcbe,
+/*20170719 to latest
+혼잡
+*/
+ MSG_ID_CBF = 0xcbf,
+/*20170719 to latest
+포화
+*/
+ MSG_ID_CC0 = 0xcc0,
+/*20170719 to latest
+map
+*/
+ MSG_ID_CC1 = 0xcc1,
+/*20170719 to latest
+월드창고는 인벤토리 아이템만 입출고 할 수 있습니다.
+*/
+ MSG_ID_CC2 = 0xcc2,
+/*20170719 to latest
+월드창고에는 펫알을 입고할 수 없습니다.
+*/
+ MSG_ID_CC3 = 0xcc3,
+/*20170719 to latest
+월드창고에는 제작아이템을 입고할 수 없습니다.
+*/
+ MSG_ID_CC4 = 0xcc4,
+/*20170719 to latest
+%s 에서는 출고 할 수 없는 아이템입니다.
+*/
+ MSG_ID_CC5 = 0xcc5,
+#endif
+#if PACKETVER >= 20170726
+/*20170726 to latest
+던전 파괴
+*/
+ MSG_ID_CC6 = 0xcc6,
+/*20170726 to latest
+[%s] 님이 제련을 성공하여, [+%d %s] 아이템을 획득하였습니다.
+*/
+ MSG_ID_CC7 = 0xcc7,
+/*20170726 to latest
+[%s] 님이 [+%d %s] 아이템의 제련에 실패하였습니다.
+*/
+ MSG_ID_CC8 = 0xcc8,
+/*20170726 to latest
+파티장을 위임한 이후에 탈퇴할 수 있습니다.
+*/
+ MSG_ID_CC9 = 0xcc9,
+#endif
+#if PACKETVER >= 20170809
+/*20170809 to latest
+오름
+*/
+ MSG_ID_CCA = 0xcca,
+/*20170809 to latest
+내림
+*/
+ MSG_ID_CCB = 0xccb,
+/*20170809 to latest
+기본
+*/
+ MSG_ID_CCC = 0xccc,
+/*20170809 to latest
+변조된 파일이 발견되었습니다. 게임을 다시 실행시켜주세요.
+*/
+ MSG_ID_CCD = 0xccd,
+#endif
+#if PACKETVER >= 20170823
+/*20170823 to latest
+%s 은(는) 이맵에서 이동이 제한된 아이템입니다.
+*/
+ MSG_ID_CCE = 0xcce,
+#endif
+#if PACKETVER >= 20170906
+/*20170906 to latest
+스스로
+먹이먹기
+*/
+ MSG_ID_CCF = 0xccf,
+/*20170906 to latest
+로덱스 작성창이 열려있는 동안 호문클루스가 먹이를 먹지 못합니다.
+*/
+ MSG_ID_CD0 = 0xcd0,
+/*20170906 to latest
+호문클루스가 먹이를 먹었습니다. '%s' 잔여량 %d개
+*/
+ MSG_ID_CD1 = 0xcd1,
+/*20170906 to latest
+호문클루스 스스로 먹이 먹기 활성화 On
+*/
+ MSG_ID_CD2 = 0xcd2,
+/*20170906 to latest
+호문클루스 스스로 먹이 먹기 활성화 Off
+*/
+ MSG_ID_CD3 = 0xcd3,
+/*20170906 to latest
+호문클루스는 주인이 획득하는 경험치의
+10%만큼을 자신의 경험치로 분배 받습니다.
+*/
+ MSG_ID_CD4 = 0xcd4,
+/*20170906 to latest
+확률 : %d%%
+*/
+ MSG_ID_CD5 = 0xcd5,
+/*20170906 to latest
+해당 대상은 호문의 공격대상이 아닙니다. 'Alt + 우클릭'을 통해 호문클루스의 공격대상을 지정해주세요.
+*/
+ MSG_ID_CD6 = 0xcd6,
+/*20170906 to latest
+호문의 공격대상이 존재하지 않습니다. 'Alt + 우클릭'을 통해 호문클루스의 공격대상을 지정해주세요.
+*/
+ MSG_ID_CD7 = 0xcd7,
+#endif
+#if PACKETVER >= 20170913
+/*20170913 to latest
+판매 리스트
+*/
+ MSG_ID_CD8 = 0xcd8,
+/*20170913 to latest
+구입 리스트
+*/
+ MSG_ID_CD9 = 0xcd9,
+/*20170913 to latest
+신규
+New
+*/
+ MSG_ID_CDA = 0xcda,
+/*20170913 to latest
+인기
+Headgears
+*/
+ MSG_ID_CDB = 0xcdb,
+/*20170913 to latest
+한정
+Limited
+*/
+ MSG_ID_CDC = 0xcdc,
+/*20170913 to latest
+임대장비
+Rental Items
+*/
+ MSG_ID_CDD = 0xcdd,
+/*20170913 to latest
+영구장비
+Equipments
+*/
+ MSG_ID_CDE = 0xcde,
+/*20170913 to latest
+버프
+Scrolls
+*/
+ MSG_ID_CDF = 0xcdf,
+/*20170913 to latest
+회복
+Consumables
+*/
+ MSG_ID_CE0 = 0xce0,
+/*20170913 to latest
+기타
+Other
+*/
+ MSG_ID_CE1 = 0xce1,
+/*20170913 to latest
+특가
+Special
+*/
+ MSG_ID_CE2 = 0xce2,
+/*20170913 to latest
+충전하기
+*/
+ MSG_ID_CE3 = 0xce3,
+/*20170913 to latest
+구입하기
+*/
+ MSG_ID_CE4 = 0xce4,
+/*20170913 to 20171206
+https://payment.gnjoy.com/bill/login.grv
+20171213 to latest
+http://member.gnjoy.com/user/pay/chargelist.asp
+*/
+ MSG_ID_CE5 = 0xce5,
+/*20170913 to latest
+아이템 검색
+*/
+ MSG_ID_CE6 = 0xce6,
+/*20170913 to latest
+무료캐시
+*/
+ MSG_ID_CE7 = 0xce7,
+/*20170913 to latest
+무료캐시 사용
+*/
+ MSG_ID_CE8 = 0xce8,
+/*20170913 to latest
+소지캐시
+*/
+ MSG_ID_CE9 = 0xce9,
+/*20170913 to latest
+수량갱신
+*/
+ MSG_ID_CEA = 0xcea,
+/*20170913 to latest
+성제(여)
+*/
+ MSG_ID_CEB = 0xceb,
+/*20170913 to latest
+소울리퍼(여)
+*/
+ MSG_ID_CEC = 0xcec,
+/*20170913 to latest
+성제(남)
+*/
+ MSG_ID_CED = 0xced,
+/*20170913 to latest
+소울리퍼(남)
+*/
+ MSG_ID_CEE = 0xcee,
+#endif
+#if PACKETVER >= 20170920
+/*20170920 to latest
+무게가 %d 퍼센트 이상일때는 HP SP가 자연적으로 회복이 되지 않습니다.
+*/
+ MSG_ID_CEF = 0xcef,
+/*20170920 to latest
+한 번에 구입 가능한 아이템의 가짓수는 8개입니다.
+*/
+ MSG_ID_CF0 = 0xcf0,
+/*20170920 to latest
+http://gift.zhaouc.com/#/index
+http://gift.zhaouc.com/
+*/
+ MSG_ID_CF1 = 0xcf1,
+#endif
+#if PACKETVER >= 20170927
+/*20170927 to latest
+UNKNOWN ERROR:%d
+*/
+ MSG_ID_CF2 = 0xcf2,
+/*20170927 to latest
+NOT USER
+*/
+ MSG_ID_CF3 = 0xcf3,
+/*20170927 to latest
+THIS ACCOUNT ID IS BLOCKED
+*/
+ MSG_ID_CF4 = 0xcf4,
+/*20170927 to latest
+COUNTRY REJECT (OR NOT AVALIABLE USER )
+*/
+ MSG_ID_CF5 = 0xcf5,
+/*20170927 to latest
+NOT MATCH PASSWORD
+*/
+ MSG_ID_CF6 = 0xcf6,
+/*20170927 to latest
+NOT EMAIL CERT
+*/
+ MSG_ID_CF7 = 0xcf7,
+/*20170927 to latest
+PAYPAL BLOCK
+*/
+ MSG_ID_CF8 = 0xcf8,
+/*20170927 to latest
+COUNTRY REJECT
+*/
+ MSG_ID_CF9 = 0xcf9,
+/*20170927 to latest
+PAYPAL BLOCK
+*/
+ MSG_ID_CFA = 0xcfa,
+/*20170927 to latest
+WEB BLOCK
+*/
+ MSG_ID_CFB = 0xcfb,
+/*20170927 to latest
+AGE LIMIT USER
+*/
+ MSG_ID_CFC = 0xcfc,
+/*20170927 to latest
+PASSWORD HAS NOT BEEN CHANGED FOR MORE THAN 90DAYS
+*/
+ MSG_ID_CFD = 0xcfd,
+/*20170927 to latest
+INPUT DATA ERROR
+*/
+ MSG_ID_CFE = 0xcfe,
+/*20170927 to latest
+ERROR DATABASE
+*/
+ MSG_ID_CFF = 0xcff,
+/*20170927 to latest
+ERROR SYSTEM
+*/
+ MSG_ID_D00 = 0xd00,
+/*20170927 to 20171025
+%s 지불
+20171101 to latest
+%s 소모
+*/
+ MSG_ID_D01 = 0xd01,
+/*20170927 to latest
+비용지불
+*/
+ MSG_ID_D02 = 0xd02,
+/*20170927 to latest
+출발 가능한 맵이 아닙니다.
+*/
+ MSG_ID_D03 = 0xd03,
+/*20170927 to latest
+이동 불가능한 맵입니다
+*/
+ MSG_ID_D04 = 0xd04,
+/*20170927 to latest
+아이템이 부족합니다.
+*/
+ MSG_ID_D05 = 0xd05,
+/*20170927 to latest
+줄 바꿈 없이 한 줄로 입력해주세요.
+*/
+ MSG_ID_D06 = 0xd06,
+#endif
+#if PACKETVER >= 20171011
+/*20171011 to latest
+불량 단어가 포함된 이름은 등록할 수 없습니다.
+*/
+ MSG_ID_D07 = 0xd07,
+#endif
+#if PACKETVER >= 20171018
+/*20171018 to latest
+회원 가입을 위해 공식 홈페이지로 이동됩니다.
+*/
+ MSG_ID_D08 = 0xd08,
+#endif
+#if PACKETVER >= 20171025
+/*20171025 to latest
+TokenAgency 서버 연결 실패
+*/
+ MSG_ID_D09 = 0xd09,
+/*20171025 to latest
+과금정보
+*/
+ MSG_ID_D0A = 0xd0a,
+/*20171025 to latest
+삭제예약
+*/
+ MSG_ID_D0B = 0xd0b,
+/*20171025 to latest
+예약취소
+*/
+ MSG_ID_D0C = 0xd0c,
+/*20171025 to latest
+게임시작
+*/
+ MSG_ID_D0D = 0xd0d,
+/*20171025 to latest
+삭제
+*/
+ MSG_ID_D0E = 0xd0e,
+/*20171025 to latest
+Character List
+*/
+ MSG_ID_D0F = 0xd0f,
+/*20171025 to latest
+공지
+Notice
+*/
+ MSG_ID_D10 = 0xd10,
+/*20171025 to latest
+생성
+*/
+ MSG_ID_D11 = 0xd11,
+/*20171025 to latest
+Hair Style
+*/
+ MSG_ID_D12 = 0xd12,
+/*20171025 to latest
+Hair Color
+*/
+ MSG_ID_D13 = 0xd13,
+/*20171025 to latest
+중복확인
+*/
+ MSG_ID_D14 = 0xd14,
+/*20171025 to latest
+%d시 %d분 %d초
+*/
+ MSG_ID_D15 = 0xd15,
+/*20171025 to latest
+MOTP 입력 시간이 초과되었습니다. 처음부터 다시 로그인해주십시오.
+*/
+ MSG_ID_D16 = 0xd16,
+/*20171025 to latest
+뒤로가기
+*/
+ MSG_ID_D17 = 0xd17,
+#endif
+#if PACKETVER >= 20171101
+/*20171101 to latest
+아이템을 사용할 수 없습니다.
+*/
+ MSG_ID_D18 = 0xd18,
+/*20171101 to latest
+동일한 맵으로 이동할 수 없습니다.
+*/
+ MSG_ID_D19 = 0xd19,
+/*20171101 to latest
+사망시 이동이 불가능합니다.
+*/
+ MSG_ID_D1A = 0xd1a,
+/*20171101 to latest
+캐릭터 생성
+*/
+ MSG_ID_D1B = 0xd1b,
+#endif
+#if PACKETVER >= 20171108
+/*20171108 to latest
+모험가 중개소 등록
+*/
+ MSG_ID_D1C = 0xd1c,
+/*20171108 to latest
+모집 중단
+*/
+ MSG_ID_D1D = 0xd1d,
+/*20171108 to latest
+모험가 중개소 설정
+*/
+ MSG_ID_D1E = 0xd1e,
+/*20171108 to latest
+전 지역
+*/
+ MSG_ID_D1F = 0xd1f,
+/*20171108 to latest
+직접기재
+*/
+ MSG_ID_D20 = 0xd20,
+/*20171108 to latest
+검사계열
+*/
+ MSG_ID_D21 = 0xd21,
+/*20171108 to latest
+법사계열
+*/
+ MSG_ID_D22 = 0xd22,
+/*20171108 to latest
+궁수계열
+*/
+ MSG_ID_D23 = 0xd23,
+/*20171108 to latest
+복사계열
+*/
+ MSG_ID_D24 = 0xd24,
+/*20171108 to latest
+상인계열
+*/
+ MSG_ID_D25 = 0xd25,
+/*20171108 to latest
+도둑계열
+*/
+ MSG_ID_D26 = 0xd26,
+/*20171108 to latest
+태권계열
+*/
+ MSG_ID_D27 = 0xd27,
+/*20171108 to latest
+닌자계열
+*/
+ MSG_ID_D28 = 0xd28,
+/*20171108 to latest
+건슬링거계열
+*/
+ MSG_ID_D29 = 0xd29,
+/*20171108 to latest
+도람족계열
+*/
+ MSG_ID_D2A = 0xd2a,
+/*20171108 to latest
+지역명
+*/
+ MSG_ID_D2B = 0xd2b,
+/*20171108 to latest
+지역명 검색
+*/
+ MSG_ID_D2C = 0xd2c,
+/*20171108 to latest
+가입 요청하기
+*/
+ MSG_ID_D2D = 0xd2d,
+/*20171108 to latest
+신고하기
+*/
+ MSG_ID_D2E = 0xd2e,
+/*20171108 to latest
+파티 모집 중단
+*/
+ MSG_ID_D2F = 0xd2f,
+/*20171108 to latest
+지역명을 입력해주세요.
+*/
+ MSG_ID_D30 = 0xd30,
+/*20171108 to latest
+지역
+*/
+ MSG_ID_D31 = 0xd31,
+/*20171108 to latest
+전 직업
+*/
+ MSG_ID_D32 = 0xd32,
+/*20171108 to latest
+로그인
+*/
+ MSG_ID_D33 = 0xd33,
+/*20171108 to latest
+계정
+*/
+ MSG_ID_D34 = 0xd34,
+/*20171108 to latest
+종료
+Exit
+*/
+ MSG_ID_D35 = 0xd35,
+/*20171108 to latest
+신청
+*/
+ MSG_ID_D36 = 0xd36,
+/*20171108 to latest
+접속
+*/
+ MSG_ID_D37 = 0xd37,
+/*20171108 to latest
+확인
+*/
+ MSG_ID_D38 = 0xd38,
+/*20171108 to latest
+휴대폰에 다운받은 GNJOY MOTP를
+*/
+ MSG_ID_D39 = 0xd39,
+/*20171108 to latest
+실행하여 인증번호를 입력해 주세요.
+*/
+ MSG_ID_D3A = 0xd3a,
+/*20171108 to latest
+NPC가 있는 맵의 랜덤 좌표로 이동 됩니다.
+*/
+ MSG_ID_D3B = 0xd3b,
+/*20171108 to latest
+태권
+*/
+ MSG_ID_D3C = 0xd3c,
+/*20171108 to 20171115
+ 님이 차단 상태로 설정되었습니다.
+20171122 to latest
+ 에게 전체채팅 및 귓말 거부상태
+*/
+ MSG_ID_D3D = 0xd3d,
+#endif
+#if PACKETVER >= 20171115
+/*20171115 to 20171115
+ 님을 차단 상태로 설정하는데 실패하였습니다.
+20171122 to latest
+ 에게 전체채팅 및 귓말 거부 요청 실패
+*/
+ MSG_ID_D3E = 0xd3e,
+/*20171115 to 20171115
+ 님을 차단 상태로 설정하는데 실패하였습니다.(인원 초과)
+20171122 to latest
+ 에게 전체채팅 및 귓말 거부 요청실패 (인원초과)
+*/
+ MSG_ID_D3F = 0xd3f,
+/*20171115 to 20171115
+ 님이 차단 해제 되었습니다.
+20171122 to latest
+ 에게 전체채팅 및 귓말 가능상태
+*/
+ MSG_ID_D40 = 0xd40,
+/*20171115 to 20171115
+ 님을 차단 해제하는데 실패하였습니다.
+20171122 to latest
+ 에게 전체채팅 및 귓말 가능 요청실패
+*/
+ MSG_ID_D41 = 0xd41,
+/*20171115 to 20171115
+ 님을 차단 해제하는데 실패하였습니다.(인원 초과)
+20171122 to latest
+ 에게 전체채팅 및 귓말 가능 요청실패 (인원초과)
+*/
+ MSG_ID_D42 = 0xd42,
+/*20171115 to latest
+차단 리스트가 없습니다
+*/
+ MSG_ID_D43 = 0xd43,
+/*20171115 to latest
+-차단 리스트-
+*/
+ MSG_ID_D44 = 0xd44,
+/*20171115 to latest
+진행중
+Act
+*/
+ MSG_ID_D45 = 0xd45,
+/*20171115 to latest
+추천
+Rec
+*/
+ MSG_ID_D46 = 0xd46,
+/*20171115 to latest
+보류중
+Pen
+*/
+ MSG_ID_D47 = 0xd47,
+/*20171115 to latest
+QUEST
+*/
+ MSG_ID_D48 = 0xd48,
+/*20171115 to latest
+내용
+For
+*/
+ MSG_ID_D49 = 0xd49,
+/*20171115 to latest
+몬스터
+*/
+ MSG_ID_D4A = 0xd4a,
+/*20171115 to latest
+보상
+*/
+ MSG_ID_D4B = 0xd4b,
+/*20171115 to latest
+EXP
+*/
+ MSG_ID_D4C = 0xd4c,
+/*20171115 to latest
+JEXP
+*/
+ MSG_ID_D4D = 0xd4d,
+/*20171115 to latest
+아이템
+Item
+*/
+ MSG_ID_D4E = 0xd4e,
+/*20171115 to latest
+진행/보류
+*/
+ MSG_ID_D4F = 0xd4f,
+/*20171115 to latest
+하단으로 이동
+*/
+ MSG_ID_D50 = 0xd50,
+/*20171115 to latest
+간편 퀘스트창에 표시
+*/
+ MSG_ID_D51 = 0xd51,
+/*20171115 to latest
+입력시간
+*/
+ MSG_ID_D52 = 0xd52,
+#endif
+#if PACKETVER >= 20171122
+/*20171122 to latest
+아이디 저장
+*/
+ MSG_ID_D53 = 0xd53,
+/*20171122 to latest
+비밀번호
+Password
+*/
+ MSG_ID_D54 = 0xd54,
+/*20171122 to latest
+아이디
+*/
+ MSG_ID_D55 = 0xd55,
+/*20171122 to latest
+회원가입
+*/
+ MSG_ID_D56 = 0xd56,
+/*20171122 to latest
+노비스계열
+*/
+ MSG_ID_D57 = 0xd57,
+/*20171122 to latest
+슈퍼노비스계열
+*/
+ MSG_ID_D58 = 0xd58,
+/*20171122 to latest
+모험가 중개소 등록에 실패했습니다.
+*/
+ MSG_ID_D59 = 0xd59,
+/*20171122 to latest
+모험가 중개소에 등록되었습니다.
+*/
+ MSG_ID_D5A = 0xd5a,
+/*20171122 to 20180328
+직업을 한 개 이상 선택해주세요.
+20180404 to latest
+모집을 희망하는 파티원의 직업을 한 개 이상 선택해 주세요.
+*/
+ MSG_ID_D5B = 0xd5b,
+/*20171122 to latest
+지역명을 두 글자 이상 입력해주세요.
+*/
+ MSG_ID_D5C = 0xd5c,
+/*20171122 to latest
+%.1f%% (+ %s서버 %.1f%%)
+*/
+ MSG_ID_D5D = 0xd5d,
+/*20171122 to latest
+/ex (캐릭터이름) or /차단 (캐릭터이름) : 해당 캐릭터에 대해 전체채팅 및 귓말 차단
+*/
+ MSG_ID_D5E = 0xd5e,
+/*20171122 to latest
+/in (캐릭터이름) or /해제 (캐릭터이름) : 해당 캐릭터에 대해 전체채팅 및 귓말 허용
+*/
+ MSG_ID_D5F = 0xd5f,
+/*20171122 to latest
+/ex or /차단 : 전체채팅 및 귓말 차단 캐릭터 리스트
+*/
+ MSG_ID_D60 = 0xd60,
+/*20171122 to latest
+/exall or /차단전부 : 모두에게 전체채팅 및 귓말 차단
+*/
+ MSG_ID_D61 = 0xd61,
+/*20171122 to latest
+/inall or /해제전부 : 모두에게 전체채팅 및 귓말 허용
+*/
+ MSG_ID_D62 = 0xd62,
+/*20171122 to latest
+모두에게 전체채팅 및 귓말 거부상태
+*/
+ MSG_ID_D63 = 0xd63,
+/*20171122 to latest
+모두에게 전체채팅 및 귓말 거부요청 실패
+*/
+ MSG_ID_D64 = 0xd64,
+/*20171122 to latest
+모두에게 전체채팅 및 귓말 가능상태
+*/
+ MSG_ID_D65 = 0xd65,
+/*20171122 to latest
+모두에게 전체채팅 및 귓말 가능요청 실패
+*/
+ MSG_ID_D66 = 0xd66,
+/*20171122 to latest
+오프닝
+*/
+ MSG_ID_D67 = 0xd67,
+#endif
+#if PACKETVER >= 20171206
+/*20171206 to latest
+로그인 화면으로 돌아가시겠습니까?
+*/
+ MSG_ID_D68 = 0xd68,
+/*20171206 to latest
+힘과 공격력이 강해졌습니다.
+*/
+ MSG_ID_D69 = 0xd69,
+/*20171206 to latest
+힘, 지능, 손재주 및 명중률이 증가하였습니다.
+*/
+ MSG_ID_D6A = 0xd6a,
+/*20171206 to latest
+방어력 및 HP가 증가되었습니다.
+*/
+ MSG_ID_D6B = 0xd6b,
+/*20171206 to latest
+젤스타
+*/
+ MSG_ID_D6C = 0xd6c,
+/*20171206 to latest
+계정버프
+*/
+ MSG_ID_D6D = 0xd6d,
+/*20171206 to latest
+정액서비스
+*/
+ MSG_ID_D6E = 0xd6e,
+#endif
+#if PACKETVER >= 20171213
+/*20171213 to latest
+현재 접속이 지연되고 있습니다. 순차적으로 접속이 가능하니 잠시 후 재접속 부탁드립니다.
+*/
+ MSG_ID_D6F = 0xd6f,
+/*20171213 to latest
+현재 접속이 지연되고 있으니 잠시 후 재접속 부탁드립니다.
+*/
+ MSG_ID_D70 = 0xd70,
+/*20171213 to latest
+불량 단어가 포함된 이름은 검색할 수 없습니다.
+*/
+ MSG_ID_D71 = 0xd71,
+/*20171213 to latest
+파티 마스터가 요청을 받을 수 없는 맵에 있습니다.
+*/
+ MSG_ID_D72 = 0xd72,
+/*20171213 to latest
+파티를 찾을 수 없습니다.
+*/
+ MSG_ID_D73 = 0xd73,
+/*20171213 to 20180328
+님의 파티요청입니다.
+20180404 to latest
+님의 파티 가입 요청입니다.
+*/
+ MSG_ID_D74 = 0xd74,
+#endif
+#if PACKETVER >= 20171220
+/*20171220 to latest
+http://ro.gnjoy.com
+*/
+ MSG_ID_D75 = 0xd75,
+/*20171220 to latest
+▲
+*/
+ MSG_ID_D76 = 0xd76,
+/*20171220 to latest
+▼
+*/
+ MSG_ID_D77 = 0xd77,
+#endif
+#if PACKETVER >= 20171227
+/*20171227 to latest
+이미 친구입니다
+*/
+ MSG_ID_D78 = 0xd78,
+/*20171227 to latest
+상대방을 찾을 수 없습니다
+*/
+ MSG_ID_D79 = 0xd79,
+/*20171227 to latest
+이미 다른 캐릭터가 친구 신청 중입니다.
+*/
+ MSG_ID_D7A = 0xd7a,
+/*20171227 to latest
+혼구슬 표시 ON
+*/
+ MSG_ID_D7B = 0xd7b,
+/*20171227 to latest
+혼구슬 표시 OFF
+*/
+ MSG_ID_D7C = 0xd7c,
+#endif
+#if PACKETVER >= 20180117
+/*20180117 to latest
+해당 계정은 2차 비밀번호 오입력으로 인해 게임내 접속이 제한된 상태입니다.
+ %02d시간 %02d분 후에 접속제한이 해제되며, 접속제한의 해제는 홈페이지 -> 개인정보변경 -> 2차 비밀번호 에서 본인인증 후 진행해주시기 바랍니다.
+*/
+ MSG_ID_D7D = 0xd7d,
+/*20180117 to latest
+보안패스워드를 3회이상 틀리셨습니다. 계정 보안을 위해 24시간동안 게임내 접속이 제한됩니다.
+ 접속제한의 해제는 홈페이지 -> 개인정보변경 -> 2차 비밀번호 에서 본인인증 후 진행해주시기 바랍니다.
+*/
+ MSG_ID_D7E = 0xd7e,
+/*20180117 to latest
+운영진
+*/
+ MSG_ID_D7F = 0xd7f,
+/*20180117 to latest
+%d일차 출석 보상이 지급되었습니다.
+*/
+ MSG_ID_D80 = 0xd80,
+/*20180117 to 20180117
+계정설정정보 받아오는데 실패 했습니다.( 재시도를 위해서는 재시작 해야 합니다. )
+20180124 to latest
+계정 설정 데이터를 불러오는 중에 오류가 발생했습니다. ( 재시도를 위해서는 재시작 해야 합니다. )
+*/
+ MSG_ID_D81 = 0xd81,
+/*20180117 to latest
+해당 스킬은 파티 상태에서 사용 가능합니다.
+*/
+ MSG_ID_D82 = 0xd82,
+#endif
+#if PACKETVER >= 20180124
+/*20180124 to latest
+파티 모집을 중단하였습니다.
+*/
+ MSG_ID_D83 = 0xd83,
+/*20180124 to latest
+길드 상납 경험치는 최대 %d%%까지 가능합니다.
+*/
+ MSG_ID_D84 = 0xd84,
+/*20180124 to latest
+길드 레벨이 최대여서 더 이상 경험치를 상납할 수 없습니다.
+*/
+ MSG_ID_D85 = 0xd85,
+#endif
+#if PACKETVER >= 20180207
+/*20180207 to latest
+계정보안을 위하여 MOTP미사용자는 홈페이지 로그인만 가능합니다.
+홈페이지로 로그인을 시도해주시기 바랍니다.
+*/
+ MSG_ID_D86 = 0xd86,
+/*20180207 to latest
+물리 공격력과 마법 공격력이 향상되었습니다.
+*/
+ MSG_ID_D87 = 0xd87,
+/*20180207 to latest
+물리 공격력과 마법 공격력이 감소되었습니다.
+*/
+ MSG_ID_D88 = 0xd88,
+/*20180207 to latest
+%s 출석체크 보상
+%s Attendance Check Reward
+*/
+ MSG_ID_D89 = 0xd89,
+/*20180207 to 20180502
+이벤트 기간 : %02d월 %02d일 ~ %2d월 %2d일 24:00까지
+Event period : From %02d/%02d ~ Until %2d/%2d (Month/Day) 24:00
+20180516 to latest
+이벤트 기간 : %02d월 %02d일 ~ %02d월 %02d일 24:00까지
+*/
+ MSG_ID_D8A = 0xd8a,
+/*20180207 to latest
+%d일차
+%d Day
+*/
+ MSG_ID_D8B = 0xd8b,
+/*20180207 to latest
+%d일차 출석체크
+클릭해주세요~!
+%d Day attendance check
+Please click~!
+*/
+ MSG_ID_D8C = 0xd8c,
+/*20180207 to latest
+%d일차 출석 성공!
+%d Day attendance success!
+*/
+ MSG_ID_D8D = 0xd8d,
+/*20180207 to latest
+D-day
+*/
+ MSG_ID_D8E = 0xd8e,
+/*20180207 to latest
+일
+Day
+*/
+ MSG_ID_D8F = 0xd8f,
+/*20180207 to latest
+출석체크에 실패하였습니다. 다시 실행해주세요.
+Attendance Check failed. Please run again.
+*/
+ MSG_ID_D90 = 0xd90,
+/*20180207 to latest
+출석체크
+Attendance Check
+*/
+ MSG_ID_D91 = 0xd91,
+/*20180207 to latest
+현재 출석체크 이벤트 기간이 아닙니다
+This is not the current attendance check event
+*/
+ MSG_ATTENDANCE_UNAVAILABLE = 0xd92,
+/*20180207 to 20180328
+길드 상납 경험치가 max에 도달하여, 더 이상 길드 경험치를 누적할 수 없습니다
+20180404 to latest
+길드 상납 경험치가 max에 도달하여, 더 이상 길드 경험치를 누적할 수 없습니다.
+*/
+ MSG_ID_D93 = 0xd93,
+/*20180207 to latest
+개인 상납 경험치가 max에 도달하여, 더 이상 길드 경험치를 누적할 수 없습니다.
+*/
+ MSG_ID_D94 = 0xd94,
+#endif
+#if PACKETVER >= 20180213
+/*20180213 to latest
+메시지
+*/
+ MSG_ID_D95 = 0xd95,
+/*20180213 to latest
+트위터에 메세지 전송을 실패 했습니다.
+*/
+ MSG_ID_D96 = 0xd96,
+/*20180213 to latest
+영문 4자, 한글 2자 이상으로 입력해야 합니다.
+Enter 4 english words and 2 chinese words
+*/
+ MSG_ID_D97 = 0xd97,
+#endif
+#if PACKETVER >= 20180307
+/*20180307 to latest
+몬스터의 테이밍이 불가능한 지역입니다.
+*/
+ MSG_ID_D98 = 0xd98,
+#endif
+#if PACKETVER >= 20180321
+/*20180321 to latest
+순위를 가져오고 있습니다...
+*/
+ MSG_ID_D99 = 0xd99,
+/*20180321 to latest
+해당 스킬은 파티장일때만 사용 가능합니다.
+*/
+ MSG_ID_D9A = 0xd9a,
+#endif
+#if PACKETVER >= 20180404
+/*20180404 to latest
+파트너의 SP가 부족하거나, 스킬 사용 불가 상태입니다.
+*/
+ MSG_ID_D9B = 0xd9b,
+/*20180404 to latest
+아르바이트 노점 강제 종료 알림메일
+*/
+ MSG_ID_D9C = 0xd9c,
+/*20180404 to latest
+안녕하세요. 운영팀입니다.
+해당 아르바이트 노점은 운영정책 위배되는 사항이 확인되어 강제 종료되었습니다.
+자세한 확인을 원하시는 경우에는 1:1 문의를 접수해 주시기 바랍니다.
+감사합니다
+*/
+ MSG_ID_D9D = 0xd9d,
+/*20180404 to latest
+50% 이상의 값을 입력할 수 없습니다.
+*/
+ MSG_ID_D9E = 0xd9e,
+/*20180404 to latest
+파티 가입 요청을 보냈습니다.
+*/
+ MSG_ID_D9F = 0xd9f,
+/*20180404 to latest
+모험가 중개소에 파티를 등록할 수 없습니다
+*/
+ MSG_ID_DA0 = 0xda0,
+/*20180404 to latest
+수락
+*/
+ MSG_ID_DA1 = 0xda1,
+/*20180404 to latest
+거절
+*/
+ MSG_ID_DA2 = 0xda2,
+/*20180404 to latest
+설정 권한은 파티장에게 있습니다.
+*/
+ MSG_ID_DA3 = 0xda3,
+/*20180404 to latest
+해당 캐릭터를 찾을 수 없습니다.
+*/
+ MSG_ID_DA4 = 0xda4,
+/*20180404 to latest
+노점 강제 철거
+*/
+ MSG_ID_DA5 = 0xda5,
+/*20180404 to latest
+해당 파티의 파티장을 찾을 수 없습니다.
+*/
+ MSG_ID_DA6 = 0xda6,
+/*20180404 to latest
+잡레벨이 낮아 파티에 가입 할 수 없습니다.
+*/
+ MSG_ID_DA7 = 0xda7,
+/*20180404 to latest
+현재 요청자가 파티가입이 불가능한 지역에 있습니다.
+*/
+ MSG_ID_DA8 = 0xda8,
+/*20180404 to latest
+파티 인원수가 초과되었습니다.
+*/
+ MSG_ID_DA9 = 0xda9,
+/*20180404 to latest
+%s 파티의 파티장이 파티 가입을 승인했습니다.
+*/
+ MSG_ID_DAA = 0xdaa,
+/*20180404 to latest
+%s 파티의 파티장이 파티 가입을 거부했습니다.
+*/
+ MSG_ID_DAB = 0xdab,
+/*20180404 to latest
+%s 님이 이미 파티에 가입 중입니다.
+*/
+ MSG_ID_DAC = 0xdac,
+/*20180404 to latest
+%s 님의 파티 가입을 수락했습니다.
+*/
+ MSG_ID_DAD = 0xdad,
+/*20180404 to latest
+%s 님의 파티 가입을 거부했습니다.
+*/
+ MSG_ID_DAE = 0xdae,
+/*20180404 to latest
+파티 요청을 받을 수 없는 상태여서 %s님의 신청이 거절되었습니다.
+*/
+ MSG_ID_DAF = 0xdaf,
+/*20180404 to latest
+모험가 중개소 리스트
+*/
+ MSG_ID_DB0 = 0xdb0,
+/*20180404 to latest
+파티 가입 요청
+*/
+ MSG_ID_DB1 = 0xdb1,
+/*20180404 to latest
+파티장이 아닌 경우, 모험가 중개소에 파티를 등록할 수 없습니다.
+*/
+ MSG_ID_DB2 = 0xdb2,
+/*20180404 to 20180404
+파티 모집 중단에 실패했습니다.
+20180418 to latest
+파티 모집을 중단할 수 없습니다.
+*/
+ MSG_ID_DB3 = 0xdb3,
+#endif
+#if PACKETVER >= 20180418
+/*20180418 to latest
+존재하지 않는 파티 글입니다.
+*/
+ MSG_ID_DB4 = 0xdb4,
+/*20180418 to 20180418
+시야 확장
+20180425 to latest
+Zoom Out
+*/
+ MSG_ID_DB5 = 0xdb5,
+/*20180418 to 20180418
+%s : 시야확장을 켜거나 끌수 있습니다 On Off
+20180425 to latest
+%s : Zoom Out을 켜거나 끌수 있습니다 On Off
+*/
+ MSG_ID_DB6 = 0xdb6,
+/*20180418 to 20180418
+시야를 확장합니다(On)
+20180425 to latest
+Zoom Out 기능을 켭니다 (On)
+*/
+ MSG_ID_DB7 = 0xdb7,
+/*20180418 to 20180418
+시야확장을 해제합니다(Off)
+20180425 to latest
+Zoom Out 기능을 해제합니다 (Off)
+*/
+ MSG_ID_DB8 = 0xdb8,
+/*20180418 to 20180418
+/expandsight
+20180425 to latest
+/zoom
+*/
+ MSG_ID_DB9 = 0xdb9,
+/*20180418 to latest
+모험가 중개소
+*/
+ MSG_ID_DBA = 0xdba,
+/*20180418 to latest
+파티장인 경우, 가입 요청을 할 수 없습니다.
+*/
+ MSG_ID_DBB = 0xdbb,
+/*20180418 to latest
+모험가 중개소에 등록 중입니다. 잠시만 기다려 주세요.
+*/
+ MSG_ID_DBC = 0xdbc,
+/*20180418 to latest
+더 이상 직업을 선택할 수 없습니다.
+*/
+ MSG_ID_DBD = 0xdbd,
+/*20180418 to latest
+게임 중 해당 유저의 가입 요청을 받지 않습니다.
+*/
+ MSG_ID_DBE = 0xdbe,
+#endif
+#if PACKETVER >= 20180502
+/*20180502 to latest
+잠시 후 다시 열어주시기 바랍니다.
+*/
+ MSG_ID_DBF = 0xdbf,
+/*20180502 to latest
+공성시작 전 %d분 동안은 해당 기능을 이용하실 수 없습니다.
+*/
+ MSG_ID_DC0 = 0xdc0,
+#endif
+#if PACKETVER >= 20180516
+/*20180516 to latest
+/viewclear
+*/
+ MSG_ID_DC1 = 0xdc1,
+/*20180516 to latest
+건물 반 투명화 ON
+*/
+ MSG_ID_DC2 = 0xdc2,
+/*20180516 to latest
+건물 반 투명화 OFF
+*/
+ MSG_ID_DC3 = 0xdc3,
+/*20180516 to latest
+건물 투명화
+*/
+ MSG_ID_DC4 = 0xdc4,
+/*20180516 to latest
+알로 되돌리기가 실패했습니다. 로덱스 작성창을 닫아주세요.
+*/
+ MSG_ID_DC5 = 0xdc5,
+/*20180516 to latest
+Emblem Frame
+*/
+ MSG_ID_DC6 = 0xdc6,
+/*20180516 to latest
+Emblem 테두리를 그려줍니다
+*/
+ MSG_ID_DC7 = 0xdc7,
+/*20180516 to latest
+Emblem 테두리를 그려주지 않습니다
+*/
+ MSG_ID_DC8 = 0xdc8,
+#endif
+#if PACKETVER >= 20180605
+/*20180605 to latest
+장착된 무기가 없습니다.
+*/
+ MSG_ID_DC9 = 0xdc9,
+/*20180605 to latest
+에너지 구체가 부족합니다.
+*/
+ MSG_ID_DCA = 0xdca,
+/*20180605 to latest
+배울 수 없는 스킬(%s)이 포함되어있습니다.
+*/
+ MSG_ID_DCB = 0xdcb,
+/*20180605 to latest
+/frame
+*/
+ MSG_ID_DCC = 0xdcc,
+#endif
+#if PACKETVER >= 20180620
+/*20180620 to latest
+웨폰 블로킹 발동후 제한시간 내에 사용가능한 스킬입니다.
+*/
+ MSG_ID_DCD = 0xdcd,
+#endif
+#if PACKETVER >= 20180704
+/*20180704 to latest
+아이디혹은 패스워드가 잘못되었읍니다.
+*/
+ MSG_ID_DCE = 0xdce,
+#endif
+#if PACKETVER >= 20180718
+/*20180718 to latest
+E X P : %.1f%% ( basic 100.0%% %s %.1f%%)
+*/
+ MSG_ID_DCF = 0xdcf,
+/*20180718 to latest
+DROP : %.1f%% ( basic 100.0%% %s %.1f%%)
+*/
+ MSG_ID_DD0 = 0xdd0,
+/*20180718 to latest
+DEATH : %.1f%% ( basic 100.0%% %s %.1f%%)
+*/
+ MSG_ID_DD1 = 0xdd1,
+#endif
+#if PACKETVER >= 20180829
+/*20180829 to latest
+영문이나 러시아어 단독으로만 사용이 가능합니다.
+*/
+ MSG_ID_DD2 = 0xdd2,
+/*20180829 to latest
+you must have an AccessTicket to login
+*/
+ MSG_ID_DD3 = 0xdd3,
+/*20180829 to latest
+창고를 불러오는 중입니다.
+*/
+ MSG_ID_DD4 = 0xdd4,
+/*20180829 to latest
+NOW LOADING..
+*/
+ MSG_ID_DD5 = 0xdd5,
+#endif
+#if PACKETVER >= 20180919
+/*20180919 to latest
+삭제
+*/
+ MSG_ID_DD6 = 0xdd6,
+/*20180919 to latest
+답장
+*/
+ MSG_ID_DD7 = 0xdd7,
+/*20180919 to latest
+전송
+*/
+ MSG_ID_DD8 = 0xdd8,
+/*20180919 to latest
+이름확인
+*/
+ MSG_ID_DD9 = 0xdd9,
+/*20180919 to latest
+공지
+Notice
+*/
+ MSG_ID_DDA = 0xdda,
+/*20180919 to latest
+일반
+General
+*/
+ MSG_ID_DDB = 0xddb,
+/*20180919 to latest
+반송
+Clear
+*/
+ MSG_ID_DDC = 0xddc,
+/*20180919 to latest
+검색
+Search
+*/
+ MSG_ID_DDD = 0xddd,
+#endif
+#if PACKETVER >= 20181031
+/*20181031 to latest
+펫 먹이주기에 실패했습니다. 먹이를 줄 수 없는 상태입니다.
+*/
+ MSG_ID_DDE = 0xdde,
+/*20181031 to latest
+호문 먹이주기에 실패했습니다. 먹이를 줄 수 없는 상태입니다.
+*/
+ MSG_ID_DDF = 0xddf,
+/*20181031 to latest
+화폐
+*/
+ MSG_ID_DE0 = 0xde0,
+/*20181031 to latest
+%s %d개
+*/
+ MSG_ID_DE1 = 0xde1,
+/*20181031 to latest
+교환에 실패하였습니다.
+*/
+ MSG_ID_DE2 = 0xde2,
+/*20181031 to latest
+교환이 잘 이루어졌습니다.
+*/
+ MSG_ID_DE3 = 0xde3,
+/*20181031 to latest
+교환에 필요한 재화가 부족합니다.
+*/
+ MSG_ID_DE4 = 0xde4,
+/*20181031 to latest
+해당 아이템은 이미 판매되어 재고가 부족합니다.
+*/
+ MSG_ID_DE5 = 0xde5,
+/*20181031 to latest
+사망
+*/
+ MSG_ID_DE6 = 0xde6,
+/*20181031 to latest
+PvP
+*/
+ MSG_ID_DE7 = 0xde7,
+/*20181031 to latest
+아이템 소지 확장
+*/
+ MSG_ID_DE8 = 0xde8,
+/*20181031 to 20181031
+(^0000ff%s^000000)을 소모하여, 아이템 최대 소지 종류수를 확장하시겠습니까?
+(^0000ff%d^000000)에서 (^0000ff%d^000000)로 확장됩니다.
+^ff0000※ 소모된 아이템 및 확장된 최대 소지 종류수는 되돌릴 수 없습니다.^000000
+20181107 to latest
+^0000ff%s^000000을 소모하여, 아이템 최대 소지 종류수를 확장하시겠습니까?
+(^0000ff%d^000000)에서 (^0000ff%d^000000)로 확장됩니다.
+^ff0000※ 소모된 아이템 및 확장된 최대 소지 종류수는 되돌릴 수 없습니다.^000000
+*/
+ MSG_ID_DE9 = 0xde9,
+/*20181031 to 20181031
+아이템 소지 종류 수 확장에 실패하였습니다.
+20181107 to latest
+아이템 최대 소지 종류수 확장에 실패하였습니다.
+*/
+ MSG_ID_DEA = 0xdea,
+/*20181031 to 20181031
+아이템 소지 종류 수 확장을 위해, 다른 작업을 종료하여 주시기 바랍니다.
+20181107 to latest
+아이템 최대 소지 종류수 확장을 위해, 다른 작업을 종료하여 주시기 바랍니다.
+*/
+ MSG_ID_DEB = 0xdeb,
+/*20181031 to 20181031
+아이템 소지 확장에 필요한 아이템을 소지하고 있지 않습니다.
+20181107 to latest
+아이템 최대 소지 종류수 확장에 필요한 아이템을 소지하고 있지 않습니다.
+*/
+ MSG_ID_DEC = 0xdec,
+/*20181031 to 20181031
+이미 아이템 소지 종류 수 확장이 최대로 적용 중입니다.
+20181107 to latest
+더 이상 아이템 최대 소지 종류수를 확장 할 수 없습니다.
+*/
+ MSG_ID_DED = 0xded,
+/*20181031 to 20181031
+아이템 소지 확장에 성공하였습니다.
+20181107 to latest
+아이템 최대 소지 종류수 확장에 성공하였습니다.
+*/
+ MSG_ID_DEE = 0xdee,
+#endif
+#if PACKETVER >= 20181121
+/*20181121 to latest
+같은 아이템을 %d개 이상 가질 수 없습니다.
+*/
+ MSG_ID_DEF = 0xdef,
+/*20181121 to latest
+소지 한계량 초과로 구입이 불가능합니다.
+*/
+ MSG_ID_DF0 = 0xdf0,
+/*20181121 to latest
+해당 아이템은 한 번에 한 개만 살 수 있습니다.
+*/
+ MSG_ID_DF1 = 0xdf1,
+#endif
+#if PACKETVER >= 20181205
+/*20181205 to latest
+성제
+*/
+ MSG_ID_DF2 = 0xdf2,
+/*20181205 to latest
+소울리퍼
+*/
+ MSG_ID_DF3 = 0xdf3,
+#endif
+#if PACKETVER >= 20181212
+/*20181212 to latest
+설정한 내용은 정상 종료 시 서버에 저장됩니다.
+*/
+ MSG_ID_DF4 = 0xdf4,
+#endif
+#if PACKETVER >= 20190109
+/*20190109 to latest
+Capture Monster
+*/
+ MSG_ID_DF5 = 0xdf5,
+/*20190109 to latest
+message
+*/
+ MSG_ID_DF6 = 0xdf6,
+/*20190109 to latest
+TITLE
+*/
+ MSG_ID_DF7 = 0xdf7,
+/*20190109 to latest
+데미지 표기 확장
+*/
+ MSG_ID_DF8 = 0xdf8,
+#endif
+
+};
+#endif /* MAP_MESSAGES_RE_H */
diff --git a/src/map/messages_sak.h b/src/map/messages_sak.h
new file mode 100644
index 000000000..2c7bfd661
--- /dev/null
+++ b/src/map/messages_sak.h
@@ -0,0 +1,8268 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2013-2019 Hercules Dev Team
+ * Copyright (C) 2018-2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef MAP_MESSAGES_SAK_H
+#define MAP_MESSAGES_SAK_H
+
+/* This file is autogenerated, please do not commit manual changes
+
+Latest version: 20090617
+*/
+
+enum clif_messages {
+/*20031029 to latest
+동의 하십니까?
+Do you agree?
+*/
+ MSG_DO_YOU_AGREE = 0x0,
+/*20031029 to latest
+서버 연결 실패
+Failed to Connect to Server.
+*/
+ MSG_SERVER_CONNECTION_FAILED = 0x1,
+/*20031029 to latest
+서버와 연결이 끊어졌습니다.
+Disconnected from Server.
+*/
+ MSG_UNABLE_TO_CONNECT_SERVER = 0x2,
+/*20031029 to 20080618
+서버와 연결이 끊어졌습니다.
+Disconnected from Server.
+20080624 to latest
+서버와 연결이 끊어졌습니다!
+Disconnected from Server!
+*/
+ MSG_BANNED = 0x3,
+/*20031029 to latest
+서버 종료됨
+Server Closed.
+*/
+ MSG_SERVER_OFF = 0x4,
+/*20031029 to latest
+같은 계정으로 다른 사용자가 로그인 하였습니다.
+Someone has Logged in with this ID.
+*/
+ MSG_DOUBLE_LOGIN_PROHIBITED = 0x5,
+/*20031029 to latest
+등록되지 않은 계정입니다. 다시 확인 바랍니다.
+Unregistered ID. Please make sure you have a registered account and you have correctly typed in the user ID.
+*/
+ MSG_INCORRECT_USERID = 0x6,
+/*20031029 to 20070704
+비밀번호가 틀립니다
+20070710 to latest
+입력하신 비밀번호가 올바르지 않습니다.
+Incorrect User ID or Password. Please try again.
+*/
+ MSG_INCORRECT_PASSWORD = 0x7,
+/*20031029 to latest
+본 ID 는 사용기간이 만료 되었습니다
+This ID is expired.
+*/
+ MSG_ID_EXPIRED = 0x8,
+/*20031029 to latest
+서버 접근 거부
+Rejected from Server.
+*/
+ MSG_ACCESS_DENIED = 0x9,
+/*20031029 to latest
+같은 캐릭터 이름이 있습니다.
+Character Name already exists.
+*/
+ MSG_CHARACTER_NAME_ALREADY_EXISTS = 0xa,
+/*20031029 to latest
+캐릭터 생성 거부됨
+Character Creation is denied.
+*/
+ MSG_CHARACTER_CREATION_DENIED = 0xb,
+/*20031029 to latest
+캐릭터 삭제 거부
+Character Deletion is denied.
+*/
+ MSG_CANNOT_DELETE_CHARACTER = 0xc,
+/*20031029 to latest
+방제목를 입력하세요.
+Please Enter Room Title.
+*/
+ MSG_ENTER_ROOM_TITLE = 0xd,
+/*20031029 to latest
+불량단어가 검출되었습니다.
+Foul Language Detected.
+*/
+ MSG_BAD_SENTANGE = 0xe,
+/*20031029 to latest
+암호를 입력하세요.
+Please enter Password.
+*/
+ MSG_ENTER_PASSWORD = 0xf,
+/*20031029 to latest
+암호를 영문 4자 이상 입력하세요.
+Please enter Password. Passwords must be at least 4 characters long.
+*/
+ MSG_Enter_Password_more_than_4_char = 0x10,
+/*20031029 to latest
+종료 하시겠습니까?
+Are you sure that you want to quit?
+*/
+ MSG_DO_YOU_REALLY_WANT_TO_QUIT = 0x11,
+/*20031029 to latest
+4자 이상 입력해주세요. 사용자 계정이 없으신분들은 왼쪽 하단의 [신청] 버튼을 눌러 계정을 만드시기 바랍니다.
+Passwords are at least 4 characters long. Please try again.
+*/
+ MSG_NAME_MUST_EXCEED_4_CHAR = 0x12,
+/*20031029 to 20070704
+캐릭터를 삭제하겠습니까?
+20070618 to latest
+한 번 삭제된 캐릭터 및 관련 정보는 다시 복구되지 않습니다. 캐릭터를 삭제하시겠습니까?
+Are you sure that you want to delete this character?
+*/
+ MSG_DELETE_CHARACTER = 0x13,
+/*20031029 to latest
+불량단어가 검출되었습니다.
+Foul Language Detected.
+*/
+ MSG_BAD_NAME = 0x14,
+/*20031029 to latest
+이름을 입력해 주세요.(한글 2자 영문 4자 이상)
+Character Name must be at least 4 characters long.
+*/
+ MSG_ENTER_NAME_MORE_THAN_4_CHAR = 0x15,
+/*20031029 to latest
+명령어 일람: /h
+Command List: /h | /help
+*/
+ MSG_LIST_COMMAND = 0x16,
+/*20031029 to latest
+이펙트 On
+Effects On
+*/
+ MSG_EFFECT_ON = 0x17,
+/*20031029 to latest
+이펙트 Off
+Effects Off
+*/
+ MSG_EFFECT_OFF = 0x18,
+/*20031029 to latest
+사운드 볼륨
+Sound Volume
+*/
+ MSG_VOLUME_OF_SOUND = 0x19,
+/*20031029 to latest
+배경음악 볼륨
+BGM Volume
+*/
+ MSG_VOLUME_OF_BGM = 0x1a,
+/*20031029 to latest
+효과음 On
+Sound Effects On
+*/
+ MSG_SOUND_ON = 0x1b,
+/*20031029 to latest
+효과음 Off
+Sound Effects Off
+*/
+ MSG_SOUND_OFF = 0x1c,
+/*20031029 to latest
+프레임스킵 On
+Frame Skip On
+*/
+ MSG_FRAME_SKIP_ON = 0x1d,
+/*20031029 to latest
+프레임스킵 Off
+Frame Skip Off
+*/
+ MSG_FRAME_SKIP_OFF = 0x1e,
+/*20031029 to latest
+배경음악 On
+BGM On
+*/
+ MSG_BGM_ON = 0x1f,
+/*20031029 to latest
+배경음악 Off
+BGM Off
+*/
+ MSG_BGM_OFF = 0x20,
+/*20031029 to latest
+/h or /help: 명령어 일람
+/h or /help: Shows this Command Help List
+*/
+ MSG_EXPLAIN_HELP = 0x21,
+/*20031029 to latest
+/w or /who or /접속자 or /누구: 현재 접속자수 보기
+/w or /who or /player or /who: wiew current the number of player
+*/
+ MSG_EXPLAIN_WHO = 0x22,
+/*20031029 to latest
+/음악 : 배경음악 On Off
+/music: Turns BGM On or Off
+*/
+ MSG_EXPLAIN_MUSIC = 0x23,
+/*20031029 to latest
+/효과음 : 효과음 On Off
+/sound: Turns Sound Effects On or Off
+*/
+ MSG_EXPLAIN_SOUND = 0x24,
+/*20031029 to latest
+/이펙트 : 이펙트 On Off
+/effect: Effects On or Off
+*/
+ MSG_EXPLAIN_EFFECT = 0x25,
+/*20031029 to latest
+/좌표 or /장소: 현재 위치 표시
+/where: Shows your present location
+*/
+ MSG_EXPLAIN_POS = 0x26,
+/*20031029 to latest
+/skip : 프래임스킵 On Off
+/skip: Turns Frame Skip On or Off
+*/
+ MSG_EXPLAIN_FRAMESKIP = 0x27,
+/*20031029 to latest
+/v (0~127): 효과음 볼륨조정
+/v (0~127): Controls the volume of the Sound Effects
+*/
+ MSG_EXPLAIN_SOUNDVOLUME = 0x28,
+/*20031029 to latest
+/bv (0~127): 배경음악 볼륨조정
+/bv (0~127): Controls the volume of the BGM
+*/
+ MSG_EXPLAIN_BGMVOLUME = 0x29,
+/*20031029 to latest
+/ex (캐릭터이름) or /차단 (캐릭터이름) : 해당캐릭터에 대해 귓말차단
+/ex (Character Name): Blocks whispering from the Character
+*/
+ MSG_EXPLAIN_SAYISOLATION = 0x2a,
+/*20031029 to latest
+/ex or /차단 : 귓말차단 캐릭터 리스트
+/ex: View a list of Characters you have Blocked
+*/
+ MSG_EXPLAIN_LIST_SAYISOLATION_CHAR = 0x2b,
+/*20031029 to latest
+/in (캐릭터이름) or /해제 (캐릭터이름) : 해당캐릭터에 대해 귓말허용
+/in (Character Name): Allows whispering from the Character
+*/
+ MSG_EXPLAIN_SAY_PERMIT = 0x2c,
+/*20031029 to latest
+/inall or /해제전부 : 모두에게 귓말허용
+/inall: Allows whispers from anyone
+*/
+ MSG_EXPLAIN_SAY_PERMITALL = 0x2d,
+/*20031029 to latest
+/exall or /차단전부 : 모두에게 귓말차단
+/exall: Blocks whispers from everyone
+*/
+ MSG_EXPLAIN_SAY_ISOLATEALL = 0x2e,
+/*20031029 to latest
+다른유저 캐릭터를 마우스 오른버튼을 누르고 있는 상태에서 왼버튼으로 클릭하면 그캐릭터이름이 귓말콤보박스에 저장됩니다.
+Right click on a character and select [Register as a Friend] to add a person to your Friend List.
+*/
+ MSG_EXPLAIN_TIP1 = 0x2f,
+/*20031029 to latest
+단축아이탬창(F12) 소비장비 아이템을 드래그한후 사용하세요. 사용키(F1F2F3F4F5F6F7F8F9)
+F12 Brings up a Hotkey Window which allows you to drag and drop Recovery Items, Equipment and Skills into it for faster access.
+*/
+ MSG_EXPLAIN_TIP2 = 0x30,
+/*20031029 to latest
+같은말을 3번이상 연속해서 전송할 수 없습니다.
+You can't type the same word/phrase more than 3 times.
+*/
+ MSG_NO_SAME_SENTANCE = 0x31,
+/*20031029 to latest
+불량단어 검출로 전송이 중단 되었습니다.
+Chat Filter: Yeah, uh, I don't think so buddy...
+*/
+ MSG_NO_SEND_BECAUSE_INSULT = 0x32,
+/*20031029 to latest
+같은아이템은 한번만 올릴수 있습니다.
+You cannot overlap items on a window.
+*/
+ MSG_CAN_DRAG_ITEM_OLNY_ONETIME = 0x33,
+/*20031029 to latest
+무게가 초과하여 아이템을 가질 수 없습니다.
+You cannot carry more items because you are overweight.
+*/
+ MSG_CANT_GET_ITEM_BECAUSE_WEIGHT = 0x34,
+/*20031029 to latest
+아이템을 가질 수 없습니다.
+You cannot get the item.
+*/
+ MSG_CANT_GET_ITEM = 0x35,
+/*20031029 to latest
+거래가 잘 이루어졌습니다.
+The deal has successfully completed.
+*/
+ MSG_DEAL_SECCESS = 0x36,
+/*20031029 to latest
+돈이 부족합니다.
+You do not have enough zeny.
+*/
+ MSG_INSUFFICIENT_MONEY = 0x37,
+/*20031029 to latest
+무게가 초과 되었습니다.
+You are over your Weight Limit.
+*/
+ MSG_OVER_WEIGHT = 0x38,
+/*20031029 to latest
+거래가 실패 했습니다.
+The deal has failed.
+*/
+ MSG_DEAL_FAIL = 0x39,
+/*20031029 to latest
+모두에게 귓말거부상태로됨
+You've blocked whispers from everyone.
+*/
+ MSG_REFUSE_HEAR_ALL = 0x3a,
+/*20031029 to latest
+모두에게 귓말거부요청 실패함
+You've failed to block all whispers.
+*/
+ MSG_REQ_REFUSE_HEAR_ALL_FAIL = 0x3b,
+/*20031029 to latest
+모두에게 귓말가능상태가됨
+You've allowed whispers from everyone.
+*/
+ MSG_HEAR_ALL = 0x3c,
+/*20031029 to latest
+모두에게 귓말가능요청 실패함
+You've failed to allow all whispers.
+*/
+ MSG_REQ_HEAR_ALL_FAIL = 0x3d,
+/*20031029 to latest
+귓말 거부 리스트가 없습니다
+You have no Block List.
+*/
+ MSG_NO_REFUSE_HEAR_LIST = 0x3e,
+/*20031029 to latest
+-귓말 거부 리스트-
+[ Character Block List ]
+*/
+ MSG_REFUSE_HEAR_LIST = 0x3f,
+/*20031029 to latest
+방이 잘 만들어 졌습니다.
+Room has been successfully created.
+*/
+ MSG_ROOM_IS_MADE = 0x40,
+/*20031029 to latest
+방갯수가 허용갯수를 초과 하였습니다.
+Room Limit Exceeded.
+*/
+ MSG_TOO_MANY_ROOM = 0x41,
+/*20031029 to latest
+같은 방제목이 있습니다.
+Same Room exists.
+*/
+ MSG_SAME_ROOM_TITLE = 0x42,
+/*20031029 to latest
+인원초과로 방에 들어갈 수 없습니다.
+The Room is full.
+*/
+ MSG_TOO_MANY_PEOPLE_IN_ROOM = 0x43,
+/*20031029 to latest
+강제로 퇴장된 방입니다.
+You have been kicked out of this room.
+*/
+ MSG_YOU_HAVE_BANNED_FROM_THE_ROOM = 0x44,
+/*20031029 to latest
+교환요청을 거절 했습니다.
+The deal has been rejected.
+*/
+ MSG_REJECT_DEAL = 0x45,
+/*20031029 to latest
+교환가능거리를 벗어났습니다.
+You are too far away from the person to trade.
+*/
+ MSG_TOO_FAR_TO_DEAL = 0x46,
+/*20031029 to latest
+해당 캐릭터가 없습니다.
+The Character is not currently online or does not exist.
+*/
+ MSG_CHARACTER_IS_NOT_EXIST = 0x47,
+/*20031029 to latest
+다른캐릭터와 교환중입니다.
+The person is in another deal.
+*/
+ MSG_CHARACTER_IS_DEALING = 0x48,
+/*20031029 to latest
+상태캐릭터 중량초과로 올려놓을수가 없습니다.
+*/
+ MSG_CHARACTER_IS_OVER_WEIGHT = 0x49,
+/*20031029 to latest
+거래가 취소 되었습니다.
+The deal has been canceled.
+*/
+ MSG_DEAL_IS_CANCELED = 0x4a,
+/*20031029 to latest
+아이템 교환이 잘 되었습니다.
+The deal has successfully completed.
+*/
+ MSG_DEAL_SUCCESS = 0x4b,
+/*20031029 to latest
+아이템 교환이 실패 하였습니다.
+The deal has failed.
+*/
+ MSG_DEAL_FAILED = 0x4c,
+/*20031029 to latest
+파티가 만들어졌습니다.
+Party has successfully been organized.
+*/
+ MSG_PARTY_MAKE_SUCCEED = 0x4d,
+/*20031029 to latest
+같은 파티이름이 있습니다.
+That Party Name already exists.
+*/
+ MSG_SAME_PARTY_NAME = 0x4e,
+/*20031029 to latest
+이미 파티에 속해있습니다.
+The Character is already in a party.
+*/
+ MSG_YOU_ARE_ALREADY_IN_PARTY = 0x4f,
+/*20031029 to latest
+다른파티에 가입되어 있습니다.
+The Character already joined another party.
+*/
+ MSG_CHARACTER_IS_ALREADY_IN_PARTY = 0x50,
+/*20031029 to latest
+파티가입을 거부했습니다.
+Request for party rejected.
+*/
+ MSG_CHARACTER_REJECT_JOIN = 0x51,
+/*20031029 to latest
+파티가입을 수락했습니다.
+Request for party accepted.
+*/
+ MSG_CHARACTER_ACCEPT_JOIN = 0x52,
+/*20031029 to latest
+파티정원을 초과했습니다.
+Party Capacity exceeded.
+*/
+ MSG_TOO_MANY_PEOPLE_IN_PARTY = 0x53,
+/*20031029 to latest
+파티에서 탈퇴하였습니다.
+You left the party.
+*/
+ MSG_YOU_LEAVE_FROM_PARTY = 0x54,
+/*20031029 to latest
+전체에게 보냄
+Send to All
+*/
+ MSG_SEND_TO_ALL = 0x55,
+/*20031029 to latest
+파티에게 보냄
+Send to Party
+*/
+ MSG_SEND_TO_PARTY = 0x56,
+/*20031029 to latest
+님과의 거래요청
+Request a deal with %s
+*/
+ MSG_REQ_DEAL_WITH = 0x57,
+/*20031029 to latest
+님 파티에 가입요청
+Ask %s to join your party
+*/
+ MSG_REQ_JOIN_PARTY = 0x58,
+/*20031029 to latest
+비공개 :
+Pri:
+*/
+ MSG_ROOM_PRIVATE = 0x59,
+/*20031029 to latest
+공개 :
+Pub:
+*/
+ MSG_ROOM_PUBLIC = 0x5a,
+/*20031029 to latest
+마지막 체크지점부터 시작하려면 '재시작'을 캐릭터 선택으로 돌아가려면 '종료'를 눌러주세요.
+Click ''Restart'' to go back to your save point or click ''Exit'' to select another character.
+*/
+ MSG_RESTART_MSG = 0x5b,
+/*20031029 to latest
+원하는 거래를 선택하세요.
+Please select a Deal Type.
+*/
+ MSG_SELECT_DEAL_TYPE = 0x5c,
+/*20031029 to latest
+님이 거래를 요청했습니다.
+ requests a deal.
+*/
+ MSG_SUGGEST_DEAL = 0x5d,
+/*20031029 to latest
+ 파티에서 초청 메시지가 왔습니다. 합류하겠습니까?
+ Party has sent you an invitation. Would you like to join?
+*/
+ MSG_SUGGEST_JOIN_PARTY = 0x5e,
+/*20031029 to latest
+명령이 틀렸습니다.
+Invalid Command
+*/
+ MSG_INVALID_COMMAND = 0x5f,
+/*20031029 to latest
+탈퇴하기
+Leave party
+*/
+ MSG_LEAVE_PARTY = 0x60,
+/*20031029 to latest
+제명시키기
+Expel
+*/
+ MSG_EXPEL = 0x61,
+/*20031029 to latest
+쪽지보내기
+Send Message
+*/
+ MSG_MSG = 0x62,
+/*20031029 to latest
+1:1 대화
+1:1 Chat
+*/
+ MSG_1ON1 = 0x63,
+/*20031029 to latest
+정보
+Information
+*/
+ MSG_CHARACTER_INFO = 0x64,
+/*20031029 to latest
+파티설정
+Party Setup
+*/
+ MSG_PARTY_SETTING = 0x65,
+/*20031029 to latest
+친구
+Friend
+*/
+ MSG_FRIEND = 0x66,
+/*20031029 to latest
+파티
+Party
+*/
+ MSG_PARTY = 0x67,
+/*20031029 to latest
+장착아이템
+Equipment
+*/
+ MSG_EQUIPED_ITEM = 0x68,
+/*20031029 to latest
+스테이터스
+Status
+*/
+ MSG_STATUS_ = 0x69,
+/*20031029 to latest
+소지아이템
+Inventory
+*/
+ MSG_ITEM = 0x6a,
+/*20031029 to latest
+/결성 [파티이름] : 파티결성 /탈퇴 : 파티탈퇴
+/organize ''Party Name'' To organize a party. Type /leave To leave a Party.
+*/
+ MSG_EXPLAIN_PARTY = 0x6b,
+/*20031029 to latest
+자신이 파티리더일때 캐릭터를 오른버튼으로 클릭하면 파티에 가입요청하기 메뉴가 뜹니다.
+If you are the party master, you can invite someone into your party by right-clicking on a Character.
+*/
+ MSG_EXPLAIN_TIP3 = 0x6c,
+/*20031029 to latest
+회복
+Consumables
+*/
+ MSG_RESTORE = 0x6d,
+/*20031029 to latest
+공격
+Attack
+*/
+ MSG_ATTACK = 0x6e,
+/*20031029 to latest
+보조
+Support
+*/
+ MSG_SUPPORT = 0x6f,
+/*20031029 to latest
+전체
+All
+*/
+ MSG_ALL = 0x70,
+/*20031029 to latest
+무기
+Weapons
+*/
+ MSG_WEAPON = 0x71,
+/*20031029 to latest
+방어
+Defense
+*/
+ MSG_DEFENCE = 0x72,
+/*20031029 to latest
+수
+Water
+*/
+ MSG_WATER = 0x73,
+/*20031029 to latest
+지
+Earth
+*/
+ MSG_EARTH = 0x74,
+/*20031029 to latest
+화
+Fire
+*/
+ MSG_FIRE = 0x75,
+/*20031029 to latest
+풍
+Wind
+*/
+ MSG_WIND = 0x76,
+/*20031029 to latest
+같은종류의 장비아이템은 한번에 한개만 살 수 있습니다.
+Please avoid buying 2 of the same items at one time.
+*/
+ MSG_EQUIPITEM_OLNY_ONE = 0x77,
+/*20031029 to latest
+창모드에서 실행 할때는 16비트 컬러로 맞춰주세요.
+Please change your desktop Color Depth to 16-bit when running Ragnarok in windowed mode.
+*/
+ MSG_ONLY_16BIT_WHEN_WINDOWMODE = 0x78,
+/*20031029 to latest
+잠시만 기다려 주세요.
+Please wait...
+*/
+ MSG_PLEASE_BE_PATIENT = 0x79,
+/*20031029 to latest
+잠시만 기다려 주세요.
+Please wait...
+*/
+ MSG_WAITING_RESPONSE_FROM_SERVER = 0x7a,
+/*20031029 to latest
+잠시만 기다려 주세요.
+Please wait...
+*/
+ MSG_MAKING_CHARACTER = 0x7b,
+/*20031029 to latest
+잠시만 기다려 주세요.
+Please wait...
+*/
+ MSG_DELETING_CHARACTER = 0x7c,
+/*20031029 to latest
+방 만들기
+Make a Room
+*/
+ MSG_MAKING_ROOM = 0x7d,
+/*20031029 to latest
+방셋팅 바꾸기
+Room Setup
+*/
+ MSG_CHANGE_ROOM_SETTING = 0x7e,
+/*20031029 to latest
+강퇴시키기
+Kick Character Out
+*/
+ MSG_BAN = 0x7f,
+/*20031029 to latest
+방장권한 주기
+Give Master Authority
+*/
+ MSG_GIVE_GIVE_ROOM_POWER = 0x80,
+/*20031029 to latest
+정보보기
+View Information
+*/
+ MSG_SEE_INFORMATION_OF_CHARACTER = 0x81,
+/*20031029 to latest
+대화방
+Chat Room
+*/
+ MSG_CHAT_ROOM = 0x82,
+/*20031029 to latest
+명
+Ppl
+*/
+ MSG_COUNT_UNIT_OF_PEOPLE = 0x83,
+/*20031029 to latest
+/앉기 or /sit : 앉기. 앉아있을때 서기
+/sit: Sit command. If you are sitting, you will stand instead.
+*/
+ MSG_EXPLAIN_SIT = 0x84,
+/*20031029 to latest
+/서기 or /stand : 서기. 서있을때 앉기
+/stand: Stand command. If you are standing, you will sit instead.
+*/
+ MSG_EXPLAIN_STAND = 0x85,
+/*20031029 to latest
+/채팅방 or /chat : 채팅방 만들기창 띄우기
+/chat: Creates a Chat Room
+*/
+ MSG_EXPLAIN_MAKE_CHAT = 0x86,
+/*20031029 to latest
+/q : 채팅방 나가기.
+/q: Leaves a Chat Room
+*/
+ MSG_EXPLAIN_EXIT_CHAT_ROOM = 0x87,
+/*20031029 to latest
+/거래 [캐릭터이름] or /교환 [캐릭터이름] or /deal [캐릭터이름] : 해당 캐릭터와 거래요청
+/deal ''Character Name'' Requests a deal with a character
+*/
+ MSG_EXPLAIN_DEAL = 0x88,
+/*20031029 to latest
+/결성 [파티이름] or /organize [파티이름] : 파티결성
+/organize ''Party Name'' Organizes a party
+*/
+ MSG_EXPLAIN_ORGANIZE_PARTY = 0x89,
+/*20031029 to latest
+/탈퇴 or /leave : 파티 탈퇴
+/leave: Leaves a party
+*/
+ MSG_EXPLAIN_LEAVE_PARTY = 0x8a,
+/*20031029 to latest
+/제명 [캐릭터이름] or /expel [캐릭터이름] : 해당캐릭터를 파티에서 제명시킴
+/expel ''Character Name'' kicks a Character out of your party
+*/
+ MSG_EXPLAIN_EXPEL_PARTY_MEMBER = 0x8b,
+/*20031029 to latest
+[Alt] + [End] : 플레이어 hp/sp 게이지 On Off
+[Alt] + [End]: Turns HP/SP Bar On or Off
+*/
+ MSG_EXPLAIN_TIP4 = 0x8c,
+/*20031029 to latest
+[Alt] + [Home] : 지면 커서 표시 On Off
+[Alt] + [Home]: Turns Ground Cursor On or Off
+*/
+ MSG_EXPLAIN_TIP5 = 0x8d,
+/*20031029 to latest
+[Insert] : 앉기 서기
+[Insert]: Makes you sit or stand. (Hotkey to toggle between /sit and /stand)
+*/
+ MSG_EXPLAIN_TIP6 = 0x8e,
+/*20031029 to latest
+MVP가 되셨습니다!! MVP 아이템은
+Congratulations! You are the MVP! Your reward item is
+*/
+ MSG_YOU_RECEIVE_MVP_ITEM = 0x8f,
+/*20031029 to latest
+ !!
+!!
+*/
+ MSG_YOU_RECEIVE_MVP_ITEM2 = 0x90,
+/*20031029 to latest
+MVP가 되셨습니다!! 특별경험치
+Congratulations! You are the MVP! Your reward EXP Points are
+*/
+ MSG_YOU_RECEIVE_MVP_EXP = 0x91,
+/*20031029 to latest
+ 획득!!
+!!
+*/
+ MSG_YOU_RECEIVE_MVP_EXP2 = 0x92,
+/*20031029 to latest
+MVP가 되셨습니다만 무게초과로 MVP 아이템을 가질 수 없었습니다!!
+You are the MVP, but you can't take the reward because you are over your weight limit.
+*/
+ MSG_YOU_THROW_MVPITEM = 0x93,
+/*20031029 to latest
+ 없는 캐릭터 이름 입니다.
+There is no such character name or the user is offline.
+*/
+ MSG_NOT_EXIST_CHARACTER = 0x94,
+/*20031029 to latest
+ 수신 거부 상태입니다.
+ doesn't want to receive your messages.
+*/
+ MSG_NO_RECEIVE_MODE = 0x95,
+/*20031029 to latest
+ 모든 캐릭터에 대해 수신 거부 상태 입니다.
+ is not in the mood to talk with anyone.
+*/
+ MSG_NO_RECEIVE_MODE_FOR_ALL = 0x96,
+/*20031029 to latest
+캐릭터 접속끊기 성공.
+Killed/Disconnected User.
+*/
+ MSG_SUCCESS_DISCONNECT_CHARACTER = 0x97,
+/*20031029 to latest
+캐릭터 접속끊기 실패.
+Kill has failed.
+*/
+ MSG_FAIL_DISCONNECT_CHARACTER = 0x98,
+/*20031029 to latest
+%s %d 개 획득
+You got %s (%d).
+*/
+ MSG_GET_ITEM = 0x99,
+/*20031029 to latest
+[Alt] + [=] : 알파벳 간격이 넓어졌을때 되돌리기.
+[Alt] + [=]: Fix the interval error between letters.
+*/
+ MSG_EXPLAIN_TIP7 = 0x9a,
+/*20031029 to latest
+[F10] : 채팅창 크기조정 [Alt] + [F10] : 채팅창 On Off
+[F10]: To toggle Chat Window size; [Alt] + [F10]: Toggle Chat Window On or Off
+*/
+ MSG_EXPLAIN_TIP8 = 0x9b,
+/*20031029 to latest
+귓속말 하는법 : 채팅창 왼쪽 입력란에 캐릭터이름을 입력하고 오른쪽 입력란에 말을 입력하면 됩니다. TAB키로 두입력란 사이로 커서를 이동할 수 있습니다.
+How to Whisper: Enter a Character's Name on the left side of chat window and type your message on the right side. The Tab key helps you move between these boxes.
+*/
+ MSG_EXPLAIN_TIP9 = 0x9c,
+/*20031029 to latest
+/! /? /기쁨 /하트 /땀 /아하 /짜증 /화 /돈 /... /가위 /바위 /보 : Alt + (1~9) Ctrl + (-=\) 에 대응되는 명령어 입니다.
+/!,/?,/ho,/lv,/lv2,/swt,/ic,/an,/ag,/$,/….,/thx,/wah,/sry,/heh,/swt2,/hmm,/no1,/??,/omg,/oh,/X,/hp,/go,/sob,/gg,/kis,/kis2,/pif,/ok: Emotion icons corresponding to Alt + (1~9) Ctrl + (-=\\)
+*/
+ MSG_EXPLAIN_TIP10 = 0x9d,
+/*20031029 to latest
+파티원에게 말하는법 : 말의 제일앞에 '%'를 붙이면 파티원에게 말이 갑니다. (예: "%안녕")
+How to Speak to Party: Add % in front of every message.(Example: \%Hello\)
+*/
+ MSG_EXPLAIN_TIP11 = 0x9e,
+/*20031029 to latest
+스킬레벨이 부족합니다. 교환 불능.
+You haven't learned enough Basic Skills to Trade.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE1 = 0x9f,
+/*20031029 to latest
+스킬레벨이 부족합니다. 이모션 불능.
+You haven't learned enough Basic Skills to use Emotion icons.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE2 = 0xa0,
+/*20031029 to latest
+스킬레벨이 부족합니다. 앉기 불능.
+You haven't learned enough Basic Skills to Sit.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE3 = 0xa1,
+/*20031029 to latest
+스킬레벨이 부족합니다. 채팅방만들기 불능.
+You haven't learned enough Basic Skills to create a chat room.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE4 = 0xa2,
+/*20031029 to latest
+스킬레벨이 부족합니다. 파티만들기 불능
+You haven't learned enough Basic Skills to Party.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE5 = 0xa3,
+/*20031029 to latest
+스킬레벨이 부족합니다. 외치기 불능
+You haven't learned enough skills to Shout.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE6 = 0xa4,
+/*20031029 to latest
+스킬레벨이 부족합니다. pk 불능
+You haven't learned enough skills for Pking.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE7 = 0xa5,
+/*20031029 to latest
+사고자하는 품목
+Buying Items
+*/
+ MSG_ITEMS_FOR_BUY = 0xa6,
+/*20031029 to latest
+아이템 상점
+Item Shop
+*/
+ MSG_ITEM_STORE = 0xa7,
+/*20031029 to latest
+팔고자하는 품목
+Selling Items
+*/
+ MSG_ITEMS_FOR_SELL = 0xa8,
+/*20031029 to latest
+보관아이템
+Storage
+*/
+ MSG_ITEMS_THAT_IS_STORED = 0xa9,
+/*20031029 to latest
+ 장비가 장착 되었습니다.
+ is put on.
+*/
+ MSG_ITEM_IS_EQUIPED = 0xaa,
+/*20031029 to latest
+ 장비가 해제 되었습니다.
+ is taken off.
+*/
+ MSG_ITEM_IS_REMOVED = 0xab,
+/*20031029 to latest
+귓말리스트에 이름넣기
+To add names on the Whispering List
+*/
+ MSG_ADD_TO_WHISPER_CHAR_LIST = 0xac,
+/*20031029 to latest
+스크린샷 찍는법 : [Print Screen]키나 [Scroll Lock]키를 누르면 됩니다.
+How to Take Screen Shots: Press [Print Screen] or [Scroll Lock]
+*/
+ MSG_EXPLAIN_TIP12 = 0xad,
+/*20031029 to latest
+오늘의 팁
+Tip of the Day
+*/
+ MSG_TIPOFTHEDAY = 0xae,
+/*20031029 to latest
+^3850a0알고 계셨습니까... ^000000 //^709fed
+^3850a0Did you know...?^709fed
+*/
+ MSG_DIDYOUKNOW = 0xaf,
+/*20031029 to latest
+시작할때 열기
+Display at startup
+*/
+ MSG_SHOWTIPSATSTARTUP = 0xb0,
+/*20031029 to latest
+/tip : 오늘의팁 열기
+/tip: Opens ''Tip of the Day''
+*/
+ MSG_EXPLAIN_OPENTIP = 0xb1,
+/*20031029 to latest
+현재 접속자 %d명
+There are %d Players Currently Connected.
+*/
+ MSG_NUMPEOPLE = 0xb2,
+/*20031029 to latest
+(%s)님이 입장 하였습니다.
+(%s) has entered.
+*/
+ MSG_USERGETINTHEROOM = 0xb3,
+/*20031029 to latest
+(%s)님이 퇴장 하였습니다.
+(%s) has left.
+*/
+ MSG_USERGETOUTOFTHEROOM = 0xb4,
+/*20031029 to latest
+(%s)님이 강제 퇴장 되었습니다.
+(%s) was kicked out.
+*/
+ MSG_USERGETOUTOFTHEROOMBYFORCE = 0xb5,
+/*20031029 to latest
+ %d 개
+%d ea.
+*/
+ MSG_EA = 0xb6,
+/*20031029 to latest
+%s : %d 개
+%s: %d ea.
+*/
+ MSG_EA2 = 0xb7,
+/*20031029 to latest
+%s %s : %d 개
+%s %s: %d
+*/
+ MSG_EA3 = 0xb8,
+/*20031029 to latest
+팔 수 있는 품목
+Available Items to sell
+*/
+ MSG_ITEMSYOUCANSELL = 0xb9,
+/*20031029 to latest
+상점에서 파는 품목
+Shop Items
+*/
+ MSG_SHOPITEMS = 0xba,
+/*20031029 to latest
+알 수 없는곳
+Unknown Area
+*/
+ MSG_NOWHERE = 0xbb,
+/*20031029 to latest
+서버와 언어가 맞지 않습니다.
+Your Client language doesn't match the Server language.
+*/
+ MSG_CLIENTTYPEMISMATCH = 0xbc,
+/*20031029 to latest
+아이템을 버릴려면 장비창을 닫으세요.
+Please move your equipment to the inventory. And close the equipment window.
+*/
+ MSG_CLOSEEQUIPWND = 0xbd,
+/*20031029 to latest
+영어만 됩니다.
+This server provides English Text Characters Only.
+*/
+ MSG_ENGLISHONLY = 0xbe,
+/*20031029 to latest
+지금은 지원되지 않습니다.
+This is not implemented yet.
+*/
+ MSG_NOTSUPPORTEDYET = 0xbf,
+/*20031029 to latest
+귓말 리스트가 없습니다.
+No Whisper List.
+*/
+ MSG_NOWHISPERLIST = 0xc0,
+/*20031029 to latest
+ 에게 귓말거부상태로됨
+: Whispering Blocked.
+*/
+ MSG_WHISPERIGNORESUCCESS = 0xc1,
+/*20031029 to latest
+ 에게 귓말거부 요청실패함
+: Whispering Block has failed.
+*/
+ MSG_WHISPERIGNOREFAILED1 = 0xc2,
+/*20031029 to latest
+ 에게 귓말거부 요청실패함 (인원초과)
+: Whispering Block has failed. Block List is full.
+*/
+ MSG_WHISPERIGNOREFAILED2 = 0xc3,
+/*20031029 to latest
+ 에게 귓말가능상태로됨
+: Whispering accepted.
+*/
+ MSG_WHISPERNOIGNORESUCCESS = 0xc4,
+/*20031029 to latest
+ 에게 귓말가능 요청실패함
+: Command has failed.
+*/
+ MSG_WHISPERNOIGNOREFAILED1 = 0xc5,
+/*20031029 to latest
+ 에게 귓말가능 요청실패함 (인원초과)
+: Command has failed. Block List is full.
+*/
+ MSG_WHISPERNOIGNOREFAILED2 = 0xc6,
+/*20031029 to latest
+이름의 처음과 마지막에는 공백문자를 사용할 수 없습니다.
+You cannot put a space at the beginning or end of a name.
+*/
+ MSG_NO_SPACE_IN_NAME = 0xc7,
+/*20031029 to latest
+비공개
+Private
+*/
+ MSG_ROOM_PRIVATE2 = 0xc8,
+/*20031029 to latest
+공개
+Public
+*/
+ MSG_ROOM_PUBLIC2 = 0xc9,
+/*20031029 to latest
+SP가 부족합니다.
+Not Enough SP
+*/
+ MSG_USESKILL_FAIL_SP_INSUFFICIENT = 0xca,
+/*20031029 to latest
+HP가 부족합니다.
+Not Enough HP
+*/
+ MSG_USESKILL_FAIL_HP_INSUFFICIENT = 0xcb,
+/*20031029 to latest
+스킬사용 실패.
+Skill has failed.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE8 = 0xcc,
+/*20031029 to latest
+훔치기 실패.
+Steal has failed.
+*/
+ MSG_FAIL_STEAL = 0xcd,
+/*20031029 to latest
+교환창
+Trade
+*/
+ MSG_EXCHANGE = 0xce,
+/*20031029 to latest
+독걸기 실패.
+Envenom skill has failed.
+*/
+ MSG_FAIL_POISON = 0xcf,
+/*20031029 to latest
+이 아이디로는 이 서버에 접속할 수 없습니다.
+You cannot use this ID on this server.
+*/
+ MSG_ID_MISMATCH = 0xd0,
+/*20031029 to latest
+스피드가 향상되었습니다.
+Your Speed has increased.
+*/
+ MSG_SPEEDUP = 0xd1,
+/*20031029 to latest
+스피드가 감소되었습니다.
+Your Speed has decreased.
+*/
+ MSG_SPEEDDOWN = 0xd2,
+/*20031029 to latest
+/기억 : 워프할 장소 기억(워프 스킬이 있는경우)
+/memo: To memorize a place as Warp Point (If you are an Acolyte Class character)
+*/
+ MSG_EXPLAIN_TIP13 = 0xd3,
+/*20031029 to latest
+임의의 위치
+Random Area
+*/
+ MSG_RANDOM_POS = 0xd4,
+/*20031029 to latest
+워프 할 위치를 선택하세요.
+Select an Area to Warp
+*/
+ MSG_SELECTWHERETOWARP = 0xd5,
+/*20031029 to latest
+스킬레벨이 부족합니다.
+Skill Level is not high enough
+*/
+ MSG_NOTENOUGHSKILLLEVEL = 0xd6,
+/*20031029 to latest
+저장된 워프할 장소가 없습니다.
+There are no memorized locations (Memo Points).
+*/
+ MSG_NO_STORED_PLACE_TO_WARP = 0xd7,
+/*20031029 to latest
+워프 관련 스킬이 없습니다.
+You haven't learned Warp.
+*/
+ MSG_NOWARPSKILL = 0xd8,
+/*20031029 to latest
+워프 장소로 저장됨.
+Saved location as a Memo Point for Warp Skill.
+*/
+ MSG_WARPPOINTSTORED = 0xd9,
+/*20031029 to latest
+취소
+Cancel
+*/
+ MSG_CANCEL = 0xda,
+/*20031029 to latest
+스킬 사용후 시간이 충분히 지나지 않았습니다.
+There is a Delay after using a Skill.
+*/
+ MSG_SKILLINTERVAL = 0xdb,
+/*20031029 to latest
+한번에 가질 수 있는 아이템 종류수를 초과하여 아이템을 가질 수 없습니다.
+You can't have this item because you will exceed the weight limit.
+*/
+ MSG_CANT_GET_ITEM_BECAUSE_COUNT = 0xdc,
+/*20031029 to latest
+아이템 최대 종류수를 초과 하였습니다.
+Out of the maximum capacity
+*/
+ MSG_INSUFFICIENT_OVER_COUNT = 0xdd,
+/*20031029 to latest
+수레아이템
+Cart Items
+*/
+ MSG_MERCHANTITEM = 0xde,
+/*20031029 to latest
+수레 벗기
+Take off Cart
+*/
+ MSG_CARTOFF = 0xdf,
+/*20031029 to latest
+노점 개설
+Opening a stall
+*/
+ MSG_MERCHANTSHOPMAKER = 0xe0,
+/*20031029 to 20041207
+노점이름를 입력하세요.
+20041213 to latest
+노점이름을 입력하세요.
+Please Name your Shop.
+*/
+ MSG_ENTER_SHOP_TITLE = 0xe1,
+/*20031029 to latest
+나의 노점
+My Shop
+*/
+ MSG_ITEM_MY_STORE = 0xe2,
+/*20031029 to latest
+상인 아이템 상점
+Merchant Shop
+*/
+ MSG_ITEM_MERCHANT_STORE = 0xe3,
+/*20031029 to latest
+상인에게 사고자하는 품목
+Buying Items
+*/
+ MSG_ITEMS_FOR_BUY_FROM_MERCHANT = 0xe4,
+/*20031029 to latest
+%s 사기 실패 %s
+*/
+ MSG_FAIL_BUY_ITEM_FROM_MERCHANT = 0xe5,
+/*20031029 to latest
+재고 부족.
+Out of Stock
+*/
+ MSG_INSUFFICIENT_STOCK = 0xe6,
+/*20031029 to latest
+%s %d 개 팔림.
+%s %d sold.
+*/
+ MSG_ITEM_IS_SOLD = 0xe7,
+/*20031029 to latest
+노점에서 팔 수 있는 아이템
+Available Items for Vending
+*/
+ MSG_MERCHANTMIRRORITEM = 0xe8,
+/*20031029 to latest
+돈이 부족해서 스킬을 쓸 수 없습니다.
+*/
+ MSG_SKILL_FAIL_MONEY = 0xe9,
+/*20031029 to latest
+사용할 대상을 선택하세요
+Select a Target.
+*/
+ MSG_SELECTTARGET = 0xea,
+/*20031029 to latest
+/pk on : pk On /pk off : pk Off
+/pk on: Turns PK On. /pk off: Turns PK Off.
+*/
+ MSG_EXPLAIN_TIP14 = 0xeb,
+/*20031029 to latest
+노점
+Shop
+*/
+ MSG_STREETSHOP = 0xec,
+/*20031029 to latest
+수레 아이템 [Alt+W]
+Cart Items [Alt+W]
+*/
+ MSG_OPENCARTWINDOW = 0xed,
+/*20031029 to latest
+기본정보
+Basic Information
+*/
+ MSG_BASICINFOWND = 0xee,
+/*20031029 to latest
+이무기로는 이스킬을 사용할수 없습니다.
+The skill cannot be used with this weapon.
+*/
+ MSG_USESKILL_FAIL_NOT_SUITABLE_WEAPON = 0xef,
+/*20031029 to latest
+%s 사기 실패 재고 부족 현재 재고 %d 개.
+Buying %s has been failed. Out of Stock. Current Stock %d.
+*/
+ MSG_FAIL_BUY_ITEM_FROM_MERCHANT_NO_STOCK = 0xf0,
+/*20031029 to latest
+서버와 동기화가 틀려 연결이 끊어졌습니다.
+You've been disconnected due to a time gap between you and the server.
+*/
+ MSG_SPEEDHACK = 0xf1,
+/*20031029 to latest
+화살을 장착하세요
+Please equip the proper ammunition first.
+*/
+ MSG_ERR_ATTACK_ARROW = 0xf2,
+/*20031029 to latest
+중량과다로 공격이나 스킬을 사용할 수 없습니다.
+You can't attack or use skills because you've exceeded the Weight Limit.
+*/
+ MSG_ERR_ATTACK_WEIGHT = 0xf3,
+/*20031029 to latest
+중량과다로 스킬을 사용할 수 없습니다.
+You can't use skills because you've exceeded the Weight Limit.
+*/
+ MSG_ERR_SKILL_WEIGHT = 0xf4,
+/*20031029 to latest
+화살이 장착되었습니다.
+Ammunition has been equipped.
+*/
+ MSG_MSG_ARROW_EQUIPMENT_SUCCESS = 0xf5,
+/*20031029 to latest
+레드젬스톤이 필요합니다.
+Red Gemstone required.
+*/
+ MSG_NEED_REDJAMSTONE = 0xf6,
+/*20031029 to latest
+블루젬스톤이 필요합니다.
+Blue Gemstone required.
+*/
+ MSG_NEED_BLUEJAMSTONE = 0xf7,
+/*20031029 to latest
+힘 파라메터
+Strength
+*/
+ MSG_DESC_STR = 0xf8,
+/*20031029 to latest
+민첩성 파라메터
+Agility
+*/
+ MSG_DESC_AGI = 0xf9,
+/*20031029 to latest
+체력 파라메터
+Vitality
+*/
+ MSG_DESC_VIT = 0xfa,
+/*20031029 to latest
+지력 파라메터
+Intelligence
+*/
+ MSG_DESC_INT = 0xfb,
+/*20031029 to latest
+손재주 파라메터
+Dexterity
+*/
+ MSG_DESC_DEX = 0xfc,
+/*20031029 to latest
+운 파라메터
+Luck
+*/
+ MSG_DESC_LUK = 0xfd,
+/*20031029 to latest
+공격력
+Hit Point
+*/
+ MSG_DESC_ATK = 0xfe,
+/*20031029 to latest
+방어력
+Defence Rate
+*/
+ MSG_DESC_DEF = 0xff,
+/*20031029 to latest
+명중률
+Accuracy
+*/
+ MSG_DESC_HIT = 0x100,
+/*20031029 to latest
+필살공격률
+Critical Attack
+*/
+ MSG_DESC_CRI = 0x101,
+/*20031029 to latest
+소속길드
+Affiliated Guild
+*/
+ MSG_DESC_GUILD = 0x102,
+/*20031029 to latest
+각 파라메터 레벨업에 사용되는 포인트
+Points to level up each Parameter
+*/
+ MSG_DESC_POINT = 0x103,
+/*20031029 to latest
+마법공격력
+Magic Attack
+*/
+ MSG_DESC_MATK = 0x104,
+/*20031029 to latest
+마법방어력
+Magic Defense
+*/
+ MSG_DESC_MDEF = 0x105,
+/*20031029 to latest
+회피율
+Dodge
+*/
+ MSG_DESC_FLEE = 0x106,
+/*20031029 to latest
+공격스피드
+Attack Speed
+*/
+ MSG_DESC_ASPD = 0x107,
+/*20031029 to latest
+지역당 수용인원 초과로 접속할 수 없습니다.
+Server is jammed due to over population. Please try again shortly.
+*/
+ MSG_PC_OVERFLOW = 0x108,
+/*20031029 to latest
+옵션
+Option
+*/
+ MSG_OPTIONWND = 0x109,
+/*20031029 to latest
+E-MAIL 인증이 되지않았거나 블럭된 계정입니다.
+Account ID blocked by the Game Master Team.
+*/
+ MSG_ID_EMAIL_CONFIRM_NEEDED = 0x10a,
+/*20031029 to latest
+비밀번호가 틀립니다.
+Incorrect User ID or Password. Please try again.
+*/
+ MSG_INCORRECT_LOGIN_PASSWORD = 0x10b,
+/*20031029 to latest
+머리모양 선택
+Choose Hairstyle
+*/
+ MSG_SELECT_HAIR_STYLE = 0x10c,
+/*20031029 to latest
+공격력
+Hit Point
+*/
+ MSG_ATK = 0x10d,
+/*20031029 to latest
+방어력
+Defence Rate
+*/
+ MSG_DEF = 0x10e,
+/*20031029 to latest
+공격스냅 On
+Attack Snap On
+*/
+ MSG_ATTACK_SNAP_ON = 0x10f,
+/*20031029 to latest
+공격스냅 Off
+Attack Snap Off
+*/
+ MSG_ATTACK_SNAP_OFF = 0x110,
+/*20031029 to latest
+스킬스냅 On
+Skill Snap On
+*/
+ MSG_SKILL_SNAP_ON = 0x111,
+/*20031029 to latest
+스킬스냅 Off
+Skill Snap Off
+*/
+ MSG_SKILL_SNAP_OFF = 0x112,
+/*20031029 to latest
+/스냅 or /snap: 몬스터 공격시 스냅 On Off /스킬스냅 or /skillsnap: 스킬로 몬스터 공격시 스냅 On Off /아이템스냅 or /itemsnap: 아이템 주울때 스냅 On Off
+/snap: Turns snap On | Off for fights, /skillsnap: Turns snap On | Off for skills. /itemsnap: Turns snap On | Off for items on the grounds.
+*/
+ MSG_EXPLAIN_SNAP = 0x113,
+/*20031029 to latest
+아이템스냅 On
+Item Snap On
+*/
+ MSG_ITEM_SNAP_ON = 0x114,
+/*20031029 to latest
+아이템스냅 Off
+Item Snap Off
+*/
+ MSG_ITEM_SNAP_OFF = 0x115,
+/*20031029 to latest
+스냅
+Snap
+*/
+ MSG_SNAP = 0x116,
+/*20031029 to latest
+한가지 아이템을 3만개 이상 가질수 없습니다.
+You cannot carry more than 30,000 of one kind of item.
+*/
+ MSG_CANT_GET_ITEM_OVERCOUNT_ONEITEM = 0x117,
+/*20031029 to latest
+레벨 30이상의 캐릭터는 삭제할 수 없습니다. 삭제를 원하시면 관계자에게 문의 하세요.
+You cannot delete a Character with a level greater than 30. If you want to delete the character please contact a Game Master.
+*/
+ MSG_CANT_DELETE_CHARACTER_OVER_30_LEVEL = 0x118,
+/*20031029 to latest
+이이템 교환중에는 아이템을 사고 팔 수 없습니다.
+*/
+ MSG_FAIL_BUY_ITEM_ITEM_EXCHANGING = 0x119,
+/*20031029 to latest
+상점명
+Shop Name
+*/
+ MSG_STALL_NAME = 0x11a,
+/*20031029 to latest
+스킬목록
+Skill Tree
+*/
+ MSG_SKILLLIST = 0x11b,
+/*20031029 to latest
+스킬포인트 : %d
+Skill Point: %d
+*/
+ MSG_SKILLPOINT = 0x11c,
+/*20031029 to latest
+스킬사용 실패
+Skill has failed.
+*/
+ MSG_USESKILL_FAIL = 0x11d,
+/*20031029 to latest
+패시브
+Passive
+*/
+ MSG_PASSIVE = 0x11e,
+/*20031029 to latest
+각자 취득
+Individual
+*/
+ MSG_EXPDIV1 = 0x11f,
+/*20031029 to latest
+균등하게 분배
+Shared
+*/
+ MSG_EXPDIV2 = 0x120,
+/*20031029 to latest
+각자 취득
+Individual
+*/
+ MSG_ITEMCOLLECT1 = 0x121,
+/*20031029 to latest
+파티 전체 공유
+Party Share
+*/
+ MSG_ITEMCOLLECT2 = 0x122,
+/*20031029 to latest
+파티 설정
+Party Setup
+*/
+ MSG_PARTYSETTING = 0x123,
+/*20031029 to latest
+경험치 분배방식
+How to share EXP
+*/
+ MSG_HOWEXPDIV = 0x124,
+/*20031029 to latest
+아이템 수집방식
+How to share Items
+*/
+ MSG_HOWITEMCOLLECT = 0x125,
+/*20031029 to latest
+파티 리더만 설정할 수 있습니다.
+Only the Party Leader can change this setting.
+*/
+ MSG_ONLY_PARTYMASTER = 0x126,
+/*20031029 to latest
+아이템 갯수 안물어보기
+Toggle Item Amount.
+*/
+ MSG_NOQUESTION_ITEMCOUNT = 0x127,
+/*20031029 to latest
+^ff0000%d^000000 초 후에 캐릭터가 지워집니다. 취소 하려면 취소 버튼을 누르세요.
+Character will be deleted after ^ff0000%d^000000 seconds. Press Cancel to quit.
+*/
+ MSG_CHARARATER_DELETE_COUNT = 0x128,
+/*20031029 to latest
+교환할 수 있는 최대 아이템 갯수는 10가지 입니다.
+You cannot trade more than 10 types of items per trade.
+*/
+ MSG_MAXEXCHANGE_IS_10_KIND = 0x129,
+/*20031029 to latest
+이서버를 이용할 수 없는 나이입니다.
+You are underaged.
+*/
+ MSG_LIMIT_AGE = 0x12a,
+/*20031029 to latest
+이메일 주소를 입력하세요.
+Please enter the deletion password.
+*/
+ MSG_ENTER_EMAIL = 0x12b,
+/*20031029 to latest
+이메일 주소 입력하기
+E-mail Address (Case Sensitive).
+*/
+ MSG_ENTER_EMAIL_TOOLTIP = 0x12c,
+/*20031029 to latest
+이메일 주소가 틀려서 캐릭터가 삭제 되지 않았습니다.
+Character Deletion has failed because you have entered an incorrect e-mail address.
+*/
+ MSG_CANNOT_DELETE_CHARACTER_EMAIL = 0x12d,
+/*20031029 to 20070703
+주민등록번호 뒷자리를 입력하세요.
+20070618 to 20070622
+비밀번호를 한 번 더 입력해 주시기 바랍니다.
+20070704 to latest
+계정 비밀번호를 입력하세요.
+Enter Second Serial Cord of your Social Security number.
+*/
+ MSG_ENTER_PEOPLE_REG_NUMBER = 0x12e,
+/*20031029 to 20070703
+주민등록번호 뒷자리가 틀려서 캐릭터가 삭제 되지 않았습니다.
+20070618 to 20070622
+비밀번호가 맞지 않아 캐릭터가 삭제 되지 않았습니다.
+20070704 to latest
+비밀번호가 틀려서 캐릭터가 삭제 되지 않았습니다.
+Character Deletion has failed because you have entered an incorrect SSN.
+*/
+ MSG_CANNOT_DELETE_CHARACTER_PEOPLE_REG_NUMBER = 0x12f,
+/*20031029 to latest
+한번에 15가지 이상의 아이템을 팔 수 없습니다.
+You can't sell more than 15 types of Items at one time.
+*/
+ MSG_CANT_SELL_OVER_15 = 0x130,
+/*20031029 to latest
+나이제한 때문에 이계정으로 이서버에 접속할 수 없습니다.
+The age limit from commandment tables cannot connect to this server.
+*/
+ MSG_UNDER_AGE = 0x131,
+/*20031029 to latest
+무게가 50 퍼센트 이상일때는 HP SP가 자연적으로 회복이 되지 않습니다.
+HP/SP will not be restored when your carried weight is over 50% of the Weight Limit.
+*/
+ MSG_NO_RECOVER_OVERWEIGHT = 0x132,
+/*20031029 to latest
+무게가 90 퍼센트 이상일때는 공격과 스킬을 사용할 수 없습니다.
+You can't use Skills or Attack while your carried weight is over 90% of your Weight Limit.
+*/
+ MSG_NO_ATTACK_OVERWEIGHT = 0x133,
+/*20031029 to latest
+HP SP가 자연적으로 회복이 가능한 상태가 되었습니다.
+Your HP/SP are now being restored naturally.
+*/
+ MSG_NO_RECOVER_OVERWEIGHT_RELEASED = 0x134,
+/*20031029 to latest
+공격과 스킬이 가능한 상태가 되었습니다.
+Attack and Skills are now available.
+*/
+ MSG_NO_ATTACK_OVERWEIGHT_RELEASED = 0x135,
+/*20031029 to latest
+서버 점검중입니다.
+Your Game's Exe File is not the latest version.
+*/
+ MSG_INVALID_VERSION = 0x136,
+/*20031029 to latest
+아이템이 모두 팔렸습니다.
+Items are sold out.
+*/
+ MSG_ITEM_IS_SOLD_OUT = 0x137,
+/*20031029 to latest
+채팅내용 파일로 저장하기
+Save Chat as Text File
+*/
+ MSG_WRITE_CHAT_TO_FILE = 0x138,
+/*20031029 to latest
+/갈무리 or /savechat : 채팅 내용 파일로 저장하기.
+/savechat: Save a Chat Log
+*/
+ MSG_EXPLAIN_SAVE_CHAT = 0x139,
+/*20031029 to latest
+계정 만들기
+Register
+*/
+ MSG_MAKEACCOUNT = 0x13a,
+/*20031029 to latest
+수신거부하기
+Reject Whispering
+*/
+ MSG_REQ_EX_LIST = 0x13b,
+/*20031029 to latest
+수신거부해제하기
+Allow Whispering
+*/
+ MSG_REQ_IN = 0x13c,
+/*20031029 to latest
+미스표시 On
+Shows ''Miss''
+*/
+ MSG_MISS_EFFECT_ON = 0x13d,
+/*20031029 to latest
+미스표시 Off
+Shows ''Miss''
+*/
+ MSG_MISS_EFFECT_OFF = 0x13e,
+/*20031029 to latest
+카메라고정 On
+Camera Zooming On
+*/
+ MSG_FIXED_CAMERA_ON = 0x13f,
+/*20031029 to latest
+카메라고정 Off
+Camera Zooming Off
+*/
+ MSG_FIXED_CAMERA_OFF = 0x140,
+/*20031029 to latest
+/camera : 플레이어에게 카메라고정 On Off /miss : 미스이펙트 On Off
+/camera: Camera Zooming On or Off. /miss: Toggle ''Miss'' display
+*/
+ MSG_EXPLAIN_CAMERA_MISS = 0x141,
+/*20031029 to latest
+스킬정보보기
+View Skill Info
+*/
+ MSG_SEE_INFORMATION_OF_SKILL = 0x142,
+/*20031029 to latest
+스킬이름바꾸기
+Change Skill
+*/
+ MSG_CHANGE_SKILL_NAME = 0x143,
+/*20031029 to latest
+스프라이트 해상도
+Sprite Resolution
+*/
+ MSG_SPRITE_RESOLUTION = 0x144,
+/*20031029 to latest
+텍스쳐 해상도
+Texture Resolution
+*/
+ MSG_TEXTURE_RESOLUTION = 0x145,
+/*20031029 to latest
+디테일 조정
+Arrange Detail
+*/
+ MSG_DETAILLEVELWND = 0x146,
+/*20031029 to latest
+%s Zeny 획득
+You got %s Zeny
+*/
+ MSG_GET_ZENY = 0x147,
+/*20031029 to latest
+길드명
+Guild Name
+*/
+ MSG_GUILDNAME = 0x148,
+/*20031029 to latest
+길드레벨
+Guild lvl
+*/
+ MSG_GUILDLEVEL = 0x149,
+/*20031029 to latest
+마스터이름
+ClanMaster Name
+*/
+ MSG_GUILD_MASTER_NAME = 0x14a,
+/*20031029 to latest
+조합원수
+Number of Members
+*/
+ MSG_GUILD_NUM_MEMBER = 0x14b,
+/*20031029 to latest
+조합원 평균레벨
+Avg.lvl of Guildsmen
+*/
+ MSG_GUILD_AVG_MEMBER_LEVEL = 0x14c,
+/*20031029 to latest
+관리영지
+Castles Owned
+*/
+ MSG_GUILD_MANAGE_LAND = 0x14d,
+/*20031029 to latest
+성향
+Tendency
+*/
+ MSG_GUILD_FAIR = 0x14e,
+/*20031029 to latest
+경험치
+EXP
+*/
+ MSG_GUILD_EXP = 0x14f,
+/*20031029 to latest
+길드엠블렘
+Emblem
+*/
+ MSG_GUILD_EMBLEM = 0x150,
+/*20031029 to latest
+길드상납포인트
+Tax Point
+*/
+ MSG_GUILD_POINT = 0x151,
+/*20031029 to latest
+동맹길드
+Alliances
+*/
+ MSG_ALLY_GUILD = 0x152,
+/*20031029 to latest
+적대길드
+Antagonists
+*/
+ MSG_HOSTILITY_GUILD = 0x153,
+/*20031029 to latest
+길드정보
+Guild Info
+*/
+ MSG_GUILDINFOMANAGE = 0x154,
+/*20031029 to latest
+조합원정보
+Guildsmen Info
+*/
+ MSG_GUILDMEMBERMANAGE = 0x155,
+/*20031029 to latest
+직위설정
+Position
+*/
+ MSG_GUILDPOSITIONMANAGE = 0x156,
+/*20031029 to latest
+길드스킬
+Guild Skill
+*/
+ MSG_GUILDSKILL = 0x157,
+/*20031029 to latest
+추방자 리스트
+Expel History
+*/
+ MSG_GUILDBANISHEDMEMBER = 0x158,
+/*20031029 to latest
+공지사항
+Guild Notice
+*/
+ MSG_GUILDNOTICE = 0x159,
+/*20031029 to latest
+전체길드 리스트
+Entire Guild List
+*/
+ MSG_GUILDTOTALINFO = 0x15a,
+/*20031029 to latest
+귓말 리스트
+Whispering List
+*/
+ MSG_WHISPERLISTWND = 0x15b,
+/*20031029 to latest
+귓말창 열기
+Open Whispering Window
+*/
+ MSG_OPENWHISPERLISTWND = 0x15c,
+/*20031029 to latest
+귓말 리스트 창 여는법 : [Alt] + [H] 를 누르면 귓말 리스트 창이 열립니다.
+How to Open Whispering List: Press [Alt] + [H]
+*/
+ MSG_EXPLAIN_WHISPER_LIST_WND = 0x15d,
+/*20031029 to latest
+자동으로 귓말창 열기
+Open Whispering List Automatically
+*/
+ MSG_AUTOOPENWHISPERLISTWND = 0x15e,
+/*20031029 to latest
+지우기
+Delete
+*/
+ MSG_DELETE = 0x15f,
+/*20031029 to latest
+다음부터 열리지 않음
+Close since next
+*/
+ MSG_DONTOPEN = 0x160,
+/*20031029 to latest
+마지막으로 접속한 시간
+Last Log-in Time
+*/
+ MSG_LAST_LOGIN_TIME = 0x161,
+/*20031029 to latest
+마지막으로 접속한 IP
+Last Log-in IP
+*/
+ MSG_LAST_LOGIN_IP = 0x162,
+/*20031029 to latest
+친구 설정
+Friend Setup
+*/
+ MSG_FRIEND_SETTING = 0x163,
+/*20031029 to latest
+정말 지우시겠습니까?
+Are you sure that you want to delete?
+*/
+ MSG_DO_YOU_REALLY_WANT_DELETE = 0x164,
+/*20031029 to latest
+정말 탈퇴하시겠습니까?
+Are you sure that you want to leave?
+*/
+ MSG_DO_YOU_REALLY_WANT_LEAVE = 0x165,
+/*20031029 to latest
+친구로 등록하기
+Register as a Friend
+*/
+ MSG_ADD_TO_FRIEND_CHAR_LIST = 0x166,
+/*20031029 to latest
+친구일때 자동으로 1:1창 열기
+Open 1:1 Chat between Friends
+*/
+ MSG_AUTOOPENWHISPERLISTWND_FRIEND = 0x167,
+/*20031029 to latest
+1:1창 열기
+Open 1:1 Chat
+*/
+ MSG_OPEN_1ON1_WINDOW = 0x168,
+/*20031029 to latest
+친구가 아닐때 자동으로 1:1창 열기
+Open 1:1 Chat between Strangers
+*/
+ MSG_AUTOOPEN_1ON1_WINDOW = 0x169,
+/*20031029 to latest
+1:1창 열릴때 소리로 알림
+Alarm when you recieve a 1:1 Chat
+*/
+ MSG_WHISPER_OPEN_SOUND = 0x16a,
+/*20031029 to latest
+정말 제명시키시겠습니까?
+Are you sure that you want to expel?
+*/
+ MSG_DO_YOU_REALLY_WANT_EXPEL = 0x16b,
+/*20031029 to latest
+%s 님이 길드를 탈퇴했습니다.
+%s has withdrawn from the guild.
+*/
+ MSG_USER_LEFT_GUILD = 0x16c,
+/*20031029 to latest
+탈퇴사유 : %s
+Secession Reason: %s
+*/
+ MSG_REASON_LEAVE_GUILD = 0x16d,
+/*20031029 to latest
+길드 해체 실패
+*/
+ MSG_DISORGANIZE_GUILD_FAILURE = 0x16e,
+/*20031029 to latest
+길드해체사유 : %s
+Disband Reason: %s
+*/
+ MSG_DISORGANIZATION_REASON = 0x16f,
+/*20031029 to latest
+해당 계정은 삭제된 아이디 입니다.
+This ID has been removed.
+*/
+ MSG_DELETED_ACCOUNT = 0x170,
+/*20031029 to latest
+판매가 :
+Price:
+*/
+ MSG_SELLPRICE = 0x171,
+/*20031029 to latest
+%s 님이 길드에서 추방되었습니다.
+%s has been expelled from our guild.
+*/
+ MSG_BAN_GUILD = 0x172,
+/*20031029 to latest
+추방사유 : %s
+Expulsion Reason: %s
+*/
+ MSG_REASON_BAN_GUILD = 0x173,
+/*20031029 to latest
+아이템을 착용할 수 없습니다.
+You can't put this item on.
+*/
+ MSG_CAN_NOT_EQUIP_ITEM = 0x174,
+/*20031029 to latest
+파티설정을 변경할 수 없습니다.
+You can't modify Party Setup.
+*/
+ MSG_PARTYSETTING_CHANGE_IMPOSSIBLE = 0x175,
+/*20031029 to latest
+길드가 만들어 졌습니다.
+Guild has been Created.
+*/
+ MSG_GUILD_MAKE_SUCCESS = 0x176,
+/*20031029 to latest
+이미 길드에 속해있습니다.
+You are already in a Guild.
+*/
+ MSG_GUILD_MAKE_ALREADY_MEMBER = 0x177,
+/*20031029 to latest
+같은이름의 길드가 존재합니다.
+That Guild Name already exists.
+*/
+ MSG_GUILD_MAKE_GUILD_EXIST = 0x178,
+/*20031029 to latest
+ 길드에서 초청 메시지가 왔습니다. 가입하겠습니까?
+ Guild has sent you an invitation. Would you like to join this Guild?
+*/
+ MSG_SUGGEST_JOIN_GUILD = 0x179,
+/*20031029 to latest
+다른길드에 가입되어 있습니다.
+He/She is already in a Guild.
+*/
+ MSG_CHARACTER_IS_ALREADY_IN_GUILD = 0x17a,
+/*20031029 to latest
+길드가입을 거절 했습니다.
+Offer Rejected
+*/
+ MSG_CHARACTER_REJECT_JOIN_GUILD = 0x17b,
+/*20031029 to latest
+길드가입을 수락했습니다.
+Offer Accepted
+*/
+ MSG_CHARACTER_ACCEPT_JOIN_GUILD = 0x17c,
+/*20031029 to latest
+길드정원을 초과했습니다.
+Your Guild is Full.
+*/
+ MSG_TOO_MANY_PEOPLE_IN_GUILD = 0x17d,
+/*20031029 to latest
+(%s)님 길드에 가입요청
+Send (%s) a Guild invitation
+*/
+ MSG_REQ_JOIN_GUILD = 0x17e,
+/*20031029 to latest
+스킬 레벨이 모자라서 매너포인트를 줄 수 없습니다.
+You haven't learned enough skills for aligning.
+*/
+ MSG_NOT_ENOUGH_FOR_MANNER_POINT = 0x17f,
+/*20031029 to latest
+매너 포인트 주기 성공
+Aligning completed.
+*/
+ MSG_GIVING_MANNER_POINT_SUCCESS = 0x180,
+/*20031029 to latest
+오늘 이미 사용했습니다.
+You already spent your point for today.
+*/
+ MSG_YOU_USE_TODAY_ALREADY = 0x181,
+/*20031029 to latest
+이캐릭터에게 지급한지 한달이 지나지 않았습니다.
+Hasn't been a month yet since you aligned this person.
+*/
+ MSG_ONE_MONTH_NOT_PASSED = 0x182,
+/*20031029 to latest
+%s 님으로부터 플러스 매너 포인트를 받았습니다.
+Remember, Spamming isn't nice.
+*/
+ MSG_RECEIVE_PLUS_MANNER_POINT = 0x183,
+/*20031029 to latest
+%s 님으로부터 마이너스 매너 포인트를 받았습니다.
+Please refrain from ill-mannered conduct, thank you.
+*/
+ MSG_RECEIVE_MINUS_MANNER_POINT = 0x184,
+/*20031029 to latest
+채팅 금지 시간 줄이기(풀기)
+Align with a Good Point
+*/
+ MSG_GIVE_PLUS_MANNER_POINT = 0x185,
+/*20031029 to latest
+채팅 금지 시간 늘이기(걸기)
+Align with a Bad Point
+*/
+ MSG_GIVE_MINUS_MANNER_POINT = 0x186,
+/*20031029 to latest
+(%s)님과의 거래요청
+Request a deal with (%s)
+*/
+ MSG_REQ_DEAL_WITH2 = 0x187,
+/*20031029 to latest
+(%s)님 파티에 가입요청
+Ask (%s) to join your party
+*/
+ MSG_REQ_JOIN_PARTY2 = 0x188,
+/*20031029 to latest
+ 길드에서 동맹요청 메시지가 왔습니다. 동맹하겠습니까?
+ Guild is asking you to agree to an Alliance with them. Do you accept?
+*/
+ MSG_SUGGEST_ALLY_GUILD = 0x189,
+/*20031029 to latest
+이미 동맹되어 있습니다.
+This Guild is already your Ally.
+*/
+ MSG_REQALLYGUILD_ALREADY_ALLIED = 0x18a,
+/*20031029 to latest
+동맹을 거절 했습니다.
+You reject the offer
+*/
+ MSG_REQALLYGUILD_REJECT = 0x18b,
+/*20031029 to latest
+동맹을 수락 했습니다.
+You accept the offer
+*/
+ MSG_REQALLYGUILD_ACCEPT = 0x18c,
+/*20031029 to latest
+상대길드의 동맹길드의 수가 초과 되었습니다.
+They have too many Alliances.
+*/
+ MSG_REQALLYGUILD_OVERSIZE = 0x18d,
+/*20031029 to latest
+길드의 동맹길드의 수가 초과 되었습니다.
+You have too many Alliances.
+*/
+ MSG_REQALLYMYGUILD_OVERSIZE = 0x18e,
+/*20031029 to latest
+길드 동맹 요청
+Set this guild as an Alliance
+*/
+ MSG_REQ_ALLY_GUILD = 0x18f,
+/*20031029 to latest
+길드가 성공적으로 해체 되었습니다.
+Guild was successfully disbanded.
+*/
+ MSG_DISORGANIZE_GUILD_SUCCESS = 0x190,
+/*20031029 to latest
+주민등록번호가 틀려서 길드가 해체되지 않았습니다.
+You have failed to disband the guild due to your incorrect SSN.
+*/
+ MSG_DISORGANIZE_GUILD_INVALIDKEY = 0x191,
+/*20031029 to latest
+길드맴버가 존재해서 길드가 해체되지 않았습니다.
+You have failed to disband the guild because there are guildsmen still present.
+*/
+ MSG_DISORGANIZE_GUILD_MEMBEREXIST = 0x192,
+/*20031029 to latest
+길드 적대 요청
+Set this guild as an Antagonist
+*/
+ MSG_REQ_HOSTILE_GUILD = 0x193,
+/*20031029 to latest
+머리색깔 선택
+Choose Hair Color
+*/
+ MSG_SELECT_HAIR_COLOR = 0x194,
+/*20031029 to latest
+길드결성시 필요한 아이템이 없습니다.
+You don't have necessary item to create a Guild.
+*/
+ MSG_GUILD_MAKE_GUILD_NONE_ITEM = 0x195,
+/*20031029 to latest
+몬스터 정보
+Monster Info
+*/
+ MSG_MONSTER_INFO_WINDOW = 0x196,
+/*20031029 to latest
+이름
+Name
+*/
+ MSG_NAME = 0x197,
+/*20031029 to latest
+레벨
+Level
+*/
+ MSG_LEVEL = 0x198,
+/*20031029 to latest
+HP
+*/
+ MSG_HP = 0x199,
+/*20031029 to latest
+크기
+Size
+*/
+ MSG_SIZE = 0x19a,
+/*20031029 to latest
+종족
+Type
+*/
+ MSG_RACETYPE = 0x19b,
+/*20031029 to latest
+MDEF
+*/
+ MSG_MDEFPOWER = 0x19c,
+/*20031029 to latest
+속성
+Attribute
+*/
+ MSG_PROPERTY = 0x19d,
+/*20031029 to latest
+無
+Neutral
+*/
+ MSG_PROPERTY_NEUTURAL = 0x19e,
+/*20031029 to latest
+水
+Water
+*/
+ MSG_PROPERTY_WATER = 0x19f,
+/*20031029 to latest
+地
+Earth
+*/
+ MSG_PROPERTY_EARTH = 0x1a0,
+/*20031029 to latest
+火
+Fire
+*/
+ MSG_PROPERTY_FIRE = 0x1a1,
+/*20031029 to latest
+風
+Wind
+*/
+ MSG_PROPERTY_WIND = 0x1a2,
+/*20031029 to latest
+毒
+Poison
+*/
+ MSG_PROPERTY_POISON = 0x1a3,
+/*20031029 to latest
+聖
+Holy
+*/
+ MSG_PROPERTY_SAINT = 0x1a4,
+/*20031029 to latest
+暗
+Shadow
+*/
+ MSG_PROPERTY_DARK = 0x1a5,
+/*20031029 to latest
+念
+Ghost
+*/
+ MSG_PROPERTY_MENTAL = 0x1a6,
+/*20031029 to latest
+死
+Undead
+*/
+ MSG_PROPERTY_UNDEAD = 0x1a7,
+/*20031029 to latest
+현재는 아이템을 만들 수 없습니다.
+You can't create items yet.
+*/
+ MSG_CANT_MAKE_ITEM = 0x1a8,
+/*20031029 to latest
+제조 목록
+Item List you can craft
+*/
+ MSG_MAKE_LIST = 0x1a9,
+/*20031029 to latest
+ 만들기
+ Create
+*/
+ MSG_MAKE_TARGET = 0x1aa,
+/*20031029 to latest
+ 에 필요한 재료:
+'s materials
+*/
+ MSG_REQUIRE_FOR_MAKE_TARGET = 0x1ab,
+/*20031029 to latest
+ 만들기 실패
+ item creation failed.
+*/
+ MSG_MAKE_TARGET_FAIL = 0x1ac,
+/*20031029 to latest
+ 만들기 성공
+ item created successfully.
+*/
+ MSG_MAKE_TARGET_SUCCEESS = 0x1ad,
+/*20031029 to latest
+%s 만들기를 실패하였습니다.
+ item creation failed.
+*/
+ MSG_MAKE_TARGET_FAIL_MSG = 0x1ae,
+/*20031029 to latest
+%s 만들기를 성공했습니다.
+ item created successfully.
+*/
+ MSG_MAKE_TARGET_SUCCEESS_MSG = 0x1af,
+/*20031029 to latest
+레벨이 부족합니다.
+You are not the required lvl.
+*/
+ MSG_NOT_ENOUGH_LEVEL = 0x1b0,
+/*20031029 to latest
+레벨이 너무 높습니다.
+Too high lvl for this job.
+*/
+ MSG_TOO_HIGH_LEVEL = 0x1b1,
+/*20031029 to latest
+직업이 적합하지 않습니다.
+Not the suitable job for this type of work.
+*/
+ MSG_NOT_ACCEPTABLE_JOB = 0x1b2,
+/*20031029 to latest
+토키 박스 트랩 메세지
+Record a message in the Talkie Box
+*/
+ MSG_TALKBOX_WINDOW = 0x1b3,
+/*20031029 to latest
+기록할 메세지를 입력하시기 바랍니다.
+Please type a message for the Talkie Box
+*/
+ MSG_TALKBOX_WINDOW_MSG = 0x1b4,
+/*20031029 to latest
+길드에게 보냄
+Send to Guild
+*/
+ MSG_SEND_TO_GUILD = 0x1b5,
+/*20031029 to latest
+결제된 계정이 아닙니다. 결제 페이지로 이동하시겠습니까?
+You didn't pay for this ID. Would you like to pay for it now?
+*/
+ MSG_NOT_SETTLED = 0x1b6,
+/*20031029 to latest
+서버가 혼잡한 관계로 잠시후 다시 시도해 주시기 바랍니다.
+Server is jammed due to overpopulation. Please try again after few minutes.
+*/
+ MSG_ACCOUNT_BUSY = 0x1b7,
+/*20031029 to latest
+지난 접속 정보가 남아 있습니다. 30초정도 지난뒤에 다시 시도해 주시기 바랍니다.
+Server still recognizes your last log-in. Please try again after a few minutes.
+*/
+ MSG_INFORMATION_REMAINED = 0x1b8,
+/*20031029 to latest
+매 풀어주기
+Release Falcon
+*/
+ MSG_BIRDOFF = 0x1b9,
+/*20031029 to latest
+페코페코 내리기
+Dismount
+*/
+ MSG_CHIKENOFF = 0x1ba,
+/*20031029 to latest
+小
+Small
+*/
+ MSG_SIZE_SMALL = 0x1bb,
+/*20031029 to latest
+中
+Med
+*/
+ MSG_SIZE_MIDDLE = 0x1bc,
+/*20031029 to latest
+大
+Big
+*/
+ MSG_SIZE_BIG = 0x1bd,
+/*20031029 to latest
+더블
+Double
+*/
+ MSG_DOUBLE = 0x1be,
+/*20031029 to latest
+트리플
+Triple
+*/
+ MSG_TRIPLE = 0x1bf,
+/*20031029 to latest
+쿼드로플
+Quadruple
+*/
+ MSG_QUADROPLE = 0x1c0,
+/*20031029 to latest
+%s 까지 로그인을 금지하고 있습니다.
+You are prohibited to log in until %s.
+*/
+ MSG_LOGIN_REFUSE_BLOCKED_UNTIL = 0x1c1,
+/*20031029 to latest
+의
+'s
+*/
+ MSG_MANUFACTURED_NORMAL_ITEM = 0x1c2,
+/*20031029 to latest
+의 파이어
+'s Fire
+*/
+ MSG_MANUFACTURED_FIRE_ITEM = 0x1c3,
+/*20031029 to latest
+의 아이스
+'s Ice
+*/
+ MSG_MANUFACTURED_ICE_ITEM = 0x1c4,
+/*20031029 to latest
+의 윈드
+'s Wind
+*/
+ MSG_MANUFACTURED_WIND_ITEM = 0x1c5,
+/*20031029 to latest
+의 어스
+'s Earth
+*/
+ MSG_MANUFACTURED_EARTH_ITEM = 0x1c6,
+/*20031029 to latest
+211.239.161.246
+38.144.194.2
+*/
+ MSG_ACCOUNT_ADDRESS = 0x1c7,
+/*20031029 to latest
+6900
+*/
+ MSG_ACCOUNT_PORT = 0x1c8,
+/*20031029 to latest
+http://www.ragnarok.co.kr
+*/
+ MSG_REGISTRATION_WEB_URL = 0x1c9,
+/*20031029 to latest
+%s 사용자 강제 종료
+Kill %s
+*/
+ MSG_BAN_USER = 0x1ca,
+/*20031029 to latest
+무지쎈
+Very Strong
+*/
+ MSG_ONE_STARPIECE = 0x1cb,
+/*20031029 to latest
+무지무지쎈
+Very Very Strong
+*/
+ MSG_TWO_STARPIECE = 0x1cc,
+/*20031029 to 20031029
+무지무지무지쎈
+20031103 to latest
+무무무쎈
+Very Very Very Strong
+*/
+ MSG_THREE_STARPIECE = 0x1cd,
+/*20031029 to latest
+길드 추방 사유
+The Reason of Expulsion
+*/
+ MSG_GUILD_KICK_REASON = 0x1ce,
+/*20031029 to latest
+ 공격 속도가 증가했습니다.
+Attack Speed is up.
+*/
+ MSG_INCATTACKSPEED = 0x1cf,
+/*20031029 to latest
+ 공격 속도가 감소했습니다.
+Attack Speed is down.
+*/
+ MSG_DECATTACKSPEED = 0x1d0,
+/*20031029 to latest
+ 무기의 공격력이 향상되었습니다.
+Weapon Damage is improved.
+*/
+ MSG_INCWEAPONATTACK = 0x1d1,
+/*20031029 to latest
+ 무기의 공격력이 감소되었습니다.
+Weapon Damage is reduced.
+*/
+ MSG_DECWEAPONATTACK = 0x1d2,
+/*20031029 to latest
+ 시전 딜레이가 줄었습니다.
+Cast Delay is reduced.
+*/
+ MSG_FASTPREDELAY = 0x1d3,
+/*20031029 to latest
+ 시전 딜레이가 정상으로 되었습니다.
+Cast Delay has returned to normal.
+*/
+ MSG_NORMALPREDELAY = 0x1d4,
+/*20031029 to latest
+ 무기에 독속성이 부여되었습니다.
+Weapon is temporarily enchanted with Poison.
+*/
+ MSG_WEAPONPROPERTYPOISON = 0x1d5,
+/*20031029 to latest
+ 무기에 성속성이 부여되었습니다.
+Weapon is temporarily enchanted with an elemental property.
+*/
+ MSG_WEAPONPROPERTYSAINT = 0x1d6,
+/*20031029 to latest
+ 무기의 원래속성이 적용되었습니다.
+Weapon has changed back to normal.
+*/
+ MSG_WEAPONPROPERTYORIGINAL = 0x1d7,
+/*20031029 to latest
+ 방어구에 성속성이 부여되었습니다.
+Armor has been enchanted with the Holy Ghost.
+*/
+ MSG_ARMORPROPERTYSAINT = 0x1d8,
+/*20031029 to latest
+ 방어구의 원래속성이 적용되었습니다.
+Armor has changed back to normal.
+*/
+ MSG_ARMORPROPERTYORIGINAL = 0x1d9,
+/*20031029 to latest
+ 배리어 상태가 되었습니다.
+Barrier Formed.
+*/
+ MSG_BARRIOR = 0x1da,
+/*20031029 to latest
+ 배리어 상태가 해제 되었습니다.
+Barrier Canceled.
+*/
+ MSG_DISAPPEARBARRIOR = 0x1db,
+/*20031029 to latest
+ 소형, 중형, 대형 몬스터에게 100% 공격력을 줍니다.
+Weapon Perfection Initiated.
+*/
+ MSG_PERFECTDAMAGE = 0x1dc,
+/*20031029 to latest
+ 웨폰퍼펙션 모드가 해제 되었습니다.
+Weapon perfection Canceled.
+*/
+ MSG_DISAPPEARPERFECTDAMAGE = 0x1dd,
+/*20031029 to latest
+ 무기가 파괴될 가능성이 높아진 대신 무기의 공격력이 증가하였습니다.
+Power-Thrust Initiated.
+*/
+ MSG_OVERTHRUSTING = 0x1de,
+/*20031029 to 20050118
+ 오버트러스팅 상태가 해제 되었습니다.
+20050124 to latest
+ 오버트러스트 상태가 해제 되었습니다.
+Power-Thrust Canceled.
+*/
+ MSG_DISAPPEAROVERTHRUSTING = 0x1df,
+/*20031029 to latest
+ 무기의 최대 성능을 끌어냅니다.
+Maximize-Power Initiated.
+*/
+ MSG_MAXIMIZE = 0x1e0,
+/*20031029 to latest
+ 맥시마이즈 상태가 해제 되었습니다.
+Maximize-Power Canceled.
+*/
+ MSG_DISAPPEARMAXIMIZE = 0x1e1,
+/*20031029 to latest
+[신서버]
+[New Server]
+*/
+ MSG_SERVER_PROPERTY_NEW = 0x1e2,
+/*20031029 to latest
+(%d 명)
+(%d players)
+*/
+ MSG_SERVER_USER_COUNT = 0x1e3,
+/*20031029 to latest
+(점검중)
+(On the maintenance)
+*/
+ MSG_SERVER_INSPECTING = 0x1e4,
+/*20031029 to latest
+길드멤버 %s님이 접속하셨습니다.
+Guild member %s has connected.
+*/
+ MSG_GUILD_MEMBER_STATUS_ONLINE = 0x1e5,
+/*20031029 to latest
+길드멤버 %s님이 종료하셨습니다.
+Guild member %s has disconnected.
+*/
+ MSG_GUILD_MEMBER_STATUS_OFFLINE = 0x1e6,
+/*20031029 to latest
+경험치 %d 얻음
+You got %d Base EXP.
+*/
+ MSG_GOT_EXPERIENCE_POINT = 0x1e7,
+/*20031029 to latest
+잡경험치 %d 얻음
+You got %d Job EXP.
+*/
+ MSG_GOT_JOB_EXPERIENCE_POINT = 0x1e8,
+/*20031029 to latest
+길드에서 탈퇴 했습니다.
+You left the guild.
+*/
+ MSG_LEFT_GUILD = 0x1e9,
+/*20031029 to latest
+길드에서 추방 당했습니다.
+You have been expelled from the Guild.
+*/
+ MSG_BAN_FROM_GUILD = 0x1ea,
+/*20031029 to latest
+아이템 감정 성공
+Item Appraisal has completed successfully.
+*/
+ MSG_ITEM_IDENTIFY_SUCCEESS = 0x1eb,
+/*20031029 to latest
+아이템 감정 실패
+Item appraisal has failed.
+*/
+ MSG_ITEM_IDENTIFY_FAIL = 0x1ec,
+/*20031029 to latest
+아이템 조합 성공
+Compounding has completed successfully.
+*/
+ MSG_ITEM_COMPOUNDING_SUCCEESS = 0x1ed,
+/*20031029 to latest
+아이템 조합 실패
+Compounding has failed.
+*/
+ MSG_ITEM_COMPOUNDING_FAIL = 0x1ee,
+/*20031029 to latest
+길드 적대 성공
+Antagonist has been set.
+*/
+ MSG_HOSTILE_GUILD_SUCCEESS = 0x1ef,
+/*20031029 to latest
+적대 길드수 초과로 길드 적대 실패
+Guild has too many Antagonists.
+*/
+ MSG_TOO_MANY_HOSTILE_GUILD = 0x1f0,
+/*20031029 to latest
+이미 적대 길드 입니다
+Already set as an Antagonist
+*/
+ MSG_ALREADY_REGISTERED_HOSTILE_GUILD = 0x1f1,
+/*20031029 to latest
+제련이 성공적으로 되었습니다.
+Upgrade has been completed successfully.
+*/
+ MSG_ITEM_REFINING_SUCCEESS = 0x1f2,
+/*20031029 to latest
+제련이 실패하였습니다.
+Upgrade has failed.
+*/
+ MSG_ITEM_REFINING_FAIL = 0x1f3,
+/*20031029 to 20040311
+텔레포트 불가능 지역입니다.
+20040315 to latest
+이곳에서는 순간이동이 불가능합니다.
+Unavailable Area to Teleport
+*/
+ MSG_IMPOSSIBLE_TELEPORT_AREA = 0x1f4,
+/*20031029 to 20040311
+텔레포트 가능 지역입니다.
+20040315 to latest
+이 장소는 기억할 수 없습니다.
+Unable to memorize this place as Warp Point
+*/
+ MSG_POSSIBLE_TELEPORT_AREA = 0x1f5,
+/*20031029 to latest
+지금은 종료할 수 없습니다.
+Please wait 10 seconds before trying to log out.
+*/
+ MSG_CANT_EXIT_NOW = 0x1f6,
+/*20031029 to latest
+직위
+Position
+*/
+ MSG_POSITION = 0x1f7,
+/*20031029 to latest
+직업
+Job
+*/
+ MSG_JOB = 0x1f8,
+/*20031029 to latest
+메모
+Note
+*/
+ MSG_MEMO = 0x1f9,
+/*20031029 to latest
+기여
+Devotion
+*/
+ MSG_CONTRIBUTION = 0x1fa,
+/*20031029 to latest
+상납경험치
+Tax Point
+*/
+ MSG_EXP_CONTIRIBUTION = 0x1fb,
+/*20031029 to latest
+길드탈퇴
+Leave Guild
+*/
+ MSG_LEAVE_GUILD = 0x1fc,
+/*20031029 to latest
+제명시키기
+Expel
+*/
+ MSG_EXPEL_GUILD = 0x1fd,
+/*20031029 to latest
+서열
+Rank
+*/
+ MSG_GRADE = 0x1fe,
+/*20031029 to latest
+직위명
+Position Title
+*/
+ MSG_POSITION_NAME = 0x1ff,
+/*20031029 to latest
+가입권한
+Invitation
+*/
+ MSG_JOIN_AUTHORITY = 0x200,
+/*20031029 to latest
+처벌권한
+Punish
+*/
+ MSG_PENALTY_AUTORITY = 0x201,
+/*20031029 to latest
+상납%
+Tax %
+*/
+ MSG_CONTRIBUTION_PERCENT = 0x202,
+/*20031029 to latest
+제목
+Title
+*/
+ MSG_TITLE = 0x203,
+/*20031029 to latest
+내용
+For
+*/
+ MSG_CONTENTS = 0x204,
+/*20031029 to latest
+길드이름
+Guild Name
+*/
+ MSG_GUILD_NAME = 0x205,
+/*20031029 to latest
+길드레벨
+Guild lvl
+*/
+ MSG_GUILD_LEVEL = 0x206,
+/*20031029 to latest
+조합원수
+Number of Members
+*/
+ MSG_GUILD_PEOPLE_COUNT = 0x207,
+/*20031029 to latest
+랭킹
+Ranking
+*/
+ MSG_RANKING = 0x208,
+/*20031029 to latest
+아이템 감정
+Item Appraisal
+*/
+ MSG_ITEM_IDENTIFY = 0x209,
+/*20031029 to latest
+아이템 조합
+Insert Card
+*/
+ MSG_ITEM_COMPOUNDING = 0x20a,
+/*20031029 to latest
+탈퇴 사유를 입력해주세요.
+Please enter the reason of Secession.
+*/
+ MSG_PLEASE_INPUT_WHY_LEAVING = 0x20b,
+/*20031029 to latest
+추방 사유를 입력해주세요.
+Please enter the reason of Expulsion.
+*/
+ MSG_PELASE_INPUT_WHY_EXPEL = 0x20c,
+/*20031029 to latest
+상점을 닫으세요.
+Please close Shop.
+*/
+ MSG_PLEASE_CLOSE_STORE = 0x20d,
+/*20031029 to latest
+스킬 이름
+Skill
+*/
+ MSG_SKILL_NAME = 0x20e,
+/*20031029 to latest
+아이템 이름
+Item Name
+*/
+ MSG_ITEM_NAME = 0x20f,
+/*20031029 to 20031118
+https://pay.ragnarok.co.kr
+20031119 to latest
+https://payment.ragnarok.co.kr
+https://pay.ragnarok.co.kr (Billing Web)
+*/
+ MSG_SETTLE_WEB_URL = 0x210,
+/*20031029 to latest
+게임방에서 사용가능한 IP개수가 모두 사용중입니다. 개인 계정으로 결제 하시겠습니까?
+IP capacity of this Internet Cafe is full. Would you like to pay the personal base?
+*/
+ MSG_BAN_IP_OVERFLOW = 0x211,
+/*20031029 to latest
+결제시간이 다되어 게임을 종료합니다.
+You are out of available paid playing time. Game will be shut down automatically.
+*/
+ MSG_BAN_PAY_OUT = 0x212,
+/*20031029 to latest
+이름이 너무 깁니다. 한글 11자 영문 23자 이내로 써주십시오.
+Name is too long. Please enter a name no greater than 23 english characters.
+*/
+ MSG_NAMELENGTH_TOO_LONG = 0x213,
+/*20031029 to latest
+deleted
+Character will be deleted in %d seconds.
+*/
+ MSG_DELETE_AFTER_10_SECOND = 0x214,
+/*20031029 to latest
+귀하는 개인 정액제 사용자입니다.
+You paid with the personal regular base.
+*/
+ MSG_BILLING_100 = 0x215,
+/*20031029 to latest
+귀하는 개인정량제 사용자입니다.
+You paid with the personal regular base. Available time is xx hrs xx mins xx secs.
+*/
+ MSG_BILLING_200 = 0x216,
+/*20031029 to latest
+귀하는 개인 무료 사용자입니다.
+You are free!
+*/
+ MSG_BILLING_300 = 0x217,
+/*20031029 to latest
+귀하는 개인 무료 허용기간 사용자입니다.
+You are free for the test, your available time is xx hrs xx mins xx secs.
+*/
+ MSG_BILLING_400 = 0x218,
+/*20031029 to latest
+귀하는 게임방 정액제 사용자입니다.
+You paid with the Internet Cafe regular base. Available time is xx hrs xx mins xx secs.
+*/
+ MSG_BILLING_500 = 0x219,
+/*20031029 to latest
+귀하는 게임방 정량제 사용자입니다.
+You paid with the Time Limit for Internet Cafe. Available time is xx hrs xx mins xx secs.
+*/
+ MSG_BILLING_501 = 0x21a,
+/*20031029 to latest
+귀하는 게임방 무료 허용기간 사용자입니다.
+You are free for the test of Internet Cafe version .
+*/
+ MSG_BILLING_600 = 0x21b,
+/*20031029 to latest
+귀하는 게임방 무료 사용자입니다.
+You are free for the Internet Cafe version.
+*/
+ MSG_BILLING_700 = 0x21c,
+/*20031029 to latest
+귀하는 종량제 사이트 이용자입니다.
+You paid on the Time Limit Website.
+*/
+ MSG_BILLING_800 = 0x21d,
+/*20031029 to latest
+이모션 목록
+Emotion icon List
+*/
+ MSG_EMOTION_LIST = 0x21e,
+/*20031029 to latest
+/이모션
+/emo
+*/
+ MSG_VIEW_EMOTION = 0x21f,
+/*20031029 to latest
+/!
+*/
+ MSG_EMOTION_SURPRISE = 0x220,
+/*20031029 to latest
+/?
+*/
+ MSG_EMOTION_QUESTION = 0x221,
+/*20031029 to latest
+/기쁨
+/ho
+*/
+ MSG_EMOTION_DELIGHT = 0x222,
+/*20031029 to latest
+/하트
+/lv
+*/
+ MSG_EMOTION_THROB = 0x223,
+/*20031029 to latest
+/왕하트
+/lv2
+*/
+ MSG_EMOTION_BIGTHROB = 0x224,
+/*20031029 to latest
+/땀
+/swt
+*/
+ MSG_EMOTION_SWEAT = 0x225,
+/*20031029 to latest
+/아하
+/ic
+*/
+ MSG_EMOTION_AHA = 0x226,
+/*20031029 to latest
+/짜증
+/an
+*/
+ MSG_EMOTION_FRET = 0x227,
+/*20031029 to latest
+/화
+/ag
+*/
+ MSG_EMOTION_ANGER = 0x228,
+/*20031029 to latest
+/돈
+/$
+*/
+ MSG_EMOTION_MONEY = 0x229,
+/*20031029 to latest
+/...
+*/
+ MSG_EMOTION_THINK = 0x22a,
+/*20031029 to latest
+/감사
+/thx
+*/
+ MSG_EMOTION_THANKS = 0x22b,
+/*20031029 to latest
+/꽥
+/wah
+*/
+ MSG_EMOTION_KEK = 0x22c,
+/*20031029 to latest
+/죄송
+/sry
+*/
+ MSG_EMOTION_SORRY = 0x22d,
+/*20031029 to latest
+/웃음
+/heh
+*/
+ MSG_EMOTION_SMILE = 0x22e,
+/*20031029 to latest
+/뻘뻘
+/swt2
+*/
+ MSG_EMOTION_PROFUSELY_SWEAT = 0x22f,
+/*20031029 to latest
+/긁적
+/hmm
+*/
+ MSG_EMOTION_SCRATCH = 0x230,
+/*20031029 to latest
+/최고
+/no1
+*/
+ MSG_EMOTION_BEST = 0x231,
+/*20031029 to latest
+/두리번
+/??
+*/
+ MSG_EMOTION_STARE_ABOUT = 0x232,
+/*20031029 to latest
+/헉
+/omg
+*/
+ MSG_EMOTION_HUK = 0x233,
+/*20031029 to latest
+/오
+/oh
+*/
+ MSG_EMOTION_O = 0x234,
+/*20031029 to latest
+/엑스
+/X
+*/
+ MSG_EMOTION_X = 0x235,
+/*20031029 to latest
+/헬프
+/hlp
+*/
+ MSG_EMOTION_HELP = 0x236,
+/*20031029 to latest
+/가
+/go
+*/
+ MSG_EMOTION_GO = 0x237,
+/*20031029 to latest
+/엉엉
+/sob
+*/
+ MSG_EMOTION_CRY = 0x238,
+/*20031029 to latest
+/킥킥
+/gg
+*/
+ MSG_EMOTION_KIK = 0x239,
+/*20031029 to latest
+/쪽
+/kis
+*/
+ MSG_EMOTION_CHUP = 0x23a,
+/*20031029 to latest
+/쪽쪽
+/kis2
+*/
+ MSG_EMOTION_CHUPCHUP = 0x23b,
+/*20031029 to latest
+/흥
+/pif
+*/
+ MSG_EMOTION_HNG = 0x23c,
+/*20031029 to latest
+/응
+/ok
+*/
+ MSG_EMOTION_OK = 0x23d,
+/*20031029 to latest
+단축키 목록
+Shortcut List
+*/
+ MSG_SHORTCUT_LIST = 0x23e,
+/*20031029 to latest
+귀하의 계정은 보류되었습니다.
+Your account is suspended.
+*/
+ MSG_BAN_PAY_SUSPEND = 0x23f,
+/*20031029 to latest
+과금 정책 변경으로 인해 일시 종료됩니다. 다시 접속하여 주시기 바랍니다.
+Your connection is terminated due to change in the billing policy. Please connect again.
+*/
+ MSG_BAN_PAY_CHANGE = 0x240,
+/*20031029 to latest
+어카운트 서버에 인증된 IP와 귀하의 IP가 달라 연결을 종료합니다.
+Your connection is terminated because your IP doesn't match the authorized IP from the account server.
+*/
+ MSG_BAN_PAY_WRONGIP = 0x241,
+/*20031029 to latest
+게임방 IP에서 개인 종량제 과금을 막기 위해 연결을 종료합니다. 개인 종량제 과금을 사용하기 위해서는 게임방IP로 등록이 되지 않은 IP를 사용해 주세요.
+Your connection is terminated to prevent charging from your account's play time.
+*/
+ MSG_BAN_PAY_PNGAMEROOM = 0x242,
+/*20031029 to latest
+귀하는 운영자에 의해 강제 종료 되었습니다.
+You have been forced to disconnect by the Game Master Team.
+*/
+ MSG_BAN_OP_FORCE = 0x243,
+/*20031029 to latest
+무게가 90%를 초과하여 스킬을 사용할 수 없습니다.
+You can't use this Skill because you are over your Weight Limit.
+*/
+ MSG_USESKILL_FAIL_WEIGHTOVER = 0x244,
+/*20031029 to latest
+무명
+Nameless
+*/
+ MSG_NAMELESS_USER = 0x245,
+/*20031029 to latest
+축하합니다. %s님의 현재 랭킹이 %d위로 상승하였습니다.
+Congratulations! %s ranking has gone up to %d.
+*/
+ MSG_RANK_IN_TEN = 0x246,
+/*20031029 to latest
+안타깝게도 %s님의 현재 랭킹이 %d위로 하락하였습니다.
+What a pity! %s ranking has gone down to %d.
+*/
+ MSG_RANK_OUT_TEN = 0x247,
+/*20031029 to latest
+Pet Info
+*/
+ MSG_PET_INFO = 0x248,
+/*20031029 to latest
+만복도
+Hunger
+*/
+ MSG_PET_HUNGRY = 0x249,
+/*20031029 to latest
+친밀도
+Intimacy
+*/
+ MSG_PET_FRIENDLY = 0x24a,
+/*20031029 to latest
+상점과 채팅방을 동시에 열수 없습니다.
+Please avoid opening a chatroom while vending.
+*/
+ MSG_CANT_OPEN_STORE_WHILE_CHAT = 0x24b,
+/*20031029 to latest
+개
+Total
+*/
+ MSG_EA4 = 0x24c,
+/*20031029 to latest
+%s 를 전투불능으로 만들었습니다.
+You have knocked down %s.
+*/
+ MSG_SLAIN = 0x24d,
+/*20031029 to latest
+%s 님에 의해 전투불능 상태가 되었습니다.
+You have been knocked down by %s.
+*/
+ MSG_SLAINBY = 0x24e,
+/*20031029 to latest
+먹이 - '%s' 아이템이 존재하지 않습니다..
+Feed - "%s" is not available.
+*/
+ MSG_NOT_EXIST_PET_FOOD = 0x24f,
+/*20031029 to latest
+먹이 주기
+Feed Pet
+*/
+ MSG_PET_FEEDING = 0x250,
+/*20031029 to latest
+퍼포먼스
+Performance
+*/
+ MSG_PET_PERFORMANCE = 0x251,
+/*20031029 to latest
+알로 되돌리기
+Return to Egg Shell
+*/
+ MSG_PET_RETURN_EGG = 0x252,
+/*20031029 to latest
+악세사리 해제
+Unequip Accessory
+*/
+ MSG_PET_ACC_OFF = 0x253,
+/*20031029 to latest
+Pet 상태 보기
+Check Pet Status
+*/
+ MSG_PET_SHOWINFO = 0x254,
+/*20031029 to latest
+악세사리
+Accessory
+*/
+ MSG_PET_ACCESSARY = 0x255,
+/*20031029 to latest
+장착됨
+Equipped
+*/
+ MSG_ITEM_EQUIPED = 0x256,
+/*20031029 to latest
+펫 리스트
+Pet List
+*/
+ MSG_PET_EGG_LIST = 0x257,
+/*20031029 to latest
+장착 안됨
+Unequipped
+*/
+ MSG_ITEM_UNEQUIPED = 0x258,
+/*20031029 to latest
+정말로 먹이를 주시겠습니까?
+Are you sure that you want to feed your pet?
+*/
+ MSG_SURE_TO_FEED_PET = 0x259,
+/*20031029 to latest
+가격을 쓰실땐 숫자(0~9)만 써주십시오.
+Only the numbers (0~9) are available.
+*/
+ MSG_CAN_INPUT_NUMBER_ONLY = 0x25a,
+/*20031029 to latest
+감정되지 않은 아이템은 판매할 수 없습니다.
+You cannot sell unidentified items.
+*/
+ MSG_CANT_SELL_UNIDENTIFIED_ITEM = 0x25b,
+/*20031029 to latest
+가격이 0 Zeny인 아이템이 존재합니다. 계속 하시겠습니까?
+Item at 0 Zeny exists. Do you wish to continue?
+*/
+ MSG_YOU_HAVE_FREE_ITEM_ON_SHOP = 0x25c,
+/*20031029 to latest
+[새로 추가된 이모션 리스트]
+[New Emotion List]
+*/
+ MSG_NEW_EMOTION_LIST = 0x25d,
+/*20031029 to latest
+일본쪽 베타 사용자들에게 전하는 메세지. -> 겅호에서 재가입 하세요.
+N/A
+*/
+ MSG_BAN_JAPAN_REFUSE1 = 0x25e,
+/*20031029 to latest
+일본쪽 과금이 종료된 사용자들에게 전하는 메세지. -> 돈내라. 두 번내라.
+N/A
+*/
+ MSG_BAN_JAPAN_REFUSE2 = 0x25f,
+/*20031029 to latest
+같은 계정의 캐릭터가 이미 가입되어있습니다.
+Character in the same account already joined.
+*/
+ MSG_ALREADY_SAME_AID_JOINED = 0x260,
+/*20031029 to latest
+(%d 명) - 만18세이상
+(%d ppl) - over the age 18
+*/
+ MSG_SERVER_PROPERTY_ADULT = 0x261,
+/*20031029 to latest
+ 프로보크 상태가 되었습니다.
+Provoke initiated.
+*/
+ MSG_ENST_PROVOKE = 0x262,
+/*20031029 to latest
+ 프로보크 상태가 해제되었습니다.
+Provoke canceled.
+*/
+ MSG_DSST_PROVOKE = 0x263,
+/*20031029 to latest
+ 인듀어 상태가 되었습니다.
+Endure initiated.
+*/
+ MSG_ENST_ENDURE = 0x264,
+/*20031029 to latest
+ 인듀어 상태가 해제되었습니다.
+Endure canceled.
+*/
+ MSG_DSST_ENDURE = 0x265,
+/*20031029 to latest
+ 집중력 향상 상태가 되었습니다.
+Improve Concentration initiated.
+*/
+ MSG_ENST_CONCENTRATION = 0x266,
+/*20031029 to latest
+ 집중력 향상 상태가 해제되었습니다.
+Improve Concentration canceled.
+*/
+ MSG_DSST_CONCENTRATION = 0x267,
+/*20031029 to latest
+ 하이딩 상태가 되었습니다.
+Hiding Initiated.
+*/
+ MSG_ENST_HIDING = 0x268,
+/*20031029 to latest
+ 하이딩 상태가 해제되었습니다.
+Hiding Canceled.
+*/
+ MSG_DSST_HIDING = 0x269,
+/*20031029 to latest
+ 클로킹 상태가 되었습니다.
+Cloaking initiated.
+*/
+ MSG_ENST_CLOAKING = 0x26a,
+/*20031029 to latest
+ 클로킹 상태가 해제되었습니다.
+Cloaking canceled.
+*/
+ MSG_DSST_CLOAKING = 0x26b,
+/*20031029 to latest
+ 독을 반사 할 수 있는 상태가 되었습니다.
+Poison React initiated.
+*/
+ MSG_ENST_POISONREACT = 0x26c,
+/*20031029 to latest
+ 포이즌 리액트 상태가 해제되었습니다.
+Poison React canceled.
+*/
+ MSG_DSST_POISONREACT = 0x26d,
+/*20031029 to latest
+ 이동속도가 감소하였습니다.
+Speed reduced.
+*/
+ MSG_ENST_QUAGMIRE = 0x26e,
+/*20031029 to latest
+ 콰그마이어 상태가 해제되었습니다.
+Quagmire canceled.
+*/
+ MSG_DSST_QUAGMIRE = 0x26f,
+/*20031029 to latest
+ 방어력이 증가되었습니다.
+Defense increased.
+*/
+ MSG_ENST_ANGELUS = 0x270,
+/*20031029 to 20031224
+ 안젤루스 상태가 해제돼었습니다.
+20031229 to latest
+ 안젤루스 상태가 해제되었습니다.
+Angelus canceled.
+*/
+ MSG_DSST_ANGELUS = 0x271,
+/*20031029 to latest
+ 힘과 지능, 덱스가 증가하였습니다.
+Blessing aligned.
+*/
+ MSG_ENST_BLESSING = 0x272,
+/*20031029 to latest
+ 블레싱 상태가 해제되었습니다.
+Blessing canceled.
+*/
+ MSG_DSST_BLESSING = 0x273,
+/*20031029 to latest
+ 시그넘 크루시스를 사용하였습니다.
+Signum Crusis initiated.
+*/
+ MSG_ENST_CRUCIS = 0x274,
+/*20031029 to latest
+ 시그넘 크루시스 상태가 해제되었습니다.
+Signum Crusis canceled.
+*/
+ MSG_DSST_CRUCIS = 0x275,
+/*20031029 to latest
+ 독이 퍼지는 속도가 느려졌습니다.
+Slow Poison initiated.
+*/
+ MSG_ENST_SLOWPOISON = 0x276,
+/*20031029 to latest
+ 슬로우 포이즌 상태가 해제되었습니다.
+Slow Poison Canceled.
+*/
+ MSG_DSST_SLOWPOISON = 0x277,
+/*20031029 to latest
+ SP의 회복 속도가 향상 되었습니다.
+HP/SP recovery increased.
+*/
+ MSG_ENST_MAGNIFICAT = 0x278,
+/*20031029 to latest
+ 마니피캇 상태가 해제되었습니다.
+Magnificat canceled.
+*/
+ MSG_DSST_MAGNIFICAT = 0x279,
+/*20031029 to latest
+ 행운이 향상되었습니다.
+Luck increased.
+*/
+ MSG_ENST_GLORIA = 0x27a,
+/*20031029 to latest
+ 글로리아 상태가 해제되었습니다.
+Gloria canceled.
+*/
+ MSG_DSST_GLORIA = 0x27b,
+/*20031029 to latest
+ 1회 공격에 두 배 데미지를 받는 상태가 되었습니다.
+You will received double damage from all attacking opponents.
+*/
+ MSG_ENST_LEXAETERNA = 0x27c,
+/*20031029 to latest
+ 렉스에테르나 상태가 해제되었습니다.
+Lex Eterna canceled.
+*/
+ MSG_DSST_LEXAETERNA = 0x27d,
+/*20031029 to latest
+ 공격속도가 증가하였습니다.
+Attack Speed increased.
+*/
+ MSG_ENST_ADRENALINE = 0x27e,
+/*20031029 to latest
+ 공격속도가 감소하였습니다.
+Attack Speed reduced.
+*/
+ MSG_DSST_ADRENALINE = 0x27f,
+/*20031029 to latest
+ 페코에 올라 탔습니다.
+You've just been on a Peco Peco.
+*/
+ MSG_ENST_RIDING = 0x280,
+/*20031029 to latest
+ 페코에서 내렸습니다.
+You've just got off of a Peco Peco.
+*/
+ MSG_DSST_RIDING = 0x281,
+/*20031029 to latest
+ 팔콘을 장착하였습니다.
+You've just carried a Falcon with.
+*/
+ MSG_ENST_FALCON = 0x282,
+/*20031029 to latest
+ 팔콘을 풀어주었습니다.
+You've just released a Falcon.
+*/
+ MSG_DSST_FALCON = 0x283,
+/*20031029 to latest
+ 죽은척하기 상태가 되었습니다.
+Play Dead initiated.
+*/
+ MSG_ENST_TRICKDEAD = 0x284,
+/*20031029 to latest
+ 죽은척하기 상태가 해제되었습니다.
+Play Dead canceled.
+*/
+ MSG_DSST_TRICKDEAD = 0x285,
+/*20031029 to latest
+ 힘이 강해졌습니다.
+STR improved.
+*/
+ MSG_ENST_SHOUT = 0x286,
+/*20031029 to latest
+ 힘이 원래대로 돌아왔습니다.
+STR turned back to normal.
+*/
+ MSG_DSST_SHOUT = 0x287,
+/*20031029 to latest
+ 에너지코트 상태가 되었습니다.
+Energy Coat initiated.
+*/
+ MSG_ENST_ENERGYCOAT = 0x288,
+/*20031029 to latest
+ 에너지코트 상태가 해제되었습니다.
+Energy Coat canceled.
+*/
+ MSG_DSST_ENERGYCOAT = 0x289,
+/*20031029 to latest
+ 방어구가 파괴되었습니다.
+Armor destroyed.
+*/
+ MSG_ENST_BROKENAMOR = 0x28a,
+/*20031029 to latest
+ ...
+Weapon has just been released from destroyed status.
+*/
+ MSG_DSST_BROKENAMOR = 0x28b,
+/*20031029 to latest
+ 무기가 파괴되었니다.
+Weapon destroyed.
+*/
+ MSG_ENST_BROKENWEAPON = 0x28c,
+/*20031029 to latest
+ ...
+Weapon has just been released from destroyed status.
+*/
+ MSG_DSST_BROKENWEAPON = 0x28d,
+/*20031029 to latest
+ 환영상태가 되었습니다.
+Invisibility initiated.
+*/
+ MSG_ENST_ILLUSION = 0x28e,
+/*20031029 to latest
+ 환영상태가 해제되었습니다.
+Invisibility canceled.
+*/
+ MSG_DSST_ILLUSION = 0x28f,
+/*20031029 to latest
+과금 정보 처리가 늦어지고 있어 접속이 지연되고 있습니다. 잠시 후에 다시 시도해 주시기 바랍니다.
+Sorry. It is delayed due to the process of payment. Please re-connect in a minute.
+*/
+ MSG_REFUSE_BLOCK_TEMPORARY = 0x290,
+/*20031029 to 20060403
+장착된 화살을 해제 하여야 합니다.
+20060410 to 20061009
+장착된 화살 또는 탄환을 해제 하여야 합니다.
+20061016 to latest
+장착된 화살/탄환/수리검 을 해제해야합니다.
+You must unequip ammunition first.
+*/
+ MSG_UNEQUIP_ARROW = 0x291,
+/*20031029 to latest
+화살 목록
+Arrow List
+*/
+ MSG_ARROW_LIST = 0x292,
+/*20031029 to latest
+카트 목록
+Cart List
+*/
+ MSG_CART_LIST = 0x293,
+/*20031029 to latest
+카트를 장착한 상태여야 합니다.
+You must have a Pushcart.
+*/
+ MSG_MUST_EQUIP_CART = 0x294,
+/*20031029 to latest
+채팅방을 개설 할 수 없습니다.
+You cannot open a Chat Window.
+*/
+ MSG_CANT_MAKE_CHAT_ROOM = 0x295,
+/*20031029 to latest
+라그나로크 홈페이지로 접속하여 계정을 만듭니다. 처음 계정을 만드시면 3일 동안은 무료로 이용하실 수 있습니다.
+Registering an account is the first step to accessing the game. Do you want to visit the registration page now?
+*/
+ MSG_3DAY_FREE = 0x296,
+/*20031029 to latest
+앉은 상태에서는 이 아이템을 사용할 수 없습니다.
+You cannot use this item while sitting.
+*/
+ MSG_CANT_USE_WHEN_SITDOWN = 0x297,
+/*20031029 to 20040413
+운영자에 의한 채팅 및 스킬 금지가 %d 분간 남아 있습니다.
+20040419 to 20040713
+운영자에 의한 채팅, 스킬, 아이템 사용금지가 %d 분간 남아 있습니다.
+20040726 to latest
+채팅, 스킬, 아이템 사용금지가 %d 분간 남아 있습니다.
+Your use of skills and chat will be blocked for the next %d minutes.
+*/
+ MSG_BAD_MANNER_REMAIN = 0x298,
+/*20031029 to 20040413
+운영자에 의한 채팅 및 스킬 금지가 해지 되었습니다.
+20040419 to 20040713
+운영자에 의한 채팅, 스킬, 아이템 사용금지가 해지 되었습니다.
+20040726 to latest
+채팅, 스킬, 아이템 사용금지가 해지 되었습니다.
+Your use of skills and chat have been reinstated.
+*/
+ MSG_BAD_MANNER_END = 0x299,
+/*20031029 to latest
+-[장착안됨]
+- [Not equipped]
+*/
+ MSG_REF_UNEQUIP = 0x29a,
+/*20031029 to latest
+배고픔
+Very Hungry
+*/
+ MSG_VERY_HUNGRY = 0x29b,
+/*20031029 to latest
+출출함
+Hungry
+*/
+ MSG_HUNGRY = 0x29c,
+/*20031029 to latest
+보통
+Normal
+*/
+ MSG_NORMAL = 0x29d,
+/*20031029 to latest
+배부름
+Satisfied
+*/
+ MSG_REPLETE = 0x29e,
+/*20031029 to latest
+아주 배부름
+Stuffed
+*/
+ MSG_VERY_REPLETE = 0x29f,
+/*20031029 to latest
+서먹서먹함
+Awkward
+*/
+ MSG_VERY_AWKWARD = 0x2a0,
+/*20031029 to latest
+어색함
+Shy
+*/
+ MSG_AWKWARD = 0x2a1,
+/*20031029 to latest
+친함
+Cordial
+*/
+ MSG_FRIENDLY = 0x2a2,
+/*20031029 to latest
+절친함
+Loyal
+*/
+ MSG_VERY_FRIENDLY = 0x2a3,
+/*20031029 to latest
+알수 없음
+Unknown
+*/
+ MSG_UNKNOWN = 0x2a4,
+/*20031029 to 20080520
+(태국)귀하는 앞으로 %일 %d시간 %d분 사용이 가능합니다.
+20080527 to latest
+귀하는 앞으로 %일 %d시간 %d분 사용이 가능합니다.
+Your account has play time of %d day %d hour %d minute.
+*/
+ MSG_BILLING_DAY_HOUR_MINUTES = 0x2a5,
+/*20031029 to 20080520
+(태국)이 계정은 이미 다른 어카운트 서버로 접속한 상태입니다.
+20080527 to latest
+이 계정은 이미 다른 어카운트 서버로 접속한 상태입니다.
+Your account is already connected to account server.
+*/
+ MSG_BAN_INFORMATION_REMAINED_ANOTHER_ACCOUNT = 0x2a6,
+/*20031029 to 20080520
+(태국)귀하는 앞으로 %d시간 %d분 사용이 가능합니다.
+20080527 to latest
+귀하는 앞으로 %d시간 %d분 사용이 가능합니다.
+Your account has play time of %d hour %d minute.
+*/
+ MSG_BILLING_HOUR_MINUTES = 0x2a7,
+/*20031029 to 20080520
+(태국)귀하는 무료 사용자 입니다.
+20080527 to latest
+귀하는 무료 사용자 입니다.
+Your account is a free account.
+*/
+ MSG_BILLING_FREE_USER = 0x2a8,
+/*20031029 to 20080520
+(태국)이 계정으로 사크라이에 접속할수 없습니다.
+20080527 to latest
+이 계정으로 사크라이에 접속할수 없습니다.
+This account can't connect the Sakray server.
+*/
+ MSG_REFUSE_NONSAKRAY_ID_BLOCKED = 0x2a9,
+/*20031029 to latest
+펫의 이름은 영문 23, 한글 11자 이내로 정해 주세요.
+Your pet name must be 23 characters or less.
+*/
+ MSG_PETNAME_IN23 = 0x2aa,
+/*20031029 to latest
+이름은 단 한번만 바꿀수 있습니다. 펫 이름을 ^0000ff^0000ff %s^000000^000000 로 수정합니다. 계속 하시겠습니까?
+You may change your pet's name only once. Your pet's name will be changed to ^0000ff^0000ff %s^000000^000000. Do you wish to continue?
+*/
+ MSG_PETNAME_CHANGE_ONLYONCE = 0x2ab,
+/*20031029 to latest
+/폰트
+/font
+*/
+ MSG_NAMEBALLOON_TYPE = 0x2ac,
+/*20031029 to latest
+길드에 남은 제니가 부족하여 작업이 실패하였습니다.
+Your guild lacks the funds to pay for this venture.
+*/
+ MSG_GUILDZENY_NOT_ENOUGH = 0x2ad,
+/*20031029 to latest
+길드가 소유할 수 있는 최대 금액을 초과하여 작업이 실패하였습니다.
+Your guild zeny limit prevents you from performing this action.
+*/
+ MSG_GUILDZENY_OVER = 0x2ae,
+/*20031029 to latest
+이펙트 간략화 On
+Simplified effects have been activated.
+*/
+ MSG_MINEFFECT_ON = 0x2af,
+/*20031029 to latest
+이펙트 간략화 Off
+Simplified effects have been deactivated.
+*/
+ MSG_MINEFFECT_OFF = 0x2b0,
+/*20031029 to latest
+자본금
+Required Fee
+*/
+ MSG_CAPITAL = 0x2b1,
+/*20031029 to latest
+아이템을 바닥에 버리려면, 아이템 창을 열어 주십시오.
+If you wish to drop an item, you must first open your Item Window (alt+e).
+*/
+ MSG_OPEN_ITEMWND_TO_THROW = 0x2b2,
+/*20031029 to latest
+PC방 요금이 종료하여 개인 요금제로 전환합니다. 개인 요금으로 게임을 계속 하시겠습니까?
+Internet Cafe Time Plan has been ended. Would you like to continue the game with your personal play time?
+*/
+ MSG_ASK_PNGAMEROOM = 0x2b3,
+/*20031029 to latest
+
+20080520 to 20080520
+
+Current admission application state.
+*/
+ MSG_REPLY_REMAINTIME = 0x2b4,
+/*20031029 to latest
+
+20080520 to 20080520
+
+Current admission application state.
+*/
+ MSG_INFO_REMAINTIME = 0x2b5,
+/*20031029 to latest
+돈이 모자라거나, 가질 수 있는 최대 금액을 초과하였습니다.
+Your lack of zeny or your zeny limit have prevented you from performing this action.
+*/
+ MSG_OVER_OR_LOW_MONEY = 0x2b6,
+/*20031029 to latest
+전투불능 상태가 되었습니다. esc키를 누르시면 선택창이 뜹니다.
+Your character has fainted. Push the ESC key to restart.
+*/
+ MSG_PRESS_ESC_TO_RESTART = 0x2b7,
+/*20031029 to latest
+ %d 개 획득
+- %d obtained.
+*/
+ MSG_EA_OBTAIN = 0x2b8,
+/*20031029 to latest
+스펠 리스트
+Spell List
+*/
+ MSG_SPELL_LIST = 0x2b9,
+/*20031029 to latest
+/최소화
+/minimize
+*/
+ MSG_MINEFFECT = 0x2ba,
+/*20031029 to latest
+이 아이템은 손상되어 있습니다..
+This item has been damaged.
+*/
+ MSG_DAMAGED_ITEM = 0x2bb,
+/*20031029 to latest
+/noshift : 쉬프트를 누르지않고 힐로 적을 공격할수있게됩니다 On Off
+/noshift: You may use your ''force heal'' ability without the Shift key. On | Off
+*/
+ MSG_EXPLAIN_NOSHIFT = 0x2bc,
+/*20031029 to 20040223
+시프트를 누르지 않고도 힐로 몬스터를 공격할수 있습니다 [ON]
+20040225 to latest
+시프트를 누르지 않고도 힐로 언데드를 공격할수 있습니다 [/ns ON]
+[no shift] option activated. [ON]
+*/
+ MSG_NOSHIFT_ON = 0x2bd,
+/*20031029 to 20040223
+시프트를 누르지 않고도 힐로 몬스터를 공격할수 있습니다 [OFF]
+20040225 to 20040315
+시프트를 누르지 않고도 힐로 언데드를 공격할수 있습니다 [/ns OFF]
+20040322 to latest
+시프트를 눌러야 힐로 언데드를 공격할수 있습니다 [/ns OFF]
+[no shift] option deactivated. [OFF]
+*/
+ MSG_NOSHIFT_OFF = 0x2be,
+/*20031029 to latest
+MSI_REFUSE_BAN_BY_DBA
+*/
+ MSG_REFUSE_BAN_BY_DBA = 0x2bf,
+/*20031029 to latest
+MSI_REFUSE_EMAIL_NOT_CONFIRMED
+*/
+ MSG_REFUSE_EMAIL_NOT_CONFIRMED = 0x2c0,
+/*20031029 to latest
+MSI_REFUSE_BAN_BY_GM
+*/
+ MSG_REFUSE_BAN_BY_GM = 0x2c1,
+/*20031029 to latest
+MSI_REFUSE_TEMP_BAN_FOR_DBWORK
+*/
+ MSG_REFUSE_TEMP_BAN_FOR_DBWORK = 0x2c2,
+/*20031029 to latest
+MSI_REFUSE_SELF_LOCK
+*/
+ MSG_REFUSE_SELF_LOCK = 0x2c3,
+/*20031029 to latest
+MSI_REFUSE_NOT_PERMITTED_GROUP
+*/
+ MSG_REFUSE_NOT_PERMITTED_GROUP = 0x2c4,
+/*20031029 to latest
+MSI_REFUSE_WAIT_FOR_SAKRAY_ACTIVE
+*/
+ MSG_REFUSE_WAIT_FOR_SAKRAY_ACTIVE = 0x2c5,
+/*20031029 to latest
+/aura : 오오라를 간략화 시킬수있습니다 On Off
+/aura: Simplify Aura effect On | Off
+*/
+ MSG_EXPLAIN_AURA = 0x2c6,
+/*20031029 to latest
+오오라가 정상적으로 표시됩니다 [오오라 ON]
+Turn On Aura [Aura ON]
+*/
+ MSG_AURA_ON = 0x2c7,
+/*20031029 to latest
+오오라가 간략화되서 표시됩니다 [오오라 OFF]
+Simplify Aura enabled. [ON]
+*/
+ MSG_AURA_OFF = 0x2c8,
+/*20031029 to latest
+채팅금지 기록 %d 회
+Chat block record %d times
+*/
+ MSG_PROHIBIT_LOG = 0x2c9,
+/*20031029 to latest
+채팅 금지 리스트
+Chat block list
+*/
+ MSG_PROHIBIT_LIST = 0x2ca,
+/*20031029 to latest
+/이름표시 or /showname : 캐릭터의 이름 표시 방식을 변경합니다.
+/showname: Change the name font type.
+*/
+ MSG_EXPLAIN_SHOWNAMETYPE = 0x2cb,
+/*20031029 to latest
+/noctrl : 콘트롤을 누르지않아도 자동공격이 됩니다. On Off
+/noctrl | /nc: Auto attack without pressing ctrl key. On | Off
+*/
+ MSG_EXPLAIN_NOCTRL = 0x2cc,
+/*20031029 to 20040223
+콘트롤을 누르지 않아도 자동공격을 합니다 [자동공격 ON]
+20040225 to latest
+콘트롤을 누르지 않아도 자동공격을 합니다 [/nc ON]
+Use auto attack without Ctrl. [Auto attack ON]
+*/
+ MSG_NOCTRL_ON = 0x2cd,
+/*20031029 to 20040223
+콘트롤을 눌러야 자동공격을 합니다 [자동공격 OFF]
+20040225 to latest
+콘트롤을 눌러야 자동공격을 합니다 [/nc OFF]
+Use auto attack with Ctrl. [Auto attack OFF]
+*/
+ MSG_NOCTRL_OFF = 0x2ce,
+/*20031029 to latest
+채팅 금지 주기
+Mute this player.
+*/
+ MSG_APPEND_PROHIBIT = 0x2cf,
+/*20031029 to latest
+채팅 금지 완전 풀기 & 로그 삭제
+Unmute player & Erase mute time.
+*/
+ MSG_ERASE_PROHIBIT = 0x2d0,
+/*20031029 to latest
+채팅 금지 시간 줄이기(로그 삭제 안됨)
+Decrease Player Mute time.
+*/
+ MSG_REDUCE_PROHIBIT = 0x2d1,
+/*20031029 to latest
+폰트가 정상적으로 바뀌었습니다 [이름표시방식 1]
+Normal Font Displayed. [showname type 1]
+*/
+ MSG_SHOWNAME_ON = 0x2d2,
+/*20031029 to latest
+폰트가 가늘게 바뀌면서 파티명도 표시됩니다 [이름표시방식 2]
+Font will be thin and party name will be shown [showname type 2]
+*/
+ MSG_SHOWNAME_OFF = 0x2d3,
+/*20031029 to latest
+/doridori : 연속해서 이 명령어를 쳐주면 캐릭터가 도리도리 ^^;;
+/doridori: Shake head
+*/
+ MSG_EXPLAIN_DORIDORI = 0x2d4,
+/*20031029 to latest
+인터넷 카페에서 과금을 하고 있습니다.
+Internet room is paying now.
+*/
+ MSG_BILLING_INTERNET_CAFE = 0x2d5,
+/*20031029 to latest
+정액제 과금은 %d일 %d시간 %d분이 남았습니다.
+종량제 과금은 %d시간 %d분이 남았습니다.
+Prepaid voucher validate until %d days %d hours %d minutes later.
+Time limit voucher validate untill %d hours %d minutes later.
+*/
+ MSG_BILLING_BOTH = 0x2d6,
+/*20031029 to latest
+/bingbing : 연속해서 이 명령어를 쳐주면 캐릭터가 빙글빙글 ^^;;
+/bingbing: Rotates player counter clockwise.
+*/
+ MSG_EXPLAIN_BINGBING = 0x2d7,
+/*20031029 to latest
+/bangbang : 연속해서 이 명령어를 쳐주면 캐릭터가 뱅글뱅글 ^^;;
+/bangbang: Rotates player clockwise.
+*/
+ MSG_EXPLAIN_BANGBANG = 0x2d8,
+/*20031029 to latest
+/skillfail : 빨간색의 스킬사용 실패 메세지를 표시하지 않습니다 On Off
+/skillfail: Display red font message when skill fails. On | Off
+*/
+ MSG_EXPLAIN_SKILLFAIL = 0x2d9,
+/*20031029 to 20040223
+스킬사용 실패 메세지를 표시합니다 [표시 ON]
+20040225 to latest
+스킬사용 실패 메세지를 표시합니다 [/sf ON]
+Skill fail messages will be displayed. [Display On]
+*/
+ MSG_SKILLFAIL_ON = 0x2da,
+/*20031029 to 20040223
+스킬사용 실패 메세지를 표시하지 않습니다 [표시 OFF]
+20040225 to latest
+스킬사용 실패 메세지를 표시하지 않습니다 [/sf OFF]
+Skill fail messages will not be displayed. [Display OFF]
+*/
+ MSG_SKILLFAIL_OFF = 0x2db,
+/*20031029 to latest
+/notalkmsg : 채팅내용을 채팅창에 표시하지 않습니다 On Off
+/notalkmsg: Chat will not be displayed in chat window. On | Off
+*/
+ MSG_EXPLAIN_NOTALKMSG = 0x2dc,
+/*20031029 to 20040223
+채팅내용을 채팅창에 표시합니다 [표시 ON]
+20040225 to latest
+채팅내용을 채팅창에 표시합니다 [/nm ON]
+Chat content will be displayed in the chat window. [Display ON]
+*/
+ MSG_NOTALKMSG_ON = 0x2dd,
+/*20031029 to 20040223
+채팅내용을 채팅창에 표시하지않습니다 [표시 OFF]
+20040225 to latest
+채팅내용을 채팅창에 표시하지않습니다 [/nm OFF]
+Chat content will not be displayed in the chat window. [Display OFF]
+*/
+ MSG_NOTALKMSG_OFF = 0x2de,
+/*20031029 to 20040423
+/set1 : /noctrl + /showname + /skillfail
+20040426 to 20040707
+/set1 : /noctrl + /showname + /skillfail , /set2 : + /q3
+20040707 to latest
+/set1 : /nc + /showname + /sf + /wi, /set2 : + /q3
+/set1: /noctrl + /showname + /skillfail
+*/
+ MSG_EXPLAIN_SET1 = 0x2df,
+/*20031029 to latest
+/fog : FOG이펙트를 키거나 끌수있습니다 On Off
+/fog: Fog effect. On | Off
+*/
+ MSG_EXPLAIN_FOG = 0x2e0,
+/*20031029 to latest
+ 청혼을 해왔습니다. 승낙하시겠습니까?
+You have received a marriage proposal. Do you accept?
+*/
+ MSG_SUGGEST_COUPLE = 0x2e1,
+/*20031029 to latest
+아이템 분배 방식
+Item sharing type
+*/
+ MSG_HOWITEMDIV = 0x2e2,
+/*20031029 to latest
+각자 취득
+Individual
+*/
+ MSG_ITEMDIV1 = 0x2e3,
+/*20031029 to latest
+균등하게 분배
+Shared
+*/
+ MSG_ITEMDIV2 = 0x2e4,
+#if PACKETVER >= 20031103
+/*20031103 to latest
+nProtect KeyCrypt
+*/
+ MSG_KEYCRYPT = 0x2e5,
+/*20031103 to latest
+Keyboard Driver가 검출되었습니다.
+
+키보드 보안 입력을 위해 추가기능을 설치하시겠습니까?
+
+(추가기능 설치후, 시스템 reboot 필수)
+Keyboard Driver has been detected.
+
+Do you want to install a program for keyboard security?
+
+(After installation, System Reboot is required)
+*/
+ MSG_KEYCRYPT_INSTALL_KEYDRIVER = 0x2e6,
+/*20031103 to latest
+설치가 완료 되었습니다.
+
+시스템을 Reboot 합니다.
+Installation has been completed.
+
+System will be rebooted.
+*/
+ MSG_KEYCRYPT_REBOOT = 0x2e7,
+/*20031103 to latest
+설치 실패.
+Installation has been failed.
+*/
+ MSG_KEYCRYPT_INSTALLFAIL = 0x2e8,
+/*20031103 to latest
+키보드 보안을 적용하지 않고 계속합니다.
+Keyboard Security will be skipped.
+*/
+ MSG_KEYCRYPT_SKIPKEYCRYPT = 0x2e9,
+/*20031103 to latest
+키보드 보안에 필요한 파일이 존재하지 않습니다.
+
+(npkeyc.vxd, npkeyc.sys, npkeycs.sys)
+Required file for Keyboard Security is not existing.
+
+(npkeyc.vxd, npkeyc.sys, npkeycs.sys)
+*/
+ MSG_KEYCRYPT_NOKEYCRYPTFILE = 0x2ea,
+/*20031103 to latest
+USB Keyboard가 검출되었습니다.
+
+키보드 보안 입력을 위해 추가기능을 설치하시겠습니까?
+
+(추가기능 설치후, 시스템 reboot 필수)
+USB Keyboard has been detected.
+
+Do you want to install a program for keyboard security?
+
+(After installation, System Reboot is required)
+*/
+ MSG_KEYCRYPT_USBKEYBOARD = 0x2eb,
+/*20031103 to latest
+ftp://ragnarok.nefficient.co.kr/pub/ragnarok/ragnarok0526.exe
+*/
+ MSG_FINDHACK_PATH = 0x2ec,
+/*20031103 to latest
+FindHack이 정상적으로 설치가 되어있지 않습니다. ragnarok0226.exe 를 다운로드 하여 라그나로크가 설치된 폴더에 설치해 주시기 바랍니다.(%d).
+FindHack is not installed correctly. Please download ragnarok0226.exe and install it in RagnarokOnline directory.(%d).
+*/
+ MSG_FINDHACK_NOTINSTALLED = 0x2ed,
+/*20031103 to latest
+해킹툴이 존재하지만 치료가 정상적으로 되지 않았습니다. 라그나로크가 실행되지 않습니다.
+Hacking tool is existing but it hasn't been cleaned. Rangarok Online will not be executed.
+*/
+ MSG_FINDHACK_HACKTOOLEXIST = 0x2ee,
+/*20031103 to latest
+해킹툴 진단 프로그램이 정상적으로 다운로드 되지 않았습니다. ragnarok0226.exe 를 다운로드 하여 라그나로크가 설치된 폴더에 설치해 주시기 바랍니다.
+Hacking tool scan program has not been downloaded correctly. Please download ragnarok0226.exe and install it in RagnarokOnline directory.
+*/
+ MSG_FINDHACK_CANTDOWNLOAD = 0x2ef,
+/*20031103 to latest
+NPX.DLL 등록에러 이거나 FindHack 구동에 필요한 파일이 없습니다. ragnarok0226.exe 를 다운로드 하여 라그나로크가 설치된 폴더에 설치해 주시기 바랍니다.
+NPX.DLL register error or there is no necessary file to run FindHack. Please download ragnarok0226.exe and install it in RagnarokOnline directory.
+*/
+ MSG_FINDHACK_NOFILE = 0x2f0,
+/*20031103 to latest
+예외사항이 발생했습니다. (02-3281-0361)로 문의해주세요. 리턴값(%d)
+Exceptional Error. Please contact the customer support. Return Value: (%d)
+*/
+ MSG_FINDHACK_EXCEPTION = 0x2f1,
+/*20031103 to latest
+종료버튼을 클릭 하셨습니다.
+Exit button has been clicked.
+*/
+ MSG_FINDHACK_EXITPRESSED = 0x2f2,
+/*20031103 to latest
+Findhack 업데이트 서버접근 실패하였습니다. 잠시 후에 다시 시도해 주시거나 그라비티 운영팀으로 연락해주시기 바랍니다.
+Unable to connect Findhack Update Server. Please try again or contact the customer support.
+*/
+ MSG_FINDHACK_UPDATEFAILED = 0x2f3,
+/*20031103 to latest
+사랑받고있는
+Beloved
+*/
+ MSG_NAMED_PET = 0x2f4,
+/*20031103 to 20031103
+신고용 갈무리 파일을 저장합니다.
+20031110 to latest
+/report or /신고 : 신고용 갈무리 파일을 저장합니다.
+/report: Save a chat log file.
+*/
+ MSG_REPORTCOMMAND_EXPLANATION = 0x2f5,
+/*20031103 to 20031112
+이 파일은 (주)그라비티의 운영팀에서 게임내의 부정행위나 비매너 행위에 대한
+증거자료로사용하게 됩니다.
+문서를 다른 문서 형식으로 저장하거나 내용을 변경하여 원본과 일치하지 않게
+ 될 경우 그 문서는 증거 효력을 상실하게 됩니다.
+20031117 to latest
+이 파일은 (주)그라비티의 운영팀에서 게임내의 부정행위나 비매너 행위에 대한
+증거자료로 사용하게 됩니다.
+문서를 다른 문서 형식으로 저장하거나 내용을 변경하여 원본과 일치하지 않게
+ 될 경우 그 문서는 증거 효력을 상실하게 됩니다.
+Chat logs are not accepted as evidence for any ill-mannered violation on account of possible file modifications. However this feature is provided for players' personal reference.
+*/
+ MSG_REPORTTEXT_HEADER = 0x2f6,
+#endif
+#if PACKETVER >= 20031110
+/*20031110 to latest
+당신을 사랑해요 ♡
+I love you.
+*/
+ MSG_LOVE_SKILL = 0x2f7,
+#endif
+#if PACKETVER >= 20031124
+/*20031124 to latest
+화면 또는 이펙트가 밝아서 눈에 부담이 되시는분들은 모니터의 밝기를 조정해주시기바랍니다.
+Please adjust your monitor/video brightness if effects appear too bright.
+*/
+ MSG_EXPLAIN_BRIGHT = 0x2f8,
+#endif
+#if PACKETVER >= 20031218
+/*20031218 to latest
+전체화면모드가 잘안되는 경우에 게임실행후 ALT+TAB으로 화면을 전환하면 잘되는 기종도 있습니다
+If full screen mode fails to work, it is suggested you alt+tab [or ctrl+esc] to inactivate and reactivate the Ragnarok Client.
+*/
+ MSG_EXPLAIN_ALTTAB = 0x2f9,
+#endif
+#if PACKETVER >= 20031223
+/*20031223 to latest
+(%d 명) - 유료서버
+(%d players) - Pay to Play Server
+*/
+ MSG_SERVER_PROPERTY_PAY = 0x2fa,
+/*20031223 to latest
+(%d 명) - 무료서버
+(%d players) - Free Server
+*/
+ MSG_SERVER_PROPERTY_FREE = 0x2fb,
+/*20031223 to latest
+무료 회원은 유료 서버로 접속할 수 없습니다.
+Trial players can't connect Pay to Play Server.
+*/
+ MSG_CANT_CONNECT_TO_PAY_SERVER = 0x2fc,
+#endif
+#if PACKETVER >= 20040107
+/*20040107 to 20040108
+마우스 우클릭으로 F9에 저장한 스킬을 쓸수있습니다 [QUICK ON]
+20040112 to latest
+마우스 우클릭으로 F9에 저장한 스킬을 쓸수있습니다 [/q1 ON]
+Right click menu skills for F9 are Enabled.[/q1 ON]
+*/
+ MSG_QUICKSPELL_ON = 0x2fd,
+/*20040107 to 20040108
+마우스 우클릭으로 스킬을 사용하지 못합니다 [QUICK OFF]
+20040112 to latest
+마우스 우클릭으로 스킬을 사용하지 못합니다 [/q1 OFF]
+Right click menu skills for F9 are Disabled.[/q1 OFF]
+*/
+ MSG_QUICKSPELL_OFF = 0x2fe,
+/*20040107 to 20040119
+/quickspell : 마우스 우클릭으로 F9에 저장한 스킬을 사용합니다 On Off
+20040126 to latest
+/quickspell : 마우스 우클릭으로 F9에 저장한 스킬을 사용합니다 On Off
+/quickspell: Right-click menu enables you to use skills assigned to the F9 hotkey. On | Off
+*/
+ MSG_EXPLAIN_QUICKSPELL = 0x2ff,
+#endif
+#if PACKETVER >= 20040112
+/*20040112 to latest
+마우스의 WHEEL을 사용해서 F7 과 F8에 저장한 스킬을 사용합니다 [/q2 ON]
+Mouse wheel skills for F7 and F8 are Enabled.[/q2 ON]
+*/
+ MSG_QUICKSPELL2_ON = 0x300,
+/*20040112 to latest
+마우스 WHEEL로 스킬을 사용하지 못합니다 [/q2 OFF]
+Mouse wheel skills for F7 and F8 are Disabled.[/q2 OFF]
+*/
+ MSG_QUICKSPELL2_OFF = 0x301,
+/*20040112 to 20040119
+/quickspell2 : 마우스 WHEEL로 F7 과 F8에 저장한 스킬을 사용합니다 On Off
+20040126 to latest
+/quickspell2 : 마우스 WHEEL을 위,아래로 굴려서 F7과F8에 저장한 스킬을 사용합니다 On Off
+/quickspell2: By rolling the mouse wheel up and down, you are able to use skills registered on F7 and F8 hotkeys. On | Off
+*/
+ MSG_EXPLAIN_QUICKSPELL2 = 0x302,
+/*20040112 to latest
+/q3 : /quickspell (/q1) + /quickspell2 (/q2)
+/q3: /quickspell (/q1) + /quickspell2 (/q2)
+*/
+ MSG_EXPLAIN_QUICKSPELL3 = 0x303,
+#endif
+#if PACKETVER >= 20040202
+/*20040202 to latest
+/찌릿
+/bzz
+*/
+ MSG_EMOTION_STARE = 0x304,
+/*20040202 to latest
+/밥
+/rice
+*/
+ MSG_EMOTION_HUNGRY = 0x305,
+/*20040202 to latest
+/멋져
+/awsm
+*/
+ MSG_EMOTION_COOL = 0x306,
+/*20040202 to latest
+/메롱
+/meh
+*/
+ MSG_EMOTION_MERONG = 0x307,
+/*20040202 to latest
+/부끄
+/shy
+*/
+ MSG_EMOTION_SHY = 0x308,
+/*20040202 to latest
+/쓱쓱
+/pat
+*/
+ MSG_EMOTION_GOODBOY = 0x309,
+/*20040202 to latest
+/엠탐
+/mp
+*/
+ MSG_EMOTION_SPTIME = 0x30a,
+/*20040202 to latest
+/질질
+/slur
+*/
+ MSG_EMOTION_SEXY = 0x30b,
+/*20040202 to latest
+/컴온
+/com
+*/
+ MSG_EMOTION_COMEON = 0x30c,
+/*20040202 to latest
+/하품
+/yawn
+*/
+ MSG_EMOTION_SLEEPY = 0x30d,
+/*20040202 to latest
+/축하
+/grat
+*/
+ MSG_EMOTION_CONGRATULATION = 0x30e,
+/*20040202 to latest
+/피탐
+/hp
+*/
+ MSG_EMOTION_HPTIME = 0x30f,
+/*20040202 to latest
+/이모션 : 현재 사용가능한 이모션의 리스트를 보여줍니다.
+/emotion: views the emoticon list.
+*/
+ MSG_EXPLAIN_EMOTION = 0x310,
+#endif
+#if PACKETVER >= 20040223
+/*20040223 to 20040302
+키보드를 이용해서 스킬단축창2 와 3의 스킬들을 사용합니다. [/bm ON]
+20040308 to latest
+키보드를 이용해서 스킬단축창 1,2,3의 스킬들을 사용합니다. [/bm ON]
+Skills assigned to shortcut windows 1, 2, 3 are Enabled. [/bm ON]
+*/
+ MSG_BATTLE_ON = 0x311,
+/*20040223 to 20040302
+키보드를 이용해서 스킬단축창2 와 3의 스킬들을 사용하지못합니다. [/bm OFF]
+20040308 to latest
+키보드를 이용해서 스킬단축창 1,2,3의 스킬들을 사용하지못합니다. [/bm OFF]
+Skills assigned to shortcut windows 1, 2, 3 are Disabled. [/bm OFF]
+*/
+ MSG_BATTLE_OFF = 0x312,
+/*20040223 to latest
+/battlemode : Q ~ O 를 누르면 스킬단축창2의 스킬들이 사용됩니다.
+/battlemode: allows you to use skills assigned to Shortcut Window 2 by pressing Q ~ O keys.
+*/
+ MSG_EXPLAIN_BATTLE = 0x313,
+/*20040223 to 20040302
+ A ~ L 을 누르면 스킬단축창3의 스킬들이 사용됩니다. On Off
+20040308 to latest
+ A ~ L 을 누르면 스킬단축창3의 스킬들이 사용됩니다.
+A ~ L keys allow you to use skills assigned to Shortcut Window 3.
+*/
+ MSG_EXPLAIN_BATTLE2 = 0x314,
+/*20040223 to latest
+라그나로크를 실행하실때 다른 프로그램을 띄우시면 게임이 느려질수도있습니다.
+Please remember, programs running in the background while playing may affect the game's performance.
+*/
+ MSG_EXPLAIN_LAG = 0x315,
+#endif
+#if PACKETVER >= 20040302
+/*20040302 to 20041130
+천사님 제 목소리 들리세여? ^^;
+20041206 to latest
+천사님 제 목소리 들리세요? ^^;
+Dear angel, can you hear my voice?
+*/
+ MSG_SUPERNOVICE1 = 0x316,
+/*20040302 to latest
+슈퍼노비스
+Super Novice
+*/
+ MSG_SUPERNOVICE2 = 0x317,
+/*20040302 to 20041130
+예여~
+20041206 to latest
+예요~
+Super Novice~
+*/
+ MSG_SUPERNOVICE3 = 0x318,
+/*20040302 to 20041130
+저 좀 도와주세여~ ㅠ_ㅠ
+20041206 to latest
+저 좀 도와주세요~ ㅠ_ㅠ
+Help me out~ Please~ T_T
+*/
+ MSG_SUPERNOVICE4 = 0x319,
+#endif
+#if PACKETVER >= 20040308
+/*20040308 to 20041012
+ 입양을 요청해왔습니다. 승낙하시겠습니까?
+20041018 to latest
+님께서 당신을 입양시키고 싶어하십니다. 승낙하시겠습니까?
+ wishes to adopt you. Do you accept?
+*/
+ MSG_SUGGEST_BABY = 0x31a,
+/*20040308 to latest
+ Z ~ > 을 누르면 스킬단축창1의 스킬들이 사용됩니다. On Off
+Z ~ > keys allow you to use skills assigned on shortcut window 1. On | Off
+*/
+ MSG_EXPLAIN_BATTLE3 = 0x31b,
+/*20040308 to latest
+ Space를 한번 누른뒤에 글자를 입력하면 채팅을 할수있습니다.
+Press the space bar to Chat when in Battle mode [/battlemode | /bm].
+*/
+ MSG_EXPLAIN_BATTLE4 = 0x31c,
+/*20040308 to latest
+게임가드 파일이 없거나 변조되었습니다. 게임가드 셋업 파일을 설치해보시기 바랍니다.
+"Either there's no Game Guard installed on the program or Game Guard is cracked. Please, try to reinstall Game Guard from its setup file."
+*/
+ MSG_NPGAMEMON_ERROR_AUTH_GAMEGUARD = 0x31d,
+/*20040308 to latest
+윈도우의 일부 시스템 파일이 손상되었습니다. 인터넷 익스플로러(IE)를 다시 설치해보시기 바랍니다.
+Some of Windows system files have been damaged. Please re-install your Internet Explorer.
+*/
+ MSG_NPGAMEMON_ERROR_CRYPTOAPI = 0x31e,
+/*20040308 to latest
+게임가드 실행에 실패했습니다. 게임가드 셋업 파일을 다시 설치해보시기 바랍니다.
+"Failed to run Game Guard. Please, try to reinstall Game Guard from its setup file."
+*/
+ MSG_NPGAMEMON_ERROR_EXECUTE = 0x31f,
+/*20040308 to latest
+불법 프로그램이 발견되었습니다. 불필요한 프로그램을 종료한 후 다시 실행해보시기 바랍니다.
+"At least one hazardous program has been detected. Please, terminate all the unnecessary programs before executing Game Guard."
+*/
+ MSG_NPGAMEMON_ERROR_ILLEGAL_PRG = 0x320,
+/*20040308 to latest
+게임가드 업데이트를 취소하셨습니다. 접속이 계속 되지 않을 경우 인터넷 및 방화벽 상태를 점검해보시기 바랍니다.
+"Game Guard update is canceled. If the disconnection continues, please, check your internet or firewall settings."
+*/
+ MSG_NPGMUP_ERROR_ABORT = 0x321,
+/*20040308 to latest
+게임가드 업데이트 서버 접속에 실패하였습니다. 잠시 후 재시도 해보거나, 인터넷 및 방화벽 상태를 점검해 보시기 바랍니다.
+"Failed to connect to Game Guard update server. Try to connect again later, or try to check the internet or firewall settings."
+*/
+ MSG_NPGMUP_ERROR_CONNECT = 0x322,
+/*20040308 to latest
+게임가드 업데이트를 완료하지 못 했습니다. 바이러스 검사를 해보시거나, PC 관리 프로그램을 사용하시면 설정을 조정한 후 게임을 실행해 보시기 바랍니다.
+"Can't complete Game Guard update process. Please, try to execute a vaccine program to remove viruses. Or, please try to modify the settings of your PC managing tool if you are using any."
+*/
+ MSG_NPGMUP_ERROR_AUTH = 0x323,
+#endif
+#if PACKETVER >= 20040311
+/*20040311 to latest
+/notrade : 거래신청을 자동으로 거절합니다 On Off
+/notrade: Declines trade offers automatically. On | Off
+*/
+ MSG_EXPLAIN_NOTRADE = 0x324,
+/*20040311 to 20040804
+거래신청을 자동으로 거절합니다 [/nt ON]
+20040809 to latest
+거래신청과 친구등록요청을 자동으로 거절합니다 [/nt ON]
+Auto decline trade offers has been Enabled. [/nt ON]
+*/
+ MSG_NOTRADE_ON = 0x325,
+/*20040311 to 20040804
+거래신청을 정상적으로 받습니다 [/nt OFF]
+20040809 to latest
+거래신청과 친구등록요청을 정상적으로 받습니다 [/nt OFF]
+Auto decline trade offers has been Disabled. [/nt OFF]
+*/
+ MSG_NOTRADE_OFF = 0x326,
+#endif
+#if PACKETVER >= 20040329
+/*20040329 to latest
+같은 아이템은 한번에 30000개 이상은 살수 없습니다.
+You cannot buy more than 30,000ea items at once.
+*/
+ MSG_LIMIT_BUY_ITEM = 0x327,
+/*20040329 to latest
+재료가 충분하지 않습니다.
+You do not have enough ingredients.
+*/
+ MSG_NOT_ENOUGH_SOURCE = 0x328,
+#endif
+#if PACKETVER >= 20040419
+/*20040419 to latest
+%s에 계정정보가 남아있습니다.
+Login information remains at %s.
+*/
+ MSG_ALREADY_CONNECT = 0x329,
+#endif
+#if PACKETVER >= 20040423
+/*20040423 to 20040429
+해킹조사에 관련되어 %s 까지 로그인을 금지하고 있습니다.
+20040503 to 20040906
+해킹 관련 조사를 위해 로그인이 금지되 었습니다. 자세한 문의는 해킹관련 메일로 하여주시기 바랍니다.
+20040913 to latest
+계정도용 조사를 위해 로그인이 금지되었습니다. 자세한 문의는 계정도용 관련 문의 메일로 해주시기 바랍니다.
+Account has been locked for a hacking investigation. Please contact the GM Team for more information.
+*/
+ MSG_HACKING_INVESTIGATION = 0x32a,
+/*20040423 to 20040429
+버그조사에 관련되어 %s 까지 로그인을 금지하고 있습니다.
+20040503 to latest
+귀하는 버그관련 조사중이므로 일시적으로 접속을 금합니다
+This account has been temporarily prohibited from login due to a bug-related investigation.
+*/
+ MSG_BUG_INVESTIGATION = 0x32b,
+/*20040423 to latest
+수리가능한 아이템
+Repairable items
+*/
+ MSG_REPAIRITEMLIST = 0x32c,
+#endif
+#if PACKETVER >= 20040426
+/*20040426 to latest
+아이템 수리 성공
+Item has been successfully repaired.
+*/
+ MSG_ITEM_REPAIR_SUCCEESS = 0x32d,
+/*20040426 to latest
+아이템 수리 실패 (재료 또는 상대와의 거리등을 확인해주십시요)
+You have failed to repair this item. Please check the distance between you and opponent.
+*/
+ MSG_ITEM_REPAIR_FAIL = 0x32e,
+#endif
+#if PACKETVER >= 20040531
+/*20040531 to latest
+시스템 상황을 지속적으로 체크 합니다.[운영자모드] [/sc ON]
+System process enabled [GM mode] [/sc ON]
+*/
+ MSG_SYSTEM_CHECK_ON = 0x32f,
+/*20040531 to latest
+시스템 상황을 지속적으로 체크 하지 않습니다.[운영자모드] [/sc OFF]
+System process disabled [GM mode] [/sc OFF]
+*/
+ MSG_SYSTEM_CHECK_OFF = 0x330,
+/*20040531 to latest
+/systemcheck : 시스템 상황을 지속적으로 체크 합니다.[운영자모드]
+/systemcheck: Check the system process [GM mode] On | Off
+*/
+ MSG_EXPLAIN_SYSTEM_CHECK = 0x331,
+#endif
+#if PACKETVER >= 20040614
+/*20040614 to latest
+(%s)님이 친구 신청을 하셨습니다. 친구가 되시겠습니까?
+(%s) wishes to be friends with you. Would you like to accept?
+*/
+ MSG_SUGGEST_JOIN_FRIEND = 0x332,
+#endif
+#if PACKETVER >= 20040621
+/*20040621 to latest
+더 이상 친구 등록을 하실수 없습니다.
+Your Friend List is full.
+*/
+ MSG_FRIEND_ADD_ME_OVERSIZE = 0x333,
+/*20040621 to latest
+(%s)님이 더 이상 친구 등록을 하실수 없습니다.
+(%s)'s Friend List is full.
+*/
+ MSG_FRIEND_ADD_OTHER_OVERSIZE = 0x334,
+/*20040621 to latest
+(%s)님과 친구가 되셨습니다.
+You have become friends with (%s).
+*/
+ MSG_FRIEND_ADD_SUCCEED = 0x335,
+/*20040621 to latest
+(%s)님이 친구 되기를 원하지 않습니다.
+(%s) does not want to be friends with you.
+*/
+ MSG_FRIEND_ADD_FALSE = 0x336,
+/*20040621 to latest
+이 캐릭터는 %s 까지 블럭되어있습니다.
+This character will be blocked to use until %s.
+*/
+ MSG_BLOCKED = 0x337,
+/*20040621 to 20040621
+천만제니이상을 입력하신 아이템은 천만제니로 판매됩니다.
+20040628 to latest
+천만제니 이상 입력하셔도 가격은 천만제니로 판매됩니다.
+Price will be fixed at 10,000,000 zeny, even if you enter higher price.
+*/
+ MSG_OVERPRICE = 0x338,
+#endif
+#if PACKETVER >= 20040628
+/*20040628 to latest
+(적음)
+(Very low)
+*/
+ MSG_LITTLEUSER = 0x339,
+/*20040628 to latest
+(약간 적음)
+(Low)
+*/
+ MSG_ALITTLEUSER = 0x33a,
+/*20040628 to latest
+(보통)
+(Normal)
+*/
+ MSG_NORMLEUSER = 0x33b,
+/*20040628 to latest
+(많음)
+(High)
+*/
+ MSG_MANYUSER = 0x33c,
+/*20040628 to latest
+(매우 많음)
+(Very high)
+*/
+ MSG_VERYMANYUSER = 0x33d,
+/*20040628 to 20040713
+비매너에 의해 GM으로부터 채팅금지가 %d 분간 적용됩니다.
+20040726 to latest
+비매너에 의해 운영자로부터 채팅금지가 적용됩니다.
+You have been blocked from using chat and skills for %d minutes by the GM Team.
+*/
+ MSG_GM_BAD_MANNER_START = 0x33e,
+/*20040628 to latest
+GM에 의한 채팅금지가 %d 분 남아 있습니다.
+%d minutes remain until release from the GM penalty.
+*/
+ MSG_GM_BAD_MANNER_REMAIN = 0x33f,
+/*20040628 to latest
+GM에 의한 채팅금지가 해지 되었습니다.
+You have been released from the GM penalty.
+*/
+ MSG_GM_BAD_MANNER_END = 0x340,
+/*20040628 to 20040713
+도배 방지 시스템으로 인한 채팅금지가 %d 분간 적용됩니다.
+20040726 to latest
+도배 방지 시스템으로 인한 자동 채팅금지가 적용됩니다.
+You have been blocked from using chat and skills for %d as an automatic penalty.
+*/
+ MSG_AUTO_BAD_MANNER_START = 0x341,
+/*20040628 to latest
+도배 방지 시스템으로 인한 채팅금지가 %d 분 남아 있습니다.
+%d minutes remain until release from auto penalty.
+*/
+ MSG_AUTO_BAD_MANNER_REMAIN = 0x342,
+/*20040628 to latest
+도배 방지 시스템으로 인한 채팅금지가 해지되었습니다. 게임진행 시에는 도배에 대해서 주의하여 주시기 바랍니다.
+You have been released from the auto penalty. Please refrain from spamming in-game.
+*/
+ MSG_AUTO_BAD_MANNER_END = 0x343,
+#endif
+#if PACKETVER >= 20040705
+/*20040705 to latest
+%s님과 %s님이 이혼하셨습니다.
+%s and %s have divorced from each other.
+*/
+ MSG_DIVORCE = 0x344,
+/*20040705 to 20041108
+星鬪士 %s의 태양의 장소로 %s 가 지정됐습니다.
+20041115 to latest
+拳聖 %s의 태양의 장소로 %s 가 지정됐습니다.
+%s has been designated as Gravity %s's Solar Space.
+20041220 to 20050817
+태양과 달과 별의 전사 %s의 태양의 장소로 %s 가 지정됐습니다.
+*/
+ MSG_STARPLACE1 = 0x345,
+/*20040705 to 20041108
+星鬪士 %s의 달의 장소로 %s 가 지정됐습니다.
+20041115 to latest
+拳聖 %s의 달의 장소로 %s 가 지정됐습니다.
+%s has been designated as Gravity %s's Luna Space.
+20041220 to 20050817
+태양과 달과 별의 전사 %s의 달의 장소로 %s 가 지정됐습니다.
+*/
+ MSG_STARPLACE2 = 0x346,
+/*20040705 to 20041108
+星鬪士 %s의 별의 장소로 %s 가 지정됐습니다.
+20041115 to latest
+拳聖 %s의 별의 장소로 %s 가 지정됐습니다.
+%s has been designated as Gravity %s's Stellar Space.
+20041220 to 20050817
+태양과 달과 별의 전사 %s의 별의 장소로 %s 가 지정됐습니다.
+*/
+ MSG_STARPLACE3 = 0x347,
+/*20040705 to 20040726
+星鬪士 %s의 태양의 장소 : %s
+20040804 to 20041108
+星鬪士 %s의 태양의 장소는 %s 입니다
+20041115 to latest
+拳聖 %s의 태양의 장소는 %s 입니다
+Gravity %s's Solar Space: %s
+20041220 to 20050817
+태양과 달과 별의 전사 %s의 태양의 장소는 %s 입니다
+*/
+ MSG_STARPLACE4 = 0x348,
+/*20040705 to 20040726
+星鬪士 %s의 달의 장소 : %s
+20040804 to 20041108
+星鬪士 %s의 달의 장소는 %s 입니다
+20041115 to latest
+拳聖 %s의 달의 장소는 %s 입니다
+Gravity %s's Luna Space: %s
+20041220 to 20050817
+태양과 달과 별의 전사 %s의 달의 장소는 %s 입니다
+*/
+ MSG_STARPLACE5 = 0x349,
+/*20040705 to 20040726
+星鬪士 %s의 별의 장소 : %s
+20040804 to 20041108
+星鬪士 %s의 별의 장소는 %s 입니다
+20041115 to latest
+拳聖 %s의 별의 장소는 %s 입니다
+Gravity %s's Stellar Space: %s
+20041220 to 20050817
+태양과 달과 별의 전사 %s의 별의 장소는 %s 입니다
+*/
+ MSG_STARPLACE6 = 0x34a,
+#endif
+#if PACKETVER >= 20040707
+/*20040707 to 20041108
+星鬪士 %s의 태양의 몬스터로 %s 가 지정됐습니다.
+20041115 to latest
+拳聖 %s의 태양의 몬스터로 %s 가 지정됐습니다.
+%s has been designated as Gravity %s's Solar Monster.
+20041220 to 20050817
+태양과 달과 별의 전사 %s의 태양의 몬스터로 %s 가 지정됐습니다.
+*/
+ MSG_STARMONSTER1 = 0x34b,
+/*20040707 to 20041108
+星鬪士 %s의 달의 몬스터로 %s 가 지정됐습니다.
+20041115 to latest
+拳聖 %s의 달의 몬스터로 %s 가 지정됐습니다.
+%s has been designated as Gravity %s's Luna Monster.
+20041220 to 20050817
+태양과 달과 별의 전사 %s의 달의 몬스터로 %s 가 지정됐습니다.
+*/
+ MSG_STARMONSTER2 = 0x34c,
+/*20040707 to 20041108
+星鬪士 %s의 별의 몬스터로 %s 가 지정됐습니다.
+20041115 to latest
+拳聖 %s의 별의 몬스터로 %s 가 지정됐습니다.
+%s has been designated as Gravity %s's Stellar Monster.
+20041220 to 20050817
+태양과 달과 별의 전사 %s의 별의 몬스터로 %s 가 지정됐습니다.
+*/
+ MSG_STARMONSTER3 = 0x34d,
+/*20040707 to 20040726
+星鬪士 %s의 태양의 몬스터 : %s
+20040804 to 20041108
+星鬪士 %s의 태양의 몬스터는 %s 입니다
+20041115 to latest
+拳聖 %s의 태양의 몬스터는 %s 입니다
+Gravity %s's Solar Monster: %s
+20041220 to 20050817
+태양과 달과 별의 전사 %s의 태양의 몬스터는 %s 입니다
+*/
+ MSG_STARMONSTER4 = 0x34e,
+/*20040707 to 20040726
+星鬪士 %s의 달의 몬스터 : %s
+20040804 to 20041108
+星鬪士 %s의 달의 몬스터는 %s 입니다
+20041115 to latest
+拳聖 %s의 달의 몬스터는 %s 입니다
+Gravity %s's Luna Monster: %s
+20041220 to 20050817
+태양과 달과 별의 전사 %s의 달의 몬스터는 %s 입니다
+*/
+ MSG_STARMONSTER5 = 0x34f,
+/*20040707 to 20040726
+星鬪士 %s의 별의 몬스터 : %s
+20040804 to 20041108
+星鬪士 %s의 별의 몬스터는 %s 입니다
+20041115 to latest
+拳聖 %s의 별의 몬스터는 %s 입니다
+Gravity %s's Stellar Monster: %s
+20041220 to 20050817
+태양과 달과 별의 전사 %s의 별의 몬스터는 %s 입니다
+*/
+ MSG_STARMONSTER6 = 0x350,
+/*20040707 to latest
+/window : 창 위치 이동시 다른 창과 달라붙는 속성이 들어갑니다 On Off
+/window: Display windows will snap/dock together. On | Off
+*/
+ MSG_EXPLAIN_WINDOW = 0x351,
+/*20040707 to latest
+창 위치 이동시 다른 창과 잘 붙습니다 [/wi ON]
+Display window docking enabled. [/wi ON]
+*/
+ MSG_WINDOW_ON = 0x352,
+/*20040707 to latest
+창 위치 이동시 다른 창과 붙으려는 속성을 가지지 않습니다 [/wi OFF]
+Display window docking disabled. [/wi OFF]
+*/
+ MSG_WINDOW_OFF = 0x353,
+#endif
+#if PACKETVER >= 20040713
+/*20040713 to latest
+/pvpinfo : 자신의 PVP 승패와 PVP 포인트를 알 수 있습니다.
+/pvpinfo: shows your PVP result and PVP points.
+*/
+ MSG_EXPLAIN_PVP_INFO = 0x354,
+/*20040713 to latest
+현재 %d승, %d패, PVP포인트는 %d입니다.
+You have won %d times and have lost %d times in PVP. Current points %d.
+*/
+ MSG_PVP_INFO = 0x355,
+#endif
+#if PACKETVER >= 20040726
+/*20040726 to latest
+매너 포인트를 성공적으로 보냈습니다.
+A manner point has been successfully aligned.
+*/
+ MSG_SEND_MANNER_POINT = 0x356,
+#endif
+#if PACKETVER >= 20040809
+/*20040809 to latest
+현재 이곳은 PK 가능 지역입니다. 불의의 공격에 유의 하시기 바랍니다.
+You are in a PK area. Please beware of sudden attack.
+*/
+ MSG_PKZONE = 0x357,
+#endif
+#if PACKETVER >= 20040817
+/*20040817 to latest
+게임가드 업데이트가 바이러스나 스파이웨어와의 충돌로 실패했습니다. 백신 프로그램/스파이웨어 제거 프로그램을 사용한 후 접속해 주십시기 바랍니다
+Game Guard update has been failed when either Virus or Spyware conflicted with. Please, Uninstall Spyware and Virus protection program before you log in.
+*/
+ MSG_NPGAMEMON_ERROR_100ERROR = 0x358,
+#endif
+#if PACKETVER >= 20040823
+/*20040823 to latest
+윈도우 호환성 문제로 프로그램을 종료합니다. 게임을 다시 실행해 주시기 바랍니다
+Program has encountered an error related to Windows compatibility. Please start the game again.
+*/
+ MSG_NPGAMEMON_XP_COMPATIBILITY = 0x359,
+#endif
+#if PACKETVER >= 20040906
+/*20040906 to latest
+채팅, 스킬, 아이템을 사용할수없게 되었습니다.
+You have been blocked from chatting, using skills and items.
+*/
+ MSG_PK_HONOR = 0x35a,
+/*20040906 to latest
+캐릭터 삭제 작업중이므로 접속이 일시적으로 제한됩니다.
+Login is temporarily unavailable while this character is being deleted.
+*/
+ MSG_DELETING_CHAR = 0x35b,
+/*20040906 to latest
+결혼 상대자의 캐릭터 삭제 작업중이므로 접속이 일시적으로 제한됩니다.
+Login is temporarily unavailable while your spouse character is being deleted.
+*/
+ MSG_DELETING_SPOUSE_CHAR = 0x35c,
+#endif
+#if PACKETVER >= 20040913
+/*20040913 to latest
+Novice
+*/
+ MSG_NOVICE = 0x35d,
+/*20040913 to latest
+Swordman
+*/
+ MSG_SWORDMAN = 0x35e,
+/*20040913 to latest
+Magician
+Mage
+*/
+ MSG_MAGICIAN = 0x35f,
+/*20040913 to latest
+Archer
+*/
+ MSG_ARCHER = 0x360,
+/*20040913 to latest
+Acolyte
+*/
+ MSG_ACOLYTE = 0x361,
+/*20040913 to latest
+Merchant
+*/
+ MSG_MERCHANT = 0x362,
+/*20040913 to latest
+Thief
+*/
+ MSG_THIEF = 0x363,
+/*20040913 to latest
+Knight
+*/
+ MSG_KNIGHT = 0x364,
+/*20040913 to latest
+Prieset
+Priest
+*/
+ MSG_PRIEST = 0x365,
+/*20040913 to latest
+Wizerd
+Wizard
+*/
+ MSG_WIZARD = 0x366,
+/*20040913 to latest
+Blacksmith
+*/
+ MSG_BLACKSMITH = 0x367,
+/*20040913 to latest
+Hunter
+*/
+ MSG_HUNTER = 0x368,
+/*20040913 to latest
+Assassin
+*/
+ MSG_ASSASSIN = 0x369,
+/*20040913 to latest
+Novice
+*/
+ MSG_NOVICE_W = 0x36a,
+/*20040913 to latest
+Swordman
+*/
+ MSG_SWORDMAN_W = 0x36b,
+/*20040913 to latest
+Magician
+Mage
+*/
+ MSG_MAGICIAN_W = 0x36c,
+/*20040913 to latest
+Archer
+*/
+ MSG_ARCHER_W = 0x36d,
+/*20040913 to latest
+Acolyte
+*/
+ MSG_ACOLYTE_W = 0x36e,
+/*20040913 to latest
+Merchant
+*/
+ MSG_MERCHANT_W = 0x36f,
+/*20040913 to latest
+Thief
+*/
+ MSG_THIEF_W = 0x370,
+/*20040913 to latest
+Knight
+*/
+ MSG_KNIGHT_W = 0x371,
+/*20040913 to latest
+Prieset
+Priest
+*/
+ MSG_PRIEST_W = 0x372,
+/*20040913 to latest
+Wizerd
+Wizard
+*/
+ MSG_WIZARD_W = 0x373,
+/*20040913 to latest
+Blacksmith
+*/
+ MSG_BLACKSMITH_W = 0x374,
+/*20040913 to latest
+Hunter
+*/
+ MSG_HUNTER_W = 0x375,
+/*20040913 to latest
+Assassin
+*/
+ MSG_ASSASSIN_W = 0x376,
+#endif
+#if PACKETVER >= 20041018
+/*20041018 to latest
+(%s)님을 아이로 입양신청
+Send an adoption request to %s
+*/
+ MSG_REQ_JOIN_BABY = 0x377,
+/*20041018 to 20041025
+아이가 되시면 전승을 하실수 없게 됩니다. 그래도 괜찮습니까?
+20041101 to latest
+아이가 되면 전승을 할수없고 스텟은 80이상 올릴수없게되며 HP와 SP가 줄어듭니다. 그래도 괜찮습니까?
+When you become a child, you will be unable to become a Transcendent Class character, all stats will be limited to a maximum of 80, and Max HP/SP will be reduced. Are you sure that you want to be adopted?
+*/
+ MSG_SUGGEST_BABY2 = 0x378,
+#endif
+#if PACKETVER >= 20041101
+/*20041101 to latest
+모든 나쁜 상태이상이 제거 되었습니다.
+All abnormal status effects have been removed.
+*/
+ MSG_GOSPEL1 = 0x379,
+/*20041101 to latest
+1분간 모든 상태이상에 대해 면역이 됩니다.
+You will be immune to abnormal status effects for the next minute.
+*/
+ MSG_GOSPEL2 = 0x37a,
+/*20041101 to latest
+1분간 최대 생명력이 크게 늘어납니다.
+Your Max HP will stay increased for the next minute.
+*/
+ MSG_GOSPEL3 = 0x37b,
+/*20041101 to latest
+1분간 최대 마법력이 크게 늘어납니다.
+Your Max SP will stay increased for the next minute.
+*/
+ MSG_GOSPEL4 = 0x37c,
+/*20041101 to latest
+1분간 모든 능력이 크게 상승합니다.
+All of your Stats will stay increased for the next minute.
+*/
+ MSG_GOSPEL5 = 0x37d,
+/*20041101 to latest
+1분간 사용하는 무기에 성스러운 속성이 부여됩니다.
+Your weapon will remain blessed with Holy power for the next minute.
+*/
+ MSG_GOSPEL6 = 0x37e,
+/*20041101 to latest
+1분간 사용하는 갑옷에 성스러운 속성이 부여됩니다.
+Your armor will remain blessed with Holy power for the next minute.
+*/
+ MSG_GOSPEL7 = 0x37f,
+/*20041101 to latest
+10초간 방어력이 크게 상승합니다.
+Your Defense will stay increased for the next 10 seconds.
+*/
+ MSG_GOSPEL8 = 0x380,
+/*20041101 to latest
+1분간 공격력이 크게 증가합니다.
+Your Attack strength will be increased for the next minute.
+*/
+ MSG_GOSPEL9 = 0x381,
+/*20041101 to latest
+1분간 명중률과 회피율이 크게 상승합니다.
+Your Accuracy and Flee Rate will be increased for the next minute.
+*/
+ MSG_GOSPEL10 = 0x382,
+#endif
+#if PACKETVER >= 20041108
+/*20041108 to latest
+아이를 한번 입양했던 부부는 추가 입양이 불가능합니다.
+You cannot adopt more than 1 child.
+*/
+ MSG_BABY1 = 0x383,
+/*20041108 to latest
+부부가 둘다 레벨70이 넘어야 아이를 입양할수있습니다.
+You must be at least character level 70 in order to adopt someone.
+*/
+ MSG_BABY2 = 0x384,
+/*20041108 to 20041108
+블랙스미스 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+20041115 to latest
+[POINT] 블랙스미스 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[Point] You have been rewarded with %d Blacksmith rank points. Your point total is %d.
+*/
+ MSG_BLACKSMITH_POINT = 0x385,
+/*20041108 to 20041108
+알케미스트 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+20041115 to latest
+[POINT] 알케미스트 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[Point] You have been rewarded with %d Alchemist rank points. Your point total is %d.
+*/
+ MSG_ALCHEMIST_POINT = 0x386,
+#endif
+#if PACKETVER >= 20041115
+/*20041115 to 20041130
+천사님 제 목소리 들리세요? ^^;
+Dear angel, can you hear my voice?
+20041206 to latest
+X
+Help me out~ Please~ T_T
+*/
+ MSG_SUPERNOVICE11 = 0x387,
+/*20041115 to 20041130
+슈퍼노비스
+Super Novice
+20041206 to latest
+X
+Help me out~ Please~ T_T
+*/
+ MSG_SUPERNOVICE12 = 0x388,
+/*20041115 to 20041130
+예요~
+Super Novice~
+20041206 to latest
+X
+Help me out~ Please~ T_T
+*/
+ MSG_SUPERNOVICE13 = 0x389,
+/*20041115 to 20041130
+저 좀 도와주세요~ ㅠ_ㅠ
+Help me out~ Please~ T_T
+20041206 to latest
+X
+Help me out~ Please~ T_T
+*/
+ MSG_SUPERNOVICE14 = 0x38a,
+/*20041115 to latest
+/notalkmsg2 : 채팅내용을 채팅창에 표시하지 않습니다 (길드말 포함) On Off
+/notalkmsg2: Hides chat messages(including guild chat). On Off
+*/
+ MSG_EXPLAIN_NOTALKMSG2 = 0x38b,
+/*20041115 to latest
+채팅내용을 채팅창에 표시합니다 [/nm2 ON]
+Show chat messages. [/nm2 ON]
+*/
+ MSG_NOTALKMSG2_ON = 0x38c,
+/*20041115 to latest
+채팅내용을 채팅창에 표시하지않습니다 (길드말 포함) [/nm2 OFF]
+Hide chat messages(including guild chat) [/nm2 OFF]
+*/
+ MSG_NOTALKMSG2_OFF = 0x38d,
+#endif
+#if PACKETVER >= 20041129
+/*20041129 to latest
+제련가능한 아이템
+Upgradable Weapons
+*/
+ MSG_REFINEITEMLIST = 0x38e,
+/*20041129 to latest
+제련한 무기 : %s
+Weapons upgraded: %s
+*/
+ MSG_ITEM_REFINE_SUCCEESS = 0x38f,
+/*20041129 to latest
+제련한 무기 : %s
+Weapons upgraded: %s
+*/
+ MSG_ITEM_REFINE_FAIL = 0x390,
+/*20041129 to latest
+무기제련스킬의 레벨이 부족해서 %s 제련을 할수없습니다.
+You cannot upgrade %s until you level up your Upgrade Weapon skill.
+*/
+ MSG_ITEM_REFINE_FAIL_LEVEL = 0x391,
+/*20041129 to latest
+제련에 필요한 아이템 (%s) 이 없으므로 제련할수없습니다.
+You lack a necessary item %s to upgrade this weapon.
+*/
+ MSG_ITEM_REFINE_FAIL_MATERIAL = 0x392,
+#endif
+#if PACKETVER >= 20041206
+/*20041206 to latest
+완벽하게 코팅되어있어서 풀스트립이 통하지 않습니다.
+Full Divestment cannot pierce the target. The target is fully shielded.
+*/
+ MSG_FULLSTRIP = 0x393,
+#endif
+#if PACKETVER >= 20041213
+/*20041213 to latest
+결혼한 캐릭터는 입양시킬수 없습니다.
+You cannot adopt a married person.
+*/
+ MSG_BABY3 = 0x394,
+#endif
+#if PACKETVER >= 20041220
+/*20041220 to latest
+친구로 등록된 이름과 비슷하지만 등록된 이름이 아닙니다. 아는사람인지 확인하십시요.
+This name is not registered in your Friend List. Please check the name again.
+*/
+ MSG_ID_WARNING = 0x395,
+/*20041220 to latest
+/hi 또는 /hi 문장 : 친구로 등록된 캐릭터들에게 인사를 합니다.
+/hi or /hi message: Send greetings to people who are online and registered on your Friend List.
+*/
+ MSG_EXPLAIN_HI = 0x396,
+#endif
+#if PACKETVER >= 20041227
+/*20041227 to latest
+길드원의 이름과 비슷하지만 길드원이 아닙니다. 길드원인지 확인하십시요.
+This character is not your guildsman. Please check the name again.
+*/
+ MSG_ID_WARNING_GUILD = 0x397,
+#endif
+#if PACKETVER >= 20050117
+/*20050117 to latest
+9999만제니 이상 입력하셔도 가격은 9999만제니로 판매됩니다.
+Please be aware that the maximum selling price is fixed as 2 Billion. You cannot sell an item higher than that.
+*/
+ MSG_OVERPRICE9999 = 0x398,
+#endif
+#if PACKETVER >= 20050131
+/*20050131 to latest
+친구의 귓속말은 [ Friend ] , 길드원은 [ Member ] 로 표시됩니다.
+Whispers from friends are displayed as [ Friend ], and ones from guildsmen are displayed as [ Member ].
+*/
+ MSG_EXPLAIN_SACHING1 = 0x399,
+/*20050131 to latest
+( From 캐릭터이름 : ) 이라고 표시 되는 귓속말은 친구나 길드원이 아닙니다.
+( From character name: ) is from an anonymous character who is neither your friend nor guildsman.
+*/
+ MSG_EXPLAIN_SACHING2 = 0x39a,
+#endif
+#if PACKETVER >= 20050214
+/*20050214 to 20050310
+블랙스미스의 상위 10위권 랭킹을 보여줍니다.
+20050314 to latest
+/blacksmith : 블랙스미스의 상위 10위권 랭킹을 보여줍니다.
+/blacksmith: Shows top 10 Blacksmiths in the server.
+*/
+ MSG_EXPLAIN_BLACKSMITH = 0x39b,
+/*20050214 to 20050310
+알케미스트의 상위 10위권 랭킹을 보여줍니다.
+20050314 to latest
+/alchemist : 알케미스트의 상위 10위권 랭킹을 보여줍니다.
+/alchemist: Shows top 10 Alchemists in the server.
+*/
+ MSG_EXPLAIN_ALCHEMIST = 0x39c,
+/*20050214 to latest
+ALT+Y : 여러가지 명령어를 쉽게 쓸수있는 윈도우가 열립니다.
+ALT+Y: Opens a window which allows you to use various commands with ease.
+*/
+ MSG_EXPLAIN_ALTY = 0x39d,
+#endif
+#if PACKETVER >= 20050328
+/*20050328 to latest
+[POINT] 태권미션 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[POINT] You have been rewarded with %d Tae-Kwon Mission rank points. Your point total is %d.
+*/
+ MSG_TAEKWON_POINT = 0x39e,
+#endif
+#if PACKETVER >= 20050404
+/*20050404 to latest
+[태권미션] Target Monster : %s (%d%%)
+[Taekwon Mission] Target Monster: %s (%d%%)
+*/
+ MSG_TAEKWON_MISSION = 0x39f,
+#endif
+#if PACKETVER >= 20050502
+/*20050502 to latest
+게임가드 초기화 에러 : %lu
+Error - Failed to initialize GameGuard: %lu
+*/
+ MSG_INIT_ERROR = 0x3a0,
+/*20050502 to latest
+스피드핵이 감지되었습니다.
+Speed Hack has been detected.
+*/
+ MSG_SPEEDHACK_DETECT = 0x3a1,
+/*20050502 to latest
+불법 프로그램 (%s) 가 발견되었습니다
+The illegal program, (%s) has been detected.
+*/
+ MSG_GAMEHACK_DETECT = 0x3a2,
+/*20050502 to latest
+게임이나 게임가드가 변조되었습니다.
+The Game or Gameguard has been cracked.
+*/
+ MSG_GAMEHACK_DOUBT = 0x3a3,
+/*20050502 to latest
+게임가드가 실행 중 입니다. 잠시 후에 다시 실행해보시기 바랍니다.
+GameGuard is currently running. Please wait for sometime and restart the game.
+*/
+ MSG_ERROR_EXIST = 0x3a4,
+/*20050502 to latest
+게임이 중복 실행되었거나 게임가드가 이미 실행 중 입니다. 게임 종료 후 다시 실행해보시기 바랍니다.
+The Game or GameGuard is already running. Please close the game and restart the game.
+*/
+ MSG_GAME_EXIST = 0x3a5,
+/*20050502 to latest
+게임가드 초기화 에러입니다. 재부팅 후 다시 실행해보거나 충돌할 수 있는 다른 프로그램들을 종료한 후 실행해 보시기 바랍니다.
+Failed to intialize GameGuard. Please try again after rebooting the system or closing other programs.
+*/
+ MSG_ERROR_INIT = 0x3a6,
+/*20050502 to latest
+바이러스 및 해킹툴 검사 모듈 로딩에 실패 했습니다. 메모리 부족이거나 바이러스에 의한 감염일 수 있습니다.
+Failed to load the scan module of virus and hacking tool. It's caused by lack of memory or PC virus infection.
+*/
+ MSG_ERROR_NPSCAN = 0x3a7,
+#endif
+#if PACKETVER >= 20050509
+/*20050509 to latest
+호문클루스 정보
+Homunculus Info
+*/
+ MSG_HOMUN_INFO = 0x3a8,
+#endif
+#if PACKETVER >= 20050511
+/*20050511 to latest
+호문클루스 스킬목록
+Homunculus Skill List
+*/
+ MSG_HOMUN_SKILLLIST = 0x3a9,
+#endif
+#if PACKETVER >= 20050523
+/*20050523 to latest
+호문클루스의 이름은 영문 23, 한글 11자 이내로 정해 주세요.
+Please give your Homunculus a name no longer than 23 letters.
+*/
+ MSG_HOMUN_NAME_IN23 = 0x3aa,
+/*20050523 to latest
+이름은 단 한번만 바꿀수 있습니다. 호문클루스의 이름을 ^0000ff^0000ff %s^000000^000000 로 수정합니다. 계속 하시겠습니까?
+You can name a Homunculus only once. You have entered the name, ^0000ff%s^000000. Would you like to continue?
+*/
+ MSG_HOMUN_NAME_CHANGE_ONLYONCE = 0x3ab,
+/*20050523 to latest
+지금은 부재중~
+(Away)
+*/
+ MSG_AUTO_MSG = 0x3ac,
+/*20050523 to latest
+[자동응답]
+[Automated Message]
+*/
+ MSG_AUTO_MSG2 = 0x3ad,
+/*20050523 to latest
+부재시 타인의 귓말에 자동응답합니다.
+Send an automated message while you are away.
+*/
+ MSG_AUTO_MSG_ON = 0x3ae,
+/*20050523 to latest
+부재시 타인의 귓말에 자동응답하지 않습니다.
+Cancel automated away message.
+*/
+ MSG_AUTO_MSG_OFF = 0x3af,
+/*20050523 to latest
+자동 응답 메시지를 입력하세요.
+Please enter Away Message.
+*/
+ MSG_ENTER_AUTO_MSG = 0x3b0,
+#endif
+#if PACKETVER >= 20050530
+/*20050530 to latest
+/번쩍
+/fsh
+*/
+ MSG_EMOTION_SPARK = 0x3b1,
+/*20050530 to latest
+/빙빙
+/spin
+*/
+ MSG_EMOTION_CONFUSE = 0x3b2,
+/*20050530 to latest
+/하아
+/sigh
+*/
+ MSG_EMOTION_OHNO = 0x3b3,
+/*20050530 to latest
+/덤덤
+/dum
+*/
+ MSG_EMOTION_HUM = 0x3b4,
+/*20050530 to latest
+/시끌
+/crwd
+*/
+ MSG_EMOTION_BLABLA = 0x3b5,
+/*20050530 to latest
+/좌절
+/desp
+*/
+ MSG_EMOTION_OTL = 0x3b6,
+/*20050530 to latest
+/주사위
+/dice
+*/
+ MSG_EMOTION_DICE = 0x3b7,
+/*20050530 to latest
+/pk : 학살자의 상위 10위권 랭킹을 보여줍니다.
+/pk: Shows top 10 Slayers in the server.
+*/
+ MSG_EXPLAIN_KILLER_RANK = 0x3b8,
+/*20050530 to latest
+[POINT] 학살자 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[POINT] You have been rewarded with %d Slayer rank points. Your point total is %d.
+*/
+ MSG_KILLER_POINT = 0x3b9,
+#endif
+#if PACKETVER >= 20050608
+/*20050608 to latest
+진화 가능
+Evolution Available
+*/
+ MSG_HOMUN_EVOLVE = 0x3ba,
+/*20050608 to latest
+^ff0000^ff0000호문클루스를 삭제합니다.^000000^000000 삭제하실 경우 지금까지 키운 내역이 모두 삭제됩니다. 계속하시겠습니까?
+You have decided to delete this Homunculus ^ff0000^ff0000. When deleted, the homunculus and its history will be deleted and they cannot be restored in the future. Would you like to continue?
+*/
+ MSG_DELETE_HOMUN = 0x3bb,
+#endif
+#if PACKETVER >= 20050613
+/*20050613 to latest
+호문의 상태를 파일에 저장합니다.
+Save Homunculus status as a file.
+*/
+ MSG_TRACE_AI_ON = 0x3bc,
+/*20050613 to latest
+호문의 상태를 파일에 저장하지 않습니다.
+Do not save Homunculus status as a file.
+*/
+ MSG_TRACE_AI_OFF = 0x3bd,
+/*20050613 to latest
+Crusader
+*/
+ MSG_CRUSADER = 0x3be,
+/*20050613 to latest
+Monk
+*/
+ MSG_MONK = 0x3bf,
+/*20050613 to latest
+Sage
+*/
+ MSG_SAGE = 0x3c0,
+/*20050613 to latest
+Rouge
+Rogue
+*/
+ MSG_ROGUE = 0x3c1,
+/*20050613 to latest
+Alchemist
+*/
+ MSG_ALCHEMIST = 0x3c2,
+/*20050613 to latest
+Bard
+*/
+ MSG_BARD = 0x3c3,
+/*20050613 to latest
+Crusader_W
+Crusader
+*/
+ MSG_CRUSADER_W = 0x3c4,
+/*20050613 to latest
+Monk_W
+Monk
+*/
+ MSG_MONK_W = 0x3c5,
+/*20050613 to latest
+Sage_W
+Sage
+*/
+ MSG_SAGE_W = 0x3c6,
+/*20050613 to latest
+Rouge_W
+Rogue
+*/
+ MSG_ROGUE_W = 0x3c7,
+/*20050613 to latest
+Alchemist_W
+Alchemist
+*/
+ MSG_ALCHEMIST_W = 0x3c8,
+/*20050613 to latest
+Dancer
+*/
+ MSG_DANCER = 0x3c9,
+/*20050613 to latest
+Novice High
+High Novice
+*/
+ MSG_NOVICE_H = 0x3ca,
+/*20050613 to latest
+Swordman High
+High Swordman
+*/
+ MSG_SWORDMAN_H = 0x3cb,
+/*20050613 to latest
+Magician High
+High Mage
+*/
+ MSG_MAGICIAN_H = 0x3cc,
+/*20050613 to latest
+Archer High
+High Archer
+*/
+ MSG_ARCHER_H = 0x3cd,
+/*20050613 to latest
+Acolyte High
+High Acolyte
+*/
+ MSG_ACOLYTE_H = 0x3ce,
+/*20050613 to latest
+Merchant High
+High Merchant
+*/
+ MSG_MERCHANT_H = 0x3cf,
+/*20050613 to latest
+Thief High
+High Thief
+*/
+ MSG_THIEF_H = 0x3d0,
+/*20050613 to latest
+Novice High_W
+High Novice
+*/
+ MSG_NOVICE_H_W = 0x3d1,
+/*20050613 to latest
+Swordman High_W
+High Swordman
+*/
+ MSG_SWORDMAN_H_W = 0x3d2,
+/*20050613 to latest
+Magician High_W
+High Mage
+*/
+ MSG_MAGICIAN_H_W = 0x3d3,
+/*20050613 to latest
+Archer High_W
+High Archer
+*/
+ MSG_ARCHER_H_W = 0x3d4,
+/*20050613 to latest
+Acolyte High_W
+High Acolyte
+*/
+ MSG_ACOLYTE_H_W = 0x3d5,
+/*20050613 to latest
+Merchant High_W
+High Merchant
+*/
+ MSG_MERCHANT_H_W = 0x3d6,
+/*20050613 to latest
+Thief High_W
+High Thief
+*/
+ MSG_THIEF_H_W = 0x3d7,
+/*20050613 to latest
+Lord Knight
+*/
+ MSG_KNIGHT_H = 0x3d8,
+/*20050613 to latest
+High Priest
+*/
+ MSG_PRIEST_H = 0x3d9,
+/*20050613 to latest
+High Wizard
+*/
+ MSG_WIZARD_H = 0x3da,
+/*20050613 to latest
+White Smith
+WhiteSmith
+*/
+ MSG_BLACKSMITH_H = 0x3db,
+/*20050613 to latest
+Sniper
+*/
+ MSG_HUNTER_H = 0x3dc,
+/*20050613 to latest
+Saaassin Cross
+Assassin Cross
+*/
+ MSG_ASSASSIN_H = 0x3dd,
+/*20050613 to latest
+Lord Knight_W
+Lord Knight
+*/
+ MSG_KNIGHT_H_W = 0x3de,
+/*20050613 to latest
+High Priest_W
+High Priest
+*/
+ MSG_PRIEST_H_W = 0x3df,
+/*20050613 to latest
+High Wizard_W
+High Wizard
+*/
+ MSG_WIZARD_H_W = 0x3e0,
+/*20050613 to latest
+White Smith_W
+WhiteSmith
+*/
+ MSG_BLACKSMITH_H_W = 0x3e1,
+/*20050613 to latest
+Sniper_W
+Sniper
+*/
+ MSG_HUNTER_H_W = 0x3e2,
+/*20050613 to latest
+Saaassin Cross_W
+Assassin Cross
+*/
+ MSG_ASSASSIN_H_W = 0x3e3,
+/*20050613 to latest
+Paladin
+*/
+ MSG_CRUSADER_H = 0x3e4,
+/*20050613 to latest
+Champion
+*/
+ MSG_MONK_H = 0x3e5,
+/*20050613 to latest
+Professor
+Scholar
+*/
+ MSG_SAGE_H = 0x3e6,
+/*20050613 to latest
+Stalker
+*/
+ MSG_ROGUE_H = 0x3e7,
+/*20050613 to latest
+Creator
+Biochemist
+*/
+ MSG_ALCHEMIST_H = 0x3e8,
+/*20050613 to latest
+Clown
+Minstrel
+*/
+ MSG_BARD_H = 0x3e9,
+/*20050613 to latest
+Paladin_W
+Paladin
+*/
+ MSG_CRUSADER_H_W = 0x3ea,
+/*20050613 to latest
+Champion_W
+Champion
+*/
+ MSG_MONK_H_W = 0x3eb,
+/*20050613 to latest
+Professor_W
+Professor
+*/
+ MSG_SAGE_H_W = 0x3ec,
+/*20050613 to latest
+Stalker_W
+Stalker
+*/
+ MSG_ROGUE_H_W = 0x3ed,
+/*20050613 to latest
+Creator_W
+Creator
+*/
+ MSG_ALCHEMIST_H_W = 0x3ee,
+/*20050613 to latest
+Gypsy
+*/
+ MSG_DANCER_H = 0x3ef,
+/*20050613 to latest
+비밀번호가 지정되어 있지 않습니다. 새로운 비밀번호를 지정하시겠습니까?
+You have not set a password yet. Would you like to create one now?
+*/
+ MSG_STORE_PASSWORD_REQ = 0x3f0,
+/*20050613 to latest
+비밀번호를 3회 틀려셨습니다. 나중에 다시 시도해 주세요.
+You have incorrectly entered the password 3 times. Please try again later.
+*/
+ MSG_STORE_PASSWORD_PENALTY = 0x3f1,
+/*20050613 to latest
+비밀번호 변경이 실패하였습니다.
+Password creation has failed.
+*/
+ MSG_STORE_PASSWORD_CHANGE_NG = 0x3f2,
+/*20050613 to latest
+비밀번호는 4자리 이상 8자리이하여야만 합니다.
+Password must be 4~8 letters long.
+*/
+ MSG_STORE_PASSWORD_4_8 = 0x3f3,
+/*20050613 to latest
+비밀번호
+Password
+*/
+ MSG_STORE_PASSWORD = 0x3f4,
+/*20050613 to latest
+신규 비밀번호
+New Password
+*/
+ MSG_STORE_NEW_PASSWORD = 0x3f5,
+/*20050613 to latest
+확인 비밀번호
+Confirm Password
+*/
+ MSG_STORE_RENEW_PASSWORD = 0x3f6,
+/*20050613 to latest
+비밀번호 변경이 완료되었습니다.
+Password has been changed.
+*/
+ MSG_STORE_PASSWORD_CHANGE_OK = 0x3f7,
+/*20050613 to latest
+비밀번호가 서로 다릅니다.
+Password does not match.
+*/
+ MSG_STORE_PASSWORD_MISMATCH = 0x3f8,
+/*20050613 to latest
+비밀번호 입력
+Enter Password
+*/
+ MSG_STORE_PASSWORD_INPUT = 0x3f9,
+#endif
+#if PACKETVER >= 20050624
+/*20050624 to 20050624
+호문이 아사 직전입니다!!! 밥좀 주셈~!!
+20050628 to latest
+호문이 아사 직전입니다! 먹이를 주지 않으면 가출하게됩니다.
+Your Homunculus is starving. Please feed it, otherwise it will leave you.
+*/
+ MSG_HOMUN_HUNGRY = 0x3fa,
+/*20050624 to latest
+경험치
+EXP
+*/
+ MSG_HOMUN_EXP = 0x3fb,
+#endif
+#if PACKETVER >= 20050628
+/*20050628 to latest
+[EVENT] 이벤트에 당첨되셨습니다. 게임내에서 아이템을 지급받으십시요.
+*/
+ MSG_EVENT_RESULT = 0x3fc,
+#endif
+#if PACKETVER >= 20050704
+/*20050704 to latest
+싫어함
+Hate
+*/
+ MSG_HATE = 0x3fd,
+/*20050704 to 20050704
+매우 싫어함
+20050711 to latest
+매우싫어함
+Hate with a Passion
+*/
+ MSG_VERYHATE = 0x3fe,
+#endif
+#if PACKETVER >= 20050718
+/*20050718 to latest
+호문클루스가 사용자 인공지능으로 동작합니다.
+Homunculus has been customized.
+*/
+ MSG_HOMUN_USERAI_ON = 0x3ff,
+/*20050718 to latest
+호문클루스가 기본 인공지능으로 동작합니다.
+Homunculus has been activated with the basic AI.
+*/
+ MSG_HOMUN_USERAI_OFF = 0x400,
+#endif
+#if PACKETVER >= 20050808
+/*20050808 to latest
+편지목록
+Mail List
+*/
+ MSG_MAIL_LIST = 0x401,
+/*20050808 to latest
+편지쓰기
+Write Mail
+*/
+ MSG_MAIL_WRITE = 0x402,
+/*20050808 to latest
+편지읽기
+Read Mail
+*/
+ MSG_MAIL_READ = 0x403,
+#endif
+#if PACKETVER >= 20050817
+/*20050817 to latest
+한번 지정하시면 변경이 불가능합니다! 이 맵으로 지정하시겠습니까?
+You cannot change a map's designation once it is designated. Are you sure that you want to designate this map?
+*/
+ MSG_STARPLACE_ACCEPT = 0x404,
+#endif
+#if PACKETVER >= 20050822
+/*20050822 to 20050822
+보내실 아이템이 추가 되었습니다.
+20050829 to 20051017
+아이템창에 아이템이 추가 되었습니다.
+20051024 to latest
+메일 아이템을 수령했습니다.
+Item has been added in the Item Window.
+*/
+ MSG_MAIL_ADD_ITEM_SUCCESS = 0x405,
+/*20050822 to 20050822
+보내실 아이템이 추가 되지 않았습니다.
+20050829 to 20051017
+아이템창에 아이템이 추가 되지 않았습니다.
+20051024 to latest
+메일 아이템을 수령하지 못했습니다.
+You have failed to add the item in the Item Window.
+*/
+ MSG_MAIL_ADD_ITEM_FAILURE = 0x406,
+/*20050822 to latest
+메일 보내기가 성공하였습니다.
+You have successfully mailed a message.
+*/
+ MSG_MAIL_SEND_SUCCESS = 0x407,
+/*20050822 to latest
+메일 보내기가 실패하였습니다. 받는 사람이 존재하지 않습니다.
+You have failed to mail a message. Recipient does not exist.
+*/
+ MSG_MAIL_USER_NOT_FOUND = 0x408,
+#endif
+#if PACKETVER >= 20050829
+/*20050829 to latest
+[태양과 달과 별의 천사] 지정했던 장소들과 몬스터들이 초기화됐습니다!
+[Solar, Lunar and Stellar Angel] Designated places and monsters have been reset.
+*/
+ MSG_STAR_ANGEL = 0x409,
+/*20050829 to latest
+경매 등록이 실패했습니다.
+The minimum starting bid for auctions is 10,000,000 zeny.
+*/
+ MSG_AUCTION_ADD_FALSE = 0x40a,
+/*20050829 to latest
+경매 등록이 성공했습니다.
+You have successfully started a new auction.
+*/
+ MSG_AUCTION_ADD_TRUE = 0x40b,
+/*20050829 to latest
+해당 경매가 취소되었습니다.
+The auction has been canceled.
+*/
+ MSG_AUCTION_ADD_CANCEL = 0x40c,
+/*20050829 to latest
+입찰자가 있는 경매는 취소할 수 없습니다.
+An auction with at least one bidder cannot be canceled.
+*/
+ MSG_AUCTION_ADD_CANCEL_FALSE = 0x40d,
+#endif
+#if PACKETVER >= 20050905
+/*20050905 to latest
+메일 삭제가 성공하였습니다.
+Mail has been successfully deleted.
+*/
+ MSG_MAIL_DELETE_SUCCESS = 0x40e,
+/*20050905 to latest
+메일 삭제가 실패하였습니다.
+You have failed to delete the mail.
+*/
+ MSG_MAIL_DELETE_FAILURE = 0x40f,
+#endif
+#if PACKETVER >= 20050912
+/*20050912 to latest
+던지는 단검이 장착되었습니다.
+You have equipped throwing daggers.
+*/
+ MSG_MSG_KNIFE_EQUIPMENT_SUCCESS = 0x410,
+#endif
+#if PACKETVER >= 20050926
+/*20050926 to latest
+%s 님이 로그인했습니다.
+%s has logged in.
+*/
+ MSG_LOGIN_FRIEND = 0x411,
+/*20050926 to latest
+%s 님이 로그아웃했습니다.
+%s has logged out.
+*/
+ MSG_LOGOUT_FRIEND = 0x412,
+#endif
+#if PACKETVER >= 20051004
+/*20051004 to latest
+/loginout : 길드원과 친구들의 접속관련 메세지를 보여줍니다. On Off
+/loginout: Shows guildsmen and friends online status. On Off
+*/
+ MSG_EXPLAIN_LOGINOUT = 0x413,
+/*20051004 to latest
+친구들의 접속관련 메세지를 대화창에 표시합니다. [/li ON]
+Display online status of friends in Chat Window. [/li ON]
+*/
+ MSG_LOGINOUT_ON = 0x414,
+/*20051004 to latest
+친구들의 접속관련 메세지를 대화창에 표시하지않습니다. [/li OFF]
+Do not display online status of friends in Chat Window. [/li OFF]
+*/
+ MSG_LOGINOUT_OFF = 0x415,
+/*20051004 to latest
+이미 실행중입니다.
+It is already running.
+*/
+ MSG_SGP_CODE_ALREADY_RUNNING = 0x416,
+/*20051004 to latest
+매크로 사용이 감지되었습니다.
+Use of Macro program has been detected.
+*/
+ MSG_SGP_CODE_DETECTED_MACRO = 0x417,
+/*20051004 to latest
+스피드해킹이 감지되었습니다.
+Use of Speed hack has been detected.
+*/
+ MSG_SGP_CODE_DETECTED_SPEEDHACK = 0x418,
+/*20051004 to latest
+API 후킹이 감지되었습니다.
+API Hooking has been detected.
+*/
+ MSG_SGP_CODE_DETECTED_APIHOOK = 0x419,
+/*20051004 to latest
+메시지 후킹이 감지되었습니다.
+Message Hooking has been detected.
+*/
+ MSG_SGP_CODE_DETECTED_MSGHOOK = 0x41a,
+/*20051004 to latest
+모듈이 변조 또는 손상되었거나 버전이 일치하지 않습니다.
+Module has been modified or damaged or its version does not match.
+*/
+ MSG_SGP_CODE_NOT_EQUALENCRYPTEDDATA = 0x41b,
+#endif
+#if PACKETVER >= 20051010
+/*20051010 to latest
+(태국)귀하는 게임방 과금으로 로그인 하셨습니다.
+(Thailand) You have logged in game with PC cafe payment.
+*/
+ MSG_BILLING_PCB = 0x41c,
+#endif
+#if PACKETVER >= 20051017
+/*20051017 to latest
+이전
+Prev
+*/
+ MSG_PREV_PAGE = 0x41d,
+/*20051017 to latest
+다음
+Next
+*/
+ MSG_NEXT_PAGE = 0x41e,
+/*20051017 to latest
+경매
+Auction
+*/
+ MSG_AUCTION = 0x41f,
+/*20051017 to latest
+물품보기
+Product List
+*/
+ MSG_AUCTION_VIEW = 0x420,
+/*20051017 to latest
+등록하기
+Register
+*/
+ MSG_AUCTION_ADD = 0x421,
+/*20051017 to latest
+판매 진행상태
+Sale Status
+*/
+ MSG_AUCTION_SELL = 0x422,
+/*20051017 to latest
+구매 진행상태
+Purchase Status
+*/
+ MSG_AUCTION_BUY = 0x423,
+/*20051017 to latest
+아이템
+Item
+*/
+ MSG_ITEM2 = 0x424,
+/*20051017 to latest
+아이템명
+Name
+*/
+ MSG_ITEM_NAME2 = 0x425,
+/*20051017 to latest
+가격 / 즉시구입가격
+Current Bid / Max Bid
+*/
+ MSG_ITEM_PRICE = 0x426,
+/*20051017 to latest
+판매자
+Seller
+*/
+ MSG_SELLER = 0x427,
+/*20051017 to latest
+구매자
+Buyer
+*/
+ MSG_BUYER = 0x428,
+/*20051017 to latest
+종료시간
+End Time
+*/
+ MSG_FINISH_TIME = 0x429,
+/*20051017 to latest
+%m월 %d일 %H시
+%m %d %H
+*/
+ MSG_TIME_TYPE = 0x42a,
+/*20051017 to latest
+시간설정
+Time (Hr)
+*/
+ MSG_SET_TIME = 0x42b,
+/*20051017 to latest
+수수료
+Fee
+*/
+ MSG_CHARGE = 0x42c,
+/*20051017 to latest
+검색 된 아이템이 없습니다.
+*/
+ MSG_NOTHING_SEARCH_ITEM = 0x42d,
+/*20051017 to latest
+현재 판매중인 아이템이 없습니다.
+Your Sale List is empty.
+*/
+ MSG_NOTHING_SEARCH_SELL_ITEM = 0x42e,
+/*20051017 to latest
+현재 구매중인 아이템이 없습니다.
+Your Purchase List is empty.
+*/
+ MSG_NOTHING_SEARCH_BUY_ITEM = 0x42f,
+/*20051017 to latest
+경매정보가 정확하지 않습니다.
+Auction Information is incorrect or incomplete.
+*/
+ MSG_ERROR_AUCTION_ITEM_INFO = 0x430,
+/*20051017 to latest
+경매에 등록할 아이템 정보가 없습니다.
+You must drag and drop an item from your Inventory into the Register Window to begin a new auction.
+*/
+ MSG_NOTHING_AUCTION_ITEM_INFO = 0x431,
+/*20051017 to latest
+이미 등록된 경매입니다.
+The auction has already been registered.
+*/
+ MSG_ERROR_ADD_AUCTION = 0x432,
+/*20051017 to latest
+제시가격
+Starting Bid
+*/
+ MSG_PRICE = 0x433,
+/*20051017 to latest
+구입희망가격
+Current Bid
+*/
+ MSG_PRICE2 = 0x434,
+/*20051017 to latest
+즉시구입가격
+Buy Now Price
+*/
+ MSG_PRICE3 = 0x435,
+/*20051017 to latest
+현재소지제니
+Your Current Zeny
+*/
+ MSG_PRICE4 = 0x436,
+/*20051017 to latest
+현재최고가격
+Highest Bid
+*/
+ MSG_PRICE5 = 0x437,
+/*20051017 to latest
+이전입찰가격
+Previous Bid
+*/
+ MSG_PRICE6 = 0x438,
+/*20051017 to latest
+추가입찰가격
+Next Bid
+*/
+ MSG_PRICE7 = 0x439,
+/*20051017 to latest
+구입하시겠습니까?
+Press buy to confirm.
+*/
+ MSG_BUY_ACTION_ITEM = 0x43a,
+/*20051017 to latest
+이 가격에 판매하시겠습니까?
+Would you like to sell this item?
+*/
+ MSG_SELL_ACTION_ITEM = 0x43b,
+/*20051017 to latest
+입찰하기
+Place Bid
+*/
+ MSG_BUY_AUCTION = 0x43c,
+/*20051017 to latest
+즉시구매하기
+Buy Now
+*/
+ MSG_BUY_AUCTION2 = 0x43d,
+/*20051017 to latest
+경매종료하기
+End the Auction
+*/
+ MSG_BUY_AUCTION3 = 0x43e,
+/*20051017 to latest
+재입찰하기
+Place another Bid
+*/
+ MSG_FINISH_AUCTION = 0x43f,
+/*20051017 to latest
+해당 경매에 대한 입찰이 성공했습니다.
+You have placed a bid.
+*/
+ MSG_RESULT_BUY_TRUE = 0x440,
+/*20051017 to latest
+해당 경매에 대한 입찰이 실패했습니다.
+You have failed to place a bid.
+*/
+ MSG_RESULT_BUY_FALSE = 0x441,
+/*20051017 to latest
+제니가 충분하지 않습니다.
+You do not have enough zeny.
+*/
+ MSG_RESULT_BUY_FALSE_MONEY = 0x442,
+#endif
+#if PACKETVER >= 20051024
+/*20051024 to latest
+방어구
+Armors
+*/
+ MSG_EQUIP = 0x443,
+/*20051024 to latest
+카드
+Card
+*/
+ MSG_CARD = 0x444,
+/*20051024 to latest
+기타
+Other
+*/
+ MSG_ETC = 0x445,
+/*20051024 to latest
+경매번호
+Bid
+*/
+ MSG_AUCTION_NUM = 0x446,
+/*20051024 to latest
+검색
+Search
+*/
+ MSG_AUCTION_SEARCH = 0x447,
+/*20051024 to latest
+해당 경매를 종료했습니다.
+You have ended the auction.
+*/
+ MSG_RESULT_MY_SELL_STOP_TRUE = 0x448,
+/*20051024 to latest
+해당 경매를 종료 할 수 없습니다.
+You cannot end the auction.
+*/
+ MSG_RESULT_MY_SELL_STOP_FALSE = 0x449,
+/*20051024 to latest
+경매 번호가 정확하지 않습니다.
+Bid Number is incorrect.
+*/
+ MSG_RESULT_AUCTION_ID_FALSE = 0x44a,
+/*20051024 to latest
+받는이
+To
+*/
+ MSG_SENDER = 0x44b,
+#endif
+#if PACKETVER >= 20051205
+/*20051205 to latest
+제 목
+Title
+*/
+ MSG_TITLE2 = 0x44c,
+/*20051205 to latest
+새 메일이 도착하였습니다.
+You have received a message in the mail.
+*/
+ MSG_NEW_MAIL = 0x44d,
+/*20051205 to latest
+검색중입니다.
+Searching...
+*/
+ MSG_SEARCHING_ITEM = 0x44e,
+/*20051205 to latest
+더 이상 경매 등록할 수 없습니다. 경매 등록은 최대 5개까지 가능합니다.
+You cannot register more than 5 items in an auction at a time.
+*/
+ MSG_AUCTION_ADD_OVER = 0x44f,
+/*20051205 to latest
+더 이상 경매 물품에 입찰할 수 없습니다. 경매 물품 입찰은 최대 5개까지 가능합니다.
+You cannot place more than 5 bids at a time.
+*/
+ MSG_RESULT_BUY_OVER = 0x450,
+/*20051205 to latest
+삭제하려는 메일에 수령하지 않은 아이템이 있습니다.
+Please accept all items from your mail before deleting.
+*/
+ MSG_MAIL_DELETE_ERROR = 0x451,
+/*20051205 to latest
+메일 제목을 입력하여 주십시오.
+Please enter a title.
+*/
+ MSG_MAIL_SEND_ERROR = 0x452,
+/*20051205 to latest
+/shopping : 클릭 한번으로 상점을 열고 상점이름 오른쪽 클릭으로 상점을 닫습니다 On Off
+/shopping: Enables you to open a shop with a single left-click and close your shop with a single right-click. On Off
+*/
+ MSG_EXPLAIN_SHOPPING = 0x453,
+/*20051205 to latest
+클릭 한번으로 상점을 열고 상점이름을 오른쪽 클릭해서 상점을 닫을수있습니다. [/sh ON]
+You can now open a shop with a single left-click and close your shop with a single right-click. [sh ON].
+*/
+ MSG_SHOPPING_ON = 0x454,
+/*20051205 to latest
+더블클릭 으로 상점을 열게됩니다. [/sh OFF]
+You can open a shop by double-clicking. [/sh OFF]
+*/
+ MSG_SHOPPING_OFF = 0x455,
+/*20051205 to latest
+메일을 보내려면, 제니 입력을 완료해야 합니다.
+Please enter zeny amount before sending mail.
+*/
+ MSG_MAIL_SEND_ERROR2 = 0x456,
+/*20051205 to latest
+경매 수수료가 부족합니다.
+You do not have enough zeny to pay the Auction Fee.
+*/
+ MSG_ADD_MONEY_FALSE = 0x457,
+/*20051205 to latest
+상태보기
+View Status
+*/
+ MSG_HOMUN_SHOWINFO = 0x458,
+/*20051205 to latest
+먹이주기
+Feed
+*/
+ MSG_HOMUN_FEEDING = 0x459,
+/*20051205 to latest
+대기
+Stand By
+*/
+ MSG_HOMUN_WAITING = 0x45a,
+/*20051205 to latest
+슈퍼노비스(남)
+Super Novice (Male)
+*/
+ MSG_JOB_SUPERNOVICE_M = 0x45b,
+/*20051205 to latest
+슈퍼노비스(여)
+Super Novice (Female)
+*/
+ MSG_JOB_SUPERNOVICE_F = 0x45c,
+/*20051205 to latest
+태권소년
+Taekwon Boy
+*/
+ MSG_JOB_TAEKWON_M = 0x45d,
+/*20051205 to latest
+태권소녀
+Taekwon Girl
+*/
+ MSG_JOB_TAEKWON_F = 0x45e,
+/*20051205 to latest
+권성(남)
+Taekwon Master (Male)
+*/
+ MSG_KWONSUNG_M = 0x45f,
+/*20051205 to latest
+권성(여)
+Taekwon Master (Female)
+*/
+ MSG_KWONSUNG_F = 0x460,
+/*20051205 to latest
+소울링커(남)
+Soul Linker (Male)
+*/
+ MSG_SOULLINGKER_M = 0x461,
+/*20051205 to latest
+소울링커(여)
+Soul Linker (Female)
+*/
+ MSG_SOULLINGKER_F = 0x462,
+/*20051205 to latest
+PC방요금제로 2개이상의 계정이 접속되고있습니다. 확인후 다시 사용하시기 바랍니다.
+Please check the connection, more than 2 accounts are connected with Internet Cafe Time Plan.
+*/
+ MSG_BAN_PC_IP_UNFAIR = 0x463,
+/*20051205 to latest
+귀하는 월정액 요금제 사용자 입니다. (남은기간 : %d일)
+Your account is using monthly payment. (Remaining day: %d day)
+*/
+ MSG_BILLING_1 = 0x464,
+/*20051205 to latest
+귀하는 정량 요금제 사용자 입니다. (남은시간 : %d시간 %분 %초)
+Your account is using time limited. (Remaining time: %d hour %d minute %d second)
+*/
+ MSG_BILLING_2 = 0x465,
+#endif
+#if PACKETVER >= 20051212
+/*20051212 to latest
+해당 아이템은 메일에 첨부 할수 없는 아이템입니다.
+This item cannot be mailed.
+*/
+ MSG_MAIL_ITEM_ADD_FAILED = 0x466,
+/*20051212 to latest
+더이상 아이템을 가질수 없습니다. 아이템은 메일로 보관하겠습니다.
+You cannot accept any more items. Please try again later.
+*/
+ MSG_MAIL_ADD_ITEM_OVER_FAILURE = 0x467,
+#endif
+#if PACKETVER >= 20060109
+/*20060109 to latest
+남성
+Male
+*/
+ MSG_PTSEX1 = 0x468,
+/*20060109 to latest
+여성
+Female
+*/
+ MSG_PTSEX2 = 0x469,
+/*20060109 to latest
+새로운 유저입니다
+New User.
+*/
+ MSG_PT_NEWUSER = 0x46a,
+/*20060109 to latest
+E-mail은 캐릭터를 지울때 필요합니다.
+E-mail address is required to delete a character.
+*/
+ MSG_PT_ACINFO = 0x46b,
+/*20060109 to latest
+정확한 형식으로 입력해 주세요.
+Please enter the correct information.
+*/
+ MSG_PT_ACINFO2 = 0x46c,
+/*20060109 to latest
+이 키를 사용하세요
+Please use this key.
+*/
+ MSG_PT_NEWKEYINFO = 0x46d,
+/*20060109 to latest
+정확한 카드 패스워드를 다시 입력해주세요
+Please enter the correct card password.
+*/
+ MSG_PT_FAIL_CARDPASS = 0x46e,
+/*20060109 to latest
+PT정보
+PT Info
+*/
+ MSG_PTID1 = 0x46f,
+/*20060109 to latest
+PT_ID는 %s
+PT_ID is %s
+*/
+ MSG_PTID2 = 0x470,
+/*20060109 to latest
+NUM_ID는 %s
+NUM_ID is %s
+*/
+ MSG_PTID3 = 0x471,
+/*20060109 to latest
+잊지않게 주의하세요
+Please don't forget this information.
+*/
+ MSG_PTID4 = 0x472,
+/*20060109 to latest
+1001
+*/
+ MSG_PT_ERROR_1001 = 0x473,
+/*20060109 to latest
+1002
+*/
+ MSG_PT_ERROR_1002 = 0x474,
+/*20060109 to latest
+1003
+*/
+ MSG_PT_ERROR_1003 = 0x475,
+/*20060109 to latest
+1004
+*/
+ MSG_PT_ERROR_1004 = 0x476,
+/*20060109 to latest
+1006
+*/
+ MSG_PT_ERROR_1006 = 0x477,
+/*20060109 to latest
+1007
+*/
+ MSG_PT_ERROR_1007 = 0x478,
+/*20060109 to latest
+1008
+*/
+ MSG_PT_ERROR_1008 = 0x479,
+/*20060109 to latest
+1009
+*/
+ MSG_PT_ERROR_1009 = 0x47a,
+/*20060109 to latest
+1012
+*/
+ MSG_PT_ERROR_1012 = 0x47b,
+/*20060109 to latest
+1013
+*/
+ MSG_PT_ERROR_1013 = 0x47c,
+/*20060109 to latest
+1014
+*/
+ MSG_PT_ERROR_1014 = 0x47d,
+/*20060109 to latest
+1015
+*/
+ MSG_PT_ERROR_1015 = 0x47e,
+/*20060109 to latest
+1019
+*/
+ MSG_PT_ERROR_1019 = 0x47f,
+/*20060109 to latest
+1020
+Navigation
+*/
+ MSG_PT_ERROR_1020 = 0x480,
+/*20060109 to latest
+1021
+*/
+ MSG_PT_ERROR_1021 = 0x481,
+/*20060109 to latest
+1023
+*/
+ MSG_PT_ERROR_1023 = 0x482,
+/*20060109 to latest
+1024
+*/
+ MSG_PT_ERROR_1024 = 0x483,
+/*20060109 to latest
+1025
+*/
+ MSG_PT_ERROR_1025 = 0x484,
+/*20060109 to latest
+1027
+*/
+ MSG_PT_ERROR_1027 = 0x485,
+/*20060109 to latest
+1028
+*/
+ MSG_PT_ERROR_1028 = 0x486,
+/*20060109 to latest
+10
+*/
+ MSG_PT_ERROR_10 = 0x487,
+/*20060109 to latest
+20
+*/
+ MSG_PT_ERROR_20 = 0x488,
+/*20060109 to latest
+40
+*/
+ MSG_PT_ERROR_40 = 0x489,
+/*20060109 to latest
+50
+*/
+ MSG_PT_ERROR_50 = 0x48a,
+/*20060109 to latest
+60
+*/
+ MSG_PT_ERROR_60 = 0x48b,
+/*20060109 to latest
+70
+*/
+ MSG_PT_ERROR_70 = 0x48c,
+/*20060109 to latest
+80
+*/
+ MSG_PT_ERROR_80 = 0x48d,
+/*20060109 to latest
+90
+*/
+ MSG_PT_ERROR_90 = 0x48e,
+/*20060109 to latest
+100
+*/
+ MSG_PT_ERROR_100 = 0x48f,
+/*20060109 to latest
+110
+*/
+ MSG_PT_ERROR_110 = 0x490,
+#endif
+#if PACKETVER >= 20060126
+/*20060126 to latest
+30포인트를 받으시겠습니까?
+Do you want to receive 30 points?
+*/
+ MSG_PT_POINT1 = 0x491,
+/*20060126 to latest
+30포인트(5시간)이 충전되었습니다
+30 points (5 hours) have been added.
+*/
+ MSG_PT_POINT2 = 0x492,
+#endif
+#if PACKETVER >= 20060213
+/*20060213 to latest
+감정되지 않은 아이템은 경매에 등록할 수 없습니다.
+You cannot register Unidentified Items in auctions.
+*/
+ MSG_AUCTION_ADD_ITEM_FAILURE = 0x493,
+/*20060213 to latest
+소비 아이템은 경매에 등록할 수 없습니다.
+You cannot register this Consumable Item in an auction.
+*/
+ MSG_AUCTION_ADD_ITEM_FAILURE2 = 0x494,
+#endif
+#if PACKETVER >= 20060306
+/*20060306 to latest
+메일창을 열려면 카트창을 닫아 주십시요.
+Please close the Cart Window to open the Mail Window.
+*/
+ MSG_CLOSE_MERCHANTITEMWND = 0x495,
+/*20060306 to latest
+카트창을 열려면 메일창을 닫아 주십시요.
+Please close the Mail Window to open the Cart Window.
+*/
+ MSG_CLOSE_MAILWND = 0x496,
+#endif
+#if PACKETVER >= 20060313
+/*20060313 to latest
+탄환이 장착되었습니다.
+Bullets have been equipped.
+*/
+ MSG_MSG_BULLET_EQUIPMENT_SUCCESS = 0x497,
+/*20060313 to latest
+메일이 반송되었습니다.
+The mail has been returned to sender.
+*/
+ MSG_MAIL_RETURN_SUCCESS = 0x498,
+/*20060313 to latest
+메일이 존재하지 않습니다.
+The mail no longer exists.
+*/
+ MSG_MAIL_RETURN_FAILURE = 0x499,
+#endif
+#if PACKETVER >= 20060522
+/*20060522 to 20060522
+한시간 동안, 동일한 IP로 접속한 유저가 60건 이상입니다. 확인후 다시 사용하시기 바랍니다.
+20060523 to latest
+한시간 동안, 동일한 IP로 접속한 유저가 30건 이상입니다. 확인후 다시 사용하시기 바랍니다.
+More than 30 players sharing the same IP have logged into the game for an hour. Please check this matter.
+*/
+ MSG_BAN_PC_IP_COUNT_ALL = 0x49a,
+/*20060522 to latest
+한시간 동안, 동일한 IP로 10번 이상 접속되었습니다. 확인후 다시 사용하시기 바랍니다.
+More than 10 connections sharing the same IP have logged into the game for an hour. Please check this matter.
+*/
+ MSG_BAN_PC_IP_COUNT = 0x49b,
+/*20060522 to latest
+게임을 재시작 하십시오
+Please restart the game.
+*/
+ MSG_GAMEGUARD_RESTART = 0x49c,
+#endif
+#if PACKETVER >= 20060703
+/*20060703 to latest
+용병정보 - 아쳐타입
+Mercenary: Archer
+*/
+ MSG_MER_INFO_TYPE_ARCHER = 0x49d,
+/*20060703 to latest
+용병정보 - 검사타입
+Mercenary: Swordman
+*/
+ MSG_MER_INFO_TYPE_SWORDMAN = 0x49e,
+/*20060703 to latest
+용병정보 - 창병타입
+Mercenary: Spearman
+*/
+ MSG_MER_INFO_TYPE_LANCER = 0x49f,
+/*20060703 to 20070108
+남은시간
+20070115 to latest
+삭제시간
+Expiration
+*/
+ MSG_LEFT_TIME = 0x4a0,
+/*20060703 to latest
+신뢰도
+Loyalty
+*/
+ MSG_MER_FRIENDLY = 0x4a1,
+/*20060703 to latest
+소환횟수
+Summons
+*/
+ MSG_MER_CALLCOUNT = 0x4a2,
+/*20060703 to latest
+Kill
+*/
+ MSG_MER_KILL = 0x4a3,
+#endif
+#if PACKETVER >= 20060904
+/*20060904 to latest
+펫이 배가 고파서 당신을 원망하고 있다는 느낌이 든다.
+You can feel hatred from your pet for neglecting to feed it.
+*/
+ MSG_PET_STARVING = 0x4a4,
+/*20060904 to latest
+[POINT] 테이밍미션 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[POINT] You earned %d Taming Mission Ranking Points, giving you a total of %d points.
+*/
+ MSG_GANGSI_POINT = 0x4a5,
+/*20060904 to latest
+[테이밍미션] Target Monster : %s
+[Taming Mission] Target Monster: %s
+*/
+ MSG_GANGSI_MISSION = 0x4a6,
+#endif
+#if PACKETVER >= 20060918
+/*20060918 to latest
+/hunting : 사냥 목록을 보여줍니다.
+/hunting: You can check the your hunting list.
+*/
+ MSG_EXPLAIN_HUNTING = 0x4a7,
+/*20060918 to latest
+[천사의질문] 소녀에게 가르쳐주시어요. %s는 몇 스킬 찍으셨나요?
+[Angel's Question] Please tell me, how many %s skills do you have?
+*/
+ MSG_DEATH_Q01 = 0x4a8,
+/*20060918 to latest
+[천사의질문] 소녀에게 가르쳐주시어요. 소지하시고있는 제니를 십만으로 나누면 얼마가 되시나요?
+[Angel's Question] Please tell me, how much zeny you'll have if you divide it by 100,000?
+*/
+ MSG_DEATH_Q02 = 0x4a9,
+/*20060918 to latest
+[천사의질문] 소녀에게 가르쳐주시어요. 오늘이 몇일이신지 아시나요?
+[Angel's Question] Please tell me, what is today's date?
+*/
+ MSG_DEATH_Q03 = 0x4aa,
+/*20060918 to latest
+[천사의질문] 소녀에게 가르쳐주시어요. %s은 지금 몇이신가요?
+[Angel's Question] Please tell me, how many %s do you have?
+*/
+ MSG_DEATH_Q04 = 0x4ab,
+/*20060918 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 슈노, 태권계열, 무낙계열을 담당하고있는 SiYeon씨의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in SiYeon's name?
+*/
+ MSG_DEATH_Q05 = 0x4ac,
+/*20060918 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 귀엽고 어여쁜 라그나로크의 히로인 Munak의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in Munak's name?
+*/
+ MSG_DEATH_Q06 = 0x4ad,
+/*20060918 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 제가 어여뻐하는 Bongun의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in Bongun's name?
+*/
+ MSG_DEATH_Q07 = 0x4ae,
+/*20060918 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 저희가 존재하는 온라인세계 Ragnarok의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, Ragnarok?
+*/
+ MSG_DEATH_Q08 = 0x4af,
+/*20060918 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 언제나 Online상태인 천사동료들은 큰힘이 되어주죠. Online의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, online?
+*/
+ MSG_DEATH_Q09 = 0x4b0,
+/*20060918 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 죽음도 두려워하지않는 기사들을 상징하는 단어인 Death의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, death?
+*/
+ MSG_DEATH_Q10 = 0x4b1,
+/*20060918 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 기사들은 너무 멋진다고 생각해요. Knight의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, knight?
+*/
+ MSG_DEATH_Q11 = 0x4b2,
+/*20060918 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 중력을 뜻하는 단어인 Gravity의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, gravity?
+*/
+ MSG_DEATH_Q12 = 0x4b3,
+/*20060918 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 어둠속에서도 밝게 사는게 중요하지요. Dark의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, dark?
+*/
+ MSG_DEATH_Q13 = 0x4b4,
+/*20060918 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 뭐든지 수집하는 Collector의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, collecter?
+*/
+ MSG_DEATH_Q14 = 0x4b5,
+/*20060918 to latest
+[천사의대답] 소녀에게 정확한 사실을 가르쳐주셔서 감사하옵니다.
+[Angel's Answer] Thank you for letting me know~
+*/
+ MSG_DEATH_R01 = 0x4b6,
+/*20060918 to latest
+[천사의대답] 사랑스러우신 분이시군요. 소녀 감탄했사옵니다.
+[Angel's Answer] I'm very pleased with your answer. You are a splendid adventurer.
+*/
+ MSG_DEATH_R02 = 0x4b7,
+/*20060918 to latest
+[천사의대답] 소녀 실망했사옵니다.
+[Angel's Answer] You've disappointed me...
+*/
+ MSG_DEATH_R05 = 0x4b8,
+#endif
+#if PACKETVER >= 20060925
+/*20060925 to latest
+[POINT] 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[Point] You earned %d Ranking Points, giving you a total of %d Ranking Points.
+*/
+ MSG_DEATH_POINT = 0x4b9,
+#endif
+#if PACKETVER >= 20060927
+/*20060927 to 20070417
+[%s]의 소지 Point : %d Point
+20070423 to latest
+[%s]의 소지 캐시 : %d 캐시
+[%s]'s Points: %d Points
+*/
+ MSG_POINT_SHOP = 0x4ba,
+#endif
+#if PACKETVER >= 20061009
+/*20061009 to latest
+선택하지 않은 캐릭터는 삭제 됩니다. 완료하시겠습니까?
+Unselected Characters will be deleted. Continue?
+*/
+ MSG_CONFIRM_SELECT_CHARACTERS = 0x4bb,
+/*20061009 to latest
+9개 이상 선택하실 수 없습니다.
+You cannot select more than 8.
+*/
+ MSG_ERROR_SELECT_CHARACTERS = 0x4bc,
+#endif
+#if PACKETVER >= 20061016
+/*20061016 to latest
+캐릭터명을 '%s' (으)로 변경하시겠습니까?
+Do you want to change your name to '%s'?
+*/
+ MSG_CONFIRM_TO_CHANGE_NAME = 0x4bd,
+/*20061016 to latest
+캐릭터명이 성공적으로 변경되었습니다.
+Character Name has been changed successfully.
+*/
+ MSG_CHANGE_NAME_SUCCESS = 0x4be,
+/*20061016 to latest
+캐릭터명 변경이 실패하였습니다.
+You have failed to change this character's name.
+*/
+ MSG_CHANGE_NAME_FAILURE = 0x4bf,
+/*20061016 to latest
+한 번에 한 종류의 아이템만 구매할 수 있습니다.
+You can purchase only one kind of item at a time.
+*/
+ MSG_CAN_BUY_ONLY_ONEITEM = 0x4c0,
+#endif
+#if PACKETVER >= 20061017
+/*20061017 to 20061017
+캐릭터가 하나도 선택되지 않았습니다. 반드시 하나 이상의 캐릭터를 선택하여야 합니다.
+20061023 to latest
+캐릭터가 한개도 선택되지 않았습니다. 반드시 한개 이상의 캐릭터를 선택하여야 합니다.
+No characters were selected. You must select at least one character.
+*/
+ MSG_NO_SELECT_CHARACTERS = 0x4c1,
+#endif
+#if PACKETVER >= 20061023
+/*20061023 to latest
+이미 캐릭터명을 변경한 적이 있습니다. 더 이상 변경 할 수 없습니다.
+This character's name has already been changed. You cannot change a character's name more than once.
+*/
+ MSG_ALREADY_CHANGED_NAME = 0x4c2,
+/*20061023 to latest
+사용자 정보가 정확하지 않습니다.
+User Information is not correct.
+*/
+ MSG_NOTREGISTED_USER = 0x4c3,
+/*20061023 to latest
+다른 사용자가 같은 캐릭터 명을 먼저 사용하였습니다. 다른 캐릭터명을 사용하여 주십시요.
+Another user is using this character name, so please select another one.
+*/
+ MSG_DUPLICATED_CHAR_NAME = 0x4c4,
+#endif
+#if PACKETVER >= 20061030
+/*20061030 to latest
+파티장 권한이 없어 파티원을 소환하지 못했습니다.
+The party member was not summoned because you are not the party leader.
+*/
+ MSG_CANNOT_PARTYCALL = 0x4c5,
+/*20061030 to latest
+현재 맵에는 소환될 파티원이 존재하지 않습니다.
+There is no party member to summon in the current map.
+*/
+ MSG_NO_PARTYMEM_ON_THISMAP = 0x4c6,
+/*20061030 to latest
+이 지역에선 보스몬스터의 흔적을 찾을 수가 없습니다.
+You cannot find any trace of a Boss Monster in this area.
+*/
+ MSG_NOTFIND_BOSSMON = 0x4c7,
+/*20061030 to 20070122
+보스 몬스터 '%s'의 등장 예정시간 %02d시:%02d분
+20070129 to 20071204
+보스 몬스터 '%s'(이)가 %d시 %d분 후에 등장합니다.
+20071211 to latest
+보스 몬스터 '%s'(이)가 %d시간 %d분 후에 등장합니다.
+Boss Monster, '%s' will appear in %02d hour(s) and %02d minute(s).
+*/
+ MSG_APPEARANCE_TIME_OF_BOSSMON = 0x4c8,
+/*20061030 to latest
+보스 몬스터 '%s'의 위치가 미니맵에 표시됩니다.
+The location of Boss Monster, '%s', will be displayed on your Mini-Map.
+*/
+ MSG_SHOW_POSITION_OF_BOSSMON = 0x4c9,
+#endif
+#if PACKETVER >= 20061106
+/*20061106 to 20061211
+%s를 개봉 하시겠습니까? 한번 개봉된 아이템은 창고 저장 외의 다른 이동은 불가하며 동일한 아이템을 중복 사용하더라도 효과가 중첩되지 않습니다.
+20061218 to 20070618
+'%s'를 개봉 하시겠습니까? 한번 개봉된 아이템은 창고 저장 외의 다른 이동은 불가하며 동일한 아이템을 중복 사용하더라도 효과가 중첩되지 않습니다.
+20070619 to 20071218
+'%s'를 개봉 하시겠습니까? 한번 개봉된 아이템은 창고 저장 외의 다른 이동은 불가하며 임대 아이템은 창고 저장도 불가합니다. 동일한 아이템을 중복 사용하더라도 효과가 중첩되지 않습니다.
+20080102 to latest
+'%s'를 개봉 하시겠습니까? 한번 개봉된 아이템은 창고 저장 외의 다른 이동은 불가하며 임대 아이템은 창고 저장도 불가합니다. 한정 아이템은 거래 및 이동이 가능 합니다. 동일한 아이템을 중복 사용하더라도 효과가 중첩되지 않습니다.
+*/
+ MSG_CONFIRM_TO_OPEN_CASH_ITEM = 0x4ca,
+/*20061106 to latest
+NPC가 존재하지 않아 구매가 실패하였습니다.
+The Purchase has failed because the NPC does not exist.
+*/
+ MSG_BUY_CASH_FAIL_NPC = 0x4cb,
+/*20061106 to latest
+부분 유료화 시스템이 정상 작동하지 않아 구매가 실패하였습니다.
+The Purchase has failed because the Kafra Shop System is not working correctly.
+*/
+ MSG_BUY_CASH_FAIL_SYSTEM = 0x4cc,
+/*20061106 to latest
+교환중에는 아이템을 구매 할 수 없습니다.
+You cannot purchase items while you are in a trade.
+*/
+ MSG_BUY_CASH_FAIL_EXCHANGE = 0x4cd,
+/*20061106 to latest
+아이템 정보가 정확하지 않아 구매가 실패하였습니다.
+The Purchase has failed because the Item Information was incorrect.
+*/
+ MSG_BUY_CASH_FAIL_ITEM_ID = 0x4ce,
+#endif
+#if PACKETVER >= 20061204
+/*20061204 to latest
+ STR이 향상되었습니다.
+STR has increased.
+*/
+ MSG_ENST_STR = 0x4cf,
+/*20061204 to latest
+ STR이 원래대로 돌아왔습니다.
+STR has returned to normal.
+*/
+ MSG_DSST_STR = 0x4d0,
+/*20061204 to latest
+ AGI이 향상되었습니다.
+AGI has increased.
+*/
+ MSG_ENST_AGI = 0x4d1,
+/*20061204 to latest
+ AGI이 원래대로 돌아왔습니다.
+AGI has returned to normal.
+*/
+ MSG_DSST_AGI = 0x4d2,
+/*20061204 to latest
+ VIT이 향상되었습니다.
+VIT has increased.
+*/
+ MSG_ENST_VIT = 0x4d3,
+/*20061204 to latest
+ VIT이 원래대로 돌아왔습니다.
+VIT has returned to normal.
+*/
+ MSG_DSST_VIT = 0x4d4,
+/*20061204 to latest
+ INT이 향상되었습니다.
+INT has increased.
+*/
+ MSG_ENST_INT = 0x4d5,
+/*20061204 to latest
+ INT이 원래대로 돌아왔습니다.
+INT has returned to normal.
+*/
+ MSG_DSST_INT = 0x4d6,
+/*20061204 to latest
+ DEX이 향상되었습니다.
+DEX has increased.
+*/
+ MSG_ENST_DEX = 0x4d7,
+/*20061204 to latest
+ DEX이 원래대로 돌아왔습니다.
+DEX has returned to normal.
+*/
+ MSG_DSST_DEX = 0x4d8,
+/*20061204 to latest
+ LUK이 향상되었습니다.
+LUK has increased.
+*/
+ MSG_ENST_LUK = 0x4d9,
+/*20061204 to latest
+ LUK이 원래대로 돌아왔습니다.
+LUK has returned to normal.
+*/
+ MSG_DSST_LUK = 0x4da,
+/*20061204 to latest
+ 회피율이 향상되었습니다.
+Flee Rate (Flee) has increased.
+*/
+ MSG_ENST_AVOIDANCE = 0x4db,
+/*20061204 to latest
+ 회피율이 원래대로 돌아왔습니다.
+Flee Rate has returned to normal.
+*/
+ MSG_DSST_AVOIDANCE = 0x4dc,
+/*20061204 to latest
+ 명중률이 향상되었습니다.
+Accuracy Rate (Hit) has increased.
+*/
+ MSG_ENST_HIT = 0x4dd,
+/*20061204 to latest
+ 명중률이 원래대로 돌아왔습니다.
+Accuracy Rate has returned to normal.
+*/
+ MSG_DSST_HIT = 0x4de,
+/*20061204 to latest
+ 크리티컬 확률이 향상되었습니다.
+Critical Attack (Critical) has increased.
+*/
+ MSG_ENST_CRITICALSUCCESSVALUE = 0x4df,
+/*20061204 to latest
+ 크리티컬 확률이 원래대로 돌아왔습니다.
+Critical Attack has returned to normal.
+*/
+ MSG_DSST_CRITICALSUCCESSVALUE = 0x4e0,
+/*20061204 to latest
+ 몬스터 사냥을 통해 얻을 수 있는 경험치가 30분간 1.5배로 증가합니다.
+*/
+ MSG_PLUSEXP = 0x4e1,
+/*20061204 to latest
+ 30분내 사망시 1회에 한해 경험치 감소가 일어나지 않습니다.
+This character will not receive any EXP penalty if killed within the next 30 minutes.
+*/
+ MSG_DDEATHPENALTY = 0x4e2,
+/*20061204 to latest
+ 몬스터 사냥을 통해 얻을 수 있는 기본 아이템의 드롭률이 30분간 2배로 증가합니다.
+Regular item drops from monsters will be doubled for the next 30 minutes.
+*/
+ MSG_RECEIVEITEM = 0x4e3,
+/*20061204 to latest
+ 10분간 맵 내에 출현 가능한 보스 몬스터에 대한 정보를 안내해 드립니다.
+Boss Monster Map Information for the next 10 minutes.
+*/
+ MSG_BOSS_ALARM = 0x4e4,
+/*20061204 to 20061211
+ 정말로 %s아이템을 구매하시겠습니까?, %d포인트가 차감됩니다.
+20061218 to 20070417
+ 정말로 '%s'아이템을 구매하시겠습니까?, %d포인트가 차감됩니다.
+20070423 to 20080603
+ 정말로 '%s'아이템을 구매하시겠습니까?, %d캐시가 차감됩니다.
+20080610 to latest
+ 본 아이템은 청약 철회나 환불 대상에서 제외되는 아이템입니다. 정말로 '%s'아이템을 구매하시겠습니까?, %d캐시가 차감됩니다.
+*/
+ MSG_BUY_RECONFIRM = 0x4e5,
+#endif
+#if PACKETVER >= 20061211
+/*20061211 to 20061211
+'%s'아이템의 사용시간이 %d분 남았습니다.
+20061218 to 20070417
+ 포인트가 부족합니다.
+20070423 to latest
+ 캐시가 부족합니다.
+ You do not have enough Kafra Credit Points.
+*/
+ MSG_BUY_CASH_FAIL_MONEY = 0x4e6,
+/*20061211 to 20061211
+1분 후, '%s'아이템이 인벤토리에서 삭제됩니다.
+20061218 to latest
+ ^ff0000파기일시: %s^000000
+ ^ff0000Expiration Date: %s^000000
+*/
+ MSG_NOTICE_TO_DELETE_TIME = 0x4e7,
+/*20061211 to 20061211
+'%s'아이템이 인벤토리에서 삭제되었습니다.
+20061218 to latest
+ '%s'아이템의 사용시간이 %d분 남았습니다.
+ The '%s' item will disappear in %d minutes.
+20070102 to 20070312
+ '%s'아이템의 사용시간이 %s 남았습니다.
+*/
+ MSG_NOTICE_TO_REMAIN_ITEMUSINGTIME = 0x4e8,
+#endif
+#if PACKETVER >= 20061218
+/*20061218 to latest
+ 1분 후, '%s'아이템이 인벤토리에서 삭제됩니다.
+ '%s' item will be deleted from the Inventory in 1 minute.
+*/
+ MSG_LAST_NOTICE_TO_REMAIN_ITEMUSINGTIME = 0x4e9,
+/*20061218 to latest
+ '%s'아이템이 인벤토리에서 삭제되었습니다.
+ '%s' item has been deleted from the Inventory.
+*/
+ MSG_NOTICE_TO_DELETE_ITEM = 0x4ea,
+#endif
+#if PACKETVER >= 20070102
+/*20070102 to latest
+Input Number
+*/
+ MSG_INPUT_NUMBER = 0x4eb,
+/*20070102 to latest
+%m월 %d일 %H시 %M분
+%m/%d %H:%M
+*/
+ MSG_TIME_TYPE2 = 0x4ec,
+#endif
+#if PACKETVER >= 20070129
+/*20070129 to 20071120
+보스 몬스터 '%s'(이)가 1분 이내에 등장합니다.
+20071127 to latest
+보스 몬스터 '%s'(이)가 잠시 후에 등장합니다.
+Boss Monster '%s' will appear within 1 minute.
+*/
+ MSG_APPEARANCE_TIME_OF_BOSSMON2 = 0x4ed,
+/*20070129 to latest
+용병 스킬목록
+Mercenary Soldier Skill List
+*/
+ MSG_MER_SKILLLIST = 0x4ee,
+/*20070129 to latest
+블랙젬스톤 1개와 백만제니를 소모하는 마법의 실행에 동의합니까?
+Do you agree to cast the magic spell that consumes 1 Black Gemstone and 1,000,000 Zeny?
+*/
+ MSG_DA_EXP_ACCEPT = 0x4ef,
+#endif
+#if PACKETVER >= 20070220
+/*20070220 to latest
+[POINT] 콜렉터랭킹 포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[Point] You have gained %d Collector Rank Points; you now have a total of %d Collector Rank Points.
+*/
+ MSG_COLLECTOR_POINT = 0x4f0,
+/*20070220 to latest
+[콜렉터랭킹] Target Item : %s
+[Collector Rank] Target Item: %s
+*/
+ MSG_COLLECTOR_MISSION = 0x4f1,
+#endif
+#if PACKETVER >= 20070227
+/*20070227 to latest
+용병 사용시간이 만료되었습니다.
+The mercenary contract has expired.
+*/
+ MSG_MER_FINISH = 0x4f2,
+/*20070227 to latest
+용병이 사망하였습니다.
+The mercenary has died.
+*/
+ MSG_MER_DIE = 0x4f3,
+/*20070227 to latest
+용병이 해고되었습니다.
+You have released the mercenary.
+*/
+ MSG_MER_RETIRE = 0x4f4,
+/*20070227 to latest
+용병이 도망갔습니다.
+The mercenary has run away.
+*/
+ MSG_MER_RUNAWAY = 0x4f5,
+#endif
+#if PACKETVER >= 20070319
+/*20070319 to latest
+ '%s'아이템의 사용시간이 %d초 남았습니다.
+ The '%s' item will disappear in %d seconds.
+*/
+ MSG_NOTICE_TO_REMAIN_ITEMUSINGTIME2 = 0x4f6,
+#endif
+#if PACKETVER >= 20070326
+/*20070326 to 20070821
+PC방 이벤트 : 경험치 증가 %d%%, 죽을때 경험치 %d%%, 드롭율 증가 %d%%
+20070828 to latest
+PC방 프리미엄 서비스 : 경험치 %d%% 증가, 사망 페널티 %d%% 감소, 드롭율 %d%% 증가
+IP Bonus: EXP/JEXP %d%%, Death Penalty %d%%, Item Drop %d%%
+*/
+ MSG_PCBANG_EVENT = 0x4f7,
+#endif
+#if PACKETVER >= 20070402
+/*20070402 to latest
+24시간 이후에 시도하세요
+Symbols in Character Names are forbidden.
+*/
+ MSG_LIMIT_CHAR_DELETE = 0x4f8,
+#endif
+#if PACKETVER >= 20070416
+/*20070416 to latest
+용병이 사용자 인공지능으로 동작합니다.
+Mercenary will follow custom AI.
+*/
+ MSG_MER_USERAI_ON = 0x4f9,
+/*20070416 to latest
+용병이 기본 인공지능으로 동작합니다.
+Mercenary will follow basic AI.
+*/
+ MSG_MER_USERAI_OFF = 0x4fa,
+#endif
+#if PACKETVER >= 20070611
+/*20070611 to latest
+ %s님의
+ %s's
+*/
+ MSG_CHARACTER_NAME = 0x4fb,
+/*20070611 to 20070801
+%s님이 %s를 획득하셨습니다.
+20070807 to latest
+%s님이 %s 아이템을 획득하셨습니다.
+%s has acquired %s.
+*/
+ MSG_ITEM_PICKUP_PARTY = 0x4fc,
+/*20070611 to latest
+공개 채팅 메시지 표시
+Public Chat Display
+*/
+ MSG_VIEW_CHAT_MSG = 0x4fd,
+/*20070611 to latest
+귓속말 채팅 메시지 표시
+Whisper Display
+*/
+ MSG_VIEW_WHISPER_MSG = 0x4fe,
+/*20070611 to latest
+파티 채팅 메시지 표시
+Party Chat Display
+*/
+ MSG_VIEW_PARTY_MSG = 0x4ff,
+/*20070611 to latest
+길드 채팅 메시지 표시
+Guild Chat Display
+*/
+ MSG_VIEW_GUILD_MSG = 0x500,
+/*20070611 to latest
+아이템 획득/드롭 메시지 표시
+Item Get/Drop Message Display
+*/
+ MSG_VIEW_GET_ITEM_MSG = 0x501,
+/*20070611 to latest
+장비 장착/해제 메시지 표시
+Equipment On/Off Message Display
+*/
+ MSG_VIEW_EQUIP_MSG = 0x502,
+/*20070611 to latest
+상태이상 메시지 표시
+Abnormal Status Message Display
+*/
+ MSG_VIEW_CHANGE_STATUS_MSG = 0x503,
+/*20070611 to latest
+파티원의 주요 아이템 획득 메시지 표시
+Party Member's Obtained Item Message Display
+*/
+ MSG_VIEW_GET_ITEM_PARTY_MSG = 0x504,
+/*20070611 to latest
+파티원의 상태이상 메시지 표시
+Party Member's Abnormal Status Message Display
+*/
+ MSG_VIEW_CHANGE_STATUS_PARTY_MSG = 0x505,
+/*20070611 to latest
+스킬 사용 실패 메시지 표시
+Skill Failure Message Display
+*/
+ MSG_VIEW_FAIL_SKILL_MSG = 0x506,
+/*20070611 to latest
+파티 설정 메시지 표시
+Party Configuration Message Display
+*/
+ MSG_VIEW_PARTY_SETUP_MSG = 0x507,
+/*20070611 to latest
+장비 손상 메시지 표시
+Damaged Equipment Message Display
+*/
+ MSG_VIEW_DAMAGED_EQUIP_MSG = 0x508,
+/*20070611 to latest
+배틀 메시지 창 표시 정보
+Battle Message Window Display
+*/
+ MSG_BATTLE_CHAT_WND_OPTION = 0x509,
+/*20070611 to latest
+[%s]의 소지 한코인 : %d 한코인
+[%s]'s Han Coin: %d Han Coin
+*/
+ MSG_POINT_SHOP_NHN = 0x50a,
+#endif
+#if PACKETVER >= 20070618
+/*20070618 to latest
+일반 메시지
+Public Log
+*/
+ MSG_ST_CHAT = 0x50b,
+/*20070618 to latest
+배틀 메시지
+Battle Log
+*/
+ MSG_BT_CHAT = 0x50c,
+/*20070618 to latest
+휴대폰 인증.
+Mobile Authentication
+*/
+ MSG_PHONE_CONFIRM = 0x50d,
+/*20070618 to latest
+읽기
+Read
+*/
+ MSG_BOOK_READ = 0x50e,
+/*20070618 to latest
+자동낭독
+Auto Read
+*/
+ MSG_BOOK_AUTOREAD = 0x50f,
+/*20070618 to latest
+책갈피
+Bookmark
+*/
+ MSG_BOOK_KEEP = 0x510,
+/*20070618 to latest
+이전페이지
+Previous
+*/
+ MSG_BOOK_PREV = 0x511,
+/*20070618 to latest
+다음페이지
+Next
+*/
+ MSG_BOOK_NEXT = 0x512,
+/*20070618 to latest
+닫기
+Close
+*/
+ MSG_BOOK_CLOSE = 0x513,
+#endif
+#if PACKETVER >= 20070622
+/*20070622 to latest
+%s 장비가 손상되었습니다.
+%s's Equipment has been damaged.
+*/
+ MSG_DAMAGED_EQUIP = 0x514,
+/*20070622 to latest
+%s님의 %s 손상되었습니다.
+%s's %s was damaged.
+*/
+ MSG_DAMAGED_EQUIP_PARTY = 0x515,
+/*20070622 to latest
+무기가
+Weapon
+*/
+ MSG_DAMAGED_WEAPON = 0x516,
+/*20070622 to latest
+갑옷이
+Armor
+*/
+ MSG_DAMAGED_BODY = 0x517,
+/*20070622 to latest
+스킬레벨이 부족합니다. 파티가입 불능
+Insufficient Skill Level for joining a Party
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE5_2 = 0x518,
+#endif
+#if PACKETVER >= 20070628
+/*20070628 to latest
+[%s]의 무료 캐시 : %d 캐시
+[%s]'s Free Cash: %d Cash
+*/
+ MSG_POINT_SHOP2 = 0x519,
+/*20070628 to latest
+무료 캐시 사용 :
+Use Free Cash:
+*/
+ MSG_USE_FREE_POINT = 0x51a,
+/*20070628 to latest
+캐시
+Cash
+*/
+ MSG_CASH = 0x51b,
+#endif
+#if PACKETVER >= 20070710
+/*20070710 to latest
+http://payment.ro.hangame.com/index.asp
+*/
+ MSG_SETTLE_WEB_URL_HANGAME = 0x51c,
+/*20070710 to 20090603
+그라비티 회원 정보동의를 하셔야 사용할수있습니다.
+20090610 to latest
+그라비티 회원 정보동의를 하셔야 사용할 수 있습니다.
+You need to accept the Privacy Policy from Gravity in order to use the service.
+*/
+ MSG_BAN_GRAVITY_MEM_AGREE = 0x51d,
+/*20070710 to latest
+이용약관에 동의를 하셔야 본 서비스를 이용하실 수 있습니다.
+You need to accept the User Agreement in order to use the service.
+*/
+ MSG_BAN_GAME_MEM_AGREE = 0x51e,
+/*20070710 to 20080520
+존재하지 않는 한게임 ID이거나 잘못된 ID입니다.
+20080527 to latest
+입력하신 아이디와 비밀번호가 등록된 정보와 일치하지 않습니다.
+Incorrect or nonexistent ID.
+*/
+ MSG_BAN_HAN_VALID = 0x51f,
+#endif
+#if PACKETVER >= 20070711
+/*20070711 to 20080603
+ 정말로 '%s'아이템을 구매하시겠습니까?, 일반 %d캐시, 무료 %d캐시가 차감됩니다.
+20080610 to latest
+ 본 아이템은 청약 철회나 환불 대상에서 제외되는 아이템입니다. 정말로 '%s'아이템을 구매하시겠습니까?, 일반 %d캐시, 무료 %d캐시가 차감됩니다.
+*/
+ MSG_BUY_RECONFIRM2 = 0x520,
+#endif
+#if PACKETVER >= 20070718
+/*20070718 to latest
+%d시간이 경과하였습니다.
+%d hour(s) has passed.
+*/
+ MSG_NOTIFY_PLAYTIME1 = 0x521,
+/*20070718 to latest
+%d시간 %d분이 경과하였습니다.
+%d hour(s) %d minute(s) has passed.
+*/
+ MSG_NOTIFY_PLAYTIME2 = 0x522,
+/*20070718 to latest
+게임을 종료하세요, 경험치 및 모든게 50%로 조정됩니다
+Please stop playing the game, and take a break. Exp and other features will be reduced to 50%.
+*/
+ MSG_WARNING_MSG1 = 0x523,
+/*20070718 to latest
+불건전 시간대에 접어들었습니다. 게임을 종료하세요, 경험치 및 모든게 0%로 조정됩니다
+Please stop playing the game since you'll need to rest. Exp and other features will be fixed to 0%.
+*/
+ MSG_WARNING_MSG2 = 0x524,
+#endif
+#if PACKETVER >= 20070724
+/*20070724 to latest
+퀘스트 목록
+Quest List
+*/
+ MSG_QUESTWIN = 0x525,
+#endif
+#if PACKETVER >= 20070807
+/*20070807 to latest
+RO SHOP
+RO Shop
+*/
+ MSG_RO_SHOP = 0x526,
+#endif
+#if PACKETVER >= 20070821
+/*20070821 to 20070904
+메모리얼던젼 '%s'이 예약되었습니다.
+20070911 to latest
+메모리얼던젼 '%s'의 예약이 알수없는 이유로 실패 하였습니다.
+Memorial Dungeon, '%s' is booked.
+*/
+ MSG_MDUNGEON_SUBSCRIPTION_ERROR_UNKNOWN = 0x527,
+/*20070821 to 20070904
+메모리얼던젼 '%s' 예약이 실패했습니다.
+20070911 to latest
+메모리얼던젼 '%s'의 예약이 예약중복으로 실패 하였습니다.
+Failed to book Memorial Dungeon, '%s'.
+*/
+ MSG_MDUNGEON_SUBSCRIPTION_ERROR_DUPLICATE = 0x528,
+/*20070821 to 20070904
+메모리얼던젼 '%s' 이미 예약중입니다.
+20070911 to latest
+메모리얼던젼 '%s'의 예약이 권한문제로 실패 하였습니다.
+Memorial Dungeon, '%s' is already booked.
+*/
+ MSG_MDUNGEON_SUBSCRIPTION_ERROR_RIGHT = 0x529,
+/*20070821 to 20070904
+메모리얼던젼 '%s'가 생성 되었습니다
+ 5분내에 입장하세요.
+20070911 to latest
+메모리얼던젼 '%s'의 예약이 중복생성요청으로 실패하였습니다.
+Memorial Dungeon, '%s' is created.
+ Please enter in 5 minutes.
+*/
+ MSG_MDUNGEON_SUBSCRIPTION_ERROR_EXIST = 0x52a,
+/*20070821 to 20070904
+메모리얼던젼 '%s' 생성에 실패했습니다.
+ 나중에 다시 시도하세요.
+20070911 to latest
+메모리얼던젼 '%s'의 예약취소가 실패 하였습니다.
+Failed to create Memorial Dungeon, '%s'.
+ Please try again.
+*/
+ MSG_MDUNGEON_SUBSCRIPTION_CANCEL_FAIL = 0x52b,
+/*20070821 to latest
+상대방이 파티 초대 거부 상태입니다.
+The character blocked the party invitation.
+*/
+ MSG_JOINMSG_REFUSE = 0x52c,
+#endif
+#if PACKETVER >= 20070828
+/*20070828 to latest
+모든 파티 초대를 거부합니다.
+Block all party invitations.
+*/
+ MSG_INVITE_PARTY_REFUSE = 0x52d,
+/*20070828 to latest
+모든 파티 초대를 수락합니다.
+Allow all party invitations.
+*/
+ MSG_INVITE_PARTY_ACCEPT = 0x52e,
+#endif
+#if PACKETVER >= 20070904
+/*20070904 to latest
+착용하시면 이 아이템은 영구 귀속됩니다. 착용하시겠습니까?
+This item will be permanently bound to this character once it is equipped. Do you really want to equip this item?
+*/
+ MSG_YOURITEM_EQUIP = 0x52f,
+/*20070904 to latest
+%s 아이템이 귀속되었습니다.
+%s is now permanently bound to this character.
+*/
+ MSG_YOURITEM_EQUIPED = 0x530,
+/*20070904 to latest
+캐시가 부족합니다. 무료 캐시 포인트를 입력해 주시기 바랍니다.
+You do not have enough Kafra Credit Points. Please enter whether you have free credit points.
+*/
+ MSG_BUY_TO_FREE_POINT = 0x531,
+/*20070904 to latest
+파티 가입요청
+Request to Join Party
+*/
+ MSG_REQ_JOIN_PARTY3 = 0x532,
+#endif
+#if PACKETVER >= 20070912
+/*20070912 to latest
+공성 정보 메시지 표시
+Display WOE Info
+*/
+ MSG_VIEW_SIEGE_INFO_MSG = 0x533,
+/*20070912 to latest
+메모리얼던젼 '%s'의 예약이 취소 되었습니다.
+Memorial Dungeon %s's reservation has been canceled.
+*/
+ MSG_MDUNGEON_SUBSCRIPTION_CANCEL_SUCCESS = 0x534,
+/*20070912 to latest
+메모리얼던젼 '%s' 생성에 실패하였습니다. 다시 시도 하세요.
+Failed to create Memorial Dungeon %s. Please try again.
+*/
+ MSG_MDUNGEON_CREATE_FAIL = 0x535,
+/*20070912 to latest
+이 장소에서는 사용할 수 없는 스킬입니다.
+This skill cannot be used within this area.
+*/
+ MSG_IMPOSSIBLE_SKILL_AREA = 0x536,
+/*20070912 to latest
+이 장소에서는 사용할 수 없는 아이템입니다.
+This item cannot be used within this area.
+*/
+ MSG_IMPOSSIBLE_USEITEM_AREA = 0x537,
+#endif
+#if PACKETVER >= 20070918
+/*20070918 to latest
+메모리얼 던전
+Memorial Dungeon
+*/
+ MSG_MEMORIAL_DUN = 0x538,
+/*20070918 to latest
+%s 대기중
+%s in Standby
+*/
+ MSG_MEMORIAL_DUN_WAITING = 0x539,
+/*20070918 to latest
+%s 입장 가능
+%s Available
+*/
+ MSG_MEMORIAL_DUN_READY = 0x53a,
+/*20070918 to 20071120
+%s 내부
+20071127 to latest
+%s 진행중
+%s in Progress
+*/
+ MSG_MEMORIAL_DUN_IN = 0x53b,
+/*20070918 to latest
+시간 안에 입장하지 않아 메모리얼 던전이 사라졌습니다.
+No one entered the Memorial Dungeon within its duration; the dungeon has disappeared.
+*/
+ MSG_MEMORIAL_DUN_OUT1 = 0x53c,
+/*20070918 to latest
+이용하시려면 이용 신청을 처음부터 다시 해주시기 바랍니다.
+Please apply for dungeon entry again to play in this dungeon.
+*/
+ MSG_MEMORIAL_DUN_OUT2 = 0x53d,
+/*20070918 to latest
+대기 순위 : ^ff0000%d^000000
+Your Standby Priority: ^ff0000%d^000000
+*/
+ MSG_MEMORIAL_DUN_PRIORITY = 0x53e,
+/*20070918 to latest
+^ff0000%s^000000 내에 입장하지 않을 경우 신청하신 던전이 삭제 됩니다.
+The requested dungeon will be removed if you do not enter within ^ff0000%s^000000.
+*/
+ MSG_MEMORIAL_DUN_NOTIFY = 0x53f,
+/*20070918 to latest
+던전 미션 제한 시간 :
+Dungeon Mission Time Limit:
+*/
+ MSG_MEMORIAL_DUN_NOTIFY2 = 0x540,
+/*20070918 to latest
+메모리얼 던전 예약이 취소되었습니다.
+The Memorial Dungeon reservation has been canceled.
+*/
+ MSG_MEMORIAL_DUN_CANCEL = 0x541,
+/*20070918 to latest
+메모리얼 던전이 유지 시간 제한에 의해 파괴되었습니다.
+The Memorial Dungeon duration expired; it has been destroyed.
+*/
+ MSG_MEMORIAL_DUN_LIVE_TIME_OUT = 0x542,
+/*20070918 to latest
+메모리얼 던전이 입장 시간 제한에 의해 파괴되었습니다.
+The Memorial Dungeon's entry time limit expired; it has been destroyed.
+*/
+ MSG_MEMORIAL_DUN_ENTER_TIME_OUT = 0x543,
+/*20070918 to latest
+메모리얼 던전이 삭제 되었습니다.
+The Memorial Dungeon has been removed.
+*/
+ MSG_MEMORIAL_DUN_DESTROY_REQUEST = 0x544,
+/*20070918 to latest
+메모리얼 던전에 시스템 오류가 발생하였습니다. 정상적인 게임 진행을 위해 재접속을 해주십시오.
+A system error has occurred in the Memorial Dungeon. Please relog in to the game to continue playing.
+*/
+ MSG_MEMORIAL_DUN_ERROR = 0x545,
+/*20070918 to latest
+사용할 수 없는 슬롯입니다.
+This slot is not usable.
+*/
+ MSG_FR_INVALID_SLOT = 0x546,
+/*20070918 to latest
+Base Level이 15를 넘었습니다.
+Your Base Level is over 15.
+*/
+ MSG_FR_BASELVL = 0x547,
+/*20070918 to latest
+Job Level이 15를 넘었습니다.
+Your Job Level is over 15.
+*/
+ MSG_FR_INVALID_JOBLV = 0x548,
+/*20070918 to latest
+해당슬롯 캐릭터에 직업군의 상인이므로 게임을 할 수 없습니다.
+You cannot play the Merchant class character in this slot.
+*/
+ MSG_FR_JOB = 0x549,
+/*20070918 to latest
+추후 사용예정
+Not Yet Implemented
+*/
+ MSG_FR_MAP = 0x54a,
+/*20070918 to latest
+만들수 있는 케릭터 슬롯이 아닙니다.
+You are not eligible to open the Character Slot.
+*/
+ MSG_FR_ERR_MKCHAR_INVALID_SLOT = 0x54b,
+/*20070918 to latest
+삭제할 수 없는 케릭터 입니다.
+This character cannot be deleted.
+*/
+ MSG_FR_ERR_DELCHAR_INVALID_SLOT = 0x54c,
+/*20070918 to latest
+상대방의 장비창이 공개되어 있지 않습니다.
+This character's equipment information is not open to the public.
+*/
+ MSG_OPEN_EQUIPEDITEM_REFUSED = 0x54d,
+/*20070918 to latest
+장비창을 공개하지 않습니다.
+Equipment information not open to the public.
+*/
+ MSG_OPEN_EQUIPEDITEM_REFUSE = 0x54e,
+/*20070918 to latest
+장비창을 공개합니다.
+Equipment information open to the public.
+*/
+ MSG_OPEN_EQUIPEDITEM_ACCEPT = 0x54f,
+/*20070918 to latest
+(%s)님 장비창 보기
+Check %s's Equipment Info
+*/
+ MSG_REQ_VIEW_OTHERUSER = 0x550,
+/*20070918 to latest
+%s의 장착아이템
+'%s's Equipment
+*/
+ MSG_OTHERUSER_EQUIPED_ITEM = 0x551,
+/*20070918 to latest
+장비창 공개
+Show Equip
+*/
+ MSG_OPEN_EQUIPED_ITEM = 0x552,
+#endif
+#if PACKETVER >= 20071002
+/*20071002 to latest
+프리미엄 서비스를 이용해 주시기 바랍니다.
+This service is only available for premium users.
+*/
+ MSG_NEED_PREMIUM_SERVICE = 0x553,
+/*20071002 to latest
+무료 사용자는 최대 50000제니까지 소유할 수 있습니다.
+Free Trial users can only hold up to 50,000 zeny.
+*/
+ MSG_FR_INVALID_MONEY = 0x554,
+#endif
+#if PACKETVER >= 20071009
+/*20071009 to latest
+전장채팅 상태가 되었습니다.
+Battlefield Chat has been activated.
+*/
+ MSG_BATTLECHAT_ON = 0x555,
+/*20071009 to latest
+전장채팅 상태가 해제되었습니다.
+Battlefield Chat has been deactivated.
+*/
+ MSG_BATTLECHAT_OFF = 0x556,
+#endif
+#if PACKETVER >= 20071017
+/*20071017 to latest
+용병정보 - 몬스터타입
+Mercenary Info - Monster Type
+*/
+ MSG_MER_INFO_TYPE_MONSTER = 0x557,
+#endif
+#if PACKETVER >= 20071106
+/*20071106 to latest
+전체 맵 보기
+World Map
+*/
+ MSG_RO_MAP = 0x558,
+#endif
+#if PACKETVER >= 20071127
+/*20071127 to latest
+메모리얼던젼이 CLOSE 상태입니다.
+The Memorial Dungeon is now closed.
+*/
+ MSG_MEMORIAL_DUN_CLOSE = 0x559,
+#endif
+#if PACKETVER >= 20071204
+/*20071204 to latest
+^ff0000^ff0000용병을 삭제합니다.^000000^000000 삭제하실 경우 지금까지 키운 내역이 모두 삭제됩니다. 계속하시겠습니까?
+^ff0000Deleting a Mercenary Soldier^000000 will also delete his growth history. Do you really want to proceed with the deletion?
+*/
+ MSG_DELETE_MER = 0x55a,
+#endif
+#if PACKETVER >= 20071211
+/*20071211 to latest
+메모리얼던젼이 OPEN 상태입니다.
+The Memorial Dungeon is now open.
+*/
+ MSG_MEMORIAL_DUN_OPEN = 0x55b,
+#endif
+#if PACKETVER >= 20080108
+/*20080108 to latest
+위의 계정은 아직 통신 안전 키에 연결되지 않았습니다. 먼저 안전 키를 해제하신 뒤 게임에 접속해 주십시오.
+This account has not been confirmed by connecting to the safe communication key. Please connect to the key first, and then log into the game.
+*/
+ MSG_PHONE_BLOCK = 0x55c,
+/*20080108 to latest
+한 아이피로 접속 가능한 유저수를 초과하였습니다.
+The number of accounts connected to this IP has exceeded the limit.
+*/
+ MSG_BAN_PC_IP_LIMIT_ACCESS = 0x55d,
+#endif
+#if PACKETVER >= 20080219
+/*20080219 to latest
+새로운 퀘스트를 받았습니다
+You have received a new quest.
+*/
+ MSG_QUESTGET = 0x55e,
+#endif
+#if PACKETVER >= 20080401
+/*20080401 to latest
+^777777습득조건 :
+^CC3399Requirement:
+*/
+ MSG_FINDTEXT_TO_SKILLDES = 0x55f,
+/*20080401 to latest
+스킬 설명 보기
+View Skill Info
+*/
+ MSG_VIEW_SKILL_DESCRIPT = 0x560,
+#endif
+#if PACKETVER >= 20080408
+/*20080408 to latest
+사용된 스킬 포인트는 다시 되돌릴 수 없습니다. 적용하시겠습니까?
+Once used, skill points cannot be re-allocated. Would you like to use the skill points?
+*/
+ MSG_APPLY_SKILL_UP = 0x561,
+/*20080408 to latest
+노비스·1차직업
+1st
+*/
+ MSG_1TABNAME_SKILLWND = 0x562,
+/*20080408 to latest
+2차·전승직업
+2nd
+*/
+ MSG_2TABNAME_SKILLWND = 0x563,
+/*20080408 to 20080520
+불법프로그램을 사용하였거나 혹은 해킹을 시도한 계정입니다. 블럭시간 : %s
+20080527 to latest
+불법프로그램을 사용하였거나 혹은 해킹을 시도한 계정입니다. 블럭종료시간 : %s
+This account has been used for illegal program or hacking program. Block Time: %s
+20081217 to 20081218
+불법프로그램을 사용하였거나 해킹을 시도한 계정이거나 그라비티 이전을 신청한 한게임 계정입니다. 블럭종료시간 : %s
+*/
+ MSG_RE17 = 0x564,
+/*20080408 to latest
+불법프로그램이 실행, 바이러스 감염, 또는 해킹툴이 설치되어 있을 가능성이 있습니다. 정상 클라이언트를 실행하여 주시기 바랍니다. 함께 만드는 밝은 라그나로크가 될 수 있도록 노력하고 있습니다.
+The possibility of exposure to illegal program, PC virus infection or Hacking Tool has been detected. Please execute licensed client. Our team is trying to make a best environment for Ro players.
+*/
+ MSG_RE18 = 0x565,
+#endif
+#if PACKETVER >= 20080415
+/*20080415 to latest
+당신은 지금 건강한 게임 시간 대에 있습니다, 즐거운 게임이 되시길 바랍니다
+You are currently playing in the best game environment. Please enjoy the Ragnarok.
+*/
+ MSG_WARNING_MSG3 = 0x566,
+/*20080415 to latest
+ 몬스터 사냥을 통해 얻을 수 있는 Job경험치가 30분간 1.5배로 증가합니다.
+*/
+ MSG_PLUSONLYJOBEXP = 0x567,
+/*20080415 to latest
+ 몬스터 사냥을 통해 얻을 수 있는 경험치가 30분간 1.25배로 증가합니다.
+*/
+ MSG_PLUSEXP14532 = 0x568,
+/*20080415 to latest
+ 몬스터 사냥을 통해 얻을 수 있는 경험치가 30분간 2배로 증가합니다.
+EXP points from hunting monsters are increased by 100%% for 30 minutes.
+*/
+ MSG_PLUSEXP14533 = 0x569,
+/*20080415 to latest
+ 몬스터 사냥을 통해 얻을 수 있는 경험치가 60분간 1.5배로 증가합니다.
+EXP points from hunting monsters are increased by 50% for 60 minutes.
+*/
+ MSG_PLUSEXP12312 = 0x56a,
+#endif
+#if PACKETVER >= 20080527
+/*20080527 to latest
+이 맵에서는 파티를 결성할 수 없습니다.
+Unable to organize a party in this map.
+*/
+ MSG_NOPARTY = 0x56b,
+/*20080527 to latest
+(%s)님은 파티에 참여할 수 없는 맵에 있습니다.
+(%s) are currently in restricted map to join a party.
+*/
+ MSG_NOPARTY2 = 0x56c,
+/*20080527 to 20080603
+간편아이템샵.
+20080610 to latest
+간편아이템샵
+Simple Item Shop
+*/
+ MSG_SIMPLE_CASH_SHOP = 0x56d,
+/*20080527 to latest
+소지 한코인 : %d 한코인
+Han Coin: %d Han Coin
+*/
+ MSG_SIMPLE_POINT_SHOP_NHN = 0x56e,
+/*20080527 to latest
+소지 캐시 : %d 캐시
+RoK Point: %d RoK Point
+*/
+ MSG_SIMPLE_POINT_SHOP = 0x56f,
+/*20080527 to latest
+무료 캐시 : %d 캐시
+Free Cash: %d Cash
+*/
+ MSG_SIMPLE_POINT_SHOP2 = 0x570,
+#endif
+#if PACKETVER >= 20080715
+/*20080715 to latest
+본서버 유저는 프리서버에 접속할수 없습니다.
+An user of this server cannot connect to free server
+*/
+ MSG_MAIN_USER_CANONT_LOGIN_FREE_SERVER = 0x571,
+/*20080715 to latest
+유효기간이 지난 비밀번호 입니다. 다시 로그인하여주십시오.
+Your password has expired. Please log in again
+*/
+ MSG_INVALID_ONETIMELIMIT = 0x572,
+#endif
+#if PACKETVER >= 20080903
+/*20080903 to latest
+3차직업
+3rd
+*/
+ MSG_3TABNAME_SKILLWND = 0x573,
+#endif
+#if PACKETVER >= 20080917
+/*20080917 to latest
+이 스킬을 사용할 수 없는 대상입니다.
+This skill can't be used on that target.
+*/
+ MSG_USESKILL_FAIL_TOTARGET = 0x574,
+/*20080917 to latest
+안실라 소유 개수가 초과하여 스킬을 사용할 수 없습니다.
+You can't use skill because you have exceeded the number Ancilla possession limit
+*/
+ MSG_USESKILL_FAIL_ANCILLA_NUMOVER = 0x575,
+/*20080917 to latest
+성수가 필요합니다.
+Unable to use the skill to exceed the number of Ancilla.
+*/
+ MSG_USESKILL_FAIL_HOLYWATER = 0x576,
+/*20080917 to latest
+안실라가 필요합니다.
+Holy water is required.
+*/
+ MSG_USESKILL_FAIL_ANCILLA = 0x577,
+/*20080917 to latest
+일정거리 내에 중복될 수 없습니다.
+Ancilla is required.
+*/
+ MSG_USESKILL_FAIL_DUPLICATE_RANGEIN = 0x578,
+/*20080917 to latest
+이 스킬을 사용하기 위해서는 다른 스킬이 필요합니다.
+Cannot be duplicated within a certain distance.
+*/
+ MSG_USESKILL_FAIL_NEED_OTHER_SKILL = 0x579,
+#endif
+#if PACKETVER >= 20080924
+/*20080924 to latest
+이 맵에서는 채팅을 할 수 없습니다.
+This skill requires other skills to be used.
+*/
+ MSG_NO_CHATTING = 0x57a,
+#endif
+#if PACKETVER >= 20081001
+/*20081001 to latest
+3시간이 지났습니다.
+Chat is not allowed in this map
+*/
+ MSG_VET_3HOUR = 0x57b,
+/*20081001 to latest
+5시간이 지났습니다.
+3 hours have passed.
+*/
+ MSG_VET_5HOUR = 0x57c,
+#endif
+#if PACKETVER >= 20081008
+/*20081008 to latest
+게임가드 초기화 에러 또는 구버전의 게임가드 파일입니다. 게임가드 셋업파일을 다시 설치하고 게임을 실행해 보시기 바랍니다.
+5 hours have passed.
+*/
+ MSG_NPGAMEMON_ERROR_GAMEGUARD = 0x57d,
+/*20081008 to latest
+ini 파일이 없거나 변조되었습니다. 게임가드 셋업파일을 설치하면 해결 할 수 있습니다.
+Game guard initialization error or previous version game guard file is installed. Please re-install the setup file and try again
+*/
+ MSG_NPGMUP_ERROR_PARAM = 0x57e,
+/*20081008 to latest
+게임가드와 충돌 프로그램이 발견되었습니다.
+Either ini file is missing or altered. Install game guard setup file to fix the problem
+*/
+ MSG_NPGG_ERROR_COLLISION = 0x57f,
+#endif
+#if PACKETVER >= 20081112
+/*20081112 to latest
+잘못된 클라이언트입니다. 정상적인 클라이언트를 실행하여 주십시요.
+There is a program found that conflicts with game guard
+*/
+ MSG_PROOF_ERROR = 0x580,
+#endif
+#if PACKETVER >= 20081203
+/*20081203 to latest
+모바일 인증을 받아주시기 바랍니다.
+Incorrect client. Please run a normal client
+*/
+ MSG_MOBILE_LOCKSERVER = 0x581,
+#endif
+#if PACKETVER >= 20081210
+/*20081210 to latest
+모바일 인증에 실패하였습니다.
+Thank you to accept mobile authentication.
+*/
+ MSG_FAILED_MOBILE_LOCKSERVER = 0x582,
+#endif
+#if PACKETVER >= 20081217
+/*20081217 to latest
+이스킬은 혼자서 사용할수 없습니다.
+This skill can't be used alone
+*/
+ MSG_USESKILL_FAIL_NEED_HELPER = 0x583,
+/*20081217 to latest
+이스킬은 특정방향으로만 사용할수 있습니다.
+This skill can be used to certain direction only
+*/
+ MSG_USESKILL_FAIL_INVALID_DIR = 0x584,
+/*20081217 to latest
+더이상 소환할수 없습니다.
+Cannot summon spheres anymore.
+*/
+ MSG_USESKILL_FAIL_SUMMON = 0x585,
+/*20081217 to latest
+소환된 구체가 존재하지 않습니다.
+*/
+ MSG_USESKILL_FAIL_SUMMON_NONE = 0x586,
+/*20081217 to latest
+사용가능한 모방스킬이 존재하지 않습니다.
+There is no imitation skills available.
+*/
+ MSG_USESKILL_FAIL_IMITATION_SKILL_NONE = 0x587,
+/*20081217 to latest
+이 스킬은 중복해서 사용할수 없습니다.
+You can't reuse this skill
+*/
+ MSG_USESKILL_FAIL_DUPLICATE = 0x588,
+/*20081217 to latest
+스킬을 사용할수 없는 상태입니다.
+Skill can't be used in this state
+*/
+ MSG_USESKILL_FAIL_CONDITION = 0x589,
+/*20081217 to latest
+아이템별 최대 소지량을 초과하여 가질 수 없습니다.
+You have exceeded the maximum amount of possession of another item.
+*/
+ MSG_PICKUP_MAXCOUNT_LIMIT = 0x58a,
+#endif
+#if PACKETVER >= 20090204
+/*20090204 to latest
+관리자 권한이 없습니다. 프로그램 최초 실행은 관리자 권한으로 실행하셔야 합니다.
+No administrative privileges. Must first run the program with administrator privileges.
+*/
+ MSG_NPK_ERROR_NOTADMIN = 0x58b,
+/*20090204 to latest
+nProtect KeyCrypt 드라이버 버전이 맞지 않습니다. 시스템 재 부팅 후에 새로 실행 시켜 주십시오.
+nProtect KeyCrypt not the same. Please restart the program and the computer first.
+*/
+ MSG_NPK_ERROR_DRIVERVERSION = 0x58c,
+/*20090204 to latest
+WindowXP 호환성 모드를 사용하고 계십니다. 현재 프로그램에서 호환성 모드를 제거하였습니다. 프로그램을 새로 시작해 주십시오.
+Currently wearing WindowXP Compatibility Mode. The program now removes Compatibility Mode. Please restart the program.
+*/
+ MSG_NPK_ERROR_VERIFYVERSION = 0x58d,
+/*20090204 to latest
+PS/2 키로거가 존재합니다.
+PS/2 keyloggers exist.
+*/
+ MSG_DETECT_PS2KEYLOGGER = 0x58e,
+/*20090204 to latest
+USB 키보드 드라이버 해킹 시도가 탐지되었습니다.
+USB Keylogging attempt was detected.
+*/
+ MSG_DETECT_USBKEYLOGGER = 0x58f,
+/*20090204 to latest
+HHD 모니터링 툴이 탐지되었습니다.
+HHD monitoring tool has been detected.
+*/
+ MSG_DETECT_HHDUSBH = 0x590,
+/*20090204 to latest
+페인트붓이 필요합니다.
+Paintbrush is required.
+*/
+ MSG_USESKILL_FAIL_PAINTBRUSH = 0x591,
+/*20090204 to 20090401
+그림물감이 필요합니다.
+20090408 to latest
+서페이스페인트가 필요합니다.
+Paint is required.
+*/
+ MSG_USESKILL_FAIL_II_SURFACE_PAINTS = 0x592,
+/*20090204 to latest
+지정한 위치에 스킬을 사용할수 없습니다.
+Use the skills that are not at the specified location.
+*/
+ MSG_USESKILL_FAIL_POS = 0x593,
+/*20090204 to latest
+도우미의 SP가 부족합니다.
+Not enough SP.
+*/
+ MSG_USESKILL_FAIL_HELPER_SP_INSUFFICIENT = 0x594,
+#endif
+#if PACKETVER >= 20090211
+/*20090211 to 20090218
+생성 가능 캐릭터 수는 9개입니다!!(임시)
+20090225 to latest
+캐릭터 선택창의 캐릭터가 %d개를 초과하면 게임에 접속할 수 없습니다. 불필요한 캐릭터를 삭제해주십시오.
+Character %d is character selection window cannot connect to the game that exceeds the total. Please remove unwanted characters.
+*/
+ MSG_BAN_OVER_CHARACTER_LIST = 0x595,
+#endif
+#if PACKETVER >= 20090225
+/*20090225 to latest
+목캔디가 필요합니다.
+Throat Lozenge is required.
+*/
+ MSG_USESKILL_FAIL_II_NECK_CANDY = 0x596,
+/*20090225 to latest
+안타까운눈물이 필요합니다.
+Painful Tears is required.
+*/
+ MSG_USESKILL_FAIL_II_MISERABLE_TEAR = 0x597,
+/*20090225 to latest
+목 보호 캔디가 필요합니다.
+Throat Lozenge is required.
+*/
+ MSG_USESKILL_FAIL_II_PROTECT_NECK_CANDY = 0x598,
+/*20090225 to latest
+웨폰 블로킹의 연계로만 사용가능합니다.
+Cooperation is only available with Weapon Blocking.
+*/
+ MSG_USESKILL_FAIL_GC_WEAPONBLOCKING = 0x599,
+/*20090225 to latest
+길로틴크로스의 독을 바른 무기가 필요합니다.
+Poisoned weapons is required.
+*/
+ MSG_USESKILL_FAIL_GC_POISONINGWEAPON = 0x59a,
+#endif
+#if PACKETVER >= 20090304
+/*20090304 to latest
+마도기어 탑승시에만 사용가능합니다.
+Item can only be used when Mado Gear is mounted.
+*/
+ MSG_USESKILL_FAIL_MADOGEAR = 0x59b,
+/*20090304 to latest
+발칸블릿이 필요합니다.
+Vulcan Bullet is required.
+*/
+ MSG_USESKILL_FAIL_II_VULCANBULLET = 0x59c,
+/*20090304 to latest
+마도기어 연료가 필요합니다.
+Mado Gear Fuel is required.
+*/
+ MSG_USESKILL_FAIL_II_FUELGAS = 0x59d,
+/*20090304 to latest
+액체냉각탄이 필요합니다.
+Liquid Cold Bullet is required.
+*/
+ MSG_USESKILL_FAIL_II_COLDSLOWERBULLET = 0x59e,
+/*20090304 to latest
+캐논볼을 장전 하세요.
+Please load a Cannon Ball.
+*/
+ MSG_USESKILL_FAIL_CANONBALL = 0x59f,
+/*20090304 to latest
+미도기어 가속장치를 착용하세요.
+Please equipped with a Mado Gear Accelerator.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_ACCELERATION = 0x5a0,
+/*20090304 to latest
+호버링부스터를 착용하세요.
+Please equipped with a Hovering Booster.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_HOVERING_BOOSTER = 0x5a1,
+/*20090304 to latest
+[톡신] 독 효과가 무기에 적용되었습니다.
+[Toxin] Poison effect was applied to the weapon.
+*/
+ MSG_TOXIN = 0x5a2,
+/*20090304 to latest
+[패럴라이즈] 독 효과가 무기에 적용되었습니다.
+[Paralysis] Poison effect was applied to the weapon.
+*/
+ MSG_PARALYZE = 0x5a3,
+/*20090304 to latest
+[베놈블리드] 독 효과가 무기에 적용되었습니다.
+[Fatigue] Poison effect was applied to the weapon.
+*/
+ MSG_VENOMBLEED = 0x5a4,
+/*20090304 to latest
+[매직 머쉬룸] 독 효과가 무기에 적용되었습니다.
+[Laughing] Poison effect was applied to the weapon.
+*/
+ MSG_MAGICMUSHROOM = 0x5a5,
+/*20090304 to latest
+[데스 허트] 독 효과가 무기에 적용되었습니다.
+[Disheart] Poison effect was applied to the weapon.
+*/
+ MSG_DEATHHURT = 0x5a6,
+/*20090304 to latest
+[파이렉시아] 독 효과가 무기에 적용되었습니다.
+[Pyrexia] Poison effect was applied to the weapon.
+*/
+ MSG_PHYREXIA = 0x5a7,
+/*20090304 to latest
+[오블리비언 커즈] 독 효과가 무기에 적용되었습니다.
+[Oblivion] Poison effect was applied to the weapon.
+*/
+ MSG_OBLIANCURSE = 0x5a8,
+/*20090304 to latest
+[리치 엔드] 독 효과가 무기에 적용되었습니다.
+[Leech] Poison effect was applied to the weapon.
+*/
+ MSG_RICHEND = 0x5a9,
+#endif
+#if PACKETVER >= 20090311
+/*20090311 to latest
+호버링상태에서만 사용가능합니다.
+Can only be used in Hovering state.
+*/
+ MSG_USESKILL_FAIL_MADOGEAR_HOVERING = 0x5aa,
+/*20090311 to latest
+자폭장치를 장착하세요.
+Please equip a Self-Destruct Mechanism.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_SELFDESTRUCTION_DEVICE = 0x5ab,
+/*20090311 to latest
+셰이프쉬프터를 장착하세요.
+Please equip a Shape Shift.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_SHAPESHIFTER = 0x5ac,
+/*20090311 to latest
+길로틴독이 필요합니다.
+Guillotine Cross Poison is required.
+*/
+ MSG_USESKILL_FAIL_GUILLONTINE_POISON = 0x5ad,
+/*20090311 to latest
+냉각장치를 장착하세요.
+Please equipped with a Cooling System.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_COOLING_DEVICE = 0x5ae,
+/*20090311 to latest
+자기장필드생성기를 착용하세요.
+Please equipped with a Magnetic Field Generator.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_MAGNETICFIELD_GENERATOR = 0x5af,
+/*20090311 to latest
+베리어생성기를 착용하세요.
+Please equipped with a Barrier Generator.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_BARRIER_GENERATOR = 0x5b0,
+/*20090311 to latest
+광학미채발생기를 착용하세요.
+Please equipped with a Optical Camouflage Generator.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_OPTICALCAMOUFLAGE_GENERATOR = 0x5b1,
+/*20090311 to latest
+리페어키트를 착용하세요.
+Please equipped with a Repair Kit.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_REPAIRKIT = 0x5b2,
+/*20090311 to latest
+몽키 스패너가 필요합니다.
+Monkey Wrench is required.
+*/
+ MSG_USESKILL_FAIL_II_MONKEY_SPANNER = 0x5b3,
+#endif
+#if PACKETVER >= 20090318
+/*20090318 to latest
+[%s] 스킬을 시전 할 수 없습니다.
+[%s] Cannot use the skills due to cooldown delay.
+*/
+ MSG_SKILLINTERVAL2 = 0x5b4,
+/*20090318 to latest
+%d레벨 이상은 삭제가 불가능합니다.
+Deletion is impossible for over level %d
+*/
+ MSG_LEMIT_DELETE_LEVEL = 0x5b5,
+/*20090318 to latest
+마도기어 탑승시에는 사용할수 없습니다.
+*/
+ MSG_USESKILL_FAIL_MADOGEAR_RIDE = 0x5b6,
+#endif
+#if PACKETVER >= 20090320
+/*20090320 to latest
+드래곤 내리기
+Dismount Dragon
+*/
+ MSG_DRAGONOFF = 0x5b7,
+/*20090320 to latest
+마도기어 내리기
+Dismount Magic Gear
+*/
+ MSG_MADOOFF = 0x5b8,
+#endif
+#if PACKETVER >= 20090330
+/*20090330 to latest
+소비
+I
+*/
+ MSG_STORE_TABNAME_0 = 0x5b9,
+/*20090330 to latest
+캐쉬
+Cash
+*/
+ MSG_STORE_TABNAME_1 = 0x5ba,
+/*20090330 to latest
+방어구
+Armors
+*/
+ MSG_STORE_TABNAME_2 = 0x5bb,
+/*20090330 to latest
+무기
+Weapons
+*/
+ MSG_STORE_TABNAME_3 = 0x5bc,
+/*20090330 to latest
+투사체
+Ammo
+*/
+ MSG_STORE_TABNAME_4 = 0x5bd,
+/*20090330 to latest
+카드
+Card
+*/
+ MSG_STORE_TABNAME_5 = 0x5be,
+/*20090330 to latest
+기타
+Other
+*/
+ MSG_STORE_TABNAME_6 = 0x5bf,
+#endif
+#if PACKETVER >= 20090401
+/*20090401 to latest
+클라이언트 응답시간이 초과되어 연결이 끊어집니다.
+Client response time has passed so connection is terminated
+*/
+ MSG_ERROR_HS_TIMEOUT = 0x5c0,
+/*20090401 to latest
+핵쉴드 파일의 버전이 맞지 않습니다. 클라이언트를 재설치 해주십시오.
+Incorrect version of hack shield file. Please reinstall the client
+*/
+ MSG_ERROR_DIFF_CLIENT = 0x5c1,
+#endif
+#if PACKETVER >= 20090408
+/*20090408 to latest
+마법서가 필요합니다.
+[Magic Book] is required.
+*/
+ MSG_USESKILL_FAIL_SPELLBOOK = 0x5c2,
+/*20090408 to latest
+마법서가 너무 어려워서 졸음이 몰려온다.
+Feel sleepy since Magic Book is too difficult to understand.
+*/
+ MSG_USESKILL_FAIL_SPELLBOOK_DIFFICULT_SLEEP = 0x5c3,
+/*20090408 to latest
+보존포인트가 부족합니다.
+Not enough saved point.
+*/
+ MSG_USESKILL_FAIL_SPELLBOOK_PRESERVATION_POINT = 0x5c4,
+/*20090408 to latest
+더이상 마법서를 읽을수 없습니다.
+Can't read a Magic Book anymore.
+*/
+ MSG_USESKILL_FAIL_SPELLBOOK_READING = 0x5c5,
+/*20090408 to latest
+페이스페인트가 필요합니다.
+Face Paint is required.
+*/
+ MSG_USESKILL_FAIL_II_FACE_PAINTS = 0x5c6,
+/*20090408 to latest
+분장용붓이 필요합니다.
+Brush is required.
+*/
+ MSG_USESKILL_FAIL_II_MAKEUP_BRUSH = 0x5c7,
+/*20090408 to latest
+대기 시간이 초과하였습니다. 다시 로그인 해주십시오.
+Waiting time has passed. Please log in again
+*/
+ MSG_MOBILE_TIMEOVER = 0x5c8,
+/*20090408 to latest
+위험! 이미 동일한 계정이 로그인 중에 있습니다. 잠시 모바일 인증 진행을 멈추시고 비번을 수정한 뒤 재 로그인 해주십시오.
+Watch out! Same account is already logged in. Stop mobile verification and log in again after changing your password
+*/
+ MSG_MOBILE_ANOTHER_LOGIN = 0x5c9,
+/*20090408 to latest
+위험! 현재 동일한 계정이 모바일 인증 대기 중에 있습니다. 잠시 모바일 인증 진행을 멈추시고 비번을 수정한 뒤 재 로그인 해주십시오.
+Watch out! Same account is waiting for mobile verification. Stop mobile verification and log in again after changing your password
+*/
+ MSG_MOBILE_WAITING_STATE = 0x5ca,
+#endif
+#if PACKETVER >= 20090506
+/*20090506 to latest
+게임 옵션창
+Game setting window
+*/
+ MSG_ESC_OPTIONWND = 0x5cb,
+/*20090506 to latest
+그래픽 설정
+Graphics Settings
+*/
+ MSG_GRAPHIC_OPTIONWND = 0x5cc,
+/*20090506 to latest
+사운드 설정
+Sound Settings
+*/
+ MSG_SOUND_OPTIONWND = 0x5cd,
+#endif
+#if PACKETVER >= 20090514
+/*20090514 to latest
+변경 할 단축키를 누르거나, 'ESC'키를 눌러 삭제 해 주세요.
+Press a key to assign. Pressing 'ESC' will remove the assigned key.
+*/
+ MSG_HOTKEYWND_NOTICE1 = 0x5ce,
+/*20090514 to latest
+단일 키로 지정 할 수 없는 키입니다.
+Unable to specify a single key.
+*/
+ MSG_HOTKEYWND_NOTICE2 = 0x5cf,
+/*20090514 to latest
+지정 할 수 없는 키입니다.
+Unable to specify the key assigned.
+*/
+ MSG_HOTKEYWND_NOTICE3 = 0x5d0,
+/*20090514 to latest
+'%s'에 사용된 단축키와 중복됩니다. 바꾸시겠습니까?
+Duplicated with ['%s']. Do you still want to change?
+*/
+ MSG_HOTKEYWND_NOTICE4 = 0x5d1,
+/*20090514 to latest
+저장된 단축키 조합이 초기화 됩니다. 초기화 하시겠습니까?
+Initialization is stored in the shortcut key settings. Do you want to initialized?
+*/
+ MSG_HOTKEYWND_NOTICE5 = 0x5d2,
+/*20090514 to latest
+스킬바
+Skill Bar
+*/
+ MSG_HOTKEYWND_TAB1 = 0x5d3,
+/*20090514 to latest
+인터페이스
+Interface
+*/
+ MSG_HOTKEYWND_TAB2 = 0x5d4,
+/*20090514 to latest
+이모션
+Macros
+*/
+ MSG_HOTKEYWND_TAB3 = 0x5d5,
+/*20090514 to latest
+단축키 설정 창
+Shortcut Settings
+*/
+ MSG_HOTKEYWND_TITLE = 0x5d6,
+#endif
+#if PACKETVER >= 20090520
+/*20090520 to latest
+배경음
+BGM
+*/
+ MSG_BGM = 0x5d7,
+/*20090520 to latest
+효과음
+Effect
+*/
+ MSG_SOUND = 0x5d8,
+/*20090520 to latest
+스킨
+Skin
+*/
+ MSG_SKIN = 0x5d9,
+/*20090520 to latest
+채팅방 입장음만 소리남 On
+Chat room entrance sound on
+*/
+ MSG_TINGONLY_ON = 0x5da,
+/*20090520 to latest
+채팅방 입장음만 소리남 Off
+Chat room entrance sound off
+*/
+ MSG_TINGONLY_OFF = 0x5db,
+/*20090520 to latest
+/tingonly : 채팅방 입장음만 들을수있게됩니다
+/tingonly: you can hear only sound like a chat room entry.
+*/
+ MSG_EXPLAIN_TINGONLY = 0x5dc,
+/*20090520 to latest
+/주먹
+/rock
+*/
+ MSG_EMOTION_ROCK = 0x5dd,
+/*20090520 to latest
+/가위
+/scissors
+*/
+ MSG_EMOTION_SCISSOR = 0x5de,
+/*20090520 to latest
+/보
+/paper
+*/
+ MSG_EMOTION_WRAP = 0x5df,
+/*20090520 to latest
+/러브
+/love
+*/
+ MSG_EMOTION_LUV = 0x5e0,
+/*20090520 to latest
+/mobile
+*/
+ MSG_EMOTION_MOBILE = 0x5e1,
+/*20090520 to latest
+/mail
+*/
+ MSG_EMOTION_MAIL = 0x5e2,
+/*20090520 to latest
+/antenna0
+*/
+ MSG_EMOTION_ANTENNA0 = 0x5e3,
+/*20090520 to latest
+/antenna1
+*/
+ MSG_EMOTION_ANTENNA1 = 0x5e4,
+/*20090520 to latest
+/antenna2
+*/
+ MSG_EMOTION_ANTENNA2 = 0x5e5,
+/*20090520 to latest
+/antenna3
+*/
+ MSG_EMOTION_ANTENNA3 = 0x5e6,
+/*20090520 to latest
+/hum
+*/
+ MSG_EMOTION_HUM2 = 0x5e7,
+/*20090520 to latest
+/abs
+*/
+ MSG_EMOTION_ABS = 0x5e8,
+/*20090520 to latest
+/oops
+*/
+ MSG_EMOTION_OOPS = 0x5e9,
+/*20090520 to latest
+/spit
+*/
+ MSG_EMOTION_SPIT = 0x5ea,
+/*20090520 to latest
+/ene
+*/
+ MSG_EMOTION_ENE = 0x5eb,
+/*20090520 to latest
+/panic
+*/
+ MSG_EMOTION_PANIC = 0x5ec,
+/*20090520 to latest
+/whisp
+*/
+ MSG_EMOTION_WHISP = 0x5ed,
+#endif
+#if PACKETVER >= 20090527
+/*20090527 to latest
+지정안함
+Not Assigned
+*/
+ MSG_HOTKEY_NOTHING = 0x5ee,
+#endif
+#if PACKETVER >= 20090603
+/*20090603 to latest
+카트장착시에만 사용가능합니다.
+Only available when cart is mounted.
+*/
+ MSG_USESKILL_FAIL_CART = 0x5ef,
+/*20090603 to latest
+[가시나무 씨앗]이 필요합니다.
+[Thorny Seed] is required.
+*/
+ MSG_USESKILL_FAIL_II_THORNS_SEED = 0x5f0,
+/*20090603 to latest
+[흡혈 식물 씨앗]이 필요합니다.
+[Bloodsucker Seed] is required.
+*/
+ MSG_USESKILL_FAIL_II_BLOOD_SUCKER_SEED = 0x5f1,
+/*20090603 to latest
+더이상 시전할수 없습니다.
+Cannot be used anymore.
+*/
+ MSG_USESKILL_FAIL_NO_MORE_SPELL = 0x5f2,
+/*20090603 to latest
+[폭탄버섯포자]가 필요합니다.
+[Bomb Mushroom Spore] is required.
+*/
+ MSG_USESKILL_FAIL_II_BOMB_MUSHROOM_SPORE = 0x5f3,
+/*20090603 to latest
+[화염병]이 필요합니다.
+[Fire Bottle] is required.
+*/
+ MSG_USESKILL_FAIL_II_GASOLINE_BOOMB = 0x5f4,
+/*20090603 to latest
+[기름병]이 필요합니다.
+[Oil Bottle] is required.
+*/
+ MSG_USESKILL_FAIL_II_OIL_BOTTLE = 0x5f5,
+/*20090603 to latest
+[폭발가루]가 필요합니다.
+[Explosive Powder] is required.
+*/
+ MSG_USESKILL_FAIL_II_EXPLOSION_POWDER = 0x5f6,
+/*20090603 to latest
+[연막가루]가 필요합니다.
+[Smokescreen Powder] is required.
+*/
+ MSG_USESKILL_FAIL_II_SMOKE_POWDER = 0x5f7,
+/*20090603 to latest
+[최루가스]가 필요합니다.
+[Tear Gas] is required.
+*/
+ MSG_USESKILL_FAIL_II_TEAR_GAS = 0x5f8,
+/*20090603 to latest
+[염산병]이 필요합니다.
+[Acid Bottle] is required.
+*/
+ MSG_USESKILL_FAIL_II_HYDROCHLORIC_ACID_BOTTLE = 0x5f9,
+/*20090603 to latest
+[식인식물병]이 필요합니다.
+[Bottom Man-Eating Plant] is required.
+*/
+ MSG_USESKILL_FAIL_II_HELLS_PLANT_BOTTLE = 0x5fa,
+/*20090603 to latest
+[만드라고라의 화분]이 필요합니다.
+[Pot of Mandragora] is required.
+*/
+ MSG_USESKILL_FAIL_II_MANDRAGORA_FLOWERPOT = 0x5fb,
+/*20090603 to latest
+파티장 위임
+Party delegation
+*/
+ MSG_YIELD_PARTYMASTER = 0x5fc,
+/*20090603 to latest
+정말 파티장을 위임하시겠습니까?
+Do you want to delegate the real party?
+*/
+ MSG_DO_YOU_REALLY_WANT_YIELD_PARTYMASTER = 0x5fd,
+/*20090603 to latest
+파티장을 위임 할 수 없습니다.
+Party cannot be delegated.
+*/
+ MSG_CANNOT_YIELD_PARTYMASTER = 0x5fe,
+/*20090603 to latest
+변경불가
+Immutable
+*/
+ MSG_FAILED_CHANGE = 0x5ff,
+#endif
+#if PACKETVER >= 20090610
+/*20090610 to latest
+[%s]가 %d개 필요합니다.
+[%s] required '%d' amount.
+*/
+ MSG_USESKILL_FAIL_NEED_ITEM = 0x600,
+/*20090610 to latest
+제련 수치가 하향 조정 되었습니다.
+Is now refining the value lowered.
+*/
+ MSG_ITEM_REFINING_DOWNGRADE = 0x601,
+/*20090610 to latest
+[%s]를 장비하고 있어야 사용할 수 있습니다
+Need to put on [%s] in order to use.
+*/
+ MSG_USESKILL_FAIL_NEED_EQUIPMENT = 0x602,
+#endif
+#if PACKETVER >= 20090617
+/*20090617 to latest
+전장 리스트
+*/
+ MSG_BATTLEFIELD_LIST = 0x603,
+/*20090617 to latest
+전장 - [%s] 신청 하시겠습니까?
+*/
+ MSG_CANNOT_JOINTO_BATTLEFIELD = 0x604,
+/*20090617 to latest
+전장 - [%s] 입장 신청이 완료되었습니다.
+*/
+ MSG_COMPLETED_JOINTO_BATTLEFIELD = 0x605,
+/*20090617 to latest
+전장 - [%s] 입장 하실 수 없습니다.
+*/
+ MSG_DIFFER_JOINTO_BATTLEFIELD = 0x606,
+/*20090617 to latest
+현재 입장 신청 상태입니다.
+*/
+ MSG_STATUS_JOINTO_BATTLEFIELD = 0x607,
+/*20090617 to latest
+입장 신청을 취소하시겠습니까?
+*/
+ MSG_REQ_CANCEL_JOINTO_BATTLEFIELD = 0x608,
+/*20090617 to latest
+전장 - [%s] 입장 신청이 취소되었습니다.
+*/
+ MSG_CANCEL_JOINTO_BATTLEFIELD = 0x609,
+/*20090617 to latest
+곧 전장으로 이동 합니다.
+*/
+ MSG_MOVETO_BATTLEFIELD = 0x60a,
+/*20090617 to latest
+전장 - [%s]
+*/
+ MSG_BATTLEFIELD_NAME = 0x60b,
+#endif
+
+};
+#endif /* MAP_MESSAGES_SAK_H */
diff --git a/src/map/messages_zero.h b/src/map/messages_zero.h
new file mode 100644
index 000000000..c86c8c919
--- /dev/null
+++ b/src/map/messages_zero.h
@@ -0,0 +1,17544 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2013-2019 Hercules Dev Team
+ * Copyright (C) 2018-2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef MAP_MESSAGES_ZERO_H
+#define MAP_MESSAGES_ZERO_H
+
+/* This file is autogenerated, please do not commit manual changes
+
+Latest version: 20181226
+*/
+
+enum clif_messages {
+/*20171018 to latest
+동의 하십니까?
+Do you agree?
+*/
+ MSG_DO_YOU_AGREE = 0x0,
+/*20171018 to latest
+서버 연결 실패
+Failed to Connect to Server.
+*/
+ MSG_SERVER_CONNECTION_FAILED = 0x1,
+/*20171018 to latest
+서버와 연결이 끊어졌습니다.
+Disconnected from Server.
+*/
+ MSG_UNABLE_TO_CONNECT_SERVER = 0x2,
+/*20171018 to latest
+서버와 연결이 끊어졌습니다!
+Disconnected from Server!
+*/
+ MSG_BANNED = 0x3,
+/*20171018 to latest
+서버 종료됨
+Server Closed.
+*/
+ MSG_SERVER_OFF = 0x4,
+/*20171018 to latest
+같은 계정으로 다른 사용자가 로그인 하였습니다.
+Someone has Logged in with this ID.
+*/
+ MSG_DOUBLE_LOGIN_PROHIBITED = 0x5,
+/*20171018 to latest
+등록되지 않은 계정입니다. 다시 확인 바랍니다.
+Unregistered ID. Please make sure you have a registered account and you have correctly typed in the user ID.
+*/
+ MSG_INCORRECT_USERID = 0x6,
+/*20171018 to latest
+입력하신 비밀번호가 올바르지 않습니다.
+Incorrect User ID or Password. Please try again.
+*/
+ MSG_INCORRECT_PASSWORD = 0x7,
+/*20171018 to latest
+본 ID 는 사용기간이 만료 되었습니다
+This ID is expired.
+*/
+ MSG_ID_EXPIRED = 0x8,
+/*20171018 to latest
+서버 접근 거부
+Rejected from Server.
+20171117 to 20171117
+2017년 11월 20일 11:00 부터 접속이 가능합니다.
+*/
+ MSG_ACCESS_DENIED = 0x9,
+/*20171018 to latest
+같은 캐릭터 이름이 있습니다.
+Character Name already exists.
+*/
+ MSG_CHARACTER_NAME_ALREADY_EXISTS = 0xa,
+/*20171018 to latest
+캐릭터 생성 거부됨
+Character Creation is denied.
+*/
+ MSG_CHARACTER_CREATION_DENIED = 0xb,
+/*20171018 to latest
+캐릭터 삭제 거부
+Character Deletion is denied.
+*/
+ MSG_CANNOT_DELETE_CHARACTER = 0xc,
+/*20171018 to latest
+방제목를 입력하세요.
+Please Enter Room Title.
+*/
+ MSG_ENTER_ROOM_TITLE = 0xd,
+/*20171018 to latest
+불량단어가 검출되었습니다.
+Foul Language Detected.
+*/
+ MSG_BAD_SENTANGE = 0xe,
+/*20171018 to latest
+암호를 입력하세요.
+Please enter Password.
+*/
+ MSG_ENTER_PASSWORD = 0xf,
+/*20171018 to latest
+암호를 영문 4자 이상 입력하세요.
+Please enter Password. Passwords must be at least 4 characters long.
+*/
+ MSG_Enter_Password_more_than_4_char = 0x10,
+/*20171018 to latest
+종료 하시겠습니까?
+Are you sure that you want to quit?
+*/
+ MSG_DO_YOU_REALLY_WANT_TO_QUIT = 0x11,
+/*20171018 to latest
+4자 이상 입력해주세요. 사용자 계정이 없으신분들은 왼쪽 하단의 [신청] 버튼을 눌러 계정을 만드시기 바랍니다.
+Passwords are at least 4 characters long. Please try again.
+*/
+ MSG_NAME_MUST_EXCEED_4_CHAR = 0x12,
+/*20171018 to latest
+한 번 삭제된 캐릭터 및 관련 정보는 다시 복구되지 않습니다. 캐릭터를 삭제하시겠습니까?
+Are you sure that you want to delete this character?
+*/
+ MSG_DELETE_CHARACTER = 0x13,
+/*20171018 to latest
+불량단어가 검출되었습니다.
+Foul Language Detected.
+*/
+ MSG_BAD_NAME = 0x14,
+/*20171018 to latest
+이름을 입력해 주세요.(한글 2자 영문 4자 이상)
+Character Name must be at least 4 characters long.
+*/
+ MSG_ENTER_NAME_MORE_THAN_4_CHAR = 0x15,
+/*20171018 to latest
+명령어 일람: /h
+Command List: /h | /help
+*/
+ MSG_LIST_COMMAND = 0x16,
+/*20171018 to latest
+이펙트 On
+Effects On
+*/
+ MSG_EFFECT_ON = 0x17,
+/*20171018 to latest
+이펙트 Off
+Effects Off
+*/
+ MSG_EFFECT_OFF = 0x18,
+/*20171018 to latest
+사운드 볼륨
+Sound Volume
+*/
+ MSG_VOLUME_OF_SOUND = 0x19,
+/*20171018 to latest
+배경음악 볼륨
+BGM Volume
+*/
+ MSG_VOLUME_OF_BGM = 0x1a,
+/*20171018 to latest
+효과음 On
+Sound Effects On
+*/
+ MSG_SOUND_ON = 0x1b,
+/*20171018 to latest
+효과음 Off
+Sound Effects Off
+*/
+ MSG_SOUND_OFF = 0x1c,
+/*20171018 to latest
+프레임스킵 On
+Frame Skip On
+*/
+ MSG_FRAME_SKIP_ON = 0x1d,
+/*20171018 to latest
+프레임스킵 Off
+Frame Skip Off
+*/
+ MSG_FRAME_SKIP_OFF = 0x1e,
+/*20171018 to latest
+배경음악 On
+BGM On
+*/
+ MSG_BGM_ON = 0x1f,
+/*20171018 to latest
+배경음악 Off
+BGM Off
+*/
+ MSG_BGM_OFF = 0x20,
+/*20171018 to latest
+/h or /help: 명령어 일람
+/h or /help: Shows this Command Help List
+*/
+ MSG_EXPLAIN_HELP = 0x21,
+/*20171018 to latest
+/w or /who or /접속자 or /누구: 현재 접속자수 보기
+/w or /who or /player or /who: wiew current the number of player
+*/
+ MSG_EXPLAIN_WHO = 0x22,
+/*20171018 to latest
+/음악 : 배경음악 On Off
+/music: Turns BGM On or Off
+*/
+ MSG_EXPLAIN_MUSIC = 0x23,
+/*20171018 to latest
+/효과음 : 효과음 On Off
+/sound: Turns Sound Effects On or Off
+*/
+ MSG_EXPLAIN_SOUND = 0x24,
+/*20171018 to latest
+/이펙트 : 이펙트 On Off
+/effect: Effects On or Off
+*/
+ MSG_EXPLAIN_EFFECT = 0x25,
+/*20171018 to latest
+/좌표 or /장소: 현재 위치 표시
+/where: Shows your present location
+*/
+ MSG_EXPLAIN_POS = 0x26,
+/*20171018 to latest
+/skip : 프래임스킵 On Off
+/skip: Turns Frame Skip On or Off
+*/
+ MSG_EXPLAIN_FRAMESKIP = 0x27,
+/*20171018 to latest
+/v (0~127): 효과음 볼륨조정
+/v (0~127): Controls the volume of the Sound Effects
+*/
+ MSG_EXPLAIN_SOUNDVOLUME = 0x28,
+/*20171018 to latest
+/bv (0~127): 배경음악 볼륨조정
+/bv (0~127): Controls the volume of the BGM
+*/
+ MSG_EXPLAIN_BGMVOLUME = 0x29,
+/*20171018 to latest
+/ex (캐릭터이름) or /차단 (캐릭터이름) : 해당캐릭터에 대해 귓말차단
+/ex (Character Name): Blocks whispering from the Character
+*/
+ MSG_EXPLAIN_SAYISOLATION = 0x2a,
+/*20171018 to latest
+/ex or /차단 : 귓말차단 캐릭터 리스트
+/ex: View a list of Characters you have Blocked
+*/
+ MSG_EXPLAIN_LIST_SAYISOLATION_CHAR = 0x2b,
+/*20171018 to latest
+/in (캐릭터이름) or /해제 (캐릭터이름) : 해당캐릭터에 대해 귓말허용
+/in (Character Name): Allows whispering from the Character
+*/
+ MSG_EXPLAIN_SAY_PERMIT = 0x2c,
+/*20171018 to latest
+/inall or /해제전부 : 모두에게 귓말허용
+/inall: Allows whispers from anyone
+*/
+ MSG_EXPLAIN_SAY_PERMITALL = 0x2d,
+/*20171018 to latest
+/exall or /차단전부 : 모두에게 귓말차단
+/exall: Blocks whispers from everyone
+*/
+ MSG_EXPLAIN_SAY_ISOLATEALL = 0x2e,
+/*20171018 to latest
+다른유저 캐릭터를 마우스 오른버튼을 누르고 있는 상태에서 왼버튼으로 클릭하면 그캐릭터이름이 귓말콤보박스에 저장됩니다.
+Right click on a character and select [Register as a Friend] to add a person to your Friend List.
+*/
+ MSG_EXPLAIN_TIP1 = 0x2f,
+/*20171018 to latest
+단축아이탬창(F12) 소비장비 아이템을 드래그한후 사용하세요. 사용키(F1F2F3F4F5F6F7F8F9)
+F12 Brings up a Hotkey Window which allows you to drag and drop Recovery Items, Equipment and Skills into it for faster access.
+*/
+ MSG_EXPLAIN_TIP2 = 0x30,
+/*20171018 to latest
+같은말을 3번이상 연속해서 전송할 수 없습니다.
+You can't type the same word/phrase more than 3 times.
+*/
+ MSG_NO_SAME_SENTANCE = 0x31,
+/*20171018 to latest
+불량단어 검출로 전송이 중단 되었습니다.
+Chat Filter: Yeah, uh, I don't think so buddy...
+*/
+ MSG_NO_SEND_BECAUSE_INSULT = 0x32,
+/*20171018 to latest
+같은아이템은 한번만 올릴수 있습니다.
+You cannot overlap items on a window.
+*/
+ MSG_CAN_DRAG_ITEM_OLNY_ONETIME = 0x33,
+/*20171018 to latest
+무게가 초과하여 아이템을 가질 수 없습니다.
+You cannot carry more items because you are overweight.
+*/
+ MSG_CANT_GET_ITEM_BECAUSE_WEIGHT = 0x34,
+/*20171018 to latest
+아이템을 가질 수 없습니다.
+You cannot get the item.
+*/
+ MSG_CANT_GET_ITEM = 0x35,
+/*20171018 to latest
+거래가 잘 이루어졌습니다.
+The deal has successfully completed.
+*/
+ MSG_DEAL_SECCESS = 0x36,
+/*20171018 to latest
+돈이 부족합니다.
+You do not have enough zeny.
+*/
+ MSG_INSUFFICIENT_MONEY = 0x37,
+/*20171018 to latest
+무게가 초과 되었습니다.
+You are over your Weight Limit.
+*/
+ MSG_OVER_WEIGHT = 0x38,
+/*20171018 to latest
+거래가 실패 했습니다.
+The deal has failed.
+*/
+ MSG_DEAL_FAIL = 0x39,
+/*20171018 to latest
+모두에게 귓말거부상태로됨
+You've blocked whispers from everyone.
+*/
+ MSG_REFUSE_HEAR_ALL = 0x3a,
+/*20171018 to latest
+모두에게 귓말거부요청 실패함
+You've failed to block all whispers.
+*/
+ MSG_REQ_REFUSE_HEAR_ALL_FAIL = 0x3b,
+/*20171018 to latest
+모두에게 귓말가능상태가됨
+You've allowed whispers from everyone.
+*/
+ MSG_HEAR_ALL = 0x3c,
+/*20171018 to latest
+모두에게 귓말가능요청 실패함
+You've failed to allow all whispers.
+*/
+ MSG_REQ_HEAR_ALL_FAIL = 0x3d,
+/*20171018 to latest
+귓말 거부 리스트가 없습니다
+You have no Block List.
+*/
+ MSG_NO_REFUSE_HEAR_LIST = 0x3e,
+/*20171018 to latest
+-귓말 거부 리스트-
+[ Character Block List ]
+*/
+ MSG_REFUSE_HEAR_LIST = 0x3f,
+/*20171018 to latest
+방이 잘 만들어 졌습니다.
+Room has been successfully created.
+*/
+ MSG_ROOM_IS_MADE = 0x40,
+/*20171018 to latest
+방갯수가 허용갯수를 초과 하였습니다.
+Room Limit Exceeded.
+*/
+ MSG_TOO_MANY_ROOM = 0x41,
+/*20171018 to latest
+같은 방제목이 있습니다.
+Same Room exists.
+*/
+ MSG_SAME_ROOM_TITLE = 0x42,
+/*20171018 to latest
+인원초과로 방에 들어갈 수 없습니다.
+The Room is full.
+*/
+ MSG_TOO_MANY_PEOPLE_IN_ROOM = 0x43,
+/*20171018 to latest
+강제로 퇴장된 방입니다.
+You have been kicked out of this room.
+*/
+ MSG_YOU_HAVE_BANNED_FROM_THE_ROOM = 0x44,
+/*20171018 to latest
+교환요청을 거절 했습니다.
+The deal has been rejected.
+*/
+ MSG_REJECT_DEAL = 0x45,
+/*20171018 to latest
+교환가능거리를 벗어났습니다.
+You are too far away from the person to trade.
+*/
+ MSG_TOO_FAR_TO_DEAL = 0x46,
+/*20171018 to latest
+해당 캐릭터가 없습니다.
+The Character is not currently online or does not exist.
+*/
+ MSG_CHARACTER_IS_NOT_EXIST = 0x47,
+/*20171018 to latest
+다른캐릭터와 교환중입니다.
+The person is in another deal.
+*/
+ MSG_CHARACTER_IS_DEALING = 0x48,
+/*20171018 to latest
+상대 캐릭터 중량초과로 올려놓을 수 없습니다.
+You cannot trade because this character will exceed his weight limit.
+*/
+ MSG_CHARACTER_IS_OVER_WEIGHT = 0x49,
+/*20171018 to latest
+거래가 취소 되었습니다.
+The deal has been canceled.
+*/
+ MSG_DEAL_IS_CANCELED = 0x4a,
+/*20171018 to latest
+아이템 교환이 잘 되었습니다.
+The deal has successfully completed.
+*/
+ MSG_DEAL_SUCCESS = 0x4b,
+/*20171018 to latest
+아이템 교환이 실패 하였습니다.
+The deal has failed.
+*/
+ MSG_DEAL_FAILED = 0x4c,
+/*20171018 to latest
+파티가 만들어졌습니다.
+Party has successfully been organized.
+*/
+ MSG_PARTY_MAKE_SUCCEED = 0x4d,
+/*20171018 to latest
+같은 파티이름이 있습니다.
+That Party Name already exists.
+*/
+ MSG_SAME_PARTY_NAME = 0x4e,
+/*20171018 to latest
+이미 파티에 속해있습니다.
+The Character is already in a party.
+*/
+ MSG_YOU_ARE_ALREADY_IN_PARTY = 0x4f,
+/*20171018 to latest
+다른파티에 가입되어 있습니다.
+The Character already joined another party.
+*/
+ MSG_CHARACTER_IS_ALREADY_IN_PARTY = 0x50,
+/*20171018 to latest
+파티가입을 거부했습니다.
+Request for party rejected.
+*/
+ MSG_CHARACTER_REJECT_JOIN = 0x51,
+/*20171018 to latest
+파티가입을 수락했습니다.
+Request for party accepted.
+*/
+ MSG_CHARACTER_ACCEPT_JOIN = 0x52,
+/*20171018 to latest
+파티정원을 초과했습니다.
+Party Capacity exceeded.
+*/
+ MSG_TOO_MANY_PEOPLE_IN_PARTY = 0x53,
+/*20171018 to latest
+파티에서 탈퇴하였습니다.
+You left the party.
+*/
+ MSG_YOU_LEAVE_FROM_PARTY = 0x54,
+/*20171018 to latest
+전체에게 보냄
+Send to All
+*/
+ MSG_SEND_TO_ALL = 0x55,
+/*20171018 to latest
+파티에게 보냄
+Send to Party
+*/
+ MSG_SEND_TO_PARTY = 0x56,
+/*20171018 to latest
+님과의 거래요청
+Request a deal with %s
+*/
+ MSG_REQ_DEAL_WITH = 0x57,
+/*20171018 to latest
+님 파티에 가입요청
+Ask %s to join your party
+*/
+ MSG_REQ_JOIN_PARTY = 0x58,
+/*20171018 to latest
+비공개 :
+Pri:
+*/
+ MSG_ROOM_PRIVATE = 0x59,
+/*20171018 to latest
+공개 :
+Pub:
+*/
+ MSG_ROOM_PUBLIC = 0x5a,
+/*20171018 to latest
+마지막 체크지점부터 시작하려면 '재시작'을 캐릭터 선택으로 돌아가려면 '종료'를 눌러주세요.
+Click ''Restart'' to go back to your save point or click ''Exit'' to select another character.
+*/
+ MSG_RESTART_MSG = 0x5b,
+/*20171018 to latest
+원하는 거래를 선택하세요.
+Please select a Deal Type.
+*/
+ MSG_SELECT_DEAL_TYPE = 0x5c,
+/*20171018 to latest
+님이 거래를 요청했습니다.
+ requests a deal.
+*/
+ MSG_SUGGEST_DEAL = 0x5d,
+/*20171018 to latest
+ 파티에서 초청 메시지가 왔습니다. 합류하겠습니까?
+ Party has sent you an invitation. Would you like to join?
+*/
+ MSG_SUGGEST_JOIN_PARTY = 0x5e,
+/*20171018 to latest
+명령이 틀렸습니다.
+Invalid Command
+*/
+ MSG_INVALID_COMMAND = 0x5f,
+/*20171018 to latest
+탈퇴하기
+Leave party
+*/
+ MSG_LEAVE_PARTY = 0x60,
+/*20171018 to latest
+제명시키기
+Expel
+*/
+ MSG_EXPEL = 0x61,
+/*20171018 to latest
+쪽지보내기
+Send Message
+*/
+ MSG_MSG = 0x62,
+/*20171018 to latest
+1:1 대화
+1:1 Chat
+*/
+ MSG_1ON1 = 0x63,
+/*20171018 to latest
+정보
+Information
+*/
+ MSG_CHARACTER_INFO = 0x64,
+/*20171018 to latest
+파티설정
+Party Setup
+*/
+ MSG_PARTY_SETTING = 0x65,
+/*20171018 to latest
+친구
+Friend
+*/
+ MSG_FRIEND = 0x66,
+/*20171018 to latest
+파티
+Party
+*/
+ MSG_PARTY = 0x67,
+/*20171018 to latest
+장착아이템
+Equipment
+*/
+ MSG_EQUIPED_ITEM = 0x68,
+/*20171018 to latest
+스테이터스
+Status
+*/
+ MSG_STATUS_ = 0x69,
+/*20171018 to latest
+소지아이템
+Inventory
+*/
+ MSG_ITEM = 0x6a,
+/*20171018 to latest
+/결성 [파티이름] : 파티결성 /탈퇴 : 파티탈퇴
+/organize ''Party Name'' To organize a party. Type /leave To leave a Party.
+*/
+ MSG_EXPLAIN_PARTY = 0x6b,
+/*20171018 to latest
+자신이 파티리더일때 캐릭터를 오른버튼으로 클릭하면 파티에 가입요청하기 메뉴가 뜹니다.
+If you are the party master, you can invite someone into your party by right-clicking on a Character.
+*/
+ MSG_EXPLAIN_TIP3 = 0x6c,
+/*20171018 to latest
+회복
+Consumables
+*/
+ MSG_RESTORE = 0x6d,
+/*20171018 to latest
+공격
+Attack
+*/
+ MSG_ATTACK = 0x6e,
+/*20171018 to latest
+보조
+Support
+*/
+ MSG_SUPPORT = 0x6f,
+/*20171018 to latest
+전체
+All
+*/
+ MSG_ALL = 0x70,
+/*20171018 to latest
+무기
+Weapons
+*/
+ MSG_WEAPON = 0x71,
+/*20171018 to latest
+방어
+Defense
+*/
+ MSG_DEFENCE = 0x72,
+/*20171018 to latest
+수
+Water
+*/
+ MSG_WATER = 0x73,
+/*20171018 to latest
+지
+Earth
+*/
+ MSG_EARTH = 0x74,
+/*20171018 to latest
+화
+Fire
+*/
+ MSG_FIRE = 0x75,
+/*20171018 to latest
+풍
+Wind
+*/
+ MSG_WIND = 0x76,
+/*20171018 to latest
+같은종류의 장비아이템은 한번에 한개만 살 수 있습니다.
+Please avoid buying 2 of the same items at one time.
+*/
+ MSG_EQUIPITEM_OLNY_ONE = 0x77,
+/*20171018 to latest
+창모드에서 실행 할때는 16비트 컬러로 맞춰주세요.
+Please change your desktop Color Depth to 16-bit when running Ragnarok in windowed mode.
+*/
+ MSG_ONLY_16BIT_WHEN_WINDOWMODE = 0x78,
+/*20171018 to latest
+잠시만 기다려 주세요.
+Please wait...
+*/
+ MSG_PLEASE_BE_PATIENT = 0x79,
+/*20171018 to latest
+잠시만 기다려 주세요.
+Please wait...
+*/
+ MSG_WAITING_RESPONSE_FROM_SERVER = 0x7a,
+/*20171018 to latest
+잠시만 기다려 주세요.
+Please wait...
+*/
+ MSG_MAKING_CHARACTER = 0x7b,
+/*20171018 to latest
+잠시만 기다려 주세요.
+Please wait...
+*/
+ MSG_DELETING_CHARACTER = 0x7c,
+/*20171018 to latest
+방 만들기
+Make a Room
+*/
+ MSG_MAKING_ROOM = 0x7d,
+/*20171018 to latest
+방셋팅 바꾸기
+Room Setup
+*/
+ MSG_CHANGE_ROOM_SETTING = 0x7e,
+/*20171018 to latest
+강퇴시키기
+Kick Character Out
+*/
+ MSG_BAN = 0x7f,
+/*20171018 to latest
+방장권한 주기
+Give Master Authority
+*/
+ MSG_GIVE_GIVE_ROOM_POWER = 0x80,
+/*20171018 to latest
+정보보기
+View Information
+*/
+ MSG_SEE_INFORMATION_OF_CHARACTER = 0x81,
+/*20171018 to latest
+대화방
+Chat Room
+*/
+ MSG_CHAT_ROOM = 0x82,
+/*20171018 to latest
+명
+Ppl
+*/
+ MSG_COUNT_UNIT_OF_PEOPLE = 0x83,
+/*20171018 to latest
+/앉기 or /sit : 앉기. 앉아있을때 서기
+/sit: Sit command. If you are sitting, you will stand instead.
+*/
+ MSG_EXPLAIN_SIT = 0x84,
+/*20171018 to latest
+/서기 or /stand : 서기. 서있을때 앉기
+/stand: Stand command. If you are standing, you will sit instead.
+*/
+ MSG_EXPLAIN_STAND = 0x85,
+/*20171018 to latest
+/채팅방 or /chat : 채팅방 만들기창 띄우기
+/chat: Creates a Chat Room
+*/
+ MSG_EXPLAIN_MAKE_CHAT = 0x86,
+/*20171018 to latest
+/q : 채팅방 나가기.
+/q: Leaves a Chat Room
+*/
+ MSG_EXPLAIN_EXIT_CHAT_ROOM = 0x87,
+/*20171018 to latest
+/거래 [캐릭터이름] or /교환 [캐릭터이름] or /deal [캐릭터이름] : 해당 캐릭터와 거래요청
+/deal ''Character Name'' Requests a deal with a character
+*/
+ MSG_EXPLAIN_DEAL = 0x88,
+/*20171018 to latest
+/결성 [파티이름] or /organize [파티이름] : 파티결성
+/organize ''Party Name'' Organizes a party
+*/
+ MSG_EXPLAIN_ORGANIZE_PARTY = 0x89,
+/*20171018 to latest
+/탈퇴 or /leave : 파티 탈퇴
+/leave: Leaves a party
+*/
+ MSG_EXPLAIN_LEAVE_PARTY = 0x8a,
+/*20171018 to latest
+/제명 [캐릭터이름] or /expel [캐릭터이름] : 해당캐릭터를 파티에서 제명시킴
+/expel ''Character Name'' kicks a Character out of your party
+*/
+ MSG_EXPLAIN_EXPEL_PARTY_MEMBER = 0x8b,
+/*20171018 to latest
+[Alt] + [End] : 플레이어 hp/sp 게이지 On Off
+[Alt] + [End]: Turns HP/SP Bar On or Off
+*/
+ MSG_EXPLAIN_TIP4 = 0x8c,
+/*20171018 to latest
+[Alt] + [Home] : 지면 커서 표시 On Off
+[Alt] + [Home]: Turns Ground Cursor On or Off
+*/
+ MSG_EXPLAIN_TIP5 = 0x8d,
+/*20171018 to latest
+[Insert] : 앉기 서기
+[Insert]: Makes you sit or stand. (Hotkey to toggle between /sit and /stand)
+*/
+ MSG_EXPLAIN_TIP6 = 0x8e,
+/*20171018 to latest
+MVP가 되셨습니다!! MVP 아이템은
+Congratulations! You are the MVP! Your reward item is
+*/
+ MSG_YOU_RECEIVE_MVP_ITEM = 0x8f,
+/*20171018 to latest
+ !!
+!!
+*/
+ MSG_YOU_RECEIVE_MVP_ITEM2 = 0x90,
+/*20171018 to latest
+MVP가 되셨습니다!! 특별경험치
+Congratulations! You are the MVP! Your reward EXP Points are
+*/
+ MSG_YOU_RECEIVE_MVP_EXP = 0x91,
+/*20171018 to latest
+ 획득!!
+!!
+*/
+ MSG_YOU_RECEIVE_MVP_EXP2 = 0x92,
+/*20171018 to latest
+MVP가 되셨습니다만 무게초과로 MVP 아이템을 가질 수 없었습니다!!
+You are the MVP, but you can't take the reward because you are over your weight limit.
+*/
+ MSG_YOU_THROW_MVPITEM = 0x93,
+/*20171018 to latest
+ 없는 캐릭터 이름 입니다.
+There is no such character name or the user is offline.
+*/
+ MSG_NOT_EXIST_CHARACTER = 0x94,
+/*20171018 to latest
+ 수신 거부 상태입니다.
+ doesn't want to receive your messages.
+*/
+ MSG_NO_RECEIVE_MODE = 0x95,
+/*20171018 to latest
+ 모든 캐릭터에 대해 수신 거부 상태 입니다.
+ is not in the mood to talk with anyone.
+*/
+ MSG_NO_RECEIVE_MODE_FOR_ALL = 0x96,
+/*20171018 to latest
+캐릭터 접속끊기 성공.
+Killed/Disconnected User.
+*/
+ MSG_SUCCESS_DISCONNECT_CHARACTER = 0x97,
+/*20171018 to latest
+캐릭터 접속끊기 실패.
+Kill has failed.
+*/
+ MSG_FAIL_DISCONNECT_CHARACTER = 0x98,
+/*20171018 to latest
+%s %d 개 획득
+You got %s (%d).
+*/
+ MSG_GET_ITEM = 0x99,
+/*20171018 to latest
+[Alt] + [=] : 알파벳 간격이 넓어졌을때 되돌리기.
+[Alt] + [=]: Fix the interval error between letters.
+*/
+ MSG_EXPLAIN_TIP7 = 0x9a,
+/*20171018 to latest
+[F10] : 채팅창 크기조정 [Alt] + [F10] : 채팅창 On Off
+[F10]: To toggle Chat Window size; [Alt] + [F10]: Toggle Chat Window On or Off
+*/
+ MSG_EXPLAIN_TIP8 = 0x9b,
+/*20171018 to latest
+귓속말 하는법 : 채팅창 왼쪽 입력란에 캐릭터이름을 입력하고 오른쪽 입력란에 말을 입력하면 됩니다. TAB키로 두입력란 사이로 커서를 이동할 수 있습니다.
+How to Whisper: Enter a Character's Name on the left side of chat window and type your message on the right side. The Tab key helps you move between these boxes.
+*/
+ MSG_EXPLAIN_TIP9 = 0x9c,
+/*20171018 to latest
+/! /? /기쁨 /하트 /땀 /아하 /짜증 /화 /돈 /... /가위 /바위 /보 : Alt + (1~9) Ctrl + (-=\) 에 대응되는 명령어 입니다.
+/!,/?,/ho,/lv,/lv2,/swt,/ic,/an,/ag,/$,/….,/thx,/wah,/sry,/heh,/swt2,/hmm,/no1,/??,/omg,/oh,/X,/hp,/go,/sob,/gg,/kis,/kis2,/pif,/ok: Emotion icons corresponding to Alt + (1~9) Ctrl + (-=\\)
+*/
+ MSG_EXPLAIN_TIP10 = 0x9d,
+/*20171018 to latest
+파티원에게 말하는법 : 말의 제일앞에 '%'를 붙이면 파티원에게 말이 갑니다. (예: "%안녕")
+How to Speak to Party: Add % in front of every message.(Example: \%Hello\)
+*/
+ MSG_EXPLAIN_TIP11 = 0x9e,
+/*20171018 to latest
+스킬레벨이 부족합니다. 교환 불능.
+You haven't learned enough Basic Skills to Trade.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE1 = 0x9f,
+/*20171018 to latest
+스킬레벨이 부족합니다. 이모션 불능.
+You haven't learned enough Basic Skills to use Emotion icons.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE2 = 0xa0,
+/*20171018 to latest
+스킬레벨이 부족합니다. 앉기 불능.
+You haven't learned enough Basic Skills to Sit.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE3 = 0xa1,
+/*20171018 to latest
+스킬레벨이 부족합니다. 채팅방만들기 불능.
+You haven't learned enough Basic Skills to create a chat room.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE4 = 0xa2,
+/*20171018 to latest
+스킬레벨이 부족합니다. 파티만들기 불능
+You haven't learned enough Basic Skills to Party.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE5 = 0xa3,
+/*20171018 to latest
+스킬레벨이 부족합니다. 외치기 불능
+You haven't learned enough skills to Shout.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE6 = 0xa4,
+/*20171018 to latest
+스킬레벨이 부족합니다. pk 불능
+You haven't learned enough skills for Pking.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE7 = 0xa5,
+/*20171018 to latest
+사고자하는 품목
+Buying Items
+*/
+ MSG_ITEMS_FOR_BUY = 0xa6,
+/*20171018 to latest
+아이템 상점
+Item Shop
+*/
+ MSG_ITEM_STORE = 0xa7,
+/*20171018 to latest
+팔고자하는 품목
+Selling Items
+*/
+ MSG_ITEMS_FOR_SELL = 0xa8,
+/*20171018 to latest
+보관아이템
+Storage
+*/
+ MSG_ITEMS_THAT_IS_STORED = 0xa9,
+/*20171018 to latest
+ 장비가 장착 되었습니다.
+ is put on.
+*/
+ MSG_ITEM_IS_EQUIPED = 0xaa,
+/*20171018 to latest
+ 장비가 해제 되었습니다.
+ is taken off.
+*/
+ MSG_ITEM_IS_REMOVED = 0xab,
+/*20171018 to latest
+귓말리스트에 이름넣기
+To add names on the Whispering List
+*/
+ MSG_ADD_TO_WHISPER_CHAR_LIST = 0xac,
+/*20171018 to latest
+스크린샷 찍는법 : [Print Screen]키나 [Scroll Lock]키를 누르면 됩니다.
+How to Take Screen Shots: Press [Print Screen] or [Scroll Lock]
+*/
+ MSG_EXPLAIN_TIP12 = 0xad,
+/*20171018 to latest
+오늘의 팁
+Tip of the Day
+*/
+ MSG_TIPOFTHEDAY = 0xae,
+/*20171018 to latest
+^3850a0알고 계셨습니까... ^000000 //^709fed
+^3850a0Did you know...?^709fed
+*/
+ MSG_DIDYOUKNOW = 0xaf,
+/*20171018 to latest
+시작할때 열기
+Display at startup
+*/
+ MSG_SHOWTIPSATSTARTUP = 0xb0,
+/*20171018 to latest
+/tip : 오늘의팁 열기
+/tip: Opens ''Tip of the Day''
+*/
+ MSG_EXPLAIN_OPENTIP = 0xb1,
+/*20171018 to latest
+현재 접속자 %d명
+There are %d Players Currently Connected.
+*/
+ MSG_NUMPEOPLE = 0xb2,
+/*20171018 to latest
+(%s)님이 입장 하였습니다.
+(%s) has entered.
+*/
+ MSG_USERGETINTHEROOM = 0xb3,
+/*20171018 to latest
+(%s)님이 퇴장 하였습니다.
+(%s) has left.
+*/
+ MSG_USERGETOUTOFTHEROOM = 0xb4,
+/*20171018 to latest
+(%s)님이 강제 퇴장 되었습니다.
+(%s) was kicked out.
+*/
+ MSG_USERGETOUTOFTHEROOMBYFORCE = 0xb5,
+/*20171018 to latest
+ %d 개
+%d ea.
+*/
+ MSG_EA = 0xb6,
+/*20171018 to latest
+%s : %d 개
+%s: %d ea.
+*/
+ MSG_EA2 = 0xb7,
+/*20171018 to latest
+%s %s : %d 개
+%s %s: %d
+*/
+ MSG_EA3 = 0xb8,
+/*20171018 to latest
+팔 수 있는 품목
+Available Items to sell
+*/
+ MSG_ITEMSYOUCANSELL = 0xb9,
+/*20171018 to latest
+상점에서 파는 품목
+Shop Items
+*/
+ MSG_SHOPITEMS = 0xba,
+/*20171018 to latest
+알 수 없는곳
+Unknown Area
+*/
+ MSG_NOWHERE = 0xbb,
+/*20171018 to latest
+서버와 언어가 맞지 않습니다.
+Your Client language doesn't match the Server language.
+*/
+ MSG_CLIENTTYPEMISMATCH = 0xbc,
+/*20171018 to latest
+아이템을 버릴려면 장비창을 닫으세요.
+Please move your equipment to the inventory. And close the equipment window.
+*/
+ MSG_CLOSEEQUIPWND = 0xbd,
+/*20171018 to latest
+영어만 됩니다.
+This server provides English Text Characters Only.
+*/
+ MSG_ENGLISHONLY = 0xbe,
+/*20171018 to latest
+지금은 지원되지 않습니다.
+This is not implemented yet.
+*/
+ MSG_NOTSUPPORTEDYET = 0xbf,
+/*20171018 to latest
+귓말 리스트가 없습니다.
+No Whisper List.
+*/
+ MSG_NOWHISPERLIST = 0xc0,
+/*20171018 to latest
+ 에게 귓말거부상태로됨
+: Whispering Blocked.
+*/
+ MSG_WHISPERIGNORESUCCESS = 0xc1,
+/*20171018 to latest
+ 에게 귓말거부 요청실패함
+: Whispering Block has failed.
+*/
+ MSG_WHISPERIGNOREFAILED1 = 0xc2,
+/*20171018 to latest
+ 에게 귓말거부 요청실패함 (인원초과)
+: Whispering Block has failed. Block List is full.
+*/
+ MSG_WHISPERIGNOREFAILED2 = 0xc3,
+/*20171018 to latest
+ 에게 귓말가능상태로됨
+: Whispering accepted.
+*/
+ MSG_WHISPERNOIGNORESUCCESS = 0xc4,
+/*20171018 to latest
+ 에게 귓말가능 요청실패함
+: Command has failed.
+*/
+ MSG_WHISPERNOIGNOREFAILED1 = 0xc5,
+/*20171018 to latest
+ 에게 귓말가능 요청실패함 (인원초과)
+: Command has failed. Block List is full.
+*/
+ MSG_WHISPERNOIGNOREFAILED2 = 0xc6,
+/*20171018 to latest
+이름의 처음과 마지막에는 공백문자를 사용할 수 없습니다.
+You cannot put a space at the beginning or end of a name.
+*/
+ MSG_NO_SPACE_IN_NAME = 0xc7,
+/*20171018 to latest
+비공개
+Private
+*/
+ MSG_ROOM_PRIVATE2 = 0xc8,
+/*20171018 to latest
+공개
+Public
+*/
+ MSG_ROOM_PUBLIC2 = 0xc9,
+/*20171018 to latest
+SP가 부족합니다.
+Not Enough SP
+*/
+ MSG_USESKILL_FAIL_SP_INSUFFICIENT = 0xca,
+/*20171018 to latest
+HP가 부족합니다.
+Not Enough HP
+*/
+ MSG_USESKILL_FAIL_HP_INSUFFICIENT = 0xcb,
+/*20171018 to latest
+스킬사용 실패.
+Skill has failed.
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE8 = 0xcc,
+/*20171018 to latest
+훔치기 실패.
+Steal has failed.
+*/
+ MSG_FAIL_STEAL = 0xcd,
+/*20171018 to latest
+교환창
+Trade
+*/
+ MSG_EXCHANGE = 0xce,
+/*20171018 to latest
+독걸기 실패.
+Envenom skill has failed.
+*/
+ MSG_FAIL_POISON = 0xcf,
+/*20171018 to latest
+이 아이디로는 이 서버에 접속할 수 없습니다.
+You cannot use this ID on this server.
+*/
+ MSG_ID_MISMATCH = 0xd0,
+/*20171018 to latest
+스피드가 향상되었습니다.
+Your Speed has increased.
+*/
+ MSG_SPEEDUP = 0xd1,
+/*20171018 to latest
+스피드가 감소되었습니다.
+Your Speed has decreased.
+*/
+ MSG_SPEEDDOWN = 0xd2,
+/*20171018 to latest
+/기억 : 워프할 장소 기억(워프 스킬이 있는경우)
+/memo: To memorize a place as Warp Point (If you are an Acolyte Class character)
+*/
+ MSG_EXPLAIN_TIP13 = 0xd3,
+/*20171018 to latest
+임의의 위치
+Random Area
+*/
+ MSG_RANDOM_POS = 0xd4,
+/*20171018 to latest
+워프 할 위치를 선택하세요.
+Select an Area to Warp
+*/
+ MSG_SELECTWHERETOWARP = 0xd5,
+/*20171018 to latest
+스킬레벨이 부족합니다.
+Skill Level is not high enough
+*/
+ MSG_NOTENOUGHSKILLLEVEL = 0xd6,
+/*20171018 to latest
+저장된 워프할 장소가 없습니다.
+There are no memorized locations (Memo Points).
+*/
+ MSG_NO_STORED_PLACE_TO_WARP = 0xd7,
+/*20171018 to latest
+워프 관련 스킬이 없습니다.
+You haven't learned Warp.
+*/
+ MSG_NOWARPSKILL = 0xd8,
+/*20171018 to latest
+워프 장소로 저장됨.
+Saved location as a Memo Point for Warp Skill.
+*/
+ MSG_WARPPOINTSTORED = 0xd9,
+/*20171018 to latest
+취소
+Cancel
+*/
+ MSG_CANCEL = 0xda,
+/*20171018 to latest
+스킬 사용후 시간이 충분히 지나지 않았습니다.
+There is a Delay after using a Skill.
+*/
+ MSG_SKILLINTERVAL = 0xdb,
+/*20171018 to latest
+한번에 가질 수 있는 아이템 종류수를 초과하여 아이템을 가질 수 없습니다.
+You can't have this item because you will exceed the weight limit.
+*/
+ MSG_CANT_GET_ITEM_BECAUSE_COUNT = 0xdc,
+/*20171018 to latest
+아이템 최대 종류수를 초과 하였습니다.
+Out of the maximum capacity
+*/
+ MSG_INSUFFICIENT_OVER_COUNT = 0xdd,
+/*20171018 to latest
+수레아이템
+Cart Items
+*/
+ MSG_MERCHANTITEM = 0xde,
+/*20171018 to latest
+수레 벗기
+Take off Cart
+*/
+ MSG_CARTOFF = 0xdf,
+/*20171018 to latest
+노점 개설
+Opening a stall
+*/
+ MSG_MERCHANTSHOPMAKER = 0xe0,
+/*20171018 to latest
+노점이름을 입력하세요.
+Please Name your Shop.
+*/
+ MSG_ENTER_SHOP_TITLE = 0xe1,
+/*20171018 to latest
+나의 노점
+My Shop
+*/
+ MSG_ITEM_MY_STORE = 0xe2,
+/*20171018 to latest
+상인 아이템 상점
+Merchant Shop
+*/
+ MSG_ITEM_MERCHANT_STORE = 0xe3,
+/*20171018 to latest
+상인에게 사고자하는 품목
+Buying Items
+*/
+ MSG_ITEMS_FOR_BUY_FROM_MERCHANT = 0xe4,
+/*20171018 to latest
+%s 구입 실패 %s
+%s Purchase Failed %s
+*/
+ MSG_FAIL_BUY_ITEM_FROM_MERCHANT = 0xe5,
+/*20171018 to latest
+재고 부족.
+Out of Stock
+*/
+ MSG_INSUFFICIENT_STOCK = 0xe6,
+/*20171018 to latest
+%s %d 개 팔림.
+%s %d sold.
+*/
+ MSG_ITEM_IS_SOLD = 0xe7,
+/*20171018 to latest
+노점에서 팔 수 있는 아이템
+Available Items for Vending
+*/
+ MSG_MERCHANTMIRRORITEM = 0xe8,
+/*20171018 to latest
+제니가 부족해서 스킬을 사용 할 수 없습니다.
+Skill has failed because you do not have enough zeny.
+*/
+ MSG_SKILL_FAIL_MONEY = 0xe9,
+/*20171018 to latest
+사용할 대상을 선택하세요
+Select a Target.
+*/
+ MSG_SELECTTARGET = 0xea,
+/*20171018 to latest
+/pk on : pk On /pk off : pk Off
+/pk on: Turns PK On. /pk off: Turns PK Off.
+*/
+ MSG_EXPLAIN_TIP14 = 0xeb,
+/*20171018 to latest
+노점
+Shop
+*/
+ MSG_STREETSHOP = 0xec,
+/*20171018 to latest
+수레 아이템 [Alt+W]
+Cart Items [Alt+W]
+*/
+ MSG_OPENCARTWINDOW = 0xed,
+/*20171018 to latest
+기본정보
+Basic Information
+*/
+ MSG_BASICINFOWND = 0xee,
+/*20171018 to latest
+이무기로는 이스킬을 사용할수 없습니다.
+The skill cannot be used with this weapon.
+*/
+ MSG_USESKILL_FAIL_NOT_SUITABLE_WEAPON = 0xef,
+/*20171018 to latest
+%s 사기 실패 재고 부족 현재 재고 %d 개.
+Buying %s has been failed. Out of Stock. Current Stock %d.
+*/
+ MSG_FAIL_BUY_ITEM_FROM_MERCHANT_NO_STOCK = 0xf0,
+/*20171018 to latest
+서버와 동기화가 틀려 연결이 끊어졌습니다.
+You've been disconnected due to a time gap between you and the server.
+*/
+ MSG_SPEEDHACK = 0xf1,
+/*20171018 to latest
+화살을 장착하세요
+Please equip the proper ammunition first.
+*/
+ MSG_ERR_ATTACK_ARROW = 0xf2,
+/*20171018 to latest
+중량과다로 공격이나 스킬을 사용할 수 없습니다.
+You can't attack or use skills because you've exceeded the Weight Limit.
+*/
+ MSG_ERR_ATTACK_WEIGHT = 0xf3,
+/*20171018 to latest
+중량과다로 스킬을 사용할 수 없습니다.
+You can't use skills because you've exceeded the Weight Limit.
+*/
+ MSG_ERR_SKILL_WEIGHT = 0xf4,
+/*20171018 to latest
+화살이 장착되었습니다.
+Ammunition has been equipped.
+*/
+ MSG_MSG_ARROW_EQUIPMENT_SUCCESS = 0xf5,
+/*20171018 to latest
+레드젬스톤이 필요합니다.
+Red Gemstone required.
+*/
+ MSG_NEED_REDJAMSTONE = 0xf6,
+/*20171018 to latest
+블루젬스톤이 필요합니다.
+Blue Gemstone required.
+*/
+ MSG_NEED_BLUEJAMSTONE = 0xf7,
+/*20171018 to latest
+힘 파라메터
+Strength
+*/
+ MSG_DESC_STR = 0xf8,
+/*20171018 to latest
+민첩성 파라메터
+Agility
+*/
+ MSG_DESC_AGI = 0xf9,
+/*20171018 to latest
+체력 파라메터
+Vitality
+*/
+ MSG_DESC_VIT = 0xfa,
+/*20171018 to latest
+지력 파라메터
+Intelligence
+*/
+ MSG_DESC_INT = 0xfb,
+/*20171018 to latest
+손재주 파라메터
+Dexterity
+*/
+ MSG_DESC_DEX = 0xfc,
+/*20171018 to latest
+운 파라메터
+Luck
+*/
+ MSG_DESC_LUK = 0xfd,
+/*20171018 to latest
+공격력
+Hit Point
+*/
+ MSG_DESC_ATK = 0xfe,
+/*20171018 to latest
+방어력
+Defence Rate
+*/
+ MSG_DESC_DEF = 0xff,
+/*20171018 to latest
+명중률
+Accuracy
+*/
+ MSG_DESC_HIT = 0x100,
+/*20171018 to latest
+필살공격률
+Critical Attack
+*/
+ MSG_DESC_CRI = 0x101,
+/*20171018 to latest
+소속길드
+Affiliated Guild
+*/
+ MSG_DESC_GUILD = 0x102,
+/*20171018 to latest
+각 파라메터 레벨업에 사용되는 포인트
+Points to level up each Parameter
+*/
+ MSG_DESC_POINT = 0x103,
+/*20171018 to latest
+마법공격력
+Magic Attack
+*/
+ MSG_DESC_MATK = 0x104,
+/*20171018 to latest
+마법방어력
+Magic Defense
+*/
+ MSG_DESC_MDEF = 0x105,
+/*20171018 to latest
+회피율
+Dodge
+*/
+ MSG_DESC_FLEE = 0x106,
+/*20171018 to latest
+공격스피드
+Attack Speed
+*/
+ MSG_DESC_ASPD = 0x107,
+/*20171018 to latest
+지역당 수용인원 초과로 접속할 수 없습니다.
+Server is jammed due to over population. Please try again shortly.
+*/
+ MSG_PC_OVERFLOW = 0x108,
+/*20171018 to latest
+옵션
+Option
+*/
+ MSG_OPTIONWND = 0x109,
+/*20171018 to latest
+E-MAIL 인증이 되지않았거나 블럭된 계정입니다.
+Account ID blocked by the Game Master Team.
+*/
+ MSG_ID_EMAIL_CONFIRM_NEEDED = 0x10a,
+/*20171018 to latest
+비밀번호가 틀립니다.
+Incorrect User ID or Password. Please try again.
+*/
+ MSG_INCORRECT_LOGIN_PASSWORD = 0x10b,
+/*20171018 to latest
+머리모양 선택
+Choose Hairstyle
+*/
+ MSG_SELECT_HAIR_STYLE = 0x10c,
+/*20171018 to latest
+공격력
+Hit Point
+*/
+ MSG_ATK = 0x10d,
+/*20171018 to latest
+방어력
+Defence Rate
+*/
+ MSG_DEF = 0x10e,
+/*20171018 to latest
+공격스냅 On
+Attack Snap On
+*/
+ MSG_ATTACK_SNAP_ON = 0x10f,
+/*20171018 to latest
+공격스냅 Off
+Attack Snap Off
+*/
+ MSG_ATTACK_SNAP_OFF = 0x110,
+/*20171018 to latest
+스킬스냅 On
+Skill Snap On
+*/
+ MSG_SKILL_SNAP_ON = 0x111,
+/*20171018 to latest
+스킬스냅 Off
+Skill Snap Off
+*/
+ MSG_SKILL_SNAP_OFF = 0x112,
+/*20171018 to latest
+/스냅 or /snap: 몬스터 공격시 스냅 On Off /스킬스냅 or /skillsnap: 스킬로 몬스터 공격시 스냅 On Off /아이템스냅 or /itemsnap: 아이템 주울때 스냅 On Off
+/snap: Turns snap On | Off for fights, /skillsnap: Turns snap On | Off for skills. /itemsnap: Turns snap On | Off for items on the grounds.
+*/
+ MSG_EXPLAIN_SNAP = 0x113,
+/*20171018 to latest
+아이템스냅 On
+Item Snap On
+*/
+ MSG_ITEM_SNAP_ON = 0x114,
+/*20171018 to latest
+아이템스냅 Off
+Item Snap Off
+*/
+ MSG_ITEM_SNAP_OFF = 0x115,
+/*20171018 to latest
+스냅
+Snap
+*/
+ MSG_SNAP = 0x116,
+/*20171018 to latest
+한가지 아이템을 3만개 이상 가질수 없습니다.
+You cannot carry more than 30,000 of one kind of item.
+*/
+ MSG_CANT_GET_ITEM_OVERCOUNT_ONEITEM = 0x117,
+/*20171018 to latest
+레벨 30이상의 캐릭터는 삭제할 수 없습니다. 삭제를 원하시면 관계자에게 문의 하세요.
+You cannot delete a Character with a level greater than 30. If you want to delete the character please contact a Game Master.
+*/
+ MSG_CANT_DELETE_CHARACTER_OVER_30_LEVEL = 0x118,
+/*20171018 to latest
+아이템 교환중에는 아이템을 사고 팔 수 없습니다.
+You cannot use an NPC shop while in a trade.
+*/
+ MSG_FAIL_BUY_ITEM_ITEM_EXCHANGING = 0x119,
+/*20171018 to latest
+상점명
+Shop Name
+*/
+ MSG_STALL_NAME = 0x11a,
+/*20171018 to latest
+스킬목록
+Skill Tree
+*/
+ MSG_SKILLLIST = 0x11b,
+/*20171018 to latest
+스킬포인트 : %d
+Skill Point: %d
+*/
+ MSG_SKILLPOINT = 0x11c,
+/*20171018 to latest
+스킬사용 실패
+Skill has failed.
+*/
+ MSG_USESKILL_FAIL = 0x11d,
+/*20171018 to latest
+패시브
+Passive
+*/
+ MSG_PASSIVE = 0x11e,
+/*20171018 to latest
+각자 취득
+Individual
+*/
+ MSG_EXPDIV1 = 0x11f,
+/*20171018 to latest
+균등하게 분배
+Shared
+*/
+ MSG_EXPDIV2 = 0x120,
+/*20171018 to latest
+각자 취득
+Individual
+*/
+ MSG_ITEMCOLLECT1 = 0x121,
+/*20171018 to latest
+파티 전체 공유
+Party Share
+*/
+ MSG_ITEMCOLLECT2 = 0x122,
+/*20171018 to latest
+파티 설정
+Party Setup
+*/
+ MSG_PARTYSETTING = 0x123,
+/*20171018 to latest
+경험치 분배방식
+How to share EXP
+*/
+ MSG_HOWEXPDIV = 0x124,
+/*20171018 to latest
+아이템 수집방식
+How to share Items
+*/
+ MSG_HOWITEMCOLLECT = 0x125,
+/*20171018 to latest
+파티 리더만 설정할 수 있습니다.
+Only the Party Leader can change this setting.
+*/
+ MSG_ONLY_PARTYMASTER = 0x126,
+/*20171018 to latest
+아이템 갯수 안물어보기
+Toggle Item Amount.
+*/
+ MSG_NOQUESTION_ITEMCOUNT = 0x127,
+/*20171018 to latest
+^ff0000%d^000000 초 후에 캐릭터가 지워집니다. 취소 하려면 취소 버튼을 누르세요.
+Character will be deleted after ^ff0000%d^000000 seconds. Press Cancel to quit.
+*/
+ MSG_CHARARATER_DELETE_COUNT = 0x128,
+/*20171018 to latest
+교환할 수 있는 최대 아이템 갯수는 10가지 입니다.
+You cannot trade more than 10 types of items per trade.
+*/
+ MSG_MAXEXCHANGE_IS_10_KIND = 0x129,
+/*20171018 to latest
+이서버를 이용할 수 없는 나이입니다.
+You are underaged.
+*/
+ MSG_LIMIT_AGE = 0x12a,
+/*20171018 to latest
+이메일 주소를 입력하세요.
+Please enter the deletion password.
+*/
+ MSG_ENTER_EMAIL = 0x12b,
+/*20171018 to latest
+이메일 주소 입력하기
+E-mail Address (Case Sensitive).
+*/
+ MSG_ENTER_EMAIL_TOOLTIP = 0x12c,
+/*20171018 to latest
+이메일 주소가 틀려서 캐릭터가 삭제 되지 않았습니다.
+Character Deletion has failed because you have entered an incorrect e-mail address.
+*/
+ MSG_CANNOT_DELETE_CHARACTER_EMAIL = 0x12d,
+/*20171018 to latest
+계정 비밀번호를 입력하세요.
+Enter Second Serial Cord of your Social Security number.
+*/
+ MSG_ENTER_PEOPLE_REG_NUMBER = 0x12e,
+/*20171018 to latest
+비밀번호가 틀려서 캐릭터가 삭제 되지 않았습니다.
+Character Deletion has failed because you have entered an incorrect SSN.
+*/
+ MSG_CANNOT_DELETE_CHARACTER_PEOPLE_REG_NUMBER = 0x12f,
+/*20171018 to latest
+한번에 15가지 이상의 아이템을 팔 수 없습니다.
+You can't sell more than 15 types of Items at one time.
+*/
+ MSG_CANT_SELL_OVER_15 = 0x130,
+/*20171018 to latest
+나이제한 때문에 이계정으로 이서버에 접속할 수 없습니다.
+The age limit from commandment tables cannot connect to this server.
+*/
+ MSG_UNDER_AGE = 0x131,
+/*20171018 to latest
+무게가 50 퍼센트 이상일때는 HP SP가 자연적으로 회복이 되지 않습니다.
+HP/SP will not be restored when your carried weight is over 50% of the Weight Limit.
+*/
+ MSG_NO_RECOVER_OVERWEIGHT = 0x132,
+/*20171018 to latest
+무게가 90 퍼센트 이상일때는 공격과 스킬을 사용할 수 없습니다.
+You can't use Skills or Attack while your carried weight is over 90% of your Weight Limit.
+*/
+ MSG_NO_ATTACK_OVERWEIGHT = 0x133,
+/*20171018 to latest
+HP SP가 자연적으로 회복이 가능한 상태가 되었습니다.
+Your HP/SP are now being restored naturally.
+*/
+ MSG_NO_RECOVER_OVERWEIGHT_RELEASED = 0x134,
+/*20171018 to latest
+공격과 스킬이 가능한 상태가 되었습니다.
+Attack and Skills are now available.
+*/
+ MSG_NO_ATTACK_OVERWEIGHT_RELEASED = 0x135,
+/*20171018 to latest
+서버 점검중입니다.
+Your Game's Exe File is not the latest version.
+*/
+ MSG_INVALID_VERSION = 0x136,
+/*20171018 to latest
+아이템이 모두 팔렸습니다.
+Items are sold out.
+*/
+ MSG_ITEM_IS_SOLD_OUT = 0x137,
+/*20171018 to latest
+채팅내용 파일로 저장하기
+Save Chat as Text File
+*/
+ MSG_WRITE_CHAT_TO_FILE = 0x138,
+/*20171018 to latest
+/갈무리 or /savechat : 채팅 내용 파일로 저장하기.
+/savechat: Save a Chat Log
+*/
+ MSG_EXPLAIN_SAVE_CHAT = 0x139,
+/*20171018 to latest
+계정 만들기
+Register
+*/
+ MSG_MAKEACCOUNT = 0x13a,
+/*20171018 to latest
+수신거부하기
+Reject Whispering
+*/
+ MSG_REQ_EX_LIST = 0x13b,
+/*20171018 to latest
+수신거부해제하기
+Allow Whispering
+*/
+ MSG_REQ_IN = 0x13c,
+/*20171018 to latest
+미스표시 On
+Shows ''Miss''
+*/
+ MSG_MISS_EFFECT_ON = 0x13d,
+/*20171018 to latest
+미스표시 Off
+Shows ''Miss''
+*/
+ MSG_MISS_EFFECT_OFF = 0x13e,
+/*20171018 to latest
+카메라고정 On
+Camera Zooming On
+*/
+ MSG_FIXED_CAMERA_ON = 0x13f,
+/*20171018 to latest
+카메라고정 Off
+Camera Zooming Off
+*/
+ MSG_FIXED_CAMERA_OFF = 0x140,
+/*20171018 to latest
+/camera : 플레이어에게 카메라고정 On Off /miss : 미스이펙트 On Off
+/camera: Camera Zooming On or Off. /miss: Toggle ''Miss'' display
+*/
+ MSG_EXPLAIN_CAMERA_MISS = 0x141,
+/*20171018 to latest
+스킬정보보기
+View Skill Info
+*/
+ MSG_SEE_INFORMATION_OF_SKILL = 0x142,
+/*20171018 to latest
+스킬이름바꾸기
+Change Skill
+*/
+ MSG_CHANGE_SKILL_NAME = 0x143,
+/*20171018 to latest
+스프라이트 해상도
+Sprite Resolution
+*/
+ MSG_SPRITE_RESOLUTION = 0x144,
+/*20171018 to latest
+텍스쳐 해상도
+Texture Resolution
+*/
+ MSG_TEXTURE_RESOLUTION = 0x145,
+/*20171018 to latest
+디테일 조정
+Arrange Detail
+*/
+ MSG_DETAILLEVELWND = 0x146,
+/*20171018 to latest
+%s Zeny 획득
+You got %s Zeny
+*/
+ MSG_GET_ZENY = 0x147,
+/*20171018 to latest
+길드명
+Guild Name
+*/
+ MSG_GUILDNAME = 0x148,
+/*20171018 to latest
+길드레벨
+Guild lvl
+*/
+ MSG_GUILDLEVEL = 0x149,
+/*20171018 to latest
+마스터이름
+ClanMaster Name
+*/
+ MSG_GUILD_MASTER_NAME = 0x14a,
+/*20171018 to latest
+조합원수
+Number of Members
+*/
+ MSG_GUILD_NUM_MEMBER = 0x14b,
+/*20171018 to latest
+조합원 평균레벨
+Avg.lvl of Guildsmen
+*/
+ MSG_GUILD_AVG_MEMBER_LEVEL = 0x14c,
+/*20171018 to latest
+관리영지
+Castles Owned
+*/
+ MSG_GUILD_MANAGE_LAND = 0x14d,
+/*20171018 to latest
+성향
+Tendency
+*/
+ MSG_GUILD_FAIR = 0x14e,
+/*20171018 to latest
+경험치
+EXP
+*/
+ MSG_GUILD_EXP = 0x14f,
+/*20171018 to latest
+길드엠블렘
+Emblem
+*/
+ MSG_GUILD_EMBLEM = 0x150,
+/*20171018 to latest
+길드상납포인트
+Tax Point
+*/
+ MSG_GUILD_POINT = 0x151,
+/*20171018 to latest
+동맹길드
+Alliances
+*/
+ MSG_ALLY_GUILD = 0x152,
+/*20171018 to latest
+적대길드
+Antagonists
+*/
+ MSG_HOSTILITY_GUILD = 0x153,
+/*20171018 to latest
+길드정보
+Guild Info
+*/
+ MSG_GUILDINFOMANAGE = 0x154,
+/*20171018 to latest
+조합원정보
+Guildsmen Info
+*/
+ MSG_GUILDMEMBERMANAGE = 0x155,
+/*20171018 to latest
+직위설정
+Position
+*/
+ MSG_GUILDPOSITIONMANAGE = 0x156,
+/*20171018 to latest
+길드스킬
+Guild Skill
+*/
+ MSG_GUILDSKILL = 0x157,
+/*20171018 to latest
+추방자 리스트
+Expel History
+*/
+ MSG_GUILDBANISHEDMEMBER = 0x158,
+/*20171018 to latest
+공지사항
+Guild Notice
+*/
+ MSG_GUILDNOTICE = 0x159,
+/*20171018 to latest
+전체길드 리스트
+Entire Guild List
+*/
+ MSG_GUILDTOTALINFO = 0x15a,
+/*20171018 to latest
+귓말 리스트
+Whispering List
+*/
+ MSG_WHISPERLISTWND = 0x15b,
+/*20171018 to latest
+귓말창 열기
+Open Whispering Window
+*/
+ MSG_OPENWHISPERLISTWND = 0x15c,
+/*20171018 to latest
+귓말 리스트 창 여는법 : [Alt] + [H] 를 누르면 귓말 리스트 창이 열립니다.
+How to Open Whispering List: Press [Alt] + [H]
+*/
+ MSG_EXPLAIN_WHISPER_LIST_WND = 0x15d,
+/*20171018 to latest
+자동으로 귓말창 열기
+Open Whispering List Automatically
+*/
+ MSG_AUTOOPENWHISPERLISTWND = 0x15e,
+/*20171018 to latest
+지우기
+Delete
+*/
+ MSG_DELETE = 0x15f,
+/*20171018 to latest
+다음부터 열리지 않음
+Close since next
+*/
+ MSG_DONTOPEN = 0x160,
+/*20171018 to latest
+마지막으로 접속한 시간
+Last Log-in Time
+*/
+ MSG_LAST_LOGIN_TIME = 0x161,
+/*20171018 to latest
+마지막으로 접속한 IP
+Last Log-in IP
+*/
+ MSG_LAST_LOGIN_IP = 0x162,
+/*20171018 to latest
+친구 설정
+Friend Setup
+*/
+ MSG_FRIEND_SETTING = 0x163,
+/*20171018 to latest
+정말 지우시겠습니까?
+Are you sure that you want to delete?
+*/
+ MSG_DO_YOU_REALLY_WANT_DELETE = 0x164,
+/*20171018 to latest
+정말 탈퇴하시겠습니까?
+Are you sure that you want to leave?
+*/
+ MSG_DO_YOU_REALLY_WANT_LEAVE = 0x165,
+/*20171018 to latest
+친구로 등록하기
+Register as a Friend
+*/
+ MSG_ADD_TO_FRIEND_CHAR_LIST = 0x166,
+/*20171018 to latest
+친구일때 자동으로 1:1창 열기
+Open 1:1 Chat between Friends
+*/
+ MSG_AUTOOPENWHISPERLISTWND_FRIEND = 0x167,
+/*20171018 to latest
+1:1창 열기
+Open 1:1 Chat
+*/
+ MSG_OPEN_1ON1_WINDOW = 0x168,
+/*20171018 to latest
+친구가 아닐때 자동으로 1:1창 열기
+Open 1:1 Chat between Strangers
+*/
+ MSG_AUTOOPEN_1ON1_WINDOW = 0x169,
+/*20171018 to latest
+1:1창 열릴때 소리로 알림
+Alarm when you recieve a 1:1 Chat
+*/
+ MSG_WHISPER_OPEN_SOUND = 0x16a,
+/*20171018 to latest
+정말 제명시키시겠습니까?
+Are you sure that you want to expel?
+*/
+ MSG_DO_YOU_REALLY_WANT_EXPEL = 0x16b,
+/*20171018 to latest
+%s 님이 길드를 탈퇴했습니다.
+%s has withdrawn from the guild.
+*/
+ MSG_USER_LEFT_GUILD = 0x16c,
+/*20171018 to latest
+탈퇴사유 : %s
+Secession Reason: %s
+*/
+ MSG_REASON_LEAVE_GUILD = 0x16d,
+/*20171018 to latest
+길드명이 일치하지 않습니다
+You have failed to disband the guild.
+*/
+ MSG_DISORGANIZE_GUILD_FAILURE = 0x16e,
+/*20171018 to latest
+길드해체사유 : %s
+Disband Reason: %s
+*/
+ MSG_DISORGANIZATION_REASON = 0x16f,
+/*20171018 to latest
+해당 계정은 삭제된 아이디 입니다.
+This ID has been removed.
+*/
+ MSG_DELETED_ACCOUNT = 0x170,
+/*20171018 to latest
+판매가 :
+Price:
+*/
+ MSG_SELLPRICE = 0x171,
+/*20171018 to latest
+%s 님이 길드에서 추방되었습니다.
+%s has been expelled from our guild.
+*/
+ MSG_BAN_GUILD = 0x172,
+/*20171018 to latest
+추방사유 : %s
+Expulsion Reason: %s
+*/
+ MSG_REASON_BAN_GUILD = 0x173,
+/*20171018 to latest
+아이템을 착용할 수 없습니다.
+You can't put this item on.
+*/
+ MSG_CAN_NOT_EQUIP_ITEM = 0x174,
+/*20171018 to latest
+파티설정을 변경할 수 없습니다.
+You can't modify Party Setup.
+*/
+ MSG_PARTYSETTING_CHANGE_IMPOSSIBLE = 0x175,
+/*20171018 to latest
+길드가 만들어 졌습니다.
+Guild has been Created.
+*/
+ MSG_GUILD_MAKE_SUCCESS = 0x176,
+/*20171018 to latest
+이미 길드에 속해있습니다.
+You are already in a Guild.
+*/
+ MSG_GUILD_MAKE_ALREADY_MEMBER = 0x177,
+/*20171018 to latest
+같은이름의 길드가 존재합니다.
+That Guild Name already exists.
+*/
+ MSG_GUILD_MAKE_GUILD_EXIST = 0x178,
+/*20171018 to latest
+ 길드에서 초청 메시지가 왔습니다. 가입하겠습니까?
+ Guild has sent you an invitation. Would you like to join this Guild?
+*/
+ MSG_SUGGEST_JOIN_GUILD = 0x179,
+/*20171018 to latest
+다른길드에 가입되어 있습니다.
+He/She is already in a Guild.
+*/
+ MSG_CHARACTER_IS_ALREADY_IN_GUILD = 0x17a,
+/*20171018 to latest
+길드가입을 거절 했습니다.
+Offer Rejected
+*/
+ MSG_CHARACTER_REJECT_JOIN_GUILD = 0x17b,
+/*20171018 to latest
+길드가입을 수락했습니다.
+Offer Accepted
+*/
+ MSG_CHARACTER_ACCEPT_JOIN_GUILD = 0x17c,
+/*20171018 to latest
+길드정원을 초과했습니다.
+Your Guild is Full.
+*/
+ MSG_TOO_MANY_PEOPLE_IN_GUILD = 0x17d,
+/*20171018 to latest
+(%s)님 길드에 가입요청
+Send (%s) a Guild invitation
+*/
+ MSG_REQ_JOIN_GUILD = 0x17e,
+/*20171018 to latest
+스킬 레벨이 모자라서 매너포인트를 줄 수 없습니다.
+You haven't learned enough skills for aligning.
+*/
+ MSG_NOT_ENOUGH_FOR_MANNER_POINT = 0x17f,
+/*20171018 to latest
+매너 포인트 주기 성공
+Aligning completed.
+*/
+ MSG_GIVING_MANNER_POINT_SUCCESS = 0x180,
+/*20171018 to latest
+오늘 이미 사용했습니다.
+You already spent your point for today.
+*/
+ MSG_YOU_USE_TODAY_ALREADY = 0x181,
+/*20171018 to latest
+이캐릭터에게 지급한지 한달이 지나지 않았습니다.
+Hasn't been a month yet since you aligned this person.
+*/
+ MSG_ONE_MONTH_NOT_PASSED = 0x182,
+/*20171018 to latest
+%s 님으로부터 플러스 매너 포인트를 받았습니다.
+Remember, Spamming isn't nice.
+*/
+ MSG_RECEIVE_PLUS_MANNER_POINT = 0x183,
+/*20171018 to latest
+%s 님으로부터 마이너스 매너 포인트를 받았습니다.
+Please refrain from ill-mannered conduct, thank you.
+*/
+ MSG_RECEIVE_MINUS_MANNER_POINT = 0x184,
+/*20171018 to latest
+채팅 금지 시간 줄이기(풀기)
+Align with a Good Point
+*/
+ MSG_GIVE_PLUS_MANNER_POINT = 0x185,
+/*20171018 to latest
+채팅 금지 시간 늘이기(걸기)
+Align with a Bad Point
+*/
+ MSG_GIVE_MINUS_MANNER_POINT = 0x186,
+/*20171018 to latest
+(%s)님과의 거래요청
+Request a deal with (%s)
+*/
+ MSG_REQ_DEAL_WITH2 = 0x187,
+/*20171018 to latest
+(%s)님 파티에 가입요청
+Ask (%s) to join your party
+*/
+ MSG_REQ_JOIN_PARTY2 = 0x188,
+/*20171018 to latest
+ 길드에서 동맹요청 메시지가 왔습니다. 동맹하겠습니까?
+ Guild is asking you to agree to an Alliance with them. Do you accept?
+*/
+ MSG_SUGGEST_ALLY_GUILD = 0x189,
+/*20171018 to latest
+이미 동맹되어 있습니다.
+This Guild is already your Ally.
+*/
+ MSG_REQALLYGUILD_ALREADY_ALLIED = 0x18a,
+/*20171018 to latest
+동맹을 거절 했습니다.
+You reject the offer
+*/
+ MSG_REQALLYGUILD_REJECT = 0x18b,
+/*20171018 to latest
+동맹을 수락 했습니다.
+You accept the offer
+*/
+ MSG_REQALLYGUILD_ACCEPT = 0x18c,
+/*20171018 to latest
+상대길드의 동맹길드의 수가 초과 되었습니다.
+They have too many Alliances.
+*/
+ MSG_REQALLYGUILD_OVERSIZE = 0x18d,
+/*20171018 to latest
+길드의 동맹길드의 수가 초과 되었습니다.
+You have too many Alliances.
+*/
+ MSG_REQALLYMYGUILD_OVERSIZE = 0x18e,
+/*20171018 to latest
+길드 동맹 요청
+Set this guild as an Alliance
+*/
+ MSG_REQ_ALLY_GUILD = 0x18f,
+/*20171018 to latest
+길드가 성공적으로 해체 되었습니다.
+Guild was successfully disbanded.
+*/
+ MSG_DISORGANIZE_GUILD_SUCCESS = 0x190,
+/*20171018 to latest
+주민등록번호가 틀려서 길드가 해체되지 않았습니다.
+You have failed to disband the guild due to your incorrect SSN.
+*/
+ MSG_DISORGANIZE_GUILD_INVALIDKEY = 0x191,
+/*20171018 to latest
+길드맴버가 존재해서 길드가 해체되지 않았습니다.
+You have failed to disband the guild because there are guildsmen still present.
+*/
+ MSG_DISORGANIZE_GUILD_MEMBEREXIST = 0x192,
+/*20171018 to latest
+길드 적대 요청
+Set this guild as an Antagonist
+*/
+ MSG_REQ_HOSTILE_GUILD = 0x193,
+/*20171018 to latest
+머리색깔 선택
+Choose Hair Color
+*/
+ MSG_SELECT_HAIR_COLOR = 0x194,
+/*20171018 to latest
+길드결성시 필요한 아이템이 없습니다.
+You don't have necessary item to create a Guild.
+*/
+ MSG_GUILD_MAKE_GUILD_NONE_ITEM = 0x195,
+/*20171018 to latest
+몬스터 정보
+Monster Info
+*/
+ MSG_MONSTER_INFO_WINDOW = 0x196,
+/*20171018 to latest
+이름
+Name
+*/
+ MSG_NAME = 0x197,
+/*20171018 to latest
+레벨
+Level
+*/
+ MSG_LEVEL = 0x198,
+/*20171018 to latest
+HP
+*/
+ MSG_HP = 0x199,
+/*20171018 to latest
+크기
+Size
+*/
+ MSG_SIZE = 0x19a,
+/*20171018 to latest
+종족
+Type
+*/
+ MSG_RACETYPE = 0x19b,
+/*20171018 to latest
+MDEF
+*/
+ MSG_MDEFPOWER = 0x19c,
+/*20171018 to latest
+속성
+Attribute
+*/
+ MSG_PROPERTY = 0x19d,
+/*20171018 to latest
+無
+Neutral
+*/
+ MSG_PROPERTY_NEUTURAL = 0x19e,
+/*20171018 to latest
+水
+Water
+*/
+ MSG_PROPERTY_WATER = 0x19f,
+/*20171018 to latest
+地
+Earth
+*/
+ MSG_PROPERTY_EARTH = 0x1a0,
+/*20171018 to latest
+火
+Fire
+*/
+ MSG_PROPERTY_FIRE = 0x1a1,
+/*20171018 to latest
+風
+Wind
+*/
+ MSG_PROPERTY_WIND = 0x1a2,
+/*20171018 to latest
+毒
+Poison
+*/
+ MSG_PROPERTY_POISON = 0x1a3,
+/*20171018 to latest
+聖
+Holy
+*/
+ MSG_PROPERTY_SAINT = 0x1a4,
+/*20171018 to latest
+暗
+Shadow
+*/
+ MSG_PROPERTY_DARK = 0x1a5,
+/*20171018 to latest
+念
+Ghost
+*/
+ MSG_PROPERTY_MENTAL = 0x1a6,
+/*20171018 to latest
+死
+Undead
+*/
+ MSG_PROPERTY_UNDEAD = 0x1a7,
+/*20171018 to latest
+현재는 아이템을 만들 수 없습니다.
+You can't create items yet.
+*/
+ MSG_CANT_MAKE_ITEM = 0x1a8,
+/*20171018 to latest
+제조 목록
+Item List you can craft
+*/
+ MSG_MAKE_LIST = 0x1a9,
+/*20171018 to latest
+ 만들기
+ Create
+*/
+ MSG_MAKE_TARGET = 0x1aa,
+/*20171018 to latest
+ 에 필요한 재료:
+'s materials
+*/
+ MSG_REQUIRE_FOR_MAKE_TARGET = 0x1ab,
+/*20171018 to latest
+ 만들기 실패
+ item creation failed.
+*/
+ MSG_MAKE_TARGET_FAIL = 0x1ac,
+/*20171018 to latest
+ 만들기 성공
+ item created successfully.
+*/
+ MSG_MAKE_TARGET_SUCCEESS = 0x1ad,
+/*20171018 to latest
+%s 만들기를 실패하였습니다.
+ item creation failed.
+*/
+ MSG_MAKE_TARGET_FAIL_MSG = 0x1ae,
+/*20171018 to latest
+%s 만들기를 성공했습니다.
+ item created successfully.
+*/
+ MSG_MAKE_TARGET_SUCCEESS_MSG = 0x1af,
+/*20171018 to latest
+레벨이 부족합니다.
+You are not the required lvl.
+*/
+ MSG_NOT_ENOUGH_LEVEL = 0x1b0,
+/*20171018 to latest
+레벨이 너무 높습니다.
+Too high lvl for this job.
+*/
+ MSG_TOO_HIGH_LEVEL = 0x1b1,
+/*20171018 to latest
+직업이 적합하지 않습니다.
+Not the suitable job for this type of work.
+*/
+ MSG_NOT_ACCEPTABLE_JOB = 0x1b2,
+/*20171018 to latest
+토키 박스 트랩 메세지
+Record a message in the Talkie Box
+*/
+ MSG_TALKBOX_WINDOW = 0x1b3,
+/*20171018 to latest
+기록할 메세지를 입력하시기 바랍니다.
+Please type a message for the Talkie Box
+*/
+ MSG_TALKBOX_WINDOW_MSG = 0x1b4,
+/*20171018 to latest
+길드에게 보냄
+Send to Guild
+*/
+ MSG_SEND_TO_GUILD = 0x1b5,
+/*20171018 to latest
+결제된 계정이 아닙니다. 결제 페이지로 이동하시겠습니까?
+You didn't pay for this ID. Would you like to pay for it now?
+*/
+ MSG_NOT_SETTLED = 0x1b6,
+/*20171018 to latest
+서버가 혼잡한 관계로 잠시후 다시 시도해 주시기 바랍니다.
+Server is jammed due to overpopulation. Please try again after few minutes.
+*/
+ MSG_ACCOUNT_BUSY = 0x1b7,
+/*20171018 to latest
+지난 접속 정보가 남아 있습니다. 30초정도 지난뒤에 다시 시도해 주시기 바랍니다.
+Server still recognizes your last log-in. Please try again after a few minutes.
+*/
+ MSG_INFORMATION_REMAINED = 0x1b8,
+/*20171018 to latest
+매 풀어주기
+Release Falcon
+*/
+ MSG_BIRDOFF = 0x1b9,
+/*20171018 to latest
+페코페코 내리기
+Dismount
+*/
+ MSG_CHIKENOFF = 0x1ba,
+/*20171018 to latest
+小
+Small
+*/
+ MSG_SIZE_SMALL = 0x1bb,
+/*20171018 to latest
+中
+Med
+*/
+ MSG_SIZE_MIDDLE = 0x1bc,
+/*20171018 to latest
+大
+Big
+*/
+ MSG_SIZE_BIG = 0x1bd,
+/*20171018 to latest
+더블
+Double
+*/
+ MSG_DOUBLE = 0x1be,
+/*20171018 to latest
+트리플
+Triple
+*/
+ MSG_TRIPLE = 0x1bf,
+/*20171018 to latest
+쿼드로플
+Quadruple
+*/
+ MSG_QUADROPLE = 0x1c0,
+/*20171018 to latest
+%s 까지 로그인을 금지하고 있습니다.
+You are prohibited to log in until %s.
+*/
+ MSG_LOGIN_REFUSE_BLOCKED_UNTIL = 0x1c1,
+/*20171018 to latest
+의
+'s
+*/
+ MSG_MANUFACTURED_NORMAL_ITEM = 0x1c2,
+/*20171018 to latest
+의 파이어
+'s Fire
+*/
+ MSG_MANUFACTURED_FIRE_ITEM = 0x1c3,
+/*20171018 to latest
+의 아이스
+'s Ice
+*/
+ MSG_MANUFACTURED_ICE_ITEM = 0x1c4,
+/*20171018 to latest
+의 윈드
+'s Wind
+*/
+ MSG_MANUFACTURED_WIND_ITEM = 0x1c5,
+/*20171018 to latest
+의 어스
+'s Earth
+*/
+ MSG_MANUFACTURED_EARTH_ITEM = 0x1c6,
+/*20171018 to latest
+211.239.161.246
+38.144.194.2
+*/
+ MSG_ACCOUNT_ADDRESS = 0x1c7,
+/*20171018 to latest
+6900
+*/
+ MSG_ACCOUNT_PORT = 0x1c8,
+/*20171018 to 20171206
+http://www.ragnarok.co.kr
+20171208 to latest
+http://roz.gnjoy.com/
+http://www.ragnarok.co.kr
+*/
+ MSG_REGISTRATION_WEB_URL = 0x1c9,
+/*20171018 to latest
+%s 사용자 강제 종료
+Kill %s
+*/
+ MSG_BAN_USER = 0x1ca,
+/*20171018 to latest
+무지쎈
+Very Strong
+*/
+ MSG_ONE_STARPIECE = 0x1cb,
+/*20171018 to latest
+무지무지쎈
+Very Very Strong
+*/
+ MSG_TWO_STARPIECE = 0x1cc,
+/*20171018 to latest
+무무무쎈
+Very Very Very Strong
+*/
+ MSG_THREE_STARPIECE = 0x1cd,
+/*20171018 to latest
+길드 추방 사유
+The Reason of Expulsion
+*/
+ MSG_GUILD_KICK_REASON = 0x1ce,
+/*20171018 to latest
+ 공격 속도가 증가했습니다.
+Attack Speed is up.
+*/
+ MSG_INCATTACKSPEED = 0x1cf,
+/*20171018 to latest
+ 공격 속도가 감소했습니다.
+Attack Speed is down.
+*/
+ MSG_DECATTACKSPEED = 0x1d0,
+/*20171018 to latest
+ 무기의 공격력이 향상되었습니다.
+Weapon Damage is improved.
+*/
+ MSG_INCWEAPONATTACK = 0x1d1,
+/*20171018 to latest
+ 무기의 공격력이 감소되었습니다.
+Weapon Damage is reduced.
+*/
+ MSG_DECWEAPONATTACK = 0x1d2,
+/*20171018 to latest
+ 시전 딜레이가 줄었습니다.
+Cast Delay is reduced.
+*/
+ MSG_FASTPREDELAY = 0x1d3,
+/*20171018 to latest
+ 시전 딜레이가 정상으로 되었습니다.
+Cast Delay has returned to normal.
+*/
+ MSG_NORMALPREDELAY = 0x1d4,
+/*20171018 to latest
+ 무기에 독속성이 부여되었습니다.
+Weapon is temporarily enchanted with Poison.
+*/
+ MSG_WEAPONPROPERTYPOISON = 0x1d5,
+/*20171018 to latest
+ 무기에 성속성이 부여되었습니다.
+Weapon is temporarily enchanted with an elemental property.
+*/
+ MSG_WEAPONPROPERTYSAINT = 0x1d6,
+/*20171018 to latest
+ 무기의 원래속성이 적용되었습니다.
+Weapon has changed back to normal.
+*/
+ MSG_WEAPONPROPERTYORIGINAL = 0x1d7,
+/*20171018 to latest
+ 방어구에 성속성이 부여되었습니다.
+Armor has been enchanted with the Holy Ghost.
+*/
+ MSG_ARMORPROPERTYSAINT = 0x1d8,
+/*20171018 to latest
+ 방어구의 원래속성이 적용되었습니다.
+Armor has changed back to normal.
+*/
+ MSG_ARMORPROPERTYORIGINAL = 0x1d9,
+/*20171018 to latest
+ 배리어 상태가 되었습니다.
+Barrier Formed.
+*/
+ MSG_BARRIOR = 0x1da,
+/*20171018 to latest
+ 배리어 상태가 해제 되었습니다.
+Barrier Canceled.
+*/
+ MSG_DISAPPEARBARRIOR = 0x1db,
+/*20171018 to latest
+ 소형, 중형, 대형 몬스터에게 100% 공격력을 줍니다.
+Weapon Perfection Initiated.
+*/
+ MSG_PERFECTDAMAGE = 0x1dc,
+/*20171018 to latest
+ 웨폰퍼펙션 모드가 해제 되었습니다.
+Weapon perfection Canceled.
+*/
+ MSG_DISAPPEARPERFECTDAMAGE = 0x1dd,
+/*20171018 to latest
+ 무기가 파괴될 가능성이 높아진 대신 무기의 공격력이 증가하였습니다.
+Power-Thrust Initiated.
+*/
+ MSG_OVERTHRUSTING = 0x1de,
+/*20171018 to latest
+ 오버트러스트 상태가 해제 되었습니다.
+Power-Thrust Canceled.
+*/
+ MSG_DISAPPEAROVERTHRUSTING = 0x1df,
+/*20171018 to latest
+ 무기의 최대 성능을 끌어냅니다.
+Maximize-Power Initiated.
+*/
+ MSG_MAXIMIZE = 0x1e0,
+/*20171018 to latest
+ 맥시마이즈 상태가 해제 되었습니다.
+Maximize-Power Canceled.
+*/
+ MSG_DISAPPEARMAXIMIZE = 0x1e1,
+/*20171018 to latest
+[신서버]
+[New Server]
+*/
+ MSG_SERVER_PROPERTY_NEW = 0x1e2,
+/*20171018 to latest
+(%d 명)
+(%d players)
+*/
+ MSG_SERVER_USER_COUNT = 0x1e3,
+/*20171018 to latest
+(점검중)
+(On the maintenance)
+*/
+ MSG_SERVER_INSPECTING = 0x1e4,
+/*20171018 to latest
+길드멤버 %s님이 접속하셨습니다.
+Guild member %s has connected.
+*/
+ MSG_GUILD_MEMBER_STATUS_ONLINE = 0x1e5,
+/*20171018 to latest
+길드멤버 %s님이 종료하셨습니다.
+Guild member %s has disconnected.
+*/
+ MSG_GUILD_MEMBER_STATUS_OFFLINE = 0x1e6,
+/*20171018 to latest
+경험치 %d 얻음
+You got %d Base EXP.
+*/
+ MSG_GOT_EXPERIENCE_POINT = 0x1e7,
+/*20171018 to latest
+잡경험치 %d 얻음
+You got %d Job EXP.
+*/
+ MSG_GOT_JOB_EXPERIENCE_POINT = 0x1e8,
+/*20171018 to latest
+길드에서 탈퇴 했습니다.
+You left the guild.
+*/
+ MSG_LEFT_GUILD = 0x1e9,
+/*20171018 to latest
+길드에서 추방 당했습니다.
+You have been expelled from the Guild.
+*/
+ MSG_BAN_FROM_GUILD = 0x1ea,
+/*20171018 to latest
+아이템 감정 성공
+Item Appraisal has completed successfully.
+*/
+ MSG_ITEM_IDENTIFY_SUCCEESS = 0x1eb,
+/*20171018 to latest
+아이템 감정 실패
+Item appraisal has failed.
+*/
+ MSG_ITEM_IDENTIFY_FAIL = 0x1ec,
+/*20171018 to latest
+아이템 조합 성공
+Compounding has completed successfully.
+*/
+ MSG_ITEM_COMPOUNDING_SUCCEESS = 0x1ed,
+/*20171018 to latest
+아이템 조합 실패
+Compounding has failed.
+*/
+ MSG_ITEM_COMPOUNDING_FAIL = 0x1ee,
+/*20171018 to latest
+길드 적대 성공
+Antagonist has been set.
+*/
+ MSG_HOSTILE_GUILD_SUCCEESS = 0x1ef,
+/*20171018 to latest
+적대 길드수 초과로 길드 적대 실패
+Guild has too many Antagonists.
+*/
+ MSG_TOO_MANY_HOSTILE_GUILD = 0x1f0,
+/*20171018 to latest
+이미 적대 길드 입니다
+Already set as an Antagonist
+*/
+ MSG_ALREADY_REGISTERED_HOSTILE_GUILD = 0x1f1,
+/*20171018 to latest
+제련이 성공적으로 되었습니다.
+Upgrade has been completed successfully.
+*/
+ MSG_ITEM_REFINING_SUCCEESS = 0x1f2,
+/*20171018 to latest
+제련이 실패하였습니다.
+Upgrade has failed.
+*/
+ MSG_ITEM_REFINING_FAIL = 0x1f3,
+/*20171018 to latest
+이곳에서는 순간이동이 불가능합니다.
+Unavailable Area to Teleport
+*/
+ MSG_IMPOSSIBLE_TELEPORT_AREA = 0x1f4,
+/*20171018 to latest
+이 장소는 기억할 수 없습니다.
+Unable to memorize this place as Warp Point
+*/
+ MSG_POSSIBLE_TELEPORT_AREA = 0x1f5,
+/*20171018 to latest
+지금은 종료할 수 없습니다.
+Please wait 10 seconds before trying to log out.
+*/
+ MSG_CANT_EXIT_NOW = 0x1f6,
+/*20171018 to latest
+직위
+Position
+*/
+ MSG_POSITION = 0x1f7,
+/*20171018 to latest
+직업
+Job
+*/
+ MSG_JOB = 0x1f8,
+/*20171018 to latest
+메모
+Note
+*/
+ MSG_MEMO = 0x1f9,
+/*20171018 to latest
+기여
+Devotion
+*/
+ MSG_CONTRIBUTION = 0x1fa,
+/*20171018 to latest
+상납경험치
+Tax Point
+*/
+ MSG_EXP_CONTIRIBUTION = 0x1fb,
+/*20171018 to latest
+길드탈퇴
+Leave Guild
+*/
+ MSG_LEAVE_GUILD = 0x1fc,
+/*20171018 to latest
+제명시키기
+Expel
+*/
+ MSG_EXPEL_GUILD = 0x1fd,
+/*20171018 to latest
+서열
+Rank
+*/
+ MSG_GRADE = 0x1fe,
+/*20171018 to latest
+직위명
+Position Title
+*/
+ MSG_POSITION_NAME = 0x1ff,
+/*20171018 to latest
+가입권한
+Invitation
+*/
+ MSG_JOIN_AUTHORITY = 0x200,
+/*20171018 to latest
+처벌권한
+Punish
+*/
+ MSG_PENALTY_AUTORITY = 0x201,
+/*20171018 to latest
+상납%
+Tax %
+*/
+ MSG_CONTRIBUTION_PERCENT = 0x202,
+/*20171018 to latest
+제목
+Title
+*/
+ MSG_TITLE = 0x203,
+/*20171018 to latest
+내용
+For
+*/
+ MSG_CONTENTS = 0x204,
+/*20171018 to latest
+길드이름
+Guild Name
+*/
+ MSG_GUILD_NAME = 0x205,
+/*20171018 to latest
+길드레벨
+Guild lvl
+*/
+ MSG_GUILD_LEVEL = 0x206,
+/*20171018 to latest
+조합원수
+Number of Members
+*/
+ MSG_GUILD_PEOPLE_COUNT = 0x207,
+/*20171018 to latest
+랭킹
+Ranking
+*/
+ MSG_RANKING = 0x208,
+/*20171018 to latest
+아이템 감정
+Item Appraisal
+*/
+ MSG_ITEM_IDENTIFY = 0x209,
+/*20171018 to latest
+아이템 조합
+Insert Card
+*/
+ MSG_ITEM_COMPOUNDING = 0x20a,
+/*20171018 to latest
+탈퇴 사유를 입력해주세요.
+Please enter the reason of Secession.
+*/
+ MSG_PLEASE_INPUT_WHY_LEAVING = 0x20b,
+/*20171018 to latest
+추방 사유를 입력해주세요.
+Please enter the reason of Expulsion.
+*/
+ MSG_PELASE_INPUT_WHY_EXPEL = 0x20c,
+/*20171018 to latest
+상점을 닫으세요.
+Please close Shop.
+*/
+ MSG_PLEASE_CLOSE_STORE = 0x20d,
+/*20171018 to latest
+스킬 이름
+Skill
+*/
+ MSG_SKILL_NAME = 0x20e,
+/*20171018 to latest
+아이템 이름
+Item Name
+*/
+ MSG_ITEM_NAME = 0x20f,
+/*20171018 to latest
+https://payment.ragnarok.co.kr
+https://pay.ragnarok.co.kr (Billing Web)
+*/
+ MSG_SETTLE_WEB_URL = 0x210,
+/*20171018 to latest
+게임방에서 사용가능한 IP개수가 모두 사용중입니다. 개인 계정으로 결제 하시겠습니까?
+IP capacity of this Internet Cafe is full. Would you like to pay the personal base?
+*/
+ MSG_BAN_IP_OVERFLOW = 0x211,
+/*20171018 to latest
+결제시간이 다되어 게임을 종료합니다.
+You are out of available paid playing time. Game will be shut down automatically.
+*/
+ MSG_BAN_PAY_OUT = 0x212,
+/*20171018 to latest
+이름이 너무 깁니다. 한글 11자 영문 23자 이내로 써주십시오.
+Name is too long. Please enter a name no greater than 23 english characters.
+*/
+ MSG_NAMELENGTH_TOO_LONG = 0x213,
+/*20171018 to latest
+deleted
+Character will be deleted in %d seconds.
+*/
+ MSG_DELETE_AFTER_10_SECOND = 0x214,
+/*20171018 to latest
+귀하는 개인 정액제 사용자입니다.
+You paid with the personal regular base.
+*/
+ MSG_BILLING_100 = 0x215,
+/*20171018 to latest
+귀하는 개인정량제 사용자입니다.
+You paid with the personal regular base. Available time is xx hrs xx mins xx secs.
+*/
+ MSG_BILLING_200 = 0x216,
+/*20171018 to latest
+귀하는 개인 무료 사용자입니다.
+You are free!
+*/
+ MSG_BILLING_300 = 0x217,
+/*20171018 to latest
+귀하는 개인 무료 허용기간 사용자입니다.
+You are free for the test, your available time is xx hrs xx mins xx secs.
+*/
+ MSG_BILLING_400 = 0x218,
+/*20171018 to latest
+귀하는 게임방 정액제 사용자입니다.
+You paid with the Internet Cafe regular base. Available time is xx hrs xx mins xx secs.
+*/
+ MSG_BILLING_500 = 0x219,
+/*20171018 to latest
+귀하는 게임방 정량제 사용자입니다.
+You paid with the Time Limit for Internet Cafe. Available time is xx hrs xx mins xx secs.
+*/
+ MSG_BILLING_501 = 0x21a,
+/*20171018 to latest
+귀하는 게임방 무료 허용기간 사용자입니다.
+You are free for the test of Internet Cafe version .
+*/
+ MSG_BILLING_600 = 0x21b,
+/*20171018 to latest
+귀하는 게임방 무료 사용자입니다.
+You are free for the Internet Cafe version.
+*/
+ MSG_BILLING_700 = 0x21c,
+/*20171018 to latest
+귀하는 종량제 사이트 이용자입니다.
+You paid on the Time Limit Website.
+*/
+ MSG_BILLING_800 = 0x21d,
+/*20171018 to latest
+이모션 목록
+Emotion icon List
+*/
+ MSG_EMOTION_LIST = 0x21e,
+/*20171018 to latest
+/이모션
+/emo
+*/
+ MSG_VIEW_EMOTION = 0x21f,
+/*20171018 to latest
+/!
+*/
+ MSG_EMOTION_SURPRISE = 0x220,
+/*20171018 to latest
+/?
+*/
+ MSG_EMOTION_QUESTION = 0x221,
+/*20171018 to latest
+/기쁨
+/ho
+*/
+ MSG_EMOTION_DELIGHT = 0x222,
+/*20171018 to latest
+/하트
+/lv
+*/
+ MSG_EMOTION_THROB = 0x223,
+/*20171018 to latest
+/왕하트
+/lv2
+*/
+ MSG_EMOTION_BIGTHROB = 0x224,
+/*20171018 to latest
+/땀
+/swt
+*/
+ MSG_EMOTION_SWEAT = 0x225,
+/*20171018 to latest
+/아하
+/ic
+*/
+ MSG_EMOTION_AHA = 0x226,
+/*20171018 to latest
+/짜증
+/an
+*/
+ MSG_EMOTION_FRET = 0x227,
+/*20171018 to latest
+/화
+/ag
+*/
+ MSG_EMOTION_ANGER = 0x228,
+/*20171018 to latest
+/돈
+/$
+*/
+ MSG_EMOTION_MONEY = 0x229,
+/*20171018 to latest
+/...
+*/
+ MSG_EMOTION_THINK = 0x22a,
+/*20171018 to latest
+/감사
+/thx
+*/
+ MSG_EMOTION_THANKS = 0x22b,
+/*20171018 to latest
+/꽥
+/wah
+*/
+ MSG_EMOTION_KEK = 0x22c,
+/*20171018 to latest
+/죄송
+/sry
+*/
+ MSG_EMOTION_SORRY = 0x22d,
+/*20171018 to latest
+/웃음
+/heh
+*/
+ MSG_EMOTION_SMILE = 0x22e,
+/*20171018 to latest
+/뻘뻘
+/swt2
+*/
+ MSG_EMOTION_PROFUSELY_SWEAT = 0x22f,
+/*20171018 to latest
+/긁적
+/hmm
+*/
+ MSG_EMOTION_SCRATCH = 0x230,
+/*20171018 to latest
+/최고
+/no1
+*/
+ MSG_EMOTION_BEST = 0x231,
+/*20171018 to latest
+/두리번
+/??
+*/
+ MSG_EMOTION_STARE_ABOUT = 0x232,
+/*20171018 to latest
+/헉
+/omg
+*/
+ MSG_EMOTION_HUK = 0x233,
+/*20171018 to latest
+/오
+/oh
+*/
+ MSG_EMOTION_O = 0x234,
+/*20171018 to latest
+/엑스
+/X
+*/
+ MSG_EMOTION_X = 0x235,
+/*20171018 to latest
+/헬프
+/hlp
+*/
+ MSG_EMOTION_HELP = 0x236,
+/*20171018 to latest
+/가
+/go
+*/
+ MSG_EMOTION_GO = 0x237,
+/*20171018 to latest
+/엉엉
+/sob
+*/
+ MSG_EMOTION_CRY = 0x238,
+/*20171018 to latest
+/킥킥
+/gg
+*/
+ MSG_EMOTION_KIK = 0x239,
+/*20171018 to latest
+/쪽
+/kis
+*/
+ MSG_EMOTION_CHUP = 0x23a,
+/*20171018 to latest
+/쪽쪽
+/kis2
+*/
+ MSG_EMOTION_CHUPCHUP = 0x23b,
+/*20171018 to latest
+/흥
+/pif
+*/
+ MSG_EMOTION_HNG = 0x23c,
+/*20171018 to latest
+/응
+/ok
+*/
+ MSG_EMOTION_OK = 0x23d,
+/*20171018 to latest
+단축키 목록
+Shortcut List
+*/
+ MSG_SHORTCUT_LIST = 0x23e,
+/*20171018 to latest
+귀하의 계정은 보류되었습니다.
+Your account is suspended.
+*/
+ MSG_BAN_PAY_SUSPEND = 0x23f,
+/*20171018 to latest
+과금 정책 변경으로 인해 일시 종료됩니다. 다시 접속하여 주시기 바랍니다.
+Your connection is terminated due to change in the billing policy. Please connect again.
+*/
+ MSG_BAN_PAY_CHANGE = 0x240,
+/*20171018 to latest
+어카운트 서버에 인증된 IP와 귀하의 IP가 달라 연결을 종료합니다.
+Your connection is terminated because your IP doesn't match the authorized IP from the account server.
+*/
+ MSG_BAN_PAY_WRONGIP = 0x241,
+/*20171018 to latest
+게임방 IP에서 개인 종량제 과금을 막기 위해 연결을 종료합니다. 개인 종량제 과금을 사용하기 위해서는 게임방IP로 등록이 되지 않은 IP를 사용해 주세요.
+Your connection is terminated to prevent charging from your account's play time.
+*/
+ MSG_BAN_PAY_PNGAMEROOM = 0x242,
+/*20171018 to latest
+귀하는 운영자에 의해 강제 종료 되었습니다.
+You have been forced to disconnect by the Game Master Team.
+*/
+ MSG_BAN_OP_FORCE = 0x243,
+/*20171018 to latest
+무게가 90%를 초과하여 스킬을 사용할 수 없습니다.
+You can't use this Skill because you are over your Weight Limit.
+*/
+ MSG_USESKILL_FAIL_WEIGHTOVER = 0x244,
+/*20171018 to latest
+무명
+Nameless
+*/
+ MSG_NAMELESS_USER = 0x245,
+/*20171018 to latest
+축하합니다. %s님의 현재 랭킹이 %d위로 상승하였습니다.
+Congratulations! %s ranking has gone up to %d.
+*/
+ MSG_RANK_IN_TEN = 0x246,
+/*20171018 to latest
+안타깝게도 %s님의 현재 랭킹이 %d위로 하락하였습니다.
+What a pity! %s ranking has gone down to %d.
+*/
+ MSG_RANK_OUT_TEN = 0x247,
+/*20171018 to latest
+Pet Info
+*/
+ MSG_PET_INFO = 0x248,
+/*20171018 to latest
+만복도
+Hunger
+*/
+ MSG_PET_HUNGRY = 0x249,
+/*20171018 to latest
+친밀도
+Intimacy
+*/
+ MSG_PET_FRIENDLY = 0x24a,
+/*20171018 to latest
+상점과 채팅방을 동시에 열수 없습니다.
+Please avoid opening a chatroom while vending.
+*/
+ MSG_CANT_OPEN_STORE_WHILE_CHAT = 0x24b,
+/*20171018 to latest
+개
+Total
+*/
+ MSG_EA4 = 0x24c,
+/*20171018 to latest
+%s 를 전투불능으로 만들었습니다.
+You have knocked down %s.
+*/
+ MSG_SLAIN = 0x24d,
+/*20171018 to latest
+%s 님에 의해 전투불능 상태가 되었습니다.
+You have been knocked down by %s.
+*/
+ MSG_SLAINBY = 0x24e,
+/*20171018 to latest
+먹이 - '%s' 아이템이 존재하지 않습니다..
+Feed - "%s" is not available.
+*/
+ MSG_NOT_EXIST_PET_FOOD = 0x24f,
+/*20171018 to latest
+먹이 주기
+Feed Pet
+*/
+ MSG_PET_FEEDING = 0x250,
+/*20171018 to latest
+퍼포먼스
+Performance
+*/
+ MSG_PET_PERFORMANCE = 0x251,
+/*20171018 to latest
+알로 되돌리기
+Return to Egg Shell
+*/
+ MSG_PET_RETURN_EGG = 0x252,
+/*20171018 to latest
+악세사리 해제
+Unequip Accessory
+*/
+ MSG_PET_ACC_OFF = 0x253,
+/*20171018 to latest
+Pet 상태 보기
+Check Pet Status
+*/
+ MSG_PET_SHOWINFO = 0x254,
+/*20171018 to latest
+악세사리
+Accessory
+*/
+ MSG_PET_ACCESSARY = 0x255,
+/*20171018 to latest
+장착됨
+Equipped
+*/
+ MSG_ITEM_EQUIPED = 0x256,
+/*20171018 to latest
+펫 리스트
+Pet List
+*/
+ MSG_PET_EGG_LIST = 0x257,
+/*20171018 to latest
+장착 안됨
+Unequipped
+*/
+ MSG_ITEM_UNEQUIPED = 0x258,
+/*20171018 to latest
+정말로 먹이를 주시겠습니까?
+Are you sure that you want to feed your pet?
+*/
+ MSG_SURE_TO_FEED_PET = 0x259,
+/*20171018 to latest
+가격을 쓰실땐 숫자(0~9)만 써주십시오.
+Only the numbers (0~9) are available.
+*/
+ MSG_CAN_INPUT_NUMBER_ONLY = 0x25a,
+/*20171018 to latest
+감정되지 않은 아이템은 판매할 수 없습니다.
+You cannot sell unidentified items.
+*/
+ MSG_CANT_SELL_UNIDENTIFIED_ITEM = 0x25b,
+/*20171018 to latest
+가격이 0 Zeny인 아이템이 존재합니다. 계속 하시겠습니까?
+Item at 0 Zeny exists. Do you wish to continue?
+*/
+ MSG_YOU_HAVE_FREE_ITEM_ON_SHOP = 0x25c,
+/*20171018 to latest
+[새로 추가된 이모션 리스트]
+[New Emotion List]
+*/
+ MSG_NEW_EMOTION_LIST = 0x25d,
+/*20171018 to latest
+일본쪽 베타 사용자들에게 전하는 메세지. -> 겅호에서 재가입 하세요.
+N/A
+*/
+ MSG_BAN_JAPAN_REFUSE1 = 0x25e,
+/*20171018 to latest
+일본쪽 과금이 종료된 사용자들에게 전하는 메세지. -> 돈내라. 두 번내라.
+N/A
+*/
+ MSG_BAN_JAPAN_REFUSE2 = 0x25f,
+/*20171018 to latest
+같은 계정의 캐릭터가 이미 가입되어있습니다.
+Character in the same account already joined.
+*/
+ MSG_ALREADY_SAME_AID_JOINED = 0x260,
+/*20171018 to latest
+(%d 명) - 만18세이상
+(%d ppl) - over the age 18
+*/
+ MSG_SERVER_PROPERTY_ADULT = 0x261,
+/*20171018 to latest
+ 프로보크 상태가 되었습니다.
+Provoke initiated.
+*/
+ MSG_ENST_PROVOKE = 0x262,
+/*20171018 to latest
+ 프로보크 상태가 해제되었습니다.
+Provoke canceled.
+*/
+ MSG_DSST_PROVOKE = 0x263,
+/*20171018 to latest
+ 인듀어 상태가 되었습니다.
+Endure initiated.
+*/
+ MSG_ENST_ENDURE = 0x264,
+/*20171018 to latest
+ 인듀어 상태가 해제되었습니다.
+Endure canceled.
+*/
+ MSG_DSST_ENDURE = 0x265,
+/*20171018 to latest
+ 집중력 향상 상태가 되었습니다.
+Improve Concentration initiated.
+*/
+ MSG_ENST_CONCENTRATION = 0x266,
+/*20171018 to latest
+ 집중력 향상 상태가 해제되었습니다.
+Improve Concentration canceled.
+*/
+ MSG_DSST_CONCENTRATION = 0x267,
+/*20171018 to latest
+ 하이딩 상태가 되었습니다.
+Hiding Initiated.
+*/
+ MSG_ENST_HIDING = 0x268,
+/*20171018 to latest
+ 하이딩 상태가 해제되었습니다.
+Hiding Canceled.
+*/
+ MSG_DSST_HIDING = 0x269,
+/*20171018 to latest
+ 클로킹 상태가 되었습니다.
+Cloaking initiated.
+*/
+ MSG_ENST_CLOAKING = 0x26a,
+/*20171018 to latest
+ 클로킹 상태가 해제되었습니다.
+Cloaking canceled.
+*/
+ MSG_DSST_CLOAKING = 0x26b,
+/*20171018 to latest
+ 독을 반사 할 수 있는 상태가 되었습니다.
+Poison React initiated.
+*/
+ MSG_ENST_POISONREACT = 0x26c,
+/*20171018 to latest
+ 포이즌 리액트 상태가 해제되었습니다.
+Poison React canceled.
+*/
+ MSG_DSST_POISONREACT = 0x26d,
+/*20171018 to latest
+ 이동속도가 감소하였습니다.
+Speed reduced.
+*/
+ MSG_ENST_QUAGMIRE = 0x26e,
+/*20171018 to latest
+ 콰그마이어 상태가 해제되었습니다.
+Quagmire canceled.
+*/
+ MSG_DSST_QUAGMIRE = 0x26f,
+/*20171018 to latest
+ 방어력이 증가되었습니다.
+Defense increased.
+*/
+ MSG_ENST_ANGELUS = 0x270,
+/*20171018 to latest
+ 안젤루스 상태가 해제되었습니다.
+Angelus canceled.
+*/
+ MSG_DSST_ANGELUS = 0x271,
+/*20171018 to latest
+ 힘과 지능, 덱스가 증가하였습니다.
+Blessing aligned.
+*/
+ MSG_ENST_BLESSING = 0x272,
+/*20171018 to latest
+ 블레싱 상태가 해제되었습니다.
+Blessing canceled.
+*/
+ MSG_DSST_BLESSING = 0x273,
+/*20171018 to latest
+ 시그넘 크루시스를 사용하였습니다.
+Signum Crusis initiated.
+*/
+ MSG_ENST_CRUCIS = 0x274,
+/*20171018 to latest
+ 시그넘 크루시스 상태가 해제되었습니다.
+Signum Crusis canceled.
+*/
+ MSG_DSST_CRUCIS = 0x275,
+/*20171018 to latest
+ 독이 퍼지는 속도가 느려졌습니다.
+Slow Poison initiated.
+*/
+ MSG_ENST_SLOWPOISON = 0x276,
+/*20171018 to latest
+ 슬로우 포이즌 상태가 해제되었습니다.
+Slow Poison Canceled.
+*/
+ MSG_DSST_SLOWPOISON = 0x277,
+/*20171018 to latest
+ SP의 회복 속도가 향상 되었습니다.
+HP/SP recovery increased.
+*/
+ MSG_ENST_MAGNIFICAT = 0x278,
+/*20171018 to latest
+ 마니피캇 상태가 해제되었습니다.
+Magnificat canceled.
+*/
+ MSG_DSST_MAGNIFICAT = 0x279,
+/*20171018 to latest
+ 행운이 향상되었습니다.
+Luck increased.
+*/
+ MSG_ENST_GLORIA = 0x27a,
+/*20171018 to latest
+ 글로리아 상태가 해제되었습니다.
+Gloria canceled.
+*/
+ MSG_DSST_GLORIA = 0x27b,
+/*20171018 to latest
+ 1회 공격에 두 배 데미지를 받는 상태가 되었습니다.
+You will received double damage from all attacking opponents.
+*/
+ MSG_ENST_LEXAETERNA = 0x27c,
+/*20171018 to latest
+ 렉스에테르나 상태가 해제되었습니다.
+Lex Eterna canceled.
+*/
+ MSG_DSST_LEXAETERNA = 0x27d,
+/*20171018 to latest
+ 공격속도가 증가하였습니다.
+Attack Speed increased.
+*/
+ MSG_ENST_ADRENALINE = 0x27e,
+/*20171018 to latest
+ 공격속도가 감소하였습니다.
+Attack Speed reduced.
+*/
+ MSG_DSST_ADRENALINE = 0x27f,
+/*20171018 to latest
+ 페코에 올라 탔습니다.
+You've just been on a Peco Peco.
+*/
+ MSG_ENST_RIDING = 0x280,
+/*20171018 to latest
+ 페코에서 내렸습니다.
+You've just got off of a Peco Peco.
+*/
+ MSG_DSST_RIDING = 0x281,
+/*20171018 to latest
+ 팔콘을 장착하였습니다.
+You've just carried a Falcon with.
+*/
+ MSG_ENST_FALCON = 0x282,
+/*20171018 to latest
+ 팔콘을 풀어주었습니다.
+You've just released a Falcon.
+*/
+ MSG_DSST_FALCON = 0x283,
+/*20171018 to latest
+ 죽은척하기 상태가 되었습니다.
+Play Dead initiated.
+*/
+ MSG_ENST_TRICKDEAD = 0x284,
+/*20171018 to latest
+ 죽은척하기 상태가 해제되었습니다.
+Play Dead canceled.
+*/
+ MSG_DSST_TRICKDEAD = 0x285,
+/*20171018 to latest
+ 힘이 강해졌습니다.
+STR improved.
+*/
+ MSG_ENST_SHOUT = 0x286,
+/*20171018 to latest
+ 힘이 원래대로 돌아왔습니다.
+STR turned back to normal.
+*/
+ MSG_DSST_SHOUT = 0x287,
+/*20171018 to latest
+ 에너지코트 상태가 되었습니다.
+Energy Coat initiated.
+*/
+ MSG_ENST_ENERGYCOAT = 0x288,
+/*20171018 to latest
+ 에너지코트 상태가 해제되었습니다.
+Energy Coat canceled.
+*/
+ MSG_DSST_ENERGYCOAT = 0x289,
+/*20171018 to latest
+ 방어구가 파괴되었습니다.
+Armor destroyed.
+*/
+ MSG_ENST_BROKENAMOR = 0x28a,
+/*20171018 to latest
+ ...
+Weapon has just been released from destroyed status.
+*/
+ MSG_DSST_BROKENAMOR = 0x28b,
+/*20171018 to latest
+ 무기가 파괴되었니다.
+Weapon destroyed.
+*/
+ MSG_ENST_BROKENWEAPON = 0x28c,
+/*20171018 to latest
+ ...
+Weapon has just been released from destroyed status.
+*/
+ MSG_DSST_BROKENWEAPON = 0x28d,
+/*20171018 to latest
+ 환영상태가 되었습니다.
+Invisibility initiated.
+*/
+ MSG_ENST_ILLUSION = 0x28e,
+/*20171018 to latest
+ 환영상태가 해제되었습니다.
+Invisibility canceled.
+*/
+ MSG_DSST_ILLUSION = 0x28f,
+/*20171018 to latest
+과금 정보 처리가 늦어지고 있어 접속이 지연되고 있습니다. 잠시 후에 다시 시도해 주시기 바랍니다.
+Sorry. It is delayed due to the process of payment. Please re-connect in a minute.
+*/
+ MSG_REFUSE_BLOCK_TEMPORARY = 0x290,
+/*20171018 to latest
+장착된 화살/탄환/수리검 을 해제해야합니다.
+You must unequip ammunition first.
+*/
+ MSG_UNEQUIP_ARROW = 0x291,
+/*20171018 to latest
+화살 목록
+Arrow List
+*/
+ MSG_ARROW_LIST = 0x292,
+/*20171018 to latest
+카트 목록
+Cart List
+*/
+ MSG_CART_LIST = 0x293,
+/*20171018 to latest
+카트를 장착한 상태여야 합니다.
+You must have a Pushcart.
+*/
+ MSG_MUST_EQUIP_CART = 0x294,
+/*20171018 to latest
+채팅방을 개설 할 수 없습니다.
+You cannot open a Chat Window.
+*/
+ MSG_CANT_MAKE_CHAT_ROOM = 0x295,
+/*20171018 to latest
+라그나로크 홈페이지로 접속하여 계정을 만듭니다. 처음 계정을 만드시면 3일 동안은 무료로 이용하실 수 있습니다.
+Registering an account is the first step to accessing the game. Do you want to visit the registration page now?
+*/
+ MSG_3DAY_FREE = 0x296,
+/*20171018 to latest
+앉은 상태에서는 이 아이템을 사용할 수 없습니다.
+You cannot use this item while sitting.
+*/
+ MSG_CANT_USE_WHEN_SITDOWN = 0x297,
+/*20171018 to latest
+채팅, 스킬, 아이템 사용금지가 %d 분간 남아 있습니다.
+Your use of skills and chat will be blocked for the next %d minutes.
+*/
+ MSG_BAD_MANNER_REMAIN = 0x298,
+/*20171018 to latest
+채팅, 스킬, 아이템 사용금지가 해지 되었습니다.
+Your use of skills and chat have been reinstated.
+*/
+ MSG_BAD_MANNER_END = 0x299,
+/*20171018 to latest
+-[장착안됨]
+- [Not equipped]
+*/
+ MSG_REF_UNEQUIP = 0x29a,
+/*20171018 to latest
+배고픔
+Very Hungry
+*/
+ MSG_VERY_HUNGRY = 0x29b,
+/*20171018 to latest
+출출함
+Hungry
+*/
+ MSG_HUNGRY = 0x29c,
+/*20171018 to latest
+보통
+Normal
+*/
+ MSG_NORMAL = 0x29d,
+/*20171018 to latest
+배부름
+Satisfied
+*/
+ MSG_REPLETE = 0x29e,
+/*20171018 to latest
+아주 배부름
+Stuffed
+*/
+ MSG_VERY_REPLETE = 0x29f,
+/*20171018 to latest
+서먹서먹함
+Awkward
+*/
+ MSG_VERY_AWKWARD = 0x2a0,
+/*20171018 to latest
+어색함
+Shy
+*/
+ MSG_AWKWARD = 0x2a1,
+/*20171018 to latest
+친함
+Cordial
+*/
+ MSG_FRIENDLY = 0x2a2,
+/*20171018 to latest
+절친함
+Loyal
+*/
+ MSG_VERY_FRIENDLY = 0x2a3,
+/*20171018 to latest
+알수 없음
+Unknown
+*/
+ MSG_UNKNOWN = 0x2a4,
+/*20171018 to latest
+귀하는 앞으로 %일 %d시간 %d분 사용이 가능합니다.
+Your account has play time of %d day %d hour %d minute.
+*/
+ MSG_BILLING_DAY_HOUR_MINUTES = 0x2a5,
+/*20171018 to latest
+이 계정은 이미 다른 어카운트 서버로 접속한 상태입니다.
+Your account is already connected to account server.
+*/
+ MSG_BAN_INFORMATION_REMAINED_ANOTHER_ACCOUNT = 0x2a6,
+/*20171018 to latest
+귀하는 앞으로 %d시간 %d분 사용이 가능합니다.
+Your account has play time of %d hour %d minute.
+*/
+ MSG_BILLING_HOUR_MINUTES = 0x2a7,
+/*20171018 to latest
+귀하는 무료 사용자 입니다.
+Your account is a free account.
+*/
+ MSG_BILLING_FREE_USER = 0x2a8,
+/*20171018 to latest
+이 계정으로 사크라이에 접속할수 없습니다.
+This account can't connect the Sakray server.
+*/
+ MSG_REFUSE_NONSAKRAY_ID_BLOCKED = 0x2a9,
+/*20171018 to latest
+펫의 이름은 영문 23, 한글 11자 이내로 정해 주세요.
+Your pet name must be 23 characters or less.
+*/
+ MSG_PETNAME_IN23 = 0x2aa,
+/*20171018 to latest
+이름은 단 한번만 바꿀수 있습니다. 펫 이름을 ^0000ff^0000ff %s^000000^000000 로 수정합니다. 계속 하시겠습니까?
+You may change your pet's name only once. Your pet's name will be changed to ^0000ff^0000ff %s^000000^000000. Do you wish to continue?
+*/
+ MSG_PETNAME_CHANGE_ONLYONCE = 0x2ab,
+/*20171018 to latest
+/폰트
+/font
+*/
+ MSG_NAMEBALLOON_TYPE = 0x2ac,
+/*20171018 to latest
+길드에 남은 제니가 부족하여 작업이 실패하였습니다.
+Your guild lacks the funds to pay for this venture.
+*/
+ MSG_GUILDZENY_NOT_ENOUGH = 0x2ad,
+/*20171018 to latest
+길드가 소유할 수 있는 최대 금액을 초과하여 작업이 실패하였습니다.
+Your guild zeny limit prevents you from performing this action.
+*/
+ MSG_GUILDZENY_OVER = 0x2ae,
+/*20171018 to latest
+이펙트 간략화 On
+Simplified effects have been activated.
+*/
+ MSG_MINEFFECT_ON = 0x2af,
+/*20171018 to latest
+이펙트 간략화 Off
+Simplified effects have been deactivated.
+*/
+ MSG_MINEFFECT_OFF = 0x2b0,
+/*20171018 to latest
+자본금
+Required Fee
+*/
+ MSG_CAPITAL = 0x2b1,
+/*20171018 to latest
+아이템을 바닥에 버리려면, 아이템 창을 열어 주십시오.
+If you wish to drop an item, you must first open your Item Window (alt+e).
+*/
+ MSG_OPEN_ITEMWND_TO_THROW = 0x2b2,
+/*20171018 to latest
+PC방 요금이 종료하여 개인 요금제로 전환합니다. 개인 요금으로 게임을 계속 하시겠습니까?
+Internet Cafe Time Plan has been ended. Would you like to continue the game with your personal play time?
+*/
+ MSG_ASK_PNGAMEROOM = 0x2b3,
+/*20171018 to latest
+
+Current admission application state.
+*/
+ MSG_REPLY_REMAINTIME = 0x2b4,
+/*20171018 to latest
+
+Current admission application state.
+*/
+ MSG_INFO_REMAINTIME = 0x2b5,
+/*20171018 to latest
+돈이 모자라거나, 가질 수 있는 최대 금액을 초과하였습니다.
+Your lack of zeny or your zeny limit have prevented you from performing this action.
+*/
+ MSG_OVER_OR_LOW_MONEY = 0x2b6,
+/*20171018 to latest
+전투불능 상태가 되었습니다. esc키를 누르시면 선택창이 뜹니다.
+Your character has fainted. Push the ESC key to restart.
+*/
+ MSG_PRESS_ESC_TO_RESTART = 0x2b7,
+/*20171018 to latest
+ %d 개 획득
+- %d obtained.
+*/
+ MSG_EA_OBTAIN = 0x2b8,
+/*20171018 to latest
+스펠 리스트
+Spell List
+*/
+ MSG_SPELL_LIST = 0x2b9,
+/*20171018 to latest
+/최소화
+/minimize
+*/
+ MSG_MINEFFECT = 0x2ba,
+/*20171018 to latest
+이 아이템은 손상되어 있습니다..
+This item has been damaged.
+*/
+ MSG_DAMAGED_ITEM = 0x2bb,
+/*20171018 to latest
+/noshift : 쉬프트를 누르지않고 힐로 적을 공격할수있게됩니다 On Off
+/noshift: You may use your ''force heal'' ability without the Shift key. On | Off
+*/
+ MSG_EXPLAIN_NOSHIFT = 0x2bc,
+/*20171018 to latest
+시프트를 누르지 않고도 힐로 언데드를 공격할수 있습니다 [/ns ON]
+[no shift] option activated. [ON]
+*/
+ MSG_NOSHIFT_ON = 0x2bd,
+/*20171018 to latest
+시프트를 눌러야 힐로 언데드를 공격할수 있습니다 [/ns OFF]
+[no shift] option deactivated. [OFF]
+*/
+ MSG_NOSHIFT_OFF = 0x2be,
+/*20171018 to latest
+MSI_REFUSE_BAN_BY_DBA
+*/
+ MSG_REFUSE_BAN_BY_DBA = 0x2bf,
+/*20171018 to latest
+MSI_REFUSE_EMAIL_NOT_CONFIRMED
+*/
+ MSG_REFUSE_EMAIL_NOT_CONFIRMED = 0x2c0,
+/*20171018 to latest
+MSI_REFUSE_BAN_BY_GM
+*/
+ MSG_REFUSE_BAN_BY_GM = 0x2c1,
+/*20171018 to latest
+MSI_REFUSE_TEMP_BAN_FOR_DBWORK
+*/
+ MSG_REFUSE_TEMP_BAN_FOR_DBWORK = 0x2c2,
+/*20171018 to latest
+MSI_REFUSE_SELF_LOCK
+*/
+ MSG_REFUSE_SELF_LOCK = 0x2c3,
+/*20171018 to latest
+MSI_REFUSE_NOT_PERMITTED_GROUP
+*/
+ MSG_REFUSE_NOT_PERMITTED_GROUP = 0x2c4,
+/*20171018 to latest
+MSI_REFUSE_WAIT_FOR_SAKRAY_ACTIVE
+*/
+ MSG_REFUSE_WAIT_FOR_SAKRAY_ACTIVE = 0x2c5,
+/*20171018 to latest
+/aura : 오오라를 간략화 시킬수있습니다 On Off
+/aura: Simplify Aura effect On | Off
+*/
+ MSG_EXPLAIN_AURA = 0x2c6,
+/*20171018 to latest
+오오라가 정상적으로 표시됩니다 [오오라 ON]
+Turn On Aura [Aura ON]
+*/
+ MSG_AURA_ON = 0x2c7,
+/*20171018 to latest
+오오라가 간략화되서 표시됩니다 [오오라 OFF]
+Simplify Aura enabled. [ON]
+*/
+ MSG_AURA_OFF = 0x2c8,
+/*20171018 to latest
+채팅금지 기록 %d 회
+Chat block record %d times
+*/
+ MSG_PROHIBIT_LOG = 0x2c9,
+/*20171018 to latest
+채팅 금지 리스트
+Chat block list
+*/
+ MSG_PROHIBIT_LIST = 0x2ca,
+/*20171018 to latest
+/이름표시 or /showname : 캐릭터의 이름 표시 방식을 변경합니다.
+/showname: Change the name font type.
+*/
+ MSG_EXPLAIN_SHOWNAMETYPE = 0x2cb,
+/*20171018 to latest
+/noctrl : 콘트롤을 누르지않아도 자동공격이 됩니다. On Off
+/noctrl | /nc: Auto attack without pressing ctrl key. On | Off
+*/
+ MSG_EXPLAIN_NOCTRL = 0x2cc,
+/*20171018 to latest
+콘트롤을 누르지 않아도 자동공격을 합니다 [/nc ON]
+Use auto attack without Ctrl. [Auto attack ON]
+*/
+ MSG_NOCTRL_ON = 0x2cd,
+/*20171018 to latest
+콘트롤을 눌러야 자동공격을 합니다 [/nc OFF]
+Use auto attack with Ctrl. [Auto attack OFF]
+*/
+ MSG_NOCTRL_OFF = 0x2ce,
+/*20171018 to latest
+채팅 금지 주기
+Mute this player.
+*/
+ MSG_APPEND_PROHIBIT = 0x2cf,
+/*20171018 to latest
+채팅 금지 완전 풀기 & 로그 삭제
+Unmute player & Erase mute time.
+*/
+ MSG_ERASE_PROHIBIT = 0x2d0,
+/*20171018 to latest
+채팅 금지 시간 줄이기(로그 삭제 안됨)
+Decrease Player Mute time.
+*/
+ MSG_REDUCE_PROHIBIT = 0x2d1,
+/*20171018 to latest
+폰트가 정상적으로 바뀌었습니다 [이름표시방식 1]
+Normal Font Displayed. [showname type 1]
+*/
+ MSG_SHOWNAME_ON = 0x2d2,
+/*20171018 to latest
+폰트가 가늘게 바뀌면서 파티명도 표시됩니다 [이름표시방식 2]
+Font will be thin and party name will be shown [showname type 2]
+*/
+ MSG_SHOWNAME_OFF = 0x2d3,
+/*20171018 to latest
+/doridori : 연속해서 이 명령어를 쳐주면 캐릭터가 도리도리 ^^;;
+/doridori: Shake head
+*/
+ MSG_EXPLAIN_DORIDORI = 0x2d4,
+/*20171018 to latest
+인터넷 카페에서 과금을 하고 있습니다.
+Internet room is paying now.
+*/
+ MSG_BILLING_INTERNET_CAFE = 0x2d5,
+/*20171018 to latest
+정액제 과금은 %d일 %d시간 %d분이 남았습니다.
+종량제 과금은 %d시간 %d분이 남았습니다.
+Prepaid voucher validate until %d days %d hours %d minutes later.
+Time limit voucher validate untill %d hours %d minutes later.
+*/
+ MSG_BILLING_BOTH = 0x2d6,
+/*20171018 to latest
+/bingbing : 연속해서 이 명령어를 쳐주면 캐릭터가 빙글빙글 ^^;;
+/bingbing: Rotates player counter clockwise.
+*/
+ MSG_EXPLAIN_BINGBING = 0x2d7,
+/*20171018 to latest
+/bangbang : 연속해서 이 명령어를 쳐주면 캐릭터가 뱅글뱅글 ^^;;
+/bangbang: Rotates player clockwise.
+*/
+ MSG_EXPLAIN_BANGBANG = 0x2d8,
+/*20171018 to latest
+/skillfail : 빨간색의 스킬사용 실패 메세지를 표시하지 않습니다 On Off
+/skillfail: Display red font message when skill fails. On | Off
+*/
+ MSG_EXPLAIN_SKILLFAIL = 0x2d9,
+/*20171018 to latest
+스킬사용 실패 메세지를 표시합니다 [/sf ON]
+Skill fail messages will be displayed. [Display On]
+*/
+ MSG_SKILLFAIL_ON = 0x2da,
+/*20171018 to latest
+스킬사용 실패 메세지를 표시하지 않습니다 [/sf OFF]
+Skill fail messages will not be displayed. [Display OFF]
+*/
+ MSG_SKILLFAIL_OFF = 0x2db,
+/*20171018 to latest
+/notalkmsg : 채팅내용을 채팅창에 표시하지 않습니다 On Off
+/notalkmsg: Chat will not be displayed in chat window. On | Off
+*/
+ MSG_EXPLAIN_NOTALKMSG = 0x2dc,
+/*20171018 to latest
+채팅내용을 채팅창에 표시합니다 [/nm ON]
+Chat content will be displayed in the chat window. [Display ON]
+*/
+ MSG_NOTALKMSG_ON = 0x2dd,
+/*20171018 to latest
+채팅내용을 채팅창에 표시하지않습니다 [/nm OFF]
+Chat content will not be displayed in the chat window. [Display OFF]
+*/
+ MSG_NOTALKMSG_OFF = 0x2de,
+/*20171018 to latest
+/set1 : /nc + /showname + /sf + /wi, /set2 : + /q3
+/set1: /noctrl + /showname + /skillfail
+*/
+ MSG_EXPLAIN_SET1 = 0x2df,
+/*20171018 to latest
+/fog : FOG이펙트를 키거나 끌수있습니다 On Off
+/fog: Fog effect. On | Off
+*/
+ MSG_EXPLAIN_FOG = 0x2e0,
+/*20171018 to latest
+ 청혼을 해왔습니다. 승낙하시겠습니까?
+You have received a marriage proposal. Do you accept?
+*/
+ MSG_SUGGEST_COUPLE = 0x2e1,
+/*20171018 to latest
+아이템 분배 방식
+Item sharing type
+*/
+ MSG_HOWITEMDIV = 0x2e2,
+/*20171018 to latest
+각자 취득
+Individual
+*/
+ MSG_ITEMDIV1 = 0x2e3,
+/*20171018 to latest
+균등하게 분배
+Shared
+*/
+ MSG_ITEMDIV2 = 0x2e4,
+/*20171018 to latest
+nProtect KeyCrypt
+*/
+ MSG_KEYCRYPT = 0x2e5,
+/*20171018 to latest
+Keyboard Driver가 검출되었습니다.
+
+키보드 보안 입력을 위해 추가기능을 설치하시겠습니까?
+
+(추가기능 설치후, 시스템 reboot 필수)
+Keyboard Driver has been detected.
+
+Do you want to install a program for keyboard security?
+
+(After installation, System Reboot is required)
+*/
+ MSG_KEYCRYPT_INSTALL_KEYDRIVER = 0x2e6,
+/*20171018 to latest
+설치가 완료 되었습니다.
+
+시스템을 Reboot 합니다.
+Installation has been completed.
+
+System will be rebooted.
+*/
+ MSG_KEYCRYPT_REBOOT = 0x2e7,
+/*20171018 to latest
+설치 실패.
+Installation has been failed.
+*/
+ MSG_KEYCRYPT_INSTALLFAIL = 0x2e8,
+/*20171018 to latest
+키보드 보안을 적용하지 않고 계속합니다.
+Keyboard Security will be skipped.
+*/
+ MSG_KEYCRYPT_SKIPKEYCRYPT = 0x2e9,
+/*20171018 to latest
+키보드 보안에 필요한 파일이 존재하지 않습니다.
+
+(npkeyc.vxd, npkeyc.sys, npkeycs.sys)
+Required file for Keyboard Security is not existing.
+
+(npkeyc.vxd, npkeyc.sys, npkeycs.sys)
+*/
+ MSG_KEYCRYPT_NOKEYCRYPTFILE = 0x2ea,
+/*20171018 to latest
+USB Keyboard가 검출되었습니다.
+
+키보드 보안 입력을 위해 추가기능을 설치하시겠습니까?
+
+(추가기능 설치후, 시스템 reboot 필수)
+USB Keyboard has been detected.
+
+Do you want to install a program for keyboard security?
+
+(After installation, System Reboot is required)
+*/
+ MSG_KEYCRYPT_USBKEYBOARD = 0x2eb,
+/*20171018 to latest
+ftp://ragnarok.nefficient.co.kr/pub/ragnarok/ragnarok0526.exe
+*/
+ MSG_FINDHACK_PATH = 0x2ec,
+/*20171018 to latest
+FindHack이 정상적으로 설치가 되어있지 않습니다. ragnarok0226.exe 를 다운로드 하여 라그나로크가 설치된 폴더에 설치해 주시기 바랍니다.(%d).
+FindHack is not installed correctly. Please download ragnarok0226.exe and install it in RagnarokOnline directory.(%d).
+*/
+ MSG_FINDHACK_NOTINSTALLED = 0x2ed,
+/*20171018 to latest
+해킹툴이 존재하지만 치료가 정상적으로 되지 않았습니다. 라그나로크가 실행되지 않습니다.
+Hacking tool is existing but it hasn't been cleaned. Rangarok Online will not be executed.
+*/
+ MSG_FINDHACK_HACKTOOLEXIST = 0x2ee,
+/*20171018 to latest
+해킹툴 진단 프로그램이 정상적으로 다운로드 되지 않았습니다. ragnarok0226.exe 를 다운로드 하여 라그나로크가 설치된 폴더에 설치해 주시기 바랍니다.
+Hacking tool scan program has not been downloaded correctly. Please download ragnarok0226.exe and install it in RagnarokOnline directory.
+*/
+ MSG_FINDHACK_CANTDOWNLOAD = 0x2ef,
+/*20171018 to latest
+NPX.DLL 등록에러 이거나 FindHack 구동에 필요한 파일이 없습니다. ragnarok0226.exe 를 다운로드 하여 라그나로크가 설치된 폴더에 설치해 주시기 바랍니다.
+NPX.DLL register error or there is no necessary file to run FindHack. Please download ragnarok0226.exe and install it in RagnarokOnline directory.
+*/
+ MSG_FINDHACK_NOFILE = 0x2f0,
+/*20171018 to latest
+예외사항이 발생했습니다. (02-3281-0361)로 문의해주세요. 리턴값(%d)
+Exceptional Error. Please contact the customer support. Return Value: (%d)
+*/
+ MSG_FINDHACK_EXCEPTION = 0x2f1,
+/*20171018 to latest
+종료버튼을 클릭 하셨습니다.
+Exit button has been clicked.
+*/
+ MSG_FINDHACK_EXITPRESSED = 0x2f2,
+/*20171018 to latest
+Findhack 업데이트 서버접근 실패하였습니다. 잠시 후에 다시 시도해 주시거나 그라비티 운영팀으로 연락해주시기 바랍니다.
+Unable to connect Findhack Update Server. Please try again or contact the customer support.
+*/
+ MSG_FINDHACK_UPDATEFAILED = 0x2f3,
+/*20171018 to latest
+사랑받고있는
+Beloved
+*/
+ MSG_NAMED_PET = 0x2f4,
+/*20171018 to latest
+/report or /신고 : 신고용 갈무리 파일을 저장합니다.
+/report: Save a chat log file.
+*/
+ MSG_REPORTCOMMAND_EXPLANATION = 0x2f5,
+/*20171018 to latest
+이 파일은 (주)그라비티의 운영팀에서 게임내의 부정행위나 비매너 행위에 대한
+증거자료로 사용하게 됩니다.
+문서를 다른 문서 형식으로 저장하거나 내용을 변경하여 원본과 일치하지 않게
+ 될 경우 그 문서는 증거 효력을 상실하게 됩니다.
+Chat logs are not accepted as evidence for any ill-mannered violation on account of possible file modifications. However this feature is provided for players' personal reference.
+*/
+ MSG_REPORTTEXT_HEADER = 0x2f6,
+/*20171018 to latest
+당신을 사랑해요 ♡
+I love you.
+*/
+ MSG_LOVE_SKILL = 0x2f7,
+/*20171018 to latest
+화면 또는 이펙트가 밝아서 눈에 부담이 되시는분들은 모니터의 밝기를 조정해주시기바랍니다.
+Please adjust your monitor/video brightness if effects appear too bright.
+*/
+ MSG_EXPLAIN_BRIGHT = 0x2f8,
+/*20171018 to latest
+전체화면모드가 잘안되는 경우에 게임실행후 ALT+TAB으로 화면을 전환하면 잘되는 기종도 있습니다
+If full screen mode fails to work, it is suggested you alt+tab [or ctrl+esc] to inactivate and reactivate the Ragnarok Client.
+*/
+ MSG_EXPLAIN_ALTTAB = 0x2f9,
+/*20171018 to latest
+(%d 명) - 유료서버
+(%d players) - Pay to Play Server
+*/
+ MSG_SERVER_PROPERTY_PAY = 0x2fa,
+/*20171018 to latest
+(%d 명) - 무료서버
+(%d players) - Free Server
+*/
+ MSG_SERVER_PROPERTY_FREE = 0x2fb,
+/*20171018 to latest
+무료 회원은 유료 서버로 접속할 수 없습니다.
+Trial players can't connect Pay to Play Server.
+*/
+ MSG_CANT_CONNECT_TO_PAY_SERVER = 0x2fc,
+/*20171018 to latest
+마우스 우클릭으로 F9에 저장한 스킬을 쓸수있습니다 [/q1 ON]
+Right click menu skills for F9 are Enabled.[/q1 ON]
+*/
+ MSG_QUICKSPELL_ON = 0x2fd,
+/*20171018 to latest
+마우스 우클릭으로 스킬을 사용하지 못합니다 [/q1 OFF]
+Right click menu skills for F9 are Disabled.[/q1 OFF]
+*/
+ MSG_QUICKSPELL_OFF = 0x2fe,
+/*20171018 to latest
+/quickspell : 마우스 우클릭으로 F9에 저장한 스킬을 사용합니다 On Off
+/quickspell: Right-click menu enables you to use skills assigned to the F9 hotkey. On | Off
+*/
+ MSG_EXPLAIN_QUICKSPELL = 0x2ff,
+/*20171018 to latest
+마우스의 WHEEL을 사용해서 F7 과 F8에 저장한 스킬을 사용합니다 [/q2 ON]
+Mouse wheel skills for F7 and F8 are Enabled.[/q2 ON]
+*/
+ MSG_QUICKSPELL2_ON = 0x300,
+/*20171018 to latest
+마우스 WHEEL로 스킬을 사용하지 못합니다 [/q2 OFF]
+Mouse wheel skills for F7 and F8 are Disabled.[/q2 OFF]
+*/
+ MSG_QUICKSPELL2_OFF = 0x301,
+/*20171018 to latest
+/quickspell2 : 마우스 WHEEL을 위,아래로 굴려서 F7과F8에 저장한 스킬을 사용합니다 On Off
+/quickspell2: By rolling the mouse wheel up and down, you are able to use skills registered on F7 and F8 hotkeys. On | Off
+*/
+ MSG_EXPLAIN_QUICKSPELL2 = 0x302,
+/*20171018 to latest
+/q3 : /quickspell (/q1) + /quickspell2 (/q2)
+/q3: /quickspell (/q1) + /quickspell2 (/q2)
+*/
+ MSG_EXPLAIN_QUICKSPELL3 = 0x303,
+/*20171018 to latest
+/찌릿
+/bzz
+*/
+ MSG_EMOTION_STARE = 0x304,
+/*20171018 to latest
+/밥
+/rice
+*/
+ MSG_EMOTION_HUNGRY = 0x305,
+/*20171018 to latest
+/멋져
+/awsm
+*/
+ MSG_EMOTION_COOL = 0x306,
+/*20171018 to latest
+/메롱
+/meh
+*/
+ MSG_EMOTION_MERONG = 0x307,
+/*20171018 to latest
+/부끄
+/shy
+*/
+ MSG_EMOTION_SHY = 0x308,
+/*20171018 to latest
+/쓱쓱
+/pat
+*/
+ MSG_EMOTION_GOODBOY = 0x309,
+/*20171018 to latest
+/엠탐
+/mp
+*/
+ MSG_EMOTION_SPTIME = 0x30a,
+/*20171018 to latest
+/질질
+/slur
+*/
+ MSG_EMOTION_SEXY = 0x30b,
+/*20171018 to latest
+/컴온
+/com
+*/
+ MSG_EMOTION_COMEON = 0x30c,
+/*20171018 to latest
+/하품
+/yawn
+*/
+ MSG_EMOTION_SLEEPY = 0x30d,
+/*20171018 to latest
+/축하
+/grat
+*/
+ MSG_EMOTION_CONGRATULATION = 0x30e,
+/*20171018 to latest
+/피탐
+/hp
+*/
+ MSG_EMOTION_HPTIME = 0x30f,
+/*20171018 to latest
+/이모션 : 현재 사용가능한 이모션의 리스트를 보여줍니다.
+/emotion: views the emoticon list.
+*/
+ MSG_EXPLAIN_EMOTION = 0x310,
+/*20171018 to latest
+키보드를 이용해서 스킬단축창 1,2,3의 스킬들을 사용합니다. [/bm ON]
+Skills assigned to shortcut windows 1, 2, 3 are Enabled. [/bm ON]
+*/
+ MSG_BATTLE_ON = 0x311,
+/*20171018 to latest
+키보드를 이용해서 스킬단축창 1,2,3의 스킬들을 사용하지못합니다. [/bm OFF]
+Skills assigned to shortcut windows 1, 2, 3 are Disabled. [/bm OFF]
+*/
+ MSG_BATTLE_OFF = 0x312,
+/*20171018 to latest
+/battlemode : Q ~ O 를 누르면 스킬단축창2의 스킬들이 사용됩니다.
+/battlemode: allows you to use skills assigned to Shortcut Window 2 by pressing Q ~ O keys.
+*/
+ MSG_EXPLAIN_BATTLE = 0x313,
+/*20171018 to latest
+ A ~ L 을 누르면 스킬단축창3의 스킬들이 사용됩니다.
+A ~ L keys allow you to use skills assigned to Shortcut Window 3.
+*/
+ MSG_EXPLAIN_BATTLE2 = 0x314,
+/*20171018 to latest
+라그나로크를 실행하실때 다른 프로그램을 띄우시면 게임이 느려질수도있습니다.
+Please remember, programs running in the background while playing may affect the game's performance.
+*/
+ MSG_EXPLAIN_LAG = 0x315,
+/*20171018 to latest
+천사님 제 목소리 들리세요? ^^;
+Dear angel, can you hear my voice?
+*/
+ MSG_SUPERNOVICE1 = 0x316,
+/*20171018 to latest
+슈퍼노비스
+Super Novice
+*/
+ MSG_SUPERNOVICE2 = 0x317,
+/*20171018 to latest
+예요~
+Super Novice~
+*/
+ MSG_SUPERNOVICE3 = 0x318,
+/*20171018 to latest
+저 좀 도와주세요~ ㅠ_ㅠ
+Help me out~ Please~ T_T
+*/
+ MSG_SUPERNOVICE4 = 0x319,
+/*20171018 to latest
+님께서 당신을 입양시키고 싶어하십니다. 승낙하시겠습니까?
+ wishes to adopt you. Do you accept?
+*/
+ MSG_SUGGEST_BABY = 0x31a,
+/*20171018 to latest
+ Z ~ > 을 누르면 스킬단축창1의 스킬들이 사용됩니다. On Off
+Z ~ > keys allow you to use skills assigned on shortcut window 1. On | Off
+*/
+ MSG_EXPLAIN_BATTLE3 = 0x31b,
+/*20171018 to latest
+ Space를 한번 누른뒤에 글자를 입력하면 채팅을 할수있습니다.
+Press the space bar to Chat when in Battle mode [/battlemode | /bm].
+*/
+ MSG_EXPLAIN_BATTLE4 = 0x31c,
+/*20171018 to latest
+게임가드 파일이 없거나 변조되었습니다. 게임가드 셋업 파일을 설치해보시기 바랍니다.
+"Either there's no Game Guard installed on the program or Game Guard is cracked. Please, try to reinstall Game Guard from its setup file."
+*/
+ MSG_NPGAMEMON_ERROR_AUTH_GAMEGUARD = 0x31d,
+/*20171018 to latest
+윈도우의 일부 시스템 파일이 손상되었습니다. 인터넷 익스플로러(IE)를 다시 설치해보시기 바랍니다.
+Some of Windows system files have been damaged. Please re-install your Internet Explorer.
+*/
+ MSG_NPGAMEMON_ERROR_CRYPTOAPI = 0x31e,
+/*20171018 to latest
+게임가드 실행에 실패했습니다. 게임가드 셋업 파일을 다시 설치해보시기 바랍니다.
+"Failed to run Game Guard. Please, try to reinstall Game Guard from its setup file."
+*/
+ MSG_NPGAMEMON_ERROR_EXECUTE = 0x31f,
+/*20171018 to latest
+불법 프로그램이 발견되었습니다. 불필요한 프로그램을 종료한 후 다시 실행해보시기 바랍니다.
+"At least one hazardous program has been detected. Please, terminate all the unnecessary programs before executing Game Guard."
+*/
+ MSG_NPGAMEMON_ERROR_ILLEGAL_PRG = 0x320,
+/*20171018 to latest
+게임가드 업데이트를 취소하셨습니다. 접속이 계속 되지 않을 경우 인터넷 및 방화벽 상태를 점검해보시기 바랍니다.
+"Game Guard update is canceled. If the disconnection continues, please, check your internet or firewall settings."
+*/
+ MSG_NPGMUP_ERROR_ABORT = 0x321,
+/*20171018 to latest
+게임가드 업데이트 서버 접속에 실패하였습니다. 잠시 후 재시도 해보거나, 인터넷 및 방화벽 상태를 점검해 보시기 바랍니다.
+"Failed to connect to Game Guard update server. Try to connect again later, or try to check the internet or firewall settings."
+*/
+ MSG_NPGMUP_ERROR_CONNECT = 0x322,
+/*20171018 to latest
+게임가드 업데이트를 완료하지 못 했습니다. 바이러스 검사를 해보시거나, PC 관리 프로그램을 사용하시면 설정을 조정한 후 게임을 실행해 보시기 바랍니다.
+"Can't complete Game Guard update process. Please, try to execute a vaccine program to remove viruses. Or, please try to modify the settings of your PC managing tool if you are using any."
+*/
+ MSG_NPGMUP_ERROR_AUTH = 0x323,
+/*20171018 to latest
+/notrade : 거래신청을 자동으로 거절합니다 On Off
+/notrade: Declines trade offers automatically. On | Off
+*/
+ MSG_EXPLAIN_NOTRADE = 0x324,
+/*20171018 to latest
+거래신청과 친구등록요청을 자동으로 거절합니다 [/nt ON]
+Auto decline trade offers has been Enabled. [/nt ON]
+*/
+ MSG_NOTRADE_ON = 0x325,
+/*20171018 to latest
+거래신청과 친구등록요청을 정상적으로 받습니다 [/nt OFF]
+Auto decline trade offers has been Disabled. [/nt OFF]
+*/
+ MSG_NOTRADE_OFF = 0x326,
+/*20171018 to latest
+같은 아이템은 한번에 30000개 이상은 살수 없습니다.
+You cannot buy more than 30,000ea items at once.
+*/
+ MSG_LIMIT_BUY_ITEM = 0x327,
+/*20171018 to latest
+재료가 충분하지 않습니다.
+You do not have enough ingredients.
+*/
+ MSG_NOT_ENOUGH_SOURCE = 0x328,
+/*20171018 to latest
+%s에 계정정보가 남아있습니다.
+Login information remains at %s.
+*/
+ MSG_ALREADY_CONNECT = 0x329,
+/*20171018 to latest
+계정도용 조사를 위해 로그인이 금지되었습니다. 자세한 문의는 계정도용 관련 문의 메일로 해주시기 바랍니다.
+Account has been locked for a hacking investigation. Please contact the GM Team for more information.
+*/
+ MSG_HACKING_INVESTIGATION = 0x32a,
+/*20171018 to latest
+귀하는 버그관련 조사중이므로 일시적으로 접속을 금합니다
+This account has been temporarily prohibited from login due to a bug-related investigation.
+*/
+ MSG_BUG_INVESTIGATION = 0x32b,
+/*20171018 to latest
+수리가능한 아이템
+Repairable items
+*/
+ MSG_REPAIRITEMLIST = 0x32c,
+/*20171018 to latest
+아이템 수리 성공
+Item has been successfully repaired.
+*/
+ MSG_ITEM_REPAIR_SUCCEESS = 0x32d,
+/*20171018 to latest
+아이템 수리 실패 (재료 또는 상대와의 거리등을 확인해주십시요)
+You have failed to repair this item. Please check the distance between you and opponent.
+*/
+ MSG_ITEM_REPAIR_FAIL = 0x32e,
+/*20171018 to latest
+시스템 상황을 지속적으로 체크 합니다.[운영자모드] [/sc ON]
+System process enabled [GM mode] [/sc ON]
+*/
+ MSG_SYSTEM_CHECK_ON = 0x32f,
+/*20171018 to latest
+시스템 상황을 지속적으로 체크 하지 않습니다.[운영자모드] [/sc OFF]
+System process disabled [GM mode] [/sc OFF]
+*/
+ MSG_SYSTEM_CHECK_OFF = 0x330,
+/*20171018 to latest
+/systemcheck : 시스템 상황을 지속적으로 체크 합니다.[운영자모드]
+/systemcheck: Check the system process [GM mode] On | Off
+*/
+ MSG_EXPLAIN_SYSTEM_CHECK = 0x331,
+/*20171018 to latest
+(%s)님이 친구 신청을 하셨습니다. 친구가 되시겠습니까?
+(%s) wishes to be friends with you. Would you like to accept?
+*/
+ MSG_SUGGEST_JOIN_FRIEND = 0x332,
+/*20171018 to latest
+더 이상 친구 등록을 하실수 없습니다.
+Your Friend List is full.
+*/
+ MSG_FRIEND_ADD_ME_OVERSIZE = 0x333,
+/*20171018 to latest
+(%s)님이 더 이상 친구 등록을 하실수 없습니다.
+(%s)'s Friend List is full.
+*/
+ MSG_FRIEND_ADD_OTHER_OVERSIZE = 0x334,
+/*20171018 to latest
+(%s)님과 친구가 되셨습니다.
+You have become friends with (%s).
+*/
+ MSG_FRIEND_ADD_SUCCEED = 0x335,
+/*20171018 to latest
+(%s)님이 친구 되기를 원하지 않습니다.
+(%s) does not want to be friends with you.
+*/
+ MSG_FRIEND_ADD_FALSE = 0x336,
+/*20171018 to latest
+이 캐릭터는 %s 까지 블럭되어있습니다.
+This character will be blocked to use until %s.
+*/
+ MSG_BLOCKED = 0x337,
+/*20171018 to latest
+천만제니 이상 입력하셔도 가격은 천만제니로 판매됩니다.
+Price will be fixed at 10,000,000 zeny, even if you enter higher price.
+*/
+ MSG_OVERPRICE = 0x338,
+/*20171018 to latest
+(적음)
+(Very low)
+*/
+ MSG_LITTLEUSER = 0x339,
+/*20171018 to latest
+(약간 적음)
+(Low)
+*/
+ MSG_ALITTLEUSER = 0x33a,
+/*20171018 to latest
+(보통)
+(Normal)
+*/
+ MSG_NORMLEUSER = 0x33b,
+/*20171018 to latest
+(많음)
+(High)
+*/
+ MSG_MANYUSER = 0x33c,
+/*20171018 to latest
+(매우 많음)
+(Very high)
+*/
+ MSG_VERYMANYUSER = 0x33d,
+/*20171018 to latest
+비매너에 의해 운영자로부터 채팅금지가 적용됩니다.
+You have been blocked from using chat and skills for %d minutes by the GM Team.
+*/
+ MSG_GM_BAD_MANNER_START = 0x33e,
+/*20171018 to latest
+GM에 의한 채팅금지가 %d 분 남아 있습니다.
+%d minutes remain until release from the GM penalty.
+*/
+ MSG_GM_BAD_MANNER_REMAIN = 0x33f,
+/*20171018 to latest
+GM에 의한 채팅금지가 해지 되었습니다.
+You have been released from the GM penalty.
+*/
+ MSG_GM_BAD_MANNER_END = 0x340,
+/*20171018 to latest
+도배 방지 시스템으로 인한 자동 채팅금지가 적용됩니다.
+You have been blocked from using chat and skills for %d as an automatic penalty.
+*/
+ MSG_AUTO_BAD_MANNER_START = 0x341,
+/*20171018 to latest
+도배 방지 시스템으로 인한 채팅금지가 %d 분 남아 있습니다.
+%d minutes remain until release from auto penalty.
+*/
+ MSG_AUTO_BAD_MANNER_REMAIN = 0x342,
+/*20171018 to latest
+도배 방지 시스템으로 인한 채팅금지가 해지되었습니다. 게임진행 시에는 도배에 대해서 주의하여 주시기 바랍니다.
+You have been released from the auto penalty. Please refrain from spamming in-game.
+*/
+ MSG_AUTO_BAD_MANNER_END = 0x343,
+/*20171018 to latest
+%s님과 %s님이 이혼하셨습니다.
+%s and %s have divorced from each other.
+*/
+ MSG_DIVORCE = 0x344,
+/*20171018 to latest
+拳聖 %s의 태양의 장소로 %s 가 지정됐습니다.
+%s has been designated as Gravity %s's Solar Space.
+*/
+ MSG_STARPLACE1 = 0x345,
+/*20171018 to latest
+拳聖 %s의 달의 장소로 %s 가 지정됐습니다.
+%s has been designated as Gravity %s's Luna Space.
+*/
+ MSG_STARPLACE2 = 0x346,
+/*20171018 to latest
+拳聖 %s의 별의 장소로 %s 가 지정됐습니다.
+%s has been designated as Gravity %s's Stellar Space.
+*/
+ MSG_STARPLACE3 = 0x347,
+/*20171018 to latest
+拳聖 %s의 태양의 장소는 %s 입니다
+Gravity %s's Solar Space: %s
+*/
+ MSG_STARPLACE4 = 0x348,
+/*20171018 to latest
+拳聖 %s의 달의 장소는 %s 입니다
+Gravity %s's Luna Space: %s
+*/
+ MSG_STARPLACE5 = 0x349,
+/*20171018 to latest
+拳聖 %s의 별의 장소는 %s 입니다
+Gravity %s's Stellar Space: %s
+*/
+ MSG_STARPLACE6 = 0x34a,
+/*20171018 to latest
+拳聖 %s의 태양의 몬스터로 %s 가 지정됐습니다.
+%s has been designated as Gravity %s's Solar Monster.
+*/
+ MSG_STARMONSTER1 = 0x34b,
+/*20171018 to latest
+拳聖 %s의 달의 몬스터로 %s 가 지정됐습니다.
+%s has been designated as Gravity %s's Luna Monster.
+*/
+ MSG_STARMONSTER2 = 0x34c,
+/*20171018 to latest
+拳聖 %s의 별의 몬스터로 %s 가 지정됐습니다.
+%s has been designated as Gravity %s's Stellar Monster.
+*/
+ MSG_STARMONSTER3 = 0x34d,
+/*20171018 to latest
+拳聖 %s의 태양의 몬스터는 %s 입니다
+Gravity %s's Solar Monster: %s
+*/
+ MSG_STARMONSTER4 = 0x34e,
+/*20171018 to latest
+拳聖 %s의 달의 몬스터는 %s 입니다
+Gravity %s's Luna Monster: %s
+*/
+ MSG_STARMONSTER5 = 0x34f,
+/*20171018 to latest
+拳聖 %s의 별의 몬스터는 %s 입니다
+Gravity %s's Stellar Monster: %s
+*/
+ MSG_STARMONSTER6 = 0x350,
+/*20171018 to latest
+/window : 창 위치 이동시 다른 창과 달라붙는 속성이 들어갑니다 On Off
+/window: Display windows will snap/dock together. On | Off
+*/
+ MSG_EXPLAIN_WINDOW = 0x351,
+/*20171018 to latest
+창 위치 이동시 다른 창과 잘 붙습니다 [/wi ON]
+Display window docking enabled. [/wi ON]
+*/
+ MSG_WINDOW_ON = 0x352,
+/*20171018 to latest
+창 위치 이동시 다른 창과 붙으려는 속성을 가지지 않습니다 [/wi OFF]
+Display window docking disabled. [/wi OFF]
+*/
+ MSG_WINDOW_OFF = 0x353,
+/*20171018 to latest
+/pvpinfo : 자신의 PVP 승패와 PVP 포인트를 알 수 있습니다.
+/pvpinfo: shows your PVP result and PVP points.
+*/
+ MSG_EXPLAIN_PVP_INFO = 0x354,
+/*20171018 to latest
+현재 %d승, %d패, PVP포인트는 %d입니다.
+You have won %d times and have lost %d times in PVP. Current points %d.
+*/
+ MSG_PVP_INFO = 0x355,
+/*20171018 to latest
+매너 포인트를 성공적으로 보냈습니다.
+A manner point has been successfully aligned.
+*/
+ MSG_SEND_MANNER_POINT = 0x356,
+/*20171018 to latest
+현재 이곳은 PK 가능 지역입니다. 불의의 공격에 유의 하시기 바랍니다.
+You are in a PK area. Please beware of sudden attack.
+*/
+ MSG_PKZONE = 0x357,
+/*20171018 to latest
+게임가드 업데이트가 바이러스나 스파이웨어와의 충돌로 실패했습니다. 백신 프로그램/스파이웨어 제거 프로그램을 사용한 후 접속해 주십시기 바랍니다
+Game Guard update has been failed when either Virus or Spyware conflicted with. Please, Uninstall Spyware and Virus protection program before you log in.
+*/
+ MSG_NPGAMEMON_ERROR_100ERROR = 0x358,
+/*20171018 to latest
+윈도우 호환성 문제로 프로그램을 종료합니다. 게임을 다시 실행해 주시기 바랍니다
+Program has encountered an error related to Windows compatibility. Please start the game again.
+*/
+ MSG_NPGAMEMON_XP_COMPATIBILITY = 0x359,
+/*20171018 to latest
+채팅, 스킬, 아이템을 사용할수없게 되었습니다.
+You have been blocked from chatting, using skills and items.
+*/
+ MSG_PK_HONOR = 0x35a,
+/*20171018 to latest
+캐릭터 삭제 작업중이므로 접속이 일시적으로 제한됩니다.
+Login is temporarily unavailable while this character is being deleted.
+*/
+ MSG_DELETING_CHAR = 0x35b,
+/*20171018 to latest
+결혼 상대자의 캐릭터 삭제 작업중이므로 접속이 일시적으로 제한됩니다.
+Login is temporarily unavailable while your spouse character is being deleted.
+*/
+ MSG_DELETING_SPOUSE_CHAR = 0x35c,
+/*20171018 to latest
+Novice
+*/
+ MSG_NOVICE = 0x35d,
+/*20171018 to latest
+Swordman
+*/
+ MSG_SWORDMAN = 0x35e,
+/*20171018 to latest
+Magician
+Mage
+*/
+ MSG_MAGICIAN = 0x35f,
+/*20171018 to latest
+Archer
+*/
+ MSG_ARCHER = 0x360,
+/*20171018 to latest
+Acolyte
+*/
+ MSG_ACOLYTE = 0x361,
+/*20171018 to latest
+Merchant
+*/
+ MSG_MERCHANT = 0x362,
+/*20171018 to latest
+Thief
+*/
+ MSG_THIEF = 0x363,
+/*20171018 to latest
+Knight
+*/
+ MSG_KNIGHT = 0x364,
+/*20171018 to 20181128
+Prieset
+Priest
+20181212 to latest
+Priest
+*/
+ MSG_PRIEST = 0x365,
+/*20171018 to latest
+Wizerd
+Wizard
+*/
+ MSG_WIZARD = 0x366,
+/*20171018 to latest
+Blacksmith
+*/
+ MSG_BLACKSMITH = 0x367,
+/*20171018 to latest
+Hunter
+*/
+ MSG_HUNTER = 0x368,
+/*20171018 to latest
+Assassin
+*/
+ MSG_ASSASSIN = 0x369,
+/*20171018 to latest
+Novice
+*/
+ MSG_NOVICE_W = 0x36a,
+/*20171018 to latest
+Swordman
+*/
+ MSG_SWORDMAN_W = 0x36b,
+/*20171018 to latest
+Magician
+Mage
+*/
+ MSG_MAGICIAN_W = 0x36c,
+/*20171018 to latest
+Archer
+*/
+ MSG_ARCHER_W = 0x36d,
+/*20171018 to latest
+Acolyte
+*/
+ MSG_ACOLYTE_W = 0x36e,
+/*20171018 to latest
+Merchant
+*/
+ MSG_MERCHANT_W = 0x36f,
+/*20171018 to latest
+Thief
+*/
+ MSG_THIEF_W = 0x370,
+/*20171018 to latest
+Knight
+*/
+ MSG_KNIGHT_W = 0x371,
+/*20171018 to latest
+Prieset
+Priest
+*/
+ MSG_PRIEST_W = 0x372,
+/*20171018 to latest
+Wizerd
+Wizard
+*/
+ MSG_WIZARD_W = 0x373,
+/*20171018 to latest
+Blacksmith
+*/
+ MSG_BLACKSMITH_W = 0x374,
+/*20171018 to latest
+Hunter
+*/
+ MSG_HUNTER_W = 0x375,
+/*20171018 to latest
+Assassin
+*/
+ MSG_ASSASSIN_W = 0x376,
+/*20171018 to latest
+(%s)님을 아이로 입양신청
+Send an adoption request to %s
+*/
+ MSG_REQ_JOIN_BABY = 0x377,
+/*20171018 to latest
+아이가 되면 전승을 할수없고 스텟은 80이상 올릴수없게되며 HP와 SP가 줄어듭니다. 그래도 괜찮습니까?
+When you become a child, you will be unable to become a Transcendent Class character, all stats will be limited to a maximum of 80, and Max HP/SP will be reduced. Are you sure that you want to be adopted?
+*/
+ MSG_SUGGEST_BABY2 = 0x378,
+/*20171018 to latest
+모든 나쁜 상태이상이 제거 되었습니다.
+All abnormal status effects have been removed.
+*/
+ MSG_GOSPEL1 = 0x379,
+/*20171018 to latest
+1분간 모든 상태이상에 대해 면역이 됩니다.
+You will be immune to abnormal status effects for the next minute.
+*/
+ MSG_GOSPEL2 = 0x37a,
+/*20171018 to latest
+1분간 최대 생명력이 크게 늘어납니다.
+Your Max HP will stay increased for the next minute.
+*/
+ MSG_GOSPEL3 = 0x37b,
+/*20171018 to latest
+1분간 최대 마법력이 크게 늘어납니다.
+Your Max SP will stay increased for the next minute.
+*/
+ MSG_GOSPEL4 = 0x37c,
+/*20171018 to latest
+1분간 모든 능력이 크게 상승합니다.
+All of your Stats will stay increased for the next minute.
+*/
+ MSG_GOSPEL5 = 0x37d,
+/*20171018 to latest
+1분간 사용하는 무기에 성스러운 속성이 부여됩니다.
+Your weapon will remain blessed with Holy power for the next minute.
+*/
+ MSG_GOSPEL6 = 0x37e,
+/*20171018 to latest
+1분간 사용하는 갑옷에 성스러운 속성이 부여됩니다.
+Your armor will remain blessed with Holy power for the next minute.
+*/
+ MSG_GOSPEL7 = 0x37f,
+/*20171018 to latest
+10초간 방어력이 크게 상승합니다.
+Your Defense will stay increased for the next 10 seconds.
+*/
+ MSG_GOSPEL8 = 0x380,
+/*20171018 to latest
+1분간 공격력이 크게 증가합니다.
+Your Attack strength will be increased for the next minute.
+*/
+ MSG_GOSPEL9 = 0x381,
+/*20171018 to latest
+1분간 명중률과 회피율이 크게 상승합니다.
+Your Accuracy and Flee Rate will be increased for the next minute.
+*/
+ MSG_GOSPEL10 = 0x382,
+/*20171018 to latest
+아이를 한번 입양했던 부부는 추가 입양이 불가능합니다.
+You cannot adopt more than 1 child.
+*/
+ MSG_BABY1 = 0x383,
+/*20171018 to latest
+부부가 둘다 레벨70이 넘어야 아이를 입양할수있습니다.
+You must be at least character level 70 in order to adopt someone.
+*/
+ MSG_BABY2 = 0x384,
+/*20171018 to latest
+[POINT] 블랙스미스 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[Point] You have been rewarded with %d Blacksmith rank points. Your point total is %d.
+*/
+ MSG_BLACKSMITH_POINT = 0x385,
+/*20171018 to latest
+[POINT] 알케미스트 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[Point] You have been rewarded with %d Alchemist rank points. Your point total is %d.
+*/
+ MSG_ALCHEMIST_POINT = 0x386,
+/*20171018 to latest
+X
+Help me out~ Please~ T_T
+*/
+ MSG_SUPERNOVICE11 = 0x387,
+/*20171018 to latest
+X
+Help me out~ Please~ T_T
+*/
+ MSG_SUPERNOVICE12 = 0x388,
+/*20171018 to latest
+X
+Help me out~ Please~ T_T
+*/
+ MSG_SUPERNOVICE13 = 0x389,
+/*20171018 to latest
+X
+Help me out~ Please~ T_T
+*/
+ MSG_SUPERNOVICE14 = 0x38a,
+/*20171018 to latest
+/notalkmsg2 : 채팅내용을 채팅창에 표시하지 않습니다 (길드말 포함) On Off
+/notalkmsg2: Hides chat messages(including guild chat). On Off
+*/
+ MSG_EXPLAIN_NOTALKMSG2 = 0x38b,
+/*20171018 to latest
+채팅내용을 채팅창에 표시합니다 [/nm2 ON]
+Show chat messages. [/nm2 ON]
+*/
+ MSG_NOTALKMSG2_ON = 0x38c,
+/*20171018 to latest
+채팅내용을 채팅창에 표시하지않습니다 (길드말 포함) [/nm2 OFF]
+Hide chat messages(including guild chat) [/nm2 OFF]
+*/
+ MSG_NOTALKMSG2_OFF = 0x38d,
+/*20171018 to latest
+제련가능한 아이템
+Upgradable Weapons
+*/
+ MSG_REFINEITEMLIST = 0x38e,
+/*20171018 to latest
+제련한 무기 : %s
+Weapons upgraded: %s
+*/
+ MSG_ITEM_REFINE_SUCCEESS = 0x38f,
+/*20171018 to latest
+제련한 무기 : %s
+Weapons upgraded: %s
+*/
+ MSG_ITEM_REFINE_FAIL = 0x390,
+/*20171018 to latest
+무기제련스킬의 레벨이 부족해서 %s 제련을 할수없습니다.
+You cannot upgrade %s until you level up your Upgrade Weapon skill.
+*/
+ MSG_ITEM_REFINE_FAIL_LEVEL = 0x391,
+/*20171018 to latest
+제련에 필요한 아이템 (%s) 이 없으므로 제련할수없습니다.
+You lack a necessary item %s to upgrade this weapon.
+*/
+ MSG_ITEM_REFINE_FAIL_MATERIAL = 0x392,
+/*20171018 to latest
+완벽하게 코팅되어있어서 풀스트립이 통하지 않습니다.
+Full Divestment cannot pierce the target. The target is fully shielded.
+*/
+ MSG_FULLSTRIP = 0x393,
+/*20171018 to latest
+결혼한 캐릭터는 입양시킬수 없습니다.
+You cannot adopt a married person.
+*/
+ MSG_BABY3 = 0x394,
+/*20171018 to latest
+친구로 등록된 이름과 비슷하지만 등록된 이름이 아닙니다. 아는사람인지 확인하십시요.
+This name is not registered in your Friend List. Please check the name again.
+*/
+ MSG_ID_WARNING = 0x395,
+/*20171018 to latest
+/hi 또는 /hi 문장 : 친구로 등록된 캐릭터들에게 인사를 합니다.
+/hi or /hi message: Send greetings to people who are online and registered on your Friend List.
+*/
+ MSG_EXPLAIN_HI = 0x396,
+/*20171018 to latest
+길드원의 이름과 비슷하지만 길드원이 아닙니다. 길드원인지 확인하십시요.
+This character is not your guildsman. Please check the name again.
+*/
+ MSG_ID_WARNING_GUILD = 0x397,
+/*20171018 to latest
+9999만제니 이상 입력하셔도 가격은 9999만제니로 판매됩니다.
+Please be aware that the maximum selling price is fixed as 2 Billion. You cannot sell an item higher than that.
+*/
+ MSG_OVERPRICE9999 = 0x398,
+/*20171018 to latest
+친구의 귓속말은 [ Friend ] , 길드원은 [ Member ] 로 표시됩니다.
+Whispers from friends are displayed as [ Friend ], and ones from guildsmen are displayed as [ Member ].
+*/
+ MSG_EXPLAIN_SACHING1 = 0x399,
+/*20171018 to latest
+( From 캐릭터이름 : ) 이라고 표시 되는 귓속말은 친구나 길드원이 아닙니다.
+( From character name: ) is from an anonymous character who is neither your friend nor guildsman.
+*/
+ MSG_EXPLAIN_SACHING2 = 0x39a,
+/*20171018 to latest
+/blacksmith : 블랙스미스의 상위 10위권 랭킹을 보여줍니다.
+/blacksmith: Shows top 10 Blacksmiths in the server.
+*/
+ MSG_EXPLAIN_BLACKSMITH = 0x39b,
+/*20171018 to latest
+/alchemist : 알케미스트의 상위 10위권 랭킹을 보여줍니다.
+/alchemist: Shows top 10 Alchemists in the server.
+*/
+ MSG_EXPLAIN_ALCHEMIST = 0x39c,
+/*20171018 to latest
+ALT+Y : 여러가지 명령어를 쉽게 쓸수있는 윈도우가 열립니다.
+ALT+Y: Opens a window which allows you to use various commands with ease.
+*/
+ MSG_EXPLAIN_ALTY = 0x39d,
+/*20171018 to latest
+[POINT] 태권미션 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[POINT] You have been rewarded with %d Tae-Kwon Mission rank points. Your point total is %d.
+*/
+ MSG_TAEKWON_POINT = 0x39e,
+/*20171018 to latest
+[태권미션] Target Monster : %s (%d%%)
+[Taekwon Mission] Target Monster: %s (%d%%)
+*/
+ MSG_TAEKWON_MISSION = 0x39f,
+/*20171018 to latest
+게임가드 초기화 에러 : %lu
+Error - Failed to initialize GameGuard: %lu
+*/
+ MSG_INIT_ERROR = 0x3a0,
+/*20171018 to latest
+스피드핵이 감지되었습니다.
+Speed Hack has been detected.
+*/
+ MSG_SPEEDHACK_DETECT = 0x3a1,
+/*20171018 to latest
+불법 프로그램 (%s) 가 발견되었습니다
+The illegal program, (%s) has been detected.
+*/
+ MSG_GAMEHACK_DETECT = 0x3a2,
+/*20171018 to latest
+게임이나 게임가드가 변조되었습니다.
+The Game or Gameguard has been cracked.
+*/
+ MSG_GAMEHACK_DOUBT = 0x3a3,
+/*20171018 to latest
+게임가드가 실행 중 입니다. 잠시 후에 다시 실행해보시기 바랍니다.
+GameGuard is currently running. Please wait for sometime and restart the game.
+*/
+ MSG_ERROR_EXIST = 0x3a4,
+/*20171018 to latest
+게임이 중복 실행되었거나 게임가드가 이미 실행 중 입니다. 게임 종료 후 다시 실행해보시기 바랍니다.
+The Game or GameGuard is already running. Please close the game and restart the game.
+*/
+ MSG_GAME_EXIST = 0x3a5,
+/*20171018 to latest
+게임가드 초기화 에러입니다. 재부팅 후 다시 실행해보거나 충돌할 수 있는 다른 프로그램들을 종료한 후 실행해 보시기 바랍니다.
+Failed to intialize GameGuard. Please try again after rebooting the system or closing other programs.
+*/
+ MSG_ERROR_INIT = 0x3a6,
+/*20171018 to latest
+바이러스 및 해킹툴 검사 모듈 로딩에 실패 했습니다. 메모리 부족이거나 바이러스에 의한 감염일 수 있습니다.
+Failed to load the scan module of virus and hacking tool. It's caused by lack of memory or PC virus infection.
+*/
+ MSG_ERROR_NPSCAN = 0x3a7,
+/*20171018 to latest
+호문클루스 정보
+Homunculus Info
+*/
+ MSG_HOMUN_INFO = 0x3a8,
+/*20171018 to latest
+호문클루스 스킬목록
+Homunculus Skill List
+*/
+ MSG_HOMUN_SKILLLIST = 0x3a9,
+/*20171018 to latest
+호문클루스의 이름은 영문 23, 한글 11자 이내로 정해 주세요.
+Please give your Homunculus a name no longer than 23 letters.
+*/
+ MSG_HOMUN_NAME_IN23 = 0x3aa,
+/*20171018 to latest
+이름은 단 한번만 바꿀수 있습니다. 호문클루스의 이름을 ^0000ff^0000ff %s^000000^000000 로 수정합니다. 계속 하시겠습니까?
+You can name a Homunculus only once. You have entered the name, ^0000ff%s^000000. Would you like to continue?
+*/
+ MSG_HOMUN_NAME_CHANGE_ONLYONCE = 0x3ab,
+/*20171018 to latest
+지금은 부재중~
+(Away)
+*/
+ MSG_AUTO_MSG = 0x3ac,
+/*20171018 to latest
+[자동응답]
+[Automated Message]
+*/
+ MSG_AUTO_MSG2 = 0x3ad,
+/*20171018 to latest
+부재시 타인의 귓말에 자동응답합니다.
+Send an automated message while you are away.
+*/
+ MSG_AUTO_MSG_ON = 0x3ae,
+/*20171018 to latest
+부재시 타인의 귓말에 자동응답하지 않습니다.
+Cancel automated away message.
+*/
+ MSG_AUTO_MSG_OFF = 0x3af,
+/*20171018 to latest
+자동 응답 메시지를 입력하세요.
+Please enter Away Message.
+*/
+ MSG_ENTER_AUTO_MSG = 0x3b0,
+/*20171018 to latest
+/번쩍
+/fsh
+*/
+ MSG_EMOTION_SPARK = 0x3b1,
+/*20171018 to latest
+/빙빙
+/spin
+*/
+ MSG_EMOTION_CONFUSE = 0x3b2,
+/*20171018 to latest
+/하아
+/sigh
+*/
+ MSG_EMOTION_OHNO = 0x3b3,
+/*20171018 to latest
+/덤덤
+/dum
+*/
+ MSG_EMOTION_HUM = 0x3b4,
+/*20171018 to latest
+/시끌
+/crwd
+*/
+ MSG_EMOTION_BLABLA = 0x3b5,
+/*20171018 to latest
+/좌절
+/desp
+*/
+ MSG_EMOTION_OTL = 0x3b6,
+/*20171018 to latest
+/주사위
+/dice
+*/
+ MSG_EMOTION_DICE = 0x3b7,
+/*20171018 to latest
+/pk : 학살자의 상위 10위권 랭킹을 보여줍니다.
+/pk: Shows top 10 Slayers in the server.
+*/
+ MSG_EXPLAIN_KILLER_RANK = 0x3b8,
+/*20171018 to latest
+[POINT] 학살자 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[POINT] You have been rewarded with %d Slayer rank points. Your point total is %d.
+*/
+ MSG_KILLER_POINT = 0x3b9,
+/*20171018 to latest
+진화 가능
+Evolution Available
+*/
+ MSG_HOMUN_EVOLVE = 0x3ba,
+/*20171018 to latest
+^ff0000^ff0000호문클루스를 삭제합니다.^000000^000000 삭제하실 경우 지금까지 키운 내역이 모두 삭제됩니다. 계속하시겠습니까?
+You have decided to delete this Homunculus ^ff0000^ff0000. When deleted, the homunculus and its history will be deleted and they cannot be restored in the future. Would you like to continue?
+*/
+ MSG_DELETE_HOMUN = 0x3bb,
+/*20171018 to latest
+호문의 상태를 파일에 저장합니다.
+Save Homunculus status as a file.
+*/
+ MSG_TRACE_AI_ON = 0x3bc,
+/*20171018 to latest
+호문의 상태를 파일에 저장하지 않습니다.
+Do not save Homunculus status as a file.
+*/
+ MSG_TRACE_AI_OFF = 0x3bd,
+/*20171018 to latest
+Crusader
+*/
+ MSG_CRUSADER = 0x3be,
+/*20171018 to latest
+Monk
+*/
+ MSG_MONK = 0x3bf,
+/*20171018 to latest
+Sage
+*/
+ MSG_SAGE = 0x3c0,
+/*20171018 to latest
+Rouge
+Rogue
+*/
+ MSG_ROGUE = 0x3c1,
+/*20171018 to latest
+Alchemist
+*/
+ MSG_ALCHEMIST = 0x3c2,
+/*20171018 to latest
+Bard
+*/
+ MSG_BARD = 0x3c3,
+/*20171018 to latest
+Crusader_W
+Crusader
+*/
+ MSG_CRUSADER_W = 0x3c4,
+/*20171018 to latest
+Monk_W
+Monk
+*/
+ MSG_MONK_W = 0x3c5,
+/*20171018 to latest
+Sage_W
+Sage
+*/
+ MSG_SAGE_W = 0x3c6,
+/*20171018 to latest
+Rouge_W
+Rogue
+*/
+ MSG_ROGUE_W = 0x3c7,
+/*20171018 to latest
+Alchemist_W
+Alchemist
+*/
+ MSG_ALCHEMIST_W = 0x3c8,
+/*20171018 to latest
+Dancer
+*/
+ MSG_DANCER = 0x3c9,
+/*20171018 to latest
+Novice High
+High Novice
+*/
+ MSG_NOVICE_H = 0x3ca,
+/*20171018 to latest
+Swordman High
+High Swordman
+*/
+ MSG_SWORDMAN_H = 0x3cb,
+/*20171018 to latest
+Magician High
+High Mage
+*/
+ MSG_MAGICIAN_H = 0x3cc,
+/*20171018 to latest
+Archer High
+High Archer
+*/
+ MSG_ARCHER_H = 0x3cd,
+/*20171018 to latest
+Acolyte High
+High Acolyte
+*/
+ MSG_ACOLYTE_H = 0x3ce,
+/*20171018 to latest
+Merchant High
+High Merchant
+*/
+ MSG_MERCHANT_H = 0x3cf,
+/*20171018 to latest
+Thief High
+High Thief
+*/
+ MSG_THIEF_H = 0x3d0,
+/*20171018 to latest
+Novice High_W
+High Novice
+*/
+ MSG_NOVICE_H_W = 0x3d1,
+/*20171018 to latest
+Swordman High_W
+High Swordman
+*/
+ MSG_SWORDMAN_H_W = 0x3d2,
+/*20171018 to latest
+Magician High_W
+High Mage
+*/
+ MSG_MAGICIAN_H_W = 0x3d3,
+/*20171018 to latest
+Archer High_W
+High Archer
+*/
+ MSG_ARCHER_H_W = 0x3d4,
+/*20171018 to latest
+Acolyte High_W
+High Acolyte
+*/
+ MSG_ACOLYTE_H_W = 0x3d5,
+/*20171018 to latest
+Merchant High_W
+High Merchant
+*/
+ MSG_MERCHANT_H_W = 0x3d6,
+/*20171018 to latest
+Thief High_W
+High Thief
+*/
+ MSG_THIEF_H_W = 0x3d7,
+/*20171018 to latest
+Lord Knight
+*/
+ MSG_KNIGHT_H = 0x3d8,
+/*20171018 to latest
+High Priest
+*/
+ MSG_PRIEST_H = 0x3d9,
+/*20171018 to latest
+High Wizard
+*/
+ MSG_WIZARD_H = 0x3da,
+/*20171018 to latest
+White Smith
+WhiteSmith
+*/
+ MSG_BLACKSMITH_H = 0x3db,
+/*20171018 to latest
+Sniper
+*/
+ MSG_HUNTER_H = 0x3dc,
+/*20171018 to 20181128
+Saaassin Cross
+Assassin Cross
+20181212 to latest
+Assassin Cross
+*/
+ MSG_ASSASSIN_H = 0x3dd,
+/*20171018 to latest
+Lord Knight_W
+Lord Knight
+*/
+ MSG_KNIGHT_H_W = 0x3de,
+/*20171018 to latest
+High Priest_W
+High Priest
+*/
+ MSG_PRIEST_H_W = 0x3df,
+/*20171018 to latest
+High Wizard_W
+High Wizard
+*/
+ MSG_WIZARD_H_W = 0x3e0,
+/*20171018 to latest
+White Smith_W
+WhiteSmith
+*/
+ MSG_BLACKSMITH_H_W = 0x3e1,
+/*20171018 to latest
+Sniper_W
+Sniper
+*/
+ MSG_HUNTER_H_W = 0x3e2,
+/*20171018 to 20181128
+Saaassin Cross_W
+Assassin Cross
+20181212 to latest
+Assassin Cross_W
+*/
+ MSG_ASSASSIN_H_W = 0x3e3,
+/*20171018 to latest
+Paladin
+*/
+ MSG_CRUSADER_H = 0x3e4,
+/*20171018 to latest
+Champion
+*/
+ MSG_MONK_H = 0x3e5,
+/*20171018 to latest
+Professor
+Scholar
+*/
+ MSG_SAGE_H = 0x3e6,
+/*20171018 to latest
+Stalker
+*/
+ MSG_ROGUE_H = 0x3e7,
+/*20171018 to latest
+Creator
+Biochemist
+*/
+ MSG_ALCHEMIST_H = 0x3e8,
+/*20171018 to latest
+Clown
+Minstrel
+*/
+ MSG_BARD_H = 0x3e9,
+/*20171018 to latest
+Paladin_W
+Paladin
+*/
+ MSG_CRUSADER_H_W = 0x3ea,
+/*20171018 to latest
+Champion_W
+Champion
+*/
+ MSG_MONK_H_W = 0x3eb,
+/*20171018 to latest
+Professor_W
+Professor
+*/
+ MSG_SAGE_H_W = 0x3ec,
+/*20171018 to latest
+Stalker_W
+Stalker
+*/
+ MSG_ROGUE_H_W = 0x3ed,
+/*20171018 to latest
+Creator_W
+Creator
+*/
+ MSG_ALCHEMIST_H_W = 0x3ee,
+/*20171018 to latest
+Gypsy
+*/
+ MSG_DANCER_H = 0x3ef,
+/*20171018 to latest
+비밀번호가 지정되어 있지 않습니다. 새로운 비밀번호를 지정하시겠습니까?
+You have not set a password yet. Would you like to create one now?
+*/
+ MSG_STORE_PASSWORD_REQ = 0x3f0,
+/*20171018 to latest
+비밀번호를 3회 틀려셨습니다. 나중에 다시 시도해 주세요.
+You have incorrectly entered the password 3 times. Please try again later.
+*/
+ MSG_STORE_PASSWORD_PENALTY = 0x3f1,
+/*20171018 to latest
+비밀번호 변경이 실패하였습니다.
+Password creation has failed.
+*/
+ MSG_STORE_PASSWORD_CHANGE_NG = 0x3f2,
+/*20171018 to latest
+비밀번호는 4자리 이상 8자리이하여야만 합니다.
+Password must be 4~8 letters long.
+*/
+ MSG_STORE_PASSWORD_4_8 = 0x3f3,
+/*20171018 to latest
+비밀번호
+Password
+*/
+ MSG_STORE_PASSWORD = 0x3f4,
+/*20171018 to latest
+신규 비밀번호
+New Password
+*/
+ MSG_STORE_NEW_PASSWORD = 0x3f5,
+/*20171018 to latest
+확인 비밀번호
+Confirm Password
+*/
+ MSG_STORE_RENEW_PASSWORD = 0x3f6,
+/*20171018 to latest
+비밀번호 변경이 완료되었습니다.
+Password has been changed.
+*/
+ MSG_STORE_PASSWORD_CHANGE_OK = 0x3f7,
+/*20171018 to latest
+비밀번호가 서로 다릅니다.
+Password does not match.
+*/
+ MSG_STORE_PASSWORD_MISMATCH = 0x3f8,
+/*20171018 to latest
+비밀번호 입력
+Enter Password
+*/
+ MSG_STORE_PASSWORD_INPUT = 0x3f9,
+/*20171018 to latest
+호문이 아사 직전입니다! 먹이를 주지 않으면 가출하게됩니다.
+Your Homunculus is starving. Please feed it, otherwise it will leave you.
+*/
+ MSG_HOMUN_HUNGRY = 0x3fa,
+/*20171018 to latest
+경험치
+EXP
+*/
+ MSG_HOMUN_EXP = 0x3fb,
+/*20171018 to latest
+수령하지 않은 아이템이 존재합니다. 알베르타의 존다 기획사 직원을 찾아주세요. ^ff0000※ 아이템 수령 기간이 지나면 아이템이 소실 됩니다!^000000
+[EVENT] You have won an event prize. Please claim your prize in game.
+*/
+ MSG_EVENT_RESULT = 0x3fc,
+/*20171018 to latest
+싫어함
+Hate
+*/
+ MSG_HATE = 0x3fd,
+/*20171018 to latest
+매우싫어함
+Hate with a Passion
+*/
+ MSG_VERYHATE = 0x3fe,
+/*20171018 to latest
+호문클루스가 사용자 인공지능으로 동작합니다.
+Homunculus has been customized.
+*/
+ MSG_HOMUN_USERAI_ON = 0x3ff,
+/*20171018 to latest
+호문클루스가 기본 인공지능으로 동작합니다.
+Homunculus has been activated with the basic AI.
+*/
+ MSG_HOMUN_USERAI_OFF = 0x400,
+/*20171018 to latest
+편지목록
+Mail List
+*/
+ MSG_MAIL_LIST = 0x401,
+/*20171018 to latest
+편지쓰기
+Write Mail
+*/
+ MSG_MAIL_WRITE = 0x402,
+/*20171018 to latest
+편지읽기
+Read Mail
+*/
+ MSG_MAIL_READ = 0x403,
+/*20171018 to latest
+한번 지정하시면 변경이 불가능합니다! 이 맵으로 지정하시겠습니까?
+You cannot change a map's designation once it is designated. Are you sure that you want to designate this map?
+*/
+ MSG_STARPLACE_ACCEPT = 0x404,
+/*20171018 to latest
+메일 아이템을 수령했습니다.
+Item has been added in the Item Window.
+*/
+ MSG_MAIL_ADD_ITEM_SUCCESS = 0x405,
+/*20171018 to latest
+메일 아이템을 수령하지 못했습니다.
+You have failed to add the item in the Item Window.
+*/
+ MSG_MAIL_ADD_ITEM_FAILURE = 0x406,
+/*20171018 to latest
+메일 보내기가 성공하였습니다.
+You have successfully mailed a message.
+*/
+ MSG_MAIL_SEND_SUCCESS = 0x407,
+/*20171018 to latest
+메일 보내기가 실패하였습니다. 받는 사람이 존재하지 않습니다.
+You have failed to mail a message. Recipient does not exist.
+*/
+ MSG_MAIL_USER_NOT_FOUND = 0x408,
+/*20171018 to latest
+[태양과 달과 별의 천사] 지정했던 장소들과 몬스터들이 초기화됐습니다!
+[Solar, Lunar and Stellar Angel] Designated places and monsters have been reset.
+*/
+ MSG_STAR_ANGEL = 0x409,
+/*20171018 to latest
+경매 등록이 실패했습니다.
+The minimum starting bid for auctions is 10,000,000 zeny.
+*/
+ MSG_AUCTION_ADD_FALSE = 0x40a,
+/*20171018 to latest
+경매 등록이 성공했습니다.
+You have successfully started a new auction.
+*/
+ MSG_AUCTION_ADD_TRUE = 0x40b,
+/*20171018 to latest
+해당 경매가 취소되었습니다.
+The auction has been canceled.
+*/
+ MSG_AUCTION_ADD_CANCEL = 0x40c,
+/*20171018 to latest
+입찰자가 있는 경매는 취소할 수 없습니다.
+An auction with at least one bidder cannot be canceled.
+*/
+ MSG_AUCTION_ADD_CANCEL_FALSE = 0x40d,
+/*20171018 to latest
+메일 삭제가 성공하였습니다.
+Mail has been successfully deleted.
+*/
+ MSG_MAIL_DELETE_SUCCESS = 0x40e,
+/*20171018 to latest
+메일 삭제가 실패하였습니다.
+You have failed to delete the mail.
+*/
+ MSG_MAIL_DELETE_FAILURE = 0x40f,
+/*20171018 to latest
+던지는 단검이 장착되었습니다.
+You have equipped throwing daggers.
+*/
+ MSG_MSG_KNIFE_EQUIPMENT_SUCCESS = 0x410,
+/*20171018 to latest
+%s 님이 로그인했습니다.
+%s has logged in.
+*/
+ MSG_LOGIN_FRIEND = 0x411,
+/*20171018 to latest
+%s 님이 로그아웃했습니다.
+%s has logged out.
+*/
+ MSG_LOGOUT_FRIEND = 0x412,
+/*20171018 to latest
+/loginout : 길드원과 친구들의 접속관련 메세지를 보여줍니다. On Off
+/loginout: Shows guildsmen and friends online status. On Off
+*/
+ MSG_EXPLAIN_LOGINOUT = 0x413,
+/*20171018 to latest
+친구들의 접속관련 메세지를 대화창에 표시합니다. [/li ON]
+Display online status of friends in Chat Window. [/li ON]
+*/
+ MSG_LOGINOUT_ON = 0x414,
+/*20171018 to latest
+친구들의 접속관련 메세지를 대화창에 표시하지않습니다. [/li OFF]
+Do not display online status of friends in Chat Window. [/li OFF]
+*/
+ MSG_LOGINOUT_OFF = 0x415,
+/*20171018 to latest
+이미 실행중입니다.
+It is already running.
+*/
+ MSG_SGP_CODE_ALREADY_RUNNING = 0x416,
+/*20171018 to latest
+매크로 사용이 감지되었습니다.
+Use of Macro program has been detected.
+*/
+ MSG_SGP_CODE_DETECTED_MACRO = 0x417,
+/*20171018 to latest
+스피드해킹이 감지되었습니다.
+Use of Speed hack has been detected.
+*/
+ MSG_SGP_CODE_DETECTED_SPEEDHACK = 0x418,
+/*20171018 to latest
+API 후킹이 감지되었습니다.
+API Hooking has been detected.
+*/
+ MSG_SGP_CODE_DETECTED_APIHOOK = 0x419,
+/*20171018 to latest
+메시지 후킹이 감지되었습니다.
+Message Hooking has been detected.
+*/
+ MSG_SGP_CODE_DETECTED_MSGHOOK = 0x41a,
+/*20171018 to latest
+모듈이 변조 또는 손상되었거나 버전이 일치하지 않습니다.
+Module has been modified or damaged or its version does not match.
+*/
+ MSG_SGP_CODE_NOT_EQUALENCRYPTEDDATA = 0x41b,
+/*20171018 to latest
+(태국)귀하는 게임방 과금으로 로그인 하셨습니다.
+(Thailand) You have logged in game with PC cafe payment.
+*/
+ MSG_BILLING_PCB = 0x41c,
+/*20171018 to latest
+이전
+Prev
+*/
+ MSG_PREV_PAGE = 0x41d,
+/*20171018 to latest
+다음
+Next
+*/
+ MSG_NEXT_PAGE = 0x41e,
+/*20171018 to latest
+경매
+Auction
+*/
+ MSG_AUCTION = 0x41f,
+/*20171018 to latest
+물품보기
+Product List
+*/
+ MSG_AUCTION_VIEW = 0x420,
+/*20171018 to latest
+등록하기
+Register
+*/
+ MSG_AUCTION_ADD = 0x421,
+/*20171018 to latest
+판매 진행상태
+Sale Status
+*/
+ MSG_AUCTION_SELL = 0x422,
+/*20171018 to latest
+구매 진행상태
+Purchase Status
+*/
+ MSG_AUCTION_BUY = 0x423,
+/*20171018 to latest
+아이템
+Item
+*/
+ MSG_ITEM2 = 0x424,
+/*20171018 to latest
+아이템명
+Name
+*/
+ MSG_ITEM_NAME2 = 0x425,
+/*20171018 to latest
+가격 / 즉시구입가격
+Current Bid / Max Bid
+*/
+ MSG_ITEM_PRICE = 0x426,
+/*20171018 to latest
+판매자
+Seller
+*/
+ MSG_SELLER = 0x427,
+/*20171018 to latest
+구매자
+Buyer
+*/
+ MSG_BUYER = 0x428,
+/*20171018 to latest
+종료시간
+End Time
+*/
+ MSG_FINISH_TIME = 0x429,
+/*20171018 to latest
+%m월 %d일 %H시
+%m %d %H
+*/
+ MSG_TIME_TYPE = 0x42a,
+/*20171018 to latest
+시간설정
+Time (Hr)
+*/
+ MSG_SET_TIME = 0x42b,
+/*20171018 to latest
+수수료
+Fee
+*/
+ MSG_CHARGE = 0x42c,
+/*20171018 to latest
+검색된 아이템이 없습니다.
+No items found in search.
+*/
+ MSG_NOTHING_SEARCH_ITEM = 0x42d,
+/*20171018 to latest
+현재 판매중인 아이템이 없습니다.
+Your Sale List is empty.
+*/
+ MSG_NOTHING_SEARCH_SELL_ITEM = 0x42e,
+/*20171018 to latest
+현재 구매중인 아이템이 없습니다.
+Your Purchase List is empty.
+*/
+ MSG_NOTHING_SEARCH_BUY_ITEM = 0x42f,
+/*20171018 to latest
+경매정보가 정확하지 않습니다.
+Auction Information is incorrect or incomplete.
+*/
+ MSG_ERROR_AUCTION_ITEM_INFO = 0x430,
+/*20171018 to latest
+경매에 등록할 아이템 정보가 없습니다.
+You must drag and drop an item from your Inventory into the Register Window to begin a new auction.
+*/
+ MSG_NOTHING_AUCTION_ITEM_INFO = 0x431,
+/*20171018 to latest
+이미 등록된 경매입니다.
+The auction has already been registered.
+*/
+ MSG_ERROR_ADD_AUCTION = 0x432,
+/*20171018 to latest
+제시가격
+Starting Bid
+*/
+ MSG_PRICE = 0x433,
+/*20171018 to latest
+구입희망가격
+Current Bid
+*/
+ MSG_PRICE2 = 0x434,
+/*20171018 to latest
+즉시구입가격
+Buy Now Price
+*/
+ MSG_PRICE3 = 0x435,
+/*20171018 to latest
+현재소지제니
+Your Current Zeny
+*/
+ MSG_PRICE4 = 0x436,
+/*20171018 to latest
+현재최고가격
+Highest Bid
+*/
+ MSG_PRICE5 = 0x437,
+/*20171018 to latest
+이전입찰가격
+Previous Bid
+*/
+ MSG_PRICE6 = 0x438,
+/*20171018 to latest
+추가입찰가격
+Next Bid
+*/
+ MSG_PRICE7 = 0x439,
+/*20171018 to latest
+구입하시겠습니까?
+Press buy to confirm.
+*/
+ MSG_BUY_ACTION_ITEM = 0x43a,
+/*20171018 to latest
+이 가격에 판매하시겠습니까?
+Would you like to sell this item?
+*/
+ MSG_SELL_ACTION_ITEM = 0x43b,
+/*20171018 to latest
+입찰하기
+Place Bid
+*/
+ MSG_BUY_AUCTION = 0x43c,
+/*20171018 to latest
+즉시구매하기
+Buy Now
+*/
+ MSG_BUY_AUCTION2 = 0x43d,
+/*20171018 to latest
+경매종료하기
+End the Auction
+*/
+ MSG_BUY_AUCTION3 = 0x43e,
+/*20171018 to latest
+재입찰하기
+Place another Bid
+*/
+ MSG_FINISH_AUCTION = 0x43f,
+/*20171018 to latest
+해당 경매에 대한 입찰이 성공했습니다.
+You have placed a bid.
+*/
+ MSG_RESULT_BUY_TRUE = 0x440,
+/*20171018 to latest
+해당 경매에 대한 입찰이 실패했습니다.
+You have failed to place a bid.
+*/
+ MSG_RESULT_BUY_FALSE = 0x441,
+/*20171018 to latest
+제니가 충분하지 않습니다.
+You do not have enough zeny.
+*/
+ MSG_RESULT_BUY_FALSE_MONEY = 0x442,
+/*20171018 to latest
+방어구
+Armors
+*/
+ MSG_EQUIP = 0x443,
+/*20171018 to latest
+카드
+Card
+*/
+ MSG_CARD = 0x444,
+/*20171018 to latest
+기타
+Other
+*/
+ MSG_ETC = 0x445,
+/*20171018 to latest
+경매번호
+Bid
+*/
+ MSG_AUCTION_NUM = 0x446,
+/*20171018 to latest
+검색
+Search
+*/
+ MSG_AUCTION_SEARCH = 0x447,
+/*20171018 to latest
+해당 경매를 종료했습니다.
+You have ended the auction.
+*/
+ MSG_RESULT_MY_SELL_STOP_TRUE = 0x448,
+/*20171018 to latest
+해당 경매를 종료 할 수 없습니다.
+You cannot end the auction.
+*/
+ MSG_RESULT_MY_SELL_STOP_FALSE = 0x449,
+/*20171018 to latest
+경매 번호가 정확하지 않습니다.
+Bid Number is incorrect.
+*/
+ MSG_RESULT_AUCTION_ID_FALSE = 0x44a,
+/*20171018 to latest
+받는이
+To
+*/
+ MSG_SENDER = 0x44b,
+/*20171018 to latest
+제 목
+Title
+*/
+ MSG_TITLE2 = 0x44c,
+/*20171018 to latest
+새 메일이 도착하였습니다.
+You have received a message in the mail.
+*/
+ MSG_NEW_MAIL = 0x44d,
+/*20171018 to latest
+검색중입니다.
+Searching...
+*/
+ MSG_SEARCHING_ITEM = 0x44e,
+/*20171018 to latest
+더 이상 경매 등록할 수 없습니다. 경매 등록은 최대 5개까지 가능합니다.
+You cannot register more than 5 items in an auction at a time.
+*/
+ MSG_AUCTION_ADD_OVER = 0x44f,
+/*20171018 to latest
+더 이상 경매 물품에 입찰할 수 없습니다. 경매 물품 입찰은 최대 5개까지 가능합니다.
+You cannot place more than 5 bids at a time.
+*/
+ MSG_RESULT_BUY_OVER = 0x450,
+/*20171018 to latest
+삭제하려는 메일에 수령하지 않은 아이템이 있습니다.
+Please accept all items from your mail before deleting.
+*/
+ MSG_MAIL_DELETE_ERROR = 0x451,
+/*20171018 to latest
+메일 제목을 입력하여 주십시오.
+Please enter a title.
+*/
+ MSG_MAIL_SEND_ERROR = 0x452,
+/*20171018 to latest
+/shopping : 클릭 한번으로 상점을 열고 상점이름 오른쪽 클릭으로 상점을 닫습니다 On Off
+/shopping: Enables you to open a shop with a single left-click and close your shop with a single right-click. On Off
+*/
+ MSG_EXPLAIN_SHOPPING = 0x453,
+/*20171018 to latest
+클릭 한번으로 상점을 열고 상점이름을 오른쪽 클릭해서 상점을 닫을수있습니다. [/sh ON]
+You can now open a shop with a single left-click and close your shop with a single right-click. [sh ON].
+*/
+ MSG_SHOPPING_ON = 0x454,
+/*20171018 to latest
+더블클릭 으로 상점을 열게됩니다. [/sh OFF]
+You can open a shop by double-clicking. [/sh OFF]
+*/
+ MSG_SHOPPING_OFF = 0x455,
+/*20171018 to latest
+메일을 보내려면, 제니 입력을 완료해야 합니다.
+Please enter zeny amount before sending mail.
+*/
+ MSG_MAIL_SEND_ERROR2 = 0x456,
+/*20171018 to latest
+경매 수수료가 부족합니다.
+You do not have enough zeny to pay the Auction Fee.
+*/
+ MSG_ADD_MONEY_FALSE = 0x457,
+/*20171018 to latest
+상태보기
+View Status
+*/
+ MSG_HOMUN_SHOWINFO = 0x458,
+/*20171018 to latest
+먹이주기
+Feed
+*/
+ MSG_HOMUN_FEEDING = 0x459,
+/*20171018 to latest
+대기
+Stand By
+*/
+ MSG_HOMUN_WAITING = 0x45a,
+/*20171018 to latest
+슈퍼노비스(남)
+Super Novice (Male)
+*/
+ MSG_JOB_SUPERNOVICE_M = 0x45b,
+/*20171018 to latest
+슈퍼노비스(여)
+Super Novice (Female)
+*/
+ MSG_JOB_SUPERNOVICE_F = 0x45c,
+/*20171018 to latest
+태권소년
+Taekwon Boy
+*/
+ MSG_JOB_TAEKWON_M = 0x45d,
+/*20171018 to latest
+태권소녀
+Taekwon Girl
+*/
+ MSG_JOB_TAEKWON_F = 0x45e,
+/*20171018 to latest
+권성(남)
+Taekwon Master (Male)
+*/
+ MSG_KWONSUNG_M = 0x45f,
+/*20171018 to latest
+권성(여)
+Taekwon Master (Female)
+*/
+ MSG_KWONSUNG_F = 0x460,
+/*20171018 to latest
+소울링커(남)
+Soul Linker (Male)
+*/
+ MSG_SOULLINGKER_M = 0x461,
+/*20171018 to latest
+소울링커(여)
+Soul Linker (Female)
+*/
+ MSG_SOULLINGKER_F = 0x462,
+/*20171018 to latest
+PC방요금제로 2개이상의 계정이 접속되고있습니다. 확인후 다시 사용하시기 바랍니다.
+Please check the connection, more than 2 accounts are connected with Internet Cafe Time Plan.
+*/
+ MSG_BAN_PC_IP_UNFAIR = 0x463,
+/*20171018 to latest
+귀하는 월정액 요금제 사용자 입니다. (남은기간 : %d일)
+Your account is using monthly payment. (Remaining day: %d day)
+*/
+ MSG_BILLING_1 = 0x464,
+/*20171018 to latest
+귀하는 정량 요금제 사용자 입니다. (남은시간 : %d시간 %분 %초)
+Your account is using time limited. (Remaining time: %d hour %d minute %d second)
+*/
+ MSG_BILLING_2 = 0x465,
+/*20171018 to latest
+해당 아이템은 메일에 첨부 할수 없는 아이템입니다.
+This item cannot be mailed.
+*/
+ MSG_MAIL_ITEM_ADD_FAILED = 0x466,
+/*20171018 to latest
+더이상 아이템을 가질수 없습니다. 아이템은 메일로 보관하겠습니다.
+You cannot accept any more items. Please try again later.
+*/
+ MSG_MAIL_ADD_ITEM_OVER_FAILURE = 0x467,
+/*20171018 to latest
+남성
+Male
+*/
+ MSG_PTSEX1 = 0x468,
+/*20171018 to latest
+여성
+Female
+*/
+ MSG_PTSEX2 = 0x469,
+/*20171018 to latest
+새로운 유저입니다
+New User.
+*/
+ MSG_PT_NEWUSER = 0x46a,
+/*20171018 to latest
+E-mail은 캐릭터를 지울때 필요합니다.
+E-mail address is required to delete a character.
+*/
+ MSG_PT_ACINFO = 0x46b,
+/*20171018 to latest
+정확한 형식으로 입력해 주세요.
+Please enter the correct information.
+*/
+ MSG_PT_ACINFO2 = 0x46c,
+/*20171018 to latest
+이 키를 사용하세요
+Please use this key.
+*/
+ MSG_PT_NEWKEYINFO = 0x46d,
+/*20171018 to latest
+정확한 카드 패스워드를 다시 입력해주세요
+Please enter the correct card password.
+*/
+ MSG_PT_FAIL_CARDPASS = 0x46e,
+/*20171018 to latest
+PT정보
+PT Info
+*/
+ MSG_PTID1 = 0x46f,
+/*20171018 to latest
+PT_ID는 %s
+PT_ID is %s
+*/
+ MSG_PTID2 = 0x470,
+/*20171018 to latest
+NUM_ID는 %s
+NUM_ID is %s
+*/
+ MSG_PTID3 = 0x471,
+/*20171018 to latest
+잊지않게 주의하세요
+Please don't forget this information.
+*/
+ MSG_PTID4 = 0x472,
+/*20171018 to latest
+1001
+*/
+ MSG_PT_ERROR_1001 = 0x473,
+/*20171018 to latest
+1002
+*/
+ MSG_PT_ERROR_1002 = 0x474,
+/*20171018 to latest
+1003
+*/
+ MSG_PT_ERROR_1003 = 0x475,
+/*20171018 to latest
+1004
+*/
+ MSG_PT_ERROR_1004 = 0x476,
+/*20171018 to latest
+1006
+*/
+ MSG_PT_ERROR_1006 = 0x477,
+/*20171018 to latest
+1007
+*/
+ MSG_PT_ERROR_1007 = 0x478,
+/*20171018 to latest
+1008
+*/
+ MSG_PT_ERROR_1008 = 0x479,
+/*20171018 to latest
+1009
+*/
+ MSG_PT_ERROR_1009 = 0x47a,
+/*20171018 to latest
+1012
+*/
+ MSG_PT_ERROR_1012 = 0x47b,
+/*20171018 to latest
+1013
+*/
+ MSG_PT_ERROR_1013 = 0x47c,
+/*20171018 to latest
+1014
+*/
+ MSG_PT_ERROR_1014 = 0x47d,
+/*20171018 to latest
+1015
+*/
+ MSG_PT_ERROR_1015 = 0x47e,
+/*20171018 to latest
+1019
+*/
+ MSG_PT_ERROR_1019 = 0x47f,
+/*20171018 to latest
+1020
+Navigation
+*/
+ MSG_PT_ERROR_1020 = 0x480,
+/*20171018 to latest
+1021
+*/
+ MSG_PT_ERROR_1021 = 0x481,
+/*20171018 to latest
+1023
+*/
+ MSG_PT_ERROR_1023 = 0x482,
+/*20171018 to latest
+1024
+*/
+ MSG_PT_ERROR_1024 = 0x483,
+/*20171018 to latest
+1025
+*/
+ MSG_PT_ERROR_1025 = 0x484,
+/*20171018 to latest
+1027
+*/
+ MSG_PT_ERROR_1027 = 0x485,
+/*20171018 to latest
+1028
+*/
+ MSG_PT_ERROR_1028 = 0x486,
+/*20171018 to latest
+10
+*/
+ MSG_PT_ERROR_10 = 0x487,
+/*20171018 to latest
+20
+*/
+ MSG_PT_ERROR_20 = 0x488,
+/*20171018 to latest
+40
+*/
+ MSG_PT_ERROR_40 = 0x489,
+/*20171018 to latest
+50
+*/
+ MSG_PT_ERROR_50 = 0x48a,
+/*20171018 to latest
+60
+*/
+ MSG_PT_ERROR_60 = 0x48b,
+/*20171018 to latest
+70
+*/
+ MSG_PT_ERROR_70 = 0x48c,
+/*20171018 to latest
+80
+*/
+ MSG_PT_ERROR_80 = 0x48d,
+/*20171018 to latest
+90
+*/
+ MSG_PT_ERROR_90 = 0x48e,
+/*20171018 to latest
+100
+*/
+ MSG_PT_ERROR_100 = 0x48f,
+/*20171018 to latest
+110
+*/
+ MSG_PT_ERROR_110 = 0x490,
+/*20171018 to latest
+30포인트를 받으시겠습니까?
+Do you want to receive 30 points?
+*/
+ MSG_PT_POINT1 = 0x491,
+/*20171018 to latest
+30포인트(5시간)이 충전되었습니다
+30 points (5 hours) have been added.
+*/
+ MSG_PT_POINT2 = 0x492,
+/*20171018 to latest
+감정되지 않은 아이템은 경매에 등록할 수 없습니다.
+You cannot register Unidentified Items in auctions.
+*/
+ MSG_AUCTION_ADD_ITEM_FAILURE = 0x493,
+/*20171018 to latest
+소비 아이템은 경매에 등록할 수 없습니다.
+You cannot register this Consumable Item in an auction.
+*/
+ MSG_AUCTION_ADD_ITEM_FAILURE2 = 0x494,
+/*20171018 to latest
+메일창을 열려면 카트창을 닫아 주십시요.
+Please close the Cart Window to open the Mail Window.
+*/
+ MSG_CLOSE_MERCHANTITEMWND = 0x495,
+/*20171018 to latest
+카트창을 열려면 메일창을 닫아 주십시요.
+Please close the Mail Window to open the Cart Window.
+*/
+ MSG_CLOSE_MAILWND = 0x496,
+/*20171018 to latest
+탄환이 장착되었습니다.
+Bullets have been equipped.
+*/
+ MSG_MSG_BULLET_EQUIPMENT_SUCCESS = 0x497,
+/*20171018 to latest
+메일이 반송되었습니다.
+The mail has been returned to sender.
+*/
+ MSG_MAIL_RETURN_SUCCESS = 0x498,
+/*20171018 to latest
+메일이 존재하지 않습니다.
+The mail no longer exists.
+*/
+ MSG_MAIL_RETURN_FAILURE = 0x499,
+/*20171018 to latest
+한시간 동안, 동일한 IP로 접속한 유저가 30건 이상입니다. 확인후 다시 사용하시기 바랍니다.
+More than 30 players sharing the same IP have logged into the game for an hour. Please check this matter.
+*/
+ MSG_BAN_PC_IP_COUNT_ALL = 0x49a,
+/*20171018 to latest
+한시간 동안, 동일한 IP로 10번 이상 접속되었습니다. 확인후 다시 사용하시기 바랍니다.
+More than 10 connections sharing the same IP have logged into the game for an hour. Please check this matter.
+*/
+ MSG_BAN_PC_IP_COUNT = 0x49b,
+/*20171018 to latest
+게임을 재시작 하십시오
+Please restart the game.
+*/
+ MSG_GAMEGUARD_RESTART = 0x49c,
+/*20171018 to latest
+용병정보 - 아쳐타입
+Mercenary: Archer
+*/
+ MSG_MER_INFO_TYPE_ARCHER = 0x49d,
+/*20171018 to latest
+용병정보 - 검사타입
+Mercenary: Swordman
+*/
+ MSG_MER_INFO_TYPE_SWORDMAN = 0x49e,
+/*20171018 to latest
+용병정보 - 창병타입
+Mercenary: Spearman
+*/
+ MSG_MER_INFO_TYPE_LANCER = 0x49f,
+/*20171018 to latest
+삭제시간
+Expiration
+*/
+ MSG_LEFT_TIME = 0x4a0,
+/*20171018 to latest
+신뢰도
+Loyalty
+*/
+ MSG_MER_FRIENDLY = 0x4a1,
+/*20171018 to latest
+소환횟수
+Summons
+*/
+ MSG_MER_CALLCOUNT = 0x4a2,
+/*20171018 to latest
+Kill
+*/
+ MSG_MER_KILL = 0x4a3,
+/*20171018 to latest
+펫이 배가 고파서 당신을 원망하고 있다는 느낌이 든다.
+You can feel hatred from your pet for neglecting to feed it.
+*/
+ MSG_PET_STARVING = 0x4a4,
+/*20171018 to latest
+[POINT] 테이밍미션 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[POINT] You earned %d Taming Mission Ranking Points, giving you a total of %d points.
+*/
+ MSG_GANGSI_POINT = 0x4a5,
+/*20171018 to latest
+[테이밍미션] Target Monster : %s
+[Taming Mission] Target Monster: %s
+*/
+ MSG_GANGSI_MISSION = 0x4a6,
+/*20171018 to latest
+/hunting : 사냥 목록을 보여줍니다.
+/hunting: You can check the your hunting list.
+*/
+ MSG_EXPLAIN_HUNTING = 0x4a7,
+/*20171018 to latest
+[천사의질문] 소녀에게 가르쳐주시어요. %s는 몇 스킬 찍으셨나요?
+[Angel's Question] Please tell me, how many %s skills do you have?
+*/
+ MSG_DEATH_Q01 = 0x4a8,
+/*20171018 to latest
+[천사의질문] 소녀에게 가르쳐주시어요. 소지하시고있는 제니를 십만으로 나누면 얼마가 되시나요?
+[Angel's Question] Please tell me, how much zeny you'll have if you divide it by 100,000?
+*/
+ MSG_DEATH_Q02 = 0x4a9,
+/*20171018 to latest
+[천사의질문] 소녀에게 가르쳐주시어요. 오늘이 몇일이신지 아시나요?
+[Angel's Question] Please tell me, what is today's date?
+*/
+ MSG_DEATH_Q03 = 0x4aa,
+/*20171018 to latest
+[천사의질문] 소녀에게 가르쳐주시어요. %s은 지금 몇이신가요?
+[Angel's Question] Please tell me, how many %s do you have?
+*/
+ MSG_DEATH_Q04 = 0x4ab,
+/*20171018 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 슈노, 태권계열, 무낙계열을 담당하고있는 SiYeon씨의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in SiYeon's name?
+*/
+ MSG_DEATH_Q05 = 0x4ac,
+/*20171018 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 귀엽고 어여쁜 라그나로크의 히로인 Munak의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in Munak's name?
+*/
+ MSG_DEATH_Q06 = 0x4ad,
+/*20171018 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 제가 어여뻐하는 Bongun의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in Bongun's name?
+*/
+ MSG_DEATH_Q07 = 0x4ae,
+/*20171018 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 저희가 존재하는 온라인세계 Ragnarok의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, Ragnarok?
+*/
+ MSG_DEATH_Q08 = 0x4af,
+/*20171018 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 언제나 Online상태인 천사동료들은 큰힘이 되어주죠. Online의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, online?
+*/
+ MSG_DEATH_Q09 = 0x4b0,
+/*20171018 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 죽음도 두려워하지않는 기사들을 상징하는 단어인 Death의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, death?
+*/
+ MSG_DEATH_Q10 = 0x4b1,
+/*20171018 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 기사들은 너무 멋진다고 생각해요. Knight의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, knight?
+*/
+ MSG_DEATH_Q11 = 0x4b2,
+/*20171018 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 중력을 뜻하는 단어인 Gravity의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, gravity?
+*/
+ MSG_DEATH_Q12 = 0x4b3,
+/*20171018 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 어둠속에서도 밝게 사는게 중요하지요. Dark의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, dark?
+*/
+ MSG_DEATH_Q13 = 0x4b4,
+/*20171018 to latest
+[천사의질문] A는 1이고 Z는 26이어요. 뭐든지 수집하는 Collector의 알파벳을 더하면 몇이 되나요?
+[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, collecter?
+*/
+ MSG_DEATH_Q14 = 0x4b5,
+/*20171018 to latest
+[천사의대답] 소녀에게 정확한 사실을 가르쳐주셔서 감사하옵니다.
+[Angel's Answer] Thank you for letting me know~
+*/
+ MSG_DEATH_R01 = 0x4b6,
+/*20171018 to latest
+[천사의대답] 사랑스러우신 분이시군요. 소녀 감탄했사옵니다.
+[Angel's Answer] I'm very pleased with your answer. You are a splendid adventurer.
+*/
+ MSG_DEATH_R02 = 0x4b7,
+/*20171018 to latest
+[천사의대답] 소녀 실망했사옵니다.
+[Angel's Answer] You've disappointed me...
+*/
+ MSG_DEATH_R05 = 0x4b8,
+/*20171018 to latest
+[POINT] 랭킹포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[Point] You earned %d Ranking Points, giving you a total of %d Ranking Points.
+*/
+ MSG_DEATH_POINT = 0x4b9,
+/*20171018 to latest
+[%s]의 소지 캐시 : %d 캐시
+[%s]'s Points: %d Points
+*/
+ MSG_POINT_SHOP = 0x4ba,
+/*20171018 to latest
+선택하지 않은 캐릭터는 삭제 됩니다. 완료하시겠습니까?
+Unselected Characters will be deleted. Continue?
+*/
+ MSG_CONFIRM_SELECT_CHARACTERS = 0x4bb,
+/*20171018 to latest
+9개 이상 선택하실 수 없습니다.
+You cannot select more than 8.
+*/
+ MSG_ERROR_SELECT_CHARACTERS = 0x4bc,
+/*20171018 to latest
+캐릭터명을 '%s' (으)로 변경하시겠습니까?
+Do you want to change your name to '%s'?
+*/
+ MSG_CONFIRM_TO_CHANGE_NAME = 0x4bd,
+/*20171018 to latest
+캐릭터명이 성공적으로 변경되었습니다.
+Character Name has been changed successfully.
+*/
+ MSG_CHANGE_NAME_SUCCESS = 0x4be,
+/*20171018 to latest
+캐릭터명 변경이 실패하였습니다.
+You have failed to change this character's name.
+*/
+ MSG_CHANGE_NAME_FAILURE = 0x4bf,
+/*20171018 to latest
+한 번에 한 종류의 아이템만 구매할 수 있습니다.
+You can purchase only one kind of item at a time.
+*/
+ MSG_CAN_BUY_ONLY_ONEITEM = 0x4c0,
+/*20171018 to latest
+캐릭터가 한개도 선택되지 않았습니다. 반드시 한개 이상의 캐릭터를 선택하여야 합니다.
+No characters were selected. You must select at least one character.
+*/
+ MSG_NO_SELECT_CHARACTERS = 0x4c1,
+/*20171018 to latest
+이미 캐릭터명을 변경한 적이 있습니다. 더 이상 변경 할 수 없습니다.
+This character's name has already been changed. You cannot change a character's name more than once.
+*/
+ MSG_ALREADY_CHANGED_NAME = 0x4c2,
+/*20171018 to latest
+사용자 정보가 정확하지 않습니다.
+User Information is not correct.
+*/
+ MSG_NOTREGISTED_USER = 0x4c3,
+/*20171018 to latest
+다른 사용자가 같은 캐릭터 명을 먼저 사용하였습니다. 다른 캐릭터명을 사용하여 주십시요.
+Another user is using this character name, so please select another one.
+*/
+ MSG_DUPLICATED_CHAR_NAME = 0x4c4,
+/*20171018 to latest
+파티장 권한이 없어 파티원을 소환하지 못했습니다.
+The party member was not summoned because you are not the party leader.
+*/
+ MSG_CANNOT_PARTYCALL = 0x4c5,
+/*20171018 to latest
+현재 맵에는 소환될 파티원이 존재하지 않습니다.
+There is no party member to summon in the current map.
+*/
+ MSG_NO_PARTYMEM_ON_THISMAP = 0x4c6,
+/*20171018 to latest
+이 지역에선 보스몬스터의 흔적을 찾을 수가 없습니다.
+You cannot find any trace of a Boss Monster in this area.
+*/
+ MSG_NOTFIND_BOSSMON = 0x4c7,
+/*20171018 to latest
+보스 몬스터 '%s'(이)가 %d시간 %d분 후에 등장합니다.
+Boss Monster, '%s' will appear in %02d hour(s) and %02d minute(s).
+*/
+ MSG_APPEARANCE_TIME_OF_BOSSMON = 0x4c8,
+/*20171018 to latest
+보스 몬스터 '%s'의 위치가 미니맵에 표시됩니다.
+The location of Boss Monster, '%s', will be displayed on your Mini-Map.
+*/
+ MSG_SHOW_POSITION_OF_BOSSMON = 0x4c9,
+/*20171018 to latest
+'%s'를 개봉 하시겠습니까? ^ff0000상자를 개봉하시면 청약 철회 대상에서 제외 됩니다.^000000 한번 개봉 된 아이템은 창고 저장 외의 다른 이동은 불가하며 임대 아이템은 창고 저장도 불가합니다. 한정 아이템은 거래 및 이동이 가능 합니다. 동일한 아이템을 중복 사용하더라도 효과가 중첩되지 않습니다.
+Do you want to open '%s'? Once opened, the contents cannot be moved to other locations aside from the Kafra Storage. The item effect isn't doubled, even if the same items are used more than once.
+*/
+ MSG_CONFIRM_TO_OPEN_CASH_ITEM = 0x4ca,
+/*20171018 to latest
+NPC가 존재하지 않아 구매가 실패하였습니다.
+The Purchase has failed because the NPC does not exist.
+*/
+ MSG_BUY_CASH_FAIL_NPC = 0x4cb,
+/*20171018 to latest
+부분 유료화 시스템이 정상 작동하지 않아 구매가 실패하였습니다.
+The Purchase has failed because the Kafra Shop System is not working correctly.
+*/
+ MSG_BUY_CASH_FAIL_SYSTEM = 0x4cc,
+/*20171018 to latest
+교환중에는 아이템을 구매 할 수 없습니다.
+You cannot purchase items while you are in a trade.
+*/
+ MSG_BUY_CASH_FAIL_EXCHANGE = 0x4cd,
+/*20171018 to latest
+아이템 정보가 정확하지 않아 구매가 실패하였습니다.
+The Purchase has failed because the Item Information was incorrect.
+*/
+ MSG_BUY_CASH_FAIL_ITEM_ID = 0x4ce,
+/*20171018 to latest
+ STR이 향상되었습니다.
+STR has increased.
+*/
+ MSG_ENST_STR = 0x4cf,
+/*20171018 to latest
+ STR이 원래대로 돌아왔습니다.
+STR has returned to normal.
+*/
+ MSG_DSST_STR = 0x4d0,
+/*20171018 to latest
+ AGI이 향상되었습니다.
+AGI has increased.
+*/
+ MSG_ENST_AGI = 0x4d1,
+/*20171018 to latest
+ AGI이 원래대로 돌아왔습니다.
+AGI has returned to normal.
+*/
+ MSG_DSST_AGI = 0x4d2,
+/*20171018 to latest
+ VIT이 향상되었습니다.
+VIT has increased.
+*/
+ MSG_ENST_VIT = 0x4d3,
+/*20171018 to latest
+ VIT이 원래대로 돌아왔습니다.
+VIT has returned to normal.
+*/
+ MSG_DSST_VIT = 0x4d4,
+/*20171018 to latest
+ INT이 향상되었습니다.
+INT has increased.
+*/
+ MSG_ENST_INT = 0x4d5,
+/*20171018 to latest
+ INT이 원래대로 돌아왔습니다.
+INT has returned to normal.
+*/
+ MSG_DSST_INT = 0x4d6,
+/*20171018 to latest
+ DEX이 향상되었습니다.
+DEX has increased.
+*/
+ MSG_ENST_DEX = 0x4d7,
+/*20171018 to latest
+ DEX이 원래대로 돌아왔습니다.
+DEX has returned to normal.
+*/
+ MSG_DSST_DEX = 0x4d8,
+/*20171018 to latest
+ LUK이 향상되었습니다.
+LUK has increased.
+*/
+ MSG_ENST_LUK = 0x4d9,
+/*20171018 to latest
+ LUK이 원래대로 돌아왔습니다.
+LUK has returned to normal.
+*/
+ MSG_DSST_LUK = 0x4da,
+/*20171018 to latest
+ 회피율이 향상되었습니다.
+Flee Rate (Flee) has increased.
+*/
+ MSG_ENST_AVOIDANCE = 0x4db,
+/*20171018 to latest
+ 회피율이 원래대로 돌아왔습니다.
+Flee Rate has returned to normal.
+*/
+ MSG_DSST_AVOIDANCE = 0x4dc,
+/*20171018 to latest
+ 명중률이 향상되었습니다.
+Accuracy Rate (Hit) has increased.
+*/
+ MSG_ENST_HIT = 0x4dd,
+/*20171018 to latest
+ 명중률이 원래대로 돌아왔습니다.
+Accuracy Rate has returned to normal.
+*/
+ MSG_DSST_HIT = 0x4de,
+/*20171018 to latest
+ 크리티컬 확률이 향상되었습니다.
+Critical Attack (Critical) has increased.
+*/
+ MSG_ENST_CRITICALSUCCESSVALUE = 0x4df,
+/*20171018 to latest
+ 크리티컬 확률이 원래대로 돌아왔습니다.
+Critical Attack has returned to normal.
+*/
+ MSG_DSST_CRITICALSUCCESSVALUE = 0x4e0,
+/*20171018 to latest
+ 30분간 얻을 수 있는 경험치가 50%% 증가합니다.
+You will receive 1.5 times more EXP from hunting monsters for the next 30 minutes.
+*/
+ MSG_PLUSEXP = 0x4e1,
+/*20171018 to latest
+ 30분내 사망시 1회에 한해 경험치 감소가 일어나지 않습니다.
+This character will not receive any EXP penalty if killed within the next 30 minutes.
+*/
+ MSG_DDEATHPENALTY = 0x4e2,
+/*20171018 to latest
+ 몬스터 사냥을 통해 얻을 수 있는 기본 아이템의 드롭률이 30분간 2배로 증가합니다.
+Regular item drops from monsters will be doubled for the next 30 minutes.
+*/
+ MSG_RECEIVEITEM = 0x4e3,
+/*20171018 to latest
+ 10분간 맵 내에 출현 가능한 보스 몬스터에 대한 정보를 안내해 드립니다.
+Boss Monster Map Information for the next 10 minutes.
+*/
+ MSG_BOSS_ALARM = 0x4e4,
+/*20171018 to latest
+ ^ff0000본 아이템을 구매 후 7일 이내에는 청약 철회가 가능합니다. 다만, 7일이 지났거나 아이템을 개봉하시면 청약 철회 대상에서 제외 됩니다.또한 구매시 사용된 무료캐시는 청약철회시 반환되지 않습니다.^000000 정말로 아이템을 구매하시겠습니까? 구매하실 경우 %d캐시가 차감됩니다.
+Do you really want to purchase this item? %d points will be deducted from your total Kafra Credit Points.
+*/
+ MSG_BUY_RECONFIRM = 0x4e5,
+/*20171018 to latest
+ 캐시가 부족합니다.
+ You do not have enough Kafra Credit Points.
+*/
+ MSG_BUY_CASH_FAIL_MONEY = 0x4e6,
+/*20171018 to latest
+ ^ff0000파기일시: %s^000000
+ ^ff0000Expiration Date: %s^000000
+*/
+ MSG_NOTICE_TO_DELETE_TIME = 0x4e7,
+/*20171018 to latest
+ '%s'아이템의 사용시간이 %d분 남았습니다.
+ The '%s' item will disappear in %d minutes.
+*/
+ MSG_NOTICE_TO_REMAIN_ITEMUSINGTIME = 0x4e8,
+/*20171018 to latest
+ 1분 후, '%s'아이템이 인벤토리에서 삭제됩니다.
+ '%s' item will be deleted from the Inventory in 1 minute.
+*/
+ MSG_LAST_NOTICE_TO_REMAIN_ITEMUSINGTIME = 0x4e9,
+/*20171018 to latest
+ '%s'아이템이 인벤토리에서 삭제되었습니다.
+ '%s' item has been deleted from the Inventory.
+*/
+ MSG_NOTICE_TO_DELETE_ITEM = 0x4ea,
+/*20171018 to latest
+Input Number
+*/
+ MSG_INPUT_NUMBER = 0x4eb,
+/*20171018 to latest
+%m월 %d일 %H시 %M분
+%m/%d %H:%M
+*/
+ MSG_TIME_TYPE2 = 0x4ec,
+/*20171018 to latest
+보스 몬스터 '%s'(이)가 잠시 후에 등장합니다.
+Boss Monster '%s' will appear within 1 minute.
+*/
+ MSG_APPEARANCE_TIME_OF_BOSSMON2 = 0x4ed,
+/*20171018 to latest
+용병 스킬목록
+Mercenary Soldier Skill List
+*/
+ MSG_MER_SKILLLIST = 0x4ee,
+/*20171018 to latest
+블랙젬스톤 1개와 백만제니를 소모하는 마법의 실행에 동의합니까?
+Do you agree to cast the magic spell that consumes 1 Black Gemstone and 1,000,000 Zeny?
+*/
+ MSG_DA_EXP_ACCEPT = 0x4ef,
+/*20171018 to latest
+[POINT] 콜렉터랭킹 포인트가 %d 상승해서 %d 포인트가 되었습니다.
+[Point] You have gained %d Collector Rank Points; you now have a total of %d Collector Rank Points.
+*/
+ MSG_COLLECTOR_POINT = 0x4f0,
+/*20171018 to latest
+[콜렉터랭킹] Target Item : %s
+[Collector Rank] Target Item: %s
+*/
+ MSG_COLLECTOR_MISSION = 0x4f1,
+/*20171018 to latest
+용병 사용시간이 만료되었습니다.
+The mercenary contract has expired.
+*/
+ MSG_MER_FINISH = 0x4f2,
+/*20171018 to latest
+용병이 사망하였습니다.
+The mercenary has died.
+*/
+ MSG_MER_DIE = 0x4f3,
+/*20171018 to latest
+용병이 해고되었습니다.
+You have released the mercenary.
+*/
+ MSG_MER_RETIRE = 0x4f4,
+/*20171018 to latest
+용병이 도망갔습니다.
+The mercenary has run away.
+*/
+ MSG_MER_RUNAWAY = 0x4f5,
+/*20171018 to latest
+ '%s'아이템의 사용시간이 %d초 남았습니다.
+ The '%s' item will disappear in %d seconds.
+*/
+ MSG_NOTICE_TO_REMAIN_ITEMUSINGTIME2 = 0x4f6,
+/*20171018 to latest
+PC방 프리미엄 서비스 : 경험치 %d%% 증가, 사망 페널티 %d%% 감소, 드롭율 %d%% 증가
+IP Bonus: EXP/JEXP %d%%, Death Penalty %d%%, Item Drop %d%%
+*/
+ MSG_PCBANG_EVENT = 0x4f7,
+/*20171018 to latest
+24시간 이후에 시도하세요
+Symbols in Character Names are forbidden.
+*/
+ MSG_LIMIT_CHAR_DELETE = 0x4f8,
+/*20171018 to latest
+용병이 사용자 인공지능으로 동작합니다.
+Mercenary will follow custom AI.
+*/
+ MSG_MER_USERAI_ON = 0x4f9,
+/*20171018 to latest
+용병이 기본 인공지능으로 동작합니다.
+Mercenary will follow basic AI.
+*/
+ MSG_MER_USERAI_OFF = 0x4fa,
+/*20171018 to latest
+ %s님의
+ %s's
+*/
+ MSG_CHARACTER_NAME = 0x4fb,
+/*20171018 to latest
+%s님이 %s 아이템을 획득하셨습니다.
+%s has acquired %s.
+*/
+ MSG_ITEM_PICKUP_PARTY = 0x4fc,
+/*20171018 to latest
+공개 채팅 메시지 표시
+Public Chat Display
+*/
+ MSG_VIEW_CHAT_MSG = 0x4fd,
+/*20171018 to latest
+귓속말 채팅 메시지 표시
+Whisper Display
+*/
+ MSG_VIEW_WHISPER_MSG = 0x4fe,
+/*20171018 to latest
+파티 채팅 메시지 표시
+Party Chat Display
+*/
+ MSG_VIEW_PARTY_MSG = 0x4ff,
+/*20171018 to latest
+길드 채팅 메시지 표시
+Guild Chat Display
+*/
+ MSG_VIEW_GUILD_MSG = 0x500,
+/*20171018 to latest
+아이템 획득/드롭 메시지 표시
+Item Get/Drop Message Display
+*/
+ MSG_VIEW_GET_ITEM_MSG = 0x501,
+/*20171018 to latest
+장비 장착/해제 메시지 표시
+Equipment On/Off Message Display
+*/
+ MSG_VIEW_EQUIP_MSG = 0x502,
+/*20171018 to latest
+상태이상 메시지 표시
+Abnormal Status Message Display
+*/
+ MSG_VIEW_CHANGE_STATUS_MSG = 0x503,
+/*20171018 to latest
+파티원의 주요 아이템 획득 메시지 표시
+Party Member's Obtained Item Message Display
+*/
+ MSG_VIEW_GET_ITEM_PARTY_MSG = 0x504,
+/*20171018 to latest
+파티원의 상태이상 메시지 표시
+Party Member's Abnormal Status Message Display
+*/
+ MSG_VIEW_CHANGE_STATUS_PARTY_MSG = 0x505,
+/*20171018 to latest
+스킬 사용 실패 메시지 표시
+Skill Failure Message Display
+*/
+ MSG_VIEW_FAIL_SKILL_MSG = 0x506,
+/*20171018 to latest
+파티 설정 메시지 표시
+Party Configuration Message Display
+*/
+ MSG_VIEW_PARTY_SETUP_MSG = 0x507,
+/*20171018 to latest
+장비 손상 메시지 표시
+Damaged Equipment Message Display
+*/
+ MSG_VIEW_DAMAGED_EQUIP_MSG = 0x508,
+/*20171018 to latest
+배틀 메시지 창 표시 정보
+Battle Message Window Display
+*/
+ MSG_BATTLE_CHAT_WND_OPTION = 0x509,
+/*20171018 to latest
+[%s]의 소지 한코인 : %d 한코인
+[%s]'s Han Coin: %d Han Coin
+*/
+ MSG_POINT_SHOP_NHN = 0x50a,
+/*20171018 to latest
+일반 메시지
+Public Log
+*/
+ MSG_ST_CHAT = 0x50b,
+/*20171018 to latest
+배틀 메시지
+Battle Log
+*/
+ MSG_BT_CHAT = 0x50c,
+/*20171018 to latest
+휴대폰 인증.
+Mobile Authentication
+*/
+ MSG_PHONE_CONFIRM = 0x50d,
+/*20171018 to latest
+읽기
+Read
+*/
+ MSG_BOOK_READ = 0x50e,
+/*20171018 to latest
+자동낭독
+Auto Read
+*/
+ MSG_BOOK_AUTOREAD = 0x50f,
+/*20171018 to latest
+책갈피
+Bookmark
+*/
+ MSG_BOOK_KEEP = 0x510,
+/*20171018 to latest
+이전페이지
+Previous
+*/
+ MSG_BOOK_PREV = 0x511,
+/*20171018 to latest
+다음페이지
+Next
+*/
+ MSG_BOOK_NEXT = 0x512,
+/*20171018 to latest
+닫기
+Close
+*/
+ MSG_BOOK_CLOSE = 0x513,
+/*20171018 to latest
+%s 장비가 손상되었습니다.
+%s's Equipment has been damaged.
+*/
+ MSG_DAMAGED_EQUIP = 0x514,
+/*20171018 to latest
+%s님의 %s 손상되었습니다.
+%s's %s was damaged.
+*/
+ MSG_DAMAGED_EQUIP_PARTY = 0x515,
+/*20171018 to latest
+무기가
+Weapon
+*/
+ MSG_DAMAGED_WEAPON = 0x516,
+/*20171018 to latest
+갑옷이
+Armor
+*/
+ MSG_DAMAGED_BODY = 0x517,
+/*20171018 to latest
+스킬레벨이 부족합니다. 파티가입 불능
+Insufficient Skill Level for joining a Party
+*/
+ MSG_NOT_ENOUGH_SKILLLEVE5_2 = 0x518,
+/*20171018 to latest
+[%s]의 무료 캐시 : %d 캐시
+[%s]'s Free Cash: %d Cash
+*/
+ MSG_POINT_SHOP2 = 0x519,
+/*20171018 to latest
+무료 캐시 사용 :
+Use Free Cash:
+*/
+ MSG_USE_FREE_POINT = 0x51a,
+/*20171018 to latest
+캐시
+Cash
+*/
+ MSG_CASH = 0x51b,
+/*20171018 to latest
+http://payment.ro.hangame.com/index.asp
+*/
+ MSG_SETTLE_WEB_URL_HANGAME = 0x51c,
+/*20171018 to latest
+그라비티 회원 정보동의를 하셔야 사용할 수 있습니다.
+You need to accept the Privacy Policy from Gravity in order to use the service.
+*/
+ MSG_BAN_GRAVITY_MEM_AGREE = 0x51d,
+/*20171018 to latest
+이용약관에 동의를 하셔야 본 서비스를 이용하실 수 있습니다.
+You need to accept the User Agreement in order to use the service.
+*/
+ MSG_BAN_GAME_MEM_AGREE = 0x51e,
+/*20171018 to latest
+입력하신 아이디와 비밀번호가 등록된 정보와 일치하지 않습니다.
+Incorrect or nonexistent ID.
+*/
+ MSG_BAN_HAN_VALID = 0x51f,
+/*20171018 to latest
+ ^ff0000본 아이템을 구매 후 7일 이내에는 청약 철회가 가능합니다. 다만, 7일이 지났거나 아이템을 개봉하시면 청약 철회 대상에서 제외 됩니다.또한 구매시 사용된 무료캐시는 청약철회시 반환되지 않습니다.^000000 정말로 아이템을 구매하시겠습니까? 구매하실 경우 일반 %d캐시, 무료 %d캐시가 차감됩니다.
+Do you really want to purchase these items? You will spend %d Regular Cash Points and %d Free Cash Points.
+*/
+ MSG_BUY_RECONFIRM2 = 0x520,
+/*20171018 to latest
+%d시간이 경과하였습니다.
+%d hour(s) has passed.
+*/
+ MSG_NOTIFY_PLAYTIME1 = 0x521,
+/*20171018 to latest
+%d시간 %d분이 경과하였습니다.
+%d hour(s) %d minute(s) has passed.
+*/
+ MSG_NOTIFY_PLAYTIME2 = 0x522,
+/*20171018 to latest
+게임을 종료하세요, 경험치 및 모든게 50%로 조정됩니다
+Please stop playing the game, and take a break. Exp and other features will be reduced to 50%.
+*/
+ MSG_WARNING_MSG1 = 0x523,
+/*20171018 to latest
+불건전 시간대에 접어들었습니다. 게임을 종료하세요, 경험치 및 모든게 0%로 조정됩니다
+Please stop playing the game since you'll need to rest. Exp and other features will be fixed to 0%.
+*/
+ MSG_WARNING_MSG2 = 0x524,
+/*20171018 to latest
+퀘스트 목록
+Quest List
+*/
+ MSG_QUESTWIN = 0x525,
+/*20171018 to latest
+RO SHOP
+RO Shop
+*/
+ MSG_RO_SHOP = 0x526,
+/*20171018 to latest
+메모리얼던젼 '%s'의 예약이 알수없는 이유로 실패 하였습니다.
+Memorial Dungeon, '%s' is booked.
+*/
+ MSG_MDUNGEON_SUBSCRIPTION_ERROR_UNKNOWN = 0x527,
+/*20171018 to latest
+메모리얼던젼 '%s'의 예약이 예약중복으로 실패 하였습니다.
+Failed to book Memorial Dungeon, '%s'.
+*/
+ MSG_MDUNGEON_SUBSCRIPTION_ERROR_DUPLICATE = 0x528,
+/*20171018 to latest
+메모리얼던젼 '%s'의 예약이 권한문제로 실패 하였습니다.
+Memorial Dungeon, '%s' is already booked.
+*/
+ MSG_MDUNGEON_SUBSCRIPTION_ERROR_RIGHT = 0x529,
+/*20171018 to latest
+메모리얼던젼 '%s'의 예약이 중복생성요청으로 실패하였습니다.
+Memorial Dungeon, '%s' is created.
+ Please enter in 5 minutes.
+*/
+ MSG_MDUNGEON_SUBSCRIPTION_ERROR_EXIST = 0x52a,
+/*20171018 to latest
+메모리얼던젼 '%s'의 예약취소가 실패 하였습니다.
+Failed to create Memorial Dungeon, '%s'.
+ Please try again.
+*/
+ MSG_MDUNGEON_SUBSCRIPTION_CANCEL_FAIL = 0x52b,
+/*20171018 to latest
+상대방이 파티 초대 거부 상태입니다.
+The character blocked the party invitation.
+*/
+ MSG_JOINMSG_REFUSE = 0x52c,
+/*20171018 to latest
+모든 파티 초대를 거부합니다.
+Block all party invitations.
+*/
+ MSG_INVITE_PARTY_REFUSE = 0x52d,
+/*20171018 to latest
+모든 파티 초대를 수락합니다.
+Allow all party invitations.
+*/
+ MSG_INVITE_PARTY_ACCEPT = 0x52e,
+/*20171018 to latest
+착용하시면 이 아이템은 영구 귀속됩니다. 착용하시겠습니까?
+This item will be permanently bound to this character once it is equipped. Do you really want to equip this item?
+*/
+ MSG_YOURITEM_EQUIP = 0x52f,
+/*20171018 to latest
+%s 아이템이 귀속되었습니다.
+%s is now permanently bound to this character.
+*/
+ MSG_YOURITEM_EQUIPED = 0x530,
+/*20171018 to latest
+캐시가 부족합니다. 무료 캐시 포인트를 입력해 주시기 바랍니다.
+You do not have enough Kafra Credit Points. Please enter whether you have free credit points.
+*/
+ MSG_BUY_TO_FREE_POINT = 0x531,
+/*20171018 to latest
+파티 가입요청
+Request to Join Party
+*/
+ MSG_REQ_JOIN_PARTY3 = 0x532,
+/*20171018 to latest
+공성 정보 메시지 표시
+Display WOE Info
+*/
+ MSG_VIEW_SIEGE_INFO_MSG = 0x533,
+/*20171018 to latest
+메모리얼던젼 '%s'의 예약이 취소 되었습니다.
+Memorial Dungeon %s's reservation has been canceled.
+*/
+ MSG_MDUNGEON_SUBSCRIPTION_CANCEL_SUCCESS = 0x534,
+/*20171018 to latest
+메모리얼던젼 '%s' 생성에 실패하였습니다. 다시 시도 하세요.
+Failed to create Memorial Dungeon %s. Please try again.
+*/
+ MSG_MDUNGEON_CREATE_FAIL = 0x535,
+/*20171018 to latest
+이 장소에서는 사용할 수 없는 스킬입니다.
+This skill cannot be used within this area.
+*/
+ MSG_IMPOSSIBLE_SKILL_AREA = 0x536,
+/*20171018 to latest
+이 장소에서는 사용할 수 없는 아이템입니다.
+This item cannot be used within this area.
+*/
+ MSG_IMPOSSIBLE_USEITEM_AREA = 0x537,
+/*20171018 to latest
+메모리얼 던전
+Memorial Dungeon
+*/
+ MSG_MEMORIAL_DUN = 0x538,
+/*20171018 to latest
+%s 대기중
+%s in Standby
+*/
+ MSG_MEMORIAL_DUN_WAITING = 0x539,
+/*20171018 to latest
+%s 입장 가능
+%s Available
+*/
+ MSG_MEMORIAL_DUN_READY = 0x53a,
+/*20171018 to latest
+%s 진행중
+%s in Progress
+*/
+ MSG_MEMORIAL_DUN_IN = 0x53b,
+/*20171018 to latest
+시간 안에 입장하지 않아 메모리얼 던전이 사라졌습니다.
+No one entered the Memorial Dungeon within its duration; the dungeon has disappeared.
+*/
+ MSG_MEMORIAL_DUN_OUT1 = 0x53c,
+/*20171018 to latest
+이용하시려면 이용 신청을 처음부터 다시 해주시기 바랍니다.
+Please apply for dungeon entry again to play in this dungeon.
+*/
+ MSG_MEMORIAL_DUN_OUT2 = 0x53d,
+/*20171018 to latest
+대기 순위 : ^ff0000%d^000000
+Your Standby Priority: ^ff0000%d^000000
+*/
+ MSG_MEMORIAL_DUN_PRIORITY = 0x53e,
+/*20171018 to latest
+^ff0000%s^000000 내에 입장하지 않을 경우 신청하신 던전이 삭제 됩니다.
+The requested dungeon will be removed if you do not enter within ^ff0000%s^000000.
+*/
+ MSG_MEMORIAL_DUN_NOTIFY = 0x53f,
+/*20171018 to latest
+던전 미션 제한 시간 :
+Dungeon Mission Time Limit:
+*/
+ MSG_MEMORIAL_DUN_NOTIFY2 = 0x540,
+/*20171018 to latest
+메모리얼 던전 예약이 취소되었습니다.
+The Memorial Dungeon reservation has been canceled.
+*/
+ MSG_MEMORIAL_DUN_CANCEL = 0x541,
+/*20171018 to latest
+메모리얼 던전이 유지 시간 제한에 의해 파괴되었습니다.
+The Memorial Dungeon duration expired; it has been destroyed.
+*/
+ MSG_MEMORIAL_DUN_LIVE_TIME_OUT = 0x542,
+/*20171018 to latest
+메모리얼 던전이 입장 시간 제한에 의해 파괴되었습니다.
+The Memorial Dungeon's entry time limit expired; it has been destroyed.
+*/
+ MSG_MEMORIAL_DUN_ENTER_TIME_OUT = 0x543,
+/*20171018 to latest
+메모리얼 던전이 삭제 되었습니다.
+The Memorial Dungeon has been removed.
+*/
+ MSG_MEMORIAL_DUN_DESTROY_REQUEST = 0x544,
+/*20171018 to latest
+메모리얼 던전에 시스템 오류가 발생하였습니다. 정상적인 게임 진행을 위해 재접속을 해주십시오.
+A system error has occurred in the Memorial Dungeon. Please relog in to the game to continue playing.
+*/
+ MSG_MEMORIAL_DUN_ERROR = 0x545,
+/*20171018 to latest
+사용할 수 없는 슬롯입니다.
+This slot is not usable.
+*/
+ MSG_FR_INVALID_SLOT = 0x546,
+/*20171018 to latest
+Base Level이 15를 넘었습니다.
+Your Base Level is over 15.
+*/
+ MSG_FR_BASELVL = 0x547,
+/*20171018 to latest
+Job Level이 15를 넘었습니다.
+Your Job Level is over 15.
+*/
+ MSG_FR_INVALID_JOBLV = 0x548,
+/*20171018 to latest
+해당슬롯 캐릭터에 직업군의 상인이므로 게임을 할 수 없습니다.
+You cannot play the Merchant class character in this slot.
+*/
+ MSG_FR_JOB = 0x549,
+/*20171018 to latest
+추후 사용예정
+Not Yet Implemented
+*/
+ MSG_FR_MAP = 0x54a,
+/*20171018 to latest
+만들수 있는 케릭터 슬롯이 아닙니다.
+You are not eligible to open the Character Slot.
+*/
+ MSG_FR_ERR_MKCHAR_INVALID_SLOT = 0x54b,
+/*20171018 to latest
+삭제할 수 없는 케릭터 입니다.
+This character cannot be deleted.
+*/
+ MSG_FR_ERR_DELCHAR_INVALID_SLOT = 0x54c,
+/*20171018 to latest
+상대방의 장비창이 공개되어 있지 않습니다.
+This character's equipment information is not open to the public.
+*/
+ MSG_OPEN_EQUIPEDITEM_REFUSED = 0x54d,
+/*20171018 to latest
+장비창을 공개하지 않습니다.
+Equipment information not open to the public.
+*/
+ MSG_OPEN_EQUIPEDITEM_REFUSE = 0x54e,
+/*20171018 to latest
+장비창을 공개합니다.
+Equipment information open to the public.
+*/
+ MSG_OPEN_EQUIPEDITEM_ACCEPT = 0x54f,
+/*20171018 to latest
+(%s)님 장비창 보기
+Check %s's Equipment Info
+*/
+ MSG_REQ_VIEW_OTHERUSER = 0x550,
+/*20171018 to latest
+%s의 장착아이템
+'%s's Equipment
+*/
+ MSG_OTHERUSER_EQUIPED_ITEM = 0x551,
+/*20171018 to latest
+장비창 공개
+Show Equip
+*/
+ MSG_OPEN_EQUIPED_ITEM = 0x552,
+/*20171018 to latest
+프리미엄 서비스를 이용해 주시기 바랍니다.
+This service is only available for premium users.
+*/
+ MSG_NEED_PREMIUM_SERVICE = 0x553,
+/*20171018 to latest
+무료 사용자는 최대 50000제니까지 소유할 수 있습니다.
+Free Trial users can only hold up to 50,000 zeny.
+*/
+ MSG_FR_INVALID_MONEY = 0x554,
+/*20171018 to latest
+전장채팅 상태가 되었습니다.
+Battlefield Chat has been activated.
+*/
+ MSG_BATTLECHAT_ON = 0x555,
+/*20171018 to latest
+전장채팅 상태가 해제되었습니다.
+Battlefield Chat has been deactivated.
+*/
+ MSG_BATTLECHAT_OFF = 0x556,
+/*20171018 to latest
+용병정보 - 몬스터타입
+Mercenary Info - Monster Type
+*/
+ MSG_MER_INFO_TYPE_MONSTER = 0x557,
+/*20171018 to latest
+전체 맵 보기
+World Map
+*/
+ MSG_RO_MAP = 0x558,
+/*20171018 to latest
+메모리얼던젼이 CLOSE 상태입니다.
+The Memorial Dungeon is now closed.
+*/
+ MSG_MEMORIAL_DUN_CLOSE = 0x559,
+/*20171018 to latest
+^ff0000^ff0000용병을 삭제합니다.^000000^000000 삭제하실 경우 지금까지 키운 내역이 모두 삭제됩니다. 계속하시겠습니까?
+^ff0000Deleting a Mercenary Soldier^000000 will also delete his growth history. Do you really want to proceed with the deletion?
+*/
+ MSG_DELETE_MER = 0x55a,
+/*20171018 to latest
+메모리얼던젼이 OPEN 상태입니다.
+The Memorial Dungeon is now open.
+*/
+ MSG_MEMORIAL_DUN_OPEN = 0x55b,
+/*20171018 to latest
+위의 계정은 아직 통신 안전 키에 연결되지 않았습니다. 먼저 안전 키를 해제하신 뒤 게임에 접속해 주십시오.
+This account has not been confirmed by connecting to the safe communication key. Please connect to the key first, and then log into the game.
+*/
+ MSG_PHONE_BLOCK = 0x55c,
+/*20171018 to latest
+한 아이피로 접속 가능한 유저수를 초과하였습니다.
+The number of accounts connected to this IP has exceeded the limit.
+*/
+ MSG_BAN_PC_IP_LIMIT_ACCESS = 0x55d,
+/*20171018 to latest
+새로운 퀘스트를 받았습니다
+You have received a new quest.
+*/
+ MSG_QUESTGET = 0x55e,
+/*20171018 to latest
+^777777습득조건 :
+^CC3399Requirement:
+*/
+ MSG_FINDTEXT_TO_SKILLDES = 0x55f,
+/*20171018 to latest
+스킬 설명 보기
+View Skill Info
+*/
+ MSG_VIEW_SKILL_DESCRIPT = 0x560,
+/*20171018 to latest
+사용된 스킬 포인트는 다시 되돌릴 수 없습니다. 적용하시겠습니까?
+Once used, skill points cannot be re-allocated. Would you like to use the skill points?
+*/
+ MSG_APPLY_SKILL_UP = 0x561,
+/*20171018 to latest
+노비스·1차직업
+1st
+*/
+ MSG_1TABNAME_SKILLWND = 0x562,
+/*20171018 to latest
+2차·전승직업
+2nd
+*/
+ MSG_2TABNAME_SKILLWND = 0x563,
+/*20171018 to latest
+불법프로그램을 사용하였거나 혹은 해킹을 시도한 계정입니다. 블럭종료시간 : %s
+This account has been used for illegal program or hacking program. Block Time: %s
+*/
+ MSG_RE17 = 0x564,
+/*20171018 to latest
+불법프로그램이 실행, 바이러스 감염, 또는 해킹툴이 설치되어 있을 가능성이 있습니다. 정상 클라이언트를 실행하여 주시기 바랍니다. 함께 만드는 밝은 라그나로크가 될 수 있도록 노력하고 있습니다.
+The possibility of exposure to illegal program, PC virus infection or Hacking Tool has been detected. Please execute licensed client. Our team is trying to make a best environment for Ro players.
+*/
+ MSG_RE18 = 0x565,
+/*20171018 to latest
+당신은 지금 건강한 게임 시간 대에 있습니다, 즐거운 게임이 되시길 바랍니다
+You are currently playing in the best game environment. Please enjoy the Ragnarok.
+*/
+ MSG_WARNING_MSG3 = 0x566,
+/*20171018 to latest
+ 몬스터 사냥을 통해 얻을 수 있는 Job경험치가 30분간 1.25배로 증가합니다.
+Job Exp points from hunting monsters are increased by 50% for 30 minutes.
+*/
+ MSG_PLUSONLYJOBEXP = 0x567,
+/*20171018 to latest
+ 몬스터 사냥을 통해 얻을 수 있는 경험치가 30분간 1.2배로 증가합니다.
+Exp points from hunting monsters are increased by 25% for 30 minutes.
+*/
+ MSG_PLUSEXP14532 = 0x568,
+/*20171018 to latest
+ 몬스터 사냥을 통해 얻을 수 있는 경험치가 30분간 2배로 증가합니다.
+EXP points from hunting monsters are increased by 100%% for 30 minutes.
+*/
+ MSG_PLUSEXP14533 = 0x569,
+/*20171018 to latest
+ 몬스터 사냥을 통해 얻을 수 있는 경험치가 60분간 1.5배로 증가합니다.
+EXP points from hunting monsters are increased by 50% for 60 minutes.
+*/
+ MSG_PLUSEXP12312 = 0x56a,
+/*20171018 to latest
+이 맵에서는 파티를 결성할 수 없습니다.
+Unable to organize a party in this map.
+*/
+ MSG_NOPARTY = 0x56b,
+/*20171018 to latest
+(%s)님은 파티에 참여할 수 없는 맵에 있습니다.
+(%s) are currently in restricted map to join a party.
+*/
+ MSG_NOPARTY2 = 0x56c,
+/*20171018 to latest
+간편아이템샵
+Simple Item Shop
+*/
+ MSG_SIMPLE_CASH_SHOP = 0x56d,
+/*20171018 to latest
+소지 한코인 : %d 한코인
+Han Coin: %d Han Coin
+*/
+ MSG_SIMPLE_POINT_SHOP_NHN = 0x56e,
+/*20171018 to latest
+소지 캐시 : %d 캐시
+RoK Point: %d RoK Point
+*/
+ MSG_SIMPLE_POINT_SHOP = 0x56f,
+/*20171018 to latest
+무료 캐시 : %d 캐시
+Free Cash: %d Cash
+*/
+ MSG_SIMPLE_POINT_SHOP2 = 0x570,
+/*20171018 to latest
+본서버 유저는 프리서버에 접속할수 없습니다.
+An user of this server cannot connect to free server
+*/
+ MSG_MAIN_USER_CANONT_LOGIN_FREE_SERVER = 0x571,
+/*20171018 to latest
+유효기간이 지난 비밀번호 입니다. 다시 로그인하여주십시오.
+Your password has expired. Please log in again
+*/
+ MSG_INVALID_ONETIMELIMIT = 0x572,
+/*20171018 to latest
+3차직업
+3rd
+*/
+ MSG_3TABNAME_SKILLWND = 0x573,
+/*20171018 to latest
+이 스킬을 사용할 수 없는 대상입니다.
+This skill can't be used on that target.
+*/
+ MSG_USESKILL_FAIL_TOTARGET = 0x574,
+/*20171018 to latest
+안실라 소유 개수가 초과하여 스킬을 사용할 수 없습니다.
+You can't use skill because you have exceeded the number Ancilla possession limit
+*/
+ MSG_USESKILL_FAIL_ANCILLA_NUMOVER = 0x575,
+/*20171018 to latest
+성수가 필요합니다.
+Unable to use the skill to exceed the number of Ancilla.
+*/
+ MSG_USESKILL_FAIL_HOLYWATER = 0x576,
+/*20171018 to latest
+안실라가 필요합니다.
+Holy water is required.
+*/
+ MSG_USESKILL_FAIL_ANCILLA = 0x577,
+/*20171018 to latest
+일정거리 내에 중복될 수 없습니다.
+Ancilla is required.
+*/
+ MSG_USESKILL_FAIL_DUPLICATE_RANGEIN = 0x578,
+/*20171018 to latest
+이 스킬을 사용하기 위해서는 다른 스킬이 필요합니다.
+Cannot be duplicated within a certain distance.
+*/
+ MSG_USESKILL_FAIL_NEED_OTHER_SKILL = 0x579,
+/*20171018 to latest
+이 맵에서는 채팅을 할 수 없습니다.
+This skill requires other skills to be used.
+*/
+ MSG_NO_CHATTING = 0x57a,
+/*20171018 to latest
+3시간이 지났습니다.
+Chat is not allowed in this map
+*/
+ MSG_VET_3HOUR = 0x57b,
+/*20171018 to latest
+5시간이 지났습니다.
+3 hours have passed.
+*/
+ MSG_VET_5HOUR = 0x57c,
+/*20171018 to latest
+게임가드 초기화 에러 또는 구버전의 게임가드 파일입니다. 게임가드 셋업파일을 다시 설치하고 게임을 실행해 보시기 바랍니다.
+5 hours have passed.
+*/
+ MSG_NPGAMEMON_ERROR_GAMEGUARD = 0x57d,
+/*20171018 to latest
+ini 파일이 없거나 변조되었습니다. 게임가드 셋업파일을 설치하면 해결 할 수 있습니다.
+Game guard initialization error or previous version game guard file is installed. Please re-install the setup file and try again
+*/
+ MSG_NPGMUP_ERROR_PARAM = 0x57e,
+/*20171018 to latest
+게임가드와 충돌 프로그램이 발견되었습니다.
+Either ini file is missing or altered. Install game guard setup file to fix the problem
+*/
+ MSG_NPGG_ERROR_COLLISION = 0x57f,
+/*20171018 to latest
+잘못된 클라이언트입니다. 정상적인 클라이언트를 실행하여 주십시요.
+There is a program found that conflicts with game guard
+*/
+ MSG_PROOF_ERROR = 0x580,
+/*20171018 to latest
+모바일 인증을 받아주시기 바랍니다.
+Incorrect client. Please run a normal client
+*/
+ MSG_MOBILE_LOCKSERVER = 0x581,
+/*20171018 to latest
+모바일 인증에 실패하였습니다.
+Thank you to accept mobile authentication.
+*/
+ MSG_FAILED_MOBILE_LOCKSERVER = 0x582,
+/*20171018 to latest
+이스킬은 혼자서 사용할수 없습니다.
+This skill can't be used alone
+*/
+ MSG_USESKILL_FAIL_NEED_HELPER = 0x583,
+/*20171018 to latest
+이스킬은 특정방향으로만 사용할수 있습니다.
+This skill can be used to certain direction only
+*/
+ MSG_USESKILL_FAIL_INVALID_DIR = 0x584,
+/*20171018 to latest
+더이상 소환할수 없습니다.
+Cannot summon spheres anymore.
+*/
+ MSG_USESKILL_FAIL_SUMMON = 0x585,
+/*20171018 to latest
+소환된 구체가 존재하지 않거나 부족합니다.
+There is no summoned sphere or you do not have enough sphere.
+*/
+ MSG_USESKILL_FAIL_SUMMON_NONE = 0x586,
+/*20171018 to latest
+사용가능한 모방스킬이 존재하지 않습니다.
+There is no imitation skills available.
+*/
+ MSG_USESKILL_FAIL_IMITATION_SKILL_NONE = 0x587,
+/*20171018 to latest
+이 스킬은 중복해서 사용할수 없습니다.
+You can't reuse this skill
+*/
+ MSG_USESKILL_FAIL_DUPLICATE = 0x588,
+/*20171018 to latest
+스킬을 사용할수 없는 상태입니다.
+Skill can't be used in this state
+*/
+ MSG_USESKILL_FAIL_CONDITION = 0x589,
+/*20171018 to latest
+아이템별 최대 소지량을 초과하여 가질 수 없습니다.
+You have exceeded the maximum amount of possession of another item.
+*/
+ MSG_PICKUP_MAXCOUNT_LIMIT = 0x58a,
+/*20171018 to latest
+관리자 권한이 없습니다. 프로그램 최초 실행은 관리자 권한으로 실행하셔야 합니다.
+No administrative privileges. Must first run the program with administrator privileges.
+*/
+ MSG_NPK_ERROR_NOTADMIN = 0x58b,
+/*20171018 to latest
+nProtect KeyCrypt 드라이버 버전이 맞지 않습니다. 시스템 재 부팅 후에 새로 실행 시켜 주십시오.
+nProtect KeyCrypt not the same. Please restart the program and the computer first.
+*/
+ MSG_NPK_ERROR_DRIVERVERSION = 0x58c,
+/*20171018 to latest
+WindowXP 호환성 모드를 사용하고 계십니다. 현재 프로그램에서 호환성 모드를 제거하였습니다. 프로그램을 새로 시작해 주십시오.
+Currently wearing WindowXP Compatibility Mode. The program now removes Compatibility Mode. Please restart the program.
+*/
+ MSG_NPK_ERROR_VERIFYVERSION = 0x58d,
+/*20171018 to latest
+PS/2 키로거가 존재합니다.
+PS/2 keyloggers exist.
+*/
+ MSG_DETECT_PS2KEYLOGGER = 0x58e,
+/*20171018 to latest
+USB 키보드 드라이버 해킹 시도가 탐지되었습니다.
+USB Keylogging attempt was detected.
+*/
+ MSG_DETECT_USBKEYLOGGER = 0x58f,
+/*20171018 to latest
+HHD 모니터링 툴이 탐지되었습니다.
+HHD monitoring tool has been detected.
+*/
+ MSG_DETECT_HHDUSBH = 0x590,
+/*20171018 to latest
+페인트붓이 필요합니다.
+Paintbrush is required.
+*/
+ MSG_USESKILL_FAIL_PAINTBRUSH = 0x591,
+/*20171018 to latest
+서페이스페인트가 필요합니다.
+Paint is required.
+*/
+ MSG_USESKILL_FAIL_II_SURFACE_PAINTS = 0x592,
+/*20171018 to latest
+지정한 위치에 스킬을 사용할수 없습니다.
+Use the skills that are not at the specified location.
+*/
+ MSG_USESKILL_FAIL_POS = 0x593,
+/*20171018 to latest
+도우미의 SP가 부족합니다.
+Not enough SP.
+*/
+ MSG_USESKILL_FAIL_HELPER_SP_INSUFFICIENT = 0x594,
+/*20171018 to latest
+캐릭터 선택창의 캐릭터가 %d개를 초과하면 게임에 접속할 수 없습니다. 불필요한 캐릭터를 삭제해주십시오.
+Character %d is character selection window cannot connect to the game that exceeds the total. Please remove unwanted characters.
+*/
+ MSG_BAN_OVER_CHARACTER_LIST = 0x595,
+/*20171018 to latest
+목캔디가 필요합니다.
+Throat Lozenge is required.
+*/
+ MSG_USESKILL_FAIL_II_NECK_CANDY = 0x596,
+/*20171018 to latest
+안타까운눈물이 필요합니다.
+Painful Tears is required.
+*/
+ MSG_USESKILL_FAIL_II_MISERABLE_TEAR = 0x597,
+/*20171018 to latest
+목 보호 캔디가 필요합니다.
+Throat Lozenge is required.
+*/
+ MSG_USESKILL_FAIL_II_PROTECT_NECK_CANDY = 0x598,
+/*20171018 to latest
+웨폰 블로킹의 연계로만 사용가능합니다.
+Cooperation is only available with Weapon Blocking.
+*/
+ MSG_USESKILL_FAIL_GC_WEAPONBLOCKING = 0x599,
+/*20171018 to latest
+길로틴크로스의 독을 바른 무기가 필요합니다.
+Poisoned weapons is required.
+*/
+ MSG_USESKILL_FAIL_GC_POISONINGWEAPON = 0x59a,
+/*20171018 to latest
+마도기어 탑승시에만 사용가능합니다.
+Item can only be used when Mado Gear is mounted.
+*/
+ MSG_USESKILL_FAIL_MADOGEAR = 0x59b,
+/*20171018 to latest
+발칸블릿이 필요합니다.
+Vulcan Bullet is required.
+*/
+ MSG_USESKILL_FAIL_II_VULCANBULLET = 0x59c,
+/*20171018 to latest
+마도기어 연료가 필요합니다.
+Mado Gear Fuel is required.
+*/
+ MSG_USESKILL_FAIL_II_FUELGAS = 0x59d,
+/*20171018 to latest
+액체냉각탄이 필요합니다.
+Liquid Cold Bullet is required.
+*/
+ MSG_USESKILL_FAIL_II_COLDSLOWERBULLET = 0x59e,
+/*20171018 to latest
+캐논볼을 장전 하세요.
+Please load a Cannon Ball.
+*/
+ MSG_USESKILL_FAIL_CANONBALL = 0x59f,
+/*20171018 to latest
+미도기어 가속장치를 착용하세요.
+Please equipped with a Mado Gear Accelerator.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_ACCELERATION = 0x5a0,
+/*20171018 to latest
+호버링부스터를 착용하세요.
+Please equipped with a Hovering Booster.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_HOVERING_BOOSTER = 0x5a1,
+/*20171018 to latest
+[톡신] 독 효과가 무기에 적용되었습니다.
+[Toxin] Poison effect was applied to the weapon.
+*/
+ MSG_TOXIN = 0x5a2,
+/*20171018 to latest
+[패럴라이즈] 독 효과가 무기에 적용되었습니다.
+[Paralysis] Poison effect was applied to the weapon.
+*/
+ MSG_PARALYZE = 0x5a3,
+/*20171018 to latest
+[베놈블리드] 독 효과가 무기에 적용되었습니다.
+[Fatigue] Poison effect was applied to the weapon.
+*/
+ MSG_VENOMBLEED = 0x5a4,
+/*20171018 to latest
+[매직 머쉬룸] 독 효과가 무기에 적용되었습니다.
+[Laughing] Poison effect was applied to the weapon.
+*/
+ MSG_MAGICMUSHROOM = 0x5a5,
+/*20171018 to latest
+[데스 허트] 독 효과가 무기에 적용되었습니다.
+[Disheart] Poison effect was applied to the weapon.
+*/
+ MSG_DEATHHURT = 0x5a6,
+/*20171018 to latest
+[파이렉시아] 독 효과가 무기에 적용되었습니다.
+[Pyrexia] Poison effect was applied to the weapon.
+*/
+ MSG_PHYREXIA = 0x5a7,
+/*20171018 to latest
+[오블리비언 커즈] 독 효과가 무기에 적용되었습니다.
+[Oblivion] Poison effect was applied to the weapon.
+*/
+ MSG_OBLIANCURSE = 0x5a8,
+/*20171018 to latest
+[리치 엔드] 독 효과가 무기에 적용되었습니다.
+[Leech] Poison effect was applied to the weapon.
+*/
+ MSG_RICHEND = 0x5a9,
+/*20171018 to latest
+호버링상태에서만 사용가능합니다.
+Can only be used in Hovering state.
+*/
+ MSG_USESKILL_FAIL_MADOGEAR_HOVERING = 0x5aa,
+/*20171018 to latest
+자폭장치를 장착하세요.
+Please equip a Self-Destruct Mechanism.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_SELFDESTRUCTION_DEVICE = 0x5ab,
+/*20171018 to latest
+셰이프쉬프터를 장착하세요.
+Please equip a Shape Shift.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_SHAPESHIFTER = 0x5ac,
+/*20171018 to latest
+길로틴독이 필요합니다.
+Guillotine Cross Poison is required.
+*/
+ MSG_USESKILL_FAIL_GUILLONTINE_POISON = 0x5ad,
+/*20171018 to latest
+냉각장치를 장착하세요.
+Please equipped with a Cooling System.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_COOLING_DEVICE = 0x5ae,
+/*20171018 to latest
+자기장필드생성기를 착용하세요.
+Please equipped with a Magnetic Field Generator.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_MAGNETICFIELD_GENERATOR = 0x5af,
+/*20171018 to latest
+베리어생성기를 착용하세요.
+Please equipped with a Barrier Generator.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_BARRIER_GENERATOR = 0x5b0,
+/*20171018 to latest
+광학미채발생기를 착용하세요.
+Please equipped with a Optical Camouflage Generator.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_OPTICALCAMOUFLAGE_GENERATOR = 0x5b1,
+/*20171018 to latest
+리페어키트를 착용하세요.
+Please equipped with a Repair Kit.
+*/
+ MSG_USESKILL_FAIL_II_MADOGEAR_REPAIRKIT = 0x5b2,
+/*20171018 to latest
+몽키 스패너가 필요합니다.
+Monkey Wrench is required.
+*/
+ MSG_USESKILL_FAIL_II_MONKEY_SPANNER = 0x5b3,
+/*20171018 to latest
+[%s] 스킬을 시전 할 수 없습니다.
+[%s] Cannot use the skills due to cooldown delay.
+*/
+ MSG_SKILLINTERVAL2 = 0x5b4,
+/*20171018 to latest
+%d레벨 이상은 삭제가 불가능합니다.
+Deletion is impossible for over level %d
+*/
+ MSG_LEMIT_DELETE_LEVEL = 0x5b5,
+/*20171018 to latest
+마도기어 탑승시에는 사용 할 수 없습니다.
+Can't be used while on Magic Gear.
+*/
+ MSG_USESKILL_FAIL_MADOGEAR_RIDE = 0x5b6,
+/*20171018 to latest
+드래곤 내리기
+Dismount Dragon
+*/
+ MSG_DRAGONOFF = 0x5b7,
+/*20171018 to latest
+마도기어 내리기
+Dismount Magic Gear
+*/
+ MSG_MADOOFF = 0x5b8,
+/*20171018 to latest
+소비
+I
+*/
+ MSG_STORE_TABNAME_0 = 0x5b9,
+/*20171018 to latest
+캐쉬
+Cash
+*/
+ MSG_STORE_TABNAME_1 = 0x5ba,
+/*20171018 to latest
+방어구
+Armors
+*/
+ MSG_STORE_TABNAME_2 = 0x5bb,
+/*20171018 to latest
+무기
+Weapons
+*/
+ MSG_STORE_TABNAME_3 = 0x5bc,
+/*20171018 to latest
+투사체
+Ammo
+*/
+ MSG_STORE_TABNAME_4 = 0x5bd,
+/*20171018 to latest
+카드
+Card
+*/
+ MSG_STORE_TABNAME_5 = 0x5be,
+/*20171018 to latest
+기타
+Other
+*/
+ MSG_STORE_TABNAME_6 = 0x5bf,
+/*20171018 to latest
+클라이언트 응답시간이 초과되어 연결이 끊어집니다.
+Client response time has passed so connection is terminated
+*/
+ MSG_ERROR_HS_TIMEOUT = 0x5c0,
+/*20171018 to latest
+핵쉴드 파일의 버전이 맞지 않습니다. 클라이언트를 재설치 해주십시오.
+Incorrect version of hack shield file. Please reinstall the client
+*/
+ MSG_ERROR_DIFF_CLIENT = 0x5c1,
+/*20171018 to latest
+마법서가 필요합니다.
+[Magic Book] is required.
+*/
+ MSG_USESKILL_FAIL_SPELLBOOK = 0x5c2,
+/*20171018 to latest
+마법서가 너무 어려워서 졸음이 몰려온다.
+Feel sleepy since Magic Book is too difficult to understand.
+*/
+ MSG_USESKILL_FAIL_SPELLBOOK_DIFFICULT_SLEEP = 0x5c3,
+/*20171018 to latest
+보존포인트가 부족합니다.
+Not enough saved point.
+*/
+ MSG_USESKILL_FAIL_SPELLBOOK_PRESERVATION_POINT = 0x5c4,
+/*20171018 to latest
+더이상 마법서를 읽을수 없습니다.
+Can't read a Magic Book anymore.
+*/
+ MSG_USESKILL_FAIL_SPELLBOOK_READING = 0x5c5,
+/*20171018 to latest
+페이스페인트가 필요합니다.
+Face Paint is required.
+*/
+ MSG_USESKILL_FAIL_II_FACE_PAINTS = 0x5c6,
+/*20171018 to latest
+분장용붓이 필요합니다.
+Brush is required.
+*/
+ MSG_USESKILL_FAIL_II_MAKEUP_BRUSH = 0x5c7,
+/*20171018 to latest
+대기 시간이 초과하였습니다. 다시 로그인 해주십시오.
+Waiting time has passed. Please log in again
+*/
+ MSG_MOBILE_TIMEOVER = 0x5c8,
+/*20171018 to latest
+위험! 이미 동일한 계정이 로그인 중에 있습니다. 잠시 모바일 인증 진행을 멈추시고 비번을 수정한 뒤 재 로그인 해주십시오.
+Watch out! Same account is already logged in. Stop mobile verification and log in again after changing your password
+*/
+ MSG_MOBILE_ANOTHER_LOGIN = 0x5c9,
+/*20171018 to latest
+위험! 현재 동일한 계정이 모바일 인증 대기 중에 있습니다. 잠시 모바일 인증 진행을 멈추시고 비번을 수정한 뒤 재 로그인 해주십시오.
+Watch out! Same account is waiting for mobile verification. Stop mobile verification and log in again after changing your password
+*/
+ MSG_MOBILE_WAITING_STATE = 0x5ca,
+/*20171018 to latest
+게임 옵션창
+Game setting window
+*/
+ MSG_ESC_OPTIONWND = 0x5cb,
+/*20171018 to latest
+그래픽 설정
+Graphics Settings
+*/
+ MSG_GRAPHIC_OPTIONWND = 0x5cc,
+/*20171018 to latest
+사운드 설정
+Sound Settings
+*/
+ MSG_SOUND_OPTIONWND = 0x5cd,
+/*20171018 to latest
+변경 할 단축키를 누르거나, 'ESC'키를 눌러 삭제 해 주세요.
+Press a key to assign. Pressing 'ESC' will remove the assigned key.
+*/
+ MSG_HOTKEYWND_NOTICE1 = 0x5ce,
+/*20171018 to latest
+단일 키로 지정 할 수 없는 키입니다.
+Unable to specify a single key.
+*/
+ MSG_HOTKEYWND_NOTICE2 = 0x5cf,
+/*20171018 to latest
+지정 할 수 없는 키입니다.
+Unable to specify the key assigned.
+*/
+ MSG_HOTKEYWND_NOTICE3 = 0x5d0,
+/*20171018 to latest
+'%s'에 사용된 단축키와 중복됩니다. 바꾸시겠습니까?
+Duplicated with ['%s']. Do you still want to change?
+*/
+ MSG_HOTKEYWND_NOTICE4 = 0x5d1,
+/*20171018 to latest
+저장된 단축키 조합이 초기화 됩니다. 초기화 하시겠습니까?
+Initialization is stored in the shortcut key settings. Do you want to initialized?
+*/
+ MSG_HOTKEYWND_NOTICE5 = 0x5d2,
+/*20171018 to latest
+스킬바
+Skill Bar
+*/
+ MSG_HOTKEYWND_TAB1 = 0x5d3,
+/*20171018 to latest
+인터페이스
+Interface
+*/
+ MSG_HOTKEYWND_TAB2 = 0x5d4,
+/*20171018 to latest
+이모션
+Macros
+*/
+ MSG_HOTKEYWND_TAB3 = 0x5d5,
+/*20171018 to latest
+단축키 설정 창
+Shortcut Settings
+*/
+ MSG_HOTKEYWND_TITLE = 0x5d6,
+/*20171018 to latest
+배경음
+BGM
+*/
+ MSG_BGM = 0x5d7,
+/*20171018 to latest
+효과음
+Effect
+*/
+ MSG_SOUND = 0x5d8,
+/*20171018 to latest
+스킨
+Skin
+*/
+ MSG_SKIN = 0x5d9,
+/*20171018 to latest
+채팅방 입장음만 소리남 On
+Chat room entrance sound on
+*/
+ MSG_TINGONLY_ON = 0x5da,
+/*20171018 to latest
+채팅방 입장음만 소리남 Off
+Chat room entrance sound off
+*/
+ MSG_TINGONLY_OFF = 0x5db,
+/*20171018 to latest
+/tingonly : 채팅방 입장음만 들을수있게됩니다
+/tingonly: you can hear only sound like a chat room entry.
+*/
+ MSG_EXPLAIN_TINGONLY = 0x5dc,
+/*20171018 to latest
+/주먹
+/rock
+*/
+ MSG_EMOTION_ROCK = 0x5dd,
+/*20171018 to latest
+/가위
+/scissors
+*/
+ MSG_EMOTION_SCISSOR = 0x5de,
+/*20171018 to latest
+/보
+/paper
+*/
+ MSG_EMOTION_WRAP = 0x5df,
+/*20171018 to latest
+/러브
+/love
+*/
+ MSG_EMOTION_LUV = 0x5e0,
+/*20171018 to latest
+/mobile
+*/
+ MSG_EMOTION_MOBILE = 0x5e1,
+/*20171018 to latest
+/mail
+*/
+ MSG_EMOTION_MAIL = 0x5e2,
+/*20171018 to latest
+/antenna0
+*/
+ MSG_EMOTION_ANTENNA0 = 0x5e3,
+/*20171018 to latest
+/antenna1
+*/
+ MSG_EMOTION_ANTENNA1 = 0x5e4,
+/*20171018 to latest
+/antenna2
+*/
+ MSG_EMOTION_ANTENNA2 = 0x5e5,
+/*20171018 to latest
+/antenna3
+*/
+ MSG_EMOTION_ANTENNA3 = 0x5e6,
+/*20171018 to latest
+/hum
+*/
+ MSG_EMOTION_HUM2 = 0x5e7,
+/*20171018 to latest
+/abs
+*/
+ MSG_EMOTION_ABS = 0x5e8,
+/*20171018 to latest
+/oops
+*/
+ MSG_EMOTION_OOPS = 0x5e9,
+/*20171018 to latest
+/spit
+*/
+ MSG_EMOTION_SPIT = 0x5ea,
+/*20171018 to latest
+/ene
+*/
+ MSG_EMOTION_ENE = 0x5eb,
+/*20171018 to latest
+/panic
+*/
+ MSG_EMOTION_PANIC = 0x5ec,
+/*20171018 to latest
+/whisp
+*/
+ MSG_EMOTION_WHISP = 0x5ed,
+/*20171018 to latest
+지정안함
+Not Assigned
+*/
+ MSG_HOTKEY_NOTHING = 0x5ee,
+/*20171018 to latest
+카트장착시에만 사용가능합니다.
+Only available when cart is mounted.
+*/
+ MSG_USESKILL_FAIL_CART = 0x5ef,
+/*20171018 to latest
+[가시나무 씨앗]이 필요합니다.
+[Thorny Seed] is required.
+*/
+ MSG_USESKILL_FAIL_II_THORNS_SEED = 0x5f0,
+/*20171018 to latest
+[흡혈 식물 씨앗]이 필요합니다.
+[Bloodsucker Seed] is required.
+*/
+ MSG_USESKILL_FAIL_II_BLOOD_SUCKER_SEED = 0x5f1,
+/*20171018 to latest
+더이상 시전할수 없습니다.
+Cannot be used anymore.
+*/
+ MSG_USESKILL_FAIL_NO_MORE_SPELL = 0x5f2,
+/*20171018 to latest
+[폭탄버섯포자]가 필요합니다.
+[Bomb Mushroom Spore] is required.
+*/
+ MSG_USESKILL_FAIL_II_BOMB_MUSHROOM_SPORE = 0x5f3,
+/*20171018 to latest
+[화염병]이 필요합니다.
+[Fire Bottle] is required.
+*/
+ MSG_USESKILL_FAIL_II_GASOLINE_BOOMB = 0x5f4,
+/*20171018 to latest
+[기름병]이 필요합니다.
+[Oil Bottle] is required.
+*/
+ MSG_USESKILL_FAIL_II_OIL_BOTTLE = 0x5f5,
+/*20171018 to latest
+[폭발가루]가 필요합니다.
+[Explosive Powder] is required.
+*/
+ MSG_USESKILL_FAIL_II_EXPLOSION_POWDER = 0x5f6,
+/*20171018 to latest
+[연막가루]가 필요합니다.
+[Smokescreen Powder] is required.
+*/
+ MSG_USESKILL_FAIL_II_SMOKE_POWDER = 0x5f7,
+/*20171018 to latest
+[최루가스]가 필요합니다.
+[Tear Gas] is required.
+*/
+ MSG_USESKILL_FAIL_II_TEAR_GAS = 0x5f8,
+/*20171018 to latest
+[염산병]이 필요합니다.
+[Acid Bottle] is required.
+*/
+ MSG_USESKILL_FAIL_II_HYDROCHLORIC_ACID_BOTTLE = 0x5f9,
+/*20171018 to latest
+[식인식물병]이 필요합니다.
+[Bottom Man-Eating Plant] is required.
+*/
+ MSG_USESKILL_FAIL_II_HELLS_PLANT_BOTTLE = 0x5fa,
+/*20171018 to latest
+[만드라고라의 화분]이 필요합니다.
+[Pot of Mandragora] is required.
+*/
+ MSG_USESKILL_FAIL_II_MANDRAGORA_FLOWERPOT = 0x5fb,
+/*20171018 to latest
+파티장 위임
+Party delegation
+*/
+ MSG_YIELD_PARTYMASTER = 0x5fc,
+/*20171018 to latest
+정말 파티장을 위임하시겠습니까?
+Do you want to delegate the real party?
+*/
+ MSG_DO_YOU_REALLY_WANT_YIELD_PARTYMASTER = 0x5fd,
+/*20171018 to latest
+파티장을 위임 할 수 없습니다.
+Party cannot be delegated.
+*/
+ MSG_CANNOT_YIELD_PARTYMASTER = 0x5fe,
+/*20171018 to latest
+변경불가
+Immutable
+*/
+ MSG_FAILED_CHANGE = 0x5ff,
+/*20171018 to latest
+[%s]가 %d개 필요합니다.
+[%s] required '%d' amount.
+*/
+ MSG_USESKILL_FAIL_NEED_ITEM = 0x600,
+/*20171018 to latest
+제련 수치가 하향 조정 되었습니다.
+Is now refining the value lowered.
+*/
+ MSG_ITEM_REFINING_DOWNGRADE = 0x601,
+/*20171018 to latest
+[%s]를 장비하고 있어야 사용할 수 있습니다
+Need to put on [%s] in order to use.
+*/
+ MSG_USESKILL_FAIL_NEED_EQUIPMENT = 0x602,
+/*20171018 to latest
+전장 입장 설정
+Battle field entrance setting
+*/
+ MSG_BATTLEFIELD_LIST = 0x603,
+/*20171018 to latest
+% 전장으로 이동 할 수 없는 상태가 되어 전장 신청이 취소 되었습니다.
+Battlefield - [%s] you sign up?
+*/
+ MSG_CANNOT_JOINTO_BATTLEFIELD = 0x604,
+/*20171018 to latest
+
+Current admission application state.
+*/
+ MSG_COMPLETED_JOINTO_BATTLEFIELD = 0x605,
+/*20171018 to latest
+% 전장 입장이 보류 되었습니다. 다른 플레이어를 기다립니다.
+It was unregistered and not be able to enter the state.
+*/
+ MSG_DIFFER_JOINTO_BATTLEFIELD = 0x606,
+/*20171018 to latest
+
+Current admission application state.
+*/
+ MSG_STATUS_JOINTO_BATTLEFIELD = 0x607,
+/*20171018 to latest
+확인 단추를 누르면 전장 신청이 취소됩니다. 아래 단추를 클릭해 주세요.
+Do you want to cancel the admission application?
+*/
+ MSG_REQ_CANCEL_JOINTO_BATTLEFIELD = 0x608,
+/*20171018 to latest
+%s 전장 입장 신청이 취소되었습니다.
+Admission request has been cancelled.
+*/
+ MSG_CANCEL_JOINTO_BATTLEFIELD = 0x609,
+/*20171018 to latest
+잠시후 %s 전장으로 이동 합니다. 공간 이동을 위한 안정적인 상태를 확보해 주시길 바랍니다. (거래 및 공간 이동 기능 일시 중지됨)
+Go to the battlefield quickly.
+*/
+ MSG_MOVETO_BATTLEFIELD = 0x60a,
+/*20171018 to latest
+전장 명칭
+Battlefield - [%s]
+*/
+ MSG_BATTLEFIELD_NAME = 0x60b,
+/*20171018 to latest
+정말 이동 하시겠습니까?
+Do you really want to go back to your savepoint?
+*/
+ MSG_MOVETO_SAVEPOINT = 0x60c,
+/*20171018 to latest
+파티원 찾기 메세지
+Search Message for Party Members
+*/
+ MSG_VIEW_SEEK_PARTY = 0x60d,
+/*20171018 to latest
+파티원 찾기 메세지 옵션이 꺼져있습니다.
+Message option is off the search party members.
+*/
+ MSG_UNVIEW_SEEK_PARTY = 0x60e,
+/*20171018 to latest
+10초간 파티 지원 딜레이가 걸려있습니다.
+10 seconds delay of party support is in effect
+*/
+ MSG_SEEK_PARTY_DEALY = 0x60f,
+/*20171018 to latest
+ 파티장은 '%s' 님 입니다.
+Party leader is '%s'.
+*/
+ MSG_NOTIFY_PARTY_ROLE_MASTER = 0x610,
+/*20171018 to latest
+시스템 오류로 입장 할 수 없습니다.
+Unable to enter due to system error.
+*/
+ MSG_ERROR_SYSTEM_ERROR_BATTLEFIELD = 0x611,
+/*20171018 to latest
+대기 인원 수 초과로 입장 할 수 없습니다.
+Cannot wait to enter the number of excess.
+*/
+ MSG_ERROR_FULL_ESROOM_BATTLEFIELD = 0x612,
+/*20171018 to latest
+이미 신청 되었습니다.
+Has already been applied.
+*/
+ MSG_ERROR_DOUBLE_OFFER_BATTLEFIELD = 0x613,
+/*20171018 to latest
+대기 시간이 초과되어 등록이 취소 되었습니다.
+Registration has been cancelled because of the excessive waiting time.
+*/
+ MSG_ERROR_WAIT_TIMEOUT_BATTLEFIELD = 0x614,
+/*20171018 to latest
+입장 조건이 맞지 않아, 등록이 취소 되었습니다.
+Unregistered because admission requirements are not matching.
+*/
+ MSG_ERROR_BATTLEFILD_ENTER_BATTLEFIELD = 0x615,
+/*20171018 to latest
+오류가 발생하여 등록이 취소 되었습니다.
+Was unregistered and error.
+*/
+ MSG_ERROR_DROP_ENTRANCESTATION_BATTLEFIELD = 0x616,
+/*20171018 to latest
+[%s]의 연계 스킬입니다.
+The skill need [%s].
+*/
+ MSG_USESKILL_FAIL_COMBOSKILL = 0x617,
+/*20171018 to latest
+특정스킬 의 연계 스킬입니다.
+The skill need a particular skill.
+*/
+ MSG_USESKILL_FAIL_COMBOSKILL2 = 0x618,
+/*20171018 to latest
+기구체 %d 개가 필요합니다
+Requires %d mind bullets
+*/
+ MSG_USESKILL_FAIL_SPIRITS = 0x619,
+/*20171018 to latest
+기구체가 필요합니다
+Mind Bullet is required.
+*/
+ MSG_USESKILL_FAIL_SPIRITS2 = 0x61a,
+/*20171018 to latest
+최대 소지량 보다 많은 룬스톤을 제작할 수 없습니다.
+Cannot create rune stone more than the maximum amount.
+*/
+ MSG_RUNESTONE_MAKEERROR_OVERCOUNT = 0x61b,
+/*20171018 to latest
+전장 리스트를 받을 수 없는 상태입니다. 확인 후 다시 시도 해 주세요.
+Not able to receive battle field list. Please check and try again
+*/
+ MSG_ERROR_LIST_OPEN_BATTLEFIELD = 0x61c,
+/*20171018 to latest
+레벨이 부족하여 입장 할 수 없습니다.
+Level is not high enough to enter
+*/
+ MSG_ERROR_LEVEL_LIMIT_BATTLEFIELD = 0x61d,
+/*20171018 to latest
+ 1차 직업 스킬 %d개를 더 올려 주십시오.
+You must consume all '%d' points in your 1st Tab.
+*/
+ MSG_UPGRADESKILLERROR_MORE_FIRSTJOBSKILL = 0x61e,
+/*20171018 to latest
+ 1차 혹은 2차 직업 스킬 %d개를 더 올려 주십시오.
+You must consume all '%d' remaining points in your 2nd Tab. 1st Tab is already done.
+*/
+ MSG_UPGRADESKILLERROR_MORE_SECONDJOBSKILL = 0x61f,
+/*20171018 to latest
+변환 가능한 아이템
+Items available for conversion
+*/
+ MSG_ITEMSYOUCANCHANGE = 0x620,
+/*20171018 to latest
+변환할 아이템
+Insert items to convert
+*/
+ MSG_ITEMS_FOR_CHANGE = 0x621,
+/*20171018 to latest
+변환이 불가능한 조합 입니다.
+Inconvertible combination
+*/
+ MSG_SKILL_RECIPE_NOTEXIST = 0x622,
+/*20171018 to latest
+인벤토리의 무게가 너무 무겁습니다.
+Inventory weight is too much
+*/
+ MSG_SKILL_INVENTORY_WEIGHT_OVER = 0x623,
+/*20171018 to latest
+인벤토리를 공간을 확보해주세요.
+Please secure some room in the inventory
+*/
+ MSG_SKILL_INVENTORY_KINDCNT_OVER = 0x624,
+/*20171018 to latest
+재료가 존재하지 않습니다.
+Material doesn't exist
+*/
+ MSG_SKILL_MATERIAL_FAIL = 0x625,
+/*20171018 to latest
+성공하였습니다.
+Successful.
+*/
+ MSG_SKILL_SUCCESS = 0x626,
+/*20171018 to latest
+실패 하였습니다.
+Failed.
+*/
+ MSG_SKILL_FAIL = 0x627,
+/*20171018 to latest
+실패하여 모든 재료가 사라졌습니다.
+all materials are gone due to failure
+*/
+ MSG_SKILL_FAIL_MATERIAL_DESTROY = 0x628,
+/*20171018 to latest
+지정하신 탭 이름이 너무 길어 변경 할 수 없습니다.
+unable to change the name of the specified tab, because it's too long.
+*/
+ MSG_FAILED_CHANGE_TABNAME = 0x629,
+/*20171018 to latest
+더 이상 추가 할 수 없습니다.
+Cannot add more.
+*/
+ MSG_FAILED_ADD_TAB = 0x62a,
+/*20171018 to latest
+인증에 실패 했습니다.
+Authentication failed.
+*/
+ MSG_FAILED_LOCKSERVER = 0x62b,
+/*20171018 to latest
+자동 입력 방지
+Bot checks
+*/
+ MSG_BOT_CHECK = 0x62c,
+/*20171018 to latest
+감정이 않된 아이템은 재료로 사용할 수 없습니다.
+Items cannot be used in materials cannot be emotional.
+*/
+ MSG_SKILL_FAIL_MATERIAL_IDENTITY = 0x62d,
+/*20171018 to latest
+접속하신 IP는 라그나로크 온라인 이용이 불가능 합니다. 고객 지원 센터 또는 홈페이지로 문의 해 주십시오.
+It is impossible to connect using this IP in Ragnarok Online. Please contact the customer support center or home.
+*/
+ MSG_BAN_IP_BLOCK = 0x62e,
+/*20171018 to latest
+비밀번호가 6회 이상 잘못 입력되어 잠시 동안 접속이 제한됩니다. 고객님의 개인정보를 다시 한 번 확인해 주시길 바랍니다.
+You have entered a wrong password for more than six times, please check your personal information again.
+*/
+ MSG_BAN_INVALID_PWD_CNT = 0x62f,
+/*20171018 to latest
+합성에 사용한 아이템은 소모됩니다. 괜찮겠습니까?
+Consumption items are used in the synthesis. Are you sure?
+*/
+ MSG_MIX_ACCEPT = 0x630,
+/*20171018 to latest
+왼쪽에 보이는 글자 및 숫자조합을 입력해주세요.
+Please input the captcha code found at your left side.
+*/
+ MSG_BOT_CHECK_NOTIC = 0x631,
+/*20171018 to latest
+전장 설명 -
+Describes the battlefield --
+*/
+ MSG_DESCRIBE_BATTLEFIELD = 0x632,
+/*20171018 to latest
+입장 대기 상태 -
+Waiting for admission --
+*/
+ MSG_BATTLEFIELD_STATUS = 0x633,
+/*20171018 to latest
+전장 입장 신청 도움말
+Request help battle position
+*/
+ MSG_BATTLEFIELD_HELP = 0x634,
+/*20171018 to latest
+죄송합니다. 해당 직업의 캐릭터는 현재 테스트를 위해서 접속이 금지됩니다.
+Sorry the character you are trying to use is banned for testing connection.
+*/
+ MSG_BAN_NOT_ALLOWED_JOBCLASS = 0x635,
+/*20171018 to latest
+모든 장비 해제
+Remove all equipment
+*/
+ MSG_REMOVE_EQUIPEDITEM = 0x636,
+/*20171018 to latest
+미니 아이콘
+Mini Icon
+*/
+ MSG_MINI_ICON = 0x637,
+/*20171018 to latest
+진영 A : 진영 B
+Camp A: Camp B
+*/
+ MSG_BATTLEFIELD_TEAM = 0x638,
+/*20171018 to latest
+대기열
+Wait
+*/
+ MSG_WAIT_STATUS = 0x639,
+/*20171018 to latest
+전장 신청 취소 알림
+cancellation notice of Battlefield registration.
+*/
+ MSG_NOTIFY_BATTLEFIELD_CANCEL = 0x63a,
+/*20171018 to latest
+전장 필요 인원
+Required field for staff
+*/
+ MSG_BATTLEFIELD_COUNT = 0x63b,
+/*20171018 to latest
+전장 A 대기 인원
+Battlefield staff A is waiting.
+*/
+ MSG_BATTLEFIELD_ATEAM_COUNT = 0x63c,
+/*20171018 to latest
+전장 B 대기 인원
+Battlefield staff B is waiting.
+*/
+ MSG_BATTLEFIELD_BTEAM_COUNT = 0x63d,
+/*20171018 to latest
+내 대기 상황 : %d(진영 A)
+Waiting for my situation: %d (Camp A)
+*/
+ MSG_BATTLEFIELD_ATEAM_WAIT = 0x63e,
+/*20171018 to latest
+내 대기 상황 : %d(진영 B)
+Waiting for my situation: %d (Camp B)
+*/
+ MSG_BATTLEFIELD_BTEAM_WAIT = 0x63f,
+/*20171018 to latest
+전장 아이콘을 보여줍니다.
+Battlefield display icon.
+*/
+ MSG_SHOW_BATTLEFIELD_ICON = 0x640,
+/*20171018 to latest
+전장 아이콘을 보여주지 않습니다.
+Does not display the icon field.
+*/
+ MSG_DONT_SHOW_BATTLEFIELD_ICON = 0x641,
+/*20171018 to latest
+전장 이동 알림
+Field notification was moved.
+*/
+ MSG_NOTIFY_BATTLEFIELD_MOVE = 0x642,
+/*20171018 to latest
+전장 입장 보류 알림
+Admission pending notification of the battlefield
+*/
+ MSG_NOTIFY_BATTLEFIELD_DEFER = 0x643,
+/*20171018 to latest
+누군가
+Anyone
+*/
+ MSG_WHO_IS = 0x644,
+/*20171018 to latest
+ [%s](으)로부터 '%d'의 데미지를 받았습니다.
+ [%s] deal '%d' damage on you.
+*/
+ MSG_I_RECEIVED_DAMAGE = 0x645,
+/*20171018 to latest
+ [%s]님이 [%s](으)로부터 '%d'의 데미지를 받았습니다.
+ [%s] received damage from [%s] with '%d' damage.
+*/
+ MSG_PARTY_RECEIVED_DAMAGE = 0x646,
+/*20171018 to latest
+ [%s]에게 '%d'의 데미지를 주었습니다.
+ [%s] received '%d' damage.
+*/
+ MSG_I_GAVE_DAMAGE = 0x647,
+/*20171018 to latest
+ [%s]님이 [%s]에게 '%d'의 데미지를 주었습니다.
+ [%s] deal damage to [%s] with '%d' damage.
+*/
+ MSG_PARTY_GAVE_DAMAGE = 0x648,
+/*20171018 to latest
+%s %d 개 드롭
+You dropped '%s' (%d).
+*/
+ MSG_DROP_ITEM = 0x649,
+/*20171018 to latest
+ [%s]퀘스트의 [%s]몬스터를 처치하였습니다. (%d/%d)
+[%s] Quest - defeated [%s] progress (%d/%d)
+*/
+ MSG_CLEAR_QUEST_MONSTER = 0x64a,
+/*20171018 to latest
+%s 퀘스트가 삭제 되었습니다.
+The Quest '%s' has been removed.
+*/
+ MSG_DELETE_QUEST = 0x64b,
+/*20171018 to latest
+[%s]님이
+[%s] has
+*/
+ MSG_NOTIFY_WHO = 0x64c,
+/*20171018 to latest
+'%d'의 경험치를
+You acquired '%d' Experience Points
+*/
+ MSG_NOTIFY_EXP = 0x64d,
+/*20171018 to latest
+'%d'의 잡경험치를
+You acquired '%d' Job Experience Points
+*/
+ MSG_NOTIFY_JOBEXP = 0x64e,
+/*20171018 to latest
+획득했습니다.
+ gained.
+*/
+ MSG_GET = 0x64f,
+/*20171018 to latest
+상실했습니다.
+ has lost.
+*/
+ MSG_LOSS = 0x650,
+/*20171018 to latest
+ [%s](으)로부터 '%d'의 코인을 스틸했습니다.
+From [%s], '%d' coins were stolen.
+*/
+ MSG_NOTIFY_STEAL_COIN = 0x651,
+/*20171018 to latest
+전투 메시지
+Battle Message
+*/
+ MSG_VIEW_COMBAT_MSG = 0x652,
+/*20171018 to latest
+파티원 전투 메시지
+Display Party Battle Message
+*/
+ MSG_VIEW_PARTY_COMBAT_MSG = 0x653,
+/*20171018 to latest
+획득 경험치
+Display Experience Message
+*/
+ MSG_VIEW_GETTING_EXP_MSG = 0x654,
+/*20171018 to latest
+파티원의 획득 경험치
+Display Party Experience Message
+*/
+ MSG_VIEW_PARTY_GETTING_EXP_MSG = 0x655,
+/*20171018 to latest
+퀘스트 정보 표시
+Display Quest Info Message
+*/
+ MSG_VIEW_QUEST_INFO_MSG = 0x656,
+/*20171018 to latest
+전장 정보 표시
+Display Battlefield Message
+*/
+ MSG_VIEW_BATTLEFIELD_INFO_MSG = 0x657,
+/*20171018 to latest
+[%s]에게
+[%s]
+*/
+ MSG_NOTIFY_TARGET_WHO = 0x658,
+/*20171018 to latest
+[%s] 스킬을 사용합니다.
+Casts [%s] skill.
+*/
+ MSG_NOTIFY_SKILL_TO_TARGET = 0x659,
+/*20171018 to latest
+기능제한상태
+Activate lock function
+*/
+ MSG_LOCK_MOUSE = 0x65a,
+/*20171018 to latest
+기능제한해제상태
+Deactivate lock function
+*/
+ MSG_UNLOCK_MOUSE = 0x65b,
+/*20171018 to latest
+[%s]님이 [%s](으)로부터 '%s' 를 획득 했습니다.
+Citizens of Midgard, Lady Luck shines upon [%s] !! [%s] has awarded the player with '%s' !!
+*/
+ MSG_BROADCASTING_SPECIAL_ITEM_OBTAIN = 0x65c,
+/*20171018 to latest
+소드맨
+Swordman
+*/
+ MSG_JOB_SWORDMAN = 0x65d,
+/*20171018 to latest
+매지션
+Magician
+*/
+ MSG_JOB_MAGICIAN = 0x65e,
+/*20171018 to latest
+아처
+Archer
+*/
+ MSG_JOB_ARCHER = 0x65f,
+/*20171018 to latest
+어콜라이트
+Acolyte
+*/
+ MSG_JOB_ACOLYTE = 0x660,
+/*20171018 to latest
+머첸트
+Merchant
+*/
+ MSG_JOB_MERCHANT = 0x661,
+/*20171018 to latest
+씨프
+Thief
+*/
+ MSG_JOB_THIEF = 0x662,
+/*20171018 to latest
+나이트
+Knight
+*/
+ MSG_JOB_KNIGHT = 0x663,
+/*20171018 to latest
+프리스트
+Priest
+*/
+ MSG_JOB_PRIEST = 0x664,
+/*20171018 to latest
+위저드
+Wizard
+*/
+ MSG_JOB_WIZARD = 0x665,
+/*20171018 to latest
+블랙스미스
+Black Smith
+*/
+ MSG_JOB_BLACKSMITH = 0x666,
+/*20171018 to latest
+헌터
+Hunter
+*/
+ MSG_JOB_HUNTER = 0x667,
+/*20171018 to latest
+어새신
+Assasin
+*/
+ MSG_JOB_ASSASSIN = 0x668,
+/*20171018 to latest
+크루세이더
+Crusader
+*/
+ MSG_JOB_CRUSADER = 0x669,
+/*20171018 to latest
+몽크
+Monk
+*/
+ MSG_JOB_MONK = 0x66a,
+/*20171018 to latest
+세이지
+Sage
+*/
+ MSG_JOB_SAGE = 0x66b,
+/*20171018 to latest
+로그
+Rogue
+*/
+ MSG_JOB_ROGUE = 0x66c,
+/*20171018 to latest
+알케미스트
+Alchemist
+*/
+ MSG_JOB_ALCHEMIST = 0x66d,
+/*20171018 to latest
+바드
+Bard
+*/
+ MSG_JOB_BARD = 0x66e,
+/*20171018 to latest
+댄서
+Dancer
+*/
+ MSG_JOB_DANCER = 0x66f,
+/*20171018 to latest
+룬 나이트
+Rune Knight
+*/
+ MSG_JOB_RUNE_KNIGHT = 0x670,
+/*20171018 to latest
+워록
+Warlock
+*/
+ MSG_JOB_WARLOCK = 0x671,
+/*20171018 to latest
+레인져
+Ranger
+*/
+ MSG_JOB_RANGER = 0x672,
+/*20171018 to latest
+아크 비숍
+Arc Bishop
+*/
+ MSG_JOB_ARCHBISHOP = 0x673,
+/*20171018 to latest
+미케닉
+Mechanic
+*/
+ MSG_JOB_MECHANIC = 0x674,
+/*20171018 to latest
+길로틴 크로스
+Guillotine Cross
+*/
+ MSG_JOB_GUILLOTINE_CROSS = 0x675,
+/*20171018 to latest
+로얄가드
+Royal Guard
+*/
+ MSG_JOB_ROYAL_GUARD = 0x676,
+/*20171018 to latest
+소서러
+Sorcerer
+*/
+ MSG_JOB_SORCERER = 0x677,
+/*20171018 to latest
+민스트럴
+Minstrel
+*/
+ MSG_JOB_MINSTREL = 0x678,
+/*20171018 to latest
+원더러
+Wanderer
+*/
+ MSG_JOB_WANDERER = 0x679,
+/*20171018 to latest
+수라
+Sura
+*/
+ MSG_JOB_SURA = 0x67a,
+/*20171018 to latest
+제네릭
+Genetic
+*/
+ MSG_JOB_GENETIC = 0x67b,
+/*20171018 to latest
+쉐도우 체이서
+Shadow Chaser
+*/
+ MSG_JOB_SHADOW_CHASER = 0x67c,
+/*20171018 to latest
+소드맨 하이
+High Swordman
+*/
+ MSG_JOB_SWORDMAN_H = 0x67d,
+/*20171018 to latest
+매지션 하이
+High Magician
+*/
+ MSG_JOB_MAGICIAN_H = 0x67e,
+/*20171018 to latest
+아처 하이
+High Archer
+*/
+ MSG_JOB_ARCHER_H = 0x67f,
+/*20171018 to latest
+어콜라이트 하이
+High Acolyte
+*/
+ MSG_JOB_ACOLYTE_H = 0x680,
+/*20171018 to latest
+머첸트 하이
+High Merchant
+*/
+ MSG_JOB_MERCHANT_H = 0x681,
+/*20171018 to latest
+씨프 하이
+High Thief
+*/
+ MSG_JOB_THIEF_H = 0x682,
+/*20171018 to latest
+로드나이트
+Lord Knight
+*/
+ MSG_JOB_KNIGHT_H = 0x683,
+/*20171018 to latest
+하이프리스트
+High Priest
+*/
+ MSG_JOB_PRIEST_H = 0x684,
+/*20171018 to latest
+하이위저드
+High Wizard
+*/
+ MSG_JOB_WIZARD_H = 0x685,
+/*20171018 to latest
+화이트스미스
+White Smith
+*/
+ MSG_JOB_BLACKSMITH_H = 0x686,
+/*20171018 to latest
+스나이퍼
+Sniper
+*/
+ MSG_JOB_HUNTER_H = 0x687,
+/*20171018 to latest
+어새신크로스
+Assasin Cross
+*/
+ MSG_JOB_ASSASSIN_H = 0x688,
+/*20171018 to latest
+팔라딘
+Paladin
+*/
+ MSG_JOB_CRUSADER_H = 0x689,
+/*20171018 to latest
+챔피온
+Champion
+*/
+ MSG_JOB_MONK_H = 0x68a,
+/*20171018 to latest
+프로페서
+Professor
+*/
+ MSG_JOB_SAGE_H = 0x68b,
+/*20171018 to latest
+스토커
+Stalker
+*/
+ MSG_JOB_ROGUE_H = 0x68c,
+/*20171018 to latest
+크리에이터
+Creator
+*/
+ MSG_JOB_ALCHEMIST_H = 0x68d,
+/*20171018 to latest
+클로운
+Clown
+*/
+ MSG_JOB_BARD_H = 0x68e,
+/*20171018 to latest
+집시
+Gypsy
+*/
+ MSG_JOB_DANCER_H = 0x68f,
+/*20171018 to latest
+노비스
+Wedding
+*/
+ MSG_JOB_NOVICE = 0x690,
+/*20171018 to latest
+하이노비스
+High Novice
+*/
+ MSG_JOB_NOVICE_H = 0x691,
+/*20171018 to latest
+슈퍼노비스
+Super Novice
+*/
+ MSG_JOB_SUPERNOVICE = 0x692,
+/*20171018 to latest
+건슬링거
+Gunslinger
+*/
+ MSG_JOB_GUNSLINGER = 0x693,
+/*20171018 to latest
+닌자
+Ninja
+*/
+ MSG_JOB_NINJA = 0x694,
+/*20171018 to latest
+태권소년/소녀
+Taekwon F/M
+*/
+ MSG_JOB_TAEKWON = 0x695,
+/*20171018 to latest
+권성
+Star Gladiator
+*/
+ MSG_JOB_STAR = 0x696,
+/*20171018 to latest
+소울링커
+Soul Linker
+*/
+ MSG_JOB_LINKER = 0x697,
+/*20171018 to latest
+파티모집
+Party Recruitment
+*/
+ MSG_SEEK_PARTY_MEMBER = 0x698,
+/*20171018 to latest
+파티 모집 리스트
+Party Booking List
+*/
+ MSG_SEEK_PARTY_LIST = 0x699,
+/*20171018 to latest
+파티 모집 중
+Recruiting Party
+*/
+ MSG_SEEK_PARTY_CHECK = 0x69a,
+/*20171018 to latest
+[활]을 장착한 상태여야 합니다.
+[Bow] must be equipped.
+*/
+ MSG_FAIL_NEED_EQUIPPED_BOW = 0x69b,
+/*20171018 to latest
+[악기/채찍]을 장착한 상태여야 합니다.
+[Musical Instrument/Whip] must be equipped.
+*/
+ MSG_FAIL_NEED_EQUIPPED_INSTRUMENT_WHIP = 0x69c,
+/*20171018 to latest
+영문과 숫자만 사용가능합니다.
+Only alphanumeric characters are allowed.
+*/
+ MSG_BAD_CHAR = 0x69d,
+/*20171018 to latest
+알림
+Notice
+*/
+ MSG_ALRAM = 0x69e,
+/*20171018 to latest
+상점 정보가 정확하지 않아 아이템 구매가 실패하였습니다.
+Item purchase failed due to incorrect shop information.
+*/
+ MSG_FAIL_BUY_ITEM_INVALID_MCSTORE = 0x69f,
+/*20171018 to latest
+소지 아이템 창에서 버릴 수 있습니다.
+Item cannot be discarded from the window.
+*/
+ MSG_CAN_DROP_ITEM_TO_ITEMWND = 0x6a0,
+/*20171018 to latest
+시간
+Time
+*/
+ MSG_TIME = 0x6a1,
+/*20171018 to latest
+맵
+Map
+*/
+ MSG_MAP = 0x6a2,
+/*20171018 to latest
+거래 상태에서는 아이템 사용 및 장비 착용/해제를 할 수 없습니다.
+You can't use, equip or disarm items when you're trading.
+*/
+ MSG_CANT_USE_WHEN_OPENED_EXCHANGEWND = 0x6a3,
+/*20171018 to latest
+미지정값
+Unspecified value
+*/
+ MSG_HOTKEY_UNKOWN = 0x6a4,
+/*20171018 to latest
+/stateinfo : 상태 아이콘에 대한 설명을 보여줍니다. On Off
+/stateinfo: Shows the description of status icons. On Off
+*/
+ MSG_EXPLAIN_STATEINFO = 0x6a5,
+/*20171018 to latest
+상태 정보 On : 상태 아이콘에 대한 설명이 표시됩니다.
+Status Information On: Status icon description is enabled.
+*/
+ MSG_SHOW_STATEINFO_ON = 0x6a6,
+/*20171018 to latest
+상태 정보 Off: 상태 아이콘에 대한 설명이 표시되지 않습니다.
+Status Information Off: Status icon description is disabled.
+*/
+ MSG_SHOW_STATEINFO_OFF = 0x6a7,
+/*20171018 to latest
+같은 아이템은 한번에 %d개 이상은 살 수 없습니다.
+It is not possible to purchase the same item more than %d pieces at a time
+*/
+ MSG_LIMIT_BUY_ITEM2 = 0x6a8,
+/*20171018 to latest
+같은 아이템은 한번에 %d개 이상은 팔 수 없습니다.
+It is not possible to purchase the same item more than %d pieces at a time
+*/
+ MSG_LIMIT_SELL_ITEM = 0x6a9,
+/*20171018 to latest
+해당 아이템의 총 구매 가능 개수는 %d개 입니다.
+Can purchase upto %d pieces of the same item at a time.
+*/
+ MSG_CAN_BUY_ITEM_NUM = 0x6aa,
+/*20171018 to latest
+설정한 내용은 정상 종료 시 [%s\%s]에 저장됩니다.
+User customized key is saved to [%s\%s]
+*/
+ MSG_SAVE_HOTKEY_TO_FILE = 0x6ab,
+/*20171018 to latest
+[%s] 님은 현재 교환 신청을 받을 수 없는 상태입니다.
+[%s] is currently on trade and cannot accept the request.
+*/
+ MSG_CHARACTER_IS_BUSY = 0x6ac,
+/*20171018 to latest
+RO_HELP
+RO_HELP.
+*/
+ MSG_RO_HELP = 0x6ad,
+/*20171018 to latest
+모루가 존재 하지 않습니다.
+Anvil does not exist.
+*/
+ MSG_HAVENOT_ANVIL = 0x6ae,
+/*20171018 to latest
+노비스 레벨 10 이하는 귓속말이 금지됩니다
+Novice below level 10 is not allowed to whisper.
+*/
+ MSG_WHISPER_BLOCK_NOVICE_LEVEL10 = 0x6af,
+/*20171018 to latest
+공격
+Attack
+*/
+ MSG_JOB_ATTACKER = 0x6b0,
+/*20171018 to latest
+방어
+Defense
+*/
+ MSG_JOB_TANKER = 0x6b1,
+/*20171018 to latest
+회복
+Consumables
+*/
+ MSG_JOB_HEALER = 0x6b2,
+/*20171018 to latest
+보조
+Support
+*/
+ MSG_JOB_ASSISTANCE = 0x6b3,
+/*20171018 to latest
+파티 모집 관련 명령어
+Party recruitment related command
+*/
+ MSG_DESCRIBE_PARTY_BOOKING = 0x6b4,
+/*20171018 to latest
+길드 동맹신청이 불가능합니다
+Guild alliance application is not possible.
+*/
+ MSG_GUILD_ALLY_REQUEST_DISABLE = 0x6b5,
+/*20171018 to latest
+길드 적대신청이 불가능합니다
+Guild hostility application is not possible.
+*/
+ MSG_GUILD_HOSTILE_REQUEST_DISABLE = 0x6b6,
+/*20171018 to latest
+아지트맵에서는 친구추가가 불가능합니다
+Adding friends is not possible in this map.
+*/
+ MSG_FRIEND_ADD_FALSE_AGIT = 0x6b7,
+/*20171018 to latest
+구매노점 개설
+Buying Store Window
+*/
+ MSG_BUYINGSTORE_MAKEWND_TITLE = 0x6b8,
+/*20171018 to latest
+구매가 :
+Price:
+*/
+ MSG_BUYINGSTORE_MAKEWND_PRICE = 0x6b9,
+/*20171018 to latest
+소지액 :
+Money:
+*/
+ MSG_BUYINGSTORE_MAKEWND_MYZENY = 0x6ba,
+/*20171018 to latest
+구매 한도액
+Purchase Zeny Limit
+*/
+ MSG_BUYINGSTORE_MAKEWND_LIMITZENY = 0x6bb,
+/*20171018 to latest
+구매할 아이템을 등록하지 않았습니다. 구매하실 아이템을 등록해 주세요
+Please register the item first that has to be purchased.
+*/
+ MSG_BUYINGSTORE_MAKEWND_ADDITEM = 0x6bc,
+/*20171018 to latest
+%s 아이템의 가격을 입력해 주세요.
+Enter the price for item %s.
+*/
+ MSG_BUYINGSTORE_MAKEWND_INPUTPRICE = 0x6bd,
+/*20171018 to latest
+%s 아이템의 가격을 9999만 Zeny이하로 입력해 주세요.
+Enter the price for item %s. It has to be below 99990000 Zeny.
+*/
+ MSG_BUYINGSTORE_MAKEWND_REINPUTPRICE = 0x6be,
+/*20171018 to latest
+%s 아이템의 구매수량을 입력해 주세요.
+Enter the item number for %s.
+*/
+ MSG_BUYINGSTORE_MAKEWND_INPUTNUM = 0x6bf,
+/*20171018 to latest
+%s 아이템의 소지수량과 구매수량의 합이 9999개 이상입니다. 9999개 이하의 수량을 입력해 주세요.
+The sum of purchasing and belonging items is over 9999. The sum has to be bellow 9999.
+*/
+ MSG_BUYINGSTORE_MAKEWND_REINPUTNUM = 0x6c0,
+/*20171018 to latest
+중복된 아이템이 존재합니다.
+You have duplicate items in your purchase list.
+*/
+ MSG_BUYINGSTORE_MAKEWND_DUPLICATEITEM = 0x6c1,
+/*20171018 to latest
+제한 금액을 입력해 주세요
+Enter the limited price.
+*/
+ MSG_BUYINGSTORE_MAKEWND_INPUTLIMITZENY = 0x6c2,
+/*20171018 to latest
+입력한 제한금액이 소지금액을 초과합니다. 다시 설정해 주세요
+You have entered a greater amount of zeny than you have. Please check your zeny.
+*/
+ MSG_BUYINGSTORE_MAKEWND_REINPUTLIMITZENY = 0x6c3,
+/*20171018 to latest
+%s : %s Zeny => %s EA
+%s: %s Zeny => %s ea.
+*/
+ MSG_BUYINGSTORE_MAKEWND_ITEMLIST = 0x6c4,
+/*20171018 to latest
+구매 가능한 아이템 목록
+Available items:
+*/
+ MSG_BUYINGSTORE_MIRRORBUYITEMLIST = 0x6c5,
+/*20171018 to latest
+나의 구매노점
+Purchase list:
+*/
+ MSG_BUYINGSTORE_MYSHOPWND_TITLE = 0x6c6,
+/*20171018 to latest
+제한금액 : %s Zeny
+Price limit: %s Zeny
+*/
+ MSG_BUYINGSTORE_MYSHOPWND_LIMITZENY = 0x6c7,
+/*20171018 to latest
+%s %s Zeny %d 개
+Buying %s for %s Zeny. Amount: %d.
+*/
+ MSG_BUYINGSTORE_MYSHOPWND_ITEMINFO = 0x6c8,
+/*20171018 to latest
+구매 노점
+Wanted items
+*/
+ MSG_BUYINGSTORE_SHOPWND_TITLE = 0x6c9,
+/*20171018 to latest
+판매 가능한 아이템 목록
+Available items:
+*/
+ MSG_BUYINGSTORE_MIRRORSELLWND_TITLE = 0x6ca,
+/*20171018 to latest
+해당 아이템의 총 판매 가능 개수는 %d개 입니다.
+The max. number of items you can sell is %d.
+*/
+ MSG_BUYINGSTORE_SELLWND_LIMITNUM = 0x6cb,
+/*20171018 to latest
+구매노점의 제한금액을 초과하여 판매할 수 없습니다.
+Buyer has insufficient money, lower the amount of items you're selling.
+*/
+ MSG_BUYINGSTORE_SELLWND_LACKBUYERZENY = 0x6cc,
+/*20171018 to latest
+구매상점 개설에 실패했습니다.
+Failed to open purchase shop.
+*/
+ MSG_BUYINGSTORE_OPEN_FAILED = 0x6cd,
+/*20171018 to latest
+아이템의 총 무게가 %d 만큼 소지 한계량을 초과합니다. 다시 설정해 주세요.
+You exceed the total amount of items.
+*/
+ MSG_BUYINGSTORE_OVERWEIGHT = 0x6ce,
+/*20171018 to latest
+제한금액만큼의 아이템을 모두 구매하였습니다.
+You have purchased all items within the limited price.
+*/
+ MSG_BUYINGSTORE_TRADE_OVERLIMITZENY = 0x6cf,
+/*20171018 to latest
+아이템을 모두 구매했습니다.
+You purchased all items.
+*/
+ MSG_BUYINGSTORE_TRADE_BUYCOMPLETE = 0x6d0,
+/*20171018 to latest
+구매자의 잔액이 부족하여 거래가 실패하였습니다.
+Failed to deal because you have not enough Zeny.
+*/
+ MSG_BUYINGSTORE_TRADE_LACKBUYERZENY = 0x6d1,
+/*20171018 to latest
+%s %d개를 %dz에 판매하였습니다.
+You have sold %s. Amount: %d. Total Zeny: %dz
+*/
+ MSG_BUYINGSTORE_TRADE_SELLCOMPLETE = 0x6d2,
+/*20171018 to latest
+%s 아이템은 희망 구매갯수보다 수량이 많아 판매하지 못하였습니다
+%s item could not be sold because you do not have the wanted amount of items.
+*/
+ MSG_BUYINGSTORE_TRADE_OVERCOUNT = 0x6d3,
+/*20171018 to latest
+소환된 정령이 없습니다.
+You don't have any summoned spirits.
+*/
+ MSG_USESKILL_FAIL_EL_SUMMON = 0x6d4,
+/*20171018 to latest
+서버연합대전 제약사항 입니다.
+This is a restricted server.
+*/
+ MSG_AGAINSTSERVERSIEGEWARFARE_RESTRICTION = 0x6d5,
+/*20171018 to latest
+OTP 비밀번호는 6자리 입니다.
+OTP password is 6 digits long.
+*/
+ MSG_OTP_MUST_6_CHAR = 0x6d6,
+/*20171018 to latest
+OTP 정보가 없습니다. 관리자에게 문의하시기 바랍니다.
+OTP information is unavailable. Please contact your administrator.
+*/
+ MSG_DB_ERROR = 0x6d7,
+/*20171018 to latest
+OTP 인증에 실패 했습니다.
+OTP authentication failed.
+*/
+ MSG_OTP_FAILED = 0x6d8,
+/*20171018 to latest
+파티광고가 추가되었습니다
+Party ad has been added.
+*/
+ MSG_PARTY_BOOKING_NOTIFY = 0x6d9,
+/*20171018 to latest
+모집 중
+Recruit party members
+*/
+ MSG_PARTY_BOOKING_REQURT = 0x6da,
+/*20171018 to latest
+역할
+Roles
+*/
+ MSG_PARTY_BOOKING_TYPE = 0x6db,
+/*20171018 to latest
+1차 직업
+1st Jobs
+*/
+ MSG_PARTY_BOOKING_TYPE_1 = 0x6dc,
+/*20171018 to latest
+2차 직업
+2nd Jobs
+*/
+ MSG_PARTY_BOOKING_TYPE_2 = 0x6dd,
+/*20171018 to latest
+3-1차 직업
+3-1 Classes
+*/
+ MSG_PARTY_BOOKING_TYPE_3_1 = 0x6de,
+/*20171018 to latest
+3-2차 직업
+3-2 Classes
+*/
+ MSG_PARTY_BOOKING_TYPE_3_2 = 0x6df,
+/*20171018 to latest
+전승 1차 직업
+1st Job High
+*/
+ MSG_PARTY_BOOKING_TYPE_1PLUS = 0x6e0,
+/*20171018 to latest
+전승 2차 직업
+2nd Jobs High
+*/
+ MSG_PARTY_BOOKING_TYPE_2PLUS = 0x6e1,
+/*20171018 to latest
+기타 직업군
+Other Jobs
+*/
+ MSG_PARTY_BOOKING_TYPE_ETC = 0x6e2,
+/*20171018 to latest
+모집 하기
+Recruit
+*/
+ MSG_PARTY_BOOKING_REQURTING = 0x6e3,
+/*20171018 to latest
+파티원을 모집합니다.
+Open party recruitment window.
+*/
+ MSG_PARTY_BOOKING_REQURT_TIP = 0x6e4,
+/*20171018 to latest
+검색 중 -
+Searching -
+*/
+ MSG_PARTY_BOOKING_SEARCH = 0x6e5,
+/*20171018 to latest
+모두 선택
+Select All
+*/
+ MSG_PARTY_BOOKING_ALL_SELECT = 0x6e6,
+/*20171018 to latest
+최소한 하나의 직업이 모집 중이어야 합니다.
+Recruitment of at least one job must be running.
+*/
+ MSG_PARTY_BOOKING_ERR1 = 0x6e7,
+/*20171018 to latest
+최소 1개이상의 직업을 선택해 주셔야 합니다.
+You have to select atleast 1 or more jobs.
+*/
+ MSG_PARTY_BOOKING_ERR2 = 0x6e8,
+/*20171018 to latest
+선택된 직업은 %d개입니다. 최대 6개까지만 직업을 선택할 수 있습니다.
+You have selected %d Jobs. You can only select up to 6 different jobs.
+*/
+ MSG_PARTY_BOOKING_ERR3 = 0x6e9,
+/*20171018 to latest
+레벨에 숫자 이외의 문자는 들어갈 수 없습니다.
+Only numeric characters are allowed.
+*/
+ MSG_PARTY_BOOKING_ERR4 = 0x6ea,
+/*20171018 to latest
+레벨은 1~150 사이의 숫자를 입력해 주세요.
+Please enter levels between 1~150.
+*/
+ MSG_PARTY_BOOKING_ERR5 = 0x6eb,
+/*20171018 to latest
+ 해당 맵에서는 의상 장비가 보이지 않습니다.
+Nothing found in the selected map.
+*/
+ MSG_DISABLE_COSTUMEITEM_MAP = 0x6ec,
+/*20171018 to latest
+아이템을 착용할 수 있는 레벨이 아닙니다.
+You cannot equip this item with your current level.
+*/
+ MSG_CANNOT_EQUIP_ITEM_LEVEL = 0x6ed,
+/*20171018 to latest
+아이템을 사용할 수 있는 레벨이 아닙니다.
+You cannot use this item with your current level.
+*/
+ MSG_CANNOT_USE_ITEM_LEVEL = 0x6ee,
+/*20171018 to latest
+ 채팅모드 OnOff 활성화
+Enable Battlemode
+*/
+ MSG_CHATMODE_ONOFF = 0x6ef,
+/*20171018 to latest
+탭사이즈 크기가 초과되어 추가할 수 없습니다.
+Failed to add because you have reached the limit.
+*/
+ MSG_OVER_TABSIZE = 0x6f0,
+/*20171018 to latest
+ 창 표시 정보
+Window Sign Information
+*/
+ MSG_SET_CHATINFO = 0x6f1,
+/*20171018 to latest
+판매
+Sell
+*/
+ MSG_SELL = 0x6f2,
+/*20171018 to latest
+구매
+Purchase
+*/
+ MSG_BUY = 0x6f3,
+/*20171018 to latest
+노점 검색
+Search for Vends
+*/
+ MSG_SEARCH_STOREINFO = 0x6f4,
+/*20171018 to latest
+노점 이름
+Shop Name
+*/
+ MSG_STORE_NAME = 0x6f5,
+/*20171018 to latest
+수량
+Quantity
+*/
+ MSG_SEARCH_ITEM_COUNT = 0x6f6,
+/*20171018 to latest
+가격
+Cost
+*/
+ MSG_SEARCH_ITEM_PRICE = 0x6f7,
+/*20171018 to latest
+검색 결과가 너무 많습니다. 검색어를 자세히 입력 해 주세요.
+Too much results have been found. Please do a more precisely search.
+*/
+ MSG_SSI_FAILED_OVER_MAXCOUNT = 0x6f8,
+/*20171018 to latest
+해당 노점을 여시겠습니까?
+Do you want to open a street stall?
+*/
+ MSG_OPEN_SEARCH_STORE = 0x6f9,
+/*20171018 to latest
+SSO 인증에 실패하였습니다.
+Failed to recognize SSO.
+*/
+ MSG_SSO_FAILED = 0x6fa,
+/*20171018 to latest
+현재 해당지역으로 이동 할 수 없습니다
+Cannot move to the applied area.
+*/
+ MSG_ZONE_MOVE_FAIL = 0x6fb,
+/*20171018 to latest
+단어가 포함된 아이템 검색
+searching item including the word
+*/
+ MSG_SEARCH_INCLUDED = 0x6fc,
+/*20171018 to latest
+탈퇴한 유저입니다.
+User has been expelled.
+*/
+ MSG_WITHDREW_USERS = 0x6fd,
+/*20171018 to latest
+게임 이용에 동의하지 않았습니다.
+You have not accepted the user agreements yet.
+*/
+ MSG_DIDNOT_AGREE = 0x6fe,
+/*20171018 to latest
+존재 하지 않는 계정입니다.
+You will not be disconnect from the game.
+*/
+ MSG_ACCOUNT_DOESNOT_EXIST = 0x6ff,
+/*20171018 to latest
+본 게임은 12세 이용가입니다.
+It is available only for 12 hours.
+*/
+ MSG_AGE_RESTRICTIONS = 0x700,
+/*20171018 to latest
+계정도용 조사를 위한 블럭상태입니다.
+Your account is blocked due to illegal use of the game account.
+*/
+ MSG_ACCOUNT_BLOCK = 0x701,
+/*20171018 to latest
+버그조사를 위한 블럭상태입니다.
+Your account is blocked because there may exist a bug with your account.
+*/
+ MSG_BUG_BLOCK = 0x702,
+/*20171018 to latest
+몬스터 사냥을 통해 얻을 수 있는 Base, Job 경험치가 30분간 75% 증가합니다.
+Increases base exp and job exp gained by killing monsters up to 75% for 30 minutes.
+*/
+ MSG_PLUSEXP75 = 0x703,
+/*20171018 to latest
+몬스터 사냥을 통해 얻을 수 있는 Base, Job 경험치가 30분간 50% 증가합니다.
+Increases base exp and job exp gained by killing monsters up to 50% for 30 minutes.
+*/
+ MSG_PLUSEXP50 = 0x704,
+/*20171018 to latest
+판매(구매) 정보가 없습니다.
+No sales information.
+*/
+ MSG_FAIL_OPEN_STORE = 0x705,
+/*20171018 to latest
+더 이상 검색 할 수 없습니다.
+Failed to search any further.
+*/
+ MSG_SSI_FAILED_SEARCH_CNT = 0x706,
+/*20171018 to latest
+해당 아이템 명은 존재하지 않습니다.
+The item you have entered does not exist.
+*/
+ MSG_SSI_FAILED_ITEM_DOES_NOT_EXIST = 0x707,
+/*20171018 to latest
+아직 검색 할 수 없습니다.
+Cannot search yet.
+*/
+ MSG_SSI_FAILED_LIMIT_SERACH_TIME = 0x708,
+/*20171018 to latest
+카드 이름 또는 접두사(접미사)를 입력하세요
+Enter the card name or prefix/suffix.
+*/
+ MSG_SSI_TOOLTIP_OF_SERACHING_THE_CARD = 0x709,
+/*20171018 to latest
+남은 검색 횟수 : %d
+Searches left: %d
+*/
+ MSG_SSI_REST_OF_NUMBER_OF_SEARCHES = 0x70a,
+/*20171018 to latest
+검색 된 노점이 없습니다.
+No result has been found.
+*/
+ MSG_SSI_FAILED_SEARCH_STORE = 0x70b,
+/*20171018 to latest
+아이템 가격 범위가 잘못되었습니다.
+The item price is too high.
+*/
+ MSG_SSI_FAILED_PRICE_ISNOT_VALID = 0x70c,
+/*20171018 to latest
+일반 장비
+Normal Gear
+*/
+ MSG_GENERAL_EQUIPMENT = 0x70d,
+/*20171018 to latest
+의상 장비
+Costume
+*/
+ MSG_COSTUME_EQUIPMENT = 0x70e,
+/*20171018 to latest
+분
+minute
+*/
+ MSG_MINUTE = 0x70f,
+/*20171018 to latest
+초
+second
+*/
+ MSG_SECOND = 0x710,
+/*20171018 to latest
+아이템 명을 입력해 주세요.
+Please enter the name of the item.
+*/
+ MSG_SSI_FAILED_ENTER_THE_NAME_OF_ITEM = 0x711,
+/*20171018 to latest
+해당 아이템 명은 존재하지 않습니다.
+The item you have entered does not exist.
+*/
+ MSG_SSI_FAILED_NAME_OF_ITEM_DOES_NOT_EXIST = 0x712,
+/*20171018 to latest
+진입가능한 맵이 존재하지 않습니다.
+The map is not available.
+*/
+ MSG_NOT_EXIST_ENTRYMAP = 0x713,
+/*20171018 to latest
+해당 카드 이름이나 접두사(접미사)는 존재하지 않습니다.
+The selected name or prefix/suffix does not exist.
+*/
+ MSG_SSI_FAILED_NAME_OF_CARD_DOES_NOT_EXIST = 0x714,
+/*20171018 to latest
+ 한번에 구매 가능 종류는 10개입니다.
+You can purchase up to 10 items.
+*/
+ MSG_CASH_FAILED_TOTAL_CNT = 0x715,
+/*20171018 to latest
+ 일부 아이템의 구매가 실패하였습니다.
+Some items could not be purchased.
+*/
+ MSG_CASH_FAILED_BUY_SOME = 0x716,
+/*20171018 to latest
+생년월일 6자리를 입력하세요.(예시:801122)
+Enter your 6-digit DOB(YYMMDD) (e.g: 801122)
+*/
+ MSG_ENTER_PEOPLE_BIRTH = 0x717,
+/*20171018 to latest
+알 수 없는 오류가 발생하였습니다.
+Now Logging Out.
+*/
+ MSG_RESULT_FAIL_UNKNOWN = 0x718,
+/*20171018 to latest
+데이타 베이스 오류가 발생하였습니다.
+A database error has occurred.
+*/
+ MSG_RESULT_FAIL_DATABASE = 0x719,
+/*20171018 to latest
+캐릭터를 삭제하기 위해서는 길드에서 탈퇴 해야 합니다.
+Please leave your guild first in order to remove your character.
+*/
+ MSG_RESULT_FAIL_GUILD = 0x71a,
+/*20171018 to latest
+캐릭터를 삭제하기 위해서는 파티에서 탈퇴 해야 합니다.
+Please leave your party first in order to remove your character.
+*/
+ MSG_RESULT_FAIL_PARTY = 0x71b,
+/*20171018 to latest
+시스템 설정으로 인해 삭제할 수 없습니다.
+You cannot delete this character because the delete time has not expired yet.
+*/
+ MSG_RESULT_FAIL_CONFIGURATION = 0x71c,
+/*20171018 to latest
+아직 삭제 가능 시간이 아닙니다.
+You cannot delete this character at the moment.
+*/
+ MSG_RESULT_FAIL_DATE = 0x71d,
+/*20171018 to latest
+생년월일이 일치하지 않습니다.
+Your entered birthday does not match.
+*/
+ MSG_RESULT_FAIL_BIRTH = 0x71e,
+/*20171018 to latest
+친밀도가 부족합니다.
+You lack of familiarity.
+*/
+ MSG_USESKILL_FAIL_RELATIONGRADE = 0x71f,
+/*20171018 to latest
+스타일체인지 파이터 상태에서만 사용가능합니다.
+This is only available on style change for fighting classes.
+*/
+ MSG_USESKILL_FAIL_STYLE_CHANGE_FIGHTER = 0x720,
+/*20171018 to latest
+스타일체인지 그래플러 상태에서만 사용가능합니다.
+This is only available on style change for novice.
+*/
+ MSG_USESKILL_FAIL_STYLE_CHANGE_GRAPPLER = 0x721,
+/*20171018 to latest
+파티등록실패
+Party Registration failed.
+*/
+ MSG_PARTY_REGISTRATION_FAILED = 0x722,
+/*20171018 to latest
+검색된 조건의 리스트가 없습니다.
+results have been found.
+*/
+ MSG_PARTY_SEARCH_FAILED = 0x723,
+/*20171018 to latest
+광고삭제에 실패했습니다.
+Failed to remove result.
+*/
+ MSG_PARTY_AD_DELETE_FAILED = 0x724,
+/*20171018 to latest
+조건에 맞는 광고가 없어 실패했습니다.
+No results have been found.
+*/
+ MSG_PARTY_NOT_EXIST_AD = 0x725,
+/*20171018 to latest
+결제 정보가 없습니다.
+No payment information has been found.
+*/
+ MSG_REFUSE_SSO_NOT_PAY_USER = 0x726,
+/*20171018 to latest
+교환 시 스크린샷 찍기
+Screenshot Trade
+*/
+ MSG_SCREENSHOT_FOR_EXCHANGE = 0x727,
+/*20171018 to latest
+[거래_%s]
+[Trade_%s]
+*/
+ MSG_SCREENSHOT_FOR_EXCHANGE_CHARNAME = 0x728,
+/*20171018 to 20180131
+사망으로 인해 신생명보험서가 자동 소비되었습니다
+20180207 to latest
+사망 시 소지한 아이템으로 경험치 손실을 막았습니다.
+Death due to the auto insurance young people are spending.
+*/
+ MSG_NOTIFY_NEO_INSURANCE_ITEM_USE = 0x729,
+/*20171018 to latest
+대화
+Chat Dialog
+*/
+ MSG_TALK = 0x72a,
+/*20171018 to latest
+중복사용이 불가능합니다.
+Redundant is not available.
+*/
+ MSG_MACRO_DUPLICATE = 0x72b,
+/*20171018 to latest
+사용제한이 걸려있습니다.
+Use the limit that has been set.
+*/
+ MSG_MACRO_POSTDELAY = 0x72c,
+/*20171018 to latest
+현재 사용제한이 걸려 있지 않습니다.
+No user restrictions are set.
+*/
+ MSG_MACRO_NOT_POSTDELAY = 0x72d,
+/*20171018 to latest
+예기치 못한 사유로 인해 접속이 실패하였습니다. 관리자에게 문의해 주시기 바랍니다.
+Connection has failed. Please contact your administrator.
+*/
+ MSG_SSO_ERROR_MSG = 0x72e,
+/*20171018 to latest
+접속 정보 인증 실패하였습니다.
+Failed to authenticate.
+*/
+ MSG_REFUSE_SSO_AUTH_INVALID_TOKEN = 0x72f,
+/*20171018 to latest
+가입하지 않은 사용자입니다.
+User is offline.
+*/
+ MSG_REFUSE_SSO_AUTH_INVALID_USER = 0x730,
+/*20171018 to latest
+나이제한 때문에 이계정으로 이서버에 접속할 수 없습니다.
+The age limit from commandment tables cannot connect to this server.
+*/
+ MSG_REFUSE_SSO_AUTH_INVALID_AGE = 0x731,
+/*20171018 to latest
+구매하기
+Buy
+*/
+ MSG_NC_BUY = 0x732,
+/*20171018 to latest
+장바구니 비우기
+Cancel.
+*/
+ MSG_NC_BLANK = 0x733,
+/*20171018 to latest
+첫 페이지
+First page
+*/
+ MSG_NC_FIRSTPAGE = 0x734,
+/*20171018 to latest
+마지막 페이지
+Last page
+*/
+ MSG_NC_LASTPAGE = 0x735,
+/*20171018 to latest
+신규
+New
+*/
+ MSG_NC_CAT1 = 0x736,
+/*20171018 to latest
+인기
+Headgears
+*/
+ MSG_NC_CAT2 = 0x737,
+/*20171018 to latest
+한정
+Limited
+*/
+ MSG_NC_CAT3 = 0x738,
+/*20171018 to latest
+임대장비
+Rental Items
+*/
+ MSG_NC_CAT4 = 0x739,
+/*20171018 to latest
+영구장비
+Equipments
+*/
+ MSG_NC_CAT5 = 0x73a,
+/*20171018 to latest
+버프
+Scrolls
+*/
+ MSG_NC_CAT6 = 0x73b,
+/*20171018 to latest
+회복
+Consumables
+*/
+ MSG_NC_CAT7 = 0x73c,
+/*20171018 to latest
+기타
+Other
+*/
+ MSG_NC_CAT8 = 0x73d,
+/*20171018 to latest
+가격
+Cost
+*/
+ MSG_NC_COST = 0x73e,
+/*20171018 to latest
+수량
+Quantity
+*/
+ MSG_NC_NUM = 0x73f,
+/*20171018 to latest
+개
+Total
+*/
+ MSG_NC_COUNT = 0x740,
+/*20171018 to latest
+무료 캐시 : %s C
+Free Cash: %s C
+*/
+ MSG_NC_FREECASH = 0x741,
+/*20171018 to latest
+소지 캐시 : %s C
+CashPoints: %s C
+*/
+ MSG_NC_CASH = 0x742,
+/*20171018 to latest
+이 지역에서는 몬스터 소환이 불가능합니다.
+You cannot summon a monster in this area.
+*/
+ MSG_CALLMONSTER_FAIL_AREA = 0x743,
+/*20171018 to latest
+무료캐시 사용량이 전체 금액을 초과하고있습니다
+Exceeded total free cash
+*/
+ MSG_BUY_CASH_FAIL2 = 0x744,
+/*20171018 to latest
+ 설정한 내용이 [SaveData_ExMacro%d]에 저장됩니다.
+%d seconds left until you can use
+*/
+ MSG_MACRO_SAVE_DATA = 0x745,
+/*20171018 to latest
+약 %d 초 후에 사용할 수 있습니다
+Content has been saved in [SaveData_ExMacro%d]
+*/
+ MSG_ITEM_REUSE_LIMIT_SECOND = 0x746,
+/*20171018 to latest
+[창]을 장착한 상태여야 합니다.
+~ [Windows] must be equipped with.
+*/
+ MSG_FAIL_NEED_EQUIPPED_SPEAR = 0x747,
+/*20171018 to latest
+드래곤 탑승시에만 사용가능합니다.
+Available only on the dragon.
+*/
+ MSG_USESKILL_FAIL_DRAGON = 0x748,
+/*20171018 to latest
+본 서버에 접속할 수 있는 정원이 초과되어 진입이 불가능 합니다.
+Unable to proceed due to exceeding capacity.
+*/
+ MSG_OVER_CONNECT_USER = 0x749,
+/*20171018 to latest
+실명 인증이 되지 않았습니다. 실명인증 사이트로 이동합니다
+Real name has not been verified. Go to name verification site.
+*/
+ MSG_AUTHENTICATE = 0x74a,
+/*20171018 to latest
+저장 할 슬롯을 선택 해 주세요
+Please select slot you are going to save.
+*/
+ MSG_SELECT_SAVESLOT = 0x74b,
+/*20171018 to latest
+%s, 축하드립니다. '%s' 를 얻으셨습니다!
+Congratulation %s, Acquired '%s' !
+*/
+ MSG_BROADCASTING_SPECIAL_ITEM_OBTAIN2 = 0x74c,
+/*20171018 to latest
+그루미상태에서는 사용할 수 없습니다
+Unable to use in gloomy state
+*/
+ MSG_NOTUSE_GROOMY = 0x74d,
+/*20171018 to latest
+구매물품의 합계금액이 케릭터가 소지할 수 있는 최대 금액을 초과하였습니다
+Purchased products has exceeded the total price.
+*/
+ MSG_BUYINGSTORE_OVERFLOW_MONEY = 0x74e,
+/*20171018 to latest
+현재 맵에서는 파티 가입이 불가능합니다.
+Cannot join a party in this map.
+*/
+ MSG_PREVENT_PARTY_JOIN = 0x74f,
+/*20171018 to latest
+현재 맵에서는 파티 탈퇴가 불가능합니다.
+Cannot leave a party in this map.
+*/
+ MSG_PREVENT_PARTY_LEAVE = 0x750,
+/*20171018 to latest
+현재 맵에서는 파티 추방이 불가능합니다.
+Cannot withdraw/break the party in this map.
+*/
+ MSG_PREVENT_PARTY_EXPEL = 0x751,
+/*20171018 to latest
+실제 성명
+Real Name
+*/
+ MSG_SDO_REALNAME = 0x752,
+/*20171018 to latest
+신분증 번호
+ID Number
+*/
+ MSG_SDO_ID_NUMBER = 0x753,
+/*20171018 to latest
+이메일
+E-mail
+*/
+ MSG_SDO_EMAIL = 0x754,
+/*20171018 to latest
+입력이 올바르지 않습니다
+Invalid input
+*/
+ MSG_SDO_WRONG_VALUE = 0x755,
+/*20171018 to latest
+상대 캐릭터가 최대 보유제니량을 초과하여 거래가 불가능합니다.
+Failed to send the zeny
+*/
+ MSG_MCSTORE_FAIL_SELLER_MONEY_GIVE = 0x756,
+/*20171018 to latest
+해당 직업이 아닙니다.
+This is not a relevant job
+*/
+ MSG_INVALID_CLASS = 0x757,
+/*20171018 to latest
+해당 성별이 아닙니다.
+This is not a relevant gender
+*/
+ MSG_INVALID_GENDER = 0x758,
+/*20171018 to latest
+유저님의 정보가 인증에 성공했습니다.
+User information identification was successful.
+*/
+ MSG_SUCCESS_AUTHENTICATE = 0x759,
+/*20171018 to latest
+이름이 일치하지 않습니다. 재작성 해주세요.
+Name does not match. Please retry.
+*/
+ MSG_INVALID_REALNAME = 0x75a,
+/*20171018 to latest
+신분증 번호가 일치하지 않습니다. 재작성 해주세요.
+ID number does not match. Please retry.
+*/
+ MSG_INVALID_IDNUMBER = 0x75b,
+/*20171018 to latest
+현재 서비스에 이상이 있으니 잠시 후 재시도 해주세요.
+Service is currently unavailable. Please try again later.
+*/
+ MSG_INVALID_AUTHENTICATE = 0x75c,
+/*20171018 to latest
+ 탑승 상태에서는 공격을 할 수 없습니다.
+Unable to attack while riding.
+*/
+ MSG_CANNOT_ATTACK_IN_RIDING_STATE = 0x75d,
+/*20171018 to latest
+ 탑승 상태에서는 스킬 시전을 할 수 없습니다.
+Unable to cast the skill while riding.
+*/
+ MSG_CANNOT_USE_SKILL_IN_RIDING_STATE = 0x75e,
+/*20171018 to latest
+비밀번호는 4자리이하여야만 합니다.
+Pin number should be 4~6 characters.
+*/
+ MSG_STORE_PASSWORD_4_6 = 0x75f,
+/*20171018 to latest
+보안 인증에 성공했습니다.
+Secured authentication is successful.
+*/
+ MSG_SECOND_PASSWORD_LOGIN_SUCCESS = 0x760,
+/*20171018 to latest
+보안 패스워드의 생성에 성공했습니다.
+Succeeded in creating 2nd password.
+*/
+ MSG_SECOND_PASSWORD_MAKE_SUCCESS = 0x761,
+/*20171018 to latest
+보안 패스워드를 삭제했습니다.
+2nd password has been deleted.
+*/
+ MSG_SECOND_PASSWORD_DEL_SUCCESS = 0x762,
+/*20171018 to latest
+보안 패스워드를 수정했습니다.
+2nd password has been corrected.
+*/
+ MSG_SECOND_PASSWORD_EDIT_SUCCESS = 0x763,
+/*20171018 to latest
+잘못된 패스워드입니다.(%d회남음)
+Password is incorrect.
+*/
+ MSG_SECOND_PASSWORD_LOGIN_FAILED = 0x764,
+/*20171018 to latest
+보안 패스워드의 생성에 실패했습니다.
+Failed to create 2nd password.
+*/
+ MSG_SECOND_PASSWORD_MAKE_FAILED = 0x765,
+/*20171018 to latest
+보안 패스워드 삭제에 실패했습니다.
+Failed to delete 2nd password.
+*/
+ MSG_SECOND_PASSWORD_DEL_FAILED = 0x766,
+/*20171018 to latest
+보안 패스워드의 수정에 실패했습니다.
+Failed to correct 2nd password.
+*/
+ MSG_SECOND_PASSWORD_EDIT_FAILED = 0x767,
+/*20171018 to latest
+입력하신패스워드는 사용하실수없습니다.
+Unable to use restricted number in 2nd password.
+*/
+ MSG_SECOND_PASSWORD_EDIT_RESTRICT_PW = 0x768,
+/*20171018 to latest
+주민등록번호는 사용할수없습니다.
+Unable to use your KSSN number.
+*/
+ MSG_SECOND_PASSWORD_EDIT_PERSONALNUM_PW = 0x769,
+/*20171018 to latest
+이미 패스워드가 존재합니다.
+~There is already a password.
+*/
+ MSG_SECOND_PASSWORD_MAKE_DUPLICATED_PW = 0x76a,
+/*20171018 to latest
+보안 패스워드
+Security Code
+*/
+ MSG_SECOND_PASSWORD = 0x76b,
+/*20171018 to latest
+계정보안을 위하여 추가적인 패스워드 설정을 권장합니다.
+Account for the additional password security settings are recommended.
+*/
+ MSG_SECOND_PASSWORD_INPUT = 0x76c,
+/*20171018 to latest
+보안 패스워드 사용을 하지 않습니다.
+Do not use secure password.
+*/
+ MSG_SECOND_PASSWDRD_NOT_AVAILABLE_SUCCESS = 0x76d,
+/*20171018 to latest
+보안 패스워드 사용설정에 실패했습니다.
+Use the set security password failed.
+*/
+ MSG_SECOND_PASSWDRD_NOT_AVAILABLE_FAILED = 0x76e,
+/*20171018 to latest
+보안 패스워드를 사용합니다. 다음로그인부터 적용됩니다.
+Use secure passwords. Will be applied to your next login.
+*/
+ MSG_SECOND_PASSWDRD_AVAILABLE_SUCCESS = 0x76f,
+/*20171018 to latest
+보안 패스워드 사용 설정에 실패했습니다.
+Use the set security password failed.
+*/
+ MSG_SECOND_PASSWDRD_AVAILABLE_FAILED = 0x770,
+/*20171018 to latest
+계정보안을 위하여 추가적인 패스워드를 설정합니다.
+Added to the security of your account password is set.
+*/
+ MSG_SECOND_PASSWORD_INFO_1 = 0x771,
+/*20171018 to latest
+아래의 숫자버튼을 마우스를 이용하여 4자리를 클릭하세요.
+Use the mouse to enter the 4-digit password below.
+*/
+ MSG_SECOND_PASSWORD_INFO_2 = 0x772,
+/*20171018 to latest
+3회이상 잘못된패스워드 입력으로, 종료됩니다.
+Typing an incorrect password 3 times will shut down the client.
+*/
+ MSG_SECOND_PASSWORD_INFO_3 = 0x773,
+/*20171018 to latest
+ITEM
+*/
+ MSG_MACRO_ITEM = 0x774,
+/*20171018 to latest
+SKILL
+*/
+ MSG_MACRO_SKILL = 0x775,
+/*20171018 to latest
+TACTIC
+*/
+ MSG_MACRO_TACTIC = 0x776,
+/*20171018 to latest
+ETC
+*/
+ MSG_MACRO_ETC = 0x777,
+/*20171018 to latest
+COMBAT
+*/
+ MSG_MACRO_COMBAT = 0x778,
+/*20171018 to latest
+NON-COMBAT
+*/
+ MSG_MACRO_NON_COMBAT = 0x779,
+/*20171018 to latest
+BUFF
+*/
+ MSG_MACRO_BUFF = 0x77a,
+/*20171018 to latest
+AUTO EQUIPED
+*/
+ MSG_MACRO_AUTO_EQUIPED = 0x77b,
+/*20171018 to latest
+1st. ATTACK
+*/
+ MSG_MACRO_1ST_ATTACK = 0x77c,
+/*20171018 to latest
+ATTACK
+*/
+ MSG_MACRO_ATTACK = 0x77d,
+/*20171018 to latest
+Next attack time :
+Next attack time:
+*/
+ MSG_MACRO_NEXT_ATK_TIME = 0x77e,
+/*20171018 to latest
+When died
+*/
+ MSG_MACRO_WHEN_DIED = 0x77f,
+/*20171018 to latest
+When invited to a party
+*/
+ MSG_MACRO_WHEN_INVITED_PARTY = 0x780,
+/*20171018 to latest
+Pickup Item
+*/
+ MSG_MACRO_PICKUP_ITEM = 0x781,
+/*20171018 to latest
+Over 85% Weight
+*/
+ MSG_MACRO_OVERWEIGHT = 0x782,
+/*20171018 to latest
+진행중이던 작업(NPC대화,제조...)을 종료후에 다시 시도하세요.
+Any work in progress (NPC dialog, manufacturing ...) quit and try again.
+*/
+ MSG_BUSY = 0x783,
+/*20171018 to latest
+ 몬스터 사냥을 통해 얻을 수 있는 Job경험치가 %d분간 %.2f배로 증가합니다.
+Monster Job hunting experience that you can get through the doubling of %d is %.2f minutes.
+*/
+ MSG_PLUSONLYJOBEXP2 = 0x784,
+/*20171018 to latest
+SaveData_ExMacro%d
+SaveData_ExMacro %d
+*/
+ MSG_MACRO_SAVE = 0x785,
+/*20171018 to latest
+ 설정한 내용이 [%s]에 저장됩니다.
+Settings for [%s] are stored in.
+*/
+ MSG_MACRO_SAVE_DATA2 = 0x786,
+/*20171018 to latest
+보안레벨
+Security level
+*/
+ MSG_SECOND_PASSWORD_LEVEL = 0x787,
+/*20171018 to latest
+현재 캐릭터는 파티 또는 길드에 가입되어 있어서 삭제가 불가능합니다.
+The current character is a party or join the guild can not be deleted.
+*/
+ MSG_RESULT_FAIL_CHAR_DELETE = 0x788,
+/*20171018 to latest
+벽이나 물체 근처에서만 사용 할 수 있습니다.
+Objects can be used only near the wall.
+*/
+ MSG_USESKILL_FAIL_NEER_WALL = 0x789,
+/*20171018 to latest
+%s : 레벨 %d %s 파티구합니다.
+%s: Level %d %s party to obtain level.
+*/
+ MSG_SEEK_PARTY_SET = 0x78a,
+/*20171018 to latest
+탑승 중인 상태에서는 고삐 아이템을 사용할 수 없습니다.
+While boarding reins is not available for items.
+*/
+ MSG_FAIELD_RIDING_OVERLAPPED = 0x78b,
+/*20171018 to latest
+이 스킬은 1%의 경험치가 필요합니다.
+This skill requires 1% experience.
+*/
+ MSG_USESKILL_FAIL_NEED_EXP_1PERCENT = 0x78c,
+/*20171018 to latest
+경 험 치 :
+Experience value:
+*/
+ MSG_EXP_MSG = 0x78d,
+/*20171018 to latest
+드 롭 율 :
+Drop rate:
+*/
+ MSG_DROP_MSG = 0x78e,
+/*20171018 to latest
+사망페널티 :
+Death Penalty:
+*/
+ MSG_DEATH_MSG = 0x78f,
+/*20171018 to latest
+%d%% (PC방 %d%% + TPLUS %d%% + 프리미엄 %d%% + %s서버 %d%%)
+%d%% (PCroom %d%% + TPLUS %d%% + Premium %d%% + %s Server %d%%)
+*/
+ MSG_BASIC_EXP_MSG = 0x790,
+/*20171018 to latest
+ 합창스킬을 시전할 파티원의 SP량이 부족합니다.
+Amount of party members to cast the skill Chorus SP is low.
+*/
+ MSG_USESKILL_FAIL_CHORUS_SP_INSUFFICIENT = 0x791,
+/*20171018 to latest
+상대 캐릭터의 소지 아이템 종류의 한계량 초과로 거래가 불가능합니다.
+Relative character that has possession of the items can not trade because amount is exceeded.
+*/
+ MSG_CHARACTER_IS_OVER_COUNT = 0x792,
+/*20171018 to latest
+상대 캐릭터의 해당 아이템의 소지 한계량 초과로 거래가 불가능합니다.
+Relative character that has possession of the item amount which exceeds makes it impossible to trade.
+*/
+ MSG_CHARACTER_IS_EACHITEM_OVER_COUNT = 0x793,
+/*20171018 to latest
+해당 아이템의 소지 한계량 초과로 구입이 불가능합니다.
+Amounts are exceeded the possession of the item is not available for purchase.
+*/
+ MSG_PURCHASE_FAIL_EACHITEM_COUNT = 0x794,
+/*20171018 to latest
+광고 등록 대기중입니다.
+Advertising is pending registration.
+*/
+ MSG_PARTY_FAILED_TIMEOUT = 0x795,
+/*20171018 to latest
+아래의 파일과 텍스트내용을 함께
+라그나로크 공식홈페이지 -> 고객센터 -> 문의하기를
+이용하여 보내주시기 바랍니다.
+With the following files and text content Ragnarok Official Website -> Support -> Contact Us to submit your comments by:
+*/
+ MSG_UNEXCEPTION_MSG1ST = 0x796,
+/*20171018 to latest
+빌링시스템에 오류가 발생햇습니다(%d)
+Has caused an error in billing system(%d)
+*/
+ MSG_INGAMBA_BILLING_ZSVR_ERROR = 0x797,
+/*20171018 to latest
+룬 아이템 소유 개수가 초과 되어 구매가 실패 하였습니다.
+Failed purchase of runes, items exceed the maximum number that can be held.
+*/
+ MSG_CASH_FAILED_RUNE_OVERCOUNT = 0x798,
+/*20171018 to latest
+개별 아이템 개수가 초과 되어 구매가 실패 하였습니다.
+Exceeded the number of individual items, purchase failed.
+*/
+ MSG_CASH_FAILED_EACHITEM_OVERCOUNT = 0x799,
+/*20171018 to latest
+알 수 없는 오류가 발생하여 구매가 실패 하였습니다.
+Purchase failed due to an unknown error.
+*/
+ MSG_CASH_FAILED_UNKOWN = 0x79a,
+/*20171018 to latest
+잠시 후 다시 시도해 주십시오.
+Please try again later.
+*/
+ MSG_CASH_FAILED_BUSY = 0x79b,
+/*20171018 to latest
+ 쿠나이 아이템을 장착 한 상태에서만 사용 가능합니다.
+Kunai must be equipped to use this skill.
+*/
+ MSG_USESKILL_FAIL_NEED_EQUIPMENT_KUNAI = 0x79c,
+/*20171018 to latest
+모집할 최소레벨값을 입력해주세요.
+Please enter the value of the minimum level to be recruited.
+*/
+ MSG_SEEK_PARTY_LEVEL_HELP = 0x79d,
+/*20171018 to latest
+존다기획사NPC 에게 아이템이 수령이 불가능합니다. 소지창의 여유공간을 확보해주세요.
+Jonda agency receipt of the item to the NPC is not possible. Gaining possession of the free space of the window.
+*/
+ MSG_FAILED_GET_ITEM_FROM_ZONEDA = 0x79e,
+/*20171018 to latest
+이 스킬은 공성전에서만 사용 가능합니다.
+This skill is only available in the siege.
+*/
+ MSG_USESKILL_FAIL_SIZE = 0x79f,
+/*20171018 to latest
+이 스킬은 플레이어에게만 사용 가능합니다.
+This skill is available only to the player.
+*/
+ MSG_USESKILL_FAIL_TOTARGET_PLAYER = 0x7a0,
+/*20171018 to latest
+착용이 금지 된 상태로 착용 할 수 없습니다.
+Forbidden to wear the state can not be worn.
+*/
+ MSG_CAN_NOT_EQUIP_ITEM_FORBID = 0x7a1,
+/*20171018 to latest
+현재 위치에서는 상점 및 채팅방의 생성이 불가능합니다.
+Current location of the shop and chat room creation is disabled.
+*/
+ MSG_USESKILL_FAIL_THERE_ARE_NPC_AROUND = 0x7a2,
+/*20171018 to latest
+Elapsed time: %d:%d:%d / %d:%d:%d
+*/
+ MSG_REPLAY_ELAPSEDTIME = 0x7a3,
+/*20171018 to latest
+Speed : X 1/4
+Speed: X 1/4
+*/
+ MSG_REPLAY_SPEED1_4 = 0x7a4,
+/*20171018 to latest
+Speed : X 1/2
+Speed: X 1/2
+*/
+ MSG_REPLAY_SPEED1_2 = 0x7a5,
+/*20171018 to latest
+Speed : X 1
+Speed: X 1
+*/
+ MSG_REPLAY_SPEED1 = 0x7a6,
+/*20171018 to latest
+Speed : X 2
+Speed: X 2
+*/
+ MSG_REPLAY_SPEED2 = 0x7a7,
+/*20171018 to latest
+Speed : X 4
+Speed: X 4
+*/
+ MSG_REPLAY_SPEED4 = 0x7a8,
+/*20171018 to latest
+Speed : X 8
+Speed: X 8
+*/
+ MSG_REPLAY_SPEED8 = 0x7a9,
+/*20171018 to latest
+Speed : X 16
+Speed: X 16
+*/
+ MSG_REPLAY_SPEED16 = 0x7aa,
+/*20171018 to latest
+Speed : 알수없음
+Speed: Unknown
+*/
+ MSG_REPLAY_SPEEDUNKNOWN = 0x7ab,
+/*20171018 to latest
+Service Info : %s
+Service Info: %s
+*/
+ MSG_REPLAY_CHRVICEINFO = 0x7ac,
+/*20171018 to latest
+Character Name : %s
+Character Name: %s
+*/
+ MSG_REPLAY_CHARACTERNAME = 0x7ad,
+/*20171018 to latest
+Map Name : %s
+Map Name: %s
+*/
+ MSG_REPLAY_MAPNAME = 0x7ae,
+/*20171018 to latest
+Record Time: %d-%01d-%01d %d: %02d: %02d
+*/
+ MSG_REPLAY_RECORDTIME = 0x7af,
+/*20171018 to latest
+Play Time: %02d: %02d: %02d
+*/
+ MSG_REPLAY_PLAYTIME = 0x7b0,
+/*20171018 to latest
+No Replay File.
+*/
+ MSG_REPLAY_NOREPLAYFILE = 0x7b1,
+/*20171018 to latest
+Server No Matching
+*/
+ MSG_REPLAY_SERVERNOMATCH = 0x7b2,
+/*20171018 to latest
+Replay Option Setting
+*/
+ MSG_REPLAY_REPLAYOPTIONSETTING = 0x7b3,
+/*20171018 to latest
+파일 이름을 입력하세요.
+Enter File Name
+*/
+ MSG_REPLAY_ENTERTHEFILENAME = 0x7b4,
+/*20171018 to latest
+Set Replay Save Data
+*/
+ MSG_REPLAY_SETREPLAYSAVEDATA = 0x7b5,
+/*20171018 to latest
+Set Rec Option
+*/
+ MSG_REPLAY_SETRECOPTION = 0x7b6,
+/*20171018 to latest
+%.1f %% Pos☞:%d:%d:%d
+%.1f % Pos->:%d:%d:%d
+*/
+ MSG_REPLAY_GAGEPOS1 = 0x7b7,
+/*20171018 to latest
+%.1f %% Pos☞:이동불가
+%.1f % Pos->:cannot move
+*/
+ MSG_REPLAY_GAGEPOS2 = 0x7b8,
+/*20171018 to latest
+Start
+*/
+ MSG_REPLAY_START = 0x7b9,
+/*20171018 to latest
+Stop
+*/
+ MSG_REPLAY_STOP = 0x7ba,
+/*20171018 to latest
+Input FileName -> Start
+*/
+ MSG_REPLAY_START2 = 0x7bb,
+/*20171018 to latest
+Open Option
+*/
+ MSG_REPLAY_OPENOPTION = 0x7bc,
+/*20171018 to latest
+Close Option
+*/
+ MSG_REPLAY_CLOSEOPION = 0x7bd,
+/*20171018 to latest
+End
+*/
+ MSG_REPLAY_END = 0x7be,
+/*20171018 to latest
+Time
+*/
+ MSG_REPLAY_TIME = 0x7bf,
+/*20171018 to latest
+파티&친구
+Party & Friends
+*/
+ MSG_REPLAY_PARTYFRIEND = 0x7c0,
+/*20171018 to latest
+채팅
+Chat
+*/
+ MSG_REPLAY_CHAT = 0x7c1,
+/*20171018 to latest
+단축키
+Shortcuts
+*/
+ MSG_REPLAY_SHORTCUTS = 0x7c2,
+/*20171018 to latest
+자동 파일명 생성
+Automatic filename generation
+*/
+ MSG_REPLAY_AUTOMATICFILENAME = 0x7c3,
+/*20171018 to latest
+파일 중복 채크
+Checking for duplicate files
+*/
+ MSG_REPLAY_CHECKINGFILE = 0x7c4,
+/*20171018 to latest
+동일한 파일이 존재 합니다.
+The same file exists already.
+*/
+ MSG_REPLAY_THESAMEFILEEXISTS = 0x7c5,
+/*20171018 to latest
+Record Start
+*/
+ MSG_REPLAY_RECORDSTART = 0x7c6,
+/*20171018 to latest
+ is Saved.
+*/
+ MSG_REPLAY_RECORDEND = 0x7c7,
+/*20171018 to latest
+Weight : %3d / %3d
+Weight: %3d / %3d
+*/
+ MSG_WEIGHT = 0x7c8,
+/*20171018 to latest
+Total : %s C
+Total: %s C
+*/
+ MSG_TOTAL = 0x7c9,
+/*20171018 to latest
+[수리검]을 장착한 상태여야 합니다.
+[Shuriken] must be equipped.
+*/
+ MSG_FAIL_NEED_EQUIPPED_SYURIKEN = 0x7ca,
+/*20171018 to latest
+Base Lv. %d
+*/
+ MSG__BASIC_MSG_BASE = 0x7cb,
+/*20171018 to latest
+Job Lv. %d
+*/
+ MSG__BASIC_MSG_JOB = 0x7cc,
+/*20171018 to latest
+Zeny : %s
+Zeny: %s
+*/
+ MSG_BASIC_MSG_ZENY = 0x7cd,
+/*20171018 to latest
+Trilinear
+*/
+ MSG_GRAPHIC_MSG_TRILINEAR = 0x7ce,
+/*20171018 to latest
+attack
+*/
+ MSG_GRAPHIC_MSG_ATTACK = 0x7cf,
+/*20171018 to latest
+skill
+*/
+ MSG_GRAPHIC_MSG_SKILL = 0x7d0,
+/*20171018 to latest
+item
+*/
+ MSG_GRAPHIC_MSG_ITEM = 0x7d1,
+/*20171018 to latest
+NoCtrl
+*/
+ MSG_GRAPHIC_MSG_NOCTRL = 0x7d2,
+/*20171018 to latest
+전장
+More
+*/
+ MSG_GRAPHIC_MSG_BATTLE = 0x7d3,
+/*20171018 to latest
+(Character/Total Slot)
+*/
+ MSG_CHARACTER_MSG_CHARACTERTOTALSLOT = 0x7d4,
+/*20171018 to latest
+Premium Service
+VIP Service
+*/
+ MSG_CHARACTER_MSG_PREMIUMSERVICE = 0x7d5,
+/*20171018 to latest
+Premium
+VIP
+*/
+ MSG_CHARACTER_MSG_PREMIUM = 0x7d6,
+/*20171018 to latest
+Service
+*/
+ MSG_CHARACTER_MSG_SERVICE = 0x7d7,
+/*20171018 to latest
+Billing Service
+VIP
+*/
+ MSG_CHARACTER_MSG_BILLINGSERVICE = 0x7d8,
+/*20171018 to latest
+Billing
+VIP
+*/
+ MSG_CHARACTER_MSG_BILLING = 0x7d9,
+/*20171018 to latest
+Command List
+*/
+ MSG_MSG_COMMANDLIST = 0x7da,
+/*20171018 to latest
+LEVEL
+*/
+ MSG_SEEK_PARTY_LEVEL = 0x7db,
+/*20171018 to latest
+MAP
+*/
+ MSG_SEEK_PARTY_MAP = 0x7dc,
+/*20171018 to latest
+JOB
+*/
+ MSG_SEEK_PARTY_JOB = 0x7dd,
+/*20171018 to latest
+Not Available
+*/
+ MSG_MSG_NOTAVAILABLE = 0x7de,
+/*20171018 to latest
+[수호 천사의 보호] 만렙일 경우 사용할 수 없습니다.
+[Protection of Guardian Angel] You can't use it when you reach the highest level.
+*/
+ MSG_MSG_SUPERNOVICE_CHOPOKGI_CAPPEDLEVEL = 0x7df,
+/*20171018 to latest
+정말 이동하시겠습니까?
+Do you really want to move?
+*/
+ MSG_CHANGE_CHARACTER_SLOT = 0x7e0,
+/*20171018 to latest
+캐릭터 슬롯 이동에 실패했습니다.
+Failed to move Char slot.
+*/
+ MSG_CHANGE_CHARACTER_SLOT_FAILED = 0x7e1,
+/*20171018 to latest
+캐릭터 이름이 잘못 되었습니다.
+Character name is invalid.
+*/
+ MSG_CHARACTERNAME_ERROR = 0x7e2,
+/*20171018 to latest
+퀘스트보기창
+Show Quest
+*/
+ MSG_QUEST_DISPLAY_ONOFF = 0x7e3,
+/*20171018 to latest
+ 청소년 보호법에 따라, 잠시 후 0시 부터 6시 까지 만 16세 미만 고객님들의 게임 이용이 제한됩니다.
+Depending on the protection of youth, and 0:00 to 6:00 while under the age of 16 of your game use is limited.
+*/
+ MSG_SHUTDOWN_ALERT_MSG = 0x7e4,
+/*20171018 to latest
+청소년 보호법에 따라, 0시 부터 6시 까지 ^ff0000만 16세 미만 고객님들의 게임 이용이 제한^000000되며, 게임을 종료합니다.
+Depending on the protection of youth, 0:00 to 6:00 ^ff0000 under the age of 16 ^000000 limit your use of the game and the game ends.
+*/
+ MSG_BAN_SHUTDOWN_TEENAGER = 0x7e5,
+/*20171018 to latest
+캐릭터 이름을 변경하기 위해서는 길드에서 탈퇴 해야 합니다.
+In order to change the character name, you must leave the guild.
+*/
+ MSG_FAILED_RENAME_BELONGS_TO_GUILD = 0x7e6,
+/*20171018 to latest
+캐릭터 이름을 변경하기 위해서는 파티에서 탈퇴 해야 합니다.
+In order to change the character name, you must leave the party.
+*/
+ MSG_FAILED_RENAME_BELONGS_TO_PARTY = 0x7e7,
+/*20171018 to latest
+알 수 없는 오류로 캐릭터 이름 변경이 실패 하였습니다.
+Character name change failed, due an unknown error.
+*/
+ MSG_FAILED_RENAME_UNKOWN = 0x7e8,
+/*20171018 to latest
+이미 캐릭터 슬롯변경이 가능한 상태입니다.(%d)
+Ready to change character slot in.(%d)
+*/
+ MSG_CHARSLOT_CHANGE_DUPLICATE = 0x7e9,
+/*20171018 to latest
+이미 캐릭터 이름변경이 가능한 상태입니다.(%d)
+Ready to change character name in.(%d)
+*/
+ MSG_CHARNAME_CHANGE_DUPLICATE = 0x7ea,
+/*20171018 to latest
+변경하려는 이름의 길이가 최대크기를 초과하여 캐릭터 이름 변경이 실패 하였습니다.
+Length exceeds the maximum size of the character name you want to change.
+*/
+ MSG_FAILED_RENAME_OVER_LENGTH = 0x7eb,
+/*20171018 to latest
+사용할 수 없는 단어가 포함되어 캐릭터 이름 변경이 실패 하였습니다.
+Name contains invalid characters. Character name change failed.
+*/
+ MSG_FAILED_RENAME_PREVENTNAM = 0x7ec,
+/*20171018 to latest
+이름 변경이 금지된 상태이므로 캐릭터 이름 변경이 실패 하였습니다.
+The name change is prohibited. Character name change failed.
+*/
+ MSG_FAILED_RENAME_FORBIDDEN = 0x7ed,
+/*20171018 to latest
+완료
+Complete
+*/
+ MSG_COMPLETE_HUNTING_QUEST = 0x7ee,
+/*20171018 to latest
+ %d분간 얻을 수 있는 경험치가 %d%% 증가합니다.
+During %d minutes your Exp will increase by %d%%.
+*/
+ MSG_PLUSEXP_VALUE = 0x7ef,
+/*20171018 to latest
+소환까지 %02d초남았습니다.
+%02d seconds left until summon.
+*/
+ MSG_PARTY_RECALL_TIME = 0x7f0,
+/*20171018 to latest
+파티장이 당신을 %s (%s) 로 소환합니다.소환시 %d zeny가 소모됩니다.
+Your party leader summons you to %s (%s). Warp costs %d Zeny.
+*/
+ MSG_PARTY_RECALL_INFO = 0x7f1,
+/*20171018 to latest
+소환대상
+Summon target
+*/
+ MSG_RECALL_TARGET = 0x7f2,
+/*20171018 to latest
+차단목록
+Block List
+*/
+ MSG_PARTY_BLACKLIST = 0x7f3,
+/*20171018 to latest
+파티 광고를 등록하기 위해 %d제니가 소모됩니다.
+%d Zeny will be spent for making party ad.
+*/
+ MSG_PARTY_CF_PAY = 0x7f4,
+/*20171018 to latest
+파티 광고를 하기 위한 제니가 부족합니다.
+Insufficient Zeny for making party ad.
+*/
+ MSG_PARTY_CF_PAY_SHORTAGE_COST = 0x7f5,
+/*20171018 to latest
+)님 파티 가입승인
+) party: accept invitation
+*/
+ MSG_PARTY_ADD_OK = 0x7f6,
+/*20171018 to latest
+)님 파티 가입거부
+) party: decline invitation
+*/
+ MSG_PARTY_ADD_REFUSES = 0x7f7,
+/*20171018 to latest
+)님 장비창보기
+) party: show equipment window
+*/
+ MSG_PARTY_ITEM_VIEW = 0x7f8,
+/*20171018 to latest
+한글18글자,영문36글자 입력가능
+Up to 36 english letters can be entered
+*/
+ MSG_SEEK_PARTY_MEMO_HELP = 0x7f9,
+/*20171018 to latest
+지원하기
+Enter
+*/
+ MSG_PARTY_REQUEST = 0x7fa,
+/*20171018 to latest
+1:1대화하기
+1:1 Chat
+*/
+ MSG_DIRECT_CHAT = 0x7fb,
+/*20171018 to latest
+차단하기
+Block
+*/
+ MSG_ADD_BLACKLIST = 0x7fc,
+/*20171018 to latest
+파티장에게 소환되기 위한 제니가 부족합니다.
+Insufficient Zeny for recall.
+*/
+ MSG_PARTY_RECRUIT_NOT_RECALL_PAY = 0x7fd,
+/*20171018 to latest
+메모란에 파티광고를 써주세요.
+Input your party ad.
+*/
+ MSG_PARTY_RECRUIT_MEMO_ERROR = 0x7fe,
+/*20171018 to latest
+파티장만이 파티광고를 등록할수있습니다.
+Only party leader can register party ad.
+*/
+ MSG_PARTY_RECRUIT_ERROR = 0x7ff,
+/*20171018 to latest
+이미 지원한 파티광고입니다.
+You have already accepted this ad.
+*/
+ MSG_PARTY_REFUSE_ERROR = 0x800,
+/*20171018 to latest
+내용
+For
+*/
+ MSG_PARTY_RECRUIT_INFO = 0x801,
+/*20171018 to latest
+장비
+E
+*/
+ MSG_INVENTORY_TABNAME_1 = 0x802,
+/*20171018 to latest
+개인
+F
+*/
+ MSG_INVENTORY_TABNAME_3 = 0x803,
+/*20171018 to latest
+ 아이템 버리기 잠금
+ Drop Lock: On/Off
+*/
+ MSG_ITEM_DROP_LOCK = 0x804,
+/*20171018 to latest
+파티원 찾기 알람
+Party Alarm
+*/
+ MSG_PARTY_RECRUIT_ALRAM = 0x805,
+/*20171018 to latest
+파티결성
+Create Party
+*/
+ MSG_CREATE_PARTY = 0x806,
+/*20171018 to latest
+파티탈퇴
+Leave Party
+*/
+ MSG_WITHDRAW_PARTY = 0x807,
+/*20171018 to latest
+파티초대
+Party Invitation
+*/
+ MSG_INVITE_PARTY = 0x808,
+/*20171018 to latest
+파티 이름 등록
+Party Name:
+*/
+ MSG_PUT_PARTY_NAME_IN = 0x809,
+/*20171018 to latest
+초대할 캐릭터 이름
+Player Name:
+*/
+ MSG_PUT_PLAYER_NAME_IN = 0x80a,
+/*20171018 to latest
+님께 파티가입 요청을 보냈습니다.
+ has recieved an invitation to join your party.
+*/
+ MSG_CHARACTER_PARTY_INVITATION_TO_JOIN = 0x80b,
+/*20171018 to latest
+님께서 파티가입을 거절했습니다.
+ rejected your party invitation.
+*/
+ MSG_CHARACTER_REJECT_PARTY_INVITATION = 0x80c,
+/*20171018 to latest
+님께서 파티가입을 수락했습니다.
+ accepted your party invitation.
+*/
+ MSG_CHARACTER_ACCEPT_PARTY_INVITATION = 0x80d,
+/*20171018 to latest
+이미 파티모집중입니다.
+Recruitment is already a party.
+*/
+ MSG_PARTY_RECRUIT_ERROR1 = 0x80e,
+/*20171018 to latest
+이전 검색과 같은 조건입니다.
+Same conditions such as the previous search.
+*/
+ MSG_PARTY_RECRUIT_ERROR2 = 0x80f,
+/*20171018 to latest
+길드 탈퇴 후 사용 가능합니다.
+Guild after withdrwal.
+*/
+ MSG_CHARNAME_CHANGE_FILED_GUILDMEMBER = 0x810,
+/*20171018 to latest
+파티 탈퇴 후 사용 가능합니다.
+Party after secession.
+*/
+ MSG_CHARNAME_CHANGE_FILED_PARTYMEMBER = 0x811,
+/*20171018 to latest
+소환 유저가 소환이 안되는 맵에 있습니다.
+The player can not be summoned to this map.
+*/
+ MSG_PARTY_RECRUIT_RECALL_ERR1 = 0x812,
+/*20171018 to latest
+현재 파티장이 있는 맵에서는 소환이 안됩니다.
+Party Leader is on a map that is restricted to summon players.
+*/
+ MSG_PARTY_RECRUIT_RECALL_ERR2 = 0x813,
+/*20171018 to latest
+소환거부되었습니다.
+Summon has been denied.
+*/
+ MSG_PARTY_RECRUIT_RECALL_ERR3 = 0x814,
+/*20171018 to latest
+소환을 할 수 없습니다.
+Can not be summoned.
+*/
+ MSG_PARTY_RECRUIT_RECALL_ERR4 = 0x815,
+/*20171018 to latest
+파티초대는 파티장만 가능합니다.
+Only the leader can invite.
+*/
+ MSG_YOU_ARE_NOT_PARTYMASTER = 0x816,
+/*20171018 to latest
+검색할 아이템명 입력 :
+Search item:
+*/
+ MSG_NC_ITEM_SEARCH = 0x817,
+/*20171018 to latest
+캐릭터명을 입력하셔야 합니다.
+You must enter a character name.
+*/
+ MSG_PLEASE_PUT_CHARACTER_NAME_IN = 0x818,
+/*20171018 to latest
+파티이름을 입력하셔야 합니다.
+You must enter the name of the party.
+*/
+ MSG_PLEASE_PUT_PARTY_NAME_IN = 0x819,
+/*20171018 to latest
+길드 도우미
+Guild Creation Window
+*/
+ MSG_GUILD_HELPER = 0x81a,
+/*20171018 to latest
+가입되어 있는 길드가 없습니다.
+Join a guild or start your own!
+*/
+ MSG_NO_GUILD_CURRENTLY_PARTICIPATED_IN = 0x81b,
+/*20171018 to latest
+길드 결성
+Create Guild
+*/
+ MSG_CREATE_GUILD = 0x81c,
+/*20171018 to latest
+생성할 길드 이름
+Guild Name
+*/
+ MIS_PUT_GUILD_NAME_IN = 0x81d,
+/*20171018 to latest
+길드 결성 도움말
+Guild System
+*/
+ MIS_GUILD_TIP = 0x81e,
+/*20171018 to latest
+길드 시스템이란
+What is the guild system
+*/
+ MIS_GUILD_SYSTEM = 0x81f,
+/*20171018 to latest
+길드이름을 입력하셔야 합니다.
+You must enter the name of your guild.
+*/
+ MSG_PLEASE_PUT_GUILD_NAME_IN = 0x820,
+/*20171018 to latest
+지원한 파티에서 거부당했습니다.
+Supported at the party was rejected.
+*/
+ MSG_PARTY_RECRUIT_REFUSE_VOLUNTEER = 0x821,
+/*20171018 to latest
+서비스 선택.
+Select Service:
+*/
+ MSG_SERVICESELECT = 0x822,
+/*20171018 to latest
+탈출 가능한 지역.
+Possible escape area.
+*/
+ MSG_SHOW_MAPNAMETITLE = 0x823,
+/*20171018 to latest
+Replay File List
+*/
+ MSG_REPLAY_STR_REPLAYFILELIST = 0x824,
+/*20171018 to latest
+File info
+*/
+ MSG_REPLAY_STR_FILEINFO = 0x825,
+/*20171018 to latest
+File List
+*/
+ MSG_REPLAY_STR_FILELIST = 0x826,
+/*20171018 to latest
+%s 아이템은 거래가 불가능 합니다.
+%s Item deal not possible.
+*/
+ MSG_NOT_MOVEABLE_TRADE = 0x827,
+/*20171018 to latest
+길드해체
+Disband the Guild
+*/
+ MSG_GUILD_DISBAND = 0x828,
+/*20171018 to latest
+해체할 길드 이름
+Enter Guild Name
+*/
+ MSG_PUT_DISBAND_GUILDNAME = 0x829,
+/*20171018 to latest
+접속하지 않았거나 존재하지 않는 캐릭터입니다.
+The character is not online or does not exist.
+*/
+ MSG_JOINGUILD_NOTEXIST_USER = 0x82a,
+/*20171018 to latest
+팔콘 호출에 실패하였습니다.
+Failed to call Falcon.
+*/
+ MSG_FAILED_SET_EFFECT_BIRD = 0x82b,
+/*20171018 to latest
+%d%% ( 기본 100%% + 프리미엄 %d%% + %s서버 %d%% )
+%d%%(default 100%%+ Premium%d%%+%s Server%d%%)
+*/
+ MSG_BASIC_EXP_MSG_BRZ = 0x82c,
+/*20171018 to latest
+해당 유저는 현재 공성전에 참가하고 있습니다.
+This user is currently participating in the siege.
+*/
+ MSG_JOINGUILD_TARGET_USER_IN_SIEGEMAP = 0x82d,
+/*20171018 to latest
+동일한 맵에서만 파티장 변경이 가능합니다.
+It is only possible to change the party leader while on the same map.
+*/
+ MSG_PARTY_MASTER_CHANGE_SAME_MAP = 0x82e,
+/*20171018 to latest
+현재 지역에서는 파티장 변경이 불가능합니다.
+In the current region it is not possible to change the party.
+*/
+ MSG_CANNOT_PARTY_MASTER_CHANGE_IN_MAP = 0x82f,
+/*20171018 to latest
+그리폰 내리기
+Gryphon making
+*/
+ MSG_ROYAL_CHIKENOFF = 0x830,
+/*20171018 to latest
+%d월 %d일 %d시 %d분 %d초
+Delete: %d/%d - %d:%d:%d
+*/
+ MSG_TIME_TYPE3 = 0x831,
+/*20171018 to latest
+현재 공성전에 참여 중이므로 길드초대를 하실 수 없습니다.
+You can't invite characters in WoE maps.
+*/
+ MSG_JOINGUILD_REQ_USER_IN_SIEGEMAP = 0x832,
+/*20171018 to latest
+전장에 입장 대기를 신청하셨습니다.
+You are now in the battlefield queue.
+*/
+ MSG_BATTLEFIELD_MSG_REQUEST_JOINWAIT = 0x833,
+/*20171018 to latest
+인원이 가득 찼습니다.
+Queuing has finished.
+*/
+ MSG_BATTLEFIELD_MSG_FULL = 0x834,
+/*20171018 to latest
+확인되지 않은 전장명입니다.
+Invalid name of the battlefield.
+*/
+ MSG_BATTLEFIELD_MSG_UNKNOWN_NAME = 0x835,
+/*20171018 to latest
+확인되지 않은 신청타입입니다.
+Invalid type of application.
+*/
+ MSG_BATTLEFIELD_MSG_UNKNOWN_TYPE = 0x836,
+/*20171018 to latest
+최대 인원을 초과하였습니다.
+People count exceeded.
+*/
+ MSG_BATTLEFIELD_MSG_MAXOVER = 0x837,
+/*20171018 to latest
+입장 레벨이 맞지 않습니다.
+Your level doesn't fit this battlefield rules.
+*/
+ MSG_BATTLEFIELD_MSG_JOIN_NOTLEVEL = 0x838,
+/*20171018 to latest
+중복 신청하셨습니다.
+Duplicate application.
+*/
+ MSG_BATTLEFIELD_MSG_JOIN_OVERLAP = 0x839,
+/*20171018 to latest
+재접속후 다시 신청하여 주시기 바랍니다.
+After reconnecting, please re-apply.
+*/
+ MSG_BATTLEFIELD_MSG_RESTART = 0x83a,
+/*20171018 to latest
+직업이 맞지 않습니다.
+Your class can't participate in this battlefield.
+*/
+ MSG_BATTLEFIELD_MSG_NOTJOB = 0x83b,
+/*20171018 to latest
+파티장이나 길드장만이 신청할 수 있습니다.
+Only party leader / guild master can apply.
+*/
+ MSG_BATTLEFIELD_MSG_JOIN_ONLYBOSS = 0x83c,
+/*20171018 to latest
+전장을 이용 중인 팀원이 있어 신청이 불가능 합니다.
+You can't apply while your team member is already on a battlefield.
+*/
+ MSG_BATTLEFIELD_MSG_BUSY_PARTYMEMBER = 0x83d,
+/*20171018 to latest
+전장 입장 대기가 취소되었습니다.
+You have left the battlefield queue.
+*/
+ MSG_BATTLEFIELD_MSG_CANCEL_JOINWAIT = 0x83e,
+/*20171018 to latest
+잘못된 전장명 입니다.
+Wrong battlefield name.
+*/
+ MSG_BATTLEFIELD_MSG_WRONG_NAME = 0x83f,
+/*20171018 to latest
+전장 입장 대기 순위에 없습니다.
+You are not in the battlefield queue list
+*/
+ MSG_BATTLEFIELD_MSG_NOTRANK = 0x840,
+/*20171018 to latest
+선택하신 전장은 현재 이용하실 수 없으므로 대기가 취소됩니다.
+The selected arena is unavailable; your application has been cancelled
+*/
+ MSG_BATTLEFIELD_MSG_FAIL_CHOICE = 0x841,
+/*20171018 to latest
+전장 입장을 취소하였습니다.
+You have left the queue
+*/
+ MSG_BATTLEFIELD_MSG_CANCEL_JOIN = 0x842,
+/*20171018 to latest
+전장에 입장하시겠습니까?
+Are you sure you want to join a battleground?
+*/
+ MSG_BATTLEFIELD_MSG_DOYOU_JOIN = 0x843,
+/*20171018 to latest
+전장 입장 신청 시스템
+[Battlefield application rules]
+*/
+ MSG_BATTLEFIELD_HELP1 = 0x844,
+/*20171018 to latest
+입장 신청 및 전장으로의 공간이동 불가 상황
+Application and position into the battlefield cannot be applied under this circumtances
+*/
+ MSG_BATTLEFIELD_HELP2 = 0x845,
+/*20171018 to latest
+1. 여러 종류의 전장을 동시에 신청할 수 없습니다.
+1. Different types of battle can not be applied simultaneously.
+*/
+ MSG_BATTLEFIELD_HELP3 = 0x846,
+/*20171018 to latest
+2. 개인 / 파티 / 길드 전장을 동시에 신청할 수 없습니다.
+2. Personal / party / guild battle can not be applied simultaneously.
+*/
+ MSG_BATTLEFIELD_HELP4 = 0x847,
+/*20171018 to latest
+3. 파티 전장 신청은 파티장만 신청할 수 있으며,
+3. Parties can only be applied by their party leaders.
+*/
+ MSG_BATTLEFIELD_HELP5 = 0x848,
+/*20171018 to latest
+오프라인중이거나 오프라인 된 파티원은 대기열에서 누락됩니다.
+Offline party members won't proceed to the queue.
+*/
+ MSG_BATTLEFIELD_HELP6 = 0x849,
+/*20171018 to latest
+4. 전장 신청은 전장 맵을 제외한 모든 곳에서 신청 가능하나,
+4. You can add request to enter the arena from any map except for those who don't allow teleport/warp.
+*/
+ MSG_BATTLEFIELD_HELP7 = 0x84a,
+/*20171018 to latest
+입장한 위치가 마을, 필드, 일반 던전이 아닐 경우 복귀 시 캐릭터 저장 좌표로 이동 됩니다.
+When the battle is finished your character will be returned to the current spot or (if it's not possible) to the save point.
+*/
+ MSG_BATTLEFIELD_HELP8 = 0x84b,
+/*20171018 to latest
+5. 전장의 보상 및 기타 서비스는 각 마을에 위치한 전장 모병관을 통해 전장 대기실에서 이용해 주십시오.
+5. You can view and choose rewards in the arena waiting room.
+*/
+ MSG_BATTLEFIELD_HELP9 = 0x84c,
+/*20171018 to latest
+전장 입장 신청 도움말
+Request help battle position
+*/
+ MSG_BATTLEFIELD_HELP10 = 0x84d,
+/*20171018 to latest
+%s 전장이 시작됩니다.
+%s battle begins.
+*/
+ MSG_BATTLEFIELD_START = 0x84e,
+/*20171018 to latest
+전장으로 이동하시겠습니까?
+Do you want to enter the arena?
+*/
+ MSG_BATTLEFIELD_DOYOU_MOVE = 0x84f,
+/*20171018 to latest
+[주의]
+[Note]
+*/
+ MSG_BATTLEFIELD_WARNINGMSG1 = 0x850,
+/*20171018 to latest
+현재 위치가 마을, 필드 혹은 일반던전이
+When the battle is finished your character will
+*/
+ MSG_BATTLEFIELD_WARNINGMSG2 = 0x851,
+/*20171018 to latest
+아닐 경우 전장 종료 후 저장된 위치로
+be returned to the current spot or (if it's not
+*/
+ MSG_BATTLEFIELD_WARNINGMSG3 = 0x852,
+/*20171018 to latest
+되돌아가게 됩니다.
+possible) to the save point.
+*/
+ MSG_BATTLEFIELD_WARNINGMSG4 = 0x853,
+/*20171018 to latest
+다른 이의 요청 결과를 기다리고 있습니다.
+Waiting for the opponents.
+*/
+ MSG_BATTLEFIELD_WAIT_PLAYER = 0x854,
+/*20171018 to latest
+전장 입장 요청
+Battlefield position request
+*/
+ MSG_BATTLEFIELD_REQUEST_JOIN = 0x855,
+/*20171018 to latest
+수락대기시간:%d초
+Accept standby time:%d seconds
+*/
+ MSG_BATTLEFIELD_WAITTIME_D = 0x856,
+/*20171018 to latest
+입장 대기 상태
+Standby position
+*/
+ MSG_BATTLEFIELD_STATE_JOINWAIT = 0x857,
+/*20171018 to latest
+전장 명칭: %s
+Battlefield name:%s
+*/
+ MSG_BATTLEFIELD_NAME_S = 0x858,
+/*20171018 to latest
+전장 필요 인원: %d
+Persons required:%d
+*/
+ MSG_BATTLEFIELD_MEMBER_D = 0x859,
+/*20171018 to latest
+내 대기순번: %d
+Your position:%d
+*/
+ MSG_BATTLEFIELD_MYRANK_D = 0x85a,
+/*20171018 to latest
+명칭 :
+Name:
+*/
+ MSG_BATTLEFIELD_DP_TITLE = 0x85b,
+/*20171018 to latest
+목표 :
+Goal:
+*/
+ MSG_BATTLEFIELD_DP_AIM = 0x85c,
+/*20171018 to latest
+전장의 인원 구성 :
+Format:
+*/
+ MSG_BATTLEFIELD_DP_MEMBER = 0x85d,
+/*20171018 to latest
+참여조건 :
+Level:
+*/
+ MSG_BATTLEFIELD_DP_REQUIRED = 0x85e,
+/*20171018 to latest
+보상(승) :
+Win:
+*/
+ MSG_BATTLEFIELD_DP_WIN = 0x85f,
+/*20171018 to latest
+보상(무) :
+Draw:
+*/
+ MSG_BATTLEFIELD_DP_DRAW = 0x860,
+/*20171018 to latest
+보상(패) :
+Loss:
+*/
+ MSG_BATTLEFIELD_DP_LOSS = 0x861,
+/*20171018 to latest
+전장을 개인으로 신청 하셨습니다. 맞습니까?
+Do you want to participate in the individuals battle?
+*/
+ MSG_BATTLEFIELD_DOYOU_SINGLE = 0x862,
+/*20171018 to latest
+전장을 파티로 신청 하셨습니다. 맞습니까?
+Do you want to participate in the parties battle?
+*/
+ MSG_BATTLEFIELD_DOYOU_PALTY = 0x863,
+/*20171018 to latest
+전장을 길드로 신청 하셨습니다. 맞습니까?
+Do you want to participate in the guilds battle?
+*/
+ MSG_BATTLEFIELD_DOYOU_GUILD = 0x864,
+/*20171018 to latest
+전장 목록
+Battleground List
+*/
+ MSG_BATTLEFIELD_LIST2 = 0x865,
+/*20171018 to latest
+%d VS %d
+*/
+ MSG_BATTLEFIELD_D_VS_D = 0x866,
+/*20171018 to latest
+Base LV %d 이하
+LV %d and lower
+*/
+ MSG_BATTLEFIELD_LEVELDOWN_D = 0x867,
+/*20171018 to latest
+Base LV %d 이상
+LV %d and higher
+*/
+ MSG_BATTLEFIELD_LEVELUP_D = 0x868,
+/*20171018 to latest
+Base LV %d ~ %d
+LV %d ~ %d
+*/
+ MSG_BATTLEFIELD_LEVEL_D_D = 0x869,
+/*20171018 to latest
+제한 없음
+No restrictions
+*/
+ MSG_BATTLEFIELD_LIMITLESS = 0x86a,
+/*20171018 to latest
+[해당 맵에서는 신청하실 수 없습니다.]
+[You can't apply on this map.]
+*/
+ MSG_BATTLEFIELD_MSG_NOT_JOINMAP = 0x86b,
+/*20171018 to latest
+[전장 재신청까지 약 1분의 대기시간을 필요로 합니다.]
+[You must wait about 1 minute to apply.]
+*/
+ MSG_BATTLEFIELD_MSG_WAIT_1MM = 0x86c,
+/*20171018 to latest
+[파티에 먼저 가입하셔야 합니다.]
+[You must be in a party.]
+*/
+ MSG_BATTLEFIELD_MSG_PLZ_PALTYJOIN = 0x86d,
+/*20171018 to latest
+[파티장만 신청 가능합니다.]
+[Only party leader can apply.]
+*/
+ MSG_BATTLEFIELD_MSG_NOT_PALTYBOSS = 0x86e,
+/*20171018 to latest
+[접속되어있는 파티인원수가 많습니다.]
+[Too many party members online.]
+*/
+ MSG_BATTLEFIELD_MSG_OVER_PARTYMEMBER = 0x86f,
+/*20171018 to latest
+[길드에 먼저 가입하셔야 합니다.]
+[You must be in a guild.]
+*/
+ MSG_BATTLEFIELD_MSG_PLZ_GUILDJOIN = 0x870,
+/*20171018 to latest
+[길드장만 신청 가능합니다.]
+[Only guild master can apply.]
+*/
+ MSG_BATTLEFIELD_MSG_NOT_GUILDBOSS = 0x871,
+/*20171018 to latest
+[접속되어있는 길드인원수가 많습니다.]
+[Too many guild members online.]
+*/
+ MSG_BATTLEFIELD_MSG_OVER_GUILDMEMBER = 0x872,
+/*20171018 to latest
+이동예약
+Moving Book
+*/
+ MSG_RESERVE_CHANGE_CHARACTER_SLOT = 0x873,
+/*20171018 to latest
+이동
+Move
+*/
+ MSG_CHARACTER_SLOT_CHANGE = 0x874,
+/*20171018 to latest
+이름변경
+Rename
+*/
+ MSG_CHANGE_CHARACTER_NAME = 0x875,
+/*20171018 to latest
+Make Character
+*/
+ MSG_MSG_MAKECHARCTER = 0x876,
+/*20171018 to latest
+http://ro.game.gnjoy.com/
+*/
+ MSG_UAE_URL = 0x877,
+/*20171018 to latest
+(%s) Server
+*/
+ MSG_UAE_SERVERSTR = 0x878,
+/*20171018 to latest
+아이템 병합(모두선택 Ctrl+클릭)
+Item Merge
+*/
+ MSG_MERGE_ITEM = 0x879,
+/*20171018 to latest
+같은 종류의 아이템을 2개 이상 선택해주세요.
+Two or more of the same type. Please select an item.
+*/
+ MSG_SELECT_ITEM_TO_MERGE = 0x87a,
+/*20171018 to latest
+아이템 합치기에 성공했습니다.
+Item merge is successful.
+*/
+ MSG_MERGE_ITEM_SUCCESS = 0x87b,
+/*20171018 to latest
+아이템 합치기는 한번에 1종류씩만 가능합니다.
+Combining items will be only one kind at a time.
+*/
+ MSG_MERGE_ITEM_FAILED_NOT_MERGE = 0x87c,
+/*20171018 to latest
+아이템의 개수가 30000개 초과 했습니다.
+You cannot have more than 30,000 stacked items.
+*/
+ MSG_MERGE_ITEM_FAILED_MAX_COUNT = 0x87d,
+/*20171018 to latest
+좌로 회전
+Rotate left
+*/
+ MSG_CHARACTER_LEFT_ROLL = 0x87e,
+/*20171018 to latest
+우로 회전
+Rotate right
+*/
+ MSG_CHARACTER_RIGHT_ROLL = 0x87f,
+/*20171018 to latest
+(%s)님의 이전서버 정보보기
+(%s) to view the old server information
+*/
+ MSG_VIEW_BEFORE_WORLDINFO = 0x880,
+/*20171018 to latest
+기존 서버 정보
+Existing server information
+*/
+ MSG_VIEW_BEFORE_WORLDINFO_TITLE = 0x881,
+/*20171018 to latest
+^ff0000기존 서버 : ^0000ff
+^ff0000Existing server: ^0000ff
+*/
+ MSG_VIEW_BEFORE_SERVERINFO = 0x882,
+/*20171018 to latest
+^ff0000기존 캐릭명 : ^0000ff
+^ff0000Existing character: ^0000ff
+*/
+ MSG_VIEW_BEFORE_CHARNAME = 0x883,
+/*20171018 to latest
+공격한 몬스터의 HP가 표시됩니다.
+Show monster HP bar when attacking.
+*/
+ MSG_MONSTER_HP_ON = 0x884,
+/*20171018 to latest
+공격한 몬스터의 HP가 표시되지 않습니다.
+Hide monster HP bar when attacking.
+*/
+ MSG_MONSTER_HP_OFF = 0x885,
+/*20171018 to latest
+병합 가능한 아이템이 존재하지 않습니다
+Merge does not exist as an item
+*/
+ MSG_MERGE_ITEM_FAILED_NOT_EXIST = 0x886,
+/*20171018 to latest
+병합 가능한 아이템이 존재하지 않습니다.
+Merge items available does not exist.
+*/
+ MSG_NOT_EXIST_MERGE_ITEM = 0x887,
+/*20171018 to latest
+진행중
+Act
+*/
+ MSG_QUESTUI_TAB_PROCESS = 0x888,
+/*20171018 to latest
+보류중
+Pen
+*/
+ MSG_QUESTUI_TAB_HOLD = 0x889,
+/*20171018 to latest
+추천
+Rec
+*/
+ MSG_QUESTUI_TAB_BEST = 0x88a,
+/*20171018 to latest
+에피소드
+Episode
+*/
+ MSG_QUESTUI_TAB_EPISODE = 0x88b,
+/*20171018 to latest
+로컬
+Loc
+*/
+ MSG_QUESTUI_TAB_LOCAL = 0x88c,
+/*20171018 to latest
+이벤트
+Evt
+*/
+ MSG_QUESTUI_TAB_EVENT = 0x88d,
+/*20171018 to latest
+신규
+New
+*/
+ MSG_QUESTUI_TAB_NEW = 0x88e,
+/*20171018 to latest
+사냥몬스터
+Monsters to kill
+*/
+ MSG_QUESTUI_HUNTMONSTER = 0x88f,
+/*20171018 to latest
+보상아이템
+Rewards
+*/
+ MSG_QUESTUI_REWARDITEM = 0x890,
+/*20171018 to latest
+필요아이템
+Required Items
+*/
+ MSG_QUESTUI_NEEDITEM = 0x891,
+/*20171018 to latest
+제한시간
+Time Limit
+*/
+ MSG_QUESTUI_TIMELIMIT = 0x892,
+/*20171018 to latest
+마감시간
+Deadline
+*/
+ MSG_QUESTUI_CLOSINGTIME = 0x893,
+/*20171018 to latest
+검색
+Search
+*/
+ MSG_NAVIGATION_SEARCH = 0x894,
+/*20171018 to latest
+목표로 안내
+Navigation
+*/
+ MSG_NAVIGATION_TARGETGO = 0x895,
+/*20171018 to latest
+길 정보
+Back to Navigation
+*/
+ MSG_NAVIGATION_ROUTEINFO = 0x896,
+/*20171018 to latest
+검색 정보
+Find Information
+*/
+ MSG_NAVIGATION_SEARCHINFO = 0x897,
+/*20171018 to latest
+보기 모드 변경
+Toggle Minimap
+*/
+ MSG_NAVIGATION_VIEWCHANGE = 0x898,
+/*20171018 to latest
+외부 길정보 파일 읽기
+Read Information from External File
+*/
+ MSG_NAVIGATION_LIGHTCHANGE = 0x899,
+/*20171018 to latest
+종료
+Exit
+*/
+ MSG_NAVIGATION_END = 0x89a,
+/*20171018 to latest
+기본 UI로 변경
+Change the Default UI
+*/
+ MSG_NAVIGATION_BASE = 0x89b,
+/*20171018 to latest
+간편 UI로 변경
+Change to Default UI
+*/
+ MSG_NAVIGATION_MINI = 0x89c,
+/*20171018 to latest
+도움말
+Help
+*/
+ MSG_NAVIGATION_HELP = 0x89d,
+/*20171018 to latest
+ALL
+All
+*/
+ MSG_NAVIGATION_ALL = 0x89e,
+/*20171018 to latest
+Map
+*/
+ MSG_NAVIGATION_MAP = 0x89f,
+/*20171018 to latest
+Npc
+*/
+ MSG_NAVIGATION_NPC = 0x8a0,
+/*20171018 to latest
+Mob
+*/
+ MSG_NAVIGATION_MOB = 0x8a1,
+/*20171018 to latest
+검색 단어 설정 (Ex: 단어 단어 ...
+Enter search string... (Ex: word word ...)
+*/
+ MSG_NAVIGATION_SETSTRING = 0x8a2,
+/*20171018 to latest
+Scroll
+*/
+ MSG_NAVIGATION_SCROLL = 0x8a3,
+/*20171018 to latest
+던전이동 스크롤 사용 적용
+Use Scroll?
+*/
+ MSG_NAVIGATION_USESCROLL = 0x8a4,
+/*20171018 to latest
+Service
+*/
+ MSG_NAVIGATION_SERVICE = 0x8a5,
+/*20171018 to latest
+위치 이동 서비스 허용
+Use Kafra Warp?
+*/
+ MSG_NAVIGATION_USESERVICE = 0x8a6,
+/*20171018 to latest
+Plane
+*/
+ MSG_NAVIGATION_PLANE = 0x8a7,
+/*20171018 to latest
+비공정 이동 적용
+Use Airship?
+*/
+ MSG_NAVIGATION_USEPLANE = 0x8a8,
+/*20171018 to latest
+>> 목표 정보를 읽지 못함!
+>> Failed to read the target information.
+*/
+ MSG_NAVIGATION_TARGETUNKNOWN = 0x8a9,
+/*20171018 to latest
+<< 안내중 >>
+>> Destination <<
+*/
+ MSG_NAVIGATION_GOING = 0x8aa,
+/*20171018 to latest
+<< 검색중... >>
+<< Goal >>
+*/
+ MSG_NAVIGATION_SEARCHING = 0x8ab,
+/*20171018 to latest
+-----------
+*/
+ MSG_NAVIGATION_UN = 0x8ac,
+/*20171018 to latest
+Navigation
+*/
+ MSG_NAVIGATION_NAVI = 0x8ad,
+/*20171018 to latest
+== 검색 결과(%d)==
+= Found (%d) ==
+*/
+ MSG_NAVIGATION_SEARCHRESULT_D = 0x8ae,
+/*20171018 to latest
+Npc)%s:%s
+*/
+ MSG_NAVIGATION_NPC_S_S = 0x8af,
+/*20171018 to latest
+Mob)%s:%s
+*/
+ MSG_NAVIGATION_MOB_S_S = 0x8b0,
+/*20171018 to latest
+Map)%s
+*/
+ MSG_NAVIGATION_MAP_S = 0x8b1,
+/*20171018 to latest
+======== 결과 정보 ==========
+======== Results ==========
+*/
+ MSG_NAVIGATION_RESULTINFO = 0x8b2,
+/*20171018 to latest
+거리 : %d Sell %d WarpMove
+Dist %d Cell %d WarpMove
+*/
+ MSG_NAVIGATION_LENGTH = 0x8b3,
+/*20171018 to latest
+목표맵: %s(%s)
+Coords %s(%s)
+*/
+ MSG_NAVIGATION_TARGETMAP_S_S = 0x8b4,
+/*20171018 to latest
+목표 : %s(%d, %d)
+Goal:%s (%d,%d)
+*/
+ MSG_NAVIGATION_TARGET_S_D_D = 0x8b5,
+/*20171018 to latest
+보스
+Boss
+*/
+ MSG_NAVIGATION_BOSS = 0x8b6,
+/*20171018 to latest
+일반
+General
+*/
+ MSG_NAVIGATION_NORMAL = 0x8b7,
+/*20171018 to latest
+목표 : %s(%s)
+Goal:
+*/
+ MSG_NAVIGATION_TARGET_S_S = 0x8b8,
+/*20171018 to latest
+목표: (%d, %d)
+Goal: (%d, %d)
+*/
+ MSG_NAVIGATION_TARGET_D_D = 0x8b9,
+/*20171018 to latest
+======= 길 안내 정보 =======
+======= Guidance =======
+*/
+ MSG_NAVIGATION_GOINFO = 0x8ba,
+/*20171018 to latest
+%2d) Item:%s => %s 사용!
+%2d) Item:%s => %s Use!
+*/
+ MSG_NAVIGATION_ITEM_S_S = 0x8bb,
+/*20171018 to latest
+%2d) %s(%d,%d)=>(%d,%d)
+*/
+ MSG_NAVIGATION_D_S_D_D_D_D = 0x8bc,
+/*20171018 to latest
+E%2d) %s(%d,%d)=>(%d,%d)
+*/
+ MSG_NAVIGATION_E_D_S_D_D_D_D = 0x8bd,
+/*20171018 to latest
+E%2d) %s
+*/
+ MSG_NAVIGATION_E_D_S = 0x8be,
+/*20171018 to latest
+안내중 입니다! 종료 하시겠습니까?
+Do you want to cancel navigation?
+*/
+ MSG_NAVIGATION_GOEXIT = 0x8bf,
+/*20171018 to latest
+내비게이션 도움말
+How to Use Navigation
+*/
+ MSG_NAVIGATION_HELPTITLE = 0x8c0,
+/*20171018 to latest
+------------------- 명령어 --------------------
+------------------- Instruction --------------------
+*/
+ MSG_NAVIGATION_HELP1 = 0x8c1,
+/*20171018 to latest
+1. /navigation /navi
+1) /Navigation or /navi
+*/
+ MSG_NAVIGATION_HELP2 = 0x8c2,
+/*20171018 to latest
+ ex)/navi prontera 100/100 -> 맵이름, 100/100
+ex) /navi prontera 100 100 -> /navi "MAPNAME", 100, 100
+*/
+ MSG_NAVIGATION_HELP3 = 0x8c3,
+/*20171018 to latest
+ 기본 명령어는 제니, 비공정 검색을 기본으로 합니다.
+2) /Navigation2 or /navi2
+*/
+ MSG_NAVIGATION_HELP4 = 0x8c4,
+/*20171018 to latest
+2. /navigation2 /navi2
+ex) /navi2 prontera 100 111
+*/
+ MSG_NAVIGATION_HELP5 = 0x8c5,
+/*20171018 to latest
+ ex) /navi2 prontera 100/100 1/1/1
+-> MAPNAME location (100 90), Scroll | Zeny | Plane (1: Enable or 0: Disable)
+*/
+ MSG_NAVIGATION_HELP6 = 0x8c6,
+/*20171018 to latest
+-> 맵이름, 위치(100/100), scrool/zeny/plane (1:사용함 0: 사용안함)
+-> /navi2 goes with the case with location coordinates. They must be no less than 3 characters
+*/
+ MSG_NAVIGATION_HELP7 = 0x8c7,
+/*20171018 to latest
+3. $$all 모든 항목 출력 (Type 구분 항목으로 출력 종류 구분 가능.)
+3) /$$ Output all the items (Can take a while...)
+*/
+ MSG_NAVIGATION_HELP8 = 0x8c8,
+/*20171018 to latest
+4. $$lv30 해당 레벨의 몬스터 출력
+4) /$$ Lv30 monsters are placed in the output
+*/
+ MSG_NAVIGATION_HELP9 = 0x8c9,
+/*20171018 to latest
+5. $$lv20~30 해당 레벨 범위의 몬스터 출력
+5) /$$ Lv20~30 monsters in that level range are placed in the output
+*/
+ MSG_NAVIGATION_HELP10 = 0x8ca,
+/*20171018 to latest
+------------------- 설명 --------------------
+------------------- Description --------------------
+*/
+ MSG_NAVIGATION_HELP11 = 0x8cb,
+/*20171018 to latest
+1.검색 종류는 전체, 맵, Npc, 몬스터 으로 분류 된다.
+1) One can search for monsters, npcs, maps, or all at once
+*/
+ MSG_NAVIGATION_HELP12 = 0x8cc,
+/*20171018 to latest
+2.명령어로 검색한다. 규칙은 검색 하려는 문자열이 모두 포함된 정보를 출력 한다.
+2) You can press the search button to get results. It will out put the results depending on what rule you choose
+*/
+ MSG_NAVIGATION_HELP13 = 0x8cd,
+/*20171018 to latest
+ ex) 프론 카프 -> 검색 결과 프론테라의 카프라를 모두 출력 한다.
+ex) Drop down box -> Select "Npc", then type in the box "Kafra". Results will now be displayed
+*/
+ MSG_NAVIGATION_HELP14 = 0x8ce,
+/*20171018 to latest
+3.리스트에서 항목을 선택하면 정보가 출력된다.
+3) When you select an item from a list, information about it are displayed.
+*/
+ MSG_NAVIGATION_HELP15 = 0x8cf,
+/*20171018 to latest
+ 출력 되고 있는 목표가 있을때 안내 버튼을 클릭하면 해당 목표로 길을 안내 한다.
+-> When button is clicked, it will point you towards your destination if available
+*/
+ MSG_NAVIGATION_HELP16 = 0x8d0,
+/*20171018 to latest
+4.scrool/ zeny/ plane 상자를 원하는 만큼 체크하여 더 빠른 경로를 안내 받을 수 있다.
+4) Scroll | Zeny | Plane options can be checked to find a faster route
+*/
+ MSG_NAVIGATION_HELP17 = 0x8d1,
+/*20171018 to latest
+5.안내 버튼이 눌러지면 결과 리스트창은 길안내 리스트 장으로 변경 된다.
+5) Guide button is pressed, the result list window displays where routes can change direction
+*/
+ MSG_NAVIGATION_HELP18 = 0x8d2,
+/*20171018 to latest
+6.검색 리스트창 하단 버튼을 이용하여
+6) Using the button below, search results can be found
+*/
+ MSG_NAVIGATION_HELP19 = 0x8d3,
+/*20171018 to latest
+ [결과 리스트 창] <-> [길 안내 정보 창] 으로 보기 모드 변경 가능하다.
+-> [Results List Window] <-> [View Modes can be switched]
+*/
+ MSG_NAVIGATION_HELP20 = 0x8d4,
+/*20171018 to latest
+Level:%d (보스)
+Level:%d (Boss)
+*/
+ MSG_NAVIGATION_LEVEL_D_BOSS = 0x8d5,
+/*20171018 to latest
+Level:%d (일반)
+Level:%d (Mob)
+*/
+ MSG_NAVIGATION_LEVEL_D_NORMAL = 0x8d6,
+/*20171018 to latest
+수속성%d
+Water %d
+*/
+ MSG_NAVIGATION_PROPERTY1 = 0x8d7,
+/*20171018 to latest
+지속성%d
+Earth %d
+*/
+ MSG_NAVIGATION_PROPERTY2 = 0x8d8,
+/*20171018 to latest
+화속성%d
+Fire %d
+*/
+ MSG_NAVIGATION_PROPERTY3 = 0x8d9,
+/*20171018 to latest
+풍속성%d
+Wind %d
+*/
+ MSG_NAVIGATION_PROPERTY4 = 0x8da,
+/*20171018 to latest
+독속성%d
+Poison %d
+*/
+ MSG_NAVIGATION_PROPERTY5 = 0x8db,
+/*20171018 to latest
+성속성%d
+Holy %d
+*/
+ MSG_NAVIGATION_PROPERTY6 = 0x8dc,
+/*20171018 to latest
+암속성%d
+Shadow %d
+*/
+ MSG_NAVIGATION_PROPERTY7 = 0x8dd,
+/*20171018 to latest
+염속성%d
+Ghost %d
+*/
+ MSG_NAVIGATION_PROPERTY8 = 0x8de,
+/*20171018 to latest
+언데드%d
+Undead %d
+*/
+ MSG_NAVIGATION_PROPERTY9 = 0x8df,
+/*20171018 to latest
+무속성%d
+Neutral %d
+*/
+ MSG_NAVIGATION_PROPERTY0 = 0x8e0,
+/*20171018 to latest
+중형
+Medium
+*/
+ MSG_NAVIGATION_SCALE1 = 0x8e1,
+/*20171018 to latest
+대형
+Large
+*/
+ MSG_NAVIGATION_SCALE2 = 0x8e2,
+/*20171018 to latest
+소형
+Small
+*/
+ MSG_NAVIGATION_SCALE0 = 0x8e3,
+/*20171018 to latest
+불사형
+Undead
+*/
+ MSG_NAVIGATION_RACE1 = 0x8e4,
+/*20171018 to latest
+동물형
+Brute
+*/
+ MSG_NAVIGATION_RACE2 = 0x8e5,
+/*20171018 to latest
+식물형
+Plant
+*/
+ MSG_NAVIGATION_RACE3 = 0x8e6,
+/*20171018 to latest
+곤충형
+Insect
+*/
+ MSG_NAVIGATION_RACE4 = 0x8e7,
+/*20171018 to latest
+어패형
+Fish
+*/
+ MSG_NAVIGATION_RACE5 = 0x8e8,
+/*20171018 to latest
+악마형
+Demon
+*/
+ MSG_NAVIGATION_RACE6 = 0x8e9,
+/*20171018 to latest
+인간형
+Demi-Human
+*/
+ MSG_NAVIGATION_RACE7 = 0x8ea,
+/*20171018 to latest
+천사형
+Angel
+*/
+ MSG_NAVIGATION_RACE8 = 0x8eb,
+/*20171018 to latest
+용족
+Dragon
+*/
+ MSG_NAVIGATION_RACE9 = 0x8ec,
+/*20171018 to latest
+무형
+Formless
+*/
+ MSG_NAVIGATION_RACE0 = 0x8ed,
+/*20171018 to latest
+%s 이동 클릭
+Click to move %s
+*/
+ MSG_NAVIGATION_MOVECLICK = 0x8ee,
+/*20171018 to latest
+Npc 이동 서비스 이용
+Move to the Kafra Service Npc
+*/
+ MSG_NAVIGATION_NPCMOVE = 0x8ef,
+/*20171018 to latest
+NPC 클릭
+Click the NPC
+*/
+ MSG_NAVIGATION_NPCCLICK = 0x8f0,
+/*20171018 to latest
+%s 이동
+Move %s
+*/
+ MSG_NAVIGATION_S_MOVE = 0x8f1,
+/*20171018 to latest
+비공정 이동
+Move to the Airship Service
+*/
+ MSG_NAVIGATION_PLANEMOVE = 0x8f2,
+/*20171018 to latest
+워프 이용
+By Warp
+*/
+ MSG_NAVIGATION_WARPUSE = 0x8f3,
+/*20171018 to latest
+도착점 : ( %d %d )
+End Points: (%d %d)
+*/
+ MSG_NAVIGATION_TARGETPOINT_D_D = 0x8f4,
+/*20171018 to latest
+내비게이션이 지원 되지 않는 지역 입니다.
+That does not support the navigation area
+*/
+ MSG_NAVIGATION_UNKNOWNMAP = 0x8f5,
+/*20171018 to latest
+찾고자 하는 목적이 불분명 합니다.
+The purpose is unclear
+*/
+ MSG_NAVIGATION_RS_UNKNOWN = 0x8f6,
+/*20171018 to latest
+매칭이 맞지 않는 맵이다.
+Does not meet the map requirement
+*/
+ MSG_NAVIGATION_RS_NOTSAMEMAP = 0x8f7,
+/*20171018 to latest
+출발 지역에 대한 정보 설정 실패!
+Information Failure | Change settings
+*/
+ MSG_NAVIGATION_RS_FAILSTARTDATA = 0x8f8,
+/*20171018 to latest
+도착 지점에 대한 정보 설정 실패!
+Failed to set info for location!
+*/
+ MSG_NAVIGATION_RS_FAILTARGET = 0x8f9,
+/*20171018 to latest
+길 찾기 실패
+Failed to find a path
+*/
+ MSG_NAVIGATION_RS_FAILROUTE = 0x8fa,
+/*20171018 to latest
+플레이어 위치 찾기 실패
+Failed to find players
+*/
+ MSG_NAVIGATION_RS_FAILPLAYER = 0x8fb,
+/*20171018 to latest
+내비게이션에 정보가 없습니다.
+No Information
+*/
+ MSG_NAVIGATION_RS_NODATA = 0x8fc,
+/*20171018 to latest
+해당 맵은 길찾기가 지원 되지 않는 맵입니다.
+Map doesn't support directions
+*/
+ MSG_NAVIGATION_RS_MAPNOTNAVIGATION = 0x8fd,
+/*20171018 to latest
+목표를 지정 하시기 바랍니다.
+Please specify target goals.
+*/
+ MSG_NAVIGATION_RS_FAILTARGETROUTE = 0x8fe,
+/*20171018 to latest
+도착.
+Found
+*/
+ MSG_NAVIGATION_RS_SUCCESS = 0x8ff,
+/*20171018 to latest
+길 안내가 시작 되었습니다.
+Directions were started
+*/
+ MSG_NAVIGATION_RS_START = 0x900,
+/*20171018 to latest
+찾고자 하는 몬스터가 있는 맵 입니다.
+Is the map that your looking for mob
+*/
+ MSG_NAVIGATION_RS_MOBTARGETMAP = 0x901,
+/*20171018 to latest
+찾고자 하는 맵이 해당 맵 입니다.
+Map appears on the guide you are looking for
+*/
+ MSG_NAVIGATION_RS_TARGETMAP = 0x902,
+/*20171018 to latest
+아이템을 사용하여 이동하여 주시기 바랍니다.
+Please navigate using the item
+*/
+ MSG_NAVIGATION_RS_SCROLL = 0x903,
+/*20171018 to latest
+안내하는 위치로 이동하시기 바랍니다.
+Please follow the instruction to reach your destination.
+*/
+ MSG_NAVIGATION_RS_ROUTE_SUCCESS = 0x904,
+/*20171018 to latest
+목표 맵에 도착하였습니다.
+Arrived at the target map
+*/
+ MSG_NAVIGATION_RS_MAPTMAP_SUCCESS = 0x905,
+/*20171018 to latest
+찾고자 하는 Npc가 있는 맵에 도착 하였습니다. Npc로 이동하시기 바랍니다.
+Arrived on the map that has the Npc your looking for. Go to that NPC
+*/
+ MSG_NAVIGATION_RS_NPCTMAP_SUCCESS = 0x906,
+/*20171018 to latest
+찾고자 하는 Mob이 서식하는 맵에 도착 하였습니다.
+You have arrived at the mob you were looking for
+*/
+ MSG_NAVIGATION_RS_MOBTMAP_SUCCESS = 0x907,
+/*20171018 to latest
+이전과 동일한 목표 입니다.
+You have reached your goal
+*/
+ MSG_NAVIGATION_RS_POSTMAP_SUCCESS = 0x908,
+/*20171018 to latest
+가리키는 방향으로 가시기 바랍니다.
+Please go to indicated direction.
+*/
+ MSG_NAVIGATION_RS_SAMETARGET = 0x909,
+/*20171018 to latest
+목표가 여기 입니다.
+The goal has been reached
+*/
+ MSG_NAVIGATION_RS_HERE = 0x90a,
+/*20171018 to latest
+Navigation >: %s
+*/
+ MSG_NAVIGATION_PRINT_S = 0x90b,
+/*20171018 to latest
+Navigation >: 안내하는 %s(을)를 이용하여
+Navigation >: Talk to Guide "%s" (A)
+*/
+ MSG_NAVIGATION_PRINT_GO_S = 0x90c,
+/*20171018 to latest
+Navigation >: 맵(%s)으로 이동하시기 바랍니다
+Navigation >: Move to (%s) map
+*/
+ MSG_NAVIGATION_PRINT_MAP_S = 0x90d,
+/*20171018 to latest
+Navigation >: 맵(%s)을 선택하여 이동 하시기 바랍니다
+Navigation >: Choose (%s) Map from Kafra
+*/
+ MSG_NAVIGATION_PRINT_SELECTMAP_S = 0x90e,
+/*20171018 to latest
+Navigation >: 비공정으로 이동 하시기 바랍니다
+Navigation >: Please go to the AirShip
+*/
+ MSG_NAVIGATION_PRINT_PLANE = 0x90f,
+/*20171018 to latest
+Navigation >: 워프를 이용하여 다음 지역으로 이동하시기 바랍니다.
+Navigation >: Get to your destination by using WarpPortal
+*/
+ MSG_NAVIGATION_PRINT_WARP = 0x910,
+/*20171018 to latest
+Item:
+*/
+ MSG_NAVIGATION_PRINT_ITEM = 0x911,
+/*20171018 to latest
+$$
+*/
+ MSG_NAVIGATION_ZZ = 0x912,
+/*20171018 to latest
+$$lv
+*/
+ MSG_NAVIGATION_ZZLV = 0x913,
+/*20171018 to latest
+~
+*/
+ MSG_NAVIGATION_ZZLIMIT = 0x914,
+/*20171018 to latest
+$$all
+*/
+ MSG_NAVIGATION_ZZALL = 0x915,
+/*20171018 to latest
+구매 확인서
+Confirm Deal
+*/
+ MSG_SHOP_ITEM_BAY_TITLE = 0x916,
+/*20171018 to latest
+구입하려는 아이템들의 총가격은
+Below is the total cost:
+*/
+ MSG_SHOP_ITEM_BAY_MAG1 = 0x917,
+/*20171018 to latest
+Zeny 입니다.
+ Zeny to complete the transaction.
+*/
+ MSG_SHOP_ITEM_BAY_MAG2 = 0x918,
+/*20171018 to latest
+구입하시겠습니까?
+Press buy to confirm.
+*/
+ MSG_SHOP_ITEM_BAY_MAG3 = 0x919,
+/*20171018 to latest
+%.1f%% (PC방 %.1f%% + TPLUS %.1f%% + 프리미엄 %.1f%% + %s서버 %.1f%%)
+%.1f% (PCRoom %.1f% + TPLUS %.1f% + Premium %.1f% + %sServer %.1f%)
+*/
+ MSG_BASIC_EXP_MSG2 = 0x91a,
+/*20171018 to latest
+카드 북
+Card Book
+*/
+ MSG_CARDWIN = 0x91b,
+/*20171018 to latest
+%d%% [ ( 기본 100%% + %s서버 %d%% ) * 활성 %.1f ]
+%d%% [ ( Basic 100%% + %sServer %d%% ) * Active %.1f ]
+*/
+ MSG_PERSONAL_INFORMATION_MSG_CHN = 0x91c,
+/*20171018 to latest
+%d%% [ 기본 100%% + %s서버 %d%% ]
+%d%% [ Basic 100%% + %sServer %d%% ]
+*/
+ MSG_PERSONAL_INFORMATION_MSG_CHN_DEATH = 0x91d,
+/*20171018 to latest
+이곳은 PK 지역입니다. 미성년자는 자발적으로 떠나주시기 바랍니다.
+This is PK region. Minors,Please leave immediately.
+*/
+ MSG_CAUTION_PKZONE = 0x91e,
+/*20171018 to latest
+피로도
+Fatigue
+*/
+ MSG_FATIGUE = 0x91f,
+/*20171018 to latest
+건강상태 이며 게임수익은 100%입니다.
+Health and gaming revenue is 100%%.
+*/
+ MSG_FATIGUE_LEVEL_ZERO = 0x920,
+/*20171018 to latest
+지금은 피로상태이므로 손님의 게임수익은 50% 떨어집니다. 건강을 위하여 적당한 휴식 바랍니다.
+Fatigue because it is now a guest of the gaming revenue is down 50 percent.Hope for the proper health
+*/
+ MSG_FATIGUE_LEVEL_HALF = 0x921,
+/*20171018 to latest
+지금은 비건강상태이므로 손님의 건강을 위하여 게임오프라인을 원합니다. 계속 온라인상태에 있으면 건강에 손상을 주므로 게임 수익은 0%으로 떨어지며 게임 오프라인 5시간후에 다시 회복됩니다.
+Now because it is a non-health to the health of the guests want to offline games. If you still are online gaming revenue because the damage to the health of the game falls to 0% again after 5 hours will be restored offline.
+*/
+ MSG_FATIGUE_LEVEL_FULL = 0x922,
+/*20171018 to latest
+접속시간 %d 분이 되었습니다.
+Online since %d minutes
+*/
+ MSG_FATIGUE_MESSAGE0 = 0x923,
+/*20171018 to latest
+접속시간 %d 시간이 되었습니다.
+Online Time: %d
+*/
+ MSG_FATIGUE_MESSAGE1 = 0x924,
+/*20171018 to latest
+접속시간 %d 시간 %d 분이 되었습니다.
+Online since %d hours and %d minutes
+*/
+ MSG_FATIGUE_MESSAGE2 = 0x925,
+/*20171018 to latest
+/monsterhp : 공격한 몬스터의 HP정보를 표시합니다. On Off
+/monsterhp: Show the hp of attacked monster. On off
+*/
+ MSG_EXPLAIN_MONSTERHP = 0x926,
+/*20171018 to latest
+스킬포인트 :
+Skill Points:
+*/
+ MSG_SKILLPOINT2 = 0x927,
+/*20171018 to latest
+인증서버로 부터의 응답이 없습니다. 다시 시도해 주세요
+There is no response from the authentification server. Please try again
+*/
+ MSG_BAN_BILLING_SERVER_ERROR = 0x928,
+/*20171018 to latest
+암호를 변경하여 주시기 바랍니다.
+Please change your password
+*/
+ MSG_REFUSE_CHANGE_PASSWD_FORCE = 0x929,
+/*20171018 to latest
+http://www.ragnarok.co.kr
+*/
+ MSG_REFUSE_CHANGE_PASSWD_SITE = 0x92a,
+/*20171018 to latest
+고객님께서는 현재 접속금지 시간입니다.
+Guest access is prohibited
+*/
+ MSG_PLANNED_TIME_SHUTDOWN = 0x92b,
+/*20171018 to latest
+셧다운제도에 의해 고객님의 게임제한 시간은 %1.2d-%1.2d-%1.2d %1.2d:%1.2d:%1.2d에 게임이 종료될 예정입니다.
+Your System is been Shutdown, %1.2d-%1.2d-%1.2d %1.2d:%1.2d:%1.2d is the end time.
+*/
+ MSG_SHOUTDOWN_TIME = 0x92c,
+/*20171018 to latest
+고객님의 계정은 선택적 셧다운이 적용된 계정이며, 잔여시간은 %1.2d시간 %1.2d분입니다. 게임 이용에 참고해주시기 바랍니다.
+Selected System Shutdown is activated in your account,Time Left: %1.2d hours %1.2d minutes.
+*/
+ MSG_PARTIAL_SHOUTDOWN_TIME = 0x92d,
+/*20171018 to latest
+리플레이
+Replay
+*/
+ MSG_MENU_REPLAYWND = 0x92e,
+/*20171018 to latest
+매크로
+Macro
+*/
+ MSG_MENU_MACROWND = 0x92f,
+/*20171018 to latest
+Webbrowser
+*/
+ MSG_MENU_WEBBROWSERWND = 0x930,
+/*20171018 to latest
+내비게이션
+Navigation
+*/
+ MSG_MENU_NAVIGATIONWND = 0x931,
+/*20171018 to latest
+UAEURL
+*/
+ MSG_MENU_UAEURLWND = 0x932,
+/*20171018 to latest
+ 클랜정보
+Clan Information
+*/
+ MSG_CLAN_INFOMANAGE = 0x933,
+/*20171018 to latest
+클랜레벨
+Clan Level
+*/
+ MSG_CLAN_LEVEL = 0x934,
+/*20171018 to latest
+클랜명
+Clan Name
+*/
+ MSG_CLAN_NAME = 0x935,
+/*20171018 to latest
+클랜마크
+Clan Mark
+*/
+ MSG_CLAN_MARK = 0x936,
+/*20171018 to latest
+동맹클랜
+Ally Clan
+*/
+ MSG_ALLY_CLAN = 0x937,
+/*20171018 to latest
+적대클랜
+Antagonist Clan
+*/
+ MSG_HOSTILITY_CLAN = 0x938,
+/*20171018 to latest
+클랜에게 보냄
+Send to Clan
+*/
+ MSG_SEND_TO_CLAN = 0x939,
+/*20171018 to latest
+마스터이름
+ClanMaster Name
+*/
+ MSG_CLAN_MASTER_NAME = 0x93a,
+/*20171018 to latest
+조합원수
+Number of Members
+*/
+ MSG_CLAN_NUM_MEMBER = 0x93b,
+/*20171018 to latest
+관리영지
+Castles Owned
+*/
+ MSG_CLAN_MANAGE_LAND = 0x93c,
+/*20171018 to latest
+클랜 채팅 메시지 표시
+Clan Chat Messages
+*/
+ MSG_VIEW_CLAN_MSG = 0x93d,
+/*20171018 to latest
+충전 페이지로 이동합니다.
+Go to Page Charged.
+*/
+ MSG_TWWAB_WARRING = 0x93e,
+/*20171018 to latest
+https://gfb.gameflier.com/Billing/ingame/index_new.asp?
+*/
+ MSG_TWWAB_URL = 0x93f,
+/*20171018 to latest
+캐릭터 만들기
+Create char
+*/
+ MSG_STR_MAKECHARACTER = 0x940,
+/*20171018 to latest
+캐릭명이 일치하지 않습니다.
+Name does not match
+*/
+ MSG_CHR_DELETE_RESERVED_FAIL_CHARNAME = 0x941,
+/*20171018 to latest
+캐릭터명을 입력하세요
+Enter the name of character
+*/
+ MSG_CHR_DELETE_RESERVED_INPUTCONFIRMSTR_WND_TITLE = 0x942,
+/*20171018 to latest
+성별 선택 창
+Sex Selection Window
+*/
+ MSG_SELECT_SEX = 0x943,
+/*20171018 to latest
+파일의 위변조가 감지 되었습니다.
+Editing of the File Detected
+*/
+ MSG_SPRITE_ALTER = 0x944,
+/*20171018 to latest
+해당 아이템을 개봉하여 획득되는 아이템들은 캐릭터 귀속 아이템 (창고이동 불가능) 입니다. 본 캐릭터에 사용하시는 것이 맞으신지 확인해주시기 바랍니다. 상자를 개봉하시겠습니까?
+Items obtained by opening the item is character bounded (can not move to storage). Do you want to open the box?
+*/
+ MSG_CONFIRM_TO_OPEN_EVENT_ITEM = 0x945,
+/*20171018 to latest
+게임 설정
+Game Settings
+*/
+ MSG_GAME_SETTING = 0x946,
+/*20171018 to latest
+게임 시스템
+Game System
+*/
+ MSG_SYSTEM_SETTING = 0x947,
+/*20171018 to latest
+게임 커맨드
+Game Commands
+*/
+ MSG_COMMAND_SETTING = 0x948,
+/*20171018 to latest
+게임 커맨드 ON/OFF
+Game Command ON/OFF
+*/
+ MSG_COMMAND_LIST = 0x949,
+/*20171018 to latest
+매크로
+Macro
+*/
+ MSG_MACRO_LIST = 0x94a,
+/*20171018 to latest
+이지역은 아이템교환이 금지 되어 있습니다
+Trading is prohibited in this Map
+*/
+ MSG_EXCHANGEITEM_DENY_MAP = 0x94b,
+/*20171018 to latest
+이지역은 카트이용이 금지 되어 있습니다
+Vending is prohibited in this Map
+*/
+ MSG_CART_USE_DENY_MAP = 0x94c,
+/*20171018 to latest
+이지역은 태양과달과별의 기적 효과가 발생하지 않습니다.
+In this Map,Effect of Mirace of Sun and Moon is nullified.
+*/
+ MSG_BLOCK_SUNMOONSTAR_MIRACLE = 0x94d,
+/*20171018 to latest
+랭킹 보드
+Ranking Board
+*/
+ MSG_RANKING_BOARD = 0x94e,
+/*20171018 to latest
+순위
+Rank
+*/
+ MSG_RANKING_NUMBER = 0x94f,
+/*20171018 to latest
+이름
+Name
+*/
+ MSG_RANKING_NAME = 0x950,
+/*20171018 to latest
+포인트
+Points
+*/
+ MSG_RANKING_POINT = 0x951,
+/*20171018 to latest
+BlackSmith
+*/
+ MSG_RANKING_BLACKSMITH = 0x952,
+/*20171018 to latest
+Alchemist
+*/
+ MSG_RANKING_ALCHEMIST = 0x953,
+/*20171018 to latest
+Taekwon
+*/
+ MSG_RANKING_TAEKWON = 0x954,
+/*20171018 to latest
+Killer
+*/
+ MSG_RANKING_KILLER = 0x955,
+/*20171018 to latest
+7 vs 7
+*/
+ MSG_RANKING_BATTLE_7VS7_ALL = 0x956,
+/*20171018 to latest
+RuneKnight
+*/
+ MSG_RANKING_RUNE_KNIGHT = 0x957,
+/*20171018 to latest
+Warlock
+*/
+ MSG_RANKING_WARLOCK = 0x958,
+/*20171018 to latest
+Ranger
+*/
+ MSG_RANKING_RANGER = 0x959,
+/*20171018 to latest
+Mechanic
+*/
+ MSG_RANKING_MECHANIC = 0x95a,
+/*20171018 to latest
+GuillotineCross
+*/
+ MSG_RANKING_GUILLOTINE_CROSS = 0x95b,
+/*20171018 to latest
+Archbishop
+*/
+ MSG_RANKING_ARCHBISHOP = 0x95c,
+/*20171018 to latest
+RoyalGuard
+*/
+ MSG_RANKING_ROYAL_GUARD = 0x95d,
+/*20171018 to latest
+Sorcerer
+*/
+ MSG_RANKING_SORCERER = 0x95e,
+/*20171018 to latest
+Minstrel
+*/
+ MSG_RANKING_MINSTREL = 0x95f,
+/*20171018 to latest
+Wanderer
+*/
+ MSG_RANKING_WANDERER = 0x960,
+/*20171018 to latest
+Genetic
+*/
+ MSG_RANKING_GENETIC = 0x961,
+/*20171018 to latest
+ShadowChaser
+*/
+ MSG_RANKING_SHADOW_CHASER = 0x962,
+/*20171018 to latest
+Sura
+*/
+ MSG_RANKING_SURA = 0x963,
+/*20171018 to latest
+Kagerou
+*/
+ MSG_RANKING_KAGEROU = 0x964,
+/*20171018 to latest
+Oboro
+*/
+ MSG_RANKING_OBORO = 0x965,
+/*20171018 to latest
+Select Ranking Type
+*/
+ MSG_RANKING_SELECT = 0x966,
+/*20171018 to latest
+Ranking Type
+*/
+ MSG_RANKING_TYPE = 0x967,
+/*20171018 to latest
+현재 접속 인원이 가득 찼습니다. ^0000ff현재 대기순위 : %d 예상 대기시간 : %d초
+Currently,Server is full. ^0000ffPeople Currently Waiting: %d Expected Waiting Time: %dSeconds
+*/
+ MSG_WAITING_FOR_ENTER_TO_CHARACTER_SEVER_IN_SEC = 0x968,
+/*20171018 to latest
+현재 접속 인원이 가득 찼습니다. ^0000ff현재 대기순위 : %d 예상 대기시간 : %d분 %d초
+Currently,Server is full. ^0000ffPeople Currently Waiting: %d Expected Waiting Time: %dMinutes %d Seconds
+*/
+ MSG_WAITING_FOR_ENTER_TO_CHARACTER_SEVER_IN_MIN = 0x969,
+/*20171018 to latest
+CBT 초청 유저가 아닙니다
+CBT is not an invited user
+*/
+ MSG_CBT_ACTIVE_USER_CHECK = 0x96a,
+/*20171018 to latest
+ -------------- Navigation 명령어 --------------
+------------------- Instruction --------------------
+*/
+ MSG_NAVIGATION_HELP_1 = 0x96b,
+/*20171018 to latest
+/navigation /navi : /navi yuno 100/100 ->> 맵이름, 위치(100/100)
+1) /Navigation or /navi ex) /navi prontera 100 100 -> /navi "MAPNAME", 100, 100
+*/
+ MSG_NAVIGATION_HELP_2 = 0x96c,
+/*20171018 to latest
+/navigation2 /navi2 : /navi2 yuno 100/100 1/1/1 ->> 맵이름, 위치(100/100), scrool/zeny/plane (1:사용함 0: 사용안함)
+2) /Navigation2 or /navi2 ex) /navi2 prontera 100 111 -> MAPNAME location (100 90), Scroll | Zeny | Plane (1: Enable or 0: Disable)
+*/
+ MSG_NAVIGATION_HELP_3 = 0x96d,
+/*20171018 to latest
+ -------------- Navigation 검색창 명령어 -------
+-> /navi2 goes with the case with location coordinates. They must be no less than 3 characters
+*/
+ MSG_NAVIGATION_HELP_4 = 0x96e,
+/*20171018 to latest
+$$all : 모든 항목 출력 (Type 구분자에서 출력 종류를 나눌수 있다.)
+3) $$all Output all the items (Can take a while...)
+*/
+ MSG_NAVIGATION_HELP_5 = 0x96f,
+/*20171018 to latest
+$$lv30 : 해당 레벨의 몬스터 출력 (숫자는 변경 가능)
+4) $$lv30 monsters are placed in the output
+*/
+ MSG_NAVIGATION_HELP_6 = 0x970,
+/*20171018 to latest
+$$lv20~30 : 해당 레벨 범위의 몬스터 출력 (숫자는 변경 가능)
+5) $$lv20~30 monsters in that level range are placed in the output
+*/
+ MSG_NAVIGATION_HELP_7 = 0x971,
+/*20171018 to latest
+1 vs 1
+*/
+ MSG_RANKING_BATTLE_1VS1_ALL = 0x972,
+/*20171018 to latest
+특수 장비
+Special Gear
+*/
+ MSG_SHADOW_EQUIPMENT = 0x973,
+/*20171018 to latest
+%d 번째 캐릭터의 직업 정보가 이상합니다. 고객센터로 문의 부탁 드립니다. ErrorCode(%d)
+%d First character of the profession is more than information. Please contact the Customer Care Center. ErrorCode(%d)
+*/
+ MSG_CHARACTERERROR_JOB = 0x974,
+/*20171018 to latest
+(%s) %d / %d
+*/
+ MSG_NAVIGATION_ALL_S = 0x975,
+/*20171018 to latest
+%s-%s(%d/%d)
+*/
+ MSG_NAVIGATION_ALL_SD = 0x976,
+/*20171018 to latest
+접속자 수 초과로 서버에 더이상 접속할 수 없습니다.
+Server Exceeded the maximum number of users,Cannot Connect anymore users.
+*/
+ MSG_REFUSE_OVER_USERLIMIT = 0x977,
+/*20171018 to latest
+서버접속 실패 (%d)
+Server Connection Failed (%d)
+*/
+ MSG_REFUSE_ERRORCODE = 0x978,
+/*20171018 to latest
+로그인 허용시간 초과
+Login Timeout Permitted
+*/
+ MSG_REFUSE_DISCONNECT_KEEP_TIME = 0x979,
+/*20171018 to latest
+로그인 중 인증서버로부터 인증이 실패하였습니다.
+Login Authentication Failed from Authentication Server.
+*/
+ MSG_REFUSE_WEB_AUTH_FAILED = 0x97a,
+/*20171018 to latest
+길드이름에 공백문자를 사용할 수 없습니다.
+Guild Cannot use Space in the name.
+*/
+ MSG_GUILDNAME_CHECK = 0x97b,
+/*20171018 to latest
+고객님 안녕하세요!
+Hey,Hello There
+*/
+ MSG_BILLING_CHN_1 = 0x97c,
+/*20171018 to latest
+고객님의 이용 시간은 %d년 %d 월 %d일 %d:%d 에 종료됩니다.
+Available Time will End on %d month %d hour %d:%d
+*/
+ MSG_BILLING_CHN_2 = 0x97d,
+/*20171018 to latest
+고객님의 이용 시간은 아직 많이 남았으니 안심하고 플레이하세요!
+You've lot of time,Play in Peace.
+*/
+ MSG_BILLING_CHN_3 = 0x97e,
+/*20171018 to latest
+고객님의 이용 시간은 이번 주 내로 종료 됩니다. 종료 전에 충전을 하시기 바랍니다.
+Your hours will be terminated within this week. Please Charge before termination.
+*/
+ MSG_BILLING_CHN_4 = 0x97f,
+/*20171018 to latest
+고객님의 이용 시간은 24시간 내에 종료됩니다. 빨리 충전하시기 바랍니다.
+Your hours will be terminated within 24 hours.Please Charge Quickly.
+*/
+ MSG_BILLING_CHN_5 = 0x980,
+/*20171018 to latest
+현재 고객님의 이용 시간은 %d시간 남았습니다. 정상적인 게임 이용을 위해 충전을 하시기 바랍니다.
+Current Time Left:%d hours.Charge the game for uninterrupted play.
+*/
+ MSG_BILLING_CHN_6 = 0x981,
+/*20171018 to latest
+현재 고객님의 이용 시간은 %d분 남았습니다. 이용시간이 끝난 후 강제적으로 종료됩니다. 정상적인 게임 이용을 위해 충전을 하시기 바랍니다.
+Current Time Left:%d minutes.Charge the game for uninterrupted play.
+*/
+ MSG_BILLING_CHN_7 = 0x982,
+/*20171018 to latest
+고객님의 이용 시간은 %d시간 %d분 남았습니다.
+Time Left: %d hours %d minutes
+*/
+ MSG_BILLING_CHN_8 = 0x983,
+/*20171018 to latest
+%d%% ( 기본 100%% + PC방 %d%% + 프리미엄 %d%% + %s서버 %d%% )
+%d%% ( Basic 100%% + PCRoom %d%% + Premium %d%% + %sServer %d%% )
+*/
+ MSG_BASIC_EXP_MSG_THAI = 0x984,
+/*20171018 to latest
+고객님의 이용 시간은 %d시간 %d분 후에 종료됩니다.
+After %d hours %d minutes, your game will be terminated.
+*/
+ MSG_CHN_BILLING_EXPIRE_TIME = 0x985,
+/*20171018 to latest
+유저님의 계정은 영구 접속금지 되였습니다
+This Account is permanently Banned.
+*/
+ MSG_CHN_BLOCK_FOREVER = 0x986,
+/*20171018 to latest
+유저님의 계정은 접속금지 되였습니다
+ 해지 시간 : %04d-%02d-%02d %02d:%02d
+This Account is banned.
+Termination Time:%04d-%02d-%02d %02d:%02d
+*/
+ MSG_CHN_BLOCK = 0x987,
+/*20171018 to latest
+몬스터(Tab)
+Monster(Tab)
+*/
+ MSG_WORLDMAP_MSG1 = 0x988,
+/*20171018 to latest
+맵(Alt)
+Map(Alt)
+*/
+ MSG_WORLDMAP_MSG2 = 0x989,
+/*20171018 to latest
+안내 정보
+Product Information
+*/
+ MSG_WORLDMAP_MSG3 = 0x98a,
+/*20171018 to latest
+검색 정보
+Find Information
+*/
+ MSG_WORLDMAP_MSG4 = 0x98b,
+/*20171018 to latest
+비공정
+AirShip
+*/
+ MSG_WORLDMAP_MSG5 = 0x98c,
+/*20171018 to latest
+카프라
+Kafra
+*/
+ MSG_WORLDMAP_MSG6 = 0x98d,
+/*20171018 to latest
+(도착)
+(Arrival)
+*/
+ MSG_WORLDMAP_MSG7 = 0x98e,
+/*20171018 to latest
+Mob)%s:%s(%s)
+*/
+ MSG_NAVIGATION_MOB_S_S_S = 0x98f,
+/*20171018 to latest
+분포도:%s
+Distribution:%s
+*/
+ MSG_NAVIGATION_NUM = 0x990,
+/*20171018 to latest
+매우많음
+Very Plenty
+*/
+ MSG_NAVIGATION_NUM1 = 0x991,
+/*20171018 to latest
+많음
+Plenty
+*/
+ MSG_NAVIGATION_NUM2 = 0x992,
+/*20171018 to latest
+보통
+Normal
+*/
+ MSG_NAVIGATION_NUM3 = 0x993,
+/*20171018 to latest
+적음
+Low
+*/
+ MSG_NAVIGATION_NUM4 = 0x994,
+/*20171018 to latest
+매우적음
+Very Low
+*/
+ MSG_NAVIGATION_NUM5 = 0x995,
+/*20171018 to latest
+은행을 이용할 수 없습니다. 잠시 후 다시 시도하세요.
+The bank is not available. Please try again in a few minutes.
+*/
+ MSG_BANK_SYSTEM_ERROR = 0x996,
+/*20171018 to latest
+은행 잔고가 부족합니다.
+Bank balance is low.
+*/
+ MSG_BANK_WITHDRAW_NO_MONEY = 0x997,
+/*20171018 to latest
+보유한 Zeny 가 부족해서 입금할 수 없습니다.
+You don't have enough zeny
+*/
+ MSG_BANK_DEPOSIT_NO_MONEY = 0x998,
+/*20171018 to latest
+1 Zeny 이상 입금 가능합니다.
+Minimum Deposit Amount: 1 zeny
+*/
+ MSG_BANK_DEPOSIT_ZERO = 0x999,
+/*20171018 to latest
+1 Zeny 이상 출금 가능합니다.
+Minimum Withdrawal Amount: 1 zeny
+*/
+ MSG_BANK_WITHDRAW_ZERO = 0x99a,
+/*20171018 to latest
+보유 Zeny 는 2,147,483,647 Zeny를 넘을 수 없습니다.
+You cannot hold more than 2,147,483,647 Zeny
+*/
+ MSG_BANK_OVER_INT_MAX = 0x99b,
+/*20171018 to latest
+your account is lock by mobil otp
+your account is lock by mobile otp
+*/
+ MSG_REFUSE_MOTP_LOCK = 0x99c,
+/*20171018 to latest
+MOTP auth fail
+*/
+ MSG_REFUSE_MOTP_AUTH_FAIL = 0x99d,
+/*20171018 to latest
+%d분간 몬스터에게 얻을 수 있는 Job경험치가 %d%% 증가합니다.
+For %d minutes,Job Experience obtained from monster is increased by %d%%
+*/
+ MSG_JOBPLUSEXP_VALUE = 0x99e,
+/*20171018 to latest
+소지 Zeny : %s Zeny
+Current Zeny: %s Zeny
+*/
+ MSG_BANK_MY_ZENY = 0x99f,
+/*20171018 to latest
+Zeny
+*/
+ MSG_BANK_ZENY = 0x9a0,
+/*20171018 to latest
+최대 2,147,483,647 Zeny 까지만 보관이 가능합니다.
+The Maximum amount is 2,147,483,647 Zeny
+*/
+ MSG_BANK_WARNING = 0x9a1,
+/*20171018 to latest
+총알이 부족합니다.
+Insufficient bullet
+*/
+ MSG_NEED_MORE_BULLET = 0x9a2,
+/*20171018 to latest
+10억제니 이상 입력하셔도 가격은 10억 제니로 판매됩니다.
+You entered more than 1 Billion Zeny, the price will be set to 1 Billion Zeny.
+*/
+ MSG_OVERPRICE_MAX = 0x9a3,
+/*20171018 to latest
+AuthTicket is Not Vaild
+AuthTicket is Not Valid
+*/
+ MSG_NOT_VALID_AUTH_TICKET = 0x9a4,
+/*20171018 to latest
+ErrorCategory : %d, ErrorCode : %d (%d,%d,%d,%d)
+ErrorCategory: %d, ErrorCode: %d (%d,%d,%d,%d)
+*/
+ MSG_STEAMAGENCY_ERROR = 0x9a5,
+/*20171018 to latest
+%d%% ( Basic 100%% + Premium %d%% + PCCafe %d%% + %s Server %d%% )
+%d%% ( Basic 100%% + Premium %d%% + Internet cafe %d%% + %s Server %d%% )
+*/
+ MSG_BASIC_EXP_MSG_INDONESIA = 0x9a6,
+/*20171018 to latest
+ %d분간 몬스터 사냥을 통해 얻을 수 있는 기본 아이템의 드롭률이 %d%%로 증가합니다.
+Basic item drop rate from monster hunting is increased for %dmins by %dtimes.
+*/
+ MSG_RECEIVEITEM_VALUE = 0x9a7,
+/*20171018 to latest
+ %d시 %.2d분간 몬스터 사냥을 통해 얻을 수 있는 기본 아이템의 드롭률이 %d%%로 증가합니다.
+Basic item drop rate from monster hunting is increased for %dhour %.2dmins by %dtimes.
+*/
+ MSG_RECEIVEITEM_VALUE_1 = 0x9a8,
+/*20171018 to latest
+%s 의 가격이
+The price of^0000FF %s^000000
+*/
+ MSG_WARNING_PRICE1 = 0x9a9,
+/*20171018 to latest
+100000000
+1000000000
+*/
+ MSG_WARNING_PRICE2 = 0x9aa,
+/*20171018 to latest
+ ^ff0000%d^0000ff억
+ is over ^FF0000%d^0000FF Billion^000000 Zeny and
+*/
+ MSG_WARNING_PRICE3 = 0x9ab,
+/*20171018 to latest
+10000000
+*/
+ MSG_WARNING_PRICE4 = 0x9ac,
+/*20171018 to latest
+ ^ff0000%d^0000ff천만
+ more than^FF0000 %d0^0000FF Million^000000 Zeny
+*/
+ MSG_WARNING_PRICE5 = 0x9ad,
+/*20171018 to latest
+^0000ffZeny 이상^000000입니다.
+입력금액이 맞습니까?
+. Is this correct?
+*/
+ MSG_WARNING_PRICE6 = 0x9ae,
+/*20171018 to latest
+천만Zeny이상 안전확인
+Safety check for more than 10m Zeny
+*/
+ MSG_WARNING_PRICE7 = 0x9af,
+/*20171018 to latest
+https://www.warpportal.com/account/login.aspx?ReturnUrl=%2faccount%2fpayment.aspx
+*/
+ MSG_AMERICA_CASHSHOP_URL = 0x9b0,
+/*20171018 to latest
+https://kepler.warpportal.com/ro1/purchase/?step=1&steamid=%lld&accountname=
+https://kepler.warpportal.com/ror/purchase/?step=1&steamid=%lld&accountname=
+*/
+ MSG_AMERICA_CASHSHOP_URL_STEAM = 0x9b1,
+/*20171018 to latest
+지상의 끝, 스플랑디드와 부유대륙 알프헤임을 잇는 다리, 비프로스트에 생겨난 거대한 균열, 그리고 근원을 알 수 없는 미궁숲.
+A giant crevice appeared in Bifrost, the bridge between Splendide, the end of the world and the floating continent of Alfheim, and you do not know the source of the labyrinth forest.
+*/
+ MSG_QUEST_INFO_01 = 0x9b2,
+/*20171018 to latest
+이것은 여행의 끝을 알리는 표식인가, 새로운 세계를 여는 지표인가! 수호자는 노랫말 같은 유혹에 점차 넋을 잃어가고 있었다.
+This is a marker indicating the end of the trip, a new world is opening indicators! Guardian, such as the lyrics to the temptation was gradually losing the soul.
+*/
+ MSG_QUEST_INFO_02 = 0x9b3,
+/*20171018 to latest
+수천 년의 세월이 흐르는 동안, 그 스스로가 홀로 안간힘을 쓰며 지켜낸 것이 무엇이었는지, 봉인 되어 긴 시간을 갇혀버린 것은 오히려 자신이 아니었는지 혼란을 느끼고 있었다.
+For thousands of years, a mysterious melody has mesmerized the guardian. After a millennia of slumber, the guardian became confused about what he had been protecting all these years, and began to suspect that he might be the one who has been sealed and hidden away.
+*/
+ MSG_QUEST_INFO_03 = 0x9b4,
+/*20171018 to latest
+유혹의 노랫말이 최고조에 이르렀을 때, 지상의 끝 스플랑디드와 부유대륙 알프헤임을 잇는 다리, 비프로스트에 거대한 균열이 생겨났고, 그로 인해 두 세계간의 왕래가 끊기면서 사람들은 큰 불편을 겪게 되었다.
+When the melody reached its peak, a giant crevice appeared in Bifrost, the bridge between Splendide, the end of the world and the floating continent of Alfheim. As a result, the two worlds were cut off from each other, causing a big problem for the people.
+*/
+ MSG_QUEST_INFO_04 = 0x9b5,
+/*20171018 to latest
+비프로스트의 통로는 이제 미궁숲 뿐. 근원조차 알 수 없는 그곳을 무사히 통과 한 사람은 지금까지 아무도 없었다.
+Now, the only way to get to Bifrost is through the Labyrinth Forest. Nobody knows how the forest came to exist, and nobody has ever come out of it alive...
+*/
+ MSG_QUEST_INFO_05 = 0x9b6,
+/*20171018 to latest
+숱한 모험가들을 집어 삼킨 혼돈의 지옥, 미궁숲은 그 속을 방황하는 이름 모를 여인의 마음처럼 더욱 깊고 혼란스럽게 확장되고 있었다.
+Swallowed countless adventurers to put a hell of confusion, wandering in the forest labyrinth of nowhere, like the heart of a woman was being extend deeper confusion.
+*/
+ MSG_QUEST_INFO_06 = 0x9b7,
+/*20171018 to latest
+숫자만 입력 가능합니다.
+You can enter only numbers.
+*/
+ MSG_BANK_CHECK_NUM = 0x9b8,
+/*20171018 to latest
+교환창 또는 상점이 활성화 된 상태에서는 입출금을 하실수 없습니다.
+Exchange or store window is active and can not register the withdrawal.
+*/
+ MSG_BANK_PROHIBIT = 0x9b9,
+/*20171018 to latest
+바로가기
+Go to
+*/
+ MSG_QUEST_INFO_00 = 0x9ba,
+/*20171018 to latest
+아이템 비교
+Item Compare
+*/
+ MSG_ITEM_COMPARISON = 0x9bb,
+/*20171018 to latest
+현재 장착하려고 하는 총기가 장착하고 있는 탄환에 맞지 않습니다
+Now you are trying to mount the gun equipped with bullet does not meet
+*/
+ MSG_WRONG_GUN = 0x9bc,
+/*20171018 to latest
+현재 장착하려고 하는 탄환이 장착하고 있는 총기와 맞지 않습니다
+Now you are trying to mount the guns and bullets will not fit mounted
+*/
+ MSG_WRONG_BULLET = 0x9bd,
+/*20171018 to latest
+판매할 아이템을 등록하지 않았습니다. 판매하실 아이템을 등록해 주세요
+Has not registered to sell the item. Please register to sell the item
+*/
+ MSG_BUYINGSTORE_MAKEWND_ADD_GOODS = 0x9be,
+/*20171018 to latest
+ITEM
+*/
+ MSG_ITEM_IN_MAIL_SYSTEM = 0x9bf,
+/*20171018 to latest
+길드 창고를 이용할 수 없습니다.
+Guild storage is not available.
+*/
+ MSG_GUILD_STORAGE_OPEN_ERROR = 0x9c0,
+/*20171018 to latest
+길드에 가입되어 있지 않습니다. 가입 후 이용해주세요.
+Guild is not subscribed to. After signing up, please use
+*/
+ MSG_GUILD_STORAGE_OPEN_NO_JOIN_GUILD = 0x9c1,
+/*20171018 to latest
+다른 길드원이 사용중입니다. 잠시 후 이용해주세요.
+Two other guild members are in use. Please use it after a while.
+*/
+ MSG_GUILD_STORAGE_WARNING_USING_ANOTHER_MEMBER = 0x9c2,
+/*20171018 to latest
+창고권한
+Storage Permission
+*/
+ MSG_GUILD_STORAGE_PERMISSON = 0x9c3,
+/*20171018 to latest
+길드창고
+Guild Storage
+*/
+ MSG_GUILD_STORAGE_TITLE = 0x9c4,
+/*20171018 to latest
+길드창고의 사용 권한이 없습니다.
+You do not have permission to use guild storage.
+*/
+ MSG_GUILD_STORAGE_PERMISSON_WARNING_MSG = 0x9c5,
+/*20171018 to latest
+한정판매 등록창
+Limited Sale Registration Window
+*/
+ MSG_BARGAINSALE_TOOLWND_TITLE = 0x9c6,
+/*20171018 to latest
+아이템 DB명
+Item DB Name
+*/
+ MSG_BARGAINSALE_TOOLWND_DB_NAME = 0x9c7,
+/*20171018 to latest
+아이템 DB번호
+Item DB Number
+*/
+ MSG_BARGAINSALE_TOOLWND_DB_NUMBER = 0x9c8,
+/*20171018 to latest
+판매 갯수
+Number of Sale
+*/
+ MSG_BARGAINSALE_TOOLWND_SELL_COUNT = 0x9c9,
+/*20171018 to latest
+판매 시작시간
+Sale Start Time
+*/
+ MSG_BARGAINSALE_TOOLWND_SELL_STARTTIME = 0x9ca,
+/*20171018 to latest
+판매할 시간
+Time to sell
+*/
+ MSG_BARGAINSALE_TOOLWND_SELL_PERIODTIME = 0x9cb,
+/*20171018 to latest
+판매할 갯수를 입력해 주세요
+Please enter number you want to sell
+*/
+ MSG_BARGAINSALE_TOOLWND_INPUT_COUNT_MSG = 0x9cc,
+/*20171018 to latest
+판매 시작시간을 입력해 주세요
+Enter start time of sale
+*/
+ MSG_BARGAINSALE_TOOLWND_INPUT_STARTTIME_MSG = 0x9cd,
+/*20171018 to latest
+판매 시작시간의 범위가 맞지 않습니다
+Start time does not match the scope of sales.
+*/
+ MSG_BARGAINSALE_TOOLWND_WRONG_RANGE_MSG = 0x9ce,
+/*20171018 to latest
+판매할 시간을 입력해 주세요
+Please enter the time
+*/
+ MSG_BARGAINSALE_TOOLWND_INPUT_PERIODTIME_MSG = 0x9cf,
+/*20171018 to latest
+Item DB Name을 입력해 주세요
+Please enter the Item DB Name
+*/
+ MSG_BARGAINSALE_TOOLWND_INPUT_ITEMDBNAME_MSG = 0x9d0,
+/*20171018 to latest
+Item ID 조회에 실패하였습니다. 확인 후 다시 시도해 주시기 바랍니다
+Item ID lookup failed. Please try again later
+*/
+ MSG_BARGAINSALE_TOOLWND_ITEMID_CHECK_FAILED_MSG = 0x9d1,
+/*20171018 to latest
+>> ItemName : %s / Price : %dc / 수량 : %d / 판매기간 : %d월:%d일:%d시:%d분 ~ %d월:%d일:%d시:%d분
+>> ItemName: %s / Price: %dc / Quantity: %d / TimeOfSale: %dMonth:%dDay:%dMinute:%dSecond ~ %dMonth:%dDay:%dMinute:%dSecond
+*/
+ MSG_BARGAINSALE_TOOLWND_RESULT_FORMAT = 0x9d2,
+/*20171018 to latest
+등록에 성공하였습니다
+Registration successful
+*/
+ MSG_BARGAINSALE_TOOLWND_APPLY_SUCCESS_MSG = 0x9d3,
+/*20171018 to latest
+등록에 실패하였습니다. 다시 시도해 주시기 바랍니다.
+Registration failure. Please try again later.
+*/
+ MSG_BARGAINSALE_TOOLWND_APPLY_FAILED_MSG = 0x9d4,
+/*20171018 to latest
+이미 등록된 아이템이 있습니다. 다시 시도해 주시기 바랍니다.
+Item has already been registered. Please try again later.
+*/
+ MSG_BARGAINSALE_TOOLWND_ALREADY_REGISTERED_MSG = 0x9d5,
+/*20171018 to latest
+아이템 삭제에 실패 하였습니다. 다시 시도해 주시기 바랍니다.
+Failed to delete the item. Please try again later.
+*/
+ MSG_BARGAINSALE_TOOLWND_DELETE_FAILED_MSG = 0x9d6,
+/*20171018 to latest
+%s 아이템이 삭제되었습니다.
+%s item has been deleted.
+*/
+ MSG_BARGAINSALE_TOOLWND_DELETE_SUCCESS_MSG = 0x9d7,
+/*20171018 to latest
+특가
+Special
+*/
+ MSG_BARGAINSALE_CASHSHOP_TAB_NAME = 0x9d8,
+/*20171018 to latest
+한정판매 아이템 판매수량 갱신
+Sales limited sale item update
+*/
+ MSG_BARGAINSALE_CASHSHOP_REFRESH_BTN_TOOLTIP = 0x9d9,
+/*20171018 to latest
+판매종료
+Discontinued
+*/
+ MSG_BARGAINSALE_CASHSHOP_TIMER = 0x9da,
+/*20171018 to latest
+수량갱신이 필요합니다
+Quantity update is required
+*/
+ MSG_BARGAINSALE_CASHSHOP_REFRESH_MSG = 0x9db,
+/*20171018 to latest
+재고가 부족하여 %d 개 만큼만 구입합니다
+The %d is out of stock or to buy as much as
+*/
+ MSG_BARGAINSALE_CASHSHOP_CHECK_COUNT_MSG = 0x9dc,
+/*20171018 to latest
+%s 아이템의 특가판매가 시작되었습니다
+%s Items are on sale
+*/
+ MSG_BARGAINSALE_START_MSG = 0x9dd,
+/*20171018 to latest
+%s 아이템의 매진 또는 판매시간만료로 인해 한정판매가 종료되었습니다
+%s time-out or sale of the items sold has been shut down due to the limited sales
+*/
+ MSG_BARGAINSALE_CLOSE_MSG = 0x9de,
+/*20171018 to latest
+/한정판매
+/limitedsale
+*/
+ MSG_BARGAINSALE_TOOLWND_CALL = 0x9df,
+/*20171018 to latest
+http://www.ragnarokeurope.com/news/home-r70.html
+*/
+ MSG_FRANCE_CASHSHOP_URL = 0x9e0,
+/*20171018 to latest
+http://www.ragnarokeurope.com/index.php?rubrique=70&Steam
+*/
+ MSG_FRANCE_CASHSHOP_URL_STEAM = 0x9e1,
+/*20171018 to latest
+구입에 성공한 품목
+Item purchase successful
+*/
+ MSG_PARA_RESULT_TITLE = 0x9e2,
+/*20171018 to latest
+주문량이 재고량을 초과하였습니다.
+You do not have enough items.
+*/
+ MSG_PARA_WRONG_PURCHASE_COUNT_MSG = 0x9e3,
+/*20171018 to latest
+초대할수 없는 케릭터 이름입니다.
+Name of the character that cannot be invited.
+*/
+ MSG_PARTY_INVITE = 0x9e4,
+/*20171018 to latest
+길드초대할수 없는 케릭터 이름입니다.
+You cannot invite the character to the guild.
+*/
+ MSG_GUILD_INVITE = 0x9e5,
+/*20171018 to latest
+일부 품목은 이미 판매되어 구입에 실패하였습니다.
+Item already Sold,Purchase Failed.
+*/
+ MSG_PARA_PURCHASE_ITEM_FAIL = 0x9e6,
+/*20171018 to latest
+현재 위치에서 워프 장소를 기억 할 수 없습니다.
+The warp spot cannot be memorized in current position.
+*/
+ MSG_NOWARPSKILL2 = 0x9e7,
+/*20171018 to latest
+무게가 초과되어 아이템을 구매할 수 없습니다.
+Cannot purchase item, You exceeded the weight.
+*/
+ MSG_PARA_PURCHASE_ITEM_WEIGHT = 0x9e8,
+/*20171018 to latest
+No.
+*/
+ MSG_GUILD_STORAGE_NUMBER = 0x9e9,
+/*20171018 to latest
+아이템
+Item
+*/
+ MSG_GUILD_STORAGE_ITEM = 0x9ea,
+/*20171018 to latest
+개수
+Number
+*/
+ MSG_GUILD_STORAGE_ITEM_COUNT = 0x9eb,
+/*20171018 to latest
+이름
+Name
+*/
+ MSG_GUILD_STORAGE_USER_NAME = 0x9ec,
+/*20171018 to latest
+시간
+Time
+*/
+ MSG_GUILD_STORAGE_LOG_TIME = 0x9ed,
+/*20171018 to latest
+입/출
+Input/Output
+*/
+ MSG_GUILD_STORAGE_ITEM_IN_OUT = 0x9ee,
+/*20171018 to latest
+로그가 존재하지 않습니다.
+Log does not exist.
+*/
+ MSG_GUILD_STORAGE_LOG_FINISH = 0x9ef,
+/*20171018 to latest
+전 체
+Entire
+*/
+ MSG_GUILD_STORAGE_LOG_ALL = 0x9f0,
+/*20171018 to latest
+넣 기
+Insert Symbol
+*/
+ MSG_GUILD_STORAGE_LOG_IN = 0x9f1,
+/*20171018 to latest
+빼 기
+Remaining Time
+*/
+ MSG_GUILD_STORAGE_LOG_OUT = 0x9f2,
+/*20171018 to latest
+길드 창고 내역
+Guild Storage Logs
+*/
+ MSG_GUILD_STORAGE_LOG_WND_NAME = 0x9f3,
+/*20171018 to latest
+내역은 최근 100개만 표시됩니다.
+100 entries are displayed.
+*/
+ MSG_GUILD_STORAGE_LOG_CAUTION = 0x9f4,
+/*20171018 to latest
+길드창고의 사용 시간 2분이 경과되어 자동으로 종료됩니다.
+Guild Storage is open only for 2 minutes, and will close automatically.
+*/
+ MSG_GUILD_STORAGE_CLOSE_TIMEOUT = 0x9f5,
+/*20171018 to latest
+Incorrect GameSamba ID. Please Try Again.
+*/
+ MSG_INCORRECT_GAMESAMBEID = 0x9f6,
+/*20171018 to latest
+%s [%d옵션] : %d 개
+%s [%d Option]: %d Quantity
+*/
+ MSG_EA5 = 0x9f7,
+/*20171018 to latest
+코인이 필요합니다.
+Requires a Coin.
+*/
+ MSG_USESKILL_FAIL_COINTS = 0x9f8,
+/*20171018 to latest
+코인이 %d 개가 필요합니다.
+%d Coins are required.
+*/
+ MSG_USESKILL_FAIL_COINTS_NUM = 0x9f9,
+/*20171018 to latest
+개틀링건 계열의 총기류를 장착한 상태여야 합니다.
+Gatling Gun should be equipped with bullets.
+*/
+ MSG_FAIL_NEED_EQUIPPED_GUN_GATLING = 0x9fa,
+/*20171018 to latest
+샷건 계열의 총기류를 장착한 상태여야 합니다.
+Shotguns should be equipped with bullets.
+*/
+ MSG_FAIL_NEED_EQUIPPED_GUN_SHOTGUN = 0x9fb,
+/*20171018 to latest
+라이플 계열의 총기류를 장착한 상태여야 합니다.
+Rifle should be equipped with bullets.
+*/
+ MSG_FAIL_NEED_EQUIPPED_GUN_RIFLE = 0x9fc,
+/*20171018 to latest
+리볼버 계열의 총기류를 장착한 상태여야 합니다.
+Pair of Revolver should be equipped with bullets.
+*/
+ MSG_FAIL_NEED_EQUIPPED_GUN_HANDGUN = 0x9fd,
+/*20171018 to latest
+성속성 블릿을 장착해야 합니다
+[Silver Bullet] weapon class must be equipped.
+*/
+ MSG_FAIL_NEED_EQUIPPED_PROPERTY_SAINT_BULLET = 0x9fe,
+/*20171018 to latest
+아이템 판매 내역
+Item Sell History
+*/
+ MSG_MERCHANT_SOLD_ITEM_LOG = 0x9ff,
+/*20171018 to latest
+아이템 구매 내역
+Item Purchase History
+*/
+ MSG_MERCHANT_ITEM_BUY_LOG = 0xa00,
+/*20171018 to latest
+그레네이드런쳐 계열의 총기류를 장착한 상태여야 합니다.
+Grenade Launcher should be equipped with bullets.
+*/
+ MSG_FAIL_NEED_EQUIPPED_GUN_GRANADE = 0xa01,
+/*20171018 to latest
+[히트배럴],[매드니스 캔슬러],[플래티넘 알터] 의 효과들은 중첩하여 사용할 수 없습니다.
+[Heat barrel],[Last Stand],[Platinum Alter] cannot be used while sitting.
+*/
+ MSG_FAIL_DUPLICATE_HEAT_BARREL_GS_MADNESSCANCEL_P_ALTER = 0xa02,
+/*20171018 to latest
+현재 맵에서는 사용할 수 없는 스킬입니다.
+Cannot use skill in this map.
+*/
+ MSG_USESKILL_FAIL_MAP = 0xa03,
+/*20171018 to latest
+길드 창고를 이용중인 경우 창고의 모든 아이템이 사라지게 됩니다.
+If you are using a guild storage, all items inside it will disappear.
+*/
+ MSG_GUILD_STORAGE_WARNING = 0xa04,
+/*20171018 to latest
+http://ragnarok.gamesamba.com/paytest.html
+http://ragnarok.gamesamba.com/
+*/
+ MSG_AMERICA_CASHSHOP_URL_GAMESAMBA = 0xa05,
+/*20171018 to latest
+로그인을 위해 패스워드를 입력해주세요.
+Please enter a password to login.
+*/
+ MSG_SECOND_PASSWORD_INFO_4 = 0xa06,
+/*20171018 to latest
+펫 진화
+Pet Evolution
+*/
+ MSG_PET_EVOLUTION = 0xa07,
+/*20171018 to latest
+진화 - %s
+Evolution - %s
+*/
+ MSG_PET_EVOLUTION_WITH_PET_NAME = 0xa08,
+/*20171018 to latest
+진화에는 다음의 재료가 필요합니다.
+Evolution requires the following ingredients:
+*/
+ MSG_PET_EVOLUTION_NEED_ITEM = 0xa09,
+/*20171018 to latest
+진화 하시겠습니까?
+Are you sure you want to evolve your pet?
+*/
+ MSG_DO_YOU_WANT_TO_EVOLVE_PET = 0xa0a,
+/*20171018 to latest
+알 수 없는 오류
+Unknown Error
+*/
+ MSG_PET_EVOLUTION_FAIL_UNKNOWN = 0xa0b,
+/*20171018 to latest
+소환된펫을 갖고 있지 않습니다.
+Pet Cannot be hatched.
+*/
+ MSG_PET_EVOLUTION_FAIL_NOTEXIST_CALLPET = 0xa0c,
+/*20171018 to latest
+요청한 것이 펫알이 아닙니다.
+It is not requested petal.
+*/
+ MSG_PET_EVOLUTION_FAIL_NOT_PETEGG = 0xa0d,
+/*20171018 to latest
+진화 재료가 부족합니다.
+Evolution material is low.
+*/
+ MSG_PET_EVOLUTION_FAIL_RECIPE = 0xa0e,
+/*20171018 to latest
+진화에 필요한 재료가 부족합니다.
+Insufficient materials for evolution.
+*/
+ MSG_PET_EVOLUTION_FAIL_MATERIAL = 0xa0f,
+/*20171018 to latest
+친밀도가 절친인 상태에서만 진화가 가능합니다.
+Loyal Intimacy is required to evolve.
+*/
+ MSG_PET_EVOLUTION_FAIL_RG_FAMILIAR = 0xa10,
+/*20171018 to latest
+펫 자동 먹이 주기
+Automatic feeding
+*/
+ MSG_PET_AUTO_FEEDING = 0xa11,
+/*20171018 to latest
+펫에게 먹이를 주었습니다. '%s' 잔여량 %d개
+Feeding the pet. %d '%d' remaining
+*/
+ MSG_PET_AUTO_FEEDING_REST = 0xa12,
+/*20171018 to latest
+펫 자동 먹이 주기 활성화 On
+Automatic feeding turned On
+*/
+ MSG_PET_AUTO_FEEDING_ON = 0xa13,
+/*20171018 to latest
+펫 자동 먹이 주기 활성화 Off
+Automatic feeding turned Off
+*/
+ MSG_PET_AUTO_FEEDING_OFF = 0xa14,
+/*20171018 to latest
+갱신
+Update
+*/
+ MSG_REFRESH = 0xa15,
+/*20171018 to latest
+%d 분 전
+%d minutes ago
+*/
+ MSG_TIME_LINE_MINUTE = 0xa16,
+/*20171018 to latest
+%d 시간 전
+%d hours ago
+*/
+ MSG_TIME_LINE_HOUR = 0xa17,
+/*20171018 to latest
+%d 일 전
+%d days ago
+*/
+ MSG_TIME_LINE_DAY = 0xa18,
+/*20171018 to latest
+%d%% ( Premium %d%% + %s Server )
+%d%%% ( Premium %d%%% + %s Server )
+*/
+ MSG_BASIC_EXP_MSG_PH = 0xa19,
+/*20171018 to latest
+우편 발송
+Mailed
+*/
+ MSG_SEND_MAIL = 0xa1a,
+/*20171018 to latest
+메일이 전송되었습니다.
+Your mail has been sent.
+*/
+ MSG_MAIL_SENT = 0xa1b,
+/*20171018 to latest
+아이템이 인벤토리로 이동되었습니다.
+This item has been moved to the inventory.
+*/
+ MSG_GET_ITEMS_FROM_MAIL_SUCCEED = 0xa1c,
+/*20171018 to latest
+아이템 받기가 실패하였습니다.
+Failed to get items.
+*/
+ MSG_GET_ITEMS_FROM_MAIL_FAILED = 0xa1d,
+/*20171018 to latest
+인벤토리를 비워주세요
+Please empty your inventory.
+*/
+ MSG_GET_ITEMS_FROM_MAIL_OVERWEIGHT = 0xa1e,
+/*20171018 to latest
+제니를 받았습니다.
+Zeny received.
+*/
+ MSG_GET_ZENY_FROM_MAIL_SUCCEED = 0xa1f,
+/*20171018 to latest
+제니 받기가 실패하였습니다.
+Failed to get zeny.
+*/
+ MSG_GET_ZENY_FROM_MAIL_FAILED = 0xa20,
+/*20171018 to latest
+제니의 한계치를 넘었습니다.
+Exceeded the limits of zenny.
+*/
+ MSG_GET_ZENY_FROM_MAIL_OVERAMOUNT = 0xa21,
+/*20171018 to latest
+아이템 첨부 성공
+Items attached success
+*/
+ MSG_SET_ITEMS_TO_MAIL_SUCCEED = 0xa22,
+/*20171018 to latest
+받는 사람의 이름이 반드시 들어가야 합니다.
+The name of the recipient must be included.
+*/
+ MSG_INVALID_MAIL_RECIEVER_INFO = 0xa23,
+/*20171018 to latest
+제목의 길이는 한글 2자~25자, 영문 4자~50자 이어야 합니다.
+The length of the title must be 4 to 50 characters long.
+*/
+ MSG_INVALID_MAIL_TITLE_INFO = 0xa24,
+/*20171018 to latest
+메일 전송이 실패하였습니다.
+Mail delivery failed.
+*/
+ MSG_FAILED_SEND_MAIL = 0xa25,
+/*20171018 to latest
+적절하지 못한 아이템으로 전송 실패하였습니다.
+Transmission has failed to inappropriate items.
+*/
+ MSG_FAILED_SEND_MAIL_ITEM = 0xa26,
+/*20171018 to latest
+받는 사람의 정보가 존재하지 않습니다.
+Information of the recipient does not exist.
+*/
+ MSG_FAIELD_SEND_MAIL_TO = 0xa27,
+/*20171018 to latest
+%s [%d옵션]
+%s [%d Option]
+*/
+ MSG_EA6 = 0xa28,
+/*20171018 to latest
+레벨은 1~%d 사이의 숫자를 입력해 주세요.
+Level, enter a number between 1 and %d.
+*/
+ MSG_PARTY_BOOKING_ERR5R2 = 0xa29,
+/*20171018 to latest
+소지창의 여유공간을 확보해주세요.
+Please free the window possessing space.
+*/
+ MSG_ITEM_WND_OVERFULL = 0xa2a,
+/*20171018 to latest
+메일 보내기 횟수가 초과되었습니다.
+Sending mail count exceeded.
+*/
+ MSG_FAILED_MAIL_LIMIT_CNT = 0xa2b,
+/*20171018 to latest
+메일을 열 수 없습니다.
+You can not open the mail.
+*/
+ MSG_FAILED_TO_WRITE_MAIL = 0xa2c,
+/*20171018 to latest
+You are currently joined in CLan !!
+You are currently joined in Clan !!
+*/
+ MSG_JOINED_IN_CLAN = 0xa2d,
+/*20171018 to latest
+골드 PC방 마일리지 정보
+Gold PC rooms mileage information
+*/
+ MSG_GOLDPCCAFE_MILEAGE = 0xa2e,
+/*20171018 to latest
+펫 액세서리를 해제해야 진화가 가능합니다.
+Unequip pet accessories first to start evolution
+*/
+ MSG_PET_EVOLUTION_FAIL_PET_ACC_OFF = 0xa2f,
+/*20171018 to latest
+%d 분 후
+%d minutes later
+*/
+ MSG_TIME_LINE_MINUTE2 = 0xa30,
+/*20171018 to latest
+%d 시간 후
+%d hours later
+*/
+ MSG_TIME_LINE_HOUR2 = 0xa31,
+/*20171018 to latest
+%d 일 후
+%d days later
+*/
+ MSG_TIME_LINE_DAY2 = 0xa32,
+/*20171018 to latest
+확인 버튼을 눌러 C-CODE를 확인하세요.
+Press the OK button to confirm the C-CODE.
+*/
+ MSG_INVALID_CCODE_INFO = 0xa33,
+/*20171018 to latest
+첨부된 물품을 획득 후 삭제가 가능합니다.
+After obtaining the attached article can be deleted.
+*/
+ MSG_FAILED_DELETE_MAIL = 0xa34,
+/*20171018 to latest
+현재 보유 제니 보다 많은 제니를 보낼 수 없습니다.
+You can not send any more zeny.
+*/
+ MSG_FAILED_SEND_MAIL_ZENY = 0xa35,
+/*20171018 to latest
+수수료 : %s Zeny
+Fee: %s Zeny
+*/
+ MSG_SEND_MAIL_COMMISSION = 0xa36,
+/*20171018 to latest
+받는 사람의 이름이 존재하지 않습니다.
+The recipient's name does not exist.
+*/
+ MSG_FAILE_MAIL_RECIEVER_INFO = 0xa37,
+/*20171018 to latest
+E X P : %.1f%% ( basic %.1f%% premium %.1f%% + %s %.1f%%)
+EXP : %.1f%% (Basic %.1f%% Premium %.1f%% + %s %.1f%%)
+*/
+ MSG_TAIWAN_PERSONALINFO_EXPMSG = 0xa38,
+/*20171018 to latest
+DROP : %.1f%% ( basic %.1f%% premium %.1f%% + %s %.1f%%)
+DROP : %.1f%% (Basic %.1f%% Premium %.1f%% + %s %.1f%%)
+*/
+ MSG_TAIWAN_PERSONALINFO_DROPMSG = 0xa39,
+/*20171018 to latest
+DEATH : %.1f%% ( basic %.1f%% premium %.1f%% + %s %.1f%%)
+DEATH: %.1f%% (Basic %.1f%% Premium %.1f%% + %s %.1f%%)
+*/
+ MSG_TAIWAN_PERSONALINFO_DEATHMSG = 0xa3a,
+/*20171018 to latest
+골드 PC방 마일리지는 최대 %d점까지 모을 수 있습니다.
+You can accumulate points of PC Gold-club up to %d points maximum.
+*/
+ MSG_MILEAGE_HELP = 0xa3b,
+/*20171018 to latest
+해당 서버에서 사용 할 수 없는 기능 입니다
+This function can not be used on the server.
+*/
+ MSG_RESTRAINT_OF_TRADE_1 = 0xa3c,
+/*20171018 to latest
+수래 이용이 불 가능한 서버 입니다.
+Imposible to use in server.
+*/
+ MSG_RESTRAINT_OF_TRADE_2 = 0xa3d,
+/*20171018 to latest
+옥션 이용이 불 가능한 서버 입니다.
+The auction is not available in server.
+*/
+ MSG_RESTRAINT_OF_TRADE_3 = 0xa3e,
+/*20171018 to latest
+거래가 불 가능한 서버 입니다.
+The deal is imposible in server.
+*/
+ MSG_RESTRAINT_OF_TRADE_4 = 0xa3f,
+/*20171018 to latest
+아이템 버리기가 불 가능한 서버 입니다.
+Items discard is imposible in server.
+*/
+ MSG_RESTRAINT_OF_TRADE_5 = 0xa40,
+/*20171018 to latest
+상점 판매 기능을 사용할수 없습니다.
+Stores selling features are not available.
+*/
+ MSG_RESTRAINT_OF_TRADE_6 = 0xa41,
+/*20171018 to latest
+소환물의 SP가 부족합니다.
+The SP's summoned enough.
+*/
+ MSG_USESKILL_FAIL_SUMMON_SP_INSUFFICIENT = 0xa42,
+/*20171018 to latest
+%s/%s
+*/
+ MSG_SEND_MAIL_WEIGHT = 0xa43,
+/*20171018 to latest
+메일 내용의 최대 길이는 1K 이하 입니다.
+The maximum length of the message content is 1K.
+*/
+ MSG_INVALID_MAIL_CONTENTS_INFO = 0xa44,
+/*20171018 to latest
+아이템 첨부 실패
+Failed to attach an item.
+*/
+ MSG_SET_ITEMS_TO_MAIL_FAILED = 0xa45,
+/*20171018 to latest
+메일에 첨부할수 있는 아이템의 무게가 초과되었습니다.
+The weight of the items that can be attached to mail has been exceeded.
+*/
+ MSG_SET_ITEMS_TO_MAIL_OVER_WEIGHT = 0xa46,
+/*20171018 to latest
+이미 서비스 중입니다. 잠시 후 다시 시도해 주세요.
+Is already in service. Please try again in a few minutes.
+*/
+ MSG_DYNAMICNPC_FAIL_DUPLICATENAME = 0xa47,
+/*20171018 to latest
+행운의 룰렛창을 열 수 없습니다.
+Unable to open the window of Lucky Roulette.
+*/
+ MSG_FAILED_OPEN_ROULLETTE = 0xa48,
+/*20171018 to latest
+행운의 룰렛창을 닫을 수 없습니다.
+Unable to close the window of the Lucky Roulette.
+*/
+ MSG_FAILED_CLOSE_ROULLETTE = 0xa49,
+/*20171018 to latest
+행운의 룰렛을 시작 할 수 없습니다.
+You can not start a roulette wheel of fortune.
+*/
+ MSG_FAILED_GENERATE_ROULLETTE = 0xa4a,
+/*20171018 to latest
+행운의 룰렛을 시작하기 위해서는 포인트가 필요합니다.
+Points is required to play Lucky Roulette.
+*/
+ MSG_NOT_ENOUGH_ROULLETTE_POINT = 0xa4b,
+/*20171018 to latest
+당첨된 아이템을 수령할 수 없습니다.
+You can not receive a winning items.
+*/
+ MSG_FAILED_RECV_ITEM = 0xa4c,
+/*20171018 to latest
+인벤토리에 아이템 개수가 초과되었습니다.
+The number of items in the inventory has been exceeded.
+*/
+ MSG_FAILED_RECV_ITEM_OVERCOUNT = 0xa4d,
+/*20171018 to latest
+무게가 초과하였습니다. 소지창의 여유공간을 확보해주세요.
+The weight has been exceeded. Please free up the possesion window.
+*/
+ MSG_FAILED_RECV_ITEM_OVERWEIGHT = 0xa4e,
+/*20171018 to latest
+노점 개설 실패.
+Failed to open stalls.
+*/
+ MSG_MERCHANTSHOP_MAKING_FAIL = 0xa4f,
+/*20171018 to latest
+룰렛이 돌고 있습니다. 경품을 확인 후에 다시 시도해주세요.
+The roulette wheel is spinning. Please try again after checking with prizes.
+*/
+ MSG_FAILED_CLOSE_ROULLETTEWND = 0xa50,
+/*20171018 to latest
+행운의 룰렛
+Lucky Roulette
+*/
+ MSG_ROULLETTE_WND = 0xa51,
+/*20171018 to latest
+아이템 판매 시 소리로 알림
+Notify when item sell out
+*/
+ MSG_SOUNDEFFECT_ITEMSELLWND = 0xa52,
+/*20171018 to latest
+수수료를 확인해주세요.
+Please check the fees.
+*/
+ MSG_FAILED_SEND_MAIL_ITEMS = 0xa53,
+/*20171018 to latest
+유저이름 확인
+Verify user name
+*/
+ MSG_CHECK_USER_NAME = 0xa54,
+/*20171018 to latest
+삭제 예정
+Schedule deletion
+*/
+ MSG_DELETE_DUE_DATE = 0xa55,
+/*20171018 to latest
+달성과제
+Achievable challenge
+*/
+ MSG_ACHIEVEMENT_SYSTEM = 0xa56,
+/*20171018 to latest
+달성총점
+Achieve overall
+*/
+ MSG_ACHIEVEMENT_TOTAL_SCORE = 0xa57,
+/*20171018 to latest
+달성등급
+Achieve rank
+*/
+ MSG_ACHIEVEMENT_GRADE = 0xa58,
+/*20171018 to latest
+다음 달성등급까지 [%5d]점
+The following compensation box until [% 5d] point
+*/
+ MSG_ACHIEVEMENT_SCORE_REQUIRED_TO_REWARD = 0xa59,
+/*20171018 to latest
+진척상황
+Progress
+*/
+ MSG_ACHIEVEMENT_SUMMARY_TITLE = 0xa5a,
+/*20171018 to latest
+최근 달성 업적
+Recent Achievements
+*/
+ MSG_ACHIEVEMENT_RECENT_ACHIEVEMENT = 0xa5b,
+/*20171018 to latest
+仙貝 품목
+Cracker Item
+*/
+ MSG_CASH_GEDARE1 = 0xa5c,
+/*20171018 to latest
+仙貝 : %d / %d
+Cracker : %d / %d
+*/
+ MSG_CASH_GEDARE2 = 0xa5d,
+/*20171018 to latest
+仙貝가 부족합니다.
+Cracker is low.
+*/
+ MSG_CASH_GEDARE_FAIL_MONEY = 0xa5e,
+/*20171018 to latest
+%s
+%s
+*/
+ MSG_CASH_GEDARE_MONEY = 0xa5f,
+/*20171018 to latest
+개요
+Overview
+*/
+ MSG_ACHIEVEMENT_TAB_SUMMARY = 0xa60,
+/*20171018 to latest
+일반
+General
+*/
+ MSG_ACHIEVEMENT_TAB_GENERAL = 0xa61,
+/*20171018 to latest
+캐릭터
+Role
+*/
+ MSG_ACHIEVEMENT_TAB_GENERAL_CHARACTER = 0xa62,
+/*20171018 to latest
+행동
+Action
+*/
+ MSG_ACHIEVEMENT_TAB_GENERAL_ACTION = 0xa63,
+/*20171018 to latest
+기타
+Other
+*/
+ MSG_ACHIEVEMENT_TAB_GENERAL_REST = 0xa64,
+/*20171018 to latest
+모험
+Adventure
+*/
+ MSG_ACHIEVEMENT_TAB_ADVENTURE = 0xa65,
+/*20171018 to latest
+룬미드가츠
+Rune Midgarts
+*/
+ MSG_ACHIEVEMENT_TAB_ADVENTURE_RUNEMIDGARTS = 0xa66,
+/*20171018 to latest
+슈발츠발드
+Schwartzvald
+*/
+ MSG_ACHIEVEMENT_TAB_ADVENTURE_SCHWARZWALD = 0xa67,
+/*20171018 to latest
+아루나펠츠
+Arunafeltz
+*/
+ MSG_ACHIEVEMENT_TAB_ADVENTURE_ARUNAFELTZ = 0xa68,
+/*20171018 to latest
+이계
+Commandment
+*/
+ MSG_ACHIEVEMENT_TAB_ADVENTURE_ANOTHERWORLD = 0xa69,
+/*20171018 to latest
+로컬라이징
+Localizing
+*/
+ MSG_ACHIEVEMENT_TAB_ADVENTURE_LOCALIZING = 0xa6a,
+/*20171018 to latest
+던전
+Dungeon
+*/
+ MSG_ACHIEVEMENT_TAB_ADVENTURE_DUNGEON = 0xa6b,
+/*20171018 to latest
+전투
+Battle
+*/
+ MSG_ACHIEVEMENT_TAB_BATTLE = 0xa6c,
+/*20171018 to latest
+결투
+Duel
+*/
+ MSG_ACHIEVEMENT_TAB_BATTLE_PVP = 0xa6d,
+/*20171018 to latest
+수련
+Lily
+*/
+ MSG_ACHIEVEMENT_TAB_BATTLE_TRAINING = 0xa6e,
+/*20171018 to latest
+퀘스트
+Quest
+*/
+ MSG_ACHIEVEMENT_TAB_QUEST = 0xa6f,
+/*20171018 to latest
+에피소드
+Episode
+*/
+ MSG_ACHIEVEMENT_TAB_QUEST_EPISODE = 0xa70,
+/*20171018 to latest
+일반
+General
+*/
+ MSG_ACHIEVEMENT_TAB_QUEST_GENERAL = 0xa71,
+/*20171018 to latest
+메모리얼
+Memorial
+*/
+ MSG_ACHIEVEMENT_TAB_MEMORIAL = 0xa72,
+/*20171018 to latest
+미드가르드
+Midgard
+*/
+ MSG_ACHIEVEMENT_TAB_MEMORIAL_MIDGARD = 0xa73,
+/*20171018 to latest
+이계
+Commandment
+*/
+ MSG_ACHIEVEMENT_TAB_MEMORIAL_ANOTHERWORLD = 0xa74,
+/*20171018 to latest
+기타
+Other
+*/
+ MSG_ACHIEVEMENT_TAB_MEMORIAL_REST = 0xa75,
+/*20171018 to latest
+위업
+Feat
+*/
+ MSG_ACHIEVEMENT_TAB_ACHIEVEMENT = 0xa76,
+/*20171018 to latest
+달성한 과제
+Achieved challenge
+*/
+ MSG_ACHIEVEMENT_TAB_TOTAL = 0xa77,
+/*20171018 to latest
+더 이상 추가할 수 없습니다.
+You cannot add anymore.
+*/
+ MSG_FAIL_ADD_ACHIEVEMENT_TRACING = 0xa78,
+/*20171018 to latest
+< %s > 달성하였습니다.
+< %S > achieved.
+*/
+ MSG_NOTICE_COMPLETE_ACHIEVEMENT = 0xa79,
+/*20171018 to latest
+only otp user login allow
+Only OTP users are allowed
+*/
+ MSG_OTPUSER_ONLY = 0xa7a,
+/*20171018 to latest
+이 버튼을 누를 시, 지정된 상품을 받게되며 룰렛은 초기화 됩니다.
+When this button pressed, you will receive a specified initialized roulette item.
+*/
+ MSG_GET_ROULLETE_PRIZE = 0xa7b,
+/*20171018 to latest
+이 버튼을 누를 시, 깜빡이는 화살표의 라인부터 룰렛을 시작 합니다.
+When this button pressed, the flashing arrows from the lines of the roulette wheel begins.
+*/
+ MSG_NOTICE_NEXT_ROULLETE_STAGE = 0xa7c,
+/*20171018 to latest
+칭호
+Style
+*/
+ MSG_TITLE_EQUIPMENT = 0xa7d,
+/*20171018 to latest
+칭호 해제
+Title release
+*/
+ MSG_TAKEOFF_TITLE = 0xa7e,
+/*20171018 to latest
+길드 생성을 할 수 없는 지역입니다.
+Can't create a Guild in this area.
+*/
+ MSG_GUILD_MAKE_GUILD_NOT_PERMITTED_MAP = 0xa7f,
+/*20171018 to latest
+길드 해체를 할 수 없는 지역입니다.
+Can't disband a Guild in this area.
+*/
+ MSG_GUILD_DISORGANIZE_GUILD_NOT_PERMITTED_MAP = 0xa80,
+/*20171018 to latest
+길드 가입을 할 수 없는 지역입니다.
+Can't join a Guild in this area.
+*/
+ MSG_GUILD_JOIN_GUILD_NOT_PERMITTED_MAP = 0xa81,
+/*20171018 to latest
+길드 탈퇴를 할 수 없는 지역입니다.
+Can't leave a Guild in this area.
+*/
+ MSG_GUILD_LEAVE_GUILD_NOT_PERMITTED_MAP = 0xa82,
+/*20171018 to latest
+길드원 추방을 할 수 없는 지역입니다.
+Can't deport a Guild in this area.
+*/
+ MSG_GUILD_EXPEL_GUILD_NOT_PERMITTED_MAP = 0xa83,
+/*20171018 to latest
+길드직위 변경을 할 수 없는 지역입니다.
+Can't change a Guild title in this area
+*/
+ MSG_GUILD_POSITION_CHANGE_NOT_PERMITTED_MAP = 0xa84,
+/*20171018 to latest
+아이템 소지량을 5칸이상 비워주세요
+Please empty at least 5 amount of possession in item window.
+*/
+ MSG_NOT_ENOUGH_SPACE_IN_ITEM_BODY = 0xa85,
+/*20171018 to latest
+E X P : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%%)
+EXP : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%% )
+*/
+ MSG_JPN_PERSONALINFO_EXPMSG = 0xa86,
+/*20171018 to latest
+DROP : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%%)
+DROP : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%% )
+*/
+ MSG_JPN_PERSONALINFO_DROPMSG = 0xa87,
+/*20171018 to latest
+DEATH : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%%)
+DEATH : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%% )
+*/
+ MSG_JPN_PERSONALINFO_DEATHMSG = 0xa88,
+/*20171018 to latest
+첨부할 수 있는 아이템의 갯수가 초과되었습니다.
+The number of items that can be attached is exceeded.
+*/
+ MSG_SET_ITEMS_TO_MAIL_OVERCOUNT = 0xa89,
+/*20171018 to latest
+아이템 구매 시 소리로 알림
+Notify when item purchased
+*/
+ MSG_SOUNDEFFECT_ITEMBUYWND = 0xa8a,
+/*20171018 to latest
+첨부할 수 없는 아이템입니다.
+Unable to attach the items.
+*/
+ MSG_ID_A8B = 0xa8b,
+/*20171018 to latest
+꽝에 당첨되었으므로 다음 상위 단계의 룰렛을 돌리실 수 없습니다.
+Because you can not win a slam room and turn the roulette of the next higher step.
+*/
+ MSG_ID_A8C = 0xa8c,
+/*20171018 to latest
+답장쓰기
+Replying
+*/
+ MSG_ID_A8D = 0xa8d,
+/*20171018 to latest
+내용읽기
+Read more
+*/
+ MSG_ID_A8E = 0xa8e,
+/*20171018 to latest
+메일삭제
+Delete message
+*/
+ MSG_ID_A8F = 0xa8f,
+/*20171018 to latest
+仙貝 : %d
+Crackers : %d
+*/
+ MSG_ID_A90 = 0xa90,
+/*20171018 to latest
+%s %s 仙貝
+%s %s crackers
+*/
+ MSG_ID_A91 = 0xa91,
+/*20171018 to latest
+仙貝
+Crackers
+*/
+ MSG_ID_A92 = 0xa92,
+/*20171018 to latest
+Total : %d 仙貝
+Total : %d Crackers
+*/
+ MSG_ID_A93 = 0xa93,
+/*20171018 to latest
+%d -> %s 仙貝
+%d -> %s Crackers
+*/
+ MSG_ID_A94 = 0xa94,
+/*20171018 to latest
+%s 仙貝
+%s Crackers
+*/
+ MSG_ID_A95 = 0xa95,
+/*20171018 to latest
+ Current 仙貝 : %s
+ Current Crackers : %s
+*/
+ MSG_ID_A96 = 0xa96,
+/*20171018 to latest
+ %s : %s 仙貝
+ %s : %s Crackers
+*/
+ MSG_ID_A97 = 0xa97,
+/*20171018 to latest
+%10s 仙貝
+%10s Crackers
+*/
+ MSG_ID_A98 = 0xa98,
+/*20171018 to latest
+Total : %s 仙貝
+Total : %s Crackers
+*/
+ MSG_ID_A99 = 0xa99,
+/*20171018 to latest
+※수수료 3% / 최소 1仙貝의 수수료 차감
+* Commission 3% / Minimum 1 Crackers comission deducted
+*/
+ MSG_ID_A9A = 0xa9a,
+/*20171018 to latest
+仙貝 입니다.
+The Crackers.
+*/
+ MSG_ID_A9B = 0xa9b,
+/*20171018 to latest
+^0000ff仙貝 이상^000000입니다.
+입력금액이 맞습니까?
+^0000ff more than crackers^000000Did you enter the correct amount?
+*/
+ MSG_ID_A9C = 0xa9c,
+/*20171018 to latest
+10억仙貝이상 안전 확인
+Over than 10billions secure check
+*/
+ MSG_ID_A9D = 0xa9d,
+/*20171018 to latest
+10억 仙貝 이상 입력하셔도 가격은 10억 仙貝로 판매됩니다.
+If you fill over 1 billion, the price will be automatically set as 10 billion Xianbei.
+*/
+ MSG_ID_A9E = 0xa9e,
+/*20171018 to latest
+9,999仙貝 이상 입력하셔도 가격은 9,999仙貝로 판매됩니다.
+If you fill over 9,999 Xianbei, the price will automatically set as 9,999 Xianbei.
+*/
+ MSG_ID_A9F = 0xa9f,
+/*20171018 to latest
+가격이 0 仙貝인 아이템이 존재 합니다. 상점을 열수 없습니다!
+There are items priced 0 Xianbei. You cannot open vending.
+*/
+ MSG_ID_AA0 = 0xaa0,
+/*20171018 to latest
+상대 캐릭터가 최대 보유 仙貝량을 초과하여 거래가 불가능 합니다.
+The opponent is over the Xianbei limit. Trade failed.
+*/
+ MSG_ID_AA1 = 0xaa1,
+/*20171018 to latest
+%s 아이템의 가격을 10억仙貝 이하로 입력해 주세요.
+Please fill out %s item price less than 1 billion Xianbei.
+*/
+ MSG_ID_AA2 = 0xaa2,
+/*20171018 to latest
+%s : %s 仙貝 => %s EA
+%s: %s Xianbei => %s ea
+*/
+ MSG_ID_AA3 = 0xaa3,
+/*20171018 to latest
+제한 금액 : %s 仙貝
+Limited price: %s Xianbei
+*/
+ MSG_ID_AA4 = 0xaa4,
+/*20171018 to latest
+%s %s 仙貝 %d 개
+%s %s %d Xianbei
+*/
+ MSG_ID_AA5 = 0xaa5,
+/*20171018 to latest
+%s %d개를 %d 仙貝에 판매 하였습니다. 수수료는 3%% 입니다.
+%d %s are sold. In total %d Xianbei. 3%% charge will be imposed.
+*/
+ MSG_ID_AA6 = 0xaa6,
+/*20171018 to latest
+RODEX
+*/
+ MSG_ID_AA7 = 0xaa7,
+/*20171018 to latest
+SEND
+*/
+ MSG_ID_AA8 = 0xaa8,
+/*20171018 to latest
+RECEIVE
+*/
+ MSG_ID_AA9 = 0xaa9,
+/*20171018 to latest
+메일 작성창을 닫아주세요.
+Please close the mail compose window.
+*/
+ MSG_ID_AAA = 0xaaa,
+/*20171018 to latest
+서버접근거부(A)
+Server access denied(A)
+*/
+ MSG_ID_AAB = 0xaab,
+/*20171018 to latest
+서버접근거부(B)
+Server access denied(B)
+*/
+ MSG_ID_AAC = 0xaac,
+/*20171018 to latest
+장착된 화살/탄환 을 해제해야합니다.
+Unequipped Arrow/Ammunition.
+*/
+ MSG_ID_AAD = 0xaad,
+/*20171018 to latest
+인벤토리의 아이템이 소모되어 로덱스 쓰기창을 닫습니다.
+Consuming item in inventory will close mail compose window.
+*/
+ MSG_ID_AAE = 0xaae,
+/*20171018 to latest
+소지하신 돋보기가 없습니다.
+Do not have Magnifier.
+*/
+ MSG_ID_AAF = 0xaaf,
+/*20171018 to latest
+아이템을 버릴려면 메일 쓰기창을 닫아주세요.
+Close email window if you want to discard item.
+*/
+ MSG_ID_AB0 = 0xab0,
+/*20171018 to latest
+상대방이 친구 요청중입니다
+The opponent has already requested you to be a friend.
+*/
+ MSG_ID_AB1 = 0xab1,
+/*20171018 to latest
+SCRIPT ERROR AID
+*/
+ MSG_ID_AB2 = 0xab2,
+/*20171018 to latest
+
+Errorfile : %s
+ErrorLine : %d 줄
+ErrorContent:
+*이전 줄 : %s
+*Errorline : %s
+*다음 줄:
+ %s
+
+Errorfile : %s
+ErrorLine : %d item
+ErrorContext: %s
+*/
+ MSG_ID_AB3 = 0xab3,
+/*20171018 to latest
+ ^ff0000해당 아이템을 구매 하시겠습니까? %d포인트 및 %d 仙貝가 차감 됩니다.
+^ff0000Are you sure want to purchase the item? after confirmation will consume %d point and %d crackers.
+*/
+ MSG_ID_AB4 = 0xab4,
+/*20171018 to latest
+닫기
+Close
+*/
+ MSG_ID_AB5 = 0xab5,
+/*20171018 to latest
+퀘스트
+Quest
+*/
+ MSG_ID_AB6 = 0xab6,
+/*20171018 to latest
+퀘스트 아이콘 보기
+View Quest icon
+*/
+ MSG_ID_AB7 = 0xab7,
+/*20171018 to latest
+편의시설
+Facility
+*/
+ MSG_ID_AB8 = 0xab8,
+/*20171018 to latest
+편의시설 아이콘 보기
+View Facility icon
+*/
+ MSG_ID_AB9 = 0xab9,
+/*20171018 to latest
+길드원/파티원
+Guild/Party
+*/
+ MSG_ID_ABA = 0xaba,
+/*20171018 to latest
+길드원/파티원 보기
+Show Guild/Party
+*/
+ MSG_ID_ABB = 0xabb,
+/*20171018 to latest
+기록하기
+Record
+*/
+ MSG_ID_ABC = 0xabc,
+/*20171018 to latest
+보스몬스터
+Boss Monster
+*/
+ MSG_ID_ABD = 0xabd,
+/*20171018 to latest
+나
+I
+*/
+ MSG_ID_ABE = 0xabe,
+/*20171018 to latest
+삭제 하시겠습니까?
+Are you sure want to delete it?
+*/
+ MSG_ID_ABF = 0xabf,
+/*20171018 to latest
+퀘스트 NPC
+Quest NPC
+*/
+ MSG_ID_AC0 = 0xac0,
+/*20171018 to latest
+메모할 내용을 기록합니다
+Record content
+*/
+ MSG_ID_AC1 = 0xac1,
+/*20171018 to latest
+저장하기
+Store
+*/
+ MSG_ID_AC2 = 0xac2,
+/*20171018 to latest
+메모하기
+Record
+*/
+ MSG_ID_AC3 = 0xac3,
+/*20171018 to latest
+%s [%d옵션] %d개
+%s [%d Property] %d ea
+*/
+ MSG_ID_AC4 = 0xac4,
+/*20171018 to latest
+%s [%d옵션] %s Zeny
+%s [%d Property] %s Zeny
+*/
+ MSG_ID_AC5 = 0xac5,
+/*20171018 to latest
+%s [%d옵션] %d %s %d -> %s %s
+%s [%d Property] %d %s %d -> %s %s
+*/
+ MSG_ID_AC6 = 0xac6,
+/*20171018 to latest
+%s [%d옵션] %d %s %s %s
+%s [%d Property] %d %s %s %s
+*/
+ MSG_ID_AC7 = 0xac7,
+/*20171018 to latest
+%s [%d옵션] %d -> %s %s
+%s [%d Property] %d -> %s %s
+*/
+ MSG_ID_AC8 = 0xac8,
+/*20171018 to latest
+%s [%d옵션] %s %s
+%s [%d Property] %s %s
+*/
+ MSG_ID_AC9 = 0xac9,
+/*20171018 to latest
+최소 거래 단위 100 仙貝 이상으로 설정 하셔야 합니다.
+The minimum trading unit must be 100 crackers or more.
+*/
+ MSG_ID_ACA = 0xaca,
+/*20171018 to latest
+머리 색
+Hair color
+*/
+ MSG_ID_ACB = 0xacb,
+/*20171018 to latest
+머리 모양
+Hair style
+*/
+ MSG_ID_ACC = 0xacc,
+/*20171018 to latest
+옷 색
+Cloth color
+*/
+ MSG_ID_ACD = 0xacd,
+/*20171018 to latest
+옷 모양
+Cloth pattern
+*/
+ MSG_ID_ACE = 0xace,
+/*20171018 to latest
+지원되지 않는 맵 입니다.
+Unsupported Map.
+*/
+ MSG_ID_ACF = 0xacf,
+/*20171018 to latest
+2,147,483,647 Zeny 이하로 입력 하십시오.
+Enter Zeny Below 2,147,483,647.
+*/
+ MSG_ID_AD0 = 0xad0,
+/*20171018 to latest
+1 Zeny 이상 입력 하십시오.
+Please Enter atleast 1 zeny.
+*/
+ MSG_ID_AD1 = 0xad1,
+/*20171018 to latest
+보유한 Zeny 가 없습니다.
+You do not hold any zeny.
+*/
+ MSG_ID_AD2 = 0xad2,
+/*20171018 to latest
+제니 창고
+Zeny Storage
+*/
+ MSG_ID_AD3 = 0xad3,
+/*20171018 to latest
+창고보유액
+in Bank
+*/
+ MSG_ID_AD4 = 0xad4,
+/*20171018 to latest
+소지금
+on hand
+*/
+ MSG_ID_AD5 = 0xad5,
+/*20171018 to latest
+입금
+Deposit
+*/
+ MSG_ID_AD6 = 0xad6,
+/*20171018 to latest
+출금
+Withdraw
+*/
+ MSG_ID_AD7 = 0xad7,
+/*20171018 to latest
+1 z UP
+1z UP
+*/
+ MSG_ID_AD8 = 0xad8,
+/*20171018 to latest
+1 z Down
+1z Down
+*/
+ MSG_ID_AD9 = 0xad9,
+/*20171018 to latest
+Max
+*/
+ MSG_ID_ADA = 0xada,
+/*20171018 to latest
+입력값이 없습니다
+There is no Input value
+*/
+ MSG_ID_ADB = 0xadb,
+/*20171018 to latest
+보유 Zeny 부족
+Not enough zeny
+*/
+ MSG_ID_ADC = 0xadc,
+/*20171018 to latest
+입력값 필요
+Input Required
+*/
+ MSG_ID_ADD = 0xadd,
+/*20171018 to latest
+문자 입력 불가
+Numbers only
+*/
+ MSG_ID_ADE = 0xade,
+/*20171018 to latest
+최대 입력 초과
+Exceeded max input
+*/
+ MSG_ID_ADF = 0xadf,
+/*20171018 to latest
+최소 입력 미만
+Below Minimum Input
+*/
+ MSG_ID_AE0 = 0xae0,
+/*20171018 to latest
+보유 Zeny 부족
+Not enough zeny
+*/
+ MSG_ID_AE1 = 0xae1,
+/*20171018 to latest
+은행 잔고 부족
+Insufficient funds
+*/
+ MSG_ID_AE2 = 0xae2,
+/*20171018 to latest
+최대 보유 Zeny 초과
+Exceeded max zeny
+*/
+ MSG_ID_AE3 = 0xae3,
+/*20171018 to latest
+드롭 X
+Drop X
+*/
+ MSG_ID_AE4 = 0xae4,
+/*20171018 to latest
+창고 X
+Storage X
+*/
+ MSG_ID_AE5 = 0xae5,
+/*20171018 to latest
+카트 X
+Cart X
+*/
+ MSG_ID_AE6 = 0xae6,
+/*20171018 to latest
+메일 X
+Mail X
+*/
+ MSG_ID_AE7 = 0xae7,
+/*20171018 to latest
+교환창 X
+Trade X
+*/
+ MSG_ID_AE8 = 0xae8,
+/*20171018 to latest
+경매장 X
+Auction X
+*/
+ MSG_ID_AE9 = 0xae9,
+/*20171018 to latest
+길드창고 X
+Guild Storage X
+*/
+ MSG_ID_AEA = 0xaea,
+/*20171018 to latest
+NPC에게 판매 X
+Sell to NPC X
+*/
+ MSG_ID_AEB = 0xaeb,
+/*20171018 to latest
+이동제한이 있는 아이템입니다.
+Item moves restriction.
+*/
+ MSG_ID_AEC = 0xaec,
+/*20171018 to latest
+캐릭터를 생성해주세요!
+Please Create a Character!
+*/
+ MSG_ID_AED = 0xaed,
+/*20171018 to latest
+장착된 투사체 아이템을 해제해야 합니다.
+You need to disarm the equipped projectiles.
+*/
+ MSG_ID_AEE = 0xaee,
+/*20171018 to latest
+인원 초과로 메모리얼 던전에 입장 할 수 없습니다
+You cannot enter Memorial Dungeon with excess members
+*/
+ MSG_ID_AEF = 0xaef,
+/*20171018 to latest
+인원수 초과로 인해 메모리얼 던전 입장이 거부되었습니다
+Memorial Dungeon Access was denied due to exceeding number of players
+*/
+ MSG_ID_AF0 = 0xaf0,
+/*20171018 to latest
+%.1f%% ( %s Server: %.1f%% + Premium:%.1f%% )
+*/
+ MSG_ID_AF1 = 0xaf1,
+/*20171018 to latest
+%.1f%% ( %s Server: %.1f%% + Premium:%.1f%% )
+*/
+ MSG_ID_AF2 = 0xaf2,
+/*20171018 to latest
+중복된 아이템이 존재하여 사용이 불가능 합니다.
+Consuming Item denied due to multiple same item.
+*/
+ MSG_ID_AF3 = 0xaf3,
+/*20171018 to latest
+중복된 효과가 존재하여 사용이 불가능 합니다.
+Consuming Item denied due to effect of same consumed item.
+*/
+ MSG_ID_AF4 = 0xaf4,
+/*20171018 to latest
+화면 흔들림 효과 ON
+Flicker Effect ON
+*/
+ MSG_ID_AF5 = 0xaf5,
+/*20171018 to latest
+화면 흔들림 효과 OFF
+Flicker Effect OFF
+*/
+ MSG_ID_AF6 = 0xaf6,
+/*20171018 to latest
+불법 프로그램 발견되었습니다
+Illegal Programs has been detected
+*/
+ MSG_ID_AF7 = 0xaf7,
+/*20171018 to latest
+메일 보내기
+Send Mail
+*/
+ MSG_ID_AF8 = 0xaf8,
+/*20171018 to latest
+E X P : %.1f%% ( basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
+E X P: %.1f%% (Basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
+*/
+ MSG_ID_AF9 = 0xaf9,
+/*20171018 to latest
+DROP : %.1f%% ( basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
+DROP : %.1f%% (Basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
+*/
+ MSG_ID_AFA = 0xafa,
+/*20171018 to latest
+DEATH : %.1f%% ( basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
+DEATH: %.1f%% (Basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
+*/
+ MSG_ID_AFB = 0xafb,
+/*20171018 to 20180928
+ 해당 태그는 이름으로 사용하실 수 없습니다.
+Name with this tag cannot be used.
+20181010 to latest
+ 해당 내용은 이름으로 사용하실 수 없습니다.
+*/
+ MSG_ID_AFC = 0xafc,
+/*20171018 to latest
+???? bdbac5b8c0cfb8b52098de
+Style Shop
+*/
+ MSG_ID_AFD = 0xafd,
+/*20171018 to latest
+쿠폰 없음. Cash Shop에서 아이템을 구매해 주세요.
+No serial number, Please visit the store to buy.
+*/
+ MSG_ID_AFE = 0xafe,
+/*20171018 to latest
+인벤토리에서 아이템 쿠폰 상자를 열어주세요.
+Please turn on Serial item number window box.
+*/
+ MSG_ID_AFF = 0xaff,
+/*20171018 to latest
+해당 스타일 정보를 삭제하시겠습니까?
+Bank
+*/
+ MSG_ID_B00 = 0xb00,
+/*20171018 to latest
+슬롯이 꽉 찼습니다. 내 스타일에서 캐릭터 삭제 후 사용해 주십시오.
+Slot is full, please delete a character.
+*/
+ MSG_ID_B01 = 0xb01,
+/*20171018 to latest
+비용을 지불하고 현재 스타일을 적용하시겠습니까?
+(※ 비용은 반환되지 않습니다.)
+Item cannot be restored, are you sure want to apply it?
+*/
+ MSG_ID_B02 = 0xb02,
+/*20171018 to latest
+현재 스타일을 저장하였습니다.
+Registered as the following style.
+*/
+ MSG_ID_B03 = 0xb03,
+/*20171018 to latest
+보유 Zeny 부족. 은행에 충분한 Zeny가 있습니다.
+There are plenty of golds in the bank, Please go to the bank now.
+*/
+ MSG_ID_B04 = 0xb04,
+/*20171018 to latest
+으로 이동합니다.
+moving...
+*/
+ MSG_ID_B05 = 0xb05,
+/*20171018 to latest
+해당 국가의 영공통과에 대한 허가가 나지 않았습니다.
+You are not allowed to fly over the sovereign airspace of the country.
+*/
+ MSG_ID_B06 = 0xb06,
+/*20171018 to latest
+마나로 대기불안정이 계속되어 비공정 운행이 불가능합니다.
+Airship flight is temporarily unavailable due to atmospheric instability caused by magic.
+*/
+ MSG_ID_B07 = 0xb07,
+/*20171018 to latest
+개인 비공정
+Private airship
+*/
+ MSG_ID_B08 = 0xb08,
+/*20171018 to latest
+잠시 후 다시 시도해주세요.
+Please try again in a moment.
+*/
+ MSG_ID_B09 = 0xb09,
+/*20171018 to latest
+개인 비공정 이용에 필요한 제니가 부족합니다.
+Not enough Zeny to use the private airship.
+*/
+ MSG_ID_B0A = 0xb0a,
+/*20171018 to latest
+개인 비공정 이용에 필요한 아이템이 부족합니다.
+Not enough Cans to use the private airship.
+*/
+ MSG_ID_B0B = 0xb0b,
+/*20171018 to latest
+개인 비공정을 이용할 수 있는 레벨이 아닙니다.
+You cannot meet the level to use the private airship.
+*/
+ MSG_ID_B0C = 0xb0c,
+/*20171018 to latest
+선택한 지점으론 개인비공정이 이동할 수 없습니다.
+You cannot move to the selected point by the private airship.
+*/
+ MSG_ID_B0D = 0xb0d,
+/*20171018 to latest
+현 지점에선 개인비공정을 이용할 수 없습니다.
+You cannot use the private airship where you are now.
+*/
+ MSG_ID_B0E = 0xb0e,
+/*20171018 to latest
+액세서리
+Accessory
+*/
+ MSG_ID_B0F = 0xb0f,
+/*20171018 to latest
+세컨드코스튬
+Second costume
+*/
+ MSG_ID_B10 = 0xb10,
+/*20171018 to latest
+내 스타일
+Wardrobe
+*/
+ MSG_ID_B11 = 0xb11,
+/*20171018 to latest
+염색할 수 없는 헤어스타일입니다.
+This hairstyle cannot be dyed.
+*/
+ MSG_ID_B12 = 0xb12,
+/*20171018 to latest
+화살표를 눌러 마음에 드는 스타일을 선택해 보세요.
+Press an arrow to choose the style you want.
+*/
+ MSG_ID_B13 = 0xb13,
+/*20171018 to latest
+새로운 스타일을 확인해 보세요.
+(※ 액세서리 구매 시 RODEX로 발송됩니다.)
+Come and see the new styles.
+(Purchased accessories will be sent via RODEX.)
+*/
+ MSG_ID_B14 = 0xb14,
+/*20171018 to latest
+기본 스타일
+Basic style
+*/
+ MSG_ID_B15 = 0xb15,
+/*20171018 to latest
+ 해당 스킬은 BaseLv %d 이상부터 스킬 포인트 투자가 가능합니다.
+You can level up the skill from the base Lv. %d.
+*/
+ MSG_ID_B16 = 0xb16,
+/*20171018 to latest
+해당 특수기호는 이름에 사용하실 수 없습니다.
+Special symbol can't be used in name
+*/
+ MSG_ID_B17 = 0xb17,
+/*20171018 to latest
+MHP가 너무 낮아, 해당 스킬을 사용할 수 없습니다
+MaxHP is to low to use this skill
+*/
+ MSG_ID_B18 = 0xb18,
+/*20171018 to latest
+MSP가 너무 낮아, 해당 스킬을 사용할 수 없습니다
+MaxSP is to low to use this skill
+*/
+ MSG_ID_B19 = 0xb19,
+/*20171018 to latest
+아이템 비교하기
+Compare items
+*/
+ MSG_ID_B1A = 0xb1a,
+/*20171018 to latest
+아이템 버리기 잠금
+Drop lock
+*/
+ MSG_ID_B1B = 0xb1b,
+/*20171018 to latest
+스크린샷 파일이 첨부 되지 않았습니다.
+Screenshots are not attached
+*/
+ MSG_ID_B1C = 0xb1c,
+/*20171018 to latest
+Twitter
+TWITTER
+*/
+ MSG_ID_B1D = 0xb1d,
+/*20171018 to latest
+일반
+General
+*/
+ MSG_ID_B1E = 0xb1e,
+/*20171018 to latest
+공지
+Notice
+*/
+ MSG_ID_B1F = 0xb1f,
+/*20171018 to latest
+반송
+Clear
+*/
+ MSG_ID_B20 = 0xb20,
+/*20171018 to latest
+새로고침
+Refresh
+*/
+ MSG_ID_B21 = 0xb21,
+/*20171018 to latest
+%d분
+%d minute
+*/
+ MSG_ID_B22 = 0xb22,
+/*20171018 to latest
+%d시간
+%d hour
+*/
+ MSG_ID_B23 = 0xb23,
+/*20171018 to latest
+%d일
+%d day
+*/
+ MSG_ID_B24 = 0xb24,
+/*20171018 to latest
+반송됨
+Returned
+*/
+ MSG_ID_B25 = 0xb25,
+/*20171018 to latest
+선택한 메일을 삭제하시겠습니까?
+Do you want to delete the message?
+*/
+ MSG_ID_B26 = 0xb26,
+/*20171018 to latest
+위치표시
+Show information
+*/
+ MSG_ID_B27 = 0xb27,
+/*20171018 to latest
+확대
+Zoom In
+*/
+ MSG_ID_B28 = 0xb28,
+/*20171018 to latest
+축소
+Zoom Out
+*/
+ MSG_ID_B29 = 0xb29,
+/*20171018 to latest
+맵보기
+Maximize
+*/
+ MSG_ID_B2A = 0xb2a,
+/*20171018 to latest
+월드보기
+Show world map
+*/
+ MSG_ID_B2B = 0xb2b,
+/*20171018 to latest
+아이템 소지 종류수
+Total possession item type
+*/
+ MSG_ID_B2C = 0xb2c,
+/*20171018 to latest
+/minimap
+*/
+ MSG_ID_B2D = 0xb2d,
+/*20171018 to latest
+미니맵 버튼을 표시합니다
+Show minimap buttons
+*/
+ MSG_ID_B2E = 0xb2e,
+/*20171018 to latest
+미니맵 버튼을 표시하지 않습니다
+Hide minimap buttons
+*/
+ MSG_ID_B2F = 0xb2f,
+/*20171018 to latest
+길드 접속자 정렬
+Show guild member login status
+*/
+ MSG_ID_B30 = 0xb30,
+/*20171018 to latest
+친밀도 : %s
+Intimacy: %s
+*/
+ MSG_ID_B31 = 0xb31,
+/*20171018 to latest
+확인 전
+Confirmation
+*/
+ MSG_ID_B32 = 0xb32,
+/*20171018 to latest
+파티 이름
+Team name
+*/
+ MSG_ID_B33 = 0xb33,
+/*20171018 to latest
+파티장
+Leader
+*/
+ MSG_ID_B34 = 0xb34,
+/*20171018 to latest
+제한 시간 초과. 클라이언트를 종료합니다.
+Time limit exceeded. Closing the client
+*/
+ MSG_ID_B35 = 0xb35,
+/*20171018 to latest
+잘못된 입력입니다. 클라이언트를 종료합니다.
+Input error. Closing the client
+*/
+ MSG_ID_B36 = 0xb36,
+/*20171018 to latest
+정답 입니다. 보상으로 소정의 버프가 주어집니다.
+Incorrect input. A small buff has given to you
+*/
+ MSG_ID_B37 = 0xb37,
+/*20171018 to latest
+영문 4자, 한글 2자 이상으로 입력해야 합니다.
+Enter 4 english words and 2 chinese words
+*/
+ MSG_ID_B38 = 0xb38,
+/*20171018 to latest
+입력한 답이 [%s]가 맞습니까?
+Your entered answer is [%s]. Is it right?
+*/
+ MSG_ID_B39 = 0xb39,
+/*20171018 to latest
+선택된 이미지가 없습니다.
+Icon is unchecked
+*/
+ MSG_ID_B3A = 0xb3a,
+/*20171018 to latest
+잘못된 입력입니다. (남은 기회 %d번)
+Incorrect input (Remaining chance: %d)
+*/
+ MSG_ID_B3B = 0xb3b,
+/*20171018 to latest
+총 %d명의 유저를 신고하시겠습니까?
+Do you want to announce %d to player?
+*/
+ MSG_ID_B3C = 0xb3c,
+/*20171018 to latest
+유저에게 메시지를 보냈습니다.
+Message has been sent to player
+*/
+ MSG_ID_B3D = 0xb3d,
+/*20171018 to latest
+불법 프로그램 단속에 필요한 데이터가 미등록 상태입니다.
+Needed Data for Query illegal software are not signed.
+*/
+ MSG_ID_B3E = 0xb3e,
+/*20171018 to latest
+이미 매크로 감시중인 유저입니다.
+The player is being monitored.
+*/
+ MSG_ID_B3F = 0xb3f,
+/*20171018 to latest
+매크로가 등록되었습니다..
+Already signed in investigation system.
+*/
+ MSG_ID_B40 = 0xb40,
+/*20171018 to latest
+이미지 등록에 실패하였습니다.
+Failed to store icon.
+*/
+ MSG_ID_B41 = 0xb41,
+/*20171018 to latest
+정답 등록에 실패하였습니다.
+Failed to store replied answer.
+*/
+ MSG_ID_B42 = 0xb42,
+/*20171018 to latest
+안녕하세요. 불법프로그램 단속중입니다.
+Hello, illegal software is being monitored.
+*/
+ MSG_ID_B43 = 0xb43,
+/*20171018 to latest
+지정된 시간내에 아래의 문자를 입력해주세요.
+Please enter the text below within the specified time.
+*/
+ MSG_ID_B44 = 0xb44,
+/*20171018 to latest
+3회 오류시 운영정책에 의거하여 영구블록됩니다.
+According to game regulation, when you enter the wrong text three times, you will get banned.
+*/
+ MSG_ID_B45 = 0xb45,
+/*20171018 to latest
+남은 횟수 : %d
+Remaining chance : %d
+*/
+ MSG_ID_B46 = 0xb46,
+/*20171018 to latest
+캐릭터
+Role
+*/
+ MSG_ID_B47 = 0xb47,
+/*20171018 to latest
+범위
+Range
+*/
+ MSG_ID_B48 = 0xb48,
+/*20171018 to latest
+캐릭터 선택은 좌클릭으로 합니다.
+You use the left mouse button to specify the role
+*/
+ MSG_ID_B49 = 0xb49,
+/*20171018 to latest
+범위 선택은 우클릭으로 합니다.
+You use the left mouse button to specify the range
+*/
+ MSG_ID_B4A = 0xb4a,
+/*20171018 to latest
+범위 크기를 지정하기 위해서는 엔터를 입력해주세요
+Not a valid range, please press Enter
+*/
+ MSG_ID_B4B = 0xb4b,
+/*20171018 to latest
+E X P : %.1f%% ( basic %.1f%% %s %.1f%%)
+*/
+ MSG_ID_B4C = 0xb4c,
+/*20171018 to latest
+DROP : %.1f%% ( basic %.1f%% %s %.1f%%)
+*/
+ MSG_ID_B4D = 0xb4d,
+/*20171018 to latest
+DEATH : %.1f%% ( basic %.1f%% %s %.1f%%)
+*/
+ MSG_ID_B4E = 0xb4e,
+/*20171018 to latest
+변경된 캐릭명으로 발송했습니다. 변경된 캐릭명 : %s
+The role name will be sent: %s
+*/
+ MSG_ID_B4F = 0xb4f,
+/*20171018 to latest
+합성에 필요한 재료
+Synthesis of the required materials
+*/
+ MSG_ID_B50 = 0xb50,
+/*20171018 to latest
+조합 재료가 부족해서 조합할 수 없습니다.
+Insufficient synthesis materials
+*/
+ MSG_ID_B51 = 0xb51,
+/*20171018 to latest
+해당 재료는 %d개가 필요합니다.
+Required material %d ea.
+*/
+ MSG_ID_B52 = 0xb52,
+/*20171018 to latest
+제련도가 낮아서 조합할 수 없습니다.
+Refine value is to low for synthesis
+*/
+ MSG_ID_B53 = 0xb53,
+/*20171018 to latest
+모험가중개소에 등록 하시겠습니까?
+Do you want to sign in to the adventurers?
+*/
+ MSG_ID_B54 = 0xb54,
+/*20171018 to latest
+자유롭게 코멘트를 남겨보세요.
+Please leave a message
+*/
+ MSG_ID_B55 = 0xb55,
+/*20171018 to latest
+그림에 보이는 문자를 입력해주세요.
+Please enter the text on the graph
+*/
+ MSG_ID_B56 = 0xb56,
+/*20171018 to latest
+%d초 남았습니다
+%d second left
+*/
+ MSG_ID_B57 = 0xb57,
+/*20171018 to latest
+OTP 인증번호 6자리를 입력해 주세요
+Please enter your 6 identification number.
+*/
+ MSG_ID_B58 = 0xb58,
+/*20171018 to latest
+인증번호
+Identification number.
+*/
+ MSG_ID_B59 = 0xb59,
+/*20171018 to latest
+6자리의 숫자가 아닙니다. 다시 확인해 주세요
+It's not a 6 identification number. Please try again
+*/
+ MSG_ID_B5A = 0xb5a,
+/*20171018 to latest
+이미 삭제된 메일입니다.
+The message has been deleted
+*/
+ MSG_ID_B5B = 0xb5b,
+/*20171018 to latest
+개인 비공정으로 이동할 지역을 선택해주세요.
+Please select the area where the private airship will move
+*/
+ MSG_ID_B5C = 0xb5c,
+/*20171018 to latest
+E X P : %d%% ( basic 100.0%% %s %d%%)
+*/
+ MSG_ID_B5D = 0xb5d,
+/*20171018 to latest
+DROP : %d%% ( basic 100.0%% %s %d%%)
+*/
+ MSG_ID_B5E = 0xb5e,
+/*20171018 to latest
+DEATH : %d%% ( basic 100.0%% %s %d%%)
+*/
+ MSG_ID_B5F = 0xb5f,
+/*20171018 to latest
+목적지로 이동중입니다.
+Move to the destination
+*/
+ MSG_ID_B60 = 0xb60,
+/*20171018 to latest
+[%s] 파일이 존재하지 않아 default AI 로 동작합니다
+The [%s] is not present, the default AI will be used instead.
+*/
+ MSG_ID_B61 = 0xb61,
+/*20171018 to latest
+ %.1f%% ( Basic 100.0%% + Premium %.1f%% + %s %.1f%%)
+%.1f%% ( Basic 100.0%% + Premium %.1f%% + %s %.1f%%)
+*/
+ MSG_ID_B62 = 0xb62,
+/*20171018 to latest
+이 자리에 노점을 세우시겠습니까?
+Would you like to open a shop at this location?
+*/
+ MSG_ID_B63 = 0xb63,
+/*20171018 to latest
+도람족은 해당 의상을 입을 수 없습니다.
+Doram race can't wear this clothes
+*/
+ MSG_ID_B64 = 0xb64,
+/*20171018 to latest
+판매 노점에서 거래한 아이템이 로덱스로 배송되었습니다.
+Props open-air store sales will be traded in RODEX
+*/
+ MSG_ID_B65 = 0xb65,
+/*20171018 to latest
+30,000 z
+*/
+ MSG_ID_B66 = 0xb66,
+/*20171018 to latest
+말랑도 특산 통조림 100개
+Malangdo Special Can 100 pc
+*/
+ MSG_ID_B67 = 0xb67,
+/*20171018 to latest
+무게가 80%를 초과하여 진행할 수 없습니다.
+Cannot carry anymore because weight limit over 80%
+*/
+ MSG_ID_B68 = 0xb68,
+/*20171018 to latest
+판매되지 못한 상품이 로덱스로 배송되었습니다.
+Unsold items are sent to RODEX
+*/
+ MSG_ID_B69 = 0xb69,
+/*20171018 to latest
+장착 모습
+Preview
+*/
+ MSG_ID_B6A = 0xb6a,
+/*20171018 to latest
+길드마스터 위임
+Assign Guild Leader
+*/
+ MSG_ID_B6B = 0xb6b,
+/*20171018 to latest
+정말로 %s님께 길드마스터를 위임하시겠습니까? 위임 후 당신의 지위는 %s님과 지위가 바뀌게 됩니다.
+Are sure want to assign %s as guild leader? After assigned your position will become %s
+*/
+ MSG_ID_B6C = 0xb6c,
+/*20171018 to latest
+철회
+Cancel
+*/
+ MSG_ID_B6D = 0xb6d,
+/*20171018 to latest
+노점을 철수하시겠습니까?
+Do you want to close the shop?
+*/
+ MSG_ID_B6E = 0xb6e,
+/*20171018 to latest
+%02d일 %02d시간 %02d분 %02d초
+%02d day %02d hour %02d minute %02d second
+*/
+ MSG_ID_B6F = 0xb6f,
+/*20171018 to latest
+접속불가
+Unable to sign in
+*/
+ MSG_ID_B70 = 0xb70,
+/*20171018 to latest
+접속가능인원을 초과하여 접속이 불가능 합니다.
+Unable to sign in because the maximum number of sign-in is exceeded
+*/
+ MSG_ID_B71 = 0xb71,
+/*20171018 to latest
+노점을 설치할 위치를 선택해주세요.
+Please select a location for your shop
+*/
+ MSG_ID_B72 = 0xb72,
+/*20171018 to latest
+펫 이름을 ^0000ff^0000ff %s^000000^000000 로 수정합니다. 계속 하시겠습니까?
+Pet name will be changed to ^0000ff^0000ff %s^000000^000000, do you want to continue?
+*/
+ MSG_ID_B73 = 0xb73,
+/*20171018 to latest
+거래 일시 :
+Trade date :
+*/
+ MSG_ID_B74 = 0xb74,
+/*20171018 to latest
+거래 아이템 :
+Trade item :
+*/
+ MSG_ID_B75 = 0xb75,
+/*20171018 to latest
+거래 수량 :
+Trade quantity :
+*/
+ MSG_ID_B76 = 0xb76,
+/*20171018 to latest
+거래 단가 :
+Trade price :
+*/
+ MSG_ID_B77 = 0xb77,
+/*20171018 to latest
+거래 금액 :
+Total trade :
+*/
+ MSG_ID_B78 = 0xb78,
+/*20171018 to latest
+노점 판매 아이템
+Open vending sales agent
+*/
+ MSG_ID_B79 = 0xb79,
+/*20171018 to latest
+노점 구매 아이템
+Open vending purchase agent
+*/
+ MSG_ID_B7A = 0xb7a,
+/*20171018 to latest
+판매 노점 아르바이트 종료
+Close vending sales agent
+*/
+ MSG_ID_B7B = 0xb7b,
+/*20171018 to latest
+구매 노점 아르바이트 종료
+Close vending purchase agent
+*/
+ MSG_ID_B7C = 0xb7c,
+/*20171018 to latest
+남은 금액:
+Balance:
+*/
+ MSG_ID_B7D = 0xb7d,
+/*20171018 to latest
+아이템 리스트:
+Item list:
+*/
+ MSG_ID_B7E = 0xb7e,
+/*20171018 to latest
+노점 아르바이트생
+Vending agent
+*/
+ MSG_ID_B7F = 0xb7f,
+/*20171018 to latest
+반환 아이템:
+Returned item:
+*/
+ MSG_ID_B80 = 0xb80,
+/*20171018 to latest
+반환 수량:
+Returned quantity:
+*/
+ MSG_ID_B81 = 0xb81,
+/*20171018 to latest
+반환 일시:
+Returned date:
+*/
+ MSG_ID_B82 = 0xb82,
+/*20171018 to latest
+구매 노점에서 거래한 금액이 로덱스로 배송되었습니다
+Total trade will be sent to RODEX
+*/
+ MSG_ID_B83 = 0xb83,
+/*20171018 to latest
+사용할 수 없는 이름입니다.
+Name isn't available
+*/
+ MSG_ID_B84 = 0xb84,
+/*20171018 to latest
+상품이 도착했습니다.
+Item has been delivered
+*/
+ MSG_ID_B85 = 0xb85,
+/*20171018 to latest
+구입해주셔서 감사합니다.
+Thank you for purchasing
+*/
+ MSG_ID_B86 = 0xb86,
+/*20171018 to latest
+NPC에게 아이템을 판매하지 않습니다.
+Press again to unlock
+*/
+ MSG_ID_B87 = 0xb87,
+/*20171018 to latest
+아이템 판매 잠금
+Lock from NPC selling
+*/
+ MSG_ID_B88 = 0xb88,
+/*20171018 to latest
+근처에서 소환가능 위치를 찾을수 없습니다.
+There is no callable location nearby
+*/
+ MSG_ID_B89 = 0xb89,
+/*20171018 to latest
+전체 화면 캡쳐
+Capture full screens
+*/
+ MSG_ID_B8A = 0xb8a,
+/*20171018 to latest
+부분 화면 캡쳐
+Capture part of screen
+*/
+ MSG_ID_B8B = 0xb8b,
+/*20171018 to latest
+보내기
+Send
+*/
+ MSG_ID_B8C = 0xb8c,
+/*20171018 to latest
+가족 분과 담당자
+Family Affairs agent
+*/
+ MSG_ID_B8D = 0xb8d,
+/*20171018 to latest
+가족 사항 변동 안내
+Acknowledgement of family member registrations.
+*/
+ MSG_ID_B8E = 0xb8e,
+/*20171018 to latest
+안녕하십니까.
+
+금일 "%s"님과 "%s"님의 자녀인 "%s"님이 독립하여 단독 세대를 구성하였습니다.
+
+이에 서면으로 안내를 드립니다.
+
+가족 관계 확인을 원하시는 분은 프론테라 동사무소의 담당 직원에게 문의하시기 바랍니다.
+
+감사합니다.
+Dear whom it may concern.
+
+ Today, \"%s\" and \"%s\" 's son/daughter \"%s\" has fully separated and independent from your member of family.
+
+Hereat, we inform you in writing.
+
+Please contact to Prontera Family Affairs if you have any enquiries.
+
+Thank you.
+*/
+ MSG_ID_B8F = 0xb8f,
+/*20171018 to latest
+장착
+Equip
+*/
+ MSG_ID_B90 = 0xb90,
+/*20171018 to latest
+이미지 없음
+No image
+*/
+ MSG_ID_B91 = 0xb91,
+/*20171018 to latest
+[%s]은(는) 현재 호출을 차단한 상태입니다.
+[%s] is blocking Call Massage.
+*/
+ MSG_ID_B92 = 0xb92,
+/*20171018 to latest
+현재 공성전이 진행중이므로, 길드마스터를 위임 할 수 없습니다.
+Currently in WoE hours, unable to delegate Guild leader
+*/
+ MSG_ID_B93 = 0xb93,
+/*20171018 to latest
+현재 길드장 위임을 받은지 만 하루가 지나지 않아, 길드장을 위임할 수 없습니다.
+You have to wait for one day before delegating a new Guild leader
+*/
+ MSG_ID_B94 = 0xb94,
+/*20171018 to latest
+아이가 되면 전승을 할 수 없고 스텟의 제한이 있으며 HP와 SP가 줄어듭니다.
+그래도 괜찮습니까?
+When adopted, character will not able to transcend, maximum stats will be limited, MaxHP and MaxSP will be reduced.
+Are you sure you want to continue?
+*/
+ MSG_ID_B95 = 0xb95,
+/*20171018 to latest
+제련
+Refining
+*/
+ MSG_ID_B96 = 0xb96,
+/*20171018 to latest
+대장장이의 축복을 사용중입니다.
+Use Blacksmith's Blessing
+*/
+ MSG_ID_B97 = 0xb97,
+/*20171018 to latest
+제니가 부족합니다.
+Insufficient zeny
+*/
+ MSG_ID_B98 = 0xb98,
+/*20171018 to latest
+대장장이의 축복 개수가 부족합니다.
+Not enough Blacksmith's Blessing
+*/
+ MSG_ID_B99 = 0xb99,
+/*20171018 to latest
+해당 장비는 제련이 불가능합니다.
+This equipment can not be refined
+*/
+ MSG_ID_B9A = 0xb9a,
+/*20171018 to latest
+제련 성공
+Upgrade success!
+*/
+ MSG_ID_B9B = 0xb9b,
+/*20171018 to latest
+제련 실패
+Upgrade failed!
+*/
+ MSG_ID_B9C = 0xb9c,
+/*20171018 to latest
+돌아가기
+Back
+*/
+ MSG_ID_B9D = 0xb9d,
+/*20171018 to latest
+성공
+Success
+*/
+ MSG_ID_B9E = 0xb9e,
+/*20171018 to latest
+원래대로
+Return
+*/
+ MSG_ID_B9F = 0xb9f,
+/*20171018 to latest
+씨와의
+With Mr/Miss
+*/
+ MSG_ID_BA0 = 0xba0,
+/*20171018 to latest
+호문클루스의 이름을 ^0000ff^0000ff %s^000000^000000 로 수정합니다. 계속 하시겠습니까?
+The Homunculus's name will be changed to^0000ff^0000ff %s^000000^000000, Are you sure?
+*/
+ MSG_ID_BA1 = 0xba1,
+/*20171018 to latest
+호출이 허용된 상태입니다. (호출 기능 ON)
+Call function is ON
+*/
+ MSG_ID_BA2 = 0xba2,
+/*20171018 to latest
+호출이 차단된 상태입니다. (호출 기능 OFF)
+Call function is OFF
+*/
+ MSG_ID_BA3 = 0xba3,
+/*20171018 to latest
+호출 메시지 표시
+Display Call messages
+*/
+ MSG_ID_BA4 = 0xba4,
+/*20171018 to latest
+해당 캐릭터가 현재 노점 아이템을 사용 중이므로 삭제할 수 없습니다.
+This character is currently opening a shop and can't be deleted
+*/
+ MSG_ID_BA5 = 0xba5,
+/*20171018 to latest
+이미 동일한 노점 NPC가 설치 중입니다.
+The same vend shop NPC has been set up
+*/
+ MSG_ID_BA6 = 0xba6,
+/*20171018 to latest
+노점을 설치할 수 없는 위치입니다.
+Opening shop is not allowed on this location
+*/
+ MSG_ID_BA7 = 0xba7,
+/*20171018 to latest
+다른 캐릭터가 있는 위치에는 노점을 설치할 수 없습니다.
+Opening shop is not allowed when there is other character
+*/
+ MSG_ID_BA8 = 0xba8,
+/*20171018 to latest
+펫 먹이주기가 실패했습니다. 로덱스 작성창을 닫아주세요.
+Failed to feed pet, please close RODEX window
+*/
+ MSG_ID_BA9 = 0xba9,
+/*20171018 to latest
+장비 세트 설정
+Set item setting
+*/
+ MSG_ID_BAA = 0xbaa,
+/*20171018 to latest
+장착 하기
+Equip
+*/
+ MSG_ID_BAB = 0xbab,
+/*20171018 to latest
+제련 실패시 장비가 사라집니다.
+Equipment will dissapear when refine fails
+*/
+ MSG_ID_BAC = 0xbac,
+/*20171018 to latest
+제련 실패시 장비의 제련도가 내려갑니다.
+Equipment's refine level will decreased when refine fails
+*/
+ MSG_ID_BAD = 0xbad,
+/*20171018 to latest
+제련 실패시 장비의 제련도가 내려가거나 사라질 수 있습니다.
+Equipment will dissapear or refine level will decreased when refine fails
+*/
+ MSG_ID_BAE = 0xbae,
+/*20171018 to latest
+제련 중에는 로덱스를 사용할 수 없습니다. 로덱스를 강제 종료하였습니다.
+You cannot use RODEX while refining. RODEX has closed.
+*/
+ MSG_ID_BAF = 0xbaf,
+/*20171018 to latest
+제련 중에는 로덱스를 사용할 수 없습니다.
+You cannot use RODEX while refining.
+*/
+ MSG_ID_BB0 = 0xbb0,
+/*20171018 to latest
+제련을 진행하려면 다른 창을 닫아주세요.
+Please close other windows to continue.
+*/
+ MSG_ID_BB1 = 0xbb1,
+/*20171018 to latest
+오오라가 정상적으로 표시됩니다 [오오라 ON]
+Turn On Aura [Aura ON]
+*/
+ MSG_ID_BB2 = 0xbb2,
+/*20171018 to latest
+오오라가 표시되지 않습니다 [오오라 OFF]
+Turn Off Aura [Auta OFF]
+*/
+ MSG_ID_BB3 = 0xbb3,
+/*20171018 to latest
+오오라가 Off 상태입니다. Off 를 해제하고 시도해 주세요
+Aura is turned off. Please turn it on and try again
+*/
+ MSG_ID_BB4 = 0xbb4,
+/*20171018 to latest
+스킬 발동시 최소 %d개의 탄알이 필요합니다.
+You need %d bullet(s) to activate the skill.
+*/
+ MSG_ID_BB5 = 0xbb5,
+/*20171018 to latest
+장비 세트를 변경하시겠습니까?
+Do you want to change the equipment set?
+*/
+ MSG_ID_BB6 = 0xbb6,
+/*20171018 to latest
+죽은 상태에서는 할 수 없습니다
+You can not do it while you are dead.
+*/
+ MSG_ID_BB7 = 0xbb7,
+/*20171018 to latest
+캐스팅 도중에는 할 수 없습니다
+You can not do it while casting
+*/
+ MSG_ID_BB8 = 0xbb8,
+/*20171018 to latest
+거래 도중에는 할 수 없습니다
+You can not do it while trading
+*/
+ MSG_ID_BB9 = 0xbb9,
+/*20171018 to latest
+노점 개설 도중에는 할 수 없습니다
+You can not do it while opening vendor
+*/
+ MSG_ID_BBA = 0xbba,
+/*20171018 to latest
+NPC 이용중에는 할 수 없습니다
+You can not do it while using NPC
+*/
+ MSG_ID_BBB = 0xbbb,
+/*20171018 to latest
+채팅방 이용중에는 할 수 없습니다
+You can not do it while using chatting room
+*/
+ MSG_ID_BBC = 0xbbc,
+/*20171018 to latest
+파티원 전원이 접속 상태가 아닙니다.
+Party members are not connected.
+*/
+ MSG_ID_BBD = 0xbbd,
+/*20171018 to latest
+스킬 발동시 최소 %d개의 화살이 필요합니다.
+You need %d arrow(s) to activate the skill.
+*/
+ MSG_ID_BBE = 0xbbe,
+/*20171018 to latest
+아이템 정렬
+Align items
+*/
+ MSG_ID_BBF = 0xbbf,
+/*20171018 to latest
+아이템을 버리려면 장비 설정 창을 닫아주세요.
+Please close item setting window to dump item.
+*/
+ MSG_ID_BC0 = 0xbc0,
+/*20171018 to latest
+교체 할 수 있는 아이템이 없습니다.
+There is no item to replace.
+*/
+ MSG_ID_BC1 = 0xbc1,
+/*20171018 to latest
+삭제된 캐릭터
+Deleted character
+*/
+ MSG_ID_BC2 = 0xbc2,
+/*20171018 to latest
+%Y.%m.%d
+*/
+ MSG_ID_BC3 = 0xbc3,
+/*20171018 to latest
+접속일: %s
+Access date: %s
+*/
+ MSG_ID_BC4 = 0xbc4,
+/*20171018 to latest
+제련 중에는 은행을 사용할 수 없습니다. 은행을 강제 종료하였습니다.
+You can not use bank while refining. Bank has closed.
+*/
+ MSG_ID_BC5 = 0xbc5,
+/*20171018 to latest
+제련 중에는 은행을 사용할 수 없습니다.
+You can not use bank while refining.
+*/
+ MSG_ID_BC6 = 0xbc6,
+/*20171018 to latest
+장비 세트 설정 중인 아이템입니다.
+The item has bind to set equipment.
+*/
+ MSG_ID_BC7 = 0xbc7,
+/*20171018 to latest
+인간
+Human
+*/
+ MSG_ID_BC8 = 0xbc8,
+/*20171018 to latest
+검사, 법사, 상인, 복사, 도둑, 궁수
+Swordman, Mage, Merchant, Acolyte, Thief, Archer
+*/
+ MSG_ID_BC9 = 0xbc9,
+/*20171018 to latest
+도람
+Doram
+*/
+ MSG_ID_BCA = 0xbca,
+/*20171018 to latest
+소환사
+Summoner
+*/
+ MSG_ID_BCB = 0xbcb,
+/*20171018 to latest
+미드가르드 대륙의 대표 종족. 무한한 잠재력과 뛰어난 적응력으로 문제 해결에 탁월한 것이 특징이다.
+Delegate race of Midgard. Very talented race to solve a problem with inifite potential and great adaptability.
+*/
+ MSG_ID_BCC = 0xbcc,
+/*20171018 to latest
+파-스타 대륙의 대표적인 종족 중 하나로, 선천적으로 호기심이 강하고 발랄한 성격을 지녔다.
+One of delegate race of Far-star continent with natural born curiosity and sparky character.
+*/
+ MSG_ID_BCD = 0xbcd,
+/*20171018 to latest
+소지 한계량이 70%를 초과하거나, 인벤토리에 10칸 이상의 여유 공간이 부족한 상태입니다.
+Weight limit has reached toover 70%. Or less then 10 invenrory space.
+*/
+ MSG_ID_BCE = 0xbce,
+/*20171018 to latest
+C
+*/
+ MSG_ID_BCF = 0xbcf,
+/*20171018 to latest
+C
+*/
+ MSG_ID_BD0 = 0xbd0,
+/*20171018 to latest
+다른 일을 하는 중입니다.
+Doing in other activity.
+*/
+ MSG_ID_BD1 = 0xbd1,
+/*20171018 to latest
+오버히트 리미트 : %d
+Overheat limit : %d
+*/
+ MSG_ID_BD2 = 0xbd2,
+/*20171018 to latest
+메모리얼 던전 이용 중엔 초대 및 탈퇴가 되지 않습니다.
+You cannot invite or withdraw while in memorial dungeon.
+*/
+ MSG_ID_BD3 = 0xbd3,
+/*20171018 to latest
+비속어가 포함되어있습니다.
+다시 한번 확인해주세요.
+Expletive has detected.
+Please check again.
+*/
+ MSG_ID_BD4 = 0xbd4,
+/*20171018 to latest
+아이디는 %d자 이상 입력해주세요. 사용자 계정이 없으신분들은 왼쪽 하단의 [신청] 버튼을 눌러 계정을 만드시기 바랍니다.
+Please enter over %d characters. If you don't have user account, please click [Register] button on the bottom left.
+*/
+ MSG_ID_BD5 = 0xbd5,
+/*20171018 to latest
+비밀번호는 %d자 이상 입력해주세요.
+Please enter the password over %d characters.
+*/
+ MSG_ID_BD6 = 0xbd6,
+/*20171018 to latest
+진행중이던 작업을 종료후 다시 시도하세요.
+Please finish your current work and try it again.
+*/
+ MSG_ID_BD7 = 0xbd7,
+/*20171018 to latest
+%.1f%% (PC방 %.1f%% + TPLUS %.1f%% + %s서버 %.1f%%)
+%.1f%% (Internet-Cafe %.1f%% + TPLUS %.1f%% + %sServer %.1f%%)
+*/
+ MSG_ID_BD8 = 0xbd8,
+/*20171018 to latest
+아이템을 등록할 수 없습니다
+The item cannot be registered.
+*/
+ MSG_ID_BD9 = 0xbd9,
+/*20171018 to latest
+/100
+/300
+*/
+ MSG_ID_BDA = 0xbda,
+/*20171018 to latest
+/2000
+/4000
+*/
+ MSG_ID_BDB = 0xbdb,
+/*20171018 to latest
+https://member.gnjoy.com.tw/mRO_SecPwd.aspx
+*/
+ MSG_ID_BDC = 0xbdc,
+/*20171018 to latest
+등록할 emblem이 존재하지 않습니다. emblem 폴더에 파일을 넣고 시도해 주세요
+The emblem you want to register does not exist. Insert it in the emblem file and try again
+*/
+ MSG_ID_BDD = 0xbdd,
+/*20171018 to latest
+라그나로크
+Ragnarok Ragnarok
+*/
+ MSG_ID_BDE = 0xbde,
+/*20171018 to latest
+스크린샷에 자신 이외의 캐릭터명이 표시되는 경우나 채팅창에 자신 이외의 캐릭터 대화가 표시되는 경우, 해당 사용자에게 반드시 양해를 구한 후 사용 해 주시기 바랍니다.
+If your screenshot or chat box includes other users besides yourself, first ask permission from the other users before using it.
+*/
+ MSG_ID_BDF = 0xbdf,
+/*20171018 to latest
+현재 상태에선 장비를 교체할 수 없습니다
+You cannot change equipment in current condition
+*/
+ MSG_ID_BE0 = 0xbe0,
+/*20171018 to latest
+해당 유저의 이름을 가져오고 있습니다
+Getting the user's name
+*/
+ MSG_ID_BE1 = 0xbe1,
+/*20171018 to latest
+해당 메시지는 사용 할 수 없는 내용을 포함하고 있습니다.
+This message includes contents you are not able to use.
+*/
+ MSG_ID_BE2 = 0xbe2,
+/*20171018 to latest
+아이템 구입에 실패하였습니다.
+Failed to purchase item.
+*/
+ MSG_ID_BE3 = 0xbe3,
+/*20171018 to latest
+신분증번호 하위 7자리가 일치하지 않습니다.
+The lower numbers of the identification number does not match.
+*/
+ MSG_ID_BE4 = 0xbe4,
+/*20171018 to latest
+닫기
+Close
+*/
+ MSG_ID_BE5 = 0xbe5,
+/*20171018 to latest
+규칙
+Rule
+*/
+ MSG_ID_BE6 = 0xbe6,
+/*20171018 to latest
+1회 구매
+Purchase 1x
+*/
+ MSG_ID_BE7 = 0xbe7,
+/*20171018 to latest
+10회 구매
+Purchase 10x
+*/
+ MSG_ID_BE8 = 0xbe8,
+/*20171018 to latest
+100회 구매
+Purchase 100x
+*/
+ MSG_ID_BE9 = 0xbe9,
+/*20171018 to latest
+1등 당첨
+Win 1st prize
+*/
+ MSG_ID_BEA = 0xbea,
+/*20171018 to latest
+2등 당첨
+Win 2nd prize
+*/
+ MSG_ID_BEB = 0xbeb,
+/*20171018 to latest
+3등 당첨
+Win 3rd prize
+*/
+ MSG_ID_BEC = 0xbec,
+/*20171018 to latest
+현재 사용하지 않음
+Currently not in use
+*/
+ MSG_ID_BED = 0xbed,
+/*20171018 to latest
+현재 사용하지 않음
+Currently not in use
+*/
+ MSG_ID_BEE = 0xbee,
+/*20171018 to latest
+제니 로또 당첨자
+Zeny Lottery winner
+*/
+ MSG_ID_BEF = 0xbef,
+/*20171018 to latest
+복권 구매 금액
+Lottery purchase amount
+*/
+ MSG_ID_BF0 = 0xbf0,
+/*20171018 to latest
+참여 캐릭터
+Participating character
+*/
+ MSG_ID_BF1 = 0xbf1,
+/*20171018 to latest
+1등
+1st Price
+*/
+ MSG_ID_BF2 = 0xbf2,
+/*20171018 to latest
+2등
+2nd Price
+*/
+ MSG_ID_BF3 = 0xbf3,
+/*20171018 to latest
+3등
+3rd Price
+*/
+ MSG_ID_BF4 = 0xbf4,
+/*20171018 to latest
+구매 보상 아이템
+Purchase Reward Item
+*/
+ MSG_ID_BF5 = 0xbf5,
+/*20171018 to latest
+^1a1a1a복권 ^b%d개^/b를
+^4435b2%dZeny^1a1a1a로
+구매하시겠습니까?
+^1a1a1a Do you want to purchase ^b%d lottery tickets for
+^4435b2%dZeny^1a1a1a?
+*/
+ MSG_ID_BF6 = 0xbf6,
+/*20171018 to latest
+복권을 성공적으로 구매하였습니다.
+You have successfully purchased the lottery ticket.
+*/
+ MSG_ID_BF7 = 0xbf7,
+/*20171018 to latest
+소지 제니가 부족하여 복권을 구매 할 수 없습니다.
+Not enough Zeny to purchase lottey ticket.
+*/
+ MSG_ID_BF8 = 0xbf8,
+/*20171018 to latest
+최대 복권 구매 횟수는 1000회를 초과 할 수 없습니다.
+You are only able to purchase the tickets upto 1000 times.
+*/
+ MSG_ID_BF9 = 0xbf9,
+/*20171018 to latest
+예
+Yes
+*/
+ MSG_ID_BFA = 0xbfa,
+/*20171018 to latest
+아니요
+No
+*/
+ MSG_ID_BFB = 0xbfb,
+/*20171018 to latest
+HP
+*/
+ MSG_ID_BFC = 0xbfc,
+/*20171018 to latest
+SP
+*/
+ MSG_ID_BFD = 0xbfd,
+/*20171018 to latest
+Lv
+*/
+ MSG_ID_BFE = 0xbfe,
+/*20171018 to latest
+Lv
+*/
+ MSG_ID_BFF = 0xbff,
+/*20171018 to latest
+Exp
+*/
+ MSG_ID_C00 = 0xc00,
+/*20171018 to latest
+ all on
+*/
+ MSG_ID_C01 = 0xc01,
+/*20171018 to latest
+Play Replay Flie
+*/
+ MSG_ID_C02 = 0xc02,
+/*20171018 to latest
+P
+*/
+ MSG_ID_C03 = 0xc03,
+/*20171018 to latest
+Total
+*/
+ MSG_ID_C04 = 0xc04,
+/*20171018 to latest
+Basicinfo
+*/
+ MSG_ID_C05 = 0xc05,
+/*20171018 to latest
+Equip
+*/
+ MSG_ID_C06 = 0xc06,
+/*20171018 to latest
+Item
+*/
+ MSG_ID_C07 = 0xc07,
+/*20171018 to latest
+Skill
+*/
+ MSG_ID_C08 = 0xc08,
+/*20171018 to latest
+Guild
+*/
+ MSG_ID_C09 = 0xc09,
+/*20171018 to latest
+Party
+*/
+ MSG_ID_C0A = 0xc0a,
+/*20171018 to latest
+Chatting
+*/
+ MSG_ID_C0B = 0xc0b,
+/*20171018 to latest
+Shortcut
+*/
+ MSG_ID_C0C = 0xc0c,
+/*20171018 to latest
+Status
+*/
+ MSG_ID_C0D = 0xc0d,
+/*20171018 to latest
+ALL
+All
+*/
+ MSG_ID_C0E = 0xc0e,
+/*20171018 to latest
+User Defined File Name
+*/
+ MSG_ID_C0F = 0xc0f,
+/*20171018 to latest
+Repeated File Check
+*/
+ MSG_ID_C10 = 0xc10,
+/*20171018 to latest
+on
+*/
+ MSG_ID_C11 = 0xc11,
+/*20171018 to latest
+<Basic Skin>
+*/
+ MSG_ID_C12 = 0xc12,
+/*20171018 to latest
+Select Skin
+*/
+ MSG_ID_C13 = 0xc13,
+/*20171018 to latest
+현재 복권에 참여 중이라 삭제할 수 없습니다
+You cannot delete it because you are currently participating in the lottery
+*/
+ MSG_ID_C14 = 0xc14,
+/*20171018 to latest
+/achievement
+*/
+ MSG_ID_C15 = 0xc15,
+/*20171018 to latest
+제니 복권
+Zeny Lottery ticket
+*/
+ MSG_ID_C16 = 0xc16,
+/*20171018 to latest
+제니 복권 %d등 당첨 보상
+Zenyy Lottery %dprize reward
+*/
+ MSG_ID_C17 = 0xc17,
+/*20171018 to latest
+%d등 당첨 보상: %s
+%dprize reward: %s
+*/
+ MSG_ID_C18 = 0xc18,
+/*20171018 to latest
+제니 복권 누적 구매 보상
+Zeny Lottery Cumulative purchase reward
+*/
+ MSG_ID_C19 = 0xc19,
+/*20171018 to latest
+누적 %d회 보상: %s
+Cumulative %d times reward: %s
+*/
+ MSG_ID_C1A = 0xc1a,
+/*20171018 to latest
+제니 복권 구매 환불
+Zeny Lottery Refund
+*/
+ MSG_ID_C1B = 0xc1b,
+/*20171018 to latest
+환불 금액: %d Zeny
+환불 사유: 서버 내 복권 추첨 달성 실패
+Refund amount: %d Zeny
+Reason for Refund: Failed to draw lottery in the server
+*/
+ MSG_ID_C1C = 0xc1c,
+/*20171018 to latest
+미니 파티창 추가
+Add Mini Party Chat
+*/
+ MSG_ID_C1D = 0xc1d,
+/*20171018 to latest
+미니 파티창 삭제
+Delete Mini Party Chat
+*/
+ MSG_ID_C1E = 0xc1e,
+/*20171018 to latest
+복권 추첨이 모두 종료 되었습니다! 당첨자를 확인해주세요
+The lottery draw had ended! Check the winner!
+*/
+ MSG_ID_C1F = 0xc1f,
+/*20171018 to latest
+%d월 %d일
+%dMonth %dDay
+*/
+ MSG_ID_C20 = 0xc20,
+/*20171018 to latest
+다음 등급까지
+Till the next grade
+*/
+ MSG_ID_C21 = 0xc21,
+/*20171018 to latest
+전체
+All
+*/
+ MSG_ID_C22 = 0xc22,
+/*20171018 to latest
+미완료
+Incomplete
+*/
+ MSG_ID_C23 = 0xc23,
+/*20171018 to latest
+(달성!)
+(Accomplished!)
+*/
+ MSG_ID_C24 = 0xc24,
+/*20171018 to latest
+(미달성)
+(Not Accomplished)
+*/
+ MSG_ID_C25 = 0xc25,
+/*20171018 to latest
+장비 교체
+Change equipment
+*/
+ MSG_ID_C26 = 0xc26,
+/*20171018 to latest
+CHANGE
+*/
+ MSG_ID_C27 = 0xc27,
+/*20171018 to latest
+힘 파라메터
+ ^cc0000근접 물리 공격력^ffffff, 소지무게
+Power Parameter
+ ^cc0000Melee PhysicalAttack^ffffff, Carrying Weight
+*/
+ MSG_ID_C28 = 0xc28,
+/*20171018 to latest
+민첩성 파라메터
+^cc0000공격 속도^ffffff, 회피율, 물리 방어력
+Agility Parameter
+^cc0000Attack Speed^ffffff, Dodge, Physical Defense
+*/
+ MSG_ID_C29 = 0xc29,
+/*20171018 to latest
+체력 파라메터
+^cc0000최대 체력^ffffff, 물리 방어력, 마법 방어력
+HP Parameter
+^cc0000Max HP^ffffff, Physical Defense, Magic Defense
+*/
+ MSG_ID_C2A = 0xc2a,
+/*20171018 to latest
+지력 파라메터
+^cc0000마법 공격력^ffffff, 캐스팅 시간, 마법 방어력
+Intellect Parameter
+^cc0000Magic Attack^ffffff, Casting Time, Magic Defense
+*/
+ MSG_ID_C2B = 0xc2b,
+/*20171018 to latest
+손재주 파라메터
+^cc0000원거리 물리 공격력^ffffff, 명중률, 캐스팅 시간, 마법 공격력
+Handcraft Parameter
+^cc0000Long Range Physical Attack^ffffff, Accuracy, Casting Time, Magic Attack
+*/
+ MSG_ID_C2C = 0xc2c,
+/*20171018 to latest
+운 파라메터
+^cc0000치명타율^ffffff, 명중률, 물리공격력, 마법공격력, 회피율
+Moon Parameter
+^cc0000Critical Rate^ffffff, Accuracy, Physical Attack, Magic Attack, Dodge
+*/
+ MSG_ID_C2D = 0xc2d,
+/*20171018 to latest
+물리 공격력
+Physical Attack
+*/
+ MSG_ID_C2E = 0xc2e,
+/*20171018 to latest
+물리 방어력
+Physical Defense
+*/
+ MSG_ID_C2F = 0xc2f,
+/*20171018 to latest
+명중률
+Accuracy
+*/
+ MSG_ID_C30 = 0xc30,
+/*20171018 to latest
+치명타율
+Critical Rate
+*/
+ MSG_ID_C31 = 0xc31,
+/*20171018 to latest
+소속길드
+Affiliated Guild
+*/
+ MSG_ID_C32 = 0xc32,
+/*20171018 to latest
+각 파라메터 레벨업에 사용되는 포인트
+Points to level up each Parameter
+*/
+ MSG_ID_C33 = 0xc33,
+/*20171018 to latest
+마법공격력
+Magic Attack
+*/
+ MSG_ID_C34 = 0xc34,
+/*20171018 to latest
+마법방어력
+Magic Defense
+*/
+ MSG_ID_C35 = 0xc35,
+/*20171018 to latest
+회피율
+Dodge
+*/
+ MSG_ID_C36 = 0xc36,
+/*20171018 to latest
+공격 속도
+Attack Speed
+*/
+ MSG_ID_C37 = 0xc37,
+/*20171018 to latest
+단축키 안내
+Shortcut
+*/
+ MSG_ID_C38 = 0xc38,
+/*20171018 to latest
+옵션
+Option
+*/
+ MSG_ID_C39 = 0xc39,
+/*20171018 to latest
+스킬 단축키 (F1 ~ F9)
+Skill Shortcut Key (F1 ~ F9)
+*/
+ MSG_ID_C3A = 0xc3a,
+/*20171018 to latest
+이미지 캡쳐
+Capture Image
+*/
+ MSG_ID_C3B = 0xc3b,
+/*20171018 to latest
+확대
+Zoom In
+*/
+ MSG_ID_C3C = 0xc3c,
+/*20171018 to latest
+축소
+Zoom Out
+*/
+ MSG_ID_C3D = 0xc3d,
+/*20171018 to latest
+길드
+Guild
+*/
+ MSG_ID_C3E = 0xc3e,
+/*20171018 to latest
+은행
+Bank
+*/
+ MSG_ID_C3F = 0xc3f,
+/*20171018 to latest
+우편
+Mail
+*/
+ MSG_ID_C40 = 0xc40,
+/*20171018 to latest
+캐시 상점
+Cash Shop
+*/
+ MSG_ID_C41 = 0xc41,
+/*20171018 to latest
+앉기
+Sit
+*/
+ MSG_ID_C42 = 0xc42,
+/*20171018 to latest
+이동
+Move
+*/
+ MSG_ID_C43 = 0xc43,
+/*20171018 to latest
+회전
+Rotate
+*/
+ MSG_ID_C44 = 0xc44,
+/*20171018 to latest
+파티장은 파티장을 다른 파티원에게 위임 후 탈퇴 가능합니다.
+The Party Leader can be dropped out only after another party member becomes a Party Leader.
+*/
+ MSG_ID_C45 = 0xc45,
+/*20171018 to latest
+이 동영상을 그만 보시겠습니까?
+Do you want to stop viewing this video?
+*/
+ MSG_ID_C46 = 0xc46,
+/*20171018 to latest
+ 장비가 장비 교체 창에 장착 되었습니다.
+ gear has been equipped in the gear equipment pop-up.
+*/
+ MSG_ID_C47 = 0xc47,
+/*20171018 to latest
+ 장비가 장비 교체 창에서 해제 되었습니다.
+ gear has been removed in the gear equipment pop-up.
+*/
+ MSG_ID_C48 = 0xc48,
+/*20171018 to latest
+현재가 마지막 라인입니다.
+This is the last line.
+*/
+ MSG_ID_C49 = 0xc49,
+/*20171018 to latest
+%.1f%% ( 기본 100%% + 프리미엄 %.1f%%+ %s서버 %.1f%% )
+%.1f%% ( Base 100%% + Premium %.1f%%+ %sServer %.1f%% )
+*/
+ MSG_ID_C4A = 0xc4a,
+/*20171018 to latest
+한자
+Chinese character
+*/
+ MSG_ID_C4B = 0xc4b,
+/*20171018 to latest
+단축키 설정
+Shortcut Settings
+*/
+ MSG_ID_C4C = 0xc4c,
+/*20171018 to latest
+당신의 정액제 기간은 %s에 종료됩니다.
+Your subscription will be ended on%s.
+*/
+ MSG_ID_C4D = 0xc4d,
+/*20171018 to latest
+리플레이 파일을 찾지 못하였습니다.
+Cannot find the replay file.
+*/
+ MSG_ID_C4E = 0xc4e,
+/*20171018 to latest
+의상
+Shoes
+*/
+ MSG_ID_C4F = 0xc4f,
+/*20171018 to latest
+신발
+Head
+*/
+ MSG_ID_C50 = 0xc50,
+/*20171018 to latest
+갑옷
+Armor
+*/
+ MSG_ID_C51 = 0xc51,
+/*20171018 to latest
+어깨
+Shoulders
+*/
+ MSG_ID_C52 = 0xc52,
+/*20171018 to latest
+악세
+Accessory
+*/
+ MSG_ID_C53 = 0xc53,
+/*20171018 to latest
+머리
+Costume
+*/
+ MSG_ID_C54 = 0xc54,
+/*20171018 to latest
+차순정렬
+Sort Order
+*/
+ MSG_ID_C55 = 0xc55,
+/*20171018 to latest
+일반 장비
+Normal Gear
+*/
+ MSG_ID_C56 = 0xc56,
+/*20171018 to latest
+특수 장비
+Special Gear
+*/
+ MSG_ID_C57 = 0xc57,
+/*20171018 to latest
+칭호
+Style
+*/
+ MSG_ID_C58 = 0xc58,
+/*20171018 to latest
+/quake : 화면 흔들림 효과 On/Off
+/quake : Screen Shaking Effect On/Off
+*/
+ MSG_ID_C59 = 0xc59,
+/*20171018 to latest
+/aura2 : 오오라를 완전히 Off 시킬 수 있습니다 On Off
+/aura2 : You can completely turn off the aurora On/Off
+*/
+ MSG_ID_C5A = 0xc5a,
+/*20171018 to latest
+기본 설정
+Default Settings
+*/
+ MSG_ID_C5B = 0xc5b,
+/*20171018 to latest
+고급 설정
+Advanced Settings
+*/
+ MSG_ID_C5C = 0xc5c,
+/*20171018 to latest
+기본설정값이 적용됩니다.
+The Default Settings will be applied.
+*/
+ MSG_ID_C5D = 0xc5d,
+/*20171018 to latest
+기본 설정값이 적용됩니다. 동의하십니까?
+The Default Settings will be applied. Do you agree?
+*/
+ MSG_ID_C5E = 0xc5e,
+/*20171018 to latest
+설정값이 적용됩니다. 동의하십니까?
+The settings will be applied. Do you agree?
+*/
+ MSG_ID_C5F = 0xc5f,
+/*20171018 to latest
+설정값을 적용하려면 재시작이 필요합니다. 동의하십니까?
+Need to restart to apply the settings. Do you agree?
+*/
+ MSG_ID_C60 = 0xc60,
+/*20171018 to latest
+안개
+Fog
+*/
+ MSG_ID_C61 = 0xc61,
+/*20171018 to latest
+오오라 간략화
+Simplified aurora
+*/
+ MSG_ID_C62 = 0xc62,
+/*20171018 to latest
+오오라켜기
+Turn on aurora
+*/
+ MSG_ID_C63 = 0xc63,
+/*20171018 to latest
+이펙트 표시
+Show Effect
+*/
+ MSG_ID_C64 = 0xc64,
+/*20171018 to latest
+음영 표시
+Show Shadows
+*/
+ MSG_ID_C65 = 0xc65,
+/*20171018 to latest
+No Shift
+*/
+ MSG_ID_C66 = 0xc66,
+/*20171018 to latest
+하드웨어 T&L 가속기능을 선택합니다
+Select Hardware T&L Acceleration Function
+*/
+ MSG_ID_C67 = 0xc67,
+/*20171018 to latest
+게임의 해상도를 선택합니다
+Select Game Resolution
+*/
+ MSG_ID_C68 = 0xc68,
+/*20171018 to latest
+전체화면 사용
+Use full screen
+*/
+ MSG_ID_C69 = 0xc69,
+/*20171018 to latest
+마우스 고정
+Fix mouse
+*/
+ MSG_ID_C6A = 0xc6a,
+/*20171018 to latest
+이펙트 설정
+Effect Settings
+*/
+ MSG_ID_C6B = 0xc6b,
+/*20171018 to latest
+Control 설정
+Control Settings
+*/
+ MSG_ID_C6C = 0xc6c,
+/*20171018 to latest
+그래픽 장치 설정
+Graphic Device Settings
+*/
+ MSG_ID_C6D = 0xc6d,
+/*20171018 to latest
+그래픽 해상도 설정
+Graphic Resolution Settings
+*/
+ MSG_ID_C6E = 0xc6e,
+/*20171018 to latest
+전체 화면 유무 설정
+Full Screen Settings
+*/
+ MSG_ID_C6F = 0xc6f,
+/*20171018 to latest
+마우스 고정 여부 설정
+Fix mouse Settings
+*/
+ MSG_ID_C70 = 0xc70,
+/*20171018 to latest
+수수료 :
+Commission :
+*/
+ MSG_ID_C71 = 0xc71,
+/*20171018 to latest
+수수료 총액 :
+Total commission amount :
+*/
+ MSG_ID_C72 = 0xc72,
+/*20171018 to latest
+수신인 설정
+Select receiver
+*/
+ MSG_ID_C73 = 0xc73,
+/*20171018 to latest
+수신그룹 설정
+Select receiving group
+*/
+ MSG_ID_C74 = 0xc74,
+/*20171018 to latest
+크기 변경(F10)
+Change size(F10)
+*/
+ MSG_ID_C75 = 0xc75,
+/*20171018 to latest
+메일함을 불러오는 중 입니다.
+불필요한 메일은 ^c92114삭제^000000해 주세요~!!
+Loading the mailbox.
+^c92114Delete^000000unnecessary emails!!
+*/
+ MSG_ID_C76 = 0xc76,
+/*20171018 to latest
+NOW LOADING..
+*/
+ MSG_ID_C77 = 0xc77,
+/*20171018 to latest
+제목
+Title
+*/
+ MSG_ID_C78 = 0xc78,
+/*20171018 to latest
+보낸이
+Sender
+*/
+ MSG_ID_C79 = 0xc79,
+/*20171018 to latest
+라그나로크 클라이언트와 동시에 실행이 불가능 합니다. setup을 종료합니다
+*/
+ MSG_ID_C7A = 0xc7a,
+/*20171018 to latest
+추가 기능 설정
+*/
+ MSG_ID_C7B = 0xc7b,
+/*20171018 to latest
+This account does not exist.
+*/
+ MSG_ID_C7C = 0xc7c,
+/*20171018 to latest
+Passwords do not match.
+*/
+ MSG_ID_C7D = 0xc7d,
+/*20171018 to latest
+Failed to pass IP authentication
+*/
+ MSG_ID_C7E = 0xc7e,
+/*20171018 to latest
+No identification number, supplement your registration information
+*/
+ MSG_ID_C7F = 0xc7f,
+/*20171018 to latest
+Account block
+*/
+ MSG_ID_C80 = 0xc80,
+/*20171018 to latest
+System error
+*/
+ MSG_ID_C81 = 0xc81,
+/*20171018 to latest
+unknown error found.
+*/
+ MSG_ID_C82 = 0xc82,
+/*20171018 to latest
+길안내 아이콘 설정
+*/
+ MSG_ID_C83 = 0xc83,
+/*20171018 to latest
+길 안내 정보 UI
+*/
+ MSG_ID_C84 = 0xc84,
+/*20171018 to latest
+길 안내 정보 열기
+*/
+ MSG_ID_C85 = 0xc85,
+/*20171018 to latest
+현재 위치 공유
+*/
+ MSG_ID_C86 = 0xc86,
+/*20171018 to latest
+검색결과[0]
+*/
+ MSG_ID_C87 = 0xc87,
+/*20171018 to latest
+검색&안내
+*/
+ MSG_ID_C88 = 0xc88,
+/*20171018 to latest
+위치가 올바르지 않습니다.
+*/
+ MSG_ID_C89 = 0xc89,
+/*20171018 to latest
+검색결과[%d]
+*/
+ MSG_ID_C8A = 0xc8a,
+/*20171018 to latest
+길안내 표시를 위한 아이콘 설정
+*/
+ MSG_ID_C8B = 0xc8b,
+/*20171018 to latest
+길 찾기에 zeny 허용
+*/
+ MSG_ID_C8C = 0xc8c,
+/*20171018 to latest
+내비게이션 도킹 해제
+*/
+ MSG_ID_C8D = 0xc8d,
+/*20171018 to latest
+활성화 하지 않은 계정입니다.
+*/
+ MSG_ID_C8E = 0xc8e,
+/*20171018 to latest
+클릭한 위치가 채팅창에 공유 됩니다.
+*/
+ MSG_ID_C8F = 0xc8f,
+/*20171018 to latest
+4. Service 항목을 선택하면 Zeny&비공정 이용을 고려하여 안내 한다.
+*/
+ MSG_ID_C90 = 0xc90,
+/*20171018 to latest
+5. [<-] 버튼 : 길안내 모드 <-> 검색 모드를 바꾸거나
+*/
+ MSG_ID_C91 = 0xc91,
+/*20171018 to latest
+공유하기 모드 -> 서치 모드로 돌아갈때 사용 된다.
+*/
+ MSG_ID_C92 = 0xc92,
+/*20171018 to latest
+경험치 %lld 얻음
+*/
+ MSG_ID_C93 = 0xc93,
+/*20171018 to latest
+'%lld'의 경험치를
+*/
+ MSG_ID_C94 = 0xc94,
+/*20171018 to latest
+^b- 노점 수수료 안내^/b
+노점 설정 가격에 따라 일정 비율의 수수료가 부가됩니다.
+
+ ^b> 수수료 비율^/b
+각 금액에 따른 수수료의 비율은 아래와 같습니다.
+
+0 z ~ 10,000 z
+ = 수수료율 : ^1567fe0%^000000
+10,001 z ~ 100,000 z
+ = 수수료율 : ^1567fe0%^000000
+100,001 z ~ 1,000,000 z
+ = 수수료율 : ^1567fe0%^000000
+1,000,001 z ~ 10,000,000 z
+ = 수수료율 : ^1567fe0%^000000
+10,000,001 z ~ 100,000,000 z
+ = 수수료율 : ^1567fe5%^000000
+100,000,001 z 이상
+ = 수수료율 : ^1567fe5%^000000
+*/
+ MSG_ID_C95 = 0xc95,
+/*20171018 to latest
+실거래가 :
+*/
+ MSG_ID_C96 = 0xc96,
+/*20171018 to latest
+※ 아이템 판매시, 실거래가만큼 제니를 획득합니다.
+*/
+ MSG_ID_C97 = 0xc97,
+/*20171018 to latest
+※ 아이템 구매시, 실거래가만큼 제니가 차감됩니다.
+*/
+ MSG_ID_C98 = 0xc98,
+/*20171018 to latest
+채팅방 개설
+*/
+ MSG_ID_C99 = 0xc99,
+/*20171018 to latest
+해당 캐릭터는 파티가입이 가능하지 않은 레벨입니다.
+*/
+ MSG_ID_C9A = 0xc9a,
+/*20171018 to latest
+'%lld'의 잡경험치를
+*/
+ MSG_ID_C9B = 0xc9b,
+/*20171018 to latest
+잡경험치 %lld 얻음
+*/
+ MSG_ID_C9C = 0xc9c,
+/*20171018 to latest
+현재위치(대로)에는 노점을 개설할 수 없습니다.
+*/
+ MSG_ID_C9D = 0xc9d,
+/*20171018 to latest
+초 후 가능합니다.
+*/
+ MSG_ID_C9E = 0xc9e,
+/*20171018 to latest
+파티원
+*/
+ MSG_ID_C9F = 0xc9f,
+/*20171018 to latest
+SNS 전송실패(%d)
+*/
+ MSG_ID_CA0 = 0xca0,
+/*20171018 to latest
+SNS 서버 연결실패
+*/
+ MSG_ID_CA1 = 0xca1,
+/*20171018 to latest
+SNS 로그인 후 사용 가능합니다.
+*/
+ MSG_ID_CA2 = 0xca2,
+/*20171018 to latest
+접속 할 수 있는 주소가 존재하지 않습니다.
+*/
+ MSG_ID_CA3 = 0xca3,
+/*20171018 to latest
+미니파티창이 겹쳐져 있어 사용하실 수 없습니다.
+*/
+ MSG_ID_CA4 = 0xca4,
+/*20171018 to latest
+나의 판매노점
+*/
+ MSG_ID_CA5 = 0xca5,
+/*20171018 to latest
+BOX
+*/
+ MSG_ID_CA6 = 0xca6,
+/*20171018 to latest
+팁박스
+*/
+ MSG_ID_CA7 = 0xca7,
+/*20171018 to latest
+트윗을 성공했습니다.
+*/
+ MSG_ID_CA8 = 0xca8,
+/*20171018 to latest
+다시하기
+*/
+ MSG_ID_CA9 = 0xca9,
+/*20171018 to latest
+다시하기가 비활성화되었습니다. 제련 재료를 다시 선택해주세요.
+*/
+ MSG_ID_CAA = 0xcaa,
+/*20171018 to latest
+제련석이 부족하여 다시하기가 비활성화 되었습니다.
+*/
+ MSG_ID_CAB = 0xcab,
+/*20171018 to latest
+제니가 부족하여 다시하기가 비활성화 되었습니다.
+*/
+ MSG_ID_CAC = 0xcac,
+/*20171018 to latest
+대장장이의 축복이 부족하여 다시하기가 비활성화 되었습니다.
+*/
+ MSG_ID_CAD = 0xcad,
+/*20171018 to latest
+아이템이 파괴되었습니다.
+*/
+ MSG_ID_CAE = 0xcae,
+/*20171018 to latest
+모든 스테이터스가 감소되었습니다.
+*/
+ MSG_ID_CAF = 0xcaf,
+/*20171018 to latest
+모든 스테이터스 감소 효과가 해제되었습니다.
+*/
+ MSG_ID_CB0 = 0xcb0,
+/*20171018 to latest
+OTP 비밀번호는 8자리 입니다.
+*/
+ MSG_ID_CB1 = 0xcb1,
+/*20171018 to latest
+통합계정
+*/
+ MSG_ID_CB2 = 0xcb2,
+/*20171018 to latest
+라그나로크
+*/
+ MSG_ID_CB3 = 0xcb3,
+/*20171018 to latest
+서비스 점검 중입니다.
+*/
+ MSG_ID_CB4 = 0xcb4,
+/*20171018 to latest
+검색어를 입력해주세요
+*/
+ MSG_ID_CB5 = 0xcb5,
+/*20171018 to latest
+MOTP
+*/
+ MSG_ID_CB6 = 0xcb6,
+/*20171018 to latest
+인증번호
+Identification number.
+*/
+ MSG_ID_CB7 = 0xcb7,
+/*20171018 to latest
+휴대폰에 다운받은 GNJOY MOTP를 실행하여 인증번호를 입력해 주세요.
+*/
+ MSG_ID_CB8 = 0xcb8,
+/*20171018 to latest
+파티장을 위임할 파티원이 존재하지 않습니다. 파티를 해산하시겠습니까?
+*/
+ MSG_ID_CB9 = 0xcb9,
+/*20171018 to latest
+ - 만18세이상
+*/
+ MSG_ID_CBA = 0xcba,
+/*20171018 to latest
+ - 유료서버
+*/
+ MSG_ID_CBB = 0xcbb,
+/*20171018 to latest
+ - 무료서버
+*/
+ MSG_ID_CBC = 0xcbc,
+/*20171018 to latest
+쾌적
+*/
+ MSG_ID_CBD = 0xcbd,
+/*20171018 to latest
+보통
+Normal
+*/
+ MSG_ID_CBE = 0xcbe,
+/*20171018 to latest
+혼잡
+*/
+ MSG_ID_CBF = 0xcbf,
+/*20171018 to latest
+포화
+*/
+ MSG_ID_CC0 = 0xcc0,
+/*20171018 to latest
+map
+*/
+ MSG_ID_CC1 = 0xcc1,
+/*20171018 to latest
+월드창고는 인벤토리 아이템만 입출고 할 수 있습니다.
+*/
+ MSG_ID_CC2 = 0xcc2,
+/*20171018 to latest
+월드창고에는 펫알을 입고할 수 없습니다.
+*/
+ MSG_ID_CC3 = 0xcc3,
+/*20171018 to latest
+월드창고에는 제작아이템을 입고할 수 없습니다.
+*/
+ MSG_ID_CC4 = 0xcc4,
+/*20171018 to latest
+%s 에서는 출고 할 수 없는 아이템입니다.
+*/
+ MSG_ID_CC5 = 0xcc5,
+/*20171018 to latest
+던전 파괴
+*/
+ MSG_ID_CC6 = 0xcc6,
+/*20171018 to latest
+[%s] 님이 제련을 성공하여, [+%d %s] 아이템을 획득하였습니다.
+*/
+ MSG_ID_CC7 = 0xcc7,
+/*20171018 to latest
+[%s] 님이 [+%d %s] 아이템의 제련에 실패하였습니다.
+*/
+ MSG_ID_CC8 = 0xcc8,
+/*20171018 to latest
+파티장을 위임한 이후에 탈퇴할 수 있습니다.
+*/
+ MSG_ID_CC9 = 0xcc9,
+/*20171018 to latest
+오름
+*/
+ MSG_ID_CCA = 0xcca,
+/*20171018 to latest
+내림
+*/
+ MSG_ID_CCB = 0xccb,
+/*20171018 to latest
+기본
+*/
+ MSG_ID_CCC = 0xccc,
+/*20171018 to latest
+변조된 파일이 발견되었습니다. 게임을 다시 실행시켜주세요.
+*/
+ MSG_ID_CCD = 0xccd,
+/*20171018 to latest
+%s 은(는) 이맵에서 이동이 제한된 아이템입니다.
+*/
+ MSG_ID_CCE = 0xcce,
+/*20171018 to latest
+스스로
+먹이먹기
+*/
+ MSG_ID_CCF = 0xccf,
+/*20171018 to latest
+로덱스 작성창이 열려있는 동안 호문클루스가 먹이를 먹지 못합니다.
+*/
+ MSG_ID_CD0 = 0xcd0,
+/*20171018 to latest
+호문클루스가 먹이를 먹었습니다. '%s' 잔여량 %d개
+*/
+ MSG_ID_CD1 = 0xcd1,
+/*20171018 to latest
+호문클루스 스스로 먹이 먹기 활성화 On
+*/
+ MSG_ID_CD2 = 0xcd2,
+/*20171018 to latest
+호문클루스 스스로 먹이 먹기 활성화 Off
+*/
+ MSG_ID_CD3 = 0xcd3,
+/*20171018 to latest
+호문클루스는 주인이 획득하는 경험치의
+10%만큼을 자신의 경험치로 분배 받습니다.
+*/
+ MSG_ID_CD4 = 0xcd4,
+/*20171018 to latest
+확률 : %d%%
+*/
+ MSG_ID_CD5 = 0xcd5,
+/*20171018 to latest
+해당 대상은 호문의 공격대상이 아닙니다. 'Alt + 우클릭'을 통해 호문클루스의 공격대상을 지정해주세요.
+*/
+ MSG_ID_CD6 = 0xcd6,
+/*20171018 to latest
+호문의 공격대상이 존재하지 않습니다. 'Alt + 우클릭'을 통해 호문클루스의 공격대상을 지정해주세요.
+*/
+ MSG_ID_CD7 = 0xcd7,
+/*20171018 to latest
+판매 리스트
+*/
+ MSG_ID_CD8 = 0xcd8,
+/*20171018 to latest
+구입 리스트
+*/
+ MSG_ID_CD9 = 0xcd9,
+/*20171018 to latest
+신규
+New
+*/
+ MSG_ID_CDA = 0xcda,
+/*20171018 to latest
+인기
+Headgears
+*/
+ MSG_ID_CDB = 0xcdb,
+/*20171018 to latest
+한정
+Limited
+*/
+ MSG_ID_CDC = 0xcdc,
+/*20171018 to latest
+임대장비
+Rental Items
+*/
+ MSG_ID_CDD = 0xcdd,
+/*20171018 to latest
+영구장비
+Equipments
+*/
+ MSG_ID_CDE = 0xcde,
+/*20171018 to latest
+버프
+Scrolls
+*/
+ MSG_ID_CDF = 0xcdf,
+/*20171018 to latest
+회복
+Consumables
+*/
+ MSG_ID_CE0 = 0xce0,
+/*20171018 to latest
+기타
+Other
+*/
+ MSG_ID_CE1 = 0xce1,
+/*20171018 to latest
+특가
+Special
+*/
+ MSG_ID_CE2 = 0xce2,
+/*20171018 to latest
+충전하기
+*/
+ MSG_ID_CE3 = 0xce3,
+/*20171018 to latest
+구입하기
+*/
+ MSG_ID_CE4 = 0xce4,
+/*20171018 to 20171206
+https://payment.gnjoy.com/bill/login.grv
+20171206 to latest
+http://member.gnjoy.com/user/pay/chargelist.asp
+*/
+ MSG_ID_CE5 = 0xce5,
+/*20171018 to latest
+아이템 검색
+*/
+ MSG_ID_CE6 = 0xce6,
+/*20171018 to latest
+무료캐시
+*/
+ MSG_ID_CE7 = 0xce7,
+/*20171018 to latest
+무료캐시 사용
+*/
+ MSG_ID_CE8 = 0xce8,
+/*20171018 to latest
+소지캐시
+*/
+ MSG_ID_CE9 = 0xce9,
+/*20171018 to latest
+수량갱신
+*/
+ MSG_ID_CEA = 0xcea,
+/*20171018 to latest
+성제(여)
+*/
+ MSG_ID_CEB = 0xceb,
+/*20171018 to latest
+소울리퍼(여)
+*/
+ MSG_ID_CEC = 0xcec,
+/*20171018 to latest
+성제(남)
+*/
+ MSG_ID_CED = 0xced,
+/*20171018 to latest
+소울리퍼(남)
+*/
+ MSG_ID_CEE = 0xcee,
+/*20171018 to latest
+무게가 %d 퍼센트 이상일때는 HP SP가 자연적으로 회복이 되지 않습니다.
+*/
+ MSG_ID_CEF = 0xcef,
+/*20171018 to latest
+한 번에 구입 가능한 아이템의 가짓수는 8개입니다.
+*/
+ MSG_ID_CF0 = 0xcf0,
+/*20171018 to latest
+http://gift.zhaouc.com/#/index
+http://gift.zhaouc.com/
+*/
+ MSG_ID_CF1 = 0xcf1,
+/*20171018 to latest
+UNKNOWN ERROR:%d
+*/
+ MSG_ID_CF2 = 0xcf2,
+/*20171018 to latest
+NOT USER
+*/
+ MSG_ID_CF3 = 0xcf3,
+/*20171018 to latest
+THIS ACCOUNT ID IS BLOCKED
+*/
+ MSG_ID_CF4 = 0xcf4,
+/*20171018 to latest
+COUNTRY REJECT (OR NOT AVALIABLE USER )
+*/
+ MSG_ID_CF5 = 0xcf5,
+/*20171018 to latest
+NOT MATCH PASSWORD
+*/
+ MSG_ID_CF6 = 0xcf6,
+/*20171018 to latest
+NOT EMAIL CERT
+*/
+ MSG_ID_CF7 = 0xcf7,
+/*20171018 to latest
+PAYPAL BLOCK
+*/
+ MSG_ID_CF8 = 0xcf8,
+/*20171018 to latest
+COUNTRY REJECT
+*/
+ MSG_ID_CF9 = 0xcf9,
+/*20171018 to latest
+PAYPAL BLOCK
+*/
+ MSG_ID_CFA = 0xcfa,
+/*20171018 to latest
+WEB BLOCK
+*/
+ MSG_ID_CFB = 0xcfb,
+/*20171018 to latest
+AGE LIMIT USER
+*/
+ MSG_ID_CFC = 0xcfc,
+/*20171018 to latest
+PASSWORD HAS NOT BEEN CHANGED FOR MORE THAN 90DAYS
+*/
+ MSG_ID_CFD = 0xcfd,
+/*20171018 to latest
+INPUT DATA ERROR
+*/
+ MSG_ID_CFE = 0xcfe,
+/*20171018 to latest
+ERROR DATABASE
+*/
+ MSG_ID_CFF = 0xcff,
+/*20171018 to latest
+ERROR SYSTEM
+*/
+ MSG_ID_D00 = 0xd00,
+/*20171018 to 20171027
+%s 지불
+20171030 to latest
+%s 소모
+*/
+ MSG_ID_D01 = 0xd01,
+/*20171018 to latest
+비용지불
+*/
+ MSG_ID_D02 = 0xd02,
+/*20171018 to latest
+출발 가능한 맵이 아닙니다.
+*/
+ MSG_ID_D03 = 0xd03,
+/*20171018 to latest
+이동 불가능한 맵입니다
+*/
+ MSG_ID_D04 = 0xd04,
+/*20171018 to latest
+아이템이 부족합니다.
+*/
+ MSG_ID_D05 = 0xd05,
+/*20171018 to latest
+줄 바꿈 없이 한 줄로 입력해주세요.
+*/
+ MSG_ID_D06 = 0xd06,
+/*20171018 to latest
+불량 단어가 포함된 이름은 등록할 수 없습니다.
+*/
+ MSG_ID_D07 = 0xd07,
+/*20171018 to latest
+회원 가입을 위해 공식 홈페이지로 이동됩니다.
+*/
+ MSG_ID_D08 = 0xd08,
+#if PACKETVER >= 20171019
+/*20171019 to latest
+TokenAgency 서버 연결 실패
+*/
+ MSG_ID_D09 = 0xd09,
+#endif
+#if PACKETVER >= 20171023
+/*20171023 to latest
+과금정보
+*/
+ MSG_ID_D0A = 0xd0a,
+/*20171023 to latest
+삭제예약
+*/
+ MSG_ID_D0B = 0xd0b,
+/*20171023 to latest
+예약취소
+*/
+ MSG_ID_D0C = 0xd0c,
+/*20171023 to latest
+게임시작
+*/
+ MSG_ID_D0D = 0xd0d,
+/*20171023 to latest
+삭제
+*/
+ MSG_ID_D0E = 0xd0e,
+/*20171023 to latest
+Character List
+*/
+ MSG_ID_D0F = 0xd0f,
+/*20171023 to latest
+공지
+Notice
+*/
+ MSG_ID_D10 = 0xd10,
+/*20171023 to latest
+생성
+*/
+ MSG_ID_D11 = 0xd11,
+/*20171023 to latest
+Hair Style
+*/
+ MSG_ID_D12 = 0xd12,
+/*20171023 to latest
+Hair Color
+*/
+ MSG_ID_D13 = 0xd13,
+/*20171023 to latest
+중복확인
+*/
+ MSG_ID_D14 = 0xd14,
+/*20171023 to latest
+%d시 %d분 %d초
+*/
+ MSG_ID_D15 = 0xd15,
+/*20171023 to latest
+MOTP 입력 시간이 초과되었습니다. 처음부터 다시 로그인해주십시오.
+*/
+ MSG_ID_D16 = 0xd16,
+/*20171023 to latest
+뒤로가기
+*/
+ MSG_ID_D17 = 0xd17,
+#endif
+#if PACKETVER >= 20171024
+/*20171024 to latest
+아이템을 사용할 수 없습니다.
+*/
+ MSG_ID_D18 = 0xd18,
+/*20171024 to latest
+동일한 맵으로 이동할 수 없습니다.
+*/
+ MSG_ID_D19 = 0xd19,
+/*20171024 to latest
+사망시 이동이 불가능합니다.
+*/
+ MSG_ID_D1A = 0xd1a,
+#endif
+#if PACKETVER >= 20171030
+/*20171030 to latest
+캐릭터 생성
+*/
+ MSG_ID_D1B = 0xd1b,
+#endif
+#if PACKETVER >= 20171031
+/*20171031 to latest
+모험가 중개소 등록
+*/
+ MSG_ID_D1C = 0xd1c,
+/*20171031 to latest
+모집 중단
+*/
+ MSG_ID_D1D = 0xd1d,
+/*20171031 to latest
+모험가 중개소 설정
+*/
+ MSG_ID_D1E = 0xd1e,
+/*20171031 to latest
+전 지역
+*/
+ MSG_ID_D1F = 0xd1f,
+/*20171031 to latest
+직접기재
+*/
+ MSG_ID_D20 = 0xd20,
+/*20171031 to latest
+검사계열
+*/
+ MSG_ID_D21 = 0xd21,
+/*20171031 to latest
+법사계열
+*/
+ MSG_ID_D22 = 0xd22,
+/*20171031 to latest
+궁수계열
+*/
+ MSG_ID_D23 = 0xd23,
+/*20171031 to latest
+복사계열
+*/
+ MSG_ID_D24 = 0xd24,
+/*20171031 to latest
+상인계열
+*/
+ MSG_ID_D25 = 0xd25,
+/*20171031 to latest
+도둑계열
+*/
+ MSG_ID_D26 = 0xd26,
+/*20171031 to latest
+태권계열
+*/
+ MSG_ID_D27 = 0xd27,
+/*20171031 to latest
+닌자계열
+*/
+ MSG_ID_D28 = 0xd28,
+/*20171031 to latest
+건슬링거계열
+*/
+ MSG_ID_D29 = 0xd29,
+/*20171031 to latest
+도람족계열
+*/
+ MSG_ID_D2A = 0xd2a,
+/*20171031 to latest
+지역명
+*/
+ MSG_ID_D2B = 0xd2b,
+/*20171031 to latest
+지역명 검색
+*/
+ MSG_ID_D2C = 0xd2c,
+/*20171031 to latest
+가입 요청하기
+*/
+ MSG_ID_D2D = 0xd2d,
+/*20171031 to latest
+신고하기
+*/
+ MSG_ID_D2E = 0xd2e,
+/*20171031 to latest
+파티 모집 중단
+*/
+ MSG_ID_D2F = 0xd2f,
+/*20171031 to latest
+지역명을 입력해주세요.
+*/
+ MSG_ID_D30 = 0xd30,
+/*20171031 to latest
+지역
+*/
+ MSG_ID_D31 = 0xd31,
+/*20171031 to latest
+전 직업
+*/
+ MSG_ID_D32 = 0xd32,
+#endif
+#if PACKETVER >= 20171109
+/*20171109 to latest
+로그인
+*/
+ MSG_ID_D33 = 0xd33,
+/*20171109 to latest
+계정
+*/
+ MSG_ID_D34 = 0xd34,
+/*20171109 to latest
+종료
+Exit
+*/
+ MSG_ID_D35 = 0xd35,
+/*20171109 to latest
+신청
+*/
+ MSG_ID_D36 = 0xd36,
+/*20171109 to latest
+접속
+*/
+ MSG_ID_D37 = 0xd37,
+/*20171109 to latest
+확인
+*/
+ MSG_ID_D38 = 0xd38,
+/*20171109 to latest
+휴대폰에 다운받은 GNJOY MOTP를
+*/
+ MSG_ID_D39 = 0xd39,
+/*20171109 to latest
+실행하여 인증번호를 입력해 주세요.
+*/
+ MSG_ID_D3A = 0xd3a,
+/*20171109 to latest
+NPC가 있는 맵의 랜덤 좌표로 이동 됩니다.
+*/
+ MSG_ID_D3B = 0xd3b,
+/*20171109 to latest
+태권
+*/
+ MSG_ID_D3C = 0xd3c,
+/*20171109 to 20171117
+ 님이 차단 상태로 설정되었습니다.
+20171121 to latest
+ 에게 전체채팅 및 귓말 거부상태
+*/
+ MSG_ID_D3D = 0xd3d,
+/*20171109 to 20171117
+ 님을 차단 상태로 설정하는데 실패하였습니다.
+20171121 to latest
+ 에게 전체채팅 및 귓말 거부 요청 실패
+*/
+ MSG_ID_D3E = 0xd3e,
+/*20171109 to 20171117
+ 님을 차단 상태로 설정하는데 실패하였습니다.(인원 초과)
+20171121 to latest
+ 에게 전체채팅 및 귓말 거부 요청실패 (인원초과)
+*/
+ MSG_ID_D3F = 0xd3f,
+/*20171109 to 20171117
+ 님이 차단 해제 되었습니다.
+20171121 to latest
+ 에게 전체채팅 및 귓말 가능상태
+*/
+ MSG_ID_D40 = 0xd40,
+/*20171109 to 20171117
+ 님을 차단 해제하는데 실패하였습니다.
+20171121 to latest
+ 에게 전체채팅 및 귓말 가능 요청실패
+*/
+ MSG_ID_D41 = 0xd41,
+/*20171109 to 20171117
+ 님을 차단 해제하는데 실패하였습니다.(인원 초과)
+20171121 to latest
+ 에게 전체채팅 및 귓말 가능 요청실패 (인원초과)
+*/
+ MSG_ID_D42 = 0xd42,
+/*20171109 to latest
+차단 리스트가 없습니다
+*/
+ MSG_ID_D43 = 0xd43,
+/*20171109 to latest
+-차단 리스트-
+*/
+ MSG_ID_D44 = 0xd44,
+#endif
+#if PACKETVER >= 20171113
+/*20171113 to latest
+진행중
+Act
+*/
+ MSG_ID_D45 = 0xd45,
+/*20171113 to latest
+추천
+Rec
+*/
+ MSG_ID_D46 = 0xd46,
+/*20171113 to latest
+보류중
+Pen
+*/
+ MSG_ID_D47 = 0xd47,
+/*20171113 to latest
+QUEST
+*/
+ MSG_ID_D48 = 0xd48,
+/*20171113 to latest
+내용
+For
+*/
+ MSG_ID_D49 = 0xd49,
+/*20171113 to latest
+몬스터
+*/
+ MSG_ID_D4A = 0xd4a,
+/*20171113 to latest
+보상
+*/
+ MSG_ID_D4B = 0xd4b,
+/*20171113 to latest
+EXP
+*/
+ MSG_ID_D4C = 0xd4c,
+/*20171113 to latest
+JEXP
+*/
+ MSG_ID_D4D = 0xd4d,
+/*20171113 to latest
+아이템
+Item
+*/
+ MSG_ID_D4E = 0xd4e,
+/*20171113 to latest
+진행/보류
+*/
+ MSG_ID_D4F = 0xd4f,
+/*20171113 to latest
+하단으로 이동
+*/
+ MSG_ID_D50 = 0xd50,
+/*20171113 to latest
+간편 퀘스트창에 표시
+*/
+ MSG_ID_D51 = 0xd51,
+#endif
+#if PACKETVER >= 20171115
+/*20171115 to latest
+입력시간
+*/
+ MSG_ID_D52 = 0xd52,
+/*20171115 to latest
+아이디 저장
+*/
+ MSG_ID_D53 = 0xd53,
+/*20171115 to latest
+비밀번호
+Password
+*/
+ MSG_ID_D54 = 0xd54,
+/*20171115 to latest
+아이디
+*/
+ MSG_ID_D55 = 0xd55,
+/*20171115 to latest
+회원가입
+*/
+ MSG_ID_D56 = 0xd56,
+/*20171115 to latest
+노비스계열
+*/
+ MSG_ID_D57 = 0xd57,
+/*20171115 to latest
+슈퍼노비스계열
+*/
+ MSG_ID_D58 = 0xd58,
+/*20171115 to latest
+모험가 중개소 등록에 실패했습니다.
+*/
+ MSG_ID_D59 = 0xd59,
+/*20171115 to latest
+모험가 중개소에 등록되었습니다.
+*/
+ MSG_ID_D5A = 0xd5a,
+/*20171115 to 20180321
+직업을 한 개 이상 선택해주세요.
+20180328 to latest
+모집을 희망하는 파티원의 직업을 한 개 이상 선택해 주세요.
+*/
+ MSG_ID_D5B = 0xd5b,
+/*20171115 to latest
+지역명을 두 글자 이상 입력해주세요.
+*/
+ MSG_ID_D5C = 0xd5c,
+/*20171115 to latest
+%.1f%% (+ %s서버 %.1f%%)
+*/
+ MSG_ID_D5D = 0xd5d,
+#endif
+#if PACKETVER >= 20171121
+/*20171121 to latest
+/ex (캐릭터이름) or /차단 (캐릭터이름) : 해당 캐릭터에 대해 전체채팅 및 귓말 차단
+*/
+ MSG_ID_D5E = 0xd5e,
+/*20171121 to latest
+/in (캐릭터이름) or /해제 (캐릭터이름) : 해당 캐릭터에 대해 전체채팅 및 귓말 허용
+*/
+ MSG_ID_D5F = 0xd5f,
+/*20171121 to latest
+/ex or /차단 : 전체채팅 및 귓말 차단 캐릭터 리스트
+*/
+ MSG_ID_D60 = 0xd60,
+/*20171121 to latest
+/exall or /차단전부 : 모두에게 전체채팅 및 귓말 차단
+*/
+ MSG_ID_D61 = 0xd61,
+/*20171121 to latest
+/inall or /해제전부 : 모두에게 전체채팅 및 귓말 허용
+*/
+ MSG_ID_D62 = 0xd62,
+/*20171121 to latest
+모두에게 전체채팅 및 귓말 거부상태
+*/
+ MSG_ID_D63 = 0xd63,
+/*20171121 to latest
+모두에게 전체채팅 및 귓말 거부요청 실패
+*/
+ MSG_ID_D64 = 0xd64,
+/*20171121 to latest
+모두에게 전체채팅 및 귓말 가능상태
+*/
+ MSG_ID_D65 = 0xd65,
+/*20171121 to latest
+모두에게 전체채팅 및 귓말 가능요청 실패
+*/
+ MSG_ID_D66 = 0xd66,
+#endif
+#if PACKETVER >= 20171123
+/*20171123 to latest
+오프닝
+*/
+ MSG_ID_D67 = 0xd67,
+#endif
+#if PACKETVER >= 20171127
+/*20171127 to latest
+로그인 화면으로 돌아가시겠습니까?
+*/
+ MSG_ID_D68 = 0xd68,
+#endif
+#if PACKETVER >= 20171204
+/*20171204 to latest
+힘과 공격력이 강해졌습니다.
+*/
+ MSG_ID_D69 = 0xd69,
+/*20171204 to latest
+힘, 지능, 손재주 및 명중률이 증가하였습니다.
+*/
+ MSG_ID_D6A = 0xd6a,
+/*20171204 to latest
+방어력 및 HP가 증가되었습니다.
+*/
+ MSG_ID_D6B = 0xd6b,
+/*20171204 to latest
+젤스타
+*/
+ MSG_ID_D6C = 0xd6c,
+/*20171204 to latest
+계정버프
+*/
+ MSG_ID_D6D = 0xd6d,
+/*20171204 to latest
+정액서비스
+*/
+ MSG_ID_D6E = 0xd6e,
+#endif
+#if PACKETVER >= 20171208
+/*20171208 to latest
+현재 접속이 지연되고 있습니다. 순차적으로 접속이 가능하니 잠시 후 재접속 부탁드립니다.
+*/
+ MSG_ID_D6F = 0xd6f,
+/*20171208 to latest
+현재 접속이 지연되고 있으니 잠시 후 재접속 부탁드립니다.
+*/
+ MSG_ID_D70 = 0xd70,
+#endif
+#if PACKETVER >= 20171213
+/*20171213 to latest
+불량 단어가 포함된 이름은 검색할 수 없습니다.
+*/
+ MSG_ID_D71 = 0xd71,
+/*20171213 to latest
+파티 마스터가 요청을 받을 수 없는 맵에 있습니다.
+*/
+ MSG_ID_D72 = 0xd72,
+/*20171213 to latest
+파티를 찾을 수 없습니다.
+*/
+ MSG_ID_D73 = 0xd73,
+/*20171213 to 20180321
+님의 파티요청입니다.
+20180328 to latest
+님의 파티 가입 요청입니다.
+*/
+ MSG_ID_D74 = 0xd74,
+/*20171213 to latest
+http://ro.gnjoy.com
+*/
+ MSG_ID_D75 = 0xd75,
+#endif
+#if PACKETVER >= 20171214
+/*20171214 to latest
+▲
+*/
+ MSG_ID_D76 = 0xd76,
+/*20171214 to latest
+▼
+*/
+ MSG_ID_D77 = 0xd77,
+#endif
+#if PACKETVER >= 20171227
+/*20171227 to latest
+이미 친구입니다
+*/
+ MSG_ID_D78 = 0xd78,
+/*20171227 to latest
+상대방을 찾을 수 없습니다
+*/
+ MSG_ID_D79 = 0xd79,
+/*20171227 to latest
+이미 다른 캐릭터가 친구 신청 중입니다.
+*/
+ MSG_ID_D7A = 0xd7a,
+/*20171227 to latest
+혼구슬 표시 ON
+*/
+ MSG_ID_D7B = 0xd7b,
+/*20171227 to latest
+혼구슬 표시 OFF
+*/
+ MSG_ID_D7C = 0xd7c,
+#endif
+#if PACKETVER >= 20180117
+/*20180117 to latest
+해당 계정은 2차 비밀번호 오입력으로 인해 게임내 접속이 제한된 상태입니다.
+ %02d시간 %02d분 후에 접속제한이 해제되며, 접속제한의 해제는 홈페이지 -> 개인정보변경 -> 2차 비밀번호 에서 본인인증 후 진행해주시기 바랍니다.
+*/
+ MSG_ID_D7D = 0xd7d,
+/*20180117 to latest
+보안패스워드를 3회이상 틀리셨습니다. 계정 보안을 위해 24시간동안 게임내 접속이 제한됩니다.
+ 접속제한의 해제는 홈페이지 -> 개인정보변경 -> 2차 비밀번호 에서 본인인증 후 진행해주시기 바랍니다.
+*/
+ MSG_ID_D7E = 0xd7e,
+/*20180117 to latest
+운영진
+*/
+ MSG_ID_D7F = 0xd7f,
+/*20180117 to latest
+%d일차 출석 보상이 지급되었습니다.
+*/
+ MSG_ID_D80 = 0xd80,
+/*20180117 to 20180117
+계정설정정보 받아오는데 실패 했습니다.( 재시도를 위해서는 재시작 해야 합니다. )
+20180131 to latest
+계정 설정 데이터를 불러오는 중에 오류가 발생했습니다. ( 재시도를 위해서는 재시작 해야 합니다. )
+*/
+ MSG_ID_D81 = 0xd81,
+/*20180117 to latest
+해당 스킬은 파티 상태에서 사용 가능합니다.
+*/
+ MSG_ID_D82 = 0xd82,
+#endif
+#if PACKETVER >= 20180131
+/*20180131 to latest
+파티 모집을 중단하였습니다.
+*/
+ MSG_ID_D83 = 0xd83,
+/*20180131 to latest
+길드 상납 경험치는 최대 %d%%까지 가능합니다.
+*/
+ MSG_ID_D84 = 0xd84,
+/*20180131 to latest
+길드 레벨이 최대여서 더 이상 경험치를 상납할 수 없습니다.
+*/
+ MSG_ID_D85 = 0xd85,
+/*20180131 to latest
+계정보안을 위하여 MOTP미사용자는 홈페이지 로그인만 가능합니다.
+홈페이지로 로그인을 시도해주시기 바랍니다.
+*/
+ MSG_ID_D86 = 0xd86,
+/*20180131 to latest
+물리 공격력과 마법 공격력이 향상되었습니다.
+*/
+ MSG_ID_D87 = 0xd87,
+/*20180131 to latest
+물리 공격력과 마법 공격력이 감소되었습니다.
+*/
+ MSG_ID_D88 = 0xd88,
+#endif
+#if PACKETVER >= 20180207
+/*20180207 to latest
+%s 출석체크 보상
+%s Attendance Check Reward
+*/
+ MSG_ID_D89 = 0xd89,
+/*20180207 to 20180511
+이벤트 기간 : %02d월 %02d일 ~ %2d월 %2d일 24:00까지
+Event period : From %02d/%02d ~ Until %2d/%2d (Month/Day) 24:00
+20180523 to latest
+이벤트 기간 : %02d월 %02d일 ~ %02d월 %02d일 24:00까지
+*/
+ MSG_ID_D8A = 0xd8a,
+/*20180207 to latest
+%d일차
+%d Day
+*/
+ MSG_ID_D8B = 0xd8b,
+/*20180207 to latest
+%d일차 출석체크
+클릭해주세요~!
+%d Day attendance check
+Please click~!
+*/
+ MSG_ID_D8C = 0xd8c,
+/*20180207 to latest
+%d일차 출석 성공!
+%d Day attendance success!
+*/
+ MSG_ID_D8D = 0xd8d,
+/*20180207 to latest
+D-day
+*/
+ MSG_ID_D8E = 0xd8e,
+/*20180207 to latest
+일
+Day
+*/
+ MSG_ID_D8F = 0xd8f,
+/*20180207 to latest
+출석체크에 실패하였습니다. 다시 실행해주세요.
+Attendance Check failed. Please run again.
+*/
+ MSG_ID_D90 = 0xd90,
+/*20180207 to latest
+출석체크
+Attendance Check
+*/
+ MSG_ID_D91 = 0xd91,
+/*20180207 to latest
+현재 출석체크 이벤트 기간이 아닙니다
+This is not the current attendance check event
+*/
+ MSG_ATTENDANCE_UNAVAILABLE = 0xd92,
+/*20180207 to 20180321
+길드 상납 경험치가 max에 도달하여, 더 이상 길드 경험치를 누적할 수 없습니다
+20180328 to latest
+길드 상납 경험치가 max에 도달하여, 더 이상 길드 경험치를 누적할 수 없습니다.
+*/
+ MSG_ID_D93 = 0xd93,
+/*20180207 to latest
+개인 상납 경험치가 max에 도달하여, 더 이상 길드 경험치를 누적할 수 없습니다.
+*/
+ MSG_ID_D94 = 0xd94,
+#endif
+#if PACKETVER >= 20180213
+/*20180213 to latest
+메시지
+*/
+ MSG_ID_D95 = 0xd95,
+/*20180213 to latest
+트위터에 메세지 전송을 실패 했습니다.
+*/
+ MSG_ID_D96 = 0xd96,
+/*20180213 to latest
+영문 4자, 한글 2자 이상으로 입력해야 합니다.
+Enter 4 english words and 2 chinese words
+*/
+ MSG_ID_D97 = 0xd97,
+#endif
+#if PACKETVER >= 20180314
+/*20180314 to latest
+몬스터의 테이밍이 불가능한 지역입니다.
+*/
+ MSG_ID_D98 = 0xd98,
+#endif
+#if PACKETVER >= 20180328
+/*20180328 to latest
+순위를 가져오고 있습니다...
+*/
+ MSG_ID_D99 = 0xd99,
+/*20180328 to latest
+해당 스킬은 파티장일때만 사용 가능합니다.
+*/
+ MSG_ID_D9A = 0xd9a,
+/*20180328 to latest
+파트너의 SP가 부족하거나, 스킬 사용 불가 상태입니다.
+*/
+ MSG_ID_D9B = 0xd9b,
+/*20180328 to latest
+아르바이트 노점 강제 종료 알림메일
+*/
+ MSG_ID_D9C = 0xd9c,
+/*20180328 to latest
+안녕하세요. 운영팀입니다.
+해당 아르바이트 노점은 운영정책 위배되는 사항이 확인되어 강제 종료되었습니다.
+자세한 확인을 원하시는 경우에는 1:1 문의를 접수해 주시기 바랍니다.
+감사합니다
+*/
+ MSG_ID_D9D = 0xd9d,
+/*20180328 to latest
+50% 이상의 값을 입력할 수 없습니다.
+*/
+ MSG_ID_D9E = 0xd9e,
+/*20180328 to latest
+파티 가입 요청을 보냈습니다.
+*/
+ MSG_ID_D9F = 0xd9f,
+/*20180328 to latest
+모험가 중개소에 파티를 등록할 수 없습니다
+*/
+ MSG_ID_DA0 = 0xda0,
+/*20180328 to latest
+수락
+*/
+ MSG_ID_DA1 = 0xda1,
+/*20180328 to latest
+거절
+*/
+ MSG_ID_DA2 = 0xda2,
+/*20180328 to latest
+설정 권한은 파티장에게 있습니다.
+*/
+ MSG_ID_DA3 = 0xda3,
+/*20180328 to latest
+해당 캐릭터를 찾을 수 없습니다.
+*/
+ MSG_ID_DA4 = 0xda4,
+/*20180328 to latest
+노점 강제 철거
+*/
+ MSG_ID_DA5 = 0xda5,
+/*20180328 to latest
+해당 파티의 파티장을 찾을 수 없습니다.
+*/
+ MSG_ID_DA6 = 0xda6,
+/*20180328 to latest
+잡레벨이 낮아 파티에 가입 할 수 없습니다.
+*/
+ MSG_ID_DA7 = 0xda7,
+/*20180328 to latest
+현재 요청자가 파티가입이 불가능한 지역에 있습니다.
+*/
+ MSG_ID_DA8 = 0xda8,
+/*20180328 to latest
+파티 인원수가 초과되었습니다.
+*/
+ MSG_ID_DA9 = 0xda9,
+/*20180328 to latest
+%s 파티의 파티장이 파티 가입을 승인했습니다.
+*/
+ MSG_ID_DAA = 0xdaa,
+/*20180328 to latest
+%s 파티의 파티장이 파티 가입을 거부했습니다.
+*/
+ MSG_ID_DAB = 0xdab,
+/*20180328 to latest
+%s 님이 이미 파티에 가입 중입니다.
+*/
+ MSG_ID_DAC = 0xdac,
+/*20180328 to latest
+%s 님의 파티 가입을 수락했습니다.
+*/
+ MSG_ID_DAD = 0xdad,
+/*20180328 to latest
+%s 님의 파티 가입을 거부했습니다.
+*/
+ MSG_ID_DAE = 0xdae,
+/*20180328 to latest
+파티 요청을 받을 수 없는 상태여서 %s님의 신청이 거절되었습니다.
+*/
+ MSG_ID_DAF = 0xdaf,
+#endif
+#if PACKETVER >= 20180411
+/*20180411 to latest
+모험가 중개소 리스트
+*/
+ MSG_ID_DB0 = 0xdb0,
+/*20180411 to latest
+파티 가입 요청
+*/
+ MSG_ID_DB1 = 0xdb1,
+/*20180411 to latest
+파티장이 아닌 경우, 모험가 중개소에 파티를 등록할 수 없습니다.
+*/
+ MSG_ID_DB2 = 0xdb2,
+/*20180411 to latest
+파티 모집을 중단할 수 없습니다.
+*/
+ MSG_ID_DB3 = 0xdb3,
+/*20180411 to latest
+존재하지 않는 파티 글입니다.
+*/
+ MSG_ID_DB4 = 0xdb4,
+#endif
+#if PACKETVER >= 20180425
+/*20180425 to latest
+Zoom Out
+*/
+ MSG_ID_DB5 = 0xdb5,
+/*20180425 to latest
+%s : Zoom Out을 켜거나 끌수 있습니다 On Off
+*/
+ MSG_ID_DB6 = 0xdb6,
+/*20180425 to latest
+Zoom Out 기능을 켭니다 (On)
+*/
+ MSG_ID_DB7 = 0xdb7,
+/*20180425 to latest
+Zoom Out 기능을 해제합니다 (Off)
+*/
+ MSG_ID_DB8 = 0xdb8,
+/*20180425 to latest
+/zoom
+*/
+ MSG_ID_DB9 = 0xdb9,
+/*20180425 to latest
+모험가 중개소
+*/
+ MSG_ID_DBA = 0xdba,
+/*20180425 to latest
+파티장인 경우, 가입 요청을 할 수 없습니다.
+*/
+ MSG_ID_DBB = 0xdbb,
+/*20180425 to latest
+모험가 중개소에 등록 중입니다. 잠시만 기다려 주세요.
+*/
+ MSG_ID_DBC = 0xdbc,
+/*20180425 to latest
+더 이상 직업을 선택할 수 없습니다.
+*/
+ MSG_ID_DBD = 0xdbd,
+/*20180425 to latest
+게임 중 해당 유저의 가입 요청을 받지 않습니다.
+*/
+ MSG_ID_DBE = 0xdbe,
+/*20180425 to latest
+잠시 후 다시 열어주시기 바랍니다.
+*/
+ MSG_ID_DBF = 0xdbf,
+/*20180425 to latest
+공성시작 전 %d분 동안은 해당 기능을 이용하실 수 없습니다.
+*/
+ MSG_ID_DC0 = 0xdc0,
+#endif
+#if PACKETVER >= 20180509
+/*20180509 to latest
+/viewclear
+*/
+ MSG_ID_DC1 = 0xdc1,
+/*20180509 to latest
+건물 반 투명화 ON
+*/
+ MSG_ID_DC2 = 0xdc2,
+/*20180509 to latest
+건물 반 투명화 OFF
+*/
+ MSG_ID_DC3 = 0xdc3,
+/*20180509 to latest
+건물 투명화
+*/
+ MSG_ID_DC4 = 0xdc4,
+/*20180509 to latest
+알로 되돌리기가 실패했습니다. 로덱스 작성창을 닫아주세요.
+*/
+ MSG_ID_DC5 = 0xdc5,
+#endif
+#if PACKETVER >= 20180523
+/*20180523 to latest
+Emblem Frame
+*/
+ MSG_ID_DC6 = 0xdc6,
+/*20180523 to latest
+Emblem 테두리를 그려줍니다
+*/
+ MSG_ID_DC7 = 0xdc7,
+/*20180523 to latest
+Emblem 테두리를 그려주지 않습니다
+*/
+ MSG_ID_DC8 = 0xdc8,
+#endif
+#if PACKETVER >= 20180605
+/*20180605 to latest
+장착된 무기가 없습니다.
+*/
+ MSG_ID_DC9 = 0xdc9,
+/*20180605 to latest
+에너지 구체가 부족합니다.
+*/
+ MSG_ID_DCA = 0xdca,
+/*20180605 to latest
+배울 수 없는 스킬(%s)이 포함되어있습니다.
+*/
+ MSG_ID_DCB = 0xdcb,
+/*20180605 to latest
+/frame
+*/
+ MSG_ID_DCC = 0xdcc,
+#endif
+#if PACKETVER >= 20180627
+/*20180627 to latest
+웨폰 블로킹 발동후 제한시간 내에 사용가능한 스킬입니다.
+*/
+ MSG_ID_DCD = 0xdcd,
+/*20180627 to latest
+아이디혹은 패스워드가 잘못되었읍니다.
+*/
+ MSG_ID_DCE = 0xdce,
+#endif
+#if PACKETVER >= 20180711
+/*20180711 to latest
+E X P : %.1f%% ( basic 100.0%% %s %.1f%%)
+*/
+ MSG_ID_DCF = 0xdcf,
+/*20180711 to latest
+DROP : %.1f%% ( basic 100.0%% %s %.1f%%)
+*/
+ MSG_ID_DD0 = 0xdd0,
+/*20180711 to latest
+DEATH : %.1f%% ( basic 100.0%% %s %.1f%%)
+*/
+ MSG_ID_DD1 = 0xdd1,
+#endif
+#if PACKETVER >= 20180725
+/*20180725 to 20180801
+'
+20180808 to latest
+영문이나 러시아어 단독으로만 사용이 가능합니다.
+*/
+ MSG_ID_DD2 = 0xdd2,
+/*20180725 to 20180801
+;
+20180822 to latest
+you must have an AccessTicket to login
+*/
+ MSG_ID_DD3 = 0xdd3,
+/*20180725 to 20180801
+--
+20180905 to latest
+창고를 불러오는 중입니다.
+*/
+ MSG_ID_DD4 = 0xdd4,
+#endif
+#if PACKETVER >= 20180905
+/*20180905 to latest
+NOW LOADING..
+*/
+ MSG_ID_DD5 = 0xdd5,
+#endif
+#if PACKETVER >= 20180919
+/*20180919 to latest
+삭제
+*/
+ MSG_ID_DD6 = 0xdd6,
+/*20180919 to latest
+답장
+*/
+ MSG_ID_DD7 = 0xdd7,
+/*20180919 to latest
+전송
+*/
+ MSG_ID_DD8 = 0xdd8,
+/*20180919 to latest
+이름확인
+*/
+ MSG_ID_DD9 = 0xdd9,
+/*20180919 to latest
+공지
+Notice
+*/
+ MSG_ID_DDA = 0xdda,
+/*20180919 to latest
+일반
+General
+*/
+ MSG_ID_DDB = 0xddb,
+/*20180919 to latest
+반송
+Clear
+*/
+ MSG_ID_DDC = 0xddc,
+/*20180919 to latest
+검색
+Search
+*/
+ MSG_ID_DDD = 0xddd,
+#endif
+#if PACKETVER >= 20181024
+/*20181024 to latest
+펫 먹이주기에 실패했습니다. 먹이를 줄 수 없는 상태입니다.
+*/
+ MSG_ID_DDE = 0xdde,
+/*20181024 to latest
+호문 먹이주기에 실패했습니다. 먹이를 줄 수 없는 상태입니다.
+*/
+ MSG_ID_DDF = 0xddf,
+/*20181024 to latest
+화폐
+*/
+ MSG_ID_DE0 = 0xde0,
+/*20181024 to latest
+%s %d개
+*/
+ MSG_ID_DE1 = 0xde1,
+/*20181024 to latest
+교환에 실패하였습니다.
+*/
+ MSG_ID_DE2 = 0xde2,
+/*20181024 to latest
+교환이 잘 이루어졌습니다.
+*/
+ MSG_ID_DE3 = 0xde3,
+/*20181024 to latest
+교환에 필요한 재화가 부족합니다.
+*/
+ MSG_ID_DE4 = 0xde4,
+/*20181024 to latest
+해당 아이템은 이미 판매되어 재고가 부족합니다.
+*/
+ MSG_ID_DE5 = 0xde5,
+/*20181024 to latest
+사망
+*/
+ MSG_ID_DE6 = 0xde6,
+/*20181024 to latest
+PvP
+*/
+ MSG_ID_DE7 = 0xde7,
+#endif
+#if PACKETVER >= 20181114
+/*20181114 to latest
+아이템 소지 확장
+*/
+ MSG_ID_DE8 = 0xde8,
+/*20181114 to latest
+^0000ff%s^000000을 소모하여, 아이템 최대 소지 종류수를 확장하시겠습니까?
+(^0000ff%d^000000)에서 (^0000ff%d^000000)로 확장됩니다.
+^ff0000※ 소모된 아이템 및 확장된 최대 소지 종류수는 되돌릴 수 없습니다.^000000
+*/
+ MSG_ID_DE9 = 0xde9,
+/*20181114 to latest
+아이템 최대 소지 종류수 확장에 실패하였습니다.
+*/
+ MSG_ID_DEA = 0xdea,
+/*20181114 to latest
+아이템 최대 소지 종류수 확장을 위해, 다른 작업을 종료하여 주시기 바랍니다.
+*/
+ MSG_ID_DEB = 0xdeb,
+/*20181114 to latest
+아이템 최대 소지 종류수 확장에 필요한 아이템을 소지하고 있지 않습니다.
+*/
+ MSG_ID_DEC = 0xdec,
+/*20181114 to latest
+더 이상 아이템 최대 소지 종류수를 확장 할 수 없습니다.
+*/
+ MSG_ID_DED = 0xded,
+/*20181114 to latest
+아이템 최대 소지 종류수 확장에 성공하였습니다.
+*/
+ MSG_ID_DEE = 0xdee,
+/*20181114 to latest
+같은 아이템을 %d개 이상 가질 수 없습니다.
+*/
+ MSG_ID_DEF = 0xdef,
+/*20181114 to latest
+소지 한계량 초과로 구입이 불가능합니다.
+*/
+ MSG_ID_DF0 = 0xdf0,
+/*20181114 to latest
+해당 아이템은 한 번에 한 개만 살 수 있습니다.
+*/
+ MSG_ID_DF1 = 0xdf1,
+#endif
+#if PACKETVER >= 20181212
+/*20181212 to latest
+성제
+*/
+ MSG_ID_DF2 = 0xdf2,
+/*20181212 to latest
+소울리퍼
+*/
+ MSG_ID_DF3 = 0xdf3,
+/*20181212 to latest
+설정한 내용은 정상 종료 시 서버에 저장됩니다.
+*/
+ MSG_ID_DF4 = 0xdf4,
+#endif
+#if PACKETVER >= 20181226
+/*20181226 to latest
+Capture Monster
+*/
+ MSG_ID_DF5 = 0xdf5,
+/*20181226 to latest
+message
+*/
+ MSG_ID_DF6 = 0xdf6,
+#endif
+
+};
+#endif /* MAP_MESSAGES_ZERO_H */
diff --git a/src/map/mob.c b/src/map/mob.c
index 74d25b805..d82e49bcc 100644
--- a/src/map/mob.c
+++ b/src/map/mob.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -44,6 +44,7 @@
#include "map/script.h"
#include "map/skill.h"
#include "map/status.h"
+#include "map/achievement.h"
#include "common/HPM.h"
#include "common/cbasetypes.h"
#include "common/conf.h"
@@ -64,7 +65,7 @@
#include <stdlib.h>
#include <string.h>
-struct mob_interface mob_s;
+static struct mob_interface mob_s;
struct mob_interface *mob;
#define ACTIVE_AI_RANGE 2 //Distance added on top of 'AREA_SIZE' at which mobs enter active AI mode.
@@ -88,6 +89,7 @@ struct item_drop_ratio {
int mob_id[MAX_ITEMRATIO_MOBS];
};
static struct item_drop_ratio *item_drop_ratio_db[MAX_ITEMDB];
+static struct DBMap *item_drop_ratio_other_db = NULL;
static struct eri *item_drop_ers; //For loot drops delay structures.
static struct eri *item_drop_list_ers;
@@ -97,12 +99,14 @@ static struct {
int class_[350];
} summon[MAX_RANDOMMONSTER];
-struct mob_db *mob_db(int index) {
+static struct mob_db *mob_db(int index)
+{
if (index < 0 || index > MAX_MOB_DB || mob->db_data[index] == NULL)
return mob->dummy;
return mob->db_data[index];
}
-struct mob_chat *mob_chat(short id) {
+static struct mob_chat *mob_chat(short id)
+{
if(id <= 0 || id > MAX_MOB_CHAT || mob->chat_db[id] == NULL)
return NULL;
return mob->chat_db[id];
@@ -111,7 +115,7 @@ struct mob_chat *mob_chat(short id) {
/*==========================================
* Mob is searched with a name.
*------------------------------------------*/
-int mobdb_searchname(const char *str)
+static int mobdb_searchname(const char *str)
{
int i;
@@ -130,7 +134,8 @@ int mobdb_searchname(const char *str)
return 0;
}
-int mobdb_searchname_array_sub(struct mob_db* monster, const char *str, int flag) {
+static int mobdb_searchname_array_sub(struct mob_db *monster, const char *str, int flag)
+{
nullpo_ret(monster);
if (monster == mob->dummy)
@@ -157,7 +162,45 @@ int mobdb_searchname_array_sub(struct mob_db* monster, const char *str, int flag
/*==========================================
* MvP Tomb [GreenBox]
*------------------------------------------*/
-void mvptomb_create(struct mob_data *md, char *killer, time_t time)
+ /// Creates a timer to spawn a tomb
+ /// @param nd : The tomb
+static void mvptomb_spawn_delayed(struct npc_data *nd)
+{
+ nullpo_retv(nd);
+
+ if (nd->u.tomb.spawn_timer != INVALID_TIMER)
+ timer->delete(nd->u.tomb.spawn_timer, mob->mvptomb_delayspawn);
+
+ nd->u.tomb.spawn_timer = timer->add(timer->gettick() + battle_config.mvp_tomb_spawn_delay, mob->mvptomb_delayspawn, nd->bl.id, 0);
+}
+
+/// Spawns a tomb after the delay has ended
+/// @param tid : Timer id
+/// @param tick : current tick
+/// @param id : NPC Id
+/// @param data : 0
+static int mvptomb_delayspawn(int tid, int64 tick, int id, intptr_t data)
+{
+ struct npc_data *nd = map->id2nd(id);
+
+ if (nd == NULL)
+ return 0;
+
+ if (nd->u.tomb.spawn_timer != tid) {
+ ShowError("mvptomb_delay_spawn: Timer mismatch: %d != %d\n", tid, nd->u.tomb.spawn_timer);
+ return 0;
+ }
+
+ nd->u.tomb.spawn_timer = INVALID_TIMER;
+
+ // Sets view data to make the tomb visible and notifies client
+ status->set_viewdata(&nd->bl, nd->class_);
+ clif->spawn(&(nd->bl));
+
+ return 0;
+}
+
+static void mvptomb_create(struct mob_data *md, char *killer, time_t time)
{
struct npc_data *nd;
@@ -172,6 +215,7 @@ void mvptomb_create(struct mob_data *md, char *killer, time_t time)
nd->u.tomb.md = md;
nd->u.tomb.kill_time = time;
+ nd->u.tomb.spawn_timer = INVALID_TIMER;
if (killer)
safestrncpy(nd->u.tomb.killer_name, killer, NAME_LENGTH);
@@ -180,11 +224,13 @@ void mvptomb_create(struct mob_data *md, char *killer, time_t time)
map->addnpc(nd->bl.m, nd);
map->addblock(&nd->bl);
- status->set_viewdata(&nd->bl, nd->class_);
- clif->spawn(&nd->bl);
+
+ // Tomb npc is created but not yet visible, we set view data and spawn it after some time
+ mob->mvptomb_spawn_delayed(nd);
}
-void mvptomb_destroy(struct mob_data *md) {
+static void mvptomb_destroy(struct mob_data *md)
+{
struct npc_data *nd;
nullpo_retv(md);
@@ -204,6 +250,9 @@ void mvptomb_destroy(struct mob_data *md) {
map->list[m].npc[map->list[m].npc_num] = NULL;
}
+ if (nd->u.tomb.spawn_timer != INVALID_TIMER)
+ timer->delete(nd->u.tomb.spawn_timer, mob->mvptomb_delayspawn);
+
map->deliddb(&nd->bl);
aFree(nd);
@@ -215,7 +264,7 @@ void mvptomb_destroy(struct mob_data *md) {
/*==========================================
* Founds up to N matches. Returns number of matches [Skotlex]
*------------------------------------------*/
-int mobdb_searchname_array(struct mob_db** data, int size, const char *str, int flag)
+static int mobdb_searchname_array(struct mob_db **data, int size, const char *str, int flag)
{
int count = 0, i;
struct mob_db* monster;
@@ -236,7 +285,7 @@ int mobdb_searchname_array(struct mob_db** data, int size, const char *str, int
/*==========================================
* Id Mob is checked.
*------------------------------------------*/
-int mobdb_checkid(const int id)
+static int mobdb_checkid(const int id)
{
if (mob->db(id) == mob->dummy)
return 0;
@@ -248,7 +297,7 @@ int mobdb_checkid(const int id)
/*==========================================
* Returns the view data associated to this mob class.
*------------------------------------------*/
-struct view_data * mob_get_viewdata(int class_)
+static struct view_data *mob_get_viewdata(int class_)
{
if (mob->db(class_) == mob->dummy)
return 0;
@@ -257,7 +306,7 @@ struct view_data * mob_get_viewdata(int class_)
/*==========================================
* Cleans up mob-spawn data to make it "valid"
*------------------------------------------*/
-int mob_parse_dataset(struct spawn_data *data)
+static int mob_parse_dataset(struct spawn_data *data)
{
size_t len;
@@ -273,9 +322,9 @@ int mob_parse_dataset(struct spawn_data *data)
memmove(data->eventname, data->eventname+1, len-1);
}
- if(strcmp(data->name,"--en--")==0)
+ if (strcmp(data->name, DEFAULT_MOB_NAME) == 0)
safestrncpy(data->name, mob->db(data->class_)->name, sizeof(data->name));
- else if(strcmp(data->name,"--ja--")==0)
+ else if (strcmp(data->name, DEFAULT_MOB_JNAME) == 0)
safestrncpy(data->name, mob->db(data->class_)->jname, sizeof(data->name));
return 1;
@@ -283,7 +332,8 @@ int mob_parse_dataset(struct spawn_data *data)
/*==========================================
* Generates the basic mob data using the spawn_data provided.
*------------------------------------------*/
-struct mob_data* mob_spawn_dataset(struct spawn_data *data) {
+static struct mob_data *mob_spawn_dataset(struct spawn_data *data)
+{
struct mob_data *md = NULL;
nullpo_retr(NULL, data);
CREATE(md, struct mob_data, 1);
@@ -330,7 +380,7 @@ struct mob_data* mob_spawn_dataset(struct spawn_data *data) {
* &8: Selected monster must have normal spawn.
* lv: Mob level to check against
*------------------------------------------*/
-int mob_get_random_id(int type, int flag, int lv)
+static int mob_get_random_id(int type, int flag, int lv)
{
struct mob_db *monster;
int i=0, class_;
@@ -361,7 +411,8 @@ int mob_get_random_id(int type, int flag, int lv)
/*==========================================
* Kill Steal Protection [Zephyrus]
*------------------------------------------*/
-bool mob_ksprotected(struct block_list *src, struct block_list *target) {
+static bool mob_ksprotected(struct block_list *src, struct block_list *target)
+{
struct block_list *s_bl, *t_bl;
struct map_session_data
*sd, // Source
@@ -444,7 +495,7 @@ bool mob_ksprotected(struct block_list *src, struct block_list *target) {
return false;
}
-struct mob_data *mob_once_spawn_sub(struct block_list *bl, int16 m, int16 x, int16 y, const char *mobname, int class_, const char *event, unsigned int size, unsigned int ai)
+static struct mob_data *mob_once_spawn_sub(struct block_list *bl, int16 m, int16 x, int16 y, const char *mobname, int class_, const char *event, unsigned int size, unsigned int ai)
{
struct spawn_data data;
@@ -455,13 +506,12 @@ struct mob_data *mob_once_spawn_sub(struct block_list *bl, int16 m, int16 x, int
data.state.size = size;
data.state.ai = ai;
- if (mobname)
+ if (mobname != NULL)
safestrncpy(data.name, mobname, sizeof(data.name));
+ else if (battle_config.override_mob_names == 1)
+ strcpy(data.name, DEFAULT_MOB_NAME);
else
- if (battle_config.override_mob_names == 1)
- strcpy(data.name, "--en--");
- else
- strcpy(data.name, "--ja--");
+ strcpy(data.name, DEFAULT_MOB_JNAME);
if (event)
safestrncpy(data.eventname, event, sizeof(data.eventname));
@@ -486,7 +536,8 @@ struct mob_data *mob_once_spawn_sub(struct block_list *bl, int16 m, int16 x, int
/*==========================================
* Spawn a single mob on the specified coordinates.
*------------------------------------------*/
-int mob_once_spawn(struct map_session_data* sd, int16 m, int16 x, int16 y, const char* mobname, int class_, int amount, const char* event, unsigned int size, unsigned int ai) {
+static int mob_once_spawn(struct map_session_data *sd, int16 m, int16 x, int16 y, const char *mobname, int class_, int amount, const char *event, unsigned int size, unsigned int ai)
+{
struct mob_data* md = NULL;
int count, lv;
bool no_guardian_data = false;
@@ -537,7 +588,7 @@ int mob_once_spawn(struct map_session_data* sd, int16 m, int16 x, int16 y, const
/*==========================================
* Spawn mobs in the specified area.
*------------------------------------------*/
-int mob_once_spawn_area(struct map_session_data* sd, int16 m, int16 x0, int16 y0, int16 x1, int16 y1, const char* mobname, int class_, int amount, const char* event, unsigned int size, unsigned int ai)
+static int mob_once_spawn_area(struct map_session_data *sd, int16 m, int16 x0, int16 y0, int16 x1, int16 y1, const char *mobname, int class_, int amount, const char *event, unsigned int size, unsigned int ai)
{
int i, max, id = 0;
int lx = -1, ly = -1;
@@ -595,7 +646,8 @@ int mob_once_spawn_area(struct map_session_data* sd, int16 m, int16 x0, int16 y0
* @retval Always 0
* @author Skotlex
**/
-int mob_spawn_guardian_sub(int tid, int64 tick, int id, intptr_t data) {
+static int mob_spawn_guardian_sub(int tid, int64 tick, int id, intptr_t data)
+{
//Needed because the guild data may not be available at guardian spawn time.
struct block_list* bl = map->id2bl(id);
struct mob_data* md;
@@ -638,7 +690,7 @@ int mob_spawn_guardian_sub(int tid, int64 tick, int id, intptr_t data) {
/*==========================================
* Summoning Guardians [Valaris]
*------------------------------------------*/
-int mob_spawn_guardian(const char* mapname, short x, short y, const char* mobname, int class_, const char* event, int guardian, bool has_index)
+static int mob_spawn_guardian(const char *mapname, short x, short y, const char *mobname, int class_, const char *event, int guardian, bool has_index)
{
struct mob_data *md=NULL;
struct spawn_data data;
@@ -738,7 +790,7 @@ int mob_spawn_guardian(const char* mapname, short x, short y, const char* mobnam
/*==========================================
* Summoning BattleGround [Zephyrus]
*------------------------------------------*/
-int mob_spawn_bg(const char* mapname, short x, short y, const char* mobname, int class_, const char* event, unsigned int bg_id)
+static int mob_spawn_bg(const char *mapname, short x, short y, const char *mobname, int class_, const char *event, unsigned int bg_id)
{
struct mob_data *md = NULL;
struct spawn_data data;
@@ -789,7 +841,7 @@ int mob_spawn_bg(const char* mapname, short x, short y, const char* mobname, int
* - MSS_RUSH: Chasing attacking player, path is complex
* - MSS_FOLLOW: Initiative/support seek, path is complex
*------------------------------------------*/
-int mob_can_reach(struct mob_data *md,struct block_list *bl,int range, int state)
+static int mob_can_reach(struct mob_data *md, struct block_list *bl, int range, int state)
{
int easy = 0;
@@ -811,7 +863,7 @@ int mob_can_reach(struct mob_data *md,struct block_list *bl,int range, int state
/*==========================================
* Links nearby mobs (supportive mobs)
*------------------------------------------*/
-int mob_linksearch(struct block_list *bl,va_list ap)
+static int mob_linksearch(struct block_list *bl, va_list ap)
{
struct mob_data *md = NULL;
int class_ = va_arg(ap, int);
@@ -840,7 +892,8 @@ int mob_linksearch(struct block_list *bl,va_list ap)
/*==========================================
* mob spawn with delay (timer function)
*------------------------------------------*/
-int mob_delayspawn(int tid, int64 tick, int id, intptr_t data) {
+static int mob_delayspawn(int tid, int64 tick, int id, intptr_t data)
+{
struct block_list* bl = map->id2bl(id); // TODO: Why does this not use map->bl2md?
struct mob_data* md = BL_CAST(BL_MOB, bl);
@@ -860,7 +913,7 @@ int mob_delayspawn(int tid, int64 tick, int id, intptr_t data) {
/*==========================================
* spawn timing calculation
*------------------------------------------*/
-int mob_setdelayspawn(struct mob_data *md)
+static int mob_setdelayspawn(struct mob_data *md)
{
unsigned int spawntime;
uint32 mode;
@@ -904,7 +957,8 @@ int mob_setdelayspawn(struct mob_data *md)
return 0;
}
-int mob_count_sub(struct block_list *bl, va_list ap) {
+static int mob_count_sub(struct block_list *bl, va_list ap)
+{
int mobid[10] = { 0 }, i;
ARR_FIND(0, 10, i, (mobid[i] = va_arg(ap, int)) == 0); //fetch till 0
if (mobid[0]) { //if there one let's check it otherwise go backward
@@ -919,7 +973,7 @@ int mob_count_sub(struct block_list *bl, va_list ap) {
/*==========================================
* Mob spawning. Initialization is also variously here.
*------------------------------------------*/
-int mob_spawn (struct mob_data *md)
+static int mob_spawn(struct mob_data *md)
{
int i=0;
int64 tick = timer->gettick();
@@ -1013,7 +1067,7 @@ int mob_spawn (struct mob_data *md)
/*==========================================
* Determines if the mob can change target. [Skotlex]
*------------------------------------------*/
-int mob_can_changetarget(const struct mob_data *md, const struct block_list *target, uint32 mode)
+static int mob_can_changetarget(const struct mob_data *md, const struct block_list *target, uint32 mode)
{
nullpo_ret(md);
nullpo_ret(target);
@@ -1047,7 +1101,7 @@ int mob_can_changetarget(const struct mob_data *md, const struct block_list *tar
/*==========================================
* Determination for an attack of a monster
*------------------------------------------*/
-int mob_target(struct mob_data *md,struct block_list *bl,int dist)
+static int mob_target(struct mob_data *md, struct block_list *bl, int dist)
{
nullpo_ret(md);
nullpo_ret(bl);
@@ -1071,7 +1125,7 @@ int mob_target(struct mob_data *md,struct block_list *bl,int dist)
/*==========================================
* The ?? routine of an active monster
*------------------------------------------*/
-int mob_ai_sub_hard_activesearch(struct block_list *bl, va_list ap)
+static int mob_ai_sub_hard_activesearch(struct block_list *bl, va_list ap)
{
struct mob_data *md;
struct block_list **target;
@@ -1134,7 +1188,8 @@ int mob_ai_sub_hard_activesearch(struct block_list *bl, va_list ap)
/*==========================================
* chase target-change routine.
*------------------------------------------*/
-int mob_ai_sub_hard_changechase(struct block_list *bl,va_list ap) {
+static int mob_ai_sub_hard_changechase(struct block_list *bl, va_list ap)
+{
struct mob_data *md;
struct block_list **target;
@@ -1162,7 +1217,8 @@ int mob_ai_sub_hard_changechase(struct block_list *bl,va_list ap) {
/*==========================================
* finds nearby bg ally for guardians looking for users to follow.
*------------------------------------------*/
-int mob_ai_sub_hard_bg_ally(struct block_list *bl,va_list ap) {
+static int mob_ai_sub_hard_bg_ally(struct block_list *bl, va_list ap)
+{
struct mob_data *md;
struct block_list **target;
@@ -1181,7 +1237,7 @@ int mob_ai_sub_hard_bg_ally(struct block_list *bl,va_list ap) {
/*==========================================
* loot monster item search
*------------------------------------------*/
-int mob_ai_sub_hard_lootsearch(struct block_list *bl,va_list ap)
+static int mob_ai_sub_hard_lootsearch(struct block_list *bl, va_list ap)
{
struct mob_data* md;
struct block_list **target;
@@ -1203,7 +1259,8 @@ int mob_ai_sub_hard_lootsearch(struct block_list *bl,va_list ap)
return 0;
}
-int mob_warpchase_sub(struct block_list *bl,va_list ap) {
+static int mob_warpchase_sub(struct block_list *bl, va_list ap)
+{
int cur_distance;
struct block_list *target = va_arg(ap, struct block_list *);
struct npc_data **target_nd = va_arg(ap, struct npc_data **);
@@ -1235,7 +1292,8 @@ int mob_warpchase_sub(struct block_list *bl,va_list ap) {
/*==========================================
* Processing of slave monsters
*------------------------------------------*/
-int mob_ai_sub_hard_slavemob(struct mob_data *md, int64 tick) {
+static int mob_ai_sub_hard_slavemob(struct mob_data *md, int64 tick)
+{
struct block_list *bl;
nullpo_ret(md);
@@ -1318,7 +1376,8 @@ int mob_ai_sub_hard_slavemob(struct mob_data *md, int64 tick) {
* when trying to pick new targets when the current chosen target is
* unreachable.
*------------------------------------------*/
-int mob_unlocktarget(struct mob_data *md, int64 tick) {
+static int mob_unlocktarget(struct mob_data *md, int64 tick)
+{
nullpo_ret(md);
switch (md->state.skillstate) {
@@ -1354,7 +1413,7 @@ int mob_unlocktarget(struct mob_data *md, int64 tick) {
md->ud.target_to = 0;
unit->set_target(&md->ud, 0);
}
- if(battle_config.official_cell_stack_limit && map->count_oncell(md->bl.m, md->bl.x, md->bl.y, BL_CHAR|BL_NPC, 1) > battle_config.official_cell_stack_limit) {
+ if(battle_config.official_cell_stack_limit && map->count_oncell(md->bl.m, md->bl.x, md->bl.y, BL_CHAR|BL_NPC, 0x1 | 0x2) > battle_config.official_cell_stack_limit) {
unit->walktoxy(&md->bl, md->bl.x, md->bl.y, 8);
}
@@ -1363,7 +1422,8 @@ int mob_unlocktarget(struct mob_data *md, int64 tick) {
/*==========================================
* Random walk
*------------------------------------------*/
-int mob_randomwalk(struct mob_data *md, int64 tick) {
+static int mob_randomwalk(struct mob_data *md, int64 tick)
+{
const int retrycount=20;
int i,c,d;
int speed;
@@ -1413,7 +1473,7 @@ int mob_randomwalk(struct mob_data *md, int64 tick) {
return 1;
}
-int mob_warpchase(struct mob_data *md, struct block_list *target)
+static int mob_warpchase(struct mob_data *md, struct block_list *target)
{
struct npc_data *warp = NULL;
int distance = AREA_SIZE;
@@ -1440,7 +1500,8 @@ int mob_warpchase(struct mob_data *md, struct block_list *target)
/*==========================================
* AI of MOB whose is near a Player
*------------------------------------------*/
-bool mob_ai_sub_hard(struct mob_data *md, int64 tick) {
+static bool mob_ai_sub_hard(struct mob_data *md, int64 tick)
+{
struct block_list *tbl = NULL, *abl = NULL;
uint32 mode;
int view_range, can_move;
@@ -1720,7 +1781,7 @@ bool mob_ai_sub_hard(struct mob_data *md, int64 tick) {
return true;
}
-int mob_ai_sub_hard_timer(struct block_list *bl, va_list ap)
+static int mob_ai_sub_hard_timer(struct block_list *bl, va_list ap)
{
struct mob_data *md = NULL;
int64 tick = va_arg(ap, int64);
@@ -1741,7 +1802,8 @@ int mob_ai_sub_hard_timer(struct block_list *bl, va_list ap)
/*==========================================
* Serious processing for mob in PC field of view (foreachclient)
*------------------------------------------*/
-int mob_ai_sub_foreachclient(struct map_session_data *sd, va_list ap) {
+static int mob_ai_sub_foreachclient(struct map_session_data *sd, va_list ap)
+{
int64 tick;
nullpo_ret(sd);
tick=va_arg(ap, int64);
@@ -1753,7 +1815,8 @@ int mob_ai_sub_foreachclient(struct map_session_data *sd, va_list ap) {
/*==========================================
* Negligent mode MOB AI (PC is not in near)
*------------------------------------------*/
-int mob_ai_sub_lazy(struct mob_data *md, va_list args) {
+static int mob_ai_sub_lazy(struct mob_data *md, va_list args)
+{
int64 tick;
nullpo_ret(md);
@@ -1817,7 +1880,8 @@ int mob_ai_sub_lazy(struct mob_data *md, va_list args) {
/*==========================================
* Negligent processing for mob outside PC field of view (interval timer function)
*------------------------------------------*/
-int mob_ai_lazy(int tid, int64 tick, int id, intptr_t data) {
+static int mob_ai_lazy(int tid, int64 tick, int id, intptr_t data)
+{
map->foreachmob(mob->ai_sub_lazy,tick);
return 0;
}
@@ -1825,7 +1889,8 @@ int mob_ai_lazy(int tid, int64 tick, int id, intptr_t data) {
/*==========================================
* Serious processing for mob in PC field of view (interval timer function)
*------------------------------------------*/
-int mob_ai_hard(int tid, int64 tick, int id, intptr_t data) {
+static int mob_ai_hard(int tid, int64 tick, int id, intptr_t data)
+{
if (battle_config.mob_ai&0x20)
map->foreachmob(mob->ai_sub_lazy,tick);
@@ -1838,11 +1903,13 @@ int mob_ai_hard(int tid, int64 tick, int id, intptr_t data) {
/*==========================================
* Initializes the delay drop structure for mob-dropped items.
*------------------------------------------*/
-struct item_drop* mob_setdropitem(int nameid, int qty, struct item_data *data) {
+static struct item_drop *mob_setdropitem(int nameid, int qty, struct item_data *data)
+{
struct item_drop *drop = ers_alloc(item_drop_ers, struct item_drop);
drop->item_data.nameid = nameid;
drop->item_data.amount = qty;
drop->item_data.identify = data ? itemdb->isidentified2(data) : itemdb->isidentified(nameid);
+ drop->showdropeffect = true;
drop->next = NULL;
return drop;
}
@@ -1850,13 +1917,14 @@ struct item_drop* mob_setdropitem(int nameid, int qty, struct item_data *data) {
/*==========================================
* Initializes the delay drop structure for mob-looted items.
*------------------------------------------*/
-struct item_drop* mob_setlootitem(struct item* item)
+static struct item_drop *mob_setlootitem(struct item *item)
{
struct item_drop *drop ;
nullpo_retr(NULL, item);
drop = ers_alloc(item_drop_ers, struct item_drop);
memcpy(&drop->item_data, item, sizeof(struct item));
+ drop->showdropeffect = false;
drop->next = NULL;
return drop;
}
@@ -1864,7 +1932,8 @@ struct item_drop* mob_setlootitem(struct item* item)
/*==========================================
* item drop with delay (timer function)
*------------------------------------------*/
-int mob_delay_item_drop(int tid, int64 tick, int id, intptr_t data) {
+static int mob_delay_item_drop(int tid, int64 tick, int id, intptr_t data)
+{
struct item_drop_list *list;
struct item_drop *ditem;
list=(struct item_drop_list *)data;
@@ -1872,8 +1941,9 @@ int mob_delay_item_drop(int tid, int64 tick, int id, intptr_t data) {
while (ditem) {
struct item_drop *ditem_prev;
map->addflooritem(NULL, &ditem->item_data,ditem->item_data.amount,
- list->m,list->x,list->y,
- list->first_charid,list->second_charid,list->third_charid,0);
+ list->m,list->x,list->y,
+ list->first_charid,list->second_charid,list->third_charid,0,
+ ditem->showdropeffect);
ditem_prev = ditem;
ditem = ditem->next;
ers_free(item_drop_ers, ditem_prev);
@@ -1888,7 +1958,7 @@ int mob_delay_item_drop(int tid, int64 tick, int id, intptr_t data) {
* rate is the drop-rate of the item, required for autoloot.
* flag : Killed only by homunculus?
*------------------------------------------*/
-void mob_item_drop(struct mob_data *md, struct item_drop_list *dlist, struct item_drop *ditem, int loot, int drop_rate, unsigned short flag)
+static void mob_item_drop(struct mob_data *md, struct item_drop_list *dlist, struct item_drop *ditem, int loot, int drop_rate, unsigned short flag)
{
struct map_session_data *sd = NULL;
@@ -1904,6 +1974,7 @@ void mob_item_drop(struct mob_data *md, struct item_drop_list *dlist, struct ite
if( sd
&& (drop_rate <= sd->state.autoloot || pc->isautolooting(sd, ditem->item_data.nameid))
+ && (!map->list[sd->bl.m].flag.noautoloot)
&& (battle_config.idle_no_autoloot == 0 || DIFF_TICK(sockt->last_tick, sd->idletime) < battle_config.idle_no_autoloot)
&& (battle_config.homunculus_autoloot?1:!flag)
#ifdef AUTOLOOT_DISTANCE
@@ -1923,7 +1994,8 @@ void mob_item_drop(struct mob_data *md, struct item_drop_list *dlist, struct ite
dlist->item = ditem;
}
-int mob_timer_delete(int tid, int64 tick, int id, intptr_t data) {
+static int mob_timer_delete(int tid, int64 tick, int id, intptr_t data)
+{
struct block_list* bl = map->id2bl(id); // TODO: Why does this not use map->id2md?
struct mob_data* md = BL_CAST(BL_MOB, bl);
@@ -1944,7 +2016,7 @@ int mob_timer_delete(int tid, int64 tick, int id, intptr_t data) {
/*==========================================
*
*------------------------------------------*/
-int mob_deleteslave_sub(struct block_list *bl,va_list ap)
+static int mob_deleteslave_sub(struct block_list *bl, va_list ap)
{
struct mob_data *md = NULL;
int id = va_arg(ap, int);
@@ -1961,14 +2033,16 @@ int mob_deleteslave_sub(struct block_list *bl,va_list ap)
/*==========================================
*
*------------------------------------------*/
-int mob_deleteslave(struct mob_data *md) {
+static int mob_deleteslave(struct mob_data *md)
+{
nullpo_ret(md);
map->foreachinmap(mob->deleteslave_sub, md->bl.m, BL_MOB,md->bl.id);
return 0;
}
// Mob respawning through KAIZEL or NPC_REBIRTH [Skotlex]
-int mob_respawn(int tid, int64 tick, int id, intptr_t data) {
+static int mob_respawn(int tid, int64 tick, int id, intptr_t data)
+{
struct block_list *bl = map->id2bl(id);
if(!bl) return 0;
@@ -1976,7 +2050,7 @@ int mob_respawn(int tid, int64 tick, int id, intptr_t data) {
return 1;
}
-void mob_log_damage(struct mob_data *md, struct block_list *src, int damage)
+static void mob_log_damage(struct mob_data *md, struct block_list *src, int damage)
{
int char_id = 0, flag = MDLF_NORMAL;
@@ -2092,7 +2166,8 @@ void mob_log_damage(struct mob_data *md, struct block_list *src, int damage)
return;
}
//Call when a mob has received damage.
-void mob_damage(struct mob_data *md, struct block_list *src, int damage) {
+static void mob_damage(struct mob_data *md, struct block_list *src, int damage)
+{
nullpo_retv(md);
if (damage > 0) { //Store total damage...
if (UINT_MAX - (unsigned int)damage > md->tdmg)
@@ -2114,6 +2189,10 @@ void mob_damage(struct mob_data *md, struct block_list *src, int damage) {
if (src)
mob->log_damage(md, src, damage);
md->dmgtick = timer->gettick();
+
+ // Achievements [Smokexyz/Hercules]
+ if (src != NULL && src->type == BL_PC)
+ achievement->validate_mob_damage(BL_UCAST(BL_PC, src), damage, false);
}
if (battle_config.show_mob_info&3)
@@ -2146,11 +2225,13 @@ void mob_damage(struct mob_data *md, struct block_list *src, int damage) {
* Signals death of mob.
* type&1 -> no drops, type&2 -> no exp
*------------------------------------------*/
-int mob_dead(struct mob_data *md, struct block_list *src, int type) {
+static int mob_dead(struct mob_data *md, struct block_list *src, int type)
+{
struct status_data *mstatus;
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;
@@ -2344,6 +2425,9 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) {
}
if(zeny) // zeny from mobs [Valaris]
pc->getzeny(tmpsd[i], zeny, LOG_TYPE_PICKDROP_MONSTER, NULL);
+
+ if (!md->special_state.clone && !mob->is_clone(md->class_))
+ achievement->validate_mob_kill(tmpsd[i], md->db->mob_id); // Achievements [Smokexyz/Hercules]
}
}
@@ -2439,23 +2523,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);
@@ -2472,7 +2546,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) {
if(sd) {
// process script-granted extra drop bonuses
int itemid = 0;
- for (i = 0; i < ARRAYLENGTH(sd->add_drop) && (sd->add_drop[i].id || sd->add_drop[i].group); i++)
+ for (i = 0; i < ARRAYLENGTH(sd->add_drop) && (sd->add_drop[i].id != 0 || sd->add_drop[i].is_group); i++)
{
if ( sd->add_drop[i].race == -md->class_ ||
( sd->add_drop[i].race > 0 && (
@@ -2494,7 +2568,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) {
if (rnd()%10000 >= drop_rate)
continue;
- itemid = (sd->add_drop[i].id > 0) ? sd->add_drop[i].id : itemdb->chain_item(sd->add_drop[i].group,&drop_rate);
+ itemid = (!sd->add_drop[i].is_group) ? sd->add_drop[i].id : itemdb->chain_item(sd->add_drop[i].id, &drop_rate);
if( itemid )
mob->item_drop(md, dlist, mob->setdropitem(itemid,1,NULL), 0, drop_rate, homkillonly);
}
@@ -2592,17 +2666,9 @@ 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);
+ 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, true);
}
//Logs items, MVP prizes [Lupus]
@@ -2637,11 +2703,11 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) {
if (++sd->mission_count >= 100 && (temp = mob->get_random_id(0, 0xE, sd->status.base_level)) != 0) {
pc->addfame(sd, RANKTYPE_TAEKWON, 1);
sd->mission_mobid = temp;
- pc_setglobalreg(sd,script->add_str("TK_MISSION_ID"), temp);
+ pc_setglobalreg(sd,script->add_variable("TK_MISSION_ID"), temp);
sd->mission_count = 0;
clif->mission_info(sd, temp, 0);
}
- pc_setglobalreg(sd,script->add_str("TK_MISSION_COUNT"), sd->mission_count);
+ pc_setglobalreg(sd,script->add_variable("TK_MISSION_COUNT"), sd->mission_count);
}
if( sd->status.party_id )
@@ -2702,7 +2768,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) {
return 5; // Note: Actually, it's 4. Oh well...
// MvP tomb [GreenBox]
- if (battle_config.mvp_tomb_enabled && md->spawn->state.boss && map->list[md->bl.m].flag.notomb != 1)
+ if (battle_config.mvp_tomb_enabled && md->spawn->state.boss == BTYPE_MVP && map->list[md->bl.m].flag.notomb != 1)
mob->mvptomb_create(md, mvp_sd ? mvp_sd->status.name : NULL, time(NULL));
if( !rebirth ) {
@@ -2712,7 +2778,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) {
return 3; //Remove from map.
}
-void mob_revive(struct mob_data *md, unsigned int hp)
+static void mob_revive(struct mob_data *md, unsigned int hp)
{
int64 tick = timer->gettick();
@@ -2733,7 +2799,7 @@ void mob_revive(struct mob_data *md, unsigned int hp)
clif->charnameack (0, &md->bl);
}
-int mob_guardian_guildchange(struct mob_data *md)
+static int mob_guardian_guildchange(struct mob_data *md)
{
struct guild *g;
nullpo_ret(md);
@@ -2772,7 +2838,7 @@ int mob_guardian_guildchange(struct mob_data *md)
/*==========================================
* Pick a random class for the mob
*------------------------------------------*/
-int mob_random_class (int *value, size_t count)
+static int mob_random_class(int *value, size_t count)
{
nullpo_ret(value);
@@ -2794,7 +2860,8 @@ int mob_random_class (int *value, size_t count)
/*==========================================
* Change mob base class
*------------------------------------------*/
-int mob_class_change (struct mob_data *md, int class_) {
+static int mob_class_change(struct mob_data *md, int class_)
+{
int64 tick = timer->gettick(), c = 0;
int i, hp_rate;
@@ -2862,7 +2929,7 @@ int mob_class_change (struct mob_data *md, int class_) {
/*==========================================
* mob heal, update display hp info of mob for players
*------------------------------------------*/
-void mob_heal(struct mob_data *md, unsigned int heal)
+static void mob_heal(struct mob_data *md, unsigned int heal)
{
nullpo_retv(md);
if (battle_config.show_mob_info&3)
@@ -2890,7 +2957,7 @@ void mob_heal(struct mob_data *md, unsigned int heal)
/*==========================================
* Added by RoVeRT
*------------------------------------------*/
-int mob_warpslave_sub(struct block_list *bl, va_list ap)
+static int mob_warpslave_sub(struct block_list *bl, va_list ap)
{
struct mob_data *md = NULL;
struct block_list *master;
@@ -2916,7 +2983,8 @@ int mob_warpslave_sub(struct block_list *bl, va_list ap)
* Warps slaves. Range is the area around the master that they can
* appear in randomly.
*------------------------------------------*/
-int mob_warpslave(struct block_list *bl, int range) {
+static int mob_warpslave(struct block_list *bl, int range)
+{
nullpo_ret(bl);
if (range < 1)
range = 1; //Min range needed to avoid crashes and stuff. [Skotlex]
@@ -2927,7 +2995,7 @@ int mob_warpslave(struct block_list *bl, int range) {
/*==========================================
* Counts slave sub, currently checking if mob master is the given ID.
*------------------------------------------*/
-int mob_countslave_sub(struct block_list *bl, va_list ap)
+static int mob_countslave_sub(struct block_list *bl, va_list ap)
{
int id = va_arg(ap, int);
struct mob_data *md = NULL;
@@ -2944,7 +3012,8 @@ int mob_countslave_sub(struct block_list *bl, va_list ap)
/*==========================================
* Counts the number of slaves a mob has on the map.
*------------------------------------------*/
-int mob_countslave(struct block_list *bl) {
+static int mob_countslave(struct block_list *bl)
+{
nullpo_ret(bl);
return map->foreachinmap(mob->countslave_sub, bl->m, BL_MOB,bl->id);
}
@@ -2952,7 +3021,7 @@ int mob_countslave(struct block_list *bl) {
/*==========================================
* Summons amount slaves contained in the value[5] array using round-robin. [adapted by Skotlex]
*------------------------------------------*/
-int mob_summonslave(struct mob_data *md2,int *value,int amount,uint16 skill_id)
+static int mob_summonslave(struct mob_data *md2, int *value, int amount, uint16 skill_id)
{
struct mob_data *md;
struct spawn_data data;
@@ -3002,10 +3071,10 @@ int mob_summonslave(struct mob_data *md2,int *value,int amount,uint16 skill_id)
}
//These two need to be loaded from the db for each slave.
- if(battle_config.override_mob_names==1)
- strcpy(data.name,"--en--");
+ if (battle_config.override_mob_names == 1)
+ strcpy(data.name, DEFAULT_MOB_NAME);
else
- strcpy(data.name,"--ja--");
+ strcpy(data.name, DEFAULT_MOB_JNAME);
if (!mob->parse_dataset(&data))
continue;
@@ -3050,7 +3119,7 @@ int mob_summonslave(struct mob_data *md2,int *value,int amount,uint16 skill_id)
* MOBskill lookup (get skillindex through skill_id)
* Returns INDEX_NOT_FOUND if not found.
*------------------------------------------*/
-int mob_skill_id2skill_idx(int class_,uint16 skill_id)
+static int mob_skill_id2skill_idx(int class_, uint16 skill_id)
{
int i, max = mob->db(class_)->maxskill;
struct mob_skill *ms=mob->db(class_)->skill;
@@ -3067,7 +3136,7 @@ int mob_skill_id2skill_idx(int class_,uint16 skill_id)
/*==========================================
* Friendly Mob whose HP is decreasing by a nearby MOB is looked for.
*------------------------------------------*/
-int mob_getfriendhprate_sub(struct block_list *bl,va_list ap)
+static int mob_getfriendhprate_sub(struct block_list *bl, va_list ap)
{
int min_rate, max_rate,rate;
struct block_list **fr;
@@ -3095,7 +3164,8 @@ int mob_getfriendhprate_sub(struct block_list *bl,va_list ap)
(*fr) = bl;
return 1;
}
-struct block_list *mob_getfriendhprate(struct mob_data *md,int min_rate,int max_rate) {
+static struct block_list *mob_getfriendhprate(struct mob_data *md, int min_rate, int max_rate)
+{
struct block_list *fr=NULL;
int type = BL_MOB;
@@ -3110,7 +3180,8 @@ struct block_list *mob_getfriendhprate(struct mob_data *md,int min_rate,int max_
/*==========================================
* Check hp rate of its master
*------------------------------------------*/
-struct block_list *mob_getmasterhpltmaxrate(struct mob_data *md,int rate) {
+static struct block_list *mob_getmasterhpltmaxrate(struct mob_data *md, int rate)
+{
if( md && md->master_id > 0 ) {
struct block_list *bl = map->id2bl(md->master_id);
if( bl && get_percentage(status_get_hp(bl), status_get_max_hp(bl)) < rate )
@@ -3122,7 +3193,7 @@ struct block_list *mob_getmasterhpltmaxrate(struct mob_data *md,int rate) {
/*==========================================
* What a status state suits by nearby MOB is looked for.
*------------------------------------------*/
-int mob_getfriendstatus_sub(struct block_list *bl,va_list ap)
+static int mob_getfriendstatus_sub(struct block_list *bl, va_list ap)
{
int cond1,cond2;
struct mob_data **fr = NULL, *md = NULL, *mmd = NULL;
@@ -3155,7 +3226,8 @@ int mob_getfriendstatus_sub(struct block_list *bl,va_list ap)
return 0;
}
-struct mob_data *mob_getfriendstatus(struct mob_data *md,int cond1,int cond2) {
+static struct mob_data *mob_getfriendstatus(struct mob_data *md, int cond1, int cond2)
+{
struct mob_data* fr = NULL;
nullpo_ret(md);
@@ -3166,7 +3238,8 @@ struct mob_data *mob_getfriendstatus(struct mob_data *md,int cond1,int cond2) {
/*==========================================
* Skill use judging
*------------------------------------------*/
-int mobskill_use(struct mob_data *md, int64 tick, int event) {
+static int mobskill_use(struct mob_data *md, int64 tick, int event)
+{
struct mob_skill *ms;
struct block_list *fbl = NULL; //Friend bl, which can either be a BL_PC or BL_MOB depending on the situation. [Skotlex]
struct block_list *bl;
@@ -3367,7 +3440,7 @@ int mobskill_use(struct mob_data *md, int64 tick, int event) {
char name[NAME_LENGTH];
snprintf(name, sizeof name,"%s", md->name);
strtok(name, "#"); // discard extra name identifier if present [Daegaladh]
- snprintf(temp, sizeof temp,"%s : %s", name, mc->msg);
+ safesnprintf(temp, sizeof temp,"%s : %s", name, mc->msg);
clif->messagecolor(&md->bl, mc->color, temp);
}
if(!(battle_config.mob_ai&0x200)) { //pass on delay to same skill.
@@ -3386,7 +3459,8 @@ int mobskill_use(struct mob_data *md, int64 tick, int event) {
/*==========================================
* Skill use event processing
*------------------------------------------*/
-int mobskill_event(struct mob_data *md, struct block_list *src, int64 tick, int flag) {
+static int mobskill_event(struct mob_data *md, struct block_list *src, int64 tick, int flag)
+{
int target_id, res = 0;
nullpo_ret(md);
@@ -3423,7 +3497,7 @@ int mobskill_event(struct mob_data *md, struct block_list *src, int64 tick, int
}
// Player cloned mobs. [Valaris]
-int mob_is_clone(int class_)
+static int mob_is_clone(int class_)
{
if(class_ < MOB_CLONE_START || class_ > MOB_CLONE_END)
return 0;
@@ -3437,7 +3511,7 @@ int mob_is_clone(int class_)
//If mode is not passed, a default aggressive mode is used.
//If master_id is passed, clone is attached to him.
//Returns: ID of newly crafted copy.
-int mob_clone_spawn(struct map_session_data *sd, int16 m, int16 x, int16 y, const char *event, int master_id, uint32 mode, int flag, unsigned int duration)
+static int mob_clone_spawn(struct map_session_data *sd, int16 m, int16 x, int16 y, const char *event, int master_id, uint32 mode, int flag, unsigned int duration)
{
int class_;
int i,j,h,inf, fd;
@@ -3617,7 +3691,7 @@ int mob_clone_spawn(struct map_session_data *sd, int16 m, int16 x, int16 y, cons
sd->fd = fd;
//Finally, spawn it.
- md = mob->once_spawn_sub(&sd->bl, m, x, y, "--en--", class_, event, SZ_SMALL, AI_NONE);
+ md = mob->once_spawn_sub(&sd->bl, m, x, y, DEFAULT_MOB_NAME, class_, event, SZ_SMALL, AI_NONE);
if (!md) return 0; //Failed?
md->special_state.clone = 1;
@@ -3640,7 +3714,7 @@ int mob_clone_spawn(struct map_session_data *sd, int16 m, int16 x, int16 y, cons
return md->bl.id;
}
-int mob_clone_delete(struct mob_data *md)
+static int mob_clone_delete(struct mob_data *md)
{
int class_;
@@ -3663,7 +3737,7 @@ int mob_clone_delete(struct mob_data *md)
/*==========================================
* Since un-setting [ mob ] up was used, it is an initial provisional value setup.
*------------------------------------------*/
-int mob_makedummymobdb(int class_)
+static int mob_makedummymobdb(int class_)
{
if (mob->dummy != NULL)
{
@@ -3705,7 +3779,7 @@ int mob_makedummymobdb(int class_)
}
//Adjusts the drop rate of item according to the criteria given. [Skotlex]
-unsigned int mob_drop_adjust(int baserate, int rate_adjust, unsigned short rate_min, unsigned short rate_max)
+static unsigned int mob_drop_adjust(int baserate, int rate_adjust, unsigned short rate_min, unsigned short rate_max)
{
int64 rate = baserate;
@@ -3726,6 +3800,28 @@ unsigned int mob_drop_adjust(int baserate, int rate_adjust, unsigned short rate_
return (unsigned int)cap_value(rate,rate_min,rate_max);
}
+static struct item_drop_ratio *mob_get_item_drop_ratio(int nameid)
+{
+ Assert_retr(NULL, nameid > 0);
+ if (nameid < ARRAYLENGTH(item_drop_ratio_db)) {
+ return item_drop_ratio_db[nameid];
+ } else {
+ return (struct item_drop_ratio *)idb_get(item_drop_ratio_other_db, nameid);
+ }
+}
+
+static void mob_set_item_drop_ratio(int nameid, struct item_drop_ratio *ratio)
+{
+ Assert_retv(nameid > 0);
+ if (nameid < ARRAYLENGTH(item_drop_ratio_db)) {
+ Assert_retv(item_drop_ratio_db[nameid] == NULL);
+ item_drop_ratio_db[nameid] = ratio;
+ } else {
+ Assert_retv(idb_get(item_drop_ratio_other_db, nameid) == NULL);
+ idb_put(item_drop_ratio_other_db, nameid, ratio);
+ }
+}
+
/**
* Check if global item drop rate is overridden for given item
* in db/mob_item_ratio.txt
@@ -3733,23 +3829,27 @@ unsigned int mob_drop_adjust(int baserate, int rate_adjust, unsigned short rate_
* @param mob_id ID of the monster
* @param rate_adjust pointer to store ratio if found
*/
-void item_dropratio_adjust(int nameid, int mob_id, int *rate_adjust)
+static void item_dropratio_adjust(int nameid, int mob_id, int *rate_adjust)
{
+ struct item_drop_ratio *dropRatio;
nullpo_retv(rate_adjust);
- if( item_drop_ratio_db[nameid] ) {
- if( item_drop_ratio_db[nameid]->mob_id[0] ) { // only for listed mobs
+
+ dropRatio = mob->get_item_drop_ratio(nameid);
+ if (dropRatio) {
+ if (dropRatio->mob_id[0] ) { // only for listed mobs
int i;
- ARR_FIND(0, MAX_ITEMRATIO_MOBS, i, item_drop_ratio_db[nameid]->mob_id[i] == mob_id);
- if(i < MAX_ITEMRATIO_MOBS) // found
- *rate_adjust = item_drop_ratio_db[nameid]->drop_ratio;
+ ARR_FIND(0, MAX_ITEMRATIO_MOBS, i, dropRatio->mob_id[i] == mob_id);
+ if (i < MAX_ITEMRATIO_MOBS) // found
+ *rate_adjust = dropRatio->drop_ratio;
}
else // for all mobs
- *rate_adjust = item_drop_ratio_db[nameid]->drop_ratio;
+ *rate_adjust = dropRatio->drop_ratio;
}
}
/* (mob_parse_dbrow)_cap_value */
-static inline int mob_parse_dbrow_cap_value(int class_, int min, int max, int value) {
+static inline int mob_parse_dbrow_cap_value(int class_, int min, int max, int value)
+{
if( value > max ) {
ShowError("mob_parse_dbrow_cap_value: for class '%d', field value '%d' is higher than the maximum '%d'! capping...\n", class_, value, max);
return max;
@@ -3767,7 +3867,7 @@ static inline int mob_parse_dbrow_cap_value(int class_, int min, int max, int va
* (mob_id is expected to be already set).
* @param[in] t The libconfig entry.
*/
-void mob_read_db_stats_sub(struct mob_db *entry, struct config_setting_t *t)
+static void mob_read_db_stats_sub(struct mob_db *entry, struct config_setting_t *t)
{
int i32;
nullpo_retv(entry);
@@ -3799,7 +3899,7 @@ void mob_read_db_stats_sub(struct mob_db *entry, struct config_setting_t *t)
*
* @return The parsed mode.
*/
-uint32 mob_read_db_mode_sub(struct mob_db *entry, struct config_setting_t *t)
+static uint32 mob_read_db_mode_sub(struct mob_db *entry, struct config_setting_t *t)
{
uint32 mode = 0;
struct config_setting_t *t2;
@@ -3847,7 +3947,7 @@ uint32 mob_read_db_mode_sub(struct mob_db *entry, struct config_setting_t *t)
* (mob_id is expected to be already set).
* @param[in] t The libconfig entry.
*/
-void mob_read_db_mvpdrops_sub(struct mob_db *entry, struct config_setting_t *t)
+static void mob_read_db_mvpdrops_sub(struct mob_db *entry, struct config_setting_t *t)
{
struct config_setting_t *drop;
int i = 0;
@@ -3904,7 +4004,7 @@ void mob_read_db_mvpdrops_sub(struct mob_db *entry, struct config_setting_t *t)
* (mob_id, status.mode are expected to be already set).
* @param[in] t The libconfig entry.
*/
-void mob_read_db_drops_sub(struct mob_db *entry, struct config_setting_t *t)
+static void mob_read_db_drops_sub(struct mob_db *entry, struct config_setting_t *t)
{
struct config_setting_t *drop;
int i = 0;
@@ -4030,7 +4130,7 @@ void mob_read_db_drops_sub(struct mob_db *entry, struct config_setting_t *t)
* (i.e. mob_db2 inheritance), as it will make sure not to free any data still
* in use by the new entry.
*/
-int mob_db_validate_entry(struct mob_db *entry, int n, const char *source)
+static int mob_db_validate_entry(struct mob_db *entry, int n, const char *source)
{
struct mob_data data;
@@ -4133,7 +4233,7 @@ int mob_db_validate_entry(struct mob_db *entry, int n, const char *source)
* validation errors.
* @return Mob ID of the validated entry, or 0 in case of failure.
*/
-int mob_read_db_sub(struct config_setting_t *mobt, int n, const char *source)
+static int mob_read_db_sub(struct config_setting_t *mobt, int n, const char *source)
{
struct mob_db md = { 0 };
struct config_setting_t *t = NULL;
@@ -4281,7 +4381,7 @@ int mob_read_db_sub(struct config_setting_t *mobt, int n, const char *source)
if (mob->lookup_const(mobt, "AttackRange", &i32) && i32 >= 0) {
md.status.rhw.range = i32;
- } else {
+ } else if (!inherit) {
md.status.rhw.range = 1;
}
@@ -4442,12 +4542,12 @@ int mob_read_db_sub(struct config_setting_t *mobt, int n, const char *source)
* @param[in] source Source of the entry (file name), to be displayed in
* case of validation errors.
*/
-void mob_read_db_additional_fields(struct mob_db *entry, struct config_setting_t *t, int n, const char *source)
+static void mob_read_db_additional_fields(struct mob_db *entry, struct config_setting_t *t, int n, const char *source)
{
// do nothing. plugins can do own work
}
-bool mob_lookup_const(const struct config_setting_t *it, const char *name, int *value)
+static bool mob_lookup_const(const struct config_setting_t *it, const char *name, int *value)
{
if (libconfig->setting_lookup_int(it, name, value))
{
@@ -4465,7 +4565,7 @@ bool mob_lookup_const(const struct config_setting_t *it, const char *name, int *
return false;
}
-bool mob_get_const(const struct config_setting_t *it, int *value)
+static bool mob_get_const(const struct config_setting_t *it, int *value)
{
const char *str = config_setting_get_string(it);
@@ -4480,7 +4580,8 @@ bool mob_get_const(const struct config_setting_t *it, int *value)
/*==========================================
* mob_db.txt reading
*------------------------------------------*/
-void mob_readdb(void) {
+static void mob_readdb(void)
+{
const char* filename[] = {
DBPATH"mob_db.conf",
"mob_db2.conf" };
@@ -4501,7 +4602,7 @@ void mob_readdb(void) {
* @param ignore_missing Whether to ignore errors caused by a missing db file.
* @return the number of found entries.
*/
-int mob_read_libconfig(const char *filename, bool ignore_missing)
+static int mob_read_libconfig(const char *filename, bool ignore_missing)
{
bool duplicate[MAX_MOB_DB] = { 0 };
struct config_t mob_db_conf;
@@ -4511,7 +4612,7 @@ int mob_read_libconfig(const char *filename, bool ignore_missing)
int i = 0, count = 0;
nullpo_ret(filename);
- sprintf(filepath, "%s/%s", map->db_path, filename);
+ safesnprintf(filepath, sizeof(filepath), "%s/%s", map->db_path, filename);
if (ignore_missing && !exists(filepath))
return 0;
@@ -4545,7 +4646,8 @@ int mob_read_libconfig(const char *filename, bool ignore_missing)
return count;
}
-void mob_name_constants(void) {
+static void mob_name_constants(void)
+{
int i;
#ifdef ENABLE_CASE_CHECK
script->parser_current_file = "Mob Database (Likely an invalid or conflicting SpriteName)";
@@ -4562,7 +4664,7 @@ void mob_name_constants(void) {
/*==========================================
* MOB display graphic change data reading
*------------------------------------------*/
-bool mob_readdb_mobavail(char* str[], int columns, int current)
+static bool mob_readdb_mobavail(char *str[], int columns, int current)
{
int class_, view_class;
@@ -4604,7 +4706,7 @@ bool mob_readdb_mobavail(char* str[], int columns, int current)
/*==========================================
* Reading of random monster data
*------------------------------------------*/
-int mob_read_randommonster(void)
+static int mob_read_randommonster(void)
{
char line[1024];
char *str[10],*p;
@@ -4671,7 +4773,7 @@ int mob_read_randommonster(void)
* processes one mob_chat_db entry [SnakeDrak]
* @param last_msg_id ensures that only one error message per mob id is printed
*------------------------------------------*/
-bool mob_parse_row_chatdb(char** str, const char* source, int line, int* last_msg_id)
+static bool mob_parse_row_chatdb(char **str, const char *source, int line, int *last_msg_id)
{
char* msg;
struct mob_chat *ms;
@@ -4731,13 +4833,14 @@ bool mob_parse_row_chatdb(char** str, const char* source, int line, int* last_ms
/*==========================================
* mob_chat_db.txt reading [SnakeDrak]
*-------------------------------------------------------------------------*/
-void mob_readchatdb(void) {
+static void mob_readchatdb(void)
+{
char arc[]="mob_chat_db.txt";
uint32 lines=0, count=0;
char line[1024], filepath[256];
int i, tmp=0;
FILE *fp;
- sprintf(filepath, "%s/%s", map->db_path, arc);
+ safesnprintf(filepath, sizeof(filepath), "%s/%s", map->db_path, arc);
fp=fopen(filepath, "r");
if(fp == NULL) {
ShowWarning("mob_readchatdb: File not found \"%s\", skipping.\n", filepath);
@@ -4784,299 +4887,267 @@ void mob_readchatdb(void) {
/*==========================================
* processes one mob_skill_db entry
*------------------------------------------*/
-bool mob_parse_row_mobskilldb(char** str, int columns, int current)
+static bool mob_skill_db_libconfig(const char *filename, bool ignore_missing)
{
- static const struct {
- char str[32];
- enum MobSkillState id;
- } state[] = {
- { "any", MSS_ANY }, //All states except Dead
- { "idle", MSS_IDLE },
- { "walk", MSS_WALK },
- { "loot", MSS_LOOT },
- { "dead", MSS_DEAD },
- { "attack", MSS_BERSERK }, //Retaliating attack
- { "angry", MSS_ANGRY }, //Preemptive attack (aggressive mobs)
- { "chase", MSS_RUSH }, //Chase escaping target
- { "follow", MSS_FOLLOW }, //Preemptive chase (aggressive mobs)
- { "anytarget", MSS_ANYTARGET }, //Berserk+Angry+Rush+Follow
- };
- static const struct {
- char str[32];
- int id;
- } cond1[] = {
- { "always", MSC_ALWAYS },
- { "myhpltmaxrate", MSC_MYHPLTMAXRATE },
- { "myhpinrate", MSC_MYHPINRATE },
- { "friendhpltmaxrate", MSC_FRIENDHPLTMAXRATE },
- { "friendhpinrate", MSC_FRIENDHPINRATE },
- { "mystatuson", MSC_MYSTATUSON },
- { "mystatusoff", MSC_MYSTATUSOFF },
- { "friendstatuson", MSC_FRIENDSTATUSON },
- { "friendstatusoff", MSC_FRIENDSTATUSOFF },
- { "attackpcgt", MSC_ATTACKPCGT },
- { "attackpcge", MSC_ATTACKPCGE },
- { "slavelt", MSC_SLAVELT },
- { "slavele", MSC_SLAVELE },
- { "closedattacked", MSC_CLOSEDATTACKED },
- { "longrangeattacked", MSC_LONGRANGEATTACKED },
- { "skillused", MSC_SKILLUSED },
- { "afterskill", MSC_AFTERSKILL },
- { "casttargeted", MSC_CASTTARGETED },
- { "rudeattacked", MSC_RUDEATTACKED },
- { "masterhpltmaxrate", MSC_MASTERHPLTMAXRATE },
- { "masterattacked", MSC_MASTERATTACKED },
- { "alchemist", MSC_ALCHEMIST },
- { "onspawn", MSC_SPAWN },
- }, cond2[] ={
- { "anybad", -1 },
- { "stone", SC_STONE },
- { "freeze", SC_FREEZE },
- { "stun", SC_STUN },
- { "sleep", SC_SLEEP },
- { "poison", SC_POISON },
- { "curse", SC_CURSE },
- { "silence", SC_SILENCE },
- { "confusion", SC_CONFUSION },
- { "blind", SC_BLIND },
- { "hiding", SC_HIDING },
- { "sight", SC_SIGHT },
- }, target[] = {
- { "target", MST_TARGET },
- { "randomtarget", MST_RANDOM },
- { "self", MST_SELF },
- { "friend", MST_FRIEND },
- { "master", MST_MASTER },
- { "around5", MST_AROUND5 },
- { "around6", MST_AROUND6 },
- { "around7", MST_AROUND7 },
- { "around8", MST_AROUND8 },
- { "around1", MST_AROUND1 },
- { "around2", MST_AROUND2 },
- { "around3", MST_AROUND3 },
- { "around4", MST_AROUND4 },
- { "around", MST_AROUND },
- };
- static int last_mob_id = 0; // ensures that only one error message per mob id is printed
+ struct config_t mob_skill_conf;
+ struct config_setting_t *it = NULL, *its = NULL, *mob_skill = NULL;
+ char filepath[256];
+ int i = 0;
- struct mob_skill *ms, gms;
- int mob_id;
- int i =0, j, tmp;
- uint16 sidx = 0;
+ nullpo_retr(false, filename);
- nullpo_retr(false, str);
- mob_id = atoi(str[0]);
+ safesnprintf(filepath, sizeof(filepath), "%s/%s", map->db_path, filename);
- if (mob_id > 0 && mob->db(mob_id) == mob->dummy)
- {
- if (mob_id != last_mob_id) {
- ShowError("mob_parse_row_mobskilldb: Non existant Mob id %d\n", mob_id);
- last_mob_id = mob_id;
+ if (!exists(filepath)) {
+ if (!ignore_missing) {
+ ShowError("mob_skill_db_libconfig: can't find file %s\n", filepath);
+ }
+ return 0;
+ }
+
+ if (!libconfig->load_file(&mob_skill_conf, filepath))
+ return false;
+
+ its = libconfig->lookup(&mob_skill_conf, "mob_skill_db");
+
+ if (its != NULL && (mob_skill = libconfig->setting_get_elem(its, 0)) != NULL) {
+ while ((it = libconfig->setting_get_elem(mob_skill, i++))) {
+ mob->skill_db_libconfig_sub(it, i);
}
+ }
+
+ libconfig->destroy(&mob_skill_conf);
+ ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' entries in '"CL_WHITE"%s"CL_RESET"'.\n", i, filepath);
+ return true;
+}
+
+static bool mob_skill_db_libconfig_sub(struct config_setting_t *it, int n)
+{
+ int i = 0;
+ int mob_id;
+ struct config_setting_t *its;
+ const char *name = config_setting_name(it);
+
+ nullpo_retr(false, it);
+
+ if (!*name) {
+ ShowWarning("mob_skill_db_libconfig_sub: Invalid value for monster name, entry #%d, skipping.\n", n);
+ return false;
+ }
+ if (!script->get_constant(name, &mob_id)) {
+ ShowWarning("mob_skill_db_libconfig_sub: Invalid monster '%s', entry #%d, skipping.\n", name, n);
+ return false;
+ }
+ if (mob_id > 0 && mob->db(mob_id) == mob->dummy) {
+ ShowWarning("mob_skill_db_libconfig_sub: Non existant monster id %d, skipping.\n", mob_id);
return false;
}
- if( strcmp(str[1],"clear")==0 ){
- if (mob_id < 0)
+
+ while ((its = libconfig->setting_get_elem(it, i++))) {
+ mob->skill_db_libconfig_sub_skill(its, i, mob_id);
+ }
+ return true;
+}
+
+static bool mob_skill_db_libconfig_sub_skill(struct config_setting_t *it, int n, int mob_id)
+{
+ int i, j, idx = 0;
+ int i32;
+ int skill_id = 0;
+ int skill_idx = 0;
+ bool clearskills = false;
+ const char *name = config_setting_name(it);
+ struct mob_skill *ms, gms;
+
+ nullpo_retr(false, it);
+ Assert_retr(false, mob_id <= 0 || mob->db(mob_id) != mob->dummy);
+
+ if (!(skill_id = skill->name2id(name))) {
+ ShowWarning("mob_skill_db_libconfig_sub_skill: Non existant skill id %d in monster %d, skipping.\n", skill_id, mob_id);
+ return false;
+ }
+
+ // If ClearSkills flag is enabled clear all the previous skills.
+ if (libconfig->setting_lookup_bool_real(it, "ClearSkills", &clearskills) && clearskills) {
+ if (mob_id < 0) // Clearing skills globaly is not supported
return false;
- memset(mob->db_data[mob_id]->skill,0,sizeof(struct mob_skill) * MAX_MOBSKILL);
- mob->db_data[mob_id]->maxskill=0;
+ memset(mob->db_data[mob_id]->skill, 0, sizeof(struct mob_skill) * MAX_MOBSKILL);
+ mob->db_data[mob_id]->maxskill = 0;
return true;
}
if (mob_id < 0) {
- //Prepare global skill. [Skotlex]
+ // Prepare global skill. [Skotlex]
memset(&gms, 0, sizeof (struct mob_skill));
ms = &gms;
} else {
- ARR_FIND( 0, MAX_MOBSKILL, i, (ms = &mob->db_data[mob_id]->skill[i])->skill_id == 0 );
- if( i == MAX_MOBSKILL )
- {
- if (mob_id != last_mob_id) {
- ShowError("mob_parse_row_mobskilldb: Too many skills for monster %d[%s]\n", mob_id, mob->db_data[mob_id]->sprite);
- last_mob_id = mob_id;
- }
+ ARR_FIND(0, MAX_MOBSKILL, idx, (ms = &mob->db_data[mob_id]->skill[idx])->skill_id == 0);
+ if (idx == MAX_MOBSKILL) {
+ ShowError("mob_skill_db_libconfig_sub_skill: Too many skills for monster %d\n", mob_id);
return false;
}
}
+ ms->skill_id = skill_id;
- //State
- ARR_FIND( 0, ARRAYLENGTH(state), j, strcmp(str[2],state[j].str) == 0 );
- if( j < ARRAYLENGTH(state) )
- ms->state = state[j].id;
- else {
- ShowWarning("mob_parse_row_mobskilldb: Unrecognized state %s\n", str[2]);
- ms->state = MSS_ANY;
+ if (mob->lookup_const(it, "SkillState", &i32) && (i32 < MSS_ANY || i32 > MSS_ANYTARGET)) {
+ ShowWarning("mob_skill_db_libconfig_sub_skill: Invalid skill state %d for skill id %d in monster %d, defaulting to MSS_ANY.\n", i32, skill_id, mob_id);
+ i32 = MSS_ANY;
}
+ ms->state = i32;
- //Skill ID
- j=atoi(str[3]);
- if ( !(sidx = skill->get_index(j) ) ) {
- if (mob_id < 0)
- ShowError("mob_parse_row_mobskilldb: Invalid Skill ID (%d) for all mobs\n", j);
- else
- ShowError("mob_parse_row_mobskilldb: Invalid Skill ID (%d) for mob %d (%s)\n", j, mob_id, mob->db_data[mob_id]->sprite);
- return false;
- }
- ms->skill_id=j;
-
- //Skill lvl
- j= atoi(str[4])<=0 ? 1 : atoi(str[4]);
- ms->skill_lv= j>battle_config.mob_max_skilllvl ? battle_config.mob_max_skilllvl : j; //we strip max skill level
+ if (!libconfig->setting_lookup_int(it, "SkillLevel", &i32) || i32 <= 0)
+ i32 = 1;
+ ms->skill_lv = i32 > battle_config.mob_max_skilllvl ? battle_config.mob_max_skilllvl : i32; //we strip max skill level
//Apply battle_config modifiers to rate (permillage) and delay [Skotlex]
- tmp = atoi(str[5]);
+ if (libconfig->setting_lookup_int(it, "Rate", &i32))
+ ms->permillage = i32;
+
if (battle_config.mob_skill_rate != 100)
- tmp = tmp*battle_config.mob_skill_rate/100;
- if (tmp > 10000)
- ms->permillage= 10000;
- else if (!tmp && battle_config.mob_skill_rate)
- ms->permillage= 1;
- else
- ms->permillage= tmp;
- ms->casttime=atoi(str[6]);
- ms->delay=atoi(str[7]);
+ ms->permillage = ms->permillage * battle_config.mob_skill_rate / 100;
+ if (ms->permillage > 10000)
+ ms->permillage = 10000;
+ else if (ms->permillage == 0 && battle_config.mob_skill_rate)
+ ms->permillage = 1;
+
+ if (libconfig->setting_lookup_int(it, "CastTime", &i32) && i32 > 0)
+ ms->casttime = i32;
+
+ if (libconfig->setting_lookup_int(it, "Delay", &i32))
+ ms->delay = i32;
if (battle_config.mob_skill_delay != 100)
- ms->delay = ms->delay*battle_config.mob_skill_delay/100;
+ ms->delay = ms->delay * battle_config.mob_skill_delay / 100;
if (ms->delay < 0 || ms->delay > MOB_MAX_DELAY) //time overflow?
ms->delay = MOB_MAX_DELAY;
- ms->cancel=atoi(str[8]);
- if( strcmp(str[8],"yes")==0 ) ms->cancel=1;
-
- //Target
- ARR_FIND( 0, ARRAYLENGTH(target), j, strcmp(str[9],target[j].str) == 0 );
- if( j < ARRAYLENGTH(target) )
- ms->target = target[j].id;
- else {
- ShowWarning("mob_parse_row_mobskilldb: Unrecognized target %s for %d\n", str[9], mob_id);
+
+ if (libconfig->setting_lookup_bool(it, "Cancelable", &i32))
+ ms->cancel = (i32 == 0) ? 0 : 1;
+
+ if (mob->lookup_const(it, "SkillTarget", &i32) && (i32 < MST_TARGET || i32 > MST_AROUND)) {
+ ShowWarning("mob_skill_db_libconfig_sub_skill: Invalid skill target %d for skill id %d in monster %d, defaulting to MST_TARGET.\n", i32, skill_id, mob_id);
ms->target = MST_TARGET;
}
+ ms->target = i32;
//Check that the target condition is right for the skill type. [Skotlex]
- if ( skill->get_casttype2(sidx) == CAST_GROUND) {//Ground skill.
+ skill_idx = skill->get_index(skill_id);
+ if (skill->get_casttype2(skill_idx) == CAST_GROUND) {//Ground skill.
if (ms->target > MST_AROUND) {
- ShowWarning("mob_parse_row_mobskilldb: Wrong mob skill target for ground skill %d (%s) for %s.\n",
- ms->skill_id, skill->dbs->db[sidx].name,
- mob_id < 0?"all mobs":mob->db_data[mob_id]->sprite);
+ ShowWarning("mob_skill_db_libconfig_sub_skill: Wrong mob skill target for ground skill %d (%s) for %s.\n",
+ ms->skill_id, skill->dbs->db[skill_idx].name,
+ mob_id < 0 ? "all mobs" : mob->db_data[mob_id]->sprite);
ms->target = MST_TARGET;
}
} else if (ms->target > MST_MASTER) {
- ShowWarning("mob_parse_row_mobskilldb: Wrong mob skill target 'around' for non-ground skill %d (%s) for %s.\n",
- ms->skill_id, skill->dbs->db[sidx].name,
- mob_id < 0?"all mobs":mob->db_data[mob_id]->sprite);
+ ShowWarning("mob_skill_db_libconfig_sub_skill: Wrong mob skill target 'around' for non-ground skill %d (%s) for %s.\n",
+ ms->skill_id, skill->dbs->db[skill_idx].name,
+ mob_id < 0 ? "all mobs" : mob->db_data[mob_id]->sprite);
ms->target = MST_TARGET;
}
- //Cond1
- ARR_FIND( 0, ARRAYLENGTH(cond1), j, strcmp(str[10],cond1[j].str) == 0 );
- if( j < ARRAYLENGTH(cond1) )
- ms->cond1 = cond1[j].id;
- else {
- ShowWarning("mob_parse_row_mobskilldb: Unrecognized condition 1 %s for %d\n", str[10], mob_id);
- ms->cond1 = -1;
+ if (mob->lookup_const(it, "CastCondition", &i32) && (i32 < MSC_ALWAYS || i32 > MSC_SPAWN)) {
+ ShowWarning("mob_skill_db_libconfig_sub_skill: Invalid skill condition %d for skill id %d in monster %d, defaulting to MSC_ALWAYS.\n", i32, skill_id, mob_id);
+ ms->cond1 = MSC_ALWAYS;
}
+ ms->cond1 = i32;
- //Cond2
- // numeric value
- ms->cond2 = atoi(str[11]);
- // or special constant
- ARR_FIND( 0, ARRAYLENGTH(cond2), j, strcmp(str[11],cond2[j].str) == 0 );
- if( j < ARRAYLENGTH(cond2) )
- ms->cond2 = cond2[j].id;
+ if (mob->lookup_const(it, "ConditionData", &i32))
+ ms->cond2 = i32;
- ms->val[0]=(int)strtol(str[12],NULL,0);
- ms->val[1]=(int)strtol(str[13],NULL,0);
- ms->val[2]=(int)strtol(str[14],NULL,0);
- ms->val[3]=(int)strtol(str[15],NULL,0);
- ms->val[4]=(int)strtol(str[16],NULL,0);
+ for (i = 0; i < 5; i++) {
+ char valname[16];
+ sprintf(valname, "val%1d", i);
+ if (libconfig->setting_lookup_int(it, valname, &i32))
+ ms->val[i] = i32;
+ }
if (ms->skill_id == NPC_EMOTION) {
ms->val[1] &= MD_MASK;
ms->val[2] &= MD_MASK;
ms->val[3] &= MD_MASK;
+
+ if (mob_id > 0 && (uint32)ms->val[1] == mob->db(mob_id)->status.mode) {
+ ms->val[1] = MD_NONE;
+ ms->val[4] = 1; //request to return mode to normal.
+ }
}
- if (ms->skill_id == NPC_EMOTION && mob_id > 0
- && (uint32)ms->val[1] == mob->db(mob_id)->status.mode) {
- ms->val[1] = MD_NONE;
- ms->val[4] = 1; //request to return mode to normal.
- }
- if (ms->skill_id == NPC_EMOTION_ON && mob_id>0 && ms->val[1] != MD_NONE) {
+
+ if (ms->skill_id == NPC_EMOTION_ON && mob_id > 0 && ms->val[1] != MD_NONE) {
//Adds a mode to the mob.
//Remove aggressive mode when the new mob type is passive.
- if (!(ms->val[1]&MD_AGGRESSIVE))
+ if (!(ms->val[1] & MD_AGGRESSIVE))
ms->val[3] |= MD_AGGRESSIVE;
ms->val[2] |= (uint32)ms->val[1]; //Add the new mode.
ms->val[1] = MD_NONE; //Do not "set" it.
}
- if(*str[17])
- ms->emotion=atoi(str[17]);
+ if (libconfig->setting_lookup_int(it, "Emotion", &i32))
+ ms->emotion = i32;
else
- ms->emotion=-1;
+ ms->emotion = -1;
- if(str[18]!=NULL && mob->chat_db[atoi(str[18])]!=NULL)
- ms->msg_id=atoi(str[18]);
- else
- ms->msg_id=0;
+ if (libconfig->setting_lookup_int(it, "ChatMsgID", &i32) && i32 > 0 && i32 <= MAX_MOB_CHAT) {
+ if (mob->chat_db[i32] == NULL) {
+ ShowWarning("mob_skill_db_libconfig_sub_skill: Invalid msg id %d for skill id %d in monster %d, ignoring.\n", i32, skill_id, mob_id);
+ } else {
+ ms->msg_id = i32;
+ }
+ }
if (mob_id < 0) {
- //Set this skill to ALL mobs. [Skotlex]
+ // Set this skill to ALL mobs. [Skotlex]
mob_id *= -1;
- for (i = 1; i < MAX_MOB_DB; i++)
- {
+ for (i = 1; i < MAX_MOB_DB; i++) {
if (mob->db_data[i] == NULL)
continue;
- if (mob->db_data[i]->status.mode&MD_BOSS)
- {
- if (!(mob_id&2)) //Skill not for bosses
+ if (mob->db_data[i]->status.mode & MD_BOSS) {
+ if (!(mob_id & 2)) //Skill not for bosses
continue;
- } else
- if (!(mob_id&1)) //Skill not for normal enemies.
+ } else {
+ if (!(mob_id & 1)) //Skill not for normal enemies.
continue;
-
- ARR_FIND( 0, MAX_MOBSKILL, j, mob->db_data[i]->skill[j].skill_id == 0 );
- if(j==MAX_MOBSKILL)
+ }
+ ARR_FIND(0, MAX_MOBSKILL, j, mob->db_data[i]->skill[j].skill_id == 0);
+ if (j == MAX_MOBSKILL)
continue;
- memcpy (&mob->db_data[i]->skill[j], ms, sizeof(struct mob_skill));
- mob->db_data[i]->maxskill=j+1;
+ memcpy(&mob->db_data[i]->skill[j], ms, sizeof(struct mob_skill));
+ mob->db_data[i]->maxskill = j + 1;
}
- } else //Skill set on a single mob.
- mob->db_data[mob_id]->maxskill=i+1;
+ } else { //Skill set on a single mob.
+ mob->db_data[mob_id]->maxskill = idx + 1;
+ }
return true;
}
+
/*==========================================
* mob_skill_db.txt reading
*------------------------------------------*/
-void mob_readskilldb(void) {
- const char* filename[] = {
- DBPATH"mob_skill_db.txt",
- "mob_skill_db2.txt" };
- int fi;
+static void mob_readskilldb(void)
+{
- if( battle_config.mob_skill_rate == 0 ) {
+ const char *filename[] = {
+ DBPATH"mob_skill_db.conf",
+ "mob_skill_db2.conf"
+ };
+ int i;
+
+ if (battle_config.mob_skill_rate == 0) {
ShowStatus("Mob skill use disabled. Not reading mob skills.\n");
return;
}
- for( fi = 0; fi < ARRAYLENGTH(filename); ++fi ) {
- if(fi > 0) {
- char filepath[256];
- snprintf(filepath, 256, "%s/%s", map->db_path, filename[fi]);
- if(!exists(filepath)) {
- continue;
- }
- }
-
- sv->readdb(map->db_path, filename[fi], ',', 19, 19, -1, mob->parse_row_mobskilldb);
+ for (i = 0; i < ARRAYLENGTH(filename); ++i) {
+ mob->skill_db_libconfig(filename[i], i > 0 ? true : false);
}
}
/*==========================================
* mob_race2_db.txt reading
*------------------------------------------*/
-bool mob_readdb_race2(char* fields[], int columns, int current)
+static bool mob_readdb_race2(char *fields[], int columns, int current)
{
int race, i;
@@ -5102,9 +5173,10 @@ bool mob_readdb_race2(char* fields[], int columns, int current)
/**
* Read mob_item_ratio.txt
*/
-bool mob_readdb_itemratio(char* str[], int columns, int current)
+static bool mob_readdb_itemratio(char *str[], int columns, int current)
{
int nameid, ratio, i;
+ struct item_drop_ratio *dropRatio;
nullpo_retr(false, str);
nameid = atoi(str[0]);
@@ -5117,12 +5189,15 @@ bool mob_readdb_itemratio(char* str[], int columns, int current)
ratio = atoi(str[1]);
- if(item_drop_ratio_db[nameid] == NULL)
- item_drop_ratio_db[nameid] = (struct item_drop_ratio*)aCalloc(1, sizeof(struct item_drop_ratio));
+ dropRatio = mob->get_item_drop_ratio(nameid);
+ if (dropRatio == NULL) {
+ dropRatio = (struct item_drop_ratio*)aCalloc(1, sizeof(struct item_drop_ratio));
+ mob->set_item_drop_ratio(nameid, dropRatio);
+ }
- item_drop_ratio_db[nameid]->drop_ratio = ratio;
- for(i = 0; i < columns-2; i++)
- item_drop_ratio_db[nameid]->mob_id[i] = atoi(str[i+2]);
+ dropRatio->drop_ratio = ratio;
+ for (i = 0; i < columns - 2; i++)
+ dropRatio->mob_id[i] = atoi(str[i + 2]);
return true;
}
@@ -5130,7 +5205,8 @@ bool mob_readdb_itemratio(char* str[], int columns, int current)
/**
* read all mob-related databases
*/
-void mob_load(bool minimal) {
+static void mob_load(bool minimal)
+{
if (minimal) {
// Only read the mob db in minimal mode
mob->readdb();
@@ -5145,7 +5221,21 @@ void mob_load(bool minimal) {
sv->readdb(map->db_path, DBPATH"mob_race2_db.txt", ',', 2, 20, -1, mob->readdb_race2);
}
-void mob_reload(void) {
+/**
+ * @see DBApply
+ */
+static int mob_final_ratio_sub(union DBKey key, struct DBData *data, va_list ap)
+{
+ struct item_drop_ratio *ratio = DB->data2ptr(data);
+
+ if (ratio)
+ aFree(ratio);
+
+ return 0;
+}
+
+static void mob_reload(void)
+{
int i;
//Mob skills need to be cleared before re-reading them. [Skotlex]
@@ -5162,6 +5252,7 @@ void mob_reload(void) {
item_drop_ratio_db[i] = NULL;
}
}
+ mob->item_drop_ratio_other_db->clear(mob->item_drop_ratio_other_db, mob->final_ratio_sub);
mob->load(false);
}
@@ -5169,7 +5260,7 @@ void mob_reload(void) {
/**
* Clears spawn related information for a script reload.
*/
-void mob_clear_spawninfo(void)
+static void mob_clear_spawninfo(void)
{
int i;
for (i = 0; i < MAX_MOB_DB; i++)
@@ -5180,7 +5271,8 @@ void mob_clear_spawninfo(void)
/*==========================================
* Circumference initialization of mob
*------------------------------------------*/
-int do_init_mob(bool minimal) {
+static int do_init_mob(bool minimal)
+{
// Initialize the mob database
memset(mob->db_data,0,sizeof(mob->db_data)); //Clear the array
mob->db_data[0] = (struct mob_db*)aCalloc(1, sizeof (struct mob_db)); //This mob is used for random spawns
@@ -5200,13 +5292,14 @@ int do_init_mob(bool minimal) {
timer->add_func_list(mob->timer_delete,"mob_timer_delete");
timer->add_func_list(mob->spawn_guardian_sub,"mob_spawn_guardian_sub");
timer->add_func_list(mob->respawn,"mob_respawn");
+ timer->add_func_list(mob->mvptomb_delayspawn, "mvptomb_delayspawn");
timer->add_interval(timer->gettick()+MIN_MOBTHINKTIME,mob->ai_hard,0,0,MIN_MOBTHINKTIME);
timer->add_interval(timer->gettick()+MIN_MOBTHINKTIME*10,mob->ai_lazy,0,0,MIN_MOBTHINKTIME*10);
return 0;
}
-void mob_destroy_mob_db(int index)
+static void mob_destroy_mob_db(int index)
{
struct mob_db *data;
Assert_retv(index >= 0 && index <= MAX_MOB_DB);
@@ -5219,7 +5312,7 @@ void mob_destroy_mob_db(int index)
/*==========================================
* Clean memory usage.
*------------------------------------------*/
-int do_final_mob(void)
+static int do_final_mob(void)
{
int i;
if (mob->dummy)
@@ -5250,12 +5343,15 @@ int do_final_mob(void)
item_drop_ratio_db[i] = NULL;
}
}
+ mob->item_drop_ratio_other_db->clear(mob->item_drop_ratio_other_db, mob->final_ratio_sub);
+ db_destroy(mob->item_drop_ratio_other_db);
ers_destroy(item_drop_ers);
ers_destroy(item_drop_list_ers);
return 0;
}
-void mob_defaults(void) {
+void mob_defaults(void)
+{
// Defines the Manuk/Splendide/Mora mob groups for the status reductions [Epoque & Frost]
const int mob_manuk[8] = {
MOBID_TATACHO,
@@ -5292,6 +5388,10 @@ void mob_defaults(void) {
memcpy(mob->splendide, mob_splendide, sizeof(mob->splendide));
memcpy(mob->mora, mob_mora, sizeof(mob->mora));
+ item_drop_ratio_other_db = idb_alloc(DB_OPT_BASE);
+ mob->item_drop_ratio_db = item_drop_ratio_db;
+ mob->item_drop_ratio_other_db = item_drop_ratio_other_db;
+
/* */
mob->reload = mob_reload;
mob->init = do_init_mob;
@@ -5306,6 +5406,8 @@ void mob_defaults(void) {
mob->db_searchname_array_sub = mobdb_searchname_array_sub;
mob->mvptomb_create = mvptomb_create;
mob->mvptomb_destroy = mvptomb_destroy;
+ mob->mvptomb_spawn_delayed = mvptomb_spawn_delayed;
+ mob->mvptomb_delayspawn = mvptomb_delayspawn;
mob->db_searchname_array = mobdb_searchname_array;
mob->db_checkid = mobdb_checkid;
mob->get_viewdata = mob_get_viewdata;
@@ -5390,11 +5492,16 @@ void mob_defaults(void) {
mob->read_randommonster = mob_read_randommonster;
mob->parse_row_chatdb = mob_parse_row_chatdb;
mob->readchatdb = mob_readchatdb;
- mob->parse_row_mobskilldb = mob_parse_row_mobskilldb;
mob->readskilldb = mob_readskilldb;
mob->readdb_race2 = mob_readdb_race2;
mob->readdb_itemratio = mob_readdb_itemratio;
mob->load = mob_load;
+ mob->get_item_drop_ratio = mob_get_item_drop_ratio;
+ mob->set_item_drop_ratio = mob_set_item_drop_ratio;
+ mob->final_ratio_sub = mob_final_ratio_sub;
mob->clear_spawninfo = mob_clear_spawninfo;
mob->destroy_mob_db = mob_destroy_mob_db;
+ mob->skill_db_libconfig = mob_skill_db_libconfig;
+ mob->skill_db_libconfig_sub = mob_skill_db_libconfig_sub;
+ mob->skill_db_libconfig_sub_skill = mob_skill_db_libconfig_sub_skill;
}
diff --git a/src/map/mob.h b/src/map/mob.h
index 7f2accedf..4cb3877ed 100644
--- a/src/map/mob.h
+++ b/src/map/mob.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -25,6 +25,7 @@
#include "map/status.h" // struct status_data, struct status_change
#include "map/unit.h" // struct unit_data, view_data
#include "common/hercules.h"
+#include "common/db.h"
#include "common/mmo.h" // struct item
struct hplugin_data_store;
@@ -60,6 +61,9 @@ struct hplugin_data_store;
#define MAX_MOB_CHAT 250 //Max Skill's messages
+#define DEFAULT_MOB_NAME "--en--"
+#define DEFAULT_MOB_JNAME "--ja--"
+
// On official servers, monsters will only seek targets that are closer to walk to than their
// search range. The search range is affected depending on if the monster is walking or not.
// On some maps there can be a quite long path for just walking two cells in a direction and
@@ -69,6 +73,14 @@ struct hplugin_data_store;
// Disable this to make monsters not do any path search when looking for a target (old behavior).
#define ACTIVEPATHSEARCH
+struct item_drop_ratio;
+
+enum e_bosstype {
+ BTYPE_NONE = 0,
+ BTYPE_BOSS = 1,
+ BTYPE_MVP = 2,
+};
+
//Mob skill states.
enum MobSkillState {
MSS_ANY = -1,
@@ -181,10 +193,10 @@ struct mob_data {
unsigned int spotted: 1;
unsigned int npc_killmonster: 1; //for new killmonster behavior
unsigned int rebirth: 1; // NPC_Rebirth used
- unsigned int boss : 1;
enum MobSkillState skillstate;
unsigned char steal_flag; //number of steal tries (to prevent steal exploit on mobs with few items) [Lupus]
unsigned char attacked_count; //For rude attacked.
+ uint8 boss;
int provoke_flag; // Celest
} state;
struct guardian_data* guardian_data;
@@ -202,6 +214,7 @@ struct mob_data {
int target_id,attacked_id;
int areanpc_id; //Required in OnTouchNPC (to avoid multiple area touchs)
unsigned int bg_id; // BattleGround System
+ int clan_id; // Clan System
int64 next_walktime, last_thinktime, last_linktime, last_pcneartime, dmgtick;
short move_fail_count;
@@ -400,6 +413,7 @@ enum mob_id {
// The data structures for storing delayed item drops
struct item_drop {
struct item item_data;
+ bool showdropeffect;
struct item_drop* next;
};
struct item_drop_list {
@@ -426,6 +440,8 @@ struct mob_interface {
int manuk[8];
int splendide[5];
int mora[5];
+ struct item_drop_ratio **item_drop_ratio_db;
+ struct DBMap *item_drop_ratio_other_db;
/* */
int (*init) (bool mimimal);
int (*final) (void);
@@ -439,6 +455,8 @@ struct mob_interface {
int (*db_searchname) (const char *str);
int (*db_searchname_array_sub) (struct mob_db *monster, const char *str, int flag);
// MvP Tomb System
+ void (*mvptomb_spawn_delayed) (struct npc_data *nd);
+ int (*mvptomb_delayspawn) (int tid, int64 tick, int id, intptr_t data);
void (*mvptomb_create) (struct mob_data *md, char *killer, time_t time);
void (*mvptomb_destroy) (struct mob_data *md);
int (*db_searchname_array) (struct mob_db **data, int size, const char *str, int flag);
@@ -525,13 +543,18 @@ struct mob_interface {
int (*read_randommonster) (void);
bool (*parse_row_chatdb) (char **str, const char *source, int line, int *last_msg_id);
void (*readchatdb) (void);
- bool (*parse_row_mobskilldb) (char **str, int columns, int current);
void (*readskilldb) (void);
bool (*readdb_race2) (char *fields[], int columns, int current);
bool (*readdb_itemratio) (char *str[], int columns, int current);
void (*load) (bool minimal);
void (*clear_spawninfo) (void);
+ struct item_drop_ratio *(*get_item_drop_ratio) (int nameid);
+ void (*set_item_drop_ratio) (int nameid, struct item_drop_ratio *ratio);
+ int (*final_ratio_sub) (union DBKey key, struct DBData *data, va_list ap);
void (*destroy_mob_db) (int index);
+ bool (*skill_db_libconfig) (const char *filename, bool ignore_missing);
+ bool (*skill_db_libconfig_sub) (struct config_setting_t *it, int n);
+ bool (*skill_db_libconfig_sub_skill) (struct config_setting_t *it, int n, int mob_id);
};
#ifdef HERCULES_CORE
diff --git a/src/map/npc.c b/src/map/npc.c
index a824d4216..7e1dab1b2 100644
--- a/src/map/npc.c
+++ b/src/map/npc.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -25,6 +25,7 @@
#include "map/battle.h"
#include "map/chat.h"
+#include "map/clan.h"
#include "map/clif.h"
#include "map/guild.h"
#include "map/instance.h"
@@ -39,6 +40,7 @@
#include "map/skill.h"
#include "map/status.h"
#include "map/unit.h"
+#include "map/achievement.h"
#include "common/HPM.h"
#include "common/cbasetypes.h"
#include "common/db.h"
@@ -59,7 +61,7 @@
#include <string.h>
#include <time.h>
-struct npc_interface npc_s;
+static struct npc_interface npc_s;
struct npc_interface *npc;
@@ -68,7 +70,7 @@ static struct view_data npc_viewdb[MAX_NPC_CLASS];
static struct view_data npc_viewdb2[MAX_NPC_CLASS2_END-MAX_NPC_CLASS2_START];
/* for speedup */
-unsigned int npc_market_qty[MAX_INVENTORY];
+static unsigned int npc_market_qty[MAX_INVENTORY];
static struct script_event_s {
//Holds pointers to the commonly executed scripts for speedup. [Skotlex]
@@ -82,7 +84,7 @@ static struct script_event_s {
* @param class_ The NPC class ID.
* @return The viewdata, or NULL if the ID is invalid.
*/
-struct view_data *npc_get_viewdata(int class_)
+static struct view_data *npc_get_viewdata(int class_)
{
if (class_ == INVISIBLE_CLASS)
return &npc_viewdb[0];
@@ -104,7 +106,7 @@ struct view_data *npc_get_viewdata(int class_)
* @param id The NPC ID to validate.
* @return Whether the value is a valid ID.
*/
-bool npc_db_checkid(int id)
+static bool npc_db_checkid(int id)
{
if (id >= WARP_CLASS && id <= 125) // First subrange
return true;
@@ -114,13 +116,16 @@ bool npc_db_checkid(int id)
return true;
if (id >= MAX_NPC_CLASS2_START && id < MAX_NPC_CLASS2_END) // Second range
return true;
+ if (pc->db_checkid(id))
+ return true;
// Anything else is invalid
return false;
}
/// Returns a new npc id that isn't being used in id_db.
/// Fatal error if nothing is available.
-int npc_get_new_npc_id(void) {
+static int npc_get_new_npc_id(void)
+{
if (npc->npc_id >= START_NPC_NUM && !map->blid_exists(npc->npc_id))
return npc->npc_id++;// available
else {// find next id
@@ -137,7 +142,7 @@ int npc_get_new_npc_id(void) {
}
}
-int npc_isnear_sub(struct block_list *bl, va_list args)
+static int npc_isnear_sub(struct block_list *bl, va_list args)
{
const struct npc_data *nd = NULL;
@@ -154,7 +159,8 @@ int npc_isnear_sub(struct block_list *bl, va_list args)
return 1;
}
-bool npc_isnear(struct block_list * bl) {
+static bool npc_isnear(struct block_list *bl)
+{
if( battle_config.min_npc_vendchat_distance > 0
&& map->foreachinrange(npc->isnear_sub,bl, battle_config.min_npc_vendchat_distance, BL_NPC) )
return true;
@@ -162,7 +168,7 @@ bool npc_isnear(struct block_list * bl) {
return false;
}
-int npc_ontouch_event(struct map_session_data *sd, struct npc_data *nd)
+static int npc_ontouch_event(struct map_session_data *sd, struct npc_data *nd)
{
char name[EVENT_NAME_LENGTH];
@@ -177,7 +183,7 @@ int npc_ontouch_event(struct map_session_data *sd, struct npc_data *nd)
return npc->event(sd,name,1);
}
-int npc_ontouch2_event(struct map_session_data *sd, struct npc_data *nd)
+static int npc_ontouch2_event(struct map_session_data *sd, struct npc_data *nd)
{
char name[EVENT_NAME_LENGTH];
@@ -190,7 +196,7 @@ int npc_ontouch2_event(struct map_session_data *sd, struct npc_data *nd)
return npc->event(sd, name, 2);
}
-int npc_onuntouch_event(struct map_session_data *sd, struct npc_data *nd)
+static int npc_onuntouch_event(struct map_session_data *sd, struct npc_data *nd)
{
char name[EVENT_NAME_LENGTH];
@@ -206,7 +212,7 @@ int npc_onuntouch_event(struct map_session_data *sd, struct npc_data *nd)
/*==========================================
* Sub-function of npc_enable, runs OnTouch event when enabled
*------------------------------------------*/
-int npc_enable_sub(struct block_list *bl, va_list ap)
+static int npc_enable_sub(struct block_list *bl, va_list ap)
{
struct npc_data *nd;
@@ -234,7 +240,7 @@ int npc_enable_sub(struct block_list *bl, va_list ap)
/*==========================================
* Disable / Enable NPC
*------------------------------------------*/
-int npc_enable(const char* name, int flag)
+static int npc_enable(const char *name, int flag)
{
struct npc_data* nd = npc->name2id(name);
@@ -272,7 +278,7 @@ int npc_enable(const char* name, int flag)
/*==========================================
* NPC lookup (get npc_data through npcname)
*------------------------------------------*/
-struct npc_data *npc_name2id(const char *name)
+static struct npc_data *npc_name2id(const char *name)
{
return strdb_get(npc->name_db, name);
}
@@ -282,7 +288,8 @@ struct npc_data *npc_name2id(const char *name)
/**
* Timer to check for idle time and timeout the dialog if necessary
**/
-int npc_rr_secure_timeout_timer(int tid, int64 tick, int id, intptr_t data) {
+static int npc_rr_secure_timeout_timer(int tid, int64 tick, int id, intptr_t data)
+{
#ifdef SECURE_NPCTIMEOUT
struct map_session_data* sd = NULL;
unsigned int timeout = NPC_SECURE_TIMEOUT_NEXT;
@@ -329,7 +336,7 @@ int npc_rr_secure_timeout_timer(int tid, int64 tick, int id, intptr_t data) {
/*==========================================
* Dequeue event and add timer for execution (100ms)
*------------------------------------------*/
-int npc_event_dequeue(struct map_session_data* sd)
+static int npc_event_dequeue(struct map_session_data *sd)
{
nullpo_ret(sd);
@@ -361,7 +368,7 @@ int npc_event_dequeue(struct map_session_data* sd)
/**
* @see DBCreateData
*/
-struct DBData npc_event_export_create(union DBKey key, va_list args)
+static struct DBData npc_event_export_create(union DBKey key, va_list args)
{
struct linkdb_node** head_ptr;
CREATE(head_ptr, struct linkdb_node*, 1);
@@ -373,7 +380,7 @@ struct DBData npc_event_export_create(union DBKey key, va_list args)
* exports a npc event label
* called from npc_parse_script
*------------------------------------------*/
-int npc_event_export(struct npc_data *nd, int i)
+static int npc_event_export(struct npc_data *nd, int i)
{
char* lname;
int pos;
@@ -399,13 +406,13 @@ int npc_event_export(struct npc_data *nd, int i)
return 0;
}
-int npc_event_sub(struct map_session_data* sd, struct event_data* ev, const char* eventname); //[Lance]
+static int npc_event_sub(struct map_session_data *sd, struct event_data *ev, const char *eventname); //[Lance]
/**
* Exec name (NPC events) on player or global
* Do on all NPC when called with foreach
*/
-void npc_event_doall_sub(void *key, void *data, va_list ap)
+static void npc_event_doall_sub(void *key, void *data, va_list ap)
{
struct event_data* ev = data;
int* c;
@@ -431,7 +438,7 @@ void npc_event_doall_sub(void *key, void *data, va_list ap)
}
// runs the specified event (supports both single-npc and global events)
-int npc_event_do(const char* name)
+static int npc_event_do(const char *name)
{
nullpo_ret(name);
if( name[0] == ':' && name[1] == ':' ) {
@@ -448,7 +455,7 @@ int npc_event_do(const char* name)
}
// runs the specified event, with a RID attached (global only)
-int npc_event_doall_id(const char* name, int rid)
+static int npc_event_doall_id(const char *name, int rid)
{
int c = 0;
struct linkdb_node **label_linkdb = strdb_get(npc->ev_label_db, name);
@@ -461,7 +468,7 @@ int npc_event_doall_id(const char* name, int rid)
}
// runs the specified event (global only)
-int npc_event_doall(const char* name)
+static int npc_event_doall(const char *name)
{
return npc->event_doall_id(name, 0);
}
@@ -470,7 +477,8 @@ int npc_event_doall(const char* name)
* Clock event execution
* OnMinute/OnClock/OnHour/OnDay/OnDDHHMM
*------------------------------------------*/
-int npc_event_do_clock(int tid, int64 tick, int id, intptr_t data) {
+static int npc_event_do_clock(int tid, int64 tick, int id, intptr_t data)
+{
static struct tm ev_tm_b; // tracks previous execution time
time_t clock;
struct tm* t;
@@ -522,7 +530,7 @@ int npc_event_do_clock(int tid, int64 tick, int id, intptr_t data) {
* OnInit event execution (the start of the event and watch)
* @param reload Is the server reloading?
**/
-void npc_event_do_oninit( bool reload )
+static void npc_event_do_oninit(bool reload)
{
ShowStatus("Event '"CL_WHITE"OnInit"CL_RESET"' executed with '"CL_WHITE"%d"CL_RESET"' NPCs."CL_CLL"\n", npc->event_doall("OnInit"));
@@ -535,7 +543,7 @@ void npc_event_do_oninit( bool reload )
* Incorporation of the label for the timer event
* called from npc_parse_script
*------------------------------------------*/
-int npc_timerevent_export(struct npc_data *nd, int i)
+static int npc_timerevent_export(struct npc_data *nd, int i)
{
int t = 0, len = 0;
char *lname;
@@ -574,7 +582,7 @@ struct timer_event_data {
/*==========================================
* triger 'OnTimerXXXX' events
*------------------------------------------*/
-int npc_timerevent(int tid, int64 tick, int id, intptr_t data)
+static int npc_timerevent(int tid, int64 tick, int id, intptr_t data)
{
int old_rid, old_timer;
int64 old_tick;
@@ -645,7 +653,8 @@ int npc_timerevent(int tid, int64 tick, int id, intptr_t data)
/*==========================================
* Start/Resume NPC timer
*------------------------------------------*/
-int npc_timerevent_start(struct npc_data* nd, int rid) {
+static int npc_timerevent_start(struct npc_data *nd, int rid)
+{
int j;
int64 tick = timer->gettick();
struct map_session_data *sd = NULL; //Player to whom script is attached.
@@ -697,7 +706,7 @@ int npc_timerevent_start(struct npc_data* nd, int rid) {
/*==========================================
* Stop NPC timer
*------------------------------------------*/
-int npc_timerevent_stop(struct npc_data* nd)
+static int npc_timerevent_stop(struct npc_data *nd)
{
struct map_session_data *sd = NULL;
int *tid;
@@ -731,7 +740,7 @@ int npc_timerevent_stop(struct npc_data* nd)
/*==========================================
* Aborts a running NPC timer that is attached to a player.
*------------------------------------------*/
-void npc_timerevent_quit(struct map_session_data* sd)
+static void npc_timerevent_quit(struct map_session_data *sd)
{
const struct TimerData *td;
struct npc_data* nd;
@@ -796,7 +805,8 @@ void npc_timerevent_quit(struct map_session_data* sd)
* Get the tick value of an NPC timer
* If it's stopped, return stopped time
*------------------------------------------*/
-int64 npc_gettimerevent_tick(struct npc_data* nd) {
+static int64 npc_gettimerevent_tick(struct npc_data *nd)
+{
int64 tick;
nullpo_ret(nd);
@@ -812,7 +822,7 @@ int64 npc_gettimerevent_tick(struct npc_data* nd) {
/*==========================================
* Set tick for running and stopped timer
*------------------------------------------*/
-int npc_settimerevent_tick(struct npc_data* nd, int newtimer)
+static int npc_settimerevent_tick(struct npc_data *nd, int newtimer)
{
bool flag;
int old_rid;
@@ -836,7 +846,7 @@ int npc_settimerevent_tick(struct npc_data* nd, int newtimer)
return 0;
}
-int npc_event_sub(struct map_session_data* sd, struct event_data* ev, const char* eventname)
+static int npc_event_sub(struct map_session_data *sd, struct event_data *ev, const char *eventname)
{
nullpo_retr(2, sd);
nullpo_retr(2, eventname);
@@ -867,7 +877,7 @@ int npc_event_sub(struct map_session_data* sd, struct event_data* ev, const char
/*==========================================
* NPC processing event type
*------------------------------------------*/
-int npc_event(struct map_session_data* sd, const char* eventname, int ontouch)
+static int npc_event(struct map_session_data *sd, const char *eventname, int ontouch)
{
struct event_data* ev = (struct event_data*)strdb_get(npc->ev_db, eventname);
struct npc_data *nd;
@@ -896,7 +906,8 @@ int npc_event(struct map_session_data* sd, const char* eventname, int ontouch)
/*==========================================
* Sub chk then execute area event type
*------------------------------------------*/
-int npc_touch_areanpc_sub(struct block_list *bl, va_list ap) {
+static int npc_touch_areanpc_sub(struct block_list *bl, va_list ap)
+{
struct map_session_data *sd;
int pc_id;
char *name;
@@ -923,7 +934,8 @@ int npc_touch_areanpc_sub(struct block_list *bl, va_list ap) {
* Chk if sd is still touching his assigned npc.
* If not, it unsets it and searches for another player in range.
*------------------------------------------*/
-int npc_touchnext_areanpc(struct map_session_data* sd, bool leavemap) {
+static int npc_touchnext_areanpc(struct map_session_data *sd, bool leavemap)
+{
struct npc_data *nd;
short xs, ys;
@@ -952,7 +964,7 @@ int npc_touchnext_areanpc(struct map_session_data* sd, bool leavemap) {
/*==========================================
* Exec OnTouch for player if in range of area event
*------------------------------------------*/
-int npc_touch_areanpc(struct map_session_data* sd, int16 m, int16 x, int16 y)
+static int npc_touch_areanpc(struct map_session_data *sd, int16 m, int16 x, int16 y)
{
int xs,ys;
int f = 1;
@@ -1041,7 +1053,7 @@ int npc_touch_areanpc(struct map_session_data* sd, int16 m, int16 x, int16 y)
/*==========================================
* Exec OnUnTouch for player if out range of area event
*------------------------------------------*/
-int npc_untouch_areanpc(struct map_session_data* sd, int16 m, int16 x, int16 y)
+static int npc_untouch_areanpc(struct map_session_data *sd, int16 m, int16 x, int16 y)
{
struct npc_data *nd = NULL;
nullpo_retr(1, sd);
@@ -1063,7 +1075,7 @@ int npc_untouch_areanpc(struct map_session_data* sd, int16 m, int16 x, int16 y)
// OnTouch NPC or Warp for Mobs
// Return 1 if Warped
-int npc_touch_areanpc2(struct mob_data *md)
+static int npc_touch_areanpc2(struct mob_data *md)
{
int i, m, x, y, id;
char eventname[EVENT_NAME_LENGTH];
@@ -1128,7 +1140,8 @@ int npc_touch_areanpc2(struct mob_data *md)
//Flag determines the type of object to check for:
//&1: NPC Warps
//&2: NPCs with on-touch events.
-int npc_check_areanpc(int flag, int16 m, int16 x, int16 y, int16 range) {
+static int npc_check_areanpc(int flag, int16 m, int16 x, int16 y, int16 range)
+{
int i;
int x0,y0,x1,y1;
int xs,ys;
@@ -1187,7 +1200,7 @@ int npc_check_areanpc(int flag, int16 m, int16 x, int16 y, int16 range) {
* Chk if player not too far to access the npc.
* Returns npc_data (success) or NULL (fail).
*------------------------------------------*/
-struct npc_data* npc_checknear(struct map_session_data* sd, struct block_list* bl)
+static struct npc_data *npc_checknear(struct map_session_data *sd, struct block_list *bl)
{
struct npc_data *nd = BL_CAST(BL_NPC, bl);
int distance = AREA_SIZE + 1;
@@ -1220,7 +1233,7 @@ struct npc_data* npc_checknear(struct map_session_data* sd, struct block_list* b
/*==========================================
* Make NPC talk in global chat (like npctalk)
*------------------------------------------*/
-int npc_globalmessage(const char* name, const char* mes)
+static int npc_globalmessage(const char *name, const char *mes)
{
struct npc_data* nd = npc->name2id(name);
char temp[100];
@@ -1238,7 +1251,8 @@ int npc_globalmessage(const char* name, const char* mes)
}
// MvP tomb [GreenBox]
-void run_tomb(struct map_session_data* sd, struct npc_data* nd) {
+static void run_tomb(struct map_session_data *sd, struct npc_data *nd)
+{
char buffer[200];
char time[10];
@@ -1266,7 +1280,7 @@ void run_tomb(struct map_session_data* sd, struct npc_data* nd) {
* NPC 1st call when clicking on npc
* Do specific action for NPC type (openshop, run scripts...)
*------------------------------------------*/
-int npc_click(struct map_session_data* sd, struct npc_data* nd)
+static int npc_click(struct map_session_data *sd, struct npc_data *nd)
{
nullpo_retr(1, sd);
@@ -1320,7 +1334,8 @@ int npc_click(struct map_session_data* sd, struct npc_data* nd)
/*==========================================
*
*------------------------------------------*/
-int npc_scriptcont(struct map_session_data* sd, int id, bool closing) {
+static int npc_scriptcont(struct map_session_data *sd, int id, bool closing)
+{
struct block_list *target = map->id2bl(id);
nullpo_retr(1, sd);
@@ -1369,7 +1384,8 @@ int npc_scriptcont(struct map_session_data* sd, int id, bool closing) {
/*==========================================
* Chk if valid call then open buy or selling list
*------------------------------------------*/
-int npc_buysellsel(struct map_session_data* sd, int id, int type) {
+static int npc_buysellsel(struct map_session_data *sd, int id, int type)
+{
struct npc_data *nd;
nullpo_retr(1, sd);
@@ -1408,9 +1424,9 @@ int npc_buysellsel(struct map_session_data* sd, int id, int type) {
}
/*==========================================
-* Cash Shop Buy List
-*------------------------------------------*/
-int npc_cashshop_buylist(struct map_session_data *sd, int points, struct itemlist *item_list)
+ * Cash Shop Buy List
+ *------------------------------------------*/
+static int npc_cashshop_buylist(struct map_session_data *sd, int points, struct itemlist *item_list)
{
int i, j, new_, w, vt;
struct npc_data *nd = NULL;
@@ -1433,11 +1449,12 @@ int npc_cashshop_buylist(struct map_session_data *sd, int points, struct itemlis
return ERROR_TYPE_NPC;
if( nd->subtype != CASHSHOP ) {
- if( nd->subtype == SCRIPT && nd->u.scr.shop && nd->u.scr.shop->type != NST_ZENY && nd->u.scr.shop->type != NST_MARKET ) {
+ if (nd->subtype == SCRIPT && nd->u.scr.shop && nd->u.scr.shop->type != NST_ZENY && nd->u.scr.shop->type != NST_MARKET && nd->u.scr.shop->type != NST_BARTER) {
shop = nd->u.scr.shop->item;
shop_size = nd->u.scr.shop->items;
- } else
+ } else {
return ERROR_TYPE_NPC;
+ }
} else {
shop = nd->u.shop.shop_item;
shop_size = nd->u.shop.count;
@@ -1511,7 +1528,7 @@ int npc_cashshop_buylist(struct map_session_data *sd, int points, struct itemlis
}
//npc_buylist for script-controlled shops.
-int npc_buylist_sub(struct map_session_data *sd, struct itemlist *item_list, struct npc_data *nd)
+static int npc_buylist_sub(struct map_session_data *sd, struct itemlist *item_list, struct npc_data *nd)
{
char npc_ev[EVENT_NAME_LENGTH];
int i;
@@ -1543,7 +1560,7 @@ int npc_buylist_sub(struct map_session_data *sd, struct itemlist *item_list, str
/**
* Loads persistent NPC Market Data from SQL
**/
-void npc_market_fromsql(void)
+static void npc_market_fromsql(void)
{
struct SqlStmt *stmt = SQL->StmtMalloc(map->mysql_handle);
char name[NAME_LENGTH+1];
@@ -1558,9 +1575,9 @@ void npc_market_fromsql(void)
return;
}
- SQL->StmtBindColumn(stmt, 0, SQLDT_STRING, &name[0], sizeof(name), NULL, NULL);
- SQL->StmtBindColumn(stmt, 1, SQLDT_INT, &itemid, 0, NULL, NULL);
- SQL->StmtBindColumn(stmt, 2, SQLDT_INT, &amount, 0, NULL, NULL);
+ SQL->StmtBindColumn(stmt, 0, SQLDT_STRING, &name, sizeof name, NULL, NULL);
+ SQL->StmtBindColumn(stmt, 1, SQLDT_INT, &itemid, sizeof itemid, NULL, NULL);
+ SQL->StmtBindColumn(stmt, 2, SQLDT_INT, &amount, sizeof amount, NULL, NULL);
while ( SQL_SUCCESS == SQL->StmtNextRow(stmt) ) {
struct npc_data *nd = NULL;
@@ -1568,11 +1585,11 @@ void npc_market_fromsql(void)
if( !(nd = npc->name2id(name)) ) {
ShowError("npc_market_fromsql: NPC '%s' not found! skipping...\n",name);
- npc->market_delfromsql_sub(name, USHRT_MAX);
+ npc->market_delfromsql_sub(name, INT_MAX);
continue;
- } else if ( nd->subtype != SCRIPT || !nd->u.scr.shop || !nd->u.scr.shop->items || nd->u.scr.shop->type != NST_MARKET ) {
+ } else if (nd->subtype != SCRIPT || !nd->u.scr.shop || !nd->u.scr.shop->items || nd->u.scr.shop->type != NST_MARKET) {
ShowError("npc_market_fromsql: NPC '%s' is not proper for market, skipping...\n",name);
- npc->market_delfromsql_sub(name, USHRT_MAX);
+ npc->market_delfromsql_sub(name, INT_MAX);
continue;
}
@@ -1594,9 +1611,10 @@ void npc_market_fromsql(void)
/**
* Saves persistent NPC Market Data into SQL
**/
-void npc_market_tosql(struct npc_data *nd, unsigned short index) {
+static void npc_market_tosql(struct npc_data *nd, int index)
+{
nullpo_retv(nd);
- Assert_retv(index < nd->u.scr.shop->items);
+ Assert_retv(index >= 0 && index < nd->u.scr.shop->items);
if (SQL_ERROR == SQL->Query(map->mysql_handle, "REPLACE INTO `%s` VALUES ('%s','%d','%u')",
map->npc_market_data_db, nd->exname, nd->u.scr.shop->item[index].nameid, nd->u.scr.shop->item[index].qty))
Sql_ShowDebug(map->mysql_handle);
@@ -1604,8 +1622,9 @@ void npc_market_tosql(struct npc_data *nd, unsigned short index) {
/**
* Removes persistent NPC Market Data from SQL
*/
-void npc_market_delfromsql_sub(const char *npcname, unsigned short index) {
- if( index == USHRT_MAX ) {
+static void npc_market_delfromsql_sub(const char *npcname, int index)
+{
+ if (index == INT_MAX ) {
if( SQL_ERROR == SQL->Query(map->mysql_handle, "DELETE FROM `%s` WHERE `name`='%s'", map->npc_market_data_db, npcname) )
Sql_ShowDebug(map->mysql_handle);
} else {
@@ -1617,15 +1636,120 @@ void npc_market_delfromsql_sub(const char *npcname, unsigned short index) {
/**
* Removes persistent NPC Market Data from SQL
**/
-void npc_market_delfromsql(struct npc_data *nd, unsigned short index) {
+static void npc_market_delfromsql(struct npc_data *nd, int index)
+{
nullpo_retv(nd);
- Assert_retv(index == USHRT_MAX || index < nd->u.scr.shop->items);
- npc->market_delfromsql_sub(nd->exname, index == USHRT_MAX ? index : nd->u.scr.shop->item[index].nameid);
+ Assert_retv(index == INT_MAX || (index >= 0 && index < nd->u.scr.shop->items));
+ npc->market_delfromsql_sub(nd->exname, index == INT_MAX ? index : nd->u.scr.shop->item[index].nameid);
+}
+
+/**
+ * Loads persistent NPC Barter Data from SQL
+ **/
+static void npc_barter_fromsql(void)
+{
+ struct SqlStmt *stmt = SQL->StmtMalloc(map->mysql_handle);
+ char name[NAME_LENGTH + 1];
+ int itemid;
+ int amount;
+ int removeId;
+ int removeAmount;
+
+ if (SQL_ERROR == SQL->StmtPrepare(stmt, "SELECT `name`, `itemId`, `amount`, `priceId`, `priceAmount` FROM `%s`", map->npc_barter_data_db)
+ || SQL_ERROR == SQL->StmtExecute(stmt)
+ ) {
+ SqlStmt_ShowDebug(stmt);
+ SQL->StmtFree(stmt);
+ return;
+ }
+
+ SQL->StmtBindColumn(stmt, 0, SQLDT_STRING, &name, sizeof name, NULL, NULL);
+ SQL->StmtBindColumn(stmt, 1, SQLDT_INT, &itemid, sizeof itemid, NULL, NULL);
+ SQL->StmtBindColumn(stmt, 2, SQLDT_UINT32, &amount, sizeof amount, NULL, NULL);
+ SQL->StmtBindColumn(stmt, 3, SQLDT_INT, &removeId, sizeof removeId, NULL, NULL);
+ SQL->StmtBindColumn(stmt, 4, SQLDT_INT, &removeAmount, sizeof removeAmount, NULL, NULL);
+
+ while (SQL_SUCCESS == SQL->StmtNextRow(stmt)) {
+ struct npc_data *nd = NULL;
+ unsigned short i;
+
+ if (!(nd = npc->name2id(name))) {
+ ShowError("npc_barter_fromsql: NPC '%s' not found! skipping...\n",name);
+ npc->barter_delfromsql_sub(name, INT_MAX, 0, 0);
+ continue;
+ } else if (nd->subtype != SCRIPT || !nd->u.scr.shop || !nd->u.scr.shop->items || nd->u.scr.shop->type != NST_BARTER) {
+ ShowError("npc_barter_fromsql: NPC '%s' is not proper for barter, skipping...\n",name);
+ npc->barter_delfromsql_sub(name, INT_MAX, 0, 0);
+ continue;
+ }
+
+ for (i = 0; i < nd->u.scr.shop->items; i++) {
+ struct npc_item_list *const item = &nd->u.scr.shop->item[i];
+ if (item->nameid == itemid && item->value == removeId && item->value2 == removeAmount) {
+ item->qty = amount;
+ break;
+ }
+ }
+
+ if (i == nd->u.scr.shop->items) {
+ ShowError("npc_barter_fromsql: NPC '%s' does not sell item %d (qty %d), deleting...\n", name, itemid, amount);
+ npc->barter_delfromsql_sub(name, itemid, removeId, removeAmount);
+ continue;
+ }
+ }
+ SQL->StmtFree(stmt);
}
+
+/**
+ * Saves persistent NPC Barter Data into SQL
+ **/
+static void npc_barter_tosql(struct npc_data *nd, int index)
+{
+ nullpo_retv(nd);
+ Assert_retv(index >= 0 && index < nd->u.scr.shop->items);
+ const struct npc_item_list *const item = &nd->u.scr.shop->item[index];
+ if (SQL_ERROR == SQL->Query(map->mysql_handle, "REPLACE INTO `%s` VALUES ('%s', '%d', '%u', '%u', '%d')",
+ map->npc_barter_data_db, nd->exname, item->nameid, item->qty, item->value, item->value2)) {
+ Sql_ShowDebug(map->mysql_handle);
+ }
+}
+
+/**
+ * Removes persistent NPC Barter Data from SQL
+ */
+static void npc_barter_delfromsql_sub(const char *npcname, int itemId, int itemId2, int amount2)
+{
+ if (itemId == INT_MAX) {
+ if (SQL_ERROR == SQL->Query(map->mysql_handle, "DELETE FROM `%s` WHERE `name`='%s'", map->npc_barter_data_db, npcname))
+ Sql_ShowDebug(map->mysql_handle);
+ } else {
+ if (SQL_ERROR == SQL->Query(map->mysql_handle, "DELETE FROM `%s` WHERE `name`='%s' AND `itemId`='%d' AND `priceId`='%d' AND `priceAmount`='%d' LIMIT 1",
+ map->npc_barter_data_db, npcname, itemId, itemId2, amount2)) {
+ Sql_ShowDebug(map->mysql_handle);
+ }
+ }
+}
+
+/**
+ * Removes persistent NPC Barter Data from SQL
+ **/
+static void npc_barter_delfromsql(struct npc_data *nd, int index)
+{
+ nullpo_retv(nd);
+ if (index == INT_MAX) {
+ npc->barter_delfromsql_sub(nd->exname, INT_MAX, 0, 0);
+ } else {
+ Assert_retv(index >= 0 && index < nd->u.scr.shop->items);
+ const struct npc_item_list *const item = &nd->u.scr.shop->item[index];
+ npc->barter_delfromsql_sub(nd->exname, item->nameid, item->value, item->value2);
+ }
+}
+
/**
* Judges whether to allow and spawn a trader's window.
**/
-bool npc_trader_open(struct map_session_data *sd, struct npc_data *nd) {
+static bool npc_trader_open(struct map_session_data *sd, struct npc_data *nd)
+{
nullpo_retr(false, sd);
nullpo_retr(false, nd);
if( !nd->u.scr.shop || !nd->u.scr.shop->items )
@@ -1653,6 +1777,9 @@ bool npc_trader_open(struct map_session_data *sd, struct npc_data *nd) {
clif->npc_market_open(sd,nd);
}
break;
+ case NST_BARTER:
+ clif->npc_barter_open(sd, nd);
+ break;
default:
clif->cashshop_show(sd,nd);
break;
@@ -1665,7 +1792,8 @@ bool npc_trader_open(struct map_session_data *sd, struct npc_data *nd) {
*
* @param master id of the original npc
**/
-void npc_trader_update(int master) {
+static void npc_trader_update(int master)
+{
struct DBIterator *iter;
struct block_list* bl;
struct npc_data *master_nd = map->id2nd(master);
@@ -1689,7 +1817,8 @@ void npc_trader_update(int master) {
* @param nd shop
* @param sd player
**/
-void npc_trader_count_funds(struct npc_data *nd, struct map_session_data *sd) {
+static void npc_trader_count_funds(struct npc_data *nd, struct map_session_data *sd)
+{
char evname[EVENT_NAME_LENGTH];
struct event_data *ev = NULL;
@@ -1729,7 +1858,8 @@ void npc_trader_count_funds(struct npc_data *nd, struct map_session_data *sd) {
*
* @return bool whether it was successful (if the script does not respond it will fail)
**/
-bool npc_trader_pay(struct npc_data *nd, struct map_session_data *sd, int price, int points) {
+static bool npc_trader_pay(struct npc_data *nd, struct map_session_data *sd, int price, int points)
+{
char evname[EVENT_NAME_LENGTH];
struct event_data *ev = NULL;
@@ -1739,8 +1869,8 @@ bool npc_trader_pay(struct npc_data *nd, struct map_session_data *sd, int price,
snprintf(evname, EVENT_NAME_LENGTH, "%s::OnPayFunds",nd->exname);
if ( (ev = strdb_get(npc->ev_db, evname)) ) {
- pc->setreg(sd,script->add_str("@price"),price);
- pc->setreg(sd,script->add_str("@points"),points);
+ pc->setreg(sd,script->add_variable("@price"),price);
+ pc->setreg(sd,script->add_variable("@points"),points);
script->run_npc(ev->nd->u.scr.script, ev->pos, sd->bl.id, ev->nd->bl.id);
} else
ShowError("npc_trader_pay: '%s' event '%s' not found, operation failed\n",nd->exname,evname);
@@ -1750,7 +1880,8 @@ bool npc_trader_pay(struct npc_data *nd, struct map_session_data *sd, int price,
/*==========================================
* Cash Shop Buy
*------------------------------------------*/
-int npc_cashshop_buy(struct map_session_data *sd, int nameid, int amount, int points) {
+static int npc_cashshop_buy(struct map_session_data *sd, int nameid, int amount, int points)
+{
struct npc_data *nd = NULL;
struct item_data *item;
struct npc_item_list *shop = NULL;
@@ -1775,11 +1906,12 @@ int npc_cashshop_buy(struct map_session_data *sd, int nameid, int amount, int po
return ERROR_TYPE_ITEM_ID; // Invalid Item
if( nd->subtype != CASHSHOP ) {
- if( nd->subtype == SCRIPT && nd->u.scr.shop && nd->u.scr.shop->type != NST_ZENY && nd->u.scr.shop->type != NST_MARKET ) {
+ if (nd->subtype == SCRIPT && nd->u.scr.shop && nd->u.scr.shop->type != NST_ZENY && nd->u.scr.shop->type != NST_MARKET && nd->u.scr.shop->type != NST_BARTER) {
shop = nd->u.scr.shop->item;
shop_size = nd->u.scr.shop->items;
- } else
+ } else {
return ERROR_TYPE_NPC;
+ }
} else {
shop = nd->u.shop.shop_item;
shop_size = nd->u.shop.count;
@@ -1855,7 +1987,7 @@ int npc_cashshop_buy(struct map_session_data *sd, int nameid, int amount, int po
* @param item_list List of items.
* @return result code for clif->parse_NpcBuyListSend.
*/
-int npc_buylist(struct map_session_data *sd, struct itemlist *item_list)
+static int npc_buylist(struct map_session_data *sd, struct itemlist *item_list)
{
struct npc_data* nd;
struct npc_item_list *shop = NULL;
@@ -1924,7 +2056,11 @@ int npc_buylist(struct map_session_data *sd, struct itemlist *item_list)
break;
case ADDITEM_OVERAMOUNT:
+#if PACKETVER >= 20110705
+ return 9;
+#else
return 2;
+#endif
}
value = pc->modifybuyvalue(sd,value);
@@ -1978,7 +2114,7 @@ int npc_buylist(struct map_session_data *sd, struct itemlist *item_list)
/**
* Processes incoming npc market purchase list
**/
-int npc_market_buylist(struct map_session_data *sd, struct itemlist *item_list)
+static int npc_market_buylist(struct map_session_data *sd, struct itemlist *item_list)
{
struct npc_data* nd;
struct npc_item_list *shop = NULL;
@@ -2084,11 +2220,140 @@ int npc_market_buylist(struct map_session_data *sd, struct itemlist *item_list)
return 0;
}
+/**
+ * Processes incoming npc barter purchase list
+ **/
+static int npc_barter_buylist(struct map_session_data *sd, struct barteritemlist *item_list)
+{
+ struct npc_data* nd;
+ struct npc_item_list *shop = NULL;
+ int w, new_;
+ unsigned short shop_size = 0;
+
+ nullpo_retr(1, sd);
+ nullpo_retr(1, item_list);
+
+ nd = npc->checknear(sd, map->id2bl(sd->npc_shopid));
+
+ if (nd == NULL || nd->subtype != SCRIPT || VECTOR_LENGTH(*item_list) == 0 || !nd->u.scr.shop || nd->u.scr.shop->type != NST_BARTER)
+ return 11;
+
+ shop = nd->u.scr.shop->item;
+ shop_size = nd->u.scr.shop->items;
+
+ w = 0;
+ new_ = 0;
+
+ int items[MAX_INVENTORY] = { 0 };
+
+ // process entries in buy list, one by one
+ for (int i = 0; i < VECTOR_LENGTH(*item_list); ++i) {
+ struct barter_itemlist_entry *entry = &VECTOR_INDEX(*item_list, i);
+
+ const int n = entry->removeIndex;
+ if (n < 0 || n >= sd->status.inventorySize)
+ return 11; // wrong inventory index
+
+ int removeId = sd->status.inventory[n].nameid;
+ const int j = entry->shopIndex;
+ if (j < 0 || j >= shop_size)
+ return 13; // no such item in shop
+ if (entry->addId != shop[j].nameid && entry->addId != itemdb_viewid(shop[j].nameid))
+ return 13; // no such item in shop
+ if (removeId != shop[j].value && removeId != itemdb_viewid(shop[j].value))
+ return 13; // no such item in shop
+ entry->addId = shop[j].nameid; // item_avail replacement
+ removeId = shop[j].value; // item_avail replacement
+
+ if (!itemdb->exists(entry->addId))
+ return 13; // item no longer in itemdb
+
+ const int removeAmount = shop[j].value2;
+
+ if ((int)shop[j].qty != -1 && entry->addAmount > (int)shop[j].qty)
+ return 14; // not enough item amount in shop
+
+ if (removeAmount * entry->addAmount > sd->status.inventory[n].amount)
+ return 14; // not enough item amount in inventory
+
+ items[n] += removeAmount * entry->addAmount;
+
+ if (items[n] > sd->status.inventory[n].amount)
+ return 14; // not enough item amount in inventory
+
+ entry->addId = shop[j].nameid; //item_avail replacement
+
+ npc_market_qty[i] = j;
+
+ if (!itemdb->isstackable(entry->addId) && entry->addAmount > 1) {
+ //Exploit? You can't buy more than 1 of equipment types o.O
+ ShowWarning("Player %s (%d:%d) sent a hexed packet trying to buy %d of non-stackable item %d!\n",
+ sd->status.name, sd->status.account_id, sd->status.char_id, entry->addAmount, entry->addId);
+ entry->addAmount = 1;
+ }
+
+ switch (pc->checkadditem(sd, entry->addId, entry->addAmount)) {
+ case ADDITEM_EXIST:
+ break;
+ case ADDITEM_NEW:
+ new_++;
+ break;
+ case ADDITEM_OVERAMOUNT: /* TODO find official response for this */
+ return 1;
+ }
+
+ w += itemdb_weight(entry->addId) * entry->addAmount;
+ w -= itemdb_weight(removeId) * removeAmount;
+ }
+
+ if (w + sd->weight > sd->max_weight)
+ return 2; // Too heavy
+
+ if (pc->inventoryblank(sd) < new_)
+ return 3; // Not enough space to store items
+
+ for (int i = 0; i < sd->status.inventorySize; ++i) {
+ const int removeAmountTotal = items[i];
+ if (removeAmountTotal == 0)
+ continue;
+ if (pc->delitem(sd, i, removeAmountTotal, 0, DELITEM_SOLD, LOG_TYPE_NPC) != 0) {
+ return 11; // unknown exploit
+ }
+ }
+
+ for (int i = 0; i < VECTOR_LENGTH(*item_list); ++i) {
+ struct barter_itemlist_entry *entry = &VECTOR_INDEX(*item_list, i);
+ const int shopIdx = npc_market_qty[i];
+
+ if ((int)shop[shopIdx].qty != -1) {
+ if (entry->addAmount > (int)shop[shopIdx].qty) /* wohoo someone tampered with the packet. */
+ return 14;
+ shop[shopIdx].qty -= entry->addAmount;
+ }
+
+ npc->barter_tosql(nd, shopIdx);
+
+ if (itemdb_type(entry->addId) == IT_PETEGG) {
+ pet->create_egg(sd, entry->addId);
+ } else {
+ struct item item_tmp;
+ memset(&item_tmp, 0, sizeof(item_tmp));
+ item_tmp.nameid = entry->addId;
+ item_tmp.identify = 1;
+ pc->additem(sd, &item_tmp, entry->addAmount, LOG_TYPE_NPC);
+ }
+ }
+
+ return 12;
+}
+
/// npc_selllist for script-controlled shops
-int npc_selllist_sub(struct map_session_data *sd, struct itemlist *item_list, struct npc_data *nd)
+static int npc_selllist_sub(struct map_session_data *sd, struct itemlist *item_list, struct npc_data *nd)
{
char npc_ev[EVENT_NAME_LENGTH];
char card_slot[NAME_LENGTH];
+ char opt_index_str[NAME_LENGTH];
+ char opt_value_str[NAME_LENGTH];
int i, j;
int key_nameid = 0;
int key_amount = 0;
@@ -2096,6 +2361,8 @@ int npc_selllist_sub(struct map_session_data *sd, struct itemlist *item_list, st
int key_attribute = 0;
int key_identify = 0;
int key_card[MAX_SLOTS];
+ int key_opt_idx[MAX_ITEM_OPTIONS];
+ int key_opt_value[MAX_ITEM_OPTIONS];
nullpo_ret(sd);
nullpo_ret(item_list);
@@ -2115,6 +2382,17 @@ int npc_selllist_sub(struct map_session_data *sd, struct itemlist *item_list, st
script->cleararray_pc(sd, card_slot, (void*)0);
}
+ for (j = 0; j < MAX_ITEM_OPTIONS; j++) { // Clear Each item option entry
+ key_opt_idx[j] = 0;
+ key_opt_value[j] = 0;
+
+ snprintf(opt_index_str, sizeof(opt_index_str), "@slot_opt_idx%d", j + 1);
+ script->cleararray_pc(sd, opt_index_str, (void*)0);
+
+ snprintf(opt_value_str, sizeof(opt_value_str), "@slot_opt_val%d", j + 1);
+ script->cleararray_pc(sd, opt_value_str, (void*)0);
+ }
+
// save list of to be sold items
for (i = 0; i < VECTOR_LENGTH(*item_list); i++) {
struct itemlist_entry *entry = &VECTOR_INDEX(*item_list, i);
@@ -2140,6 +2418,17 @@ int npc_selllist_sub(struct map_session_data *sd, struct itemlist *item_list, st
script->setarray_pc(sd, card_slot, i, (void*)card, &key_card[j]);
}
+ for (j = 0; j < MAX_ITEM_OPTIONS; j++) {
+ intptr_t opt_idx = item->option[j].index;
+ intptr_t opt_value = item->option[j].value;
+
+ snprintf(opt_index_str, sizeof(opt_index_str), "@slot_opt_idx%d", j + 1);
+ script->setarray_pc(sd, opt_index_str, i, (void*)opt_idx, &key_opt_idx[j]);
+
+ snprintf(opt_value_str, sizeof(opt_value_str), "@slot_opt_val%d", j + 1);
+ script->setarray_pc(sd, opt_value_str, i, (void*)opt_value, &key_opt_value[j]);
+ }
+
}
// invoke event
@@ -2152,7 +2441,7 @@ int npc_selllist_sub(struct map_session_data *sd, struct itemlist *item_list, st
///
/// @param item_list 'n' pairs <index,amount>
/// @return result code for clif->parse_NpcSellListSend
-int npc_selllist(struct map_session_data *sd, struct itemlist *item_list)
+static int npc_selllist(struct map_session_data *sd, struct itemlist *item_list)
{
int64 z;
int i,skill_t, skill_idx = skill->get_index(MC_OVERCHARGE);
@@ -2181,7 +2470,7 @@ int npc_selllist(struct map_session_data *sd, struct itemlist *item_list)
struct itemlist_entry *entry = &VECTOR_INDEX(*item_list, i);
int nameid, value, idx = entry->id;
- if (idx >= MAX_INVENTORY || idx < 0 || entry->amount < 0) {
+ if (idx >= sd->status.inventorySize || idx < 0 || entry->amount < 0) {
return 1;
}
@@ -2222,7 +2511,11 @@ int npc_selllist(struct map_session_data *sd, struct itemlist *item_list)
}
}
+ // Achievements [Smokexyz/Hercules]
+ achievement->validate_item_sell(sd, sd->status.inventory[idx].nameid, entry->amount);
+
pc->delitem(sd, idx, entry->amount, 0, DELITEM_SOLD, LOG_TYPE_NPC);
+
}
if (z + sd->status.zeny > MAX_ZENY && nd->master_nd == NULL)
@@ -2251,7 +2544,8 @@ int npc_selllist(struct map_session_data *sd, struct itemlist *item_list)
//Atempt to remove an npc from a map
//This doesn't remove it from map_db
-int npc_remove_map(struct npc_data* nd) {
+static int npc_remove_map(struct npc_data *nd)
+{
int16 m,i;
nullpo_retr(1, nd);
@@ -2274,7 +2568,7 @@ int npc_remove_map(struct npc_data* nd) {
/**
* @see DBApply
*/
-int npc_unload_ev(union DBKey key, struct DBData *data, va_list ap)
+static int npc_unload_ev(union DBKey key, struct DBData *data, va_list ap)
{
struct event_data* ev = DB->data2ptr(data);
char* npcname = va_arg(ap, char *);
@@ -2289,7 +2583,7 @@ int npc_unload_ev(union DBKey key, struct DBData *data, va_list ap)
/**
* @see DBApply
*/
-int npc_unload_ev_label(union DBKey key, struct DBData *data, va_list ap)
+static int npc_unload_ev_label(union DBKey key, struct DBData *data, va_list ap)
{
struct linkdb_node **label_linkdb = DB->data2ptr(data);
struct npc_data* nd = va_arg(ap, struct npc_data *);
@@ -2301,7 +2595,7 @@ int npc_unload_ev_label(union DBKey key, struct DBData *data, va_list ap)
//Chk if npc matches src_id, then unload.
//Sub-function used to find duplicates.
-int npc_unload_dup_sub(struct npc_data* nd, va_list args)
+static int npc_unload_dup_sub(struct npc_data *nd, va_list args)
{
int src_id;
@@ -2313,14 +2607,15 @@ int npc_unload_dup_sub(struct npc_data* nd, va_list args)
}
//Removes all npcs that are duplicates of the passed one. [Skotlex]
-void npc_unload_duplicates(struct npc_data* nd) {
+static void npc_unload_duplicates(struct npc_data *nd)
+{
nullpo_retv(nd);
map->foreachnpc(npc->unload_dup_sub,nd->bl.id);
}
//Removes an npc from map and db.
//Single is to free name (for duplicates).
-int npc_unload(struct npc_data* nd, bool single)
+static int npc_unload(struct npc_data *nd, bool single)
{
nullpo_ret(nd);
@@ -2420,7 +2715,7 @@ int npc_unload(struct npc_data* nd, bool single)
//
/// Clears the npc source file list
-void npc_clearsrcfile(void)
+static void npc_clearsrcfile(void)
{
struct npc_src_list* file = npc->src_files;
@@ -2437,7 +2732,7 @@ void npc_clearsrcfile(void)
*
* @param name The file name to add.
*/
-void npc_addsrcfile(const char *name)
+static void npc_addsrcfile(const char *name)
{
struct npc_src_list* file;
struct npc_src_list* file_prev = NULL;
@@ -2467,7 +2762,7 @@ void npc_addsrcfile(const char *name)
*
* @param name The file name to remove.
*/
-void npc_delsrcfile(const char *name)
+static void npc_delsrcfile(const char *name)
{
struct npc_src_list* file = npc->src_files;
struct npc_src_list* file_prev = NULL;
@@ -2494,7 +2789,7 @@ void npc_delsrcfile(const char *name)
* @param filepath The file path to retain.
* @return A retained reference to filepath.
*/
-const char *npc_retainpathreference(const char *filepath)
+static const char *npc_retainpathreference(const char *filepath)
{
struct npc_path_data * npd = NULL;
nullpo_ret(filepath);
@@ -2529,7 +2824,7 @@ const char *npc_retainpathreference(const char *filepath)
*
* @param filepath The file path to release.
*/
-void npc_releasepathreference(const char *filepath)
+static void npc_releasepathreference(const char *filepath)
{
struct npc_path_data* npd = NULL;
@@ -2548,7 +2843,8 @@ void npc_releasepathreference(const char *filepath)
/// Parses and sets the name and exname of a npc.
/// Assumes that m, x and y are already set in nd.
-void npc_parsename(struct npc_data* nd, const char* name, const char* start, const char* buffer, const char* filepath) {
+static void npc_parsename(struct npc_data *nd, const char *name, const char *start, const char *buffer, const char *filepath)
+{
const char* p;
struct npc_data* dnd;// duplicate npc
char newname[NAME_LENGTH];
@@ -2591,7 +2887,7 @@ void npc_parsename(struct npc_data* nd, const char* name, const char* start, con
do {
++i;
- snprintf(newname, ARRAYLENGTH(newname), "%d_%d_%d_%d", i, nd->bl.m, nd->bl.x, nd->bl.y);
+ safesnprintf(newname, ARRAYLENGTH(newname), "%d_%d_%d_%d", i, nd->bl.m, nd->bl.x, nd->bl.y);
} while( npc->name2id(newname) != NULL );
strcpy(this_mapname, (nd->bl.m == -1 ? "(not on a map)" : mapindex_id2name(map_id2index(nd->bl.m))));
@@ -2606,7 +2902,8 @@ void npc_parsename(struct npc_data* nd, const char* name, const char* start, con
// Parse View
// Support for using Constants in place of NPC View IDs.
-int npc_parseview(const char* w4, const char* start, const char* buffer, const char* filepath) {
+static int npc_parseview(const char *w4, const char *start, const char *buffer, const char *filepath)
+{
int val = FAKE_NPC, i = 0;
char viewid[1024]; // Max size of name from constants.conf, see script->read_constdb.
@@ -2640,7 +2937,7 @@ int npc_parseview(const char* w4, const char* start, const char* buffer, const c
// View is ID
// Checks if given view is an ID or constant.
-bool npc_viewisid(const char * viewid)
+static bool npc_viewisid(const char *viewid)
{
nullpo_retr(false, viewid);
if (atoi(viewid) != FAKE_NPC) {
@@ -2664,7 +2961,7 @@ bool npc_viewisid(const char * viewid)
* @param class_ The NPC view class.
* @return A pointer to the created NPC data (ownership passed to the caller).
*/
-struct npc_data *npc_create_npc(enum npc_subtype subtype, int m, int x, int y, uint8 dir, int16 class_)
+static struct npc_data *npc_create_npc(enum npc_subtype subtype, int m, int x, int y, uint8 dir, int16 class_)
{
struct npc_data *nd;
@@ -2680,12 +2977,14 @@ struct npc_data *npc_create_npc(enum npc_subtype subtype, int m, int x, int y, u
nd->area_size = AREA_SIZE + 1;
nd->class_ = class_;
nd->speed = 200;
+ nd->vd = npc_viewdb[0]; // Copy INVISIBLE_CLASS view data. Actual view data is set by npc->add_to_location() later.
return nd;
}
//Add then display an npc warp on map
-struct npc_data* npc_add_warp(char* name, short from_mapid, short from_x, short from_y, short xs, short ys, unsigned short to_mapindex, short to_x, short to_y) {
+static struct npc_data *npc_add_warp(char *name, short from_mapid, short from_x, short from_y, short xs, short ys, unsigned short to_mapindex, short to_x, short to_y)
+{
int i, flag = 0;
struct npc_data *nd;
@@ -2698,10 +2997,10 @@ struct npc_data* npc_add_warp(char* name, short from_mapid, short from_x, short
flag = 1;
if (flag == 1)
- snprintf(nd->exname, ARRAYLENGTH(nd->exname), "warp_%d_%d_%d", from_mapid, from_x, from_y);
+ safesnprintf(nd->exname, ARRAYLENGTH(nd->exname), "warp_%d_%d_%d", from_mapid, from_x, from_y);
for( i = 0; npc->name2id(nd->exname) != NULL; ++i )
- snprintf(nd->exname, ARRAYLENGTH(nd->exname), "warp%d_%d_%d_%d", i, from_mapid, from_x, from_y);
+ safesnprintf(nd->exname, ARRAYLENGTH(nd->exname), "warp%d_%d_%d_%d", i, from_mapid, from_x, from_y);
safestrncpy(nd->name, nd->exname, ARRAYLENGTH(nd->name));
nd->u.warp.mapindex = to_mapindex;
@@ -2732,7 +3031,7 @@ struct npc_data* npc_add_warp(char* name, short from_mapid, short from_x, short
* (EXIT_FAILURE) status. May be NULL.
* @return A pointer to the advanced buffer position.
*/
-const char *npc_parse_warp(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval)
+static const char *npc_parse_warp(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval)
{
int x, y, xs, ys, to_x, to_y, m;
unsigned short i;
@@ -2799,7 +3098,7 @@ const char *npc_parse_warp(const char *w1, const char *w2, const char *w3, const
* (EXIT_FAILURE) status. May be NULL.
* @return A pointer to the advanced buffer position.
*/
-const char *npc_parse_shop(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval)
+static const char *npc_parse_shop(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval)
{
//TODO: could be rewritten to NOT need this temp array [ultramage]
// We could use nd->u.shop.shop_item to store directly the items, but this could lead
@@ -2808,7 +3107,7 @@ const char *npc_parse_shop(const char *w1, const char *w2, const char *w3, const
struct npc_item_list *items = NULL;
size_t items_count = 40; // Starting items size
- char *p;
+ const char *p;
int x, y, dir, m, i, class_;
struct npc_data *nd;
enum npc_subtype type;
@@ -2926,7 +3225,8 @@ const char *npc_parse_shop(const char *w1, const char *w2, const char *w3, const
return strchr(start,'\n');// continue
}
-void npc_convertlabel_db(struct npc_label_list* label_list, const char *filepath) {
+static void npc_convertlabel_db(struct npc_label_list *label_list, const char *filepath)
+{
int i;
nullpo_retv(label_list);
@@ -2958,7 +3258,8 @@ void npc_convertlabel_db(struct npc_label_list* label_list, const char *filepath
}
// Skip the contents of a script.
-const char* npc_skip_script(const char* start, const char* buffer, const char* filepath, int *retval) {
+static const char *npc_skip_script(const char *start, const char *buffer, const char *filepath, int *retval)
+{
const char* p;
int curly_count;
@@ -3044,7 +3345,7 @@ const char* npc_skip_script(const char* start, const char* buffer, const char* f
* (EXIT_FAILURE) status. May be NULL.
* @return A pointer to the advanced buffer position.
*/
-const char *npc_parse_script(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int options, int *retval)
+static const char *npc_parse_script(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int options, int *retval)
{
int x, y, dir = 0, m, xs = 0, ys = 0; // [Valaris] thanks to fov
struct script_code *scriptroot;
@@ -3164,7 +3465,7 @@ const char *npc_parse_script(const char *w1, const char *w2, const char *w3, con
*
* @param nd The NPC to register.
*/
-void npc_add_to_location(struct npc_data *nd)
+static void npc_add_to_location(struct npc_data *nd)
{
nullpo_retv(nd);
@@ -3188,7 +3489,7 @@ void npc_add_to_location(struct npc_data *nd)
/**
* Duplicates a script (@see npc_duplicate_sub)
*/
-bool npc_duplicate_script_sub(struct npc_data *nd, const struct npc_data *snd, int xs, int ys, int options)
+static bool npc_duplicate_script_sub(struct npc_data *nd, const struct npc_data *snd, int xs, int ys, int options)
{
int i;
bool retval = true;
@@ -3238,7 +3539,7 @@ bool npc_duplicate_script_sub(struct npc_data *nd, const struct npc_data *snd, i
/**
* Duplicates a shop or cash shop (@see npc_duplicate_sub)
*/
-bool npc_duplicate_shop_sub(struct npc_data *nd, const struct npc_data *snd, int xs, int ys, int options)
+static bool npc_duplicate_shop_sub(struct npc_data *nd, const struct npc_data *snd, int xs, int ys, int options)
{
nullpo_retr(false, nd);
nullpo_retr(false, snd);
@@ -3256,7 +3557,7 @@ bool npc_duplicate_shop_sub(struct npc_data *nd, const struct npc_data *snd, int
/**
* Duplicates a warp (@see npc_duplicate_sub)
*/
-bool npc_duplicate_warp_sub(struct npc_data *nd, const struct npc_data *snd, int xs, int ys, int options)
+static bool npc_duplicate_warp_sub(struct npc_data *nd, const struct npc_data *snd, int xs, int ys, int options)
{
nullpo_retr(false, nd);
nullpo_retr(false, snd);
@@ -3288,7 +3589,7 @@ bool npc_duplicate_warp_sub(struct npc_data *nd, const struct npc_data *snd, int
* @param options The NPC options.
* @retval false if there were any issues while creating and validating the NPC.
*/
-bool npc_duplicate_sub(struct npc_data *nd, const struct npc_data *snd, int xs, int ys, int options)
+static bool npc_duplicate_sub(struct npc_data *nd, const struct npc_data *snd, int xs, int ys, int options)
{
nullpo_retr(false, nd);
nullpo_retr(false, snd);
@@ -3346,7 +3647,7 @@ bool npc_duplicate_sub(struct npc_data *nd, const struct npc_data *snd, int xs,
* @remark
* Only `NPO_ONINIT` is available trough the options argument.
*/
-const char *npc_parse_duplicate(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int options, int *retval)
+static const char *npc_parse_duplicate(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int options, int *retval)
{
int x, y, dir, m, xs = -1, ys = -1;
char srcname[128];
@@ -3438,7 +3739,7 @@ const char *npc_parse_duplicate(const char *w1, const char *w2, const char *w3,
* @return success state.
* @retval 0 in case of successful creation.
*/
-int npc_duplicate4instance(struct npc_data *snd, int16 m)
+static int npc_duplicate4instance(struct npc_data *snd, int16 m)
{
char newname[NAME_LENGTH];
int dm = -1, im = -1, xs = -1, ys = -1;
@@ -3494,7 +3795,7 @@ int npc_duplicate4instance(struct npc_data *snd, int16 m)
}
//Set mapcell CELL_NPC to trigger event later
-void npc_setcells(struct npc_data* nd)
+static void npc_setcells(struct npc_data *nd)
{
int16 m, x, y, xs, ys;
int i,j;
@@ -3528,7 +3829,7 @@ void npc_setcells(struct npc_data* nd)
}
}
-int npc_unsetcells_sub(struct block_list *bl, va_list ap)
+static int npc_unsetcells_sub(struct block_list *bl, va_list ap)
{
struct npc_data *nd = NULL;
int id = va_arg(ap, int);
@@ -3543,7 +3844,8 @@ int npc_unsetcells_sub(struct block_list *bl, va_list ap)
return 1;
}
-void npc_unsetcells(struct npc_data* nd) {
+static void npc_unsetcells(struct npc_data *nd)
+{
int16 m, x, y, xs, ys;
int i,j, x0, x1, y0, y1;
@@ -3583,7 +3885,7 @@ void npc_unsetcells(struct npc_data* nd) {
map->foreachinarea( npc->unsetcells_sub, m, x0, y0, x1, y1, BL_NPC, nd->bl.id );
}
-void npc_movenpc(struct npc_data* nd, int16 x, int16 y)
+static void npc_movenpc(struct npc_data *nd, int16 x, int16 y)
{
int16 m;
nullpo_retv(nd);
@@ -3602,7 +3904,7 @@ void npc_movenpc(struct npc_data* nd, int16 x, int16 y)
///
/// @param nd Target npc
/// @param newname New display name
-void npc_setdisplayname(struct npc_data* nd, const char* newname)
+static void npc_setdisplayname(struct npc_data *nd, const char *newname)
{
nullpo_retv(nd);
nullpo_retv(newname);
@@ -3616,7 +3918,8 @@ void npc_setdisplayname(struct npc_data* nd, const char* newname)
///
/// @param nd Target npc
/// @param class_ New display class
-void npc_setclass(struct npc_data* nd, short class_) {
+static void npc_setclass(struct npc_data *nd, short class_)
+{
nullpo_retv(nd);
if( nd->class_ == class_ )
@@ -3630,8 +3933,20 @@ void npc_setclass(struct npc_data* nd, short class_) {
clif->spawn(&nd->bl);// fade in
}
+static void npc_refresh(struct npc_data *nd)
+{
+ nullpo_retv(nd);
+
+ if (map->list[nd->bl.m].users) {
+ // using here CLR_TRICKDEAD because other flags show effects.
+ // probably need use other flag or other way to refresh npc.
+ clif->clearunit_area(&nd->bl, CLR_TRICKDEAD); // fade out
+ clif->spawn(&nd->bl); // fade in
+ }
+}
+
// @commands (script based)
-int npc_do_atcmd_event(struct map_session_data* sd, const char* command, const char* message, const char* eventname)
+static int npc_do_atcmd_event(struct map_session_data *sd, const char *command, const char *message, const char *eventname)
{
struct event_data* ev = (struct event_data*)strdb_get(npc->ev_db, eventname);
struct npc_data *nd;
@@ -3718,7 +4033,7 @@ int npc_do_atcmd_event(struct map_session_data* sd, const char* command, const c
* (EXIT_FAILURE) status. May be NULL.
* @return A pointer to the advanced buffer position.
*/
-const char *npc_parse_function(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval)
+static const char *npc_parse_function(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval)
{
struct DBMap *func_db;
struct DBData old_data;
@@ -3772,7 +4087,7 @@ const char *npc_parse_function(const char *w1, const char *w2, const char *w3, c
* Parse Mob 2 - Actually Spawns Mob
* [Wizputer]
*------------------------------------------*/
-void npc_parse_mob2(struct spawn_data* mobspawn)
+static void npc_parse_mob2(struct spawn_data *mobspawn)
{
int i;
@@ -3802,7 +4117,7 @@ void npc_parse_mob2(struct spawn_data* mobspawn)
* (EXIT_FAILURE) status. May be NULL.
* @return A pointer to the advanced buffer position.
*/
-const char *npc_parse_mob(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval)
+static const char *npc_parse_mob(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval)
{
int num, class_, m,x,y,xs,ys, i,j;
int mob_lv = -1, ai = -1, size = -1;
@@ -3817,7 +4132,12 @@ const char *npc_parse_mob(const char *w1, const char *w2, const char *w3, const
memset(&mobspawn, 0, sizeof(struct spawn_data));
- mobspawn.state.boss = (strcmp(w2,"boss_monster") == 0 ? 1 : 0);
+ if (strcmp(w2, "boss_monster") == 0)
+ mobspawn.state.boss = BTYPE_MVP;
+ else if (strcmp(w2, "miniboss_monster") == 0)
+ mobspawn.state.boss = BTYPE_BOSS;
+ else
+ mobspawn.state.boss = BTYPE_NONE;
// w1=<map name>,<x>,<y>,<xs>,<ys>
// w3=<mob name>{,<mob level>}
@@ -3909,10 +4229,10 @@ const char *npc_parse_mob(const char *w1, const char *w2, const char *w3, const
}
//Use db names instead of the spawn file ones.
- if(battle_config.override_mob_names==1)
- strcpy(mobspawn.name,"--en--");
- else if (battle_config.override_mob_names==2)
- strcpy(mobspawn.name,"--ja--");
+ if (battle_config.override_mob_names == 1)
+ strcpy(mobspawn.name, DEFAULT_MOB_NAME);
+ else if (battle_config.override_mob_names == 2)
+ strcpy(mobspawn.name, DEFAULT_MOB_JNAME);
else
safestrncpy(mobspawn.name, mobname, sizeof(mobspawn.name));
@@ -3983,7 +4303,7 @@ const char *npc_parse_mob(const char *w1, const char *w2, const char *w3, const
*
* @see npc_parse_mapflag
*/
-void npc_parse_unknown_mapflag(const char *name, const char *w3, const char *w4, const char* start, const char* buffer, const char* filepath, int *retval)
+static void npc_parse_unknown_mapflag(const char *name, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval)
{
ShowError("npc_parse_mapflag: unrecognized mapflag '%s' in file '%s', line '%d'.\n", w3, filepath, strline(buffer,start-buffer));
if (retval)
@@ -4015,7 +4335,7 @@ void npc_parse_unknown_mapflag(const char *name, const char *w3, const char *w4,
* (EXIT_FAILURE) status. May be NULL.
* @return A pointer to the advanced buffer position.
*/
-const char *npc_parse_mapflag(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval)
+static const char *npc_parse_mapflag(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval)
{
int16 m;
char mapname[32];
@@ -4098,6 +4418,11 @@ const char *npc_parse_mapflag(const char *w1, const char *w2, const char *w3, co
ShowWarning("npc_parse_mapflag: You can't set PvP and GvG flags for the same map! Removing GvG flags from %s in file '%s', line '%d'.\n", map->list[m].name, filepath, strline(buffer,start-buffer));
if (retval) *retval = EXIT_FAILURE;
}
+ if (state && map->list[m].flag.cvc) {
+ map->list[m].flag.cvc = 0;
+ ShowWarning("npc_parse_mapflag: You can't set CvC and PvP flags for the same map! Removing CvC flag from %s in file '%s', line '%d'.\n", map->list[m].name, filepath, strline(buffer, start-buffer));
+ if (retval) *retval = EXIT_FAILURE;
+ }
if( state && map->list[m].flag.battleground ) {
map->list[m].flag.battleground = 0;
ShowWarning("npc_parse_mapflag: You can't set PvP and BattleGround flags for the same map! Removing BattleGround flag from %s in file '%s', line '%d'.\n", map->list[m].name, filepath, strline(buffer,start-buffer));
@@ -4150,6 +4475,11 @@ const char *npc_parse_mapflag(const char *w1, const char *w2, const char *w3, co
ShowWarning("npc_parse_mapflag: You can't set PvP and GvG flags for the same map! Removing PvP flag from %s in file '%s', line '%d'.\n", map->list[m].name, filepath, strline(buffer,start-buffer));
if (retval) *retval = EXIT_FAILURE;
}
+ if (state && map->list[m].flag.cvc) {
+ map->list[m].flag.cvc = 0;
+ ShowWarning("npc_parse_mapflag: You can't set CvC and GvG flags for the same map! Removing CvC flag from %s in file '%s', line '%d'.\n", map->list[m].name, filepath, strline(buffer, start-buffer));
+ if (retval) *retval = EXIT_FAILURE;
+ }
if( state && map->list[m].flag.battleground ) {
map->list[m].flag.battleground = 0;
ShowWarning("npc_parse_mapflag: You can't set GvG and BattleGround flags for the same map! Removing BattleGround flag from %s in file '%s', line '%d'.\n", map->list[m].name, filepath, strline(buffer,start-buffer));
@@ -4192,11 +4522,47 @@ const char *npc_parse_mapflag(const char *w1, const char *w2, const char *w3, co
ShowWarning("npc_parse_mapflag: You can't set GvG and BattleGround flags for the same map! Removing GvG flag from %s in file '%s', line '%d'.\n", map->list[m].name, filepath, strline(buffer,start-buffer));
if (retval) *retval = EXIT_FAILURE;
}
+ if (map->list[m].flag.cvc) {
+ map->list[m].flag.cvc = 0;
+ ShowWarning("npc_parse_mapflag: You can't set CvC and BattleGround flags for the same map! Removing CvC flag from %s in file '%s', line '%d'.\n", map->list[m].name, filepath, strline(buffer, start-buffer));
+ if (retval) *retval = EXIT_FAILURE;
+ }
if( state && (zone = strdb_get(map->zone_db, MAP_ZONE_BG_NAME)) != NULL && map->list[m].zone != zone ) {
map->zone_change(m,zone,start,buffer,filepath);
}
}
+ else if (!strcmpi(w3, "cvc")) {
+ struct map_zone_data *zone;
+
+ map->list[m].flag.cvc = state;
+ if (state && (map->list[m].flag.gvg || map->list[m].flag.gvg_dungeon || map->list[m].flag.gvg_castle)) {
+ map->list[m].flag.gvg = 0;
+ map->list[m].flag.gvg_dungeon = 0;
+ map->list[m].flag.gvg_castle = 0;
+ ShowWarning("npc_parse_mapflag: You can't set GvG and CvC flags for the same map! Removing GvG flag from %s in file '%s', line '%d'.\n", map->list[m].name, filepath, strline(buffer, start-buffer));
+ if (retval) {
+ *retval = EXIT_FAILURE;
+ }
+ }
+ if (state && map->list[m].flag.pvp) {
+ map->list[m].flag.pvp = 0;
+ ShowWarning("npc_parse_mapflag: You can't set PvP and CvC flags for the same map! Removing PvP flag from %s in file '%s', line '%d'.\n", map->list[m].name, filepath, strline(buffer, start-buffer));
+ if (retval) {
+ *retval = EXIT_FAILURE;
+ }
+ }
+ if (state && map->list[m].flag.battleground) {
+ map->list[m].flag.battleground = 0;
+ ShowWarning("npc_parse_mapflag: You can't set CvC and BattleGround flags for the same map! Removing BattleGround flag from %s in file '%s', line '%d'.\n", map->list[m].name, filepath, strline(buffer, start-buffer));
+ if (retval) {
+ *retval = EXIT_FAILURE;
+ }
+ }
+ if (state && (zone = strdb_get(map->zone_db, MAP_ZONE_CVC_NAME)) != NULL && map->list[m].zone != zone) {
+ map->zone_change(m, zone, start, buffer, filepath);
+ }
+ }
else if (!strcmpi(w3,"noexppenalty"))
map->list[m].flag.noexppenalty=state;
else if (!strcmpi(w3,"nozenypenalty"))
@@ -4274,6 +4640,8 @@ const char *npc_parse_mapflag(const char *w1, const char *w2, const char *w3, co
map->list[m].flag.reset=state;
else if (!strcmpi(w3,"notomb"))
map->list[m].flag.notomb=state;
+ else if (!strcmpi(w3, "noautoloot"))
+ map->list[m].flag.noautoloot = state;
else if (!strcmpi(w3,"adjust_unit_duration")) {
int skill_id, k;
char skill_name[MAP_ZONE_MAPFLAG_LENGTH], modifier[MAP_ZONE_MAPFLAG_LENGTH];
@@ -4422,6 +4790,10 @@ const char *npc_parse_mapflag(const char *w1, const char *w2, const char *w3, co
map->list[m].flag.nocashshop = (state) ? 1 : 0;
} else if (!strcmpi(w3,"noviewid")) {
map->list[m].flag.noviewid = (state) ? atoi(w4) : 0;
+ } else if (!strcmpi(w3, "pairship_startable")) {
+ map->list[m].flag.pairship_startable = (state) ? 1 : 0;
+ } else if (!strcmpi(w3, "pairship_endable")) {
+ map->list[m].flag.pairship_endable = (state) ? 1 : 0;
} else {
npc->parse_unknown_mapflag(mapname, w3, w4, start, buffer, filepath, retval);
}
@@ -4446,7 +4818,7 @@ const char *npc_parse_mapflag(const char *w1, const char *w2, const char *w3, co
* (EXIT_FAILURE) status. May be NULL.
* @return A pointer to the advanced buffer position.
*/
-const char *npc_parse_unknown_object(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval)
+static const char *npc_parse_unknown_object(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval)
{
nullpo_retr(start, retval);
ShowError("npc_parsesrcfile: Unable to parse, probably a missing or extra TAB in file '%s', line '%d'. Skipping line...\n * w1=%s\n * w2=%s\n * w3=%s\n * w4=%s\n", filepath, strline(buffer,start-buffer), w1, w2, w3, w4);
@@ -4464,7 +4836,8 @@ const char *npc_parse_unknown_object(const char *w1, const char *w2, const char
* @retval EXIT_SUCCESS if filepath was loaded correctly.
* @retval EXIT_FAILURE if there were errors/warnings when loading filepath.
*/
-int npc_parsesrcfile(const char* filepath, bool runOnInit) {
+static int npc_parsesrcfile(const char *filepath, bool runOnInit)
+{
int success = EXIT_SUCCESS;
int16 m, x, y;
int lines = 0;
@@ -4634,7 +5007,7 @@ int npc_parsesrcfile(const char* filepath, bool runOnInit) {
{
p = npc->parse_duplicate(w1,w2,w3,w4, p, buffer, filepath, (runOnInit?NPO_ONINIT:NPO_NONE), &success);
}
- else if( (strcmp(w2,"monster") == 0 || strcmp(w2,"boss_monster") == 0) )
+ else if (strcmp(w2,"monster") == 0 || strcmp(w2,"boss_monster") == 0 || strcmp(w2,"miniboss_monster") == 0)
{
p = npc->parse_mob(w1, w2, w3, w4, p, buffer, filepath, &success);
}
@@ -4652,7 +5025,7 @@ int npc_parsesrcfile(const char* filepath, bool runOnInit) {
return success;
}
-int npc_script_event(struct map_session_data* sd, enum npce_event type)
+static int npc_script_event(struct map_session_data *sd, enum npce_event type)
{
int i;
if (type == NPCE_MAX)
@@ -4666,7 +5039,7 @@ int npc_script_event(struct map_session_data* sd, enum npce_event type)
return i;
}
-void npc_read_event_script(void)
+static void npc_read_event_script(void)
{
int i;
struct {
@@ -4729,7 +5102,7 @@ void npc_read_event_script(void)
/**
* @see DBApply
*/
-int npc_path_db_clear_sub(union DBKey key, struct DBData *data, va_list args)
+static int npc_path_db_clear_sub(union DBKey key, struct DBData *data, va_list args)
{
struct npc_path_data *npd = DB->data2ptr(data);
nullpo_ret(npd);
@@ -4741,7 +5114,7 @@ int npc_path_db_clear_sub(union DBKey key, struct DBData *data, va_list args)
/**
* @see DBApply
*/
-int npc_ev_label_db_clear_sub(union DBKey key, struct DBData *data, va_list args)
+static int npc_ev_label_db_clear_sub(union DBKey key, struct DBData *data, va_list args)
{
struct linkdb_node **label_linkdb = DB->data2ptr(data);
linkdb_final(label_linkdb); // linked data (struct event_data*) is freed when clearing ev_db
@@ -4752,7 +5125,8 @@ int npc_ev_label_db_clear_sub(union DBKey key, struct DBData *data, va_list args
* Main npc file processing
* @param npc_min Minimum npc id - used to know how many NPCs were loaded
**/
-void npc_process_files( int npc_min ) {
+static void npc_process_files(int npc_min)
+{
struct npc_src_list *file; // Current file
ShowStatus("Loading NPCs...\r");
@@ -4772,7 +5146,8 @@ void npc_process_files( int npc_min ) {
}
//Clear then reload npcs files
-int npc_reload(void) {
+static int npc_reload(void)
+{
int npc_new_min = npc->npc_id;
struct s_mapiterator* iter;
struct block_list* bl;
@@ -4835,10 +5210,12 @@ int npc_reload(void) {
npc->npc_mob = npc->npc_cache_mob = npc->npc_delay_mob = 0;
// reset mapflags
+ map->zone_reload();
map->flags_init();
// Reprocess npc files and reload constants
itemdb->name_constants();
+ clan->set_constants();
npc_process_files( npc_new_min );
instance->reload();
@@ -4855,6 +5232,7 @@ int npc_reload(void) {
// OnInit -> OnInterIfInit -> OnInterIfInitOnce -> OnAgitInit -> OnAgitInit2
npc->event_do_oninit( true );
npc->market_fromsql();
+ npc->barter_fromsql();
// Execute rest of the startup events if connected to char-server. [Lance]
// Executed when connection is established with char-server in chrif_connectack
if( !intif->CheckForCharServer() ) {
@@ -4870,7 +5248,7 @@ int npc_reload(void) {
}
//Unload all npc in the given file
-bool npc_unloadfile(const char *filepath)
+static bool npc_unloadfile(const char *filepath)
{
struct DBIterator *iter = db_iterator(npc->name_db);
struct npc_data* nd = NULL;
@@ -4894,7 +5272,8 @@ bool npc_unloadfile(const char *filepath)
return found;
}
-void do_clear_npc(void) {
+static void do_clear_npc(void)
+{
db_clear(npc->name_db);
db_clear(npc->ev_db);
npc->ev_label_db->clear(npc->ev_label_db, npc->ev_label_db_clear_sub);
@@ -4903,7 +5282,8 @@ void do_clear_npc(void) {
/*==========================================
* Destructor
*------------------------------------------*/
-int do_final_npc(void) {
+static int do_final_npc(void)
+{
db_destroy(npc->ev_db);
npc->ev_label_db->destroy(npc->ev_label_db, npc->ev_label_db_clear_sub);
db_destroy(npc->name_db);
@@ -4914,7 +5294,8 @@ int do_final_npc(void) {
return 0;
}
-void npc_debug_warps_sub(struct npc_data* nd) {
+static void npc_debug_warps_sub(struct npc_data *nd)
+{
int16 m;
nullpo_retv(nd);
@@ -4942,7 +5323,8 @@ void npc_debug_warps_sub(struct npc_data* nd) {
}
}
-static void npc_debug_warps(void) {
+static void npc_debug_warps(void)
+{
int16 m, i;
for (m = 0; m < map->count; m++)
for (i = 0; i < map->list[m].npc_num; i++)
@@ -4952,7 +5334,8 @@ static void npc_debug_warps(void) {
/*==========================================
* npc initialization
*------------------------------------------*/
-int do_init_npc(bool minimal) {
+static int do_init_npc(bool minimal)
+{
int i;
unit->init_ud(&npc->base_ud);
@@ -4966,7 +5349,6 @@ int do_init_npc(bool minimal) {
npc_viewdb[i].class = i;
for( i = MAX_NPC_CLASS2_START; i < MAX_NPC_CLASS2_END; i++ )
npc_viewdb2[i - MAX_NPC_CLASS2_START].class = i;
-
npc->ev_db = strdb_alloc(DB_OPT_DUP_KEY|DB_OPT_RELEASE_DATA, EVENT_NAME_LENGTH);
npc->ev_label_db = strdb_alloc(DB_OPT_DUP_KEY|DB_OPT_RELEASE_DATA, NAME_LENGTH);
npc->name_db = strdb_alloc(DB_OPT_BASE, NAME_LENGTH);
@@ -4979,6 +5361,7 @@ int do_init_npc(bool minimal) {
// Should be loaded before npc processing, otherwise labels could overwrite constant values
// and lead to undefined behavior [Panikon]
itemdb->name_constants();
+ clan->set_constants();
if (!minimal) {
npc->timer_event_ers = ers_new(sizeof(struct timer_event_data),"clif.c::timer_event_ers",ERS_OPT_NONE);
@@ -5023,7 +5406,8 @@ int do_init_npc(bool minimal) {
return 0;
}
-void npc_defaults(void) {
+void npc_defaults(void)
+{
npc = &npc_s;
npc->npc_id = START_NPC_NUM;
@@ -5155,10 +5539,16 @@ void npc_defaults(void) {
npc->trader_pay = npc_trader_pay;
npc->trader_update = npc_trader_update;
npc->market_buylist = npc_market_buylist;
+ npc->barter_buylist = npc_barter_buylist;
npc->trader_open = npc_trader_open;
npc->market_fromsql = npc_market_fromsql;
npc->market_tosql = npc_market_tosql;
npc->market_delfromsql = npc_market_delfromsql;
npc->market_delfromsql_sub = npc_market_delfromsql_sub;
+ npc->barter_fromsql = npc_barter_fromsql;
+ npc->barter_tosql = npc_barter_tosql;
+ npc->barter_delfromsql = npc_barter_delfromsql;
+ npc->barter_delfromsql_sub = npc_barter_delfromsql_sub;
npc->db_checkid = npc_db_checkid;
+ npc->refresh = npc_refresh;
}
diff --git a/src/map/npc.h b/src/map/npc.h
index 6180e9765..d455a395b 100644
--- a/src/map/npc.h
+++ b/src/map/npc.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -41,10 +41,11 @@ enum npc_parse_options {
};
enum npc_shop_types {
- NST_ZENY,/* default */
- NST_CASH,/* official npc cash shop */
- NST_MARKET,/* official npc market type */
+ NST_ZENY, /* default */
+ NST_CASH, /* official npc cash shop */
+ NST_MARKET, /* official npc market type */
NST_CUSTOM,
+ NST_BARTER, /* official npc barter type */
/* */
NST_MAX,
};
@@ -56,21 +57,24 @@ struct npc_label_list {
char name[NAME_LENGTH];
int pos;
};
+
struct npc_item_list {
- unsigned short nameid;
- unsigned int value;
+ int nameid;
+ unsigned int value; // price or barter currency item id
+ int value2; // barter currency item amount
unsigned int qty;
};
+
struct npc_shop_data {
unsigned char type;/* what am i */
struct npc_item_list *item;/* list */
- unsigned short items;/* total */
+ unsigned int items;/* total */
};
struct npc_parse;
struct npc_data {
struct block_list bl;
struct unit_data *ud;
- struct view_data *vd;
+ struct view_data vd;
unsigned int option;
struct npc_data *master_nd;
short class_;
@@ -83,6 +87,8 @@ struct npc_data {
uint8 dir;
uint8 area_size;
+ int clan_id;
+
unsigned size : 2;
struct status_data status;
@@ -120,12 +126,12 @@ struct npc_data {
struct mob_data *md;
time_t kill_time;
char killer_name[NAME_LENGTH];
+ int spawn_timer;
} tomb;
} u;
struct hplugin_data_store *hdata; ///< HPM Plugin Data Store
};
-
#define START_NPC_NUM 110000000
enum actor_classes {
@@ -142,7 +148,7 @@ enum actor_classes {
#define MAX_NPC_CLASS 1000
// New NPC range
#define MAX_NPC_CLASS2_START 10001
-#define MAX_NPC_CLASS2_END 10203
+#define MAX_NPC_CLASS2_END 10310
//Script NPC events.
enum npce_event {
@@ -304,12 +310,18 @@ struct npc_interface {
bool (*trader_pay) (struct npc_data *nd, struct map_session_data *sd, int price, int points);
void (*trader_update) (int master);
int (*market_buylist) (struct map_session_data *sd, struct itemlist *item_list);
+ int (*barter_buylist) (struct map_session_data *sd, struct barteritemlist *item_list);
bool (*trader_open) (struct map_session_data *sd, struct npc_data *nd);
void (*market_fromsql) (void);
- void (*market_tosql) (struct npc_data *nd, unsigned short index);
- void (*market_delfromsql) (struct npc_data *nd, unsigned short index);
- void (*market_delfromsql_sub) (const char *npcname, unsigned short index);
+ void (*market_tosql) (struct npc_data *nd, int index);
+ void (*market_delfromsql) (struct npc_data *nd, int index);
+ void (*market_delfromsql_sub) (const char *npcname, int index);
+ void (*barter_fromsql) (void);
+ void (*barter_tosql) (struct npc_data *nd, int index);
+ void (*barter_delfromsql) (struct npc_data *nd, int index);
+ void (*barter_delfromsql_sub) (const char *npcname, int itemId, int itemId2, int amount2);
bool (*db_checkid) (const int id);
+ void (*refresh) (struct npc_data* nd);
/**
* For the Secure NPC Timeout option (check config/Secure.h) [RR]
**/
diff --git a/src/map/npc_chat.c b/src/map/npc_chat.c
index b8caa5df3..92393122e 100644
--- a/src/map/npc_chat.c
+++ b/src/map/npc_chat.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -40,8 +40,8 @@
/**
* interface sources
**/
-struct npc_chat_interface npc_chat_s;
-struct pcre_interface libpcre_s;
+static struct npc_chat_interface npc_chat_s;
+static struct pcre_interface libpcre_s;
struct npc_chat_interface *npc_chat;
struct pcre_interface *libpcre;
@@ -98,7 +98,7 @@ struct pcre_interface *libpcre;
*
* This does NOT do the list management
*/
-void finalize_pcrematch_entry(struct pcrematch_entry* e)
+static void finalize_pcrematch_entry(struct pcrematch_entry *e)
{
nullpo_retv(e);
libpcre->free(e->pcre_);
@@ -110,7 +110,8 @@ void finalize_pcrematch_entry(struct pcrematch_entry* e)
/**
* Lookup (and possibly create) a new set of patterns by the set id
*/
-struct pcrematch_set* lookup_pcreset(struct npc_data* nd, int setid) {
+static struct pcrematch_set *lookup_pcreset(struct npc_data *nd, int setid)
+{
struct pcrematch_set *pcreset;
struct npc_parse *npcParse;
@@ -152,7 +153,7 @@ struct pcrematch_set* lookup_pcreset(struct npc_data* nd, int setid) {
*
* if the setid does not exist, this will silently return
*/
-void activate_pcreset(struct npc_data* nd, int setid)
+static void activate_pcreset(struct npc_data *nd, int setid)
{
struct pcrematch_set *pcreset;
struct npc_parse *npcParse;
@@ -187,7 +188,7 @@ void activate_pcreset(struct npc_data* nd, int setid)
*
* if the setid does not exist, this will silently return
*/
-void deactivate_pcreset(struct npc_data* nd, int setid)
+static void deactivate_pcreset(struct npc_data *nd, int setid)
{
struct pcrematch_set *pcreset;
struct npc_parse *npcParse;
@@ -225,7 +226,7 @@ void deactivate_pcreset(struct npc_data* nd, int setid)
/**
* delete a set of patterns.
*/
-void delete_pcreset(struct npc_data* nd, int setid)
+static void delete_pcreset(struct npc_data *nd, int setid)
{
int active = 1;
struct pcrematch_set *pcreset;
@@ -277,7 +278,7 @@ void delete_pcreset(struct npc_data* nd, int setid)
/**
* create a new pattern entry
*/
-struct pcrematch_entry* create_pcrematch_entry(struct pcrematch_set* set)
+static struct pcrematch_entry *create_pcrematch_entry(struct pcrematch_set *set)
{
struct pcrematch_entry *e;
struct pcrematch_entry *last;
@@ -310,7 +311,7 @@ struct pcrematch_entry* create_pcrematch_entry(struct pcrematch_set* set)
/**
* define/compile a new pattern
*/
-void npc_chat_def_pattern(struct npc_data* nd, int setid, const char* pattern, const char* label)
+static void npc_chat_def_pattern(struct npc_data *nd, int setid, const char *pattern, const char *label)
{
const char *err;
int erroff;
@@ -330,7 +331,7 @@ void npc_chat_def_pattern(struct npc_data* nd, int setid, const char* pattern, c
*
* this could be more efficient but.. how often do you do this?
*/
-void npc_chat_finalize(struct npc_data* nd)
+static void npc_chat_finalize(struct npc_data *nd)
{
struct npc_parse *npcParse;
@@ -352,7 +353,7 @@ void npc_chat_finalize(struct npc_data* nd)
/**
* Handler called whenever a global message is spoken in a NPC's area
*/
-int npc_chat_sub(struct block_list* bl, va_list ap)
+static int npc_chat_sub(struct block_list *bl, va_list ap)
{
struct npc_data *nd = NULL;
struct npc_parse *npcParse = NULL;
@@ -463,7 +464,8 @@ BUILDIN(deletepset)
return true;
}
-void npc_chat_defaults(void) {
+void npc_chat_defaults(void)
+{
npc_chat = &npc_chat_s;
npc_chat->sub = npc_chat_sub;
diff --git a/src/map/packets.h b/src/map/packets.h
index c622cb89d..44a49b387 100644
--- a/src/map/packets.h
+++ b/src/map/packets.h
@@ -18,3433 +18,1913 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-//Included directly by clif.h in packet_loaddb()
+//Included directly by clif.c in packet_loaddb()
#ifndef MAP_PACKETS_H
#define MAP_PACKETS_H
#ifndef packet
- #define packet(a,b,...)
-#endif
-
-#ifndef packetKeys
- #define packetKeys(a,b,c)
+ #define packet(a,...)
#endif
/*
* packet syntax
- * - packet(packet_id,length)
+ * - packet(packet_id)
* OR
- * - packet(packet_id,length,function,offset ( specifies the offset of a packet field in bytes from the begin of the packet ),...)
- * - Example: packet(0x0072,19,clif->pWantToConnection,2,6,10,14,18);
+ * - packet(packet_id,function,offset ( specifies the offset of a packet field in bytes from the begin of the packet),...)
+ * - Example: packet(0x0072,clif->pWantToConnection,2,6,10,14,18);
*/
-packet(0x0064,55);
-packet(0x0065,17);
-packet(0x0066,6);
-packet(0x0067,37);
-packet(0x0068,46);
-packet(0x0069,-1);
-packet(0x006a,23);
-packet(0x006b,-1);
-packet(0x006c,3);
-packet(0x006d,108);
-packet(0x006e,3);
-packet(0x006f,2);
-packet(0x0070,6);
-packet(0x0071,28);
-packet(0x0072,19,clif->pWantToConnection,2,6,10,14,18);
-packet(0x0073,11);
-packet(0x0074,3);
-packet(0x0075,-1);
-packet(0x0076,9);
-packet(0x0077,5);
-packet(0x0078,54);
-packet(0x0079,53);
-packet(0x007a,58);
-packet(0x007b,60);
-packet(0x007c,41);
-packet(0x007d,2,clif->pLoadEndAck,0);
-packet(0x007e,6,clif->pTickSend,2);
-packet(0x007f,6);
-packet(0x0080,7);
-packet(0x0081,3);
-packet(0x0082,2);
-packet(0x0083,2);
-packet(0x0084,2);
-packet(0x0085,5,clif->pWalkToXY,2);
-packet(0x0086,16);
-packet(0x0087,12);
-packet(0x0088,10);
-packet(0x0089,7,clif->pActionRequest,2,6);
-packet(0x008a,29);
-packet(0x008b,2);
-packet(0x008c,-1,clif->pGlobalMessage,2,4);
-packet(0x008d,-1);
-packet(0x008e,-1);
-//packet(0x008f,-1);
-packet(0x0090,7,clif->pNpcClicked,2);
-packet(0x0091,22);
-packet(0x0092,28);
-packet(0x0093,2);
-packet(0x0094,6,clif->pGetCharNameRequest,2);
-packet(0x0095,30);
-packet(0x0096,-1,clif->pWisMessage,2,4,28);
-packet(0x0097,-1);
-packet(0x0098,3);
-packet(0x0099,-1,clif->pBroadcast,2,4);
-packet(0x009a,-1);
-packet(0x009b,5,clif->pChangeDir,2,4);
-packet(0x009c,9);
-packet(0x009d,17);
-packet(0x009e,17);
-packet(0x009f,6,clif->pTakeItem,2);
-packet(0x00a0,23);
-packet(0x00a1,6);
-packet(0x00a2,6,clif->pDropItem,2,4);
-packet(0x00a3,-1);
-packet(0x00a4,-1);
-packet(0x00a5,-1);
-packet(0x00a6,-1);
-packet(0x00a7,8,clif->pUseItem,2,4);
-packet(0x00a8,7);
-packet(0x00a9,6,clif->pEquipItem,2,4);
-packet(0x00aa,7);
-packet(0x00ab,4,clif->pUnequipItem,2);
-packet(0x00ac,7);
-//packet(0x00ad,-1);
-packet(0x00ae,-1);
-packet(0x00af,6);
-packet(0x00b0,8);
-packet(0x00b1,8);
-packet(0x00b2,3,clif->pRestart,2);
-packet(0x00b3,3);
-packet(0x00b4,-1);
-packet(0x00b5,6);
-packet(0x00b6,6);
-packet(0x00b7,-1);
-packet(0x00b8,7,clif->pNpcSelectMenu,2,6);
-packet(0x00b9,6,clif->pNpcNextClicked,2);
-packet(0x00ba,2);
-packet(0x00bb,5,clif->pStatusUp,2,4);
-packet(0x00bc,6);
-packet(0x00bd,44);
-packet(0x00be,5);
-packet(0x00bf,3,clif->pEmotion,2);
-packet(0x00c0,7);
-packet(0x00c1,2,clif->pHowManyConnections,0);
-packet(0x00c2,6);
-packet(0x00c3,8);
-packet(0x00c4,6);
-packet(0x00c5,7,clif->pNpcBuySellSelected,2,6);
-packet(0x00c6,-1);
-packet(0x00c7,-1);
-packet(0x00c8,-1,clif->pNpcBuyListSend,2,4);
-packet(0x00c9,-1,clif->pNpcSellListSend,2,4);
-packet(0x00ca,3);
-packet(0x00cb,3);
-packet(0x00cc,6,clif->pGMKick,2);
-packet(0x00cd,3);
-packet(0x00ce,2,clif->pGMKickAll,0);
-packet(0x00cf,27,clif->pPMIgnore,2,26);
-packet(0x00d0,3,clif->pPMIgnoreAll,2);
-packet(0x00d1,4);
-packet(0x00d2,4);
-packet(0x00d3,2,clif->pPMIgnoreList,0);
-packet(0x00d4,-1);
-packet(0x00d5,-1,clif->pCreateChatRoom,2,4,6,7,15);
-packet(0x00d6,3);
-packet(0x00d7,-1);
-packet(0x00d8,6);
-packet(0x00d9,14,clif->pChatAddMember,2,6);
-packet(0x00da,3);
-packet(0x00db,-1);
-packet(0x00dc,28);
-packet(0x00dd,29);
-packet(0x00de,-1,clif->pChatRoomStatusChange,2,4,6,7,15);
-packet(0x00df,-1);
-packet(0x00e0,30,clif->pChangeChatOwner,2,6);
-packet(0x00e1,30);
-packet(0x00e2,26,clif->pKickFromChat,2);
-packet(0x00e3,2,clif->pChatLeave,0);
-packet(0x00e4,6,clif->pTradeRequest,2);
-packet(0x00e5,26);
-packet(0x00e6,3,clif->pTradeAck,2);
-packet(0x00e7,3);
-packet(0x00e8,8,clif->pTradeAddItem,2,4);
-packet(0x00e9,19);
-packet(0x00ea,5);
-packet(0x00eb,2,clif->pTradeOk,0);
-packet(0x00ec,3);
-packet(0x00ed,2,clif->pTradeCancel,0);
-packet(0x00ee,2);
-packet(0x00ef,2,clif->pTradeCommit,0);
-packet(0x00f0,3);
-packet(0x00f1,2);
-packet(0x00f2,6);
-packet(0x00f3,8,clif->pMoveToKafra,2,4);
-packet(0x00f4,21);
-packet(0x00f5,8,clif->pMoveFromKafra,2,4);
-packet(0x00f6,8);
-packet(0x00f7,2,clif->pCloseKafra,0);
-packet(0x00f8,2);
-packet(0x00f9,26,clif->pCreateParty,2);
-packet(0x00fa,3);
-packet(0x00fb,-1);
-packet(0x00fc,6,clif->pPartyInvite,2);
-packet(0x00fd,27);
-packet(0x00fe,30);
-packet(0x00ff,10,clif->pReplyPartyInvite,2,6);
-packet(0x0100,2,clif->pLeaveParty,0);
-packet(0x0101,6);
-packet(0x0102,6,clif->pPartyChangeOption,2);
-packet(0x0103,30,clif->pRemovePartyMember,2,6);
-packet(0x0104,79);
-packet(0x0105,31);
-packet(0x0106,10);
-packet(0x0107,10);
-packet(0x0108,-1,clif->pPartyMessage,2,4);
-packet(0x0109,-1);
-packet(0x010a,4);
-packet(0x010b,6);
-packet(0x010c,6);
-packet(0x010d,2);
-packet(0x010e,11);
-packet(0x010f,-1);
-packet(0x0110,10);
-packet(0x0111,39);
-packet(0x0112,4,clif->pSkillUp,2);
-packet(0x0113,10,clif->pUseSkillToId,2,4,6);
-packet(0x0114,31);
-packet(0x0115,35);
-packet(0x0116,10,clif->pUseSkillToPos,2,4,6,8);
-packet(0x0117,18);
-packet(0x0118,2,clif->pStopAttack,0);
-packet(0x0119,13);
-packet(0x011a,15);
-packet(0x011b,20,clif->pUseSkillMap,2,4);
-packet(0x011c,68);
-packet(0x011d,2,clif->pRequestMemo,0);
-packet(0x011e,3);
-packet(0x011f,16);
-packet(0x0120,6);
-packet(0x0121,14);
-packet(0x0122,-1);
-packet(0x0123,-1);
-packet(0x0124,21);
-packet(0x0125,8);
-packet(0x0126,8,clif->pPutItemToCart,2,4);
-packet(0x0127,8,clif->pGetItemFromCart,2,4);
-packet(0x0128,8,clif->pMoveFromKafraToCart,2,4);
-packet(0x0129,8,clif->pMoveToKafraFromCart,2,4);
-packet(0x012a,2,clif->pRemoveOption,0);
-packet(0x012b,2);
-packet(0x012c,3);
-packet(0x012d,4);
-packet(0x012e,2,clif->pCloseVending,0);
-packet(0x012f,-1);
-packet(0x0130,6,clif->pVendingListReq,2);
-packet(0x0131,86);
-packet(0x0132,6);
-packet(0x0133,-1);
-packet(0x0134,-1,clif->pPurchaseReq,2,4,8);
-packet(0x0135,7);
-packet(0x0136,-1);
-packet(0x0137,6);
-packet(0x0138,3);
-packet(0x0139,16);
-packet(0x013a,4);
-packet(0x013b,4);
-packet(0x013c,4);
-packet(0x013d,6);
-packet(0x013e,24);
-packet(0x013f,26,clif->pGM_Monster_Item,2);
-packet(0x0140,22,clif->pMapMove,2,18,20);
-packet(0x0141,14);
-packet(0x0142,6);
-packet(0x0143,10,clif->pNpcAmountInput,2,6);
-packet(0x0144,23);
-packet(0x0145,19);
-packet(0x0146,6,clif->pNpcCloseClicked,2);
-packet(0x0147,39);
-packet(0x0148,8);
-packet(0x0149,9,clif->pGMReqNoChat,2,6,7);
-packet(0x014a,6);
-packet(0x014b,27);
-packet(0x014c,-1);
-packet(0x014d,2,clif->pGuildCheckMaster,0);
-packet(0x014e,6);
-packet(0x014f,6,clif->pGuildRequestInfo,2);
-packet(0x0150,110);
-packet(0x0151,6,clif->pGuildRequestEmblem,2);
-packet(0x0152,-1);
-packet(0x0153,-1,clif->pGuildChangeEmblem,2,4);
-packet(0x0154,-1);
-packet(0x0155,-1,clif->pGuildChangeMemberPosition,2);
-packet(0x0156,-1);
-packet(0x0157,6);
-packet(0x0158,-1);
-packet(0x0159,54,clif->pGuildLeave,2,6,10,14);
-packet(0x015a,66);
-packet(0x015b,54,clif->pGuildExpulsion,2,6,10,14);
-packet(0x015c,90);
-packet(0x015d,42,clif->pGuildBreak,2);
-packet(0x015e,6);
-packet(0x015f,42);
-packet(0x0160,-1);
-packet(0x0161,-1,clif->pGuildChangePositionInfo,2);
-packet(0x0162,-1);
-packet(0x0163,-1);
-packet(0x0164,-1);
-packet(0x0165,30,clif->pCreateGuild,6);
-packet(0x0166,-1);
-packet(0x0167,3);
-packet(0x0168,14,clif->pGuildInvite,2);
-packet(0x0169,3);
-packet(0x016a,30);
-packet(0x016b,10,clif->pGuildReplyInvite,2,6);
-packet(0x016c,43);
-packet(0x016d,14);
-packet(0x016e,186,clif->pGuildChangeNotice,2,6,66);
-packet(0x016f,182);
-packet(0x0170,14,clif->pGuildRequestAlliance,2);
-packet(0x0171,30);
-packet(0x0172,10,clif->pGuildReplyAlliance,2,6);
-packet(0x0173,3);
-packet(0x0174,-1);
-packet(0x0175,6);
-packet(0x0176,106);
-packet(0x0177,-1);
-packet(0x0178,4,clif->pItemIdentify,2);
-packet(0x0179,5);
-packet(0x017a,4,clif->pUseCard,2);
-packet(0x017b,-1);
-packet(0x017c,6,clif->pInsertCard,2,4);
-packet(0x017d,7);
-packet(0x017e,-1,clif->pGuildMessage,2,4);
-packet(0x017f,-1);
-packet(0x0180,6,clif->pGuildOpposition,2);
-packet(0x0181,3);
-packet(0x0182,106);
-packet(0x0183,10,clif->pGuildDelAlliance,2,6);
-packet(0x0184,10);
-packet(0x0185,34);
-//packet(0x0186,-1);
-packet(0x0187,6);
-packet(0x0188,8);
-packet(0x0189,4);
-packet(0x018a,4,clif->pQuitGame,0);
-packet(0x018b,4);
-packet(0x018c,29);
-packet(0x018d,-1);
-packet(0x018e,10,clif->pProduceMix,2,4,6,8);
-packet(0x018f,6);
-packet(0x0190,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
-packet(0x0191,86);
-packet(0x0192,24);
-packet(0x0193,6,clif->pSolveCharName,2);
-packet(0x0194,30);
-packet(0x0195,102);
-packet(0x0196,9);
-packet(0x0197,4,clif->pResetChar,2);
-packet(0x0198,8,clif->pGMChangeMapType,2,4,6);
-packet(0x0199,4);
-packet(0x019a,14);
-packet(0x019b,10);
-packet(0x019c,-1,clif->pLocalBroadcast,2,4);
-packet(0x019d,6,clif->pGMHide,0);
-packet(0x019e,2);
-packet(0x019f,6,clif->pCatchPet,2);
-packet(0x01a0,3);
-packet(0x01a1,3,clif->pPetMenu,2);
-packet(0x01a2,35);
-packet(0x01a3,5);
-packet(0x01a4,11);
-packet(0x01a5,26,clif->pChangePetName,2);
-packet(0x01a6,-1);
-packet(0x01a7,4,clif->pSelectEgg,2);
-packet(0x01a8,4);
-packet(0x01a9,6,clif->pSendEmotion,2);
-packet(0x01aa,10);
-packet(0x01ab,12);
-packet(0x01ac,6);
-packet(0x01ad,-1);
-packet(0x01ae,4,clif->pSelectArrow,2);
-packet(0x01af,4,clif->pChangeCart,2);
-packet(0x01b0,11);
-packet(0x01b1,7);
-packet(0x01b2,-1,clif->pOpenVending,2,4,84,85);
-packet(0x01b3,67);
-packet(0x01b4,12);
-packet(0x01b5,18);
-packet(0x01b6,114);
-packet(0x01b7,6);
-packet(0x01b8,3);
-packet(0x01b9,6);
-packet(0x01ba,26,clif->pGMShift,2);
-packet(0x01bb,26,clif->pGMShift,2);
-packet(0x01bc,26,clif->pGMRecall,2);
-packet(0x01bd,26,clif->pGMRecall,2);
-packet(0x01be,2);
-packet(0x01bf,3);
-packet(0x01c0,2);
-packet(0x01c1,14);
-packet(0x01c2,10);
-packet(0x01c3,-1);
-packet(0x01c4,22);
-packet(0x01c5,22);
-packet(0x01c6,4);
-packet(0x01c7,2);
-packet(0x01c8,13);
-packet(0x01c9,97);
-//packet(0x01ca,-1);
-packet(0x01cb,9);
-packet(0x01cc,9);
-packet(0x01cd,30);
-packet(0x01ce,6,clif->pAutoSpell,2);
-packet(0x01cf,28);
-packet(0x01d0,8);
-packet(0x01d1,14);
-packet(0x01d2,10);
-packet(0x01d3,35);
-packet(0x01d4,6);
-packet(0x01d5,-1,clif->pNpcStringInput,2,4,8);
-packet(0x01d6,4);
-packet(0x01d7,11);
-packet(0x01d8,54);
-packet(0x01d9,53);
-packet(0x01da,60);
-packet(0x01db,2);
-packet(0x01dc,-1);
-packet(0x01dd,47);
-packet(0x01de,33);
-packet(0x01df,6,clif->pGMReqAccountName,2);
-packet(0x01e0,30);
-packet(0x01e1,8);
-packet(0x01e2,34);
-packet(0x01e3,14);
-packet(0x01e4,2);
-packet(0x01e5,6);
-packet(0x01e6,26);
-packet(0x01e7,2,clif->pNoviceDoriDori,0);
-packet(0x01e8,28,clif->pCreateParty2,2);
-packet(0x01e9,81);
-packet(0x01ea,6);
-packet(0x01eb,10);
-packet(0x01ec,26);
-packet(0x01ed,2,clif->pNoviceExplosionSpirits,0);
-packet(0x01ee,-1);
-packet(0x01ef,-1);
-packet(0x01f0,-1);
-packet(0x01f1,-1);
-packet(0x01f2,20);
-packet(0x01f3,10);
-packet(0x01f4,32);
-packet(0x01f5,9);
-packet(0x01f6,34);
-packet(0x01f7,14,clif->pAdopt_reply,0);
-packet(0x01f8,2);
-packet(0x01f9,6,clif->pAdopt_request,0);
-packet(0x01fa,48);
-packet(0x01fb,56);
-packet(0x01fc,-1);
-packet(0x01fd,4,clif->pRepairItem,2);
-packet(0x01fe,5);
-packet(0x01ff,10);
-packet(0x0200,26);
-packet(0x0201,-1);
-packet(0x0202,26,clif->pFriendsListAdd,2);
-packet(0x0203,10,clif->pFriendsListRemove,2,6);
-packet(0x0204,18);
-packet(0x0205,26);
-packet(0x0206,11);
-packet(0x0207,34);
-packet(0x0208,11,clif->pFriendsListReply,2,6,10);
-packet(0x0209,36);
-packet(0x020a,10);
-//packet(0x020b,-1);
-//packet(0x020c,-1);
-packet(0x020d,-1);
-packet(0x974,2,clif->cancelmergeitem);
-packet(0x96e,-1,clif->ackmergeitems);
+packet(0x0072,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+packet(0x007d,clif->pLoadEndAck,0);
+packet(0x007e,clif->pTickSend,2); // CZ_REQUEST_TIME
+packet(0x0085,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+packet(0x0089,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+packet(0x008c,clif->pGlobalMessage,2,4);
+packet(0x0090,clif->pNpcClicked,2);
+packet(0x0094,clif->pGetCharNameRequest,2); // CZ_REQNAME
+packet(0x0096,clif->pWisMessage,2,4,28);
+packet(0x0099,clif->pBroadcast,2,4);
+packet(0x009b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+packet(0x009f,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+packet(0x00a2,clif->pDropItem,2,4); // CZ_ITEM_THROW
+packet(0x00a7,clif->pUseItem,2,4);
+packet(0x00a9,clif->pEquipItem,2,4);
+packet(0x00ab,clif->pUnequipItem,2);
+packet(0x00b2,clif->pRestart,2);
+packet(0x00b8,clif->pNpcSelectMenu,2,6);
+packet(0x00b9,clif->pNpcNextClicked,2);
+packet(0x00bb,clif->pStatusUp,2,4);
+packet(0x00bf,clif->pEmotion,2);
+packet(0x00c1,clif->pHowManyConnections,0);
+packet(0x00c5,clif->pNpcBuySellSelected,2,6);
+packet(0x00c8,clif->pNpcBuyListSend,2,4);
+packet(0x00c9,clif->pNpcSellListSend,2,4);
+packet(0x00cc,clif->pGMKick,2);
+packet(0x00ce,clif->pGMKickAll,0);
+packet(0x00cf,clif->pPMIgnore,2,26);
+packet(0x00d0,clif->pPMIgnoreAll,2);
+packet(0x00d3,clif->pPMIgnoreList,0);
+packet(0x00d5,clif->pCreateChatRoom,2,4,6,7,15);
+packet(0x00d9,clif->pChatAddMember,2,6);
+packet(0x00de,clif->pChatRoomStatusChange,2,4,6,7,15);
+packet(0x00e0,clif->pChangeChatOwner,2,6);
+packet(0x00e2,clif->pKickFromChat,2);
+packet(0x00e3,clif->pChatLeave,0);
+packet(0x00e4,clif->pTradeRequest,2);
+packet(0x00e6,clif->pTradeAck,2);
+packet(0x00e8,clif->pTradeAddItem,2,4);
+packet(0x00eb,clif->pTradeOk,0);
+packet(0x00ed,clif->pTradeCancel,0);
+packet(0x00ef,clif->pTradeCommit,0);
+packet(0x00f3,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+packet(0x00f5,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+packet(0x00f7,clif->pCloseKafra,0);
+packet(0x00f9,clif->pCreateParty,2);
+packet(0x00fc,clif->pPartyInvite,2);
+packet(0x00ff,clif->pReplyPartyInvite,2,6);
+packet(0x0100,clif->pLeaveParty,0);
+packet(0x0102,clif->pPartyChangeOption,2);
+packet(0x0103,clif->pRemovePartyMember,2,6);
+packet(0x0108,clif->pPartyMessage,2,4);
+packet(0x0112,clif->pSkillUp,2);
+packet(0x0113,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+packet(0x0116,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+packet(0x0118,clif->pStopAttack,0);
+packet(0x011b,clif->pUseSkillMap,2,4);
+packet(0x011d,clif->pRequestMemo,0);
+packet(0x0126,clif->pPutItemToCart,2,4);
+packet(0x0127,clif->pGetItemFromCart,2,4);
+packet(0x0128,clif->pMoveFromKafraToCart,2,4);
+packet(0x0129,clif->pMoveToKafraFromCart,2,4);
+packet(0x012a,clif->pRemoveOption,0);
+packet(0x012e,clif->pCloseVending,0);
+packet(0x0130,clif->pVendingListReq,2);
+packet(0x0134,clif->pPurchaseReq,2,4,8);
+packet(0x013f,clif->pGM_Monster_Item,2);
+packet(0x0140,clif->pMapMove,2,18,20);
+packet(0x0143,clif->pNpcAmountInput,2,6);
+packet(0x0146,clif->pNpcCloseClicked,2);
+packet(0x0149,clif->pGMReqNoChat,2,6,7);
+packet(0x014d,clif->pGuildCheckMaster,0);
+packet(0x014f,clif->pGuildRequestInfo,2);
+packet(0x0151,clif->pGuildRequestEmblem,2);
+packet(0x0153,clif->pGuildChangeEmblem,2,4);
+packet(0x0155,clif->pGuildChangeMemberPosition,2);
+packet(0x0159,clif->pGuildLeave,2,6,10,14);
+packet(0x015b,clif->pGuildExpulsion,2,6,10,14);
+packet(0x015d,clif->pGuildBreak,2);
+packet(0x0161,clif->pGuildChangePositionInfo,2);
+packet(0x0165,clif->pCreateGuild,6);
+packet(0x0168,clif->pGuildInvite,2);
+packet(0x016b,clif->pGuildReplyInvite,2,6);
+packet(0x016e,clif->pGuildChangeNotice,2,6,66);
+packet(0x0170,clif->pGuildRequestAlliance,2);
+packet(0x0172,clif->pGuildReplyAlliance,2,6);
+packet(0x0178,clif->pItemIdentify,2);
+packet(0x017a,clif->pUseCard,2);
+packet(0x017c,clif->pInsertCard,2,4);
+packet(0x017e,clif->pGuildMessage,2,4);
+packet(0x0180,clif->pGuildOpposition,2);
+packet(0x0183,clif->pGuildDelAlliance,2,6);
+packet(0x018a,clif->pQuitGame,0);
+packet(0x018e,clif->pProduceMix,2,4,6,8);
+packet(0x0190,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+packet(0x0193,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+packet(0x0197,clif->pResetChar,2);
+packet(0x0198,clif->pGMChangeMapType,2,4,6);
+packet(0x019c,clif->pLocalBroadcast,2,4);
+packet(0x019d,clif->pGMHide,0);
+packet(0x019f,clif->pCatchPet,2);
+packet(0x01a1,clif->pPetMenu,2);
+packet(0x01a5,clif->pChangePetName,2);
+packet(0x01a7,clif->pSelectEgg,2);
+packet(0x01a9,clif->pSendEmotion,2);
+packet(0x01ae,clif->pSelectArrow,2);
+packet(0x01af,clif->pChangeCart,2);
+packet(0x01b2,clif->pOpenVending,2,4,84,85);
+packet(0x01ba,clif->pGMShift,2);
+packet(0x01bb,clif->pGMShift,2);
+packet(0x01bc,clif->pGMRecall,2);
+packet(0x01bd,clif->pGMRecall,2);
+packet(0x01c0,clif->pReqRemainTime);
+packet(0x01ce,clif->pAutoSpell,2);
+packet(0x01d5,clif->pNpcStringInput,2,4,8);
+packet(0x01df,clif->pGMReqAccountName,2);
+packet(0x01e7,clif->pNoviceDoriDori,0);
+packet(0x01e8,clif->pCreateParty2,2);
+packet(0x01ed,clif->pNoviceExplosionSpirits,0);
+packet(0x01f7,clif->pAdopt_reply,0);
+packet(0x01f9,clif->pAdopt_request,0);
+packet(0x01fd,clif->pRepairItem,2);
+packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+packet(0x0203,clif->pFriendsListRemove,2,6);
+packet(0x0208,clif->pFriendsListReply,2,6,10);
+packet(0x974,clif->cancelmergeitem);
+packet(0x96e,clif->ackmergeitems);
//2004-07-05aSakexe
#if PACKETVER >= 20040705
- packet(0x0072,22,clif->pWantToConnection,5,9,13,17,21);
- packet(0x0085,8,clif->pWalkToXY,5);
- packet(0x00a7,13,clif->pUseItem,5,9);
- packet(0x0113,15,clif->pUseSkillToId,4,9,11);
- packet(0x0116,15,clif->pUseSkillToPos,4,9,11,13);
- packet(0x0190,95,clif->pUseSkillToPosMoreInfo,4,9,11,13,15);
- packet(0x0208,14,clif->pFriendsListReply,2,6,10);
- packet(0x020e,24);
+ packet(0x0072,clif->pWantToConnection,5,9,13,17,21);
+ packet(0x0085,clif->pWalkToXY,5);
+ packet(0x00a7,clif->pUseItem,5,9);
+ packet(0x0113,clif->pUseSkillToId,4,9,11);
+ packet(0x0116,clif->pUseSkillToPos,4,9,11,13);
+ packet(0x0190,clif->pUseSkillToPosMoreInfo,4,9,11,13,15);
+ packet(0x0208,clif->pFriendsListReply,2,6,10);
#endif
//2004-07-13aSakexe
#if PACKETVER >= 20040713
- packet(0x0072,39,clif->pWantToConnection,12,22,30,34,38);
- packet(0x0085,9,clif->pWalkToXY,6);
- packet(0x009b,13,clif->pChangeDir,5,12);
- packet(0x009f,10,clif->pTakeItem,6);
- packet(0x00a7,17,clif->pUseItem,6,13);
- packet(0x0113,19,clif->pUseSkillToId,7,9,15);
- packet(0x0116,19,clif->pUseSkillToPos,7,9,15,17);
- packet(0x0190,99,clif->pUseSkillToPosMoreInfo,7,9,15,17,19);
+ packet(0x0072,clif->pWantToConnection,12,22,30,34,38);
+ packet(0x0085,clif->pWalkToXY,6);
+ packet(0x009b,clif->pChangeDir,5,12);
+ packet(0x009f,clif->pTakeItem,6);
+ packet(0x00a7,clif->pUseItem,6,13);
+ packet(0x0113,clif->pUseSkillToId,7,9,15);
+ packet(0x0116,clif->pUseSkillToPos,7,9,15,17);
+ packet(0x0190,clif->pUseSkillToPosMoreInfo,7,9,15,17,19);
#endif
//2004-07-26aSakexe
#if PACKETVER >= 20040726
- packet(0x0072,14,clif->pDropItem,5,12);
- packet(0x007e,33,clif->pWantToConnection,12,18,24,28,32);
- packet(0x0085,20,clif->pUseSkillToId,7,12,16);
- packet(0x0089,15,clif->pGetCharNameRequest,11);
- packet(0x008c,23,clif->pUseSkillToPos,3,6,17,21);
- packet(0x0094,10,clif->pTakeItem,6);
- packet(0x009b,6,clif->pWalkToXY,3);
- packet(0x009f,13,clif->pChangeDir,5,12);
- packet(0x00a2,103,clif->pUseSkillToPosMoreInfo,3,6,17,21,23);
- packet(0x00a7,12,clif->pSolveCharName,8);
- packet(0x00f3,-1,clif->pGlobalMessage,2,4);
- packet(0x00f5,17,clif->pUseItem,6,12);
- packet(0x00f7,10,clif->pTickSend,6);
- packet(0x0113,16,clif->pMoveToKafra,5,12);
- packet(0x0116,2,clif->pCloseKafra,0);
- packet(0x0190,26,clif->pMoveFromKafra,10,22);
- packet(0x0193,9,clif->pActionRequest,3,8);
+ packet(0x0072,clif->pDropItem,5,12);
+ packet(0x007e,clif->pWantToConnection,12,18,24,28,32);
+ packet(0x0085,clif->pUseSkillToId,7,12,16);
+ packet(0x0089,clif->pGetCharNameRequest,11);
+ packet(0x008c,clif->pUseSkillToPos,3,6,17,21);
+ packet(0x0094,clif->pTakeItem,6);
+ packet(0x009b,clif->pWalkToXY,3);
+ packet(0x009f,clif->pChangeDir,5,12);
+ packet(0x00a2,clif->pUseSkillToPosMoreInfo,3,6,17,21,23);
+ packet(0x00a7,clif->pSolveCharName,8);
+ packet(0x00f3,clif->pGlobalMessage,2,4);
+ packet(0x00f5,clif->pUseItem,6,12);
+ packet(0x00f7,clif->pTickSend,6);
+ packet(0x0113,clif->pMoveToKafra,5,12);
+ packet(0x0116,clif->pCloseKafra,0);
+ packet(0x0190,clif->pMoveFromKafra,10,22);
+ packet(0x0193,clif->pActionRequest,3,8);
#endif
//2004-08-09aSakexe
#if PACKETVER >= 20040809
- packet(0x0072,17,clif->pDropItem,8,15);
- packet(0x007e,37,clif->pWantToConnection,9,21,28,32,36);
- packet(0x0085,26,clif->pUseSkillToId,11,18,22);
- packet(0x0089,12,clif->pGetCharNameRequest,8);
- packet(0x008c,40,clif->pUseSkillToPos,5,15,29,38);
- packet(0x0094,13,clif->pTakeItem,9);
- packet(0x009b,15,clif->pWalkToXY,12);
- packet(0x009f,12,clif->pChangeDir,7,11);
- packet(0x00a2,120,clif->pUseSkillToPosMoreInfo,5,15,29,38,40);
- packet(0x00a7,11,clif->pSolveCharName,7);
- packet(0x00f5,24,clif->pUseItem,9,20);
- packet(0x00f7,13,clif->pTickSend,9);
- packet(0x0113,23,clif->pMoveToKafra,5,19);
- packet(0x0190,26,clif->pMoveFromKafra,11,22);
- packet(0x0193,18,clif->pActionRequest,7,17);
+ packet(0x0072,clif->pDropItem,8,15);
+ packet(0x007e,clif->pWantToConnection,9,21,28,32,36);
+ packet(0x0085,clif->pUseSkillToId,11,18,22);
+ packet(0x0089,clif->pGetCharNameRequest,8);
+ packet(0x008c,clif->pUseSkillToPos,5,15,29,38);
+ packet(0x0094,clif->pTakeItem,9);
+ packet(0x009b,clif->pWalkToXY,12);
+ packet(0x009f,clif->pChangeDir,7,11);
+ packet(0x00a2,clif->pUseSkillToPosMoreInfo,5,15,29,38,40);
+ packet(0x00a7,clif->pSolveCharName,7);
+ packet(0x00f5,clif->pUseItem,9,20);
+ packet(0x00f7,clif->pTickSend,9);
+ packet(0x0113,clif->pMoveToKafra,5,19);
+ packet(0x0190,clif->pMoveFromKafra,11,22);
+ packet(0x0193,clif->pActionRequest,7,17);
#endif
//2004-08-16aSakexe
#if PACKETVER >= 20040816
- packet(0x0212,26,clif->pGMRc,2);
- packet(0x0213,26,clif->pCheck,2);
- packet(0x0214,42);
+ packet(0x0212,clif->pGMRc,2);
+ packet(0x0213,clif->pCheck,2);
#endif
//2004-08-17aSakexe
#if PACKETVER >= 20040817
- packet(0x020f,10,clif->pPVPInfo,2,6);
- packet(0x0210,22);
+ packet(0x020f,clif->pPVPInfo,2,6);
#endif
//2004-09-06aSakexe
#if PACKETVER >= 20040906
- packet(0x0072,20,clif->pUseItem,9,20);
- packet(0x007e,19,clif->pMoveToKafra,3,15);
- packet(0x0085,23,clif->pActionRequest,9,22);
- packet(0x0089,9,clif->pWalkToXY,6);
- packet(0x008c,105,clif->pUseSkillToPosMoreInfo,10,14,18,23,25);
- packet(0x0094,17,clif->pDropItem,6,15);
- packet(0x009b,14,clif->pGetCharNameRequest,10);
- packet(0x009f,-1,clif->pGlobalMessage,2,4);
- packet(0x00a2,14,clif->pSolveCharName,10);
- packet(0x00a7,25,clif->pUseSkillToPos,10,14,18,23);
- packet(0x00f3,10,clif->pChangeDir,4,9);
- packet(0x00f5,34,clif->pWantToConnection,7,15,25,29,33);
- packet(0x00f7,2,clif->pCloseKafra,0);
- packet(0x0113,11,clif->pTakeItem,7);
- packet(0x0116,11,clif->pTickSend,7);
- packet(0x0190,22,clif->pUseSkillToId,9,15,18);
- packet(0x0193,17,clif->pMoveFromKafra,3,13);
+ packet(0x0072,clif->pUseItem,9,20);
+ packet(0x007e,clif->pMoveToKafra,3,15);
+ packet(0x0085,clif->pActionRequest,9,22);
+ packet(0x0089,clif->pWalkToXY,6);
+ packet(0x008c,clif->pUseSkillToPosMoreInfo,10,14,18,23,25);
+ packet(0x0094,clif->pDropItem,6,15);
+ packet(0x009b,clif->pGetCharNameRequest,10);
+ packet(0x009f,clif->pGlobalMessage,2,4);
+ packet(0x00a2,clif->pSolveCharName,10);
+ packet(0x00a7,clif->pUseSkillToPos,10,14,18,23);
+ packet(0x00f3,clif->pChangeDir,4,9);
+ packet(0x00f5,clif->pWantToConnection,7,15,25,29,33);
+ packet(0x00f7,clif->pCloseKafra,0);
+ packet(0x0113,clif->pTakeItem,7);
+ packet(0x0116,clif->pTickSend,7);
+ packet(0x0190,clif->pUseSkillToId,9,15,18);
+ packet(0x0193,clif->pMoveFromKafra,3,13);
#endif
//2004-09-20aSakexe
#if PACKETVER >= 20040920
- packet(0x0072,18,clif->pUseItem,10,14);
- packet(0x007e,25,clif->pMoveToKafra,6,21);
- packet(0x0085,9,clif->pActionRequest,3,8);
- packet(0x0089,14,clif->pWalkToXY,11);
- packet(0x008c,109,clif->pUseSkillToPosMoreInfo,16,20,23,27,29);
- packet(0x0094,19,clif->pDropItem,12,17);
- packet(0x009b,10,clif->pGetCharNameRequest,6);
- packet(0x00a2,10,clif->pSolveCharName,6);
- packet(0x00a7,29,clif->pUseSkillToPos,6,20,23,27);
- packet(0x00f3,18,clif->pChangeDir,8,17);
- packet(0x00f5,32,clif->pWantToConnection,10,17,23,27,31);
- packet(0x0113,14,clif->pTakeItem,10);
- packet(0x0116,14,clif->pTickSend,10);
- packet(0x0190,14,clif->pUseSkillToId,4,7,10);
- packet(0x0193,12,clif->pMoveFromKafra,4,8);
+ packet(0x0072,clif->pUseItem,10,14);
+ packet(0x007e,clif->pMoveToKafra,6,21);
+ packet(0x0085,clif->pActionRequest,3,8);
+ packet(0x0089,clif->pWalkToXY,11);
+ packet(0x008c,clif->pUseSkillToPosMoreInfo,16,20,23,27,29);
+ packet(0x0094,clif->pDropItem,12,17);
+ packet(0x009b,clif->pGetCharNameRequest,6);
+ packet(0x00a2,clif->pSolveCharName,6);
+ packet(0x00a7,clif->pUseSkillToPos,6,20,23,27);
+ packet(0x00f3,clif->pChangeDir,8,17);
+ packet(0x00f5,clif->pWantToConnection,10,17,23,27,31);
+ packet(0x0113,clif->pTakeItem,10);
+ packet(0x0116,clif->pTickSend,10);
+ packet(0x0190,clif->pUseSkillToId,4,7,10);
+ packet(0x0193,clif->pMoveFromKafra,4,8);
#endif
//2004-10-05aSakexe
#if PACKETVER >= 20041005
- packet(0x0072,17,clif->pUseItem,6,13);
- packet(0x007e,16,clif->pMoveToKafra,5,12);
- packet(0x0089,6,clif->pWalkToXY,3);
- packet(0x008c,103,clif->pUseSkillToPosMoreInfo,2,6,17,21,23);
- packet(0x0094,14,clif->pDropItem,5,12);
- packet(0x009b,15,clif->pGetCharNameRequest,11);
- packet(0x00a2,12,clif->pSolveCharName,8);
- packet(0x00a7,23,clif->pUseSkillToPos,3,6,17,21);
- packet(0x00f3,13,clif->pChangeDir,5,12);
- packet(0x00f5,33,clif->pWantToConnection,12,18,24,28,32);
- packet(0x0113,10,clif->pTakeItem,6);
- packet(0x0116,10,clif->pTickSend,6);
- packet(0x0190,20,clif->pUseSkillToId,7,12,16);
- packet(0x0193,26,clif->pMoveFromKafra,10,22);
+ packet(0x0072,clif->pUseItem,6,13);
+ packet(0x007e,clif->pMoveToKafra,5,12);
+ packet(0x0089,clif->pWalkToXY,3);
+ packet(0x008c,clif->pUseSkillToPosMoreInfo,2,6,17,21,23);
+ packet(0x0094,clif->pDropItem,5,12);
+ packet(0x009b,clif->pGetCharNameRequest,11);
+ packet(0x00a2,clif->pSolveCharName,8);
+ packet(0x00a7,clif->pUseSkillToPos,3,6,17,21);
+ packet(0x00f3,clif->pChangeDir,5,12);
+ packet(0x00f5,clif->pWantToConnection,12,18,24,28,32);
+ packet(0x0113,clif->pTakeItem,6);
+ packet(0x0116,clif->pTickSend,6);
+ packet(0x0190,clif->pUseSkillToId,7,12,16);
+ packet(0x0193,clif->pMoveFromKafra,10,22);
#endif
//2004-10-25aSakexe
#if PACKETVER >= 20041025
- packet(0x0072,13,clif->pUseItem,5,9);
- packet(0x007e,13,clif->pMoveToKafra,6,9);
- packet(0x0085,15,clif->pActionRequest,4,14);
- packet(0x008c,108,clif->pUseSkillToPosMoreInfo,6,9,23,26,28);
- packet(0x0094,12,clif->pDropItem,6,10);
- packet(0x009b,10,clif->pGetCharNameRequest,6);
- packet(0x00a2,16,clif->pSolveCharName,12);
- packet(0x00a7,28,clif->pUseSkillToPos,6,9,23,26);
- packet(0x00f3,15,clif->pChangeDir,6,14);
- packet(0x00f5,29,clif->pWantToConnection,5,14,20,24,28);
- packet(0x0113,9,clif->pTakeItem,5);
- packet(0x0116,9,clif->pTickSend,5);
- packet(0x0190,26,clif->pUseSkillToId,4,10,22);
- packet(0x0193,22,clif->pMoveFromKafra,12,18);
-#endif
-
-//2004-11-01aSakexe
-#if PACKETVER >= 20041101
- packet(0x0084,-1);
- packet(0x0215,6);
+ packet(0x0072,clif->pUseItem,5,9);
+ packet(0x007e,clif->pMoveToKafra,6,9);
+ packet(0x0085,clif->pActionRequest,4,14);
+ packet(0x008c,clif->pUseSkillToPosMoreInfo,6,9,23,26,28);
+ packet(0x0094,clif->pDropItem,6,10);
+ packet(0x009b,clif->pGetCharNameRequest,6);
+ packet(0x00a2,clif->pSolveCharName,12);
+ packet(0x00a7,clif->pUseSkillToPos,6,9,23,26);
+ packet(0x00f3,clif->pChangeDir,6,14);
+ packet(0x00f5,clif->pWantToConnection,5,14,20,24,28);
+ packet(0x0113,clif->pTakeItem,5);
+ packet(0x0116,clif->pTickSend,5);
+ packet(0x0190,clif->pUseSkillToId,4,10,22);
+ packet(0x0193,clif->pMoveFromKafra,12,18);
#endif
//2004-11-08aSakexe
#if PACKETVER >= 20041108
- packet(0x0084,2);
- packet(0x0216,6);
- packet(0x0217,2,clif->pBlacksmith,0);
- packet(0x0218,2,clif->pAlchemist,0);
- packet(0x0219,282);
- packet(0x021a,282);
- packet(0x021b,10);
- packet(0x021c,10);
+ packet(0x0217,clif->pBlacksmith,0);
+ packet(0x0218,clif->pAlchemist,0);
#endif
//2004-11-15aSakexe
#if PACKETVER >= 20041115
- packet(0x021d,6,clif->pLessEffect,2);
+ packet(0x021d,clif->pLessEffect,2);
#endif
//2004-11-29aSakexe
#if PACKETVER >= 20041129
- packet(0x0072,22,clif->pUseSkillToId,8,12,18);
- packet(0x007e,30,clif->pUseSkillToPos,4,9,22,28);
- packet(0x0085,-1,clif->pGlobalMessage,2,4);
- packet(0x0089,7,clif->pTickSend,3);
- packet(0x008c,13,clif->pGetCharNameRequest,9);
- packet(0x0094,14,clif->pMoveToKafra,4,10);
- packet(0x009b,2,clif->pCloseKafra,0);
- packet(0x009f,18,clif->pActionRequest,6,17);
- packet(0x00a2,7,clif->pTakeItem,3);
- packet(0x00a7,7,clif->pWalkToXY,4);
- packet(0x00f3,8,clif->pChangeDir,3,7);
- packet(0x00f5,29,clif->pWantToConnection,3,10,20,24,28);
- packet(0x00f7,14,clif->pSolveCharName,10);
- packet(0x0113,110,clif->pUseSkillToPosMoreInfo,4,9,22,28,30);
- packet(0x0116,12,clif->pDropItem,4,10);
- packet(0x0190,15,clif->pUseItem,3,11);
- packet(0x0193,21,clif->pMoveFromKafra,4,17);
- packet(0x0221,-1);
- packet(0x0222,6,clif->pWeaponRefine,2);
- packet(0x0223,8);
-#endif
-
-//2004-12-13aSakexe
-#if PACKETVER >= 20041213
-//skipped: many packets being set to -1
- packet(0x0066,3);
- packet(0x0070,3);
- packet(0x01ca,3);
- packet(0x021e,6);
- packet(0x021f,66);
- packet(0x0220,10);
+ packet(0x0072,clif->pUseSkillToId,8,12,18);
+ packet(0x007e,clif->pUseSkillToPos,4,9,22,28);
+ packet(0x0085,clif->pGlobalMessage,2,4);
+ packet(0x0089,clif->pTickSend,3);
+ packet(0x008c,clif->pGetCharNameRequest,9);
+ packet(0x0094,clif->pMoveToKafra,4,10);
+ packet(0x009b,clif->pCloseKafra,0);
+ packet(0x009f,clif->pActionRequest,6,17);
+ packet(0x00a2,clif->pTakeItem,3);
+ packet(0x00a7,clif->pWalkToXY,4);
+ packet(0x00f3,clif->pChangeDir,3,7);
+ packet(0x00f5,clif->pWantToConnection,3,10,20,24,28);
+ packet(0x00f7,clif->pSolveCharName,10);
+ packet(0x0113,clif->pUseSkillToPosMoreInfo,4,9,22,28,30);
+ packet(0x0116,clif->pDropItem,4,10);
+ packet(0x0190,clif->pUseItem,3,11);
+ packet(0x0193,clif->pMoveFromKafra,4,17);
+ packet(0x0222,clif->pWeaponRefine,2);
#endif
//2005-01-10bSakexe
#if PACKETVER >= 20050110
- packet(0x0072,26,clif->pUseSkillToId,8,16,22);
- packet(0x007e,114,clif->pUseSkillToPosMoreInfo,10,18,22,32,34);
- packet(0x0085,23,clif->pChangeDir,12,22);
- packet(0x0089,9,clif->pTickSend,5);
- packet(0x008c,8,clif->pGetCharNameRequest,4);
- packet(0x0094,20,clif->pMoveToKafra,10,16);
- packet(0x009b,32,clif->pWantToConnection,3,12,23,27,31);
- packet(0x009f,17,clif->pUseItem,5,13);
- packet(0x00a2,11,clif->pSolveCharName,7);
- packet(0x00a7,13,clif->pWalkToXY,10);
- packet(0x00f3,-1,clif->pGlobalMessage,2,4);
- packet(0x00f5,9,clif->pTakeItem,5);
- packet(0x00f7,21,clif->pMoveFromKafra,11,17);
- packet(0x0113,34,clif->pUseSkillToPos,10,18,22,32);
- packet(0x0116,20,clif->pDropItem,15,18);
- packet(0x0190,20,clif->pActionRequest,9,19);
- packet(0x0193,2,clif->pCloseKafra,0);
+ packet(0x0072,clif->pUseSkillToId,8,16,22);
+ packet(0x007e,clif->pUseSkillToPosMoreInfo,10,18,22,32,34);
+ packet(0x0085,clif->pChangeDir,12,22);
+ packet(0x0089,clif->pTickSend,5);
+ packet(0x008c,clif->pGetCharNameRequest,4);
+ packet(0x0094,clif->pMoveToKafra,10,16);
+ packet(0x009b,clif->pWantToConnection,3,12,23,27,31);
+ packet(0x009f,clif->pUseItem,5,13);
+ packet(0x00a2,clif->pSolveCharName,7);
+ packet(0x00a7,clif->pWalkToXY,10);
+ packet(0x00f3,clif->pGlobalMessage,2,4);
+ packet(0x00f5,clif->pTakeItem,5);
+ packet(0x00f7,clif->pMoveFromKafra,11,17);
+ packet(0x0113,clif->pUseSkillToPos,10,18,22,32);
+ packet(0x0116,clif->pDropItem,15,18);
+ packet(0x0190,clif->pActionRequest,9,19);
+ packet(0x0193,clif->pCloseKafra,0);
#endif
//2005-03-28aSakexe
#if PACKETVER >= 20050328
- packet(0x0224,10);
- packet(0x0225,2,clif->pTaekwon,0);
- packet(0x0226,282);
-#endif
-
-//2005-04-04aSakexe
-#if PACKETVER >= 20050404
- packet(0x0227,18);
- packet(0x0228,18);
-#endif
-
-//2005-04-11aSakexe
-#if PACKETVER >= 20050411
- packet(0x0229,15);
- packet(0x022a,58);
- packet(0x022b,57);
- packet(0x022c,64);
+ packet(0x0225,clif->pTaekwon,0);
#endif
//2005-04-25aSakexe
#if PACKETVER >= 20050425
- packet(0x022d,5,clif->pHomMenu,2,4);
- packet(0x0232,9,clif->pHomMoveTo,2,6);
- packet(0x0233,11,clif->pHomAttack,2,6,10);
- packet(0x0234,6,clif->pHomMoveToMaster,2);
+ packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0232,clif->pHomMoveTo,2,6);
+ packet(0x0233,clif->pHomAttack,2,6,10);
+ packet(0x0234,clif->pHomMoveToMaster,2);
#endif
//2005-05-09aSakexe
#if PACKETVER >= 20050509
- packet(0x0072,25,clif->pUseSkillToId,6,10,21);
- packet(0x007e,102,clif->pUseSkillToPosMoreInfo,5,9,12,20,22);
- packet(0x0085,11,clif->pChangeDir,7,10);
- packet(0x0089,8,clif->pTickSend,4);
- packet(0x008c,11,clif->pGetCharNameRequest,7);
- packet(0x0094,14,clif->pMoveToKafra,7,10);
- packet(0x009b,26,clif->pWantToConnection,4,9,17,21,25);
- packet(0x009f,14,clif->pUseItem,4,10);
- packet(0x00a2,15,clif->pSolveCharName,11);
- packet(0x00a7,8,clif->pWalkToXY,5);
- packet(0x00f5,8,clif->pTakeItem,4);
- packet(0x00f7,22,clif->pMoveFromKafra,14,18);
- packet(0x0113,22,clif->pUseSkillToPos,5,9,12,20);
- packet(0x0116,10,clif->pDropItem,5,8);
- packet(0x0190,19,clif->pActionRequest,5,18);
-#endif
-
-//2005-05-23aSakexe
-#if PACKETVER >= 20050523
- packet(0x022e,69);
- packet(0x0230,12);
+ packet(0x0072,clif->pUseSkillToId,6,10,21);
+ packet(0x007e,clif->pUseSkillToPosMoreInfo,5,9,12,20,22);
+ packet(0x0085,clif->pChangeDir,7,10);
+ packet(0x0089,clif->pTickSend,4);
+ packet(0x008c,clif->pGetCharNameRequest,7);
+ packet(0x0094,clif->pMoveToKafra,7,10);
+ packet(0x009b,clif->pWantToConnection,4,9,17,21,25);
+ packet(0x009f,clif->pUseItem,4,10);
+ packet(0x00a2,clif->pSolveCharName,11);
+ packet(0x00a7,clif->pWalkToXY,5);
+ packet(0x00f5,clif->pTakeItem,4);
+ packet(0x00f7,clif->pMoveFromKafra,14,18);
+ packet(0x0113,clif->pUseSkillToPos,5,9,12,20);
+ packet(0x0116,clif->pDropItem,5,8);
+ packet(0x0190,clif->pActionRequest,5,18);
#endif
//2005-05-30aSakexe
#if PACKETVER >= 20050530
- packet(0x022e,71);
- packet(0x0235,-1);
- packet(0x0236,10);
- packet(0x0237,2,clif->pRankingPk,0);
- packet(0x0238,282);
-#endif
-
-//2005-05-31aSakexe
-#if PACKETVER >= 20050531
- packet(0x0216,2);
- packet(0x0239,11);
+ packet(0x0237,clif->pRankingPk,0);
#endif
//2005-06-08aSakexe
#if PACKETVER >= 20050608
- packet(0x0216,6);
- packet(0x0217,2,clif->pBlacksmith,0);
- packet(0x022f,5);
- packet(0x0231,26,clif->pChangeHomunculusName,0);
- packet(0x023a,4);
- packet(0x023b,36,clif->pStoragePassword,2,4,20);
- packet(0x023c,6);
-#endif
-
-//2005-06-22aSakexe
-#if PACKETVER >= 20050622
- packet(0x022e,71);
-
+ packet(0x0217,clif->pBlacksmith,0);
+ packet(0x0231,clif->pChangeHomunculusName,0);
+ packet(0x023b,clif->pStoragePassword,2,4,20);
#endif
//2005-06-28aSakexe
#if PACKETVER >= 20050628
- packet(0x0072,34,clif->pUseSkillToId,6,17,30);
- packet(0x007e,113,clif->pUseSkillToPosMoreInfo,12,15,18,31,33);
- packet(0x0085,17,clif->pChangeDir,8,16);
- packet(0x0089,13,clif->pTickSend,9);
- packet(0x008c,8,clif->pGetCharNameRequest,4);
- packet(0x0094,31,clif->pMoveToKafra,16,27);
- packet(0x009b,32,clif->pWantToConnection,9,15,23,27,31);
- packet(0x009f,19,clif->pUseItem,9,15);
- packet(0x00a2,9,clif->pSolveCharName,5);
- packet(0x00a7,11,clif->pWalkToXY,8);
- packet(0x00f5,13,clif->pTakeItem,9);
- packet(0x00f7,18,clif->pMoveFromKafra,11,14);
- packet(0x0113,33,clif->pUseSkillToPos,12,15,18,31);
- packet(0x0116,12,clif->pDropItem,3,10);
- packet(0x0190,24,clif->pActionRequest,11,23);
- packet(0x0216,-1);
- packet(0x023d,-1);
- packet(0x023e,4);
+ packet(0x0072,clif->pUseSkillToId,6,17,30);
+ packet(0x007e,clif->pUseSkillToPosMoreInfo,12,15,18,31,33);
+ packet(0x0085,clif->pChangeDir,8,16);
+ packet(0x0089,clif->pTickSend,9);
+ packet(0x008c,clif->pGetCharNameRequest,4);
+ packet(0x0094,clif->pMoveToKafra,16,27);
+ packet(0x009b,clif->pWantToConnection,9,15,23,27,31);
+ packet(0x009f,clif->pUseItem,9,15);
+ packet(0x00a2,clif->pSolveCharName,5);
+ packet(0x00a7,clif->pWalkToXY,8);
+ packet(0x00f5,clif->pTakeItem,9);
+ packet(0x00f7,clif->pMoveFromKafra,11,14);
+ packet(0x0113,clif->pUseSkillToPos,12,15,18,31);
+ packet(0x0116,clif->pDropItem,3,10);
+ packet(0x0190,clif->pActionRequest,11,23);
#endif
//2005-07-18aSakexe
#if PACKETVER >= 20050718
- packet(0x0072,19,clif->pUseSkillToId,5,11,15);
- packet(0x007e,110,clif->pUseSkillToPosMoreInfo,9,15,23,28,30);
- packet(0x0085,11,clif->pChangeDir,6,10);
- packet(0x0089,7,clif->pTickSend,3);
- packet(0x008c,11,clif->pGetCharNameRequest,7);
- packet(0x0094,21,clif->pMoveToKafra,12,17);
- packet(0x009b,31,clif->pWantToConnection,3,13,22,26,30);
- packet(0x009f,12,clif->pUseItem,3,8);
- packet(0x00a2,18,clif->pSolveCharName,14);
- packet(0x00a7,15,clif->pWalkToXY,12);
- packet(0x00f5,7,clif->pTakeItem,3);
- packet(0x00f7,13,clif->pMoveFromKafra,5,9);
- packet(0x0113,30,clif->pUseSkillToPos,9,15,23,28);
- packet(0x0116,12,clif->pDropItem,6,10);
- packet(0x0190,21,clif->pActionRequest,5,20);
- packet(0x0216,6);
- packet(0x023f,2,clif->pMail_refreshinbox,0);
- packet(0x0240,8);
- packet(0x0241,6,clif->pMail_read,2);
- packet(0x0242,-1);
- packet(0x0243,6,clif->pMail_delete,2);
- packet(0x0244,6,clif->pMail_getattach,2);
- packet(0x0245,7);
- packet(0x0246,4,clif->pMail_winopen,2);
- packet(0x0247,8,clif->pMail_setattach,2,4);
- packet(0x0248,68);
- packet(0x0249,3);
- packet(0x024a,70);
- packet(0x024b,4,clif->pAuction_cancelreg,0);
- packet(0x024c,8,clif->pAuction_setitem,0);
- packet(0x024d,14);
- packet(0x024e,6,clif->pAuction_cancel,0);
- packet(0x024f,10,clif->pAuction_bid,0);
- packet(0x0250,3);
- packet(0x0251,2);
- packet(0x0252,-1);
+ packet(0x0072,clif->pUseSkillToId,5,11,15);
+ packet(0x007e,clif->pUseSkillToPosMoreInfo,9,15,23,28,30);
+ packet(0x0085,clif->pChangeDir,6,10);
+ packet(0x0089,clif->pTickSend,3);
+ packet(0x008c,clif->pGetCharNameRequest,7);
+ packet(0x0094,clif->pMoveToKafra,12,17);
+ packet(0x009b,clif->pWantToConnection,3,13,22,26,30);
+ packet(0x009f,clif->pUseItem,3,8);
+ packet(0x00a2,clif->pSolveCharName,14);
+ packet(0x00a7,clif->pWalkToXY,12);
+ packet(0x00f5,clif->pTakeItem,3);
+ packet(0x00f7,clif->pMoveFromKafra,5,9);
+ packet(0x0113,clif->pUseSkillToPos,9,15,23,28);
+ packet(0x0116,clif->pDropItem,6,10);
+ packet(0x0190,clif->pActionRequest,5,20);
+ packet(0x023f,clif->pMail_refreshinbox,0);
+ packet(0x0241,clif->pMail_read,2);
+ packet(0x0243,clif->pMail_delete,2);
+ packet(0x0244,clif->pMail_getattach,2);
+ packet(0x0246,clif->pMail_winopen,2);
+ packet(0x0247,clif->pMail_setattach,2,4);
+ packet(0x024b,clif->pAuction_cancelreg,0);
+ packet(0x024c,clif->pAuction_setitem,0);
+ packet(0x024e,clif->pAuction_cancel,0);
+ packet(0x024f,clif->pAuction_bid,0);
#endif
//2005-07-19bSakexe
#if PACKETVER >= 20050719
- packet(0x0072,34,clif->pUseSkillToId,6,17,30);
- packet(0x007e,113,clif->pUseSkillToPosMoreInfo,12,15,18,31,33);
- packet(0x0085,17,clif->pChangeDir,8,16);
- packet(0x0089,13,clif->pTickSend,9);
- packet(0x008c,8,clif->pGetCharNameRequest,4);
- packet(0x0094,31,clif->pMoveToKafra,16,27);
- packet(0x009b,32,clif->pWantToConnection,9,15,23,27,31);
- packet(0x009f,19,clif->pUseItem,9,15);
- packet(0x00a2,9,clif->pSolveCharName,5);
- packet(0x00a7,11,clif->pWalkToXY,8);
- packet(0x00f5,13,clif->pTakeItem,9);
- packet(0x00f7,18,clif->pMoveFromKafra,11,14);
- packet(0x0113,33,clif->pUseSkillToPos,12,15,18,31);
- packet(0x0116,12,clif->pDropItem,3,10);
- packet(0x0190,24,clif->pActionRequest,11,23);
-#endif
-
-//2005-08-01aSakexe
-#if PACKETVER >= 20050801
- packet(0x0245,3);
- packet(0x0251,4);
+ packet(0x0072,clif->pUseSkillToId,6,17,30);
+ packet(0x007e,clif->pUseSkillToPosMoreInfo,12,15,18,31,33);
+ packet(0x0085,clif->pChangeDir,8,16);
+ packet(0x0089,clif->pTickSend,9);
+ packet(0x008c,clif->pGetCharNameRequest,4);
+ packet(0x0094,clif->pMoveToKafra,16,27);
+ packet(0x009b,clif->pWantToConnection,9,15,23,27,31);
+ packet(0x009f,clif->pUseItem,9,15);
+ packet(0x00a2,clif->pSolveCharName,5);
+ packet(0x00a7,clif->pWalkToXY,8);
+ packet(0x00f5,clif->pTakeItem,9);
+ packet(0x00f7,clif->pMoveFromKafra,11,14);
+ packet(0x0113,clif->pUseSkillToPos,12,15,18,31);
+ packet(0x0116,clif->pDropItem,3,10);
+ packet(0x0190,clif->pActionRequest,11,23);
#endif
//2005-08-08aSakexe
#if PACKETVER >= 20050808
- packet(0x024d,12,clif->pAuction_register,0);
- packet(0x024e,4);
+ packet(0x024d,clif->pAuction_register,0);
#endif
//2005-08-17aSakexe
#if PACKETVER >= 20050817
- packet(0x0253,3);
- packet(0x0254,3,clif->pFeelSaveOk,0);
+ packet(0x0254,clif->pFeelSaveOk,0);
#endif
//2005-08-29aSakexe
#if PACKETVER >= 20050829
- packet(0x0240,-1);
- packet(0x0248,-1,clif->pMail_send,2,4,28,68);
- packet(0x0255,5);
- packet(0x0256,-1);
- packet(0x0257,8);
-#endif
-
-//2005-09-12bSakexe
-#if PACKETVER >= 20050912
- packet(0x0256,5);
- packet(0x0258,2);
- packet(0x0259,3);
+ packet(0x0248,clif->pMail_send,2,4,28,68);
#endif
//2005-10-10aSakexe
#if PACKETVER >= 20051010
- packet(0x020e,32);
- packet(0x025a,-1);
- packet(0x025b,6,clif->pCooking,0);
+ packet(0x025b,clif->pCooking,0);
#endif
//2005-10-13aSakexe
#if PACKETVER >= 20051013
- packet(0x007a,6);
- packet(0x0251,32);
- packet(0x025c,4,clif->pAuction_buysell,0);
+ packet(0x025c,clif->pAuction_buysell,0);
#endif
//2005-10-17aSakexe
#if PACKETVER >= 20051017
- packet(0x007a,58);
- packet(0x025d,6,clif->pAuction_close,0);
- packet(0x025e,4);
-#endif
-
-//2005-10-24aSakexe
-#if PACKETVER >= 20051024
- packet(0x025f,6);
- packet(0x0260,6);
+ packet(0x025d,clif->pAuction_close,0);
#endif
//2005-11-07aSakexe
#if PACKETVER >= 20051107
- packet(0x024e,6,clif->pAuction_cancel,0);
- packet(0x0251,34,clif->pAuction_search,0);
-#endif
-
-//2006-01-09aSakexe
-#if PACKETVER >= 20060109
- packet(0x0261,11);
- packet(0x0262,11);
- packet(0x0263,11);
- packet(0x0264,20);
- packet(0x0265,20);
- packet(0x0266,30);
- packet(0x0267,4);
- packet(0x0268,4);
- packet(0x0269,4);
- packet(0x026a,4);
- packet(0x026b,4);
- packet(0x026c,4);
- packet(0x026d,4);
- packet(0x026f,2);
- packet(0x0270,2);
- packet(0x0271,38);
- packet(0x0272,44);
-#endif
-
-//2006-01-26aSakexe
-#if PACKETVER >= 20060126
- packet(0x0271,40);
-
-#endif
-
-//2006-03-06aSakexe
-#if PACKETVER >= 20060306
- packet(0x0273,6);
- packet(0x0274,8);
+ packet(0x024e,clif->pAuction_cancel,0);
+ packet(0x0251,clif->pAuction_search,0);
#endif
//2006-03-13aSakexe
#if PACKETVER >= 20060313
- packet(0x0273,30,clif->pMail_return,2,6);
+ packet(0x0273,clif->pMail_return,2,6);
#endif
//2006-03-27aSakexe
#if PACKETVER >= 20060327
- packet(0x0072,26,clif->pUseSkillToId,11,18,22);
- packet(0x007e,120,clif->pUseSkillToPosMoreInfo,5,15,29,38,40);
- packet(0x0085,12,clif->pChangeDir,7,11);
- //packet(0x0089,13,clif->pTickSend,9);
- packet(0x008c,12,clif->pGetCharNameRequest,8);
- packet(0x0094,23,clif->pMoveToKafra,5,19);
- packet(0x009b,37,clif->pWantToConnection,9,21,28,32,36);
- packet(0x009f,24,clif->pUseItem,9,20);
- packet(0x00a2,11,clif->pSolveCharName,7);
- packet(0x00a7,15,clif->pWalkToXY,12);
- packet(0x00f5,13,clif->pTakeItem,9);
- packet(0x00f7,26,clif->pMoveFromKafra,11,22);
- packet(0x0113,40,clif->pUseSkillToPos,5,15,29,38);
- packet(0x0116,17,clif->pDropItem,8,15);
- packet(0x0190,18,clif->pActionRequest,7,17);
-#endif
-
-//2006-10-23aSakexe
-#if PACKETVER >= 20061023
- packet(0x006d,110);
+ packet(0x0072,clif->pUseSkillToId,11,18,22);
+ packet(0x007e,clif->pUseSkillToPosMoreInfo,5,15,29,38,40);
+ packet(0x0085,clif->pChangeDir,7,11);
+ packet(0x008c,clif->pGetCharNameRequest,8);
+ packet(0x0094,clif->pMoveToKafra,5,19);
+ packet(0x009b,clif->pWantToConnection,9,21,28,32,36);
+ packet(0x009f,clif->pUseItem,9,20);
+ packet(0x00a2,clif->pSolveCharName,7);
+ packet(0x00a7,clif->pWalkToXY,12);
+ packet(0x00f5,clif->pTakeItem,9);
+ packet(0x00f7,clif->pMoveFromKafra,11,22);
+ packet(0x0113,clif->pUseSkillToPos,5,15,29,38);
+ packet(0x0116,clif->pDropItem,8,15);
+ packet(0x0190,clif->pActionRequest,7,17);
#endif
//2006-04-24aSakexe to 2007-01-02aSakexe
#if PACKETVER >= 20060424
- packet(0x023e,8);
- packet(0x0277,84);
- packet(0x0278,2);
- packet(0x0279,2);
- packet(0x027a,-1);
- packet(0x027b,14);
- packet(0x027c,60);
- packet(0x027d,62);
- packet(0x027e,-1);
- packet(0x027f,8);
- packet(0x0280,12);
- packet(0x0281,4);
- packet(0x0282,284);
- packet(0x0283,6);
- packet(0x0284,14);
- packet(0x0285,6);
- packet(0x0286,4);
- packet(0x0287,-1);
- packet(0x0288,6);
- packet(0x0289,8);
- packet(0x028a,18);
- packet(0x028b,-1);
- packet(0x028c,46);
- packet(0x028d,34);
- packet(0x028e,4);
- packet(0x028f,6);
- packet(0x0290,4);
- packet(0x0291,4);
- packet(0x0292,2,clif->pAutoRevive,0);
- packet(0x0293,70);
- packet(0x0294,10);
- packet(0x0295,-1);
- packet(0x0296,-1);
- packet(0x0297,-1);
- packet(0x0298,8);
- packet(0x0299,6);
- packet(0x029a,27);
- packet(0x029c,66);
- packet(0x029d,-1);
- packet(0x029e,11);
- packet(0x029f,3,clif->pmercenary_action,0);
- packet(0x02a0,-1);
- packet(0x02a1,-1);
- packet(0x02a2,8);
+ packet(0x0292,clif->pAutoRevive,0);
+ packet(0x029f,clif->pmercenary_action,0);
#endif
//2007-01-08aSakexe
#if PACKETVER >= 20070108
- packet(0x0072,30,clif->pUseSkillToId,10,14,26);
- packet(0x007e,120,clif->pUseSkillToPosMoreInfo,10,19,23,38,40);
- packet(0x0085,14,clif->pChangeDir,10,13);
- packet(0x0089,11,clif->pTickSend,7);
- packet(0x008c,17,clif->pGetCharNameRequest,13);
- packet(0x0094,17,clif->pMoveToKafra,4,13);
- packet(0x009b,35,clif->pWantToConnection,7,21,26,30,34);
- packet(0x009f,21,clif->pUseItem,7,17);
- packet(0x00a2,10,clif->pSolveCharName,6);
- packet(0x00a7,8,clif->pWalkToXY,5);
- packet(0x00f5,11,clif->pTakeItem,7);
- packet(0x00f7,15,clif->pMoveFromKafra,3,11);
- packet(0x0113,40,clif->pUseSkillToPos,10,19,23,38);
- packet(0x0116,19,clif->pDropItem,11,17);
- packet(0x0190,10,clif->pActionRequest,4,9);
-#endif
-
-//2007-01-22aSakexe
-#if PACKETVER >= 20070122
- packet(0x02a3,18);
- packet(0x02a4,2);
-#endif
-
-//2007-01-29aSakexe
-#if PACKETVER >= 20070129
- packet(0x029b,72);
- packet(0x02a3,-1);
- packet(0x02a4,-1);
- packet(0x02a5,8);
-
-#endif
-
-//2007-02-05aSakexe
-#if PACKETVER >= 20070205
- packet(0x02aa,4);
- packet(0x02ab,36);
- packet(0x02ac,6);
+ packet(0x0072,clif->pUseSkillToId,10,14,26);
+ packet(0x007e,clif->pUseSkillToPosMoreInfo,10,19,23,38,40);
+ packet(0x0085,clif->pChangeDir,10,13);
+ packet(0x0089,clif->pTickSend,7);
+ packet(0x008c,clif->pGetCharNameRequest,13);
+ packet(0x0094,clif->pMoveToKafra,4,13);
+ packet(0x009b,clif->pWantToConnection,7,21,26,30,34);
+ packet(0x009f,clif->pUseItem,7,17);
+ packet(0x00a2,clif->pSolveCharName,6);
+ packet(0x00a7,clif->pWalkToXY,5);
+ packet(0x00f5,clif->pTakeItem,7);
+ packet(0x00f7,clif->pMoveFromKafra,3,11);
+ packet(0x0113,clif->pUseSkillToPos,10,19,23,38);
+ packet(0x0116,clif->pDropItem,11,17);
+ packet(0x0190,clif->pActionRequest,4,9);
#endif
//2007-02-12aSakexe
#if PACKETVER >= 20070212
- packet(0x0072,25,clif->pUseSkillToId,6,10,21);
- packet(0x007e,102,clif->pUseSkillToPosMoreInfo,5,9,12,20,22);
- packet(0x0085,11,clif->pChangeDir,7,10);
- packet(0x0089,8,clif->pTickSend,4);
- packet(0x008c,11,clif->pGetCharNameRequest,7);
- packet(0x0094,14,clif->pMoveToKafra,7,10);
- packet(0x009b,26,clif->pWantToConnection,4,9,17,21,25);
- packet(0x009f,14,clif->pUseItem,4,10);
- packet(0x00a2,15,clif->pSolveCharName,11);
- //packet(0x00a7,8,clif->pWalkToXY,5);
- packet(0x00f5,8,clif->pTakeItem,4);
- packet(0x00f7,22,clif->pMoveFromKafra,14,18);
- packet(0x0113,22,clif->pUseSkillToPos,5,9,12,20);
- packet(0x0116,10,clif->pDropItem,5,8);
- packet(0x0190,19,clif->pActionRequest,5,18);
+ packet(0x0072,clif->pUseSkillToId,6,10,21);
+ packet(0x007e,clif->pUseSkillToPosMoreInfo,5,9,12,20,22);
+ packet(0x0085,clif->pChangeDir,7,10);
+ packet(0x0089,clif->pTickSend,4);
+ packet(0x008c,clif->pGetCharNameRequest,7);
+ packet(0x0094,clif->pMoveToKafra,7,10);
+ packet(0x009b,clif->pWantToConnection,4,9,17,21,25);
+ packet(0x009f,clif->pUseItem,4,10);
+ packet(0x00a2,clif->pSolveCharName,11);
+ packet(0x00f5,clif->pTakeItem,4);
+ packet(0x00f7,clif->pMoveFromKafra,14,18);
+ packet(0x0113,clif->pUseSkillToPos,5,9,12,20);
+ packet(0x0116,clif->pDropItem,5,8);
+ packet(0x0190,clif->pActionRequest,5,18);
#endif
//2007-05-07aSakexe
#if PACKETVER >= 20070507
- packet(0x01fd,15,clif->pRepairItem,2);
+ packet(0x01fd,clif->pRepairItem,2);
#endif
//2007-02-27aSakexe to 2007-10-02aSakexe
#if PACKETVER >= 20070227
- packet(0x0288,10,clif->pcashshop_buy,2,4,6);
- packet(0x0289,12);
- packet(0x02a6,22);
- packet(0x02a7,22);
- packet(0x02a8,162);
- packet(0x02a9,58);
- packet(0x02ad,8);
- packet(0x02b0,85);
- packet(0x02b1,-1);
- packet(0x02b2,-1);
- packet(0x02b3,107);
- packet(0x02b4,6);
- packet(0x02b5,-1);
- packet(0x02b6,7,clif->pquestStateAck,2,6);
- packet(0x02b7,7);
- packet(0x02b8,22);
- packet(0x02b9,191);
- packet(0x02ba,11,clif->pHotkey,2,4,5,9);
- packet(0x02bb,8);
- packet(0x02bc,6);
- packet(0x02bf,10);
- packet(0x02c0,2);
- packet(0x02c1,-1);
- packet(0x02c2,-1);
- packet(0x02c4,26,clif->pPartyInvite2,2);
- packet(0x02c5,30);
- packet(0x02c6,30);
- packet(0x02c7,7,clif->pReplyPartyInvite2,2,6);
- packet(0x02c8,3,clif->pPartyTick,2);
- packet(0x02c9,3);
- packet(0x02ca,3);
- packet(0x02cb,20);
- packet(0x02cc,4);
- packet(0x02cd,26);
- packet(0x02ce,10);
- packet(0x02cf,6);
- packet(0x02d0,-1);
- packet(0x02d1,-1);
- packet(0x02d2,-1);
- packet(0x02d3,4);
- packet(0x02d4,29);
- packet(0x02d5,2);
- packet(0x02d6,6,clif->pViewPlayerEquip,2);
- packet(0x02d7,-1);
- packet(0x02d8,10,clif->pEquipTick,6);
- packet(0x02d9,10);
- packet(0x02da,3);
- packet(0x02db,-1,clif->pBattleChat,2,4);
- packet(0x02dc,-1);
- packet(0x02dd,32);
- packet(0x02de,6);
- packet(0x02df,36);
- packet(0x02e0,34);
-#endif
-
-//2007-10-23aSakexe
-#if PACKETVER >= 20071023
- packet(0x02cb,65);
- packet(0x02cd,71);
-#endif
-
-//2007-11-06aSakexe
-#if PACKETVER >= 20071106
- packet(0x0078,55);
- packet(0x007c,42);
- packet(0x022c,65);
- packet(0x029b,80);
-#endif
-
-//2007-11-13aSakexe
-#if PACKETVER >= 20071113
- packet(0x02e1,33);
-#endif
-
-//2007-11-20aSakexe
-#if PACKETVER >= 20071120
- //packet(0x01df,10 <- ???);
- packet(0x02e2,14);
- packet(0x02e3,25);
- packet(0x02e4,8);
- packet(0x02e5,8);
- packet(0x02e6,6);
-#endif
-
-//2007-11-27aSakexe
-#if PACKETVER >= 20071127
- packet(0x02e7,-1);
+ packet(0x0288,clif->pcashshop_buy,2,4,6);
+ packet(0x02b6,clif->pquestStateAck,2,6);
+ packet(0x02ba,clif->pHotkey,2,4,5,9);
+ packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x02c7,clif->pReplyPartyInvite2,2,6);
+ packet(0x02c8,clif->pPartyTick,2);
+ packet(0x02cf,clif->pMemorialDungeonCommand);
+ packet(0x02d6,clif->pViewPlayerEquip,2);
+ packet(0x02d8,clif->p_cz_config,6);
+ packet(0x02db,clif->pBattleChat,2,4);
#endif
//2008-01-02aSakexe
#if PACKETVER >= 20080102
- packet(0x01df,6,clif->pGMReqAccountName,2);
- packet(0x02e8,-1);
- packet(0x02e9,-1);
- packet(0x02ea,-1);
- packet(0x02eb,13);
- packet(0x02ec,67);
- packet(0x02ed,59);
- packet(0x02ee,60);
- packet(0x02ef,8);
+ packet(0x01df,clif->pGMReqAccountName,2);
#endif
//2008-03-18aSakexe
#if PACKETVER >= 20080318
- packet(0x02bf,-1);
- packet(0x02c0,-1);
- packet(0x02f0,10);
- packet(0x02f1,2,clif->pProgressbar,0);
- packet(0x02f2,2);
-#endif
-
-//2008-03-25bSakexe
-#if PACKETVER >= 20080325
- packet(0x02f3,-1);
- packet(0x02f4,-1);
- packet(0x02f5,-1);
- packet(0x02f6,-1);
- packet(0x02f7,-1);
- packet(0x02f8,-1);
- packet(0x02f9,-1);
- packet(0x02fa,-1);
- packet(0x02fb,-1);
- packet(0x02fc,-1);
- packet(0x02fd,-1);
- packet(0x02fe,-1);
- packet(0x02ff,-1);
- packet(0x0300,-1);
-#endif
-
-//2008-04-01aSakexe
-#if PACKETVER >= 20080401
- packet(0x0301,-1);
- packet(0x0302,-1);
- packet(0x0303,-1);
- packet(0x0304,-1);
- packet(0x0305,-1);
- packet(0x0306,-1);
- packet(0x0307,-1);
- packet(0x0308,-1);
- packet(0x0309,-1);
- packet(0x030a,-1);
- packet(0x030b,-1);
- packet(0x030c,-1);
- packet(0x030d,-1);
- packet(0x030e,-1);
- packet(0x030f,-1);
- packet(0x0310,-1);
- packet(0x0311,-1);
- packet(0x0312,-1);
- packet(0x0313,-1);
- packet(0x0314,-1);
- packet(0x0315,-1);
- packet(0x0316,-1);
- packet(0x0317,-1);
- packet(0x0318,-1);
- packet(0x0319,-1);
- packet(0x031a,-1);
- packet(0x031b,-1);
- packet(0x031c,-1);
- packet(0x031d,-1);
- packet(0x031e,-1);
- packet(0x031f,-1);
- packet(0x0320,-1);
- packet(0x0321,-1);
- packet(0x0322,-1);
- packet(0x0323,-1);
- packet(0x0324,-1);
- packet(0x0325,-1);
- packet(0x0326,-1);
- packet(0x0327,-1);
- packet(0x0328,-1);
- packet(0x0329,-1);
- packet(0x032a,-1);
- packet(0x032b,-1);
- packet(0x032c,-1);
- packet(0x032d,-1);
- packet(0x032e,-1);
- packet(0x032f,-1);
- packet(0x0330,-1);
- packet(0x0331,-1);
- packet(0x0332,-1);
- packet(0x0333,-1);
- packet(0x0334,-1);
- packet(0x0335,-1);
- packet(0x0336,-1);
- packet(0x0337,-1);
- packet(0x0338,-1);
- packet(0x0339,-1);
- packet(0x033a,-1);
- packet(0x033b,-1);
- packet(0x033c,-1);
- packet(0x033d,-1);
- packet(0x033e,-1);
- packet(0x033f,-1);
- packet(0x0340,-1);
- packet(0x0341,-1);
- packet(0x0342,-1);
- packet(0x0343,-1);
- packet(0x0344,-1);
- packet(0x0345,-1);
- packet(0x0346,-1);
- packet(0x0347,-1);
- packet(0x0348,-1);
- packet(0x0349,-1);
- packet(0x034a,-1);
- packet(0x034b,-1);
- packet(0x034c,-1);
- packet(0x034d,-1);
- packet(0x034e,-1);
- packet(0x034f,-1);
- packet(0x0350,-1);
- packet(0x0351,-1);
- packet(0x0352,-1);
- packet(0x0353,-1);
- packet(0x0354,-1);
- packet(0x0355,-1);
- packet(0x0356,-1);
- packet(0x0357,-1);
- packet(0x0358,-1);
- packet(0x0359,-1);
- packet(0x035a,-1);
-#endif
-
-//2008-05-27aSakexe
-#if PACKETVER >= 20080527
- packet(0x035b,-1);
- packet(0x035c,2);
- packet(0x035d,-1);
- packet(0x035e,2);
- packet(0x035f,-1);
- packet(0x0389,-1);
-#endif
-
-//2008-08-20aSakexe
-#if PACKETVER >= 20080820
- packet(0x040c,-1);
- packet(0x040d,-1);
- packet(0x040e,-1);
- packet(0x040f,-1);
- packet(0x0410,-1);
- packet(0x0411,-1);
- packet(0x0412,-1);
- packet(0x0413,-1);
- packet(0x0414,-1);
- packet(0x0415,-1);
- packet(0x0416,-1);
- packet(0x0417,-1);
- packet(0x0418,-1);
- packet(0x0419,-1);
- packet(0x041a,-1);
- packet(0x041b,-1);
- packet(0x041c,-1);
- packet(0x041d,-1);
- packet(0x041e,-1);
- packet(0x041f,-1);
- packet(0x0420,-1);
- packet(0x0421,-1);
- packet(0x0422,-1);
- packet(0x0423,-1);
- packet(0x0424,-1);
- packet(0x0425,-1);
- packet(0x0426,-1);
- packet(0x0427,-1);
- packet(0x0428,-1);
- packet(0x0429,-1);
- packet(0x042a,-1);
- packet(0x042b,-1);
- packet(0x042c,-1);
- packet(0x042d,-1);
- packet(0x042e,-1);
- packet(0x042f,-1);
- packet(0x0430,-1);
- packet(0x0431,-1);
- packet(0x0432,-1);
- packet(0x0433,-1);
- packet(0x0434,-1);
- packet(0x0435,-1);
+ packet(0x02f1,clif->pProgressbar,0);
#endif
//2008-09-10aSakexe
#if PACKETVER >= 20080910
- packet(0x0436,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0437,7,clif->pActionRequest,2,6);
- packet(0x0438,10,clif->pUseSkillToId,2,4,6);
- packet(0x0439,8,clif->pUseItem,2,4);
-#endif
-
-//2008-11-13aSakexe
-#if PACKETVER >= 20081113
- packet(0x043d,8);
- packet(0x043e,-1);
- packet(0x043f,8);
-#endif
-
-//2008-11-26aSakexe
-#if PACKETVER >= 20081126
- packet(0x01a2,37);
- packet(0x0440,10);
- packet(0x0441,4);
+ packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0439,clif->pUseItem,2,4);
#endif
//2008-12-10aSakexe
#if PACKETVER >= 20081210
- packet(0x0442,-1);
- packet(0x0443,8,clif->pSkillSelectMenu,2,6);
-#endif
-
-//2009-01-14aSakexe
-#if PACKETVER >= 20090114
- packet(0x043f,25);
- packet(0x0444,-1);
- packet(0x0445,10);
-#endif
-
-//2009-02-18aSakexe
-#if PACKETVER >= 20090218
- packet(0x0446,14);
-#endif
-
-//2009-02-25aSakexe
-#if PACKETVER >= 20090225
- packet(0x0448,-1);
-#endif
-
-//2009-03-30aSakexe
-#if PACKETVER >= 20090330
- packet(0x0449,4);
-#endif
-
-//2009-04-08aSakexe
-#if PACKETVER >= 20090408
- packet(0x02a6,-1);
- packet(0x02a7,-1);
- packet(0x044a,6);
+ packet(0x0443,clif->pSkillSelectMenu,2,6);
#endif
//2008-08-27aRagexeRE
#if PACKETVER >= 20080827
- packet(0x0072,22,clif->pUseSkillToId,9,15,18);
- packet(0x007c,44);
- packet(0x007e,105,clif->pUseSkillToPosMoreInfo,10,14,18,23,25);
- packet(0x0085,10,clif->pChangeDir,4,9);
- packet(0x0089,11,clif->pTickSend,7);
- packet(0x008c,14,clif->pGetCharNameRequest,10);
- packet(0x0094,19,clif->pMoveToKafra,3,15);
- packet(0x009b,34,clif->pWantToConnection,7,15,25,29,33);
- packet(0x009f,20,clif->pUseItem,7,20);
- packet(0x00a2,14,clif->pSolveCharName,10);
- packet(0x00a7,9,clif->pWalkToXY,6);
- packet(0x00f5,11,clif->pTakeItem,7);
- packet(0x00f7,17,clif->pMoveFromKafra,3,13);
- packet(0x0113,25,clif->pUseSkillToPos,10,14,18,23);
- packet(0x0116,17,clif->pDropItem,6,15);
- packet(0x0190,23,clif->pActionRequest,9,22);
- packet(0x02e2,20);
- packet(0x02e3,22);
- packet(0x02e4,11);
- packet(0x02e5,9);
+ packet(0x0072,clif->pUseSkillToId,9,15,18);
+ packet(0x007e,clif->pUseSkillToPosMoreInfo,10,14,18,23,25);
+ packet(0x0085,clif->pChangeDir,4,9);
+ packet(0x0089,clif->pTickSend,7);
+ packet(0x008c,clif->pGetCharNameRequest,10);
+ packet(0x0094,clif->pMoveToKafra,3,15);
+ packet(0x009b,clif->pWantToConnection,7,15,25,29,33);
+ packet(0x009f,clif->pUseItem,7,20);
+ packet(0x00a2,clif->pSolveCharName,10);
+ packet(0x00a7,clif->pWalkToXY,6);
+ packet(0x00f5,clif->pTakeItem,7);
+ packet(0x00f7,clif->pMoveFromKafra,3,13);
+ packet(0x0113,clif->pUseSkillToPos,10,14,18,23);
+ packet(0x0116,clif->pDropItem,6,15);
+ packet(0x0190,clif->pActionRequest,9,22);
#endif
//2008-09-10aRagexeRE
#if PACKETVER >= 20080910
- packet(0x0436,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0437,7,clif->pActionRequest,2,6);
- packet(0x0438,10,clif->pUseSkillToId,2,4,6);
- packet(0x0439,8,clif->pUseItem,2,4);
-
-#endif
-
-//2008-11-12aRagexeRE
-#if PACKETVER >= 20081112
- packet(0x043d,8);
- //packet(0x043e,-1);
- packet(0x043f,8);
+ packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0439,clif->pUseItem,2,4);
#endif
-//2008-12-17aRagexeRE
-#if PACKETVER >= 20081217
- packet(0x01a2,37);
- //packet(0x0440,10);
- //packet(0x0441,4);
- //packet(0x0442,8);
- //packet(0x0443,8);
-#endif
-
-//2008-12-17bRagexeRE
-#if PACKETVER >= 20081217
- packet(0x006d,114);
-
-#endif
-
-//2009-01-21aRagexeRE
-#if PACKETVER >= 20090121
- packet(0x043f,25);
- //packet(0x0444,-1);
- //packet(0x0445,10);
-#endif
-
-//2009-02-18aRagexeRE
-#if PACKETVER >= 20090218
- //packet(0x0446,14);
-#endif
-
-//2009-02-26cRagexeRE
-#if PACKETVER >= 20090226
- //packet(0x0448,-1);
-#endif
-
-//2009-04-01aRagexeRE
-#if PACKETVER >= 20090401
- //packet(0x0449,4);
-#endif
-
-//2009-05-14aRagexeRE
-#if PACKETVER >= 20090514
- //packet(0x044b,2);
-#endif
-
-//2009-05-20aRagexeRE
+// 2009-05-20aRagexe, 2009-05-20aRagexeRE
#if PACKETVER >= 20090520
- //packet(0x07d0,6);
- //packet(0x07d1,2);
- //packet(0x07d2,-1);
- //packet(0x07d3,4);
- //packet(0x07d4,4);
- //packet(0x07d5,4);
- //packet(0x07d6,4);
- //packet(0x0447,2);
+// new packets
+ packet(0x0447,clif->p_cz_blocking_play_cancel); // PACKET_CZ_BLOCKING_PLAY_CANCEL
#endif
//2009-06-03aRagexeRE
#if PACKETVER >= 20090603
- packet(0x07d7,8,clif->pPartyChangeOption,2,6,7);
- packet(0x07d8,8);
- packet(0x07d9,254);
- packet(0x07da,6,clif->pPartyChangeLeader,2);
-#endif
-
-//2009-06-10aRagexeRE
-#if PACKETVER >= 20090610
- //packet(0x07db,8);
-#endif
-
-//2009-06-17aRagexeRE
-#if PACKETVER >= 20090617
- packet(0x07d9,268);
- //packet(0x07dc,6);
- //packet(0x07dd,54);
- //packet(0x07de,30);
- //packet(0x07df,54);
-#endif
-
-//2009-07-01aRagexeRE
-#if PACKETVER >= 20090701
- //packet(0x0275,37);
- //packet(0x0276,-1);
-#endif
-
-//2009-07-08aRagexeRE
-#if PACKETVER >= 20090708
- //packet(0x07e0,58);
-#endif
-
-//2009-07-15aRagexeRE
-#if PACKETVER >= 20090715
- packet(0x07e1,15);
-#endif
-
-//2009-08-05aRagexeRE
-#if PACKETVER >= 20090805
- packet(0x07e2,8);
+ packet(0x07d7,clif->pPartyChangeOption,2,6,7);
+ packet(0x07da,clif->pPartyChangeLeader,2);
#endif
//2009-08-18aRagexeRE
#if PACKETVER >= 20090818
- packet(0x07e3,6);
- packet(0x07e4,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x07e6,8);
-#endif
-
-//2009-08-25aRagexeRE
-#if PACKETVER >= 20090825
- //packet(0x07e6,28);
- packet(0x07e7,5);
-#endif
-
-//2009-09-22aRagexeRE
-#if PACKETVER >= 20090922
- packet(0x07e5,8);
- packet(0x07e6,8);
- packet(0x07e7,32);
- packet(0x07e8,-1);
- packet(0x07e9,5);
-#endif
-
-//2009-09-29aRagexeRE
-#if PACKETVER >= 20090929
- //packet(0x07ea,2);
- //packet(0x07eb,-1);
- //packet(0x07ec,6);
- //packet(0x07ed,8);
- //packet(0x07ee,6);
- //packet(0x07ef,8);
- //packet(0x07f0,4);
- //packet(0x07f2,4);
- //packet(0x07f3,3);
-#endif
-
-//2009-10-06aRagexeRE
-#if PACKETVER >= 20091006
- //packet(0x07ec,8);
- //packet(0x07ed,10);
- //packet(0x07f0,8);
- //packet(0x07f1,15);
- //packet(0x07f2,6);
- //packet(0x07f3,4);
- //packet(0x07f4,3);
+ packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
#endif
//2009-10-27aRagexeRE
#if PACKETVER >= 20091027
- packet(0x07f5,6,clif->pGMFullStrip,2);
- packet(0x07f6,14);
-#endif
-
-//2009-11-03aRagexeRE
-#if PACKETVER >= 20091103
- packet(0x07f7,-1);
- packet(0x07f8,-1);
- packet(0x07f9,-1);
-#endif
-
-//2009-11-17aRagexeRE
-#if PACKETVER >= 20091117
- packet(0x07fa,8);
-
-#endif
-
-//2009-11-24aRagexeRE
-#if PACKETVER >= 20091124
- packet(0x07fb,25);
-#endif
-
-//2009-12-01aRagexeRE
-#if PACKETVER >= 20091201
- //packet(0x07fc,10);
- //packet(0x07fd,-1);
- packet(0x07fe,26);
- //packet(0x07ff,-1);
-#endif
-
-//2009-12-15aRagexeRE
-#if PACKETVER >= 20091215
- packet(0x0800,-1);
- //packet(0x0801,-1);
+ packet(0x07f5,clif->pGMFullStrip,2);
#endif
//2009-12-22aRagexeRE
#if PACKETVER >= 20091222
- packet(0x0802,18,clif->pPartyBookingRegisterReq,2,4,6); // Booking System
- packet(0x0803,4);
- packet(0x0804,8); // Booking System
- packet(0x0805,-1);
- packet(0x0806,4,clif->pPartyBookingDeleteReq,2);// Booking System
- //packet(0x0807,2);
- packet(0x0808,4); // Booking System
- //packet(0x0809,14);
- //packet(0x080A,50);
- //packet(0x080B,18);
- //packet(0x080C,6);
+ packet(0x0802,clif->pPartyBookingRegisterReq,2,4,6); // Booking System
+ packet(0x0806,clif->pPartyBookingDeleteReq,2);// Booking System
#endif
//2009-12-29aRagexeRE
#if PACKETVER >= 20091229
- packet(0x0804,14,clif->pPartyBookingSearchReq,2,4,6,8,12);// Booking System
- packet(0x0806,2,clif->pPartyBookingDeleteReq,0);// Booking System
- packet(0x0807,4);
- packet(0x0808,14,clif->pPartyBookingUpdateReq,2); // Booking System
- packet(0x0809,50);
- packet(0x080A,18);
- packet(0x080B,6);// Booking System
+ packet(0x0804,clif->pPartyBookingSearchReq,2,4,6,8,12);// Booking System
+ packet(0x0806,clif->pPartyBookingDeleteReq,0);// Booking System
+ packet(0x0808,clif->pPartyBookingUpdateReq,2); // Booking System
#endif
//2010-01-05aRagexeRE
#if PACKETVER >= 20100105
- packet(0x0801,-1,clif->pPurchaseReq2,2,4,8,12);
-#endif
-
- //2010-01-26aRagexeRE
-#if PACKETVER >= 20100126
- //packet(0x080C,2);
- //packet(0x080D,3);
- packet(0x080E,14);
-#endif
-
- //2010-02-09aRagexeRE
-#if PACKETVER >= 20100209
- //packet(0x07F0,6);
-#endif
-
- //2010-02-23aRagexeRE
-#if PACKETVER >= 20100223
- packet(0x080F,20);
+ packet(0x0801,clif->pPurchaseReq2,2,4,8,12);
#endif
- //2010-03-03aRagexeRE
+//2010-03-03aRagexeRE
#if PACKETVER >= 20100303
- packet(0x0810,3);
- packet(0x0811,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
- //packet(0x0812,86);
- //packet(0x0813,6);
- //packet(0x0814,6);
- //packet(0x0815,-1);
- //packet(0x0817,-1);
- //packet(0x0818,6);
- //packet(0x0819,4);
-#endif
-
- //2010-03-09aRagexeRE
-#if PACKETVER >= 20100309
- packet(0x0813,-1);
- //packet(0x0814,2);
- //packet(0x0815,6);
- packet(0x0816,6);
- packet(0x0818,-1);
- //packet(0x0819,10);
- //packet(0x081A,4);
- //packet(0x081B,4);
- //packet(0x081C,6);
- packet(0x081d,22);
- packet(0x081e,8);
-#endif
-
- //2010-03-23aRagexeRE
-#if PACKETVER >= 20100323
- //packet(0x081F,-1);
-#endif
-
- //2010-04-06aRagexeRE
-#if PACKETVER >= 20100406
- //packet(0x081A,6);
-#endif
-
- //2010-04-13aRagexeRE
-#if PACKETVER >= 20100413
- //packet(0x081A,10);
- packet(0x0820,11);
- //packet(0x0821,2);
- //packet(0x0822,9);
- //packet(0x0823,-1);
-#endif
-
- //2010-04-14dRagexeRE
-#if PACKETVER >= 20100414
- //packet(0x081B,8);
+ packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
#endif
//2010-04-20aRagexeRE
#if PACKETVER >= 20100420
- packet(0x0812,8);
- packet(0x0814,86);
- packet(0x0815,2,clif->pReqCloseBuyingStore,0);
- packet(0x0817,6,clif->pReqClickBuyingStore,2);
- packet(0x0819,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x081a,4);
- packet(0x081b,10);
- packet(0x081c,10);
- packet(0x0824,6);
+ packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
#endif
//2010-06-01aRagexeRE
#if PACKETVER >= 20100601
- //packet(0x0825,-1);
- //packet(0x0826,4);
- packet(0x0835,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0836,-1);
- packet(0x0837,3);
- //packet(0x0838,3);
+ packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
#endif
//2010-06-08aRagexeRE
#if PACKETVER >= 20100608
- packet(0x0838,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x083A,4); // Search Stalls Feature
- packet(0x083B,2,clif->pCloseSearchStoreInfo,0);
- packet(0x083C,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x083D,6);
-#endif
-
-//2010-06-15aRagexeRE
-#if PACKETVER >= 20100615
- //packet(0x083E,26);
-#endif
-
-//2010-06-22aRagexeRE
-#if PACKETVER >= 20100622
- //packet(0x083F,22);
-#endif
-
-//2010-06-29aRagexeRE
-#if PACKETVER >= 20100629
- packet(0x00AA,9);
- //packet(0x07F1,18);
- //packet(0x07F2,8);
- //packet(0x07F3,6);
-#endif
-
-//2010-07-01aRagexeRE
-#if PACKETVER >= 20100701
- packet(0x083A,5);// Search Stalls Feature
-#endif
-
-//2010-07-13aRagexeRE
-#if PACKETVER >= 20100713
- //packet(0x0827,6);
- //packet(0x0828,14);
- //packet(0x0829,6);
- //packet(0x082A,10);
- //packet(0x082B,6);
- //packet(0x082C,14);
- //packet(0x0840,-1);
- //packet(0x0841,19);
-#endif
-
-//2010-07-14aRagexeRE
-#if PACKETVER >= 20100714
- //packet(0x841,4);
+ packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x083B,clif->pCloseSearchStoreInfo,0);
+ packet(0x083C,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
#endif
//2010-08-03aRagexeRE
#if PACKETVER >= 20100803
- packet(0x0839,66);
- packet(0x0842,6,clif->pGMRecall2,2);
- packet(0x0843,6,clif->pGMRemove2,2);
+ packet(0x0842,clif->pGMRecall2,2);
+ packet(0x0843,clif->pGMRemove2,2);
#endif
//2010-11-24aRagexeRE
#if PACKETVER >= 20101124
- packet(0x0288,-1,clif->pcashshop_buy,4,8);
- packet(0x0436,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x035f,5,clif->pWalkToXY,2);
- packet(0x0360,6,clif->pTickSend,2);
- packet(0x0361,5,clif->pChangeDir,2,4);
- packet(0x0362,6,clif->pTakeItem,2);
- packet(0x0363,6,clif->pDropItem,2,4);
- packet(0x0364,8,clif->pMoveToKafra,2,4);
- packet(0x0365,8,clif->pMoveFromKafra,2,4);
- packet(0x0366,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0367,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x0368,6,clif->pGetCharNameRequest,2);
- packet(0x0369,6,clif->pSolveCharName,2);
- packet(0x0856,-1);
- packet(0x0857,-1);
- packet(0x0858,-1);
- packet(0x0859,-1);
-#endif
-
-// 2010-12-21aRagexe
-#if PACKETVER >= 20101221
-// shuffle packets not added
-// new packets
- packet(0x08b1,-1); // ZC_MCSTORE_NOTMOVEITEM_LIST
-#endif
-
-// 2011-01-11aRagexe
-#if PACKETVER >= 20110111
-// shuffle packets not added
-// new packets
- packet(0x08b3,-1); // ZC_SHOWSCRIPT
+ packet(0x0288,clif->pcashshop_buy,4,8);
+ packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0362,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0365,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
#endif
// 2011-01-25aRagexe
#if PACKETVER >= 20110125
// shuffle packets not added
// new packets
- packet(0x08b4,2); // ZC_START_COLLECTION
- packet(0x08b5,6,clif->pDull,2); // CZ_TRYCOLLECTION
- packet(0x08b6,3); // ZC_TRYCOLLECTION
+ packet(0x08b5,clif->pDull,2); // CZ_TRYCOLLECTION
#endif
// 2011-01-31aRagexe
#if PACKETVER >= 20110131
// shuffle packets not added
// new packets
- packet(0x02f3,-1,clif->pDull); // CZ_IRMAIL_SEND
- packet(0x02f4,3); // ZC_IRMAIL_SEND_RES
- packet(0x02f5,7); // ZC_IRMAIL_NOTIFY
- packet(0x02f6,7,clif->pDull,2); // CZ_IRMAIL_LIST
+ packet(0x02f3,clif->pDull); // CZ_IRMAIL_SEND
+ packet(0x02f6,clif->pDull,2); // CZ_IRMAIL_LIST
#endif
// 2011-02-22aRagexe
#if PACKETVER >= 20110222
// shuffle packets not added
// new packets
- packet(0x08c0,-1); // ZC_ACK_SE_CASH_ITEM_LIST2
- packet(0x08c1,2,clif->pDull); // CZ_MACRO_START
- packet(0x08c2,2,clif->pDull); // CZ_MACRO_STOP
-#endif
-
-// 2011-04-19aRagexe
-#if PACKETVER >= 20110419
-// shuffle packets not added
-// new packets
- packet(0x08c7,-1); // ZC_SKILL_ENTRY3
+ packet(0x08c1,clif->pDull); // CZ_MACRO_START
+ packet(0x08c2,clif->pDull); // CZ_MACRO_STOP
#endif
// 2011-06-14aRagexe
#if PACKETVER >= 20110614
// shuffle packets not added
// new packets
- packet(0x08c8,34); // ZC_NOTIFY_ACT3
- packet(0x08c9,2,clif->pCashShopSchedule,0);
- packet(0x08ca,-1); // ZC_ACK_SCHEDULER_CASHITEM
-#endif
-
-// 2011-06-27aRagexe
-#if PACKETVER >= 20110627
-// shuffle packets not added
-// new packets
- packet(0x08cb,-1); // ZC_PERSONAL_INFOMATION
+ packet(0x08c9,clif->pCashShopSchedule,0);
#endif
//2011-07-18aRagexe (Thanks to Yommy!)
#if PACKETVER >= 20110718
// shuffle packets not added
- packet(0x0844,2,clif->pCashShopOpen,2);/* tell server cashshop window is being open */
- packet(0x084a,2,clif->pCashShopClose,2);/* tell server cashshop window is being closed */
- packet(0x0846,4,clif->pCashShopReqTab,2);
- packet(0x0848,-1,clif->pCashShopBuy,2);
-#endif
-
-// 2011-08-02aRagexe
-#if PACKETVER >= 20110802
-// shuffle packets not added
-// new packets
- packet(0x09dc,2); // unknown
-#endif
-
-// 2011-08-09aRagexe
-#if PACKETVER >= 20110809
-// shuffle packets not added
-// new packets
- packet(0x08cf,10); // ZC_SPIRITS_ATTRIBUTE
- packet(0x08d0,9); // ZC_REQ_WEAR_EQUIP_ACK2
- packet(0x08d1,7); // ZC_REQ_TAKEOFF_EQUIP_ACK2
- packet(0x08d2,10); // ZC_FASTMOVE
-#endif
-
-// 2011-08-16aRagexe
-#if PACKETVER >= 20110816
-// shuffle packets not added
-// new packets
- packet(0x08d3,10); // ZC_SE_CASHSHOP_UPDATE
-#endif
-
-// 2011-09-28aRagexe
-#if PACKETVER >= 20110928
-// shuffle packets not added
-// new packets
- packet(0x08d6,6); // ZC_CLEAR_DIALOG
+ packet(0x0844,clif->pCashShopOpen,2);/* tell server cashshop window is being open */
+ packet(0x084a,clif->pCashShopClose,2);/* tell server cashshop window is being closed */
+ packet(0x0846,clif->pCashShopReqTab,2);
+ packet(0x0848,clif->pCashShopBuy,2);
#endif
//2011-10-05aRagexeRE
#if PACKETVER >= 20111005
- packet(0x0364,5,clif->pWalkToXY,2);
- packet(0x0817,6,clif->pTickSend,2);
- packet(0x0366,5,clif->pChangeDir,2,4);
- packet(0x0815,6,clif->pTakeItem,2);
- packet(0x0885,6,clif->pDropItem,2,4);
- packet(0x0893,8,clif->pMoveToKafra,2,4);
- packet(0x0897,8,clif->pMoveFromKafra,2,4);
- packet(0x0369,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x08ad,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x088a,6,clif->pGetCharNameRequest,2);
- packet(0x0838,6,clif->pSolveCharName,2);
- packet(0x0439,8,clif->pUseItem,2,4);
- packet(0x08d7,28,clif->pBGQueueRegister,2);
- packet(0x090a,26,clif->pBGQueueCheckState,2);
- packet(0x08da,26,clif->pBGQueueRevokeReq,2);
- packet(0x08e0,51,clif->pBGQueueBattleBeginAck,2);
+ packet(0x0364,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0817,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0366,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0815,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0885,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0893,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0897,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0369,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x08ad,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x088a,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0838,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0439,clif->pUseItem,2,4);
+ packet(0x08d7,clif->pBGQueueRegister,2);
+ packet(0x090a,clif->pBGQueueCheckState,2);
+ packet(0x08da,clif->pBGQueueRevokeReq,2);
+ packet(0x08e0,clif->pBGQueueBattleBeginAck,2);
#endif
//2011-11-02aRagexe
#if PACKETVER >= 20111102
- packet(0x0436,26,clif->pFriendsListAdd,2);
- packet(0x0898,5,clif->pHomMenu,4);
- packet(0x0281,36,clif->pStoragePassword,0);
- packet(0x088d,26,clif->pPartyInvite2,2);
- packet(0x083c,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x08aa,7,clif->pActionRequest,2,6);
- packet(0x02c4,10,clif->pUseSkillToId,2,4,6);
- packet(0x0811,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x890,8);
- packet(0x08a5,18,clif->pPartyBookingRegisterReq,2,4,6);
- packet(0x0835,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
- packet(0x089b,2,clif->pReqCloseBuyingStore,0);
- packet(0x08a1,6,clif->pReqClickBuyingStore,2);
- packet(0x089e,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x08ab,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x088b,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x08a2,12,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0436,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0898,clif->pHomMenu,4);
+ packet(0x0281,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x088d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x083c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x08aa,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x02c4,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0811,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x08a5,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0835,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x089b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x08a1,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x089e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x08ab,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x088b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x08a2,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
#ifndef PACKETVER_RE
- packet(0x0835,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0892,5,clif->pWalkToXY,2);
- packet(0x0899,6,clif->pTickSend,2);
+ packet(0x0835,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0892,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0899,clif->pTickSend,2); // CZ_REQUEST_TIME
#endif
#endif
//2012-03-07fRagexeRE
#if PACKETVER >= 20120307
- packet(0x086A,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0437,5,clif->pWalkToXY,2);
- packet(0x0887,6,clif->pTickSend,2);
- packet(0x0890,5,clif->pChangeDir,2,4);
- packet(0x0865,6,clif->pTakeItem,2);
- packet(0x02C4,6,clif->pDropItem,2,4);
- packet(0x093B,8,clif->pMoveToKafra,2,4);
- packet(0x0963,8,clif->pMoveFromKafra,2,4);
- packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x096A,6,clif->pGetCharNameRequest,2);
- packet(0x0368,6,clif->pSolveCharName,2);
- packet(0x0369,26,clif->pFriendsListAdd,2);
- packet(0x0863,5,clif->pHomMenu,4);
- packet(0x0861,36,clif->pStoragePassword,0);
- packet(0x0929,26,clif->pPartyInvite2,2);
- packet(0x0885,7,clif->pActionRequest,2,6);
- packet(0x0889,10,clif->pUseSkillToId,2,4,6);
- packet(0x0870,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4,6);
- packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
- packet(0x0817,2,clif->pReqCloseBuyingStore,0);
- packet(0x0360,6,clif->pReqClickBuyingStore,2);
- packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0884,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0835,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0439,8,clif->pUseItem,2,4);
+ packet(0x086A,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0887,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0890,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0865,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x02C4,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x093B,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0963,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x096A,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0863,clif->pHomMenu,4);
+ packet(0x0861,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0929,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0885,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0889,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0870,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0884,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0439,clif->pUseItem,2,4);
// changed packet sizes
- packet(0x08e2,27); // ZC_NAVIGATION_ACTIVE
#endif
//2012-04-10aRagexeRE
#if PACKETVER >= 20120410
- packet(0x01FD,15,clif->pRepairItem,2);
- packet(0x089C,26,clif->pFriendsListAdd,2);
- packet(0x0885,5,clif->pHomMenu,2,4);
- packet(0x0961,36,clif->pStoragePassword,0);
- packet(0x0288,-1,clif->pcashshop_buy,4,8);
- packet(0x091C,26,clif->pPartyInvite2,2);
- packet(0x094B,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0369,7,clif->pActionRequest,2,6);
- packet(0x083C,10,clif->pUseSkillToId,2,4,6);
- packet(0x0439,8,clif->pUseItem,2,4);
- packet(0x0945,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
- packet(0x0817,2,clif->pReqCloseBuyingStore,0);
- packet(0x0360,6,clif->pReqClickBuyingStore,2);
- packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0835,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0437,5,clif->pWalkToXY,2);
- packet(0x0886,6,clif->pTickSend,2);
- packet(0x0871,5,clif->pChangeDir,2,4);
- packet(0x0938,6,clif->pTakeItem,2);
- packet(0x0891,6,clif->pDropItem,2,4);
- packet(0x086C,8,clif->pMoveToKafra,2,4);
- packet(0x08A6,8,clif->pMoveFromKafra,2,4);
- packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x0889,6,clif->pGetCharNameRequest,2);
- packet(0x0884,6,clif->pSolveCharName,2);
+ packet(0x01FD,clif->pRepairItem,2);
+ packet(0x089C,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0885,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0961,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0288,clif->pcashshop_buy,4,8);
+ packet(0x091C,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x094B,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x083C,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0439,clif->pUseItem,2,4);
+ packet(0x0945,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0886,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0871,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0938,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0891,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x086C,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08A6,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0889,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0884,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
#ifndef PACKETVER_RE
- packet(0x091D,18,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x091D,clif->pPartyBookingRegisterReq,2,4,6);
#else
- packet(0x08E5,41,clif->pPartyRecruitRegisterReq,2,4);
-#endif
- packet(0x08E6,4);
- packet(0x08E7,10,clif->pPartyRecruitSearchReq,2);
- packet(0x08E8,-1);
- packet(0x08E9,2,clif->pPartyRecruitDeleteReq,2);
- packet(0x08EA,4);
- packet(0x08EB,39,clif->pPartyRecruitUpdateReq,2);
- packet(0x08EC,73);
- packet(0x08ED,43);
- packet(0x08EE,6);
+ packet(0x08E5,clif->pPartyRecruitRegisterReq,2,4);
+#endif
+ packet(0x08E7,clif->pPartyRecruitSearchReq,2);
+ packet(0x08E9,clif->pPartyRecruitDeleteReq,2);
+ packet(0x08EB,clif->pPartyRecruitUpdateReq,2);
#ifdef PARTY_RECRUIT
- packet(0x08EF,6,clif->pDull,2); //bookingignorereq
- packet(0x08F0,6,clif->pDull,2);
- packet(0x08F1,6,clif->pDull,2); //bookingjoinpartyreq
-#endif
- packet(0x08F2,36);
- packet(0x08F3,-1);
- packet(0x08F4,6);
- packet(0x08F5,-1,clif->pDull,2,4); //bookingsummonmember
- packet(0x08F6,22);
- packet(0x08F7,3);
- packet(0x08F8,7);
- packet(0x08F9,6);
+ packet(0x08EF,clif->pDull,2); //bookingignorereq
+ packet(0x08F0,clif->pDull,2);
+ packet(0x08F1,clif->pDull,2); //bookingjoinpartyreq
+#endif
+ packet(0x08F5,clif->pDull,2,4); //bookingsummonmember
#ifdef PARTY_RECRUIT
- packet(0x08F9,6,clif->pDull,2);
+ packet(0x08F9,clif->pDull,2);
#endif
- packet(0x08FA,6);
- packet(0x08FB,6,clif->pDull,2); //bookingcanceljoinparty
- packet(0x0907,5,clif->pMoveItem,2,4);
- packet(0x0908,5);
- packet(0x0977,14);//Monster HP Bar
+ packet(0x08FB,clif->pDull,2); //bookingcanceljoinparty
+ packet(0x0907,clif->pMoveItem,2,4);
#endif
//2012-04-18aRagexeRE [Special Thanks to Judas!]
#if PACKETVER >= 20120418
- packet(0x023B,26,clif->pFriendsListAdd,2);
- packet(0x0361,5,clif->pHomMenu,2,4);
- packet(0x08A8,36,clif->pStoragePassword,0);
- packet(0x0802,26,clif->pPartyInvite2,2);
- packet(0x022D,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x035F,6,clif->pTickSend,2);
- packet(0x0202,5,clif->pChangeDir,2,4);
- packet(0x07E4,6,clif->pTakeItem,2);
- packet(0x0362,6,clif->pDropItem,2,4);
- packet(0x07EC,8,clif->pMoveToKafra,2,4);
- packet(0x0364,8,clif->pMoveFromKafra,2,4);
- packet(0x096A,6,clif->pGetCharNameRequest,2);
- packet(0x0368,6,clif->pSolveCharName,2);
- packet(0x08E5,41,clif->pPartyRecruitRegisterReq,2,4);
- packet(0x0916,26,clif->pGuildInvite2,2);
+ packet(0x023B,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x08A8,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x022D,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035F,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x07E4,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x07EC,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x096A,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x08E5,clif->pPartyRecruitRegisterReq,2,4);
+ packet(0x0916,clif->pGuildInvite2,2);
#endif
// 2012-05-02aRagexeRE
#if PACKETVER >= 20120502
// shuffle packets not added
- packet(0x097d,288); // ZC_ACK_RANKING
- packet(0x097e,12); // ZC_UPDATE_RANKING_POINT
+ packet(0x0980,clif->pSelectCart); // CZ_SELECTCART
#endif
#ifndef PACKETVER_RE
#if PACKETVER >= 20120604
// shuffle packets not added
- packet(0x0861,18,clif->pPartyRecruitRegisterReq,2,4,6);
-#endif
+ packet(0x0861,clif->pPartyRecruitRegisterReq,2,4,6);
#endif
-
-//2012-06-18aRagexeRE
-#if PACKETVER >= 20120618
-// shuffle packets not added
- packet(0x0983,29);
#endif
// ========== 2012-07-02aRagexeRE =============
// - 2012-07-02 is NOT STABLE.
// - The packets are kept here for reference, DONT USE THEM.
#if PACKETVER >= 20120702
- packet(0x0363,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0364,6,clif->pTickSend,2);
- packet(0x085a,7,clif->pActionRequest,2,6);
- packet(0x0861,8,clif->pMoveFromKafra,2,4);
- packet(0x0862,10,clif->pUseSkillToId,2,4,6);
- packet(0x0863,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0886,6,clif->pSolveCharName,2);
- packet(0x0889,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x089e,6,clif->pDropItem,2,4);
- packet(0x089f,6,clif->pTakeItem,2);
- packet(0x08a0,8,clif->pMoveToKafra,2,4);
- packet(0x094a,6,clif->pGetCharNameRequest,2);
- packet(0x0953,5,clif->pWalkToXY,2);
- packet(0x0960,5,clif->pChangeDir,2,4);
+ packet(0x0363,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0364,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x085a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0861,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0862,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0863,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0886,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0889,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x089e,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x089f,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08a0,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x094a,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0953,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0960,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
#endif
//2012-07-10
#if PACKETVER >= 20120710
- packet(0x0886,2,clif->pReqCloseBuyingStore,0);
+ packet(0x0886,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
#endif
//2012-07-16aRagExe (special thanks to Yommy/Frost!)
#if PACKETVER >= 20120716
- packet(0x0879,18,clif->pPartyBookingRegisterReq,2,4,6);
- packet(0x023B,26,clif->pFriendsListAdd,2);
- packet(0x0361,5,clif->pHomMenu,2,4);
- packet(0x0819,36,clif->pStoragePassword,0);
- packet(0x0802,26,clif->pPartyInvite2,2);
- packet(0x022D,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0369,7,clif->pActionRequest,2,6);
- packet(0x083C,10,clif->pUseSkillToId,2,4,6);
- packet(0x0439,8,clif->pUseItem,2,4);
- packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
- packet(0x0817,2,clif->pReqCloseBuyingStore,0);
- packet(0x0360,6,clif->pReqClickBuyingStore,2);
- packet(0x0940,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0811,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0835,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0437,5,clif->pWalkToXY,2);
- packet(0x035F,6,clif->pTickSend,2);
- packet(0x0202,5,clif->pChangeDir,2,4);
- packet(0x07E4,6,clif->pTakeItem,2);
- packet(0x0362,6,clif->pDropItem,2,4);
- packet(0x07EC,8,clif->pMoveToKafra,2,4);
- packet(0x0364,8,clif->pMoveFromKafra,2,4);
- packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x096A,6,clif->pGetCharNameRequest,2);
- packet(0x0368,6,clif->pSolveCharName,2);
- packet(0x0363,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
- packet(0x0436,4,clif->pDull); // CZ_GANGSI_RANK
+ packet(0x0879,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x023B,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0819,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x022D,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x083C,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0439,clif->pUseItem,2,4);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0940,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0811,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x035F,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x07E4,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x07EC,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x096A,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0363,clif->pDull); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0436,clif->pDull); // CZ_GANGSI_RANK
+#endif
+
+//2012-07-16aRagExe
+#if PACKETVER >= 20120716
+// new packets
+ packet(0x098d,clif->pClanMessage,2,4); // CZ_CLAN_CHAT
+#endif
+
+// 2012-09-25aRagexe
+#if PACKETVER >= 20120925
+// new packets (not all)
+ packet(0x0998,clif->pEquipItem,2,4);
+#endif
+
+// 2013-03-06aRagexe
+#if PACKETVER >= 20130306
+// new packets
+ packet(0x09a7,clif->pDull/*,XXX*/); // CZ_REQ_BANKING_DEPOSIT
+ packet(0x09a9,clif->pDull/*,XXX*/); // CZ_REQ_BANKING_WITHDRAW
+// changed packet sizes
+#endif
+
+// 2013-03-13aRagexe
+#if PACKETVER >= 20130313
+// new packets
+ packet(0x09ab,clif->pDull/*,XXX*/); // CZ_REQ_BANKING_CHECK
+ packet(0x09ac,clif->pDull/*,XXX*/); // CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO
+ packet(0x09ae,clif->pDull/*,XXX*/); // CZ_REQ_APPLY_BARGAIN_SALE_ITEM
+ packet(0x09b0,clif->pDull/*,XXX*/); // CZ_REQ_REMOVE_BARGAIN_SALE_ITEM
+// changed packet sizes
#endif
//2013-03-20Ragexe (Judas + Yommy)
#if PACKETVER >= 20130320
// Shuffle Start
- packet(0x088E,7,clif->pActionRequest,2,6);
- packet(0x089B,10,clif->pUseSkillToId,2,4,6);
- packet(0x0881,5,clif->pWalkToXY,2);
- packet(0x0363,6,clif->pTickSend,2);
- packet(0x0897,5,clif->pChangeDir,2,4);
- packet(0x0933,6,clif->pTakeItem,2);
- packet(0x0438,6,clif->pDropItem,2,4);
- packet(0x08AC,8,clif->pMoveToKafra,2,4);
- packet(0x0874,8,clif->pMoveFromKafra,2,4);
- packet(0x0959,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x085A,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x0898,6,clif->pGetCharNameRequest,2);
- packet(0x094C,6,clif->pSolveCharName,2);
- packet(0x0365,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x092E,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x094E,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0922,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x035F,6,clif->pReqClickBuyingStore,2);
- packet(0x0886,2,clif->pReqCloseBuyingStore,0);
- packet(0x0938,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x088E,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x089B,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0881,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0363,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0897,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0933,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0438,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x08AC,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0874,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0959,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x085A,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0898,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x094C,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0365,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x092E,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x094E,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0922,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x035F,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0886,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0938,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
#ifdef PACKETVER_RE
- packet(0x085D,41,clif->pPartyRecruitRegisterReq,2,4);
+ packet(0x085D,clif->pPartyRecruitRegisterReq,2,4);
#else // not PACKETVER_RE
- packet(0x085D,18,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x085D,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
#endif // PACKETVER_RE
- packet(0x0868,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x0888,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x086D,26,clif->pPartyInvite2,2);
- packet(0x086F,26,clif->pFriendsListAdd,2);
- packet(0x093F,5,clif->pHomMenu,2,4);
- packet(0x0947,36,clif->pStoragePassword,0);
- packet(0x0890,4,clif->pDull); // CZ_GANGSI_RANK
- packet(0x095a,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0868,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0888,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x086D,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x086F,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x093F,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0947,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0890,clif->pDull); // CZ_GANGSI_RANK
+ packet(0x095a,clif->pDull); // CZ_JOIN_BATTLE_FIELD
// Shuffle End
- // New Packets
- packet(0x0998,8,clif->pEquipItem,2,4);
- packet(0x0447,2); // PACKET_CZ_BLOCKING_PLAY_CANCEL
- packet(0x099f,24);
+ // New Packets (wrong version or packet not exists)
// New Packets End
#endif
+#if PACKETVER >= 20130320
+// new packets
+// changed packet sizes
+ packet(0x09a7,clif->pBankDeposit,2,4,6); // CZ_REQ_BANKING_DEPOSIT
+ packet(0x09a9,clif->pBankWithdraw,2,4,6); // CZ_REQ_BANKING_WITHDRAW
+ packet(0x09ab,clif->pBankCheck,2,4); // CZ_REQ_BANKING_CHECK
+#endif
+
+// 2013-03-27bRagexe
+#if PACKETVER >= 20130327
+// new packets
+ packet(0x09ac,clif->pDull/*,XXX*/); // CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO
+ packet(0x09ae,clif->pDull/*,XXX*/); // CZ_REQ_APPLY_BARGAIN_SALE_ITEM
+ packet(0x09b0,clif->pDull/*,XXX*/); // CZ_REQ_REMOVE_BARGAIN_SALE_ITEM
+// changed packet sizes
+#endif
+
//2013-05-15aRagexe (Shakto)
#if PACKETVER >= 20130515
// Shuffle Start
- packet(0x0369,7,clif->pActionRequest,2,6);
- packet(0x083C,10,clif->pUseSkillToId,2,4,6);
- packet(0x0437,5,clif->pWalkToXY,2);
- packet(0x035F,6,clif->pTickSend,2);
- packet(0x0362,5,clif->pChangeDir,2,4);
- packet(0x08A1,6,clif->pTakeItem,2);
- packet(0x0944,6,clif->pDropItem,2,4);
- packet(0x0887,8,clif->pMoveToKafra,2,4);
- packet(0x08AC,8,clif->pMoveFromKafra,2,4);
- packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x096A,6,clif->pGetCharNameRequest,2);
- packet(0x0368,6,clif->pSolveCharName,2);
- packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0835,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0360,6,clif->pReqClickBuyingStore,2);
- packet(0x0817,2,clif->pReqCloseBuyingStore,0);
- packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x083C,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x035F,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0362,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08A1,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0944,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0887,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08AC,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x096A,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
#ifdef PACKETVER_RE
- packet(0x092D,41,clif->pPartyRecruitRegisterReq,2,4);
+ packet(0x092D,clif->pPartyRecruitRegisterReq,2,4);
#else // not PACKETVER_RE
- packet(0x092D,18,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x092D,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
#endif // PACKETVER_RE
- packet(0x0963,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x0943,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0947,26,clif->pPartyInvite2,2);
- packet(0x0962,26,clif->pFriendsListAdd,2);
- packet(0x0931,5,clif->pHomMenu,2,4);
- packet(0x093E,36,clif->pStoragePassword,0);
- packet(0x0862,4,clif->pDull); // CZ_GANGSI_RANK
- packet(0x08aa,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0963,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0943,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0947,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0962,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0931,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x093E,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0862,clif->pDull); // CZ_GANGSI_RANK
+ packet(0x08aa,clif->pDull); // CZ_JOIN_BATTLE_FIELD
// Shuffle End
#endif
//2013-05-22Ragexe (Shakto)
#if PACKETVER >= 20130522
// Shuffle Start
- packet(0x08A2,7,clif->pActionRequest,2,6);
- packet(0x095C,10,clif->pUseSkillToId,2,4,6);
- packet(0x0360,5,clif->pWalkToXY,2);
- packet(0x07EC,6,clif->pTickSend,2);
- packet(0x0925,5,clif->pChangeDir,2,4);
- packet(0x095E,6,clif->pTakeItem,2);
- packet(0x089C,6,clif->pDropItem,2,4);
- packet(0x08A3,8,clif->pMoveToKafra,2,4);
- packet(0x087E,8,clif->pMoveFromKafra,2,4);
- packet(0x0811,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0964,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x08A6,6,clif->pGetCharNameRequest,2);
- packet(0x0369,6,clif->pSolveCharName,2);
- packet(0x093E,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x08AA,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x095B,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0952,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0368,6,clif->pReqClickBuyingStore,2);
- packet(0x086E,2,clif->pReqCloseBuyingStore,0);
- packet(0x0874,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x08A2,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x095C,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0360,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x07EC,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0925,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x095E,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x089C,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x08A3,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x087E,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0811,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0964,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x08A6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x093E,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x08AA,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x095B,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0952,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0368,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x086E,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0874,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
#ifdef PACKETVER_RE
- packet(0x089B,41,clif->pPartyRecruitRegisterReq,2,4);
+ packet(0x089B,clif->pPartyRecruitRegisterReq,2,4);
#else // not PACKETVER_RE
- packet(0x089B,18,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x089B,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
#endif // PACKETVER_RE
- packet(0x086A,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x08A9,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0950,26,clif->pPartyInvite2,2);
- packet(0x0362,26,clif->pFriendsListAdd,2);
- packet(0x0926,5,clif->pHomMenu,2,4);
- packet(0x088E,36,clif->pStoragePassword,0);
- packet(0x08ac,4,clif->pDull); // CZ_GANGSI_RANK
- packet(0x0965,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
+ packet(0x086A,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x08A9,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0950,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0362,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0926,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x088E,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08ac,clif->pDull); // CZ_GANGSI_RANK
+ packet(0x0965,clif->pDull); // CZ_JOIN_BATTLE_FIELD
// Shuffle End
#endif
//2013-05-29Ragexe (Shakto)
#if PACKETVER >= 20130529
- packet(0x0890,7,clif->pActionRequest,2,6);
- packet(0x0438,10,clif->pUseSkillToId,2,4,6);
- packet(0x0876,5,clif->pWalkToXY,2);
- packet(0x0897,6,clif->pTickSend,2);
- packet(0x0951,5,clif->pChangeDir,2,4);
- packet(0x0895,6,clif->pTakeItem,2);
- packet(0x08A7,6,clif->pDropItem,2,4);
- packet(0x0938,8,clif->pMoveToKafra,2,4);
- packet(0x0957,8,clif->pMoveFromKafra,2,4);
- packet(0x0917,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x085E,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x0863,6,clif->pGetCharNameRequest,2);
- packet(0x0937,6,clif->pSolveCharName,2);
- packet(0x085A,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0941,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0918,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0936,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0892,6,clif->pReqClickBuyingStore,2);
- packet(0x0964,2,clif->pReqCloseBuyingStore,0);
- packet(0x0869,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0890,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0876,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0897,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0951,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0895,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08A7,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0938,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0957,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0917,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x085E,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0863,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0937,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x085A,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0941,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0918,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0936,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0892,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0964,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0869,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
#ifdef PACKETVER_RE
- packet(0x0874,41,clif->pPartyRecruitRegisterReq,2,4);
+ packet(0x0874,clif->pPartyRecruitRegisterReq,2,4);
#else // not PACKETVER_RE
- packet(0x0874,18,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0874,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
#endif // PACKETVER_RE
- packet(0x0958,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x0919,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x08A8,26,clif->pPartyInvite2,2);
- packet(0x0877,26,clif->pFriendsListAdd,2);
- packet(0x023B,5,clif->pHomMenu,2,4);
- packet(0x0956,36,clif->pStoragePassword,0);
- packet(0x0888,4,clif->pDull); // CZ_GANGSI_RANK
- packet(0x088e,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0958,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0919,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x08A8,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0877,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x023B,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0956,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0888,clif->pDull); // CZ_GANGSI_RANK
+ packet(0x088e,clif->pDull); // CZ_JOIN_BATTLE_FIELD
#endif
//2013-06-05Ragexe (Shakto)
#if PACKETVER >= 20130605
- packet(0x0369,7,clif->pActionRequest,2,6);
- packet(0x083C,10,clif->pUseSkillToId,2,4,6);
- packet(0x0437,5,clif->pWalkToXY,2);
- packet(0x035F,6,clif->pTickSend,2);
- packet(0x0202,5,clif->pChangeDir,2,4);
- packet(0x07E4,6,clif->pTakeItem,2);
- packet(0x0362,6,clif->pDropItem,2,4);
- packet(0x07EC,8,clif->pMoveToKafra,2,4);
- packet(0x0364,8,clif->pMoveFromKafra,2,4);
- packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x096A,6,clif->pGetCharNameRequest,2);
- packet(0x0368,6,clif->pSolveCharName,2);
- packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0835,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0360,6,clif->pReqClickBuyingStore,2);
- packet(0x0817,2,clif->pReqCloseBuyingStore,0);
- packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x083C,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x035F,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x07E4,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x07EC,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x096A,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
#ifdef PACKETVER_RE
- packet(0x0365,41,clif->pPartyRecruitRegisterReq,2,4);
+ packet(0x0365,clif->pPartyRecruitRegisterReq,2,4);
#else // not PACKETVER_RE
- packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
#endif // PACKETVER_RE
- packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x022D,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0802,26,clif->pPartyInvite2,2);
- packet(0x023B,26,clif->pFriendsListAdd,2);
- packet(0x0361,5,clif->pHomMenu,2,4);
- packet(0x0883,36,clif->pStoragePassword,0);
- packet(0x097C,4,clif->pRanklist);
- packet(0x0363,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
- packet(0x0436,4,clif->pDull); // CZ_GANGSI_RANK
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x022D,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x023B,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0883,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x097C,clif->pRanklist);
+ packet(0x0363,clif->pDull); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0436,clif->pDull); // CZ_GANGSI_RANK
#endif
//2013-06-12Ragexe (Shakto)
#if PACKETVER >= 20130612
// most shuffle packets used from 20130605
- packet(0x087E,5,clif->pChangeDir,2,4);
- packet(0x0919,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0940,26,clif->pFriendsListAdd,2);
- packet(0x093A,5,clif->pHomMenu,2,4);
- packet(0x0964,36,clif->pStoragePassword,0);
+ packet(0x087E,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0919,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0940,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x093A,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0964,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
#endif
//2013-06-18Ragexe (Shakto)
#if PACKETVER >= 20130618
- packet(0x0889,7,clif->pActionRequest,2,6);
- packet(0x0951,10,clif->pUseSkillToId,2,4,6);
- packet(0x088E,5,clif->pWalkToXY,2);
- packet(0x0930,6,clif->pTickSend,2);
- packet(0x08A6,5,clif->pChangeDir,2,4);
- packet(0x0962,6,clif->pTakeItem,2);
- packet(0x0917,6,clif->pDropItem,2,4);
- packet(0x0885,8,clif->pMoveToKafra,2,4);
- packet(0x0936,8,clif->pMoveFromKafra,2,4);
- packet(0x096A,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x094F,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x0944,6,clif->pGetCharNameRequest,2);
- packet(0x0945,6,clif->pSolveCharName,2);
- packet(0x0890,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0363,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0281,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0891,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0862,6,clif->pReqClickBuyingStore,2);
- packet(0x085A,2,clif->pReqCloseBuyingStore,0);
- packet(0x0932,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0889,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0951,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x088E,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0930,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x08A6,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0962,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0917,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0885,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0936,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x096A,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x094F,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0944,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0945,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0890,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0363,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0281,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0891,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0862,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x085A,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0932,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
#ifdef PACKETVER_RE
- packet(0x08A7,41,clif->pPartyRecruitRegisterReq,2,4);
+ packet(0x08A7,clif->pPartyRecruitRegisterReq,2,4);
#else // not PACKETVER_RE
- packet(0x08A7,18,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x08A7,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
#endif // PACKETVER_RE
- packet(0x0942,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x095B,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0887,26,clif->pPartyInvite2,2);
- packet(0x0953,26,clif->pFriendsListAdd,2);
- packet(0x02C4,5,clif->pHomMenu,2,4);
- packet(0x0864,36,clif->pStoragePassword,0);
- packet(0x0878,4,clif->pDull); // CZ_GANGSI_RANK
- packet(0x087a,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0942,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x095B,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0887,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0953,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x02C4,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0864,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0878,clif->pDull); // CZ_GANGSI_RANK
+ packet(0x087a,clif->pDull); // CZ_JOIN_BATTLE_FIELD
#endif
//2013-06-26Ragexe (Shakto)
#if PACKETVER >= 20130626
- packet(0x0369,7,clif->pActionRequest,2,6);
- packet(0x083C,10,clif->pUseSkillToId,2,4,6);
- packet(0x0437,5,clif->pWalkToXY,2);
- packet(0x035F,6,clif->pTickSend,2);
- packet(0x094D,5,clif->pChangeDir,2,4);
- packet(0x088B,6,clif->pTakeItem,2);
- packet(0x0952,6,clif->pDropItem,2,4);
- packet(0x0921,8,clif->pMoveToKafra,2,4);
- packet(0x0817,8,clif->pMoveFromKafra,2,4);
- packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x096A,6,clif->pGetCharNameRequest,2);
- packet(0x0368,6,clif->pSolveCharName,2);
- packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0835,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0360,6,clif->pReqClickBuyingStore,2);
- packet(0x0365,2,clif->pReqCloseBuyingStore,0);
- packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x083C,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x035F,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x094D,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x088B,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0952,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0921,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0817,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x096A,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0365,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
#ifdef PACKETVER_RE
- packet(0x0894,41,clif->pPartyRecruitRegisterReq,2,4);
+ packet(0x0894,clif->pPartyRecruitRegisterReq,2,4);
#else // not PACKETVER_RE
- packet(0x0894,18,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0894,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
#endif // PACKETVER_RE
- packet(0x08A5,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x088C,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0895,26,clif->pPartyInvite2,2);
- packet(0x08AB,26,clif->pFriendsListAdd,2);
- packet(0x0960,5,clif->pHomMenu,2,4);
- packet(0x0930,36,clif->pStoragePassword,0);
- packet(0x0860,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
- packet(0x088f,4,clif->pDull); // CZ_GANGSI_RANK
+ packet(0x08A5,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x088C,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0895,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x08AB,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0960,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0930,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0860,clif->pDull); // CZ_JOIN_BATTLE_FIELD
+ packet(0x088f,clif->pDull); // CZ_GANGSI_RANK
#endif
//2013-07-03Ragexe (Shakto)
#if PACKETVER >= 20130703
- packet(0x0930,5,clif->pChangeDir,2,4);
- packet(0x07E4,6,clif->pTakeItem,2);
- packet(0x0362,6,clif->pDropItem,2,4);
- packet(0x07EC,8,clif->pMoveToKafra,2,4);
- packet(0x0364,8,clif->pMoveFromKafra,2,4);
- packet(0x0202,6,clif->pReqClickBuyingStore,2);
- packet(0x0817,2,clif->pReqCloseBuyingStore,0);
- packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0930,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x07E4,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x07EC,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0202,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
#ifdef PACKETVER_RE
- packet(0x0365,41,clif->pPartyRecruitRegisterReq,2,4);
+ packet(0x0365,clif->pPartyRecruitRegisterReq,2,4);
#else // not PACKETVER_RE
- packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
#endif // PACKETVER_RE
- packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x022D,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0802,26,clif->pPartyInvite2,2);
- packet(0x0360,26,clif->pFriendsListAdd,2);
- packet(0x094A,5,clif->pHomMenu,2,4);
- packet(0x0873,36,clif->pStoragePassword,0);
- packet(0x0363,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
- packet(0x0436,4,clif->pDull); // CZ_GANGSI_RANK
-#endif
-
-/* Bank System [Yommy/Hercules] */
-#if PACKETVER >= 20130724
-// shuffle packets not added
- packet(0x09A6,12); // ZC_BANKING_CHECK
- packet(0x09A7,10,clif->pBankDeposit,2,4,6);
- packet(0x09A8,16); // ZC_ACK_BANKING_DEPOSIT
- packet(0x09A9,10,clif->pBankWithdraw,2,4,6);
- packet(0x09AA,16); // ZC_ACK_BANKING_WITHDRAW
- packet(0x09AB,6,clif->pBankCheck,2,4);
- ////
- packet(0x09B6,6,clif->pBankOpen,2,4);
- packet(0x09B7,4); // ZC_ACK_OPEN_BANKING
- packet(0x09B8,6,clif->pBankClose,2,4);
- packet(0x09B9,4); // ZC_ACK_CLOSE_BANKING
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x022D,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0360,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x094A,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0873,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0363,clif->pDull); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0436,clif->pDull); // CZ_GANGSI_RANK
+#endif
+
+// 2013-04-17aRagexe
+#if PACKETVER >= 20130417
+// new packets
+ packet(0x09b4,clif->pDull/*,XXX*/); // CZ_OPEN_BARGAIN_SALE_TOOL
+ packet(0x09b6,clif->pBankOpen,2,4); // CZ_REQ_OPEN_BANKING
+ packet(0x09b8,clif->pBankClose,2,4); // CZ_REQ_CLOSE_BANKING
+// changed packet sizes
+#endif
+
+// 2013-04-24aRagexe
+#if PACKETVER >= 20130424
+// new packets
+ packet(0x09ba,clif->pDull/*,XXX*/); // CZ_REQ_OPEN_GUILD_STORAGE
+ packet(0x09bc,clif->pDull/*,XXX*/); // CZ_CLOSE_BARGAIN_SALE_TOOL
+// changed packet sizes
+#endif
+
+// 2013-05-02aRagexe
+#if PACKETVER >= 20130502
+// new packets
+ packet(0x09be,clif->pDull/*,XXX*/); // CZ_REQ_CLOSE_GUILD_STORAGE
+// changed packet sizes
+#endif
+
+// 2013-05-29Ragexe
+#if PACKETVER >= 20130529
+// new packets
+ packet(0x09c3,clif->pDull/*,XXX*/); // CZ_REQ_COUNT_BARGAIN_SALE_ITEM
+// changed packet sizes
#endif
//2013-08-07Ragexe (Shakto)
#if PACKETVER >= 20130807
- packet(0x0369,7,clif->pActionRequest,2,6);
- packet(0x083C,10,clif->pUseSkillToId,2,4,6);
- packet(0x0437,5,clif->pWalkToXY,2);
- packet(0x035F,6,clif->pTickSend,2);
- packet(0x0202,5,clif->pChangeDir,2,4);
- packet(0x07E4,6,clif->pTakeItem,2);
- packet(0x0362,6,clif->pDropItem,2,4);
- packet(0x07EC,8,clif->pMoveToKafra,2,4);
- packet(0x0364,8,clif->pMoveFromKafra,2,4);
- packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x096A,6,clif->pGetCharNameRequest,2);
- packet(0x0368,6,clif->pSolveCharName,2);
- packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0835,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0360,6,clif->pReqClickBuyingStore,2);
- packet(0x0817,2,clif->pReqCloseBuyingStore,0);
- packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x083C,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x035F,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x07E4,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x07EC,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x096A,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
#ifdef PACKETVER_RE
- packet(0x0365,41,clif->pPartyRecruitRegisterReq,2,4);
+ packet(0x0365,clif->pPartyRecruitRegisterReq,2,4);
#else // not PACKETVER_RE
- packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
#endif // PACKETVER_RE
- packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x022D,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0802,26,clif->pPartyInvite2,2);
- packet(0x023B,26,clif->pFriendsListAdd,2);
- packet(0x0361,5,clif->pHomMenu,2,4);
- packet(0x0887,36,clif->pStoragePassword,0);
- packet(0x0363,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
- packet(0x0436,4,clif->pDull); // CZ_GANGSI_RANK
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x022D,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x023B,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0887,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0363,clif->pDull); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0436,clif->pDull); // CZ_GANGSI_RANK
#endif
//2013-08-14aRagexe - Themon
#if PACKETVER >= 20130814
- packet(0x0874,7,clif->pActionRequest,2,6);
- packet(0x0947,10,clif->pUseSkillToId,2,4,6);
- packet(0x093A,5,clif->pWalkToXY,2);
- packet(0x088A,6,clif->pTickSend,2);
- packet(0x088C,5,clif->pChangeDir,2,4);
- packet(0x0926,6,clif->pTakeItem,2);
- packet(0x095F,6,clif->pDropItem,2,4);
- packet(0x0202,8,clif->pMoveToKafra,2,4);
- packet(0x0873,8,clif->pMoveFromKafra,2,4);
- packet(0x0887,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0962,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x0937,6,clif->pGetCharNameRequest,2);
- packet(0x0923,6,clif->pSolveCharName,2);
- packet(0x0868,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0941,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0889,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0835,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0895,6,clif->pReqClickBuyingStore,2);
- packet(0x094E,2,clif->pReqCloseBuyingStore,0);
- packet(0x0936,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0874,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0947,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x093A,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x088A,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x088C,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0926,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x095F,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0202,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0873,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0887,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0962,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0937,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0923,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0868,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0941,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0895,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x094E,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0936,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
#ifdef PACKETVER_RE
- packet(0x0365,41,clif->pPartyRecruitRegisterReq,2,4);
+ packet(0x0365,clif->pPartyRecruitRegisterReq,2,4);
#else // not PACKETVER_RE
- packet(0x0959,18,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0959,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
#endif // PACKETVER_RE
- packet(0x08A4,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x0368,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0927,26,clif->pPartyInvite2,2);
- packet(0x0281,26,clif->pFriendsListAdd,2);
- packet(0x0958,5,clif->pHomMenu,2,4);
- packet(0x0885,36,clif->pStoragePassword,0);
- packet(0x0815,4,clif->pDull); // CZ_GANGSI_RANK
- packet(0x0896,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
-#endif
-
-// 2013-12-18bRagexe - Yommy
-#if PACKETVER >= 20131218
- packet(0x0369,7,clif->pActionRequest,2,6);
- packet(0x083C,10,clif->pUseSkillToId,2,4,6);
- packet(0x0437,5,clif->pWalkToXY,2);
- packet(0x035F,6,clif->pTickSend,2);
- packet(0x0947,5,clif->pChangeDir,2,4);
- packet(0x07E4,6,clif->pTakeItem,2);
- packet(0x0362,6,clif->pDropItem,2,4);
- packet(0x07EC,8,clif->pMoveToKafra,2,4);
- packet(0x0364,8,clif->pMoveFromKafra,2,4);
- packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x096A,6,clif->pGetCharNameRequest,2);
- packet(0x0368,6,clif->pSolveCharName,2);
- packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0835,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x022D,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0360,6,clif->pReqClickBuyingStore,2);
- packet(0x0817,2,clif->pReqCloseBuyingStore,0);
- packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
- packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4);
- packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x092F,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0802,26,clif->pPartyInvite2,2);
- packet(0x08AB,26,clif->pFriendsListAdd,2);
- packet(0x0811,5,clif->pHomMenu,2,4);
- packet(0x085C,36,clif->pStoragePassword,0);
- packet(0x0363,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
- packet(0x087b,4,clif->pDull); // CZ_GANGSI_RANK
- /* New */
- packet(0x09d4,2,clif->pNPCShopClosed);
- packet(0x09ce,102,clif->pGM_Monster_Item,2);
- /* NPC Market */
- packet(0x09d8,2,clif->pNPCMarketClosed);
- packet(0x09d6,-1,clif->pNPCMarketPurchase);
-#endif
-
-// 2013-12-23cRagexe - Yommy
-#if PACKETVER >= 20131223
- packet(0x0369,7,clif->pActionRequest,2,6);
- packet(0x083C,10,clif->pUseSkillToId,2,4,6);
- packet(0x0437,5,clif->pWalkToXY,2);
- packet(0x035F,6,clif->pTickSend,2);
- packet(0x0202,5,clif->pChangeDir,2,4);
- packet(0x07E4,6,clif->pTakeItem,2);
- packet(0x0362,6,clif->pDropItem,2,4);
- packet(0x07EC,8,clif->pMoveToKafra,2,4);
- packet(0x0364,8,clif->pMoveFromKafra,2,4);
- packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x096A,6,clif->pGetCharNameRequest,2);
- packet(0x0368,6,clif->pSolveCharName,2);
- packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0835,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0360,6,clif->pReqClickBuyingStore,2);
- packet(0x0817,2,clif->pReqCloseBuyingStore,0);
- packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
- packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4);
- packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0802,26,clif->pPartyInvite2,2);
- packet(0x023B,26,clif->pFriendsListAdd,2);
- packet(0x0361,5,clif->pHomMenu,2,4);
- packet(0x08A4,36,clif->pStoragePassword,0);
- packet(0x0363,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
- packet(0x0436,4,clif->pDull); // CZ_GANGSI_RANK
- packet(0x09df,7);
- packet(0x09cb,17);
-#endif
-
-// 2013-12-30aRagexe - Yommy
-#if PACKETVER >= 20131230
- packet(0x0871,7,clif->pActionRequest,2,6);
- packet(0x02C4,10,clif->pUseSkillToId,2,4,6);
- packet(0x035F,5,clif->pWalkToXY,2);
- packet(0x0438,6,clif->pTickSend,2);
- packet(0x094A,5,clif->pChangeDir,2,4);
- packet(0x092A,6,clif->pTakeItem,2);
- packet(0x0860,6,clif->pDropItem,2,4);
- packet(0x0968,8,clif->pMoveToKafra,2,4);
- packet(0x0895,8,clif->pMoveFromKafra,2,4);
- packet(0x091E,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x096A,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x0926,6,clif->pGetCharNameRequest,2);
- packet(0x0898,6,clif->pSolveCharName,2);
- packet(0x087B,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0369,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x093D,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x087F,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0969,6,clif->pReqClickBuyingStore,2);
- packet(0x094C,2,clif->pReqCloseBuyingStore,0);
- packet(0x0365,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
- packet(0x091F,18,clif->pPartyBookingRegisterReq,2,4);
- packet(0x022D,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x089C,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x08A9,26,clif->pPartyInvite2,2);
- packet(0x0943,26,clif->pFriendsListAdd,2);
- packet(0x0949,5,clif->pHomMenu,2,4);
- packet(0x091D,36,clif->pStoragePassword,0);
- packet(0x087e,4,clif->pDull); // CZ_GANGSI_RANK
- packet(0x093e,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
-#endif
-
-// 2014 Packet Data
-
-// 2014-01-15eRagexe - YomRawr
-#if PACKETVER >= 20140115
-// probably for some shuffle packets used wrong id
- packet(0x0369,7,clif->pActionRequest,2,6);
- packet(0x083C,10,clif->pUseSkillToId,2,4,6);
- packet(0x0437,5,clif->pWalkToXY,2);
- packet(0x035F,6,clif->pTickSend,2);
- packet(0x08A7,5,clif->pChangeDir,2,4);
- packet(0x0940,6,clif->pTakeItem,2);
- packet(0x0361,6,clif->pDropItem,2,4);
- packet(0x088E,8,clif->pMoveToKafra,2,4);
- packet(0x0367,8,clif->pMoveFromKafra,2,4);
- packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x0802,6,clif->pGetCharNameRequest,2);
- packet(0x0368,6,clif->pSolveCharName,2);
- packet(0x0360,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0817,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0815,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x096A,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x088A,6,clif->pReqClickBuyingStore,2);
- packet(0x0965,2,clif->pReqCloseBuyingStore,0);
- packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
- packet(0x096A,18,clif->pPartyBookingRegisterReq,2,4);
- // packet(0x088A,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
- packet(0x0965,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x0966,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x095D,26,clif->pPartyInvite2,2);
- // packet(0x095B,4,clif->pDull); // CZ_GANGSI_RANK
- packet(0x089B,26,clif->pFriendsListAdd,2);
- packet(0x092D,5,clif->pHomMenu,2,4);
- packet(0x0865,36,clif->pStoragePassword,0);
-#endif
-
-// 2014-02-05bRagexe - Themon
-#if PACKETVER >= 20140205
- packet(0x0369,7,clif->pActionRequest,2,6);
- packet(0x083C,10,clif->pUseSkillToId,2,4,6);
- packet(0x0437,5,clif->pWalkToXY,2);
- packet(0x035F,6,clif->pTickSend,2);
- packet(0x0202,5,clif->pChangeDir,2,4);
- packet(0x07E4,6,clif->pTakeItem,2);
- packet(0x0362,6,clif->pDropItem,2,4);
- packet(0x07EC,8,clif->pMoveToKafra,2,4);
- packet(0x0364,8,clif->pMoveFromKafra,2,4);
- packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x096A,6,clif->pGetCharNameRequest,2);
- packet(0x0368,6,clif->pSolveCharName,2);
- packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0835,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0360,6,clif->pReqClickBuyingStore,2);
- packet(0x0817,2,clif->pReqCloseBuyingStore,0);
- packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
- packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4);
- packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x022D,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0802,26,clif->pPartyInvite2,2);
- packet(0x023B,26,clif->pFriendsListAdd,2);
- packet(0x0361,5,clif->pHomMenu,2,4);
- packet(0x0938,36,clif->pStoragePassword,0);
- packet(0x0363,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
- packet(0x0436,4,clif->pDull); // CZ_GANGSI_RANK
- packet(0x09DF,7);
-#endif
-
-// 2014-03-05bRagexe - Themon
-#if PACKETVER >= 20140305
- packet(0x0369,7,clif->pActionRequest,2,6);
- packet(0x083C,10,clif->pUseSkillToId,2,4,6);
- packet(0x0437,5,clif->pWalkToXY,2);
- packet(0x035F,6,clif->pTickSend,2);
- packet(0x0815,5,clif->pChangeDir,2,4);
- packet(0x0202,6,clif->pTakeItem,2);
- packet(0x0362,6,clif->pDropItem,2,4);
- packet(0x07EC,8,clif->pMoveToKafra,2,4);
- packet(0x0364,8,clif->pMoveFromKafra,2,4);
- packet(0x0436,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x096A,6,clif->pGetCharNameRequest,2);
- packet(0x0368,6,clif->pSolveCharName,2);
- packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0835,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0360,6,clif->pReqClickBuyingStore,2);
- packet(0x0817,2,clif->pReqCloseBuyingStore,0);
- packet(0x0361,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
- packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4);
- packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x0438,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0802,26,clif->pPartyInvite2,2);
- packet(0x07E4,26,clif->pFriendsListAdd,2);
- packet(0x0934,5,clif->pHomMenu,2,4);
- packet(0x095e,36,clif->pStoragePassword,0);
- packet(0x0363,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
- packet(0x0878,4,clif->pDull); // CZ_GANGSI_RANK
- packet(0x09DF,7);
-#endif
-
-// 2014-04-02gRagexe - Themon
-#if PACKETVER >= 20140402
- packet(0x0946,7,clif->pActionRequest,2,6);
- packet(0x0868,10,clif->pUseSkillToId,2,4,6);
- packet(0x093F,5,clif->pWalkToXY,2);
- packet(0x0950,6,clif->pTickSend,2);
- packet(0x0360,5,clif->pChangeDir,2,4);
- packet(0x0958,6,clif->pTakeItem,2);
- packet(0x0882,6,clif->pDropItem,2,4);
- packet(0x095C,8,clif->pMoveToKafra,2,4);
- packet(0x085B,8,clif->pMoveFromKafra,2,4);
- packet(0x0364,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x092D,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x088A,6,clif->pGetCharNameRequest,2);
- packet(0x07EC,6,clif->pSolveCharName,2);
- packet(0x0965,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x085D,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0933,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x091F,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x023B,6,clif->pReqClickBuyingStore,2);
- packet(0x0867,2,clif->pReqCloseBuyingStore,0);
- packet(0x0944,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
- packet(0x08AC,18,clif->pPartyBookingRegisterReq,2,4);
- packet(0x0883,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x0920,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0890,26,clif->pPartyInvite2,2);
- packet(0x089A,26,clif->pFriendsListAdd,2);
- packet(0x0896,5,clif->pHomMenu,2,4);
- packet(0x0926,36,clif->pStoragePassword,0);
- packet(0x088c,4,clif->pDull); // CZ_GANGSI_RANK
- packet(0x094c,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
- packet(0x09DF,7);
-#endif
-
-// 2014-04-16aRagexe - Themon
-#if PACKETVER >= 20140416
- packet(0x0369,7,clif->pActionRequest,2,6);
- packet(0x083C,10,clif->pUseSkillToId,2,4,6);
- packet(0x0437,5,clif->pWalkToXY,2);
- packet(0x035F,6,clif->pTickSend,2);
- packet(0x0202,5,clif->pChangeDir,2,4);
- packet(0x07E4,6,clif->pTakeItem,2);
- packet(0x0362,6,clif->pDropItem,2,4);
- packet(0x07EC,8,clif->pMoveToKafra,2,4);
- packet(0x0364,8,clif->pMoveFromKafra,2,4);
- packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x096A,6,clif->pGetCharNameRequest,2);
- packet(0x0368,6,clif->pSolveCharName,2);
- packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0835,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0360,6,clif->pReqClickBuyingStore,2);
- packet(0x0817,2,clif->pReqCloseBuyingStore,0);
- packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
- packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4);
- packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x022D,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0802,26,clif->pPartyInvite2,2);
- packet(0x023B,26,clif->pFriendsListAdd,2);
- packet(0x0361,5,clif->pHomMenu,2,4);
- packet(0x095C,36,clif->pStoragePassword,0);
- packet(0x0363,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
- packet(0x0436,4,clif->pDull); // CZ_GANGSI_RANK
- packet(0x09DF,7);
-#endif
-
-#if PACKETVER >= 20140613
-// no shuffle packets
- packet(0x0a0e,14);
-#endif
-
-// 2014-06-25aRagexeRE
-#if PACKETVER >= 20140625
-// no shuffle packets
- packet(0x0a28,3); // ZC_ACK_OPENSTORE2
-#endif
-
-// 2014-10-16aRagexe - YomRawr
-#if PACKETVER >= 20141016
- packet(0x0369,7,clif->pActionRequest,2,6);
- packet(0x083C,10,clif->pUseSkillToId,2,4,6);
- packet(0x0437,5,clif->pWalkToXY,2);
- packet(0x035F,6,clif->pTickSend,2);
- packet(0x0967,5,clif->pChangeDir,2,4);
- packet(0x07E4,6,clif->pTakeItem,2);
- packet(0x0362,6,clif->pDropItem,2,4);
- packet(0x07EC,8,clif->pMoveToKafra,2,4);
- packet(0x022D,8,clif->pMoveFromKafra,2,4);
- packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x096A,6,clif->pGetCharNameRequest,2);
- packet(0x0368,6,clif->pSolveCharName,2);
- packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0835,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0360,6,clif->pReqClickBuyingStore,2);
- packet(0x0817,2,clif->pReqCloseBuyingStore,0);
- packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
- packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4);
- packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x086E,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0802,26,clif->pPartyInvite2,2);
- packet(0x094B,26,clif->pFriendsListAdd,2);
- packet(0x0364,5,clif->pHomMenu,2,4);
- packet(0x0936,36,clif->pStoragePassword,0);
- packet(0x0363,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
- packet(0x0922,4,clif->pDull); // CZ_GANGSI_RANK
- packet(0x09DF,7);
- packet(0x0a00,269);
- packet(0x09e5,18); // ZC_DELETEITEM_FROM_MCSTORE2
- packet(0x09e6,22); // ZC_UPDATE_ITEM_FROM_BUYING_STORE2
-#endif
-
-/* Roulette System [Yommy/Hercules] */
-#if PACKETVER >= 20141016
- packet(0x0A19,2,clif->pRouletteOpen,0); // HEADER_CZ_REQ_OPEN_ROULETTE
- packet(0x0A1A,23); // HEADER_ZC_ACK_OPEN_ROULETTE
- packet(0x0A1B,2,clif->pRouletteInfo,0); // HEADER_CZ_REQ_ROULETTE_INFO
- packet(0x0A1C,-1); // HEADER_ZC_ACK_ROULEITTE_INFO
- packet(0x0A1D,2,clif->pRouletteClose,0); // HEADER_CZ_REQ_CLOSE_ROULETTE
- packet(0x0A1E,3); // HEADER_ZC_ACK_CLOSE_ROULETTE
- packet(0x0A1F,2,clif->pRouletteGenerate,0); // HEADER_CZ_REQ_GENERATE_ROULETTE
- packet(0x0A20,21); // HEADER_ZC_ACK_GENERATE_ROULETTE
- packet(0x0A21,3,clif->pRouletteRecvItem,2); // HEADER_CZ_RECV_ROULETTE_ITEM
- packet(0x0A22,5); // HEADER_ZC_RECV_ROULETTE_ITEM
-#endif
-
-// 2014-10-22bRagexe - YomRawr
-#if PACKETVER >= 20141022
- packet(0x0369,7,clif->pActionRequest,2,6);
- packet(0x083C,10,clif->pUseSkillToId,2,4,6);
- packet(0x0437,5,clif->pWalkToXY,2);
- packet(0x035F,6,clif->pTickSend,2);
- packet(0x08AD,5,clif->pChangeDir,2,4);
- packet(0x094E,6,clif->pTakeItem,2);
- packet(0x087D,6,clif->pDropItem,2,4);
- packet(0x0878,8,clif->pMoveToKafra,2,4);
- packet(0x08AA,8,clif->pMoveFromKafra,2,4);
- packet(0x023B,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x096A,6,clif->pGetCharNameRequest,2);
- packet(0x0368,6,clif->pSolveCharName,2);
- packet(0x0835,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0940,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0360,6,clif->pReqClickBuyingStore,2);
- packet(0x0817,2,clif->pReqCloseBuyingStore,0);
- packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
- packet(0x0955,18,clif->pPartyBookingRegisterReq,2,4);
- packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x093B,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0896,26,clif->pPartyInvite2,2);
- packet(0x091A,26,clif->pFriendsListAdd,2);
- packet(0x0899,5,clif->pHomMenu,2,4);
- packet(0x0438,36,clif->pStoragePassword,0);
- packet(0x0A01,3,clif->pHotkeyRowShift,2);
- packet(0x08ab,4,clif->pDull); // CZ_GANGSI_RANK
- packet(0x092b,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
-#endif
-
-#if PACKETVER >= 20150226
-// shuffle packets not added
- packet(0x0A09,45);
- packet(0x0A0A,47);
- packet(0x0A0B,47);
- packet(0x0A0C,56);
- packet(0x0A0D,-1);
- packet(0x0A0F,-1);
- packet(0x0A10,-1);
-#endif
-
-// 2015-05-13aRagexe
-#if PACKETVER >= 20150513
- packet(0x0369,7,clif->pActionRequest,2,6);
- packet(0x083C,10,clif->pUseSkillToId,2,4,6);
- packet(0x0437,5,clif->pWalkToXY,2);
- packet(0x035F,6,clif->pTickSend,2);
- packet(0x0924,5,clif->pChangeDir,2,4);
- packet(0x0958,6,clif->pTakeItem,2);
- packet(0x0885,6,clif->pDropItem,2,4);
- packet(0x0879,8,clif->pMoveToKafra,2,4);
- packet(0x0864,8,clif->pMoveFromKafra,2,4);
- packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x096A,6,clif->pGetCharNameRequest,2);
- packet(0x0368,6,clif->pSolveCharName,2);
- packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0835,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0360,6,clif->pReqClickBuyingStore,2);
- packet(0x022D,2,clif->pReqCloseBuyingStore,0);
- packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
- packet(0x0883,18,clif->pPartyBookingRegisterReq,2,4);
- packet(0x02C4,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
- packet(0x0960,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x0363,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x094A,26,clif->pPartyInvite2,2);
- packet(0x0927,4,clif->pDull); // CZ_GANGSI_RANK
- packet(0x08A8,26,clif->pFriendsListAdd,2);
- packet(0x0817,5,clif->pHomMenu,2,4);
- packet(0x0923,36,clif->pStoragePassword,0);
- packet(0x09E8,11,clif->pDull); // CZ_OPEN_MAILBOX
- packet(0x0A2E,6,clif->pDull); // TITLE
- packet(0x0A02,4); // ZC_DRESSROOM_OPEN
- packet(0x0A35,4,clif->pOneClick_ItemIdentify,2);
- packet(0x0a27,8); // ZC_RECOVERY2
- packet(0x09f7,75); // ZC_PROPERTY_HOMUN_2
-#endif
-
-#if PACKETVER >= 20150805 // RagexeRE
-// shuffle packets not added
- packet(0x097f,-1); // ZC_SELECTCART
- packet(0x0980,7,clif->pSelectCart); // CZ_SELECTCART
-#endif
-
-// 2015-10-01bRagexeRE
-#if PACKETVER >= 20151001
- packet(0x0369,7,clif->pActionRequest,2,6);
- packet(0x083C,10,clif->pUseSkillToId,2,4,6);
- packet(0x0437,5,clif->pWalkToXY,2);
- packet(0x035F,6,clif->pTickSend,2);
- packet(0x0202,5,clif->pChangeDir,2,4);
- packet(0x07E4,6,clif->pTakeItem,2);
- packet(0x0362,6,clif->pDropItem,2,4);
- packet(0x07EC,8,clif->pMoveToKafra,2,4);
- packet(0x0364,8,clif->pMoveFromKafra,2,4);
- packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x096A,6,clif->pGetCharNameRequest,2);
- packet(0x0368,6,clif->pSolveCharName,2);
- packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0835,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0360,6,clif->pReqClickBuyingStore,2);
- packet(0x0817,2,clif->pReqCloseBuyingStore,0);
- packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
- packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4);
- packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x022D,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0802,26,clif->pPartyInvite2,2);
- packet(0x023B,26,clif->pFriendsListAdd,2);
- packet(0x0361,5,clif->pHomMenu,2,4);
- packet(0x0860,36,clif->pStoragePassword,0);
- packet(0x0363,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
- packet(0x0436,4,clif->pDull); // CZ_GANGSI_RANK
-#endif
-
-// 2015-10-29aRagexe
-#if PACKETVER >= 20151029
- packet(0x0369,7,clif->pActionRequest,2,6);
- packet(0x083C,10,clif->pUseSkillToId,2,4,6);
- packet(0x0437,5,clif->pWalkToXY,2);
- packet(0x035F,6,clif->pTickSend,2);
- packet(0x0202,5,clif->pChangeDir,2,4);
- packet(0x07E4,6,clif->pTakeItem,2);
- packet(0x0362,6,clif->pDropItem,2,4);
- packet(0x07EC,8,clif->pMoveToKafra,2,4);
- packet(0x0364,8,clif->pMoveFromKafra,2,4);
- packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x096A,6,clif->pGetCharNameRequest,2);
- packet(0x0368,6,clif->pSolveCharName,2);
- packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0835,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0360,6,clif->pReqClickBuyingStore,2);
- packet(0x0817,2,clif->pReqCloseBuyingStore,0);
- packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
- packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4);
- packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x022D,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x0802,26,clif->pPartyInvite2,2);
- packet(0x023B,26,clif->pFriendsListAdd,2);
- packet(0x0361,5,clif->pHomMenu,2,4);
- packet(0x0860,36,clif->pStoragePassword,0);
- packet(0x0363,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
- packet(0x0436,4,clif->pDull); // CZ_GANGSI_RANK
- packet(0x0a39,36);
-#endif
-
-// 2015-11-04aRagexe
-#if PACKETVER >= 20151104
- packet(0x0369,7,clif->pActionRequest,2,6);
- packet(0x083C,10,clif->pUseSkillToId,2,4,6);
- packet(0x0363,5,clif->pWalkToXY,2);
- packet(0x0886,6,clif->pTickSend,2);
- packet(0x0928,5,clif->pChangeDir,2,4);
- packet(0x0964,6,clif->pTakeItem,2);
- packet(0x0437,6,clif->pDropItem,2,4);
- packet(0x088B,8,clif->pMoveToKafra,2,4);
- packet(0x0364,8,clif->pMoveFromKafra,2,4);
- packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x0887,6,clif->pGetCharNameRequest,2);
- packet(0x0368,6,clif->pSolveCharName,2);
- packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0835,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0815,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0436,6,clif->pReqClickBuyingStore,2);
- packet(0x0817,2,clif->pReqCloseBuyingStore,0);
- packet(0x023B,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
- packet(0x0811,18,clif->pPartyBookingRegisterReq,2,4,6);
- packet(0x093A,-1,clif->pItemListWindowSelected,2,4,8,12);
- packet(0x0360,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x08A5,26,clif->pPartyInvite2,2);
- packet(0x07EC,26,clif->pFriendsListAdd,2);
- packet(0x088D,5,clif->pHomMenu,2,4);
- packet(0x0940,36,clif->pStoragePassword,2,4,20);
- packet(0x08a3,4,clif->pDull); // CZ_GANGSI_RANK
- packet(0x0939,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
- packet(0x0a39,36);
-#endif
-
-// 2015-12-16aRagexe
-#if PACKETVER >= 20151216
- packet(0x089D,7,clif->pActionRequest,2,6);
- packet(0x0968,10,clif->pUseSkillToId,2,4,6);
- packet(0x08A2,5,clif->pWalkToXY,2);
- packet(0x085B,6,clif->pTickSend,2);
- packet(0x022D,5,clif->pChangeDir,2,4);
- packet(0x08A9,6,clif->pTakeItem,2);
- packet(0x0966,6,clif->pDropItem,2,4);
- packet(0x08AC,8,clif->pMoveToKafra,2,4);
- packet(0x0864,8,clif->pMoveFromKafra,2,4);
- packet(0x0865,10,clif->pUseSkillToPos,2,4,6,8);
- packet(0x0874,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
- packet(0x088B,6,clif->pGetCharNameRequest,2);
- packet(0x089E,6,clif->pSolveCharName,2);
- packet(0x0436,12,clif->pSearchStoreInfoListItemClick,2,6,10);
- packet(0x0960,2,clif->pSearchStoreInfoNextPage,0);
- packet(0x0944,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
- packet(0x0954,-1,clif->pReqTradeBuyingStore,2,4,8,12);
- packet(0x0361,6,clif->pReqClickBuyingStore,2);
- packet(0x083C,2,clif->pReqCloseBuyingStore,0);
- packet(0x0870,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
- packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4);
- packet(0x0949,-1,clif->pItemListWindowSelected,2,4,8);
- packet(0x0947,19,clif->pWantToConnection,2,6,10,14,18);
- packet(0x086E,26,clif->pPartyInvite2,2);
- packet(0x091D,26,clif->pFriendsListAdd,2);
- packet(0x0362,5,clif->pHomMenu,2,4);
- packet(0x0885,36,clif->pStoragePassword,0);
- packet(0x0364,4,clif->pDull); // CZ_GANGSI_RANK
- packet(0x086a,8,clif->pDull); // CZ_JOIN_BATTLE_FIELD
-#endif
-
-/* PacketKeys: http://herc.ws/board/topic/1105-hercules-wpe-free-june-14th-patch/ */
-#if PACKETVER >= 20110817
- packetKeys(0x053D5CED,0x3DED6DED,0x6DED6DED); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20110824
- packetKeys(0x35C91401,0x262A5556,0x28FA03AA); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20110831
- packetKeys(0x3AD67ED0,0x44703C69,0x6F876809); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20110906
- packetKeys(0x3AD67ED0,0x44703C69,0x6F876809); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20111005
- packetKeys(0x291E6762,0x77CD391A,0x60AC2F16); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20111012
- packetKeys(0x7F3C2D29,0x59B01DE6,0x1DBB44CA); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20111021
- packetKeys(0x357D55DC,0x5A8D759F,0x245C30F5); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20111025
- packetKeys(0x50AE1A63,0x3CE579B5,0x29C10406); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20111102
- packetKeys(0x5324329D,0x5D545D52,0x06137269); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20111109
- packetKeys(0x0B642BDA,0x6ECB1D1C,0x61C7454B); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20111122
- packetKeys(0x3B550F07,0x1F666C7C,0x60304EF5); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20111207
- packetKeys(0x2A610886,0x3E09165E,0x57C11888); /* Thanks to Shakto */
+ packet(0x08A4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0368,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0927,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0281,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0958,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0885,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0815,clif->pDull); // CZ_GANGSI_RANK
+ packet(0x0896,clif->pDull); // CZ_JOIN_BATTLE_FIELD
#endif
-#if PACKETVER >= 20111214
- packetKeys(0x5151306B,0x7AE32886,0x53060628); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20111220
- packetKeys(0x05D53871,0x7D0027B4,0x29975333); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20111228
- packetKeys(0x0FF87E93,0x6CFF7860,0x3A3D1DEC); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20120104
- packetKeys(0x262034A1,0x674542A5,0x73A50BA5); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20120111
- packetKeys(0x2B412AFC,0x4FF94487,0x6705339D); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20120120
- packetKeys(0x504345D0,0x3D427B1B,0x794C2DCC); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20120202
- packetKeys(0x2CFC0A71,0x2BA91D8D,0x087E39E0); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20120207
- packetKeys(0x1D373F5D,0x5ACD604D,0x1C4D7C4D); /* Thanks to Shakto */
-#endif
-
-#if PACKETVER >= 20120214
- packetKeys(0x7A255EFA,0x30977276,0x2D4A0448); /* Thanks to Shakto */
+// 2013-08-14aRagexe
+#if PACKETVER >= 20130814
+// new packets
+ packet(0x09ce,clif->pGM_Monster_Item,2); // CZ_ITEM_CREATE_EX
+ packet(0x09d0,clif->pDull/*,XXX*/); // CZ_NPROTECTGAMEGUARDCSAUTH
+// changed packet sizes
#endif
-#if PACKETVER >= 20120229
- packetKeys(0x520B4C64,0x2800407D,0x47651458); /* Thanks to Shakto */
+// 2013-08-28bRagexe
+#if PACKETVER >= 20130828
+// new packets
+// changed packet sizes
+ packet(0x09ba,clif->pDull/*,XXX*/); // CZ_REQ_OPEN_GUILD_STORAGE
+ packet(0x09be,clif->pDull/*,XXX*/); // CZ_REQ_CLOSE_GUILD_STORAGE
#endif
-#if PACKETVER >= 20120307
- packetKeys(0x382A6DEF,0x5CBE7202,0x61F46637); /* Thanks to Shakto */
+// 2013-09-11aRagexe
+#if PACKETVER >= 20130911
+// new packets
+ packet(0x09d4,clif->pNPCShopClosed); // CZ_NPC_TRADE_QUIT
+ packet(0x09d6,clif->pNPCMarketPurchase); // CZ_NPC_MARKET_PURCHASE
+ packet(0x09d8,clif->pNPCMarketClosed); // CZ_NPC_MARKET_CLOSE
+ packet(0x09d9,clif->pDull/*,XXX*/); // CZ_REQ_GUILDSTORAGE_LOG
+// changed packet sizes
#endif
-#if PACKETVER >= 20120314
- packetKeys(0x689C1729,0x11812639,0x60F82967); /* Thanks to Shakto */
+// 2013-10-02aRagexe
+#if PACKETVER >= 20131002
+// new packets
+// changed packet sizes
+ packet(0x09d9,clif->pDull/*,XXX*/); // CZ_REQ_GUILDSTORAGE_LOG
#endif
-#if PACKETVER >= 20120321
- packetKeys(0x21F9683F,0x710C5CA5,0x1FD910E9); /* Thanks to Shakto */
+// 2013-10-16aRagexe
+#if PACKETVER >= 20131016
+// new packets
+// changed packet sizes
+ packet(0x09d9,clif->pDull/*,XXX*/); // CZ_REQ_GUILDSTORAGE_LOG
#endif
-#if PACKETVER >= 20120328
- packetKeys(0x75B8553B,0x37F20B12,0x385C2B40); /* Thanks to Shakto */
+// 2013-10-23aRagexe
+#if PACKETVER >= 20131023
+// new packets
+// changed packet sizes
+ packet(0x09d9,clif->pDull/*,XXX*/); // CZ_REQ_GUILDSTORAGE_LOG
#endif
-#if PACKETVER >= 20120404
- packetKeys(0x0036310C,0x2DCD0BED,0x1EE62A78); /* Thanks to Shakto */
+// 2013-11-06aRagexe
+#if PACKETVER >= 20131106
+// new packets
+ packet(0x09e1,clif->pDull/*,XXX*/); // CZ_MOVE_ITEM_FROM_BODY_TO_GUILDSTORAGE
+ packet(0x09e2,clif->pDull/*,XXX*/); // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_BODY
+ packet(0x09e3,clif->pDull/*,XXX*/); // CZ_MOVE_ITEM_FROM_CART_TO_GUILDSTORAGE
+ packet(0x09e4,clif->pDull/*,XXX*/); // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_CART
+// changed packet sizes
#endif
-#if PACKETVER >= 20120410
- packetKeys(0x01581359,0x452D6FFA,0x6AFB6E2E); /* Thanks to Shakto */
+// 2013-12-11dRagexe
+#if PACKETVER >= 20131211
+// new packets
+ packet(0x09e8,clif->pDull/*,XXX*/); // CZ_OPEN_RODEXBOX
+ packet(0x09e9,clif->pRodexCloseMailbox); // CZ_CLOSE_RODEXBOX
+ packet(0x09ee,clif->pDull/*,XXX*/); // CZ_REQ_NEXT_RODEX
+// changed packet sizes
#endif
-#if PACKETVER >= 20120418
- packetKeys(0x01540E48,0x13041224,0x31247924); /* Thanks to Shakto */
+// 2013-12-18bRagexe - Yommy
+#if PACKETVER >= 20131218
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x083C,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x035F,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0947,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x07E4,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x07EC,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x096A,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x022D,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x092F,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x08AB,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0811,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x085C,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0363,clif->pDull); // CZ_JOIN_BATTLE_FIELD
+ packet(0x087b,clif->pDull); // CZ_GANGSI_RANK
+#endif
+
+// 2013-12-18bRagexe
+#if PACKETVER >= 20131218
+// new packets
+ packet(0x09ea,clif->pDull/*,XXX*/); // CZ_REQ_READ_RODEX
+ packet(0x09ef,clif->pRodexRefreshMaillist); // CZ_REQ_REFRESH_RODEX
+ packet(0x09f5,clif->pRodexDeleteMail); // CZ_REQ_DELETE_RODEX
+// changed packet sizes
+ packet(0x09e8,clif->pDull/*,XXX*/); // CZ_OPEN_RODEXBOX
+ packet(0x09ee,clif->pRodexNextMaillist); // CZ_REQ_NEXT_RODEX
#endif
-#if PACKETVER >= 20120424
- packetKeys(0x411D1DBB,0x4CBA4848,0x1A432FC4); /* Thanks to Shakto */
+// 2013-12-23cRagexe - Yommy
+#if PACKETVER >= 20131223
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x083C,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x035F,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x07E4,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x07EC,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x096A,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x023B,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x08A4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0363,clif->pDull); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0436,clif->pDull); // CZ_GANGSI_RANK
+#endif
+
+// 2013-12-23bRagexe
+#if PACKETVER >= 20131223
+// new packets
+// changed packet sizes
+ packet(0x09ea,clif->pRodexReadMail); // CZ_REQ_READ_RODEX
#endif
-#if PACKETVER >= 20120509
- packetKeys(0x16CF3301,0x1F472B9B,0x0B4A3CD2); /* Thanks to Shakto */
+// 2013-12-30aRagexe - Yommy
+#if PACKETVER >= 20131230
+ packet(0x0871,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x02C4,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x035F,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x094A,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x092A,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0860,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0968,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0895,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x091E,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x096A,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0926,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0898,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x087B,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0369,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x093D,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x087F,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0969,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x094C,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0365,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x091F,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x022D,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x089C,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x08A9,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0943,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0949,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x091D,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x087e,clif->pDull); // CZ_GANGSI_RANK
+ packet(0x093e,clif->pDull); // CZ_JOIN_BATTLE_FIELD
+#endif
+
+// 2013-12-30aRagexe
+#if PACKETVER >= 20131230
+// new packets
+ packet(0x09ec,clif->pRodexSendMail); // CZ_REQ_SEND_RODEX
+// changed packet sizes
#endif
-#if PACKETVER >= 20120515
- packetKeys(0x4A715EF9,0x79103E4F,0x405C1238); /* Thanks to Shakto */
-#endif
+// 2014 Packet Data
-#if PACKETVER >= 20120525
- packetKeys(0x70EB4CCB,0x0487713C,0x398D4B08); /* Thanks to Shakto */
+// 2014-01-15cRagexeRE
+#if PACKETVER >= 20140115
+// new packets
+ packet(0x09f1,clif->pDull/*,XXX*/); // CZ_REQ_ZENY_FROM_RODEX
+ packet(0x09f3,clif->pDull/*,XXX*/); // CZ_REQ_ITEM_FROM_RODEX
+// changed packet sizes
#endif
-#if PACKETVER >= 20120605
- packetKeys(0x68CA3080,0x31B74BDD,0x505208F1); /* Thanks to Shakto */
+// 2014-01-22aRagexeRE
+#if PACKETVER >= 20140122
+// new packets
+ packet(0x09fb,clif->pPetEvolution); // CZ_PET_EVOLUTION
+// changed packet sizes
#endif
-#if PACKETVER >= 20120612
- packetKeys(0x32E45D64,0x35643564,0x35643564); /* Thanks to Shakto */
+// 2014-01-29bRagexeRE
+#if PACKETVER >= 20140129
+// new packets
+ packet(0x0a01,clif->pHotkeyRowShift,2); // CZ_SHORTCUTKEYBAR_ROTATE
#endif
-#if PACKETVER >= 20120618
- packetKeys(0x261F261F,0x261F261F,0x261F261F); /* Thanks to Shakto */
+// 2014-02-12aRagexeRE
+#if PACKETVER >= 20140212
+// new packets
+// changed packet sizes
+ packet(0x09e8,clif->pRodexOpenMailbox); // CZ_OPEN_RODEXBOX
#endif
-#if PACKETVER >= 20120702
- packetKeys(0x25733B31,0x53486CFD,0x398649BD); /* Thanks to Shakto */
+// 2014-02-26aRagexeRE
+#if PACKETVER >= 20140226
+// new packets
+ packet(0x0a03,clif->pDull/*,XXX*/); // CZ_REQ_CANCEL_WRITE_RODEX
+ packet(0x0a04,clif->pDull/*,XXX*/); // CZ_REQ_ADD_ITEM_RODEX
+ packet(0x0a06,clif->pDull/*,XXX*/); // CZ_REQ_REMOVE_RODEX_ITEM
+// changed packet sizes
#endif
-#if PACKETVER >= 20120716
- packetKeys(0x76052205,0x22052205,0x22052205); /* Thanks to Shakto */
+// 2014-03-05aRagexeRE
+#if PACKETVER >= 20140305
+// new packets
+ packet(0x0a08,clif->pDull/*,XXX*/); // CZ_REQ_OPEN_WRITE_RODEX
+// changed packet sizes
+ packet(0x09f3,clif->pDull/*,XXX*/); // CZ_REQ_ITEM_FROM_RODEX
#endif
-#if PACKETVER >= 20130320
- packetKeys(0x3F094C49,0x55F86C1E,0x58AA359A); /* Thanks to Shakto */
+// 2014-03-26cRagexeRE
+#if PACKETVER >= 20140326
+// changed packet sizes
+ packet(0x09f1,clif->pRodexRequestZeny); // CZ_REQ_ZENY_FROM_RODEX
+ packet(0x09f3,clif->pRodexRequestItems); // CZ_REQ_ITEM_FROM_RODEX
+ packet(0x0a03,clif->pRodexCancelWriteMail); // CZ_REQ_CANCEL_WRITE_RODEX
+ packet(0x0a08,clif->pDull/*,XXX*/); // CZ_REQ_OPEN_WRITE_RODEX
#endif
-#if PACKETVER >= 20130514
- packetKeys(0x75794A38,0x58A96BC1,0x296E6FB8); /* Thanks to Shakto */
+// 2014-04-16aRagexeRE
+#if PACKETVER >= 20140416
+// new packets
+ packet(0x0a04,clif->pRodexAddItem); // CZ_REQ_ADD_ITEM_RODEX
+ packet(0x0a13,clif->pRodexCheckName); // CZ_CHECK_RECEIVE_CHARACTER_NAME
+// changed packet sizes
+ packet(0x0a06,clif->pRodexRemoveItem); // CZ_REQ_REMOVE_RODEX_ITEM
+ packet(0x0a08,clif->pRodexOpenWriteMail); // CZ_REQ_OPEN_WRITE_RODEX
#endif
-#if PACKETVER >= 20130522
- packetKeys(0x6948050B,0x06511D9D,0x725D4DF1); /* Thanks to Shakto */
+// 2014-04-23aRagexeRE
+#if PACKETVER >= 20140423
+// new packets
+// changed packet sizes
+ packet(0x0a13,clif->pRodexCheckName); // CZ_CHECK_RECEIVE_CHARACTER_NAME
#endif
-#if PACKETVER >= 20130529
- packetKeys(0x023A6C87,0x14BF1F1E,0x5CC70CC9); /* Thanks to Shakto */
+// 2014-04-30aRagexeRE
+#if PACKETVER >= 20140430
+// new packets
+ packet(0x0a16,clif->pDull/*,XXX*/); // CZ_DYNAMICNPC_CREATE_REQUEST
#endif
-#if PACKETVER >= 20130605
- packetKeys(0x646E08D9,0x5F153AB5,0x61B509B5); /* Thanks to Shakto */
+/* Roulette System [Yommy/Hercules] */
+// 2014-06-05aRagexe
+#if PACKETVER >= 20140605
+// new packets
+ packet(0x0a19,clif->pDull/*,XXX*/); // CZ_REQ_OPEN_ROULETTE
+ packet(0x0A1B,clif->pRouletteInfo,0); // HEADER_CZ_REQ_ROULETTE_INFO
+ packet(0x0a1d,clif->pDull/*,XXX*/); // CZ_REQ_CLOSE_ROULETTE
#endif
-#if PACKETVER >= 20130612
- packetKeys(0x6D166F66,0x3C000FCF,0x295B0FCB); /* Thanks to Shakto */
+/* Roulette System [Yommy/Hercules] */
+// 2014-06-11bRagexe / RE. moved by 4144
+#if PACKETVER >= 20140611
+// new packets
+ packet(0x0a1f,clif->pRouletteGenerate,0); // CZ_REQ_GENERATE_ROULETTE
+ packet(0x0a21,clif->pDull/*,XXX*/); // CZ_RECV_ROULETTE_ITEM
+ packet(0x0a25,clif->pAchievementGetReward,2); // CZ_REQ_ACH_REWARD
+// changed packet sizes
+ packet(0x0a19,clif->pRouletteOpen,0); // CZ_REQ_OPEN_ROULETTE
+ packet(0x0a1d,clif->pRouletteClose,0); // CZ_REQ_CLOSE_ROULETTE
#endif
-#if PACKETVER >= 20130618
- packetKeys(0x434115DE,0x34A10FE9,0x6791428E); /* Thanks to Shakto */
+// 2014-06-18cRagexeRE
+#if PACKETVER >= 20140618
+// changed packet sizes
+ packet(0x0a21,clif->pRouletteRecvItem,2); // CZ_RECV_ROULETTE_ITEM
#endif
-#if PACKETVER >= 20130626
- packetKeys(0x38F453EF,0x6A040FD8,0X65BD6668); /* Thanks to Shakto */
+// 2014-07-02aRagexeRE
+#if PACKETVER >= 20140702
+// new packets
+ packet(0x0a2a,clif->pDull/*,XXX*/); // CZ_ACK_AU_BOT
#endif
-#if PACKETVER >= 20130703
- packetKeys(0x4FF90E23,0x0F1432F2,0x4CFA1EDA); /* Thanks to Shakto */
+// 2014-09-03aRagexeRE
+#if PACKETVER >= 20140903
+// new packets
+ packet(0x0a2e,clif->pChangeTitle); // CZ_REQ_CHANGE_TITLE
+// changed packet sizes
#endif
-#if PACKETVER >= 20130807
- packetKeys(0x7E241DE0,0x5E805580,0x3D807D80); /* Thanks to Shakto */
+// 2014-11-19bRagexeRE
+#if PACKETVER >= 20141119
+// new packets
+ packet(0x0A35,clif->pOneClick_ItemIdentify,2);
+// changed packet sizes
#endif
-#if PACKETVER >= 20130814
- packetKeys(0x23A23148,0x0C41420E,0x53785AD7); /* Themon */
+// 2015-11-04aRagexeRE
+#if PACKETVER >= 20151104
+// new packets
+ packet(0x0a46,clif->pReqStyleChange);
#endif
-#if PACKETVER >= 20131218
- packetKeys(0x6A596301,0x76866D0E,0x32294A45);
+// 2016-03-23aRagexeRE
+#if PACKETVER >= 20160323
+// new packets
+ packet(0x0a68,clif->pOpenUIRequest);
+// changed packet sizes
#endif
-#if PACKETVER >= 20131223
- packetKeys(0x631C511C,0x111C111C,0x111C111C);
+// 2016-03-30aRagexeRE
+#if PACKETVER >= 20160330
+// new packets
+ packet(0x0a6e,clif->pRodexSendMail); // CZ_RODEX_SEND_MAIL
+// changed packet sizes
#endif
-#if PACKETVER >= 20131230
- packetKeys(0x611B7097,0x01F957A1,0x768A0FCB);
+// all 2016-05-25
+#if PACKETVER >= 20160525
+ packet(0x0a77,clif->pCameraInfo); // CZ_CAMERA_INFO
#endif
-// 2014 Packet Keys
-
-#if PACKETVER >= 20140115
- packetKeys(0x63224335,0x0F3A1F27,0x6D217B24); /* Thanks to Yommy */
+// 2017-02-28aRagexeRE
+#if PACKETVER >= 20170228
+// new packets
+ packet(0x0ac0,clif->pRodexOpenMailbox); // CZ_OPEN_RODEXBOX
+ packet(0x0ac1,clif->pRodexRefreshMaillist); // CZ_REQ_REFRESH_RODEX
+// changed packet sizes
#endif
-#if PACKETVER >= 20140205
- packetKeys(0x63DC7BDC,0x7BDC7BDC,0x7BDC7BDC); /* Themon */
+// 2017-08-30aRagexeRE
+#if PACKETVER >= 20170830
+// new packets
+// changed packet sizes
+ packet(0x0a49,clif->pPrivateAirshipRequest);
#endif
-#if PACKETVER >= 20140305
- packetKeys(0x116763F2,0x41117DAC,0x7FD13C45); /* Themon */
+#ifdef PACKETVER_ZERO
+#if PACKETVER >= 20171214
+// new packets
+ packet(0x0ae8,clif->pChangeDress);
+// changed packet sizes
#endif
+#endif // PACKETVER_ZERO
-#if PACKETVER >= 20140402
- packetKeys(0x15D3271C,0x004D725B,0x111A3A37); /* Themon */
+// 2017-12-20aRagexe
+#if PACKETVER >= 20171220
+// new packets
+ packet(0x0ae8,clif->pChangeDress);
+// changed packet sizes
#endif
-#if PACKETVER >= 20140416
- packetKeys(0x04810281,0x42814281,0x42814281); /* Themon */
+#if PACKETVER >= 20180117
+// new packets
+ packet(0x0aef,clif->pAttendanceRewardRequest);
+// changed packet sizes
#endif
-#if PACKETVER >= 20141016
- packetKeys(0x2DFF467C,0x444B37EE,0x2C1B634F); /* YomRawr */
+#ifdef PACKETVER_ZERO
+// 2018-01-31dRagexe_zero
+#if PACKETVER >= 20180131
+// new packets
+ packet(0x0af4,clif->pUseSkillToPos,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND
+// changed packet sizes
#endif
+#endif // PACKETVER_ZERO
-#if PACKETVER >= 20141022
- packetKeys(0x290551EA,0x2B952C75,0x2D67669B); /* YomRawr */
+#ifndef PACKETVER_ZERO
+// 2018-02-07bRagexeRE, 2018-02-07bRagexe
+#if PACKETVER >= 20180207
+// new packets
+ packet(0x0af4,clif->pUseSkillToPos,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND
+// changed packet sizes
#endif
+#endif // PACKETVER_ZERO
-// 2015 Packet Keys
-
-#if PACKETVER >= 20150513
- packetKeys(0x62C86D09,0x75944F17,0x112C133D); /* Dastgir */
+#ifndef PACKETVER_ZERO
+// 2018-05-16cRagexe, 2018-05-16cRagexeRE
+#if PACKETVER >= 20180516
+// new packets
+ packet(0x0afc,clif->pReqStyleChange2);
+// changed packet sizes
#endif
+#endif // PACKETVER_ZERO
-#if PACKETVER >= 20151001
- packetKeys(0x5CFF4561,0x32514AD1,0x06D126D1); /* Dastgir */
+#ifdef PACKETVER_ZERO
+// 2018-05-23aRagexe_zero
+#if PACKETVER >= 20180523
+// new packets
+ packet(0x0afc,clif->pReqStyleChange2);
+// changed packet sizes
#endif
+#endif // PACKETVER_ZERO
-#if PACKETVER >= 20151029
- packetKeys(0x45B945B9,0x45B945B9,0x45B945B9); /* Dastgir */
+// 2018-07-04aRagexeRE
+#if PACKETVER_RE_NUM >= 20180704
+// new packets
+// changed packet sizes
+ packet(0x018e,clif->pProduceMix); // CZ_REQMAKINGITEM
+ packet(0x01ae,clif->pSelectArrow,2); // CZ_REQ_MAKINGARROW
+ packet(0x01fd,clif->pRepairItem); // CZ_REQ_ITEMREPAIR
+ packet(0x025b,clif->pCooking); // CZ_REQ_MAKINGITEM
+ packet(0x0445,clif->pDull/*,XXX*/); // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+ packet(0x09ae,clif->pDull/*,XXX*/); // CZ_REQ_APPLY_BARGAIN_SALE_ITEM
+ packet(0x09b0,clif->pDull/*,XXX*/); // CZ_REQ_REMOVE_BARGAIN_SALE_ITEM
+ packet(0x09c3,clif->pDull/*,XXX*/); // CZ_REQ_COUNT_BARGAIN_SALE_ITEM
+ packet(0x0a49,clif->pPrivateAirshipRequest); // CZ_PRIVATE_AIRSHIP_REQUEST
+#endif
+
+// 2018-11-14aRagexe_zero
+#if PACKETVER_ZERO_NUM >= 20181114
+// new packets
+// changed packet sizes
+ packet(0x018e,clif->pProduceMix); // CZ_REQMAKINGITEM
+ packet(0x01ae,clif->pSelectArrow,2); // CZ_REQ_MAKINGARROW
+ packet(0x01fd,clif->pRepairItem); // CZ_REQ_ITEMREPAIR
+ packet(0x025b,clif->pCooking); // CZ_REQ_MAKINGITEM
+ packet(0x0445,clif->pDull/*,XXX*/); // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+ packet(0x09ae,clif->pDull/*,XXX*/); // CZ_REQ_APPLY_BARGAIN_SALE_ITEM
+ packet(0x09b0,clif->pDull/*,XXX*/); // CZ_REQ_REMOVE_BARGAIN_SALE_ITEM
+ packet(0x09c3,clif->pDull/*,XXX*/); // CZ_REQ_COUNT_BARGAIN_SALE_ITEM
+ packet(0x0a49,clif->pPrivateAirshipRequest); // CZ_PRIVATE_AIRSHIP_REQUEST
+#endif
+
+// 2018-11-21bRagexe
+#if PACKETVER_ZERO_NUM >= 20181121
+// new packets
+// changed packet sizes
+ packet(0x018e,clif->pProduceMix); // CZ_REQMAKINGITEM
+ packet(0x01ae,clif->pSelectArrow,2); // CZ_REQ_MAKINGARROW
+ packet(0x01fd,clif->pRepairItem); // CZ_REQ_ITEMREPAIR
+ packet(0x025b,clif->pCooking); // CZ_REQ_MAKINGITEM
+ packet(0x0445,clif->pDull/*,XXX*/); // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+ packet(0x09ae,clif->pDull/*,XXX*/); // CZ_REQ_APPLY_BARGAIN_SALE_ITEM
+ packet(0x09b0,clif->pDull/*,XXX*/); // CZ_REQ_REMOVE_BARGAIN_SALE_ITEM
+ packet(0x09c3,clif->pDull/*,XXX*/); // CZ_REQ_COUNT_BARGAIN_SALE_ITEM
+ packet(0x0a49,clif->pPrivateAirshipRequest); // CZ_PRIVATE_AIRSHIP_REQUEST
#endif
-#if PACKETVER >= 20151104
- packetKeys(0x4C17382A,0x7ED174C9,0x29961E4F); /* ossi0110 */
+#if PACKETVER_MAIN_NUM >= 20181002 || PACKETVER_RE_NUM >= 20181002 || PACKETVER_ZERO_NUM >= 20181010
+ packet(0x0b10,clif->pStartUseSkillToId);
+ packet(0x0b11,clif->pStopUseSkillToId);
#endif
-#if PACKETVER >= 20151216
- packetKeys(0x25DD643D,0x61AC39DE,0x77A8206D); /* Dastgir */
+#if PACKETVER_MAIN_NUM >= 20181031 || PACKETVER_RE_NUM >= 20181031 || PACKETVER_ZERO_NUM >= 20181114
+ packet(0x0b14,clif->pInventoryExpansion);
+ packet(0x0b16,clif->pInventoryExpansionConfirmed);
+ packet(0x0b19,clif->pInventoryExpansionRejected);
#endif
-#if defined(OBFUSCATIONKEY1) && defined(OBFUSCATIONKEY2) && defined(OBFUSCATIONKEY3)
- packetKeys(OBFUSCATIONKEY1,OBFUSCATIONKEY2,OBFUSCATIONKEY3);
+#if PACKETVER_ZERO_NUM >= 20181226
+ packet(0x0b0f,clif->pNPCBarterPurchase);
+ packet(0x0b12,clif->pNPCBarterClosed);
#endif
#endif /* MAP_PACKETS_H */
diff --git a/src/map/packets_keys_main.h b/src/map/packets_keys_main.h
new file mode 100644
index 000000000..1bff5a738
--- /dev/null
+++ b/src/map/packets_keys_main.h
@@ -0,0 +1,2078 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2013-2019 Hercules Dev Team
+ * Copyright (C) 2018-2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef MAP_PACKETS_MAIN_KEYS_H
+#define MAP_PACKETS_MAIN_KEYS_H
+
+#ifndef packetKeys
+ #define packetKeys(a,b,c)
+#endif
+
+/* PacketKeys: http://herc.ws/board/topic/1105-hercules-wpe-free-june-14th-patch/ */
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// 2010-11-23aRagexe, 2010-11-24aRagexe, 2010-11-24dRagexe, 2010-11-24eRagexe, 2010-11-24fRagexe, 2010-11-26aRagexe
+#if PACKETVER == 20101123 || \
+ PACKETVER == 20101124 || \
+ PACKETVER == 20101126
+ packetKeys(0x49357d72,0x22c370a1,0x5f836591);
+#endif
+
+// 2010-11-23aRagexeRE, 2010-11-24aRagexeRE, 2010-11-24bRagexeRE, 2010-11-25aRagexeRE, 2010-11-26aRagexeRE, 2010-11-30aRagexeRE, 2010-12-07aRagexeRE, 2010-12-14aRagexeRE, 2010-12-21aRagexeRE, 2010-12-23aRagexeRE, 2010-12-28aRagexeRE, 2011-01-04aRagexeRE, 2011-01-05aRagexeRE, 2011-01-11aRagexeRE, 2011-01-18aRagexeRE, 2011-01-25aRagexeRE, 2011-01-26aRagexeRE, 2011-01-26bRagexeRE, 2011-01-31aRagexeRE, 2011-01-31bRagexeRE, 2011-01-31cRagexeRE, 2011-02-08aRagexeRE, 2011-02-15aRagexeRE, 2011-02-22aRagexeRE, 2011-02-23aRagexeRE, 2011-02-23bRagexeRE, 2011-02-24aRagexeRE, 2011-02-25aRagexeRE, 2011-02-28aRagexeRE, 2011-03-08aRagexeRE, 2011-03-09aRagexeRE, 2011-03-09bRagexeRE, 2011-03-09cRagexeRE, 2011-03-09dRagexeRE, 2011-03-15aRagexeRE, 2011-03-22aRagexeRE, 2011-03-29aRagexeRE, 2011-03-30aRagexeRE, 2011-03-30cRagexeRE, 2011-04-05aRagexeRE, 2011-04-12aRagexeRE, 2011-04-19aRagexeRE, 2011-04-20aRagexeRE, 2011-04-26aRagexeRE, 2011-04-27aRagexeRE, 2011-05-03aRagexeRE, 2011-05-11aRagexeRE, 2011-05-17bRagexeRE, 2011-05-24aRagexeRE, 2011-05-26aRagexeRE, 2011-05-31aRagexeRE, 2011-06-07aRagexeRE, 2011-06-08aRagexeRE, 2011-06-08bRagexeRE, 2011-06-08cRagexeRE, 2011-06-09aRagexeRE, 2011-06-14bRagexeRE, 2011-06-22aRagexeRE, 2011-06-28aRagexeRE, 2011-07-06aRagexeRE, 2011-07-13aRagexeRE, 2011-07-13bRagexeRE, 2011-07-13cRagexeRE, 2011-07-19aRagexeRE, 2011-07-26aRagexeRE, 2011-08-03aRagexeRE, 2011-08-03bRagexeRE, 2011-08-10aRagexeRE, 2013-12-23aRagexeRE, 2014-05-08aRagexe, 2014-05-08aRagexeRE, 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-21aRagexeRE, 2018-03-28bRagexe, 2018-03-28bRagexeRE, 2018-04-04bRagexe, 2018-04-04cRagexeRE, 2018-04-18aRagexe, 2018-04-18bRagexeRE, 2018-04-25cRagexe, 2018-04-25cRagexeRE, 2018-05-02bRagexe, 2018-05-02bRagexeRE, 2018-05-02dRagexeRE, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-16cRagexeRE, 2018-05-23aRagexe, 2018-05-23aRagexeRE, 2018-05-30aRagexe, 2018-05-30bRagexeRE, 2018-05-30cRagexeRE, 2018-06-05bRagexe, 2018-06-05bRagexeRE, 2018-06-12aRagexeRE, 2018-06-12bRagexeRE, 2018-06-20cRagexe, 2018-06-20dRagexeRE, 2018-06-20eRagexe, 2018-06-20eRagexeRE, 2018-06-21aRagexe, 2018-06-21aRagexeRE, 2018-07-04aRagexe, 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexe, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexe, 2018-07-18cRagexeRE, 2018-08-01cRagexe, 2018-08-01cRagexeRE, 2018-08-08bRagexe, 2018-08-08bRagexeRE, 2018-08-22cRagexe, 2018-08-22cRagexeRE, 2018-08-29aRagexe, 2018-08-29aRagexeRE, 2018-08-29bRagexeRE, 2018-08-31aRagexe, 2018-09-12dRagexe, 2018-09-12dRagexeRE, 2018-09-19aRagexe, 2018-09-19aRagexeRE, 2018-10-02aRagexe, 2018-10-02aRagexeRE, 2018-10-02bRagexe, 2018-10-02bRagexeRE, 2018-10-17_02aRagexe, 2018-10-17_02aRagexeRE, 2018-10-17_03aRagexe, 2018-10-17_03aRagexeRE, 2018-10-17bRagexe, 2018-10-17bRagexeRE, 2018-10-24bRagexe, 2018-10-31aRagexe, 2018-10-31bRagexe, 2018-10-31cRagexeRE, 2018-11-07aRagexe, 2018-11-07aRagexeRE, 2018-11-14cRagexe, 2018-11-14cRagexeRE, 2018-11-14dRagexe, 2018-11-14dRagexeRE, 2018-11-21bRagexe, 2018-11-21cRagexeRE, 2018-11-28aRagexe, 2018-11-28aRagexeRE, 2018-11-28bRagexe, 2018-11-28cRagexe, 2018-12-05aRagexe, 2018-12-05bRagexeRE, 2018-12-12aRagexe, 2018-12-12aRagexeRE, 2018-12-12bRagexe, 2018-12-12bRagexeRE, 2018-12-19bRagexe, 2018-12-19bRagexeRE, 2018-12-26aRagexe, 2018-12-26aRagexeRE, 2019-01-09aRagexe, 2019-01-09bRagexeRE
+#if PACKETVER == 20101123 || \
+ PACKETVER == 20101124 || \
+ PACKETVER == 20101125 || \
+ PACKETVER == 20101126 || \
+ PACKETVER == 20101130 || \
+ PACKETVER == 20101207 || \
+ PACKETVER == 20101214 || \
+ PACKETVER == 20101221 || \
+ PACKETVER == 20101223 || \
+ PACKETVER == 20101228 || \
+ PACKETVER == 20110104 || \
+ PACKETVER == 20110105 || \
+ PACKETVER == 20110111 || \
+ PACKETVER == 20110118 || \
+ PACKETVER == 20110125 || \
+ PACKETVER == 20110126 || \
+ PACKETVER == 20110131 || \
+ PACKETVER == 20110208 || \
+ PACKETVER == 20110215 || \
+ PACKETVER == 20110222 || \
+ PACKETVER == 20110223 || \
+ PACKETVER == 20110224 || \
+ PACKETVER == 20110225 || \
+ PACKETVER == 20110228 || \
+ PACKETVER == 20110308 || \
+ PACKETVER == 20110309 || \
+ PACKETVER == 20110315 || \
+ PACKETVER == 20110322 || \
+ PACKETVER == 20110329 || \
+ PACKETVER == 20110330 || \
+ PACKETVER == 20110405 || \
+ PACKETVER == 20110412 || \
+ PACKETVER == 20110419 || \
+ PACKETVER == 20110420 || \
+ PACKETVER == 20110426 || \
+ PACKETVER == 20110427 || \
+ PACKETVER == 20110503 || \
+ PACKETVER == 20110511 || \
+ PACKETVER == 20110517 || \
+ PACKETVER == 20110524 || \
+ PACKETVER == 20110526 || \
+ PACKETVER == 20110531 || \
+ PACKETVER == 20110607 || \
+ PACKETVER == 20110608 || \
+ PACKETVER == 20110609 || \
+ PACKETVER == 20110614 || \
+ PACKETVER == 20110622 || \
+ PACKETVER == 20110628 || \
+ PACKETVER == 20110706 || \
+ PACKETVER == 20110713 || \
+ PACKETVER == 20110719 || \
+ PACKETVER == 20110726 || \
+ PACKETVER == 20110803 || \
+ PACKETVER == 20110810 || \
+ PACKETVER == 20131223 || \
+ PACKETVER == 20140508 || \
+ PACKETVER == 20140611 || \
+ PACKETVER == 20150225 || \
+ PACKETVER == 20180315 || \
+ PACKETVER == 20180321 || \
+ PACKETVER == 20180328 || \
+ PACKETVER == 20180404 || \
+ PACKETVER == 20180418 || \
+ PACKETVER == 20180425 || \
+ PACKETVER == 20180502 || \
+ PACKETVER == 20180509 || \
+ PACKETVER == 20180516 || \
+ PACKETVER == 20180523 || \
+ PACKETVER == 20180530 || \
+ PACKETVER == 20180605 || \
+ PACKETVER == 20180612 || \
+ PACKETVER == 20180620 || \
+ PACKETVER == 20180621 || \
+ PACKETVER == 20180704 || \
+ PACKETVER == 20180711 || \
+ PACKETVER == 20180718 || \
+ PACKETVER == 20180801 || \
+ PACKETVER == 20180808 || \
+ PACKETVER == 20180822 || \
+ PACKETVER == 20180829 || \
+ PACKETVER == 20180831 || \
+ PACKETVER == 20180912 || \
+ PACKETVER == 20180919 || \
+ PACKETVER == 20181002 || \
+ PACKETVER == 20181017 || \
+ PACKETVER == 20181024 || \
+ PACKETVER == 20181031 || \
+ PACKETVER == 20181107 || \
+ PACKETVER == 20181114 || \
+ PACKETVER == 20181121 || \
+ PACKETVER == 20181128 || \
+ PACKETVER == 20181205 || \
+ PACKETVER == 20181212 || \
+ PACKETVER == 20181219 || \
+ PACKETVER == 20181226 || \
+ PACKETVER >= 20190109
+ packetKeys(0x00000000,0x00000000,0x00000000);
+#endif
+
+// 2010-11-30aRagexe
+#if PACKETVER == 20101130
+ packetKeys(0x3726593c,0x0efd5ee8,0x79036df9);
+#endif
+
+// 2010-12-07bRagexe
+#if PACKETVER == 20101207
+ packetKeys(0x66111112,0x2b7b53aa,0x04e76df8);
+#endif
+
+// 2010-12-14aRagexe
+#if PACKETVER == 20101214
+ packetKeys(0x5e535d06,0x4e297f0e,0x400b6ad8);
+#endif
+
+// 2010-12-21aRagexe
+#if PACKETVER == 20101221
+ packetKeys(0x0448466a,0x41554ac9,0x5b4710b2);
+#endif
+
+// 2010-12-28aRagexe
+#if PACKETVER == 20101228
+ packetKeys(0x50c638a5,0x4bf86b20,0x480c3746);
+#endif
+
+// 2011-01-04aRagexe
+#if PACKETVER == 20110104
+ packetKeys(0x55db401f,0x047d4e02,0x6d8f2ea3);
+#endif
+
+// 2011-01-11aRagexe
+#if PACKETVER == 20110111
+ packetKeys(0x2d5f6302,0x2a361cd6,0x39d661d6);
+#endif
+
+// 2011-01-18aRagexe
+#if PACKETVER == 20110118
+ packetKeys(0x3c777d2d,0x00541a1d,0x5e0053a2);
+#endif
+
+// 2011-01-25aRagexe, 2011-01-26aRagexe, 2011-01-26bRagexe, 2011-01-31aRagexe
+#if PACKETVER == 20110125 || \
+ PACKETVER == 20110126 || \
+ PACKETVER == 20110131
+ packetKeys(0x6bb84bb0,0x4c004382,0x10ae3260);
+#endif
+
+// 2011-01-31bRagexe, 2011-02-01aRagexe
+#if PACKETVER == 20110131 || \
+ PACKETVER == 20110201
+ packetKeys(0x68871e62,0x60d17266,0x74726daa);
+#endif
+
+// 2011-02-08aRagexe, 2011-02-10aRagexe, 2011-02-10bRagexe
+#if PACKETVER == 20110208 || \
+ PACKETVER == 20110210
+ packetKeys(0x72ba4e9d,0x281e1df1,0x208255aa);
+#endif
+
+// 2011-02-15aRagexe
+#if PACKETVER == 20110215
+ packetKeys(0x1b174d76,0x32005014,0x7b8b72d5);
+#endif
+
+// 2011-02-22aRagexe, 2011-02-23aRagexe, 2011-02-23bRagexe, 2011-02-24aRagexe, 2011-02-25aRagexe, 2011-02-25bRagexe
+#if PACKETVER == 20110222 || \
+ PACKETVER == 20110223 || \
+ PACKETVER == 20110224 || \
+ PACKETVER == 20110225
+ packetKeys(0x48f73b56,0x155f7d66,0x44ab57ce);
+#endif
+
+// 2011-02-28aRagexe
+#if PACKETVER == 20110228
+ packetKeys(0x26385ebf,0x7a8c7534,0x60ae2c34);
+#endif
+
+// 2011-03-08aRagexe, 2011-03-09aRagexe, 2011-03-09bRagexe, 2011-03-09cRagexe, 2011-03-09dRagexe
+#if PACKETVER == 20110308 || \
+ PACKETVER == 20110309
+ packetKeys(0x003f1b20,0x7a1e12a3,0x34994aad);
+#endif
+
+// 2011-03-15aRagexe, 2011-03-16aRagexe
+#if PACKETVER == 20110315 || \
+ PACKETVER == 20110316
+ packetKeys(0x62967d7d,0x34833d1a,0x26d45eca);
+#endif
+
+// 2011-03-22aRagexe
+#if PACKETVER == 20110322
+ packetKeys(0x5870617c,0x638d5376,0x739f4817);
+#endif
+
+// 2011-03-29aRagexe, 2011-03-30aRagexe
+#if PACKETVER == 20110329 || \
+ PACKETVER == 20110330
+ packetKeys(0x06900bb7,0x45db687b,0x197b017b);
+#endif
+
+// 2011-04-05aRagexe
+#if PACKETVER == 20110405
+ packetKeys(0x248d5c37,0x1c6a1b37,0x1f644fdb);
+#endif
+
+// 2011-04-12bRagexe
+#if PACKETVER == 20110412
+ packetKeys(0x3de86bfc,0x0dd47f80,0x42481c9b);
+#endif
+
+// 2011-04-19aRagexe
+#if PACKETVER == 20110419
+ packetKeys(0x26073204,0x62013a51,0x22ac58e0);
+#endif
+
+// 2011-04-26aRagexe
+#if PACKETVER == 20110426
+ packetKeys(0x392813f9,0x09905054,0x40db732e);
+#endif
+
+// 2011-05-03aRagexe
+#if PACKETVER == 20110503
+ packetKeys(0x28be32ee,0x1d506fcb,0x63832421);
+#endif
+
+// 2011-05-11aRagexe
+#if PACKETVER == 20110511
+ packetKeys(0x6a715733,0x3c5c0d74,0x408a48ec);
+#endif
+
+// 2011-05-17aRagexe
+#if PACKETVER == 20110517
+ packetKeys(0x07fe0c72,0x46766bad,0x5eb5126a);
+#endif
+
+// 2011-05-23aRagexe, 2011-05-26bRagexe
+#if PACKETVER == 20110523 || \
+ PACKETVER == 20110526
+ packetKeys(0x69166916,0x69166916,0x69166916);
+#endif
+
+// 2011-05-31aRagexe
+#if PACKETVER == 20110531
+ packetKeys(0x5aba2c7c,0x3cd22073,0x78953988);
+#endif
+
+// 2011-06-07aRagexe, 2011-06-08aRagexe, 2011-06-08bRagexe, 2011-06-08cRagexe, 2011-06-09aRagexe
+#if PACKETVER == 20110607 || \
+ PACKETVER == 20110608 || \
+ PACKETVER == 20110609
+ packetKeys(0x76b0426c,0x0dd74deb,0x1f92228e);
+#endif
+
+// 2011-06-14aRagexe
+#if PACKETVER == 20110614
+ packetKeys(0x5749027b,0x71710972,0x5b096475);
+#endif
+
+// 2011-06-20aRagexe
+#if PACKETVER == 20110620
+ packetKeys(0x3a1760d4,0x254e0df9,0x440e2357);
+#endif
+
+// 2011-06-27aRagexe
+#if PACKETVER == 20110627
+ packetKeys(0x3efc29bd,0x699e4b11,0x7b900a13);
+#endif
+
+// 2011-07-05aRagexe
+#if PACKETVER == 20110705
+ packetKeys(0x48801a5e,0x68fc7726,0x081d7f6e);
+#endif
+
+// 2011-07-11bRagexe, 2011-07-13aRagexe, 2011-07-13bRagexe
+#if PACKETVER == 20110711 || \
+ PACKETVER == 20110713
+ packetKeys(0x489c544b,0x33ba1c25,0x2de66e4e);
+#endif
+
+// 2011-07-18aRagexe
+#if PACKETVER == 20110718
+ packetKeys(0x08464674,0x1eeb3bd5,0x33395199);
+#endif
+
+// 2011-07-26aRagexe
+#if PACKETVER == 20110726
+ packetKeys(0x41e5730b,0x119c6c11,0x5356524a);
+#endif
+
+// 2011-08-02aRagexe
+#if PACKETVER == 20110802
+ packetKeys(0x607c08a1,0x65b20528,0x360571e9);
+#endif
+
+// 2011-08-09aRagexe
+#if PACKETVER == 20110809
+ packetKeys(0x742a559a,0x047f425d,0x5c8c2ca0);
+#endif
+
+// 2011-08-16aRagexe, 2011-08-16aRagexeRE, 2011-08-17aRagexe, 2011-08-17aRagexeRE, 2011-08-17bRagexe, 2011-08-17bRagexeRE
+#if PACKETVER == 20110816 || \
+ PACKETVER == 20110817
+ packetKeys(0x053d5ced,0x3ded6ded,0x6ded6ded);
+#endif
+
+// 2011-08-23aRagexe, 2011-08-23aRagexeRE, 2011-08-24aRagexe, 2011-08-24aRagexeRE, 2011-08-24bRagexeRE
+#if PACKETVER == 20110823 || \
+ PACKETVER == 20110824
+ packetKeys(0x35c91401,0x262a5556,0x28fa03aa);
+#endif
+
+// 2011-08-31aRagexe, 2011-08-31aRagexeRE, 2011-08-31bRagexe, 2011-08-31bRagexeRE, 2011-08-31cRagexe, 2011-08-31cRagexeRE, 2011-08-31dRagexeRE, 2011-08-31eRagexeRE
+#if PACKETVER == 20110831
+ packetKeys(0x3ad67ed0,0x44703c69,0x6f876809);
+#endif
+
+// 2011-09-06aRagexe, 2011-09-06aRagexeRE, 2011-09-14aRagexe, 2011-09-14aRagexeRE
+#if PACKETVER == 20110906 || \
+ PACKETVER == 20110914
+ packetKeys(0x350124ec,0x39a14595,0x0de56125);
+#endif
+
+// 2011-09-20aRagexe, 2011-09-20aRagexeRE, 2011-09-20aRagexeRE2
+#if PACKETVER == 20110920
+ packetKeys(0x79c91a12,0x20450cc0,0x584b2a38);
+#endif
+
+// 2011-09-28aRagexe, 2011-09-28aRagexe-retry, 2011-09-28aRagexeRE, 2011-09-29aRagexe, 2011-09-29aRagexeRE
+#if PACKETVER == 20110928 || \
+ PACKETVER == 20110929
+ packetKeys(0x26567512,0x4b0732df,0x57d266c6);
+#endif
+
+// 2011-10-04aRagexe, 2011-10-04aRagexeRE, 2011-10-05aRagexe, 2011-10-05aRagexeRE
+#if PACKETVER == 20111004 || \
+ PACKETVER == 20111005
+ packetKeys(0x291e6762,0x77cd391a,0x60ac2f16);
+#endif
+
+// 2011-10-10aRagexe, 2011-10-10bRagexeRE, 2011-10-12aRagexeRE, 2011-10-12bRagexe
+#if PACKETVER == 20111010 || \
+ PACKETVER == 20111012
+ packetKeys(0x7f3c2d29,0x59b01de6,0x1dbb44ca);
+#endif
+
+// 2011-10-17aRagexe, 2011-10-17aRagexeRE, 2011-10-19aRagexeRE, 2011-10-19bRagexeRE, 2011-10-21aRagexe, 2011-10-21aRagexeRE, 2011-10-21cRagexe
+#if PACKETVER == 20111017 || \
+ PACKETVER == 20111019 || \
+ PACKETVER == 20111021
+ packetKeys(0x357d55dc,0x5a8d759f,0x245c30f5);
+#endif
+
+// 2011-10-25aRagexe, 2011-10-25aRagexeRE
+#if PACKETVER == 20111025
+ packetKeys(0x50ae1a63,0x3ce579b5,0x29c10406);
+#endif
+
+// 2011-11-01cRagexe, 2011-11-01cRagexeRE, 2011-11-02aRagexe, 2011-11-02aRagexeRE
+#if PACKETVER == 20111101 || \
+ PACKETVER == 20111102
+ packetKeys(0x5324329d,0x5d545d52,0x06137269);
+#endif
+
+// 2011-11-08aRagexe, 2011-11-08aRagexeRE, 2011-11-09aRagexe, 2011-11-09aRagexeRE, 2011-11-09bRagexe, 2011-11-09cRagexe, 2011-11-09dRagexe, 2011-11-09eRagexe
+#if PACKETVER == 20111108 || \
+ PACKETVER == 20111109
+ packetKeys(0x0b642bda,0x6ecb1d1c,0x61c7454b);
+#endif
+
+// 2011-11-14aRagexe, 2011-11-14aRagexeRE, 2011-11-16aRagexe, 2011-11-16aRagexeRE
+#if PACKETVER == 20111114 || \
+ PACKETVER == 20111116
+ packetKeys(0x419d0db0,0x74916bf4,0x027371b4);
+#endif
+
+// 2011-11-22aRagexe, 2011-11-22aRagexeRE, 2011-11-23aRagexe
+#if PACKETVER == 20111122 || \
+ PACKETVER == 20111123
+ packetKeys(0x3b550f07,0x1f666c7c,0x60304ef5);
+#endif
+
+// 2011-12-07aRagexe, 2011-12-07aRagexeRE
+#if PACKETVER == 20111207
+ packetKeys(0x2a610886,0x3e09165e,0x57c11888);
+#endif
+
+// 2011-12-13aRagexe, 2011-12-13aRagexeRE, 2011-12-14aRagexe, 2011-12-14aRagexeRE, 2011-12-14bRagexeRE, 2011-12-14cRagexeRE
+#if PACKETVER == 20111213 || \
+ PACKETVER == 20111214
+ packetKeys(0x5151306b,0x7ae32886,0x53060628);
+#endif
+
+// 2011-12-20bRagexe, 2011-12-20bRagexeRE
+#if PACKETVER == 20111220
+ packetKeys(0x05d53871,0x7d0027b4,0x29975333);
+#endif
+
+// 2011-12-27aRagexe, 2011-12-27aRagexeRE, 2011-12-28aRagexe, 2011-12-28aRagexeRE
+#if PACKETVER == 20111227 || \
+ PACKETVER == 20111228
+ packetKeys(0x0ff87e93,0x6cff7860,0x3a3d1dec);
+#endif
+
+// 2012-01-03aRagexe, 2012-01-03bRagexeRE, 2012-01-04aRagexe, 2012-01-04aRagexeRE, 2012-01-04bRagexe
+#if PACKETVER == 20120103 || \
+ PACKETVER == 20120104
+ packetKeys(0x262034a1,0x674542a5,0x73a50ba5);
+#endif
+
+// 2012-01-10aRagexeRE, 2012-01-10bRagexe
+#if PACKETVER == 20120110
+ packetKeys(0x2b412afc,0x4ff94487,0x6705339d);
+#endif
+
+// 2012-01-17aRagexe, 2012-01-17aRagexeRE, 2012-01-18aRagexe
+#if PACKETVER == 20120117 || \
+ PACKETVER == 20120118
+ packetKeys(0x24e32c2e,0x48dd17a5,0x64f8771a);
+#endif
+
+// 2012-01-20aRagexe, 2012-01-20aRagexeRE
+#if PACKETVER == 20120120
+ packetKeys(0x504345d0,0x3d427b1b,0x794c2dcc);
+#endif
+
+// 2012-01-31aRagexe, 2012-01-31cRagexeRE, 2012-02-01aRagexeRE, 2012-02-02aRagexe, 2012-02-02aRagexeRE, 2012-02-02bRagexe, 2012-02-02bRagexeRE
+#if PACKETVER == 20120131 || \
+ PACKETVER == 20120201 || \
+ PACKETVER == 20120202
+ packetKeys(0x2cfc0a71,0x2ba91d8d,0x087e39e0);
+#endif
+
+// 2012-02-07bRagexe, 2012-02-07bRagexeRE, 2012-02-08aRagexe, 2012-02-09aRagexe
+#if PACKETVER == 20120207 || \
+ PACKETVER == 20120208 || \
+ PACKETVER == 20120209
+ packetKeys(0x1d373f5d,0x5acd604d,0x1c4d7c4d);
+#endif
+
+// 2012-02-14bRagexe, 2012-02-14bRagexeRE, 2012-02-15aRagexe
+#if PACKETVER == 20120214 || \
+ PACKETVER == 20120215
+ packetKeys(0x7a255efa,0x30977276,0x2d4a0448);
+#endif
+
+// 2012-02-21aRagexe, 2012-02-21aRagexeRE, 2012-02-22aRagexe, 2012-02-22aRagexeRE
+#if PACKETVER == 20120221 || \
+ PACKETVER == 20120222
+ packetKeys(0x1ca5130f,0x43ed240a,0x7fea3be0);
+#endif
+
+// 2012-02-28bRagexe, 2012-02-28bRagexeRE, 2012-02-29aRagexe, 2012-02-29aRagexeRE
+#if PACKETVER == 20120228 || \
+ PACKETVER == 20120229
+ packetKeys(0x520b4c64,0x2800407d,0x47651458);
+#endif
+
+// 2012-03-07aRagexe, 2012-03-07aRagexeRE, 2012-03-07bRagexe, 2012-03-07bRagexeRE, 2012-03-07cRagexe, 2012-03-07cRagexeRE, 2012-03-07dRagexe, 2012-03-07dRagexeRE, 2012-03-07eRagexeRE, 2012-03-07fRagexeRE
+#if PACKETVER == 20120307
+ packetKeys(0x382a6def,0x5cbe7202,0x61f46637);
+#endif
+
+// 2012-03-14aRagexe, 2012-03-14aRagexeRE, 2012-03-14bRagexe, 2012-03-14bRagexeRE, 2012-03-14cRagexe, 2012-03-14cRagexeRE
+#if PACKETVER == 20120314
+ packetKeys(0x689c1729,0x11812639,0x60f82967);
+#endif
+
+// 2012-03-20aRagexe, 2012-03-20aRagexeRE, 2012-03-21aRagexeRE
+#if PACKETVER == 20120320 || \
+ PACKETVER == 20120321
+ packetKeys(0x21f9683f,0x710c5ca5,0x1fd910e9);
+#endif
+
+// 2012-03-28aRagexe, 2012-03-28aRagexeRE, 2012-03-28bRagexe, 2012-03-28bRagexeRE, 2012-03-28cRagexe, 2012-03-28cRagexeRE, 2012-03-28dRagexe, 2012-03-28dRagexeRE, 2012-03-28eRagexeRE, 2012-03-28fRagexeRE, 2012-03-28gRagexeRE
+#if PACKETVER == 20120328
+ packetKeys(0x75b8553b,0x37f20b12,0x385c2b40);
+#endif
+
+// 2012-04-04aRagexe, 2012-04-04aRagexeRE
+#if PACKETVER == 20120404
+ packetKeys(0x0036310c,0x2dcd0bed,0x1ee62a78);
+#endif
+
+// 2012-04-10aRagexe, 2012-04-10aRagexeRE
+#if PACKETVER == 20120410
+ packetKeys(0x01581359,0x452d6ffa,0x6afb6e2e);
+#endif
+
+// 2012-04-17aRagexe, 2012-04-17aRagexeRE, 2012-04-18aRagexeRE
+#if PACKETVER == 20120417 || \
+ PACKETVER == 20120418
+ packetKeys(0x01540e48,0x13041224,0x31247924);
+#endif
+
+// 2012-04-24aRagexe, 2012-04-24aRagexeRE
+#if PACKETVER == 20120424
+ packetKeys(0x411d1dbb,0x4cba4848,0x1a432fc4);
+#endif
+
+// 2012-05-02aRagexeRE, 2012-05-03aRagexe, 2012-05-03aRagexeRE, 2012-05-03bRagexe
+#if PACKETVER == 20120502 || \
+ PACKETVER == 20120503
+ packetKeys(0x37a91d19,0x10190019,0x00190019);
+#endif
+
+// 2012-05-08aRagexe, 2012-05-08aRagexeRE, 2012-05-09aRagexeRE, 2012-05-09bRagexeRE
+#if PACKETVER == 20120508 || \
+ PACKETVER == 20120509
+ packetKeys(0x16cf3301,0x1f472b9b,0x0b4a3cd2);
+#endif
+
+// 2012-05-15aRagexe, 2012-05-15aRagexeRE
+#if PACKETVER == 20120515
+ packetKeys(0x4a715ef9,0x79103e4f,0x405c1238);
+#endif
+
+// 2012-05-22aRagexe, 2012-05-23aRagexe, 2012-05-23aRagexeRE, 2012-05-23bRagexeRE, 2012-05-25aRagexeRE
+#if PACKETVER == 20120522 || \
+ PACKETVER == 20120523 || \
+ PACKETVER == 20120525
+ packetKeys(0x70eb4ccb,0x0487713c,0x398d4b08);
+#endif
+
+// 2012-05-29bRagexe, 2012-05-29bRagexeRE
+#if PACKETVER == 20120529
+ packetKeys(0x53415dde,0x34953e16,0x27623df2);
+#endif
+
+// 2012-06-01aRagexeRE, 2012-06-04aRagexe, 2012-06-05aRagexeRE
+#if PACKETVER == 20120601 || \
+ PACKETVER == 20120604 || \
+ PACKETVER == 20120605
+ packetKeys(0x68ca3080,0x31b74bdd,0x505208f1);
+#endif
+
+// 2012-06-12aRagexe, 2012-06-12aRagexeRE
+#if PACKETVER == 20120612
+ packetKeys(0x32e45d64,0x35643564,0x35643564);
+#endif
+
+// 2012-06-18aRagexe, 2012-06-18aRagexeRE
+#if PACKETVER == 20120618
+ packetKeys(0x261f261f,0x261f261f,0x261f261f);
+#endif
+
+// 2012-06-26aRagexe, 2012-06-26aRagexeRE, 2012-06-27aRagexe, 2012-06-27aRagexeRE
+#if PACKETVER == 20120626 || \
+ PACKETVER == 20120627
+ packetKeys(0x02277e66,0x045723f1,0x7107392c);
+#endif
+
+// 2012-07-02aRagexe, 2012-07-02aRagexeRE
+#if PACKETVER == 20120702
+ packetKeys(0x25733b31,0x53486cfd,0x398649bd);
+#endif
+
+// 2012-07-10aRagexe, 2012-07-10aRagexeRE, 2012-07-12aRagexe, 2012-07-12aRagexeRE
+#if PACKETVER == 20120710 || \
+ PACKETVER == 20120712
+ packetKeys(0x0e8b7afb,0x6930362d,0x42d33a57);
+#endif
+
+// 2012-07-16aRagexe, 2012-07-16aRagexeRE
+#if PACKETVER == 20120716
+ packetKeys(0x76052205,0x22052205,0x22052205);
+#endif
+
+// 2012-07-24aRagexe, 2012-07-24aRagexeRE
+#if PACKETVER == 20120724
+ packetKeys(0x783d5bc6,0x3aac2176,0x66616f02);
+#endif
+
+// 2012-08-01aRagexe, 2012-08-01aRagexeRE, 2012-08-01bRagexe, 2012-08-01bRagexeRE
+#if PACKETVER == 20120801
+ packetKeys(0x71fb6768,0x5843166b,0x6cb445c6);
+#endif
+
+// 2012-08-08aRagexe, 2012-08-08aRagexeRE, 2012-08-08bRagexe, 2012-08-08bRagexeRE, 2012-08-08cRagexe, 2012-08-08cRagexeRE, 2012-08-08dRagexeRE
+#if PACKETVER == 20120808
+ packetKeys(0x5d5068bb,0x36732065,0x47cf7367);
+#endif
+
+// 2012-08-14aRagexe, 2012-08-14aRagexeRE, 2012-08-14bRagexe, 2012-08-14bRagexeRE
+#if PACKETVER == 20120814
+ packetKeys(0x203e21bd,0x047459fb,0x56af5a97);
+#endif
+
+// 2012-08-22aRagexe, 2012-08-22aRagexeRE, 2012-08-22bRagexe, 2012-08-22bRagexeRE, 2012-08-22cRagexe, 2012-08-22cRagexeRE
+#if PACKETVER == 20120822
+ packetKeys(0x06a92e7b,0x3d324f29,0x5fd63004);
+#endif
+
+// 2012-08-30aRagexe, 2012-08-30aRagexeRE, 2012-08-30bRagexeRE
+#if PACKETVER == 20120830
+ packetKeys(0x0af1363d,0x4ab33e3b,0x48421dbe);
+#endif
+
+// 2012-09-05aRagexe, 2012-09-05aRagexeRE
+#if PACKETVER == 20120905
+ packetKeys(0x04f50d80,0x092f5c4d,0x29bf3dcf);
+#endif
+
+// 2012-09-11aRagexe, 2012-09-11aRagexeRE
+#if PACKETVER == 20120911
+ packetKeys(0x1f3d1145,0x02db3c32,0x4be34c49);
+#endif
+
+// 2012-09-19aRagexe, 2012-09-19aRagexeRE
+#if PACKETVER == 20120919
+ packetKeys(0x72e00f24,0x4ea02d80,0x7c803480);
+#endif
+
+// 2012-09-25aRagexe, 2012-09-25aRagexeRE, 2012-09-26aRagexe, 2012-09-26aRagexeRE
+#if PACKETVER == 20120925 || \
+ PACKETVER == 20120926
+ packetKeys(0x43a66e22,0x36c2229f,0x08172ece);
+#endif
+
+// 2012-10-10aRagexe, 2012-10-10aRagexeRE, 2012-10-10bRagexe, 2012-10-10bRagexeRE, 2012-10-11aRagexeRE
+#if PACKETVER == 20121010 || \
+ PACKETVER == 20121011
+ packetKeys(0x169733e2,0x4c4640dc,0x31636531);
+#endif
+
+// 2012-10-17aRagexe, 2012-10-17aRagexeRE, 2012-10-17bRagexe, 2012-10-17bRagexeRE
+#if PACKETVER == 20121017
+ packetKeys(0x340c0c31,0x33205ea8,0x55964bff);
+#endif
+
+// 2012-10-24aRagexe, 2012-10-24aRagexeRE
+#if PACKETVER == 20121024
+ packetKeys(0x6166335c,0x45393483,0x7edc5478);
+#endif
+
+// 2012-10-31aRagexe, 2012-10-31aRagexeRE
+#if PACKETVER == 20121031
+ packetKeys(0x66eb7adb,0x242864bb,0x354a4cde);
+#endif
+
+// 2012-11-07aRagexe, 2012-11-07aRagexeRE
+#if PACKETVER == 20121107
+ packetKeys(0x49967892,0x48025276,0x1e192ca3);
+#endif
+
+// 2012-11-14aRagexe, 2012-11-14aRagexeRE
+#if PACKETVER == 20121114
+ packetKeys(0x3473545c,0x2706445c,0x79647616);
+#endif
+
+// 2012-11-21aRagexe, 2012-11-21aRagexeRE
+#if PACKETVER == 20121121
+ packetKeys(0x6eb54b0b,0x3f2a6be5,0x0b2866e6);
+#endif
+
+// 2012-11-28aRagexe, 2012-11-28aRagexeRE
+#if PACKETVER == 20121128
+ packetKeys(0x146d4d5e,0x5c3d161b,0x759250b8);
+#endif
+
+// 2012-12-05aRagexe, 2012-12-05aRagexeRE, 2012-12-05bRagexe, 2012-12-05bRagexeRE
+#if PACKETVER == 20121205
+ packetKeys(0x218c64b6,0x4efe17ae,0x27ea5e74);
+#endif
+
+// 2012-12-12aRagexe, 2012-12-12aRagexeRE, 2012-12-12bRagexe, 2012-12-12bRagexeRE, 2012-12-12cRagexeRE
+#if PACKETVER == 20121212
+ packetKeys(0x7f8026f0,0x32ee2a4b,0x73746c0e);
+#endif
+
+// 2012-12-18aRagexe, 2012-12-18aRagexeRE, 2012-12-18bRagexe, 2012-12-18bRagexeRE
+#if PACKETVER == 20121218
+ packetKeys(0x6a5450a2,0x4322498a,0x2c6574fb);
+#endif
+
+// 2012-12-27aRagexe, 2012-12-27aRagexeRE
+#if PACKETVER == 20121227
+ packetKeys(0x71773018,0x36a14eeb,0x28cd5a20);
+#endif
+
+// 2013-01-03aRagexe, 2013-01-03aRagexeRE, 2013-01-07aRagexe
+#if PACKETVER == 20130103 || \
+ PACKETVER == 20130107
+ packetKeys(0x1e1a559a,0x199a799a,0x799a799a);
+#endif
+
+// 2013-01-09aRagexe, 2013-01-09aRagexeRE
+#if PACKETVER == 20130109
+ packetKeys(0x6435360f,0x0a283678,0x64a04ac7);
+#endif
+
+// 2013-01-15aRagexeRE, 2013-01-15bRagexe, 2013-01-16aRagexe, 2013-01-16aRagexeRE, 2013-01-16bRagexe
+#if PACKETVER == 20130115 || \
+ PACKETVER == 20130116
+ packetKeys(0x273c25cd,0x06aa48af,0x45a01bd4);
+#endif
+
+// 2013-01-21aRagexe, 2013-01-21aRagexeRE
+#if PACKETVER == 20130121
+ packetKeys(0x5dd874b0,0x7d98233f,0x28ff5566);
+#endif
+
+// 2013-01-30aRagexe, 2013-01-30aRagexeRE
+#if PACKETVER == 20130130
+ packetKeys(0x1ea57961,0x27786856,0x30301fa0);
+#endif
+
+// 2013-02-06aRagexe, 2013-02-06aRagexeRE
+#if PACKETVER == 20130206
+ packetKeys(0x1d8f4227,0x675812aa,0x29132929);
+#endif
+
+// 2013-02-15aRagexe, 2013-02-15aRagexeRE, 2013-02-15bRagexe
+#if PACKETVER == 20130215
+ packetKeys(0x69fb1c38,0x7d386860,0x62805311);
+#endif
+
+// 2013-02-20aRagexe, 2013-02-20bRagexeRE
+#if PACKETVER == 20130220
+ packetKeys(0x0d555256,0x28c26722,0x72220a22);
+#endif
+
+// 2013-02-27aRagexe, 2013-02-27aRagexeRE
+#if PACKETVER == 20130227
+ packetKeys(0x44f86842,0x43786a7a,0x71654528);
+#endif
+
+// 2013-03-06aRagexe, 2013-03-06aRagexeRE, 2013-03-06bRagexeRE
+#if PACKETVER == 20130306
+ packetKeys(0x7e274326,0x7d182df2,0x4fc27dfa);
+#endif
+
+// 2013-03-13aRagexe, 2013-03-13aRagexeRE, 2013-03-13bRagexeRE, 2013-03-13cRagexeRE
+#if PACKETVER == 20130313
+ packetKeys(0x560021c3,0x6a5d110f,0x52bd40a5);
+#endif
+
+// 2013-03-20bRagexeRE, 2013-03-20cRagexeRE, 2013-03-20dRagexe, 2013-03-20eRagexe
+#if PACKETVER == 20130320
+ packetKeys(0x3f094c49,0x55f86c1e,0x58aa359a);
+#endif
+
+// 2013-03-27bRagexe, 2013-03-27bRagexeRE
+#if PACKETVER == 20130327
+ packetKeys(0x114b1ba0,0x2c4f0ae2,0x5fa1183f);
+#endif
+
+// 2013-04-03aRagexe, 2013-04-03aRagexeRE
+#if PACKETVER == 20130403
+ packetKeys(0x424a43ae,0x4a9d5ebe,0x4b3518a9);
+#endif
+
+// 2013-04-10aRagexe, 2013-04-10aRagexeRE
+#if PACKETVER == 20130410
+ packetKeys(0x3ad52aca,0x314d1aed,0x086e415e);
+#endif
+
+// 2013-04-17aRagexe, 2013-04-17aRagexeRE
+#if PACKETVER == 20130417
+ packetKeys(0x7fb13b83,0x6e003749,0x07a02b94);
+#endif
+
+// 2013-04-24aRagexe, 2013-04-24aRagexeRE
+#if PACKETVER == 20130424
+ packetKeys(0x79f679f6,0x79f679f6,0x79f679f6);
+#endif
+
+// 2013-05-02aRagexe, 2013-05-02aRagexeRE, 2013-05-02bRagexe
+#if PACKETVER == 20130502
+ packetKeys(0x62e733b9,0x62204281,0x7f044dca);
+#endif
+
+// 2013-05-08bRagexe, 2013-05-08bRagexeRE, 2013-05-08cRagexe, 2013-05-08dRagexe, 2013-05-08eRagexe, 2013-05-08fRagexe
+#if PACKETVER == 20130508
+ packetKeys(0x25421e49,0x175200ba,0x6c0b5239);
+#endif
+
+// 2013-05-15aRagexe, 2013-05-15aRagexeRE
+#if PACKETVER == 20130515
+ packetKeys(0x75794a38,0x58a96bc1,0x296e6fb8);
+#endif
+
+// 2013-05-22aRagexe, 2013-05-22aRagexeRE
+#if PACKETVER == 20130522
+ packetKeys(0x6948050b,0x06511d9d,0x725d4df1);
+#endif
+
+// 2013-05-29aRagexe, 2013-05-29aRagexeRE
+#if PACKETVER == 20130529
+ packetKeys(0x023a6c87,0x14bf1f1e,0x5cc70cc9);
+#endif
+
+// 2013-06-05aRagexe, 2013-06-05bRagexe, 2013-06-05cRagexeRE
+#if PACKETVER == 20130605
+ packetKeys(0x646e08d9,0x5f153ab5,0x61b509b5);
+#endif
+
+// 2013-06-12aRagexe, 2013-06-12bRagexe, 2013-06-12bRagexeRE, 2013-06-12cRagexe, 2013-06-12dRagexe, 2013-06-12eRagexe
+#if PACKETVER == 20130612
+ packetKeys(0x6d166f66,0x3c000fcf,0x295b0fcb);
+#endif
+
+// 2013-06-18#1aRagexe, 2013-06-18#1aRagexeRE
+#if PACKETVER == 20130618
+ packetKeys(0x434115de,0x34a10fe9,0x6791428e);
+#endif
+
+// 2013-06-26_3bRagexeRE, 2013-06-26_3cRagexe, 2013-06-26aRagexeRE, 2013-06-26bRagexe
+#if PACKETVER == 20130626
+ packetKeys(0x38f453ef,0x6a040fd8,0x65bd6668);
+#endif
+
+// 2013-07-03aRagexe, 2013-07-03bRagexeRE
+#if PACKETVER == 20130703
+ packetKeys(0x4ff90e23,0x0f1432f2,0x4cfa1eda);
+#endif
+
+// 2013-07-10aRagexeRE, 2013-07-10bRagexe, 2013-07-10bRagexeRE, 2013-07-10cRagexeRE, 2013-07-10dRagexeRE, 2013-07-10eRagexeRE
+#if PACKETVER == 20130710
+ packetKeys(0x4a9c4237,0x4ccf3f8f,0x458f758f);
+#endif
+
+// 2013-07-17cRagexe, 2013-07-17cRagexeRE, 2013-07-17dRagexeRE, 2013-07-17eRagexeRE
+#if PACKETVER == 20130717
+ packetKeys(0x5ee5520c,0x5f9e00cf,0x2bed4f91);
+#endif
+
+// 2013-07-24eRagexe, 2013-07-24eRagexeRE, 2013-07-24fRagexeRE
+#if PACKETVER == 20130724
+ packetKeys(0x3c243bf5,0x42cc4e2f,0x02106ec6);
+#endif
+
+// 2013-07-31cRagexe, 2013-07-31cRagexeRE
+#if PACKETVER == 20130731
+ packetKeys(0x1e9d11a6,0x21a232b8,0x6a9e02b7);
+#endif
+
+// 2013-08-07aRagexe, 2013-08-07aRagexeRE
+#if PACKETVER == 20130807
+ packetKeys(0x7e241de0,0x5e805580,0x3d807d80);
+#endif
+
+// 2013-08-14aRagexe, 2013-08-14aRagexeRE
+#if PACKETVER == 20130814
+ packetKeys(0x23a23148,0x0c41420e,0x53785ad7);
+#endif
+
+// 2013-08-21bRagexe, 2013-08-21dRagexeRE
+#if PACKETVER == 20130821
+ packetKeys(0x51673f38,0x01663512,0x5cff0b3d);
+#endif
+
+// 2013-08-28bRagexe, 2013-08-28bRagexeRE, 2013-08-28cRagexe, 2013-08-28cRagexeRE
+#if PACKETVER == 20130828
+ packetKeys(0x02ef7a9a,0x4882042f,0x76796678);
+#endif
+
+// 2013-09-04aRagexe, 2013-09-04bRagexeRE
+#if PACKETVER == 20130904
+ packetKeys(0x41af20c5,0x0997799e,0x4ae803a0);
+#endif
+
+// 2013-09-11aRagexe, 2013-09-11aRagexeRE, 2013-09-11bRagexe, 2013-09-11bRagexeRE
+#if PACKETVER == 20130911
+ packetKeys(0x232b3f47,0x0ad0515f,0x1ca31828);
+#endif
+
+// 2013-09-17aRagexe, 2013-09-17aRagexeRE
+#if PACKETVER == 20130917
+ packetKeys(0x5c9164c5,0x32b62f83,0x52864548);
+#endif
+
+// 2013-09-25aRagexe, 2013-09-25aRagexeRE, 2013-09-25bRagexe, 2013-09-25bRagexeRE, 2013-09-25cRagexe
+#if PACKETVER == 20130925
+ packetKeys(0x4b9c279a,0x0c7849c4,0x72a77646);
+#endif
+
+// 2013-10-02aRagexe, 2013-10-02aRagexeRE
+#if PACKETVER == 20131002
+ packetKeys(0x63a466f7,0x635362f3,0x41f369f3);
+#endif
+
+// 2013-10-08aRagexe, 2013-10-08bRagexeRE
+#if PACKETVER == 20131008
+ packetKeys(0x64924aad,0x08ca0445,0x1cbc36de);
+#endif
+
+// 2013-10-16aRagexe, 2013-10-16aRagexeRE, 2013-10-16bRagexe, 2013-10-16bRagexeRE
+#if PACKETVER == 20131016
+ packetKeys(0x33ad7a93,0x720c7c49,0x12c4205a);
+#endif
+
+// 2013-10-23aRagexe, 2013-10-23aRagexeRE
+#if PACKETVER == 20131023
+ packetKeys(0x02ef6163,0x2b774814,0x58ec3036);
+#endif
+
+// 2013-10-30aRagexe, 2013-10-30aRagexeRE
+#if PACKETVER == 20131030
+ packetKeys(0x4a6a3eff,0x7e2d5237,0x01ca019e);
+#endif
+
+// 2013-11-06aRagexe, 2013-11-06aRagexeRE, 2013-11-07aRagexe, 2013-11-07bRagexe, 2013-11-07cRagexe, 2013-11-08aRagexe
+#if PACKETVER == 20131106 || \
+ PACKETVER == 20131107 || \
+ PACKETVER == 20131108
+ packetKeys(0x143e528f,0x5ca05899,0x44b85b23);
+#endif
+
+// 2013-11-13aRagexeRE, 2013-11-13bRagexe
+#if PACKETVER == 20131113
+ packetKeys(0x44ea14cd,0x49311c88,0x40c86c31);
+#endif
+
+// 2013-11-20dRagexe, 2013-11-20eRagexeRE
+#if PACKETVER == 20131120
+ packetKeys(0x541e5172,0x1b1d30a0,0x28aa7ce5);
+#endif
+
+// 2013-11-27aRagexeRE, 2013-11-27bRagexe, 2013-11-27bRagexeRE
+#if PACKETVER == 20131127
+ packetKeys(0x21426a48,0x5c505d6a,0x046d06ad);
+#endif
+
+// 2013-12-04dRagexeRE, 2013-12-04eRagexe, 2013-12-04eRagexeRE
+#if PACKETVER == 20131204
+ packetKeys(0x792760b2,0x5af45387,0x36165603);
+#endif
+
+// 2013-12-11cRagexe, 2013-12-11cRagexeRE, 2013-12-11dRagexe, 2013-12-11eRagexeRE
+#if PACKETVER == 20131211
+ packetKeys(0x55b0394e,0x4d341ff2,0x60bc1dc3);
+#endif
+
+// 2013-12-18aRagexeRE, 2013-12-18bRagexe
+#if PACKETVER == 20131218
+ packetKeys(0x6a596301,0x76866d0e,0x32294a45);
+#endif
+
+// 2013-12-23bRagexe, 2013-12-23bRagexeRE, 2013-12-23cRagexe, 2013-12-23xRagexeRE
+#if PACKETVER == 20131223
+ packetKeys(0x631c511c,0x111c111c,0x111c111c);
+#endif
+
+// 2013-12-30aRagexe, 2013-12-30aRagexeRE
+#if PACKETVER == 20131230
+ packetKeys(0x611b7097,0x01f957a1,0x768a0fcb);
+#endif
+
+// 2014-01-08bRagexeRE, 2014-01-08cRagexe, 2014-01-08cRagexeRE, 2014-01-08dRagexe
+#if PACKETVER == 20140108
+ packetKeys(0x4a1e26f2,0x231e7efe,0x61fe19fe);
+#endif
+
+// 2014-01-15aRagexe, 2014-01-15bRagexe, 2014-01-15cRagexe, 2014-01-15cRagexeRE, 2014-01-15dRagexeRE, 2014-01-15eRagexe, 2014-01-15eRagexeRE
+#if PACKETVER == 20140115
+ packetKeys(0x63224335,0x0f3a1f27,0x6d217b24);
+#endif
+
+// 2014-01-22aRagexe, 2014-01-22aRagexeRE
+#if PACKETVER == 20140122
+ packetKeys(0x6123177b,0x05b42c99,0x71702594);
+#endif
+
+// 2014-01-29aRagexe, 2014-01-29bRagexeRE, 2014-01-29cRagexe
+#if PACKETVER == 20140129
+ packetKeys(0x2e52163c,0x605e518b,0x3c7a62cb);
+#endif
+
+// 2014-02-05bRagexe, 2014-02-05bRagexeRE
+#if PACKETVER == 20140205
+ packetKeys(0x63dc7bdc,0x7bdc7bdc,0x7bdc7bdc);
+#endif
+
+// 2014-02-12aRagexe, 2014-02-12aRagexeRE
+#if PACKETVER == 20140212
+ packetKeys(0x46837074,0x65292e89,0x77237f9c);
+#endif
+
+// 2014-02-19aRagexe, 2014-02-19aRagexeRE, 2014-02-19bRagexeRE
+#if PACKETVER == 20140219
+ packetKeys(0x4e3c5327,0x3a6b5469,0x2ce36aed);
+#endif
+
+// 2014-02-26aRagexe, 2014-02-26aRagexeRE, 2014-02-26bRagexeRE
+#if PACKETVER == 20140226
+ packetKeys(0x36d71056,0x52122f5e,0x6ff76e99);
+#endif
+
+// 2014-03-05aRagexe, 2014-03-05aRagexeRE, 2014-03-05bRagexe, 2014-03-05bRagexeRE
+#if PACKETVER == 20140305
+ packetKeys(0x116763f2,0x41117dac,0x7fd13c45);
+#endif
+
+// 2014-03-12bRagexeRE, 2014-03-12dRagexe
+#if PACKETVER == 20140312
+ packetKeys(0x48911e4e,0x58cb2eb3,0x05232619);
+#endif
+
+// 2014-03-19aRagexe, 2014-03-19aRagexeRE
+#if PACKETVER == 20140319
+ packetKeys(0x3da44383,0x1abb165f,0x5b6846b9);
+#endif
+
+// 2014-03-26aRagexe, 2014-03-26cRagexeRE
+#if PACKETVER == 20140326
+ packetKeys(0x68e72af6,0x27db4c3d,0x348f2677);
+#endif
+
+// 2014-04-02eRagexeRE, 2014-04-02fRagexe, 2014-04-02fRagexeRE, 2014-04-02gRagexe
+#if PACKETVER == 20140402
+ packetKeys(0x15d3271c,0x004d725b,0x111a3a37);
+#endif
+
+// 2014-04-09aRagexe, 2014-04-09aRagexeRE, 2014-04-09bRagexe
+#if PACKETVER == 20140409
+ packetKeys(0x7f6c390f,0x139c254c,0x7f25708c);
+#endif
+
+// 2014-04-16aRagexe, 2014-04-16aRagexeRE, 2014-04-16bRagexe
+#if PACKETVER == 20140416
+ packetKeys(0x04810281,0x42814281,0x42814281);
+#endif
+
+// 2014-04-23aRagexe, 2014-04-23aRagexeRE
+#if PACKETVER == 20140423
+ packetKeys(0x7e0d6b56,0x74673cd3,0x2eba4940);
+#endif
+
+// 2014-04-30aRagexe, 2014-04-30aRagexeRE
+#if PACKETVER == 20140430
+ packetKeys(0x400145d8,0x3fe50155,0x11624f70);
+#endif
+
+// 2014-05-08bRagexe, 2014-05-08bRagexeRE
+#if PACKETVER == 20140508
+ packetKeys(0x087e57ec,0x25224f4a,0x024f12c6);
+#endif
+
+// 2014-05-14bRagexe, 2014-05-14bRagexeRE, 2014-05-14cRagexeRE
+#if PACKETVER == 20140514
+ packetKeys(0x4be46730,0x047926e0,0x37773bbb);
+#endif
+
+// 2014-05-21aRagexeRE, 2014-05-21bRagexe
+#if PACKETVER == 20140521
+ packetKeys(0x14ed2d86,0x17371c33,0x2d0473c8);
+#endif
+
+// 2014-05-28aRagexe, 2014-05-28aRagexeRE
+#if PACKETVER == 20140528
+ packetKeys(0x579445eb,0x26734878,0x7c861628);
+#endif
+
+// 2014-06-05aRagexe, 2014-06-05aRagexeRE, 2014-06-05bRagexe
+#if PACKETVER == 20140605
+ packetKeys(0x5abc4223,0x04dd2636,0x0d5850e0);
+#endif
+
+// 2014-06-11bRagexeRE, 2014-06-11cRagexe, 2014-06-11dRagexe, 2014-06-11hRagexe, 2014-06-12aRagexe, 2014-06-13aRagexe
+#if PACKETVER == 20140611 || \
+ PACKETVER == 20140612 || \
+ PACKETVER == 20140613
+ packetKeys(0x4fc83479,0x3ab04d1f,0x477b4010);
+#endif
+
+// 2014-06-18aRagexe, 2014-06-18cRagexeRE
+#if PACKETVER == 20140618
+ packetKeys(0x2db507bb,0x11ba12e7,0x7f447760);
+#endif
+
+// 2014-06-25aRagexe, 2014-06-25aRagexeRE, 2014-06-25bRagexe
+#if PACKETVER == 20140625
+ packetKeys(0x09987045,0x644b1051,0x1a091cb8);
+#endif
+
+// 2014-07-02aRagexe, 2014-07-02aRagexeRE
+#if PACKETVER == 20140702
+ packetKeys(0x5c4574f4,0x5d446386,0x48bd24c9);
+#endif
+
+// 2014-07-09aRagexe, 2014-07-09aRagexeRE
+#if PACKETVER == 20140709
+ packetKeys(0x2c7a6e92,0x324f1b85,0x29916fc2);
+#endif
+
+// 2014-07-16aRagexe, 2014-07-16aRagexeRE, 2014-07-16bRagexe, 2014-07-16cRagexe
+#if PACKETVER == 20140716
+ packetKeys(0x0eb20408,0x6d6c4292,0x4f6e4cf3);
+#endif
+
+// 2014-07-23aRagexe, 2014-07-23aRagexeRE, 2014-07-23bRagexe, 2014-07-23bRagexeRE
+#if PACKETVER == 20140723
+ packetKeys(0x42a21713,0x51ce6ead,0x102f7b0b);
+#endif
+
+// 2014-07-30aRagexe, 2014-07-30bRagexeRE
+#if PACKETVER == 20140730
+ packetKeys(0x63ce4e53,0x04f969a3,0x690954db);
+#endif
+
+// 2014-08-06aRagexe, 2014-08-06aRagexeRE, 2014-08-06bRagexe
+#if PACKETVER == 20140806
+ packetKeys(0x0d5b69ac,0x3c001f20,0x0c201420);
+#endif
+
+// 2014-08-13aRagexe, 2014-08-13aRagexeRE, 2014-08-13bRagexe, 2014-08-14aRagexe
+#if PACKETVER == 20140813 || \
+ PACKETVER == 20140814
+ packetKeys(0x7ad51e0a,0x28c72c46,0x210205bd);
+#endif
+
+// 2014-08-20aRagexe, 2014-08-20aRagexeRE
+#if PACKETVER == 20140820
+ packetKeys(0x374f15d0,0x64c87dec,0x65ce2a41);
+#endif
+
+// 2014-08-27aRagexe, 2014-08-27aRagexeRE
+#if PACKETVER == 20140827
+ packetKeys(0x53814ca2,0x27de193e,0x503e683e);
+#endif
+
+// 2014-09-03aRagexe, 2014-09-03aRagexeRE
+#if PACKETVER == 20140903
+ packetKeys(0x2f386f34,0x0f935365,0x76a43888);
+#endif
+
+// 2014-09-17aRagexe, 2014-09-17cRagexeRE
+#if PACKETVER == 20140917
+ packetKeys(0x180118ea,0x440134cf,0x3a99179d);
+#endif
+
+// 2014-09-24bRagexeRE, 2014-09-24cRagexe, 2014-09-24cRagexeRE
+#if PACKETVER == 20140924
+ packetKeys(0x6f5222d8,0x593b798c,0x4cbd655e);
+#endif
+
+// 2014-10-01aRagexe, 2014-10-01bRagexeRE, 2014-10-01cRagexeRE
+#if PACKETVER == 20141001
+ packetKeys(0x6d882c11,0x7df959e2,0x4f3f60e8);
+#endif
+
+// 2014-10-08aRagexe, 2014-10-08bRagexe, 2014-10-08bRagexeRE, 2014-10-08cRagexe, 2014-10-08cRagexeRE, 2014-10-08dRagexe
+#if PACKETVER == 20141008
+ packetKeys(0x754365b3,0x36b326b3,0x26b326b3);
+#endif
+
+// 2014-10-15bRagexe, 2014-10-15bRagexeRE, 2014-10-15cRagexe, 2014-10-15dRagexe, 2014-10-16aRagexe, 2014-10-16aRagexeRE
+#if PACKETVER == 20141015 || \
+ PACKETVER == 20141016
+ packetKeys(0x2dff467c,0x444b37ee,0x2c1b634f);
+#endif
+
+// 2014-10-22aRagexeRE, 2014-10-22bRagexe
+#if PACKETVER == 20141022
+ packetKeys(0x290551ea,0x2b952c75,0x2d67669b);
+#endif
+
+// 2014-10-29aRagexe, 2014-10-29aRagexeRE
+#if PACKETVER == 20141029
+ packetKeys(0x1afd581d,0x2e1d4e1d,0x4e1d4e1d);
+#endif
+
+// 2014-11-05aRagexe, 2014-11-05aRagexeRE, 2014-11-05bRagexe, 2014-11-05bRagexeRE
+#if PACKETVER == 20141105
+ packetKeys(0x7f310819,0x5ff45401,0x2d303dd9);
+#endif
+
+// 2014-11-12aRagexeRE, 2014-11-12cRagexe, 2014-11-12dRagexe
+#if PACKETVER == 20141112
+ packetKeys(0x430c0c27,0x067153cf,0x5e5439a9);
+#endif
+
+// 2014-11-19bRagexeRE, 2014-11-19dRagexe
+#if PACKETVER == 20141119
+ packetKeys(0x7a7e7ede,0x24eb02e3,0x71603607);
+#endif
+
+// 2014-11-26aRagexe, 2014-11-26aRagexeRE, 2014-11-26bRagexe, 2014-11-26bRagexeRE, 2014-11-26cRagexe, 2014-11-26cRagexeRE, 2014-11-26dRagexe, 2014-11-26dRagexeRE, 2014-11-26eRagexeRE
+#if PACKETVER == 20141126
+ packetKeys(0x01e14c42,0x56d73044,0x4b3278df);
+#endif
+
+// 2014-12-03aRagexe, 2014-12-03aRagexeRE
+#if PACKETVER == 20141203
+ packetKeys(0x66cb52e4,0x1eb84093,0x33563e18);
+#endif
+
+// 2014-12-10bRagexe, 2014-12-10cRagexe, 2014-12-10cRagexeRE
+#if PACKETVER == 20141210
+ packetKeys(0x0b0b1dd3,0x26ef1797,0x4f40370b);
+#endif
+
+// 2014-12-17aRagexe, 2014-12-17aRagexeRE
+#if PACKETVER == 20141217
+ packetKeys(0x01ab478c,0x0fde58f2,0x1dac7303);
+#endif
+
+// 2014-12-23cRagexeRE, 2014-12-24aRagexe
+#if PACKETVER == 20141223 || \
+ PACKETVER == 20141224
+ packetKeys(0x2e8936e6,0x34463c46,0x67cd3885);
+#endif
+
+// 2014-12-31aRagexe, 2014-12-31aRagexeRE
+#if PACKETVER == 20141231
+ packetKeys(0x154c347e,0x54b26512,0x52126a12);
+#endif
+
+// 2015-01-07aRagexe, 2015-01-07aRagexeRE
+#if PACKETVER == 20150107
+ packetKeys(0x6c494a14,0x4ddb6427,0x3e6d7b65);
+#endif
+
+// 2015-01-14aRagexe, 2015-01-14aRagexeRE, 2015-01-14bRagexe, 2015-01-14cRagexe, 2015-01-14dRagexe
+#if PACKETVER == 20150114
+ packetKeys(0x21c96102,0x13142934,0x1abf4ea3);
+#endif
+
+// 2015-01-21aRagexe, 2015-01-21aRagexeRE, 2015-01-21bRagexeRE
+#if PACKETVER == 20150121
+ packetKeys(0x0b9d2af5,0x658a3346,0x379e3654);
+#endif
+
+// 2015-01-28aRagexe, 2015-01-28aRagexeRE, 2015-01-29aRagexe, 2015-01-30aRagexe
+#if PACKETVER == 20150128 || \
+ PACKETVER == 20150129 || \
+ PACKETVER == 20150130
+ packetKeys(0x77ca2d55,0x28b608f0,0x75b47957);
+#endif
+
+// 2015-02-04aRagexe, 2015-02-04cRagexeRE
+#if PACKETVER == 20150204
+ packetKeys(0x134529db,0x5b4f6cef,0x29ef11ef);
+#endif
+
+// 2015-02-11aRagexe, 2015-02-11aRagexeRE
+#if PACKETVER == 20150211
+ packetKeys(0x33911a25,0x1e6945fd,0x7385623a);
+#endif
+
+// 2015-02-17aRagexe, 2015-02-17aRagexeRE
+#if PACKETVER == 20150217
+ packetKeys(0x731b731b,0x731b731b,0x731b731b);
+#endif
+
+// 2015-02-25aRagexeRE, 2015-02-25bRagexeRE, 2015-02-25cRagexeRE, 2015-02-25dRagexeRE, 2015-02-25eRagexe, 2015-02-25eRagexeRE, 2015-02-25fRagexe, 2015-02-25gRagexe, 2015-02-25iRagexe, 2015-02-25jRagexe, 2015-02-26aRagexe, 2015-02-26aRagexeRE
+#if PACKETVER == 20150225 || \
+ PACKETVER == 20150226
+ packetKeys(0x57fd4b7b,0x19cc16fb,0x0d255d72);
+#endif
+
+// 2015-03-04aRagexe, 2015-03-04aRagexeRE, 2015-03-04bRagexeRE
+#if PACKETVER == 20150304
+ packetKeys(0x1a657b1c,0x7e1806e7,0x55396a5c);
+#endif
+
+// 2015-03-11aRagexe, 2015-03-11aRagexeRE, 2015-03-11bRagexe, 2015-03-11bRagexeRE
+#if PACKETVER == 20150311
+ packetKeys(0x48c45d97,0x06ce09b0,0x5836642f);
+#endif
+
+// 2015-03-18aRagexe, 2015-03-18aRagexeRE, 2015-03-18bRagexe, 2015-03-18bRagexeRE, 2015-03-18cRagexeRE
+#if PACKETVER == 20150318
+ packetKeys(0x1b3738e7,0x0ad4238f,0x7d252a1f);
+#endif
+
+// 2015-03-25aRagexe, 2015-03-25bRagexeRE, 2015-03-25cRagexeRE
+#if PACKETVER == 20150325
+ packetKeys(0x68f62b8c,0x337c3468,0x38fc0ac7);
+#endif
+
+// 2015-04-01aRagexe, 2015-04-01bRagexeRE
+#if PACKETVER == 20150401
+ packetKeys(0x207f3a08,0x57e6160c,0x02a60382);
+#endif
+
+// 2015-04-08aRagexe, 2015-04-08aRagexeRE
+#if PACKETVER == 20150408
+ packetKeys(0x39812c9d,0x23da516e,0x59a33dd2);
+#endif
+
+// 2015-04-15aRagexe, 2015-04-15aRagexeRE
+#if PACKETVER == 20150415
+ packetKeys(0x7ec44f6a,0x7de57139,0x60da5436);
+#endif
+
+// 2015-04-22aRagexe, 2015-04-22aRagexeRE
+#if PACKETVER == 20150422
+ packetKeys(0x10d22ce2,0x69e279e2,0x79e279e2);
+#endif
+
+// 2015-04-29aRagexe, 2015-04-29aRagexeRE
+#if PACKETVER == 20150429
+ packetKeys(0x2bf61a71,0x565d5ddf,0x0fb90019);
+#endif
+
+// 2015-05-07bRagexe, 2015-05-07bRagexeRE, 2015-05-07cRagexe
+#if PACKETVER == 20150507
+ packetKeys(0x55b54373,0x58967821,0x67f41832);
+#endif
+
+// 2015-05-13aRagexe, 2015-05-13aRagexeRE
+#if PACKETVER == 20150513
+ packetKeys(0x62c86d09,0x75944f17,0x112c133d);
+#endif
+
+// 2015-05-20aRagexe, 2015-05-20aRagexeRE
+#if PACKETVER == 20150520
+ packetKeys(0x17430238,0x44de585f,0x56a40616);
+#endif
+
+// 2015-05-27aRagexe, 2015-05-27aRagexeRE
+#if PACKETVER == 20150527
+ packetKeys(0x35ae7bae,0x3bae3bae,0x3bae3bae);
+#endif
+
+// 2015-06-03aRagexe, 2015-06-03bRagexeRE
+#if PACKETVER == 20150603
+ packetKeys(0x1ddd245d,0x309446e0,0x58e53f1f);
+#endif
+
+// 2015-06-10aRagexe, 2015-06-10aRagexeRE
+#if PACKETVER == 20150610
+ packetKeys(0x2fc406d3,0x7b3e32f5,0x02b80b47);
+#endif
+
+// 2015-06-17aRagexe, 2015-06-17aRagexeRE, 2015-06-18aRagexe, 2015-06-18aRagexeRE
+#if PACKETVER == 20150617 || \
+ PACKETVER == 20150618
+ packetKeys(0x250f7e09,0x25416076,0x029a780e);
+#endif
+
+// 2015-06-24aRagexe, 2015-06-24aRagexeRE
+#if PACKETVER == 20150624
+ packetKeys(0x440b0e24,0x1bea7a4c,0x2c646784);
+#endif
+
+// 2015-07-01bRagexe, 2015-07-01bRagexeRE, 2015-07-02aRagexe
+#if PACKETVER == 20150701 || \
+ PACKETVER == 20150702
+ packetKeys(0x4dd55f9b,0x70c67b03,0x78c60db6);
+#endif
+
+// 2015-07-08bRagexeRE, 2015-07-08cRagexe, 2015-07-08cRagexeRE, 2015-07-08dRagexeRE
+#if PACKETVER == 20150708
+ packetKeys(0x451c5e19,0x5661750b,0x2f4644ac);
+#endif
+
+// 2015-07-15aRagexe, 2015-07-15aRagexeRE
+#if PACKETVER == 20150715
+ packetKeys(0x1f805483,0x67745585,0x7fce189c);
+#endif
+
+// 2015-07-22bRagexe, 2015-07-22bRagexeRE
+#if PACKETVER == 20150722
+ packetKeys(0x41fa53d4,0x2cf044e2,0x663a3f1d);
+#endif
+
+// 2015-07-29aRagexe, 2015-07-29aRagexeRE
+#if PACKETVER == 20150729
+ packetKeys(0x08ee40a9,0x206f3d7f,0x0ae37339);
+#endif
+
+// 2015-08-05aRagexe, 2015-08-05dRagexeRE
+#if PACKETVER == 20150805
+ packetKeys(0x1c3f243f,0x243f243f,0x243f243f);
+#endif
+
+// 2015-08-12aRagexe, 2015-08-12aRagexeRE
+#if PACKETVER == 20150812
+ packetKeys(0x0b6f64a8,0x5bcc47ec,0x00ec08ec);
+#endif
+
+// 2015-08-19aRagexe, 2015-08-19aRagexeRE, 2015-08-19bRagexeRE
+#if PACKETVER == 20150819
+ packetKeys(0x1a2400e0,0x736e5686,0x10f315d5);
+#endif
+
+// 2015-08-26aRagexe, 2015-08-26aRagexeRE, 2015-08-26bRagexe, 2015-08-26bRagexeRE
+#if PACKETVER == 20150826
+ packetKeys(0x77883c56,0x1829359f,0x0de635b6);
+#endif
+
+// 2015-09-02aRagexe, 2015-09-02aRagexeRE
+#if PACKETVER == 20150902
+ packetKeys(0x4edb18c1,0x6b9355ba,0x38aa6239);
+#endif
+
+// 2015-09-09aRagexe, 2015-09-09aRagexeRE
+#if PACKETVER == 20150909
+ packetKeys(0x19ab2bf0,0x04754299,0x48770736);
+#endif
+
+// 2015-09-16aRagexe, 2015-09-16cRagexe, 2015-09-16cRagexeRE
+#if PACKETVER == 20150916
+ packetKeys(0x17f83a19,0x116944f4,0x1cc541e9);
+#endif
+
+// 2015-09-23bRagexe, 2015-09-23bRagexeRE, 2015-09-23cRagexe, 2015-09-23dRagexe, 2015-09-23eRagexe, 2015-09-23eRagexeRE, 2015-09-23fRagexe, 2015-09-23fRagexeRE
+#if PACKETVER == 20150923
+ packetKeys(0x765742b9,0x22d61c2f,0x7da94fb2);
+#endif
+
+// 2015-10-01aRagexe, 2015-10-01bRagexeRE
+#if PACKETVER == 20151001
+ packetKeys(0x5cff4561,0x32514ad1,0x06d126d1);
+#endif
+
+// 2015-10-07aRagexe, 2015-10-07aRagexeRE
+#if PACKETVER == 20151007
+ packetKeys(0x3c6447a8,0x032170d7,0x6490476c);
+#endif
+
+// 2015-10-14bRagexe, 2015-10-14bRagexeRE
+#if PACKETVER == 20151014
+ packetKeys(0x402728a8,0x5d0e309f,0x240018fd);
+#endif
+
+// 2015-10-21aRagexe, 2015-10-21aRagexeRE, 2015-10-22aRagexe, 2015-10-22aRagexeRE
+#if PACKETVER == 20151021 || \
+ PACKETVER == 20151022
+ packetKeys(0x0311104d,0x46c326d6,0x00e82720);
+#endif
+
+// 2015-10-28bRagexeRE, 2015-10-28bRagexeRE_2, 2015-10-28cRagexe, 2015-10-28cRagexeRE, 2015-10-28dRagexe, 2015-10-28dRagexeRE, 2015-10-29aRagexe, 2015-10-29aRagexeRE
+#if PACKETVER == 20151028 || \
+ PACKETVER == 20151029
+ packetKeys(0x45b945b9,0x45b945b9,0x45b945b9);
+#endif
+
+// 2015-11-04aRagexe, 2015-11-04aRagexeRE
+#if PACKETVER == 20151104
+ packetKeys(0x4c17382a,0x7ed174c9,0x29961e4f);
+#endif
+
+// 2015-11-11aRagexe, 2015-11-11aRagexeRE, 2015-11-11bRagexe
+#if PACKETVER == 20151111
+ packetKeys(0x46097c77,0x5f193871,0x29140a21);
+#endif
+
+// 2015-11-18aRagexe, 2015-11-18aRagexeRE
+#if PACKETVER == 20151118
+ packetKeys(0x734c3241,0x6e846f34,0x731c06d6);
+#endif
+
+// 2015-11-25bRagexe, 2015-11-25bRagexeRE, 2015-11-25cRagexeRE, 2015-11-25dRagexe, 2015-11-25dRagexeRE
+#if PACKETVER == 20151125
+ packetKeys(0x237446c0,0x5efb343a,0x0edf06c5);
+#endif
+
+// 2015-12-02aRagexe, 2015-12-02bRagexeRE
+#if PACKETVER == 20151202
+ packetKeys(0x4ede52de,0x52de52de,0x52de52de);
+#endif
+
+// 2015-12-09aRagexe, 2015-12-09aRagexeRE
+#if PACKETVER == 20151209
+ packetKeys(0x652c5898,0x7a351fb3,0x67ea2886);
+#endif
+
+// 2015-12-16aRagexe, 2015-12-16aRagexeRE
+#if PACKETVER == 20151216
+ packetKeys(0x25dd643d,0x61ac39de,0x77a8206d);
+#endif
+
+// 2015-12-23bRagexe, 2015-12-23bRagexeRE
+#if PACKETVER == 20151223
+ packetKeys(0x347d68d0,0x2c705320,0x7b4a199d);
+#endif
+
+// 2015-12-30aRagexe, 2015-12-30aRagexeRE
+#if PACKETVER == 20151230
+ packetKeys(0x54c51241,0x33883499,0x3cda35f0);
+#endif
+
+// 2016-01-06aRagexe, 2016-01-06aRagexeRE
+#if PACKETVER == 20160106
+ packetKeys(0x40520265,0x33fe26fc,0x7136294f);
+#endif
+
+// 2016-01-13aRagexe, 2016-01-13aRagexeRE, 2016-01-13bRagexe, 2016-01-13bRagexeRE, 2016-01-13bRagexeRE_2, 2016-01-13bRagexe_2, 2016-01-13cRagexeRE
+#if PACKETVER == 20160113
+ packetKeys(0x18005c4b,0x19a94a72,0x73f678ec);
+#endif
+
+// 2016-01-20aRagexe, 2016-01-20aRagexeRE
+#if PACKETVER == 20160120
+ packetKeys(0x51495149,0x51495149,0x51495149);
+#endif
+
+// 2016-01-27aRagexeRE, 2016-01-27aRagexeRE_2, 2016-01-27bRagexeRE, 2016-01-27cRagexe, 2016-01-27dRagexe
+#if PACKETVER == 20160127
+ packetKeys(0x6b1e7146,0x612c47e6,0x274e56ee);
+#endif
+
+// 2016-02-03aRagexe, 2016-02-03aRagexeRE
+#if PACKETVER == 20160203
+ packetKeys(0x3e1411af,0x6c744497,0x7cfa1bde);
+#endif
+
+// 2016-02-11aRagexe, 2016-02-11aRagexeRE
+#if PACKETVER == 20160211
+ packetKeys(0x613813ea,0x05251dab,0x1fd35e33);
+#endif
+
+// 2016-02-17aRagexe, 2016-02-17aRagexeRE, 2016-02-17bRagexeRE, 2016-02-17bRagexeRE_2, 2016-02-17cRagexeRE
+#if PACKETVER == 20160217
+ packetKeys(0x25895a8e,0x09421c19,0x763a2d7a);
+#endif
+
+// 2016-02-24aRagexe, 2016-02-24aRagexeRE, 2016-02-24bRagexeRE
+#if PACKETVER == 20160224
+ packetKeys(0x7088019a,0x13471f02,0x42356a7d);
+#endif
+
+// 2016-03-02bRagexe, 2016-03-02bRagexeRE
+#if PACKETVER == 20160302
+ packetKeys(0x7b4441b9,0x5bbc63af,0x45da0e71);
+#endif
+
+// 2016-03-09aRagexeRE, 2016-03-09cRagexe
+#if PACKETVER == 20160309
+ packetKeys(0x21587520,0x353a7706,0x1b722b25);
+#endif
+
+// 2016-03-16aRagexe, 2016-03-16aRagexeRE, 2016-03-18aRagexe
+#if PACKETVER == 20160316 || \
+ PACKETVER == 20160318
+ packetKeys(0x62363e36,0x3e363e36,0x3e363e36);
+#endif
+
+// 2016-03-23aRagexe, 2016-03-23aRagexeRE, 2016-03-23bRagexe, 2016-03-23bRagexeRE
+#if PACKETVER == 20160323
+ packetKeys(0x73e35a83,0x62142fa8,0x12ba36bd);
+#endif
+
+// 2016-03-30aRagexe, 2016-03-30aRagexeRE, 2016-03-30bRagexe
+#if PACKETVER == 20160330
+ packetKeys(0x02050940,0x545336ff,0x7e7d4902);
+#endif
+
+// 2016-04-06aRagexe, 2016-04-06aRagexeRE, 2016-04-06bRagexe
+#if PACKETVER == 20160406
+ packetKeys(0x568611ea,0x32457d8d,0x2b020477);
+#endif
+
+// 2016-04-14aRagexe, 2016-04-14aRagexeRE, 2016-04-14bRagexe, 2016-04-14bRagexeRE, 2016-04-14bRagexe_2, 2016-04-14cRagexe
+#if PACKETVER == 20160414
+ packetKeys(0x31bd479a,0x40c61398,0x397c1a80);
+#endif
+
+// 2016-04-20aRagexeRE, 2016-04-20cRagexe
+#if PACKETVER == 20160420
+ packetKeys(0x67d2163a,0x3068215b,0x4835474d);
+#endif
+
+// 2016-04-27aRagexe, 2016-04-27aRagexeRE
+#if PACKETVER == 20160427
+ packetKeys(0x12dc378e,0x4e3e7ebe,0x0abe2abe);
+#endif
+
+// 2016-05-04aRagexe, 2016-05-04aRagexeRE
+#if PACKETVER == 20160504
+ packetKeys(0x09e0544c,0x0231251d,0x2f4e195f);
+#endif
+
+// 2016-05-11aRagexe, 2016-05-11aRagexeRE, 2016-05-11bRagexeRE
+#if PACKETVER == 20160511
+ packetKeys(0x3c666fe2,0x27e84e3e,0x53e11ba5);
+#endif
+
+// 2016-05-18aRagexe, 2016-05-18aRagexeRE
+#if PACKETVER == 20160518
+ packetKeys(0x57db7ca1,0x1fea1629,0x26dd244d);
+#endif
+
+// 2016-05-25aRagexe, 2016-05-25aRagexeRE, 2016-05-26aRagexe
+#if PACKETVER == 20160525 || \
+ PACKETVER == 20160526
+ packetKeys(0x485c45b6,0x47dc6192,0x76b34a36);
+#endif
+
+// 2016-06-01aRagexe, 2016-06-01aRagexeRE
+#if PACKETVER == 20160601
+ packetKeys(0x3dad32c4,0x59f001be,0x73f65e56);
+#endif
+
+// 2016-06-08aRagexe, 2016-06-08aRagexeRE, 2016-06-08bRagexe, 2016-06-08bRagexeRE, 2016-06-09aRagexe
+#if PACKETVER == 20160608 || \
+ PACKETVER == 20160609
+ packetKeys(0x11d74609,0x77c43e8a,0x44290f53);
+#endif
+
+// 2016-06-15aRagexe, 2016-06-15aRagexeRE
+#if PACKETVER == 20160615
+ packetKeys(0x062c5c26,0x6cf47e82,0x4dd53480);
+#endif
+
+// 2016-06-22aRagexe, 2016-06-22aRagexeRE
+#if PACKETVER == 20160622
+ packetKeys(0x426548ab,0x5c0f5dd4,0x03022710);
+#endif
+
+// 2016-06-29aRagexe, 2016-06-29aRagexeRE, 2016-06-30aRagexe, 2016-06-30aRagexeRE
+#if PACKETVER == 20160629 || \
+ PACKETVER == 20160630
+ packetKeys(0x0df31ccc,0x54281606,0x5c4c6855);
+#endif
+
+// 2016-07-06bRagexe, 2016-07-06cRagexeRE
+#if PACKETVER == 20160706
+ packetKeys(0x33a766d0,0x743f04f8,0x0fa0276c);
+#endif
+
+// 2016-07-13aRagexe, 2016-07-13aRagexeRE, 2016-07-13bRagexe, 2016-07-13bRagexeRE, 2016-07-13cRagexe, 2016-07-13dRagexe
+#if PACKETVER == 20160713
+ packetKeys(0x714f2495,0x7ddc6f32,0x3fd8533d);
+#endif
+
+// 2016-07-20aRagexe, 2016-07-20aRagexeRE, 2016-07-20bRagexe, 2016-07-20bRagexeRE
+#if PACKETVER == 20160720
+ packetKeys(0x4f8a19c0,0x2d8e085c,0x37bb67d6);
+#endif
+
+// 2016-07-27aRagexe, 2016-07-27aRagexeRE, 2016-07-27bRagexe, 2016-07-27bRagexeRE
+#if PACKETVER == 20160727
+ packetKeys(0x3c6952ab,0x26e4077f,0x37e25df7);
+#endif
+
+// 2016-08-03bRagexe, 2016-08-03bRagexeRE
+#if PACKETVER == 20160803
+ packetKeys(0x67f438c2,0x512a4eb7,0x2d353182);
+#endif
+
+// 2016-08-10aRagexe, 2016-08-10aRagexeRE
+#if PACKETVER == 20160810
+ packetKeys(0x2f252886,0x242234a2,0x48bc5032);
+#endif
+
+// 2016-08-17aRagexe, 2016-08-17aRagexeRE
+#if PACKETVER == 20160817
+ packetKeys(0x675e6900,0x3f8e1d16,0x58d650e5);
+#endif
+
+// 2016-08-24aRagexe, 2016-08-24aRagexeRE
+#if PACKETVER == 20160824
+ packetKeys(0x2fa92fa9,0x2fa92fa9,0x2fa92fa9);
+#endif
+
+// 2016-08-31aRagexe, 2016-08-31aRagexeRE, 2016-08-31bRagexe, 2016-08-31bRagexeRE
+#if PACKETVER == 20160831
+ packetKeys(0x564e13b0,0x7f680549,0x382d273b);
+#endif
+
+// 2016-09-07aRagexe, 2016-09-07aRagexeRE
+#if PACKETVER == 20160907
+ packetKeys(0x32e5237d,0x57bd4dbd,0x5dbd5dbd);
+#endif
+
+// 2016-09-13aRagexe, 2016-09-13aRagexeRE
+#if PACKETVER == 20160913
+ packetKeys(0x7c79748f,0x1aa03b1d,0x6eac4747);
+#endif
+
+// 2016-09-21aRagexe, 2016-09-21bRagexeRE
+#if PACKETVER == 20160921
+ packetKeys(0x11cd15cd,0x15cd15cd,0x15cd15cd);
+#endif
+
+// 2016-09-28cRagexe, 2016-09-28cRagexeRE, 2016-09-28dRagexeRE
+#if PACKETVER == 20160928
+ packetKeys(0x2f8c67f5,0x22d42c38,0x57513774);
+#endif
+
+// 2016-10-05aRagexe, 2016-10-05aRagexeRE
+#if PACKETVER == 20161005
+ packetKeys(0x5bae21f8,0x021e2ffc,0x3beb7c31);
+#endif
+
+// 2016-10-12aRagexe, 2016-10-12aRagexeRE
+#if PACKETVER == 20161012
+ packetKeys(0x5e2311f2,0x14fd012c,0x76eb64f6);
+#endif
+
+// 2016-10-19aRagexe, 2016-10-19aRagexeRE
+#if PACKETVER == 20161019
+ packetKeys(0x34882f11,0x7c870e70,0x7e61350d);
+#endif
+
+// 2016-10-26bRagexe, 2016-10-26bRagexeRE, 2016-10-26cRagexe, 2016-10-26cRagexeRE
+#if PACKETVER == 20161026
+ packetKeys(0x2cb86ae6,0x7d12660e,0x1b004deb);
+#endif
+
+// 2016-11-02aRagexe, 2016-11-02aRagexeRE, 2016-11-03aRagexe, 2016-11-03aRagexeRE
+#if PACKETVER == 20161102 || \
+ PACKETVER == 20161103
+ packetKeys(0x76725c17,0x72fe4ec1,0x07a91bfd);
+#endif
+
+// 2016-11-09aRagexe, 2016-11-09aRagexeRE, 2016-11-09bRagexe, 2016-11-09bRagexeRE, 2016-11-09cRagexeRE, 2016-11-09dRagexeRE
+#if PACKETVER == 20161109
+ packetKeys(0x0a5277c0,0x2db17506,0x0e8f26da);
+#endif
+
+// 2016-11-16aRagexe, 2016-11-16bRagexeRE, 2016-11-16cRagexeRE
+#if PACKETVER == 20161116
+ packetKeys(0x780c5c3f,0x15e92272,0x2ba770c5);
+#endif
+
+// 2016-11-23aRagexe, 2016-11-23aRagexeRE
+#if PACKETVER == 20161123
+ packetKeys(0x66ff559f,0x00d3535b,0x236246f7);
+#endif
+
+// 2016-11-30aRagexe, 2016-11-30aRagexeRE, 2016-11-30bRagexe, 2016-11-30bRagexeRE
+#if PACKETVER == 20161130
+ packetKeys(0x2ed80296,0x0d837373,0x20266f9a);
+#endif
+
+// 2016-12-07cRagexe, 2016-12-07cRagexeRE, 2016-12-07dRagexeRE, 2016-12-07eRagexe, 2016-12-07eRagexeRE
+#if PACKETVER == 20161207
+ packetKeys(0x52d267aa,0x4fe42156,0x1292153e);
+#endif
+
+// 2016-12-14bRagexe, 2016-12-14bRagexeRE, 2016-12-14cRagexe, 2016-12-14cRagexeRE
+#if PACKETVER == 20161214
+ packetKeys(0x4dde217b,0x07863ae0,0x5b591656);
+#endif
+
+// 2016-12-21aRagexe, 2016-12-21aRagexeRE, 2016-12-21bRagexe, 2016-12-21bRagexeRE, 2016-12-21cRagexeRE, 2016-12-21dRagexeRE
+#if PACKETVER == 20161221
+ packetKeys(0x69cb4f56,0x793c165e,0x673a2354);
+#endif
+
+// 2016-12-28aRagexe, 2016-12-28aRagexeRE
+#if PACKETVER == 20161228
+ packetKeys(0x09366971,0x005672f1,0x6f3712ae);
+#endif
+
+// 2017-01-04aRagexe, 2017-01-04bRagexeRE
+#if PACKETVER == 20170104
+ packetKeys(0x44416bc3,0x6c8d1817,0x072d75d5);
+#endif
+
+// 2017-01-11aRagexe, 2017-01-11aRagexeRE
+#if PACKETVER == 20170111
+ packetKeys(0x19b637f9,0x0e9c378a,0x41673186);
+#endif
+
+// 2017-01-18aRagexe, 2017-01-18aRagexeRE
+#if PACKETVER == 20170118
+ packetKeys(0x456b36eb,0x15eb34b0,0x18c42e43);
+#endif
+
+// 2017-01-25aRagexe, 2017-01-25aRagexeRE
+#if PACKETVER == 20170125
+ packetKeys(0x066e04fe,0x3004224a,0x04ff0458);
+#endif
+
+// 2017-02-01aRagexe, 2017-02-01aRagexeRE
+#if PACKETVER == 20170201
+ packetKeys(0x2011228e,0x00453005,0x628e7f0a);
+#endif
+
+// 2017-02-08aRagexeRE, 2017-02-08bRagexe, 2017-02-08bRagexeRE
+#if PACKETVER == 20170208
+ packetKeys(0x6a764e5f,0x0609570d,0x28ae07fa);
+#endif
+
+// 2017-02-15aRagexe, 2017-02-15aRagexeRE
+#if PACKETVER == 20170215
+ packetKeys(0x50c01315,0x51012a42,0x679e16c3);
+#endif
+
+// 2017-02-22aRagexe, 2017-02-22aRagexeRE
+#if PACKETVER == 20170222
+ packetKeys(0x5a242f2f,0x6c556187,0x73c022cb);
+#endif
+
+// 2017-02-28aRagexe, 2017-02-28aRagexeRE, 2017-02-28bRagexe
+#if PACKETVER == 20170228
+ packetKeys(0x771d4f2b,0x20ef1f4c,0x0d5135c8);
+#endif
+
+// 2017-03-08aRagexe, 2017-03-08bRagexeRE
+#if PACKETVER == 20170308
+ packetKeys(0x653470a9,0x6b316a71,0x5c712c71);
+#endif
+
+// 2017-03-15cRagexe, 2017-03-15cRagexeRE
+#if PACKETVER == 20170315
+ packetKeys(0x399a0856,0x56642a94,0x7f77157d);
+#endif
+
+// 2017-03-22aRagexe, 2017-03-22aRagexeRE, 2017-03-22bRagexe, 2017-03-22bRagexeRE
+#if PACKETVER == 20170322
+ packetKeys(0x2050167b,0x01731233,0x40337033);
+#endif
+
+// 2017-03-29bRagexe, 2017-03-29cRagexe, 2017-03-29cRagexeRE, 2017-03-29dRagexeRE
+#if PACKETVER == 20170329
+ packetKeys(0x18b31a80,0x1b0b1d56,0x16857d6a);
+#endif
+
+// 2017-04-05bRagexe, 2017-04-05bRagexeRE, 2017-04-05cRagexe, 2017-04-05cRagexeRE
+#if PACKETVER == 20170405
+ packetKeys(0x1fde7dac,0x2f9f5b63,0x3f2062af);
+#endif
+
+// 2017-04-12aRagexe, 2017-04-12aRagexeRE
+#if PACKETVER == 20170412
+ packetKeys(0x39223393,0x5c847779,0x10217985);
+#endif
+
+// 2017-04-19aRagexe, 2017-04-19bRagexeRE
+#if PACKETVER == 20170419
+ packetKeys(0x1f8f4b3f,0x2e481f03,0x39ed4178);
+#endif
+
+// 2017-04-26bRagexe, 2017-04-26dRagexeRE
+#if PACKETVER == 20170426
+ packetKeys(0x167642a7,0x1dec3d26,0x6d046d4c);
+#endif
+
+// 2017-05-02aRagexe, 2017-05-02bRagexe, 2017-05-02dRagexeRE
+#if PACKETVER == 20170502
+ packetKeys(0x05224194,0x466d4204,0x31f02ee0);
+#endif
+
+// 2017-05-17aRagexe, 2017-05-17aRagexeRE, 2017-05-17bRagexeRE
+#if PACKETVER == 20170517
+ packetKeys(0x2cc4749a,0x1fa954dc,0x72276857);
+#endif
+
+// 2017-05-24aRagexe, 2017-05-24aRagexeRE, 2017-05-24bRagexe
+#if PACKETVER == 20170524
+ packetKeys(0x0b4e03a6,0x2b93427c,0x583d4477);
+#endif
+
+// 2017-05-31aRagexe, 2017-05-31aRagexeRE
+#if PACKETVER == 20170531
+ packetKeys(0x03fa5a97,0x20b802d5,0x339f1977);
+#endif
+
+// 2017-06-07bRagexeRE, 2017-06-07cRagexe, 2017-06-07cRagexeRE
+#if PACKETVER == 20170607
+ packetKeys(0x50564acd,0x79ca4e15,0x405f4894);
+#endif
+
+// 2017-06-14bRagexe, 2017-06-14bRagexeRE
+#if PACKETVER == 20170614
+ packetKeys(0x5ed10a48,0x667f4301,0x2e5d761f);
+#endif
+
+// 2017-06-21aRagexeRE, 2017-06-21bRagexe
+#if PACKETVER == 20170621
+ packetKeys(0x155f34ec,0x2d943fa9,0x3d9170eb);
+#endif
+
+// 2017-06-28bRagexe, 2017-06-28bRagexeRE
+#if PACKETVER == 20170628
+ packetKeys(0x04691c86,0x43c210e2,0x2fe277e2);
+#endif
+
+// 2017-07-05aRagexe, 2017-07-05aRagexeRE
+#if PACKETVER == 20170705
+ packetKeys(0x7eb000ae,0x02fb1dbc,0x5cb131e6);
+#endif
+
+// 2017-07-12bRagexe, 2017-07-12bRagexeRE
+#if PACKETVER == 20170712
+ packetKeys(0x2c3c202c,0x3f2c2f2c,0x2f2c2f2c);
+#endif
+
+// 2017-07-19aRagexe, 2017-07-19aRagexeRE
+#if PACKETVER == 20170719
+ packetKeys(0x46465c88,0x10116f66,0x200866f9);
+#endif
+
+// 2017-07-26aRagexe, 2017-07-26cRagexeRE
+#if PACKETVER == 20170726
+ packetKeys(0x102f23db,0x7e767751,0x3bc172ef);
+#endif
+
+// 2017-08-01aRagexe, 2017-08-01aRagexeRE, 2017-08-01bRagexe
+#if PACKETVER == 20170801
+ packetKeys(0x26b52a7f,0x5377619d,0x4f580ac4);
+#endif
+
+// 2017-08-09cRagexe, 2017-08-09cRagexeRE
+#if PACKETVER == 20170809
+ packetKeys(0x452156cb,0x71442624,0x2ee66d1c);
+#endif
+
+// 2017-08-16cRagexe, 2017-08-16cRagexeRE, 2017-08-16dRagexe, 2017-08-16dRagexeRE
+#if PACKETVER == 20170816
+ packetKeys(0x78914673,0x3f8b7634,0x55b814bc);
+#endif
+
+// 2017-08-23aRagexe, 2017-08-23aRagexeRE
+#if PACKETVER == 20170823
+ packetKeys(0x22677205,0x393d1002,0x58dc6bb4);
+#endif
+
+// 2017-08-30aRagexe, 2017-08-30aRagexeRE, 2017-08-30bRagexe, 2017-08-30bRagexeRE
+#if PACKETVER == 20170830
+ packetKeys(0x1d49592b,0x00970c17,0x1e640103);
+#endif
+
+// 2017-09-06cRagexe, 2017-09-06cRagexeRE
+#if PACKETVER == 20170906
+ packetKeys(0x7def7677,0x351f36e6,0x52303485);
+#endif
+
+// 2017-09-13bRagexeRE, 2017-09-13cRagexe
+#if PACKETVER == 20170913
+ packetKeys(0x7a645935,0x1da05062,0x5a7a4c43);
+#endif
+
+// 2017-09-20aRagexe, 2017-09-20bRagexeRE
+#if PACKETVER == 20170920
+ packetKeys(0x53024da5,0x04ec212d,0x0bf87cd4);
+#endif
+
+// 2017-09-27bRagexe, 2017-09-27bRagexeRE, 2017-09-27cRagexe, 2017-09-27dRagexe, 2017-09-27dRagexeRE
+#if PACKETVER == 20170927
+ packetKeys(0x15624100,0x0ce1463e,0x0e5d6534);
+#endif
+
+// 2017-10-02cRagexe, 2017-10-02cRagexeRE
+#if PACKETVER == 20171002
+ packetKeys(0x15e1716c,0x4e765b63,0x357d2370);
+#endif
+
+// 2017-10-11aRagexe, 2017-10-11aRagexeRE, 2017-10-11bRagexe, 2017-10-11bRagexeRE
+#if PACKETVER == 20171011
+ packetKeys(0x4f121b3e,0x12670e17,0x19896c11);
+#endif
+
+// 2017-10-18aRagexe, 2017-10-18aRagexeRE
+#if PACKETVER == 20171018
+ packetKeys(0x2caa109c,0x158c1ec2,0x7a5e58f3);
+#endif
+
+// 2017-10-25bRagexe, 2017-10-25bRagexeRE, 2017-10-25cRagexe, 2017-10-25cRagexeRE, 2017-10-25dRagexe, 2017-10-25dRagexeRE, 2017-10-25eRagexe, 2017-10-25eRagexeRE
+#if PACKETVER == 20171025
+ packetKeys(0x165c565c,0x565c565c,0x565c565c);
+#endif
+
+// 2017-11-01aRagexe, 2017-11-01bRagexeRE
+#if PACKETVER == 20171101
+ packetKeys(0x7056317f,0x7eee0589,0x02672373);
+#endif
+
+// 2017-11-08aRagexe, 2017-11-08bRagexeRE
+#if PACKETVER == 20171108
+ packetKeys(0x03695685,0x7fac12ce,0x182f7a7b);
+#endif
+
+// 2017-11-15aRagexe, 2017-11-15aRagexeRE
+#if PACKETVER == 20171115
+ packetKeys(0x23b97a3b,0x34610993,0x2892070e);
+#endif
+
+// 2017-11-22aRagexe, 2017-11-22bRagexeRE
+#if PACKETVER == 20171122
+ packetKeys(0x03221b0e,0x73ab7a5f,0x0dd80fd4);
+#endif
+
+// 2017-11-29aRagexe, 2017-11-29aRagexeRE
+#if PACKETVER == 20171129
+ packetKeys(0x581b77a7,0x62f74d7a,0x4f102173);
+#endif
+
+// 2017-12-06aRagexeRE, 2017-12-06bRagexe, 2017-12-06cRagexe
+#if PACKETVER == 20171206
+ packetKeys(0x39d54bd3,0x577a0c21,0x4c1c316e);
+#endif
+
+// 2017-12-13bRagexe, 2017-12-13bRagexeRE
+#if PACKETVER == 20171213
+ packetKeys(0x44e41107,0x3b126921,0x00e06aac);
+#endif
+
+// 2017-12-20aRagexe, 2017-12-20aRagexeRE
+#if PACKETVER == 20171220
+ packetKeys(0x6efe009a,0x440b7bfa,0x052339c8);
+#endif
+
+// 2017-12-27aRagexe, 2017-12-27aRagexeRE
+#if PACKETVER == 20171227
+ packetKeys(0x257a2f6e,0x51140eee,0x00fa4452);
+#endif
+
+// 2018-01-03aRagexe, 2018-01-03aRagexeRE, 2018-01-03bRagexe, 2018-01-03bRagexeRE
+#if PACKETVER == 20180103
+ packetKeys(0x348f4bd7,0x7a425a54,0x628f589a);
+#endif
+
+// 2018-01-17aRagexe, 2018-01-17aRagexeRE
+#if PACKETVER == 20180117
+ packetKeys(0x21f477f4,0x37f437f4,0x37f437f4);
+#endif
+
+// 2018-01-24bRagexe, 2018-01-24bRagexeRE, 2018-01-31Ragexe
+#if PACKETVER == 20180124 || \
+ PACKETVER == 20180131
+ packetKeys(0x7eaa1ce0,0x415d1cfd,0x4c8f19fa);
+#endif
+
+// 2018-02-07bRagexe, 2018-02-07bRagexeRE, 2018-02-07cRagexe
+#if PACKETVER == 20180207
+ packetKeys(0x45aa1b44,0x20e716b7,0x5388105c);
+#endif
+
+// 2018-02-13aRagexe, 2018-02-13aRagexeRE, 2018-02-13bRagexe
+#if PACKETVER == 20180213
+ packetKeys(0x189d69b2,0x43b85ead,0x2b7a687e);
+#endif
+
+// 2018-02-21aRagexeRE, 2018-02-21bRagexe, 2018-02-21bRagexeRE
+#if PACKETVER == 20180221
+ packetKeys(0x6e2f6233,0x193b0a66,0x0d1d2ca5);
+#endif
+
+// 2018-03-07bRagexe, 2018-03-07bRagexeRE, 2018-03-09aRagexe
+#if PACKETVER == 20180307 || \
+ PACKETVER == 20180309
+ packetKeys(0x47da10eb,0x4b922ccf,0x765c5055);
+#endif
+
+// 2018-03-14nRagexe
+#if PACKETVER == 20180314
+ packetKeys(0x2ff07149,0x00596ea3,0x2b853026);
+#endif
+
+
+#endif /* MAP_PACKETS_MAIN_KEYS_H */
diff --git a/src/map/packets_keys_zero.h b/src/map/packets_keys_zero.h
new file mode 100644
index 000000000..574c69fcc
--- /dev/null
+++ b/src/map/packets_keys_zero.h
@@ -0,0 +1,185 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2013-2019 Hercules Dev Team
+ * Copyright (C) 2018-2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef MAP_PACKETS_ZERO_KEYS_H
+#define MAP_PACKETS_ZERO_KEYS_H
+
+#ifndef packetKeys
+ #define packetKeys(a,b,c)
+#endif
+
+/* PacketKeys: http://herc.ws/board/topic/1105-hercules-wpe-free-june-14th-patch/ */
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_zero, 2017-10-24aRagexe_2_zero, 2017-10-24aRagexe_zero, 2017-10-25bRagexe_zero, 2017-10-27aRagexe_zero, 2017-10-27bRagexe_zero, 2017-10-30aRagexe_zero, 2017-10-31aRagexe_zero, 2017-11-09aRagexe_zero, 2017-11-13aRagexe_zero, 2017-11-13bRagexe_zero, 2018-03-15aRagexe_zero, 2018-03-21aRagexe_zero, 2018-03-21bRagexe_zero, 2018-03-28_1aRagexe_zero, 2018-03-28cRagexe_zero, 2018-04-11aRagexe_zero, 2018-04-25_3aRagexe_zero, 2018-05-09_3aRagexe_zero, 2018-05-23aRagexe_zero, 2018-06-05bRagexe_zero, 2018-06-05cRagexe_zero, 2018-06-27aRagexe_zero, 2018-07-03aRagexe_zero, 2018-07-11_2aRagexe_zero, 2018-07-25_2aRagexe_zero, 2018-08-01aRagexe_zero, 2018-08-08_2aRagexe_zero, 2018-08-22aRagexe_zero, 2018-08-29aRagexe_zero, 2018-09-05aRagexe_zero, 2018-09-12aRagexe_zero, 2018-09-19aRagexe_zero, 2018-09-28aRagexe_zero, 2018-10-10_2aRagexe_zero, 2018-10-24_2aRagexe_zero, 2018-11-14aRagexe_zero, 2018-11-20aRagexe_zero, 2018-11-28aRagexe_zero, 2018-12-12aRagexe_zero, 2018-12-19aRagexe_zero, 2018-12-26_2aRagexe_zero
+#if PACKETVER == 20171018 || \
+ PACKETVER == 20171019 || \
+ PACKETVER == 20171023 || \
+ PACKETVER == 20171024 || \
+ PACKETVER == 20171025 || \
+ PACKETVER == 20171027 || \
+ PACKETVER == 20171030 || \
+ PACKETVER == 20171031 || \
+ PACKETVER == 20171109 || \
+ PACKETVER == 20171113 || \
+ PACKETVER == 20180315 || \
+ PACKETVER == 20180321 || \
+ PACKETVER == 20180328 || \
+ PACKETVER == 20180411 || \
+ PACKETVER == 20180425 || \
+ PACKETVER == 20180509 || \
+ PACKETVER == 20180523 || \
+ PACKETVER == 20180605 || \
+ PACKETVER == 20180627 || \
+ PACKETVER == 20180703 || \
+ PACKETVER == 20180711 || \
+ PACKETVER == 20180725 || \
+ PACKETVER == 20180801 || \
+ PACKETVER == 20180808 || \
+ PACKETVER == 20180822 || \
+ PACKETVER == 20180829 || \
+ PACKETVER == 20180905 || \
+ PACKETVER == 20180912 || \
+ PACKETVER == 20180919 || \
+ PACKETVER == 20180928 || \
+ PACKETVER == 20181010 || \
+ PACKETVER == 20181024 || \
+ PACKETVER == 20181114 || \
+ PACKETVER == 20181120 || \
+ PACKETVER == 20181128 || \
+ PACKETVER == 20181212 || \
+ PACKETVER == 20181219 || \
+ PACKETVER >= 20181226
+ packetKeys(0x00000000,0x00000000,0x00000000);
+#endif
+
+// 2017-11-15aRagexe_zero, 2017-11-15bRagexe_zero, 2017-11-16aRagexe_zero, 2017-11-17aRagexe_zero
+#if PACKETVER == 20171115 || \
+ PACKETVER == 20171116 || \
+ PACKETVER == 20171117
+ packetKeys(0x3b93061d,0x3cb50dcd,0x410a197e);
+#endif
+
+// 2017-11-21aRagexe_zero, 2017-11-22aRagexe_zero
+#if PACKETVER == 20171121 || \
+ PACKETVER == 20171122
+ packetKeys(0x195b4da8,0x6e3a473b,0x126f4b61);
+#endif
+
+// 2017-11-23dRagexe_zero
+#if PACKETVER == 20171123
+ packetKeys(0x6087733a,0x5c5c4aee,0x0f10408f);
+#endif
+
+// 2017-11-27aRagexe_zero, 2017-11-27cRagexe_zero, 2017-11-28aRagexe_zero
+#if PACKETVER == 20171127 || \
+ PACKETVER == 20171128
+ packetKeys(0x141c135c,0x675c275c,0x275c275c);
+#endif
+
+// 2017-11-30bRagexe_zero
+#if PACKETVER == 20171130
+ packetKeys(0x31a04b32,0x3ac96b76,0x1742085d);
+#endif
+
+// 2017-12-04bRagexe_zero
+#if PACKETVER == 20171204
+ packetKeys(0x06a109f1,0x6a953256,0x0a6040a3);
+#endif
+
+// 2017-12-06aRagexe_zero, 2017-12-06bRagexe_zero, 2017-12-06cRagexe_zero, 2017-12-06dRagexe_zero, 2017-12-08aRagexe_zero, 2017-12-08cRagexe_zero, 2017-12-08dRagexe_zero, 2017-12-09bRagexe_zero, 2017-12-09cRagexe_zero, 2017-12-10aRagexe_zero, 2017-12-11bRagexe_zero, 2017-12-12aRagexe_zero, 2017-12-13aRagexe_zero, 2017-12-13bRagexe_zero, 2017-12-13cRagexe_zero
+#if PACKETVER == 20171206 || \
+ PACKETVER == 20171208 || \
+ PACKETVER == 20171209 || \
+ PACKETVER == 20171210 || \
+ PACKETVER == 20171211 || \
+ PACKETVER == 20171212 || \
+ PACKETVER == 20171213
+ packetKeys(0x718d0388,0x56a11525,0x20042f67);
+#endif
+
+// 2017-12-14cRagexe_zero
+#if PACKETVER == 20171214
+ packetKeys(0x6ce1021d,0x77703b04,0x4e722232);
+#endif
+
+// 2017-12-20aRagexe_zero, 2017-12-21aRagexe_zero, 2017-12-21bRagexe_zero
+#if PACKETVER == 20171220 || \
+ PACKETVER == 20171221
+ packetKeys(0x1e2047d2,0x7ee31ac2,0x31434f61);
+#endif
+
+// 2017-12-27bRagexe_zero, 2017-12-29aRagexe_zero
+#if PACKETVER == 20171227 || \
+ PACKETVER == 20171229
+ packetKeys(0x7cbf0846,0x02f92654,0x22aa5e2d);
+#endif
+
+// 2018-01-03aRagexe_zero
+#if PACKETVER == 20180103
+ packetKeys(0x2a3d4e64,0x7008690c,0x69ff066f);
+#endif
+
+// 2018-01-17aRagexe_zero
+#if PACKETVER == 20180117
+ packetKeys(0x230959eb,0x1ccb0182,0x1ffa2b30);
+#endif
+
+// 2018-01-31dRagexe_zero
+#if PACKETVER == 20180131
+ packetKeys(0x1f422e02,0x12025202,0x52025202);
+#endif
+
+// 2018-02-07bRagexe_zero
+#if PACKETVER == 20180207
+ packetKeys(0x07cb29cb,0x69cb69cb,0x69cb69cb);
+#endif
+
+// 2018-02-13aRagexe_zero
+#if PACKETVER == 20180213
+ packetKeys(0x0513075e,0x347075af,0x67c56c6f);
+#endif
+
+// 2018-02-21aRagexe_zero
+#if PACKETVER == 20180221
+ packetKeys(0x28ed7635,0x76591f21,0x59383498);
+#endif
+
+// 2018-02-28bRagexe_zero, 2018-03-07aRagexe_zero, 2018-03-09aRagexe_zero
+#if PACKETVER == 20180228 || \
+ PACKETVER == 20180307 || \
+ PACKETVER == 20180309
+ packetKeys(0x56c82abe,0x61ae2b2e,0x472e272e);
+#endif
+
+// 2018-03-14nRagexe_zero
+#if PACKETVER == 20180314
+ packetKeys(0x2fc330dd,0x01c04e1f,0x4d914de2);
+#endif
+
+// 2018-05-11aRagexe_zero, 2018-05-11bRagexe_zero
+#if PACKETVER == 20180511
+ packetKeys(0x1c055b65,0x68ce748d,0x32af761d);
+#endif
+
+
+#endif /* MAP_PACKETS_ZERO_KEYS_H */
diff --git a/src/map/packets_shuffle_main.h b/src/map/packets_shuffle_main.h
new file mode 100644
index 000000000..5bae987c9
--- /dev/null
+++ b/src/map/packets_shuffle_main.h
@@ -0,0 +1,9770 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2013-2019 Hercules Dev Team
+ * Copyright (C) 2018-2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+//Included directly by clif.c in packet_loaddb()
+
+#ifndef MAP_PACKETS_SHUFFLE_MAIN_H
+#define MAP_PACKETS_SHUFFLE_MAIN_H
+
+#ifndef packet
+ #define packet(a,...)
+#endif
+
+/*
+ * packet syntax
+ * - packet(packet_id,function,offset ( specifies the offset of a packet field in bytes from the begin of the packet ),...)
+ * - Example: packet(0x0072,clif->pWantToConnection,2,6,10,14,18);
+ */
+
+/* This file is autogenerated, please do not commit manual changes */
+
+
+// 2012-07-10aRagexe, 2012-07-12aRagexe
+#if PACKETVER == 20120710 || \
+ PACKETVER == 20120712
+ packet(0x0202,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x02c4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0362,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0365,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0367,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0436,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x07e4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0811,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x085b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0877,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0878,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x087f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x088d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0893,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0899,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08a3,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08a6,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08a8,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08aa,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0936,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0948,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x094b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x094e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0953,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0956,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0958,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+#endif
+
+// 2012-07-16aRagexe
+#if PACKETVER == 20120716
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x089f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2012-07-24aRagexe
+#if PACKETVER == 20120724
+ packet(0x035f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0815,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0835,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0865,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0866,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0872,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0877,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x087c,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0887,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0888,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x088e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08a1,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x08a9,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08ab,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x091c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x091f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0928,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0929,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x092b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0935,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0938,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x093c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0945,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0957,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0959,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0963,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0965,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0966,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+#endif
+
+// 2012-08-01aRagexe, 2012-08-01bRagexe
+#if PACKETVER == 20120801
+ packet(0x0360,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0438,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x085d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x086a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x086b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x086f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0873,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0875,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x087b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x088b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0890,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0895,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x089c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x089d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x089f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x08a2,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08aa,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08ab,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0917,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x091d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x092a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x092e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0930,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0934,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x093c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0941,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0946,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0964,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+#endif
+
+// 2012-08-08aRagexe, 2012-08-08bRagexe, 2012-08-08cRagexe
+#if PACKETVER == 20120808
+ packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x088f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x093d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0940,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2012-08-14aRagexe, 2012-08-14bRagexe
+#if PACKETVER == 20120814
+ packet(0x0281,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0361,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0365,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0366,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0438,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x07ec,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0815,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0838,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x085e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0861,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0862,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0865,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0868,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x086f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0875,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x087f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0882,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x088b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x088d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0895,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x08a8,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x091f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0920,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0929,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0932,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0934,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0941,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0967,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0969,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+#endif
+
+// 2012-08-22aRagexe, 2012-08-22bRagexe, 2012-08-22cRagexe
+#if PACKETVER == 20120822
+ packet(0x0365,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0437,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x085a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x085c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x085d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x086b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x086e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0872,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x087c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x087d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0885,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x088a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0899,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x089f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08a5,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08ab,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0917,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0924,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0927,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0935,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0937,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0940,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0943,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x094d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x094e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0953,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0955,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0958,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x095b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+#endif
+
+// 2012-08-30aRagexe
+#if PACKETVER == 20120830
+ packet(0x022d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0364,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0802,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0838,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0861,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0872,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0887,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0888,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0890,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x091d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0926,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0934,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0945,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x094b,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0964,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2012-09-05aRagexe
+#if PACKETVER == 20120905
+ packet(0x022d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0365,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0817,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x085a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x085d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x086f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0876,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0877,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0878,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x087a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x087b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x087e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0887,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0895,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0897,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08a0,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08a6,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0917,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0918,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x091a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0927,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x093c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0944,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0945,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0950,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0954,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0959,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0967,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+#endif
+
+// 2012-09-11aRagexe
+#if PACKETVER == 20120911
+ packet(0x0438,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0819,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0868,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x086f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0876,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0877,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0879,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x088a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x088f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08a4,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08a5,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x08a6,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08a7,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08ad,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0930,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0935,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0948,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0949,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x094b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0958,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0959,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0962,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0963,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0966,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0968,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x096a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+#endif
+
+// 2012-09-19aRagexe
+#if PACKETVER == 20120919
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0956,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2012-09-25aRagexe, 2012-09-26aRagexe
+#if PACKETVER == 20120925 || \
+ PACKETVER == 20120926
+ packet(0x07e4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0815,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0819,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0835,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0838,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x085d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0869,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0873,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x087a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x087e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0887,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x088a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x088d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x088f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x089d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08a4,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x091c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x091e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0923,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0927,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0932,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0942,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0948,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0950,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0956,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0957,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0958,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x095e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0963,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+#endif
+
+// 2012-10-10aRagexe, 2012-10-10bRagexe
+#if PACKETVER == 20121010
+ packet(0x0202,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0817,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x085a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0869,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x086c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0874,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x087d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0883,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0888,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x088f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0891,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0896,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0898,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a1,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x08a6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x08a9,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0925,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0934,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x093c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0942,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0946,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0947,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x094c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0957,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0958,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0959,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x095c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0964,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0969,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+#endif
+
+// 2012-10-17aRagexe, 2012-10-17bRagexe
+#if PACKETVER == 20121017
+ packet(0x023b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0365,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0868,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x086b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0887,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0888,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0897,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x089a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08a6,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0918,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0920,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0960,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0962,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0965,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2012-10-24aRagexe
+#if PACKETVER == 20121024
+ packet(0x0436,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0437,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0438,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0817,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0838,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x085a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0868,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0872,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0875,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x087a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x087b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x087e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0882,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0888,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0889,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x088a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x089c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x08a9,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x08aa,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0931,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0938,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x093a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0942,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0947,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0954,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0955,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x095d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x095e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0965,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+#endif
+
+// 2012-10-31aRagexe
+#if PACKETVER == 20121031
+ packet(0x022d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0871,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0877,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0898,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x092b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2012-11-07aRagexe
+#if PACKETVER == 20121107
+ packet(0x0360,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0361,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0365,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x085c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0861,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0865,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x086c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x086d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0871,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0873,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0878,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x087f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x088f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0890,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0891,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0896,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x089a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x089b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x08a2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x08ad,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0922,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0934,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x093b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0945,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x094d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0960,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0963,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0966,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x096a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+#endif
+
+// 2012-11-14aRagexe
+#if PACKETVER == 20121114
+ packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0365,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0437,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0815,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0838,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0862,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0876,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0879,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0881,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0898,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0899,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x08a9,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x08aa,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x08ab,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x091a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0930,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0935,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0938,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x093b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x093c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0941,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0944,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0949,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x094a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x094b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x094f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x095c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0965,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x096a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+#endif
+
+// 2012-11-21aRagexe
+#if PACKETVER == 20121121
+ packet(0x0202,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0362,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0437,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0863,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x086a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x086d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x086f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0872,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0875,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x087e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0880,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0892,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x089a,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08a7,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x08aa,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x091a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0921,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0927,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0929,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0938,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0946,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x094d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0950,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0952,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0954,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0957,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0958,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+#endif
+
+// 2012-11-28aRagexe
+#if PACKETVER == 20121128
+ packet(0x0362,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0363,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x07ec,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0802,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0861,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0867,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x086c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x086e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0872,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0888,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x088b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0894,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0895,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08a8,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08ad,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x091b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x091c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x091e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x091f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0921,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0922,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x092f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0931,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0945,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0947,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0950,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0953,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0954,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0960,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+#endif
+
+// 2012-12-05aRagexe, 2012-12-05bRagexe
+#if PACKETVER == 20121205
+ packet(0x035f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0360,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0815,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0863,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0864,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x086c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0870,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0873,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0875,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0878,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0888,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0889,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x088b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x089a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x089d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x08ad,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x091a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x091c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0921,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x093a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x093e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x093f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0946,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x094b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0954,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0959,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0966,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0968,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+#endif
+
+// 2012-12-12aRagexe, 2012-12-12bRagexe
+#if PACKETVER == 20121212
+ packet(0x0362,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0368,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0369,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0436,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0438,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0817,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x085c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0877,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x087d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0893,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0895,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x08a3,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08a7,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x08a9,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08aa,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08ac,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0917,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x091a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0920,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0932,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0947,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0951,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0953,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0957,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x095b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0965,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0966,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2012-12-18aRagexe, 2012-12-18bRagexe
+#if PACKETVER == 20121218
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0363,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0867,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0872,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x087a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x087b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0886,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0889,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0890,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x091a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x091c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0935,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0946,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0957,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2012-12-27aRagexe
+#if PACKETVER == 20121227
+ packet(0x0202,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x02c4,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0361,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0368,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0437,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0860,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0870,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0872,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x087a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0886,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0888,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x088e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0890,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0894,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0896,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x08a6,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08aa,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0917,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x091f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0920,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0932,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0933,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0940,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0943,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0947,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0953,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0958,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x095d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0962,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+#endif
+
+// 2013-01-03aRagexe, 2013-01-07aRagexe
+#if PACKETVER == 20130103 || \
+ PACKETVER == 20130107
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0940,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-01-09aRagexe
+#if PACKETVER == 20130109
+ packet(0x0281,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0365,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0368,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0838,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0866,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0886,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0888,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x088a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x088e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0891,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0892,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08a2,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x08aa,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08ac,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0918,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x091b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0922,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0927,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0928,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0930,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0931,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0938,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x093e,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x094f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0950,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0951,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0955,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x095e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+#endif
+
+// 2013-01-15bRagexe, 2013-01-16aRagexe, 2013-01-16bRagexe
+#if PACKETVER == 20130115 || \
+ PACKETVER == 20130116
+ packet(0x0361,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x07ec,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0817,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x085e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0861,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0863,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x086b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0870,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0871,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0877,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0879,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x087c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0888,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x088b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0894,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0895,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x08a0,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x08a4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x08ac,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0918,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0928,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x092d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x092e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0939,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0946,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x094b,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x094c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x094e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x095a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+#endif
+
+// 2013-01-21aRagexe
+#if PACKETVER == 20130121
+ packet(0x023b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x035f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07ec,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0802,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0815,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0817,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x085d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x086c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0874,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0884,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0893,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x091f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x094f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0956,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x095b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0963,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0969,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-01-30aRagexe
+#if PACKETVER == 20130130
+ packet(0x035f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0367,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0368,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0437,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x085f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0862,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x086b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x087d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x087f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0885,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0886,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0887,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0889,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x089a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x089f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08a0,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x08a4,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08a9,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x091a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0920,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0924,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x093a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x093d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0956,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0957,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x095b,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x095c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x095d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+#endif
+
+// 2013-02-06aRagexe
+#if PACKETVER == 20130206
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0811,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0876,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0883,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0885,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0899,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08a0,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08ac,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0920,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0925,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x093a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x093c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0950,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-02-15aRagexe, 2013-02-15bRagexe
+#if PACKETVER == 20130215
+ packet(0x023b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0366,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0802,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0869,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x086f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0886,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x089e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x089f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08ad,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0923,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0941,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0956,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x095d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0962,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-02-20aRagexe
+#if PACKETVER == 20130220
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x094b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-02-27aRagexe
+#if PACKETVER == 20130227
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x035f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0360,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0811,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0815,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x085a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0863,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0867,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0869,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x086e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x087b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0893,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0898,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08a0,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x08a1,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x091b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x091f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0924,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x092b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x092f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0936,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0946,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0951,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x095b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x095e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x095f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0967,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+#endif
+
+// 2013-03-06aRagexe
+#if PACKETVER == 20130306
+ packet(0x022d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0367,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0368,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0802,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0817,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x085b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x085c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0860,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x086d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0881,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0890,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0898,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x089f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x08a4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x08ac,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0917,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x091e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0926,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0934,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0936,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0943,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0945,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0946,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x094a,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x094e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0951,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0960,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0962,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+#endif
+
+// 2013-03-13aRagexe
+#if PACKETVER == 20130313
+ packet(0x0202,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0887,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0920,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x092d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0947,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-03-20dRagexe, 2013-03-20eRagexe
+#if PACKETVER == 20130320
+ packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0363,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0365,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0438,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x085a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x085d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0868,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x086d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x086f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0874,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0881,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0886,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0888,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x088e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0890,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0897,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0898,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x089b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08ac,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0922,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x092e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0933,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0938,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x093f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0947,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x094c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x094e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0959,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x095a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+#endif
+
+// 2013-03-27bRagexe
+#if PACKETVER == 20130327
+ packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0835,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x086d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0873,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0878,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x087a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0885,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x088f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0891,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0893,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0899,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08a1,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x08a2,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x091f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x092b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x092d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x092e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x092f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0933,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0938,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0939,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x094a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x094b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x094f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0955,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0960,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0961,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0967,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+#endif
+
+// 2013-04-03aRagexe
+#if PACKETVER == 20130403
+ packet(0x023b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0884,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08a5,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0926,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0942,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0950,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-04-10aRagexe
+#if PACKETVER == 20130410
+ packet(0x0367,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0437,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0860,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0865,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x086c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0879,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x087c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x087d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0881,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x088c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x088d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0890,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0891,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x089c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x089e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x08a0,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x08a4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x08a7,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0917,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x091d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0933,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0939,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x093d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0944,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0945,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0955,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0960,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0967,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x096a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+#endif
+
+// 2013-04-17aRagexe
+#if PACKETVER == 20130417
+ packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x086b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0875,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0929,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0962,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0969,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x096a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+#endif
+
+// 2013-04-24aRagexe
+#if PACKETVER == 20130424
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0969,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-05-02aRagexe, 2013-05-02bRagexe
+#if PACKETVER == 20130502
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x07ec,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0867,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0870,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0874,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0875,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0877,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x087c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0888,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0889,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08a1,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08a3,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0961,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0967,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+#endif
+
+// 2013-05-08bRagexe, 2013-05-08cRagexe, 2013-05-08dRagexe, 2013-05-08eRagexe, 2013-05-08fRagexe
+#if PACKETVER == 20130508
+ packet(0x022d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0868,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0878,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x088b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0893,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0895,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0897,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08ab,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x092d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0944,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x094d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0957,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x095c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-05-15aRagexe
+#if PACKETVER == 20130515
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0862,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0887,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a1,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08aa,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08ac,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x092d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0931,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x093e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0943,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0944,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0947,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0962,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0963,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-05-22aRagexe
+#if PACKETVER == 20130522
+ packet(0x0360,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0362,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0368,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x07ec,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0811,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x086a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x086e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0874,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x087e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x088e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x089b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x089c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08a2,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x08a3,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a6,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x08a9,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08aa,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x08ac,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0925,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0926,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0950,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0952,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x095b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x095c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x095e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0964,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0965,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+#endif
+
+// 2013-05-29aRagexe
+#if PACKETVER == 20130529
+ packet(0x023b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x085e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0863,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0869,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0874,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0876,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0877,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0888,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x088e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0890,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0892,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0895,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0897,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x08a7,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08a8,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0917,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0918,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0919,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0936,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0937,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0938,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0941,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0951,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0956,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0957,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0958,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0964,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+#endif
+
+// 2013-06-05aRagexe, 2013-06-05bRagexe
+#if PACKETVER == 20130605
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0883,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-06-12aRagexe, 2013-06-12bRagexe, 2013-06-12cRagexe, 2013-06-12dRagexe, 2013-06-12eRagexe
+#if PACKETVER == 20130612
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x087e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0919,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x093a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0940,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0964,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-06-18#1aRagexe
+#if PACKETVER == 20130618
+ packet(0x0281,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x02c4,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0363,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x085a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0862,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0864,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0878,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0885,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0887,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0889,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x088e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0890,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0891,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x08a6,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08a7,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0917,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0930,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0932,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0936,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0942,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0944,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0945,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x094f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0951,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0953,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x095b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0962,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x096a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+#endif
+
+// 2013-06-26_3cRagexe, 2013-06-26bRagexe
+#if PACKETVER == 20130626
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0365,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0860,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x088b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x088c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x088f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0894,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0895,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x08a5,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08ab,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0921,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0930,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x094d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0952,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0960,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-07-03aRagexe
+#if PACKETVER == 20130703
+ packet(0x0202,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0873,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0930,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x094a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-07-10bRagexe
+#if PACKETVER == 20130710
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0880,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-07-17cRagexe
+#if PACKETVER == 20130717
+ packet(0x02c4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0819,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x083c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0862,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0863,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x086b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x086c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0882,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x088a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x088c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0897,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0898,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x089b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a6,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08a9,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08aa,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0917,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0918,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x091d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x091e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x092f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x093b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0956,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0958,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x095b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0960,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0967,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x096a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+#endif
+
+// 2013-07-24eRagexe
+#if PACKETVER == 20130724
+ packet(0x023b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0437,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x085a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x085e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0860,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0867,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x086a,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0874,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0876,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0890,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0891,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0893,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x089c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x08ab,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0921,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0924,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0927,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x092b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x092e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x094a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0953,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0954,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0956,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0958,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x095c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x095d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0965,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0966,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+#endif
+
+// 2013-07-31cRagexe
+#if PACKETVER == 20130731
+ packet(0x022d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0366,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0863,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0865,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0878,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x087e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0884,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0889,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x088b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0894,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0895,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0923,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0925,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x092b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x092d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0935,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0941,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x094c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0956,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0957,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0958,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x095b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x095d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x095f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0962,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+#endif
+
+// 2013-08-07aRagexe
+#if PACKETVER == 20130807
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0887,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-08-14aRagexe
+#if PACKETVER == 20130814
+ packet(0x0202,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0281,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0368,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0815,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0835,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0868,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0873,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0874,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0885,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0887,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x088a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x088c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0895,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0896,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08a4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0923,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0926,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0927,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0936,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0937,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x093a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0941,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0947,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x094e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0958,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0959,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x095f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0962,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+#endif
+
+// 2013-08-21bRagexe
+#if PACKETVER == 20130821
+ packet(0x0202,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0360,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0437,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0438,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x07ec,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0815,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0862,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0863,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x086e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0879,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0881,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x088d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x088f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0892,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x08a6,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x08ad,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x091d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0923,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x092d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x093e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0947,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0954,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x095e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0962,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0964,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0967,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0969,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+#endif
+
+// 2013-08-28bRagexe, 2013-08-28cRagexe
+#if PACKETVER == 20130828
+ packet(0x023b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0361,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0364,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0817,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0873,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x087e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0889,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0893,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x089e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x089f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08a3,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x08ac,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0917,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0919,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x091e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0923,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0924,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0928,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0929,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0930,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0944,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0946,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x094a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x094c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x094f,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x095d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0966,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x096a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+#endif
+
+// 2013-09-04aRagexe
+#if PACKETVER == 20130904
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0838,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0937,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x093a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0940,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0956,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-09-11aRagexe, 2013-09-11bRagexe
+#if PACKETVER == 20130911
+ packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0364,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0868,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x086b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x086d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x087b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0889,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0891,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x08a4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x091e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x093a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0940,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0948,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0967,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x096a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+#endif
+
+// 2013-09-17aRagexe
+#if PACKETVER == 20130917
+ packet(0x035f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0811,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0838,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x083c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0863,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0868,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x086e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x086f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x087a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x087e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x088a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0895,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x089b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x089d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08a0,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a2,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x08a8,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0918,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x091c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x091e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0921,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0923,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0934,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x094c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0957,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0959,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x095b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x096a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+#endif
+
+// 2013-09-25aRagexe, 2013-09-25bRagexe, 2013-09-25cRagexe
+#if PACKETVER == 20130925
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x086d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x086e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0875,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0876,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x087d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0885,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0887,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x088f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0890,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0940,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0958,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x095a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x095b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x095c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0969,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-10-02aRagexe
+#if PACKETVER == 20131002
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0940,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-10-08aRagexe
+#if PACKETVER == 20131008
+ packet(0x0202,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0362,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x07e4,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x083c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x085d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x085e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0863,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x086c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x086d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0883,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0884,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0885,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0896,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x089c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08a9,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0917,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x091c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0923,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0927,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0932,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0934,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0936,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x093c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0947,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0952,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0954,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0956,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x095d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0969,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+#endif
+
+// 2013-10-16aRagexe, 2013-10-16bRagexe
+#if PACKETVER == 20131016
+ packet(0x022d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0281,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0361,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0364,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0366,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x07ec,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0802,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x085a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x085d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0863,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0864,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0867,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x086c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0870,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0875,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0887,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0888,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x088b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0890,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0894,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x091a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x091e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x091f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0927,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0946,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x094e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x095e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0962,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0966,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+#endif
+
+// 2013-10-23aRagexe
+#if PACKETVER == 20131023
+ packet(0x0366,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0438,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0819,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0835,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x085b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0862,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x086e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0872,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0876,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x087f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0885,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x088a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x088b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x088f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a7,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x08ab,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08ac,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0919,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x091d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0923,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0924,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0935,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0937,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0944,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x094a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0951,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0954,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x095b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+#endif
+
+// 2013-10-30aRagexe
+#if PACKETVER == 20131030
+ packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x087d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0887,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a2,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0925,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-11-06aRagexe, 2013-11-07aRagexe, 2013-11-07bRagexe, 2013-11-07cRagexe, 2013-11-08aRagexe
+#if PACKETVER == 20131106 || \
+ PACKETVER == 20131107 || \
+ PACKETVER == 20131108
+ packet(0x0281,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0363,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0369,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0436,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0802,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0817,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0866,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0867,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0870,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0875,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0887,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0891,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0893,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0894,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x08a2,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0919,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x091d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0929,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0935,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x093b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0942,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0946,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0947,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0948,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0950,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0954,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x095d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0962,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0967,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+#endif
+
+// 2013-11-13bRagexe
+#if PACKETVER == 20131113
+ packet(0x0364,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x086d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0879,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x088c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x088f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x089a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08a4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08a8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x091c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0920,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0926,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0927,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0928,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0929,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x092b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x092c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x092d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x092e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x092f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0934,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0936,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x093c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0949,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0950,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x095d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x095f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0960,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0964,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0969,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+#endif
+
+// 2013-11-20dRagexe
+#if PACKETVER == 20131120
+ packet(0x0361,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0368,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0802,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0811,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0817,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x085a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x085f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0862,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0884,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x088c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x088d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x089e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08a1,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x08a4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a8,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0917,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0926,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0927,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x092b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x092d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x093e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x093f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0940,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0950,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0953,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0955,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0956,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x095e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+#endif
+
+// 2013-11-27bRagexe
+#if PACKETVER == 20131127
+ packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0364,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0365,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0366,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0881,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0884,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x088d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0894,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x089e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0930,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x093a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0940,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x094c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x094f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x095c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0967,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x096a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+#endif
+
+// 2013-12-04eRagexe
+#if PACKETVER == 20131204
+ packet(0x0365,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0366,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x085a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0862,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0869,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x086c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0877,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0879,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x087f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0882,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08a0,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x08a4,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08a7,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08ad,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x091f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0928,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x092d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x092f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0932,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x093b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0941,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0951,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0958,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0959,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x095b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0961,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0967,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+#endif
+
+// 2013-12-11cRagexe, 2013-12-11dRagexe
+#if PACKETVER == 20131211
+ packet(0x0202,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0366,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0865,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x086e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0873,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0881,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0886,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0892,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a3,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08a4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08ab,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x092b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0931,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x094c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-12-18bRagexe
+#if PACKETVER == 20131218
+ packet(0x022d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x087b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08ab,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x092f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0947,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-12-23bRagexe, 2013-12-23cRagexe
+#if PACKETVER == 20131223
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08a4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-12-30aRagexe
+#if PACKETVER == 20131230
+ packet(0x022d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x02c4,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0365,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0369,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0438,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0860,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0871,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x087b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x087e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x087f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0895,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0898,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x089c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08a9,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x091d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x091e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x091f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0926,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x092a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x093d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x093e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0943,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0949,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x094a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x094c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0968,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0969,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x096a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+#endif
+
+// 2014-01-08cRagexe, 2014-01-08dRagexe
+#if PACKETVER == 20140108
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0936,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-01-15aRagexe, 2014-01-15bRagexe, 2014-01-15cRagexe, 2014-01-15eRagexe
+#if PACKETVER == 20140115
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0367,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0802,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0865,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0887,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x088a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x088e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x089b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08a7,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x092d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0940,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x095b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x095d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0965,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0966,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x096a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+#endif
+
+// 2014-01-22aRagexe
+#if PACKETVER == 20140122
+ packet(0x0360,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0811,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0863,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0870,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0871,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0872,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x088c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0890,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0893,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0899,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x089d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x08a2,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08aa,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0917,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x091a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0925,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x092f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0940,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0941,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0942,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x094b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x094c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0950,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0952,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0955,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0957,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x095d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x095f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+#endif
+
+// 2014-01-29aRagexe, 2014-01-29cRagexe
+#if PACKETVER == 20140129
+ packet(0x0281,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0367,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07ec,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0802,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0884,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0885,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0889,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0921,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0924,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x092c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x094d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0958,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0961,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-02-05bRagexe
+#if PACKETVER == 20140205
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0938,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-02-12aRagexe
+#if PACKETVER == 20140212
+ packet(0x02c4,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0369,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0438,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x086e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0874,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0877,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0878,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x087e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0888,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x088c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x089d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x089e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x08a0,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a1,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x08a7,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08ac,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08ad,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0919,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x091b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0928,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0930,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0934,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0936,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x093d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0944,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0952,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0953,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0960,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+#endif
+
+// 2014-02-19aRagexe
+#if PACKETVER == 20140219
+ packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0360,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0364,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0802,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0838,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x085c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x085d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x085f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0860,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0868,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x086f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x087c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0889,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0898,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x089f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08a6,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x08ac,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0921,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0927,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0939,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0946,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0949,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0953,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x095a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0961,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+#endif
+
+// 2014-02-26aRagexe
+#if PACKETVER == 20140226
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0362,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0867,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0877,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0887,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0894,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0895,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x091a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0921,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0931,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0941,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0962,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0964,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0969,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-03-05aRagexe, 2014-03-05bRagexe
+#if PACKETVER == 20140305
+ packet(0x0202,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x07e4,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0878,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0934,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x095e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-03-12dRagexe
+#if PACKETVER == 20140312
+ packet(0x0202,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x023b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0366,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x085e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x086f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0889,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x088c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x088d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x088e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0891,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0894,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x089b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x089d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x089e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08a6,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08a9,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08ad,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x091b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x091c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x091e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x092a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0948,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x094a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x094b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x094c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0957,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x095d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x095e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0966,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+#endif
+
+// 2014-03-19aRagexe
+#if PACKETVER == 20140319
+ packet(0x02c4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07e4,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0802,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0811,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0815,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x085a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0864,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0865,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0866,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x086e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0872,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0883,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x088e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0890,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0893,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x089f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x08a2,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x091f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0923,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0933,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0942,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0944,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0947,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x094c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0954,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0955,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0961,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0964,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x096a,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+#endif
+
+// 2014-03-26aRagexe
+#if PACKETVER == 20140326
+ packet(0x0362,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0365,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x07ec,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x083c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x085b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0865,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0867,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0869,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x086b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x087c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x087e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x087f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0887,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0898,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08aa,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08ac,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x08ad,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0918,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0928,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x092a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x093d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0942,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0945,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0946,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0956,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0959,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x095a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x095c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0969,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+#endif
+
+// 2014-04-02fRagexe, 2014-04-02gRagexe
+#if PACKETVER == 20140402
+ packet(0x023b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0360,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0364,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07ec,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x085b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x085d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0867,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0868,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0882,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0883,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x088a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x088c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0890,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0896,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x089a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08ac,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x091f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0920,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0926,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x092d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0933,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x093f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0944,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0946,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x094c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0950,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0958,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x095c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0965,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+#endif
+
+// 2014-04-09aRagexe, 2014-04-09bRagexe
+#if PACKETVER == 20140409
+ packet(0x0819,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x085b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0868,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x086a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x086d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0873,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0875,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x087e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0883,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0884,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x088a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0890,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0893,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0896,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08a2,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08a4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x08a6,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x08a7,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08a9,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0918,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x091c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x092e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0942,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0947,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x094c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x095a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x095e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+#endif
+
+// 2014-04-16aRagexe, 2014-04-16bRagexe
+#if PACKETVER == 20140416
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x095c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-04-23aRagexe
+#if PACKETVER == 20140423
+ packet(0x022d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0360,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0436,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0811,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x083c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x085a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x085b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0862,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0863,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0866,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x086b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x086f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0873,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x088b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0890,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0895,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0896,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0898,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x089b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x089d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x089f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x08a8,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x08ad,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x091a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0920,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x094f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x095e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+#endif
+
+// 2014-04-30aRagexe
+#if PACKETVER == 20140430
+ packet(0x023b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x035f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0363,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0860,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0870,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0871,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0875,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x087f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0884,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0899,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08a1,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x093b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0940,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x094b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0953,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0956,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x096a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+#endif
+
+// 2014-05-08bRagexe
+#if PACKETVER == 20140508
+ packet(0x022d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0366,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0368,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0802,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0861,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0886,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x089b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08ab,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0927,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0930,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0932,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0934,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x094e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x096a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+#endif
+
+// 2014-05-14bRagexe
+#if PACKETVER == 20140514
+ packet(0x0437,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0817,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0865,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0868,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0876,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0877,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x087d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0885,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0886,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x088a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x088b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0895,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x089a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x089c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08a5,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0918,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x091d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0921,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0925,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x092c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x092f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x094d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x094e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0958,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x095f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0962,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0965,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x096a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+#endif
+
+// 2014-05-21bRagexe
+#if PACKETVER == 20140521
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0869,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x088b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x088d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x089c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08ac,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0968,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-05-28aRagexe
+#if PACKETVER == 20140528
+ packet(0x0202,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0360,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x085f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0862,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0872,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0875,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0877,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0879,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x087e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x088a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x088f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0894,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0896,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x089d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08a4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x08a8,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x08ab,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x091d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0929,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0930,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0938,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x093a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x093f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x094a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x094b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x095f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0963,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0964,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0966,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+#endif
+
+// 2014-06-05aRagexe, 2014-06-05bRagexe
+#if PACKETVER == 20140605
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0369,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0921,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0931,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0940,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x094c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-06-11cRagexe, 2014-06-11dRagexe, 2014-06-11hRagexe, 2014-06-12aRagexe, 2014-06-13aRagexe
+#if PACKETVER == 20140611 || \
+ PACKETVER == 20140612 || \
+ PACKETVER == 20140613
+ packet(0x0364,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0438,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x07e4,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0838,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0864,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0867,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x086c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0874,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0878,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x088c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0891,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0893,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0894,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x089b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08a1,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08a2,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0924,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0936,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0941,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x094a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x094f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0950,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0951,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0952,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0957,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0958,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0963,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0965,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0969,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+#endif
+
+// 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-28bRagexe, 2018-04-04bRagexe, 2018-04-18aRagexe, 2018-04-25cRagexe, 2018-05-02bRagexe, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-23aRagexe, 2018-05-30aRagexe, 2018-06-05bRagexe, 2018-06-20cRagexe, 2018-06-20eRagexe, 2018-06-21aRagexe, 2018-07-04aRagexe, 2018-07-18bRagexe, 2018-07-18cRagexe, 2018-08-01cRagexe, 2018-08-08bRagexe, 2018-08-22cRagexe, 2018-08-29aRagexe, 2018-08-31aRagexe, 2018-09-12dRagexe, 2018-09-19aRagexe, 2018-10-02aRagexe, 2018-10-02bRagexe, 2018-10-17_02aRagexe, 2018-10-17_03aRagexe, 2018-10-17bRagexe, 2018-10-24bRagexe, 2018-10-31aRagexe, 2018-10-31bRagexe, 2018-11-07aRagexe, 2018-11-14cRagexe, 2018-11-14dRagexe
+#if PACKETVER == 20140611 || \
+ PACKETVER == 20150225 || \
+ PACKETVER == 20180315 || \
+ PACKETVER == 20180321 || \
+ PACKETVER == 20180328 || \
+ PACKETVER == 20180404 || \
+ PACKETVER == 20180418 || \
+ PACKETVER == 20180425 || \
+ PACKETVER == 20180502 || \
+ PACKETVER == 20180509 || \
+ PACKETVER == 20180516 || \
+ PACKETVER == 20180523 || \
+ PACKETVER == 20180530 || \
+ PACKETVER == 20180605 || \
+ PACKETVER == 20180620 || \
+ PACKETVER == 20180621 || \
+ PACKETVER == 20180704 || \
+ PACKETVER == 20180718 || \
+ PACKETVER == 20180801 || \
+ PACKETVER == 20180808 || \
+ PACKETVER == 20180822 || \
+ PACKETVER == 20180829 || \
+ PACKETVER == 20180831 || \
+ PACKETVER == 20180912 || \
+ PACKETVER == 20180919 || \
+ PACKETVER == 20181002 || \
+ PACKETVER == 20181017 || \
+ PACKETVER == 20181024 || \
+ PACKETVER == 20181031 || \
+ PACKETVER == 20181107 || \
+ PACKETVER == 20181114
+ packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0362,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0365,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x07ec,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+#endif
+
+// 2014-06-18aRagexe
+#if PACKETVER == 20140618
+ packet(0x085d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x085f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0860,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0861,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0878,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x087d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0884,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0885,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0886,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0890,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0892,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08a6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x08a7,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x08ac,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0917,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x091f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0929,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0935,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0938,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0939,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x093b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0945,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0954,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0957,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x095d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x095e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0962,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0967,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+#endif
+
+// 2014-06-25aRagexe, 2014-06-25bRagexe
+#if PACKETVER == 20140625
+ packet(0x0202,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x023b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0815,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0817,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0835,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x085a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0861,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x086b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0875,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x087b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0885,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0886,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0888,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x088a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x088e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0897,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08a1,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x08a2,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x091a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0923,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0928,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0946,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0959,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0960,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0968,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0969,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-07-02aRagexe
+#if PACKETVER == 20140702
+ packet(0x022d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x023b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0364,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0438,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x07e4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0835,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x086c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0887,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0892,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0895,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08a0,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x08a2,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0925,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x092c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0933,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0940,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-07-09aRagexe
+#if PACKETVER == 20140709
+ packet(0x0364,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0860,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0866,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0869,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0875,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0877,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0879,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x087a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0887,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0888,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x088b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0894,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0897,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0898,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08ad,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x091a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0925,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x092f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0931,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0934,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0939,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x093f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x094d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x094e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x094f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x095f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0961,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+#endif
+
+// 2014-07-16aRagexe, 2014-07-16bRagexe, 2014-07-16cRagexe
+#if PACKETVER == 20140716
+ packet(0x0362,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0811,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x085c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x085f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0868,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0871,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0881,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x088b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x088d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x088f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0896,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x089a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x089f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x08a2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x08a4,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x08ac,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0918,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x091f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0926,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x092c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x092f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0938,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x093b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0947,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0952,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0958,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0959,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0969,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+#endif
+
+// 2014-07-23aRagexe, 2014-07-23bRagexe
+#if PACKETVER == 20140723
+ packet(0x02c4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0436,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0819,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0838,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x085f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0869,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x086d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x087d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0888,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0891,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0896,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0898,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x089e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x08a2,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08ad,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0927,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x092f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0934,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0935,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0939,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x093d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0945,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0947,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0948,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x095f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0960,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+#endif
+
+// 2014-07-30aRagexe
+#if PACKETVER == 20140730
+ packet(0x022d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0364,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0366,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0367,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0437,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x07ec,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0802,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0815,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0817,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x085e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x085f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x087d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x087e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x087f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0889,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x088b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x088d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0892,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a0,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08a6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x08a7,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x08a9,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x08ad,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x091e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0924,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x092a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0934,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0940,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0946,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+#endif
+
+// 2014-08-06aRagexe, 2014-08-06bRagexe
+#if PACKETVER == 20140806
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0948,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-08-13aRagexe, 2014-08-13bRagexe, 2014-08-14aRagexe
+#if PACKETVER == 20140813 || \
+ PACKETVER == 20140814
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0365,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0802,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0868,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0878,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x087c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0882,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0895,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0897,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0899,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08a3,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08a7,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08ab,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0967,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-08-20aRagexe
+#if PACKETVER == 20140820
+ packet(0x035f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0835,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0861,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0864,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0869,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x086c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x086e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0872,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0876,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0891,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0899,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x089a,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x089b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08a3,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x08a7,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x091d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x092f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0936,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0937,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x093a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x093e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x094a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0951,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0952,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0956,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0958,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0961,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+#endif
+
+// 2014-08-27aRagexe
+#if PACKETVER == 20140827
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0943,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-09-03aRagexe
+#if PACKETVER == 20140903
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x088f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x089b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0931,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0941,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0943,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0945,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-09-17aRagexe
+#if PACKETVER == 20140917
+ packet(0x022d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0364,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0365,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0366,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0367,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0838,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0864,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x086d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0889,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0895,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0897,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0898,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x089c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x08a8,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0919,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x091e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x092a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0930,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0949,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x094f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0951,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0955,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0956,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0957,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x095a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x095c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x095e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0966,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+#endif
+
+// 2014-09-24cRagexe
+#if PACKETVER == 20140924
+ packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0367,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0815,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0862,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0864,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0865,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x086b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x086d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x086e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0886,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x088b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0894,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0898,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x089c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a5,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x08a7,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0918,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x091b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0925,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0926,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0928,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x092b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0934,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0949,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0952,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+#endif
+
+// 2014-10-01aRagexe
+#if PACKETVER == 20141001
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0365,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x087c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0884,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0885,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x089c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x089d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08ad,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x091c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x092a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0937,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0939,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x093f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x094b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0952,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+#endif
+
+// 2014-10-08aRagexe, 2014-10-08bRagexe, 2014-10-08cRagexe, 2014-10-08dRagexe
+#if PACKETVER == 20141008
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0942,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-10-15bRagexe, 2014-10-15cRagexe, 2014-10-15dRagexe, 2014-10-16aRagexe
+#if PACKETVER == 20141015 || \
+ PACKETVER == 20141016
+ packet(0x022d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x086e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0922,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0936,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x094b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0967,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-10-22bRagexe
+#if PACKETVER == 20141022
+ packet(0x023b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0878,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x087d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0896,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0899,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x08aa,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08ab,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08ad,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x091a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x092b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x093b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0940,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x094e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0955,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-10-29aRagexe
+#if PACKETVER == 20141029
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0940,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-11-05aRagexe, 2014-11-05bRagexe
+#if PACKETVER == 20141105
+ packet(0x022d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x035f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0360,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x085c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0863,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0864,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0865,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0871,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0874,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0875,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0877,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0879,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0887,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0892,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0898,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08a0,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08a5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08a7,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x08ad,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x091d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x091e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x092b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x093e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0944,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0948,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0950,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0957,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x095f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0968,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+#endif
+
+// 2014-11-12cRagexe, 2014-11-12dRagexe
+#if PACKETVER == 20141112
+ packet(0x0362,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0438,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x07e4,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0835,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x083c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x085f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0863,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0869,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x086c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0871,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0885,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0886,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0887,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x088d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x08a0,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x08a1,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x08ab,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0919,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0926,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0929,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0943,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x094b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x094c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0955,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x095d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0960,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0962,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+#endif
+
+// 2014-11-19dRagexe
+#if PACKETVER == 20141119
+ packet(0x0202,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x085a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0861,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0865,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0866,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0872,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0873,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0875,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x087c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0885,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0887,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0888,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x088d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0895,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08a8,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0918,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0920,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0921,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0929,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x092f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0933,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0938,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0940,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0941,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0942,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0948,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x094c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0963,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+#endif
+
+// 2014-11-26aRagexe, 2014-11-26bRagexe, 2014-11-26cRagexe, 2014-11-26dRagexe
+#if PACKETVER == 20141126
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0367,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0802,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x086e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0871,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0884,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0896,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08a4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08ad,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0920,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0942,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x095a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x095b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x095f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0965,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-12-03aRagexe
+#if PACKETVER == 20141203
+ packet(0x0202,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0281,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0362,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0367,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0368,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0802,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0861,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x086d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x086e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x087b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x087e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0880,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0889,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0898,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x089c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x089d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x08a5,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x08aa,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0917,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x091c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x091d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0928,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x092a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0936,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0957,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x095c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0962,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+#endif
+
+// 2014-12-10bRagexe, 2014-12-10cRagexe
+#if PACKETVER == 20141210
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x087b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0885,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x08ac,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0917,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0927,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x092b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0947,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0954,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0955,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0958,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0961,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0963,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0967,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-12-17aRagexe
+#if PACKETVER == 20141217
+ packet(0x0360,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x085b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0860,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x086c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0875,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0878,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0879,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0883,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0889,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x088e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x089f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08a1,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x08a2,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08a8,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x08ab,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x08ac,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0919,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x091f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0924,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0930,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0932,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0933,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0936,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0939,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0940,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0944,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0945,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0948,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0960,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+#endif
+
+// 2014-12-24aRagexe
+#if PACKETVER == 20141224
+ packet(0x0361,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0438,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0835,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x085a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x085e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0865,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0867,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x086c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0870,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x087a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x087b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x089a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x089b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08a3,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x08a4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a8,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x08ac,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0930,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0932,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x093a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0945,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0946,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0949,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x094f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0950,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0953,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0956,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x095b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x095f,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+#endif
+
+// 2014-12-31aRagexe
+#if PACKETVER == 20141231
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x086d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-01-07aRagexe
+#if PACKETVER == 20150107
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x087c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0895,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x092d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0943,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0947,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-01-14aRagexe, 2015-01-14bRagexe, 2015-01-14cRagexe, 2015-01-14dRagexe
+#if PACKETVER == 20150114
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0868,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0899,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0946,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0955,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0957,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-01-21aRagexe
+#if PACKETVER == 20150121
+ packet(0x0281,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x087c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x088b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x089d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x089e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08ab,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0918,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0919,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x091d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0955,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0959,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0963,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0967,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-01-28aRagexe, 2015-01-29aRagexe, 2015-01-30aRagexe
+#if PACKETVER == 20150128 || \
+ PACKETVER == 20150129 || \
+ PACKETVER == 20150130
+ packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x023b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0365,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0368,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0838,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x085a,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0864,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x086d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0870,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0874,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0875,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0876,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x087d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0888,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x089a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08ab,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x091f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0927,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0929,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x092d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0938,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x093a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0944,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x094d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x094e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0963,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0968,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+#endif
+
+// 2015-02-04aRagexe
+#if PACKETVER == 20150204
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0966,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-02-11aRagexe
+#if PACKETVER == 20150211
+ packet(0x023b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0368,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0369,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0436,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0437,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x07e4,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0817,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0819,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0835,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0862,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0863,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0870,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0873,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x087b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x087f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0882,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0883,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0885,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0886,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x089c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08a0,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08a4,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08aa,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0919,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0920,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0951,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0957,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0958,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+#endif
+
+// 2015-02-17aRagexe
+#if PACKETVER == 20150217
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-02-25eRagexe, 2015-02-25fRagexe, 2015-02-25gRagexe, 2015-02-25iRagexe, 2015-02-25jRagexe, 2015-02-26aRagexe
+#if PACKETVER == 20150225 || \
+ PACKETVER == 20150226
+ packet(0x02c4,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0362,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0819,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0867,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0885,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0896,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x089b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x089c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0940,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0946,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0948,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x094f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0952,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0955,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x096a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+#endif
+
+// 2015-03-04aRagexe
+#if PACKETVER == 20150304
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0802,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0862,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x086d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0879,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x087e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0892,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x089a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x093a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0947,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x095d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0960,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0961,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-03-11aRagexe, 2015-03-11bRagexe
+#if PACKETVER == 20150311
+ packet(0x023b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0360,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0438,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0838,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x086a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x086c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x087b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0883,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0886,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0888,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0896,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x08a1,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08a3,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08a5,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x08a6,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x091c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0928,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x092a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x092e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x093b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0943,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0946,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0957,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0958,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x095b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0963,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0964,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+#endif
+
+// 2015-03-18aRagexe, 2015-03-18bRagexe
+#if PACKETVER == 20150318
+ packet(0x0202,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x023b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0281,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x07e4,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0802,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0811,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0862,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0863,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0873,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0885,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0889,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x088c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x089c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a4,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x091d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0920,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0927,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0928,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0936,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0937,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0938,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x093a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x093c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x094c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0951,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0958,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0959,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0960,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+#endif
+
+// 2015-03-25aRagexe
+#if PACKETVER == 20150325
+ packet(0x0202,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0365,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0438,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0802,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0819,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x085d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x086f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x087c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x087e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0883,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0885,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0891,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0893,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0897,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0899,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08a1,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x08a7,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0919,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x092c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0931,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0932,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0938,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0940,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0947,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x094a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0950,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0954,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0969,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+#endif
+
+// 2015-04-01aRagexe
+#if PACKETVER == 20150401
+ packet(0x0362,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0367,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0437,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x083c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x085e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x086f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0875,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x087e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x088c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x088f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0895,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0898,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x089c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a5,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x091b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x091c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0922,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0924,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0938,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0939,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x093a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x093b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x093e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0946,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0949,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x094b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0953,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x095f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0964,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+#endif
+
+// 2015-04-08aRagexe
+#if PACKETVER == 20150408
+ packet(0x0819,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x085a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x085c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0865,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0868,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x086b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x086e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0878,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x087e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x087f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0888,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0889,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0891,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0898,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x089c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x08a2,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x08a4,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x091b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x091e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0922,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x092a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0946,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x094f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0955,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0957,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0959,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x095e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0963,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+#endif
+
+// 2015-04-15aRagexe
+#if PACKETVER == 20150415
+ packet(0x0361,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0364,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0366,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0368,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0802,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0817,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0835,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x085e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0863,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0867,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0868,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0869,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x086c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0880,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x088e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0891,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0898,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08a0,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0922,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x092e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x093c,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0941,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0946,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x094d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0953,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x095c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0960,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0961,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+#endif
+
+// 2015-04-22aRagexe
+#if PACKETVER == 20150422
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0955,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-04-29aRagexe
+#if PACKETVER == 20150429
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0363,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0867,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x086a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0886,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x088f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0894,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0899,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x089f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08a6,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08a8,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08ad,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0929,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x093d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0943,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-05-07bRagexe, 2015-05-07cRagexe
+#if PACKETVER == 20150507
+ packet(0x023b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0864,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0887,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0889,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0924,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x092e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x093b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0941,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0942,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0953,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0955,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0958,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-05-13aRagexe
+#if PACKETVER == 20150513
+ packet(0x022d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x02c4,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0363,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0864,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0879,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0883,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0885,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08a8,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0923,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0924,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0927,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x094a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0958,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0960,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-05-20aRagexe
+#if PACKETVER == 20150520
+ packet(0x0202,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0361,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0835,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x085e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0865,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0868,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x087d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0880,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0882,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x088c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x089c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x089e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08a2,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x08ad,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x091c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x091d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0924,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x092b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0931,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0936,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x093d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0940,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0945,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x094e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x095b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x095f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0960,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0961,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x096a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+#endif
+
+// 2015-05-27aRagexe
+#if PACKETVER == 20150527
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x083c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0940,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-06-03aRagexe
+#if PACKETVER == 20150603
+ packet(0x0361,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0437,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0811,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0819,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0860,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0864,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0867,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x086a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0873,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0877,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0881,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0884,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x088b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0897,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x089a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x089d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x089e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x08a1,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x08ad,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x091b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0922,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x092d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x093b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x093f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0955,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0956,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0960,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0969,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x096a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+#endif
+
+// 2015-06-10aRagexe
+#if PACKETVER == 20150610
+ packet(0x022d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0438,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x07e4,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0835,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0870,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0872,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0877,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x087e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0884,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0885,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0888,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x088c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x088d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x088f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0897,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08a0,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08ac,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0925,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x092b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x092c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x092e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0932,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x093e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0940,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0946,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0949,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0957,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x095d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0964,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+#endif
+
+// 2015-06-17aRagexe, 2015-06-18aRagexe
+#if PACKETVER == 20150617 || \
+ PACKETVER == 20150618
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0362,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0363,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0365,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07ec,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0811,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0869,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x086a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x086b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0870,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x087a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0886,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0894,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0940,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x094e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-06-24aRagexe
+#if PACKETVER == 20150624
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0365,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0870,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0940,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0941,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0966,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-07-01bRagexe, 2015-07-02aRagexe
+#if PACKETVER == 20150701 || \
+ PACKETVER == 20150702
+ packet(0x023b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0281,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x07e4,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0802,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x086d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x087d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x087e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0883,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x088e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0893,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08a0,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08a4,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x08a5,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x08a6,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08ad,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0919,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0923,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0928,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x092c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x093e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x093f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0946,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x094e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0954,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0956,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0958,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x095f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0960,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0968,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+#endif
+
+// 2015-07-08cRagexe
+#if PACKETVER == 20150708
+ packet(0x022d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0368,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0872,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x087f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0884,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x089d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08a5,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08ad,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x091f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x092a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x093c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x095b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0962,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-07-15aRagexe
+#if PACKETVER == 20150715
+ packet(0x023b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0362,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0364,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0436,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0437,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0438,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0835,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x083c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x085c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x086f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0873,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0879,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x087c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x087f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0886,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0895,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0896,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0897,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0899,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x089a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08a4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08ac,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0917,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x093e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0944,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0950,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0956,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0961,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0965,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+#endif
+
+// 2015-07-22bRagexe
+#if PACKETVER == 20150722
+ packet(0x023b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0281,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0360,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0361,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0368,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0811,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0817,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0869,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0878,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x087b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x087d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x087e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0880,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0884,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x088d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0899,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08a8,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0919,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0921,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0925,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x092e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x093c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x093d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x094c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0951,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0958,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+#endif
+
+// 2015-07-29aRagexe
+#if PACKETVER == 20150729
+ packet(0x0437,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0438,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x085b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0860,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x086c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x086d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x086e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x086f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0870,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0880,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0881,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0886,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x089a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x089b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08a3,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08a4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08ac,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x08ad,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0920,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x092b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x092f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x093a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x093f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0940,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x094f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0955,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x095e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0961,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+#endif
+
+// 2015-08-05aRagexe
+#if PACKETVER == 20150805
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x088a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-08-12aRagexe
+#if PACKETVER == 20150812
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x087f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-08-19aRagexe
+#if PACKETVER == 20150819
+ packet(0x0202,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x022d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0281,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x085d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0862,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0865,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0871,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0888,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0919,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x091e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0927,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0940,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0961,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0967,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-08-26aRagexe, 2015-08-26bRagexe
+#if PACKETVER == 20150826
+ packet(0x0362,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0368,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0436,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x07ec,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0819,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0861,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0865,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x086b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0870,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x087b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x088b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x088d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0890,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0891,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08a0,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x08a1,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08a8,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0924,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0928,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x092e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x093b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0945,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x094f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0951,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0959,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0964,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0968,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0969,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+#endif
+
+// 2015-09-02aRagexe
+#if PACKETVER == 20150902
+ packet(0x023b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0360,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0367,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0802,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x083c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x085b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x085d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0863,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x086f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x087b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x087f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0886,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0887,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0889,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x088d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0892,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0897,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0899,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x08a9,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0923,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0928,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x092a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x092d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0941,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0947,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x094f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0953,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x095b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0960,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+#endif
+
+// 2015-09-09aRagexe
+#if PACKETVER == 20150909
+ packet(0x023b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0361,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0365,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0437,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0861,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0871,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x087b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0883,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0886,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x088f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0895,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0928,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0940,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0941,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x095e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0962,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x096a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+#endif
+
+// 2015-09-16aRagexe, 2015-09-16cRagexe
+#if PACKETVER == 20150916
+ packet(0x022d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0817,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0835,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x085e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0869,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0873,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0877,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0881,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x089b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x089c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x089e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08ac,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0920,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0924,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x092e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x092f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0934,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0936,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0938,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x093e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0941,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0942,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0948,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x095a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0960,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0961,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0969,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+#endif
+
+// 2015-09-23bRagexe, 2015-09-23cRagexe, 2015-09-23dRagexe, 2015-09-23eRagexe, 2015-09-23fRagexe
+#if PACKETVER == 20150923
+ packet(0x0361,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0817,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x085c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x085d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0864,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x086e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x086f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0870,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0879,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x087f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0886,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x088e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0892,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0895,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x089b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x089f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a0,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x08a2,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08a5,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x08a6,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x091e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x092b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0930,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0936,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x093b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0951,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0961,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+#endif
+
+// 2015-10-01aRagexe
+#if PACKETVER == 20151001
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0960,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-10-07aRagexe
+#if PACKETVER == 20151007
+ packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0862,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x093f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x095f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0961,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0967,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-10-14bRagexe
+#if PACKETVER == 20151014
+ packet(0x0202,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0817,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0838,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x085a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0860,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0863,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0872,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0874,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0881,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0883,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0884,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0889,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x088e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x089a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x089b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x089f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x08aa,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x091c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x091d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0930,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0934,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0944,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x094f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0956,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x095e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0961,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0964,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+#endif
+
+// 2015-10-21aRagexe, 2015-10-22aRagexe
+#if PACKETVER == 20151021 || \
+ PACKETVER == 20151022
+ packet(0x023b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x02c4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x086a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x091d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0940,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-10-28cRagexe, 2015-10-28dRagexe, 2015-10-29aRagexe
+#if PACKETVER == 20151028 || \
+ PACKETVER == 20151029
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0860,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-11-04aRagexe
+#if PACKETVER == 20151104
+ packet(0x023b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0360,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0363,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0437,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07ec,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0811,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0815,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0886,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0887,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x088b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x088d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x08a3,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08a5,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0928,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0939,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x093a,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0940,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0964,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+#endif
+
+// 2015-11-11aRagexe, 2015-11-11bRagexe
+#if PACKETVER == 20151111
+ packet(0x02c4,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0802,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085d,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0862,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0871,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0885,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x089c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0942,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x094a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0958,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0966,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0967,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0969,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-11-18aRagexe
+#if PACKETVER == 20151118
+ packet(0x022d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x035f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0365,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x086b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x088b,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08ab,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0921,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0925,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x092e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x092f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x093c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0943,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0946,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0957,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x095c,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-11-25bRagexe, 2015-11-25dRagexe
+#if PACKETVER == 20151125
+ packet(0x0361,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0365,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0366,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0368,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0438,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0802,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0838,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x085e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x085f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0863,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0883,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0884,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0885,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x088c,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x088d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x089c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x089f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x08a9,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08ad,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0920,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x092a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x092e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0939,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0951,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0956,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0957,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0959,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+#endif
+
+// 2015-12-02aRagexe
+#if PACKETVER == 20151202
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0870,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-12-09aRagexe
+#if PACKETVER == 20151209
+ packet(0x0365,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x07e4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x07ec,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0811,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0819,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x085b,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x085d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x085e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0861,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0866,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0875,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x087a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x087f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x088e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x088f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0894,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x08a1,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0920,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x092d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0930,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0932,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x093b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0948,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x094a,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0956,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x095c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0961,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0964,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+#endif
+
+// 2015-12-16aRagexe
+#if PACKETVER == 20151216
+ packet(0x022d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0361,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0364,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0436,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x085b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0864,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0865,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x086a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x086e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0870,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0874,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0885,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x088b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x089d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x089e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x08a2,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x08a9,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08ac,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x091d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0947,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0949,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0954,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0960,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0966,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0968,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+#endif
+
+// 2015-12-23bRagexe
+#if PACKETVER == 20151223
+ packet(0x02c4,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0362,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0802,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0815,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0864,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0866,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x086e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0872,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0875,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0876,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0881,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0884,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0886,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x088d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0890,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0891,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0898,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x08aa,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0918,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x091a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x091b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0920,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0923,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0924,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x095e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x095f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0965,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0967,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+#endif
+
+// 2015-12-30aRagexe
+#if PACKETVER == 20151230
+ packet(0x02c4,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x07ec,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0861,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0869,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0886,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x088e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0897,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x091d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0923,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x093a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0949,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x094e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-01-06aRagexe
+#if PACKETVER == 20160106
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07ec,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0861,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x086a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x086c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0878,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x087a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x087f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0885,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0889,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x088a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0891,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08a0,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x091d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0940,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-01-13aRagexe, 2016-01-13bRagexe, 2016-01-13bRagexe_2
+#if PACKETVER == 20160113
+ packet(0x022d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x023b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x035f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0815,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x085b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0864,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x086d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0873,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0875,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0888,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x088b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x088c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0892,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0893,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x089a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x08a0,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x08a6,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08aa,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0919,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x091b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0924,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0930,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0932,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x093c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0941,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x094d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0967,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+#endif
+
+// 2016-01-20aRagexe
+#if PACKETVER == 20160120
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0865,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-01-27cRagexe, 2016-01-27dRagexe
+#if PACKETVER == 20160127
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0922,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x095a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0961,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-02-03aRagexe
+#if PACKETVER == 20160203
+ packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0437,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0811,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0835,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x086c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0872,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0873,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x088c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0918,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x093e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0940,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0947,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0954,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x095a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x095d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-02-11aRagexe
+#if PACKETVER == 20160211
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x086c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0870,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0886,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-02-17aRagexe
+#if PACKETVER == 20160217
+ packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x023b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0362,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0365,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0864,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0870,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0873,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x087a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0888,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x088d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x088f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0899,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08a0,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08a9,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x08ac,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08ad,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x091d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0920,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0926,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x092e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x093b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x093e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0941,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x094a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x095e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0966,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0967,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0969,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+#endif
+
+// 2016-02-24aRagexe
+#if PACKETVER == 20160224
+ packet(0x022d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0364,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0436,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0861,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x086b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0884,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0885,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0888,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x08a9,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0920,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0929,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x092f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0936,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0938,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x094c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0961,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-03-02bRagexe
+#if PACKETVER == 20160302
+ packet(0x022d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0367,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0802,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0819,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x085b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0864,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0865,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0868,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0873,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0875,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x087a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x087d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0883,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08a6,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x08a9,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x091a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0927,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x092d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x092f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0945,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x094e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0950,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0957,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x095a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0960,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0961,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0967,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0968,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+#endif
+
+// 2016-03-09cRagexe
+#if PACKETVER == 20160309
+ packet(0x023b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0281,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0819,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0838,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x083c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x085a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x085f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0866,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x086a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0873,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x087c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x087e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x089b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x089d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08a7,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x091d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0920,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0922,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0929,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x092a,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x092e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0932,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x094f,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0956,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x095e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x096a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+#endif
+
+// 2016-03-16aRagexe, 2016-03-18aRagexe
+#if PACKETVER == 20160316 || \
+ PACKETVER == 20160318
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0922,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-03-23aRagexe, 2016-03-23bRagexe
+#if PACKETVER == 20160323
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0365,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0867,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0869,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x086a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0872,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0878,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0883,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0896,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x089a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x091b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0926,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0927,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0933,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x093c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-03-30aRagexe, 2016-03-30bRagexe
+#if PACKETVER == 20160330
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0365,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0867,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x086d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0878,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x087f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0889,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x088b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x088d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0918,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0925,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x092a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x092c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0930,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0939,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x093b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-04-06aRagexe, 2016-04-06bRagexe
+#if PACKETVER == 20160406
+ packet(0x0364,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x07e4,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0819,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x085a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x085c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0869,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0877,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0878,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0879,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0884,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0892,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0895,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0898,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x089b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x089e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08a1,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x08a9,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x08ac,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0927,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0933,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0934,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0940,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0949,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x094d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0953,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x095d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x095f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0962,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+#endif
+
+// 2016-04-14aRagexe, 2016-04-14bRagexe, 2016-04-14bRagexe_2, 2016-04-14cRagexe
+#if PACKETVER == 20160414
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0363,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0862,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0880,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0885,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x089e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0918,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0922,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0927,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0931,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0934,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0945,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0953,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-04-20cRagexe
+#if PACKETVER == 20160420
+ packet(0x022d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x02c4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x035f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0864,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0870,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0872,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0874,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0884,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0888,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x088b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08a5,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x092f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0935,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x094e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x095c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-04-27aRagexe
+#if PACKETVER == 20160427
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0835,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0940,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-05-04aRagexe
+#if PACKETVER == 20160504
+ packet(0x0202,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0363,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0365,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x083c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x085f,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x086b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x087f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0884,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0886,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0887,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x088a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x088d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x088f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0890,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0893,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0898,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x089d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x08ad,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0918,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0921,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0922,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0924,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x093e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0940,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0941,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0948,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0952,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x095b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0969,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+#endif
+
+// 2016-05-11aRagexe
+#if PACKETVER == 20160511
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0894,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x089b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0918,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0920,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0940,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-05-18aRagexe
+#if PACKETVER == 20160518
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x086c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0874,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x089a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a9,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0928,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-05-25aRagexe, 2016-05-26aRagexe
+#if PACKETVER == 20160525 || \
+ PACKETVER == 20160526
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x085e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0867,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x086a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0899,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x089c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x091d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x092c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0937,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0945,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x094a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0951,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0956,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-06-01aRagexe
+#if PACKETVER == 20160601
+ packet(0x0202,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0863,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0870,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x087d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x088d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x088f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0895,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x08a7,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08ac,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0924,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x095b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x095f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0961,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-06-08aRagexe, 2016-06-08bRagexe, 2016-06-09aRagexe
+#if PACKETVER == 20160608 || \
+ PACKETVER == 20160609
+ packet(0x022d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x02c4,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x035f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0437,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07ec,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0802,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0889,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0899,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x089b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x08a6,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x093b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x094d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0958,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x095b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0969,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-06-15aRagexe
+#if PACKETVER == 20160615
+ packet(0x0281,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0363,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0369,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x083c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0866,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0870,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x087d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x087e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x087f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0884,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0887,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0888,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x088a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x088d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0891,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0898,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x092f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x093e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0947,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0948,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x094a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x094b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0954,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0957,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0958,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x095c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x095e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0961,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+#endif
+
+// 2016-06-22aRagexe
+#if PACKETVER == 20160622
+ packet(0x023b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x035f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0361,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x07e4,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0861,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0865,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0867,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0880,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0887,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0890,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0891,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0892,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x089a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x089e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x08a2,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x08a8,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x091c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x092d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x092f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0936,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0937,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x093b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x093f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0946,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0959,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0965,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0969,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+#endif
+
+// 2016-06-29aRagexe, 2016-06-30aRagexe
+#if PACKETVER == 20160629 || \
+ PACKETVER == 20160630
+ packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x022d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x035f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0363,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0368,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x085c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x085e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0860,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0861,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0863,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0867,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x086b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0881,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0885,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x088e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0893,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x091e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0922,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0925,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0926,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x093e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0946,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0948,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x094a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0957,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x095a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0968,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0969,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x096a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+#endif
+
+// 2016-07-06bRagexe
+#if PACKETVER == 20160706
+ packet(0x0362,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0436,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x085f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0860,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0869,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x086b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0884,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0886,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0892,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0899,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08a4,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08a5,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08a8,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0918,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x091b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0924,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0926,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0927,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0929,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x092d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0939,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x093d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0944,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0945,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x094c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0952,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0957,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0958,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+#endif
+
+// 2016-07-13aRagexe, 2016-07-13bRagexe, 2016-07-13cRagexe, 2016-07-13dRagexe
+#if PACKETVER == 20160713
+ packet(0x022d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0363,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0364,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0838,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0860,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0865,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0869,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0875,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0877,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x087b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0883,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x088d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0892,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x089a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x089f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08a2,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08a4,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x091c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x091d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0921,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0922,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x092c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0931,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0939,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0944,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0945,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0947,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0957,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x095b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+#endif
+
+// 2016-07-20aRagexe, 2016-07-20bRagexe
+#if PACKETVER == 20160720
+ packet(0x0362,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0363,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0365,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x07e4,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0838,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x085b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x086a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x086d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x087f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0883,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0887,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0897,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x089a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x089c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x089e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08a0,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x08aa,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0917,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x091c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x092a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x093b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x093e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0946,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x094d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0953,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x095b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0960,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0969,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+#endif
+
+// 2016-07-27aRagexe, 2016-07-27bRagexe
+#if PACKETVER == 20160727
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x023b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0362,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0363,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0436,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0438,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x07ec,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0866,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0868,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0869,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0874,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0877,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0883,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0887,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x088e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0891,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x089f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x08a2,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a4,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x08a7,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x092e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0936,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0941,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0946,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0949,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0951,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x095f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0966,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0969,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+#endif
+
+// 2016-08-03bRagexe
+#if PACKETVER == 20160803
+ packet(0x0364,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x085d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0878,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x087f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0881,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0886,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0887,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0888,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x088b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0891,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0895,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x089c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x089e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x08a1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x091b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0929,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0930,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0932,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0934,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0937,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x093a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x093e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x093f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0952,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0955,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0956,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0959,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x095a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x096a,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+#endif
+
+// 2016-08-10aRagexe
+#if PACKETVER == 20160810
+ packet(0x0361,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0819,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0838,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x085d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x085e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x085f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0860,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x086f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0875,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0879,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x087a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0885,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0888,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0890,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x089d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x089f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08a9,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x091a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x091b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x091c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0926,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x092b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x092d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0935,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0943,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x094b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0959,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x095b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0967,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+#endif
+
+// 2016-08-17aRagexe
+#if PACKETVER == 20160817
+ packet(0x0364,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0437,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x07e4,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0811,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0819,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x083c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x085c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0867,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x086b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0875,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x087f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0886,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0891,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x089c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x08a5,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a6,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x08a9,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x08ab,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x08ac,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x08ad,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x091b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0929,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x092d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0930,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0939,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x093c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0957,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0960,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0963,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+#endif
+
+// 2016-08-24aRagexe
+#if PACKETVER == 20160824
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0934,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-08-31aRagexe, 2016-08-31bRagexe
+#if PACKETVER == 20160831
+ packet(0x022d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0366,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0835,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0865,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x086d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0870,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0874,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0876,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0878,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x087c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x08a8,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x08a9,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0917,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x091b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x092c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x092e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0938,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x093a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0946,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x094a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x094f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0950,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0954,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0957,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x095e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0960,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0964,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0967,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+#endif
+
+// 2016-09-07aRagexe
+#if PACKETVER == 20160907
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x091c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-09-13aRagexe
+#if PACKETVER == 20160913
+ packet(0x0361,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0817,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x085b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0865,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0874,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0875,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0879,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x087b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0887,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0889,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x088e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x088f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0891,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0892,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x089b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x089c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0928,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0935,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x093a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0949,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x094a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0950,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0952,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0954,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0962,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0963,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0968,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+#endif
+
+// 2016-09-21aRagexe
+#if PACKETVER == 20160921
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x094a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-09-28cRagexe
+#if PACKETVER == 20160928
+ packet(0x0202,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0366,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0436,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0811,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0838,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0864,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0866,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x086d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0872,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0878,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0889,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x088e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0897,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x089a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x08a2,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a9,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0919,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x091e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0927,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x092d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0944,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x094d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x094e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0953,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0955,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0957,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x095a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+#endif
+
+// 2016-10-05aRagexe
+#if PACKETVER == 20161005
+ packet(0x0202,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0838,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0863,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0886,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x088e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0891,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0892,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x089b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x089c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08a0,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08ac,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x08ad,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0918,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0919,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x091e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x092b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0931,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0932,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x093b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0942,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0945,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x094a,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x094d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0952,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x095a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x095b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0967,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+#endif
+
+// 2016-10-12aRagexe
+#if PACKETVER == 20161012
+ packet(0x023b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0364,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0365,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0369,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x07ec,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0819,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x085b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x085e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0863,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0868,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x086d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0872,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0875,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0880,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0893,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a0,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x092d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0936,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0937,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0939,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0943,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0944,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0951,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x095c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0962,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0966,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0967,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+#endif
+
+// 2016-10-19aRagexe
+#if PACKETVER == 20161019
+ packet(0x022d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0361,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0889,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0892,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0946,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0963,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-10-26bRagexe, 2016-10-26cRagexe
+#if PACKETVER == 20161026
+ packet(0x0363,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0438,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x085a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x085f,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0861,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0862,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x086a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x086c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x086e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x087a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x087c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x087f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0886,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0891,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0894,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0898,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x091a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x091b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0926,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x092c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x092e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x092f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0930,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x094b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0953,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x095c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x095e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0962,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+#endif
+
+// 2016-11-02aRagexe, 2016-11-03aRagexe
+#if PACKETVER == 20161102 || \
+ PACKETVER == 20161103
+ packet(0x0361,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0367,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0436,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0802,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0838,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x083c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x085f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0869,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x086c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x086f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0874,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0886,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x088f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0890,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x089f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x08a2,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x08aa,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x091b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0922,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0925,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0928,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x092f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0936,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0946,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0949,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x095e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0964,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0965,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0966,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+#endif
+
+// 2016-11-09aRagexe, 2016-11-09bRagexe
+#if PACKETVER == 20161109
+ packet(0x02c4,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0361,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0362,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0366,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x085d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x085e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0865,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x086a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x086d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0870,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0876,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0881,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x088e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0891,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0898,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x089a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x089d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x089f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08a7,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x08ad,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0927,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0937,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x093c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x093f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0954,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0956,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+#endif
+
+// 2016-11-16aRagexe
+#if PACKETVER == 20161116
+ packet(0x0368,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0369,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0835,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x085f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0864,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x086f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0885,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x088b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x088d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x088f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0890,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0892,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0893,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x08a1,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08a2,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x08ac,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0920,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0925,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x092a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0931,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x093c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x094a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0952,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0957,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x095b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x095d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x095f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0967,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+#endif
+
+// 2016-11-23aRagexe
+#if PACKETVER == 20161123
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0362,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0437,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x085c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0861,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0862,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0866,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x086f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0871,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x087f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0880,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0882,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x088b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x089c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08a9,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x091a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0926,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x092a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x092f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0930,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0941,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x094d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x094f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x095a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x095b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0962,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x096a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+#endif
+
+// 2016-11-30aRagexe, 2016-11-30bRagexe
+#if PACKETVER == 20161130
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x088f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0931,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0943,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0954,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0959,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-12-07cRagexe, 2016-12-07eRagexe
+#if PACKETVER == 20161207
+ packet(0x023b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0867,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0868,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0875,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x087e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0886,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x08a1,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08a2,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08ad,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0918,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x091d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0943,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x095d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0965,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-12-14bRagexe, 2016-12-14cRagexe
+#if PACKETVER == 20161214
+ packet(0x022d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0281,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x02c4,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0436,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0862,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x086d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0887,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0895,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0899,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a6,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x092e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x093d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-12-21aRagexe, 2016-12-21bRagexe
+#if PACKETVER == 20161221
+ packet(0x035f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0366,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0438,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0817,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x085b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0866,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0876,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0881,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0884,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0885,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x088c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0890,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0899,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x089a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x089b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x08aa,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x091e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0926,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0928,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x092c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x092e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0930,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0943,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0946,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x094b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x095a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0964,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0965,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+#endif
+
+// 2016-12-28aRagexe
+#if PACKETVER == 20161228
+ packet(0x0362,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x085a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x085e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0865,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x086a,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x086c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x086d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0870,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0871,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0875,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0886,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0889,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0893,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x089f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a2,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08a3,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x08a5,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08ab,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08ac,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x08ad,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x091c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0929,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x092c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0934,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0935,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0938,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x093d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0944,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+#endif
+
+// 2017-01-04aRagexe
+#if PACKETVER == 20170104
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x085a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x087f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0896,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x091b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0940,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-01-11aRagexe
+#if PACKETVER == 20170111
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0877,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x087f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x088a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a1,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08a3,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08a6,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x091a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x091b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0940,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x094c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0961,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0969,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-01-18aRagexe
+#if PACKETVER == 20170118
+ packet(0x022d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0364,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0862,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0865,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x086f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0873,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x089e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x08ad,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x091f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0927,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0933,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0958,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0962,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x096a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+#endif
+
+// 2017-01-25aRagexe
+#if PACKETVER == 20170125
+ packet(0x0438,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0811,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x086e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0876,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0877,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0879,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x087b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x087d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0881,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0884,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0893,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0894,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0895,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0898,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x089b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x08a5,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x091b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x091c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x091d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0920,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0929,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x092b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0930,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x093c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0943,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0944,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x095c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0965,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0968,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+#endif
+
+// 2017-02-01aRagexe
+#if PACKETVER == 20170201
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0815,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x085e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0875,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0879,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0881,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0884,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0886,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x088b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08a4,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0919,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0920,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0938,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x094c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0966,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0969,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-02-08bRagexe
+#if PACKETVER == 20170208
+ packet(0x02c4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0367,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0860,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x088c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0892,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08a1,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08ac,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0921,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0923,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x092d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0932,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0937,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-02-15aRagexe
+#if PACKETVER == 20170215
+ packet(0x02c4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x035f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0811,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x083c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x085c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0876,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x087c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x087d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x087e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0883,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0884,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x088a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x088b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x088c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0890,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0896,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x089b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a2,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x08a8,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x091c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0925,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x092b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x092d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0942,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x094e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x095f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0962,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0969,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+#endif
+
+// 2017-02-22aRagexe
+#if PACKETVER == 20170222
+ packet(0x0202,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0866,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0870,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0871,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0877,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0894,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08a3,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08a8,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0937,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0939,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0943,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x095d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0962,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-02-28aRagexe, 2017-02-28bRagexe
+#if PACKETVER == 20170228
+ packet(0x022d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0360,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0819,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x085e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0863,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x086b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0873,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0874,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0876,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0883,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0884,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0889,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0893,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x089e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a0,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08a2,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a6,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08a7,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x091f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x092a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x092e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0937,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x093e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0944,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0947,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0948,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0952,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0955,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+#endif
+
+// 2017-03-08aRagexe
+#if PACKETVER == 20170308
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x087d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-03-15cRagexe
+#if PACKETVER == 20170315
+ packet(0x02c4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x035f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0360,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0366,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0436,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x07ec,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x085c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0863,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x086a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0872,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x087b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0884,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x088b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x088d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x088f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0892,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x089c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x08aa,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x091a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x091b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x091d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0920,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0922,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0944,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x094a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x094e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0950,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0952,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+#endif
+
+// 2017-03-22aRagexe, 2017-03-22bRagexe
+#if PACKETVER == 20170322
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x091a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-03-29bRagexe, 2017-03-29cRagexe
+#if PACKETVER == 20170329
+ packet(0x0281,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0363,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x087a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0888,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x08a8,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0917,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0926,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0929,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x092e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0937,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0939,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0949,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x095f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-04-05bRagexe, 2017-04-05cRagexe
+#if PACKETVER == 20170405
+ packet(0x022d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0281,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0860,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0864,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0865,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x086f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0893,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08a5,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x094c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0964,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-04-12aRagexe
+#if PACKETVER == 20170412
+ packet(0x023b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0365,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0863,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0869,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x086d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0878,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0879,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x087b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x088b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0890,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0893,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0898,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x089a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x089c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08a1,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x091a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x091e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0929,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x092e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0938,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0942,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0945,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0949,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x094f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0952,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0959,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x095b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x095c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x095d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+#endif
+
+// 2017-04-19aRagexe
+#if PACKETVER == 20170419
+ packet(0x0811,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0819,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0838,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x085a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x085e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0862,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0868,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x086a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0872,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0881,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x088d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x088f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0897,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0898,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x089d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x08aa,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x091b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0920,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0922,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0930,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0931,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0935,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x093a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x093f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0942,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x095c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x095d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0963,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0965,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+#endif
+
+// 2017-04-26bRagexe
+#if PACKETVER == 20170426
+ packet(0x0281,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0866,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x086f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x087a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0887,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0899,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x089c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x08a2,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08a4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x091f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0927,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0940,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0958,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0963,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-05-02aRagexe, 2017-05-02bRagexe
+#if PACKETVER == 20170502
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0875,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0894,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x089c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x093c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0950,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-05-17aRagexe
+#if PACKETVER == 20170517
+ packet(0x0364,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0367,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0815,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0817,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0868,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0875,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x087b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x087d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x088c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x088d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0894,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0896,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0899,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x089e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x089f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x08a2,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x08a8,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x08aa,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x091b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0923,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x093b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0945,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0946,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0947,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0958,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0960,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0964,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+#endif
+
+// 2017-05-24aRagexe, 2017-05-24bRagexe
+#if PACKETVER == 20170524
+ packet(0x0364,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0368,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0802,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x085e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x085f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0860,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0864,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0866,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0868,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x086d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0873,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0874,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x087d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0882,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x088d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0894,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x089c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x08a1,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x091e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0923,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0925,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0934,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0946,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0958,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x095a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x095b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0964,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0967,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0968,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+#endif
+
+// 2017-05-31aRagexe
+#if PACKETVER == 20170531
+ packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0369,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x07e4,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x07ec,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0819,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x085b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x085f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0861,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0868,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0873,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0875,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0878,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x087b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0885,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x088b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x088d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0894,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x089a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x089c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x08a2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x08ac,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x08ad,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x092d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0933,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0937,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0940,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0945,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0963,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0968,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+#endif
+
+// 2017-06-07cRagexe
+#if PACKETVER == 20170607
+ packet(0x0361,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x07e4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x085a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x085e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0862,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0863,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0864,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0871,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0873,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0875,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0885,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x088a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0897,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x089d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a9,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08ab,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0917,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0918,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0919,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0925,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0927,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0931,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0934,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0938,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x093d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0942,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0944,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0949,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+#endif
+
+// 2017-06-14bRagexe
+#if PACKETVER == 20170614
+ packet(0x023b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0361,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0364,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0367,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0437,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0838,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x083c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0860,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0865,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0866,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0867,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x086b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0877,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0879,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x087d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x087e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0889,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0899,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x089d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08a2,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x08ad,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x091b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0928,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x092f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0936,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0944,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0957,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0963,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+#endif
+
+// 2017-06-21bRagexe
+#if PACKETVER == 20170621
+ packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0365,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0366,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0802,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x087d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0885,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0889,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08a8,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0956,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0957,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x095b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x095c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0961,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-06-28bRagexe
+#if PACKETVER == 20170628
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0863,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-07-05aRagexe
+#if PACKETVER == 20170705
+ packet(0x0202,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x02c4,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0879,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0886,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x088d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x088e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x089a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x089d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x091a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x092f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0930,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0932,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0934,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x094c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-07-12bRagexe
+#if PACKETVER == 20170712
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0944,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-07-19aRagexe
+#if PACKETVER == 20170719
+ packet(0x022d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0367,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0368,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0369,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x07e4,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x085a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x085e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0863,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x086e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x087d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0881,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0882,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0885,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0891,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0898,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x089a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x089d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x08a6,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08a8,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x091b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x091f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x092c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x092e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x092f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x093d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x093e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0944,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0946,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0966,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+#endif
+
+// 2017-07-26aRagexe
+#if PACKETVER == 20170726
+ packet(0x0363,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0366,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0369,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0438,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0838,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0873,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0874,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0878,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0881,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0888,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x088e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x08a3,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08a7,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08aa,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x08ab,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08ac,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x091d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x091e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x091f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0921,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0923,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0943,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x094f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0950,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0952,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0954,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x095a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0963,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+#endif
+
+// 2017-08-01aRagexe, 2017-08-01bRagexe
+#if PACKETVER == 20170801
+ packet(0x022d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0281,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x087d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a6,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x094f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x095a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-08-09cRagexe
+#if PACKETVER == 20170809
+ packet(0x022d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0281,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0364,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0366,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0367,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x07e4,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0802,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0835,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0868,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x086e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x086f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0876,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x087d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0880,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x088c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0890,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0892,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0895,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0899,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08a3,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x08a6,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0918,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0921,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x092a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x092b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0931,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0939,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x093b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0940,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+#endif
+
+// 2017-08-16cRagexe, 2017-08-16dRagexe
+#if PACKETVER == 20170816
+ packet(0x022d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0361,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0362,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0438,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x085a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0862,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0864,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x087e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0881,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0882,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0884,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0888,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0889,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x08a3,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08a7,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08a9,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x08ac,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x091c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0921,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0925,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x092c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x093a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x093d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0940,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0941,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0950,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0959,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0960,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+#endif
+
+// 2017-08-23aRagexe
+#if PACKETVER == 20170823
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x086c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x086d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08ac,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x095b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-08-30aRagexe, 2017-08-30bRagexe
+#if PACKETVER == 20170830
+ packet(0x0281,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x02c4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0363,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0364,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0860,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0865,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x086a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0875,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0884,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0888,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0899,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x089a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x089e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a2,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x091e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0921,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0925,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x092e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0939,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x093e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0940,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0942,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0943,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0947,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0951,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0959,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+#endif
+
+// 2017-09-06cRagexe
+#if PACKETVER == 20170906
+ packet(0x0202,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0281,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0802,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0860,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0866,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x086c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x087b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a2,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08a3,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08a7,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x091a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x091e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0953,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-09-13cRagexe
+#if PACKETVER == 20170913
+ packet(0x0281,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0437,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x07e4,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0817,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0835,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x085a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0860,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0865,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0866,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x088c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0890,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0891,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0892,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x08a7,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08aa,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08ab,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08ac,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08ad,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x091b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x091d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x091e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0920,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0923,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0925,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0927,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x095a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x095c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+#endif
+
+// 2017-09-20aRagexe
+#if PACKETVER == 20170920
+ packet(0x0369,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0436,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x07ec,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x085a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0861,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0862,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0864,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0865,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x086a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x086c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0874,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0875,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0889,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x088e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x089b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0919,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x091e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0921,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0923,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0926,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x092e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0937,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0939,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0945,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x094c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x095d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0961,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0966,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x096a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+#endif
+
+// 2017-09-27bRagexe, 2017-09-27cRagexe, 2017-09-27dRagexe
+#if PACKETVER == 20170927
+ packet(0x02c4,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x035f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0361,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0362,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0366,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x085c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0873,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0875,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x087d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x087e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x088b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0899,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x089a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x089b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08a3,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x08a5,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08a6,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08ad,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x091e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0922,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0923,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0927,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x093b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0942,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0945,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x094b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x094d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0959,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x095a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+#endif
+
+// 2017-10-02cRagexe
+#if PACKETVER == 20171002
+ packet(0x022d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0363,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0885,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0897,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x089d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0928,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x092d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0934,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x093b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x093d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x093e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0943,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x095f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-10-11aRagexe, 2017-10-11bRagexe
+#if PACKETVER == 20171011
+ packet(0x023b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x087b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0882,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0950,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0954,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-10-18aRagexe
+#if PACKETVER == 20171018
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0363,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x086a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x087e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0889,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x089a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x089f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x08a6,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0938,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0944,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x094a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x094f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-10-25bRagexe, 2017-10-25cRagexe, 2017-10-25dRagexe, 2017-10-25eRagexe
+#if PACKETVER == 20171025
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08a2,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-11-01aRagexe
+#if PACKETVER == 20171101
+ packet(0x022d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0368,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0369,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0438,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0835,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x085b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0860,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x086c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0872,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0876,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0886,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x088e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0890,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0895,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0899,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x089b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x089c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08a0,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08ab,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08ad,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x091b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0939,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x094a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x094d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0957,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x095a,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0962,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0966,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+#endif
+
+// 2017-11-08aRagexe
+#if PACKETVER == 20171108
+ packet(0x0202,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0361,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x07e4,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0815,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0819,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0838,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x085d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0863,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0878,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x087e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0884,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0896,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0897,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x08a2,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08a9,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x08ad,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x091d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x091f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0940,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0941,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0945,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0947,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0949,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x094e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0958,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x095a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0963,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0965,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0967,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+#endif
+
+// 2017-11-15aRagexe
+#if PACKETVER == 20171115
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0365,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0802,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x086d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x086f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x087e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0883,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x088b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0890,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0898,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0926,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0958,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x095a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-11-22aRagexe
+#if PACKETVER == 20171122
+ packet(0x0281,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x02c4,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x035f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0838,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x083c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x085b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0862,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0867,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0877,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0885,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0890,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0891,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0893,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0897,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0898,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x089a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x089e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x08a6,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x08a9,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x091e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0920,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0923,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0934,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x093b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0945,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0946,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0947,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0962,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0968,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+#endif
+
+// 2017-11-29aRagexe
+#if PACKETVER == 20171129
+ packet(0x02c4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0363,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0365,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0862,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x086d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0876,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0878,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x088a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x089c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x08a5,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0940,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x094b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0953,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0966,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-12-06bRagexe, 2017-12-06cRagexe
+#if PACKETVER == 20171206
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0867,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x086a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x086e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0885,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0888,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0897,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x089d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a2,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x08a4,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x091d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0923,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x092e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0936,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0942,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0958,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0961,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-12-13bRagexe
+#if PACKETVER == 20171213
+ packet(0x0202,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0860,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0881,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0890,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x091a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0957,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-12-20aRagexe
+#if PACKETVER == 20171220
+ packet(0x0281,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0366,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0369,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0436,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0437,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x085e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0861,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0872,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0873,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0880,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0882,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0885,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x088c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0899,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x089e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x08a7,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x091b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x091e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0924,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0929,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0933,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x093e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0941,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0946,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0951,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0957,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0964,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+#endif
+
+// 2017-12-27aRagexe
+#if PACKETVER == 20171227
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0802,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x087d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0888,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x088a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x088d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08a0,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a5,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x092c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x092e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0938,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0945,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0946,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0969,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x096a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+#endif
+
+// 2018-01-03aRagexe, 2018-01-03bRagexe
+#if PACKETVER == 20180103
+ packet(0x02c4,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0363,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0865,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x086b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x086d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0872,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0876,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0879,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x088e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x089f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x08a9,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08ab,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x08ac,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x091d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0922,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0926,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0927,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x092c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0935,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0938,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0941,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0946,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0948,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x094e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x095d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x095f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+#endif
+
+// 2018-01-17aRagexe
+#if PACKETVER == 20180117
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0875,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2018-01-24bRagexe, 2018-01-31Ragexe
+#if PACKETVER == 20180124 || \
+ PACKETVER == 20180131
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0802,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0868,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x086a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x086f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x087a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0888,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0890,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0919,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0940,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0946,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x094d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0958,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0961,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2018-02-07bRagexe, 2018-02-07cRagexe
+#if PACKETVER == 20180207
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0360,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0870,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0881,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x092c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x092e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0940,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0950,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2018-02-13aRagexe, 2018-02-13bRagexe
+#if PACKETVER == 20180213
+ packet(0x0369,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0802,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0817,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x085a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x086f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0874,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0875,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0878,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x087b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0882,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x088c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0892,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0898,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x089c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08a3,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08a5,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x08a9,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x08ad,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0917,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0922,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0924,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0926,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0933,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0936,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x093c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0943,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0955,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x095a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0962,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+#endif
+
+// 2018-02-21bRagexe
+#if PACKETVER == 20180221
+ packet(0x0202,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0366,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0436,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0838,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0867,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x086c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x086f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0871,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0876,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0879,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x087d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0880,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0881,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0883,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x088f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0891,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0897,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0899,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x089d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0917,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x091e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0929,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x093d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x094b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x094d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x094e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0957,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0964,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x096a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+#endif
+
+// 2018-03-07bRagexe, 2018-03-09aRagexe
+#if PACKETVER == 20180307 || \
+ PACKETVER == 20180309
+ packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x035f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0437,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x07e4,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0861,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0862,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0864,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x086c,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0870,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0872,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0877,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x088d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0893,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x089b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x08a6,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x08aa,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08ab,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0917,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0920,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0937,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0939,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x093d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0941,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0944,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0948,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0951,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0954,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0957,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0969,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+#endif
+
+// 2018-03-14nRagexe
+#if PACKETVER == 20180314
+ packet(0x0361,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0366,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0369,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0436,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x085a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0862,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0863,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0868,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x086e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0874,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x087a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0888,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x088a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x088d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0894,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x089b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0921,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0927,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x092f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0933,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0935,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0945,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x094d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x094e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0956,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0959,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x095f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0962,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0967,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+#endif
+
+// 2018-11-21bRagexe, 2018-11-28aRagexe, 2018-11-28bRagexe, 2018-11-28cRagexe, 2018-12-05aRagexe, 2018-12-12aRagexe, 2018-12-12bRagexe, 2018-12-19bRagexe, 2018-12-26aRagexe, 2019-01-09aRagexe
+#if PACKETVER == 20181121 || \
+ PACKETVER == 20181128 || \
+ PACKETVER == 20181205 || \
+ PACKETVER == 20181212 || \
+ PACKETVER == 20181219 || \
+ PACKETVER == 20181226 || \
+ PACKETVER >= 20190109
+ packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0362,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0365,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x07ec,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 14
+#endif
+
+
+#endif /* MAP_PACKETS_SHUFFLE_MAIN_H */
diff --git a/src/map/packets_shuffle_re.h b/src/map/packets_shuffle_re.h
new file mode 100644
index 000000000..ec1d3971f
--- /dev/null
+++ b/src/map/packets_shuffle_re.h
@@ -0,0 +1,9720 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2013-2019 Hercules Dev Team
+ * Copyright (C) 2018-2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+//Included directly by clif.c in packet_loaddb()
+
+#ifndef MAP_PACKETS_SHUFFLE_RE_H
+#define MAP_PACKETS_SHUFFLE_RE_H
+
+#ifndef packet
+ #define packet(a,...)
+#endif
+
+/*
+ * packet syntax
+ * - packet(packet_id,function,offset ( specifies the offset of a packet field in bytes from the begin of the packet ),...)
+ * - Example: packet(0x0072,clif->pWantToConnection,2,6,10,14,18);
+ */
+
+/* This file is autogenerated, please do not commit manual changes */
+
+
+// 2012-07-10aRagexeRE, 2012-07-12aRagexeRE
+#if PACKETVER == 20120710 || \
+ PACKETVER == 20120712
+ packet(0x0202,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x02c4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0362,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0365,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0367,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0436,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x07e4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0811,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x085b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0877,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0878,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x087f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x088d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0893,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0899,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08a3,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08a6,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08a8,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08aa,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0936,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0948,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x094b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x094e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0953,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0956,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0958,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+#endif
+
+// 2012-07-16aRagexeRE
+#if PACKETVER == 20120716
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x089f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2012-07-24aRagexeRE
+#if PACKETVER == 20120724
+ packet(0x035f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0815,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0835,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0865,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0866,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0872,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0877,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x087c,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0887,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0888,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x088e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08a1,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x08a9,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08ab,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x091c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x091f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0928,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0929,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x092b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0935,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0938,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x093c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0945,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0957,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0959,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0963,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0965,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0966,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+#endif
+
+// 2012-08-01aRagexeRE, 2012-08-01bRagexeRE
+#if PACKETVER == 20120801
+ packet(0x0360,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0438,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x085d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x086a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x086b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x086f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0873,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0875,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x087b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x088b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0890,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0895,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x089c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x089d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x089f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x08a2,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08aa,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08ab,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0917,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x091d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x092a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x092e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0930,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0934,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x093c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0941,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0946,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0964,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+#endif
+
+// 2012-08-08aRagexeRE, 2012-08-08bRagexeRE, 2012-08-08cRagexeRE, 2012-08-08dRagexeRE
+#if PACKETVER == 20120808
+ packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x088f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x093d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0940,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2012-08-14aRagexeRE, 2012-08-14bRagexeRE
+#if PACKETVER == 20120814
+ packet(0x0281,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0361,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0365,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0366,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0438,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x07ec,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0815,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0838,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x085e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0861,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0862,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0865,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0868,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x086f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0875,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x087f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0882,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x088b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x088d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0895,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x08a8,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x091f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0920,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0929,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0932,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0934,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0941,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0967,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0969,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+#endif
+
+// 2012-08-22aRagexeRE, 2012-08-22bRagexeRE, 2012-08-22cRagexeRE
+#if PACKETVER == 20120822
+ packet(0x0365,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0437,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x085a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x085c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x085d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x086b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x086e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0872,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x087c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x087d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0885,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x088a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0899,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x089f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08a5,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08ab,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0917,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0924,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0927,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0935,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0937,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0940,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0943,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x094d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x094e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0953,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0955,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0958,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x095b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+#endif
+
+// 2012-08-30aRagexeRE, 2012-08-30bRagexeRE
+#if PACKETVER == 20120830
+ packet(0x022d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0364,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0802,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0838,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0861,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0872,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0887,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0888,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0890,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x091d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0926,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0934,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0945,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x094b,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0964,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2012-09-05aRagexeRE
+#if PACKETVER == 20120905
+ packet(0x022d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0365,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0817,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x085a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x085d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x086f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0876,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0877,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0878,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x087a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x087b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x087e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0887,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0895,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0897,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08a0,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08a6,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0917,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0918,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x091a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0927,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x093c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0944,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0945,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0950,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0954,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0959,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0967,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+#endif
+
+// 2012-09-11aRagexeRE
+#if PACKETVER == 20120911
+ packet(0x0438,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0819,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0868,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x086f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0876,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0877,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0879,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x088a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x088f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08a4,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08a5,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x08a6,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08a7,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08ad,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0930,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0935,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0948,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0949,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x094b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0958,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0959,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0962,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0963,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0966,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0968,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x096a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+#endif
+
+// 2012-09-19aRagexeRE
+#if PACKETVER == 20120919
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0956,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2012-09-25aRagexeRE, 2012-09-26aRagexeRE
+#if PACKETVER == 20120925 || \
+ PACKETVER == 20120926
+ packet(0x07e4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0815,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0819,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0835,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0838,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x085d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0869,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0873,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x087a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x087e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0887,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x088a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x088d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x088f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x089d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08a4,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x091c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x091e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0923,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0927,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0932,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0942,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0948,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0950,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0956,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0957,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0958,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x095e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0963,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+#endif
+
+// 2012-10-10aRagexeRE, 2012-10-10bRagexeRE, 2012-10-11aRagexeRE
+#if PACKETVER == 20121010 || \
+ PACKETVER == 20121011
+ packet(0x0202,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0817,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x085a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0869,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x086c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0874,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x087d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0883,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0888,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x088f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0891,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0896,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0898,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a1,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x08a6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x08a9,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0925,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0934,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x093c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0942,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0946,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0947,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x094c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0957,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0958,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0959,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x095c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0964,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0969,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+#endif
+
+// 2012-10-17aRagexeRE, 2012-10-17bRagexeRE
+#if PACKETVER == 20121017
+ packet(0x023b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0365,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0868,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x086b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0887,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0888,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0897,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x089a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08a6,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0918,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0920,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0960,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0962,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0965,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2012-10-24aRagexeRE
+#if PACKETVER == 20121024
+ packet(0x0436,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0437,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0438,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0817,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0838,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x085a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0868,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0872,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0875,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x087a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x087b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x087e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0882,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0888,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0889,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x088a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x089c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x08a9,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x08aa,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0931,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0938,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x093a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0942,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0947,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0954,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0955,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x095d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x095e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0965,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+#endif
+
+// 2012-10-31aRagexeRE
+#if PACKETVER == 20121031
+ packet(0x022d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0871,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0877,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0898,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x092b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2012-11-07aRagexeRE
+#if PACKETVER == 20121107
+ packet(0x0360,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0361,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0365,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x085c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0861,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0865,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x086c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x086d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0871,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0873,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0878,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x087f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x088f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0890,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0891,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0896,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x089a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x089b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x08a2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x08ad,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0922,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0934,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x093b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0945,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x094d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0960,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0963,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0966,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x096a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+#endif
+
+// 2012-11-14aRagexeRE
+#if PACKETVER == 20121114
+ packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0365,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0437,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0815,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0838,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0862,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0876,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0879,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0881,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0898,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0899,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x08a9,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x08aa,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x08ab,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x091a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0930,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0935,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0938,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x093b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x093c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0941,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0944,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0949,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x094a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x094b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x094f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x095c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0965,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x096a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+#endif
+
+// 2012-11-21aRagexeRE
+#if PACKETVER == 20121121
+ packet(0x0202,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0362,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0437,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0863,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x086a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x086d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x086f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0872,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0875,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x087e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0880,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0892,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x089a,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08a7,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x08aa,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x091a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0921,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0927,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0929,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0938,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0946,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x094d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0950,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0952,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0954,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0957,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0958,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+#endif
+
+// 2012-11-28aRagexeRE
+#if PACKETVER == 20121128
+ packet(0x0362,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0363,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x07ec,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0802,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0861,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0867,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x086c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x086e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0872,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0888,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x088b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0894,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0895,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08a8,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08ad,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x091b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x091c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x091e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x091f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0921,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0922,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x092f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0931,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0945,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0947,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0950,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0953,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0954,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0960,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+#endif
+
+// 2012-12-05aRagexeRE, 2012-12-05bRagexeRE
+#if PACKETVER == 20121205
+ packet(0x035f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0360,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0815,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0863,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0864,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x086c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0870,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0873,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0875,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0878,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0888,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0889,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x088b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x089a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x089d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x08ad,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x091a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x091c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0921,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x093a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x093e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x093f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0946,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x094b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0954,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0959,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0966,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0968,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+#endif
+
+// 2012-12-12aRagexeRE, 2012-12-12bRagexeRE, 2012-12-12cRagexeRE
+#if PACKETVER == 20121212
+ packet(0x0362,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0368,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0369,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0436,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0438,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0817,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x085c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0877,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x087d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0893,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0895,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x08a3,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08a7,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x08a9,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08aa,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08ac,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0917,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x091a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0920,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0932,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0947,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0951,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0953,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0957,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x095b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0965,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0966,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2012-12-18aRagexeRE, 2012-12-18bRagexeRE
+#if PACKETVER == 20121218
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0363,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0867,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0872,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x087a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x087b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0886,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0889,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0890,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x091a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x091c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0935,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0946,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0957,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2012-12-27aRagexeRE
+#if PACKETVER == 20121227
+ packet(0x0202,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x02c4,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0361,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0368,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0437,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0860,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0870,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0872,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x087a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0886,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0888,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x088e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0890,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0894,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0896,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x08a6,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08aa,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0917,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x091f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0920,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0932,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0933,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0940,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0943,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0947,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0953,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0958,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x095d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0962,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+#endif
+
+// 2013-01-03aRagexeRE
+#if PACKETVER == 20130103
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0940,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-01-09aRagexeRE
+#if PACKETVER == 20130109
+ packet(0x0281,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0365,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0368,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0838,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0866,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0886,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0888,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x088a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x088e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0891,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0892,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08a2,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x08aa,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08ac,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0918,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x091b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0922,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0927,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0928,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0930,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0931,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0938,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x093e,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x094f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0950,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0951,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0955,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x095e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+#endif
+
+// 2013-01-15aRagexeRE, 2013-01-16aRagexeRE
+#if PACKETVER == 20130115 || \
+ PACKETVER == 20130116
+ packet(0x0361,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x07ec,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0817,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x085e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0861,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0863,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x086b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0870,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0871,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0877,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0879,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x087c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0888,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x088b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0894,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0895,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x08a0,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x08a4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x08ac,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0918,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0928,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x092d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x092e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0939,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0946,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x094b,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x094c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x094e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x095a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+#endif
+
+// 2013-01-21aRagexeRE
+#if PACKETVER == 20130121
+ packet(0x023b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x035f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07ec,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0802,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0815,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0817,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x085d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x086c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0874,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0884,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0893,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x091f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x094f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0956,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x095b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0963,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0969,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-01-30aRagexeRE
+#if PACKETVER == 20130130
+ packet(0x035f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0367,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0368,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0437,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x085f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0862,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x086b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x087d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x087f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0885,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0886,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0887,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0889,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x089a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x089f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08a0,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x08a4,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08a9,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x091a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0920,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0924,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x093a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x093d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0956,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0957,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x095b,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x095c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x095d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+#endif
+
+// 2013-02-06aRagexeRE
+#if PACKETVER == 20130206
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0811,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0876,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0883,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0885,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0899,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08a0,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08ac,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0920,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0925,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x093a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x093c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0950,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-02-15aRagexeRE
+#if PACKETVER == 20130215
+ packet(0x023b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0366,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0802,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0869,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x086f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0886,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x089e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x089f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08ad,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0923,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0941,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0956,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x095d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0962,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-02-20bRagexeRE
+#if PACKETVER == 20130220
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x094b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-02-27aRagexeRE
+#if PACKETVER == 20130227
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x035f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0360,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0811,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0815,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x085a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0863,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0867,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0869,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x086e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x087b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0893,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0898,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08a0,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x08a1,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x091b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x091f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0924,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x092b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x092f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0936,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0946,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0951,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x095b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x095e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x095f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0967,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+#endif
+
+// 2013-03-06aRagexeRE, 2013-03-06bRagexeRE
+#if PACKETVER == 20130306
+ packet(0x022d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0367,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0368,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0802,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0817,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x085b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x085c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0860,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x086d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0881,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0890,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0898,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x089f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x08a4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x08ac,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0917,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x091e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0926,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0934,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0936,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0943,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0945,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0946,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x094a,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x094e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0951,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0960,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0962,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+#endif
+
+// 2013-03-13aRagexeRE, 2013-03-13bRagexeRE, 2013-03-13cRagexeRE
+#if PACKETVER == 20130313
+ packet(0x0202,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0887,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0920,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x092d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0947,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-03-20bRagexeRE, 2013-03-20cRagexeRE
+#if PACKETVER == 20130320
+ packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0363,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0365,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0438,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x085a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x085d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0868,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x086d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x086f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0874,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0881,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0886,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0888,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x088e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0890,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0897,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0898,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x089b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08ac,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0922,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x092e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0933,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0938,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x093f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0947,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x094c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x094e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0959,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x095a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+#endif
+
+// 2013-03-27bRagexeRE
+#if PACKETVER == 20130327
+ packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0835,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x086d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0873,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0878,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x087a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0885,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x088f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0891,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0893,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0899,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08a1,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x08a2,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x091f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x092b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x092d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x092e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x092f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0933,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0938,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0939,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x094a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x094b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x094f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0955,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0960,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0961,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0967,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+#endif
+
+// 2013-04-03aRagexeRE
+#if PACKETVER == 20130403
+ packet(0x023b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0884,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08a5,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0926,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0942,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0950,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-04-10aRagexeRE
+#if PACKETVER == 20130410
+ packet(0x0367,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0437,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0860,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0865,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x086c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0879,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x087c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x087d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0881,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x088c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x088d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0890,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0891,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x089c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x089e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x08a0,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x08a4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x08a7,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0917,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x091d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0933,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0939,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x093d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0944,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0945,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0955,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0960,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0967,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x096a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+#endif
+
+// 2013-04-17aRagexeRE
+#if PACKETVER == 20130417
+ packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x086b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0875,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0929,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0962,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0969,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x096a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+#endif
+
+// 2013-04-24aRagexeRE
+#if PACKETVER == 20130424
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0969,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-05-02aRagexeRE
+#if PACKETVER == 20130502
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x07ec,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0867,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0870,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0874,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0875,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0877,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x087c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0888,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0889,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08a1,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08a3,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0961,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0967,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+#endif
+
+// 2013-05-08bRagexeRE
+#if PACKETVER == 20130508
+ packet(0x022d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0868,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0878,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x088b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0893,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0895,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0897,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08ab,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x092d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0944,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x094d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0957,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x095c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-05-15aRagexeRE
+#if PACKETVER == 20130515
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0862,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0887,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a1,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08aa,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08ac,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x092d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0931,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x093e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0943,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0944,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0947,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0962,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0963,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-05-22aRagexeRE
+#if PACKETVER == 20130522
+ packet(0x0360,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0362,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0368,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x07ec,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0811,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x086a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x086e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0874,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x087e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x088e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x089b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x089c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08a2,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x08a3,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a6,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x08a9,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08aa,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x08ac,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0925,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0926,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0950,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0952,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x095b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x095c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x095e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0964,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0965,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+#endif
+
+// 2013-05-29aRagexeRE
+#if PACKETVER == 20130529
+ packet(0x023b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x085e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0863,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0869,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0874,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0876,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0877,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0888,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x088e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0890,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0892,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0895,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0897,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x08a7,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08a8,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0917,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0918,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0919,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0936,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0937,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0938,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0941,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0951,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0956,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0957,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0958,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0964,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+#endif
+
+// 2013-06-05cRagexeRE
+#if PACKETVER == 20130605
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0883,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-06-12bRagexeRE
+#if PACKETVER == 20130612
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x087e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0919,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x093a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0940,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0964,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-06-18#1aRagexeRE
+#if PACKETVER == 20130618
+ packet(0x0281,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x02c4,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0363,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x085a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0862,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0864,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0878,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0885,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0887,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0889,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x088e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0890,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0891,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x08a6,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08a7,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0917,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0930,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0932,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0936,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0942,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0944,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0945,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x094f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0951,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0953,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x095b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0962,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x096a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+#endif
+
+// 2013-06-26_3bRagexeRE, 2013-06-26aRagexeRE
+#if PACKETVER == 20130626
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0365,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0860,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x088b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x088c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x088f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0894,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0895,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x08a5,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08ab,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0921,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0930,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x094d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0952,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0960,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-07-03bRagexeRE
+#if PACKETVER == 20130703
+ packet(0x0202,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0873,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0930,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x094a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-07-10aRagexeRE, 2013-07-10bRagexeRE, 2013-07-10cRagexeRE, 2013-07-10dRagexeRE, 2013-07-10eRagexeRE
+#if PACKETVER == 20130710
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0880,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-07-17cRagexeRE, 2013-07-17dRagexeRE, 2013-07-17eRagexeRE
+#if PACKETVER == 20130717
+ packet(0x02c4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0819,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x083c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0862,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0863,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x086b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x086c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0882,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x088a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x088c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0897,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0898,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x089b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a6,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08a9,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08aa,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0917,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0918,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x091d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x091e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x092f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x093b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0956,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0958,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x095b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0960,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0967,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x096a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+#endif
+
+// 2013-07-24eRagexeRE, 2013-07-24fRagexeRE
+#if PACKETVER == 20130724
+ packet(0x023b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0437,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x085a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x085e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0860,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0867,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x086a,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0874,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0876,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0890,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0891,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0893,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x089c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x08ab,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0921,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0924,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0927,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x092b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x092e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x094a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0953,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0954,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0956,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0958,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x095c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x095d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0965,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0966,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+#endif
+
+// 2013-07-31cRagexeRE
+#if PACKETVER == 20130731
+ packet(0x022d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0366,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0863,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0865,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0878,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x087e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0884,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0889,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x088b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0894,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0895,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0923,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0925,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x092b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x092d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0935,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0941,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x094c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0956,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0957,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0958,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x095b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x095d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x095f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0962,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+#endif
+
+// 2013-08-07aRagexeRE
+#if PACKETVER == 20130807
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0887,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-08-14aRagexeRE
+#if PACKETVER == 20130814
+ packet(0x0202,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0281,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0368,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0815,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0835,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0868,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0873,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0874,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0885,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0887,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x088a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x088c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0895,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0896,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08a4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0923,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0926,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0927,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0936,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0937,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x093a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0941,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0947,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x094e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0958,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0959,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x095f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0962,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+#endif
+
+// 2013-08-21dRagexeRE
+#if PACKETVER == 20130821
+ packet(0x0202,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0360,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0437,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0438,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x07ec,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0815,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0862,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0863,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x086e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0879,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0881,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x088d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x088f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0892,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x08a6,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x08ad,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x091d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0923,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x092d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x093e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0947,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0954,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x095e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0962,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0964,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0967,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0969,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+#endif
+
+// 2013-08-28bRagexeRE, 2013-08-28cRagexeRE
+#if PACKETVER == 20130828
+ packet(0x023b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0361,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0364,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0817,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0873,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x087e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0889,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0893,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x089e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x089f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08a3,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x08ac,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0917,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0919,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x091e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0923,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0924,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0928,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0929,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0930,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0944,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0946,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x094a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x094c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x094f,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x095d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0966,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x096a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+#endif
+
+// 2013-09-04bRagexeRE
+#if PACKETVER == 20130904
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0838,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0937,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x093a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0940,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0956,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-09-11aRagexeRE, 2013-09-11bRagexeRE
+#if PACKETVER == 20130911
+ packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0364,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0868,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x086b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x086d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x087b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0889,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0891,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x08a4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x091e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x093a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0940,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0948,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0967,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x096a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+#endif
+
+// 2013-09-17aRagexeRE
+#if PACKETVER == 20130917
+ packet(0x035f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0811,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0838,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x083c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0863,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0868,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x086e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x086f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x087a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x087e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x088a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0895,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x089b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x089d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08a0,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a2,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x08a8,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0918,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x091c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x091e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0921,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0923,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0934,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x094c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0957,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0959,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x095b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x096a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+#endif
+
+// 2013-09-25aRagexeRE, 2013-09-25bRagexeRE
+#if PACKETVER == 20130925
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x086d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x086e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0875,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0876,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x087d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0885,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0887,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x088f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0890,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0940,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0958,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x095a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x095b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x095c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0969,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-10-02aRagexeRE
+#if PACKETVER == 20131002
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0940,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-10-08bRagexeRE
+#if PACKETVER == 20131008
+ packet(0x0202,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0362,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x07e4,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x083c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x085d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x085e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0863,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x086c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x086d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0883,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0884,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0885,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0896,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x089c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08a9,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0917,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x091c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0923,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0927,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0932,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0934,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0936,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x093c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0947,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0952,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0954,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0956,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x095d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0969,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+#endif
+
+// 2013-10-16aRagexeRE, 2013-10-16bRagexeRE
+#if PACKETVER == 20131016
+ packet(0x022d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0281,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0361,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0364,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0366,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x07ec,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0802,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x085a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x085d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0863,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0864,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0867,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x086c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0870,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0875,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0887,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0888,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x088b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0890,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0894,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x091a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x091e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x091f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0927,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0946,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x094e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x095e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0962,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0966,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+#endif
+
+// 2013-10-23aRagexeRE
+#if PACKETVER == 20131023
+ packet(0x0366,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0438,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0819,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0835,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x085b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0862,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x086e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0872,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0876,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x087f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0885,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x088a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x088b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x088f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a7,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x08ab,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08ac,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0919,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x091d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0923,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0924,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0935,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0937,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0944,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x094a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0951,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0954,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x095b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+#endif
+
+// 2013-10-30aRagexeRE
+#if PACKETVER == 20131030
+ packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x087d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0887,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a2,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0925,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-11-06aRagexeRE
+#if PACKETVER == 20131106
+ packet(0x0281,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0363,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0369,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0436,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0802,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0817,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0866,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0867,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0870,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0875,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0887,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0891,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0893,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0894,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x08a2,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0919,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x091d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0929,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0935,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x093b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0942,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0946,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0947,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0948,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0950,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0954,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x095d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0962,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0967,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+#endif
+
+// 2013-11-13aRagexeRE
+#if PACKETVER == 20131113
+ packet(0x0364,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x086d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0879,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x088c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x088f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x089a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08a4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08a8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x091c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0920,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0926,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0927,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0928,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0929,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x092b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x092c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x092d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x092e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x092f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0934,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0936,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x093c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0949,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0950,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x095d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x095f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0960,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0964,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0969,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+#endif
+
+// 2013-11-20eRagexeRE
+#if PACKETVER == 20131120
+ packet(0x0361,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0368,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0802,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0811,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0817,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x085a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x085f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0862,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0884,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x088c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x088d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x089e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08a1,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x08a4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a8,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0917,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0926,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0927,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x092b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x092d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x093e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x093f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0940,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0950,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0953,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0955,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0956,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x095e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+#endif
+
+// 2013-11-27aRagexeRE, 2013-11-27bRagexeRE
+#if PACKETVER == 20131127
+ packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0364,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0365,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0366,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0881,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0884,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x088d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0894,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x089e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0930,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x093a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0940,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x094c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x094f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x095c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0967,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x096a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+#endif
+
+// 2013-12-04dRagexeRE, 2013-12-04eRagexeRE
+#if PACKETVER == 20131204
+ packet(0x0365,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0366,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x085a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0862,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0869,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x086c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0877,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0879,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x087f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0882,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08a0,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x08a4,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08a7,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08ad,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x091f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0928,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x092d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x092f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0932,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x093b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0941,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0951,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0958,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0959,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x095b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0961,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0967,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+#endif
+
+// 2013-12-11cRagexeRE, 2013-12-11eRagexeRE
+#if PACKETVER == 20131211
+ packet(0x0202,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0366,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0865,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x086e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0873,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0881,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0886,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0892,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a3,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08a4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08ab,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x092b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0931,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x094c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-12-18aRagexeRE
+#if PACKETVER == 20131218
+ packet(0x022d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x087b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08ab,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x092f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0947,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-12-23bRagexeRE, 2013-12-23xRagexeRE
+#if PACKETVER == 20131223
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08a4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2013-12-30aRagexeRE
+#if PACKETVER == 20131230
+ packet(0x022d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x02c4,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0365,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0369,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0438,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0860,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0871,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x087b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x087e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x087f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0895,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0898,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x089c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08a9,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x091d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x091e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x091f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0926,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x092a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x093d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x093e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0943,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0949,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x094a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x094c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0968,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0969,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x096a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+#endif
+
+// 2014-01-08bRagexeRE, 2014-01-08cRagexeRE
+#if PACKETVER == 20140108
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0936,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-01-15cRagexeRE, 2014-01-15dRagexeRE, 2014-01-15eRagexeRE
+#if PACKETVER == 20140115
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0367,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0802,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0865,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0887,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x088a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x088e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x089b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08a7,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x092d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0940,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x095b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x095d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0965,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0966,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x096a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+#endif
+
+// 2014-01-22aRagexeRE
+#if PACKETVER == 20140122
+ packet(0x0360,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0811,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0863,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0870,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0871,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0872,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x088c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0890,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0893,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0899,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x089d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x08a2,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08aa,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0917,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x091a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0925,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x092f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0940,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0941,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0942,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x094b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x094c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0950,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0952,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0955,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0957,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x095d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x095f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+#endif
+
+// 2014-01-29bRagexeRE
+#if PACKETVER == 20140129
+ packet(0x0281,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0367,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07ec,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0802,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0884,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0885,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0889,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0921,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0924,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x092c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x094d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0958,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0961,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-02-05bRagexeRE
+#if PACKETVER == 20140205
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0938,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-02-12aRagexeRE
+#if PACKETVER == 20140212
+ packet(0x02c4,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0369,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0438,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x086e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0874,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0877,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0878,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x087e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0888,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x088c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x089d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x089e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x08a0,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a1,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x08a7,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08ac,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08ad,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0919,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x091b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0928,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0930,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0934,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0936,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x093d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0944,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0952,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0953,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0960,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+#endif
+
+// 2014-02-19aRagexeRE, 2014-02-19bRagexeRE
+#if PACKETVER == 20140219
+ packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0360,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0364,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0802,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0838,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x085c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x085d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x085f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0860,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0868,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x086f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x087c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0889,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0898,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x089f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08a6,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x08ac,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0921,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0927,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0939,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0946,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0949,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0953,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x095a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0961,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+#endif
+
+// 2014-02-26aRagexeRE, 2014-02-26bRagexeRE
+#if PACKETVER == 20140226
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0362,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0867,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0877,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0887,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0894,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0895,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x091a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0921,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0931,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0941,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0962,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0964,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0969,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-03-05aRagexeRE, 2014-03-05bRagexeRE
+#if PACKETVER == 20140305
+ packet(0x0202,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x07e4,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0878,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0934,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x095e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-03-12bRagexeRE
+#if PACKETVER == 20140312
+ packet(0x0202,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x023b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0366,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x085e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x086f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0889,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x088c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x088d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x088e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0891,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0894,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x089b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x089d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x089e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08a6,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08a9,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08ad,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x091b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x091c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x091e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x092a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0948,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x094a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x094b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x094c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0957,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x095d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x095e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0966,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+#endif
+
+// 2014-03-19aRagexeRE
+#if PACKETVER == 20140319
+ packet(0x02c4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07e4,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0802,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0811,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0815,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x085a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0864,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0865,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0866,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x086e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0872,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0883,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x088e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0890,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0893,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x089f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x08a2,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x091f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0923,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0933,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0942,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0944,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0947,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x094c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0954,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0955,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0961,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0964,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x096a,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+#endif
+
+// 2014-03-26cRagexeRE
+#if PACKETVER == 20140326
+ packet(0x0362,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0365,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x07ec,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x083c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x085b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0865,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0867,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0869,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x086b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x087c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x087e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x087f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0887,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0898,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08aa,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08ac,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x08ad,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0918,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0928,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x092a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x093d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0942,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0945,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0946,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0956,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0959,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x095a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x095c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0969,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+#endif
+
+// 2014-04-02eRagexeRE, 2014-04-02fRagexeRE
+#if PACKETVER == 20140402
+ packet(0x023b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0360,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0364,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07ec,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x085b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x085d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0867,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0868,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0882,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0883,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x088a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x088c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0890,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0896,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x089a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08ac,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x091f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0920,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0926,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x092d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0933,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x093f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0944,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0946,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x094c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0950,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0958,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x095c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0965,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+#endif
+
+// 2014-04-09aRagexeRE
+#if PACKETVER == 20140409
+ packet(0x0819,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x085b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0868,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x086a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x086d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0873,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0875,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x087e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0883,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0884,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x088a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0890,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0893,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0896,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08a2,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08a4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x08a6,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x08a7,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08a9,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0918,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x091c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x092e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0942,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0947,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x094c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x095a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x095e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+#endif
+
+// 2014-04-16aRagexeRE
+#if PACKETVER == 20140416
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x095c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-04-23aRagexeRE
+#if PACKETVER == 20140423
+ packet(0x022d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0360,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0436,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0811,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x083c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x085a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x085b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0862,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0863,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0866,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x086b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x086f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0873,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x088b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0890,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0895,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0896,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0898,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x089b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x089d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x089f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x08a8,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x08ad,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x091a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0920,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x094f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x095e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+#endif
+
+// 2014-04-30aRagexeRE
+#if PACKETVER == 20140430
+ packet(0x023b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x035f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0363,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0860,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0870,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0871,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0875,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x087f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0884,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0899,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08a1,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x093b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0940,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x094b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0953,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0956,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x096a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+#endif
+
+// 2014-05-08bRagexeRE
+#if PACKETVER == 20140508
+ packet(0x022d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0366,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0368,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0802,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0861,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0886,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x089b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08ab,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0927,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0930,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0932,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0934,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x094e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x096a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+#endif
+
+// 2014-05-14bRagexeRE, 2014-05-14cRagexeRE
+#if PACKETVER == 20140514
+ packet(0x0437,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0817,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0865,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0868,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0876,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0877,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x087d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0885,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0886,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x088a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x088b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0895,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x089a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x089c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08a5,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0918,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x091d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0921,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0925,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x092c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x092f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x094d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x094e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0958,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x095f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0962,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0965,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x096a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+#endif
+
+// 2014-05-21aRagexeRE
+#if PACKETVER == 20140521
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0869,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x088b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x088d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x089c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08ac,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0968,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-05-28aRagexeRE
+#if PACKETVER == 20140528
+ packet(0x0202,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0360,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x085f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0862,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0872,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0875,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0877,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0879,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x087e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x088a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x088f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0894,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0896,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x089d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08a4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x08a8,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x08ab,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x091d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0929,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0930,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0938,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x093a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x093f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x094a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x094b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x095f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0963,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0964,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0966,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+#endif
+
+// 2014-06-05aRagexeRE
+#if PACKETVER == 20140605
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0369,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0921,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0931,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0940,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x094c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-06-11bRagexeRE
+#if PACKETVER == 20140611
+ packet(0x0364,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0438,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x07e4,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0838,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0864,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0867,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x086c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0874,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0878,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x088c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0891,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0893,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0894,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x089b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08a1,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08a2,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0924,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0936,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0941,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x094a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x094f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0950,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0951,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0952,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0957,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0958,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0963,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0965,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0969,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+#endif
+
+// 2014-06-18cRagexeRE
+#if PACKETVER == 20140618
+ packet(0x085d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x085f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0860,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0861,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0878,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x087d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0884,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0885,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0886,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0890,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0892,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08a6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x08a7,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x08ac,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0917,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x091f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0929,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0935,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0938,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0939,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x093b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0945,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0954,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0957,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x095d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x095e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0962,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0967,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+#endif
+
+// 2014-06-25aRagexeRE
+#if PACKETVER == 20140625
+ packet(0x0202,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x023b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0815,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0817,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0835,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x085a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0861,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x086b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0875,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x087b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0885,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0886,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0888,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x088a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x088e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0897,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08a1,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x08a2,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x091a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0923,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0928,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0946,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0959,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0960,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0968,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0969,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-07-02aRagexeRE
+#if PACKETVER == 20140702
+ packet(0x022d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x023b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0364,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0438,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x07e4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0835,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x086c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0887,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0892,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0895,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08a0,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x08a2,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0925,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x092c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0933,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0940,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-07-09aRagexeRE
+#if PACKETVER == 20140709
+ packet(0x0364,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0860,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0866,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0869,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0875,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0877,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0879,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x087a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0887,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0888,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x088b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0894,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0897,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0898,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08ad,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x091a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0925,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x092f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0931,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0934,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0939,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x093f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x094d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x094e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x094f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x095f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0961,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+#endif
+
+// 2014-07-16aRagexeRE
+#if PACKETVER == 20140716
+ packet(0x0362,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0811,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x085c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x085f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0868,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0871,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0881,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x088b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x088d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x088f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0896,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x089a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x089f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x08a2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x08a4,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x08ac,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0918,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x091f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0926,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x092c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x092f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0938,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x093b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0947,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0952,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0958,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0959,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0969,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+#endif
+
+// 2014-07-23aRagexeRE, 2014-07-23bRagexeRE
+#if PACKETVER == 20140723
+ packet(0x02c4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0436,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0819,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0838,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x085f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0869,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x086d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x087d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0888,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0891,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0896,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0898,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x089e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x08a2,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08ad,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0927,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x092f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0934,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0935,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0939,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x093d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0945,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0947,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0948,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x095f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0960,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+#endif
+
+// 2014-07-30bRagexeRE
+#if PACKETVER == 20140730
+ packet(0x022d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0364,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0366,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0367,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0437,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x07ec,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0802,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0815,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0817,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x085e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x085f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x087d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x087e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x087f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0889,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x088b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x088d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0892,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a0,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08a6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x08a7,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x08a9,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x08ad,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x091e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0924,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x092a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0934,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0940,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0946,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+#endif
+
+// 2014-08-06aRagexeRE
+#if PACKETVER == 20140806
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0948,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-08-13aRagexeRE
+#if PACKETVER == 20140813
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0365,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0802,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0868,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0878,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x087c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0882,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0895,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0897,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0899,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08a3,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08a7,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08ab,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0967,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-08-20aRagexeRE
+#if PACKETVER == 20140820
+ packet(0x035f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0835,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0861,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0864,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0869,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x086c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x086e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0872,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0876,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0891,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0899,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x089a,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x089b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08a3,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x08a7,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x091d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x092f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0936,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0937,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x093a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x093e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x094a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0951,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0952,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0956,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0958,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0961,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+#endif
+
+// 2014-08-27aRagexeRE
+#if PACKETVER == 20140827
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0943,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-09-03aRagexeRE
+#if PACKETVER == 20140903
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x088f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x089b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0931,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0941,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0943,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0945,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-09-17cRagexeRE
+#if PACKETVER == 20140917
+ packet(0x022d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0364,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0365,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0366,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0367,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0838,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0864,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x086d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0889,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0895,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0897,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0898,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x089c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x08a8,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0919,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x091e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x092a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0930,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0949,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x094f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0951,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0955,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0956,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0957,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x095a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x095c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x095e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0966,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+#endif
+
+// 2014-09-24bRagexeRE, 2014-09-24cRagexeRE
+#if PACKETVER == 20140924
+ packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0367,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0815,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0862,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0864,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0865,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x086b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x086d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x086e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0886,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x088b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0894,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0898,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x089c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a5,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x08a7,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0918,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x091b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0925,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0926,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0928,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x092b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0934,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0949,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0952,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+#endif
+
+// 2014-10-01bRagexeRE, 2014-10-01cRagexeRE
+#if PACKETVER == 20141001
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0365,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x087c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0884,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0885,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x089c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x089d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08ad,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x091c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x092a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0937,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0939,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x093f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x094b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0952,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+#endif
+
+// 2014-10-08bRagexeRE, 2014-10-08cRagexeRE
+#if PACKETVER == 20141008
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0942,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-10-15bRagexeRE, 2014-10-16aRagexeRE
+#if PACKETVER == 20141015 || \
+ PACKETVER == 20141016
+ packet(0x022d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x086e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0922,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0936,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x094b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0967,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-10-22aRagexeRE
+#if PACKETVER == 20141022
+ packet(0x023b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0878,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x087d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0896,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0899,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x08aa,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08ab,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08ad,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x091a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x092b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x093b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0940,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x094e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0955,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-10-29aRagexeRE
+#if PACKETVER == 20141029
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0940,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-11-05aRagexeRE, 2014-11-05bRagexeRE
+#if PACKETVER == 20141105
+ packet(0x022d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x035f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0360,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x085c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0863,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0864,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0865,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0871,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0874,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0875,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0877,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0879,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0887,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0892,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0898,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08a0,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08a5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08a7,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x08ad,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x091d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x091e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x092b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x093e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0944,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0948,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0950,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0957,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x095f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0968,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+#endif
+
+// 2014-11-12aRagexeRE
+#if PACKETVER == 20141112
+ packet(0x0362,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0438,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x07e4,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0835,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x083c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x085f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0863,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0869,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x086c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0871,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0885,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0886,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0887,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x088d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x08a0,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x08a1,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x08ab,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0919,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0926,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0929,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0943,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x094b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x094c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0955,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x095d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0960,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0962,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+#endif
+
+// 2014-11-19bRagexeRE
+#if PACKETVER == 20141119
+ packet(0x0202,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x085a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0861,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0865,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0866,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0872,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0873,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0875,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x087c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0885,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0887,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0888,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x088d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0895,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08a8,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0918,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0920,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0921,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0929,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x092f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0933,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0938,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0940,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0941,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0942,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0948,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x094c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0963,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+#endif
+
+// 2014-11-26aRagexeRE, 2014-11-26bRagexeRE, 2014-11-26cRagexeRE, 2014-11-26dRagexeRE, 2014-11-26eRagexeRE
+#if PACKETVER == 20141126
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0367,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0802,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x086e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0871,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0884,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0896,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08a4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08ad,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0920,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0942,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x095a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x095b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x095f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0965,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-12-03aRagexeRE
+#if PACKETVER == 20141203
+ packet(0x0202,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0281,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0362,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0367,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0368,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0802,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0861,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x086d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x086e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x087b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x087e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0880,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0889,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0898,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x089c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x089d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x08a5,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x08aa,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0917,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x091c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x091d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0928,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x092a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0936,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0957,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x095c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0962,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+#endif
+
+// 2014-12-10cRagexeRE
+#if PACKETVER == 20141210
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x087b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0885,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x08ac,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0917,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0927,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x092b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0947,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0954,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0955,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0958,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0961,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0963,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0967,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2014-12-17aRagexeRE
+#if PACKETVER == 20141217
+ packet(0x0360,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x085b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0860,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x086c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0875,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0878,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0879,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0883,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0889,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x088e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x089f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08a1,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x08a2,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08a8,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x08ab,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x08ac,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0919,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x091f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0924,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0930,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0932,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0933,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0936,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0939,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0940,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0944,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0945,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0948,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0960,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+#endif
+
+// 2014-12-23cRagexeRE
+#if PACKETVER == 20141223
+ packet(0x0361,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0438,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0835,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x085a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x085e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0865,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0867,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x086c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0870,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x087a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x087b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x089a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x089b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08a3,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x08a4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a8,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x08ac,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0930,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0932,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x093a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0945,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0946,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0949,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x094f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0950,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0953,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0956,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x095b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x095f,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+#endif
+
+// 2014-12-31aRagexeRE
+#if PACKETVER == 20141231
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x086d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-01-07aRagexeRE
+#if PACKETVER == 20150107
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x087c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0895,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x092d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0943,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0947,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-01-14aRagexeRE
+#if PACKETVER == 20150114
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0868,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0899,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0946,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0955,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0957,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-01-21aRagexeRE, 2015-01-21bRagexeRE
+#if PACKETVER == 20150121
+ packet(0x0281,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x087c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x088b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x089d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x089e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08ab,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0918,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0919,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x091d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0955,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0959,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0963,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0967,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-01-28aRagexeRE
+#if PACKETVER == 20150128
+ packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x023b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0365,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0368,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0838,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x085a,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0864,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x086d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0870,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0874,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0875,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0876,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x087d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0888,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x089a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08ab,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x091f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0927,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0929,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x092d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0938,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x093a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0944,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x094d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x094e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0963,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0968,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+#endif
+
+// 2015-02-04cRagexeRE
+#if PACKETVER == 20150204
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0966,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-02-11aRagexeRE
+#if PACKETVER == 20150211
+ packet(0x023b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0368,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0369,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0436,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0437,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x07e4,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0817,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0819,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0835,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0862,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0863,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0870,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0873,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x087b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x087f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0882,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0883,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0885,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0886,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x089c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08a0,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08a4,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08aa,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0919,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0920,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0951,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0957,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0958,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+#endif
+
+// 2015-02-17aRagexeRE
+#if PACKETVER == 20150217
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-02-25aRagexeRE, 2015-02-25bRagexeRE, 2015-02-25cRagexeRE, 2015-02-25dRagexeRE, 2015-02-25eRagexeRE, 2015-02-26aRagexeRE
+#if PACKETVER == 20150225 || \
+ PACKETVER == 20150226
+ packet(0x02c4,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0362,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0819,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0867,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0885,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0896,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x089b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x089c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0940,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0946,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0948,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x094f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0952,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0955,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x096a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+#endif
+
+// 2015-03-04aRagexeRE, 2015-03-04bRagexeRE
+#if PACKETVER == 20150304
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0802,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0862,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x086d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0879,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x087e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0892,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x089a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x093a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0947,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x095d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0960,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0961,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-03-11aRagexeRE, 2015-03-11bRagexeRE
+#if PACKETVER == 20150311
+ packet(0x023b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0360,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0438,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0838,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x086a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x086c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x087b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0883,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0886,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0888,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0896,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x08a1,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08a3,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08a5,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x08a6,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x091c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0928,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x092a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x092e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x093b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0943,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0946,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0957,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0958,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x095b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0963,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0964,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+#endif
+
+// 2015-03-18aRagexeRE, 2015-03-18bRagexeRE, 2015-03-18cRagexeRE
+#if PACKETVER == 20150318
+ packet(0x0202,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x023b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0281,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x07e4,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0802,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0811,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0862,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0863,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0873,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0885,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0889,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x088c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x089c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a4,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x091d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0920,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0927,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0928,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0936,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0937,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0938,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x093a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x093c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x094c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0951,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0958,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0959,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0960,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+#endif
+
+// 2015-03-25bRagexeRE, 2015-03-25cRagexeRE
+#if PACKETVER == 20150325
+ packet(0x0202,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0365,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0438,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0802,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0819,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x085d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x086f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x087c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x087e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0883,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0885,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0891,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0893,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0897,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0899,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08a1,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x08a7,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0919,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x092c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0931,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0932,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0938,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0940,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0947,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x094a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0950,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0954,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0969,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+#endif
+
+// 2015-04-01bRagexeRE
+#if PACKETVER == 20150401
+ packet(0x0362,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0367,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0437,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x083c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x085e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x086f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0875,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x087e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x088c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x088f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0895,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0898,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x089c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a5,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x091b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x091c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0922,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0924,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0938,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0939,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x093a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x093b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x093e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0946,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0949,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x094b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0953,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x095f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0964,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+#endif
+
+// 2015-04-08aRagexeRE
+#if PACKETVER == 20150408
+ packet(0x0819,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x085a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x085c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0865,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0868,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x086b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x086e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0878,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x087e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x087f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0888,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0889,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0891,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0898,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x089c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x08a2,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x08a4,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x091b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x091e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0922,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x092a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0946,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x094f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0955,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0957,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0959,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x095e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0963,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+#endif
+
+// 2015-04-15aRagexeRE
+#if PACKETVER == 20150415
+ packet(0x0361,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0364,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0366,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0368,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0802,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0817,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0835,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x085e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0863,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0867,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0868,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0869,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x086c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0880,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x088e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0891,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0898,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08a0,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0922,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x092e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x093c,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0941,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0946,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x094d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0953,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x095c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0960,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0961,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+#endif
+
+// 2015-04-22aRagexeRE
+#if PACKETVER == 20150422
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0955,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-04-29aRagexeRE
+#if PACKETVER == 20150429
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0363,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0867,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x086a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0886,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x088f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0894,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0899,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x089f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08a6,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08a8,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08ad,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0929,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x093d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0943,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-05-07bRagexeRE
+#if PACKETVER == 20150507
+ packet(0x023b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0864,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0887,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0889,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0924,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x092e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x093b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0941,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0942,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0953,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0955,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0958,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-05-13aRagexeRE
+#if PACKETVER == 20150513
+ packet(0x022d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x02c4,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0363,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0864,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0879,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0883,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0885,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08a8,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0923,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0924,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0927,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x094a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0958,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0960,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-05-20aRagexeRE
+#if PACKETVER == 20150520
+ packet(0x0202,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0361,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0835,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x085e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0865,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0868,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x087d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0880,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0882,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x088c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x089c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x089e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08a2,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x08ad,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x091c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x091d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0924,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x092b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0931,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0936,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x093d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0940,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0945,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x094e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x095b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x095f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0960,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0961,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x096a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+#endif
+
+// 2015-05-27aRagexeRE
+#if PACKETVER == 20150527
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x083c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0940,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-06-03bRagexeRE
+#if PACKETVER == 20150603
+ packet(0x0361,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0437,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0811,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0819,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0860,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0864,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0867,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x086a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0873,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0877,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0881,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0884,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x088b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0897,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x089a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x089d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x089e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x08a1,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x08ad,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x091b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0922,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x092d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x093b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x093f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0955,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0956,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0960,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0969,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x096a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+#endif
+
+// 2015-06-10aRagexeRE
+#if PACKETVER == 20150610
+ packet(0x022d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0438,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x07e4,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0835,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0870,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0872,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0877,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x087e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0884,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0885,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0888,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x088c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x088d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x088f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0897,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08a0,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08ac,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0925,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x092b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x092c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x092e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0932,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x093e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0940,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0946,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0949,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0957,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x095d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0964,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+#endif
+
+// 2015-06-17aRagexeRE, 2015-06-18aRagexeRE
+#if PACKETVER == 20150617 || \
+ PACKETVER == 20150618
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0362,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0363,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0365,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07ec,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0811,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0869,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x086a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x086b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0870,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x087a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0886,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0894,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0940,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x094e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-06-24aRagexeRE
+#if PACKETVER == 20150624
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0365,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0870,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0940,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0941,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0966,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-07-01bRagexeRE
+#if PACKETVER == 20150701
+ packet(0x023b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0281,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x07e4,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0802,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x086d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x087d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x087e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0883,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x088e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0893,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08a0,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08a4,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x08a5,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x08a6,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08ad,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0919,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0923,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0928,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x092c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x093e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x093f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0946,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x094e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0954,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0956,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0958,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x095f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0960,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0968,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+#endif
+
+// 2015-07-08bRagexeRE, 2015-07-08cRagexeRE, 2015-07-08dRagexeRE
+#if PACKETVER == 20150708
+ packet(0x022d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0368,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0872,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x087f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0884,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x089d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08a5,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08ad,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x091f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x092a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x093c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x095b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0962,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-07-15aRagexeRE
+#if PACKETVER == 20150715
+ packet(0x023b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0362,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0364,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0436,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0437,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0438,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0835,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x083c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x085c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x086f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0873,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0879,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x087c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x087f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0886,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0895,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0896,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0897,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0899,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x089a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08a4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08ac,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0917,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x093e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0944,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0950,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0956,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0961,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0965,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+#endif
+
+// 2015-07-22bRagexeRE
+#if PACKETVER == 20150722
+ packet(0x023b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0281,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0360,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0361,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0368,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0811,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0817,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0869,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0878,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x087b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x087d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x087e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0880,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0884,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x088d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0899,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08a8,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0919,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0921,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0925,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x092e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x093c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x093d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x094c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0951,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0958,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+#endif
+
+// 2015-07-29aRagexeRE
+#if PACKETVER == 20150729
+ packet(0x0437,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0438,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x085b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0860,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x086c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x086d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x086e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x086f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0870,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0880,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0881,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0886,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x089a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x089b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08a3,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08a4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08ac,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x08ad,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0920,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x092b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x092f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x093a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x093f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0940,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x094f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0955,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x095e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0961,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+#endif
+
+// 2015-08-05dRagexeRE
+#if PACKETVER == 20150805
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x088a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-08-12aRagexeRE
+#if PACKETVER == 20150812
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x087f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-08-19aRagexeRE, 2015-08-19bRagexeRE
+#if PACKETVER == 20150819
+ packet(0x0202,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x022d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0281,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x085d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0862,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0865,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0871,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0888,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0919,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x091e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0927,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0940,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0961,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0967,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-08-26aRagexeRE, 2015-08-26bRagexeRE
+#if PACKETVER == 20150826
+ packet(0x0362,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0368,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0436,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x07ec,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0819,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0861,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0865,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x086b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0870,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x087b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x088b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x088d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0890,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0891,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08a0,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x08a1,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08a8,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0924,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0928,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x092e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x093b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0945,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x094f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0951,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0959,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0964,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0968,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0969,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+#endif
+
+// 2015-09-02aRagexeRE
+#if PACKETVER == 20150902
+ packet(0x023b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0360,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0367,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0802,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x083c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x085b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x085d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0863,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x086f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x087b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x087f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0886,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0887,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0889,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x088d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0892,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0897,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0899,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x08a9,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0923,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0928,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x092a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x092d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0941,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0947,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x094f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0953,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x095b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0960,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+#endif
+
+// 2015-09-09aRagexeRE
+#if PACKETVER == 20150909
+ packet(0x023b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0361,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0365,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0437,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0861,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0871,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x087b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0883,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0886,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x088f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0895,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0928,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0940,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0941,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x095e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0962,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x096a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+#endif
+
+// 2015-09-16cRagexeRE
+#if PACKETVER == 20150916
+ packet(0x022d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0817,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0835,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x085e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0869,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0873,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0877,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0881,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x089b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x089c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x089e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08ac,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0920,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0924,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x092e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x092f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0934,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0936,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0938,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x093e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0941,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0942,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0948,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x095a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0960,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0961,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0969,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+#endif
+
+// 2015-09-23bRagexeRE, 2015-09-23eRagexeRE, 2015-09-23fRagexeRE
+#if PACKETVER == 20150923
+ packet(0x0361,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0817,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x085c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x085d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0864,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x086e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x086f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0870,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0879,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x087f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0886,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x088e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0892,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0895,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x089b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x089f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a0,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x08a2,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08a5,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x08a6,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x091e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x092b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0930,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0936,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x093b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0951,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0961,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+#endif
+
+// 2015-10-01bRagexeRE
+#if PACKETVER == 20151001
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0960,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-10-07aRagexeRE
+#if PACKETVER == 20151007
+ packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0862,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x093f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x095f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0961,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0967,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-10-14bRagexeRE
+#if PACKETVER == 20151014
+ packet(0x0202,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0817,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0838,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x085a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0860,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0863,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0872,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0874,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0881,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0883,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0884,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0889,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x088e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x089a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x089b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x089f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x08aa,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x091c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x091d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0930,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0934,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0944,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x094f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0956,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x095e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0961,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0964,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+#endif
+
+// 2015-10-21aRagexeRE, 2015-10-22aRagexeRE
+#if PACKETVER == 20151021 || \
+ PACKETVER == 20151022
+ packet(0x023b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x02c4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x086a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x091d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0940,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-10-28bRagexeRE, 2015-10-28bRagexeRE_2, 2015-10-28cRagexeRE, 2015-10-28dRagexeRE, 2015-10-29aRagexeRE
+#if PACKETVER == 20151028 || \
+ PACKETVER == 20151029
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0860,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-11-04aRagexeRE
+#if PACKETVER == 20151104
+ packet(0x023b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0360,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0363,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0437,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07ec,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0811,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0815,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0886,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0887,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x088b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x088d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x08a3,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08a5,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0928,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0939,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x093a,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0940,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0964,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+#endif
+
+// 2015-11-11aRagexeRE
+#if PACKETVER == 20151111
+ packet(0x02c4,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0802,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085d,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0862,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0871,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0885,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x089c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0942,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x094a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0958,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0966,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0967,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0969,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-11-18aRagexeRE
+#if PACKETVER == 20151118
+ packet(0x022d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x035f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0365,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x086b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x088b,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08ab,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0921,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0925,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x092e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x092f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x093c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0943,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0946,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0957,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x095c,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-11-25bRagexeRE, 2015-11-25cRagexeRE, 2015-11-25dRagexeRE
+#if PACKETVER == 20151125
+ packet(0x0361,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0365,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0366,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0368,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0438,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0802,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0838,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x085e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x085f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0863,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0883,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0884,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0885,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x088c,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x088d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x089c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x089f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x08a9,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08ad,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0920,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x092a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x092e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0939,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0951,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0956,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0957,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0959,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+#endif
+
+// 2015-12-02bRagexeRE
+#if PACKETVER == 20151202
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0870,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2015-12-09aRagexeRE
+#if PACKETVER == 20151209
+ packet(0x0365,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x07e4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x07ec,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0811,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0819,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x085b,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x085d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x085e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0861,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0866,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0875,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x087a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x087f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x088e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x088f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0894,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x08a1,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0920,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x092d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0930,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0932,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x093b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0948,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x094a,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0956,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x095c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0961,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0964,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+#endif
+
+// 2015-12-16aRagexeRE
+#if PACKETVER == 20151216
+ packet(0x022d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0361,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0364,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0436,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x085b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0864,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0865,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x086a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x086e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0870,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0874,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0885,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x088b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x089d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x089e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x08a2,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x08a9,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08ac,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x091d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0947,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0949,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0954,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0960,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0966,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0968,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+#endif
+
+// 2015-12-23bRagexeRE
+#if PACKETVER == 20151223
+ packet(0x02c4,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0362,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0802,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0815,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0864,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0866,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x086e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0872,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0875,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0876,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0881,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0884,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0886,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x088d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0890,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0891,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0898,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x08aa,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0918,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x091a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x091b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0920,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0923,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0924,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x095e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x095f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0965,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0967,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+#endif
+
+// 2015-12-30aRagexeRE
+#if PACKETVER == 20151230
+ packet(0x02c4,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x07ec,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0861,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0869,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0886,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x088e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0897,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x091d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0923,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x093a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0949,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x094e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-01-06aRagexeRE
+#if PACKETVER == 20160106
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07ec,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0861,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x086a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x086c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0878,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x087a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x087f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0885,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0889,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x088a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0891,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08a0,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x091d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0940,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-01-13aRagexeRE, 2016-01-13bRagexeRE, 2016-01-13bRagexeRE_2, 2016-01-13cRagexeRE
+#if PACKETVER == 20160113
+ packet(0x022d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x023b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x035f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0815,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x085b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0864,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x086d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0873,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0875,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0888,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x088b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x088c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0892,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0893,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x089a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x08a0,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x08a6,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08aa,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0919,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x091b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0924,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0930,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0932,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x093c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0941,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x094d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0967,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+#endif
+
+// 2016-01-20aRagexeRE
+#if PACKETVER == 20160120
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0865,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-01-27aRagexeRE, 2016-01-27aRagexeRE_2, 2016-01-27bRagexeRE
+#if PACKETVER == 20160127
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0922,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x095a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0961,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-02-03aRagexeRE
+#if PACKETVER == 20160203
+ packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0437,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0811,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0835,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x086c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0872,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0873,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x088c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0918,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x093e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0940,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0947,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0954,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x095a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x095d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-02-11aRagexeRE
+#if PACKETVER == 20160211
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x086c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0870,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0886,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-02-17aRagexeRE, 2016-02-17bRagexeRE, 2016-02-17bRagexeRE_2, 2016-02-17cRagexeRE
+#if PACKETVER == 20160217
+ packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x023b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0362,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0365,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0864,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0870,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0873,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x087a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0888,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x088d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x088f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0899,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08a0,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08a9,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x08ac,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08ad,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x091d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0920,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0926,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x092e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x093b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x093e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0941,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x094a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x095e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0966,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0967,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0969,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+#endif
+
+// 2016-02-24aRagexeRE, 2016-02-24bRagexeRE
+#if PACKETVER == 20160224
+ packet(0x022d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0364,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0436,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0861,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x086b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0884,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0885,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0888,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x08a9,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0920,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0929,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x092f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0936,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0938,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x094c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0961,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-03-02bRagexeRE
+#if PACKETVER == 20160302
+ packet(0x022d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0367,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0802,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0819,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x085b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0864,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0865,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0868,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0873,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0875,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x087a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x087d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0883,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08a6,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x08a9,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x091a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0927,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x092d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x092f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0945,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x094e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0950,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0957,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x095a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0960,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0961,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0967,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0968,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+#endif
+
+// 2016-03-09aRagexeRE
+#if PACKETVER == 20160309
+ packet(0x023b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0281,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0819,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0838,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x083c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x085a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x085f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0866,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x086a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0873,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x087c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x087e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x089b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x089d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08a7,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x091d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0920,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0922,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0929,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x092a,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x092e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0932,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x094f,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0956,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x095e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x096a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+#endif
+
+// 2016-03-16aRagexeRE
+#if PACKETVER == 20160316
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0922,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-03-23aRagexeRE, 2016-03-23bRagexeRE
+#if PACKETVER == 20160323
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0365,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0867,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0869,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x086a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0872,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0878,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0883,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0896,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x089a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x091b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0926,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0927,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0933,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x093c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-03-30aRagexeRE
+#if PACKETVER == 20160330
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0365,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0867,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x086d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0878,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x087f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0889,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x088b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x088d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0918,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0925,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x092a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x092c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0930,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0939,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x093b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-04-06aRagexeRE
+#if PACKETVER == 20160406
+ packet(0x0364,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x07e4,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0819,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x085a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x085c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0869,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0877,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0878,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0879,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0884,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0892,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0895,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0898,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x089b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x089e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08a1,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x08a9,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x08ac,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0927,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0933,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0934,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0940,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0949,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x094d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0953,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x095d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x095f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0962,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+#endif
+
+// 2016-04-14aRagexeRE, 2016-04-14bRagexeRE
+#if PACKETVER == 20160414
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0363,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0862,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0880,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0885,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x089e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0918,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0922,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0927,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0931,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0934,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0945,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0953,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-04-20aRagexeRE
+#if PACKETVER == 20160420
+ packet(0x022d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x02c4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x035f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0864,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0870,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0872,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0874,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0884,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0888,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x088b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08a5,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x092f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0935,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x094e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x095c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-04-27aRagexeRE
+#if PACKETVER == 20160427
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0835,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0940,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-05-04aRagexeRE
+#if PACKETVER == 20160504
+ packet(0x0202,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0363,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0365,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x083c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x085f,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x086b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x087f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0884,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0886,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0887,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x088a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x088d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x088f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0890,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0893,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0898,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x089d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x08ad,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0918,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0921,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0922,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0924,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x093e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0940,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0941,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0948,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0952,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x095b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0969,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+#endif
+
+// 2016-05-11aRagexeRE, 2016-05-11bRagexeRE
+#if PACKETVER == 20160511
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0894,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x089b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0918,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0920,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0940,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-05-18aRagexeRE
+#if PACKETVER == 20160518
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x086c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0874,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x089a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a9,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0928,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-05-25aRagexeRE
+#if PACKETVER == 20160525
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x085e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0867,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x086a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0899,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x089c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x091d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x092c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0937,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0945,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x094a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0951,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0956,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-06-01aRagexeRE
+#if PACKETVER == 20160601
+ packet(0x0202,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0863,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0870,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x087d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x088d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x088f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0895,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x08a7,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08ac,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0924,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x095b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x095f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0961,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-06-08aRagexeRE, 2016-06-08bRagexeRE
+#if PACKETVER == 20160608
+ packet(0x022d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x02c4,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x035f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0437,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07ec,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0802,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0889,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0899,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x089b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x08a6,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x093b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x094d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0958,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x095b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0969,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-06-15aRagexeRE
+#if PACKETVER == 20160615
+ packet(0x0281,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0363,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0369,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x083c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0866,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0870,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x087d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x087e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x087f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0884,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0887,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0888,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x088a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x088d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0891,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0898,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x092f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x093e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0947,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0948,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x094a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x094b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0954,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0957,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0958,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x095c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x095e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0961,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+#endif
+
+// 2016-06-22aRagexeRE
+#if PACKETVER == 20160622
+ packet(0x023b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x035f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0361,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x07e4,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0861,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0865,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0867,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0880,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0887,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0890,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0891,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0892,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x089a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x089e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x08a2,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x08a8,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x091c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x092d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x092f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0936,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0937,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x093b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x093f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0946,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0959,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0965,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0969,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+#endif
+
+// 2016-06-29aRagexeRE, 2016-06-30aRagexeRE
+#if PACKETVER == 20160629 || \
+ PACKETVER == 20160630
+ packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x022d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x035f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0363,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0368,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x085c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x085e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0860,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0861,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0863,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0867,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x086b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0881,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0885,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x088e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0893,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x091e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0922,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0925,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0926,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x093e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0946,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0948,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x094a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0957,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x095a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0968,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0969,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x096a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+#endif
+
+// 2016-07-06cRagexeRE
+#if PACKETVER == 20160706
+ packet(0x0362,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0436,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x085f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0860,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0869,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x086b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0884,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0886,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0892,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0899,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08a4,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08a5,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08a8,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0918,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x091b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0924,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0926,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0927,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0929,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x092d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0939,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x093d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0944,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0945,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x094c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0952,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0957,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0958,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+#endif
+
+// 2016-07-13aRagexeRE, 2016-07-13bRagexeRE
+#if PACKETVER == 20160713
+ packet(0x022d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0363,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0364,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0838,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0860,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0865,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0869,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0875,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0877,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x087b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0883,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x088d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0892,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x089a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x089f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08a2,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08a4,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x091c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x091d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0921,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0922,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x092c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0931,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0939,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0944,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0945,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0947,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0957,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x095b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+#endif
+
+// 2016-07-20aRagexeRE, 2016-07-20bRagexeRE
+#if PACKETVER == 20160720
+ packet(0x0362,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0363,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0365,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x07e4,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0838,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x085b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x086a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x086d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x087f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0883,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0887,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0897,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x089a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x089c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x089e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08a0,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x08aa,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0917,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x091c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x092a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x093b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x093e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0946,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x094d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0953,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x095b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0960,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0969,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+#endif
+
+// 2016-07-27aRagexeRE, 2016-07-27bRagexeRE
+#if PACKETVER == 20160727
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x023b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0362,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0363,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0436,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0438,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x07ec,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0866,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0868,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0869,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0874,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0877,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0883,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0887,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x088e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0891,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x089f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x08a2,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a4,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x08a7,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x092e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0936,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0941,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0946,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0949,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0951,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x095f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0966,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0969,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+#endif
+
+// 2016-08-03bRagexeRE
+#if PACKETVER == 20160803
+ packet(0x0364,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x085d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0878,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x087f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0881,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0886,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0887,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0888,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x088b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0891,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0895,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x089c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x089e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x08a1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x091b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0929,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0930,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0932,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0934,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0937,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x093a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x093e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x093f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0952,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0955,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0956,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0959,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x095a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x096a,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+#endif
+
+// 2016-08-10aRagexeRE
+#if PACKETVER == 20160810
+ packet(0x0361,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0819,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0838,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x085d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x085e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x085f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0860,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x086f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0875,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0879,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x087a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0885,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0888,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0890,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x089d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x089f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08a9,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x091a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x091b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x091c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0926,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x092b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x092d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0935,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0943,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x094b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0959,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x095b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0967,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+#endif
+
+// 2016-08-17aRagexeRE
+#if PACKETVER == 20160817
+ packet(0x0364,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0437,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x07e4,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0811,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0819,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x083c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x085c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0867,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x086b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0875,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x087f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0886,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0891,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x089c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x08a5,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a6,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x08a9,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x08ab,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x08ac,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x08ad,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x091b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0929,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x092d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0930,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0939,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x093c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0957,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0960,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0963,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+#endif
+
+// 2016-08-24aRagexeRE
+#if PACKETVER == 20160824
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0934,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-08-31aRagexeRE, 2016-08-31bRagexeRE
+#if PACKETVER == 20160831
+ packet(0x022d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0366,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0835,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0865,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x086d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0870,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0874,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0876,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0878,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x087c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x08a8,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x08a9,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0917,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x091b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x092c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x092e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0938,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x093a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0946,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x094a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x094f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0950,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0954,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0957,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x095e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0960,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0964,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0967,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+#endif
+
+// 2016-09-07aRagexeRE
+#if PACKETVER == 20160907
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x091c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-09-13aRagexeRE
+#if PACKETVER == 20160913
+ packet(0x0361,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0817,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x085b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0865,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0874,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0875,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0879,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x087b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0887,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0889,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x088e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x088f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0891,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0892,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x089b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x089c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0928,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0935,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x093a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0949,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x094a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0950,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0952,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0954,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0962,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0963,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0968,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+#endif
+
+// 2016-09-21bRagexeRE
+#if PACKETVER == 20160921
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x094a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-09-28cRagexeRE, 2016-09-28dRagexeRE
+#if PACKETVER == 20160928
+ packet(0x0202,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0366,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0436,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0811,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0838,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0864,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0866,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x086d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0872,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0878,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0889,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x088e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0897,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x089a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x08a2,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a9,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0919,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x091e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0927,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x092d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0944,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x094d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x094e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0953,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0955,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0957,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x095a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+#endif
+
+// 2016-10-05aRagexeRE
+#if PACKETVER == 20161005
+ packet(0x0202,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0838,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0863,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0886,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x088e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0891,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0892,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x089b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x089c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08a0,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08ac,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x08ad,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0918,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0919,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x091e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x092b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0931,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0932,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x093b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0942,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0945,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x094a,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x094d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0952,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x095a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x095b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0967,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+#endif
+
+// 2016-10-12aRagexeRE
+#if PACKETVER == 20161012
+ packet(0x023b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0364,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0365,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0369,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x07ec,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0819,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x085b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x085e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0863,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0868,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x086d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0872,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0875,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0880,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0893,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a0,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x092d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0936,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0937,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0939,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0943,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0944,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0951,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x095c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0962,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0966,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0967,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+#endif
+
+// 2016-10-19aRagexeRE
+#if PACKETVER == 20161019
+ packet(0x022d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0361,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0889,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0892,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0946,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0963,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-10-26bRagexeRE, 2016-10-26cRagexeRE
+#if PACKETVER == 20161026
+ packet(0x0363,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0438,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x085a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x085f,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0861,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0862,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x086a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x086c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x086e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x087a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x087c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x087f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0886,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0891,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0894,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0898,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x091a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x091b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0926,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x092c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x092e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x092f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0930,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x094b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0953,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x095c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x095e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0962,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+#endif
+
+// 2016-11-02aRagexeRE, 2016-11-03aRagexeRE
+#if PACKETVER == 20161102 || \
+ PACKETVER == 20161103
+ packet(0x0361,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0367,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0436,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0802,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0838,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x083c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x085f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0869,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x086c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x086f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0874,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0886,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x088f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0890,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x089f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x08a2,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x08aa,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x091b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0922,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0925,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0928,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x092f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0936,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0946,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0949,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x095e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0964,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0965,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0966,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+#endif
+
+// 2016-11-09aRagexeRE, 2016-11-09bRagexeRE, 2016-11-09cRagexeRE, 2016-11-09dRagexeRE
+#if PACKETVER == 20161109
+ packet(0x02c4,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0361,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0362,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0366,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x085d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x085e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0865,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x086a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x086d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0870,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0876,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0881,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x088e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0891,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0898,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x089a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x089d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x089f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08a7,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x08ad,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0927,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0937,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x093c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x093f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0954,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0956,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+#endif
+
+// 2016-11-16bRagexeRE, 2016-11-16cRagexeRE
+#if PACKETVER == 20161116
+ packet(0x0368,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0369,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0835,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x085f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0864,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x086f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0885,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x088b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x088d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x088f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0890,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0892,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0893,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x08a1,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08a2,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x08ac,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0920,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0925,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x092a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0931,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x093c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x094a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0952,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0957,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x095b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x095d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x095f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0967,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+#endif
+
+// 2016-11-23aRagexeRE
+#if PACKETVER == 20161123
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0362,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0437,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x085c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0861,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0862,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0866,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x086f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0871,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x087f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0880,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0882,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x088b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x089c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08a9,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x091a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0926,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x092a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x092f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0930,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0941,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x094d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x094f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x095a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x095b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0962,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x096a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+#endif
+
+// 2016-11-30aRagexeRE, 2016-11-30bRagexeRE
+#if PACKETVER == 20161130
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x088f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0931,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0943,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0954,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0959,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-12-07cRagexeRE, 2016-12-07dRagexeRE, 2016-12-07eRagexeRE
+#if PACKETVER == 20161207
+ packet(0x023b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0867,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0868,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0875,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x087e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0886,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x08a1,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08a2,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08ad,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0918,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x091d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0943,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x095d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0965,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-12-14bRagexeRE, 2016-12-14cRagexeRE
+#if PACKETVER == 20161214
+ packet(0x022d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0281,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x02c4,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0436,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0862,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x086d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0887,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0895,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0899,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a6,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x092e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x093d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2016-12-21aRagexeRE, 2016-12-21bRagexeRE, 2016-12-21cRagexeRE, 2016-12-21dRagexeRE
+#if PACKETVER == 20161221
+ packet(0x035f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0366,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0438,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0817,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x085b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0866,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0876,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0881,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0884,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0885,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x088c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0890,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0899,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x089a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x089b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x08aa,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x091e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0926,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0928,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x092c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x092e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0930,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0943,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0946,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x094b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x095a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0964,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0965,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+#endif
+
+// 2016-12-28aRagexeRE
+#if PACKETVER == 20161228
+ packet(0x0362,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x085a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x085e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0865,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x086a,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x086c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x086d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0870,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0871,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0875,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0886,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0889,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0893,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x089f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a2,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08a3,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x08a5,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08ab,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08ac,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x08ad,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x091c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0929,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x092c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0934,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0935,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0938,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x093d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0944,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+#endif
+
+// 2017-01-04bRagexeRE
+#if PACKETVER == 20170104
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x085a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x087f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0896,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x091b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0940,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-01-11aRagexeRE
+#if PACKETVER == 20170111
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0877,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x087f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x088a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a1,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08a3,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08a6,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x091a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x091b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0940,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x094c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0961,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0969,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-01-18aRagexeRE
+#if PACKETVER == 20170118
+ packet(0x022d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0364,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0862,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0865,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x086f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0873,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x089e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x08ad,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x091f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0927,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0933,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0958,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0962,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x096a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+#endif
+
+// 2017-01-25aRagexeRE
+#if PACKETVER == 20170125
+ packet(0x0438,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0811,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x086e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0876,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0877,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0879,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x087b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x087d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0881,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0884,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0893,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0894,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0895,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0898,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x089b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x08a5,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x091b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x091c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x091d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0920,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0929,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x092b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0930,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x093c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0943,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0944,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x095c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0965,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0968,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+#endif
+
+// 2017-02-01aRagexeRE
+#if PACKETVER == 20170201
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0815,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x085e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0875,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0879,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0881,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0884,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0886,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x088b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08a4,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0919,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0920,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0938,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x094c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0966,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0969,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-02-08aRagexeRE, 2017-02-08bRagexeRE
+#if PACKETVER == 20170208
+ packet(0x02c4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0367,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0860,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x088c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0892,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08a1,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08ac,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0921,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0923,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x092d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0932,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0937,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-02-15aRagexeRE
+#if PACKETVER == 20170215
+ packet(0x02c4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x035f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0811,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x083c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x085c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0876,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x087c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x087d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x087e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0883,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0884,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x088a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x088b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x088c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0890,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0896,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x089b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a2,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x08a8,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x091c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0925,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x092b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x092d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0942,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x094e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x095f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0962,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0969,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+#endif
+
+// 2017-02-22aRagexeRE
+#if PACKETVER == 20170222
+ packet(0x0202,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0866,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0870,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0871,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0877,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0894,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08a3,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08a8,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0937,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0939,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0943,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x095d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0962,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-02-28aRagexeRE
+#if PACKETVER == 20170228
+ packet(0x022d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0360,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0819,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x085e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0863,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x086b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0873,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0874,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0876,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0883,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0884,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0889,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0893,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x089e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a0,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08a2,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a6,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08a7,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x091f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x092a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x092e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0937,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x093e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0944,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0947,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0948,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0952,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0955,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+#endif
+
+// 2017-03-08bRagexeRE
+#if PACKETVER == 20170308
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x087d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-03-15cRagexeRE
+#if PACKETVER == 20170315
+ packet(0x02c4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x035f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0360,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0366,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0436,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x07ec,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x085c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0863,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x086a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0872,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x087b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0884,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x088b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x088d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x088f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0892,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x089c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x08aa,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x091a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x091b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x091d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0920,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0922,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0944,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x094a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x094e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0950,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0952,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+#endif
+
+// 2017-03-22aRagexeRE, 2017-03-22bRagexeRE
+#if PACKETVER == 20170322
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x091a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-03-29cRagexeRE, 2017-03-29dRagexeRE
+#if PACKETVER == 20170329
+ packet(0x0281,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0363,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x087a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0888,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x08a8,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0917,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0926,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0929,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x092e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0937,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0939,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0949,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x095f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-04-05bRagexeRE, 2017-04-05cRagexeRE
+#if PACKETVER == 20170405
+ packet(0x022d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0281,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0860,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0864,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0865,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x086f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0893,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08a5,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x094c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0964,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-04-12aRagexeRE
+#if PACKETVER == 20170412
+ packet(0x023b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0365,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0863,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0869,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x086d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0878,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0879,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x087b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x088b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0890,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0893,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0898,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x089a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x089c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08a1,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x091a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x091e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0929,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x092e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0938,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0942,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0945,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0949,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x094f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0952,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0959,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x095b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x095c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x095d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+#endif
+
+// 2017-04-19bRagexeRE
+#if PACKETVER == 20170419
+ packet(0x0811,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0819,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0838,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x085a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x085e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0862,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0868,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x086a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0872,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0881,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x088d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x088f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0897,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0898,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x089d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x08aa,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x091b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0920,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0922,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0930,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0931,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0935,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x093a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x093f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0942,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x095c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x095d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0963,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0965,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+#endif
+
+// 2017-04-26dRagexeRE
+#if PACKETVER == 20170426
+ packet(0x0281,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0866,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x086f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x087a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0887,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0899,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x089c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x08a2,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08a4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x091f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0927,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0940,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0958,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0963,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-05-02dRagexeRE
+#if PACKETVER == 20170502
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0875,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0894,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x089c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x093c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0950,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-05-17aRagexeRE, 2017-05-17bRagexeRE
+#if PACKETVER == 20170517
+ packet(0x0364,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0367,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0815,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0817,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0868,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0875,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x087b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x087d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x088c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x088d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0894,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0896,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0899,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x089e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x089f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x08a2,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x08a8,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x08aa,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x091b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0923,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x093b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0945,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0946,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0947,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0958,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0960,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0964,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+#endif
+
+// 2017-05-24aRagexeRE
+#if PACKETVER == 20170524
+ packet(0x0364,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0368,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0802,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x085e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x085f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0860,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0864,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0866,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0868,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x086d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0873,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0874,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x087d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0882,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x088d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0894,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x089c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x08a1,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x091e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0923,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0925,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0934,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0946,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0958,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x095a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x095b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0964,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0967,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0968,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+#endif
+
+// 2017-05-31aRagexeRE
+#if PACKETVER == 20170531
+ packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0369,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x07e4,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x07ec,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0819,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x085b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x085f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0861,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0868,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0873,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0875,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0878,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x087b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0885,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x088b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x088d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0894,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x089a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x089c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x08a2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x08ac,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x08ad,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x092d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0933,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0937,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0940,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0945,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0963,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0968,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+#endif
+
+// 2017-06-07bRagexeRE, 2017-06-07cRagexeRE
+#if PACKETVER == 20170607
+ packet(0x0361,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x07e4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x085a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x085e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0862,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0863,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0864,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0871,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0873,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0875,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0885,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x088a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0897,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x089d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a9,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08ab,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0917,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0918,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0919,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0925,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0927,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0931,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0934,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0938,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x093d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0942,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0944,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0949,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+#endif
+
+// 2017-06-14bRagexeRE
+#if PACKETVER == 20170614
+ packet(0x023b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0361,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0364,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0367,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0437,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0838,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x083c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0860,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0865,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0866,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0867,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x086b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0877,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0879,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x087d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x087e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0889,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0899,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x089d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08a2,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x08ad,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x091b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0928,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x092f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0936,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0944,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0957,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0963,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+#endif
+
+// 2017-06-21aRagexeRE
+#if PACKETVER == 20170621
+ packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0365,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0366,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0802,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x087d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0885,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0889,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08a8,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0956,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0957,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x095b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x095c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0961,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-06-28bRagexeRE
+#if PACKETVER == 20170628
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0863,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-07-05aRagexeRE
+#if PACKETVER == 20170705
+ packet(0x0202,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x02c4,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0879,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0886,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x088d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x088e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x089a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x089d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x091a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x092f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0930,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0932,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0934,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x094c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-07-12bRagexeRE
+#if PACKETVER == 20170712
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0944,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-07-19aRagexeRE
+#if PACKETVER == 20170719
+ packet(0x022d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0367,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0368,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0369,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x07e4,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x085a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x085e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0863,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x086e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x087d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0881,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0882,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0885,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0891,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0898,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x089a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x089d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x08a6,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08a8,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x091b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x091f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x092c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x092e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x092f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x093d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x093e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0944,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0946,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0966,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+#endif
+
+// 2017-07-26cRagexeRE
+#if PACKETVER == 20170726
+ packet(0x0363,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0366,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0369,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0438,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0838,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0873,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0874,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0878,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0881,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0888,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x088e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x08a3,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08a7,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08aa,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x08ab,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08ac,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x091d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x091e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x091f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0921,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0923,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0943,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x094f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0950,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0952,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0954,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x095a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0963,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+#endif
+
+// 2017-08-01aRagexeRE
+#if PACKETVER == 20170801
+ packet(0x022d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0281,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x087d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a6,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x094f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x095a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-08-09cRagexeRE
+#if PACKETVER == 20170809
+ packet(0x022d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0281,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0364,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0366,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0367,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x07e4,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0802,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0835,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0868,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x086e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x086f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0876,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x087d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0880,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x088c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0890,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0892,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0895,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0899,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08a3,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x08a6,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0918,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0921,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x092a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x092b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0931,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0939,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x093b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0940,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+#endif
+
+// 2017-08-16cRagexeRE, 2017-08-16dRagexeRE
+#if PACKETVER == 20170816
+ packet(0x022d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0361,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0362,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0438,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x085a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0862,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0864,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x087e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0881,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0882,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0884,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0888,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0889,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x08a3,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08a7,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08a9,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x08ac,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x091c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0921,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0925,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x092c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x093a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x093d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0940,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0941,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0950,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0959,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0960,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+#endif
+
+// 2017-08-23aRagexeRE
+#if PACKETVER == 20170823
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x086c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x086d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08ac,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x095b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-08-30aRagexeRE, 2017-08-30bRagexeRE
+#if PACKETVER == 20170830
+ packet(0x0281,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x02c4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0363,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0364,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0860,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0865,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x086a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0875,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0884,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0888,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0899,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x089a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x089e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a2,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x091e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0921,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0925,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x092e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0939,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x093e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0940,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0942,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0943,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0947,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0951,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0959,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+#endif
+
+// 2017-09-06cRagexeRE
+#if PACKETVER == 20170906
+ packet(0x0202,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0281,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0802,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0860,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0866,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x086c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x087b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a2,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08a3,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08a7,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x091a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x091e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0953,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-09-13bRagexeRE
+#if PACKETVER == 20170913
+ packet(0x0281,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0437,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x07e4,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0817,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0835,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x085a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0860,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0865,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0866,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x088c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0890,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0891,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0892,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x08a7,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08aa,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08ab,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08ac,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08ad,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x091b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x091d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x091e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0920,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0923,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0925,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0927,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x095a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x095c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+#endif
+
+// 2017-09-20bRagexeRE
+#if PACKETVER == 20170920
+ packet(0x0369,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0436,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x07ec,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x085a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0861,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0862,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0864,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0865,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x086a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x086c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0874,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0875,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0889,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x088e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x089b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0919,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x091e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0921,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0923,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0926,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x092e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0937,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0939,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0945,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x094c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x095d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0961,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0966,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x096a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+#endif
+
+// 2017-09-27bRagexeRE, 2017-09-27dRagexeRE
+#if PACKETVER == 20170927
+ packet(0x02c4,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x035f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0361,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0362,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0366,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x085c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0873,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0875,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x087d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x087e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x088b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0899,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x089a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x089b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08a3,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x08a5,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08a6,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08ad,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x091e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0922,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0923,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0927,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x093b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0942,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0945,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x094b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x094d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0959,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x095a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+#endif
+
+// 2017-10-02cRagexeRE
+#if PACKETVER == 20171002
+ packet(0x022d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0363,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0885,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0897,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x089d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0928,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x092d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0934,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x093b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x093d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x093e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0943,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x095f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-10-11aRagexeRE, 2017-10-11bRagexeRE
+#if PACKETVER == 20171011
+ packet(0x023b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x087b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0882,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0950,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0954,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-10-18aRagexeRE
+#if PACKETVER == 20171018
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0363,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x086a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x087e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0889,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x089a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x089f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x08a6,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0938,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0944,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x094a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x094f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-10-25bRagexeRE, 2017-10-25cRagexeRE, 2017-10-25dRagexeRE, 2017-10-25eRagexeRE
+#if PACKETVER == 20171025
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08a2,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-11-01bRagexeRE
+#if PACKETVER == 20171101
+ packet(0x022d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0368,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0369,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0438,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0835,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x085b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0860,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x086c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0872,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0876,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0886,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x088e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0890,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0895,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0899,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x089b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x089c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08a0,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x08ab,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08ad,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x091b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0939,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x094a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x094d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0957,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x095a,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0962,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0966,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+#endif
+
+// 2017-11-08bRagexeRE
+#if PACKETVER == 20171108
+ packet(0x0202,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0361,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x07e4,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0815,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0819,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0838,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x085d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0863,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0878,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x087e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0884,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0896,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0897,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x08a2,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x08a9,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x08ad,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x091d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x091f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0940,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0941,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0945,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0947,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0949,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x094e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0958,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x095a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0963,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0965,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0967,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+#endif
+
+// 2017-11-15aRagexeRE
+#if PACKETVER == 20171115
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0365,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0802,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x086d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x086f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x087e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0883,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x088b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0890,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0898,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0926,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0958,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x095a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-11-22bRagexeRE
+#if PACKETVER == 20171122
+ packet(0x0281,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x02c4,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x035f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0838,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x083c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x085b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0862,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0867,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0877,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0885,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0890,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0891,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0893,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0897,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0898,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x089a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x089e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x08a6,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x08a9,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x091e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0920,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0923,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0934,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x093b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0945,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0946,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0947,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0962,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0968,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+#endif
+
+// 2017-11-29aRagexeRE
+#if PACKETVER == 20171129
+ packet(0x02c4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0363,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0365,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0862,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x086d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0876,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0878,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x088a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x089c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x08a5,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0940,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x094b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0953,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0966,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-12-06aRagexeRE
+#if PACKETVER == 20171206
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0867,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x086a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x086e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0885,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0888,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0897,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x089d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08a2,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x08a4,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x091d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0923,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x092e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0936,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0942,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0958,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0961,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-12-13bRagexeRE
+#if PACKETVER == 20171213
+ packet(0x0202,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0860,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0881,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0890,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x091a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0957,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-12-20aRagexeRE
+#if PACKETVER == 20171220
+ packet(0x0281,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0366,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0369,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0436,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0437,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x085e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0861,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0872,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0873,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0880,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0882,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0885,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x088c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0899,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x089e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x08a7,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x091b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x091e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0924,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0929,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0933,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x093e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0941,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0946,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0951,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0957,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0964,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+#endif
+
+// 2017-12-27aRagexeRE
+#if PACKETVER == 20171227
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0802,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x087d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0888,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x088a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x088d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08a0,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a5,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x092c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x092e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0938,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0945,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0946,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0969,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x096a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+#endif
+
+// 2018-01-03aRagexeRE, 2018-01-03bRagexeRE
+#if PACKETVER == 20180103
+ packet(0x02c4,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0363,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0865,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x086b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x086d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0872,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0876,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0879,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x088e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x089f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x08a9,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08ab,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x08ac,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x091d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0922,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0926,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0927,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x092c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0935,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0938,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0941,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0946,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0948,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x094e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x095d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x095f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+#endif
+
+// 2018-01-17aRagexeRE
+#if PACKETVER == 20180117
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0875,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2018-01-24bRagexeRE
+#if PACKETVER == 20180124
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0802,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0868,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x086a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x086f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x087a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0888,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0890,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0919,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0940,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0946,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x094d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0958,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0961,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2018-02-07bRagexeRE
+#if PACKETVER == 20180207
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0360,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0870,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0881,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x092c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x092e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0940,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0950,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2018-02-13aRagexeRE
+#if PACKETVER == 20180213
+ packet(0x0369,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0802,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0817,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x085a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x086f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0874,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0875,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0878,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x087b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0882,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x088c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0892,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0898,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x089c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x08a3,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x08a5,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x08a9,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x08ad,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0917,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0922,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0924,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0926,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0933,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0936,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x093c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0943,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0955,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x095a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0962,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+#endif
+
+// 2018-02-21aRagexeRE, 2018-02-21bRagexeRE
+#if PACKETVER == 20180221
+ packet(0x0202,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0366,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0436,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0838,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0867,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x086c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x086f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0871,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0876,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0879,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x087d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0880,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0881,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0883,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x088f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0891,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0897,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0899,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x089d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0917,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x091e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0929,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x093d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x094b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x094d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x094e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0957,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0964,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x096a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+#endif
+
+// 2018-03-07bRagexeRE
+#if PACKETVER == 20180307
+ packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x035f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0437,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x07e4,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0861,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0862,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0864,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x086c,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0870,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0872,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0877,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x088d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0893,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x089b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x08a6,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x08aa,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08ab,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0917,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0920,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0937,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0939,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x093d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0941,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0944,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0948,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0951,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0954,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0957,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0969,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+#endif
+
+// 2018-03-21aRagexeRE, 2018-03-28bRagexeRE, 2018-04-04cRagexeRE, 2018-04-18bRagexeRE, 2018-04-25cRagexeRE, 2018-05-02bRagexeRE, 2018-05-02dRagexeRE, 2018-05-16cRagexeRE, 2018-05-23aRagexeRE, 2018-05-30bRagexeRE, 2018-05-30cRagexeRE, 2018-06-05bRagexeRE, 2018-06-12aRagexeRE, 2018-06-12bRagexeRE, 2018-06-20dRagexeRE, 2018-06-20eRagexeRE, 2018-06-21aRagexeRE
+#if PACKETVER == 20180321 || \
+ PACKETVER == 20180328 || \
+ PACKETVER == 20180404 || \
+ PACKETVER == 20180418 || \
+ PACKETVER == 20180425 || \
+ PACKETVER == 20180502 || \
+ PACKETVER == 20180516 || \
+ PACKETVER == 20180523 || \
+ PACKETVER == 20180530 || \
+ PACKETVER == 20180605 || \
+ PACKETVER == 20180612 || \
+ PACKETVER == 20180620 || \
+ PACKETVER == 20180621
+ packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0362,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0365,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x07ec,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+#endif
+
+// 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexeRE, 2018-08-01cRagexeRE, 2018-08-08bRagexeRE, 2018-08-22cRagexeRE, 2018-08-29aRagexeRE, 2018-08-29bRagexeRE, 2018-09-12dRagexeRE, 2018-09-19aRagexeRE, 2018-10-02aRagexeRE, 2018-10-02bRagexeRE, 2018-10-17_02aRagexeRE, 2018-10-17_03aRagexeRE, 2018-10-17bRagexeRE, 2018-10-31cRagexeRE, 2018-11-07aRagexeRE, 2018-11-14cRagexeRE, 2018-11-14dRagexeRE, 2018-11-21cRagexeRE, 2018-11-28aRagexeRE, 2018-12-05bRagexeRE, 2018-12-12aRagexeRE, 2018-12-12bRagexeRE, 2018-12-19bRagexeRE, 2018-12-26aRagexeRE, 2019-01-09bRagexeRE
+#if PACKETVER == 20180704 || \
+ PACKETVER == 20180711 || \
+ PACKETVER == 20180718 || \
+ PACKETVER == 20180801 || \
+ PACKETVER == 20180808 || \
+ PACKETVER == 20180822 || \
+ PACKETVER == 20180829 || \
+ PACKETVER == 20180912 || \
+ PACKETVER == 20180919 || \
+ PACKETVER == 20181002 || \
+ PACKETVER == 20181017 || \
+ PACKETVER == 20181031 || \
+ PACKETVER == 20181107 || \
+ PACKETVER == 20181114 || \
+ PACKETVER == 20181121 || \
+ PACKETVER == 20181128 || \
+ PACKETVER == 20181205 || \
+ PACKETVER == 20181212 || \
+ PACKETVER == 20181219 || \
+ PACKETVER == 20181226 || \
+ PACKETVER >= 20190109
+ packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0362,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0365,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x07ec,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 14
+#endif
+
+
+#endif /* MAP_PACKETS_SHUFFLE_RE_H */
diff --git a/src/map/packets_shuffle_zero.h b/src/map/packets_shuffle_zero.h
new file mode 100644
index 000000000..4a85d619b
--- /dev/null
+++ b/src/map/packets_shuffle_zero.h
@@ -0,0 +1,784 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2013-2019 Hercules Dev Team
+ * Copyright (C) 2018-2019 Andrei Karas (4144)
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+//Included directly by clif.c in packet_loaddb()
+
+#ifndef MAP_PACKETS_SHUFFLE_ZERO_H
+#define MAP_PACKETS_SHUFFLE_ZERO_H
+
+#ifndef packet
+ #define packet(a,...)
+#endif
+
+/*
+ * packet syntax
+ * - packet(packet_id,function,offset ( specifies the offset of a packet field in bytes from the begin of the packet ),...)
+ * - Example: packet(0x0072,clif->pWantToConnection,2,6,10,14,18);
+ */
+
+/* This file is autogenerated, please do not commit manual changes */
+
+
+// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_zero, 2017-10-24aRagexe_2_zero, 2017-10-24aRagexe_zero, 2017-10-25bRagexe_zero, 2017-10-27aRagexe_zero, 2017-10-27bRagexe_zero, 2017-10-30aRagexe_zero, 2017-10-31aRagexe_zero, 2017-11-09aRagexe_zero, 2017-11-13aRagexe_zero, 2017-11-13bRagexe_zero, 2018-03-15aRagexe_zero, 2018-03-21aRagexe_zero, 2018-03-21bRagexe_zero, 2018-03-28_1aRagexe_zero, 2018-03-28cRagexe_zero, 2018-04-11aRagexe_zero, 2018-04-25_3aRagexe_zero, 2018-05-09_3aRagexe_zero, 2018-05-23aRagexe_zero, 2018-06-05bRagexe_zero, 2018-06-05cRagexe_zero, 2018-06-27aRagexe_zero, 2018-07-03aRagexe_zero, 2018-07-11_2aRagexe_zero, 2018-07-25_2aRagexe_zero, 2018-08-01aRagexe_zero, 2018-08-08_2aRagexe_zero, 2018-08-22aRagexe_zero, 2018-08-29aRagexe_zero, 2018-09-05aRagexe_zero, 2018-09-12aRagexe_zero, 2018-09-19aRagexe_zero, 2018-09-28aRagexe_zero, 2018-10-10_2aRagexe_zero, 2018-10-24_2aRagexe_zero
+#if PACKETVER == 20171018 || \
+ PACKETVER == 20171019 || \
+ PACKETVER == 20171023 || \
+ PACKETVER == 20171024 || \
+ PACKETVER == 20171025 || \
+ PACKETVER == 20171027 || \
+ PACKETVER == 20171030 || \
+ PACKETVER == 20171031 || \
+ PACKETVER == 20171109 || \
+ PACKETVER == 20171113 || \
+ PACKETVER == 20180315 || \
+ PACKETVER == 20180321 || \
+ PACKETVER == 20180328 || \
+ PACKETVER == 20180411 || \
+ PACKETVER == 20180425 || \
+ PACKETVER == 20180509 || \
+ PACKETVER == 20180523 || \
+ PACKETVER == 20180605 || \
+ PACKETVER == 20180627 || \
+ PACKETVER == 20180703 || \
+ PACKETVER == 20180711 || \
+ PACKETVER == 20180725 || \
+ PACKETVER == 20180801 || \
+ PACKETVER == 20180808 || \
+ PACKETVER == 20180822 || \
+ PACKETVER == 20180829 || \
+ PACKETVER == 20180905 || \
+ PACKETVER == 20180912 || \
+ PACKETVER == 20180919 || \
+ PACKETVER == 20180928 || \
+ PACKETVER == 20181010 || \
+ PACKETVER == 20181024
+ packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0362,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0365,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x07ec,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+#endif
+
+// 2017-11-15aRagexe_zero, 2017-11-15bRagexe_zero, 2017-11-16aRagexe_zero, 2017-11-17aRagexe_zero
+#if PACKETVER == 20171115 || \
+ PACKETVER == 20171116 || \
+ PACKETVER == 20171117
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0860,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0881,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x091c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0922,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0959,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0966,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-11-21aRagexe_zero, 2017-11-22aRagexe_zero
+#if PACKETVER == 20171121 || \
+ PACKETVER == 20171122
+ packet(0x0202,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x022d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0866,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0889,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0892,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x089e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08ad,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0918,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x091f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0928,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0943,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0950,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-11-23dRagexe_zero
+#if PACKETVER == 20171123
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0367,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0860,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0876,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0882,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x088c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0896,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x089e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x08a8,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x092b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0930,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0935,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0947,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0960,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-11-27aRagexe_zero, 2017-11-27cRagexe_zero, 2017-11-28aRagexe_zero
+#if PACKETVER == 20171127 || \
+ PACKETVER == 20171128
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0893,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-11-30bRagexe_zero
+#if PACKETVER == 20171130
+ packet(0x0361,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0864,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x086f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0871,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0872,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0875,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0878,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0881,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0884,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0886,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0887,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x088b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0894,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0899,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x08a0,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x08a7,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0925,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0928,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0930,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0931,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0935,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x093a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0947,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x094c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x094f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x095b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x095f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0960,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0965,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+#endif
+
+// 2017-12-04bRagexe_zero
+#if PACKETVER == 20171204
+ packet(0x0281,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x085b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x086f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x087d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0887,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0892,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0896,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x08aa,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0917,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x091b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0921,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0924,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0937,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0960,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2017-12-06aRagexe_zero, 2017-12-06bRagexe_zero, 2017-12-06cRagexe_zero, 2017-12-06dRagexe_zero, 2017-12-08aRagexe_zero, 2017-12-08cRagexe_zero, 2017-12-08dRagexe_zero, 2017-12-09bRagexe_zero, 2017-12-09cRagexe_zero, 2017-12-10aRagexe_zero, 2017-12-11bRagexe_zero, 2017-12-12aRagexe_zero, 2017-12-13aRagexe_zero, 2017-12-13bRagexe_zero, 2017-12-13cRagexe_zero
+#if PACKETVER == 20171206 || \
+ PACKETVER == 20171208 || \
+ PACKETVER == 20171209 || \
+ PACKETVER == 20171210 || \
+ PACKETVER == 20171211 || \
+ PACKETVER == 20171212 || \
+ PACKETVER == 20171213
+ packet(0x0281,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0366,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0436,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0835,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x083c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0860,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0862,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0864,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0870,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0878,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x087a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x087b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0885,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x088d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0893,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0897,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x089e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x08a4,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x08ac,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0920,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0934,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0936,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x093a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0940,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0941,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0959,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x095b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x095c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x095f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+#endif
+
+// 2017-12-14cRagexe_zero
+#if PACKETVER == 20171214
+ packet(0x023b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x02c4,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0438,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x085b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x085e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0862,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0864,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x086a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0871,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0873,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0886,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x088b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x088c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0892,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0894,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0897,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x08a3,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x08a5,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x08ac,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0933,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x094a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x094d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x094f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0951,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x095a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x095b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0960,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0969,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x096a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+#endif
+
+// 2017-12-20aRagexe_zero, 2017-12-21aRagexe_zero, 2017-12-21bRagexe_zero
+#if PACKETVER == 20171220 || \
+ PACKETVER == 20171221
+ packet(0x022d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0281,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0438,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0819,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0838,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x085f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0867,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x086c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0872,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x087a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x087e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0899,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x089b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x089c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x08a3,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08a5,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x08ad,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x091f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0921,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x092d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x092e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0932,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0934,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0937,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x094d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x095b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+#endif
+
+// 2017-12-27bRagexe_zero, 2017-12-29aRagexe_zero
+#if PACKETVER == 20171227 || \
+ PACKETVER == 20171229
+ packet(0x02c4,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0860,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x086c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0871,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0872,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0874,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0876,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0877,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0878,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x087b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0885,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x088b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0894,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x089f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x091c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0920,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0925,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0930,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0939,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x093e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0941,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0945,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0946,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x094b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x095e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0967,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0968,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+#endif
+
+// 2018-01-03aRagexe_zero
+#if PACKETVER == 20180103
+ packet(0x035f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0360,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x07e4,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x083c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0860,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0866,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x086d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0871,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0872,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0874,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x087b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0885,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0888,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0890,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0896,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x089d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x08a6,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x091e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0924,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0938,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x093b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0956,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0958,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x095b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x095d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0964,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0966,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x096a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+#endif
+
+// 2018-01-17aRagexe_zero
+#if PACKETVER == 20180117
+ packet(0x0361,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0364,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0438,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x083c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0866,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x086e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x086f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x087d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0881,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0884,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0886,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0890,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0891,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0893,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0899,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x089d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x089e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0919,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x091c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x091f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0921,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0928,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0929,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x092d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0933,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0946,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x095e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0963,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+#endif
+
+// 2018-01-31dRagexe_zero
+#if PACKETVER == 20180131
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0367,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0940,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2018-02-07bRagexe_zero
+#if PACKETVER == 20180207
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0967,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2018-02-13aRagexe_zero
+#if PACKETVER == 20180213
+ packet(0x022d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x02c4,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x035f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0361,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0802,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0815,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x085a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x085d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0868,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x087b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0882,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0887,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0888,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x088a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x088e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0917,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x091d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0922,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0930,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0941,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0942,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0947,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x094d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0958,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x095b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x095c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0967,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+#endif
+
+// 2018-02-21aRagexe_zero
+#if PACKETVER == 20180221
+ packet(0x02c4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0362,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0364,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0438,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0817,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x085b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x086a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0878,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0880,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0884,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x088d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0892,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0895,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x08a1,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x08a3,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x091b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0921,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0923,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x092d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0932,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x093b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x093d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x093e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0942,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0951,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0952,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0958,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0959,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x095d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+#endif
+
+// 2018-02-28bRagexe_zero, 2018-03-07aRagexe_zero, 2018-03-09aRagexe_zero
+#if PACKETVER == 20180228 || \
+ PACKETVER == 20180307 || \
+ PACKETVER == 20180309
+ packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0930,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+#endif
+
+// 2018-03-14nRagexe_zero
+#if PACKETVER == 20180314
+ packet(0x023b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0438,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x07ec,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x083c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x085d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x085f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0866,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0878,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x088d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0891,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0897,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0899,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x089e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x08a1,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0917,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0918,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x091f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0920,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0923,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0930,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0931,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x093f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0946,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x094a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x094e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0954,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0956,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0958,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+#endif
+
+// 2018-05-11aRagexe_zero, 2018-05-11bRagexe_zero
+#if PACKETVER == 20180511
+ packet(0x0817,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x085f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0863,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x086c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0877,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x087e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0880,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0889,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0893,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0896,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0899,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x08a2,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x08a4,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x08a5,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0919,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x091a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x091d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0920,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x092c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x092d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x092e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0941,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0942,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x094a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0955,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0956,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x095c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0961,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0968,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+#endif
+
+// 2018-11-14aRagexe_zero, 2018-11-20aRagexe_zero, 2018-11-28aRagexe_zero, 2018-12-12aRagexe_zero, 2018-12-19aRagexe_zero, 2018-12-26_2aRagexe_zero
+#if PACKETVER == 20181114 || \
+ PACKETVER == 20181120 || \
+ PACKETVER == 20181128 || \
+ PACKETVER == 20181212 || \
+ PACKETVER == 20181219 || \
+ PACKETVER >= 20181226
+ packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0362,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0365,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x07ec,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 14
+#endif
+
+
+#endif /* MAP_PACKETS_SHUFFLE_ZERO_H */
diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h
index 4d474ac93..d20b20bee 100644
--- a/src/map/packets_struct.h
+++ b/src/map/packets_struct.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2016 Hercules Dev Team
+ * Copyright (C) 2013-2018 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -25,10 +25,9 @@
#include "common/cbasetypes.h"
#include "common/mmo.h"
+#include "common/packetsstatic_len.h"
// Packet DB
-#define MIN_PACKET_DB 0x0064
-#define MAX_PACKET_DB 0x0F00
#define MAX_PACKET_POS 20
/**
@@ -76,8 +75,10 @@ enum packet_headers {
additemType = 0x2d4,
#elif PACKETVER < 20150226
additemType = 0x990,
-#else
+#elif PACKETVER < 20160921
additemType = 0xa0c,
+#else
+ additemType = 0xa37,
#endif
#if PACKETVER < 4
idle_unitType = 0x78,
@@ -141,8 +142,11 @@ enum packet_headers {
authokType = 0x73,
#elif PACKETVER < 20141022
authokType = 0x2eb,
-#else
+// Some clients smaller than 20160330 cant be tested [4144]
+#elif PACKETVER < 20160330
authokType = 0xa18,
+#else
+ authokType = 0x2eb,
#endif
script_clearType = 0x8d6,
package_item_announceType = 0x7fd,
@@ -186,12 +190,16 @@ enum packet_headers {
skill_entryType = 0x9ca,
#endif
graffiti_entryType = 0x1c9,
-#if PACKETVER > 20130000 /* not sure date */
+#if defined(PACKETVER_ZERO) || PACKETVER >= 20180418
+ dropflooritemType = 0xadd,
+#elif PACKETVER > 20130000 /* not sure date */
dropflooritemType = 0x84b,
#else
dropflooritemType = 0x9e,
#endif
-#if PACKETVER >= 20120925
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+ inventorylistnormalType = 0xb09,
+#elif PACKETVER >= 20120925
inventorylistnormalType = 0x991,
#elif PACKETVER >= 20080102
inventorylistnormalType = 0x2e8,
@@ -200,7 +208,9 @@ enum packet_headers {
#else
inventorylistnormalType = 0xa3,
#endif
-#if PACKETVER >= 20150226
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+ inventorylistequipType = 0xb0a,
+#elif PACKETVER >= 20150226
inventorylistequipType = 0xa0d,
#elif PACKETVER >= 20120925
inventorylistequipType = 0x992,
@@ -211,27 +221,33 @@ enum packet_headers {
#else
inventorylistequipType = 0xa4,
#endif
-#if PACKETVER >= 20120925
- storagelistnormalType = 0x995,
+#if PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+ storageListNormalType = 0xb09,
+#elif PACKETVER >= 20120925
+ storageListNormalType = 0x995,
#elif PACKETVER >= 20080102
- storagelistnormalType = 0x2ea,
+ storageListNormalType = 0x2ea,
#elif PACKETVER >= 20071002
- storagelistnormalType = 0x295,
+ storageListNormalType = 0x295,
#else
- storagelistnormalType = 0xa5,
+ storageListNormalType = 0xa5,
#endif
-#if PACKETVER >= 20150226
- storagelistequipType = 0xa10,
+#if PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+ storageListEquipType = 0xb0a,
+#elif PACKETVER >= 20150226
+ storageListEquipType = 0xa10,
#elif PACKETVER >= 20120925
- storagelistequipType = 0x996,
+ storageListEquipType = 0x996,
#elif PACKETVER >= 20080102
- storagelistequipType = 0x2d1,
+ storageListEquipType = 0x2d1,
#elif PACKETVER >= 20071002
- storagelistequipType = 0x296,
+ storageListEquipType = 0x296,
#else
- storagelistequipType = 0xa6,
+ storageListEquipType = 0xa6,
#endif
-#if PACKETVER >= 20120925
+#if PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+ cartlistnormalType = 0xb09,
+#elif PACKETVER >= 20120925
cartlistnormalType = 0x993,
#elif PACKETVER >= 20080102
cartlistnormalType = 0x2e9,
@@ -240,7 +256,9 @@ enum packet_headers {
#else
cartlistnormalType = 0x123,
#endif
-#if PACKETVER >= 20150226
+#if PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+ cartlistequipType = 0xb0a,
+#elif PACKETVER >= 20150226
cartlistequipType = 0xa0f,
#elif PACKETVER >= 20120925
cartlistequipType = 0x994,
@@ -272,10 +290,15 @@ enum packet_headers {
#else
unequipitemackType = 0xac,
#endif
-#if PACKETVER >= 20150226
+#if PACKETVER_MAIN_NUM >= 20180801 || PACKETVER_RE_NUM >= 20180801 || PACKETVER_ZERO_NUM >= 20180808
+ viewequipackType = 0xb03,
+#elif PACKETVER >= 20150226
viewequipackType = 0xa2d,
#elif PACKETVER >= 20120925
viewequipackType = 0x997,
+// [4144] not supported due other packets/structs not updated
+//#elif (PACKETVER_MAIN_NUM >= 20111207) || (PACKETVER_RE_NUM >= 20111122)
+// viewequipackType = 0x906,
#elif PACKETVER >= 20101124
viewequipackType = 0x859,
#else
@@ -285,8 +308,7 @@ enum packet_headers {
monsterhpType = 0x977,
maptypeproperty2Type = 0x99b,
npcmarketresultackType = 0x9d7,
- npcmarketopenType = 0x9d5,
-#if PACKETVER >= 20131223
+#if PACKETVER >= 20131223 // version probably can be 20131030 [4144]
wisendType = 0x9df,
#else
wisendType = 0x98,
@@ -295,13 +317,129 @@ enum packet_headers {
rouletteinfoackType = 0xa1c,
roulettgenerateackType = 0xa20,
roulettercvitemackType = 0xa22,
-#if 0 // Unknown
+#if PACKETVER >= 20141016
+ achievementListType = 0xa23,
+ achievementUpdateType = 0xa24,
+ achievementRewardAckType = 0xa26,
+#endif // PACKETVER >= 20141016
+#if PACKETVER_ZERO_NUM >= 20181010 || PACKETVER >= 20181017
+ questListType = 0xaff, ///< ZC_ALL_QUEST_LIST4
+#elif PACKETVER >= 20150513 // [4144] 0x09f8 handling in client from 2014-10-29aRagexe and 2014-03-26cRagexeRE
questListType = 0x9f8, ///< ZC_ALL_QUEST_LIST3
#elif PACKETVER >= 20141022
questListType = 0x97a, ///< ZC_ALL_QUEST_LIST2
#else // PACKETVER < 20141022
questListType = 0x2b1, ///< ZC_ALL_QUEST_LIST
#endif // PACKETVER >= 20141022
+ /* Rodex */
+ rodexicon = 0x09E7,
+ rodexread = 0x09EB,
+ rodexwriteresult = 0x09ED,
+ rodexnextpage = 0x09F0,
+ rodexgetzeny = 0x09F2,
+ rodexgetitem = 0x09F4,
+ rodexdelete = 0x09F6,
+ rodexadditem = 0x0A05,
+ rodexremoveitem = 0x0A07,
+ rodexopenwrite = 0x0A12,
+#if PACKETVER < 20160601
+ rodexmailList = 0x09F0,
+#elif PACKETVER < 20170419
+ rodexmailList = 0x0A7D,
+#else // PACKETVER >= 20170419
+ rodexmailList = 0x0Ac2,
+#endif
+#if PACKETVER < 20160316
+ rodexcheckplayer = 0x0A14,
+#else // PACKETVER >= 20160316
+ rodexcheckplayer = 0x0A51,
+#endif
+#if PACKETVER >= 20151223
+ skillscale = 0xA41,
+#endif
+#if PACKETVER >= 20130821
+ progressbarunit = 0x09D1,
+#endif
+#if PACKETVER >= 20171207
+ partymemberinfo = 0x0ae4,
+ partyinfo = 0x0ae5,
+#elif PACKETVER_MAIN_NUM >= 20170524 || PACKETVER_RE_NUM >= 20170502 || defined(PACKETVER_ZERO)
+ partymemberinfo = 0x0a43,
+ partyinfo = 0x0a44,
+#else
+ partymemberinfo = 0x01e9,
+ partyinfo = 0x00fb,
+#endif
+#if PACKETVER >= 20120716
+ clanOnlineCount = 0x0988, ///< ZC_NOTIFY_CLAN_CONNECTINFO
+ clanLeave = 0x0989, ///< ZC_ACK_CLAN_LEAVE
+ clanMessage = 0x098E, ///< ZC_NOTIFY_CLAN_CHAT
+#endif
+#if PACKETVER_ZERO_NUM >= 20181010 || PACKETVER >= 20181017
+ questAddType = 0xb0c,
+#elif PACKETVER >= 20150513 // [4144] 0x09f9 handled in client from 2014-10-29aRagexe and 2014-03-26cRagexeRE
+ questAddType = 0x9f9,
+#else
+ questAddType = 0x2b3,
+#endif // PACKETVER < 20150513
+#if PACKETVER_ZERO_NUM >= 20181010 || PACKETVER >= 20181017
+ questUpdateType = 0xafe,
+#elif PACKETVER >= 20150513
+ questUpdateType = 0x9fa,
+#else
+ questUpdateType = 0x2b5,
+#endif // PACKETVER < 20150513
+ questUpdateType2 = 0x8fe,
+#if PACKETVER >= 20171122
+ openUiType = 0xAE2,
+#elif PACKETVER >= 20150128
+ openUiType = 0xA38,
+#endif
+#if PACKETVER >= 20180627
+ authError = 0xb02,
+#elif PACKETVER >= 20101123
+ authError = 0x83e,
+#else
+ authError = 0x6a,
+#endif
+#if PACKETVER >= 3
+ useItemAckType = 0x1c8,
+#else
+ useItemAckType = 0xa8,
+#endif
+#if PACKETVER >= 4
+ sendLookType = 0x1d7,
+#else
+ sendLookType = 0xc3,
+#endif
+#if PACKETVER >= 20141016
+ buyingStoreUpdateItemType = 0x9e6,
+#else
+ buyingStoreUpdateItemType = 0x81b,
+#endif
+ reqName = 0x95,
+#if PACKETVER >= 20150503 // Confirm this?
+ reqNameAllType = 0xA30,
+#else
+ reqNameAllType = 0x195,
+#endif
+#if PACKETVER_MAIN_NUM >= 20170502 || PACKETVER_RE_NUM >= 20170419 || defined(PACKETVER_ZERO)
+ skilWarpPointType = 0xabe,
+#else
+ skilWarpPointType = 0x11c,
+#endif
+#if PACKETVER_MAIN_NUM >= 20161019 || PACKETVER_RE_NUM >= 20160921 || defined(PACKETVER_ZERO)
+ guildExpulsion = 0xa82,
+#elif PACKETVER >= 20100803
+ guildExpulsion = 0x839,
+#else
+ guildExpulsion = 0x15c,
+#endif
+#if PACKETVER_MAIN_NUM >= 20161019 || PACKETVER_RE_NUM >= 20160921 || defined(PACKETVER_ZERO)
+ guildLeave = 0xa83,
+#else
+ guildLeave = 0x15a,
+#endif
};
#if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
@@ -312,12 +450,20 @@ enum packet_headers {
* structs for data
*/
struct EQUIPSLOTINFO {
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 card[4];
+#else
uint16 card[4];
+#endif
} __attribute__((packed));
struct NORMALITEM_INFO {
int16 index;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 ITID;
+#else
uint16 ITID;
+#endif
uint8 type;
#if PACKETVER < 20120925
uint8 IsIdentified;
@@ -343,7 +489,7 @@ struct NORMALITEM_INFO {
#endif
} __attribute__((packed));
-struct RndOptions {
+struct ItemOptions {
int16 index;
int16 value;
uint8 param;
@@ -351,7 +497,11 @@ struct RndOptions {
struct EQUIPITEM_INFO {
int16 index;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 ITID;
+#else
uint16 ITID;
+#endif
uint8 type;
#if PACKETVER < 20120925
uint8 IsIdentified;
@@ -379,7 +529,7 @@ struct EQUIPITEM_INFO {
#endif
#if PACKETVER >= 20150226
uint8 option_count;
- struct RndOptions option_data[5];
+ struct ItemOptions option_data[MAX_ITEM_OPTIONS];
#endif
#if PACKETVER >= 20120925
struct {
@@ -400,7 +550,8 @@ struct packet_authok {
#if PACKETVER >= 20080102
int16 font;
#endif
-#if PACKETVER >= 20141022
+// Some clients smaller than 20160330 cant be tested [4144]
+#if PACKETVER >= 20141022 && PACKETVER < 20160330
uint8 sex;
#endif
} __attribute__((packed));
@@ -423,7 +574,11 @@ struct packet_additem {
int16 PacketType;
uint16 Index;
uint16 count;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 nameid;
+#else
uint16 nameid;
+#endif
uint8 IsIdentified;
uint8 IsDamaged;
uint8 refiningLevel;
@@ -442,14 +597,22 @@ struct packet_additem {
uint16 bindOnEquipType;
#endif
#if PACKETVER >= 20150226
- struct RndOptions option_data[5];
+ struct ItemOptions option_data[MAX_ITEM_OPTIONS];
+#endif
+#if PACKETVER >= 20160921
+ uint8 favorite;
+ uint16 look;
#endif
} __attribute__((packed));
struct packet_dropflooritem {
int16 PacketType;
uint32 ITAID;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 ITID;
+#else
uint16 ITID;
+#endif
#if PACKETVER >= 20130000 /* not sure date */
uint16 type;
#endif
@@ -459,6 +622,10 @@ struct packet_dropflooritem {
uint8 subX;
uint8 subY;
int16 count;
+#if defined(PACKETVER_ZERO) || PACKETVER >= 20180418
+ int8 showdropeffect;
+ int16 dropeffectmode;
+#endif
} __attribute__((packed));
struct packet_idle_unit2 {
#if PACKETVER < 20091103
@@ -472,12 +639,12 @@ struct packet_idle_unit2 {
int16 healthState;
int16 effectState;
int16 job;
- int16 head;
- int16 weapon;
- int16 accessory;
- int16 shield;
- int16 accessory2;
- int16 accessory3;
+ uint16 head;
+ uint16 weapon;
+ uint16 accessory;
+ uint16 shield;
+ uint16 accessory2;
+ uint16 accessory3;
int16 headpalette;
int16 bodypalette;
int16 headDir;
@@ -508,13 +675,13 @@ struct packet_spawn_unit2 {
int16 bodyState;
int16 healthState;
int16 effectState;
- int16 head;
- int16 weapon;
- int16 accessory;
+ uint16 head;
+ uint16 weapon;
+ uint16 accessory;
int16 job;
- int16 shield;
- int16 accessory2;
- int16 accessory3;
+ uint16 shield;
+ uint16 accessory2;
+ uint16 accessory3;
int16 headpalette;
int16 bodypalette;
int16 headDir;
@@ -547,23 +714,26 @@ struct packet_spawn_unit {
int32 effectState;
#endif
int16 job;
- int16 head;
+ uint16 head;
#if PACKETVER < 7
- int16 weapon;
+ uint16 weapon;
#else
- int32 weapon;
+ uint32 weapon;
#endif
- int16 accessory;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 shield;
+#endif
+ uint16 accessory;
#if PACKETVER < 7
- int16 shield;
+ uint16 shield;
#endif
- int16 accessory2;
- int16 accessory3;
+ uint16 accessory2;
+ uint16 accessory3;
int16 headpalette;
int16 bodypalette;
int16 headDir;
#if PACKETVER >= 20101124
- int16 robe;
+ uint16 robe;
#endif
uint32 GUID;
int16 GEmblemVer;
@@ -601,7 +771,7 @@ struct packet_unit_walking {
#if PACKETVER >= 20091103
int16 PacketLength;
#endif
-#if PACKETVER > 20071106
+#if PACKETVER >= 20071106
uint8 objecttype;
#endif
#if PACKETVER >= 20131223
@@ -617,24 +787,27 @@ struct packet_unit_walking {
int32 effectState;
#endif
int16 job;
- int16 head;
+ uint16 head;
#if PACKETVER < 7
- int16 weapon;
+ uint16 weapon;
#else
- int32 weapon;
+ uint32 weapon;
#endif
- int16 accessory;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 shield;
+#endif
+ uint16 accessory;
uint32 moveStartTime;
#if PACKETVER < 7
- int16 shield;
+ uint16 shield;
#endif
- int16 accessory2;
- int16 accessory3;
+ uint16 accessory2;
+ uint16 accessory3;
int16 headpalette;
int16 bodypalette;
int16 headDir;
#if PACKETVER >= 20101124
- int16 robe;
+ uint16 robe;
#endif
uint32 GUID;
int16 GEmblemVer;
@@ -659,7 +832,7 @@ struct packet_unit_walking {
uint8 isBoss;
#endif
#if PACKETVER >= 20150513
- int16 body;
+ uint16 body;
#endif
/* Might be earlier, this is when the named item bug began */
#if PACKETVER >= 20131223
@@ -686,23 +859,26 @@ struct packet_idle_unit {
int32 effectState;
#endif
int16 job;
- int16 head;
+ uint16 head;
#if PACKETVER < 7
- int16 weapon;
+ uint16 weapon;
#else
- int32 weapon;
+ uint32 weapon;
#endif
- int16 accessory;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 shield;
+#endif
+ uint16 accessory;
#if PACKETVER < 7
- int16 shield;
+ uint16 shield;
#endif
- int16 accessory2;
- int16 accessory3;
+ uint16 accessory2;
+ uint16 accessory3;
int16 headpalette;
int16 bodypalette;
int16 headDir;
#if PACKETVER >= 20101124
- int16 robe;
+ uint16 robe;
#endif
uint32 GUID;
int16 GEmblemVer;
@@ -728,7 +904,7 @@ struct packet_idle_unit {
uint8 isBoss;
#endif
#if PACKETVER >= 20150513
- int16 body;
+ uint16 body;
#endif
/* Might be earlier, this is when the named item bug began */
#if PACKETVER >= 20131223
@@ -785,7 +961,7 @@ struct packet_maptypeproperty2 {
uint32 nocostume : 1; /// Does not show costume sprite.
uint32 usecart : 1; /// Allow opening cart inventory
uint32 summonstarmiracle : 1; // TODO: What does this do? Related to Taekwon Masters, but I have no idea.
- uint32 SpareBits : 15; /// Currently ignored, reserved for future updates
+ uint32 SpareBits : 21; /// Currently ignored, reserved for future updates
} flag;
} __attribute__((packed));
@@ -852,11 +1028,19 @@ struct packet_package_item_announce {
int16 PacketType;
int16 PacketLength;
uint8 type;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 ItemID;
+#else
uint16 ItemID;
+#endif
int8 len;
char Name[NAME_LENGTH];
- int8 unknown;
+ int8 unknown; // probably unused
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 BoxItemID;
+#else
uint16 BoxItemID;
+#endif
} __attribute__((packed));
/* made possible thanks to Yommy!! */
@@ -864,7 +1048,11 @@ struct packet_item_drop_announce {
int16 PacketType;
int16 PacketLength;
uint8 type;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 ItemID;
+#else
uint16 ItemID;
+#endif
int8 len;
char Name[NAME_LENGTH];
char monsterNameLen;
@@ -915,7 +1103,11 @@ struct packet_roulette_open_ack {
int32 Serial;
int8 Step;
int8 Idx;
- int16 AdditionItemID;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 AdditionItemID;
+#else
+ uint16 AdditionItemID;
+#endif
int32 GoldPoint;
int32 SilverPoint;
int32 BronzePoint;
@@ -928,8 +1120,14 @@ struct packet_roulette_info_ack {
struct {
uint16 Row;
uint16 Position;
+#if PACKETVER >= 20180511
+ uint32 ItemId;
+ uint16 Count;
+ uint16 unused;
+#else
uint16 ItemId;
uint16 Count;
+#endif
} ItemInfo[42];
} __attribute__((packed));
@@ -943,7 +1141,11 @@ struct packet_roulette_generate_ack {
uint8 Result;
uint16 Step;
uint16 Idx;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 AdditionItemID;
+#else
uint16 AdditionItemID;
+#endif
int32 RemainGold;
int32 RemainSilver;
int32 RemainBronze;
@@ -957,34 +1159,73 @@ struct packet_roulette_itemrecv_req {
struct packet_roulette_itemrecv_ack {
int16 PacketType;
uint8 Result;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 AdditionItemID;
+#else
uint16 AdditionItemID;
+#endif
} __attribute__((packed));
struct packet_itemlist_normal {
int16 PacketType;
int16 PacketLength;
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+ uint8 invType;
+#endif
struct NORMALITEM_INFO list[MAX_ITEMLIST];
} __attribute__((packed));
struct packet_itemlist_equip {
int16 PacketType;
int16 PacketLength;
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+ uint8 invType;
+#endif
struct EQUIPITEM_INFO list[MAX_ITEMLIST];
} __attribute__((packed));
-struct packet_storelist_normal {
+struct ZC_STORE_ITEMLIST_NORMAL {
int16 PacketType;
int16 PacketLength;
-#if PACKETVER >= 20120925
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+ uint8 invType;
+#endif
+#if PACKETVER >= 20120925 && PACKETVER_RE_NUM < 20180829 && PACKETVER_ZERO_NUM < 20180919 && PACKETVER_MAIN_NUM < 20181002
char name[NAME_LENGTH];
#endif
struct NORMALITEM_INFO list[MAX_ITEMLIST];
} __attribute__((packed));
-struct packet_storelist_equip {
+struct ZC_INVENTORY_START {
+ int16 packetType;
+#if PACKETVER_RE_NUM >= 20180919 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+ int16 packetLength;
+#endif
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+ uint8 invType;
+#endif
+#if PACKETVER_RE_NUM >= 20180919 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+ char name[];
+#else
+ char name[NAME_LENGTH];
+#endif
+} __attribute__((packed));
+
+struct ZC_INVENTORY_END {
+ int16 packetType;
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+ uint8 invType;
+#endif
+ char flag;
+} __attribute__((packed));
+
+struct ZC_STORE_ITEMLIST_EQUIP {
int16 PacketType;
int16 PacketLength;
-#if PACKETVER >= 20120925
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+ uint8 invType;
+#endif
+#if PACKETVER >= 20120925 && PACKETVER_RE_NUM < 20180829 && PACKETVER_ZERO_NUM < 20180919 && PACKETVER_MAIN_NUM < 20181002
char name[NAME_LENGTH];
#endif
struct EQUIPITEM_INFO list[MAX_ITEMLIST];
@@ -1039,7 +1280,11 @@ struct packet_viewequip_ack {
#endif
int16 headpalette;
int16 bodypalette;
+#if PACKETVER_MAIN_NUM >= 20180801 || PACKETVER_RE_NUM >= 20180801 || PACKETVER_ZERO_NUM >= 20180808
+ int16 body2;
+#endif
uint8 sex;
+ // [4144] need remove MAX_INVENTORY from here
struct EQUIPITEM_INFO list[MAX_INVENTORY];
} __attribute__((packed));
@@ -1120,7 +1365,11 @@ struct packet_npc_market_purchase {
int16 PacketType;
int16 PacketLength;
struct {
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 ITID;
+#else
uint16 ITID;
+#endif
int32 qty;
} list[]; // Note: We assume this should be <= MAX_INVENTORY (since you can't hold more than MAX_INVENTORY items thus cant buy that many at once).
} __attribute__((packed));
@@ -1130,33 +1379,45 @@ struct packet_npc_market_result_ack {
int16 PacketLength;
uint8 result;
struct {
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 ITID;
+#else
uint16 ITID;
+#endif
uint16 qty;
uint32 price;
+ // [4144] need remove MAX_INVENTORY from here
} list[MAX_INVENTORY];/* assuming MAX_INVENTORY is max since you can't hold more than MAX_INVENTORY items thus cant buy that many at once. */
} __attribute__((packed));
-struct packet_npc_market_open {
- int16 PacketType;
- int16 PacketLength;
- /* inner struct figured by Ind after some annoying hour of debugging (data Thanks to Yommy) */
- struct {
- uint16 nameid;
- uint8 type;
- uint32 price;
- uint32 qty;
- uint16 view;
- // It seems that the client doesn't have any hard-coded limit for this list
- // it's possible to send up to 1890 items without dropping a packet that's
- // too large [Panikon]
- } list[1000];/* TODO: whats the actual max of this? */
+#if PACKETVER_MAIN_NUM >= 20131120 || PACKETVER_RE_NUM >= 20131106 || defined(PACKETVER_ZERO)
+/* inner struct figured by Ind after some annoying hour of debugging (data Thanks to Yommy) */
+struct PACKET_ZC_NPC_MARKET_OPEN_sub {
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 nameid;
+#else
+ uint16 nameid;
+#endif
+ uint8 type;
+ uint32 price;
+ uint32 qty;
+ uint16 weight;
} __attribute__((packed));
+struct PACKET_ZC_NPC_MARKET_OPEN {
+ int16 packetType;
+ int16 packetLength;
+ struct PACKET_ZC_NPC_MARKET_OPEN_sub list[];
+} __attribute__((packed));
+
+DEFINE_PACKET_HEADER(ZC_NPC_MARKET_OPEN, 0x09d5);
+#endif
+
struct packet_wis_end {
int16 PacketType;
int8 result;
#if PACKETVER >= 20131223
- uint32 unknown;/* maybe AID, not sure what for (works sending as 0) */
+ uint32 AID;
#endif
} __attribute__((packed));
@@ -1184,10 +1445,23 @@ struct packet_hotkey {
} __attribute__((packed));
/**
- * MISSION_HUNT_INFO
+ * MISSION_HUNT_INFO (PACKETVER >= 20141022)
+ * MISSION_HUNT_INFO_EX (PACKETVER >= 20150513)
*/
struct packet_mission_info_sub {
- int32 mob_id;
+#if PACKETVER_ZERO_NUM >= 20181010 || PACKETVER >= 20181017
+ uint32 huntIdent;
+ uint32 huntIdent2;
+ uint32 mobType;
+#elif PACKETVER >= 20150513
+ uint32 huntIdent;
+ uint32 mobType;
+#endif
+ uint32 mob_id;
+#if PACKETVER >= 20150513
+ int16 levelMin;
+ int16 levelMax;
+#endif
int16 huntCount;
int16 maxCount;
char mobName[NAME_LENGTH];
@@ -1195,7 +1469,7 @@ struct packet_mission_info_sub {
/**
* PACKET_ZC_ALL_QUEST_LIST2_INFO (PACKETVER >= 20141022)
- * PACKET_ZC_ALL_QUEST_LIST3_INFO (PACKETVER Unknown) / unused
+ * PACKET_ZC_ALL_QUEST_LIST3_INFO (PACKETVER >= 20150513)
*/
struct packet_quest_list_info {
int32 questID;
@@ -1212,7 +1486,7 @@ struct packet_quest_list_info {
* Header for:
* PACKET_ZC_ALL_QUEST_LIST (PACKETVER < 20141022)
* PACKET_ZC_ALL_QUEST_LIST2 (PACKETVER >= 20141022)
- * PACKET_ZC_ALL_QUEST_LIST3 (PACKETVER Unknown) / unused
+ * PACKET_ZC_ALL_QUEST_LIST3 (PACKETVER >= 20150513)
*
* @remark
* Contains (is followed by) a variable-length array of packet_quest_list_info
@@ -1237,6 +1511,1606 @@ struct packet_whisper_message {
char message[];
} __attribute__((packed));
+/* RoDEX */
+struct PACKET_CZ_ADD_ITEM_TO_MAIL {
+ int16 PacketType;
+ int16 index;
+ int16 count;
+} __attribute__((packed));
+
+struct PACKET_ZC_ADD_ITEM_TO_MAIL {
+ int16 PacketType;
+ int8 result;
+ int16 index;
+ int16 count;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ int8 type;
+ int8 IsIdentified;
+ int8 IsDamaged;
+ int8 refiningLevel;
+ struct EQUIPSLOTINFO slot;
+ struct ItemOptions optionData[MAX_ITEM_OPTIONS];
+ int16 weight;
+ uint8 favorite;
+ uint32 location;
+} __attribute__((packed));
+
+struct mail_item {
+ int16 count;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 ITID;
+#else
+ uint16 ITID;
+#endif
+ int8 IsIdentified;
+ int8 IsDamaged;
+ int8 refiningLevel;
+ struct EQUIPSLOTINFO slot;
+ uint32 location;
+ uint8 type;
+ uint16 viewSprite;
+ uint16 bindOnEquip;
+ struct ItemOptions optionData[MAX_ITEM_OPTIONS];
+} __attribute__((packed));
+
+struct PACKET_CZ_REQ_OPEN_WRITE_MAIL {
+ int16 PacketType;
+ char receiveName[NAME_LENGTH];
+} __attribute__((packed));
+
+struct PACKET_ZC_ACK_OPEN_WRITE_MAIL {
+ int16 PacketType;
+ char receiveName[NAME_LENGTH];
+ int8 result;
+} __attribute__((packed));
+
+struct PACKET_CZ_REQ_REMOVE_ITEM_MAIL {
+ int16 PacketType;
+ int16 index;
+ uint16 cnt;
+} __attribute__((packed));
+
+struct PACKET_ZC_ACK_REMOVE_ITEM_MAIL {
+ int16 PacketType;
+ int8 result;
+ int16 index;
+ uint16 cnt;
+ int16 weight;
+} __attribute__((packed));
+
+struct PACKET_CZ_SEND_MAIL {
+ int16 PacketType;
+ int16 PacketLength;
+ char receiveName[24];
+ char senderName[24];
+ int64 zeny;
+ int16 Titlelength;
+ int16 TextcontentsLength;
+#if PACKETVER > 20160600
+ int32 receiver_char_id;
+#endif // PACKETVER > 20160600
+ char string[];
+} __attribute__((packed));
+
+struct PACKET_ZC_WRITE_MAIL_RESULT {
+ int16 PacketType;
+ int8 result;
+} __attribute__((packed));
+
+struct PACKET_CZ_CHECKNAME {
+ int16 PacketType;
+ char Name[24];
+} __attribute__((packed));
+
+struct PACKET_ZC_CHECKNAME {
+ int16 PacketType;
+ int32 CharId;
+ int16 Class;
+ int16 BaseLevel;
+#if PACKETVER >= 20160316
+ char Name[24];
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_NOTIFY_UNREADMAIL {
+ int16 PacketType;
+ char result;
+} __attribute__((packed));
+
+struct maillistinfo {
+#if PACKETVER >= 20170419
+ uint8 openType;
+#endif
+ int64 MailID;
+ int8 Isread;
+ uint8 type;
+ char SenderName[24];
+#if PACKETVER < 20170419
+ int32 regDateTime;
+#endif
+ int32 expireDateTime;
+ int16 Titlelength;
+ char title[];
+} __attribute__((packed));
+
+struct PACKET_ZC_MAIL_LIST {
+ int16 PacketType;
+ int16 PacketLength;
+#if PACKETVER < 20170419
+ int8 opentype;
+ int8 cnt;
+#endif
+ int8 IsEnd;
+} __attribute__((packed));
+
+struct PACKET_CZ_REQ_NEXT_MAIL_LIST {
+ int16 PacketType;
+ int8 opentype;
+ int64 Lower_MailID;
+} __attribute__((packed));
+
+struct PACKET_CZ_REQ_OPEN_MAIL {
+ int16 PacketType;
+#if PACKETVER >= 20170419
+ int64 char_Upper_MailID;
+ int64 return_Upper_MailID;
+ int64 account_Upper_MailID;
+#else
+ int8 opentype;
+ int64 Upper_MailID;
+#endif
+} __attribute__((packed));
+
+struct PACKET_CZ_REQ_READ_MAIL {
+ int16 PacketType;
+ int8 opentype;
+ int64 MailID;
+} __attribute__((packed));
+
+struct PACKET_ZC_READ_MAIL {
+ int16 PacketType;
+ int16 PacketLength;
+ int8 opentype;
+ int64 MailID;
+ int16 TextcontentsLength;
+ int64 zeny;
+ int8 ItemCnt;
+} __attribute__((packed));
+
+struct PACKET_CZ_REQ_DELETE_MAIL {
+ int16 PacketType;
+ int8 opentype;
+ int64 MailID;
+} __attribute__((packed));
+
+struct PACKET_ZC_ACK_DELETE_MAIL {
+ int16 PacketType;
+ int8 opentype;
+ int64 MailID;
+} __attribute__((packed));
+
+struct PACKET_CZ_REQ_REFRESH_MAIL_LIST {
+ int16 PacketType;
+#if PACKETVER >= 20170419
+ int64 Upper_MailID;
+ int8 unknown[16];
+#else
+ int8 opentype;
+ int64 Upper_MailID;
+#endif
+} __attribute__((packed));
+
+struct PACKET_CZ_REQ_ZENY_FROM_MAIL {
+ int16 PacketType;
+ int64 MailID;
+ int8 opentype;
+} __attribute__((packed));
+
+struct PACKET_ZC_ACK_ZENY_FROM_MAIL {
+ int16 PacketType;
+ int64 MailID;
+ int8 opentype;
+ int8 result;
+} __attribute__((packed));
+
+struct PACKET_CZ_REQ_ITEM_FROM_MAIL {
+ int16 PacketType;
+ int64 MailID;
+ int8 opentype;
+} __attribute__((packed));
+
+struct PACKET_ZC_ACK_ITEM_FROM_MAIL {
+ int16 PacketType;
+ int64 MailID;
+ int8 opentype;
+ int8 result;
+} __attribute__((packed));
+
+struct PACKET_ZC_SKILL_SCALE {
+ int16 PacketType;
+ uint32 AID;
+ int16 skill_id;
+ int16 skill_lv;
+ int16 x;
+ int16 y;
+ uint32 casttime;
+} __attribute__((packed));
+
+struct ZC_PROGRESS_ACTOR {
+ int16 PacketType;
+ int32 GID;
+ int32 color;
+ uint32 time;
+} __attribute__((packed));
+
+struct PACKET_ZC_ADD_MEMBER_TO_GROUP {
+ int16 packetType;
+ uint32 AID;
+#if PACKETVER >= 20171207
+ uint32 GID;
+#endif
+ uint32 leader;
+#if PACKETVER_MAIN_NUM >= 20170524 || PACKETVER_RE_NUM >= 20170502 || defined(PACKETVER_ZERO)
+ int16 class;
+ int16 baseLevel;
+#endif
+ int16 x;
+ int16 y;
+ uint8 offline;
+ char partyName[NAME_LENGTH];
+ char playerName[NAME_LENGTH];
+ char mapName[MAP_NAME_LENGTH_EXT];
+ int8 sharePickup;
+ int8 shareLoot;
+} __attribute__((packed));
+
+struct PACKET_ZC_GROUP_LIST_SUB {
+ uint32 AID;
+#if PACKETVER >= 20171207
+ uint32 GID;
+#endif
+ char playerName[NAME_LENGTH];
+ char mapName[MAP_NAME_LENGTH_EXT];
+ uint8 leader;
+ uint8 offline;
+#if PACKETVER_MAIN_NUM >= 20170524 || PACKETVER_RE_NUM >= 20170502 || defined(PACKETVER_ZERO)
+ int16 class;
+ int16 baseLevel;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_GROUP_LIST {
+ int16 packetType;
+ int16 packetLen;
+ char partyName[NAME_LENGTH];
+ struct PACKET_ZC_GROUP_LIST_SUB members[];
+} __attribute__((packed));
+
+#if PACKETVER_MAIN_NUM >= 20130626 || PACKETVER_RE_NUM >= 20130605 || defined(PACKETVER_ZERO)
+struct PACKET_ZC_CLANINFO {
+ int16 PacketType;
+ int16 PacketLength;
+ uint32 ClanID;
+ char ClanName[NAME_LENGTH];
+ char MasterName[NAME_LENGTH];
+ char Map[MAP_NAME_LENGTH_EXT];
+ uint8 AllyCount;
+ uint8 AntagonistCount;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(ZC_CLANINFO, 0x098a);
+#endif
+
+struct PACKET_ZC_NOTIFY_CLAN_CONNECTINFO {
+ int16 PacketType;
+ int16 NumConnect;
+ int16 NumTotal;
+} __attribute__((packed));
+
+struct PACKET_ZC_ACK_CLAN_LEAVE {
+ int16 PacketType;
+} __attribute__((packed));
+
+struct PACKET_ZC_NOTIFY_CLAN_CHAT {
+ int16 PacketType;
+ int16 PacketLength;
+ char MemberName[NAME_LENGTH];
+ char Message[];
+} __attribute__((packed));
+
+/**
+ * PACKET_ZC_MISSION_HUNT (PACKETVER < 20150513)
+ * PACKET_ZC_MISSION_HUNT_EX (PACKETVER >= 20150513)
+ */
+struct packet_quest_hunt_sub {
+#if PACKETVER_ZERO_NUM >= 20181010 || PACKETVER >= 20181017
+ uint32 huntIdent;
+ uint32 huntIdent2;
+ uint32 mobType;
+#elif PACKETVER >= 20150513
+ uint32 huntIdent;
+ uint32 mobType;
+#endif
+ uint32 mob_id;
+#if PACKETVER >= 20150513
+ int16 levelMin;
+ int16 levelMax;
+#endif
+ int16 huntCount;
+ char mobName[NAME_LENGTH];
+} __attribute__((packed));
+
+/**
+ * Header for:
+ * PACKET_ZC_ADD_QUEST (PACKETVER < 20150513)
+ * PACKET_ZC_ADD_QUEST_EX (PACKETVER >= 20150513)
+ */
+struct packet_quest_add_header {
+ uint16 PacketType;
+ uint32 questID;
+ uint8 active;
+ int32 quest_svrTime;
+ int32 quest_endTime;
+ int16 count;
+ struct packet_quest_hunt_sub objectives[];
+} __attribute__((packed));
+
+/**
+ * PACKET_MOB_HUNTING (PACKETVER < 20150513)
+ * PACKET_MOB_HUNTING_EX (PACKETVER >= 20150513)
+ */
+struct packet_quest_update_hunt {
+ uint32 questID;
+#if PACKETVER_ZERO_NUM >= 20181010 || PACKETVER >= 20181017
+ uint32 huntIdent;
+ uint32 huntIdent2;
+#elif PACKETVER >= 20150513
+ uint32 huntIdent;
+#else
+ uint32 mob_id;
+#endif // PACKETVER < 20150513
+ int16 maxCount;
+ int16 count;
+} __attribute__((packed));
+
+/**
+ * Header for:
+ * PACKET_ZC_UPDATE_MISSION_HUNT (PACKETVER < 20150513)
+ * PACKET_ZC_UPDATE_MISSION_HUNT_EX (PACKETVER >= 20150513)
+ */
+struct packet_quest_update_header {
+ uint16 PacketType;
+ uint16 PacketLength;
+ int16 count;
+ struct packet_quest_update_hunt objectives[];
+} __attribute__((packed));
+
+/**
+ * Header for:
+ * PACKET_MOB_HUNTING (PACKETVER >= 20150513)
+ */
+struct packet_quest_hunt_info_sub {
+ uint32 questID;
+ uint32 mob_id;
+ int16 maxCount;
+ int16 count;
+} __attribute__((packed));
+
+/**
+ * Header for:
+ * ZC_HUNTING_QUEST_INFO (PACKETVER >= 20150513)
+ */
+struct packet_quest_hunt_info {
+ uint16 PacketType;
+ uint16 PacketLength;
+ struct packet_quest_hunt_info_sub info[];
+} __attribute__((packed));
+
+struct PACKET_ZC_FORMATSTRING_MSG {
+ uint16 PacketType;
+ uint16 PacketLength;
+ uint16 MessageId;
+ char MessageString[];
+} __attribute__((packed));
+
+struct PACKET_ZC_FORMATSTRING_MSG_COLOR {
+ uint16 PacketType;
+ uint16 PacketLength;
+ uint16 messageId;
+#if PACKETVER >= 20160406
+ uint32 color;
+#endif
+ char messageString[];
+} __attribute__((packed));
+
+struct PACKET_ZC_MSG_COLOR {
+ uint16 PacketType;
+ uint16 MessageId;
+ uint32 MessageColor;
+} __attribute__((packed));
+
+struct PACKET_CZ_OPEN_UI {
+ int16 PacketType;
+ int8 UIType;
+} __attribute__((packed));
+
+struct PACKET_ZC_OPEN_UI {
+ int16 PacketType;
+ int8 UIType;
+#if PACKETVER >= 20171122
+ int32 data;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_UI_ACTION {
+ int16 PacketType;
+ int32 UIType;
+ int32 data;
+} __attribute__((packed));
+
+struct PACKET_CZ_PRIVATE_AIRSHIP_REQUEST {
+ int16 PacketType;
+ char mapName[MAP_NAME_LENGTH_EXT];
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 ItemID;
+#else
+ uint16 ItemID;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_PRIVATE_AIRSHIP_RESPONSE {
+ int16 PacketType;
+ uint32 flag;
+} __attribute__((packed));
+
+struct PACKET_CZ_REQ_STYLE_CHANGE {
+ int16 PacketType;
+ int16 HeadPalette;
+ int16 HeadStyle;
+ int16 BodyPalette;
+ int16 TopAccessory;
+ int16 MidAccessory;
+ int16 BottomAccessory;
+} __attribute__((packed));
+
+struct PACKET_CZ_REQ_STYLE_CHANGE2 {
+ int16 PacketType;
+ int16 HeadPalette;
+ int16 HeadStyle;
+ int16 BodyPalette;
+ int16 TopAccessory;
+ int16 MidAccessory;
+ int16 BottomAccessory;
+ int16 BodyStyle;
+} __attribute__((packed));
+
+struct PACKET_ZC_STYLE_CHANGE_RES {
+ int16 PacketType;
+ int8 flag;
+} __attribute__((packed));
+
+struct pet_evolution_items {
+ int16 index;
+ int16 amount;
+} __attribute__((packed));
+
+struct PACKET_CZ_PET_EVOLUTION {
+ int16 PacketType;
+ uint16 PacketLength;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 EvolvedPetEggID;
+#else
+ uint16 EvolvedPetEggID;
+#endif
+ // struct pet_evolution_items items[];
+} __attribute__((packed));
+
+struct packet_ZC_REFUSE_LOGIN {
+ int16 PacketType;
+#if PACKETVER >= 20101123
+ uint32 error_code;
+#else
+ uint8 error_code;
+#endif
+ char block_date[20];
+} __attribute__((packed));
+
+struct PACKET_ZC_NOTIFY_CHAT {
+ int16 PacketType;
+ int16 PacketLength;
+ uint32 GID;
+ char Message[];
+} __attribute__((packed));
+
+struct PACKET_ZC_NOTIFY_PLAYERCHAT {
+ int16 PacketType;
+ int16 PacketLength;
+ char Message[];
+} __attribute__((packed));
+
+struct PACKET_ZC_ITEM_ENTRY {
+ int16 packetType;
+ uint32 AID;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ uint8 identify;
+ uint16 x;
+ uint16 y;
+ uint16 amount;
+ uint8 subX;
+ uint8 subY;
+} __attribute__((packed));
+
+struct PACKET_ZC_ADD_ITEM_TO_STORE {
+ int16 packetType;
+ int16 index;
+ int32 amount;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+#if PACKETVER >= 5
+ uint8 itemType;
+#endif
+ uint8 identified;
+ uint8 damaged;
+ uint8 refine;
+ struct EQUIPSLOTINFO slot;
+#if PACKETVER >= 20150226
+ struct ItemOptions option_data[MAX_ITEM_OPTIONS];
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_MVP_GETTING_ITEM {
+ int16 packetType;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_ACK_TOUSESKILL {
+ int16 packetType;
+ uint16 skillId;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ int32 btype;
+ uint32 itemId;
+#else
+ int16 btype;
+ uint16 itemId;
+#endif
+ uint8 flag;
+ uint8 cause;
+} __attribute__((packed));
+
+struct PACKET_ZC_ADD_ITEM_TO_CART {
+ int16 packetType;
+ int16 index;
+ int32 amount;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+#if PACKETVER >= 5
+ uint8 itemType;
+#endif
+ uint8 identified;
+ uint8 damaged;
+ uint8 refine;
+ struct EQUIPSLOTINFO slot;
+#if PACKETVER >= 20150226
+ struct ItemOptions option_data[MAX_ITEM_OPTIONS];
+#endif
+} __attribute__((packed));
+
+struct PACKET_CZ_REQMAKINGITEM {
+ int16 packetType;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+ uint32 material[3];
+#else
+ uint16 itemId;
+ uint16 material[3];
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_ACK_REQMAKINGITEM {
+ int16 packetType;
+ int16 result;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_FEED_PET {
+ int16 packetType;
+ uint8 result;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_FEED_MER {
+ int16 packetType;
+ uint8 result;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_USE_ITEM_ACK {
+ int16 packetType;
+ int16 index;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+ uint32 AID;
+#elif PACKETVER >= 3
+ uint16 itemId;
+ uint32 AID;
+#endif
+ int16 amount;
+ uint8 result;
+} __attribute__((packed));
+
+struct PACKET_ZC_SPRITE_CHANGE {
+ int16 packetType;
+ uint32 AID;
+ uint8 type;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 val;
+ uint32 val2;
+#elif PACKETVER >= 4
+ uint16 val;
+ uint16 val2;
+#else
+ uint8 val;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_ADD_EXCHANGE_ITEM {
+ int16 packetType;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+ uint8 itemType;
+ int32 amount;
+#elif PACKETVER >= 20100223
+ uint16 itemId;
+ uint8 itemType;
+ int32 amount;
+#else
+ int32 amount;
+ uint16 itemId;
+#endif
+ uint8 identified;
+ uint8 damaged;
+ uint8 refine;
+ struct EQUIPSLOTINFO slot;
+#if PACKETVER >= 20150226
+ struct ItemOptions option_data[MAX_ITEM_OPTIONS];
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_CASH_TIME_COUNTER {
+ int16 packetType;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ uint32 seconds;
+} __attribute__((packed));
+
+struct PACKET_ZC_CASH_ITEM_DELETE {
+ int16 packetType;
+ uint16 index;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_ITEM_PICKUP_PARTY {
+ int16 packetType;
+ uint32 AID;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ uint8 identified;
+ uint8 damaged;
+ uint8 refine;
+ struct EQUIPSLOTINFO slot;
+ uint16 location;
+ uint8 itemType;
+} __attribute__((packed));
+
+struct PACKET_ZC_UPDATE_ITEM_FROM_BUYING_STORE {
+ int16 packetType;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ uint16 amount;
+#if PACKETVER >= 20141016
+ uint32 zeny;
+ uint32 zenyLimit;
+ uint32 charId;
+ uint32 updateTime;
+#else
+ uint32 zenyLimit;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_ACK_WEAPONREFINE {
+ int16 packetType;
+ int32 result;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+#if PACKETVER_MAIN_NUM >= 20131230 || PACKETVER_RE_NUM >= 20131230 || defined(PACKETVER_ZERO)
+// PACKET_ZC_PROPERTY_HOMUN2
+struct PACKET_ZC_PROPERTY_HOMUN {
+ int16 packetType;
+ char name[NAME_LENGTH];
+ // Bit field, bit 0 : rename_flag (1 = already renamed), bit 1 : homunc vaporized (1 = true), bit 2 : homunc dead (1 = true)
+ uint8 flags;
+ uint16 level;
+ uint16 hunger;
+ uint16 intimacy;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ uint16 atk2;
+ uint16 matk;
+ uint16 hit;
+ uint16 crit;
+ uint16 def;
+ uint16 mdef;
+ uint16 flee;
+ uint16 amotion;
+ uint32 hp;
+ uint32 maxHp;
+ uint16 sp;
+ uint16 maxSp;
+ uint32 exp;
+ uint32 expNext;
+ uint16 skillPoints;
+ uint16 range;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(ZC_PROPERTY_HOMUN, 0x09f7);
+#elif PACKETVER_MAIN_NUM >= 20101005 || PACKETVER_RE_NUM >= 20080827 || defined(PACKETVER_ZERO)
+// PACKET_ZC_PROPERTY_HOMUN1
+struct PACKET_ZC_PROPERTY_HOMUN {
+ int16 packetType;
+ char name[NAME_LENGTH];
+ // Bit field, bit 0 : rename_flag (1 = already renamed), bit 1 : homunc vaporized (1 = true), bit 2 : homunc dead (1 = true)
+ uint8 flags;
+ uint16 level;
+ uint16 hunger;
+ uint16 intimacy;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ uint16 atk2;
+ uint16 matk;
+ uint16 hit;
+ uint16 crit;
+ uint16 def;
+ uint16 mdef;
+ uint16 flee;
+ uint16 amotion;
+ uint16 hp;
+ uint16 maxHp;
+ uint16 sp;
+ uint16 maxSp;
+ uint32 exp;
+ uint32 expNext;
+ uint16 skillPoints;
+ uint16 range;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(ZC_PROPERTY_HOMUN, 0x022e);
+#endif
+
+struct PACKET_ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER {
+ int16 packetType;
+ uint16 result;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_CZ_REQ_ITEMREPAIR {
+ int16 packetType;
+ int16 index;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ uint8 refine;
+ struct EQUIPSLOTINFO slot;
+} __attribute__((packed));
+
+struct PACKET_CZ_REQ_MAKINGITEM {
+ int16 packetType;
+ int16 type;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_CZ_SSILIST_ITEM_CLICK {
+ int16 packetType;
+ uint32 AID;
+ uint32 storeId;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_ACK_SCHEDULER_CASHITEM_sub {
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ uint32 price;
+} __attribute__((packed));
+
+struct PACKET_ZC_ACK_SCHEDULER_CASHITEM {
+ int16 packetType;
+ int16 packetLength;
+ int16 count;
+ int16 tabNum;
+ struct PACKET_ZC_ACK_SCHEDULER_CASHITEM_sub items[];
+} __attribute__((packed));
+
+struct PACKET_ZC_PC_PURCHASE_MYITEMLIST_sub {
+ uint32 price;
+ int16 index;
+ int16 amount;
+ uint8 itemType;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ uint8 identified;
+ uint8 damaged;
+ uint8 refine;
+ struct EQUIPSLOTINFO slot;
+#if PACKETVER >= 20150226
+ struct ItemOptions option_data[MAX_ITEM_OPTIONS];
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_PC_PURCHASE_MYITEMLIST {
+ int16 packetType;
+ int16 packetLength;
+ uint32 AID;
+ struct PACKET_ZC_PC_PURCHASE_MYITEMLIST_sub items[];
+} __attribute__((packed));
+
+struct PACKET_ZC_PC_PURCHASE_ITEMLIST_sub {
+ uint32 price;
+ uint32 discountPrice;
+ uint8 itemType;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_PC_PURCHASE_ITEMLIST {
+ int16 packetType;
+ int16 packetLength;
+ struct PACKET_ZC_PC_PURCHASE_ITEMLIST_sub items[];
+} __attribute__((packed));
+
+struct PACKET_CZ_PC_PURCHASE_ITEMLIST_sub {
+ uint16 amount;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_CZ_PC_PURCHASE_ITEMLIST {
+ int16 packetType;
+ int16 packetLength;
+ struct PACKET_CZ_PC_PURCHASE_ITEMLIST_sub items[];
+} __attribute__((packed));
+
+struct PACKET_CZ_REQ_OPEN_BUYING_STORE_sub {
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ uint16 amount;
+ uint32 price;
+} __attribute__((packed));
+
+struct PACKET_CZ_REQ_OPEN_BUYING_STORE {
+ int16 packetType;
+ int16 packetLength;
+ uint32 zenyLimit;
+ uint8 result;
+ char storeName[MESSAGE_SIZE];
+ struct PACKET_CZ_REQ_OPEN_BUYING_STORE_sub items[];
+} __attribute__((packed));
+
+struct PACKET_ZC_MYITEMLIST_BUYING_STORE_sub {
+ uint32 price;
+ uint16 amount;
+ uint8 itemType;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_MYITEMLIST_BUYING_STORE {
+ int16 packetType;
+ int16 packetLength;
+ uint32 AID;
+ uint32 zenyLimit;
+ struct PACKET_ZC_MYITEMLIST_BUYING_STORE_sub items[];
+} __attribute__((packed));
+
+struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC_sub {
+ uint32 price;
+ uint16 amount;
+ int16 index;
+ uint8 itemType;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ uint8 identified;
+ uint8 damaged;
+ uint8 refine;
+ struct EQUIPSLOTINFO slot;
+#if PACKETVER >= 20150226
+ struct ItemOptions option_data[MAX_ITEM_OPTIONS];
+#endif
+// [4144] date 20160921 not confirmed. Can be bigger or smaller
+#if PACKETVER >= 20160921
+ uint32 location;
+ uint16 viewSprite;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC {
+ int16 packetType;
+ int16 packetLength;
+ uint32 AID;
+#if PACKETVER >= 20100105
+ uint32 venderId;
+#endif
+ struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC_sub items[];
+} __attribute__((packed));
+
+struct PACKET_ZC_ACK_ITEMLIST_BUYING_STORE_sub {
+ uint32 price;
+ uint16 amount;
+ uint8 itemType;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_ACK_ITEMLIST_BUYING_STORE {
+ int16 packetType;
+ int16 packetLength;
+ uint32 AID;
+ uint32 storeId;
+ uint32 zenyLimit;
+ struct PACKET_ZC_ACK_ITEMLIST_BUYING_STORE_sub items[];
+} __attribute__((packed));
+
+struct PACKET_CZ_REQ_TRADE_BUYING_STORE_sub {
+ int16 index;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ uint16 amount;
+} __attribute__((packed));
+
+struct PACKET_CZ_REQ_TRADE_BUYING_STORE {
+ int16 packetType;
+ int16 packetLength;
+ uint32 AID;
+ uint32 storeId;
+ struct PACKET_CZ_REQ_TRADE_BUYING_STORE_sub items[];
+} __attribute__((packed));
+
+struct PACKET_ZC_MAKABLEITEMLIST_sub {
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+ uint32 material[3];
+#else
+ uint16 itemId;
+ uint16 material[3];
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_MAKABLEITEMLIST {
+ int16 packetType;
+ int16 packetLength;
+ struct PACKET_ZC_MAKABLEITEMLIST_sub items[];
+} __attribute__((packed));
+
+struct PACKET_ZC_MAKINGARROW_LIST_sub {
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_MAKINGARROW_LIST {
+ int16 packetType;
+ int16 packetLength;
+ struct PACKET_ZC_MAKINGARROW_LIST_sub items[];
+} __attribute__((packed));
+
+struct PACKET_ZC_REPAIRITEMLIST_sub {
+ int16 index;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ uint8 refine; // unused?
+ struct EQUIPSLOTINFO slot; // unused?
+} __attribute__((packed));
+
+struct PACKET_ZC_REPAIRITEMLIST {
+ int16 packetType;
+ int16 packetLength;
+ struct PACKET_ZC_REPAIRITEMLIST_sub items[];
+} __attribute__((packed));
+
+struct PACKET_ZC_NOTIFY_WEAPONITEMLIST_sub {
+ int16 index;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ uint8 refine; // unused?
+ struct EQUIPSLOTINFO slot; // unused?
+} __attribute__((packed));
+
+struct PACKET_ZC_NOTIFY_WEAPONITEMLIST {
+ int16 packetType;
+ int16 packetLength;
+ struct PACKET_ZC_NOTIFY_WEAPONITEMLIST_sub items[];
+} __attribute__((packed));
+
+struct PACKET_ZC_MAKINGITEM_LIST_sub {
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_MAKINGITEM_LIST {
+ int16 packetType;
+ int16 packetLength;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 makeItem;
+#else
+ uint16 makeItem;
+#endif
+ struct PACKET_ZC_MAKINGITEM_LIST_sub items[];
+} __attribute__((packed));
+
+struct PACKET_ZC_PC_CASH_POINT_ITEMLIST_sub {
+ uint32 price;
+ uint32 discountPrice;
+ uint8 itemType;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_PC_CASH_POINT_ITEMLIST {
+ int16 packetType;
+ int16 packetLength;
+ uint32 cashPoints;
+#if PACKETVER >= 20070711
+ uint32 kafraPoints;
+#endif
+ struct PACKET_ZC_PC_CASH_POINT_ITEMLIST_sub items[];
+} __attribute__((packed));
+
+struct PACKET_CZ_PC_BUY_CASH_POINT_ITEM_sub {
+ uint16 amount;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_CZ_PC_BUY_CASH_POINT_ITEM {
+ int16 packetType;
+#if PACKETVER >= 20101116
+ int16 packetLength;
+ uint32 kafraPoints;
+ uint16 count;
+ struct PACKET_CZ_PC_BUY_CASH_POINT_ITEM_sub items[];
+#else
+ uint16 itemId;
+ uint16 amount;
+#if PACKETVER >= 20070711
+ uint32 kafraPoints;
+#endif
+#endif
+} __attribute__((packed));
+
+struct PACKET_CZ_SEARCH_STORE_INFO_item {
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_CZ_SEARCH_STORE_INFO {
+ int16 packetType;
+ int16 packetLength;
+ uint8 searchType;
+ uint32 maxPrice;
+ uint32 minPrice;
+ uint8 itemsCount;
+ uint8 cardsCount;
+ struct PACKET_CZ_SEARCH_STORE_INFO_item items[]; // items[itemCount]
+/*
+ struct PACKET_CZ_SEARCH_STORE_INFO_item cards[cardCount];
+*/
+} __attribute__((packed));
+
+struct PACKET_ZC_SEARCH_STORE_INFO_ACK_sub {
+ uint32 storeId;
+ uint32 AID;
+ char shopName[MESSAGE_SIZE];
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ uint8 itemType;
+ uint32 price;
+ uint16 amount;
+ uint8 refine;
+ struct EQUIPSLOTINFO slot;
+#if PACKETVER >= 20150226
+ struct ItemOptions option_data[MAX_ITEM_OPTIONS];
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_SEARCH_STORE_INFO_ACK {
+ int16 packetType;
+ int16 packetLength;
+ uint8 firstPage;
+ uint8 nextPage;
+ uint8 usesCount;
+ struct PACKET_ZC_SEARCH_STORE_INFO_ACK_sub items[];
+} __attribute__((packed));
+
+/* Achievement System */
+struct ach_list_info {
+ uint32 ach_id;
+ uint8 completed;
+ uint32 objective[MAX_ACHIEVEMENT_OBJECTIVES];
+ uint32 completed_at;
+ uint8 reward;
+} __attribute__((packed));
+
+struct packet_achievement_list {
+ uint16 packet_id;
+ uint16 packet_len;
+ uint32 total_achievements;
+ uint32 total_points;
+ uint16 rank;
+ uint32 current_rank_points;
+ uint32 next_rank_points;
+ struct ach_list_info ach[MAX_ACHIEVEMENT_DB];
+} __attribute__((packed));
+
+struct packet_achievement_update {
+ uint16 packet_id;
+ uint32 total_points;
+ uint16 rank;
+ uint32 current_rank_points;
+ uint32 next_rank_points;
+ struct ach_list_info ach;
+} __attribute__((packed));
+
+struct packet_achievement_reward_ack {
+ uint16 packet_id;
+ uint8 failed;
+ uint32 ach_id;
+} __attribute__((packed));
+
+// Name Packet ZC_ACK_REQNAME
+struct packet_reqname_ack {
+ uint16 packet_id;
+ int32 gid;
+ char name[NAME_LENGTH];
+} __attribute__((packed));
+
+// ZC_ACK_REQNAMEALL / ZC_ACK_REQNAMEALL2
+struct packet_reqnameall_ack {
+ uint16 packet_id;
+ int32 gid;
+ char name[NAME_LENGTH];
+ char party_name[NAME_LENGTH];
+ char guild_name[NAME_LENGTH];
+ char position_name[NAME_LENGTH];
+#if PACKETVER >= 20150503 // Confirm this?
+ int32 title_id; // Achievement Title
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_OVERWEIGHT_PERCENT {
+ int16 packetType;
+ uint32 percent;
+} __attribute__((packed));
+
+struct PACKET_ZC_WARPLIST_sub {
+ char map[MAP_NAME_LENGTH_EXT];
+} __attribute__((packed));
+
+struct PACKET_ZC_WARPLIST {
+ int16 packetType;
+#if PACKETVER_MAIN_NUM >= 20170502 || PACKETVER_RE_NUM >= 20170419 || defined(PACKETVER_ZERO)
+ int16 packetLength;
+ uint16 skillId;
+ struct PACKET_ZC_WARPLIST_sub maps[];
+#else
+ uint16 skillId;
+ struct PACKET_ZC_WARPLIST_sub maps[4];
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_GROUP_ISALIVE {
+ int16 packetType;
+ uint32 AID;
+ uint8 isDead;
+} __attribute__((packed));
+
+struct PACKET_ZC_GUILD_POSITION {
+ int16 packetType;
+ int16 packetLength;
+ uint32 AID;
+ char position[];
+} __attribute__((packed));
+
+struct PACKET_ZC_INVENTORY_MOVE_FAILED {
+ int16 packetType;
+ int16 index;
+ int16 unknown;
+} __attribute__((packed));
+
+#if PACKETVER_MAIN_NUM >= 20161019 || PACKETVER_RE_NUM >= 20160921 || defined(PACKETVER_ZERO)
+#define PACKET_ZC_ACK_BAN_GUILD PACKET_ZC_ACK_BAN_GUILD3
+#elif PACKETVER >= 20100803
+#define PACKET_ZC_ACK_BAN_GUILD PACKET_ZC_ACK_BAN_GUILD2
+#else
+#define PACKET_ZC_ACK_BAN_GUILD PACKET_ZC_ACK_BAN_GUILD1
+#endif
+
+struct PACKET_ZC_ACK_BAN_GUILD1 {
+ int16 packetType;
+ char name[NAME_LENGTH];
+ char reason[40];
+ char account_name[NAME_LENGTH];
+} __attribute__((packed));
+
+struct PACKET_ZC_ACK_BAN_GUILD2 {
+ int16 packetType;
+ char name[NAME_LENGTH];
+ char reason[40];
+} __attribute__((packed));
+
+struct PACKET_ZC_ACK_BAN_GUILD3 {
+ int16 packetType;
+ char reason[40];
+ uint32 GID;
+} __attribute__((packed));
+
+#if PACKETVER_MAIN_NUM >= 20161019 || PACKETVER_RE_NUM >= 20160921 || defined(PACKETVER_ZERO)
+#define PACKET_ZC_ACK_LEAVE_GUILD PACKET_ZC_ACK_LEAVE_GUILD2
+#else
+#define PACKET_ZC_ACK_LEAVE_GUILD PACKET_ZC_ACK_LEAVE_GUILD1
+#endif
+
+struct PACKET_ZC_ACK_LEAVE_GUILD1 {
+ int16 packetType;
+ char name[NAME_LENGTH];
+ char reason[40];
+} __attribute__((packed));
+
+struct PACKET_ZC_ACK_LEAVE_GUILD2 {
+ int16 packetType;
+ uint32 GID;
+ char reason[40];
+} __attribute__((packed));
+
+struct PACKET_CZ_MEMORIALDUNGEON_COMMAND {
+ int16 packetType;
+ int32 command;
+} __attribute__((packed));
+
+struct PACKET_ZC_REMOVE_EFFECT {
+ int16 packetType;
+ uint32 aid;
+ uint32 effectId;
+} __attribute__((packed));
+
+#if PACKETVER >= 20160525
+struct PACKET_ZC_CAMERA_INFO {
+ int16 packetType;
+ int8 action;
+ float range;
+ float rotation;
+ float latitude;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(ZC_CAMERA_INFO, 0x0a78);
+#endif
+
+#if PACKETVER >= 20160525
+struct PACKET_CZ_CAMERA_INFO {
+ int16 packetType;
+ int8 action;
+ float range;
+ float rotation;
+ float latitude;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(CZ_CAMERA_INFO, 0x0a77);
+#endif
+
+#if PACKETVER_MAIN_NUM >= 20181128 || PACKETVER_RE_NUM >= 20181031
+// PACKET_ZC_AUTOSPELLLIST2
+struct PACKET_ZC_AUTOSPELLLIST {
+ int16 packetType;
+ int16 packetLength;
+ int skills[];
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(ZC_AUTOSPELLLIST, 0x0afb);
+#elif PACKETVER_MAIN_NUM >= 20090406 || defined(PACKETVER_RE) || defined(PACKETVER_ZERO) || PACKETVER_SAK_NUM >= 20080618
+// PACKET_ZC_AUTOSPELLLIST1
+struct PACKET_ZC_AUTOSPELLLIST {
+ int16 packetType;
+ int skills[7];
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(ZC_AUTOSPELLLIST, 0x01cd);
+#endif
+
+#if PACKETVER_MAIN_NUM >= 20170726 || PACKETVER_RE_NUM >= 20170621 || defined(PACKETVER_ZERO)
+#if PACKETVER_MAIN_NUM >= 20181017 || PACKETVER_RE_NUM >= 20181017 || PACKETVER_ZERO_NUM >= 20181024
+struct PACKET_ZC_ITEM_PREVIEW {
+ int16 packetType;
+ int16 index;
+ int8 isDamaged;
+ int16 refiningLevel;
+ struct EQUIPSLOTINFO slot;
+ struct ItemOptions option_data[MAX_ITEM_OPTIONS];
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(ZC_ITEM_PREVIEW, 0x0b13);
+#else // PACKETVER_MAIN_NUM >= 20181017 || PACKETVER_RE_NUM >= 20181017 || PACKETVER_ZERO_NUM >= 20181024
+
+struct PACKET_ZC_ITEM_PREVIEW {
+ int16 packetType;
+ int16 index;
+ int16 refiningLevel;
+ struct EQUIPSLOTINFO slot;
+ struct ItemOptions option_data[MAX_ITEM_OPTIONS];
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(ZC_ITEM_PREVIEW, 0x0ab9);
+#endif // PACKETVER_MAIN_NUM >= 20181017 || PACKETVER_RE_NUM >= 20181017 || PACKETVER_ZERO_NUM >= 20181024
+#endif // PACKETVER_MAIN_NUM >= 20170726 || PACKETVER_RE_NUM >= 20170621 || defined(PACKETVER_ZERO)
+
+#if PACKETVER_MAIN_NUM >= 20160831 || PACKETVER_RE_NUM >= 20151118 || defined(PACKETVER_ZERO)
+struct PACKET_ZC_ENCHANT_EQUIPMENT {
+ int16 packetType;
+ int16 wearState;
+ int16 cardSlot;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ int32 itemId;
+#else
+ int16 itemId;
+#endif
+ int8 equipFlag;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(ZC_ENCHANT_EQUIPMENT, 0x0a3f);
+#endif // PACKETVER_MAIN_NUM >= 20160831 || PACKETVER_RE_NUM >= 20151118 || defined(PACKETVER_ZERO)
+
+#if PACKETVER_MAIN_NUM >= 20170830 || PACKETVER_RE_NUM >= 20170830 || defined(PACKETVER_ZERO)
+struct PACKET_ZC_SERVICE_MESSAGE_COLOR {
+ int16 packetType;
+ int16 packetLength;
+ int32 color;
+ char message[];
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(ZC_SERVICE_MESSAGE_COLOR, 0x0adb);
+#endif
+
+#if PACKETVER_MAIN_NUM >= 20181002 || PACKETVER_RE_NUM >= 20181002 || PACKETVER_ZERO_NUM >= 20181010
+struct PACKET_CZ_START_USE_SKILL {
+ int16 packetType;
+ int16 skillId;
+ int16 skillLv;
+ uint32 targetId;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(CZ_START_USE_SKILL, 0x0b10);
+
+struct PACKET_CZ_STOP_USE_SKILL {
+ int16 packetType;
+ int16 skillId;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(CZ_STOP_USE_SKILL, 0x0b11);
+#endif
+
+#if PACKETVER_MAIN_NUM >= 20181219 || PACKETVER_RE_NUM >= 20181219 || PACKETVER_ZERO_NUM >= 20181212
+struct PACKET_ZC_INVENTORY_EXPANSION_INFO {
+ int16 packetType;
+ int16 expansionSize;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(ZC_INVENTORY_EXPANSION_INFO, 0x0b18);
+#endif
+
+#if PACKETVER_MAIN_NUM >= 20181219 || PACKETVER_RE_NUM >= 20181219 || PACKETVER_ZERO_NUM >= 20181212
+struct PACKET_ZC_ACK_INVENTORY_EXPAND {
+ int16 packetType;
+ uint8 result;
+ uint32 itemId;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(ZC_ACK_INVENTORY_EXPAND, 0x0b15);
+#endif
+
+#if PACKETVER_MAIN_NUM >= 20181219 || PACKETVER_RE_NUM >= 20181219 || PACKETVER_ZERO_NUM >= 20181212
+struct PACKET_ZC_ACK_INVENTORY_EXPAND_RESULT {
+ int16 packetType;
+ uint8 result;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(ZC_ACK_INVENTORY_EXPAND_RESULT, 0x0b17);
+#endif
+
+#if PACKETVER_MAIN_NUM >= 20181031 || PACKETVER_RE_NUM >= 20181031 || PACKETVER_ZERO_NUM >= 20181114
+struct PACKET_CZ_INVENTORY_EXPAND {
+ int16 packetType;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(CZ_INVENTORY_EXPAND, 0x0b14);
+#endif
+
+#if PACKETVER_MAIN_NUM >= 20181031 || PACKETVER_RE_NUM >= 20181031 || PACKETVER_ZERO_NUM >= 20181114
+struct PACKET_CZ_INVENTORY_EXPAND_CONFIRMED {
+ int16 packetType;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(CZ_INVENTORY_EXPAND_CONFIRMED, 0x0b16);
+#endif
+
+#if PACKETVER_MAIN_NUM >= 20181031 || PACKETVER_RE_NUM >= 20181031 || PACKETVER_ZERO_NUM >= 20181114
+struct PACKET_CZ_INVENTORY_EXPAND_REJECTED {
+ int16 packetType;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(CZ_INVENTORY_EXPAND_REJECTED, 0x0b19);
+#endif
+
+struct PACKET_CZ_REQ_REMAINTIME {
+ int16 packetType;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(CZ_REQ_REMAINTIME, 0x01c0);
+
+struct PACKET_CZ_PARTY_CONFIG {
+ int16 packetType;
+ uint8 refuseInvite;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(CZ_PARTY_CONFIG, 0x02c8);
+
+#if PACKETVER_ZERO_NUM >= 20181226
+struct PACKET_ZC_NPC_BARTER_OPEN_sub {
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 nameid;
+#else
+ uint16 nameid;
+#endif
+ uint8 type;
+ uint32 amount;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 currencyNameid;
+#else
+ uint16 currencyNameid;
+#endif
+ uint32 currencyAmount;
+ uint32 weight;
+ uint32 index;
+} __attribute__((packed));
+
+struct PACKET_ZC_NPC_BARTER_OPEN {
+ int16 packetType;
+ int16 packetLength;
+ struct PACKET_ZC_NPC_BARTER_OPEN_sub list[];
+} __attribute__((packed));
+
+DEFINE_PACKET_HEADER(ZC_NPC_BARTER_OPEN, 0x0b0e);
+#endif
+
+#if PACKETVER_ZERO_NUM >= 20181226
+struct PACKET_CZ_NPC_BARTER_CLOSE {
+ int16 packetType;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(CZ_NPC_BARTER_CLOSE, 0x0b12);
+#endif
+
+#if PACKETVER_ZERO_NUM >= 20181226
+struct PACKET_CZ_NPC_BARTER_PURCHASE_sub {
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ uint32 amount;
+ uint16 invIndex;
+ uint32 shopIndex;
+} __attribute__((packed));
+
+struct PACKET_CZ_NPC_BARTER_PURCHASE {
+ int16 packetType;
+ int16 packetLength;
+ struct PACKET_CZ_NPC_BARTER_PURCHASE_sub list[];
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(CZ_NPC_BARTER_PURCHASE, 0x0b0f);
+#endif
+
#if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
#pragma pack(pop)
#endif // not NetBSD < 6 / Solaris
diff --git a/src/map/party.c b/src/map/party.c
index 26b4bae8b..e4fb18c23 100644
--- a/src/map/party.c
+++ b/src/map/party.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -31,10 +31,12 @@
#include "map/itemdb.h"
#include "map/log.h"
#include "map/map.h"
+#include "map/messages.h"
#include "map/mob.h" // struct mob_data
#include "map/pc.h"
#include "map/skill.h"
#include "map/status.h"
+#include "map/achievement.h"
#include "common/HPM.h"
#include "common/cbasetypes.h"
#include "common/memmgr.h"
@@ -50,14 +52,15 @@
#include <stdlib.h>
#include <string.h>
-struct party_interface party_s;
+static struct party_interface party_s;
struct party_interface *party;
/*==========================================
* Fills the given party_member structure according to the sd provided.
* Used when creating/adding people to a party. [Skotlex]
*------------------------------------------*/
-void party_fill_member(struct party_member* member, struct map_session_data* sd, unsigned int leader) {
+static void party_fill_member(struct party_member *member, struct map_session_data *sd, unsigned int leader)
+{
nullpo_retv(member);
nullpo_retv(sd);
@@ -79,7 +82,7 @@ void party_fill_member(struct party_member* member, struct map_session_data* sd,
* @return the member_id.
* @retval INDEX_NOT_FOUND if not in party.
*/
-int party_getmemberid(struct party_data *p, struct map_session_data *sd)
+static int party_getmemberid(struct party_data *p, struct map_session_data *sd)
{
int member_id;
nullpo_retr(INDEX_NOT_FOUND, p);
@@ -97,7 +100,7 @@ int party_getmemberid(struct party_data *p, struct map_session_data *sd)
/*==========================================
* Request an available sd of this party
*------------------------------------------*/
-struct map_session_data* party_getavailablesd(struct party_data *p)
+static struct map_session_data *party_getavailablesd(struct party_data *p)
{
int i;
nullpo_retr(NULL, p);
@@ -108,7 +111,7 @@ struct map_session_data* party_getavailablesd(struct party_data *p)
/*==========================================
* Retrieves and validates the sd pointer for this party member [Skotlex]
*------------------------------------------*/
-struct map_session_data *party_sd_check(int party_id, int account_id, int char_id)
+static struct map_session_data *party_sd_check(int party_id, int account_id, int char_id)
{
struct map_session_data *sd = map->id2sd(account_id);
@@ -125,7 +128,7 @@ struct map_session_data *party_sd_check(int party_id, int account_id, int char_i
return sd;
}
-int party_db_final(union DBKey key, struct DBData *data, va_list ap)
+static int party_db_final(union DBKey key, struct DBData *data, va_list ap)
{
struct party_data *p;
@@ -138,7 +141,7 @@ int party_db_final(union DBKey key, struct DBData *data, va_list ap)
return 0;
}
/// Party data lookup using party id.
-struct party_data* party_search(int party_id)
+static struct party_data *party_search(int party_id)
{
if(!party_id)
return NULL;
@@ -146,7 +149,7 @@ struct party_data* party_search(int party_id)
}
/// Party data lookup using party name.
-struct party_data* party_searchname(const char* str)
+static struct party_data *party_searchname(const char *str)
{
struct party_data* p;
@@ -160,7 +163,7 @@ struct party_data* party_searchname(const char* str)
return p;
}
-int party_create(struct map_session_data *sd, const char *name,int item,int item2)
+static int party_create(struct map_session_data *sd, const char *name, int item, int item2)
{
struct party_member leader;
char tname[NAME_LENGTH];
@@ -187,10 +190,13 @@ int party_create(struct map_session_data *sd, const char *name,int item,int item
party->fill_member(&leader, sd, 1);
intif->create_party(&leader,name,item,item2);
+
+ achievement->validate_party_create(sd); //Achievements (Smokexyz)
+
return 0;
}
-void party_created(int account_id, int char_id, int fail, int party_id, const char *name)
+static void party_created(int account_id, int char_id, int fail, int party_id, const char *name)
{
struct map_session_data *sd;
sd=map->id2sd(account_id);
@@ -214,13 +220,14 @@ void party_created(int account_id, int char_id, int fail, int party_id, const ch
}
-int party_request_info(int party_id, int char_id)
+static int party_request_info(int party_id, int char_id)
{
return intif->request_partyinfo(party_id, char_id);
}
/// Invoked (from char-server) when the party info is not found.
-int party_recv_noinfo(int party_id, int char_id) {
+static int party_recv_noinfo(int party_id, int char_id)
+{
party->broken(party_id);
if( char_id != 0 ) {
// requester
@@ -232,7 +239,8 @@ int party_recv_noinfo(int party_id, int char_id) {
return 0;
}
-void party_check_state(struct party_data *p) {
+static void party_check_state(struct party_data *p)
+{
int i;
nullpo_retv(p);
memset(&p->state, 0, sizeof(p->state));
@@ -263,7 +271,7 @@ void party_check_state(struct party_data *p) {
}
}
-int party_recv_info(const struct party *sp, int char_id)
+static int party_recv_info(const struct party *sp, int char_id)
{
struct party_data* p;
const struct party_member *member;
@@ -361,7 +369,7 @@ int party_recv_info(const struct party *sp, int char_id)
return 0;
}
-int party_invite(struct map_session_data *sd,struct map_session_data *tsd)
+static int party_invite(struct map_session_data *sd, struct map_session_data *tsd)
{
struct party_data *p;
int i;
@@ -423,7 +431,8 @@ int party_invite(struct map_session_data *sd,struct map_session_data *tsd)
return 1;
}
-void party_reply_invite(struct map_session_data *sd,int party_id,int flag) {
+static void party_reply_invite(struct map_session_data *sd, int party_id, int flag)
+{
struct map_session_data* tsd;
struct party_member member;
@@ -456,7 +465,7 @@ void party_reply_invite(struct map_session_data *sd,int party_id,int flag) {
//- Loads up party data if not in server
//- Sets up the pointer to him
//- Player must be authed/active and belong to a party before calling this method
-void party_member_joined(struct map_session_data *sd)
+static void party_member_joined(struct map_session_data *sd)
{
struct party_data* p;
int i;
@@ -485,7 +494,8 @@ void party_member_joined(struct map_session_data *sd)
/// Invoked (from char-server) when a new member is added to the party.
/// flag: 0-success, 1-failure
-int party_member_added(int party_id,int account_id,int char_id, int flag) {
+static int party_member_added(int party_id, int account_id, int char_id, int flag)
+{
struct map_session_data *sd = map->id2sd(account_id),*sd2;
struct party_data *p = party->search(party_id);
int i, j;
@@ -545,7 +555,7 @@ int party_member_added(int party_id,int account_id,int char_id, int flag) {
}
/// Party member 'sd' requesting kick of member with <account_id, name>.
-int party_removemember(struct map_session_data* sd, int account_id, const char *name)
+static int party_removemember(struct map_session_data *sd, int account_id, const char *name)
{
struct party_data *p;
int i;
@@ -571,7 +581,7 @@ int party_removemember(struct map_session_data* sd, int account_id, const char *
}
/// Party member 'sd' requesting exit from party.
-int party_leave(struct map_session_data *sd)
+static int party_leave(struct map_session_data *sd)
{
struct party_data *p;
int i;
@@ -590,7 +600,7 @@ int party_leave(struct map_session_data *sd)
}
/// Invoked (from char-server) when a party member leaves the party.
-int party_member_withdraw(int party_id, int account_id, int char_id)
+static int party_member_withdraw(int party_id, int account_id, int char_id)
{
struct map_session_data* sd = map->id2sd(account_id);
struct party_data* p = party->search(party_id);
@@ -659,7 +669,7 @@ int party_member_withdraw(int party_id, int account_id, int char_id)
}
/// Invoked (from char-server) when a party is disbanded.
-int party_broken(int party_id)
+static int party_broken(int party_id)
{
struct party_data* p;
int i, j;
@@ -691,7 +701,7 @@ int party_broken(int party_id)
return 0;
}
-int party_changeoption(struct map_session_data *sd,int exp,int item)
+static int party_changeoption(struct map_session_data *sd, int exp, int item)
{
nullpo_ret(sd);
@@ -701,7 +711,8 @@ int party_changeoption(struct map_session_data *sd,int exp,int item)
return 0;
}
-int party_optionchanged(int party_id,int account_id,int exp,int item,int flag) {
+static int party_optionchanged(int party_id, int account_id, int exp, int item, int flag)
+{
struct party_data *p;
struct map_session_data *sd=map->id2sd(account_id);
if( (p=party->search(party_id))==NULL)
@@ -718,7 +729,7 @@ int party_optionchanged(int party_id,int account_id,int exp,int item,int flag) {
return 0;
}
-bool party_changeleader(struct map_session_data *sd, struct map_session_data *tsd)
+static bool party_changeleader(struct map_session_data *sd, struct map_session_data *tsd)
{
struct party_data *p;
int mi, tmi;
@@ -731,6 +742,13 @@ bool party_changeleader(struct map_session_data *sd, struct map_session_data *ts
return false;
}
+ if (battle_config.party_change_leader_same_map && sd->bl.m != tsd->bl.m) {
+#if PACKETVER >= 20120307
+ clif->msgtable(sd, MSG_PARTY_MASTER_CHANGE_SAME_MAP); // It is only possible to change the party leader while on the same map.
+#endif
+ return false;
+ }
+
if( map->list[sd->bl.m].flag.partylock ) {
clif->message(sd->fd, msg_sd(sd,287)); // You cannot change party leaders in this map.
return false;
@@ -769,7 +787,7 @@ bool party_changeleader(struct map_session_data *sd, struct map_session_data *ts
/// - changes maps
/// - logs in or out
/// - gains a level (disabled)
-int party_recv_movemap(int party_id,int account_id,int char_id, unsigned short mapid,int online,int lv)
+static int party_recv_movemap(int party_id, int account_id, int char_id, unsigned short mapid, int online, int lv)
{
struct party_member* m;
struct party_data* p;
@@ -797,7 +815,7 @@ int party_recv_movemap(int party_id,int account_id,int char_id, unsigned short m
return 0;
}
-void party_send_movemap(struct map_session_data *sd)
+static void party_send_movemap(struct map_session_data *sd)
{
struct party_data *p;
@@ -832,12 +850,12 @@ void party_send_movemap(struct map_session_data *sd)
return;
}
-void party_send_levelup(struct map_session_data *sd)
+static void party_send_levelup(struct map_session_data *sd)
{
intif->party_changemap(sd,1);
}
-int party_send_logout(struct map_session_data *sd)
+static int party_send_logout(struct map_session_data *sd)
{
struct party_data *p;
int i;
@@ -860,7 +878,7 @@ int party_send_logout(struct map_session_data *sd)
return 1;
}
-int party_send_message(struct map_session_data *sd, const char *mes)
+static int party_send_message(struct map_session_data *sd, const char *mes)
{
int len;
@@ -880,7 +898,7 @@ int party_send_message(struct map_session_data *sd, const char *mes)
return 0;
}
-int party_recv_message(int party_id,int account_id,const char *mes,int len)
+static int party_recv_message(int party_id, int account_id, const char *mes, int len)
{
struct party_data *p;
if( (p=party->search(party_id))==NULL)
@@ -889,7 +907,7 @@ int party_recv_message(int party_id,int account_id,const char *mes,int len)
return 0;
}
-int party_skill_check(struct map_session_data *sd, int party_id, uint16 skill_id, uint16 skill_lv)
+static int party_skill_check(struct map_session_data *sd, int party_id, uint16 skill_id, uint16 skill_lv)
{
struct party_data *p;
struct map_session_data *p_sd;
@@ -941,7 +959,7 @@ int party_skill_check(struct map_session_data *sd, int party_id, uint16 skill_id
return 0;
}
-int party_send_xy_timer(int tid, int64 tick, int id, intptr_t data)
+static int party_send_xy_timer(int tid, int64 tick, int id, intptr_t data)
{
struct DBIterator *iter = db_iterator(party->db);
struct party_data* p;
@@ -980,7 +998,7 @@ int party_send_xy_timer(int tid, int64 tick, int id, intptr_t data)
return 0;
}
-int party_send_xy_clear(struct party_data *p)
+static int party_send_xy_clear(struct party_data *p)
{
int i;
@@ -996,7 +1014,7 @@ int party_send_xy_clear(struct party_data *p)
}
// exp share and added zeny share [Valaris]
-int party_exp_share(struct party_data* p, struct block_list* src, unsigned int base_exp, unsigned int job_exp, int zeny)
+static int party_exp_share(struct party_data *p, struct block_list *src, unsigned int base_exp, unsigned int job_exp, int zeny)
{
struct map_session_data* sd[MAX_PARTY];
unsigned int i, c;
@@ -1037,7 +1055,7 @@ int party_exp_share(struct party_data* p, struct block_list* src, unsigned int b
}
//Does party loot. first_charid holds the charid of the player who has time priority to take the item.
-int party_share_loot(struct party_data* p, struct map_session_data* sd, struct item* item_data, int first_charid)
+static int party_share_loot(struct party_data *p, struct map_session_data *sd, struct item *item_data, int first_charid)
{
struct map_session_data *target = NULL;
int i;
@@ -1106,7 +1124,7 @@ int party_share_loot(struct party_data* p, struct map_session_data* sd, struct i
return 0;
}
-int party_send_dot_remove(struct map_session_data *sd)
+static int party_send_dot_remove(struct map_session_data *sd)
{
nullpo_ret(sd);
if (sd->status.party_id)
@@ -1117,7 +1135,7 @@ int party_send_dot_remove(struct map_session_data *sd)
// To use for Taekwon's "Fighting Chant"
// int c = 0;
// party_foreachsamemap(party->sub_count, sd, 0, &c);
-int party_sub_count(struct block_list *bl, va_list ap)
+static int party_sub_count(struct block_list *bl, va_list ap)
{
const struct map_session_data *sd = NULL;
@@ -1139,7 +1157,8 @@ int party_sub_count(struct block_list *bl, va_list ap)
* Arglist-based version of party_foreachsamemap
* @see party_foreachsamemap
*/
-int party_vforeachsamemap(int (*func)(struct block_list*,va_list), struct map_session_data *sd, int range, va_list ap) {
+static int party_vforeachsamemap(int (*func)(struct block_list*, va_list), struct map_session_data *sd, int range, va_list ap)
+{
struct party_data *p;
int i;
int x0,y0,x1,y1;
@@ -1185,7 +1204,7 @@ int party_vforeachsamemap(int (*func)(struct block_list*,va_list), struct map_se
}
// Special check for Minstrel's and Wanderer's chorus skills.
-int party_sub_count_chorus(struct block_list *bl, va_list ap)
+static int party_sub_count_chorus(struct block_list *bl, va_list ap)
{
const struct map_session_data *sd = NULL;
@@ -1213,7 +1232,8 @@ int party_sub_count_chorus(struct block_list *bl, va_list ap)
* @param ... Additional parameters to pass to func()
* @return Sum of the return values from func()
*/
-int party_foreachsamemap(int (*func)(struct block_list*,va_list), struct map_session_data *sd, int range, ...) {
+static int party_foreachsamemap(int (*func)(struct block_list*, va_list), struct map_session_data *sd, int range, ...)
+{
va_list ap;
int ret;
va_start(ap, range);
@@ -1226,14 +1246,16 @@ int party_foreachsamemap(int (*func)(struct block_list*,va_list), struct map_ses
* Party Booking in KRO [Spiria]
*------------------------------------------*/
-struct party_booking_ad_info* create_party_booking_data(void) {
+static struct party_booking_ad_info *create_party_booking_data(void)
+{
struct party_booking_ad_info *pb_ad;
CREATE(pb_ad, struct party_booking_ad_info, 1);
pb_ad->index = party->booking_nextid++;
return pb_ad;
}
-void party_recruit_register(struct map_session_data *sd, short level, const char *notice) {
+static void party_recruit_register(struct map_session_data *sd, short level, const char *notice)
+{
#ifdef PARTY_RECRUIT
struct party_booking_ad_info *pb_ad;
@@ -1265,7 +1287,8 @@ void party_recruit_register(struct map_session_data *sd, short level, const char
#endif
}
-void party_booking_register(struct map_session_data *sd, short level, short mapid, short* job) {
+static void party_booking_register(struct map_session_data *sd, short level, short mapid, short *job)
+{
#ifndef PARTY_RECRUIT
struct party_booking_ad_info *pb_ad;
int i;
@@ -1302,7 +1325,8 @@ void party_booking_register(struct map_session_data *sd, short level, short mapi
#endif
}
-void party_recruit_update(struct map_session_data *sd, const char *notice) {
+static void party_recruit_update(struct map_session_data *sd, const char *notice)
+{
#ifdef PARTY_RECRUIT
struct party_booking_ad_info *pb_ad;
@@ -1323,7 +1347,8 @@ void party_recruit_update(struct map_session_data *sd, const char *notice) {
return;
#endif
}
-void party_booking_update(struct map_session_data *sd, short* job) {
+static void party_booking_update(struct map_session_data *sd, short *job)
+{
#ifndef PARTY_RECRUIT
int i;
struct party_booking_ad_info *pb_ad;
@@ -1349,7 +1374,8 @@ void party_booking_update(struct map_session_data *sd, short* job) {
#endif
}
-void party_recruit_search(struct map_session_data *sd, short level, short mapid, unsigned long lastindex, short resultcount) {
+static void party_recruit_search(struct map_session_data *sd, short level, short mapid, unsigned long lastindex, short resultcount)
+{
#ifdef PARTY_RECRUIT
struct party_booking_ad_info *pb_ad;
int count = 0;
@@ -1380,7 +1406,8 @@ void party_recruit_search(struct map_session_data *sd, short level, short mapid,
return;
#endif
}
-void party_booking_search(struct map_session_data *sd, short level, short mapid, short job, unsigned long lastindex, short resultcount) {
+static void party_booking_search(struct map_session_data *sd, short level, short mapid, short job, unsigned long lastindex, short resultcount)
+{
#ifndef PARTY_RECRUIT
struct party_booking_ad_info *pb_ad;
int i;
@@ -1422,7 +1449,7 @@ void party_booking_search(struct map_session_data *sd, short level, short mapid,
#endif
}
-bool party_booking_delete(struct map_session_data *sd)
+static bool party_booking_delete(struct map_session_data *sd)
{
struct party_booking_ad_info* pb_ad;
@@ -1439,12 +1466,14 @@ bool party_booking_delete(struct map_session_data *sd)
}
return true;
}
-void do_final_party(void) {
+static void do_final_party(void)
+{
party->db->destroy(party->db,party->db_final);
db_destroy(party->booking_db); // Party Booking [Spiria]
}
// Constructor, init vars
-void do_init_party(bool minimal) {
+static void do_init_party(bool minimal)
+{
if (minimal)
return;
@@ -1453,12 +1482,14 @@ void do_init_party(bool minimal) {
timer->add_func_list(party->send_xy_timer, "party_send_xy_timer");
timer->add_interval(timer->gettick()+battle_config.party_update_interval, party->send_xy_timer, 0, 0, battle_config.party_update_interval);
}
+
/*=====================================
-* Default Functions : party.h
-* Generated by HerculesInterfaceMaker
-* created by Susu
-*-------------------------------------*/
-void party_defaults(void) {
+ * Default Functions : party.h
+ * Generated by HerculesInterfaceMaker
+ * created by Susu
+ *-------------------------------------*/
+void party_defaults(void)
+{
party = &party_s;
/* */
diff --git a/src/map/party.h b/src/map/party.h
index aa0977499..28e16dff7 100644
--- a/src/map/party.h
+++ b/src/map/party.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/map/path.c b/src/map/path.c
index 509a82c7e..16d9b0563 100644
--- a/src/map/path.c
+++ b/src/map/path.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -44,7 +44,7 @@
#define DIR_SOUTH 4
#define DIR_EAST 8
-struct path_interface path_s;
+static struct path_interface path_s;
struct path_interface *path;
/// @name Structures and defines for A* pathfinding
@@ -85,7 +85,7 @@ static const unsigned char walk_choices [3][3] =
* Find the closest reachable cell, 'count' cells away from (x0,y0) in direction (dx,dy).
* Income after the coordinates of the blow
*------------------------------------------*/
-int path_blownpos(struct block_list *bl, int16 m,int16 x0,int16 y0,int16 dx,int16 dy,int count)
+static int path_blownpos(struct block_list *bl, int16 m, int16 x0, int16 y0, int16 dx, int16 dy, int count)
{
struct map_data *md;
@@ -119,7 +119,7 @@ int path_blownpos(struct block_list *bl, int16 m,int16 x0,int16 y0,int16 dx,int1
/*==========================================
* is ranged attack from (x0,y0) to (x1,y1) possible?
*------------------------------------------*/
-bool path_search_long(struct shootpath_data *spd,struct block_list *bl,int16 m,int16 x0,int16 y0,int16 x1,int16 y1,cell_chk cell)
+static bool path_search_long(struct shootpath_data *spd, struct block_list *bl, int16 m, int16 x0, int16 y0, int16 x1, int16 y1, cell_chk cell)
{
int dx, dy;
int wx = 0, wy = 0;
@@ -253,7 +253,7 @@ static int add_path(struct node_heap *heap, struct path_node *tp, int16 x, int16
* flag: &1 = easy path search only
* cell: type of obstruction to check for
*------------------------------------------*/
-bool path_search(struct walkpath_data *wpd, struct block_list *bl, int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int flag, cell_chk cell)
+static bool path_search(struct walkpath_data *wpd, struct block_list *bl, int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int flag, cell_chk cell)
{
register int i, x, y, dx, dy;
struct map_data *md;
@@ -429,7 +429,7 @@ bool path_search(struct walkpath_data *wpd, struct block_list *bl, int16 m, int1
}
//Distance functions, taken from http://www.flipcode.com/articles/article_fastdistance.shtml
-bool check_distance(int dx, int dy, int distance)
+static bool check_distance(int dx, int dy, int distance)
{
#ifdef CIRCULAR_AREA
//In this case, we just do a square comparison. Add 1 tile grace for diagonal range checks.
@@ -441,7 +441,7 @@ bool check_distance(int dx, int dy, int distance)
#endif
}
-unsigned int distance(int dx, int dy)
+static unsigned int distance(int dx, int dy)
{
#ifdef CIRCULAR_AREA
unsigned int min, max;
@@ -478,7 +478,7 @@ unsigned int distance(int dx, int dy)
* @param distance: Distance to check against
* @return Within distance(1); Not within distance(0);
*/
-bool check_distance_client(int dx, int dy, int distance)
+static bool check_distance_client(int dx, int dy, int distance)
{
if(distance < 0) distance = 0;
@@ -492,7 +492,7 @@ bool check_distance_client(int dx, int dy, int distance)
* @param dy: Vertical distance
* @return Circular distance
*/
-int distance_client(int dx, int dy)
+static int distance_client(int dx, int dy)
{
double temp_dist = sqrt((double)(dx*dx + dy*dy));
@@ -505,7 +505,8 @@ int distance_client(int dx, int dy)
return ((int)temp_dist);
}
-void path_defaults(void) {
+void path_defaults(void)
+{
path = &path_s;
path->blownpos = path_blownpos;
diff --git a/src/map/path.h b/src/map/path.h
index 1e67a8d97..7791a46cf 100644
--- a/src/map/path.h
+++ b/src/map/path.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/map/pc.c b/src/map/pc.c
index 9ef7d084f..5410ae96a 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -29,6 +29,7 @@
#include "map/channel.h"
#include "map/chat.h"
#include "map/chrif.h"
+#include "map/clan.h"
#include "map/clif.h"
#include "map/date.h" // is_day_of_*()
#include "map/duel.h"
@@ -42,6 +43,7 @@
#include "map/mail.h"
#include "map/map.h"
#include "map/mercenary.h"
+#include "map/messages.h"
#include "map/mob.h" // struct mob_data
#include "map/npc.h" // fake_nd
#include "map/party.h" // party-"search()
@@ -53,6 +55,7 @@
#include "map/skill.h"
#include "map/status.h" // struct status_data
#include "map/storage.h"
+#include "map/achievement.h"
#include "common/cbasetypes.h"
#include "common/conf.h"
#include "common/core.h" // get_svn_revision()
@@ -74,13 +77,15 @@
#include <string.h>
#include <time.h>
-struct pc_interface pc_s;
+static struct pc_interface pc_s;
struct pc_interface *pc;
+static struct class_exp_tables exptables;
+
//Converts a class to its array index for CLASS_COUNT defined arrays.
//Note that it does not do a validity check for speed purposes, where parsing
//player input make sure to use a pc->db_checkid first!
-int pc_class2idx(int class)
+static int pc_class2idx(int class)
{
if (class >= JOB_NOVICE_HIGH) {
class += - JOB_NOVICE_HIGH + JOB_MAX_BASIC;
@@ -95,7 +100,7 @@ int pc_class2idx(int class)
* required to provide a session.
* Caller must release dummy on its own when it's no longer needed.
*/
-struct map_session_data* pc_get_dummy_sd(void)
+static struct map_session_data *pc_get_dummy_sd(void)
{
struct map_session_data *dummy_sd;
CREATE(dummy_sd, struct map_session_data, 1);
@@ -109,7 +114,7 @@ struct map_session_data* pc_get_dummy_sd(void)
* @param group_id Group ID
* @return 1 on error, 0 on success
*/
-int pc_set_group(struct map_session_data *sd, int group_id)
+static int pc_set_group(struct map_session_data *sd, int group_id)
{
GroupSettings *group = pcg->id2group(group_id);
nullpo_retr(1, sd);
@@ -123,13 +128,13 @@ int pc_set_group(struct map_session_data *sd, int group_id)
/**
* Checks if commands used by player should be logged.
*/
-bool pc_should_log_commands(struct map_session_data *sd)
+static bool pc_should_log_commands(struct map_session_data *sd)
{
nullpo_retr(true, sd);
return pcg->should_log_commands(sd->group);
}
-int pc_invincible_timer(int tid, int64 tick, int id, intptr_t data)
+static int pc_invincible_timer(int tid, int64 tick, int id, intptr_t data)
{
struct map_session_data *sd = map->id2sd(id);
@@ -146,7 +151,7 @@ int pc_invincible_timer(int tid, int64 tick, int id, intptr_t data)
return 0;
}
-void pc_setinvincibletimer(struct map_session_data* sd, int val)
+static void pc_setinvincibletimer(struct map_session_data *sd, int val)
{
nullpo_retv(sd);
@@ -157,7 +162,7 @@ void pc_setinvincibletimer(struct map_session_data* sd, int val)
sd->invincible_timer = timer->add(timer->gettick()+val,pc->invincible_timer,sd->bl.id,0);
}
-void pc_delinvincibletimer(struct map_session_data* sd)
+static void pc_delinvincibletimer(struct map_session_data *sd)
{
nullpo_retv(sd);
@@ -169,7 +174,8 @@ void pc_delinvincibletimer(struct map_session_data* sd)
}
}
-int pc_spiritball_timer(int tid, int64 tick, int id, intptr_t data) {
+static int pc_spiritball_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data *sd = map->id2sd(id);
int i;
@@ -201,12 +207,13 @@ int pc_spiritball_timer(int tid, int64 tick, int id, intptr_t data) {
}
/**
-* Get the possible number of spiritball that a player can call.
-* @param sd the affected player structure
-* @param min the minimum number of spiritball regardless the level of MO_CALLSPIRITS
-* @retval total number of spiritball
-**/
-int pc_getmaxspiritball(struct map_session_data *sd, int min) {
+ * Get the possible number of spiritball that a player can call.
+ * @param sd the affected player structure
+ * @param min the minimum number of spiritball regardless the level of MO_CALLSPIRITS
+ * @retval total number of spiritball
+ */
+static int pc_getmaxspiritball(struct map_session_data *sd, int min)
+{
int result;
nullpo_ret(sd);
@@ -222,7 +229,7 @@ int pc_getmaxspiritball(struct map_session_data *sd, int min) {
return result;
}
-int pc_addspiritball(struct map_session_data *sd,int interval,int max)
+static int pc_addspiritball(struct map_session_data *sd, int interval, int max)
{
int tid, i;
@@ -248,15 +255,22 @@ int pc_addspiritball(struct map_session_data *sd,int interval,int max)
memmove(sd->spirit_timer+i+1, sd->spirit_timer+i, (sd->spiritball-i)*sizeof(int));
sd->spirit_timer[i] = tid;
sd->spiritball++;
+ pc->addspiritball_sub(sd);
+
+ return 0;
+}
+
+static int pc_addspiritball_sub(struct map_session_data *sd)
+{
+ nullpo_ret(sd);
if ((sd->job & MAPID_THIRDMASK) == MAPID_ROYAL_GUARD)
clif->millenniumshield(&sd->bl,sd->spiritball);
else
clif->spiritball(&sd->bl);
-
return 0;
}
-int pc_delspiritball(struct map_session_data *sd,int count,int type)
+static int pc_delspiritball(struct map_session_data *sd, int count, int type)
{
int i;
@@ -286,15 +300,23 @@ int pc_delspiritball(struct map_session_data *sd,int count,int type)
sd->spirit_timer[i] = INVALID_TIMER;
}
- if(!type) {
- if ((sd->job & MAPID_THIRDMASK) == MAPID_ROYAL_GUARD)
- clif->millenniumshield(&sd->bl,sd->spiritball);
- else
- clif->spiritball(&sd->bl);
+ if (!type) {
+ pc->delspiritball_sub(sd);
}
return 0;
}
-int pc_check_banding(struct block_list *bl, va_list ap)
+
+static int pc_delspiritball_sub(struct map_session_data *sd)
+{
+ nullpo_ret(sd);
+ if ((sd->job & MAPID_THIRDMASK) == MAPID_ROYAL_GUARD)
+ clif->millenniumshield(&sd->bl,sd->spiritball);
+ else
+ clif->spiritball(&sd->bl);
+ return 0;
+}
+
+static int pc_check_banding(struct block_list *bl, va_list ap)
{
int *c, *b_sd;
struct block_list *src;
@@ -322,7 +344,8 @@ int pc_check_banding(struct block_list *bl, va_list ap)
return 0;
}
-int pc_banding(struct map_session_data *sd, uint16 skill_lv) {
+static int pc_banding(struct map_session_data *sd, uint16 skill_lv)
+{
int c;
int b_sd[MAX_PARTY]; // In case of a full Royal Guard party.
int i, j, hp, extra_hp = 0, tmp_qty = 0;
@@ -376,7 +399,7 @@ int pc_banding(struct map_session_data *sd, uint16 skill_lv) {
for( j = 0; j < i; j++ ) {
bsd = map->id2sd(b_sd[j]);
if( bsd != NULL ) {
- status->set_hp(&bsd->bl,hp,0); // Set hp
+ status->set_hp(&bsd->bl, hp, STATUS_HEAL_DEFAULT); // Set hp
if( (sc = status->get_sc(&bsd->bl)) != NULL && sc->data[SC_BANDING] ) {
sc->data[SC_BANDING]->val2 = c; // Set the counter. It doesn't count your self.
status_calc_bl(&bsd->bl, status->sc2scb_flag(SC_BANDING)); // Set atk and def.
@@ -397,7 +420,7 @@ int pc_banding(struct map_session_data *sd, uint16 skill_lv) {
* @param type The fame list type (@see enum fame_list_type).
* @param count The amount of points to add.
*/
-void pc_addfame(struct map_session_data *sd, int ranktype, int count)
+static void pc_addfame(struct map_session_data *sd, int ranktype, int count)
{
nullpo_retv(sd);
@@ -437,7 +460,7 @@ void pc_addfame(struct map_session_data *sd, int ranktype, int count)
* @return The rank position (1-based index)
* @retval 0 if the character isn't in the specified list.
*/
-int pc_fame_rank(int char_id, int ranktype)
+static int pc_fame_rank(int char_id, int ranktype)
{
int i;
@@ -476,7 +499,8 @@ int pc_fame_rank(int char_id, int ranktype)
* @return the appropriate fame list type (@see enum fame_list_type).
* @retval RANKTYPE_UNKNOWN if no appropriate type exists.
*/
-int pc_famelist_type(uint16 job_mapid) {
+static int pc_famelist_type(uint16 job_mapid)
+{
switch (job_mapid & MAPID_UPPERMASK) {
case MAPID_BLACKSMITH:
return RANKTYPE_BLACKSMITH;
@@ -489,7 +513,8 @@ int pc_famelist_type(uint16 job_mapid) {
}
}
-int pc_setrestartvalue(struct map_session_data *sd,int type) {
+static int pc_setrestartvalue(struct map_session_data *sd, int type)
+{
struct status_data *st, *bst;
nullpo_ret(sd);
@@ -498,10 +523,9 @@ int pc_setrestartvalue(struct map_session_data *sd,int type) {
if (type&1) {
//Normal resurrection
- st->hp = 1; //Otherwise status->heal may fail if dead.
- status->heal(&sd->bl, bst->hp, 0, 1);
+ status->heal(&sd->bl, bst->hp, 0, STATUS_HEAL_FORCED | STATUS_HEAL_ALLOWREVIVE);
if( st->sp < bst->sp )
- status->set_sp(&sd->bl, bst->sp, 1);
+ status->set_sp(&sd->bl, bst->sp, STATUS_HEAL_FORCED);
} else { //Just for saving on the char-server (with values as if respawned)
sd->status.hp = bst->hp;
sd->status.sp = (st->sp < bst->sp) ? bst->sp : st->sp;
@@ -512,7 +536,8 @@ int pc_setrestartvalue(struct map_session_data *sd,int type) {
/*==========================================
Rental System
*------------------------------------------*/
-int pc_inventory_rental_end(int tid, int64 tick, int id, intptr_t data) {
+static int pc_inventory_rental_end(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data *sd = map->id2sd(id);
if( sd == NULL )
return 0;
@@ -526,7 +551,7 @@ int pc_inventory_rental_end(int tid, int64 tick, int id, intptr_t data) {
return 1;
}
-int pc_inventory_rental_clear(struct map_session_data *sd)
+static int pc_inventory_rental_clear(struct map_session_data *sd)
{
nullpo_ret(sd);
if( sd->rental_timer != INVALID_TIMER )
@@ -538,11 +563,12 @@ int pc_inventory_rental_clear(struct map_session_data *sd)
return 1;
}
/* assumes i is valid (from default areas where it is called, it is) */
-void pc_rental_expire(struct map_session_data *sd, int i) {
- short nameid;
+static void pc_rental_expire(struct map_session_data *sd, int i)
+{
+ int nameid;
nullpo_retv(sd);
- Assert_retv(i >= 0 && i < MAX_INVENTORY);
+ Assert_retv(i >= 0 && i < sd->status.inventorySize);
nameid = sd->status.inventory[i].nameid;
/* Soon to be dropped, we got plans to integrate it with item db */
@@ -609,13 +635,13 @@ void pc_rental_expire(struct map_session_data *sd, int i) {
clif->rental_expired(sd->fd, i, sd->status.inventory[i].nameid);
pc->delitem(sd, i, sd->status.inventory[i].amount, 0, DELITEM_NORMAL, LOG_TYPE_RENTAL);
}
-void pc_inventory_rentals(struct map_session_data *sd)
+static void pc_inventory_rentals(struct map_session_data *sd)
{
- int i, c = 0;
+ int c = 0;
int64 expire_tick, next_tick = INT64_MAX;
nullpo_retv(sd);
- for( i = 0; i < MAX_INVENTORY; i++ )
+ for (int i = 0; i < sd->status.inventorySize; i++ )
{ // Check for Rentals on Inventory
if( sd->status.inventory[i].nameid == 0 )
continue; // Nothing here
@@ -638,7 +664,7 @@ void pc_inventory_rentals(struct map_session_data *sd)
sd->rental_timer = INVALID_TIMER;
}
-void pc_inventory_rental_add(struct map_session_data *sd, int seconds)
+static void pc_inventory_rental_add(struct map_session_data *sd, int seconds)
{
int tick = seconds * 1000;
@@ -662,7 +688,7 @@ void pc_inventory_rental_add(struct map_session_data *sd, int seconds)
/*==========================================
* prepares character for saving.
*------------------------------------------*/
-int pc_makesavestatus(struct map_session_data *sd)
+static int pc_makesavestatus(struct map_session_data *sd)
{
nullpo_ret(sd);
@@ -728,7 +754,7 @@ int pc_makesavestatus(struct map_session_data *sd)
/*==========================================
* Off init ? Connection?
*------------------------------------------*/
-int pc_setnewpc(struct map_session_data *sd, int account_id, int char_id, int login_id1, unsigned int client_tick, int sex, int fd)
+static int pc_setnewpc(struct map_session_data *sd, int account_id, int char_id, int login_id1, unsigned int client_tick, int sex, int fd)
{
nullpo_ret(sd);
@@ -741,7 +767,8 @@ int pc_setnewpc(struct map_session_data *sd, int account_id, int char_id, int lo
sd->client_tick = client_tick;
sd->state.active = 0; //to be set to 1 after player is fully authed and loaded.
sd->bl.type = BL_PC;
- sd->canlog_tick = timer->gettick();
+ if (battle_config.prevent_logout_trigger & PLT_LOGIN)
+ sd->canlog_tick = timer->gettick();
//Required to prevent homunculus copuing a base speed of 0.
sd->battle_status.speed = sd->base_status.speed = DEFAULT_WALK_SPEED;
sd->state.warp_clean = 1;
@@ -749,12 +776,13 @@ int pc_setnewpc(struct map_session_data *sd, int account_id, int char_id, int lo
return 0;
}
-int pc_equippoint(struct map_session_data *sd,int n)
+// [4144] probably pc_equippoint should be replaced to pc_item_equippoint
+static int pc_equippoint(struct map_session_data *sd, int n)
{
int ep = 0;
nullpo_ret(sd);
- Assert_ret(n >= 0 && n < MAX_INVENTORY);
+ Assert_ret(n >= 0 && n < sd->status.inventorySize);
if(!sd->inventory_data[n])
return 0;
@@ -763,9 +791,9 @@ int pc_equippoint(struct map_session_data *sd,int n)
return 0; //Not equippable by players.
ep = sd->inventory_data[n]->equip;
- if (sd->inventory_data[n]->look == W_DAGGER
- || sd->inventory_data[n]->look == W_1HSWORD
- || sd->inventory_data[n]->look == W_1HAXE
+ if (sd->inventory_data[n]->subtype == W_DAGGER
+ || sd->inventory_data[n]->subtype == W_1HSWORD
+ || sd->inventory_data[n]->subtype == W_1HAXE
) {
if (pc->checkskill(sd,AS_LEFT) > 0
|| (sd->job & MAPID_UPPERMASK) == MAPID_ASSASSIN
@@ -781,64 +809,89 @@ int pc_equippoint(struct map_session_data *sd,int n)
return ep;
}
-int pc_setinventorydata(struct map_session_data *sd)
+static int pc_item_equippoint(struct map_session_data *sd, struct item_data *id)
{
- int i;
+ int ep = 0;
+
+ nullpo_ret(sd);
+ nullpo_ret(id);
+
+ if (!itemdb->isequip2(id))
+ return 0; //Not equippable by players.
+
+ ep = id->equip;
+ if (id->subtype == W_DAGGER ||
+ id->subtype == W_1HSWORD ||
+ id->subtype == W_1HAXE) {
+ if (pc->checkskill(sd, AS_LEFT) > 0 ||
+ (sd->job & MAPID_UPPERMASK) == MAPID_ASSASSIN ||
+ (sd->job & MAPID_UPPERMASK) == MAPID_KAGEROUOBORO) {
+ // Kagerou and Oboro can dual wield daggers. [Rytech]
+ if (ep == EQP_HAND_R)
+ return EQP_ARMS;
+ if (ep == EQP_SHADOW_WEAPON)
+ return EQP_SHADOW_ARMS;
+ }
+ }
+ return ep;
+}
+static int pc_setinventorydata(struct map_session_data *sd)
+{
nullpo_ret(sd);
- for (i = 0; i < MAX_INVENTORY; i++) {
+ for (int i = 0; i < sd->status.inventorySize; i++) {
int id = sd->status.inventory[i].nameid;
sd->inventory_data[i] = id?itemdb->search(id):NULL;
}
return 0;
}
-int pc_calcweapontype(struct map_session_data *sd)
+static int pc_calcweapontype(struct map_session_data *sd)
{
nullpo_ret(sd);
// single-hand
if(sd->weapontype2 == W_FIST) {
- sd->status.weapon = sd->weapontype1;
+ sd->weapontype = sd->weapontype1;
return 1;
}
if(sd->weapontype1 == W_FIST) {
- sd->status.weapon = sd->weapontype2;
+ sd->weapontype = sd->weapontype2;
return 1;
}
// dual-wield
- sd->status.weapon = 0;
+ sd->weapontype = W_FIST;
switch (sd->weapontype1){
case W_DAGGER:
switch (sd->weapontype2) {
- case W_DAGGER: sd->status.weapon = W_DOUBLE_DD; break;
- case W_1HSWORD: sd->status.weapon = W_DOUBLE_DS; break;
- case W_1HAXE: sd->status.weapon = W_DOUBLE_DA; break;
+ case W_DAGGER: sd->weapontype = W_DOUBLE_DD; break;
+ case W_1HSWORD: sd->weapontype = W_DOUBLE_DS; break;
+ case W_1HAXE: sd->weapontype = W_DOUBLE_DA; break;
}
break;
case W_1HSWORD:
switch (sd->weapontype2) {
- case W_DAGGER: sd->status.weapon = W_DOUBLE_DS; break;
- case W_1HSWORD: sd->status.weapon = W_DOUBLE_SS; break;
- case W_1HAXE: sd->status.weapon = W_DOUBLE_SA; break;
+ case W_DAGGER: sd->weapontype = W_DOUBLE_DS; break;
+ case W_1HSWORD: sd->weapontype = W_DOUBLE_SS; break;
+ case W_1HAXE: sd->weapontype = W_DOUBLE_SA; break;
}
break;
case W_1HAXE:
switch (sd->weapontype2) {
- case W_DAGGER: sd->status.weapon = W_DOUBLE_DA; break;
- case W_1HSWORD: sd->status.weapon = W_DOUBLE_SA; break;
- case W_1HAXE: sd->status.weapon = W_DOUBLE_AA; break;
+ case W_DAGGER: sd->weapontype = W_DOUBLE_DA; break;
+ case W_1HSWORD: sd->weapontype = W_DOUBLE_SA; break;
+ case W_1HAXE: sd->weapontype = W_DOUBLE_AA; break;
}
}
// unknown, default to right hand type
- if (!sd->status.weapon)
- sd->status.weapon = sd->weapontype1;
+ if (sd->weapontype == W_FIST)
+ sd->weapontype = sd->weapontype1;
return 2;
}
-int pc_setequipindex(struct map_session_data *sd)
+static int pc_setequipindex(struct map_session_data *sd)
{
int i,j;
@@ -847,7 +900,7 @@ int pc_setequipindex(struct map_session_data *sd)
for(i=0;i<EQI_MAX;i++)
sd->equip_index[i] = -1;
- for(i=0;i<MAX_INVENTORY;i++) {
+ for (i = 0; i < sd->status.inventorySize; i++) {
if(sd->status.inventory[i].nameid <= 0)
continue;
if(sd->status.inventory[i].equip) {
@@ -855,20 +908,30 @@ int pc_setequipindex(struct map_session_data *sd)
if(sd->status.inventory[i].equip & pc->equip_pos[j])
sd->equip_index[j] = i;
- if(sd->status.inventory[i].equip & EQP_HAND_R)
- {
- if(sd->inventory_data[i])
- sd->weapontype1 = sd->inventory_data[i]->look;
- else
- sd->weapontype1 = 0;
+ if (sd->status.inventory[i].equip & EQP_HAND_R) {
+ if (sd->inventory_data[i]) {
+ sd->weapontype1 = sd->inventory_data[i]->subtype;
+ sd->status.look.weapon = sd->inventory_data[i]->view_sprite;
+ } else {
+ sd->weapontype1 = W_FIST;
+ sd->status.look.weapon = 0;
+ }
}
- if( sd->status.inventory[i].equip & EQP_HAND_L )
- {
- if( sd->inventory_data[i] && sd->inventory_data[i]->type == IT_WEAPON )
- sd->weapontype2 = sd->inventory_data[i]->look;
- else
- sd->weapontype2 = 0;
+ if (sd->status.inventory[i].equip & EQP_HAND_L) {
+ if (sd->inventory_data[i] != NULL) {
+ if (sd->inventory_data[i]->type == IT_WEAPON)
+ sd->weapontype2 = sd->inventory_data[i]->subtype;
+ else
+ sd->weapontype2 = W_FIST;
+ if (sd->inventory_data[i]->type == IT_ARMOR)
+ sd->has_shield = true;
+ else
+ sd->has_shield = false;
+ } else {
+ sd->weapontype2 = W_FIST;
+ sd->has_shield = false;
+ }
}
}
}
@@ -877,7 +940,7 @@ int pc_setequipindex(struct map_session_data *sd)
return 0;
}
-bool pc_isequipped(struct map_session_data *sd, int nameid)
+static bool pc_isequipped(struct map_session_data *sd, int nameid)
{
int i, j;
@@ -903,7 +966,7 @@ bool pc_isequipped(struct map_session_data *sd, int nameid)
return false;
}
-bool pc_can_Adopt(struct map_session_data *p1_sd, struct map_session_data *p2_sd, struct map_session_data *b_sd )
+static bool pc_can_Adopt(struct map_session_data *p1_sd, struct map_session_data *p2_sd, struct map_session_data *b_sd)
{
if( !p1_sd || !p2_sd || !b_sd )
return false;
@@ -953,10 +1016,10 @@ bool pc_can_Adopt(struct map_session_data *p1_sd, struct map_session_data *p2_sd
/*==========================================
* Adoption Process
*------------------------------------------*/
-bool pc_adoption(struct map_session_data *p1_sd, struct map_session_data *p2_sd, struct map_session_data *b_sd)
+static bool pc_adoption(struct map_session_data *p1_sd, struct map_session_data *p2_sd, struct map_session_data *b_sd)
{
int class, joblevel;
- unsigned int jobexp;
+ uint64 jobexp;
if( !pc->can_Adopt(p1_sd, p2_sd, b_sd) )
return false;
@@ -988,6 +1051,11 @@ bool pc_adoption(struct map_session_data *p1_sd, struct map_session_data *p2_sd,
pc->skill(p1_sd, WE_CALLBABY, 1, SKILL_GRANT_PERMANENT);
pc->skill(p2_sd, WE_CALLBABY, 1, SKILL_GRANT_PERMANENT);
+ // Achievements [Smokexyz/Hercules]
+ achievement->validate_adopt(p1_sd, true); // Parent 1
+ achievement->validate_adopt(p2_sd, true); // Parent 2
+ achievement->validate_adopt(b_sd, false); // Baby
+
return true;
}
@@ -998,11 +1066,12 @@ bool pc_adoption(struct map_session_data *p1_sd, struct map_session_data *p2_sd,
* Checks if the player can equip the item at index n in inventory.
* Returns 0 (no) or 1 (yes).
*------------------------------------------------*/
-int pc_isequip(struct map_session_data *sd,int n)
+static int pc_isequip(struct map_session_data *sd, int n)
{
struct item_data *item;
nullpo_ret(sd);
+ Assert_ret(n >= 0 && n < sd->status.inventorySize);
item = sd->inventory_data[n];
@@ -1018,11 +1087,15 @@ int pc_isequip(struct map_session_data *sd,int n)
return 1;
if (item->elv && sd->status.base_level < item->elv) {
- clif->msgtable(sd, MSG_ITEM_CANT_EQUIP_LVL);
+#if PACKETVER >= 20100525
+ clif->msgtable(sd, MSG_CANNOT_EQUIP_ITEM_LEVEL);
+#endif
return 0;
}
if (item->elvmax && sd->status.base_level > item->elvmax) {
- clif->msgtable(sd, MSG_ITEM_CANT_EQUIP_LVL);
+#if PACKETVER >= 20100525
+ clif->msgtable(sd, MSG_CANNOT_EQUIP_ITEM_LEVEL);
+#endif
return 0;
}
if(item->sex != 2 && sd->status.sex != item->sex)
@@ -1030,11 +1103,15 @@ int pc_isequip(struct map_session_data *sd,int n)
if ( item->equip & EQP_AMMO ) {
if (sd->state.active && !pc_iscarton(sd) && (sd->job & MAPID_THIRDMASK) == MAPID_GENETIC) { // check if sc data is already loaded.
- clif->msgtable(sd, MSG_ITEM_NEED_CART);
+#if PACKETVER_RE_NUM >= 20090529 || PACKETVER_MAIN_NUM >= 20090603 || defined(PACKETVER_ZERO)
+ clif->msgtable(sd, MSG_USESKILL_FAIL_CART);
+#endif
return 0;
}
if (!pc_ismadogear(sd) && (sd->job & MAPID_THIRDMASK) == MAPID_MECHANIC) {
- clif->msgtable(sd, MSG_ITEM_NEED_MADO);
+#if PACKETVER_RE_NUM >= 20090226 || PACKETVER_MAIN_NUM >= 20090304 || defined(PACKETVER_ZERO)
+ clif->msgtable(sd, MSG_USESKILL_FAIL_MADOGEAR);
+#endif
return 0;
}
}
@@ -1059,13 +1136,13 @@ int pc_isequip(struct map_session_data *sd,int n)
return 1; //Can equip all helms
if (sd->status.base_level > 96 && item->equip & EQP_ARMS && item->type == IT_WEAPON)
- switch(item->look) { //In weapons, the look determines type of weapon.
- case W_DAGGER: //Level 4 Knives are equippable.. this means all knives, I'd guess?
- case W_1HSWORD: //All 1H swords
- case W_1HAXE: //All 1H Axes
- case W_MACE: //All 1H Maces
- case W_STAFF: //All 1H Staves
- return 1;
+ switch (item->subtype) { //In weapons, the look determines type of weapon.
+ case W_DAGGER: //Level 4 Knives are equippable.. this means all knives, I'd guess?
+ case W_1HSWORD: //All 1H swords
+ case W_1HAXE: //All 1H Axes
+ case W_MACE: //All 1H Maces
+ case W_STAFF: //All 1H Staves
+ return 1;
}
}
}
@@ -1117,7 +1194,7 @@ int pc_isequip(struct map_session_data *sd,int n)
* No problem with the session id
* set the status that has been sent from char server
*------------------------------------------*/
-bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_time, int group_id, const struct mmo_charstatus *st, bool changing_mapservers)
+static bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_time, int group_id, const struct mmo_charstatus *st, bool changing_mapservers)
{
int i;
int64 tick = timer->gettick();
@@ -1136,6 +1213,8 @@ bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_tim
}
memcpy(&sd->status, st, sizeof(*st));
+ memset(&sd->rodex, 0x0, sizeof(sd->rodex));
+ VECTOR_INIT(sd->rodex.messages);
if (st->sex != sd->status.sex) {
clif->authfail_fd(sd->fd, 0);
@@ -1249,14 +1328,18 @@ bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_tim
sd->bg_queue.client_has_bg_data = 0;
sd->bg_queue.type = 0;
+ VECTOR_INIT(sd->channels);
VECTOR_INIT(sd->script_queues);
+ VECTOR_INIT(sd->achievement); // Achievements [Smokexyz/Hercules]
+ VECTOR_INIT(sd->storage.item); // initialize storage item vector.
+ VECTOR_INIT(sd->hatEffectId);
sd->state.dialog = 0;
sd->delayed_damage = 0;
- if( battle_config.item_check )
- sd->state.itemcheck = 1;
+ if (battle->bc->item_check != PCCHECKITEM_NONE) // Check and flag items for inspection.
+ sd->itemcheck = (enum pc_checkitem_types) battle->bc->item_check;
// Event Timers
for( i = 0; i < MAX_EVENTTIMER; i++ )
@@ -1295,6 +1378,8 @@ bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_tim
pc->setpos(sd,sd->status.last_point.map,0,0,CLR_OUTSIGHT);
}
+ clif->inventoryExpansionInfo(sd);
+ clif->overweight_percent(sd);
clif->authok(sd);
//Prevent S. Novices from getting the no-death bonus just yet. [Skotlex]
@@ -1307,6 +1392,7 @@ bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_tim
" Group '"CL_WHITE"%d"CL_RESET"').\n",
sd->status.name, sd->status.account_id, sd->status.char_id,
CONVIP(ip), sd->group_id);
+
// Send friends list
clif->friendslist_send(sd);
@@ -1328,16 +1414,6 @@ bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_tim
clif->changemap(sd,sd->bl.m,sd->bl.x,sd->bl.y);
}
- /**
- * Check if player have any cool downs on
- **/
- skill->cooldown_load(sd);
-
- /**
- * Check if player have any item cooldowns on
- **/
- pc->itemcd_do(sd,true);
-
#ifdef GP_BOUND_ITEMS
if( sd->status.party_id == 0 )
pc->bound_clear(sd,IBT_PARTY);
@@ -1355,7 +1431,7 @@ bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_tim
/*==========================================
* Closes a connection because it failed to be authenticated from the char server.
*------------------------------------------*/
-void pc_authfail(struct map_session_data *sd)
+static void pc_authfail(struct map_session_data *sd)
{
nullpo_retv(sd);
clif->authfail_fd(sd->fd, 0);
@@ -1363,7 +1439,7 @@ void pc_authfail(struct map_session_data *sd)
}
//Attempts to set a mob.
-int pc_set_hate_mob(struct map_session_data *sd, int pos, struct block_list *bl)
+static int pc_set_hate_mob(struct map_session_data *sd, int pos, struct block_list *bl)
{
int class_;
if (!sd || !bl || pos < 0 || pos >= MAX_PC_FEELHATE)
@@ -1383,7 +1459,7 @@ int pc_set_hate_mob(struct map_session_data *sd, int pos, struct block_list *bl)
return 0; //Wrong size
}
sd->hate_mob[pos] = class_;
- pc_setglobalreg(sd,script->add_str(pc->sg_info[pos].hate_var),class_+1);
+ pc_setglobalreg(sd,script->add_variable(pc->sg_info[pos].hate_var),class_+1);
clif->hate_info(sd, pos, class_, 1);
return 1;
}
@@ -1391,34 +1467,34 @@ int pc_set_hate_mob(struct map_session_data *sd, int pos, struct block_list *bl)
/*==========================================
* Invoked once after the char/account/account2 registry variables are received. [Skotlex]
*------------------------------------------*/
-int pc_reg_received(struct map_session_data *sd)
+static int pc_reg_received(struct map_session_data *sd)
{
int i, idx = 0;
nullpo_ret(sd);
sd->vars_ok = true;
- sd->change_level_2nd = pc_readglobalreg(sd,script->add_str("jobchange_level"));
- sd->change_level_3rd = pc_readglobalreg(sd,script->add_str("jobchange_level_3rd"));
- sd->die_counter = pc_readglobalreg(sd,script->add_str("PC_DIE_COUNTER"));
+ sd->change_level_2nd = pc_readglobalreg(sd,script->add_variable("jobchange_level"));
+ sd->change_level_3rd = pc_readglobalreg(sd,script->add_variable("jobchange_level_3rd"));
+ sd->die_counter = pc_readglobalreg(sd,script->add_variable("PC_DIE_COUNTER"));
// Cash shop
- sd->cashPoints = pc_readaccountreg(sd,script->add_str("#CASHPOINTS"));
- sd->kafraPoints = pc_readaccountreg(sd,script->add_str("#KAFRAPOINTS"));
+ sd->cashPoints = pc_readaccountreg(sd,script->add_variable("#CASHPOINTS"));
+ sd->kafraPoints = pc_readaccountreg(sd,script->add_variable("#KAFRAPOINTS"));
// Cooking Exp
- sd->cook_mastery = pc_readglobalreg(sd,script->add_str("COOK_MASTERY"));
+ sd->cook_mastery = pc_readglobalreg(sd,script->add_variable("COOK_MASTERY"));
if ((sd->job & MAPID_BASEMASK) == MAPID_TAEKWON) {
// Better check for class rather than skill to prevent "skill resets" from unsetting this
- sd->mission_mobid = pc_readglobalreg(sd,script->add_str("TK_MISSION_ID"));
- sd->mission_count = pc_readglobalreg(sd,script->add_str("TK_MISSION_COUNT"));
+ sd->mission_mobid = pc_readglobalreg(sd,script->add_variable("TK_MISSION_ID"));
+ sd->mission_count = pc_readglobalreg(sd,script->add_variable("TK_MISSION_COUNT"));
}
//SG map and mob read [Komurka]
for (i = 0; i < MAX_PC_FEELHATE; i++) {
//for now - someone need to make reading from txt/sql
- int j = pc_readglobalreg(sd,script->add_str(pc->sg_info[i].feel_var));
+ int j = pc_readglobalreg(sd,script->add_variable(pc->sg_info[i].feel_var));
if (j != 0) {
sd->feel_map[i].index = j;
sd->feel_map[i].m = map->mapindex2mapid(j);
@@ -1426,24 +1502,24 @@ int pc_reg_received(struct map_session_data *sd)
sd->feel_map[i].index = 0;
sd->feel_map[i].m = -1;
}
- sd->hate_mob[i] = pc_readglobalreg(sd,script->add_str(pc->sg_info[i].hate_var))-1;
+ sd->hate_mob[i] = pc_readglobalreg(sd,script->add_variable(pc->sg_info[i].hate_var))-1;
}
if ((i = pc->checkskill(sd,RG_PLAGIARISM)) > 0) {
- sd->cloneskill_id = pc_readglobalreg(sd,script->add_str("CLONE_SKILL"));
+ sd->cloneskill_id = pc_readglobalreg(sd,script->add_variable("CLONE_SKILL"));
if (sd->cloneskill_id > 0 && (idx = skill->get_index(sd->cloneskill_id)) > 0) {
sd->status.skill[idx].id = sd->cloneskill_id;
- sd->status.skill[idx].lv = pc_readglobalreg(sd,script->add_str("CLONE_SKILL_LV"));
+ sd->status.skill[idx].lv = pc_readglobalreg(sd,script->add_variable("CLONE_SKILL_LV"));
if (sd->status.skill[idx].lv > i)
sd->status.skill[idx].lv = i;
sd->status.skill[idx].flag = SKILL_FLAG_PLAGIARIZED;
}
}
if ((i = pc->checkskill(sd,SC_REPRODUCE)) > 0) {
- sd->reproduceskill_id = pc_readglobalreg(sd,script->add_str("REPRODUCE_SKILL"));
+ sd->reproduceskill_id = pc_readglobalreg(sd,script->add_variable("REPRODUCE_SKILL"));
if( sd->reproduceskill_id > 0 && (idx = skill->get_index(sd->reproduceskill_id)) > 0) {
sd->status.skill[idx].id = sd->reproduceskill_id;
- sd->status.skill[idx].lv = pc_readglobalreg(sd,script->add_str("REPRODUCE_SKILL_LV"));
+ sd->status.skill[idx].lv = pc_readglobalreg(sd,script->add_variable("REPRODUCE_SKILL_LV"));
if( i < sd->status.skill[idx].lv)
sd->status.skill[idx].lv = i;
sd->status.skill[idx].flag = SKILL_FLAG_PLAGIARIZED;
@@ -1477,13 +1553,27 @@ int pc_reg_received(struct map_session_data *sd)
if (!chrif->auth_finished(sd))
ShowError("pc_reg_received: Failed to properly remove player %d:%d from logging db!\n", sd->status.account_id, sd->status.char_id);
+ // Restore any cooldowns
+ skill->cooldown_load(sd);
+ pc->itemcd_do(sd, true);
+
pc->load_combo(sd);
status_calc_pc(sd,SCO_FIRST|SCO_FORCE);
chrif->scdata_request(sd->status.account_id, sd->status.char_id);
+ if (sd->status.clan_id)
+ clan->member_online(sd, true);
+
+ //Auth is fully okay, update last_login
+ sd->status.last_login = time(NULL);
+
+ // Storage Request
+ intif->request_account_storage(sd);
+
intif->Mail_requestinbox(sd->status.char_id, 0); // MAIL SYSTEM - Request Mail Inbox
intif->request_questlog(sd);
+ intif->rodex_checkhasnew(sd);
if (sd->state.connect_new == 0 && sd->fd) { //Character already loaded map! Gotta trigger LoadEndAck manually.
sd->state.connect_new = 1;
@@ -1506,15 +1596,19 @@ int pc_reg_received(struct map_session_data *sd)
if( npc->motd ) /* [Ind/Hercules] */
script->run(npc->motd->u.scr.script, 0, sd->bl.id, npc->fake_nd->bl.id);
+ // Achievements [Smokexyz/Hercules]
+ intif->achievements_request(sd);
+
return 1;
}
-int pc_calc_skillpoint(struct map_session_data* sd) {
+static int pc_calc_skillpoint(struct map_session_data *sd)
+{
int i,inf2,skill_point=0;
nullpo_ret(sd);
- for (i = 1; i < MAX_SKILL; i++) {
+ for (i = 1; i < MAX_SKILL_DB; i++) {
int skill_lv = pc->checkskill2(sd,i);
if (skill_lv > 0) {
inf2 = skill->dbs->db[i].inf2;
@@ -1532,10 +1626,34 @@ int pc_calc_skillpoint(struct map_session_data* sd) {
return skill_point;
}
+static void pc_calc_skilltree_clear(struct map_session_data *sd)
+{
+ int i;
+
+ nullpo_retv(sd);
+
+ for (i = 0; i < MAX_SKILL_DB; i++) {
+ if (sd->status.skill[i].flag != SKILL_FLAG_PLAGIARIZED && sd->status.skill[i].flag != SKILL_FLAG_PERM_GRANTED) //Don't touch these
+ sd->status.skill[i].id = 0; //First clear skills.
+ /* permanent skills that must be re-checked */
+ if (sd->status.skill[i].flag == SKILL_FLAG_PERMANENT) {
+ switch (skill->dbs->db[i].nameid) {
+ case NV_TRICKDEAD:
+ if ((sd->job & MAPID_UPPERMASK) != MAPID_NOVICE) {
+ sd->status.skill[i].id = 0;
+ sd->status.skill[i].lv = 0;
+ sd->status.skill[i].flag = 0;
+ }
+ break;
+ }
+ }
+ }
+}
+
/*==========================================
* Calculation of skill level.
*------------------------------------------*/
-int pc_calc_skilltree(struct map_session_data *sd)
+static int pc_calc_skilltree(struct map_session_data *sd)
{
int i,id=0,flag;
int class = 0, classidx = 0;
@@ -1550,24 +1668,9 @@ int pc_calc_skilltree(struct map_session_data *sd)
}
classidx = pc->class2idx(class);
- for( i = 0; i < MAX_SKILL; i++ ) {
- if( sd->status.skill[i].flag != SKILL_FLAG_PLAGIARIZED && sd->status.skill[i].flag != SKILL_FLAG_PERM_GRANTED ) //Don't touch these
- sd->status.skill[i].id = 0; //First clear skills.
- /* permanent skills that must be re-checked */
- if( sd->status.skill[i].flag == SKILL_FLAG_PERMANENT ) {
- switch( skill->dbs->db[i].nameid ) {
- case NV_TRICKDEAD:
- if ((sd->job & MAPID_UPPERMASK) != MAPID_NOVICE) {
- sd->status.skill[i].id = 0;
- sd->status.skill[i].lv = 0;
- sd->status.skill[i].flag = 0;
- }
- break;
- }
- }
- }
+ pc->calc_skilltree_clear(sd);
- for( i = 0; i < MAX_SKILL; i++ ) {
+ for (i = 0; i < MAX_SKILL_DB; i++) {
if( sd->status.skill[i].flag != SKILL_FLAG_PERMANENT && sd->status.skill[i].flag != SKILL_FLAG_PERM_GRANTED && sd->status.skill[i].flag != SKILL_FLAG_PLAGIARIZED )
{ // Restore original level of skills after deleting earned skills.
sd->status.skill[i].lv = (sd->status.skill[i].flag == SKILL_FLAG_TEMPORARY) ? 0 : sd->status.skill[i].flag - SKILL_FLAG_REPLACED_LV_0;
@@ -1576,18 +1679,25 @@ int pc_calc_skilltree(struct map_session_data *sd)
if( sd->sc.count && sd->sc.data[SC_SOULLINK] && sd->sc.data[SC_SOULLINK]->val2 == SL_BARDDANCER && skill->dbs->db[i].nameid >= DC_HUMMING && skill->dbs->db[i].nameid <= DC_SERVICEFORYOU )
{ //Enable Bard/Dancer spirit linked skills.
- if( sd->status.sex )
- { //Link dancer skills to bard.
- // i can be < 8?
- if( sd->status.skill[i-8].lv < 10 )
+ if (sd->status.sex) {
+ // Link dancer skills to bard.
+ if (i < 8) {
+ Assert_report(i >= 8);
+ continue;
+ }
+ if (sd->status.skill[i-8].lv < 10)
continue;
sd->status.skill[i].id = skill->dbs->db[i].nameid;
sd->status.skill[i].lv = sd->status.skill[i-8].lv; // Set the level to the same as the linking skill
sd->status.skill[i].flag = SKILL_FLAG_TEMPORARY; // Tag it as a non-savable, non-uppable, bonus skill
- } else { //Link bard skills to dancer.
- if( sd->status.skill[i].lv < 10 )
+ } else {
+ // Link bard skills to dancer.
+ if (i < 8) {
+ Assert_report(i >= 8);
+ continue;
+ }
+ if (sd->status.skill[i].lv < 10)
continue;
- // i can be < 8?
sd->status.skill[i-8].id = skill->dbs->db[i-8].nameid;
sd->status.skill[i-8].lv = sd->status.skill[i].lv; // Set the level to the same as the linking skill
sd->status.skill[i-8].flag = SKILL_FLAG_TEMPORARY; // Tag it as a non-savable, non-uppable, bonus skill
@@ -1596,7 +1706,7 @@ int pc_calc_skilltree(struct map_session_data *sd)
}
if( pc_has_permission(sd, PC_PERM_ALL_SKILL) ) {
- for( i = 0; i < MAX_SKILL; i++ ) {
+ for (i = 0; i < MAX_SKILL_DB; i++) {
switch(skill->dbs->db[i].nameid) {
/**
* Dummy skills must be added here otherwise they'll be displayed in the,
@@ -1685,6 +1795,19 @@ int pc_calc_skilltree(struct map_session_data *sd)
}
} while(flag);
+ pc->calc_skilltree_bonus(sd, classidx);
+
+ return 0;
+}
+
+static void pc_calc_skilltree_bonus(struct map_session_data *sd, int classidx)
+{
+ int i;
+ int id = 0;
+
+ nullpo_retv(sd);
+ Assert_retv(classidx >= 0 && classidx < CLASS_COUNT);
+
//
if (classidx > 0 && (sd->job & MAPID_UPPERMASK) == MAPID_TAEKWON
&& sd->status.base_level >= 90 && sd->status.skill_point == 0
@@ -1710,12 +1833,10 @@ int pc_calc_skilltree(struct map_session_data *sd)
sd->status.skill[idx].lv = skill->tree_get_max(id, sd->status.class);
}
}
-
- return 0;
}
//Checks if you can learn a new skill after having leveled up a skill.
-void pc_check_skilltree(struct map_session_data *sd, int skill_id)
+static void pc_check_skilltree(struct map_session_data *sd, int skill_id)
{
int i,id=0,flag;
int c=0;
@@ -1786,11 +1907,11 @@ void pc_check_skilltree(struct map_session_data *sd, int skill_id)
// Make sure all the skills are in the correct condition
// before persisting to the backend.. [MouseJstr]
-int pc_clean_skilltree(struct map_session_data *sd)
+static int pc_clean_skilltree(struct map_session_data *sd)
{
int i;
nullpo_ret(sd);
- for (i = 0; i < MAX_SKILL; i++){
+ for (i = 0; i < MAX_SKILL_DB; i++) {
if (sd->status.skill[i].flag == SKILL_FLAG_TEMPORARY || sd->status.skill[i].flag == SKILL_FLAG_PLAGIARIZED) {
sd->status.skill[i].id = 0;
sd->status.skill[i].lv = 0;
@@ -1804,7 +1925,7 @@ int pc_clean_skilltree(struct map_session_data *sd)
return 0;
}
-int pc_calc_skilltree_normalize_job(struct map_session_data *sd)
+static int pc_calc_skilltree_normalize_job(struct map_session_data *sd)
{
int skill_point, novice_skills;
uint16 job;
@@ -1816,7 +1937,7 @@ int pc_calc_skilltree_normalize_job(struct map_session_data *sd)
skill_point = pc->calc_skillpoint(sd);
- novice_skills = pc->max_level[pc->class2idx(JOB_NOVICE)][1] - 1;
+ novice_skills = pc->dbs->class_exp_table[pc->class2idx(JOB_NOVICE)][CLASS_EXP_TABLE_JOB]->max_level - 1;
sd->sktree.second = sd->sktree.third = 0;
@@ -1830,7 +1951,7 @@ int pc_calc_skilltree_normalize_job(struct map_session_data *sd)
if ((sd->job & JOBL_THIRD) != 0) {
// if neither 2nd nor 3rd jobchange levels are known, we have to assume a default for 2nd
if (sd->change_level_3rd == 0) {
- sd->change_level_2nd = pc->max_level[pc->class2idx(pc->mapid2jobid(sd->job & MAPID_UPPERMASK, sd->status.sex))][1];
+ sd->change_level_2nd = pc->dbs->class_exp_table[pc->class2idx(pc->mapid2jobid(sd->job & MAPID_UPPERMASK, sd->status.sex))][CLASS_EXP_TABLE_JOB]->max_level;
} else {
sd->change_level_2nd = 1 + skill_point + sd->status.skill_point
- (sd->status.job_level - 1)
@@ -1844,7 +1965,7 @@ int pc_calc_skilltree_normalize_job(struct map_session_data *sd)
}
- pc_setglobalreg(sd, script->add_str("jobchange_level"), sd->change_level_2nd);
+ pc_setglobalreg(sd, script->add_variable("jobchange_level"), sd->change_level_2nd);
}
if (skill_point < novice_skills + (sd->change_level_2nd - 1)) {
@@ -1857,7 +1978,7 @@ int pc_calc_skilltree_normalize_job(struct map_session_data *sd)
- (sd->status.job_level - 1)
- (sd->change_level_2nd - 1)
- novice_skills;
- pc_setglobalreg(sd, script->add_str("jobchange_level_3rd"), sd->change_level_3rd);
+ pc_setglobalreg(sd, script->add_variable("jobchange_level_3rd"), sd->change_level_3rd);
}
if (skill_point < novice_skills + (sd->change_level_2nd - 1) + (sd->change_level_3rd - 1)) {
@@ -1880,7 +2001,7 @@ int pc_calc_skilltree_normalize_job(struct map_session_data *sd)
* 2: overweight 90%
* It's assumed that SC_WEIGHTOVER50 and SC_WEIGHTOVER90 are only started/stopped here.
*/
-int pc_updateweightstatus(struct map_session_data *sd)
+static int pc_updateweightstatus(struct map_session_data *sd)
{
int old_overweight;
int new_overweight;
@@ -1911,7 +2032,7 @@ int pc_updateweightstatus(struct map_session_data *sd)
return 0;
}
-int pc_disguise(struct map_session_data *sd, int class)
+static int pc_disguise(struct map_session_data *sd, int class)
{
nullpo_ret(sd);
if (class == -1 && sd->disguise == -1)
@@ -1954,7 +2075,7 @@ int pc_disguise(struct map_session_data *sd, int class)
clif->spawn(&sd->bl);
if (class == sd->status.class && pc_iscarton(sd)) {
//It seems the cart info is lost on undisguise.
- clif->cartlist(sd);
+ clif->cartList(sd);
clif->updatestatus(sd,SP_CARTINFO);
}
if (sd->chat_id != 0) {
@@ -1967,7 +2088,7 @@ int pc_disguise(struct map_session_data *sd, int class)
return 1;
}
-int pc_bonus_autospell(struct s_autospell *spell, int max, short id, short lv, short rate, short flag, short card_id)
+static int pc_bonus_autospell(struct s_autospell *spell, int max, short id, short lv, short rate, short flag, int card_id)
{
int i;
@@ -2005,7 +2126,7 @@ int pc_bonus_autospell(struct s_autospell *spell, int max, short id, short lv, s
return 1;
}
-int pc_bonus_autospell_onskill(struct s_autospell *spell, int max, short src_skill, short id, short lv, short rate, short card_id)
+static int pc_bonus_autospell_onskill(struct s_autospell *spell, int max, short src_skill, short id, short lv, short rate, int card_id)
{
int i;
@@ -2046,7 +2167,7 @@ int pc_bonus_autospell_onskill(struct s_autospell *spell, int max, short src_ski
* @retval 1 on success.
* @retval 0 on failure.
*/
-int pc_bonus_addeff(struct s_addeffect* effect, int max, enum sc_type id, int16 rate, int16 arrow_rate, uint8 flag, uint16 duration)
+static int pc_bonus_addeff(struct s_addeffect *effect, int max, enum sc_type id, int16 rate, int16 arrow_rate, uint8 flag, uint16 duration)
{
int i;
@@ -2078,7 +2199,8 @@ int pc_bonus_addeff(struct s_addeffect* effect, int max, enum sc_type id, int16
return 1;
}
-int pc_bonus_addeff_onskill(struct s_addeffectonskill* effect, int max, enum sc_type id, short rate, short skill_id, unsigned char target) {
+static int pc_bonus_addeff_onskill(struct s_addeffectonskill *effect, int max, enum sc_type id, short rate, short skill_id, unsigned char target)
+{
int i;
nullpo_ret(effect);
@@ -2099,10 +2221,12 @@ int pc_bonus_addeff_onskill(struct s_addeffectonskill* effect, int max, enum sc_
return 1;
}
-int pc_bonus_item_drop(struct s_add_drop *drop, const short max, short id, short group, int race_mask, int rate) {
+static int pc_bonus_item_drop(struct s_add_drop *drop, const short max, int id, bool is_group, int race_mask, int rate)
+{
int i;
nullpo_ret(drop);
+ Assert_ret(is_group || id > 0);
//Apply config rate adjustment settings.
if (rate >= 0) { //Absolute drop.
if (battle_config.item_rate_adddrop != 100)
@@ -2117,17 +2241,14 @@ int pc_bonus_item_drop(struct s_add_drop *drop, const short max, short id, short
if (rate > -1)
rate = -1;
}
- for(i = 0; i < max && (drop[i].id || drop[i].group); i++) {
- if (((id && drop[i].id == id) || (group && drop[i].group == group))
- && race_mask != RCMASK_NONE
- ) {
+ for (i = 0; i < max && (drop[i].id != 0 || drop[i].is_group); i++) {
+ if (drop[i].id == id && race_mask != RCMASK_NONE) {
drop[i].race |= race_mask;
if (drop[i].rate > 0 && rate > 0) {
//Both are absolute rates.
if (drop[i].rate < rate)
drop[i].rate = rate;
- } else
- if(drop[i].rate < 0 && rate < 0) {
+ } else if (drop[i].rate < 0 && rate < 0) {
//Both are relative rates.
if (drop[i].rate > rate)
drop[i].rate = rate;
@@ -2141,13 +2262,14 @@ int pc_bonus_item_drop(struct s_add_drop *drop, const short max, short id, short
return 0;
}
drop[i].id = id;
- drop[i].group = group;
+ drop[i].is_group = is_group;
drop[i].race |= race_mask;
drop[i].rate = rate;
return 1;
}
-int pc_addautobonus(struct s_autobonus *bonus,char max,const char *bonus_script,short rate,unsigned int dur,short flag,const char *other_script,unsigned short pos,bool onskill) {
+static int pc_addautobonus(struct s_autobonus *bonus, char max, const char *bonus_script, short rate, unsigned int dur, short flag, const char *other_script, unsigned short pos, bool onskill)
+{
int i;
nullpo_ret(bonus);
@@ -2184,7 +2306,7 @@ int pc_addautobonus(struct s_autobonus *bonus,char max,const char *bonus_script,
return 1;
}
-int pc_delautobonus(struct map_session_data* sd, struct s_autobonus *autobonus,char max,bool restore)
+static int pc_delautobonus(struct map_session_data *sd, struct s_autobonus *autobonus, char max, bool restore)
{
int i;
nullpo_ret(sd);
@@ -2222,7 +2344,7 @@ int pc_delautobonus(struct map_session_data* sd, struct s_autobonus *autobonus,c
return 0;
}
-int pc_exeautobonus(struct map_session_data *sd,struct s_autobonus *autobonus)
+static int pc_exeautobonus(struct map_session_data *sd, struct s_autobonus *autobonus)
{
nullpo_ret(sd);
nullpo_ret(autobonus);
@@ -2242,7 +2364,8 @@ int pc_exeautobonus(struct map_session_data *sd,struct s_autobonus *autobonus)
return 0;
}
-int pc_endautobonus(int tid, int64 tick, int id, intptr_t data) {
+static int pc_endautobonus(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data *sd = map->id2sd(id);
struct s_autobonus *autobonus = (struct s_autobonus *)data;
@@ -2255,7 +2378,7 @@ int pc_endautobonus(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-int pc_bonus_addele(struct map_session_data* sd, unsigned char ele, short rate, short flag)
+static int pc_bonus_addele(struct map_session_data *sd, unsigned char ele, short rate, short flag)
{
int i;
struct weapon_data* wd;
@@ -2290,7 +2413,7 @@ int pc_bonus_addele(struct map_session_data* sd, unsigned char ele, short rate,
return 0;
}
-int pc_bonus_subele(struct map_session_data* sd, unsigned char ele, short rate, short flag)
+static int pc_bonus_subele(struct map_session_data *sd, unsigned char ele, short rate, short flag)
{
int i;
@@ -2336,7 +2459,8 @@ int pc_bonus_subele(struct map_session_data* sd, unsigned char ele, short rate,
/*==========================================
* Add a bonus(type) to player sd
*------------------------------------------*/
-int pc_bonus(struct map_session_data *sd,int type,int val) {
+static int pc_bonus(struct map_session_data *sd, int type, int val)
+{
struct status_data *bst;
int bonus;
int i;
@@ -2452,7 +2576,7 @@ int pc_bonus(struct map_session_data *sd,int type,int val) {
}
switch (sd->state.lr_flag) {
case 2:
- switch (sd->status.weapon) {
+ switch (sd->weapontype) {
case W_BOW:
case W_REVOLVER:
case W_RIFLE:
@@ -2519,7 +2643,7 @@ int pc_bonus(struct map_session_data *sd,int type,int val) {
case SP_ATTACKRANGE:
switch (sd->state.lr_flag) {
case 2:
- switch (sd->status.weapon) {
+ switch (sd->weapontype) {
case W_BOW:
case W_REVOLVER:
case W_RIFLE:
@@ -2985,7 +3109,7 @@ int pc_bonus(struct map_session_data *sd,int type,int val) {
#endif
case SP_ADD_MONSTER_DROP_CHAINITEM:
if (sd->state.lr_flag != 2)
- pc->bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), 0, val, map->race_id2mask(RC_ALL), 10000);
+ pc->bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), val, true, map->race_id2mask(RC_ALL), 10000);
break;
case SP_ADDMAXWEIGHT:
if (sd->state.lr_flag != 2)
@@ -3002,7 +3126,7 @@ int pc_bonus(struct map_session_data *sd,int type,int val) {
/*==========================================
* Player bonus (type) with args type2 and val, called trough bonus2 (npc)
*------------------------------------------*/
-int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
+static int pc_bonus2(struct map_session_data *sd, int type, int type2, int val)
{
int i;
@@ -3560,7 +3684,7 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
break;
case SP_ADD_MONSTER_DROP_ITEM:
if (sd->state.lr_flag != 2)
- pc->bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), type2, 0, map->race_id2mask(RC_ALL), val);
+ pc->bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), type2, false, map->race_id2mask(RC_ALL), val);
break;
case SP_SP_LOSS_RATE:
if(sd->state.lr_flag != 2) {
@@ -3766,7 +3890,7 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
break;
}
if (sd->state.lr_flag != 2)
- pc->bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), 0, type2, race_mask, 10000);
+ pc->bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), type2, true, race_mask, 10000);
}
break;
#ifdef RENEWAL
@@ -3792,7 +3916,7 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
return 0;
}
-int pc_bonus3(struct map_session_data *sd,int type,int type2,int type3,int val)
+static int pc_bonus3(struct map_session_data *sd, int type, int type2, int type3, int val)
{
int i;
nullpo_ret(sd);
@@ -3806,12 +3930,12 @@ int pc_bonus3(struct map_session_data *sd,int type,int type2,int type3,int val)
break;
}
if (sd->state.lr_flag != 2)
- pc->bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), type2, 0, race_mask, val);
+ pc->bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), type2, false, race_mask, val);
}
break;
case SP_ADD_CLASS_DROP_ITEM:
if(sd->state.lr_flag != 2)
- pc->bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), type2, 0, -type3, val);
+ pc->bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), type2, false, -type3, val);
break;
case SP_AUTOSPELL:
if(sd->state.lr_flag != 2)
@@ -3966,7 +4090,8 @@ int pc_bonus3(struct map_session_data *sd,int type,int type2,int type3,int val)
return 0;
}
-int pc_bonus4(struct map_session_data *sd,int type,int type2,int type3,int type4,int val) {
+static int pc_bonus4(struct map_session_data *sd, int type, int type2, int type3, int type4, int val)
+{
int i;
nullpo_ret(sd);
@@ -4061,7 +4186,8 @@ int pc_bonus4(struct map_session_data *sd,int type,int type2,int type3,int type4
return 0;
}
-int pc_bonus5(struct map_session_data *sd,int type,int type2,int type3,int type4,int type5,int val) {
+static int pc_bonus5(struct map_session_data *sd, int type, int type2, int type3, int type4, int type5, int val)
+{
nullpo_ret(sd);
switch(type){
@@ -4095,9 +4221,9 @@ int pc_bonus5(struct map_session_data *sd,int type,int type2,int type3,int type4
* Grants a player a given skill.
* Flag values: @see enum pc_skill_flag
*------------------------------------------*/
-int pc_skill(struct map_session_data *sd, int id, int level, int flag)
+static int pc_skill(struct map_session_data *sd, int id, int level, int flag)
{
- uint16 index = 0;
+ int index = 0;
nullpo_ret(sd);
if (!(index = skill->get_index(id))) {
@@ -4174,13 +4300,13 @@ int pc_skill(struct map_session_data *sd, int id, int level, int flag)
* @param idx_equip The target equipment's inventory index.
* @retval true if the card can be inserted.
*/
-bool pc_can_insert_card_into(struct map_session_data* sd, int idx_card, int idx_equip)
+static bool pc_can_insert_card_into(struct map_session_data *sd, int idx_card, int idx_equip)
{
int i;
nullpo_ret(sd);
- if (idx_equip < 0 || idx_equip >= MAX_INVENTORY || sd->inventory_data[idx_equip] == NULL)
+ if (idx_equip < 0 || idx_equip >= sd->status.inventorySize || sd->inventory_data[idx_equip] == NULL)
return false; //Invalid item index.
if (sd->status.inventory[idx_equip].nameid <= 0 || sd->status.inventory[idx_equip].amount < 1)
return false; // target item missing
@@ -4210,11 +4336,11 @@ bool pc_can_insert_card_into(struct map_session_data* sd, int idx_card, int idx_
* @param idx_card The card's inventory index.
* @retval true if the card can be inserted.
*/
-bool pc_can_insert_card(struct map_session_data* sd, int idx_card)
+static bool pc_can_insert_card(struct map_session_data *sd, int idx_card)
{
nullpo_ret(sd);
- if (idx_card < 0 || idx_card >= MAX_INVENTORY || sd->inventory_data[idx_card] == NULL)
+ if (idx_card < 0 || idx_card >= sd->status.inventorySize || sd->inventory_data[idx_card] == NULL)
return false; //Invalid card index.
if (sd->status.inventory[idx_card].nameid <= 0 || sd->status.inventory[idx_card].amount < 1)
return false; // target card missing
@@ -4229,7 +4355,7 @@ bool pc_can_insert_card(struct map_session_data* sd, int idx_card)
* 0 = fail
* 1 = success
*------------------------------------------*/
-int pc_insert_card(struct map_session_data* sd, int idx_card, int idx_equip)
+static int pc_insert_card(struct map_session_data *sd, int idx_card, int idx_equip)
{
int nameid;
@@ -4271,11 +4397,9 @@ int pc_insert_card(struct map_session_data* sd, int idx_card, int idx_equip)
/*==========================================
* Update buying value by skills
*------------------------------------------*/
-int pc_modifybuyvalue(struct map_session_data *sd, int orig_value)
+static int pc_modifybuyvalue(struct map_session_data *sd, int orig_value)
{
int skill_lv, rate1 = 0, rate2 = 0;
- if (orig_value <= 0)
- return 0;
if ((skill_lv=pc->checkskill(sd,MC_DISCOUNT)) > 0) // merchant discount
rate1 = 5+skill_lv*2-((skill_lv==10)? 1:0);
if ((skill_lv=pc->checkskill(sd,RG_COMPULSION)) > 0) // rogue discount
@@ -4284,25 +4408,25 @@ int pc_modifybuyvalue(struct map_session_data *sd, int orig_value)
rate1 = rate2;
if (rate1 != 0)
orig_value = apply_percentrate(orig_value, 100-rate1, 100);
- if (orig_value < 1)
- orig_value = 1;
+
+ if (orig_value < battle_config.min_item_buy_price)
+ orig_value = battle_config.min_item_buy_price;
return orig_value;
}
/*==========================================
* Update selling value by skills
*------------------------------------------*/
-int pc_modifysellvalue(struct map_session_data *sd, int orig_value)
+static int pc_modifysellvalue(struct map_session_data *sd, int orig_value)
{
int skill_lv, rate = 0;
- if (orig_value <= 0)
- return 0;
if ((skill_lv=pc->checkskill(sd,MC_OVERCHARGE)) > 0) //OverCharge
rate = 5+skill_lv*2-((skill_lv==10)? 1:0);
if (rate != 0)
orig_value = apply_percentrate(orig_value, 100+rate, 100);
- if (orig_value < 1)
- orig_value = 1;
+
+ if (orig_value < battle_config.min_item_sell_price)
+ orig_value = battle_config.min_item_sell_price;
return orig_value;
}
@@ -4310,9 +4434,8 @@ int pc_modifysellvalue(struct map_session_data *sd, int orig_value)
* Checking if we have enough place on inventory for new item
* Make sure to take 30k as limit (for client I guess)
*------------------------------------------*/
-int pc_checkadditem(struct map_session_data *sd,int nameid,int amount)
+static int pc_checkadditem(struct map_session_data *sd, int nameid, int amount)
{
- int i;
struct item_data* data;
nullpo_ret(sd);
@@ -4328,7 +4451,7 @@ int pc_checkadditem(struct map_session_data *sd,int nameid,int amount)
if( data->stack.inventory && amount > data->stack.amount )
return ADDITEM_OVERAMOUNT;
- for(i=0;i<MAX_INVENTORY;i++){
+ for(int i = 0; i < sd->status.inventorySize; i++) {
// FIXME: This does not consider the checked item's cards, thus could check a wrong slot for stackability.
if(sd->status.inventory[i].nameid==nameid){
if( amount > MAX_AMOUNT - sd->status.inventory[i].amount || ( data->stack.inventory && amount > data->stack.amount - sd->status.inventory[i].amount ) )
@@ -4344,13 +4467,12 @@ int pc_checkadditem(struct map_session_data *sd,int nameid,int amount)
* Return number of available place in inventory
* Each non stackable item will reduce place by 1
*------------------------------------------*/
-int pc_inventoryblank(struct map_session_data *sd)
+static int pc_inventoryblank(struct map_session_data *sd)
{
- int i,b;
-
nullpo_ret(sd);
+ int b = 0;
- for(i=0,b=0;i<MAX_INVENTORY;i++){
+ for (int i = 0; i < sd->status.inventorySize; i++) {
if(sd->status.inventory[i].nameid==0)
b++;
}
@@ -4361,7 +4483,7 @@ int pc_inventoryblank(struct map_session_data *sd)
/*==========================================
* attempts to remove zeny from player (sd)
*------------------------------------------*/
-int pc_payzeny(struct map_session_data *sd,int zeny, enum e_log_pick_type type, struct map_session_data *tsd)
+static int pc_payzeny(struct map_session_data *sd, int zeny, enum e_log_pick_type type, struct map_session_data *tsd)
{
nullpo_retr(-1,sd);
@@ -4378,59 +4500,70 @@ int pc_payzeny(struct map_session_data *sd,int zeny, enum e_log_pick_type type,
sd->status.zeny -= zeny;
clif->updatestatus(sd,SP_ZENY);
- if(!tsd) tsd = sd;
- logs->zeny(sd, type, tsd, -zeny);
- if( zeny > 0 && sd->state.showzeny ) {
- char output[255];
- sprintf(output, "Removed %dz.", zeny);
- clif_disp_onlyself(sd, output);
+ if (zeny > 0) {
+ achievement->validate_zeny(sd, -zeny); // Achievements [Smokexyz/Hercules]
+ logs->zeny(sd, type, tsd ? tsd : sd, -zeny);
+
+ if (sd->state.showzeny) {
+ char output[255];
+ sprintf(output, "Removed %dz.", zeny);
+ clif_disp_onlyself(sd, output);
+ }
}
return 0;
}
-/*==========================================
- * Cash Shop
- *------------------------------------------*/
-int pc_paycash(struct map_session_data *sd, int price, int points)
+/**
+ * Calculates leftover cashpoints and kafrapoints when buying an item from cashshop
+ *
+ * @param price Price of the item.
+ * @param points Provided kafra points.
+ *
+ * @return points Leftover kafra points.
+ */
+//Changed Kafrapoints calculation. [Normynator]
+static int pc_paycash(struct map_session_data *sd, int price, int points)
{
int cash;
- nullpo_retr(-1,sd);
+ int mempoints;
+ nullpo_retr(-1, sd);
- points = cap_value(points,-MAX_ZENY,MAX_ZENY); //prevent command UB
- if( price < 0 || points < 0 )
- {
+ points = cap_value(points, -MAX_ZENY, MAX_ZENY); //prevent command UB
+ if (price < 0 || points < 0) {
ShowError("pc_paycash: Paying negative points (price=%d, points=%d, account_id=%d, char_id=%d).\n", price, points, sd->status.account_id, sd->status.char_id);
return -2;
}
- if( points > price )
- {
+ if (points > price) {
ShowWarning("pc_paycash: More kafra points provided than needed (price=%d, points=%d, account_id=%d, char_id=%d).\n", price, points, sd->status.account_id, sd->status.char_id);
- points = price;
+ points = points - price;
+ mempoints = price;
+ cash = 0;
+ } else {
+ cash = price - points;
+ mempoints = points;
+ points = 0;
}
- cash = price-points;
-
- if( sd->cashPoints < cash || sd->kafraPoints < points )
- {
+ if (sd->cashPoints < cash || sd->kafraPoints < mempoints) {
ShowError("pc_paycash: Not enough points (cash=%d, kafra=%d) to cover the price (cash=%d, kafra=%d) (account_id=%d, char_id=%d).\n", sd->cashPoints, sd->kafraPoints, cash, points, sd->status.account_id, sd->status.char_id);
return -1;
}
- pc_setaccountreg(sd, script->add_str("#CASHPOINTS"), sd->cashPoints-cash);
- pc_setaccountreg(sd, script->add_str("#KAFRAPOINTS"), sd->kafraPoints-points);
+ pc_setaccountreg(sd, script->add_variable("#CASHPOINTS"), sd->cashPoints - cash);
+ pc_setaccountreg(sd, script->add_variable("#KAFRAPOINTS"), sd->kafraPoints - mempoints);
- if( battle_config.cashshop_show_points )
- {
+ if (battle_config.cashshop_show_points) {
char output[128];
sprintf(output, msg_sd(sd,504), points, cash, sd->kafraPoints, sd->cashPoints);
clif_disp_onlyself(sd, output);
}
- return cash+points;
+
+ return points;
}
-int pc_getcash(struct map_session_data *sd, int cash, int points)
+static int pc_getcash(struct map_session_data *sd, int cash, int points)
{
char output[128];
nullpo_retr(-1,sd);
@@ -4445,7 +4578,7 @@ int pc_getcash(struct map_session_data *sd, int cash, int points)
cash = MAX_ZENY-sd->cashPoints;
}
- pc_setaccountreg(sd, script->add_str("#CASHPOINTS"), sd->cashPoints+cash);
+ pc_setaccountreg(sd, script->add_variable("#CASHPOINTS"), sd->cashPoints+cash);
if( battle_config.cashshop_show_points )
{
@@ -4468,7 +4601,7 @@ int pc_getcash(struct map_session_data *sd, int cash, int points)
points = MAX_ZENY-sd->kafraPoints;
}
- pc_setaccountreg(sd, script->add_str("#KAFRAPOINTS"), sd->kafraPoints+points);
+ pc_setaccountreg(sd, script->add_variable("#KAFRAPOINTS"), sd->kafraPoints+points);
if( battle_config.cashshop_show_points )
{
@@ -4489,7 +4622,7 @@ int pc_getcash(struct map_session_data *sd, int cash, int points)
* Attempts to give zeny to player (sd)
* tsd (optional) from who for log (if null take sd)
*------------------------------------------*/
-int pc_getzeny(struct map_session_data *sd,int zeny, enum e_log_pick_type type, struct map_session_data *tsd)
+static int pc_getzeny(struct map_session_data *sd, int zeny, enum e_log_pick_type type, struct map_session_data *tsd)
{
nullpo_retr(-1,sd);
@@ -4506,12 +4639,15 @@ int pc_getzeny(struct map_session_data *sd,int zeny, enum e_log_pick_type type,
sd->status.zeny += zeny;
clif->updatestatus(sd,SP_ZENY);
- if(!tsd) tsd = sd;
- logs->zeny(sd, type, tsd, zeny);
- if( zeny > 0 && sd->state.showzeny ) {
- char output[255];
- sprintf(output, "Gained %dz.", zeny);
- clif_disp_onlyself(sd, output);
+ if (zeny > 0) {
+ achievement->validate_zeny(sd, zeny); // Achievements [Smokexyz/Hercules]
+ logs->zeny(sd, type, tsd ? tsd : sd, zeny);
+
+ if (sd->state.showzeny) {
+ char output[255];
+ sprintf(output, "Gained %dz.", zeny);
+ clif_disp_onlyself(sd, output);
+ }
}
return 0;
@@ -4528,12 +4664,13 @@ int pc_getzeny(struct map_session_data *sd,int zeny, enum e_log_pick_type type,
* @return the inventory index of the first instance of the requested item.
* @retval INDEX_NOT_FOUND if the item wasn't found.
*/
-int pc_search_inventory(struct map_session_data *sd, int item_id) {
+static int pc_search_inventory(struct map_session_data *sd, int item_id)
+{
int i;
nullpo_retr(INDEX_NOT_FOUND, sd);
- ARR_FIND( 0, MAX_INVENTORY, i, sd->status.inventory[i].nameid == item_id && (sd->status.inventory[i].amount > 0 || item_id == 0) );
- return ( i < MAX_INVENTORY ) ? i : INDEX_NOT_FOUND;
+ ARR_FIND(0, sd->status.inventorySize, i, sd->status.inventory[i].nameid == item_id && (sd->status.inventory[i].amount > 0 || item_id == 0));
+ return (i < sd->status.inventorySize) ? i : INDEX_NOT_FOUND;
}
/*==========================================
@@ -4548,7 +4685,7 @@ int pc_search_inventory(struct map_session_data *sd, int item_id) {
* 6 = ?
* 7 = stack limitation
*------------------------------------------*/
-int pc_additem(struct map_session_data *sd,struct item *item_data,int amount,e_log_pick_type log_type)
+static int pc_additem(struct map_session_data *sd, const struct item *item_data, int amount, e_log_pick_type log_type)
{
struct item_data *data;
int i;
@@ -4595,11 +4732,11 @@ int pc_additem(struct map_session_data *sd,struct item *item_data,int amount,e_l
}
}
- i = MAX_INVENTORY;
+ i = sd->status.inventorySize;
// Stackable | Non Rental
if( itemdb->isstackable2(data) && item_data->expire_time == 0 ) {
- for( i = 0; i < MAX_INVENTORY; i++ ) {
+ for (i = 0; i < sd->status.inventorySize; i++) {
if( sd->status.inventory[i].nameid == item_data->nameid &&
sd->status.inventory[i].bound == item_data->bound &&
sd->status.inventory[i].expire_time == 0 &&
@@ -4614,7 +4751,7 @@ int pc_additem(struct map_session_data *sd,struct item *item_data,int amount,e_l
}
}
- if ( i >= MAX_INVENTORY ) {
+ if (i >= sd->status.inventorySize) {
i = pc->search_inventory(sd,0);
if (i == INDEX_NOT_FOUND)
return 4;
@@ -4629,6 +4766,7 @@ int pc_additem(struct map_session_data *sd,struct item *item_data,int amount,e_l
sd->status.inventory[i].amount = amount;
sd->inventory_data[i] = data;
clif->additem(sd,i,amount,0);
+
}
if( ( !itemdb->isstackable2(data) || data->flag.force_serial || data->type == IT_CASH) && !item_data->unique_id )
@@ -4636,6 +4774,8 @@ int pc_additem(struct map_session_data *sd,struct item *item_data,int amount,e_l
logs->pick_pc(sd, log_type, amount, &sd->status.inventory[i],sd->inventory_data[i]);
+ achievement->validate_item_get(sd, sd->status.inventory[i].nameid, sd->status.inventory[i].amount); // Achievements [Smokexyz/Hercules]
+
sd->weight += w;
clif->updatestatus(sd,SP_WEIGHT);
//Auto-equip
@@ -4652,6 +4792,7 @@ int pc_additem(struct map_session_data *sd,struct item *item_data,int amount,e_l
pc->inventory_rental_add(sd, seconds);
}
}
+ quest->questinfo_refresh(sd);
return 0;
}
@@ -4667,10 +4808,10 @@ int pc_additem(struct map_session_data *sd,struct item *item_data,int amount,e_l
* 0 = success
* 1 = invalid itemid or negative amount
*------------------------------------------*/
-int pc_delitem(struct map_session_data *sd,int n,int amount,int type, short reason, e_log_pick_type log_type)
+static int pc_delitem(struct map_session_data *sd, int n, int amount, int type, short reason, e_log_pick_type log_type)
{
nullpo_retr(1, sd);
- Assert_retr(1, n >= 0 && n < MAX_INVENTORY);
+ Assert_retr(1, n >= 0 && n < sd->status.inventorySize);
if(sd->status.inventory[n].nameid==0 || amount <= 0 || sd->status.inventory[n].amount<amount || sd->inventory_data[n] == NULL)
return 1;
@@ -4689,6 +4830,7 @@ int pc_delitem(struct map_session_data *sd,int n,int amount,int type, short reas
clif->delitem(sd,n,amount,reason);
if(!(type&2))
clif->updatestatus(sd,SP_WEIGHT);
+ quest->questinfo_refresh(sd);
return 0;
}
@@ -4699,11 +4841,11 @@ int pc_delitem(struct map_session_data *sd,int n,int amount,int type, short reas
* 0 = fail
* 1 = success
*------------------------------------------*/
-int pc_dropitem(struct map_session_data *sd,int n,int amount)
+static int pc_dropitem(struct map_session_data *sd, int n, int amount)
{
nullpo_retr(1, sd);
- if(n < 0 || n >= MAX_INVENTORY)
+ if(n < 0 || n >= sd->status.inventorySize)
return 0;
if(amount <= 0)
@@ -4728,7 +4870,7 @@ int pc_dropitem(struct map_session_data *sd,int n,int amount)
return 0;
}
- if (!map->addflooritem(&sd->bl, &sd->status.inventory[n], amount, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 2))
+ if (!map->addflooritem(&sd->bl, &sd->status.inventory[n], amount, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 2, false))
return 0;
pc->delitem(sd, n, amount, 1, DELITEM_NORMAL, LOG_TYPE_PICKDROP_PLAYER);
@@ -4742,7 +4884,7 @@ int pc_dropitem(struct map_session_data *sd,int n,int amount)
* 0 = fail
* 1 = success
*------------------------------------------*/
-int pc_takeitem(struct map_session_data *sd,struct flooritem_data *fitem)
+static int pc_takeitem(struct map_session_data *sd, struct flooritem_data *fitem)
{
int flag=0;
int64 tick = timer->gettick();
@@ -4808,13 +4950,13 @@ int pc_takeitem(struct map_session_data *sd,struct flooritem_data *fitem)
* 0 = no
* 1 = yes
*------------------------------------------*/
-int pc_isUseitem(struct map_session_data *sd,int n)
+static int pc_isUseitem(struct map_session_data *sd, int n)
{
struct item_data *item;
int nameid;
nullpo_ret(sd);
- Assert_ret(n >= 0 && n < MAX_INVENTORY);
+ Assert_ret(n >= 0 && n < sd->status.inventorySize);
item = sd->inventory_data[n];
nameid = sd->status.inventory[n].nameid;
@@ -4828,33 +4970,73 @@ int pc_isUseitem(struct map_session_data *sd,int n)
return 0;
if ((item->item_usage.flag&INR_SITTING) && (pc_issit(sd) == 1) && (pc_get_group_level(sd) < item->item_usage.override)) {
- clif->msgtable(sd, MSG_ITEM_NEED_STANDING);
+ clif->msgtable(sd, MSG_CANT_USE_WHEN_SITDOWN);
//clif->messagecolor_self(sd->fd, COLOR_WHITE, msg_txt(1474));
return 0; // You cannot use this item while sitting.
}
- if (sd->state.storage_flag != STORAGE_FLAG_CLOSED && item->type != IT_CASH) {
- clif->messagecolor_self(sd->fd, COLOR_RED, msg_sd(sd,1475));
- return 0; // You cannot use this item while storage is open.
- }
-
switch( nameid ) { // TODO: Is there no better way to handle this, other than hardcoding item IDs?
case ITEMID_ANODYNE:
- if( map_flag_gvg2(sd->bl.m) )
- return 0;
- /* Fall through */
- case ITEMID_ALOEBERA:
- if( pc_issit(sd) )
+ if (map_flag_gvg2(sd->bl.m)) {
+#if PACKETVER >= 20080311
+ clif->skill_mapinfomessage(sd, 3);
+#else
+ clif->messagecolor_self(sd->fd, COLOR_CYAN, msg_sd(sd, 51));
+#endif
return 0;
+ }
break;
+
+ case ITEMID_GIANT_FLY_WING: {
+ struct party_data *p;
+
+ if (!sd->status.party_id) {
+#if PACKETVER >= 20061030
+ clif->msgtable(sd, MSG_CANNOT_PARTYCALL);
+#endif
+ break;
+ }
+
+ if ((p = party->search(sd->status.party_id)) != NULL) {
+ int i;
+ int16 m;
+
+ ARR_FIND(0, MAX_PARTY, i, p->data[i].sd == sd);
+
+ if (i == MAX_PARTY || !p->party.member[i].leader) {
+#if PACKETVER >= 20061030
+ clif->msgtable(sd, MSG_CANNOT_PARTYCALL);
+#endif
+ break;
+ }
+
+ m = sd->bl.m;
+
+ ARR_FIND(0, MAX_PARTY, i, p->data[i].sd && p->data[i].sd != sd && p->data[i].sd->bl.m == m);
+
+ if (i == MAX_PARTY || pc_isdead(p->data[i].sd)) {
+#if PACKETVER >= 20061030
+ clif->msgtable(sd, MSG_NO_PARTYMEM_ON_THISMAP);
+#endif
+ break;
+ }
+ }
+ }
+ FALLTHROUGH
case ITEMID_WING_OF_FLY:
- case ITEMID_GIANT_FLY_WING:
- if( map->list[sd->bl.m].flag.noteleport || map_flag_gvg2(sd->bl.m) ) {
- clif->skill_mapinfomessage(sd,0);
+ case ITEMID_N_FLY_WING:
+ case ITEMID_C_WING_OF_FLY:
+ if (map->list[sd->bl.m].flag.noteleport || map_flag_gvg2(sd->bl.m)) {
+#if PACKETVER >= 20080311
+ clif->skill_mapinfomessage(sd, 0);
+#else
+ clif->messagecolor_self(sd->fd, COLOR_RED, msg_sd(sd, 49));
+#endif
return 0;
}
/* Fall through */
case ITEMID_WING_OF_BUTTERFLY:
+ case ITEMID_N_BUTTERFLY_WING:
case ITEMID_DUN_TELE_SCROLL1:
case ITEMID_DUN_TELE_SCROLL2:
case ITEMID_WOB_RUNE: // Yellow Butterfly Wing
@@ -4866,34 +5048,27 @@ int pc_isUseitem(struct map_session_data *sd,int n)
clif->message(sd->fd, msg_sd(sd,863)); // "Duel: Can't use this item in duel."
return 0;
}
- if( nameid != ITEMID_WING_OF_FLY && nameid != ITEMID_GIANT_FLY_WING && map->list[sd->bl.m].flag.noreturn )
+ if (nameid != ITEMID_WING_OF_FLY && nameid != ITEMID_GIANT_FLY_WING && map->list[sd->bl.m].flag.noreturn) {
+#if PACKETVER >= 20080311
+ clif->skill_mapinfomessage(sd, 0);
+#else
+ clif->messagecolor_self(sd->fd, COLOR_RED, msg_sd(sd, 49));
+#endif
return 0;
+ }
break;
case ITEMID_BRANCH_OF_DEAD_TREE:
case ITEMID_RED_POUCH_OF_SURPRISE:
case ITEMID_BLOODY_DEAD_BRANCH:
case ITEMID_PORING_BOX:
- 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] )
+ if (map->list[sd->bl.m].flag.nobranch || map_flag_gvg2(sd->bl.m)) {
+#if PACKETVER >= 20080311
+ clif->skill_mapinfomessage(sd, 3);
+#else
+ clif->messagecolor_self(sd->fd, COLOR_CYAN, msg_sd(sd, 51));
+#endif
return 0;
+ }
break;
// Mercenary Items
@@ -4913,28 +5088,23 @@ int pc_isUseitem(struct map_session_data *sd,int n)
break;
case ITEMID_NEURALIZER:
- if( !map->list[sd->bl.m].flag.reset )
+ if (!map->list[sd->bl.m].flag.reset) {
+#if PACKETVER >= 20080311
+ clif->skill_mapinfomessage(sd, 3);
+#else
+ clif->messagecolor_self(sd->fd, COLOR_CYAN, msg_sd(sd, 51));
+#endif
return 0;
+ }
break;
}
if( nameid >= ITEMID_BOW_MERCENARY_SCROLL1 && nameid <= ITEMID_SPEARMERCENARY_SCROLL10 && sd->md != NULL ) // Mercenary Scrolls
return 0;
- /**
- * Only Rune Knights may use runes
- **/
- if (itemdb_is_rune(nameid) && (sd->job & MAPID_THIRDMASK) != MAPID_RUNE_KNIGHT)
- return 0;
- /**
- * Only GCross may use poisons
- **/
- else if (itemdb_is_poison(nameid) && (sd->job & MAPID_THIRDMASK) != MAPID_GUILLOTINE_CROSS)
- return 0;
-
if( item->package || item->group ) {
if (pc_is90overweight(sd)) {
- clif->msgtable(sd, MSG_ITEM_CANT_OBTAIN_WEIGHT);
+ clif->msgtable(sd, MSG_CANT_GET_ITEM_BECAUSE_WEIGHT);
return 0;
}
if (!pc->inventoryblank(sd)) {
@@ -4948,12 +5118,16 @@ int pc_isUseitem(struct map_session_data *sd,int n)
return 0;
//Required level check
if (item->elv && sd->status.base_level < item->elv) {
- clif->msgtable(sd, MSG_ITEM_CANT_USE_LVL);
+#if PACKETVER >= 20100525
+ clif->msgtable(sd, MSG_CANNOT_USE_ITEM_LEVEL);
+#endif
return 0;
}
if (item->elvmax && sd->status.base_level > item->elvmax) {
- clif->msgtable(sd, MSG_ITEM_CANT_USE_LVL);
+#if PACKETVER >= 20100525
+ clif->msgtable(sd, MSG_CANNOT_USE_ITEM_LEVEL);
+#endif
return 0;
}
@@ -4990,7 +5164,7 @@ int pc_isUseitem(struct map_session_data *sd,int n)
break;
}
// Upper third classes
- if ((item->class_upper & ITEMUPPER_THURDUPPER) != 0) {
+ if ((item->class_upper & ITEMUPPER_THIRDUPPER) != 0) {
if ((sd->job & JOBL_THIRD) != 0 && (sd->job & JOBL_UPPER) != 0)
break;
}
@@ -5011,25 +5185,35 @@ int pc_isUseitem(struct map_session_data *sd,int n)
* 0 = fail
* 1 = success
*------------------------------------------*/
-int pc_useitem(struct map_session_data *sd,int n) {
+static int pc_useitem(struct map_session_data *sd, int n)
+{
int64 tick = timer->gettick();
int amount, nameid, i;
bool removeItem = false;
nullpo_ret(sd);
- Assert_ret(n >= 0 && n < MAX_INVENTORY);
+ Assert_ret(n >= 0 && n < sd->status.inventorySize);
- if( sd->npc_id || sd->state.workinprogress&1 ){
- /* TODO: add to clif->messages enum */
-#ifdef RENEWAL
- clif->msgtable(sd, MSG_NPC_WORK_IN_PROGRESS); // TODO look for the client date that has this message.
+ if (sd->npc_id || sd->state.workinprogress & 1) {
+#if PACKETVER >= 20110308
+ clif->msgtable(sd, MSG_BUSY);
+#else
+ clif->messagecolor_self(sd->fd, COLOR_WHITE, msg_sd(sd, 48));
#endif
return 0;
}
+ if (battle_config.storage_use_item == 1 && sd->state.storage_flag != STORAGE_FLAG_CLOSED) {
+ clif->messagecolor_self(sd->fd, COLOR_RED, msg_sd(sd, 1475));
+ return 0; // You cannot use this item while storage is open.
+ }
+
if( sd->status.inventory[n].nameid <= 0 || sd->status.inventory[n].amount <= 0 )
return 0;
+ if (sd->block_action.useitem) // *pcblock script command
+ return 0;
+
if( !pc->isUseitem(sd,n) )
return 0;
@@ -5058,10 +5242,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) */
@@ -5078,15 +5260,21 @@ int pc_useitem(struct map_session_data *sd,int n) {
if( sd->inventory_data[n]->flag.delay_consume && ( sd->ud.skilltimer != INVALID_TIMER /*|| !status->check_skilluse(&sd->bl, &sd->bl, ALL_RESURRECTION, 0)*/ ) )
return 0;
- if( sd->inventory_data[n]->delay > 0 ) {
- ARR_FIND(0, MAX_ITEMDELAYS, i, sd->item_delay[i].nameid == nameid );
- if( i == MAX_ITEMDELAYS ) /* item not found. try first empty now */
- ARR_FIND(0, MAX_ITEMDELAYS, i, !sd->item_delay[i].nameid );
- if( i < MAX_ITEMDELAYS ) {
- if( sd->item_delay[i].nameid ) {// found
- if( DIFF_TICK(sd->item_delay[i].tick, tick) > 0 ) {
- int e_tick = (int)(DIFF_TICK(sd->item_delay[i].tick, tick)/1000);
- clif->msgtable_num(sd, MSG_SECONDS_UNTIL_USE, e_tick + 1); // [%d] seconds left until you can use
+ if (sd->inventory_data[n]->delay > 0) {
+ ARR_FIND(0, MAX_ITEMDELAYS, i, sd->item_delay[i].nameid == nameid);
+ if (i == MAX_ITEMDELAYS) /* item not found. try first empty now */
+ ARR_FIND(0, MAX_ITEMDELAYS, i, sd->item_delay[i].nameid == 0);
+ if (i < MAX_ITEMDELAYS) {
+ if (sd->item_delay[i].nameid != 0) {// found
+ if (DIFF_TICK(sd->item_delay[i].tick, tick) > 0) {
+ int delay_tick = (int)(DIFF_TICK(sd->item_delay[i].tick, tick) / 1000);
+#if PACKETVER >= 20101123
+ clif->msgtable_num(sd, MSG_ITEM_REUSE_LIMIT_SECOND, delay_tick + 1); // [%d] seconds left until you can use
+#else
+ char delay_msg[100];
+ sprintf(delay_msg, msg_sd(sd, 26), delay_tick + 1);
+ clif->messagecolor_self(sd->fd, COLOR_YELLOW, delay_msg); // [%d] seconds left until you can use
+#endif
return 0; // Delay has not expired yet
}
} else {// not yet used item (all slots are initially empty)
@@ -5109,7 +5297,11 @@ int pc_useitem(struct map_session_data *sd,int n) {
/* on restricted maps the item is consumed but the effect is not used */
for(i = 0; i < map->list[sd->bl.m].zone->disabled_items_count; i++) {
if( map->list[sd->bl.m].zone->disabled_items[i] == nameid ) {
- clif->msgtable(sd, MSG_ITEM_CANT_USE_AREA); // This item cannot be used within this area
+#if PACKETVER >= 20080311
+ clif->skill_mapinfomessage(sd, 3);
+#else
+ clif->messagecolor_self(sd->fd, COLOR_CYAN, msg_sd(sd, 50));
+#endif
if( battle_config.item_restricted_consumption_type && sd->status.inventory[n].expire_time == 0 ) {
clif->useitemack(sd,n,sd->status.inventory[n].amount-1,true);
pc->delitem(sd, n, 1, 1, DELITEM_NORMAL, LOG_TYPE_CONSUME);
@@ -5127,6 +5319,10 @@ int pc_useitem(struct map_session_data *sd,int n) {
if(sd->catch_target_class != -1) //Abort pet catching.
sd->catch_target_class = -1;
+ // Removes abracadabra/randomize spell flag for delayed consume items or item doesn't get consumed
+ if (sd->inventory_data[n]->flag.delay_consume)
+ sd->state.abra_flag = 0;
+
amount = sd->status.inventory[n].amount;
//Check if the item is to be consumed immediately [Skotlex]
if (sd->inventory_data[n]->flag.delay_consume || sd->inventory_data[n]->flag.keepafteruse)
@@ -5147,10 +5343,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;
@@ -5166,7 +5360,7 @@ int pc_useitem(struct map_session_data *sd,int n) {
* 0 = success
* 1 = fail
*------------------------------------------*/
-int pc_cart_additem(struct map_session_data *sd,struct item *item_data,int amount,e_log_pick_type log_type)
+static int pc_cart_additem(struct map_session_data *sd, struct item *item_data, int amount, e_log_pick_type log_type)
{
struct item_data *data;
int i,w;
@@ -5235,10 +5429,11 @@ int pc_cart_additem(struct map_session_data *sd,struct item *item_data,int amoun
* 0 = success
* 1 = fail
*------------------------------------------*/
-int pc_cart_delitem(struct map_session_data *sd,int n,int amount,int type,e_log_pick_type log_type) {
+static int pc_cart_delitem(struct map_session_data *sd, int n, int amount, int type, e_log_pick_type log_type)
+{
struct item_data * data;
nullpo_retr(1, sd);
- Assert_retr(1, n >= 0 && n < MAX_INVENTORY);
+ Assert_retr(1, n >= 0 && n < MAX_CART);
if( sd->status.cart[n].nameid == 0 || sd->status.cart[n].amount < amount || !(data = itemdb->exists(sd->status.cart[n].nameid)) )
return 1;
@@ -5265,14 +5460,14 @@ int pc_cart_delitem(struct map_session_data *sd,int n,int amount,int type,e_log_
* 0 = fail
* 1 = succes
*------------------------------------------*/
-int pc_putitemtocart(struct map_session_data *sd,int idx,int amount)
+static int pc_putitemtocart(struct map_session_data *sd, int idx, int amount)
{
struct item *item_data;
int flag;
nullpo_ret(sd);
- if (idx < 0 || idx >= MAX_INVENTORY) //Invalid index check [Skotlex]
+ if (idx < 0 || idx >= sd->status.inventorySize) //Invalid index check [Skotlex]
return 1;
item_data = &sd->status.inventory[idx];
@@ -5292,7 +5487,7 @@ int pc_putitemtocart(struct map_session_data *sd,int idx,int amount)
* -1 = itemid not found or no amount found
* x = remaining itemid on cart after get
*------------------------------------------*/
-int pc_cartitem_amount(struct map_session_data* sd, int idx, int amount)
+static int pc_cartitem_amount(struct map_session_data *sd, int idx, int amount)
{
struct item* item_data;
@@ -5312,7 +5507,7 @@ int pc_cartitem_amount(struct map_session_data* sd, int idx, int amount)
* 0 = player not found or (FIXME) succes (from pc->cart_delitem)
* 1 = failure
*------------------------------------------*/
-int pc_getitemfromcart(struct map_session_data *sd,int idx,int amount)
+static int pc_getitemfromcart(struct map_session_data *sd, int idx, int amount)
{
struct item *item_data;
int flag;
@@ -5333,7 +5528,7 @@ int pc_getitemfromcart(struct map_session_data *sd,int idx,int amount)
return flag;
}
-void pc_bound_clear(struct map_session_data *sd, enum e_item_bound_type type)
+static void pc_bound_clear(struct map_session_data *sd, enum e_item_bound_type type)
{
int i;
@@ -5342,7 +5537,7 @@ void pc_bound_clear(struct map_session_data *sd, enum e_item_bound_type type)
/* both restricted to inventory */
case IBT_PARTY:
case IBT_CHARACTER:
- for( i = 0; i < MAX_INVENTORY; i++ ){
+ for (i = 0; i < sd->status.inventorySize; i++ ) {
if( sd->status.inventory[i].bound == type ) {
pc->delitem(sd, i, sd->status.inventory[i].amount, 0, DELITEM_SKILLUSE, LOG_TYPE_OTHER); // FIXME: is this the correct reason flag?
}
@@ -5354,7 +5549,7 @@ void pc_bound_clear(struct map_session_data *sd, enum e_item_bound_type type)
case IBT_GUILD: {
struct guild_storage *gstor = idb_get(gstorage->db,sd->status.guild_id);
- for( i = 0; i < MAX_INVENTORY; i++ ){
+ for (i = 0; i < sd->status.inventorySize; i++ ) {
if(sd->status.inventory[i].bound == type) {
if( gstor )
gstorage->additem(sd,gstor,&sd->status.inventory[i],sd->status.inventory[i].amount);
@@ -5370,7 +5565,7 @@ void pc_bound_clear(struct map_session_data *sd, enum e_item_bound_type type)
/*==========================================
* Display item stolen msg to player sd
*------------------------------------------*/
-int pc_show_steal(struct block_list *bl,va_list ap)
+static int pc_show_steal(struct block_list *bl, va_list ap)
{
struct map_session_data *sd = NULL, *tsd = NULL;
int itemid;
@@ -5400,7 +5595,7 @@ int pc_show_steal(struct block_list *bl,va_list ap)
* 0 = fail
* 1 = succes
*------------------------------------------*/
-int pc_steal_item(struct map_session_data *sd,struct block_list *bl, uint16 skill_lv)
+static int pc_steal_item(struct map_session_data *sd, struct block_list *bl, uint16 skill_lv)
{
int i,itemid,flag;
int rate;
@@ -5467,13 +5662,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;
}
@@ -5486,7 +5674,7 @@ int pc_steal_item(struct map_session_data *sd,struct block_list *bl, uint16 skil
*
* @return Amount of stolen zeny (0 in case of failure)
*/
-int pc_steal_coin(struct map_session_data *sd, struct block_list *target, uint16 skill_lv)
+static int pc_steal_coin(struct map_session_data *sd, struct block_list *target, uint16 skill_lv)
{
int rate;
struct mob_data *md = BL_CAST(BL_MOB, target);
@@ -5518,7 +5706,8 @@ int pc_steal_coin(struct map_session_data *sd, struct block_list *target, uint16
* 1 - Invalid map index.
* 2 - Map not in this map-server, and failed to locate alternate map-server.
*------------------------------------------*/
-int pc_setpos(struct map_session_data* sd, unsigned short map_index, int x, int y, clr_type clrtype) {
+static int pc_setpos(struct map_session_data *sd, unsigned short map_index, int x, int y, enum clr_type clrtype)
+{
int16 m;
nullpo_ret(sd);
@@ -5601,7 +5790,7 @@ int pc_setpos(struct map_session_data* sd, unsigned short map_index, int x, int
for (i = 0; i < VECTOR_LENGTH(sd->script_queues); i++) {
struct script_queue *queue = script->queue(VECTOR_INDEX(sd->script_queues, i));
if (queue && queue->event_mapchange[0] != '\0') {
- pc->setregstr(sd, script->add_str("@Queue_Destination_Map$"), map->list[m].name);
+ pc->setregstr(sd, script->add_variable("@Queue_Destination_Map$"), map->list[m].name);
npc->event(sd, queue->event_mapchange, 0);
}
}
@@ -5649,8 +5838,11 @@ int pc_setpos(struct map_session_data* sd, unsigned short map_index, int x, int
vending->close(sd);
}
- if (map->list[sd->bl.m].channel) {
- channel->leave(map->list[sd->bl.m].channel,sd);
+ if (sd->mapindex != 0) {
+ // Only if the character is already on a map
+ if (map->list[sd->bl.m].channel) {
+ channel->leave(map->list[sd->bl.m].channel,sd);
+ }
}
}
@@ -5754,7 +5946,8 @@ int pc_setpos(struct map_session_data* sd, unsigned short map_index, int x, int
* 0 = fail or FIXME success (from pc->setpos)
* x(1|2) = fail
*------------------------------------------*/
-int pc_randomwarp(struct map_session_data *sd, clr_type type) {
+static int pc_randomwarp(struct map_session_data *sd, enum clr_type type)
+{
int x,y,i=0;
int16 m;
@@ -5780,7 +5973,8 @@ int pc_randomwarp(struct map_session_data *sd, clr_type type) {
* Records a memo point at sd's current position
* pos - entry to replace, (-1: shift oldest entry out)
*------------------------------------------*/
-int pc_memo(struct map_session_data* sd, int pos) {
+static int pc_memo(struct map_session_data *sd, int pos)
+{
int skill_lv;
nullpo_ret(sd);
@@ -5830,8 +6024,9 @@ int pc_memo(struct map_session_data* sd, int pos) {
/*==========================================
* Return player sd skill_lv learned for given skill
*------------------------------------------*/
-int pc_checkskill(struct map_session_data *sd,uint16 skill_id) {
- uint16 index = 0;
+static int pc_checkskill(struct map_session_data *sd, uint16 skill_id)
+{
+ int index = 0;
if(sd == NULL) return 0;
if( skill_id >= GD_SKILLBASE && skill_id < GD_MAX ) {
struct guild *g;
@@ -5849,9 +6044,11 @@ int pc_checkskill(struct map_session_data *sd,uint16 skill_id) {
return 0;
}
-int pc_checkskill2(struct map_session_data *sd,uint16 index) {
- if(sd == NULL) return 0;
- if(index >= ARRAYLENGTH(sd->status.skill) ) {
+static int pc_checkskill2(struct map_session_data *sd, uint16 index)
+{
+ if (sd == NULL)
+ return 0;
+ if (index >= MAX_SKILL_DB) {
ShowError("pc_checkskill: Invalid skill index %d (char_id=%d).\n", index, sd->status.char_id);
return 0;
}
@@ -5874,7 +6071,7 @@ int pc_checkskill2(struct map_session_data *sd,uint16 index) {
* Return
* 0 - No status found or all done
*------------------------------------------*/
-int pc_checkallowskill(struct map_session_data *sd)
+static int pc_checkallowskill(struct map_session_data *sd)
{
const enum sc_type scw_list[] = {
SC_TWOHANDQUICKEN,
@@ -5914,11 +6111,11 @@ int pc_checkallowskill(struct map_session_data *sd)
status_change_end(&sd->bl, scw_list[i], INVALID_TIMER);
}
- if(sd->sc.data[SC_STRUP] && sd->status.weapon)
+ if(sd->sc.data[SC_STRUP] && sd->weapontype != W_FIST)
// Spurt requires bare hands (feet, in fact xD)
status_change_end(&sd->bl, SC_STRUP, INVALID_TIMER);
- if(sd->status.shield <= 0) { // Skills requiring a shield
+ if (!sd->has_shield) { // Skills requiring a shield
for (i = 0; i < ARRAYLENGTH(scs_list); i++)
if(sd->sc.data[scs_list[i]])
status_change_end(&sd->bl, scs_list[i], INVALID_TIMER);
@@ -5932,7 +6129,7 @@ int pc_checkallowskill(struct map_session_data *sd)
* -1 : mean nothing equiped
* idx : (this index could be used in inventory to found item_data)
*------------------------------------------*/
-int pc_checkequip(struct map_session_data *sd,int pos)
+static int pc_checkequip(struct map_session_data *sd, int pos)
{
int i;
@@ -5950,7 +6147,7 @@ int pc_checkequip(struct map_session_data *sd,int pos)
* Convert's from the client's lame Job ID system
* to the map server's 'makes sense' system. [Skotlex]
*------------------------------------------*/
-int pc_jobid2mapid(int16 class)
+static int pc_jobid2mapid(int16 class)
{
switch (class) {
//Novice And 1-1 Jobs
@@ -6092,7 +6289,7 @@ int pc_jobid2mapid(int16 class)
}
//Reverts the map-style class id to the client-style one.
-int pc_mapid2jobid(uint16 job, int sex)
+static int pc_mapid2jobid(uint16 job, int sex)
{
switch (job) {
//Novice And 1-1 Jobs
@@ -6229,7 +6426,7 @@ int pc_mapid2jobid(uint16 job, int sex)
/*====================================================
* This function return the name of the job (by [Yor])
*----------------------------------------------------*/
-const char *job_name(int class)
+static const char *job_name(int class)
{
switch (class) {
case JOB_NOVICE: // 550
@@ -6458,7 +6655,8 @@ const char *job_name(int class)
}
}
-int pc_check_job_name(const char *name) {
+static int pc_check_job_name(const char *name)
+{
int i, len;
struct {
const char *name;
@@ -6592,7 +6790,8 @@ int pc_check_job_name(const char *name) {
return names[i].id;
}
-int pc_follow_timer(int tid, int64 tick, int id, intptr_t data) {
+static int pc_follow_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data *sd;
struct block_list *tbl;
@@ -6630,7 +6829,7 @@ int pc_follow_timer(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-int pc_stop_following (struct map_session_data *sd)
+static int pc_stop_following(struct map_session_data *sd)
{
nullpo_ret(sd);
@@ -6646,7 +6845,8 @@ int pc_stop_following (struct map_session_data *sd)
return 0;
}
-int pc_follow(struct map_session_data *sd,int target_id) {
+static int pc_follow(struct map_session_data *sd, int target_id)
+{
struct block_list *bl = map->id2bl(target_id);
nullpo_retr(1, sd);
if (bl == NULL /*|| bl->type != BL_PC*/)
@@ -6660,8 +6860,9 @@ int pc_follow(struct map_session_data *sd,int target_id) {
return 0;
}
-int pc_checkbaselevelup(struct map_session_data *sd) {
- unsigned int next = pc->nextbaseexp(sd);
+static int pc_checkbaselevelup(struct map_session_data *sd)
+{
+ uint64 next = pc->nextbaseexp(sd);
nullpo_ret(sd);
if (!next || sd->status.base_exp < next)
@@ -6690,29 +6891,42 @@ int pc_checkbaselevelup(struct map_session_data *sd) {
status_calc_pc(sd,SCO_FORCE);
status_percent_heal(&sd->bl,100,100);
- if ((sd->job & MAPID_UPPERMASK) == MAPID_SUPER_NOVICE) {
- sc_start(NULL,&sd->bl,status->skill2sc(PR_KYRIE),100,1,skill->get_time(PR_KYRIE,1));
- sc_start(NULL,&sd->bl,status->skill2sc(PR_IMPOSITIO),100,1,skill->get_time(PR_IMPOSITIO,1));
- sc_start(NULL,&sd->bl,status->skill2sc(PR_MAGNIFICAT),100,1,skill->get_time(PR_MAGNIFICAT,1));
- sc_start(NULL,&sd->bl,status->skill2sc(PR_GLORIA),100,1,skill->get_time(PR_GLORIA,1));
- sc_start(NULL,&sd->bl,status->skill2sc(PR_SUFFRAGIUM),100,1,skill->get_time(PR_SUFFRAGIUM,1));
- if (sd->state.snovice_dead_flag)
- sd->state.snovice_dead_flag = 0; //Reenable steelbody resurrection on dead.
- } else if ((sd->job & MAPID_BASEMASK) == MAPID_TAEKWON) {
- sc_start(NULL,&sd->bl,status->skill2sc(AL_INCAGI),100,10,600000);
- sc_start(NULL,&sd->bl,status->skill2sc(AL_BLESSING),100,10,600000);
- }
+ pc->checkbaselevelup_sc(sd);
clif->misceffect(&sd->bl,0);
npc->script_event(sd, NPCE_BASELVUP); //LORDALFA - LVLUPEVENT
- if(sd->status.party_id)
+ if (sd->status.party_id)
party->send_levelup(sd);
pc->baselevelchanged(sd);
+
+ quest->questinfo_refresh(sd);
+
+ achievement->validate_stats(sd, SP_BASELEVEL, sd->status.base_level);
+
return 1;
}
-void pc_baselevelchanged(struct map_session_data *sd) {
+static void pc_checkbaselevelup_sc(struct map_session_data *sd)
+{
+ nullpo_retv(sd);
+
+ if ((sd->job & MAPID_UPPERMASK) == MAPID_SUPER_NOVICE) {
+ sc_start(NULL, &sd->bl, status->skill2sc(PR_KYRIE), 100, 1, skill->get_time(PR_KYRIE, 1));
+ sc_start(NULL, &sd->bl, status->skill2sc(PR_IMPOSITIO), 100, 1, skill->get_time(PR_IMPOSITIO, 1));
+ sc_start(NULL, &sd->bl, status->skill2sc(PR_MAGNIFICAT), 100, 1, skill->get_time(PR_MAGNIFICAT, 1));
+ sc_start(NULL, &sd->bl, status->skill2sc(PR_GLORIA), 100, 1, skill->get_time(PR_GLORIA, 1));
+ sc_start(NULL, &sd->bl, status->skill2sc(PR_SUFFRAGIUM), 100, 1, skill->get_time(PR_SUFFRAGIUM, 1));
+ if (sd->state.snovice_dead_flag)
+ sd->state.snovice_dead_flag = 0; //Reenable steelbody resurrection on dead.
+ } else if ((sd->job & MAPID_BASEMASK) == MAPID_TAEKWON) {
+ sc_start(NULL, &sd->bl, status->skill2sc(AL_INCAGI), 100, 10, 600000);
+ sc_start(NULL, &sd->bl, status->skill2sc(AL_BLESSING), 100, 10, 600000);
+ }
+}
+
+static void pc_baselevelchanged(struct map_session_data *sd)
+{
int i;
nullpo_retv(sd);
for( i = 0; i < EQI_MAX; i++ ) {
@@ -6723,9 +6937,9 @@ void pc_baselevelchanged(struct map_session_data *sd) {
}
}
-int pc_checkjoblevelup(struct map_session_data *sd)
+static int pc_checkjoblevelup(struct map_session_data *sd)
{
- unsigned int next = pc->nextjobexp(sd);
+ uint64 next = pc->nextjobexp(sd);
nullpo_ret(sd);
if(!next || sd->status.job_exp < next)
@@ -6752,13 +6966,19 @@ int pc_checkjoblevelup(struct map_session_data *sd)
clif->status_change(&sd->bl,SI_DEVIL1, 1, 0, 0, 0, 1); //Permanent blind effect from SG_DEVIL.
npc->script_event(sd, NPCE_JOBLVUP);
+
+ quest->questinfo_refresh(sd);
+
+ achievement->validate_stats(sd, SP_BASELEVEL, sd->status.job_level);
+
return 1;
}
/**
* Alters EXP based on self bonuses that do not get shared with the party
**/
-void pc_calcexp(struct map_session_data *sd, unsigned int *base_exp, unsigned int *job_exp, struct block_list *src) {
+static void pc_calcexp(struct map_session_data *sd, uint64 *base_exp, uint64 *job_exp, struct block_list *src)
+{
int buff_ratio = 0, buff_job_ratio = 0, race_ratio = 0, pk_ratio = 0;
int64 jexp, bexp;
@@ -6823,8 +7043,8 @@ void pc_calcexp(struct map_session_data *sd, unsigned int *base_exp, unsigned in
bexp += apply_percentrate64(bexp, buff_ratio, 100);
jexp += apply_percentrate64(jexp, buff_ratio + buff_job_ratio, 100);
- *job_exp = (unsigned int)cap_value(jexp, 1, UINT_MAX);
- *base_exp = (unsigned int)cap_value(bexp, 1, UINT_MAX);
+ *job_exp = cap_value(jexp, 1, UINT64_MAX);
+ *base_exp = cap_value(bexp, 1, UINT64_MAX);
}
/**
@@ -6833,9 +7053,10 @@ void pc_calcexp(struct map_session_data *sd, unsigned int *base_exp, unsigned in
* @param is_quest Used to let client know that the EXP was from a quest (clif->displayexp) PACKETVER >= 20091027
* @retval true success
**/
-bool pc_gainexp(struct map_session_data *sd, struct block_list *src, unsigned int base_exp,unsigned int job_exp,bool is_quest) {
- float nextbp=0, nextjp=0;
- unsigned int nextb=0, nextj=0;
+static bool pc_gainexp(struct map_session_data *sd, struct block_list *src, uint64 base_exp, uint64 job_exp, bool is_quest)
+{
+ float nextbp = 0, nextjp = 0;
+ uint64 nextb = 0, nextj = 0;
nullpo_ret(sd);
if (sd->bl.prev == NULL || pc_isdead(sd))
@@ -6851,7 +7072,7 @@ bool pc_gainexp(struct map_session_data *sd, struct block_list *src, unsigned in
pc->calcexp(sd, &base_exp, &job_exp, src);
if (sd->status.guild_id > 0)
- base_exp -= guild->payexp(sd,base_exp);
+ base_exp -= guild->payexp(sd, base_exp);
nextb = pc->nextbaseexp(sd);
nextj = pc->nextjobexp(sd);
@@ -6862,16 +7083,16 @@ bool pc_gainexp(struct map_session_data *sd, struct block_list *src, unsigned in
if (nextj > 0)
nextjp = (float) job_exp / (float) nextj;
- if(battle_config.max_exp_gain_rate) {
+ if (battle_config.max_exp_gain_rate) {
if (nextbp > battle_config.max_exp_gain_rate/1000.) {
//Note that this value should never be greater than the original
//base_exp, therefore no overflow checks are needed. [Skotlex]
- base_exp = (unsigned int)(battle_config.max_exp_gain_rate/1000.*nextb);
+ base_exp = (uint64)(battle_config.max_exp_gain_rate / 1000. * nextb);
if (sd->state.showexp)
nextbp = (float) base_exp / (float) nextb;
}
if (nextjp > battle_config.max_exp_gain_rate/1000.) {
- job_exp = (unsigned int)(battle_config.max_exp_gain_rate/1000.*nextj);
+ job_exp = (uint64)(battle_config.max_exp_gain_rate / 1000. * nextj);
if (sd->state.showexp)
nextjp = (float) job_exp / (float) nextj;
}
@@ -6881,23 +7102,23 @@ bool pc_gainexp(struct map_session_data *sd, struct block_list *src, unsigned in
// Cap exp to the level up requirement of the previous level when you are at max level,
// otherwise cap at UINT_MAX (this is required for some S. Novice bonuses). [Skotlex]
if (base_exp) {
- nextb = nextb?UINT_MAX:pc->thisbaseexp(sd);
- if(sd->status.base_exp > nextb - base_exp)
+ nextb = nextb ? UINT64_MAX : pc->thisbaseexp(sd);
+ if (sd->status.base_exp > nextb - base_exp)
sd->status.base_exp = nextb;
else
sd->status.base_exp += base_exp;
pc->checkbaselevelup(sd);
- clif->updatestatus(sd,SP_BASEEXP);
+ clif->updatestatus(sd, SP_BASEEXP);
}
if (job_exp) {
- nextj = nextj?UINT_MAX:pc->thisjobexp(sd);
- if(sd->status.job_exp > nextj - job_exp)
+ nextj = nextj ? UINT64_MAX : pc->thisjobexp(sd);
+ if (sd->status.job_exp > nextj - job_exp)
sd->status.job_exp = nextj;
else
sd->status.job_exp += job_exp;
pc->checkjoblevelup(sd);
- clif->updatestatus(sd,SP_JOBEXP);
+ clif->updatestatus(sd, SP_JOBEXP);
}
#if PACKETVER >= 20091027
@@ -6910,7 +7131,8 @@ bool pc_gainexp(struct map_session_data *sd, struct block_list *src, unsigned in
if(sd->state.showexp) {
char output[256];
sprintf(output,
- "Experience Gained Base:%u (%.2f%%) Job:%u (%.2f%%)",base_exp,nextbp*(float)100,job_exp,nextjp*(float)100);
+ "Experience Gained Base:%"PRIu64" (%.2f%%) Job:%"PRIu64" (%.2f%%)",
+ base_exp, nextbp * (float)100, job_exp, nextjp * (float)100);
clif_disp_onlyself(sd, output);
}
@@ -6920,14 +7142,18 @@ bool pc_gainexp(struct map_session_data *sd, struct block_list *src, unsigned in
/*==========================================
* Returns max level for this character.
*------------------------------------------*/
-int pc_maxbaselv(const struct map_session_data *sd)
+static int pc_maxbaselv(const struct map_session_data *sd)
{
- return pc->max_level[pc->class2idx(sd->status.class)][0];
+ nullpo_ret(sd);
+
+ return pc->dbs->class_exp_table[pc->class2idx(sd->status.class)][CLASS_EXP_TABLE_BASE]->max_level;
}
-int pc_maxjoblv(const struct map_session_data *sd)
+static int pc_maxjoblv(const struct map_session_data *sd)
{
- return pc->max_level[pc->class2idx(sd->status.class)][1];
+ nullpo_ret(sd);
+
+ return pc->dbs->class_exp_table[pc->class2idx(sd->status.class)][CLASS_EXP_TABLE_JOB]->max_level;
}
/*==========================================
@@ -6935,23 +7161,37 @@ int pc_maxjoblv(const struct map_session_data *sd)
*------------------------------------------*/
//Base exp needed for next level.
-unsigned int pc_nextbaseexp(const struct map_session_data *sd)
+static uint64 pc_nextbaseexp(const struct map_session_data *sd)
{
+ const struct class_exp_group *exp_group = NULL;
+
nullpo_ret(sd);
if (sd->status.base_level >= pc->maxbaselv(sd) || sd->status.base_level <= 0)
return 0;
- return pc->exp_table[pc->class2idx(sd->status.class)][0][sd->status.base_level-1];
+ exp_group = pc->dbs->class_exp_table[pc->class2idx(sd->status.class)][CLASS_EXP_TABLE_BASE];
+
+ nullpo_ret(exp_group);
+
+ return VECTOR_INDEX(exp_group->exp, sd->status.base_level >= exp_group->max_level ? 0 : sd->status.base_level - 1);
}
//Base exp needed for this level.
-unsigned int pc_thisbaseexp(const struct map_session_data *sd)
+static uint64 pc_thisbaseexp(const struct map_session_data *sd)
{
+ const struct class_exp_group *exp_group = NULL;
+
+ nullpo_ret(sd);
+
if (sd->status.base_level > pc->maxbaselv(sd) || sd->status.base_level <= 1)
return 0;
- return pc->exp_table[pc->class2idx(sd->status.class)][0][sd->status.base_level-2];
+ exp_group = pc->dbs->class_exp_table[pc->class2idx(sd->status.class)][CLASS_EXP_TABLE_BASE];
+
+ nullpo_ret(exp_group);
+
+ return VECTOR_INDEX(exp_group->exp, sd->status.base_level - 2);
}
/*==========================================
@@ -6962,25 +7202,39 @@ unsigned int pc_thisbaseexp(const struct map_session_data *sd)
*------------------------------------------*/
//Job exp needed for next level.
-unsigned int pc_nextjobexp(const struct map_session_data *sd)
+static uint64 pc_nextjobexp(const struct map_session_data *sd)
{
+ const struct class_exp_group *exp_group = NULL;
+
nullpo_ret(sd);
if (sd->status.job_level >= pc->maxjoblv(sd) || sd->status.job_level <= 0)
return 0;
- return pc->exp_table[pc->class2idx(sd->status.class)][1][sd->status.job_level-1];
+
+ exp_group = pc->dbs->class_exp_table[pc->class2idx(sd->status.class)][CLASS_EXP_TABLE_JOB];
+
+ nullpo_ret(exp_group);
+
+ return VECTOR_INDEX(exp_group->exp, sd->status.job_level >= exp_group->max_level ? 0 : sd->status.job_level - 1);
}
//Job exp needed for this level.
-unsigned int pc_thisjobexp(const struct map_session_data *sd)
+static uint64 pc_thisjobexp(const struct map_session_data *sd)
{
+ const struct class_exp_group *exp_group = NULL;
+
+ nullpo_ret(sd);
+
if (sd->status.job_level > pc->maxjoblv(sd) || sd->status.job_level <= 1)
return 0;
- return pc->exp_table[pc->class2idx(sd->status.class)][1][sd->status.job_level-2];
+
+ exp_group = pc->dbs->class_exp_table[pc->class2idx(sd->status.class)][CLASS_EXP_TABLE_JOB];
+
+ return VECTOR_INDEX(exp_group->exp, sd->status.job_level - 2);
}
/// Returns the value of the specified stat.
-int pc_getstat(struct map_session_data* sd, int type)
+static int pc_getstat(struct map_session_data *sd, int type)
{
nullpo_retr(-1, sd);
@@ -6998,7 +7252,7 @@ int pc_getstat(struct map_session_data* sd, int type)
/// Sets the specified stat to the specified value.
/// Returns the new value.
-int pc_setstat(struct map_session_data* sd, int type, int val)
+static int pc_setstat(struct map_session_data *sd, int type, int val)
{
nullpo_retr(-1, sd);
@@ -7013,11 +7267,13 @@ int pc_setstat(struct map_session_data* sd, int type, int val)
return -1;
}
+ achievement->validate_stats(sd, type, val); // Achievements [Smokexyz/Hercules]
+
return val;
}
// Calculates the number of status points PC gets when leveling up (from level to level+1)
-int pc_gets_status_point(int level)
+static int pc_gets_status_point(int level)
{
if (battle_config.use_statpoint_table) //Use values from "db/statpoint.txt"
return (pc->statp[level+1] - pc->statp[level]);
@@ -7028,7 +7284,7 @@ int pc_gets_status_point(int level)
/// Returns the number of stat points needed to change the specified stat by val.
/// If val is negative, returns the number of stat points that would be needed to
/// raise the specified stat from (current value - val) to current value.
-int pc_need_status_point(struct map_session_data* sd, int type, int val)
+static int pc_need_status_point(struct map_session_data *sd, int type, int val)
{
int low, high, sp = 0;
@@ -7063,7 +7319,8 @@ int pc_need_status_point(struct map_session_data* sd, int type, int val)
* @param type Stat to verify.
* @return Maximum value the stat could grow by.
*/
-int pc_maxparameterincrease(struct map_session_data* sd, int type) {
+static int pc_maxparameterincrease(struct map_session_data *sd, int type)
+{
int base, final, status_points = sd->status.status_point;
base = final = pc->getstat(sd, type);
@@ -7093,7 +7350,8 @@ int pc_maxparameterincrease(struct map_session_data* sd, int type) {
* @retval true if the stat was increased by any amount.
* @retval false if there were no changes.
*/
-bool pc_statusup(struct map_session_data* sd, int type, int increase) {
+static bool pc_statusup(struct map_session_data *sd, int type, int increase)
+{
int max_increase = 0, current = 0, needed_points = 0, final_value = 0;
nullpo_ret(sd);
@@ -7152,7 +7410,7 @@ bool pc_statusup(struct map_session_data* sd, int type, int increase) {
* @return the stat increase amount.
* @retval 0 if no changes were made.
*/
-int pc_statusup2(struct map_session_data* sd, int type, int val)
+static int pc_statusup2(struct map_session_data *sd, int type, int val)
{
int max, need;
nullpo_ret(sd);
@@ -7187,8 +7445,9 @@ int pc_statusup2(struct map_session_data* sd, int type, int val)
* Update skill_lv for player sd
* Skill point allocation
*------------------------------------------*/
-int pc_skillup(struct map_session_data *sd,uint16 skill_id) {
- uint16 index = 0;
+static int pc_skillup(struct map_session_data *sd, uint16 skill_id)
+{
+ int index = 0;
nullpo_ret(sd);
if( skill_id >= GD_SKILLBASE && skill_id < GD_SKILLBASE+MAX_GUILDSKILL ) {
@@ -7225,13 +7484,18 @@ int pc_skillup(struct map_session_data *sd,uint16 skill_id) {
clif->updatestatus(sd,SP_CARTINFO);
if (!pc_has_permission(sd, PC_PERM_ALL_SKILL)) // may skill everything at any time anyways, and this would cause a huge slowdown
clif->skillinfoblock(sd);
- } else if( battle_config.skillup_limit ){
- if (sd->sktree.second != 0)
- clif->msgtable_num(sd, MSG_SKILL_POINTS_LEFT_JOB1, sd->sktree.second);
- else if (sd->sktree.third != 0)
- clif->msgtable_num(sd, MSG_SKILL_POINTS_LEFT_JOB2, sd->sktree.third);
- else if (pc->calc_skillpoint(sd) < 9) /* TODO: official response? */
+ } else if (battle_config.skillup_limit) {
+ if (sd->sktree.second != 0) {
+#if PACKETVER >= 20090805
+ clif->msgtable_num(sd, MSG_UPGRADESKILLERROR_MORE_FIRSTJOBSKILL, sd->sktree.second);
+#endif
+ } else if (sd->sktree.third != 0) {
+#if PACKETVER >= 20091013
+ clif->msgtable_num(sd, MSG_UPGRADESKILLERROR_MORE_SECONDJOBSKILL, sd->sktree.third);
+#endif
+ } else if (pc->calc_skillpoint(sd) < 9) { /* TODO: official response? */
clif->messagecolor_self(sd->fd, COLOR_RED, "You need the basic skills");
+ }
}
return 0;
}
@@ -7239,13 +7503,13 @@ int pc_skillup(struct map_session_data *sd,uint16 skill_id) {
/*==========================================
* /allskill
*------------------------------------------*/
-int pc_allskillup(struct map_session_data *sd)
+static int pc_allskillup(struct map_session_data *sd)
{
int i;
nullpo_ret(sd);
- for(i=0;i<MAX_SKILL;i++){
+ for (i = 0; i < MAX_SKILL_DB; i++) {
if (sd->status.skill[i].flag != SKILL_FLAG_PERMANENT && sd->status.skill[i].flag != SKILL_FLAG_PERM_GRANTED && sd->status.skill[i].flag != SKILL_FLAG_PLAGIARIZED) {
sd->status.skill[i].lv = (sd->status.skill[i].flag == SKILL_FLAG_TEMPORARY) ? 0 : sd->status.skill[i].flag - SKILL_FLAG_REPLACED_LV_0;
sd->status.skill[i].flag = SKILL_FLAG_PERMANENT;
@@ -7256,7 +7520,7 @@ int pc_allskillup(struct map_session_data *sd)
if (pc_has_permission(sd, PC_PERM_ALL_SKILL)) { //Get ALL skills except npc/guild ones. [Skotlex]
//and except SG_DEVIL [Komurka] and MO_TRIPLEATTACK and RG_SNATCHER [ultramage]
- for(i=0;i<MAX_SKILL;i++){
+ for (i = 0; i < MAX_SKILL_DB; i++) {
switch( skill->dbs->db[i].nameid ) {
case SG_DEVIL:
case MO_TRIPLEATTACK:
@@ -7294,7 +7558,7 @@ int pc_allskillup(struct map_session_data *sd)
/*==========================================
* /resetlvl
*------------------------------------------*/
-int pc_resetlvl(struct map_session_data* sd,int type)
+static int pc_resetlvl(struct map_session_data *sd, int type)
{
int i;
@@ -7382,7 +7646,7 @@ int pc_resetlvl(struct map_session_data* sd,int type)
/*==========================================
* /resetstate
*------------------------------------------*/
-int pc_resetstate(struct map_session_data* sd)
+static int pc_resetstate(struct map_session_data *sd)
{
nullpo_ret(sd);
@@ -7436,7 +7700,7 @@ int pc_resetstate(struct map_session_data* sd)
if( sd->mission_mobid ) { //bugreport:2200
sd->mission_mobid = 0;
sd->mission_count = 0;
- pc_setglobalreg(sd,script->add_str("TK_MISSION_ID"), 0);
+ pc_setglobalreg(sd,script->add_variable("TK_MISSION_ID"), 0);
}
status_calc_pc(sd,SCO_NONE);
@@ -7448,7 +7712,7 @@ int pc_resetstate(struct map_session_data* sd)
* /resetskill
* @param flag: @see enum pc_resetskill_flag
*------------------------------------------*/
-int pc_resetskill(struct map_session_data* sd, int flag)
+static int pc_resetskill(struct map_session_data *sd, int flag)
{
int i, inf2, skill_point=0;
nullpo_ret(sd);
@@ -7496,10 +7760,7 @@ int pc_resetskill(struct map_session_data* sd, int flag)
status_change_end(&sd->bl, SC_SPRITEMABLE, INVALID_TIMER);
}
- for( i = 1; i < MAX_SKILL; i++ ) {
- // FIXME: We're looping on i = [1..MAX_SKILL-1] (which makes sense as index for sd->status.skill[]) but then we're using the
- // same i to access skill->dbs->db[], and especially to check skill_ischangesex(). This is wrong.
- uint16 skill_id = 0;
+ for (i = 1; i < MAX_SKILL_DB; i++) {
int lv = sd->status.skill[i].lv;
if (lv < 1) continue;
@@ -7508,19 +7769,7 @@ int pc_resetskill(struct map_session_data* sd, int flag)
if( inf2&(INF2_WEDDING_SKILL|INF2_SPIRIT_SKILL) ) //Avoid reseting wedding/linker skills.
continue;
- skill_id = skill->dbs->db[i].nameid;
-
- // Don't reset trick dead if not a novice/baby
- if (skill_id == NV_TRICKDEAD && (sd->job & MAPID_UPPERMASK) != MAPID_NOVICE) {
- sd->status.skill[i].lv = 0;
- sd->status.skill[i].flag = 0;
- continue;
- }
-
- // do not reset basic skill
- if (skill_id == NV_BASIC && (sd->job & MAPID_UPPERMASK) != MAPID_NOVICE)
- continue;
- if (skill_id == SU_BASIC_SKILL && (sd->job & MAPID_BASEMASK) != MAPID_SUMMONER)
+ if (pc->resetskill_job(sd, i))
continue;
if( sd->status.skill[i].flag == SKILL_FLAG_PERM_GRANTED )
@@ -7575,10 +7824,34 @@ int pc_resetskill(struct map_session_data* sd, int flag)
return skill_point;
}
+static bool pc_resetskill_job(struct map_session_data *sd, int index)
+{
+ uint16 skill_id;
+
+ nullpo_retr(false, sd);
+ Assert_retr(false, index >= 0 && index < MAX_SKILL_DB);
+
+ skill_id = skill->dbs->db[index].nameid;
+
+ // Don't reset trick dead if not a novice/baby
+ if (skill_id == NV_TRICKDEAD && (sd->job & MAPID_UPPERMASK) != MAPID_NOVICE) {
+ sd->status.skill[index].lv = 0;
+ sd->status.skill[index].flag = 0;
+ return true;
+ }
+
+ // do not reset basic skill
+ if (skill_id == NV_BASIC && (sd->job & MAPID_UPPERMASK) != MAPID_NOVICE)
+ return true;
+ if (skill_id == SU_BASIC_SKILL && (sd->job & MAPID_BASEMASK) != MAPID_SUMMONER)
+ return true;
+ return false;
+}
+
/*==========================================
* /resetfeel [Komurka]
*------------------------------------------*/
-int pc_resetfeel(struct map_session_data* sd)
+static int pc_resetfeel(struct map_session_data *sd)
{
int i;
nullpo_ret(sd);
@@ -7587,25 +7860,25 @@ int pc_resetfeel(struct map_session_data* sd)
{
sd->feel_map[i].m = -1;
sd->feel_map[i].index = 0;
- pc_setglobalreg(sd,script->add_str(pc->sg_info[i].feel_var),0);
+ pc_setglobalreg(sd,script->add_variable(pc->sg_info[i].feel_var),0);
}
return 0;
}
-int pc_resethate(struct map_session_data* sd)
+static int pc_resethate(struct map_session_data *sd)
{
int i;
nullpo_ret(sd);
for (i = 0; i < MAX_PC_FEELHATE; i++) {
sd->hate_mob[i] = -1;
- pc_setglobalreg(sd,script->add_str(pc->sg_info[i].hate_var),0);
+ pc_setglobalreg(sd,script->add_variable(pc->sg_info[i].hate_var),0);
}
return 0;
}
-int pc_skillatk_bonus(struct map_session_data *sd, uint16 skill_id)
+static int pc_skillatk_bonus(struct map_session_data *sd, uint16 skill_id)
{
int i, bonus = 0;
nullpo_ret(sd);
@@ -7619,28 +7892,49 @@ int pc_skillatk_bonus(struct map_session_data *sd, uint16 skill_id)
return bonus;
}
-int pc_skillheal_bonus(struct map_session_data *sd, uint16 skill_id) {
+static int pc_skillheal_bonus(struct map_session_data *sd, uint16 skill_id)
+{
int i, bonus = sd->bonus.add_heal_rate;
- if( bonus ) {
- switch( skill_id ) {
- case AL_HEAL: if( !(battle_config.skill_add_heal_rate&1) ) bonus = 0; break;
- case PR_SANCTUARY: if( !(battle_config.skill_add_heal_rate&2) ) bonus = 0; break;
- case AM_POTIONPITCHER: if( !(battle_config.skill_add_heal_rate&4) ) bonus = 0; break;
- case CR_SLIMPITCHER: if( !(battle_config.skill_add_heal_rate&8) ) bonus = 0; break;
- case BA_APPLEIDUN: if( !(battle_config.skill_add_heal_rate&16)) bonus = 0; break;
+ if (bonus) {
+ switch (skill_id) {
+ case AL_HEAL:
+ if ((battle_config.skill_add_heal_rate & 1) == 0)
+ bonus = 0;
+ break;
+ case PR_SANCTUARY:
+ if ((battle_config.skill_add_heal_rate & 2) == 0)
+ bonus = 0;
+ break;
+ case AM_POTIONPITCHER:
+ if ((battle_config.skill_add_heal_rate & 4) == 0)
+ bonus = 0;
+ break;
+ case CR_SLIMPITCHER:
+ if ((battle_config.skill_add_heal_rate & 8) == 0)
+ bonus = 0;
+ break;
+ case BA_APPLEIDUN:
+ if ((battle_config.skill_add_heal_rate & 16) == 0)
+ bonus = 0;
+ break;
+ case AB_HIGHNESSHEAL:
+ if ((battle_config.skill_add_heal_rate & 32) == 0)
+ bonus = 0;
+ break;
}
}
ARR_FIND(0, ARRAYLENGTH(sd->skillheal), i, sd->skillheal[i].id == skill_id);
- if( i < ARRAYLENGTH(sd->skillheal) )
+ if (i < ARRAYLENGTH(sd->skillheal))
bonus += sd->skillheal[i].val;
return bonus;
}
-int pc_skillheal2_bonus(struct map_session_data *sd, uint16 skill_id) {
+static int pc_skillheal2_bonus(struct map_session_data *sd, uint16 skill_id)
+{
int i, bonus = sd->bonus.add_heal2_rate;
ARR_FIND(0, ARRAYLENGTH(sd->skillheal2), i, sd->skillheal2[i].id == skill_id);
@@ -7651,7 +7945,7 @@ int pc_skillheal2_bonus(struct map_session_data *sd, uint16 skill_id) {
return bonus;
}
-void pc_respawn(struct map_session_data* sd, clr_type clrtype)
+static void pc_respawn(struct map_session_data *sd, enum clr_type clrtype)
{
if( !pc_isdead(sd) )
return; // not applicable
@@ -7664,7 +7958,8 @@ void pc_respawn(struct map_session_data* sd, clr_type clrtype)
clif->resurrection(&sd->bl, 1); //If warping fails, send a normal stand up packet.
}
-int pc_respawn_timer(int tid, int64 tick, int id, intptr_t data) {
+static int pc_respawn_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data *sd = map->id2sd(id);
if( sd != NULL )
{
@@ -7678,7 +7973,7 @@ int pc_respawn_timer(int tid, int64 tick, int id, intptr_t data) {
/*==========================================
* Invoked when a player has received damage
*------------------------------------------*/
-void pc_damage(struct map_session_data *sd,struct block_list *src,unsigned int hp, unsigned int sp)
+static void pc_damage(struct map_session_data *sd, struct block_list *src, unsigned int hp, unsigned int sp)
{
if (sp) clif->updatestatus(sd,SP_SP);
if (hp) clif->updatestatus(sd,SP_HP);
@@ -7703,13 +7998,23 @@ void pc_damage(struct map_session_data *sd,struct block_list *src,unsigned int h
if( sd->status.ele_id > 0 )
elemental->set_target(sd,src);
- sd->canlog_tick = timer->gettick();
+ if (battle_config.prevent_logout_trigger & PLT_DAMAGE)
+ sd->canlog_tick = timer->gettick();
+
+ // Achievements [Smokexyz/Hercules]
+ if (src != NULL) {
+ if (src->type == BL_PC)
+ achievement->validate_pc_damage(BL_UCAST(BL_PC, src), sd, hp);
+ else if (src->type == BL_MOB)
+ achievement->validate_mob_damage(sd, hp, true);
+ }
}
/*==========================================
* Invoked when a player has negative current hp
*------------------------------------------*/
-int pc_dead(struct map_session_data *sd,struct block_list *src) {
+static int pc_dead(struct map_session_data *sd, struct block_list *src)
+{
int i=0,j=0;
int64 tick = timer->gettick();
@@ -7758,7 +8063,7 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) {
if (sd->npc_id && sd->st && sd->st->state != RUN)
npc->event_dequeue(sd);
- pc_setglobalreg(sd,script->add_str("PC_DIE_COUNTER"),sd->die_counter+1);
+ pc_setglobalreg(sd,script->add_variable("PC_DIE_COUNTER"),sd->die_counter+1);
pc->setparam(sd, SP_KILLERRID, src?src->id:0);
if( sd->bg_id ) {/* TODO: purge when bgqueue is deemed ok */
@@ -7798,6 +8103,9 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) {
}
pc_setdead(sd);
+
+ clif->party_dead_notification(sd);
+
//Reset menu skills/item skills
if (sd->skillitem)
sd->skillitem = sd->skillitemlv = 0;
@@ -7853,6 +8161,8 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) {
pc->setparam(ssd, SP_KILLEDRID, sd->bl.id);
npc->script_event(ssd, NPCE_KILLPC);
+ achievement->validate_pc_kill(ssd, sd); // Achievements [Smokexyz/Hercules]
+
if (battle_config.pk_mode&2) {
ssd->status.manner -= 5;
if(ssd->status.manner < 0)
@@ -7894,14 +8204,14 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) {
item_tmp.card[1]=0;
item_tmp.card[2]=GetWord(sd->status.char_id,0); // CharId
item_tmp.card[3]=GetWord(sd->status.char_id,1);
- map->addflooritem(&sd->bl, &item_tmp, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0);
+ map->addflooritem(&sd->bl, &item_tmp, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false);
}
// activate Steel body if a super novice dies at 99+% exp [celest]
if ((sd->job & MAPID_UPPERMASK) == MAPID_SUPER_NOVICE && !sd->state.snovice_dead_flag) {
- unsigned int next = pc->nextbaseexp(sd);
+ uint64 next = pc->nextbaseexp(sd);
if( next == 0 ) next = pc->thisbaseexp(sd);
- if( get_percentage(sd->status.base_exp,next) >= 99 ) {
+ if (get_percentage64(sd->status.base_exp, next) >= 99) {
sd->state.snovice_dead_flag = 1;
pc->setstand(sd);
status_percent_heal(&sd->bl, 100, 100);
@@ -7916,8 +8226,8 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) {
}
// changed penalty options, added death by player if pk_mode [Valaris]
- if( battle_config.death_penalty_type
- && (sd->job & MAPID_UPPERMASK) != MAPID_NOVICE // only novices will receive no penalty
+ if (battle_config.death_penalty_type
+ && pc->isDeathPenaltyJob(sd->job)
&& !map->list[sd->bl.m].flag.noexppenalty && !map_flag_gvg2(sd->bl.m)
&& !sd->sc.data[SC_BABY] && !sd->sc.data[SC_CASH_DEATHPENALTY]
) {
@@ -7980,15 +8290,15 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) {
if(id == 0)
continue;
if(id == -1){
- int eq_num=0,eq_n[MAX_INVENTORY],k;
+ int eq_num = 0, eq_n[MAX_INVENTORY], k;
memset(eq_n,0,sizeof(eq_n));
- for(i=0;i<MAX_INVENTORY;i++){
+ for(i = 0; i < sd->status.inventorySize; i++) {
if( (type == 1 && !sd->status.inventory[i].equip)
|| (type == 2 && sd->status.inventory[i].equip)
|| type == 3)
{
- ARR_FIND( 0, MAX_INVENTORY, k, eq_n[k] <= 0 );
- if( k < MAX_INVENTORY )
+ ARR_FIND(0, sd->status.inventorySize, k, eq_n[k] <= 0);
+ if (k < sd->status.inventorySize)
eq_n[k] = i;
eq_num++;
@@ -8004,7 +8314,7 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) {
}
}
else if(id > 0){
- for(i=0;i<MAX_INVENTORY;i++){
+ for( i = 0; i < sd->status.inventorySize; i++) {
if(sd->status.inventory[i].nameid == id
&& rnd()%10000 < per
&& ((type == 1 && !sd->status.inventory[i].equip)
@@ -8065,7 +8375,13 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) {
return 1;
}
-void pc_revive(struct map_session_data *sd,unsigned int hp, unsigned int sp) {
+static bool pc_isDeathPenaltyJob(uint16 job)
+{
+ return (job & MAPID_UPPERMASK) != MAPID_NOVICE; // only novices will receive no penalty
+}
+
+static void pc_revive(struct map_session_data *sd, unsigned int hp, unsigned int sp)
+{
nullpo_retv(sd);
if(hp) clif->updatestatus(sd,SP_HP);
if(sp) clif->updatestatus(sd,SP_SP);
@@ -8086,9 +8402,9 @@ void pc_revive(struct map_session_data *sd,unsigned int hp, unsigned int sp) {
/*==========================================
* script reading pc status registry
*------------------------------------------*/
-int pc_readparam(const struct map_session_data *sd, int type)
+static int64 pc_readparam(const struct map_session_data *sd, int type)
{
- int val = 0;
+ int64 val = 0;
nullpo_ret(sd);
@@ -8096,6 +8412,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;
@@ -8238,8 +8555,9 @@ int pc_readparam(const struct map_session_data *sd, int type)
/*==========================================
* script set pc status registry
*------------------------------------------*/
-int pc_setparam(struct map_session_data *sd,int type,int val)
+static int pc_setparam(struct map_session_data *sd, int type, int64 val)
{
+ int delta;
nullpo_ret(sd);
switch(type){
@@ -8252,7 +8570,7 @@ int pc_setparam(struct map_session_data *sd,int type,int val)
stat += pc->gets_status_point(sd->status.base_level + i);
sd->status.status_point += stat;
}
- sd->status.base_level = val;
+ sd->status.base_level = (int32)val;
sd->status.base_exp = 0;
// clif->updatestatus(sd, SP_BASELEVEL); // Gets updated at the bottom
clif->updatestatus(sd, SP_NEXTBASEEXP);
@@ -8268,10 +8586,10 @@ int pc_setparam(struct map_session_data *sd,int type,int val)
if (val >= sd->status.job_level) {
if (val > pc->maxjoblv(sd))
val = pc->maxjoblv(sd);
- sd->status.skill_point += val - sd->status.job_level;
+ sd->status.skill_point += (int)val - sd->status.job_level;
clif->updatestatus(sd, SP_SKILLPOINT);
}
- sd->status.job_level = val;
+ sd->status.job_level = (int32)val;
sd->status.job_exp = 0;
// clif->updatestatus(sd, SP_JOBLEVEL); // Gets updated at the bottom
clif->updatestatus(sd, SP_NEXTJOBEXP);
@@ -8279,17 +8597,30 @@ int pc_setparam(struct map_session_data *sd,int type,int val)
status_calc_pc(sd, SCO_FORCE);
break;
case SP_SKILLPOINT:
- sd->status.skill_point = val;
+ sd->status.skill_point = (int32)val;
break;
case SP_STATUSPOINT:
- sd->status.status_point = val;
+ sd->status.status_point = (int32)val;
break;
case SP_ZENY:
if( val < 0 )
return 0;// can't set negative zeny
- logs->zeny(sd, LOG_TYPE_SCRIPT, sd, -(sd->status.zeny - cap_value(val, 0, MAX_ZENY)));
- sd->status.zeny = cap_value(val, 0, MAX_ZENY);
+ logs->zeny(sd, LOG_TYPE_SCRIPT, sd, -(sd->status.zeny - cap_value((int32)val, 0, MAX_ZENY)));
+ sd->status.zeny = cap_value((int32)val, 0, MAX_ZENY);
break;
+ case SP_BANKVAULT:
+ val = cap_value(val, 0, MAX_BANK_ZENY);
+ delta = ((int32)val - sd->status.bank_vault);
+ sd->status.bank_vault = (int32)val;
+ if (map->save_settings & 256) {
+ chrif->save(sd, 0); // send to char server
+ }
+ 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;
@@ -8306,16 +8637,16 @@ int pc_setparam(struct map_session_data *sd,int type,int val)
sd->status.sex = val ? SEX_MALE : SEX_FEMALE;
break;
case SP_WEIGHT:
- sd->weight = val;
+ sd->weight = (int32)val;
break;
case SP_MAXWEIGHT:
- sd->max_weight = val;
+ sd->max_weight = (int32)val;
break;
case SP_HP:
- sd->battle_status.hp = cap_value(val, 1, (int)sd->battle_status.max_hp);
+ sd->battle_status.hp = cap_value((int32)val, 1, (int)sd->battle_status.max_hp);
break;
case SP_MAXHP:
- sd->battle_status.max_hp = cap_value(val, 1, battle_config.max_hp);
+ sd->battle_status.max_hp = cap_value((int32)val, 1, battle_config.max_hp);
if( sd->battle_status.max_hp < sd->battle_status.hp )
{
@@ -8324,10 +8655,10 @@ int pc_setparam(struct map_session_data *sd,int type,int val)
}
break;
case SP_SP:
- sd->battle_status.sp = cap_value(val, 0, (int)sd->battle_status.max_sp);
+ sd->battle_status.sp = cap_value((int32)val, 0, (int)sd->battle_status.max_sp);
break;
case SP_MAXSP:
- sd->battle_status.max_sp = cap_value(val, 1, battle_config.max_sp);
+ sd->battle_status.max_sp = cap_value((int32)val, 1, battle_config.max_sp);
if( sd->battle_status.max_sp < sd->battle_status.sp )
{
@@ -8336,28 +8667,28 @@ int pc_setparam(struct map_session_data *sd,int type,int val)
}
break;
case SP_STR:
- sd->status.str = cap_value(val, 1, pc_maxparameter(sd));
+ sd->status.str = cap_value((int)val, 1, pc_maxparameter(sd));
break;
case SP_AGI:
- sd->status.agi = cap_value(val, 1, pc_maxparameter(sd));
+ sd->status.agi = cap_value((int)val, 1, pc_maxparameter(sd));
break;
case SP_VIT:
- sd->status.vit = cap_value(val, 1, pc_maxparameter(sd));
+ sd->status.vit = cap_value((int)val, 1, pc_maxparameter(sd));
break;
case SP_INT:
- sd->status.int_ = cap_value(val, 1, pc_maxparameter(sd));
+ sd->status.int_ = cap_value((int)val, 1, pc_maxparameter(sd));
break;
case SP_DEX:
- sd->status.dex = cap_value(val, 1, pc_maxparameter(sd));
+ sd->status.dex = cap_value((int)val, 1, pc_maxparameter(sd));
break;
case SP_LUK:
- sd->status.luk = cap_value(val, 1, pc_maxparameter(sd));
+ sd->status.luk = cap_value((int)val, 1, pc_maxparameter(sd));
break;
case SP_KARMA:
- sd->status.karma = val;
+ sd->status.karma = (int)val;
break;
case SP_MANNER:
- sd->status.manner = val;
+ sd->status.manner = (int)val;
if( val < 0 )
sc_start(NULL, &sd->bl, SC_NOCHAT, 100, 0, 0);
else {
@@ -8366,28 +8697,28 @@ int pc_setparam(struct map_session_data *sd,int type,int val)
}
return 1; // status_change_start/status_change_end already sends packets warning the client
case SP_FAME:
- sd->status.fame = val;
+ sd->status.fame = (int32)val;
break;
case SP_KILLERRID:
- sd->killerrid = val;
+ sd->killerrid = (int32)val;
return 1;
case SP_KILLEDRID:
- sd->killedrid = val;
+ sd->killedrid = (int32)val;
return 1;
case SP_SLOTCHANGE:
- sd->status.slotchange = val;
+ sd->status.slotchange = (int32)val;
return 1;
case SP_CHARRENAME:
- sd->status.rename = val;
+ sd->status.rename = (int32)val;
return 1;
case SP_MOD_EXP:
- sd->status.mod_exp = val;
+ sd->status.mod_exp = (int32)val;
return 1;
case SP_MOD_DROP:
- sd->status.mod_drop = val;
+ sd->status.mod_drop = (int32)val;
return 1;
case SP_MOD_DEATH:
- sd->status.mod_death = val;
+ sd->status.mod_death = (int32)val;
return 1;
default:
ShowError("pc_setparam: Attempted to set unknown parameter '%d'.\n", type);
@@ -8401,7 +8732,7 @@ int pc_setparam(struct map_session_data *sd,int type,int val)
/*==========================================
* HP/SP Healing. If flag is passed, the heal type is through clif->heal, otherwise update status.
*------------------------------------------*/
-void pc_heal(struct map_session_data *sd,unsigned int hp,unsigned int sp, int type)
+static void pc_heal(struct map_session_data *sd, unsigned int hp, unsigned int sp, int type)
{
nullpo_retv(sd);
if (type) {
@@ -8423,7 +8754,7 @@ void pc_heal(struct map_session_data *sd,unsigned int hp,unsigned int sp, int ty
* Heal player hp and/or sp linearly.
* Calculate bonus by status.
*------------------------------------------*/
-int pc_itemheal(struct map_session_data *sd,int itemid, int hp,int sp)
+static int pc_itemheal(struct map_session_data *sd, int itemid, int hp, int sp)
{
int bonus, tmp;
@@ -8499,14 +8830,14 @@ int pc_itemheal(struct map_session_data *sd,int itemid, int hp,int sp)
}
}
- return status->heal(&sd->bl, hp, sp, 1);
+ return status->heal(&sd->bl, hp, sp, STATUS_HEAL_FORCED);
}
/*==========================================
* HP/SP Recovery
* Heal player hp nad/or sp by rate
*------------------------------------------*/
-int pc_percentheal(struct map_session_data *sd,int hp,int sp)
+static int pc_percentheal(struct map_session_data *sd, int hp, int sp)
{
nullpo_ret(sd);
@@ -8541,7 +8872,7 @@ int pc_percentheal(struct map_session_data *sd,int hp,int sp)
return 0;
}
-int jobchange_killclone(struct block_list *bl, va_list ap)
+static int jobchange_killclone(struct block_list *bl, va_list ap)
{
struct mob_data *md = NULL;
int flag = va_arg(ap, int);
@@ -8559,7 +8890,7 @@ int jobchange_killclone(struct block_list *bl, va_list ap)
* Called when player changes job
* Rewrote to make it tidider [Celest]
*------------------------------------------*/
-int pc_jobchange(struct map_session_data *sd, int class, int upper)
+static int pc_jobchange(struct map_session_data *sd, int class, int upper)
{
int i, fame_flag=0;
int job, idx = 0;
@@ -8593,11 +8924,11 @@ int pc_jobchange(struct map_session_data *sd, int class, int upper)
if ((job & JOBL_2) != 0 && (sd->job & JOBL_2) == 0 && (job & MAPID_UPPERMASK) != MAPID_SUPER_NOVICE) {
// changing from 1st to 2nd job
sd->change_level_2nd = sd->status.job_level;
- pc_setglobalreg(sd, script->add_str("jobchange_level"), sd->change_level_2nd);
+ pc_setglobalreg(sd, script->add_variable("jobchange_level"), sd->change_level_2nd);
} else if((job & JOBL_THIRD) != 0 && (sd->job & JOBL_THIRD) == 0) {
// changing from 2nd to 3rd job
sd->change_level_3rd = sd->status.job_level;
- pc_setglobalreg(sd, script->add_str("jobchange_level_3rd"), sd->change_level_3rd);
+ pc_setglobalreg(sd, script->add_variable("jobchange_level_3rd"), sd->change_level_3rd);
}
if(sd->cloneskill_id) {
@@ -8609,8 +8940,8 @@ int pc_jobchange(struct map_session_data *sd, int class, int upper)
clif->deleteskill(sd,sd->cloneskill_id);
}
sd->cloneskill_id = 0;
- pc_setglobalreg(sd, script->add_str("CLONE_SKILL"), 0);
- pc_setglobalreg(sd, script->add_str("CLONE_SKILL_LV"), 0);
+ pc_setglobalreg(sd, script->add_variable("CLONE_SKILL"), 0);
+ pc_setglobalreg(sd, script->add_variable("CLONE_SKILL_LV"), 0);
}
if(sd->reproduceskill_id) {
@@ -8622,8 +8953,8 @@ int pc_jobchange(struct map_session_data *sd, int class, int upper)
clif->deleteskill(sd,sd->reproduceskill_id);
}
sd->reproduceskill_id = 0;
- pc_setglobalreg(sd, script->add_str("REPRODUCE_SKILL"),0);
- pc_setglobalreg(sd, script->add_str("REPRODUCE_SKILL_LV"),0);
+ pc_setglobalreg(sd, script->add_variable("REPRODUCE_SKILL"),0);
+ pc_setglobalreg(sd, script->add_variable("REPRODUCE_SKILL_LV"),0);
}
if ((job & MAPID_UPPERMASK) != (sd->job & MAPID_UPPERMASK)) { //Things to remove when changing class tree.
@@ -8731,6 +9062,7 @@ int pc_jobchange(struct map_session_data *sd, int class, int upper)
status_calc_pc(sd,SCO_FORCE);
pc->checkallowskill(sd);
pc->equiplookall(sd);
+ pc->update_job_and_level(sd);
//if you were previously famous, not anymore.
if (fame_flag != 0) {
@@ -8747,6 +9079,9 @@ int pc_jobchange(struct map_session_data *sd, int class, int upper)
break;
}
}
+ quest->questinfo_refresh(sd);
+
+ achievement->validate_jobchange(sd); // Achievements [Smokexyz/Hercules]
return 0;
}
@@ -8754,16 +9089,16 @@ int pc_jobchange(struct map_session_data *sd, int class, int upper)
/*==========================================
* Tell client player sd has change equipement
*------------------------------------------*/
-int pc_equiplookall(struct map_session_data *sd)
+static int pc_equiplookall(struct map_session_data *sd)
{
nullpo_ret(sd);
clif->changelook(&sd->bl,LOOK_WEAPON,0);
clif->changelook(&sd->bl,LOOK_SHOES,0);
- clif->changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom);
- clif->changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top);
- clif->changelook(&sd->bl,LOOK_HEAD_MID,sd->status.head_mid);
- clif->changelook(&sd->bl,LOOK_ROBE, sd->status.robe);
+ clif->changelook(&sd->bl, LOOK_HEAD_BOTTOM, sd->status.look.head_bottom);
+ clif->changelook(&sd->bl, LOOK_HEAD_TOP, sd->status.look.head_top);
+ clif->changelook(&sd->bl, LOOK_HEAD_MID, sd->status.look.head_mid);
+ clif->changelook(&sd->bl, LOOK_ROBE, sd->status.look.robe);
return 0;
}
@@ -8771,7 +9106,7 @@ int pc_equiplookall(struct map_session_data *sd)
/*==========================================
* Tell client player sd has change look (hair,equip...)
*------------------------------------------*/
-int pc_changelook(struct map_session_data *sd,int type,int val)
+static int pc_changelook(struct map_session_data *sd, int type, int val)
{
nullpo_ret(sd);
@@ -8779,7 +9114,7 @@ int pc_changelook(struct map_session_data *sd,int type,int val)
case LOOK_BASE:
status->set_viewdata(&sd->bl, val);
clif->changelook(&sd->bl, LOOK_BASE, sd->vd.class);
- clif->changelook(&sd->bl,LOOK_WEAPON,sd->status.weapon);
+ clif->changelook(&sd->bl, LOOK_WEAPON, sd->status.look.weapon);
if (sd->vd.cloth_color)
clif->changelook(&sd->bl,LOOK_CLOTHES_COLOR,sd->vd.cloth_color);
if (sd->vd.body_style)
@@ -8798,16 +9133,16 @@ int pc_changelook(struct map_session_data *sd,int type,int val)
}
break;
case LOOK_WEAPON:
- sd->status.weapon=val;
+ sd->status.look.weapon = val;
break;
case LOOK_HEAD_BOTTOM:
- sd->status.head_bottom=val;
+ sd->status.look.head_bottom = val;
break;
case LOOK_HEAD_TOP:
- sd->status.head_top=val;
+ sd->status.look.head_top = val;
break;
case LOOK_HEAD_MID:
- sd->status.head_mid=val;
+ sd->status.look.head_mid = val;
break;
case LOOK_HAIR_COLOR: //Use the battle_config limits! [Skotlex]
val = cap_value(val, MIN_HAIR_COLOR, MAX_HAIR_COLOR);
@@ -8825,12 +9160,12 @@ int pc_changelook(struct map_session_data *sd,int type,int val)
sd->status.clothes_color=val;
break;
case LOOK_SHIELD:
- sd->status.shield=val;
+ sd->status.look.shield = val;
break;
case LOOK_SHOES:
break;
case LOOK_ROBE:
- sd->status.robe = val;
+ sd->status.look.robe = val;
break;
case LOOK_BODY2:
val = cap_value(val, MIN_BODY_STYLE, MAX_BODY_STYLE);
@@ -8844,7 +9179,7 @@ int pc_changelook(struct map_session_data *sd,int type,int val)
/*==========================================
* Give an option (type) to player (sd) and display it to client
*------------------------------------------*/
-int pc_setoption(struct map_session_data *sd,int type)
+static int pc_setoption(struct map_session_data *sd, int type)
{
int p_type, new_look=0;
nullpo_ret(sd);
@@ -8866,7 +9201,7 @@ int pc_setoption(struct map_session_data *sd,int type)
#ifndef NEW_CARTS
if( type&OPTION_CART && !( p_type&OPTION_CART ) ) { //Cart On
- clif->cartlist(sd);
+ clif->cartList(sd);
clif->updatestatus(sd, SP_CARTINFO);
if(pc->checkskill(sd, MC_PUSHCART) < 10)
status_calc_pc(sd,SCO_NONE); //Apply speed penalty.
@@ -8942,7 +9277,8 @@ int pc_setoption(struct map_session_data *sd,int type)
/*==========================================
* Give player a cart
*------------------------------------------*/
-int pc_setcart(struct map_session_data *sd,int type) {
+static int pc_setcart(struct map_session_data *sd, int type)
+{
#ifndef NEW_CARTS
int cart[6] = {OPTION_NOTHING,OPTION_CART1,OPTION_CART2,OPTION_CART3,OPTION_CART4,OPTION_CART5};
int option;
@@ -8972,7 +9308,7 @@ int pc_setcart(struct map_session_data *sd,int type) {
break;
default:/* everything else is an allowed ID so we can move on */
if( !sd->sc.data[SC_PUSH_CART] ) /* first time, so fill cart data */
- clif->cartlist(sd);
+ clif->cartList(sd);
clif->updatestatus(sd, SP_CARTINFO);
sc_start(NULL,&sd->bl, SC_PUSH_CART, 100, type, 0);
clif->sc_load(&sd->bl, sd->bl.id, AREA, SI_ON_PUSH_CART, type, 0, 0);
@@ -9005,7 +9341,7 @@ int pc_setcart(struct map_session_data *sd,int type) {
* @param sd Target player.
* @param flag New state.
**/
-void pc_setfalcon(struct map_session_data *sd, bool flag)
+static void pc_setfalcon(struct map_session_data *sd, bool flag)
{
nullpo_retv(sd);
if (flag) {
@@ -9024,7 +9360,7 @@ void pc_setfalcon(struct map_session_data *sd, bool flag)
* @param sd Target player.
* @param flag New state.
**/
-void pc_setridingpeco(struct map_session_data *sd, bool flag)
+static void pc_setridingpeco(struct map_session_data *sd, bool flag)
{
nullpo_retv(sd);
if (flag) {
@@ -9043,7 +9379,7 @@ void pc_setridingpeco(struct map_session_data *sd, bool flag)
* @param sd Target player.
* @param flag New state.
**/
-void pc_setmadogear(struct map_session_data *sd, bool flag)
+static void pc_setmadogear(struct map_session_data *sd, bool flag)
{
nullpo_retv(sd);
if (flag) {
@@ -9062,7 +9398,7 @@ void pc_setmadogear(struct map_session_data *sd, bool flag)
* @param sd Target player.
* @param type New state. This must be a valid OPTION_DRAGON* or 0.
**/
-void pc_setridingdragon(struct map_session_data *sd, unsigned int type)
+static void pc_setridingdragon(struct map_session_data *sd, unsigned int type)
{
nullpo_retv(sd);
if (type&OPTION_DRAGON) {
@@ -9095,7 +9431,7 @@ void pc_setridingdragon(struct map_session_data *sd, unsigned int type)
* @param sd Target player.
* @param flag New state.
**/
-void pc_setridingwug(struct map_session_data *sd, bool flag)
+static void pc_setridingwug(struct map_session_data *sd, bool flag)
{
nullpo_retv(sd);
if (flag) {
@@ -9114,7 +9450,8 @@ void pc_setridingwug(struct map_session_data *sd, bool flag)
* Called from unit_attack and unit_attack_timer_sub
* @retval true Can attack
**/
-bool pc_can_attack( struct map_session_data *sd, int target_id ) {
+static bool pc_can_attack(struct map_session_data *sd, int target_id)
+{
nullpo_retr(false, sd);
if( sd->sc.data[SC_BASILICA] ||
@@ -9128,7 +9465,8 @@ bool pc_can_attack( struct map_session_data *sd, int target_id ) {
(sd->sc.data[SC_SIREN] && sd->sc.data[SC_SIREN]->val2 == target_id) ||
sd->sc.data[SC_BLADESTOP] ||
sd->sc.data[SC_DEEP_SLEEP] ||
- sd->sc.data[SC_FALLENEMPIRE] )
+ sd->sc.data[SC_FALLENEMPIRE] ||
+ sd->block_action.attack)
return false;
return true;
@@ -9139,12 +9477,14 @@ bool pc_can_attack( struct map_session_data *sd, int target_id ) {
* Called from clif_parse_GlobalMessage and clif_parse_WisMessage
* @retval true Can talk
**/
-bool pc_can_talk( struct map_session_data *sd ) {
+static bool pc_can_talk(struct map_session_data *sd)
+{
nullpo_retr(false, sd);
if( sd->sc.data[SC_BERSERK] ||
(sd->sc.data[SC_DEEP_SLEEP] && sd->sc.data[SC_DEEP_SLEEP]->val2) ||
- pc_ismuted(&sd->sc, MANNER_NOCHAT) )
+ pc_ismuted(&sd->sc, MANNER_NOCHAT) ||
+ sd->block_action.chat)
return false;
return true;
@@ -9153,7 +9493,7 @@ bool pc_can_talk( struct map_session_data *sd ) {
/*==========================================
* Check if player can drop an item
*------------------------------------------*/
-int pc_candrop(struct map_session_data *sd, struct item *item)
+static int pc_candrop(struct map_session_data *sd, struct item *item)
{
if( item && (item->expire_time || (item->bound && !pc_can_give_bound_items(sd))) )
return 0;
@@ -9164,14 +9504,16 @@ int pc_candrop(struct map_session_data *sd, struct item *item)
/**
* For '@type' variables (temporary numeric char reg)
**/
-int pc_readreg(struct map_session_data* sd, int64 reg) {
+static int pc_readreg(struct map_session_data *sd, int64 reg)
+{
nullpo_ret(sd);
return i64db_iget(sd->regs.vars, reg);
}
/**
* For '@type' variables (temporary numeric char reg)
**/
-void pc_setreg(struct map_session_data* sd, int64 reg, int val) {
+static void pc_setreg(struct map_session_data *sd, int64 reg, int val)
+{
unsigned int index = script_getvaridx(reg);
nullpo_retv(sd);
@@ -9189,7 +9531,8 @@ void pc_setreg(struct map_session_data* sd, int64 reg, int val) {
/**
* For '@type$' variables (temporary string char reg)
**/
-char* pc_readregstr(struct map_session_data* sd, int64 reg) {
+static char *pc_readregstr(struct map_session_data *sd, int64 reg)
+{
struct script_reg_str *p = NULL;
nullpo_retr(NULL, sd);
@@ -9200,7 +9543,8 @@ char* pc_readregstr(struct map_session_data* sd, int64 reg) {
/**
* For '@type$' variables (temporary string char reg)
**/
-void pc_setregstr(struct map_session_data* sd, int64 reg, const char* str) {
+static void pc_setregstr(struct map_session_data *sd, int64 reg, const char *str)
+{
struct script_reg_str *p = NULL;
unsigned int index = script_getvaridx(reg);
struct DBData prev;
@@ -9239,7 +9583,8 @@ void pc_setregstr(struct map_session_data* sd, int64 reg, const char* str) {
* - '#type' (permanent numeric account reg)
* - '##type' (permanent numeric account reg2)
**/
-int pc_readregistry(struct map_session_data *sd, int64 reg) {
+static int pc_readregistry(struct map_session_data *sd, int64 reg)
+{
struct script_reg_num *p = NULL;
nullpo_ret(sd);
@@ -9261,7 +9606,8 @@ int pc_readregistry(struct map_session_data *sd, int64 reg) {
* - '#type$' (permanent str account reg)
* - '##type$' (permanent str account reg2)
**/
-char* pc_readregistry_str(struct map_session_data *sd, int64 reg) {
+static char *pc_readregistry_str(struct map_session_data *sd, int64 reg)
+{
struct script_reg_str *p = NULL;
nullpo_retr(NULL, sd);
@@ -9283,7 +9629,8 @@ char* pc_readregistry_str(struct map_session_data *sd, int64 reg) {
* - '#type' (permanent numeric account reg)
* - '##type' (permanent numeric account reg2)
**/
-int pc_setregistry(struct map_session_data *sd, int64 reg, int val) {
+static int pc_setregistry(struct map_session_data *sd, int64 reg, int val)
+{
struct script_reg_num *p = NULL;
const char *regname = script->get_str( script_getvarid(reg) );
unsigned int index = script_getvaridx(reg);
@@ -9359,7 +9706,8 @@ int pc_setregistry(struct map_session_data *sd, int64 reg, int val) {
* - '#type$' (permanent str account reg)
* - '##type$' (permanent str account reg2)
**/
-int pc_setregistry_str(struct map_session_data *sd, int64 reg, const char *val) {
+static int pc_setregistry_str(struct map_session_data *sd, int64 reg, const char *val)
+{
struct script_reg_str *p = NULL;
const char *regname = script->get_str( script_getvarid(reg) );
unsigned int index = script_getvaridx(reg);
@@ -9415,7 +9763,8 @@ int pc_setregistry_str(struct map_session_data *sd, int64 reg, const char *val)
/*==========================================
* Exec eventtimer for player sd (retrieved from map_session (id))
*------------------------------------------*/
-int pc_eventtimer(int tid, int64 tick, int id, intptr_t data) {
+static int pc_eventtimer(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data *sd=map->id2sd(id);
char *p = (char *)data;
int i;
@@ -9439,7 +9788,7 @@ int pc_eventtimer(int tid, int64 tick, int id, intptr_t data) {
/*==========================================
* Add eventtimer for player sd ?
*------------------------------------------*/
-int pc_addeventtimer(struct map_session_data *sd,int tick,const char *name)
+static int pc_addeventtimer(struct map_session_data *sd, int tick, const char *name)
{
int i;
nullpo_ret(sd);
@@ -9458,7 +9807,7 @@ int pc_addeventtimer(struct map_session_data *sd,int tick,const char *name)
/*==========================================
* Del eventtimer for player sd ?
*------------------------------------------*/
-int pc_deleventtimer(struct map_session_data *sd,const char *name)
+static int pc_deleventtimer(struct map_session_data *sd, const char *name)
{
char* p = NULL;
int i;
@@ -9489,7 +9838,7 @@ int pc_deleventtimer(struct map_session_data *sd,const char *name)
/*==========================================
* Update eventtimer count for player sd
*------------------------------------------*/
-int pc_addeventtimercount(struct map_session_data *sd,const char *name,int tick)
+static int pc_addeventtimercount(struct map_session_data *sd, const char *name, int tick)
{
int i;
@@ -9508,7 +9857,7 @@ int pc_addeventtimercount(struct map_session_data *sd,const char *name,int tick)
/*==========================================
* Remove all eventtimer for player sd
*------------------------------------------*/
-int pc_cleareventtimer(struct map_session_data *sd)
+static int pc_cleareventtimer(struct map_session_data *sd)
{
int i;
@@ -9528,7 +9877,8 @@ int pc_cleareventtimer(struct map_session_data *sd)
return 0;
}
/* called when a item with combo is worn */
-int pc_checkcombo(struct map_session_data *sd, struct item_data *data ) {
+static int pc_checkcombo(struct map_session_data *sd, struct item_data *data)
+{
int i, j, k, z;
int index, success = 0;
struct pc_combos *combo;
@@ -9607,7 +9957,8 @@ int pc_checkcombo(struct map_session_data *sd, struct item_data *data ) {
}
/* called when a item with combo is removed */
-int pc_removecombo(struct map_session_data *sd, struct item_data *data ) {
+static int pc_removecombo(struct map_session_data *sd, struct item_data *data)
+{
int i, retval = 0;
nullpo_ret(sd);
@@ -9654,7 +10005,8 @@ int pc_removecombo(struct map_session_data *sd, struct item_data *data ) {
return retval;
}
-int pc_load_combo(struct map_session_data *sd) {
+static int pc_load_combo(struct map_session_data *sd)
+{
int i, ret = 0;
nullpo_ret(sd);
for( i = 0; i < EQI_MAX; i++ ) {
@@ -9681,94 +10033,102 @@ int pc_load_combo(struct map_session_data *sd) {
}
/**
-* Equip item at given position.
-* @param sd the affected player structure. Must be checked before.
-* @param id item structure for equip. Must be checked before.
-* @param n inventory item position. Must be checked before.
-* @param pos slot position. Must be checked before.
-**/
-void pc_equipitem_pos(struct map_session_data *sd, struct item_data *id, int n, int pos)
+ * Equip item at given position.
+ * @param sd the affected player structure. Must be checked before.
+ * @param id item structure for equip. Must be checked before.
+ * @param n inventory item position. Must be checked before.
+ * @param pos slot position. Must be checked before.
+ */
+static void pc_equipitem_pos(struct map_session_data *sd, struct item_data *id, int n, int pos)
{
nullpo_retv(sd);
if ((!map_no_view(sd->bl.m,EQP_SHADOW_WEAPON) && pos & EQP_SHADOW_WEAPON) ||
(pos & EQP_HAND_R)) {
- if(id)
- sd->weapontype1 = id->look;
- else
- sd->weapontype1 = 0;
+ if (id != NULL) {
+ sd->weapontype1 = id->subtype;
+ sd->status.look.weapon = id->view_sprite;
+ } else {
+ sd->weapontype1 = W_FIST;
+ sd->status.look.weapon = 0;
+ }
pc->calcweapontype(sd);
- clif->changelook(&sd->bl,LOOK_WEAPON,sd->status.weapon);
+ clif->changelook(&sd->bl, LOOK_WEAPON, sd->status.look.weapon);
}
if ((!map_no_view(sd->bl.m,EQP_SHADOW_SHIELD) && pos & EQP_SHADOW_SHIELD) ||
(pos & EQP_HAND_L)) {
- if (id) {
- if(id->type == IT_WEAPON) {
- sd->status.shield = 0;
- sd->weapontype2 = id->look;
- } else if(id->type == IT_ARMOR) {
- sd->status.shield = id->look;
- sd->weapontype2 = 0;
+ if (id != NULL) {
+ if (id->type == IT_WEAPON) {
+ sd->has_shield = false;
+ sd->status.look.shield = 0;
+ sd->weapontype2 = id->subtype;
+ } else if (id->type == IT_ARMOR) {
+ sd->has_shield = true;
+ sd->status.look.shield = id->view_sprite;
+ sd->weapontype2 = W_FIST;
}
- } else
- sd->status.shield = sd->weapontype2 = 0;
+ } else {
+ sd->has_shield = false;
+ sd->status.look.shield = 0;
+ sd->weapontype2 = W_FIST;
+ }
pc->calcweapontype(sd);
- clif->changelook(&sd->bl,LOOK_SHIELD,sd->status.shield);
+ clif->changelook(&sd->bl, LOOK_SHIELD, sd->status.look.shield);
}
//Added check to prevent sending the same look on multiple slots ->
//causes client to redraw item on top of itself. (suggested by Lupus)
if (!map_no_view(sd->bl.m,EQP_HEAD_LOW) && pos & EQP_HEAD_LOW && pc->checkequip(sd,EQP_COSTUME_HEAD_LOW) == -1) {
if (id && !(pos&(EQP_HEAD_TOP|EQP_HEAD_MID)))
- sd->status.head_bottom = id->look;
+ sd->status.look.head_bottom = id->view_sprite;
else
- sd->status.head_bottom = 0;
- clif->changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom);
+ sd->status.look.head_bottom = 0;
+ clif->changelook(&sd->bl, LOOK_HEAD_BOTTOM, sd->status.look.head_bottom);
}
if (!map_no_view(sd->bl.m,EQP_HEAD_TOP) && pos & EQP_HEAD_TOP && pc->checkequip(sd,EQP_COSTUME_HEAD_TOP) == -1) {
if (id)
- sd->status.head_top = id->look;
+ sd->status.look.head_top = id->view_sprite;
else
- sd->status.head_top = 0;
- clif->changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top);
+ sd->status.look.head_top = 0;
+ clif->changelook(&sd->bl, LOOK_HEAD_TOP, sd->status.look.head_top);
}
if (!map_no_view(sd->bl.m,EQP_HEAD_MID) && pos & EQP_HEAD_MID && pc->checkequip(sd,EQP_COSTUME_HEAD_MID) == -1) {
if (id && !(pos&EQP_HEAD_TOP))
- sd->status.head_mid = id->look;
+ sd->status.look.head_mid = id->view_sprite;
else
- sd->status.head_mid = 0;
- clif->changelook(&sd->bl,LOOK_HEAD_MID,sd->status.head_mid);
+ sd->status.look.head_mid = 0;
+ clif->changelook(&sd->bl, LOOK_HEAD_MID, sd->status.look.head_mid);
}
if (!map_no_view(sd->bl.m,EQP_COSTUME_HEAD_TOP) && pos & EQP_COSTUME_HEAD_TOP) {
if (id){
- sd->status.head_top = id->look;
+ sd->status.look.head_top = id->view_sprite;
} else
- sd->status.head_top = 0;
- clif->changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top);
+ sd->status.look.head_top = 0;
+ clif->changelook(&sd->bl, LOOK_HEAD_TOP, sd->status.look.head_top);
}
if (!map_no_view(sd->bl.m,EQP_COSTUME_HEAD_MID) && pos & EQP_COSTUME_HEAD_MID) {
if(id && !(pos&EQP_HEAD_TOP)){
- sd->status.head_mid = id->look;
+ sd->status.look.head_mid = id->view_sprite;
} else
- sd->status.head_mid = 0;
- clif->changelook(&sd->bl,LOOK_HEAD_MID,sd->status.head_mid);
+ sd->status.look.head_mid = 0;
+ clif->changelook(&sd->bl, LOOK_HEAD_MID, sd->status.look.head_mid);
}
if (!map_no_view(sd->bl.m,EQP_COSTUME_HEAD_LOW) && pos & EQP_COSTUME_HEAD_LOW) {
if (id && !(pos&(EQP_HEAD_TOP|EQP_HEAD_MID))){
- sd->status.head_bottom = id->look;
+ sd->status.look.head_bottom = id->view_sprite;
} else
- sd->status.head_bottom = 0;
- clif->changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom);
+ sd->status.look.head_bottom = 0;
+ clif->changelook(&sd->bl, LOOK_HEAD_BOTTOM, sd->status.look.head_bottom);
}
if (!map_no_view(sd->bl.m,EQP_SHOES) && pos & EQP_SHOES)
clif->changelook(&sd->bl,LOOK_SHOES,0);
if (!map_no_view(sd->bl.m,EQP_GARMENT) && pos&EQP_GARMENT && pc->checkequip(sd,EQP_COSTUME_GARMENT) == -1) {
- sd->status.robe = id ? id->look : 0;
- clif->changelook(&sd->bl, LOOK_ROBE, sd->status.robe);
+ sd->status.look.robe = id ? id->view_sprite : 0;
+ clif->changelook(&sd->bl, LOOK_ROBE, sd->status.look.robe);
}
if (!map_no_view(sd->bl.m,EQP_COSTUME_GARMENT) && pos & EQP_COSTUME_GARMENT) {
- sd->status.robe = id ? id->look : 0;
- clif->changelook(&sd->bl,LOOK_ROBE,sd->status.robe);
+ sd->status.look.robe = id ? id->view_sprite : 0;
+ clif->changelook(&sd->bl, LOOK_ROBE, sd->status.look.robe);
}
}
@@ -9778,14 +10138,14 @@ void pc_equipitem_pos(struct map_session_data *sd, struct item_data *id, int n,
* 0 = fail
* 1 = success
*------------------------------------------*/
-int pc_equipitem(struct map_session_data *sd,int n,int req_pos)
+static int pc_equipitem(struct map_session_data *sd, int n, int req_pos)
{
int i,pos,flag=0,iflag;
struct item_data *id;
nullpo_ret(sd);
- if( n < 0 || n >= MAX_INVENTORY ) {
+ if (n < 0 || n >= sd->status.inventorySize) {
clif->equipitemack(sd,0,0,EIA_FAIL);
return 0;
}
@@ -9913,66 +10273,68 @@ int pc_equipitem(struct map_session_data *sd,int n,int req_pos)
}
/**
-* Unrquip item ad given position.
-* @param sd the affected player structure. Must be checked before.
-* @param n inventory item position. Must be checked before.
-* @param pos slot position. Must be checked before.
-**/
-void pc_unequipitem_pos(struct map_session_data *sd, int n, int pos)
+ * Unequip an item at the given position.
+ * @param sd the affected player structure. Must be checked before.
+ * @param n inventory item position. Must be checked before.
+ * @param pos slot position. Must be checked before.
+ */
+static void pc_unequipitem_pos(struct map_session_data *sd, int n, int pos)
{
nullpo_retv(sd);
if (pos & EQP_HAND_R) {
- sd->weapontype1 = 0;
- sd->status.weapon = sd->weapontype2;
+ sd->weapontype1 = W_FIST;
pc->calcweapontype(sd);
- clif->changelook(&sd->bl,LOOK_WEAPON,sd->status.weapon);
+ sd->status.look.weapon = 0;
+ clif->changelook(&sd->bl, LOOK_WEAPON, sd->status.look.weapon);
if (!battle_config.dancing_weaponswitch_fix)
status_change_end(&sd->bl, SC_DANCING, INVALID_TIMER); // Unequipping => stop dancing.
}
if (pos & EQP_HAND_L) {
- sd->status.shield = sd->weapontype2 = 0;
+ sd->has_shield = false;
+ sd->status.look.shield = 0;
+ sd->weapontype2 = W_FIST;
pc->calcweapontype(sd);
- clif->changelook(&sd->bl,LOOK_SHIELD,sd->status.shield);
+ clif->changelook(&sd->bl, LOOK_SHIELD, sd->status.look.shield);
}
if (pos & EQP_HEAD_LOW && pc->checkequip(sd,EQP_COSTUME_HEAD_LOW) == -1) {
- sd->status.head_bottom = 0;
- clif->changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom);
+ sd->status.look.head_bottom = 0;
+ clif->changelook(&sd->bl, LOOK_HEAD_BOTTOM, sd->status.look.head_bottom);
}
if (pos & EQP_HEAD_TOP && pc->checkequip(sd,EQP_COSTUME_HEAD_TOP) == -1) {
- sd->status.head_top = 0;
- clif->changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top);
+ sd->status.look.head_top = 0;
+ clif->changelook(&sd->bl, LOOK_HEAD_TOP, sd->status.look.head_top);
}
if (pos & EQP_HEAD_MID && pc->checkequip(sd,EQP_COSTUME_HEAD_MID) == -1) {
- sd->status.head_mid = 0;
- clif->changelook(&sd->bl,LOOK_HEAD_MID,sd->status.head_mid);
+ sd->status.look.head_mid = 0;
+ clif->changelook(&sd->bl, LOOK_HEAD_MID, sd->status.look.head_mid);
}
if (pos & EQP_COSTUME_HEAD_TOP) {
- sd->status.head_top = ( pc->checkequip(sd,EQP_HEAD_TOP) >= 0 ) ? sd->inventory_data[pc->checkequip(sd,EQP_HEAD_TOP)]->look : 0;
- clif->changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top);
+ sd->status.look.head_top = ( pc->checkequip(sd,EQP_HEAD_TOP) >= 0 ) ? sd->inventory_data[pc->checkequip(sd,EQP_HEAD_TOP)]->view_sprite : 0;
+ clif->changelook(&sd->bl, LOOK_HEAD_TOP, sd->status.look.head_top);
}
if (pos & EQP_COSTUME_HEAD_MID) {
- sd->status.head_mid = ( pc->checkequip(sd,EQP_HEAD_MID) >= 0 ) ? sd->inventory_data[pc->checkequip(sd,EQP_HEAD_MID)]->look : 0;
- clif->changelook(&sd->bl,LOOK_HEAD_MID,sd->status.head_mid);
+ sd->status.look.head_mid = ( pc->checkequip(sd,EQP_HEAD_MID) >= 0 ) ? sd->inventory_data[pc->checkequip(sd,EQP_HEAD_MID)]->view_sprite : 0;
+ clif->changelook(&sd->bl, LOOK_HEAD_MID, sd->status.look.head_mid);
}
if (pos & EQP_COSTUME_HEAD_LOW) {
- sd->status.head_bottom = ( pc->checkequip(sd,EQP_HEAD_LOW) >= 0 ) ? sd->inventory_data[pc->checkequip(sd,EQP_HEAD_LOW)]->look : 0;
- clif->changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom);
+ sd->status.look.head_bottom = ( pc->checkequip(sd,EQP_HEAD_LOW) >= 0 ) ? sd->inventory_data[pc->checkequip(sd,EQP_HEAD_LOW)]->view_sprite : 0;
+ clif->changelook(&sd->bl, LOOK_HEAD_BOTTOM, sd->status.look.head_bottom);
}
if (pos & EQP_SHOES)
clif->changelook(&sd->bl,LOOK_SHOES,0);
if (pos & EQP_GARMENT && pc->checkequip(sd,EQP_COSTUME_GARMENT) == -1) {
- sd->status.robe = 0;
+ sd->status.look.robe = 0;
clif->changelook(&sd->bl, LOOK_ROBE, 0);
}
if (pos & EQP_COSTUME_GARMENT) {
- sd->status.robe = ( pc->checkequip(sd,EQP_GARMENT) >= 0 ) ? sd->inventory_data[pc->checkequip(sd,EQP_GARMENT)]->look : 0;
- clif->changelook(&sd->bl,LOOK_ROBE,sd->status.robe);
+ sd->status.look.robe = ( pc->checkequip(sd,EQP_GARMENT) >= 0 ) ? sd->inventory_data[pc->checkequip(sd,EQP_GARMENT)]->view_sprite : 0;
+ clif->changelook(&sd->bl, LOOK_ROBE, sd->status.look.robe);
}
}
@@ -9983,129 +10345,144 @@ void pc_unequipitem_pos(struct map_session_data *sd, int n, int pos)
* 0 = fail
* 1 = success
*------------------------------------------*/
-int pc_unequipitem(struct map_session_data *sd,int n,int flag)
+static int pc_unequipitem(struct map_session_data *sd, int n, int flag)
{
- int i,iflag;
- bool status_cacl = false;
+ int i, iflag;
+ bool status_calc = false;
int pos;
+
nullpo_ret(sd);
- if( n < 0 || n >= MAX_INVENTORY ) {
- clif->unequipitemack(sd,0,0,UIA_FAIL);
+ if (n < 0 || n >= sd->status.inventorySize) {
+ clif->unequipitemack(sd, 0, 0, UIA_FAIL);
return 0;
}
// if player is berserk then cannot unequip
- if (!(flag&PCUNEQUIPITEM_FORCE) && sd->sc.count && (sd->sc.data[SC_BERSERK] || sd->sc.data[SC_NO_SWITCH_EQUIP]) )
- {
- clif->unequipitemack(sd,n,0,UIA_FAIL);
+ if (!(flag & PCUNEQUIPITEM_FORCE) && sd->sc.count && (sd->sc.data[SC_BERSERK] || sd->sc.data[SC_NO_SWITCH_EQUIP])) {
+ clif->unequipitemack(sd, n, 0, UIA_FAIL);
return 0;
}
- if( !(flag&PCUNEQUIPITEM_FORCE) && sd->sc.count && sd->sc.data[SC_KYOUGAKU] )
- {
- clif->unequipitemack(sd,n,0,UIA_FAIL);
+ if (!(flag & PCUNEQUIPITEM_FORCE) && sd->sc.count && sd->sc.data[SC_KYOUGAKU]) {
+ clif->unequipitemack(sd, n, 0, UIA_FAIL);
return 0;
}
- if(battle_config.battle_log)
+ if (battle_config.battle_log)
ShowInfo("unequip %d %x:%x\n", n, (unsigned int)(pc->equippoint(sd, n)), sd->status.inventory[n].equip);
- if(!sd->status.inventory[n].equip){ //Nothing to unequip
- clif->unequipitemack(sd,n,0,UIA_FAIL);
+ if (sd->status.inventory[n].equip == 0) { //Nothing to unequip
+ clif->unequipitemack(sd, n, 0, UIA_FAIL);
return 0;
}
- for(i=0;i<EQI_MAX;i++) {
- if(sd->status.inventory[n].equip & pc->equip_pos[i])
+
+ for (i = 0; i < EQI_MAX; i++) {
+ if (sd->status.inventory[n].equip & pc->equip_pos[i])
sd->equip_index[i] = -1;
}
pos = sd->status.inventory[n].equip;
pc->unequipitem_pos(sd, n, pos);
- clif->unequipitemack(sd,n,pos,UIA_SUCCESS);
+ clif->unequipitemack(sd, n, pos, UIA_SUCCESS);
- if((pos & EQP_ARMS) &&
- sd->weapontype1 == 0 && sd->weapontype2 == 0 && (!sd->sc.data[SC_TK_SEVENWIND] || sd->sc.data[SC_ASPERSIO])) //Check for seven wind (but not level seven!)
- skill->enchant_elemental_end(&sd->bl,-1);
+ if ((pos & EQP_ARMS) &&
+ sd->weapontype1 == W_FIST && sd->weapontype2 == W_FIST && (sd->sc.data[SC_TK_SEVENWIND] == NULL || sd->sc.data[SC_ASPERSIO] != NULL)) //Check for seven wind (but not level seven!)
+ skill->enchant_elemental_end(&sd->bl, -1);
- if(pos & EQP_ARMOR) {
+ if (pos & EQP_ARMOR) {
// On Armor Change...
status_change_end(&sd->bl, SC_BENEDICTIO, INVALID_TIMER);
status_change_end(&sd->bl, SC_ARMOR_RESIST, INVALID_TIMER);
}
+#ifdef RENEWAL
+ if (battle->bc->bow_unequip_arrow && pos&EQP_ARMS && sd->equip_index[EQI_AMMO] > 0)
+ pc->unequipitem(sd, sd->equip_index[EQI_AMMO], PCUNEQUIPITEM_FORCE);
+#endif
+
if( sd->state.autobonus&pos )
sd->state.autobonus &= ~sd->status.inventory[n].equip; //Check for activated autobonus [Inkfish]
- sd->status.inventory[n].equip=0;
+ sd->status.inventory[n].equip = 0;
iflag = sd->npc_item_flag;
/* check for combos (MUST be before status_calc_pc) */
- if ( sd->inventory_data[n] ) {
- if( sd->inventory_data[n]->combos_count ) {
- if( pc->removecombo(sd,sd->inventory_data[n]) )
- status_cacl = true;
- } if(itemdb_isspecial(sd->status.inventory[n].card[0]))
- ; //No cards
- else {
- for( i = 0; i < sd->inventory_data[n]->slot; i++ ) {
+ if (sd->inventory_data[n] != NULL) {
+ if (sd->inventory_data[n]->combos_count) {
+ if (pc->removecombo(sd, sd->inventory_data[n]))
+ status_calc = true;
+ }
+ if (itemdb_isspecial(sd->status.inventory[n].card[0]) == false) {
+ for (i = 0; i < sd->inventory_data[n]->slot; i++) {
struct item_data *data;
- if (!sd->status.inventory[n].card[i])
+ if (sd->status.inventory[n].card[i] == 0)
continue;
- if ( ( data = itemdb->exists(sd->status.inventory[n].card[i]) ) != NULL ) {
- if( data->combos_count ) {
- if( pc->removecombo(sd,data) )
- status_cacl = true;
+ if ((data = itemdb->exists(sd->status.inventory[n].card[i])) != NULL) {
+ if (data->combos_count) {
+ if (pc->removecombo(sd, data))
+ status_calc = true;
}
}
}
}
+ /* Item Options checking */
+ for (i = 0; i < MAX_ITEM_OPTIONS; i++) {
+ struct itemdb_option *ito = NULL;
+ int16 item_option = sd->status.inventory[n].option[i].index;
+
+ if (item_option <= 0)
+ continue;
+ if ((ito = itemdb->option_exists(sd->status.inventory[n].option[i].index)) == NULL)
+ continue;
+
+ status_calc = true;
+ }
}
- if(flag&PCUNEQUIPITEM_RECALC || status_cacl) {
+ if (flag & PCUNEQUIPITEM_RECALC || status_calc) {
pc->checkallowskill(sd);
- status_calc_pc(sd,SCO_NONE);
+ status_calc_pc(sd, SCO_NONE);
}
- if(sd->sc.data[SC_CRUCIS] && !battle->check_undead(sd->battle_status.race,sd->battle_status.def_ele))
+ if (sd->sc.data[SC_CRUCIS] && battle->check_undead(sd->battle_status.race, sd->battle_status.def_ele) == false)
status_change_end(&sd->bl, SC_CRUCIS, INVALID_TIMER);
//OnUnEquip script [Skotlex]
- if (sd->inventory_data[n]) {
- if (sd->inventory_data[n]->unequip_script) {
- if ( battle_config.unequip_restricted_equipment & 1 ) {
- ARR_FIND(0, map->list[sd->bl.m].zone->disabled_items_count, i, map->list[sd->bl.m].zone->disabled_items[i] == sd->status.inventory[n].nameid);
- if ( i == map->list[sd->bl.m].zone->disabled_items_count )
+ if (sd->inventory_data[n] != NULL) {
+ if (sd->inventory_data[n]->unequip_script != NULL) {
+ if (battle_config.unequip_restricted_equipment & 1) {
+ ARR_FIND(0, map->list[sd->bl.m].zone->disabled_items_count, i, map->list[sd->bl.m].zone->disabled_items[i] == sd->status.inventory[n].nameid);
+ if (i == map->list[sd->bl.m].zone->disabled_items_count)
script->run_item_unequip_script(sd, sd->inventory_data[n], npc->fake_nd->bl.id);
}
else
script->run_item_unequip_script(sd, sd->inventory_data[n], npc->fake_nd->bl.id);
}
- if(itemdb_isspecial(sd->status.inventory[n].card[0]))
- ; //No cards
- else {
- for( i = 0; i < sd->inventory_data[n]->slot; i++ ) {
- struct item_data *data;
- if (!sd->status.inventory[n].card[i])
+ if (itemdb_isspecial(sd->status.inventory[n].card[0]) == false) {
+ for (i = 0; i < sd->inventory_data[n]->slot; i++) {
+ struct item_data *data = NULL;
+ if (sd->status.inventory[n].card[i] == 0)
continue;
- if ( ( data = itemdb->exists(sd->status.inventory[n].card[i]) ) != NULL ) {
- if ( data->unequip_script ) {
- if ( battle_config.unequip_restricted_equipment & 2 ) {
+ if ((data = itemdb->exists(sd->status.inventory[n].card[i])) != NULL) {
+ if (data->unequip_script) {
+ if (battle_config.unequip_restricted_equipment & 2) {
int j;
- ARR_FIND(0, map->list[sd->bl.m].zone->disabled_items_count, j, map->list[sd->bl.m].zone->disabled_items[j] == sd->status.inventory[n].card[i]);
- if ( j == map->list[sd->bl.m].zone->disabled_items_count )
+ ARR_FIND(0, map->list[sd->bl.m].zone->disabled_items_count, j, map->list[sd->bl.m].zone->disabled_items[j] == sd->status.inventory[n].card[i]);
+ if (j == map->list[sd->bl.m].zone->disabled_items_count)
script->run_item_unequip_script(sd, data, npc->fake_nd->bl.id);
- }
- else
+ } else {
script->run_item_unequip_script(sd, data, npc->fake_nd->bl.id);
+ }
}
}
}
}
}
+
sd->npc_item_flag = iflag;
return 1;
@@ -10115,105 +10492,114 @@ int pc_unequipitem(struct map_session_data *sd,int n,int flag)
* Checking if player (sd) have unauthorize, invalide item
* on inventory, cart, equiped for the map (item_noequip)
*------------------------------------------*/
-int pc_checkitem(struct map_session_data *sd)
+static int pc_checkitem(struct map_session_data *sd)
{
int i, calc_flag = 0;
nullpo_ret(sd);
- if (sd->state.vending) //Avoid reorganizing items when we are vending, as that leads to exploits (pointed out by End of Exam)
+ if (sd->state.vending == 1) // Avoid reorganizing items when we are vending, as that leads to exploits (pointed out by End of Exam)
return 0;
- if (sd->state.itemcheck) { // check for invalid(ated) items
- int id;
- for (i = 0; i < MAX_INVENTORY; i++) {
- id = sd->status.inventory[i].nameid;
+ if (sd->itemcheck != PCCHECKITEM_NONE) { // check for invalid(ated) items
+ int id = 0;
- if (!id)
- continue;
+ if (sd->itemcheck & PCCHECKITEM_INVENTORY) {
+ for (i = 0; i < sd->status.inventorySize; i++) {
+ if ((id = sd->status.inventory[i].nameid) == 0)
+ continue;
- if (!itemdb_available(id)) {
- ShowWarning("Removed invalid/disabled item id %d from inventory (amount=%d, char_id=%d).\n", id, sd->status.inventory[i].amount, sd->status.char_id);
- pc->delitem(sd, i, sd->status.inventory[i].amount, 0, DELITEM_NORMAL, LOG_TYPE_INV_INVALID);
- continue;
+ if (!itemdb_available(id)) {
+ ShowWarning("pc_checkitem: Removed invalid/disabled item id %d from inventory (amount=%d, char_id=%d).\n", id, sd->status.inventory[i].amount, sd->status.char_id);
+ pc->delitem(sd, i, sd->status.inventory[i].amount, 0, DELITEM_NORMAL, LOG_TYPE_INV_INVALID);
+ continue;
+ }
+
+ if (sd->status.inventory[i].unique_id == 0 && !itemdb->isstackable(id))
+ sd->status.inventory[i].unique_id = itemdb->unique_id(sd);
}
- if (!sd->status.inventory[i].unique_id && !itemdb->isstackable(id))
- sd->status.inventory[i].unique_id = itemdb->unique_id(sd);
+ sd->itemcheck &= ~PCCHECKITEM_INVENTORY;
}
- for( i = 0; i < MAX_CART; i++ ) {
- id = sd->status.cart[i].nameid;
+ if (sd->itemcheck & PCCHECKITEM_CART) {
+ for (i = 0; i < MAX_CART; i++) {
+ if ((id = sd->status.cart[i].nameid) == 0)
+ continue;
- if (!id)
- continue;
+ if( !itemdb_available(id) ) {
+ ShowWarning("pc_checkitem: Removed invalid/disabled item id %d from cart (amount=%d, char_id=%d).\n", id, sd->status.cart[i].amount, sd->status.char_id);
+ pc->cart_delitem(sd, i, sd->status.cart[i].amount, 0, LOG_TYPE_CART_INVALID);
+ continue;
+ }
- if( !itemdb_available(id) ) {
- ShowWarning("Removed invalid/disabled item id %d from cart (amount=%d, char_id=%d).\n", id, sd->status.cart[i].amount, sd->status.char_id);
- pc->cart_delitem(sd, i, sd->status.cart[i].amount, 0, LOG_TYPE_CART_INVALID);
- continue;
+ if (sd->status.cart[i].unique_id == 0 && !itemdb->isstackable(id))
+ sd->status.cart[i].unique_id = itemdb->unique_id(sd);
}
- if ( !sd->status.cart[i].unique_id && !itemdb->isstackable(id) )
- sd->status.cart[i].unique_id = itemdb->unique_id(sd);
+ sd->itemcheck &= ~PCCHECKITEM_CART;
}
- for( i = 0; i < MAX_STORAGE; i++ ) {
- id = sd->status.storage.items[i].nameid;
+ if (sd->itemcheck & PCCHECKITEM_STORAGE && sd->storage.received == true) {
+ for (i = 0; i < VECTOR_LENGTH(sd->storage.item); i++) {
+ struct item *it = &VECTOR_INDEX(sd->storage.item, i);
- if (!id)
- continue;
+ if ((id = it->nameid) == 0)
+ continue;
- if( id && !itemdb_available(id) ) {
- ShowWarning("Removed invalid/disabled item id %d from storage (amount=%d, char_id=%d).\n", id, sd->status.storage.items[i].amount, sd->status.char_id);
- storage->delitem(sd, i, sd->status.storage.items[i].amount);
- storage->close(sd);
- continue;
+ if (!itemdb_available(id)) {
+ ShowWarning("pc_checkitem: Removed invalid/disabled item id %d from storage (amount=%d, char_id=%d).\n", id, it->amount, sd->status.char_id);
+ storage->delitem(sd, i, it->amount);
+ continue;
+ }
+
+ if (it->unique_id == 0 && itemdb->isstackable(id) == 0)
+ it->unique_id = itemdb->unique_id(sd);
}
- if ( !sd->status.storage.items[i].unique_id && !itemdb->isstackable(id) )
- sd->status.storage.items[i].unique_id = itemdb->unique_id(sd);
+ storage->close(sd);
+
+ sd->itemcheck &= ~PCCHECKITEM_STORAGE;
}
- if (sd->guild) {
+ if (sd->guild && sd->itemcheck & PCCHECKITEM_GSTORAGE) {
struct guild_storage *guild_storage = idb_get(gstorage->db,sd->guild->guild_id);
if (guild_storage) {
- for( i = 0; i < MAX_GUILD_STORAGE; i++ ) {
- id = guild_storage->items[i].nameid;
-
- if (!id)
+ for (i = 0; i < MAX_GUILD_STORAGE; i++) {
+ if ((id = guild_storage->items[i].nameid) == 0)
continue;
- if( !itemdb_available(id) ) {
- ShowWarning("Removed invalid/disabled item id %d from guild storage (amount=%d, char_id=%d, guild_id=%d).\n", id, guild_storage->items[i].amount, sd->status.char_id, sd->guild->guild_id);
+ if (!itemdb_available(id)) {
+ ShowWarning("pc_checkitem: Removed invalid/disabled item id %d from guild storage (amount=%d, char_id=%d, guild_id=%d).\n", id, guild_storage->items[i].amount, sd->status.char_id, sd->guild->guild_id);
gstorage->delitem(sd, guild_storage, i, guild_storage->items[i].amount);
gstorage->close(sd); // force closing
continue;
}
- if (!guild_storage->items[i].unique_id && !itemdb->isstackable(id))
+ if (guild_storage->items[i].unique_id == 0 && !itemdb->isstackable(id))
guild_storage->items[i].unique_id = itemdb->unique_id(sd);
}
}
+
+ sd->itemcheck &= ~PCCHECKITEM_GSTORAGE;
}
- sd->state.itemcheck = 0;
}
- for( i = 0; i < MAX_INVENTORY; i++) {
+ for (i = 0; i < sd->status.inventorySize; i++) {
- if( sd->status.inventory[i].nameid == 0 )
+ if (sd->status.inventory[i].nameid == 0)
continue;
- if( !sd->status.inventory[i].equip )
+ if (sd->status.inventory[i].equip == 0)
continue;
- if( sd->status.inventory[i].equip&~pc->equippoint(sd,i) ) {
+ if (sd->status.inventory[i].equip & ~pc->equippoint(sd,i)) {
pc->unequipitem(sd, i, PCUNEQUIPITEM_FORCE);
calc_flag = 1;
continue;
}
- if (battle_config.unequip_restricted_equipment&1) {
+ if (battle_config.unequip_restricted_equipment & 1) {
int j;
for (j = 0; j < map->list[sd->bl.m].zone->disabled_items_count; j++) {
if (map->list[sd->bl.m].zone->disabled_items[j] == sd->status.inventory[i].nameid) {
@@ -10223,7 +10609,7 @@ int pc_checkitem(struct map_session_data *sd)
}
}
- if (battle_config.unequip_restricted_equipment&2) {
+ if (battle_config.unequip_restricted_equipment & 2) {
if (!itemdb_isspecial(sd->status.inventory[i].card[0])) {
int j, slot;
for (slot = 0; slot < MAX_SLOTS; slot++) {
@@ -10239,9 +10625,9 @@ int pc_checkitem(struct map_session_data *sd)
}
- if( calc_flag && sd->state.active ) {
+ if (calc_flag != 0 && sd->state.active == 1) {
pc->checkallowskill(sd);
- status_calc_pc(sd,SCO_NONE);
+ status_calc_pc(sd, SCO_NONE);
}
return 0;
@@ -10250,7 +10636,7 @@ int pc_checkitem(struct map_session_data *sd)
/*==========================================
* Update PVP rank for sd1 in cmp to sd2
*------------------------------------------*/
-int pc_calc_pvprank_sub(struct block_list *bl, va_list ap)
+static int pc_calc_pvprank_sub(struct block_list *bl, va_list ap)
{
struct map_session_data *sd1 = NULL;
struct map_session_data *sd2 = va_arg(ap,struct map_session_data *);
@@ -10273,7 +10659,8 @@ int pc_calc_pvprank_sub(struct block_list *bl, va_list ap)
* Calculate new rank beetween all present players (map->foreachinarea)
* and display result
*------------------------------------------*/
-int pc_calc_pvprank(struct map_session_data *sd) {
+static int pc_calc_pvprank(struct map_session_data *sd)
+{
int old;
struct map_data *m;
nullpo_ret(sd);
@@ -10288,7 +10675,8 @@ int pc_calc_pvprank(struct map_session_data *sd) {
/*==========================================
* Calculate next sd ranking calculation from config
*------------------------------------------*/
-int pc_calc_pvprank_timer(int tid, int64 tick, int id, intptr_t data) {
+static int pc_calc_pvprank_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data *sd;
sd=map->id2sd(id);
@@ -10312,7 +10700,7 @@ int pc_calc_pvprank_timer(int tid, int64 tick, int id, intptr_t data) {
* partner_id = yes
* 0 = no
*------------------------------------------*/
-int pc_ismarried(struct map_session_data *sd)
+static int pc_ismarried(struct map_session_data *sd)
{
if(sd == NULL)
return -1;
@@ -10327,7 +10715,7 @@ int pc_ismarried(struct map_session_data *sd)
* -1 = fail
* 0 = success
*------------------------------------------*/
-int pc_marriage(struct map_session_data *sd,struct map_session_data *dstsd)
+static int pc_marriage(struct map_session_data *sd, struct map_session_data *dstsd)
{
if(sd == NULL || dstsd == NULL ||
sd->status.partner_id > 0 || dstsd->status.partner_id > 0 ||
@@ -10335,6 +10723,11 @@ int pc_marriage(struct map_session_data *sd,struct map_session_data *dstsd)
return -1;
sd->status.partner_id = dstsd->status.char_id;
dstsd->status.partner_id = sd->status.char_id;
+
+ // Achievements [Smokexyz/Hercules]
+ achievement->validate_marry(sd);
+ achievement->validate_marry(dstsd);
+
return 0;
}
@@ -10344,7 +10737,7 @@ int pc_marriage(struct map_session_data *sd,struct map_session_data *dstsd)
* -1 = fail
* 0 = success
*------------------------------------------*/
-int pc_divorce(struct map_session_data *sd)
+static int pc_divorce(struct map_session_data *sd)
{
struct map_session_data *p_sd;
int i;
@@ -10366,11 +10759,14 @@ int pc_divorce(struct map_session_data *sd)
// Both players online, lets do the divorce manually
sd->status.partner_id = 0;
p_sd->status.partner_id = 0;
- for( i = 0; i < MAX_INVENTORY; i++ )
+ for (i = 0; i < sd->status.inventorySize; i++)
{
- if( sd->status.inventory[i].nameid == WEDDING_RING_M || sd->status.inventory[i].nameid == WEDDING_RING_F )
+ if (sd->status.inventory[i].nameid == WEDDING_RING_M || sd->status.inventory[i].nameid == WEDDING_RING_F)
pc->delitem(sd, i, 1, 0, DELITEM_NORMAL, LOG_TYPE_DIVORCE);
- if( p_sd->status.inventory[i].nameid == WEDDING_RING_M || p_sd->status.inventory[i].nameid == WEDDING_RING_F )
+ }
+ for (i = 0; i < p_sd->status.inventorySize; i++)
+ {
+ if (p_sd->status.inventory[i].nameid == WEDDING_RING_M || p_sd->status.inventory[i].nameid == WEDDING_RING_F)
pc->delitem(p_sd, i, 1, 0, DELITEM_NORMAL, LOG_TYPE_DIVORCE);
}
@@ -10383,7 +10779,8 @@ int pc_divorce(struct map_session_data *sd)
/*==========================================
* Get sd partner charid. (Married partner)
*------------------------------------------*/
-struct map_session_data *pc_get_partner(struct map_session_data *sd) {
+static struct map_session_data *pc_get_partner(struct map_session_data *sd)
+{
if (sd && pc->ismarried(sd))
// charid2sd returns NULL if not found
return map->charid2sd(sd->status.partner_id);
@@ -10394,7 +10791,8 @@ struct map_session_data *pc_get_partner(struct map_session_data *sd) {
/*==========================================
* Get sd father charid. (Need to be baby)
*------------------------------------------*/
-struct map_session_data *pc_get_father(struct map_session_data *sd) {
+static struct map_session_data *pc_get_father(struct map_session_data *sd)
+{
if (sd && (sd->job & JOBL_BABY) != 0 && sd->status.father > 0)
// charid2sd returns NULL if not found
return map->charid2sd(sd->status.father);
@@ -10405,7 +10803,8 @@ struct map_session_data *pc_get_father(struct map_session_data *sd) {
/*==========================================
* Get sd mother charid. (Need to be baby)
*------------------------------------------*/
-struct map_session_data *pc_get_mother(struct map_session_data *sd) {
+static struct map_session_data *pc_get_mother(struct map_session_data *sd)
+{
if (sd && (sd->job & JOBL_BABY) != 0 && sd->status.mother > 0)
// charid2sd returns NULL if not found
return map->charid2sd(sd->status.mother);
@@ -10416,7 +10815,8 @@ struct map_session_data *pc_get_mother(struct map_session_data *sd) {
/*==========================================
* Get sd children charid. (Need to be married)
*------------------------------------------*/
-struct map_session_data *pc_get_child(struct map_session_data *sd) {
+static struct map_session_data *pc_get_child(struct map_session_data *sd)
+{
if (sd && pc->ismarried(sd) && sd->status.child > 0)
// charid2sd returns NULL if not found
return map->charid2sd(sd->status.child);
@@ -10427,7 +10827,7 @@ struct map_session_data *pc_get_child(struct map_session_data *sd) {
/*==========================================
* Set player sd to bleed. (losing hp and/or sp each diff_tick)
*------------------------------------------*/
-void pc_bleeding (struct map_session_data *sd, unsigned int diff_tick)
+static void pc_bleeding(struct map_session_data *sd, unsigned int diff_tick)
{
int hp = 0, sp = 0;
@@ -10462,7 +10862,8 @@ void pc_bleeding (struct map_session_data *sd, unsigned int diff_tick)
//Character regen. Flag is used to know which types of regen can take place.
//&1: HP regen
//&2: SP regen
-void pc_regen (struct map_session_data *sd, unsigned int diff_tick) {
+static void pc_regen(struct map_session_data *sd, unsigned int diff_tick)
+{
int hp = 0, sp = 0;
nullpo_retv(sd);
@@ -10483,7 +10884,7 @@ void pc_regen (struct map_session_data *sd, unsigned int diff_tick) {
}
if (hp > 0 || sp > 0)
- status->heal(&sd->bl, hp, sp, 0);
+ status->heal(&sd->bl, hp, sp, STATUS_HEAL_DEFAULT);
return;
}
@@ -10491,7 +10892,8 @@ void pc_regen (struct map_session_data *sd, unsigned int diff_tick) {
/*==========================================
* Memo player sd savepoint. (map,x,y)
*------------------------------------------*/
-int pc_setsavepoint(struct map_session_data *sd, short map_index, int x, int y) {
+static int pc_setsavepoint(struct map_session_data *sd, short map_index, int x, int y)
+{
nullpo_ret(sd);
sd->status.save_point.map = map_index;
@@ -10504,7 +10906,8 @@ int pc_setsavepoint(struct map_session_data *sd, short map_index, int x, int y)
/*==========================================
* Save 1 player data at autosave intervall
*------------------------------------------*/
-int pc_autosave(int tid, int64 tick, int id, intptr_t data) {
+static int pc_autosave(int tid, int64 tick, int id, intptr_t data)
+{
int interval;
struct s_mapiterator* iter;
struct map_session_data* sd;
@@ -10542,7 +10945,8 @@ int pc_autosave(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-int pc_daynight_timer_sub(struct map_session_data *sd,va_list ap) {
+static int pc_daynight_timer_sub(struct map_session_data *sd, va_list ap)
+{
nullpo_ret(sd);
if (sd->state.night != map->night_flag && map->list[sd->bl.m].flag.nightenabled) { //Night/day state does not match.
clif->status_change(&sd->bl, SI_SKE, map->night_flag, 0, 0, 0, 0); //New night effect by dynamix [Skotlex]
@@ -10555,7 +10959,8 @@ int pc_daynight_timer_sub(struct map_session_data *sd,va_list ap) {
* timer to do the day [Yor]
* data: 0 = called by timer, 1 = gmcommand/script
*------------------------------------------------*/
-int map_day_timer(int tid, int64 tick, int id, intptr_t data) {
+static int map_day_timer(int tid, int64 tick, int id, intptr_t data)
+{
char tmp_soutput[1024];
if (data == 0 && battle_config.day_duration <= 0) // if we want a day
@@ -10575,7 +10980,8 @@ int map_day_timer(int tid, int64 tick, int id, intptr_t data) {
* timer to do the night [Yor]
* data: 0 = called by timer, 1 = gmcommand/script
*------------------------------------------------*/
-int map_night_timer(int tid, int64 tick, int id, intptr_t data) {
+static int map_night_timer(int tid, int64 tick, int id, intptr_t data)
+{
char tmp_soutput[1024];
if (data == 0 && battle_config.night_duration <= 0) // if we want a night
@@ -10591,20 +10997,27 @@ int map_night_timer(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-void pc_setstand(struct map_session_data *sd) {
+static void pc_setstand(struct map_session_data *sd)
+{
nullpo_retv(sd);
status_change_end(&sd->bl, SC_TENSIONRELAX, INVALID_TIMER);
clif->sc_end(&sd->bl,sd->bl.id,SELF,SI_SIT);
//Reset sitting tick.
sd->ssregen.tick.hp = sd->ssregen.tick.sp = 0;
- sd->state.dead_sit = sd->vd.dead_sit = 0;
+ if (pc_isdead(sd)) {
+ sd->state.dead_sit = sd->vd.dead_sit = 0;
+ clif->party_dead_notification(sd);
+ } else {
+ sd->state.dead_sit = sd->vd.dead_sit = 0;
+ }
}
/**
* Mechanic (MADO GEAR)
**/
-void pc_overheat(struct map_session_data *sd, int val) {
+static void pc_overheat(struct map_session_data *sd, int val)
+{
int heat = val, skill_lv,
limit[] = { 10, 20, 28, 46, 66 };
@@ -10630,7 +11043,7 @@ void pc_overheat(struct map_session_data *sd, int val) {
/**
* Check if player is autolooting given itemID.
*/
-bool pc_isautolooting(struct map_session_data *sd, int nameid)
+static bool pc_isautolooting(struct map_session_data *sd, int nameid)
{
int i = 0;
@@ -10651,7 +11064,8 @@ bool pc_isautolooting(struct map_session_data *sd, int nameid)
* @param sd Player map session data
* @param command Command name with @/# and without params
*/
-bool pc_can_use_command(struct map_session_data *sd, const char *command) {
+static bool pc_can_use_command(struct map_session_data *sd, const char *command)
+{
return atcommand->can_use(sd,command);
}
@@ -10660,7 +11074,7 @@ bool pc_can_use_command(struct map_session_data *sd, const char *command) {
*
* @see TimerFunc
*/
-int pc_charm_timer(int tid, int64 tick, int id, intptr_t data)
+static int pc_charm_timer(int tid, int64 tick, int id, intptr_t data)
{
struct map_session_data *sd = map->id2sd(id);
int i;
@@ -10701,7 +11115,7 @@ int pc_charm_timer(int tid, int64 tick, int id, intptr_t data)
* @param max Maximum amount of charms to add.
* @param type Charm type (@see spirit_charm_types)
*/
-void pc_add_charm(struct map_session_data *sd, int interval, int max, int type)
+static void pc_add_charm(struct map_session_data *sd, int interval, int max, int type)
{
int tid, i;
@@ -10743,7 +11157,7 @@ void pc_add_charm(struct map_session_data *sd, int interval, int max, int type)
* @param count Amount of charms to remove.
* @param type Type of charm to remove.
*/
-void pc_del_charm(struct map_session_data *sd, int count, int type)
+static void pc_del_charm(struct map_session_data *sd, int count, int type)
{
int i;
@@ -10790,7 +11204,7 @@ void pc_del_charm(struct map_session_data *sd, int count, int type)
* @param type Modifier type (1=exp 2=itemdrop)
* @return The percent rate modifier (100 = 100%)
*/
-int pc_level_penalty_mod(int diff, unsigned char race, uint32 mode, int type)
+static int pc_level_penalty_mod(int diff, unsigned char race, uint32 mode, int type)
{
#if defined(RENEWAL_DROP) || defined(RENEWAL_EXP)
int rate = 100, i;
@@ -10819,64 +11233,10 @@ int pc_level_penalty_mod(int diff, unsigned char race, uint32 mode, int type)
return 100;
#endif
}
-int pc_split_str(char *str,char **val,int num)
-{
- int i;
- nullpo_ret(val);
- for (i=0; i<num && str; i++){
- val[i] = str;
- str = strchr(str,',');
- if (str && i<num-1) //Do not remove a trailing comma.
- *str++=0;
- }
- return i;
-}
-
-int pc_split_atoi(char* str, int* val, char sep, int max)
+static bool pc_read_skill_job_skip(short skill_id, int job_id)
{
- int i,j;
- nullpo_ret(val);
- for (i=0; i<max; i++) {
- if (!str) break;
- val[i] = atoi(str);
- str = strchr(str,sep);
- if (str)
- *str++=0;
- }
- //Zero up the remaining.
- for(j=i; j < max; j++)
- val[j] = 0;
- return i;
-}
-
-int pc_split_atoui(char* str, unsigned int* val, char sep, int max)
-{
- static int warning=0;
- int i,j;
- nullpo_ret(val);
- for (i=0; i<max; i++) {
- double f;
- if (!str) break;
- f = atof(str);
- if (f < 0)
- val[i] = 0;
- else if (f > UINT_MAX) {
- val[i] = UINT_MAX;
- if (!warning) {
- warning = 1;
- ShowWarning("pc_readdb (exp.txt): Required exp per level is capped to %u\n", UINT_MAX);
- }
- } else
- val[i] = (unsigned int)f;
- str = strchr(str,sep);
- if (str)
- *str++=0;
- }
- //Zero up the remaining.
- for(j=i; j < max; j++)
- val[j] = 0;
- return i;
+ return skill_id == NV_TRICKDEAD && ((pc->jobid2mapid(job_id) & (MAPID_BASEMASK | JOBL_2)) != MAPID_NOVICE); // skip trickdead for non-novices
}
/**
@@ -10892,7 +11252,7 @@ int pc_split_atoui(char* str, unsigned int* val, char sep, int max)
*
* @author [Ind/Hercules]
*/
-void pc_read_skill_tree(void)
+static void pc_read_skill_tree(void)
{
struct config_t skill_tree_conf;
struct config_setting_t *skt = NULL;
@@ -10959,8 +11319,8 @@ void pc_read_skill_tree(void)
ShowWarning("pc_read_skill_tree: '%s' can't inherit '%s', skill tree is full!\n", job_name, ijob_name);
break;
}
- if (src->id == NV_TRICKDEAD && ((pc->jobid2mapid(job_id)&(MAPID_BASEMASK | JOBL_2)) != MAPID_NOVICE))
- continue; // skip trickdead for non-novices
+ if (pc->read_skill_job_skip(src->id, job_id))
+ continue;
dst = &pc->skill_tree[job_idx][cur];
dst->inherited = 1;
if (dst->id == 0) {
@@ -11089,7 +11449,7 @@ void pc_read_skill_tree(void)
/**
* Clears the skill tree and frees any allocated memory.
*/
-void pc_clear_skill_tree(void)
+static void pc_clear_skill_tree(void)
{
int i;
for (i = 0; i < CLASS_COUNT; i++) {
@@ -11103,7 +11463,8 @@ void pc_clear_skill_tree(void)
memset(pc->skill_tree, 0, sizeof(pc->skill_tree));
}
-bool pc_readdb_levelpenalty(char* fields[], int columns, int current) {
+static bool pc_readdb_levelpenalty(char *fields[], int columns, int current)
+{
#if defined(RENEWAL_DROP) || defined(RENEWAL_EXP)
int type, race, diff;
@@ -11132,93 +11493,134 @@ bool pc_readdb_levelpenalty(char* fields[], int columns, int current) {
return true;
}
-/*==========================================
- * pc DB reading.
- * exp.txt - required experience values
- * skill_tree.txt - skill tree for every class
- * attr_fix.txt - elemental adjustment table
- *------------------------------------------*/
-int pc_readdb(void) {
- int i,j,k;
- unsigned int count = 0;
- FILE *fp;
- char line[24000],*p;
+static bool pc_read_exp_db_sub_class(struct config_setting_t *t, bool base)
+{
+ struct class_exp_group entry = { { 0 } };
+ struct config_setting_t *exp_t = NULL;
+ int maxlv = 0;
- //reset
- memset(pc->exp_table,0,sizeof(pc->exp_table));
- memset(pc->max_level,0,sizeof(pc->max_level));
+ nullpo_retr(false, t);
- sprintf(line, "%s/"DBPATH"exp.txt", map->db_path);
+ safestrncpy(entry.name, config_setting_name(t), SCRIPT_VARNAME_LENGTH);
- fp=fopen(line, "r");
- if(fp==NULL){
- ShowError("can't read %s\n", line);
- return 1;
+ if (libconfig->setting_lookup_int(t, "MaxLevel", &maxlv) == 0
+ || (maxlv <= 0 || maxlv > MAX_LEVEL)) {
+ ShowError("pc_read_exp_db_sub_class: Invalid max %s level '%d' set for entry '%s'. Defaulting to %d...", base ? "base" : "job", maxlv, entry.name, MAX_LEVEL);
+ maxlv = MAX_LEVEL;
}
- while(fgets(line, sizeof(line), fp)) {
- int jobs[CLASS_COUNT], job_count, job, job_id;
- int type;
- int maxlv;
- char *split[4];
- if(line[0]=='/' && line[1]=='/')
- continue;
- if (pc_split_str(line,split,4) < 4)
- continue;
- job_count = pc_split_atoi(split[1],jobs,':',CLASS_COUNT);
- if (job_count < 1)
- continue;
- job_id = jobs[0];
- if (!pc->db_checkid(job_id)) {
- ShowError("pc_readdb: Invalid job ID %d.\n", job_id);
- continue;
- }
- type = atoi(split[2]);
- if (type < 0 || type > 1) {
- ShowError("pc_readdb: Invalid type %d (must be 0 for base levels, 1 for job levels).\n", type);
- continue;
- }
- maxlv = atoi(split[0]);
- if (maxlv > MAX_LEVEL) {
- ShowWarning("pc_readdb: Specified max level %d for job %d is beyond server's limit (%d).\n ", maxlv, job_id, MAX_LEVEL);
- maxlv = MAX_LEVEL;
+ entry.max_level = maxlv;
+
+ if ((exp_t = libconfig->setting_lookup(t, "Exp")) != NULL && config_setting_is_array(exp_t)) {
+ int j = 0;
+
+ VECTOR_ENSURE(entry.exp, maxlv - 2, 10);
+
+ if (libconfig->setting_length(exp_t) > maxlv - 1) {
+ ShowWarning("pc_read_exp_db_sub_class: Exp table length (%d) for %s exp group '%s' exceeds specified max level %d. Skipping remaining entries...\n", libconfig->setting_length(exp_t), base ? "base" : "job", entry.name, maxlv);
}
- count++;
- job = jobs[0] = pc->class2idx(job_id);
- //We send one less and then one more because the last entry in the exp array should hold 0.
- pc->max_level[job][type] = pc_split_atoui(split[3], pc->exp_table[job][type],',',maxlv-1)+1;
- //Reverse check in case the array has a bunch of trailing zeros... [Skotlex]
- //The reasoning behind the -2 is this... if the max level is 5, then the array
- //should look like this:
- //0: x, 1: x, 2: x: 3: x 4: 0 <- last valid value is at 3.
- while ((i = pc->max_level[job][type]) >= 2 && pc->exp_table[job][type][i-2] <= 0)
- pc->max_level[job][type]--;
- if (pc->max_level[job][type] < maxlv) {
- ShowWarning("pc_readdb: Specified max %d for job %d, but that job's exp table only goes up to level %d.\n", maxlv, job_id, pc->max_level[job][type]);
+
+ while (j < libconfig->setting_length(exp_t) && j <= maxlv - 2)
+ VECTOR_PUSH(entry.exp, libconfig->setting_get_int64_elem(exp_t, j++));
+
+ if (j - 1 < maxlv - 2) {
+ ShowError("pc_read_exp_db_sub_class: Specified max %d for group '%s', but that group's %s exp table only goes up to level %d.\n", maxlv, entry.name, base ? "base" : "job", VECTOR_LENGTH(entry.exp));
ShowInfo("Filling the missing values with the last exp entry.\n");
- //Fill the requested values with the last entry.
- i = (pc->max_level[job][type] <= 2 ? 0: pc->max_level[job][type]-2);
- for (; i+2 < maxlv; i++)
- pc->exp_table[job][type][i] = pc->exp_table[job][type][i-1];
- pc->max_level[job][type] = maxlv;
- }
- //ShowDebug("%s - Class %d: %d\n", type?"Job":"Base", job_id, pc->max_level[job][type]);
- for (i = 1; i < job_count; i++) {
- job_id = jobs[i];
- if (!pc->db_checkid(job_id)) {
- ShowError("pc_readdb: Invalid job ID %d.\n", job_id);
- continue;
- }
- job = pc->class2idx(job_id);
- memcpy(pc->exp_table[job][type], pc->exp_table[jobs[0]][type], sizeof(pc->exp_table[0][0]));
- pc->max_level[job][type] = maxlv;
- //ShowDebug("%s - Class %d: %d\n", type?"Job":"Base", job_id, pc->max_level[job][type]);
+ while (j++ <= maxlv - 2)
+ VECTOR_PUSH(entry.exp, VECTOR_LAST(entry.exp));
}
+ } else {
+ ShowError("pc_read_exp_db_sub_class: Invalid or non-existent 'Exp' field set for %s level entry '%s'. Skipping...\n", entry.name, base ? "base" : "job");
+ return false;
}
- fclose(fp);
- pc->validate_levels();
- ShowStatus("Done reading '"CL_WHITE"%u"CL_RESET"' entries in '"CL_WHITE"%s/"DBPATH"%s"CL_RESET"'.\n",count,map->db_path,"exp.txt");
- count = 0;
+
+ VECTOR_ENSURE(pc->class_exp_groups[base ? CLASS_EXP_TABLE_BASE : CLASS_EXP_TABLE_JOB], 1, 1);
+ VECTOR_PUSH(pc->class_exp_groups[base ? CLASS_EXP_TABLE_BASE : CLASS_EXP_TABLE_JOB], entry);
+ return true;
+}
+
+/**
+ * Description: Helper function to read a root configuration in the exp_group_db.conf file.
+ * @param[in] t pointer to the root config setting
+ * @param[in] base boolean switch determining whether to read either base or job exp.
+ * @return total number of valid entries read from the setting.
+ */
+static int pc_read_exp_db_sub(struct config_setting_t *t, bool base)
+{
+ int i = 0, entry_count = 0;
+ struct config_setting_t *tt = NULL;
+
+ nullpo_ret(t);
+
+ while ((tt = libconfig->setting_get_elem(t, i++)) != NULL) {
+ pc->read_exp_db_sub_class(tt, base);
+ entry_count++;
+ }
+
+ return entry_count;
+}
+
+/**
+ * Description: Initiates reading of the exp_group_db.conf.
+ * @return true success, false on failure.
+ */
+static bool pc_read_exp_db(void)
+{
+ struct config_t exp_db_conf;
+ struct config_setting_t *edb = NULL;
+ int entry_count = 0;
+
+#ifdef RENEWAL
+ const char *config_filename = "db/re/exp_group_db.conf";
+#else
+ const char *config_filename = "db/pre-re/exp_group_db.conf";
+#endif
+
+ if (!libconfig->load_file(&exp_db_conf, config_filename))
+ return false;
+
+ if ((edb = libconfig->setting_lookup(exp_db_conf.root, "base_exp_group_db")) != NULL) {
+ entry_count += pc->read_exp_db_sub(edb, true);
+ } else {
+ ShowError("pc_read_exp_db: Error reading base exp group db in '%s'.\n", config_filename);
+ libconfig->destroy(&exp_db_conf);
+ return false;
+ }
+
+ if ((edb = libconfig->setting_lookup(exp_db_conf.root, "job_exp_group_db")) != NULL) {
+ entry_count += pc->read_exp_db_sub(edb, false);
+ } else {
+ ShowError("pc_read_exp_db: Error reading job exp group db in '%s'.\n", config_filename);
+ libconfig->destroy(&exp_db_conf);
+ return false;
+ }
+
+ libconfig->destroy(&exp_db_conf);
+
+ ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' entries in '"CL_WHITE"%s"CL_RESET"'.\n", entry_count, config_filename);
+
+ return true;
+}
+
+/*==========================================
+ * PC DB reading.
+ * exp_group_db.conf - required experience values
+ * skill_tree.txt - skill tree for every class
+ * attr_fix.txt - elemental adjustment table
+ *------------------------------------------*/
+static int pc_readdb(void)
+{
+ int i,j,k;
+ unsigned int count = 0;
+ FILE *fp;
+ char line[24000],*p;
+
+ /**
+ * Read and load into memory, the exp_group_db.conf file.
+ */
+ pc->clear_exp_groups();
+ pc->read_exp_db();
+
// Reset and read skilltree
pc->clear_skill_tree();
pc->read_skill_tree();
@@ -11332,22 +11734,37 @@ int pc_readdb(void) {
return 0;
}
-void pc_validate_levels(void) {
+static bool pc_job_is_dummy(int job)
+{
+ if (job == JOB_KNIGHT2 || job == JOB_CRUSADER2
+ || job == JOB_WEDDING || job == JOB_XMAS || job == JOB_SUMMER
+ || job == JOB_LORD_KNIGHT2 || job == JOB_PALADIN2
+ || job == JOB_BABY_KNIGHT2 || job == JOB_BABY_CRUSADER2
+ || job == JOB_STAR_GLADIATOR2
+ || (job >= JOB_RUNE_KNIGHT2 && job <= JOB_MECHANIC_T2)
+ || (job >= JOB_BABY_RUNE2 && job <= JOB_BABY_MECHANIC2))
+ return true;
+ return false;
+}
+
+static void pc_validate_levels(void)
+{
int i;
int j;
for (i = 0; i < JOB_MAX; i++) {
if (!pc->db_checkid(i)) continue;
- if (i == JOB_WEDDING || i == JOB_XMAS || i == JOB_SUMMER)
+ if (pc->job_is_dummy(i))
continue; //Classes that do not need exp tables.
j = pc->class2idx(i);
- if (pc->max_level[j][0] == 0)
- ShowWarning("Class %s (%d) does not has a base exp table.\n", pc->job_name(i), i);
- if (pc->max_level[j][1] == 0)
- ShowWarning("Class %s (%d) does not has a job exp table.\n", pc->job_name(i), i);
+ if (pc->dbs->class_exp_table[j][CLASS_EXP_TABLE_BASE] == NULL)
+ ShowWarning("Class %s (%d - %d) does not have a base exp table.\n", pc->job_name(i), i, j);
+ if (pc->dbs->class_exp_table[j][CLASS_EXP_TABLE_JOB] == NULL)
+ ShowWarning("Class %s (%d - %d) does not have a job exp table.\n", pc->job_name(i), i, j);
}
}
-void pc_itemcd_do(struct map_session_data *sd, bool load) {
+static void pc_itemcd_do(struct map_session_data *sd, bool load)
+{
int i,cursor = 0;
struct item_cd* cd = NULL;
@@ -11382,7 +11799,8 @@ void pc_itemcd_do(struct map_session_data *sd, bool load) {
return;
}
-void pc_bank_deposit(struct map_session_data *sd, int money) {
+static void pc_bank_deposit(struct map_session_data *sd, int money)
+{
unsigned int limit_check;
nullpo_retv(sd);
@@ -11405,7 +11823,8 @@ void pc_bank_deposit(struct map_session_data *sd, int money) {
clif->bank_deposit(sd,BDA_SUCCESS);
}
}
-void pc_bank_withdraw(struct map_session_data *sd, int money) {
+static void pc_bank_withdraw(struct map_session_data *sd, int money)
+{
unsigned int limit_check;
nullpo_retv(sd);
@@ -11432,7 +11851,8 @@ void pc_bank_withdraw(struct map_session_data *sd, int money) {
}
}
/* status change data arrived from char-server */
-void pc_scdata_received(struct map_session_data *sd) {
+static void pc_scdata_received(struct map_session_data *sd)
+{
nullpo_retv(sd);
pc->inventory_rentals(sd);
clif->show_modifiers(sd);
@@ -11452,7 +11872,8 @@ void pc_scdata_received(struct map_session_data *sd) {
pc->autotrade_start(sd);
}
}
-int pc_expiration_timer(int tid, int64 tick, int id, intptr_t data) {
+static int pc_expiration_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data *sd = map->id2sd(id);
if( !sd ) return 0;
@@ -11468,7 +11889,8 @@ int pc_expiration_timer(int tid, int64 tick, int id, intptr_t data) {
}
/* This timer exists only when a character with an expire timer > 24h is online */
/* It loops through online players once an hour to check whether a new < 24h is available */
-int pc_global_expiration_timer(int tid, int64 tick, int id, intptr_t data) {
+static int pc_global_expiration_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct s_mapiterator* iter;
struct map_session_data* sd;
@@ -11481,7 +11903,8 @@ int pc_global_expiration_timer(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-void pc_expire_check(struct map_session_data *sd) {
+static void pc_expire_check(struct map_session_data *sd)
+{
nullpo_retv(sd);
/* ongoing timer */
if( sd->expiration_tid != INVALID_TIMER )
@@ -11502,7 +11925,7 @@ void pc_expire_check(struct map_session_data *sd) {
/**
* Loads autotraders
***/
-void pc_autotrade_load(void)
+static void pc_autotrade_load(void)
{
char *data;
@@ -11535,7 +11958,8 @@ void pc_autotrade_load(void)
/**
* Loads vending data and sets it up, is triggered when char server data that pc_autotrade_load requested arrives
**/
-void pc_autotrade_start(struct map_session_data *sd) {
+static void pc_autotrade_start(struct map_session_data *sd)
+{
unsigned int count = 0;
int i;
char *data;
@@ -11582,7 +12006,8 @@ void pc_autotrade_start(struct map_session_data *sd) {
/**
* Perform a autotrade action
**/
-void pc_autotrade_update(struct map_session_data *sd, enum e_pc_autotrade_update_action action) {
+static void pc_autotrade_update(struct map_session_data *sd, enum e_pc_autotrade_update_action action)
+{
int i;
nullpo_retv(sd);
@@ -11632,7 +12057,8 @@ void pc_autotrade_update(struct map_session_data *sd, enum e_pc_autotrade_update
/**
* Handles characters upon @autotrade usage
**/
-void pc_autotrade_prepare(struct map_session_data *sd) {
+static void pc_autotrade_prepare(struct map_session_data *sd)
+{
struct autotrade_vending *data;
int i, cursor = 0;
int account_id, char_id;
@@ -11682,7 +12108,8 @@ void pc_autotrade_prepare(struct map_session_data *sd) {
/**
* Prepares autotrade data from pc->at_db from a player that has already returned from char server
**/
-void pc_autotrade_populate(struct map_session_data *sd) {
+static void pc_autotrade_populate(struct map_session_data *sd)
+{
struct autotrade_vending *data;
int i, j, k, cursor = 0;
@@ -11726,7 +12153,7 @@ void pc_autotrade_populate(struct map_session_data *sd) {
/**
* @see DBApply
*/
-int pc_autotrade_final(union DBKey key, struct DBData *data, va_list ap)
+static int pc_autotrade_final(union DBKey key, struct DBData *data, va_list ap)
{
struct autotrade_vending* at_v = DB->data2ptr(data);
nullpo_ret(at_v);
@@ -11734,7 +12161,7 @@ int pc_autotrade_final(union DBKey key, struct DBData *data, va_list ap)
return 0;
}
-void pc_update_idle_time(struct map_session_data* sd, enum e_battle_config_idletime type)
+static void pc_update_idle_time(struct map_session_data *sd, enum e_battle_config_idletime type)
{
nullpo_retv(sd);
if (battle_config.idletime_criteria&type)
@@ -11743,7 +12170,7 @@ void pc_update_idle_time(struct map_session_data* sd, enum e_battle_config_idlet
//Checks if the given class value corresponds to a player class. [Skotlex]
//JOB_NOVICE isn't checked for class is supposed to be unsigned
-bool pc_db_checkid(int class)
+static bool pc_db_checkid(int class)
{
return class < JOB_MAX_BASIC
|| (class >= JOB_NOVICE_HIGH && class <= JOB_DARK_COLLECTOR )
@@ -11760,7 +12187,7 @@ bool pc_db_checkid(int class)
* @param sd map_session_data of Player
* @return index of magnifer, INDEX_NOT_FOUND if it is not found
*/
-int pc_have_magnifier(struct map_session_data *sd)
+static int pc_have_magnifier(struct map_session_data *sd)
{
int n;
n = pc->search_inventory(sd, ITEMID_SPECTACLES);
@@ -11775,7 +12202,8 @@ int pc_have_magnifier(struct map_session_data *sd)
* @param level Required Level of Novice Skill
* @return bool true, if requirement is satisfied
*/
-bool pc_check_basicskill(struct map_session_data *sd, int level) {
+static bool pc_check_basicskill(struct map_session_data *sd, int level)
+{
if (pc->checkskill(sd, NV_BASIC) >= level || pc->checkskill(sd, SU_BASIC_SKILL))
return true;
return false;
@@ -11789,7 +12217,7 @@ bool pc_check_basicskill(struct map_session_data *sd, int level) {
* @param message The message text.
* @return Whether the message is a valid chat message.
*/
-bool pc_process_chat_message(struct map_session_data *sd, const char *message)
+static bool pc_process_chat_message(struct map_session_data *sd, const char *message)
{
nullpo_retr(false, sd);
if (atcommand->exec(sd->fd, sd, message, true)) {
@@ -11821,9 +12249,9 @@ bool pc_process_chat_message(struct map_session_data *sd, const char *message)
* @param sd The sender character.
* @param message The message text.
*/
-void pc_check_supernovice_call(struct map_session_data *sd, const char *message)
+static void pc_check_supernovice_call(struct map_session_data *sd, const char *message)
{
- unsigned int next = pc->nextbaseexp(sd);
+ uint64 next = pc->nextbaseexp(sd);
int percent = 0;
nullpo_retv(sd);
@@ -11865,7 +12293,73 @@ void pc_check_supernovice_call(struct map_session_data *sd, const char *message)
}
}
-void do_final_pc(void) {
+static void pc_update_job_and_level(struct map_session_data *sd)
+{
+ nullpo_retv(sd);
+
+ if (sd->status.party_id) {
+ struct party_data *p;
+ int i;
+
+ if ((p = party->search(sd->status.party_id)) != NULL) {
+ ARR_FIND(0, MAX_PARTY, i, p->party.member[i].char_id == sd->status.char_id);
+ if (i < MAX_PARTY) {
+ p->party.member[i].lv = sd->status.base_level;
+ clif->party_job_and_level(sd);
+ }
+ }
+ }
+}
+
+static void pc_clear_exp_groups(void)
+{
+ int i, k, size;
+ for (k = 0; k < 2; k++) {
+ size = VECTOR_LENGTH(pc->class_exp_groups[k]);
+
+ for (i = 0; i < size; i++)
+ VECTOR_CLEAR(VECTOR_INDEX(pc->class_exp_groups[k], i).exp);
+ VECTOR_CLEAR(pc->class_exp_groups[k]);
+ }
+}
+
+static void pc_init_exp_groups(void)
+{
+ int i;
+ for (i = 0; i < 2; i++) {
+ VECTOR_INIT(pc->class_exp_groups[i]);
+ }
+}
+
+static bool pc_has_second_costume(struct map_session_data *sd)
+{
+ nullpo_retr(false, sd);
+
+ if ((sd->job & JOBL_THIRD) != 0)
+ return true;
+ return false;
+}
+
+static bool pc_expandInventory(struct map_session_data *sd, int adjustSize)
+{
+ nullpo_retr(false, sd);
+ const int invSize = sd->status.inventorySize;
+ if (adjustSize > MAX_INVENTORY || invSize + adjustSize <= FIXED_INVENTORY_SIZE || invSize + adjustSize > MAX_INVENTORY) {
+ clif->inventoryExpandResult(sd, EXPAND_INVENTORY_RESULT_MAX_SIZE);
+ return false;
+ }
+ if (pc_isdead(sd) || sd->state.vending || sd->state.buyingstore || sd->chat_id != 0 || sd->state.trading || sd->state.storage_flag || sd->state.prevend) {
+ clif->inventoryExpandResult(sd, EXPAND_INVENTORY_RESULT_OTHER_WORK);
+ return false;
+ }
+ sd->status.inventorySize += adjustSize;
+ clif->inventoryExpansionInfo(sd);
+ return true;
+}
+
+static void do_final_pc(void)
+{
+
db_destroy(pc->itemcd_db);
pc->at_db->destroy(pc->at_db,pc->autotrade_final);
@@ -11873,6 +12367,8 @@ void do_final_pc(void) {
pc->clear_skill_tree();
+ pc->clear_exp_groups();
+
ers_destroy(pc->sc_display_ers);
ers_destroy(pc->num_reg_ers);
ers_destroy(pc->str_reg_ers);
@@ -11880,13 +12376,15 @@ void do_final_pc(void) {
return;
}
-void do_init_pc(bool minimal) {
+static void do_init_pc(bool minimal)
+{
if (minimal)
return;
pc->itemcd_db = idb_alloc(DB_OPT_RELEASE_DATA);
pc->at_db = idb_alloc(DB_OPT_RELEASE_DATA);
+ pc->init_exp_groups();
pc->readdb();
timer->add_func_list(pc->invincible_timer, "pc_invincible_timer");
@@ -11927,12 +12425,14 @@ void do_init_pc(bool minimal) {
ers_chunk_size(pc->num_reg_ers, 300);
ers_chunk_size(pc->str_reg_ers, 50);
}
+
/*=====================================
-* Default Functions : pc.h
-* Generated by HerculesInterfaceMaker
-* created by Susu
-*-------------------------------------*/
-void pc_defaults(void) {
+ * Default Functions : pc.h
+ * Generated by HerculesInterfaceMaker
+ * created by Susu
+ *-------------------------------------*/
+void pc_defaults(void)
+{
const struct sg_data sg_info[MAX_PC_FEELHATE] = {
{ SG_SUN_ANGER, SG_SUN_BLESS, SG_SUN_COMFORT, "PC_FEEL_SUN", "PC_HATE_MOB_SUN", is_day_of_sun },
{ SG_MOON_ANGER, SG_MOON_BLESS, SG_MOON_COMFORT, "PC_FEEL_MOON", "PC_HATE_MOB_MOON", is_day_of_moon },
@@ -11941,6 +12441,7 @@ void pc_defaults(void) {
unsigned int equip_pos[EQI_MAX]={EQP_ACC_L,EQP_ACC_R,EQP_SHOES,EQP_GARMENT,EQP_HEAD_LOW,EQP_HEAD_MID,EQP_HEAD_TOP,EQP_ARMOR,EQP_HAND_L,EQP_HAND_R,EQP_COSTUME_HEAD_TOP,EQP_COSTUME_HEAD_MID,EQP_COSTUME_HEAD_LOW,EQP_COSTUME_GARMENT,EQP_AMMO, EQP_SHADOW_ARMOR, EQP_SHADOW_WEAPON, EQP_SHADOW_SHIELD, EQP_SHADOW_SHOES, EQP_SHADOW_ACC_R, EQP_SHADOW_ACC_L };
pc = &pc_s;
+ pc->dbs = &exptables;
/* vars */
pc->at_db = NULL;
@@ -11986,6 +12487,7 @@ void pc_defaults(void) {
pc->isequip = pc_isequip;
pc->equippoint = pc_equippoint;
+ pc->item_equippoint = pc_item_equippoint;
pc->setinventorydata = pc_setinventorydata;
pc->checkskill = pc_checkskill;
@@ -11994,6 +12496,8 @@ void pc_defaults(void) {
pc->checkequip = pc_checkequip;
pc->calc_skilltree = pc_calc_skilltree;
+ pc->calc_skilltree_bonus = pc_calc_skilltree_bonus;
+ pc->calc_skilltree_clear = pc_calc_skilltree_clear;
pc->calc_skilltree_normalize_job = pc_calc_skilltree_normalize_job;
pc->clean_skilltree = pc_clean_skilltree;
@@ -12056,6 +12560,7 @@ void pc_defaults(void) {
pc->maxbaselv = pc_maxbaselv;
pc->maxjoblv = pc_maxjoblv;
pc->checkbaselevelup = pc_checkbaselevelup;
+ pc->checkbaselevelup_sc = pc_checkbaselevelup_sc;
pc->checkjoblevelup = pc_checkjoblevelup;
pc->gainexp = pc_gainexp;
pc->nextbaseexp = pc_nextbaseexp;
@@ -12072,6 +12577,7 @@ void pc_defaults(void) {
pc->resetlvl = pc_resetlvl;
pc->resetstate = pc_resetstate;
pc->resetskill = pc_resetskill;
+ pc->resetskill_job = pc_resetskill_job;
pc->resetfeel = pc_resetfeel;
pc->resethate = pc_resethate;
pc->equipitem = pc_equipitem;
@@ -12146,7 +12652,9 @@ void pc_defaults(void) {
pc->delinvincibletimer = pc_delinvincibletimer;
pc->addspiritball = pc_addspiritball;
+ pc->addspiritball_sub = pc_addspiritball_sub;
pc->delspiritball = pc_delspiritball;
+ pc->delspiritball_sub = pc_delspiritball_sub;
pc->addfame = pc_addfame;
pc->fame_rank = pc_fame_rank;
pc->famelist_type = pc_famelist_type;
@@ -12154,6 +12662,9 @@ void pc_defaults(void) {
pc->getmaxspiritball = pc_getmaxspiritball;
pc->readdb = pc_readdb;
+ pc->read_exp_db = pc_read_exp_db;
+ pc->read_exp_db_sub = pc_read_exp_db_sub;
+ pc->read_exp_db_sub_class = pc_read_exp_db_sub_class;
pc->map_day_timer = map_day_timer; // by [yor]
pc->map_night_timer = map_night_timer; // by [yor]
// Rental System
@@ -12200,12 +12711,17 @@ void pc_defaults(void) {
pc->autosave = pc_autosave;
pc->follow_timer = pc_follow_timer;
pc->read_skill_tree = pc_read_skill_tree;
+ pc->read_skill_job_skip = pc_read_skill_job_skip;
pc->clear_skill_tree = pc_clear_skill_tree;
pc->isUseitem = pc_isUseitem;
pc->show_steal = pc_show_steal;
pc->checkcombo = pc_checkcombo;
pc->calcweapontype = pc_calcweapontype;
pc->removecombo = pc_removecombo;
+ pc->update_job_and_level = pc_update_job_and_level;
+ pc->clear_exp_groups = pc_clear_exp_groups;
+ pc->init_exp_groups = pc_init_exp_groups;
+ pc->job_is_dummy = pc_job_is_dummy;
pc->bank_withdraw = pc_bank_withdraw;
pc->bank_deposit = pc_bank_deposit;
@@ -12240,4 +12756,8 @@ void pc_defaults(void) {
pc->have_magnifier = pc_have_magnifier;
pc->check_basicskill = pc_check_basicskill;
+
+ pc->isDeathPenaltyJob = pc_isDeathPenaltyJob;
+ pc->has_second_costume = pc_has_second_costume;
+ pc->expandInventory = pc_expandInventory;
}
diff --git a/src/map/pc.h b/src/map/pc.h
index 0e4f1affd..90e59edb2 100644
--- a/src/map/pc.h
+++ b/src/map/pc.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -28,6 +28,7 @@
#include "map/log.h" // struct e_log_pick_type
#include "map/map.h" // RC_MAX, ELE_MAX
#include "map/pc_groups.h" // GroupSettings
+#include "map/rodex.h"
#include "map/script.h" // struct reg_db
#include "map/searchstore.h" // struct s_search_store_info
#include "map/status.h" // enum sc_type, OPTION_*
@@ -36,7 +37,7 @@
#include "common/db.h"
#include "common/ers.h" // struct eri
#include "common/hercules.h"
-#include "common/mmo.h" // JOB_*, MAX_FAME_LIST, struct fame_list, struct mmo_charstatus, NEW_CARTS
+#include "common/mmo.h" // JOB_*, MAX_FAME_LIST, struct fame_list, struct mmo_charstatus, NEW_CARTS, struct s_achievement
/**
* Defines
@@ -73,6 +74,14 @@ enum equip_index {
EQI_MAX
};
+enum prevent_logout_trigger {
+ PLT_NONE = 0x0,
+ PLT_LOGIN = 0x1,
+ PLT_ATTACK = 0x2,
+ PLT_SKILL = 0x4,
+ PLT_DAMAGE = 0x8
+};
+
enum pc_unequipitem_flag {
PCUNEQUIPITEM_NONE = 0x0, ///< Just unequip
PCUNEQUIPITEM_RECALC = 0x1, ///< Recalculate status after unequipping
@@ -86,6 +95,14 @@ enum pc_resetskill_flag {
PCRESETSKILL_CHSEX = 0x4, // just reset the skills if the player class is a bard/dancer type (for changesex.)
};
+enum pc_checkitem_types {
+ PCCHECKITEM_NONE = 0x0,
+ PCCHECKITEM_INVENTORY = 0x1,
+ PCCHECKITEM_CART = 0x2,
+ PCCHECKITEM_STORAGE = 0x4,
+ PCCHECKITEM_GSTORAGE = 0x8
+};
+
struct weapon_data {
int atkmods[3];
BEGIN_ZEROED_BLOCK; // all the variables within this block get zero'ed in each call of status_calc_pc
@@ -115,7 +132,8 @@ BEGIN_ZEROED_BLOCK; // all the variables within this block get zero'ed in each c
END_ZEROED_BLOCK;
};
struct s_autospell {
- short id, lv, rate, card_id, flag;
+ short id, lv, rate, flag;
+ int card_id;
bool lock; // bAutoSpellOnSkill: blocks autospell from triggering again, while being executed
};
/// AddEff bonus data
@@ -133,7 +151,8 @@ struct s_addeffectonskill {
unsigned char target;
};
struct s_add_drop {
- short id, group;
+ bool is_group;
+ int id;
int race, rate;
};
struct s_autobonus {
@@ -151,7 +170,7 @@ enum npc_timeout_type {
struct pc_combos {
struct script_code *bonus;/* the script of the combo */
- unsigned short id;/* this combo id */
+ int id; /* this combo id */
};
struct map_session_data {
@@ -184,10 +203,8 @@ struct map_session_data {
unsigned int noask :1; // [LuzZza]
unsigned int trading :1; //[Skotlex] is 1 only after a trade has started.
unsigned int deal_locked :2; //1: Clicked on OK. 2: Clicked on TRADE
- unsigned int monster_ignore :1; // for monsters to ignore a character [Valaris] [zzo]
unsigned int size :2; // for tiny/large types
unsigned int night :1; //Holds whether or not the player currently has the SI_NIGHT effect on. [Skotlex]
- unsigned int blockedmove :1;
unsigned int using_fake_npc :1;
unsigned int rewarp :1; //Signals that a player should warp as soon as he is done loading a map. [Skotlex]
unsigned int killer : 1;
@@ -203,7 +220,7 @@ struct map_session_data {
unsigned int callshop : 1; // flag to indicate that a script used callshop; on a shop
short pmap; // Previous map on Map Change
unsigned short autoloot;
- unsigned short autolootid[AUTOLOOTITEM_SIZE]; // [Zephyrus]
+ int autolootid[AUTOLOOTITEM_SIZE]; // [Zephyrus]
unsigned short autoloottype;
unsigned int autolooting : 1; //performance-saver, autolooting state for @alootid
unsigned short autobonus; //flag to indicate if an autobonus is activated. [Inkfish]
@@ -217,7 +234,6 @@ struct map_session_data {
unsigned int hold_recalc : 1;
unsigned int snovice_call_flag : 3; //Summon Angel (stage 1~3)
unsigned int hpmeter_visible : 1;
- unsigned int itemcheck : 1;
unsigned int standalone : 1;/* [Ind/Hercules <3] */
unsigned int loggingout : 1;
unsigned int warp_clean : 1;
@@ -243,7 +259,9 @@ struct map_session_data {
unsigned int extra_temp_permissions; /* permissions from @addperm */
struct mmo_charstatus status;
- struct item_data* inventory_data[MAX_INVENTORY]; // direct pointers to itemdb entries (faster than doing item_id lookups)
+ struct item_data *inventory_data[MAX_INVENTORY]; // direct pointers to itemdb entries (faster than doing item_id lookups)
+ struct storage_data storage; ///< Account Storage
+ enum pc_checkitem_types itemcheck;
short equip_index[EQI_MAX];
unsigned int weight,max_weight;
int cart_weight,cart_num,cart_weight_max;
@@ -274,7 +292,7 @@ struct map_session_data {
uint16 skill_id_old,skill_lv_old;
uint16 skill_id_dance,skill_lv_dance;
short cook_mastery; // range: [0,1999] [Inkfish]
- bool blockskill[MAX_SKILL];
+ bool blockskill[MAX_SKILL_DB];
int cloneskill_id, reproduceskill_id;
int menuskill_id, menuskill_val, menuskill_val2;
int invincible_timer;
@@ -287,10 +305,13 @@ struct map_session_data {
int64 cansendmail_tick; /// Mail System Flood Protection
int64 ks_floodprotect_tick; /// [Kill Steal Protection]
struct {
- short nameid;
+ int nameid;
int64 tick;
} item_delay[MAX_ITEMDELAYS]; // [Paradox924X]
- short weapontype1,weapontype2;
+ bool has_shield; ///< Whether the character is wearing a shield.
+ int16 weapontype; ///< Weapon type considering both hands (@see enum weapon_type).
+ int16 weapontype1; ///< Weapon type in the right/primary hand (@see enum weapon_type).
+ int16 weapontype2; ///< Weapon type in the left/secondary hand (@see enum weapon_type).
short disguise; // [Valaris]
struct weapon_data right_weapon, left_weapon;
@@ -422,6 +443,7 @@ END_ZEROED_BLOCK;
int party_invite, party_invite_account; // for handling party invitation (holds party id and account id)
int adopt_invite; // Adoption
struct guild *guild;/* [Ind/Hercules] speed everything up */
+ struct clan *clan;
int guild_invite,guild_invite_account;
int guild_emblem_id,guild_alliance,guild_alliance_account;
short guild_x,guild_y; // For guildmate position display. [Skotlex] should be short [zzo]
@@ -476,12 +498,20 @@ END_ZEROED_BLOCK;
// Mail System [Zephyrus]
struct {
- short nameid;
+ int nameid;
int index, amount, zeny;
struct mail_data inbox;
bool changed; // if true, should sync with charserver on next mailbox request
} mail;
+ // RoDEX
+ struct {
+ struct rodex_message tmp;
+ struct rodex_maillist messages;
+ int total;
+ bool new_mail;
+ } rodex;
+
// Quest log system
int num_quests; ///< Number of entries in quest_log
int avail_quests; ///< Number of Q_ACTIVE and Q_INACTIVE entries in quest log (index of the first Q_COMPLETE entry)
@@ -527,8 +557,7 @@ END_ZEROED_BLOCK;
int shadowform_id;
/* [Ind/Hercules] */
- struct channel_data **channels;
- unsigned char channel_count;
+ VECTOR_DECL(struct channel_data *) channels;
struct channel_data *gcbind;
unsigned char fontcolor;
int fontcolor_tid;
@@ -588,6 +617,25 @@ END_ZEROED_BLOCK;
const char* delunit_prevfile;
int delunit_prevline;
+ // HatEffect
+ VECTOR_DECL(int) hatEffectId;
+
+ struct {
+ unsigned move : 1;
+ unsigned attack : 1;
+ unsigned skill : 1;
+ unsigned useitem : 1;
+ unsigned chat : 1;
+ unsigned immune : 1;
+ unsigned sitstand : 1;
+ unsigned commands : 1;
+ } block_action;
+
+ /* Achievement System */
+ struct char_achievements achievement;
+ bool achievements_received;
+ // Title
+ VECTOR_DECL(int) title_ids;
};
#define EQP_WEAPON EQP_HAND_R
@@ -659,8 +707,13 @@ END_ZEROED_BLOCK;
#define pc_stop_attack(sd) (unit->stop_attack(&(sd)->bl))
//Weapon check considering dual wielding.
-#define pc_check_weapontype(sd, type) ((type)&((sd)->status.weapon < MAX_SINGLE_WEAPON_TYPE? \
- 1<<(sd)->status.weapon:(1<<(sd)->weapontype1)|(1<<(sd)->weapontype2)|(1<<(sd)->status.weapon)))
+#define pc_check_weapontype(sd, type) ( \
+ (type) & ( \
+ (sd)->weapontype < MAX_SINGLE_WEAPON_TYPE ? \
+ 1 << (sd)->weapontype : \
+ (1 << (sd)->weapontype1) | (1 << (sd)->weapontype2) \
+ ) \
+ )
// clientside display macros (values to the left/right of the "+")
#ifdef RENEWAL
@@ -749,7 +802,7 @@ enum { ADDITEM_EXIST , ADDITEM_NEW , ADDITEM_OVERAMOUNT };
**/
struct item_cd {
int64 tick[MAX_ITEMDELAYS];//tick
- short nameid[MAX_ITEMDELAYS];//skill id
+ int nameid[MAX_ITEMDELAYS];//skill id
};
enum e_pc_autotrade_update_action {
@@ -778,6 +831,24 @@ struct autotrade_vending {
struct hplugin_data_store *hdata; ///< HPM Plugin Data Store
};
+struct class_exp_group {
+ char name[SCRIPT_VARNAME_LENGTH];
+ int max_level;
+ VECTOR_DECL(uint64) exp;
+};
+
+/**
+* Exp types
+*/
+enum class_exp_type {
+ CLASS_EXP_TABLE_BASE,
+ CLASS_EXP_TABLE_JOB
+};
+
+struct class_exp_tables {
+ struct class_exp_group *class_exp_table[CLASS_COUNT][2];
+};
+
/*=====================================
* Interface : pc.h
* Generated by HerculesInterfaceMaker
@@ -795,8 +866,6 @@ struct pc_interface {
/* */
BEGIN_ZEROED_BLOCK; /* Everything within this block will be memset to 0 when status_defaults() is executed */
- unsigned int exp_table[CLASS_COUNT][2][MAX_LEVEL];
- int max_level[CLASS_COUNT][2];
unsigned int statp[MAX_LEVEL+1];
unsigned int level_penalty[3][RC_MAX][MAX_LEVEL*2+1];
/* */
@@ -806,6 +875,8 @@ BEGIN_ZEROED_BLOCK; /* Everything within this block will be memset to 0 when sta
struct fame_list taekwon_fame_list[MAX_FAME_LIST];
END_ZEROED_BLOCK; /* End */
+ struct class_exp_tables *dbs;
+ VECTOR_DECL(struct class_exp_group) class_exp_groups[2];
unsigned int equip_pos[EQI_MAX];
struct sg_data sg_info[MAX_PC_FEELHATE];
/* */
@@ -834,7 +905,7 @@ END_ZEROED_BLOCK; /* End */
int (*setrestartvalue) (struct map_session_data *sd,int type);
int (*makesavestatus) (struct map_session_data *sd);
- void (*respawn) (struct map_session_data* sd, clr_type clrtype);
+ void (*respawn) (struct map_session_data* sd, enum clr_type clrtype);
int (*setnewpc) (struct map_session_data *sd, int account_id, int char_id, int login_id1, unsigned int client_tick, int sex, int fd);
bool (*authok) (struct map_session_data *sd, int login_id2, time_t expiration_time, int group_id, const struct mmo_charstatus *st, bool changing_mapservers);
void (*authfail) (struct map_session_data *sd);
@@ -842,6 +913,7 @@ END_ZEROED_BLOCK; /* End */
int (*isequip) (struct map_session_data *sd,int n);
int (*equippoint) (struct map_session_data *sd,int n);
+ int (*item_equippoint) (struct map_session_data *sd, struct item_data* id);
int (*setinventorydata) (struct map_session_data *sd);
int (*checkskill) (struct map_session_data *sd,uint16 skill_id);
@@ -850,19 +922,21 @@ END_ZEROED_BLOCK; /* End */
int (*checkequip) (struct map_session_data *sd,int pos);
int (*calc_skilltree) (struct map_session_data *sd);
+ void (*calc_skilltree_clear) (struct map_session_data *sd);
+ void (*calc_skilltree_bonus) (struct map_session_data *sd, int classidx);
int (*calc_skilltree_normalize_job) (struct map_session_data *sd);
int (*clean_skilltree) (struct map_session_data *sd);
- int (*setpos) (struct map_session_data* sd, unsigned short map_index, int x, int y, clr_type clrtype);
+ int (*setpos) (struct map_session_data* sd, unsigned short map_index, int x, int y, enum clr_type clrtype);
int (*setsavepoint) (struct map_session_data *sd, short map_index, int x, int y);
- int (*randomwarp) (struct map_session_data *sd,clr_type type);
+ int (*randomwarp) (struct map_session_data *sd, enum clr_type type);
int (*memo) (struct map_session_data* sd, int pos);
int (*checkadditem) (struct map_session_data *sd,int nameid,int amount);
int (*inventoryblank) (struct map_session_data *sd);
int (*search_inventory) (struct map_session_data *sd,int item_id);
int (*payzeny) (struct map_session_data *sd,int zeny, enum e_log_pick_type type, struct map_session_data *tsd);
- int (*additem) (struct map_session_data *sd,struct item *item_data,int amount,e_log_pick_type log_type);
+ int (*additem) (struct map_session_data *sd, const struct item *item_data, int amount, e_log_pick_type log_type);
int (*getzeny) (struct map_session_data *sd,int zeny, enum e_log_pick_type type, struct map_session_data *tsd);
int (*delitem) (struct map_session_data *sd,int n,int amount,int type, short reason, e_log_pick_type log_type);
@@ -913,12 +987,13 @@ END_ZEROED_BLOCK; /* End */
int (*maxbaselv) (const struct map_session_data *sd);
int (*maxjoblv) (const struct map_session_data *sd);
int (*checkbaselevelup) (struct map_session_data *sd);
+ void (*checkbaselevelup_sc) (struct map_session_data *sd);
int (*checkjoblevelup) (struct map_session_data *sd);
- bool (*gainexp) (struct map_session_data *sd, struct block_list *src, unsigned int base_exp, unsigned int job_exp, bool is_quest);
- unsigned int (*nextbaseexp) (const struct map_session_data *sd);
- unsigned int (*thisbaseexp) (const struct map_session_data *sd);
- unsigned int (*nextjobexp) (const struct map_session_data *sd);
- unsigned int (*thisjobexp) (const struct map_session_data *sd);
+ bool (*gainexp) (struct map_session_data *sd, struct block_list *src, uint64 base_exp, uint64 job_exp, bool is_quest);
+ uint64 (*nextbaseexp) (const struct map_session_data *sd);
+ uint64 (*thisbaseexp) (const struct map_session_data *sd);
+ uint64 (*nextjobexp) (const struct map_session_data *sd);
+ uint64 (*thisjobexp) (const struct map_session_data *sd);
int (*gets_status_point) (int level);
int (*need_status_point) (struct map_session_data *sd,int type,int val);
int (*maxparameterincrease) (struct map_session_data* sd, int type);
@@ -929,6 +1004,7 @@ END_ZEROED_BLOCK; /* End */
int (*resetlvl) (struct map_session_data *sd,int type);
int (*resetstate) (struct map_session_data *sd);
int (*resetskill) (struct map_session_data *sd, int flag);
+ bool (*resetskill_job) (struct map_session_data *sd, int index);
int (*resetfeel) (struct map_session_data *sd);
int (*resethate) (struct map_session_data *sd);
int (*equipitem) (struct map_session_data *sd,int n,int req_pos);
@@ -959,8 +1035,8 @@ END_ZEROED_BLOCK; /* End */
int (*changelook) (struct map_session_data *sd,int type,int val);
int (*equiplookall) (struct map_session_data *sd);
- int (*readparam) (const struct map_session_data *sd, int type);
- int (*setparam) (struct map_session_data *sd,int type,int val);
+ int64 (*readparam) (const struct map_session_data *sd, int type);
+ int (*setparam) (struct map_session_data *sd, int type, int64 val);
int (*readreg) (struct map_session_data *sd, int64 reg);
void (*setreg) (struct map_session_data *sd, int64 reg,int val);
char * (*readregstr) (struct map_session_data *sd, int64 reg);
@@ -1001,7 +1077,9 @@ END_ZEROED_BLOCK; /* End */
void (*delinvincibletimer) (struct map_session_data* sd);
int (*addspiritball) (struct map_session_data *sd,int interval,int max);
+ int (*addspiritball_sub) (struct map_session_data *sd);
int (*delspiritball) (struct map_session_data *sd,int count,int type);
+ int (*delspiritball_sub) (struct map_session_data *sd);
int (*getmaxspiritball) (struct map_session_data *sd, int min);
void (*addfame) (struct map_session_data *sd, int ranktype, int count);
int (*fame_rank) (int char_id, int ranktype);
@@ -1009,6 +1087,9 @@ END_ZEROED_BLOCK; /* End */
int (*set_hate_mob) (struct map_session_data *sd, int pos, struct block_list *bl);
int (*readdb) (void);
+ bool (*read_exp_db) (void);
+ int (*read_exp_db_sub) (struct config_setting_t *conf, bool base);
+ bool (*read_exp_db_sub_class) (struct config_setting_t *t, bool base);
int (*map_day_timer) (int tid, int64 tick, int id, intptr_t data); // by [yor]
int (*map_night_timer) (int tid, int64 tick, int id, intptr_t data); // by [yor]
// Rental System
@@ -1039,12 +1120,12 @@ END_ZEROED_BLOCK; /* End */
int (*check_banding) ( struct block_list *bl, va_list ap );
int (*inventory_rental_end) (int tid, int64 tick, int id, intptr_t data);
void (*check_skilltree) (struct map_session_data *sd, int skill_id);
- int (*bonus_autospell) (struct s_autospell *spell, int max, short id, short lv, short rate, short flag, short card_id);
- int (*bonus_autospell_onskill) (struct s_autospell *spell, int max, short src_skill, short id, short lv, short rate, short card_id);
+ int (*bonus_autospell) (struct s_autospell *spell, int max, short id, short lv, short rate, short flag, int card_id);
+ int (*bonus_autospell_onskill) (struct s_autospell *spell, int max, short src_skill, short id, short lv, short rate, int card_id);
int (*bonus_addeff) (struct s_addeffect* effect, int max, enum sc_type id, int16 rate, int16 arrow_rate, uint8 flag, uint16 duration);
int (*bonus_addeff_onskill) (struct s_addeffectonskill* effect, int max, enum sc_type id, short rate, short skill_id, unsigned char target);
- int (*bonus_item_drop) (struct s_add_drop *drop, const short max, short id, short group, int race, int rate);
- void (*calcexp) (struct map_session_data *sd, unsigned int *base_exp, unsigned int *job_exp, struct block_list *src);
+ int (*bonus_item_drop) (struct s_add_drop *drop, const short max, int id, bool is_group, int race, int rate);
+ void (*calcexp) (struct map_session_data *sd, uint64 *base_exp, uint64 *job_exp, struct block_list *src);
int (*respawn_timer) (int tid, int64 tick, int id, intptr_t data);
int (*jobchange_killclone) (struct block_list *bl, va_list ap);
int (*getstat) (struct map_session_data* sd, int type);
@@ -1056,6 +1137,7 @@ END_ZEROED_BLOCK; /* End */
int (*autosave) (int tid, int64 tick, int id, intptr_t data);
int (*follow_timer) (int tid, int64 tick, int id, intptr_t data);
void (*read_skill_tree) (void);
+ bool (*read_skill_job_skip) (short skill_id, int job_id);
void (*clear_skill_tree) (void);
int (*isUseitem) (struct map_session_data *sd,int n);
int (*show_steal) (struct block_list *bl,va_list ap);
@@ -1078,6 +1160,10 @@ END_ZEROED_BLOCK; /* End */
bool (*db_checkid) (int class);
void (*validate_levels) (void);
+ void (*update_job_and_level) (struct map_session_data *sd);
+ void (*clear_exp_groups) (void);
+ void (*init_exp_groups) (void);
+ bool (*job_is_dummy) (int job);
/**
* Autotrade persistency [Ind/Hercules <3]
@@ -1097,6 +1183,9 @@ END_ZEROED_BLOCK; /* End */
bool (*process_chat_message) (struct map_session_data *sd, const char *message);
void (*check_supernovice_call) (struct map_session_data *sd, const char *message);
bool (*check_basicskill) (struct map_session_data *sd, int level);
+ bool (*isDeathPenaltyJob) (uint16 job);
+ bool (*has_second_costume) (struct map_session_data *sd);
+ bool (*expandInventory) (struct map_session_data *sd, int adjustSize);
};
#ifdef HERCULES_CORE
diff --git a/src/map/pc_groups.c b/src/map/pc_groups.c
index 9645300ef..887c946e3 100644
--- a/src/map/pc_groups.c
+++ b/src/map/pc_groups.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -36,7 +36,7 @@
static GroupSettings dummy_group; ///< dummy group used in dummy map sessions @see pc_get_dummy_sd()
-struct pc_groups_interface pcg_s;
+static struct pc_groups_interface pcg_s;
struct pc_groups_interface *pcg;
/**
@@ -44,7 +44,7 @@ struct pc_groups_interface *pcg;
* Used in dummy map sessions.
* @see pc_get_dummy_sd()
*/
-GroupSettings* pc_group_get_dummy_group(void)
+static GroupSettings *pc_group_get_dummy_group(void)
{
return &dummy_group;
}
@@ -53,7 +53,7 @@ GroupSettings* pc_group_get_dummy_group(void)
* @retval NULL if not found
* @private
*/
-static inline GroupSettings* name2group(const char* group_name)
+static inline GroupSettings *name2group(const char *group_name)
{
return strdb_get(pcg->name_db, group_name);
}
@@ -62,7 +62,8 @@ static inline GroupSettings* name2group(const char* group_name)
* Loads group configuration from config file into memory.
* @private
*/
-static void read_config(void) {
+static void read_config(void)
+{
struct config_t pc_group_config;
struct config_setting_t *groups = NULL;
const char *config_filename = "conf/groups.conf"; // FIXME hardcoded name
@@ -308,7 +309,7 @@ static void read_config(void) {
* @param group group
* @param permission permission to check
*/
-bool pc_group_has_permission(GroupSettings *group, unsigned int permission)
+static bool pc_group_has_permission(GroupSettings *group, unsigned int permission)
{
nullpo_retr(false, group);
return ((group->e_permissions&permission) != 0);
@@ -318,7 +319,7 @@ bool pc_group_has_permission(GroupSettings *group, unsigned int permission)
* Checks if commands used by player group should be logged
* @param group group
*/
-bool pc_group_should_log_commands(GroupSettings *group)
+static bool pc_group_should_log_commands(GroupSettings *group)
{
nullpo_retr(true, group);
return group->log_commands;
@@ -329,7 +330,7 @@ bool pc_group_should_log_commands(GroupSettings *group)
* @param group_id group id
* @returns true if group exists, false otherwise
*/
-bool pc_group_exists(int group_id)
+static bool pc_group_exists(int group_id)
{
return idb_exists(pcg->db, group_id);
}
@@ -337,7 +338,7 @@ bool pc_group_exists(int group_id)
/**
* @retval NULL if not found
*/
-GroupSettings* pc_group_id2group(int group_id)
+static GroupSettings *pc_group_id2group(int group_id)
{
return idb_get(pcg->db, group_id);
}
@@ -348,7 +349,7 @@ GroupSettings* pc_group_id2group(int group_id)
* @return group name
* @public
*/
-const char* pc_group_get_name(GroupSettings *group)
+static const char *pc_group_get_name(GroupSettings *group)
{
nullpo_retr(NULL, group);
return group->name;
@@ -360,7 +361,7 @@ const char* pc_group_get_name(GroupSettings *group)
* @return group level
* @public
*/
-int pc_group_get_level(GroupSettings *group)
+static int pc_group_get_level(GroupSettings *group)
{
nullpo_ret(group);
return group->level;
@@ -372,7 +373,7 @@ int pc_group_get_level(GroupSettings *group)
* @return group index
* @public
*/
-int pc_group_get_idx(GroupSettings *group)
+static int pc_group_get_idx(GroupSettings *group)
{
nullpo_ret(group);
return group->index;
@@ -382,7 +383,8 @@ int pc_group_get_idx(GroupSettings *group)
* Insert a new permission
* @return inserted key or 0 upon failure.
**/
-unsigned int pc_groups_add_permission(const char *name) {
+static unsigned int pc_groups_add_permission(const char *name)
+{
uint64 key = 0x1;
unsigned char i;
nullpo_ret(name);
@@ -414,7 +416,8 @@ unsigned int pc_groups_add_permission(const char *name) {
* Initialize PC Groups: allocate DBMaps and read config.
* @public
*/
-void do_init_pc_groups(void) {
+static void do_init_pc_groups(void)
+{
const struct {
const char *name;
unsigned int permission;
@@ -484,7 +487,7 @@ static int group_db_clear_sub(union DBKey key, struct DBData *data, va_list args
* Finalize PC Groups: free DBMaps and config.
* @public
*/
-void do_final_pc_groups(void)
+static void do_final_pc_groups(void)
{
if (pcg->db != NULL)
pcg->db->destroy(pcg->db, group_db_clear_sub);
@@ -506,7 +509,8 @@ void do_final_pc_groups(void)
* Used in @reloadatcommand
* @public
*/
-void pc_groups_reload(void) {
+static void pc_groups_reload(void)
+{
struct map_session_data *sd = NULL;
struct s_mapiterator *iter;
@@ -528,7 +532,8 @@ void pc_groups_reload(void) {
/**
* Connect Interface
**/
-void pc_groups_defaults(void) {
+void pc_groups_defaults(void)
+{
pcg = &pcg_s;
/* */
pcg->db = NULL;
diff --git a/src/map/pc_groups.h b/src/map/pc_groups.h
index 7c933f054..6070809e0 100644
--- a/src/map/pc_groups.h
+++ b/src/map/pc_groups.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/map/pet.c b/src/map/pet.c
index 9ac496659..dd9f1ebbf 100644
--- a/src/map/pet.c
+++ b/src/map/pet.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -23,6 +23,7 @@
#include "config/core.h" // DBPATH
#include "pet.h"
+#include "map/achievement.h"
#include "map/atcommand.h" // msg_txt()
#include "map/battle.h"
#include "map/chrif.h"
@@ -39,6 +40,7 @@
#include "map/skill.h"
#include "map/status.h"
#include "map/unit.h"
+#include "common/conf.h"
#include "common/db.h"
#include "common/ers.h"
#include "common/memmgr.h"
@@ -53,12 +55,12 @@
#include <stdlib.h>
#include <string.h>
-struct pet_interface pet_s;
+static struct pet_interface pet_s;
struct pet_interface *pet;
#define MIN_PETTHINKTIME 100
-int pet_hungry_val(struct pet_data *pd)
+static int pet_hungry_val(struct pet_data *pd)
{
nullpo_ret(pd);
@@ -74,7 +76,7 @@ int pet_hungry_val(struct pet_data *pd)
return 0;
}
-void pet_set_intimate(struct pet_data *pd, int value)
+static void pet_set_intimate(struct pet_data *pd, int value)
{
int intimate;
struct map_session_data *sd;
@@ -84,11 +86,24 @@ void pet_set_intimate(struct pet_data *pd, int value)
sd = pd->msd;
pd->pet.intimate = value;
+
if( (intimate >= battle_config.pet_equip_min_friendly && pd->pet.intimate < battle_config.pet_equip_min_friendly) || (intimate < battle_config.pet_equip_min_friendly && pd->pet.intimate >= battle_config.pet_equip_min_friendly) )
status_calc_pc(sd,SCO_NONE);
+
+ /* Pet is lost, delete the egg */
+ if (value <= 0) {
+ int i;
+
+ ARR_FIND(0, sd->status.inventorySize, i, sd->status.inventory[i].card[0] == CARD0_PET &&
+ pd->pet.pet_id == MakeDWord(sd->status.inventory[i].card[1], sd->status.inventory[i].card[2]));
+
+ if (i != sd->status.inventorySize) {
+ pc->delitem(sd, i, 1, 0, DELITEM_NORMAL, LOG_TYPE_EGG);
+ }
+ }
}
-int pet_create_egg(struct map_session_data *sd, int item_id)
+static int pet_create_egg(struct map_session_data *sd, int item_id)
{
int pet_id = pet->search_petDB_index(item_id, PET_EGG);
nullpo_ret(sd);
@@ -98,13 +113,13 @@ int pet_create_egg(struct map_session_data *sd, int item_id)
intif->create_pet(sd->status.account_id, sd->status.char_id,
(short)pet->db[pet_id].class_,
(short)mob->db(pet->db[pet_id].class_)->lv,
- (short)pet->db[pet_id].EggID, 0,
+ pet->db[pet_id].EggID, 0,
(short)pet->db[pet_id].intimate,
100, 0, 1, pet->db[pet_id].jname);
return 1;
}
-int pet_unlocktarget(struct pet_data *pd)
+static int pet_unlocktarget(struct pet_data *pd)
{
nullpo_ret(pd);
@@ -117,7 +132,8 @@ int pet_unlocktarget(struct pet_data *pd)
/*==========================================
* Pet Attack Skill [Skotlex]
*------------------------------------------*/
-int pet_attackskill(struct pet_data *pd, int target_id) {
+static int pet_attackskill(struct pet_data *pd, int target_id)
+{
nullpo_ret(pd);
if (!battle_config.pet_status_support || !pd->a_skill ||
(battle_config.pet_equip_required && !pd->pet.equip))
@@ -146,7 +162,8 @@ int pet_attackskill(struct pet_data *pd, int target_id) {
return 0;
}
-int pet_target_check(struct map_session_data *sd,struct block_list *bl,int type) {
+static int pet_target_check(struct map_session_data *sd, struct block_list *bl, int type)
+{
struct pet_data *pd;
int rate;
@@ -190,7 +207,7 @@ int pet_target_check(struct map_session_data *sd,struct block_list *bl,int type)
/*==========================================
* Pet SC Check [Skotlex]
*------------------------------------------*/
-int pet_sc_check(struct map_session_data *sd, int type)
+static int pet_sc_check(struct map_session_data *sd, int type)
{
struct pet_data *pd;
@@ -209,7 +226,8 @@ int pet_sc_check(struct map_session_data *sd, int type)
return 0;
}
-int pet_hungry(int tid, int64 tick, int id, intptr_t data) {
+static int pet_hungry(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data *sd;
struct pet_data *pd;
int interval;
@@ -232,6 +250,13 @@ int pet_hungry(int tid, int64 tick, int id, intptr_t data) {
return 1; //You lost the pet already, the rest is irrelevant.
pd->pet.hungry--;
+ /* Pet Autofeed */
+ if (battle_config.feature_enable_homun_autofeed != 0) {
+ if (pd->petDB->autofeed == 1 && pd->pet.autofeed == 1 && pd->pet.hungry <= 25) {
+ pet->food(sd, pd);
+ }
+ }
+
if( pd->pet.hungry < 0 )
{
pet_stop_attack(pd);
@@ -258,7 +283,7 @@ int pet_hungry(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-int search_petDB_index(int key,int type)
+static int search_petDB_index(int key, int type)
{
int i;
@@ -279,7 +304,7 @@ int search_petDB_index(int key,int type)
return -1;
}
-int pet_hungry_timer_delete(struct pet_data *pd)
+static int pet_hungry_timer_delete(struct pet_data *pd)
{
nullpo_ret(pd);
if(pd->pet_hungry_timer != INVALID_TIMER) {
@@ -290,7 +315,7 @@ int pet_hungry_timer_delete(struct pet_data *pd)
return 1;
}
-int pet_performance(struct map_session_data *sd, struct pet_data *pd)
+static int pet_performance(struct map_session_data *sd, struct pet_data *pd)
{
int val;
@@ -308,25 +333,26 @@ int pet_performance(struct map_session_data *sd, struct pet_data *pd)
return 1;
}
-int pet_return_egg(struct map_session_data *sd, struct pet_data *pd)
+static int pet_return_egg(struct map_session_data *sd, struct pet_data *pd)
{
- struct item tmp_item;
- int flag;
+ int i;
nullpo_retr(1, sd);
nullpo_retr(1, pd);
pet->lootitem_drop(pd,sd);
- memset(&tmp_item,0,sizeof(tmp_item));
- tmp_item.nameid = pd->petDB->EggID;
- tmp_item.identify = 1;
- tmp_item.card[0] = CARD0_PET;
- tmp_item.card[1] = GetWord(pd->pet.pet_id,0);
- tmp_item.card[2] = GetWord(pd->pet.pet_id,1);
- tmp_item.card[3] = pd->pet.rename_flag;
- if((flag = pc->additem(sd,&tmp_item,1,LOG_TYPE_EGG))) {
- clif->additem(sd,0,0,flag);
- map->addflooritem(&sd->bl, &tmp_item, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0);
+
+ // Pet Evolution
+ ARR_FIND(0, sd->status.inventorySize, i, sd->status.inventory[i].card[0] == CARD0_PET &&
+ pd->pet.pet_id == MakeDWord(sd->status.inventory[i].card[1], sd->status.inventory[i].card[2]));
+
+ if (i != sd->status.inventorySize) {
+ sd->status.inventory[i].attribute &= ~ATTR_BROKEN;
+ sd->status.inventory[i].bound = IBT_NONE;
}
+#if PACKETVER >= 20180704
+ clif->inventoryList(sd);
+ clif->send_petdata(sd, pd, 6, 0);
+#endif
pd->pet.incubate = 1;
unit->free(&pd->bl,CLR_OUTSIGHT);
@@ -336,7 +362,7 @@ int pet_return_egg(struct map_session_data *sd, struct pet_data *pd)
return 1;
}
-int pet_data_init(struct map_session_data *sd, struct s_pet *petinfo)
+static int pet_data_init(struct map_session_data *sd, struct s_pet *petinfo)
{
struct pet_data *pd;
int i=0,interval=0;
@@ -411,7 +437,7 @@ int pet_data_init(struct map_session_data *sd, struct s_pet *petinfo)
return 0;
}
-int pet_birth_process(struct map_session_data *sd, struct s_pet *petinfo)
+static int pet_birth_process(struct map_session_data *sd, struct s_pet *petinfo)
{
nullpo_retr(1, sd);
nullpo_retr(1, petinfo);
@@ -440,6 +466,9 @@ int pet_birth_process(struct map_session_data *sd, struct s_pet *petinfo)
clif->spawn(&sd->pd->bl);
clif->send_petdata(sd,sd->pd, 0,0);
clif->send_petdata(sd,sd->pd, 5,battle_config.pet_hair_style);
+#if PACKETVER >= 20180704
+ clif->send_petdata(sd, sd->pd, 6, 1);
+#endif
clif->send_petdata(NULL, sd->pd, 3, sd->pd->vd.head_bottom);
clif->send_petstatus(sd);
}
@@ -448,7 +477,8 @@ int pet_birth_process(struct map_session_data *sd, struct s_pet *petinfo)
return 0;
}
-int pet_recv_petdata(int account_id,struct s_pet *p,int flag) {
+static int pet_recv_petdata(int account_id, struct s_pet *p, int flag)
+{
struct map_session_data *sd;
nullpo_retr(1, p);
@@ -461,19 +491,23 @@ int pet_recv_petdata(int account_id,struct s_pet *p,int flag) {
}
if(p->incubate == 1) {
int i;
- //Delete egg from inventory. [Skotlex]
- for (i = 0; i < MAX_INVENTORY; i++) {
- if(sd->status.inventory[i].card[0] == CARD0_PET &&
- p->pet_id == MakeDWord(sd->status.inventory[i].card[1], sd->status.inventory[i].card[2]))
- break;
- }
- if(i >= MAX_INVENTORY) {
+ // Get Egg Index
+ ARR_FIND(0, sd->status.inventorySize, i, sd->status.inventory[i].card[0] == CARD0_PET &&
+ p->pet_id == MakeDWord(sd->status.inventory[i].card[1], sd->status.inventory[i].card[2]));
+
+ if(i == sd->status.inventorySize) {
ShowError("pet_recv_petdata: Hatching pet (%d:%s) aborted, couldn't find egg in inventory for removal!\n",p->pet_id, p->name);
sd->status.pet_id = 0;
return 1;
}
- if (!pet->birth_process(sd,p)) //Pet hatched. Delete egg.
- pc->delitem(sd, i, 1, 0, DELITEM_NORMAL, LOG_TYPE_EGG);
+
+
+ if (!pet->birth_process(sd,p)) {
+ // Pet Evolution, Hide the egg by setting broken attribute (0x2) [Asheraf]
+ sd->status.inventory[i].attribute |= ATTR_BROKEN;
+ // bind the egg to the character to avoid moving it via forged packets [Asheraf]
+ sd->status.inventory[i].bound = IBT_CHARACTER;
+ }
} else {
pet->data_init(sd,p);
if(sd->pd && sd->bl.prev != NULL) {
@@ -489,11 +523,11 @@ int pet_recv_petdata(int account_id,struct s_pet *p,int flag) {
return 0;
}
-int pet_select_egg(struct map_session_data *sd,short egg_index)
+static int pet_select_egg(struct map_session_data *sd, int egg_index)
{
nullpo_ret(sd);
- if(egg_index < 0 || egg_index >= MAX_INVENTORY)
+ if (egg_index < 0 || egg_index >= sd->status.inventorySize)
return 0; //Forged packet!
if(sd->status.inventory[egg_index].card[0] == CARD0_PET)
@@ -504,7 +538,7 @@ int pet_select_egg(struct map_session_data *sd,short egg_index)
return 0;
}
-int pet_catch_process1(struct map_session_data *sd,int target_class)
+static int pet_catch_process1(struct map_session_data *sd, int target_class)
{
nullpo_ret(sd);
@@ -514,7 +548,8 @@ int pet_catch_process1(struct map_session_data *sd,int target_class)
return 0;
}
-int pet_catch_process2(struct map_session_data* sd, int target_id) {
+static int pet_catch_process2(struct map_session_data *sd, int target_id)
+{
struct mob_data *md = NULL;
struct block_list *bl = NULL;
int i = 0, pet_catch_rate = 0;
@@ -527,7 +562,8 @@ int pet_catch_process2(struct map_session_data* sd, int target_id) {
// Invalid inputs/state, abort capture.
clif->pet_roulette(sd,0);
sd->catch_target_class = -1;
- sd->itemid = sd->itemindex = -1;
+ sd->itemid = -1;
+ sd->itemindex = -1;
return 1;
}
@@ -547,8 +583,8 @@ int pet_catch_process2(struct map_session_data* sd, int target_id) {
pet_catch_rate = (pet->db[i].capture + (sd->status.base_level - md->level)*30 + sd->battle_status.luk*20)*(200 - get_percentage(md->status.hp, md->status.max_hp))/100;
if(pet_catch_rate < 1) pet_catch_rate = 1;
- if(battle_config.pet_catch_rate != 100)
- pet_catch_rate = (pet_catch_rate*battle_config.pet_catch_rate)/100;
+ if(battle->bc->pet_catch_rate != 100)
+ pet_catch_rate = (pet_catch_rate*battle->bc->pet_catch_rate)/100;
if(rnd()%10000 < pet_catch_rate)
{
@@ -557,6 +593,8 @@ int pet_catch_process2(struct map_session_data* sd, int target_id) {
clif->pet_roulette(sd,1);
intif->create_pet(sd->status.account_id,sd->status.char_id,pet->db[i].class_,mob->db(pet->db[i].class_)->lv,
pet->db[i].EggID,0,pet->db[i].intimate,100,0,1,pet->db[i].jname);
+
+ achievement->validate_taming(sd, pet->db[i].class_);
}
else
{
@@ -576,7 +614,8 @@ int pet_catch_process2(struct map_session_data* sd, int target_id) {
* pet_id - Should contain pet id otherwise means failure
* returns true on success
**/
-bool pet_get_egg(int account_id, short pet_class, int pet_id ) {
+static bool pet_get_egg(int account_id, short pet_class, int pet_id)
+{
struct map_session_data *sd;
struct item tmp_item;
int i = 0, ret = 0;
@@ -610,13 +649,13 @@ bool pet_get_egg(int account_id, short pet_class, int pet_id ) {
tmp_item.card[3] = 0; //New pets are not named.
if((ret = pc->additem(sd,&tmp_item,1,LOG_TYPE_PICKDROP_PLAYER))) {
clif->additem(sd,0,0,ret);
- map->addflooritem(&sd->bl, &tmp_item, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0);
+ map->addflooritem(&sd->bl, &tmp_item, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false);
}
return true;
}
-int pet_menu(struct map_session_data *sd,int menunum)
+static int pet_menu(struct map_session_data *sd, int menunum)
{
struct item_data *egg_id;
nullpo_ret(sd);
@@ -655,7 +694,7 @@ int pet_menu(struct map_session_data *sd,int menunum)
return 0;
}
-int pet_change_name(struct map_session_data *sd, const char *name)
+static int pet_change_name(struct map_session_data *sd, const char *name)
{
int i;
struct pet_data *pd;
@@ -674,7 +713,7 @@ int pet_change_name(struct map_session_data *sd, const char *name)
return intif_rename_pet(sd, name);
}
-int pet_change_name_ack(struct map_session_data *sd, const char *name, int flag)
+static int pet_change_name_ack(struct map_session_data *sd, const char *name, int flag)
{
struct pet_data *pd;
char *newname = NULL;
@@ -701,7 +740,8 @@ int pet_change_name_ack(struct map_session_data *sd, const char *name, int flag)
return 1;
}
-int pet_equipitem(struct map_session_data *sd,int index) {
+static int pet_equipitem(struct map_session_data *sd, int index)
+{
struct pet_data *pd;
int nameid;
@@ -733,7 +773,8 @@ int pet_equipitem(struct map_session_data *sd,int index) {
return 0;
}
-int pet_unequipitem(struct map_session_data *sd, struct pet_data *pd) {
+static int pet_unequipitem(struct map_session_data *sd, struct pet_data *pd)
+{
struct item tmp_item;
int nameid,flag;
@@ -751,7 +792,7 @@ int pet_unequipitem(struct map_session_data *sd, struct pet_data *pd) {
tmp_item.identify = 1;
if((flag = pc->additem(sd,&tmp_item,1,LOG_TYPE_CONSUME))) {
clif->additem(sd,0,0,flag);
- map->addflooritem(&sd->bl, &tmp_item, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0);
+ map->addflooritem(&sd->bl, &tmp_item, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false);
}
if( battle_config.pet_equip_required )
{ // Skotlex: halt support timers if needed
@@ -774,7 +815,8 @@ int pet_unequipitem(struct map_session_data *sd, struct pet_data *pd) {
return 0;
}
-int pet_food(struct map_session_data *sd, struct pet_data *pd) {
+static int pet_food(struct map_session_data *sd, struct pet_data *pd)
+{
int i, food_id;
nullpo_retr(1, pd);
@@ -820,7 +862,7 @@ int pet_food(struct map_session_data *sd, struct pet_data *pd) {
return 0;
}
-int pet_randomwalk(struct pet_data *pd, int64 tick)
+static int pet_randomwalk(struct pet_data *pd, int64 tick)
{
nullpo_ret(pd);
Assert_ret(pd->msd == 0 || pd->msd->pd == pd);
@@ -861,7 +903,8 @@ int pet_randomwalk(struct pet_data *pd, int64 tick)
return 0;
}
-int pet_ai_sub_hard(struct pet_data *pd, struct map_session_data *sd, int64 tick) {
+static int pet_ai_sub_hard(struct pet_data *pd, struct map_session_data *sd, int64 tick)
+{
struct block_list *target = NULL;
nullpo_ret(pd);
@@ -974,7 +1017,8 @@ int pet_ai_sub_hard(struct pet_data *pd, struct map_session_data *sd, int64 tick
return 0;
}
-int pet_ai_sub_foreachclient(struct map_session_data *sd,va_list ap) {
+static int pet_ai_sub_foreachclient(struct map_session_data *sd, va_list ap)
+{
int64 tick = va_arg(ap,int64);
nullpo_ret(sd);
if(sd->status.pet_id && sd->pd)
@@ -983,13 +1027,14 @@ int pet_ai_sub_foreachclient(struct map_session_data *sd,va_list ap) {
return 0;
}
-int pet_ai_hard(int tid, int64 tick, int id, intptr_t data) {
+static int pet_ai_hard(int tid, int64 tick, int id, intptr_t data)
+{
map->foreachpc(pet->ai_sub_foreachclient,tick);
return 0;
}
-int pet_ai_sub_hard_lootsearch(struct block_list *bl, va_list ap)
+static int pet_ai_sub_hard_lootsearch(struct block_list *bl, va_list ap)
{
struct pet_data *pd = va_arg(ap,struct pet_data *);
struct block_list **target = va_arg(ap,struct block_list**);
@@ -1017,7 +1062,8 @@ int pet_ai_sub_hard_lootsearch(struct block_list *bl, va_list ap)
return 0;
}
-int pet_delay_item_drop(int tid, int64 tick, int id, intptr_t data) {
+static int pet_delay_item_drop(int tid, int64 tick, int id, intptr_t data)
+{
struct item_drop_list *list;
struct item_drop *ditem;
list=(struct item_drop_list *)data;
@@ -1026,7 +1072,7 @@ int pet_delay_item_drop(int tid, int64 tick, int id, intptr_t data) {
struct item_drop *ditem_prev;
map->addflooritem(NULL, &ditem->item_data, ditem->item_data.amount,
list->m, list->x, list->y,
- list->first_charid, list->second_charid, list->third_charid, 0);
+ list->first_charid, list->second_charid, list->third_charid, 0, false);
ditem_prev = ditem;
ditem = ditem->next;
ers_free(pet->item_drop_ers, ditem_prev);
@@ -1035,7 +1081,7 @@ int pet_delay_item_drop(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-int pet_lootitem_drop(struct pet_data *pd,struct map_session_data *sd)
+static int pet_lootitem_drop(struct pet_data *pd, struct map_session_data *sd)
{
int i,flag=0;
struct item_drop_list *dlist;
@@ -1084,7 +1130,8 @@ int pet_lootitem_drop(struct pet_data *pd,struct map_session_data *sd)
/*==========================================
* pet bonus giving skills [Valaris] / Rewritten by [Skotlex]
*------------------------------------------*/
-int pet_skill_bonus_timer(int tid, int64 tick, int id, intptr_t data) {
+static int pet_skill_bonus_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data *sd=map->id2sd(id);
struct pet_data *pd;
int bonus;
@@ -1125,7 +1172,8 @@ int pet_skill_bonus_timer(int tid, int64 tick, int id, intptr_t data) {
/*==========================================
* pet recovery skills [Valaris] / Rewritten by [Skotlex]
*------------------------------------------*/
-int pet_recovery_timer(int tid, int64 tick, int id, intptr_t data) {
+static int pet_recovery_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data *sd=map->id2sd(id);
struct pet_data *pd;
@@ -1156,7 +1204,8 @@ int pet_recovery_timer(int tid, int64 tick, int id, intptr_t data) {
/*==========================================
* pet support skills [Skotlex]
*------------------------------------------*/
-int pet_skill_support_timer(int tid, int64 tick, int id, intptr_t data) {
+static int pet_skill_support_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data *sd=map->id2sd(id);
struct pet_data *pd;
struct status_data *st;
@@ -1199,151 +1248,309 @@ int pet_skill_support_timer(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-/**
- * Loads (or reloads) the pet database.
- */
-int read_petdb(void)
+static void pet_read_db(void)
{
const char *filename[] = {
- DBPATH"pet_db.txt",
- "pet_db2.txt",
+ DBPATH"pet_db.conf",
+ "pet_db2.conf"
};
- int i,j;
+ int i;
- // Remove any previous scripts in case reloaddb was invoked.
- for (j = 0; j < MAX_PET_DB; j++) {
- if (pet->db[j].pet_script) {
- script->free_code(pet->db[j].pet_script);
- pet->db[j].pet_script = NULL;
- }
- if (pet->db[j].equip_script) {
- script->free_code(pet->db[j].equip_script);
- pet->db[j].equip_script = NULL;
+ pet->read_db_clear();
+
+ for (i = 0; i < ARRAYLENGTH(filename); ++i) {
+ pet->read_db_libconfig(filename[i], i > 0 ? true : false);
+ }
+}
+
+static int pet_read_db_libconfig(const char *filename, bool ignore_missing)
+{
+ struct config_t pet_db_conf;
+ struct config_setting_t *pdb;
+ struct config_setting_t *t;
+ char filepath[256];
+ bool duplicate[MAX_MOB_DB] = { 0 };
+ int i = 0, count = 0;
+
+ nullpo_ret(filename);
+
+ safesnprintf(filepath, sizeof(filepath), "%s/%s", map->db_path, filename);
+
+ if (!exists(filepath)) {
+ if (!ignore_missing) {
+ ShowError("pet_read_db_libconfig: can't find file %s\n", filepath);
}
+ return 0;
}
- // clear database
- memset(pet->db,0,sizeof(pet->db));
+ if (!libconfig->load_file(&pet_db_conf, filepath))
+ return 0;
+
+ if ((pdb = libconfig->setting_get_member(pet_db_conf.root, "pet_db")) == NULL) {
+ ShowError("can't read %s\n", filepath);
+ return 0;
+ }
+
+ while ((t = libconfig->setting_get_elem(pdb, i++))) {
+ int pet_id = pet->read_db_sub(t, i - 1, filename);
- j = 0; // entry counter
- for (i = 0; i < ARRAYLENGTH(filename); i++) {
- char line[1024];
- int lines, entries;
- FILE *fp;
-
- sprintf(line, "%s/%s", map->db_path, filename[i]);
- fp=fopen(line,"r");
- if (fp == NULL) {
- if (i == 0)
- ShowError("can't read %s\n",line);
+ if (pet_id <= 0 || pet_id >= MAX_MOB_DB)
continue;
+
+ if (duplicate[pet_id]) {
+ ShowWarning("pet_read_db_libconfig:%s: duplicate entry of ID #%d\n", filename, pet_id);
+ } else {
+ duplicate[pet_id] = true;
}
- lines = entries = 0;
- while (fgets(line, sizeof(line), fp) && j < MAX_PET_DB) {
- char *str[22], *p;
- int nameid, k;
- lines++;
-
- if (line[0] == '/' && line[1] == '/')
- continue;
- memset(str, 0, sizeof(str));
- p = line;
- while (ISSPACE(*p))
- ++p;
- if (*p == '\0')
- continue; // empty line
- for (k = 0; k < 20; ++k) {
- str[k] = p;
- p = strchr(p,',');
- if (p == NULL)
- break; // comma not found
- *p = '\0';
- ++p;
- }
+ count++;
+ }
+ libconfig->destroy(&pet_db_conf);
+ ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' entries in '"CL_WHITE"%s"CL_RESET"'.\n", count, filename);
- if (p == NULL) {
- ShowError("read_petdb: Insufficient columns in line %d, skipping.\n", lines);
- continue;
- }
+ return count;
+}
- // Pet Script
- if (*p != '{') {
- ShowError("read_petdb: Invalid format (Pet Script column) in line %d, skipping.\n", lines);
- continue;
- }
+static int pet_read_db_sub(struct config_setting_t *it, int n, const char *source)
+{
+ struct config_setting_t *t = NULL;
+ struct item_data *data = NULL;
+ const char *str = NULL;
+ int i32 = 0;
- str[20] = p;
- p = strstr(p+1,"},");
- if (p == NULL) {
- ShowError("read_petdb: Invalid format (Pet Script column) in line %d, skipping.\n", lines);
- continue;
- }
- p[1] = '\0';
- p += 2;
+ nullpo_ret(it);
+ nullpo_ret(source);
+ Assert_ret(n >= 0 && n < MAX_PET_DB);
+
+ if (!libconfig->setting_lookup_int(it, "Id", &i32)) {
+ ShowWarning("pet_read_db_sub: Missing Id in \"%s\", entry #%d, skipping.\n", source, n);
+ return 0;
+ }
+ pet->db[n].class_ = i32;
+
+ if (!libconfig->setting_lookup_string(it, "SpriteName", &str) || !*str ) {
+ ShowWarning("pet_read_db_sub: Missing SpriteName in pet %d of \"%s\", skipping.\n", pet->db[n].class_, source);
+ return 0;
+ }
+ safestrncpy(pet->db[n].name, str, sizeof(pet->db[n].name));
+
+ if (!libconfig->setting_lookup_string(it, "Name", &str) || !*str) {
+ ShowWarning("pet_read_db_sub: Missing Name in pet %d of \"%s\", skipping.\n", pet->db[n].class_, source);
+ return 0;
+ }
+ safestrncpy(pet->db[n].jname, str, sizeof(pet->db[n].jname));
+
+ if (libconfig->setting_lookup_string(it, "TamingItem", &str)) {
+ if (!(data = itemdb->name2id(str))) {
+ ShowWarning("pet_read_db_sub: Invalid item '%s' in pet %d of \"%s\", defaulting to 0.\n", str, pet->db[n].class_, source);
+ } else {
+ pet->db[n].itemID = data->nameid;
+ }
+ }
+
+ if (libconfig->setting_lookup_string(it, "EggItem", &str)) {
+ if (!(data = itemdb->name2id(str))) {
+ ShowWarning("pet_read_db_sub: Invalid item '%s' in pet %d of \"%s\", defaulting to 0.\n", str, pet->db[n].class_, source);
+ } else {
+ pet->db[n].EggID = data->nameid;
+ }
+ }
+
+ if (libconfig->setting_lookup_string(it, "AccessoryItem", &str)) {
+ if (!(data = itemdb->name2id(str))) {
+ ShowWarning("pet_read_db_sub: Invalid item '%s' in pet %d of \"%s\", defaulting to 0.\n", str, pet->db[n].class_, source);
+ } else {
+ pet->db[n].AcceID = data->nameid;
+ }
+ }
+
+ if (libconfig->setting_lookup_string(it, "FoodItem", &str)) {
+ if (!(data = itemdb->name2id(str))) {
+ ShowWarning("pet_read_db_sub: Invalid item '%s' in pet %d of \"%s\", defaulting to 0.\n", str, pet->db[n].class_, source);
+ } else {
+ pet->db[n].FoodID = data->nameid;
+ }
+ }
+
+ if (libconfig->setting_lookup_int(it, "FoodEffectiveness", &i32))
+ pet->db[n].fullness = i32;
+
+ if (libconfig->setting_lookup_int(it, "HungerDelay", &i32))
+ pet->db[n].hungry_delay = i32 * 1000;
+
+ if ((t = libconfig->setting_get_member(it, "Intimacy"))) {
+ if (config_setting_is_group(t)) {
+ pet->read_db_sub_intimacy(n, t);
+ }
+ }
+ if (pet->db[n].r_hungry <= 0)
+ pet->db[n].r_hungry = 1;
+
+ if (libconfig->setting_lookup_int(it, "CaptureRate", &i32))
+ pet->db[n].capture = i32;
+
+ if (libconfig->setting_lookup_int(it, "Speed", &i32))
+ pet->db[n].speed = i32;
+
+ if ((t = libconfig->setting_get_member(it, "SpecialPerformance")) && (i32 = libconfig->setting_get_bool(t)))
+ pet->db[n].s_perfor = (char)i32;
- // Equip Script
- if (*p != '{') {
- ShowError("read_petdb: Invalid format (Equip Script column) in line %d, skipping.\n", lines);
- continue;
+ if ((t = libconfig->setting_get_member(it, "TalkWithEmotes")) && (i32 = libconfig->setting_get_bool(t)))
+ pet->db[n].talk_convert_class = i32;
+
+ if (libconfig->setting_lookup_int(it, "AttackRate", &i32))
+ pet->db[n].attack_rate = i32;
+
+ if (libconfig->setting_lookup_int(it, "DefendRate", &i32))
+ pet->db[n].defence_attack_rate = i32;
+
+ if (libconfig->setting_lookup_int(it, "ChangeTargetRate", &i32))
+ pet->db[n].change_target_rate = i32;
+
+ // Pet Evolution
+ if ((t = libconfig->setting_get_member(it, "Evolve")) && config_setting_is_group(t)) {
+ pet->read_db_sub_evolution(t, n);
+ }
+
+ if ((t = libconfig->setting_get_member(it, "AutoFeed")) && (i32 = libconfig->setting_get_bool(t)))
+ pet->db[n].autofeed = i32;
+
+ if (libconfig->setting_lookup_string(it, "PetScript", &str))
+ pet->db[n].pet_script = *str ? script->parse(str, source, -pet->db[n].class_, SCRIPT_IGNORE_EXTERNAL_BRACKETS, NULL) : NULL;
+
+ if (libconfig->setting_lookup_string(it, "EquipScript", &str))
+ pet->db[n].equip_script = *str ? script->parse(str, source, -pet->db[n].class_, SCRIPT_IGNORE_EXTERNAL_BRACKETS, NULL) : NULL;
+
+ return pet->db[n].class_;
+}
+
+/**
+ * Read Pet Evolution Database [Dastgir/Hercules]
+ * @param t libconfig setting
+ * @param n Pet DB Index
+ */
+static void pet_read_db_sub_evolution(struct config_setting_t *t, int n)
+{
+ struct config_setting_t *pett;
+ int i = 0;
+ const char *str = NULL;
+
+ nullpo_retv(t);
+ Assert_retv(n >= 0 && n < MAX_PET_DB);
+
+ VECTOR_INIT(pet->db[n].evolve_data);
+
+ while ((pett = libconfig->setting_get_elem(t, i))) {
+ if (config_setting_is_group(pett)) {
+ struct pet_evolve_data ped;
+ struct item_data *data;
+ struct config_setting_t *item;
+ int j = 0, i32 = 0;
+
+ str = config_setting_name(pett);
+
+ if (!(data = itemdb->name2id(str))) {
+ ShowWarning("pet_read_evolve_db_sub: Invalid Egg '%s' in Pet #%d, skipping.\n", str, pet->db[n].class_);
+ return;
+ } else {
+ ped.petEggId = data->nameid;
}
- str[21] = p;
- nameid = atoi(str[0]);
- if (nameid <= 0)
- continue;
+ VECTOR_INIT(ped.items);
+
+ while ((item = libconfig->setting_get_elem(pett, j))) {
+ struct itemlist_entry list = { 0 };
+ int quantity = 0;
+
+ str = config_setting_name(item);
+ data = itemdb->search_name(str);
+
+ if (!data) {
+ ShowWarning("pet_read_evolve_db_sub: required item %s not found in egg %d\n", str, ped.petEggId);
+ j++;
+ continue;
+ }
+
+ list.id = data->nameid;
+
+ if (mob->get_const(item, &i32) && i32 >= 0) {
+ quantity = i32;
+ }
+
+ if (quantity <= 0) {
+ ShowWarning("pet_read_evolve_db_sub: invalid quantity %d for egg %d\n", quantity, ped.petEggId);
+ j++;
+ continue;
+ }
+
+ list.amount = quantity;
+
+ VECTOR_ENSURE(ped.items, 1, 1);
+ VECTOR_PUSH(ped.items, list);
+
+ j++;
- if (!mob->db_checkid(nameid)) {
- ShowWarning("pet_db reading: Invalid mob-class %d, pet not read.\n", nameid);
- continue;
}
- pet->db[j].class_ = nameid;
- safestrncpy(pet->db[j].name,str[1],NAME_LENGTH);
- safestrncpy(pet->db[j].jname,str[2],NAME_LENGTH);
- pet->db[j].itemID=atoi(str[3]);
- pet->db[j].EggID=atoi(str[4]);
- pet->db[j].AcceID=atoi(str[5]);
- pet->db[j].FoodID=atoi(str[6]);
- pet->db[j].fullness=atoi(str[7]);
- pet->db[j].hungry_delay=atoi(str[8])*1000;
- pet->db[j].r_hungry=atoi(str[9]);
- if (pet->db[j].r_hungry <= 0)
- pet->db[j].r_hungry=1;
- pet->db[j].r_full=atoi(str[10]);
- pet->db[j].intimate=atoi(str[11]);
- pet->db[j].die=atoi(str[12]);
- pet->db[j].capture=atoi(str[13]);
- pet->db[j].speed=atoi(str[14]);
- pet->db[j].s_perfor=(char)atoi(str[15]);
- pet->db[j].talk_convert_class=atoi(str[16]);
- pet->db[j].attack_rate=atoi(str[17]);
- pet->db[j].defence_attack_rate=atoi(str[18]);
- pet->db[j].change_target_rate=atoi(str[19]);
- pet->db[j].pet_script = NULL;
- pet->db[j].equip_script = NULL;
-
- if (*str[20])
- pet->db[j].pet_script = script->parse(str[20], filename[i], lines, 0, NULL);
- if (*str[21])
- pet->db[j].equip_script = script->parse(str[21], filename[i], lines, 0, NULL);
-
- j++;
- entries++;
+ VECTOR_ENSURE(pet->db[n].evolve_data, 1, 1);
+ VECTOR_PUSH(pet->db[n].evolve_data, ped);
+ }
+ i++;
+ }
+}
+
+static bool pet_read_db_sub_intimacy(int idx, struct config_setting_t *t)
+{
+ int i32 = 0;
+
+ nullpo_retr(false, t);
+ Assert_ret(idx >= 0 && idx < MAX_PET_DB);
+
+ if (libconfig->setting_lookup_int(t, "Initial", &i32))
+ pet->db[idx].intimate = i32;
+
+ if (libconfig->setting_lookup_int(t, "FeedIncrement", &i32))
+ pet->db[idx].r_hungry = i32;
+
+ if (libconfig->setting_lookup_int(t, "OverFeedDecrement", &i32))
+ pet->db[idx].r_full = i32;
+
+ if (libconfig->setting_lookup_int(t, "OwnerDeathDecrement", &i32))
+ pet->db[idx].die = i32;
+
+ return true;
+}
+
+static void pet_read_db_clear(void)
+{
+ int i;
+
+ // Remove any previous scripts in case reloaddb was invoked.
+ for (i = 0; i < MAX_PET_DB; i++) {
+ int j;
+ if (pet->db[i].pet_script) {
+ script->free_code(pet->db[i].pet_script);
+ pet->db[i].pet_script = NULL;
+ }
+ if (pet->db[i].equip_script) {
+ script->free_code(pet->db[i].equip_script);
+ pet->db[i].equip_script = NULL;
}
- if (j >= MAX_PET_DB)
- ShowWarning("read_petdb: Reached max number of pets [%d]. Remaining pets were not read.\n ", MAX_PET_DB);
- fclose(fp);
- ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' pets in '"CL_WHITE"%s"CL_RESET"'.\n", entries, filename[i]);
+ for (j = 0; j < VECTOR_LENGTH(pet->db[i].evolve_data); j++) {
+ VECTOR_CLEAR(VECTOR_INDEX(pet->db[i].evolve_data, j).items);
+ }
+ VECTOR_CLEAR(pet->db[i].evolve_data);
}
- return 0;
+ memset(pet->db, 0, sizeof(pet->db));
+ return;
}
/*==========================================
* Initialization process relationship skills
*------------------------------------------*/
-int do_init_pet(bool minimal) {
+static int do_init_pet(bool minimal)
+{
if (minimal)
return 0;
@@ -1363,11 +1570,12 @@ int do_init_pet(bool minimal) {
return 0;
}
-int do_final_pet(void)
+static int do_final_pet(void)
{
int i;
for( i = 0; i < MAX_PET_DB; i++ )
{
+ int j;
if( pet->db[i].pet_script )
{
script->free_code(pet->db[i].pet_script);
@@ -1378,12 +1586,20 @@ int do_final_pet(void)
script->free_code(pet->db[i].equip_script);
pet->db[i].equip_script = NULL;
}
+
+ /* Pet Evolution [Dastgir/Hercules] */
+ for (j = 0; j < VECTOR_LENGTH(pet->db[i].evolve_data); j++) {
+ VECTOR_CLEAR(VECTOR_INDEX(pet->db[i].evolve_data, j).items);
+ }
+ VECTOR_CLEAR(pet->db[i].evolve_data);
}
ers_destroy(pet->item_drop_ers);
ers_destroy(pet->item_drop_list_ers);
+
return 0;
}
-void pet_defaults(void) {
+void pet_defaults(void)
+{
pet = &pet_s;
memset(pet->db,0,sizeof(pet->db));
@@ -1428,5 +1644,12 @@ void pet_defaults(void) {
pet->skill_bonus_timer = pet_skill_bonus_timer;
pet->recovery_timer = pet_recovery_timer;
pet->skill_support_timer = pet_skill_support_timer;
- pet->read_db = read_petdb;
+
+ pet->read_db = pet_read_db;
+ pet->read_db_libconfig = pet_read_db_libconfig;
+ pet->read_db_sub = pet_read_db_sub;
+ pet->read_db_sub_intimacy = pet_read_db_sub_intimacy;
+ pet->read_db_clear = pet_read_db_clear;
+
+ pet->read_db_sub_evolution = pet_read_db_sub_evolution;
}
diff --git a/src/map/pet.h b/src/map/pet.h
index 9a0287b42..049816804 100644
--- a/src/map/pet.h
+++ b/src/map/pet.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -30,13 +30,19 @@
#define MAX_PET_DB 300
#define MAX_PETLOOT_SIZE 30
+/** Pet Evolution [Dastgir/Hercules] */
+struct pet_evolve_data {
+ int petEggId;
+ VECTOR_DECL(struct itemlist_entry) items;
+};
+
struct s_pet_db {
short class_;
char name[NAME_LENGTH],jname[NAME_LENGTH];
- short itemID;
- short EggID;
- short AcceID;
- short FoodID;
+ int itemID;
+ int EggID;
+ int AcceID;
+ int FoodID;
int fullness;
int hungry_delay;
int r_hungry;
@@ -50,8 +56,12 @@ struct s_pet_db {
int attack_rate;
int defence_attack_rate;
int change_target_rate;
+ int autofeed;
struct script_code *equip_script;
struct script_code *pet_script;
+
+ /* Pet Evolution */
+ VECTOR_DECL(struct pet_evolve_data) evolve_data;
};
enum { PET_CLASS,PET_CATCH,PET_EGG,PET_EQUIP,PET_FOOD };
@@ -127,6 +137,7 @@ struct pet_interface {
struct s_pet_db db[MAX_PET_DB];
struct eri *item_drop_ers; //For loot drops delay structures.
struct eri *item_drop_list_ers;
+
/* */
int (*init) (bool minimal);
int (*final) (void);
@@ -146,7 +157,7 @@ struct pet_interface {
int (*data_init) (struct map_session_data *sd, struct s_pet *petinfo);
int (*birth_process) (struct map_session_data *sd, struct s_pet *petinfo);
int (*recv_petdata) (int account_id, struct s_pet *p, int flag);
- int (*select_egg) (struct map_session_data *sd, short egg_index);
+ int (*select_egg) (struct map_session_data *sd, int egg_index);
int (*catch_process1) (struct map_session_data *sd, int target_class);
int (*catch_process2) (struct map_session_data *sd, int target_id);
bool (*get_egg) (int account_id, short pet_class, int pet_id );
@@ -166,7 +177,16 @@ struct pet_interface {
int (*skill_bonus_timer) (int tid, int64 tick, int id, intptr_t data);
int (*recovery_timer) (int tid, int64 tick, int id, intptr_t data);
int (*skill_support_timer) (int tid, int64 tick, int id, intptr_t data);
- int (*read_db) (void);
+
+ void (*read_db) (void);
+ int (*read_db_libconfig) (const char *filename, bool ignore_missing);
+ int (*read_db_sub) (struct config_setting_t *it, int n, const char *source);
+ bool (*read_db_sub_intimacy) (int idx, struct config_setting_t *t);
+ void (*read_db_clear) (void);
+
+ /* Pet Evolution [Dastgir/Hercules] */
+ void (*read_db_sub_evolution) (struct config_setting_t *t, int n);
+
};
#ifdef HERCULES_CORE
diff --git a/src/map/quest.c b/src/map/quest.c
index ed8e5bd33..7a216095e 100644
--- a/src/map/quest.c
+++ b/src/map/quest.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -25,10 +25,12 @@
#include "map/battle.h"
#include "map/chrif.h"
#include "map/clif.h"
+#include "map/homunculus.h"
#include "map/intif.h"
#include "map/itemdb.h"
#include "map/log.h"
#include "map/map.h"
+#include "map/mercenary.h"
#include "map/mob.h"
#include "map/npc.h"
#include "map/party.h"
@@ -52,8 +54,8 @@
#include <string.h>
#include <time.h>
-struct quest_interface quest_s;
-struct quest_db *db_data[MAX_QUEST_DB]; ///< Quest database
+static struct quest_interface quest_s;
+static struct quest_db *db_data[MAX_QUEST_DB]; ///< Quest database
struct quest_interface *quest;
@@ -63,7 +65,8 @@ struct quest_interface *quest;
* @param quest_id ID to lookup
* @return Quest entry (equals to &quest->dummy if the ID is invalid)
*/
-struct quest_db *quest_db(int quest_id) {
+static struct quest_db *quest_db(int quest_id)
+{
if (quest_id < 0 || quest_id >= MAX_QUEST_DB || quest->db_data[quest_id] == NULL)
return &quest->dummy;
return quest->db_data[quest_id];
@@ -75,7 +78,7 @@ struct quest_db *quest_db(int quest_id) {
* @param sd Player's data
* @return 0 in case of success, nonzero otherwise (i.e. the player has no quests)
*/
-int quest_pc_login(struct map_session_data *sd)
+static int quest_pc_login(struct map_session_data *sd)
{
#if PACKETVER < 20141022
int i;
@@ -103,22 +106,23 @@ int quest_pc_login(struct map_session_data *sd)
*
* New quest will be added as Q_ACTIVE.
*
- * @param sd Player's data
- * @param quest_id ID of the quest to add.
+ * @param sd Player's data
+ * @param quest_id ID of the quest to add.
+ * @param time_limit Custom time, in UNIX epoch, for this quest
* @return 0 in case of success, nonzero otherwise
*/
-int quest_add(struct map_session_data *sd, int quest_id)
+static int quest_add(struct map_session_data *sd, int quest_id, unsigned int time_limit)
{
int n;
struct quest_db *qi = quest->db(quest_id);
nullpo_retr(-1, sd);
- if( qi == &quest->dummy ) {
+ if (qi == &quest->dummy) {
ShowError("quest_add: quest %d not found in DB.\n", quest_id);
return -1;
}
- if( quest->check(sd, quest_id, HAVEQUEST) >= 0 ) {
+ if (quest->check(sd, quest_id, HAVEQUEST) >= 0) {
ShowError("quest_add: Character %d already has quest %d.\n", sd->status.char_id, quest_id);
return -1;
}
@@ -130,7 +134,7 @@ int quest_add(struct map_session_data *sd, int quest_id)
sd->avail_quests++;
RECREATE(sd->quest_log, struct quest, sd->num_quests);
- if( sd->avail_quests != sd->num_quests ) {
+ if (sd->avail_quests != sd->num_quests) {
// The character has some completed quests, make room before them so that they will stay at the end of the array
memmove(&sd->quest_log[n+1], &sd->quest_log[n], sizeof(struct quest)*(sd->num_quests-sd->avail_quests));
}
@@ -138,17 +142,24 @@ int quest_add(struct map_session_data *sd, int quest_id)
memset(&sd->quest_log[n], 0, sizeof(struct quest));
sd->quest_log[n].quest_id = qi->id;
- if( qi->time )
+ if (time_limit != 0)
+ sd->quest_log[n].time = time_limit;
+ else if (qi->time != 0)
sd->quest_log[n].time = (unsigned int)(time(NULL) + qi->time);
sd->quest_log[n].state = Q_ACTIVE;
sd->save_quest = true;
clif->quest_add(sd, &sd->quest_log[n]);
+#if PACKETVER >= 20150513
+ clif->quest_notify_objective(sd, &sd->quest_log[n]);
+#else
clif->quest_update_objective(sd, &sd->quest_log[n]);
+#endif
+ quest->questinfo_refresh(sd);
- if( map->save_settings&64 )
- chrif->save(sd,0);
+ if ((map->save_settings & 64) != 0)
+ chrif->save(sd, 0);
return 0;
}
@@ -161,7 +172,7 @@ int quest_add(struct map_session_data *sd, int quest_id)
* @param qid2 New quest to add
* @return 0 in case of success, nonzero otherwise
*/
-int quest_change(struct map_session_data *sd, int qid1, int qid2)
+static int quest_change(struct map_session_data *sd, int qid1, int qid2)
{
int i;
struct quest_db *qi = quest->db(qid2);
@@ -198,11 +209,15 @@ int quest_change(struct map_session_data *sd, int qid1, int qid2)
clif->quest_delete(sd, qid1);
clif->quest_add(sd, &sd->quest_log[i]);
+#if PACKETVER >= 20150513
+ clif->quest_notify_objective(sd, &sd->quest_log[i]);
+#else
clif->quest_update_objective(sd, &sd->quest_log[i]);
+#endif
+ quest->questinfo_refresh(sd);
if( map->save_settings&64 )
chrif->save(sd,0);
-
return 0;
}
@@ -213,7 +228,7 @@ int quest_change(struct map_session_data *sd, int qid1, int qid2)
* @param quest_id ID of the quest to remove
* @return 0 in case of success, nonzero otherwise
*/
-int quest_delete(struct map_session_data *sd, int quest_id)
+static int quest_delete(struct map_session_data *sd, int quest_id)
{
int i;
@@ -242,6 +257,7 @@ int quest_delete(struct map_session_data *sd, int quest_id)
sd->save_quest = true;
clif->quest_delete(sd, quest_id);
+ quest->questinfo_refresh(sd);
if( map->save_settings&64 )
chrif->save(sd,0);
@@ -257,7 +273,7 @@ int quest_delete(struct map_session_data *sd, int quest_id)
* int Party ID
* int Mob ID
*/
-int quest_update_objective_sub(struct block_list *bl, va_list ap)
+static int quest_update_objective_sub(struct block_list *bl, va_list ap)
{
struct map_session_data *sd = NULL;
int party_id = va_arg(ap, int);
@@ -284,7 +300,7 @@ int quest_update_objective_sub(struct block_list *bl, va_list ap)
* @param sd Character's data
* @param mob_id Monster ID
*/
-void quest_update_objective(struct map_session_data *sd, int mob_id)
+static void quest_update_objective(struct map_session_data *sd, int mob_id)
{
int i,j;
@@ -340,7 +356,7 @@ void quest_update_objective(struct map_session_data *sd, int mob_id)
* @param qs New quest state
* @return 0 in case of success, nonzero otherwise
*/
-int quest_update_status(struct map_session_data *sd, int quest_id, enum quest_state qs)
+static int quest_update_status(struct map_session_data *sd, int quest_id, enum quest_state qs)
{
int i;
@@ -369,6 +385,7 @@ int quest_update_status(struct map_session_data *sd, int quest_id, enum quest_st
}
clif->quest_delete(sd, quest_id);
+ quest->questinfo_refresh(sd);
if( map->save_settings&64 )
chrif->save(sd,0);
@@ -391,7 +408,7 @@ int quest_update_status(struct map_session_data *sd, int quest_id, enum quest_st
* 1 if the quest's timeout has expired
* 0 otherwise
*/
-int quest_check(struct map_session_data *sd, int quest_id, enum quest_check_type type)
+static int quest_check(struct map_session_data *sd, int quest_id, enum quest_check_type type)
{
int i;
@@ -433,7 +450,7 @@ int quest_check(struct map_session_data *sd, int quest_id, enum quest_check_type
* @return The parsed quest entry.
* @retval NULL in case of errors.
*/
-struct quest_db *quest_read_db_sub(struct config_setting_t *cs, int n, const char *source)
+static struct quest_db *quest_read_db_sub(struct config_setting_t *cs, int n, const char *source)
{
struct quest_db *entry = NULL;
struct config_setting_t *t = NULL;
@@ -533,7 +550,7 @@ struct quest_db *quest_read_db_sub(struct config_setting_t *cs, int n, const cha
*
* @return Number of loaded quests, or -1 if the file couldn't be read.
*/
-int quest_read_db(void)
+static int quest_read_db(void)
{
char filepath[256];
struct config_t quest_db_conf;
@@ -541,7 +558,7 @@ int quest_read_db(void)
int i = 0, count = 0;
const char *filename = "quest_db.conf";
- snprintf(filepath, 256, "%s/%s", map->db_path, filename);
+ safesnprintf(filepath, 256, "%s/%s", map->db_path, filename);
if (!libconfig->load_file(&quest_db_conf, filepath))
return -1;
@@ -580,7 +597,8 @@ int quest_read_db(void)
* @see map->foreachpc
* @param ap Ignored
*/
-int quest_reload_check_sub(struct map_session_data *sd, va_list ap) {
+static int quest_reload_check_sub(struct map_session_data *sd, va_list ap)
+{
int i, j;
nullpo_ret(sd);
@@ -609,7 +627,8 @@ int quest_reload_check_sub(struct map_session_data *sd, va_list ap) {
/**
* Clears the quest database for shutdown or reload.
*/
-void quest_clear_db(void) {
+static void quest_clear_db(void)
+{
int i;
for (i = 0; i < MAX_QUEST_DB; i++) {
@@ -624,12 +643,316 @@ void quest_clear_db(void) {
}
}
+/*
+* Limit the questinfo icon id to avoid client problems
+*/
+static int quest_questinfo_validate_icon(int icon)
+{
+#if PACKETVER >= 20170315
+ if (icon < 0 || (icon > 10 && icon != 9999))
+ icon = 9999;
+#elif PACKETVER >= 20120410
+ if (icon < 0 || (icon > 8 && icon != 9999) || icon == 7)
+ icon = 9999; // Default to nothing if icon id is invalid.
+#else
+ if (icon < 0 || icon > 7)
+ icon = 0;
+ else
+ icon = icon + 1;
+#endif
+ return icon;
+}
+
+/**
+ * Refresh the questinfo bubbles on the player map.
+ *
+ * @param sd session data.
+ * @param qi questinfo data.
+ *
+ */
+static void quest_questinfo_refresh(struct map_session_data *sd)
+{
+ int i;
+
+ nullpo_retv(sd);
+
+ for (i = 0; i < VECTOR_LENGTH(map->list[sd->bl.m].qi_data); i++) {
+ struct questinfo *qi = &VECTOR_INDEX(map->list[sd->bl.m].qi_data, i);
+ // Remove the bubbles if one of the conditions is no longer valid.
+ if (quest->questinfo_validate(sd, qi) == false) {
+#if PACKETVER >= 20120410
+ clif->quest_show_event(sd, &qi->nd->bl, 9999, 0);
+#else
+ clif->quest_show_event(sd, &qi->nd->bl, 0, 0);
+#endif
+ } else {
+ clif->quest_show_event(sd, &qi->nd->bl, qi->icon, qi->color);
+ }
+ }
+}
+
+/**
+ * Validate all possible conditions required for the questinfo
+ *
+ * @param sd session data.
+ * @param qi questinfo data.
+ *
+ * @retval true if conditions are correct.
+ * @retval false if one condition or more are in-correct.
+ */
+static bool quest_questinfo_validate(struct map_session_data *sd, struct questinfo *qi)
+{
+ nullpo_retr(false, sd);
+ nullpo_retr(false, qi);
+ if (qi->hasJob && quest->questinfo_validate_job(sd, qi) == false)
+ return false;
+ if (qi->sex_enabled && quest->questinfo_validate_sex(sd, qi) == false)
+ return false;
+ if ((qi->base_level.min != 0 || qi->base_level.max != 0) && quest->questinfo_validate_baselevel(sd, qi) == false)
+ return false;
+ if ((qi->job_level.min != 0 || qi->job_level.max != 0) && quest->questinfo_validate_joblevel(sd, qi) == false)
+ return false;
+ if (VECTOR_LENGTH(qi->items) > 0 && quest->questinfo_validate_items(sd, qi) == false)
+ return false;
+ if (qi->homunculus.level != 0 && quest->questinfo_validate_homunculus_level(sd, qi) == false)
+ return false;
+ if (qi->homunculus.class_ != 0 && quest->questinfo_validate_homunculus_type(sd, qi) == false)
+ return false;
+ if (VECTOR_LENGTH(qi->quest_requirement) > 0 && quest->questinfo_validate_quests(sd, qi) == false)
+ return false;
+ if (qi->mercenary_class != 0 && quest->questinfo_validate_mercenary_class(sd, qi) == false)
+ return false;
+ return true;
+}
+
+/**
+ * Validate job required for the questinfo
+ *
+ * @param sd session data.
+ * @param qi questinfo data.
+ *
+ * @retval true if player job is matching the required.
+ * @retval false if player job is NOT matching the required.
+ */
+static bool quest_questinfo_validate_job(struct map_session_data *sd, struct questinfo *qi)
+{
+ nullpo_retr(false, sd);
+ nullpo_retr(false, qi);
+ if (sd->status.class == qi->job)
+ return true;
+ return false;
+}
+
+/**
+ * Validate sex required for the questinfo
+ *
+ * @param sd session data.
+ * @param qi questinfo data.
+ *
+ * @retval true if player sex is matching the required.
+ * @retval false if player sex is NOT matching the required.
+ */
+static bool quest_questinfo_validate_sex(struct map_session_data *sd, struct questinfo *qi)
+{
+ nullpo_retr(false, sd);
+ nullpo_retr(false, qi);
+ if (sd->status.sex == qi->sex)
+ return true;
+ return false;
+}
+
+/**
+ * Validate base level required for the questinfo
+ *
+ * @param sd session data.
+ * @param qi questinfo data.
+ *
+ * @retval true if player base level is included in the required level range.
+ * @retval false if player base level is NOT included in the required level range.
+ */
+static bool quest_questinfo_validate_baselevel(struct map_session_data *sd, struct questinfo *qi)
+{
+ nullpo_retr(false, sd);
+ nullpo_retr(false, qi);
+ if (sd->status.base_level >= qi->base_level.min && sd->status.base_level <= qi->base_level.max)
+ return true;
+ return false;
+}
+
+/**
+ * Validate job level required for the questinfo
+ *
+ * @param sd session data.
+ * @param qi questinfo data.
+ *
+ * @retval true if player job level is included in the required level range.
+ * @retval false if player job level is NOT included in the required level range.
+ */
+static bool quest_questinfo_validate_joblevel(struct map_session_data *sd, struct questinfo *qi)
+{
+ nullpo_retr(false, sd);
+ nullpo_retr(false, qi);
+ if (sd->status.job_level >= qi->job_level.min && sd->status.job_level <= qi->job_level.max)
+ return true;
+ return false;
+}
+
+/**
+ * Validate items list required for the questinfo
+ *
+ * @param sd session data.
+ * @param qi questinfo data.
+ *
+ * @retval true if player have all the items required.
+ * @retval false if player is missing one or more of the items required.
+ */
+static bool quest_questinfo_validate_items(struct map_session_data *sd, struct questinfo *qi)
+{
+ nullpo_retr(false, sd);
+ nullpo_retr(false, qi);
+
+ for (int i = 0; i < VECTOR_LENGTH(qi->items); i++) {
+ struct questinfo_itemreq *item = &VECTOR_INDEX(qi->items, i);
+ int count = 0;
+ for (int j = 0; j < sd->status.inventorySize; j++) {
+ if (sd->status.inventory[j].nameid == item->nameid)
+ count += sd->status.inventory[j].amount;
+ }
+ if (count < item->min || count > item->max)
+ return false;
+ }
+
+ return true;
+}
+
+/**
+ * Validate minimal homunculus level required for the questinfo
+ *
+ * @param sd session data.
+ * @param qi questinfo data.
+ *
+ * @retval true if homunculus level >= the required value.
+ * @retval false if homunculus level smaller than the required value.
+ */
+static bool quest_questinfo_validate_homunculus_level(struct map_session_data *sd, struct questinfo *qi)
+{
+ nullpo_retr(false, sd);
+ nullpo_retr(false, qi);
+
+ if (sd->hd == NULL)
+ return false;
+ if (!homun_alive(sd->hd))
+ return false;
+ if (sd->hd->homunculus.level < qi->homunculus.level)
+ return false;
+ return true;
+}
+
+/**
+ * Validate homunculus type required for the questinfo
+ *
+ * @param sd session data.
+ * @param qi questinfo data.
+ *
+ * @retval true if player's homunculus is matching the required.
+ * @retval false if player's homunculus is NOT matching the required.
+ */
+static bool quest_questinfo_validate_homunculus_type(struct map_session_data *sd, struct questinfo *qi)
+{
+ nullpo_retr(false, sd);
+ nullpo_retr(false, qi);
+
+ if (sd->hd == NULL)
+ return false;
+ if (!homun_alive(sd->hd))
+ return false;
+ if (homun->class2type(sd->hd->homunculus.class_) != qi->homunculus_type)
+ return false;
+ return true;
+}
+
+/**
+ * Validate quest list required for the questinfo
+ *
+ * @param sd session data.
+ * @param qi questinfo data.
+ *
+ * @retval true if player have all the quests required.
+ * @retval false if player is missing one or more of the quests required.
+ */
+static bool quest_questinfo_validate_quests(struct map_session_data *sd, struct questinfo *qi)
+{
+ int i;
+
+ nullpo_retr(false, sd);
+ nullpo_retr(false, qi);
+
+ for (i = 0; i < VECTOR_LENGTH(qi->quest_requirement); i++) {
+ struct questinfo_qreq *quest_requirement = &VECTOR_INDEX(qi->quest_requirement, i);
+ int quest_progress = quest->check(sd, quest_requirement->id, HAVEQUEST);
+ if (quest_progress == -1)
+ quest_progress = 0;
+ else if (quest_progress == 0 || quest_progress == 1)
+ quest_progress = 1;
+ else
+ quest_progress = 2;
+ if (quest_progress != quest_requirement->state)
+ return false;
+ }
+
+ return true;
+}
+
+/**
+ * Validate mercenary class required for the questinfo
+ *
+ * @param sd session data.
+ * @param qi questinfo data.
+ *
+ * @retval true if player have a mercenary with the given class.
+ * @retval false if player does NOT have a mercenary with the given class.
+ */
+static bool quest_questinfo_validate_mercenary_class(struct map_session_data *sd, struct questinfo *qi)
+{
+ nullpo_retr(false, sd);
+ nullpo_retr(false, qi);
+
+ if (sd->md == NULL)
+ return false;
+
+ if (sd->md->mercenary.class_ != qi->mercenary_class)
+ return false;
+
+ return true;
+}
+
+/**
+ * Clears the questinfo data vector
+ *
+ * @param m mapindex.
+ *
+ */
+static void quest_questinfo_vector_clear(int m)
+{
+ int i;
+
+ Assert_retv(m >= 0 && m < map->count);
+
+ for (i = 0; i < VECTOR_LENGTH(map->list[m].qi_data); i++) {
+ struct questinfo *qi_data = &VECTOR_INDEX(map->list[m].qi_data, i);
+ VECTOR_CLEAR(qi_data->items);
+ VECTOR_CLEAR(qi_data->quest_requirement);
+ }
+ VECTOR_CLEAR(map->list[m].qi_data);
+}
+
/**
* Initializes the quest interface.
*
* @param minimal Run in minimal mode (skips most of the loading)
*/
-void do_init_quest(bool minimal) {
+static void do_init_quest(bool minimal)
+{
if (minimal)
return;
@@ -639,14 +962,16 @@ void do_init_quest(bool minimal) {
/**
* Finalizes the quest interface before shutdown.
*/
-void do_final_quest(void) {
+static void do_final_quest(void)
+{
quest->clear();
}
/**
* Reloads the quest database.
*/
-void do_reload_quest(void) {
+static void do_reload_quest(void)
+{
quest->clear();
quest->read_db();
@@ -658,7 +983,8 @@ void do_reload_quest(void) {
/**
* Initializes default values for the quest interface.
*/
-void quest_defaults(void) {
+void quest_defaults(void)
+{
quest = &quest_s;
quest->db_data = db_data;
@@ -681,4 +1007,18 @@ void quest_defaults(void) {
quest->clear = quest_clear_db;
quest->read_db = quest_read_db;
quest->read_db_sub = quest_read_db_sub;
+
+ quest->questinfo_validate_icon = quest_questinfo_validate_icon;
+ quest->questinfo_refresh = quest_questinfo_refresh;
+ quest->questinfo_validate = quest_questinfo_validate;
+ quest->questinfo_validate_job = quest_questinfo_validate_job;
+ quest->questinfo_validate_sex = quest_questinfo_validate_sex;
+ quest->questinfo_validate_baselevel = quest_questinfo_validate_baselevel;
+ quest->questinfo_validate_joblevel = quest_questinfo_validate_joblevel;
+ quest->questinfo_validate_items = quest_questinfo_validate_items;
+ quest->questinfo_validate_homunculus_level = quest_questinfo_validate_homunculus_level;
+ quest->questinfo_validate_homunculus_type = quest_questinfo_validate_homunculus_type;
+ quest->questinfo_validate_quests = quest_questinfo_validate_quests;
+ quest->questinfo_validate_mercenary_class = quest_questinfo_validate_mercenary_class;
+ quest->questinfo_vector_clear = quest_questinfo_vector_clear;
}
diff --git a/src/map/quest.h b/src/map/quest.h
index 8837a1fb6..206a7902f 100644
--- a/src/map/quest.h
+++ b/src/map/quest.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -28,6 +28,7 @@
struct block_list;
struct config_setting_t;
struct map_session_data;
+struct questinfo;
#define MAX_QUEST_DB (60355+1) // Highest quest ID + 1
@@ -69,7 +70,7 @@ struct quest_interface {
/* */
struct quest_db *(*db) (int quest_id);
int (*pc_login) (struct map_session_data *sd);
- int (*add) (struct map_session_data *sd, int quest_id);
+ int (*add) (struct map_session_data *sd, int quest_id, unsigned int time_limit);
int (*change) (struct map_session_data *sd, int qid1, int qid2);
int (*delete) (struct map_session_data *sd, int quest_id);
int (*update_objective_sub) (struct block_list *bl, va_list ap);
@@ -79,6 +80,20 @@ struct quest_interface {
void (*clear) (void);
int (*read_db) (void);
struct quest_db *(*read_db_sub) (struct config_setting_t *cs, int n, const char *source);
+
+ int (*questinfo_validate_icon) (int icon);
+ void (*questinfo_refresh) (struct map_session_data *sd);
+ bool (*questinfo_validate) (struct map_session_data *sd, struct questinfo *qi);
+ bool (*questinfo_validate_job) (struct map_session_data *sd, struct questinfo *qi);
+ bool (*questinfo_validate_sex) (struct map_session_data *sd, struct questinfo *qi);
+ bool (*questinfo_validate_baselevel) (struct map_session_data *sd, struct questinfo *qi);
+ bool (*questinfo_validate_joblevel) (struct map_session_data *sd, struct questinfo *qi);
+ bool (*questinfo_validate_items) (struct map_session_data *sd, struct questinfo *qi);
+ bool (*questinfo_validate_homunculus_level) (struct map_session_data *sd, struct questinfo *qi);
+ bool (*questinfo_validate_homunculus_type) (struct map_session_data *sd, struct questinfo *qi);
+ bool (*questinfo_validate_quests) (struct map_session_data *sd, struct questinfo *qi);
+ bool (*questinfo_validate_mercenary_class) (struct map_session_data *sd, struct questinfo *qi);
+ void (*questinfo_vector_clear) (int m);
};
#ifdef HERCULES_CORE
diff --git a/src/map/rodex.c b/src/map/rodex.c
new file mode 100644
index 000000000..eea27b6d0
--- /dev/null
+++ b/src/map/rodex.c
@@ -0,0 +1,671 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2017 Hercules Dev Team
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#define HERCULES_CORE
+
+#include "rodex.h"
+
+#include "map/battle.h"
+#include "map/date.h"
+#include "map/intif.h"
+#include "map/itemdb.h"
+#include "map/pc.h"
+
+#include "common/nullpo.h"
+#include "common/sql.h"
+#include "common/memmgr.h"
+
+
+// NOTE : These values are hardcoded into the client
+// Cost of each Attached Item
+#define ATTACHITEM_COST 2500
+// Percent of Attached Zeny that will be paid as Tax
+#define ATTACHZENY_TAX 2
+// Maximun number of messages that can be sent in one day
+#define DAILY_MAX_MAILS 100
+
+static struct rodex_interface rodex_s;
+struct rodex_interface *rodex;
+
+/// Checks if RoDEX System is enabled in the server
+/// Returns true if it's enabled, false otherwise
+static bool rodex_isenabled(void)
+{
+ if (battle_config.feature_rodex == 1)
+ return true;
+
+ return false;
+}
+
+/// Checks and refreshes the user daily number of Stamps
+/// @param sd : The player who's being checked
+static void rodex_refresh_stamps(struct map_session_data *sd)
+{
+ int today = date_get_date();
+ nullpo_retv(sd);
+
+ // Note : Weirdly, iRO starts this with maximum messages of the day and decrements
+ // but our clients starts this at 0 and increments
+ if (sd->sc.data[SC_DAILYSENDMAILCNT] == NULL) {
+ sc_start2(NULL, &sd->bl, SC_DAILYSENDMAILCNT, 100, today, 0, INFINITE_DURATION);
+ } else {
+ int sc_date = sd->sc.data[SC_DAILYSENDMAILCNT]->val1;
+ if (sc_date != today) {
+ sc_start2(NULL, &sd->bl, SC_DAILYSENDMAILCNT, 100, today, 0, INFINITE_DURATION);
+ }
+ }
+}
+
+/// Attaches an item to a message being written
+/// @param sd : The player who's writting
+/// @param idx : the inventory idx of the item
+/// @param amount : Amount of the item to be attached
+static void rodex_add_item(struct map_session_data *sd, int16 idx, int16 amount)
+{
+ int i;
+ bool is_stack = false;
+
+ nullpo_retv(sd);
+
+ if (idx < 0 || idx >= sd->status.inventorySize) {
+ clif->rodex_add_item_result(sd, idx, amount, RODEX_ADD_ITEM_FATAL_ERROR);
+ return;
+ }
+
+ if (amount < 0 || amount > sd->status.inventory[idx].amount) {
+ clif->rodex_add_item_result(sd, idx, amount, RODEX_ADD_ITEM_FATAL_ERROR);
+ return;
+ }
+
+ if (!pc_can_give_items(sd) || sd->status.inventory[idx].expire_time ||
+ !itemdb_canmail(&sd->status.inventory[idx], pc_get_group_level(sd)) ||
+ (sd->status.inventory[idx].bound && !pc_can_give_bound_items(sd))) {
+ clif->rodex_add_item_result(sd, idx, amount, RODEX_ADD_ITEM_NOT_TRADEABLE);
+ return;
+ }
+
+ if (itemdb->isstackable(sd->status.inventory[idx].nameid) == 1) {
+ for (i = 0; i < RODEX_MAX_ITEM; ++i) {
+ if (sd->rodex.tmp.items[i].idx == idx) {
+ if (sd->status.inventory[idx].nameid == sd->rodex.tmp.items[i].item.nameid &&
+ sd->status.inventory[idx].unique_id == sd->rodex.tmp.items[i].item.unique_id) {
+ is_stack = true;
+ break;
+ }
+ }
+ }
+
+ if (i == RODEX_MAX_ITEM && sd->rodex.tmp.items_count < RODEX_MAX_ITEM) {
+ ARR_FIND(0, RODEX_MAX_ITEM, i, sd->rodex.tmp.items[i].idx == 0);
+ }
+ } else if (sd->rodex.tmp.items_count < RODEX_MAX_ITEM) {
+ ARR_FIND(0, RODEX_MAX_ITEM, i, sd->rodex.tmp.items[i].idx == 0);
+ } else {
+ i = RODEX_MAX_ITEM;
+ }
+
+ if (i == RODEX_MAX_ITEM) {
+ clif->rodex_add_item_result(sd, idx, amount, RODEX_ADD_ITEM_NO_SPACE);
+ return;
+ }
+
+ if (sd->rodex.tmp.items[i].item.amount + amount > sd->status.inventory[idx].amount) {
+ clif->rodex_add_item_result(sd, idx, amount, RODEX_ADD_ITEM_FATAL_ERROR);
+ return;
+ }
+
+ if (sd->rodex.tmp.weight + sd->inventory_data[idx]->weight * amount > RODEX_WEIGHT_LIMIT) {
+ clif->rodex_add_item_result(sd, idx, amount, RODEX_ADD_ITEM_FATAL_ERROR);
+ return;
+ }
+
+ sd->rodex.tmp.items[i].idx = idx;
+ sd->rodex.tmp.weight += sd->inventory_data[idx]->weight * amount;
+ if (is_stack == false) {
+ sd->rodex.tmp.items[i].item = sd->status.inventory[idx];
+ sd->rodex.tmp.items[i].item.amount = amount;
+ sd->rodex.tmp.items_count++;
+ } else {
+ sd->rodex.tmp.items[i].item.amount += amount;
+ }
+ sd->rodex.tmp.type |= MAIL_TYPE_ITEM;
+
+ clif->rodex_add_item_result(sd, idx, amount, RODEX_ADD_ITEM_SUCCESS);
+}
+
+/// Removes an item attached to a message being writen
+/// @param sd : The player who's writting the message
+/// @param idx : The index of the item
+/// @param amount : How much to remove
+static void rodex_remove_item(struct map_session_data *sd, int16 idx, int16 amount)
+{
+ int i;
+ struct item *it;
+ struct item_data *itd;
+
+ nullpo_retv(sd);
+ Assert_retv(idx >= 0 && idx < sd->status.inventorySize);
+
+ for (i = 0; i < RODEX_MAX_ITEM; ++i) {
+ if (sd->rodex.tmp.items[i].idx == idx)
+ break;
+ }
+
+ if (i == RODEX_MAX_ITEM) {
+ clif->rodex_remove_item_result(sd, idx, -1);
+ return;
+ }
+
+ it = &sd->rodex.tmp.items[i].item;
+
+ if (amount <= 0 || amount > it->amount) {
+ clif->rodex_remove_item_result(sd, idx, -1);
+ return;
+ }
+
+ itd = itemdb->search(it->nameid);
+
+ if (amount == it->amount) {
+ sd->rodex.tmp.weight -= itd->weight * amount;
+ sd->rodex.tmp.items_count--;
+ if (sd->rodex.tmp.items_count < 1) {
+ sd->rodex.tmp.type &= ~MAIL_TYPE_ITEM;
+ }
+ memset(&sd->rodex.tmp.items[i], 0x0, sizeof(sd->rodex.tmp.items[0]));
+ clif->rodex_remove_item_result(sd, idx, 0);
+ return;
+ }
+
+ it->amount -= amount;
+ sd->rodex.tmp.weight -= itd->weight * amount;
+
+ clif->rodex_remove_item_result(sd, idx, it->amount);
+}
+
+/// Request if character with given name exists and returns information about him
+/// @param sd : The player who's requesting
+/// @param name : The name of the character to check
+/// @param base_level : Reference to return the character base level, if he exists
+/// @param char_id : Reference to return the character id, if he exists
+/// @param class : Reference to return the character class id, if he exists
+static void rodex_check_player(struct map_session_data *sd, const char *name, int *base_level, int *char_id, short *class)
+{
+ intif->rodex_checkname(sd, name);
+}
+
+/// Sends a Mail to an character
+/// @param sd : The player who's sending
+/// @param receiver_name : The name of the character who's receiving the message
+/// @param body : Mail message
+/// @param title : Mail Title
+/// @param zeny : Amount of zeny attached
+/// Returns result code:
+/// RODEX_SEND_MAIL_SUCCESS = 0,
+/// RODEX_SEND_MAIL_FATAL_ERROR = 1,
+/// RODEX_SEND_MAIL_COUNT_ERROR = 2,
+/// RODEX_SEND_MAIL_ITEM_ERROR = 3,
+/// RODEX_SEND_MAIL_RECEIVER_ERROR = 4
+static int rodex_send_mail(struct map_session_data *sd, const char *receiver_name, const char *body, const char *title, int64 zeny)
+{
+ int i;
+ int64 total_zeny;
+
+ nullpo_retr(RODEX_SEND_MAIL_FATAL_ERROR, sd);
+ nullpo_retr(RODEX_SEND_MAIL_FATAL_ERROR, receiver_name);
+ nullpo_retr(RODEX_SEND_MAIL_FATAL_ERROR, body);
+ nullpo_retr(RODEX_SEND_MAIL_FATAL_ERROR, title);
+
+ if (!rodex->isenabled() || sd->npc_id > 0) {
+ rodex->clean(sd, 1);
+ return RODEX_SEND_MAIL_FATAL_ERROR;
+ }
+
+ if (zeny < 0) {
+ rodex->clean(sd, 1);
+ return RODEX_SEND_MAIL_FATAL_ERROR;
+ }
+
+ total_zeny = zeny + sd->rodex.tmp.items_count * ATTACHITEM_COST + (2 * zeny)/100;
+
+ if (strcmp(receiver_name, sd->rodex.tmp.receiver_name) != 0) {
+ rodex->clean(sd, 1);
+ return RODEX_SEND_MAIL_RECEIVER_ERROR;
+ }
+
+ if (total_zeny > sd->status.zeny || total_zeny < 0) {
+ rodex->clean(sd, 1);
+ return RODEX_SEND_MAIL_FATAL_ERROR;
+ }
+
+ rodex_refresh_stamps(sd);
+
+ if (sd->sc.data[SC_DAILYSENDMAILCNT] != NULL) {
+ if (sd->sc.data[SC_DAILYSENDMAILCNT]->val2 >= DAILY_MAX_MAILS) {
+ rodex->clean(sd, 1);
+ return RODEX_SEND_MAIL_COUNT_ERROR;
+ }
+
+ sc_start2(NULL, &sd->bl, SC_DAILYSENDMAILCNT, 100, sd->sc.data[SC_DAILYSENDMAILCNT]->val1, sd->sc.data[SC_DAILYSENDMAILCNT]->val2 + 1, INFINITE_DURATION);
+ } else {
+ sc_start2(NULL, &sd->bl, SC_DAILYSENDMAILCNT, 100, date_get_date(), 1, INFINITE_DURATION);
+ }
+
+ for (i = 0; i < RODEX_MAX_ITEM; i++) {
+ int16 idx = sd->rodex.tmp.items[i].idx;
+ int j;
+ struct item *tmpItem = &sd->rodex.tmp.items[i].item;
+ struct item *invItem = &sd->status.inventory[idx];
+
+ if (tmpItem->nameid == 0)
+ continue;
+
+ if (tmpItem->nameid != invItem->nameid ||
+ tmpItem->unique_id != invItem->unique_id ||
+ tmpItem->refine != invItem->refine ||
+ tmpItem->attribute != invItem->attribute ||
+ tmpItem->expire_time != invItem->expire_time ||
+ tmpItem->bound != invItem->bound ||
+ tmpItem->amount > invItem->amount ||
+ tmpItem->amount < 1) {
+ rodex->clean(sd, 1);
+ return RODEX_SEND_MAIL_ITEM_ERROR;
+ }
+ for (j = 0; j < MAX_SLOTS; j++) {
+ if (tmpItem->card[j] != invItem->card[j]) {
+ rodex->clean(sd, 1);
+ return RODEX_SEND_MAIL_ITEM_ERROR;
+ }
+ }
+ for (j = 0; j < MAX_ITEM_OPTIONS; j++) {
+ if (tmpItem->option[j].index != invItem->option[j].index ||
+ tmpItem->option[j].value != invItem->option[j].value ||
+ tmpItem->option[j].param != invItem->option[j].param) {
+ rodex->clean(sd, 1);
+ return RODEX_SEND_MAIL_ITEM_ERROR;
+ }
+ }
+ }
+
+ if (total_zeny > 0 && pc->payzeny(sd, (int)total_zeny, LOG_TYPE_MAIL, NULL) != 0) {
+ rodex->clean(sd, 1);
+ return RODEX_SEND_MAIL_FATAL_ERROR;
+ }
+
+ for (i = 0; i < RODEX_MAX_ITEM; i++) {
+ int16 idx = sd->rodex.tmp.items[i].idx;
+
+ if (sd->rodex.tmp.items[i].item.nameid == 0) {
+ continue;
+ }
+
+ if (pc->delitem(sd, idx, sd->rodex.tmp.items[i].item.amount, 0, DELITEM_NORMAL, LOG_TYPE_MAIL) != 0) {
+ rodex->clean(sd, 1);
+ return RODEX_SEND_MAIL_ITEM_ERROR;
+ }
+ }
+
+ sd->rodex.tmp.zeny = zeny;
+ sd->rodex.tmp.is_read = false;
+ sd->rodex.tmp.is_deleted = false;
+ sd->rodex.tmp.send_date = (int)time(NULL);
+ sd->rodex.tmp.expire_date = (int)time(NULL) + RODEX_EXPIRE;
+ if (strlen(sd->rodex.tmp.body) > 0)
+ sd->rodex.tmp.type |= MAIL_TYPE_TEXT;
+ if (sd->rodex.tmp.zeny > 0)
+ sd->rodex.tmp.type |= MAIL_TYPE_ZENY;
+ sd->rodex.tmp.sender_id = sd->status.char_id;
+ safestrncpy(sd->rodex.tmp.sender_name, sd->status.name, NAME_LENGTH);
+ safestrncpy(sd->rodex.tmp.title, title, RODEX_TITLE_LENGTH);
+ safestrncpy(sd->rodex.tmp.body, body, RODEX_BODY_LENGTH);
+
+ intif->rodex_sendmail(&sd->rodex.tmp);
+ return RODEX_SEND_MAIL_SUCCESS; // this will not inform client of the success yet. (see rodex_send_mail_result)
+}
+
+/// The result of a message send, called by char-server
+/// @param ssd : Sender's sd
+/// @param rsd : Receiver's sd
+/// @param result : Message sent (true) or failed (false)
+static void rodex_send_mail_result(struct map_session_data *ssd, struct map_session_data *rsd, bool result)
+{
+ if (ssd != NULL) {
+ rodex->clean(ssd, 1);
+ if (result == false) {
+ clif->rodex_send_mail_result(ssd->fd, ssd, RODEX_SEND_MAIL_FATAL_ERROR);
+ return;
+ }
+
+ clif->rodex_send_mail_result(ssd->fd, ssd, RODEX_SEND_MAIL_SUCCESS);
+ }
+
+ if (rsd != NULL) {
+ clif->rodex_icon(rsd->fd, true);
+ clif_disp_onlyself(rsd, "You've got a new mail!");
+ }
+ return;
+}
+
+/// Retrieves one message from character
+/// @param sd : Character
+/// @param mail_id : Mail ID that's being retrieved
+/// Returns the message
+static struct rodex_message *rodex_get_mail(struct map_session_data *sd, int64 mail_id)
+{
+ int i;
+ struct rodex_message *msg;
+ int char_id;
+
+ nullpo_retr(NULL, sd);
+
+ ARR_FIND(0, VECTOR_LENGTH(sd->rodex.messages), i, VECTOR_INDEX(sd->rodex.messages, i).id == mail_id);
+ if (i == VECTOR_LENGTH(sd->rodex.messages))
+ return NULL;
+
+ msg = &VECTOR_INDEX(sd->rodex.messages, i);
+
+ char_id = sd->status.char_id;
+
+ if ((msg->is_deleted == true)
+ || (msg->expire_date < time(NULL) && ((msg->receiver_accountid > 0) || (msg->receiver_id == char_id && msg->sender_id != char_id)))
+ || (msg->expire_date + RODEX_EXPIRE < time(NULL))
+ )
+ return NULL;
+
+ return msg;
+}
+
+/// Request to read a mail by its ID
+/// @param sd : Who's reading
+/// @param mail_id : Mail ID to be read
+static void rodex_read_mail(struct map_session_data *sd, int64 mail_id)
+{
+ struct rodex_message *msg;
+
+ nullpo_retv(sd);
+
+ msg = rodex->get_mail(sd, mail_id);
+ nullpo_retv(msg);
+
+ if (msg->opentype == RODEX_OPENTYPE_RETURN) {
+ if (msg->sender_read == false) {
+ intif->rodex_updatemail(msg->id, 4);
+ msg->sender_read = true;
+ }
+ } else {
+ if (msg->is_read == false) {
+ intif->rodex_updatemail(msg->id, 0);
+ msg->is_read = true;
+ }
+ }
+
+ clif->rodex_read_mail(sd, msg->opentype, msg);
+}
+
+/// Deletes a mail
+/// @param sd : Who's deleting
+/// @param mail_id : Mail ID to be deleted
+static void rodex_delete_mail(struct map_session_data *sd, int64 mail_id)
+{
+ struct rodex_message *msg;
+
+ nullpo_retv(sd);
+
+ msg = rodex->get_mail(sd, mail_id);
+ nullpo_retv(msg);
+
+ msg->is_deleted = true;
+ intif->rodex_updatemail(msg->id, 3);
+
+ clif->rodex_delete_mail(sd, msg->opentype, msg->id);
+}
+
+/// Gets attached zeny
+/// @param sd : Who's getting
+/// @param mail_id : Mail ID that we're getting zeny from
+static void rodex_get_zeny(struct map_session_data *sd, int8 opentype, int64 mail_id)
+{
+ struct rodex_message *msg;
+
+ nullpo_retv(sd);
+
+ msg = rodex->get_mail(sd, mail_id);
+
+ if (msg == NULL) {
+ clif->rodex_request_zeny(sd, opentype, mail_id, RODEX_GET_ZENY_FATAL_ERROR);
+ return;
+ }
+
+ if ((int64)sd->status.zeny + msg->zeny > MAX_ZENY) {
+ clif->rodex_request_zeny(sd, opentype, mail_id, RODEX_GET_ZENY_LIMIT_ERROR);
+ return;
+ }
+
+ if (pc->getzeny(sd, (int)msg->zeny, LOG_TYPE_MAIL, NULL) != 0) {
+ clif->rodex_request_zeny(sd, opentype, mail_id, RODEX_GET_ZENY_FATAL_ERROR);
+ return;
+ }
+
+ msg->type &= ~MAIL_TYPE_ZENY;
+ msg->zeny = 0;
+ intif->rodex_updatemail(mail_id, 1);
+
+ clif->rodex_request_zeny(sd, opentype, mail_id, RODEX_GET_ZENY_SUCCESS);
+}
+
+/// Gets attached item
+/// @param sd : Who's getting
+/// @param mail_id : Mail ID that we're getting items from
+static void rodex_get_items(struct map_session_data *sd, int8 opentype, int64 mail_id)
+{
+ struct rodex_message *msg;
+ int weight = 0;
+ int empty_slots = 0, required_slots;
+ int i;
+
+ nullpo_retv(sd);
+
+ msg = rodex->get_mail(sd, mail_id);
+
+ if (msg == NULL) {
+ clif->rodex_request_items(sd, opentype, mail_id, RODEX_GET_ITEM_FATAL_ERROR);
+ return;
+ }
+
+ if (msg->items_count < 1) {
+ clif->rodex_request_items(sd, opentype, mail_id, RODEX_GET_ITEM_FATAL_ERROR);
+ return;
+ }
+
+ for (i = 0; i < RODEX_MAX_ITEM; ++i) {
+ if (msg->items[i].item.nameid != 0) {
+ weight += itemdb->search(msg->items[i].item.nameid)->weight * msg->items[i].item.amount;
+ }
+ }
+
+ if ((sd->weight + weight > sd->max_weight)) {
+ clif->rodex_request_items(sd, opentype, mail_id, RODEX_GET_ITEM_FULL_ERROR);
+ return;
+ }
+
+ required_slots = msg->items_count;
+ for (i = 0; i < sd->status.inventorySize; ++i) {
+ if (sd->status.inventory[i].nameid == 0) {
+ empty_slots++;
+ } else if (itemdb->isstackable(sd->status.inventory[i].nameid) == 1) {
+ int j;
+ ARR_FIND(0, msg->items_count, j, sd->status.inventory[i].nameid == msg->items[j].item.nameid);
+ if (j < msg->items_count) {
+ struct item_data *idata = itemdb->search(sd->status.inventory[i].nameid);
+
+ if ((idata->stack.inventory && sd->status.inventory[i].amount + msg->items[j].item.amount > idata->stack.amount) ||
+ sd->status.inventory[i].amount + msg->items[j].item.amount > MAX_AMOUNT) {
+ clif->rodex_request_items(sd, opentype, mail_id, RODEX_GET_ITEM_FULL_ERROR);
+ return;
+ }
+
+ required_slots--;
+ }
+ }
+ }
+
+ if (empty_slots < required_slots) {
+ clif->rodex_request_items(sd, opentype, mail_id, RODEX_GET_ITEM_FULL_ERROR);
+ return;
+ }
+
+ for (i = 0; i < RODEX_MAX_ITEM; ++i) {
+ struct item *it = &msg->items[i].item;
+
+ if (it->nameid == 0) {
+ continue;
+ }
+
+ if (pc->additem(sd, it, it->amount, LOG_TYPE_MAIL) != 0) {
+ clif->rodex_request_items(sd, opentype, mail_id, RODEX_GET_ITEM_FULL_ERROR);
+ intif->rodex_updatemail(mail_id, 2);
+ return;
+ } else {
+ memset(it, 0x0, sizeof(*it));
+ }
+ }
+
+ msg->type &= ~MAIL_TYPE_ITEM;
+ msg->items_count = 0;
+ intif->rodex_updatemail(mail_id, 2);
+
+ clif->rodex_request_items(sd, opentype, mail_id, RODEX_GET_ITEMS_SUCCESS);
+}
+
+/// Cleans user's RoDEX related data
+/// - should be called everytime we're going to stop using rodex in this character
+/// @param sd : Target to clean
+/// @param flag :
+/// 0 - clear everything
+/// 1 - clear tmp only
+static void rodex_clean(struct map_session_data *sd, int8 flag)
+{
+ nullpo_retv(sd);
+
+ if (flag == 0)
+ VECTOR_CLEAR(sd->rodex.messages);
+
+ memset(&sd->rodex.tmp, 0x0, sizeof(sd->rodex.tmp));
+}
+
+/// User request to open rodex, load mails from char-server
+/// @param sd : Who's requesting
+/// @param open_type : Box Type (see RODEX_OPENTYPE)
+static void rodex_open(struct map_session_data *sd, int8 open_type, int64 first_mail_id)
+{
+#if PACKETVER >= 20170419
+ const int type = 1;
+#else
+ const int type = 0;
+#endif
+ nullpo_retv(sd);
+ if (open_type == RODEX_OPENTYPE_ACCOUNT && battle_config.feature_rodex_use_accountmail == false)
+ open_type = RODEX_OPENTYPE_MAIL;
+
+ intif->rodex_requestinbox(sd->status.char_id, sd->status.account_id, type, open_type, first_mail_id);
+}
+
+/// User request to read next page of mails
+/// @param sd : Who's requesting
+/// @param open_type : Box Type (see RODEX_OPENTYPE)
+/// @param last_mail_id : The last mail from the current page
+static void rodex_next_page(struct map_session_data *sd, int8 open_type, int64 last_mail_id)
+{
+ int64 msg_count, page_start = 0;
+ nullpo_retv(sd);
+
+ if (open_type == RODEX_OPENTYPE_ACCOUNT && battle_config.feature_rodex_use_accountmail == false) {
+ // Should not happen
+ open_type = RODEX_OPENTYPE_MAIL;
+ rodex->open(sd, open_type, 0);
+ return;
+ }
+
+ msg_count = VECTOR_LENGTH(sd->rodex.messages);
+
+ if (last_mail_id > 0) {
+ // Find where the page starts
+ ARR_FIND(0, msg_count, page_start, VECTOR_INDEX(sd->rodex.messages, page_start).id == last_mail_id);
+ if (page_start > 0 && page_start < msg_count) {
+ --page_start; // Valid page, get first item of next page
+ } else {
+ page_start = msg_count - 1; // Should not happen, invalid lower_id given
+ }
+ clif->rodex_send_maillist(sd->fd, sd, open_type, page_start);
+ }
+}
+
+/// User's request to refresh his mail box
+/// @param sd : Who's requesting
+/// @param open_type : Box Type (See RODEX_OPENTYPE)
+/// @param first_mail_id : The first mail id known by client, currently unused
+static void rodex_refresh(struct map_session_data *sd, int8 open_type, int64 first_mail_id)
+{
+ nullpo_retv(sd);
+ if (open_type == RODEX_OPENTYPE_ACCOUNT && battle_config.feature_rodex_use_accountmail == false)
+ open_type = RODEX_OPENTYPE_MAIL;
+
+ // Some clients sends the first mail id it currently has and expects to receive
+ // a list of newer mails, other clients sends first mail id as 0 and expects
+ // to receive the first page (as if opening the box)
+ if (first_mail_id > 0) {
+ intif->rodex_requestinbox(sd->status.char_id, sd->status.account_id, 1, open_type, first_mail_id);
+ } else {
+ intif->rodex_requestinbox(sd->status.char_id, sd->status.account_id, 0, open_type, first_mail_id);
+ }
+}
+
+static void do_init_rodex(bool minimal)
+{
+ if (minimal)
+ return;
+}
+
+static void do_final_rodex(void)
+{
+
+}
+
+void rodex_defaults(void)
+{
+ rodex = &rodex_s;
+
+ rodex->init = do_init_rodex;
+ rodex->final = do_final_rodex;
+
+ rodex->open = rodex_open;
+ rodex->next_page = rodex_next_page;
+ rodex->refresh = rodex_refresh;
+ rodex->isenabled = rodex_isenabled;
+ rodex->add_item = rodex_add_item;
+ rodex->remove_item = rodex_remove_item;
+ rodex->check_player = rodex_check_player;
+ rodex->send_mail = rodex_send_mail;
+ rodex->send_mail_result = rodex_send_mail_result;
+ rodex->get_mail = rodex_get_mail;
+ rodex->read_mail = rodex_read_mail;
+ rodex->delete_mail = rodex_delete_mail;
+ rodex->get_zeny = rodex_get_zeny;
+ rodex->get_items = rodex_get_items;
+ rodex->clean = rodex_clean;
+}
diff --git a/src/map/rodex.h b/src/map/rodex.h
new file mode 100644
index 000000000..ddf7cb32b
--- /dev/null
+++ b/src/map/rodex.h
@@ -0,0 +1,85 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2017 Hercules Dev Team
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef MAP_RODEX_H
+#define MAP_RODEX_H
+
+#include "common/mmo.h"
+#include "common/hercules.h"
+
+#define RODEX_WEIGHT_LIMIT (2000 * 10)
+
+struct rodex_message;
+
+enum rodex_add_item {
+ RODEX_ADD_ITEM_SUCCESS = 0,
+ RODEX_ADD_ITEM_WEIGHT_ERROR = 1,
+ RODEX_ADD_ITEM_FATAL_ERROR = 2,
+ RODEX_ADD_ITEM_NO_SPACE = 3,
+ RODEX_ADD_ITEM_NOT_TRADEABLE = 4,
+};
+
+enum rodex_send_mail {
+ RODEX_SEND_MAIL_SUCCESS = 0,
+ RODEX_SEND_MAIL_FATAL_ERROR = 1,
+ RODEX_SEND_MAIL_COUNT_ERROR = 2,
+ RODEX_SEND_MAIL_ITEM_ERROR = 3,
+ RODEX_SEND_MAIL_RECEIVER_ERROR = 4
+};
+
+enum rodex_get_zeny {
+ RODEX_GET_ZENY_SUCCESS = 0,
+ RODEX_GET_ZENY_FATAL_ERROR = 1,
+ RODEX_GET_ZENY_LIMIT_ERROR = 2
+};
+
+enum rodex_get_items {
+ RODEX_GET_ITEMS_SUCCESS = 0,
+ RODEX_GET_ITEM_FATAL_ERROR = 1,
+ RODEX_GET_ITEM_FULL_ERROR = 2,
+};
+
+struct rodex_interface {
+ void (*init) (bool minimal);
+ void (*final) (void);
+
+ bool (*isenabled) (void);
+ void (*open) (struct map_session_data *sd, int8 open_type, int64 first_mail_id);
+ void (*next_page) (struct map_session_data *sd, int8 open_type, int64 last_mail_id);
+ void (*refresh) (struct map_session_data *sd, int8 open_type, int64 first_mail_id);
+ void (*add_item) (struct map_session_data *sd, int16 idx, int16 amount);
+ void (*remove_item) (struct map_session_data *sd, int16 idx, int16 amount);
+ void (*check_player) (struct map_session_data *sd, const char *name, int *base_level, int *char_id, short *class);
+ int (*send_mail) (struct map_session_data *sd, const char *receiver_name, const char *body, const char *title, int64 zeny);
+ void (*send_mail_result) (struct map_session_data *ssd, struct map_session_data *rsd, bool result);
+ struct rodex_message *(*get_mail) (struct map_session_data *sd, int64 mail_id);
+ void (*read_mail) (struct map_session_data *sd, int64 mail_id);
+ void (*get_zeny) (struct map_session_data *sd, int8 opentype, int64 mail_id);
+ void (*get_items) (struct map_session_data *sd, int8 opentype, int64 mail_id);
+ void (*delete_mail) (struct map_session_data *sd, int64 mail_id);
+ void (*clean) (struct map_session_data *sd, int8 flag);
+};
+
+#ifdef HERCULES_CORE
+void rodex_defaults(void);
+#endif
+
+HPShared struct rodex_interface *rodex;
+
+#endif
diff --git a/src/map/script.c b/src/map/script.c
index 48c377d24..841e21169 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -29,7 +29,9 @@
#include "map/channel.h"
#include "map/chat.h"
#include "map/chrif.h"
+#include "map/clan.h"
#include "map/clif.h"
+#include "map/date.h"
#include "map/elemental.h"
#include "map/guild.h"
#include "map/homunculus.h"
@@ -41,6 +43,7 @@
#include "map/map.h"
#include "map/mapreg.h"
#include "map/mercenary.h"
+#include "map/messages.h"
#include "map/mob.h"
#include "map/npc.h"
#include "map/party.h"
@@ -54,6 +57,7 @@
#include "map/status.h"
#include "map/storage.h"
#include "map/unit.h"
+#include "map/achievement.h"
#include "common/cbasetypes.h"
#include "common/conf.h"
#include "common/db.h"
@@ -80,7 +84,7 @@
#include <sys/time.h>
#endif
-struct script_interface script_s;
+static struct script_interface script_s;
struct script_interface *script;
static inline int GETVALUE(const struct script_buf *buf, int i) __attribute__((nonnull (1)));
@@ -100,7 +104,8 @@ static inline void SETVALUE(struct script_buf *buf, int i, int n)
VECTOR_INDEX(*buf, i+2) = GetByte(n, 2);
}
-const char* script_op2name(int op) {
+const char *script_op2name(int op)
+{
#define RETURN_OP_NAME(type) case type: return #type
switch( op ) {
RETURN_OP_NAME(C_NOP);
@@ -136,6 +141,7 @@ const char* script_op2name(int op) {
RETURN_OP_NAME(C_ADD);
RETURN_OP_NAME(C_SUB);
RETURN_OP_NAME(C_MUL);
+ RETURN_OP_NAME(C_POW);
RETURN_OP_NAME(C_DIV);
RETURN_OP_NAME(C_MOD);
RETURN_OP_NAME(C_NEG);
@@ -158,7 +164,7 @@ const char* script_op2name(int op) {
}
#ifdef SCRIPT_DEBUG_DUMP_STACK
-static void script_dump_stack(struct script_state* st)
+static void script_dump_stack(struct script_state *st)
{
int i;
nullpo_retv(st);
@@ -201,7 +207,8 @@ static void script_dump_stack(struct script_state* st)
#endif
/// Reports on the console the src of a script error.
-void script_reportsrc(struct script_state *st) {
+static void script_reportsrc(struct script_state *st)
+{
struct block_list* bl;
nullpo_retv(st);
@@ -232,7 +239,7 @@ void script_reportsrc(struct script_state *st) {
}
/// Reports on the console information about the script data.
-void script_reportdata(struct script_data* data)
+static void script_reportdata(struct script_data *data)
{
if( data == NULL )
return;
@@ -274,7 +281,7 @@ void script_reportdata(struct script_data* data)
}
/// Reports on the console information about the current built-in function.
-void script_reportfunc(struct script_state* st)
+static void script_reportfunc(struct script_state *st)
{
int params, id;
struct script_data* data;
@@ -309,8 +316,9 @@ void script_reportfunc(struct script_state* st)
/*==========================================
* Output error message
*------------------------------------------*/
-static void disp_error_message2(const char *mes,const char *pos,int report) __attribute__((nonnull (1))) analyzer_noreturn;
-static void disp_error_message2(const char *mes,const char *pos,int report) {
+static void disp_error_message2(const char *mes, const char *pos, int report) __attribute__((nonnull (1))) analyzer_noreturn;
+static void disp_error_message2(const char *mes, const char *pos, int report)
+{
script->error_msg = aStrdup(mes);
script->error_pos = pos;
script->error_report = report;
@@ -318,12 +326,13 @@ static void disp_error_message2(const char *mes,const char *pos,int report) {
}
#define disp_error_message(mes,pos) (disp_error_message2((mes),(pos),1))
-void disp_warning_message(const char *mes, const char *pos) {
+static void disp_warning_message(const char *mes, const char *pos)
+{
script->warning(script->parser_current_src,script->parser_current_file,script->parser_current_line,mes,pos);
}
/// Checks event parameter validity
-void check_event(struct script_state *st, const char *evt)
+static void check_event(struct script_state *st, const char *evt)
{
if( evt && evt[0] && !stristr(evt, "::On") )
{
@@ -335,7 +344,8 @@ void check_event(struct script_state *st, const char *evt)
/*==========================================
* Hashes the input string
*------------------------------------------*/
-unsigned int calc_hash(const char* p) {
+static unsigned int calc_hash(const char *p)
+{
unsigned int h;
nullpo_ret(p);
@@ -370,7 +380,8 @@ unsigned int calc_hash(const char* p) {
/*==========================================
* Hashes the input string in a case insensitive way
*------------------------------------------*/
-unsigned int calc_hash_ci(const char* p) {
+static unsigned int calc_hash_ci(const char *p)
+{
unsigned int h = 0;
#ifdef ENABLE_CASE_CHECK
@@ -409,14 +420,14 @@ unsigned int calc_hash_ci(const char* p) {
*------------------------------------------*/
/// Looks up string using the provided id.
-const char* script_get_str(int id)
+static const char *script_get_str(int id)
{
Assert_retr(NULL, id >= LABEL_START && id < script->str_size);
return script->str_buf+script->str_data[id].str;
}
/// Returns the uid of the string, or -1.
-int script_search_str(const char* p)
+static int script_search_str(const char *p)
{
int i;
@@ -429,7 +440,7 @@ int script_search_str(const char* p)
return -1;
}
-void script_casecheck_clear_sub(struct casecheck_data *ccd)
+static void script_casecheck_clear_sub(struct casecheck_data *ccd)
{
#ifdef ENABLE_CASE_CHECK
nullpo_retv(ccd);
@@ -449,15 +460,17 @@ void script_casecheck_clear_sub(struct casecheck_data *ccd)
#endif // ENABLE_CASE_CHECK
}
-void script_global_casecheck_clear(void) {
+static void script_global_casecheck_clear(void)
+{
script_casecheck_clear_sub(&script->global_casecheck);
}
-void script_local_casecheck_clear(void) {
+static void script_local_casecheck_clear(void)
+{
script_casecheck_clear_sub(&script->local_casecheck);
}
-const char *script_casecheck_add_str_sub(struct casecheck_data *ccd, const char *p)
+static const char *script_casecheck_add_str_sub(struct casecheck_data *ccd, const char *p)
{
#ifdef ENABLE_CASE_CHECK
int len;
@@ -514,17 +527,19 @@ const char *script_casecheck_add_str_sub(struct casecheck_data *ccd, const char
return NULL;
}
-const char *script_global_casecheck_add_str(const char *p) {
+static const char *script_global_casecheck_add_str(const char *p)
+{
return script_casecheck_add_str_sub(&script->global_casecheck, p);
}
-const char *script_local_casecheck_add_str(const char *p) {
+static const char *script_local_casecheck_add_str(const char *p)
+{
return script_casecheck_add_str_sub(&script->local_casecheck, p);
}
/// Stores a copy of the string and returns its id.
/// If an identical string is already present, returns its id instead.
-int script_add_str(const char* p)
+static int script_add_str(const char *p)
{
int len, h = script->calc_hash(p);
#ifdef ENABLE_CASE_CHECK
@@ -598,12 +613,24 @@ int script_add_str(const char* p)
return script->str_num++;
}
+static int script_add_variable(const char *varname)
+{
+ int key = script->search_str(varname);
+
+ if (key < 0) {
+ key = script->add_str(varname);
+ script->str_data[key].type = C_NAME;
+ }
+
+ return key;
+}
+
/**
* Appends 1 byte to the script buffer.
*
* @param a The byte to append.
*/
-void add_scriptb(int a)
+static void add_scriptb(int a)
{
VECTOR_ENSURE(script->buf, 1, SCRIPT_BLOCK_SIZE);
VECTOR_PUSH(script->buf, (uint8)a);
@@ -618,7 +645,7 @@ void add_scriptb(int a)
*
* @param a The value to append.
*/
-void add_scriptc(int a)
+static void add_scriptc(int a)
{
while( a >= 0x40 )
{
@@ -638,7 +665,7 @@ void add_scriptc(int a)
*
* @param a The value to append.
*/
-void add_scripti(int a)
+static void add_scripti(int a)
{
while( a >= 0x40 )
{
@@ -653,7 +680,7 @@ void add_scripti(int a)
*
* @param l The id of the script->str_data entry (Maximum up to 16M)
*/
-void add_scriptl(int l)
+static void add_scriptl(int l)
{
int backpatch = script->str_data[l].backpatch;
@@ -691,7 +718,7 @@ void add_scriptl(int l)
/*==========================================
* Resolve the label
*------------------------------------------*/
-void set_label(int l,int pos, const char* script_pos)
+static void set_label(int l, int pos, const char *script_pos)
{
int i;
@@ -715,7 +742,7 @@ void set_label(int l,int pos, const char* script_pos)
}
/// Skips spaces and/or comments.
-const char* script_skip_space(const char* p)
+static const char *script_skip_space(const char *p)
{
if( p == NULL )
return NULL;
@@ -754,7 +781,7 @@ const char* script_skip_space(const char* p)
/// Skips a word.
/// A word consists of undercores and/or alphanumeric characters,
/// and valid variable prefixes/postfixes.
-const char* skip_word(const char* p)
+static const char *skip_word(const char *p)
{
nullpo_retr(NULL, p);
// prefix
@@ -783,7 +810,8 @@ const char* skip_word(const char* p)
/// Adds a word to script->str_data.
/// @see skip_word
/// @see script->add_str
-int add_word(const char* p) {
+static int add_word(const char *p)
+{
size_t len;
int i;
@@ -809,8 +837,7 @@ int add_word(const char* p) {
/// Parses a function call.
/// The argument list can have parenthesis or not.
/// The number of arguments is checked.
-static
-const char* parse_callfunc(const char* p, int require_paren, int is_custom)
+static const char *parse_callfunc(const char *p, int require_paren, int is_custom)
{
const char *p2;
char *arg = NULL;
@@ -941,7 +968,7 @@ const char* parse_callfunc(const char* p, int require_paren, int is_custom)
/// Processes end of logical script line.
/// @param first When true, only fix up scheduling data is initialized
/// @param p Script position for error reporting in set_label
-void parse_nextline(bool first, const char* p)
+static void parse_nextline(bool first, const char *p)
{
if( !first )
{
@@ -959,7 +986,7 @@ void parse_nextline(bool first, const char* p)
* Pushes a variable into stack, processing its array index if needed.
* @see parse_variable
*/
-void parse_variable_sub_push(int word, const char *p2)
+static void parse_variable_sub_push(int word, const char *p2)
{
if( p2 ) {
const char* p3 = NULL;
@@ -990,7 +1017,7 @@ void parse_variable_sub_push(int word, const char *p2)
/// Parse a variable assignment using the direct equals operator
/// @param p script position where the function should run from
/// @return NULL if not a variable assignment, the new position otherwise
-const char* parse_variable(const char* p)
+static const char *parse_variable(const char *p)
{
int word;
c_op type = C_NOP;
@@ -1035,6 +1062,7 @@ const char* parse_variable(const char* p)
|| ( p[0] == '|' && p[1] == '=' && (type = C_OR, true) ) // |=
|| ( p[0] == '&' && p[1] == '=' && (type = C_AND, true) ) // &=
|| ( p[0] == '*' && p[1] == '=' && (type = C_MUL, true) ) // *=
+ || ( p[0] == '*' && p[1] == '*' && p[2] == '=' && (type = C_POW, true) ) // **=
|| ( p[0] == '/' && p[1] == '=' && (type = C_DIV, true) ) // /=
|| ( p[0] == '%' && p[1] == '=' && (type = C_MOD, true) ) // %=
|| ( p[0] == '+' && p[1] == '+' && (type = C_ADD_POST, true) ) // post ++
@@ -1058,6 +1086,7 @@ const char* parse_variable(const char* p)
case C_L_SHIFT: // <<=
case C_R_SHIFT: // >>=
+ case C_POW: // **=
p = script->skip_space( &p[3] );
break;
@@ -1144,7 +1173,8 @@ const char* parse_variable(const char* p)
* @param p Pointer to the string to check
* @return Whether the string is a number literal
*/
-bool is_number(const char *p) {
+static bool is_number(const char *p)
+{
const char *np;
if (!p)
return false;
@@ -1175,7 +1205,7 @@ bool is_number(const char *p) {
* @param str The string to insert.
* @return the string position in the script string list.
*/
-int script_string_dup(char *str)
+static int script_string_dup(char *str)
{
int len;
int pos = script->string_list_pos;
@@ -1197,7 +1227,7 @@ int script_string_dup(char *str)
/*==========================================
* Analysis section
*------------------------------------------*/
-const char *parse_simpleexpr(const char *p)
+static const char *parse_simpleexpr(const char *p)
{
p=script->skip_space(p);
@@ -1215,7 +1245,7 @@ const char *parse_simpleexpr(const char *p)
}
}
-const char *parse_simpleexpr_paren(const char *p)
+static const char *parse_simpleexpr_paren(const char *p)
{
int i = script->syntax.curly_count - 1;
nullpo_retr(NULL, p);
@@ -1242,7 +1272,7 @@ const char *parse_simpleexpr_paren(const char *p)
return p + 1;
}
-const char *parse_simpleexpr_number(const char *p)
+static const char *parse_simpleexpr_number(const char *p)
{
char *np = NULL;
long long lli;
@@ -1264,7 +1294,7 @@ const char *parse_simpleexpr_number(const char *p)
return np;
}
-const char *parse_simpleexpr_string(const char *p)
+static const char *parse_simpleexpr_string(const char *p)
{
const char *start_point = p;
@@ -1305,7 +1335,7 @@ const char *parse_simpleexpr_string(const char *p)
return p;
}
-const char *parse_simpleexpr_name(const char *p)
+static const char *parse_simpleexpr_name(const char *p)
{
int l;
const char *pv = NULL;
@@ -1348,6 +1378,11 @@ const char *parse_simpleexpr_name(const char *p)
disp_error_message("parse_simpleexpr: unmatched ']'", p);
++p;
script->addc(C_FUNC);
+ } else if (script->str_data[l].type == C_INT) {
+ script->addc(C_NAME);
+ script->addb(l);
+ script->addb(l >> 8);
+ script->addb(l >> 16);
} else {
script->addl(l);
}
@@ -1355,7 +1390,7 @@ const char *parse_simpleexpr_name(const char *p)
return p;
}
-void script_add_translatable_string(const struct script_string_buf *string, const char *start_point)
+static void script_add_translatable_string(const struct script_string_buf *string, const char *start_point)
{
struct string_translation *st = NULL;
@@ -1395,7 +1430,7 @@ void script_add_translatable_string(const struct script_string_buf *string, cons
/*==========================================
* Analysis of the expression
*------------------------------------------*/
-const char* script_parse_subexpr(const char* p,int limit)
+static const char *script_parse_subexpr(const char *p, int limit)
{
int op,opl,len;
@@ -1422,8 +1457,9 @@ const char* script_parse_subexpr(const char* p,int limit)
p=script->skip_space(p);
while((
(op=C_OP3, opl=0, len=1,*p=='?') // ?:
- || (op=C_ADD, opl=9, len=1,*p=='+') // +
- || (op=C_SUB, opl=9, len=1,*p=='-') // -
+ || (op=C_ADD, opl=9, len=1,*p=='+' && p[1]!='+') // +
+ || (op=C_SUB, opl=9, len=1,*p=='-' && p[1]!='-') // -
+ || (op=C_POW, opl=11,len=2,*p=='*' && p[1]=='*') // **
|| (op=C_MUL, opl=10,len=1,*p=='*') // *
|| (op=C_DIV, opl=10,len=1,*p=='/') // /
|| (op=C_MOD, opl=10,len=1,*p=='%') // %
@@ -1463,7 +1499,7 @@ const char* script_parse_subexpr(const char* p,int limit)
/*==========================================
* Evaluation of the expression
*------------------------------------------*/
-const char* parse_expr(const char *p)
+static const char *parse_expr(const char *p)
{
nullpo_retr(NULL, p);
switch(*p) {
@@ -1478,7 +1514,7 @@ const char* parse_expr(const char *p)
/*==========================================
* Analysis of the line
*------------------------------------------*/
-const char* parse_line(const char* p)
+static const char *parse_line(const char *p)
{
const char* p2;
@@ -1541,7 +1577,7 @@ const char* parse_line(const char* p)
}
// { ... } Closing process
-const char* parse_curly_close(const char* p)
+static const char *parse_curly_close(const char *p)
{
nullpo_retr(NULL, p);
if(script->syntax.curly_count <= 0) {
@@ -1600,7 +1636,7 @@ const char* parse_curly_close(const char* p)
// Syntax-related processing
// break, case, continue, default, do, for, function,
// if, switch, while ? will handle this internally.
-const char* parse_syntax(const char* p)
+static const char *parse_syntax(const char *p)
{
const char *p2 = script->skip_word(p);
@@ -2030,7 +2066,8 @@ const char* parse_syntax(const char* p)
return NULL;
}
-const char* parse_syntax_close(const char *p) {
+static const char *parse_syntax_close(const char *p)
+{
// If (...) for (...) hoge (); as to make sure closed closed once again
int flag;
@@ -2044,7 +2081,7 @@ const char* parse_syntax_close(const char *p) {
// Close judgment if, for, while, of do
// flag == 1 : closed
// flag == 0 : not closed
-const char* parse_syntax_close_sub(const char* p,int* flag)
+static const char *parse_syntax_close_sub(const char *p, int *flag)
{
char label[256];
int pos = script->syntax.curly_count - 1;
@@ -2217,7 +2254,7 @@ const char* parse_syntax_close_sub(const char* p,int* flag)
}
/// Retrieves the value of a constant.
-bool script_get_constant(const char* name, int* value)
+static bool script_get_constant(const char *name, int *value)
{
int n = script->search_str(name);
@@ -2235,11 +2272,11 @@ bool script_get_constant(const char* name, int* value)
}
/// Creates new constant or parameter with given value.
-void script_set_constant(const char *name, int value, bool is_parameter, bool is_deprecated)
+static void script_set_constant(const char *name, int value, bool is_parameter, bool is_deprecated)
{
int n = script->add_str(name);
- if( script->str_data[n].type == C_NOP ) {// new
+ if (script->str_data[n].type == C_NOP) {
script->str_data[n].type = is_parameter ? C_PARAM : C_INT;
script->str_data[n].val = value;
script->str_data[n].deprecated = is_deprecated ? 1 : 0;
@@ -2250,7 +2287,7 @@ void script_set_constant(const char *name, int value, bool is_parameter, bool is
}
}
/* adds data to a existent constant in the database, inserted normally via parse */
-void script_set_constant2(const char *name, int value, bool is_parameter, bool is_deprecated)
+static void script_set_constant2(const char *name, int value, bool is_parameter, bool is_deprecated)
{
int n = script->add_str(name);
@@ -2283,7 +2320,7 @@ void script_set_constant2(const char *name, int value, bool is_parameter, bool i
/**
* Loads the constants database from constants.conf
*/
-void read_constdb(void)
+static void read_constdb(bool reload)
{
struct config_t constants_conf;
char filepath[256];
@@ -2291,7 +2328,7 @@ void read_constdb(void)
struct config_setting_t *t;
int i = 0;
- snprintf(filepath, 256, "%s/constants.conf", map->db_path);
+ safesnprintf(filepath, 256, "%s/constants.conf", map->db_path);
if (!libconfig->load_file(&constants_conf, filepath))
return;
@@ -2302,7 +2339,6 @@ void read_constdb(void)
}
while ((t = libconfig->setting_get_elem(cdb, i++))) {
- bool is_parameter = false;
bool is_deprecated = false;
int value = 0;
const char *name = config_setting_name(t);
@@ -2333,10 +2369,6 @@ void read_constdb(void)
continue;
}
value = i32;
- if (libconfig->setting_lookup_bool(t, "Parameter", &i32)) {
- if (i32 != 0)
- is_parameter = true;
- }
if (libconfig->setting_lookup_bool(t, "Deprecated", &i32)) {
if (i32 != 0)
is_deprecated = true;
@@ -2344,9 +2376,13 @@ void read_constdb(void)
} else {
value = libconfig->setting_get_int(t);
}
- if (is_parameter)
- ShowWarning("read_constdb: Defining parameters in the constants configuration is deprecated and will no longer be possible in a future version. Parameters should be defined in source. (parameter = '%s')\n", name);
- script->set_constant(name, value, is_parameter, is_deprecated);
+
+ if (reload) {
+ int n = script->add_str(name);
+ script->str_data[n].type = C_NOP; // ensures it will be overwritten
+ }
+
+ script->set_constant(name, value, false, is_deprecated);
}
script->constdb_comment(NULL);
libconfig->destroy(&constants_conf);
@@ -2359,12 +2395,12 @@ void read_constdb(void)
*
* @param comment The comment to set (NULL to unset)
*/
-void script_constdb_comment(const char *comment)
+static void script_constdb_comment(const char *comment)
{
(void)comment;
}
-void script_load_parameters(void)
+static void script_load_parameters(void)
{
int i = 0;
struct {
@@ -2384,6 +2420,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},
@@ -2418,7 +2455,7 @@ void script_load_parameters(void)
/*==========================================
* Display emplacement line of script
*------------------------------------------*/
-const char* script_print_line(StringBuf* buf, const char* p, const char* mark, int line)
+static const char *script_print_line(StringBuf *buf, const char *p, const char *mark, int line)
{
int i, mark_pos = 0, tabstop = TAB_SIZE;
if( p == NULL || !p[0] ) return NULL;
@@ -2457,7 +2494,8 @@ const char* script_print_line(StringBuf* buf, const char* p, const char* mark, i
#undef update_tabstop
#define CONTEXTLINES 3
-void script_errorwarning_sub(StringBuf *buf, const char* src, const char* file, int start_line, const char* error_msg, const char* error_pos) {
+static void script_errorwarning_sub(StringBuf *buf, const char *src, const char *file, int start_line, const char *error_msg, const char *error_pos)
+{
// Find the line where the error occurred
int j;
int line = start_line;
@@ -2493,7 +2531,8 @@ void script_errorwarning_sub(StringBuf *buf, const char* src, const char* file,
}
#undef CONTEXTLINES
-void script_error(const char* src, const char* file, int start_line, const char* error_msg, const char* error_pos) {
+static void script_error(const char *src, const char *file, int start_line, const char *error_msg, const char *error_pos)
+{
StringBuf buf;
StrBuf->Init(&buf);
@@ -2505,7 +2544,8 @@ void script_error(const char* src, const char* file, int start_line, const char*
StrBuf->Destroy(&buf);
}
-void script_warning(const char* src, const char* file, int start_line, const char* error_msg, const char* error_pos) {
+static void script_warning(const char *src, const char *file, int start_line, const char *error_msg, const char *error_pos)
+{
StringBuf buf;
StrBuf->Init(&buf);
@@ -2519,7 +2559,8 @@ void script_warning(const char* src, const char* file, int start_line, const cha
/*==========================================
* Analysis of the script
*------------------------------------------*/
-struct script_code* parse_script(const char *src,const char *file,int line,int options, int *retval) {
+static struct script_code *parse_script(const char *src, const char *file, int line, int options, int *retval)
+{
const char *p,*tmpp;
int i;
struct script_code* code = NULL;
@@ -2733,7 +2774,7 @@ struct script_code* parse_script(const char *src,const char *file,int line,int o
/// Returns the player attached to this script, identified by the rid.
/// If there is no player attached, the script is terminated.
-struct map_session_data *script_rid2sd(struct script_state *st)
+static struct map_session_data *script_rid2sd(struct script_state *st)
{
struct map_session_data *sd;
nullpo_retr(NULL, st);
@@ -2746,7 +2787,7 @@ struct map_session_data *script_rid2sd(struct script_state *st)
return sd;
}
-struct map_session_data *script_id2sd(struct script_state *st, int account_id)
+static struct map_session_data *script_id2sd(struct script_state *st, int account_id)
{
struct map_session_data *sd;
if ((sd = map->id2sd(account_id)) == NULL) {
@@ -2757,7 +2798,7 @@ struct map_session_data *script_id2sd(struct script_state *st, int account_id)
return sd;
}
-struct map_session_data *script_charid2sd(struct script_state *st, int char_id)
+static struct map_session_data *script_charid2sd(struct script_state *st, int char_id)
{
struct map_session_data *sd;
if ((sd = map->charid2sd(char_id)) == NULL) {
@@ -2768,7 +2809,7 @@ struct map_session_data *script_charid2sd(struct script_state *st, int char_id)
return sd;
}
-struct map_session_data *script_nick2sd(struct script_state *st, const char *name)
+static struct map_session_data *script_nick2sd(struct script_state *st, const char *name)
{
struct map_session_data *sd;
if ((sd = map->nick2sd(name)) == NULL) {
@@ -2779,14 +2820,25 @@ struct map_session_data *script_nick2sd(struct script_state *st, const char *nam
return sd;
}
-char *get_val_npcscope_str(struct script_state* st, struct reg_db *n, struct script_data* data) {
+static char *get_val_npcscope_str(struct script_state *st, struct reg_db *n, struct script_data *data)
+{
if (n)
return (char*)i64db_get(n->vars, reference_getuid(data));
else
return NULL;
}
-char *get_val_instance_str(struct script_state* st, const char* name, struct script_data* data) {
+static char *get_val_pc_ref_str(struct script_state *st, struct reg_db *n, struct script_data *data)
+{
+ struct script_reg_str *p = NULL;
+ nullpo_retr(NULL, n);
+
+ p = i64db_get(n->vars, reference_getuid(data));
+ return p ? p->value : NULL;
+}
+
+static char *get_val_instance_str(struct script_state *st, const char *name, struct script_data *data)
+{
nullpo_retr(NULL, st);
if (st->instance_id >= 0) {
return (char*)i64db_get(instance->list[st->instance_id].regs.vars, reference_getuid(data));
@@ -2796,14 +2848,25 @@ char *get_val_instance_str(struct script_state* st, const char* name, struct scr
}
}
-int get_val_npcscope_num(struct script_state* st, struct reg_db *n, struct script_data* data) {
+static int get_val_npcscope_num(struct script_state *st, struct reg_db *n, struct script_data *data)
+{
if (n)
return (int)i64db_iget(n->vars, reference_getuid(data));
else
return 0;
}
-int get_val_instance_num(struct script_state* st, const char* name, struct script_data* data) {
+static int get_val_pc_ref_num(struct script_state *st, struct reg_db *n, struct script_data *data)
+{
+ struct script_reg_num *p = NULL;
+ nullpo_retr(0, n);
+
+ p = i64db_get(n->vars, reference_getuid(data));
+ return p ? p->value : 0;
+}
+
+static int get_val_instance_num(struct script_state *st, const char *name, struct script_data *data)
+{
if (st->instance_id >= 0)
return (int)i64db_iget(instance->list[st->instance_id].regs.vars, reference_getuid(data));
else {
@@ -2819,7 +2882,8 @@ int get_val_instance_num(struct script_state* st, const char* name, struct scrip
* @param data[in,out] variable/constant.
* @return pointer to data, for convenience.
*/
-struct script_data *get_val(struct script_state* st, struct script_data* data) {
+static struct script_data *get_val(struct script_state *st, struct script_data *data)
+{
const char* name;
char prefix;
char postfix;
@@ -2839,8 +2903,7 @@ struct script_data *get_val(struct script_state* st, struct script_data* data) {
return data;
}
- //##TODO use reference_tovariable(data) when it's confirmed that it works [FlavioJS]
- if (!reference_toconstant(data) && not_server_variable(prefix) && reference_getref(data) == NULL) {
+ if (((reference_tovariable(data) && not_server_variable(prefix)) || reference_toparam(data)) && reference_getref(data) == NULL) {
sd = script->rid2sd(st);
if (sd == NULL) {// needs player attached
if (postfix == '$') {// string variable
@@ -2873,7 +2936,7 @@ struct script_data *get_val(struct script_state* st, struct script_data* data) {
break;
case '#':
if (data->ref) {
- str = script->get_val_ref_str(st, data->ref, data);
+ str = script->get_val_pc_ref_str(st, data->ref, data);
} else if (name[1] == '#') {
str = pc_readaccountreg2str(sd, data->u.num);// global
} else {
@@ -2894,7 +2957,7 @@ struct script_data *get_val(struct script_state* st, struct script_data* data) {
break;
default:
if (data->ref) {
- str = script->get_val_ref_str(st, data->ref, data);
+ str = script->get_val_pc_ref_str(st, data->ref, data);
} else {
str = pc_readglobalreg_str(sd, data->u.num);
}
@@ -2932,7 +2995,7 @@ struct script_data *get_val(struct script_state* st, struct script_data* data) {
break;
case '#':
if (data->ref) {
- data->u.num = script->get_val_ref_num(st, data->ref, data);
+ data->u.num = script->get_val_pc_ref_num(st, data->ref, data);
} else if (name[1] == '#') {
data->u.num = pc_readaccountreg2(sd, data->u.num);// global
} else {
@@ -2953,7 +3016,7 @@ struct script_data *get_val(struct script_state* st, struct script_data* data) {
break;
default:
if (data->ref) {
- data->u.num = script->get_val_ref_num(st, data->ref, data);
+ data->u.num = script->get_val_pc_ref_num(st, data->ref, data);
} else {
data->u.num = pc_readglobalreg(sd, data->u.num);
}
@@ -2976,7 +3039,7 @@ struct script_data *get_val(struct script_state* st, struct script_data* data) {
* @param ref[in] the container to look up the reference into.
* @return the retrieved value of the reference.
*/
-const void *get_val2(struct script_state *st, int64 uid, struct reg_db *ref)
+static const void *get_val2(struct script_state *st, int64 uid, struct reg_db *ref)
{
struct script_data* data;
nullpo_retr(NULL, st);
@@ -2985,6 +3048,10 @@ const void *get_val2(struct script_state *st, int64 uid, struct reg_db *ref)
script->get_val(st, data);
if (data->type == C_INT) // u.num is int32 because it comes from script->get_val
return (const void *)h64BPTRSIZE((int32)data->u.num);
+ else if (data_isreference(data) && reference_toconstant(data))
+ return (const void *)h64BPTRSIZE((int32)reference_getconstant(data));
+ else if (data_isreference(data) && reference_toparam(data))
+ return (const void *)h64BPTRSIZE((int32)reference_getparamtype(data));
else
return (const void *)h64BPTRSIZE(data->u.str);
}
@@ -2992,7 +3059,8 @@ const void *get_val2(struct script_state *st, int64 uid, struct reg_db *ref)
* Because, currently, array members with key 0 are indifferenciable from normal variables, we should ensure its actually in
* Will be gone as soon as undefined var feature is implemented
**/
-void script_array_ensure_zero(struct script_state *st, struct map_session_data *sd, int64 uid, struct reg_db *ref) {
+static void script_array_ensure_zero(struct script_state *st, struct map_session_data *sd, int64 uid, struct reg_db *ref)
+{
const char *name = script->get_str(script_getvarid(uid));
struct reg_db *src = NULL;
bool insert = false;
@@ -3039,7 +3107,8 @@ void script_array_ensure_zero(struct script_state *st, struct map_session_data *
/**
* Returns array size by ID
**/
-unsigned int script_array_size(struct script_state *st, struct map_session_data *sd, const char *name, struct reg_db *ref) {
+static unsigned int script_array_size(struct script_state *st, struct map_session_data *sd, const char *name, struct reg_db *ref)
+{
struct script_array *sa = NULL;
struct reg_db *src = script->array_src(st, sd, name, ref);
@@ -3051,7 +3120,8 @@ unsigned int script_array_size(struct script_state *st, struct map_session_data
/**
* Returns array's highest key (for that awful getarraysize implementation that doesn't really gets the array size)
**/
-unsigned int script_array_highest_key(struct script_state *st, struct map_session_data *sd, const char *name, struct reg_db *ref) {
+static unsigned int script_array_highest_key(struct script_state *st, struct map_session_data *sd, const char *name, struct reg_db *ref)
+{
struct script_array *sa = NULL;
struct reg_db *src = script->array_src(st, sd, name, ref);
@@ -3072,7 +3142,7 @@ unsigned int script_array_highest_key(struct script_state *st, struct map_sessio
}
return 0;
}
-int script_free_array_db(union DBKey key, struct DBData *data, va_list ap)
+static int script_free_array_db(union DBKey key, struct DBData *data, va_list ap)
{
struct script_array *sa = DB->data2ptr(data);
aFree(sa->members);
@@ -3082,7 +3152,8 @@ int script_free_array_db(union DBKey key, struct DBData *data, va_list ap)
/**
* Clears script_array and removes it from script->array_db
**/
-void script_array_delete(struct reg_db *src, struct script_array *sa) {
+static void script_array_delete(struct reg_db *src, struct script_array *sa)
+{
nullpo_retv(src);
nullpo_retv(sa);
aFree(sa->members);
@@ -3094,7 +3165,8 @@ void script_array_delete(struct reg_db *src, struct script_array *sa) {
*
* @param idx the index of the member in script_array struct list, not of the actual array member
**/
-void script_array_remove_member(struct reg_db *src, struct script_array *sa, unsigned int idx) {
+static void script_array_remove_member(struct reg_db *src, struct script_array *sa, unsigned int idx)
+{
unsigned int i, cursor;
nullpo_retv(sa);
@@ -3121,7 +3193,8 @@ void script_array_remove_member(struct reg_db *src, struct script_array *sa, uns
*
* @param idx the index of the array member being inserted
**/
-void script_array_add_member(struct script_array *sa, unsigned int idx) {
+static void script_array_add_member(struct script_array *sa, unsigned int idx)
+{
nullpo_retv(sa);
RECREATE(sa->members, unsigned int, ++sa->size);
sa->members[sa->size - 1] = idx;
@@ -3130,7 +3203,8 @@ void script_array_add_member(struct script_array *sa, unsigned int idx) {
* Obtains the source of the array database for this type and scenario
* Initializes such database when not yet initialized.
**/
-struct reg_db *script_array_src(struct script_state *st, struct map_session_data *sd, const char *name, struct reg_db *ref) {
+static struct reg_db *script_array_src(struct script_state *st, struct map_session_data *sd, const char *name, struct reg_db *ref)
+{
struct reg_db *src = NULL;
nullpo_retr(NULL, name);
@@ -3181,7 +3255,8 @@ struct reg_db *script_array_src(struct script_state *st, struct map_session_data
* @param num[in] Variable ID
* @param empty[in] Whether the modified member is empty (needs to be removed)
**/
-void script_array_update(struct reg_db *src, int64 num, bool empty) {
+static void script_array_update(struct reg_db *src, int64 num, bool empty)
+{
struct script_array *sa = NULL;
int id = script_getvarid(num);
unsigned int index = script_getvaridx(num);
@@ -3222,7 +3297,7 @@ void script_array_update(struct reg_db *src, int64 num, bool empty) {
}
}
-void set_reg_npcscope_str(struct script_state* st, struct reg_db *n, int64 num, const char* name, const char *str)
+static void set_reg_npcscope_str(struct script_state *st, struct reg_db *n, int64 num, const char *name, const char *str)
{
if (n)
{
@@ -3239,7 +3314,33 @@ void set_reg_npcscope_str(struct script_state* st, struct reg_db *n, int64 num,
}
}
-void set_reg_npcscope_num(struct script_state* st, struct reg_db *n, int64 num, const char* name, int val)
+static void set_reg_pc_ref_str(struct script_state *st, struct reg_db *n, int64 num, const char *name, const char *str)
+{
+ struct DBIterator *iter = db_iterator(map->pc_db);
+
+ for (struct map_session_data *sd = dbi_first(iter); dbi_exists(iter); sd = dbi_next(iter)) {
+ if (sd != NULL && n == &sd->regs) {
+ pc->setregistry_str(sd, num, str);
+ break;
+ }
+ }
+ dbi_destroy(iter);
+}
+
+static void set_reg_pc_ref_num(struct script_state *st, struct reg_db *n, int64 num, const char *name, int val)
+{
+ struct DBIterator *iter = db_iterator(map->pc_db);
+
+ for (struct map_session_data *sd = dbi_first(iter); dbi_exists(iter); sd = dbi_next(iter)) {
+ if (sd != NULL && n == &sd->regs) {
+ pc->setregistry(sd, num, val);
+ break;
+ }
+ }
+ dbi_destroy(iter);
+}
+
+static void set_reg_npcscope_num(struct script_state *st, struct reg_db *n, int64 num, const char *name, int val)
{
if (n) {
if (val != 0) {
@@ -3254,7 +3355,7 @@ void set_reg_npcscope_num(struct script_state* st, struct reg_db *n, int64 num,
}
}
-void set_reg_instance_str(struct script_state* st, int64 num, const char* name, const char *str)
+static void set_reg_instance_str(struct script_state *st, int64 num, const char *name, const char *str)
{
nullpo_retv(st);
if (st->instance_id >= 0) {
@@ -3273,7 +3374,7 @@ void set_reg_instance_str(struct script_state* st, int64 num, const char* name,
}
}
-void set_reg_instance_num(struct script_state* st, int64 num, const char* name, int val)
+static void set_reg_instance_num(struct script_state *st, int64 num, const char *name, int val)
{
nullpo_retv(st);
if (st->instance_id >= 0) {
@@ -3306,12 +3407,25 @@ void set_reg_instance_num(struct script_state* st, int64 num, const char* name,
*
* TODO: return values are screwed up, have been for some time (reaad: years), e.g. some functions return 1 failure and success.
*------------------------------------------*/
-int set_reg(struct script_state *st, struct map_session_data *sd, int64 num, const char *name, const void *value, struct reg_db *ref)
+static int set_reg(struct script_state *st, struct map_session_data *sd, int64 num, const char *name, const void *value, struct reg_db *ref)
{
char prefix;
nullpo_ret(name);
prefix = name[0];
+ if (script->str_data[script_getvarid(num)].type != C_NAME && script->str_data[script_getvarid(num)].type != C_PARAM) {
+ ShowError("script:set_reg: not a variable! '%s'\n", name);
+
+ // to avoid this don't do script->add_str(") without setting its type.
+ // either use script->add_variable() or manually set the type
+
+ if (st) {
+ script->reportsrc(st);
+ st->state = END;
+ }
+ return 0;
+ }
+
if (strlen(name) > SCRIPT_VARNAME_LENGTH) {
ShowError("script:set_reg: variable name too long. '%s'\n", name);
if (st) {
@@ -3337,7 +3451,7 @@ int set_reg(struct script_state *st, struct map_session_data *sd, int64 num, con
return 1;
case '#':
if (ref) {
- script->set_reg_ref_str(st, ref, num, name, str);
+ script->set_reg_pc_ref_str(st, ref, num, name, str);
} else if (name[1] == '#') {
pc_setaccountreg2str(sd, num, str);
} else {
@@ -3358,7 +3472,7 @@ int set_reg(struct script_state *st, struct map_session_data *sd, int64 num, con
return 1;
default:
if (ref) {
- script->set_reg_ref_str(st, ref, num, name, str);
+ script->set_reg_pc_ref_str(st, ref, num, name, str);
} else {
pc_setglobalreg_str(sd, num, str);
}
@@ -3399,7 +3513,7 @@ int set_reg(struct script_state *st, struct map_session_data *sd, int64 num, con
return 1;
case '#':
if (ref) {
- script->set_reg_ref_num(st, ref, num, name, val);
+ script->set_reg_pc_ref_num(st, ref, num, name, val);
} else if (name[1] == '#') {
pc_setaccountreg2(sd, num, val);
} else {
@@ -3420,7 +3534,7 @@ int set_reg(struct script_state *st, struct map_session_data *sd, int64 num, con
return 1;
default:
if (ref) {
- script->set_reg_ref_num(st, ref, num, name, val);
+ script->set_reg_pc_ref_num(st, ref, num, name, val);
} else {
pc_setglobalreg(sd, num, val);
}
@@ -3429,18 +3543,32 @@ int set_reg(struct script_state *st, struct map_session_data *sd, int64 num, con
}
}
-int set_var(struct map_session_data *sd, char *name, void *val)
+static int set_var(struct map_session_data *sd, char *name, void *val)
{
- return script->set_reg(NULL, sd, reference_uid(script->add_str(name),0), name, val, NULL);
+ int key = script->add_variable(name);
+
+ if (script->str_data[key].type != C_NAME) {
+ ShowError("script:setd_sub: `%s` is already used by something that is not a variable.\n", name);
+ return -1;
+ }
+
+ return script->set_reg(NULL, sd, reference_uid(key, 0), name, val, NULL);
}
-void setd_sub(struct script_state *st, struct map_session_data *sd, const char *varname, int elem, const void *value, struct reg_db *ref)
+static void setd_sub(struct script_state *st, struct map_session_data *sd, const char *varname, int elem, const void *value, struct reg_db *ref)
{
- script->set_reg(st, sd, reference_uid(script->add_str(varname),elem), varname, value, ref);
+ int key = script->add_variable(varname);
+
+ if (script->str_data[key].type != C_NAME) {
+ ShowError("script:setd_sub: `%s` is already used by something that is not a variable.\n", varname);
+ return;
+ }
+
+ script->set_reg(st, sd, reference_uid(key, elem), varname, value, ref);
}
/// Converts the data to a string
-const char *conv_str(struct script_state *st, struct script_data* data)
+static const char *conv_str(struct script_state *st, struct script_data *data)
{
script->get_val(st, data);
if (data_isstring(data)) {
@@ -3474,7 +3602,7 @@ const char *conv_str(struct script_state *st, struct script_data* data)
}
/// Converts the data to an int
-int conv_num(struct script_state *st, struct script_data *data)
+static int conv_num(struct script_state *st, struct script_data *data)
{
long num;
@@ -3532,7 +3660,8 @@ int conv_num(struct script_state *st, struct script_data *data)
//
/// Increases the size of the stack
-void stack_expand(struct script_stack* stack) {
+static void stack_expand(struct script_stack *stack)
+{
nullpo_retv(stack);
stack->sp_max += 64;
stack->stack_data = (struct script_data*)aRealloc(stack->stack_data,
@@ -3542,7 +3671,8 @@ void stack_expand(struct script_stack* stack) {
}
/// Pushes a value into the stack (with reference)
-struct script_data* push_val(struct script_stack* stack, enum c_op type, int64 val, struct reg_db *ref) {
+static struct script_data *push_val(struct script_stack *stack, enum c_op type, int64 val, struct reg_db *ref)
+{
nullpo_retr(NULL, stack);
if( stack->sp >= stack->sp_max )
script->stack_expand(stack);
@@ -3554,7 +3684,7 @@ struct script_data* push_val(struct script_stack* stack, enum c_op type, int64 v
}
/// Pushes a string into the stack
-struct script_data *push_str(struct script_stack *stack, char *str)
+static struct script_data *push_str(struct script_stack *stack, char *str)
{
nullpo_retr(NULL, stack);
if( stack->sp >= stack->sp_max )
@@ -3567,7 +3697,7 @@ struct script_data *push_str(struct script_stack *stack, char *str)
}
/// Pushes a constant string into the stack
-struct script_data *push_conststr(struct script_stack *stack, const char *str)
+static struct script_data *push_conststr(struct script_stack *stack, const char *str)
{
nullpo_retr(NULL, stack);
if( stack->sp >= stack->sp_max )
@@ -3580,7 +3710,8 @@ struct script_data *push_conststr(struct script_stack *stack, const char *str)
}
/// Pushes a retinfo into the stack
-struct script_data* push_retinfo(struct script_stack* stack, struct script_retinfo* ri, struct reg_db *ref) {
+static struct script_data *push_retinfo(struct script_stack *stack, struct script_retinfo *ri, struct reg_db *ref)
+{
nullpo_retr(NULL, stack);
if( stack->sp >= stack->sp_max )
script->stack_expand(stack);
@@ -3592,7 +3723,8 @@ struct script_data* push_retinfo(struct script_stack* stack, struct script_retin
}
/// Pushes a copy of the target position into the stack
-struct script_data* push_copy(struct script_stack* stack, int pos) {
+static struct script_data *push_copy(struct script_stack *stack, int pos)
+{
nullpo_retr(NULL, stack);
switch( stack->stack_data[pos].type ) {
case C_CONSTSTR:
@@ -3617,7 +3749,8 @@ struct script_data* push_copy(struct script_stack* stack, int pos) {
/// Removes the values in indexes [start,end[ from the stack.
/// Adjusts all stack pointers.
-void pop_stack(struct script_state* st, int start, int end) {
+static void pop_stack(struct script_state *st, int start, int end)
+{
struct script_stack* stack;
struct script_data* data;
int i;
@@ -3689,7 +3822,7 @@ void pop_stack(struct script_state* st, int start, int end) {
/*==========================================
* Release script dependent variable, dependent variable of function
*------------------------------------------*/
-void script_free_vars(struct DBMap *var_storage)
+static void script_free_vars(struct DBMap *var_storage)
{
if( var_storage ) {
// destroy the storage construct containing the variables
@@ -3697,7 +3830,7 @@ void script_free_vars(struct DBMap *var_storage)
}
}
-void script_free_code(struct script_code* code)
+static void script_free_code(struct script_code *code)
{
nullpo_retv(code);
@@ -3717,7 +3850,8 @@ void script_free_code(struct script_code* code)
/// @param rid Who is running the script (attached player)
/// @param oid Where the code is being run (npc 'object')
/// @return Script state
-struct script_state* script_alloc_state(struct script_code* rootscript, int pos, int rid, int oid) {
+static struct script_state *script_alloc_state(struct script_code *rootscript, int pos, int rid, int oid)
+{
struct script_state* st;
st = ers_alloc(script->st_ers, struct script_state);
@@ -3759,7 +3893,8 @@ struct script_state* script_alloc_state(struct script_code* rootscript, int pos,
/// Frees a script state.
///
/// @param st Script state
-void script_free_state(struct script_state* st) {
+static void script_free_state(struct script_state *st)
+{
nullpo_retv(st);
if( idb_exists(script->st_db,st->id) ) {
struct map_session_data *sd = st->rid ? map->id2sd(st->rid) : NULL;
@@ -3821,7 +3956,8 @@ void script_free_state(struct script_state* st) {
* @param st[in] Script state.
* @param ref[in] Reference to be added.
*/
-void script_add_pending_ref(struct script_state *st, struct reg_db *ref) {
+static void script_add_pending_ref(struct script_state *st, struct reg_db *ref)
+{
nullpo_retv(st);
RECREATE(st->pending_refs, struct reg_db*, ++st->pending_ref_count);
st->pending_refs[st->pending_ref_count-1] = ref;
@@ -3833,7 +3969,7 @@ void script_add_pending_ref(struct script_state *st, struct reg_db *ref) {
/*==========================================
* Read command
*------------------------------------------*/
-c_op get_com(const struct script_buf *scriptbuf, int *pos)
+static c_op get_com(const struct script_buf *scriptbuf, int *pos)
{
int i = 0, j = 0;
@@ -3850,7 +3986,7 @@ c_op get_com(const struct script_buf *scriptbuf, int *pos)
/*==========================================
* Income figures
*------------------------------------------*/
-int get_num(const struct script_buf *scriptbuf, int *pos)
+static int get_num(const struct script_buf *scriptbuf, int *pos)
{
int i,j;
i=0; j=0;
@@ -3863,7 +3999,7 @@ int get_num(const struct script_buf *scriptbuf, int *pos)
/// Ternary operators
/// test ? if_true : if_false
-void op_3(struct script_state* st, int op)
+static void op_3(struct script_state *st, int op)
{
struct script_data* data;
int flag = 0;
@@ -3900,7 +4036,7 @@ void op_3(struct script_state* st, int op)
/// s1 RE_EQ s2 -> i
/// s1 RE_NE s2 -> i
/// s1 ADD s2 -> s
-void op_2str(struct script_state* st, int op, const char* s1, const char* s2)
+static void op_2str(struct script_state *st, int op, const char *s1, const char *s2)
{
int a = 0;
@@ -3963,10 +4099,10 @@ void op_2str(struct script_state* st, int op, const char* s1, const char* s2)
int i;
for (i = 0; i < offsetcount; i++) {
libpcre->get_substring(s1, offsets, offsetcount, i, &pcre_match);
- mapreg->setregstr(reference_uid(script->add_str("$@regexmatch$"), i), pcre_match);
+ mapreg->setregstr(reference_uid(script->add_variable("$@regexmatch$"), i), pcre_match);
libpcre->free_substring(pcre_match);
}
- mapreg->setreg(script->add_str("$@regexmatchcount"), i);
+ mapreg->setreg(script->add_variable("$@regexmatchcount"), i);
a = offsetcount;
} else { // C_RE_NE
a = (offsetcount == 0);
@@ -3997,7 +4133,7 @@ void op_2str(struct script_state* st, int op, const char* s1, const char* s2)
/// Binary number operators
/// i OP i -> i
-void op_2num(struct script_state* st, int op, int i1, int i2)
+static void op_2num(struct script_state *st, int op, int i1, int i2)
{
int ret;
int64 ret64;
@@ -4036,6 +4172,7 @@ void op_2num(struct script_state* st, int op, int i1, int i2)
case C_ADD: ret = i1 + i2; ret64 = (int64)i1 + i2; break;
case C_SUB: ret = i1 - i2; ret64 = (int64)i1 - i2; break;
case C_MUL: ret = i1 * i2; ret64 = (int64)i1 * i2; break;
+ case C_POW: ret = (int)pow((double)i1, (double)i2); ret64 = (int64)pow((double)i1, (double)i2); break;
default:
ShowError("script:op_2num: unexpected number operator %s i1=%d i2=%d\n", script->op2name(op), i1, i2);
script->reportsrc(st);
@@ -4056,7 +4193,7 @@ void op_2num(struct script_state* st, int op, int i1, int i2)
}
/// Binary operators
-void op_2(struct script_state *st, int op)
+static void op_2(struct script_state *st, int op)
{
struct script_data* left, leftref;
struct script_data* right;
@@ -4130,7 +4267,7 @@ void op_2(struct script_state *st, int op)
/// NEG i -> i
/// NOT i -> i
/// LNOT i -> i
-void op_1(struct script_state* st, int op)
+static void op_1(struct script_state *st, int op)
{
struct script_data* data;
int i1;
@@ -4168,7 +4305,7 @@ void op_1(struct script_state* st, int op)
///
/// @param st Script state whose stack arguments should be inspected.
/// @param func Built-in function for which the arguments are intended.
-bool script_check_buildin_argtype(struct script_state* st, int func)
+static bool script_check_buildin_argtype(struct script_state *st, int func)
{
int idx, invalid = 0;
char* sf;
@@ -4254,7 +4391,7 @@ bool script_check_buildin_argtype(struct script_state* st, int func)
/// Executes a buildin command.
/// Stack: C_NAME(<command>) C_ARG <arg0> <arg1> ... <argN>
-int run_func(struct script_state *st)
+static int run_func(struct script_state *st)
{
struct script_data* data;
int i,start_sp,end_sp,func;
@@ -4347,7 +4484,8 @@ int run_func(struct script_state *st)
/*==========================================
* script execution
*------------------------------------------*/
-void run_script(struct script_code *rootscript, int pos, int rid, int oid) {
+static void run_script(struct script_code *rootscript, int pos, int rid, int oid)
+{
struct script_state *st;
if( rootscript == NULL || pos < 0 )
@@ -4361,7 +4499,7 @@ void run_script(struct script_code *rootscript, int pos, int rid, int oid) {
script->run_main(st);
}
-void script_stop_instances(struct script_code *code)
+static void script_stop_instances(struct script_code *code)
{
struct DBIterator *iter;
struct script_state* st;
@@ -4383,7 +4521,8 @@ void script_stop_instances(struct script_code *code)
/*==========================================
* Timer function for sleep
*------------------------------------------*/
-int run_script_timer(int tid, int64 tick, int id, intptr_t data) {
+static int run_script_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct script_state *st = idb_get(script->st_db,(int)data);
if( st ) {
struct map_session_data *sd = map->id2sd(st->rid);
@@ -4404,7 +4543,8 @@ int run_script_timer(int tid, int64 tick, int id, intptr_t data) {
///
/// @param st Script state to detach.
/// @param dequeue_event Whether to schedule any queued events, when there was no previous script.
-void script_detach_state(struct script_state* st, bool dequeue_event) {
+static void script_detach_state(struct script_state *st, bool dequeue_event)
+{
struct map_session_data* sd;
nullpo_retv(st);
@@ -4438,7 +4578,8 @@ void script_detach_state(struct script_state* st, bool dequeue_event) {
/// Attaches script state to possibly attached character and backups it's previous script, if any.
///
/// @param st Script state to attach.
-void script_attach_state(struct script_state* st) {
+static void script_attach_state(struct script_state *st)
+{
struct map_session_data* sd;
nullpo_retv(st);
@@ -4470,7 +4611,8 @@ void script_attach_state(struct script_state* st) {
/*==========================================
* The main part of the script execution
*------------------------------------------*/
-void run_script_main(struct script_state *st) {
+static void run_script_main(struct script_state *st)
+{
int cmdcount = script->config.check_cmdcount;
int gotocount = script->config.check_gotocount;
struct map_session_data *sd;
@@ -4573,6 +4715,7 @@ void run_script_main(struct script_state *st) {
case C_ADD:
case C_SUB:
case C_MUL:
+ case C_POW:
case C_DIV:
case C_MOD:
case C_EQ:
@@ -4659,7 +4802,7 @@ void run_script_main(struct script_state *st) {
*
* @retval false in case of error.
*/
-bool script_config_read(const char *filename, bool imported)
+static bool script_config_read(const char *filename, bool imported)
{
struct config_t config;
struct config_setting_t * setting = NULL;
@@ -4706,7 +4849,7 @@ bool script_config_read(const char *filename, bool imported)
/**
* @see DBApply
*/
-int db_script_free_code_sub(union DBKey key, struct DBData *data, va_list ap)
+static int db_script_free_code_sub(union DBKey key, struct DBData *data, va_list ap)
{
struct script_code *code = DB->data2ptr(data);
if (code)
@@ -4714,7 +4857,7 @@ int db_script_free_code_sub(union DBKey key, struct DBData *data, va_list ap)
return 0;
}
-void script_run_autobonus(const char *autobonus, int id, int pos)
+static void script_run_autobonus(const char *autobonus, int id, int pos)
{
struct script_code *scriptroot = (struct script_code *)strdb_get(script->autobonus_db, autobonus);
@@ -4724,7 +4867,7 @@ void script_run_autobonus(const char *autobonus, int id, int pos)
}
}
-void script_add_autobonus(const char *autobonus)
+static void script_add_autobonus(const char *autobonus)
{
if( strdb_get(script->autobonus_db, autobonus) == NULL ) {
struct script_code *scriptroot = script->parse(autobonus, "autobonus", 0, 0, NULL);
@@ -4735,13 +4878,19 @@ void script_add_autobonus(const char *autobonus)
}
/// resets a temporary character array variable to given value
-void script_cleararray_pc(struct map_session_data* sd, const char* varname, void* value) {
+static void script_cleararray_pc(struct map_session_data *sd, const char *varname, void *value)
+{
struct script_array *sa = NULL;
struct reg_db *src = NULL;
unsigned int i, *list = NULL, size = 0;
int key;
- key = script->add_str(varname);
+ key = script->add_variable(varname);
+
+ if (script->str_data[key].type != C_NAME) {
+ ShowError("script:cleararray_pc: `%s` is already used by something that is not a variable.\n", varname);
+ return;
+ }
if( !(src = script->array_src(NULL,sd,varname,NULL) ) )
return;
@@ -4762,15 +4911,21 @@ void script_cleararray_pc(struct map_session_data* sd, const char* varname, void
/// sets a temporary character array variable element idx to given value
/// @param refcache Pointer to an int variable, which keeps a copy of the reference to varname and must be initialized to 0. Can be NULL if only one element is set.
-void script_setarray_pc(struct map_session_data* sd, const char* varname, uint32 idx, void* value, int* refcache) {
+static void script_setarray_pc(struct map_session_data *sd, const char *varname, uint32 idx, void *value, int *refcache)
+{
int key;
- if( idx >= SCRIPT_MAX_ARRAYSIZE ) {
+ if (idx > SCRIPT_MAX_ARRAYSIZE) {
ShowError("script_setarray_pc: Variable '%s' has invalid index '%u' (char_id=%d).\n", varname, idx, sd->status.char_id);
return;
}
- key = ( refcache && refcache[0] ) ? refcache[0] : script->add_str(varname);
+ key = ( refcache && refcache[0] ) ? refcache[0] : script->add_variable(varname);
+
+ if (script->str_data[key].type != C_NAME) {
+ ShowError("script:setarray_pc: `%s` is already used by something that is not a variable.\n", varname);
+ return;
+ }
script->set_reg(NULL,sd,reference_uid(key, idx),varname,value,NULL);
@@ -4782,7 +4937,7 @@ void script_setarray_pc(struct map_session_data* sd, const char* varname, uint32
/**
* Clears persistent variables from memory
**/
-int script_reg_destroy(union DBKey key, struct DBData *data, va_list ap)
+static int script_reg_destroy(union DBKey key, struct DBData *data, va_list ap)
{
struct script_reg_state *src;
@@ -4807,7 +4962,8 @@ int script_reg_destroy(union DBKey key, struct DBData *data, va_list ap)
/**
* Clears a single persistent variable
**/
-void script_reg_destroy_single(struct map_session_data *sd, int64 reg, struct script_reg_state *data) {
+static void script_reg_destroy_single(struct map_session_data *sd, int64 reg, struct script_reg_state *data)
+{
nullpo_retv(sd);
nullpo_retv(data);
i64db_remove(sd->regs.vars, reg);
@@ -4823,21 +4979,23 @@ void script_reg_destroy_single(struct map_session_data *sd, int64 reg, struct sc
ers_free(pc->num_reg_ers,(struct script_reg_num*)data);
}
}
-unsigned int *script_array_cpy_list(struct script_array *sa) {
+static unsigned int *script_array_cpy_list(struct script_array *sa)
+{
nullpo_retr(NULL, sa);
if( sa->size > script->generic_ui_array_size )
script->generic_ui_array_expand(sa->size);
memcpy(script->generic_ui_array, sa->members, sizeof(unsigned int)*sa->size);
return script->generic_ui_array;
}
-void script_generic_ui_array_expand (unsigned int plus) {
+static void script_generic_ui_array_expand(unsigned int plus)
+{
script->generic_ui_array_size += plus + 100;
RECREATE(script->generic_ui_array, unsigned int, script->generic_ui_array_size);
}
/*==========================================
* Destructor
*------------------------------------------*/
-void do_final_script(void)
+static void do_final_script(void)
{
int i;
struct DBIterator *iter;
@@ -4917,6 +5075,8 @@ void do_final_script(void)
aFree(script->str_buf);
for( i = 0; i < atcommand->binding_count; i++ ) {
+ aFree(atcommand->binding[i]->at_groups);
+ aFree(atcommand->binding[i]->char_groups);
aFree(atcommand->binding[i]);
}
@@ -4970,7 +5130,8 @@ void do_final_script(void)
/**
*
**/
-uint8 script_add_language(const char *name) {
+static uint8 script_add_language(const char *name)
+{
uint8 lang_id = script->max_lang_id;
nullpo_ret(name);
@@ -4982,7 +5143,8 @@ uint8 script_add_language(const char *name) {
/**
* Goes thru db/translations.conf file
**/
-void script_load_translations(void) {
+static void script_load_translations(void)
+{
struct config_t translations_conf;
const char *config_filename = "db/translations.conf"; // FIXME hardcoded name
struct config_setting_t *translations = NULL;
@@ -5066,7 +5228,7 @@ void script_load_translations(void) {
* @param file The filename.
* @return The corresponding translation name.
*/
-const char *script_get_translation_file_name(const char *file)
+static const char *script_get_translation_file_name(const char *file)
{
const char *basename = NULL, *last_dot = NULL;
@@ -5110,7 +5272,7 @@ const char *script_get_translation_file_name(const char *file)
* @return success state
* @retval true if a new string was added.
*/
-bool script_load_translation_addstring(const char *file, uint8 lang_id, const char *msgctxt, const struct script_string_buf *msgid, const struct script_string_buf *msgstr)
+static bool script_load_translation_addstring(const char *file, uint8 lang_id, const char *msgctxt, const struct script_string_buf *msgid, const struct script_string_buf *msgstr)
{
nullpo_retr(false, file);
nullpo_retr(false, msgctxt);
@@ -5178,7 +5340,7 @@ bool script_load_translation_addstring(const char *file, uint8 lang_id, const ch
* @param lang_id The language identifier.
* @return The amount of strings loaded.
*/
-int script_load_translation(const char *file, uint8 lang_id)
+static int script_load_translation(const char *file, uint8 lang_id)
{
int translations = 0;
char line[1024];
@@ -5318,7 +5480,8 @@ int script_load_translation(const char *file, uint8 lang_id)
/**
*
**/
-void script_clear_translations(bool reload) {
+static void script_clear_translations(bool reload)
+{
uint32 i;
if( script->string_list )
@@ -5352,7 +5515,7 @@ void script_clear_translations(bool reload) {
/**
*
**/
-int script_translation_db_destroyer(union DBKey key, struct DBData *data, va_list ap)
+static int script_translation_db_destroyer(union DBKey key, struct DBData *data, va_list ap)
{
struct DBMap *string_db = DB->data2ptr(data);
@@ -5373,7 +5536,7 @@ int script_translation_db_destroyer(union DBKey key, struct DBData *data, va_lis
/**
*
**/
-void script_parser_clean_leftovers(void)
+static void script_parser_clean_leftovers(void)
{
VECTOR_CLEAR(script->buf);
@@ -5388,7 +5551,8 @@ void script_parser_clean_leftovers(void)
/**
* Performs cleanup after all parsing is processed
**/
-int script_parse_cleanup_timer(int tid, int64 tick, int id, intptr_t data) {
+static int script_parse_cleanup_timer(int tid, int64 tick, int id, intptr_t data)
+{
script->parser_clean_leftovers();
script->parse_cleanup_timer_id = INVALID_TIMER;
@@ -5399,7 +5563,8 @@ int script_parse_cleanup_timer(int tid, int64 tick, int id, intptr_t data) {
/*==========================================
* Initialization
*------------------------------------------*/
-void do_init_script(bool minimal) {
+static void do_init_script(bool minimal)
+{
script->parse_cleanup_timer_id = INVALID_TIMER;
VECTOR_INIT(script->parse_simpleexpr_strbuf);
@@ -5418,7 +5583,7 @@ void do_init_script(bool minimal) {
VECTOR_INIT(script->hqi);
script->parse_builtin();
- script->read_constdb();
+ script->read_constdb(false);
script->load_parameters();
script->hardcoded_constants();
@@ -5429,7 +5594,7 @@ void do_init_script(bool minimal) {
script->load_translations();
}
-int script_reload(void)
+static int script_reload(void)
{
int i;
struct DBIterator *iter;
@@ -5451,6 +5616,8 @@ int script_reload(void)
script->label_count = 0;
for( i = 0; i < atcommand->binding_count; i++ ) {
+ aFree(atcommand->binding[i]->at_groups);
+ aFree(atcommand->binding[i]->char_groups);
aFree(atcommand->binding[i]);
}
@@ -5468,16 +5635,18 @@ int script_reload(void)
script->parse_cleanup_timer_id = INVALID_TIMER;
}
- mapreg->reload();
-
+ script->read_constdb(true);
itemdb->name_constants();
+ clan->set_constants();
+ mapreg->reload();
sysinfo->vcsrevision_reload();
return 0;
}
/* returns name of current function being run, from within the stack [Ind/Hercules] */
-const char *script_getfuncname(struct script_state *st) {
+static const char *script_getfuncname(struct script_state *st)
+{
struct script_data *data;
nullpo_retr(NULL, st);
@@ -5501,7 +5670,7 @@ const char *script_getfuncname(struct script_state *st) {
* already initialized)
* @retval false if an error occurs.
*/
-bool script_sprintf(struct script_state *st, int start, struct StringBuf *out)
+static bool script_sprintf_helper(struct script_state *st, int start, struct StringBuf *out)
{
const char *format = NULL;
const char *p = NULL, *np = NULL;
@@ -5554,7 +5723,7 @@ bool script_sprintf(struct script_state *st, int start, struct StringBuf *out)
}
// placeholder = "%n" ; (ignored)
if (*np == 'n') {
- ShowWarning("script_sprintf: Format %%n not supported! Skipping...\n");
+ ShowWarning("script_sprintf_helper: Format %%n not supported! Skipping...\n");
script->reportsrc(st);
lastarg = nextarg;
p = np + 1;
@@ -5726,13 +5895,17 @@ bool script_sprintf(struct script_state *st, int start, struct StringBuf *out)
/// If a dialog doesn't exist yet, one is created.
///
/// mes "<message>";
-BUILDIN(mes)
+static BUILDIN(mes)
{
struct map_session_data *sd = script->rid2sd(st);
+
if (sd == NULL)
return true;
- clif->scriptmes(sd, st->oid, script_getstr(st, 2));
+ if (script_hasdata(st, 2))
+ clif->scriptmes(sd, st->oid, script_getstr(st, 2));
+ else
+ clif->scriptmes(sd, st->oid, "");
return true;
}
@@ -5747,7 +5920,7 @@ BUILDIN(mes)
* mes "<message>";
* @endcode
*/
-BUILDIN(mesf)
+static BUILDIN(mesf)
{
struct map_session_data *sd = script->rid2sd(st);
struct StringBuf buf;
@@ -5757,7 +5930,7 @@ BUILDIN(mesf)
StrBuf->Init(&buf);
- if (!script_sprintf(st, 2, &buf)) {
+ if (!script->sprintf_helper(st, 2, &buf)) {
StrBuf->Destroy(&buf);
return false;
}
@@ -5772,7 +5945,7 @@ BUILDIN(mesf)
/// The dialog text is cleared and the script continues when the button is pressed.
///
/// next;
-BUILDIN(next)
+static BUILDIN(next)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -5789,7 +5962,7 @@ BUILDIN(next)
/// The dialog is closed when the button is pressed.
///
/// close;
-BUILDIN(close)
+static BUILDIN(close)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -5804,7 +5977,7 @@ BUILDIN(close)
/// The dialog is closed and the script continues when the button is pressed.
///
/// close2;
-BUILDIN(close2)
+static BUILDIN(close2)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -5824,7 +5997,7 @@ BUILDIN(close2)
/// Counts the number of valid and total number of options in 'str'
/// If max_count > 0 the counting stops when that valid option is reached
/// total is incremented for each option (NULL is supported)
-int menu_countoptions(const char* str, int max_count, int* total)
+static int menu_countoptions(const char *str, int max_count, int *total)
{
int count = 0;
int bogus_total;
@@ -5874,7 +6047,7 @@ int menu_countoptions(const char* str, int max_count, int* total)
/// NOTE: the client closes the npc dialog when cancel is pressed
///
/// menu "<option_text>",<target_label>{,"<option_text>",<target_label>,...};
-BUILDIN(menu)
+static BUILDIN(menu)
{
int i;
const char* text;
@@ -5926,11 +6099,11 @@ BUILDIN(menu)
sd->state.menu_or_input = 1;
/* menus beyond this length crash the client (see bugreport:6402) */
- if( StrBuf->Length(&buf) >= 2047 ) {
+ if( StrBuf->Length(&buf) >= MAX_MENU_LENGTH - 1 ) {
struct npc_data * nd = map->id2nd(st->oid);
char* menu;
- CREATE(menu, char, 2048);
- safestrncpy(menu, StrBuf->Value(&buf), 2047);
+ CREATE(menu, char, MAX_MENU_LENGTH);
+ safestrncpy(menu, StrBuf->Value(&buf), MAX_MENU_LENGTH - 1);
ShowWarning("NPC Menu too long! (source:%s / length:%d)\n",nd?nd->name:"Unknown",StrBuf->Length(&buf));
clif->scriptmenu(sd, st->oid, menu);
aFree(menu);
@@ -5939,13 +6112,13 @@ BUILDIN(menu)
StrBuf->Destroy(&buf);
- if( sd->npc_menu >= 0xff )
+ if( sd->npc_menu >= MAX_MENU_OPTIONS )
{// client supports only up to 254 entries; 0 is not used and 255 is reserved for cancel; excess entries are displayed but cause 'uint8' overflow
- ShowWarning("buildin_menu: Too many options specified (current=%d, max=254).\n", sd->npc_menu);
+ ShowWarning("buildin_menu: Too many options specified (current=%d, max=%d).\n", sd->npc_menu, MAX_MENU_OPTIONS - 1);
script->reportsrc(st);
}
}
- else if( sd->npc_menu == 0xff )
+ else if( sd->npc_menu == MAX_MENU_OPTIONS )
{// Cancel was pressed
sd->state.menu_or_input = 0;
st->state = END;
@@ -5983,7 +6156,7 @@ BUILDIN(menu)
st->state = END;
return false;
}
- pc->setreg(sd, script->add_str("@menu"), menu);
+ pc->setreg(sd, script->add_variable("@menu"), menu);
st->pos = script_getnum(st, i + 1);
st->state = GOTO;
}
@@ -5996,7 +6169,7 @@ BUILDIN(menu)
/// select(<option_text>{,<option_text>,...}) -> <selected_option>
///
/// @see menu
-BUILDIN(select)
+static BUILDIN(select)
{
int i;
const char* text;
@@ -6027,11 +6200,11 @@ BUILDIN(select)
sd->state.menu_or_input = 1;
/* menus beyond this length crash the client (see bugreport:6402) */
- if( StrBuf->Length(&buf) >= 2047 ) {
+ if( StrBuf->Length(&buf) >= MAX_MENU_LENGTH - 1 ) {
struct npc_data * nd = map->id2nd(st->oid);
char* menu;
- CREATE(menu, char, 2048);
- safestrncpy(menu, StrBuf->Value(&buf), 2047);
+ CREATE(menu, char, MAX_MENU_LENGTH);
+ safestrncpy(menu, StrBuf->Value(&buf), MAX_MENU_LENGTH - 1);
ShowWarning("NPC Menu too long! (source:%s / length:%d)\n",nd?nd->name:"Unknown",StrBuf->Length(&buf));
clif->scriptmenu(sd, st->oid, menu);
aFree(menu);
@@ -6039,107 +6212,31 @@ BUILDIN(select)
clif->scriptmenu(sd, st->oid, StrBuf->Value(&buf));
StrBuf->Destroy(&buf);
- if( sd->npc_menu >= 0xff ) {
- ShowWarning("buildin_select: Too many options specified (current=%d, max=254).\n", sd->npc_menu);
+ if( sd->npc_menu >= MAX_MENU_OPTIONS ) {
+ ShowWarning("buildin_select: Too many options specified (current=%d, max=%d).\n", sd->npc_menu, MAX_MENU_OPTIONS - 1);
script->reportsrc(st);
}
- } else if( sd->npc_menu == 0xff ) {// Cancel was pressed
+ } else if(sd->npc_menu == MAX_MENU_OPTIONS) { // Cancel was pressed
sd->state.menu_or_input = 0;
- st->state = END;
- } else {// return selected option
- int menu = 0;
-
- sd->state.menu_or_input = 0;
- for( i = 2; i <= script_lastdata(st); ++i ) {
- text = script_getstr(st, i);
- sd->npc_menu -= script->menu_countoptions(text, sd->npc_menu, &menu);
- if( sd->npc_menu <= 0 )
- break;// entry found
- }
- pc->setreg(sd, script->add_str("@menu"), menu);
- script_pushint(st, menu);
- st->state = RUN;
- }
- return true;
-}
-
-/// Displays a menu with options and returns the selected option.
-/// Behaves like 'menu' without the target labels, except when cancel is
-/// pressed.
-/// When cancel is pressed, the script continues and 255 is returned.
-///
-/// prompt(<option_text>{,<option_text>,...}) -> <selected_option>
-///
-/// @see menu
-BUILDIN(prompt)
-{
- int i;
- const char *text;
- struct map_session_data *sd = script->rid2sd(st);
- if (sd == NULL)
- return true;
-#ifdef SECURE_NPCTIMEOUT
- sd->npc_idle_type = NPCT_MENU;
-#endif
-
- if( sd->state.menu_or_input == 0 )
- {
- struct StringBuf buf;
-
- StrBuf->Init(&buf);
- sd->npc_menu = 0;
- for( i = 2; i <= script_lastdata(st); ++i )
- {
- text = script_getstr(st, i);
- if( sd->npc_menu > 0 )
- StrBuf->AppendStr(&buf, ":");
- StrBuf->AppendStr(&buf, text);
- sd->npc_menu += script->menu_countoptions(text, 0, NULL);
- }
-
- st->state = RERUNLINE;
- sd->state.menu_or_input = 1;
-
- /* menus beyond this length crash the client (see bugreport:6402) */
- if( StrBuf->Length(&buf) >= 2047 ) {
- struct npc_data * nd = map->id2nd(st->oid);
- char* menu;
- CREATE(menu, char, 2048);
- safestrncpy(menu, StrBuf->Value(&buf), 2047);
- ShowWarning("NPC Menu too long! (source:%s / length:%d)\n",nd?nd->name:"Unknown",StrBuf->Length(&buf));
- clif->scriptmenu(sd, st->oid, menu);
- aFree(menu);
- } else
- clif->scriptmenu(sd, st->oid, StrBuf->Value(&buf));
- StrBuf->Destroy(&buf);
-
- if( sd->npc_menu >= 0xff )
- {
- ShowWarning("buildin_prompt: Too many options specified (current=%d, max=254).\n", sd->npc_menu);
- script->reportsrc(st);
+ if (strncmp(get_buildin_name(st), "prompt", 6) == 0) {
+ pc->setreg(sd, script->add_variable("@menu"), MAX_MENU_OPTIONS);
+ script_pushint(st, MAX_MENU_OPTIONS); // XXX: we should really be pushing -1 instead
+ st->state = RUN;
+ } else {
+ st->state = END;
}
- }
- else if( sd->npc_menu == 0xff )
- {// Cancel was pressed
- sd->state.menu_or_input = 0;
- pc->setreg(sd, script->add_str("@menu"), 0xff);
- script_pushint(st, 0xff);
- st->state = RUN;
- }
- else
- {// return selected option
+ } else {// return selected option
int menu = 0;
sd->state.menu_or_input = 0;
- for( i = 2; i <= script_lastdata(st); ++i )
- {
+ for( i = 2; i <= script_lastdata(st); ++i ) {
text = script_getstr(st, i);
sd->npc_menu -= script->menu_countoptions(text, sd->npc_menu, &menu);
if( sd->npc_menu <= 0 )
break;// entry found
}
- pc->setreg(sd, script->add_str("@menu"), menu);
+ pc->setreg(sd, script->add_variable("@menu"), menu); // TODO: throw a deprecation warning for scripts using @menu
script_pushint(st, menu);
st->state = RUN;
}
@@ -6153,7 +6250,7 @@ BUILDIN(prompt)
/// Jumps to the target script label.
///
/// goto <label>;
-BUILDIN(goto)
+static BUILDIN(goto)
{
if( !data_islabel(script_getdata(st,2)) )
{
@@ -6171,7 +6268,7 @@ BUILDIN(goto)
/*==========================================
* user-defined function call
*------------------------------------------*/
-BUILDIN(callfunc)
+static BUILDIN(callfunc)
{
int i, j;
struct script_retinfo* ri;
@@ -6231,7 +6328,7 @@ BUILDIN(callfunc)
/*==========================================
* subroutine call
*------------------------------------------*/
-BUILDIN(callsub)
+static BUILDIN(callsub)
{
int i,j;
struct script_retinfo* ri;
@@ -6284,7 +6381,7 @@ BUILDIN(callsub)
/// If the argument doesn't exist
///
/// getarg(<index>{,<default_value>}) -> <value>
-BUILDIN(getarg)
+static BUILDIN(getarg)
{
struct script_retinfo* ri;
int idx;
@@ -6318,7 +6415,8 @@ BUILDIN(getarg)
///
/// return;
/// return <value>;
-BUILDIN(return) {
+static BUILDIN(return)
+{
st->state = RETFUNC;
if( st->stack->defsp < 1 || st->stack->stack_data[st->stack->defsp-1].type != C_RETINFO ) {
@@ -6368,7 +6466,7 @@ BUILDIN(return) {
/// If <min> is greater than <max>, their numbers are switched.
/// rand(<range>) -> <int>
/// rand(<min>,<max>) -> <int>
-BUILDIN(rand)
+static BUILDIN(rand)
{
int range;
int min;
@@ -6397,7 +6495,7 @@ BUILDIN(rand)
/*==========================================
* Warp sd to str,x,y or Random or SavePoint/Save
*------------------------------------------*/
-BUILDIN(warp)
+static BUILDIN(warp)
{
int ret;
int x,y;
@@ -6433,7 +6531,7 @@ BUILDIN(warp)
/*==========================================
* Warp a specified area
*------------------------------------------*/
-int buildin_areawarp_sub(struct block_list *bl, va_list ap)
+static int buildin_areawarp_sub(struct block_list *bl, va_list ap)
{
int x2,y2,x3,y3;
unsigned int index;
@@ -6474,7 +6572,7 @@ int buildin_areawarp_sub(struct block_list *bl, va_list ap)
}
return 0;
}
-BUILDIN(areawarp)
+static BUILDIN(areawarp)
{
int16 m, x0,y0,x1,y1, x2,y2,x3=0,y3=0;
unsigned int index;
@@ -6516,7 +6614,7 @@ BUILDIN(areawarp)
/*==========================================
* areapercentheal <map>,<x1>,<y1>,<x2>,<y2>,<hp>,<sp>
*------------------------------------------*/
-int buildin_areapercentheal_sub(struct block_list *bl, va_list ap)
+static int buildin_areapercentheal_sub(struct block_list *bl, va_list ap)
{
int hp = va_arg(ap, int);
int sp = va_arg(ap, int);
@@ -6530,7 +6628,8 @@ int buildin_areapercentheal_sub(struct block_list *bl, va_list ap)
return 0;
}
-BUILDIN(areapercentheal) {
+static BUILDIN(areapercentheal)
+{
int hp,sp,m;
const char *mapname;
int x0,y0,x1,y1;
@@ -6556,7 +6655,8 @@ BUILDIN(areapercentheal) {
* another player npc-session.
* Using: warpchar "mapname",x,y,Char_ID;
*------------------------------------------*/
-BUILDIN(warpchar) {
+static BUILDIN(warpchar)
+{
int x,y,a;
const char *str;
struct map_session_data *sd;
@@ -6581,11 +6681,12 @@ BUILDIN(warpchar) {
return true;
}
/*==========================================
- * Warpparty - [Fredzilla] [Paradox924X]
- * Syntax: warpparty "to_mapname",x,y,Party_ID,{"from_mapname"};
+ * Warpparty - [Fredzilla] [Paradox924X] [Jedzkie] [Dastgir]
+ * Syntax: warpparty("<to_mapname>", <x>, <y>, <party_id>, "<from_mapname>", <include_leader>)
* If 'from_mapname' is specified, only the party members on that map will be warped
+ * If 'include_leader' option is set to false, the leader will be warped too.
*------------------------------------------*/
-BUILDIN(warpparty)
+static BUILDIN(warpparty)
{
struct map_session_data *sd = NULL;
struct map_session_data *pl_sd;
@@ -6593,78 +6694,84 @@ BUILDIN(warpparty)
int type;
int map_index;
int i;
+ bool include_leader = true;
- const char* str = script_getstr(st,2);
- int x = script_getnum(st,3);
- int y = script_getnum(st,4);
- int p_id = script_getnum(st,5);
+ const char* str = script_getstr(st, 2);
+ int x = script_getnum(st, 3);
+ int y = script_getnum(st, 4);
+ int p_id = script_getnum(st, 5);
const char* str2 = NULL;
- if ( script_hasdata(st,6) )
- str2 = script_getstr(st,6);
+
+ if (script_hasdata(st, 6))
+ str2 = script_getstr(st, 6);
+ if (script_hasdata(st, 7))
+ include_leader = script_getnum(st, 7);
p = party->search(p_id);
- if(!p)
+
+ if (p == NULL)
return true;
- type = ( strcmp(str,"Random")==0 ) ? 0
- : ( strcmp(str,"SavePointAll")==0 ) ? 1
- : ( strcmp(str,"SavePoint")==0 ) ? 2
- : ( strcmp(str,"Leader")==0 ) ? 3
+ type = (strcmp(str, "Random") == 0) ? 0
+ : (strcmp(str, "SavePointAll") == 0) ? 1
+ : (strcmp(str, "SavePoint") == 0) ? 2
+ : (strcmp(str, "Leader") == 0) ? 3
: 4;
- switch (type)
- {
- case 3:
- for(i = 0; i < MAX_PARTY && !p->party.member[i].leader; i++);
- if (i == MAX_PARTY || !p->data[i].sd) //Leader not found / not online
- return true;
- pl_sd = p->data[i].sd;
- map_index = pl_sd->mapindex;
- x = pl_sd->bl.x;
- y = pl_sd->bl.y;
- break;
- case 4:
- map_index = script->mapindexname2id(st,str);
- break;
- case 2:
- //"SavePoint" uses save point of the currently attached player
- if (( sd = script->rid2sd(st) ) == NULL )
- return true;
- /* Fall through */
- default:
- map_index = 0;
- break;
+ switch (type) {
+ case 3:
+ ARR_FIND(0, MAX_PARTY, i, p->party.member[i].leader);
+ if (i == MAX_PARTY || !p->data[i].sd) // Leader not found / not online
+ return true;
+ pl_sd = p->data[i].sd;
+ map_index = pl_sd->mapindex;
+ x = pl_sd->bl.x;
+ y = pl_sd->bl.y;
+ break;
+ case 4:
+ map_index = script->mapindexname2id(st, str);
+ break;
+ case 2:
+ // "SavePoint" uses save point of the currently attached player
+ if ((sd = script->rid2sd(st)) == NULL)
+ return true;
+ /* Fall through */
+ default:
+ map_index = 0;
+ break;
}
for (i = 0; i < MAX_PARTY; i++) {
- if( !(pl_sd = p->data[i].sd) || pl_sd->status.party_id != p_id )
+ if (!(pl_sd = p->data[i].sd) || pl_sd->status.party_id != p_id)
continue;
- if( str2 && strcmp(str2, map->list[pl_sd->bl.m].name) != 0 )
+ if (str2 && strcmp(str2, map->list[pl_sd->bl.m].name) != 0)
continue;
- if( pc_isdead(pl_sd) )
+ if (pc_isdead(pl_sd))
continue;
- switch( type )
- {
- case 0: // Random
- if(!map->list[pl_sd->bl.m].flag.nowarp)
- pc->randomwarp(pl_sd,CLR_TELEPORT);
- break;
- case 1: // SavePointAll
- if(!map->list[pl_sd->bl.m].flag.noreturn)
- pc->setpos(pl_sd,pl_sd->status.save_point.map,pl_sd->status.save_point.x,pl_sd->status.save_point.y,CLR_TELEPORT);
- break;
- case 2: // SavePoint
- if(!map->list[pl_sd->bl.m].flag.noreturn)
- pc->setpos(pl_sd,sd->status.save_point.map,sd->status.save_point.x,sd->status.save_point.y,CLR_TELEPORT);
- break;
- case 3: // Leader
- case 4: // m,x,y
- if(!map->list[pl_sd->bl.m].flag.noreturn && !map->list[pl_sd->bl.m].flag.nowarp)
- pc->setpos(pl_sd,map_index,x,y,CLR_TELEPORT);
- break;
+ if (include_leader == false && p->party.member[i].leader)
+ continue;
+
+ switch( type ) {
+ case 0: // Random
+ if (!map->list[pl_sd->bl.m].flag.nowarp)
+ pc->randomwarp(pl_sd, CLR_TELEPORT);
+ break;
+ case 1: // SavePointAll
+ if (!map->list[pl_sd->bl.m].flag.noreturn)
+ pc->setpos(pl_sd, pl_sd->status.save_point.map, pl_sd->status.save_point.x, pl_sd->status.save_point.y, CLR_TELEPORT);
+ break;
+ case 2: // SavePoint
+ if (!map->list[pl_sd->bl.m].flag.noreturn)
+ pc->setpos(pl_sd, sd->status.save_point.map, sd->status.save_point.x, sd->status.save_point.y, CLR_TELEPORT);
+ break;
+ case 3: // Leader
+ case 4: // m,x,y
+ if (!map->list[pl_sd->bl.m].flag.noreturn && !map->list[pl_sd->bl.m].flag.nowarp)
+ pc->setpos(pl_sd, map_index, x, y, CLR_TELEPORT);
+ break;
}
}
@@ -6674,7 +6781,7 @@ BUILDIN(warpparty)
* Warpguild - [Fredzilla]
* Syntax: warpguild "mapname",x,y,Guild_ID,{"from_mapname"};
*------------------------------------------*/
-BUILDIN(warpguild)
+static BUILDIN(warpguild)
{
struct map_session_data *sd = NULL;
struct guild* g;
@@ -6739,7 +6846,7 @@ BUILDIN(warpguild)
/*==========================================
* Force Heal a player (hp and sp)
*------------------------------------------*/
-BUILDIN(heal)
+static BUILDIN(heal)
{
int hp,sp;
struct map_session_data *sd = script->rid2sd(st);
@@ -6748,13 +6855,13 @@ BUILDIN(heal)
hp=script_getnum(st,2);
sp=script_getnum(st,3);
- status->heal(&sd->bl, hp, sp, 1);
+ status->heal(&sd->bl, hp, sp, STATUS_HEAL_FORCED);
return true;
}
/*==========================================
* Heal a player by item (get vit bonus etc)
*------------------------------------------*/
-BUILDIN(itemheal)
+static BUILDIN(itemheal)
{
struct map_session_data *sd;
int hp,sp;
@@ -6777,7 +6884,7 @@ BUILDIN(itemheal)
/*==========================================
*
*------------------------------------------*/
-BUILDIN(percentheal)
+static BUILDIN(percentheal)
{
int hp,sp;
struct map_session_data *sd;
@@ -6808,7 +6915,7 @@ BUILDIN(percentheal)
/*==========================================
*
*------------------------------------------*/
-BUILDIN(jobchange)
+static BUILDIN(jobchange)
{
int class, upper=-1;
@@ -6830,7 +6937,7 @@ BUILDIN(jobchange)
/*==========================================
*
*------------------------------------------*/
-BUILDIN(jobname)
+static BUILDIN(jobname)
{
int class = script_getnum(st,2);
script_pushconststr(st, pc->job_name(class));
@@ -6844,7 +6951,7 @@ BUILDIN(jobname)
/// shorter than 'min' and 0 otherwise.
///
/// input(<var>{,<min>{,<max>}}) -> <int>
-BUILDIN(input)
+static BUILDIN(input)
{
struct script_data* data;
int64 uid;
@@ -6897,13 +7004,13 @@ BUILDIN(input)
}
// declare the copyarray method here for future reference
-BUILDIN(copyarray);
+static BUILDIN(copyarray);
/// Sets the value of a variable.
/// The value is converted to the type of the variable.
///
/// set(<variable>,<value>) -> <variable>
-BUILDIN(__setr)
+static BUILDIN(__setr)
{
struct map_session_data *sd = NULL;
struct script_data* data;
@@ -6911,6 +7018,7 @@ BUILDIN(__setr)
int64 num;
const char* name;
char prefix;
+ struct reg_db *ref;
data = script_getdata(st,2);
//datavalue = script_getdata(st,3);
@@ -6923,11 +7031,11 @@ BUILDIN(__setr)
num = reference_getuid(data);
name = reference_getname(data);
+ ref = reference_getref(data);
prefix = *name;
if (not_server_variable(prefix)) {
- sd = script->rid2sd(st);
- if (sd == NULL) {
+ if (ref == NULL && (sd = script->rid2sd(st)) == NULL) {
ShowError("script:set: no player attached for player variable '%s'\n", name);
return true;
}
@@ -6975,9 +7083,9 @@ BUILDIN(__setr)
}
if (is_string_variable(name))
- script->set_reg(st, sd, num, name, script_getstr(st, 3), script_getref(st, 2));
+ script->set_reg(st, sd, num, name, script_getstr(st, 3), ref);
else
- script->set_reg(st, sd, num, name, (const void *)h64BPTRSIZE(script_getnum(st, 3)), script_getref(st, 2));
+ script->set_reg(st, sd, num, name, (const void *)h64BPTRSIZE(script_getnum(st, 3)), ref);
return true;
}
@@ -6990,7 +7098,7 @@ BUILDIN(__setr)
/// ex: setarray arr[1],1,2,3;
///
/// setarray <array variable>,<value1>{,<value2>...};
-BUILDIN(setarray)
+static BUILDIN(setarray)
{
struct script_data* data;
const char* name;
@@ -7040,7 +7148,7 @@ BUILDIN(setarray)
/// ex: cleararray arr[0],0,1;
///
/// cleararray <array variable>,<value>,<count>;
-BUILDIN(cleararray)
+static BUILDIN(cleararray)
{
struct script_data* data;
const char* name;
@@ -7088,7 +7196,7 @@ BUILDIN(cleararray)
/// ex: copyarray arr[0],arr[2],2;
///
/// copyarray <destination array variable>,<source array variable>,<count>;
-BUILDIN(copyarray)
+static BUILDIN(copyarray)
{
struct script_data* data1;
struct script_data* data2;
@@ -7175,7 +7283,7 @@ BUILDIN(copyarray)
/// ex: getarraysize(arr[3])
///
/// getarraysize(<array variable>) -> <int>
-BUILDIN(getarraysize)
+static BUILDIN(getarraysize)
{
struct script_data* data;
@@ -7192,17 +7300,33 @@ BUILDIN(getarraysize)
script_pushint(st, script->array_highest_key(st,st->rid ? script->rid2sd(st) : NULL,reference_getname(data),reference_getref(data)));
return true;
}
-int script_array_index_cmp(const void *a, const void *b)
+static int script_array_index_cmp(const void *a, const void *b)
{
return (*(const unsigned int *)a - *(const unsigned int *)b); // FIXME: Is the unsigned difference really intended here?
}
+static BUILDIN(getarrayindex)
+{
+ struct script_data *data = script_getdata(st, 2);
+
+ if (!data_isreference(data) || reference_toconstant(data))
+ {
+ ShowError("script:getarrayindex: not a variable\n");
+ script->reportdata(data);
+ st->state = END;
+ return false;// not a variable
+ }
+
+ script_pushint(st, reference_getindex(data));
+ return true;
+}
+
/// Deletes count or all the elements in an array, from the starting index.
/// ex: deletearray arr[4],2;
///
/// deletearray <array variable>;
/// deletearray <array variable>,<count>;
-BUILDIN(deletearray)
+static BUILDIN(deletearray)
{
struct script_data* data;
const char* name;
@@ -7316,7 +7440,7 @@ BUILDIN(deletearray)
/// Equivalent to var[index].
///
/// getelementofarray(<array variable>,<index>) -> <variable reference>
-BUILDIN(getelementofarray)
+static BUILDIN(getelementofarray)
{
struct script_data* data;
int32 id;
@@ -7335,7 +7459,7 @@ BUILDIN(getelementofarray)
id = reference_getid(data);
i = script_getnum(st, 3);
- if (i < 0 || i >= SCRIPT_MAX_ARRAYSIZE) {
+ if (i < 0 || i > SCRIPT_MAX_ARRAYSIZE) {
ShowWarning("script:getelementofarray: index out of range (%"PRId64")\n", i);
script->reportdata(data);
script_pushnil(st);
@@ -7354,7 +7478,7 @@ BUILDIN(getelementofarray)
/*==========================================
*
*------------------------------------------*/
-BUILDIN(setlook)
+static BUILDIN(setlook)
{
int type,val;
struct map_session_data *sd;
@@ -7371,7 +7495,7 @@ BUILDIN(setlook)
return true;
}
-BUILDIN(changelook)
+static BUILDIN(changelook)
{ // As setlook but only client side
int type,val;
struct map_session_data *sd;
@@ -7391,7 +7515,7 @@ BUILDIN(changelook)
/*==========================================
*
*------------------------------------------*/
-BUILDIN(cutin)
+static BUILDIN(cutin)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -7404,7 +7528,7 @@ BUILDIN(cutin)
/*==========================================
*
*------------------------------------------*/
-BUILDIN(viewpoint)
+static BUILDIN(viewpoint)
{
int type,x,y,id,color;
struct map_session_data *sd;
@@ -7427,8 +7551,8 @@ BUILDIN(viewpoint)
/*==========================================
*
*------------------------------------------*/
-BUILDIN(countitem) {
- int nameid, i;
+static BUILDIN(countitem)
+{
int count = 0;
struct item_data* id = NULL;
@@ -7450,11 +7574,12 @@ BUILDIN(countitem) {
return false;
}
- nameid = id->nameid;
+ int nameid = id->nameid;
- for(i = 0; i < MAX_INVENTORY; i++)
- if(sd->status.inventory[i].nameid == nameid)
+ for (int i = 0; i < sd->status.inventorySize; i++) {
+ if (sd->status.inventory[i].nameid == nameid)
count += sd->status.inventory[i].amount;
+ }
script_pushint(st,count);
return true;
@@ -7464,10 +7589,10 @@ BUILDIN(countitem) {
* countitem2(nameID,Identified,Refine,Attribute,Card0,Card1,Card2,Card3) [Lupus]
* returns number of items that meet the conditions
*------------------------------------------*/
-BUILDIN(countitem2) {
+static BUILDIN(countitem2)
+{
int nameid, iden, ref, attr, c1, c2, c3, c4;
int count = 0;
- int i;
struct item_data* id = NULL;
struct map_session_data *sd = script->rid2sd(st);
@@ -7492,12 +7617,12 @@ BUILDIN(countitem2) {
iden = script_getnum(st,3);
ref = script_getnum(st,4);
attr = script_getnum(st,5);
- c1 = (short)script_getnum(st,6);
- c2 = (short)script_getnum(st,7);
- c3 = (short)script_getnum(st,8);
- c4 = (short)script_getnum(st,9);
+ c1 = script_getnum(st,6);
+ c2 = script_getnum(st,7);
+ c3 = script_getnum(st,8);
+ c4 = script_getnum(st,9);
- for(i = 0; i < MAX_INVENTORY; i++)
+ for (int i = 0; i < sd->status.inventorySize; i++)
if (sd->status.inventory[i].nameid > 0 && sd->inventory_data[i] != NULL &&
sd->status.inventory[i].amount > 0 && sd->status.inventory[i].nameid == nameid &&
sd->status.inventory[i].identify == iden && sd->status.inventory[i].refine == ref &&
@@ -7518,7 +7643,7 @@ BUILDIN(countitem2) {
* 0 : fail
* 1 : success (npc side only)
*------------------------------------------*/
-BUILDIN(checkweight)
+static BUILDIN(checkweight)
{
int slots, amount2=0;
unsigned int weight=0, i, nbargs;
@@ -7600,7 +7725,7 @@ BUILDIN(checkweight)
return true;
}
-BUILDIN(checkweight2)
+static BUILDIN(checkweight2)
{
//variable sub checkweight
int i=0, amount2=0, slots=0, weight=0;
@@ -7704,7 +7829,8 @@ BUILDIN(checkweight2)
* getitembound <item id>,<amount>,<type>{,<account ID>};
* getitembound "<item id>",<amount>,<type>{,<account ID>};
*------------------------------------------*/
-BUILDIN(getitem) {
+static BUILDIN(getitem)
+{
int nameid,amount,get_count,i,flag = 0, offset = 0;
struct item it;
struct map_session_data *sd;
@@ -7778,7 +7904,7 @@ BUILDIN(getitem) {
if ((flag = pc->additem(sd, &it, get_count, LOG_TYPE_SCRIPT))) {
clif->additem(sd, 0, 0, flag);
if( pc->candrop(sd,&it) )
- map->addflooritem(&sd->bl, &it, get_count, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0);
+ map->addflooritem(&sd->bl, &it, get_count, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false);
}
}
}
@@ -7789,7 +7915,7 @@ BUILDIN(getitem) {
/*==========================================
*
*------------------------------------------*/
-BUILDIN(getitem2)
+static BUILDIN(getitem2)
{
int nameid,amount,flag = 0, offset = 0;
int iden,ref,attr,c1,c2,c3,c4, bound = 0;
@@ -7827,10 +7953,10 @@ BUILDIN(getitem2)
iden=script_getnum(st,4);
ref=script_getnum(st,5);
attr=script_getnum(st,6);
- c1=(short)script_getnum(st,7);
- c2=(short)script_getnum(st,8);
- c3=(short)script_getnum(st,9);
- c4=(short)script_getnum(st,10);
+ c1 = script_getnum(st,7);
+ c2 = script_getnum(st,8);
+ c3 = script_getnum(st,9);
+ c4 = script_getnum(st,10);
if (bound && (itemdb_type(nameid) == IT_PETEGG || itemdb_type(nameid) == IT_PETARMOR)) {
ShowError("script_getitembound2: can't bind a pet egg/armor! Type=%d\n",bound);
@@ -7869,10 +7995,10 @@ BUILDIN(getitem2)
item_tmp.refine=ref;
item_tmp.attribute=attr;
item_tmp.bound=(unsigned char)bound;
- item_tmp.card[0]=(short)c1;
- item_tmp.card[1]=(short)c2;
- item_tmp.card[2]=(short)c3;
- item_tmp.card[3]=(short)c4;
+ item_tmp.card[0] = c1;
+ item_tmp.card[1] = c2;
+ item_tmp.card[2] = c3;
+ item_tmp.card[3] = c4;
//Check if it's stackable.
if (!itemdb->isstackable(nameid))
@@ -7886,7 +8012,7 @@ BUILDIN(getitem2)
if ((flag = pc->additem(sd, &item_tmp, get_count, LOG_TYPE_SCRIPT))) {
clif->additem(sd, 0, 0, flag);
if( pc->candrop(sd,&item_tmp) )
- map->addflooritem(&sd->bl, &item_tmp, get_count, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0);
+ map->addflooritem(&sd->bl, &item_tmp, get_count, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false);
}
}
}
@@ -7899,7 +8025,8 @@ BUILDIN(getitem2)
* rentitem <item id>,<seconds>
* rentitem "<item name>",<seconds>
*------------------------------------------*/
-BUILDIN(rentitem) {
+static BUILDIN(rentitem)
+{
struct map_session_data *sd;
struct item it;
int seconds;
@@ -7947,7 +8074,8 @@ BUILDIN(rentitem) {
* Returned Qty is always 1, only works on equip-able
* equipment
*------------------------------------------*/
-BUILDIN(getnameditem) {
+static BUILDIN(getnameditem)
+{
int nameid;
struct item item_tmp;
struct map_session_data *sd, *tsd;
@@ -8006,7 +8134,8 @@ BUILDIN(getnameditem) {
* gets a random item ID from an item group [Skotlex]
* groupranditem group_num
*------------------------------------------*/
-BUILDIN(grouprandomitem) {
+static BUILDIN(grouprandomitem)
+{
struct item_data *data;
int nameid;
@@ -8036,7 +8165,7 @@ BUILDIN(grouprandomitem) {
/*==========================================
*
*------------------------------------------*/
-BUILDIN(makeitem)
+static BUILDIN(makeitem)
{
int nameid,amount;
int x,y,m;
@@ -8079,15 +8208,15 @@ BUILDIN(makeitem)
item_tmp.nameid = nameid;
item_tmp.identify=1;
- map->addflooritem(NULL, &item_tmp, amount, m, x, y, 0, 0, 0, 0);
+ map->addflooritem(NULL, &item_tmp, amount, m, x, y, 0, 0, 0, 0, false);
return true;
}
/*==========================================
-* makeitem2 <item id>,<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,{"<map name>",<X>,<Y>,<range>};
-*------------------------------------------*/
-BUILDIN(makeitem2)
+ * makeitem2 <item id>, <amount>, <identify>, <refine>, <attribute>, <card1>, <card2>, <card3>, <card4>, {"<map name>", <X>, <Y>, <range>};
+ *------------------------------------------*/
+static BUILDIN(makeitem2)
{
struct map_session_data *sd = NULL;
struct item_data *i_data;
@@ -8136,7 +8265,7 @@ BUILDIN(makeitem2)
map->search_freecell(NULL, m, &x, &y, -1, -1, 1);
} else {
range = (script_hasdata(st, 14) ? cap_value(script_getnum(st, 14), 1, battle_config.area_size) : 3);
- map->search_freecell(&sd->bl, sd->bl.m, &x, &y, range, range, 0); // Locate spot next to player.
+ map->search_freecell(&sd->bl, sd->bl.m, &x, &y, range, range, 0); // Locate spot next to player.
}
}
@@ -8158,12 +8287,12 @@ BUILDIN(makeitem2)
item_tmp.identify = script_getnum(st, 4);
item_tmp.refine = cap_value(script_getnum(st, 5), 0, MAX_REFINE);
item_tmp.attribute = script_getnum(st, 6);
- item_tmp.card[0] = (short)script_getnum(st, 7);
- item_tmp.card[1] = (short)script_getnum(st, 8);
- item_tmp.card[2] = (short)script_getnum(st, 9);
- item_tmp.card[3] = (short)script_getnum(st, 10);
+ item_tmp.card[0] = script_getnum(st, 7);
+ item_tmp.card[1] = script_getnum(st, 8);
+ item_tmp.card[2] = script_getnum(st, 9);
+ item_tmp.card[3] = script_getnum(st, 10);
- map->addflooritem(NULL, &item_tmp, amount, m, x, y, 0, 0, 0, 0);
+ map->addflooritem(NULL, &item_tmp, amount, m, x, y, 0, 0, 0, 0, false);
return true;
}
@@ -8171,7 +8300,7 @@ BUILDIN(makeitem2)
/// Counts / deletes the current item given by idx.
/// Used by buildin_delitem_search
/// Relies on all input data being already fully valid.
-void buildin_delitem_delete(struct map_session_data* sd, int idx, int* amount, bool delete_items)
+static void buildin_delitem_delete(struct map_session_data *sd, int idx, int *amount, bool delete_items)
{
int delamount;
struct item* inv;
@@ -8199,7 +8328,7 @@ void buildin_delitem_delete(struct map_session_data* sd, int idx, int* amount, b
/// Relies on all input data being already fully valid.
/// @param exact_match will also match item attributes and cards, not just name id
/// @return true when all items could be deleted, false when there were not enough items to delete
-bool buildin_delitem_search(struct map_session_data* sd, struct item* it, bool exact_match)
+static bool buildin_delitem_search(struct map_session_data *sd, struct item *it, bool exact_match)
{
bool delete_items = false;
int i, amount;
@@ -8308,7 +8437,7 @@ bool buildin_delitem_search(struct map_session_data* sd, struct item* it, bool e
///
/// delitem <item id>,<amount>{,<account id>}
/// delitem "<item name>",<amount>{,<account id>}
-BUILDIN(delitem)
+static BUILDIN(delitem)
{
struct map_session_data *sd;
struct item it;
@@ -8365,7 +8494,7 @@ BUILDIN(delitem)
///
/// delitem2 <item id>,<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>{,<account ID>}
/// delitem2 "<Item name>",<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>{,<account ID>}
-BUILDIN(delitem2)
+static BUILDIN(delitem2)
{
struct map_session_data *sd;
struct item it;
@@ -8406,10 +8535,10 @@ BUILDIN(delitem2)
it.identify=script_getnum(st,4);
it.refine=script_getnum(st,5);
it.attribute=script_getnum(st,6);
- it.card[0]=(short)script_getnum(st,7);
- it.card[1]=(short)script_getnum(st,8);
- it.card[2]=(short)script_getnum(st,9);
- it.card[3]=(short)script_getnum(st,10);
+ it.card[0] = script_getnum(st, 7);
+ it.card[1] = script_getnum(st, 8);
+ it.card[2] = script_getnum(st, 9);
+ it.card[3] = script_getnum(st, 10);
if( it.amount <= 0 )
return true;// nothing to do
@@ -8428,7 +8557,7 @@ BUILDIN(delitem2)
/*==========================================
* Enables/Disables use of items while in an NPC [Skotlex]
*------------------------------------------*/
-BUILDIN(enableitemuse)
+static BUILDIN(enableitemuse)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd != NULL)
@@ -8436,7 +8565,7 @@ BUILDIN(enableitemuse)
return true;
}
-BUILDIN(disableitemuse)
+static BUILDIN(disableitemuse)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd != NULL)
@@ -8448,23 +8577,71 @@ BUILDIN(disableitemuse)
* return the basic stats of sd
* chk pc->readparam for available type
*------------------------------------------*/
-BUILDIN(readparam) {
+static BUILDIN(readparam)
+{
int type;
struct map_session_data *sd;
+ struct script_data *data = script_getdata(st, 2);
- type=script_getnum(st,2);
- if (script_hasdata(st,3))
- sd = script->nick2sd(st, script_getstr(st,3));
- else
- sd=script->rid2sd(st);
+ if (reference_toparam(data)) {
+ type = reference_getparamtype(data);
+ } else {
+ type = script->conv_num(st, data);
+ }
+
+ if (script_hasdata(st, 3)) {
+ if (script_isstringtype(st, 3)) {
+ sd = script->nick2sd(st, script_getstr(st, 3));
+ } else {
+ sd = script->id2sd(st, script_getnum(st, 3));
+ }
+ } else {
+ sd = script->rid2sd(st);
+ }
if (sd == NULL) {
- script_pushint(st,-1);
+ script_pushint(st, -1);
return true;
}
- script_pushint(st,pc->readparam(sd,type));
+ script_pushint(st, pc->readparam(sd, type));
+ return true;
+}
+
+static BUILDIN(setparam)
+{
+ int type;
+ struct map_session_data *sd;
+ struct script_data *data = script_getdata(st, 2);
+ int val = script_getnum(st, 3);
+
+ if (data_isreference(data) && reference_toparam(data)) {
+ type = reference_getparamtype(data);
+ } else {
+ type = script->conv_num(st, data);
+ }
+
+ if (script_hasdata(st, 4)) {
+ if (script_isstringtype(st, 4)) {
+ sd = script->nick2sd(st, script_getstr(st, 4));
+ } else {
+ sd = script->id2sd(st, script_getnum(st, 4));
+ }
+ } else {
+ sd = script->rid2sd(st);
+ }
+ if (sd == NULL) {
+ script_pushint(st, 0);
+ return true;
+ }
+
+ if (pc->setparam(sd, type, val) == 0) {
+ script_pushint(st, 0);
+ return false;
+ }
+
+ script_pushint(st, 1);
return true;
}
@@ -8476,62 +8653,67 @@ BUILDIN(readparam) {
* 2 : guild_id
* 3 : account_id
* 4 : bg_id
+ * 5 : clan_id
*------------------------------------------*/
-BUILDIN(getcharid) {
- int num;
+static BUILDIN(getcharid)
+{
+ int num = script_getnum(st, 2);
struct map_session_data *sd;
- num = script_getnum(st,2);
- if( script_hasdata(st,3) )
- sd=map->nick2sd(script_getstr(st,3));
+ if (script_hasdata(st, 3))
+ sd = map->nick2sd(script_getstr(st, 3));
else
- sd=script->rid2sd(st);
+ sd = script->rid2sd(st);
- if(sd==NULL) {
- script_pushint(st,0); //return 0, according docs
+ if (sd == NULL) {
+ script_pushint(st, 0); //return 0, according docs
return true;
}
- switch( num ) {
- case 0: script_pushint(st,sd->status.char_id); break;
- case 1: script_pushint(st,sd->status.party_id); break;
- case 2: script_pushint(st,sd->status.guild_id); break;
- case 3: script_pushint(st,sd->status.account_id); break;
- case 4: script_pushint(st,sd->bg_id); break;
- default:
- ShowError("buildin_getcharid: invalid parameter (%d).\n", num);
- script_pushint(st,0);
- break;
+ switch (num) {
+ case 0:
+ script_pushint(st, sd->status.char_id);
+ break;
+ case 1:
+ script_pushint(st, sd->status.party_id);
+ break;
+ case 2:
+ script_pushint(st, sd->status.guild_id);
+ break;
+ case 3:
+ script_pushint(st, sd->status.account_id);
+ break;
+ case 4:
+ script_pushint(st, sd->bg_id);
+ break;
+ case 5:
+ script_pushint(st, sd->status.clan_id);
+ break;
+ default:
+ ShowError("buildin_getcharid: invalid parameter (%d).\n", num);
+ script_pushint(st, 0);
+ break;
}
return true;
}
+
/*==========================================
* returns the GID of an NPC
*------------------------------------------*/
-BUILDIN(getnpcid)
+static BUILDIN(getnpcid)
{
- int num = script_getnum(st,2);
- struct npc_data* nd = NULL;
-
- if( script_hasdata(st,3) )
- {// unique npc name
- if( ( nd = npc->name2id(script_getstr(st,3)) ) == NULL )
- {
- ShowError("buildin_getnpcid: No such NPC '%s'.\n", script_getstr(st,3));
- script_pushint(st,0);
- return false;
+ if (script_hasdata(st, 2)) {
+ if (script_isinttype(st, 2)) {
+ // Deprecate old form - getnpcid(<type>{, <"npc name">})
+ ShowWarning("buildin_getnpcid: Use of type is deprecated. Format - getnpcid({<\"npc name\">})\n");
+ script_pushint(st, 0);
+ } else {
+ struct npc_data *nd = npc->name2id(script_getstr(st, 2));
+ script_pushint(st, (nd != NULL) ? nd->bl.id : 0);
}
- }
-
- switch (num) {
- case 0:
- script_pushint(st,nd ? nd->bl.id : st->oid);
- break;
- default:
- ShowError("buildin_getnpcid: invalid parameter (%d).\n", num);
- script_pushint(st,0);
- return false;
+ } else {
+ script_pushint(st, st->oid);
}
return true;
@@ -8541,7 +8723,7 @@ BUILDIN(getnpcid)
* Return the name of the party_id
* null if not found
*------------------------------------------*/
-BUILDIN(getpartyname)
+static BUILDIN(getpartyname)
{
int party_id;
struct party_data* p;
@@ -8567,7 +8749,7 @@ BUILDIN(getpartyname)
* 1 : char_id des membres
* 2 : account_id des membres
*------------------------------------------*/
-BUILDIN(getpartymember)
+static BUILDIN(getpartymember)
{
struct party_data *p;
int j=0,type=0;
@@ -8583,19 +8765,19 @@ BUILDIN(getpartymember)
if(p->party.member[i].account_id) {
switch (type) {
case 2:
- mapreg->setreg(reference_uid(script->add_str("$@partymemberaid"), j),p->party.member[i].account_id);
+ mapreg->setreg(reference_uid(script->add_variable("$@partymemberaid"), j),p->party.member[i].account_id);
break;
case 1:
- mapreg->setreg(reference_uid(script->add_str("$@partymembercid"), j),p->party.member[i].char_id);
+ mapreg->setreg(reference_uid(script->add_variable("$@partymembercid"), j),p->party.member[i].char_id);
break;
default:
- mapreg->setregstr(reference_uid(script->add_str("$@partymembername$"), j),p->party.member[i].name);
+ mapreg->setregstr(reference_uid(script->add_variable("$@partymembername$"), j),p->party.member[i].name);
}
j++;
}
}
}
- mapreg->setreg(script->add_str("$@partymembercount"),j);
+ mapreg->setreg(script->add_variable("$@partymembercount"),j);
return true;
}
@@ -8604,7 +8786,7 @@ BUILDIN(getpartymember)
* Retrieves party leader. if flag is specified,
* return some of the leader data. Otherwise, return name.
*------------------------------------------*/
-BUILDIN(getpartyleader)
+static BUILDIN(getpartyleader)
{
int party_id, type = 0, i=0;
struct party_data *p;
@@ -8641,7 +8823,7 @@ BUILDIN(getpartyleader)
* Return the name of the @guild_id
* null if not found
*------------------------------------------*/
-BUILDIN(getguildname)
+static BUILDIN(getguildname)
{
int guild_id;
struct guild* g;
@@ -8663,7 +8845,7 @@ BUILDIN(getguildname)
* Return the name of the guild master of @guild_id
* null if not found
*------------------------------------------*/
-BUILDIN(getguildmaster)
+static BUILDIN(getguildmaster)
{
int guild_id;
struct guild* g;
@@ -8681,7 +8863,7 @@ BUILDIN(getguildmaster)
return true;
}
-BUILDIN(getguildmasterid)
+static BUILDIN(getguildmasterid)
{
int guild_id;
struct guild* g;
@@ -8708,7 +8890,7 @@ BUILDIN(getguildmasterid)
* 1 : character ID
* 2 : account ID
*------------------------------------------*/
-BUILDIN(getguildmember)
+static BUILDIN(getguildmember)
{
struct guild *g = NULL;
int j = 0;
@@ -8725,20 +8907,20 @@ BUILDIN(getguildmember)
if ( g->member[i].account_id ) {
switch (type) {
case 2:
- mapreg->setreg(reference_uid(script->add_str("$@guildmemberaid"), j),g->member[i].account_id);
+ mapreg->setreg(reference_uid(script->add_variable("$@guildmemberaid"), j),g->member[i].account_id);
break;
case 1:
- mapreg->setreg(reference_uid(script->add_str("$@guildmembercid"), j), g->member[i].char_id);
+ mapreg->setreg(reference_uid(script->add_variable("$@guildmembercid"), j), g->member[i].char_id);
break;
default:
- mapreg->setregstr(reference_uid(script->add_str("$@guildmembername$"), j), g->member[i].name);
+ mapreg->setregstr(reference_uid(script->add_variable("$@guildmembername$"), j), g->member[i].name);
break;
}
j++;
}
}
}
- mapreg->setreg(script->add_str("$@guildmembercount"), j);
+ mapreg->setreg(script->add_variable("$@guildmembercount"), j);
return true;
}
@@ -8749,10 +8931,12 @@ BUILDIN(getguildmember)
* 1 : party_name or ""
* 2 : guild_name or ""
* 3 : map_name
+ * 4 : clan_name or ""
* - : ""
*------------------------------------------*/
-BUILDIN(strcharinfo)
+static BUILDIN(strcharinfo)
{
+ struct clan *c;
struct guild* g;
struct party_data* p;
struct map_session_data *sd;
@@ -8792,6 +8976,13 @@ BUILDIN(strcharinfo)
case 3:
script_pushconststr(st, map->list[sd->bl.m].name);
break;
+ case 4:
+ if ((c = sd->clan) != NULL) {
+ script_pushstrcopy(st, c->name);
+ } else {
+ script_pushconststr(st, "");
+ }
+ break;
default:
ShowWarning("script:strcharinfo: unknown parameter.\n");
script_pushconststr(st, "");
@@ -8809,7 +9000,7 @@ BUILDIN(strcharinfo)
* 3 : ::str
* 4 : map name
*------------------------------------------*/
-BUILDIN(strnpcinfo)
+static BUILDIN(strnpcinfo)
{
char *buf,*name=NULL;
struct npc_data *nd;
@@ -8866,7 +9057,7 @@ BUILDIN(strnpcinfo)
/**
* charid2rid: Returns the RID associated to the given character ID
*/
-BUILDIN(charid2rid)
+static BUILDIN(charid2rid)
{
int cid = script_getnum(st, 2);
struct map_session_data *sd = map->charid2sd(cid);
@@ -8883,7 +9074,7 @@ BUILDIN(charid2rid)
/*==========================================
* GetEquipID(Pos); Pos: 1-SCRIPT_EQUIP_TABLE_SIZE
*------------------------------------------*/
-BUILDIN(getequipid)
+static BUILDIN(getequipid)
{
int i, num;
struct item_data* item;
@@ -8919,7 +9110,7 @@ BUILDIN(getequipid)
* Get the equipement name at pos
* return item jname or ""
*------------------------------------------*/
-BUILDIN(getequipname)
+static BUILDIN(getequipname)
{
int i, num;
struct item_data* item;
@@ -8954,15 +9145,17 @@ BUILDIN(getequipname)
/*==========================================
* getbrokenid [Valaris]
*------------------------------------------*/
-BUILDIN(getbrokenid)
+static BUILDIN(getbrokenid)
{
- int i,num,id=0,brokencounter=0;
+ int num,id=0,brokencounter=0;
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
return true;
num=script_getnum(st,2);
- for(i=0; i<MAX_INVENTORY; i++) {
+ for (int i = 0; i < sd->status.inventorySize; i++) {
+ if (sd->status.inventory[i].card[0] == CARD0_PET)
+ continue;
if ((sd->status.inventory[i].attribute & ATTR_BROKEN) != 0) {
brokencounter++;
if(num==brokencounter) {
@@ -8980,14 +9173,16 @@ BUILDIN(getbrokenid)
/*==========================================
* getbrokencount
*------------------------------------------*/
-BUILDIN(getbrokencount)
+static BUILDIN(getbrokencount)
{
int i, counter = 0;
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
return true;
- for (i = 0; i < MAX_INVENTORY; i++) {
+ for (i = 0; i < sd->status.inventorySize; i++) {
+ if (sd->status.inventory[i].card[0] == CARD0_PET)
+ continue;
if ((sd->status.inventory[i].attribute & ATTR_BROKEN) != 0)
counter++;
}
@@ -9000,22 +9195,23 @@ BUILDIN(getbrokencount)
/*==========================================
* repair [Valaris]
*------------------------------------------*/
-BUILDIN(repair)
+static BUILDIN(repair)
{
- int i,num;
int repaircounter=0;
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
return true;
- num=script_getnum(st,2);
- for(i=0; i<MAX_INVENTORY; i++) {
+ int num = script_getnum(st, 2);
+ for(int i = 0; i < sd->status.inventorySize; i++) {
+ if (sd->status.inventory[i].card[0] == CARD0_PET)
+ continue;
if ((sd->status.inventory[i].attribute & ATTR_BROKEN) != 0) {
repaircounter++;
if(num==repaircounter) {
sd->status.inventory[i].attribute |= ATTR_BROKEN;
sd->status.inventory[i].attribute ^= ATTR_BROKEN;
- clif->equiplist(sd);
+ clif->equipList(sd);
clif->produce_effect(sd, 0, sd->status.inventory[i].nameid);
clif->misceffect(&sd->bl, 3);
break;
@@ -9029,15 +9225,17 @@ BUILDIN(repair)
/*==========================================
* repairall
*------------------------------------------*/
-BUILDIN(repairall)
+static BUILDIN(repairall)
{
- int i, repaircounter = 0;
+ int repaircounter = 0;
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
return true;
- for(i = 0; i < MAX_INVENTORY; i++)
+ for (int i = 0; i < sd->status.inventorySize; i++)
{
+ if (sd->status.inventory[i].card[0] == CARD0_PET)
+ continue;
if (sd->status.inventory[i].nameid && (sd->status.inventory[i].attribute & ATTR_BROKEN) != 0)
{
sd->status.inventory[i].attribute |= ATTR_BROKEN;
@@ -9050,7 +9248,7 @@ BUILDIN(repairall)
if(repaircounter)
{
clif->misceffect(&sd->bl, 3);
- clif->equiplist(sd);
+ clif->equipList(sd);
}
return true;
@@ -9059,7 +9257,7 @@ BUILDIN(repairall)
/*==========================================
* Chk if player have something equiped at pos
*------------------------------------------*/
-BUILDIN(getequipisequiped)
+static BUILDIN(getequipisequiped)
{
int i = -1,num;
struct map_session_data *sd;
@@ -9086,7 +9284,7 @@ BUILDIN(getequipisequiped)
* 1 : true
* 0 : false
*------------------------------------------*/
-BUILDIN(getequipisenableref)
+static BUILDIN(getequipisenableref)
{
int i = -1,num;
struct map_session_data *sd;
@@ -9106,13 +9304,42 @@ BUILDIN(getequipisenableref)
return true;
}
+/**
+ * Checks if the equipped item allows options.
+ * *getequipisenableopt(<equipment_index>);
+ *
+ * @param equipment_index as the inventory index of the equipment.
+ * @return 1 on enabled 0 on disabled.
+ */
+static BUILDIN(getequipisenableopt)
+{
+ int i = -1, index = script_getnum(st, 2);
+ struct map_session_data *sd = script->rid2sd(st);
+
+ if (sd == NULL) {
+ script_pushint(st, -1);
+ ShowError("buildin_getequipisenableopt: player is not attached!");
+ return false;
+ }
+
+ if (index > 0 && index <= ARRAYLENGTH(script->equip))
+ i = pc->checkequip(sd, script->equip[index - 1]);
+
+ if (i >=0 && sd->inventory_data[i] && !sd->inventory_data[i]->flag.no_options && !sd->status.inventory[i].expire_time)
+ script_pushint(st, 1);
+ else
+ script_pushint(st, 0);
+
+ return true;
+}
+
/*==========================================
* Chk if the item equiped at pos is identify (huh ?)
* return (npc)
* 1 : true
* 0 : false
*------------------------------------------*/
-BUILDIN(getequipisidentify)
+static BUILDIN(getequipisidentify)
{
int i = -1,num;
struct map_session_data *sd;
@@ -9138,7 +9365,7 @@ BUILDIN(getequipisidentify)
* x : refine amount
* 0 : false (not refined)
*------------------------------------------*/
-BUILDIN(getequiprefinerycnt)
+static BUILDIN(getequiprefinerycnt)
{
int i = -1,num;
struct map_session_data *sd;
@@ -9165,7 +9392,7 @@ BUILDIN(getequiprefinerycnt)
* x : weapon level
* 0 : false
*------------------------------------------*/
-BUILDIN(getequipweaponlv)
+static BUILDIN(getequipweaponlv)
{
int i = -1,num;
struct map_session_data *sd;
@@ -9191,21 +9418,34 @@ BUILDIN(getequipweaponlv)
* x : refine chance
* 0 : false (max refine level or unequip..)
*------------------------------------------*/
-BUILDIN(getequippercentrefinery) {
- int i = -1,num;
+static BUILDIN(getequippercentrefinery)
+{
+ int i = -1, num;
struct map_session_data *sd;
+ int type = 0;
+
+ num = script_getnum(st, 2);
+ type = (script_hasdata(st, 3)) ? script_getnum(st, 3) : REFINE_CHANCE_TYPE_NORMAL;
- num = script_getnum(st,2);
sd = script->rid2sd(st);
- if( sd == NULL )
+ if (sd == NULL)
return true;
+ if (type < REFINE_CHANCE_TYPE_NORMAL || type >= REFINE_CHANCE_TYPE_MAX) {
+ ShowError("buildin_getequippercentrefinery: Invalid type (%d) provided!\n", type);
+ script_pushint(st, 0);
+ return false;
+ }
+
+
if (num > 0 && num <= ARRAYLENGTH(script->equip))
- i=pc->checkequip(sd,script->equip[num-1]);
- if(i >= 0 && sd->status.inventory[i].nameid && sd->status.inventory[i].refine < MAX_REFINE)
- script_pushint(st,status->get_refine_chance(itemdb_wlv(sd->status.inventory[i].nameid), (int)sd->status.inventory[i].refine));
+ i = pc->checkequip(sd, script->equip[num - 1]);
+
+ if (i >= 0 && sd->status.inventory[i].nameid != 0 && sd->status.inventory[i].refine < MAX_REFINE)
+ script_pushint(st,
+ status->get_refine_chance(itemdb_wlv(sd->status.inventory[i].nameid), (int) sd->status.inventory[i].refine, (enum refine_chance_type) type));
else
- script_pushint(st,0);
+ script_pushint(st, 0);
return true;
}
@@ -9213,7 +9453,7 @@ BUILDIN(getequippercentrefinery) {
/*==========================================
* Refine +1 item at pos and log and display refine
*------------------------------------------*/
-BUILDIN(successrefitem)
+static BUILDIN(successrefitem)
{
int i = -1 , num, up = 1;
struct map_session_data *sd;
@@ -9250,6 +9490,11 @@ BUILDIN(successrefitem)
clif->additem(sd,i,1,0);
pc->equipitem(sd,i,ep);
clif->misceffect(&sd->bl,3);
+
+ achievement->validate_refine(sd, i, true); // Achievements [Smokexyz/Hercules]
+
+ /* The following check is exclusive to characters (possibly only whitesmiths)
+ * that create equipments and refine them to level 10. */
if(sd->status.inventory[i].refine == 10 &&
sd->status.inventory[i].card[0] == CARD0_FORGE &&
sd->status.char_id == (int)MakeDWord(sd->status.inventory[i].card[2],sd->status.inventory[i].card[3])
@@ -9274,7 +9519,7 @@ BUILDIN(successrefitem)
/*==========================================
* Show a failed Refine +1 attempt
*------------------------------------------*/
-BUILDIN(failedrefitem)
+static BUILDIN(failedrefitem)
{
int i=-1,num;
struct map_session_data *sd;
@@ -9287,6 +9532,9 @@ BUILDIN(failedrefitem)
if (num > 0 && num <= ARRAYLENGTH(script->equip))
i=pc->checkequip(sd,script->equip[num-1]);
if(i >= 0) {
+ // Call before changing refine to 0.
+ achievement->validate_refine(sd, i, false);
+
sd->status.inventory[i].refine = 0;
pc->unequipitem(sd, i, PCUNEQUIPITEM_RECALC|PCUNEQUIPITEM_FORCE); //recalculate bonus
clif->refine(sd->fd,1,i,sd->status.inventory[i].refine); //notify client of failure
@@ -9302,7 +9550,7 @@ BUILDIN(failedrefitem)
/*==========================================
* Downgrades an Equipment Part by -1 . [Masao]
*------------------------------------------*/
-BUILDIN(downrefitem)
+static BUILDIN(downrefitem)
{
int i = -1, num, down = 1;
struct map_session_data *sd;
@@ -9334,6 +9582,9 @@ BUILDIN(downrefitem)
clif->additem(sd,i,1,0);
pc->equipitem(sd,i,ep);
+
+ achievement->validate_refine(sd, i, false); // Achievements [Smokexyz/Hercules]
+
clif->misceffect(&sd->bl,2);
}
@@ -9343,7 +9594,7 @@ BUILDIN(downrefitem)
/*==========================================
* Delete the item equipped at pos.
*------------------------------------------*/
-BUILDIN(delequip)
+static BUILDIN(delequip)
{
int i=-1,num;
struct map_session_data *sd;
@@ -9371,7 +9622,8 @@ BUILDIN(delequip)
/*==========================================
*
*------------------------------------------*/
-BUILDIN(statusup) {
+static BUILDIN(statusup)
+{
int type;
struct map_session_data *sd;
@@ -9387,7 +9639,7 @@ BUILDIN(statusup) {
/*==========================================
*
*------------------------------------------*/
-BUILDIN(statusup2)
+static BUILDIN(statusup2)
{
int type,val;
struct map_session_data *sd;
@@ -9403,6 +9655,25 @@ BUILDIN(statusup2)
return true;
}
+
+/*==========================================
+* Returns the number of stat points needed to change the specified stat by val.
+* needed_status_point(<type>,<val>{,<char id>}); [secretdataz]
+*------------------------------------------*/
+static BUILDIN(needed_status_point)
+{
+ int type = script_getnum(st, 2);
+ int val = script_getnum(st, 3);;
+ struct map_session_data *sd = script->rid2sd(st);
+
+ if (sd == NULL)
+ script_pushint(st, 0);
+ else
+ script_pushint(st, pc->need_status_point(sd, type, val));
+
+ return true;
+}
+
/// See 'doc/item_bonus.txt'
///
/// bonus <bonus type>,<val1>;
@@ -9410,7 +9681,8 @@ BUILDIN(statusup2)
/// bonus3 <bonus type>,<val1>,<val2>,<val3>;
/// bonus4 <bonus type>,<val1>,<val2>,<val3>,<val4>;
/// bonus5 <bonus type>,<val1>,<val2>,<val3>,<val4>,<val5>;
-BUILDIN(bonus) {
+static BUILDIN(bonus)
+{
int type;
int val1;
int val2 = 0;
@@ -9492,7 +9764,7 @@ BUILDIN(bonus) {
return true;
}
-BUILDIN(autobonus)
+static BUILDIN(autobonus)
{
unsigned int dur;
short rate;
@@ -9527,7 +9799,7 @@ BUILDIN(autobonus)
return true;
}
-BUILDIN(autobonus2)
+static BUILDIN(autobonus2)
{
unsigned int dur;
short rate;
@@ -9562,7 +9834,7 @@ BUILDIN(autobonus2)
return true;
}
-BUILDIN(autobonus3)
+static BUILDIN(autobonus3)
{
unsigned int dur;
short rate,atk_type;
@@ -9605,7 +9877,8 @@ BUILDIN(autobonus3)
/// skill <skill id>,<level>
/// skill "<skill name>",<level>,<flag>
/// skill "<skill name>",<level>
-BUILDIN(skill) {
+static BUILDIN(skill)
+{
int id;
int level;
int flag = SKILL_GRANT_TEMPORARY;
@@ -9631,7 +9904,8 @@ BUILDIN(skill) {
/// addtoskill "<skill name>",<amount>
///
/// @see skill
-BUILDIN(addtoskill) {
+static BUILDIN(addtoskill)
+{
int id;
int level;
int flag = SKILL_GRANT_TEMPSTACK;
@@ -9652,7 +9926,8 @@ BUILDIN(addtoskill) {
///
/// guildskill <skill id>,<amount>;
/// guildskill "<skill name>",<amount>;
-BUILDIN(guildskill) {
+static BUILDIN(guildskill)
+{
int skill_id, id, max_points;
int level;
@@ -9691,7 +9966,7 @@ BUILDIN(guildskill) {
///
/// getskilllv(<skill id>) -> <level>
/// getskilllv("<skill name>") -> <level>
-BUILDIN(getskilllv)
+static BUILDIN(getskilllv)
{
int id;
struct map_session_data *sd = script->rid2sd(st);
@@ -9708,7 +9983,8 @@ BUILDIN(getskilllv)
///
/// getgdskilllv(<guild id>,<skill id>) -> <level>
/// getgdskilllv(<guild id>,"<skill name>") -> <level>
-BUILDIN(getgdskilllv) {
+static BUILDIN(getgdskilllv)
+{
int guild_id;
uint16 skill_id;
struct guild* g;
@@ -9729,7 +10005,7 @@ BUILDIN(getgdskilllv) {
/// before allowing the basic actions.
///
/// basicskillcheck() -> <bool>
-BUILDIN(basicskillcheck)
+static BUILDIN(basicskillcheck)
{
script_pushint(st, battle_config.basic_skill_check);
return true;
@@ -9738,7 +10014,7 @@ BUILDIN(basicskillcheck)
/// Returns the GM level of the player.
///
/// getgmlevel() -> <level>
-BUILDIN(getgmlevel)
+static BUILDIN(getgmlevel)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -9752,7 +10028,8 @@ BUILDIN(getgmlevel)
/// set the group ID of the player.
/// setgroupid(<new group id>{,"<character name>"|<account id>})
/// return 1 on success, 0 if failed.
-BUILDIN(setgroupid) {
+static BUILDIN(setgroupid)
+{
struct map_session_data* sd = NULL;
int new_group = script_getnum(st, 2);
@@ -9775,21 +10052,31 @@ BUILDIN(setgroupid) {
/// Returns the group ID of the player.
///
-/// getgroupid() -> <int>
-BUILDIN(getgroupid)
+/// getgroupid({<account id>}) -> <int>
+static BUILDIN(getgroupid)
{
- struct map_session_data *sd = script->rid2sd(st);
- if (sd == NULL)
+ struct map_session_data *sd = NULL;
+
+ if (script_hasdata(st, 2)) {
+ sd = map->id2sd(script_getnum(st, 2));
+ } else {
+ sd = script->rid2sd(st);
+ }
+
+ if (sd == NULL) {
+ script_pushint(st, -1);
return true; // no player attached, report source
- script_pushint(st, pc_get_group_id(sd));
+ }
+ script_pushint(st, pc_get_group_id(sd));
return true;
}
/// Terminates the execution of this script instance.
///
/// end
-BUILDIN(end) {
+static BUILDIN(end)
+{
st->state = END;
/* are we stopping inside a function? */
@@ -9809,10 +10096,16 @@ BUILDIN(end) {
/// Checks if the player has that effect state (option).
///
/// checkoption(<option>) -> <bool>
-BUILDIN(checkoption)
+static BUILDIN(checkoption)
{
int option;
- struct map_session_data *sd = script->rid2sd(st);
+ struct map_session_data *sd;
+
+ if (script_hasdata(st, 3))
+ sd = map->id2sd(script_getnum(st, 3));
+ else
+ sd = script->rid2sd(st);
+
if (sd == NULL)
return true;// no player attached, report source
@@ -9828,10 +10121,16 @@ BUILDIN(checkoption)
/// Checks if the player is in that body state (opt1).
///
/// checkoption1(<opt1>) -> <bool>
-BUILDIN(checkoption1)
+static BUILDIN(checkoption1)
{
int opt1;
- struct map_session_data *sd = script->rid2sd(st);
+ struct map_session_data *sd;
+
+ if (script_hasdata(st, 3))
+ sd = map->id2sd(script_getnum(st, 3));
+ else
+ sd = script->rid2sd(st);
+
if (sd == NULL)
return true;// no player attached, report source
@@ -9847,10 +10146,16 @@ BUILDIN(checkoption1)
/// Checks if the player has that health state (opt2).
///
/// checkoption2(<opt2>) -> <bool>
-BUILDIN(checkoption2)
+static BUILDIN(checkoption2)
{
int opt2;
- struct map_session_data *sd = script->rid2sd(st);
+ struct map_session_data *sd;
+
+ if (script_hasdata(st, 3))
+ sd = map->id2sd(script_getnum(st, 3));
+ else
+ sd = script->rid2sd(st);
+
if (sd == NULL)
return true;// no player attached, report source
@@ -9870,11 +10175,17 @@ BUILDIN(checkoption2)
///
/// setoption <option>,<flag>;
/// setoption <option>;
-BUILDIN(setoption)
+static BUILDIN(setoption)
{
int option;
int flag = 1;
- struct map_session_data *sd = script->rid2sd(st);
+ struct map_session_data *sd;
+
+ if (script_hasdata(st, 4))
+ sd = map->id2sd(script_getnum(st, 4));
+ else
+ sd = script->rid2sd(st);
+
if (sd == NULL)
return true;// no player attached, report source
@@ -9903,7 +10214,7 @@ BUILDIN(setoption)
/// checkcart() -> <bool>
///
/// @author Valaris
-BUILDIN(checkcart)
+static BUILDIN(checkcart)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -9928,7 +10239,7 @@ BUILDIN(checkcart)
///
/// setcart <type>;
/// setcart;
-BUILDIN(setcart)
+static BUILDIN(setcart)
{
int type = 1;
struct map_session_data *sd = script->rid2sd(st);
@@ -9947,7 +10258,7 @@ BUILDIN(setcart)
/// checkfalcon() -> <bool>
///
/// @author Valaris
-BUILDIN(checkfalcon)
+static BUILDIN(checkfalcon)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -9966,7 +10277,7 @@ BUILDIN(checkfalcon)
///
/// setfalcon <flag>;
/// setfalcon;
-BUILDIN(setfalcon)
+static BUILDIN(setfalcon)
{
bool flag = true;
struct map_session_data *sd = script->rid2sd(st);
@@ -10003,7 +10314,7 @@ enum setmount_type {
* The exact returned values are the same used as flag in setmount, except for
* dragons, where SETMOUNT_TYPE_DRAGON is returned, regardless of color.
*/
-BUILDIN(checkmount)
+static BUILDIN(checkmount)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -10046,7 +10357,7 @@ BUILDIN(checkmount)
* auto-detected. As a result of this, there is no need to specify a flag at
* all, unless it is a dragon color other than green.
*/
-BUILDIN(setmount)
+static BUILDIN(setmount)
{
int flag = SETMOUNT_TYPE_AUTODETECT;
struct map_session_data *sd = script->rid2sd(st);
@@ -10111,7 +10422,7 @@ BUILDIN(setmount)
///
/// checkwug() -> <bool>
///
-BUILDIN(checkwug)
+static BUILDIN(checkwug)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -10129,7 +10440,8 @@ BUILDIN(checkwug)
///
/// save "<map name>",<x>,<y>
/// savepoint "<map name>",<x>,<y>
-BUILDIN(savepoint) {
+static BUILDIN(savepoint)
+{
int x;
int y;
short mapid;
@@ -10151,7 +10463,9 @@ BUILDIN(savepoint) {
/*==========================================
* GetTimeTick(0: System Tick, 1: Time Second Tick)
*------------------------------------------*/
-BUILDIN(gettimetick) { /* Asgard Version */
+/* Asgard Version */
+static BUILDIN(gettimetick)
+{
int type;
time_t clock;
struct tm *t;
@@ -10184,7 +10498,9 @@ BUILDIN(gettimetick) { /* Asgard Version */
* 4: WeekDay 5: MonthDay 6: Month
* 7: Year
*------------------------------------------*/
-BUILDIN(gettime) { /* Asgard Version */
+/* Asgard Version */
+static BUILDIN(gettime)
+{
int type;
time_t clock;
struct tm *t;
@@ -10229,7 +10545,7 @@ BUILDIN(gettime) { /* Asgard Version */
/*==========================================
* GetTimeStr("TimeFMT", Length);
*------------------------------------------*/
-BUILDIN(gettimestr)
+static BUILDIN(gettimestr)
{
char *tmpstr;
const char *fmtstr;
@@ -10250,17 +10566,25 @@ BUILDIN(gettimestr)
/*==========================================
* Open player storage
*------------------------------------------*/
-BUILDIN(openstorage)
+static BUILDIN(openstorage)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
- return true;
+ return false;
+
+ if (sd->storage.received == false) {
+ script_pushint(st, 0);
+ ShowWarning("buildin_openstorage: Storage data for AID %d has not been loaded.\n", sd->bl.id);
+ return false;
+ }
storage->open(sd);
+
+ script_pushint(st, 1); // success flag.
return true;
}
-BUILDIN(guildopenstorage)
+static BUILDIN(guildopenstorage)
{
int ret;
struct map_session_data *sd = script->rid2sd(st);
@@ -10277,7 +10601,7 @@ BUILDIN(guildopenstorage)
*------------------------------------------*/
/// itemskill <skill id>,<level>{,flag
/// itemskill "<skill name>",<level>{,flag
-BUILDIN(itemskill)
+static BUILDIN(itemskill)
{
int id;
int lv;
@@ -10302,7 +10626,7 @@ BUILDIN(itemskill)
/*==========================================
* Attempt to create an item
*------------------------------------------*/
-BUILDIN(produce)
+static BUILDIN(produce)
{
int trigger;
struct map_session_data *sd = script->rid2sd(st);
@@ -10316,7 +10640,7 @@ BUILDIN(produce)
/*==========================================
*
*------------------------------------------*/
-BUILDIN(cooking)
+static BUILDIN(cooking)
{
int trigger;
struct map_session_data *sd = script->rid2sd(st);
@@ -10330,7 +10654,7 @@ BUILDIN(cooking)
/*==========================================
* Create a pet
*------------------------------------------*/
-BUILDIN(makepet)
+static BUILDIN(makepet)
{
struct map_session_data *sd;
int id,pet_id;
@@ -10348,7 +10672,7 @@ BUILDIN(makepet)
sd->catch_target_class = pet->db[pet_id].class_;
intif->create_pet(sd->status.account_id, sd->status.char_id,
(short)pet->db[pet_id].class_, (short)mob->db(pet->db[pet_id].class_)->lv,
- (short)pet->db[pet_id].EggID, 0, (short)pet->db[pet_id].intimate,
+ pet->db[pet_id].EggID, 0, (short)pet->db[pet_id].intimate,
100, 0, 1, pet->db[pet_id].jname);
}
@@ -10357,7 +10681,7 @@ BUILDIN(makepet)
/*==========================================
* Give player exp base,job * quest_exp_rate/100
*------------------------------------------*/
-BUILDIN(getexp)
+static BUILDIN(getexp)
{
int base=0,job=0;
struct map_session_data *sd = script->rid2sd(st);
@@ -10381,7 +10705,7 @@ BUILDIN(getexp)
/*==========================================
* Gain guild exp [Celest]
*------------------------------------------*/
-BUILDIN(guildgetexp)
+static BUILDIN(guildgetexp)
{
int exp;
struct map_session_data *sd = script->rid2sd(st);
@@ -10400,7 +10724,7 @@ BUILDIN(guildgetexp)
/*==========================================
* Changes the guild master of a guild [Skotlex]
*------------------------------------------*/
-BUILDIN(guildchangegm)
+static BUILDIN(guildchangegm)
{
struct map_session_data *sd;
int guild_id;
@@ -10413,7 +10737,7 @@ BUILDIN(guildchangegm)
if (sd == NULL)
script_pushint(st,0);
else
- script_pushint(st,guild->gm_change(guild_id, sd));
+ script_pushint(st, guild->gm_change(guild_id, sd->status.char_id));
return true;
}
@@ -10426,7 +10750,7 @@ BUILDIN(guildchangegm)
* @amount : nb to spawn
* @event : event to attach to mob
*------------------------------------------*/
-BUILDIN(monster)
+static BUILDIN(monster)
{
const char *mapn = script_getstr(st,2);
int x = script_getnum(st,3);
@@ -10498,7 +10822,7 @@ BUILDIN(monster)
/*==========================================
* Request List of Monster Drops
*------------------------------------------*/
-BUILDIN(getmobdrops)
+static BUILDIN(getmobdrops)
{
int class_ = script_getnum(st,2);
int i, j = 0;
@@ -10519,13 +10843,13 @@ BUILDIN(getmobdrops)
if( itemdb->exists(monster->dropitem[i].nameid) == NULL )
continue;
- mapreg->setreg(reference_uid(script->add_str("$@MobDrop_item"), j), monster->dropitem[i].nameid);
- mapreg->setreg(reference_uid(script->add_str("$@MobDrop_rate"), j), monster->dropitem[i].p);
+ mapreg->setreg(reference_uid(script->add_variable("$@MobDrop_item"), j), monster->dropitem[i].nameid);
+ mapreg->setreg(reference_uid(script->add_variable("$@MobDrop_rate"), j), monster->dropitem[i].p);
j++;
}
- mapreg->setreg(script->add_str("$@MobDrop_count"), j);
+ mapreg->setreg(script->add_variable("$@MobDrop_count"), j);
script_pushint(st, 1);
return true;
@@ -10533,7 +10857,8 @@ BUILDIN(getmobdrops)
/*==========================================
* Same as monster but randomize location in x0,x1,y0,y1 area
*------------------------------------------*/
-BUILDIN(areamonster) {
+static BUILDIN(areamonster)
+{
const char *mapn = script_getstr(st,2);
int x0 = script_getnum(st,3);
int y0 = script_getnum(st,4);
@@ -10596,7 +10921,7 @@ BUILDIN(areamonster) {
/*==========================================
* KillMonster subcheck, verify if mob to kill ain't got an even to handle, could be force kill by allflag
*------------------------------------------*/
-int buildin_killmonster_sub_strip(struct block_list *bl, va_list ap)
+static int buildin_killmonster_sub_strip(struct block_list *bl, va_list ap)
{
//same fix but with killmonster instead - stripping events from mobs.
struct mob_data *md = NULL;
@@ -10619,7 +10944,7 @@ int buildin_killmonster_sub_strip(struct block_list *bl, va_list ap)
md->state.npc_killmonster = 0;
return 0;
}
-int buildin_killmonster_sub(struct block_list *bl, va_list ap)
+static int buildin_killmonster_sub(struct block_list *bl, va_list ap)
{
struct mob_data *md = NULL;
char *event = va_arg(ap,char *);
@@ -10638,7 +10963,8 @@ int buildin_killmonster_sub(struct block_list *bl, va_list ap)
}
return 0;
}
-BUILDIN(killmonster) {
+static BUILDIN(killmonster)
+{
const char *mapname,*event;
int16 m,allflag=0;
mapname=script_getstr(st,2);
@@ -10667,7 +10993,7 @@ BUILDIN(killmonster) {
return true;
}
-int buildin_killmonsterall_sub_strip(struct block_list *bl,va_list ap)
+static int buildin_killmonsterall_sub_strip(struct block_list *bl, va_list ap)
{ //Strips the event from the mob if it's killed the old method.
struct mob_data *md;
@@ -10679,12 +11005,13 @@ int buildin_killmonsterall_sub_strip(struct block_list *bl,va_list ap)
status_kill(bl);
return 0;
}
-int buildin_killmonsterall_sub(struct block_list *bl,va_list ap)
+static int buildin_killmonsterall_sub(struct block_list *bl, va_list ap)
{
status_kill(bl);
return 0;
}
-BUILDIN(killmonsterall) {
+static BUILDIN(killmonsterall)
+{
const char *mapname;
int16 m;
mapname=script_getstr(st,2);
@@ -10710,7 +11037,8 @@ BUILDIN(killmonsterall) {
* Creates a clone of a player.
* clone map, x, y, event, char_id, master_id, mode, flag, duration
*------------------------------------------*/
-BUILDIN(clone) {
+static BUILDIN(clone)
+{
struct map_session_data *sd, *msd = NULL;
int char_id, master_id = 0, x, y, flag = 0, m;
uint32 mode = 0;
@@ -10758,7 +11086,7 @@ BUILDIN(clone) {
}
/*==========================================
*------------------------------------------*/
-BUILDIN(doevent)
+static BUILDIN(doevent)
{
const char* event = script_getstr(st,2);
struct map_session_data* sd;
@@ -10774,7 +11102,7 @@ BUILDIN(doevent)
}
/*==========================================
*------------------------------------------*/
-BUILDIN(donpcevent)
+static BUILDIN(donpcevent)
{
const char* event = script_getstr(st,2);
script->check_event(st, event);
@@ -10789,7 +11117,7 @@ BUILDIN(donpcevent)
/*==========================================
*------------------------------------------*/
-BUILDIN(addtimer)
+static BUILDIN(addtimer)
{
int tick = script_getnum(st, 2);
const char* event = script_getstr(st, 3);
@@ -10818,7 +11146,7 @@ BUILDIN(addtimer)
}
/*==========================================
*------------------------------------------*/
-BUILDIN(deltimer)
+static BUILDIN(deltimer)
{
const char *event;
struct map_session_data *sd;
@@ -10839,7 +11167,7 @@ BUILDIN(deltimer)
}
/*==========================================
*------------------------------------------*/
-BUILDIN(addtimercount)
+static BUILDIN(addtimercount)
{
const char *event;
int tick;
@@ -10861,9 +11189,232 @@ BUILDIN(addtimercount)
return true;
}
+enum gettimer_mode {
+ GETTIMER_COUNT = 0,
+ GETTIMER_TICK_NEXT = 1,
+ GETTIMER_TICK_LAST = 2,
+};
+
+static BUILDIN(gettimer)
+{
+ struct map_session_data *sd;
+ const struct TimerData *td;
+ int i;
+ int tick;
+ const char *event = NULL;
+ int val = 0;
+ bool first = true;
+ short mode = script_getnum(st, 2);
+
+ if (script_hasdata(st, 3))
+ sd = map->id2sd(script_getnum(st, 3));
+ else
+ sd = script->rid2sd(st);
+
+ if (script_hasdata(st, 4)) {
+ event = script_getstr(st, 4);
+ script->check_event(st, event);
+ }
+
+ if (sd == NULL) {
+ script_pushint(st, -1);
+ return true;
+ }
+
+ switch (mode) {
+ case GETTIMER_COUNT:
+ // get number of timers
+ for (i = 0; i < MAX_EVENTTIMER; i++) {
+ if (sd->eventtimer[i] != INVALID_TIMER) {
+ if (event != NULL) {
+ td = timer->get(sd->eventtimer[i]);
+ Assert_retr(false, td != NULL);
+
+ if (strcmp((char *)(td->data), event) == 0) {
+ val++;
+ }
+ } else {
+ val++;
+ }
+ }
+ }
+ break;
+ case GETTIMER_TICK_NEXT:
+ // get the number of tick before the next timer runs
+ for (i = 0; i < MAX_EVENTTIMER; i++) {
+ if (sd->eventtimer[i] != INVALID_TIMER) {
+ td = timer->get(sd->eventtimer[i]);
+ Assert_retr(false, td != NULL);
+ tick = max(0, DIFF_TICK32(td->tick, timer->gettick()));
+
+ if (event != NULL) {
+ if ((first == true || tick < val) && strcmp((char *)(td->data), event) == 0) {
+ val = tick;
+ first = false;
+ }
+ } else if (first == true || tick < val) {
+ val = tick;
+ first = false;
+ }
+ }
+ }
+ break;
+ case GETTIMER_TICK_LAST:
+ // get the number of ticks before the last timer runs
+ for (i = MAX_EVENTTIMER - 1; i >= 0; i--) {
+ if (sd->eventtimer[i] != INVALID_TIMER) {
+ td = timer->get(sd->eventtimer[i]);
+ Assert_retr(false, td != NULL);
+ tick = max(0, DIFF_TICK32(td->tick, timer->gettick()));
+
+ if (event != NULL) {
+ if (strcmp((char *)(td->data), event) == 0) {
+ val = max(val, tick);
+ }
+ } else {
+ val = max(val, tick);
+ }
+ }
+ }
+ break;
+ }
+
+ script_pushint(st, val);
+ return true;
+}
+
+static int buildin_getunits_sub(struct block_list *bl, va_list ap)
+{
+ struct script_state *st = va_arg(ap, struct script_state *);
+ struct map_session_data *sd = va_arg(ap, struct map_session_data *);
+ int32 id = va_arg(ap, int32);
+ uint32 start = va_arg(ap, uint32);
+ uint32 *count = va_arg(ap, uint32 *);
+ uint32 limit = va_arg(ap, uint32);
+ const char *name = va_arg(ap, const char *);
+ struct reg_db *ref = va_arg(ap, struct reg_db *);
+ enum bl_type type = va_arg(ap, enum bl_type);
+ uint32 index = start + *count;
+
+ if ((bl->type & type) == 0) {
+ return 0; // type mismatch => skip
+ }
+
+ if (index >= SCRIPT_MAX_ARRAYSIZE || *count >= limit) {
+ return -1;
+ }
+
+ script->set_reg(st, sd, reference_uid(id, index), name,
+ (const void *)h64BPTRSIZE(bl->id), ref);
+
+ (*count)++;
+ return 1;
+}
+
+static int buildin_getunits_sub_pc(struct map_session_data *sd, va_list ap)
+{
+ return buildin_getunits_sub(&sd->bl, ap);
+}
+
+static int buildin_getunits_sub_mob(struct mob_data *md, va_list ap)
+{
+ return buildin_getunits_sub(&md->bl, ap);
+}
+
+static int buildin_getunits_sub_npc(struct npc_data *nd, va_list ap)
+{
+ return buildin_getunits_sub(&nd->bl, ap);
+}
+
+static BUILDIN(getunits)
+{
+ const char *name;
+ int32 id;
+ uint32 start;
+ struct reg_db *ref;
+ enum bl_type type = script_getnum(st, 2);
+ struct script_data *data = script_getdata(st, 3);
+ uint32 count = 0;
+ uint32 limit = script_getnum(st, 4);
+ struct map_session_data *sd = NULL;
+
+ if (!data_isreference(data) || reference_toconstant(data)) {
+ ShowError("script:getunits: second argument must be a variable\n");
+ script->reportdata(data);
+ st->state = END;
+ return false;
+ }
+
+ id = reference_getid(data);
+ start = reference_getindex(data);
+ name = reference_getname(data);
+ ref = reference_getref(data);
+
+ if (not_server_variable(*name)) {
+ sd = script->rid2sd(st);
+
+ if (sd == NULL) {
+ script_pushint(st, 0);
+ return true; // player variable but no player attached
+ }
+ }
+
+ if (is_string_variable(name)) {
+ ShowError("script:getunits: second argument must be an integer variable\n");
+ script->reportdata(data);
+ st->state = END;
+ return false;
+ }
+
+ if (limit < 1 || limit > SCRIPT_MAX_ARRAYSIZE) {
+ limit = SCRIPT_MAX_ARRAYSIZE;
+ }
+
+ if (script_hasdata(st, 5)) {
+ const char *mapname = script_getstr(st, 5);
+ int16 m = map->mapname2mapid(mapname);
+
+ if (script_hasdata(st, 9)) {
+ int16 x1 = script_getnum(st, 6);
+ int16 y1 = script_getnum(st, 7);
+ int16 x2 = script_getnum(st, 8);
+ int16 y2 = script_getnum(st, 9);
+
+ map->forcountinarea(buildin_getunits_sub, m, x1, y1, x2, y2, limit, type,
+ st, sd, id, start, &count, limit, name, ref, type);
+ } else {
+ map->forcountinmap(buildin_getunits_sub, m, limit, type,
+ st, sd, id, start, &count, limit, name, ref, type);
+ }
+ } else {
+ // for faster lookup we try to reduce the scope of the search if possible
+ switch (type) {
+ case BL_PC:
+ map->foreachpc(buildin_getunits_sub_pc,
+ st, sd, id, start, &count, limit, name, ref, type);
+ break;
+ case BL_MOB:
+ map->foreachmob(buildin_getunits_sub_mob,
+ st, sd, id, start, &count, limit, name, ref, type);
+ break;
+ case BL_NPC:
+ map->foreachnpc(buildin_getunits_sub_npc,
+ st, sd, id, start, &count, limit, name, ref, type);
+ break;
+ default:
+ // fallback to global lookup (slowest option)
+ map->foreachiddb(buildin_getunits_sub,
+ st, sd, id, start, &count, limit, name, ref, type);
+ }
+ }
+
+ script_pushint(st, count);
+ return true;
+}
+
/*==========================================
*------------------------------------------*/
-BUILDIN(initnpctimer)
+static BUILDIN(initnpctimer)
{
struct npc_data *nd;
int flag = 0;
@@ -10908,7 +11459,7 @@ BUILDIN(initnpctimer)
}
/*==========================================
*------------------------------------------*/
-BUILDIN(startnpctimer)
+static BUILDIN(startnpctimer)
{
struct npc_data *nd;
int flag = 0;
@@ -10951,7 +11502,8 @@ BUILDIN(startnpctimer)
}
/*==========================================
*------------------------------------------*/
-BUILDIN(stopnpctimer) {
+static BUILDIN(stopnpctimer)
+{
struct npc_data *nd;
int flag = 0;
@@ -10989,7 +11541,7 @@ BUILDIN(stopnpctimer) {
}
/*==========================================
*------------------------------------------*/
-BUILDIN(getnpctimer)
+static BUILDIN(getnpctimer)
{
struct npc_data *nd;
struct map_session_data *sd;
@@ -11027,7 +11579,7 @@ BUILDIN(getnpctimer)
}
/*==========================================
*------------------------------------------*/
-BUILDIN(setnpctimer)
+static BUILDIN(setnpctimer)
{
int tick;
struct npc_data *nd;
@@ -11052,7 +11604,7 @@ BUILDIN(setnpctimer)
/*==========================================
* attaches the player rid to the timer [Celest]
*------------------------------------------*/
-BUILDIN(attachnpctimer)
+static BUILDIN(attachnpctimer)
{
struct map_session_data *sd;
struct npc_data *nd = map->id2nd(st->oid);
@@ -11081,7 +11633,8 @@ BUILDIN(attachnpctimer)
/*==========================================
* detaches a player rid from the timer [Celest]
*------------------------------------------*/
-BUILDIN(detachnpctimer) {
+static BUILDIN(detachnpctimer)
+{
struct npc_data *nd;
if( script_hasdata(st,2) )
@@ -11105,7 +11658,8 @@ BUILDIN(detachnpctimer) {
* it checks if there is a player attached to the current script. [Skotlex]
* If no, returns 0, if yes, returns the account_id of the attached player.
*------------------------------------------*/
-BUILDIN(playerattached) {
+static BUILDIN(playerattached)
+{
if(st->rid == 0 || map->id2sd(st->rid) == NULL)
script_pushint(st,0);
else
@@ -11115,7 +11669,7 @@ BUILDIN(playerattached) {
/*==========================================
*------------------------------------------*/
-BUILDIN(announce)
+static BUILDIN(announce)
{
const char *mes = script_getstr(st,2);
int flag = script_getnum(st,3);
@@ -11163,7 +11717,7 @@ BUILDIN(announce)
}
/*==========================================
*------------------------------------------*/
-int buildin_announce_sub(struct block_list *bl, va_list ap)
+static int buildin_announce_sub(struct block_list *bl, va_list ap)
{
const char *mes = va_arg(ap, const char *);
int len = va_arg(ap, int);
@@ -11182,7 +11736,7 @@ int buildin_announce_sub(struct block_list *bl, va_list ap)
/* Runs item effect on attached character.
* itemeffect <item id>;
* itemeffect "<item name>"; */
-BUILDIN(itemeffect)
+static BUILDIN(itemeffect)
{
struct npc_data *nd;
struct item_data *item_data;
@@ -11215,7 +11769,7 @@ BUILDIN(itemeffect)
return true;
}
-BUILDIN(mapannounce)
+static BUILDIN(mapannounce)
{
const char *mapname = script_getstr(st,2);
const char *mes = script_getstr(st,3);
@@ -11238,7 +11792,7 @@ BUILDIN(mapannounce)
}
/*==========================================
*------------------------------------------*/
-BUILDIN(areaannounce)
+static BUILDIN(areaannounce)
{
const char *mapname = script_getstr(st,2);
int x0 = script_getnum(st,3);
@@ -11266,7 +11820,8 @@ BUILDIN(areaannounce)
/*==========================================
*------------------------------------------*/
-BUILDIN(getusers) {
+static BUILDIN(getusers)
+{
int flag, val = 0;
struct map_session_data* sd;
struct block_list* bl = NULL;
@@ -11302,7 +11857,7 @@ BUILDIN(getusers) {
/*==========================================
* Works like @WHO - displays all online users names in window
*------------------------------------------*/
-BUILDIN(getusersname)
+static BUILDIN(getusersname)
{
struct map_session_data *sd;
const struct map_session_data *pl_sd;
@@ -11331,7 +11886,7 @@ BUILDIN(getusersname)
/*==========================================
* getmapguildusers("mapname",guild ID) Returns the number guild members present on a map [Reddozen]
*------------------------------------------*/
-BUILDIN(getmapguildusers)
+static BUILDIN(getmapguildusers)
{
const char *str;
int16 m;
@@ -11359,7 +11914,8 @@ BUILDIN(getmapguildusers)
}
/*==========================================
*------------------------------------------*/
-BUILDIN(getmapusers) {
+static BUILDIN(getmapusers)
+{
const char *str;
int16 m;
str=script_getstr(st,2);
@@ -11372,7 +11928,7 @@ BUILDIN(getmapusers) {
}
/*==========================================
*------------------------------------------*/
-int buildin_getareausers_sub(struct block_list *bl,va_list ap)
+static int buildin_getareausers_sub(struct block_list *bl, va_list ap)
{
int *users=va_arg(ap,int *);
nullpo_ret(users);
@@ -11380,7 +11936,7 @@ int buildin_getareausers_sub(struct block_list *bl,va_list ap)
return 0;
}
-BUILDIN(getareausers)
+static BUILDIN(getareausers)
{
int16 m = -1, x0, y0, x1, y1;
int users = 0;
@@ -11440,7 +11996,7 @@ BUILDIN(getareausers)
/*==========================================
*------------------------------------------*/
-int buildin_getareadropitem_sub(struct block_list *bl, va_list ap)
+static int buildin_getareadropitem_sub(struct block_list *bl, va_list ap)
{
int item = va_arg(ap, int);
int *amount = va_arg(ap, int *);
@@ -11456,7 +12012,8 @@ int buildin_getareadropitem_sub(struct block_list *bl, va_list ap)
return 0;
}
-BUILDIN(getareadropitem) {
+static BUILDIN(getareadropitem)
+{
const char *str;
int16 m,x0,y0,x1,y1;
int item,amount=0;
@@ -11488,7 +12045,7 @@ BUILDIN(getareadropitem) {
}
/*==========================================
*------------------------------------------*/
-BUILDIN(enablenpc)
+static BUILDIN(enablenpc)
{
const char *str;
str=script_getstr(st,2);
@@ -11497,7 +12054,7 @@ BUILDIN(enablenpc)
}
/*==========================================
*------------------------------------------*/
-BUILDIN(disablenpc)
+static BUILDIN(disablenpc)
{
const char *str;
str=script_getstr(st,2);
@@ -11507,7 +12064,7 @@ BUILDIN(disablenpc)
/*==========================================
*------------------------------------------*/
-BUILDIN(hideoffnpc)
+static BUILDIN(hideoffnpc)
{
const char *str;
str=script_getstr(st,2);
@@ -11516,7 +12073,7 @@ BUILDIN(hideoffnpc)
}
/*==========================================
*------------------------------------------*/
-BUILDIN(hideonnpc)
+static BUILDIN(hideonnpc)
{
const char *str;
str=script_getstr(st,2);
@@ -11531,7 +12088,7 @@ BUILDIN(hideonnpc)
* sc_start4 <effect_id>,<duration>,<val1>,<val2>,<val3>,<val4>{,<rate,<flag>,{<unit_id>}};
* <flag>: @see enum scstart_flag
*/
-BUILDIN(sc_start)
+static BUILDIN(sc_start)
{
struct npc_data *nd = map->id2nd(st->oid);
struct block_list* bl;
@@ -11599,7 +12156,8 @@ BUILDIN(sc_start)
/// Ends one or all status effects on the target unit or on the attached player.
///
/// sc_end <effect_id>{,<unit_id>};
-BUILDIN(sc_end) {
+static BUILDIN(sc_end)
+{
struct block_list* bl;
int type;
@@ -11634,7 +12192,9 @@ BUILDIN(sc_end) {
}
//This should help status_change_end force disabling the SC in case it has no limit.
- sce->val1 = sce->val2 = sce->val3 = sce->val4 = 0;
+ if (type != SC_BERSERK)
+ sce->val1 = 0; // SC_BERSERK requires skill_lv that's stored in sce->val1 when being removed [KirieZ]
+ sce->val2 = sce->val3 = sce->val4 = 0;
status_change_end(bl, (sc_type)type, INVALID_TIMER);
}
else
@@ -11646,7 +12206,8 @@ BUILDIN(sc_end) {
/*==========================================
* @FIXME atm will return reduced tick, 0 immune, 1 no tick
*------------------------------------------*/
-BUILDIN(getscrate) {
+static BUILDIN(getscrate)
+{
struct block_list *bl;
int type,rate;
@@ -11667,7 +12228,7 @@ BUILDIN(getscrate) {
/*==========================================
* getstatus <type>{, <info>};
*------------------------------------------*/
-BUILDIN(getstatus)
+static BUILDIN(getstatus)
{
int id, type;
struct map_session_data* sd = script->rid2sd(st);
@@ -11698,14 +12259,16 @@ BUILDIN(getstatus)
case 3: script_pushint(st, sd->sc.data[id]->val3); break;
case 4: script_pushint(st, sd->sc.data[id]->val4); break;
case 5:
- {
- const struct TimerData *td = timer->get(sd->sc.data[id]->timer);
+ if (sd->sc.data[id]->infinite_duration) {
+ script_pushint(st, INFINITE_DURATION);
+ } else {
+ const struct TimerData *td = timer->get(sd->sc.data[id]->timer);
- if (td != NULL) {
- // return the amount of time remaining
- script_pushint(st, (int)(td->tick - timer->gettick())); // TODO: change this to int64 when we'll support 64 bit script values
+ if (td != NULL) {
+ // return the amount of time remaining
+ script_pushint(st, (int)(td->tick - timer->gettick())); // TODO: change this to int64 when we'll support 64 bit script values
+ }
}
- }
break;
default: script_pushint(st, 1); break;
}
@@ -11716,17 +12279,26 @@ BUILDIN(getstatus)
/*==========================================
*
*------------------------------------------*/
-BUILDIN(debugmes)
+static BUILDIN(debugmes)
{
- const char *str;
- str=script_getstr(st,2);
- ShowDebug("script debug : %d %d : %s\n",st->rid,st->oid,str);
+ struct StringBuf buf;
+ StrBuf->Init(&buf);
+
+ if (!script->sprintf_helper(st, 2, &buf)) {
+ StrBuf->Destroy(&buf);
+ script_pushint(st, 0);
+ return false;
+ }
+
+ ShowDebug("script debug : %d %d : %s\n", st->rid, st->oid, StrBuf->Value(&buf));
+ StrBuf->Destroy(&buf);
+ script_pushint(st, 1);
return true;
}
/*==========================================
*------------------------------------------*/
-BUILDIN(catchpet)
+static BUILDIN(catchpet)
{
int pet_id;
struct map_session_data *sd;
@@ -11743,7 +12315,7 @@ BUILDIN(catchpet)
/*==========================================
* [orn]
*------------------------------------------*/
-BUILDIN(homunculus_evolution)
+static BUILDIN(homunculus_evolution)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -11763,7 +12335,7 @@ BUILDIN(homunculus_evolution)
* Checks for vaporized morph state
* and deletes ITEMID_STRANGE_EMBRYO.
*------------------------------------------*/
-BUILDIN(homunculus_mutate)
+static BUILDIN(homunculus_mutate)
{
bool success = false;
struct map_session_data *sd = script->rid2sd(st);
@@ -11777,7 +12349,7 @@ BUILDIN(homunculus_mutate)
if (script_hasdata(st,2))
homun_id = script_getnum(st,2);
else
- homun_id = 6048 + (rnd() % 4);
+ homun_id = HOMID_EIRA + (rnd() % 4);
m_class = homun->class2type(sd->hd->homunculus.class_);
m_id = homun->class2type(homun_id);
@@ -11804,7 +12376,7 @@ BUILDIN(homunculus_mutate)
* Puts homunculus into morph state
* and gives ITEMID_STRANGE_EMBRYO.
*------------------------------------------*/
-BUILDIN(homunculus_morphembryo)
+static BUILDIN(homunculus_morphembryo)
{
bool success = false;
struct map_session_data *sd = script->rid2sd(st);
@@ -11847,7 +12419,7 @@ BUILDIN(homunculus_morphembryo)
* 1 = Homunculus is vaporized (rest)
* 2 = Homunculus is in morph state
*------------------------------------------*/
-BUILDIN(homunculus_checkcall)
+static BUILDIN(homunculus_checkcall)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL || sd->hd == NULL)
@@ -11859,7 +12431,7 @@ BUILDIN(homunculus_checkcall)
}
// [Zephyrus]
-BUILDIN(homunculus_shuffle)
+static BUILDIN(homunculus_shuffle)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -11872,7 +12444,7 @@ BUILDIN(homunculus_shuffle)
}
//These two functions bring the eA MAPID_* class functionality to scripts.
-BUILDIN(eaclass)
+static BUILDIN(eaclass)
{
int class;
if (script_hasdata(st,2)) {
@@ -11887,7 +12459,7 @@ BUILDIN(eaclass)
return true;
}
-BUILDIN(roclass)
+static BUILDIN(roclass)
{
int job = script_getnum(st,2);
int sex;
@@ -11907,7 +12479,7 @@ BUILDIN(roclass)
/*==========================================
* Tells client to open a hatching window, used for pet incubator
*------------------------------------------*/
-BUILDIN(birthpet)
+static BUILDIN(birthpet)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -11930,7 +12502,7 @@ BUILDIN(birthpet)
* 3 : don't reset skill, blvl=1
* 4 : jlvl=0
*------------------------------------------*/
-BUILDIN(resetlvl)
+static BUILDIN(resetlvl)
{
int type=script_getnum(st,2);
struct map_session_data *sd = script->rid2sd(st);
@@ -11943,7 +12515,7 @@ BUILDIN(resetlvl)
/*==========================================
* Reset a player status point
*------------------------------------------*/
-BUILDIN(resetstatus)
+static BUILDIN(resetstatus)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -11955,7 +12527,7 @@ BUILDIN(resetstatus)
/*==========================================
* script command resetskill
*------------------------------------------*/
-BUILDIN(resetskill)
+static BUILDIN(resetskill)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -11967,7 +12539,7 @@ BUILDIN(resetskill)
/*==========================================
* Counts total amount of skill points.
*------------------------------------------*/
-BUILDIN(skillpointcount)
+static BUILDIN(skillpointcount)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -11979,7 +12551,7 @@ BUILDIN(skillpointcount)
/*==========================================
*
*------------------------------------------*/
-BUILDIN(changebase)
+static BUILDIN(changebase)
{
struct map_session_data *sd = NULL;
int vclass;
@@ -12025,7 +12597,7 @@ static struct map_session_data *prepareChangeSex(struct script_state *st)
/*==========================================
* Unequip all item and request for a changesex to char-serv
*------------------------------------------*/
-BUILDIN(changesex)
+static BUILDIN(changesex)
{
struct map_session_data *sd = prepareChangeSex(st);
if (sd == NULL)
@@ -12037,7 +12609,7 @@ BUILDIN(changesex)
/*==========================================
* Unequip all items and change character sex [4144]
*------------------------------------------*/
-BUILDIN(changecharsex)
+static BUILDIN(changecharsex)
{
struct map_session_data *sd = prepareChangeSex(st);
if (sd == NULL)
@@ -12049,7 +12621,7 @@ BUILDIN(changecharsex)
/*==========================================
* Works like 'announce' but outputs in the common chat window
*------------------------------------------*/
-BUILDIN(globalmes)
+static BUILDIN(globalmes)
{
const char *name=NULL,*mes;
@@ -12077,7 +12649,7 @@ BUILDIN(globalmes)
/// Creates a waiting room (chat room) for this npc.
///
/// waitingroom "<title>",<limit>{,"<event>"{,<trigger>{,<zeny>{,<minlvl>{,<maxlvl>}}}}};
-BUILDIN(waitingroom)
+static BUILDIN(waitingroom)
{
struct npc_data* nd;
const char* title = script_getstr(st, 2);
@@ -12101,7 +12673,8 @@ BUILDIN(waitingroom)
///
/// delwaitingroom "<npc_name>";
/// delwaitingroom;
-BUILDIN(delwaitingroom) {
+static BUILDIN(delwaitingroom)
+{
struct npc_data* nd;
if( script_hasdata(st,2) )
nd = npc->name2id(script_getstr(st, 2));
@@ -12116,7 +12689,8 @@ BUILDIN(delwaitingroom) {
///
/// kickwaitingroomall "<npc_name>";
/// kickwaitingroomall;
-BUILDIN(waitingroomkickall) {
+static BUILDIN(waitingroomkickall)
+{
struct npc_data* nd;
struct chat_data* cd;
@@ -12134,7 +12708,8 @@ BUILDIN(waitingroomkickall) {
///
/// enablewaitingroomevent "<npc_name>";
/// enablewaitingroomevent;
-BUILDIN(enablewaitingroomevent) {
+static BUILDIN(enablewaitingroomevent)
+{
struct npc_data* nd;
struct chat_data* cd;
@@ -12152,7 +12727,8 @@ BUILDIN(enablewaitingroomevent) {
///
/// disablewaitingroomevent "<npc_name>";
/// disablewaitingroomevent;
-BUILDIN(disablewaitingroomevent) {
+static BUILDIN(disablewaitingroomevent)
+{
struct npc_data *nd;
struct chat_data *cd;
@@ -12184,7 +12760,7 @@ BUILDIN(disablewaitingroomevent) {
///
/// getwaitingroomstate(<type>,"<npc_name>") -> <info>
/// getwaitingroomstate(<type>) -> <info>
-BUILDIN(getwaitingroomstate)
+static BUILDIN(getwaitingroomstate)
{
const struct npc_data *nd;
const struct chat_data *cd;
@@ -12207,7 +12783,7 @@ BUILDIN(getwaitingroomstate)
for (i = 0; i < cd->users; i++) {
struct map_session_data *sd = cd->usersd[i];
nullpo_retr(false, sd);
- mapreg->setreg(reference_uid(script->add_str("$@chatmembers"), i), sd->bl.id);
+ mapreg->setreg(reference_uid(script->add_variable("$@chatmembers"), i), sd->bl.id);
}
script_pushint(st, cd->users);
break;
@@ -12240,7 +12816,7 @@ BUILDIN(getwaitingroomstate)
///
/// warpwaitingpc "<map name>",<x>,<y>,<number of players>;
/// warpwaitingpc "<map name>",<x>,<y>;
-BUILDIN(warpwaitingpc)
+static BUILDIN(warpwaitingpc)
{
int x, y, i, n;
const char* map_name;
@@ -12277,7 +12853,7 @@ BUILDIN(warpwaitingpc)
pc->payzeny(sd, cd->zeny, LOG_TYPE_NPC, NULL);
}
- mapreg->setreg(reference_uid(script->add_str("$@warpwaitingpc"), i), sd->bl.id);
+ mapreg->setreg(reference_uid(script->add_variable("$@warpwaitingpc"), i), sd->bl.id);
if( strcmp(map_name,"Random") == 0 )
pc->randomwarp(sd,CLR_TELEPORT);
@@ -12286,7 +12862,7 @@ BUILDIN(warpwaitingpc)
else
pc->setpos(sd, script->mapindexname2id(st,map_name), x, y, CLR_OUTSIGHT);
}
- mapreg->setreg(script->add_str("$@warpwaitingpcnum"), i);
+ mapreg->setreg(script->add_variable("$@warpwaitingpcnum"), i);
return true;
}
@@ -12297,7 +12873,8 @@ BUILDIN(warpwaitingpc)
/// Detaches a character from a script.
///
/// @param st Script state to detach the character from.
-void script_detach_rid(struct script_state* st) {
+static void script_detach_rid(struct script_state *st)
+{
if(st->rid) {
script->detach_state(st, false);
st->rid = 0;
@@ -12307,7 +12884,8 @@ void script_detach_rid(struct script_state* st) {
/*==========================================
* Attach sd char id to script and detach current one if any
*------------------------------------------*/
-BUILDIN(attachrid) {
+static BUILDIN(attachrid)
+{
int rid = script_getnum(st,2);
if (map->id2sd(rid) != NULL) {
@@ -12323,7 +12901,7 @@ BUILDIN(attachrid) {
/*==========================================
* Detach script to rid
*------------------------------------------*/
-BUILDIN(detachrid)
+static BUILDIN(detachrid)
{
script->detach_rid(st);
return true;
@@ -12331,7 +12909,7 @@ BUILDIN(detachrid)
/*==========================================
* Chk if account connected, (and charid from account if specified)
*------------------------------------------*/
-BUILDIN(isloggedin)
+static BUILDIN(isloggedin)
{
struct map_session_data *sd = map->id2sd(script_getnum(st,2));
if (script_hasdata(st,3) && sd != NULL
@@ -12344,7 +12922,8 @@ BUILDIN(isloggedin)
/*==========================================
*
*------------------------------------------*/
-BUILDIN(setmapflagnosave) {
+static BUILDIN(setmapflagnosave)
+{
int16 m,x,y;
unsigned short map_index;
const char *str,*str2;
@@ -12366,7 +12945,77 @@ BUILDIN(setmapflagnosave) {
return true;
}
-BUILDIN(getmapflag)
+enum mapinfo_info {
+ MAPINFO_NAME,
+ MAPINFO_ID,
+ MAPINFO_SIZE_X,
+ MAPINFO_SIZE_Y,
+ MAPINFO_ZONE
+};
+
+static BUILDIN(getmapinfo)
+{
+ enum mapinfo_info mode = script_getnum(st, 2);
+ int16 m = -1;
+
+ if (script_hasdata(st, 3)) {
+ if (script_isstringtype(st, 3)) {
+ const char *str = script_getstr(st, 3);
+ m = map->mapindex2mapid(strdb_iget(mapindex->db, str));
+ } else {
+ m = script_getnum(st, 3);
+ }
+ } else {
+ struct block_list *bl = NULL;
+
+ if (st->oid) {
+ bl = map->id2bl(st->oid);
+ } else if (st->rid) {
+ bl = map->id2bl(st->rid);
+ }
+
+ if (bl == NULL) {
+ ShowError("script:getmapinfo: map not supplied and NPC/PC not attached!\n");
+ script_pushint(st, -3);
+ return false;
+ }
+
+ m = bl->m;
+ }
+
+ if (m < 0) {
+ // here we don't throw an error, so the command can be used
+ // to detect whether or not a map exists
+ script_pushint(st, -1);
+ return true;
+ }
+
+ switch (mode) {
+ case MAPINFO_NAME:
+ script_pushconststr(st, map->list[m].name);
+ break;
+ case MAPINFO_ID:
+ script_pushint(st, m);
+ break;
+ case MAPINFO_SIZE_X:
+ script_pushint(st, map->list[m].xs);
+ break;
+ case MAPINFO_SIZE_Y:
+ script_pushint(st, map->list[m].ys);
+ break;
+ case MAPINFO_ZONE:
+ script_pushstrcopy(st, map->list[m].zone->name);
+ break;
+ default:
+ ShowError("script:getmapinfo: unknown option in second argument (%u).\n", mode);
+ script_pushint(st, -2);
+ return false;
+ }
+
+ return true;
+}
+
+static BUILDIN(getmapflag)
{
int16 m,i;
const char *str;
@@ -12428,14 +13077,17 @@ BUILDIN(getmapflag)
case MF_RESET: script_pushint(st,map->list[m].flag.reset); break;
case MF_NOTOMB: script_pushint(st,map->list[m].flag.notomb); break;
case MF_NOCASHSHOP: script_pushint(st,map->list[m].flag.nocashshop); break;
- case MF_NOVIEWID: script_pushint(st,map->list[m].flag.noviewid); break;
+ case MF_NOAUTOLOOT: script_pushint(st, map->list[m].flag.noautoloot); break;
+ case MF_NOVIEWID: script_pushint(st, map->list[m].flag.noviewid); break;
+ case MF_PAIRSHIP_STARTABLE: script_pushint(st, map->list[m].flag.pairship_startable); break;
+ case MF_PAIRSHIP_ENDABLE: script_pushint(st, map->list[m].flag.pairship_endable); break;
}
}
return true;
}
/* pvp timer handling */
-int script_mapflag_pvp_sub(struct block_list *bl, va_list ap)
+static int script_mapflag_pvp_sub(struct block_list *bl, va_list ap)
{
struct map_session_data *sd = NULL;
@@ -12444,7 +13096,8 @@ int script_mapflag_pvp_sub(struct block_list *bl, va_list ap)
sd = BL_UCAST(BL_PC, bl);
if (sd->pvp_timer == INVALID_TIMER) {
- sd->pvp_timer = timer->add(timer->gettick() + 200, pc->calc_pvprank_timer, sd->bl.id, 0);
+ if (!map->list[sd->bl.m].flag.pvp_nocalcrank)
+ sd->pvp_timer = timer->add(timer->gettick() + 200, pc->calc_pvprank_timer, sd->bl.id, 0);
sd->pvp_rank = 0;
sd->pvp_lastusers = 0;
sd->pvp_point = 5;
@@ -12456,7 +13109,8 @@ int script_mapflag_pvp_sub(struct block_list *bl, va_list ap)
return 0;
}
-BUILDIN(setmapflag) {
+static BUILDIN(setmapflag)
+{
int16 m,i;
const char *str, *val2 = NULL;
int val=0;
@@ -12495,6 +13149,7 @@ BUILDIN(setmapflag) {
case MF_PVP_NOGUILD: map->list[m].flag.pvp_noguild = 1; break;
case MF_GVG: {
struct block_list bl;
+ memset(&bl, 0, sizeof(bl));
map->list[m].flag.gvg = 1;
clif->map_property_mapall(m, MAPPROPERTY_AGITZONE);
bl.type = BL_NUL;
@@ -12552,14 +13207,18 @@ BUILDIN(setmapflag) {
case MF_RESET: map->list[m].flag.reset = 1; break;
case MF_NOTOMB: map->list[m].flag.notomb = 1; break;
case MF_NOCASHSHOP: map->list[m].flag.nocashshop = 1; break;
+ case MF_NOAUTOLOOT: map->list[m].flag.noautoloot = 1; break;
case MF_NOVIEWID: map->list[m].flag.noviewid = (val <= 0) ? EQP_NONE : val; break;
+ case MF_PAIRSHIP_STARTABLE: map->list[m].flag.pairship_startable = 1; break;
+ case MF_PAIRSHIP_ENDABLE: map->list[m].flag.pairship_endable = 1; break;
}
}
return true;
}
-BUILDIN(removemapflag) {
+static BUILDIN(removemapflag)
+{
int16 m,i;
const char *str;
@@ -12577,6 +13236,7 @@ BUILDIN(removemapflag) {
case MF_NOZENYPENALTY: map->list[m].flag.nozenypenalty = 0; break;
case MF_PVP: {
struct block_list bl;
+ memset(&bl, 0, sizeof(bl));
bl.type = BL_NUL;
bl.m = m;
map->list[m].flag.pvp = 0;
@@ -12588,6 +13248,7 @@ BUILDIN(removemapflag) {
case MF_PVP_NOGUILD: map->list[m].flag.pvp_noguild = 0; break;
case MF_GVG: {
struct block_list bl;
+ memset(&bl, 0, sizeof(bl));
bl.type = BL_NUL;
bl.m = m;
map->list[m].flag.gvg = 0;
@@ -12639,6 +13300,7 @@ BUILDIN(removemapflag) {
case MF_RESET: map->list[m].flag.reset = 0; break;
case MF_NOTOMB: map->list[m].flag.notomb = 0; break;
case MF_NOCASHSHOP: map->list[m].flag.nocashshop = 0; break;
+ case MF_NOAUTOLOOT: map->list[m].flag.noautoloot = 0; break;
case MF_NOVIEWID: map->list[m].flag.noviewid = EQP_NONE; break;
}
}
@@ -12646,7 +13308,7 @@ BUILDIN(removemapflag) {
return true;
}
-BUILDIN(pvpon)
+static BUILDIN(pvpon)
{
int16 m;
const char *str;
@@ -12654,6 +13316,7 @@ BUILDIN(pvpon)
struct s_mapiterator* iter;
struct block_list bl;
+ memset(&bl, 0, sizeof(bl));
str = script_getstr(st,2);
m = map->mapname2mapid(str);
if( m < 0 || map->list[m].flag.pvp )
@@ -12679,7 +13342,8 @@ BUILDIN(pvpon)
if( sd->bl.m != m || sd->pvp_timer != INVALID_TIMER )
continue; // not applicable
- sd->pvp_timer = timer->add(timer->gettick()+200,pc->calc_pvprank_timer,sd->bl.id,0);
+ if (!map->list[m].flag.pvp_nocalcrank)
+ sd->pvp_timer = timer->add(timer->gettick()+200,pc->calc_pvprank_timer,sd->bl.id,0);
sd->pvp_rank = 0;
sd->pvp_lastusers = 0;
sd->pvp_point = 5;
@@ -12691,7 +13355,7 @@ BUILDIN(pvpon)
return true;
}
-int buildin_pvpoff_sub(struct block_list *bl, va_list ap)
+static int buildin_pvpoff_sub(struct block_list *bl, va_list ap)
{
struct map_session_data *sd = NULL;
@@ -12707,11 +13371,13 @@ int buildin_pvpoff_sub(struct block_list *bl, va_list ap)
return 0;
}
-BUILDIN(pvpoff) {
+static BUILDIN(pvpoff)
+{
int16 m;
const char *str;
struct block_list bl;
+ memset(&bl, 0, sizeof(bl));
str=script_getstr(st,2);
m = map->mapname2mapid(str);
if(m < 0 || !map->list[m].flag.pvp)
@@ -12731,7 +13397,8 @@ BUILDIN(pvpoff) {
return true;
}
-BUILDIN(gvgon) {
+static BUILDIN(gvgon)
+{
int16 m;
const char *str;
@@ -12740,6 +13407,7 @@ BUILDIN(gvgon) {
if(m >= 0 && !map->list[m].flag.gvg) {
struct block_list bl;
+ memset(&bl, 0, sizeof(bl));
if( !strdb_exists(map->zone_db,MAP_ZONE_GVG_NAME) ) {
ShowError("buildin_gvgon: zone_db missing '%s'\n",MAP_ZONE_GVG_NAME);
return true;
@@ -12755,7 +13423,8 @@ BUILDIN(gvgon) {
return true;
}
-BUILDIN(gvgoff) {
+static BUILDIN(gvgoff)
+{
int16 m;
const char *str;
@@ -12763,6 +13432,7 @@ BUILDIN(gvgoff) {
m = map->mapname2mapid(str);
if(m >= 0 && map->list[m].flag.gvg) {
struct block_list bl;
+ memset(&bl, 0, sizeof(bl));
map->zone_change2(m, map->list[m].prev_zone);
map->list[m].flag.gvg = 0;
clif->map_property_mapall(m, MAPPROPERTY_NOTHING);
@@ -12778,7 +13448,8 @@ BUILDIN(gvgoff) {
* emotion emotion#, <target: 0 - NPC, 1 - PC>, <NPC/PC name>
*------------------------------------------*/
//Optional second parameter added by [Skotlex]
-BUILDIN(emotion) {
+static BUILDIN(emotion)
+{
int type;
int player=0;
@@ -12807,7 +13478,7 @@ BUILDIN(emotion) {
return true;
}
-int buildin_maprespawnguildid_sub_pc(struct map_session_data* sd, va_list ap)
+static int buildin_maprespawnguildid_sub_pc(struct map_session_data *sd, va_list ap)
{
int16 m=va_arg(ap,int);
int g_id=va_arg(ap,int);
@@ -12824,7 +13495,7 @@ int buildin_maprespawnguildid_sub_pc(struct map_session_data* sd, va_list ap)
return 1;
}
-int buildin_maprespawnguildid_sub_mob(struct block_list *bl, va_list ap)
+static int buildin_maprespawnguildid_sub_mob(struct block_list *bl, va_list ap)
{
struct mob_data *md = NULL;
@@ -12838,7 +13509,8 @@ int buildin_maprespawnguildid_sub_mob(struct block_list *bl, va_list ap)
return 0;
}
-BUILDIN(maprespawnguildid) {
+static BUILDIN(maprespawnguildid)
+{
const char *mapname=script_getstr(st,2);
int g_id=script_getnum(st,3);
int flag=script_getnum(st,4);
@@ -12855,28 +13527,32 @@ BUILDIN(maprespawnguildid) {
return true;
}
-BUILDIN(agitstart) {
+static BUILDIN(agitstart)
+{
if(map->agit_flag==1) return true; // Agit already Start.
map->agit_flag=1;
guild->agit_start();
return true;
}
-BUILDIN(agitend) {
+static BUILDIN(agitend)
+{
if(map->agit_flag==0) return true; // Agit already End.
map->agit_flag=0;
guild->agit_end();
return true;
}
-BUILDIN(agitstart2) {
+static BUILDIN(agitstart2)
+{
if(map->agit2_flag==1) return true; // Agit2 already Start.
map->agit2_flag=1;
guild->agit2_start();
return true;
}
-BUILDIN(agitend2) {
+static BUILDIN(agitend2)
+{
if(map->agit2_flag==0) return true; // Agit2 already End.
map->agit2_flag=0;
guild->agit2_end();
@@ -12886,7 +13562,8 @@ BUILDIN(agitend2) {
/*==========================================
* Returns whether woe is on or off.
*------------------------------------------*/
-BUILDIN(agitcheck) {
+static BUILDIN(agitcheck)
+{
script_pushint(st,map->agit_flag);
return true;
}
@@ -12894,7 +13571,8 @@ BUILDIN(agitcheck) {
/*==========================================
* Returns whether woese is on or off.
*------------------------------------------*/
-BUILDIN(agitcheck2) {
+static BUILDIN(agitcheck2)
+{
script_pushint(st,map->agit2_flag);
return true;
}
@@ -12902,7 +13580,7 @@ BUILDIN(agitcheck2) {
/// Sets the guild_id of this npc.
///
/// flagemblem <guild_id>;
-BUILDIN(flagemblem)
+static BUILDIN(flagemblem)
{
struct npc_data *nd;
int g_id = script_getnum(st,2);
@@ -12927,7 +13605,7 @@ BUILDIN(flagemblem)
return true;
}
-BUILDIN(getcastlename)
+static BUILDIN(getcastlename)
{
const char* mapname = mapindex->getmapname(script_getstr(st,2),NULL);
struct guild_castle* gc = guild->mapname2gc(mapname);
@@ -12936,7 +13614,7 @@ BUILDIN(getcastlename)
return true;
}
-BUILDIN(getcastledata)
+static BUILDIN(getcastledata)
{
const char *mapname = mapindex->getmapname(script_getstr(st,2),NULL);
int index = script_getnum(st,3);
@@ -12979,7 +13657,7 @@ BUILDIN(getcastledata)
return true;
}
-BUILDIN(setcastledata)
+static BUILDIN(setcastledata)
{
const char *mapname = mapindex->getmapname(script_getstr(st,2),NULL);
int index = script_getnum(st,3);
@@ -13002,7 +13680,7 @@ BUILDIN(setcastledata)
/* =====================================================================
* ---------------------------------------------------------------------*/
-BUILDIN(requestguildinfo)
+static BUILDIN(requestguildinfo)
{
int guild_id=script_getnum(st,2);
const char *event=NULL;
@@ -13019,7 +13697,7 @@ BUILDIN(requestguildinfo)
/// Returns the number of cards that have been compounded onto the specified equipped item.
/// getequipcardcnt(<equipment slot>);
-BUILDIN(getequipcardcnt)
+static BUILDIN(getequipcardcnt)
{
int i=-1,j,num;
struct map_session_data *sd;
@@ -13056,149 +13734,115 @@ BUILDIN(getequipcardcnt)
/// Removes all cards from the item found in the specified equipment slot of the invoking character,
/// and give them to the character. If any cards were removed in this manner, it will also show a success effect.
-/// successremovecards <slot>;
-BUILDIN(successremovecards)
+/// successremovecards(<slot>);
+static BUILDIN(successremovecards)
{
- int i=-1,c,cardflag=0;
+ int i = -1, c, cardflag = 0;
struct map_session_data *sd = script->rid2sd(st);
- int num = script_getnum(st,2);
+ int num = script_getnum(st, 2);
if (sd == NULL)
return true;
if (num > 0 && num <= ARRAYLENGTH(script->equip))
- i=pc->checkequip(sd,script->equip[num-1]);
+ i = pc->checkequip(sd,script->equip[num - 1]);
- if (i < 0 || !sd->inventory_data[i]) {
+ if (i < 0 || sd->inventory_data[i] == NULL)
return true;
- }
- if(itemdb_isspecial(sd->status.inventory[i].card[0]))
+ if (itemdb_isspecial(sd->status.inventory[i].card[0]))
return true;
- for( c = sd->inventory_data[i]->slot - 1; c >= 0; --c ) {
- if( sd->status.inventory[i].card[c] && itemdb_type(sd->status.inventory[i].card[c]) == IT_CARD ) {// extract this card from the item
+ for (c = sd->inventory_data[i]->slot - 1; c >= 0; --c) {
+ if (sd->status.inventory[i].card[c] > 0 && itemdb_type(sd->status.inventory[i].card[c]) == IT_CARD) {
int flag;
struct item item_tmp;
- memset(&item_tmp,0,sizeof(item_tmp));
+
+ memset(&item_tmp, 0, sizeof(item_tmp));
+
cardflag = 1;
- item_tmp.nameid = sd->status.inventory[i].card[c];
+ item_tmp.nameid = sd->status.inventory[i].card[c];
item_tmp.identify = 1;
+ sd->status.inventory[i].card[c] = 0;
- if((flag=pc->additem(sd,&item_tmp,1,LOG_TYPE_SCRIPT))) {
- // get back the cart in inventory
- clif->additem(sd,0,0,flag);
- map->addflooritem(&sd->bl, &item_tmp, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0);
+ if ((flag = pc->additem(sd, &item_tmp, 1, LOG_TYPE_SCRIPT))) {
+ clif->additem(sd, 0, 0, flag);
+ map->addflooritem(&sd->bl, &item_tmp, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false);
}
}
}
if (cardflag == 1) {
- //if card was remove replace item with no card
- int flag, j;
- struct item item_tmp;
- memset(&item_tmp,0,sizeof(item_tmp));
-
- item_tmp.nameid = sd->status.inventory[i].nameid;
- item_tmp.identify = 1;
- item_tmp.refine = sd->status.inventory[i].refine;
- item_tmp.attribute = sd->status.inventory[i].attribute;
- item_tmp.expire_time = sd->status.inventory[i].expire_time;
- item_tmp.bound = sd->status.inventory[i].bound;
-
- for (j = sd->inventory_data[i]->slot; j < MAX_SLOTS; j++)
- item_tmp.card[j]=sd->status.inventory[i].card[j];
-
- pc->delitem(sd, i, 1, 0, DELITEM_MATERIALCHANGE, LOG_TYPE_SCRIPT);
- if ((flag=pc->additem(sd,&item_tmp,1,LOG_TYPE_SCRIPT))) {
- //chk if can be spawn in inventory otherwise put on floor
- clif->additem(sd,0,0,flag);
- map->addflooritem(&sd->bl, &item_tmp, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0);
- }
-
+ pc->unequipitem(sd, i, PCUNEQUIPITEM_FORCE);
+ clif->delitem(sd, i, 1, DELITEM_MATERIALCHANGE);
+ clif->additem(sd, i, 1, 0);
+ pc->equipitem(sd, i, sd->status.inventory[i].equip);
clif->misceffect(&sd->bl,3);
}
return true;
}
/// Removes all cards from the item found in the specified equipment slot of the invoking character.
-/// failedremovecards <slot>, <type>;
+/// failedremovecards(<slot>, <type>);
/// <type>=0 : will destroy both the item and the cards.
/// <type>=1 : will keep the item, but destroy the cards.
/// <type>=2 : will keep the cards, but destroy the item.
-/// <type>=? : will just display the failure effect.
-BUILDIN(failedremovecards)
+/// <type>=3 : will just display the failure effect.
+static BUILDIN(failedremovecards)
{
- int i=-1,c,cardflag=0;
+ int i = -1, c, cardflag = 0;
+ int num = script_getnum(st, 2);
+ int typefail = script_getnum(st, 3);
struct map_session_data *sd = script->rid2sd(st);
- int num = script_getnum(st,2);
- int typefail = script_getnum(st,3);
if (sd == NULL)
return true;
if (num > 0 && num <= ARRAYLENGTH(script->equip))
- i=pc->checkequip(sd,script->equip[num-1]);
+ i = pc->checkequip(sd, script->equip[num - 1]);
- if (i < 0 || !sd->inventory_data[i])
+ if (i < 0 || sd->inventory_data[i] == NULL)
return true;
- if(itemdb_isspecial(sd->status.inventory[i].card[0]))
+ if (itemdb_isspecial(sd->status.inventory[i].card[0]))
return true;
- for( c = sd->inventory_data[i]->slot - 1; c >= 0; --c ) {
- if( sd->status.inventory[i].card[c] && itemdb_type(sd->status.inventory[i].card[c]) == IT_CARD ) {
+ for (c = sd->inventory_data[i]->slot - 1; c >= 0; --c) {
+ if (sd->status.inventory[i].card[c] > 0 && itemdb_type(sd->status.inventory[i].card[c]) == IT_CARD) {
cardflag = 1;
- if(typefail == 2) {// add cards to inventory, clear
+ sd->status.inventory[i].card[c] = 0;
+
+ if (typefail == 2) { // add cards to inventory, clear
int flag;
struct item item_tmp;
- memset(&item_tmp,0,sizeof(item_tmp));
+ memset(&item_tmp, 0, sizeof(item_tmp));
- item_tmp.nameid = sd->status.inventory[i].card[c];
+ item_tmp.nameid = sd->status.inventory[i].card[c];
item_tmp.identify = 1;
- if((flag=pc->additem(sd,&item_tmp,1,LOG_TYPE_SCRIPT))) {
- clif->additem(sd,0,0,flag);
- map->addflooritem(&sd->bl, &item_tmp, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0);
+ if ((flag = pc->additem(sd, &item_tmp, 1, LOG_TYPE_SCRIPT))) {
+ clif->additem(sd, 0, 0, flag);
+ map->addflooritem(&sd->bl, &item_tmp, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false);
}
}
}
}
if (cardflag == 1) {
- if (typefail == 0 || typefail == 2) {
- // destroy the item
+ if (typefail == 0 || typefail == 2) { // destroy the item
pc->delitem(sd, i, 1, 0, DELITEM_FAILREFINE, LOG_TYPE_SCRIPT);
} else if (typefail == 1) {
- // destroy the card
- int flag, j;
- struct item item_tmp;
-
- memset(&item_tmp,0,sizeof(item_tmp));
-
- item_tmp.nameid = sd->status.inventory[i].nameid;
- item_tmp.identify = 1;
- item_tmp.refine = sd->status.inventory[i].refine;
- item_tmp.attribute = sd->status.inventory[i].attribute;
- item_tmp.expire_time = sd->status.inventory[i].expire_time;
- item_tmp.bound = sd->status.inventory[i].bound;
-
- for (j = sd->inventory_data[i]->slot; j < MAX_SLOTS; j++)
- item_tmp.card[j]=sd->status.inventory[i].card[j];
-
- pc->delitem(sd, i, 1, 0, DELITEM_FAILREFINE, LOG_TYPE_SCRIPT);
-
- if((flag=pc->additem(sd,&item_tmp,1,LOG_TYPE_SCRIPT))) {
- clif->additem(sd,0,0,flag);
- map->addflooritem(&sd->bl, &item_tmp, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0);
- }
+ pc->unequipitem(sd, i, PCUNEQUIPITEM_FORCE);
+ clif->delitem(sd, i, 1, DELITEM_MATERIALCHANGE);
+ clif->additem(sd, i, 1, 0);
+ pc->equipitem(sd, i, sd->status.inventory[i].equip);
}
- clif->misceffect(&sd->bl,2);
}
+ clif->misceffect(&sd->bl, 2);
return true;
}
@@ -13209,7 +13853,8 @@ BUILDIN(failedremovecards)
* improved by [Lance]
* ================================================================*/
// Added by RoVeRT
-BUILDIN(mapwarp) {
+static BUILDIN(mapwarp)
+{
int x,y,m,check_val=0,check_ID=0,i=0;
struct guild *g = NULL;
struct party_data *p = NULL;
@@ -13262,7 +13907,7 @@ BUILDIN(mapwarp) {
}
// Added by RoVeRT
-int buildin_mobcount_sub(struct block_list *bl, va_list ap)
+static int buildin_mobcount_sub(struct block_list *bl, va_list ap)
{
char *event = va_arg(ap,char *);
const struct mob_data *md = NULL;
@@ -13277,7 +13922,8 @@ int buildin_mobcount_sub(struct block_list *bl, va_list ap)
}
// Added by RoVeRT
-BUILDIN(mobcount) {
+static BUILDIN(mobcount)
+{
const char *mapname,*event;
int16 m;
mapname=script_getstr(st,2);
@@ -13310,7 +13956,8 @@ BUILDIN(mobcount) {
return true;
}
-BUILDIN(marriage) {
+static BUILDIN(marriage)
+{
const char *partner=script_getstr(st,2);
struct map_session_data *sd = script->rid2sd(st);
struct map_session_data *p_sd = script->nick2sd(st, partner);
@@ -13322,7 +13969,7 @@ BUILDIN(marriage) {
script_pushint(st,1);
return true;
}
-BUILDIN(wedding_effect)
+static BUILDIN(wedding_effect)
{
struct map_session_data *sd = script->rid2sd(st);
struct block_list *bl;
@@ -13334,7 +13981,7 @@ BUILDIN(wedding_effect)
clif->wedding_effect(bl);
return true;
}
-BUILDIN(divorce)
+static BUILDIN(divorce)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL || pc->divorce(sd) < 0) {
@@ -13345,7 +13992,8 @@ BUILDIN(divorce)
return true;
}
-BUILDIN(ispartneron) {
+static BUILDIN(ispartneron)
+{
struct map_session_data *sd = script->rid2sd(st);
if (sd==NULL || !pc->ismarried(sd)
@@ -13358,7 +14006,7 @@ BUILDIN(ispartneron) {
return true;
}
-BUILDIN(getpartnerid)
+static BUILDIN(getpartnerid)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -13368,7 +14016,7 @@ BUILDIN(getpartnerid)
return true;
}
-BUILDIN(getchildid)
+static BUILDIN(getchildid)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -13378,7 +14026,7 @@ BUILDIN(getchildid)
return true;
}
-BUILDIN(getmotherid)
+static BUILDIN(getmotherid)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -13388,7 +14036,8 @@ BUILDIN(getmotherid)
return true;
}
-BUILDIN(getfatherid) {
+static BUILDIN(getfatherid)
+{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
return true;
@@ -13397,7 +14046,7 @@ BUILDIN(getfatherid) {
return true;
}
-BUILDIN(warppartner)
+static BUILDIN(warppartner)
{
int x,y;
unsigned short map_index;
@@ -13427,7 +14076,7 @@ BUILDIN(warppartner)
/*================================================
* Script for Displaying MOB Information [Valaris]
*------------------------------------------------*/
-BUILDIN(strmobinfo)
+static BUILDIN(strmobinfo)
{
int num=script_getnum(st,2);
@@ -13461,7 +14110,8 @@ BUILDIN(strmobinfo)
* Summon guardians [Valaris]
* guardian("<map name>",<x>,<y>,"<name to show>",<mob id>{,"<event label>"}{,<guardian index>}) -> <id>
*------------------------------------------*/
-BUILDIN(guardian) {
+static BUILDIN(guardian)
+{
int class_ = 0, x = 0, y = 0, guardian = 0;
const char *str, *mapname, *evt="";
bool has_index = false;
@@ -13502,7 +14152,8 @@ BUILDIN(guardian) {
/*==========================================
* Invisible Walls [Zephyrus]
*------------------------------------------*/
-BUILDIN(setwall) {
+static BUILDIN(setwall)
+{
const char *mapname, *name;
int x, y, m, size, dir;
bool shootable;
@@ -13521,9 +14172,15 @@ BUILDIN(setwall) {
map->iwall_set(m, x, y, size, dir, shootable, name);
return true;
}
-BUILDIN(delwall) {
+
+static BUILDIN(delwall)
+{
const char *name = script_getstr(st,2);
- map->iwall_remove(name);
+
+ if (!map->iwall_remove(name)) {
+ ShowWarning("buildin_delwall: Non-existent '%s' provided.\n", name);
+ return false;
+ }
return true;
}
@@ -13535,7 +14192,8 @@ BUILDIN(delwall) {
/// 1 - maximum hp
/// 2 - current hp
///
-BUILDIN(guardianinfo) {
+static BUILDIN(guardianinfo)
+{
const char* mapname = mapindex->getmapname(script_getstr(st,2),NULL);
int id = script_getnum(st,3);
int type = script_getnum(st,4);
@@ -13567,7 +14225,8 @@ BUILDIN(guardianinfo) {
/*==========================================
* Get the item name by item_id or null
*------------------------------------------*/
-BUILDIN(getitemname) {
+static BUILDIN(getitemname)
+{
int item_id=0;
struct item_data *i_data;
char *item_name;
@@ -13595,7 +14254,7 @@ BUILDIN(getitemname) {
/*==========================================
* Returns number of slots an item has. [Skotlex]
*------------------------------------------*/
-BUILDIN(getitemslots)
+static BUILDIN(getitemslots)
{
int item_id;
struct item_data *i_data;
@@ -13611,88 +14270,353 @@ BUILDIN(getitemslots)
return true;
}
-// TODO: add matk here if needed/once we get rid of RENEWAL
+// TODO: add matk here if needed
/*==========================================
* Returns some values of an item [Lupus]
* Price, Weight, etc...
- * getiteminfo(itemID,n), where n
- * 0 value_buy;
- * 1 value_sell;
- * 2 type;
- * 3 maxchance = Max drop chance of this item e.g. 1 = 0.01% , etc..
- * if = 0, then monsters don't drop it at all (rare or a quest item)
- * if = -1, then this item is sold in NPC shops only
- * 4 sex;
- * 5 equip;
- * 6 weight;
- * 7 atk;
- * 8 def;
- * 9 range;
- * 10 slot;
- * 11 look;
- * 12 elv;
- * 13 wlv;
- * 14 view id
*------------------------------------------*/
-BUILDIN(getiteminfo)
+static BUILDIN(getiteminfo)
{
- int item_id,n;
- struct item_data *i_data;
+ int item_id = script_getnum(st, 2);
+ int n = script_getnum(st, 3);
+ struct item_data *it = itemdb->exists(item_id);
- item_id = script_getnum(st,2);
- n = script_getnum(st,3);
- i_data = itemdb->exists(item_id);
+ if (it == NULL) {
+ script_pushint(st, -1);
+ return true;
+ }
- if (i_data && n>=0 && n<=14) {
- int *item_arr = (int*)&i_data->value_buy;
- script_pushint(st,item_arr[n]);
- } else {
+ switch (n) {
+ case ITEMINFO_BUYPRICE:
+ script_pushint(st, it->value_buy);
+ break;
+ case ITEMINFO_SELLPRICE:
+ script_pushint(st, it->value_sell);
+ break;
+ case ITEMINFO_TYPE:
+ script_pushint(st, it->type);
+ break;
+ case ITEMINFO_MAXCHANCE:
+ script_pushint(st, it->maxchance);
+ break;
+ case ITEMINFO_SEX:
+ script_pushint(st, it->sex);
+ break;
+ case ITEMINFO_LOC:
+ script_pushint(st, it->equip);
+ break;
+ case ITEMINFO_WEIGHT:
+ script_pushint(st, it->weight);
+ break;
+ case ITEMINFO_ATK:
+ script_pushint(st, it->atk);
+ break;
+ case ITEMINFO_DEF:
+ script_pushint(st, it->def);
+ break;
+ case ITEMINFO_RANGE:
+ script_pushint(st, it->range);
+ break;
+ case ITEMINFO_SLOTS:
+ script_pushint(st, it->slot);
+ break;
+ case ITEMINFO_SUBTYPE:
+ script_pushint(st, it->subtype);
+ break;
+ case ITEMINFO_ELV:
+ script_pushint(st, it->elv);
+ break;
+ case ITEMINFO_WLV:
+ script_pushint(st, it->wlv);
+ break;
+ case ITEMINFO_VIEWID:
+ script_pushint(st, it->view_id);
+ break;
+ case ITEMINFO_MATK:
+ script_pushint(st, it->matk);
+ break;
+ case ITEMINFO_VIEWSPRITE:
+ script_pushint(st, it->view_sprite);
+ break;
+ case ITEMINFO_TRADE:
+ script_pushint(st, it->flag.trade_restriction);
+ break;
+ default:
+ ShowError("buildin_getiteminfo: Invalid item type %d.\n", n);
script_pushint(st,-1);
+ return false;
+ }
+ return true;
+}
+
+/**
+ * Returns the value of the current equipment being parsed using static variables -
+ * current_equip_item_index and current_equip_option_index.
+ * !!Designed to be used with item_options.conf only!!
+ * *getequippedoptioninfo(<info_type>);
+ *
+ * @param (int) Types -
+ * IT_OPT_INDEX ID of the item option.
+ * IT_OPT_VALUE Amount of the bonus to be added.
+ * @return value of the type or -1.
+ */
+static BUILDIN(getequippedoptioninfo)
+{
+ int val = 0, type = script_getnum(st, 2);
+ struct map_session_data *sd = NULL;
+
+ if ((sd = script->rid2sd(st)) == NULL || status->current_equip_item_index == -1 || status->current_equip_option_index == -1
+ || !sd->status.inventory[status->current_equip_item_index].option[status->current_equip_option_index].index) {
+ script_pushint(st, -1);
+ return false;
+ }
+
+ switch (type) {
+ case IT_OPT_INDEX:
+ val = sd->status.inventory[status->current_equip_item_index].option[status->current_equip_option_index].index;
+ break;
+ case IT_OPT_VALUE:
+ val = sd->status.inventory[status->current_equip_item_index].option[status->current_equip_option_index].value;
+ break;
+ default:
+ ShowError("buildin_getequippedoptioninfo: Invalid option data type %d (Max %d).\n", type, IT_OPT_MAX-1);
+ script_pushint(st, -1);
+ return false;
+ }
+
+ script_pushint(st, val);
+
+ return true;
+}
+
+/**
+ * Gets the option information of an equipment.
+ * *getequipoption(<equip_index>,<slot>,<type>);
+ *
+ * @param equip_index as the Index of the Equipment.
+ * @param slot as the slot# of the Item Option (1 to MAX_ITEM_OPTIONS)
+ * @param type IT_OPT_INDEX or IT_OPT_VALUE.
+ * @return (int) value or -1 on failure.
+ */
+static BUILDIN(getequipoption)
+{
+ int val = 0, equip_index = script_getnum(st, 2);
+ int slot = script_getnum(st, 3);
+ int opt_type = script_getnum(st, 4);
+ int i = -1;
+ struct map_session_data *sd = script->rid2sd(st);
+
+ if (sd == NULL) {
+ script_pushint(st, -1);
+ ShowError("buildin_getequipoption: Player not attached!\n");
+ return false;
+ }
+
+ if (slot <= 0 || slot > MAX_ITEM_OPTIONS) {
+ script_pushint(st, -1);
+ ShowError("buildin_getequipoption: Invalid option slot %d (Min: 1, Max: %d) provided.\n", slot, MAX_ITEM_OPTIONS);
+ return false;
+ }
+
+ if (equip_index > 0 && equip_index <= ARRAYLENGTH(script->equip)) {
+ if ((i = pc->checkequip(sd, script->equip[equip_index - 1])) == -1) {
+ ShowError("buildin_getequipoption: No equipment is equipped in the given index %d.\n", equip_index);
+ script_pushint(st, -1);
+ return false;
+ }
+ } else {
+ ShowError("buildin_getequipoption: Invalid equipment index %d provided.\n", equip_index);
+ script_pushint(st, 0);
+ return false;
}
+
+ if (sd->status.inventory[i].nameid != 0) {
+ switch (opt_type) {
+ case IT_OPT_INDEX:
+ val = sd->status.inventory[i].option[slot-1].index;
+ break;
+ case IT_OPT_VALUE:
+ val = sd->status.inventory[i].option[slot-1].value;
+ break;
+ default:
+ ShowError("buildin_getequipoption: Invalid option data type %d provided.\n", opt_type);
+ script_pushint(st, -1);
+ break;
+ }
+ }
+
+ script_pushint(st, val);
+
return true;
}
+/**
+ * Set an equipment's option value.
+ * *setequipoption(<equip_index>,<slot>,<opt_index>,<value>);
+ *
+ * @param equip_index as the inventory index of the equipment.
+ * @param slot as the slot of the item option (1 to MAX_ITEM_OPTIONS)
+ * @param opt_index as the index of the option available as "Id" in db/item_options.conf.
+ * @param value as the value of the option type.
+ * For IT_OPT_INDEX see "Name" in item_options.conf
+ * For IT_OPT_VALUE, the value of the script bonus.
+ * @return 0 on failure, 1 on success.
+ */
+static BUILDIN(setequipoption)
+{
+ int equip_index = script_getnum(st, 2);
+ int slot = script_getnum(st, 3);
+ int opt_index = script_getnum(st, 4);
+ int value = script_getnum(st, 5);
+ int i = -1;
+
+ struct map_session_data *sd = script->rid2sd(st);
+ struct itemdb_option *ito = NULL;
+
+ if (sd == NULL) {
+ script_pushint(st, 0);
+ ShowError("buildin_setequipoption: Player not attached!\n");
+ return false;
+ }
+
+ if (slot <= 0 || slot > MAX_ITEM_OPTIONS) {
+ script_pushint(st, 0);
+ ShowError("buildin_setequipoption: Invalid option index %d (Min: 1, Max: %d) provided.\n", slot, MAX_ITEM_OPTIONS);
+ return false;
+ }
+
+ if (equip_index > 0 && equip_index <= ARRAYLENGTH(script->equip)) {
+ if ((i = pc->checkequip(sd, script->equip[equip_index - 1])) == -1) {
+ ShowError("buildin_setequipoption: No equipment is equipped in the given index %d.\n", equip_index);
+ script_pushint(st, 0);
+ return false;
+ }
+ } else {
+ ShowError("buildin_setequipoption: Invalid equipment index %d provided.\n", equip_index);
+ script_pushint(st, 0);
+ return false;
+ }
+
+ if (sd->status.inventory[i].nameid != 0) {
+ if (opt_index == 0) {
+ // Remove the option
+ sd->status.inventory[i].option[slot-1].index = 0;
+ sd->status.inventory[i].option[slot-1].value = 0;
+ } else {
+ if ((ito = itemdb->option_exists(opt_index)) == NULL) {
+ script_pushint(st, 0);
+ ShowError("buildin_setequipotion: Option index %d does not exist!\n", opt_index);
+ return false;
+ } else if (value < -INT16_MAX || value > INT16_MAX) {
+ script_pushint(st, 0);
+ ShowError("buildin_setequipotion: Option value %d exceeds maximum limit (%d to %d) for type!\n", value, -INT16_MAX, INT16_MAX);
+ return false;
+ }
+ /* Add Option Index */
+ sd->status.inventory[i].option[slot-1].index = ito->index;
+ /* Add Option Value */
+ sd->status.inventory[i].option[slot-1].value = value;
+ }
+
+ /* Unequip and simulate deletion of the item. */
+ pc->unequipitem(sd, i, PCUNEQUIPITEM_FORCE); // status calc will happen in pc->equipitem() below
+ clif->refine(sd->fd, 0, i, sd->status.inventory[i].refine); // notify client of a refine.
+ clif->delitem(sd, i, 1, DELITEM_MATERIALCHANGE); // notify client to simulate item deletion.
+ /* Log deletion of the item. */
+ logs->pick_pc(sd, LOG_TYPE_SCRIPT, -1, &sd->status.inventory[i],sd->inventory_data[i]);
+ /* Equip and simulate addition of the item. */
+ clif->additem(sd, i, 1, 0); // notify client to simulate item addition.
+ /* Log addition of the item. */
+ logs->pick_pc(sd, LOG_TYPE_SCRIPT, 1, &sd->status.inventory[i], sd->inventory_data[i]);
+ pc->equipitem(sd, i, sd->status.inventory[i].equip); // force equip the item at the original position.
+ clif->misceffect(&sd->bl, 2); // show effect
+ }
+
+ script_pushint(st, 1);
+
+ return true;
+
+}
+
/*==========================================
* Set some values of an item [Lupus]
* Price, Weight, etc...
- * setiteminfo(itemID,n,Value), where n
- * 0 value_buy;
- * 1 value_sell;
- * 2 type;
- * 3 maxchance = Max drop chance of this item e.g. 1 = 0.01% , etc..
- * if = 0, then monsters don't drop it at all (rare or a quest item)
- * if = -1, then this item is sold in NPC shops only
- * 4 sex;
- * 5 equip;
- * 6 weight;
- * 7 atk;
- * 8 def;
- * 9 range;
- * 10 slot;
- * 11 look;
- * 12 elv;
- * 13 wlv;
- * 14 view id
- * Returns Value or -1 if the wrong field's been set
*------------------------------------------*/
-BUILDIN(setiteminfo)
+static BUILDIN(setiteminfo)
{
- int item_id,n,value;
- struct item_data *i_data;
+ // TODO: Validate data in a similar way as during database load
+ int item_id = script_getnum(st, 2);
+ int n = script_getnum(st, 3);
+ int value = script_getnum(st,4);
+ struct item_data *it = itemdb->exists(item_id);
- item_id = script_getnum(st,2);
- n = script_getnum(st,3);
- value = script_getnum(st,4);
- i_data = itemdb->exists(item_id);
+ if (it == NULL) {
+ script_pushint(st, -1);
+ return true;
+ }
- if (i_data && n>=0 && n<=14) {
- int *item_arr = (int*)&i_data->value_buy;
- item_arr[n] = value;
- script_pushint(st,value);
- } else {
+ switch (n) {
+ case ITEMINFO_BUYPRICE:
+ it->value_buy = value;
+ break;
+ case ITEMINFO_SELLPRICE:
+ it->value_sell = value;
+ break;
+ case ITEMINFO_TYPE:
+ it->type = value;
+ break;
+ case ITEMINFO_MAXCHANCE:
+ it->maxchance = value;
+ break;
+ case ITEMINFO_SEX:
+ it->sex = value;
+ break;
+ case ITEMINFO_LOC:
+ it->equip = value;
+ break;
+ case ITEMINFO_WEIGHT:
+ it->weight = value;
+ break;
+ case ITEMINFO_ATK:
+ it->atk = value;
+ break;
+ case ITEMINFO_DEF:
+ it->def = value;
+ break;
+ case ITEMINFO_RANGE:
+ it->range = value;
+ break;
+ case ITEMINFO_SLOTS:
+ it->slot = value;
+ break;
+ case ITEMINFO_SUBTYPE:
+ it->subtype = value;
+ break;
+ case ITEMINFO_ELV:
+ it->elv = value;
+ break;
+ case ITEMINFO_WLV:
+ it->wlv = value;
+ break;
+ case ITEMINFO_VIEWID:
+ it->view_id = value;
+ break;
+ case ITEMINFO_MATK:
+ it->matk = value;
+ break;
+ case ITEMINFO_VIEWSPRITE:
+ it->view_sprite = value;
+ break;
+ case ITEMINFO_TRADE:
+ it->flag.trade_restriction = value;
+ break;
+ default:
+ ShowError("buildin_setiteminfo: invalid type %d.\n", n);
script_pushint(st,-1);
+ return false;
}
+ script_pushint(st,value);
return true;
}
@@ -13708,7 +14632,7 @@ BUILDIN(setiteminfo)
* Useful for such quests as "Sign this refined item with players name" etc
* Hat[0] +4 -> Player's Hat[0] +4
*------------------------------------------*/
-BUILDIN(getequipcardid)
+static BUILDIN(getequipcardid)
{
int i=-1,num,slot;
struct map_session_data *sd;
@@ -13733,7 +14657,7 @@ BUILDIN(getequipcardid)
/*==========================================
* petskillbonus [Valaris] //Rewritten by [Skotlex]
*------------------------------------------*/
-BUILDIN(petskillbonus)
+static BUILDIN(petskillbonus)
{
struct pet_data *pd;
@@ -13770,7 +14694,7 @@ BUILDIN(petskillbonus)
/*==========================================
* pet looting [Valaris] //Rewritten by [Skotlex]
*------------------------------------------*/
-BUILDIN(petloot)
+static BUILDIN(petloot)
{
int max;
struct pet_data *pd;
@@ -13810,93 +14734,108 @@ BUILDIN(petloot)
* @inventorylist_card(0..3), @inventorylist_expire
* @inventorylist_count = scalar
*------------------------------------------*/
-BUILDIN(getinventorylist)
+static BUILDIN(getinventorylist)
{
struct map_session_data *sd = script->rid2sd(st);
- char card_var[NAME_LENGTH];
+ char card_var[SCRIPT_VARNAME_LENGTH];
- int i,j=0,k;
+ int j=0,k;
if(!sd) return true;
- for(i=0;i<MAX_INVENTORY;i++) {
+ for (int i = 0;i < sd->status.inventorySize; i++) {
if(sd->status.inventory[i].nameid > 0 && sd->status.inventory[i].amount > 0) {
- pc->setreg(sd,reference_uid(script->add_str("@inventorylist_id"), j),sd->status.inventory[i].nameid);
- pc->setreg(sd,reference_uid(script->add_str("@inventorylist_amount"), j),sd->status.inventory[i].amount);
+ pc->setreg(sd,reference_uid(script->add_variable("@inventorylist_id"), j),sd->status.inventory[i].nameid);
+ pc->setreg(sd,reference_uid(script->add_variable("@inventorylist_amount"), j),sd->status.inventory[i].amount);
if(sd->status.inventory[i].equip) {
- pc->setreg(sd,reference_uid(script->add_str("@inventorylist_equip"), j),pc->equippoint(sd,i));
+ pc->setreg(sd,reference_uid(script->add_variable("@inventorylist_equip"), j),pc->equippoint(sd,i));
} else {
- pc->setreg(sd,reference_uid(script->add_str("@inventorylist_equip"), j),0);
+ pc->setreg(sd,reference_uid(script->add_variable("@inventorylist_equip"), j),0);
}
- pc->setreg(sd,reference_uid(script->add_str("@inventorylist_refine"), j),sd->status.inventory[i].refine);
- pc->setreg(sd,reference_uid(script->add_str("@inventorylist_identify"), j),sd->status.inventory[i].identify);
- pc->setreg(sd,reference_uid(script->add_str("@inventorylist_attribute"), j),sd->status.inventory[i].attribute);
+ pc->setreg(sd,reference_uid(script->add_variable("@inventorylist_refine"), j),sd->status.inventory[i].refine);
+ pc->setreg(sd,reference_uid(script->add_variable("@inventorylist_identify"), j),sd->status.inventory[i].identify);
+ pc->setreg(sd,reference_uid(script->add_variable("@inventorylist_attribute"), j),sd->status.inventory[i].attribute);
for (k = 0; k < MAX_SLOTS; k++) {
sprintf(card_var, "@inventorylist_card%d",k+1);
- pc->setreg(sd,reference_uid(script->add_str(card_var), j),sd->status.inventory[i].card[k]);
+ pc->setreg(sd,reference_uid(script->add_variable(card_var), j),sd->status.inventory[i].card[k]);
+ }
+ for (k = 0; k < MAX_ITEM_OPTIONS; k++) {
+ sprintf(card_var, "@inventorylist_opt_id%d", k + 1);
+ pc->setreg(sd, reference_uid(script->add_variable(card_var), j), sd->status.inventory[i].option[k].index);
+ sprintf(card_var, "@inventorylist_opt_val%d", k + 1);
+ pc->setreg(sd, reference_uid(script->add_variable(card_var), j), sd->status.inventory[i].option[k].value);
+ sprintf(card_var, "@inventorylist_opt_param%d", k + 1);
+ pc->setreg(sd, reference_uid(script->add_variable(card_var), j), sd->status.inventory[i].option[k].param);
}
- pc->setreg(sd,reference_uid(script->add_str("@inventorylist_expire"), j),sd->status.inventory[i].expire_time);
- pc->setreg(sd,reference_uid(script->add_str("@inventorylist_bound"), j),sd->status.inventory[i].bound);
+ pc->setreg(sd,reference_uid(script->add_variable("@inventorylist_expire"), j),sd->status.inventory[i].expire_time);
+ pc->setreg(sd,reference_uid(script->add_variable("@inventorylist_bound"), j),sd->status.inventory[i].bound);
j++;
}
}
- pc->setreg(sd,script->add_str("@inventorylist_count"),j);
+ pc->setreg(sd,script->add_variable("@inventorylist_count"),j);
return true;
}
-BUILDIN(getcartinventorylist)
+static BUILDIN(getcartinventorylist)
{
struct map_session_data *sd = script->rid2sd(st);
- char card_var[26];
+ char card_var[SCRIPT_VARNAME_LENGTH];
int i,j=0,k;
if(!sd) return true;
for(i=0;i<MAX_CART;i++) {
if(sd->status.cart[i].nameid > 0 && sd->status.cart[i].amount > 0) {
- pc->setreg(sd,reference_uid(script->add_str("@cartinventorylist_id"), j),sd->status.cart[i].nameid);
- pc->setreg(sd,reference_uid(script->add_str("@cartinventorylist_amount"), j),sd->status.cart[i].amount);
- pc->setreg(sd,reference_uid(script->add_str("@cartinventorylist_equip"), j),sd->status.cart[i].equip);
- pc->setreg(sd,reference_uid(script->add_str("@cartinventorylist_refine"), j),sd->status.cart[i].refine);
- pc->setreg(sd,reference_uid(script->add_str("@cartinventorylist_identify"), j),sd->status.cart[i].identify);
- pc->setreg(sd,reference_uid(script->add_str("@cartinventorylist_attribute"), j),sd->status.cart[i].attribute);
+ pc->setreg(sd,reference_uid(script->add_variable("@cartinventorylist_id"), j),sd->status.cart[i].nameid);
+ pc->setreg(sd,reference_uid(script->add_variable("@cartinventorylist_amount"), j),sd->status.cart[i].amount);
+ pc->setreg(sd,reference_uid(script->add_variable("@cartinventorylist_equip"), j),sd->status.cart[i].equip);
+ pc->setreg(sd,reference_uid(script->add_variable("@cartinventorylist_refine"), j),sd->status.cart[i].refine);
+ pc->setreg(sd,reference_uid(script->add_variable("@cartinventorylist_identify"), j),sd->status.cart[i].identify);
+ pc->setreg(sd,reference_uid(script->add_variable("@cartinventorylist_attribute"), j),sd->status.cart[i].attribute);
for (k = 0; k < MAX_SLOTS; k++) {
sprintf(card_var, "@cartinventorylist_card%d",k+1);
- pc->setreg(sd,reference_uid(script->add_str(card_var), j),sd->status.cart[i].card[k]);
+ pc->setreg(sd,reference_uid(script->add_variable(card_var), j),sd->status.cart[i].card[k]);
}
- pc->setreg(sd,reference_uid(script->add_str("@cartinventorylist_expire"), j),sd->status.cart[i].expire_time);
- pc->setreg(sd,reference_uid(script->add_str("@cartinventorylist_bound"), j),sd->status.cart[i].bound);
+ for (k = 0; k < MAX_ITEM_OPTIONS; k++) {
+ sprintf(card_var, "@cartinventorylist_opt_id%d", k + 1);
+ pc->setreg(sd, reference_uid(script->add_variable(card_var), j), sd->status.cart[i].option[k].index);
+ sprintf(card_var, "@cartinventorylist_opt_val%d", k + 1);
+ pc->setreg(sd, reference_uid(script->add_variable(card_var), j), sd->status.cart[i].option[k].value);
+ sprintf(card_var, "@cartinventorylist_opt_param%d", k + 1);
+ pc->setreg(sd, reference_uid(script->add_variable(card_var), j), sd->status.cart[i].option[k].param);
+ }
+ pc->setreg(sd,reference_uid(script->add_variable("@cartinventorylist_expire"), j),sd->status.cart[i].expire_time);
+ pc->setreg(sd,reference_uid(script->add_variable("@cartinventorylist_bound"), j),sd->status.cart[i].bound);
j++;
}
}
- pc->setreg(sd,script->add_str("@cartinventorylist_count"),j);
+ pc->setreg(sd,script->add_variable("@cartinventorylist_count"),j);
return true;
}
-BUILDIN(getskilllist)
+static BUILDIN(getskilllist)
{
struct map_session_data *sd = script->rid2sd(st);
int i,j=0;
if (sd == NULL)
return true;
- for(i=0;i<MAX_SKILL;i++) {
+ for (i = 0; i < MAX_SKILL_DB; i++) {
if(sd->status.skill[i].id > 0 && sd->status.skill[i].lv > 0) {
- pc->setreg(sd,reference_uid(script->add_str("@skilllist_id"), j),sd->status.skill[i].id);
- pc->setreg(sd,reference_uid(script->add_str("@skilllist_lv"), j),sd->status.skill[i].lv);
- pc->setreg(sd,reference_uid(script->add_str("@skilllist_flag"), j),sd->status.skill[i].flag);
+ pc->setreg(sd,reference_uid(script->add_variable("@skilllist_id"), j),sd->status.skill[i].id);
+ pc->setreg(sd,reference_uid(script->add_variable("@skilllist_lv"), j),sd->status.skill[i].lv);
+ pc->setreg(sd,reference_uid(script->add_variable("@skilllist_flag"), j),sd->status.skill[i].flag);
j++;
}
}
- pc->setreg(sd,script->add_str("@skilllist_count"),j);
+ pc->setreg(sd,script->add_variable("@skilllist_count"),j);
return true;
}
-BUILDIN(clearitem)
+static BUILDIN(clearitem)
{
struct map_session_data *sd = script->rid2sd(st);
- int i;
if (sd == NULL)
return true;
- for (i=0; i<MAX_INVENTORY; i++) {
+ for (int i = 0; i < sd->status.inventorySize; i++) {
if (sd->status.inventory[i].amount) {
pc->delitem(sd, i, sd->status.inventory[i].amount, 0, DELITEM_NORMAL, LOG_TYPE_SCRIPT);
}
@@ -13907,7 +14846,7 @@ BUILDIN(clearitem)
/*==========================================
* Disguise Player (returns Mob/NPC ID if success, 0 on fail)
*------------------------------------------*/
-BUILDIN(disguise)
+static BUILDIN(disguise)
{
int id;
struct map_session_data *sd = script->rid2sd(st);
@@ -13928,7 +14867,7 @@ BUILDIN(disguise)
/*==========================================
* Undisguise Player (returns 1 if success, 0 on fail)
*------------------------------------------*/
-BUILDIN(undisguise)
+static BUILDIN(undisguise)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -13947,7 +14886,7 @@ BUILDIN(undisguise)
* Transform a bl to another class,
* @type unused
*------------------------------------------*/
-BUILDIN(classchange)
+static BUILDIN(classchange)
{
int class, type, target;
struct block_list *bl = map->id2bl(st->oid);
@@ -13973,7 +14912,7 @@ BUILDIN(classchange)
/*==========================================
* Display an effect
*------------------------------------------*/
-BUILDIN(misceffect)
+static BUILDIN(misceffect)
{
int type;
@@ -13992,7 +14931,7 @@ BUILDIN(misceffect)
/*==========================================
* Play a BGM on a single client [Rikter/Yommy]
*------------------------------------------*/
-BUILDIN(playbgm)
+static BUILDIN(playbgm)
{
struct map_session_data* sd = script->rid2sd(st);
@@ -14005,7 +14944,7 @@ BUILDIN(playbgm)
return true;
}
-int playbgm_sub(struct block_list* bl,va_list ap)
+static int playbgm_sub(struct block_list *bl, va_list ap)
{
const char* name = va_arg(ap,const char*);
@@ -14014,7 +14953,7 @@ int playbgm_sub(struct block_list* bl,va_list ap)
return 0;
}
-int playbgm_foreachpc_sub(struct map_session_data* sd, va_list args)
+static int playbgm_foreachpc_sub(struct map_session_data *sd, va_list args)
{
const char* name = va_arg(args, const char*);
@@ -14026,7 +14965,8 @@ int playbgm_foreachpc_sub(struct map_session_data* sd, va_list args)
/*==========================================
* Play a BGM on multiple client [Rikter/Yommy]
*------------------------------------------*/
-BUILDIN(playbgmall) {
+static BUILDIN(playbgmall)
+{
const char* name;
name = script_getstr(st,2);
@@ -14068,7 +15008,7 @@ BUILDIN(playbgmall) {
/*==========================================
* Play a .wav sound for sd
*------------------------------------------*/
-BUILDIN(soundeffect)
+static BUILDIN(soundeffect)
{
struct map_session_data *sd = script->rid2sd(st);
const char* name = script_getstr(st,2);
@@ -14080,7 +15020,7 @@ BUILDIN(soundeffect)
return true;
}
-int soundeffect_sub(struct block_list *bl, va_list ap)
+static int soundeffect_sub(struct block_list *bl, va_list ap)
{
struct map_session_data *sd = NULL;
char *name = va_arg(ap, char *);
@@ -14099,7 +15039,8 @@ int soundeffect_sub(struct block_list *bl, va_list ap)
* Play a sound effect (.wav) on multiple clients
* soundeffectall "<filepath>",<type>{,"<map name>"}{,<x0>,<y0>,<x1>,<y1>};
*------------------------------------------*/
-BUILDIN(soundeffectall) {
+static BUILDIN(soundeffectall)
+{
struct block_list* bl;
const char* name;
int type;
@@ -14150,7 +15091,7 @@ BUILDIN(soundeffectall) {
/*==========================================
* pet status recovery [Valaris] / Rewritten by [Skotlex]
*------------------------------------------*/
-BUILDIN(petrecovery)
+static BUILDIN(petrecovery)
{
struct pet_data *pd;
struct map_session_data *sd = script->rid2sd(st);
@@ -14179,7 +15120,7 @@ BUILDIN(petrecovery)
*------------------------------------------*/
/// petskillattack <skill id>,<level>,<div>,<rate>,<bonusrate>
/// petskillattack "<skill name>",<level>,<div>,<rate>,<bonusrate>
-BUILDIN(petskillattack)
+static BUILDIN(petskillattack)
{
struct pet_data *pd;
struct map_session_data *sd = script->rid2sd(st);
@@ -14205,7 +15146,7 @@ BUILDIN(petskillattack)
*------------------------------------------*/
/// petskillsupport <skill id>,<level>,<delay>,<hp>,<sp>
/// petskillsupport "<skill name>",<level>,<delay>,<hp>,<sp>
-BUILDIN(petskillsupport)
+static BUILDIN(petskillsupport)
{
struct pet_data *pd;
struct map_session_data *sd = script->rid2sd(st);
@@ -14244,7 +15185,7 @@ BUILDIN(petskillsupport)
*------------------------------------------*/
/// skilleffect <skill id>,<level>
/// skilleffect "<skill name>",<level>
-BUILDIN(skilleffect)
+static BUILDIN(skilleffect)
{
struct map_session_data *sd;
@@ -14272,7 +15213,8 @@ BUILDIN(skilleffect)
*------------------------------------------*/
/// npcskilleffect <skill id>,<level>,<x>,<y>
/// npcskilleffect "<skill name>",<level>,<x>,<y>
-BUILDIN(npcskilleffect) {
+static BUILDIN(npcskilleffect)
+{
struct block_list *bl= map->id2bl(st->oid);
uint16 skill_id=( script_isstringtype(st,2) ? skill->name2id(script_getstr(st,2)) : script_getnum(st,2) );
@@ -14289,26 +15231,43 @@ BUILDIN(npcskilleffect) {
/*==========================================
* Special effects [Valaris]
*------------------------------------------*/
-BUILDIN(specialeffect) {
+static BUILDIN(specialeffect)
+{
struct block_list *bl = NULL;
- int type = script_getnum(st,2);
- enum send_target target = script_hasdata(st,3) ? (send_target)script_getnum(st,3) : AREA;
+ int type = script_getnum(st, 2);
+ enum send_target target = AREA;
- if (script_hasdata(st,4)) {
- struct npc_data *nd = npc->name2id(script_getstr(st,4));
- if (nd != NULL)
- bl = &nd->bl;
+ if (script_hasdata(st, 3)) {
+ target = script_getnum(st, 3);
+ }
+
+ if (script_hasdata(st, 4)) {
+ if (script_isstringtype(st, 4)) {
+ struct npc_data *nd = npc->name2id(script_getstr(st, 4));
+ if (nd != NULL) {
+ bl = &nd->bl;
+ }
+ } else {
+ bl = map->id2bl(script_getnum(st, 4));
+ }
} else {
bl = map->id2bl(st->oid);
}
- if (bl == NULL)
+ if (bl == NULL) {
return true;
+ }
if (target == SELF) {
- struct map_session_data *sd = script->rid2sd(st);
- if (sd != NULL)
+ struct map_session_data *sd;
+ if (script_hasdata(st, 5)) {
+ sd = map->id2sd(script_getnum(st, 5));
+ } else {
+ sd = script->rid2sd(st);
+ }
+ if (sd != NULL) {
clif->specialeffect_single(bl, type, sd->fd);
+ }
} else {
clif->specialeffect(bl, type, target);
}
@@ -14316,7 +15275,8 @@ BUILDIN(specialeffect) {
return true;
}
-BUILDIN(specialeffect2) {
+static BUILDIN(specialeffect2)
+{
struct map_session_data *sd;
int type = script_getnum(st,2);
enum send_target target = script_hasdata(st,3) ? (send_target)script_getnum(st,3) : AREA;
@@ -14332,10 +15292,54 @@ BUILDIN(specialeffect2) {
return true;
}
+static BUILDIN(removespecialeffect)
+{
+ struct block_list *bl = NULL;
+ int type = script_getnum(st, 2);
+ enum send_target target = AREA;
+
+ if (script_hasdata(st, 3)) {
+ target = script_getnum(st, 3);
+ }
+
+ if (script_hasdata(st, 4)) {
+ if (script_isstringtype(st, 4)) {
+ struct npc_data *nd = npc->name2id(script_getstr(st, 4));
+ if (nd != NULL) {
+ bl = &nd->bl;
+ }
+ } else {
+ bl = map->id2bl(script_getnum(st, 4));
+ }
+ } else {
+ bl = map->id2bl(st->oid);
+ }
+
+ if (bl == NULL) {
+ return true;
+ }
+
+ if (target == SELF) {
+ struct map_session_data *sd;
+ if (script_hasdata(st, 5)) {
+ sd = map->id2sd(script_getnum(st, 5));
+ } else {
+ sd = script->rid2sd(st);
+ }
+ if (sd != NULL) {
+ clif->removeSpecialEffect_single(bl, type, &sd->bl);
+ }
+ } else {
+ clif->removeSpecialEffect(bl, type, target);
+ }
+
+ return true;
+}
+
/*==========================================
* Nude [Valaris]
*------------------------------------------*/
-BUILDIN(nude)
+static BUILDIN(nude)
{
struct map_session_data *sd = script->rid2sd(st);
int i, calcflag = 0;
@@ -14360,7 +15364,7 @@ BUILDIN(nude)
/*==========================================
* gmcommand [MouseJstr]
*------------------------------------------*/
-BUILDIN(atcommand)
+static BUILDIN(atcommand)
{
struct map_session_data *sd, *dummy_sd = NULL;
int fd;
@@ -14402,7 +15406,7 @@ BUILDIN(atcommand)
* dispbottom "<message>"{,<color>};
* @endcode
*/
-BUILDIN(dispbottom)
+static BUILDIN(dispbottom)
{
struct map_session_data *sd = script->rid2sd(st);
const char *message = script_getstr(st,2);
@@ -14424,28 +15428,68 @@ BUILDIN(dispbottom)
* All The Players Full Recovery
* (HP/SP full restore and resurrect if need)
*------------------------------------------*/
-BUILDIN(recovery)
+static int buildin_recovery_sub(struct map_session_data *sd)
{
- struct map_session_data *sd;
- struct s_mapiterator* iter;
+ nullpo_retr(0, sd);
- iter = mapit_getallusers();
- for (sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); sd = BL_UCAST(BL_PC, mapit->next(iter))) {
- if(pc_isdead(sd))
- status->revive(&sd->bl, 100, 100);
- else
- status_percent_heal(&sd->bl, 100, 100);
- clif->message(sd->fd,msg_sd(sd,880)); // "You have been recovered!"
+ if (pc_isdead(sd)) {
+ status->revive(&sd->bl, 100, 100);
+ } else {
+ status_percent_heal(&sd->bl, 100, 100);
+ }
+
+ return 0;
+}
+
+static int buildin_recovery_pc_sub(struct map_session_data *sd, va_list ap)
+{
+ return script->buildin_recovery_sub(sd);
+}
+
+static int buildin_recovery_bl_sub(struct block_list *bl, va_list ap)
+{
+ return script->buildin_recovery_sub(BL_CAST(BL_PC, bl));
+}
+
+static BUILDIN(recovery)
+{
+ if (script_hasdata(st, 2)) {
+ if (script_isstringtype(st, 2)) {
+ int16 m = map->mapname2mapid(script_getstr(st, 2));
+
+ if (m == -1) {
+ ShowWarning("script:recovery: invalid map!\n");
+ return false;
+ }
+
+ if (script_hasdata(st, 6)) {
+ int16 x1 = script_getnum(st, 3);
+ int16 y1 = script_getnum(st, 4);
+ int16 x2 = script_getnum(st, 5);
+ int16 y2 = script_getnum(st, 6);
+ map->foreachinarea(script->buildin_recovery_bl_sub, m, x1, y1, x2, y2, BL_PC);
+ } else {
+ map->foreachinmap(script->buildin_recovery_bl_sub, m, BL_PC);
+ }
+ } else {
+ struct map_session_data *sd = script->id2sd(st, script_getnum(st, 2));
+
+ if (sd != NULL) {
+ script->buildin_recovery_sub(sd);
+ }
+ }
+ } else {
+ map->foreachpc(script->buildin_recovery_pc_sub);
}
- mapit->free(iter);
return true;
}
+
/*==========================================
* Get your pet info: getpetinfo(n)
* n -> 0:pet_id 1:pet_class 2:pet_name
* 3:friendly 4:hungry, 5: rename flag.
*------------------------------------------*/
-BUILDIN(getpetinfo)
+static BUILDIN(getpetinfo)
{
struct map_session_data *sd = script->rid2sd(st);
struct pet_data *pd;
@@ -14479,7 +15523,7 @@ BUILDIN(getpetinfo)
* 3:friendly 4:hungry, 5: rename flag.
* 6: level
*------------------------------------------*/
-BUILDIN(gethominfo)
+static BUILDIN(gethominfo)
{
struct map_session_data *sd = script->rid2sd(st);
int type = script_getnum(st,2);
@@ -14509,7 +15553,7 @@ BUILDIN(gethominfo)
/// Retrieves information about character's mercenary
/// getmercinfo <type>[,<char id>];
-BUILDIN(getmercinfo)
+static BUILDIN(getmercinfo)
{
int type;
struct map_session_data* sd;
@@ -14560,21 +15604,20 @@ BUILDIN(getmercinfo)
* selected card or not.
* checkequipedcard(4001);
*------------------------------------------*/
-BUILDIN(checkequipedcard)
+static BUILDIN(checkequipedcard)
{
- int n,i,c=0;
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
return true;
- c = script_getnum(st,2);
+ int c = script_getnum(st,2);
- for( i=0; i<MAX_INVENTORY; i++) {
+ for (int i = 0; i < sd->status.inventorySize; i++) {
if(sd->status.inventory[i].nameid > 0 && sd->status.inventory[i].amount && sd->inventory_data[i]) {
if (itemdb_isspecial(sd->status.inventory[i].card[0]))
continue;
- for(n=0;n<sd->inventory_data[i]->slot;n++) {
+ for (int n = 0; n < sd->inventory_data[i]->slot; n++) {
if(sd->status.inventory[i].card[n]==c) {
script_pushint(st,1);
return true;
@@ -14587,7 +15630,7 @@ BUILDIN(checkequipedcard)
return true;
}
-BUILDIN(__jump_zero)
+static BUILDIN(__jump_zero)
{
int sel;
sel=script_getnum(st,2);
@@ -14609,7 +15652,7 @@ BUILDIN(__jump_zero)
/*==========================================
* movenpc [MouseJstr]
*------------------------------------------*/
-BUILDIN(movenpc)
+static BUILDIN(movenpc)
{
struct npc_data *nd = NULL;
const char *npc_name;
@@ -14631,7 +15674,7 @@ BUILDIN(movenpc)
/*==========================================
* message [MouseJstr]
*------------------------------------------*/
-BUILDIN(message)
+static BUILDIN(message)
{
const char *message;
struct map_session_data *sd = NULL;
@@ -14650,14 +15693,38 @@ BUILDIN(message)
return true;
}
+static BUILDIN(servicemessage)
+{
+ struct map_session_data *sd = NULL;
+
+ if (script_hasdata(st, 4)) {
+ if (script_isstringtype(st, 4))
+ sd = script->nick2sd(st, script_getstr(st, 4));
+ else
+ sd = script->id2sd(st, script_getnum(st, 4));
+ } else {
+ sd = script->rid2sd(st);
+ }
+
+ if (sd == NULL)
+ return true;
+
+ const char *message = script_getstr(st, 2);
+ const int color = script_getnum(st, 3);
+ clif->serviceMessageColor(sd, color, message);
+
+ return true;
+}
+
/*==========================================
* npctalk (sends message to surrounding area)
- * usage: npctalk "<message>"{,"<npc name>"};
+ * usage: npctalk("<message>"{, "<npc name>"{, <show_name>}});
*------------------------------------------*/
-BUILDIN(npctalk)
+static BUILDIN(npctalk)
{
struct npc_data* nd;
const char *str = script_getstr(st,2);
+ bool show_name = true;
if (script_hasdata(st, 3)) {
nd = npc->name2id(script_getstr(st, 3));
@@ -14665,19 +15732,28 @@ BUILDIN(npctalk)
nd = map->id2nd(st->oid);
}
+ if (script_hasdata(st, 4)) {
+ show_name = (script_getnum(st, 4) != 0) ? true : false;
+ }
+
if (nd != NULL) {
char name[NAME_LENGTH], message[256];
safestrncpy(name, nd->name, sizeof(name));
strtok(name, "#"); // discard extra name identifier if present
- safesnprintf(message, sizeof(message), "%s : %s", name, str);
- clif->disp_overhead(&nd->bl, message);
+ if (show_name) {
+ safesnprintf(message, sizeof(message), "%s : %s", name, str);
+ } else {
+ safesnprintf(message, sizeof(message), "%s", str);
+ }
+ clif->disp_overhead(&nd->bl, message, AREA_CHAT_WOC, NULL);
}
return true;
}
// change npc walkspeed [Valaris]
-BUILDIN(npcspeed) {
+static BUILDIN(npcspeed)
+{
struct npc_data* nd;
int speed;
@@ -14693,7 +15769,7 @@ BUILDIN(npcspeed) {
return true;
}
// make an npc walk to a position [Valaris]
-BUILDIN(npcwalkto)
+static BUILDIN(npcwalkto)
{
struct npc_data *nd = map->id2nd(st->oid);
int x=0,y=0;
@@ -14714,7 +15790,7 @@ BUILDIN(npcwalkto)
return true;
}
// stop an npc's movement [Valaris]
-BUILDIN(npcstop)
+static BUILDIN(npcstop)
{
struct npc_data *nd = map->id2nd(st->oid);
@@ -14727,7 +15803,7 @@ BUILDIN(npcstop)
}
// set click npc distance [4144]
-BUILDIN(setnpcdistance)
+static BUILDIN(setnpcdistance)
{
struct npc_data *nd = map->id2nd(st->oid);
if (nd == NULL)
@@ -14739,7 +15815,7 @@ BUILDIN(setnpcdistance)
}
// return current npc direction [4144]
-BUILDIN(getnpcdir)
+static BUILDIN(getnpcdir)
{
const struct npc_data *nd = NULL;
@@ -14765,7 +15841,7 @@ BUILDIN(getnpcdir)
}
// set npc direction [4144]
-BUILDIN(setnpcdir)
+static BUILDIN(setnpcdir)
{
int newdir;
struct npc_data *nd = NULL;
@@ -14799,7 +15875,7 @@ BUILDIN(setnpcdir)
}
// return npc class [4144]
-BUILDIN(getnpcclass)
+static BUILDIN(getnpcclass)
{
const struct npc_data *nd = NULL;
@@ -14827,7 +15903,7 @@ BUILDIN(getnpcclass)
/*==========================================
* getlook char info. getlook(arg)
*------------------------------------------*/
-BUILDIN(getlook)
+static BUILDIN(getlook)
{
int type,val = -1;
struct map_session_data *sd = script->rid2sd(st);
@@ -14837,15 +15913,15 @@ BUILDIN(getlook)
type=script_getnum(st,2);
switch(type) {
case LOOK_HAIR: val = sd->status.hair; break; //1
- case LOOK_WEAPON: val = sd->status.weapon; break; //2
- case LOOK_HEAD_BOTTOM: val = sd->status.head_bottom; break; //3
- case LOOK_HEAD_TOP: val = sd->status.head_top; break; //4
- case LOOK_HEAD_MID: val = sd->status.head_mid; break; //5
+ case LOOK_WEAPON: val = sd->status.look.weapon; break; //2
+ case LOOK_HEAD_BOTTOM: val = sd->status.look.head_bottom; break; //3
+ case LOOK_HEAD_TOP: val = sd->status.look.head_top; break; //4
+ case LOOK_HEAD_MID: val = sd->status.look.head_mid; break; //5
case LOOK_HAIR_COLOR: val = sd->status.hair_color; break; //6
case LOOK_CLOTHES_COLOR: val = sd->status.clothes_color; break; //7
- case LOOK_SHIELD: val = sd->status.shield; break; //8
+ case LOOK_SHIELD: val = sd->status.look.shield; break; //8
case LOOK_SHOES: break; //9
- case LOOK_ROBE: val = sd->status.robe; break; //12
+ case LOOK_ROBE: val = sd->status.look.robe; break; //12
case LOOK_BODY2: val=sd->status.body; break; //13
}
@@ -14856,7 +15932,7 @@ BUILDIN(getlook)
/*==========================================
* get char save point. argument: 0- map name, 1- x, 2- y
*------------------------------------------*/
-BUILDIN(getsavepoint)
+static BUILDIN(getsavepoint)
{
int type;
struct map_session_data *sd = script->rid2sd(st);
@@ -14899,7 +15975,7 @@ BUILDIN(getsavepoint)
* 0 - success
* -1 - some error, MapName$,MapX,MapY contains unknown value.
*------------------------------------------*/
-BUILDIN(getmapxy)
+static BUILDIN(getmapxy)
{
struct block_list *bl = NULL;
struct map_session_data *sd = NULL;
@@ -15095,23 +16171,42 @@ BUILDIN(getmapxy)
return true;
}
+enum logmes_type {
+ LOGMES_NPC,
+ LOGMES_ATCOMMAND
+};
+
/*==========================================
- * Allows player to write NPC logs (i.e. Bank NPC, etc) [Lupus]
+ * Allows player to write logs (i.e. Bank NPC, etc) [Lupus]
*------------------------------------------*/
-BUILDIN(logmes)
+static BUILDIN(logmes)
{
- const char *str;
+ const char *str = script_getstr(st, 2);
struct map_session_data *sd = script->rid2sd(st);
+ enum logmes_type type = LOGMES_NPC;
+ nullpo_retr(false, sd);
- if (sd == NULL)
- return true;
+ if (script_hasdata(st, 3)) {
+ type = script_getnum(st, 3);
+ }
+
+ switch (type) {
+ case LOGMES_ATCOMMAND:
+ logs->atcommand(sd, str);
+ break;
+ case LOGMES_NPC:
+ logs->npc(sd, str);
+ break;
+ default:
+ ShowError("script:logmes: Unknown log type!\n");
+ st->state = END;
+ return false;
+ }
- str = script_getstr(st,2);
- logs->npc(sd,str);
return true;
}
-BUILDIN(summon)
+static BUILDIN(summon)
{
int class_, timeout=0;
const char *str,*event="";
@@ -15149,7 +16244,8 @@ BUILDIN(summon)
/*==========================================
* Checks whether it is daytime/nighttime
*------------------------------------------*/
-BUILDIN(isnight) {
+static BUILDIN(isnight)
+{
script_pushint(st,(map->night_flag == 1));
return true;
}
@@ -15158,7 +16254,7 @@ BUILDIN(isnight) {
* Check how many items/cards in the list are
* equipped - used for 2/15's cards patch [celest]
*------------------------------------------------*/
-BUILDIN(isequippedcnt)
+static BUILDIN(isequippedcnt)
{
int i, j, k, id = 1;
int ret = 0;
@@ -15207,7 +16303,7 @@ BUILDIN(isequippedcnt)
* -- Items checked cannot be reused in another
* card set to prevent exploits
*------------------------------------------------*/
-BUILDIN(isequipped)
+static BUILDIN(isequipped)
{
int i, j, k, id = 1;
int index, flag;
@@ -15287,7 +16383,7 @@ BUILDIN(isequipped)
* Check how many given inserted cards in the CURRENT
* weapon - used for 2/15's cards patch [Lupus]
*------------------------------------------------*/
-BUILDIN(cardscnt)
+static BUILDIN(cardscnt)
{
int i, k, id = 1;
int ret = 0;
@@ -15329,7 +16425,7 @@ BUILDIN(cardscnt)
* Returns the refined number of the current item, or an
* item with inventory index specified
*-------------------------------------------------------*/
-BUILDIN(getrefine)
+static BUILDIN(getrefine)
{
struct map_session_data *sd = script->rid2sd(st);
@@ -15346,11 +16442,13 @@ BUILDIN(getrefine)
/*=======================================================
* Day/Night controls
*-------------------------------------------------------*/
-BUILDIN(night) {
+static BUILDIN(night)
+{
if (map->night_flag != 1) pc->map_night_timer(pc->night_timer_tid, 0, 0, 1);
return true;
}
-BUILDIN(day) {
+static BUILDIN(day)
+{
if (map->night_flag != 0) pc->map_day_timer(pc->day_timer_tid, 0, 0, 1);
return true;
}
@@ -15358,7 +16456,7 @@ BUILDIN(day) {
//=======================================================
// Unequip [Spectre]
//-------------------------------------------------------
-BUILDIN(unequip)
+static BUILDIN(unequip)
{
size_t num;
struct map_session_data *sd;
@@ -15373,7 +16471,7 @@ BUILDIN(unequip)
return true;
}
-BUILDIN(equip)
+static BUILDIN(equip)
{
int nameid=0,i;
struct item_data *item_data;
@@ -15384,17 +16482,17 @@ BUILDIN(equip)
nameid=script_getnum(st,2);
if((item_data = itemdb->exists(nameid)) == NULL)
{
- ShowError("wrong item ID : equipitem(%i)\n",nameid);
+ ShowError("wrong item ID : equipitem(%d)\n",nameid);
return false;
}
- ARR_FIND( 0, MAX_INVENTORY, i, sd->status.inventory[i].nameid == nameid && sd->status.inventory[i].equip == 0 );
- if( i < MAX_INVENTORY )
- pc->equipitem(sd,i,item_data->equip);
+ ARR_FIND(0, sd->status.inventorySize, i, sd->status.inventory[i].nameid == nameid && sd->status.inventory[i].equip == 0);
+ if (i < sd->status.inventorySize)
+ pc->equipitem(sd, i, item_data->equip);
return true;
}
-BUILDIN(autoequip)
+static BUILDIN(autoequip)
{
int nameid, flag;
struct item_data *item_data;
@@ -15421,7 +16519,7 @@ BUILDIN(autoequip)
* Equip2
* equip2 <item id>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>;
*-------------------------------------------------------*/
-BUILDIN(equip2)
+static BUILDIN(equip2)
{
int i,nameid,ref,attr,c0,c1,c2,c3;
struct item_data *item_data;
@@ -15440,33 +16538,33 @@ BUILDIN(equip2)
return false;
}
- ref = script_getnum(st,3);
- attr = script_getnum(st,4);
- c0 = (short)script_getnum(st,5);
- c1 = (short)script_getnum(st,6);
- c2 = (short)script_getnum(st,7);
- c3 = (short)script_getnum(st,8);
+ ref = script_getnum(st, 3);
+ attr = script_getnum(st, 4);
+ c0 = script_getnum(st, 5);
+ c1 = script_getnum(st, 6);
+ c2 = script_getnum(st, 7);
+ c3 = script_getnum(st, 8);
- ARR_FIND( 0, MAX_INVENTORY, i,( sd->status.inventory[i].equip == 0 &&
+ ARR_FIND(0, sd->status.inventorySize, i, (sd->status.inventory[i].equip == 0 &&
sd->status.inventory[i].nameid == nameid &&
sd->status.inventory[i].refine == ref &&
sd->status.inventory[i].attribute == attr &&
sd->status.inventory[i].card[0] == c0 &&
sd->status.inventory[i].card[1] == c1 &&
sd->status.inventory[i].card[2] == c2 &&
- sd->status.inventory[i].card[3] == c3 ) );
+ sd->status.inventory[i].card[3] == c3));
- if( i < MAX_INVENTORY ) {
+ if (i < sd->status.inventorySize) {
script_pushint(st,1);
pc->equipitem(sd,i,item_data->equip);
- }
- else
+ } else {
script_pushint(st,0);
+ }
return true;
}
-BUILDIN(setbattleflag)
+static BUILDIN(setbattleflag)
{
const char *flag, *value;
@@ -15481,7 +16579,7 @@ BUILDIN(setbattleflag)
return true;
}
-BUILDIN(getbattleflag)
+static BUILDIN(getbattleflag)
{
const char *flag;
int value;
@@ -15503,7 +16601,7 @@ BUILDIN(getbattleflag)
//=======================================================
// strlen [Valaris]
//-------------------------------------------------------
-BUILDIN(getstrlen)
+static BUILDIN(getstrlen)
{
const char *str = script_getstr(st,2);
@@ -15516,7 +16614,7 @@ BUILDIN(getstrlen)
//=======================================================
// isalpha [Valaris]
//-------------------------------------------------------
-BUILDIN(charisalpha)
+static BUILDIN(charisalpha)
{
const char *str=script_getstr(st,2);
int pos=script_getnum(st,3);
@@ -15530,7 +16628,7 @@ BUILDIN(charisalpha)
//=======================================================
// charisupper <str>, <index>
//-------------------------------------------------------
-BUILDIN(charisupper)
+static BUILDIN(charisupper)
{
const char *str = script_getstr(st,2);
int pos = script_getnum(st,3);
@@ -15544,7 +16642,7 @@ BUILDIN(charisupper)
//=======================================================
// charislower <str>, <index>
//-------------------------------------------------------
-BUILDIN(charislower)
+static BUILDIN(charislower)
{
const char *str = script_getstr(st,2);
int pos = script_getnum(st,3);
@@ -15558,7 +16656,8 @@ BUILDIN(charislower)
//=======================================================
// charat <str>, <index>
//-------------------------------------------------------
-BUILDIN(charat) {
+static BUILDIN(charat)
+{
const char *str = script_getstr(st,2);
int pos = script_getnum(st,3);
@@ -15573,9 +16672,141 @@ BUILDIN(charat) {
}
//=======================================================
+// isstr <argument>
+//
+// returns type:
+// 0 - int
+// 1 - string
+// 2 - other
+//-------------------------------------------------------
+static BUILDIN(isstr)
+{
+ if (script_isinttype(st, 2)) {
+ script_pushint(st, 0);
+ } else if (script_isstringtype(st, 2)) {
+ script_pushint(st, 1);
+ } else {
+ script_pushint(st, 2);
+ }
+ return true;
+}
+
+enum datatype {
+ DATATYPE_NIL = 1 << 7, // we don't start at 1, to leave room for primitives
+ DATATYPE_STR = 1 << 8,
+ DATATYPE_INT = 1 << 9,
+ DATATYPE_CONST = 1 << 10,
+ DATATYPE_PARAM = 1 << 11,
+ DATATYPE_VAR = 1 << 12,
+ DATATYPE_LABEL = 1 << 13,
+};
+
+static BUILDIN(getdatatype)
+{
+ int type;
+
+ if (script_hasdata(st, 2)) {
+ struct script_data *data = script_getdata(st, 2);
+
+ if (data_isstring(data)) {
+ type = DATATYPE_STR;
+ if (data->type == C_CONSTSTR) {
+ type |= DATATYPE_CONST;
+ }
+ } else if (data_isint(data)) {
+ type = DATATYPE_INT;
+ } else if (data_islabel(data)) {
+ type = DATATYPE_LABEL;
+ } else if (data_isreference(data)) {
+ if (reference_toconstant(data)) {
+ type = DATATYPE_CONST | DATATYPE_INT;
+ } else if (reference_toparam(data)) {
+ type = DATATYPE_PARAM | DATATYPE_INT;
+ } else if (reference_tovariable(data)) {
+ type = DATATYPE_VAR;
+ if (is_string_variable(reference_getname(data))) {
+ type |= DATATYPE_STR;
+ } else {
+ type |= DATATYPE_INT;
+ }
+ } else {
+ ShowError("script:getdatatype: Unknown reference type!\n");
+ script->reportdata(data);
+ st->state = END;
+ return false;
+ }
+ } else {
+ type = data->type; // fallback to primitive type if unknown
+ }
+ } else {
+ type = DATATYPE_NIL; // nothing was passed
+ }
+
+ script_pushint(st, type);
+ return true;
+}
+
+static BUILDIN(data_to_string)
+{
+ if (script_hasdata(st, 2)) {
+ struct script_data *data = script_getdata(st, 2);
+
+ if (data_isstring(data)) {
+ script_pushcopy(st, 2);
+ } else if (data_isint(data)) {
+ char *str = NULL;
+
+ CREATE(str, char, 20);
+ safesnprintf(str, 20, "%"PRId64"", data->u.num);
+ script_pushstr(st, str);
+ } else if (data_islabel(data)) {
+ const char *str = "";
+
+ // XXX: because all we have is the label pos we can't be sure which
+ // one is the correct label if more than one has the same pos.
+ // We might want to store both the pos and str_data index in
+ // data->u.num, similar to how C_NAME stores both the array
+ // index and str_data index in u.num with bitmasking. This
+ // would also avoid the awkward for() loops as we could
+ // directly access the string with script->get_str().
+
+ if (st->oid) {
+ struct npc_data *nd = map->id2nd(st->oid);
+
+ for (int i = 0; i < nd->u.scr.label_list_num; ++i) {
+ if (nd->u.scr.label_list[i].pos == data->u.num) {
+ str = nd->u.scr.label_list[i].name;
+ break;
+ }
+ }
+ } else {
+ for (int i = LABEL_START; script->str_data[i].next != 0; i = script->str_data[i].next) {
+ if (script->str_data[i].label == data->u.num) {
+ str = script->get_str(i);
+ break;
+ }
+ }
+ }
+
+ script_pushconststr(st, str);
+ } else if (data_isreference(data)) {
+ script_pushstrcopy(st, reference_getname(data));
+ } else {
+ ShowWarning("script:data_to_string: unknown data type!\n");
+ script->reportdata(data);
+ script_pushconststr(st, "");
+ }
+ } else {
+ script_pushconststr(st, ""); // NIL
+ }
+
+ return true;
+}
+
+//=======================================================
// chr <int>
//-------------------------------------------------------
-BUILDIN(chr)
+static BUILDIN(chr)
{
char output[2];
output[0] = script_getnum(st, 2);
@@ -15588,7 +16819,7 @@ BUILDIN(chr)
//=======================================================
// ord <chr>
//-------------------------------------------------------
-BUILDIN(ord)
+static BUILDIN(ord)
{
const char *chr = script_getstr(st, 2);
script_pushint(st, *chr);
@@ -15598,7 +16829,7 @@ BUILDIN(ord)
//=======================================================
// setchar <string>, <char>, <index>
//-------------------------------------------------------
-BUILDIN(setchar)
+static BUILDIN(setchar)
{
const char *str = script_getstr(st,2);
const char *c = script_getstr(st,3);
@@ -15615,7 +16846,7 @@ BUILDIN(setchar)
//=======================================================
// insertchar <string>, <char>, <index>
//-------------------------------------------------------
-BUILDIN(insertchar)
+static BUILDIN(insertchar)
{
const char *str = script_getstr(st,2);
const char *c = script_getstr(st,3);
@@ -15642,7 +16873,7 @@ BUILDIN(insertchar)
//=======================================================
// delchar <string>, <index>
//-------------------------------------------------------
-BUILDIN(delchar)
+static BUILDIN(delchar)
{
const char *str = script_getstr(st,2);
int index = script_getnum(st,3);
@@ -15668,7 +16899,7 @@ BUILDIN(delchar)
//=======================================================
// strtoupper <str>
//-------------------------------------------------------
-BUILDIN(strtoupper)
+static BUILDIN(strtoupper)
{
const char *str = script_getstr(st,2);
char *output = aStrdup(str);
@@ -15686,7 +16917,7 @@ BUILDIN(strtoupper)
//=======================================================
// strtolower <str>
//-------------------------------------------------------
-BUILDIN(strtolower)
+static BUILDIN(strtolower)
{
const char *str = script_getstr(st,2);
char *output = aStrdup(str);
@@ -15704,7 +16935,7 @@ BUILDIN(strtolower)
//=======================================================
// substr <str>, <start>, <end>
//-------------------------------------------------------
-BUILDIN(substr)
+static BUILDIN(substr)
{
const char *str = script_getstr(st,2);
char *output;
@@ -15730,7 +16961,7 @@ BUILDIN(substr)
// explode <dest_string_array>, <str>, <delimiter>
// Note: delimiter is limited to 1 char
//-------------------------------------------------------
-BUILDIN(explode)
+static BUILDIN(explode)
{
struct script_data* data = script_getdata(st, 2);
const char *str = script_getstr(st,3);
@@ -15795,7 +17026,7 @@ BUILDIN(explode)
// implode <string_array>
// implode <string_array>, <glue>
//-------------------------------------------------------
-BUILDIN(implode)
+static BUILDIN(implode)
{
struct script_data* data = script_getdata(st, 2);
const char *name;
@@ -15887,12 +17118,12 @@ BUILDIN(implode)
// Implements C sprintf, except format %n. The resulting string is
// returned, instead of being saved in variable by reference.
//-------------------------------------------------------
-BUILDIN(sprintf)
+static BUILDIN(sprintf)
{
struct StringBuf buf;
StrBuf->Init(&buf);
- if (!script_sprintf(st, 2, &buf)) {
+ if (!script->sprintf_helper(st, 2, &buf)) {
StrBuf->Destroy(&buf);
script_pushconststr(st, "");
return false;
@@ -15908,7 +17139,8 @@ BUILDIN(sprintf)
// sscanf(<str>, <format>, ...);
// Implements C sscanf.
//-------------------------------------------------------
-BUILDIN(sscanf) {
+static BUILDIN(sscanf)
+{
unsigned int argc, arg = 0;
struct script_data* data;
struct map_session_data* sd = NULL;
@@ -16021,7 +17253,8 @@ BUILDIN(sscanf) {
// Implements PHP style strpos. Adapted from code from
// http://www.daniweb.com/code/snippet313.html, Dave Sinkula
//-------------------------------------------------------
-BUILDIN(strpos) {
+static BUILDIN(strpos)
+{
const char *haystack = script_getstr(st,2);
const char *needle = script_getstr(st,3);
int i;
@@ -16065,7 +17298,7 @@ BUILDIN(strpos) {
// instances as specified in <count>. By default will be case
// sensitive.
//---------------------------------------------------------------
-BUILDIN(replacestr)
+static BUILDIN(replacestr)
{
const char *input = script_getstr(st, 2);
const char *find = script_getstr(st, 3);
@@ -16148,7 +17381,7 @@ BUILDIN(replacestr)
// Note: Counts the number of times <search> occurs in
// <input>. By default will be case sensitive.
//--------------------------------------------------------
-BUILDIN(countstr)
+static BUILDIN(countstr)
{
const char *input = script_getstr(st, 2);
const char *find = script_getstr(st, 3);
@@ -16205,7 +17438,8 @@ BUILDIN(countstr)
/// setnpcdisplay("<npc name>", "<new display name>", <new class id>) -> <int>
/// setnpcdisplay("<npc name>", "<new display name>") -> <int>
/// setnpcdisplay("<npc name>", <new class id>) -> <int>
-BUILDIN(setnpcdisplay) {
+static BUILDIN(setnpcdisplay)
+{
const char* name;
const char* newname = NULL;
int class_ = -1, size = -1;
@@ -16251,14 +17485,16 @@ BUILDIN(setnpcdisplay) {
return true;
}
-BUILDIN(atoi) {
+static BUILDIN(atoi)
+{
const char *value;
value = script_getstr(st,2);
script_pushint(st,atoi(value));
return true;
}
-BUILDIN(axtoi) {
+static BUILDIN(axtoi)
+{
const char *hex = script_getstr(st,2);
long value = strtol(hex, NULL, 16);
#if LONG_MAX > INT_MAX || LONG_MIN < INT_MIN
@@ -16268,7 +17504,8 @@ BUILDIN(axtoi) {
return true;
}
-BUILDIN(strtol) {
+static BUILDIN(strtol)
+{
const char *string = script_getstr(st, 2);
int base = script_getnum(st, 3);
long value = strtol(string, NULL, base);
@@ -16280,7 +17517,7 @@ BUILDIN(strtol) {
}
// case-insensitive substring search [lordalfa]
-BUILDIN(compare)
+static BUILDIN(compare)
{
const char *message;
const char *cmpstring;
@@ -16290,7 +17527,7 @@ BUILDIN(compare)
return true;
}
-BUILDIN(strcmp)
+static BUILDIN(strcmp)
{
const char *str1 = script_getstr(st,2);
const char *str2 = script_getstr(st,3);
@@ -16300,7 +17537,7 @@ BUILDIN(strcmp)
// List of mathematics commands --->
-BUILDIN(log10)
+static BUILDIN(log10)
{
double i, a;
i = script_getnum(st,2);
@@ -16309,7 +17546,7 @@ BUILDIN(log10)
return true;
}
-BUILDIN(sqrt) //[zBuffer]
+static BUILDIN(sqrt) //[zBuffer]
{
double i, a;
i = script_getnum(st,2);
@@ -16322,7 +17559,7 @@ BUILDIN(sqrt) //[zBuffer]
return true;
}
-BUILDIN(pow) //[zBuffer]
+static BUILDIN(pow) //[zBuffer]
{
double i, a, b;
a = script_getnum(st,2);
@@ -16332,7 +17569,7 @@ BUILDIN(pow) //[zBuffer]
return true;
}
-BUILDIN(distance) //[zBuffer]
+static BUILDIN(distance) //[zBuffer]
{
int x0, y0, x1, y1;
@@ -16347,7 +17584,7 @@ BUILDIN(distance) //[zBuffer]
// <--- List of mathematics commands
-BUILDIN(min)
+static BUILDIN(min)
{
int i, min;
@@ -16362,7 +17599,7 @@ BUILDIN(min)
return true;
}
-BUILDIN(max)
+static BUILDIN(max)
{
int i, max;
@@ -16377,7 +17614,7 @@ BUILDIN(max)
return true;
}
-BUILDIN(md5)
+static BUILDIN(md5)
{
const char *tmpstr;
char *md5str;
@@ -16389,10 +17626,11 @@ BUILDIN(md5)
return true;
}
-BUILDIN(swap)
+static BUILDIN(swap)
{
struct map_session_data *sd = NULL;
struct script_data *data1, *data2;
+ struct reg_db *ref1, *ref2;
const char *varname1, *varname2;
int64 uid1, uid2;
@@ -16433,6 +17671,8 @@ BUILDIN(swap)
uid1 = reference_getuid(data1);
uid2 = reference_getuid(data2);
+ ref1 = reference_getref(data1);
+ ref2 = reference_getref(data2);
if (is_string_variable(varname1)) {
const char *value1, *value2;
@@ -16441,8 +17681,8 @@ BUILDIN(swap)
value2 = script_getstr(st,3);
if (strcmpi(value1, value2)) {
- script->set_reg(st, sd, uid1, varname1, value2, script_getref(st,3));
- script->set_reg(st, sd, uid2, varname2, value1, script_getref(st,2));
+ script->set_reg(st, sd, uid1, varname1, value2, ref1);
+ script->set_reg(st, sd, uid2, varname2, value1, ref2);
}
}
else {
@@ -16452,8 +17692,8 @@ BUILDIN(swap)
value2 = script_getnum(st,3);
if (value1 != value2) {
- script->set_reg(st, sd, uid1, varname1, (const void *)h64BPTRSIZE(value2), script_getref(st,3));
- script->set_reg(st, sd, uid2, varname2, (const void *)h64BPTRSIZE(value1), script_getref(st,2));
+ script->set_reg(st, sd, uid1, varname1, (const void *)h64BPTRSIZE(value2), ref1);
+ script->set_reg(st, sd, uid2, varname2, (const void *)h64BPTRSIZE(value1), ref2);
}
}
return true;
@@ -16461,7 +17701,7 @@ BUILDIN(swap)
// [zBuffer] List of dynamic var commands --->
-BUILDIN(setd)
+static BUILDIN(setd)
{
struct map_session_data *sd = NULL;
char varname[100];
@@ -16491,7 +17731,7 @@ BUILDIN(setd)
return true;
}
-int buildin_query_sql_sub(struct script_state *st, struct Sql *handle)
+static int buildin_query_sql_sub(struct script_state *st, struct Sql *handle)
{
int i, j;
struct map_session_data *sd = NULL;
@@ -16573,11 +17813,13 @@ int buildin_query_sql_sub(struct script_state *st, struct Sql *handle)
return true;
}
-BUILDIN(query_sql) {
+static BUILDIN(query_sql)
+{
return script->buildin_query_sql_sub(st, map->mysql_handle);
}
-BUILDIN(query_logsql) {
+static BUILDIN(query_logsql)
+{
if( !logs->config.sql_logs ) {// logs->mysql_handle == NULL
ShowWarning("buildin_query_logsql: SQL logs are disabled, query '%s' will not be executed.\n", script_getstr(st,2));
script_pushint(st,-1);
@@ -16587,7 +17829,7 @@ BUILDIN(query_logsql) {
}
//Allows escaping of a given string.
-BUILDIN(escape_sql)
+static BUILDIN(escape_sql)
{
const char *str;
char *esc_str;
@@ -16601,25 +17843,37 @@ BUILDIN(escape_sql)
return true;
}
-BUILDIN(getd) {
+static BUILDIN(getd)
+{
char varname[100];
const char *buffer;
int elem;
+ int id;
buffer = script_getstr(st, 2);
if (sscanf(buffer, "%99[^[][%d]", varname, &elem) < 2)
elem = 0;
+ id = script->add_variable(varname);
+
+ if (script->str_data[id].type != C_NAME && // variable
+ script->str_data[id].type != C_PARAM && // param
+ script->str_data[id].type != C_INT) { // constant
+ ShowError("script:getd: `%s` is already used by something that is not a variable.\n", varname);
+ st->state = END;
+ return false;
+ }
+
// Push the 'pointer' so it's more flexible [Lance]
- script->push_val(st->stack, C_NAME, reference_uid(script->add_str(varname), elem),NULL);
+ script->push_val(st->stack, C_NAME, reference_uid(id, elem),NULL);
return true;
}
// <--- [zBuffer] List of dynamic var commands
// Pet stat [Lance]
-BUILDIN(petstat)
+static BUILDIN(petstat)
{
struct pet_data *pd;
int flag = script_getnum(st,2);
@@ -16645,7 +17899,7 @@ BUILDIN(petstat)
return true;
}
-BUILDIN(callshop)
+static BUILDIN(callshop)
{
struct npc_data *nd;
const char *shopname;
@@ -16685,7 +17939,7 @@ BUILDIN(callshop)
return true;
}
-BUILDIN(npcshopitem)
+static BUILDIN(npcshopitem)
{
const char* npcname = script_getstr(st, 2);
struct npc_data* nd = npc->name2id(npcname);
@@ -16714,7 +17968,7 @@ BUILDIN(npcshopitem)
return true;
}
-BUILDIN(npcshopadditem)
+static BUILDIN(npcshopadditem)
{
const char* npcname = script_getstr(st,2);
struct npc_data* nd = npc->name2id(npcname);
@@ -16743,7 +17997,7 @@ BUILDIN(npcshopadditem)
return true;
}
-BUILDIN(npcshopdelitem)
+static BUILDIN(npcshopdelitem)
{
const char* npcname = script_getstr(st,2);
struct npc_data* nd = npc->name2id(npcname);
@@ -16779,7 +18033,8 @@ BUILDIN(npcshopdelitem)
}
//Sets a script to attach to a shop npc.
-BUILDIN(npcshopattach) {
+static BUILDIN(npcshopattach)
+{
const char* npcname = script_getstr(st,2);
struct npc_data* nd = npc->name2id(npcname);
int flag = 1;
@@ -16811,7 +18066,7 @@ BUILDIN(npcshopattach) {
* 1 - Equip script
* 2 - Unequip script
*------------------------------------------*/
-BUILDIN(setitemscript)
+static BUILDIN(setitemscript)
{
int item_id,n=0;
const char *new_bonus_script;
@@ -16857,7 +18112,8 @@ BUILDIN(setitemscript)
* is updated to the new rate. Rate must be in the range [1:10000]
* Returns 1 if succeeded (added/updated a mob drop)
*-------------------------------------------------------*/
-BUILDIN(addmonsterdrop) {
+static BUILDIN(addmonsterdrop)
+{
struct mob_db *monster;
int item_id, rate, i, c = MAX_MOB_DROP;
@@ -16917,7 +18173,8 @@ BUILDIN(addmonsterdrop) {
*
* Returns 1 if succeeded (deleted a mob drop)
*-------------------------------------------------------*/
-BUILDIN(delmonsterdrop) {
+static BUILDIN(delmonsterdrop)
+{
struct mob_db *monster;
int item_id, i;
@@ -16959,7 +18216,7 @@ BUILDIN(delmonsterdrop) {
* Name, Level, race, size, etc...
* getmonsterinfo(monsterID,queryIndex);
*------------------------------------------*/
-BUILDIN(getmonsterinfo)
+static BUILDIN(getmonsterinfo)
{
struct mob_db *monster;
int mob_id;
@@ -17003,7 +18260,7 @@ BUILDIN(getmonsterinfo)
return true;
}
-BUILDIN(checkvending) // check vending [Nab4]
+static BUILDIN(checkvending) // check vending [Nab4]
{
struct map_session_data *sd = NULL;
@@ -17021,7 +18278,8 @@ BUILDIN(checkvending) // check vending [Nab4]
}
// check chatting [Marka]
-BUILDIN(checkchatting) {
+static BUILDIN(checkchatting)
+{
struct map_session_data *sd = NULL;
if (script_hasdata(st,2))
@@ -17037,7 +18295,8 @@ BUILDIN(checkchatting) {
return true;
}
-BUILDIN(checkidle) {
+static BUILDIN(checkidle)
+{
struct map_session_data *sd = NULL;
if (script_hasdata(st, 2))
@@ -17053,7 +18312,7 @@ BUILDIN(checkidle) {
return true;
}
-BUILDIN(searchitem)
+static BUILDIN(searchitem)
{
struct script_data* data = script_getdata(st, 2);
const char *itemname = script_getstr(st,3);
@@ -17116,7 +18375,7 @@ BUILDIN(searchitem)
}
// [zBuffer] List of player cont commands --->
-BUILDIN(rid2name)
+static BUILDIN(rid2name)
{
struct block_list *bl = NULL;
int rid = script_getnum(st,2);
@@ -17140,7 +18399,8 @@ BUILDIN(rid2name)
return true;
}
-BUILDIN(pcblockmove) {
+static BUILDIN(pcblockmove)
+{
int id, flag;
struct map_session_data *sd = NULL;
@@ -17152,13 +18412,92 @@ BUILDIN(pcblockmove) {
else
sd = script->rid2sd(st);
- if (sd != NULL)
- sd->state.blockedmove = flag > 0;
+ if (!sd)
+ return true;
+
+ if (flag)
+ sd->block_action.move = 1;
+ else
+ sd->block_action.move = 0;
+
+ return true;
+}
+
+static BUILDIN(setpcblock)
+{
+ struct map_session_data *sd = script->rid2sd(st);
+ enum pcblock_action_flag type = script_getnum(st, 2);
+ int state = (script_getnum(st, 3) > 0) ? 1 : 0;
+
+ if (sd == NULL)
+ return true;
+
+ if ((type & PCBLOCK_MOVE) != 0)
+ sd->block_action.move = state;
+
+ if ((type & PCBLOCK_ATTACK) != 0)
+ sd->block_action.attack = state;
+
+ if ((type & PCBLOCK_SKILL) != 0)
+ sd->block_action.skill = state;
+
+ if ((type & PCBLOCK_USEITEM) != 0)
+ sd->block_action.useitem = state;
+
+ if ((type & PCBLOCK_CHAT) != 0)
+ sd->block_action.chat = state;
+
+ if ((type & PCBLOCK_IMMUNE) != 0)
+ sd->block_action.immune = state;
+
+ if ((type & PCBLOCK_SITSTAND) != 0)
+ sd->block_action.sitstand = state;
+
+ if ((type & PCBLOCK_COMMANDS) != 0)
+ sd->block_action.commands = state;
+
+ return true;
+}
+
+static BUILDIN(checkpcblock)
+{
+ struct map_session_data *sd = script->rid2sd(st);
+ int retval = PCBLOCK_NONE;
+ if (sd == NULL) {
+ script_pushint(st, PCBLOCK_NONE);
+ return true;
+ }
+
+ if (sd->block_action.move != 0)
+ retval |= PCBLOCK_MOVE;
+
+ if (sd->block_action.attack != 0)
+ retval |= PCBLOCK_ATTACK;
+
+ if (sd->block_action.skill != 0)
+ retval |= PCBLOCK_SKILL;
+
+ if (sd->block_action.useitem != 0)
+ retval |= PCBLOCK_USEITEM;
+
+ if (sd->block_action.chat != 0)
+ retval |= PCBLOCK_CHAT;
+
+ if (sd->block_action.immune != 0)
+ retval |= PCBLOCK_IMMUNE;
+
+ if (sd->block_action.sitstand != 0)
+ retval |= PCBLOCK_SITSTAND;
+
+ if (sd->block_action.commands != 0)
+ retval |= PCBLOCK_COMMANDS;
+
+ script_pushint(st, retval);
return true;
}
-BUILDIN(pcfollow)
+static BUILDIN(pcfollow)
{
int id, targetid;
struct map_session_data *sd = NULL;
@@ -17177,7 +18516,7 @@ BUILDIN(pcfollow)
return true;
}
-BUILDIN(pcstopfollow)
+static BUILDIN(pcstopfollow)
{
int id;
struct map_session_data *sd = NULL;
@@ -17198,7 +18537,8 @@ BUILDIN(pcstopfollow)
// [zBuffer] List of mob control commands --->
//## TODO always return if the request/whatever was successfull [FlavioJS]
-BUILDIN(getunittype) {
+static BUILDIN(getunittype)
+{
struct block_list* bl;
int value;
@@ -17225,12 +18565,1647 @@ BUILDIN(getunittype) {
return true;
}
+/**
+ * Sets real-time unit data for a game object.
+ * Setunitdata <GUID>,<DataType>,<Val1>{,<Val2>,<Val3>}
+ * @param1 GUID GID of the unit.
+ * @param2 DataType Type of Data to be set for the unit.
+ * @param3 Value#1 Value to be passed as change in data.
+ * @param4 Value#2 Optional int value to be passed for certain data types.
+ * @param5 Value#3 Optional int value to be passed for certain data types.
+ * @return 1 on success, 0 on failure.
+ */
+static BUILDIN(setunitdata)
+{
+ struct block_list *bl = NULL;
+ const char *mapname = NULL, *udtype = NULL;
+ int type = 0, val = 0, val2 = 0, val3 = 0;
+ struct map_session_data *tsd = NULL;
+
+ bl = map->id2bl(script_getnum(st, 2));
+
+ if (bl == NULL) {
+ ShowWarning("buildin_setunitdata: Error in finding object with given GID %d!\n", script_getnum(st, 2));
+ script_pushint(st, 0);
+ return false;
+ }
+
+ type = script_getnum(st, 3);
+
+ /* type bounds */
+ if (type < UDT_SIZE || type >= UDT_MAX) { // Note: UDT_TYPE is not valid here
+ ShowError("buildin_setunitdata: Invalid unit data type %d provided.\n", type);
+ script_pushint(st, 0);
+ return false;
+ }
+
+ /* Mandatory Argument 3 */
+ if (type == UDT_MAPIDXY) {
+ if (!script_isstringtype(st, 4)) {
+ ShowError("buildin_setunitdata: Invalid data type for argument #3.\n");
+ script_pushint(st, 0);
+ return false;
+ }
+ mapname = script_getstr(st, 4);
+ } else {
+ if (script_isstringtype(st, 4)) {
+ ShowError("buildin_setunitdata: Invalid data type for argument #3.\n");
+ script_pushint(st, 0);
+ return false;
+ }
+ val = script_getnum(st, 4);
+ }
+/* checks if value is out of bounds. */
+#define setunitdata_check_bounds(arg, min, max) \
+ do { \
+ if (script_getnum(st, (arg)) < (min) || script_getnum(st, (arg)) > (max)) { \
+ ShowError("buildin_setunitdata: Invalid value %d for argument #%d. (min: %d, max: %d)\n", script_getnum(st, (arg)), (arg)-1, (min), (max)); \
+ script_pushint(st, 0); \
+ return false; \
+ } \
+ } while(0);
+/* checks if value is out of bounds. */
+#define setunitdata_check_min(arg, min) \
+ do { \
+ if (script_getnum(st, (arg)) < (min)) { \
+ ShowError("buildin_setunitdata: Invalid value %d for argument #%d. (min: %d)\n", script_getnum(st, (arg)), (arg)-1, (min)); \
+ script_pushint(st, 0); \
+ return false; \
+ } \
+ } while(0);
+/* checks if the argument doesn't exist, if required.
+ * also checks if the argument exists, if not required. */
+#define setunitdata_assert_arg(arg, required) \
+ do { \
+ if (required && !script_hasdata(st, (arg))) { \
+ ShowError("buildin_setunitdata: Type %d reqires argument #%d.\n", type, (arg)-1); \
+ script_pushint(st, 0); \
+ return false; \
+ } else if (!required && script_hasdata(st, arg)) { \
+ ShowError("buildin_setunitdata: Argument %d is not required for type %d.\n", (arg)-1, type); \
+ script_pushint(st, 0); \
+ return false; \
+ } \
+ } while (0);
+/* checks if the data is an integer. */
+#define setunitdata_check_int(arg) \
+ do { \
+ setunitdata_assert_arg((arg), true); \
+ if (script_isstringtype(st, (arg))) { \
+ ShowError("buildin_setunitdata: Argument #%d expects integer, string given.\n", (arg)-1); \
+ script_pushint(st, 0); \
+ return false; \
+ } \
+ } while(0);
+/* checks if the data is a string. */
+#define setunitdata_check_string(arg) \
+ do { \
+ setunitdata_assert_arg((arg), true); \
+ if (script_isinttype(st, (arg))) { \
+ ShowError("buildin_setunitdata: Argument #%d expects string, integer given.\n", (arg)-1); \
+ script_pushint(st, 0); \
+ return false; \
+ } \
+ } while(0);
+
+ if (type != UDT_MAPIDXY && type != UDT_WALKTOXY) {
+ setunitdata_assert_arg(5, false);
+ setunitdata_assert_arg(6, false);
+ }
+
+ switch (type)
+ {
+ case UDT_SIZE:
+ setunitdata_check_bounds(4, SZ_SMALL, SZ_BIG);
+ break;
+ case UDT_LEVEL:
+ case UDT_HP:
+ case UDT_MAXHP:
+ case UDT_SP:
+ case UDT_MAXSP:
+ case UDT_CLASS:
+ case UDT_HEADBOTTOM:
+ case UDT_HEADMIDDLE:
+ case UDT_HEADTOP:
+ case UDT_CLOTHCOLOR:
+ case UDT_SHIELD:
+ case UDT_WEAPON:
+ case UDT_INTIMACY:
+ case UDT_LIFETIME:
+ case UDT_MERC_KILLCOUNT:
+ case UDT_ROBE:
+ case UDT_BODY2:
+ setunitdata_check_min(4, 0);
+ break;
+ case UDT_MASTERAID:
+ setunitdata_check_min(4, 0);
+ tsd = map->id2sd(val);
+ if (tsd == NULL) {
+ ShowWarning("buildin_setunitdata: Account ID %d not found for master change!\n",val);
+ script_pushint(st, 0);
+ return false;
+ }
+ break;
+ case UDT_MASTERCID:
+ setunitdata_check_min(4, 0);
+ tsd = map->charid2sd(val);
+ if (tsd == NULL) {
+ ShowWarning("buildin_setunitdata: Character ID %d not found for master change!\n",val);
+ script_pushint(st, 0);
+ return false;
+ }
+ break;
+ case UDT_MAPIDXY:
+ if ((val = map->mapname2mapid(mapname)) == -1) {
+ ShowError("buildin_setunitdata: Non-existent map %s provided.\n", mapname);
+ return false;
+ }
+ setunitdata_check_int(5);
+ setunitdata_check_int(6);
+ setunitdata_check_bounds(5, 0, MAX_MAP_SIZE/2);
+ setunitdata_check_bounds(6, 0, MAX_MAP_SIZE/2);
+ val2 = script_getnum(st, 5);
+ val3 = script_getnum(st, 6);
+ break;
+ case UDT_WALKTOXY:
+ setunitdata_assert_arg(6, false);
+ setunitdata_check_int(5);
+ val2 = script_getnum(st, 5);
+ setunitdata_check_bounds(4, 0, MAX_MAP_SIZE/2);
+ setunitdata_check_bounds(5, 0, MAX_MAP_SIZE/2);
+ break;
+ case UDT_SPEED:
+ setunitdata_check_bounds(4, 0, MAX_WALK_SPEED);
+ break;
+ case UDT_MODE:
+ setunitdata_check_bounds(4, MD_NONE, MD_MASK);
+ break;
+ case UDT_AI:
+ setunitdata_check_bounds(4, AI_NONE, AI_MAX-1);
+ break;
+ case UDT_SCOPTION:
+ setunitdata_check_bounds(4, OPTION_NOTHING, OPTION_COSTUME);
+ break;
+ case UDT_SEX:
+ setunitdata_check_bounds(4, SEX_FEMALE, SEX_MALE);
+ break;
+ case UDT_HAIRSTYLE:
+ setunitdata_check_bounds(4, 0, battle->bc->max_hair_style);
+ break;
+ case UDT_HAIRCOLOR:
+ setunitdata_check_bounds(4, 0, battle->bc->max_hair_color);
+ break;
+ case UDT_LOOKDIR:
+ setunitdata_check_bounds(4, 0, 7);
+ break;
+ case UDT_CANMOVETICK:
+ setunitdata_check_min(4, 0);
+ break;
+ case UDT_STR:
+ case UDT_AGI:
+ case UDT_VIT:
+ case UDT_INT:
+ case UDT_DEX:
+ case UDT_LUK:
+ case UDT_STATPOINT:
+ case UDT_ATKRANGE:
+ case UDT_ATKMIN:
+ case UDT_ATKMAX:
+ case UDT_MATKMIN:
+ case UDT_MATKMAX:
+ case UDT_AMOTION:
+ case UDT_ADELAY:
+ case UDT_DMOTION:
+ setunitdata_check_bounds(4, 0, USHRT_MAX);
+ break;
+ case UDT_DEF:
+ case UDT_MDEF:
+ case UDT_HIT:
+ case UDT_FLEE:
+ case UDT_PDODGE:
+ case UDT_CRIT:
+ setunitdata_check_bounds(4, 0, SHRT_MAX);
+ break;
+ case UDT_HUNGER:
+ setunitdata_check_bounds(4, 0, 99);
+ break;
+ case UDT_RACE:
+ case UDT_ELETYPE:
+ case UDT_ELELEVEL:
+ setunitdata_check_bounds(4, 0, CHAR_MAX);
+ break;
+ default:
+ break;
+ }
+
+#undef setunitdata_check_bounds
+#undef setunitdata_assert_arg
+#undef setunitdata_check_int
+#undef setunitdata_check_string
+
+ /* Set the values */
+ switch (bl->type) {
+ case BL_MOB:
+ {
+ struct mob_data *md = BL_UCAST(BL_MOB, bl);
+ nullpo_retr(false, md);
+
+ switch (type)
+ {
+ case UDT_SIZE:
+ md->status.size = (unsigned char) val;
+ break;
+ case UDT_LEVEL:
+ md->level = val;
+ break;
+ case UDT_HP:
+ status->set_hp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT);
+ clif->charnameack(0, &md->bl);
+ break;
+ case UDT_MAXHP:
+ md->status.max_hp = (unsigned int) val;
+ clif->charnameack(0, &md->bl);
+ break;
+ case UDT_SP:
+ status->set_sp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT);
+ break;
+ case UDT_MAXSP:
+ md->status.max_sp = (unsigned int) val;
+ break;
+ case UDT_MASTERAID:
+ md->master_id = val;
+ break;
+ case UDT_MAPIDXY:
+ unit->warp(bl, (short) val, (short) val2, (short) val3, CLR_TELEPORT);
+ break;
+ case UDT_WALKTOXY:
+ if (!unit->walktoxy(bl, (short) val, (short) val2, 2))
+ unit->movepos(bl, (short) val, (short) val2, 0, 0);
+ break;
+ case UDT_SPEED:
+ md->status.speed = (unsigned short) val;
+ status->calc_misc(bl, &md->status, md->level);
+ break;
+ case UDT_MODE:
+ md->status.mode = (enum e_mode) val;
+ break;
+ case UDT_AI:
+ md->special_state.ai = (enum ai) val;
+ break;
+ case UDT_SCOPTION:
+ md->sc.option = (unsigned int) val;
+ break;
+ case UDT_SEX:
+ md->vd->sex = (char) val;
+ break;
+ case UDT_CLASS:
+ mob->class_change(md, val);
+ break;
+ case UDT_HAIRSTYLE:
+ clif->changelook(bl, LOOK_HAIR, val);
+ break;
+ case UDT_HAIRCOLOR:
+ clif->changelook(bl, LOOK_HAIR_COLOR, val);
+ break;
+ case UDT_HEADBOTTOM:
+ clif->changelook(bl, LOOK_HEAD_BOTTOM, val);
+ break;
+ case UDT_HEADMIDDLE:
+ clif->changelook(bl, LOOK_HEAD_MID, val);
+ break;
+ case UDT_HEADTOP:
+ clif->changelook(bl, LOOK_HEAD_TOP, val);
+ break;
+ case UDT_CLOTHCOLOR:
+ clif->changelook(bl, LOOK_CLOTHES_COLOR, val);
+ break;
+ case UDT_SHIELD:
+ clif->changelook(bl, LOOK_SHIELD, val);
+ break;
+ case UDT_WEAPON:
+ clif->changelook(bl, LOOK_WEAPON, val);
+ break;
+ case UDT_LOOKDIR:
+ unit->setdir(bl, (uint8) val);
+ break;
+ case UDT_CANMOVETICK:
+ md->ud.canmove_tick = val;
+ break;
+ case UDT_STR:
+ md->status.str = (unsigned short) val;
+ status->calc_misc(bl, &md->status, md->level);
+ break;
+ case UDT_AGI:
+ md->status.agi = (unsigned short) val;
+ status->calc_misc(bl, &md->status, md->level);
+ break;
+ case UDT_VIT:
+ md->status.vit = (unsigned short) val;
+ status->calc_misc(bl, &md->status, md->level);
+ break;
+ case UDT_INT:
+ md->status.int_ = (unsigned short) val;
+ status->calc_misc(bl, &md->status, md->level);
+ break;
+ case UDT_DEX:
+ md->status.dex = (unsigned short) val;
+ status->calc_misc(bl, &md->status, md->level);
+ break;
+ case UDT_LUK:
+ md->status.luk = (unsigned short) val;
+ status->calc_misc(bl, &md->status, md->level);
+ break;
+ case UDT_ATKRANGE:
+ md->status.rhw.range = (unsigned short) val;
+ break;
+ case UDT_ATKMIN:
+ md->status.rhw.atk = (unsigned short) val;
+ break;
+ case UDT_ATKMAX:
+ md->status.rhw.atk2 = (unsigned short) val;
+ break;
+ case UDT_MATKMIN:
+ md->status.matk_min = (unsigned short) val;
+ break;
+ case UDT_MATKMAX:
+ md->status.matk_max = (unsigned short) val;
+ break;
+ case UDT_DEF:
+ md->status.def = (defType) val;
+ break;
+ case UDT_MDEF:
+ md->status.mdef = (defType) val;
+ break;
+ case UDT_HIT:
+ md->status.hit = (short) val;
+ break;
+ case UDT_FLEE:
+ md->status.flee = (short) val;
+ break;
+ case UDT_PDODGE:
+ md->status.flee2 = (short) val;
+ break;
+ case UDT_CRIT:
+ md->status.cri = (short) val;
+ break;
+ case UDT_RACE:
+ md->status.race = (unsigned char) val;
+ break;
+ case UDT_ELETYPE:
+ md->status.def_ele = (unsigned char) val;
+ break;
+ case UDT_ELELEVEL:
+ md->status.ele_lv = (unsigned char) val;
+ break;
+ case UDT_AMOTION:
+ md->status.amotion = (unsigned short) val;
+ break;
+ case UDT_ADELAY:
+ md->status.adelay = (unsigned short) val;
+ break;
+ case UDT_DMOTION:
+ md->status.dmotion = (unsigned short) val;
+ break;
+ default:
+ ShowWarning("buildin_setunitdata: Invalid data type '%s' for mob unit.\n", udtype);
+ script_pushint(st, 0);
+ return false;
+ }
+ }
+ break;
+ case BL_HOM:
+ {
+ struct homun_data *hd = BL_UCAST(BL_HOM, bl);
+
+ nullpo_retr(false, hd);
+
+ switch (type)
+ {
+ case UDT_SIZE:
+ hd->base_status.size = (unsigned char) val;
+ break;
+ case UDT_LEVEL:
+ hd->homunculus.level = (short) val;
+ break;
+ case UDT_HP:
+ status->set_hp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT);
+ break;
+ case UDT_MAXHP:
+ hd->homunculus.max_hp = val;
+ break;
+ case UDT_SP:
+ status->set_sp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT);
+ break;
+ case UDT_MAXSP:
+ hd->homunculus.max_sp = val;
+ break;
+ case UDT_MASTERCID:
+ hd->homunculus.char_id = val;
+ hd->master = tsd;
+ break;
+ case UDT_MAPIDXY:
+ unit->warp(bl, (short) val, (short) val2, (short) val3, CLR_TELEPORT);
+ break;
+ case UDT_WALKTOXY:
+ if (!unit->walktoxy(bl, (short) val, (short) val2, 2))
+ unit->movepos(bl, (short) val, (short) val2, 0, 0);
+ break;
+ case UDT_SPEED:
+ hd->base_status.speed = (unsigned short) val;
+ status->calc_misc(bl, &hd->base_status, hd->homunculus.level);
+ break;
+ case UDT_LOOKDIR:
+ unit->setdir(bl, (unsigned char) val);
+ break;
+ case UDT_CANMOVETICK:
+ hd->ud.canmove_tick = val;
+ break;
+ case UDT_STR:
+ hd->base_status.str = (unsigned short) val;
+ status->calc_misc(bl, &hd->base_status, hd->homunculus.level);
+ break;
+ case UDT_AGI:
+ hd->base_status.agi = (unsigned short) val;
+ status->calc_misc(bl, &hd->base_status, hd->homunculus.level);
+ break;
+ case UDT_VIT:
+ hd->base_status.vit = (unsigned short) val;
+ status->calc_misc(bl, &hd->base_status, hd->homunculus.level);
+ break;
+ case UDT_INT:
+ hd->base_status.int_ = (unsigned short) val;
+ status->calc_misc(bl, &hd->base_status, hd->homunculus.level);
+ break;
+ case UDT_DEX:
+ hd->base_status.dex = (unsigned short) val;
+ status->calc_misc(bl, &hd->base_status, hd->homunculus.level);
+ break;
+ case UDT_LUK:
+ hd->base_status.luk = (unsigned short) val;
+ status->calc_misc(bl, &hd->base_status, hd->homunculus.level);
+ break;
+ case UDT_ATKRANGE:
+ hd->base_status.rhw.range = (unsigned short) val;
+ break;
+ case UDT_ATKMIN:
+ hd->base_status.rhw.atk = (unsigned short) val;
+ break;
+ case UDT_ATKMAX:
+ hd->base_status.rhw.atk2 = (unsigned short) val;
+ break;
+ case UDT_MATKMIN:
+ hd->base_status.matk_min = (unsigned short) val;
+ break;
+ case UDT_MATKMAX:
+ hd->base_status.matk_max = (unsigned short) val;
+ break;
+ case UDT_DEF:
+ hd->base_status.def = (defType) val;
+ break;
+ case UDT_MDEF:
+ hd->base_status.mdef = (defType) val;
+ break;
+ case UDT_HIT:
+ hd->base_status.hit = (short) val;
+ break;
+ case UDT_FLEE:
+ hd->base_status.flee = (short) val;
+ break;
+ case UDT_PDODGE:
+ hd->base_status.flee2 = (short) val;
+ break;
+ case UDT_CRIT:
+ hd->base_status.cri = (short) val;
+ break;
+ case UDT_RACE:
+ hd->base_status.race = (unsigned char) val;
+ break;
+ case UDT_ELETYPE:
+ hd->base_status.def_ele = (unsigned char) val;
+ break;
+ case UDT_ELELEVEL:
+ hd->base_status.ele_lv = (unsigned char) val;
+ break;
+ case UDT_AMOTION:
+ hd->base_status.amotion = (unsigned short) val;
+ break;
+ case UDT_ADELAY:
+ hd->base_status.adelay = (unsigned short) val;
+ break;
+ case UDT_DMOTION:
+ hd->base_status.dmotion = (unsigned short) val;
+ break;
+ case UDT_HUNGER:
+ hd->homunculus.hunger = (short) val;
+ clif->send_homdata(hd->master, SP_HUNGRY, hd->homunculus.hunger);
+ break;
+ case UDT_INTIMACY:
+ homun->add_intimacy(hd, (unsigned int) val);
+ clif->send_homdata(hd->master, SP_INTIMATE, hd->homunculus.intimacy / 100);
+ break;
+ default:
+ ShowWarning("buildin_setunitdata: Invalid data type '%s' for homunculus unit.\n", udtype);
+ script_pushint(st, 0);
+ return false;
+ }
+
+ clif->send_homdata(hd->master, SP_ACK, 0); // send homun data
+ }
+ break;
+ case BL_PET:
+ {
+ struct pet_data *pd = BL_UCAST(BL_PET, bl);
+
+ nullpo_retr(false, pd);
+
+ switch (type)
+ {
+ case UDT_SIZE:
+ pd->status.size = (unsigned char) val;
+ break;
+ case UDT_LEVEL:
+ pd->pet.level = (short) val;
+ break;
+ case UDT_HP:
+ status->set_hp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT);
+ break;
+ case UDT_MAXHP:
+ pd->status.max_hp = (unsigned int) val;
+ break;
+ case UDT_SP:
+ status->set_sp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT);
+ break;
+ case UDT_MAXSP:
+ pd->status.max_sp = (unsigned int) val;
+ break;
+ case UDT_MASTERAID:
+ pd->pet.account_id = val;
+ pd->msd = tsd;
+ break;
+ case UDT_MAPIDXY:
+ unit->warp(bl, (short) val, (short) val2, (short) val3, CLR_TELEPORT);
+ break;
+ case UDT_WALKTOXY:
+ if (!unit->walktoxy(bl, (short) val, (short) val2, 2))
+ unit->movepos(bl, (short) val, (short) val2, 0, 0);
+ break;
+ case UDT_SPEED:
+ pd->status.speed = (unsigned short) val;
+ status->calc_misc(bl, &pd->status, pd->pet.level);
+ break;
+ case UDT_LOOKDIR:
+ unit->setdir(bl, (unsigned char) val);
+ break;
+ case UDT_CANMOVETICK:
+ pd->ud.canmove_tick = val;
+ break;
+ case UDT_STR:
+ pd->status.str = (unsigned short) val;
+ status->calc_misc(bl, &pd->status, pd->pet.level);
+ break;
+ case UDT_AGI:
+ pd->status.agi = (unsigned short) val;
+ status->calc_misc(bl, &pd->status, pd->pet.level);
+ break;
+ case UDT_VIT:
+ pd->status.vit = (unsigned short) val;
+ status->calc_misc(bl, &pd->status, pd->pet.level);
+ break;
+ case UDT_INT:
+ pd->status.int_ = (unsigned short) val;
+ status->calc_misc(bl, &pd->status, pd->pet.level);
+ break;
+ case UDT_DEX:
+ pd->status.dex = (unsigned short) val;
+ status->calc_misc(bl, &pd->status, pd->pet.level);
+ break;
+ case UDT_LUK:
+ pd->status.luk = (unsigned short) val;
+ status->calc_misc(bl, &pd->status, pd->pet.level);
+ break;
+ case UDT_ATKRANGE:
+ pd->status.rhw.range = (unsigned short) val;
+ break;
+ case UDT_ATKMIN:
+ pd->status.rhw.atk = (unsigned short) val;
+ break;
+ case UDT_ATKMAX:
+ pd->status.rhw.atk2 = (unsigned short) val;
+ break;
+ case UDT_MATKMIN:
+ pd->status.matk_min = (unsigned short) val;
+ break;
+ case UDT_MATKMAX:
+ pd->status.matk_max = (unsigned short) val;
+ break;
+ case UDT_DEF:
+ pd->status.def = (defType) val;
+ break;
+ case UDT_MDEF:
+ pd->status.mdef = (defType) val;
+ break;
+ case UDT_HIT:
+ pd->status.hit = (short) val;
+ break;
+ case UDT_FLEE:
+ pd->status.flee = (short) val;
+ break;
+ case UDT_PDODGE:
+ pd->status.flee2 = (short) val;
+ break;
+ case UDT_CRIT:
+ pd->status.cri = (short) val;
+ break;
+ case UDT_RACE:
+ pd->status.race = (unsigned char) val;
+ break;
+ case UDT_ELETYPE:
+ pd->status.def_ele = (unsigned char) val;
+ break;
+ case UDT_ELELEVEL:
+ pd->status.ele_lv = (unsigned char) val;
+ break;
+ case UDT_AMOTION:
+ pd->status.amotion = (unsigned short) val;
+ break;
+ case UDT_ADELAY:
+ pd->status.adelay = (unsigned short) val;
+ break;
+ case UDT_DMOTION:
+ pd->status.dmotion = (unsigned short) val;
+ break;
+ case UDT_INTIMACY:
+ pet->set_intimate(pd, val);
+ clif->send_petdata(pd->msd, pd, 1, pd->pet.intimate);
+ break;
+ case UDT_HUNGER:
+ pd->pet.hungry = (short) val;
+ break;
+ default:
+ ShowWarning("buildin_setunitdata: Invalid data type '%s' for pet unit.\n", udtype);
+ script_pushint(st, 0);
+ return false;
+ }
+ clif->send_petstatus(pd->msd); // send pet data
+ }
+ break;
+ case BL_MER:
+ {
+ struct mercenary_data *mc = BL_UCAST(BL_MER, bl);
+
+ nullpo_retr(false, mc);
+
+ switch (type)
+ {
+ case UDT_SIZE:
+ mc->base_status.size = (unsigned char) val;
+ break;
+ case UDT_HP:
+ status->set_hp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT);
+ break;
+ case UDT_MAXHP:
+ mc->base_status.max_hp = (unsigned int) val;
+ break;
+ case UDT_SP:
+ status->set_sp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT);
+ break;
+ case UDT_MAXSP:
+ mc->base_status.max_sp = (unsigned int) val;
+ break;
+ case UDT_MASTERCID:
+ mc->mercenary.char_id = val;
+ break;
+ case UDT_MAPIDXY:
+ unit->warp(bl, (short) val, (short) val2, (short) val3, CLR_TELEPORT);
+ break;
+ case UDT_WALKTOXY:
+ if (!unit->walktoxy(bl, (short) val, (short) val2, 2))
+ unit->movepos(bl, (short) val, (short) val2, 0, 0);
+ break;
+ case UDT_SPEED:
+ mc->base_status.size = (unsigned char) val;
+ status->calc_misc(bl, &mc->base_status, mc->db->lv);
+ break;
+ case UDT_LOOKDIR:
+ unit->setdir(bl, (unsigned char) val);
+ break;
+ case UDT_CANMOVETICK:
+ mc->ud.canmove_tick = val;
+ break;
+ case UDT_STR:
+ mc->base_status.str = (unsigned short) val;
+ status->calc_misc(bl, &mc->base_status, mc->db->lv);
+ break;
+ case UDT_AGI:
+ mc->base_status.agi = (unsigned short) val;
+ status->calc_misc(bl, &mc->base_status, mc->db->lv);
+ break;
+ case UDT_VIT:
+ mc->base_status.vit = (unsigned short) val;
+ status->calc_misc(bl, &mc->base_status, mc->db->lv);
+ break;
+ case UDT_INT:
+ mc->base_status.int_ = (unsigned short) val;
+ status->calc_misc(bl, &mc->base_status, mc->db->lv);
+ break;
+ case UDT_DEX:
+ mc->base_status.dex = (unsigned short) val;
+ status->calc_misc(bl, &mc->base_status, mc->db->lv);
+ break;
+ case UDT_LUK:
+ mc->base_status.luk = (unsigned short) val;
+ status->calc_misc(bl, &mc->base_status, mc->db->lv);
+ break;
+ case UDT_ATKRANGE:
+ mc->base_status.rhw.range = (unsigned short) val;
+ break;
+ case UDT_ATKMIN:
+ mc->base_status.rhw.atk = (unsigned short) val;
+ break;
+ case UDT_ATKMAX:
+ mc->base_status.rhw.atk2 = (unsigned short) val;
+ break;
+ case UDT_MATKMIN:
+ mc->base_status.matk_min = (unsigned short) val;
+ break;
+ case UDT_MATKMAX:
+ mc->base_status.matk_max = (unsigned short) val;
+ break;
+ case UDT_DEF:
+ mc->base_status.def = (defType) val;
+ break;
+ case UDT_MDEF:
+ mc->base_status.mdef = (defType) val;
+ break;
+ case UDT_HIT:
+ mc->base_status.hit = (short) val;
+ break;
+ case UDT_FLEE:
+ mc->base_status.flee = (short) val;
+ break;
+ case UDT_PDODGE:
+ mc->base_status.flee2 = (short) val;
+ break;
+ case UDT_CRIT:
+ mc->base_status.cri = (short) val;
+ break;
+ case UDT_RACE:
+ mc->base_status.race = (unsigned char) val;
+ break;
+ case UDT_ELETYPE:
+ mc->base_status.def_ele = (unsigned char) val;
+ break;
+ case UDT_ELELEVEL:
+ mc->base_status.ele_lv = (unsigned char) val;
+ break;
+ case UDT_AMOTION:
+ mc->base_status.amotion = (unsigned short) val;
+ break;
+ case UDT_ADELAY:
+ mc->base_status.adelay = (unsigned short) val;
+ break;
+ case UDT_DMOTION:
+ mc->base_status.dmotion = (unsigned short) val;
+ break;
+ case UDT_MERC_KILLCOUNT:
+ mc->mercenary.kill_count = (unsigned int) val;
+ break;
+ case UDT_LIFETIME:
+ mc->mercenary.life_time = (unsigned int) val;
+ break;
+ default:
+ ShowWarning("buildin_setunitdata: Invalid data type '%s' for mercenary unit.\n", udtype);
+ script_pushint(st, 0);
+ return false;
+ }
+
+ clif->mercenary_info(map->charid2sd(mc->mercenary.char_id));
+ clif->mercenary_skillblock(map->charid2sd(mc->mercenary.char_id));
+ }
+ break;
+ case BL_ELEM:
+ {
+ struct elemental_data *ed = BL_UCAST(BL_ELEM, bl);
+
+ nullpo_retr(false, ed);
+
+ switch (type)
+ {
+ case UDT_SIZE:
+ ed->base_status.size = (unsigned char) val;
+ break;
+ case UDT_HP:
+ status->set_hp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT);
+ break;
+ case UDT_MAXHP:
+ ed->base_status.max_hp = (unsigned int) val;
+ break;
+ case UDT_SP:
+ status->set_sp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT);
+ break;
+ case UDT_MAXSP:
+ ed->base_status.max_sp = (unsigned int) val;
+ break;
+ case UDT_MASTERCID:
+ ed->elemental.char_id = val;
+ break;
+ case UDT_MAPIDXY:
+ unit->warp(bl, (short) val, (short) val2, (short) val3, CLR_TELEPORT);
+ break;
+ case UDT_WALKTOXY:
+ if (!unit->walktoxy(bl, (short) val, (short) val2, 2))
+ unit->movepos(bl, (short) val, (short) val2, 0, 0);
+ break;
+ case UDT_SPEED:
+ ed->base_status.speed = (unsigned short) val;
+ status->calc_misc(bl, &ed->base_status, ed->db->lv);
+ break;
+ case UDT_LOOKDIR:
+ unit->setdir(bl, (unsigned char) val);
+ break;
+ case UDT_CANMOVETICK:
+ ed->ud.canmove_tick = val;
+ break;
+ case UDT_STR:
+ ed->base_status.str = (unsigned short) val;
+ status->calc_misc(bl, &ed->base_status, ed->db->lv);
+ break;
+ case UDT_AGI:
+ ed->base_status.agi = (unsigned short) val;
+ status->calc_misc(bl, &ed->base_status, ed->db->lv);
+ break;
+ case UDT_VIT:
+ ed->base_status.vit = (unsigned short) val;
+ status->calc_misc(bl, &ed->base_status, ed->db->lv);
+ break;
+ case UDT_INT:
+ ed->base_status.int_ = (unsigned short) val;
+ status->calc_misc(bl, &ed->base_status, ed->db->lv);
+ break;
+ case UDT_DEX:
+ ed->base_status.dex = (unsigned short) val;
+ status->calc_misc(bl, &ed->base_status, ed->db->lv);
+ break;
+ case UDT_LUK:
+ ed->base_status.luk = (unsigned short) val;
+ status->calc_misc(bl, &ed->base_status, ed->db->lv);
+ break;
+ case UDT_ATKRANGE:
+ ed->base_status.rhw.range = (unsigned short) val;
+ break;
+ case UDT_ATKMIN:
+ ed->base_status.rhw.atk = (unsigned short) val;
+ break;
+ case UDT_ATKMAX:
+ ed->base_status.rhw.atk2 = (unsigned short) val;
+ break;
+ case UDT_MATKMIN:
+ ed->base_status.matk_min = (unsigned short) val;
+ break;
+ case UDT_MATKMAX:
+ ed->base_status.matk_max = (unsigned short) val;
+ break;
+ case UDT_DEF:
+ ed->base_status.def = (defType) val;
+ break;
+ case UDT_MDEF:
+ ed->base_status.mdef = (defType) val;
+ break;
+ case UDT_HIT:
+ ed->base_status.hit = (short) val;
+ break;
+ case UDT_FLEE:
+ ed->base_status.flee = (short) val;
+ break;
+ case UDT_PDODGE:
+ ed->base_status.flee2 = (short) val;
+ break;
+ case UDT_CRIT:
+ ed->base_status.cri = (short) val;
+ break;
+ case UDT_RACE:
+ ed->base_status.race = (unsigned char) val;
+ break;
+ case UDT_ELETYPE:
+ ed->base_status.def_ele = (unsigned char) val;
+ break;
+ case UDT_ELELEVEL:
+ ed->base_status.ele_lv = (unsigned char) val;
+ break;
+ case UDT_AMOTION:
+ ed->base_status.amotion = (unsigned short) val;
+ break;
+ case UDT_ADELAY:
+ ed->base_status.adelay = (unsigned short) val;
+ break;
+ case UDT_DMOTION:
+ ed->base_status.dmotion = (unsigned short) val;
+ break;
+ case UDT_LIFETIME:
+ ed->elemental.life_time = val;
+ break;
+ default:
+ ShowWarning("buildin_setunitdata: Invalid data type '%s' for elemental unit.\n", udtype);
+ script_pushint(st, 0);
+ return false;
+ }
+ clif->elemental_info(ed->master);
+ }
+ break;
+ case BL_NPC:
+ {
+ struct npc_data *nd = BL_UCAST(BL_NPC, bl);
+
+ nullpo_retr(false, nd);
+
+ switch (type)
+ {
+ case UDT_SIZE:
+ nd->status.size = (unsigned char) val;
+ break;
+ case UDT_LEVEL:
+ nd->level = (unsigned short) val;
+ break;
+ case UDT_HP:
+ status->set_hp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT);
+ break;
+ case UDT_MAXHP:
+ nd->status.max_hp = (unsigned int) val;
+ break;
+ case UDT_SP:
+ status->set_sp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT);
+ break;
+ case UDT_MAXSP:
+ nd->status.max_sp = (unsigned int) val;
+ break;
+ case UDT_MAPIDXY:
+ unit->warp(bl, (short) val, (short) val2, (short) val3, CLR_TELEPORT);
+ break;
+ case UDT_WALKTOXY:
+ if (!unit->walktoxy(bl, (short) val, (short) val2, 2))
+ unit->movepos(bl, (short) val, (short) val2, 0, 0);
+ break;
+ case UDT_CLASS:
+ npc->setclass(nd, (short) val);
+ break;
+ case UDT_SPEED:
+ nd->speed = (short) val;
+ status->calc_misc(bl, &nd->status, nd->level);
+ break;
+ case UDT_LOOKDIR:
+ unit->setdir(bl, (unsigned char) val);
+ break;
+ case UDT_STR:
+ nd->status.str = (unsigned short) val;
+ status->calc_misc(bl, &nd->status, nd->level);
+ break;
+ case UDT_AGI:
+ nd->status.agi = (unsigned short) val;
+ status->calc_misc(bl, &nd->status, nd->level);
+ break;
+ case UDT_VIT:
+ nd->status.vit = (unsigned short) val;
+ status->calc_misc(bl, &nd->status, nd->level);
+ break;
+ case UDT_INT:
+ nd->status.int_ = (unsigned short) val;
+ status->calc_misc(bl, &nd->status, nd->level);
+ break;
+ case UDT_DEX:
+ nd->status.dex = (unsigned short) val;
+ status->calc_misc(bl, &nd->status, nd->level);
+ break;
+ case UDT_LUK:
+ nd->status.luk = (unsigned short) val;
+ status->calc_misc(bl, &nd->status, nd->level);
+ break;
+ case UDT_STATPOINT:
+ nd->stat_point = (unsigned short) val;
+ break;
+ case UDT_ATKRANGE:
+ nd->status.rhw.range = (unsigned short) val;
+ break;
+ case UDT_ATKMIN:
+ nd->status.rhw.atk = (unsigned short) val;
+ break;
+ case UDT_ATKMAX:
+ nd->status.rhw.atk2 = (unsigned short) val;
+ break;
+ case UDT_MATKMIN:
+ nd->status.matk_min = (unsigned short) val;
+ break;
+ case UDT_MATKMAX:
+ nd->status.matk_max = (unsigned short) val;
+ break;
+ case UDT_DEF:
+ nd->status.def = (defType) val;
+ break;
+ case UDT_MDEF:
+ nd->status.mdef = (defType) val;
+ break;
+ case UDT_HIT:
+ nd->status.hit = (short) val;
+ break;
+ case UDT_FLEE:
+ nd->status.flee = (short) val;
+ break;
+ case UDT_PDODGE:
+ nd->status.flee2 = (short) val;
+ break;
+ case UDT_CRIT:
+ nd->status.cri = (short) val;
+ break;
+ case UDT_RACE:
+ nd->status.race = (unsigned char) val;
+ break;
+ case UDT_ELETYPE:
+ nd->status.def_ele = (unsigned char) val;
+ break;
+ case UDT_ELELEVEL:
+ nd->status.ele_lv = (unsigned char) val;
+ break;
+ case UDT_AMOTION:
+ nd->status.amotion = (unsigned short) val;
+ break;
+ case UDT_ADELAY:
+ nd->status.adelay = (unsigned short) val;
+ break;
+ case UDT_DMOTION:
+ nd->status.dmotion = (unsigned short) val;
+ break;
+ case UDT_SEX:
+ nd->vd.sex = (char)val;
+ npc->refresh(nd);
+ break;
+ case UDT_HAIRSTYLE:
+ clif->changelook(bl, LOOK_HAIR, val);
+ break;
+ case UDT_HAIRCOLOR:
+ clif->changelook(bl, LOOK_HAIR_COLOR, val);
+ break;
+ case UDT_HEADBOTTOM:
+ clif->changelook(bl, LOOK_HEAD_BOTTOM, val);
+ break;
+ case UDT_HEADMIDDLE:
+ clif->changelook(bl, LOOK_HEAD_MID, val);
+ break;
+ case UDT_HEADTOP:
+ clif->changelook(bl, LOOK_HEAD_TOP, val);
+ break;
+ case UDT_CLOTHCOLOR:
+ clif->changelook(bl, LOOK_CLOTHES_COLOR, val);
+ break;
+ case UDT_SHIELD:
+ clif->changelook(bl, LOOK_SHIELD, val);
+ break;
+ case UDT_WEAPON:
+ clif->changelook(bl, LOOK_WEAPON, val);
+ break;
+ case UDT_ROBE:
+ clif->changelook(bl, LOOK_ROBE, val);
+ break;
+ case UDT_BODY2:
+ clif->changelook(bl, LOOK_BODY2, val);
+ break;
+ default:
+ ShowWarning("buildin_setunitdata: Invalid data type '%s' for NPC unit.\n", udtype);
+ script_pushint(st, 0);
+ return false;
+ }
+ }
+ break;
+ default:
+ ShowError("buildin_setunitdata: Unknown object!\n");
+ script_pushint(st, 0);
+ return false;
+ } // end of bl->type switch
+
+ script_pushint(st, 1);
+ return true;
+}
+
+/**
+ * Retrieves real-time data for a game object.
+ * Getunitdata <GUID>,<DataType>{,<Variable>}
+ * @param1 GUID Game object unique Id.
+ * @param2 DataType Type of Data to be set for the unit.
+ * @param3 Variable array reference to store data into. (used for UDT_MAPIDXY)
+ * @return 0 on failure, <value> on success
+ */
+static BUILDIN(getunitdata)
+{
+ struct block_list *bl;
+ const char *udtype = NULL;
+ const struct map_session_data *sd = NULL;
+ int type = 0;
+ char* name = NULL;
+ struct script_data *data = script_hasdata(st,4)?script_getdata(st, 4):NULL;
+
+ bl = map->id2bl(script_getnum(st, 2));
+
+ if (bl == NULL) {
+ ShowWarning("buildin_getunitdata: Error in finding object with given GID %d!\n", script_getnum(st, 2));
+ script_pushint(st, 0);
+ return false;
+ }
+
+ type = script_getnum(st, 3);
+
+ /* Type check */
+ if (type < UDT_TYPE || type >= UDT_MAX) {
+ ShowError("buildin_getunitdata: Invalid unit data type %d provided.\n", type);
+ script_pushint(st, 0);
+ return false;
+ }
+
+ /* Argument checks */
+ if (type == UDT_MAPIDXY) {
+ if (data == NULL || !data_isreference(data)) {
+ ShowWarning("buildin_getunitdata: Error in argument 3. Please provide a reference variable to store values in.\n");
+ script_pushint(st, 0);
+ return false;
+ }
+
+ name = reference_getname(data);
+
+ if (not_server_variable(*name)) {
+ sd = script->rid2sd(st);
+ if (sd == NULL) {
+ ShowWarning("buildin_getunitdata: Player not attached! Cannot use player variable %s.\n",name);
+ script_pushint(st, 0);
+ return true;// no player attached
+ }
+ }
+ }
+
+#define getunitdata_sub(idx__,var__) script->setd_sub(st,NULL,name,(idx__),(void *)h64BPTRSIZE((int)(var__)),data->ref);
+
+ switch (bl->type) {
+ case BL_MOB:
+ {
+ const struct mob_data *md = BL_UCAST(BL_MOB, bl);
+
+ nullpo_retr(false, md);
+
+ switch (type)
+ {
+ case UDT_TYPE: script_pushint(st, BL_MOB); break;
+ case UDT_SIZE: script_pushint(st, md->status.size); break;
+ case UDT_LEVEL: script_pushint(st, md->level); break;
+ case UDT_HP: script_pushint(st, md->status.hp); break;
+ case UDT_MAXHP: script_pushint(st, md->status.max_hp); break;
+ case UDT_SP: script_pushint(st, md->status.sp); break;
+ case UDT_MAXSP: script_pushint(st, md->status.max_sp); break;
+ case UDT_MAPIDXY:
+ getunitdata_sub(0, md->bl.m);
+ getunitdata_sub(1, md->bl.x);
+ getunitdata_sub(2, md->bl.y);
+ break;
+ case UDT_SPEED: script_pushint(st, md->status.speed); break;
+ case UDT_MODE: script_pushint(st, md->status.mode); break;
+ case UDT_AI: script_pushint(st, md->special_state.ai); break;
+ case UDT_SCOPTION: script_pushint(st, md->sc.option); break;
+ case UDT_SEX: script_pushint(st, md->vd->sex); break;
+ case UDT_CLASS: script_pushint(st, md->vd->class); break;
+ case UDT_HAIRSTYLE: script_pushint(st, md->vd->hair_style); break;
+ case UDT_HAIRCOLOR: script_pushint(st, md->vd->hair_color); break;
+ case UDT_HEADBOTTOM: script_pushint(st, md->vd->head_bottom); break;
+ case UDT_HEADMIDDLE: script_pushint(st, md->vd->head_mid); break;
+ case UDT_HEADTOP: script_pushint(st, md->vd->head_top); break;
+ case UDT_CLOTHCOLOR: script_pushint(st, md->vd->cloth_color); break;
+ case UDT_SHIELD: script_pushint(st, md->vd->shield); break;
+ case UDT_WEAPON: script_pushint(st, md->vd->weapon); break;
+ case UDT_LOOKDIR: script_pushint(st, md->ud.dir); break;
+ case UDT_CANMOVETICK: script_pushint(st, md->ud.canmove_tick); break;
+ case UDT_STR: script_pushint(st, md->status.str); break;
+ case UDT_AGI: script_pushint(st, md->status.agi); break;
+ case UDT_VIT: script_pushint(st, md->status.vit); break;
+ case UDT_INT: script_pushint(st, md->status.int_); break;
+ case UDT_DEX: script_pushint(st, md->status.dex); break;
+ case UDT_LUK: script_pushint(st, md->status.luk); break;
+ case UDT_ATKRANGE: script_pushint(st, md->status.rhw.range); break;
+ case UDT_ATKMIN: script_pushint(st, md->status.rhw.atk); break;
+ case UDT_ATKMAX: script_pushint(st, md->status.rhw.atk2); break;
+ case UDT_MATKMIN: script_pushint(st, md->status.matk_min); break;
+ case UDT_MATKMAX: script_pushint(st, md->status.matk_max); break;
+ case UDT_DEF: script_pushint(st, md->status.def); break;
+ case UDT_MDEF: script_pushint(st, md->status.mdef); break;
+ case UDT_HIT: script_pushint(st, md->status.hit); break;
+ case UDT_FLEE: script_pushint(st, md->status.flee); break;
+ case UDT_PDODGE: script_pushint(st, md->status.flee2); break;
+ case UDT_CRIT: script_pushint(st, md->status.cri); break;
+ case UDT_RACE: script_pushint(st, md->status.race); break;
+ case UDT_ELETYPE: script_pushint(st, md->status.def_ele); break;
+ case UDT_ELELEVEL: script_pushint(st, md->status.ele_lv); break;
+ case UDT_AMOTION: script_pushint(st, md->status.amotion); break;
+ case UDT_ADELAY: script_pushint(st, md->status.adelay); break;
+ case UDT_DMOTION: script_pushint(st, md->status.dmotion); break;
+ default:
+ ShowWarning("buildin_getunitdata: Invalid data type '%s' for Mob unit.\n", udtype);
+ script_pushint(st, 0);
+ return false;
+ }
+ }
+ break;
+ case BL_HOM:
+ {
+ const struct homun_data *hd = BL_UCAST(BL_HOM, bl);
+
+ nullpo_retr(false, hd);
+
+ switch (type)
+ {
+ case UDT_TYPE: script_pushint(st, BL_HOM); break;
+ case UDT_SIZE: script_pushint(st, hd->base_status.size); break;
+ case UDT_LEVEL: script_pushint(st, hd->homunculus.level); break;
+ case UDT_HP: script_pushint(st, hd->base_status.hp); break;
+ case UDT_MAXHP: script_pushint(st, hd->base_status.max_hp); break;
+ case UDT_SP: script_pushint(st, hd->base_status.sp); break;
+ case UDT_MAXSP: script_pushint(st, hd->base_status.max_sp); break;
+ case UDT_MAPIDXY:
+ getunitdata_sub(0, hd->bl.m);
+ getunitdata_sub(1, hd->bl.x);
+ getunitdata_sub(2, hd->bl.y);
+ break;
+ case UDT_SPEED: script_pushint(st, hd->base_status.speed); break;
+ case UDT_LOOKDIR: script_pushint(st, hd->ud.dir); break;
+ case UDT_CANMOVETICK: script_pushint(st, hd->ud.canmove_tick); break;
+ case UDT_MODE: script_pushint(st, hd->base_status.mode); break;
+ case UDT_STR: script_pushint(st, hd->base_status.str); break;
+ case UDT_AGI: script_pushint(st, hd->base_status.agi); break;
+ case UDT_VIT: script_pushint(st, hd->base_status.vit); break;
+ case UDT_INT: script_pushint(st, hd->base_status.int_); break;
+ case UDT_DEX: script_pushint(st, hd->base_status.dex); break;
+ case UDT_LUK: script_pushint(st, hd->base_status.luk); break;
+ case UDT_ATKRANGE: script_pushint(st, hd->base_status.rhw.range); break;
+ case UDT_ATKMIN: script_pushint(st, hd->base_status.rhw.atk); break;
+ case UDT_ATKMAX: script_pushint(st, hd->base_status.rhw.atk2); break;
+ case UDT_MATKMIN: script_pushint(st, hd->base_status.matk_min); break;
+ case UDT_MATKMAX: script_pushint(st, hd->base_status.matk_max); break;
+ case UDT_DEF: script_pushint(st, hd->base_status.def); break;
+ case UDT_MDEF: script_pushint(st, hd->base_status.mdef); break;
+ case UDT_HIT: script_pushint(st, hd->base_status.hit); break;
+ case UDT_FLEE: script_pushint(st, hd->base_status.flee); break;
+ case UDT_PDODGE: script_pushint(st, hd->base_status.flee2); break;
+ case UDT_CRIT: script_pushint(st, hd->base_status.cri); break;
+ case UDT_RACE: script_pushint(st, hd->base_status.race); break;
+ case UDT_ELETYPE: script_pushint(st, hd->base_status.def_ele); break;
+ case UDT_ELELEVEL: script_pushint(st, hd->base_status.ele_lv); break;
+ case UDT_AMOTION: script_pushint(st, hd->base_status.amotion); break;
+ case UDT_ADELAY: script_pushint(st, hd->base_status.adelay); break;
+ case UDT_DMOTION: script_pushint(st, hd->base_status.dmotion); break;
+ case UDT_MASTERCID: script_pushint(st, hd->homunculus.char_id); break;
+ case UDT_HUNGER: script_pushint(st, hd->homunculus.hunger); break;
+ case UDT_INTIMACY: script_pushint(st, hd->homunculus.intimacy); break;
+ default:
+ ShowWarning("buildin_getunitdata: Invalid data type '%s' for Homunculus unit.\n", udtype);
+ script_pushint(st, 0);
+ return false;
+ }
+ }
+ break;
+ case BL_PET:
+ {
+ const struct pet_data *pd = BL_UCAST(BL_PET, bl);
+
+ nullpo_retr(false, pd);
+
+ switch (type)
+ {
+ case UDT_TYPE: script_pushint(st, BL_PET); break;
+ case UDT_SIZE: script_pushint(st, pd->status.size); break;
+ case UDT_LEVEL: script_pushint(st, pd->pet.level); break;
+ case UDT_HP: script_pushint(st, pd->status.hp); break;
+ case UDT_MAXHP: script_pushint(st, pd->status.max_hp); break;
+ case UDT_SP: script_pushint(st, pd->status.sp); break;
+ case UDT_MAXSP: script_pushint(st, pd->status.max_sp); break;
+ case UDT_MAPIDXY:
+ getunitdata_sub(0, pd->bl.m);
+ getunitdata_sub(1, pd->bl.x);
+ getunitdata_sub(2, pd->bl.y);
+ break;
+ case UDT_SPEED: script_pushint(st, pd->status.speed); break;
+ case UDT_LOOKDIR: script_pushint(st, pd->ud.dir); break;
+ case UDT_CANMOVETICK: script_pushint(st, pd->ud.canmove_tick); break;
+ case UDT_MODE: script_pushint(st, pd->status.mode); break;
+ case UDT_STR: script_pushint(st, pd->status.str); break;
+ case UDT_AGI: script_pushint(st, pd->status.agi); break;
+ case UDT_VIT: script_pushint(st, pd->status.vit); break;
+ case UDT_INT: script_pushint(st, pd->status.int_); break;
+ case UDT_DEX: script_pushint(st, pd->status.dex); break;
+ case UDT_LUK: script_pushint(st, pd->status.luk); break;
+ case UDT_ATKRANGE: script_pushint(st, pd->status.rhw.range); break;
+ case UDT_ATKMIN: script_pushint(st, pd->status.rhw.atk); break;
+ case UDT_ATKMAX: script_pushint(st, pd->status.rhw.atk2); break;
+ case UDT_MATKMIN: script_pushint(st, pd->status.matk_min); break;
+ case UDT_MATKMAX: script_pushint(st, pd->status.matk_max); break;
+ case UDT_DEF: script_pushint(st, pd->status.def); break;
+ case UDT_MDEF: script_pushint(st, pd->status.mdef); break;
+ case UDT_HIT: script_pushint(st, pd->status.hit); break;
+ case UDT_FLEE: script_pushint(st, pd->status.flee); break;
+ case UDT_PDODGE: script_pushint(st, pd->status.flee2); break;
+ case UDT_CRIT: script_pushint(st, pd->status.cri); break;
+ case UDT_RACE: script_pushint(st, pd->status.race); break;
+ case UDT_ELETYPE: script_pushint(st, pd->status.def_ele); break;
+ case UDT_ELELEVEL: script_pushint(st, pd->status.ele_lv); break;
+ case UDT_AMOTION: script_pushint(st, pd->status.amotion); break;
+ case UDT_ADELAY: script_pushint(st, pd->status.adelay); break;
+ case UDT_DMOTION: script_pushint(st, pd->status.dmotion); break;
+ case UDT_MASTERAID: script_pushint(st, pd->pet.account_id); break;
+ case UDT_HUNGER: script_pushint(st, pd->pet.hungry); break;
+ case UDT_INTIMACY: script_pushint(st, pd->pet.intimate); break;
+ default:
+ ShowWarning("buildin_getunitdata: Invalid data type '%s' for Pet unit.\n", udtype);
+ script_pushint(st, 0);
+ return false;
+ }
+ }
+ break;
+ case BL_MER:
+ {
+ const struct mercenary_data *mc = BL_UCAST(BL_MER, bl);
+
+ nullpo_retr(false, mc);
+
+ switch (type)
+ {
+ case UDT_TYPE: script_pushint(st, BL_MER); break;
+ case UDT_SIZE: script_pushint(st, mc->base_status.size); break;
+ case UDT_HP: script_pushint(st, mc->base_status.hp); break;
+ case UDT_MAXHP: script_pushint(st, mc->base_status.max_hp); break;
+ case UDT_SP: script_pushint(st, mc->base_status.sp); break;
+ case UDT_MAXSP: script_pushint(st, mc->base_status.max_sp); break;
+ case UDT_MAPIDXY:
+ getunitdata_sub(0, mc->bl.m);
+ getunitdata_sub(1, mc->bl.x);
+ getunitdata_sub(2, mc->bl.y);
+ break;
+ case UDT_SPEED: script_pushint(st, mc->base_status.speed); break;
+ case UDT_LOOKDIR: script_pushint(st, mc->ud.dir); break;
+ case UDT_CANMOVETICK: script_pushint(st, mc->ud.canmove_tick); break;
+ case UDT_MODE: script_pushint(st, mc->base_status.mode); break;
+ case UDT_STR: script_pushint(st, mc->base_status.str); break;
+ case UDT_AGI: script_pushint(st, mc->base_status.agi); break;
+ case UDT_VIT: script_pushint(st, mc->base_status.vit); break;
+ case UDT_INT: script_pushint(st, mc->base_status.int_); break;
+ case UDT_DEX: script_pushint(st, mc->base_status.dex); break;
+ case UDT_LUK: script_pushint(st, mc->base_status.luk); break;
+ case UDT_ATKRANGE: script_pushint(st, mc->base_status.rhw.range); break;
+ case UDT_ATKMIN: script_pushint(st, mc->base_status.rhw.atk); break;
+ case UDT_ATKMAX: script_pushint(st, mc->base_status.rhw.atk2); break;
+ case UDT_MATKMIN: script_pushint(st, mc->base_status.matk_min); break;
+ case UDT_MATKMAX: script_pushint(st, mc->base_status.matk_max); break;
+ case UDT_DEF: script_pushint(st, mc->base_status.def); break;
+ case UDT_MDEF: script_pushint(st, mc->base_status.mdef); break;
+ case UDT_HIT: script_pushint(st, mc->base_status.hit); break;
+ case UDT_FLEE: script_pushint(st, mc->base_status.flee); break;
+ case UDT_PDODGE: script_pushint(st, mc->base_status.flee2); break;
+ case UDT_CRIT: script_pushint(st, mc->base_status.cri); break;
+ case UDT_RACE: script_pushint(st, mc->base_status.race); break;
+ case UDT_ELETYPE: script_pushint(st, mc->base_status.def_ele); break;
+ case UDT_ELELEVEL: script_pushint(st, mc->base_status.ele_lv); break;
+ case UDT_AMOTION: script_pushint(st, mc->base_status.amotion); break;
+ case UDT_ADELAY: script_pushint(st, mc->base_status.adelay); break;
+ case UDT_DMOTION: script_pushint(st, mc->base_status.dmotion); break;
+ case UDT_MASTERCID: script_pushint(st, mc->mercenary.char_id); break;
+ case UDT_MERC_KILLCOUNT: script_pushint(st, mc->mercenary.kill_count); break;
+ case UDT_LIFETIME: script_pushint(st, mc->mercenary.life_time); break;
+ default:
+ ShowWarning("buildin_getunitdata: Invalid data type '%s' for Mercenary unit.\n", udtype);
+ script_pushint(st, 0);
+ return false;
+ }
+ }
+ break;
+ case BL_ELEM:
+ {
+ const struct elemental_data *ed = BL_UCAST(BL_ELEM, bl);
+
+ nullpo_retr(false, ed);
+
+ switch (type)
+ {
+ case UDT_TYPE: script_pushint(st, BL_ELEM); break;
+ case UDT_SIZE: script_pushint(st, ed->base_status.size); break;
+ case UDT_HP: script_pushint(st, ed->base_status.hp); break;
+ case UDT_MAXHP: script_pushint(st, ed->base_status.max_hp); break;
+ case UDT_SP: script_pushint(st, ed->base_status.sp); break;
+ case UDT_MAXSP: script_pushint(st, ed->base_status.max_sp); break;
+ case UDT_MAPIDXY:
+ getunitdata_sub(0, ed->bl.m);
+ getunitdata_sub(1, ed->bl.x);
+ getunitdata_sub(2, ed->bl.y);
+ break;
+ case UDT_SPEED: script_pushint(st, ed->base_status.speed); break;
+ case UDT_LOOKDIR: script_pushint(st, ed->ud.dir); break;
+ case UDT_CANMOVETICK: script_pushint(st, ed->ud.canmove_tick); break;
+ case UDT_MODE: script_pushint(st, ed->base_status.mode); break;
+ case UDT_STR: script_pushint(st, ed->base_status.str); break;
+ case UDT_AGI: script_pushint(st, ed->base_status.agi); break;
+ case UDT_VIT: script_pushint(st, ed->base_status.vit); break;
+ case UDT_INT: script_pushint(st, ed->base_status.int_); break;
+ case UDT_DEX: script_pushint(st, ed->base_status.dex); break;
+ case UDT_LUK: script_pushint(st, ed->base_status.luk); break;
+ case UDT_ATKRANGE: script_pushint(st, ed->base_status.rhw.range); break;
+ case UDT_ATKMIN: script_pushint(st, ed->base_status.rhw.atk); break;
+ case UDT_ATKMAX: script_pushint(st, ed->base_status.rhw.atk2); break;
+ case UDT_MATKMIN: script_pushint(st, ed->base_status.matk_min); break;
+ case UDT_MATKMAX: script_pushint(st, ed->base_status.matk_max); break;
+ case UDT_DEF: script_pushint(st, ed->base_status.def); break;
+ case UDT_MDEF: script_pushint(st, ed->base_status.mdef); break;
+ case UDT_HIT: script_pushint(st, ed->base_status.hit); break;
+ case UDT_FLEE: script_pushint(st, ed->base_status.flee); break;
+ case UDT_PDODGE: script_pushint(st, ed->base_status.flee2); break;
+ case UDT_CRIT: script_pushint(st, ed->base_status.cri); break;
+ case UDT_RACE: script_pushint(st, ed->base_status.race); break;
+ case UDT_ELETYPE: script_pushint(st, ed->base_status.def_ele); break;
+ case UDT_ELELEVEL: script_pushint(st, ed->base_status.ele_lv); break;
+ case UDT_AMOTION: script_pushint(st, ed->base_status.amotion); break;
+ case UDT_ADELAY: script_pushint(st, ed->base_status.adelay); break;
+ case UDT_DMOTION: script_pushint(st, ed->base_status.dmotion); break;
+ case UDT_MASTERCID: script_pushint(st, ed->elemental.char_id); break;
+ default:
+ ShowWarning("buildin_getunitdata: Invalid data type '%s' for Elemental unit.\n", udtype);
+ script_pushint(st, 0);
+ return false;
+ }
+ }
+ break;
+ case BL_NPC:
+ {
+ const struct npc_data *nd = BL_UCAST(BL_NPC, bl);
+
+ nullpo_retr(false, nd);
+
+ switch (type)
+ {
+ case UDT_TYPE: script_pushint(st, BL_NPC); break;
+ case UDT_SIZE: script_pushint(st, nd->status.size); break;
+ case UDT_HP: script_pushint(st, nd->status.hp); break;
+ case UDT_MAXHP: script_pushint(st, nd->status.max_hp); break;
+ case UDT_SP: script_pushint(st, nd->status.sp); break;
+ case UDT_MAXSP: script_pushint(st, nd->status.max_sp); break;
+ case UDT_MAPIDXY:
+ getunitdata_sub(0, bl->m);
+ getunitdata_sub(1, bl->x);
+ getunitdata_sub(2, bl->y);
+ break;
+ case UDT_SPEED: script_pushint(st, nd->status.speed); break;
+ case UDT_LOOKDIR: script_pushint(st, nd->ud->dir); break;
+ case UDT_CANMOVETICK: script_pushint(st, nd->ud->canmove_tick); break;
+ case UDT_MODE: script_pushint(st, nd->status.mode); break;
+ case UDT_STR: script_pushint(st, nd->status.str); break;
+ case UDT_AGI: script_pushint(st, nd->status.agi); break;
+ case UDT_VIT: script_pushint(st, nd->status.vit); break;
+ case UDT_INT: script_pushint(st, nd->status.int_); break;
+ case UDT_DEX: script_pushint(st, nd->status.dex); break;
+ case UDT_LUK: script_pushint(st, nd->status.luk); break;
+ case UDT_ATKRANGE: script_pushint(st, nd->status.rhw.range); break;
+ case UDT_ATKMIN: script_pushint(st, nd->status.rhw.atk); break;
+ case UDT_ATKMAX: script_pushint(st, nd->status.rhw.atk2); break;
+ case UDT_MATKMIN: script_pushint(st, nd->status.matk_min); break;
+ case UDT_MATKMAX: script_pushint(st, nd->status.matk_max); break;
+ case UDT_DEF: script_pushint(st, nd->status.def); break;
+ case UDT_MDEF: script_pushint(st, nd->status.mdef); break;
+ case UDT_HIT: script_pushint(st, nd->status.hit); break;
+ case UDT_FLEE: script_pushint(st, nd->status.flee); break;
+ case UDT_PDODGE: script_pushint(st, nd->status.flee2); break;
+ case UDT_CRIT: script_pushint(st, nd->status.cri); break;
+ case UDT_RACE: script_pushint(st, nd->status.race); break;
+ case UDT_ELETYPE: script_pushint(st, nd->status.def_ele); break;
+ case UDT_ELELEVEL: script_pushint(st, nd->status.ele_lv); break;
+ case UDT_AMOTION: script_pushint(st, nd->status.amotion); break;
+ case UDT_ADELAY: script_pushint(st, nd->status.adelay); break;
+ case UDT_DMOTION: script_pushint(st, nd->status.dmotion); break;
+ case UDT_SEX: script_pushint(st, nd->vd.sex); break;
+ case UDT_CLASS: script_pushint(st, nd->vd.class); break;
+ case UDT_HAIRSTYLE: script_pushint(st, nd->vd.hair_style); break;
+ case UDT_HAIRCOLOR: script_pushint(st, nd->vd.hair_color); break;
+ case UDT_HEADBOTTOM: script_pushint(st, nd->vd.head_bottom); break;
+ case UDT_HEADMIDDLE: script_pushint(st, nd->vd.head_mid); break;
+ case UDT_HEADTOP: script_pushint(st, nd->vd.head_top); break;
+ case UDT_CLOTHCOLOR: script_pushint(st, nd->vd.cloth_color); break;
+ case UDT_SHIELD: script_pushint(st, nd->vd.shield); break;
+ case UDT_WEAPON: script_pushint(st, nd->vd.weapon); break;
+ case UDT_ROBE: script_pushint(st, nd->vd.robe); break;
+ case UDT_BODY2: script_pushint(st, nd->vd.body_style); break;
+ default:
+ ShowWarning("buildin_getunitdata: Invalid data type '%s' for NPC unit.\n", udtype);
+ script_pushint(st, 0);
+ return false;
+ }
+ }
+ break;
+ default:
+ ShowError("buildin_getunitdata: Unknown object!\n");
+ script_pushint(st, 0);
+ return false;
+ } // end of bl->type switch
+
+#undef getunitdata_sub
+
+ return true;
+}
+
+/**
+ * Gets the name of a Unit.
+ * Supported types are [MOB|HOM|PET|NPC].
+ * MER and ELEM don't support custom names.
+ *
+ * @command getunitname <GUID>;
+ * @param GUID Game Object Unique ID.
+ * @return boolean or Name of the game object.
+ */
+static BUILDIN(getunitname)
+{
+ const struct block_list* bl = NULL;
+
+ bl = map->id2bl(script_getnum(st, 2));
+
+ if (bl == NULL) {
+ ShowWarning("buildin_getunitname: Error in finding object with given game ID %d!\n", script_getnum(st, 2));
+ script_pushconststr(st, "Unknown");
+ return false;
+ }
+
+ script_pushstrcopy(st, status->get_name(bl));
+
+ return true;
+}
+
+/**
+ * Changes the name of a bl.
+ * Supported types are [MOB|HOM|PET].
+ * For NPC see 'setnpcdisplay', MER and ELEM don't support custom names.
+ *
+ * @command setunitname <GUID>,<name>;
+ * @param GUID Game object unique ID.
+ * @param Name as string.
+ * @return boolean.
+ */
+static BUILDIN(setunitname)
+{
+ struct block_list* bl = map->id2bl(script_getnum(st, 2));
+
+ if (bl == NULL) {
+ ShowWarning("buildin_setunitname: Game object with ID %d was not found!\n", script_getnum(st, 2));
+ script_pushint(st, 0);
+ return false;
+ }
+
+ switch (bl->type) {
+ case BL_MOB:
+ {
+ struct mob_data *md = BL_UCAST(BL_MOB, bl);
+ if (md == NULL) {
+ ShowWarning("buildin_setunitname: Error in finding object BL_MOB!\n");
+ script_pushint(st, 0);
+ return false;
+ }
+ safestrncpy(md->name, script_getstr(st, 3), NAME_LENGTH);
+ }
+ break;
+ case BL_HOM:
+ {
+ struct homun_data *hd = BL_UCAST(BL_HOM, bl);
+ if (hd == NULL) {
+ ShowWarning("buildin_setunitname: Error in finding object BL_HOM!\n");
+ script_pushint(st, 0);
+ return false;
+ }
+ safestrncpy(hd->homunculus.name, script_getstr(st, 3), NAME_LENGTH);
+ }
+ break;
+ case BL_PET:
+ {
+ struct pet_data *pd = BL_UCAST(BL_PET, bl);
+ if (pd == NULL) {
+ ShowWarning("buildin_setunitname: Error in finding object BL_PET!\n");
+ script_pushint(st, 0);
+ return false;
+ }
+ safestrncpy(pd->pet.name, script_getstr(st, 3), NAME_LENGTH);
+ }
+ break;
+ default:
+ script_pushint(st, 0);
+ ShowWarning("buildin_setunitname: Unknown object type!\n");
+ return false;
+ }
+
+ script_pushint(st, 1);
+ clif->charnameack(0, bl); // Send update to client.
+
+ return true;
+}
+
/// Makes the unit walk to target position or target id
/// Returns if it was successfull
///
/// unitwalk(<unit_id>,<x>,<y>) -> <bool>
/// unitwalk(<unit_id>,<target_id>) -> <bool>
-BUILDIN(unitwalk) {
+static BUILDIN(unitwalk)
+{
struct block_list* bl;
bl = map->id2bl(script_getnum(st,2));
@@ -17257,7 +20232,7 @@ BUILDIN(unitwalk) {
/// Kills the unit
///
/// unitkill <unit_id>;
-BUILDIN(unitkill)
+static BUILDIN(unitkill)
{
struct block_list* bl = map->id2bl(script_getnum(st,2));
if( bl != NULL )
@@ -17270,7 +20245,8 @@ BUILDIN(unitkill)
/// Returns if it was successfull
///
/// unitwarp(<unit_id>,"<map name>",<x>,<y>) -> <bool>
-BUILDIN(unitwarp) {
+static BUILDIN(unitwarp)
+{
int unit_id;
int mapid;
short x;
@@ -17310,7 +20286,8 @@ BUILDIN(unitwarp) {
///
/// unitattack(<unit_id>,"<target name>"{,<action type>}) -> <bool>
/// unitattack(<unit_id>,<target_id>{,<action type>}) -> <bool>
-BUILDIN(unitattack) {
+static BUILDIN(unitattack)
+{
struct block_list* unit_bl;
struct block_list* target_bl = NULL;
int actiontype = 0;
@@ -17364,7 +20341,8 @@ BUILDIN(unitattack) {
/// Makes the unit stop attacking and moving
///
/// unitstop <unit_id>;
-BUILDIN(unitstop) {
+static BUILDIN(unitstop)
+{
int unit_id;
struct block_list* bl;
@@ -17384,15 +20362,30 @@ BUILDIN(unitstop) {
/// Makes the unit say the message
///
-/// unittalk <unit_id>,"<message>";
-BUILDIN(unittalk) {
+/// unittalk(<unit_id>,"<message>"{, show_name{, <send_target>{, <target_id>}}});
+static BUILDIN(unittalk)
+{
int unit_id;
const char* message;
- struct block_list* bl;
+ struct block_list *bl, *target_bl = NULL;
+ bool show_name = true;
+ enum send_target target = AREA_CHAT_WOC;
unit_id = script_getnum(st,2);
message = script_getstr(st, 3);
+ if (script_hasdata(st, 4)) {
+ show_name = (script_getnum(st, 4) != 0) ? true : false;
+ }
+
+ if (script_hasdata(st, 5)) {
+ target = script_getnum(st, 5);
+ }
+
+ if (script_hasdata(st, 6)) {
+ target_bl = map->id2bl(script_getnum(st, 6));
+ }
+
bl = map->id2bl(unit_id);
if( bl != NULL ) {
struct StringBuf sbuf;
@@ -17401,8 +20394,17 @@ BUILDIN(unittalk) {
safestrncpy(blname, clif->get_bl_name(bl), sizeof(blname));
if(bl->type == BL_NPC)
strtok(blname, "#");
- StrBuf->Printf(&sbuf, "%s : %s", blname, message);
- clif->disp_overhead(bl, StrBuf->Value(&sbuf));
+ if (show_name) {
+ StrBuf->Printf(&sbuf, "%s : %s", blname, message);
+ } else {
+ StrBuf->Printf(&sbuf, "%s", message);
+ }
+
+ if (bl->type == BL_PC && target == SELF && (target_bl == NULL || bl == target_bl)) {
+ clif->notify_playerchat(bl, StrBuf->Value(&sbuf));
+ } else {
+ clif->disp_overhead(bl, StrBuf->Value(&sbuf), target, target_bl);
+ }
StrBuf->Destroy(&sbuf);
}
@@ -17414,7 +20416,8 @@ BUILDIN(unittalk) {
/// unitemote <unit_id>,<emotion>;
///
/// @see e_* in const.txt
-BUILDIN(unitemote) {
+static BUILDIN(unitemote)
+{
int unit_id;
int emotion;
struct block_list* bl;
@@ -17432,7 +20435,8 @@ BUILDIN(unitemote) {
///
/// unitskilluseid <unit_id>,<skill_id>,<skill_lv>{,<target_id>};
/// unitskilluseid <unit_id>,"<skill name>",<skill_lv>{,<target_id>};
-BUILDIN(unitskilluseid) {
+static BUILDIN(unitskilluseid)
+{
int unit_id;
uint16 skill_id;
uint16 skill_lv;
@@ -17465,7 +20469,8 @@ BUILDIN(unitskilluseid) {
///
/// unitskillusepos <unit_id>,<skill_id>,<skill_lv>,<target_x>,<target_y>;
/// unitskillusepos <unit_id>,"<skill name>",<skill_lv>,<target_x>,<target_y>;
-BUILDIN(unitskillusepos) {
+static BUILDIN(unitskillusepos)
+{
int unit_id;
uint16 skill_id;
uint16 skill_lv;
@@ -17501,7 +20506,7 @@ BUILDIN(unitskillusepos) {
/// Pauses the execution of the script, detaching the player
///
/// sleep <mili seconds>;
-BUILDIN(sleep)
+static BUILDIN(sleep)
{
int ticks;
@@ -17530,7 +20535,8 @@ BUILDIN(sleep)
/// Returns if a player is still attached
///
/// sleep2(<mili secconds>) -> <bool>
-BUILDIN(sleep2) {
+static BUILDIN(sleep2)
+{
int ticks;
ticks = script_getnum(st,2);
@@ -17554,7 +20560,7 @@ BUILDIN(sleep2) {
/// Awakes all the sleep timers of the target npc
///
/// awake "<npc name>";
-BUILDIN(awake)
+static BUILDIN(awake)
{
struct DBIterator *iter;
struct script_state *tst;
@@ -17597,7 +20603,7 @@ BUILDIN(awake)
/// Returns 0 if an error occurs.
///
/// getvariableofnpc(<variable>, "<npc name>") -> <reference>
-BUILDIN(getvariableofnpc)
+static BUILDIN(getvariableofnpc)
{
struct script_data* data;
const char* name;
@@ -17639,7 +20645,7 @@ BUILDIN(getvariableofnpc)
return true;
}
-BUILDIN(getvariableofpc)
+static BUILDIN(getvariableofpc)
{
const char* name;
struct script_data* data = script_getdata(st, 2);
@@ -17657,7 +20663,6 @@ BUILDIN(getvariableofpc)
switch (*name)
{
- case '#':
case '$':
case '.':
case '\'':
@@ -17682,7 +20687,7 @@ BUILDIN(getvariableofpc)
}
if (!sd->regs.vars)
- sd->regs.vars = i64db_alloc(DB_OPT_RELEASE_DATA);
+ sd->regs.vars = i64db_alloc(DB_OPT_BASE);
script->push_val(st->stack, C_NAME, reference_getuid(data), &sd->regs);
return true;
@@ -17694,7 +20699,8 @@ BUILDIN(getvariableofpc)
/// warpportal <source x>,<source y>,"<target map>",<target x>,<target y>;
///
/// @author blackhole89
-BUILDIN(warpportal) {
+static BUILDIN(warpportal)
+{
int spx;
int spy;
unsigned short map_index;
@@ -17731,7 +20737,7 @@ BUILDIN(warpportal) {
return true;
}
-BUILDIN(openmail)
+static BUILDIN(openmail)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -17742,7 +20748,7 @@ BUILDIN(openmail)
return true;
}
-BUILDIN(openauction)
+static BUILDIN(openauction)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -17758,7 +20764,8 @@ BUILDIN(openauction)
/// checkcell("<map name>",<x>,<y>,<type>) -> <bool>
///
/// @see cell_chk* constants in const.txt for the types
-BUILDIN(checkcell) {
+static BUILDIN(checkcell)
+{
int16 m = map->mapname2mapid(script_getstr(st,2));
int16 x = script_getnum(st,3);
int16 y = script_getnum(st,4);
@@ -17779,7 +20786,8 @@ BUILDIN(checkcell) {
/// setcell "<map name>",<x1>,<y1>,<x2>,<y2>,<type>,<flag>;
///
/// @see cell_* constants in const.txt for the types
-BUILDIN(setcell) {
+static BUILDIN(setcell)
+{
int16 m = map->mapname2mapid(script_getstr(st,2));
int16 x1 = script_getnum(st,3);
int16 y1 = script_getnum(st,4);
@@ -17808,7 +20816,7 @@ BUILDIN(setcell) {
/*==========================================
* Mercenary Commands
*------------------------------------------*/
-BUILDIN(mercenary_create)
+static BUILDIN(mercenary_create)
{
struct map_session_data *sd;
int class_, contract_time;
@@ -17826,7 +20834,8 @@ BUILDIN(mercenary_create)
return true;
}
-BUILDIN(mercenary_heal) {
+static BUILDIN(mercenary_heal)
+{
struct map_session_data *sd = script->rid2sd(st);
int hp, sp;
@@ -17835,11 +20844,12 @@ BUILDIN(mercenary_heal) {
hp = script_getnum(st,2);
sp = script_getnum(st,3);
- status->heal(&sd->md->bl, hp, sp, 0);
+ status->heal(&sd->md->bl, hp, sp, STATUS_HEAL_DEFAULT);
return true;
}
-BUILDIN(mercenary_sc_start) {
+static BUILDIN(mercenary_sc_start)
+{
struct map_session_data *sd = script->rid2sd(st);
enum sc_type type;
int tick, val1;
@@ -17855,7 +20865,8 @@ BUILDIN(mercenary_sc_start) {
return true;
}
-BUILDIN(mercenary_get_calls) {
+static BUILDIN(mercenary_get_calls)
+{
struct map_session_data *sd = script->rid2sd(st);
int guild_id;
@@ -17881,7 +20892,8 @@ BUILDIN(mercenary_get_calls) {
return true;
}
-BUILDIN(mercenary_set_calls) {
+static BUILDIN(mercenary_set_calls)
+{
struct map_session_data *sd = script->rid2sd(st);
int guild_id, value, *calls;
@@ -17911,7 +20923,8 @@ BUILDIN(mercenary_set_calls) {
return true;
}
-BUILDIN(mercenary_get_faith) {
+static BUILDIN(mercenary_get_faith)
+{
struct map_session_data *sd = script->rid2sd(st);
int guild_id;
@@ -17937,7 +20950,8 @@ BUILDIN(mercenary_get_faith) {
return true;
}
-BUILDIN(mercenary_set_faith) {
+static BUILDIN(mercenary_set_faith)
+{
struct map_session_data *sd = script->rid2sd(st);
int guild_id, value, *calls;
@@ -17972,7 +20986,7 @@ BUILDIN(mercenary_set_faith) {
/*------------------------------------------
* Book Reading
*------------------------------------------*/
-BUILDIN(readbook)
+static BUILDIN(readbook)
{
struct map_session_data *sd;
int book_id, page;
@@ -17991,89 +21005,215 @@ BUILDIN(readbook)
* Questlog script commands *
****************************/
-BUILDIN(questinfo)
+static BUILDIN(questinfo)
{
struct npc_data *nd = map->id2nd(st->oid);
- int quest_id, icon;
- struct questinfo qi;
+ struct questinfo qi = { 0 };
+ int icon = script_getnum(st, 2);
- if( nd == NULL || nd->bl.m == -1 )
+ if (nd == NULL)
return true;
- quest_id = script_getnum(st, 2);
- icon = script_getnum(st, 3);
-
- #if PACKETVER >= 20120410
- if(icon < 0 || (icon > 8 && icon != 9999) || icon == 7)
- icon = 9999; // Default to nothing if icon id is invalid.
- #else
- if(icon < 0 || icon > 7)
- icon = 0;
- else
- icon = icon + 1;
- #endif
+ if (nd->bl.m == -1) {
+ ShowWarning("buildin_questinfo: questinfo cannot be set for an npc with no valid map.\n");
+ return false;
+ }
- qi.quest_id = quest_id;
- qi.icon = (unsigned char)icon;
qi.nd = nd;
-
- if (script_hasdata(st, 4)) {
- int color = script_getnum(st, 4);
+ qi.icon = quest->questinfo_validate_icon(icon);
+ if (script_hasdata(st, 3)) {
+ int color = script_getnum(st, 3);
if (color < 0 || color > 3) {
- ShowWarning("buildin_questinfo: invalid color '%d', changing to 0\n",color);
+ ShowWarning("buildin_questinfo: invalid color '%d', defaulting to 0.\n", color);
script->reportfunc(st);
color = 0;
}
qi.color = (unsigned char)color;
}
- qi.hasJob = false;
+ map->add_questinfo(nd->bl.m, &qi);
+ return true;
+}
- if (script_hasdata(st, 5)) {
- int job = script_getnum(st, 5);
+static BUILDIN(setquestinfo)
+{
+ struct npc_data *nd = map->id2nd(st->oid);
+ struct questinfo *qi = NULL;
+ uint32 type = script_getnum(st, 2);
- if (!pc->db_checkid(job)) {
- ShowError("buildin_questinfo: Nonexistant Job Class.\n");
- } else {
- qi.hasJob = true;
- qi.job = (unsigned short)job;
+ if (nd == NULL)
+ return true;
+
+ if (nd->bl.m == -1) {
+ ShowWarning("buildin_setquestinfo: questinfo cannot be set for an npc with no valid map.\n");
+ return false;
+ }
+
+ qi = &VECTOR_LAST(map->list[nd->bl.m].qi_data);
+ if (qi == NULL) {
+ ShowWarning("buildin_setquestinfo: no valide questinfo data has been found for this npc.\n");
+ return false;
+ }
+ if (qi->nd != nd) {
+ ShowWarning("buildin_setquestinfo: invalid usage, setquestinfo must be used only after questinfo.\n");
+ return false;
+ }
+ switch (type) {
+ case QINFO_JOB:
+ {
+ int jobid = script_getnum(st, 3);
+ if (!pc->db_checkid(jobid)) {
+ ShowWarning("buildin_setquestinfo: invalid job id given (%d).\n", jobid);
+ return false;
+ }
+ qi->hasJob = true;
+ qi->job = jobid;
+ break;
+ }
+ case QINFO_SEX:
+ {
+ int sex = script_getnum(st, 3);
+ if (sex != SEX_MALE && sex != SEX_FEMALE) {
+ ShowWarning("buildin_setquestinfo: unsupported sex has been given (%d).\n", sex);
+ return false;
+ }
+ qi->sex_enabled = true;
+ qi->sex = sex;
+ break;
+ }
+ case QINFO_BASE_LEVEL:
+ {
+ int min = script_getnum(st, 3);
+ int max = script_getnum(st, 4);
+ if (min > max) {
+ ShowWarning("buildin_setquestinfo: minimal level (%d) is bigger than the maximal level (%d).\n", min, max);
+ return false;
+ }
+ qi->base_level.min = min;
+ qi->base_level.max = max;
+ break;
+ }
+ case QINFO_JOB_LEVEL:
+ {
+ int min = script_getnum(st, 3);
+ int max = script_getnum(st, 4);
+ if (min > max) {
+ ShowWarning("buildin_setquestinfo: minimal level (%d) is bigger than the maximal level (%d).\n", min, max);
+ return false;
}
+ qi->job_level.min = min;
+ qi->job_level.max = max;
+ break;
}
+ case QINFO_ITEM:
+ {
+ struct questinfo_itemreq item = { 0 };
- map->add_questinfo(nd->bl.m,&qi);
+ item.nameid = script_getnum(st, 3);
+ item.min = script_hasdata(st, 4) ? script_getnum(st, 4) : 0;
+ item.max = script_hasdata(st, 5) ? script_getnum(st, 5) : 0;
+ if (itemdb->exists(item.nameid) == NULL) {
+ ShowWarning("buildin_setquestinfo: non existing item (%d) have been given.\n", item.nameid);
+ return false;
+ }
+ if (item.min > item.max) {
+ ShowWarning("buildin_setquestinfo: minimal amount (%d) is bigger than the maximal amount (%d).\n", item.min, item.max);
+ return false;
+ }
+ if (item.min < 0 || item.min > MAX_AMOUNT) {
+ ShowWarning("buildin_setquestinfo: given amount (%d) must be bigger than or equal to 0 and smaller than %d.\n", item.min, MAX_AMOUNT + 1);
+ return false;
+ }
+ if (item.max < 0 || item.max > MAX_AMOUNT) {
+ ShowWarning("buildin_setquestinfo: given amount (%d) must be bigger than or equal to 0 and smaller than %d.\n", item.max, MAX_AMOUNT + 1);
+ return false;
+ }
+ if (VECTOR_LENGTH(qi->items) == 0)
+ VECTOR_INIT(qi->items);
+ VECTOR_ENSURE(qi->items, 1, 1);
+ VECTOR_PUSH(qi->items, item);
+ break;
+ }
+ case QINFO_HOMUN_LEVEL:
+ {
+ int min = script_getnum(st, 3);
+ if (min > battle_config.hom_max_level && min > battle_config.hom_S_max_level) {
+ ShowWarning("buildin_setquestinfo: minimum homunculus level given (%d) is bigger than the max possible level.\n", min);
+ return false;
+ }
+ qi->homunculus.level = min;
+ break;
+ }
+ case QINFO_HOMUN_TYPE:
+ {
+ int hom_type = script_getnum(st, 3);
+ if (hom_type < HT_REG || hom_type > HT_S) {
+ ShowWarning("buildin_setquestinfo: invalid homunculus type (%d).\n", hom_type);
+ return false;
+ }
+ qi->homunculus_type = hom_type;
+ break;
+ }
+ case QINFO_QUEST:
+ {
+ struct questinfo_qreq quest_req = { 0 };
+ struct quest_db *quest_data = NULL;
+
+ quest_req.id = script_getnum(st, 3);
+ quest_req.state = script_getnum(st, 4);
+
+ quest_data = quest->db(quest_req.id);
+ if (quest_data == &quest->dummy) {
+ ShowWarning("buildin_setquestinfo: invalid quest given (%d).\n", quest_req.id);
+ return false;
+ }
+ if (quest_req.state < Q_INACTIVE || quest_req.state > Q_COMPLETE) {
+ ShowWarning("buildin_setquestinfo: invalid quest state given (%d).\n", quest_req.state);
+ return false;
+ }
+
+ if (VECTOR_LENGTH(qi->quest_requirement) == 0)
+ VECTOR_INIT(qi->quest_requirement);
+ VECTOR_ENSURE(qi->quest_requirement, 1, 1);
+ VECTOR_PUSH(qi->quest_requirement, quest_req);
+ break;
+ }
+ case QINFO_MERCENARY_CLASS:
+ {
+ int mer_class = script_getnum(st, 3);
+
+ if (!mercenary->class(mer_class)) {
+ ShowWarning("buildin_setquestinfo: invalid mercenary class given (%d).\n", mer_class);
+ return false;
+ }
+ qi->mercenary_class = mer_class;
+ break;
+ }
+ default:
+ ShowWarning("buildin_setquestinfo: invalid type given (%u).\n", type);
+ return false;
+ }
return true;
}
-BUILDIN(setquest)
+static BUILDIN(setquest)
{
- unsigned short i;
int quest_id;
+ unsigned int time_limit;
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
return true;
quest_id = script_getnum(st, 2);
+ time_limit = script_hasdata(st, 3) ? script_getnum(st, 3) : 0;
- quest->add(sd, quest_id);
-
- // If questinfo is set, remove quest bubble once quest is set.
- for(i = 0; i < map->list[sd->bl.m].qi_count; i++) {
- struct questinfo *qi = &map->list[sd->bl.m].qi_data[i];
- if( qi->quest_id == quest_id ) {
-#if PACKETVER >= 20120410
- clif->quest_show_event(sd, &qi->nd->bl, 9999, 0);
-#else
- clif->quest_show_event(sd, &qi->nd->bl, 0, 0);
-#endif
- }
- }
-
+ quest->add(sd, quest_id, time_limit);
return true;
}
-BUILDIN(erasequest)
+static BUILDIN(erasequest)
{
struct map_session_data *sd = script->rid2sd(st);
@@ -18096,7 +21236,7 @@ BUILDIN(erasequest)
return true;
}
-BUILDIN(completequest)
+static BUILDIN(completequest)
{
struct map_session_data *sd = script->rid2sd(st);
@@ -18119,7 +21259,7 @@ BUILDIN(completequest)
return true;
}
-BUILDIN(changequest)
+static BUILDIN(changequest)
{
struct map_session_data *sd = script->rid2sd(st);
@@ -18130,7 +21270,7 @@ BUILDIN(changequest)
return true;
}
-BUILDIN(questactive)
+static BUILDIN(questactive)
{
struct map_session_data *sd = script->rid2sd(st);
int qid, i;
@@ -18156,7 +21296,7 @@ BUILDIN(questactive)
return true;
}
-BUILDIN(questprogress)
+static BUILDIN(questprogress)
{
struct map_session_data *sd = script->rid2sd(st);
enum quest_check_type type = HAVEQUEST;
@@ -18184,7 +21324,7 @@ BUILDIN(questprogress)
return true;
}
-BUILDIN(showevent)
+static BUILDIN(showevent)
{
struct map_session_data *sd = script->rid2sd(st);
struct npc_data *nd = map->id2nd(st->oid);
@@ -18203,24 +21343,89 @@ BUILDIN(showevent)
}
}
- #if PACKETVER >= 20120410
- if(icon < 0 || (icon > 8 && icon != 9999) || icon == 7)
- icon = 9999; // Default to nothing if icon id is invalid.
- #else
- if(icon < 0 || icon > 7)
- icon = 0;
- else
- icon = icon + 1;
- #endif
+ icon = quest->questinfo_validate_icon(icon);
clif->quest_show_event(sd, &nd->bl, icon, color);
return true;
}
/*==========================================
+ * Achievement System [Smokexyz/Hercules]
+ *-----------------------------------------*/
+/**
+ * Validates an objective index for the given achievement.
+ * Can be used for any achievement type.
+ * @command achievement_progress(<ach_id>,<obj_idx>,<progress>,<incremental?>{,<char_id>});
+ * @param aid - achievement ID
+ * @param obj_idx - achievement objective index.
+ * @param progress - objective progress towards goal.
+ * @Param incremental - (boolean) true to add the progress towards the goal,
+ * false to use the progress only as a comparand.
+ * @param account_id - (optional) character ID to perform on.
+ * @return true on success, false on failure.
+ * @push 1 on success, 0 on failure.
+ */
+static BUILDIN(achievement_progress)
+{
+ struct map_session_data *sd = script->rid2sd(st);
+ int aid = script_getnum(st, 2);
+ int obj_idx = script_getnum(st, 3);
+ int progress = script_getnum(st, 4);
+ int incremental = script_getnum(st, 5);
+ int account_id = script_hasdata(st, 6) ? script_getnum(st, 6) : 0;
+ const struct achievement_data *ad = NULL;
+
+ if ((ad = achievement->get(aid)) == NULL) {
+ ShowError("buildin_achievement_progress: Invalid achievement ID %d received.\n", aid);
+ script_pushint(st, 0);
+ return false;
+ }
+
+ if (obj_idx <= 0 || obj_idx > VECTOR_LENGTH(ad->objective)) {
+ ShowError("buildin_achievement_progress: Invalid objective index %d received. (min: %d, max: %d)\n", obj_idx, 0, VECTOR_LENGTH(ad->objective));
+ script_pushint(st, 0);
+ return false;
+ }
+
+ obj_idx--; // convert to array index.
+
+ if (progress <= 0 || progress > VECTOR_INDEX(ad->objective, obj_idx).goal) {
+ ShowError("buildin_achievement_progress: Progress exceeds goal limit for achievement id %d.\n", aid);
+ script_pushint(st, 0);
+ return false;
+ }
+
+ if (incremental < 0 || incremental > 1) {
+ ShowError("buildin_achievement_progress: Argument 4 expects boolean (0/1). provided value: %d\n", incremental);
+ script_pushint(st, 0);
+ return false;
+ }
+
+ if (script_hasdata(st, 6)) {
+ if (account_id <= 0) {
+ ShowError("buildin_achievement_progress: Invalid Account id %d provided.\n", account_id);
+ script_pushint(st, 0);
+ return false;
+ } else if ((sd = map->id2sd(account_id)) == NULL) {
+ ShowError("buildin_achievement_progress: Account with id %d was not found.\n", account_id);
+ script_pushint(st, 0);
+ return false;
+ }
+ }
+
+ if (achievement->validate(sd, aid, obj_idx, progress, incremental ? true : false))
+ script_pushint(st, progress);
+ else
+ script_pushint(st, 0);
+
+ return true;
+}
+
+/*==========================================
* BattleGround System
*------------------------------------------*/
-BUILDIN(waitingroom2bg) {
+static BUILDIN(waitingroom2bg)
+{
struct npc_data *nd;
struct chat_data *cd;
const char *map_name, *ev = "", *dev = "";
@@ -18264,17 +21469,18 @@ BUILDIN(waitingroom2bg) {
for (i = 0; i < n && i < MAX_BG_MEMBERS; i++) {
struct map_session_data *sd = cd->usersd[i];
if (sd != NULL && bg->team_join(bg_id, sd))
- mapreg->setreg(reference_uid(script->add_str("$@arenamembers"), i), sd->bl.id);
+ mapreg->setreg(reference_uid(script->add_variable("$@arenamembers"), i), sd->bl.id);
else
- mapreg->setreg(reference_uid(script->add_str("$@arenamembers"), i), 0);
+ mapreg->setreg(reference_uid(script->add_variable("$@arenamembers"), i), 0);
}
- mapreg->setreg(script->add_str("$@arenamembersnum"), i);
+ mapreg->setreg(script->add_variable("$@arenamembersnum"), i);
script_pushint(st,bg_id);
return true;
}
-BUILDIN(waitingroom2bg_single) {
+static BUILDIN(waitingroom2bg_single)
+{
const char* map_name;
struct npc_data *nd;
struct chat_data *cd;
@@ -18307,7 +21513,7 @@ BUILDIN(waitingroom2bg_single) {
return true;
}
-BUILDIN(bg_team_setxy)
+static BUILDIN(bg_team_setxy)
{
struct battleground_data *bgd;
int bg_id;
@@ -18321,7 +21527,7 @@ BUILDIN(bg_team_setxy)
return true;
}
-BUILDIN(bg_warp)
+static BUILDIN(bg_warp)
{
int x, y, map_index, bg_id;
const char* map_name;
@@ -18336,7 +21542,7 @@ BUILDIN(bg_warp)
return true;
}
-BUILDIN(bg_monster)
+static BUILDIN(bg_monster)
{
int class_ = 0, x = 0, y = 0, bg_id = 0;
const char *str, *mapname, *evt="";
@@ -18353,7 +21559,7 @@ BUILDIN(bg_monster)
return true;
}
-BUILDIN(bg_monster_set_team)
+static BUILDIN(bg_monster_set_team)
{
int id = script_getnum(st,2),
bg_id = script_getnum(st,3);
@@ -18372,7 +21578,7 @@ BUILDIN(bg_monster_set_team)
return true;
}
-BUILDIN(bg_leave)
+static BUILDIN(bg_leave)
{
struct map_session_data *sd = script->rid2sd(st);
if( sd == NULL || !sd->bg_id )
@@ -18382,14 +21588,14 @@ BUILDIN(bg_leave)
return true;
}
-BUILDIN(bg_destroy)
+static BUILDIN(bg_destroy)
{
int bg_id = script_getnum(st,2);
bg->team_delete(bg_id);
return true;
}
-BUILDIN(bg_getareausers)
+static BUILDIN(bg_getareausers)
{
const char *str;
int16 m, x0, y0, x1, y1;
@@ -18423,7 +21629,7 @@ BUILDIN(bg_getareausers)
return true;
}
-BUILDIN(bg_updatescore)
+static BUILDIN(bg_updatescore)
{
const char *str;
int16 m;
@@ -18439,7 +21645,7 @@ BUILDIN(bg_updatescore)
return true;
}
-BUILDIN(bg_get_data)
+static BUILDIN(bg_get_data)
{
struct battleground_data *bgd;
int bg_id = script_getnum(st,2),
@@ -18466,11 +21672,12 @@ BUILDIN(bg_get_data)
* Instancing Script Commands
*------------------------------------------*/
-BUILDIN(instance_create)
+static BUILDIN(instance_create)
{
const char *name;
int owner_id, res;
int type = IOT_PARTY;
+ struct map_session_data *sd = map->id2sd(st->rid);
name = script_getstr(st, 2);
owner_id = script_getnum(st, 3);
@@ -18483,27 +21690,48 @@ BUILDIN(instance_create)
}
res = instance->create(owner_id, name, (enum instance_owner_type) type);
- if( res == -4 ) { // Already exists
- script_pushint(st, -1);
- return true;
- } else if( res < 0 ) {
+ if (sd != NULL) {
+ switch (res) {
+ case -4: // Already exists
+ clif->msgtable_str(sd, MSG_MDUNGEON_SUBSCRIPTION_ERROR_DUPLICATE, name);
+ break;
+ case -3: // No free instances
+ clif->msgtable_str(sd, MSG_MDUNGEON_SUBSCRIPTION_ERROR_EXIST, name);
+ break;
+ case -2: // Invalid type
+ clif->msgtable_str(sd, MSG_MDUNGEON_SUBSCRIPTION_ERROR_RIGHT, name);
+ break;
+ case -1: // Unknown
+ clif->msgtable_str(sd, MSG_MDUNGEON_SUBSCRIPTION_ERROR_UNKNOWN, name);
+ break;
+ default:
+ if (res < 0)
+ ShowError("buildin_instance_create: failed to unknown reason [%d].\n", res);
+ }
+ } else {
const char *err;
- switch(res) {
- case -3: err = "No free instances"; break;
- case -2: err = "Invalid party ID"; break;
- case -1: err = "Invalid type"; break;
- default: err = "Unknown"; break;
+ switch (res) {
+ case -3:
+ err = "No free instances";
+ break;
+ case -2:
+ err = "Invalid party ID";
+ break;
+ case -1:
+ err = "Invalid type";
+ break;
+ default:
+ err = "Unknown";
+ break;
}
- ShowError("buildin_instance_create: %s [%d].\n", err, res);
- script_pushint(st, -2);
- return true;
+ if (res < 0)
+ ShowError("buildin_instance_create: %s [%d].\n", err, res);
}
-
script_pushint(st, res);
return true;
}
-BUILDIN(instance_destroy)
+static BUILDIN(instance_destroy)
{
int instance_id = -1;
@@ -18522,7 +21750,7 @@ BUILDIN(instance_destroy)
return true;
}
-BUILDIN(instance_attachmap)
+static BUILDIN(instance_attachmap)
{
const char *map_name = NULL;
int16 m;
@@ -18546,7 +21774,8 @@ BUILDIN(instance_attachmap)
return true;
}
-BUILDIN(instance_detachmap) {
+static BUILDIN(instance_detachmap)
+{
const char *str;
int16 m;
int instance_id = -1;
@@ -18567,7 +21796,7 @@ BUILDIN(instance_detachmap) {
return true;
}
-BUILDIN(instance_attach)
+static BUILDIN(instance_attach)
{
int instance_id = script_getnum(st, 2);
@@ -18578,12 +21807,13 @@ BUILDIN(instance_attach)
return true;
}
-BUILDIN(instance_id) {
+static BUILDIN(instance_id)
+{
script_pushint(st, st->instance_id);
return true;
}
-BUILDIN(instance_set_timeout)
+static BUILDIN(instance_set_timeout)
{
int progress_timeout, idle_timeout;
int instance_id = -1;
@@ -18603,7 +21833,7 @@ BUILDIN(instance_set_timeout)
return true;
}
-BUILDIN(instance_init)
+static BUILDIN(instance_init)
{
int instance_id = script_getnum(st, 2);
@@ -18621,7 +21851,7 @@ BUILDIN(instance_init)
return true;
}
-BUILDIN(instance_announce)
+static BUILDIN(instance_announce)
{
int instance_id = script_getnum(st,2);
const char *mes = script_getstr(st,3);
@@ -18652,7 +21882,7 @@ BUILDIN(instance_announce)
return true;
}
-BUILDIN(instance_npcname)
+static BUILDIN(instance_npcname)
{
const char *str;
int instance_id = -1;
@@ -18677,82 +21907,100 @@ BUILDIN(instance_npcname)
return true;
}
-BUILDIN(has_instance)
+static BUILDIN(has_instance)
{
struct map_session_data *sd;
const char *str;
int16 m;
int instance_id = -1;
+ int i = 0, j = 0;
bool type = strcmp(script->getfuncname(st),"has_instance2") == 0 ? true : false;
str = script_getstr(st, 2);
- if( (m = map->mapname2mapid(str)) < 0 ) {
- if( type )
+ if ((m = map->mapname2mapid(str)) < 0) {
+ if (type) {
script_pushint(st, -1);
- else
+ } else {
script_pushconststr(st, "");
+ }
return true;
}
- if( script_hasdata(st, 3) )
+ if (script_hasdata(st, 3))
instance_id = script_getnum(st, 3);
- else if( st->instance_id >= 0 )
+ else if (st->instance_id >= 0)
instance_id = st->instance_id;
- else if( (sd = script->rid2sd(st)) != NULL ) {
+ else if ((sd = script->rid2sd(st)) != NULL) {
struct party_data *p;
- int i = 0, j = 0;
- if( sd->instances ) {
- for( i = 0; i < sd->instances; i++ ) {
- if( sd->instance[i] >= 0 ) {
+ if (sd->instances) {
+ for (i = 0; i < sd->instances; i++) {
+ if (sd->instance[i] >= 0) {
ARR_FIND(0, instance->list[sd->instance[i]].num_map, j, map->list[instance->list[sd->instance[i]].map[j]].instance_src_map == m);
- if( j != instance->list[sd->instance[i]].num_map )
+ if (j != instance->list[sd->instance[i]].num_map)
break;
}
}
- if( i != sd->instances )
+ if (i != sd->instances) {
instance_id = sd->instance[i];
+ }
}
if (instance_id == -1 && sd->status.party_id && (p = party->search(sd->status.party_id)) != NULL && p->instances) {
- for( i = 0; i < p->instances; i++ ) {
- if( p->instance[i] >= 0 ) {
+ for (i = 0; i < p->instances; i++) {
+ if (p->instance[i] >= 0) {
ARR_FIND(0, instance->list[p->instance[i]].num_map, j, map->list[instance->list[p->instance[i]].map[j]].instance_src_map == m);
- if( j != instance->list[p->instance[i]].num_map )
+ if (j != instance->list[p->instance[i]].num_map)
break;
}
}
- if( i != p->instances )
+ if (i != p->instances) {
instance_id = p->instance[i];
+ }
}
- if( instance_id == -1 && sd->guild && sd->guild->instances ) {
- for( i = 0; i < sd->guild->instances; i++ ) {
- if( sd->guild->instance[i] >= 0 ) {
+ if (instance_id == -1 && sd->guild && sd->guild->instances) {
+ for (i = 0; i < sd->guild->instances; i++) {
+ if (sd->guild->instance[i] >= 0) {
ARR_FIND(0, instance->list[sd->guild->instance[i]].num_map, j, map->list[instance->list[sd->guild->instance[i]].map[j]].instance_src_map == m);
- if( j != instance->list[sd->guild->instance[i]].num_map )
+ if (j != instance->list[sd->guild->instance[i]].num_map)
break;
}
}
- if( i != sd->guild->instances )
+ if (i != sd->guild->instances)
instance_id = sd->guild->instance[i];
}
}
- if( !instance->valid(instance_id) || (m = instance->map2imap(m, instance_id)) < 0 ) {
- if( type )
+ if (instance_id == -1) {
+ for (i = 0; i < instance->instances; i++) {
+ if (instance->list[i].state != INSTANCE_FREE && instance->list[i].owner_type == IOT_NONE && instance->list[i].num_map > 0) {
+ ARR_FIND(0, instance->list[i].num_map, j, map->list[instance->list[i].map[j]].instance_src_map == m);
+ if (j != instance->list[i].num_map)
+ break;
+ }
+ }
+ if (i != instance->instances) {
+ instance_id = instance->list[i].id;
+ }
+ }
+
+ if (!instance->valid(instance_id) || (m = instance->map2imap(m, instance_id)) < 0) {
+ if (type) {
script_pushint(st, -1);
- else
+ } else {
script_pushconststr(st, "");
+ }
return true;
}
- if( type )
+ if (type) {
script_pushint(st, instance_id);
- else
+ } else {
script_pushconststr(st, map->list[m].name);
+ }
return true;
}
-int buildin_instance_warpall_sub(struct block_list *bl, va_list ap)
+static int buildin_instance_warpall_sub(struct block_list *bl, va_list ap)
{
struct map_session_data *sd = NULL;
int map_index = va_arg(ap,int);
@@ -18768,7 +22016,7 @@ int buildin_instance_warpall_sub(struct block_list *bl, va_list ap)
return 0;
}
-BUILDIN(instance_warpall)
+static BUILDIN(instance_warpall)
{
int16 m;
int instance_id = -1;
@@ -18807,7 +22055,7 @@ BUILDIN(instance_warpall)
* Example: instance_check_party (getcharid(1){,amount}{,min}{,max});
* Example 2: instance_check_party (getcharid(1),1,1,99);
*------------------------------------------*/
-BUILDIN(instance_check_party)
+static BUILDIN(instance_check_party)
{
int amount, min, max, i, party_id, c = 0;
struct party_data *p = NULL;
@@ -18866,7 +22114,7 @@ BUILDIN(instance_check_party)
* Example: instance_check_guild (getcharid(2){,amount}{,min}{,max});
* Example 2: instance_check_guild (getcharid(2),1,1,99);
*------------------------------------------*/
-BUILDIN(instance_check_guild)
+static BUILDIN(instance_check_guild)
{
int amount, min, max, i, guild_id, c = 0;
struct guild *g = NULL;
@@ -18918,7 +22166,7 @@ BUILDIN(instance_check_guild)
/*==========================================
* Custom Fonts
*------------------------------------------*/
-BUILDIN(setfont)
+static BUILDIN(setfont)
{
struct map_session_data *sd = script->rid2sd(st);
int font = script_getnum(st,2);
@@ -18934,7 +22182,7 @@ BUILDIN(setfont)
return true;
}
-int buildin_mobuseskill_sub(struct block_list *bl, va_list ap)
+static int buildin_mobuseskill_sub(struct block_list *bl, va_list ap)
{
struct mob_data *md = NULL;
struct block_list *tbl;
@@ -18981,7 +22229,7 @@ int buildin_mobuseskill_sub(struct block_list *bl, va_list ap)
/*==========================================
* areamobuseskill "Map Name",<x>,<y>,<range>,<Mob ID>,"Skill Name"/<Skill ID>,<Skill Lv>,<Cast Time>,<Cancelable>,<Emotion>,<Target Type>;
*------------------------------------------*/
-BUILDIN(areamobuseskill)
+static BUILDIN(areamobuseskill)
{
struct block_list center;
int16 m;
@@ -19011,7 +22259,7 @@ BUILDIN(areamobuseskill)
return true;
}
-BUILDIN(progressbar)
+static BUILDIN(progressbar)
{
struct map_session_data * sd = script->rid2sd(st);
const char * color;
@@ -19032,8 +22280,30 @@ BUILDIN(progressbar)
clif->progressbar(sd, (unsigned int)strtoul(color, (char **)NULL, 0), second);
return true;
}
+static BUILDIN(progressbar_unit)
+{
+ const char *color = script_getstr(st, 2);
+ uint32 second = script_getnum(st, 3);
+
+ if (script_hasdata(st, 4)) {
+ struct block_list *bl = map->id2bl(script_getnum(st, 4));
-BUILDIN(pushpc)
+ if (bl == NULL) {
+ ShowWarning("buildin_progressbar_unit: Error in finding object with given GID %d!\n", script_getnum(st, 4));
+ return true;
+ }
+ clif->progressbar_unit(bl, (unsigned int)strtoul(color, (char **)NULL, 0), second);
+ } else {
+ struct map_session_data *sd = script->rid2sd(st);
+
+ if (sd == NULL)
+ return false;
+
+ clif->progressbar_unit(&sd->bl, (unsigned int)strtoul(color, (char **)NULL, 0), second);
+ }
+ return true;
+}
+static BUILDIN(pushpc)
{
uint8 dir;
int cells, dx, dy;
@@ -19073,7 +22343,7 @@ BUILDIN(pushpc)
/// Invokes buying store preparation window
/// buyingstore <slots>;
-BUILDIN(buyingstore)
+static BUILDIN(buyingstore)
{
struct map_session_data* sd;
@@ -19087,7 +22357,7 @@ BUILDIN(buyingstore)
/// Invokes search store info window
/// searchstores <uses>,<effect>;
-BUILDIN(searchstores)
+static BUILDIN(searchstores)
{
unsigned short effect;
unsigned int uses;
@@ -19118,7 +22388,7 @@ BUILDIN(searchstores)
}
/// Displays a number as large digital clock.
/// showdigit <value>[,<type>];
-BUILDIN(showdigit)
+static BUILDIN(showdigit)
{
unsigned int type = 0;
int value;
@@ -19148,7 +22418,7 @@ BUILDIN(showdigit)
/**
* Rune Knight
**/
-BUILDIN(makerune)
+static BUILDIN(makerune)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -19161,15 +22431,19 @@ BUILDIN(makerune)
/**
* hascashmount() returns 1 if mounting a cash mount or 0 otherwise
**/
-BUILDIN(hascashmount)
+static BUILDIN(hascashmount)
{
struct map_session_data *sd = script->rid2sd(st);
+
if (sd == NULL)
return true;
- if( sd->sc.data[SC_ALL_RIDING] )
- script_pushint(st,1);
- else
- script_pushint(st,0);
+
+ if (sd->sc.data[SC_ALL_RIDING]) {
+ script_pushint(st, 1);
+ } else {
+ script_pushint(st, 0);
+ }
+
return true;
}
@@ -19180,21 +22454,27 @@ BUILDIN(hascashmount)
* - Will fail if the player is already riding a standard mount e.g. dragon, peco, wug, mado, etc.
* - Will unmount the player is he is already mounting a cash mount
**/
-BUILDIN(setcashmount)
+static BUILDIN(setcashmount)
{
struct map_session_data *sd = script->rid2sd(st);
+
if (sd == NULL)
return true;
+
if (pc_hasmount(sd)) {
- clif->msgtable(sd, MSG_REINS_CANT_USE_MOUNTED);
- script_pushint(st,0);//can't mount with one of these
+#if PACKETVER >= 20110531
+ clif->msgtable(sd, MSG_FAIELD_RIDING_OVERLAPPED);
+#endif
+ script_pushint(st, 0); // Can't mount with one of these
} else {
- if (sd->sc.data[SC_ALL_RIDING])
+ if (sd->sc.data[SC_ALL_RIDING]) {
status_change_end(&sd->bl, SC_ALL_RIDING, INVALID_TIMER);
- else
- sc_start(NULL, &sd->bl, SC_ALL_RIDING, 100, 25, INFINITE_DURATION);
- script_pushint(st,1);//in both cases, return 1.
+ } else {
+ sc_start(NULL, &sd->bl, SC_ALL_RIDING, 100, battle_config.boarding_halter_speed, INFINITE_DURATION);
+ }
+ script_pushint(st, 1); // In both cases, return 1.
}
+
return true;
}
@@ -19202,7 +22482,7 @@ BUILDIN(setcashmount)
* Retrieves quantity of arguments provided to callfunc/callsub.
* getargcount() -> amount of arguments received in a function
**/
-BUILDIN(getargcount)
+static BUILDIN(getargcount)
{
struct script_retinfo* ri;
@@ -19221,7 +22501,7 @@ BUILDIN(getargcount)
/**
* getcharip(<account ID>/<character ID>/<character name>)
**/
-BUILDIN(getcharip)
+static BUILDIN(getcharip)
{
struct map_session_data* sd = NULL;
@@ -19256,25 +22536,59 @@ BUILDIN(getcharip)
return true;
}
+enum function_type {
+ FUNCTION_IS_NONE = 0,
+ FUNCTION_IS_COMMAND,
+ FUNCTION_IS_GLOBAL,
+ FUNCTION_IS_LOCAL,
+ FUNCTION_IS_LABEL,
+};
+
/**
- * is_function(<function name>) -> 1 if function exists, 0 otherwise
+ * is_function(<function name>)
**/
-BUILDIN(is_function)
+static BUILDIN(is_function)
{
- const char* str = script_getstr(st,2);
+ const char *str = script_getstr(st, 2);
+ enum function_type type = FUNCTION_IS_NONE;
- if( strdb_exists(script->userfunc_db, str) )
- script_pushint(st,1);
- else
- script_pushint(st,0);
+ // TODO: add support for exported functions (#2142)
+ if (strdb_exists(script->userfunc_db, str)) {
+ type = FUNCTION_IS_GLOBAL;
+ } else {
+ int n = script->search_str(str);
+
+ if (n >= 0) {
+ switch (script->str_data[n].type) {
+ case C_FUNC:
+ type = FUNCTION_IS_COMMAND;
+ break;
+ case C_USERFUNC:
+ case C_USERFUNC_POS:
+ type = FUNCTION_IS_LOCAL;
+ break;
+ case C_POS:
+ type = FUNCTION_IS_LABEL;
+ break;
+ case C_NAME:
+ if (script->str_data[n].label >= 0) {
+ // WTF... ?
+ // for some reason local functions can have type C_NAME
+ type = FUNCTION_IS_LOCAL;
+ }
+ }
+ }
+ }
+
+ script_pushint(st, type);
return true;
}
/**
* freeloop(<toggle>) -> toggles this script instance's looping-check ability
**/
-BUILDIN(freeloop)
+static BUILDIN(freeloop)
{
if( script_getnum(st,2) )
st->freeloop = 1;
@@ -19286,7 +22600,7 @@ BUILDIN(freeloop)
return true;
}
-BUILDIN(sit)
+static BUILDIN(sit)
{
struct map_session_data *sd = NULL;
@@ -19307,7 +22621,7 @@ BUILDIN(sit)
return true;
}
-BUILDIN(stand)
+static BUILDIN(stand)
{
struct map_session_data *sd = NULL;
@@ -19328,7 +22642,7 @@ BUILDIN(stand)
return true;
}
-BUILDIN(issit)
+static BUILDIN(issit)
{
struct map_session_data *sd = NULL;
@@ -19347,10 +22661,47 @@ BUILDIN(issit)
return true;
}
+static BUILDIN(add_group_command)
+{
+ AtCommandInfo *acmd_d;
+ struct atcmd_binding_data *bcmd_d;
+ GroupSettings *group;
+ int group_index;
+ const char *atcmd = script_getstr(st, 2);
+ int group_id = script_getnum(st, 3);
+ bool self_perm = (script_getnum(st, 4) == 1);
+ bool char_perm = (script_getnum(st, 5) == 1);
+
+ if (!pcg->exists(group_id)) {
+ ShowWarning("script:add_group_command: group does not exist: %i\n", group_id);
+ script_pushint(st, 0);
+ return false;
+ }
+
+ group = pcg->id2group(group_id);
+ group_index = pcg->get_idx(group);
+
+ if ((bcmd_d = atcommand->get_bind_byname(atcmd)) != NULL) {
+ bcmd_d->at_groups[group_index] = self_perm;
+ bcmd_d->char_groups[group_index] = char_perm;
+ script_pushint(st, 1);
+ return true;
+ } else if ((acmd_d = atcommand->get_info_byname(atcmd)) != NULL) {
+ acmd_d->at_groups[group_index] = self_perm;
+ acmd_d->char_groups[group_index] = char_perm;
+ script_pushint(st, 1);
+ return true;
+ }
+
+ ShowWarning("script:add_group_command: command does not exist: %s\n", atcmd);
+ script_pushint(st, 0);
+ return false;
+}
+
/**
* @commands (script based)
**/
-BUILDIN(bindatcmd)
+static BUILDIN(bindatcmd)
{
const char* atcmd;
const char* eventName;
@@ -19396,12 +22747,14 @@ BUILDIN(bindatcmd)
atcommand->binding[i]->group_lv = group_lv;
atcommand->binding[i]->group_lv_char = group_lv_char;
atcommand->binding[i]->log = log;
+ CREATE(atcommand->binding[i]->at_groups, char, db_size(pcg->db));
+ CREATE(atcommand->binding[i]->char_groups, char, db_size(pcg->db));
}
return true;
}
-BUILDIN(unbindatcmd)
+static BUILDIN(unbindatcmd)
{
const char* atcmd;
int i = 0;
@@ -19419,6 +22772,8 @@ BUILDIN(unbindatcmd)
ARR_FIND(0, atcommand->binding_count, i, strcmp(atcommand->binding[i]->command, atcmd) == 0);
if( i < atcommand->binding_count ) {
int cursor = 0;
+ aFree(atcommand->binding[i]->at_groups);
+ aFree(atcommand->binding[i]->char_groups);
aFree(atcommand->binding[i]);
atcommand->binding[i] = NULL;
/* compact the list now that we freed a slot somewhere */
@@ -19443,7 +22798,7 @@ BUILDIN(unbindatcmd)
return true;
}
-BUILDIN(useatcmd)
+static BUILDIN(useatcmd)
{
struct map_session_data *sd, *dummy_sd = NULL;
int fd;
@@ -19481,8 +22836,69 @@ BUILDIN(useatcmd)
return true;
}
+static 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;
+}
+
+static 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)
+static BUILDIN(getrandgroupitem)
{
struct item_data *data = NULL;
struct map_session_data *sd = NULL;
@@ -19523,7 +22939,7 @@ BUILDIN(getrandgroupitem)
if ((flag = pc->additem(sd, &it, get_count, LOG_TYPE_SCRIPT))) {
clif->additem(sd, 0, 0, flag);
if( pc->candrop(sd,&it) )
- map->addflooritem(&sd->bl, &it, get_count, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0);
+ map->addflooritem(&sd->bl, &it, get_count, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false);
}
}
}
@@ -19536,14 +22952,14 @@ BUILDIN(getrandgroupitem)
/* cleanmap <map_name>;
* cleanarea <map_name>, <x0>, <y0>, <x1>, <y1>; */
-int script_cleanfloor_sub(struct block_list *bl, va_list ap)
+static int script_cleanfloor_sub(struct block_list *bl, va_list ap)
{
map->clearflooritem(bl);
return 0;
}
-BUILDIN(cleanmap)
+static BUILDIN(cleanmap)
{
const char *mapname = script_getstr(st, 2);
int16 m = map->mapname2mapid(mapname);
@@ -19572,7 +22988,7 @@ BUILDIN(cleanmap)
/* Cast a skill on the attached player.
* npcskill <skill id>, <skill lvl>, <stat point>, <NPC level>;
* npcskill "<skill name>", <skill lvl>, <stat point>, <NPC level>; */
-BUILDIN(npcskill)
+static BUILDIN(npcskill)
{
struct npc_data *nd;
uint16 skill_id = script_isstringtype(st, 2) ? skill->name2id(script_getstr(st, 2)) : script_getnum(st, 2);
@@ -19618,7 +23034,7 @@ BUILDIN(npcskill)
/* Turns a player into a monster and grants SC attribute effect. [malufett/Hercules]
* montransform <monster name/id>, <duration>, <sc type>, <val1>, <val2>, <val3>, <val4>; */
-BUILDIN(montransform)
+static BUILDIN(montransform)
{
int tick;
enum sc_type type;
@@ -19702,7 +23118,7 @@ BUILDIN(montransform)
*
* @return The queue, or NULL if it doesn't exist.
*/
-struct script_queue *script_hqueue_get(int idx)
+static struct script_queue *script_hqueue_get(int idx)
{
if (idx < 0 || idx >= VECTOR_LENGTH(script->hq) || !VECTOR_INDEX(script->hq, idx).valid)
return NULL;
@@ -19714,7 +23130,7 @@ struct script_queue *script_hqueue_get(int idx)
*
* @return The index of the created queue.
*/
-int script_hqueue_create(void)
+static int script_hqueue_create(void)
{
struct script_queue *queue = NULL;
int i;
@@ -19741,7 +23157,7 @@ int script_hqueue_create(void)
* .@queue_id = queue();
* @endcode
*/
-BUILDIN(queue)
+static BUILDIN(queue)
{
script_pushint(st,script->queue_create());
return true;
@@ -19756,7 +23172,7 @@ BUILDIN(queue)
* .@size = queuesize(<queue id>);
* \endcode
*/
-BUILDIN(queuesize)
+static BUILDIN(queuesize)
{
int idx = script_getnum(st, 2);
@@ -19778,7 +23194,7 @@ BUILDIN(queuesize)
* @retval false if the queue is invalid or the entry is already in the queue.
* @retval true in case of success.
*/
-bool script_hqueue_add(int idx, int var)
+static bool script_hqueue_add(int idx, int var)
{
int i;
struct map_session_data *sd = NULL;
@@ -19816,7 +23232,7 @@ bool script_hqueue_add(int idx, int var)
* .@size = queuesize(.@queue_id);
* @endcode
*/
-BUILDIN(queueadd)
+static BUILDIN(queueadd)
{
int idx = script_getnum(st, 2);
int var = script_getnum(st, 3);
@@ -19837,7 +23253,7 @@ BUILDIN(queueadd)
* @retval true if the entry was removed.
* @retval false if the entry wasn't in queue.
*/
-bool script_hqueue_remove(int idx, int var)
+static bool script_hqueue_remove(int idx, int var)
{
int i;
struct map_session_data *sd = NULL;
@@ -19874,7 +23290,7 @@ bool script_hqueue_remove(int idx, int var)
* queueremove(.@queue_id, .@value);
* @endcode
*/
-BUILDIN(queueremove)
+static BUILDIN(queueremove)
{
int idx = script_getnum(st, 2);
int var = script_getnum(st, 3);
@@ -19890,7 +23306,7 @@ BUILDIN(queueremove)
/**
* Script command queueopt: Modifies the options of a queue.
*
- * When the option value isn't provided, the option is removed.
+ * When the <event label> isn't provided, the option is removed.
*
* Returns 1 (true) on success, 0 (false) on failure.
*
@@ -19900,13 +23316,13 @@ BUILDIN(queueremove)
* - QUEUEOPT_MAPCHANGE
*
* When the QUEUEOPT_MAPCHANGE event is triggered, it sets a temporary
- * character variable \c @Queue_Destination_Map$ with the destination map name.
+ * character variable @Queue_Destination_Map$ with the destination map name.
*
* @code{.herc}
- * queueopt(.@queue_id, optionType, <optional val>);
+ * queueopt(.@queue_id, optionType{, <event label>});
* @endcode
*/
-BUILDIN(queueopt)
+static BUILDIN(queueopt)
{
int idx = script_getnum(st, 2);
int var = script_getnum(st, 3);
@@ -19956,7 +23372,7 @@ BUILDIN(queueopt)
* @retval true if the queue was correctly deleted.
* @retval false if the queue didn't exist.
*/
-bool script_hqueue_del(int idx)
+static bool script_hqueue_del(int idx)
{
if (!script->queue_clear(idx))
return false;
@@ -19975,7 +23391,7 @@ bool script_hqueue_del(int idx)
* queuedel(.@queue_id);
* @endcode
*/
-BUILDIN(queuedel)
+static BUILDIN(queuedel)
{
int idx = script_getnum(st, 2);
@@ -19995,7 +23411,7 @@ BUILDIN(queuedel)
* @retval true if the queue was correctly cleared.
* @retval false if the queue didn't exist.
*/
-bool script_hqueue_clear(int idx)
+static bool script_hqueue_clear(int idx)
{
struct script_queue *queue = NULL;
@@ -20032,7 +23448,7 @@ bool script_hqueue_clear(int idx)
* .@id = queueiterator(.@queue_id);
* @endcode
*/
-BUILDIN(queueiterator)
+static BUILDIN(queueiterator)
{
int qid = script_getnum(st, 2);
struct script_queue *queue = NULL;
@@ -20075,7 +23491,7 @@ BUILDIN(queueiterator)
* }
* @endcode
*/
-BUILDIN(qiget)
+static BUILDIN(qiget)
{
int idx = script_getnum(st, 2);
struct script_queue_iterator *it = NULL;
@@ -20109,7 +23525,7 @@ BUILDIN(qiget)
* }
* @endcode
*/
-BUILDIN(qicheck)
+static BUILDIN(qicheck)
{
int idx = script_getnum(st, 2);
struct script_queue_iterator *it = NULL;
@@ -20140,7 +23556,7 @@ BUILDIN(qicheck)
* qiclear(.@iter);
* @endcode
*/
-BUILDIN(qiclear)
+static BUILDIN(qiclear)
{
int idx = script_getnum(st, 2);
struct script_queue_iterator *it = NULL;
@@ -20165,7 +23581,8 @@ BUILDIN(qiclear)
* packageitem({<optional container_item_id>})
* when no item id is provided it tries to assume it comes from the current item id being processed (if any)
**/
-BUILDIN(packageitem) {
+static BUILDIN(packageitem)
+{
struct item_data *data = NULL;
struct map_session_data *sd = NULL;
int nameid;
@@ -20199,7 +23616,8 @@ BUILDIN(packageitem) {
/* New Battlegrounds Stuff */
/* bg_team_create(map_name,respawn_x,respawn_y) */
/* returns created team id or -1 when fails */
-BUILDIN(bg_create_team) {
+static BUILDIN(bg_create_team)
+{
const char *map_name, *ev = "", *dev = "";//ev and dev will be dropped.
int x, y, map_index = 0, bg_id;
@@ -20226,7 +23644,8 @@ BUILDIN(bg_create_team) {
/* bg_join_team(team_id{,optional account id}) */
/* when account id is not present it tries to autodetect from the attached player (if any) */
/* returns 0 when successful, 1 otherwise */
-BUILDIN(bg_join_team) {
+static BUILDIN(bg_join_team)
+{
struct map_session_data *sd;
int team_id = script_getnum(st, 2);
@@ -20252,9 +23671,9 @@ BUILDIN(bg_join_team) {
* 3 - Party Bound
* 4 - Character Bound
*------------------------------------------*/
-BUILDIN(countbound)
+static BUILDIN(countbound)
{
- int i, type, j=0, k=0;
+ int type, j=0, k=0;
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -20262,12 +23681,12 @@ BUILDIN(countbound)
type = script_hasdata(st,2)?script_getnum(st,2):0;
- for(i=0;i<MAX_INVENTORY;i++) {
+ for (int i = 0; i < sd->status.inventorySize; i++) {
if(sd->status.inventory[i].nameid > 0 && (
(!type && sd->status.inventory[i].bound > 0) ||
(type && sd->status.inventory[i].bound == type)
)) {
- pc->setreg(sd,reference_uid(script->add_str("@bound_items"), k),sd->status.inventory[i].nameid);
+ pc->setreg(sd,reference_uid(script->add_variable("@bound_items"), k),sd->status.inventory[i].nameid);
k++;
j += sd->status.inventory[i].amount;
}
@@ -20287,7 +23706,7 @@ BUILDIN(countbound)
* 3 - Party Bound
* 4 - Character Bound
*------------------------------------------*/
-BUILDIN(checkbound)
+static BUILDIN(checkbound)
{
int i, nameid = script_getnum(st,2);
int bound_type = 0;
@@ -20308,27 +23727,28 @@ BUILDIN(checkbound)
ShowError("script_checkbound: Not a valid bind type! Type=%d\n", bound_type);
}
- ARR_FIND( 0, MAX_INVENTORY, i, (sd->status.inventory[i].nameid == nameid &&
+ ARR_FIND(0, sd->status.inventorySize, i, (sd->status.inventory[i].nameid == nameid &&
( sd->status.inventory[i].refine == (script_hasdata(st,4)? script_getnum(st,4) : sd->status.inventory[i].refine) ) &&
( sd->status.inventory[i].attribute == (script_hasdata(st,5)? script_getnum(st,5) : sd->status.inventory[i].attribute) ) &&
( sd->status.inventory[i].card[0] == (script_hasdata(st,6)? script_getnum(st,6) : sd->status.inventory[i].card[0]) ) &&
( sd->status.inventory[i].card[1] == (script_hasdata(st,7)? script_getnum(st,7) : sd->status.inventory[i].card[1]) ) &&
( sd->status.inventory[i].card[2] == (script_hasdata(st,8)? script_getnum(st,8) : sd->status.inventory[i].card[2]) ) &&
( sd->status.inventory[i].card[3] == (script_hasdata(st,9)? script_getnum(st,9) : sd->status.inventory[i].card[3]) ) &&
- ((sd->status.inventory[i].bound > 0 && !bound_type) || sd->status.inventory[i].bound == bound_type )) );
+ ((sd->status.inventory[i].bound > 0 && !bound_type) || sd->status.inventory[i].bound == bound_type)));
- if( i < MAX_INVENTORY ){
+ if (i < sd->status.inventorySize) {
script_pushint(st, sd->status.inventory[i].bound);
return true;
- } else
+ } else {
script_pushint(st,0);
+ }
return true;
}
/* bg_match_over( arena_name {, optional canceled } ) */
/* returns 0 when successful, 1 otherwise */
-BUILDIN(bg_match_over)
+static BUILDIN(bg_match_over)
{
bool canceled = script_hasdata(st,3) ? true : false;
struct bg_arena *arena = bg->name2arena(script_getstr(st, 2));
@@ -20342,7 +23762,7 @@ BUILDIN(bg_match_over)
return true;
}
-BUILDIN(instance_mapname)
+static BUILDIN(instance_mapname)
{
const char *map_name;
int m;
@@ -20367,7 +23787,7 @@ BUILDIN(instance_mapname)
/* modify an instances' reload-spawn point */
/* instance_set_respawn <map_name>,<x>,<y>{,<instance_id>} */
/* returns 1 when successful, 0 otherwise. */
-BUILDIN(instance_set_respawn)
+static BUILDIN(instance_set_respawn)
{
const char *map_name;
short instance_id = -1;
@@ -20415,7 +23835,7 @@ BUILDIN(instance_set_respawn)
*
* @return 1 on success, 0 otherwise.
**/
-BUILDIN(openshop)
+static BUILDIN(openshop)
{
struct npc_data *nd;
struct map_session_data *sd;
@@ -20452,12 +23872,13 @@ BUILDIN(openshop)
* adds <Item_ID> (or modifies if present) to shop
* if price not provided (or -1) uses the item's value_sell
**/
-BUILDIN(sellitem)
+static BUILDIN(sellitem)
{
struct npc_data *nd;
struct item_data *it;
int i = 0, id = script_getnum(st,2);
int value = 0;
+ int value2 = 0;
int qty = 0;
if( !(nd = map->id2nd(st->oid)) ) {
@@ -20468,17 +23889,43 @@ BUILDIN(sellitem)
return false;
}
- value = script_hasdata(st,3) ? script_getnum(st, 3) : it->value_buy;
- if( value == -1 )
- value = it->value_buy;
-
- if( !nd->u.scr.shop )
- npc->trader_update(nd->src_id?nd->src_id:nd->bl.id);
- else {/* no need to run this if its empty */
- for( i = 0; i < nd->u.scr.shop->items; i++ ) {
- if( nd->u.scr.shop->item[i].nameid == id )
- break;
+ if (!nd->u.scr.shop) {
+ npc->trader_update(nd->src_id ? nd->src_id : nd->bl.id);
+ if (nd->u.scr.shop->type == NST_BARTER) {
+ if (!script_hasdata(st, 5)) {
+ ShowError("buildin_sellitem: invalid number of parameters for barter-type shop!\n");
+ return false;
+ }
+ value = script_getnum(st, 4);
+ value2 = script_getnum(st, 5);
}
+ } else {/* no need to run this if its empty */
+ if (nd->u.scr.shop->type == NST_BARTER) {
+ if (!script_hasdata(st, 5)) {
+ ShowError("buildin_sellitem: invalid number of parameters for barter-type shop!\n");
+ return false;
+ }
+ value = script_getnum(st, 4);
+ value2 = script_getnum(st, 5);
+ for (i = 0; i < nd->u.scr.shop->items; i++) {
+ const struct npc_item_list *const item = &nd->u.scr.shop->item[i];
+ if (item->nameid == id && item->value == value && item->value2 == value2) {
+ break;
+ }
+ }
+ } else {
+ for (i = 0; i < nd->u.scr.shop->items; i++) {
+ if (nd->u.scr.shop->item[i].nameid == id) {
+ break;
+ }
+ }
+ }
+ }
+
+ if (nd->u.scr.shop->type != NST_BARTER) {
+ value = script_hasdata(st,3) ? script_getnum(st, 3) : it->value_buy;
+ if( value == -1 )
+ value = it->value_buy;
}
if( nd->u.scr.shop->type == NST_MARKET ) {
@@ -20493,19 +23940,29 @@ BUILDIN(sellitem)
it->name, id, value, (int)(value*0.75), it->value_sell, (int)(it->value_sell*1.24), nd->exname, nd->path);
}
- if( i != nd->u.scr.shop->items ) {
+ if (nd->u.scr.shop->type == NST_BARTER) {
+ qty = script_getnum(st, 3);
+ if (qty < -1 || value <= 0 || value2 <= 0) {
+ ShowError("buildin_sellitem: invalid parameters for barter-type shop!\n");
+ return false;
+ }
+ }
+
+ if (i != nd->u.scr.shop->items) {
nd->u.scr.shop->item[i].value = value;
nd->u.scr.shop->item[i].qty = qty;
- if( nd->u.scr.shop->type == NST_MARKET ) /* has been manually updated, make it reflect on sql */
- npc->market_tosql(nd,i);
+ if (nd->u.scr.shop->type == NST_MARKET) /* has been manually updated, make it reflect on sql */
+ npc->market_tosql(nd, i);
+ else if (nd->u.scr.shop->type == NST_BARTER) /* has been manually updated, make it reflect on sql */
+ npc->barter_tosql(nd, i);
} else {
- for( i = 0; i < nd->u.scr.shop->items; i++ ) {
- if( nd->u.scr.shop->item[i].nameid == 0 )
+ for (i = 0; i < nd->u.scr.shop->items; i++) {
+ if (nd->u.scr.shop->item[i].nameid == 0)
break;
}
- if( i == nd->u.scr.shop->items ) {
- if( nd->u.scr.shop->items == USHRT_MAX ) {
+ if (i == nd->u.scr.shop->items) {
+ if (nd->u.scr.shop->items == USHRT_MAX) {
ShowWarning("buildin_sellitem: Can't add %s (%s/%s), shop list is full!\n", it->name, nd->exname, nd->path);
return false;
}
@@ -20515,6 +23972,7 @@ BUILDIN(sellitem)
nd->u.scr.shop->item[i].nameid = it->nameid;
nd->u.scr.shop->item[i].value = value;
+ nd->u.scr.shop->item[i].value2 = value2;
nd->u.scr.shop->item[i].qty = qty;
}
@@ -20528,38 +23986,58 @@ BUILDIN(sellitem)
*
* @return 1 on success, 0 otherwise
**/
-BUILDIN(stopselling)
+static BUILDIN(stopselling)
{
struct npc_data *nd;
- int i, id = script_getnum(st,2);
+ int i, id = script_getnum(st, 2);
- if( !(nd = map->id2nd(st->oid)) || !nd->u.scr.shop ) {
+ if (!(nd = map->id2nd(st->oid)) || !nd->u.scr.shop) {
ShowWarning("buildin_stopselling: trying to run without a proper NPC!\n");
return false;
}
- for( i = 0; i < nd->u.scr.shop->items; i++ ) {
- if( nd->u.scr.shop->item[i].nameid == id )
- break;
+ if (nd->u.scr.shop->type == NST_BARTER) {
+ if (!script_hasdata(st, 4)) {
+ ShowError("buildin_stopselling: called with wrong number of arguments\n");
+ return false;
+ }
+ const int id2 = script_getnum(st, 3);
+ const int amount2 = script_getnum(st, 4);
+ for (i = 0; i < nd->u.scr.shop->items; i++) {
+ const struct npc_item_list *const item = &nd->u.scr.shop->item[i];
+ if (item->nameid == id && item->value == id2 && item->value2 == amount2) {
+ break;
+ }
+ }
+ } else {
+ for (i = 0; i < nd->u.scr.shop->items; i++) {
+ if (nd->u.scr.shop->item[i].nameid == id) {
+ break;
+ }
+ }
}
- if( i != nd->u.scr.shop->items ) {
+ if (i != nd->u.scr.shop->items) {
int cursor;
- if( nd->u.scr.shop->type == NST_MARKET )
- npc->market_delfromsql(nd,i);
+ if (nd->u.scr.shop->type == NST_MARKET)
+ npc->market_delfromsql(nd, i);
+ if (nd->u.scr.shop->type == NST_BARTER)
+ npc->barter_delfromsql(nd, i);
nd->u.scr.shop->item[i].nameid = 0;
nd->u.scr.shop->item[i].value = 0;
+ nd->u.scr.shop->item[i].value2 = 0;
nd->u.scr.shop->item[i].qty = 0;
- for( i = 0, cursor = 0; i < nd->u.scr.shop->items; i++ ) {
- if( nd->u.scr.shop->item[i].nameid == 0 )
+ for (i = 0, cursor = 0; i < nd->u.scr.shop->items; i++) {
+ if (nd->u.scr.shop->item[i].nameid == 0)
continue;
- if( cursor != i ) {
+ if (cursor != i) {
nd->u.scr.shop->item[cursor].nameid = nd->u.scr.shop->item[i].nameid;
nd->u.scr.shop->item[cursor].value = nd->u.scr.shop->item[i].value;
+ nd->u.scr.shop->item[cursor].value2 = nd->u.scr.shop->item[i].value2;
nd->u.scr.shop->item[cursor].qty = nd->u.scr.shop->item[i].qty;
}
@@ -20579,7 +24057,7 @@ BUILDIN(stopselling)
* updates currently-attached player shop currency
**/
/* setcurrency(<Val1>,{<Val2>}) */
-BUILDIN(setcurrency)
+static BUILDIN(setcurrency)
{
int val1 = script_getnum(st,2),
val2 = script_hasdata(st, 3) ? script_getnum(st,3) : 0;
@@ -20603,7 +24081,7 @@ BUILDIN(setcurrency)
* check enum npc_shop_types for list
* cleans shop list on use
**/
-BUILDIN(tradertype)
+static BUILDIN(tradertype)
{
int type = script_getnum(st, 2);
struct npc_data *nd;
@@ -20625,7 +24103,8 @@ BUILDIN(tradertype)
nd->u.scr.shop->item[i].value = 0;
nd->u.scr.shop->item[i].qty = 0;
}
- npc->market_delfromsql(nd,USHRT_MAX);
+ npc->market_delfromsql(nd, INT_MAX);
+ npc->barter_delfromsql(nd, INT_MAX);
}
#if PACKETVER < 20131223
@@ -20634,6 +24113,12 @@ BUILDIN(tradertype)
script->reportsrc(st);
}
#endif
+#if PACKETVER_ZERO_NUM < 20181226
+ if (type == NST_BARTER) {
+ ShowWarning("buildin_tradertype: NST_BARTER is only available with PACKETVER_ZERO_NUM 20181226 or newer!\n");
+ script->reportsrc(st);
+ }
+#endif
if( nd->u.scr.shop )
nd->u.scr.shop->type = type;
@@ -20646,7 +24131,7 @@ BUILDIN(tradertype)
*
* signs the transaction can proceed
**/
-BUILDIN(purchaseok)
+static BUILDIN(purchaseok)
{
struct npc_data *nd;
@@ -20665,7 +24150,7 @@ BUILDIN(purchaseok)
*
* @return number of available items in the script's attached shop
**/
-BUILDIN(shopcount)
+static BUILDIN(shopcount)
{
struct npc_data *nd;
int id = script_getnum(st, 2);
@@ -20677,8 +24162,8 @@ BUILDIN(shopcount)
} else if ( !nd->u.scr.shop || !nd->u.scr.shop->items ) {
ShowWarning("buildin_shopcount(%d): trying to use without any items!\n",id);
return false;
- } else if ( nd->u.scr.shop->type != NST_MARKET ) {
- ShowWarning("buildin_shopcount(%d): trying to use on a non-NST_MARKET shop!\n",id);
+ } else if (nd->u.scr.shop->type != NST_MARKET && nd->u.scr.shop->type != NST_BARTER) {
+ ShowWarning("buildin_shopcount(%d): trying to use on a non-NST_MARKET and non-NST_BARTER shop!\n",id);
return false;
}
@@ -20703,9 +24188,9 @@ BUILDIN(shopcount)
* Sends a message through the specified chat channel.
*
*/
-BUILDIN(channelmes)
+static BUILDIN(channelmes)
{
- struct map_session_data *sd = script->rid2sd(st);
+ struct map_session_data *sd = map->id2sd(st->rid);
const char *channelname = script_getstr(st, 2);
struct channel_data *chan = channel->search(channelname, sd);
@@ -20720,11 +24205,62 @@ BUILDIN(channelmes)
return true;
}
+static BUILDIN(addchannelhandler)
+{
+ int i;
+ struct map_session_data *sd = map->id2sd(st->rid);
+ const char *channelname = script_getstr(st, 2);
+ const char *eventname = script_getstr(st, 3);
+ struct channel_data *chan = channel->search(channelname, sd);
+
+ 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;
+}
+
+static BUILDIN(removechannelhandler)
+{
+ int i;
+ struct map_session_data *sd = map->id2sd(st->rid);
+ const char *channelname = script_getstr(st, 2);
+ const char *eventname = script_getstr(st, 3);
+ struct channel_data *chan = channel->search(channelname, sd);
+
+ 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>};
-*/
-BUILDIN(showscript)
+ * Display script message
+ * showscript "<message>"{, <GID>};
+ */
+static BUILDIN(showscript)
{
struct block_list *bl = NULL;
const char *msg = script_getstr(st, 2);
@@ -20751,7 +24287,7 @@ BUILDIN(showscript)
return true;
}
-BUILDIN(mergeitem)
+static BUILDIN(mergeitem)
{
struct map_session_data *sd = script->rid2sd(st);
@@ -20763,8 +24299,102 @@ BUILDIN(mergeitem)
return true;
}
+// getcalendartime(<day of month>, <day of week>{, <hour>{, <minute>}});
+// Returns the UNIX Timestamp of next ocurrency of given time
+static BUILDIN(getcalendartime)
+{
+ struct tm info = { 0 };
+ int day_of_month = script_hasdata(st, 4) ? script_getnum(st, 4) : -1;
+ int day_of_week = script_hasdata(st, 5) ? script_getnum(st, 5) : -1;
+ int year = date_get_year();
+ int month = date_get_month();
+ int day = date_get_day();
+ int cur_hour = date_get_hour();
+ int cur_min = date_get_min();
+ int hour = script_getnum(st, 2);
+ int minute = script_getnum(st, 3);
+
+ info.tm_sec = 0;
+ info.tm_min = minute;
+ info.tm_hour = hour;
+ info.tm_mday = day;
+ info.tm_mon = month - 1;
+ info.tm_year = year - 1900;
+
+ if (day_of_month > -1 && day_of_week > -1) {
+ ShowError("script:getcalendartime: You must only specify a day_of_week or a day_of_month, not both\n");
+ script_pushint(st, -1);
+ return false;
+ }
+ if (day_of_month > -1 && (day_of_month < 1 || day_of_month > 31)) {
+ ShowError("script:getcalendartime: Day of Month in invalid range. Must be between 1 and 31.\n");
+ script_pushint(st, -1);
+ return false;
+ }
+ if (day_of_week > -1 && (day_of_week < 0 || day_of_week > 6)) {
+ ShowError("script:getcalendartime: Day of Week in invalid range. Must be between 0 and 6.\n");
+ script_pushint(st, -1);
+ return false;
+ }
+ if (hour > -1 && (hour > 23)) {
+ ShowError("script:getcalendartime: Hour in invalid range. Must be between 0 and 23.\n");
+ script_pushint(st, -1);
+ return false;
+ }
+ if (minute > -1 && (minute > 59)) {
+ ShowError("script:getcalendartime: Minute in invalid range. Must be between 0 and 59.\n");
+ script_pushint(st, -1);
+ return false;
+ }
+ if (hour == -1 || minute == -1) {
+ ShowError("script:getcalendartime: Minutes and Hours are required\n");
+ script_pushint(st, -1);
+ return false;
+ }
+
+ if (day_of_month > -1) {
+ if (day_of_month < day) { // Next Month
+ info.tm_mon++;
+ } else if (day_of_month == day) { // Today
+ if (hour < cur_hour || (hour == cur_hour && minute < cur_min)) { // But past time, next month
+ info.tm_mon++;
+ }
+ }
+
+ // Loops until month has finding a month that has day_of_month
+ do {
+ time_t t;
+ struct tm *lt;
+ info.tm_mday = day_of_month;
+ t = mktime(&info);
+ lt = localtime(&t);
+ info = *lt;
+ } while (info.tm_mday != day_of_month);
+ } else if (day_of_week > -1) {
+ int cur_wday = date_get_dayofweek();
+
+ if (day_of_week > cur_wday) { // This week
+ info.tm_mday += (day_of_week - cur_wday);
+ } else if (day_of_week == cur_wday) { // Today
+ if (hour < cur_hour || (hour == cur_hour && minute <= cur_min)) {
+ info.tm_mday += 7; // Next week
+ }
+ } else if (day_of_week < cur_wday) { // Next week
+ info.tm_mday += (7 - cur_wday + day_of_week);
+ }
+ } else if (day_of_week == -1 && day_of_month == -1) { // Next occurence of hour/min
+ if (hour < cur_hour || (hour == cur_hour && minute < cur_min)) {
+ info.tm_mday++;
+ }
+ }
+
+ script_pushint(st, mktime(&info));
+
+ return true;
+}
+
/** place holder for the translation macro **/
-BUILDIN(_)
+static BUILDIN(_)
{
return true;
}
@@ -20775,7 +24405,51 @@ BUILDIN(activatepset);
BUILDIN(deactivatepset);
BUILDIN(deletepset);
-BUILDIN(pcre_match)
+enum dressroom_mode {
+ DRESSROOM_CLOSE = 0,
+ DRESSROOM_OPEN = 1
+};
+
+/**
+ * dressroom({<enum dressroom_mode>});
+ */
+static BUILDIN(dressroom)
+{
+#if PACKETVER >= 20150513
+ struct map_session_data *sd = script->rid2sd(st);
+ enum dressroom_mode mode = DRESSROOM_OPEN;
+
+ if (sd == NULL) {
+ return false;
+ }
+
+ if (script_hasdata(st, 2)) {
+ mode = script_getnum(st, 2);
+ }
+
+ switch (mode) {
+ case DRESSROOM_OPEN:
+ clif->dressroom_open(sd, 1);
+ break;
+ case DRESSROOM_CLOSE:
+ clif->dressroom_open(sd, 0);
+ break;
+ default:
+ ShowWarning("script:dressroom: unknown mode (%u).\n", mode);
+ script_pushint(st, 0);
+ return false;
+ }
+
+ script_pushint(st, 1);
+ return true;
+#else
+ ShowError("The dressing room works only with packet version >= 20150513");
+ script_pushint(st, 0);
+ return false;
+#endif
+}
+
+static BUILDIN(pcre_match)
{
const char *input = script_getstr(st, 2);
const char *regex = script_getstr(st, 3);
@@ -20787,7 +24461,7 @@ BUILDIN(pcre_match)
/**
* navigateto("<map>"{,<x>,<y>,<flag>,<hide_window>,<monster_id>,<char_id>});
*/
-BUILDIN(navigateto)
+static BUILDIN(navigateto)
{
#if PACKETVER >= 20111010
struct map_session_data* sd;
@@ -20826,6 +24500,494 @@ BUILDIN(navigateto)
#endif
}
+static bool rodex_sendmail_sub(struct script_state *st, struct rodex_message *msg)
+{
+ const char *sender_name, *title, *body;
+
+ if (strcmp(script->getfuncname(st), "rodex_sendmail_acc") == 0 || strcmp(script->getfuncname(st), "rodex_sendmail_acc2") == 0)
+ msg->receiver_accountid = script_getnum(st, 2);
+ else
+ msg->receiver_id = script_getnum(st, 2);
+
+ sender_name = script_getstr(st, 3);
+ if (strlen(sender_name) >= NAME_LENGTH) {
+ ShowError("script:rodex_sendmail: Sender name must not be bigger than %d!\n", NAME_LENGTH - 1);
+ return false;
+ }
+ safestrncpy(msg->sender_name, sender_name, NAME_LENGTH);
+
+ title = script_getstr(st, 4);
+ if (strlen(title) >= RODEX_TITLE_LENGTH) {
+ ShowError("script:rodex_sendmail: Mail Title must not be bigger than %d!\n", RODEX_TITLE_LENGTH - 1);
+ return false;
+ }
+ safestrncpy(msg->title, title, RODEX_TITLE_LENGTH);
+
+ body = script_getstr(st, 5);
+ if (strlen(body) >= MAIL_BODY_LENGTH) {
+ ShowError("script:rodex_sendmail: Mail Message must not be bigger than %d!\n", RODEX_BODY_LENGTH - 1);
+ return false;
+ }
+ safestrncpy(msg->body, body, MAIL_BODY_LENGTH);
+
+ if (script_hasdata(st, 6)) {
+ msg->zeny = script_getnum(st, 6);
+ if (msg->zeny < 0 || msg->zeny > MAX_ZENY) {
+ ShowError("script:rodex_sendmail: Invalid Zeny value %"PRId64"!\n", msg->zeny);
+ return false;
+ }
+ }
+
+ return true;
+}
+
+static BUILDIN(rodex_sendmail)
+{
+ struct rodex_message msg = { 0 };
+ int item_count = 0, i = 0, param = 7;
+
+ // Common parameters - sender/message/zeny
+ if (rodex_sendmail_sub(st, &msg) == false)
+ return false;
+
+ // Item list
+ while (i < RODEX_MAX_ITEM && script_hasdata(st, param)) {
+ struct item_data *idata;
+
+ if (!script_hasdata(st, param + 1)) {
+ ShowError("script:rodex_sendmail: Missing Item %d amount!\n", (i + 1));
+ return false;
+ }
+
+ ++item_count;
+ if (data_isstring(script_getdata(st, param)) == false) {
+ int itemid = script_getnum(st, param);
+
+ if (itemdb->exists(itemid) == false) {
+ ShowError("script:rodex_sendmail: Unknown item ID %d.\n", itemid);
+ return false;
+ }
+
+ idata = itemdb->search(itemid);
+ }
+ else {
+ ShowError("script:rodex_sendmail: Item %d must be passed as Number.\n", (i + 1));
+ return false;
+ }
+
+ msg.items[i].item.nameid = idata->nameid;
+ msg.items[i].item.amount = script_getnum(st, (param + 1));
+ msg.items[i].item.identify = 1;
+
+ ++i;
+ param += 2;
+ }
+ msg.items_count = item_count;
+
+ msg.type = MAIL_TYPE_NPC;
+ if (msg.zeny > 0)
+ msg.type |= MAIL_TYPE_ZENY;
+ if (msg.items_count > 0)
+ msg.type |= MAIL_TYPE_ITEM;
+ msg.send_date = (int)time(NULL);
+ msg.expire_date = (int)time(NULL) + RODEX_EXPIRE;
+
+ intif->rodex_sendmail(&msg);
+
+ return true;
+}
+
+static BUILDIN(rodex_sendmail2)
+{
+ struct rodex_message msg = { 0 };
+ int item_count = 0, i = 0, param = 7;
+
+ // Common parameters - sender/message/zeny
+ if (rodex_sendmail_sub(st, &msg) == false)
+ return false;
+
+ // Item list
+ while (i < RODEX_MAX_ITEM && script_hasdata(st, param)) {
+ struct item_data *idata;
+ int j;
+
+ // Tests
+ if (!script_hasdata(st, param + 1)) {
+ ShowError("script:rodex_sendmail: Missing Item %d amount!\n", (i + 1));
+ return false;
+ }
+ if (!script_hasdata(st, param + 2)) {
+ ShowError("script:rodex_sendmail: Missing Item %d refine!\n", (i + 1));
+ return false;
+ }
+ if (!script_hasdata(st, param + 3)) {
+ ShowError("script:rodex_sendmail: Missing Item %d attribute!\n", (i + 1));
+ return false;
+ }
+ for (j = 0; j < MAX_SLOTS; ++j) {
+ if (!script_hasdata(st, param + 4 + j)) {
+ ShowError("script:rodex_sendmail: Missing Item %d card %d!\n", (i + 1), j);
+ return false;
+ }
+ }
+
+ // Set data to message
+ ++item_count;
+ if (data_isstring(script_getdata(st, param)) == false) {
+ int itemid = script_getnum(st, param);
+
+ if (itemdb->exists(itemid) == false) {
+ ShowError("script:rodex_sendmail: Unknown item ID %d.\n", itemid);
+ return false;
+ }
+
+ idata = itemdb->search(itemid);
+ } else {
+ ShowError("script:rodex_sendmail: Item %d must be passed as Number.\n", (i + 1));
+ return false;
+ }
+
+ msg.items[i].item.nameid = idata->nameid;
+ msg.items[i].item.amount = script_getnum(st, (param + 1));
+ msg.items[i].item.refine = script_getnum(st, (param + 2));
+ msg.items[i].item.attribute = script_getnum(st, (param + 3));
+ msg.items[i].item.identify = 1;
+
+ for (j = 0; j < MAX_SLOTS; ++j) {
+ msg.items[i].item.card[j] = script_getnum(st, param + 4 + j);
+ }
+
+ ++i;
+ param += 4 + MAX_SLOTS;
+ }
+ msg.items_count = item_count;
+
+ msg.type = MAIL_TYPE_NPC;
+ if (msg.zeny > 0)
+ msg.type |= MAIL_TYPE_ZENY;
+ if (msg.items_count > 0)
+ msg.type |= MAIL_TYPE_ITEM;
+ msg.send_date = (int)time(NULL);
+ msg.expire_date = (int)time(NULL) + RODEX_EXPIRE;
+
+ intif->rodex_sendmail(&msg);
+
+ return true;
+}
+
+/**
+ * Clan System: Add a player to a clan
+ */
+static BUILDIN(clan_join)
+{
+ struct map_session_data *sd = NULL;
+ int clan_id = script_getnum(st, 2);
+
+ if (script_hasdata(st, 3))
+ sd = map->id2sd(script_getnum(st, 3));
+ else
+ sd = map->id2sd(st->rid);
+
+ if (sd == NULL) {
+ script_pushint(st, false);
+ return false;
+ }
+
+ if (clan->join(sd, clan_id))
+ script_pushint(st, true);
+ else
+ script_pushint(st, false);
+
+ return true;
+}
+
+/**
+ * Clan System: Remove a player from clan
+ */
+static BUILDIN(clan_leave)
+{
+ struct map_session_data *sd = NULL;
+
+ if (script_hasdata(st, 2))
+ sd = map->id2sd(script_getnum(st, 2));
+ else
+ sd = map->id2sd(st->rid);
+
+ if (sd == NULL) {
+ script_pushint(st, false);
+ return false;
+ }
+
+ if (clan->leave(sd, false))
+ script_pushint(st, true);
+ else
+ script_pushint(st, false);
+
+ return true;
+}
+
+/**
+ * Clan System: Show clan emblem next to npc name
+ */
+static BUILDIN(clan_master)
+{
+ struct npc_data *nd = map->id2nd(st->oid);
+ int clan_id = script_getnum(st, 2);
+
+ if (nd == NULL) {
+ script_pushint(st, false);
+ return false;
+ } else if (clan_id <= 0) {
+ script_pushint(st, false);
+ ShowError("buildin_clan_master: Received Invalid Clan ID %d\n", clan_id);
+ return false;
+ } else if (clan->search(clan_id) == NULL) {
+ script_pushint(st, false);
+ ShowError("buildin_clan_master: Received Id of a nonexistent Clan. Id: %d\n", clan_id);
+ return false;
+ }
+
+ nd->clan_id = clan_id;
+ clif->sc_load(&nd->bl, nd->bl.id, AREA, status->dbs->IconChangeTable[SC_CLAN_INFO], 0, clan_id, 0);
+
+ script_pushint(st, true);
+ return true;
+}
+
+static BUILDIN(airship_respond)
+{
+ struct map_session_data *sd = map->id2sd(st->rid);
+ int32 flag = script_getnum(st, 2);
+
+ if (sd == NULL)
+ return false;
+
+ if (flag < P_AIRSHIP_NONE || flag > P_AIRSHIP_ITEM_INVALID) {
+ ShowWarning("buildin_airship_respond: invalid flag %d has been given.", flag);
+ return false;
+ }
+
+ clif->PrivateAirshipResponse(sd, flag);
+ return true;
+}
+
+/**
+ * hateffect(EffectID, Enable_State)
+ */
+static BUILDIN(hateffect)
+{
+#if PACKETVER >= 20150422
+ struct map_session_data *sd = script_rid2sd(st);
+ int effectId, enabled = 0;
+ int i;
+
+ if (sd == NULL)
+ return false;
+
+ effectId = script_getnum(st, 2);
+ enabled = script_getnum(st, 3);
+
+ for (i = 0; i < VECTOR_LENGTH(sd->hatEffectId); ++i) {
+ if (VECTOR_INDEX(sd->hatEffectId, i) == effectId) {
+ if (enabled == 1) { // Already Enabled
+ return true;
+ } else { // Remove
+ VECTOR_ERASE(sd->hatEffectId, i);
+ clif->hat_effect_single(&sd->bl, effectId, enabled);
+ return true;
+ }
+ }
+ }
+
+ VECTOR_ENSURE(sd->hatEffectId, 1, 1);
+ VECTOR_PUSH(sd->hatEffectId, effectId);
+
+ clif->hat_effect_single(&sd->bl, effectId, enabled);
+#endif
+ return true;
+}
+
+static BUILDIN(openstylist)
+{
+ struct map_session_data *sd = script_rid2sd(st);
+
+ if (sd == NULL)
+ return false;
+
+#if PACKETVER >= 20150128
+ clif->open_ui(sd, CZ_STYLIST_UI);
+#endif
+ return true;
+}
+
+static BUILDIN(msgtable)
+{
+ struct map_session_data *sd = script_rid2sd(st);
+ if (sd == NULL)
+ return false;
+
+ const enum clif_messages msgId = script_getnum(st, 2);
+ if (script_hasdata(st, 3)) {
+ clif->msgtable_color(sd, msgId, script_getnum(st, 3));
+ } else {
+ clif->msgtable(sd, msgId);
+ }
+
+ return true;
+}
+
+static BUILDIN(msgtable2)
+{
+ struct map_session_data *sd = script_rid2sd(st);
+ if (sd == NULL)
+ return false;
+
+ const enum clif_messages msgId = script_getnum(st, 2);
+ if (script_isstringtype(st, 3)) {
+ const char *value = script_getstr(st, 3);
+ if (script_hasdata(st, 4)) {
+ clif->msgtable_str_color(sd, msgId, value, script_getnum(st, 4));
+ } else {
+ clif->msgtable_str(sd, msgId, value);
+ }
+ } else {
+ const int value = script_getnum(st, 3);
+ clif->msgtable_num(sd, msgId, value);
+ }
+
+ return true;
+}
+
+// show/hide camera info
+static BUILDIN(camerainfo)
+{
+ struct map_session_data *sd = script_rid2sd(st);
+ if (sd == NULL)
+ return false;
+
+ clif->camera_showWindow(sd);
+ return true;
+}
+
+// allow change some camera parameters
+static BUILDIN(changecamera)
+{
+ struct map_session_data *sd = script_rid2sd(st);
+ if (sd == NULL)
+ return false;
+
+ enum send_target target = SELF;
+ if (script_hasdata(st, 5)) {
+ target = script_getnum(st, 5);
+ }
+ clif->camera_change(sd, (float)script_getnum(st, 2), (float)script_getnum(st, 3), (float)script_getnum(st, 4), target);
+ return true;
+}
+
+// update preview window to given item
+static BUILDIN(itempreview)
+{
+ struct map_session_data *sd = script_rid2sd(st);
+ if (sd == NULL)
+ return false;
+ clif->item_preview(sd, script_getnum(st, 2));
+ return true;
+}
+
+// insert or remove card into equipped item
+static BUILDIN(enchantitem)
+{
+ struct map_session_data *sd = script_rid2sd(st);
+ if (sd == NULL)
+ return false;
+ const int pos = script_getnum(st, 2);
+ if ((pos < EQI_ACC_L || pos > EQI_HAND_R) && pos != EQI_AMMO) {
+ ShowError("Wrong equip position: %d\n", pos);
+ script->reportfunc(st);
+ script->reportsrc(st);
+ script_pushint(st, false);
+ return true;
+ }
+ const int cardId = script_getnum(st, 4);
+ struct item_data *it = itemdb->exists(cardId);
+ if (it == NULL || it->type != IT_CARD) {
+ ShowError("Item id is not card or not exists: %d\n", cardId);
+ script->reportfunc(st);
+ script->reportsrc(st);
+ script_pushint(st, false);
+ return true;
+ }
+ const int n = sd->equip_index[pos];
+ if (n < 0) {
+ ShowError("Item in equipment slot %d is not equipped\n", pos);
+ script->reportfunc(st);
+ script->reportsrc(st);
+ script_pushint(st, false);
+ return true;
+ }
+ const int cardSlot = script_getnum(st, 3);
+ if (cardSlot < 0 || cardSlot >= MAX_SLOTS) {
+ ShowError("Wrong card slot %d. Must be in range 0-3.\n", cardSlot);
+ script->reportfunc(st);
+ script->reportsrc(st);
+ script_pushint(st, false);
+ return true;
+ }
+ const bool res = clif->enchant_equipment(sd, pc->equip_pos[pos], cardSlot, cardId);
+ if (res) {
+ logs->pick_pc(sd, LOG_TYPE_CARD, -1, &sd->status.inventory[n],sd->inventory_data[n]);
+ sd->status.inventory[n].card[cardSlot] = cardId;
+ logs->pick_pc(sd, LOG_TYPE_CARD, 1, &sd->status.inventory[n],sd->inventory_data[n]);
+ status_calc_pc(sd, SCO_NONE);
+ }
+ script_pushint(st, res);
+ return true;
+}
+
+// send ack to inventory expand request
+static BUILDIN(expandInventoryAck)
+{
+ struct map_session_data *sd = script_rid2sd(st);
+ if (sd == NULL)
+ return false;
+ int itemId = 0;
+ if (script_hasdata(st, 3)) {
+ itemId = script_getnum(st, 3);
+ }
+ clif->inventoryExpandAck(sd, script_getnum(st, 2), itemId);
+ return true;
+}
+
+// send final ack to inventory expand request
+static BUILDIN(expandInventoryResult)
+{
+ struct map_session_data *sd = script_rid2sd(st);
+ if (sd == NULL)
+ return false;
+ clif->inventoryExpandResult(sd, script_getnum(st, 2));
+ return true;
+}
+
+// adjust player inventory size to given value positive or negative
+static BUILDIN(expandInventory)
+{
+ struct map_session_data *sd = script_rid2sd(st);
+ if (sd == NULL)
+ return false;
+ script_pushint(st, pc->expandInventory(sd, script_getnum(st, 2)));
+ return true;
+}
+
+// return current player inventory size
+static BUILDIN(getInventorySize)
+{
+ struct map_session_data *sd = script_rid2sd(st);
+ if (sd == NULL)
+ return false;
+ script_pushint(st, sd->status.inventorySize);
+ return true;
+}
+
/**
* Adds a built-in script function.
*
@@ -20834,7 +24996,7 @@ BUILDIN(navigateto)
* (i.e. a plugin overriding a built-in function)
* @return Whether the function was successfully added.
*/
-bool script_add_builtin(const struct script_function *buildin, bool override)
+static bool script_add_builtin(const struct script_function *buildin, bool override)
{
int n = 0, offset = 0;
size_t slen;
@@ -20916,7 +25078,7 @@ bool script_add_builtin(const struct script_function *buildin, bool override)
return true;
}
-bool script_hp_add(char *name, char *args, bool (*func)(struct script_state *st), bool isDeprecated)
+static bool script_hp_add(char *name, char *args, bool (*func)(struct script_state *st), bool isDeprecated)
{
struct script_function buildin;
buildin.name = name;
@@ -20926,7 +25088,7 @@ bool script_hp_add(char *name, char *args, bool (*func)(struct script_state *st)
return script->add_builtin(&buildin, true);
}
-void script_run_use_script(struct map_session_data *sd, struct item_data *data, int oid) __attribute__((nonnull (1)));
+static void script_run_use_script(struct map_session_data *sd, struct item_data *data, int oid) __attribute__((nonnull (1)));
/**
* Run use script for item.
@@ -20935,7 +25097,7 @@ void script_run_use_script(struct map_session_data *sd, struct item_data *data,
* @param n item index in inventory. Must be correct and checked before.
* @param oid npc id. Can be also 0 or fake npc id.
*/
-void script_run_use_script(struct map_session_data *sd, struct item_data *data, int oid)
+static void script_run_use_script(struct map_session_data *sd, struct item_data *data, int oid)
{
nullpo_retv(data);
script->current_item_id = data->nameid;
@@ -20943,7 +25105,7 @@ void script_run_use_script(struct map_session_data *sd, struct item_data *data,
script->current_item_id = 0;
}
-void script_run_item_equip_script(struct map_session_data *sd, struct item_data *data, int oid) __attribute__((nonnull (1, 2)));
+static void script_run_item_equip_script(struct map_session_data *sd, struct item_data *data, int oid) __attribute__((nonnull (1, 2)));
/**
* Run item equip script for item.
@@ -20952,14 +25114,14 @@ void script_run_item_equip_script(struct map_session_data *sd, struct item_data
* @param data equipped item data. Must be correct and checked before.
* @param oid npc id. Can be also 0 or fake npc id.
*/
-void script_run_item_equip_script(struct map_session_data *sd, struct item_data *data, int oid)
+static void script_run_item_equip_script(struct map_session_data *sd, struct item_data *data, int oid)
{
script->current_item_id = data->nameid;
script->run(data->equip_script, 0, sd->bl.id, oid);
script->current_item_id = 0;
}
-void script_run_item_unequip_script(struct map_session_data *sd, struct item_data *data, int oid) __attribute__((nonnull (1, 2)));
+static void script_run_item_unequip_script(struct map_session_data *sd, struct item_data *data, int oid) __attribute__((nonnull (1, 2)));
/**
* Run item unequip script for item.
@@ -20968,7 +25130,7 @@ void script_run_item_unequip_script(struct map_session_data *sd, struct item_dat
* @param data unequipped item data. Must be correct and checked before.
* @param oid npc id. Can be also 0 or fake npc id.
*/
-void script_run_item_unequip_script(struct map_session_data *sd, struct item_data *data, int oid)
+static void script_run_item_unequip_script(struct map_session_data *sd, struct item_data *data, int oid)
{
script->current_item_id = data->nameid;
script->run(data->unequip_script, 0, sd->bl.id, oid);
@@ -20979,21 +25141,22 @@ void script_run_item_unequip_script(struct map_session_data *sd, struct item_dat
#define BUILDIN_DEF2(x,x2,args) { buildin_ ## x , x2 , args, false }
#define BUILDIN_DEF_DEPRECATED(x,args) { buildin_ ## x , #x , args, true }
#define BUILDIN_DEF2_DEPRECATED(x,x2,args) { buildin_ ## x , x2 , args, true }
-void script_parse_builtin(void) {
+static void script_parse_builtin(void)
+{
struct script_function BUILDIN[] = {
/* Commands for internal use by the script engine */
BUILDIN_DEF(__jump_zero,"il"),
BUILDIN_DEF(__setr,"rv?"),
// NPC interaction
- BUILDIN_DEF(mes,"s"),
- BUILDIN_DEF(mesf,"s*"),
+ BUILDIN_DEF(mes, "?"),
+ BUILDIN_DEF(mesf, "s*"),
BUILDIN_DEF(next,""),
BUILDIN_DEF(close,""),
BUILDIN_DEF(close2,""),
BUILDIN_DEF(menu,"sl*"),
BUILDIN_DEF(select,"s*"), //for future jA script compatibility
- BUILDIN_DEF(prompt,"s*"),
+ BUILDIN_DEF2(select, "prompt", "s*"),
//
BUILDIN_DEF(goto,"l"),
BUILDIN_DEF(callsub,"l*"),
@@ -21006,7 +25169,7 @@ void script_parse_builtin(void) {
BUILDIN_DEF(warp,"sii?"),
BUILDIN_DEF(areawarp,"siiiisii??"),
BUILDIN_DEF(warpchar,"siii"), // [LuzZza]
- BUILDIN_DEF(warpparty,"siii?"), // [Fredzilla] [Paradox924X]
+ BUILDIN_DEF(warpparty,"siii??"), // [Fredzilla] [Paradox924X] [Jedzkie] [Dastgir]
BUILDIN_DEF(warpguild,"siii?"), // [Fredzilla]
BUILDIN_DEF(setlook,"ii"),
BUILDIN_DEF(changelook,"ii"), // Simulates but don't Store it
@@ -21015,6 +25178,7 @@ void script_parse_builtin(void) {
BUILDIN_DEF(cleararray,"rvi"),
BUILDIN_DEF(copyarray,"rri"),
BUILDIN_DEF(getarraysize,"r"),
+ BUILDIN_DEF(getarrayindex,"r"),
BUILDIN_DEF(deletearray,"r?"),
BUILDIN_DEF(getelementofarray,"ri"),
BUILDIN_DEF(getitem,"vi?"),
@@ -21039,8 +25203,9 @@ void script_parse_builtin(void) {
BUILDIN_DEF(checkweight,"vi*"),
BUILDIN_DEF(checkweight2,"rr"),
BUILDIN_DEF(readparam,"i?"),
+ BUILDIN_DEF(setparam,"ii?"),
BUILDIN_DEF(getcharid,"i?"),
- BUILDIN_DEF(getnpcid,"i?"),
+ BUILDIN_DEF(getnpcid, "?"),
BUILDIN_DEF(getpartyname,"i"),
BUILDIN_DEF(getpartymember,"i?"),
BUILDIN_DEF(getpartyleader,"i?"),
@@ -21062,12 +25227,13 @@ void script_parse_builtin(void) {
BUILDIN_DEF(getequipisidentify,"i"),
BUILDIN_DEF(getequiprefinerycnt,"i"),
BUILDIN_DEF(getequipweaponlv,"i"),
- BUILDIN_DEF(getequippercentrefinery,"i"),
+ BUILDIN_DEF(getequippercentrefinery,"i?"),
BUILDIN_DEF(successrefitem,"i?"),
BUILDIN_DEF(failedrefitem,"i"),
BUILDIN_DEF(downrefitem,"i?"),
BUILDIN_DEF(statusup,"i"),
BUILDIN_DEF(statusup2,"ii"),
+ BUILDIN_DEF(needed_status_point,"ii?"),
BUILDIN_DEF(bonus,"iv"),
BUILDIN_DEF2(bonus,"bonus2","ivi"),
BUILDIN_DEF2(bonus,"bonus3","ivii"),
@@ -21084,10 +25250,10 @@ void script_parse_builtin(void) {
BUILDIN_DEF(basicskillcheck,""),
BUILDIN_DEF(getgmlevel,""),
BUILDIN_DEF(setgroupid, "i?"),
- BUILDIN_DEF(getgroupid,""),
+ BUILDIN_DEF(getgroupid,"?"),
BUILDIN_DEF(end,""),
- BUILDIN_DEF(checkoption,"i"),
- BUILDIN_DEF(setoption,"i?"),
+ BUILDIN_DEF(checkoption,"i?"),
+ BUILDIN_DEF(setoption,"i??"),
BUILDIN_DEF(setcart,"?"),
BUILDIN_DEF(checkcart,""),
BUILDIN_DEF(setfalcon,"?"),
@@ -21115,6 +25281,8 @@ void script_parse_builtin(void) {
BUILDIN_DEF(addtimer,"is?"),
BUILDIN_DEF(deltimer,"s?"),
BUILDIN_DEF(addtimercount,"si?"),
+ BUILDIN_DEF(gettimer,"i??"),
+ BUILDIN_DEF(getunits,"iri?????"),
BUILDIN_DEF(initnpctimer,"??"),
BUILDIN_DEF(stopnpctimer,"??"),
BUILDIN_DEF(startnpctimer,"??"),
@@ -21141,7 +25309,7 @@ void script_parse_builtin(void) {
BUILDIN_DEF(sc_end,"i?"),
BUILDIN_DEF(getstatus, "i?"),
BUILDIN_DEF(getscrate,"ii?"),
- BUILDIN_DEF(debugmes,"v"),
+ BUILDIN_DEF(debugmes,"v*"),
BUILDIN_DEF2(catchpet,"pet","i"),
BUILDIN_DEF2(birthpet,"bpet",""),
BUILDIN_DEF(resetlvl,"i"),
@@ -21163,6 +25331,7 @@ void script_parse_builtin(void) {
BUILDIN_DEF(isloggedin,"i?"),
BUILDIN_DEF(setmapflagnosave,"ssii"),
BUILDIN_DEF(getmapflag,"si"),
+ BUILDIN_DEF(getmapinfo,"i?"),
BUILDIN_DEF(setmapflag,"si?"),
BUILDIN_DEF(removemapflag,"si"),
BUILDIN_DEF(pvpon,"s"),
@@ -21200,7 +25369,7 @@ void script_parse_builtin(void) {
BUILDIN_DEF(getskilllist,""),
BUILDIN_DEF(clearitem,""),
BUILDIN_DEF(classchange,"ii?"),
- BUILDIN_DEF(misceffect,"i"),
+ BUILDIN_DEF_DEPRECATED(misceffect,"i"),
BUILDIN_DEF(playbgm,"s"),
BUILDIN_DEF(playbgmall,"s?????"),
BUILDIN_DEF(soundeffect,"si"),
@@ -21215,15 +25384,17 @@ void script_parse_builtin(void) {
BUILDIN_DEF(petskillsupport,"viiii"), // [Skotlex]
BUILDIN_DEF(skilleffect,"vi"), // skill effect [Celest]
BUILDIN_DEF(npcskilleffect,"viii"), // npc skill effect [Valaris]
- BUILDIN_DEF(specialeffect,"i??"), // npc skill effect [Valaris]
- BUILDIN_DEF(specialeffect2,"i??"), // skill effect on players[Valaris]
+ BUILDIN_DEF(specialeffect,"i???"), // npc skill effect [Valaris]
+ BUILDIN_DEF(removespecialeffect,"i???"),
+ BUILDIN_DEF_DEPRECATED(specialeffect2,"i??"), // skill effect on players[Valaris]
BUILDIN_DEF(nude,""), // nude command [Valaris]
BUILDIN_DEF(mapwarp,"ssii??"), // Added by RoVeRT
BUILDIN_DEF(atcommand,"s"), // [MouseJstr]
BUILDIN_DEF2(atcommand,"charcommand","s"), // [MouseJstr]
BUILDIN_DEF(movenpc,"sii?"), // [MouseJstr]
BUILDIN_DEF(message,"vs"), // [MouseJstr]
- BUILDIN_DEF(npctalk,"s?"), // [Valaris]
+ BUILDIN_DEF(servicemessage, "si?"),
+ BUILDIN_DEF(npctalk,"s??"), // [Valaris][Murilo BiO]
BUILDIN_DEF(mobcount,"ss"),
BUILDIN_DEF(getlook,"i"),
BUILDIN_DEF(getsavepoint,"i"),
@@ -21235,11 +25406,11 @@ void script_parse_builtin(void) {
BUILDIN_DEF(setnpcdir,"*"), // [4144]
BUILDIN_DEF(getnpcclass,"?"), // [4144]
BUILDIN_DEF(getmapxy,"rrri?"), //by Lorky [Lupus]
- BUILDIN_DEF(checkoption1,"i"),
- BUILDIN_DEF(checkoption2,"i"),
+ BUILDIN_DEF(checkoption1,"i?"),
+ BUILDIN_DEF(checkoption2,"i?"),
BUILDIN_DEF(guildgetexp,"i"),
BUILDIN_DEF(guildchangegm,"is"),
- BUILDIN_DEF(logmes,"s"), //this command actls as MES but rints info into LOG file either SQL/TXT [Lupus]
+ BUILDIN_DEF(logmes,"s?"), //this command actls as MES but rints info into LOG file either SQL/TXT [Lupus]
BUILDIN_DEF(summon,"si??"), // summons a slave monster [Celest]
BUILDIN_DEF(isnight,""), // check whether it is night time [Celest]
BUILDIN_DEF(isequipped,"i*"), // check whether another item/card has been equipped [Celest]
@@ -21252,10 +25423,11 @@ void script_parse_builtin(void) {
BUILDIN_DEF(activatepset,"i"), // Activate a pattern set [MouseJstr]
BUILDIN_DEF(deactivatepset,"i"), // Deactive a pattern set [MouseJstr]
BUILDIN_DEF(deletepset,"i"), // Delete a pattern set [MouseJstr]
+ BUILDIN_DEF(dressroom,"?"),
BUILDIN_DEF(pcre_match,"ss"),
BUILDIN_DEF(dispbottom,"s?"), //added from jA [Lupus]
BUILDIN_DEF(getusersname,""),
- BUILDIN_DEF(recovery,""),
+ BUILDIN_DEF(recovery,"?????"),
BUILDIN_DEF(getpetinfo,"i"),
BUILDIN_DEF(gethominfo,"i"),
BUILDIN_DEF(getmercinfo,"i?"),
@@ -21265,6 +25437,10 @@ void script_parse_builtin(void) {
BUILDIN_DEF(getstrlen,"s"), //strlen [Valaris]
BUILDIN_DEF(charisalpha,"si"), //isalpha [Valaris]
BUILDIN_DEF(charat,"si"),
+ BUILDIN_DEF(isstr,"v"),
+ BUILDIN_DEF(getdatatype, "?"),
+ BUILDIN_DEF(data_to_string, "?"),
+ BUILDIN_DEF2(getd, "string_to_data", "?"),
BUILDIN_DEF(chr,"i"),
BUILDIN_DEF(ord,"s"),
BUILDIN_DEF(setchar,"ssi"),
@@ -21288,10 +25464,14 @@ void script_parse_builtin(void) {
BUILDIN_DEF(getiteminfo,"ii"), //[Lupus] returns Items Buy / sell Price, etc info
BUILDIN_DEF(setiteminfo,"iii"), //[Lupus] set Items Buy / sell Price, etc info
BUILDIN_DEF(getequipcardid,"ii"), //[Lupus] returns CARD ID or other info from CARD slot N of equipped item
+ BUILDIN_DEF(getequippedoptioninfo, "i"),
+ BUILDIN_DEF(getequipoption, "iii"),
+ BUILDIN_DEF(setequipoption, "iiii"),
+ BUILDIN_DEF(getequipisenableopt, "i"),
// List of mathematics commands --->
BUILDIN_DEF(log10,"i"),
BUILDIN_DEF(sqrt,"i"), //[zBuffer]
- BUILDIN_DEF(pow,"ii"), //[zBuffer]
+ BUILDIN_DEF_DEPRECATED(pow,"ii"), //[zBuffer]
BUILDIN_DEF(distance,"iiii"), //[zBuffer]
// <--- List of mathematics commands
BUILDIN_DEF(min, "i*"),
@@ -21329,16 +25509,23 @@ void script_parse_builtin(void) {
BUILDIN_DEF(rid2name,"i"),
BUILDIN_DEF(pcfollow,"ii"),
BUILDIN_DEF(pcstopfollow,"i"),
- BUILDIN_DEF(pcblockmove,"ii"),
+ BUILDIN_DEF_DEPRECATED(pcblockmove,"ii"), // Deprecated 2018-05-04
+ BUILDIN_DEF(setpcblock, "ii"),
+ BUILDIN_DEF(checkpcblock, ""),
// <--- [zBuffer] List of player cont commands
// [zBuffer] List of mob control commands --->
BUILDIN_DEF(getunittype,"i"),
+ /* Unit Data */
+ BUILDIN_DEF(setunitdata,"iiv??"),
+ BUILDIN_DEF(getunitdata,"ii?"),
+ BUILDIN_DEF(getunitname,"i"),
+ BUILDIN_DEF(setunitname,"is"),
BUILDIN_DEF(unitwalk,"ii?"),
BUILDIN_DEF(unitkill,"i"),
BUILDIN_DEF(unitwarp,"isii"),
BUILDIN_DEF(unitattack,"iv?"),
BUILDIN_DEF(unitstop,"i"),
- BUILDIN_DEF(unittalk,"is"),
+ BUILDIN_DEF(unittalk,"is???"),
BUILDIN_DEF(unitemote,"ii"),
BUILDIN_DEF(unitskilluseid,"ivi?"), // originally by Qamera [Celest]
BUILDIN_DEF(unitskillusepos,"iviii"), // [Celest]
@@ -21377,14 +25564,19 @@ void script_parse_builtin(void) {
BUILDIN_DEF(setfont,"i"),
BUILDIN_DEF(areamobuseskill,"siiiiviiiii"),
BUILDIN_DEF(progressbar,"si"),
+ BUILDIN_DEF(progressbar_unit,"si?"),
BUILDIN_DEF(pushpc,"ii"),
BUILDIN_DEF(buyingstore,"i"),
BUILDIN_DEF(searchstores,"ii"),
BUILDIN_DEF(showdigit,"i?"),
+ BUILDIN_DEF(msgtable, "i?"),
+ BUILDIN_DEF(msgtable2, "iv?"),
// WoE SE
BUILDIN_DEF(agitstart2,""),
BUILDIN_DEF(agitend2,""),
BUILDIN_DEF(agitcheck2,""),
+ // Achievements [Smokexyz/Hercules]
+ BUILDIN_DEF(achievement_progress, "iiii?"),
// BattleGround
BUILDIN_DEF(waitingroom2bg,"siiss?"),
BUILDIN_DEF(waitingroom2bg_single,"isiis"),
@@ -21443,7 +25635,10 @@ void script_parse_builtin(void) {
**/
BUILDIN_DEF(bindatcmd, "ss???"),
BUILDIN_DEF(unbindatcmd, "s"),
- BUILDIN_DEF(useatcmd, "s"),
+ BUILDIN_DEF_DEPRECATED(useatcmd, "s"),
+ BUILDIN_DEF(has_permission, "v?"),
+ BUILDIN_DEF(can_use_command, "s?"),
+ BUILDIN_DEF(add_group_command, "siii"),
/**
* Item bound [Xantara] [Akinari] [Mhalicot/Hercules]
@@ -21454,8 +25649,9 @@ void script_parse_builtin(void) {
BUILDIN_DEF(checkbound, "i???????"),
//Quest Log System [Inkfish]
- BUILDIN_DEF(questinfo, "ii??"),
- BUILDIN_DEF(setquest, "i"),
+ BUILDIN_DEF(questinfo, "i?"),
+ BUILDIN_DEF(setquestinfo, "i???"),
+ BUILDIN_DEF(setquest, "i?"),
BUILDIN_DEF(erasequest, "i?"),
BUILDIN_DEF(completequest, "i?"),
BUILDIN_DEF(questprogress, "i?"),
@@ -21492,8 +25688,8 @@ void script_parse_builtin(void) {
/* New Shop Support */
BUILDIN_DEF(openshop,"?"),
- BUILDIN_DEF(sellitem,"i??"),
- BUILDIN_DEF(stopselling,"i"),
+ BUILDIN_DEF(sellitem,"i???"),
+ BUILDIN_DEF(stopselling,"i??"),
BUILDIN_DEF(setcurrency,"i?"),
BUILDIN_DEF(tradertype,"i"),
BUILDIN_DEF(purchaseok,""),
@@ -21502,11 +25698,41 @@ void script_parse_builtin(void) {
/* Navigation */
BUILDIN_DEF(navigateto, "s??????"),
+ /* Clan System */
+ BUILDIN_DEF(clan_join,"i?"),
+ BUILDIN_DEF(clan_leave,"?"),
+ BUILDIN_DEF(clan_master,"i"),
+
BUILDIN_DEF(channelmes, "ss"),
+ BUILDIN_DEF(addchannelhandler, "ss"),
+ BUILDIN_DEF(removechannelhandler, "ss"),
BUILDIN_DEF(showscript, "s?"),
BUILDIN_DEF(mergeitem,""),
+ BUILDIN_DEF(getcalendartime, "ii??"),
+
+ // -- RoDEX
+ BUILDIN_DEF(rodex_sendmail, "isss???????????"),
+ BUILDIN_DEF2(rodex_sendmail, "rodex_sendmail_acc", "isss???????????"),
+ BUILDIN_DEF(rodex_sendmail2, "isss?????????????????????????????????????????"),
+ BUILDIN_DEF2(rodex_sendmail2, "rodex_sendmail_acc2", "isss?????????????????????????????????????????"),
+ BUILDIN_DEF(airship_respond, "i"),
+ BUILDIN_DEF(openstylist,""),
BUILDIN_DEF(_,"s"),
BUILDIN_DEF2(_, "_$", "s"),
+
+ // -- HatEffect
+ BUILDIN_DEF(hateffect, "ii"),
+
+ // camera
+ BUILDIN_DEF(camerainfo, ""),
+ BUILDIN_DEF(changecamera, "iii?"),
+
+ BUILDIN_DEF(itempreview, "i"),
+ BUILDIN_DEF(enchantitem, "iii"),
+ BUILDIN_DEF(expandInventoryAck, "i?"),
+ BUILDIN_DEF(expandInventoryResult, "i"),
+ BUILDIN_DEF(expandInventory, "i"),
+ BUILDIN_DEF(getInventorySize, ""),
};
int i, len = ARRAYLENGTH(BUILDIN);
RECREATE(script->buildin, char *, script->buildin_count + len); // Pre-alloc to speed up
@@ -21518,7 +25744,7 @@ void script_parse_builtin(void) {
#undef BUILDIN_DEF
#undef BUILDIN_DEF2
-void script_label_add(int key, int pos)
+static void script_label_add(int key, int pos)
{
int idx = script->label_count;
@@ -21535,7 +25761,7 @@ void script_label_add(int key, int pos)
/**
* Sets source-end constants for scripts to play with
**/
-void script_hardcoded_constants(void)
+static void script_hardcoded_constants(void)
{
script->constdb_comment("Boolean");
script->set_constant("true", 1, false, false);
@@ -21546,12 +25772,16 @@ void script_hardcoded_constants(void)
script->set_constant("MAX_LEVEL",MAX_LEVEL,false, false);
script->set_constant("MAX_STORAGE",MAX_STORAGE,false, false);
script->set_constant("MAX_GUILD_STORAGE",MAX_GUILD_STORAGE,false, false);
- script->set_constant("MAX_CART",MAX_INVENTORY,false, false);
+ script->set_constant("MAX_CART", MAX_CART, false, false);
script->set_constant("MAX_INVENTORY",MAX_INVENTORY,false, false);
+ script->set_constant("FIXED_INVENTORY_SIZE", FIXED_INVENTORY_SIZE, 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);
+ script->set_constant("MAX_MENU_OPTIONS", MAX_MENU_OPTIONS, false, false);
+ script->set_constant("MAX_MENU_LENGTH", MAX_MENU_LENGTH, false, false);
script->constdb_comment("status options");
script->set_constant("Option_Nothing",OPTION_NOTHING,false, false);
@@ -21578,6 +25808,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);
@@ -21655,6 +25886,23 @@ void script_hardcoded_constants(void)
script->set_constant("EQP_SHADOW_SHOES", EQP_SHADOW_SHOES, false, false);
script->set_constant("EQP_SHADOW_ACC_R", EQP_SHADOW_ACC_R, false, false);
script->set_constant("EQP_SHADOW_ACC_L", EQP_SHADOW_ACC_L, false, false);
+ // Synonyms and combined values
+ script->set_constant("EQP_WEAPON", EQP_WEAPON, false, false);
+ script->set_constant("EQP_SHIELD", EQP_SHIELD, false, false);
+ script->set_constant("EQP_ARMS", EQP_ARMS, false, false);
+ script->set_constant("EQP_HELM", EQP_HELM, false, false);
+ script->set_constant("EQP_ACC", EQP_ACC, false, false);
+ script->set_constant("EQP_COSTUME", EQP_COSTUME, false, false);
+ script->set_constant("EQP_SHADOW_ACC", EQP_SHADOW_ACC, false, false);
+ script->set_constant("EQP_SHADOW_ARMS", EQP_SHADOW_ARMS, false, false);
+
+ script->constdb_comment("Item Option Types");
+ script->set_constant("IT_OPT_INDEX", IT_OPT_INDEX, false, false);
+ script->set_constant("IT_OPT_VALUE", IT_OPT_VALUE, false, false);
+ script->set_constant("IT_OPT_PARAM", IT_OPT_PARAM, false, false);
+
+ script->constdb_comment("Maximum Item Options");
+ script->set_constant("MAX_ITEM_OPTIONS", MAX_ITEM_OPTIONS, false, false);
script->constdb_comment("Navigation constants, use with *navigateto*");
script->set_constant("NAV_NONE", NAV_NONE, false, false);
@@ -21666,6 +25914,269 @@ void script_hardcoded_constants(void)
script->set_constant("NAV_KAFRA_AND_SCROLL", NAV_KAFRA_AND_SCROLL, false, false);
script->set_constant("NAV_ALL", NAV_ALL, false, false);
+ script->constdb_comment("BL types");
+ script->set_constant("BL_PC",BL_PC,false, false);
+ script->set_constant("BL_MOB",BL_MOB,false, false);
+ script->set_constant("BL_PET",BL_PET,false, false);
+ script->set_constant("BL_HOM",BL_HOM,false, false);
+ script->set_constant("BL_MER",BL_MER,false, false);
+ script->set_constant("BL_ITEM",BL_ITEM,false, false);
+ script->set_constant("BL_SKILL",BL_SKILL,false, false);
+ script->set_constant("BL_NPC",BL_NPC,false, false);
+ script->set_constant("BL_CHAT",BL_CHAT,false, false);
+ script->set_constant("BL_ELEM",BL_ELEM,false, false);
+ script->set_constant("BL_CHAR",BL_CHAR,false, false);
+ script->set_constant("BL_ALL",BL_ALL,false, false);
+
+ script->constdb_comment("Refine Chance Types");
+ script->set_constant("REFINE_CHANCE_TYPE_NORMAL", REFINE_CHANCE_TYPE_NORMAL, false, false);
+ script->set_constant("REFINE_CHANCE_TYPE_ENRICHED", REFINE_CHANCE_TYPE_ENRICHED, false, false);
+ script->set_constant("REFINE_CHANCE_TYPE_E_NORMAL", REFINE_CHANCE_TYPE_E_NORMAL, false, false);
+ script->set_constant("REFINE_CHANCE_TYPE_E_ENRICHED", REFINE_CHANCE_TYPE_E_ENRICHED, 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("Data types");
+ script->set_constant("DATATYPE_NIL", DATATYPE_NIL, false, false);
+ script->set_constant("DATATYPE_STR", DATATYPE_STR, false, false);
+ script->set_constant("DATATYPE_INT", DATATYPE_INT, false, false);
+ script->set_constant("DATATYPE_CONST", DATATYPE_CONST, false, false);
+ script->set_constant("DATATYPE_PARAM", DATATYPE_PARAM, false, false);
+ script->set_constant("DATATYPE_VAR", DATATYPE_VAR, false, false);
+ script->set_constant("DATATYPE_LABEL", DATATYPE_LABEL, false, false);
+
+ script->constdb_comment("Logmes types");
+ script->set_constant("LOGMES_NPC", LOGMES_NPC, false, false);
+ script->set_constant("LOGMES_ATCOMMAND", LOGMES_ATCOMMAND, false, false);
+
+ script->constdb_comment("Item Subtypes (Weapon types)");
+ script->set_constant("W_FIST", W_FIST, false, false);
+ script->set_constant("W_DAGGER", W_DAGGER, false, false);
+ script->set_constant("W_1HSWORD", W_1HSWORD, false, false);
+ script->set_constant("W_2HSWORD", W_2HSWORD, false, false);
+ script->set_constant("W_1HSPEAR", W_1HSPEAR, false, false);
+ script->set_constant("W_2HSPEAR", W_2HSPEAR, false, false);
+ script->set_constant("W_1HAXE", W_1HAXE, false, false);
+ script->set_constant("W_2HAXE", W_2HAXE, false, false);
+ script->set_constant("W_MACE", W_MACE, false, false);
+ script->set_constant("W_2HMACE", W_2HMACE, false, false);
+ script->set_constant("W_STAFF", W_STAFF, false, false);
+ script->set_constant("W_BOW", W_BOW, false, false);
+ script->set_constant("W_KNUCKLE", W_KNUCKLE, false, false);
+ script->set_constant("W_MUSICAL", W_MUSICAL, false, false);
+ script->set_constant("W_WHIP", W_WHIP, false, false);
+ script->set_constant("W_BOOK", W_BOOK, false, false);
+ script->set_constant("W_KATAR", W_KATAR, false, false);
+ script->set_constant("W_REVOLVER", W_REVOLVER, false, false);
+ script->set_constant("W_RIFLE", W_RIFLE, false, false);
+ script->set_constant("W_GATLING", W_GATLING, false, false);
+ script->set_constant("W_SHOTGUN", W_SHOTGUN, false, false);
+ script->set_constant("W_GRENADE", W_GRENADE, false, false);
+ script->set_constant("W_HUUMA", W_HUUMA, false, false);
+ script->set_constant("W_2HSTAFF", W_2HSTAFF, false, false);
+
+ script->constdb_comment("Item Subtypes (Ammunition types)");
+ script->set_constant("A_ARROW", A_ARROW, false, false);
+ script->set_constant("A_DAGGER", A_DAGGER, false, false);
+ script->set_constant("A_BULLET", A_BULLET, false, false);
+ script->set_constant("A_SHELL", A_SHELL, false, false);
+ script->set_constant("A_GRENADE", A_GRENADE, false, false);
+ script->set_constant("A_SHURIKEN", A_SHURIKEN, false, false);
+ script->set_constant("A_KUNAI", A_KUNAI, false, false);
+ script->set_constant("A_CANNONBALL", A_CANNONBALL, false, false);
+ script->set_constant("A_THROWWEAPON", A_THROWWEAPON, false, false);
+
+ script->constdb_comment("Item Upper Masks");
+ script->set_constant("ITEMUPPER_NONE", ITEMUPPER_NONE, false, false);
+ script->set_constant("ITEMUPPER_NORMAL", ITEMUPPER_NORMAL, false, false);
+ script->set_constant("ITEMUPPER_UPPER", ITEMUPPER_UPPER, false, false);
+ script->set_constant("ITEMUPPER_BABY", ITEMUPPER_BABY, false, false);
+ script->set_constant("ITEMUPPER_THIRD", ITEMUPPER_THIRD, false, false);
+ script->set_constant("ITEMUPPER_THIRDUPPER", ITEMUPPER_THIRDUPPER, false, false);
+ script->set_constant("ITEMUPPER_THIRDBABY", ITEMUPPER_THIRDBABY, false, false);
+ script->set_constant("ITEMUPPER_ALL", ITEMUPPER_ALL, false, false);
+
+ script->constdb_comment("dressroom modes");
+ script->set_constant("DRESSROOM_OPEN", DRESSROOM_OPEN, false, false);
+ script->set_constant("DRESSROOM_CLOSE", DRESSROOM_CLOSE, false, false);
+
+ script->constdb_comment("getmapinfo options");
+ script->set_constant("MAPINFO_NAME", MAPINFO_NAME, false, false);
+ script->set_constant("MAPINFO_ID", MAPINFO_ID, false, false);
+ script->set_constant("MAPINFO_SIZE_X", MAPINFO_SIZE_X, false, false);
+ script->set_constant("MAPINFO_SIZE_Y", MAPINFO_SIZE_Y, false, false);
+ script->set_constant("MAPINFO_ZONE", MAPINFO_ZONE, false, false);
+
+ script->constdb_comment("set/getiteminfo options");
+ script->set_constant("ITEMINFO_BUYPRICE", ITEMINFO_BUYPRICE, false, false);
+ script->set_constant("ITEMINFO_SELLPRICE", ITEMINFO_SELLPRICE, false, false);
+ script->set_constant("ITEMINFO_TYPE", ITEMINFO_TYPE, false, false);
+ script->set_constant("ITEMINFO_MAXCHANCE", ITEMINFO_MAXCHANCE, false, false);
+ script->set_constant("ITEMINFO_SEX", ITEMINFO_SEX, false, false);
+ script->set_constant("ITEMINFO_LOC", ITEMINFO_LOC, false, false);
+ script->set_constant("ITEMINFO_WEIGHT", ITEMINFO_WEIGHT, false, false);
+ script->set_constant("ITEMINFO_ATK", ITEMINFO_ATK, false, false);
+ script->set_constant("ITEMINFO_DEF", ITEMINFO_DEF, false, false);
+ script->set_constant("ITEMINFO_RANGE", ITEMINFO_RANGE, false, false);
+ script->set_constant("ITEMINFO_SLOTS", ITEMINFO_SLOTS, false, false);
+ script->set_constant("ITEMINFO_SUBTYPE", ITEMINFO_SUBTYPE, false, false);
+ script->set_constant("ITEMINFO_ELV", ITEMINFO_ELV, false, false);
+ script->set_constant("ITEMINFO_WLV", ITEMINFO_WLV, false, false);
+ script->set_constant("ITEMINFO_VIEWID", ITEMINFO_VIEWID, false, false);
+ script->set_constant("ITEMINFO_MATK", ITEMINFO_MATK, false, false);
+ script->set_constant("ITEMINFO_VIEWSPRITE", ITEMINFO_VIEWSPRITE, false, false);
+ script->set_constant("ITEMINFO_TRADE", ITEMINFO_TRADE, false, false);
+
+ script->constdb_comment("monster skill states");
+ script->set_constant("MSS_ANY", MSS_ANY, false, false);
+ script->set_constant("MSS_IDLE", MSS_IDLE, false, false);
+ script->set_constant("MSS_WALK", MSS_WALK, false, false);
+ script->set_constant("MSS_LOOT", MSS_LOOT, false, false);
+ script->set_constant("MSS_DEAD", MSS_DEAD, false, false);
+ script->set_constant("MSS_BERSERK", MSS_BERSERK, false, false);
+ script->set_constant("MSS_ANGRY", MSS_ANGRY, false, false);
+ script->set_constant("MSS_RUSH", MSS_RUSH, false, false);
+ script->set_constant("MSS_FOLLOW", MSS_FOLLOW, false, false);
+ script->set_constant("MSS_ANYTARGET", MSS_ANYTARGET, false, false);
+
+ script->constdb_comment("monster skill conditions");
+ script->set_constant("MSC_ANY", -1, false, false);
+ script->set_constant("MSC_ALWAYS", MSC_ALWAYS, false, false);
+ script->set_constant("MSC_MYHPLTMAXRATE", MSC_MYHPLTMAXRATE, false, false);
+ script->set_constant("MSC_MYHPINRATE", MSC_MYHPINRATE, false, false);
+ script->set_constant("MSC_FRIENDHPLTMAXRATE", MSC_FRIENDHPLTMAXRATE, false, false);
+ script->set_constant("MSC_FRIENDHPINRATE", MSC_FRIENDHPINRATE, false, false);
+ script->set_constant("MSC_MYSTATUSON", MSC_MYSTATUSON, false, false);
+ script->set_constant("MSC_MYSTATUSOFF", MSC_MYSTATUSOFF, false, false);
+ script->set_constant("MSC_FRIENDSTATUSON", MSC_FRIENDSTATUSON, false, false);
+ script->set_constant("MSC_FRIENDSTATUSOFF", MSC_FRIENDSTATUSOFF, false, false);
+ script->set_constant("MSC_ATTACKPCGT", MSC_ATTACKPCGT, false, false);
+ script->set_constant("MSC_ATTACKPCGE", MSC_ATTACKPCGE, false, false);
+ script->set_constant("MSC_SLAVELT", MSC_SLAVELT, false, false);
+ script->set_constant("MSC_SLAVELE", MSC_SLAVELE, false, false);
+ script->set_constant("MSC_CLOSEDATTACKED", MSC_CLOSEDATTACKED, false, false);
+ script->set_constant("MSC_LONGRANGEATTACKED", MSC_LONGRANGEATTACKED, false, false);
+ script->set_constant("MSC_SKILLUSED", MSC_SKILLUSED, false, false);
+ script->set_constant("MSC_AFTERSKILL", MSC_AFTERSKILL, false, false);
+ script->set_constant("MSC_CASTTARGETED", MSC_CASTTARGETED, false, false);
+ script->set_constant("MSC_RUDEATTACKED", MSC_RUDEATTACKED, false, false);
+ script->set_constant("MSC_MASTERHPLTMAXRATE", MSC_MASTERHPLTMAXRATE, false, false);
+ script->set_constant("MSC_MASTERATTACKED", MSC_MASTERATTACKED, false, false);
+ script->set_constant("MSC_ALCHEMIST", MSC_ALCHEMIST, false, false);
+ script->set_constant("MSC_SPAWN", MSC_SPAWN, false, false);
+
+ script->constdb_comment("monster skill targets");
+ script->set_constant("MST_TARGET", MST_TARGET, false, false);
+ script->set_constant("MST_RANDOM", MST_RANDOM , false, false);
+ script->set_constant("MST_SELF", MST_SELF, false, false);
+ script->set_constant("MST_FRIEND", MST_FRIEND , false, false);
+ script->set_constant("MST_MASTER", MST_MASTER , false, false);
+ script->set_constant("MST_AROUND5", MST_AROUND5, false, false);
+ script->set_constant("MST_AROUND6", MST_AROUND6, false, false);
+ script->set_constant("MST_AROUND7", MST_AROUND7, false, false);
+ script->set_constant("MST_AROUND8", MST_AROUND8, false, false);
+ script->set_constant("MST_AROUND1", MST_AROUND1, false, false);
+ script->set_constant("MST_AROUND2", MST_AROUND2, false, false);
+ script->set_constant("MST_AROUND3", MST_AROUND3, false, false);
+ script->set_constant("MST_AROUND4", MST_AROUND4, false, false);
+ script->set_constant("MST_AROUND", MST_AROUND , false, false);
+
+ script->constdb_comment("pc block constants, use with *setpcblock* and *checkpcblock*");
+ script->set_constant("PCBLOCK_NONE", PCBLOCK_NONE, false, false);
+ script->set_constant("PCBLOCK_MOVE", PCBLOCK_MOVE, false, false);
+ script->set_constant("PCBLOCK_ATTACK", PCBLOCK_ATTACK, false, false);
+ script->set_constant("PCBLOCK_SKILL", PCBLOCK_SKILL, false, false);
+ script->set_constant("PCBLOCK_USEITEM", PCBLOCK_USEITEM, false, false);
+ script->set_constant("PCBLOCK_CHAT", PCBLOCK_CHAT, false, false);
+ script->set_constant("PCBLOCK_IMMUNE", PCBLOCK_IMMUNE, false, false);
+ script->set_constant("PCBLOCK_SITSTAND", PCBLOCK_SITSTAND, false, false);
+ script->set_constant("PCBLOCK_COMMANDS", PCBLOCK_COMMANDS, false, false);
+
+ script->constdb_comment("private airship responds");
+ script->set_constant("P_AIRSHIP_NONE", P_AIRSHIP_NONE, false, false);
+ script->set_constant("P_AIRSHIP_RETRY", P_AIRSHIP_RETRY, false, false);
+ script->set_constant("P_AIRSHIP_INVALID_START_MAP", P_AIRSHIP_INVALID_START_MAP, false, false);
+ script->set_constant("P_AIRSHIP_INVALID_END_MAP", P_AIRSHIP_INVALID_END_MAP, false, false);
+ script->set_constant("P_AIRSHIP_ITEM_NOT_ENOUGH", P_AIRSHIP_ITEM_NOT_ENOUGH, false, false);
+ script->set_constant("P_AIRSHIP_ITEM_INVALID", P_AIRSHIP_ITEM_INVALID, false, false);
+
+ script->constdb_comment("questinfo types");
+ script->set_constant("QINFO_JOB", QINFO_JOB, false, false);
+ script->set_constant("QINFO_SEX", QINFO_SEX, false, false);
+ script->set_constant("QINFO_BASE_LEVEL", QINFO_BASE_LEVEL, false, false);
+ script->set_constant("QINFO_JOB_LEVEL", QINFO_JOB_LEVEL, false, false);
+ script->set_constant("QINFO_ITEM", QINFO_ITEM, false, false);
+ script->set_constant("QINFO_HOMUN_LEVEL", QINFO_HOMUN_LEVEL, false, false);
+ script->set_constant("QINFO_HOMUN_TYPE", QINFO_HOMUN_TYPE, false, false);
+ script->set_constant("QINFO_QUEST", QINFO_QUEST, false, false);
+ script->set_constant("QINFO_MERCENARY_CLASS", QINFO_MERCENARY_CLASS, false, false);
+
+ script->constdb_comment("function types");
+ script->set_constant("FUNCTION_IS_COMMAND", FUNCTION_IS_COMMAND, false, false);
+ script->set_constant("FUNCTION_IS_GLOBAL", FUNCTION_IS_GLOBAL, false, false);
+ script->set_constant("FUNCTION_IS_LOCAL", FUNCTION_IS_LOCAL, false, false);
+ script->set_constant("FUNCTION_IS_LABEL", FUNCTION_IS_LABEL, false, false);
+
+ script->constdb_comment("item trade restrictions");
+ script->set_constant("ITR_NONE", ITR_NONE, false, false);
+ script->set_constant("ITR_NODROP", ITR_NODROP, false, false);
+ script->set_constant("ITR_NOTRADE", ITR_NOTRADE, false, false);
+ script->set_constant("ITR_PARTNEROVERRIDE", ITR_PARTNEROVERRIDE, false, false);
+ script->set_constant("ITR_NOSELLTONPC", ITR_NOSELLTONPC, false, false);
+ script->set_constant("ITR_NOCART", ITR_NOCART, false, false);
+ script->set_constant("ITR_NOSTORAGE", ITR_NOSTORAGE, false, false);
+ script->set_constant("ITR_NOGSTORAGE", ITR_NOGSTORAGE, false, false);
+ script->set_constant("ITR_NOMAIL", ITR_NOMAIL, false, false);
+ script->set_constant("ITR_NOAUCTION", ITR_NOAUCTION, false, false);
+ script->set_constant("ITR_ALL", ITR_ALL, false, false);
+
+ script->constdb_comment("inventory expand ack responds");
+ script->set_constant("EXPAND_INV_ASK_CONFIRMATION", EXPAND_INVENTORY_ASK_CONFIRMATION, false, false);
+ script->set_constant("EXPAND_INV_FAILED", EXPAND_INVENTORY_FAILED, false, false);
+ script->set_constant("EXPAND_INV_OTHER_WORK", EXPAND_INVENTORY_OTHER_WORK, false, false);
+ script->set_constant("EXPAND_INV_MISSING_ITEM", EXPAND_INVENTORY_MISSING_ITEM, false, false);
+ script->set_constant("EXPAND_INV_MAX_SIZE", EXPAND_INVENTORY_MAX_SIZE, false, false);
+
+ script->constdb_comment("inventory expand final responds");
+ script->set_constant("EXPAND_INV_RESULT_SUCCESS", EXPAND_INVENTORY_RESULT_SUCCESS, false, false);
+ script->set_constant("EXPAND_INV_RESULT_FAILED", EXPAND_INVENTORY_RESULT_FAILED, false, false);
+ script->set_constant("EXPAND_INV_RESULT_OTHER_WORK", EXPAND_INVENTORY_RESULT_OTHER_WORK, false, false);
+ script->set_constant("EXPAND_INV_RESULT_MISSING_ITEM", EXPAND_INVENTORY_RESULT_MISSING_ITEM, false, false);
+ script->set_constant("EXPAND_INV_RESULT_MAX_SIZE", EXPAND_INVENTORY_RESULT_MAX_SIZE, false, false);
+
+ script->constdb_comment("trader type");
+ script->set_constant("NST_ZENY", NST_ZENY, false, false);
+ script->set_constant("NST_CASH", NST_CASH, false, false);
+ script->set_constant("NST_MARKET", NST_MARKET, false, false);
+ script->set_constant("NST_CUSTOM", NST_CUSTOM, false, false);
+ script->set_constant("NST_BARTER", NST_BARTER, false, false);
+
script->constdb_comment("Renewal");
#ifdef RENEWAL
script->set_constant("RENEWAL", 1, false, false);
@@ -21703,12 +26214,13 @@ void script_hardcoded_constants(void)
script->set_constant("RENEWAL_ASPD", 0, false, false);
#endif
script->constdb_comment(NULL);
+#include "constants.inc"
}
/**
* a mapindex_name2id wrapper meant to help with invalid name handling
**/
-unsigned short script_mapindexname2id (struct script_state *st, const char* name)
+static unsigned short script_mapindexname2id(struct script_state *st, const char *name)
{
unsigned short index;
@@ -21812,10 +26324,12 @@ void script_defaults(void)
script->get_val = get_val;
script->get_val2 = get_val2;
script->get_val_ref_str = get_val_npcscope_str;
+ script->get_val_pc_ref_str = get_val_pc_ref_str;
script->get_val_scope_str = get_val_npcscope_str;
script->get_val_npc_str = get_val_npcscope_str;
script->get_val_instance_str = get_val_instance_str;
script->get_val_ref_num = get_val_npcscope_num;
+ script->get_val_pc_ref_num = get_val_pc_ref_num;
script->get_val_scope_num = get_val_npcscope_num;
script->get_val_npc_num = get_val_npcscope_num;
script->get_val_instance_num = get_val_instance_num;
@@ -21844,10 +26358,12 @@ void script_defaults(void)
script->setarray_pc = script_setarray_pc;
script->config_read = script_config_read;
script->add_str = script_add_str;
+ script->add_variable = script_add_variable;
script->get_str = script_get_str;
script->search_str = script_search_str;
script->setd_sub = setd_sub;
script->attach_state = script_attach_state;
+ script->sprintf_helper = script_sprintf_helper;
script->queue = script_hqueue_get;
script->queue_add = script_hqueue_add;
@@ -21894,10 +26410,12 @@ void script_defaults(void)
script->errorwarning_sub = script_errorwarning_sub;
script->set_reg = set_reg;
script->set_reg_ref_str = set_reg_npcscope_str;
+ script->set_reg_pc_ref_str = set_reg_pc_ref_str;
script->set_reg_scope_str = set_reg_npcscope_str;
script->set_reg_npc_str = set_reg_npcscope_str;
script->set_reg_instance_str = set_reg_instance_str;
script->set_reg_ref_num = set_reg_npcscope_num;
+ script->set_reg_pc_ref_num = set_reg_pc_ref_num;
script->set_reg_scope_num = set_reg_npcscope_num;
script->set_reg_npc_num = set_reg_npcscope_num;
script->set_reg_instance_num = set_reg_instance_num;
@@ -21914,6 +26432,9 @@ void script_defaults(void)
script->db_free_code_sub = db_script_free_code_sub;
script->add_autobonus = script_add_autobonus;
script->menu_countoptions = menu_countoptions;
+ script->buildin_recovery_sub = buildin_recovery_sub;
+ script->buildin_recovery_pc_sub = buildin_recovery_pc_sub;
+ script->buildin_recovery_bl_sub = buildin_recovery_bl_sub;
script->buildin_areawarp_sub = buildin_areawarp_sub;
script->buildin_areapercentheal_sub = buildin_areapercentheal_sub;
script->buildin_delitem_delete = buildin_delitem_delete;
diff --git a/src/map/script.h b/src/map/script.h
index a69000991..549ad3284 100644
--- a/src/map/script.h
+++ b/src/map/script.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -50,7 +50,7 @@ struct item_data;
#define NUM_WHISPER_VAR 10
/// Maximum amount of elements in script arrays
-#define SCRIPT_MAX_ARRAYSIZE (UINT_MAX - 1)
+#define SCRIPT_MAX_ARRAYSIZE (INT_MAX - 1)
#define SCRIPT_BLOCK_SIZE 512
@@ -64,6 +64,9 @@ struct item_data;
#define SCRIPT_EQUIP_TABLE_SIZE 20
+#define MAX_MENU_OPTIONS 0xFF
+#define MAX_MENU_LENGTH 0x800
+
//#define SCRIPT_DEBUG_DISP
//#define SCRIPT_DEBUG_DISASM
//#define SCRIPT_DEBUG_HASH
@@ -143,7 +146,6 @@ struct item_data;
/// Returns if this a reference to a param
#define reference_toparam(data) ( script->str_data[reference_getid(data)].type == C_PARAM )
/// Returns if this a reference to a variable
-//##TODO confirm it's C_NAME [FlavioJS]
#define reference_tovariable(data) ( script->str_data[reference_getid(data)].type == C_NAME )
/// Returns the unique id of the reference (id and index)
#define reference_getuid(data) ( (data)->u.num )
@@ -178,6 +180,8 @@ struct item_data;
#define BUILDIN(x) bool buildin_ ## x (struct script_state* st)
+#define get_buildin_name(st) ( script->get_str((int)(script_getdata((st), 0)->u.num)) )
+
#define script_fetch(st, n, t) do { \
if( script_hasdata((st),(n)) ) \
(t)=script_getnum((st),(n)); \
@@ -235,6 +239,7 @@ typedef enum c_op {
C_SUB_PRE, // --a
C_RE_EQ, // ~=
C_RE_NE, // ~!
+ C_POW, // **
} c_op;
/// Script queue options
@@ -335,7 +340,10 @@ enum {
MF_RESET,
MF_NOTOMB,
MF_NOCASHSHOP,
- MF_NOVIEWID
+ MF_NOAUTOLOOT,
+ MF_NOVIEWID,
+ MF_PAIRSHIP_STARTABLE,
+ MF_PAIRSHIP_ENDABLE
};
enum navigation_service {
@@ -350,6 +358,125 @@ enum navigation_service {
};
/**
+ * Unit Types for script handling.
+ */
+enum script_unit_types {
+ UNIT_PC = 0,
+ UNIT_NPC,
+ UNIT_PET,
+ UNIT_MOB,
+ UNIT_HOM,
+ UNIT_MER,
+ UNIT_ELEM,
+};
+
+/**
+ * Unit Data Types for script handling.
+ */
+enum script_unit_data_types {
+ UDT_TYPE = 0,
+ UDT_SIZE,
+ UDT_LEVEL,
+ UDT_HP,
+ UDT_MAXHP,
+ UDT_SP,
+ UDT_MAXSP,
+ UDT_MASTERAID,
+ UDT_MASTERCID,
+ UDT_MAPIDXY,
+ UDT_WALKTOXY,
+ UDT_SPEED,
+ UDT_MODE,
+ UDT_AI,
+ UDT_SCOPTION,
+ UDT_SEX,
+ UDT_CLASS,
+ UDT_HAIRSTYLE,
+ UDT_HAIRCOLOR,
+ UDT_HEADBOTTOM,
+ UDT_HEADMIDDLE,
+ UDT_HEADTOP,
+ UDT_CLOTHCOLOR,
+ UDT_SHIELD,
+ UDT_WEAPON,
+ UDT_LOOKDIR,
+ UDT_CANMOVETICK,
+ UDT_STR,
+ UDT_AGI,
+ UDT_VIT,
+ UDT_INT,
+ UDT_DEX,
+ UDT_LUK,
+ UDT_ATKRANGE,
+ UDT_ATKMIN,
+ UDT_ATKMAX,
+ UDT_MATKMIN,
+ UDT_MATKMAX,
+ UDT_DEF,
+ UDT_MDEF,
+ UDT_HIT,
+ UDT_FLEE,
+ UDT_PDODGE,
+ UDT_CRIT,
+ UDT_RACE,
+ UDT_ELETYPE,
+ UDT_ELELEVEL,
+ UDT_AMOTION,
+ UDT_ADELAY,
+ UDT_DMOTION,
+ UDT_HUNGER,
+ UDT_INTIMACY,
+ UDT_LIFETIME,
+ UDT_MERC_KILLCOUNT,
+ UDT_STATPOINT,
+ UDT_ROBE,
+ UDT_BODY2,
+ UDT_MAX
+};
+
+/**
+ * Item Info types.
+ */
+enum script_iteminfo_types {
+ ITEMINFO_BUYPRICE = 0,
+ ITEMINFO_SELLPRICE,
+ ITEMINFO_TYPE,
+ ITEMINFO_MAXCHANCE,
+ ITEMINFO_SEX,
+ ITEMINFO_LOC,
+ ITEMINFO_WEIGHT,
+ ITEMINFO_ATK,
+ ITEMINFO_DEF,
+ ITEMINFO_RANGE,
+ ITEMINFO_SLOTS,
+ ITEMINFO_SUBTYPE,
+ ITEMINFO_ELV,
+ ITEMINFO_WLV,
+ ITEMINFO_VIEWID,
+ ITEMINFO_MATK,
+ ITEMINFO_VIEWSPRITE,
+ ITEMINFO_TRADE,
+
+ ITEMINFO_MAX
+};
+
+/**
+ * Player blocking actions related flags.
+ */
+enum pcblock_action_flag {
+ PCBLOCK_NONE = 0x00,
+ PCBLOCK_MOVE = 0x01,
+ PCBLOCK_ATTACK = 0x02,
+ PCBLOCK_SKILL = 0x04,
+ PCBLOCK_USEITEM = 0x08,
+ PCBLOCK_CHAT = 0x10,
+ PCBLOCK_IMMUNE = 0x20,
+ PCBLOCK_SITSTAND = 0x40,
+ PCBLOCK_COMMANDS = 0x80,
+ PCBLOCK_ALL = 0xFF,
+};
+
+/**
* Structures
**/
@@ -586,7 +713,7 @@ struct script_interface {
int string_list_size;
int string_list_pos;
/* */
- unsigned short current_item_id;
+ int current_item_id;
/* */
struct script_label_entry *labels;
int label_count;
@@ -672,10 +799,12 @@ struct script_interface {
struct script_data* (*push_val)(struct script_stack* stack, enum c_op type, int64 val, struct reg_db *ref);
struct script_data *(*get_val) (struct script_state* st, struct script_data* data);
char* (*get_val_ref_str) (struct script_state* st, struct reg_db *n, struct script_data* data);
+ char* (*get_val_pc_ref_str) (struct script_state* st, struct reg_db *n, struct script_data* data);
char* (*get_val_scope_str) (struct script_state* st, struct reg_db *n, struct script_data* data);
char* (*get_val_npc_str) (struct script_state* st, struct reg_db *n, struct script_data* data);
char* (*get_val_instance_str) (struct script_state* st, const char* name, struct script_data* data);
int (*get_val_ref_num) (struct script_state* st, struct reg_db *n, struct script_data* data);
+ int (*get_val_pc_ref_num) (struct script_state* st, struct reg_db *n, struct script_data* data);
int (*get_val_scope_num) (struct script_state* st, struct reg_db *n, struct script_data* data);
int (*get_val_npc_num) (struct script_state* st, struct reg_db *n, struct script_data* data);
int (*get_val_instance_num) (struct script_state* st, const char* name, struct script_data* data);
@@ -705,6 +834,7 @@ struct script_interface {
void (*setarray_pc) (struct map_session_data* sd, const char* varname, uint32 idx, void* value, int* refcache);
bool (*config_read) (const char *filename, bool imported);
int (*add_str) (const char* p);
+ int (*add_variable) (const char *varname);
const char* (*get_str) (int id);
int (*search_str) (const char* p);
void (*setd_sub) (struct script_state *st, struct map_session_data *sd, const char *varname, int elem, const void *value, struct reg_db *ref);
@@ -748,17 +878,19 @@ struct script_interface {
void (*add_translatable_string) (const struct script_string_buf *string, const char *start_point);
const char *(*parse_expr) (const char *p);
const char *(*parse_line) (const char *p);
- void (*read_constdb) (void);
+ void (*read_constdb) (bool reload);
void (*constdb_comment) (const char *comment);
void (*load_parameters) (void);
const char* (*print_line) (StringBuf *buf, const char *p, const char *mark, int line);
void (*errorwarning_sub) (StringBuf *buf, const char *src, const char *file, int start_line, const char *error_msg, const char *error_pos);
int (*set_reg) (struct script_state *st, struct map_session_data *sd, int64 num, const char *name, const void *value, struct reg_db *ref);
void (*set_reg_ref_str) (struct script_state* st, struct reg_db *n, int64 num, const char* name, const char *str);
+ void (*set_reg_pc_ref_str) (struct script_state* st, struct reg_db *n, int64 num, const char* name, const char *str);
void (*set_reg_scope_str) (struct script_state* st, struct reg_db *n, int64 num, const char* name, const char *str);
void (*set_reg_npc_str) (struct script_state* st, struct reg_db *n, int64 num, const char* name, const char *str);
void (*set_reg_instance_str) (struct script_state* st, int64 num, const char* name, const char *str);
void (*set_reg_ref_num) (struct script_state* st, struct reg_db *n, int64 num, const char* name, int val);
+ void (*set_reg_pc_ref_num) (struct script_state* st, struct reg_db *n, int64 num, const char* name, int val);
void (*set_reg_scope_num) (struct script_state* st, struct reg_db *n, int64 num, const char* name, int val);
void (*set_reg_npc_num) (struct script_state* st, struct reg_db *n, int64 num, const char* name, int val);
void (*set_reg_instance_num) (struct script_state* st, int64 num, const char* name, int val);
@@ -774,6 +906,9 @@ struct script_interface {
int (*db_free_code_sub) (union DBKey key, struct DBData *data, va_list ap);
void (*add_autobonus) (const char *autobonus);
int (*menu_countoptions) (const char *str, int max_count, int *total);
+ int (*buildin_recovery_sub) (struct map_session_data *sd);
+ int (*buildin_recovery_pc_sub) (struct map_session_data *sd, va_list ap);
+ int (*buildin_recovery_bl_sub) (struct block_list *bl, va_list ap);
int (*buildin_areawarp_sub) (struct block_list *bl, va_list ap);
int (*buildin_areapercentheal_sub) (struct block_list *bl, va_list ap);
void (*buildin_delitem_delete) (struct map_session_data *sd, int idx, int *amount, bool delete_items);
@@ -798,6 +933,7 @@ struct script_interface {
int (*buildin_mobuseskill_sub) (struct block_list *bl, va_list ap);
int (*cleanfloor_sub) (struct block_list *bl, va_list ap);
int (*run_func) (struct script_state *st);
+ bool (*sprintf_helper) (struct script_state *st, int start, struct StringBuf *out);
const char *(*getfuncname) (struct script_state *st);
// for ENABLE_CASE_CHECK
unsigned int (*calc_hash_ci) (const char *p);
diff --git a/src/map/searchstore.c b/src/map/searchstore.c
index 16d8ce130..0c6fa3555 100644
--- a/src/map/searchstore.c
+++ b/src/map/searchstore.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -31,7 +31,7 @@
#include "common/showmsg.h" // ShowError, ShowWarning
#include "common/strlib.h" // safestrncpy
-struct searchstore_interface searchstore_s;
+static struct searchstore_interface searchstore_s;
struct searchstore_interface *searchstore;
/// retrieves search function by type
@@ -55,7 +55,7 @@ static inline searchstore_searchall_t searchstore_getsearchallfunc(unsigned char
}
/// checks if the player has a store by type
-static inline bool searchstore_hasstore(struct map_session_data* sd, unsigned char type)
+static inline bool searchstore_hasstore(struct map_session_data *sd, unsigned char type)
{
nullpo_retr(false, sd);
switch( type ) {
@@ -66,7 +66,7 @@ static inline bool searchstore_hasstore(struct map_session_data* sd, unsigned ch
}
/// returns player's store id by type
-static inline unsigned int searchstore_getstoreid(struct map_session_data* sd, unsigned char type)
+static inline unsigned int searchstore_getstoreid(struct map_session_data *sd, unsigned char type)
{
nullpo_retr(false, sd);
switch( type ) {
@@ -76,7 +76,7 @@ static inline unsigned int searchstore_getstoreid(struct map_session_data* sd, u
return 0;
}
-bool searchstore_open(struct map_session_data* sd, unsigned int uses, unsigned short effect)
+static bool searchstore_open(struct map_session_data *sd, unsigned int uses, unsigned short effect)
{
nullpo_retr(false, sd);
if( !battle_config.feature_search_stores || sd->searchstore.open ) {
@@ -96,7 +96,11 @@ bool searchstore_open(struct map_session_data* sd, unsigned int uses, unsigned s
return true;
}
-void searchstore_query(struct map_session_data* sd, unsigned char type, unsigned int min_price, unsigned int max_price, const unsigned short* itemlist, unsigned int item_count, const unsigned short* cardlist, unsigned int card_count)
+static void searchstore_query(struct map_session_data *sd,
+ unsigned char type,
+ unsigned int min_price, unsigned int max_price,
+ const uint32 *itemlist, unsigned int item_count,
+ const uint32 *cardlist, unsigned int card_count)
{
unsigned int i;
struct map_session_data* pl_sd;
@@ -137,14 +141,14 @@ void searchstore_query(struct map_session_data* sd, unsigned char type, unsigned
// validate lists
for( i = 0; i < item_count; i++ ) {
if( !itemdb->exists(itemlist[i]) ) {
- ShowWarning("searchstore_query: Client resolved item %hu is not known.\n", itemlist[i]);
+ ShowWarning("searchstore_query: Client resolved item %u is not known.\n", itemlist[i]);
clif->search_store_info_failed(sd, SSI_FAILED_NOTHING_SEARCH_ITEM);
return;
}
}
for( i = 0; i < card_count; i++ ) {
if( !itemdb->exists(cardlist[i]) ) {
- ShowWarning("searchstore_query: Client resolved card %hu is not known.\n", cardlist[i]);
+ ShowWarning("searchstore_query: Client resolved card %u is not known.\n", cardlist[i]);
clif->search_store_info_failed(sd, SSI_FAILED_NOTHING_SEARCH_ITEM);
return;
}
@@ -209,7 +213,7 @@ void searchstore_query(struct map_session_data* sd, unsigned char type, unsigned
}
/// checks whether or not more results are available for the client
-bool searchstore_querynext(struct map_session_data* sd)
+static bool searchstore_querynext(struct map_session_data *sd)
{
nullpo_retr(false, sd);
if( sd->searchstore.count && ( sd->searchstore.count-1 )/SEARCHSTORE_RESULTS_PER_PAGE < sd->searchstore.pages ) {
@@ -219,7 +223,7 @@ bool searchstore_querynext(struct map_session_data* sd)
return false;
}
-void searchstore_next(struct map_session_data* sd)
+static void searchstore_next(struct map_session_data *sd)
{
nullpo_retv(sd);
if( !battle_config.feature_search_stores || !sd->searchstore.open || sd->searchstore.count <= sd->searchstore.pages*SEARCHSTORE_RESULTS_PER_PAGE )
@@ -234,7 +238,7 @@ void searchstore_next(struct map_session_data* sd)
sd->searchstore.pages++;
}
-void searchstore_clear(struct map_session_data* sd)
+static void searchstore_clear(struct map_session_data *sd)
{
nullpo_retv(sd);
searchstore->clearremote(sd);
@@ -248,7 +252,7 @@ void searchstore_clear(struct map_session_data* sd)
sd->searchstore.pages = 0;
}
-void searchstore_close(struct map_session_data* sd)
+static void searchstore_close(struct map_session_data *sd)
{
nullpo_retv(sd);
if( sd->searchstore.open ) {
@@ -259,7 +263,7 @@ void searchstore_close(struct map_session_data* sd)
}
}
-void searchstore_click(struct map_session_data* sd, int account_id, int store_id, unsigned short nameid)
+static void searchstore_click(struct map_session_data *sd, int account_id, int store_id, int nameid)
{
unsigned int i;
struct map_session_data* pl_sd;
@@ -274,7 +278,7 @@ void searchstore_click(struct map_session_data* sd, int account_id, int store_id
ARR_FIND( 0, sd->searchstore.count, i, sd->searchstore.items[i].store_id == store_id && sd->searchstore.items[i].account_id == account_id && sd->searchstore.items[i].nameid == nameid );
if( i == sd->searchstore.count ) {// no such result, crafted
- ShowWarning("searchstore_click: Received request with item %hu of account %d, which is not part of current result set (account_id=%d, char_id=%d).\n", nameid, account_id, sd->bl.id, sd->status.char_id);
+ ShowWarning("searchstore_click: Received request with item %d of account %d, which is not part of current result set (account_id=%d, char_id=%d).\n", nameid, account_id, sd->bl.id, sd->status.char_id);
clif->search_store_info_failed(sd, SSI_FAILED_SSILIST_CLICK_TO_OPEN_STORE);
return;
}
@@ -327,20 +331,21 @@ void searchstore_click(struct map_session_data* sd, int account_id, int store_id
}
/// checks whether or not sd has opened account_id's shop remotely
-bool searchstore_queryremote(struct map_session_data* sd, int account_id)
+static bool searchstore_queryremote(struct map_session_data *sd, int account_id)
{
nullpo_retr(false, sd);
return (bool)( sd->searchstore.open && sd->searchstore.count && sd->searchstore.remote_id == account_id );
}
/// removes range-check bypassing for remotely opened stores
-void searchstore_clearremote(struct map_session_data* sd) {
+static void searchstore_clearremote(struct map_session_data *sd)
+{
nullpo_retv(sd);
sd->searchstore.remote_id = 0;
}
/// receives results from a store-specific callback
-bool searchstore_result(struct map_session_data* sd, unsigned int store_id, int account_id, const char* store_name, unsigned short nameid, unsigned short amount, unsigned int price, const short* card, unsigned char refine)
+static bool searchstore_result(struct map_session_data *sd, unsigned int store_id, int account_id, const char *store_name, int nameid, unsigned short amount, unsigned int price, const int *card, unsigned char refine, const struct item_option *option)
{
struct s_search_store_info_item* ssitem;
@@ -360,11 +365,12 @@ bool searchstore_result(struct map_session_data* sd, unsigned int store_id, int
ssitem->price = price;
memcpy(ssitem->card, card, sizeof(ssitem->card));
ssitem->refine = refine;
+ memcpy(ssitem->option, option, sizeof(ssitem->option));
return true;
}
-void searchstore_defaults (void)
+void searchstore_defaults(void)
{
searchstore = &searchstore_s;
diff --git a/src/map/searchstore.h b/src/map/searchstore.h
index 2d1de7e55..e5ccfd300 100644
--- a/src/map/searchstore.h
+++ b/src/map/searchstore.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -60,8 +60,8 @@ enum e_searchstore_failure {
/// information about the search being performed
struct s_search_store_search {
struct map_session_data* search_sd; // sd of the searching player
- const unsigned short* itemlist;
- const unsigned short* cardlist;
+ const uint32* itemlist;
+ const uint32* cardlist;
unsigned int item_count;
unsigned int card_count;
unsigned int min_price;
@@ -72,11 +72,12 @@ struct s_search_store_info_item {
unsigned int store_id;
int account_id;
char store_name[MESSAGE_SIZE];
- unsigned short nameid;
+ int nameid;
unsigned short amount;
unsigned int price;
- short card[MAX_SLOTS];
+ int card[MAX_SLOTS];
unsigned char refine;
+ struct item_option option[MAX_ITEM_OPTIONS];
};
struct s_search_store_info {
@@ -92,7 +93,7 @@ struct s_search_store_info {
};
/// type for shop search function
-typedef bool (*searchstore_search_t)(struct map_session_data* sd, unsigned short nameid);
+typedef bool (*searchstore_search_t)(struct map_session_data* sd, int nameid);
typedef bool (*searchstore_searchall_t)(struct map_session_data* sd, const struct s_search_store_search* s);
/**
@@ -100,15 +101,15 @@ typedef bool (*searchstore_searchall_t)(struct map_session_data* sd, const struc
**/
struct searchstore_interface {
bool (*open) (struct map_session_data* sd, unsigned int uses, unsigned short effect);
- void (*query) (struct map_session_data* sd, unsigned char type, unsigned int min_price, unsigned int max_price, const unsigned short* itemlist, unsigned int item_count, const unsigned short* cardlist, unsigned int card_count);
+ void (*query) (struct map_session_data* sd, unsigned char type, unsigned int min_price, unsigned int max_price, const uint32* itemlist, unsigned int item_count, const uint32* cardlist, unsigned int card_count);
bool (*querynext) (struct map_session_data* sd);
void (*next) (struct map_session_data* sd);
void (*clear) (struct map_session_data* sd);
void (*close) (struct map_session_data* sd);
- void (*click) (struct map_session_data* sd, int account_id, int store_id, unsigned short nameid);
+ void (*click) (struct map_session_data* sd, int account_id, int store_id, int nameid);
bool (*queryremote) (struct map_session_data* sd, int account_id);
void (*clearremote) (struct map_session_data* sd);
- bool (*result) (struct map_session_data* sd, unsigned int store_id, int account_id, const char* store_name, unsigned short nameid, unsigned short amount, unsigned int price, const short* card, unsigned char refine);
+ bool (*result) (struct map_session_data* sd, unsigned int store_id, int account_id, const char* store_name, int nameid, unsigned short amount, unsigned int price, const int* card, unsigned char refine, const struct item_option *option);
};
#ifdef HERCULES_CORE
diff --git a/src/map/skill.c b/src/map/skill.c
index 51a8a28e7..069db55df 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -26,6 +26,7 @@
#include "map/battle.h"
#include "map/battleground.h"
#include "map/chrif.h"
+#include "map/clan.h"
#include "map/clif.h"
#include "map/date.h"
#include "map/elemental.h"
@@ -36,6 +37,7 @@
#include "map/log.h"
#include "map/map.h"
#include "map/mercenary.h"
+#include "map/messages.h"
#include "map/mob.h"
#include "map/npc.h"
#include "map/party.h"
@@ -78,13 +80,13 @@
#error GD_SKILLRANGEMAX is greater than 999
#endif
-struct skill_interface skill_s;
+static struct skill_interface skill_s;
struct s_skill_dbs skilldbs;
struct skill_interface *skill;
//Since only mob-casted splash skills can hit ice-walls
-int skill_splash_target(struct block_list* bl)
+static int skill_splash_target(struct block_list *bl)
{
nullpo_retr(BL_CHAR, bl);
#ifndef RENEWAL
@@ -95,7 +97,7 @@ int skill_splash_target(struct block_list* bl)
}
/// Returns the id of the skill, or 0 if not found.
-int skill_name2id(const char* name)
+static int skill_name2id(const char *name)
{
if( name == NULL )
return 0;
@@ -105,7 +107,7 @@ int skill_name2id(const char* name)
/// Maps skill ids to skill db offsets.
/// Returns the skill's array index, or 0 (Unknown Skill).
-int skill_get_index (uint16 skill_id)
+static int skill_get_index(int skill_id)
{
// avoid ranges reserved for mapping guild/homun/mercenary skills
if( (skill_id >= GD_SKILLRANGEMIN && skill_id <= GD_SKILLRANGEMAX)
@@ -138,88 +140,589 @@ int skill_get_index (uint16 skill_id)
}
// validate result
- if( !skill_id || skill_id >= MAX_SKILL_DB )
+ if (skill_id <= 0|| skill_id >= MAX_SKILL_DB)
return 0;
return skill_id;
}
-const char* skill_get_name( uint16 skill_id ) {
+static const char *skill_get_name(int skill_id)
+{
return skill->dbs->db[skill->get_index(skill_id)].name;
}
-const char* skill_get_desc( uint16 skill_id ) {
+static const char *skill_get_desc(int skill_id)
+{
return skill->dbs->db[skill->get_index(skill_id)].desc;
}
-// out of bounds error checking [celest]
-void skill_chk(uint16* skill_id) {
- *skill_id = skill->get_index(*skill_id); // checks/adjusts id
-}
+#define skill_get_lvl_idx(lv) (min((lv), MAX_SKILL_LEVEL) - 1)
+#define skill_adjust_over_level(val, lv, max_lv) ((val) > 1 ? ((val) + ((lv) - (max_lv)) / 2) : (val))
-#define skill_get(var,id) do { skill->chk(&(id)); if(!(id)) return 0; return (var); } while(0)
-#define skill_get2(var,id,lv) do { \
- skill->chk(&(id)); \
- if(!(id)) return 0; \
- if( (lv) > MAX_SKILL_LEVEL && (var) > 1 ) { \
- int lv2__ = (lv); (lv) = skill->dbs->db[(id)].max; \
- return (var) + ((lv2__-(lv))/2);\
- } \
- return (var);\
-} while(0)
-#define skill_glv(lv) min((lv),MAX_SKILL_LEVEL-1)
// Skill DB
-int skill_get_hit( uint16 skill_id ) { skill_get (skill->dbs->db[skill_id].hit, skill_id); }
-int skill_get_inf( uint16 skill_id ) { skill_get (skill->dbs->db[skill_id].inf, skill_id); }
-int skill_get_ele( uint16 skill_id , uint16 skill_lv ) { Assert_ret(skill_lv > 0); skill_get (skill->dbs->db[skill_id].element[skill_glv(skill_lv-1)], skill_id); }
-int skill_get_nk( uint16 skill_id ) { skill_get (skill->dbs->db[skill_id].nk, skill_id); }
-int skill_get_max( uint16 skill_id ) { skill_get (skill->dbs->db[skill_id].max, skill_id); }
-int skill_get_range( uint16 skill_id , uint16 skill_lv ) { Assert_ret(skill_lv > 0); skill_get2 (skill->dbs->db[skill_id].range[skill_glv(skill_lv-1)], skill_id, skill_lv); }
-int skill_get_splash( uint16 skill_id , uint16 skill_lv ) { Assert_ret(skill_lv > 0); skill_get2 ( (skill->dbs->db[skill_id].splash[skill_glv(skill_lv-1)]>=0?skill->dbs->db[skill_id].splash[skill_glv(skill_lv-1)]:AREA_SIZE), skill_id, skill_lv); }
-int skill_get_hp( uint16 skill_id ,uint16 skill_lv ) { Assert_ret(skill_lv > 0); skill_get2 (skill->dbs->db[skill_id].hp[skill_glv(skill_lv-1)], skill_id, skill_lv); }
-int skill_get_sp( uint16 skill_id ,uint16 skill_lv ) { Assert_ret(skill_lv > 0); skill_get2 (skill->dbs->db[skill_id].sp[skill_glv(skill_lv-1)], skill_id, skill_lv); }
-int skill_get_hp_rate(uint16 skill_id, uint16 skill_lv ) { Assert_ret(skill_lv > 0); skill_get2 (skill->dbs->db[skill_id].hp_rate[skill_glv(skill_lv-1)], skill_id, skill_lv); }
-int skill_get_sp_rate(uint16 skill_id, uint16 skill_lv ) { Assert_ret(skill_lv > 0); skill_get2 (skill->dbs->db[skill_id].sp_rate[skill_glv(skill_lv-1)], skill_id, skill_lv); }
-int skill_get_state(uint16 skill_id) { skill_get (skill->dbs->db[skill_id].state, skill_id); }
-int skill_get_spiritball(uint16 skill_id, uint16 skill_lv) { Assert_ret(skill_lv > 0); skill_get2 (skill->dbs->db[skill_id].spiritball[skill_glv(skill_lv-1)], skill_id, skill_lv); }
-int skill_get_itemid(uint16 skill_id, int idx) { skill_get (skill->dbs->db[skill_id].itemid[idx], skill_id); }
-int skill_get_itemqty(uint16 skill_id, int idx) { skill_get (skill->dbs->db[skill_id].amount[idx], skill_id); }
-int skill_get_zeny( uint16 skill_id ,uint16 skill_lv ) { Assert_ret(skill_lv > 0); skill_get2 (skill->dbs->db[skill_id].zeny[skill_glv(skill_lv-1)], skill_id, skill_lv); }
-int skill_get_num( uint16 skill_id ,uint16 skill_lv ) { Assert_ret(skill_lv > 0); skill_get2 (skill->dbs->db[skill_id].num[skill_glv(skill_lv-1)], skill_id, skill_lv); }
-int skill_get_cast( uint16 skill_id ,uint16 skill_lv ) { Assert_ret(skill_lv > 0); skill_get2 (skill->dbs->db[skill_id].cast[skill_glv(skill_lv-1)], skill_id, skill_lv); }
-int skill_get_delay( uint16 skill_id ,uint16 skill_lv ) { Assert_ret(skill_lv > 0); skill_get2 (skill->dbs->db[skill_id].delay[skill_glv(skill_lv-1)], skill_id, skill_lv); }
-int skill_get_walkdelay( uint16 skill_id ,uint16 skill_lv ) { Assert_ret(skill_lv > 0); skill_get2 (skill->dbs->db[skill_id].walkdelay[skill_glv(skill_lv-1)], skill_id, skill_lv); }
-int skill_get_time( uint16 skill_id ,uint16 skill_lv ) { Assert_ret(skill_lv > 0); skill_get2 (skill->dbs->db[skill_id].upkeep_time[skill_glv(skill_lv-1)], skill_id, skill_lv); }
-int skill_get_time2( uint16 skill_id ,uint16 skill_lv ) { Assert_ret(skill_lv > 0); skill_get2 (skill->dbs->db[skill_id].upkeep_time2[skill_glv(skill_lv-1)], skill_id, skill_lv); }
-int skill_get_castdef( uint16 skill_id ) { skill_get (skill->dbs->db[skill_id].cast_def_rate, skill_id); }
-int skill_get_weapontype( uint16 skill_id ) { skill_get (skill->dbs->db[skill_id].weapon, skill_id); }
-int skill_get_ammotype( uint16 skill_id ) { skill_get (skill->dbs->db[skill_id].ammo, skill_id); }
-int skill_get_ammo_qty( uint16 skill_id, uint16 skill_lv ) { Assert_ret(skill_lv > 0); skill_get2 (skill->dbs->db[skill_id].ammo_qty[skill_glv(skill_lv-1)], skill_id, skill_lv); }
-int skill_get_inf2( uint16 skill_id ) { skill_get (skill->dbs->db[skill_id].inf2, skill_id); }
-int skill_get_castcancel( uint16 skill_id ) { skill_get (skill->dbs->db[skill_id].castcancel, skill_id); }
-int skill_get_maxcount( uint16 skill_id ,uint16 skill_lv ) { Assert_ret(skill_lv > 0); skill_get2 (skill->dbs->db[skill_id].maxcount[skill_glv(skill_lv-1)], skill_id, skill_lv); }
-int skill_get_blewcount( uint16 skill_id ,uint16 skill_lv ) { Assert_ret(skill_lv > 0); skill_get2 (skill->dbs->db[skill_id].blewcount[skill_glv(skill_lv-1)], skill_id, skill_lv); }
-int skill_get_mhp( uint16 skill_id ,uint16 skill_lv ) { Assert_ret(skill_lv > 0); skill_get2 (skill->dbs->db[skill_id].mhp[skill_glv(skill_lv-1)], skill_id, skill_lv); }
-int skill_get_castnodex( uint16 skill_id ,uint16 skill_lv ) { Assert_ret(skill_lv > 0); skill_get2 (skill->dbs->db[skill_id].castnodex[skill_glv(skill_lv-1)], skill_id, skill_lv); }
-int skill_get_delaynodex( uint16 skill_id ,uint16 skill_lv ){ Assert_ret(skill_lv > 0); skill_get2 (skill->dbs->db[skill_id].delaynodex[skill_glv(skill_lv-1)], skill_id, skill_lv); }
-int skill_get_type( uint16 skill_id ) { skill_get (skill->dbs->db[skill_id].skill_type, skill_id); }
-int skill_get_unit_id ( uint16 skill_id, int flag ){ skill_get (skill->dbs->db[skill_id].unit_id[flag], skill_id); }
-int skill_get_unit_interval( uint16 skill_id ) { skill_get (skill->dbs->db[skill_id].unit_interval, skill_id); }
-int skill_get_unit_range( uint16 skill_id, uint16 skill_lv ) { Assert_ret(skill_lv > 0); skill_get2 (skill->dbs->db[skill_id].unit_range[skill_glv(skill_lv-1)], skill_id, skill_lv); }
-int skill_get_unit_target( uint16 skill_id ) { skill_get (skill->dbs->db[skill_id].unit_target&BCT_ALL, skill_id); }
-int skill_get_unit_bl_target( uint16 skill_id ) { skill_get (skill->dbs->db[skill_id].unit_target&BL_ALL, skill_id); }
-int skill_get_unit_flag( uint16 skill_id ) { skill_get (skill->dbs->db[skill_id].unit_flag, skill_id); }
-int skill_get_unit_layout_type( uint16 skill_id ,uint16 skill_lv ){ Assert_ret(skill_lv > 0); skill_get2 (skill->dbs->db[skill_id].unit_layout_type[skill_glv(skill_lv-1)], skill_id, skill_lv); }
-int skill_get_cooldown( uint16 skill_id, uint16 skill_lv ) { Assert_ret(skill_lv > 0); skill_get2 (skill->dbs->db[skill_id].cooldown[skill_glv(skill_lv-1)], skill_id, skill_lv); }
-int skill_get_fixed_cast( uint16 skill_id ,uint16 skill_lv ) {
+
+static int skill_get_hit(int skill_id)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ return skill->dbs->db[idx].hit;
+}
+
+static int skill_get_inf(int skill_id)
+{
+ int idx;
+ if (skill_id == 0)
+ return INF_NONE;
+ idx = skill->get_index(skill_id);
+ Assert_retr(INF_NONE, idx != 0);
+ return skill->dbs->db[idx].inf;
+}
+
+static int skill_get_ele(int skill_id, int skill_lv)
+{
+ int idx;
+ if (skill_id == 0)
+ return ELE_NEUTRAL;
+ idx = skill->get_index(skill_id);
+ Assert_retr(ELE_NEUTRAL, idx != 0);
+ Assert_retr(ELE_NEUTRAL, skill_lv > 0);
+ return skill->dbs->db[idx].element[skill_get_lvl_idx(skill_lv)];
+}
+
+static int skill_get_nk(int skill_id)
+{
+ int idx;
+ if (skill_id == 0)
+ return NK_NONE;
+ idx = skill->get_index(skill_id);
+ Assert_retr(NK_NONE, idx != 0);
+ return skill->dbs->db[idx].nk;
+}
+
+static int skill_get_max(int skill_id)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ return skill->dbs->db[idx].max;
+}
+
+static int skill_get_range(int skill_id, int skill_lv)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ Assert_ret(skill_lv > 0);
+ if (skill_lv > MAX_SKILL_LEVEL) {
+ int val = skill->dbs->db[idx].range[skill_get_lvl_idx(skill_lv)];
+ return skill_adjust_over_level(val, skill_lv, skill->dbs->db[idx].max);
+ }
+ return skill->dbs->db[idx].range[skill_get_lvl_idx(skill_lv)];
+}
+
+static int skill_get_splash(int skill_id, int skill_lv)
+{
+ int idx, val;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ Assert_ret(skill_lv > 0);
+ val = skill->dbs->db[idx].splash[skill_get_lvl_idx(skill_lv)];
+ if (val < 0) {
+ val = AREA_SIZE;
+ }
+ if (skill_lv > MAX_SKILL_LEVEL) {
+ return skill_adjust_over_level(val, skill_lv, skill->dbs->db[idx].max);
+ }
+ return val;
+}
+
+static int skill_get_hp(int skill_id, int skill_lv)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ Assert_ret(skill_lv > 0);
+ if (skill_lv > MAX_SKILL_LEVEL) {
+ int val = skill->dbs->db[idx].hp[skill_get_lvl_idx(skill_lv)];
+ return skill_adjust_over_level(val, skill_lv, skill->dbs->db[idx].max);
+ }
+ return skill->dbs->db[idx].hp[skill_get_lvl_idx(skill_lv)];
+}
+
+static int skill_get_sp(int skill_id, int skill_lv)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ Assert_ret(skill_lv > 0);
+ if (skill_lv > MAX_SKILL_LEVEL) {
+ int val = skill->dbs->db[idx].sp[skill_get_lvl_idx(skill_lv)];
+ return skill_adjust_over_level(val, skill_lv, skill->dbs->db[idx].max);
+ }
+ return skill->dbs->db[idx].sp[skill_get_lvl_idx(skill_lv)];
+}
+
+static int skill_get_hp_rate(int skill_id, int skill_lv)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ Assert_ret(skill_lv > 0);
+ if (skill_lv > MAX_SKILL_LEVEL) {
+ int val = skill->dbs->db[idx].hp_rate[skill_get_lvl_idx(skill_lv)];
+ return skill_adjust_over_level(val, skill_lv, skill->dbs->db[idx].max);
+ }
+ return skill->dbs->db[idx].hp_rate[skill_get_lvl_idx(skill_lv)];
+}
+
+static int skill_get_sp_rate(int skill_id, int skill_lv)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ Assert_ret(skill_lv > 0);
+ if (skill_lv > MAX_SKILL_LEVEL) {
+ int val = skill->dbs->db[idx].sp_rate[skill_get_lvl_idx(skill_lv)];
+ return skill_adjust_over_level(val, skill_lv, skill->dbs->db[idx].max);
+ }
+ return skill->dbs->db[idx].sp_rate[skill_get_lvl_idx(skill_lv)];
+}
+
+static int skill_get_state(int skill_id)
+{
+ int idx;
+ if (skill_id == 0)
+ return ST_NONE;
+ idx = skill->get_index(skill_id);
+ Assert_retr(ST_NONE, idx != 0);
+ return skill->dbs->db[idx].state;
+}
+
+static int skill_get_spiritball(int skill_id, int skill_lv)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ Assert_ret(skill_lv > 0);
+ if (skill_lv > MAX_SKILL_LEVEL) {
+ int val = skill->dbs->db[idx].spiritball[skill_get_lvl_idx(skill_lv)];
+ return skill_adjust_over_level(val, skill_lv, skill->dbs->db[idx].max);
+ }
+ return skill->dbs->db[idx].spiritball[skill_get_lvl_idx(skill_lv)];
+}
+
+static int skill_get_itemid(int skill_id, int item_idx)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ Assert_ret(item_idx >= 0 && item_idx < MAX_SKILL_ITEM_REQUIRE);
+ return skill->dbs->db[idx].itemid[item_idx];
+}
+
+static int skill_get_itemqty(int skill_id, int item_idx)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ Assert_ret(item_idx >= 0 && item_idx < MAX_SKILL_ITEM_REQUIRE);
+ return skill->dbs->db[idx].amount[item_idx];
+}
+
+static int skill_get_zeny(int skill_id, int skill_lv)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ Assert_ret(skill_lv > 0);
+ if (skill_lv > MAX_SKILL_LEVEL) {
+ int val = skill->dbs->db[idx].zeny[skill_get_lvl_idx(skill_lv)];
+ return skill_adjust_over_level(val, skill_lv, skill->dbs->db[idx].max);
+ }
+ return skill->dbs->db[idx].zeny[skill_get_lvl_idx(skill_lv)];
+}
+
+static int skill_get_num(int skill_id, int skill_lv)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ Assert_ret(skill_lv > 0);
+ if (skill_lv > MAX_SKILL_LEVEL) {
+ int val = skill->dbs->db[idx].num[skill_get_lvl_idx(skill_lv)];
+ return skill_adjust_over_level(val, skill_lv, skill->dbs->db[idx].max);
+ }
+ return skill->dbs->db[idx].num[skill_get_lvl_idx(skill_lv)];
+}
+
+static int skill_get_cast(int skill_id, int skill_lv)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ Assert_ret(skill_lv > 0);
+ if (skill_lv > MAX_SKILL_LEVEL) {
+ int val = skill->dbs->db[idx].cast[skill_get_lvl_idx(skill_lv)];
+ return skill_adjust_over_level(val, skill_lv, skill->dbs->db[idx].max);
+ }
+ return skill->dbs->db[idx].cast[skill_get_lvl_idx(skill_lv)];
+}
+
+static int skill_get_delay(int skill_id, int skill_lv)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ Assert_ret(skill_lv > 0);
+ if (skill_lv > MAX_SKILL_LEVEL) {
+ int val = skill->dbs->db[idx].delay[skill_get_lvl_idx(skill_lv)];
+ return skill_adjust_over_level(val, skill_lv, skill->dbs->db[idx].max);
+ }
+ return skill->dbs->db[idx].delay[skill_get_lvl_idx(skill_lv)];
+}
+
+static int skill_get_walkdelay(int skill_id, int skill_lv)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ Assert_ret(skill_lv > 0);
+ if (skill_lv > MAX_SKILL_LEVEL) {
+ int val = skill->dbs->db[idx].walkdelay[skill_get_lvl_idx(skill_lv)];
+ return skill_adjust_over_level(val, skill_lv, skill->dbs->db[idx].max);
+ }
+ return skill->dbs->db[idx].walkdelay[skill_get_lvl_idx(skill_lv)];
+}
+
+static int skill_get_time(int skill_id, int skill_lv)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ Assert_ret(skill_lv > 0);
+ if (skill_lv > MAX_SKILL_LEVEL) {
+ int val = skill->dbs->db[idx].upkeep_time[skill_get_lvl_idx(skill_lv)];
+ return skill_adjust_over_level(val, skill_lv, skill->dbs->db[idx].max);
+ }
+ return skill->dbs->db[idx].upkeep_time[skill_get_lvl_idx(skill_lv)];
+}
+
+static int skill_get_time2(int skill_id, int skill_lv)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ Assert_ret(skill_lv > 0);
+ if (skill_lv > MAX_SKILL_LEVEL) {
+ int val = skill->dbs->db[idx].upkeep_time2[skill_get_lvl_idx(skill_lv)];
+ return skill_adjust_over_level(val, skill_lv, skill->dbs->db[idx].max);
+ }
+ return skill->dbs->db[idx].upkeep_time2[skill_get_lvl_idx(skill_lv)];
+}
+
+static int skill_get_castdef(int skill_id)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ return skill->dbs->db[idx].cast_def_rate;
+}
+
+static int skill_get_weapontype(int skill_id)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ return skill->dbs->db[idx].weapon;
+}
+
+static int skill_get_ammotype(int skill_id)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ return skill->dbs->db[idx].ammo;
+}
+
+static int skill_get_ammo_qty(int skill_id, int skill_lv)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ Assert_ret(skill_lv > 0);
+ if (skill_lv > MAX_SKILL_LEVEL) {
+ int val = skill->dbs->db[idx].ammo_qty[skill_get_lvl_idx(skill_lv)];
+ return skill_adjust_over_level(val, skill_lv, skill->dbs->db[idx].max);
+ }
+ return skill->dbs->db[idx].ammo_qty[skill_get_lvl_idx(skill_lv)];
+}
+
+static int skill_get_inf2(int skill_id)
+{
+ int idx;
+ if (skill_id == 0)
+ return INF2_NONE;
+ idx = skill->get_index(skill_id);
+ Assert_retr(INF2_NONE, idx != 0);
+ return skill->dbs->db[idx].inf2;
+}
+
+static int skill_get_castcancel(int skill_id)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ return skill->dbs->db[idx].castcancel;
+}
+
+static int skill_get_maxcount(int skill_id, int skill_lv)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ Assert_ret(skill_lv > 0);
+ if (skill_lv > MAX_SKILL_LEVEL) {
+ int val = skill->dbs->db[idx].maxcount[skill_get_lvl_idx(skill_lv)];
+ return skill_adjust_over_level(val, skill_lv, skill->dbs->db[idx].max);
+ }
+ return skill->dbs->db[idx].maxcount[skill_get_lvl_idx(skill_lv)];
+}
+
+static int skill_get_blewcount(int skill_id, int skill_lv)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ Assert_ret(skill_lv > 0);
+ if (skill_lv > MAX_SKILL_LEVEL) {
+ int val = skill->dbs->db[idx].blewcount[skill_get_lvl_idx(skill_lv)];
+ return skill_adjust_over_level(val, skill_lv, skill->dbs->db[idx].max);
+ }
+ return skill->dbs->db[idx].blewcount[skill_get_lvl_idx(skill_lv)];
+}
+
+static int skill_get_mhp(int skill_id, int skill_lv)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ Assert_ret(skill_lv > 0);
+ if (skill_lv > MAX_SKILL_LEVEL) {
+ int val = skill->dbs->db[idx].mhp[skill_get_lvl_idx(skill_lv)];
+ return skill_adjust_over_level(val, skill_lv, skill->dbs->db[idx].max);
+ }
+ return skill->dbs->db[idx].mhp[skill_get_lvl_idx(skill_lv)];
+}
+
+static int skill_get_castnodex(int skill_id, int skill_lv)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ Assert_ret(skill_lv > 0);
+ if (skill_lv > MAX_SKILL_LEVEL) {
+ int val = skill->dbs->db[idx].castnodex[skill_get_lvl_idx(skill_lv)];
+ return skill_adjust_over_level(val, skill_lv, skill->dbs->db[idx].max);
+ }
+ return skill->dbs->db[idx].castnodex[skill_get_lvl_idx(skill_lv)];
+}
+
+static int skill_get_delaynodex(int skill_id, int skill_lv)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ Assert_ret(skill_lv > 0);
+ if (skill_lv > MAX_SKILL_LEVEL) {
+ int val = skill->dbs->db[idx].delaynodex[skill_get_lvl_idx(skill_lv)];
+ return skill_adjust_over_level(val, skill_lv, skill->dbs->db[idx].max);
+ }
+ return skill->dbs->db[idx].delaynodex[skill_get_lvl_idx(skill_lv)];
+}
+
+static int skill_get_type(int skill_id)
+{
+ int idx;
+ if (skill_id == 0)
+ return BF_NONE;
+ idx = skill->get_index(skill_id);
+ Assert_retr(BF_NONE, idx != 0);
+ return skill->dbs->db[idx].skill_type;
+}
+
+static int skill_get_unit_id(int skill_id, int flag)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ Assert_ret(flag >= 0 && flag < ARRAYLENGTH(skill->dbs->db[0].unit_id));
+ return skill->dbs->db[idx].unit_id[flag];
+}
+
+static int skill_get_unit_interval(int skill_id)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ return skill->dbs->db[idx].unit_interval;
+}
+
+static int skill_get_unit_range(int skill_id, int skill_lv)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ Assert_ret(skill_lv > 0);
+ if (skill_lv > MAX_SKILL_LEVEL) {
+ int val = skill->dbs->db[idx].unit_range[skill_get_lvl_idx(skill_lv)];
+ return skill_adjust_over_level(val, skill_lv, skill->dbs->db[idx].max);
+ }
+ return skill->dbs->db[idx].unit_range[skill_get_lvl_idx(skill_lv)];
+}
+
+static int skill_get_unit_target(int skill_id)
+{
+ int idx;
+ if (skill_id == 0)
+ return BCT_NOONE;
+ idx = skill->get_index(skill_id);
+ Assert_retr(BCT_NOONE, idx != 0);
+ return skill->dbs->db[idx].unit_target & BCT_ALL;
+}
+
+static int skill_get_unit_bl_target(int skill_id)
+{
+ int idx;
+ if (skill_id == 0)
+ return BL_NUL;
+ idx = skill->get_index(skill_id);
+ Assert_retr(BL_NUL, idx != 0);
+ return skill->dbs->db[idx].unit_target & BL_ALL;
+}
+
+static int skill_get_unit_flag(int skill_id)
+{
+ int idx;
+ if (skill_id == 0)
+ return UF_NONE;
+ idx = skill->get_index(skill_id);
+ Assert_retr(UF_NONE, idx != 0);
+ return skill->dbs->db[idx].unit_flag;
+}
+
+static int skill_get_unit_layout_type(int skill_id, int skill_lv)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ Assert_ret(skill_lv > 0);
+ if (skill_lv > MAX_SKILL_LEVEL) {
+ int val = skill->dbs->db[idx].unit_layout_type[skill_get_lvl_idx(skill_lv)];
+ return skill_adjust_over_level(val, skill_lv, skill->dbs->db[idx].max);
+ }
+ return skill->dbs->db[idx].unit_layout_type[skill_get_lvl_idx(skill_lv)];
+}
+
+static int skill_get_cooldown(int skill_id, int skill_lv)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ Assert_ret(skill_lv > 0);
+ if (skill_lv > MAX_SKILL_LEVEL) {
+ int val = skill->dbs->db[idx].cooldown[skill_get_lvl_idx(skill_lv)];
+ return skill_adjust_over_level(val, skill_lv, skill->dbs->db[idx].max);
+ }
+ return skill->dbs->db[idx].cooldown[skill_get_lvl_idx(skill_lv)];
+}
+
+static int skill_get_fixed_cast(int skill_id, int skill_lv)
+{
+ int idx;
+ if (skill_id == 0)
+ return 0;
+ idx = skill->get_index(skill_id);
+ Assert_ret(idx != 0);
+ Assert_ret(skill_lv > 0);
#ifdef RENEWAL_CAST
- Assert_ret(skill_lv > 0); skill_get2 (skill->dbs->db[skill_id].fixed_cast[skill_glv(skill_lv-1)], skill_id, skill_lv);
+ if (skill_lv > MAX_SKILL_LEVEL) {
+ int val = skill->dbs->db[idx].fixed_cast[skill_get_lvl_idx(skill_lv)];
+ return skill_adjust_over_level(val, skill_lv, skill->dbs->db[idx].max);
+ }
+ return skill->dbs->db[idx].fixed_cast[skill_get_lvl_idx(skill_lv)];
#else
return 0;
#endif
}
-int skill_tree_get_max(uint16 skill_id, int class)
+static int skill_tree_get_max(int skill_id, int class)
{
int i;
int class_idx = pc->class2idx(class);
@@ -231,7 +734,7 @@ int skill_tree_get_max(uint16 skill_id, int class)
return skill->get_max(skill_id);
}
-int skill_get_casttype(uint16 skill_id)
+static int skill_get_casttype(int skill_id)
{
int inf = skill->get_inf(skill_id);
if (inf&(INF_GROUND_SKILL))
@@ -248,7 +751,7 @@ int skill_get_casttype(uint16 skill_id)
return CAST_DAMAGE;
}
-int skill_get_casttype2(uint16 index)
+static int skill_get_casttype2(int index)
{
int inf;
Assert_retr(CAST_NODAMAGE, index < MAX_SKILL_DB);
@@ -268,7 +771,7 @@ int skill_get_casttype2(uint16 index)
}
//Returns actual skill range taking into account attack range and AC_OWL [Skotlex]
-int skill_get_range2(struct block_list *bl, uint16 skill_id, uint16 skill_lv)
+static int skill_get_range2(struct block_list *bl, int skill_id, int skill_lv)
{
int range;
struct map_session_data *sd = BL_CAST(BL_PC, bl);
@@ -303,7 +806,7 @@ int skill_get_range2(struct block_list *bl, uint16 skill_id, uint16 skill_lv)
if (sd != NULL)
range += pc->checkskill(sd, AC_VULTURE);
else
- range += 10; //Assume level 10?
+ range += battle->bc->mob_eye_range_bonus;
break;
// added to allow GS skills to be effected by the range of Snake Eyes [Reddozen]
case GS_RAPIDSHOWER:
@@ -314,7 +817,7 @@ int skill_get_range2(struct block_list *bl, uint16 skill_id, uint16 skill_lv)
if (sd != NULL)
range += pc->checkskill(sd, GS_SNAKEEYE);
else
- range += 10; //Assume level 10?
+ range += battle->bc->mob_eye_range_bonus;
break;
case NJ_KIRIKAGE:
if (sd != NULL)
@@ -357,7 +860,8 @@ int skill_get_range2(struct block_list *bl, uint16 skill_id, uint16 skill_lv)
return range;
}
-int skill_calc_heal(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, bool heal) {
+static int skill_calc_heal(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, bool heal)
+{
int skill2_lv, hp;
struct map_session_data *sd = BL_CAST(BL_PC, src);
struct map_session_data *tsd = BL_CAST(BL_PC, target);
@@ -452,7 +956,7 @@ int skill_calc_heal(struct block_list *src, struct block_list *target, uint16 sk
}
// Making plagiarize check its own function [Aru]
-int can_copy (struct map_session_data *sd, uint16 skill_id, struct block_list* bl)
+static int can_copy(struct map_session_data *sd, uint16 skill_id, struct block_list *bl)
{
nullpo_ret(sd);
// Never copy NPC/Wedding Skills
@@ -476,20 +980,20 @@ int can_copy (struct map_session_data *sd, uint16 skill_id, struct block_list* b
return 0;
// Couldn't preserve 3rd Class/Summoner skills except only when using Reproduce skill. [Jobbie]
- if (!(sd->sc.data[SC__REPRODUCE]) &&
- ((skill_id >= RK_ENCHANTBLADE && skill_id <= LG_OVERBRAND_PLUSATK) ||
- (skill_id >= RL_GLITTERING_GREED && skill_id <= OB_AKAITSUKI) ||
+ if (!(sd->sc.data[SC__REPRODUCE]) &&
+ ((skill_id >= RK_ENCHANTBLADE && skill_id <= LG_OVERBRAND_PLUSATK) ||
+ (skill_id >= RL_GLITTERING_GREED && skill_id <= OB_AKAITSUKI) ||
(skill_id >= GC_DARKCROW && skill_id <= SU_FRESHSHRIMP)))
return 0;
// Reproduce will only copy skills according on the list. [Jobbie]
- else if( sd->sc.data[SC__REPRODUCE] && !skill->dbs->reproduce_db[skill->get_index(skill_id)] )
+ else if (sd->sc.data[SC__REPRODUCE] && (skill->get_inf2(skill_id) & INF2_ALLOW_REPRODUCE) == 0)
return 0;
return 1;
}
// [MouseJstr] - skill ok to cast? and when?
-int skillnotok (uint16 skill_id, struct map_session_data *sd)
+static int skillnotok(uint16 skill_id, struct map_session_data *sd)
{
int16 idx,m;
nullpo_retr (1, sd);
@@ -519,7 +1023,7 @@ int skillnotok (uint16 skill_id, struct map_session_data *sd)
}
if (sd->blockskill[idx]) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0, 0);
return 1;
}
@@ -566,7 +1070,7 @@ int skillnotok (uint16 skill_id, struct map_session_data *sd)
//char output[150];
//sprintf(output, msg_txt(862), battle_config.min_npc_vendchat_distance); // "You're too close to a NPC, you must be at least %d cells away from any NPC."
//clif->message(sd->fd, output);
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_THERE_ARE_NPC_AROUND,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_THERE_ARE_NPC_AROUND, 0, 0);
return 1;
}
FALLTHROUGH
@@ -575,13 +1079,13 @@ int skillnotok (uint16 skill_id, struct map_session_data *sd)
case WZ_ICEWALL:
// noicewall flag [Valaris]
if (map->list[m].flag.noicewall) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 1;
}
break;
case GC_DARKILLUSION:
if( map_flag_gvg2(m) ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 1;
}
break;
@@ -590,7 +1094,7 @@ int skillnotok (uint16 skill_id, struct map_session_data *sd)
|| !(battle_config.emergency_call&(map->list[m].flag.gvg || map->list[m].flag.gvg_castle?8:4))
|| (battle_config.emergency_call&16 && map->list[m].flag.nowarpto && !map->list[m].flag.gvg_castle)
) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 1;
}
break;
@@ -610,7 +1114,7 @@ int skillnotok (uint16 skill_id, struct map_session_data *sd)
return (map->list[m].flag.noskill);
}
-int skill_notok_unknown(uint16 skill_id, struct map_session_data *sd)
+static int skill_notok_unknown(uint16 skill_id, struct map_session_data *sd)
{
int16 m;
nullpo_retr (1, sd);
@@ -618,7 +1122,7 @@ int skill_notok_unknown(uint16 skill_id, struct map_session_data *sd)
return (map->list[m].flag.noskill);
}
-int skillnotok_hom(uint16 skill_id, struct homun_data *hd)
+static int skillnotok_hom(uint16 skill_id, struct homun_data *hd)
{
uint16 idx = skill->get_index(skill_id);
nullpo_retr(1,hd);
@@ -632,7 +1136,7 @@ int skillnotok_hom(uint16 skill_id, struct homun_data *hd)
case MH_LIGHT_OF_REGENE:
if( homun->get_intimacy_grade(hd) != 4 ){
if( hd->master )
- clif->skill_fail(hd->master, skill_id, USESKILL_FAIL_RELATIONGRADE, 0);
+ clif->skill_fail(hd->master, skill_id, USESKILL_FAIL_RELATIONGRADE, 0, 0);
return 1;
}
break;
@@ -652,14 +1156,14 @@ int skillnotok_hom(uint16 skill_id, struct homun_data *hd)
return skill->not_ok(skill_id, hd->master);
}
-int skillnotok_hom_unknown(uint16 skill_id, struct homun_data *hd)
+static int skillnotok_hom_unknown(uint16 skill_id, struct homun_data *hd)
{
nullpo_retr(1, hd);
//Use master's criteria.
return skill->not_ok(skill_id, hd->master);
}
-int skillnotok_mercenary(uint16 skill_id, struct mercenary_data *md)
+static int skillnotok_mercenary(uint16 skill_id, struct mercenary_data *md)
{
uint16 idx = skill->get_index(skill_id);
nullpo_retr(1,md);
@@ -672,7 +1176,7 @@ int skillnotok_mercenary(uint16 skill_id, struct mercenary_data *md)
return skill->not_ok(skill_id, md->master);
}
-struct s_skill_unit_layout* skill_get_unit_layout(uint16 skill_id, uint16 skill_lv, struct block_list* src, int x, int y)
+static struct s_skill_unit_layout *skill_get_unit_layout(uint16 skill_id, uint16 skill_lv, struct block_list *src, int x, int y)
{
int pos = skill->get_unit_layout_type(skill_id,skill_lv);
uint8 dir;
@@ -702,7 +1206,8 @@ struct s_skill_unit_layout* skill_get_unit_layout(uint16 skill_id, uint16 skill_
/*==========================================
*
*------------------------------------------*/
-int skill_additional_effect(struct block_list* src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int attack_type, int dmg_lv, int64 tick) {
+static int skill_additional_effect(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int attack_type, int dmg_lv, int64 tick)
+{
struct map_session_data *sd, *dstsd;
struct mob_data *md, *dstmd;
struct status_data *sstatus, *tstatus;
@@ -806,7 +1311,7 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1
break; // If a normal attack is a skill, it's splash damage. [Inkfish]
if(sd) {
// Automatic trigger of Blitz Beat
- if (pc_isfalcon(sd) && sd->status.weapon == W_BOW && (temp=pc->checkskill(sd,HT_BLITZBEAT))>0 &&
+ if (pc_isfalcon(sd) && sd->weapontype == W_BOW && (temp=pc->checkskill(sd,HT_BLITZBEAT))>0 &&
rnd()%1000 <= sstatus->luk*3 ) {
rate = sd->status.job_level / 10 + 1;
skill->castend_damage_id(src,bl,HT_BLITZBEAT,(temp<rate)?temp:rate,tick,SD_LEVEL);
@@ -815,13 +1320,13 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1
if( pc_iswug(sd) && (temp=pc->checkskill(sd,RA_WUGSTRIKE)) > 0 && rnd()%1000 <= sstatus->luk*3 )
skill->castend_damage_id(src,bl,RA_WUGSTRIKE,temp,tick,0);
// Gank
- if(dstmd && sd->status.weapon != W_BOW &&
+ if(dstmd && sd->weapontype != W_BOW &&
(temp=pc->checkskill(sd,RG_SNATCHER)) > 0 &&
(temp*15 + 55) + pc->checkskill(sd,TF_STEAL)*10 > rnd()%1000) {
if(pc->steal_item(sd,bl,pc->checkskill(sd,TF_STEAL)))
clif->skill_nodamage(src,bl,TF_STEAL,temp,1);
else
- clif->skill_fail(sd,RG_SNATCHER,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, RG_SNATCHER, USESKILL_FAIL_LEVEL, 0, 0);
}
// Chance to trigger Taekwon kicks [Dralnu]
if(sc && !sc->data[SC_COMBOATTACK]) {
@@ -887,7 +1392,7 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1
if (!sc_start2(src,bl,SC_POISON,(4*skill_lv+10),skill_lv,src->id,skill->get_time2(skill_id,skill_lv))
&& sd && skill_id==TF_POISON
)
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
case AS_SONICBLOW:
@@ -905,7 +1410,7 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1
if (!sc_start(src,bl,SC_FREEZE,skill_lv*3+35,skill_lv,skill->get_time2(skill_id,skill_lv))
&& sd && skill_id == MG_FROSTDIVER
)
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
#ifdef RENEWAL
@@ -1672,10 +2177,12 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1
return 0;
}
-void skill_additional_effect_unknown(struct block_list* src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int *attack_type, int *dmg_lv, int64 *tick) {
+static void skill_additional_effect_unknown(struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int *attack_type, int *dmg_lv, int64 *tick)
+{
}
-int skill_onskillusage(struct map_session_data *sd, struct block_list *bl, uint16 skill_id, int64 tick) {
+static int skill_onskillusage(struct map_session_data *sd, struct block_list *bl, uint16 skill_id, int64 tick)
+{
int temp, skill_lv, i, type, notok;
struct block_list *tbl;
@@ -1769,7 +2276,8 @@ int skill_onskillusage(struct map_session_data *sd, struct block_list *bl, uint1
* type of skills, so not every instance of skill->additional_effect needs a call
* to this one.
*/
-int skill_counter_additional_effect(struct block_list* src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int attack_type, int64 tick) {
+static int skill_counter_additional_effect(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int attack_type, int64 tick)
+{
int rate;
struct map_session_data *sd=NULL;
struct map_session_data *dstsd=NULL;
@@ -1853,11 +2361,11 @@ int skill_counter_additional_effect(struct block_list* src, struct block_list *b
) {
// Soul Drain should only work on targeted spells [Skotlex]
if( pc_issit(sd) ) pc->setstand(sd); // Character stuck in attacking animation while 'sitting' fix. [Skotlex]
- if( skill->get_nk(skill_id)&NK_SPLASH && skill->area_temp[1] != bl->id )
+ if (skill->get_nk(skill_id)&NK_SPLASH && skill->area_temp[1] != bl->id) {
;
- else {
+ } else {
clif->skill_nodamage(src,bl,HW_SOULDRAIN,rate,1);
- status->heal(src, 0, status->get_lv(bl)*(95+15*rate)/100, 2);
+ status->heal(src, 0, status->get_lv(bl)*(95+15*rate)/100, STATUS_HEAL_SHOWEFFECT);
}
}
@@ -1880,9 +2388,9 @@ int skill_counter_additional_effect(struct block_list* src, struct block_list *b
sc->data[SC_SOULLINK]->val3 = 0; //Clear bounced spell check.
}
}
- if( hp || sp ) {
+ if (hp != 0 || sp != 0) {
// updated to force healing to allow healing through berserk
- status->heal(src, hp, sp, battle_config.show_hp_sp_gain ? 3 : 1);
+ status->heal(src, hp, sp, STATUS_HEAL_FORCED | (battle_config.show_hp_sp_gain ? STATUS_HEAL_SHOWEFFECT : STATUS_HEAL_DEFAULT));
}
}
@@ -1986,7 +2494,8 @@ int skill_counter_additional_effect(struct block_list* src, struct block_list *b
return 0;
}
-void skill_counter_additional_effect_unknown(struct block_list* src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int *attack_type, int64 *tick) {
+static void skill_counter_additional_effect_unknown(struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int *attack_type, int64 *tick)
+{
}
/*=========================================================================
@@ -1995,7 +2504,7 @@ void skill_counter_additional_effect_unknown(struct block_list* src, struct bloc
* - flag is a BCT_ flag to indicate which type of adjustment should be used
* (BCT_ENEMY/BCT_PARTY/BCT_SELF) are the valid values.
*------------------------------------------------------------------------*/
-int skill_break_equip (struct block_list *bl, unsigned short where, int rate, int flag)
+static int skill_break_equip(struct block_list *bl, unsigned short where, int rate, int flag)
{
const int where_list[4] = {EQP_WEAPON, EQP_ARMOR, EQP_SHIELD, EQP_HELM};
const enum sc_type scatk[4] = {SC_NOEQUIPWEAPON, SC_NOEQUIPARMOR, SC_NOEQUIPSHIELD, SC_NOEQUIPHELM};
@@ -2012,7 +2521,7 @@ int skill_break_equip (struct block_list *bl, unsigned short where, int rate, in
if (sd->bonus.unbreakable)
rate -= rate*sd->bonus.unbreakable/100;
if (where&EQP_WEAPON) {
- switch (sd->status.weapon) {
+ switch (sd->weapontype) {
case W_FIST: //Bare fists should not break :P
case W_1HAXE:
case W_2HAXE:
@@ -2079,13 +2588,13 @@ int skill_break_equip (struct block_list *bl, unsigned short where, int rate, in
pc->unequipitem(sd, j, PCUNEQUIPITEM_RECALC|PCUNEQUIPITEM_FORCE);
}
}
- clif->equiplist(sd);
+ clif->equipList(sd);
}
return where; //Return list of pieces broken.
}
-int skill_strip_equip(struct block_list *bl, unsigned short where, int rate, int lv, int time)
+static int skill_strip_equip(struct block_list *bl, unsigned short where, int rate, int lv, int time)
{
struct status_change *sc;
const int pos[5] = {EQP_WEAPON, EQP_SHIELD, EQP_ARMOR, EQP_HELM, EQP_ACC};
@@ -2120,7 +2629,7 @@ int skill_strip_equip(struct block_list *bl, unsigned short where, int rate, int
* if 'flag&0x1', position update packets must not be sent.
* if 'flag&0x2', skill blown ignores players' special_state.no_knockback
*/
-int skill_blown(struct block_list* src, struct block_list* target, int count, int8 dir, int flag)
+static int skill_blown(struct block_list *src, struct block_list *target, int count, int8 dir, int flag)
{
int dx = 0, dy = 0;
struct status_change *tsc = status->get_sc(target);
@@ -2184,7 +2693,7 @@ int skill_blown(struct block_list* src, struct block_list* target, int count, in
1 - Regular reflection (Maya)
2 - SL_KAITE reflection
*/
-int skill_magic_reflect(struct block_list* src, struct block_list* bl, int type)
+static int skill_magic_reflect(struct block_list *src, struct block_list *bl, int type)
{
struct status_change *sc = status->get_sc(bl);
struct map_session_data* sd = BL_CAST(BL_PC, bl);
@@ -2233,10 +2742,14 @@ int skill_magic_reflect(struct block_list* src, struct block_list* bl, int type)
* client (causes player characters to not scream skill name)
* flag&0x4000 - Return 0 if damage was reflected
*-------------------------------------------------------------------------*/
-int skill_attack(int attack_type, struct block_list* src, struct block_list *dsrc, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag)
+static int skill_attack(int attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag)
{
struct Damage dmg;
+#if MAGIC_REFLECTION_TYPE
struct status_data *sstatus, *tstatus;
+#else
+ struct status_data *tstatus;
+#endif
struct status_change *sc;
struct map_session_data *sd, *tsd;
int type;
@@ -2271,7 +2784,9 @@ int skill_attack(int attack_type, struct block_list* src, struct block_list *dsr
)
return 0;
+#if MAGIC_REFLECTION_TYPE
sstatus = status->get_status_data(src);
+#endif
tstatus = status->get_status_data(bl);
sc = status->get_sc(bl);
if (sc && !sc->count) sc = NULL; //Don't need it.
@@ -2384,7 +2899,7 @@ int skill_attack(int attack_type, struct block_list* src, struct block_list *dsr
sp = sp * sc->data[SC_MAGICROD]->val2 / 100;
if(skill_id == WZ_WATERBALL && skill_lv > 1)
sp = sp/((skill_lv|1)*(skill_lv|1)); //Estimate SP cost of a single water-ball
- status->heal(bl, 0, sp, 2);
+ status->heal(bl, 0, sp, STATUS_HEAL_SHOWEFFECT);
}
}
@@ -2555,7 +3070,7 @@ int skill_attack(int attack_type, struct block_list* src, struct block_list *dsr
dmg.dmotion = clif->skill_damage(src,bl,tick,dmg.amotion,dmg.dmotion,damage,dmg.div_,skill_id,skill_lv,BDT_MULTIHIT);
break;
case WL_CHAINLIGHTNING_ATK:
- dmg.dmotion = clif->skill_damage(src,bl,tick,dmg.amotion,dmg.dmotion,damage,1,WL_CHAINLIGHTNING,-2,BDT_SKILL);
+ dmg.dmotion = clif->skill_damage(src,bl,tick,dmg.amotion,dmg.dmotion,damage,1,WL_CHAINLIGHTNING_ATK,-2,BDT_SKILL);
break;
case LG_OVERBRAND_BRANDISH:
case LG_OVERBRAND:
@@ -2703,8 +3218,8 @@ int skill_attack(int attack_type, struct block_list* src, struct block_list *dsr
}
tsd->reproduceskill_id = copy_skill;
- pc_setglobalreg(tsd, script->add_str("REPRODUCE_SKILL"), copy_skill);
- pc_setglobalreg(tsd, script->add_str("REPRODUCE_SKILL_LV"), lv);
+ pc_setglobalreg(tsd, script->add_variable("REPRODUCE_SKILL"), copy_skill);
+ pc_setglobalreg(tsd, script->add_variable("REPRODUCE_SKILL_LV"), lv);
tsd->status.skill[cidx].id = copy_skill;
tsd->status.skill[cidx].lv = lv;
@@ -2727,8 +3242,8 @@ int skill_attack(int attack_type, struct block_list* src, struct block_list *dsr
lv = plagiarismlvl;
tsd->cloneskill_id = copy_skill;
- pc_setglobalreg(tsd, script->add_str("CLONE_SKILL"), copy_skill);
- pc_setglobalreg(tsd, script->add_str("CLONE_SKILL_LV"), lv);
+ pc_setglobalreg(tsd, script->add_variable("CLONE_SKILL"), copy_skill);
+ pc_setglobalreg(tsd, script->add_variable("CLONE_SKILL_LV"), lv);
tsd->status.skill[cidx].id = copy_skill;
tsd->status.skill[cidx].lv = lv;
@@ -2929,17 +3444,17 @@ int skill_attack(int attack_type, struct block_list* src, struct block_list *dsr
return (int)cap_value(damage,INT_MIN,INT_MAX);
}
-void skill_attack_combo1_unknown(int *attack_type, struct block_list* src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, struct status_change_entry *sce, int *combo)
+static void skill_attack_combo1_unknown(int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, struct status_change_entry *sce, int *combo)
{
if (src == dsrc) // Ground skills are exceptions. [Inkfish]
status_change_end(src, SC_COMBOATTACK, INVALID_TIMER);
}
-void skill_attack_combo2_unknown(int *attack_type, struct block_list* src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *combo)
+static void skill_attack_combo2_unknown(int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *combo)
{
}
-void skill_attack_display_unknown(int *attack_type, struct block_list* src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *type, struct Damage *dmg, int64 *damage)
+static void skill_attack_display_unknown(int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *type, struct Damage *dmg, int64 *damage)
{
nullpo_retv(bl);
nullpo_retv(dmg);
@@ -2960,18 +3475,18 @@ void skill_attack_display_unknown(int *attack_type, struct block_list* src, stru
dmg->dmotion = clif->skill_damage(dsrc, bl, *tick, dmg->amotion, dmg->dmotion, *damage, dmg->div_, *skill_id, (*flag & SD_LEVEL) ? -1 : *skill_lv, *type);
}
-int skill_attack_copy_unknown(int *attack_type, struct block_list* src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
+static int skill_attack_copy_unknown(int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
{
nullpo_ret(skill_id);
return *skill_id;
}
-int skill_attack_dir_unknown(int *attack_type, struct block_list* src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
+static int skill_attack_dir_unknown(int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
{
return -1;
}
-void skill_attack_blow_unknown(int *attack_type, struct block_list* src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *type, struct Damage *dmg, int64 *damage, int8 *dir)
+static void skill_attack_blow_unknown(int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *type, struct Damage *dmg, int64 *damage, int8 *dir)
{
nullpo_retv(bl);
nullpo_retv(dmg);
@@ -2986,7 +3501,7 @@ void skill_attack_blow_unknown(int *attack_type, struct block_list* src, struct
}
}
-void skill_attack_post_unknown(int *attack_type, struct block_list* src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
+static void skill_attack_post_unknown(int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
{
}
@@ -2995,7 +3510,7 @@ void skill_attack_post_unknown(int *attack_type, struct block_list* src, struct
* Checking bl battle flag and display damage
* then call func with source,target,skill_id,skill_lv,tick,flag
*------------------------------------------*/
-int skill_area_sub(struct block_list *bl, va_list ap)
+static int skill_area_sub(struct block_list *bl, va_list ap)
{
struct block_list *src;
uint16 skill_id,skill_lv;
@@ -3025,7 +3540,7 @@ int skill_area_sub(struct block_list *bl, va_list ap)
return 0;
}
-int skill_check_unit_range_sub(struct block_list *bl, va_list ap)
+static int skill_check_unit_range_sub(struct block_list *bl, va_list ap)
{
const struct skill_unit *su = NULL;
uint16 skill_id,g_skill_id;
@@ -3096,7 +3611,8 @@ int skill_check_unit_range_sub(struct block_list *bl, va_list ap)
return 1;
}
-int skill_check_unit_range (struct block_list *bl, int x, int y, uint16 skill_id, uint16 skill_lv) {
+static int skill_check_unit_range(struct block_list *bl, int x, int y, uint16 skill_id, uint16 skill_lv)
+{
//Non players do not check for the skill's splash-trigger area.
int range = bl->type == BL_PC ? skill->get_unit_range(skill_id, skill_lv):0;
int layout_type = skill->get_unit_layout_type(skill_id,skill_lv);
@@ -3109,7 +3625,8 @@ int skill_check_unit_range (struct block_list *bl, int x, int y, uint16 skill_id
return map->foreachinarea(skill->check_unit_range_sub,bl->m,x-range,y-range,x+range,y+range,BL_SKILL,skill_id);
}
-int skill_check_unit_range2_sub (struct block_list *bl, va_list ap) {
+static int skill_check_unit_range2_sub(struct block_list *bl, va_list ap)
+{
uint16 skill_id;
if(bl->prev == NULL)
@@ -3128,7 +3645,8 @@ int skill_check_unit_range2_sub (struct block_list *bl, va_list ap) {
return 1;
}
-int skill_check_unit_range2 (struct block_list *bl, int x, int y, uint16 skill_id, uint16 skill_lv) {
+static int skill_check_unit_range2(struct block_list *bl, int x, int y, uint16 skill_id, uint16 skill_lv)
+{
int range, type;
switch (skill_id) {
@@ -3171,12 +3689,13 @@ int skill_check_unit_range2 (struct block_list *bl, int x, int y, uint16 skill_i
* &1: finished casting the skill (invoke hp/sp/item consumption)
* &2: picked menu entry (Warp Portal, Teleport and other menu based skills)
*------------------------------------------*/
-int skill_check_condition_mercenary(struct block_list *bl, int skill_id, int lv, int type) {
+static int skill_check_condition_mercenary(struct block_list *bl, int skill_id, int lv, int type)
+{
struct status_data *st;
struct map_session_data *sd = NULL;
int i, hp, sp, hp_rate, sp_rate, state, mhp;
- uint16 idx;
- int itemid[MAX_SKILL_ITEM_REQUIRE],amount[ARRAYLENGTH(itemid)],index[ARRAYLENGTH(itemid)];
+ int idx;
+ int itemid[MAX_SKILL_ITEM_REQUIRE], amount[MAX_SKILL_ITEM_REQUIRE], index[MAX_SKILL_ITEM_REQUIRE];
if( lv < 1 || lv > MAX_SKILL_LEVEL )
return 0;
@@ -3192,8 +3711,7 @@ int skill_check_condition_mercenary(struct block_list *bl, int skill_id, int lv,
return 0;
// Requirements
- for( i = 0; i < ARRAYLENGTH(itemid); i++ )
- {
+ for (i = 0; i < MAX_SKILL_ITEM_REQUIRE; i++) {
itemid[i] = skill->dbs->db[idx].itemid[i];
amount[i] = skill->dbs->db[idx].amount[i];
}
@@ -3229,11 +3747,11 @@ int skill_check_condition_mercenary(struct block_list *bl, int skill_id, int lv,
if( !(type&2) ) {
if( hp > 0 && st->hp <= (unsigned int)hp ) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_HP_INSUFFICIENT, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_HP_INSUFFICIENT, 0, 0);
return 0;
}
if( sp > 0 && st->sp <= (unsigned int)sp ) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_SP_INSUFFICIENT, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_SP_INSUFFICIENT, 0, 0);
return 0;
}
}
@@ -3242,7 +3760,7 @@ int skill_check_condition_mercenary(struct block_list *bl, int skill_id, int lv,
switch( state ) {
case ST_MOVE_ENABLE:
if( !unit->can_move(bl) ) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -3256,7 +3774,7 @@ int skill_check_condition_mercenary(struct block_list *bl, int skill_id, int lv,
if (itemid[i] < 1) continue; // No item
index[i] = pc->search_inventory(sd, itemid[i]);
if (index[i] == INDEX_NOT_FOUND || sd->status.inventory[index[i]].amount < amount[i]) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_NEED_ITEM, amount[i]|(itemid[i] << 16));
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_NEED_ITEM, amount[i], itemid[i] << 16);
return 0;
}
}
@@ -3279,14 +3797,16 @@ int skill_check_condition_mercenary(struct block_list *bl, int skill_id, int lv,
/*==========================================
* what the hell it doesn't need to receive this many params, it doesn't do anything ~_~
*------------------------------------------*/
-int skill_area_sub_count(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int64 tick, int flag) {
+static int skill_area_sub_count(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int64 tick, int flag)
+{
return 1;
}
/*==========================================
*
*------------------------------------------*/
-int skill_timerskill(int tid, int64 tick, int id, intptr_t data) {
+static int skill_timerskill(int tid, int64 tick, int id, intptr_t data)
+{
struct block_list *src = map->id2bl(id),*target = NULL;
struct unit_data *ud = unit->bl2ud(src);
struct skill_timerskill *skl;
@@ -3519,25 +4039,25 @@ int skill_timerskill(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-bool skill_timerskill_dead_unknown(struct block_list *src, struct unit_data *ud, struct skill_timerskill *skl)
+static bool skill_timerskill_dead_unknown(struct block_list *src, struct unit_data *ud, struct skill_timerskill *skl)
{
return false;
}
-void skill_timerskill_target_unknown(int tid, int64 tick, struct block_list *src, struct block_list *target, struct unit_data *ud, struct skill_timerskill *skl)
+static void skill_timerskill_target_unknown(int tid, int64 tick, struct block_list *src, struct block_list *target, struct unit_data *ud, struct skill_timerskill *skl)
{
nullpo_retv(skl);
skill->attack(skl->type, src, src, target, skl->skill_id, skl->skill_lv, tick, skl->flag);
}
-void skill_timerskill_notarget_unknown(int tid, int64 tick, struct block_list *src, struct unit_data *ud, struct skill_timerskill *skl)
+static void skill_timerskill_notarget_unknown(int tid, int64 tick, struct block_list *src, struct unit_data *ud, struct skill_timerskill *skl)
{
}
/*==========================================
*
*------------------------------------------*/
-int skill_addtimerskill(struct block_list *src, int64 tick, int target, int x,int y, uint16 skill_id, uint16 skill_lv, int type, int flag)
+static int skill_addtimerskill(struct block_list *src, int64 tick, int target, int x, int y, uint16 skill_id, uint16 skill_lv, int type, int flag)
{
int i;
struct unit_data *ud;
@@ -3567,7 +4087,7 @@ int skill_addtimerskill(struct block_list *src, int64 tick, int target, int x,in
/*==========================================
*
*------------------------------------------*/
-int skill_cleartimerskill (struct block_list *src)
+static int skill_cleartimerskill(struct block_list *src)
{
int i;
struct unit_data *ud;
@@ -3600,12 +4120,12 @@ int skill_cleartimerskill (struct block_list *src)
return 1;
}
-bool skill_cleartimerskill_exception(int skill_id)
+static bool skill_cleartimerskill_exception(int skill_id)
{
return false;
}
-int skill_activate_reverberation(struct block_list *bl, va_list ap)
+static int skill_activate_reverberation(struct block_list *bl, va_list ap)
{
struct skill_unit *su = NULL;
struct skill_unit_group *sg = NULL;
@@ -3618,14 +4138,14 @@ int skill_activate_reverberation(struct block_list *bl, va_list ap)
if( su->alive && (sg = su->group) != NULL && sg->skill_id == WM_REVERBERATION && sg->unit_id == UNT_REVERBERATION ) {
int64 tick = timer->gettick();
clif->changetraplook(bl,UNT_USED_TRAPS);
- map->foreachinrange(skill->trap_splash, bl, skill->get_splash(sg->skill_id, sg->skill_lv), sg->bl_flag, bl, tick);
+ skill->trap_do_splash(bl, sg->skill_id, sg->skill_lv, sg->bl_flag, tick);
su->limit = DIFF_TICK32(tick,sg->tick)+1500;
sg->unit_id = UNT_USED_TRAPS;
}
return 0;
}
-int skill_reveal_trap(struct block_list *bl, va_list ap)
+static int skill_reveal_trap(struct block_list *bl, va_list ap)
{
struct skill_unit *su = NULL;
@@ -3642,7 +4162,7 @@ int skill_reveal_trap(struct block_list *bl, va_list ap)
return 0;
}
-void skill_castend_type(int type, struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag)
+static void skill_castend_type(int type, struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag)
{
switch (type) {
case CAST_GROUND:
@@ -3662,7 +4182,7 @@ void skill_castend_type(int type, struct block_list *src, struct block_list *bl,
*
*
*------------------------------------------*/
-int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag)
+static int skill_castend_damage_id(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag)
{
struct map_session_data *sd = NULL;
struct status_data *tstatus;
@@ -3926,7 +4446,7 @@ int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint1
unit->setdir(bl,dir);
}
else if (sd)
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
}
break;
@@ -3957,7 +4477,7 @@ int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint1
if( skill_id == MO_EXTREMITYFIST ) {
mbl = src;
i = 3; // for Asura(from caster)
- status->set_sp(src, 0, 0);
+ status->set_sp(src, 0, STATUS_HEAL_DEFAULT);
status_change_end(src, SC_EXPLOSIONSPIRITS, INVALID_TIMER);
status_change_end(src, SC_BLADESTOP, INVALID_TIMER);
#ifdef RENEWAL
@@ -3967,9 +4487,9 @@ int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint1
status_change_end(src, SC_NJ_NEN, INVALID_TIMER);
status_change_end(src, SC_HIDING, INVALID_TIMER);
#ifdef RENEWAL
- status->set_hp(src, max(status_get_max_hp(src)/100, 1), 0);
+ status->set_hp(src, max(status_get_max_hp(src)/100, 1), STATUS_HEAL_DEFAULT);
#else // not RENEWAL
- status->set_hp(src, 1, 0);
+ status->set_hp(src, 1, STATUS_HEAL_DEFAULT);
#endif // RENEWAL
}
dir = map->calc_dir(src,bl->x,bl->y);
@@ -4083,7 +4603,7 @@ int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint1
heal = skill->attack(skill->get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, sflag);
if (skill_id == NPC_VAMPIRE_GIFT && heal > 0) {
clif->skill_nodamage(NULL, src, AL_HEAL, heal, 1);
- status->heal(src,heal,0,0);
+ status->heal(src, heal, 0, STATUS_HEAL_DEFAULT);
}
if (skill_id == SU_SCRATCH && status->get_lv(src) >= 30 && (rnd() % 100 < (int)(status->get_lv(src) / 30) + 10)) // TODO: Need activation chance.
skill->addtimerskill(src, tick + skill->get_delay(skill_id, skill_lv), bl->id, 0, 0, skill_id, skill_lv, BF_WEAPON, flag);
@@ -4135,6 +4655,11 @@ int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint1
// recursive invocation of skill->castend_damage_id() with flag|1
map->foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), skill->splash_target(src), src, skill_id, skill_lv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill->castend_damage_id);
+ if (skill_id == AS_SPLASHER) {
+ // Prevent double item consumption when the target explodes (item requirements have already been processed in skill_castend_nodamage_id)
+ flag |= 1;
+ }
+
if (sd && skill_id == SU_LUNATICCARROTBEAT) {
short item_idx = pc->search_inventory(sd, ITEMID_CARROT);
@@ -4377,7 +4902,7 @@ int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint1
case SL_STUN:
if (sd && !battle_config.allow_es_magic_pc && bl->type != BL_MOB) {
status->change_start(src,src,SC_STUN,10000,skill_lv,0,0,0,500,SCFLAG_FIXEDTICK|SCFLAG_FIXEDRATE);
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
skill->attack(BF_MAGIC,src,src,bl,skill_id,skill_lv,tick,flag);
@@ -4446,7 +4971,7 @@ int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint1
src, src, bl, skill_id, skill_lv, tick, flag);
if (heal > 0){
clif->skill_nodamage(NULL, src, AL_HEAL, heal, 1);
- status->heal(src, heal, 0, 0);
+ status->heal(src, heal, 0, STATUS_HEAL_DEFAULT);
}
}
break;
@@ -4521,12 +5046,12 @@ int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint1
if( sc && sc->data[SC_COMBOATTACK] && sc->data[SC_COMBOATTACK]->val1 == GC_WEAPONBLOCKING )
skill->attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag);
else if( sd )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_GC_WEAPONBLOCKING,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_GC_WEAPONBLOCKING, 0, 0);
break;
case GC_CROSSRIPPERSLASHER:
if( sd && !(sc && sc->data[SC_ROLLINGCUTTER]) )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_CONDITION,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_CONDITION, 0, 0);
else
{
skill->attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag);
@@ -4557,7 +5082,7 @@ int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint1
heal = 0; // Don't absorb heal from Ice Walls or other skill units.
if( heal && rnd()%100 < rate ) {
- status->heal(src, heal, 0, 0);
+ status->heal(src, heal, 0, STATUS_HEAL_DEFAULT);
clif->skill_nodamage(NULL, src, AL_HEAL, heal, 1);
}
}
@@ -4681,7 +5206,7 @@ int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint1
if( path->search(NULL,src,src->m,src->x,src->y,bl->x,bl->y,1,CELL_CHKNOREACH) ) {
skill->attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag);
}else if( sd && skill_id == RA_WUGBITE ) // Only RA_WUGBITE has the skill fail message.
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
@@ -4703,7 +5228,7 @@ int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint1
item_tmp.nameid = sg->item_id ? sg->item_id : ITEMID_BOOBY_TRAP;
item_tmp.identify = 1;
if( item_tmp.nameid )
- map->addflooritem(bl, &item_tmp, 1, bl->m, bl->x, bl->y, 0, 0, 0, 0);
+ map->addflooritem(bl, &item_tmp, 1, bl->m, bl->x, bl->y, 0, 0, 0, 0, false);
}
skill->delunit(su);
}
@@ -4839,7 +5364,7 @@ int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint1
skill->attack(skill->get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag);
status_change_end(bl, SC_POISON, INVALID_TIMER);
} else if( sd )
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
}
break;
@@ -5004,7 +5529,7 @@ int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint1
return 0;
}
-bool skill_castend_damage_id_unknown(struct block_list* src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, struct status_data *tstatus, struct status_change *sc)
+static bool skill_castend_damage_id_unknown(struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, struct status_data *tstatus, struct status_change *sc)
{
nullpo_retr(true, skill_id);
nullpo_retr(true, skill_lv);
@@ -5021,7 +5546,7 @@ bool skill_castend_damage_id_unknown(struct block_list* src, struct block_list *
/*==========================================
*
*------------------------------------------*/
-int skill_castend_id(int tid, int64 tick, int id, intptr_t data)
+static int skill_castend_id(int tid, int64 tick, int id, intptr_t data)
{
struct block_list *target, *src;
struct map_session_data *sd;
@@ -5160,7 +5685,7 @@ int skill_castend_id(int tid, int64 tick, int id, intptr_t data)
}
if( sd && (inf2&INF2_CHORUS_SKILL) && skill->check_pc_partner(sd, ud->skill_id, &ud->skill_lv, 1, 0) < 1 ) {
- clif->skill_fail(sd, ud->skill_id, USESKILL_FAIL_NEED_HELPER, 0);
+ clif->skill_fail(sd, ud->skill_id, USESKILL_FAIL_NEED_HELPER, 0, 0);
break;
}
@@ -5168,7 +5693,7 @@ int skill_castend_id(int tid, int64 tick, int id, intptr_t data)
if (BL_UCCAST(BL_MOB, target)->class_ == MOBID_EMPELIUM)
break;
} else if (inf && battle->check_target(src, target, inf) <= 0) {
- if (sd) clif->skill_fail(sd,ud->skill_id,USESKILL_FAIL_LEVEL,0);
+ if (sd) clif->skill_fail(sd, ud->skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
} else if (ud->skill_id == RK_PHANTOMTHRUST && target->type != BL_MOB) {
if( !map_flag_vs(src->m) && battle->check_target(src,target,BCT_PARTY) <= 0 )
@@ -5180,7 +5705,7 @@ int skill_castend_id(int tid, int64 tick, int id, intptr_t data)
&& rnd() % 100 < 75
) {
// Fogwall makes all offensive-type targeted skills fail at 75%
- if (sd) clif->skill_fail(sd, ud->skill_id, USESKILL_FAIL_LEVEL, 0);
+ if (sd) clif->skill_fail(sd, ud->skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
}
@@ -5199,7 +5724,7 @@ int skill_castend_id(int tid, int64 tick, int id, intptr_t data)
!check_distance_bl(src, target, skill->get_range2(src,ud->skill_id,ud->skill_lv)+battle_config.skill_add_range))
{
if (sd) {
- clif->skill_fail(sd,ud->skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, ud->skill_id, USESKILL_FAIL_LEVEL, 0, 0);
if(battle_config.skill_out_range_consume) //Consume items anyway. [Skotlex]
skill->consume_requirement(sd,ud->skill_id,ud->skill_lv,3);
}
@@ -5318,7 +5843,7 @@ int skill_castend_id(int tid, int64 tick, int id, intptr_t data)
//When Asura fails... (except when it fails from Fog of Wall)
//Consume SP/spheres
skill->consume_requirement(sd,ud->skill_id, ud->skill_lv,1);
- status->set_sp(src, 0, 0);
+ status->set_sp(src, 0, STATUS_HEAL_DEFAULT);
sc = &sd->sc;
if (sc->count) {
//End states
@@ -5343,7 +5868,7 @@ int skill_castend_id(int tid, int64 tick, int id, intptr_t data)
clif->slide(src,src->x,src->y);
clif->spiritball(src);
}
- clif->skill_fail(sd,ud->skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, ud->skill_id, USESKILL_FAIL_LEVEL, 0, 0);
}
}
@@ -5360,7 +5885,7 @@ int skill_castend_id(int tid, int64 tick, int id, intptr_t data)
return 0;
}
-bool skill_castend_id_unknown(struct unit_data *ud, struct block_list *src, struct block_list *target)
+static bool skill_castend_id_unknown(struct unit_data *ud, struct block_list *src, struct block_list *target)
{
return false;
}
@@ -5368,7 +5893,7 @@ bool skill_castend_id_unknown(struct unit_data *ud, struct block_list *src, stru
/*==========================================
*
*------------------------------------------*/
-int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag)
+static int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag)
{
struct map_session_data *sd, *dstsd;
struct mob_data *md, *dstmd;
@@ -5427,7 +5952,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case AL_DECAGI:
case AB_RENOVATIO:
case AB_HIGHNESSHEAL:
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_TOTARGET,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_TOTARGET, 0, 0);
return 0;
default:
if (skill->castend_nodamage_id_mado_unknown(src, bl, &skill_id, &skill_lv, &tick, &flag))
@@ -5443,7 +5968,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
switch (skill_id) {
case HLIF_HEAL: // [orn]
if (bl->type != BL_HOM) {
- if (sd) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0) ;
+ if (sd) clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0) ;
break ;
}
FALLTHROUGH
@@ -5461,7 +5986,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if (sd && battle->check_undead(tstatus->race,tstatus->def_ele) && skill_id != AL_INCAGI) {
if (battle->check_target(src, bl, BCT_ENEMY) < 1) {
//Offensive heal does not works on non-enemies. [Skotlex]
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
return skill->castend_damage_id(src, bl, skill_id, skill_lv, tick, flag);
@@ -5601,7 +6126,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
clif->skill_nodamage (src, bl, skill_id, heal, 1);
if( tsc && tsc->data[SC_AKAITSUKI] && heal && skill_id != HLIF_HEAL )
heal = ~heal + 1;
- heal_get_jobexp = status->heal(bl,heal,0,0);
+ heal_get_jobexp = status->heal(bl, heal, 0, STATUS_HEAL_DEFAULT);
if(sd && dstsd && heal > 0 && sd != dstsd && battle_config.heal_exp > 0){
heal_get_jobexp = heal_get_jobexp * battle_config.heal_exp / 100;
@@ -5615,7 +6140,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case PR_REDEMPTIO:
if (sd && !(flag&1)) {
if (sd->status.party_id == 0) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
skill->area_temp[0] = 0;
@@ -5624,7 +6149,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
src,skill_id,skill_lv,tick, flag|BCT_PARTY|1,
skill->castend_nodamage_id);
if (skill->area_temp[0] == 0) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
skill->area_temp[0] = 5 - skill->area_temp[0]; // The actual penalty...
@@ -5634,8 +6159,8 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
clif->updatestatus(sd,SP_BASEEXP);
clif->updatestatus(sd,SP_JOBEXP);
}
- status->set_hp(src, 1, 0);
- status->set_sp(src, 0, 0);
+ status->set_hp(src, 1, STATUS_HEAL_DEFAULT);
+ status->set_sp(src, 0, STATUS_HEAL_DEFAULT);
break;
} else if (status->isdead(bl) && flag&1) { //Revive
skill->area_temp[0]++; //Count it in, then fall-through to the Resurrection code.
@@ -5646,7 +6171,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case ALL_RESURRECTION:
if(sd && (map_flag_gvg2(bl->m) || map->list[bl->m].flag.battleground)) {
//No reviving in WoE grounds!
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
if (!status->isdead(bl))
@@ -5799,7 +6324,8 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
break;
case SA_SUMMONMONSTER:
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
- if (sd) mob->once_spawn(sd, src->m, src->x, src->y," --ja--", -1, 1, "", SZ_SMALL, AI_NONE);
+ if (sd != NULL)
+ mob->once_spawn(sd, src->m, src->x, src->y, DEFAULT_MOB_JNAME, -1, 1, "", SZ_SMALL, AI_NONE);
break;
case SA_LEVELUP:
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
@@ -5807,7 +6333,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
break;
case SA_INSTANTDEATH:
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
- status->set_hp(bl,1,0);
+ status->set_hp(bl, 1, STATUS_HEAL_DEFAULT);
break;
case SA_QUESTION:
case SA_GRAVITY:
@@ -5820,7 +6346,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
int class_;
if ( sd && dstmd->status.mode&MD_BOSS )
{
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
class_ = skill_id == SA_MONOCELL ? MOBID_PORING : mob->get_random_id(4, 1, 0);
@@ -5840,7 +6366,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case SA_DEATH:
if ( sd && dstmd && dstmd->status.mode&MD_BOSS )
{
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
@@ -5868,7 +6394,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case CR_PROVIDENCE:
if(sd && dstsd){ //Check they are not another crusader [Skotlex]
if ((dstsd->job & MAPID_UPPERMASK) == MAPID_CRUSADER) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return 1;
}
@@ -5883,7 +6409,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if (sd != NULL && dstsd != NULL && (dstsd->job & MAPID_UPPERMASK) == MAPID_BARDDANCER && dstsd->status.sex == sd->status.sex) {
// Cannot cast on another bard/dancer-type class of the same gender as caster
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return 1;
}
@@ -5900,7 +6426,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
status_change_end(bl, SC_MARIONETTE, INVALID_TIMER);
} else {
if( sd )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return 1;
}
@@ -5917,7 +6443,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case SA_LIGHTNINGLOADER:
case SA_SEISMICWEAPON:
if (dstsd) {
- if(dstsd->status.weapon == W_FIST ||
+ if (dstsd->weapontype == W_FIST ||
(dstsd->sc.count && !dstsd->sc.data[type] &&
( //Allow re-enchanting to lengthen time. [Skotlex]
dstsd->sc.data[SC_PROPERTYFIRE] ||
@@ -5929,7 +6455,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
dstsd->sc.data[SC_ENCHANTPOISON]
))
) {
- if (sd) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ if (sd) clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
clif->skill_nodamage(src,bl,skill_id,skill_lv,0);
break;
}
@@ -5937,7 +6463,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
// 100% success rate at lv4 & 5, but lasts longer at lv5
if(!clif->skill_nodamage(src,bl,skill_id,skill_lv, sc_start(src,bl,type,(60+skill_lv*10),skill_lv, skill->get_time(skill_id,skill_lv)))) {
if (sd)
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
if (skill->break_equip(bl, EQP_WEAPON, 10000, BCT_PARTY) && sd && sd != dstsd)
clif->message(sd->fd, msg_sd(sd,869)); // "You broke the target's weapon."
}
@@ -5998,16 +6524,14 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case TK_JUMPKICK:
/* Check if the target is an enemy; if not, skill should fail so the character doesn't unit->movepos (exploitable) */
- if( battle->check_target(src, bl, BCT_ENEMY) > 0 )
- {
- if( unit->movepos(src, bl->x, bl->y, 1, 1) )
- {
- skill->attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag);
- clif->slide(src,bl->x,bl->y);
+ if (battle->check_target(src, bl, BCT_ENEMY) > 0) {
+ if (unit->movepos(src, bl->x, bl->y, 1, 1)) {
+ skill->attack(BF_WEAPON, src, src, bl, skill_id, skill_lv, tick, flag);
+ clif->slide(src, bl->x, bl->y);
}
+ } else if (sd != NULL) {
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL, 0, 0);
}
- else
- clif->skill_fail(sd,skill_id,USESKILL_FAIL,0);
break;
case AL_INCAGI:
@@ -6128,7 +6652,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
break;
case HP_ASSUMPTIO:
if( sd && dstmd )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
else
clif->skill_nodamage(src,bl,skill_id,skill_lv,
sc_start(src,bl,type,100,skill_lv,skill->get_time(skill_id,skill_lv)));
@@ -6181,7 +6705,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
clif->skill_nodamage(src,bl,skill_id,skill_lv,
sc_start(src,bl,type,100,skill_lv,skill->get_time(skill_id,skill_lv)));
else if( sd )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
case AS_ENCHANTPOISON: // Prevent spamming [Valaris]
if (sd && dstsd && dstsd->sc.count) {
@@ -6194,7 +6718,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
//dstsd->sc.data[SC_ENCHANTPOISON] //People say you should be able to recast to lengthen the timer. [Skotlex]
) {
clif->skill_nodamage(src,bl,skill_id,skill_lv,0);
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
}
@@ -6224,17 +6748,17 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
int id;
if (sd->mission_mobid && (sd->mission_count || rnd()%100)) { //Cannot change target when already have one
clif->mission_info(sd, sd->mission_mobid, sd->mission_count);
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
id = mob->get_random_id(0,0xF, sd->status.base_level);
if (!id) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
sd->mission_mobid = id;
sd->mission_count = 0;
- pc_setglobalreg(sd,script->add_str("TK_MISSION_ID"), id);
+ pc_setglobalreg(sd,script->add_variable("TK_MISSION_ID"), id);
clif->mission_info(sd, id, 0);
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
}
@@ -6264,7 +6788,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
(failure = sc_start(src,bl,type, skill_id == SM_SELFPROVOKE ? 100:( 50 + 3*skill_lv + status->get_lv(src) - status->get_lv(bl)), skill_lv, skill->get_time(skill_id,skill_lv))));
if( !failure ) {
if( sd )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return 0;
}
@@ -6294,7 +6818,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if( !dstsd || (!sd && !mer) )
{ // Only players can be devoted
if( sd )
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
@@ -6307,7 +6831,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
(dstsd->sc.data[SC_HELLPOWER])) // Players affected by SC_HELLPOWERR cannot be devoted.
{
if( sd )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return 1;
}
@@ -6322,7 +6846,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
ARR_FIND(0, count, i, sd->devotion[i] == 0 );
if( i == count ) {
// No free slots, skill Fail
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return 1;
}
@@ -6387,7 +6911,8 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if (dstsd && dstsd->charm_type != CHARM_TYPE_NONE && dstsd->charm_count > 0) {
pc->del_charm(dstsd, dstsd->charm_count, dstsd->charm_type);
}
- if (sp) status->heal(src, 0, sp, 3);
+ if (sp != 0)
+ status->heal(src, 0, sp, STATUS_HEAL_FORCED | STATUS_HEAL_SHOWEFFECT);
clif->skill_nodamage(src,bl,skill_id,skill_lv,sp?1:0);
}
break;
@@ -6583,7 +7108,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
)
) {
status->change_start(src,src,SC_STUN,10000,skill_lv,0,0,0,500,SCFLAG_FIXEDRATE);
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
}
@@ -6610,7 +7135,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
return 0;
} else if( tsc && tsc->option&OPTION_MADOGEAR ) {
//Mado Gear cannot hide
- if( sd ) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ if( sd ) clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return 0;
}
@@ -6636,7 +7161,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if( failure )
clif->skill_nodamage(src,bl,skill_id,( skill_id == LG_FORCEOFVANGUARD ) ? skill_lv : -1,failure);
else if( sd )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
if ( skill_id == LG_FORCEOFVANGUARD || skill_id == RA_CAMOUFLAGE )
break;
map->freeblock_unlock();
@@ -6646,7 +7171,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if( failure )
clif->skill_nodamage(src,bl,skill_id,( skill_id == LG_FORCEOFVANGUARD ) ? skill_lv : -1,failure);
else if( sd )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
}
break;
@@ -6666,8 +7191,8 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
// custom hack to make the mob display the skill, because these skills don't show the skill use text themselves
//NOTE: mobs don't have the sprite animation that is used when performing this skill (will cause glitches)
char temp[70];
- snprintf(temp, sizeof(temp), "%s : %s !!",md->name,skill->dbs->db[skill_id].desc);
- clif->disp_overhead(&md->bl,temp);
+ snprintf(temp, sizeof(temp), "%s : %s !!", md->name, skill->get_desc(skill_id));
+ clif->disp_overhead(&md->bl, temp, AREA_CHAT_WOC, NULL);
}
break;
@@ -6686,7 +7211,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
clif->skill_nodamage(src,bl,skill_id,skill_lv, sc_start2(src,bl,type,70,skill_lv,src->id,skill->get_time(skill_id,skill_lv)));
} else {
clif->skill_nodamage(src,bl,skill_id,skill_lv,0);
- if(sd) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ if(sd) clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
}
}
break;
@@ -6696,7 +7221,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if(pc->steal_item(sd,bl,skill_lv))
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
else
- clif->skill_fail(sd,skill_id,USESKILL_FAIL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL, 0, 0);
}
break;
@@ -6709,7 +7234,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
clif->skill_nodamage(src, bl, skill_id, amount, 1);
} else
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
}
break;
@@ -6717,7 +7242,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
{
int brate = 0;
if (tstatus->mode&MD_BOSS) {
- if (sd) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ if (sd) clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
if(status->isimmune(bl) || !tsc)
@@ -6736,7 +7261,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
skill->get_time2(skill_id,skill_lv)))
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
else if(sd) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
// Level 6-10 doesn't consume a red gem if it fails [celest]
if (skill_lv > 5) {
// not to consume items
@@ -6749,7 +7274,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case NV_FIRSTAID:
clif->skill_nodamage(src,bl,skill_id,5,1);
- status->heal(bl,5,0,0);
+ status->heal(bl, 5, 0, STATUS_HEAL_DEFAULT);
break;
case AL_CURE:
@@ -6826,7 +7351,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case MER_SCAPEGOAT:
if( mer && mer->master ) {
- status->heal(&mer->master->bl, mer->battle_status.hp, 0, 2);
+ status->heal(&mer->master->bl, mer->battle_status.hp, 0, STATUS_HEAL_SHOWEFFECT);
status->damage(src, src, mer->battle_status.max_hp, 0, 0, 1);
}
break;
@@ -6840,7 +7365,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
break;
if( dstsd )
{ // Fail on Players
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
if (dstmd && dstmd->class_ == MOBID_EMPELIUM)
@@ -6865,7 +7390,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
return 1;
}
if( sd->skillitem != skill_id )
- status_zap(src,0,skill->dbs->db[skill->get_index(skill_id)].sp[skill_lv]); // consume sp only if succeeded
+ status_zap(src, 0, skill->get_sp(skill_id, skill_lv)); // consume sp only if succeeded
}
break;
@@ -6881,7 +7406,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if (sd) {
//Prevent vending of GMs with unnecessary Level to trade/drop. [Skotlex]
if ( !pc_can_give_items(sd) )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
else {
sd->state.prevend = sd->state.workinprogress = 3;
clif->openvendingreq(sd,2+skill_lv);
@@ -6929,7 +7454,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if (skill->produce_mix(sd, skill_id, ITEMID_HOLY_WATER, 0, 0, 0, 1))
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
else
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
}
break;
@@ -6948,7 +7473,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
eflag = pc->additem(sd,&item_tmp,1,LOG_TYPE_PRODUCE);
if(eflag) {
clif->additem(sd,0,0,eflag);
- map->addflooritem(&sd->bl, &item_tmp, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0);
+ map->addflooritem(&sd->bl, &item_tmp, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false);
}
}
break;
@@ -7027,7 +7552,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
//Nothing stripped.
if( sd && !rate )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
@@ -7041,22 +7566,23 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
return 1;
}
if( sd ) {
- int x,bonus=100, potion = min(500+skill_lv,505);
- x = skill_lv%11 - 1;
- i = pc->search_inventory(sd,skill->dbs->db[skill_id].itemid[x]);
- if (i == INDEX_NOT_FOUND || skill->dbs->db[skill_id].itemid[x] <= 0) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ int bonus = 100, potion = min(500+skill_lv,505);
+ int item_idx = (skill_lv - 1) % MAX_SKILL_ITEM_REQUIRE;
+ int item_id = skill->get_itemid(skill_id, item_idx);
+ int inventory_idx = pc->search_inventory(sd, item_id);
+ if (inventory_idx == INDEX_NOT_FOUND || item_id <= 0) {
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return 1;
}
- if(sd->inventory_data[i] == NULL || sd->status.inventory[i].amount < skill->dbs->db[skill_id].amount[x]) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ if (sd->inventory_data[inventory_idx] == NULL || sd->status.inventory[inventory_idx].amount < skill->get_itemqty(skill_id, item_idx)) {
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return 1;
}
if( skill_id == AM_BERSERKPITCHER ) {
- if (dstsd && dstsd->status.base_level < sd->inventory_data[i]->elv) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ if (dstsd != NULL && dstsd->status.base_level < sd->inventory_data[inventory_idx]->elv) {
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return 1;
}
@@ -7064,7 +7590,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
script->potion_flag = 1;
script->potion_hp = script->potion_sp = script->potion_per_hp = script->potion_per_sp = 0;
script->potion_target = bl->id;
- script->run_use_script(sd, sd->inventory_data[i], 0);
+ script->run_use_script(sd, sd->inventory_data[inventory_idx], 0);
script->potion_flag = script->potion_target = 0;
if( sd->sc.data[SC_SOULLINK] && sd->sc.data[SC_SOULLINK]->val2 == SL_ALCHEMIST )
bonus += sd->status.base_level;
@@ -7142,7 +7668,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if( tsc && tsc->data[SC_EXTREMITYFIST2] )
sp = 0;
#endif
- status->heal(bl,(int)hp,sp,0);
+ status->heal(bl, (int)hp, sp, STATUS_HEAL_DEFAULT);
}
break;
case AM_CP_WEAPON:
@@ -7156,7 +7682,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
(dstsd && equip[skill_id - AM_CP_WEAPON] == EQP_SHIELD && pc->checkequip(dstsd, EQP_SHIELD) > 0
&& (index = dstsd->equip_index[EQI_HAND_L]) >= 0 && dstsd->inventory_data[index]
&& dstsd->inventory_data[index]->type != IT_ARMOR)) ) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock(); // Don't consume item requirements
return 0;
}
@@ -7169,7 +7695,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
//Prepare 200 White Potions.
if (!skill->produce_mix(sd, skill_id, ITEMID_WHITE_POTION, 0, 0, 0, 200))
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
}
break;
case AM_TWILIGHT2:
@@ -7177,7 +7703,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
//Prepare 200 Slim White Potions.
if (!skill->produce_mix(sd, skill_id, ITEMID_WHITE_SLIM_POTION, 0, 0, 0, 200))
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
}
break;
case AM_TWILIGHT3:
@@ -7191,7 +7717,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
|| !skill->can_produce_mix(sd,ITEMID_FIRE_BOTTLE,-1, 50) //50 Flame Bottle
|| ebottle < 200 //200 empty bottle are required at total.
) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
@@ -7217,7 +7743,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
|| rnd()%100 >= 50+10*skill_lv )
{
if (sd)
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
if(status->isimmune(bl) || !tsc || !tsc->count)
@@ -7317,7 +7843,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
sp = skill->get_sp(skill_id,skill_lv);
sp = sp * tsc->data[SC_MAGICROD]->val2 / 100;
if(sp < 1) sp = 1;
- status->heal(bl,0,sp,2);
+ status->heal(bl, 0, sp, STATUS_HEAL_SHOWEFFECT);
status_percent_damage(bl, src, 0, -20, false); //20% max SP damage.
} else {
struct unit_data *ud = unit->bl2ud(bl);
@@ -7330,7 +7856,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
//Only 10% success chance against bosses. [Skotlex]
if (rnd()%100 < 90)
{
- if (sd) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ if (sd) clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
} else if (!dstsd || map_flag_vs(bl->m)) //HP damage only on pvp-maps when against players.
@@ -7349,8 +7875,8 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if (sp) //Recover some of the SP used
sp = sp*(25*(skill_lv-1))/100;
- if(hp || sp)
- status->heal(src, hp, sp, 2);
+ if (hp != 0 || sp != 0)
+ status->heal(src, hp, sp, STATUS_HEAL_SHOWEFFECT);
}
}
break;
@@ -7384,7 +7910,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
maxlv = skill_lv - 4;
}
else if(skill_lv >=2) {
- int i = rnd()%3;
+ int i = rnd() % ARRAYLENGTH(spellarray);
spellid = spellarray[i];
maxlv = skill_lv - 1;
}
@@ -7470,8 +7996,8 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case NPC_LICK:
status_zap(bl, 0, 100);
- clif->skill_nodamage(src,bl,skill_id,skill_lv,
- sc_start(src,bl,type,(skill_lv*5),skill_lv,skill->get_time2(skill_id,skill_lv)));
+ clif->skill_nodamage(src, bl, skill_id, skill_lv,
+ sc_start(src, bl, type, (skill_lv * 20), skill_lv, skill->get_time2(skill_id, skill_lv)));
break;
case NPC_SUICIDE:
@@ -7591,16 +8117,16 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case WE_MALE:
{
- int hp_rate = (!skill_lv)? 0:skill->dbs->db[skill_id].hp_rate[skill_lv-1];
+ int hp_rate = skill_lv == 0 ? 0 : skill->get_hp_rate(skill_id, skill_lv);
int gain_hp = tstatus->max_hp*abs(hp_rate)/100; // The earned is the same % of the target HP than it cost the caster. [Skotlex]
- clif->skill_nodamage(src,bl,skill_id,status->heal(bl, gain_hp, 0, 0),1);
+ clif->skill_nodamage(src, bl, skill_id, status->heal(bl, gain_hp, 0, STATUS_HEAL_DEFAULT), 1);
}
break;
case WE_FEMALE:
{
- int sp_rate = (!skill_lv)? 0:skill->dbs->db[skill_id].sp_rate[skill_lv-1];
+ int sp_rate = skill_lv == 0 ? 0 : skill->get_sp_rate(skill_id, skill_lv);
int gain_sp = tstatus->max_sp*abs(sp_rate)/100;// The earned is the same % of the target SP than it cost the caster. [Skotlex]
- clif->skill_nodamage(src,bl,skill_id,status->heal(bl, 0, gain_sp, 0),1);
+ clif->skill_nodamage(src, bl, skill_id, status->heal(bl, 0, gain_sp, STATUS_HEAL_DEFAULT), 1);
}
break;
@@ -7621,7 +8147,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
we_baby_parents = true;
}
if (!we_baby_parents) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return 0;
}
@@ -7636,11 +8162,11 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
hp = sstatus->max_hp/10;
sp = hp * 10 * skill_lv / 100;
if (!status->charge(src,hp,0)) {
- if (sd) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ if (sd) clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
clif->skill_nodamage(src, bl, skill_id, skill_lv, 1);
- status->heal(bl,0,sp,2);
+ status->heal(bl, 0, sp, STATUS_HEAL_SHOWEFFECT);
}
break;
@@ -7661,16 +8187,17 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if( battle_config.skill_removetrap_type ) {
int i;
// get back all items used to deploy the trap
- for( i = 0; i < 10; i++ ) {
- if( skill->dbs->db[su->group->skill_id].itemid[i] > 0 ) {
+ for (i = 0; i < MAX_SKILL_ITEM_REQUIRE; i++) {
+ int nameid = skill->get_itemid(su->group->skill_id, i);
+ if (nameid > 0) {
int success;
- struct item item_tmp;
- memset(&item_tmp,0,sizeof(item_tmp));
- item_tmp.nameid = skill->dbs->db[su->group->skill_id].itemid[i];
+ struct item item_tmp = { 0 };
+ int amount = skill->get_itemqty(su->group->skill_id, i);
+ item_tmp.nameid = nameid;
item_tmp.identify = 1;
- if (item_tmp.nameid && (success=pc->additem(sd,&item_tmp,skill->dbs->db[su->group->skill_id].amount[i],LOG_TYPE_SKILL)) != 0) {
+ if ((success = pc->additem(sd, &item_tmp, amount, LOG_TYPE_SKILL)) != 0) {
clif->additem(sd,0,0,success);
- map->addflooritem(&sd->bl, &item_tmp, skill->dbs->db[su->group->skill_id].amount[i], sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0);
+ map->addflooritem(&sd->bl, &item_tmp, amount, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false);
}
}
}
@@ -7682,13 +8209,13 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
item_tmp.identify = 1;
if (item_tmp.nameid && (flag=pc->additem(sd,&item_tmp,1,LOG_TYPE_SKILL)) != 0) {
clif->additem(sd,0,0,flag);
- map->addflooritem(&sd->bl, &item_tmp, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0);
+ map->addflooritem(&sd->bl, &item_tmp, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false);
}
}
}
skill->delunit(su);
}else if(sd)
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
}
break;
@@ -7735,7 +8262,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
|| tstatus-> hp > tstatus->max_hp*3/4
#endif // RENEWAL
) {
- if (sd) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ if (sd) clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return 1;
}
@@ -7765,7 +8292,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if (!clif->skill_nodamage(src,bl,skill_id,skill_lv,
sc_start(src,bl,type,55+5*skill_lv,skill_lv,skill->get_time(skill_id,skill_lv)))
) {
- if (sd) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ if (sd) clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return 0;
}
@@ -7789,12 +8316,12 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
unsigned int sp1 = 0, sp2 = 0;
if (dstmd) {
if (dstmd->state.soul_change_flag) {
- if(sd) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ if(sd) clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
dstmd->state.soul_change_flag = 1;
sp2 = sstatus->max_sp * 3 /100;
- status->heal(src, 0, sp2, 2);
+ status->heal(src, 0, sp2, STATUS_HEAL_SHOWEFFECT);
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
break;
}
@@ -7806,8 +8333,8 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if( tsc && tsc->data[SC_EXTREMITYFIST2] )
sp1 = tstatus->sp;
#endif // RENEWAL
- status->set_sp(src, sp2, 3);
- status->set_sp(bl, sp1, 3);
+ status->set_sp(src, sp2, STATUS_HEAL_FORCED | STATUS_HEAL_SHOWEFFECT);
+ status->set_sp(bl, sp1, STATUS_HEAL_FORCED | STATUS_HEAL_SHOWEFFECT);
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
}
break;
@@ -7845,7 +8372,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
clif->skill_nodamage(NULL,bl,AL_HEAL,hp,1);
if(sp > 0)
clif->skill_nodamage(NULL,bl,MG_SRECOVERY,sp,1);
- status->heal(bl,hp,sp,0);
+ status->heal(bl, hp, sp, STATUS_HEAL_DEFAULT);
}
break;
// Full Chemical Protection
@@ -7865,7 +8392,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
s++;
}
if ( sd && !s ) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock(); // Don't consume item requirements
return 0;
}
@@ -7897,12 +8424,12 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
}
if (rnd() % 100 > skill_lv * 8 || (dstmd && ((dstmd->guardian_data && dstmd->class_ == MOBID_EMPELIUM) || mob_is_battleground(dstmd)))) {
if (sd != NULL)
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return 0;
}
- status_zap(src,0,skill->dbs->db[skill->get_index(skill_id)].sp[skill_lv]); // consume sp only if succeeded [Inkfish]
+ status_zap(src, 0, skill->get_sp(skill_id, skill_lv)); // consume sp only if succeeded [Inkfish]
do {
int eff = rnd() % 14;
if( eff == 5 )
@@ -7926,7 +8453,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
clif->damage(src,bl,0,0,1000,0,BDT_NORMAL,0);
if( !status->isdead(bl) ) {
int where[] = { EQP_ARMOR, EQP_SHIELD, EQP_HELM, EQP_SHOES, EQP_GARMENT };
- skill->break_equip(bl, where[rnd()%5], 10000, BCT_ENEMY);
+ skill->break_equip(bl, where[rnd() % ARRAYLENGTH(where)], 10000, BCT_ENEMY);
}
}
break;
@@ -7934,7 +8461,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
sc_start(src,bl,SC_INCATKRATE,100,-50,skill->get_time2(skill_id,skill_lv));
break;
case 5: // 2000HP heal, random teleported
- status->heal(src, 2000, 0, 0);
+ status->heal(src, 2000, 0, STATUS_HEAL_DEFAULT);
if( !map_flag_vs(bl->m) )
unit->warp(bl, -1,-1,-1, CLR_TELEPORT);
break;
@@ -7947,7 +8474,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case 7: // stop freeze or stoned
{
enum sc_type sc[] = { SC_STOP, SC_FREEZE, SC_STONE };
- sc_start(src,bl,sc[rnd()%3],100,skill_lv,skill->get_time2(skill_id,skill_lv));
+ sc_start(src,bl,sc[rnd() % ARRAYLENGTH(sc)],100,skill_lv,skill->get_time2(skill_id,skill_lv));
}
break;
case 8: // curse coma and poison
@@ -8005,13 +8532,13 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case SL_WIZARD:
//NOTE: here, 'type' has the value of the associated MAPID, not of the SC_SOULLINK constant.
if (sd != NULL && !(dstsd != NULL && (dstsd->job & MAPID_UPPERMASK) == type)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
if (skill_id == SL_SUPERNOVICE && dstsd && dstsd->die_counter && !(rnd()%100)) {
//Erase death count 1% of the casts
dstsd->die_counter = 0;
- pc_setglobalreg(dstsd,script->add_str("PC_DIE_COUNTER"), 0);
+ pc_setglobalreg(dstsd,script->add_variable("PC_DIE_COUNTER"), 0);
clif->specialeffect(bl, 0x152, AREA);
//SC_SOULLINK invokes status_calc_pc for us.
}
@@ -8021,7 +8548,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
break;
case SL_HIGH:
if (sd != NULL && !(dstsd != NULL && (dstsd->job & JOBL_UPPER) != 0 && (dstsd->job & JOBL_2) == 0 && dstsd->status.base_level < 70)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
clif->skill_nodamage(src,bl,skill_id,skill_lv,
@@ -8032,7 +8559,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case SL_SWOO:
if (tsce) {
if(sd)
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
status->change_start(src,src,SC_STUN,10000,skill_lv,0,0,0,10000,SCFLAG_FIXEDRATE);
status_change_end(bl, SC_SWOO, INVALID_TIMER);
break;
@@ -8040,7 +8567,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case SL_SKA: // [marquis007]
case SL_SKE:
if (sd && !battle_config.allow_es_magic_pc && bl->type != BL_MOB) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
status->change_start(src,src,SC_STUN,10000,skill_lv,0,0,0,500,SCFLAG_FIXEDTICK|SCFLAG_FIXEDRATE);
break;
}
@@ -8132,7 +8659,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if (sd) {
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
if (!pc->set_hate_mob(sd, skill_lv-1, bl))
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
}
break;
@@ -8162,7 +8689,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if (homun->call(sd))
clif->skill_nodamage(src, bl, skill_id, skill_lv, 1);
else
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
}
break;
@@ -8171,7 +8698,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if (homun->vaporize(sd,HOM_ST_REST))
clif->skill_nodamage(src, bl, skill_id, skill_lv, 1);
else
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
}
break;
@@ -8181,8 +8708,14 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
int x,y;
x = src->x;
y = src->y;
- if (hd)
- skill->blockhomun_start(hd, skill_id, skill->get_time2(skill_id,skill_lv));
+ if (hd) {
+#ifdef RENEWAL
+ skill->blockhomun_start(hd, skill_id, skill->get_cooldown(skill_id, skill_lv));
+#else
+ skill->blockhomun_start(hd, skill_id, skill->get_time2(skill_id, skill_lv));
+#endif
+ }
+
if (unit->movepos(src,bl->x,bl->y,0,0)) {
clif->skill_nodamage(src,src,skill_id,skill_lv,1); // Homun
@@ -8200,9 +8733,9 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
}
// Failed
else if (hd && hd->master)
- clif->skill_fail(hd->master, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(hd->master, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
else if (sd)
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
case HVAN_CHAOTIC: // [orn]
{
@@ -8222,7 +8755,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
//Eh? why double skill packet?
clif->skill_nodamage(src,bl,AL_HEAL,hp,1);
clif->skill_nodamage(src,bl,skill_id,hp,1);
- status->heal(bl, hp, 0, 0);
+ status->heal(bl, hp, 0, STATUS_HEAL_DEFAULT);
}
break;
// Homun single-target support skills [orn]
@@ -8305,7 +8838,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
{
if( !sd->status.party_id )
{
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
party->foreachsamemap(skill->area_sub, sd, skill->get_splash(skill_id, skill_lv), src, skill_id, skill_lv, tick, flag|BCT_PARTY|1, skill->castend_nodamage_id);
@@ -8361,7 +8894,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if( status->charge(bl,heal,0) )
clif->skill_nodamage(src,bl,skill_id,skill_lv,sc_start2(src,bl,type,100,skill_lv,heal,skill->get_time(skill_id,skill_lv)));
else
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
}
break;
case RK_REFRESH:
@@ -8369,7 +8902,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
int heal = status_get_max_hp(bl) * 25 / 100;
clif->skill_nodamage(src,bl,skill_id,skill_lv,
sc_start(src,bl,type,100,skill_lv,skill->get_time(skill_id,skill_lv)));
- status->heal(bl,heal,0,1);
+ status->heal(bl, heal, 0, STATUS_HEAL_FORCED);
status->change_clear_buffs(bl,4);
}
break;
@@ -8423,7 +8956,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
value = status_get_max_hp(bl) * 25 / 100;
status->change_clear_buffs(bl,4);
skill->area_temp[5] &= ~0x20;
- status->heal(bl,value,0,1);
+ status->heal(bl, value, 0, STATUS_HEAL_FORCED);
type = SC_REFRESH;
}else if( skill->area_temp[5]&0x40 ){
skill->area_temp[5] &= ~0x40;
@@ -8539,11 +9072,11 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
{
int heal = status_get_max_hp(bl) * ( 18 - 2 * skill_lv ) / 100;
if( status_get_hp(bl) < heal ) { // if you haven't enough HP skill fails.
- if( sd ) clif->skill_fail(sd,skill_id,USESKILL_FAIL_HP_INSUFFICIENT,0);
+ if (sd) clif->skill_fail(sd, skill_id, USESKILL_FAIL_HP_INSUFFICIENT, 0, 0);
break;
}
if( !status->charge(bl,heal,0) ) {
- if( sd ) clif->skill_fail(sd,skill_id,USESKILL_FAIL_HP_INSUFFICIENT,0);
+ if (sd) clif->skill_fail(sd, skill_id, USESKILL_FAIL_HP_INSUFFICIENT, 0, 0);
break;
}
clif->skill_nodamage(src,bl,skill_id,skill_lv,sc_start(src,bl,type,100,skill_lv,skill->get_time(skill_id,skill_lv)));
@@ -8569,7 +9102,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
clif->skill_nodamage(bl, bl, skill_id, skill_lv, sc_start(src, bl, type, 100, level + (sd?(sd->status.job_level / 10):0), skill->get_time(skill_id,skill_lv)));
else if( sd ) {
if( !level )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL, 0, 0);
else
party->foreachsamemap(skill->area_sub, sd, skill->get_splash(skill_id, skill_lv), src, skill_id, skill_lv, tick, flag|BCT_PARTY|1, skill->castend_nodamage_id);
}
@@ -8608,7 +9141,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
clif->skill_nodamage(bl, bl, skill_id, heal, 1);
if( tsc && tsc->data[SC_AKAITSUKI] && heal )
heal = ~heal + 1;
- status->heal(bl, heal, 0, 1);
+ status->heal(bl, heal, 0, STATUS_HEAL_FORCED);
}
} else if( sd )
party->foreachsamemap(skill->area_sub, sd, skill->get_splash(skill_id, skill_lv), src, skill_id, skill_lv, tick, flag|BCT_PARTY|1, skill->castend_nodamage_id);
@@ -8675,7 +9208,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if ((dstsd != NULL && (dstsd->job & MAPID_UPPERMASK) == MAPID_SOUL_LINKER) || rnd()%100 >= 60 + 8 * skill_lv) {
if (sd)
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
if(status->isimmune(bl) || !tsc || !tsc->count)
@@ -8738,11 +9271,11 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
int failure = sc_start2(src,bl,type,rate,skill_lv,src->id,(src == bl)?5000:(bl->type == BL_PC)?skill->get_time(skill_id,skill_lv):skill->get_time2(skill_id, skill_lv));
clif->skill_nodamage(src,bl,skill_id,skill_lv,failure);
if( sd && !failure )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
}
}else
if( sd )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_TOTARGET,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_TOTARGET, 0, 0);
break;
case WL_FROSTMISTY:
@@ -8778,7 +9311,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
clif->skill_nodamage(src, bl, skill_id, skill_lv, 1);
map->foreachinrange(skill->area_sub,bl,skill->get_splash(skill_id,skill_lv),BL_CHAR,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill->castend_nodamage_id);
}else if( sd ) // Failure on Rate
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
}
break;
@@ -8808,7 +9341,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if( sc && !sc->data[i] )
break;
if( i == SC_SPELLBOOK7 ) {
- clif->skill_fail(sd, WL_READING_SB, USESKILL_FAIL_SPELLBOOK_READING, 0);
+ clif->skill_fail(sd, WL_READING_SB, USESKILL_FAIL_SPELLBOOK_READING, 0, 0);
break;
}
@@ -8884,7 +9417,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
pc->setmadogear(sd, false);
clif->skill_nodamage(src, bl, skill_id, skill_lv, 1);
skill->castend_damage_id(src, src, skill_id, skill_lv, tick, flag);
- status->set_sp(src, 0, 0);
+ status->set_sp(src, 0, STATUS_HEAL_DEFAULT);
}
break;
@@ -8912,7 +9445,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if( sd ) {
int heal, hp = 0; // % of max hp regen
if( !dstsd || !pc_ismadogear(dstsd) ) {
- clif->skill_fail(sd, skill_id,USESKILL_FAIL_TOTARGET,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_TOTARGET, 0, 0);
break;
}
switch (cap_value(skill_lv, 1, 5)) {
@@ -8923,7 +9456,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case 5: hp = 23; break;
}
heal = tstatus->max_hp * hp / 100;
- status->heal(bl,heal,0,2);
+ status->heal(bl, heal, 0, STATUS_HEAL_SHOWEFFECT);
clif->skill_nodamage(src, bl, skill_id, skill_lv, heal);
}
break;
@@ -8946,7 +9479,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
clif->skill_nodamage(src,bl,skill_id,1,1);
}
else
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_IMITATION_SKILL_NONE,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_IMITATION_SKILL_NONE, 0, 0);
}
break;
@@ -8956,7 +9489,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
dstsd->shadowform_id = src->id;
}
else if( sd )
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
case SC_BODYPAINT:
@@ -9001,7 +9534,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
int sp = 100 * skill_lv;
if( dstmd ) sp = dstmd->level * 2;
if( status_zap(bl,0,sp) )
- status->heal(src,0,sp/2,3);//What does flag 3 do? [Rytech]
+ status->heal(src, 0, sp / 2, STATUS_HEAL_FORCED | STATUS_HEAL_SHOWEFFECT);
}
if ( tsc && tsc->data[SC__UNLUCKY] && skill_id == SC_UNLUCKY) {
//If the target was successfully inflected with the Unlucky status, give 1 of 3 random status's.
@@ -9017,7 +9550,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
}
}
} else if( sd )
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
case LG_TRAMPLE:
@@ -9044,7 +9577,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
struct item_data *shield_data = NULL;
if( sd->equip_index[EQI_HAND_L] < 0 || !( shield_data = sd->inventory_data[sd->equip_index[EQI_HAND_L]] ) || shield_data->type != IT_ARMOR ) {
//Skill will first check if a shield is equipped. If none is found on the caster the skill will fail.
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
//Generates a number between 1 - 3. The number generated will determine which effect will be triggered.
@@ -9125,7 +9658,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case 3:
sc_start(src, bl, SC_SHIELDSPELL_REF, 100, opt, INFINITE_DURATION); // HP Recovery
val = sstatus->max_hp * ((status->get_lv(src) / 10) + (shield->refine + 1)) / 100;
- status->heal(bl, val, 0, 2);
+ status->heal(bl, val, 0, STATUS_HEAL_SHOWEFFECT);
status_change_end(bl,SC_SHIELDSPELL_REF,INVALID_TIMER);
break;
}
@@ -9268,7 +9801,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
}
heal = 120 * skill_lv + status_get_max_hp(bl) * (2 + skill_lv) / 100;
- status->heal(bl, heal, 0, 0);
+ status->heal(bl, heal, 0, STATUS_HEAL_DEFAULT);
if( (tsc && tsc->opt1) && (rnd()%100 < ((skill_lv * 5) + (status_get_dex(src) + status->get_lv(src)) / 4) - (1 + (rnd() % 10))) ) {
status_change_end(bl, SC_STONE, INVALID_TIMER);
@@ -9339,7 +9872,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
heal = 1;
status->fixed_revive(bl, heal, 0);
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
- status->set_sp(bl, 0, 0);
+ status->set_sp(bl, 0, STATUS_HEAL_DEFAULT);
}
}
break;
@@ -9378,7 +9911,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case WM_GLOOMYDAY:
if ( tsc && tsc->data[type] ) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
// val4 indicates caster's voice lesson level
@@ -9510,7 +10043,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
break;
}
if( !mapindex ) { //Given map not found?
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return 0;
}
@@ -9605,7 +10138,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
// Summoning the new one.
if( !elemental->create(sd,elemental_class,skill->get_time(skill_id,skill_lv)) ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
@@ -9627,7 +10160,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case 3: mode = EL_MODE_AGGRESSIVE; break;
}
if (!elemental->change_mode(sd->ed, mode)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
@@ -9671,12 +10204,12 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if( !ed ) break;
if( !status->charge(&sd->bl,s_hp,s_sp) ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
e_hp = ed->battle_status.max_hp * 10 / 100;
e_sp = ed->battle_status.max_sp * 10 / 100;
- status->heal(&ed->bl,e_hp,e_sp,3);
+ status->heal(&ed->bl, e_hp, e_sp, STATUS_HEAL_FORCED | STATUS_HEAL_SHOWEFFECT);
clif->skill_nodamage(src,&ed->bl,skill_id,skill_lv,1);
}
break;
@@ -9702,7 +10235,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
sc_start2(src,bl, type, 100, skill_lv, src->id, skill->get_time(skill_id,skill_lv));
(sc->bs_counter)++;
} else if( sd ) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
}
@@ -9725,7 +10258,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case GN_SLINGITEM:
if( sd ) {
- short ammo_id;
+ int ammo_id;
int equip_idx = sd->equip_index[EQI_AMMO];
if( equip_idx <= 0 )
break; // No ammo.
@@ -9740,7 +10273,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
else
skill->attack(BF_WEAPON,src,src,bl,GN_SLINGITEM_RANGEMELEEATK,skill_lv,tick,flag);
} else //Otherwise, it fails, shows animation and removes items.
- clif->skill_fail(sd,GN_SLINGITEM_RANGEMELEEATK,0xa,0);
+ clif->skill_fail(sd, GN_SLINGITEM_RANGEMELEEATK, 0xa, 0, 0);
} else if( itemdb_is_GNthrowable(ammo_id) ) {
struct script_code *scriptroot = sd->inventory_data[equip_idx]->script;
if( !scriptroot )
@@ -9868,7 +10401,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case KO_KYOUGAKU:
if (!map_flag_vs(src->m) || !dstsd) {
- if (sd) clif->skill_fail(sd, skill_id, USESKILL_FAIL_SIZE, 0);
+ if (sd) clif->skill_fail(sd, skill_id, USESKILL_FAIL_SIZE, 0, 0);
break;
} else {
int time;
@@ -9890,14 +10423,14 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if( status->get_lv(bl) <= status->get_lv(src) )
status->change_start(src, bl, SC_COMA, skill_lv, skill_lv, 0, src->id, 0, 0, SCFLAG_NONE);
} else if( sd )
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
case KO_GENWAKU:
if ( !map_flag_gvg2(src->m) && ( dstsd || dstmd ) && !(tstatus->mode&MD_PLANT) && battle->check_target(src,bl,BCT_ENEMY) > 0 ) {
int x = src->x, y = src->y;
if( sd && rnd()%100 > max(5, (45 + 5 * skill_lv) - status_get_int(bl) / 10) ){//[(Base chance of success) - ( target's int / 10)]%.
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
@@ -9919,7 +10452,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case OB_OBOROGENSOU:
if( sd && ( (skill_id == OB_OBOROGENSOU && bl->type == BL_MOB) // This skill does not work on monsters.
|| is_boss(bl) ) ){ // Does not work on Boss monsters.
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_TOTARGET_PLAYER, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_TOTARGET_PLAYER, 0, 0);
break;
}
case KO_IZAYOI:
@@ -9986,7 +10519,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
}
}
heal = 5 * status->get_lv(&hd->bl) + status->base_matk(&hd->bl, &hd->battle_status, status->get_lv(&hd->bl));
- status->heal(bl, heal, 0, 0);
+ status->heal(bl, heal, 0, STATUS_HEAL_DEFAULT);
clif->skill_nodamage(src, src, skill_id, skill_lv, clif->skill_nodamage(src, bl, AL_HEAL, heal, 1));
status->change_start(src, src, type, 1000, skill_lv, 0, 0, 0, skill->get_time(skill_id,skill_lv), SCFLAG_NOAVOID|SCFLAG_FIXEDTICK|SCFLAG_FIXEDRATE);
status->change_start(src, bl, type, 1000, skill_lv, 0, 0, 0, skill->get_time(skill_id,skill_lv), SCFLAG_NOAVOID|SCFLAG_FIXEDTICK|SCFLAG_FIXEDRATE);
@@ -10083,22 +10616,22 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
return 0;
}
-bool skill_castend_nodamage_id_dead_unknown(struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
+static bool skill_castend_nodamage_id_dead_unknown(struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
{
return true;
}
-bool skill_castend_nodamage_id_undead_unknown(struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
+static bool skill_castend_nodamage_id_undead_unknown(struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
{
return true;
}
-bool skill_castend_nodamage_id_mado_unknown(struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
+static bool skill_castend_nodamage_id_mado_unknown(struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
{
return false;
}
-bool skill_castend_nodamage_id_unknown(struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
+static bool skill_castend_nodamage_id_unknown(struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
{
nullpo_retr(true, skill_id);
nullpo_retr(true, skill_lv);
@@ -10111,7 +10644,7 @@ bool skill_castend_nodamage_id_unknown(struct block_list *src, struct block_list
/*==========================================
*
*------------------------------------------*/
-int skill_castend_pos(int tid, int64 tick, int id, intptr_t data)
+static int skill_castend_pos(int tid, int64 tick, int id, intptr_t data)
{
struct block_list* src = map->id2bl(id);
struct map_session_data *sd;
@@ -10153,7 +10686,7 @@ int skill_castend_pos(int tid, int64 tick, int id, intptr_t data)
skill->check_unit_range(src,ud->skillx,ud->skilly,ud->skill_id,ud->skill_lv)
)
{
- if (sd) clif->skill_fail(sd,ud->skill_id,USESKILL_FAIL_LEVEL,0);
+ if (sd) clif->skill_fail(sd, ud->skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
if( src->type&battle_config.skill_nofootset &&
@@ -10161,7 +10694,7 @@ int skill_castend_pos(int tid, int64 tick, int id, intptr_t data)
skill->check_unit_range2(src,ud->skillx,ud->skilly,ud->skill_id,ud->skill_lv)
)
{
- if (sd) clif->skill_fail(sd,ud->skill_id,USESKILL_FAIL_LEVEL,0);
+ if (sd) clif->skill_fail(sd, ud->skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
if( src->type&battle_config.land_skill_limit &&
@@ -10174,7 +10707,7 @@ int skill_castend_pos(int tid, int64 tick, int id, intptr_t data)
}
if( maxcount == 0 )
{
- if (sd) clif->skill_fail(sd,ud->skill_id,USESKILL_FAIL_LEVEL,0);
+ if (sd) clif->skill_fail(sd, ud->skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
}
@@ -10272,7 +10805,7 @@ int skill_castend_pos(int tid, int64 tick, int id, intptr_t data)
}
-int skill_check_npc_chaospanic(struct block_list *bl, va_list args)
+static int skill_check_npc_chaospanic(struct block_list *bl, va_list args)
{
const struct npc_data *nd = NULL;
@@ -10287,7 +10820,7 @@ int skill_check_npc_chaospanic(struct block_list *bl, va_list args)
}
/* skill count without self */
-int skill_count_wos(struct block_list *bl, va_list ap)
+static int skill_count_wos(struct block_list *bl, va_list ap)
{
struct block_list* src = va_arg(ap, struct block_list*);
nullpo_retr(1, bl);
@@ -10301,7 +10834,7 @@ int skill_count_wos(struct block_list *bl, va_list ap)
/*==========================================
*
*------------------------------------------*/
-int skill_castend_map (struct map_session_data *sd, uint16 skill_id, const char *mapname)
+static int skill_castend_map(struct map_session_data *sd, uint16 skill_id, const char *mapname)
{
nullpo_ret(sd);
nullpo_ret(mapname);
@@ -10374,7 +10907,7 @@ int skill_castend_map (struct map_session_data *sd, uint16 skill_id, const char
map_index = mapindex->name2id(mapname);
if(!map_index) { //Given map not found?
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
skill_failed(sd);
return 0;
}
@@ -10389,7 +10922,7 @@ int skill_castend_map (struct map_session_data *sd, uint16 skill_id, const char
maxcount--;
}
if(!maxcount) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
skill_failed(sd);
return 0;
}
@@ -10441,7 +10974,7 @@ int skill_castend_map (struct map_session_data *sd, uint16 skill_id, const char
/*==========================================
*
*------------------------------------------*/
-int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, uint16 skill_lv, int64 tick, int flag)
+static int skill_castend_pos2(struct block_list *src, int x, int y, uint16 skill_id, uint16 skill_lv, int64 tick, int flag)
{
struct map_session_data* sd;
struct status_change* sc;
@@ -10537,7 +11070,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
case SC_CHAOSPANIC:
case SC_MAELSTROM:
if (sd && map->foreachinarea(skill->check_npc_chaospanic, src->m, x-3, y-3, x+3, y+3, BL_NPC) > 0 ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
FALLTHROUGH
@@ -10685,7 +11218,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
else { // Create Basilica. Start SC on caster. Unit timer start SC on others.
if( map->foreachinrange(skill->count_wos, src, 2, BL_MOB|BL_PC, src) ) {
if( sd )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL, 0, 0);
return 1;
}
@@ -10831,55 +11364,58 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
// Slim Pitcher [Celest]
case CR_SLIMPITCHER:
if (sd) {
- int i = skill_lv%11 - 1;
- int j = pc->search_inventory(sd,skill->dbs->db[skill_id].itemid[i]);
- if (j == INDEX_NOT_FOUND || skill->dbs->db[skill_id].itemid[i] <= 0
- || sd->inventory_data[j] == NULL || sd->status.inventory[j].amount < skill->dbs->db[skill_id].amount[i]
+ int item_idx = (skill_lv - 1) % MAX_SKILL_ITEM_REQUIRE;
+ int item_id = skill->get_itemid(skill_id, item_idx);
+ int inventory_idx = pc->search_inventory(sd, item_id);
+ int bonus;
+ if (inventory_idx == INDEX_NOT_FOUND || item_id <= 0
+ || sd->inventory_data[inventory_idx] == NULL
+ || sd->status.inventory[inventory_idx].amount < skill->get_itemqty(skill_id, item_idx)
) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 1;
}
script->potion_flag = 1;
script->potion_hp = 0;
script->potion_sp = 0;
- script->run_use_script(sd, sd->inventory_data[j], 0);
+ script->run_use_script(sd, sd->inventory_data[inventory_idx], 0);
script->potion_flag = 0;
//Apply skill bonuses
- i = pc->checkskill(sd,CR_SLIMPITCHER)*10
+ bonus = pc->checkskill(sd,CR_SLIMPITCHER)*10
+ pc->checkskill(sd,AM_POTIONPITCHER)*10
+ pc->checkskill(sd,AM_LEARNINGPOTION)*5
+ pc->skillheal_bonus(sd, skill_id);
- script->potion_hp = script->potion_hp * (100+i)/100;
- script->potion_sp = script->potion_sp * (100+i)/100;
+ script->potion_hp = script->potion_hp * (100 + bonus) / 100;
+ script->potion_sp = script->potion_sp * (100 + bonus) / 100;
- if(script->potion_hp > 0 || script->potion_sp > 0) {
- i = skill->get_splash(skill_id, skill_lv);
+ if (script->potion_hp > 0 || script->potion_sp > 0) {
+ r = skill->get_splash(skill_id, skill_lv);
map->foreachinarea(skill->area_sub,
- src->m,x-i,y-i,x+i,y+i,BL_CHAR,
- src,skill_id,skill_lv,tick,flag|BCT_PARTY|BCT_GUILD|1,
+ src->m, x - r, y - r, x + r, y + r, BL_CHAR,
+ src, skill_id, skill_lv, tick, flag|BCT_PARTY|BCT_GUILD|1,
skill->castend_nodamage_id);
}
} else {
- int i = skill_lv%11 - 1;
- struct item_data *item;
- i = skill->dbs->db[skill_id].itemid[i];
- item = itemdb->search(i);
+ int item_idx = (skill_lv - 1) % MAX_SKILL_ITEM_REQUIRE;
+ int item_id = skill->get_itemid(skill_id, item_idx);
+ struct item_data *item = itemdb->search(item_id);
+ int bonus;
script->potion_flag = 1;
script->potion_hp = 0;
script->potion_sp = 0;
script->run(item->script,0,src->id,0);
script->potion_flag = 0;
- i = skill->get_max(CR_SLIMPITCHER)*10;
+ bonus = skill->get_max(CR_SLIMPITCHER)*10;
- script->potion_hp = script->potion_hp * (100+i)/100;
- script->potion_sp = script->potion_sp * (100+i)/100;
+ script->potion_hp = script->potion_hp * (100 + bonus)/100;
+ script->potion_sp = script->potion_sp * (100 + bonus)/100;
- if(script->potion_hp > 0 || script->potion_sp > 0) {
- i = skill->get_splash(skill_id, skill_lv);
+ if (script->potion_hp > 0 || script->potion_sp > 0) {
+ r = skill->get_splash(skill_id, skill_lv);
map->foreachinarea(skill->area_sub,
- src->m,x-i,y-i,x+i,y+i,BL_CHAR,
- src,skill_id,skill_lv,tick,flag|BCT_PARTY|BCT_GUILD|1,
+ src->m, x - r, y - r, x + r, y + r, BL_CHAR,
+ src, skill_id, skill_lv, tick, flag|BCT_PARTY|BCT_GUILD|1,
skill->castend_nodamage_id);
}
}
@@ -10892,7 +11428,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
r = skill->get_splash(skill_id, skill_lv);
map->foreachinarea(skill->cell_overlap, src->m, x-r, y-r, x+r, y+r, BL_SKILL, HW_GANBANTEIN, &dummy, src);
} else {
- if (sd) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ if (sd) clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 1;
}
break;
@@ -10907,15 +11443,15 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
case CR_CULTIVATION:
if (sd) {
if( map->count_oncell(src->m,x,y,BL_CHAR,0) > 0 ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 1;
}
clif->skill_poseffect(src,skill_id,skill_lv,x,y,tick);
if (rnd()%100 < 50) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
} else {
int mob_id = skill_lv < 2 ? MOBID_BLACK_MUSHROOM + rnd()%2 : MOBID_RED_PLANT + rnd()%6;
- struct mob_data *md = mob->once_spawn_sub(src, src->m, x, y, "--ja--", mob_id, "", SZ_SMALL, AI_NONE);
+ struct mob_data *md = mob->once_spawn_sub(src, src->m, x, y, DEFAULT_MOB_JNAME, mob_id, "", SZ_SMALL, AI_NONE);
int i;
if (md == NULL)
break;
@@ -10961,7 +11497,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
case AM_RESURRECTHOMUN: // [orn]
if (sd) {
if (!homun->ressurect(sd, 20*skill_lv, x, y)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
}
@@ -11005,7 +11541,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
case GC_POISONSMOKE:
if( !(sc && sc->data[SC_POISONINGWEAPON]) ) {
if( sd )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_GC_POISONINGWEAPON,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_GC_POISONINGWEAPON, 0, 0);
return 0;
}
clif->skill_damage(src,src,tick,status_get_amotion(src),0,-30000,1,skill_id,skill_lv,BDT_SKILL);
@@ -11114,7 +11650,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
map->foreachinarea(skill->area_sub,src->m,x-r,y-r,x+r,y+r,skill->splash_target(src),
src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill->castend_damage_id);
} else if( sd )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL, 0, 0);
break;
case WM_DOMINION_IMPULSE:
@@ -11223,20 +11759,22 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
return 0;
}
-void skill_castend_pos2_effect_unknown(struct block_list* src, int *x, int *y, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag) {
+static void skill_castend_pos2_effect_unknown(struct block_list *src, int *x, int *y, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
+{
if (skill->get_inf(*skill_id) & INF_SELF_SKILL)
clif->skill_nodamage(src, src, *skill_id, *skill_lv, 1);
else
clif->skill_poseffect(src, *skill_id, *skill_lv, *x, *y, *tick);
}
-bool skill_castend_pos2_unknown(struct block_list* src, int *x, int *y, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag) {
+static bool skill_castend_pos2_unknown(struct block_list *src, int *x, int *y, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
+{
ShowWarning("skill_castend_pos2: Unknown skill used:%d\n", *skill_id);
return true;
}
/// transforms 'target' skill unit into dissonance (if conditions are met)
-int skill_dance_overlap_sub(struct block_list *bl, va_list ap)
+static int skill_dance_overlap_sub(struct block_list *bl, va_list ap)
{
struct skill_unit *target = NULL;
struct skill_unit *src = va_arg(ap, struct skill_unit*);
@@ -11266,7 +11804,7 @@ int skill_dance_overlap_sub(struct block_list *bl, va_list ap)
//Does the song/dance overlapping -> dissonance check. [Skotlex]
//When flag is 0, this unit is about to be removed, cancel the dissonance effect
//When 1, this unit has been positioned, so start the cancel effect.
-int skill_dance_overlap(struct skill_unit* su, int flag)
+static int skill_dance_overlap(struct skill_unit *su, int flag)
{
if (!su || !su->group || !(su->group->state.song_dance&0x1))
return 0;
@@ -11289,7 +11827,7 @@ int skill_dance_overlap(struct skill_unit* su, int flag)
* @param flag 1 Revert
* @retval true success
**/
-bool skill_dance_switch(struct skill_unit* su, int flag)
+static bool skill_dance_switch(struct skill_unit *su, int flag)
{
static int prevflag = 1; // by default the backup is empty
static struct skill_unit_group backup;
@@ -11346,7 +11884,7 @@ bool skill_dance_switch(struct skill_unit* su, int flag)
* Initializes and sets a ground skill.
* flag&1 is used to determine when the skill 'morphs' (Warp portal becomes active, or Fire Pillar becomes active)
*------------------------------------------*/
-struct skill_unit_group* skill_unitsetting(struct block_list *src, uint16 skill_id, uint16 skill_lv, int16 x, int16 y, int flag)
+static struct skill_unit_group *skill_unitsetting(struct block_list *src, uint16 skill_id, uint16 skill_lv, int16 x, int16 y, int flag)
{
struct skill_unit_group *group;
int i,limit,val1=0,val2=0,val3=0;
@@ -11630,27 +12168,27 @@ struct skill_unit_group* skill_unitsetting(struct block_list *src, uint16 skill_
int element[5]={ELE_WIND,ELE_DARK,ELE_POISON,ELE_WATER,ELE_FIRE};
val1 = st->rhw.ele;
- if (!val1)
- val1=element[rnd()%5];
+ if (val1 == ELE_NEUTRAL)
+ val1 = element[rnd() % ARRAYLENGTH(element)];
- switch (val1)
- {
+ switch (val1) {
case ELE_FIRE:
- subunt++;
- FALLTHROUGH
+ subunt = 4;
+ break;
case ELE_WATER:
- subunt++;
- FALLTHROUGH
+ subunt = 3;
+ break;
case ELE_POISON:
- subunt++;
- FALLTHROUGH
+ subunt = 2;
+ break;
case ELE_DARK:
- subunt++;
- FALLTHROUGH
+ subunt = 1;
+ break;
case ELE_WIND:
+ subunt = 0;
break;
default:
- subunt=rnd()%5;
+ subunt = rnd() % 5;
break;
}
@@ -11867,11 +12405,11 @@ struct skill_unit_group* skill_unitsetting(struct block_list *src, uint16 skill_
return group;
}
-void skill_unitsetting1_unknown(struct block_list *src, uint16 *skill_id, uint16 *skill_lv, int16 *x, int16 *y, int *flag, int *val1, int *val2, int *val3)
+static void skill_unitsetting1_unknown(struct block_list *src, uint16 *skill_id, uint16 *skill_lv, int16 *x, int16 *y, int *flag, int *val1, int *val2, int *val3)
{
}
-void skill_unitsetting2_unknown(struct block_list *src, uint16 *skill_id, uint16 *skill_lv, int16 *x, int16 *y, int *flag, int *unit_flag, int *val1, int *val2, int *val3, struct skill_unit_group *group)
+static void skill_unitsetting2_unknown(struct block_list *src, uint16 *skill_id, uint16 *skill_lv, int16 *x, int16 *y, int *flag, int *unit_flag, int *val1, int *val2, int *val3, struct skill_unit_group *group)
{
nullpo_retv(group);
nullpo_retv(val2);
@@ -11883,7 +12421,7 @@ void skill_unitsetting2_unknown(struct block_list *src, uint16 *skill_id, uint16
/*==========================================
*
*------------------------------------------*/
-int skill_unit_onplace(struct skill_unit *src, struct block_list *bl, int64 tick)
+static int skill_unit_onplace(struct skill_unit *src, struct block_list *bl, int64 tick)
{
struct skill_unit_group *sg;
struct block_list *ss;
@@ -12107,7 +12645,7 @@ int skill_unit_onplace(struct skill_unit *src, struct block_list *bl, int64 tick
if (sg->src_id == bl->id)
break; //Does not affect the caster.
clif->changetraplook(&src->bl,UNT_USED_TRAPS);
- map->foreachinrange(skill->trap_splash,&src->bl, skill->get_splash(sg->skill_id, sg->skill_lv), sg->bl_flag, &src->bl,tick);
+ skill->trap_do_splash(&src->bl, sg->skill_id, sg->skill_lv, sg->bl_flag, tick);
sg->unit_id = UNT_USED_TRAPS;
sg->limit = DIFF_TICK32(tick,sg->tick) + 1500;
break;
@@ -12138,19 +12676,19 @@ int skill_unit_onplace(struct skill_unit *src, struct block_list *bl, int64 tick
return skill_id;
}
-void skill_unit_onplace_unknown(struct skill_unit *src, struct block_list *bl, int64 *tick)
+static void skill_unit_onplace_unknown(struct skill_unit *src, struct block_list *bl, int64 *tick)
{
}
/*==========================================
*
*------------------------------------------*/
-int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, int64 tick)
+static int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, int64 tick)
{
struct skill_unit_group *sg;
struct block_list *ss;
struct map_session_data *tsd;
- struct status_data *tstatus, *bst;
+ struct status_data *tstatus;
struct status_change *tsc, *ssc;
struct skill_unit_group_tickset *ts;
enum sc_type type;
@@ -12175,8 +12713,6 @@ int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, int6
tstatus = status->get_status_data(bl);
nullpo_ret(tstatus);
- bst = status->get_base_status(bl);
- nullpo_ret(bst);
type = status->skill2sc(sg->skill_id);
skill_id = sg->skill_id;
@@ -12265,7 +12801,7 @@ int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, int6
clif->skill_nodamage(&src->bl, bl, AL_HEAL, heal, 1);
if (tsc && tsc->data[SC_AKAITSUKI] && heal)
heal = ~heal + 1;
- status->heal(bl, heal, 0, 0);
+ status->heal(bl, heal, 0, STATUS_HEAL_DEFAULT);
if (diff >= 500)
sg->val1--;
}
@@ -12286,7 +12822,7 @@ int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, int6
if (status->isimmune(bl))
heal = 0;
clif->skill_nodamage(&src->bl, bl, AL_HEAL, heal, 1);
- status->heal(bl, heal, 0, 0);
+ status->heal(bl, heal, 0, STATUS_HEAL_DEFAULT);
}
break;
@@ -12403,7 +12939,7 @@ int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, int6
}
- map->foreachinrange(skill->trap_splash, &src->bl, skill->get_splash(sg->skill_id, sg->skill_lv), sg->bl_flag, &src->bl, tick);
+ skill->trap_do_splash(&src->bl, sg->skill_id, sg->skill_lv, sg->bl_flag, tick);
sg->unit_id = UNT_USED_TRAPS; //Changed ID so it does not invoke a for each in area again.
}
break;
@@ -12434,10 +12970,10 @@ int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, int6
case UNT_FREEZINGTRAP:
case UNT_FIREPILLAR_ACTIVE:
case UNT_CLAYMORETRAP:
- if( sg->unit_id == UNT_FIRINGTRAP || sg->unit_id == UNT_ICEBOUNDTRAP || sg->unit_id == UNT_CLAYMORETRAP )
- map->foreachinrange(skill->trap_splash,&src->bl, skill->get_splash(sg->skill_id, sg->skill_lv), sg->bl_flag|BL_SKILL|~BCT_SELF, &src->bl,tick);
+ if (sg->unit_id == UNT_FIRINGTRAP || sg->unit_id == UNT_ICEBOUNDTRAP || sg->unit_id == UNT_CLAYMORETRAP)
+ skill->trap_do_splash(&src->bl, sg->skill_id, sg->skill_lv, sg->bl_flag | BL_SKILL | ~BCT_SELF, tick);
else
- map->foreachinrange(skill->trap_splash,&src->bl, skill->get_splash(sg->skill_id, sg->skill_lv), sg->bl_flag, &src->bl,tick);
+ skill->trap_do_splash(&src->bl, sg->skill_id, sg->skill_lv, sg->bl_flag, tick);
if (sg->unit_id != UNT_FIREPILLAR_ACTIVE)
clif->changetraplook(&src->bl, sg->unit_id==UNT_LANDMINE?UNT_FIREPILLAR_ACTIVE:UNT_USED_TRAPS);
sg->limit=DIFF_TICK32(tick,sg->tick)+1500 +
@@ -12497,7 +13033,7 @@ int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, int6
if( tsc && tsc->data[SC_AKAITSUKI] && heal )
heal = ~heal + 1;
clif->skill_nodamage(&src->bl, bl, AL_HEAL, heal, 1);
- status->heal(bl, heal, 0, 0);
+ status->heal(bl, heal, 0, STATUS_HEAL_DEFAULT);
}
}
break;
@@ -12551,7 +13087,7 @@ int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, int6
case 0: // Heal 1~9999 HP
heal = rnd() %9999+1;
clif->skill_nodamage(ss,bl,AL_HEAL,heal,1);
- status->heal(bl,heal,0,0);
+ status->heal(bl, heal, 0, STATUS_HEAL_DEFAULT);
break;
case 1: // End all negative status
status->change_clear_buffs(bl,2);
@@ -12668,9 +13204,7 @@ int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, int6
case UNT_GROUNDDRIFT_POISON:
case UNT_GROUNDDRIFT_WATER:
case UNT_GROUNDDRIFT_FIRE:
- map->foreachinrange(skill->trap_splash,&src->bl,
- skill->get_splash(sg->skill_id, sg->skill_lv), sg->bl_flag,
- &src->bl,tick);
+ skill->trap_do_splash(&src->bl, sg->skill_id, sg->skill_lv, sg->bl_flag, tick);
sg->unit_id = UNT_USED_TRAPS;
//clif->changetraplook(&src->bl, UNT_FIREPILLAR_ACTIVE);
sg->limit=DIFF_TICK32(tick,sg->tick)+1500;
@@ -12698,7 +13232,7 @@ int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, int6
}
hp = tstatus->max_hp * hp / 100;
sp = tstatus->max_sp * sp / 100;
- status->heal(bl, hp, sp, 2);
+ status->heal(bl, hp, sp, STATUS_HEAL_SHOWEFFECT);
sc_start(ss, bl, type, 100, sg->skill_lv, (sg->interval * 3) + 100);
}
// Reveal hidden players every 5 seconds.
@@ -12731,7 +13265,7 @@ int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, int6
case UNT_REVERBERATION:
clif->changetraplook(&src->bl,UNT_USED_TRAPS);
- map->foreachinrange(skill->trap_splash,&src->bl, skill->get_splash(sg->skill_id, sg->skill_lv), sg->bl_flag, &src->bl,tick);
+ skill->trap_do_splash(&src->bl, sg->skill_id, sg->skill_lv, sg->bl_flag, tick);
sg->limit = DIFF_TICK32(tick,sg->tick)+1500;
sg->unit_id = UNT_USED_TRAPS;
break;
@@ -12820,7 +13354,7 @@ int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, int6
clif->skill_nodamage(&src->bl, bl, AL_HEAL, hp, 0);
if( tsc && tsc->data[SC_AKAITSUKI] && hp )
hp = ~hp + 1;
- status->heal(bl, hp, 0, 0);
+ status->heal(bl, hp, 0, STATUS_HEAL_DEFAULT);
sc_start(ss, bl, type, 100, sg->skill_lv, sg->interval + 100);
}
break;
@@ -12834,13 +13368,13 @@ int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, int6
int hp = tstatus->max_hp / 100; //+1% each 5s
if ((sg->val3) % 5) { //each 5s
if (tstatus->def_ele == skill->get_ele(sg->skill_id,sg->skill_lv)) {
- status->heal(bl, hp, 0, 2);
+ status->heal(bl, hp, 0, STATUS_HEAL_SHOWEFFECT);
} else if( (sg->unit_id == UNT_FIRE_INSIGNIA && tstatus->def_ele == ELE_EARTH)
|| (sg->unit_id == UNT_WATER_INSIGNIA && tstatus->def_ele == ELE_FIRE)
|| (sg->unit_id == UNT_WIND_INSIGNIA && tstatus->def_ele == ELE_WATER)
|| (sg->unit_id == UNT_EARTH_INSIGNIA && tstatus->def_ele == ELE_WIND)
) {
- status->heal(bl, -hp, 0, 0);
+ status->heal(bl, -hp, 0, STATUS_HEAL_DEFAULT);
}
}
sg->val3++; //timer
@@ -12852,6 +13386,8 @@ int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, int6
if (tsc && (tsc->data[SC_HALLUCINATIONWALK] || tsc->data[SC_VACUUM_EXTREME])) {
return 0;
} else {
+ struct status_data *bst = status->get_base_status(bl);
+ nullpo_ret(bst);
sg->limit -= 1000 * bst->str/20;
sc_start(ss, bl, SC_VACUUM_EXTREME, 100, sg->skill_lv, sg->limit);
@@ -12943,14 +13479,14 @@ int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, int6
return skill_id;
}
-void skill_unit_onplace_timer_unknown(struct skill_unit *src, struct block_list *bl, int64 *tick)
+static void skill_unit_onplace_timer_unknown(struct skill_unit *src, struct block_list *bl, int64 *tick)
{
}
/*==========================================
* Triggered when a char steps out of a skill cell
*------------------------------------------*/
-int skill_unit_onout(struct skill_unit *src, struct block_list *bl, int64 tick)
+static int skill_unit_onout(struct skill_unit *src, struct block_list *bl, int64 tick)
{
struct skill_unit_group *sg;
struct status_change *sc;
@@ -13016,7 +13552,7 @@ int skill_unit_onout(struct skill_unit *src, struct block_list *bl, int64 tick)
/*==========================================
* Triggered when a char steps out of a skill group (entirely) [Skotlex]
*------------------------------------------*/
-int skill_unit_onleft(uint16 skill_id, struct block_list *bl, int64 tick)
+static int skill_unit_onleft(uint16 skill_id, struct block_list *bl, int64 tick)
{
struct status_change *sc;
struct status_change_entry *sce;
@@ -13131,7 +13667,7 @@ int skill_unit_onleft(uint16 skill_id, struct block_list *bl, int64 tick)
* flag&1: Invoke onplace function (otherwise invoke onout)
* flag&4: Invoke a onleft call (the unit might be scheduled for deletion)
*------------------------------------------*/
-int skill_unit_effect(struct block_list* bl, va_list ap)
+static int skill_unit_effect(struct block_list *bl, va_list ap)
{
struct skill_unit* su = va_arg(ap,struct skill_unit*);
struct skill_unit_group* group;
@@ -13175,7 +13711,7 @@ int skill_unit_effect(struct block_list* bl, va_list ap)
/*==========================================
*
*------------------------------------------*/
-int skill_unit_ondamaged(struct skill_unit *src, struct block_list *bl, int64 damage, int64 tick)
+static int skill_unit_ondamaged(struct skill_unit *src, struct block_list *bl, int64 damage, int64 tick)
{
struct skill_unit_group *sg;
@@ -13210,7 +13746,7 @@ int skill_unit_ondamaged(struct skill_unit *src, struct block_list *bl, int64 da
/*==========================================
*
*------------------------------------------*/
-int skill_check_condition_char_sub (struct block_list *bl, va_list ap)
+static int skill_check_condition_char_sub(struct block_list *bl, va_list ap)
{
struct map_session_data *tsd = NULL;
struct block_list *src = va_arg(ap, struct block_list *);
@@ -13296,7 +13832,7 @@ int skill_check_condition_char_sub (struct block_list *bl, va_list ap)
/*==========================================
* Checks and stores partners for ensemble skills [Skotlex]
*------------------------------------------*/
-int skill_check_pc_partner(struct map_session_data *sd, uint16 skill_id, uint16* skill_lv, int range, int cast_flag)
+static int skill_check_pc_partner(struct map_session_data *sd, uint16 skill_id, uint16 *skill_lv, int range, int cast_flag)
{
static int c=0;
static int p_sd[2] = { 0, 0 };
@@ -13355,7 +13891,7 @@ int skill_check_pc_partner(struct map_session_data *sd, uint16 skill_id, uint16*
/*==========================================
*
*------------------------------------------*/
-int skill_check_condition_mob_master_sub (struct block_list *bl, va_list ap)
+static int skill_check_condition_mob_master_sub(struct block_list *bl, va_list ap)
{
const struct mob_data *md = NULL;
int src_id = va_arg(ap, int);
@@ -13380,12 +13916,12 @@ int skill_check_condition_mob_master_sub (struct block_list *bl, va_list ap)
* Determines if a given skill should be made to consume ammo
* when used by the player. [Skotlex]
*------------------------------------------*/
-int skill_isammotype (struct map_session_data *sd, int skill_id)
+static int skill_isammotype(struct map_session_data *sd, int skill_id)
{
nullpo_ret(sd);
return (
battle_config.arrow_decrement==2 &&
- (sd->status.weapon == W_BOW || (sd->status.weapon >= W_REVOLVER && sd->status.weapon <= W_GRENADE)) &&
+ (sd->weapontype == W_BOW || (sd->weapontype >= W_REVOLVER && sd->weapontype <= W_GRENADE)) &&
skill_id != HT_PHANTASMIC &&
skill->get_type(skill_id) == BF_WEAPON &&
!(skill->get_nk(skill_id)&NK_NO_DAMAGE) &&
@@ -13396,7 +13932,7 @@ int skill_isammotype (struct map_session_data *sd, int skill_id)
/**
* Checks whether a skill can be used in combos or not
**/
-bool skill_is_combo( int skill_id )
+static bool skill_is_combo(int skill_id)
{
switch( skill_id )
{
@@ -13422,7 +13958,7 @@ bool skill_is_combo( int skill_id )
return false;
}
-int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id, uint16 skill_lv)
+static int skill_check_condition_castbegin(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv)
{
struct status_data *st;
struct status_change *sc;
@@ -13492,7 +14028,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
}
if( pc_is90overweight(sd) ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_WEIGHTOVER,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_WEIGHTOVER, 0, 0);
return 0;
}
@@ -13625,15 +14161,28 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
// perform skill-specific checks (and actions)
switch( skill_id ) {
+ case MC_VENDING:
+ case ALL_BUYING_STORE:
+ if (map->list[sd->bl.m].flag.novending) {
+ clif->message(sd->fd, msg_sd(sd, 276)); // "You can't open a shop on this map"
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
+ return 0;
+ }
+ if (map->getcell(sd->bl.m, &sd->bl, sd->bl.x, sd->bl.y, CELL_CHKNOVENDING)) {
+ clif->message(sd->fd, msg_sd(sd, 204)); // "You can't open a shop on this cell."
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
+ return 0;
+ }
+ break;
case SO_SPELLFIST:
if(sd->skill_id_old != MG_FIREBOLT && sd->skill_id_old != MG_COLDBOLT && sd->skill_id_old != MG_LIGHTNINGBOLT){
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
FALLTHROUGH
case SA_CASTCANCEL:
if(sd->ud.skilltimer == INVALID_TIMER) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -13648,7 +14197,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
if(sc && sc->data[SC_RAISINGDRAGON])
skill_lv += sc->data[SC_RAISINGDRAGON]->val1;
if(sd->spiritball >= skill_lv) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -13669,7 +14218,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
if (sc->data[SC_COMBOATTACK]) {
if( sc->data[SC_COMBOATTACK]->val1 == MO_TRIPLEATTACK )
break;
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_COMBOSKILL, MO_TRIPLEATTACK);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_COMBOSKILL, MO_TRIPLEATTACK, 0);
}
return 0;
case MO_COMBOFINISH:
@@ -13678,7 +14227,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
if( sc && sc->data[SC_COMBOATTACK] ) {
if ( sc->data[SC_COMBOATTACK]->val1 == MO_CHAINCOMBO )
break;
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_COMBOSKILL, MO_CHAINCOMBO);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_COMBOSKILL, MO_CHAINCOMBO, 0);
}
return 0;
case CH_TIGERFIST:
@@ -13687,7 +14236,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
if( sc && sc->data[SC_COMBOATTACK] ) {
if ( sc->data[SC_COMBOATTACK]->val1 == MO_COMBOFINISH )
break;
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_COMBOSKILL, MO_COMBOFINISH);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_COMBOSKILL, MO_COMBOFINISH, 0);
}
return 0;
case CH_CHAINCRUSH:
@@ -13696,7 +14245,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
if( sc && sc->data[SC_COMBOATTACK] ) {
if( sc->data[SC_COMBOATTACK]->val1 == CH_TIGERFIST )
break;
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_COMBOSKILL, CH_TIGERFIST);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_COMBOSKILL, CH_TIGERFIST, 0);
}
return 0;
case MO_EXTREMITYFIST:
@@ -13717,7 +14266,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
}
} else if (!unit->can_move(&sd->bl)) {
//Placed here as ST_MOVE_ENABLE should not apply if rooted or on a combo. [Skotlex]
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -13725,7 +14274,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
case TK_MISSION:
if ((sd->job & MAPID_UPPERMASK) != MAPID_TAEKWON) {
// Cannot be used by Non-Taekwon classes
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -13737,7 +14286,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
case TK_JUMPKICK:
if ((sd->job & MAPID_UPPERMASK) == MAPID_SOUL_LINKER) {
// Soul Linkers cannot use this skill
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -13770,7 +14319,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
int time;
if(!(sc && sc->data[SC_DANCING]))
{
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
time = 1000*(sc->data[SC_DANCING]->val3>>16);
@@ -13779,7 +14328,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
(sc->data[SC_DANCING]->val1>>16)) //Dance Skill LV
- time < skill->get_time2(skill_id,skill_lv))
{
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
}
@@ -13788,7 +14337,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
case PR_BENEDICTIO:
if (skill->check_pc_partner(sd, skill_id, &skill_lv, 1, 0) < 2)
{
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -13806,7 +14355,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
case CG_HERMODE:
if(!npc->check_areanpc(1,sd->bl.m,sd->bl.x,sd->bl.y,skill->get_splash(skill_id, skill_lv)))
{
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -13818,7 +14367,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
int x = sd->bl.x+(i%size-range);
int y = sd->bl.y+(i/size-range);
if (map->getcell(sd->bl.m, &sd->bl, x, y, CELL_CHKWALL)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
}
@@ -13826,10 +14375,10 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
break;
case PR_REDEMPTIO:
{
- int exp;
- if( ((exp = pc->nextbaseexp(sd)) > 0 && get_percentage(sd->status.base_exp, exp) < 1) ||
- ((exp = pc->nextjobexp(sd)) > 0 && get_percentage(sd->status.job_exp, exp) < 1)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); //Not enough exp.
+ int64 exp;
+ if (((exp = pc->nextbaseexp(sd)) > 0 && get_percentage64(sd->status.base_exp, exp) < 1) ||
+ ((exp = pc->nextjobexp(sd)) > 0 && get_percentage64(sd->status.job_exp, exp) < 1)) {
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0); //Not enough exp.
return 0;
}
break;
@@ -13838,7 +14387,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
case AM_TWILIGHT3:
if (!party->skill_check(sd, sd->status.party_id, skill_id, skill_lv))
{
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -13849,7 +14398,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
break;
if (sd->bl.m == sd->feel_map[skill_id-SG_SUN_WARM].m)
break;
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
break;
case SG_SUN_COMFORT:
@@ -13860,7 +14409,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
if (sd->bl.m == sd->feel_map[skill_id-SG_SUN_COMFORT].m &&
(battle_config.allow_skill_without_day || pc->sg_info[skill_id-SG_SUN_COMFORT].day_func()))
break;
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
case SG_FUSION:
if (sc && sc->data[SC_SOULLINK] && sc->data[SC_SOULLINK]->val2 == SL_STAR)
@@ -13869,7 +14418,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
//Only invoke on skill begin cast (instant cast skill). [Kevin]
if( require.sp > 0 ) {
if (st->sp < (unsigned int)require.sp)
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_SP_INSUFFICIENT,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_SP_INSUFFICIENT, 0, 0);
else
status_zap(&sd->bl, 0, require.sp);
}
@@ -13878,7 +14427,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
case GD_REGENERATION:
case GD_RESTORE:
if (!map_flag_gvg2(sd->bl.m)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
FALLTHROUGH
@@ -13890,7 +14439,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
case GS_GLITTERING:
if(sd->spiritball >= 10) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -13901,13 +14450,13 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
#else
if (st->hp < 2) {
#endif
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
FALLTHROUGH
case NJ_BUNSINJYUTSU:
if (!(sc && sc->data[SC_NJ_NEN])) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -13915,7 +14464,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
case NJ_ZENYNAGE:
case KO_MUCHANAGE:
if(sd->status.zeny < require.zeny) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_MONEY,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_MONEY, 0, 0);
return 0;
}
break;
@@ -13925,14 +14474,14 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
break;
case AM_CALLHOMUN: //Can't summon if a hom is already out
if (sd->status.hom_id && sd->hd && !sd->hd->homunculus.vaporize) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
case AM_REST: //Can't vapo homun if you don't have an active homun or it's hp is < 80%
if (!homun_alive(sd->hd) || sd->hd->battle_status.hp < (sd->hd->battle_status.max_hp*80/100))
{
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -13941,12 +14490,12 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
**/
case AB_ANCILLA:
{
- int count = 0, i;
- for( i = 0; i < MAX_INVENTORY; i ++ )
+ int count = 0;
+ for (int i = 0; i < sd->status.inventorySize; i ++)
if (sd->status.inventory[i].nameid == ITEMID_ANSILA)
count += sd->status.inventory[i].amount;
if( count >= 3 ) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_ANCILLA_NUMOVER, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_ANCILLA_NUMOVER, 0, 0);
return 0;
}
}
@@ -13966,8 +14515,8 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
&& ((idx = pc->search_inventory(sd,require.itemid[0])) == INDEX_NOT_FOUND
|| sd->status.inventory[idx].amount < require.amount[0])
) {
- //clif->skill_fail(sd,skill_id,USESKILL_FAIL_NEED_ITEM,require.amount[0],require.itemid[0]);
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ //clif->skill_fail(sd, skill_id, USESKILL_FAIL_NEED_ITEM, require.amount[0], 0, require.itemid[0]);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -13987,7 +14536,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
switch(skill_id){
case WL_TETRAVORTEX:
if( i < 4 ){
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_CONDITION,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_CONDITION, 0, 0);
return 0;
}
break;
@@ -13996,13 +14545,13 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
if( sc && sc->data[j] )
i++;
if( i == 0 ){
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_SUMMON_NONE,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_SUMMON_NONE, 0, 0);
return 0;
}
break;
default:
if( i == 5 ){
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_SUMMON,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_SUMMON, 0, 0);
return 0;
}
}
@@ -14013,14 +14562,14 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
**/
case GC_HALLUCINATIONWALK:
if( sc && (sc->data[SC_HALLUCINATIONWALK] || sc->data[SC_HALLUCINATIONWALK_POSTDELAY]) ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
case GC_COUNTERSLASH:
case GC_WEAPONCRUSH:
if( !(sc && sc->data[SC_COMBOATTACK] && sc->data[SC_COMBOATTACK]->val1 == GC_WEAPONBLOCKING) ) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_GC_WEAPONBLOCKING, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_GC_WEAPONBLOCKING, 0, 0);
return 0;
}
break;
@@ -14029,25 +14578,25 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
**/
case RA_WUGMASTERY:
if( pc_isfalcon(sd) || pc_isridingwug(sd) || sd->sc.data[SC__GROOMY] ) {
- clif->skill_fail(sd,skill_id,sd->sc.data[SC__GROOMY]?USESKILL_FAIL_MANUAL_NOTIFY:USESKILL_FAIL_CONDITION,0);
+ clif->skill_fail(sd, skill_id, sd->sc.data[SC__GROOMY] ? USESKILL_FAIL_MANUAL_NOTIFY : USESKILL_FAIL_CONDITION, 0, 0);
return 0;
}
break;
case RA_WUGSTRIKE:
if( !pc_iswug(sd) && !pc_isridingwug(sd) ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_CONDITION,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_CONDITION, 0, 0);
return 0;
}
break;
case RA_WUGRIDER:
if( pc_isfalcon(sd) || ( !pc_isridingwug(sd) && !pc_iswug(sd) ) ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_CONDITION,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_CONDITION, 0, 0);
return 0;
}
break;
case RA_WUGDASH:
if(!pc_isridingwug(sd)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_CONDITION,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_CONDITION, 0, 0);
return 0;
}
break;
@@ -14056,13 +14605,13 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
**/
case LG_BANDING:
if( sc && sc->data[SC_INSPIRATION] ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
case LG_PRESTIGE:
if( sc && (sc->data[SC_BANDING] || sc->data[SC_INSPIRATION]) ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -14071,7 +14620,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
if( sc && sc->data[SC_INSPIRATION] )
return 1; // Don't check for partner.
if( !(sc && sc->data[SC_BANDING]) ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL, 0, 0);
return 0;
}
if( sc->data[SC_BANDING] &&
@@ -14082,12 +14631,12 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
if( sc && sc->data[SC_COMBOATTACK] ) {
if( sc->data[SC_COMBOATTACK]->val1 == SR_DRAGONCOMBO )
break;
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_COMBOSKILL, SR_DRAGONCOMBO);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_COMBOSKILL, SR_DRAGONCOMBO, 0);
}
return 0;
case SR_CRESCENTELBOW:
if( sc && sc->data[SC_CRESCENTELBOW] ) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_DUPLICATE, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_DUPLICATE, 0, 0);
return 0;
}
break;
@@ -14104,7 +14653,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
if( sd->spiritball > 0 )
sd->spiritball_old = require.spiritball = sd->spiritball;
else {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -14115,7 +14664,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
case SC_MANHOLE:
case SC_DIMENSIONDOOR:
if( sc && sc->data[SC_MAGNETICFIELD] ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -14123,7 +14672,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
int count;
count = skill->check_pc_partner(sd, skill_id, &skill_lv, skill->get_splash(skill_id,skill_lv), 0);
if( count < 1 ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_NEED_HELPER,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_NEED_HELPER, 0, 0);
return 0;
} else
require.sp -= require.sp * 20 * count / 100; // -20% each W/M in the party.
@@ -14133,7 +14682,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
if (sd->equip_index[EQI_HAND_R] < 0
|| !itemid_is_pilebunker(sd->status.inventory[sd->equip_index[EQI_HAND_R]].nameid)
) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_THIS_WEAPON, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_THIS_WEAPON, 0, 0);
return 0;
}
break;
@@ -14141,7 +14690,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
if (( sd->equip_index[EQI_ACC_L] >= 0 && sd->status.inventory[sd->equip_index[EQI_ACC_L]].nameid == ITEMID_HOVERING_BOOSTER ) ||
( sd->equip_index[EQI_ACC_R] >= 0 && sd->status.inventory[sd->equip_index[EQI_ACC_R]].nameid == ITEMID_HOVERING_BOOSTER ));
else {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -14149,25 +14698,25 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
case SO_ELECTRICWALK: // Can't be casted until you've walked all cells.
if( sc && sc->data[SC_PROPERTYWALK] &&
sc->data[SC_PROPERTYWALK]->val3 < skill->get_maxcount(sc->data[SC_PROPERTYWALK]->val1,sc->data[SC_PROPERTYWALK]->val2) ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
case SO_EL_CONTROL:
if( !sd->status.ele_id || !sd->ed ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_EL_SUMMON,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_EL_SUMMON, 0, 0);
return 0;
}
break;
case RETURN_TO_ELDICASTES:
if( pc_ismadogear(sd) ) { //Cannot be used if Mado is equipped.
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
case CR_REFLECTSHIELD:
if( sc && sc->data[SC_KYOMU] && rnd()%100 < 5 * sc->data[SC_KYOMU]->val1 ){
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -14176,14 +14725,14 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
case KO_KAZEHU_SEIRAN:
case KO_DOHU_KOUKAI:
if (sd->charm_type == skill->get_ele(skill_id, skill_lv) && sd->charm_count >= MAX_SPIRITCHARM) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_SUMMON, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_SUMMON, 0, 0);
return 0;
}
break;
case KO_KAIHOU:
case KO_ZENKAI:
if (sd->charm_type == CHARM_TYPE_NONE || sd->charm_count <= 0) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_SUMMON,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_SUMMON, 0, 0);
return 0;
}
break;
@@ -14198,67 +14747,67 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
switch(require.state) {
case ST_HIDING:
if(!(sc && sc->option&OPTION_HIDE)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
case ST_CLOAKING:
if(!pc_iscloaking(sd)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
case ST_HIDDEN:
if(!pc_ishiding(sd)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
case ST_RIDING:
if (!pc_isridingpeco(sd) && !pc_isridingdragon(sd)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
case ST_FALCON:
if(!pc_isfalcon(sd)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
case ST_CARTBOOST:
if(!(sc && sc->data[SC_CARTBOOST])) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
FALLTHROUGH
case ST_CART:
if(!pc_iscarton(sd)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_CART,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_CART, 0, 0);
return 0;
}
break;
case ST_SHIELD:
- if(sd->status.shield <= 0) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ if (!sd->has_shield) {
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
case ST_SIGHT:
if(!(sc && sc->data[SC_SIGHT])) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
case ST_EXPLOSIONSPIRITS:
if(!(sc && sc->data[SC_EXPLOSIONSPIRITS])) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_EXPLOSIONSPIRITS,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_EXPLOSIONSPIRITS, 0, 0);
return 0;
}
break;
case ST_RECOV_WEIGHT_RATE:
if(battle_config.natural_heal_weight_rate <= 100 && sd->weight*100/sd->max_weight >= (unsigned int)battle_config.natural_heal_weight_rate) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -14267,7 +14816,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
sd->ud.canmove_tick = timer->gettick(); //When using a combo, cancel the can't move delay to enable the skill. [Skotlex]
if (!unit->can_move(&sd->bl)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -14276,65 +14825,65 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
break;
if (map->getcell(sd->bl.m, &sd->bl, sd->bl.x, sd->bl.y, CELL_CHKWATER))
break;
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
case ST_RIDINGDRAGON:
if( !pc_isridingdragon(sd) ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_DRAGON,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_DRAGON, 0, 0);
return 0;
}
break;
case ST_WUG:
if( !pc_iswug(sd) ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
case ST_RIDINGWUG:
if( !pc_isridingwug(sd) ){
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
case ST_MADO:
if( !pc_ismadogear(sd) ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_MADOGEAR,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_MADOGEAR, 0, 0);
return 0;
}
break;
case ST_ELEMENTALSPIRIT:
if(!sd->ed) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_EL_SUMMON,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_EL_SUMMON, 0, 0);
return 0;
}
break;
case ST_POISONINGWEAPON:
if (!(sc && sc->data[SC_POISONINGWEAPON])) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_GC_POISONINGWEAPON, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_GC_POISONINGWEAPON, 0, 0);
return 0;
}
break;
case ST_ROLLINGCUTTER:
if (!(sc && sc->data[SC_ROLLINGCUTTER])) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_CONDITION, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_CONDITION, 0, 0);
return 0;
}
break;
case ST_MH_FIGHTING:
if (!(sc && sc->data[SC_STYLE_CHANGE] && sc->data[SC_STYLE_CHANGE]->val2 == MH_MD_FIGHTING)){
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
FALLTHROUGH
case ST_MH_GRAPPLING:
if (!(sc && sc->data[SC_STYLE_CHANGE] && sc->data[SC_STYLE_CHANGE]->val2 == MH_MD_GRAPPLING)){
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
FALLTHROUGH
case ST_PECO:
if (!pc_isridingpeco(sd)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -14343,27 +14892,27 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
if(require.mhp > 0 && get_percentage(st->hp, st->max_hp) > require.mhp) {
//mhp is the max-hp-requirement, that is,
//you must have this % or less of HP to cast it.
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_HP_INSUFFICIENT,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_HP_INSUFFICIENT, 0, 0);
return 0;
}
if( require.weapon && !pc_check_weapontype(sd,require.weapon) ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_THIS_WEAPON,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_THIS_WEAPON, 0, 0);
return 0;
}
if( require.sp > 0 && st->sp < (unsigned int)require.sp) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_SP_INSUFFICIENT,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_SP_INSUFFICIENT, 0, 0);
return 0;
}
if( require.zeny > 0 && sd->status.zeny < require.zeny ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_MONEY,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_MONEY, 0, 0);
return 0;
}
if( require.spiritball > 0 && sd->spiritball < require.spiritball) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_SPIRITS,require.spiritball);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_SPIRITS, require.spiritball, 0);
return 0;
}
@@ -14378,27 +14927,27 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
return 1;
}
-int skill_check_condition_castbegin_off_unknown(struct status_change *sc, uint16 *skill_id)
+static int skill_check_condition_castbegin_off_unknown(struct status_change *sc, uint16 *skill_id)
{
return -1;
}
-int skill_check_condition_castbegin_mount_unknown(struct status_change *sc, uint16 *skill_id)
+static int skill_check_condition_castbegin_mount_unknown(struct status_change *sc, uint16 *skill_id)
{
return 0;
}
-int skill_check_condition_castbegin_madogear_unknown(struct status_change *sc, uint16 *skill_id)
+static int skill_check_condition_castbegin_madogear_unknown(struct status_change *sc, uint16 *skill_id)
{
return 0;
}
-int skill_check_condition_castbegin_unknown(struct status_change *sc, uint16 *skill_id)
+static int skill_check_condition_castbegin_unknown(struct status_change *sc, uint16 *skill_id)
{
return -1;
}
-int skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id, uint16 skill_lv)
+static int skill_check_condition_castend(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv)
{
struct skill_condition require;
struct status_data *st;
@@ -14445,7 +14994,7 @@ int skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id,
if( sd->skillitem == skill_id )
return 1;
if( pc_is90overweight(sd) ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_WEIGHTOVER,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_WEIGHTOVER, 0, 0);
return 0;
}
@@ -14479,7 +15028,7 @@ int skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id,
|| (skill_id==AM_CANNIBALIZE && c != i && battle_config.summon_flora&2)
) {
//Fails when: exceed max limit. There are other plant types already out.
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
}
@@ -14499,7 +15048,7 @@ int skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id,
map->foreachinmap(skill->check_condition_mob_master_sub, sd->bl.m, BL_MOB, sd->bl.id, MOBID_SILVERSNIPER, skill_id, &c);
}
if( c >= maxcount ) {
- clif->skill_fail(sd , skill_id, USESKILL_FAIL_SUMMON, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_SUMMON, 0, 0);
return 0;
}
}
@@ -14509,14 +15058,15 @@ int skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id,
int c = 0;
i = map->foreachinmap(skill->check_condition_mob_master_sub, sd->bl.m, BL_MOB, sd->bl.id, MOBID_KO_KAGE, skill_id, &c);
if( c >= skill->get_maxcount(skill_id,skill_lv) || c != i) {
- clif->skill_fail(sd , skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
}
break;
default:
- skill->check_condition_castend_unknown(sd, &skill_id, &skill_lv);
- break;
+ if (!skill->check_condition_castend_unknown(sd, &skill_id, &skill_lv))
+ break;
+ return 0;
}
st = &sd->battle_status;
@@ -14524,19 +15074,19 @@ int skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id,
require = skill->get_requirement(sd,skill_id,skill_lv);
if( require.hp > 0 && st->hp <= (unsigned int)require.hp) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_HP_INSUFFICIENT,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_HP_INSUFFICIENT, 0, 0);
return 0;
}
if( require.weapon && !pc_check_weapontype(sd,require.weapon) ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_THIS_WEAPON,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_THIS_WEAPON, 0, 0);
return 0;
}
if( require.ammo ) { //Skill requires stuff equipped in the arrow slot.
if((i=sd->equip_index[EQI_AMMO]) < 0 || !sd->inventory_data[i] ) {
if( require.ammo&1<<8 )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_CANONBALL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_CANONBALL, 0, 0);
else
clif->arrow_fail(sd,0);
return 0;
@@ -14549,10 +15099,10 @@ int skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id,
clif->messagecolor_self(sd->fd, COLOR_RED, e_msg);
return 0;
}
- if (!(require.ammo&1<<sd->inventory_data[i]->look)) { //Ammo type check. Send the "wrong weapon type" message
+ if (!(require.ammo&1<<sd->inventory_data[i]->subtype)) { //Ammo type check. Send the "wrong weapon type" message
//which is the closest we have to wrong ammo type. [Skotlex]
clif->arrow_fail(sd,0); //Haplo suggested we just send the equip-arrows message instead. [Skotlex]
- //clif->skill_fail(sd,skill_id,USESKILL_FAIL_THIS_WEAPON,0);
+ //clif->skill_fail(sd, skill_id, USESKILL_FAIL_THIS_WEAPON, 0, 0);
return 0;
}
}
@@ -14591,11 +15141,11 @@ int skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id,
cause = USESKILL_FAIL_NEED_EQUIPMENT;
/* Fall through */
default:
- clif->skill_fail(sd, skill_id, cause, max(1,require.amount[i])|(require.itemid[i] << 16));
+ clif->skill_fail(sd, skill_id, cause, max(1, require.amount[i]), require.itemid[i]);
return 0;
}
}
- clif->skill_fail(sd, skill_id, cause, 0);
+ clif->skill_fail(sd, skill_id, cause, 0, 0);
return 0;
}
}
@@ -14603,13 +15153,14 @@ int skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id,
return 1;
}
-void skill_check_condition_castend_unknown(struct map_session_data* sd, uint16 *skill_id, uint16 *skill_lv)
+static bool skill_check_condition_castend_unknown(struct map_session_data *sd, uint16 *skill_id, uint16 *skill_lv)
{
+ return false;
}
// type&2: consume items (after skill was used)
// type&1: consume the others (before skill was used)
-int skill_consume_requirement(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv, short type)
+static int skill_consume_requirement(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv, short type)
{
struct skill_condition req;
@@ -14691,7 +15242,7 @@ int skill_consume_requirement(struct map_session_data *sd, uint16 skill_id, uint
return 1;
}
-struct skill_condition skill_get_requirement(struct map_session_data* sd, uint16 skill_id, uint16 skill_lv)
+static struct skill_condition skill_get_requirement(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv)
{
struct skill_condition req;
struct status_data *st;
@@ -14818,7 +15369,8 @@ struct skill_condition skill_get_requirement(struct map_session_data* sd, uint16
}
for( i = 0; i < MAX_SKILL_ITEM_REQUIRE; i++ ) {
- if( (skill_id == AM_POTIONPITCHER || skill_id == CR_SLIMPITCHER || skill_id == CR_CULTIVATION) && i != skill_lv%11 - 1 )
+ int item_idx = (skill_lv - 1) % MAX_SKILL_ITEM_REQUIRE;
+ if ((skill_id == AM_POTIONPITCHER || skill_id == CR_SLIMPITCHER || skill_id == CR_CULTIVATION) && i != item_idx)
continue;
switch( skill_id ) {
@@ -15021,24 +15573,24 @@ struct skill_condition skill_get_requirement(struct map_session_data* sd, uint16
return req;
}
-bool skill_get_requirement_off_unknown(struct status_change *sc, uint16 *skill_id)
+static bool skill_get_requirement_off_unknown(struct status_change *sc, uint16 *skill_id)
{
return false;
}
-bool skill_get_requirement_item_unknown(struct status_change *sc, struct map_session_data* sd, uint16 *skill_id, uint16 *skill_lv, uint16 *idx, int *i)
+static bool skill_get_requirement_item_unknown(struct status_change *sc, struct map_session_data *sd, uint16 *skill_id, uint16 *skill_lv, uint16 *idx, int *i)
{
return false;
}
-void skill_get_requirement_unknown(struct status_change *sc, struct map_session_data* sd, uint16 *skill_id, uint16 *skill_lv, struct skill_condition *req)
+static void skill_get_requirement_unknown(struct status_change *sc, struct map_session_data *sd, uint16 *skill_id, uint16 *skill_lv, struct skill_condition *req)
{
}
/*==========================================
* Does cast-time reductions based on dex, item bonuses and config setting
*------------------------------------------*/
-int skill_castfix (struct block_list *bl, uint16 skill_id, uint16 skill_lv)
+static int skill_castfix(struct block_list *bl, uint16 skill_id, uint16 skill_lv)
{
int time = skill->get_cast(skill_id, skill_lv);
@@ -15089,7 +15641,7 @@ int skill_castfix (struct block_list *bl, uint16 skill_id, uint16 skill_lv)
/*==========================================
* Does cast-time reductions based on sc data.
*------------------------------------------*/
-int skill_castfix_sc (struct block_list *bl, int time)
+static int skill_castfix_sc(struct block_list *bl, int time)
{
struct status_change *sc = status->get_sc(bl);
@@ -15125,7 +15677,7 @@ int skill_castfix_sc (struct block_list *bl, int time)
return time;
}
-int skill_vfcastfix(struct block_list *bl, double time, uint16 skill_id, uint16 skill_lv)
+static int skill_vfcastfix(struct block_list *bl, double time, uint16 skill_id, uint16 skill_lv)
{
#ifdef RENEWAL_CAST
struct status_change *sc = status->get_sc(bl);
@@ -15268,7 +15820,7 @@ int skill_vfcastfix(struct block_list *bl, double time, uint16 skill_id, uint16
/*==========================================
* Does delay reductions based on dex/agi, sc data, item bonuses, ...
*------------------------------------------*/
-int skill_delay_fix (struct block_list *bl, uint16 skill_id, uint16 skill_lv)
+static int skill_delay_fix(struct block_list *bl, uint16 skill_id, uint16 skill_lv)
{
int delaynodex = skill->get_delaynodex(skill_id, skill_lv);
int time = skill->get_delay(skill_id, skill_lv);
@@ -15368,7 +15920,7 @@ struct square {
int val2[5];
};
-void skill_brandishspear_first (struct square *tc, uint8 dir, int16 x, int16 y)
+static void skill_brandishspear_first(struct square *tc, uint8 dir, int16 x, int16 y)
{
nullpo_retv(tc);
@@ -15464,7 +16016,7 @@ void skill_brandishspear_first (struct square *tc, uint8 dir, int16 x, int16 y)
}
-void skill_brandishspear_dir (struct square* tc, uint8 dir, int are)
+static void skill_brandishspear_dir(struct square *tc, uint8 dir, int are)
{
int c;
nullpo_retv(tc);
@@ -15483,7 +16035,7 @@ void skill_brandishspear_dir (struct square* tc, uint8 dir, int are)
}
}
-void skill_brandishspear(struct block_list* src, struct block_list* bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag)
+static void skill_brandishspear(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag)
{
int c,n=4;
uint8 dir;
@@ -15538,7 +16090,7 @@ void skill_brandishspear(struct block_list* src, struct block_list* bl, uint16 s
/*==========================================
* Weapon Repair [Celest/DracoRPG]
*------------------------------------------*/
-void skill_repairweapon (struct map_session_data *sd, int idx)
+static void skill_repairweapon(struct map_session_data *sd, int idx)
{
int material;
int materials[4] = {
@@ -15555,15 +16107,18 @@ void skill_repairweapon (struct map_session_data *sd, int idx)
if ( !( target_sd = map->id2sd(sd->menuskill_val) ) ) //Failed....
return;
- if( idx == 0xFFFF ) // No item selected ('Cancel' clicked)
+ if (idx == 0xFFFF || idx == -1) // No item selected ('Cancel' clicked)
return;
- if( idx < 0 || idx >= MAX_INVENTORY )
+ if (idx < 0 || idx >= sd->status.inventorySize)
return; //Invalid index??
item = &target_sd->status.inventory[idx];
if( item->nameid <= 0 || (item->attribute & ATTR_BROKEN) == 0 )
return; //Again invalid item....
+ if (item->card[0] == CARD0_PET)
+ return;
+
if( sd != target_sd && !battle->check_range(&sd->bl,&target_sd->bl, skill->get_range2(&sd->bl, sd->menuskill_id,sd->menuskill_val2) ) ){
clif->item_repaireffect(sd,idx,1);
return;
@@ -15574,7 +16129,7 @@ void skill_repairweapon (struct map_session_data *sd, int idx)
else
material = materials[2]; // Armors consume 1 Steel
if (pc->search_inventory(sd,material) == INDEX_NOT_FOUND) {
- clif->skill_fail(sd,sd->menuskill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, sd->menuskill_id, USESKILL_FAIL_LEVEL, 0, 0);
return;
}
@@ -15583,7 +16138,7 @@ void skill_repairweapon (struct map_session_data *sd, int idx)
item->attribute |= ATTR_BROKEN;
item->attribute ^= ATTR_BROKEN; /* clear broken state */
- clif->equiplist(target_sd);
+ clif->equipList(target_sd);
pc->delitem(sd, pc->search_inventory(sd, material), 1, 0, DELITEM_NORMAL, LOG_TYPE_CONSUME); // FIXME: is this the correct reason flag?
@@ -15596,13 +16151,13 @@ void skill_repairweapon (struct map_session_data *sd, int idx)
/*==========================================
* Item Appraisal
*------------------------------------------*/
-void skill_identify (struct map_session_data *sd, int idx)
+static void skill_identify(struct map_session_data *sd, int idx)
{
int flag=1;
nullpo_retv(sd);
sd->state.workinprogress = 0;
- if(idx >= 0 && idx < MAX_INVENTORY) {
+ if (idx >= 0 && idx < sd->status.inventorySize) {
if(sd->status.inventory[idx].nameid > 0 && sd->status.inventory[idx].identify == 0 ){
flag=0;
sd->status.inventory[idx].identify=1;
@@ -15614,11 +16169,11 @@ void skill_identify (struct map_session_data *sd, int idx)
/*==========================================
* Weapon Refine [Celest]
*------------------------------------------*/
-void skill_weaponrefine (struct map_session_data *sd, int idx)
+static void skill_weaponrefine(struct map_session_data *sd, int idx)
{
nullpo_retv(sd);
- if (idx >= 0 && idx < MAX_INVENTORY) {
+ if (idx >= 0 && idx < sd->status.inventorySize) {
struct item *item;
struct item_data *ditem = sd->inventory_data[idx];
item = &sd->status.inventory[idx];
@@ -15634,7 +16189,7 @@ void skill_weaponrefine (struct map_session_data *sd, int idx)
int i = 0, per;
if( ditem->flag.no_refine ) {
// if the item isn't refinable
- clif->skill_fail(sd,sd->menuskill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, sd->menuskill_id, USESKILL_FAIL_LEVEL, 0, 0);
return;
}
if( item->refine >= sd->menuskill_val || item->refine >= 10 ){
@@ -15646,7 +16201,7 @@ void skill_weaponrefine (struct map_session_data *sd, int idx)
return;
}
- per = status->get_refine_chance(ditem->wlv, (int)item->refine) * 10;
+ per = status->get_refine_chance(ditem->wlv, (int)item->refine, REFINE_CHANCE_TYPE_NORMAL) * 10;
// Aegis leaked formula. [malufett]
if (sd->status.class == JOB_MECHANIC_T)
@@ -15666,7 +16221,7 @@ void skill_weaponrefine (struct map_session_data *sd, int idx)
}
clif->delitem(sd, idx, 1, DELITEM_NORMAL);
clif->upgrademessage(sd->fd, 0,item->nameid);
- clif->inventorylist(sd);
+ clif->inventoryList(sd);
clif->refine(sd->fd,0,idx,item->refine);
if (ep)
pc->equipitem(sd,idx,ep);
@@ -15703,7 +16258,7 @@ void skill_weaponrefine (struct map_session_data *sd, int idx)
/*==========================================
*
*------------------------------------------*/
-int skill_autospell (struct map_session_data *sd, uint16 skill_id)
+static int skill_autospell(struct map_session_data *sd, uint16 skill_id)
{
uint16 skill_lv;
int maxlv=1,lv;
@@ -15746,7 +16301,7 @@ int skill_autospell (struct map_session_data *sd, uint16 skill_id)
/*==========================================
* Sitting skills functions.
*------------------------------------------*/
-int skill_sit_count(struct block_list *bl, va_list ap)
+static int skill_sit_count(struct block_list *bl, va_list ap)
{
int type = va_arg(ap, int);
struct map_session_data *sd = NULL;
@@ -15767,7 +16322,7 @@ int skill_sit_count(struct block_list *bl, va_list ap)
return 0;
}
-int skill_sit_in(struct block_list *bl, va_list ap)
+static int skill_sit_in(struct block_list *bl, va_list ap)
{
int type = va_arg(ap, int);
struct map_session_data *sd = NULL;
@@ -15791,7 +16346,7 @@ int skill_sit_in(struct block_list *bl, va_list ap)
return 0;
}
-int skill_sit_out(struct block_list *bl, va_list ap)
+static int skill_sit_out(struct block_list *bl, va_list ap)
{
int type = va_arg(ap, int);
struct map_session_data *sd = NULL;
@@ -15810,7 +16365,7 @@ int skill_sit_out(struct block_list *bl, va_list ap)
return 0;
}
-int skill_sit (struct map_session_data *sd, int type)
+static int skill_sit(struct map_session_data *sd, int type)
{
int flag = 0;
int range = 0, lv;
@@ -15850,7 +16405,7 @@ int skill_sit (struct map_session_data *sd, int type)
/*==========================================
*
*------------------------------------------*/
-int skill_frostjoke_scream(struct block_list *bl, va_list ap)
+static int skill_frostjoke_scream(struct block_list *bl, va_list ap)
{
struct block_list *src;
uint16 skill_id,skill_lv;
@@ -15883,7 +16438,7 @@ int skill_frostjoke_scream(struct block_list *bl, va_list ap)
/*==========================================
*
*------------------------------------------*/
-void skill_unitsetmapcell (struct skill_unit *src, uint16 skill_id, uint16 skill_lv, cell_t cell, bool flag)
+static void skill_unitsetmapcell(struct skill_unit *src, uint16 skill_id, uint16 skill_lv, cell_t cell, bool flag)
{
int range = skill->get_unit_range(skill_id,skill_lv);
int x,y;
@@ -15897,7 +16452,7 @@ void skill_unitsetmapcell (struct skill_unit *src, uint16 skill_id, uint16 skill
/*==========================================
*
*------------------------------------------*/
-int skill_attack_area(struct block_list *bl, va_list ap)
+static int skill_attack_area(struct block_list *bl, va_list ap)
{
struct block_list *src,*dsrc;
int atk_type,skill_id,skill_lv,flag,type;
@@ -15940,7 +16495,7 @@ int skill_attack_area(struct block_list *bl, va_list ap)
/*==========================================
*
*------------------------------------------*/
-int skill_clear_group (struct block_list *bl, int flag)
+static int skill_clear_group(struct block_list *bl, int flag)
{
struct unit_data *ud = unit->bl2ud(bl);
struct skill_unit_group *group[MAX_SKILLUNITGROUP];
@@ -15984,7 +16539,7 @@ int skill_clear_group (struct block_list *bl, int flag)
/*==========================================
* Returns the first element field found [Skotlex]
*------------------------------------------*/
-struct skill_unit_group *skill_locate_element_field(struct block_list *bl)
+static struct skill_unit_group *skill_locate_element_field(struct block_list *bl)
{
struct unit_data *ud = unit->bl2ud(bl);
int i;
@@ -16007,7 +16562,7 @@ struct skill_unit_group *skill_locate_element_field(struct block_list *bl)
}
// for graffiti cleaner [Valaris]
-int skill_graffitiremover(struct block_list *bl, va_list ap)
+static int skill_graffitiremover(struct block_list *bl, va_list ap)
{
struct skill_unit *su = NULL;
@@ -16023,7 +16578,7 @@ int skill_graffitiremover(struct block_list *bl, va_list ap)
return 0;
}
-int skill_greed(struct block_list *bl, va_list ap)
+static int skill_greed(struct block_list *bl, va_list ap)
{
struct block_list *src = va_arg(ap, struct block_list *);
@@ -16040,7 +16595,7 @@ int skill_greed(struct block_list *bl, va_list ap)
}
//For Ranger's Detonator [Jobbie/3CeAM]
-int skill_detonator(struct block_list *bl, va_list ap)
+static int skill_detonator(struct block_list *bl, va_list ap)
{
struct skill_unit *su = NULL;
struct block_list *src = va_arg(ap,struct block_list *);
@@ -16074,10 +16629,10 @@ int skill_detonator(struct block_list *bl, va_list ap)
case UNT_CLAYMORETRAP:
case UNT_FIRINGTRAP:
case UNT_ICEBOUNDTRAP:
- map->foreachinrange(skill->trap_splash,bl,skill->get_splash(su->group->skill_id,su->group->skill_lv),su->group->bl_flag|BL_SKILL|~BCT_SELF,bl,su->group->tick);
+ skill->trap_do_splash(bl, su->group->skill_id, su->group->skill_lv, su->group->bl_flag | BL_SKILL | ~BCT_SELF, su->group->tick);
break;
default:
- map->foreachinrange(skill->trap_splash,bl,skill->get_splash(su->group->skill_id,su->group->skill_lv),su->group->bl_flag,bl,su->group->tick);
+ skill->trap_do_splash(bl, su->group->skill_id, su->group->skill_lv, su->group->bl_flag, su->group->tick);
}
clif->changetraplook(bl, UNT_USED_TRAPS);
su->group->limit = DIFF_TICK32(timer->gettick(),su->group->tick) +
@@ -16091,7 +16646,7 @@ int skill_detonator(struct block_list *bl, va_list ap)
/*==========================================
*
*------------------------------------------*/
-int skill_cell_overlap(struct block_list *bl, va_list ap)
+static int skill_cell_overlap(struct block_list *bl, va_list ap)
{
uint16 skill_id;
int *alive;
@@ -16189,7 +16744,7 @@ int skill_cell_overlap(struct block_list *bl, va_list ap)
/*==========================================
*
*------------------------------------------*/
-int skill_chastle_mob_changetarget(struct block_list *bl, va_list ap)
+static int skill_chastle_mob_changetarget(struct block_list *bl, va_list ap)
{
struct unit_data *ud = unit->bl2ud(bl);
struct block_list *from_bl = va_arg(ap, struct block_list *);
@@ -16210,16 +16765,38 @@ int skill_chastle_mob_changetarget(struct block_list *bl, va_list ap)
return 0;
}
+/**
+ * Does final adjustments (e.g. count enemies affected by splash) then runs trap splash function (skill_trap_splash).
+ *
+ * @param bl : trap skill unit's bl
+ * @param skill_id : Trap Skill ID
+ * @param skill_lv : Trap Skill Level
+ * @param bl_flag : Flag representing units affected by this trap
+ * @param tick : tick related to this trap
+ */
+static void skill_trap_do_splash(struct block_list *bl, uint16 skill_id, uint16 skill_lv, int bl_flag, int64 tick)
+{
+ int enemy_count = 0;
+
+ if (skill->get_nk(skill_id) & NK_SPLASHSPLIT) {
+ enemy_count = map->foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), BL_CHAR, bl, skill_id, skill_lv, tick, BCT_ENEMY, skill->area_sub_count);
+ enemy_count = max(1, enemy_count); // Don't let enemy_count be 0 when spliting trap damage
+ }
+
+ map->foreachinrange(skill->trap_splash, bl, skill->get_splash(skill_id, skill_lv), bl_flag, bl, tick, enemy_count);
+}
+
/*==========================================
*
*------------------------------------------*/
-int skill_trap_splash(struct block_list *bl, va_list ap)
+static int skill_trap_splash(struct block_list *bl, va_list ap)
{
struct block_list *src = va_arg(ap, struct block_list *);
int64 tick = va_arg(ap, int64);
struct skill_unit *src_su = NULL;
struct skill_unit_group *sg;
struct block_list *ss;
+ int enemy_count = va_arg(ap, int);
nullpo_ret(bl);
nullpo_ret(src);
@@ -16314,7 +16891,7 @@ int skill_trap_splash(struct block_list *bl, va_list ap)
}
/* Fall through */
default:
- skill->attack(skill->get_type(sg->skill_id),ss,src,bl,sg->skill_id,sg->skill_lv,tick,0);
+ skill->attack(skill->get_type(sg->skill_id), ss, src, bl, sg->skill_id, sg->skill_lv, tick, enemy_count);
break;
}
return 1;
@@ -16323,7 +16900,7 @@ int skill_trap_splash(struct block_list *bl, va_list ap)
/*==========================================
*
*------------------------------------------*/
-int skill_enchant_elemental_end(struct block_list *bl, int type)
+static int skill_enchant_elemental_end(struct block_list *bl, int type)
{
struct status_change *sc;
const enum sc_type scs[] = { SC_ENCHANTPOISON, SC_ASPERSIO, SC_PROPERTYFIRE, SC_PROPERTYWATER, SC_PROPERTYWIND, SC_PROPERTYGROUND, SC_PROPERTYDARK, SC_PROPERTYTELEKINESIS, SC_ENCHANTARMS };
@@ -16340,7 +16917,7 @@ int skill_enchant_elemental_end(struct block_list *bl, int type)
return 0;
}
-bool skill_check_cloaking(struct block_list *bl, struct status_change_entry *sce)
+static bool skill_check_cloaking(struct block_list *bl, struct status_change_entry *sce)
{
bool wall = true;
@@ -16379,7 +16956,7 @@ bool skill_check_cloaking(struct block_list *bl, struct status_change_entry *sce
/**
* Verifies if an user can use SC_CLOAKING
**/
-bool skill_can_cloak(struct map_session_data *sd)
+static bool skill_can_cloak(struct map_session_data *sd)
{
nullpo_retr(false, sd);
@@ -16397,7 +16974,7 @@ bool skill_can_cloak(struct map_session_data *sd)
* Verifies if an user can still be cloaked (AS_CLOAKING)
* Is called via map->foreachinrange when any kind of wall disapears
**/
-int skill_check_cloaking_end(struct block_list *bl, va_list ap)
+static int skill_check_cloaking_end(struct block_list *bl, va_list ap)
{
struct map_session_data *sd = BL_CAST(BL_PC, bl);
@@ -16407,7 +16984,7 @@ int skill_check_cloaking_end(struct block_list *bl, va_list ap)
return 0;
}
-bool skill_check_camouflage(struct block_list *bl, struct status_change_entry *sce)
+static bool skill_check_camouflage(struct block_list *bl, struct status_change_entry *sce)
{
bool wall = true;
@@ -16435,7 +17012,7 @@ bool skill_check_camouflage(struct block_list *bl, struct status_change_entry *s
return wall;
}
-bool skill_check_shadowform(struct block_list *bl, int64 damage, int hit)
+static bool skill_check_shadowform(struct block_list *bl, int64 damage, int hit)
{
struct status_change *sc;
@@ -16474,7 +17051,7 @@ bool skill_check_shadowform(struct block_list *bl, int64 damage, int hit)
/*==========================================
*
*------------------------------------------*/
-struct skill_unit *skill_initunit (struct skill_unit_group *group, int idx, int x, int y, int val1, int val2)
+static struct skill_unit *skill_initunit(struct skill_unit_group *group, int idx, int x, int y, int val1, int val2)
{
struct skill_unit *su;
@@ -16527,7 +17104,7 @@ struct skill_unit *skill_initunit (struct skill_unit_group *group, int idx, int
/*==========================================
*
*------------------------------------------*/
-int skill_delunit (struct skill_unit* su)
+static int skill_delunit(struct skill_unit *su)
{
struct skill_unit_group *group;
@@ -16603,24 +17180,25 @@ int skill_delunit (struct skill_unit* su)
*
*------------------------------------------*/
/// Returns the target skill_unit_group or NULL if not found.
-struct skill_unit_group* skill_id2group(int group_id)
+static struct skill_unit_group *skill_id2group(int group_id)
{
return (struct skill_unit_group*)idb_get(skill->group_db, group_id);
}
/// Returns a new group_id that isn't being used in skill->group_db.
/// Fatal error if nothing is available.
-int skill_get_new_group_id(void)
+static int skill_get_new_group_id(void)
{
- if( skill->unit_group_newid >= MAX_SKILL_DB && skill->id2group(skill->unit_group_newid) == NULL )
+ if (skill->unit_group_newid > MAX_SKILL_ID && skill->id2group(skill->unit_group_newid) == NULL)
return skill->unit_group_newid++;// available
- {// find next id
+
+ {
+ // find next id
int base_id = skill->unit_group_newid;
- while( base_id != ++skill->unit_group_newid )
- {
- if( skill->unit_group_newid < MAX_SKILL_DB )
- skill->unit_group_newid = MAX_SKILL_DB;
- if( skill->id2group(skill->unit_group_newid) == NULL )
+ while (base_id != ++skill->unit_group_newid) {
+ if (skill->unit_group_newid <= MAX_SKILL_ID)
+ skill->unit_group_newid = MAX_SKILL_ID + 1;
+ if (skill->id2group(skill->unit_group_newid) == NULL)
return skill->unit_group_newid++;// available
}
// full loop, nothing available
@@ -16629,7 +17207,7 @@ int skill_get_new_group_id(void)
}
}
-struct skill_unit_group* skill_initunitgroup (struct block_list* src, int count, uint16 skill_id, uint16 skill_lv, int unit_id, int limit, int interval)
+static struct skill_unit_group *skill_initunitgroup(struct block_list *src, int count, uint16 skill_id, uint16 skill_lv, int unit_id, int limit, int interval)
{
struct unit_data* ud = unit->bl2ud( src );
struct skill_unit_group* group;
@@ -16663,6 +17241,7 @@ struct skill_unit_group* skill_initunitgroup (struct block_list* src, int count,
group->party_id = status->get_party_id(src);
group->guild_id = status->get_guild_id(src);
group->bg_id = bg->team_get_id(src);
+ group->clan_id = clan->get_id(src);
group->group_id = skill->get_new_group_id();
CREATE(group->unit.data, struct skill_unit, count);
group->unit.count = count;
@@ -16691,7 +17270,7 @@ struct skill_unit_group* skill_initunitgroup (struct block_list* src, int count,
/*==========================================
*
*------------------------------------------*/
-int skill_delunitgroup(struct skill_unit_group *group, const char *file, int line, const char *func)
+static int skill_delunitgroup(struct skill_unit_group *group, const char *file, int line, const char *func)
{
struct block_list* src;
struct unit_data *ud;
@@ -16827,7 +17406,7 @@ int skill_delunitgroup(struct skill_unit_group *group, const char *file, int lin
/*==========================================
*
*------------------------------------------*/
-int skill_clear_unitgroup (struct block_list *src)
+static int skill_clear_unitgroup(struct block_list *src)
{
struct unit_data *ud = unit->bl2ud(src);
@@ -16842,7 +17421,7 @@ int skill_clear_unitgroup (struct block_list *src)
/*==========================================
*
*------------------------------------------*/
-struct skill_unit_group_tickset *skill_unitgrouptickset_search(struct block_list *bl, struct skill_unit_group *group, int64 tick)
+static struct skill_unit_group_tickset *skill_unitgrouptickset_search(struct block_list *bl, struct skill_unit_group *group, int64 tick)
{
int i,j=-1,s,id;
struct unit_data *ud;
@@ -16884,7 +17463,7 @@ struct skill_unit_group_tickset *skill_unitgrouptickset_search(struct block_list
/*==========================================
*
*------------------------------------------*/
-int skill_unit_timer_sub_onplace(struct block_list* bl, va_list ap)
+static int skill_unit_timer_sub_onplace(struct block_list *bl, va_list ap)
{
struct skill_unit* su;
struct skill_unit_group* group;
@@ -16914,7 +17493,7 @@ int skill_unit_timer_sub_onplace(struct block_list* bl, va_list ap)
/**
* @see DBApply
*/
-int skill_unit_timer_sub(union DBKey key, struct DBData *data, va_list ap)
+static int skill_unit_timer_sub(union DBKey key, struct DBData *data, va_list ap)
{
struct skill_unit* su;
struct skill_unit_group* group;
@@ -16985,7 +17564,7 @@ int skill_unit_timer_sub(union DBKey key, struct DBData *data, va_list ap)
memset(&item_tmp,0,sizeof(item_tmp));
item_tmp.nameid = group->item_id ? group->item_id : ITEMID_BOOBY_TRAP;
item_tmp.identify = 1;
- map->addflooritem(bl, &item_tmp, 1, bl->m, bl->x, bl->y, 0, 0, 0, 0);
+ map->addflooritem(bl, &item_tmp, 1, bl->m, bl->x, bl->y, 0, 0, 0, 0, false);
}
skill->delunit(su);
}
@@ -17027,7 +17606,7 @@ int skill_unit_timer_sub(union DBKey key, struct DBData *data, va_list ap)
break;
}
clif->changetraplook(bl,UNT_USED_TRAPS);
- map->foreachinrange(skill->trap_splash, bl, skill->get_splash(group->skill_id, group->skill_lv), group->bl_flag, bl, tick);
+ skill->trap_do_splash(bl, group->skill_id, group->skill_lv, group->bl_flag, tick);
group->limit = DIFF_TICK32(tick,group->tick)+1500;
su->limit = DIFF_TICK32(tick,group->tick)+1500;
group->unit_id = UNT_USED_TRAPS;
@@ -17134,7 +17713,7 @@ int skill_unit_timer_sub(union DBKey key, struct DBData *data, va_list ap)
/*==========================================
* Executes on all skill units every SKILLUNITTIMER_INTERVAL milliseconds.
*------------------------------------------*/
-int skill_unit_timer(int tid, int64 tick, int id, intptr_t data)
+static int skill_unit_timer(int tid, int64 tick, int id, intptr_t data)
{
map->freeblock_lock();
@@ -17148,7 +17727,7 @@ int skill_unit_timer(int tid, int64 tick, int id, intptr_t data)
/*==========================================
*
*------------------------------------------*/
-int skill_unit_move_sub(struct block_list* bl, va_list ap)
+static int skill_unit_move_sub(struct block_list *bl, va_list ap)
{
struct skill_unit *su = NULL;
struct skill_unit_group *group = NULL;
@@ -17248,7 +17827,7 @@ int skill_unit_move_sub(struct block_list* bl, va_list ap)
* units to figure out when they have left a group.
* flag&4: Force a onleft event (triggered when the bl is killed, for example)
*------------------------------------------*/
-int skill_unit_move(struct block_list *bl, int64 tick, int flag)
+static int skill_unit_move(struct block_list *bl, int64 tick, int flag)
{
nullpo_ret(bl);
@@ -17274,7 +17853,7 @@ int skill_unit_move(struct block_list *bl, int64 tick, int flag)
/*==========================================
*
*------------------------------------------*/
-int skill_unit_move_unit_group(struct skill_unit_group *group, int16 m, int16 dx, int16 dy)
+static int skill_unit_move_unit_group(struct skill_unit_group *group, int16 m, int16 dx, int16 dy)
{
int i,j;
int64 tick = timer->gettick();
@@ -17364,7 +17943,7 @@ int skill_unit_move_unit_group(struct skill_unit_group *group, int16 m, int16 dx
/*==========================================
*
*------------------------------------------*/
-int skill_can_produce_mix (struct map_session_data *sd, int nameid, int trigger, int qty)
+static int skill_can_produce_mix(struct map_session_data *sd, int nameid, int trigger, int qty)
{
int i,j;
@@ -17413,8 +17992,8 @@ int skill_can_produce_mix (struct map_session_data *sd, int nameid, int trigger,
if (pc->search_inventory(sd,id) == INDEX_NOT_FOUND)
return 0;
} else {
- int x, y;
- for(y=0,x=0;y<MAX_INVENTORY;y++)
+ int x = 0;
+ for (int y = 0; y < sd->status.inventorySize; y++)
if( sd->status.inventory[y].nameid == id )
x+=sd->status.inventory[y].amount;
if(x<qty*skill->dbs->produce_db[i].mat_amount[j])
@@ -17427,7 +18006,7 @@ int skill_can_produce_mix (struct map_session_data *sd, int nameid, int trigger,
/*==========================================
*
*------------------------------------------*/
-int skill_produce_mix(struct map_session_data *sd, uint16 skill_id, int nameid, int slot1, int slot2, int slot3, int qty)
+static int skill_produce_mix(struct map_session_data *sd, uint16 skill_id, int nameid, int slot1, int slot2, int slot3, int qty)
{
int slot[3];
int i,sc,ele,idx,equip,wlv,make_per = 0,flag = 0,skill_lv = 0;
@@ -17485,10 +18064,12 @@ int skill_produce_mix(struct map_session_data *sd, uint16 skill_id, int nameid,
else temp_qty = 1;
if (data->stack.inventory) {
- for( i = 0; i < MAX_INVENTORY; i++ ) {
+ for (i = 0; i < sd->status.inventorySize; i++ ) {
if( sd->status.inventory[i].nameid == nameid ) {
if( sd->status.inventory[i].amount >= data->stack.amount ) {
- clif->msgtable(sd, MSG_RUNE_STONE_MAX_AMOUNT);
+#if PACKETVER >= 20090729
+ clif->msgtable(sd, MSG_RUNESTONE_MAKEERROR_OVERCOUNT);
+#endif
return 0;
} else {
/**
@@ -17713,7 +18294,7 @@ int skill_produce_mix(struct map_session_data *sd, uint16 skill_id, int nameid,
int difficulty = 30 + rnd()%120; // Random number between (30 ~ 150)
make_per = sd->status.job_level / 4 + st->luk / 2 + st->dex / 3; // (Caster?s Job Level / 4) + (Caster?s LUK / 2) + (Caster?s DEX / 3)
- qty = ~(5 + rnd()%5) + 1;
+ qty = ~(5 + rnd()%5) + 1; // FIXME[Haru]: This smells, if anyone knows the intent, please rewrite the expression in a more clear form.
switch(nameid){// difficulty factor
case ITEMID_APPLE_BOMB:
@@ -17749,7 +18330,7 @@ int skill_produce_mix(struct map_session_data *sd, uint16 skill_id, int nameid,
qty = 5;
if( qty < 0 || (skill_lv == 1 && make_per < difficulty)){
- qty = ~qty + 1;
+ qty = ~qty + 1; // FIXME[Haru]: This smells. If anyone knows the intent, please rewrite the expression in a more clear form.
make_per = 0;
}else
make_per = 10000;
@@ -17926,7 +18507,7 @@ int skill_produce_mix(struct map_session_data *sd, uint16 skill_id, int nameid,
{ //Cooking items.
clif->specialeffect(&sd->bl, 608, AREA);
if( sd->cook_mastery < 1999 )
- pc_setglobalreg(sd, script->add_str("COOK_MASTERY"),sd->cook_mastery + ( 1 << ( (skill->dbs->produce_db[idx].itemlv - 11) / 2 ) ) * 5);
+ pc_setglobalreg(sd, script->add_variable("COOK_MASTERY"),sd->cook_mastery + ( 1 << ( (skill->dbs->produce_db[idx].itemlv - 11) / 2 ) ) * 5);
}
break;
}
@@ -17940,24 +18521,28 @@ int skill_produce_mix(struct map_session_data *sd, uint16 skill_id, int nameid,
tmp_item.amount = qty * skill->dbs->changematerial_db[i].qty[j];
if((flag = pc->additem(sd,&tmp_item,tmp_item.amount,LOG_TYPE_PRODUCE))) {
clif->additem(sd,0,0,flag);
- map->addflooritem(&sd->bl, &tmp_item, tmp_item.amount, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0);
+ map->addflooritem(&sd->bl, &tmp_item, tmp_item.amount, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false);
}
k++;
}
}
break;
}
- if( k ){
+ if (k) {
+#if PACKETVER >= 20091013
clif->msgtable_skill(sd, skill_id, MSG_SKILL_SUCCESS);
+#endif
return 1;
}
} else if (tmp_item.amount) { //Success
if((flag = pc->additem(sd,&tmp_item,tmp_item.amount,LOG_TYPE_PRODUCE))) {
clif->additem(sd,0,0,flag);
- map->addflooritem(&sd->bl, &tmp_item, tmp_item.amount, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0);
+ map->addflooritem(&sd->bl, &tmp_item, tmp_item.amount, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false);
}
- if( skill_id == GN_MIX_COOKING || skill_id == GN_MAKEBOMB || skill_id == GN_S_PHARMACY )
+#if PACKETVER >= 20091013
+ if (skill_id == GN_MIX_COOKING || skill_id == GN_MAKEBOMB || skill_id == GN_S_PHARMACY)
clif->msgtable_skill(sd, skill_id, MSG_SKILL_SUCCESS);
+#endif
return 1;
}
}
@@ -18006,7 +18591,7 @@ int skill_produce_mix(struct map_session_data *sd, uint16 skill_id, int nameid,
int rate = rnd()%500;
memset(&tmp_item,0,sizeof(tmp_item));
if( rate < 50) i = 4;
- else if( rate < 100) i = 2+rnd()%1;
+ else if( rate < 100) i = 2+rnd()%1; // FIXME[Haru]: This '%1' is certainly not intended. If anyone knows the purpose, please rewrite this code.
else if( rate < 250 ) i = 1;
else if( rate < 500 ) i = 0;
tmp_item.nameid = compensation[i];
@@ -18014,29 +18599,33 @@ int skill_produce_mix(struct map_session_data *sd, uint16 skill_id, int nameid,
tmp_item.identify = 1;
if( pc->additem(sd,&tmp_item,tmp_item.amount,LOG_TYPE_PRODUCE) ) {
clif->additem(sd,0,0,flag);
- map->addflooritem(&sd->bl, &tmp_item, tmp_item.amount, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0);
+ map->addflooritem(&sd->bl, &tmp_item, tmp_item.amount, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false);
}
- clif->msgtable_skill(sd, skill_id, MSG_SKILL_FAILURE);
+#if PACKETVER >= 20091013
+ clif->msgtable_skill(sd, skill_id, MSG_SKILL_FAIL);
+#endif
}
break;
case GN_MAKEBOMB:
case GN_S_PHARMACY:
case GN_CHANGEMATERIAL:
- clif->msgtable_skill(sd, skill_id, MSG_SKILL_FAILURE);
+#if PACKETVER >= 20091013
+ clif->msgtable_skill(sd, skill_id, MSG_SKILL_FAIL);
+#endif
break;
default:
if( skill->dbs->produce_db[idx].itemlv > 10 && skill->dbs->produce_db[idx].itemlv <= 20 )
{ //Cooking items.
clif->specialeffect(&sd->bl, 609, AREA);
if( sd->cook_mastery > 0 )
- pc_setglobalreg(sd, script->add_str("COOK_MASTERY"), sd->cook_mastery - ( 1 << ((skill->dbs->produce_db[idx].itemlv - 11) / 2) ) - ( ( ( 1 << ((skill->dbs->produce_db[idx].itemlv - 11) / 2) ) >> 1 ) * 3 ));
+ pc_setglobalreg(sd, script->add_variable("COOK_MASTERY"), sd->cook_mastery - ( 1 << ((skill->dbs->produce_db[idx].itemlv - 11) / 2) ) - ( ( ( 1 << ((skill->dbs->produce_db[idx].itemlv - 11) / 2) ) >> 1 ) * 3 ));
}
}
}
return 0;
}
-int skill_arrow_create (struct map_session_data *sd, int nameid)
+static int skill_arrow_create(struct map_session_data *sd, int nameid)
{
int i,j,flag,index=-1;
struct item tmp_item;
@@ -18071,20 +18660,20 @@ int skill_arrow_create (struct map_session_data *sd, int nameid)
continue;
if((flag = pc->additem(sd,&tmp_item,tmp_item.amount,LOG_TYPE_PRODUCE))) {
clif->additem(sd,0,0,flag);
- map->addflooritem(&sd->bl, &tmp_item, tmp_item.amount, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0);
+ map->addflooritem(&sd->bl, &tmp_item, tmp_item.amount, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false);
}
}
return 0;
}
-int skill_poisoningweapon(struct map_session_data *sd, int nameid)
+static int skill_poisoningweapon(struct map_session_data *sd, int nameid)
{
sc_type type;
int chance, i;
nullpo_ret(sd);
if (nameid <= 0 || (i = pc->search_inventory(sd,nameid)) == INDEX_NOT_FOUND || pc->delitem(sd, i, 1, 0, DELITEM_NORMAL, LOG_TYPE_CONSUME)) {
- clif->skill_fail(sd,GC_POISONINGWEAPON,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, GC_POISONINGWEAPON, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
switch( nameid )
@@ -18098,7 +18687,7 @@ int skill_poisoningweapon(struct map_session_data *sd, int nameid)
case ITEMID_POISON_LAUGHING: type = SC_MAGICMUSHROOM; break;
case ITEMID_POISON_OBLIVION: type = SC_OBLIVIONCURSE; break;
default:
- clif->skill_fail(sd,GC_POISONINGWEAPON,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, GC_POISONINGWEAPON, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
@@ -18110,7 +18699,7 @@ int skill_poisoningweapon(struct map_session_data *sd, int nameid)
return 0;
}
-void skill_toggle_magicpower(struct block_list *bl, uint16 skill_id)
+static void skill_toggle_magicpower(struct block_list *bl, uint16 skill_id)
{
struct status_change *sc = status->get_sc(bl);
@@ -18135,7 +18724,7 @@ void skill_toggle_magicpower(struct block_list *bl, uint16 skill_id)
}
}
-int skill_magicdecoy(struct map_session_data *sd, int nameid)
+static int skill_magicdecoy(struct map_session_data *sd, int nameid)
{
int x, y, i, class_ = 0, skill_id;
struct mob_data *md;
@@ -18146,7 +18735,7 @@ int skill_magicdecoy(struct map_session_data *sd, int nameid)
|| (i = pc->search_inventory(sd, nameid)) == INDEX_NOT_FOUND
|| pc->delitem(sd, i, 1, 0, DELITEM_NORMAL, LOG_TYPE_CONSUME) != 0
) {
- clif->skill_fail(sd,NC_MAGICDECOY,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, NC_MAGICDECOY, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
@@ -18187,7 +18776,7 @@ int skill_magicdecoy(struct map_session_data *sd, int nameid)
}
// Warlock Spellbooks. [LimitLine/3CeAM]
-int skill_spellbook(struct map_session_data *sd, int nameid)
+static int skill_spellbook(struct map_session_data *sd, int nameid)
{
int i, max_preserve, skill_id, point;
struct status_change *sc;
@@ -18200,7 +18789,7 @@ int skill_spellbook(struct map_session_data *sd, int nameid)
for(i=SC_SPELLBOOK1; i <= SC_SPELLBOOK7; i++) if( sc && !sc->data[i] ) break;
if( i > SC_SPELLBOOK7 )
{
- clif->skill_fail(sd, WL_READING_SB, USESKILL_FAIL_SPELLBOOK_READING, 0);
+ clif->skill_fail(sd, WL_READING_SB, USESKILL_FAIL_SPELLBOOK_READING, 0, 0);
return 0;
}
@@ -18210,7 +18799,7 @@ int skill_spellbook(struct map_session_data *sd, int nameid)
if( !pc->checkskill(sd, (skill_id = skill->dbs->spellbook_db[i].skill_id)) )
{ // User don't know the skill
sc_start(&sd->bl, &sd->bl, SC_SLEEP, 100, 1, skill->get_time(WL_READING_SB, pc->checkskill(sd,WL_READING_SB)));
- clif->skill_fail(sd, WL_READING_SB, USESKILL_FAIL_SPELLBOOK_DIFFICULT_SLEEP, 0);
+ clif->skill_fail(sd, WL_READING_SB, USESKILL_FAIL_SPELLBOOK_DIFFICULT_SLEEP, 0, 0);
return 0;
}
@@ -18219,7 +18808,7 @@ int skill_spellbook(struct map_session_data *sd, int nameid)
if( sc && sc->data[SC_READING_SB] ) {
if( (sc->data[SC_READING_SB]->val2 + point) > max_preserve ) {
- clif->skill_fail(sd, WL_READING_SB, USESKILL_FAIL_SPELLBOOK_PRESERVATION_POINT, 0);
+ clif->skill_fail(sd, WL_READING_SB, USESKILL_FAIL_SPELLBOOK_PRESERVATION_POINT, 0, 0);
return 0;
}
for(i = SC_SPELLBOOK7; i >= SC_SPELLBOOK1; i--){ // This is how official saves spellbook. [malufett]
@@ -18237,7 +18826,7 @@ int skill_spellbook(struct map_session_data *sd, int nameid)
return 1;
}
-int skill_select_menu(struct map_session_data *sd,uint16 skill_id)
+static int skill_select_menu(struct map_session_data *sd, uint16 skill_id)
{
int id, lv, prob, aslvl = 0, idx = 0;
nullpo_ret(sd);
@@ -18251,7 +18840,7 @@ int skill_select_menu(struct map_session_data *sd,uint16 skill_id)
if( skill_id >= GS_GLITTERING || skill->get_type(skill_id) != BF_MAGIC ||
(id = sd->status.skill[idx].id) == 0 || sd->status.skill[idx].flag != SKILL_FLAG_PLAGIARIZED ) {
- clif->skill_fail(sd,SC_AUTOSHADOWSPELL,0,0);
+ clif->skill_fail(sd, SC_AUTOSHADOWSPELL, 0, 0, 0);
return 0;
}
@@ -18262,7 +18851,7 @@ int skill_select_menu(struct map_session_data *sd,uint16 skill_id)
return 0;
}
-int skill_elementalanalysis(struct map_session_data *sd, uint16 skill_lv, const struct itemlist *item_list)
+static int skill_elementalanalysis(struct map_session_data *sd, uint16 skill_lv, const struct itemlist *item_list)
{
int i;
@@ -18283,10 +18872,10 @@ int skill_elementalanalysis(struct map_session_data *sd, uint16 skill_lv, const
del_amount -= (del_amount % 10);
add_amount = (skill_lv == 1) ? del_amount * (5 + rnd()%5) : del_amount / 10 ;
- if (idx < 0 || idx >= MAX_INVENTORY
+ if (idx < 0 || idx >= sd->status.inventorySize
|| (nameid = sd->status.inventory[idx].nameid) <= 0
|| del_amount < 0 || del_amount > sd->status.inventory[idx].amount) {
- clif->skill_fail(sd,SO_EL_ANALYSIS,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, SO_EL_ANALYSIS, USESKILL_FAIL_LEVEL, 0, 0);
return 1;
}
@@ -18302,18 +18891,18 @@ int skill_elementalanalysis(struct map_session_data *sd, uint16 skill_lv, const
case ITEMID_WIND_OF_VERDURE: product = ITEMID_ROUGH_WIND; break;
case ITEMID_YELLOW_LIVE: product = ITEMID_GREAT_NATURE; break;
default:
- clif->skill_fail(sd,SO_EL_ANALYSIS,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, SO_EL_ANALYSIS, USESKILL_FAIL_LEVEL, 0, 0);
return 1;
}
if( pc->delitem(sd, idx, del_amount, 0, DELITEM_SKILLUSE, LOG_TYPE_CONSUME) ) {
- clif->skill_fail(sd,SO_EL_ANALYSIS,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, SO_EL_ANALYSIS, USESKILL_FAIL_LEVEL, 0, 0);
return 1;
}
if( skill_lv == 2 && rnd()%100 < 25 ) {
// At level 2 have a fail chance. You loose your items if it fails.
- clif->skill_fail(sd,SO_EL_ANALYSIS,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, SO_EL_ANALYSIS, USESKILL_FAIL_LEVEL, 0, 0);
return 1;
}
@@ -18326,7 +18915,7 @@ int skill_elementalanalysis(struct map_session_data *sd, uint16 skill_lv, const
int flag = pc->additem(sd,&tmp_item,tmp_item.amount,LOG_TYPE_CONSUME);
if (flag) {
clif->additem(sd,0,0,flag);
- map->addflooritem(&sd->bl, &tmp_item, tmp_item.amount, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0);
+ map->addflooritem(&sd->bl, &tmp_item, tmp_item.amount, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false);
}
}
@@ -18335,7 +18924,7 @@ int skill_elementalanalysis(struct map_session_data *sd, uint16 skill_lv, const
return 0;
}
-int skill_changematerial(struct map_session_data *sd, const struct itemlist *item_list)
+static int skill_changematerial(struct map_session_data *sd, const struct itemlist *item_list)
{
int i, j, k, c, p = 0, nameid, amount;
@@ -18354,11 +18943,13 @@ int skill_changematerial(struct map_session_data *sd, const struct itemlist *ite
for (k = 0; k < VECTOR_LENGTH(*item_list); k++) {
const struct itemlist_entry *entry = &VECTOR_INDEX(*item_list, k);
int idx = entry->id;
- Assert_ret(idx >= 0 && idx < MAX_INVENTORY);
+ Assert_ret(idx >= 0 && idx < sd->status.inventorySize);
amount = entry->amount;
nameid = sd->status.inventory[idx].nameid;
if (nameid > 0 && sd->status.inventory[idx].identify == 0) {
- clif->msgtable_skill(sd, GN_CHANGEMATERIAL, MSG_SKILL_ITEM_NEED_IDENTIFY);
+#if PACKETVER >= 20091013
+ clif->msgtable_skill(sd, GN_CHANGEMATERIAL, MSG_SKILL_FAIL_MATERIAL_IDENTITY);
+#endif
return 0;
}
if( nameid == skill->dbs->produce_db[i].mat_id[j] && (amount-p*skill->dbs->produce_db[i].mat_amount[j]) >= skill->dbs->produce_db[i].mat_amount[j]
@@ -18378,17 +18969,17 @@ int skill_changematerial(struct map_session_data *sd, const struct itemlist *ite
}
}
}
-
- if( p == 0)
- clif->msgtable_skill(sd, GN_CHANGEMATERIAL, MSG_SKILL_ITEM_NOT_FOUND);
-
+#if PACKETVER >= 20091013
+ if (p == 0)
+ clif->msgtable_skill(sd, GN_CHANGEMATERIAL, MSG_SKILL_RECIPE_NOTEXIST);
+#endif
return 0;
}
/**
* for Royal Guard's LG_TRAMPLE
**/
-int skill_destroy_trap(struct block_list *bl, va_list ap)
+static int skill_destroy_trap(struct block_list *bl, va_list ap)
{
struct skill_unit *su = NULL;
struct skill_unit_group *sg;
@@ -18403,7 +18994,7 @@ int skill_destroy_trap(struct block_list *bl, va_list ap)
case UNT_CLAYMORETRAP:
case UNT_FIRINGTRAP:
case UNT_ICEBOUNDTRAP:
- map->foreachinrange(skill->trap_splash,&su->bl, skill->get_splash(sg->skill_id, sg->skill_lv), sg->bl_flag|BL_SKILL|~BCT_SELF, &su->bl,tick);
+ skill->trap_do_splash(&su->bl, sg->skill_id, sg->skill_lv, sg->bl_flag | BL_SKILL | ~BCT_SELF, tick);
break;
case UNT_LANDMINE:
case UNT_BLASTMINE:
@@ -18412,7 +19003,7 @@ int skill_destroy_trap(struct block_list *bl, va_list ap)
case UNT_FLASHER:
case UNT_FREEZINGTRAP:
case UNT_CLUSTERBOMB:
- map->foreachinrange(skill->trap_splash,&su->bl, skill->get_splash(sg->skill_id, sg->skill_lv), sg->bl_flag, &su->bl,tick);
+ skill->trap_do_splash(&su->bl, sg->skill_id, sg->skill_lv, sg->bl_flag, tick);
break;
}
// Traps aren't recovered.
@@ -18424,12 +19015,12 @@ int skill_destroy_trap(struct block_list *bl, va_list ap)
/*==========================================
*
*------------------------------------------*/
-int skill_blockpc_end(int tid, int64 tick, int id, intptr_t data)
+static int skill_blockpc_end(int tid, int64 tick, int id, intptr_t data)
{
struct map_session_data *sd = map->id2sd(id);
struct skill_cd * cd = NULL;
- if (data <= 0 || data >= MAX_SKILL)
+ if (data <= 0 || data >= MAX_SKILL_DB)
return 0;
if (!sd || !sd->blockskill[data])
return 0;
@@ -18477,7 +19068,7 @@ int skill_blockpc_end(int tid, int64 tick, int id, intptr_t data)
* @param tick the length of time the delay should last
* @return 0 if successful, -1 otherwise
*/
-int skill_blockpc_start_(struct map_session_data *sd, uint16 skill_id, int tick)
+static int skill_blockpc_start_(struct map_session_data *sd, uint16 skill_id, int tick)
{
struct skill_cd* cd = NULL;
uint16 idx = skill->get_index(skill_id);
@@ -18513,9 +19104,7 @@ int skill_blockpc_start_(struct map_session_data *sd, uint16 skill_id, int tick)
if (DIFF_TICK32(cd->entry[i]->started + cd->entry[i]->duration, now) > tick)
return 0;
cd->entry[i]->duration = tick;
-#if PACKETVER >= 20120604
cd->entry[i]->total = tick;
-#endif
cd->entry[i]->started = now;
if( timer->settick(cd->entry[i]->timer,now+tick) != -1 )
return 0;
@@ -18547,9 +19136,7 @@ int skill_blockpc_start_(struct map_session_data *sd, uint16 skill_id, int tick)
cd->entry[cd->cursor] = ers_alloc(skill->cd_entry_ers,struct skill_cd_entry);
cd->entry[cd->cursor]->duration = tick;
-#if PACKETVER >= 20120604
cd->entry[cd->cursor]->total = tick;
-#endif
cd->entry[cd->cursor]->skidx = idx;
cd->entry[cd->cursor]->skill_id = skill_id;
cd->entry[cd->cursor]->started = now;
@@ -18562,10 +19149,10 @@ int skill_blockpc_start_(struct map_session_data *sd, uint16 skill_id, int tick)
}
// [orn]
-int skill_blockhomun_end(int tid, int64 tick, int id, intptr_t data)
+static int skill_blockhomun_end(int tid, int64 tick, int id, intptr_t data)
{
struct homun_data *hd = map->id2hd(id);
- if (data <= 0 || data >= MAX_SKILL)
+ if (data <= 0 || data >= MAX_SKILL_DB)
return 0;
if (hd != NULL)
hd->blockskill[data] = 0;
@@ -18574,7 +19161,7 @@ int skill_blockhomun_end(int tid, int64 tick, int id, intptr_t data)
}
// [orn]
-int skill_blockhomun_start(struct homun_data *hd, uint16 skill_id, int tick)
+static int skill_blockhomun_start(struct homun_data *hd, uint16 skill_id, int tick)
{
uint16 idx = skill->get_index(skill_id);
nullpo_retr (-1, hd);
@@ -18591,10 +19178,10 @@ int skill_blockhomun_start(struct homun_data *hd, uint16 skill_id, int tick)
}
// [orn]
-int skill_blockmerc_end(int tid, int64 tick, int id, intptr_t data)
+static int skill_blockmerc_end(int tid, int64 tick, int id, intptr_t data)
{
struct mercenary_data *md = map->id2mc(id);
- if (data <= 0 || data >= MAX_SKILL)
+ if (data <= 0 || data >= MAX_SKILL_DB)
return 0;
if (md != NULL)
md->blockskill[data] = 0;
@@ -18602,7 +19189,7 @@ int skill_blockmerc_end(int tid, int64 tick, int id, intptr_t data)
return 1;
}
-int skill_blockmerc_start(struct mercenary_data *md, uint16 skill_id, int tick)
+static int skill_blockmerc_start(struct mercenary_data *md, uint16 skill_id, int tick)
{
uint16 idx = skill->get_index(skill_id);
nullpo_retr (-1, md);
@@ -18621,7 +19208,7 @@ int skill_blockmerc_start(struct mercenary_data *md, uint16 skill_id, int tick)
/**
* Adds a new skill unit entry for this player to recast after map load
**/
-void skill_usave_add(struct map_session_data * sd, uint16 skill_id, uint16 skill_lv)
+static void skill_usave_add(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv)
{
struct skill_unit_save * sus = NULL;
@@ -18639,7 +19226,7 @@ void skill_usave_add(struct map_session_data * sd, uint16 skill_id, uint16 skill
return;
}
-void skill_usave_trigger(struct map_session_data *sd)
+static void skill_usave_trigger(struct map_session_data *sd)
{
struct skill_unit_save * sus = NULL;
@@ -18657,7 +19244,7 @@ void skill_usave_trigger(struct map_session_data *sd)
/*
*
*/
-int skill_split_atoi(char *str, int *val)
+static int skill_split_atoi(char *str, int *val)
{
int i, j, step = 1;
@@ -18704,7 +19291,7 @@ int skill_split_atoi(char *str, int *val)
/*
*
*/
-void skill_init_unit_layout (void)
+static void skill_init_unit_layout(void)
{
int i,j,pos = 0;
@@ -18875,7 +19462,7 @@ void skill_init_unit_layout (void)
}
break;
default:
- skill->init_unit_layout_unknown(i);
+ skill->init_unit_layout_unknown(i, pos);
break;
}
if (!skill->dbs->unit_layout[pos].count)
@@ -18976,12 +19563,13 @@ void skill_init_unit_layout (void)
}
-void skill_init_unit_layout_unknown(int skill_idx)
+static void skill_init_unit_layout_unknown(int skill_idx, int pos)
{
- ShowError("unknown unit layout at skill %d\n", skill_idx);
+ Assert_retv(skill_idx >= 0 && skill_idx < MAX_SKILL_DB);
+ ShowError("unknown unit layout at skill %d\n", skill->dbs->db[skill_idx].nameid);
}
-int skill_block_check(struct block_list *bl, sc_type type , uint16 skill_id)
+static int skill_block_check(struct block_list *bl, sc_type type, uint16 skill_id)
{
int inf = 0;
struct status_change *sc = status->get_sc(bl);
@@ -19129,7 +19717,7 @@ int skill_block_check(struct block_list *bl, sc_type type , uint16 skill_id)
return 0;
}
-int skill_get_elemental_type(uint16 skill_id , uint16 skill_lv)
+static int skill_get_elemental_type(uint16 skill_id, uint16 skill_lv)
{
int type = 0;
@@ -19149,7 +19737,7 @@ int skill_get_elemental_type(uint16 skill_id , uint16 skill_lv)
* update stored skill cooldowns for player logout
* @param sd the affected player structure
*/
-void skill_cooldown_save(struct map_session_data * sd)
+static void skill_cooldown_save(struct map_session_data *sd)
{
int i;
struct skill_cd* cd = NULL;
@@ -19178,7 +19766,7 @@ void skill_cooldown_save(struct map_session_data * sd)
* reload stored skill cooldowns when a player logs in.
* @param sd the affected player structure
*/
-void skill_cooldown_load(struct map_session_data * sd)
+static void skill_cooldown_load(struct map_session_data *sd)
{
int i;
struct skill_cd* cd = NULL;
@@ -19197,13 +19785,21 @@ void skill_cooldown_load(struct map_session_data * sd)
// process each individual cooldown associated with the character
for( i = 0; i < cd->cursor; i++ ) {
- cd->entry[i]->started = now;
- cd->entry[i]->timer = timer->add(timer->gettick()+cd->entry[i]->duration,skill->blockpc_end,sd->bl.id,cd->entry[i]->skidx);
+ int64 remaining;
+
+ if (battle_config.guild_skill_relog_delay == 2 && cd->entry[i]->skill_id >= GD_SKILLBASE && cd->entry[i]->skill_id < GD_MAX) {
+ remaining = cd->entry[i]->started + cd->entry[i]->total - now;
+ remaining = max(1, remaining); // expired cooldowns will be 1, so they'll expire in the normal way just after this.
+ } else {
+ cd->entry[i]->started = now;
+ remaining = cd->entry[i]->duration;
+ }
+ cd->entry[i]->timer = timer->add(timer->gettick() + remaining, skill->blockpc_end, sd->bl.id, cd->entry[i]->skidx);
sd->blockskill[cd->entry[i]->skidx] = true;
}
}
-bool skill_parse_row_producedb(char* split[], int columns, int current)
+static bool skill_parse_row_producedb(char *split[], int columns, int current)
{
// ProduceItemID,ItemLV,RequireSkill,Requireskill_lv,MaterialID1,MaterialAmount1,......
int x,y;
@@ -19227,7 +19823,7 @@ bool skill_parse_row_producedb(char* split[], int columns, int current)
return true;
}
-bool skill_parse_row_createarrowdb(char* split[], int columns, int current)
+static bool skill_parse_row_createarrowdb(char *split[], int columns, int current)
{
// SourceID,MakeID1,MakeAmount1,...,MakeID5,MakeAmount5
int x,y;
@@ -19248,7 +19844,7 @@ bool skill_parse_row_createarrowdb(char* split[], int columns, int current)
return true;
}
-bool skill_parse_row_spellbookdb(char* split[], int columns, int current)
+static bool skill_parse_row_spellbookdb(char *split[], int columns, int current)
{
// skill_id,PreservePoints
@@ -19278,7 +19874,7 @@ bool skill_parse_row_spellbookdb(char* split[], int columns, int current)
return false;
}
-bool skill_parse_row_improvisedb(char* split[], int columns, int current)
+static bool skill_parse_row_improvisedb(char *split[], int columns, int current)
{
// SkillID,Rate
uint16 skill_id;
@@ -19310,7 +19906,7 @@ bool skill_parse_row_improvisedb(char* split[], int columns, int current)
return true;
}
-bool skill_parse_row_magicmushroomdb(char* split[], int column, int current)
+static bool skill_parse_row_magicmushroomdb(char *split[], int column, int current)
{
// SkillID
uint16 skill_id;
@@ -19331,22 +19927,7 @@ bool skill_parse_row_magicmushroomdb(char* split[], int column, int current)
return true;
}
-bool skill_parse_row_reproducedb(char* split[], int column, int current)
-{
- uint16 skill_id;
- uint16 idx;
- nullpo_retr(false, split);
- skill_id = atoi(split[0]);
- idx = skill->get_index(skill_id);
- if( !idx )
- return false;
-
- skill->dbs->reproduce_db[idx] = true;
-
- return true;
-}
-
-bool skill_parse_row_abradb(char* split[], int columns, int current)
+static bool skill_parse_row_abradb(char *split[], int columns, int current)
{
// skill_id,DummyName,RequiredHocusPocusLevel,Rate
uint16 skill_id;
@@ -19368,10 +19949,10 @@ bool skill_parse_row_abradb(char* split[], int columns, int current)
return true;
}
-bool skill_parse_row_changematerialdb(char* split[], int columns, int current)
+static bool skill_parse_row_changematerialdb(char *split[], int columns, int current)
{
// ProductID,BaseRate,MakeAmount1,MakeAmountRate1...,MakeAmount5,MakeAmountRate5
- uint16 skill_id;
+ int skill_id;
short j;
int x,y;
@@ -19413,7 +19994,7 @@ bool skill_parse_row_changematerialdb(char* split[], int columns, int current)
* @param *conf pointer to config setting.
* @param *arr pointer to array to be set.
*/
-void skill_config_set_level(struct config_setting_t *conf, int *arr)
+static void skill_config_set_level(struct config_setting_t *conf, int *arr)
{
int i=0;
@@ -19442,7 +20023,7 @@ void skill_config_set_level(struct config_setting_t *conf, int *arr)
* @param value value being set for the array.
* @return (void)
*/
-void skill_level_set_value(int *arr, int value)
+static void skill_level_set_value(int *arr, int value)
{
int i=0;
@@ -19452,7 +20033,7 @@ void skill_level_set_value(int *arr, int value)
}
}
-void skill_validate_hittype(struct config_setting_t *conf, struct s_skill_db *sk)
+static void skill_validate_hittype(struct config_setting_t *conf, struct s_skill_db *sk)
{
const char *type = NULL;
@@ -19477,7 +20058,7 @@ void skill_validate_hittype(struct config_setting_t *conf, struct s_skill_db *sk
* @param sk struct, pointer to s_skill_db
* @return (void)
*/
-void skill_validate_skilltype(struct config_setting_t *conf, struct s_skill_db *sk)
+static void skill_validate_skilltype(struct config_setting_t *conf, struct s_skill_db *sk)
{
struct config_setting_t *t = NULL, *tt = NULL;
@@ -19524,14 +20105,14 @@ void skill_validate_skilltype(struct config_setting_t *conf, struct s_skill_db *
}
}
}
-
+
/**
* Validates "SkillInfo" when reading skill_db.conf
* @param conf struct, pointer to skill configuration
* @param sk struct, pointer to s_skill_db
* @return (void)
*/
-void skill_validate_skillinfo(struct config_setting_t *conf, struct s_skill_db *sk)
+static void skill_validate_skillinfo(struct config_setting_t *conf, struct s_skill_db *sk)
{
struct config_setting_t *t = NULL, *tt = NULL;
@@ -19644,6 +20225,18 @@ void skill_validate_skillinfo(struct config_setting_t *conf, struct s_skill_db *
} else {
sk->inf2 &= ~INF2_FREE_CAST_REDUCED;
}
+ } else if (strcmpi(type, "ShowSkillScale") == 0) {
+ if (on) {
+ sk->inf2 |= INF2_SHOW_SKILL_SCALE;
+ } else {
+ sk->inf2 &= ~INF2_SHOW_SKILL_SCALE;
+ }
+ } else if (strcmpi(type, "AllowReproduce") == 0) {
+ if (on) {
+ sk->inf2 |= INF2_ALLOW_REPRODUCE;
+ } else {
+ sk->inf2 &= ~INF2_ALLOW_REPRODUCE;
+ }
} else if (strcmpi(type, "None") != 0) {
skilldb_invalid_error(type, config_setting_name(t), sk->nameid);
}
@@ -19657,7 +20250,7 @@ void skill_validate_skillinfo(struct config_setting_t *conf, struct s_skill_db *
* @param sk struct, pointer to s_skill_db
* @return (void)
*/
-void skill_validate_attacktype(struct config_setting_t *conf, struct s_skill_db *sk)
+static void skill_validate_attacktype(struct config_setting_t *conf, struct s_skill_db *sk)
{
const char *type = NULL;
@@ -19682,7 +20275,7 @@ void skill_validate_attacktype(struct config_setting_t *conf, struct s_skill_db
* @param sk struct, pointer to s_skill_db
* @return (void)
*/
-void skill_validate_element(struct config_setting_t *conf, struct s_skill_db *sk)
+static void skill_validate_element(struct config_setting_t *conf, struct s_skill_db *sk)
{
const char *type = NULL;
struct config_setting_t *t = NULL;
@@ -19730,7 +20323,7 @@ void skill_validate_element(struct config_setting_t *conf, struct s_skill_db *sk
* @param sk struct, pointer to s_skill_db
* @return (void)
*/
-void skill_validate_damagetype(struct config_setting_t *conf, struct s_skill_db *sk)
+static void skill_validate_damagetype(struct config_setting_t *conf, struct s_skill_db *sk)
{
struct config_setting_t *t = NULL, *tt = NULL;
@@ -19803,7 +20396,7 @@ void skill_validate_damagetype(struct config_setting_t *conf, struct s_skill_db
* @param delay boolean, switch for cast/delay setting
* @return (void)
*/
-void skill_validate_castnodex(struct config_setting_t *conf, struct s_skill_db *sk, bool delay)
+static void skill_validate_castnodex(struct config_setting_t *conf, struct s_skill_db *sk, bool delay)
{
struct config_setting_t *t = NULL, *tt = NULL;
@@ -19850,7 +20443,7 @@ void skill_validate_castnodex(struct config_setting_t *conf, struct s_skill_db *
* @param *sk struct, pointer to s_skill_db
* @return void
*/
-int skill_validate_weapontype_sub(const char *type, bool on, struct s_skill_db *sk)
+static int skill_validate_weapontype_sub(const char *type, bool on, struct s_skill_db *sk)
{
nullpo_ret(sk);
if (strcmpi(type, "NoWeapon") == 0) {
@@ -20053,7 +20646,7 @@ int skill_validate_weapontype_sub(const char *type, bool on, struct s_skill_db *
* @param sk struct, struct, pointer to s_skill_db
* @return (void)
*/
-void skill_validate_weapontype(struct config_setting_t *conf, struct s_skill_db *sk)
+static void skill_validate_weapontype(struct config_setting_t *conf, struct s_skill_db *sk)
{
struct config_setting_t *tt = NULL;
const char *type = NULL;
@@ -20080,7 +20673,7 @@ void skill_validate_weapontype(struct config_setting_t *conf, struct s_skill_db
* @param sk struct, pointer to s_skill_db
* @return void
*/
-int skill_validate_ammotype_sub(const char *type, bool on, struct s_skill_db *sk)
+static int skill_validate_ammotype_sub(const char *type, bool on, struct s_skill_db *sk)
{
nullpo_ret(sk);
if (strcmpi(type, "A_ARROW") == 0) {
@@ -20157,7 +20750,7 @@ int skill_validate_ammotype_sub(const char *type, bool on, struct s_skill_db *sk
* @param sk struct, pointer to s_skill_db
* @return void
*/
-void skill_validate_ammotype(struct config_setting_t *conf, struct s_skill_db *sk)
+static void skill_validate_ammotype(struct config_setting_t *conf, struct s_skill_db *sk)
{
struct config_setting_t *tt = NULL;
const char *tstr = NULL;
@@ -20183,7 +20776,7 @@ void skill_validate_ammotype(struct config_setting_t *conf, struct s_skill_db *s
* @param sk struct, pointer to s_skill_db
* @return void
*/
-void skill_validate_state(struct config_setting_t *conf, struct s_skill_db *sk)
+static void skill_validate_state(struct config_setting_t *conf, struct s_skill_db *sk)
{
const char *type = NULL;
@@ -20224,7 +20817,7 @@ void skill_validate_state(struct config_setting_t *conf, struct s_skill_db *sk)
* @param sk struct, pointer to s_skill_db
* @return void
*/
-void skill_validate_item_requirements(struct config_setting_t *conf, struct s_skill_db *sk)
+static void skill_validate_item_requirements(struct config_setting_t *conf, struct s_skill_db *sk)
{
struct config_setting_t *tt = NULL;
@@ -20261,7 +20854,7 @@ void skill_validate_item_requirements(struct config_setting_t *conf, struct s_sk
* @param sk struct, pointer to s_skill_db
* @return void
*/
-void skill_validate_unit_target(struct config_setting_t *conf, struct s_skill_db *sk)
+static void skill_validate_unit_target(struct config_setting_t *conf, struct s_skill_db *sk)
{
const char *type = NULL;
@@ -20303,7 +20896,7 @@ void skill_validate_unit_target(struct config_setting_t *conf, struct s_skill_db
* @param sk struct, pointer to s_skill_db.
* @return (void)
*/
-int skill_validate_unit_flag_sub(const char *type, bool on, struct s_skill_db *sk)
+static int skill_validate_unit_flag_sub(const char *type, bool on, struct s_skill_db *sk)
{
nullpo_ret(type);
nullpo_ret(sk);
@@ -20399,7 +20992,7 @@ int skill_validate_unit_flag_sub(const char *type, bool on, struct s_skill_db *s
* @param sk struct, struct, pointer to s_skill_db
* @return (void)
*/
-void skill_validate_unit_flag(struct config_setting_t *conf, struct s_skill_db *sk)
+static void skill_validate_unit_flag(struct config_setting_t *conf, struct s_skill_db *sk)
{
struct config_setting_t *t = NULL;
@@ -20422,7 +21015,7 @@ void skill_validate_unit_flag(struct config_setting_t *conf, struct s_skill_db *
* @param sk struct, struct, pointer to s_skill_db
* @return (void)
*/
-void skill_validate_additional_fields(struct config_setting_t *conf, struct s_skill_db *sk)
+static void skill_validate_additional_fields(struct config_setting_t *conf, struct s_skill_db *sk)
{
// Does nothing like a boss. *cough* plugins *cough*
}
@@ -20433,10 +21026,10 @@ void skill_validate_additional_fields(struct config_setting_t *conf, struct s_sk
* @param *source filepath constant.
* @return boolean true on success.
*/
-bool skill_validate_skilldb(struct s_skill_db *sk, const char *source)
+static bool skill_validate_skilldb(struct s_skill_db *sk, const char *source)
{
int idx;
-
+
nullpo_retr(false, sk);
idx = skill->get_index(sk->nameid);
if (idx == 0) {
@@ -20454,28 +21047,28 @@ bool skill_validate_skilldb(struct s_skill_db *sk, const char *source)
strdb_iput(skill->name2id_db, skill->dbs->db[idx].name, skill->dbs->db[idx].nameid);
/* Set Name to Id script constants */
script->set_constant2(skill->dbs->db[idx].name, (int)skill->dbs->db[idx].nameid, false, false);
-
+
return true;
}
-
+
/**
* Reads skill_db.conf from relative filepath and processes [ Smokexyz/Hercules ]
* entries into the skill database.
* @param filename contains the file path and name.
* @return boolean true on success
*/
-bool skill_read_skilldb(const char *filename)
+static bool skill_read_skilldb(const char *filename)
{
struct config_t skilldb;
struct config_setting_t *sk, *conf;
char filepath[256];
int count=0, index=0;
- bool duplicate[MAX_SKILL] = {0};
-
+ bool duplicate[MAX_SKILL_DB] = {0};
+
nullpo_retr(false, filename);
sprintf(filepath,"db/%s",filename);
-
+
if (!libconfig->load_file(&skilldb, filepath)) {
return false; // Libconfig error report.
}
@@ -20497,9 +21090,9 @@ bool skill_read_skilldb(const char *filename)
ShowError("skill_read_skilldb: Skill Id not specified for entry %d in '%s', skipping...\n", index, filepath );
continue;
}
-
+
tmp_db.nameid = skill_id;
-
+
if((idx = skill->get_index(skill_id)) == 0) {
ShowError("skill_read_skilldb: Skill Id %d is out of range, or within a reserved range (for guild, homunculus, mercenary or elemental skills). skipping...\n", idx);
continue;
@@ -20509,7 +21102,7 @@ bool skill_read_skilldb(const char *filename)
ShowWarning("skill_read_skilldb: Duplicate Skill Id %d in entry %d in '%s', skipping...\n", skill_id, index, filepath);
continue;
}
-
+
/* Skill Name Constant */
if (!libconfig->setting_lookup_mutable_string(conf, "Name", tmp_db.name, sizeof(tmp_db.name))) {
ShowError("skill_read_skilldb: Name not specified for skill Id %d in '%s', skipping...\n", skill_id, filepath);
@@ -20699,12 +21292,12 @@ bool skill_read_skilldb(const char *filename)
/* Additional Fields for Plugins */
skill->validate_additional_fields(conf, &tmp_db);
-
+
// Validate the skill entry, add it to the duplicate array and increment count on success.
if ((duplicate[idx] = skill->validate_skilldb(&tmp_db, filepath)))
count++;
}
-
+
libconfig->destroy(&skilldb);
ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' entries in '"CL_WHITE"%s"CL_RESET"'.\n", count, filepath);
@@ -20721,7 +21314,7 @@ bool skill_read_skilldb(const char *filename)
* create_arrow_db.txt
* abra_db.txt
*------------------------------*/
-void skill_readdb(bool minimal)
+static void skill_readdb(bool minimal)
{
// init skill db structures
db_clear(skill->name2id_db);
@@ -20736,7 +21329,7 @@ void skill_readdb(bool minimal)
safestrncpy(skill->dbs->db[0].desc, "Unknown Skill", sizeof(skill->dbs->db[0].desc));
itemdb->name_constants(); // refresh ItemDB constants before loading of skills
-
+
#ifdef ENABLE_CASE_CHECK
script->parser_current_file = DBPATH"skill_db.conf";
#endif // ENABLE_CASE_CHECK
@@ -20747,7 +21340,7 @@ void skill_readdb(bool minimal)
if (minimal)
return;
-
+
skill->init_unit_layout();
sv->readdb(map->db_path, "produce_db.txt", ',', 4, 4+2*MAX_PRODUCE_RESOURCE, MAX_SKILL_PRODUCE_DB, skill->parse_row_producedb);
sv->readdb(map->db_path, "create_arrow_db.txt", ',', 1+2, 1+2*MAX_ARROW_RESOURCE, MAX_SKILL_ARROW_DB, skill->parse_row_createarrowdb);
@@ -20756,12 +21349,11 @@ void skill_readdb(bool minimal)
sv->readdb(map->db_path, "spellbook_db.txt", ',', 3, 3, MAX_SKILL_SPELLBOOK_DB, skill->parse_row_spellbookdb);
//Guillotine Cross
sv->readdb(map->db_path, "magicmushroom_db.txt", ',', 1, 1, MAX_SKILL_MAGICMUSHROOM_DB, skill->parse_row_magicmushroomdb);
- sv->readdb(map->db_path, "skill_reproduce_db.txt", ',', 1, 1, MAX_SKILL_DB, skill->parse_row_reproducedb);
sv->readdb(map->db_path, "skill_improvise_db.txt", ',', 2, 2, MAX_SKILL_IMPROVISE_DB, skill->parse_row_improvisedb);
sv->readdb(map->db_path, "skill_changematerial_db.txt", ',', 4, 4+2*5, MAX_SKILL_PRODUCE_DB, skill->parse_row_changematerialdb);
}
-void skill_reload(void)
+static void skill_reload(void)
{
struct s_mapiterator *iter;
struct map_session_data *sd;
@@ -20794,7 +21386,7 @@ void skill_reload(void)
/*==========================================
*
*------------------------------------------*/
-int do_init_skill(bool minimal)
+static int do_init_skill(bool minimal)
{
skill->name2id_db = strdb_alloc(DB_OPT_DUP_KEY|DB_OPT_RELEASE_DATA, MAX_SKILL_NAME_LENGTH);
skill->read_db(minimal);
@@ -20828,7 +21420,7 @@ int do_init_skill(bool minimal)
return 0;
}
-int do_final_skill(void)
+static int do_final_skill(void)
{
db_destroy(skill->name2id_db);
db_destroy(skill->group_db);
@@ -20895,8 +21487,12 @@ void skill_defaults(void)
skill->get_hp = skill_get_hp;
skill->get_mhp = skill_get_mhp;
skill->get_sp = skill_get_sp;
+ skill->get_hp_rate = skill_get_hp_rate;
+ skill->get_sp_rate = skill_get_sp_rate;
skill->get_state = skill_get_state;
skill->get_spiritball = skill_get_spiritball;
+ skill->get_itemid = skill_get_itemid;
+ skill->get_itemqty = skill_get_itemqty;
skill->get_zeny = skill_get_zeny;
skill->get_num = skill_get_num;
skill->get_cast = skill_get_cast;
@@ -20925,7 +21521,6 @@ void skill_defaults(void)
skill->tree_get_max = skill_tree_get_max;
skill->get_name = skill_get_name;
skill->get_desc = skill_get_desc;
- skill->chk = skill_chk;
skill->get_casttype = skill_get_casttype;
skill->get_casttype2 = skill_get_casttype2;
skill->is_combo = skill_is_combo;
@@ -21004,6 +21599,7 @@ void skill_defaults(void)
skill->onskillusage = skill_onskillusage;
skill->cell_overlap = skill_cell_overlap;
skill->timerskill = skill_timerskill;
+ skill->trap_do_splash = skill_trap_do_splash;
skill->trap_splash = skill_trap_splash;
skill->check_condition_mercenary = skill_check_condition_mercenary;
skill->locate_element_field = skill_locate_element_field;
@@ -21067,7 +21663,6 @@ void skill_defaults(void)
skill->parse_row_abradb = skill_parse_row_abradb;
skill->parse_row_spellbookdb = skill_parse_row_spellbookdb;
skill->parse_row_magicmushroomdb = skill_parse_row_magicmushroomdb;
- skill->parse_row_reproducedb = skill_parse_row_reproducedb;
skill->parse_row_improvisedb = skill_parse_row_improvisedb;
skill->parse_row_changematerialdb = skill_parse_row_changematerialdb;
skill->usave_add = skill_usave_add;
diff --git a/src/map/skill.h b/src/map/skill.h
index bba440107..0ace19927 100644
--- a/src/map/skill.h
+++ b/src/map/skill.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -25,7 +25,7 @@
#include "map/status.h" // enum sc_type
#include "common/hercules.h"
#include "common/db.h"
-#include "common/mmo.h" // MAX_SKILL, struct square
+#include "common/mmo.h" // MAX_SKILL_DB, struct square
/**
* Declarations
@@ -43,7 +43,6 @@ struct status_change_entry;
/**
* Defines
**/
-#define MAX_SKILL_DB MAX_SKILL
#define MAX_SKILL_PRODUCE_DB 270
#define MAX_PRODUCE_RESOURCE 10
#define MAX_SKILL_ARROW_DB 140
@@ -77,6 +76,7 @@ struct status_change_entry;
//Constants to identify the skill's inf value:
enum e_skill_inf {
+ INF_NONE = 0x00,
INF_ATTACK_SKILL = 0x01,
INF_GROUND_SKILL = 0x02,
INF_SELF_SKILL = 0x04, // Skills casted on self where target is automatically chosen
@@ -89,6 +89,7 @@ enum e_skill_inf {
//The NK value applies only to non INF_GROUND_SKILL skills
//when determining skill castend function to invoke.
enum e_skill_nk {
+ NK_NONE = 0x00,
NK_NO_DAMAGE = 0x01,
NK_SPLASH = 0x02|0x04, // 0x4 = splash & split
NK_SPLASH_ONLY = 0x02,
@@ -103,6 +104,7 @@ enum e_skill_nk {
//A skill with 3 would be no damage + splash: area of effect.
//Constants to identify a skill's inf2 value.
enum e_skill_inf2 {
+ INF2_NONE = 0x00000,
INF2_QUEST_SKILL = 0x00001,
INF2_NPC_SKILL = 0x00002, // NPC skills are those that players can't have in their skill tree.
INF2_WEDDING_SKILL = 0x00004,
@@ -120,6 +122,8 @@ enum e_skill_inf2 {
INF2_CHORUS_SKILL = 0x04000, // Chorus skill
INF2_FREE_CAST_NORMAL = 0x08000,
INF2_FREE_CAST_REDUCED = 0x10000,
+ INF2_SHOW_SKILL_SCALE = 0x20000,
+ INF2_ALLOW_REPRODUCE = 0x40000,
};
@@ -132,6 +136,7 @@ enum e_skill_display {
};
enum {
+ UF_NONE = 0x0000,
UF_DEFNOTENEMY = 0x0001, // If 'defunit_not_enemy' is set, the target is changed to 'friend'
UF_NOREITERATION = 0x0002, // Spell cannot be stacked
UF_NOFOOTSET = 0x0004, // Spell cannot be cast near/on targets
@@ -158,7 +163,7 @@ enum wl_spheres {
};
enum {
- ST_NONE,
+ ST_NONE = 0,
ST_HIDING,
ST_CLOAKING,
ST_HIDDEN,
@@ -1366,7 +1371,7 @@ enum e_skill {
GM_FORCE_TRANSFER,
GM_WIDE_RESURRECTION,
ALL_NIFLHEIM_RECALL,
- ALL_PRONTERA_RECALL,
+ ALL_PRONTERA_RECALL,
ALL_GLASTHEIM_RECALL,
ALL_THANATOS_RECALL,
@@ -1721,7 +1726,7 @@ struct skill_condition {
// Database skills
struct s_skill_db {
- unsigned short nameid;
+ int nameid;
char name[MAX_SKILL_NAME_LENGTH];
char desc[40];
int range[MAX_SKILL_LEVEL],hit,inf,element[MAX_SKILL_LEVEL],nk,splash[MAX_SKILL_LEVEL],max;
@@ -1769,6 +1774,7 @@ struct skill_unit_group {
int party_id;
int guild_id;
int bg_id;
+ int clan_id;
int map;
int target_flag; //Holds BCT_* flag for battle_check_target
int bl_flag; //Holds BL_* flag for map_foreachin* functions
@@ -1836,9 +1842,7 @@ struct s_skill_magicmushroom_db {
struct skill_cd_entry {
int duration;//milliseconds
-#if PACKETVER >= 20120604
- int total;/* used for display on newer clients */
-#endif
+ int total;/* used when reducing offline cooldown and for display on newer clients */
short skidx;//the skill index entries belong to
int64 started;/* gettick() of when it started, used vs duration to measure how much left upon logout */
int timer;/* timer id */
@@ -1893,7 +1897,6 @@ BEGIN_ZEROED_BLOCK; // This block will be zeroed in skill_defaults() as well as
struct s_skill_improvise_db improvise_db[MAX_SKILL_IMPROVISE_DB];
struct s_skill_changematerial_db changematerial_db[MAX_SKILL_PRODUCE_DB];
struct s_skill_spellbook_db spellbook_db[MAX_SKILL_SPELLBOOK_DB];
- bool reproduce_db[MAX_SKILL_DB];
END_ZEROED_BLOCK;
struct s_skill_unit_layout unit_layout[MAX_SKILL_UNIT_LAYOUT];
};
@@ -1930,54 +1933,56 @@ struct skill_interface {
int unit_temp[20]; // temporary storage for tracking skill unit skill ids as players move in/out of them
int unit_group_newid;
/* accesssors */
- int (*get_index) ( uint16 skill_id );
- int (*get_type) ( uint16 skill_id );
- int (*get_hit) ( uint16 skill_id );
- int (*get_inf) ( uint16 skill_id );
- int (*get_ele) ( uint16 skill_id, uint16 skill_lv );
- int (*get_nk) ( uint16 skill_id );
- int (*get_max) ( uint16 skill_id );
- int (*get_range) ( uint16 skill_id, uint16 skill_lv );
- int (*get_range2) (struct block_list *bl, uint16 skill_id, uint16 skill_lv);
- int (*get_splash) ( uint16 skill_id, uint16 skill_lv );
- int (*get_hp) ( uint16 skill_id, uint16 skill_lv );
- int (*get_mhp) ( uint16 skill_id, uint16 skill_lv );
- int (*get_sp) ( uint16 skill_id, uint16 skill_lv );
- int (*get_state) (uint16 skill_id);
- int (*get_spiritball) (uint16 skill_id, uint16 skill_lv);
- int (*get_zeny) ( uint16 skill_id, uint16 skill_lv );
- int (*get_num) ( uint16 skill_id, uint16 skill_lv );
- int (*get_cast) ( uint16 skill_id, uint16 skill_lv );
- int (*get_delay) ( uint16 skill_id, uint16 skill_lv );
- int (*get_walkdelay) ( uint16 skill_id, uint16 skill_lv );
- int (*get_time) ( uint16 skill_id, uint16 skill_lv );
- int (*get_time2) ( uint16 skill_id, uint16 skill_lv );
- int (*get_castnodex) ( uint16 skill_id, uint16 skill_lv );
- int (*get_delaynodex) ( uint16 skill_id ,uint16 skill_lv );
- int (*get_castdef) ( uint16 skill_id );
- int (*get_weapontype) ( uint16 skill_id );
- int (*get_ammotype) ( uint16 skill_id );
- int (*get_ammo_qty) ( uint16 skill_id, uint16 skill_lv );
- int (*get_unit_id) (uint16 skill_id,int flag);
- int (*get_inf2) ( uint16 skill_id );
- int (*get_castcancel) ( uint16 skill_id );
- int (*get_maxcount) ( uint16 skill_id, uint16 skill_lv );
- int (*get_blewcount) ( uint16 skill_id, uint16 skill_lv );
- int (*get_unit_flag) ( uint16 skill_id );
- int (*get_unit_target) ( uint16 skill_id );
- int (*get_unit_interval) ( uint16 skill_id );
- int (*get_unit_bl_target) ( uint16 skill_id );
- int (*get_unit_layout_type) ( uint16 skill_id ,uint16 skill_lv );
- int (*get_unit_range) ( uint16 skill_id, uint16 skill_lv );
- int (*get_cooldown) ( uint16 skill_id, uint16 skill_lv );
- int (*tree_get_max) (uint16 skill_id, int class);
- const char *(*get_name) ( uint16 skill_id );
- const char *(*get_desc) ( uint16 skill_id );
- /* check */
- void (*chk) (uint16* skill_id);
+ int (*get_index) (int skill_id);
+ int (*get_type) (int skill_id);
+ int (*get_hit) (int skill_id);
+ int (*get_inf) (int skill_id);
+ int (*get_ele) (int skill_id, int skill_lv);
+ int (*get_nk) (int skill_id);
+ int (*get_max) (int skill_id);
+ int (*get_range) (int skill_id, int skill_lv);
+ int (*get_range2) (struct block_list *bl, int skill_id, int skill_lv);
+ int (*get_splash) (int skill_id, int skill_lv);
+ int (*get_hp) (int skill_id, int skill_lv);
+ int (*get_mhp) (int skill_id, int skill_lv);
+ int (*get_sp) (int skill_id, int skill_lv);
+ int (*get_hp_rate) (int skill_id, int skill_lv);
+ int (*get_sp_rate) (int skill_id, int skill_lv);
+ int (*get_state) (int skill_id);
+ int (*get_spiritball) (int skill_id, int skill_lv);
+ int (*get_itemid) (int skill_id, int item_idx);
+ int (*get_itemqty) (int skill_id, int item_idx);
+ int (*get_zeny) (int skill_id, int skill_lv);
+ int (*get_num) (int skill_id, int skill_lv);
+ int (*get_cast) (int skill_id, int skill_lv);
+ int (*get_delay) (int skill_id, int skill_lv);
+ int (*get_walkdelay) (int skill_id, int skill_lv);
+ int (*get_time) (int skill_id, int skill_lv);
+ int (*get_time2) (int skill_id, int skill_lv);
+ int (*get_castnodex) (int skill_id, int skill_lv);
+ int (*get_delaynodex) (int skill_id, int skill_lv);
+ int (*get_castdef) (int skill_id);
+ int (*get_weapontype) (int skill_id);
+ int (*get_ammotype) (int skill_id);
+ int (*get_ammo_qty) (int skill_id, int skill_lv);
+ int (*get_unit_id) (int skill_id, int flag);
+ int (*get_inf2) (int skill_id);
+ int (*get_castcancel) (int skill_id);
+ int (*get_maxcount) (int skill_id, int skill_lv);
+ int (*get_blewcount) (int skill_id, int skill_lv);
+ int (*get_unit_flag) (int skill_id);
+ int (*get_unit_target) (int skill_id);
+ int (*get_unit_interval) (int skill_id);
+ int (*get_unit_bl_target) (int skill_id);
+ int (*get_unit_layout_type) (int skill_id, int skill_lv);
+ int (*get_unit_range) (int skill_id, int skill_lv);
+ int (*get_cooldown) (int skill_id, int skill_lv);
+ int (*tree_get_max) (int skill_id, int class);
+ const char *(*get_name) (int skill_id);
+ const char *(*get_desc) (int skill_id);
/* whether its CAST_GROUND, CAST_DAMAGE or CAST_NODAMAGE */
- int (*get_casttype) (uint16 skill_id);
- int (*get_casttype2) (uint16 index);
+ int (*get_casttype) (int skill_id);
+ int (*get_casttype2) (int index);
bool (*is_combo) (int skill_id);
int (*name2id) (const char* name);
int (*isammotype) (struct map_session_data *sd, int skill_id);
@@ -2054,6 +2059,7 @@ struct skill_interface {
int (*onskillusage) (struct map_session_data *sd, struct block_list *bl, uint16 skill_id, int64 tick);
int (*cell_overlap) (struct block_list *bl, va_list ap);
int (*timerskill) (int tid, int64 tick, int id, intptr_t data);
+ void (*trap_do_splash) (struct block_list *bl, uint16 skill_id, uint16 skill_lv, int bl_flag, int64 tick);
int (*trap_splash) (struct block_list *bl, va_list ap);
int (*check_condition_mercenary) (struct block_list *bl, int skill_id, int lv, int type);
struct skill_unit_group *(*locate_element_field) (struct block_list *bl);
@@ -2071,7 +2077,7 @@ struct skill_interface {
int (*check_condition_mob_master_sub) (struct block_list *bl, va_list ap);
void (*brandishspear_first) (struct square *tc, uint8 dir, int16 x, int16 y);
void (*brandishspear_dir) (struct square* tc, uint8 dir, int are);
- int (*get_fixed_cast) ( uint16 skill_id ,uint16 skill_lv );
+ int (*get_fixed_cast) (int skill_id, int skill_lv);
int (*sit_count) (struct block_list *bl, va_list ap);
int (*sit_in) (struct block_list *bl, va_list ap);
int (*sit_out) (struct block_list *bl, va_list ap);
@@ -2088,7 +2094,7 @@ struct skill_interface {
int (*unit_timer) (int tid, int64 tick, int id, intptr_t data);
int (*unit_timer_sub) (union DBKey key, struct DBData *data, va_list ap);
void (*init_unit_layout) (void);
- void (*init_unit_layout_unknown) (int skill_idx);
+ void (*init_unit_layout_unknown) (int skill_idx, int pos);
void (*validate_hittype) (struct config_setting_t *conf, struct s_skill_db *sk);
void (*validate_skilltype) (struct config_setting_t *conf, struct s_skill_db *sk);
void (*validate_attacktype) (struct config_setting_t *conf, struct s_skill_db *sk);
@@ -2115,7 +2121,6 @@ struct skill_interface {
bool (*parse_row_abradb) (char* split[], int columns, int current);
bool (*parse_row_spellbookdb) (char* split[], int columns, int current);
bool (*parse_row_magicmushroomdb) (char* split[], int column, int current);
- bool (*parse_row_reproducedb) (char* split[], int column, int current);
bool (*parse_row_improvisedb) (char* split[], int columns, int current);
bool (*parse_row_changematerialdb) (char* split[], int columns, int current);
/* save new unit skill */
@@ -2168,7 +2173,7 @@ struct skill_interface {
int (*check_condition_castbegin_mount_unknown) (struct status_change *sc, uint16 *skill_id);
int (*check_condition_castbegin_madogear_unknown) (struct status_change *sc, uint16 *skill_id);
int (*check_condition_castbegin_unknown) (struct status_change *sc, uint16 *skill_id);
- void (*check_condition_castend_unknown) (struct map_session_data* sd, uint16 *skill_id, uint16 *skill_lv);
+ bool (*check_condition_castend_unknown) (struct map_session_data* sd, uint16 *skill_id, uint16 *skill_lv);
bool (*get_requirement_off_unknown) (struct status_change *sc, uint16 *skill_id);
bool (*get_requirement_item_unknown) (struct status_change *sc, struct map_session_data* sd, uint16 *skill_id, uint16 *skill_lv, uint16 *idx, int *i);
void (*get_requirement_unknown) (struct status_change *sc, struct map_session_data* sd, uint16 *skill_id, uint16 *skill_lv, struct skill_condition *req);
diff --git a/src/map/status.c b/src/map/status.c
index 926bdb40a..f06bb0330 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -25,6 +25,7 @@
#include "map/battle.h"
#include "map/chrif.h"
+#include "map/clan.h"
#include "map/clif.h"
#include "map/elemental.h"
#include "map/guild.h"
@@ -60,17 +61,17 @@
#include <string.h>
#include <time.h>
-struct status_interface status_s;
-struct s_status_dbs statusdbs;
+static struct status_interface status_s;
+static struct s_status_dbs statusdbs;
struct status_interface *status;
/**
-* Returns the status change associated with a skill.
-* @param skill The skill to look up
-* @return The status registered for this skill
-**/
-sc_type status_skill2sc(int skill_id)
+ * Returns the status change associated with a skill.
+ * @param skill The skill to look up
+ * @return The status registered for this skill
+ */
+static sc_type status_skill2sc(int skill_id)
{
int idx;
if( (idx = skill->get_index(skill_id)) == 0 ) {
@@ -81,12 +82,12 @@ sc_type status_skill2sc(int skill_id)
}
/**
-* Returns the FIRST skill (in order of definition in initChangeTables) to use a given status change.
-* Utilized for various duration lookups. Use with caution!
-* @param sc The status to look up
-* @return A skill associated with the status
-**/
-int status_sc2skill(sc_type sc)
+ * Returns the FIRST skill (in order of definition in initChangeTables) to use a given status change.
+ * Utilized for various duration lookups. Use with caution!
+ * @param sc The status to look up
+ * @return A skill associated with the status
+ */
+static int status_sc2skill(sc_type sc)
{
if( sc < 0 || sc >= SC_MAX ) {
ShowError("status_sc2skill: Unsupported status change id %d\n", sc);
@@ -97,11 +98,11 @@ int status_sc2skill(sc_type sc)
}
/**
-* Returns the status calculation flag associated with a given status change.
-* @param sc The status to look up
-* @return The scb_flag registered for this status (see enum scb_flag)
-**/
-unsigned int status_sc2scb_flag(sc_type sc)
+ * Returns the status calculation flag associated with a given status change.
+ * @param sc The status to look up
+ * @return The scb_flag registered for this status (see enum scb_flag)
+ */
+static unsigned int status_sc2scb_flag(sc_type sc)
{
if( sc < 0 || sc >= SC_MAX ) {
ShowError("status_sc2scb_flag: Unsupported status change id %d\n", sc);
@@ -112,11 +113,11 @@ unsigned int status_sc2scb_flag(sc_type sc)
}
/**
-* Returns the bl types which require a status change packet to be sent for a given client status identifier.
-* @param type The client-side status identifier to look up (see enum si_type)
-* @return The bl types relevant to the type (see enum bl_type)
-**/
-int status_type2relevant_bl_types(int type)
+ * Returns the bl types which require a status change packet to be sent for a given client status identifier.
+ * @param type The client-side status identifier to look up (see enum si_type)
+ * @return The bl types relevant to the type (see enum bl_type)
+ */
+static int status_type2relevant_bl_types(int type)
{
if( type < 0 || type >= SI_MAX ) {
ShowError("status_type2relevant_bl_types: Unsupported type %d\n", type);
@@ -126,7 +127,7 @@ int status_type2relevant_bl_types(int type)
return status->dbs->RelevantBLTypes[type];
}
-void status_set_sc(uint16 skill_id, sc_type sc, int icon, unsigned int flag)
+static void status_set_sc(uint16 skill_id, sc_type sc, int icon, unsigned int flag)
{
uint16 idx;
if( (idx = skill->get_index(skill_id)) == 0 ) {
@@ -148,7 +149,7 @@ void status_set_sc(uint16 skill_id, sc_type sc, int icon, unsigned int flag)
status->dbs->Skill2SCTable[idx] = sc;
}
-void initChangeTables(void)
+static void initChangeTables(void)
{
#define add_sc(skill,sc) status->set_sc((skill),(sc),SI_BLANK,SCB_NONE)
// indicates that the status displays a visual effect for the affected unit, and should be sent to the client for all supported units
@@ -159,7 +160,7 @@ void initChangeTables(void)
for (i = 0; i < SC_MAX; i++)
status->dbs->IconChangeTable[i] = SI_BLANK;
- for (i = 0; i < MAX_SKILL; i++)
+ for (i = 0; i < MAX_SKILL_DB; i++)
status->dbs->Skill2SCTable[i] = SC_NONE;
for (i = 0; i < SI_MAX; i++)
@@ -1000,6 +1001,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;
@@ -1018,6 +1020,12 @@ void initChangeTables(void)
// Summoner
status->dbs->IconChangeTable[SC_SPRITEMABLE] = SI_SPRITEMABLE;
+ // Clan System
+ status->dbs->IconChangeTable[SC_CLAN_INFO] = SI_CLAN_INFO;
+
+ // RoDEX
+ status->dbs->IconChangeTable[SC_DAILYSENDMAILCNT] = SI_DAILYSENDMAILCNT;
+
// Other SC which are not necessarily associated to skills.
status->dbs->ChangeFlagTable[SC_ATTHASTE_POTION1] |= SCB_ASPD;
status->dbs->ChangeFlagTable[SC_ATTHASTE_POTION2] |= SCB_ASPD;
@@ -1177,7 +1185,11 @@ void initChangeTables(void)
status->dbs->ChangeFlagTable[SC_MVPCARD_ORCHERO] |= SCB_ALL;
status->dbs->ChangeFlagTable[SC_MVPCARD_ORCLORD] |= SCB_ALL;
+ // Clan System
+ status->dbs->ChangeFlagTable[SC_CLAN_INFO] |= SCB_NONE;
+
// 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;
@@ -1199,7 +1211,7 @@ void initChangeTables(void)
#undef set_sc_with_vfx
}
-void initDummyData(void)
+static void initDummyData(void)
{
memset(&status->dummy, 0, sizeof(status->dummy));
status->dummy.hp =
@@ -1221,17 +1233,22 @@ void initDummyData(void)
}
//For copying a status_data structure from b to a, without overwriting current Hp and Sp
-void status_copy(struct status_data *a, const struct status_data *b)
+static void status_copy(struct status_data *a, const struct status_data *b)
{
nullpo_retv(a);
nullpo_retv(b);
memcpy((void*)&a->max_hp, (const void*)&b->max_hp, sizeof(struct status_data)-(sizeof(a->hp)+sizeof(a->sp)));
}
-//Sets HP to given value. Flag is the flag passed to status->heal in case
-//final value is higher than current (use 2 to make a healing effect display
-//on players) It will always succeed (overrides Berserk block), but it can't kill.
-int status_set_hp(struct block_list *bl, unsigned int hp, int flag)
+/**
+ * Sets HP to the given value.
+ *
+ * @param bl The target unit.
+ * @param hp The desired HP value.
+ * @param flag Additional options. @see enum status_heal_flag. STATUS_HEAL_FORCED is always implied.
+ * @return The amount of HP gained.
+ */
+static int status_set_hp(struct block_list *bl, unsigned int hp, enum status_heal_flag flag)
{
struct status_data *st;
if (hp < 1) return 0;
@@ -1242,14 +1259,19 @@ int status_set_hp(struct block_list *bl, unsigned int hp, int flag)
if (hp > st->max_hp) hp = st->max_hp;
if (hp == st->hp) return 0;
if (hp > st->hp)
- return status->heal(bl, hp - st->hp, 0, 1|flag);
+ return status->heal(bl, hp - st->hp, 0, STATUS_HEAL_FORCED | flag);
return status_zap(bl, st->hp - hp, 0);
}
-//Sets SP to given value. Flag is the flag passed to status->heal in case
-//final value is higher than current (use 2 to make a healing effect display
-//on players)
-int status_set_sp(struct block_list *bl, unsigned int sp, int flag)
+/**
+ * Sets SP to the given value.
+ *
+ * @param bl The target unit.
+ * @param hp The desired SP value.
+ * @param flag Additional options. @see enum status_heal_flag. STATUS_HEAL_FORCED is always implied.
+ * @return The amount of SP gained.
+ */
+static int status_set_sp(struct block_list *bl, unsigned int sp, enum status_heal_flag flag)
{
struct status_data *st;
@@ -1260,11 +1282,11 @@ int status_set_sp(struct block_list *bl, unsigned int sp, int flag)
if (sp > st->max_sp) sp = st->max_sp;
if (sp == st->sp) return 0;
if (sp > st->sp)
- return status->heal(bl, 0, sp - st->sp, 1|flag);
+ return status->heal(bl, 0, sp - st->sp, STATUS_HEAL_FORCED | flag);
return status_zap(bl, 0, st->sp - sp);
}
-int status_charge(struct block_list* bl, int64 hp, int64 sp)
+static int status_charge(struct block_list *bl, int64 hp, int64 sp)
{
nullpo_retr((int)(hp + sp), bl);
if(!(bl->type&BL_CONSUME))
@@ -1277,7 +1299,7 @@ int status_charge(struct block_list* bl, int64 hp, int64 sp)
//If flag&2, fail if target does not has enough to subtract.
//If flag&4, if killed, mob must not give exp/loot.
//flag will be set to &8 when damaging sp of a dead character
-int status_damage(struct block_list *src,struct block_list *target,int64 in_hp, int64 in_sp, int walkdelay, int flag)
+static int status_damage(struct block_list *src, struct block_list *target, int64 in_hp, int64 in_sp, int walkdelay, int flag)
{
struct status_data *st;
struct status_change *sc;
@@ -1292,12 +1314,12 @@ int status_damage(struct block_list *src,struct block_list *target,int64 in_hp,
sp = 0; //Not a valid SP target.
if (hp < 0) { //Assume absorbed damage.
- status->heal(target, -hp, 0, 1);
+ status->heal(target, -hp, 0, STATUS_HEAL_FORCED);
hp = 0;
}
if (sp < 0) {
- status->heal(target, 0, -sp, 1);
+ status->heal(target, 0, -sp, STATUS_HEAL_FORCED);
sp = 0;
}
@@ -1515,9 +1537,16 @@ int status_damage(struct block_list *src,struct block_list *target,int64 in_hp,
return (int)(hp+sp);
}
-//Heals a character. If flag&1, this is forced healing (otherwise stuff like Berserk can block it)
-//If flag&2, when the player is healed, show the HP/SP heal effect.
-int status_heal(struct block_list *bl, int64 in_hp, int64 in_sp, int flag)
+/**
+ * Heals a character.
+ *
+ * @param bl The target unit.
+ * @param in_hp Amount of HP to recover.
+ * @param in_sp Amount of SP to recover.
+ * @param flag Additional options, @see enum status_heal_flag.
+ * @return The amount of HP + SP healed.
+ */
+static int status_heal(struct block_list *bl, int64 in_hp, int64 in_sp, enum status_heal_flag flag)
{
struct status_data *st;
struct status_change *sc;
@@ -1526,7 +1555,9 @@ int status_heal(struct block_list *bl, int64 in_hp, int64 in_sp, int flag)
nullpo_ret(bl);
st = status->get_status_data(bl);
- if (st == &status->dummy || !st->hp)
+ if (st == &status->dummy)
+ return 0;
+ if (st->hp == 0 && (flag & STATUS_HEAL_ALLOWREVIVE) == 0)
return 0;
/* From here onwards, we consider it a 32-type as the client does not support higher and the value doesn't get through percentage modifiers */
@@ -1543,10 +1574,10 @@ int status_heal(struct block_list *bl, int64 in_hp, int64 in_sp, int flag)
hp = 0;
}
- if(hp) {
- if( sc && sc->data[SC_BERSERK] ) {
- if( flag&1 )
- flag &= ~2;
+ if (hp != 0) {
+ if (sc && sc->data[SC_BERSERK] != NULL) {
+ if ((flag & STATUS_HEAL_FORCED) != 0)
+ flag &= ~STATUS_HEAL_SHOWEFFECT;
else
hp = 0;
}
@@ -1581,7 +1612,7 @@ int status_heal(struct block_list *bl, int64 in_hp, int64 in_sp, int flag)
// send hp update to client
switch(bl->type) {
- case BL_PC: pc->heal(BL_UCAST(BL_PC, bl), hp, sp, (flag&2) ? 1 : 0); break;
+ case BL_PC: pc->heal(BL_UCAST(BL_PC, bl), hp, sp, (flag & STATUS_HEAL_SHOWEFFECT) != 0 ? 1 : 0); break;
case BL_MOB: mob->heal(BL_UCAST(BL_MOB, bl), hp); break;
case BL_HOM: homun->healed(BL_UCAST(BL_HOM, bl)); break;
case BL_MER: mercenary->heal(BL_UCAST(BL_MER, bl), hp, sp); break;
@@ -1597,7 +1628,7 @@ int status_heal(struct block_list *bl, int64 in_hp, int64 in_sp, int flag)
//If rates are < 0, percent is of max HP/SP
//If !flag, this is heal, otherwise it is damage.
//Furthermore, if flag==2, then the target must not die from the subtraction.
-int status_percent_change(struct block_list *src, struct block_list *target, signed char hp_rate, signed char sp_rate, int flag)
+static int status_percent_change(struct block_list *src, struct block_list *target, signed char hp_rate, signed char sp_rate, int flag)
{
struct status_data *st;
unsigned int hp = 0, sp = 0;
@@ -1636,21 +1667,21 @@ int status_percent_change(struct block_list *src, struct block_list *target, sig
if (flag)
status->damage(src, target, INT_MAX, 0, 0, (!src||src==target?5:1));
else
- status->heal(target, INT_MAX, 0, 0);
+ status->heal(target, INT_MAX, 0, STATUS_HEAL_DEFAULT);
}
if (sp > INT_MAX) {
sp -= INT_MAX;
if (flag)
status->damage(src, target, 0, INT_MAX, 0, (!src||src==target?5:1));
else
- status->heal(target, 0, INT_MAX, 0);
+ status->heal(target, 0, INT_MAX, STATUS_HEAL_DEFAULT);
}
if (flag)
return status->damage(src, target, hp, sp, 0, (!src||src==target?5:1));
- return status->heal(target, hp, sp, 0);
+ return status->heal(target, hp, sp, STATUS_HEAL_DEFAULT);
}
-int status_revive(struct block_list *bl, unsigned char per_hp, unsigned char per_sp)
+static int status_revive(struct block_list *bl, unsigned char per_hp, unsigned char per_sp)
{
struct status_data *st;
unsigned int hp, sp;
@@ -1689,7 +1720,7 @@ int status_revive(struct block_list *bl, unsigned char per_hp, unsigned char per
return 1;
}
-int status_fixed_revive(struct block_list *bl, unsigned int per_hp, unsigned int per_sp)
+static int status_fixed_revive(struct block_list *bl, unsigned int per_hp, unsigned int per_sp)
{
struct status_data *st;
unsigned int hp, sp;
@@ -1727,17 +1758,17 @@ int status_fixed_revive(struct block_list *bl, unsigned int per_hp, unsigned int
}
/*==========================================
-* Checks whether the src can use the skill on the target,
-* taking into account status/option of both source/target. [Skotlex]
-* flag:
-* 0 - Trying to use skill on target.
-* 1 - Cast bar is done.
-* 2 - Skill already pulled off, check is due to ground-based skills or splash-damage ones.
-* src MAY be null to indicate we shouldn't check it, this is a ground-based skill attack.
-* target MAY Be null, in which case the checks are only to see
-* whether the source can cast or not the skill on the ground.
-*------------------------------------------*/
-int status_check_skilluse(struct block_list *src, struct block_list *target, uint16 skill_id, int flag)
+ * Checks whether the src can use the skill on the target,
+ * taking into account status/option of both source/target. [Skotlex]
+ * flag:
+ * 0 - Trying to use skill on target.
+ * 1 - Cast bar is done.
+ * 2 - Skill already pulled off, check is due to ground-based skills or splash-damage ones.
+ * src MAY be null to indicate we shouldn't check it, this is a ground-based skill attack.
+ * target MAY Be null, in which case the checks are only to see
+ * whether the source can cast or not the skill on the ground.
+ *------------------------------------------*/
+static int status_check_skilluse(struct block_list *src, struct block_list *target, uint16 skill_id, int flag)
{
struct status_data *st;
struct status_change *sc=NULL, *tsc;
@@ -1749,6 +1780,9 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, uin
if (src != NULL && src->type != BL_PC && status->isdead(src))
return 0;
+ if (sd != NULL && sd->block_action.skill && skill_id) // *pcblock script command
+ return 0;
+
if (!skill_id) { //Normal attack checks.
if (!(st->mode&MD_CANATTACK))
return 0; //This mode is only needed for melee attacking.
@@ -1768,7 +1802,11 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, uin
for(i = 0; i < map->list[src->m].zone->disabled_skills_count; i++) {
if( skill_id == map->list[src->m].zone->disabled_skills[i]->nameid && (map->list[src->m].zone->disabled_skills[i]->type&src->type) ) {
if (src->type == BL_PC) {
- clif->msgtable(sd, MSG_SKILL_CANT_USE_AREA); // This skill cannot be used within this area
+#if PACKETVER >= 20080311
+ clif->skill_mapinfomessage(sd, 2);
+#else
+ clif->messagecolor_self(sd->fd, COLOR_CYAN, msg_sd(sd, 50));
+#endif
} else if (src->type == BL_MOB && map->list[src->m].zone->disabled_skills[i]->subtype != MZS_NONE) {
if( st->mode&MD_BOSS ) { /* is boss */
if( !( map->list[src->m].zone->disabled_skills[i]->subtype&MZS_BOSS ) )
@@ -2030,7 +2068,7 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, uin
//Skotlex: Calculates the initial status for the given mob
//first will only be false when the mob leveled up or got a GuardUp level.
-int status_calc_mob_(struct mob_data *md, enum e_status_calc_opt opt)
+static int status_calc_mob_(struct mob_data *md, enum e_status_calc_opt opt)
{
struct status_data *mstatus;
struct block_list *mbl = NULL;
@@ -2201,7 +2239,7 @@ int status_calc_mob_(struct mob_data *md, enum e_status_calc_opt opt)
}
//Skotlex: Calculates the stats of the given pet.
-int status_calc_pet_(struct pet_data *pd, enum e_status_calc_opt opt)
+static int status_calc_pet_(struct pet_data *pd, enum e_status_calc_opt opt)
{
nullpo_ret(pd);
@@ -2263,7 +2301,7 @@ int status_calc_pet_(struct pet_data *pd, enum e_status_calc_opt opt)
return 1;
}
-unsigned int status_get_base_maxsp(const struct map_session_data *sd, const struct status_data *st)
+static unsigned int status_get_base_maxsp(const struct map_session_data *sd, const struct status_data *st)
{
uint64 val;
@@ -2284,7 +2322,7 @@ unsigned int status_get_base_maxsp(const struct map_session_data *sd, const stru
return (unsigned int)cap_value(val, 0, UINT_MAX);
}
-unsigned int status_get_base_maxhp(const struct map_session_data *sd, const struct status_data *st)
+static unsigned int status_get_base_maxhp(const struct map_session_data *sd, const struct status_data *st)
{
uint64 val;
@@ -2311,20 +2349,77 @@ unsigned int status_get_base_maxhp(const struct map_session_data *sd, const stru
return (unsigned int)cap_value(val,0,UINT_MAX);
}
-void status_calc_pc_additional(struct map_session_data* sd, enum e_status_calc_opt opt)
+/**
+ * Calculates the HP that a character will have after death, on respawn.
+ *
+ * @param sd The character to calculate.
+ * @param st The character's status data.
+ */
+static unsigned int status_get_restart_hp(const struct map_session_data *sd, const struct status_data *st)
+{
+ unsigned int hp = 0;
+
+ if (sd->special_state.restart_full_recover)
+ return st->max_hp;
+
+ if ((sd->job & MAPID_BASEMASK) == MAPID_NOVICE && (sd->job & JOBL_2) == 0 && battle_config.restart_hp_rate < 50)
+ hp = st->max_hp / 2;
+ else
+ hp = APPLY_RATE(st->max_hp, battle_config.restart_hp_rate);
+
+ if (hp > 0)
+ return hp;
+
+ return 1;
+}
+
+/**
+ * Calculates the SP that a character will have after death, on respawn.
+ *
+ * @param sd The character to calculate.
+ * @param st The character's status data.
+ */
+static unsigned int status_get_restart_sp(const struct map_session_data *sd, const struct status_data *st)
+{
+ unsigned int sp = 0;
+
+ if (sd->special_state.restart_full_recover)
+ return st->max_sp;
+
+ sp = APPLY_RATE(st->max_sp, battle_config.restart_sp_rate);
+
+ if (sp > 0)
+ return sp;
+
+ return 1; // the minimum for the respawn setting is SP:1
+}
+
+static void status_calc_pc_additional(struct map_session_data *sd, enum e_status_calc_opt opt)
{
/* Just used for Plugin to give bonuses. */
return;
}
+static void status_calc_pc_recover_hp(struct map_session_data *sd, struct status_data *bstatus)
+{
+ nullpo_retv(sd);
+ nullpo_retv(bstatus);
+
+ if ((sd->job & MAPID_BASEMASK) == MAPID_NOVICE && (sd->job & JOBL_2) == 0
+ && battle_config.restart_hp_rate < 50)
+ bstatus->hp = bstatus->max_hp>>1;
+ else
+ bstatus->hp = APPLY_RATE(bstatus->max_hp, battle_config.restart_hp_rate);
+}
+
//Calculates player data from scratch without counting SC adjustments.
//Should be invoked whenever players raise stats, learn passive skills or change equipment.
-int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
+static int status_calc_pc_(struct map_session_data *sd, enum e_status_calc_opt opt)
{
static int calculating = 0; //Check for recursive call preemption. [Skotlex]
struct status_data *bstatus; // pointer to the player's base status
const struct status_change *sc;
- struct s_skill b_skill[MAX_SKILL]; // previous skill tree
+ struct s_skill b_skill[MAX_SKILL_DB]; // previous skill tree
int b_weight, b_max_weight, b_cart_weight_max, // previous weight
i, k, index, skill_lv,refinedef=0;
int64 i64;
@@ -2351,7 +2446,7 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
sd->regen.sregen = &sd->sregen;
sd->regen.ssregen = &sd->ssregen;
sd->weight=0;
- for(i=0;i<MAX_INVENTORY;i++){
+ for (i = 0; i < sd->status.inventorySize; i++) {
if(sd->status.inventory[i].nameid==0 || sd->inventory_data[i] == NULL)
continue;
sd->weight += sd->inventory_data[i]->weight*sd->status.inventory[i].amount;
@@ -2400,8 +2495,8 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
bstatus->speed = pSpeed;
}
- //FIXME: Most of these stuff should be calculated once, but how do I fix the memset above to do that? [Skotlex]
- //Give them all modes except these (useful for clones)
+ // FIXME: Most of these stuff should be calculated once, but how do I fix the memset above to do that? [Skotlex]
+ // Give them all modes except these (useful for clones)
bstatus->mode = MD_MASK&~(MD_BOSS|MD_PLANT|MD_DETECTOR|MD_ANGRY|MD_TARGETWEAK);
bstatus->size = ((sd->job & JOBL_BABY) != 0 || (sd->job & MAPID_BASEMASK) == MAPID_SUMMONER)?SZ_SMALL:SZ_MEDIUM;
@@ -2647,6 +2742,45 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
}
}
+ /* parse item options [Smokexyz] */
+ for (i = 0; i < EQI_MAX; i++) {
+ status->current_equip_item_index = index = sd->equip_index[i];
+ status->current_equip_option_index = -1;
+
+ if (i == EQI_HAND_R && sd->equip_index[EQI_HAND_L] == index)
+ continue;
+ else if (i == EQI_HEAD_MID && sd->equip_index[EQI_HEAD_LOW] == index)
+ continue;
+ else if (i == EQI_HEAD_TOP && (sd->equip_index[EQI_HEAD_MID] == index || sd->equip_index[EQI_HEAD_LOW] == index))
+ continue;
+
+ if (index >= 0 && sd->inventory_data[index]) {
+ int j = 0;
+ for (j = 0; j < MAX_ITEM_OPTIONS; j++) {
+ int16 option_index = sd->status.inventory[index].option[j].index;
+ struct itemdb_option *ito = NULL;
+
+ if (option_index == 0 || (ito = itemdb->option_exists(option_index)) == NULL || ito->script == NULL)
+ continue;
+
+ status->current_equip_option_index = j;
+ script->run(ito->script, 0, sd->bl.id, 0);
+
+ if (calculating == 0) //Abort, script->run his function. [Skotlex]
+ return 1;
+ }
+ }
+ }
+
+ status->current_equip_option_index = -1;
+ status->current_equip_item_index = -1;
+
+ // Clan Buffs
+ if (sd->status.clan_id > 0) {
+ struct clan *c = clan->search(sd->status.clan_id);
+ clan->buff_start(sd, c);
+ }
+
status->calc_pc_additional(sd, opt);
if( sd->pd ) { // Pet Bonus
@@ -2675,9 +2809,7 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
sd->left_weapon.atkmods[1] = status->dbs->atkmods[1][sd->weapontype2];
sd->left_weapon.atkmods[2] = status->dbs->atkmods[2][sd->weapontype2];
- if ((pc_isridingpeco(sd) || pc_isridingdragon(sd))
- && (sd->status.weapon==W_1HSPEAR || sd->status.weapon==W_2HSPEAR)
- ) {
+ if ((pc_isridingpeco(sd) || pc_isridingdragon(sd)) && (sd->weapontype == W_1HSPEAR || sd->weapontype == W_2HSPEAR)) {
//When Riding with spear, damage modifier to mid-class becomes
//same as versus large size.
sd->right_weapon.atkmods[1] = sd->right_weapon.atkmods[2];
@@ -2741,8 +2873,8 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
// Base batk value is set on status->calc_misc
// weapon-type bonus (FIXME: Why is the weapon_atk bonus applied to base attack?)
- if (sd->status.weapon < MAX_SINGLE_WEAPON_TYPE && sd->weapon_atk[sd->status.weapon])
- bstatus->batk += sd->weapon_atk[sd->status.weapon];
+ if (sd->weapontype < MAX_SINGLE_WEAPON_TYPE && sd->weapon_atk[sd->weapontype])
+ bstatus->batk += sd->weapon_atk[sd->weapontype];
// Absolute modifiers from passive skills
#ifndef RENEWAL
if((skill_lv=pc->checkskill(sd,BS_HILTBINDING))>0) // it doesn't work in RE.
@@ -2816,24 +2948,8 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
// ----- RESPAWN HP/SP -----
//
//Calc respawn hp and store it on base_status
- if (sd->special_state.restart_full_recover)
- {
- bstatus->hp = bstatus->max_hp;
- bstatus->sp = bstatus->max_sp;
- } else {
- if ((sd->job & MAPID_BASEMASK) == MAPID_NOVICE && (sd->job & JOBL_2) == 0
- && battle_config.restart_hp_rate < 50)
- bstatus->hp = bstatus->max_hp>>1;
- else
- bstatus->hp = APPLY_RATE(bstatus->max_hp, battle_config.restart_hp_rate);
- if(!bstatus->hp)
- bstatus->hp = 1;
-
- bstatus->sp = APPLY_RATE(bstatus->max_sp, battle_config.restart_sp_rate);
-
- if( !bstatus->sp ) /* the minimum for the respawn setting is SP:1 */
- bstatus->sp = 1;
- }
+ bstatus->hp = status->get_restart_hp(sd, bstatus);
+ bstatus->sp = status->get_restart_sp(sd, bstatus);
// ----- MISC CALCULATION -----
status->calc_misc(&sd->bl, bstatus, sd->status.base_level);
@@ -2890,10 +3006,10 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
#ifndef RENEWAL
bstatus->hit += skill_lv;
#endif
- if(sd->status.weapon == W_BOW)
+ if (sd->weapontype == W_BOW)
bstatus->rhw.range += skill_lv;
}
- if(sd->status.weapon >= W_REVOLVER && sd->status.weapon <= W_GRENADE) {
+ if (sd->weapontype >= W_REVOLVER && sd->weapontype <= W_GRENADE) {
if((skill_lv=pc->checkskill(sd,GS_SINGLEACTION))>0)
bstatus->hit += 2*skill_lv;
if((skill_lv=pc->checkskill(sd,GS_SNAKEEYE))>0) {
@@ -2901,9 +3017,9 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
bstatus->rhw.range += skill_lv;
}
}
- if( (sd->status.weapon == W_1HAXE || sd->status.weapon == W_2HAXE) && (skill_lv = pc->checkskill(sd,NC_TRAININGAXE)) > 0 )
+ if ((sd->weapontype == W_1HAXE || sd->weapontype == W_2HAXE) && (skill_lv = pc->checkskill(sd,NC_TRAININGAXE)) > 0)
bstatus->hit += 3*skill_lv;
- if((sd->status.weapon == W_MACE || sd->status.weapon == W_2HMACE) && (skill_lv = pc->checkskill(sd,NC_TRAININGAXE)) > 0)
+ if ((sd->weapontype == W_MACE || sd->weapontype == W_2HMACE) && (skill_lv = pc->checkskill(sd,NC_TRAININGAXE)) > 0)
bstatus->hit += 2*skill_lv;
if (pc->checkskill(sd, SU_POWEROFLIFE) > 0)
bstatus->hit += 20;
@@ -2963,12 +3079,11 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
// Relative modifiers from passive skills
#ifndef RENEWAL_ASPD
- if((skill_lv=pc->checkskill(sd,SA_ADVANCEDBOOK))>0 && sd->status.weapon == W_BOOK)
+ if (sd->weapontype == W_BOOK && (skill_lv=pc->checkskill(sd,SA_ADVANCEDBOOK)) > 0)
bstatus->aspd_rate -= 5*skill_lv;
if((skill_lv = pc->checkskill(sd,SG_DEVIL)) > 0 && !pc->nextjobexp(sd))
bstatus->aspd_rate -= 30*skill_lv;
- if((skill_lv=pc->checkskill(sd,GS_SINGLEACTION))>0 &&
- (sd->status.weapon >= W_REVOLVER && sd->status.weapon <= W_GRENADE))
+ if (sd->weapontype >= W_REVOLVER && sd->weapontype <= W_GRENADE && (skill_lv=pc->checkskill(sd,GS_SINGLEACTION)) > 0)
bstatus->aspd_rate -= ((skill_lv+1)/2) * 10;
if (pc_isridingpeco(sd))
bstatus->aspd_rate += 500-100*pc->checkskill(sd,KN_CAVALIERMASTERY);
@@ -3223,7 +3338,7 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
return 0;
}
-int status_calc_mercenary_(struct mercenary_data *md, enum e_status_calc_opt opt)
+static int status_calc_mercenary_(struct mercenary_data *md, enum e_status_calc_opt opt)
{
struct status_data *mstatus;
struct s_mercenary *merc;
@@ -3246,7 +3361,7 @@ int status_calc_mercenary_(struct mercenary_data *md, enum e_status_calc_opt opt
return 0;
}
-int status_calc_elemental_(struct elemental_data *ed, enum e_status_calc_opt opt)
+static int status_calc_elemental_(struct elemental_data *ed, enum e_status_calc_opt opt)
{
struct status_data *estatus;
struct s_elemental *ele;
@@ -3290,7 +3405,7 @@ int status_calc_elemental_(struct elemental_data *ed, enum e_status_calc_opt opt
return 0;
}
-int status_calc_npc_(struct npc_data *nd, enum e_status_calc_opt opt)
+static int status_calc_npc_(struct npc_data *nd, enum e_status_calc_opt opt)
{
struct status_data *nstatus;
@@ -3327,7 +3442,7 @@ int status_calc_npc_(struct npc_data *nd, enum e_status_calc_opt opt)
return 0;
}
-int status_calc_homunculus_(struct homun_data *hd, enum e_status_calc_opt opt)
+static int status_calc_homunculus_(struct homun_data *hd, enum e_status_calc_opt opt)
{
struct status_data *hstatus;
struct s_homunculus *hom;
@@ -3417,7 +3532,7 @@ int status_calc_homunculus_(struct homun_data *hd, enum e_status_calc_opt opt)
}
//Calculates base regen values.
-void status_calc_regen(struct block_list *bl, struct status_data *st, struct regen_data *regen)
+static void status_calc_regen(struct block_list *bl, struct status_data *st, struct regen_data *regen)
{
struct map_session_data *sd;
int val, skill_lv, reg_flag;
@@ -3518,7 +3633,7 @@ void status_calc_regen(struct block_list *bl, struct status_data *st, struct reg
}
//Calculates SC related regen rates.
-void status_calc_regen_rate(struct block_list *bl, struct regen_data *regen, struct status_change *sc)
+static void status_calc_regen_rate(struct block_list *bl, struct regen_data *regen, struct status_change *sc)
{
nullpo_retv(bl);
if (!(bl->type&BL_REGEN) || !regen)
@@ -3642,7 +3757,7 @@ void status_calc_regen_rate(struct block_list *bl, struct regen_data *regen, str
/// Recalculates parts of an object's battle status according to the specified flags.
/// @param flag bitfield of values from enum scb_flag
-void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag)
+static void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag)
{
const struct status_data *bst = status->get_base_status(bl);
struct status_data *st = status->get_status_data(bl);
@@ -3858,7 +3973,7 @@ void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag)
} else {
st->cri = status->calc_critical(bl, sc, bst->cri + 3*(st->luk - bst->luk), true);
}
- if (battle_config.show_katar_crit_bonus && bl->type == BL_PC && BL_UCAST(BL_PC, bl)->status.weapon == W_KATAR) {
+ if (battle_config.show_katar_crit_bonus && bl->type == BL_PC && BL_UCAST(BL_PC, bl)->weapontype == W_KATAR) {
st->cri *= 2;
}
}
@@ -4041,7 +4156,7 @@ void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag)
/// Also sends updates to the client wherever applicable.
/// @param flag bitfield of values from enum scb_flag
/// @param first if true, will cause status_calc_* functions to run their base status initialization code
-void status_calc_bl_(struct block_list *bl, enum scb_flag flag, enum e_status_calc_opt opt)
+static void status_calc_bl_(struct block_list *bl, enum scb_flag flag, enum e_status_calc_opt opt)
{
struct status_data bst; // previous battle status
struct status_data *st; // pointer to current battle status
@@ -4226,7 +4341,7 @@ void status_calc_bl_(struct block_list *bl, enum scb_flag flag, enum e_status_ca
}
//Checks whether the source can see and chase target.
-int status_check_visibility(struct block_list *src, struct block_list *target)
+static int status_check_visibility(struct block_list *src, struct block_list *target)
{
int view_range;
struct status_change *tsc = NULL;
@@ -4278,7 +4393,7 @@ int status_check_visibility(struct block_list *src, struct block_list *target)
}
// Basic ASPD value
-int status_base_amotion_pc(struct map_session_data *sd, struct status_data *st)
+static int status_base_amotion_pc(struct map_session_data *sd, struct status_data *st)
{
int amotion;
#ifdef RENEWAL_ASPD /* [malufett/Hercules] */
@@ -4289,11 +4404,11 @@ int status_base_amotion_pc(struct map_session_data *sd, struct status_data *st)
nullpo_ret(st);
amotion = status->dbs->aspd_base[pc->class2idx(sd->status.class)][sd->weapontype1];
- if ( sd->status.weapon > MAX_SINGLE_WEAPON_TYPE)
+ if (sd->weapontype > MAX_SINGLE_WEAPON_TYPE)
amotion += status->dbs->aspd_base[pc->class2idx(sd->status.class)][sd->weapontype2] / 4;
- if ( sd->status.shield )
+ if (sd->has_shield)
amotion += status->dbs->aspd_base[pc->class2idx(sd->status.class)][MAX_SINGLE_WEAPON_TYPE];
- switch ( sd->status.weapon ) {
+ switch (sd->weapontype) {
case W_BOW:
case W_MUSICAL:
case W_WHIP:
@@ -4308,15 +4423,15 @@ int status_base_amotion_pc(struct map_session_data *sd, struct status_data *st)
temp = st->dex * st->dex / 5.0f + st->agi * st->agi * 0.5f;
}
temp = (float)(sqrt(temp) * 0.25f) + 0xc4;
- if ( (skill_lv = pc->checkskill(sd, SA_ADVANCEDBOOK)) > 0 && sd->status.weapon == W_BOOK )
+ if (sd->weapontype == W_BOOK && (skill_lv = pc->checkskill(sd, SA_ADVANCEDBOOK)) > 0)
val += (skill_lv - 1) / 2 + 1;
if ( (skill_lv = pc->checkskill(sd, GS_SINGLEACTION)) > 0 )
val += ((skill_lv + 1) / 2);
amotion = ((int)(temp + ((float)(status->calc_aspd(&sd->bl, &sd->sc, 1) + val) * st->agi / 200)) - min(amotion, 200));
#else
// base weapon delay
- amotion = (sd->status.weapon < MAX_SINGLE_WEAPON_TYPE)
- ? (status->dbs->aspd_base[pc->class2idx(sd->status.class)][sd->status.weapon]) // single weapon
+ amotion = (sd->weapontype < MAX_SINGLE_WEAPON_TYPE)
+ ? (status->dbs->aspd_base[pc->class2idx(sd->status.class)][sd->weapontype]) // single weapon
: (status->dbs->aspd_base[pc->class2idx(sd->status.class)][sd->weapontype1] + status->dbs->aspd_base[pc->class2idx(sd->status.class)][sd->weapontype2]) * 7 / 10; // dual-wield
// percentual delay reduction from stats
@@ -4333,7 +4448,7 @@ int status_base_amotion_pc(struct map_session_data *sd, struct status_data *st)
return amotion;
}
-unsigned short status_base_atk(const struct block_list *bl, const struct status_data *st)
+static unsigned short status_base_atk(const struct block_list *bl, const struct status_data *st)
{
int flag = 0, str, dex, dstr;
@@ -4343,7 +4458,7 @@ unsigned short status_base_atk(const struct block_list *bl, const struct status_
return 0;
if (bl->type == BL_PC) {
- switch (BL_UCCAST(BL_PC, bl)->status.weapon) {
+ switch (BL_UCCAST(BL_PC, bl)->weapontype) {
case W_BOW:
case W_MUSICAL:
case W_WHIP:
@@ -4393,19 +4508,24 @@ unsigned short status_base_atk(const struct block_list *bl, const struct status_
return cap_value(str, 0, USHRT_MAX);
}
-unsigned short status_base_matk_min(const struct status_data *st)
+static unsigned short status_base_matk_min(const struct status_data *st)
{
nullpo_ret(st);
+#ifdef RENEWAL
+ Assert_ret(0);
+ return 0;
+#else // not RENEWAL
return st->int_ + (st->int_ / 7) * (st->int_ / 7);
+#endif // RENEWAL
}
-unsigned short status_base_matk_max(const struct status_data *st)
+static unsigned short status_base_matk_max(const struct status_data *st)
{
nullpo_ret(st);
return st->int_ + (st->int_ / 5)*(st->int_ / 5);
}
-unsigned short status_base_matk(struct block_list *bl, const struct status_data *st, int level)
+static unsigned short status_base_matk(struct block_list *bl, const struct status_data *st, int level)
{
#ifdef RENEWAL
nullpo_ret(bl);
@@ -4422,12 +4542,13 @@ unsigned short status_base_matk(struct block_list *bl, const struct status_data
return st->int_ + (st->int_ / 2) + (st->dex / 5) + (st->luk / 3) + (level / 4);
}
#else
+ Assert_ret(0);
return 0;
#endif
}
//Fills in the misc data that can be calculated from the other status info (except for level)
-void status_calc_misc(struct block_list *bl, struct status_data *st, int level)
+static void status_calc_misc(struct block_list *bl, struct status_data *st, int level)
{
nullpo_retv(bl);
nullpo_retv(st);
@@ -4509,9 +4630,9 @@ void status_calc_misc(struct block_list *bl, struct status_data *st, int level)
}
/*==========================================
-* Apply shared stat mods from status changes [DracoRPG]
-*------------------------------------------*/
-unsigned short status_calc_str(struct block_list *bl, struct status_change *sc, int str)
+ * Apply shared stat mods from status changes [DracoRPG]
+ *------------------------------------------*/
+static unsigned short status_calc_str(struct block_list *bl, struct status_change *sc, int str)
{
if(!sc || !sc->count)
return cap_value(str,0,USHRT_MAX);
@@ -4574,7 +4695,7 @@ unsigned short status_calc_str(struct block_list *bl, struct status_change *sc,
return (unsigned short)cap_value(str,0,USHRT_MAX);
}
-unsigned short status_calc_agi(struct block_list *bl, struct status_change *sc, int agi)
+static unsigned short status_calc_agi(struct block_list *bl, struct status_change *sc, int agi)
{
if(!sc || !sc->count)
return cap_value(agi,0,USHRT_MAX);
@@ -4637,7 +4758,7 @@ unsigned short status_calc_agi(struct block_list *bl, struct status_change *sc,
return (unsigned short)cap_value(agi,0,USHRT_MAX);
}
-unsigned short status_calc_vit(struct block_list *bl, struct status_change *sc, int vit)
+static unsigned short status_calc_vit(struct block_list *bl, struct status_change *sc, int vit)
{
if(!sc || !sc->count)
return cap_value(vit,0,USHRT_MAX);
@@ -4688,7 +4809,7 @@ unsigned short status_calc_vit(struct block_list *bl, struct status_change *sc,
return (unsigned short)cap_value(vit,0,USHRT_MAX);
}
-unsigned short status_calc_int(struct block_list *bl, struct status_change *sc, int int_)
+static unsigned short status_calc_int(struct block_list *bl, struct status_change *sc, int int_)
{
nullpo_ret(bl);
if(!sc || !sc->count)
@@ -4755,7 +4876,7 @@ unsigned short status_calc_int(struct block_list *bl, struct status_change *sc,
return (unsigned short)cap_value(int_,0,USHRT_MAX);
}
-unsigned short status_calc_dex(struct block_list *bl, struct status_change *sc, int dex)
+static unsigned short status_calc_dex(struct block_list *bl, struct status_change *sc, int dex)
{
nullpo_ret(bl);
if(!sc || !sc->count)
@@ -4818,7 +4939,7 @@ unsigned short status_calc_dex(struct block_list *bl, struct status_change *sc,
return (unsigned short)cap_value(dex,0,USHRT_MAX);
}
-unsigned short status_calc_luk(struct block_list *bl, struct status_change *sc, int luk)
+static unsigned short status_calc_luk(struct block_list *bl, struct status_change *sc, int luk)
{
nullpo_ret(bl);
@@ -4873,7 +4994,7 @@ unsigned short status_calc_luk(struct block_list *bl, struct status_change *sc,
return (unsigned short)cap_value(luk, 0, USHRT_MAX);
}
-unsigned short status_calc_batk(struct block_list *bl, struct status_change *sc, int batk, bool viewable)
+static unsigned short status_calc_batk(struct block_list *bl, struct status_change *sc, int batk, bool viewable)
{
nullpo_ret(bl);
if(!sc || !sc->count)
@@ -4922,9 +5043,6 @@ unsigned short status_calc_batk(struct block_list *bl, struct status_change *sc,
#ifndef RENEWAL
if(sc->data[SC_LKCONCENTRATION])
batk += batk * sc->data[SC_LKCONCENTRATION]->val2/100;
-#else
- if ( sc->data[SC_NOEQUIPWEAPON] && bl->type != BL_PC )
- batk -= batk * sc->data[SC_NOEQUIPWEAPON]->val2 / 100;
#endif
if(sc->data[SC_SKE])
batk += batk * 3;
@@ -4972,7 +5090,7 @@ unsigned short status_calc_batk(struct block_list *bl, struct status_change *sc,
return (unsigned short)cap_value(batk,0,USHRT_MAX);
}
-unsigned short status_calc_watk(struct block_list *bl, struct status_change *sc, int watk, bool viewable)
+static unsigned short status_calc_watk(struct block_list *bl, struct status_change *sc, int watk, bool viewable)
{
nullpo_ret(bl);
if(!sc || !sc->count)
@@ -5027,7 +5145,7 @@ unsigned short status_calc_watk(struct block_list *bl, struct status_change *sc,
if(sc->data[SC_LKCONCENTRATION])
watk += watk * sc->data[SC_LKCONCENTRATION]->val2/100;
#endif
- if(sc->data[SC_INCATKRATE] && bl->type != BL_MOB)
+ if(sc->data[SC_INCATKRATE])
watk += watk * sc->data[SC_INCATKRATE]->val1/100;
if(sc->data[SC_PROVOKE])
watk += watk * sc->data[SC_PROVOKE]->val3/100;
@@ -5037,10 +5155,8 @@ unsigned short status_calc_watk(struct block_list *bl, struct status_change *sc,
watk += watk * sc->data[SC_HLIF_FLEET]->val3/100;
if(sc->data[SC_CURSE])
watk -= watk * 25/100;
-#ifndef RENEWAL
if(sc->data[SC_NOEQUIPWEAPON] && bl->type != BL_PC)
watk -= watk * sc->data[SC_NOEQUIPWEAPON]->val2/100;
-#endif
if(sc->data[SC__ENERVATION])
watk -= watk * sc->data[SC__ENERVATION]->val2 / 100;
if(sc->data[SC_RUSH_WINDMILL])
@@ -5067,7 +5183,7 @@ unsigned short status_calc_watk(struct block_list *bl, struct status_change *sc,
return (unsigned short)cap_value(watk,0,USHRT_MAX);
}
-unsigned short status_calc_ematk(struct block_list *bl, struct status_change *sc, int matk)
+static unsigned short status_calc_ematk(struct block_list *bl, struct status_change *sc, int matk)
{
#ifdef RENEWAL
if (!sc || !sc->count)
@@ -5098,7 +5214,7 @@ unsigned short status_calc_ematk(struct block_list *bl, struct status_change *sc
#endif
}
-unsigned short status_calc_matk(struct block_list *bl, struct status_change *sc, int matk, bool viewable)
+static unsigned short status_calc_matk(struct block_list *bl, struct status_change *sc, int matk, bool viewable)
{
if (!sc || !sc->count)
return cap_value(matk,0,USHRT_MAX);
@@ -5168,7 +5284,7 @@ unsigned short status_calc_matk(struct block_list *bl, struct status_change *sc,
return (unsigned short)cap_value(matk, 0, USHRT_MAX);
}
-signed short status_calc_critical(struct block_list *bl, struct status_change *sc, int critical, bool viewable)
+static signed short status_calc_critical(struct block_list *bl, struct status_change *sc, int critical, bool viewable)
{
if (!sc || !sc->count)
return cap_value(critical, 10, SHRT_MAX);
@@ -5209,7 +5325,7 @@ signed short status_calc_critical(struct block_list *bl, struct status_change *s
return (short)cap_value(critical, 10, SHRT_MAX);
}
-signed short status_calc_hit(struct block_list *bl, struct status_change *sc, int hit, bool viewable)
+static signed short status_calc_hit(struct block_list *bl, struct status_change *sc, int hit, bool viewable)
{
if (!sc || !sc->count)
@@ -5264,7 +5380,7 @@ signed short status_calc_hit(struct block_list *bl, struct status_change *sc, in
return (short)cap_value(hit, 1, SHRT_MAX);
}
-signed short status_calc_flee(struct block_list *bl, struct status_change *sc, int flee, bool viewable)
+static signed short status_calc_flee(struct block_list *bl, struct status_change *sc, int flee, bool viewable)
{
nullpo_retr(1, bl);
@@ -5361,7 +5477,7 @@ signed short status_calc_flee(struct block_list *bl, struct status_change *sc, i
return (short)cap_value(flee, 1, SHRT_MAX);
}
-signed short status_calc_flee2(struct block_list *bl, struct status_change *sc, int flee2, bool viewable)
+static signed short status_calc_flee2(struct block_list *bl, struct status_change *sc, int flee2, bool viewable)
{
if(!sc || !sc->count)
return cap_value(flee2,10,SHRT_MAX);
@@ -5383,7 +5499,7 @@ signed short status_calc_flee2(struct block_list *bl, struct status_change *sc,
return (short)cap_value(flee2,10,SHRT_MAX);
}
-defType status_calc_def(struct block_list *bl, struct status_change *sc, int def, bool viewable)
+static defType status_calc_def(struct block_list *bl, struct status_change *sc, int def, bool viewable)
{
nullpo_retr(DEFTYPE_MIN, bl);
@@ -5488,7 +5604,7 @@ defType status_calc_def(struct block_list *bl, struct status_change *sc, int def
return (defType)cap_value(def,DEFTYPE_MIN,DEFTYPE_MAX);
}
-signed short status_calc_def2(struct block_list *bl, struct status_change *sc, int def2, bool viewable)
+static signed short status_calc_def2(struct block_list *bl, struct status_change *sc, int def2, bool viewable)
{
nullpo_retr(1, bl);
if(!sc || !sc->count)
@@ -5565,7 +5681,7 @@ signed short status_calc_def2(struct block_list *bl, struct status_change *sc, i
#endif
}
-defType status_calc_mdef(struct block_list *bl, struct status_change *sc, int mdef, bool viewable)
+static defType status_calc_mdef(struct block_list *bl, struct status_change *sc, int mdef, bool viewable)
{
if(!sc || !sc->count)
@@ -5622,7 +5738,7 @@ defType status_calc_mdef(struct block_list *bl, struct status_change *sc, int md
return (defType)cap_value(mdef,DEFTYPE_MIN,DEFTYPE_MAX);
}
-signed short status_calc_mdef2(struct block_list *bl, struct status_change *sc, int mdef2, bool viewable)
+static signed short status_calc_mdef2(struct block_list *bl, struct status_change *sc, int mdef2, bool viewable)
{
if(!sc || !sc->count)
#ifdef RENEWAL
@@ -5661,7 +5777,7 @@ signed short status_calc_mdef2(struct block_list *bl, struct status_change *sc,
#endif
}
-unsigned short status_calc_speed(struct block_list *bl, struct status_change *sc, int speed)
+static unsigned short status_calc_speed(struct block_list *bl, struct status_change *sc, int speed)
{
struct map_session_data *sd = BL_CAST(BL_PC, bl);
int speed_rate = -1;
@@ -5864,7 +5980,7 @@ unsigned short status_calc_speed(struct block_list *bl, struct status_change *sc
// flag&1 - fixed value [malufett]
// flag&2 - percentage value
-short status_calc_aspd(struct block_list *bl, struct status_change *sc, short flag)
+static short status_calc_aspd(struct block_list *bl, struct status_change *sc, short flag)
{
#ifdef RENEWAL_ASPD
int pots = 0, bonus = 0;
@@ -5904,7 +6020,7 @@ short status_calc_aspd(struct block_list *bl, struct status_change *sc, short fl
if (bl->type != BL_PC) {
bonus = sc->data[SC_ASSNCROS]->val2;
} else {
- switch (BL_UCCAST(BL_PC, bl)->status.weapon) {
+ switch (BL_UCCAST(BL_PC, bl)->weapontype) {
case W_BOW:
case W_REVOLVER:
case W_RIFLE:
@@ -5996,7 +6112,7 @@ short status_calc_aspd(struct block_list *bl, struct status_change *sc, short fl
#endif
}
-short status_calc_fix_aspd(struct block_list *bl, struct status_change *sc, int aspd)
+static short status_calc_fix_aspd(struct block_list *bl, struct status_change *sc, int aspd)
{
nullpo_ret(bl);
if (!sc || !sc->count)
@@ -6016,7 +6132,7 @@ short status_calc_fix_aspd(struct block_list *bl, struct status_change *sc, int
/// Calculates an object's ASPD modifier (alters the base amotion value).
/// Note that the scale of aspd_rate is 1000 = 100%.
-short status_calc_aspd_rate(struct block_list *bl, struct status_change *sc, int aspd_rate)
+static short status_calc_aspd_rate(struct block_list *bl, struct status_change *sc, int aspd_rate)
{
int i;
@@ -6065,7 +6181,7 @@ short status_calc_aspd_rate(struct block_list *bl, struct status_change *sc, int
if (bl->type != BL_PC) {
max = sc->data[SC_ASSNCROS]->val2;
} else {
- switch (BL_UCCAST(BL_PC, bl)->status.weapon) {
+ switch (BL_UCCAST(BL_PC, bl)->weapontype) {
case W_BOW:
case W_REVOLVER:
case W_RIFLE:
@@ -6159,7 +6275,7 @@ short status_calc_aspd_rate(struct block_list *bl, struct status_change *sc, int
return (short)cap_value(aspd_rate,0,SHRT_MAX);
}
-unsigned short status_calc_dmotion(struct block_list *bl, struct status_change *sc, int dmotion)
+static unsigned short status_calc_dmotion(struct block_list *bl, struct status_change *sc, int dmotion)
{
nullpo_ret(bl);
// It has been confirmed on official servers that MvP mobs have no dmotion even without endure
@@ -6177,7 +6293,7 @@ unsigned short status_calc_dmotion(struct block_list *bl, struct status_change *
return (unsigned short)cap_value(dmotion,0,USHRT_MAX);
}
-unsigned int status_calc_maxhp(struct block_list *bl, struct status_change *sc, uint64 maxhp)
+static unsigned int status_calc_maxhp(struct block_list *bl, struct status_change *sc, uint64 maxhp)
{
if (!sc || !sc->count)
@@ -6257,7 +6373,7 @@ unsigned int status_calc_maxhp(struct block_list *bl, struct status_change *sc,
return (unsigned int)cap_value(maxhp, 1, UINT_MAX);
}
-unsigned int status_calc_maxsp(struct block_list *bl, struct status_change *sc, unsigned int maxsp)
+static unsigned int status_calc_maxsp(struct block_list *bl, struct status_change *sc, unsigned int maxsp)
{
if (!sc || !sc->count)
return cap_value(maxsp, 1, UINT_MAX);
@@ -6296,7 +6412,7 @@ unsigned int status_calc_maxsp(struct block_list *bl, struct status_change *sc,
return cap_value(maxsp, 1, UINT_MAX);
}
-unsigned char status_calc_element(struct block_list *bl, struct status_change *sc, int element)
+static unsigned char status_calc_element(struct block_list *bl, struct status_change *sc, int element)
{
if(!sc || !sc->count)
return element;
@@ -6317,7 +6433,7 @@ unsigned char status_calc_element(struct block_list *bl, struct status_change *s
return (unsigned char)cap_value(element,0,UCHAR_MAX);
}
-unsigned char status_calc_element_lv(struct block_list *bl, struct status_change *sc, int lv)
+static unsigned char status_calc_element_lv(struct block_list *bl, struct status_change *sc, int lv)
{
if(!sc || !sc->count)
return lv;
@@ -6340,7 +6456,7 @@ unsigned char status_calc_element_lv(struct block_list *bl, struct status_change
return (unsigned char)cap_value(lv,1,4);
}
-unsigned char status_calc_attack_element(struct block_list *bl, struct status_change *sc, int element)
+static unsigned char status_calc_attack_element(struct block_list *bl, struct status_change *sc, int element)
{
if(!sc || !sc->count)
return element;
@@ -6381,7 +6497,7 @@ unsigned char status_calc_attack_element(struct block_list *bl, struct status_ch
* @param mode The starting mode.
* @return The calculated mode.
*/
-uint32 status_calc_mode(const struct block_list *bl, const struct status_change *sc, uint32 mode)
+static uint32 status_calc_mode(const struct block_list *bl, const struct status_change *sc, uint32 mode)
{
if (sc == NULL || sc->count == 0)
return mode & MD_MASK;
@@ -6402,7 +6518,7 @@ uint32 status_calc_mode(const struct block_list *bl, const struct status_change
* @param bl The requested bl.
* @return The bl's name or NULL if not available.
*/
-const char *status_get_name(const struct block_list *bl)
+static const char *status_get_name(const struct block_list *bl)
{
nullpo_ret(bl);
switch (bl->type) {
@@ -6422,12 +6538,12 @@ const char *status_get_name(const struct block_list *bl)
}
/*==========================================
-* Get the class of the current bl
-* return
-* 0 = fail
-* class_id = success
-*------------------------------------------*/
-int status_get_class(const struct block_list *bl)
+ * Get the class of the current bl
+ * return
+ * 0 = fail
+ * class_id = success
+ *------------------------------------------*/
+static int status_get_class(const struct block_list *bl)
{
nullpo_ret(bl);
switch (bl->type) {
@@ -6442,12 +6558,12 @@ int status_get_class(const struct block_list *bl)
return 0;
}
/*==========================================
-* Get the base level of the current bl
-* return
-* 1 = fail
-* level = success
-*------------------------------------------*/
-int status_get_lv(const struct block_list *bl)
+ * Get the base level of the current bl
+ * return
+ * 1 = fail
+ * level = success
+ *------------------------------------------*/
+static int status_get_lv(const struct block_list *bl)
{
nullpo_ret(bl);
switch (bl->type) {
@@ -6462,7 +6578,7 @@ int status_get_lv(const struct block_list *bl)
return 1;
}
-struct regen_data *status_get_regen_data(struct block_list *bl)
+static struct regen_data *status_get_regen_data(struct block_list *bl)
{
nullpo_retr(NULL, bl);
switch (bl->type) {
@@ -6475,7 +6591,7 @@ struct regen_data *status_get_regen_data(struct block_list *bl)
}
}
-struct status_data *status_get_status_data(struct block_list *bl)
+static struct status_data *status_get_status_data(struct block_list *bl)
{
nullpo_retr(&status->dummy, bl);
@@ -6496,7 +6612,7 @@ struct status_data *status_get_status_data(struct block_list *bl)
}
}
-struct status_data *status_get_base_status(struct block_list *bl)
+static struct status_data *status_get_base_status(struct block_list *bl)
{
nullpo_retr(NULL, bl);
switch (bl->type) {
@@ -6520,7 +6636,7 @@ struct status_data *status_get_base_status(struct block_list *bl)
}
}
-defType status_get_def(struct block_list *bl)
+static defType status_get_def(struct block_list *bl)
{
struct unit_data *ud;
struct status_data *st = status->get_status_data(bl);
@@ -6532,7 +6648,7 @@ defType status_get_def(struct block_list *bl)
return cap_value(def, DEFTYPE_MIN, DEFTYPE_MAX);
}
-unsigned short status_get_speed(struct block_list *bl)
+static unsigned short status_get_speed(struct block_list *bl)
{
nullpo_ret(bl);
if (bl->type == BL_NPC) //Only BL with speed data but no status_data [Skotlex]
@@ -6540,7 +6656,7 @@ unsigned short status_get_speed(struct block_list *bl)
return status->get_status_data(bl)->speed;
}
-int status_get_party_id(const struct block_list *bl)
+static int status_get_party_id(const struct block_list *bl)
{
nullpo_ret(bl);
switch (bl->type) {
@@ -6596,7 +6712,7 @@ int status_get_party_id(const struct block_list *bl)
return 0;
}
-int status_get_guild_id(const struct block_list *bl)
+static int status_get_guild_id(const struct block_list *bl)
{
nullpo_ret(bl);
switch (bl->type) {
@@ -6662,7 +6778,7 @@ int status_get_guild_id(const struct block_list *bl)
return 0;
}
-int status_get_emblem_id(const struct block_list *bl)
+static int status_get_emblem_id(const struct block_list *bl)
{
nullpo_ret(bl);
switch (bl->type) {
@@ -6724,7 +6840,7 @@ int status_get_emblem_id(const struct block_list *bl)
return 0;
}
-int status_get_mexp(const struct block_list *bl)
+static int status_get_mexp(const struct block_list *bl)
{
nullpo_ret(bl);
if (bl->type == BL_MOB)
@@ -6734,7 +6850,7 @@ int status_get_mexp(const struct block_list *bl)
return 0;
}
-int status_get_race2(const struct block_list *bl)
+static int status_get_race2(const struct block_list *bl)
{
nullpo_ret(bl);
if (bl->type == BL_MOB)
@@ -6744,13 +6860,13 @@ int status_get_race2(const struct block_list *bl)
return 0;
}
-int status_isdead(struct block_list *bl)
+static int status_isdead(struct block_list *bl)
{
nullpo_ret(bl);
return status->get_status_data(bl)->hp == 0;
}
-int status_isimmune(struct block_list *bl)
+static int status_isimmune(struct block_list *bl)
{
struct status_change *sc = NULL;
nullpo_ret(bl);
@@ -6767,14 +6883,14 @@ int status_isimmune(struct block_list *bl)
return 0;
}
-struct view_data *status_get_viewdata(struct block_list *bl)
+static struct view_data *status_get_viewdata(struct block_list *bl)
{
nullpo_retr(NULL, bl);
switch (bl->type) {
case BL_PC: return &BL_UCAST(BL_PC, bl)->vd;
case BL_MOB: return BL_UCAST(BL_MOB, bl)->vd;
case BL_PET: return &BL_UCAST(BL_PET, bl)->vd;
- case BL_NPC: return BL_UCAST(BL_NPC, bl)->vd;
+ case BL_NPC: return &BL_UCAST(BL_NPC, bl)->vd;
case BL_HOM: return BL_UCAST(BL_HOM, bl)->vd;
case BL_MER: return BL_UCAST(BL_MER, bl)->vd;
case BL_ELEM: return BL_UCAST(BL_ELEM, bl)->vd;
@@ -6782,7 +6898,7 @@ struct view_data *status_get_viewdata(struct block_list *bl)
return NULL;
}
-void status_set_viewdata(struct block_list *bl, int class_)
+static void status_set_viewdata(struct block_list *bl, int class_)
{
struct view_data* vd;
nullpo_retv(bl);
@@ -6829,34 +6945,31 @@ void status_set_viewdata(struct block_list *bl, int class_)
}
sd->vd.class = class_;
clif->get_weapon_view(sd, &sd->vd.weapon, &sd->vd.shield);
- sd->vd.head_top = sd->status.head_top;
- sd->vd.head_mid = sd->status.head_mid;
- sd->vd.head_bottom = sd->status.head_bottom;
+ sd->vd.head_top = sd->status.look.head_top;
+ sd->vd.head_mid = sd->status.look.head_mid;
+ sd->vd.head_bottom = sd->status.look.head_bottom;
sd->vd.hair_style = cap_value(sd->status.hair,0,battle_config.max_hair_style);
sd->vd.hair_color = cap_value(sd->status.hair_color,0,battle_config.max_hair_color);
sd->vd.cloth_color = cap_value(sd->status.clothes_color,0,battle_config.max_cloth_color);
- sd->vd.robe = sd->status.robe;
+ sd->vd.robe = sd->status.look.robe;
sd->vd.body_style = sd->status.body;
sd->vd.sex = sd->status.sex;
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));
@@ -6895,10 +7008,14 @@ void status_set_viewdata(struct block_list *bl, int class_)
case BL_NPC:
{
struct npc_data *nd = BL_UCAST(BL_NPC, bl);
- if (vd != NULL)
- nd->vd = vd;
- else
+ if (vd != NULL) {
+ memcpy(&nd->vd, vd, sizeof(struct view_data));
+ } else if (pc->db_checkid(class_)) {
+ memset(&nd->vd, 0, sizeof(struct view_data));
+ nd->vd.class = class_;
+ } else {
ShowError("status_set_viewdata (NPC): No view data for class %d (name=%s)\n", class_, nd->name);
+ }
}
break;
case BL_HOM: //[blackhole89]
@@ -6932,7 +7049,7 @@ void status_set_viewdata(struct block_list *bl, int class_)
}
/// Returns the status_change data of bl or NULL if it doesn't exist.
-struct status_change *status_get_sc(struct block_list *bl)
+static struct status_change *status_get_sc(struct block_list *bl)
{
if (bl != NULL) {
switch (bl->type) {
@@ -6947,7 +7064,7 @@ struct status_change *status_get_sc(struct block_list *bl)
return NULL;
}
-void status_change_init(struct block_list *bl)
+static void status_change_init(struct block_list *bl)
{
struct status_change *sc = status->get_sc(bl);
nullpo_retv(sc);
@@ -6960,7 +7077,7 @@ void status_change_init(struct block_list *bl)
* @see status_change_start for the expected parameters.
* @return the adjusted duration based on flag values.
*/
-int status_get_sc_def(struct block_list *src, struct block_list *bl, enum sc_type type, int rate, int tick, int flag)
+static int status_get_sc_def(struct block_list *src, struct block_list *bl, enum sc_type type, int rate, int tick, int flag)
{
//Percentual resistance: 10000 = 100% Resist
//Example: 50% -> sc_def=5000 -> 25%; 5000ms -> tick_def=5000 -> 2500ms
@@ -7324,7 +7441,7 @@ int status_get_sc_def(struct block_list *src, struct block_list *bl, enum sc_typ
}
/* [Ind/Hercules] fast-checkin sc-display array */
-void status_display_add(struct map_session_data *sd, enum sc_type type, int dval1, int dval2, int dval3)
+static void status_display_add(struct map_session_data *sd, enum sc_type type, int dval1, int dval2, int dval3)
{
struct sc_display_entry *entry;
int i;
@@ -7353,7 +7470,7 @@ void status_display_add(struct map_session_data *sd, enum sc_type type, int dval
sd->sc_display[ sd->sc_display_count - 1 ] = entry;
}
-void status_display_remove(struct map_session_data *sd, enum sc_type type)
+static void status_display_remove(struct map_session_data *sd, enum sc_type type)
{
int i;
@@ -7387,6 +7504,7 @@ void status_display_remove(struct map_session_data *sd, enum sc_type type)
}
}
}
+
/**
* Starts a status change.
*
@@ -7404,7 +7522,7 @@ void status_display_remove(struct map_session_data *sd, enum sc_type type)
* @retval 0 if no status change happened.
* @retval 1 if the status change was successfully applied.
*/
-int status_change_start(struct block_list *src, struct block_list *bl, enum sc_type type, int rate, int val1, int val2, int val3, int val4, int tick, int flag)
+static int status_change_start(struct block_list *src, struct block_list *bl, enum sc_type type, int rate, int val1, int val2, int val3, int val4, int tick, int flag)
{
struct map_session_data *sd = NULL;
struct status_change* sc;
@@ -7438,73 +7556,8 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
#endif // 0
}
- if( sc->data[SC_REFRESH] ) {
- if( type >= SC_COMMON_MIN && type <= SC_COMMON_MAX) // Confirmed.
- return 0; // Immune to status ailements
- switch( type ) {
- case SC_DEEP_SLEEP:
- case SC__CHAOS:
- case SC_BURNING:
- case SC_STUN:
- case SC_SLEEP:
- case SC_CURSE:
- case SC_STONE:
- case SC_POISON:
- case SC_BLIND:
- case SC_SILENCE:
- case SC_BLOODING:
- case SC_FREEZE:
- case SC_FROSTMISTY:
- case SC_COLD:
- case SC_TOXIN:
- case SC_PARALYSE:
- case SC_VENOMBLEED:
- case SC_MAGICMUSHROOM:
- case SC_DEATHHURT:
- case SC_PYREXIA:
- case SC_OBLIVIONCURSE:
- case SC_MARSHOFABYSS:
- case SC_MANDRAGORA:
- return 0;
- }
- } else if( sc->data[SC_INSPIRATION] ) {
- if( type >= SC_COMMON_MIN && type <= SC_COMMON_MAX )
- return 0; // Immune to status ailements
- switch( type ) {
- case SC_POISON:
- case SC_BLIND:
- case SC_STUN:
- case SC_SILENCE:
- case SC__CHAOS:
- case SC_STONE:
- case SC_SLEEP:
- case SC_BLOODING:
- case SC_CURSE:
- case SC_BURNING:
- case SC_FROSTMISTY:
- case SC_FREEZE:
- case SC_COLD:
- case SC_FEAR:
- case SC_TOXIN:
- case SC_PARALYSE:
- case SC_VENOMBLEED:
- case SC_MAGICMUSHROOM:
- case SC_DEATHHURT:
- case SC_PYREXIA:
- case SC_OBLIVIONCURSE:
- case SC_LEECHESEND:
- case SC_DEEP_SLEEP:
- case SC_SATURDAY_NIGHT_FEVER:
- case SC__BODYPAINT:
- case SC__ENERVATION:
- case SC__GROOMY:
- case SC__IGNORANCE:
- case SC__LAZINESS:
- case SC__UNLUCKY:
- case SC__WEAKNESS:
- return 0;
- }
- }
+ if (status->is_immune_to_status(sc, type))
+ return 0;
sd = BL_CAST(BL_PC, bl);
@@ -7514,8 +7567,8 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
if( !tick ) return 0;
}
- undead_flag = battle->check_undead(st->race,st->def_ele);
- //Check for inmunities / sc fails
+ undead_flag = battle->check_undead(st->race, st->def_ele);
+ // Check for inmunities / sc fails
switch (type) {
case SC_DRUMBATTLE:
case SC_NIBELUNGEN:
@@ -7737,30 +7790,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;
@@ -7804,310 +7833,14 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
}
//Check for BOSS resistances
- if(st->mode&MD_BOSS && !(flag&SCFLAG_NOAVOID)) {
- if (type>=SC_COMMON_MIN && type <= SC_COMMON_MAX)
+ if (st->mode & MD_BOSS && !(flag & SCFLAG_NOAVOID)) {
+ if (status->is_boss_resist_sc(type))
return 0;
- switch (type) {
- case SC_BLESSING:
- case SC_DEC_AGI:
- case SC_PROVOKE:
- case SC_COMA:
- case SC_GRAVITATION:
- case SC_NJ_SUITON:
- case SC_RICHMANKIM:
- case SC_ROKISWEIL:
- case SC_FOGWALL:
- case SC_FROSTMISTY:
- case SC_BURNING:
- case SC_MARSHOFABYSS:
- case SC_ADORAMUS:
- case SC_NEEDLE_OF_PARALYZE:
- case SC_DEEP_SLEEP:
- case SC_COLD:
-
- // Exploit prevention - kRO Fix
- case SC_PYREXIA:
- case SC_DEATHHURT:
- case SC_TOXIN:
- case SC_PARALYSE:
- case SC_VENOMBLEED:
- case SC_MAGICMUSHROOM:
- case SC_OBLIVIONCURSE:
- case SC_LEECHESEND:
-
- // Ranger Effects
- case SC_WUGBITE:
- case SC_ELECTRICSHOCKER:
- case SC_MAGNETICFIELD:
-
- // Masquerades
- case SC__ENERVATION:
- case SC__GROOMY:
- case SC__LAZINESS:
- case SC__UNLUCKY:
- case SC__WEAKNESS:
- case SC__IGNORANCE:
-
- // Other Effects
- case SC_VACUUM_EXTREME:
- case SC_NETHERWORLD:
- case SC_FRESHSHRIMP:
- case SC_SV_ROOTTWIST:
- case SC_BITESCAR:
- return 0;
- }
}
//Before overlapping fail, one must check for status cured.
- switch (type) {
- case SC_BLESSING:
- //TO-DO Blessing and Agi up should do 1 damage against players on Undead Status, even on PvM
- //but cannot be plagiarized (this requires aegis investigation on packets and official behavior) [Brainstorm]
- if ((!undead_flag && st->race!=RC_DEMON) || bl->type == BL_PC) {
- status_change_end(bl, SC_CURSE, INVALID_TIMER);
- if (sc->data[SC_STONE] && sc->opt1 == OPT1_STONE)
- status_change_end(bl, SC_STONE, INVALID_TIMER);
- }
- if(sc->data[SC_SOULLINK] && sc->data[SC_SOULLINK]->val2 == SL_HIGH)
- status_change_end(bl, SC_SOULLINK, INVALID_TIMER);
- break;
- case SC_INC_AGI:
- status_change_end(bl, SC_DEC_AGI, INVALID_TIMER);
- if(sc->data[SC_SOULLINK] && sc->data[SC_SOULLINK]->val2 == SL_HIGH)
- status_change_end(bl, SC_SOULLINK, INVALID_TIMER);
- break;
- case SC_QUAGMIRE:
- status_change_end(bl, SC_CONCENTRATION, INVALID_TIMER);
- status_change_end(bl, SC_TRUESIGHT, INVALID_TIMER);
- status_change_end(bl, SC_WINDWALK, INVALID_TIMER);
- FALLTHROUGH
- //Also blocks the ones below...
- case SC_DEC_AGI:
- case SC_ADORAMUS:
- status_change_end(bl, SC_CARTBOOST, INVALID_TIMER);
- //Also blocks the ones below...
- FALLTHROUGH
- case SC_DONTFORGETME:
- status_change_end(bl, SC_INC_AGI, INVALID_TIMER);
- status_change_end(bl, SC_ADRENALINE, INVALID_TIMER);
- status_change_end(bl, SC_ADRENALINE2, INVALID_TIMER);
- status_change_end(bl, SC_SPEARQUICKEN, INVALID_TIMER);
- status_change_end(bl, SC_TWOHANDQUICKEN, INVALID_TIMER);
- status_change_end(bl, SC_ONEHANDQUICKEN, INVALID_TIMER);
- status_change_end(bl, SC_MER_QUICKEN, INVALID_TIMER);
- status_change_end(bl, SC_ACCELERATION, INVALID_TIMER);
- break;
- case SC_ONEHANDQUICKEN:
- //Removes the Aspd potion effect, as reported by Vicious. [Skotlex]
- status_change_end(bl, SC_ATTHASTE_POTION1, INVALID_TIMER);
- status_change_end(bl, SC_ATTHASTE_POTION2, INVALID_TIMER);
- status_change_end(bl, SC_ATTHASTE_POTION3, INVALID_TIMER);
- status_change_end(bl, SC_ATTHASTE_INFINITY, INVALID_TIMER);
- break;
- case SC_OVERTHRUSTMAX:
- //Cancels Normal Overthrust. [Skotlex]
- status_change_end(bl, SC_OVERTHRUST, INVALID_TIMER);
- break;
- case SC_KYRIE:
- //Cancels Assumptio
- status_change_end(bl, SC_ASSUMPTIO, INVALID_TIMER);
- break;
- case SC_MAGNIFICAT:
- //Cancels Offertorium
- status_change_end(bl, SC_OFFERTORIUM, INVALID_TIMER);
- break;
- case SC_OFFERTORIUM:
- //Cancels Magnificat
- status_change_end(bl, SC_MAGNIFICAT, INVALID_TIMER);
- break;
- case SC_DELUGE:
- if (sc->data[SC_FOGWALL] && sc->data[SC_BLIND])
- status_change_end(bl, SC_BLIND, INVALID_TIMER);
- break;
- case SC_SILENCE:
- if (sc->data[SC_GOSPEL] && sc->data[SC_GOSPEL]->val4 == BCT_SELF)
- status_change_end(bl, SC_GOSPEL, INVALID_TIMER);
- break;
- case SC_HIDING:
- status_change_end(bl, SC_RG_CCONFINE_M, INVALID_TIMER);
- status_change_end(bl, SC_RG_CCONFINE_S, INVALID_TIMER);
- break;
- case SC_BERSERK:
- if( val3 == SC__BLOODYLUST )
- break;
- if(battle_config.berserk_cancels_buffs) {
- status_change_end(bl, SC_ONEHANDQUICKEN, INVALID_TIMER);
- status_change_end(bl, SC_TWOHANDQUICKEN, INVALID_TIMER);
- status_change_end(bl, SC_LKCONCENTRATION, INVALID_TIMER);
- status_change_end(bl, SC_PARRYING, INVALID_TIMER);
- status_change_end(bl, SC_AURABLADE, INVALID_TIMER);
- status_change_end(bl, SC_MER_QUICKEN, INVALID_TIMER);
- }
- #ifdef RENEWAL
- else {
- status_change_end(bl, SC_TWOHANDQUICKEN, INVALID_TIMER);
- }
- #endif
- break;
- case SC_ASSUMPTIO:
- status_change_end(bl, SC_KYRIE, INVALID_TIMER);
- status_change_end(bl, SC_KAITE, INVALID_TIMER);
- break;
- case SC_KAITE:
- status_change_end(bl, SC_ASSUMPTIO, INVALID_TIMER);
- break;
- case SC_CARTBOOST:
- if (sc->data[SC_DEC_AGI] || sc->data[SC_ADORAMUS]) {
- //Cancel Decrease Agi, but take no further effect [Skotlex]
- status_change_end(bl, SC_DEC_AGI, INVALID_TIMER);
- status_change_end(bl, SC_ADORAMUS, INVALID_TIMER);
- return 0;
- }
- break;
- case SC_FUSION:
- status_change_end(bl, SC_SOULLINK, INVALID_TIMER);
- break;
- case SC_GS_ADJUSTMENT:
- status_change_end(bl, SC_GS_MADNESSCANCEL, INVALID_TIMER);
- break;
- case SC_GS_MADNESSCANCEL:
- status_change_end(bl, SC_GS_ADJUSTMENT, INVALID_TIMER);
- break;
- //NPC_CHANGEUNDEAD will debuff Blessing and Agi Up
- case SC_PROPERTYUNDEAD:
- status_change_end(bl, SC_BLESSING, INVALID_TIMER);
- status_change_end(bl, SC_INC_AGI, INVALID_TIMER);
- break;
- case SC_FOOD_STR:
- status_change_end(bl, SC_FOOD_STR_CASH, INVALID_TIMER);
- break;
- case SC_FOOD_AGI:
- status_change_end(bl, SC_FOOD_AGI_CASH, INVALID_TIMER);
- break;
- case SC_FOOD_VIT:
- status_change_end(bl, SC_FOOD_VIT_CASH, INVALID_TIMER);
- break;
- case SC_FOOD_INT:
- status_change_end(bl, SC_FOOD_INT_CASH, INVALID_TIMER);
- break;
- case SC_FOOD_DEX:
- status_change_end(bl, SC_FOOD_DEX_CASH, INVALID_TIMER);
- break;
- case SC_FOOD_LUK:
- status_change_end(bl, SC_FOOD_LUK_CASH, INVALID_TIMER);
- break;
- case SC_FOOD_STR_CASH:
- status_change_end(bl, SC_FOOD_STR, INVALID_TIMER);
- break;
- case SC_FOOD_AGI_CASH:
- status_change_end(bl, SC_FOOD_AGI, INVALID_TIMER);
- break;
- case SC_FOOD_VIT_CASH:
- status_change_end(bl, SC_FOOD_VIT, INVALID_TIMER);
- break;
- case SC_FOOD_INT_CASH:
- status_change_end(bl, SC_FOOD_INT, INVALID_TIMER);
- break;
- case SC_FOOD_DEX_CASH:
- status_change_end(bl, SC_FOOD_DEX, INVALID_TIMER);
- break;
- case SC_FOOD_LUK_CASH:
- status_change_end(bl, SC_FOOD_LUK, INVALID_TIMER);
- break;
- case SC_GM_BATTLE:
- status_change_end(bl, SC_GM_BATTLE2, INVALID_TIMER);
- break;
- case SC_GM_BATTLE2:
- status_change_end(bl, SC_GM_BATTLE, INVALID_TIMER);
- break;
- case SC_ENDURE:
- if( val4 == 1 )
- status_change_end(bl, SC_LKCONCENTRATION, INVALID_TIMER);
- break;
- case SC_FIGHTINGSPIRIT:
- case SC_OVERED_BOOST:
- status_change_end(bl, type, INVALID_TIMER); // Remove previous one.
- break;
- case SC_MARSHOFABYSS:
- status_change_end(bl, SC_INCAGI, INVALID_TIMER);
- status_change_end(bl, SC_WINDWALK, INVALID_TIMER);
- status_change_end(bl, SC_ATTHASTE_POTION1, INVALID_TIMER);
- status_change_end(bl, SC_ATTHASTE_POTION2, INVALID_TIMER);
- status_change_end(bl, SC_ATTHASTE_POTION3, INVALID_TIMER);
- status_change_end(bl, SC_ATTHASTE_INFINITY, INVALID_TIMER);
- break;
- //Group A Status (doesn't overlap)
- case SC_SWING:
- case SC_SYMPHONY_LOVE:
- case SC_MOONLIT_SERENADE:
- case SC_RUSH_WINDMILL:
- case SC_ECHOSONG:
- case SC_HARMONIZE:
- case SC_FRIGG_SONG:
- if (type != SC_SWING) status_change_end(bl, SC_SWING, INVALID_TIMER);
- if (type != SC_SYMPHONY_LOVE) status_change_end(bl, SC_SYMPHONY_LOVE, INVALID_TIMER);
- if (type != SC_MOONLIT_SERENADE) status_change_end(bl, SC_MOONLIT_SERENADE, INVALID_TIMER);
- if (type != SC_RUSH_WINDMILL) status_change_end(bl, SC_RUSH_WINDMILL, INVALID_TIMER);
- if (type != SC_ECHOSONG) status_change_end(bl, SC_ECHOSONG, INVALID_TIMER);
- if (type != SC_HARMONIZE) status_change_end(bl, SC_HARMONIZE, INVALID_TIMER);
- if (type != SC_FRIGG_SONG) status_change_end(bl, SC_FRIGG_SONG, INVALID_TIMER);
- break;
- //Group B Status
- case SC_SIREN:
- case SC_DEEP_SLEEP:
- case SC_SIRCLEOFNATURE:
- case SC_LERADS_DEW:
- case SC_MELODYOFSINK:
- case SC_BEYOND_OF_WARCRY:
- case SC_UNLIMITED_HUMMING_VOICE:
- case SC_GLOOMYDAY:
- case SC_SONG_OF_MANA:
- case SC_DANCE_WITH_WUG:
- if (type != SC_SIREN) status_change_end(bl, SC_SIREN, INVALID_TIMER);
- if (type != SC_DEEP_SLEEP) status_change_end(bl, SC_DEEP_SLEEP, INVALID_TIMER);
- if (type != SC_SIRCLEOFNATURE) status_change_end(bl, SC_SIRCLEOFNATURE, INVALID_TIMER);
- if (type != SC_LERADS_DEW) status_change_end(bl, SC_LERADS_DEW, INVALID_TIMER);
- if (type != SC_MELODYOFSINK) status_change_end(bl, SC_MELODYOFSINK, INVALID_TIMER);
- if (type != SC_BEYOND_OF_WARCRY) status_change_end(bl, SC_BEYOND_OF_WARCRY, INVALID_TIMER);
- if (type != SC_UNLIMITED_HUMMING_VOICE) status_change_end(bl, SC_UNLIMITED_HUMMING_VOICE, INVALID_TIMER);
- if (type != SC_GLOOMYDAY) status_change_end(bl, SC_GLOOMYDAY, INVALID_TIMER);
- if (type != SC_SONG_OF_MANA) status_change_end(bl, SC_SONG_OF_MANA, INVALID_TIMER);
- if (type != SC_DANCE_WITH_WUG) status_change_end(bl, SC_DANCE_WITH_WUG, INVALID_TIMER);
- break;
- case SC_REFLECTSHIELD:
- status_change_end(bl, SC_LG_REFLECTDAMAGE, INVALID_TIMER);
- break;
- case SC_LG_REFLECTDAMAGE:
- status_change_end(bl, SC_REFLECTSHIELD, INVALID_TIMER);
- break;
- case SC_SHIELDSPELL_DEF:
- case SC_SHIELDSPELL_MDEF:
- case SC_SHIELDSPELL_REF:
- status_change_end(bl, SC_MAGNIFICAT, INVALID_TIMER);
- status_change_end(bl, SC_SHIELDSPELL_DEF, INVALID_TIMER);
- status_change_end(bl, SC_SHIELDSPELL_MDEF, INVALID_TIMER);
- status_change_end(bl, SC_SHIELDSPELL_REF, INVALID_TIMER);
- break;
- case SC_GENTLETOUCH_ENERGYGAIN:
- case SC_GENTLETOUCH_CHANGE:
- case SC_GENTLETOUCH_REVITALIZE:
- if( type != SC_GENTLETOUCH_REVITALIZE )
- status_change_end(bl, SC_GENTLETOUCH_REVITALIZE, INVALID_TIMER);
- if( type != SC_GENTLETOUCH_ENERGYGAIN )
- status_change_end(bl, SC_GENTLETOUCH_ENERGYGAIN, INVALID_TIMER);
- if( type != SC_GENTLETOUCH_CHANGE )
- status_change_end(bl, SC_GENTLETOUCH_CHANGE, INVALID_TIMER);
- break;
- case SC_INVINCIBLE:
- status_change_end(bl, SC_INVINCIBLEOFF, INVALID_TIMER);
- break;
- case SC_INVINCIBLEOFF:
- status_change_end(bl, SC_INVINCIBLE, INVALID_TIMER);
- break;
- case SC_MAGICPOWER:
- status_change_end(bl, type, INVALID_TIMER);
- break;
- }
+ if (status->end_sc_before_start(bl, st, sc, type, undead_flag, val1, val2, val3, val4))
+ return 0;
//Check for overlapping fails
if( (sce = sc->data[type]) ) {
@@ -8463,8 +8196,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:
@@ -8599,6 +8334,7 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
case SC_TURNKICK_READY:
case SC_DODGE_READY:
case SC_PUSH_CART:
+ case SC_DAILYSENDMAILCNT:
tick = INFINITE_DURATION;
break;
@@ -9729,10 +9465,10 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
return 0;
PER( 100 / (status_get_max_hp(bl) / hp), lv );
- status->heal(bl, (!(hp%2) ? (6-lv) *4 / 100 : -(lv*4) / 100), 0, 1);
+ status->heal(bl, (!(hp%2) ? (6-lv) *4 / 100 : -(lv*4) / 100), 0, STATUS_HEAL_FORCED);
PER( 100 / (status_get_max_sp(bl) / sp), lv );
- status->heal(bl, 0,(!(sp%2) ? (6-lv) *3 / 100 : -(lv*3) / 100), 1);
+ status->heal(bl, 0,(!(sp%2) ? (6-lv) *3 / 100 : -(lv*3) / 100), STATUS_HEAL_FORCED);
}
#undef PER
break;
@@ -9853,25 +9589,25 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
val3 = 25 * val1; // Move speed reduction
break;
default:
- if (calc_flag == SCB_NONE && status->dbs->SkillChangeTable[type] == 0 && status->dbs->IconChangeTable[type] == 0) {
- //Status change with no calc, no icon, and no skill associated...?
- ShowError("UnknownStatusChange [%d]\n", type);
+ if (status->change_start_unknown_sc(src, bl, type, calc_flag, rate, val1, val2, val3, val4, tick, flag)) {
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;
@@ -9880,27 +9616,247 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
}
/* values that must be set regardless of SCFLAG_LOADED e.g. val_flag */
- switch(type) {
+ val_flag = status->get_val_flag(type);
+
+ /* [Ind/Hercules] */
+ status->change_start_display(sd, type, val1, val2, val3, val4);
+
+ //Those that make you stop attacking/walking....
+ status->change_start_stop_action(bl, type);
+
+ // Set option as needed.
+ opt_flag = status->change_start_set_option(bl, sc, type, val1, val2, val3, val4);
+
+ //On Aegis, when turning on a status change, first goes the option packet, then the sc packet.
+ if(opt_flag) {
+ clif->changeoption(bl);
+ if( sd && opt_flag&0x4 ) {
+ if (vd)
+ clif->changelook(bl, LOOK_BASE, vd->class);
+ clif->changelook(bl,LOOK_WEAPON,0);
+ clif->changelook(bl,LOOK_SHIELD,0);
+ if (vd)
+ clif->changelook(bl,LOOK_CLOTHES_COLOR,vd->cloth_color);
+ }
+ }
+ if (calc_flag&SCB_DYE) {
+ //Reset DYE color
+ if (vd && vd->cloth_color) {
+ val4 = vd->cloth_color;
+ clif->changelook(bl,LOOK_CLOTHES_COLOR,0);
+ }
+ calc_flag&=~SCB_DYE;
+ }
+
+#if 0 //Currently No SC's use this
+ if (calc_flag&SCB_BODY) {
+ //Reset Body Style
+ if (vd && vd->body_style) {
+ val4 = vd->body_style;
+ clif->changelook(bl,LOOK_BODY2,0);
+ }
+ calc_flag&=~SCB_BODY;
+ }
+#endif
+
+ if(!(flag&SCFLAG_NOICON) && !(flag&SCFLAG_LOADED && status->dbs->DisplayType[type]))
+ clif->status_change(bl,status->dbs->IconChangeTable[type],1,tick,(val_flag&1)?val1:1,(val_flag&2)?val2:0,(val_flag&4)?val3:0);
+
+ /**
+ * used as temporary storage for scs with interval ticks, so that the actual duration is sent to the client first.
+ **/
+ if( tick_time )
+ tick = tick_time;
+
+ //Don't trust the previous sce assignment, in case the SC ended somewhere between there and here.
+ if((sce=sc->data[type])) {// reuse old sc
+ if( sce->timer != INVALID_TIMER )
+ timer->delete(sce->timer, status->change_timer);
+ } else {// new sc
+ ++(sc->count);
+ sce = sc->data[type] = ers_alloc(status->data_ers, struct status_change_entry);
+ }
+
+ sce->val1 = val1;
+ sce->val2 = val2;
+ sce->val3 = val3;
+ sce->val4 = val4;
+
+ if (tick >= 0) {
+ sce->timer = timer->add(timer->gettick() + tick, status->change_timer, bl->id, type);
+ sce->infinite_duration = false;
+ } else {
+ sce->timer = INVALID_TIMER; //Infinite duration
+ sce->infinite_duration = true;
+ if( sd )
+ chrif->save_scdata_single(sd->status.account_id,sd->status.char_id,type,sce);
+ }
+
+ if (calc_flag)
+ status_calc_bl(bl,calc_flag);
+
+ if(sd && sd->pd)
+ pet->sc_check(sd, type); //Skotlex: Pet Status Effect Healing
+
+ switch (type) {
+ case SC_BERSERK:
+ if (!(sce->val2)) { //don't heal if already set
+ status->heal(bl, st->max_hp, 0, STATUS_HEAL_FORCED); //Do not use percent_heal as this healing must override BERSERK's block.
+ status->set_sp(bl, 0, STATUS_HEAL_DEFAULT); //Damage all SP
+ }
+ sce->val2 = 5 * st->max_hp / 100;
+ break;
+ case SC_HLIF_CHANGE:
+ status_percent_heal(bl, 100, 100);
+ break;
+ case SC_RUN:
+ {
+ struct unit_data *ud = unit->bl2ud(bl);
+ if( ud )
+ ud->state.running = unit->run(bl, NULL, SC_RUN);
+ }
+ break;
+ case SC_CASH_BOSS_ALARM:
+ if( sd )
+ clif->bossmapinfo(sd->fd, map->id2boss(sce->val1), 0); // First Message
+ break;
+ case SC_MER_HP:
+ status_percent_heal(bl, 100, 0); // Recover Full HP
+ break;
+ case SC_MER_SP:
+ status_percent_heal(bl, 0, 100); // Recover Full SP
+ break;
+ case SC_PROMOTE_HEALTH_RESERCH:
+ status_percent_heal(bl, sce->val4, 0);
+ break;
+ case SC_ENERGY_DRINK_RESERCH:
+ status_percent_heal(bl, 0, sce->val4);
+ break;
+ /**
+ * Ranger
+ **/
+ case SC_WUGDASH:
+ {
+ struct unit_data *ud = unit->bl2ud(bl);
+ if( ud )
+ ud->state.running = unit->run(bl, sd, SC_WUGDASH);
+ }
+ break;
+ case SC_COMBOATTACK:
+ switch (sce->val1) {
+ case TK_STORMKICK:
+ clif->skill_nodamage(bl,bl,TK_READYSTORM,1,1);
+ break;
+ case TK_DOWNKICK:
+ clif->skill_nodamage(bl,bl,TK_READYDOWN,1,1);
+ break;
+ case TK_TURNKICK:
+ clif->skill_nodamage(bl,bl,TK_READYTURN,1,1);
+ break;
+ case TK_COUNTER:
+ clif->skill_nodamage(bl,bl,TK_READYCOUNTER,1,1);
+ break;
+ case MO_COMBOFINISH:
+ case CH_TIGERFIST:
+ case CH_CHAINCRUSH:
+ if (sd)
+ clif->skillinfo(sd,MO_EXTREMITYFIST, INF_SELF_SKILL);
+ break;
+ case TK_JUMPKICK:
+ if (sd)
+ clif->skillinfo(sd,TK_JUMPKICK, INF_SELF_SKILL);
+ break;
+ case MO_TRIPLEATTACK:
+ if (sd && pc->checkskill(sd, SR_DRAGONCOMBO) > 0)
+ clif->skillinfo(sd,SR_DRAGONCOMBO, INF_SELF_SKILL);
+ break;
+ case SR_FALLENEMPIRE:
+ if (sd){
+ clif->skillinfo(sd,SR_GATEOFHELL, INF_SELF_SKILL);
+ clif->skillinfo(sd,SR_TIGERCANNON, INF_SELF_SKILL);
+ }
+ break;
+ }
+ break;
+ case SC_RAISINGDRAGON:
+ sce->val2 = st->max_hp / 100;// Officially tested its 1%hp drain. [Jobbie]
+ break;
+ }
+
+ if( opt_flag&2 && sd && sd->touching_id )
+ npc->touchnext_areanpc(sd,false); // run OnTouch_ on next char in range
+
+ return 1;
+}
+
+static bool status_change_start_unknown_sc(struct block_list *src, struct block_list *bl, enum sc_type type, int calc_flag, int rate, int val1, int val2, int val3, int val4, int tick, int flag)
+{
+ Assert_retr(false, type >= SC_NONE && type < SC_MAX);
+ if (calc_flag == SCB_NONE && status->dbs->SkillChangeTable[type] == 0 && status->dbs->IconChangeTable[type] == 0) {
+ //Status change with no calc, no icon, and no skill associated...?
+ ShowError("UnknownStatusChange [%d]\n", type);
+ return true;
+ }
+ return false;
+}
+
+static void status_change_start_display(struct map_session_data *sd, enum sc_type type, int val1, int val2, int val3, int val4)
+{
+ Assert_retv(type >= SC_NONE && type < SC_MAX);
+
+ if (sd && status->dbs->DisplayType[type]) {
+ int dval1 = 0, dval2 = 0, dval3 = 0;
+ switch (type) {
+ case SC_ALL_RIDING:
+ dval1 = 1;
+ break;
+ case SC_CLAN_INFO:
+ dval1 = val1;
+ dval2 = val2;
+ dval3 = val3;
+ break;
+ default: /* all others: just copy val1 */
+ dval1 = val1;
+ break;
+ }
+ status->display_add(sd, type, dval1, dval2, dval3);
+ }
+}
+
+/**
+ * Return val_flag based on sc type.
+ *
+ * @param type Status change type.
+ *
+ * @retval val_flag.
+ */
+static int status_get_val_flag(enum sc_type type)
+{
+ int val_flag = 0;
+ switch (type) {
+ case SC_CLAN_INFO:
+ val_flag |= 1 | 2;
+ break;
case SC_FIGHTINGSPIRIT:
- val_flag |= 1|2;
+ val_flag |= 1 | 2;
break;
case SC_VENOMIMPRESS:
- val_flag |= 1|2;
+ val_flag |= 1 | 2;
break;
case SC_POISONINGWEAPON:
- val_flag |= 1|2|4;
+ val_flag |= 1 | 2 | 4;
break;
case SC_WEAPONBLOCKING:
- val_flag |= 1|2;
+ val_flag |= 1 | 2;
break;
case SC_ROLLINGCUTTER:
val_flag |= 1;
break;
case SC_CLOAKINGEXCEED:
- val_flag |= 1|2|4;
+ val_flag |= 1 | 2 | 4;
break;
case SC_HALLUCINATIONWALK:
- val_flag |= 1|2|4;
+ val_flag |= 1 | 2 | 4;
break;
case SC_SUMMON1:
case SC_SUMMON2:
@@ -9910,34 +9866,34 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
val_flag |= 1;
break;
case SC__SHADOWFORM:
- val_flag |= 1|2|4;
+ val_flag |= 1 | 2 | 4;
break;
case SC__INVISIBILITY:
- val_flag |= 1|2;
+ val_flag |= 1 | 2;
break;
case SC__ENERVATION:
- val_flag |= 1|2;
+ val_flag |= 1 | 2;
break;
case SC__GROOMY:
- val_flag |= 1|2|4;
+ val_flag |= 1 | 2 | 4;
break;
case SC__LAZINESS:
- val_flag |= 1|2|4;
+ val_flag |= 1 | 2 | 4;
break;
case SC__UNLUCKY:
- val_flag |= 1|2|4;
+ val_flag |= 1 | 2 | 4;
break;
case SC__WEAKNESS:
- val_flag |= 1|2;
+ val_flag |= 1 | 2;
break;
case SC_PROPERTYWALK:
- val_flag |= 1|2;
+ val_flag |= 1 | 2;
break;
case SC_FORCEOFVANGUARD:
- val_flag |= 1|2|4;
+ val_flag |= 1 | 2 | 4;
break;
case SC_PRESTIGE:
- val_flag |= 1|2;
+ val_flag |= 1 | 2;
break;
case SC_BANDING:
val_flag |= 1;
@@ -9945,56 +9901,56 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
case SC_SHIELDSPELL_DEF:
case SC_SHIELDSPELL_MDEF:
case SC_SHIELDSPELL_REF:
- val_flag |= 1|2;
+ val_flag |= 1 | 2;
break;
case SC_SPELLFIST:
case SC_CURSEDCIRCLE_ATKER:
- val_flag |= 1|2|4;
+ val_flag |= 1 | 2 | 4;
break;
case SC_CRESCENTELBOW:
- val_flag |= 1|2;
+ val_flag |= 1 | 2;
break;
case SC_LIGHTNINGWALK:
val_flag |= 1;
break;
case SC_PYROTECHNIC_OPTION:
- val_flag |= 1|2|4;
+ val_flag |= 1 | 2 | 4;
break;
case SC_HEATER_OPTION:
- val_flag |= 1|2|4;
+ val_flag |= 1 | 2 | 4;
break;
case SC_AQUAPLAY_OPTION:
- val_flag |= 1|2|4;
+ val_flag |= 1 | 2 | 4;
break;
case SC_COOLER_OPTION:
- val_flag |= 1|2|4;
+ val_flag |= 1 | 2 | 4;
break;
case SC_CHILLY_AIR_OPTION:
- val_flag |= 1|2;
+ val_flag |= 1 | 2;
break;
case SC_GUST_OPTION:
- val_flag |= 1|2;
+ val_flag |= 1 | 2;
break;
case SC_BLAST_OPTION:
- val_flag |= 1|2|4;
+ val_flag |= 1 | 2 | 4;
break;
case SC_WILD_STORM_OPTION:
- val_flag |= 1|2;
+ val_flag |= 1 | 2;
break;
case SC_PETROLOGY_OPTION:
- val_flag |= 1|2|4;
+ val_flag |= 1 | 2 | 4;
break;
case SC_CURSED_SOIL_OPTION:
- val_flag |= 1|2|4;
+ val_flag |= 1 | 2 | 4;
break;
case SC_UPHEAVAL_OPTION:
- val_flag |= 1|2;
+ val_flag |= 1 | 2;
break;
case SC_CIRCLE_OF_FIRE_OPTION:
- val_flag |= 1|2;
+ val_flag |= 1 | 2;
break;
case SC_WATER_BARRIER:
- val_flag |= 1|2|4;
+ val_flag |= 1 | 2 | 4;
break;
case SC_KYOUGAKU:
val_flag |= 1;
@@ -10006,91 +9962,33 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
case SC_OVERLAPEXPUP:
val_flag |= 1;
break;
+ case SC_DAILYSENDMAILCNT:
+ val_flag |= 1 | 2;
+ break;
}
+ return val_flag;
+}
- /* [Ind/Hercules] */
- if( sd && status->dbs->DisplayType[type] ) {
- int dval1 = 0, dval2 = 0, dval3 = 0;
- switch( type ) {
- case SC_ALL_RIDING:
- dval1 = 1;
- break;
- default: /* all others: just copy val1 */
- dval1 = val1;
- break;
- }
- status->display_add(sd,type,dval1,dval2,dval3);
- }
+/**
+ * Set new status values.
+ *
+ * @param bl Status change target bl.
+ * @param sc Current statuses.
+ * @param type Status change type.
+ * @param val1 Additional value (meaning depends on type).
+ * @param val2 Additional value (meaning depends on type).
+ * @param val3 Additional value (meaning depends on type).
+ * @param val4 Additional value (meaning depends on type).
+ *
+ * @retval option flag.
+ */
+static int status_change_start_set_option(struct block_list *bl, struct status_change *sc, enum sc_type type, int val1, int val2, int val3, int val4)
+{
+ int opt_flag = 1;
- //Those that make you stop attacking/walking....
+ nullpo_retr(true, bl);
+ nullpo_retr(true, sc);
switch (type) {
- case SC_VACUUM_EXTREME:
- if(!map_flag_gvg(bl->m))
- unit->stop_walking(bl,1);
- break;
- case SC_FREEZE:
- case SC_STUN:
- case SC_SLEEP:
- case SC_STONE:
- case SC_DEEP_SLEEP:
- if (sd && pc_issit(sd)) //Avoid sprite sync problems.
- pc->setstand(sd);
- FALLTHROUGH
- case SC_TRICKDEAD:
- status_change_end(bl, SC_DANCING, INVALID_TIMER);
- // Cancel cast when get status [LuzZza]
- if (battle_config.sc_castcancel&bl->type)
- unit->skillcastcancel(bl, 0);
- FALLTHROUGH
- case SC_FALLENEMPIRE:
- case SC_WHITEIMPRISON:
- unit->stop_attack(bl);
- FALLTHROUGH
- case SC_STOP:
- case SC_CONFUSION:
- case SC_RG_CCONFINE_M:
- case SC_RG_CCONFINE_S:
- case SC_SPIDERWEB:
- case SC_ELECTRICSHOCKER:
- case SC_WUGBITE:
- case SC_THORNS_TRAP:
- case SC__MANHOLE:
- case SC__CHAOS:
- case SC_COLD:
- case SC_CURSEDCIRCLE_ATKER:
- case SC_CURSEDCIRCLE_TARGET:
- case SC_FEAR:
- case SC_MEIKYOUSISUI:
- case SC_NEEDLE_OF_PARALYZE:
- case SC_DEATHBOUND:
- case SC_NETHERWORLD:
- case SC_SV_ROOTTWIST:
- unit->stop_walking(bl, STOPWALKING_FLAG_FIXPOS);
- break;
- case SC_ANKLESNARE:
- if( battle_config.skill_trap_type || !map_flag_gvg(bl->m) )
- unit->stop_walking(bl, STOPWALKING_FLAG_FIXPOS);
- break;
- case SC_HIDING:
- case SC_CLOAKING:
- case SC_CLOAKINGEXCEED:
- case SC_CHASEWALK:
- case SC_WEIGHTOVER90:
- case SC_CAMOUFLAGE:
- case SC_SIREN:
- case SC_ALL_RIDING:
- case SC_SUHIDE:
- unit->stop_attack(bl);
- break;
- case SC_SILENCE:
- if (battle_config.sc_castcancel&bl->type)
- unit->skillcastcancel(bl, 0);
- break;
- }
-
- // Set option as needed.
- opt_flag = 1;
- switch(type) {
//OPT1
case SC_STONE: sc->opt1 = OPT1_STONEWAIT; break;
case SC_FREEZE: sc->opt1 = OPT1_FREEZE; break;
@@ -10168,7 +10066,7 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
break;
#endif // 0
case SC_DANCING:
- if ((val1&0xFFFF) == CG_MOONLIT)
+ if ((val1 & 0xFFFF) == CG_MOONLIT)
sc->opt3 |= OPT3_MOONLIT;
opt_flag = 0;
break;
@@ -10254,6 +10152,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;
@@ -10261,179 +10163,508 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
default:
opt_flag = 0;
}
+ return opt_flag;
+}
- //On Aegis, when turning on a status change, first goes the option packet, then the sc packet.
- if(opt_flag) {
- clif->changeoption(bl);
- if( sd && opt_flag&0x4 ) {
- if (vd)
- clif->changelook(bl, LOOK_BASE, vd->class);
- clif->changelook(bl,LOOK_WEAPON,0);
- clif->changelook(bl,LOOK_SHIELD,0);
- if (vd)
- clif->changelook(bl,LOOK_CLOTHES_COLOR,vd->cloth_color);
- }
- }
- if (calc_flag&SCB_DYE) {
- //Reset DYE color
- if (vd && vd->cloth_color) {
- val4 = vd->cloth_color;
- clif->changelook(bl,LOOK_CLOTHES_COLOR,0);
- }
- calc_flag&=~SCB_DYE;
- }
-
-#if 0 //Currently No SC's use this
- if (calc_flag&SCB_BODY) {
- //Reset Body Style
- if (vd && vd->body_style) {
- val4 = vd->body_style;
- clif->changelook(bl,LOOK_BODY2,0);
+/**
+ * Stop actions before start new sc.
+ *
+ * @param bl Status change target bl.
+ * @param type Status change type.
+ */
+static void status_change_start_stop_action(struct block_list *bl, enum sc_type type)
+{
+ nullpo_retv(bl);
+ switch (type) {
+ case SC_VACUUM_EXTREME:
+ if (!map_flag_gvg(bl->m))
+ unit->stop_walking(bl,1);
+ break;
+ case SC_FREEZE:
+ case SC_STUN:
+ case SC_SLEEP:
+ case SC_STONE:
+ case SC_DEEP_SLEEP: {
+ struct map_session_data *sd = BL_CAST(BL_PC, bl);
+ if (sd && pc_issit(sd)) //Avoid sprite sync problems.
+ pc->setstand(sd);
+ FALLTHROUGH
}
- calc_flag&=~SCB_BODY;
- }
-#endif
-
- if(!(flag&SCFLAG_NOICON) && !(flag&SCFLAG_LOADED && status->dbs->DisplayType[type]))
- clif->status_change(bl,status->dbs->IconChangeTable[type],1,tick,(val_flag&1)?val1:1,(val_flag&2)?val2:0,(val_flag&4)?val3:0);
-
- /**
- * used as temporary storage for scs with interval ticks, so that the actual duration is sent to the client first.
- **/
- if( tick_time )
- tick = tick_time;
-
- //Don't trust the previous sce assignment, in case the SC ended somewhere between there and here.
- if((sce=sc->data[type])) {// reuse old sc
- if( sce->timer != INVALID_TIMER )
- timer->delete(sce->timer, status->change_timer);
- } else {// new sc
- ++(sc->count);
- sce = sc->data[type] = ers_alloc(status->data_ers, struct status_change_entry);
- }
-
- sce->val1 = val1;
- sce->val2 = val2;
- sce->val3 = val3;
- sce->val4 = val4;
-
- if (tick >= 0) {
- sce->timer = timer->add(timer->gettick() + tick, status->change_timer, bl->id, type);
- sce->infinite_duration = false;
- } else {
- sce->timer = INVALID_TIMER; //Infinite duration
- sce->infinite_duration = true;
- if( sd )
- chrif->save_scdata_single(sd->status.account_id,sd->status.char_id,type,sce);
+ case SC_TRICKDEAD:
+ status_change_end(bl, SC_DANCING, INVALID_TIMER);
+ // Cancel cast when get status [LuzZza]
+ if (battle_config.sc_castcancel&bl->type)
+ unit->skillcastcancel(bl, 0);
+ FALLTHROUGH
+ case SC_FALLENEMPIRE:
+ case SC_WHITEIMPRISON:
+ unit->stop_attack(bl);
+ FALLTHROUGH
+ case SC_STOP:
+ case SC_CONFUSION:
+ case SC_RG_CCONFINE_M:
+ case SC_RG_CCONFINE_S:
+ case SC_SPIDERWEB:
+ case SC_ELECTRICSHOCKER:
+ case SC_WUGBITE:
+ case SC_THORNS_TRAP:
+ case SC__MANHOLE:
+ case SC__CHAOS:
+ case SC_COLD:
+ case SC_CURSEDCIRCLE_ATKER:
+ case SC_CURSEDCIRCLE_TARGET:
+ case SC_FEAR:
+ case SC_MEIKYOUSISUI:
+ case SC_NEEDLE_OF_PARALYZE:
+ case SC_DEATHBOUND:
+ case SC_NETHERWORLD:
+ case SC_SV_ROOTTWIST:
+ unit->stop_walking(bl, STOPWALKING_FLAG_FIXPOS);
+ break;
+ case SC_ANKLESNARE:
+ if (battle_config.skill_trap_type || !map_flag_gvg(bl->m))
+ unit->stop_walking(bl, STOPWALKING_FLAG_FIXPOS);
+ break;
+ case SC_HIDING:
+ case SC_CLOAKING:
+ case SC_CLOAKINGEXCEED:
+ case SC_CHASEWALK:
+ case SC_WEIGHTOVER90:
+ case SC_CAMOUFLAGE:
+ case SC_SIREN:
+ case SC_ALL_RIDING:
+ case SC_SUHIDE:
+ unit->stop_attack(bl);
+ break;
+ case SC_SILENCE:
+ if (battle_config.sc_castcancel & bl->type)
+ unit->skillcastcancel(bl, 0);
+ break;
}
+}
- if (calc_flag)
- status_calc_bl(bl,calc_flag);
-
- if(sd && sd->pd)
- pet->sc_check(sd, type); //Skotlex: Pet Status Effect Healing
+/**
+ * End sc before starting other sc.
+ *
+ * @param bl Status change target bl.
+ * @param st Status change data.
+ * @param sc Current statuses.
+ * @param type Status change type.
+ * @param undead_flag is bl undead.
+ * @param val1 Additional value (meaning depends on type).
+ * @param val2 Additional value (meaning depends on type).
+ * @param val3 Additional value (meaning depends on type).
+ * @param val4 Additional value (meaning depends on type).
+ *
+ * @retval false if no status change happened, or the other sc can be started regardless.
+ * @retval true if the status change was successfully applied and the other sc shouldn't be started.
+ */
+static bool status_end_sc_before_start(struct block_list *bl, struct status_data *st, struct status_change *sc, enum sc_type type, int undead_flag, int val1, int val2, int val3, int val4)
+{
+ nullpo_retr(true, bl);
+ nullpo_retr(true, st);
+ nullpo_retr(true, sc);
switch (type) {
- case SC_BERSERK:
- if (!(sce->val2)) { //don't heal if already set
- status->heal(bl, st->max_hp, 0, 1); //Do not use percent_heal as this healing must override BERSERK's block.
- status->set_sp(bl, 0, 0); //Damage all SP
+ case SC_BLESSING:
+ // TODO: Blessing and Agi up should do 1 damage against players on Undead Status, even on PvM
+ // but cannot be plagiarized (this requires aegis investigation on packets and official behavior) [Brainstorm]
+ if ((undead_flag == 0 && st->race != RC_DEMON) || bl->type == BL_PC) {
+ bool prevent_start = false;
+ if (sc->data[SC_CURSE] != NULL) {
+ prevent_start = true;
+ status_change_end(bl, SC_CURSE, INVALID_TIMER);
+ }
+ if (sc->data[SC_STONE] != NULL && sc->opt1 == OPT1_STONE) {
+ prevent_start = true;
+ status_change_end(bl, SC_STONE, INVALID_TIMER);
+ }
+ if (prevent_start)
+ return true;
}
- sce->val2 = 5 * st->max_hp / 100;
+ if (sc->data[SC_SOULLINK] != NULL && sc->data[SC_SOULLINK]->val2 == SL_HIGH)
+ status_change_end(bl, SC_SOULLINK, INVALID_TIMER);
break;
- case SC_HLIF_CHANGE:
- status_percent_heal(bl, 100, 100);
+ case SC_INC_AGI:
+ status_change_end(bl, SC_DEC_AGI, INVALID_TIMER);
+ if (sc->data[SC_SOULLINK] && sc->data[SC_SOULLINK]->val2 == SL_HIGH)
+ status_change_end(bl, SC_SOULLINK, INVALID_TIMER);
break;
- case SC_RUN:
- {
- struct unit_data *ud = unit->bl2ud(bl);
- if( ud )
- ud->state.running = unit->run(bl, NULL, SC_RUN);
- }
+ case SC_QUAGMIRE:
+ status_change_end(bl, SC_CONCENTRATION, INVALID_TIMER);
+ status_change_end(bl, SC_TRUESIGHT, INVALID_TIMER);
+ status_change_end(bl, SC_WINDWALK, INVALID_TIMER);
+ FALLTHROUGH
+ //Also blocks the ones below...
+ case SC_DEC_AGI:
+ case SC_ADORAMUS:
+ status_change_end(bl, SC_CARTBOOST, INVALID_TIMER);
+ //Also blocks the ones below...
+ FALLTHROUGH
+ case SC_DONTFORGETME:
+ status_change_end(bl, SC_INC_AGI, INVALID_TIMER);
+ status_change_end(bl, SC_ADRENALINE, INVALID_TIMER);
+ status_change_end(bl, SC_ADRENALINE2, INVALID_TIMER);
+ status_change_end(bl, SC_SPEARQUICKEN, INVALID_TIMER);
+ status_change_end(bl, SC_TWOHANDQUICKEN, INVALID_TIMER);
+ status_change_end(bl, SC_ONEHANDQUICKEN, INVALID_TIMER);
+ status_change_end(bl, SC_MER_QUICKEN, INVALID_TIMER);
+ status_change_end(bl, SC_ACCELERATION, INVALID_TIMER);
break;
- case SC_CASH_BOSS_ALARM:
- if( sd )
- clif->bossmapinfo(sd->fd, map->id2boss(sce->val1), 0); // First Message
+ case SC_ONEHANDQUICKEN:
+ //Removes the Aspd potion effect, as reported by Vicious. [Skotlex]
+ status_change_end(bl, SC_ATTHASTE_POTION1, INVALID_TIMER);
+ status_change_end(bl, SC_ATTHASTE_POTION2, INVALID_TIMER);
+ status_change_end(bl, SC_ATTHASTE_POTION3, INVALID_TIMER);
+ status_change_end(bl, SC_ATTHASTE_INFINITY, INVALID_TIMER);
break;
- case SC_MER_HP:
- status_percent_heal(bl, 100, 0); // Recover Full HP
+ case SC_OVERTHRUSTMAX:
+ //Cancels Normal Overthrust. [Skotlex]
+ status_change_end(bl, SC_OVERTHRUST, INVALID_TIMER);
break;
- case SC_MER_SP:
- status_percent_heal(bl, 0, 100); // Recover Full SP
+ case SC_KYRIE:
+ //Cancels Assumptio
+ status_change_end(bl, SC_ASSUMPTIO, INVALID_TIMER);
break;
- case SC_PROMOTE_HEALTH_RESERCH:
- status_percent_heal(bl, sce->val4, 0);
+ case SC_MAGNIFICAT:
+ //Cancels Offertorium
+ status_change_end(bl, SC_OFFERTORIUM, INVALID_TIMER);
break;
- case SC_ENERGY_DRINK_RESERCH:
- status_percent_heal(bl, 0, sce->val4);
+ case SC_OFFERTORIUM:
+ //Cancels Magnificat
+ status_change_end(bl, SC_MAGNIFICAT, INVALID_TIMER);
break;
- /**
- * Ranger
- **/
- case SC_WUGDASH:
- {
- struct unit_data *ud = unit->bl2ud(bl);
- if( ud )
- ud->state.running = unit->run(bl, sd, SC_WUGDASH);
- }
+ case SC_DELUGE:
+ if (sc->data[SC_FOGWALL] && sc->data[SC_BLIND])
+ status_change_end(bl, SC_BLIND, INVALID_TIMER);
break;
- case SC_COMBOATTACK:
- switch (sce->val1) {
- case TK_STORMKICK:
- clif->skill_nodamage(bl,bl,TK_READYSTORM,1,1);
- break;
- case TK_DOWNKICK:
- clif->skill_nodamage(bl,bl,TK_READYDOWN,1,1);
- break;
- case TK_TURNKICK:
- clif->skill_nodamage(bl,bl,TK_READYTURN,1,1);
- break;
- case TK_COUNTER:
- clif->skill_nodamage(bl,bl,TK_READYCOUNTER,1,1);
- break;
- case MO_COMBOFINISH:
- case CH_TIGERFIST:
- case CH_CHAINCRUSH:
- if (sd)
- clif->skillinfo(sd,MO_EXTREMITYFIST, INF_SELF_SKILL);
- break;
- case TK_JUMPKICK:
- if (sd)
- clif->skillinfo(sd,TK_JUMPKICK, INF_SELF_SKILL);
- break;
- case MO_TRIPLEATTACK:
- if (sd && pc->checkskill(sd, SR_DRAGONCOMBO) > 0)
- clif->skillinfo(sd,SR_DRAGONCOMBO, INF_SELF_SKILL);
- break;
- case SR_FALLENEMPIRE:
- if (sd){
- clif->skillinfo(sd,SR_GATEOFHELL, INF_SELF_SKILL);
- clif->skillinfo(sd,SR_TIGERCANNON, INF_SELF_SKILL);
- }
+ case SC_SILENCE:
+ if (sc->data[SC_GOSPEL] && sc->data[SC_GOSPEL]->val4 == BCT_SELF)
+ status_change_end(bl, SC_GOSPEL, INVALID_TIMER);
+ break;
+ case SC_HIDING:
+ status_change_end(bl, SC_RG_CCONFINE_M, INVALID_TIMER);
+ status_change_end(bl, SC_RG_CCONFINE_S, INVALID_TIMER);
+ break;
+ case SC_BERSERK:
+ if (val3 == SC__BLOODYLUST)
break;
+ if (battle_config.berserk_cancels_buffs) {
+ status_change_end(bl, SC_ONEHANDQUICKEN, INVALID_TIMER);
+ status_change_end(bl, SC_TWOHANDQUICKEN, INVALID_TIMER);
+ status_change_end(bl, SC_LKCONCENTRATION, INVALID_TIMER);
+ status_change_end(bl, SC_PARRYING, INVALID_TIMER);
+ status_change_end(bl, SC_AURABLADE, INVALID_TIMER);
+ status_change_end(bl, SC_MER_QUICKEN, INVALID_TIMER);
+ }
+ #ifdef RENEWAL
+ else {
+ status_change_end(bl, SC_TWOHANDQUICKEN, INVALID_TIMER);
}
+ #endif
break;
- case SC_RAISINGDRAGON:
- sce->val2 = st->max_hp / 100;// Officially tested its 1%hp drain. [Jobbie]
+ case SC_ASSUMPTIO:
+ status_change_end(bl, SC_KYRIE, INVALID_TIMER);
+ status_change_end(bl, SC_KAITE, INVALID_TIMER);
+ break;
+ case SC_KAITE:
+ status_change_end(bl, SC_ASSUMPTIO, INVALID_TIMER);
+ break;
+ case SC_CARTBOOST:
+ if (sc->data[SC_DEC_AGI] || sc->data[SC_ADORAMUS]) {
+ //Cancel Decrease Agi, but take no further effect [Skotlex]
+ status_change_end(bl, SC_DEC_AGI, INVALID_TIMER);
+ status_change_end(bl, SC_ADORAMUS, INVALID_TIMER);
+ return true;
+ }
+ break;
+ case SC_FUSION:
+ status_change_end(bl, SC_SOULLINK, INVALID_TIMER);
+ break;
+ case SC_GS_ADJUSTMENT:
+ status_change_end(bl, SC_GS_MADNESSCANCEL, INVALID_TIMER);
+ break;
+ case SC_GS_MADNESSCANCEL:
+ status_change_end(bl, SC_GS_ADJUSTMENT, INVALID_TIMER);
+ break;
+ //NPC_CHANGEUNDEAD will debuff Blessing and Agi Up
+ case SC_PROPERTYUNDEAD:
+ status_change_end(bl, SC_BLESSING, INVALID_TIMER);
+ status_change_end(bl, SC_INC_AGI, INVALID_TIMER);
+ break;
+ case SC_FOOD_STR:
+ status_change_end(bl, SC_FOOD_STR, INVALID_TIMER);
+ break;
+ case SC_FOOD_AGI:
+ status_change_end(bl, SC_FOOD_AGI, INVALID_TIMER);
+ break;
+ case SC_FOOD_VIT:
+ status_change_end(bl, SC_FOOD_VIT, INVALID_TIMER);
+ break;
+ case SC_FOOD_INT:
+ status_change_end(bl, SC_FOOD_INT, INVALID_TIMER);
+ break;
+ case SC_FOOD_DEX:
+ status_change_end(bl, SC_FOOD_DEX, INVALID_TIMER);
+ break;
+ case SC_FOOD_LUK:
+ 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);
+ break;
+ case SC_GM_BATTLE2:
+ status_change_end(bl, SC_GM_BATTLE, INVALID_TIMER);
+ break;
+ case SC_ENDURE:
+ if (val4 == 1)
+ status_change_end(bl, SC_LKCONCENTRATION, INVALID_TIMER);
+ break;
+ case SC_FIGHTINGSPIRIT:
+ case SC_OVERED_BOOST:
+ status_change_end(bl, type, INVALID_TIMER); // Remove previous one.
+ break;
+ case SC_MARSHOFABYSS:
+ status_change_end(bl, SC_INCAGI, INVALID_TIMER);
+ status_change_end(bl, SC_WINDWALK, INVALID_TIMER);
+ status_change_end(bl, SC_ATTHASTE_POTION1, INVALID_TIMER);
+ status_change_end(bl, SC_ATTHASTE_POTION2, INVALID_TIMER);
+ status_change_end(bl, SC_ATTHASTE_POTION3, INVALID_TIMER);
+ status_change_end(bl, SC_ATTHASTE_INFINITY, INVALID_TIMER);
+ break;
+ //Group A Status (doesn't overlap)
+ case SC_SWING:
+ case SC_SYMPHONY_LOVE:
+ case SC_MOONLIT_SERENADE:
+ case SC_RUSH_WINDMILL:
+ case SC_ECHOSONG:
+ case SC_HARMONIZE:
+ case SC_FRIGG_SONG:
+ if (type != SC_SWING) status_change_end(bl, SC_SWING, INVALID_TIMER);
+ if (type != SC_SYMPHONY_LOVE) status_change_end(bl, SC_SYMPHONY_LOVE, INVALID_TIMER);
+ if (type != SC_MOONLIT_SERENADE) status_change_end(bl, SC_MOONLIT_SERENADE, INVALID_TIMER);
+ if (type != SC_RUSH_WINDMILL) status_change_end(bl, SC_RUSH_WINDMILL, INVALID_TIMER);
+ if (type != SC_ECHOSONG) status_change_end(bl, SC_ECHOSONG, INVALID_TIMER);
+ if (type != SC_HARMONIZE) status_change_end(bl, SC_HARMONIZE, INVALID_TIMER);
+ if (type != SC_FRIGG_SONG) status_change_end(bl, SC_FRIGG_SONG, INVALID_TIMER);
+ break;
+ //Group B Status
+ case SC_SIREN:
+ case SC_DEEP_SLEEP:
+ case SC_SIRCLEOFNATURE:
+ case SC_LERADS_DEW:
+ case SC_MELODYOFSINK:
+ case SC_BEYOND_OF_WARCRY:
+ case SC_UNLIMITED_HUMMING_VOICE:
+ case SC_GLOOMYDAY:
+ case SC_SONG_OF_MANA:
+ case SC_DANCE_WITH_WUG:
+ if (type != SC_SIREN) status_change_end(bl, SC_SIREN, INVALID_TIMER);
+ if (type != SC_DEEP_SLEEP) status_change_end(bl, SC_DEEP_SLEEP, INVALID_TIMER);
+ if (type != SC_SIRCLEOFNATURE) status_change_end(bl, SC_SIRCLEOFNATURE, INVALID_TIMER);
+ if (type != SC_LERADS_DEW) status_change_end(bl, SC_LERADS_DEW, INVALID_TIMER);
+ if (type != SC_MELODYOFSINK) status_change_end(bl, SC_MELODYOFSINK, INVALID_TIMER);
+ if (type != SC_BEYOND_OF_WARCRY) status_change_end(bl, SC_BEYOND_OF_WARCRY, INVALID_TIMER);
+ if (type != SC_UNLIMITED_HUMMING_VOICE) status_change_end(bl, SC_UNLIMITED_HUMMING_VOICE, INVALID_TIMER);
+ if (type != SC_GLOOMYDAY) status_change_end(bl, SC_GLOOMYDAY, INVALID_TIMER);
+ if (type != SC_SONG_OF_MANA) status_change_end(bl, SC_SONG_OF_MANA, INVALID_TIMER);
+ if (type != SC_DANCE_WITH_WUG) status_change_end(bl, SC_DANCE_WITH_WUG, INVALID_TIMER);
+ break;
+ case SC_REFLECTSHIELD:
+ status_change_end(bl, SC_LG_REFLECTDAMAGE, INVALID_TIMER);
+ break;
+ case SC_LG_REFLECTDAMAGE:
+ status_change_end(bl, SC_REFLECTSHIELD, INVALID_TIMER);
+ break;
+ case SC_SHIELDSPELL_DEF:
+ case SC_SHIELDSPELL_MDEF:
+ case SC_SHIELDSPELL_REF:
+ status_change_end(bl, SC_MAGNIFICAT, INVALID_TIMER);
+ status_change_end(bl, SC_SHIELDSPELL_DEF, INVALID_TIMER);
+ status_change_end(bl, SC_SHIELDSPELL_MDEF, INVALID_TIMER);
+ status_change_end(bl, SC_SHIELDSPELL_REF, INVALID_TIMER);
+ break;
+ case SC_GENTLETOUCH_ENERGYGAIN:
+ case SC_GENTLETOUCH_CHANGE:
+ case SC_GENTLETOUCH_REVITALIZE:
+ if (type != SC_GENTLETOUCH_REVITALIZE)
+ status_change_end(bl, SC_GENTLETOUCH_REVITALIZE, INVALID_TIMER);
+ if (type != SC_GENTLETOUCH_ENERGYGAIN)
+ status_change_end(bl, SC_GENTLETOUCH_ENERGYGAIN, INVALID_TIMER);
+ if (type != SC_GENTLETOUCH_CHANGE)
+ status_change_end(bl, SC_GENTLETOUCH_CHANGE, INVALID_TIMER);
+ break;
+ case SC_INVINCIBLE:
+ status_change_end(bl, SC_INVINCIBLEOFF, INVALID_TIMER);
+ break;
+ case SC_INVINCIBLEOFF:
+ status_change_end(bl, SC_INVINCIBLE, INVALID_TIMER);
+ break;
+ case SC_MAGICPOWER:
+ status_change_end(bl, type, INVALID_TIMER);
break;
}
- if( opt_flag&2 && sd && sd->touching_id )
- npc->touchnext_areanpc(sd,false); // run OnTouch_ on next char in range
+ return false;
+}
- return 1;
+/**
+ * Check is boss resist to given sc.
+ *
+ * @param type Status change type.
+ *
+ * @retval true if boss resist.
+ * @retval false if boss not resist.
+ */
+static bool status_is_boss_resist_sc(enum sc_type type)
+{
+ if (type >= SC_COMMON_MIN && type <= SC_COMMON_MAX)
+ return true;
+ switch (type) {
+ case SC_BLESSING:
+ case SC_DEC_AGI:
+ case SC_PROVOKE:
+ case SC_COMA:
+ case SC_GRAVITATION:
+ case SC_NJ_SUITON:
+ case SC_RICHMANKIM:
+ case SC_ROKISWEIL:
+ case SC_FOGWALL:
+ case SC_FROSTMISTY:
+ case SC_BURNING:
+ case SC_MARSHOFABYSS:
+ case SC_ADORAMUS:
+ case SC_NEEDLE_OF_PARALYZE:
+ case SC_DEEP_SLEEP:
+ case SC_COLD:
+
+ // Exploit prevention - kRO Fix
+ case SC_PYREXIA:
+ case SC_DEATHHURT:
+ case SC_TOXIN:
+ case SC_PARALYSE:
+ case SC_VENOMBLEED:
+ case SC_MAGICMUSHROOM:
+ case SC_OBLIVIONCURSE:
+ case SC_LEECHESEND:
+
+ // Ranger Effects
+ case SC_WUGBITE:
+ case SC_ELECTRICSHOCKER:
+ case SC_MAGNETICFIELD:
+
+ // Masquerades
+ case SC__ENERVATION:
+ case SC__GROOMY:
+ case SC__LAZINESS:
+ case SC__UNLUCKY:
+ case SC__WEAKNESS:
+ case SC__IGNORANCE:
+
+ // Other Effects
+ case SC_VACUUM_EXTREME:
+ case SC_NETHERWORLD:
+ case SC_FRESHSHRIMP:
+ case SC_SV_ROOTTWIST:
+ case SC_BITESCAR:
+ return true;
+ }
+ return false;
+}
+
+/**
+ * Initial check for current statuses immune to given sc.
+ *
+ * @param sc Current statuses.
+ * @param type Status change type.
+ *
+ * @retval true if immune resist.
+ * @retval false if not immune resist.
+ */
+static bool status_is_immune_to_status(struct status_change *sc, enum sc_type type)
+{
+ nullpo_retr(true, sc);
+ if (sc->data[SC_REFRESH]) {
+ if (type >= SC_COMMON_MIN && type <= SC_COMMON_MAX) // Confirmed.
+ return true; // Immune to status ailements
+ switch (type) {
+ case SC__CHAOS:
+ case SC_STONE:
+ case SC_FROSTMISTY:
+ case SC_TOXIN:
+ case SC_PARALYSE:
+ case SC_VENOMBLEED:
+ case SC_MAGICMUSHROOM:
+ case SC_DEATHHURT:
+ case SC_PYREXIA:
+ case SC_OBLIVIONCURSE:
+ case SC_MARSHOFABYSS:
+ case SC_MANDRAGORA:
+ return true;
+ }
+ } else if (sc->data[SC_INSPIRATION]) {
+ if (type >= SC_COMMON_MIN && type <= SC_COMMON_MAX)
+ return true; // Immune to status ailements
+ switch (type) {
+ case SC__CHAOS:
+ case SC_STONE:
+ case SC_FROSTMISTY:
+ case SC_TOXIN:
+ case SC_PARALYSE:
+ case SC_VENOMBLEED:
+ case SC_MAGICMUSHROOM:
+ case SC_DEATHHURT:
+ case SC_PYREXIA:
+ case SC_OBLIVIONCURSE:
+ case SC_LEECHESEND:
+ case SC_SATURDAY_NIGHT_FEVER:
+ case SC__BODYPAINT:
+ case SC__ENERVATION:
+ case SC__GROOMY:
+ case SC__IGNORANCE:
+ case SC__LAZINESS:
+ case SC__UNLUCKY:
+ case SC__WEAKNESS:
+ return true;
+ }
+ }
+ return false;
}
/*==========================================
-* Ending all status except those listed.
-* @TODO maybe usefull for dispel instead reseting a liste there.
-* type:
-* 0 - PC killed -> Place here statuses that do not dispel on death.
-* 1 - If for some reason status_change_end decides to still keep the status when quitting.
-* 2 - Do clif
-* 3 - Do not remove some permanent/time-independent effects
-*------------------------------------------*/
-int status_change_clear(struct block_list* bl, int type)
+ * Ending all status except those listed.
+ * @TODO maybe usefull for dispel instead reseting a liste there.
+ * type:
+ * 0 - PC killed -> Place here statuses that do not dispel on death.
+ * 1 - If for some reason status_change_end decides to still keep the status when quitting.
+ * 2 - Do clif
+ * 3 - Do not remove some permanent/time-independent effects
+ *------------------------------------------*/
+static int status_change_clear(struct block_list *bl, int type)
{
struct status_change* sc;
int i;
@@ -10490,9 +10721,9 @@ int status_change_clear(struct block_list* bl, int type)
}
/*==========================================
-* Special condition we want to effectuate, check before ending a status.
-*------------------------------------------*/
-int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const char* file, int line)
+ * Special condition we want to effectuate, check before ending a status.
+ *------------------------------------------*/
+static int status_change_end_(struct block_list *bl, enum sc_type type, int tid, const char *file, int line)
{
struct map_session_data *sd;
struct status_change *sc;
@@ -10594,7 +10825,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
}
if (begin_spurt && sce->val1 >= 7
&& DIFF_TICK(timer->gettick(), starttick) <= 1000
- && (!sd || (sd->weapontype1 == 0 && sd->weapontype2 == 0))
+ && (!sd || (sd->weapontype1 == W_FIST && sd->weapontype2 == W_FIST))
)
sc_start(bl, bl,SC_STRUP,100,sce->val1,skill->get_time2(status->sc2skill(type), sce->val1));
}
@@ -10797,7 +11028,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
status_percent_heal(bl, 100, 0);
status_change_end(bl, SC__BLOODYLUST, INVALID_TIMER);
} else if(st->hp > 100 && sce->val2) //If val2 is removed, no HP penalty (dispelled?) [Skotlex]
- status->set_hp(bl, 100, 0);
+ status->set_hp(bl, 100, STATUS_HEAL_DEFAULT);
if(sc->data[SC_ENDURE] && sc->data[SC_ENDURE]->val4 == 2) {
sc->data[SC_ENDURE]->val4 = 0;
status_change_end(bl, SC_ENDURE, INVALID_TIMER);
@@ -10849,8 +11080,8 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
if (tid == INVALID_TIMER)
break;
// "lose almost all their HP and SP" on natural expiration.
- status->set_hp(bl, 10, 0);
- status->set_sp(bl, 10, 0);
+ status->set_hp(bl, 10, STATUS_HEAL_DEFAULT);
+ status->set_sp(bl, 10, STATUS_HEAL_DEFAULT);
break;
case SC_AUTOTRADE:
if (tid == INVALID_TIMER)
@@ -11062,6 +11293,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;
@@ -11231,7 +11466,8 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
return 1;
}
-int kaahi_heal_timer(int tid, int64 tick, int id, intptr_t data) {
+static int kaahi_heal_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct block_list *bl;
struct status_change *sc;
struct status_change_entry *sce;
@@ -11256,17 +11492,17 @@ int kaahi_heal_timer(int tid, int64 tick, int id, intptr_t data) {
hp = st->max_hp - st->hp;
if (hp > sce->val2)
hp = sce->val2;
- if (hp)
- status->heal(bl, hp, 0, 2);
+ if (hp != 0)
+ status->heal(bl, hp, 0, STATUS_HEAL_SHOWEFFECT);
sce->val4 = INVALID_TIMER;
return 1;
}
/*==========================================
-* For recusive status, like for each 5s we drop sp etc.
-* Reseting the end timer.
-*------------------------------------------*/
-int status_change_timer(int tid, int64 tick, int id, intptr_t data)
+ * For recusive status, like for each 5s we drop sp etc.
+ * Reseting the end timer.
+ *------------------------------------------*/
+static int status_change_timer(int tid, int64 tick, int id, intptr_t data)
{
enum sc_type type = (sc_type)data;
struct block_list *bl;
@@ -11388,24 +11624,26 @@ int status_change_timer(int tid, int64 tick, int id, intptr_t data)
break;
case SC_POISON:
- if(st->hp <= max(st->max_hp>>2, sce->val4)) //Stop damaging after 25% HP left.
+ if (st->hp <= max(st->max_hp / 4, sce->val4)) //Stop damaging after 25% HP left.
break;
FALLTHROUGH
case SC_DPOISON:
if (--(sce->val3) > 0) {
- if (!sc->data[SC_SLOWPOISON]) {
- if( sce->val2 && bl->type == BL_MOB ) {
- struct block_list* src = map->id2bl(sce->val2);
- if (src != NULL)
- mob->log_damage(BL_UCAST(BL_MOB, bl), src, sce->val4);
- }
- map->freeblock_lock();
- status_zap(bl, sce->val4, 0);
- if (sc->data[type]) { // Check if the status still last ( can be dead since then ).
- sc_timer_next(1000 + tick, status->change_timer, bl->id, data );
- }
- map->freeblock_unlock();
+ if (sc->data[SC_SLOWPOISON] != NULL) {
+ sc_timer_next(1000 + tick, status->change_timer, bl->id, data);
+ return 0;
+ }
+ if (sce->val2 != 0 && bl->type == BL_MOB) {
+ struct block_list* src = map->id2bl(sce->val2);
+ if (src != NULL)
+ mob->log_damage(BL_UCAST(BL_MOB, bl), src, sce->val4);
+ }
+ map->freeblock_lock();
+ status_zap(bl, sce->val4, 0);
+ if (sc->data[type] != NULL) { // Check if the status still last (can be dead since then).
+ sc_timer_next(1000 + tick, status->change_timer, bl->id, data);
}
+ map->freeblock_unlock();
return 0;
}
break;
@@ -11461,7 +11699,7 @@ int status_change_timer(int tid, int64 tick, int id, intptr_t data)
int hp = 0;
if (st->hp < st->max_hp)
hp = (sce->val1 < 0) ? (int)(sd->status.max_hp * -1 * sce->val1 / 100.) : sce->val1 ;
- status->heal(bl, hp, 0, 2);
+ status->heal(bl, hp, 0, STATUS_HEAL_SHOWEFFECT);
sc_timer_next((sce->val2 * 1000) + tick, status->change_timer, bl->id, data);
return 0;
}
@@ -11610,7 +11848,7 @@ int status_change_timer(int tid, int64 tick, int id, intptr_t data)
break;
case SC_ABUNDANCE:
if(--(sce->val4) > 0) {
- status->heal(bl,0,60,0);
+ status->heal(bl, 0, 60, STATUS_HEAL_DEFAULT);
sc_timer_next(10000+tick, status->change_timer, bl->id, data);
}
break;
@@ -11726,7 +11964,7 @@ int status_change_timer(int tid, int64 tick, int id, intptr_t data)
heal = ~heal + 1;
map->freeblock_lock();
- status->heal(bl, heal, 0, 2);
+ status->heal(bl, heal, 0, STATUS_HEAL_SHOWEFFECT);
if( sc->data[type] ) {
sc_timer_next(5000 + tick, status->change_timer, bl->id, data);
}
@@ -11849,7 +12087,7 @@ int status_change_timer(int tid, int64 tick, int id, intptr_t data)
if ( sc->data[type] ) {
sc_timer_next(1000 + tick, status->change_timer, bl->id, data);
}
- status->heal(src, damage*(5 + 5 * sce->val1)/100, 0, 0); // 5 + 5% per level
+ status->heal(src, damage*(5 + 5 * sce->val1)/100, 0, STATUS_HEAL_DEFAULT); // 5 + 5% per level
map->freeblock_unlock();
return 0;
}
@@ -11866,7 +12104,7 @@ int status_change_timer(int tid, int64 tick, int id, intptr_t data)
case SC_DEEP_SLEEP:
if( --(sce->val4) >= 0 )
{// Recovers 3% of the player's MaxHP/MaxSP every 2 seconds.
- status->heal(bl, st->max_hp * 3 / 100, st->max_sp * 3 / 100, 2);
+ status->heal(bl, st->max_hp * 3 / 100, st->max_sp * 3 / 100, STATUS_HEAL_SHOWEFFECT);
sc_timer_next(2000 + tick, status->change_timer, bl->id, data);
return 0;
}
@@ -11876,7 +12114,7 @@ int status_change_timer(int tid, int64 tick, int id, intptr_t data)
if( --(sce->val4) >= 0 ) {
if( !status->charge(bl,0,sce->val3) )
break;
- status->heal(bl, sce->val2, 0, 1);
+ status->heal(bl, sce->val2, 0, STATUS_HEAL_FORCED);
sc_timer_next(1000 + tick, status->change_timer, bl->id, data);
return 0;
}
@@ -11884,7 +12122,7 @@ int status_change_timer(int tid, int64 tick, int id, intptr_t data)
case SC_SONG_OF_MANA:
if( --(sce->val4) >= 0 ) {
- status->heal(bl,0,sce->val3,3);
+ status->heal(bl, 0, sce->val3, STATUS_HEAL_FORCED | STATUS_HEAL_SHOWEFFECT);
sc_timer_next(5000 + tick, status->change_timer, bl->id, data);
return 0;
}
@@ -12078,7 +12316,7 @@ int status_change_timer(int tid, int64 tick, int id, intptr_t data)
return 0;
case SC_MEIKYOUSISUI:
if( --(sce->val4) > 0 ) {
- status->heal(bl, st->max_hp * (sce->val1+1) / 100, st->max_sp * sce->val1 / 100, 0);
+ status->heal(bl, st->max_hp * (sce->val1+1) / 100, st->max_sp * sce->val1 / 100, STATUS_HEAL_DEFAULT);
sc_timer_next(1000 + tick, status->change_timer, bl->id, data);
return 0;
}
@@ -12114,7 +12352,7 @@ int status_change_timer(int tid, int64 tick, int id, intptr_t data)
break;
case SC_FRIGG_SONG:
if( --(sce->val4) > 0 ) {
- status->heal(bl, sce->val3, 0, 0);
+ status->heal(bl, sce->val3, 0, STATUS_HEAL_DEFAULT);
sc_timer_next(1000 + tick, status->change_timer, bl->id, data);
return 0;
}
@@ -12140,9 +12378,9 @@ int status_change_timer(int tid, int64 tick, int id, intptr_t data)
}
/*==========================================
-* Foreach iteration of repetitive status
-*------------------------------------------*/
-int status_change_timer_sub(struct block_list* bl, va_list ap)
+ * Foreach iteration of repetitive status
+ *------------------------------------------*/
+static int status_change_timer_sub(struct block_list *bl, va_list ap)
{
struct status_change* tsc;
@@ -12218,10 +12456,17 @@ int status_change_timer_sub(struct block_list* bl, va_list ap)
return 0;
}
-int status_get_total_def(struct block_list *src) { return status->get_status_data(src)->def2 + (short)status->get_def(src); }
-int status_get_total_mdef(struct block_list *src) { return status->get_status_data(src)->mdef2 + (short)status_get_mdef(src); }
+static int status_get_total_def(struct block_list *src)
+{
+ return status->get_status_data(src)->def2 + (short)status->get_def(src);
+}
+
+static int status_get_total_mdef(struct block_list *src)
+{
+ return status->get_status_data(src)->mdef2 + (short)status_get_mdef(src);
+}
-int status_get_weapon_atk(struct block_list *bl, struct weapon_atk *watk, int flag)
+static int status_get_weapon_atk(struct block_list *bl, struct weapon_atk *watk, int flag)
{
#ifdef RENEWAL
int min = 0, max = 0;
@@ -12284,13 +12529,13 @@ int status_get_weapon_atk(struct block_list *bl, struct weapon_atk *watk, int fl
}
/**
-* Get bl's matk_max and matk_min values depending on flag
-* @param flag
-* 0 - Get MATK
-* 1 - Get MATK w/o SC bonuses
-* 3 - Get MATK w/o EATK & SC bonuses
-**/
-void status_get_matk_sub(struct block_list *bl, int flag, unsigned short *matk_max, unsigned short *matk_min)
+ * Get bl's matk_max and matk_min values depending on flag
+ * @param flag
+ * 0 - Get MATK
+ * 1 - Get MATK w/o SC bonuses
+ * 3 - Get MATK w/o EATK & SC bonuses
+ */
+static void status_get_matk_sub(struct block_list *bl, int flag, unsigned short *matk_max, unsigned short *matk_min)
{
struct status_data *st;
struct status_change *sc;
@@ -12402,9 +12647,9 @@ void status_get_matk_sub(struct block_list *bl, int flag, unsigned short *matk_m
#undef status_get_homluk
/**
-* Gets a random matk value depending on min matk and max matk
-**/
-unsigned short status_get_rand_matk(unsigned short matk_max, unsigned short matk_min)
+ * Gets a random matk value depending on min matk and max matk
+ */
+static unsigned short status_get_rand_matk(unsigned short matk_max, unsigned short matk_min)
{
if ( matk_max > matk_min )
return matk_min + rnd() % (matk_max - matk_min);
@@ -12413,17 +12658,17 @@ unsigned short status_get_rand_matk(unsigned short matk_max, unsigned short matk
}
/**
-* Get bl's matk value depending on flag
-* @param flag [malufett]
-* 1 - Get MATK w/o SC bonuses
-* 2 - Get modified MATK
-* 3 - Get MATK w/o eATK & SC bonuses
-* @retval 1 failure
-* @retval MATK success
-*
-* Shouldn't change _any_ value! [Panikon]
-**/
-int status_get_matk(struct block_list *bl, int flag)
+ * Get bl's matk value depending on flag
+ * @param flag [malufett]
+ * 1 - Get MATK w/o SC bonuses
+ * 2 - Get modified MATK
+ * 3 - Get MATK w/o eATK & SC bonuses
+ * @retval 1 failure
+ * @retval MATK success
+ *
+ * Shouldn't change _any_ value! [Panikon]
+ */
+static int status_get_matk(struct block_list *bl, int flag)
{
struct status_data *st;
unsigned short matk_max, matk_min;
@@ -12450,9 +12695,9 @@ int status_get_matk(struct block_list *bl, int flag)
}
/**
-* Updates bl's MATK values
-**/
-void status_update_matk(struct block_list *bl)
+ * Updates bl's MATK values
+ */
+static void status_update_matk(struct block_list *bl)
{
struct status_data *st;
struct status_change *sc;
@@ -12477,11 +12722,11 @@ void status_update_matk(struct block_list *bl)
}
/*==========================================
-* Clears buffs/debuffs of a character.
-* type&1 -> buffs, type&2 -> debuffs
-* type&4 -> especific debuffs(implemented with refresh)
-*------------------------------------------*/
-int status_change_clear_buffs (struct block_list* bl, int type)
+ * Clears buffs/debuffs of a character.
+ * type&1 -> buffs, type&2 -> debuffs
+ * type&4 -> especific debuffs(implemented with refresh)
+ *------------------------------------------*/
+static int status_change_clear_buffs(struct block_list *bl, int type)
{
int i;
struct status_change *sc= status->get_sc(bl);
@@ -12543,7 +12788,7 @@ int status_change_clear_buffs (struct block_list* bl, int type)
return 0;
}
-int status_change_spread(struct block_list *src, struct block_list *bl)
+static int status_change_spread(struct block_list *src, struct block_list *bl)
{
int i, flag = 0;
struct status_change *sc = status->get_sc(src);
@@ -12634,7 +12879,7 @@ int status_change_spread(struct block_list *src, struct block_list *bl)
}
//Natural regen related stuff.
-int status_natural_heal(struct block_list* bl, va_list args)
+static int status_natural_heal(struct block_list *bl, va_list args)
{
struct regen_data *regen;
struct status_data *st;
@@ -12689,7 +12934,7 @@ int status_natural_heal(struct block_list* bl, va_list args)
sregen->tick.hp += val;
while(sregen->tick.hp >= (unsigned int)battle_config.natural_heal_skill_interval) {
sregen->tick.hp -= battle_config.natural_heal_skill_interval;
- if(status->heal(bl, sregen->hp, 0, 3) < sregen->hp) {
+ if (status->heal(bl, sregen->hp, 0, STATUS_HEAL_FORCED | STATUS_HEAL_SHOWEFFECT) < sregen->hp) {
//Full
flag&=~(RGN_HP|RGN_SHP);
break;
@@ -12704,7 +12949,7 @@ int status_natural_heal(struct block_list* bl, va_list args)
sregen->tick.sp += val;
while(sregen->tick.sp >= (unsigned int)battle_config.natural_heal_skill_interval) {
sregen->tick.sp -= battle_config.natural_heal_skill_interval;
- if(status->heal(bl, 0, sregen->sp, 3) < sregen->sp) {
+ if (status->heal(bl, 0, sregen->sp, STATUS_HEAL_FORCED | STATUS_HEAL_SHOWEFFECT) < sregen->sp) {
//Full
flag&=~(RGN_SP|RGN_SSP);
break;
@@ -12753,7 +12998,7 @@ int status_natural_heal(struct block_list* bl, va_list args)
val += regen->hp;
regen->tick.hp -= battle_config.natural_healhp_interval;
} while(regen->tick.hp >= (unsigned int)battle_config.natural_healhp_interval);
- if (status->heal(bl, val, 0, 1) < val)
+ if (status->heal(bl, val, 0, STATUS_HEAL_FORCED) < val)
flag&=~RGN_SHP; //full.
}
}
@@ -12772,7 +13017,7 @@ int status_natural_heal(struct block_list* bl, va_list args)
val += regen->sp;
regen->tick.sp -= battle_config.natural_healsp_interval;
} while(regen->tick.sp >= (unsigned int)battle_config.natural_healsp_interval);
- if (status->heal(bl, 0, val, 1) < val)
+ if (status->heal(bl, 0, val, STATUS_HEAL_FORCED) < val)
flag&=~RGN_SSP; //full.
}
}
@@ -12789,7 +13034,7 @@ int status_natural_heal(struct block_list* bl, va_list args)
while(sregen->tick.hp >= (unsigned int)battle_config.natural_heal_skill_interval) {
sregen->tick.hp -= battle_config.natural_heal_skill_interval;
- if(status->heal(bl, sregen->hp, 0, 3) < sregen->hp)
+ if (status->heal(bl, sregen->hp, 0, STATUS_HEAL_FORCED | STATUS_HEAL_SHOWEFFECT) < sregen->hp)
break; //Full
}
}
@@ -12814,7 +13059,7 @@ int status_natural_heal(struct block_list* bl, va_list args)
}
}
sregen->tick.sp -= battle_config.natural_heal_skill_interval;
- if(status->heal(bl, 0, val, 3) < val)
+ if (status->heal(bl, 0, val, STATUS_HEAL_FORCED | STATUS_HEAL_SHOWEFFECT) < val)
break; //Full
}
}
@@ -12822,7 +13067,7 @@ int status_natural_heal(struct block_list* bl, va_list args)
}
//Natural heal main timer.
-int status_natural_heal_timer(int tid, int64 tick, int id, intptr_t data)
+static int status_natural_heal_timer(int tid, int64 tick, int id, intptr_t data)
{
// This difference is always positive and lower than UINT_MAX (~24 days)
status->natural_heal_diff_tick = (unsigned int)cap_value(DIFF_TICK(tick,status->natural_heal_prev_tick), 0, UINT_MAX);
@@ -12832,21 +13077,25 @@ int status_natural_heal_timer(int tid, int64 tick, int id, intptr_t data)
}
/**
-* Get the chance to upgrade a piece of equipment.
-* @param wlv The weapon type of the item to refine (see see enum refine_type)
-* @param refine The target refine level
-* @return The chance to refine the item, in percent (0~100)
-**/
-int status_get_refine_chance(enum refine_type wlv, int refine)
+ * Get the chance to upgrade a piece of equipment.
+ * @param wlv The weapon type of the item to refine (see see enum refine_type)
+ * @param refine The target refine level
+ * @return The chance to refine the item, in percent (0~100)
+ */
+static int status_get_refine_chance(enum refine_type wlv, int refine, enum refine_chance_type type)
{
Assert_ret((int)wlv >= REFINE_TYPE_ARMOR && wlv < REFINE_TYPE_MAX);
- if ( refine < 0 || refine >= MAX_REFINE)
- return 0;
- return status->dbs->refine_info[wlv].chance[refine];
+ if (refine < 0 || refine >= MAX_REFINE)
+ return 0;
+
+ if (type >= REFINE_CHANCE_TYPE_MAX)
+ return 0;
+
+ return status->dbs->refine_info[wlv].chance[type][refine];
}
-int status_get_sc_type(sc_type type)
+static int status_get_sc_type(sc_type type)
{
if( type <= SC_NONE || type >= SC_MAX )
@@ -12855,10 +13104,11 @@ int status_get_sc_type(sc_type type)
return status->dbs->sc_conf[type];
}
-void status_read_job_db_sub(int idx, const char *name, struct config_setting_t *jdb)
+static void status_read_job_db_sub(int idx, const char *name, struct config_setting_t *jdb)
{
struct config_setting_t *temp = NULL;
int i32 = 0;
+ const char *str = NULL;
struct {
const char *name;
@@ -12893,6 +13143,38 @@ void status_read_job_db_sub(int idx, const char *name, struct config_setting_t *
#endif
};
+ /**
+ * @field BaseExpGroup must be read before any other that deal with exp tables.
+ */
+ if (libconfig->setting_lookup_string(jdb, "BaseExpGroup", &str) != 0) {
+ int i = 0;
+ ARR_FIND(0, VECTOR_LENGTH(pc->class_exp_groups[CLASS_EXP_TABLE_BASE]), i, strcmp(str, VECTOR_INDEX(pc->class_exp_groups[CLASS_EXP_TABLE_BASE], i).name) == 0);
+ if (i == VECTOR_LENGTH(pc->class_exp_groups[CLASS_EXP_TABLE_BASE])) {
+ ShowError("status_read_job_db: Unknown Base Exp Group '%s' provided for entry '%s'\n", str, name);
+ } else {
+ pc->dbs->class_exp_table[idx][CLASS_EXP_TABLE_BASE] = &VECTOR_INDEX(pc->class_exp_groups[CLASS_EXP_TABLE_BASE], i);
+ }
+ } else {
+ ShowError("status_read_job_db: BaseExpGroup setting not found for entry '%s', skipping..\n", name);
+ return;
+ }
+
+ /**
+ * @field JobExpGroup must be read before any other that deal with exp tables.
+ */
+ if (libconfig->setting_lookup_string(jdb, "JobExpGroup", &str) != 0) {
+ int i = 0;
+ ARR_FIND(0, VECTOR_LENGTH(pc->class_exp_groups[CLASS_EXP_TABLE_JOB]), i, strcmp(str, VECTOR_INDEX(pc->class_exp_groups[CLASS_EXP_TABLE_JOB], i).name) == 0);
+ if (i == VECTOR_LENGTH(pc->class_exp_groups[CLASS_EXP_TABLE_JOB])) {
+ ShowError("status_read_job_db: Unknown Job Exp Group '%s' provided for entry '%s'\n", str, name);
+ } else {
+ pc->dbs->class_exp_table[idx][CLASS_EXP_TABLE_JOB] = &VECTOR_INDEX(pc->class_exp_groups[CLASS_EXP_TABLE_JOB], i);
+ }
+ } else {
+ ShowError("status_read_job_db: JobExpGroup setting not found for entry '%s', skipping..\n", name);
+ return;
+ }
+
if ((temp = libconfig->setting_get_member(jdb, "Inherit"))) {
int nidx = 0;
const char *iname;
@@ -12917,7 +13199,7 @@ void status_read_job_db_sub(int idx, const char *name, struct config_setting_t *
} else {
avg_increment = 5;
}
- for ( ; i <= pc->max_level[idx][0]; i++) {
+ for ( ; i <= pc->dbs->class_exp_table[idx][CLASS_EXP_TABLE_BASE]->max_level; i++) {
status->dbs->HP_table[idx][i] = min(base + avg_increment * i, battle_config.max_hp);
}
@@ -12932,7 +13214,7 @@ void status_read_job_db_sub(int idx, const char *name, struct config_setting_t *
} else {
avg_increment = 1;
}
- for ( ; i <= pc->max_level[idx][0]; i++) {
+ for ( ; i <= pc->dbs->class_exp_table[idx][CLASS_EXP_TABLE_BASE]->max_level; i++) {
status->dbs->SP_table[idx][i] = min(base + avg_increment * i, battle_config.max_sp);
}
}
@@ -12958,7 +13240,7 @@ void status_read_job_db_sub(int idx, const char *name, struct config_setting_t *
} else {
avg_increment = 5;
}
- for ( ; i <= pc->max_level[idx][0]; i++) {
+ for ( ; i <= pc->dbs->class_exp_table[idx][CLASS_EXP_TABLE_BASE]->max_level; i++) {
status->dbs->HP_table[idx][i] = min(base + avg_increment * i, battle_config.max_hp);
}
}
@@ -12984,7 +13266,7 @@ void status_read_job_db_sub(int idx, const char *name, struct config_setting_t *
} else {
avg_increment = 1;
}
- for ( ; i <= pc->max_level[idx][0]; i++) {
+ for ( ; i <= pc->dbs->class_exp_table[idx][CLASS_EXP_TABLE_BASE]->max_level; i++) {
status->dbs->SP_table[idx][i] = min(base + avg_increment * i, battle_config.max_sp);
}
}
@@ -13026,7 +13308,7 @@ void status_read_job_db_sub(int idx, const char *name, struct config_setting_t *
} else {
avg_increment = 5;
}
- for (++level; level <= pc->max_level[idx][0]; ++level) { /* limit only to possible maximum level of the given class */
+ for (++level; level <= pc->dbs->class_exp_table[idx][CLASS_EXP_TABLE_BASE]->max_level; ++level) { /* limit only to possible maximum level of the given class */
status->dbs->HP_table[idx][level] = min(base + avg_increment * level, battle_config.max_hp); /* some are still empty? then let's use the average increase */
}
}
@@ -13046,20 +13328,21 @@ void status_read_job_db_sub(int idx, const char *name, struct config_setting_t *
} else {
avg_increment = 1;
}
- for (++level; level <= pc->max_level[idx][0]; level++ ) {
+ for (++level; level <= pc->dbs->class_exp_table[idx][CLASS_EXP_TABLE_BASE]->max_level; level++) {
status->dbs->SP_table[idx][level] = min(base + avg_increment * level, battle_config.max_sp);
}
}
}
+/* [malufett/Hercules] */
/*------------------------------------------
-* DB reading.
-* job_db.conf - weight, hp, sp, aspd
-* job_db2.txt - job level stat bonuses
-* size_fix.txt - size adjustment table for weapons
-* refine_db.txt - refining data table
-*------------------------------------------*/
-void status_read_job_db(void) /* [malufett/Hercules] */
+ * DB reading.
+ * job_db.conf - weight, hp, sp, aspd
+ * job_db2.txt - job level stat bonuses
+ * size_fix.txt - size adjustment table for weapons
+ * refine_db.txt - refining data table
+ *------------------------------------------*/
+static void status_read_job_db(void)
{
int i = 0;
struct config_t job_db_conf;
@@ -13073,7 +13356,7 @@ void status_read_job_db(void) /* [malufett/Hercules] */
if (!libconfig->load_file(&job_db_conf, config_filename))
return;
- while ( (jdb = libconfig->setting_get_elem(job_db_conf.root, i++)) ) {
+ while ((jdb = libconfig->setting_get_elem(job_db_conf.root, i++))) {
int class, idx;
const char *name = config_setting_name(jdb);
@@ -13085,11 +13368,12 @@ void status_read_job_db(void) /* [malufett/Hercules] */
idx = pc->class2idx(class);
status->read_job_db_sub(idx, name, jdb);
}
+
ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' entries in '"CL_WHITE"%s"CL_RESET"'.\n", i, config_filename);
libconfig->destroy(&job_db_conf);
}
-bool status_readdb_job2(char* fields[], int columns, int current)
+static bool status_readdb_job2(char *fields[], int columns, int current)
{
int idx, class, i;
@@ -13109,7 +13393,7 @@ bool status_readdb_job2(char* fields[], int columns, int current)
return true;
}
-bool status_readdb_sizefix(char* fields[], int columns, int current)
+static bool status_readdb_sizefix(char *fields[], int columns, int current)
{
unsigned int i;
@@ -13133,7 +13417,7 @@ bool status_readdb_sizefix(char* fields[], int columns, int current)
* validation errors.
* @return # of the validated entry, or 0 in case of failure.
*/
-int status_readdb_refine_libconfig_sub(struct config_setting_t *r, const char *name, const char *source)
+static int status_readdb_refine_libconfig_sub(struct config_setting_t *r, const char *name, const char *source)
{
struct config_setting_t *rate = NULL;
int type = REFINE_TYPE_ARMOR, bonus_per_level = 0, rnd_bonus_v = 0, rnd_bonus_lv = 0;
@@ -13168,54 +13452,84 @@ int status_readdb_refine_libconfig_sub(struct config_setting_t *r, const char *n
if ((rate=libconfig->setting_get_member(r, "Rates")) != NULL && config_setting_is_group(rate)) {
struct config_setting_t *t = NULL;
bool duplicate[MAX_REFINE];
- int bonus[MAX_REFINE], rnd_bonus[MAX_REFINE], chance[MAX_REFINE];
- int i;
+ int bonus[MAX_REFINE], rnd_bonus[MAX_REFINE];
+ int chance[REFINE_CHANCE_TYPE_MAX][MAX_REFINE];
+ int i, j;
+
memset(&duplicate, 0, sizeof(duplicate));
memset(&bonus, 0, sizeof(bonus));
memset(&rnd_bonus, 0, sizeof(rnd_bonus));
- for (i = 0; i < MAX_REFINE; i++) {
- chance[i] = 100;
- }
+ for (i = 0; i < REFINE_CHANCE_TYPE_MAX; i++)
+ for (j = 0; j < MAX_REFINE; j++)
+ chance[i][j] = 100; // default value for all rates.
+
i = 0;
+ j = 0;
while ((t = libconfig->setting_get_elem(rate,i++)) != NULL && config_setting_is_group(t)) {
int level = 0, i32;
char *rlvl = config_setting_name(t);
memset(&lv, 0, sizeof(lv));
- if (!strspn(&rlvl[strlen(rlvl)-1], "0123456789") || (level = atoi(strncpy(lv, rlvl+2, 3))) <= 0) {
+
+ if (!strspn(&rlvl[strlen(rlvl) - 1], "0123456789") || (level = atoi(strncpy(lv, rlvl + 2, 3))) <= 0) {
ShowError("status_readdb_refine_libconfig_sub: Invalid refine level format '%s' for entry %s in \"%s\"... skipping.\n", rlvl, name, source);
continue;
}
+
if (level <= 0 || level > MAX_REFINE) {
ShowError("status_readdb_refine_libconfig_sub: Out of range refine level '%s' for entry %s in \"%s\"... skipping.\n", rlvl, name, source);
continue;
}
+
level--;
+
if (duplicate[level]) {
ShowWarning("status_readdb_refine_libconfig_sub: duplicate rate '%s' for entry %s in \"%s\", overwriting previous entry...\n", rlvl, name, source);
} else {
duplicate[level] = true;
}
- if (libconfig->setting_lookup_int(t, "Chance", &i32))
- chance[level] = i32;
+
+ if (libconfig->setting_lookup_int(t, "NormalChance", &i32) != 0)
+ chance[REFINE_CHANCE_TYPE_NORMAL][level] = i32;
+ else
+ chance[REFINE_CHANCE_TYPE_NORMAL][level] = 100;
+
+ if (libconfig->setting_lookup_int(t, "EnrichedChance", &i32) != 0)
+ chance[REFINE_CHANCE_TYPE_ENRICHED][level] = i32;
+ else
+ chance[REFINE_CHANCE_TYPE_ENRICHED][level] = level > 10 ? 0 : 100; // enriched ores up to +10 only.
+
+ if (libconfig->setting_lookup_int(t, "EventNormalChance", &i32) != 0)
+ chance[REFINE_CHANCE_TYPE_E_NORMAL][level] = i32;
else
- chance[level] = 100;
- if (libconfig->setting_lookup_int(t, "Bonus", &i32))
+ chance[REFINE_CHANCE_TYPE_E_NORMAL][level] = 100;
+
+ if (libconfig->setting_lookup_int(t, "EventEnrichedChance", &i32) != 0)
+ chance[REFINE_CHANCE_TYPE_E_ENRICHED][level] = i32;
+ else
+ chance[REFINE_CHANCE_TYPE_E_ENRICHED][level] = level > 10 ? 0 : 100; // enriched ores up to +10 only.
+
+ if (libconfig->setting_lookup_int(t, "Bonus", &i32) != 0)
bonus[level] += i32;
+
if (level >= rnd_bonus_lv - 1)
rnd_bonus[level] = rnd_bonus_v * (level - rnd_bonus_lv + 2);
}
for (i = 0; i < MAX_REFINE; i++) {
- status->dbs->refine_info[type].chance[i] = chance[i];
+ status->dbs->refine_info[type].chance[REFINE_CHANCE_TYPE_NORMAL][i] = chance[REFINE_CHANCE_TYPE_NORMAL][i];
+ status->dbs->refine_info[type].chance[REFINE_CHANCE_TYPE_E_NORMAL][i] = chance[REFINE_CHANCE_TYPE_E_NORMAL][i];
+ status->dbs->refine_info[type].chance[REFINE_CHANCE_TYPE_ENRICHED][i] = chance[REFINE_CHANCE_TYPE_ENRICHED][i];
+ status->dbs->refine_info[type].chance[REFINE_CHANCE_TYPE_E_ENRICHED][i] = chance[REFINE_CHANCE_TYPE_E_ENRICHED][i];
status->dbs->refine_info[type].randombonus_max[i] = rnd_bonus[i];
- bonus[i] += bonus_per_level + (i > 0 ? bonus[i-1] : 0);
+ bonus[i] += bonus_per_level + (i > 0 ? bonus[i - 1] : 0);
status->dbs->refine_info[type].bonus[i] = bonus[i];
}
} else {
ShowWarning("status_readdb_refine_libconfig_sub: Missing refine rates for entry '%s' in \"%s\", skipping.\n", name, source);
return 0;
}
- return type+1;
+
+ return type + 1;
}
/**
@@ -13224,7 +13538,7 @@ int status_readdb_refine_libconfig_sub(struct config_setting_t *r, const char *n
* @param *filename File name, relative to the database path.
* @return The number of found entries.
*/
-int status_readdb_refine_libconfig(const char *filename)
+static int status_readdb_refine_libconfig(const char *filename)
{
bool duplicate[REFINE_TYPE_MAX];
struct config_t refine_db_conf;
@@ -13232,7 +13546,7 @@ int status_readdb_refine_libconfig(const char *filename)
char filepath[256];
int i = 0, count = 0;
- sprintf(filepath, "%s/%s", map->db_path, filename);
+ safesnprintf(filepath, sizeof(filepath), "%s/%s", map->db_path, filename);
if (!libconfig->load_file(&refine_db_conf, filepath))
return 0;
@@ -13256,7 +13570,7 @@ int status_readdb_refine_libconfig(const char *filename)
return count;
}
-bool status_readdb_scconfig(char* fields[], int columns, int current)
+static bool status_readdb_scconfig(char *fields[], int columns, int current)
{
int val = 0;
char* type = fields[0];
@@ -13282,7 +13596,7 @@ bool status_readdb_scconfig(char* fields[], int columns, int current)
* size_fixe.txt
* refine_db.txt
**/
-int status_readdb(void)
+static int status_readdb(void)
{
int i, j;
@@ -13309,15 +13623,6 @@ int status_readdb(void)
for(j = 0; j < MAX_SINGLE_WEAPON_TYPE; j++)
status->dbs->atkmods[i][j] = 100;
- // refine_db.txt
- for(i=0;i<ARRAYLENGTH(status->dbs->refine_info);i++) {
- for(j=0;j<MAX_REFINE; j++) {
- status->dbs->refine_info[i].chance[j] = 100;
- status->dbs->refine_info[i].bonus[j] = 0;
- status->dbs->refine_info[i].randombonus_max[j] = 0;
- }
- }
-
// read databases
//
sv->readdb(map->db_path, "job_db2.txt", ',', 1, 1+MAX_LEVEL, -1, status->readdb_job2);
@@ -13326,13 +13631,15 @@ int status_readdb(void)
sv->readdb(map->db_path, "sc_config.txt", ',', 2, 2, SC_MAX, status->readdb_scconfig);
status->read_job_db();
+ pc->validate_levels();
+
return 0;
}
/*==========================================
-* Status db init and destroy.
-*------------------------------------------*/
-int do_init_status(bool minimal)
+ * Status db init and destroy.
+ *------------------------------------------*/
+static int do_init_status(bool minimal)
{
if (minimal)
return 0;
@@ -13349,16 +13656,16 @@ int do_init_status(bool minimal)
return 0;
}
-void do_final_status(void)
+static void do_final_status(void)
{
ers_destroy(status->data_ers);
}
/*=====================================
-* Default Functions : status.h
-* Generated by HerculesInterfaceMaker
-* created by Susu
-*-------------------------------------*/
+ * Default Functions : status.h
+ * Generated by HerculesInterfaceMaker
+ * created by Susu
+ *-------------------------------------*/
void status_defaults(void)
{
status = &status_s;
@@ -13429,11 +13736,18 @@ void status_defaults(void)
status->change_clear = status_change_clear;
status->change_clear_buffs = status_change_clear_buffs;
+ status->is_immune_to_status = status_is_immune_to_status;
+ status->is_boss_resist_sc = status_is_boss_resist_sc;
+ status->end_sc_before_start = status_end_sc_before_start;
+ status->change_start_stop_action = status_change_start_stop_action;
+ status->change_start_set_option = status_change_start_set_option;
+ status->get_val_flag = status_get_val_flag;
status->calc_bl_ = status_calc_bl_;
status->calc_mob_ = status_calc_mob_;
status->calc_pet_ = status_calc_pet_;
status->calc_pc_ = status_calc_pc_;
status->calc_pc_additional = status_calc_pc_additional;
+ status->calc_pc_recover_hp = status_calc_pc_recover_hp;
status->calc_homunculus_ = status_calc_homunculus_;
status->calc_mercenary_ = status_calc_mercenary_;
status->calc_elemental_ = status_calc_elemental_;
@@ -13470,6 +13784,8 @@ void status_defaults(void)
status->base_atk = status_base_atk;
status->get_base_maxhp = status_get_base_maxhp;
status->get_base_maxsp = status_get_base_maxsp;
+ status->get_restart_hp = status_get_restart_hp;
+ status->get_restart_sp = status_get_restart_sp;
status->calc_npc_ = status_calc_npc_;
status->calc_str = status_calc_str;
status->calc_agi = status_calc_agi;
@@ -13496,6 +13812,8 @@ void status_defaults(void)
status->calc_ematk = status_calc_ematk;
status->calc_bl_main = status_calc_bl_main;
status->display_add = status_display_add;
+ status->change_start_display = status_change_start_display;
+ status->change_start_unknown_sc = status_change_start_unknown_sc;
status->display_remove = status_display_remove;
status->natural_heal = status_natural_heal;
status->natural_heal_timer = status_natural_heal_timer;
@@ -13508,8 +13826,6 @@ void status_defaults(void)
status->read_job_db_sub = status_read_job_db_sub;
status->set_sc = status_set_sc;
status->copy = status_copy;
-#ifndef RENEWAL
status->base_matk_min = status_base_matk_min;
-#endif // RENEWAL
status->base_matk_max = status_base_matk_max;
}
diff --git a/src/map/status.h b/src/map/status.h
index e6c205b1d..17af22703 100644
--- a/src/map/status.h
+++ b/src/map/status.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -99,6 +99,16 @@ enum scstart_flag {
SCFLAG_ALL = SCFLAG_NONE|SCFLAG_NOAVOID|SCFLAG_FIXEDTICK|SCFLAG_LOADED|SCFLAG_FIXEDRATE|SCFLAG_NOICON
};
+/**
+ * Flags to be used with status->heal() and related functions.
+ */
+enum status_heal_flag {
+ STATUS_HEAL_DEFAULT = 0x00, ///< Default
+ STATUS_HEAL_FORCED = 0x01, ///< Forced healing (bypassing Berserk and similar)
+ STATUS_HEAL_SHOWEFFECT = 0x02, ///< Show the HP/SP heal effect
+ STATUS_HEAL_ALLOWREVIVE = 0x04, ///< Force resurrection in case of dead targets.
+};
+
// Status changes listing. These code are for use by the server.
typedef enum sc_type {
SC_NONE = -1,
@@ -838,8 +848,16 @@ typedef enum sc_type {
SC_BITESCAR,
SC_ARCLOUSEDASH,
SC_TUNAPARTY,
- SC_SHRIMP, // 650
+ SC_SHRIMP, // 650
SC_FRESHSHRIMP,
+
+ SC_DRESS_UP,
+
+ // Rodex
+ SC_DAILYSENDMAILCNT,
+
+ // Clan System
+ SC_CLAN_INFO,
#ifndef SC_MAX
SC_MAX, //Automatically updated max, used in for's to check we are within bounds.
#endif
@@ -1689,7 +1707,7 @@ enum si_type {
//SI_SHOW_NPCHPBAR = 821,
SI_FLOWERSMOKE = 822,
SI_FSTONE = 823,
- //SI_DAILYSENDMAILCNT = 824,
+ SI_DAILYSENDMAILCNT = 824,
//SI_QSCARABA = 825,
SI_LJOSALFAR = 826,
//SI_PAD_READER_KNIGHT = 827,
@@ -1722,7 +1740,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,
@@ -1759,10 +1777,10 @@ enum si_type {
//SI_HEALTHSTATE_HEAVYPOISON = 890,
//SI_HEALTHSTATE_FEAR = 891,
//SI_CHERRY_BLOSSOM_CAKE = 892,
- SI_SU_STOOP = 893,
- SI_CATNIPPOWDER = 894,
+ SI_SU_STOOP = 893,
+ SI_CATNIPPOWDER = 894,
SI_BLOSSOM_FLUTTERING = 895,
- SI_SV_ROOTTWIST = 896,
+ SI_SV_ROOTTWIST = 896,
//SI_ATTACK_PROPERTY_NOTHING = 897,
//SI_ATTACK_PROPERTY_WATER = 898,
//SI_ATTACK_PROPERTY_GROUND = 899,
@@ -1784,11 +1802,11 @@ enum si_type {
//SI_RESIST_PROPERTY_DARKNESS = 914,
//SI_RESIST_PROPERTY_TELEKINESIS = 915,
//SI_RESIST_PROPERTY_UNDEAD = 916,
- SI_BITESCAR = 917,
- SI_ARCLOUSEDASH = 918,
- SI_TUNAPARTY = 919,
- SI_SHRIMP = 920,
- SI_FRESHSHRIMP = 921,
+ SI_BITESCAR = 917,
+ SI_ARCLOUSEDASH = 918,
+ SI_TUNAPARTY = 919,
+ SI_SHRIMP = 920,
+ SI_FRESHSHRIMP = 921,
//SI_PERIOD_RECEIVEITEM = 922,
//SI_PERIOD_PLUSEXP = 923,
//SI_PERIOD_PLUSJOBEXP = 924,
@@ -1800,14 +1818,78 @@ enum si_type {
//SI_HELM_ISIA = 930,
//SI_HELM_ASIR = 931,
//SI_HELM_URJ = 932,
- SI_SUHIDE = 933,
+ SI_SUHIDE = 933,
//SI_ = 934,
//SI_DORAM_BUF_01 = 935,
//SI_DORAM_BUF_02 = 936,
- SI_SPRITEMABLE = 937,
+ SI_SPRITEMABLE = 937,
+ //SI_AID_PERIOD_RECEIVEITEM = 938,
+ //SI_AID_PERIOD_PLUSEXP = 939,
+ //SI_AID_PERIOD_PLUSJOBEXP = 940,
+ //SI_AID_PERIOD_DEADPENALTY = 941,
+ //SI_AID_PERIOD_ADDSTOREITEMCOUNT = 942,
+ //SI_ = 943,
+ //SI_ = 944,
+ //SI_ = 945,
+ //SI_ = 946,
+ //SI_ = 947,
+ //SI_ = 948,
+ //SI_ = 949,
+ //SI_HISS = 950,
+ //SI_ = 951,
+ //SI_NYANGGRASS = 952,
+ //SI_CHATTERING = 953,
+ //SI_ = 954,
+ //SI_ = 955,
+ //SI_ = 956,
+ //SI_ = 957,
+ //SI_ = 958,
+ //SI_ = 959,
+ //SI_ = 960,
+ //SI_GROOMING = 961,
+ //SI_PROTECTIONOFSHRIMP = 962,
//SI_EP16_2_BUFF_SS = 963,
//SI_EP16_2_BUFF_SC = 964,
//SI_EP16_2_BUFF_AC = 965,
+ //SI_GS_MAGICAL_BULLET = 966,
+ //SI_ = 967,
+ //SI_ = 968,
+ //SI_ = 969,
+ //SI_ = 970,
+ //SI_ = 971,
+ //SI_ = 972,
+ //SI_ = 973,
+ //SI_ = 974,
+ //SI_ = 975,
+ //SI_FALLEN_ANGEL = 976,
+ //SI_ = 977,
+ //SI_ = 978,
+ //SI_BLAZE_BEAD = 979,
+ //SI_FROZEN_BEAD = 980,
+ //SI_BREEZE_BEAD = 981,
+ //SI_ = 982,
+ //SI_AID_PERIOD_RECEIVEITEM_2ND = 983,
+ //SI_AID_PERIOD_PLUSEXP_2ND = 984,
+ //SI_AID_PERIOD_PLUSJOBEXP_2ND = 985,
+ //SI_PRONTERA_JP = 986,
+ //SI_ = 987,
+ //SI_GLOOM_CARD = 988,
+ //SI_PHARAOH_CARD = 989,
+ //SI_KIEL_CARD = 990,
+ //SI_ = 991,
+ //SI_CHEERUP = 992,
+ //SI_ = 993,
+ //SI_ = 994,
+ //SI_S_MANAPOTION = 995,
+ //SI_M_DEFSCROLL = 996,
+ //SI_ = 997,
+ //SI_ = 998,
+ //SI_ = 999,
+ //SI_AS_RAGGED_GOLEM_CARD = 1000,
+ //SI_LHZ_DUN_N1 = 1001,
+ //SI_LHZ_DUN_N2 = 1002,
+ //SI_LHZ_DUN_N3 = 1003,
+ //SI_LHZ_DUN_N4 = 1004,
#ifndef SI_MAX
SI_MAX,
#endif
@@ -1828,7 +1910,7 @@ enum e_joint_break
/**
* Mob mode definitions. [Skotlex]
*
- * @see doc/mob_db_mode_list.txt for a description of each mode.
+ * @see doc/mob_db_mode_list.md for a description of each mode.
*/
enum e_mode
{
@@ -1858,7 +1940,7 @@ enum e_mode
//who were not on your field of sight when it happened)
//opt1: Non stackable status changes.
-enum {
+enum e_opt1 {
OPT1_STONE = 1, //Petrified
OPT1_FREEZE,
OPT1_STUN,
@@ -1871,7 +1953,7 @@ enum {
};
//opt2: Stackable status changes.
-enum {
+enum e_opt2 {
OPT2_POISON = 0x0001,
OPT2_CURSE = 0x0002,
OPT2_SILENCE = 0x0004,
@@ -1884,7 +1966,7 @@ enum {
};
//opt3: (SHOW_EFST_*)
-enum {
+enum e_opt3 {
OPT3_NORMAL = 0x00000000,
OPT3_QUICKEN = 0x00000001,
OPT3_OVERTHRUST = 0x00000002,
@@ -2167,9 +2249,17 @@ struct status_change {
#define status_calc_elemental(ed, opt) (status->calc_bl_(&(ed)->bl, SCB_ALL, (opt)))
#define status_calc_npc(nd, opt) (status->calc_bl_(&(nd)->bl, SCB_ALL, (opt)))
+enum refine_chance_type {
+ REFINE_CHANCE_TYPE_NORMAL = 0, // Normal Chance
+ REFINE_CHANCE_TYPE_ENRICHED = 1, // Enriched Ore Chance
+ REFINE_CHANCE_TYPE_E_NORMAL = 2, // Event Normal Ore Chance
+ REFINE_CHANCE_TYPE_E_ENRICHED = 3, // Event Enriched Ore Chance
+ REFINE_CHANCE_TYPE_MAX
+};
+
// bonus values and upgrade chances for refining equipment
struct s_refine_info {
- int chance[MAX_REFINE]; // success chance
+ int chance[REFINE_CHANCE_TYPE_MAX][MAX_REFINE]; // success chance
int bonus[MAX_REFINE]; // cumulative fixed bonus damage
int randombonus_max[MAX_REFINE]; // cumulative maximum random bonus damage
};
@@ -2180,7 +2270,7 @@ BEGIN_ZEROED_BLOCK; /* Everything within this block will be memset to 0 when sta
int HP_table[CLASS_COUNT][MAX_LEVEL + 1];
int SP_table[CLASS_COUNT][MAX_LEVEL + 1];
int aspd_base[CLASS_COUNT][MAX_SINGLE_WEAPON_TYPE+1]; // +1 for RENEWAL_ASPD
- sc_type Skill2SCTable[MAX_SKILL]; // skill -> status
+ sc_type Skill2SCTable[MAX_SKILL_DB]; // skill -> status
int IconChangeTable[SC_MAX]; // status -> "icon" (icon is a bit of a misnomer, since there exist values with no icon associated)
unsigned int ChangeFlagTable[SC_MAX]; // status -> flags
int SkillChangeTable[SC_MAX]; // status -> skill
@@ -2205,6 +2295,7 @@ struct status_interface {
/* vars */
int current_equip_item_index;
int current_equip_card_id;
+ int current_equip_option_index;
struct s_status_dbs *dbs;
@@ -2216,7 +2307,7 @@ struct status_interface {
int (*init) (bool minimal);
void (*final) (void);
/* funcs */
- int (*get_refine_chance) (enum refine_type wlv, int refine);
+ int (*get_refine_chance) (enum refine_type wlv, int refine, enum refine_chance_type type);
// for looking up associated data
sc_type (*skill2sc) (int skill_id);
int (*sc2skill) (sc_type sc);
@@ -2228,9 +2319,9 @@ struct status_interface {
int (*charge) (struct block_list* bl, int64 hp, int64 sp);
int (*percent_change) (struct block_list *src,struct block_list *target,signed char hp_rate, signed char sp_rate, int flag);
//Used to set the hp/sp of an object to an absolute value (can't kill)
- int (*set_hp) (struct block_list *bl, unsigned int hp, int flag);
- int (*set_sp) (struct block_list *bl, unsigned int sp, int flag);
- int (*heal) (struct block_list *bl,int64 hp,int64 sp, int flag);
+ int (*set_hp) (struct block_list *bl, unsigned int hp, enum status_heal_flag flag);
+ int (*set_sp) (struct block_list *bl, unsigned int sp, enum status_heal_flag flag);
+ int (*heal) (struct block_list *bl,int64 hp,int64 sp, enum status_heal_flag flag);
int (*revive) (struct block_list *bl, unsigned char per_hp, unsigned char per_sp);
int (*fixed_revive) (struct block_list *bl, unsigned int per_hp, unsigned int per_sp);
struct regen_data * (*get_regen_data) (struct block_list *bl);
@@ -2256,6 +2347,14 @@ struct status_interface {
int (*get_sc_def) (struct block_list *src, struct block_list *bl, enum sc_type type, int rate, int tick, int flag);
int (*change_start) (struct block_list *src, struct block_list *bl, enum sc_type type, int rate, int val1, int val2, int val3, int val4, int tick, int flag);
int (*change_end_) (struct block_list* bl, enum sc_type type, int tid, const char* file, int line);
+ bool (*is_immune_to_status) (struct status_change* sc, enum sc_type type);
+ bool (*is_boss_resist_sc) (enum sc_type type);
+ bool (*end_sc_before_start) (struct block_list *bl, struct status_data *st, struct status_change* sc, enum sc_type type, int undead_flag, int val1, int val2, int val3, int val4);
+ void (*change_start_stop_action) (struct block_list *bl, enum sc_type type);
+ int (*change_start_set_option) (struct block_list *bl, struct status_change* sc, enum sc_type type, int val1, int val2, int val3, int val4);
+ int (*get_val_flag) (enum sc_type type);
+ void (*change_start_display) (struct map_session_data *sd, enum sc_type type, int val1, int val2, int val3, int val4);
+ bool (*change_start_unknown_sc) (struct block_list *src, struct block_list *bl, enum sc_type type, int calc_flag, int rate, int val1, int val2, int val3, int val4, int tick, int flag);
int (*kaahi_heal_timer) (int tid, int64 tick, int id, intptr_t data);
int (*change_timer) (int tid, int64 tick, int id, intptr_t data);
int (*change_timer_sub) (struct block_list* bl, va_list ap);
@@ -2266,6 +2365,7 @@ struct status_interface {
int (*calc_pet_) (struct pet_data* pd, enum e_status_calc_opt opt);
int (*calc_pc_) (struct map_session_data* sd, enum e_status_calc_opt opt);
void (*calc_pc_additional) (struct map_session_data* sd, enum e_status_calc_opt opt);
+ void (*calc_pc_recover_hp) (struct map_session_data* sd, struct status_data *bstatus);
int (*calc_homunculus_) (struct homun_data *hd, enum e_status_calc_opt opt);
int (*calc_mercenary_) (struct mercenary_data *md, enum e_status_calc_opt opt);
int (*calc_elemental_) (struct elemental_data *ed, enum e_status_calc_opt opt);
@@ -2294,6 +2394,8 @@ struct status_interface {
unsigned short (*base_atk) (const struct block_list *bl, const struct status_data *st);
unsigned int (*get_base_maxhp) (const struct map_session_data *sd, const struct status_data *st);
unsigned int (*get_base_maxsp) (const struct map_session_data *sd, const struct status_data *st);
+ unsigned int (*get_restart_hp) (const struct map_session_data *sd, const struct status_data *st);
+ unsigned int (*get_restart_sp) (const struct map_session_data *sd, const struct status_data *st);
int (*calc_npc_) (struct npc_data *nd, enum e_status_calc_opt opt);
unsigned short (*calc_str) (struct block_list *bl, struct status_change *sc, int str);
unsigned short (*calc_agi) (struct block_list *bl, struct status_change *sc, int agi);
diff --git a/src/map/storage.c b/src/map/storage.c
index acb72be81..90b620f63 100644
--- a/src/map/storage.c
+++ b/src/map/storage.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -41,8 +41,8 @@
#include <stdlib.h>
#include <string.h>
-struct storage_interface storage_s;
-struct guild_storage_interface gstorage_s;
+static struct storage_interface storage_s;
+static struct guild_storage_interface gstorage_s;
struct storage_interface *storage;
struct guild_storage_interface *gstorage;
@@ -50,7 +50,7 @@ struct guild_storage_interface *gstorage;
/*==========================================
* Sort items in the warehouse
*------------------------------------------*/
-int storage_comp_item(const void *i1_, const void *i2_)
+static int storage_comp_item(const void *i1_, const void *i2_)
{
const struct item *i1 = i1_;
const struct item *i2 = i2_;
@@ -65,7 +65,7 @@ int storage_comp_item(const void *i1_, const void *i2_)
}
//Sort item by storage_comp_item (nameid)
-void storage_sortitem(struct item* items, unsigned int size)
+static void storage_sortitem(struct item *items, unsigned int size)
{
nullpo_retv(items);
@@ -79,7 +79,7 @@ void storage_sortitem(struct item* items, unsigned int size)
* Parses storage and saves 'dirty' ones upon reconnect. [Skotlex]
* @see DBApply
*/
-int storage_reconnect_sub(union DBKey key, struct DBData *data, va_list ap)
+static int storage_reconnect_sub(union DBKey key, struct DBData *data, va_list ap)
{
struct guild_storage *stor = DB->data2ptr(data);
nullpo_ret(stor);
@@ -90,7 +90,7 @@ int storage_reconnect_sub(union DBKey key, struct DBData *data, va_list ap)
}
//Function to be invoked upon server reconnection to char. To save all 'dirty' storages [Skotlex]
-void do_reconnect_storage(void)
+static void do_reconnect_storage(void)
{
gstorage->db->foreach(gstorage->db, storage->reconnect_sub);
}
@@ -100,13 +100,18 @@ void do_reconnect_storage(void)
* 0 - success
* 1 - fail
*------------------------------------------*/
-int storage_storageopen(struct map_session_data *sd)
+static int storage_storageopen(struct map_session_data *sd)
{
nullpo_ret(sd);
if (sd->state.storage_flag != STORAGE_FLAG_CLOSED)
return 1; //Already open?
+ if (sd->storage.received == false) {
+ clif->message(sd->fd, msg_sd(sd, 27)); // Storage has not been loaded yet.
+ return 1;
+ }
+
if( !pc_can_give_items(sd) ) {
//check is this GM level is allowed to put items to storage
clif->message(sd->fd, msg_sd(sd,246)); // Your GM level doesn't authorize you to perform this action.
@@ -114,16 +119,20 @@ int storage_storageopen(struct map_session_data *sd)
}
sd->state.storage_flag = STORAGE_FLAG_NORMAL;
- storage->sortitem(sd->status.storage.items, ARRAYLENGTH(sd->status.storage.items));
- clif->storagelist(sd, sd->status.storage.items, ARRAYLENGTH(sd->status.storage.items));
- clif->updatestorageamount(sd, sd->status.storage.storage_amount, MAX_STORAGE);
+
+ if (sd->storage.aggregate > 0) {
+ storage->sortitem(VECTOR_DATA(sd->storage.item), VECTOR_LENGTH(sd->storage.item));
+ }
+ clif->storageList(sd, VECTOR_DATA(sd->storage.item), VECTOR_LENGTH(sd->storage.item));
+
+ clif->updatestorageamount(sd, sd->storage.aggregate, MAX_STORAGE);
return 0;
}
/* helper function
* checking if 2 item structure are identique
*/
-int compare_item(struct item *a, struct item *b)
+static int compare_item(struct item *a, struct item *b)
{
if( a->nameid == b->nameid &&
a->identify == b->identify &&
@@ -133,9 +142,12 @@ int compare_item(struct item *a, struct item *b)
a->bound == b->bound &&
a->unique_id == b->unique_id)
{
- int i;
- for (i = 0; i < MAX_SLOTS && (a->card[i] == b->card[i]); i++);
- return (i == MAX_SLOTS);
+ int i = 0, k = 0;
+ ARR_FIND(0, MAX_SLOTS, i, a->card[i] != b->card[i]);
+ ARR_FIND(0, MAX_ITEM_OPTIONS, k, a->option[k].index != b->option[k].index || a->option[k].value != b->option[k].value);
+
+ if (i == MAX_SLOTS && k == MAX_ITEM_OPTIONS)
+ return 1;
}
return 0;
}
@@ -143,63 +155,82 @@ int compare_item(struct item *a, struct item *b)
/*==========================================
* Internal add-item function.
*------------------------------------------*/
-int storage_additem(struct map_session_data* sd, struct item* item_data, int amount)
+static int storage_additem(struct map_session_data *sd, struct item *item_data, int amount)
{
- struct storage_data* stor;
- struct item_data *data;
+ struct item_data *data = NULL;
+ struct item *it = NULL;
int i;
nullpo_retr(1, sd);
+ Assert_retr(1, sd->storage.received == true);
+
nullpo_retr(1, item_data);
- stor = &sd->status.storage;
- if( item_data->nameid <= 0 || amount <= 0 )
- return 1;
+ Assert_retr(1, item_data->nameid > 0);
+
+ Assert_retr(1, amount > 0);
data = itemdb->search(item_data->nameid);
- if( data->stack.storage && amount > data->stack.amount )
- {// item stack limitation
+ if (data->stack.storage && amount > data->stack.amount) // item stack limitation
return 1;
- }
if (!itemdb_canstore(item_data, pc_get_group_level(sd))) {
//Check if item is storable. [Skotlex]
- clif->message (sd->fd, msg_sd(sd,264)); // This item cannot be stored.
+ clif->message (sd->fd, msg_sd(sd, 264)); // This item cannot be stored.
return 1;
}
- if( item_data->bound > IBT_ACCOUNT && !pc_can_give_bound_items(sd) ) {
- clif->message(sd->fd, msg_sd(sd,294)); // This bound item cannot be stored there.
+ if (item_data->bound > IBT_ACCOUNT && !pc_can_give_bound_items(sd)) {
+ clif->message(sd->fd, msg_sd(sd, 294)); // This bound item cannot be stored there.
return 1;
}
- if( itemdb->isstackable2(data) )
- {//Stackable
- for( i = 0; i < MAX_STORAGE; i++ )
- {
- if( compare_item(&stor->items[i], item_data) )
- {// existing items found, stack them
- if( amount > MAX_AMOUNT - stor->items[i].amount || ( data->stack.storage && amount > data->stack.amount - stor->items[i].amount ) )
+ if (itemdb->isstackable2(data)) {//Stackable
+ for (i = 0; i < VECTOR_LENGTH(sd->storage.item); i++) {
+ it = &VECTOR_INDEX(sd->storage.item, i);
+
+ if (it->nameid == 0)
+ continue;
+
+ if (compare_item(it, item_data)) { // existing items found, stack them
+ if (amount > MAX_AMOUNT - it->amount || (data->stack.storage && amount > data->stack.amount - it->amount))
return 1;
- stor->items[i].amount += amount;
- clif->storageitemadded(sd,&stor->items[i],i,amount);
+ it->amount += amount;
+
+ clif->storageitemadded(sd, it, i, amount);
+
+ sd->storage.save = true; // set a save flag.
+
return 0;
}
}
}
- // find free slot
- ARR_FIND( 0, MAX_STORAGE, i, stor->items[i].nameid == 0 );
- if( i >= MAX_STORAGE )
+ // Check if storage exceeds limit.
+ if (sd->storage.aggregate >= MAX_STORAGE)
return 1;
- // add item to slot
- memcpy(&stor->items[i],item_data,sizeof(stor->items[0]));
- stor->storage_amount++;
- stor->items[i].amount = amount;
- clif->storageitemadded(sd,&stor->items[i],i,amount);
- clif->updatestorageamount(sd, stor->storage_amount, MAX_STORAGE);
+ ARR_FIND(0, VECTOR_LENGTH(sd->storage.item), i, VECTOR_INDEX(sd->storage.item, i).nameid == 0);
+
+ if (i == VECTOR_LENGTH(sd->storage.item)) {
+ VECTOR_ENSURE(sd->storage.item, 1, 1);
+ VECTOR_PUSH(sd->storage.item, *item_data);
+ it = &VECTOR_LAST(sd->storage.item);
+ } else {
+ it = &VECTOR_INDEX(sd->storage.item, i);
+ *it = *item_data;
+ }
+
+ it->amount = amount;
+
+ sd->storage.aggregate++;
+
+ clif->storageitemadded(sd, it, i, amount);
+
+ clif->updatestorageamount(sd, sd->storage.aggregate, MAX_STORAGE);
+
+ sd->storage.save = true; // set a save flag.
return 0;
}
@@ -207,23 +238,34 @@ int storage_additem(struct map_session_data* sd, struct item* item_data, int amo
/*==========================================
* Internal del-item function
*------------------------------------------*/
-int storage_delitem(struct map_session_data* sd, int n, int amount)
+static int storage_delitem(struct map_session_data *sd, int n, int amount)
{
+ struct item *it = NULL;
+
nullpo_retr(1, sd);
- Assert_retr(1, n >= 0 && n < MAX_STORAGE);
- if( sd->status.storage.items[n].nameid == 0 || sd->status.storage.items[n].amount < amount )
- return 1;
- sd->status.storage.items[n].amount -= amount;
- if( sd->status.storage.items[n].amount == 0 )
- {
- memset(&sd->status.storage.items[n],0,sizeof(sd->status.storage.items[0]));
- sd->status.storage.storage_amount--;
- if( sd->state.storage_flag == STORAGE_FLAG_NORMAL )
- clif->updatestorageamount(sd, sd->status.storage.storage_amount, MAX_STORAGE);
+ Assert_retr(1, sd->storage.received == true);
+
+ Assert_retr(1, n >= 0 && n < VECTOR_LENGTH(sd->storage.item));
+
+ it = &VECTOR_INDEX(sd->storage.item, n);
+
+ Assert_retr(1, amount <= it->amount);
+
+ Assert_retr(1, it->nameid > 0);
+
+ it->amount -= amount;
+
+ if (it->amount == 0) {
+ memset(it, 0, sizeof(struct item));
+ clif->updatestorageamount(sd, --sd->storage.aggregate, MAX_STORAGE);
}
- if( sd->state.storage_flag == STORAGE_FLAG_NORMAL )
- clif->storageitemremoved(sd,n,amount);
+
+ sd->storage.save = true;
+
+ if (sd->state.storage_flag == STORAGE_FLAG_NORMAL)
+ clif->storageitemremoved(sd, n, amount);
+
return 0;
}
@@ -234,26 +276,28 @@ int storage_delitem(struct map_session_data* sd, int n, int amount)
* 0 : fail
* 1 : success
*------------------------------------------*/
-int storage_storageadd(struct map_session_data* sd, int index, int amount)
+static int storage_add_from_inventory(struct map_session_data *sd, int index, int amount)
{
nullpo_ret(sd);
- if( sd->status.storage.storage_amount > MAX_STORAGE )
+ Assert_ret(sd->storage.received == true);
+
+ if (sd->storage.aggregate > MAX_STORAGE)
return 0; // storage full
- if( index < 0 || index >= MAX_INVENTORY )
+ if (index < 0 || index >= sd->status.inventorySize)
return 0;
- if( sd->status.inventory[index].nameid <= 0 )
+ if (sd->status.inventory[index].nameid <= 0)
return 0; // No item on that spot
- if( amount < 1 || amount > sd->status.inventory[index].amount )
+ if (amount < 1 || amount > sd->status.inventory[index].amount)
return 0;
- if( storage->additem(sd,&sd->status.inventory[index],amount) == 0 )
+ if (storage->additem(sd, &sd->status.inventory[index], amount) == 0)
pc->delitem(sd, index, amount, 0, DELITEM_TOSTORAGE, LOG_TYPE_STORAGE);
else
- clif->dropitem(sd, index, 0);
+ clif->item_movefailed(sd, index);
return 1;
}
@@ -265,24 +309,30 @@ int storage_storageadd(struct map_session_data* sd, int index, int amount)
* 0 : fail
* 1 : success
*------------------------------------------*/
-int storage_storageget(struct map_session_data* sd, int index, int amount)
+static int storage_add_to_inventory(struct map_session_data *sd, int index, int amount)
{
int flag;
+ struct item *it = NULL;
nullpo_ret(sd);
- if( index < 0 || index >= MAX_STORAGE )
+
+ Assert_ret(sd->storage.received == true);
+
+ if (index < 0 || index >= VECTOR_LENGTH(sd->storage.item))
return 0;
- if( sd->status.storage.items[index].nameid <= 0 )
+ it = &VECTOR_INDEX(sd->storage.item, index);
+
+ if (it->nameid <= 0)
return 0; //Nothing there
- if( amount < 1 || amount > sd->status.storage.items[index].amount )
+ if (amount < 1 || amount > it->amount)
return 0;
- if( (flag = pc->additem(sd,&sd->status.storage.items[index],amount,LOG_TYPE_STORAGE)) == 0 )
- storage->delitem(sd,index,amount);
+ if ((flag = pc->additem(sd, it, amount, LOG_TYPE_STORAGE)) == 0)
+ storage->delitem(sd, index, amount);
else
- clif->additem(sd,0,0,flag);
+ clif->additem(sd, 0, 0, flag);
return 1;
}
@@ -294,23 +344,25 @@ int storage_storageget(struct map_session_data* sd, int index, int amount)
* 0 : fail
* 1 : success
*------------------------------------------*/
-int storage_storageaddfromcart(struct map_session_data* sd, int index, int amount)
+static int storage_storageaddfromcart(struct map_session_data *sd, int index, int amount)
{
nullpo_ret(sd);
- if( sd->status.storage.storage_amount > MAX_STORAGE )
+ Assert_ret(sd->storage.received == true);
+
+ if (sd->storage.aggregate > MAX_STORAGE)
return 0; // storage full / storage closed
- if( index < 0 || index >= MAX_CART )
+ if (index < 0 || index >= MAX_CART)
return 0;
if( sd->status.cart[index].nameid <= 0 )
return 0; //No item there.
- if( amount < 1 || amount > sd->status.cart[index].amount )
+ if (amount < 1 || amount > sd->status.cart[index].amount)
return 0;
- if( storage->additem(sd,&sd->status.cart[index],amount) == 0 )
+ if (storage->additem(sd,&sd->status.cart[index],amount) == 0)
pc->cart_delitem(sd,index,amount,0,LOG_TYPE_STORAGE);
return 1;
@@ -323,25 +375,33 @@ int storage_storageaddfromcart(struct map_session_data* sd, int index, int amoun
* 0 : fail
* 1 : success
*------------------------------------------*/
-int storage_storagegettocart(struct map_session_data* sd, int index, int amount)
+static int storage_storagegettocart(struct map_session_data *sd, int index, int amount)
{
int flag = 0;
+ struct item *it = NULL;
+
nullpo_ret(sd);
- if( index < 0 || index >= MAX_STORAGE )
+ Assert_ret(sd->storage.received == true);
+
+ if (index < 0 || index >= VECTOR_LENGTH(sd->storage.item))
return 0;
- if( sd->status.storage.items[index].nameid <= 0 )
+ it = &VECTOR_INDEX(sd->storage.item, index);
+
+ if (it->nameid <= 0)
return 0; //Nothing there.
- if( amount < 1 || amount > sd->status.storage.items[index].amount )
+ if (amount < 1 || amount > it->amount)
return 0;
- if( (flag = pc->cart_additem(sd,&sd->status.storage.items[index],amount,LOG_TYPE_STORAGE)) == 0 )
- storage->delitem(sd,index,amount);
+ if ((flag = pc->cart_additem(sd, it, amount, LOG_TYPE_STORAGE)) == 0)
+ storage->delitem(sd, index, amount);
else {
+ // probably this line is useless? it remove inventory lock but not storage [4144]
clif->dropitem(sd, index,0);
- clif->cart_additem_ack(sd,flag == 1?0x0:0x1);
+
+ clif->cart_additem_ack(sd, flag == 1?0x0:0x1);
}
return 1;
@@ -351,14 +411,28 @@ int storage_storagegettocart(struct map_session_data* sd, int index, int amount)
/*==========================================
* Modified By Valaris to save upon closing [massdriller]
*------------------------------------------*/
-void storage_storageclose(struct map_session_data* sd)
+static void storage_storageclose(struct map_session_data *sd)
{
+ int i = 0;
+
nullpo_retv(sd);
+ Assert_retv(sd->storage.received == true);
+
clif->storageclose(sd);
- if( map->save_settings&4 )
- chrif->save(sd,0); //Invokes the storage saving as well.
+ if (map->save_settings & 4)
+ chrif->save(sd, 0); //Invokes the storage saving as well.
+
+ /* Erase deleted account storage items from memory
+ * and resize the vector. */
+ while (i < VECTOR_LENGTH(sd->storage.item)) {
+ if (VECTOR_INDEX(sd->storage.item, i).nameid == 0) {
+ VECTOR_ERASE(sd->storage.item, i);
+ } else {
+ i++;
+ }
+ }
sd->state.storage_flag = STORAGE_FLAG_CLOSED;
}
@@ -366,7 +440,7 @@ void storage_storageclose(struct map_session_data* sd)
/*==========================================
* When quitting the game.
*------------------------------------------*/
-void storage_storage_quit(struct map_session_data* sd, int flag)
+static void storage_storage_quit(struct map_session_data *sd, int flag)
{
nullpo_retv(sd);
@@ -379,7 +453,7 @@ void storage_storage_quit(struct map_session_data* sd, int flag)
/**
* @see DBCreateData
*/
-struct DBData create_guildstorage(union DBKey key, va_list args)
+static struct DBData create_guildstorage(union DBKey key, va_list args)
{
struct guild_storage *gs = NULL;
gs = (struct guild_storage *) aCalloc(sizeof(struct guild_storage), 1);
@@ -387,7 +461,7 @@ struct DBData create_guildstorage(union DBKey key, va_list args)
return DB->ptr2data(gs);
}
-struct guild_storage *guild2storage_ensure(int guild_id)
+static struct guild_storage *guild2storage_ensure(int guild_id)
{
struct guild_storage *gs = NULL;
if(guild->search(guild_id) != NULL)
@@ -395,20 +469,20 @@ struct guild_storage *guild2storage_ensure(int guild_id)
return gs;
}
-int guild_storage_delete(int guild_id)
+static int guild_storage_delete(int guild_id)
{
idb_remove(gstorage->db,guild_id);
return 0;
}
/*==========================================
-* Attempt to open guild storage for sd
-* return
-* 0 : success (open or req to create a new one)
-* 1 : fail
-* 2 : no guild for sd
+ * Attempt to open guild storage for sd
+ * return
+ * 0 : success (open or req to create a new one)
+ * 1 : fail
+ * 2 : no guild for sd
*------------------------------------------*/
-int storage_guild_storageopen(struct map_session_data* sd)
+static int storage_guild_storageopen(struct map_session_data *sd)
{
struct guild_storage *gstor;
@@ -438,18 +512,18 @@ int storage_guild_storageopen(struct map_session_data* sd)
gstor->storage_status = 1;
sd->state.storage_flag = STORAGE_FLAG_GUILD;
storage->sortitem(gstor->items, ARRAYLENGTH(gstor->items));
- clif->storagelist(sd, gstor->items, ARRAYLENGTH(gstor->items));
+ clif->guildStorageList(sd, gstor->items, ARRAYLENGTH(gstor->items));
clif->updatestorageamount(sd, gstor->storage_amount, MAX_GUILD_STORAGE);
return 0;
}
/*==========================================
-* Attempt to add an item in guild storage, then refresh it
-* return
-* 0 : success
-* 1 : fail
+ * Attempt to add an item in guild storage, then refresh it
+ * return
+ * 0 : success
+ * 1 : fail
*------------------------------------------*/
-int guild_storage_additem(struct map_session_data* sd, struct guild_storage* stor, struct item* item_data, int amount)
+static int guild_storage_additem(struct map_session_data *sd, struct guild_storage *stor, struct item *item_data, int amount)
{
struct item_data *data;
int i;
@@ -507,12 +581,12 @@ int guild_storage_additem(struct map_session_data* sd, struct guild_storage* sto
}
/*==========================================
-* Attempt to delete an item in guild storage, then refresh it
-* return
-* 0 : success
-* 1 : fail
+ * Attempt to delete an item in guild storage, then refresh it
+ * return
+ * 0 : success
+ * 1 : fail
*------------------------------------------*/
-int guild_storage_delitem(struct map_session_data* sd, struct guild_storage* stor, int n, int amount)
+static int guild_storage_delitem(struct map_session_data *sd, struct guild_storage *stor, int n, int amount)
{
nullpo_retr(1, sd);
nullpo_retr(1, stor);
@@ -533,13 +607,13 @@ int guild_storage_delitem(struct map_session_data* sd, struct guild_storage* sto
}
/*==========================================
-* Attempt to add an item in guild storage from inventory, then refresh it
-* @index : inventory idx
-* return
-* 0 : fail
-* 1 : succes
+ * Attempt to add an item in guild storage from inventory, then refresh it
+ * @index : inventory idx
+ * return
+ * 0 : fail
+ * 1 : succes
*------------------------------------------*/
-int storage_guild_storageadd(struct map_session_data* sd, int index, int amount)
+static int storage_guild_storageadd(struct map_session_data *sd, int index, int amount)
{
struct guild_storage *stor;
@@ -549,7 +623,7 @@ int storage_guild_storageadd(struct map_session_data* sd, int index, int amount)
if( !stor->storage_status || stor->storage_amount > MAX_GUILD_STORAGE )
return 0;
- if( index<0 || index>=MAX_INVENTORY )
+ if (index < 0 || index >= sd->status.inventorySize)
return 0;
if( sd->status.inventory[index].nameid <= 0 )
@@ -566,19 +640,19 @@ int storage_guild_storageadd(struct map_session_data* sd, int index, int amount)
if( gstorage->additem(sd,stor,&sd->status.inventory[index],amount) == 0 )
pc->delitem(sd, index, amount, 0, DELITEM_TOSTORAGE, LOG_TYPE_GSTORAGE);
else
- clif->dropitem(sd, index, 0);
+ clif->item_movefailed(sd, index);
return 1;
}
/*==========================================
-* Attempt to retrieve an item from guild storage to inventory, then refresh it
-* @index : storage idx
-* return
-* 0 : fail
-* 1 : success
+ * Attempt to retrieve an item from guild storage to inventory, then refresh it
+ * @index : storage idx
+ * return
+ * 0 : fail
+ * 1 : success
*------------------------------------------*/
-int storage_guild_storageget(struct map_session_data* sd, int index, int amount)
+static int storage_guild_storageget(struct map_session_data *sd, int index, int amount)
{
struct guild_storage *stor;
int flag;
@@ -613,13 +687,13 @@ int storage_guild_storageget(struct map_session_data* sd, int index, int amount)
}
/*==========================================
-* Attempt to add an item in guild storage from cart, then refresh it
-* @index : cart inventory idx
-* return
-* 0 : fail
-* 1 : success
+ * Attempt to add an item in guild storage from cart, then refresh it
+ * @index : cart inventory idx
+ * return
+ * 0 : fail
+ * 1 : success
*------------------------------------------*/
-int storage_guild_storageaddfromcart(struct map_session_data* sd, int index, int amount)
+static int storage_guild_storageaddfromcart(struct map_session_data *sd, int index, int amount)
{
struct guild_storage *stor;
@@ -645,13 +719,13 @@ int storage_guild_storageaddfromcart(struct map_session_data* sd, int index, int
}
/*==========================================
-* Attempt to retrieve an item from guild storage to cart, then refresh it
-* @index : storage idx
-* return
-* 0 : fail
-* 1 : success
+ * Attempt to retrieve an item from guild storage to cart, then refresh it
+ * @index : storage idx
+ * return
+ * 0 : fail
+ * 1 : success
*------------------------------------------*/
-int storage_guild_storagegettocart(struct map_session_data* sd, int index, int amount)
+static int storage_guild_storagegettocart(struct map_session_data *sd, int index, int amount)
{
struct guild_storage *stor;
@@ -677,12 +751,12 @@ int storage_guild_storagegettocart(struct map_session_data* sd, int index, int a
}
/*==========================================
-* Request to save guild storage
-* return
-* 0 : fail (no storage)
-* 1 : success
+ * Request to save guild storage
+ * return
+ * 0 : fail (no storage)
+ * 1 : success
*------------------------------------------*/
-int storage_guild_storagesave(int account_id, int guild_id, int flag)
+static int storage_guild_storagesave(int account_id, int guild_id, int flag)
{
struct guild_storage *stor = idb_get(gstorage->db,guild_id);
@@ -698,12 +772,12 @@ int storage_guild_storagesave(int account_id, int guild_id, int flag)
}
/*==========================================
-* ACK save of guild storage
-* return
-* 0 : fail (no storage)
-* 1 : success
+ * ACK save of guild storage
+ * return
+ * 0 : fail (no storage)
+ * 1 : success
*------------------------------------------*/
-int storage_guild_storagesaved(int guild_id)
+static int storage_guild_storagesaved(int guild_id)
{
struct guild_storage *stor;
@@ -718,7 +792,7 @@ int storage_guild_storagesaved(int guild_id)
}
//Close storage for sd and save it
-int storage_guild_storageclose(struct map_session_data* sd)
+static int storage_guild_storageclose(struct map_session_data *sd)
{
struct guild_storage *stor;
@@ -738,7 +812,7 @@ int storage_guild_storageclose(struct map_session_data* sd)
return 0;
}
-int storage_guild_storage_quit(struct map_session_data* sd, int flag)
+static int storage_guild_storage_quit(struct map_session_data *sd, int flag)
{
struct guild_storage *stor;
@@ -767,14 +841,14 @@ int storage_guild_storage_quit(struct map_session_data* sd, int flag)
return 0;
}
-void do_init_gstorage(bool minimal)
+static void do_init_gstorage(bool minimal)
{
if (minimal)
return;
gstorage->db = idb_alloc(DB_OPT_RELEASE_DATA);
}
-void do_final_gstorage(void)
+static void do_final_gstorage(void)
{
db_destroy(gstorage->db);
}
@@ -788,8 +862,8 @@ void storage_defaults(void)
/* */
storage->delitem = storage_delitem;
storage->open = storage_storageopen;
- storage->add = storage_storageadd;
- storage->get = storage_storageget;
+ storage->add = storage_add_from_inventory;
+ storage->get = storage_add_to_inventory;
storage->additem = storage_additem;
storage->addfromcart = storage_storageaddfromcart;
storage->gettocart = storage_storagegettocart;
diff --git a/src/map/storage.h b/src/map/storage.h
index 509862db7..5c6152894 100644
--- a/src/map/storage.h
+++ b/src/map/storage.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/map/trade.c b/src/map/trade.c
index 252dff709..9c284ba23 100644
--- a/src/map/trade.c
+++ b/src/map/trade.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -40,13 +40,13 @@
#include <stdio.h>
#include <string.h>
-struct trade_interface trade_s;
+static struct trade_interface trade_s;
struct trade_interface *trade;
/*==========================================
* Initiates a trade request.
*------------------------------------------*/
-void trade_traderequest(struct map_session_data *sd, struct map_session_data *target_sd)
+static void trade_traderequest(struct map_session_data *sd, struct map_session_data *target_sd)
{
nullpo_retv(sd);
@@ -118,7 +118,7 @@ void trade_traderequest(struct map_session_data *sd, struct map_session_data *ta
* Weird enough, the client should only send 3/4
* and the server is the one that can reply 0~2
*------------------------------------------*/
-void trade_tradeack(struct map_session_data *sd, int type)
+static void trade_tradeack(struct map_session_data *sd, int type)
{
struct map_session_data *tsd;
nullpo_retv(sd);
@@ -192,7 +192,7 @@ void trade_tradeack(struct map_session_data *sd, int type)
* @retval 0 The trade can continue
* @retval 1 Hack attempt
**/
-int impossible_trade_check(struct map_session_data *sd)
+static int impossible_trade_check(struct map_session_data *sd)
{
struct item inventory[MAX_INVENTORY];
char message_to_gm[200];
@@ -209,7 +209,7 @@ int impossible_trade_check(struct map_session_data *sd)
// remove this part: arrows can be trade and equipped
// re-added! [celest]
// remove equipped items (they can not be trade)
- for (i = 0; i < MAX_INVENTORY; i++)
+ for (i = 0; i < sd->status.inventorySize; i++)
if (inventory[i].nameid > 0 && inventory[i].equip && !(inventory[i].equip & EQP_AMMO))
memset(&inventory[i], 0, sizeof(struct item));
@@ -218,7 +218,7 @@ int impossible_trade_check(struct map_session_data *sd)
if (!sd->deal.item[i].amount)
continue;
index = sd->deal.item[i].index;
- if (index < 0 || index >= MAX_INVENTORY)
+ if (index < 0 || index >= sd->status.inventorySize)
return 1;
if (inventory[index].amount < sd->deal.item[i].amount) {
// if more than the player have -> hack
@@ -253,7 +253,7 @@ int impossible_trade_check(struct map_session_data *sd)
/*==========================================
* Checks if trade is possible (against zeny limits, inventory limits, etc)
*------------------------------------------*/
-int trade_check(struct map_session_data *sd, struct map_session_data *tsd)
+static int trade_check(struct map_session_data *sd, struct map_session_data *tsd)
{
struct item inventory[MAX_INVENTORY];
struct item inventory2[MAX_INVENTORY];
@@ -281,9 +281,9 @@ int trade_check(struct map_session_data *sd, struct map_session_data *tsd)
return 0; //qty Exploit?
data = itemdb->search(inventory[n].nameid);
- i = MAX_INVENTORY;
+ i = tsd->status.inventorySize;
if (itemdb->isstackable2(data)) { //Stackable item.
- for(i = 0; i < MAX_INVENTORY; i++)
+ for(i = 0; i < tsd->status.inventorySize; i++)
if (inventory2[i].nameid == inventory[n].nameid &&
inventory2[i].card[0] == inventory[n].card[0] && inventory2[i].card[1] == inventory[n].card[1] &&
inventory2[i].card[2] == inventory[n].card[2] && inventory2[i].card[3] == inventory[n].card[3]) {
@@ -295,9 +295,9 @@ int trade_check(struct map_session_data *sd, struct map_session_data *tsd)
}
}
- if (i == MAX_INVENTORY) {// look for an empty slot.
- for(i = 0; i < MAX_INVENTORY && inventory2[i].nameid; i++);
- if (i == MAX_INVENTORY)
+ if (i == tsd->status.inventorySize) {// look for an empty slot.
+ for (i = 0; i < tsd->status.inventorySize && inventory2[i].nameid; i++);
+ if (i == tsd->status.inventorySize)
return 0;
memcpy(&inventory2[i], &inventory[n], sizeof(struct item));
inventory2[i].amount = amount;
@@ -308,15 +308,15 @@ int trade_check(struct map_session_data *sd, struct map_session_data *tsd)
if (!amount)
continue;
n = tsd->deal.item[trade_i].index;
- if (n < 0 || n >= MAX_INVENTORY)
+ if (n < 0 || n >= tsd->status.inventorySize)
return 0;
if (amount > inventory2[n].amount)
return 0;
// search if it's possible to add item (for full inventory)
data = itemdb->search(inventory2[n].nameid);
- i = MAX_INVENTORY;
+ i = sd->status.inventorySize;
if (itemdb->isstackable2(data)) {
- for(i = 0; i < MAX_INVENTORY; i++)
+ for(i = 0; i < sd->status.inventorySize; i++)
if (inventory[i].nameid == inventory2[n].nameid &&
inventory[i].card[0] == inventory2[n].card[0] && inventory[i].card[1] == inventory2[n].card[1] &&
inventory[i].card[2] == inventory2[n].card[2] && inventory[i].card[3] == inventory2[n].card[3]) {
@@ -327,9 +327,9 @@ int trade_check(struct map_session_data *sd, struct map_session_data *tsd)
break;
}
}
- if (i == MAX_INVENTORY) {
- for(i = 0; i < MAX_INVENTORY && inventory[i].nameid; i++);
- if (i == MAX_INVENTORY)
+ if (i == sd->status.inventorySize) {
+ for(i = 0; i < sd->status.inventorySize && inventory[i].nameid; i++);
+ if (i == sd->status.inventorySize)
return 0;
memcpy(&inventory[i], &inventory2[n], sizeof(struct item));
inventory[i].amount = amount;
@@ -343,7 +343,7 @@ int trade_check(struct map_session_data *sd, struct map_session_data *tsd)
/*==========================================
* Adds an item/qty to the trade window
*------------------------------------------*/
-void trade_tradeadditem(struct map_session_data *sd, short index, short amount)
+static void trade_tradeadditem(struct map_session_data *sd, short index, short amount)
{
struct map_session_data *target_sd;
struct item *item;
@@ -369,7 +369,7 @@ void trade_tradeadditem(struct map_session_data *sd, short index, short amount)
index -= 2; // 0 is for zeny, 1 is unknown. Gravity, go figure...
//Item checks...
- if( index < 0 || index >= MAX_INVENTORY )
+ if (index < 0 || index >= sd->status.inventorySize)
return;
if( amount < 0 || amount > sd->status.inventory[index].amount )
return;
@@ -438,7 +438,7 @@ void trade_tradeadditem(struct map_session_data *sd, short index, short amount)
/*==========================================
* Adds the specified amount of zeny to the trade window
*------------------------------------------*/
-void trade_tradeaddzeny(struct map_session_data* sd, int amount)
+static void trade_tradeaddzeny(struct map_session_data *sd, int amount)
{
struct map_session_data* target_sd;
nullpo_retv(sd);
@@ -464,7 +464,7 @@ void trade_tradeaddzeny(struct map_session_data* sd, int amount)
/*==========================================
* 'Ok' button on the trade window is pressed.
*------------------------------------------*/
-void trade_tradeok(struct map_session_data *sd)
+static void trade_tradeok(struct map_session_data *sd)
{
struct map_session_data *target_sd;
@@ -485,7 +485,7 @@ void trade_tradeok(struct map_session_data *sd)
/*==========================================
* 'Cancel' is pressed. (or trade was force-canceled by the code)
*------------------------------------------*/
-void trade_tradecancel(struct map_session_data *sd)
+static void trade_tradecancel(struct map_session_data *sd)
{
struct map_session_data *target_sd;
int trade_i;
@@ -545,7 +545,7 @@ void trade_tradecancel(struct map_session_data *sd)
/*==========================================
* lock sd and tsd trade data, execute the trade, clear, then save players
*------------------------------------------*/
-void trade_tradecommit(struct map_session_data *sd)
+static void trade_tradecommit(struct map_session_data *sd)
{
struct map_session_data *tsd;
int trade_i;
diff --git a/src/map/trade.h b/src/map/trade.h
index 55ff31ed2..ac732122f 100644
--- a/src/map/trade.h
+++ b/src/map/trade.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/map/unit.c b/src/map/unit.c
index 7d68bef66..68e6aeec1 100644
--- a/src/map/unit.c
+++ b/src/map/unit.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -27,6 +27,7 @@
#include "map/battleground.h"
#include "map/chat.h"
#include "map/chrif.h"
+#include "map/clan.h"
#include "map/clif.h"
#include "map/duel.h"
#include "map/elemental.h"
@@ -61,10 +62,10 @@
#include <stdlib.h>
#include <string.h>
-const short dirx[8]={0,-1,-1,-1,0,1,1,1};
-const short diry[8]={1,1,0,-1,-1,-1,0,1};
+const short dirx[8] = { 0, -1, -1, -1, 0, 1, 1, 1 };
+const short diry[8] = { 1, 1, 0, -1, -1, -1, 0, 1 };
-struct unit_interface unit_s;
+static struct unit_interface unit_s;
struct unit_interface *unit;
/**
@@ -73,7 +74,7 @@ struct unit_interface *unit;
* @param bl block_list to process
* @return a pointer to the given object's unit_data
**/
-struct unit_data* unit_bl2ud(struct block_list *bl)
+static struct unit_data *unit_bl2ud(struct block_list *bl)
{
if (bl == NULL) return NULL;
if (bl->type == BL_PC) return &BL_UCAST(BL_PC, bl)->ud;
@@ -93,7 +94,7 @@ struct unit_data* unit_bl2ud(struct block_list *bl)
* @param bl block_list to process
* @return a pointer to the given object's unit_data
*/
-struct unit_data *unit_bl2ud2(struct block_list *bl)
+static struct unit_data *unit_bl2ud2(struct block_list *bl)
{
struct npc_data *nd = BL_CAST(BL_NPC, bl);
if (nd != NULL && nd->ud == &npc->base_ud) {
@@ -104,7 +105,7 @@ struct unit_data *unit_bl2ud2(struct block_list *bl)
return unit->bl2ud(bl);
}
-int unit_walktoxy_sub(struct block_list *bl)
+static int unit_walktoxy_sub(struct block_list *bl)
{
int i;
struct walkpath_data wpd;
@@ -175,7 +176,7 @@ int unit_walktoxy_sub(struct block_list *bl)
* @param data: Not used
* @return 1: Success 0: Fail (No valid bl)
*/
-int unit_step_timer(int tid, int64 tick, int id, intptr_t data)
+static int unit_step_timer(int tid, int64 tick, int id, intptr_t data)
{
struct block_list *bl;
struct unit_data *ud;
@@ -235,7 +236,7 @@ int unit_step_timer(int tid, int64 tick, int id, intptr_t data)
return 1;
}
-int unit_walktoxy_timer(int tid, int64 tick, int id, intptr_t data)
+static int unit_walktoxy_timer(int tid, int64 tick, int id, intptr_t data)
{
int i;
int x,y,dx,dy;
@@ -474,7 +475,7 @@ int unit_walktoxy_timer(int tid, int64 tick, int id, intptr_t data)
ud->to_x = bl->x;
ud->to_y = bl->y;
- if(battle_config.official_cell_stack_limit && map->count_oncell(bl->m, x, y, BL_CHAR|BL_NPC, 1) > battle_config.official_cell_stack_limit) {
+ if (battle_config.official_cell_stack_limit && map->count_oncell(bl->m, x, y, BL_CHAR|BL_NPC, 0x1 | 0x2) > battle_config.official_cell_stack_limit) {
//Walked on occupied cell, call unit_walktoxy again
if(ud->steptimer != INVALID_TIMER) {
//Execute step timer on next step instead
@@ -487,7 +488,7 @@ int unit_walktoxy_timer(int tid, int64 tick, int id, intptr_t data)
return 0;
}
-int unit_delay_walktoxy_timer(int tid, int64 tick, int id, intptr_t data)
+static int unit_delay_walktoxy_timer(int tid, int64 tick, int id, intptr_t data)
{
struct block_list *bl = map->id2bl(id);
@@ -502,7 +503,7 @@ int unit_delay_walktoxy_timer(int tid, int64 tick, int id, intptr_t data)
//&2 -> force walking
//&4 -> Delay walking if the reason you can't walk is the canwalk delay
//&8 -> Search for an unoccupied cell and cancel if none available
-int unit_walktoxy( struct block_list *bl, short x, short y, int flag)
+static int unit_walktoxy(struct block_list *bl, short x, short y, int flag)
{
struct unit_data* ud = NULL;
struct status_change* sc = NULL;
@@ -563,7 +564,7 @@ int unit_walktoxy( struct block_list *bl, short x, short y, int flag)
}
//To set Mob's CHASE/FOLLOW states (shouldn't be done if there's no path to reach)
-static inline void set_mobstate(struct block_list* bl, int flag)
+static inline void set_mobstate(struct block_list *bl, int flag)
{
struct mob_data* md = BL_CAST(BL_MOB,bl);
@@ -571,7 +572,7 @@ static inline void set_mobstate(struct block_list* bl, int flag)
md->state.skillstate = md->state.aggressive ? MSS_FOLLOW : MSS_RUSH;
}
-int unit_walktobl_sub(int tid, int64 tick, int id, intptr_t data)
+static int unit_walktobl_sub(int tid, int64 tick, int id, intptr_t data)
{
struct block_list *bl = map->id2bl(id);
struct unit_data *ud = bl?unit->bl2ud(bl):NULL;
@@ -589,7 +590,7 @@ int unit_walktobl_sub(int tid, int64 tick, int id, intptr_t data)
// Chases a tbl. If the flag&1, use hard-path seek,
// if flag&2, start attacking upon arrival within range, otherwise just walk to that character.
-int unit_walktobl(struct block_list *bl, struct block_list *tbl, int range, int flag)
+static int unit_walktobl(struct block_list *bl, struct block_list *tbl, int range, int flag)
{
struct unit_data *ud = NULL;
struct status_change *sc = NULL;
@@ -651,7 +652,7 @@ int unit_walktobl(struct block_list *bl, struct block_list *tbl, int range, int
* Called by unit_run when an object was hit
* @param sd Required only when using SC_WUGDASH
**/
-void unit_run_hit(struct block_list *bl, struct status_change *sc, struct map_session_data *sd, enum sc_type type)
+static void unit_run_hit(struct block_list *bl, struct status_change *sc, struct map_session_data *sd, enum sc_type type)
{
int lv;
struct unit_data *ud;
@@ -686,7 +687,7 @@ void unit_run_hit(struct block_list *bl, struct status_change *sc, struct map_se
* @retval true Finished running
* @retval false Hit an object/Couldn't run
**/
-bool unit_run(struct block_list *bl, struct map_session_data *sd, enum sc_type type)
+static bool unit_run(struct block_list *bl, struct map_session_data *sd, enum sc_type type)
{
struct status_change *sc;
short to_x,to_y,dir_x,dir_y;
@@ -747,7 +748,7 @@ bool unit_run(struct block_list *bl, struct map_session_data *sd, enum sc_type t
}
//Makes bl attempt to run dist cells away from target. Uses hard-paths.
-int unit_escape(struct block_list *bl, struct block_list *target, short dist)
+static int unit_escape(struct block_list *bl, struct block_list *target, short dist)
{
uint8 dir;
nullpo_ret(bl);
@@ -758,7 +759,7 @@ int unit_escape(struct block_list *bl, struct block_list *target, short dist)
}
//Instant warp function.
-int unit_movepos(struct block_list *bl, short dst_x, short dst_y, int easy, bool checkpath)
+static int unit_movepos(struct block_list *bl, short dst_x, short dst_y, int easy, bool checkpath)
{
short dx,dy;
uint8 dir;
@@ -822,7 +823,7 @@ int unit_movepos(struct block_list *bl, short dst_x, short dst_y, int easy, bool
return 1;
}
-int unit_setdir(struct block_list *bl,unsigned char dir)
+static int unit_setdir(struct block_list *bl, unsigned char dir)
{
struct unit_data *ud;
nullpo_ret(bl );
@@ -835,7 +836,7 @@ int unit_setdir(struct block_list *bl,unsigned char dir)
return 0;
}
-uint8 unit_getdir(struct block_list *bl)
+static uint8 unit_getdir(struct block_list *bl)
{
struct unit_data *ud;
nullpo_ret(bl);
@@ -851,7 +852,7 @@ uint8 unit_getdir(struct block_list *bl)
// map cell restrictions are respected.
// flag:
// &1 Do not send position update packets.
-int unit_blown(struct block_list* bl, int dx, int dy, int count, int flag)
+static int unit_blown(struct block_list *bl, int dx, int dy, int count, int flag)
{
if(count) {
struct map_session_data* sd;
@@ -917,7 +918,7 @@ int unit_blown(struct block_list* bl, int dx, int dy, int count, int flag)
//Warps a unit/ud to a given map/position.
//In the case of players, pc->setpos is used.
//it respects the no warp flags, so it is safe to call this without doing nowarpto/nowarp checks.
-int unit_warp(struct block_list *bl,short m,short x,short y,clr_type type)
+static int unit_warp(struct block_list *bl, short m, short x, short y, enum clr_type type)
{
struct unit_data *ud;
nullpo_ret(bl);
@@ -993,7 +994,7 @@ int unit_warp(struct block_list *bl,short m,short x,short y,clr_type type)
* Flag values: @see unit_stopwalking_flag.
* Upper bytes may be used for other purposes depending on the unit type.
*------------------------------------------*/
-int unit_stop_walking(struct block_list *bl, int flag)
+static int unit_stop_walking(struct block_list *bl, int flag)
{
struct unit_data *ud;
const struct TimerData* td;
@@ -1036,7 +1037,7 @@ int unit_stop_walking(struct block_list *bl, int flag)
return 1;
}
-int unit_skilluse_id(struct block_list *src, int target_id, uint16 skill_id, uint16 skill_lv)
+static int unit_skilluse_id(struct block_list *src, int target_id, uint16 skill_id, uint16 skill_lv)
{
return unit->skilluse_id2(
src, target_id, skill_id, skill_lv,
@@ -1045,7 +1046,7 @@ int unit_skilluse_id(struct block_list *src, int target_id, uint16 skill_id, uin
);
}
-int unit_is_walking(struct block_list *bl)
+static int unit_is_walking(struct block_list *bl)
{
struct unit_data *ud = unit->bl2ud(bl);
nullpo_ret(bl);
@@ -1056,7 +1057,7 @@ int unit_is_walking(struct block_list *bl)
/*==========================================
* Determines if the bl can move based on status changes. [Skotlex]
*------------------------------------------*/
-int unit_can_move(struct block_list *bl)
+static int unit_can_move(struct block_list *bl)
{
struct map_session_data *sd;
struct unit_data *ud;
@@ -1090,7 +1091,7 @@ int unit_can_move(struct block_list *bl)
pc_issit(sd) ||
sd->state.vending ||
sd->state.buyingstore ||
- sd->state.blockedmove
+ sd->block_action.move
))
return 0; //Can't move
@@ -1168,7 +1169,7 @@ int unit_can_move(struct block_list *bl)
* Resume running after a walk delay
*------------------------------------------*/
-int unit_resume_running(int tid, int64 tick, int id, intptr_t data)
+static int unit_resume_running(int tid, int64 tick, int id, intptr_t data)
{
struct unit_data *ud = (struct unit_data *)data;
struct map_session_data *sd = map->id2sd(id);
@@ -1193,7 +1194,7 @@ int unit_resume_running(int tid, int64 tick, int id, intptr_t data)
* if type is 0, this is a damage induced delay: if previous delay is active, do not change it.
* if type is 1, this is a skill induced delay: walk-delay may only be increased, not decreased.
*------------------------------------------*/
-int unit_set_walkdelay(struct block_list *bl, int64 tick, int delay, int type)
+static int unit_set_walkdelay(struct block_list *bl, int64 tick, int delay, int type)
{
struct unit_data *ud = unit->bl2ud(bl);
if (delay <= 0 || !ud) return 0;
@@ -1235,7 +1236,7 @@ int unit_set_walkdelay(struct block_list *bl, int64 tick, int delay, int type)
}
//-------------- stop here
-int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, uint16 skill_lv, int casttime, int castcancel)
+static int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, uint16 skill_lv, int casttime, int castcancel)
{
struct unit_data *ud;
struct status_data *tstatus;
@@ -1302,7 +1303,7 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui
return 0;
p_sd = map->charid2sd(sd->status.partner_id);
if (p_sd == NULL) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
target = &p_sd->bl;
@@ -1311,11 +1312,11 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui
case GC_WEAPONCRUSH:
if( sc && sc->data[SC_COMBOATTACK] && sc->data[SC_COMBOATTACK]->val1 == GC_WEAPONBLOCKING ) {
if( (target=map->id2bl(sc->data[SC_COMBOATTACK]->val2)) == NULL ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_GC_WEAPONBLOCKING,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_GC_WEAPONBLOCKING, 0, 0);
return 0;
}
} else {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_GC_WEAPONBLOCKING,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_GC_WEAPONBLOCKING, 0, 0);
return 0;
}
break;
@@ -1374,7 +1375,7 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui
if (sd) {
if ((skill->get_inf2(skill_id)&INF2_ENSEMBLE_SKILL) && skill->check_pc_partner(sd, skill_id, &skill_lv, 1, 0) < 1) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
@@ -1388,14 +1389,14 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui
case BD_ENCORE:
//Prevent using the dance skill if you no longer have the skill in your tree.
if (!sd->skill_id_dance || pc->checkskill(sd, sd->skill_id_dance) <= 0){
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
sd->skill_id_old = skill_id;
break;
case WL_WHITEIMPRISON:
if (battle->check_target(src, target, BCT_SELF | BCT_ENEMY) < 0) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_TOTARGET, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_TOTARGET, 0, 0);
return 0;
}
break;
@@ -1503,7 +1504,7 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui
if (i == count) {
ARR_FIND(0, count, i, sd->devotion[i] == 0);
if(i == count) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0; // Can't cast on other characters when limit is reached
}
}
@@ -1511,7 +1512,7 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui
break;
case AB_CLEARANCE:
if (target->type != BL_MOB && battle->check_target(src, target, BCT_PARTY) <= 0 && sd) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_TOTARGET, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_TOTARGET, 0, 0);
return 0;
}
break;
@@ -1667,10 +1668,13 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui
} else
skill->castend_id(ud->skilltimer,tick,src->id,0);
+ if (sd != NULL && battle_config.prevent_logout_trigger & PLT_SKILL)
+ sd->canlog_tick = timer->gettick();
+
return 1;
}
-int unit_skilluse_pos(struct block_list *src, short skill_x, short skill_y, uint16 skill_id, uint16 skill_lv)
+static int unit_skilluse_pos(struct block_list *src, short skill_x, short skill_y, uint16 skill_id, uint16 skill_lv)
{
return unit->skilluse_pos2(
src, skill_x, skill_y, skill_id, skill_lv,
@@ -1679,7 +1683,7 @@ int unit_skilluse_pos(struct block_list *src, short skill_x, short skill_y, uint
);
}
-int unit_skilluse_pos2( struct block_list *src, short skill_x, short skill_y, uint16 skill_id, uint16 skill_lv, int casttime, int castcancel)
+static int unit_skilluse_pos2(struct block_list *src, short skill_x, short skill_y, uint16 skill_id, uint16 skill_lv, int casttime, int castcancel)
{
struct map_session_data *sd = NULL;
struct unit_data *ud = NULL;
@@ -1721,7 +1725,7 @@ int unit_skilluse_pos2( struct block_list *src, short skill_x, short skill_y, ui
if (map->getcell(src->m, src, skill_x, skill_y, CELL_CHKWALL)) {
// can't cast ground targeted spells on wall cells
- if (sd) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ if (sd) clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
@@ -1813,13 +1817,17 @@ int unit_skilluse_pos2( struct block_list *src, short skill_x, short skill_y, ui
ud->skilltimer = INVALID_TIMER;
skill->castend_pos(ud->skilltimer,tick,src->id,0);
}
+
+ if (sd != NULL && battle_config.prevent_logout_trigger & PLT_SKILL)
+ sd->canlog_tick = timer->gettick();
+
return 1;
}
/*========================================
* update a block's attack target
*----------------------------------------*/
-int unit_set_target(struct unit_data* ud, int target_id)
+static int unit_set_target(struct unit_data *ud, int target_id)
{
nullpo_ret(ud);
@@ -1828,7 +1836,7 @@ int unit_set_target(struct unit_data* ud, int target_id)
struct block_list* target;
if (ud->target && (target = map->id2bl(ud->target)) != NULL && (ux = unit->bl2ud(target)) != NULL && ux->target_count > 0)
--ux->target_count;
- if (target_id && (target = map->id2bl(target_id)) != NULL && (ux = unit->bl2ud(target)) != NULL)
+ if (target_id && (target = map->id2bl(target_id)) != NULL && (ux = unit->bl2ud(target)) != NULL && ux->target_count < UCHAR_MAX)
++ux->target_count;
}
@@ -1840,7 +1848,7 @@ int unit_set_target(struct unit_data* ud, int target_id)
* Stop a unit's attacks
* @param bl: Object to stop
*/
-void unit_stop_attack(struct block_list *bl)
+static void unit_stop_attack(struct block_list *bl)
{
struct unit_data *ud;
nullpo_retv(bl);
@@ -1862,7 +1870,7 @@ void unit_stop_attack(struct block_list *bl)
* Stop a unit's step action
* @param bl: Object to stop
*/
-void unit_stop_stepaction(struct block_list *bl)
+static void unit_stop_stepaction(struct block_list *bl)
{
struct unit_data *ud;
nullpo_retv(bl);
@@ -1884,7 +1892,7 @@ void unit_stop_stepaction(struct block_list *bl)
}
//Means current target is unattackable. For now only unlocks mobs.
-int unit_unattackable(struct block_list *bl)
+static int unit_unattackable(struct block_list *bl)
{
struct unit_data *ud = unit->bl2ud(bl);
nullpo_ret(bl);
@@ -1905,7 +1913,7 @@ int unit_unattackable(struct block_list *bl)
* Attack request
* If type is an ongoing attack
*------------------------------------------*/
-int unit_attack(struct block_list *src, int target_id, int continuous)
+static int unit_attack(struct block_list *src, int target_id, int continuous)
{
struct block_list *target;
struct unit_data *ud;
@@ -1975,7 +1983,7 @@ int unit_attack(struct block_list *src, int target_id, int continuous)
//Cancels an ongoing combo, resets attackable time and restarts the
//attack timer to resume attacking after amotion time. [Skotlex]
-int unit_cancel_combo(struct block_list *bl)
+static int unit_cancel_combo(struct block_list *bl)
{
struct unit_data *ud;
@@ -1998,7 +2006,7 @@ int unit_cancel_combo(struct block_list *bl)
/*==========================================
*
*------------------------------------------*/
-bool unit_can_reach_pos(struct block_list *bl,int x,int y, int easy)
+static bool unit_can_reach_pos(struct block_list *bl, int x, int y, int easy)
{
nullpo_retr(false, bl);
@@ -2011,7 +2019,7 @@ bool unit_can_reach_pos(struct block_list *bl,int x,int y, int easy)
/*==========================================
*
*------------------------------------------*/
-bool unit_can_reach_bl(struct block_list *bl,struct block_list *tbl, int range, int easy, short *x, short *y)
+static bool unit_can_reach_bl(struct block_list *bl, struct block_list *tbl, int range, int easy, short *x, short *y)
{
short dx,dy;
struct walkpath_data wpd;
@@ -2050,7 +2058,7 @@ bool unit_can_reach_bl(struct block_list *bl,struct block_list *tbl, int range,
#ifdef OFFICIAL_WALKPATH
if( !path->search_long(NULL, bl, bl->m, bl->x, bl->y, tbl->x-dx, tbl->y-dy, CELL_CHKNOPASS) // Check if there is an obstacle between
- && wpd.path_len > 14 // Official number of walkable cells is 14 if and only if there is an obstacle between. [malufett]
+ && wpd.path_len > 14 // Official number of walkable cells is 14 if and only if there is an obstacle between. [malufett]
&& (bl->type != BL_NPC) ) // If type is a NPC, please disregard.
return false;
#endif
@@ -2062,7 +2070,7 @@ bool unit_can_reach_bl(struct block_list *bl,struct block_list *tbl, int range,
/*==========================================
* Calculates position of Pet/Mercenary/Homunculus/Elemental
*------------------------------------------*/
-int unit_calc_pos(struct block_list *bl, int tx, int ty, uint8 dir)
+static int unit_calc_pos(struct block_list *bl, int tx, int ty, uint8 dir)
{
int dx, dy, x, y;
struct unit_data *ud = unit->bl2ud(bl);
@@ -2116,7 +2124,7 @@ int unit_calc_pos(struct block_list *bl, int tx, int ty, uint8 dir)
/*==========================================
* Continuous Attack (function timer)
*------------------------------------------*/
-int unit_attack_timer_sub(struct block_list* src, int tid, int64 tick)
+static int unit_attack_timer_sub(struct block_list *src, int tid, int64 tick)
{
struct block_list *target;
struct unit_data *ud;
@@ -2162,7 +2170,7 @@ int unit_attack_timer_sub(struct block_list* src, int tid, int64 tick)
if (!battle_config.sdelay_attack_enable && DIFF_TICK(ud->canact_tick, tick) > 0 && !(sd && (pc->checkskill(sd, SA_FREECAST) > 0 || (skill->get_inf2(ud->skill_id) & (INF2_FREE_CAST_REDUCED | INF2_FREE_CAST_NORMAL)) != 0)))
{ // attacking when under cast delay has restrictions:
if( tid == INVALID_TIMER ) { //requested attack.
- if(sd) clif->skill_fail(sd,1,USESKILL_FAIL_SKILLINTERVAL,0);
+ if(sd) clif->skill_fail(sd, 1, USESKILL_FAIL_SKILLINTERVAL, 0, 0);
return 0;
}
//Otherwise, we are in a combo-attack, delay this until your canact time is over. [Skotlex]
@@ -2202,6 +2210,7 @@ int unit_attack_timer_sub(struct block_list* src, int tid, int64 tick)
//Non-players use the sync packet on the walk timer. [Skotlex]
if (tid == INVALID_TIMER && sd) clif->fixpos(src);
+ map->freeblock_lock();
if( DIFF_TICK(ud->attackabletime,tick) <= 0 ) {
if (battle_config.attack_direction_change && (src->type&battle_config.attack_direction_change)) {
ud->dir = map->calc_dir(src, target->x,target->y );
@@ -2211,8 +2220,10 @@ int unit_attack_timer_sub(struct block_list* src, int tid, int64 tick)
if(md) {
//First attack is always a normal attack
if(md->state.skillstate == MSS_ANGRY || md->state.skillstate == MSS_BERSERK) {
- if (mob->skill_use(md,tick,-1))
+ if (mob->skill_use(md,tick,-1)) {
+ map->freeblock_unlock();
return 1;
+ }
} else {
// Set mob's ANGRY/BERSERK states.
md->state.skillstate = md->state.aggressive?MSS_ANGRY:MSS_BERSERK;
@@ -2224,21 +2235,23 @@ int unit_attack_timer_sub(struct block_list* src, int tid, int64 tick)
map->foreachinrange(mob->linksearch, src, md->db->range2, BL_MOB, md->class_, target, tick);
}
}
- if (src->type == BL_PET && pet->attackskill(BL_UCAST(BL_PET, src), target->id))
+ if (src->type == BL_PET && pet->attackskill(BL_UCAST(BL_PET, src), target->id)) {
+ map->freeblock_unlock();
return 1;
+ }
- map->freeblock_lock();
ud->attacktarget_lv = battle->weapon_attack(src,target,tick,0);
if(sd && sd->status.pet_id > 0 && sd->pd && battle_config.pet_attack_support)
pet->target_check(sd,target,0);
- map->freeblock_unlock();
/**
* Applied when you're unable to attack (e.g. out of ammo)
* We should stop here otherwise timer keeps on and this happens endlessly
**/
- if( ud->attacktarget_lv == ATK_NONE )
+ if (ud->attacktarget_lv == ATK_NONE) {
+ map->freeblock_unlock();
return 1;
+ }
ud->attackabletime = tick + sstatus->adelay;
// You can't move if you can't attack neither.
@@ -2252,11 +2265,15 @@ int unit_attack_timer_sub(struct block_list* src, int tid, int64 tick)
pc->update_idle_time(sd, BCIDLE_ATTACK);
ud->attacktimer = timer->add(ud->attackabletime,unit->attack_timer,src->id,0);
}
+ map->freeblock_unlock();
+
+ if (sd != NULL && battle_config.prevent_logout_trigger & PLT_ATTACK)
+ sd->canlog_tick = timer->gettick();
return 1;
}
-int unit_attack_timer(int tid, int64 tick, int id, intptr_t data)
+static int unit_attack_timer(int tid, int64 tick, int id, intptr_t data)
{
struct block_list *bl;
bl = map->id2bl(id);
@@ -2270,7 +2287,7 @@ int unit_attack_timer(int tid, int64 tick, int id, intptr_t data)
* flag&1: Cast-Cancel invoked.
* flag&2: Cancel only if skill is can be cancel.
*------------------------------------------*/
-int unit_skillcastcancel(struct block_list *bl,int type)
+static int unit_skillcastcancel(struct block_list *bl, int type)
{
struct map_session_data *sd = NULL;
struct unit_data *ud = unit->bl2ud( bl);
@@ -2328,7 +2345,7 @@ int unit_skillcastcancel(struct block_list *bl,int type)
}
// unit_data initialization process
-void unit_dataset(struct block_list *bl)
+static void unit_dataset(struct block_list *bl)
{
struct unit_data *ud = unit->bl2ud(bl);
nullpo_retv(ud);
@@ -2337,7 +2354,7 @@ void unit_dataset(struct block_list *bl)
ud->bl = bl;
}
-void unit_init_ud(struct unit_data *ud)
+static void unit_init_ud(struct unit_data *ud)
{
nullpo_retv(ud);
@@ -2354,7 +2371,7 @@ void unit_init_ud(struct unit_data *ud)
/*==========================================
* Counts the number of units attacking 'bl'
*------------------------------------------*/
-int unit_counttargeted(struct block_list* bl)
+static int unit_counttargeted(struct block_list *bl)
{
struct unit_data* ud;
if (bl && (ud = unit->bl2ud(bl)) != NULL)
@@ -2365,7 +2382,7 @@ int unit_counttargeted(struct block_list* bl)
/*==========================================
*
*------------------------------------------*/
-int unit_fixdamage(struct block_list *src, struct block_list *target, int sdelay, int ddelay, int64 damage, short div, unsigned char type, int64 damage2)
+static int unit_fixdamage(struct block_list *src, struct block_list *target, int sdelay, int ddelay, int64 damage, short div, unsigned char type, int64 damage2)
{
nullpo_ret(target);
@@ -2378,7 +2395,7 @@ int unit_fixdamage(struct block_list *src, struct block_list *target, int sdelay
/*==========================================
* To change the size of the char (player or mob only)
*------------------------------------------*/
-int unit_changeviewsize(struct block_list *bl,short size)
+static int unit_changeviewsize(struct block_list *bl, short size)
{
nullpo_ret(bl);
@@ -2402,7 +2419,7 @@ int unit_changeviewsize(struct block_list *bl,short size)
* Otherwise it is assumed bl is being warped.
* On-Kill specific stuff is not performed here, look at status->damage for that.
*------------------------------------------*/
-int unit_remove_map(struct block_list *bl, clr_type clrtype, const char* file, int line, const char* func)
+static int unit_remove_map(struct block_list *bl, enum clr_type clrtype, const char *file, int line, const char *func)
{
struct unit_data *ud = unit->bl2ud(bl);
struct status_change *sc = status->get_sc(bl);
@@ -2648,7 +2665,7 @@ int unit_remove_map(struct block_list *bl, clr_type clrtype, const char* file, i
return 1;
}
-void unit_remove_map_pc(struct map_session_data *sd, clr_type clrtype)
+static void unit_remove_map_pc(struct map_session_data *sd, enum clr_type clrtype)
{
nullpo_retv(sd);
unit->remove_map(&sd->bl,clrtype,ALC_MARK);
@@ -2666,7 +2683,7 @@ void unit_remove_map_pc(struct map_session_data *sd, clr_type clrtype)
unit->remove_map(&sd->ed->bl, clrtype, ALC_MARK);
}
-void unit_free_pc(struct map_session_data *sd)
+static void unit_free_pc(struct map_session_data *sd)
{
nullpo_retv(sd);
if (sd->pd) unit->free(&sd->pd->bl,CLR_OUTSIGHT);
@@ -2680,7 +2697,7 @@ void unit_free_pc(struct map_session_data *sd)
* Function to free all related resources to the bl
* if unit is on map, it is removed using the clrtype specified
*------------------------------------------*/
-int unit_free(struct block_list *bl, clr_type clrtype)
+static int unit_free(struct block_list *bl, enum clr_type clrtype)
{
struct unit_data *ud = unit->bl2ud( bl );
nullpo_ret(bl);
@@ -2715,6 +2732,7 @@ int unit_free(struct block_list *bl, clr_type clrtype)
map->foreachpc(clif->friendslist_toggle_sub, sd->status.account_id, sd->status.char_id, 0);
party->send_logout(sd);
guild->send_memberinfoshort(sd,0);
+ clan->member_offline(sd);
pc->cleareventtimer(sd);
pc->inventory_rental_clear(sd);
pc->delspiritball(sd,sd->spiritball,1);
@@ -2746,7 +2764,13 @@ int unit_free(struct block_list *bl, clr_type clrtype)
aFree(sd->instance);
sd->instance = NULL;
}
+ VECTOR_CLEAR(sd->channels);
VECTOR_CLEAR(sd->script_queues);
+ VECTOR_CLEAR(sd->achievement); // Achievement [Smokexyz/Hercules]
+ VECTOR_CLEAR(sd->storage.item);
+ VECTOR_CLEAR(sd->hatEffectId);
+ VECTOR_CLEAR(sd->title_ids); // Title [Dastgir/Hercules]
+ sd->storage.received = false;
if( sd->quest_log != NULL ) {
aFree(sd->quest_log);
sd->quest_log = NULL;
@@ -2927,7 +2951,7 @@ int unit_free(struct block_list *bl, clr_type clrtype)
return 0;
}
-int do_init_unit(bool minimal)
+static int do_init_unit(bool minimal)
{
if (minimal)
return 0;
@@ -2940,7 +2964,7 @@ int do_init_unit(bool minimal)
return 0;
}
-int do_final_unit(void)
+static int do_final_unit(void)
{
// nothing to do
return 0;
diff --git a/src/map/unit.h b/src/map/unit.h
index d065b3d57..5c01cdc2e 100644
--- a/src/map/unit.h
+++ b/src/map/unit.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -81,16 +81,16 @@ struct unit_data {
struct view_data {
int16 class;
- uint16 weapon,
+ int weapon,
shield, //Or left-hand weapon.
robe,
head_top,
head_mid,
head_bottom,
hair_style,
- hair_color,
- cloth_color,
body_style;
+ uint16 hair_color,
+ cloth_color;
char sex;
unsigned dead_sit : 2;
};
@@ -116,7 +116,7 @@ struct unit_interface {
int (*setdir) (struct block_list *bl, unsigned char dir);
uint8 (*getdir) (struct block_list *bl);
int (*blown) (struct block_list *bl, int dx, int dy, int count, int flag);
- int (*warp) (struct block_list *bl, short m, short x, short y, clr_type type);
+ int (*warp) (struct block_list *bl, short m, short x, short y, enum clr_type type);
int (*stop_walking) (struct block_list *bl, int type);
int (*skilluse_id) (struct block_list *src, int target_id, uint16 skill_id, uint16 skill_lv);
int (*step_timer) (int tid, int64 tick, int id, intptr_t data);
@@ -142,10 +142,10 @@ struct unit_interface {
int (*counttargeted) (struct block_list *bl);
int (*fixdamage) (struct block_list *src, struct block_list *target, int sdelay, int ddelay, int64 damage, short div, unsigned char type, int64 damage2);
int (*changeviewsize) (struct block_list *bl, short size);
- int (*remove_map) (struct block_list *bl, clr_type clrtype, const char *file, int line, const char *func);
- void (*remove_map_pc) (struct map_session_data *sd, clr_type clrtype);
+ int (*remove_map) (struct block_list *bl, enum clr_type clrtype, const char *file, int line, const char *func);
+ void (*remove_map_pc) (struct map_session_data *sd, enum clr_type clrtype);
void (*free_pc) (struct map_session_data *sd);
- int (*free) (struct block_list *bl, clr_type clrtype);
+ int (*free) (struct block_list *bl, enum clr_type clrtype);
};
#ifdef HERCULES_CORE
diff --git a/src/map/vending.c b/src/map/vending.c
index 9a9585d2f..692f5f378 100644
--- a/src/map/vending.c
+++ b/src/map/vending.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -40,7 +40,7 @@
#include <stdio.h>
#include <string.h>
-struct vending_interface vending_s;
+static struct vending_interface vending_s;
struct vending_interface *vending;
/// Returns an unique vending shop id.
@@ -52,7 +52,7 @@ static inline unsigned int getid(void)
/*==========================================
* Close shop
*------------------------------------------*/
-void vending_closevending(struct map_session_data* sd)
+static void vending_closevending(struct map_session_data *sd)
{
nullpo_retv(sd);
@@ -66,7 +66,7 @@ void vending_closevending(struct map_session_data* sd)
/*==========================================
* Request a shop's item list
*------------------------------------------*/
-void vending_vendinglistreq(struct map_session_data* sd, unsigned int id)
+static void vending_vendinglistreq(struct map_session_data *sd, unsigned int id)
{
struct map_session_data* vsd;
nullpo_retv(sd);
@@ -89,7 +89,7 @@ void vending_vendinglistreq(struct map_session_data* sd, unsigned int id)
/*==========================================
* Purchase item(s) from a shop
*------------------------------------------*/
-void vending_purchasereq(struct map_session_data* sd, int aid, unsigned int uid, const uint8* data, int count)
+static void vending_purchasereq(struct map_session_data *sd, int aid, unsigned int uid, const uint8 *data, int count)
{
int i, j, cursor, w, new_ = 0, blank, vend_list[MAX_VENDING];
int64 z;
@@ -245,7 +245,7 @@ void vending_purchasereq(struct map_session_data* sd, int aid, unsigned int uid,
* Open shop
* data := {<index>.w <amount>.w <value>.l}[count]
*------------------------------------------*/
-void vending_openvending(struct map_session_data* sd, const char* message, const uint8* data, int count)
+static void vending_openvending(struct map_session_data *sd, const char *message, const uint8 *data, int count)
{
int i, j;
int vending_skill_lvl;
@@ -257,14 +257,14 @@ void vending_openvending(struct map_session_data* sd, const char* message, const
vending_skill_lvl = pc->checkskill(sd, MC_VENDING);
// skill level and cart check
if( !vending_skill_lvl || !pc_iscarton(sd) ) {
- clif->skill_fail(sd, MC_VENDING, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, MC_VENDING, USESKILL_FAIL_LEVEL, 0, 0);
return;
}
// check number of items in shop
if( count < 1 || count > MAX_VENDING || count > 2 + vending_skill_lvl ) {
// invalid item count
- clif->skill_fail(sd, MC_VENDING, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, MC_VENDING, USESKILL_FAIL_LEVEL, 0, 0);
return;
}
@@ -298,7 +298,7 @@ void vending_openvending(struct map_session_data* sd, const char* message, const
clif->message (sd->fd, msg_sd(sd,266)); //"Some of your items cannot be vended and were removed from the shop."
if( i == 0 ) { // no valid item found
- clif->skill_fail(sd, MC_VENDING, USESKILL_FAIL_LEVEL, 0); // custom reply packet
+ clif->skill_fail(sd, MC_VENDING, USESKILL_FAIL_LEVEL, 0, 0); // custom reply packet
return;
}
sd->state.prevend = sd->state.workinprogress = 0;
@@ -315,7 +315,7 @@ void vending_openvending(struct map_session_data* sd, const char* message, const
/// Checks if an item is being sold in given player's vending.
-bool vending_search(struct map_session_data* sd, unsigned short nameid)
+static bool vending_search(struct map_session_data *sd, int nameid)
{
int i;
@@ -324,7 +324,7 @@ bool vending_search(struct map_session_data* sd, unsigned short nameid)
return false;
}
- ARR_FIND( 0, sd->vend_num, i, sd->status.cart[sd->vending[i].index].nameid == (short)nameid );
+ ARR_FIND(0, sd->vend_num, i, sd->status.cart[sd->vending[i].index].nameid == nameid);
if( i == sd->vend_num ) { // not found
return false;
}
@@ -335,7 +335,7 @@ bool vending_search(struct map_session_data* sd, unsigned short nameid)
/// Searches for all items in a vending, that match given ids, price and possible cards.
/// @return Whether or not the search should be continued.
-bool vending_searchall(struct map_session_data* sd, const struct s_search_store_search* s)
+static bool vending_searchall(struct map_session_data *sd, const struct s_search_store_search *s)
{
int i, c, slot;
unsigned int idx, cidx;
@@ -347,7 +347,7 @@ bool vending_searchall(struct map_session_data* sd, const struct s_search_store_
return true;
for( idx = 0; idx < s->item_count; idx++ ) {
- ARR_FIND( 0, sd->vend_num, i, sd->status.cart[sd->vending[i].index].nameid == (short)s->itemlist[idx] );
+ ARR_FIND(0, sd->vend_num, i, sd->status.cart[sd->vending[i].index].nameid == s->itemlist[idx]);
if( i == sd->vend_num ) {// not found
continue;
}
@@ -380,7 +380,7 @@ bool vending_searchall(struct map_session_data* sd, const struct s_search_store_
}
}
- if( !searchstore->result(s->search_sd, sd->vender_id, sd->status.account_id, sd->message, it->nameid, sd->vending[i].amount, sd->vending[i].value, it->card, it->refine) )
+ if (!searchstore->result(s->search_sd, sd->vender_id, sd->status.account_id, sd->message, it->nameid, sd->vending[i].amount, sd->vending[i].value, it->card, it->refine, it->option))
{// result set full
return false;
}
@@ -389,12 +389,12 @@ bool vending_searchall(struct map_session_data* sd, const struct s_search_store_
return true;
}
-void final(void)
+static void final(void)
{
db_destroy(vending->db);
}
-void init(bool minimal)
+static void init(bool minimal)
{
vending->db = idb_alloc(DB_OPT_BASE);
vending->next_id = 0;
diff --git a/src/map/vending.h b/src/map/vending.h
index 9a236f75b..c994aad3a 100644
--- a/src/map/vending.h
+++ b/src/map/vending.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
@@ -45,7 +45,7 @@ struct vending_interface {
void (*open) (struct map_session_data* sd, const char* message, const uint8* data, int count);
void (*list) (struct map_session_data* sd, unsigned int id);
void (*purchase) (struct map_session_data* sd, int aid, unsigned int uid, const uint8* data, int count);
- bool (*search) (struct map_session_data* sd, unsigned short nameid);
+ bool (*search) (struct map_session_data* sd, int nameid);
bool (*searchall) (struct map_session_data* sd, const struct s_search_store_search* s);
};
diff --git a/src/plugins/HPMHooking.c b/src/plugins/HPMHooking.c
index 0b98ea99f..aef09d7a7 100644
--- a/src/plugins/HPMHooking.c
+++ b/src/plugins/HPMHooking.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2016 Hercules Dev Team
+ * Copyright (C) 2013-2018 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -25,16 +25,24 @@
#include "common/memmgr.h"
#include "common/mmo.h"
#include "common/socket.h"
+#include "common/packets.h"
+PRAGMA_GCC5(GCC diagnostic push)
+PRAGMA_GCC5(GCC diagnostic ignored "-Wdiscarded-qualifiers")
#if defined (HPMHOOKING_LOGIN)
#define HPM_SERVER_TYPE SERVER_TYPE_LOGIN
#define HPM_CORE_INCLUDE "HPMHooking/HPMHooking_login.HPMHooksCore.inc"
#define HPM_HOOKS_INCLUDE "HPMHooking/HPMHooking_login.Hooks.inc"
#define HPM_POINTS_INCLUDE "HPMHooking/HPMHooking_login.HookingPoints.inc"
#define HPM_SOURCES_INCLUDE "HPMHooking/HPMHooking_login.sources.inc"
+#include "login/account.h"
+#include "login/ipban.h"
#include "login/lclif.h"
#include "login/lclif.p.h"
#include "login/login.h"
+#include "login/loginlog.h"
+#include "login/packets_ac_struct.h"
+#include "login/packets_ca_struct.h"
#elif defined (HPMHOOKING_CHAR)
#define HPM_SERVER_TYPE SERVER_TYPE_CHAR
#define HPM_CORE_INCLUDE "HPMHooking/HPMHooking_char.HPMHooksCore.inc"
@@ -43,7 +51,9 @@
#define HPM_SOURCES_INCLUDE "HPMHooking/HPMHooking_char.sources.inc"
#include "char/char.h"
#include "char/geoip.h"
+#include "char/int_achievement.h"
#include "char/int_auction.h"
+#include "char/int_clan.h"
#include "char/int_elemental.h"
#include "char/int_guild.h"
#include "char/int_homun.h"
@@ -52,6 +62,7 @@
#include "char/int_party.h"
#include "char/int_pet.h"
#include "char/int_quest.h"
+#include "char/int_rodex.h"
#include "char/int_storage.h"
#include "char/inter.h"
#include "char/loginif.h"
@@ -64,12 +75,14 @@
#define HPM_HOOKS_INCLUDE "HPMHooking/HPMHooking_map.Hooks.inc"
#define HPM_POINTS_INCLUDE "HPMHooking/HPMHooking_map.HookingPoints.inc"
#define HPM_SOURCES_INCLUDE "HPMHooking/HPMHooking_map.sources.inc"
+#include "map/achievement.h"
#include "map/atcommand.h"
#include "map/battle.h"
#include "map/battleground.h"
#include "map/channel.h"
#include "map/chat.h"
#include "map/chrif.h"
+#include "map/clan.h"
#include "map/clif.h"
#include "map/duel.h"
#include "map/elemental.h"
@@ -84,6 +97,7 @@
#include "map/map.h"
#include "map/mapreg.h"
#include "map/mercenary.h"
+#include "map/messages.h"
#include "map/mob.h"
#include "map/npc.h"
#include "map/party.h"
@@ -91,6 +105,7 @@
#include "map/pc.h"
#include "map/pet.h"
#include "map/quest.h"
+#include "map/rodex.h"
#include "map/script.h"
#include "map/skill.h"
#include "map/status.h"
@@ -107,6 +122,7 @@
#define HPM_SOURCES_INCLUDE "HPMHooking/HPMHooking.sources.inc"
#error HPMHooking plugin needs to be compiled for a specific server type. Please make sure your Makefiles are up to date.
#endif
+PRAGMA_GCC5(GCC diagnostic pop)
#include "common/conf.h"
#include "common/console.h"
#include "common/db.h"
@@ -210,7 +226,10 @@ HPExport bool HPM_Plugin_AddHook(enum HPluginHookType type, const char *target,
return false;
}
+PRAGMA_GCC5(GCC diagnostic push)
+PRAGMA_GCC5(GCC diagnostic ignored "-Wdiscarded-qualifiers")
#include HPM_HOOKS_INCLUDE
+PRAGMA_GCC5(GCC diagnostic pop)
void HPM_HP_final(void) {
int i, len = HPMHooks.data.total * 2;
diff --git a/src/plugins/HPMHooking/HPMHooking.Defs.inc b/src/plugins/HPMHooking/HPMHooking.Defs.inc
index 82d310832..cd28f9b0b 100644
--- a/src/plugins/HPMHooking/HPMHooking.Defs.inc
+++ b/src/plugins/HPMHooking/HPMHooking.Defs.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2017 Hercules Dev Team
+ * Copyright (C) 2013-2019 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -33,6 +33,156 @@ typedef bool (*HPMHOOK_post_HCache_check) (bool retVal___, const char *file);
typedef FILE* (*HPMHOOK_pre_HCache_open) (const char **file, const char **opt);
typedef FILE* (*HPMHOOK_post_HCache_open) (FILE* retVal___, const char *file, const char *opt);
#endif // COMMON_UTILS_H
+#ifdef LOGIN_ACCOUNT_H /* account */
+typedef struct Sql* (*HPMHOOK_pre_account_db_sql_up) (AccountDB **self);
+typedef struct Sql* (*HPMHOOK_post_account_db_sql_up) (struct Sql* retVal___, AccountDB *self);
+typedef void (*HPMHOOK_pre_account_mmo_send_accreg2) (AccountDB **self, int *fd, int *account_id, int *char_id);
+typedef void (*HPMHOOK_post_account_mmo_send_accreg2) (AccountDB *self, int fd, int account_id, int char_id);
+typedef void (*HPMHOOK_pre_account_mmo_save_accreg2) (AccountDB **self, int *fd, int *account_id, int *char_id);
+typedef void (*HPMHOOK_post_account_mmo_save_accreg2) (AccountDB *self, int fd, int account_id, int char_id);
+typedef bool (*HPMHOOK_pre_account_mmo_auth_fromsql) (AccountDB_SQL **db, struct mmo_account **acc, int *account_id);
+typedef bool (*HPMHOOK_post_account_mmo_auth_fromsql) (bool retVal___, AccountDB_SQL *db, struct mmo_account *acc, int account_id);
+typedef bool (*HPMHOOK_pre_account_mmo_auth_tosql) (AccountDB_SQL **db, const struct mmo_account **acc, bool *is_new);
+typedef bool (*HPMHOOK_post_account_mmo_auth_tosql) (bool retVal___, AccountDB_SQL *db, const struct mmo_account *acc, bool is_new);
+typedef AccountDB* (*HPMHOOK_pre_account_db_sql) (void);
+typedef AccountDB* (*HPMHOOK_post_account_db_sql) (AccountDB* retVal___);
+typedef bool (*HPMHOOK_pre_account_db_sql_init) (AccountDB **self);
+typedef bool (*HPMHOOK_post_account_db_sql_init) (bool retVal___, AccountDB *self);
+typedef void (*HPMHOOK_pre_account_db_sql_destroy) (AccountDB **self);
+typedef void (*HPMHOOK_post_account_db_sql_destroy) (AccountDB *self);
+typedef bool (*HPMHOOK_pre_account_db_sql_get_property) (AccountDB **self, const char **key, char **buf, size_t *buflen);
+typedef bool (*HPMHOOK_post_account_db_sql_get_property) (bool retVal___, AccountDB *self, const char *key, char *buf, size_t buflen);
+typedef bool (*HPMHOOK_pre_account_db_sql_set_property) (AccountDB **self, struct config_t **config, bool *imported);
+typedef bool (*HPMHOOK_post_account_db_sql_set_property) (bool retVal___, AccountDB *self, struct config_t *config, bool imported);
+typedef bool (*HPMHOOK_pre_account_db_sql_create) (AccountDB **self, struct mmo_account **acc);
+typedef bool (*HPMHOOK_post_account_db_sql_create) (bool retVal___, AccountDB *self, struct mmo_account *acc);
+typedef bool (*HPMHOOK_pre_account_db_sql_remove) (AccountDB **self, const int *account_id);
+typedef bool (*HPMHOOK_post_account_db_sql_remove) (bool retVal___, AccountDB *self, const int account_id);
+typedef bool (*HPMHOOK_pre_account_db_sql_save) (AccountDB **self, const struct mmo_account **acc);
+typedef bool (*HPMHOOK_post_account_db_sql_save) (bool retVal___, AccountDB *self, const struct mmo_account *acc);
+typedef bool (*HPMHOOK_pre_account_db_sql_load_num) (AccountDB **self, struct mmo_account **acc, const int *account_id);
+typedef bool (*HPMHOOK_post_account_db_sql_load_num) (bool retVal___, AccountDB *self, struct mmo_account *acc, const int account_id);
+typedef bool (*HPMHOOK_pre_account_db_sql_load_str) (AccountDB **self, struct mmo_account **acc, const char **userid);
+typedef bool (*HPMHOOK_post_account_db_sql_load_str) (bool retVal___, AccountDB *self, struct mmo_account *acc, const char *userid);
+typedef AccountDBIterator* (*HPMHOOK_pre_account_db_sql_iterator) (AccountDB **self);
+typedef AccountDBIterator* (*HPMHOOK_post_account_db_sql_iterator) (AccountDBIterator* retVal___, AccountDB *self);
+typedef void (*HPMHOOK_pre_account_db_sql_iter_destroy) (AccountDBIterator **self);
+typedef void (*HPMHOOK_post_account_db_sql_iter_destroy) (AccountDBIterator *self);
+typedef bool (*HPMHOOK_pre_account_db_sql_iter_next) (AccountDBIterator **self, struct mmo_account **acc);
+typedef bool (*HPMHOOK_post_account_db_sql_iter_next) (bool retVal___, AccountDBIterator *self, struct mmo_account *acc);
+typedef bool (*HPMHOOK_pre_account_db_read_inter) (AccountDB_SQL **db, const char **filename, bool *imported);
+typedef bool (*HPMHOOK_post_account_db_read_inter) (bool retVal___, AccountDB_SQL *db, const char *filename, bool imported);
+#endif // LOGIN_ACCOUNT_H
+#ifdef MAP_ACHIEVEMENT_H /* achievement */
+typedef void (*HPMHOOK_pre_achievement_init) (bool *minimal);
+typedef void (*HPMHOOK_post_achievement_init) (bool minimal);
+typedef void (*HPMHOOK_pre_achievement_final) (void);
+typedef void (*HPMHOOK_post_achievement_final) (void);
+typedef int (*HPMHOOK_pre_achievement_db_finalize) (union DBKey *key, struct DBData **data, va_list args);
+typedef int (*HPMHOOK_post_achievement_db_finalize) (int retVal___, union DBKey key, struct DBData *data, va_list args);
+typedef void (*HPMHOOK_pre_achievement_readdb) (void);
+typedef void (*HPMHOOK_post_achievement_readdb) (void);
+typedef bool (*HPMHOOK_pre_achievement_readdb_objectives_sub) (const struct config_setting_t **conf, int *index, struct achievement_data **entry);
+typedef bool (*HPMHOOK_post_achievement_readdb_objectives_sub) (bool retVal___, const struct config_setting_t *conf, int index, struct achievement_data *entry);
+typedef bool (*HPMHOOK_pre_achievement_readdb_objectives) (const struct config_setting_t **conf, struct achievement_data **entry);
+typedef bool (*HPMHOOK_post_achievement_readdb_objectives) (bool retVal___, const struct config_setting_t *conf, struct achievement_data *entry);
+typedef bool (*HPMHOOK_pre_achievement_readdb_validate_criteria_mobid) (const struct config_setting_t **t, struct achievement_objective **obj, enum achievement_types *type, int *entry_id, int *obj_idx);
+typedef bool (*HPMHOOK_post_achievement_readdb_validate_criteria_mobid) (bool retVal___, const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx);
+typedef bool (*HPMHOOK_pre_achievement_readdb_validate_criteria_jobid) (const struct config_setting_t **t, struct achievement_objective **obj, enum achievement_types *type, int *entry_id, int *obj_idx);
+typedef bool (*HPMHOOK_post_achievement_readdb_validate_criteria_jobid) (bool retVal___, const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx);
+typedef bool (*HPMHOOK_pre_achievement_readdb_validate_criteria_itemid) (const struct config_setting_t **t, struct achievement_objective **obj, enum achievement_types *type, int *entry_id, int *obj_idx);
+typedef bool (*HPMHOOK_post_achievement_readdb_validate_criteria_itemid) (bool retVal___, const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx);
+typedef bool (*HPMHOOK_pre_achievement_readdb_validate_criteria_statustype) (const struct config_setting_t **t, struct achievement_objective **obj, enum achievement_types *type, int *entry_id, int *obj_idx);
+typedef bool (*HPMHOOK_post_achievement_readdb_validate_criteria_statustype) (bool retVal___, const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx);
+typedef bool (*HPMHOOK_pre_achievement_readdb_validate_criteria_itemtype) (const struct config_setting_t **t, struct achievement_objective **obj, enum achievement_types *type, int *entry_id, int *obj_idx);
+typedef bool (*HPMHOOK_post_achievement_readdb_validate_criteria_itemtype) (bool retVal___, const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx);
+typedef bool (*HPMHOOK_pre_achievement_readdb_validate_criteria_weaponlv) (const struct config_setting_t **t, struct achievement_objective **obj, enum achievement_types *type, int *entry_id, int *obj_idx);
+typedef bool (*HPMHOOK_post_achievement_readdb_validate_criteria_weaponlv) (bool retVal___, const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx);
+typedef bool (*HPMHOOK_pre_achievement_readdb_validate_criteria_achievement) (const struct config_setting_t **t, struct achievement_objective **obj, enum achievement_types *type, int *entry_id, int *obj_idx);
+typedef bool (*HPMHOOK_post_achievement_readdb_validate_criteria_achievement) (bool retVal___, const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx);
+typedef bool (*HPMHOOK_pre_achievement_readdb_rewards) (const struct config_setting_t **conf, struct achievement_data **entry, const char **source);
+typedef bool (*HPMHOOK_post_achievement_readdb_rewards) (bool retVal___, const struct config_setting_t *conf, struct achievement_data *entry, const char *source);
+typedef void (*HPMHOOK_pre_achievement_readdb_validate_reward_items) (const struct config_setting_t **t, struct achievement_data **entry);
+typedef void (*HPMHOOK_post_achievement_readdb_validate_reward_items) (const struct config_setting_t *t, struct achievement_data *entry);
+typedef bool (*HPMHOOK_pre_achievement_readdb_validate_reward_item_sub) (const struct config_setting_t **t, int *element, struct achievement_data **entry);
+typedef bool (*HPMHOOK_post_achievement_readdb_validate_reward_item_sub) (bool retVal___, const struct config_setting_t *t, int element, struct achievement_data *entry);
+typedef void (*HPMHOOK_pre_achievement_readdb_validate_reward_bonus) (const struct config_setting_t **t, struct achievement_data **entry, const char **source);
+typedef void (*HPMHOOK_post_achievement_readdb_validate_reward_bonus) (const struct config_setting_t *t, struct achievement_data *entry, const char *source);
+typedef void (*HPMHOOK_pre_achievement_readdb_validate_reward_titleid) (const struct config_setting_t **t, struct achievement_data **entry);
+typedef void (*HPMHOOK_post_achievement_readdb_validate_reward_titleid) (const struct config_setting_t *t, struct achievement_data *entry);
+typedef void (*HPMHOOK_pre_achievement_readdb_additional_fields) (const struct config_setting_t **conf, struct achievement_data **entry, const char **source);
+typedef void (*HPMHOOK_post_achievement_readdb_additional_fields) (const struct config_setting_t *conf, struct achievement_data *entry, const char *source);
+typedef void (*HPMHOOK_pre_achievement_readdb_ranks) (void);
+typedef void (*HPMHOOK_post_achievement_readdb_ranks) (void);
+typedef const struct achievement_data* (*HPMHOOK_pre_achievement_get) (int *aid);
+typedef const struct achievement_data* (*HPMHOOK_post_achievement_get) (const struct achievement_data* retVal___, int aid);
+typedef struct achievement* (*HPMHOOK_pre_achievement_ensure) (struct map_session_data **sd, const struct achievement_data **ad);
+typedef struct achievement* (*HPMHOOK_post_achievement_ensure) (struct achievement* retVal___, struct map_session_data *sd, const struct achievement_data *ad);
+typedef void (*HPMHOOK_pre_achievement_calculate_totals) (const struct map_session_data **sd, int **points, int **completed, int **rank, int **curr_rank_points);
+typedef void (*HPMHOOK_post_achievement_calculate_totals) (const struct map_session_data *sd, int *points, int *completed, int *rank, int *curr_rank_points);
+typedef bool (*HPMHOOK_pre_achievement_check_complete) (struct map_session_data **sd, const struct achievement_data **ad);
+typedef bool (*HPMHOOK_post_achievement_check_complete) (bool retVal___, struct map_session_data *sd, const struct achievement_data *ad);
+typedef void (*HPMHOOK_pre_achievement_progress_add) (struct map_session_data **sd, const struct achievement_data **ad, unsigned int *obj_idx, int *progress);
+typedef void (*HPMHOOK_post_achievement_progress_add) (struct map_session_data *sd, const struct achievement_data *ad, unsigned int obj_idx, int progress);
+typedef void (*HPMHOOK_pre_achievement_progress_set) (struct map_session_data **sd, const struct achievement_data **ad, unsigned int *obj_idx, int *progress);
+typedef void (*HPMHOOK_post_achievement_progress_set) (struct map_session_data *sd, const struct achievement_data *ad, unsigned int obj_idx, int progress);
+typedef bool (*HPMHOOK_pre_achievement_check_criteria) (const struct achievement_objective **objective, const struct achievement_objective **criteria);
+typedef bool (*HPMHOOK_post_achievement_check_criteria) (bool retVal___, const struct achievement_objective *objective, const struct achievement_objective *criteria);
+typedef bool (*HPMHOOK_pre_achievement_validate) (struct map_session_data **sd, int *aid, unsigned int *obj_idx, int *progress, bool *additive);
+typedef bool (*HPMHOOK_post_achievement_validate) (bool retVal___, struct map_session_data *sd, int aid, unsigned int obj_idx, int progress, bool additive);
+typedef int (*HPMHOOK_pre_achievement_validate_type) (struct map_session_data **sd, enum achievement_types *type, const struct achievement_objective **criteria, bool *additive);
+typedef int (*HPMHOOK_post_achievement_validate_type) (int retVal___, struct map_session_data *sd, enum achievement_types type, const struct achievement_objective *criteria, bool additive);
+typedef void (*HPMHOOK_pre_achievement_validate_mob_kill) (struct map_session_data **sd, int *mob_id);
+typedef void (*HPMHOOK_post_achievement_validate_mob_kill) (struct map_session_data *sd, int mob_id);
+typedef void (*HPMHOOK_pre_achievement_validate_mob_damage) (struct map_session_data **sd, unsigned int *damage, bool *received);
+typedef void (*HPMHOOK_post_achievement_validate_mob_damage) (struct map_session_data *sd, unsigned int damage, bool received);
+typedef void (*HPMHOOK_pre_achievement_validate_pc_kill) (struct map_session_data **sd, struct map_session_data **dstsd);
+typedef void (*HPMHOOK_post_achievement_validate_pc_kill) (struct map_session_data *sd, struct map_session_data *dstsd);
+typedef void (*HPMHOOK_pre_achievement_validate_pc_damage) (struct map_session_data **sd, struct map_session_data **dstsd, unsigned int *damage);
+typedef void (*HPMHOOK_post_achievement_validate_pc_damage) (struct map_session_data *sd, struct map_session_data *dstsd, unsigned int damage);
+typedef void (*HPMHOOK_pre_achievement_validate_jobchange) (struct map_session_data **sd);
+typedef void (*HPMHOOK_post_achievement_validate_jobchange) (struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_achievement_validate_stats) (struct map_session_data **sd, enum status_point_types *stat_type, int *progress);
+typedef void (*HPMHOOK_post_achievement_validate_stats) (struct map_session_data *sd, enum status_point_types stat_type, int progress);
+typedef void (*HPMHOOK_pre_achievement_validate_chatroom_create) (struct map_session_data **sd);
+typedef void (*HPMHOOK_post_achievement_validate_chatroom_create) (struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_achievement_validate_chatroom_members) (struct map_session_data **sd, int *progress);
+typedef void (*HPMHOOK_post_achievement_validate_chatroom_members) (struct map_session_data *sd, int progress);
+typedef void (*HPMHOOK_pre_achievement_validate_friend_add) (struct map_session_data **sd);
+typedef void (*HPMHOOK_post_achievement_validate_friend_add) (struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_achievement_validate_party_create) (struct map_session_data **sd);
+typedef void (*HPMHOOK_post_achievement_validate_party_create) (struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_achievement_validate_marry) (struct map_session_data **sd);
+typedef void (*HPMHOOK_post_achievement_validate_marry) (struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_achievement_validate_adopt) (struct map_session_data **sd, bool *parent);
+typedef void (*HPMHOOK_post_achievement_validate_adopt) (struct map_session_data *sd, bool parent);
+typedef void (*HPMHOOK_pre_achievement_validate_zeny) (struct map_session_data **sd, int *amount);
+typedef void (*HPMHOOK_post_achievement_validate_zeny) (struct map_session_data *sd, int amount);
+typedef void (*HPMHOOK_pre_achievement_validate_refine) (struct map_session_data **sd, unsigned int *idx, bool *success);
+typedef void (*HPMHOOK_post_achievement_validate_refine) (struct map_session_data *sd, unsigned int idx, bool success);
+typedef void (*HPMHOOK_pre_achievement_validate_item_get) (struct map_session_data **sd, int *nameid, int *amount);
+typedef void (*HPMHOOK_post_achievement_validate_item_get) (struct map_session_data *sd, int nameid, int amount);
+typedef void (*HPMHOOK_pre_achievement_validate_item_sell) (struct map_session_data **sd, int *nameid, int *amount);
+typedef void (*HPMHOOK_post_achievement_validate_item_sell) (struct map_session_data *sd, int nameid, int amount);
+typedef void (*HPMHOOK_pre_achievement_validate_achieve) (struct map_session_data **sd, int *achid);
+typedef void (*HPMHOOK_post_achievement_validate_achieve) (struct map_session_data *sd, int achid);
+typedef void (*HPMHOOK_pre_achievement_validate_taming) (struct map_session_data **sd, int *class);
+typedef void (*HPMHOOK_post_achievement_validate_taming) (struct map_session_data *sd, int class);
+typedef void (*HPMHOOK_pre_achievement_validate_achievement_rank) (struct map_session_data **sd, int *rank);
+typedef void (*HPMHOOK_post_achievement_validate_achievement_rank) (struct map_session_data *sd, int rank);
+typedef bool (*HPMHOOK_pre_achievement_type_requires_criteria) (enum achievement_types *type);
+typedef bool (*HPMHOOK_post_achievement_type_requires_criteria) (bool retVal___, enum achievement_types type);
+typedef void (*HPMHOOK_pre_achievement_init_titles) (struct map_session_data **sd);
+typedef void (*HPMHOOK_post_achievement_init_titles) (struct map_session_data *sd);
+typedef bool (*HPMHOOK_pre_achievement_check_title) (struct map_session_data **sd, int *title_id);
+typedef bool (*HPMHOOK_post_achievement_check_title) (bool retVal___, struct map_session_data *sd, int title_id);
+typedef bool (*HPMHOOK_pre_achievement_get_rewards) (struct map_session_data **sd, const struct achievement_data **ad);
+typedef bool (*HPMHOOK_post_achievement_get_rewards) (bool retVal___, struct map_session_data *sd, const struct achievement_data *ad);
+typedef void (*HPMHOOK_pre_achievement_get_rewards_buffs) (struct map_session_data **sd, const struct achievement_data **ad);
+typedef void (*HPMHOOK_post_achievement_get_rewards_buffs) (struct map_session_data *sd, const struct achievement_data *ad);
+typedef void (*HPMHOOK_pre_achievement_get_rewards_items) (struct map_session_data **sd, const struct achievement_data **ad);
+typedef void (*HPMHOOK_post_achievement_get_rewards_items) (struct map_session_data *sd, const struct achievement_data *ad);
+#endif // MAP_ACHIEVEMENT_H
#ifdef MAP_ATCOMMAND_H /* atcommand */
typedef void (*HPMHOOK_pre_atcommand_init) (bool *minimal);
typedef void (*HPMHOOK_post_atcommand_init) (bool minimal);
@@ -132,6 +282,8 @@ typedef void (*HPMHOOK_pre_battle_drain) (struct map_session_data **sd, struct b
typedef void (*HPMHOOK_post_battle_drain) (struct map_session_data *sd, struct block_list *tbl, int64 rdamage, int64 ldamage, int race, int boss);
typedef void (*HPMHOOK_pre_battle_reflect_damage) (struct block_list **target, struct block_list **src, struct Damage **wd, uint16 *skill_id);
typedef void (*HPMHOOK_post_battle_reflect_damage) (struct block_list *target, struct block_list *src, struct Damage *wd, uint16 skill_id);
+typedef void (*HPMHOOK_pre_battle_reflect_trap) (struct block_list **target, struct block_list **src, struct Damage **md, uint16 *skill_id);
+typedef void (*HPMHOOK_post_battle_reflect_trap) (struct block_list *target, struct block_list *src, struct Damage *md, uint16 skill_id);
typedef int (*HPMHOOK_pre_battle_attr_ratio) (int *atk_elem, int *def_type, int *def_lv);
typedef int (*HPMHOOK_post_battle_attr_ratio) (int retVal___, int atk_elem, int def_type, int def_lv);
typedef int64 (*HPMHOOK_pre_battle_attr_fix) (struct block_list **src, struct block_list **target, int64 *damage, int *atk_elem, int *def_type, int *def_lv);
@@ -290,16 +442,16 @@ typedef void (*HPMHOOK_post_bg_config_read) (void);
#ifdef MAP_BUYINGSTORE_H /* buyingstore */
typedef bool (*HPMHOOK_pre_buyingstore_setup) (struct map_session_data **sd, unsigned char *slots);
typedef bool (*HPMHOOK_post_buyingstore_setup) (bool retVal___, struct map_session_data *sd, unsigned char slots);
-typedef void (*HPMHOOK_pre_buyingstore_create) (struct map_session_data **sd, int *zenylimit, unsigned char *result, const char **storename, const uint8 **itemlist, unsigned int *count);
-typedef void (*HPMHOOK_post_buyingstore_create) (struct map_session_data *sd, int zenylimit, unsigned char result, const char *storename, const uint8 *itemlist, unsigned int count);
+typedef void (*HPMHOOK_pre_buyingstore_create) (struct map_session_data **sd, int *zenylimit, unsigned char *result, const char **storename, const struct PACKET_CZ_REQ_OPEN_BUYING_STORE_sub **itemlist, unsigned int *count);
+typedef void (*HPMHOOK_post_buyingstore_create) (struct map_session_data *sd, int zenylimit, unsigned char result, const char *storename, const struct PACKET_CZ_REQ_OPEN_BUYING_STORE_sub *itemlist, unsigned int count);
typedef void (*HPMHOOK_pre_buyingstore_close) (struct map_session_data **sd);
typedef void (*HPMHOOK_post_buyingstore_close) (struct map_session_data *sd);
typedef void (*HPMHOOK_pre_buyingstore_open) (struct map_session_data **sd, int *account_id);
typedef void (*HPMHOOK_post_buyingstore_open) (struct map_session_data *sd, int account_id);
-typedef void (*HPMHOOK_pre_buyingstore_trade) (struct map_session_data **sd, int *account_id, unsigned int *buyer_id, const uint8 **itemlist, unsigned int *count);
-typedef void (*HPMHOOK_post_buyingstore_trade) (struct map_session_data *sd, int account_id, unsigned int buyer_id, const uint8 *itemlist, unsigned int count);
-typedef bool (*HPMHOOK_pre_buyingstore_search) (struct map_session_data **sd, unsigned short *nameid);
-typedef bool (*HPMHOOK_post_buyingstore_search) (bool retVal___, struct map_session_data *sd, unsigned short nameid);
+typedef void (*HPMHOOK_pre_buyingstore_trade) (struct map_session_data **sd, int *account_id, unsigned int *buyer_id, const struct PACKET_CZ_REQ_TRADE_BUYING_STORE_sub **itemlist, unsigned int *count);
+typedef void (*HPMHOOK_post_buyingstore_trade) (struct map_session_data *sd, int account_id, unsigned int buyer_id, const struct PACKET_CZ_REQ_TRADE_BUYING_STORE_sub *itemlist, unsigned int count);
+typedef bool (*HPMHOOK_pre_buyingstore_search) (struct map_session_data **sd, int *nameid);
+typedef bool (*HPMHOOK_post_buyingstore_search) (bool retVal___, struct map_session_data *sd, int nameid);
typedef bool (*HPMHOOK_pre_buyingstore_searchall) (struct map_session_data **sd, const struct s_search_store_search **s);
typedef bool (*HPMHOOK_post_buyingstore_searchall) (bool retVal___, struct map_session_data *sd, const struct s_search_store_search *s);
typedef unsigned int (*HPMHOOK_pre_buyingstore_getuid) (void);
@@ -380,12 +532,14 @@ typedef struct DBData (*HPMHOOK_pre_chr_create_charstatus) (union DBKey *key, va
typedef struct DBData (*HPMHOOK_post_chr_create_charstatus) (struct DBData retVal___, union DBKey key, va_list args);
typedef int (*HPMHOOK_pre_chr_mmo_char_tosql) (int *char_id, struct mmo_charstatus **p);
typedef int (*HPMHOOK_post_chr_mmo_char_tosql) (int retVal___, int char_id, struct mmo_charstatus *p);
-typedef int (*HPMHOOK_pre_chr_memitemdata_to_sql) (const struct item *items[], int *max, int *id, int *tableswitch);
-typedef int (*HPMHOOK_post_chr_memitemdata_to_sql) (int retVal___, const struct item items[], int max, int id, int tableswitch);
+typedef int (*HPMHOOK_pre_chr_getitemdata_from_sql) (struct item **items, int *max, int *guid, enum inventory_table_type *table);
+typedef int (*HPMHOOK_post_chr_getitemdata_from_sql) (int retVal___, struct item *items, int max, int guid, enum inventory_table_type table);
+typedef int (*HPMHOOK_pre_chr_memitemdata_to_sql) (const struct item *items[], int *id, enum inventory_table_type *table);
+typedef int (*HPMHOOK_post_chr_memitemdata_to_sql) (int retVal___, const struct item items[], int id, enum inventory_table_type table);
typedef int (*HPMHOOK_pre_chr_mmo_gender) (const struct char_session_data **sd, const struct mmo_charstatus **p, char *sex);
typedef int (*HPMHOOK_post_chr_mmo_gender) (int retVal___, const struct char_session_data *sd, const struct mmo_charstatus *p, char sex);
-typedef int (*HPMHOOK_pre_chr_mmo_chars_fromsql) (struct char_session_data **sd, uint8 **buf);
-typedef int (*HPMHOOK_post_chr_mmo_chars_fromsql) (int retVal___, struct char_session_data *sd, uint8 *buf);
+typedef int (*HPMHOOK_pre_chr_mmo_chars_fromsql) (struct char_session_data **sd, uint8 **buf, int **count);
+typedef int (*HPMHOOK_post_chr_mmo_chars_fromsql) (int retVal___, struct char_session_data *sd, uint8 *buf, int *count);
typedef int (*HPMHOOK_pre_chr_mmo_char_fromsql) (int *char_id, struct mmo_charstatus **p, bool *load_everything);
typedef int (*HPMHOOK_post_chr_mmo_char_fromsql) (int retVal___, int char_id, struct mmo_charstatus *p, bool load_everything);
typedef int (*HPMHOOK_pre_chr_mmo_char_sql_init) (void);
@@ -394,18 +548,20 @@ typedef bool (*HPMHOOK_pre_chr_char_slotchange) (struct char_session_data **sd,
typedef bool (*HPMHOOK_post_chr_char_slotchange) (bool retVal___, struct char_session_data *sd, int fd, unsigned short from, unsigned short to);
typedef int (*HPMHOOK_pre_chr_rename_char_sql) (struct char_session_data **sd, int *char_id);
typedef int (*HPMHOOK_post_chr_rename_char_sql) (int retVal___, struct char_session_data *sd, int char_id);
-typedef int (*HPMHOOK_pre_chr_check_char_name) (char **name, char **esc_name);
-typedef int (*HPMHOOK_post_chr_check_char_name) (int retVal___, char *name, char *esc_name);
-typedef int (*HPMHOOK_pre_chr_make_new_char_sql) (struct char_session_data **sd, const char **name_, int *str, int *agi, int *vit, int *int_, int *dex, int *luk, int *slot, int *hair_color, int *hair_style, short *starting_job);
-typedef int (*HPMHOOK_post_chr_make_new_char_sql) (int retVal___, struct char_session_data *sd, const char *name_, int str, int agi, int vit, int int_, int dex, int luk, int slot, int hair_color, int hair_style, short starting_job);
+typedef bool (*HPMHOOK_pre_chr_name_exists) (const char **name, const char **esc_name);
+typedef bool (*HPMHOOK_post_chr_name_exists) (bool retVal___, const char *name, const char *esc_name);
+typedef int (*HPMHOOK_pre_chr_check_char_name) (const char **name, const char **esc_name);
+typedef int (*HPMHOOK_post_chr_check_char_name) (int retVal___, const char *name, const char *esc_name);
+typedef int (*HPMHOOK_pre_chr_make_new_char_sql) (struct char_session_data **sd, const char **name_, int *str, int *agi, int *vit, int *int_, int *dex, int *luk, int *slot, int *hair_color, int *hair_style, short *starting_job, uint8 *sex);
+typedef int (*HPMHOOK_post_chr_make_new_char_sql) (int retVal___, struct char_session_data *sd, const char *name_, int str, int agi, int vit, int int_, int dex, int luk, int slot, int hair_color, int hair_style, short starting_job, uint8 sex);
typedef int (*HPMHOOK_pre_chr_divorce_char_sql) (int *partner_id1, int *partner_id2);
typedef int (*HPMHOOK_post_chr_divorce_char_sql) (int retVal___, int partner_id1, int partner_id2);
typedef int (*HPMHOOK_pre_chr_count_users) (void);
typedef int (*HPMHOOK_post_chr_count_users) (int retVal___);
typedef int (*HPMHOOK_pre_chr_mmo_char_tobuf) (uint8 **buffer, struct mmo_charstatus **p);
typedef int (*HPMHOOK_post_chr_mmo_char_tobuf) (int retVal___, uint8 *buffer, struct mmo_charstatus *p);
-typedef void (*HPMHOOK_pre_chr_mmo_char_send099d) (int *fd, struct char_session_data **sd);
-typedef void (*HPMHOOK_post_chr_mmo_char_send099d) (int fd, struct char_session_data *sd);
+typedef void (*HPMHOOK_pre_chr_send_HC_ACK_CHARINFO_PER_PAGE) (int *fd, struct char_session_data **sd);
+typedef void (*HPMHOOK_post_chr_send_HC_ACK_CHARINFO_PER_PAGE) (int fd, struct char_session_data *sd);
typedef void (*HPMHOOK_pre_chr_mmo_char_send_ban_list) (int *fd, struct char_session_data **sd);
typedef void (*HPMHOOK_post_chr_mmo_char_send_ban_list) (int fd, struct char_session_data *sd);
typedef void (*HPMHOOK_pre_chr_mmo_char_send_slots_info) (int *fd, struct char_session_data **sd);
@@ -550,8 +706,6 @@ typedef void (*HPMHOOK_pre_chr_parse_frommap_auth_request) (int *fd, int *id);
typedef void (*HPMHOOK_post_chr_parse_frommap_auth_request) (int fd, int id);
typedef void (*HPMHOOK_pre_chr_parse_frommap_update_ip) (int *fd, int *id);
typedef void (*HPMHOOK_post_chr_parse_frommap_update_ip) (int fd, int id);
-typedef void (*HPMHOOK_pre_chr_parse_frommap_request_stats_report) (int *fd);
-typedef void (*HPMHOOK_post_chr_parse_frommap_request_stats_report) (int fd);
typedef void (*HPMHOOK_pre_chr_parse_frommap_scdata_update) (int *fd);
typedef void (*HPMHOOK_post_chr_parse_frommap_scdata_update) (int fd);
typedef void (*HPMHOOK_pre_chr_parse_frommap_scdata_delete) (int *fd);
@@ -582,8 +736,8 @@ typedef void (*HPMHOOK_pre_chr_send_account_id) (int *fd, int *account_id);
typedef void (*HPMHOOK_post_chr_send_account_id) (int fd, int account_id);
typedef void (*HPMHOOK_pre_chr_parse_char_connect) (int *fd, struct char_session_data **sd, uint32 *ipl);
typedef void (*HPMHOOK_post_chr_parse_char_connect) (int fd, struct char_session_data *sd, uint32 ipl);
-typedef void (*HPMHOOK_pre_chr_send_map_info) (int *fd, int *i, uint32 *subnet_map_ip, struct mmo_charstatus **cd);
-typedef void (*HPMHOOK_post_chr_send_map_info) (int fd, int i, uint32 subnet_map_ip, struct mmo_charstatus *cd);
+typedef void (*HPMHOOK_pre_chr_send_map_info) (int *fd, int *i, uint32 *subnet_map_ip, struct mmo_charstatus **cd, char **dnsHost);
+typedef void (*HPMHOOK_post_chr_send_map_info) (int fd, int i, uint32 subnet_map_ip, struct mmo_charstatus *cd, char *dnsHost);
typedef void (*HPMHOOK_pre_chr_send_wait_char_server) (int *fd);
typedef void (*HPMHOOK_post_chr_send_wait_char_server) (int fd);
typedef int (*HPMHOOK_pre_chr_search_default_maps_mapserver) (struct mmo_charstatus **cd);
@@ -790,8 +944,6 @@ typedef bool (*HPMHOOK_pre_chrif_divorce) (int *partner_id1, int *partner_id2);
typedef bool (*HPMHOOK_post_chrif_divorce) (bool retVal___, int partner_id1, int partner_id2);
typedef bool (*HPMHOOK_pre_chrif_removefriend) (int *char_id, int *friend_id);
typedef bool (*HPMHOOK_post_chrif_removefriend) (bool retVal___, int char_id, int friend_id);
-typedef void (*HPMHOOK_pre_chrif_send_report) (char **buf, int *len);
-typedef void (*HPMHOOK_post_chrif_send_report) (char *buf, int len);
typedef bool (*HPMHOOK_pre_chrif_flush) (void);
typedef bool (*HPMHOOK_post_chrif_flush) (bool retVal___);
typedef void (*HPMHOOK_pre_chrif_skillid2idx) (int *fd);
@@ -865,6 +1017,62 @@ typedef void (*HPMHOOK_post_chrif_save_scdata_single) (int account_id, int char_
typedef void (*HPMHOOK_pre_chrif_del_scdata_single) (int *account_id, int *char_id, short *type);
typedef void (*HPMHOOK_post_chrif_del_scdata_single) (int account_id, int char_id, short type);
#endif // MAP_CHRIF_H
+#ifdef MAP_CLAN_H /* clan */
+typedef void (*HPMHOOK_pre_clan_init) (bool *minimal);
+typedef void (*HPMHOOK_post_clan_init) (bool minimal);
+typedef void (*HPMHOOK_pre_clan_final) (void);
+typedef void (*HPMHOOK_post_clan_final) (void);
+typedef bool (*HPMHOOK_pre_clan_config_read) (bool *reload);
+typedef bool (*HPMHOOK_post_clan_config_read) (bool retVal___, bool reload);
+typedef void (*HPMHOOK_pre_clan_config_read_additional_settings) (struct config_setting_t **settings, const char **source);
+typedef void (*HPMHOOK_post_clan_config_read_additional_settings) (struct config_setting_t *settings, const char *source);
+typedef void (*HPMHOOK_pre_clan_read_db) (struct config_setting_t **settings, const char **source, bool *reload);
+typedef void (*HPMHOOK_post_clan_read_db) (struct config_setting_t *settings, const char *source, bool reload);
+typedef int (*HPMHOOK_pre_clan_read_db_sub) (struct config_setting_t **settings, const char **source, bool *reload);
+typedef int (*HPMHOOK_post_clan_read_db_sub) (int retVal___, struct config_setting_t *settings, const char *source, bool reload);
+typedef void (*HPMHOOK_pre_clan_read_db_additional_fields) (struct clan **entry, struct config_setting_t **t, int *n, const char **source);
+typedef void (*HPMHOOK_post_clan_read_db_additional_fields) (struct clan *entry, struct config_setting_t *t, int n, const char *source);
+typedef void (*HPMHOOK_pre_clan_read_buffs) (struct clan **c, struct config_setting_t **buff, const char **source);
+typedef void (*HPMHOOK_post_clan_read_buffs) (struct clan *c, struct config_setting_t *buff, const char *source);
+typedef struct clan* (*HPMHOOK_pre_clan_search) (int *clan_id);
+typedef struct clan* (*HPMHOOK_post_clan_search) (struct clan* retVal___, int clan_id);
+typedef struct clan* (*HPMHOOK_pre_clan_searchname) (const char **name);
+typedef struct clan* (*HPMHOOK_post_clan_searchname) (struct clan* retVal___, const char *name);
+typedef struct map_session_data* (*HPMHOOK_pre_clan_getonlinesd) (struct clan **c);
+typedef struct map_session_data* (*HPMHOOK_post_clan_getonlinesd) (struct map_session_data* retVal___, struct clan *c);
+typedef int (*HPMHOOK_pre_clan_getindex) (const struct clan **c, int *char_id);
+typedef int (*HPMHOOK_post_clan_getindex) (int retVal___, const struct clan *c, int char_id);
+typedef bool (*HPMHOOK_pre_clan_join) (struct map_session_data **sd, int *clan_id);
+typedef bool (*HPMHOOK_post_clan_join) (bool retVal___, struct map_session_data *sd, int clan_id);
+typedef void (*HPMHOOK_pre_clan_member_online) (struct map_session_data **sd, bool *first);
+typedef void (*HPMHOOK_post_clan_member_online) (struct map_session_data *sd, bool first);
+typedef bool (*HPMHOOK_pre_clan_leave) (struct map_session_data **sd, bool *first);
+typedef bool (*HPMHOOK_post_clan_leave) (bool retVal___, struct map_session_data *sd, bool first);
+typedef bool (*HPMHOOK_pre_clan_send_message) (struct map_session_data **sd, const char **mes);
+typedef bool (*HPMHOOK_post_clan_send_message) (bool retVal___, struct map_session_data *sd, const char *mes);
+typedef void (*HPMHOOK_pre_clan_recv_message) (struct clan **c, const char **mes, int *len);
+typedef void (*HPMHOOK_post_clan_recv_message) (struct clan *c, const char *mes, int len);
+typedef void (*HPMHOOK_pre_clan_member_offline) (struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clan_member_offline) (struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clan_set_constants) (void);
+typedef void (*HPMHOOK_post_clan_set_constants) (void);
+typedef int (*HPMHOOK_pre_clan_get_id) (const struct block_list **bl);
+typedef int (*HPMHOOK_post_clan_get_id) (int retVal___, const struct block_list *bl);
+typedef void (*HPMHOOK_pre_clan_buff_start) (struct map_session_data **sd, struct clan **c);
+typedef void (*HPMHOOK_post_clan_buff_start) (struct map_session_data *sd, struct clan *c);
+typedef void (*HPMHOOK_pre_clan_buff_end) (struct map_session_data **sd, struct clan **c);
+typedef void (*HPMHOOK_post_clan_buff_end) (struct map_session_data *sd, struct clan *c);
+typedef void (*HPMHOOK_pre_clan_reload) (void);
+typedef void (*HPMHOOK_post_clan_reload) (void);
+typedef int (*HPMHOOK_pre_clan_rejoin) (struct map_session_data **sd, va_list ap);
+typedef int (*HPMHOOK_post_clan_rejoin) (int retVal___, struct map_session_data *sd, va_list ap);
+typedef int (*HPMHOOK_pre_clan_inactivity_kick) (int *tid, int64 *tick, int *id, intptr_t *data);
+typedef int (*HPMHOOK_post_clan_inactivity_kick) (int retVal___, int tid, int64 tick, int id, intptr_t data);
+typedef int (*HPMHOOK_pre_clan_request_kickoffline) (int *tid, int64 *tick, int *id, intptr_t *data);
+typedef int (*HPMHOOK_post_clan_request_kickoffline) (int retVal___, int tid, int64 tick, int id, intptr_t data);
+typedef int (*HPMHOOK_pre_clan_request_membercount) (int *tid, int64 *tick, int *id, intptr_t *data);
+typedef int (*HPMHOOK_post_clan_request_membercount) (int retVal___, int tid, int64 tick, int id, intptr_t data);
+#endif // MAP_CLAN_H
#ifdef MAP_CLIF_H /* clif */
typedef int (*HPMHOOK_pre_clif_init) (bool *minimal);
typedef int (*HPMHOOK_post_clif_init) (int retVal___, bool minimal);
@@ -894,6 +1102,8 @@ typedef unsigned short (*HPMHOOK_pre_clif_decrypt_cmd) (int *cmd, struct map_ses
typedef unsigned short (*HPMHOOK_post_clif_decrypt_cmd) (unsigned short retVal___, int cmd, struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_authok) (struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_authok) (struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_auth_error) (int *fd, int *errorCode);
+typedef void (*HPMHOOK_post_clif_auth_error) (int fd, int errorCode);
typedef void (*HPMHOOK_pre_clif_authrefuse) (int *fd, uint8 *error_code);
typedef void (*HPMHOOK_post_clif_authrefuse) (int fd, uint8 error_code);
typedef void (*HPMHOOK_pre_clif_authfail_fd) (int *fd, int *type);
@@ -912,6 +1122,8 @@ typedef void (*HPMHOOK_pre_clif_delitem) (struct map_session_data **sd, int *n,
typedef void (*HPMHOOK_post_clif_delitem) (struct map_session_data *sd, int n, int amount, short reason);
typedef void (*HPMHOOK_pre_clif_takeitem) (struct block_list **src, struct block_list **dst);
typedef void (*HPMHOOK_post_clif_takeitem) (struct block_list *src, struct block_list *dst);
+typedef void (*HPMHOOK_pre_clif_item_movefailed) (struct map_session_data **sd, int *n);
+typedef void (*HPMHOOK_post_clif_item_movefailed) (struct map_session_data *sd, int n);
typedef void (*HPMHOOK_pre_clif_item_equip) (short *idx, struct EQUIPITEM_INFO **p, struct item **i, struct item_data **id, int *eqp_pos);
typedef void (*HPMHOOK_post_clif_item_equip) (short idx, struct EQUIPITEM_INFO *p, struct item *i, struct item_data *id, int eqp_pos);
typedef void (*HPMHOOK_pre_clif_item_normal) (short *idx, struct NORMALITEM_INFO **p, struct item **i, struct item_data **id);
@@ -932,10 +1144,8 @@ typedef void (*HPMHOOK_pre_clif_unequipitemack) (struct map_session_data **sd, i
typedef void (*HPMHOOK_post_clif_unequipitemack) (struct map_session_data *sd, int n, int pos, enum e_UNEQUIP_ITEM_ACK result);
typedef void (*HPMHOOK_pre_clif_useitemack) (struct map_session_data **sd, int *index, int *amount, bool *ok);
typedef void (*HPMHOOK_post_clif_useitemack) (struct map_session_data *sd, int index, int amount, bool ok);
-typedef void (*HPMHOOK_pre_clif_addcards) (unsigned char **buf, struct item **item);
-typedef void (*HPMHOOK_post_clif_addcards) (unsigned char *buf, struct item *item);
-typedef void (*HPMHOOK_pre_clif_addcards2) (unsigned short **cards, struct item **item);
-typedef void (*HPMHOOK_post_clif_addcards2) (unsigned short *cards, struct item *item);
+typedef void (*HPMHOOK_pre_clif_addcards) (struct EQUIPSLOTINFO **buf, struct item **item);
+typedef void (*HPMHOOK_post_clif_addcards) (struct EQUIPSLOTINFO *buf, struct item *item);
typedef void (*HPMHOOK_pre_clif_item_sub) (unsigned char **buf, int *n, struct item **i, struct item_data **id, int *equip);
typedef void (*HPMHOOK_post_clif_item_sub) (unsigned char *buf, int n, struct item *i, struct item_data *id, int equip);
typedef void (*HPMHOOK_pre_clif_getareachar_item) (struct map_session_data **sd, struct flooritem_data **fitem);
@@ -944,16 +1154,18 @@ typedef void (*HPMHOOK_pre_clif_cart_additem_ack) (struct map_session_data **sd,
typedef void (*HPMHOOK_post_clif_cart_additem_ack) (struct map_session_data *sd, int flag);
typedef void (*HPMHOOK_pre_clif_cashshop_load) (void);
typedef void (*HPMHOOK_post_clif_cashshop_load) (void);
-typedef void (*HPMHOOK_pre_clif_package_announce) (struct map_session_data **sd, unsigned short *nameid, unsigned short *containerid);
-typedef void (*HPMHOOK_post_clif_package_announce) (struct map_session_data *sd, unsigned short nameid, unsigned short containerid);
-typedef void (*HPMHOOK_pre_clif_item_drop_announce) (struct map_session_data **sd, unsigned short *nameid, char **monsterName);
-typedef void (*HPMHOOK_post_clif_item_drop_announce) (struct map_session_data *sd, unsigned short nameid, char *monsterName);
-typedef void (*HPMHOOK_pre_clif_clearunit_single) (int *id, clr_type *type, int *fd);
-typedef void (*HPMHOOK_post_clif_clearunit_single) (int id, clr_type type, int fd);
-typedef void (*HPMHOOK_pre_clif_clearunit_area) (struct block_list **bl, clr_type *type);
-typedef void (*HPMHOOK_post_clif_clearunit_area) (struct block_list *bl, clr_type type);
-typedef void (*HPMHOOK_pre_clif_clearunit_delayed) (struct block_list **bl, clr_type *type, int64 *tick);
-typedef void (*HPMHOOK_post_clif_clearunit_delayed) (struct block_list *bl, clr_type type, int64 tick);
+typedef void (*HPMHOOK_pre_clif_cashShopSchedule) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_cashShopSchedule) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_package_announce) (struct map_session_data **sd, int *nameid, int *containerid);
+typedef void (*HPMHOOK_post_clif_package_announce) (struct map_session_data *sd, int nameid, int containerid);
+typedef void (*HPMHOOK_pre_clif_item_drop_announce) (struct map_session_data **sd, int *nameid, char **monsterName);
+typedef void (*HPMHOOK_post_clif_item_drop_announce) (struct map_session_data *sd, int nameid, char *monsterName);
+typedef void (*HPMHOOK_pre_clif_clearunit_single) (int *id, enum clr_type *type, int *fd);
+typedef void (*HPMHOOK_post_clif_clearunit_single) (int id, enum clr_type type, int fd);
+typedef void (*HPMHOOK_pre_clif_clearunit_area) (struct block_list **bl, enum clr_type *type);
+typedef void (*HPMHOOK_post_clif_clearunit_area) (struct block_list *bl, enum clr_type type);
+typedef void (*HPMHOOK_pre_clif_clearunit_delayed) (struct block_list **bl, enum clr_type *type, int64 *tick);
+typedef void (*HPMHOOK_post_clif_clearunit_delayed) (struct block_list *bl, enum clr_type type, int64 tick);
typedef void (*HPMHOOK_pre_clif_walkok) (struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_walkok) (struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_move) (struct unit_data **ud);
@@ -1008,6 +1220,8 @@ typedef bool (*HPMHOOK_pre_clif_spawn) (struct block_list **bl);
typedef bool (*HPMHOOK_post_clif_spawn) (bool retVal___, struct block_list *bl);
typedef void (*HPMHOOK_pre_clif_changemap) (struct map_session_data **sd, short *m, int *x, int *y);
typedef void (*HPMHOOK_post_clif_changemap) (struct map_session_data *sd, short m, int x, int y);
+typedef void (*HPMHOOK_pre_clif_changemap_airship) (struct map_session_data **sd, short *m, int *x, int *y);
+typedef void (*HPMHOOK_post_clif_changemap_airship) (struct map_session_data *sd, short m, int x, int y);
typedef void (*HPMHOOK_pre_clif_changemapcell) (int *fd, int16 *m, int *x, int *y, int *type, enum send_target *target);
typedef void (*HPMHOOK_post_clif_changemapcell) (int fd, int16 m, int x, int y, int type, enum send_target target);
typedef void (*HPMHOOK_pre_clif_map_property) (struct map_session_data **sd, enum map_property *property);
@@ -1022,8 +1236,10 @@ typedef void (*HPMHOOK_pre_clif_map_type) (struct map_session_data **sd, enum ma
typedef void (*HPMHOOK_post_clif_map_type) (struct map_session_data *sd, enum map_type type);
typedef void (*HPMHOOK_pre_clif_maptypeproperty2) (struct block_list **bl, enum send_target *t);
typedef void (*HPMHOOK_post_clif_maptypeproperty2) (struct block_list *bl, enum send_target t);
-typedef void (*HPMHOOK_pre_clif_changemapserver) (struct map_session_data **sd, unsigned short *map_index, int *x, int *y, uint32 *ip, uint16 *port);
-typedef void (*HPMHOOK_post_clif_changemapserver) (struct map_session_data *sd, unsigned short map_index, int x, int y, uint32 ip, uint16 port);
+typedef void (*HPMHOOK_pre_clif_changemapserver) (struct map_session_data **sd, unsigned short *map_index, int *x, int *y, uint32 *ip, uint16 *port, char **dnsHost);
+typedef void (*HPMHOOK_post_clif_changemapserver) (struct map_session_data *sd, unsigned short map_index, int x, int y, uint32 ip, uint16 port, char *dnsHost);
+typedef void (*HPMHOOK_pre_clif_changemapserver_airship) (struct map_session_data **sd, unsigned short *map_index, int *x, int *y, uint32 *ip, uint16 *port);
+typedef void (*HPMHOOK_post_clif_changemapserver_airship) (struct map_session_data *sd, unsigned short map_index, int x, int y, uint32 ip, uint16 port);
typedef void (*HPMHOOK_pre_clif_npcbuysell) (struct map_session_data **sd, int *id);
typedef void (*HPMHOOK_post_clif_npcbuysell) (struct map_session_data *sd, int id);
typedef void (*HPMHOOK_pre_clif_buylist) (struct map_session_data **sd, struct npc_data **nd);
@@ -1090,8 +1306,8 @@ typedef int (*HPMHOOK_pre_clif_outsight) (struct block_list **bl, va_list ap);
typedef int (*HPMHOOK_post_clif_outsight) (int retVal___, struct block_list *bl, va_list ap);
typedef void (*HPMHOOK_pre_clif_skillcastcancel) (struct block_list **bl);
typedef void (*HPMHOOK_post_clif_skillcastcancel) (struct block_list *bl);
-typedef void (*HPMHOOK_pre_clif_skill_fail) (struct map_session_data **sd, uint16 *skill_id, enum useskill_fail_cause *cause, int *btype);
-typedef void (*HPMHOOK_post_clif_skill_fail) (struct map_session_data *sd, uint16 skill_id, enum useskill_fail_cause cause, int btype);
+typedef void (*HPMHOOK_pre_clif_skill_fail) (struct map_session_data **sd, uint16 *skill_id, enum useskill_fail_cause *cause, int *btype, int32 *item_id);
+typedef void (*HPMHOOK_post_clif_skill_fail) (struct map_session_data *sd, uint16 skill_id, enum useskill_fail_cause cause, int btype, int32 item_id);
typedef void (*HPMHOOK_pre_clif_skill_cooldown) (struct map_session_data **sd, uint16 *skill_id, unsigned int *duration);
typedef void (*HPMHOOK_post_clif_skill_cooldown) (struct map_session_data *sd, uint16 skill_id, unsigned int duration);
typedef void (*HPMHOOK_pre_clif_skill_memomessage) (struct map_session_data **sd, int *type);
@@ -1110,12 +1326,30 @@ typedef void (*HPMHOOK_pre_clif_status_change) (struct block_list **bl, int *typ
typedef void (*HPMHOOK_post_clif_status_change) (struct block_list *bl, int type, int flag, int tick, int val1, int val2, int val3);
typedef void (*HPMHOOK_pre_clif_insert_card) (struct map_session_data **sd, int *idx_equip, int *idx_card, int *flag);
typedef void (*HPMHOOK_post_clif_insert_card) (struct map_session_data *sd, int idx_equip, int idx_card, int flag);
-typedef void (*HPMHOOK_pre_clif_inventorylist) (struct map_session_data **sd);
-typedef void (*HPMHOOK_post_clif_inventorylist) (struct map_session_data *sd);
-typedef void (*HPMHOOK_pre_clif_equiplist) (struct map_session_data **sd);
-typedef void (*HPMHOOK_post_clif_equiplist) (struct map_session_data *sd);
-typedef void (*HPMHOOK_pre_clif_cartlist) (struct map_session_data **sd);
-typedef void (*HPMHOOK_post_clif_cartlist) (struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_inventoryList) (struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_inventoryList) (struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_inventoryItems) (struct map_session_data **sd, enum inventory_type *type);
+typedef void (*HPMHOOK_post_clif_inventoryItems) (struct map_session_data *sd, enum inventory_type type);
+typedef void (*HPMHOOK_pre_clif_equipList) (struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_equipList) (struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_equipItems) (struct map_session_data **sd, enum inventory_type *type);
+typedef void (*HPMHOOK_post_clif_equipItems) (struct map_session_data *sd, enum inventory_type type);
+typedef void (*HPMHOOK_pre_clif_cartList) (struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_cartList) (struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_cartItems) (struct map_session_data **sd, enum inventory_type *type);
+typedef void (*HPMHOOK_post_clif_cartItems) (struct map_session_data *sd, enum inventory_type type);
+typedef void (*HPMHOOK_pre_clif_inventoryExpansionInfo) (struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_inventoryExpansionInfo) (struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_inventoryExpandAck) (struct map_session_data **sd, enum expand_inventory *result, int *itemId);
+typedef void (*HPMHOOK_post_clif_inventoryExpandAck) (struct map_session_data *sd, enum expand_inventory result, int itemId);
+typedef void (*HPMHOOK_pre_clif_inventoryExpandResult) (struct map_session_data **sd, enum expand_inventory_result *result);
+typedef void (*HPMHOOK_post_clif_inventoryExpandResult) (struct map_session_data *sd, enum expand_inventory_result result);
+typedef void (*HPMHOOK_pre_clif_pInventoryExpansion) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pInventoryExpansion) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_pInventoryExpansionConfirmed) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pInventoryExpansionConfirmed) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_pInventoryExpansionRejected) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pInventoryExpansionRejected) (int fd, struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_favorite_item) (struct map_session_data **sd, unsigned short *index);
typedef void (*HPMHOOK_post_clif_favorite_item) (struct map_session_data *sd, unsigned short index);
typedef void (*HPMHOOK_pre_clif_clearcart) (int *fd);
@@ -1154,8 +1388,8 @@ typedef int (*HPMHOOK_pre_clif_hpmeter_sub) (struct block_list **bl, va_list ap)
typedef int (*HPMHOOK_post_clif_hpmeter_sub) (int retVal___, struct block_list *bl, va_list ap);
typedef void (*HPMHOOK_pre_clif_upgrademessage) (int *fd, int *result, int *item_id);
typedef void (*HPMHOOK_post_clif_upgrademessage) (int fd, int result, int item_id);
-typedef void (*HPMHOOK_pre_clif_get_weapon_view) (struct map_session_data **sd, unsigned short **rhand, unsigned short **lhand);
-typedef void (*HPMHOOK_post_clif_get_weapon_view) (struct map_session_data *sd, unsigned short *rhand, unsigned short *lhand);
+typedef void (*HPMHOOK_pre_clif_get_weapon_view) (struct map_session_data **sd, int **rhand, int **lhand);
+typedef void (*HPMHOOK_post_clif_get_weapon_view) (struct map_session_data *sd, int *rhand, int *lhand);
typedef void (*HPMHOOK_pre_clif_gospel_info) (struct map_session_data **sd, int *type);
typedef void (*HPMHOOK_post_clif_gospel_info) (struct map_session_data *sd, int type);
typedef void (*HPMHOOK_pre_clif_feel_req) (int *fd, struct map_session_data **sd, uint16 *skill_lv);
@@ -1172,20 +1406,22 @@ typedef void (*HPMHOOK_pre_clif_feel_hate_reset) (struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_feel_hate_reset) (struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_partytickack) (struct map_session_data **sd, bool *flag);
typedef void (*HPMHOOK_post_clif_partytickack) (struct map_session_data *sd, bool flag);
-typedef void (*HPMHOOK_pre_clif_equiptickack) (struct map_session_data **sd, int *flag);
-typedef void (*HPMHOOK_post_clif_equiptickack) (struct map_session_data *sd, int flag);
+typedef void (*HPMHOOK_pre_clif_zc_config) (struct map_session_data **sd, enum CZ_CONFIG *type, int *flag);
+typedef void (*HPMHOOK_post_clif_zc_config) (struct map_session_data *sd, enum CZ_CONFIG type, int flag);
typedef void (*HPMHOOK_pre_clif_viewequip_ack) (struct map_session_data **sd, struct map_session_data **tsd);
typedef void (*HPMHOOK_post_clif_viewequip_ack) (struct map_session_data *sd, struct map_session_data *tsd);
typedef void (*HPMHOOK_pre_clif_equpcheckbox) (struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_equpcheckbox) (struct map_session_data *sd);
-typedef void (*HPMHOOK_pre_clif_displayexp) (struct map_session_data **sd, unsigned int *exp, char *type, bool *is_quest);
-typedef void (*HPMHOOK_post_clif_displayexp) (struct map_session_data *sd, unsigned int exp, char type, bool is_quest);
+typedef void (*HPMHOOK_pre_clif_displayexp) (struct map_session_data **sd, uint64 *exp, char *type, bool *is_quest);
+typedef void (*HPMHOOK_post_clif_displayexp) (struct map_session_data *sd, uint64 exp, char type, bool is_quest);
typedef void (*HPMHOOK_pre_clif_font) (struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_font) (struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_progressbar) (struct map_session_data **sd, unsigned int *color, unsigned int *second);
typedef void (*HPMHOOK_post_clif_progressbar) (struct map_session_data *sd, unsigned int color, unsigned int second);
typedef void (*HPMHOOK_pre_clif_progressbar_abort) (struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_progressbar_abort) (struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_progressbar_unit) (struct block_list **bl, uint32 *color, uint32 *time);
+typedef void (*HPMHOOK_post_clif_progressbar_unit) (struct block_list *bl, uint32 color, uint32 time);
typedef void (*HPMHOOK_pre_clif_showdigit) (struct map_session_data **sd, unsigned char *type, int *value);
typedef void (*HPMHOOK_post_clif_showdigit) (struct map_session_data *sd, unsigned char type, int value);
typedef int (*HPMHOOK_pre_clif_elementalconverter_list) (struct map_session_data **sd);
@@ -1294,6 +1530,10 @@ typedef void (*HPMHOOK_pre_clif_specialeffect_single) (struct block_list **bl, i
typedef void (*HPMHOOK_post_clif_specialeffect_single) (struct block_list *bl, int type, int fd);
typedef void (*HPMHOOK_pre_clif_specialeffect_value) (struct block_list **bl, int *effect_id, int *num, send_target *target);
typedef void (*HPMHOOK_post_clif_specialeffect_value) (struct block_list *bl, int effect_id, int num, send_target target);
+typedef void (*HPMHOOK_pre_clif_removeSpecialEffect) (struct block_list **bl, int *effectId, enum send_target *target);
+typedef void (*HPMHOOK_post_clif_removeSpecialEffect) (struct block_list *bl, int effectId, enum send_target target);
+typedef void (*HPMHOOK_pre_clif_removeSpecialEffect_single) (struct block_list **bl, int *effectId, struct block_list **targetBl);
+typedef void (*HPMHOOK_post_clif_removeSpecialEffect_single) (struct block_list *bl, int effectId, struct block_list *targetBl);
typedef void (*HPMHOOK_pre_clif_millenniumshield) (struct block_list **bl, short *shields);
typedef void (*HPMHOOK_post_clif_millenniumshield) (struct block_list *bl, short shields);
typedef void (*HPMHOOK_pre_clif_spiritcharm) (struct map_session_data **sd);
@@ -1344,14 +1584,24 @@ typedef void (*HPMHOOK_pre_clif_messagecolor_self) (int *fd, uint32 *color, cons
typedef void (*HPMHOOK_post_clif_messagecolor_self) (int fd, uint32 color, const char *msg);
typedef void (*HPMHOOK_pre_clif_messagecolor) (struct block_list **bl, uint32 *color, const char **msg);
typedef void (*HPMHOOK_post_clif_messagecolor) (struct block_list *bl, uint32 color, const char *msg);
-typedef void (*HPMHOOK_pre_clif_disp_overhead) (struct block_list **bl, const char **mes);
-typedef void (*HPMHOOK_post_clif_disp_overhead) (struct block_list *bl, const char *mes);
-typedef void (*HPMHOOK_pre_clif_msgtable) (struct map_session_data **sd, unsigned short *msg_id);
-typedef void (*HPMHOOK_post_clif_msgtable) (struct map_session_data *sd, unsigned short msg_id);
-typedef void (*HPMHOOK_pre_clif_msgtable_num) (struct map_session_data **sd, unsigned short *msg_id, int *value);
-typedef void (*HPMHOOK_post_clif_msgtable_num) (struct map_session_data *sd, unsigned short msg_id, int value);
-typedef void (*HPMHOOK_pre_clif_msgtable_skill) (struct map_session_data **sd, uint16 *skill_id, int *msg_id);
-typedef void (*HPMHOOK_post_clif_msgtable_skill) (struct map_session_data *sd, uint16 skill_id, int msg_id);
+typedef void (*HPMHOOK_pre_clif_serviceMessageColor) (struct map_session_data **sd, uint32 *color, const char **msg);
+typedef void (*HPMHOOK_post_clif_serviceMessageColor) (struct map_session_data *sd, uint32 color, const char *msg);
+typedef void (*HPMHOOK_pre_clif_disp_overhead) (struct block_list **bl, const char **mes, enum send_target *target, struct block_list **target_bl);
+typedef void (*HPMHOOK_post_clif_disp_overhead) (struct block_list *bl, const char *mes, enum send_target target, struct block_list *target_bl);
+typedef void (*HPMHOOK_pre_clif_notify_playerchat) (struct block_list **bl, const char **mes);
+typedef void (*HPMHOOK_post_clif_notify_playerchat) (struct block_list *bl, const char *mes);
+typedef void (*HPMHOOK_pre_clif_msgtable) (struct map_session_data **sd, enum clif_messages *msg_id);
+typedef void (*HPMHOOK_post_clif_msgtable) (struct map_session_data *sd, enum clif_messages msg_id);
+typedef void (*HPMHOOK_pre_clif_msgtable_num) (struct map_session_data **sd, enum clif_messages *msg_id, int *value);
+typedef void (*HPMHOOK_post_clif_msgtable_num) (struct map_session_data *sd, enum clif_messages msg_id, int value);
+typedef void (*HPMHOOK_pre_clif_msgtable_skill) (struct map_session_data **sd, uint16 *skill_id, enum clif_messages *msg_id);
+typedef void (*HPMHOOK_post_clif_msgtable_skill) (struct map_session_data *sd, uint16 skill_id, enum clif_messages msg_id);
+typedef void (*HPMHOOK_pre_clif_msgtable_str) (struct map_session_data **sd, enum clif_messages *p1, const char **value);
+typedef void (*HPMHOOK_post_clif_msgtable_str) (struct map_session_data *sd, enum clif_messages p1, const char *value);
+typedef void (*HPMHOOK_pre_clif_msgtable_str_color) (struct map_session_data **sd, enum clif_messages *p1, const char **value, uint32 *color);
+typedef void (*HPMHOOK_post_clif_msgtable_str_color) (struct map_session_data *sd, enum clif_messages p1, const char *value, uint32 color);
+typedef void (*HPMHOOK_pre_clif_msgtable_color) (struct map_session_data **sd, enum clif_messages *p1, uint32 *color);
+typedef void (*HPMHOOK_post_clif_msgtable_color) (struct map_session_data *sd, enum clif_messages p1, uint32 color);
typedef void (*HPMHOOK_pre_clif_message) (const int *fd, const char **mes);
typedef void (*HPMHOOK_post_clif_message) (const int fd, const char *mes);
typedef void (*HPMHOOK_pre_clif_messageln) (const int *fd, const char **mes);
@@ -1396,10 +1646,20 @@ typedef void (*HPMHOOK_pre_clif_buyvending) (struct map_session_data **sd, int *
typedef void (*HPMHOOK_post_clif_buyvending) (struct map_session_data *sd, int index, int amount, int fail);
typedef void (*HPMHOOK_pre_clif_openvending) (struct map_session_data **sd, int *id, struct s_vending **vending_list);
typedef void (*HPMHOOK_post_clif_openvending) (struct map_session_data *sd, int id, struct s_vending *vending_list);
+typedef void (*HPMHOOK_pre_clif_openvendingAck) (int *fd, int *result);
+typedef void (*HPMHOOK_post_clif_openvendingAck) (int fd, int result);
typedef void (*HPMHOOK_pre_clif_vendingreport) (struct map_session_data **sd, int *index, int *amount, uint32 *char_id, int *zeny);
typedef void (*HPMHOOK_post_clif_vendingreport) (struct map_session_data *sd, int index, int amount, uint32 char_id, int zeny);
-typedef void (*HPMHOOK_pre_clif_storagelist) (struct map_session_data **sd, struct item **items, int *items_length);
-typedef void (*HPMHOOK_post_clif_storagelist) (struct map_session_data *sd, struct item *items, int items_length);
+typedef void (*HPMHOOK_pre_clif_storageList) (struct map_session_data **sd, struct item **items, int *items_length);
+typedef void (*HPMHOOK_post_clif_storageList) (struct map_session_data *sd, struct item *items, int items_length);
+typedef void (*HPMHOOK_pre_clif_guildStorageList) (struct map_session_data **sd, struct item **items, int *items_length);
+typedef void (*HPMHOOK_post_clif_guildStorageList) (struct map_session_data *sd, struct item *items, int items_length);
+typedef void (*HPMHOOK_pre_clif_storageItems) (struct map_session_data **sd, enum inventory_type *type, struct item **items, int *items_length);
+typedef void (*HPMHOOK_post_clif_storageItems) (struct map_session_data *sd, enum inventory_type type, struct item *items, int items_length);
+typedef void (*HPMHOOK_pre_clif_inventoryStart) (struct map_session_data **sd, enum inventory_type *type, const char **name);
+typedef void (*HPMHOOK_post_clif_inventoryStart) (struct map_session_data *sd, enum inventory_type type, const char *name);
+typedef void (*HPMHOOK_pre_clif_inventoryEnd) (struct map_session_data **sd, enum inventory_type *type);
+typedef void (*HPMHOOK_post_clif_inventoryEnd) (struct map_session_data *sd, enum inventory_type type);
typedef void (*HPMHOOK_pre_clif_updatestorageamount) (struct map_session_data **sd, int *amount, int *max_amount);
typedef void (*HPMHOOK_post_clif_updatestorageamount) (struct map_session_data *sd, int amount, int max_amount);
typedef void (*HPMHOOK_pre_clif_storageitemadded) (struct map_session_data **sd, struct item **i, int *index, int *amount);
@@ -1424,6 +1684,8 @@ typedef void (*HPMHOOK_pre_clif_party_member_info) (struct party_data **p, struc
typedef void (*HPMHOOK_post_clif_party_member_info) (struct party_data *p, struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_party_info) (struct party_data **p, struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_party_info) (struct party_data *p, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_party_job_and_level) (struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_party_job_and_level) (struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_party_invite) (struct map_session_data **sd, struct map_session_data **tsd);
typedef void (*HPMHOOK_post_clif_party_invite) (struct map_session_data *sd, struct map_session_data *tsd);
typedef void (*HPMHOOK_pre_clif_party_inviteack) (struct map_session_data **sd, const char **nick, int *result);
@@ -1470,10 +1732,10 @@ typedef void (*HPMHOOK_pre_clif_guild_invite) (struct map_session_data **sd, str
typedef void (*HPMHOOK_post_clif_guild_invite) (struct map_session_data *sd, struct guild *g);
typedef void (*HPMHOOK_pre_clif_guild_inviteack) (struct map_session_data **sd, int *flag);
typedef void (*HPMHOOK_post_clif_guild_inviteack) (struct map_session_data *sd, int flag);
-typedef void (*HPMHOOK_pre_clif_guild_leave) (struct map_session_data **sd, const char **name, const char **mes);
-typedef void (*HPMHOOK_post_clif_guild_leave) (struct map_session_data *sd, const char *name, const char *mes);
-typedef void (*HPMHOOK_pre_clif_guild_expulsion) (struct map_session_data **sd, const char **name, const char **mes, int *account_id);
-typedef void (*HPMHOOK_post_clif_guild_expulsion) (struct map_session_data *sd, const char *name, const char *mes, int account_id);
+typedef void (*HPMHOOK_pre_clif_guild_leave) (struct map_session_data **sd, const char **name, int *char_id, const char **mes);
+typedef void (*HPMHOOK_post_clif_guild_leave) (struct map_session_data *sd, const char *name, int char_id, const char *mes);
+typedef void (*HPMHOOK_pre_clif_guild_expulsion) (struct map_session_data **sd, const char **name, int *char_id, const char **mes, int *account_id);
+typedef void (*HPMHOOK_post_clif_guild_expulsion) (struct map_session_data *sd, const char *name, int char_id, const char *mes, int account_id);
typedef void (*HPMHOOK_pre_clif_guild_positionchanged) (struct guild **g, int *idx);
typedef void (*HPMHOOK_post_clif_guild_positionchanged) (struct guild *g, int idx);
typedef void (*HPMHOOK_pre_clif_guild_memberpositionchanged) (struct guild **g, int *idx);
@@ -1508,6 +1770,10 @@ typedef void (*HPMHOOK_pre_clif_guild_positioninfolist) (struct map_session_data
typedef void (*HPMHOOK_post_clif_guild_positioninfolist) (struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_guild_expulsionlist) (struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_guild_expulsionlist) (struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_guild_set_position) (struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_guild_set_position) (struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_guild_position_selected) (struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_guild_position_selected) (struct map_session_data *sd);
typedef bool (*HPMHOOK_pre_clif_validate_emblem) (const uint8 **emblem, unsigned long *emblem_len);
typedef bool (*HPMHOOK_post_clif_validate_emblem) (bool retVal___, const uint8 *emblem, unsigned long emblem_len);
typedef void (*HPMHOOK_pre_clif_bg_hp) (struct map_session_data **sd);
@@ -1590,6 +1856,8 @@ typedef void (*HPMHOOK_pre_clif_quest_update_status) (struct map_session_data **
typedef void (*HPMHOOK_post_clif_quest_update_status) (struct map_session_data *sd, int quest_id, bool active);
typedef void (*HPMHOOK_pre_clif_quest_update_objective) (struct map_session_data **sd, struct quest **qd);
typedef void (*HPMHOOK_post_clif_quest_update_objective) (struct map_session_data *sd, struct quest *qd);
+typedef void (*HPMHOOK_pre_clif_quest_notify_objective) (struct map_session_data **sd, struct quest **qd);
+typedef void (*HPMHOOK_post_clif_quest_notify_objective) (struct map_session_data *sd, struct quest *qd);
typedef void (*HPMHOOK_pre_clif_quest_show_event) (struct map_session_data **sd, struct block_list **bl, short *state, short *color);
typedef void (*HPMHOOK_post_clif_quest_show_event) (struct map_session_data *sd, struct block_list *bl, short state, short color);
typedef void (*HPMHOOK_pre_clif_mail_window) (int *fd, int *flag);
@@ -1684,12 +1952,12 @@ typedef void (*HPMHOOK_pre_clif_buyingstore_itemlist) (struct map_session_data *
typedef void (*HPMHOOK_post_clif_buyingstore_itemlist) (struct map_session_data *sd, struct map_session_data *pl_sd);
typedef void (*HPMHOOK_pre_clif_buyingstore_trade_failed_buyer) (struct map_session_data **sd, short *result);
typedef void (*HPMHOOK_post_clif_buyingstore_trade_failed_buyer) (struct map_session_data *sd, short result);
-typedef void (*HPMHOOK_pre_clif_buyingstore_update_item) (struct map_session_data **sd, unsigned short *nameid, unsigned short *amount, uint32 *char_id, int *zeny);
-typedef void (*HPMHOOK_post_clif_buyingstore_update_item) (struct map_session_data *sd, unsigned short nameid, unsigned short amount, uint32 char_id, int zeny);
+typedef void (*HPMHOOK_pre_clif_buyingstore_update_item) (struct map_session_data **sd, int *nameid, unsigned short *amount, uint32 *char_id, int *zeny);
+typedef void (*HPMHOOK_post_clif_buyingstore_update_item) (struct map_session_data *sd, int nameid, unsigned short amount, uint32 char_id, int zeny);
typedef void (*HPMHOOK_pre_clif_buyingstore_delete_item) (struct map_session_data **sd, short *index, unsigned short *amount, int *price);
typedef void (*HPMHOOK_post_clif_buyingstore_delete_item) (struct map_session_data *sd, short index, unsigned short amount, int price);
-typedef void (*HPMHOOK_pre_clif_buyingstore_trade_failed_seller) (struct map_session_data **sd, short *result, unsigned short *nameid);
-typedef void (*HPMHOOK_post_clif_buyingstore_trade_failed_seller) (struct map_session_data *sd, short result, unsigned short nameid);
+typedef void (*HPMHOOK_pre_clif_buyingstore_trade_failed_seller) (struct map_session_data **sd, short *result, int *nameid);
+typedef void (*HPMHOOK_post_clif_buyingstore_trade_failed_seller) (struct map_session_data *sd, short result, int nameid);
typedef void (*HPMHOOK_pre_clif_search_store_info_ack) (struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_search_store_info_ack) (struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_search_store_info_failed) (struct map_session_data **sd, unsigned char *reason);
@@ -1752,8 +2020,8 @@ typedef void (*HPMHOOK_pre_clif_npc_market_purchase_ack) (struct map_session_dat
typedef void (*HPMHOOK_post_clif_npc_market_purchase_ack) (struct map_session_data *sd, const struct itemlist *item_list, unsigned char response);
typedef bool (*HPMHOOK_pre_clif_parse_roulette_db) (void);
typedef bool (*HPMHOOK_post_clif_parse_roulette_db) (bool retVal___);
-typedef void (*HPMHOOK_pre_clif_roulette_generate_ack) (struct map_session_data **sd, unsigned char *result, short *stage, short *prizeIdx, short *bonusItemID);
-typedef void (*HPMHOOK_post_clif_roulette_generate_ack) (struct map_session_data *sd, unsigned char result, short stage, short prizeIdx, short bonusItemID);
+typedef void (*HPMHOOK_pre_clif_roulette_generate_ack) (struct map_session_data **sd, enum GENERATE_ROULETTE_ACK *result, short *stage, short *prizeIdx, int *bonusItemID);
+typedef void (*HPMHOOK_post_clif_roulette_generate_ack) (struct map_session_data *sd, enum GENERATE_ROULETTE_ACK result, short stage, short prizeIdx, int bonusItemID);
typedef void (*HPMHOOK_pre_clif_openmergeitem) (int *fd, struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_openmergeitem) (int fd, struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_cancelmergeitem) (int *fd, struct map_session_data **sd);
@@ -1768,6 +2036,18 @@ typedef void (*HPMHOOK_pre_clif_navigate_to) (struct map_session_data **sd, cons
typedef void (*HPMHOOK_post_clif_navigate_to) (struct map_session_data *sd, const char *mapname, uint16 x, uint16 y, uint8 flag, bool hideWindow, uint16 mob_id);
typedef unsigned char (*HPMHOOK_pre_clif_bl_type) (struct block_list **bl);
typedef unsigned char (*HPMHOOK_post_clif_bl_type) (unsigned char retVal___, struct block_list *bl);
+typedef void (*HPMHOOK_pre_clif_achievement_send_list) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_achievement_send_list) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_achievement_send_update) (int *fd, struct map_session_data **sd, const struct achievement_data **ad);
+typedef void (*HPMHOOK_post_clif_achievement_send_update) (int fd, struct map_session_data *sd, const struct achievement_data *ad);
+typedef void (*HPMHOOK_pre_clif_pAchievementGetReward) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pAchievementGetReward) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_achievement_reward_ack) (int *fd, struct map_session_data **sd, const struct achievement_data **ad);
+typedef void (*HPMHOOK_post_clif_achievement_reward_ack) (int fd, struct map_session_data *sd, const struct achievement_data *ad);
+typedef void (*HPMHOOK_pre_clif_change_title_ack) (int *fd, struct map_session_data **sd, int *title_id);
+typedef void (*HPMHOOK_post_clif_change_title_ack) (int fd, struct map_session_data *sd, int title_id);
+typedef void (*HPMHOOK_pre_clif_pChangeTitle) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pChangeTitle) (int fd, struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_pWantToConnection) (int *fd, struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_pWantToConnection) (int fd, struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_pLoadEndAck) (int *fd, struct map_session_data **sd);
@@ -1860,8 +2140,14 @@ typedef void (*HPMHOOK_pre_clif_pStatusUp) (int *fd, struct map_session_data **s
typedef void (*HPMHOOK_post_clif_pStatusUp) (int fd, struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_pSkillUp) (int *fd, struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_pSkillUp) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_useSkillToIdReal) (int *fd, struct map_session_data **sd, int *skill_id, int *skill_lv, int *target_id);
+typedef void (*HPMHOOK_post_clif_useSkillToIdReal) (int fd, struct map_session_data *sd, int skill_id, int skill_lv, int target_id);
typedef void (*HPMHOOK_pre_clif_pUseSkillToId) (int *fd, struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_pUseSkillToId) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_pStartUseSkillToId) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pStartUseSkillToId) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_pStopUseSkillToId) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pStopUseSkillToId) (int fd, struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_pUseSkillToId_homun) (struct homun_data **hd, struct map_session_data **sd, int64 *tick, uint16 *skill_id, uint16 *skill_lv, int *target_id);
typedef void (*HPMHOOK_post_clif_pUseSkillToId_homun) (struct homun_data *hd, struct map_session_data *sd, int64 tick, uint16 skill_id, uint16 skill_lv, int target_id);
typedef void (*HPMHOOK_pre_clif_pUseSkillToId_mercenary) (struct mercenary_data **md, struct map_session_data **sd, int64 *tick, uint16 *skill_id, uint16 *skill_lv, int *target_id);
@@ -2128,8 +2414,8 @@ typedef void (*HPMHOOK_pre_clif_pAdopt_reply) (int *fd, struct map_session_data
typedef void (*HPMHOOK_post_clif_pAdopt_reply) (int fd, struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_pViewPlayerEquip) (int *fd, struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_pViewPlayerEquip) (int fd, struct map_session_data *sd);
-typedef void (*HPMHOOK_pre_clif_pEquipTick) (int *fd, struct map_session_data **sd);
-typedef void (*HPMHOOK_post_clif_pEquipTick) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_p_cz_config) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_p_cz_config) (int fd, struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_pquestStateAck) (int *fd, struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_pquestStateAck) (int fd, struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_pmercenary_action) (int *fd, struct map_session_data **sd);
@@ -2164,6 +2450,8 @@ typedef void (*HPMHOOK_pre_clif_pMoveItem) (int *fd, struct map_session_data **s
typedef void (*HPMHOOK_post_clif_pMoveItem) (int fd, struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_pDull) (int *fd, struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_pDull) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_p_cz_blocking_play_cancel) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_p_cz_blocking_play_cancel) (int fd, struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_pBGQueueRegister) (int *fd, struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_pBGQueueRegister) (int fd, struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_pBGQueueCheckState) (int *fd, struct map_session_data **sd);
@@ -2222,8 +2510,8 @@ typedef void (*HPMHOOK_pre_clif_pNPCMarketClosed) (int *fd, struct map_session_d
typedef void (*HPMHOOK_post_clif_pNPCMarketClosed) (int fd, struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_pNPCMarketPurchase) (int *fd, struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_pNPCMarketPurchase) (int fd, struct map_session_data *sd);
-typedef void (*HPMHOOK_pre_clif_add_random_options) (unsigned char **buf, struct item **item);
-typedef void (*HPMHOOK_post_clif_add_random_options) (unsigned char *buf, struct item *item);
+typedef int (*HPMHOOK_pre_clif_add_item_options) (struct ItemOptions **buf, const struct item **it);
+typedef int (*HPMHOOK_post_clif_add_item_options) (int retVal___, struct ItemOptions *buf, const struct item *it);
typedef void (*HPMHOOK_pre_clif_pHotkeyRowShift) (int *fd, struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_pHotkeyRowShift) (int fd, struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_dressroom_open) (struct map_session_data **sd, int *view);
@@ -2236,6 +2524,146 @@ typedef void (*HPMHOOK_pre_clif_pSelectCart) (int *fd, struct map_session_data *
typedef void (*HPMHOOK_post_clif_pSelectCart) (int fd, struct map_session_data *sd);
typedef const char* (*HPMHOOK_pre_clif_get_bl_name) (const struct block_list **bl);
typedef const char* (*HPMHOOK_post_clif_get_bl_name) (const char* retVal___, const struct block_list *bl);
+typedef void (*HPMHOOK_pre_clif_pRodexOpenWriteMail) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pRodexOpenWriteMail) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_rodex_open_write_mail) (int *fd, const char **receiver_name, int8 *result);
+typedef void (*HPMHOOK_post_clif_rodex_open_write_mail) (int fd, const char *receiver_name, int8 result);
+typedef void (*HPMHOOK_pre_clif_pRodexAddItem) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pRodexAddItem) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_rodex_add_item_result) (struct map_session_data **sd, int16 *idx, int16 *amount, enum rodex_add_item *result);
+typedef void (*HPMHOOK_post_clif_rodex_add_item_result) (struct map_session_data *sd, int16 idx, int16 amount, enum rodex_add_item result);
+typedef void (*HPMHOOK_pre_clif_pRodexRemoveItem) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pRodexRemoveItem) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_rodex_remove_item_result) (struct map_session_data **sd, int16 *idx, int16 *amount);
+typedef void (*HPMHOOK_post_clif_rodex_remove_item_result) (struct map_session_data *sd, int16 idx, int16 amount);
+typedef void (*HPMHOOK_pre_clif_pRodexSendMail) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pRodexSendMail) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_rodex_send_mail_result) (int *fd, struct map_session_data **sd, int8 *result);
+typedef void (*HPMHOOK_post_clif_rodex_send_mail_result) (int fd, struct map_session_data *sd, int8 result);
+typedef void (*HPMHOOK_pre_clif_rodex_send_maillist) (int *fd, struct map_session_data **sd, int8 *open_type, int64 *page_start);
+typedef void (*HPMHOOK_post_clif_rodex_send_maillist) (int fd, struct map_session_data *sd, int8 open_type, int64 page_start);
+typedef void (*HPMHOOK_pre_clif_rodex_send_refresh) (int *fd, struct map_session_data **sd, int8 *open_type, int *count);
+typedef void (*HPMHOOK_post_clif_rodex_send_refresh) (int fd, struct map_session_data *sd, int8 open_type, int count);
+typedef void (*HPMHOOK_pre_clif_rodex_send_mails_all) (int *fd, struct map_session_data **sd, int64 *mail_id);
+typedef void (*HPMHOOK_post_clif_rodex_send_mails_all) (int fd, struct map_session_data *sd, int64 mail_id);
+typedef void (*HPMHOOK_pre_clif_pRodexReadMail) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pRodexReadMail) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_rodex_read_mail) (struct map_session_data **sd, int8 *opentype, struct rodex_message **msg);
+typedef void (*HPMHOOK_post_clif_rodex_read_mail) (struct map_session_data *sd, int8 opentype, struct rodex_message *msg);
+typedef void (*HPMHOOK_pre_clif_pRodexNextMaillist) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pRodexNextMaillist) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_pRodexCloseMailbox) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pRodexCloseMailbox) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_pRodexCancelWriteMail) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pRodexCancelWriteMail) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_pRodexOpenMailbox) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pRodexOpenMailbox) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_pRodexCheckName) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pRodexCheckName) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_rodex_checkname_result) (struct map_session_data **sd, int *char_id, short *class_, int *base_level, const char **name);
+typedef void (*HPMHOOK_post_clif_rodex_checkname_result) (struct map_session_data *sd, int char_id, short class_, int base_level, const char *name);
+typedef void (*HPMHOOK_pre_clif_pRodexDeleteMail) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pRodexDeleteMail) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_rodex_delete_mail) (struct map_session_data **sd, int8 *opentype, int64 *mail_id);
+typedef void (*HPMHOOK_post_clif_rodex_delete_mail) (struct map_session_data *sd, int8 opentype, int64 mail_id);
+typedef void (*HPMHOOK_pre_clif_pRodexRefreshMaillist) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pRodexRefreshMaillist) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_pRodexRequestZeny) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pRodexRequestZeny) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_rodex_request_zeny) (struct map_session_data **sd, int8 *opentype, int64 *mail_id, enum rodex_get_zeny *result);
+typedef void (*HPMHOOK_post_clif_rodex_request_zeny) (struct map_session_data *sd, int8 opentype, int64 mail_id, enum rodex_get_zeny result);
+typedef void (*HPMHOOK_pre_clif_pRodexRequestItems) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pRodexRequestItems) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_rodex_request_items) (struct map_session_data **sd, int8 *opentype, int64 *mail_id, enum rodex_get_items *result);
+typedef void (*HPMHOOK_post_clif_rodex_request_items) (struct map_session_data *sd, int8 opentype, int64 mail_id, enum rodex_get_items result);
+typedef void (*HPMHOOK_pre_clif_rodex_icon) (int *fd, bool *show);
+typedef void (*HPMHOOK_post_clif_rodex_icon) (int fd, bool show);
+typedef void (*HPMHOOK_pre_clif_skill_scale) (struct block_list **bl, int *src_id, int *x, int *y, uint16 *skill_id, uint16 *skill_lv, int *casttime);
+typedef void (*HPMHOOK_post_clif_skill_scale) (struct block_list *bl, int src_id, int x, int y, uint16 skill_id, uint16 skill_lv, int casttime);
+typedef void (*HPMHOOK_pre_clif_clan_basicinfo) (struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_clan_basicinfo) (struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_clan_onlinecount) (struct clan **c);
+typedef void (*HPMHOOK_post_clif_clan_onlinecount) (struct clan *c);
+typedef void (*HPMHOOK_pre_clif_clan_leave) (struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_clan_leave) (struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_clan_message) (struct clan **c, const char **mes, int *len);
+typedef void (*HPMHOOK_post_clif_clan_message) (struct clan *c, const char *mes, int len);
+typedef void (*HPMHOOK_pre_clif_pClanMessage) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pClanMessage) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_hat_effect) (struct block_list **bl, struct block_list **tbl, enum send_target *target);
+typedef void (*HPMHOOK_post_clif_hat_effect) (struct block_list *bl, struct block_list *tbl, enum send_target target);
+typedef void (*HPMHOOK_pre_clif_hat_effect_single) (struct block_list **bl, uint16 *effectId, bool *enable);
+typedef void (*HPMHOOK_post_clif_hat_effect_single) (struct block_list *bl, uint16 effectId, bool enable);
+typedef void (*HPMHOOK_pre_clif_overweight_percent) (struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_overweight_percent) (struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_pChangeDress) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pChangeDress) (int fd, struct map_session_data *sd);
+typedef bool (*HPMHOOK_pre_clif_pAttendanceDB) (void);
+typedef bool (*HPMHOOK_post_clif_pAttendanceDB) (bool retVal___);
+typedef bool (*HPMHOOK_pre_clif_attendancedb_libconfig_sub) (struct config_setting_t **it, int *n, const char **source);
+typedef bool (*HPMHOOK_post_clif_attendancedb_libconfig_sub) (bool retVal___, struct config_setting_t *it, int n, const char *source);
+typedef bool (*HPMHOOK_pre_clif_attendance_timediff) (struct map_session_data **sd);
+typedef bool (*HPMHOOK_post_clif_attendance_timediff) (bool retVal___, struct map_session_data *sd);
+typedef time_t (*HPMHOOK_pre_clif_attendance_getendtime) (void);
+typedef time_t (*HPMHOOK_post_clif_attendance_getendtime) (time_t retVal___);
+typedef void (*HPMHOOK_pre_clif_pOpenUIRequest) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pOpenUIRequest) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_open_ui) (struct map_session_data **sd, enum cz_ui_types *uiType);
+typedef void (*HPMHOOK_post_clif_open_ui) (struct map_session_data *sd, enum cz_ui_types uiType);
+typedef void (*HPMHOOK_pre_clif_pAttendanceRewardRequest) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pAttendanceRewardRequest) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_ui_action) (struct map_session_data **sd, int32 *UIType, int32 *data);
+typedef void (*HPMHOOK_post_clif_ui_action) (struct map_session_data *sd, int32 UIType, int32 data);
+typedef void (*HPMHOOK_pre_clif_pPrivateAirshipRequest) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pPrivateAirshipRequest) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_PrivateAirshipResponse) (struct map_session_data **sd, uint32 *flag);
+typedef void (*HPMHOOK_post_clif_PrivateAirshipResponse) (struct map_session_data *sd, uint32 flag);
+typedef void (*HPMHOOK_pre_clif_stylist_vector_init) (void);
+typedef void (*HPMHOOK_post_clif_stylist_vector_init) (void);
+typedef void (*HPMHOOK_pre_clif_stylist_vector_clear) (void);
+typedef void (*HPMHOOK_post_clif_stylist_vector_clear) (void);
+typedef bool (*HPMHOOK_pre_clif_stylist_read_db_libconfig) (void);
+typedef bool (*HPMHOOK_post_clif_stylist_read_db_libconfig) (bool retVal___);
+typedef bool (*HPMHOOK_pre_clif_stylist_read_db_libconfig_sub) (struct config_setting_t **it, int *idx, const char **source);
+typedef bool (*HPMHOOK_post_clif_stylist_read_db_libconfig_sub) (bool retVal___, struct config_setting_t *it, int idx, const char *source);
+typedef bool (*HPMHOOK_pre_clif_style_change_validate_requirements) (struct map_session_data **sd, int *type, int16 *idx);
+typedef bool (*HPMHOOK_post_clif_style_change_validate_requirements) (bool retVal___, struct map_session_data *sd, int type, int16 idx);
+typedef void (*HPMHOOK_pre_clif_stylist_send_rodexitem) (struct map_session_data **sd, int *itemid);
+typedef void (*HPMHOOK_post_clif_stylist_send_rodexitem) (struct map_session_data *sd, int itemid);
+typedef void (*HPMHOOK_pre_clif_pReqStyleChange) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pReqStyleChange) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_pReqStyleChange2) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pReqStyleChange2) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_cz_req_style_change_sub) (struct map_session_data **sd, int *type, int16 *idx, bool *isitem);
+typedef void (*HPMHOOK_post_clif_cz_req_style_change_sub) (struct map_session_data *sd, int type, int16 idx, bool isitem);
+typedef void (*HPMHOOK_pre_clif_style_change_response) (struct map_session_data **sd, enum stylist_shop *flag);
+typedef void (*HPMHOOK_post_clif_style_change_response) (struct map_session_data *sd, enum stylist_shop flag);
+typedef void (*HPMHOOK_pre_clif_pPetEvolution) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pPetEvolution) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_petEvolutionResult) (int *fd, enum pet_evolution_result *result);
+typedef void (*HPMHOOK_post_clif_petEvolutionResult) (int fd, enum pet_evolution_result result);
+typedef void (*HPMHOOK_pre_clif_party_dead_notification) (struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_party_dead_notification) (struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_pMemorialDungeonCommand) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pMemorialDungeonCommand) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_camera_showWindow) (struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_camera_showWindow) (struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_camera_change) (struct map_session_data **sd, float *range, float *rotation, float *latitude, enum send_target *target);
+typedef void (*HPMHOOK_post_clif_camera_change) (struct map_session_data *sd, float range, float rotation, float latitude, enum send_target target);
+typedef void (*HPMHOOK_pre_clif_pCameraInfo) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pCameraInfo) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_item_preview) (struct map_session_data **sd, int *n);
+typedef void (*HPMHOOK_post_clif_item_preview) (struct map_session_data *sd, int n);
+typedef bool (*HPMHOOK_pre_clif_enchant_equipment) (struct map_session_data **sd, enum equip_pos *pos, int *cardSlot, int *cardId);
+typedef bool (*HPMHOOK_post_clif_enchant_equipment) (bool retVal___, struct map_session_data *sd, enum equip_pos pos, int cardSlot, int cardId);
+typedef void (*HPMHOOK_pre_clif_pReqRemainTime) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pReqRemainTime) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_npc_barter_open) (struct map_session_data **sd, struct npc_data **nd);
+typedef void (*HPMHOOK_post_clif_npc_barter_open) (struct map_session_data *sd, struct npc_data *nd);
+typedef void (*HPMHOOK_pre_clif_pNPCBarterClosed) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pNPCBarterClosed) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_pNPCBarterPurchase) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pNPCBarterPurchase) (int fd, struct map_session_data *sd);
#endif // MAP_CLIF_H
#ifdef COMMON_CORE_H /* cmdline */
typedef void (*HPMHOOK_pre_cmdline_init) (void);
@@ -2452,8 +2880,8 @@ typedef int (*HPMHOOK_pre_guild_getindex) (const struct guild **g, int *account_
typedef int (*HPMHOOK_post_guild_getindex) (int retVal___, const struct guild *g, int account_id, int char_id);
typedef int (*HPMHOOK_pre_guild_getposition) (struct guild **g, struct map_session_data **sd);
typedef int (*HPMHOOK_post_guild_getposition) (int retVal___, struct guild *g, struct map_session_data *sd);
-typedef unsigned int (*HPMHOOK_pre_guild_payexp) (struct map_session_data **sd, unsigned int *exp);
-typedef unsigned int (*HPMHOOK_post_guild_payexp) (unsigned int retVal___, struct map_session_data *sd, unsigned int exp);
+typedef uint64 (*HPMHOOK_pre_guild_payexp) (struct map_session_data **sd, uint64 *exp);
+typedef uint64 (*HPMHOOK_post_guild_payexp) (uint64 retVal___, struct map_session_data *sd, uint64 exp);
typedef int (*HPMHOOK_pre_guild_getexp) (struct map_session_data **sd, int *exp);
typedef int (*HPMHOOK_post_guild_getexp) (int retVal___, struct map_session_data *sd, int exp);
typedef int (*HPMHOOK_pre_guild_create) (struct map_session_data **sd, const char **name);
@@ -2500,8 +2928,8 @@ typedef int (*HPMHOOK_pre_guild_check_alliance) (int *guild_id1, int *guild_id2,
typedef int (*HPMHOOK_post_guild_check_alliance) (int retVal___, int guild_id1, int guild_id2, int flag);
typedef int (*HPMHOOK_pre_guild_send_memberinfoshort) (struct map_session_data **sd, int *online);
typedef int (*HPMHOOK_post_guild_send_memberinfoshort) (int retVal___, struct map_session_data *sd, int online);
-typedef int (*HPMHOOK_pre_guild_recv_memberinfoshort) (int *guild_id, int *account_id, int *char_id, int *online, int *lv, int16 *class);
-typedef int (*HPMHOOK_post_guild_recv_memberinfoshort) (int retVal___, int guild_id, int account_id, int char_id, int online, int lv, int16 class);
+typedef int (*HPMHOOK_pre_guild_recv_memberinfoshort) (int *guild_id, int *account_id, int *char_id, int *online, int *lv, int16 *class, uint32 *last_login);
+typedef int (*HPMHOOK_post_guild_recv_memberinfoshort) (int retVal___, int guild_id, int account_id, int char_id, int online, int lv, int16 class, uint32 last_login);
typedef int (*HPMHOOK_pre_guild_change_memberposition) (int *guild_id, int *account_id, int *char_id, short *idx);
typedef int (*HPMHOOK_post_guild_change_memberposition) (int retVal___, int guild_id, int account_id, int char_id, short idx);
typedef int (*HPMHOOK_pre_guild_memberposition_changed) (struct guild **g, int *idx, int *pos);
@@ -2530,8 +2958,8 @@ typedef int (*HPMHOOK_pre_guild_dobreak) (struct map_session_data **sd, const ch
typedef int (*HPMHOOK_post_guild_dobreak) (int retVal___, struct map_session_data *sd, const char *name);
typedef int (*HPMHOOK_pre_guild_broken) (int *guild_id, int *flag);
typedef int (*HPMHOOK_post_guild_broken) (int retVal___, int guild_id, int flag);
-typedef int (*HPMHOOK_pre_guild_gm_change) (int *guild_id, struct map_session_data **sd);
-typedef int (*HPMHOOK_post_guild_gm_change) (int retVal___, int guild_id, struct map_session_data *sd);
+typedef int (*HPMHOOK_pre_guild_gm_change) (int *guild_id, int *char_id);
+typedef int (*HPMHOOK_post_guild_gm_change) (int retVal___, int guild_id, int char_id);
typedef int (*HPMHOOK_pre_guild_gm_changed) (int *guild_id, int *account_id, int *char_id);
typedef int (*HPMHOOK_post_guild_gm_changed) (int retVal___, int guild_id, int account_id, int char_id);
typedef void (*HPMHOOK_pre_guild_castle_map_init) (void);
@@ -2762,7 +3190,25 @@ typedef bool (*HPMHOOK_pre_instance_valid) (int *instance_id);
typedef bool (*HPMHOOK_post_instance_valid) (bool retVal___, int instance_id);
typedef int (*HPMHOOK_pre_instance_destroy_timer) (int *tid, int64 *tick, int *id, intptr_t *data);
typedef int (*HPMHOOK_post_instance_destroy_timer) (int retVal___, int tid, int64 tick, int id, intptr_t data);
+typedef void (*HPMHOOK_pre_instance_force_destroy) (struct map_session_data **sd);
+typedef void (*HPMHOOK_post_instance_force_destroy) (struct map_session_data *sd);
#endif // MAP_INSTANCE_H
+#ifdef CHAR_INT_ACHIEVEMENT_H /* inter_achievement */
+typedef int (*HPMHOOK_pre_inter_achievement_sql_init) (void);
+typedef int (*HPMHOOK_post_inter_achievement_sql_init) (int retVal___);
+typedef void (*HPMHOOK_pre_inter_achievement_sql_final) (void);
+typedef void (*HPMHOOK_post_inter_achievement_sql_final) (void);
+typedef int (*HPMHOOK_pre_inter_achievement_tosql) (int *char_id, struct char_achievements **cp, const struct char_achievements **p);
+typedef int (*HPMHOOK_post_inter_achievement_tosql) (int retVal___, int char_id, struct char_achievements *cp, const struct char_achievements *p);
+typedef bool (*HPMHOOK_pre_inter_achievement_fromsql) (int *char_id, struct char_achievements **a);
+typedef bool (*HPMHOOK_post_inter_achievement_fromsql) (bool retVal___, int char_id, struct char_achievements *a);
+typedef struct DBData (*HPMHOOK_pre_inter_achievement_ensure_char_achievements) (union DBKey *key, va_list args);
+typedef struct DBData (*HPMHOOK_post_inter_achievement_ensure_char_achievements) (struct DBData retVal___, union DBKey key, va_list args);
+typedef int (*HPMHOOK_pre_inter_achievement_char_achievements_clear) (union DBKey *key, struct DBData **data, va_list args);
+typedef int (*HPMHOOK_post_inter_achievement_char_achievements_clear) (int retVal___, union DBKey key, struct DBData *data, va_list args);
+typedef int (*HPMHOOK_pre_inter_achievement_parse_frommap) (int *fd);
+typedef int (*HPMHOOK_post_inter_achievement_parse_frommap) (int retVal___, int fd);
+#endif // CHAR_INT_ACHIEVEMENT_H
#ifdef CHAR_INT_AUCTION_H /* inter_auction */
typedef int (*HPMHOOK_pre_inter_auction_count) (int *char_id, bool *buy);
typedef int (*HPMHOOK_post_inter_auction_count) (int retVal___, int char_id, bool buy);
@@ -2783,6 +3229,14 @@ typedef int (*HPMHOOK_post_inter_auction_sql_init) (int retVal___);
typedef void (*HPMHOOK_pre_inter_auction_sql_final) (void);
typedef void (*HPMHOOK_post_inter_auction_sql_final) (void);
#endif // CHAR_INT_AUCTION_H
+#ifdef CHAR_INT_CLAN_H /* inter_clan */
+typedef int (*HPMHOOK_pre_inter_clan_kick_inactive_members) (int *clan_id, int *kick_interval);
+typedef int (*HPMHOOK_post_inter_clan_kick_inactive_members) (int retVal___, int clan_id, int kick_interval);
+typedef int (*HPMHOOK_pre_inter_clan_count_members) (int *clan_id, int *kick_interval);
+typedef int (*HPMHOOK_post_inter_clan_count_members) (int retVal___, int clan_id, int kick_interval);
+typedef int (*HPMHOOK_pre_inter_clan_parse_frommap) (int *fd);
+typedef int (*HPMHOOK_post_inter_clan_parse_frommap) (int retVal___, int fd);
+#endif // CHAR_INT_CLAN_H
#ifdef CHAR_INT_ELEMENTAL_H /* inter_elemental */
typedef void (*HPMHOOK_pre_inter_elemental_sql_init) (void);
typedef void (*HPMHOOK_post_inter_elemental_sql_init) (void);
@@ -2790,6 +3244,14 @@ typedef void (*HPMHOOK_pre_inter_elemental_sql_final) (void);
typedef void (*HPMHOOK_post_inter_elemental_sql_final) (void);
typedef int (*HPMHOOK_pre_inter_elemental_parse_frommap) (int *fd);
typedef int (*HPMHOOK_post_inter_elemental_parse_frommap) (int retVal___, int fd);
+typedef bool (*HPMHOOK_pre_inter_elemental_create) (struct s_elemental **ele);
+typedef bool (*HPMHOOK_post_inter_elemental_create) (bool retVal___, struct s_elemental *ele);
+typedef bool (*HPMHOOK_pre_inter_elemental_save) (const struct s_elemental **ele);
+typedef bool (*HPMHOOK_post_inter_elemental_save) (bool retVal___, const struct s_elemental *ele);
+typedef bool (*HPMHOOK_pre_inter_elemental_load) (int *ele_id, int *char_id, struct s_elemental **ele);
+typedef bool (*HPMHOOK_post_inter_elemental_load) (bool retVal___, int ele_id, int char_id, struct s_elemental *ele);
+typedef bool (*HPMHOOK_pre_inter_elemental_delete) (int *ele_id);
+typedef bool (*HPMHOOK_post_inter_elemental_delete) (bool retVal___, int ele_id);
#endif // CHAR_INT_ELEMENTAL_H
#ifdef CHAR_INT_GUILD_H /* inter_guild */
typedef int (*HPMHOOK_pre_inter_guild_save_timer) (int *tid, int64 *tick, int *id, intptr_t *data);
@@ -2832,10 +3294,38 @@ typedef int (*HPMHOOK_pre_inter_guild_charname_changed) (int *guild_id, int *acc
typedef int (*HPMHOOK_post_inter_guild_charname_changed) (int retVal___, int guild_id, int account_id, int char_id, char *name);
typedef int (*HPMHOOK_pre_inter_guild_parse_frommap) (int *fd);
typedef int (*HPMHOOK_post_inter_guild_parse_frommap) (int retVal___, int fd);
-typedef int (*HPMHOOK_pre_inter_guild_leave) (int *guild_id, int *account_id, int *char_id);
-typedef int (*HPMHOOK_post_inter_guild_leave) (int retVal___, int guild_id, int account_id, int char_id);
typedef int (*HPMHOOK_pre_inter_guild_broken) (int *guild_id);
typedef int (*HPMHOOK_post_inter_guild_broken) (int retVal___, int guild_id);
+typedef struct guild* (*HPMHOOK_pre_inter_guild_create) (const char **name, const struct guild_member **master);
+typedef struct guild* (*HPMHOOK_post_inter_guild_create) (struct guild* retVal___, const char *name, const struct guild_member *master);
+typedef bool (*HPMHOOK_pre_inter_guild_add_member) (int *guild_id, const struct guild_member **member, int *map_fd);
+typedef bool (*HPMHOOK_post_inter_guild_add_member) (bool retVal___, int guild_id, const struct guild_member *member, int map_fd);
+typedef bool (*HPMHOOK_pre_inter_guild_leave) (int *guild_id, int *account_id, int *char_id, int *flag, const char **mes, int *map_fd);
+typedef bool (*HPMHOOK_post_inter_guild_leave) (bool retVal___, int guild_id, int account_id, int char_id, int flag, const char *mes, int map_fd);
+typedef bool (*HPMHOOK_pre_inter_guild_update_member_info_short) (int *guild_id, int *account_id, int *char_id, int *online, int *lv, int16 *class);
+typedef bool (*HPMHOOK_post_inter_guild_update_member_info_short) (bool retVal___, int guild_id, int account_id, int char_id, int online, int lv, int16 class);
+typedef bool (*HPMHOOK_pre_inter_guild_update_member_info) (int *guild_id, int *account_id, int *char_id, int *type, const char **data, int *len);
+typedef bool (*HPMHOOK_post_inter_guild_update_member_info) (bool retVal___, int guild_id, int account_id, int char_id, int type, const char *data, int len);
+typedef bool (*HPMHOOK_pre_inter_guild_disband) (int *guild_id);
+typedef bool (*HPMHOOK_post_inter_guild_disband) (bool retVal___, int guild_id);
+typedef bool (*HPMHOOK_pre_inter_guild_update_basic_info) (int *guild_id, int *type, const void **data, int *len);
+typedef bool (*HPMHOOK_post_inter_guild_update_basic_info) (bool retVal___, int guild_id, int type, const void *data, int len);
+typedef bool (*HPMHOOK_pre_inter_guild_update_position) (int *guild_id, int *idx, const struct guild_position **p);
+typedef bool (*HPMHOOK_post_inter_guild_update_position) (bool retVal___, int guild_id, int idx, const struct guild_position *p);
+typedef bool (*HPMHOOK_pre_inter_guild_use_skill_point) (int *guild_id, uint16 *skill_id, int *account_id, int *max);
+typedef bool (*HPMHOOK_post_inter_guild_use_skill_point) (bool retVal___, int guild_id, uint16 skill_id, int account_id, int max);
+typedef bool (*HPMHOOK_pre_inter_guild_remove_alliance) (struct guild **g, int *guild_id, int *account_id1, int *account_id2, int *flag);
+typedef bool (*HPMHOOK_post_inter_guild_remove_alliance) (bool retVal___, struct guild *g, int guild_id, int account_id1, int account_id2, int flag);
+typedef bool (*HPMHOOK_pre_inter_guild_change_alliance) (int *guild_id1, int *guild_id2, int *account_id1, int *account_id2, int *flag);
+typedef bool (*HPMHOOK_post_inter_guild_change_alliance) (bool retVal___, int guild_id1, int guild_id2, int account_id1, int account_id2, int flag);
+typedef bool (*HPMHOOK_pre_inter_guild_update_notice) (int *guild_id, const char **mes1, const char **mes2);
+typedef bool (*HPMHOOK_post_inter_guild_update_notice) (bool retVal___, int guild_id, const char *mes1, const char *mes2);
+typedef bool (*HPMHOOK_pre_inter_guild_update_emblem) (int *len, int *guild_id, const char **data);
+typedef bool (*HPMHOOK_post_inter_guild_update_emblem) (bool retVal___, int len, int guild_id, const char *data);
+typedef bool (*HPMHOOK_pre_inter_guild_update_castle_data) (int *castle_id, int *index, int *value);
+typedef bool (*HPMHOOK_post_inter_guild_update_castle_data) (bool retVal___, int castle_id, int index, int value);
+typedef bool (*HPMHOOK_pre_inter_guild_change_leader) (int *guild_id, const char **name, int *len);
+typedef bool (*HPMHOOK_post_inter_guild_change_leader) (bool retVal___, int guild_id, const char *name, int len);
#endif // CHAR_INT_GUILD_H
#ifdef CHAR_INT_HOMUN_H /* inter_homunculus */
typedef int (*HPMHOOK_pre_inter_homunculus_sql_init) (void);
@@ -2844,6 +3334,16 @@ typedef void (*HPMHOOK_pre_inter_homunculus_sql_final) (void);
typedef void (*HPMHOOK_post_inter_homunculus_sql_final) (void);
typedef int (*HPMHOOK_pre_inter_homunculus_parse_frommap) (int *fd);
typedef int (*HPMHOOK_post_inter_homunculus_parse_frommap) (int retVal___, int fd);
+typedef bool (*HPMHOOK_pre_inter_homunculus_create) (struct s_homunculus **hd);
+typedef bool (*HPMHOOK_post_inter_homunculus_create) (bool retVal___, struct s_homunculus *hd);
+typedef bool (*HPMHOOK_pre_inter_homunculus_save) (const struct s_homunculus **hd);
+typedef bool (*HPMHOOK_post_inter_homunculus_save) (bool retVal___, const struct s_homunculus *hd);
+typedef bool (*HPMHOOK_pre_inter_homunculus_load) (int *homun_id, struct s_homunculus **hd);
+typedef bool (*HPMHOOK_post_inter_homunculus_load) (bool retVal___, int homun_id, struct s_homunculus *hd);
+typedef bool (*HPMHOOK_pre_inter_homunculus_delete) (int *homun_id);
+typedef bool (*HPMHOOK_post_inter_homunculus_delete) (bool retVal___, int homun_id);
+typedef bool (*HPMHOOK_pre_inter_homunculus_rename) (const char **name);
+typedef bool (*HPMHOOK_post_inter_homunculus_rename) (bool retVal___, const char *name);
#endif // CHAR_INT_HOMUN_H
#ifdef CHAR_INTER_H /* inter */
typedef const char* (*HPMHOOK_pre_inter_msg_txt) (int *msg_number);
@@ -2882,6 +3382,16 @@ typedef bool (*HPMHOOK_pre_inter_config_read_log) (const char **filename, const
typedef bool (*HPMHOOK_post_inter_config_read_log) (bool retVal___, const char *filename, const struct config_t *config, bool imported);
typedef bool (*HPMHOOK_pre_inter_config_read_connection) (const char **filename, const struct config_t **config, bool *imported);
typedef bool (*HPMHOOK_post_inter_config_read_connection) (bool retVal___, const char *filename, const struct config_t *config, bool imported);
+typedef void (*HPMHOOK_pre_inter_accinfo) (int *u_fd, int *aid, int *castergroup, const char **query, int *map_fd);
+typedef void (*HPMHOOK_post_inter_accinfo) (int u_fd, int aid, int castergroup, const char *query, int map_fd);
+typedef void (*HPMHOOK_pre_inter_accinfo2) (bool *success, int *map_fd, int *u_fd, int *u_aid, int *account_id, const char **userid, const char **user_pass, const char **email, const char **last_ip, const char **lastlogin, const char **pin_code, const char **birthdate, int *group_id, int *logincount, int *state);
+typedef void (*HPMHOOK_post_inter_accinfo2) (bool success, int map_fd, int u_fd, int u_aid, int account_id, const char *userid, const char *user_pass, const char *email, const char *last_ip, const char *lastlogin, const char *pin_code, const char *birthdate, int group_id, int logincount, int state);
+typedef struct WisData* (*HPMHOOK_pre_inter_add_wisdata) (int *fd, const unsigned char **src, const unsigned char **dst, const unsigned char **msg, int *msg_len);
+typedef struct WisData* (*HPMHOOK_post_inter_add_wisdata) (struct WisData* retVal___, int fd, const unsigned char *src, const unsigned char *dst, const unsigned char *msg, int msg_len);
+typedef struct WisData* (*HPMHOOK_pre_inter_get_wisdata) (int *id);
+typedef struct WisData* (*HPMHOOK_post_inter_get_wisdata) (struct WisData* retVal___, int id);
+typedef void (*HPMHOOK_pre_inter_remove_wisdata) (int *id);
+typedef void (*HPMHOOK_post_inter_remove_wisdata) (int id);
#endif // CHAR_INTER_H
#ifdef CHAR_INT_MAIL_H /* inter_mail */
typedef int (*HPMHOOK_pre_inter_mail_sql_init) (void);
@@ -2900,6 +3410,16 @@ typedef bool (*HPMHOOK_pre_inter_mail_DeleteAttach) (int *mail_id);
typedef bool (*HPMHOOK_post_inter_mail_DeleteAttach) (bool retVal___, int mail_id);
typedef void (*HPMHOOK_pre_inter_mail_sendmail) (int *send_id, const char **send_name, int *dest_id, const char **dest_name, const char **title, const char **body, int *zeny, struct item **item);
typedef void (*HPMHOOK_post_inter_mail_sendmail) (int send_id, const char *send_name, int dest_id, const char *dest_name, const char *title, const char *body, int zeny, struct item *item);
+typedef bool (*HPMHOOK_pre_inter_mail_mark_read) (int *mail_id);
+typedef bool (*HPMHOOK_post_inter_mail_mark_read) (bool retVal___, int mail_id);
+typedef bool (*HPMHOOK_pre_inter_mail_get_attachment) (int *char_id, int *mail_id, struct mail_message **msg);
+typedef bool (*HPMHOOK_post_inter_mail_get_attachment) (bool retVal___, int char_id, int mail_id, struct mail_message *msg);
+typedef bool (*HPMHOOK_pre_inter_mail_delete) (int *char_id, int *mail_id);
+typedef bool (*HPMHOOK_post_inter_mail_delete) (bool retVal___, int char_id, int mail_id);
+typedef bool (*HPMHOOK_pre_inter_mail_return_message) (int *char_id, int *mail_id, int **new_mail);
+typedef bool (*HPMHOOK_post_inter_mail_return_message) (bool retVal___, int char_id, int mail_id, int *new_mail);
+typedef bool (*HPMHOOK_pre_inter_mail_send) (int *account_id, struct mail_message **msg);
+typedef bool (*HPMHOOK_post_inter_mail_send) (bool retVal___, int account_id, struct mail_message *msg);
#endif // CHAR_INT_MAIL_H
#ifdef CHAR_INT_MERCENARY_H /* inter_mercenary */
typedef bool (*HPMHOOK_pre_inter_mercenary_owner_fromsql) (int *char_id, struct mmo_charstatus **status);
@@ -2914,6 +3434,14 @@ typedef void (*HPMHOOK_pre_inter_mercenary_sql_final) (void);
typedef void (*HPMHOOK_post_inter_mercenary_sql_final) (void);
typedef int (*HPMHOOK_pre_inter_mercenary_parse_frommap) (int *fd);
typedef int (*HPMHOOK_post_inter_mercenary_parse_frommap) (int retVal___, int fd);
+typedef bool (*HPMHOOK_pre_inter_mercenary_create) (struct s_mercenary **merc);
+typedef bool (*HPMHOOK_post_inter_mercenary_create) (bool retVal___, struct s_mercenary *merc);
+typedef bool (*HPMHOOK_pre_inter_mercenary_save) (const struct s_mercenary **merc);
+typedef bool (*HPMHOOK_post_inter_mercenary_save) (bool retVal___, const struct s_mercenary *merc);
+typedef bool (*HPMHOOK_pre_inter_mercenary_load) (int *merc_id, int *char_id, struct s_mercenary **merc);
+typedef bool (*HPMHOOK_post_inter_mercenary_load) (bool retVal___, int merc_id, int char_id, struct s_mercenary *merc);
+typedef bool (*HPMHOOK_pre_inter_mercenary_delete) (int *merc_id);
+typedef bool (*HPMHOOK_post_inter_mercenary_delete) (bool retVal___, int merc_id);
#endif // CHAR_INT_MERCENARY_H
#ifdef CHAR_INT_PARTY_H /* inter_party */
typedef int (*HPMHOOK_pre_inter_party_check_lv) (struct party_data **p);
@@ -2936,12 +3464,24 @@ typedef int (*HPMHOOK_pre_inter_party_check_empty) (struct party_data **p);
typedef int (*HPMHOOK_post_inter_party_check_empty) (int retVal___, struct party_data *p);
typedef int (*HPMHOOK_pre_inter_party_parse_frommap) (int *fd);
typedef int (*HPMHOOK_post_inter_party_parse_frommap) (int retVal___, int fd);
-typedef int (*HPMHOOK_pre_inter_party_leave) (int *party_id, int *account_id, int *char_id);
-typedef int (*HPMHOOK_post_inter_party_leave) (int retVal___, int party_id, int account_id, int char_id);
+typedef bool (*HPMHOOK_pre_inter_party_leave) (int *party_id, int *account_id, int *char_id);
+typedef bool (*HPMHOOK_post_inter_party_leave) (bool retVal___, int party_id, int account_id, int char_id);
typedef int (*HPMHOOK_pre_inter_party_CharOnline) (int *char_id, int *party_id);
typedef int (*HPMHOOK_post_inter_party_CharOnline) (int retVal___, int char_id, int party_id);
typedef int (*HPMHOOK_pre_inter_party_CharOffline) (int *char_id, int *party_id);
typedef int (*HPMHOOK_post_inter_party_CharOffline) (int retVal___, int char_id, int party_id);
+typedef struct party_data* (*HPMHOOK_pre_inter_party_create) (const char **name, int *item, int *item2, const struct party_member **leader);
+typedef struct party_data* (*HPMHOOK_post_inter_party_create) (struct party_data* retVal___, const char *name, int item, int item2, const struct party_member *leader);
+typedef bool (*HPMHOOK_pre_inter_party_add_member) (int *party_id, const struct party_member **member);
+typedef bool (*HPMHOOK_post_inter_party_add_member) (bool retVal___, int party_id, const struct party_member *member);
+typedef bool (*HPMHOOK_pre_inter_party_change_option) (int *party_id, int *account_id, int *exp, int *item, int *map_fd);
+typedef bool (*HPMHOOK_post_inter_party_change_option) (bool retVal___, int party_id, int account_id, int exp, int item, int map_fd);
+typedef bool (*HPMHOOK_pre_inter_party_change_map) (int *party_id, int *account_id, int *char_id, unsigned short *map, int *online, unsigned int *lv);
+typedef bool (*HPMHOOK_post_inter_party_change_map) (bool retVal___, int party_id, int account_id, int char_id, unsigned short map, int online, unsigned int lv);
+typedef bool (*HPMHOOK_pre_inter_party_disband) (int *party_id);
+typedef bool (*HPMHOOK_post_inter_party_disband) (bool retVal___, int party_id);
+typedef bool (*HPMHOOK_pre_inter_party_change_leader) (int *party_id, int *account_id, int *char_id);
+typedef bool (*HPMHOOK_post_inter_party_change_leader) (bool retVal___, int party_id, int account_id, int char_id);
#endif // CHAR_INT_PARTY_H
#ifdef CHAR_INT_PET_H /* inter_pet */
typedef int (*HPMHOOK_pre_inter_pet_tosql) (const struct s_pet **p);
@@ -2956,18 +3496,50 @@ typedef int (*HPMHOOK_pre_inter_pet_delete_) (int *pet_id);
typedef int (*HPMHOOK_post_inter_pet_delete_) (int retVal___, int pet_id);
typedef int (*HPMHOOK_pre_inter_pet_parse_frommap) (int *fd);
typedef int (*HPMHOOK_post_inter_pet_parse_frommap) (int retVal___, int fd);
+typedef struct s_pet* (*HPMHOOK_pre_inter_pet_create) (int *account_id, int *char_id, short *pet_class, short *pet_lv, int *pet_egg_id, int *pet_equip, short *intimate, short *hungry, char *rename_flag, char *incubate, const char **pet_name);
+typedef struct s_pet* (*HPMHOOK_post_inter_pet_create) (struct s_pet* retVal___, int account_id, int char_id, short pet_class, short pet_lv, int pet_egg_id, int pet_equip, short intimate, short hungry, char rename_flag, char incubate, const char *pet_name);
+typedef struct s_pet* (*HPMHOOK_pre_inter_pet_load) (int *account_id, int *char_id, int *pet_id);
+typedef struct s_pet* (*HPMHOOK_post_inter_pet_load) (struct s_pet* retVal___, int account_id, int char_id, int pet_id);
#endif // CHAR_INT_PET_H
#ifdef CHAR_INT_QUEST_H /* inter_quest */
typedef int (*HPMHOOK_pre_inter_quest_parse_frommap) (int *fd);
typedef int (*HPMHOOK_post_inter_quest_parse_frommap) (int retVal___, int fd);
+typedef struct quest* (*HPMHOOK_pre_inter_quest_fromsql) (int *char_id, int **count);
+typedef struct quest* (*HPMHOOK_post_inter_quest_fromsql) (struct quest* retVal___, int char_id, int *count);
+typedef bool (*HPMHOOK_pre_inter_quest_delete) (int *char_id, int *quest_id);
+typedef bool (*HPMHOOK_post_inter_quest_delete) (bool retVal___, int char_id, int quest_id);
+typedef bool (*HPMHOOK_pre_inter_quest_add) (int *char_id, struct quest *qd);
+typedef bool (*HPMHOOK_post_inter_quest_add) (bool retVal___, int char_id, struct quest qd);
+typedef bool (*HPMHOOK_pre_inter_quest_update) (int *char_id, struct quest *qd);
+typedef bool (*HPMHOOK_post_inter_quest_update) (bool retVal___, int char_id, struct quest qd);
+typedef bool (*HPMHOOK_pre_inter_quest_save) (int *char_id, const struct quest **new_qd, int *new_n);
+typedef bool (*HPMHOOK_post_inter_quest_save) (bool retVal___, int char_id, const struct quest *new_qd, int new_n);
#endif // CHAR_INT_QUEST_H
+#ifdef CHAR_INT_RODEX_H /* inter_rodex */
+typedef int (*HPMHOOK_pre_inter_rodex_sql_init) (void);
+typedef int (*HPMHOOK_post_inter_rodex_sql_init) (int retVal___);
+typedef void (*HPMHOOK_pre_inter_rodex_sql_final) (void);
+typedef void (*HPMHOOK_post_inter_rodex_sql_final) (void);
+typedef int (*HPMHOOK_pre_inter_rodex_parse_frommap) (int *fd);
+typedef int (*HPMHOOK_post_inter_rodex_parse_frommap) (int retVal___, int fd);
+typedef int (*HPMHOOK_pre_inter_rodex_fromsql) (int *char_id, int *account_id, int8 *opentype, int64 *mail_id, struct rodex_maillist **mails);
+typedef int (*HPMHOOK_post_inter_rodex_fromsql) (int retVal___, int char_id, int account_id, int8 opentype, int64 mail_id, struct rodex_maillist *mails);
+typedef bool (*HPMHOOK_pre_inter_rodex_hasnew) (int *char_id, int *account_id);
+typedef bool (*HPMHOOK_post_inter_rodex_hasnew) (bool retVal___, int char_id, int account_id);
+typedef bool (*HPMHOOK_pre_inter_rodex_checkname) (const char **name, int **target_char_id, short **target_class, int **target_level);
+typedef bool (*HPMHOOK_post_inter_rodex_checkname) (bool retVal___, const char *name, int *target_char_id, short *target_class, int *target_level);
+typedef int64 (*HPMHOOK_pre_inter_rodex_savemessage) (struct rodex_message **msg);
+typedef int64 (*HPMHOOK_post_inter_rodex_savemessage) (int64 retVal___, struct rodex_message *msg);
+typedef bool (*HPMHOOK_pre_inter_rodex_updatemail) (int64 *mail_id, int8 *flag);
+typedef bool (*HPMHOOK_post_inter_rodex_updatemail) (bool retVal___, int64 mail_id, int8 flag);
+#endif // CHAR_INT_RODEX_H
#ifdef CHAR_INT_STORAGE_H /* inter_storage */
-typedef int (*HPMHOOK_pre_inter_storage_tosql) (int *account_id, struct storage_data **p);
-typedef int (*HPMHOOK_post_inter_storage_tosql) (int retVal___, int account_id, struct storage_data *p);
+typedef int (*HPMHOOK_pre_inter_storage_tosql) (int *account_id, const struct storage_data **p);
+typedef int (*HPMHOOK_post_inter_storage_tosql) (int retVal___, int account_id, const struct storage_data *p);
typedef int (*HPMHOOK_pre_inter_storage_fromsql) (int *account_id, struct storage_data **p);
typedef int (*HPMHOOK_post_inter_storage_fromsql) (int retVal___, int account_id, struct storage_data *p);
-typedef int (*HPMHOOK_pre_inter_storage_guild_storage_tosql) (int *guild_id, const struct guild_storage **p);
-typedef int (*HPMHOOK_post_inter_storage_guild_storage_tosql) (int retVal___, int guild_id, const struct guild_storage *p);
+typedef bool (*HPMHOOK_pre_inter_storage_guild_storage_tosql) (int *guild_id, const struct guild_storage **p);
+typedef bool (*HPMHOOK_post_inter_storage_guild_storage_tosql) (bool retVal___, int guild_id, const struct guild_storage *p);
typedef int (*HPMHOOK_pre_inter_storage_guild_storage_fromsql) (int *guild_id, struct guild_storage **p);
typedef int (*HPMHOOK_post_inter_storage_guild_storage_fromsql) (int retVal___, int guild_id, struct guild_storage *p);
typedef int (*HPMHOOK_pre_inter_storage_sql_init) (void);
@@ -2980,12 +3552,14 @@ typedef int (*HPMHOOK_pre_inter_storage_guild_storage_delete) (int *guild_id);
typedef int (*HPMHOOK_post_inter_storage_guild_storage_delete) (int retVal___, int guild_id);
typedef int (*HPMHOOK_pre_inter_storage_parse_frommap) (int *fd);
typedef int (*HPMHOOK_post_inter_storage_parse_frommap) (int retVal___, int fd);
+typedef bool (*HPMHOOK_pre_inter_storage_retrieve_bound_items) (int *char_id, int *account_id, int *guild_id);
+typedef bool (*HPMHOOK_post_inter_storage_retrieve_bound_items) (bool retVal___, int char_id, int account_id, int guild_id);
#endif // CHAR_INT_STORAGE_H
#ifdef MAP_INTIF_H /* intif */
typedef int (*HPMHOOK_pre_intif_parse) (int *fd);
typedef int (*HPMHOOK_post_intif_parse) (int retVal___, int fd);
-typedef int (*HPMHOOK_pre_intif_create_pet) (int *account_id, int *char_id, short *pet_type, short *pet_lv, short *pet_egg_id, short *pet_equip, short *intimate, short *hungry, char *rename_flag, char *incubate, char **pet_name);
-typedef int (*HPMHOOK_post_intif_create_pet) (int retVal___, int account_id, int char_id, short pet_type, short pet_lv, short pet_egg_id, short pet_equip, short intimate, short hungry, char rename_flag, char incubate, char *pet_name);
+typedef int (*HPMHOOK_pre_intif_create_pet) (int *account_id, int *char_id, short *pet_type, short *pet_lv, int *pet_egg_id, int *pet_equip, short *intimate, short *hungry, char *rename_flag, char *incubate, char **pet_name);
+typedef int (*HPMHOOK_post_intif_create_pet) (int retVal___, int account_id, int char_id, short pet_type, short pet_lv, int pet_egg_id, int pet_equip, short intimate, short hungry, char rename_flag, char incubate, char *pet_name);
typedef int (*HPMHOOK_pre_intif_broadcast) (const char **mes, int *len, int *type);
typedef int (*HPMHOOK_post_intif_broadcast) (int retVal___, const char *mes, int len, int type);
typedef int (*HPMHOOK_pre_intif_broadcast2) (const char **mes, int *len, unsigned int *fontColor, short *fontType, short *fontSize, short *fontAlign, short *fontY);
@@ -3000,6 +3574,10 @@ typedef int (*HPMHOOK_pre_intif_saveregistry) (struct map_session_data **sd);
typedef int (*HPMHOOK_post_intif_saveregistry) (int retVal___, struct map_session_data *sd);
typedef int (*HPMHOOK_pre_intif_request_registry) (struct map_session_data **sd, int *flag);
typedef int (*HPMHOOK_post_intif_request_registry) (int retVal___, struct map_session_data *sd, int flag);
+typedef void (*HPMHOOK_pre_intif_request_account_storage) (const struct map_session_data **sd);
+typedef void (*HPMHOOK_post_intif_request_account_storage) (const struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_intif_send_account_storage) (struct map_session_data **sd);
+typedef void (*HPMHOOK_post_intif_send_account_storage) (struct map_session_data *sd);
typedef int (*HPMHOOK_pre_intif_request_guild_storage) (int *account_id, int *guild_id);
typedef int (*HPMHOOK_post_intif_request_guild_storage) (int retVal___, int account_id, int guild_id);
typedef int (*HPMHOOK_pre_intif_send_guild_storage) (int *account_id, struct guild_storage **gstor);
@@ -3116,10 +3694,28 @@ typedef int (*HPMHOOK_pre_intif_elemental_delete) (int *ele_id);
typedef int (*HPMHOOK_post_intif_elemental_delete) (int retVal___, int ele_id);
typedef int (*HPMHOOK_pre_intif_elemental_save) (struct s_elemental **ele);
typedef int (*HPMHOOK_post_intif_elemental_save) (int retVal___, struct s_elemental *ele);
+typedef int (*HPMHOOK_pre_intif_rodex_requestinbox) (int *char_id, int *account_id, int8 *flag, int8 *opentype, int64 *mail_id);
+typedef int (*HPMHOOK_post_intif_rodex_requestinbox) (int retVal___, int char_id, int account_id, int8 flag, int8 opentype, int64 mail_id);
+typedef int (*HPMHOOK_pre_intif_rodex_checkhasnew) (struct map_session_data **sd);
+typedef int (*HPMHOOK_post_intif_rodex_checkhasnew) (int retVal___, struct map_session_data *sd);
+typedef int (*HPMHOOK_pre_intif_rodex_updatemail) (int64 *mail_id, int8 *flag);
+typedef int (*HPMHOOK_post_intif_rodex_updatemail) (int retVal___, int64 mail_id, int8 flag);
+typedef int (*HPMHOOK_pre_intif_rodex_sendmail) (struct rodex_message **msg);
+typedef int (*HPMHOOK_post_intif_rodex_sendmail) (int retVal___, struct rodex_message *msg);
+typedef int (*HPMHOOK_pre_intif_rodex_checkname) (struct map_session_data **sd, const char **name);
+typedef int (*HPMHOOK_post_intif_rodex_checkname) (int retVal___, struct map_session_data *sd, const char *name);
+typedef int (*HPMHOOK_pre_intif_clan_kickoffline) (int *clan_id, int *kick_interval);
+typedef int (*HPMHOOK_post_intif_clan_kickoffline) (int retVal___, int clan_id, int kick_interval);
+typedef int (*HPMHOOK_pre_intif_clan_membercount) (int *clan_id, int *kick_interval);
+typedef int (*HPMHOOK_post_intif_clan_membercount) (int retVal___, int clan_id, int kick_interval);
typedef void (*HPMHOOK_pre_intif_request_accinfo) (int *u_fd, int *aid, int *group_lv, char **query);
typedef void (*HPMHOOK_post_intif_request_accinfo) (int u_fd, int aid, int group_lv, char *query);
typedef int (*HPMHOOK_pre_intif_CheckForCharServer) (void);
typedef int (*HPMHOOK_post_intif_CheckForCharServer) (int retVal___);
+typedef void (*HPMHOOK_pre_intif_achievements_request) (struct map_session_data **sd);
+typedef void (*HPMHOOK_post_intif_achievements_request) (struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_intif_achievements_save) (struct map_session_data **sd);
+typedef void (*HPMHOOK_post_intif_achievements_save) (struct map_session_data *sd);
typedef void (*HPMHOOK_pre_intif_pWisMessage) (int *fd);
typedef void (*HPMHOOK_post_intif_pWisMessage) (int fd);
typedef void (*HPMHOOK_pre_intif_pWisEnd) (int *fd);
@@ -3130,10 +3726,14 @@ typedef void (*HPMHOOK_pre_intif_pWisToGM) (int *fd);
typedef void (*HPMHOOK_post_intif_pWisToGM) (int fd);
typedef void (*HPMHOOK_pre_intif_pRegisters) (int *fd);
typedef void (*HPMHOOK_post_intif_pRegisters) (int fd);
+typedef void (*HPMHOOK_pre_intif_pAccountStorage) (int *fd);
+typedef void (*HPMHOOK_post_intif_pAccountStorage) (int fd);
typedef void (*HPMHOOK_pre_intif_pChangeNameOk) (int *fd);
typedef void (*HPMHOOK_post_intif_pChangeNameOk) (int fd);
typedef void (*HPMHOOK_pre_intif_pMessageToFD) (int *fd);
typedef void (*HPMHOOK_post_intif_pMessageToFD) (int fd);
+typedef void (*HPMHOOK_pre_intif_pAccountStorageSaveAck) (int *fd);
+typedef void (*HPMHOOK_post_intif_pAccountStorageSaveAck) (int fd);
typedef void (*HPMHOOK_pre_intif_pLoadGuildStorage) (int *fd);
typedef void (*HPMHOOK_post_intif_pLoadGuildStorage) (int fd);
typedef void (*HPMHOOK_pre_intif_pSaveGuildStorage) (int *fd);
@@ -3244,7 +3844,39 @@ typedef void (*HPMHOOK_pre_intif_pSaveHomunculusOk) (int *fd);
typedef void (*HPMHOOK_post_intif_pSaveHomunculusOk) (int fd);
typedef void (*HPMHOOK_pre_intif_pDeleteHomunculusOk) (int *fd);
typedef void (*HPMHOOK_post_intif_pDeleteHomunculusOk) (int fd);
+typedef void (*HPMHOOK_pre_intif_pRequestRodexOpenInbox) (int *fd);
+typedef void (*HPMHOOK_post_intif_pRequestRodexOpenInbox) (int fd);
+typedef void (*HPMHOOK_pre_intif_pRodexHasNew) (int *fd);
+typedef void (*HPMHOOK_post_intif_pRodexHasNew) (int fd);
+typedef void (*HPMHOOK_pre_intif_pRodexSendMail) (int *fd);
+typedef void (*HPMHOOK_post_intif_pRodexSendMail) (int fd);
+typedef void (*HPMHOOK_pre_intif_pRodexCheckName) (int *fd);
+typedef void (*HPMHOOK_post_intif_pRodexCheckName) (int fd);
+typedef void (*HPMHOOK_pre_intif_pRecvClanMemberAction) (int *fd);
+typedef void (*HPMHOOK_post_intif_pRecvClanMemberAction) (int fd);
+typedef void (*HPMHOOK_pre_intif_pAchievementsLoad) (int *fd);
+typedef void (*HPMHOOK_post_intif_pAchievementsLoad) (int fd);
#endif // MAP_INTIF_H
+#ifdef LOGIN_IPBAN_H /* ipban */
+typedef void (*HPMHOOK_pre_ipban_init) (void);
+typedef void (*HPMHOOK_post_ipban_init) (void);
+typedef void (*HPMHOOK_pre_ipban_final) (void);
+typedef void (*HPMHOOK_post_ipban_final) (void);
+typedef int (*HPMHOOK_pre_ipban_cleanup) (int *tid, int64 *tick, int *id, intptr_t *data);
+typedef int (*HPMHOOK_post_ipban_cleanup) (int retVal___, int tid, int64 tick, int id, intptr_t data);
+typedef bool (*HPMHOOK_pre_ipban_config_read_inter) (const char **filename, bool *imported);
+typedef bool (*HPMHOOK_post_ipban_config_read_inter) (bool retVal___, const char *filename, bool imported);
+typedef bool (*HPMHOOK_pre_ipban_config_read_connection) (const char **filename, struct config_t **config, bool *imported);
+typedef bool (*HPMHOOK_post_ipban_config_read_connection) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+typedef bool (*HPMHOOK_pre_ipban_config_read_dynamic) (const char **filename, struct config_t **config, bool *imported);
+typedef bool (*HPMHOOK_post_ipban_config_read_dynamic) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+typedef bool (*HPMHOOK_pre_ipban_config_read) (const char **filename, struct config_t **config, bool *imported);
+typedef bool (*HPMHOOK_post_ipban_config_read) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+typedef bool (*HPMHOOK_pre_ipban_check) (uint32 *ip);
+typedef bool (*HPMHOOK_post_ipban_check) (bool retVal___, uint32 ip);
+typedef void (*HPMHOOK_pre_ipban_log) (uint32 *ip);
+typedef void (*HPMHOOK_post_ipban_log) (uint32 ip);
+#endif // LOGIN_IPBAN_H
#ifdef MAP_IRC_BOT_H /* ircbot */
typedef void (*HPMHOOK_pre_ircbot_init) (bool *minimal);
typedef void (*HPMHOOK_post_ircbot_init) (bool minimal);
@@ -3300,6 +3932,8 @@ typedef void (*HPMHOOK_pre_itemdb_read_chains) (void);
typedef void (*HPMHOOK_post_itemdb_read_chains) (void);
typedef void (*HPMHOOK_pre_itemdb_read_packages) (void);
typedef void (*HPMHOOK_post_itemdb_read_packages) (void);
+typedef void (*HPMHOOK_pre_itemdb_read_options) (void);
+typedef void (*HPMHOOK_post_itemdb_read_options) (void);
typedef void (*HPMHOOK_pre_itemdb_write_cached_packages) (const char **config_filename);
typedef void (*HPMHOOK_post_itemdb_write_cached_packages) (const char *config_filename);
typedef bool (*HPMHOOK_pre_itemdb_read_cached_packages) (const char **config_filename);
@@ -3316,6 +3950,8 @@ typedef struct item_data* (*HPMHOOK_pre_itemdb_search) (int *nameid);
typedef struct item_data* (*HPMHOOK_post_itemdb_search) (struct item_data* retVal___, int nameid);
typedef struct item_data* (*HPMHOOK_pre_itemdb_exists) (int *nameid);
typedef struct item_data* (*HPMHOOK_post_itemdb_exists) (struct item_data* retVal___, int nameid);
+typedef struct itemdb_option* (*HPMHOOK_pre_itemdb_option_exists) (int *idx);
+typedef struct itemdb_option* (*HPMHOOK_post_itemdb_option_exists) (struct itemdb_option* retVal___, int idx);
typedef bool (*HPMHOOK_pre_itemdb_in_group) (struct item_group **group, int *nameid);
typedef bool (*HPMHOOK_post_itemdb_in_group) (bool retVal___, struct item_group *group, int nameid);
typedef int (*HPMHOOK_pre_itemdb_group_item) (struct item_group **group);
@@ -3380,6 +4016,8 @@ typedef int (*HPMHOOK_pre_itemdb_gendercheck) (struct item_data **id);
typedef int (*HPMHOOK_post_itemdb_gendercheck) (int retVal___, struct item_data *id);
typedef int (*HPMHOOK_pre_itemdb_validate_entry) (struct item_data **entry, int *n, const char **source);
typedef int (*HPMHOOK_post_itemdb_validate_entry) (int retVal___, struct item_data *entry, int n, const char *source);
+typedef void (*HPMHOOK_pre_itemdb_readdb_options_additional_fields) (struct itemdb_option **ito, struct config_setting_t **t, const char **source);
+typedef void (*HPMHOOK_post_itemdb_readdb_options_additional_fields) (struct itemdb_option *ito, struct config_setting_t *t, const char *source);
typedef void (*HPMHOOK_pre_itemdb_readdb_additional_fields) (int *itemid, struct config_setting_t **it, int *n, const char **source);
typedef void (*HPMHOOK_post_itemdb_readdb_additional_fields) (int itemid, struct config_setting_t *it, int n, const char *source);
typedef void (*HPMHOOK_pre_itemdb_readdb_job_sub) (struct item_data **id, struct config_setting_t **t);
@@ -3396,15 +4034,31 @@ typedef void (*HPMHOOK_pre_itemdb_destroy_item_data) (struct item_data **self, i
typedef void (*HPMHOOK_post_itemdb_destroy_item_data) (struct item_data *self, int free_self);
typedef int (*HPMHOOK_pre_itemdb_final_sub) (union DBKey *key, struct DBData **data, va_list ap);
typedef int (*HPMHOOK_post_itemdb_final_sub) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
+typedef int (*HPMHOOK_pre_itemdb_options_final_sub) (union DBKey *key, struct DBData **data, va_list ap);
+typedef int (*HPMHOOK_post_itemdb_options_final_sub) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
typedef void (*HPMHOOK_pre_itemdb_clear) (bool *total);
typedef void (*HPMHOOK_post_itemdb_clear) (bool total);
-typedef struct item_combo* (*HPMHOOK_pre_itemdb_id2combo) (unsigned short *id);
-typedef struct item_combo* (*HPMHOOK_post_itemdb_id2combo) (struct item_combo* retVal___, unsigned short id);
+typedef struct item_combo* (*HPMHOOK_pre_itemdb_id2combo) (int *id);
+typedef struct item_combo* (*HPMHOOK_post_itemdb_id2combo) (struct item_combo* retVal___, int id);
typedef bool (*HPMHOOK_pre_itemdb_is_item_usable) (struct item_data **item);
typedef bool (*HPMHOOK_post_itemdb_is_item_usable) (bool retVal___, struct item_data *item);
typedef bool (*HPMHOOK_pre_itemdb_lookup_const) (const struct config_setting_t **it, const char **name, int **value);
typedef bool (*HPMHOOK_post_itemdb_lookup_const) (bool retVal___, const struct config_setting_t *it, const char *name, int *value);
+typedef bool (*HPMHOOK_pre_itemdb_lookup_const_mask) (const struct config_setting_t **it, const char **name, int **value);
+typedef bool (*HPMHOOK_post_itemdb_lookup_const_mask) (bool retVal___, const struct config_setting_t *it, const char *name, int *value);
+typedef int (*HPMHOOK_pre_itemdb_addname_sub) (union DBKey *key, struct DBData **data, va_list ap);
+typedef int (*HPMHOOK_post_itemdb_addname_sub) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
#endif // MAP_ITEMDB_H
+#ifdef LOGIN_LOGIN_H /* lchrif */
+typedef void (*HPMHOOK_pre_lchrif_server_init) (int *id);
+typedef void (*HPMHOOK_post_lchrif_server_init) (int id);
+typedef void (*HPMHOOK_pre_lchrif_server_destroy) (int *id);
+typedef void (*HPMHOOK_post_lchrif_server_destroy) (int id);
+typedef void (*HPMHOOK_pre_lchrif_server_reset) (int *id);
+typedef void (*HPMHOOK_post_lchrif_server_reset) (int id);
+typedef void (*HPMHOOK_pre_lchrif_on_disconnect) (int *id);
+typedef void (*HPMHOOK_post_lchrif_on_disconnect) (int id);
+#endif // LOGIN_LOGIN_H
#ifdef LOGIN_LCLIF_H /* lclif */
typedef void (*HPMHOOK_pre_lclif_init) (void);
typedef void (*HPMHOOK_post_lclif_init) (void);
@@ -3450,6 +4104,12 @@ typedef enum parsefunc_rcode (*HPMHOOK_pre_PRIV__lclif_parse_CA_LOGIN_HAN) (int
typedef enum parsefunc_rcode (*HPMHOOK_post_PRIV__lclif_parse_CA_LOGIN_HAN) (enum parsefunc_rcode retVal___, int fd, struct login_session_data *sd);
typedef enum parsefunc_rcode (*HPMHOOK_pre_PRIV__lclif_parse_CA_SSO_LOGIN_REQ) (int *fd, struct login_session_data **sd);
typedef enum parsefunc_rcode (*HPMHOOK_post_PRIV__lclif_parse_CA_SSO_LOGIN_REQ) (enum parsefunc_rcode retVal___, int fd, struct login_session_data *sd);
+typedef enum parsefunc_rcode (*HPMHOOK_pre_PRIV__lclif_parse_CA_LOGIN_OTP) (int *fd, struct login_session_data **sd);
+typedef enum parsefunc_rcode (*HPMHOOK_post_PRIV__lclif_parse_CA_LOGIN_OTP) (enum parsefunc_rcode retVal___, int fd, struct login_session_data *sd);
+typedef enum parsefunc_rcode (*HPMHOOK_pre_PRIV__lclif_parse_CA_ACK_MOBILE_OTP) (int *fd, struct login_session_data **sd);
+typedef enum parsefunc_rcode (*HPMHOOK_post_PRIV__lclif_parse_CA_ACK_MOBILE_OTP) (enum parsefunc_rcode retVal___, int fd, struct login_session_data *sd);
+typedef enum parsefunc_rcode (*HPMHOOK_pre_PRIV__lclif_parse_CA_OTP_CODE) (int *fd, struct login_session_data **sd);
+typedef enum parsefunc_rcode (*HPMHOOK_post_PRIV__lclif_parse_CA_OTP_CODE) (enum parsefunc_rcode retVal___, int fd, struct login_session_data *sd);
typedef enum parsefunc_rcode (*HPMHOOK_pre_PRIV__lclif_parse_CA_REQ_HASH) (int *fd, struct login_session_data **sd);
typedef enum parsefunc_rcode (*HPMHOOK_post_PRIV__lclif_parse_CA_REQ_HASH) (enum parsefunc_rcode retVal___, int fd, struct login_session_data *sd);
typedef enum parsefunc_rcode (*HPMHOOK_pre_PRIV__lclif_parse_CA_CHARSERVERCONNECT) (int *fd, struct login_session_data **sd);
@@ -3730,6 +4390,10 @@ typedef void (*HPMHOOK_pre_login_auth_failed) (struct login_session_data **sd, i
typedef void (*HPMHOOK_post_login_auth_failed) (struct login_session_data *sd, int result);
typedef bool (*HPMHOOK_pre_login_client_login) (int *fd, struct login_session_data **sd);
typedef bool (*HPMHOOK_post_login_client_login) (bool retVal___, int fd, struct login_session_data *sd);
+typedef bool (*HPMHOOK_pre_login_client_login_otp) (int *fd, struct login_session_data **sd);
+typedef bool (*HPMHOOK_post_login_client_login_otp) (bool retVal___, int fd, struct login_session_data *sd);
+typedef void (*HPMHOOK_pre_login_client_login_mobile_otp_request) (int *fd, struct login_session_data **sd);
+typedef void (*HPMHOOK_post_login_client_login_mobile_otp_request) (int fd, struct login_session_data *sd);
typedef void (*HPMHOOK_pre_login_char_server_connection_status) (int *fd, struct login_session_data **sd, uint8 *status);
typedef void (*HPMHOOK_post_login_char_server_connection_status) (int fd, struct login_session_data *sd, uint8 status);
typedef void (*HPMHOOK_pre_login_parse_request_connection) (int *fd, struct login_session_data **sd, const char **ip, uint32 *ipl);
@@ -3738,6 +4402,32 @@ typedef void (*HPMHOOK_pre_login_config_set_defaults) (void);
typedef void (*HPMHOOK_post_login_config_set_defaults) (void);
typedef bool (*HPMHOOK_pre_login_config_read) (const char **filename, bool *included);
typedef bool (*HPMHOOK_post_login_config_read) (bool retVal___, const char *filename, bool included);
+typedef bool (*HPMHOOK_pre_login_config_read_inter) (const char **filename, struct config_t **config, bool *imported);
+typedef bool (*HPMHOOK_post_login_config_read_inter) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+typedef bool (*HPMHOOK_pre_login_config_read_console) (const char **filename, struct config_t **config, bool *imported);
+typedef bool (*HPMHOOK_post_login_config_read_console) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+typedef bool (*HPMHOOK_pre_login_config_read_log) (const char **filename, struct config_t **config, bool *imported);
+typedef bool (*HPMHOOK_post_login_config_read_log) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+typedef bool (*HPMHOOK_pre_login_config_read_account) (const char **filename, struct config_t **config, bool *imported);
+typedef bool (*HPMHOOK_post_login_config_read_account) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+typedef bool (*HPMHOOK_pre_login_config_read_permission) (const char **filename, struct config_t **config, bool *imported);
+typedef bool (*HPMHOOK_post_login_config_read_permission) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+typedef bool (*HPMHOOK_pre_login_config_read_permission_hash) (const char **filename, struct config_t **config, bool *imported);
+typedef bool (*HPMHOOK_post_login_config_read_permission_hash) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+typedef bool (*HPMHOOK_pre_login_config_read_permission_blacklist) (const char **filename, struct config_t **config, bool *imported);
+typedef bool (*HPMHOOK_post_login_config_read_permission_blacklist) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+typedef bool (*HPMHOOK_pre_login_config_read_users) (const char **filename, struct config_t **config, bool *imported);
+typedef bool (*HPMHOOK_post_login_config_read_users) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+typedef void (*HPMHOOK_pre_login_clear_dnsbl_servers) (void);
+typedef void (*HPMHOOK_post_login_clear_dnsbl_servers) (void);
+typedef void (*HPMHOOK_pre_login_config_set_dnsbl_servers) (struct config_setting_t **setting);
+typedef void (*HPMHOOK_post_login_config_set_dnsbl_servers) (struct config_setting_t *setting);
+typedef void (*HPMHOOK_pre_login_clear_client_hash_nodes) (void);
+typedef void (*HPMHOOK_post_login_clear_client_hash_nodes) (void);
+typedef void (*HPMHOOK_pre_login_config_set_md5hash) (struct config_setting_t **setting);
+typedef void (*HPMHOOK_post_login_config_set_md5hash) (struct config_setting_t *setting);
+typedef uint16 (*HPMHOOK_pre_login_convert_users_to_colors) (uint16 *users);
+typedef uint16 (*HPMHOOK_post_login_convert_users_to_colors) (uint16 retVal___, uint16 users);
#endif // LOGIN_LOGIN_H
#ifdef CHAR_LOGINIF_H /* loginif */
typedef void (*HPMHOOK_pre_loginif_init) (void);
@@ -3767,6 +4457,22 @@ typedef void (*HPMHOOK_post_loginif_send_users_count) (int users);
typedef void (*HPMHOOK_pre_loginif_connect_to_server) (void);
typedef void (*HPMHOOK_post_loginif_connect_to_server) (void);
#endif // CHAR_LOGINIF_H
+#ifdef LOGIN_LOGINLOG_H /* loginlog */
+typedef unsigned long (*HPMHOOK_pre_loginlog_failedattempts) (uint32 *ip, unsigned int *minutes);
+typedef unsigned long (*HPMHOOK_post_loginlog_failedattempts) (unsigned long retVal___, uint32 ip, unsigned int minutes);
+typedef void (*HPMHOOK_pre_loginlog_log) (uint32 *ip, const char **username, int *rcode, const char **message);
+typedef void (*HPMHOOK_post_loginlog_log) (uint32 ip, const char *username, int rcode, const char *message);
+typedef bool (*HPMHOOK_pre_loginlog_init) (void);
+typedef bool (*HPMHOOK_post_loginlog_init) (bool retVal___);
+typedef bool (*HPMHOOK_pre_loginlog_final) (void);
+typedef bool (*HPMHOOK_post_loginlog_final) (bool retVal___);
+typedef bool (*HPMHOOK_pre_loginlog_config_read_names) (const char **filename, struct config_t **config, bool *imported);
+typedef bool (*HPMHOOK_post_loginlog_config_read_names) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+typedef bool (*HPMHOOK_pre_loginlog_config_read_log) (const char **filename, struct config_t **config, bool *imported);
+typedef bool (*HPMHOOK_post_loginlog_config_read_log) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+typedef bool (*HPMHOOK_pre_loginlog_config_read) (const char **filename, bool *imported);
+typedef bool (*HPMHOOK_post_loginlog_config_read) (bool retVal___, const char *filename, bool imported);
+#endif // LOGIN_LOGINLOG_H
#ifdef MAP_MAIL_H /* mail */
typedef void (*HPMHOOK_pre_mail_clear) (struct map_session_data **sd);
typedef void (*HPMHOOK_post_mail_clear) (struct map_session_data *sd);
@@ -3792,12 +4498,16 @@ typedef void (*HPMHOOK_pre_map_zone_init) (void);
typedef void (*HPMHOOK_post_map_zone_init) (void);
typedef void (*HPMHOOK_pre_map_zone_remove) (int *m);
typedef void (*HPMHOOK_post_map_zone_remove) (int m);
+typedef void (*HPMHOOK_pre_map_zone_remove_all) (int *m);
+typedef void (*HPMHOOK_post_map_zone_remove_all) (int m);
typedef void (*HPMHOOK_pre_map_zone_apply) (int *m, struct map_zone_data **zone, const char **start, const char **buffer, const char **filepath);
typedef void (*HPMHOOK_post_map_zone_apply) (int m, struct map_zone_data *zone, const char *start, const char *buffer, const char *filepath);
typedef void (*HPMHOOK_pre_map_zone_change) (int *m, struct map_zone_data **zone, const char **start, const char **buffer, const char **filepath);
typedef void (*HPMHOOK_post_map_zone_change) (int m, struct map_zone_data *zone, const char *start, const char *buffer, const char *filepath);
typedef void (*HPMHOOK_pre_map_zone_change2) (int *m, struct map_zone_data **zone);
typedef void (*HPMHOOK_post_map_zone_change2) (int m, struct map_zone_data *zone);
+typedef void (*HPMHOOK_pre_map_zone_reload) (void);
+typedef void (*HPMHOOK_post_map_zone_reload) (void);
typedef int (*HPMHOOK_pre_map_getcell) (int16 *m, const struct block_list **bl, int16 *x, int16 *y, cell_chk *cellchk);
typedef int (*HPMHOOK_post_map_getcell) (int retVal___, int16 m, const struct block_list *bl, int16 x, int16 y, cell_chk cellchk);
typedef void (*HPMHOOK_pre_map_setgatcell) (int16 *m, int16 *x, int16 *y, int *gat);
@@ -3842,8 +4552,8 @@ typedef int (*HPMHOOK_pre_map_removemobs_timer) (int *tid, int64 *tick, int *id,
typedef int (*HPMHOOK_post_map_removemobs_timer) (int retVal___, int tid, int64 tick, int id, intptr_t data);
typedef void (*HPMHOOK_pre_map_clearflooritem) (struct block_list **bl);
typedef void (*HPMHOOK_post_map_clearflooritem) (struct block_list *bl);
-typedef int (*HPMHOOK_pre_map_addflooritem) (const struct block_list **bl, struct item **item_data, int *amount, int16 *m, int16 *x, int16 *y, int *first_charid, int *second_charid, int *third_charid, int *flags);
-typedef int (*HPMHOOK_post_map_addflooritem) (int retVal___, const struct block_list *bl, struct item *item_data, int amount, int16 m, int16 x, int16 y, int first_charid, int second_charid, int third_charid, int flags);
+typedef int (*HPMHOOK_pre_map_addflooritem) (const struct block_list **bl, struct item **item_data, int *amount, int16 *m, int16 *x, int16 *y, int *first_charid, int *second_charid, int *third_charid, int *flags, bool *showdropeffect);
+typedef int (*HPMHOOK_post_map_addflooritem) (int retVal___, const struct block_list *bl, struct item *item_data, int amount, int16 m, int16 x, int16 y, int first_charid, int second_charid, int third_charid, int flags, bool showdropeffect);
typedef void (*HPMHOOK_pre_map_addnickdb) (int *charid, const char **nick);
typedef void (*HPMHOOK_post_map_addnickdb) (int charid, const char *nick);
typedef void (*HPMHOOK_pre_map_delnickdb) (int *charid, const char **nick);
@@ -3950,8 +4660,8 @@ typedef bool (*HPMHOOK_pre_map_iwall_set) (int16 *m, int16 *x, int16 *y, int *si
typedef bool (*HPMHOOK_post_map_iwall_set) (bool retVal___, int16 m, int16 x, int16 y, int size, int8 dir, bool shootable, const char *wall_name);
typedef void (*HPMHOOK_pre_map_iwall_get) (struct map_session_data **sd);
typedef void (*HPMHOOK_post_map_iwall_get) (struct map_session_data *sd);
-typedef void (*HPMHOOK_pre_map_iwall_remove) (const char **wall_name);
-typedef void (*HPMHOOK_post_map_iwall_remove) (const char *wall_name);
+typedef bool (*HPMHOOK_pre_map_iwall_remove) (const char **wall_name);
+typedef bool (*HPMHOOK_post_map_iwall_remove) (bool retVal___, const char *wall_name);
typedef int (*HPMHOOK_pre_map_addmobtolist) (unsigned short *m, struct spawn_data **spawn);
typedef int (*HPMHOOK_post_map_addmobtolist) (int retVal___, unsigned short m, struct spawn_data *spawn);
typedef void (*HPMHOOK_pre_map_spawnmobs) (int16 *m);
@@ -3994,10 +4704,10 @@ typedef struct DBData (*HPMHOOK_pre_map_create_map_data_other_server) (union DBK
typedef struct DBData (*HPMHOOK_post_map_create_map_data_other_server) (struct DBData retVal___, union DBKey key, va_list args);
typedef int (*HPMHOOK_pre_map_eraseallipport_sub) (union DBKey *key, struct DBData **data, va_list va);
typedef int (*HPMHOOK_post_map_eraseallipport_sub) (int retVal___, union DBKey key, struct DBData *data, va_list va);
-typedef char* (*HPMHOOK_pre_map_init_mapcache) (FILE **fp);
-typedef char* (*HPMHOOK_post_map_init_mapcache) (char* retVal___, FILE *fp);
-typedef int (*HPMHOOK_pre_map_readfromcache) (struct map_data **m, char **buffer);
-typedef int (*HPMHOOK_post_map_readfromcache) (int retVal___, struct map_data *m, char *buffer);
+typedef bool (*HPMHOOK_pre_map_readfromcache) (struct map_data **m);
+typedef bool (*HPMHOOK_post_map_readfromcache) (bool retVal___, struct map_data *m);
+typedef bool (*HPMHOOK_pre_map_readfromcache_v1) (FILE **fp, struct map_data **m, unsigned int *file_size);
+typedef bool (*HPMHOOK_post_map_readfromcache_v1) (bool retVal___, FILE *fp, struct map_data *m, unsigned int file_size);
typedef int (*HPMHOOK_pre_map_addmap) (const char **mapname);
typedef int (*HPMHOOK_post_map_addmap) (int retVal___, const char *mapname);
typedef void (*HPMHOOK_pre_map_delmapid) (int *id);
@@ -4028,8 +4738,8 @@ typedef int (*HPMHOOK_pre_map_sql_close) (void);
typedef int (*HPMHOOK_post_map_sql_close) (int retVal___);
typedef bool (*HPMHOOK_pre_map_zone_mf_cache) (int *m, char **flag, char **params);
typedef bool (*HPMHOOK_post_map_zone_mf_cache) (bool retVal___, int m, char *flag, char *params);
-typedef unsigned short (*HPMHOOK_pre_map_zone_str2itemid) (const char **name);
-typedef unsigned short (*HPMHOOK_post_map_zone_str2itemid) (unsigned short retVal___, const char *name);
+typedef int (*HPMHOOK_pre_map_zone_str2itemid) (const char **name);
+typedef int (*HPMHOOK_post_map_zone_str2itemid) (int retVal___, const char *name);
typedef unsigned short (*HPMHOOK_pre_map_zone_str2skillid) (const char **name);
typedef unsigned short (*HPMHOOK_post_map_zone_str2skillid) (unsigned short retVal___, const char *name);
typedef enum bl_type (*HPMHOOK_pre_map_zone_bl_type) (const char **entry, enum map_zone_skill_subtype **subtype);
@@ -4080,6 +4790,16 @@ typedef int (*HPMHOOK_pre_mapif_send) (int *fd, unsigned char **buf, unsigned in
typedef int (*HPMHOOK_post_mapif_send) (int retVal___, int fd, unsigned char *buf, unsigned int len);
typedef void (*HPMHOOK_pre_mapif_send_users_count) (int *users);
typedef void (*HPMHOOK_post_mapif_send_users_count) (int users);
+typedef void (*HPMHOOK_pre_mapif_pLoadAchievements) (int *fd);
+typedef void (*HPMHOOK_post_mapif_pLoadAchievements) (int fd);
+typedef void (*HPMHOOK_pre_mapif_sAchievementsToMap) (int *fd, int *char_id, const struct char_achievements **p);
+typedef void (*HPMHOOK_post_mapif_sAchievementsToMap) (int fd, int char_id, const struct char_achievements *p);
+typedef void (*HPMHOOK_pre_mapif_pSaveAchievements) (int *fd);
+typedef void (*HPMHOOK_post_mapif_pSaveAchievements) (int fd);
+typedef void (*HPMHOOK_pre_mapif_achievement_load) (int *fd, int *char_id);
+typedef void (*HPMHOOK_post_mapif_achievement_load) (int fd, int char_id);
+typedef void (*HPMHOOK_pre_mapif_achievement_save) (int *char_id, struct char_achievements **p);
+typedef void (*HPMHOOK_post_mapif_achievement_save) (int char_id, struct char_achievements *p);
typedef void (*HPMHOOK_pre_mapif_auction_message) (int *char_id, unsigned char *result);
typedef void (*HPMHOOK_post_mapif_auction_message) (int char_id, unsigned char result);
typedef void (*HPMHOOK_pre_mapif_auction_sendlist) (int *fd, int *char_id, short *count, short *pages, unsigned char **buf);
@@ -4102,14 +4822,6 @@ typedef void (*HPMHOOK_pre_mapif_auction_bid) (int *fd, int *char_id, int *bid,
typedef void (*HPMHOOK_post_mapif_auction_bid) (int fd, int char_id, int bid, unsigned char result);
typedef void (*HPMHOOK_pre_mapif_parse_auction_bid) (int *fd);
typedef void (*HPMHOOK_post_mapif_parse_auction_bid) (int fd);
-typedef bool (*HPMHOOK_pre_mapif_elemental_create) (struct s_elemental **ele);
-typedef bool (*HPMHOOK_post_mapif_elemental_create) (bool retVal___, struct s_elemental *ele);
-typedef bool (*HPMHOOK_pre_mapif_elemental_save) (const struct s_elemental **ele);
-typedef bool (*HPMHOOK_post_mapif_elemental_save) (bool retVal___, const struct s_elemental *ele);
-typedef bool (*HPMHOOK_pre_mapif_elemental_load) (int *ele_id, int *char_id, struct s_elemental **ele);
-typedef bool (*HPMHOOK_post_mapif_elemental_load) (bool retVal___, int ele_id, int char_id, struct s_elemental *ele);
-typedef bool (*HPMHOOK_pre_mapif_elemental_delete) (int *ele_id);
-typedef bool (*HPMHOOK_post_mapif_elemental_delete) (bool retVal___, int ele_id);
typedef void (*HPMHOOK_pre_mapif_elemental_send) (int *fd, struct s_elemental **ele, unsigned char *flag);
typedef void (*HPMHOOK_post_mapif_elemental_send) (int fd, struct s_elemental *ele, unsigned char flag);
typedef void (*HPMHOOK_pre_mapif_parse_elemental_create) (int *fd, const struct s_elemental **ele);
@@ -4180,8 +4892,6 @@ typedef int (*HPMHOOK_pre_mapif_parse_GuildPosition) (int *fd, int *guild_id, in
typedef int (*HPMHOOK_post_mapif_parse_GuildPosition) (int retVal___, int fd, int guild_id, int idx, const struct guild_position *p);
typedef int (*HPMHOOK_pre_mapif_parse_GuildSkillUp) (int *fd, int *guild_id, uint16 *skill_id, int *account_id, int *max);
typedef int (*HPMHOOK_post_mapif_parse_GuildSkillUp) (int retVal___, int fd, int guild_id, uint16 skill_id, int account_id, int max);
-typedef int (*HPMHOOK_pre_mapif_parse_GuildDeleteAlliance) (struct guild **g, int *guild_id, int *account_id1, int *account_id2, int *flag);
-typedef int (*HPMHOOK_post_mapif_parse_GuildDeleteAlliance) (int retVal___, struct guild *g, int guild_id, int account_id1, int account_id2, int flag);
typedef int (*HPMHOOK_pre_mapif_parse_GuildAlliance) (int *fd, int *guild_id1, int *guild_id2, int *account_id1, int *account_id2, int *flag);
typedef int (*HPMHOOK_post_mapif_parse_GuildAlliance) (int retVal___, int fd, int guild_id1, int guild_id2, int account_id1, int account_id2, int flag);
typedef int (*HPMHOOK_pre_mapif_parse_GuildNotice) (int *fd, int *guild_id, const char **mes1, const char **mes2);
@@ -4204,16 +4914,6 @@ typedef void (*HPMHOOK_pre_mapif_homunculus_saved) (int *fd, int *account_id, bo
typedef void (*HPMHOOK_post_mapif_homunculus_saved) (int fd, int account_id, bool flag);
typedef void (*HPMHOOK_pre_mapif_homunculus_renamed) (int *fd, int *account_id, int *char_id, unsigned char *flag, const char **name);
typedef void (*HPMHOOK_post_mapif_homunculus_renamed) (int fd, int account_id, int char_id, unsigned char flag, const char *name);
-typedef bool (*HPMHOOK_pre_mapif_homunculus_create) (struct s_homunculus **hd);
-typedef bool (*HPMHOOK_post_mapif_homunculus_create) (bool retVal___, struct s_homunculus *hd);
-typedef bool (*HPMHOOK_pre_mapif_homunculus_save) (const struct s_homunculus **hd);
-typedef bool (*HPMHOOK_post_mapif_homunculus_save) (bool retVal___, const struct s_homunculus *hd);
-typedef bool (*HPMHOOK_pre_mapif_homunculus_load) (int *homun_id, struct s_homunculus **hd);
-typedef bool (*HPMHOOK_post_mapif_homunculus_load) (bool retVal___, int homun_id, struct s_homunculus *hd);
-typedef bool (*HPMHOOK_pre_mapif_homunculus_delete) (int *homun_id);
-typedef bool (*HPMHOOK_post_mapif_homunculus_delete) (bool retVal___, int homun_id);
-typedef bool (*HPMHOOK_pre_mapif_homunculus_rename) (const char **name);
-typedef bool (*HPMHOOK_post_mapif_homunculus_rename) (bool retVal___, const char *name);
typedef void (*HPMHOOK_pre_mapif_parse_homunculus_create) (int *fd, int *len, int *account_id, const struct s_homunculus **phd);
typedef void (*HPMHOOK_post_mapif_parse_homunculus_create) (int fd, int len, int account_id, const struct s_homunculus *phd);
typedef void (*HPMHOOK_pre_mapif_parse_homunculus_delete) (int *fd, int *homun_id);
@@ -4232,8 +4932,6 @@ typedef void (*HPMHOOK_pre_mapif_parse_mail_read) (int *fd);
typedef void (*HPMHOOK_post_mapif_parse_mail_read) (int fd);
typedef void (*HPMHOOK_pre_mapif_mail_sendattach) (int *fd, int *char_id, struct mail_message **msg);
typedef void (*HPMHOOK_post_mapif_mail_sendattach) (int fd, int char_id, struct mail_message *msg);
-typedef void (*HPMHOOK_pre_mapif_mail_getattach) (int *fd, int *char_id, int *mail_id);
-typedef void (*HPMHOOK_post_mapif_mail_getattach) (int fd, int char_id, int mail_id);
typedef void (*HPMHOOK_pre_mapif_parse_mail_getattach) (int *fd);
typedef void (*HPMHOOK_post_mapif_parse_mail_getattach) (int fd);
typedef void (*HPMHOOK_pre_mapif_mail_delete) (int *fd, int *char_id, int *mail_id, bool *failed);
@@ -4250,14 +4948,6 @@ typedef void (*HPMHOOK_pre_mapif_mail_send) (int *fd, struct mail_message **msg)
typedef void (*HPMHOOK_post_mapif_mail_send) (int fd, struct mail_message *msg);
typedef void (*HPMHOOK_pre_mapif_parse_mail_send) (int *fd);
typedef void (*HPMHOOK_post_mapif_parse_mail_send) (int fd);
-typedef bool (*HPMHOOK_pre_mapif_mercenary_create) (struct s_mercenary **merc);
-typedef bool (*HPMHOOK_post_mapif_mercenary_create) (bool retVal___, struct s_mercenary *merc);
-typedef bool (*HPMHOOK_pre_mapif_mercenary_save) (const struct s_mercenary **merc);
-typedef bool (*HPMHOOK_post_mapif_mercenary_save) (bool retVal___, const struct s_mercenary *merc);
-typedef bool (*HPMHOOK_pre_mapif_mercenary_load) (int *merc_id, int *char_id, struct s_mercenary **merc);
-typedef bool (*HPMHOOK_post_mapif_mercenary_load) (bool retVal___, int merc_id, int char_id, struct s_mercenary *merc);
-typedef bool (*HPMHOOK_pre_mapif_mercenary_delete) (int *merc_id);
-typedef bool (*HPMHOOK_post_mapif_mercenary_delete) (bool retVal___, int merc_id);
typedef void (*HPMHOOK_pre_mapif_mercenary_send) (int *fd, struct s_mercenary **merc, unsigned char *flag);
typedef void (*HPMHOOK_post_mapif_mercenary_send) (int fd, struct s_mercenary *merc, unsigned char flag);
typedef void (*HPMHOOK_pre_mapif_parse_mercenary_create) (int *fd, const struct s_mercenary **merc);
@@ -4318,10 +5008,6 @@ typedef int (*HPMHOOK_pre_mapif_save_pet_ack) (int *fd, int *account_id, int *fl
typedef int (*HPMHOOK_post_mapif_save_pet_ack) (int retVal___, int fd, int account_id, int flag);
typedef int (*HPMHOOK_pre_mapif_delete_pet_ack) (int *fd, int *flag);
typedef int (*HPMHOOK_post_mapif_delete_pet_ack) (int retVal___, int fd, int flag);
-typedef int (*HPMHOOK_pre_mapif_create_pet) (int *fd, int *account_id, int *char_id, short *pet_class, short *pet_lv, short *pet_egg_id, short *pet_equip, short *intimate, short *hungry, char *rename_flag, char *incubate, const char **pet_name);
-typedef int (*HPMHOOK_post_mapif_create_pet) (int retVal___, int fd, int account_id, int char_id, short pet_class, short pet_lv, short pet_egg_id, short pet_equip, short intimate, short hungry, char rename_flag, char incubate, const char *pet_name);
-typedef int (*HPMHOOK_pre_mapif_load_pet) (int *fd, int *account_id, int *char_id, int *pet_id);
-typedef int (*HPMHOOK_post_mapif_load_pet) (int retVal___, int fd, int account_id, int char_id, int pet_id);
typedef int (*HPMHOOK_pre_mapif_save_pet) (int *fd, int *account_id, const struct s_pet **data);
typedef int (*HPMHOOK_post_mapif_save_pet) (int retVal___, int fd, int account_id, const struct s_pet *data);
typedef int (*HPMHOOK_pre_mapif_delete_pet) (int *fd, int *pet_id);
@@ -4334,14 +5020,6 @@ typedef int (*HPMHOOK_pre_mapif_parse_SavePet) (int *fd);
typedef int (*HPMHOOK_post_mapif_parse_SavePet) (int retVal___, int fd);
typedef int (*HPMHOOK_pre_mapif_parse_DeletePet) (int *fd);
typedef int (*HPMHOOK_post_mapif_parse_DeletePet) (int retVal___, int fd);
-typedef struct quest* (*HPMHOOK_pre_mapif_quests_fromsql) (int *char_id, int **count);
-typedef struct quest* (*HPMHOOK_post_mapif_quests_fromsql) (struct quest* retVal___, int char_id, int *count);
-typedef bool (*HPMHOOK_pre_mapif_quest_delete) (int *char_id, int *quest_id);
-typedef bool (*HPMHOOK_post_mapif_quest_delete) (bool retVal___, int char_id, int quest_id);
-typedef bool (*HPMHOOK_pre_mapif_quest_add) (int *char_id, struct quest *qd);
-typedef bool (*HPMHOOK_post_mapif_quest_add) (bool retVal___, int char_id, struct quest qd);
-typedef bool (*HPMHOOK_pre_mapif_quest_update) (int *char_id, struct quest *qd);
-typedef bool (*HPMHOOK_post_mapif_quest_update) (bool retVal___, int char_id, struct quest qd);
typedef void (*HPMHOOK_pre_mapif_quest_save_ack) (int *fd, int *char_id, bool *success);
typedef void (*HPMHOOK_post_mapif_quest_save_ack) (int fd, int char_id, bool success);
typedef int (*HPMHOOK_pre_mapif_parse_quest_save) (int *fd);
@@ -4350,6 +5028,24 @@ typedef void (*HPMHOOK_pre_mapif_send_quests) (int *fd, int *char_id, struct que
typedef void (*HPMHOOK_post_mapif_send_quests) (int fd, int char_id, struct quest *tmp_questlog, int num_quests);
typedef int (*HPMHOOK_pre_mapif_parse_quest_load) (int *fd);
typedef int (*HPMHOOK_post_mapif_parse_quest_load) (int retVal___, int fd);
+typedef void (*HPMHOOK_pre_mapif_parse_rodex_requestinbox) (int *fd);
+typedef void (*HPMHOOK_post_mapif_parse_rodex_requestinbox) (int fd);
+typedef void (*HPMHOOK_pre_mapif_rodex_sendinbox) (int *fd, int *char_id, int8 *opentype, int8 *flag, int *count, int64 *mail_id, struct rodex_maillist **mails);
+typedef void (*HPMHOOK_post_mapif_rodex_sendinbox) (int fd, int char_id, int8 opentype, int8 flag, int count, int64 mail_id, struct rodex_maillist *mails);
+typedef void (*HPMHOOK_pre_mapif_parse_rodex_checkhasnew) (int *fd);
+typedef void (*HPMHOOK_post_mapif_parse_rodex_checkhasnew) (int fd);
+typedef void (*HPMHOOK_pre_mapif_rodex_sendhasnew) (int *fd, int *char_id, bool *has_new);
+typedef void (*HPMHOOK_post_mapif_rodex_sendhasnew) (int fd, int char_id, bool has_new);
+typedef void (*HPMHOOK_pre_mapif_parse_rodex_updatemail) (int *fd);
+typedef void (*HPMHOOK_post_mapif_parse_rodex_updatemail) (int fd);
+typedef void (*HPMHOOK_pre_mapif_parse_rodex_send) (int *fd);
+typedef void (*HPMHOOK_post_mapif_parse_rodex_send) (int fd);
+typedef void (*HPMHOOK_pre_mapif_rodex_send) (int *fd, int *sender_id, int *receiver_id, int *receiver_accountid, bool *result);
+typedef void (*HPMHOOK_post_mapif_rodex_send) (int fd, int sender_id, int receiver_id, int receiver_accountid, bool result);
+typedef void (*HPMHOOK_pre_mapif_parse_rodex_checkname) (int *fd);
+typedef void (*HPMHOOK_post_mapif_parse_rodex_checkname) (int fd);
+typedef void (*HPMHOOK_pre_mapif_rodex_checkname) (int *fd, int *reqchar_id, int *target_char_id, short *target_class, int *target_level, char **name);
+typedef void (*HPMHOOK_post_mapif_rodex_checkname) (int fd, int reqchar_id, int target_char_id, short target_class, int target_level, char *name);
typedef int (*HPMHOOK_pre_mapif_load_guild_storage) (int *fd, int *account_id, int *guild_id, char *flag);
typedef int (*HPMHOOK_post_mapif_load_guild_storage) (int retVal___, int fd, int account_id, int guild_id, char flag);
typedef int (*HPMHOOK_pre_mapif_save_guild_storage_ack) (int *fd, int *account_id, int *guild_id, int *fail);
@@ -4358,16 +5054,20 @@ typedef int (*HPMHOOK_pre_mapif_parse_LoadGuildStorage) (int *fd);
typedef int (*HPMHOOK_post_mapif_parse_LoadGuildStorage) (int retVal___, int fd);
typedef int (*HPMHOOK_pre_mapif_parse_SaveGuildStorage) (int *fd);
typedef int (*HPMHOOK_post_mapif_parse_SaveGuildStorage) (int retVal___, int fd);
+typedef int (*HPMHOOK_pre_mapif_account_storage_load) (int *fd, int *account_id);
+typedef int (*HPMHOOK_post_mapif_account_storage_load) (int retVal___, int fd, int account_id);
+typedef int (*HPMHOOK_pre_mapif_pAccountStorageLoad) (int *fd);
+typedef int (*HPMHOOK_post_mapif_pAccountStorageLoad) (int retVal___, int fd);
+typedef int (*HPMHOOK_pre_mapif_pAccountStorageSave) (int *fd);
+typedef int (*HPMHOOK_post_mapif_pAccountStorageSave) (int retVal___, int fd);
+typedef void (*HPMHOOK_pre_mapif_sAccountStorageSaveAck) (int *fd, int *account_id, bool *save);
+typedef void (*HPMHOOK_post_mapif_sAccountStorageSaveAck) (int fd, int account_id, bool save);
typedef int (*HPMHOOK_pre_mapif_itembound_ack) (int *fd, int *aid, int *guild_id);
typedef int (*HPMHOOK_post_mapif_itembound_ack) (int retVal___, int fd, int aid, int guild_id);
-typedef int (*HPMHOOK_pre_mapif_parse_ItemBoundRetrieve_sub) (int *fd);
-typedef int (*HPMHOOK_post_mapif_parse_ItemBoundRetrieve_sub) (int retVal___, int fd);
typedef void (*HPMHOOK_pre_mapif_parse_ItemBoundRetrieve) (int *fd);
typedef void (*HPMHOOK_post_mapif_parse_ItemBoundRetrieve) (int fd);
typedef void (*HPMHOOK_pre_mapif_parse_accinfo) (int *fd);
typedef void (*HPMHOOK_post_mapif_parse_accinfo) (int fd);
-typedef void (*HPMHOOK_pre_mapif_parse_accinfo2) (bool *success, int *map_fd, int *u_fd, int *u_aid, int *account_id, const char **userid, const char **user_pass, const char **email, const char **last_ip, const char **lastlogin, const char **pin_code, const char **birthdate, int *group_id, int *logincount, int *state);
-typedef void (*HPMHOOK_post_mapif_parse_accinfo2) (bool success, int map_fd, int u_fd, int u_aid, int account_id, const char *userid, const char *user_pass, const char *email, const char *last_ip, const char *lastlogin, const char *pin_code, const char *birthdate, int group_id, int logincount, int state);
typedef int (*HPMHOOK_pre_mapif_broadcast) (const unsigned char **mes, int *len, unsigned int *fontColor, short *fontType, short *fontSize, short *fontAlign, short *fontY, int *sfd);
typedef int (*HPMHOOK_post_mapif_broadcast) (int retVal___, const unsigned char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY, int sfd);
typedef int (*HPMHOOK_pre_mapif_wis_message) (struct WisData **wd);
@@ -4396,6 +5096,10 @@ typedef void (*HPMHOOK_pre_mapif_namechange_ack) (int *fd, int *account_id, int
typedef void (*HPMHOOK_post_mapif_namechange_ack) (int fd, int account_id, int char_id, int type, int flag, const char *name);
typedef int (*HPMHOOK_pre_mapif_parse_NameChangeRequest) (int *fd);
typedef int (*HPMHOOK_post_mapif_parse_NameChangeRequest) (int retVal___, int fd);
+typedef int (*HPMHOOK_pre_mapif_parse_ClanMemberKick) (int *fd, int *clan_id, int *kick_interval);
+typedef int (*HPMHOOK_post_mapif_parse_ClanMemberKick) (int retVal___, int fd, int clan_id, int kick_interval);
+typedef int (*HPMHOOK_pre_mapif_parse_ClanMemberCount) (int *fd, int *clan_id, int *kick_interval);
+typedef int (*HPMHOOK_post_mapif_parse_ClanMemberCount) (int retVal___, int fd, int clan_id, int kick_interval);
#endif // CHAR_MAPIF_H
#ifdef COMMON_MAPINDEX_H /* mapindex */
typedef int (*HPMHOOK_pre_mapindex_init) (void);
@@ -4540,6 +5244,10 @@ typedef int (*HPMHOOK_pre_mob_db_searchname) (const char **str);
typedef int (*HPMHOOK_post_mob_db_searchname) (int retVal___, const char *str);
typedef int (*HPMHOOK_pre_mob_db_searchname_array_sub) (struct mob_db **monster, const char **str, int *flag);
typedef int (*HPMHOOK_post_mob_db_searchname_array_sub) (int retVal___, struct mob_db *monster, const char *str, int flag);
+typedef void (*HPMHOOK_pre_mob_mvptomb_spawn_delayed) (struct npc_data **nd);
+typedef void (*HPMHOOK_post_mob_mvptomb_spawn_delayed) (struct npc_data *nd);
+typedef int (*HPMHOOK_pre_mob_mvptomb_delayspawn) (int *tid, int64 *tick, int *id, intptr_t *data);
+typedef int (*HPMHOOK_post_mob_mvptomb_delayspawn) (int retVal___, int tid, int64 tick, int id, intptr_t data);
typedef void (*HPMHOOK_pre_mob_mvptomb_create) (struct mob_data **md, char **killer, time_t *time);
typedef void (*HPMHOOK_post_mob_mvptomb_create) (struct mob_data *md, char *killer, time_t time);
typedef void (*HPMHOOK_pre_mob_mvptomb_destroy) (struct mob_data **md);
@@ -4712,8 +5420,6 @@ typedef bool (*HPMHOOK_pre_mob_parse_row_chatdb) (char ***str, const char **sour
typedef bool (*HPMHOOK_post_mob_parse_row_chatdb) (bool retVal___, char **str, const char *source, int line, int *last_msg_id);
typedef void (*HPMHOOK_pre_mob_readchatdb) (void);
typedef void (*HPMHOOK_post_mob_readchatdb) (void);
-typedef bool (*HPMHOOK_pre_mob_parse_row_mobskilldb) (char ***str, int *columns, int *current);
-typedef bool (*HPMHOOK_post_mob_parse_row_mobskilldb) (bool retVal___, char **str, int columns, int current);
typedef void (*HPMHOOK_pre_mob_readskilldb) (void);
typedef void (*HPMHOOK_post_mob_readskilldb) (void);
typedef bool (*HPMHOOK_pre_mob_readdb_race2) (char **fields[], int *columns, int *current);
@@ -4724,8 +5430,20 @@ typedef void (*HPMHOOK_pre_mob_load) (bool *minimal);
typedef void (*HPMHOOK_post_mob_load) (bool minimal);
typedef void (*HPMHOOK_pre_mob_clear_spawninfo) (void);
typedef void (*HPMHOOK_post_mob_clear_spawninfo) (void);
+typedef struct item_drop_ratio* (*HPMHOOK_pre_mob_get_item_drop_ratio) (int *nameid);
+typedef struct item_drop_ratio* (*HPMHOOK_post_mob_get_item_drop_ratio) (struct item_drop_ratio* retVal___, int nameid);
+typedef void (*HPMHOOK_pre_mob_set_item_drop_ratio) (int *nameid, struct item_drop_ratio **ratio);
+typedef void (*HPMHOOK_post_mob_set_item_drop_ratio) (int nameid, struct item_drop_ratio *ratio);
+typedef int (*HPMHOOK_pre_mob_final_ratio_sub) (union DBKey *key, struct DBData **data, va_list ap);
+typedef int (*HPMHOOK_post_mob_final_ratio_sub) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
typedef void (*HPMHOOK_pre_mob_destroy_mob_db) (int *index);
typedef void (*HPMHOOK_post_mob_destroy_mob_db) (int index);
+typedef bool (*HPMHOOK_pre_mob_skill_db_libconfig) (const char **filename, bool *ignore_missing);
+typedef bool (*HPMHOOK_post_mob_skill_db_libconfig) (bool retVal___, const char *filename, bool ignore_missing);
+typedef bool (*HPMHOOK_pre_mob_skill_db_libconfig_sub) (struct config_setting_t **it, int *n);
+typedef bool (*HPMHOOK_post_mob_skill_db_libconfig_sub) (bool retVal___, struct config_setting_t *it, int n);
+typedef bool (*HPMHOOK_pre_mob_skill_db_libconfig_sub_skill) (struct config_setting_t **it, int *n, int *mob_id);
+typedef bool (*HPMHOOK_post_mob_skill_db_libconfig_sub_skill) (bool retVal___, struct config_setting_t *it, int n, int mob_id);
#endif // MAP_MOB_H
#ifdef COMMON_MUTEX_H /* mutex */
typedef struct mutex_data* (*HPMHOOK_pre_mutex_create) (void);
@@ -4976,18 +5694,30 @@ typedef void (*HPMHOOK_pre_npc_trader_update) (int *master);
typedef void (*HPMHOOK_post_npc_trader_update) (int master);
typedef int (*HPMHOOK_pre_npc_market_buylist) (struct map_session_data **sd, struct itemlist **item_list);
typedef int (*HPMHOOK_post_npc_market_buylist) (int retVal___, struct map_session_data *sd, struct itemlist *item_list);
+typedef int (*HPMHOOK_pre_npc_barter_buylist) (struct map_session_data **sd, struct barteritemlist **item_list);
+typedef int (*HPMHOOK_post_npc_barter_buylist) (int retVal___, struct map_session_data *sd, struct barteritemlist *item_list);
typedef bool (*HPMHOOK_pre_npc_trader_open) (struct map_session_data **sd, struct npc_data **nd);
typedef bool (*HPMHOOK_post_npc_trader_open) (bool retVal___, struct map_session_data *sd, struct npc_data *nd);
typedef void (*HPMHOOK_pre_npc_market_fromsql) (void);
typedef void (*HPMHOOK_post_npc_market_fromsql) (void);
-typedef void (*HPMHOOK_pre_npc_market_tosql) (struct npc_data **nd, unsigned short *index);
-typedef void (*HPMHOOK_post_npc_market_tosql) (struct npc_data *nd, unsigned short index);
-typedef void (*HPMHOOK_pre_npc_market_delfromsql) (struct npc_data **nd, unsigned short *index);
-typedef void (*HPMHOOK_post_npc_market_delfromsql) (struct npc_data *nd, unsigned short index);
-typedef void (*HPMHOOK_pre_npc_market_delfromsql_sub) (const char **npcname, unsigned short *index);
-typedef void (*HPMHOOK_post_npc_market_delfromsql_sub) (const char *npcname, unsigned short index);
+typedef void (*HPMHOOK_pre_npc_market_tosql) (struct npc_data **nd, int *index);
+typedef void (*HPMHOOK_post_npc_market_tosql) (struct npc_data *nd, int index);
+typedef void (*HPMHOOK_pre_npc_market_delfromsql) (struct npc_data **nd, int *index);
+typedef void (*HPMHOOK_post_npc_market_delfromsql) (struct npc_data *nd, int index);
+typedef void (*HPMHOOK_pre_npc_market_delfromsql_sub) (const char **npcname, int *index);
+typedef void (*HPMHOOK_post_npc_market_delfromsql_sub) (const char *npcname, int index);
+typedef void (*HPMHOOK_pre_npc_barter_fromsql) (void);
+typedef void (*HPMHOOK_post_npc_barter_fromsql) (void);
+typedef void (*HPMHOOK_pre_npc_barter_tosql) (struct npc_data **nd, int *index);
+typedef void (*HPMHOOK_post_npc_barter_tosql) (struct npc_data *nd, int index);
+typedef void (*HPMHOOK_pre_npc_barter_delfromsql) (struct npc_data **nd, int *index);
+typedef void (*HPMHOOK_post_npc_barter_delfromsql) (struct npc_data *nd, int index);
+typedef void (*HPMHOOK_pre_npc_barter_delfromsql_sub) (const char **npcname, int *itemId, int *itemId2, int *amount2);
+typedef void (*HPMHOOK_post_npc_barter_delfromsql_sub) (const char *npcname, int itemId, int itemId2, int amount2);
typedef bool (*HPMHOOK_pre_npc_db_checkid) (const int *id);
typedef bool (*HPMHOOK_post_npc_db_checkid) (bool retVal___, const int id);
+typedef void (*HPMHOOK_pre_npc_refresh) (struct npc_data **nd);
+typedef void (*HPMHOOK_post_npc_refresh) (struct npc_data *nd);
typedef int (*HPMHOOK_pre_npc_secure_timeout_timer) (int *tid, int64 *tick, int *id, intptr_t *data);
typedef int (*HPMHOOK_post_npc_secure_timeout_timer) (int retVal___, int tid, int64 tick, int id, intptr_t data);
#endif // MAP_NPC_H
@@ -4995,6 +5725,16 @@ typedef int (*HPMHOOK_post_npc_secure_timeout_timer) (int retVal___, int tid, in
typedef void (*HPMHOOK_pre_nullpo_assert_report) (const char **file, int *line, const char **func, const char **targetname, const char **title);
typedef void (*HPMHOOK_post_nullpo_assert_report) (const char *file, int line, const char *func, const char *targetname, const char *title);
#endif // COMMON_NULLPO_H
+#ifdef COMMON_PACKETS_H /* packets */
+typedef void (*HPMHOOK_pre_packets_init) (void);
+typedef void (*HPMHOOK_post_packets_init) (void);
+typedef void (*HPMHOOK_pre_packets_final) (void);
+typedef void (*HPMHOOK_post_packets_final) (void);
+typedef void (*HPMHOOK_pre_packets_addLens) (void);
+typedef void (*HPMHOOK_post_packets_addLens) (void);
+typedef void (*HPMHOOK_pre_packets_addLen) (int *id, int *len);
+typedef void (*HPMHOOK_post_packets_addLen) (int id, int len);
+#endif // COMMON_PACKETS_H
#ifdef MAP_PARTY_H /* party */
typedef void (*HPMHOOK_pre_party_init) (bool *minimal);
typedef void (*HPMHOOK_post_party_init) (bool minimal);
@@ -5158,8 +5898,8 @@ typedef int (*HPMHOOK_pre_pc_setrestartvalue) (struct map_session_data **sd, int
typedef int (*HPMHOOK_post_pc_setrestartvalue) (int retVal___, struct map_session_data *sd, int type);
typedef int (*HPMHOOK_pre_pc_makesavestatus) (struct map_session_data **sd);
typedef int (*HPMHOOK_post_pc_makesavestatus) (int retVal___, struct map_session_data *sd);
-typedef void (*HPMHOOK_pre_pc_respawn) (struct map_session_data **sd, clr_type *clrtype);
-typedef void (*HPMHOOK_post_pc_respawn) (struct map_session_data *sd, clr_type clrtype);
+typedef void (*HPMHOOK_pre_pc_respawn) (struct map_session_data **sd, enum clr_type *clrtype);
+typedef void (*HPMHOOK_post_pc_respawn) (struct map_session_data *sd, enum clr_type clrtype);
typedef int (*HPMHOOK_pre_pc_setnewpc) (struct map_session_data **sd, int *account_id, int *char_id, int *login_id1, unsigned int *client_tick, int *sex, int *fd);
typedef int (*HPMHOOK_post_pc_setnewpc) (int retVal___, struct map_session_data *sd, int account_id, int char_id, int login_id1, unsigned int client_tick, int sex, int fd);
typedef bool (*HPMHOOK_pre_pc_authok) (struct map_session_data **sd, int *login_id2, time_t *expiration_time, int *group_id, const struct mmo_charstatus **st, bool *changing_mapservers);
@@ -5172,6 +5912,8 @@ typedef int (*HPMHOOK_pre_pc_isequip) (struct map_session_data **sd, int *n);
typedef int (*HPMHOOK_post_pc_isequip) (int retVal___, struct map_session_data *sd, int n);
typedef int (*HPMHOOK_pre_pc_equippoint) (struct map_session_data **sd, int *n);
typedef int (*HPMHOOK_post_pc_equippoint) (int retVal___, struct map_session_data *sd, int n);
+typedef int (*HPMHOOK_pre_pc_item_equippoint) (struct map_session_data **sd, struct item_data **id);
+typedef int (*HPMHOOK_post_pc_item_equippoint) (int retVal___, struct map_session_data *sd, struct item_data *id);
typedef int (*HPMHOOK_pre_pc_setinventorydata) (struct map_session_data **sd);
typedef int (*HPMHOOK_post_pc_setinventorydata) (int retVal___, struct map_session_data *sd);
typedef int (*HPMHOOK_pre_pc_checkskill) (struct map_session_data **sd, uint16 *skill_id);
@@ -5184,16 +5926,20 @@ typedef int (*HPMHOOK_pre_pc_checkequip) (struct map_session_data **sd, int *pos
typedef int (*HPMHOOK_post_pc_checkequip) (int retVal___, struct map_session_data *sd, int pos);
typedef int (*HPMHOOK_pre_pc_calc_skilltree) (struct map_session_data **sd);
typedef int (*HPMHOOK_post_pc_calc_skilltree) (int retVal___, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_pc_calc_skilltree_clear) (struct map_session_data **sd);
+typedef void (*HPMHOOK_post_pc_calc_skilltree_clear) (struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_pc_calc_skilltree_bonus) (struct map_session_data **sd, int *classidx);
+typedef void (*HPMHOOK_post_pc_calc_skilltree_bonus) (struct map_session_data *sd, int classidx);
typedef int (*HPMHOOK_pre_pc_calc_skilltree_normalize_job) (struct map_session_data **sd);
typedef int (*HPMHOOK_post_pc_calc_skilltree_normalize_job) (int retVal___, struct map_session_data *sd);
typedef int (*HPMHOOK_pre_pc_clean_skilltree) (struct map_session_data **sd);
typedef int (*HPMHOOK_post_pc_clean_skilltree) (int retVal___, struct map_session_data *sd);
-typedef int (*HPMHOOK_pre_pc_setpos) (struct map_session_data **sd, unsigned short *map_index, int *x, int *y, clr_type *clrtype);
-typedef int (*HPMHOOK_post_pc_setpos) (int retVal___, struct map_session_data *sd, unsigned short map_index, int x, int y, clr_type clrtype);
+typedef int (*HPMHOOK_pre_pc_setpos) (struct map_session_data **sd, unsigned short *map_index, int *x, int *y, enum clr_type *clrtype);
+typedef int (*HPMHOOK_post_pc_setpos) (int retVal___, struct map_session_data *sd, unsigned short map_index, int x, int y, enum clr_type clrtype);
typedef int (*HPMHOOK_pre_pc_setsavepoint) (struct map_session_data **sd, short *map_index, int *x, int *y);
typedef int (*HPMHOOK_post_pc_setsavepoint) (int retVal___, struct map_session_data *sd, short map_index, int x, int y);
-typedef int (*HPMHOOK_pre_pc_randomwarp) (struct map_session_data **sd, clr_type *type);
-typedef int (*HPMHOOK_post_pc_randomwarp) (int retVal___, struct map_session_data *sd, clr_type type);
+typedef int (*HPMHOOK_pre_pc_randomwarp) (struct map_session_data **sd, enum clr_type *type);
+typedef int (*HPMHOOK_post_pc_randomwarp) (int retVal___, struct map_session_data *sd, enum clr_type type);
typedef int (*HPMHOOK_pre_pc_memo) (struct map_session_data **sd, int *pos);
typedef int (*HPMHOOK_post_pc_memo) (int retVal___, struct map_session_data *sd, int pos);
typedef int (*HPMHOOK_pre_pc_checkadditem) (struct map_session_data **sd, int *nameid, int *amount);
@@ -5204,8 +5950,8 @@ typedef int (*HPMHOOK_pre_pc_search_inventory) (struct map_session_data **sd, in
typedef int (*HPMHOOK_post_pc_search_inventory) (int retVal___, struct map_session_data *sd, int item_id);
typedef int (*HPMHOOK_pre_pc_payzeny) (struct map_session_data **sd, int *zeny, enum e_log_pick_type *type, struct map_session_data **tsd);
typedef int (*HPMHOOK_post_pc_payzeny) (int retVal___, struct map_session_data *sd, int zeny, enum e_log_pick_type type, struct map_session_data *tsd);
-typedef int (*HPMHOOK_pre_pc_additem) (struct map_session_data **sd, struct item **item_data, int *amount, e_log_pick_type *log_type);
-typedef int (*HPMHOOK_post_pc_additem) (int retVal___, struct map_session_data *sd, struct item *item_data, int amount, e_log_pick_type log_type);
+typedef int (*HPMHOOK_pre_pc_additem) (struct map_session_data **sd, const struct item **item_data, int *amount, e_log_pick_type *log_type);
+typedef int (*HPMHOOK_post_pc_additem) (int retVal___, struct map_session_data *sd, const struct item *item_data, int amount, e_log_pick_type log_type);
typedef int (*HPMHOOK_pre_pc_getzeny) (struct map_session_data **sd, int *zeny, enum e_log_pick_type *type, struct map_session_data **tsd);
typedef int (*HPMHOOK_post_pc_getzeny) (int retVal___, struct map_session_data *sd, int zeny, enum e_log_pick_type type, struct map_session_data *tsd);
typedef int (*HPMHOOK_pre_pc_delitem) (struct map_session_data **sd, int *n, int *amount, int *type, short *reason, e_log_pick_type *log_type);
@@ -5280,18 +6026,20 @@ typedef int (*HPMHOOK_pre_pc_maxjoblv) (const struct map_session_data **sd);
typedef int (*HPMHOOK_post_pc_maxjoblv) (int retVal___, const struct map_session_data *sd);
typedef int (*HPMHOOK_pre_pc_checkbaselevelup) (struct map_session_data **sd);
typedef int (*HPMHOOK_post_pc_checkbaselevelup) (int retVal___, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_pc_checkbaselevelup_sc) (struct map_session_data **sd);
+typedef void (*HPMHOOK_post_pc_checkbaselevelup_sc) (struct map_session_data *sd);
typedef int (*HPMHOOK_pre_pc_checkjoblevelup) (struct map_session_data **sd);
typedef int (*HPMHOOK_post_pc_checkjoblevelup) (int retVal___, struct map_session_data *sd);
-typedef bool (*HPMHOOK_pre_pc_gainexp) (struct map_session_data **sd, struct block_list **src, unsigned int *base_exp, unsigned int *job_exp, bool *is_quest);
-typedef bool (*HPMHOOK_post_pc_gainexp) (bool retVal___, struct map_session_data *sd, struct block_list *src, unsigned int base_exp, unsigned int job_exp, bool is_quest);
-typedef unsigned int (*HPMHOOK_pre_pc_nextbaseexp) (const struct map_session_data **sd);
-typedef unsigned int (*HPMHOOK_post_pc_nextbaseexp) (unsigned int retVal___, const struct map_session_data *sd);
-typedef unsigned int (*HPMHOOK_pre_pc_thisbaseexp) (const struct map_session_data **sd);
-typedef unsigned int (*HPMHOOK_post_pc_thisbaseexp) (unsigned int retVal___, const struct map_session_data *sd);
-typedef unsigned int (*HPMHOOK_pre_pc_nextjobexp) (const struct map_session_data **sd);
-typedef unsigned int (*HPMHOOK_post_pc_nextjobexp) (unsigned int retVal___, const struct map_session_data *sd);
-typedef unsigned int (*HPMHOOK_pre_pc_thisjobexp) (const struct map_session_data **sd);
-typedef unsigned int (*HPMHOOK_post_pc_thisjobexp) (unsigned int retVal___, const struct map_session_data *sd);
+typedef bool (*HPMHOOK_pre_pc_gainexp) (struct map_session_data **sd, struct block_list **src, uint64 *base_exp, uint64 *job_exp, bool *is_quest);
+typedef bool (*HPMHOOK_post_pc_gainexp) (bool retVal___, struct map_session_data *sd, struct block_list *src, uint64 base_exp, uint64 job_exp, bool is_quest);
+typedef uint64 (*HPMHOOK_pre_pc_nextbaseexp) (const struct map_session_data **sd);
+typedef uint64 (*HPMHOOK_post_pc_nextbaseexp) (uint64 retVal___, const struct map_session_data *sd);
+typedef uint64 (*HPMHOOK_pre_pc_thisbaseexp) (const struct map_session_data **sd);
+typedef uint64 (*HPMHOOK_post_pc_thisbaseexp) (uint64 retVal___, const struct map_session_data *sd);
+typedef uint64 (*HPMHOOK_pre_pc_nextjobexp) (const struct map_session_data **sd);
+typedef uint64 (*HPMHOOK_post_pc_nextjobexp) (uint64 retVal___, const struct map_session_data *sd);
+typedef uint64 (*HPMHOOK_pre_pc_thisjobexp) (const struct map_session_data **sd);
+typedef uint64 (*HPMHOOK_post_pc_thisjobexp) (uint64 retVal___, const struct map_session_data *sd);
typedef int (*HPMHOOK_pre_pc_gets_status_point) (int *level);
typedef int (*HPMHOOK_post_pc_gets_status_point) (int retVal___, int level);
typedef int (*HPMHOOK_pre_pc_need_status_point) (struct map_session_data **sd, int *type, int *val);
@@ -5312,6 +6060,8 @@ typedef int (*HPMHOOK_pre_pc_resetstate) (struct map_session_data **sd);
typedef int (*HPMHOOK_post_pc_resetstate) (int retVal___, struct map_session_data *sd);
typedef int (*HPMHOOK_pre_pc_resetskill) (struct map_session_data **sd, int *flag);
typedef int (*HPMHOOK_post_pc_resetskill) (int retVal___, struct map_session_data *sd, int flag);
+typedef bool (*HPMHOOK_pre_pc_resetskill_job) (struct map_session_data **sd, int *index);
+typedef bool (*HPMHOOK_post_pc_resetskill_job) (bool retVal___, struct map_session_data *sd, int index);
typedef int (*HPMHOOK_pre_pc_resetfeel) (struct map_session_data **sd);
typedef int (*HPMHOOK_post_pc_resetfeel) (int retVal___, struct map_session_data *sd);
typedef int (*HPMHOOK_pre_pc_resethate) (struct map_session_data **sd);
@@ -5366,10 +6116,10 @@ typedef int (*HPMHOOK_pre_pc_changelook) (struct map_session_data **sd, int *typ
typedef int (*HPMHOOK_post_pc_changelook) (int retVal___, struct map_session_data *sd, int type, int val);
typedef int (*HPMHOOK_pre_pc_equiplookall) (struct map_session_data **sd);
typedef int (*HPMHOOK_post_pc_equiplookall) (int retVal___, struct map_session_data *sd);
-typedef int (*HPMHOOK_pre_pc_readparam) (const struct map_session_data **sd, int *type);
-typedef int (*HPMHOOK_post_pc_readparam) (int retVal___, const struct map_session_data *sd, int type);
-typedef int (*HPMHOOK_pre_pc_setparam) (struct map_session_data **sd, int *type, int *val);
-typedef int (*HPMHOOK_post_pc_setparam) (int retVal___, struct map_session_data *sd, int type, int val);
+typedef int64 (*HPMHOOK_pre_pc_readparam) (const struct map_session_data **sd, int *type);
+typedef int64 (*HPMHOOK_post_pc_readparam) (int64 retVal___, const struct map_session_data *sd, int type);
+typedef int (*HPMHOOK_pre_pc_setparam) (struct map_session_data **sd, int *type, int64 *val);
+typedef int (*HPMHOOK_post_pc_setparam) (int retVal___, struct map_session_data *sd, int type, int64 val);
typedef int (*HPMHOOK_pre_pc_readreg) (struct map_session_data **sd, int64 *reg);
typedef int (*HPMHOOK_post_pc_readreg) (int retVal___, struct map_session_data *sd, int64 reg);
typedef void (*HPMHOOK_pre_pc_setreg) (struct map_session_data **sd, int64 *reg, int *val);
@@ -5432,8 +6182,12 @@ typedef void (*HPMHOOK_pre_pc_delinvincibletimer) (struct map_session_data **sd)
typedef void (*HPMHOOK_post_pc_delinvincibletimer) (struct map_session_data *sd);
typedef int (*HPMHOOK_pre_pc_addspiritball) (struct map_session_data **sd, int *interval, int *max);
typedef int (*HPMHOOK_post_pc_addspiritball) (int retVal___, struct map_session_data *sd, int interval, int max);
+typedef int (*HPMHOOK_pre_pc_addspiritball_sub) (struct map_session_data **sd);
+typedef int (*HPMHOOK_post_pc_addspiritball_sub) (int retVal___, struct map_session_data *sd);
typedef int (*HPMHOOK_pre_pc_delspiritball) (struct map_session_data **sd, int *count, int *type);
typedef int (*HPMHOOK_post_pc_delspiritball) (int retVal___, struct map_session_data *sd, int count, int type);
+typedef int (*HPMHOOK_pre_pc_delspiritball_sub) (struct map_session_data **sd);
+typedef int (*HPMHOOK_post_pc_delspiritball_sub) (int retVal___, struct map_session_data *sd);
typedef int (*HPMHOOK_pre_pc_getmaxspiritball) (struct map_session_data **sd, int *min);
typedef int (*HPMHOOK_post_pc_getmaxspiritball) (int retVal___, struct map_session_data *sd, int min);
typedef void (*HPMHOOK_pre_pc_addfame) (struct map_session_data **sd, int *ranktype, int *count);
@@ -5446,6 +6200,12 @@ typedef int (*HPMHOOK_pre_pc_set_hate_mob) (struct map_session_data **sd, int *p
typedef int (*HPMHOOK_post_pc_set_hate_mob) (int retVal___, struct map_session_data *sd, int pos, struct block_list *bl);
typedef int (*HPMHOOK_pre_pc_readdb) (void);
typedef int (*HPMHOOK_post_pc_readdb) (int retVal___);
+typedef bool (*HPMHOOK_pre_pc_read_exp_db) (void);
+typedef bool (*HPMHOOK_post_pc_read_exp_db) (bool retVal___);
+typedef int (*HPMHOOK_pre_pc_read_exp_db_sub) (struct config_setting_t **conf, bool *base);
+typedef int (*HPMHOOK_post_pc_read_exp_db_sub) (int retVal___, struct config_setting_t *conf, bool base);
+typedef bool (*HPMHOOK_pre_pc_read_exp_db_sub_class) (struct config_setting_t **t, bool *base);
+typedef bool (*HPMHOOK_post_pc_read_exp_db_sub_class) (bool retVal___, struct config_setting_t *t, bool base);
typedef int (*HPMHOOK_pre_pc_map_day_timer) (int *tid, int64 *tick, int *id, intptr_t *data);
typedef int (*HPMHOOK_post_pc_map_day_timer) (int retVal___, int tid, int64 tick, int id, intptr_t data);
typedef int (*HPMHOOK_pre_pc_map_night_timer) (int *tid, int64 *tick, int *id, intptr_t *data);
@@ -5488,18 +6248,18 @@ typedef int (*HPMHOOK_pre_pc_inventory_rental_end) (int *tid, int64 *tick, int *
typedef int (*HPMHOOK_post_pc_inventory_rental_end) (int retVal___, int tid, int64 tick, int id, intptr_t data);
typedef void (*HPMHOOK_pre_pc_check_skilltree) (struct map_session_data **sd, int *skill_id);
typedef void (*HPMHOOK_post_pc_check_skilltree) (struct map_session_data *sd, int skill_id);
-typedef int (*HPMHOOK_pre_pc_bonus_autospell) (struct s_autospell **spell, int *max, short *id, short *lv, short *rate, short *flag, short *card_id);
-typedef int (*HPMHOOK_post_pc_bonus_autospell) (int retVal___, struct s_autospell *spell, int max, short id, short lv, short rate, short flag, short card_id);
-typedef int (*HPMHOOK_pre_pc_bonus_autospell_onskill) (struct s_autospell **spell, int *max, short *src_skill, short *id, short *lv, short *rate, short *card_id);
-typedef int (*HPMHOOK_post_pc_bonus_autospell_onskill) (int retVal___, struct s_autospell *spell, int max, short src_skill, short id, short lv, short rate, short card_id);
+typedef int (*HPMHOOK_pre_pc_bonus_autospell) (struct s_autospell **spell, int *max, short *id, short *lv, short *rate, short *flag, int *card_id);
+typedef int (*HPMHOOK_post_pc_bonus_autospell) (int retVal___, struct s_autospell *spell, int max, short id, short lv, short rate, short flag, int card_id);
+typedef int (*HPMHOOK_pre_pc_bonus_autospell_onskill) (struct s_autospell **spell, int *max, short *src_skill, short *id, short *lv, short *rate, int *card_id);
+typedef int (*HPMHOOK_post_pc_bonus_autospell_onskill) (int retVal___, struct s_autospell *spell, int max, short src_skill, short id, short lv, short rate, int card_id);
typedef int (*HPMHOOK_pre_pc_bonus_addeff) (struct s_addeffect **effect, int *max, enum sc_type *id, int16 *rate, int16 *arrow_rate, uint8 *flag, uint16 *duration);
typedef int (*HPMHOOK_post_pc_bonus_addeff) (int retVal___, struct s_addeffect *effect, int max, enum sc_type id, int16 rate, int16 arrow_rate, uint8 flag, uint16 duration);
typedef int (*HPMHOOK_pre_pc_bonus_addeff_onskill) (struct s_addeffectonskill **effect, int *max, enum sc_type *id, short *rate, short *skill_id, unsigned char *target);
typedef int (*HPMHOOK_post_pc_bonus_addeff_onskill) (int retVal___, struct s_addeffectonskill *effect, int max, enum sc_type id, short rate, short skill_id, unsigned char target);
-typedef int (*HPMHOOK_pre_pc_bonus_item_drop) (struct s_add_drop **drop, const short *max, short *id, short *group, int *race, int *rate);
-typedef int (*HPMHOOK_post_pc_bonus_item_drop) (int retVal___, struct s_add_drop *drop, const short max, short id, short group, int race, int rate);
-typedef void (*HPMHOOK_pre_pc_calcexp) (struct map_session_data **sd, unsigned int **base_exp, unsigned int **job_exp, struct block_list **src);
-typedef void (*HPMHOOK_post_pc_calcexp) (struct map_session_data *sd, unsigned int *base_exp, unsigned int *job_exp, struct block_list *src);
+typedef int (*HPMHOOK_pre_pc_bonus_item_drop) (struct s_add_drop **drop, const short *max, int *id, bool *is_group, int *race, int *rate);
+typedef int (*HPMHOOK_post_pc_bonus_item_drop) (int retVal___, struct s_add_drop *drop, const short max, int id, bool is_group, int race, int rate);
+typedef void (*HPMHOOK_pre_pc_calcexp) (struct map_session_data **sd, uint64 **base_exp, uint64 **job_exp, struct block_list **src);
+typedef void (*HPMHOOK_post_pc_calcexp) (struct map_session_data *sd, uint64 *base_exp, uint64 *job_exp, struct block_list *src);
typedef int (*HPMHOOK_pre_pc_respawn_timer) (int *tid, int64 *tick, int *id, intptr_t *data);
typedef int (*HPMHOOK_post_pc_respawn_timer) (int retVal___, int tid, int64 tick, int id, intptr_t data);
typedef int (*HPMHOOK_pre_pc_jobchange_killclone) (struct block_list **bl, va_list ap);
@@ -5522,6 +6282,8 @@ typedef int (*HPMHOOK_pre_pc_follow_timer) (int *tid, int64 *tick, int *id, intp
typedef int (*HPMHOOK_post_pc_follow_timer) (int retVal___, int tid, int64 tick, int id, intptr_t data);
typedef void (*HPMHOOK_pre_pc_read_skill_tree) (void);
typedef void (*HPMHOOK_post_pc_read_skill_tree) (void);
+typedef bool (*HPMHOOK_pre_pc_read_skill_job_skip) (short *skill_id, int *job_id);
+typedef bool (*HPMHOOK_post_pc_read_skill_job_skip) (bool retVal___, short skill_id, int job_id);
typedef void (*HPMHOOK_pre_pc_clear_skill_tree) (void);
typedef void (*HPMHOOK_post_pc_clear_skill_tree) (void);
typedef int (*HPMHOOK_pre_pc_isUseitem) (struct map_session_data **sd, int *n);
@@ -5554,6 +6316,14 @@ typedef bool (*HPMHOOK_pre_pc_db_checkid) (int *class);
typedef bool (*HPMHOOK_post_pc_db_checkid) (bool retVal___, int class);
typedef void (*HPMHOOK_pre_pc_validate_levels) (void);
typedef void (*HPMHOOK_post_pc_validate_levels) (void);
+typedef void (*HPMHOOK_pre_pc_update_job_and_level) (struct map_session_data **sd);
+typedef void (*HPMHOOK_post_pc_update_job_and_level) (struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_pc_clear_exp_groups) (void);
+typedef void (*HPMHOOK_post_pc_clear_exp_groups) (void);
+typedef void (*HPMHOOK_pre_pc_init_exp_groups) (void);
+typedef void (*HPMHOOK_post_pc_init_exp_groups) (void);
+typedef bool (*HPMHOOK_pre_pc_job_is_dummy) (int *job);
+typedef bool (*HPMHOOK_post_pc_job_is_dummy) (bool retVal___, int job);
typedef void (*HPMHOOK_pre_pc_autotrade_load) (void);
typedef void (*HPMHOOK_post_pc_autotrade_load) (void);
typedef void (*HPMHOOK_pre_pc_autotrade_update) (struct map_session_data **sd, enum e_pc_autotrade_update_action *action);
@@ -5578,6 +6348,12 @@ typedef void (*HPMHOOK_pre_pc_check_supernovice_call) (struct map_session_data *
typedef void (*HPMHOOK_post_pc_check_supernovice_call) (struct map_session_data *sd, const char *message);
typedef bool (*HPMHOOK_pre_pc_check_basicskill) (struct map_session_data **sd, int *level);
typedef bool (*HPMHOOK_post_pc_check_basicskill) (bool retVal___, struct map_session_data *sd, int level);
+typedef bool (*HPMHOOK_pre_pc_isDeathPenaltyJob) (uint16 *job);
+typedef bool (*HPMHOOK_post_pc_isDeathPenaltyJob) (bool retVal___, uint16 job);
+typedef bool (*HPMHOOK_pre_pc_has_second_costume) (struct map_session_data **sd);
+typedef bool (*HPMHOOK_post_pc_has_second_costume) (bool retVal___, struct map_session_data *sd);
+typedef bool (*HPMHOOK_pre_pc_expandInventory) (struct map_session_data **sd, int *adjustSize);
+typedef bool (*HPMHOOK_post_pc_expandInventory) (bool retVal___, struct map_session_data *sd, int adjustSize);
#endif // MAP_PC_H
#ifdef MAP_NPC_H /* libpcre */
typedef pcre* (*HPMHOOK_pre_libpcre_compile) (const char **pattern, int *options, const char ***errptr, int **erroffset, const unsigned char **tableptr);
@@ -5632,8 +6408,8 @@ typedef int (*HPMHOOK_pre_pet_birth_process) (struct map_session_data **sd, stru
typedef int (*HPMHOOK_post_pet_birth_process) (int retVal___, struct map_session_data *sd, struct s_pet *petinfo);
typedef int (*HPMHOOK_pre_pet_recv_petdata) (int *account_id, struct s_pet **p, int *flag);
typedef int (*HPMHOOK_post_pet_recv_petdata) (int retVal___, int account_id, struct s_pet *p, int flag);
-typedef int (*HPMHOOK_pre_pet_select_egg) (struct map_session_data **sd, short *egg_index);
-typedef int (*HPMHOOK_post_pet_select_egg) (int retVal___, struct map_session_data *sd, short egg_index);
+typedef int (*HPMHOOK_pre_pet_select_egg) (struct map_session_data **sd, int *egg_index);
+typedef int (*HPMHOOK_post_pet_select_egg) (int retVal___, struct map_session_data *sd, int egg_index);
typedef int (*HPMHOOK_pre_pet_catch_process1) (struct map_session_data **sd, int *target_class);
typedef int (*HPMHOOK_post_pet_catch_process1) (int retVal___, struct map_session_data *sd, int target_class);
typedef int (*HPMHOOK_pre_pet_catch_process2) (struct map_session_data **sd, int *target_id);
@@ -5672,8 +6448,18 @@ typedef int (*HPMHOOK_pre_pet_recovery_timer) (int *tid, int64 *tick, int *id, i
typedef int (*HPMHOOK_post_pet_recovery_timer) (int retVal___, int tid, int64 tick, int id, intptr_t data);
typedef int (*HPMHOOK_pre_pet_skill_support_timer) (int *tid, int64 *tick, int *id, intptr_t *data);
typedef int (*HPMHOOK_post_pet_skill_support_timer) (int retVal___, int tid, int64 tick, int id, intptr_t data);
-typedef int (*HPMHOOK_pre_pet_read_db) (void);
-typedef int (*HPMHOOK_post_pet_read_db) (int retVal___);
+typedef void (*HPMHOOK_pre_pet_read_db) (void);
+typedef void (*HPMHOOK_post_pet_read_db) (void);
+typedef int (*HPMHOOK_pre_pet_read_db_libconfig) (const char **filename, bool *ignore_missing);
+typedef int (*HPMHOOK_post_pet_read_db_libconfig) (int retVal___, const char *filename, bool ignore_missing);
+typedef int (*HPMHOOK_pre_pet_read_db_sub) (struct config_setting_t **it, int *n, const char **source);
+typedef int (*HPMHOOK_post_pet_read_db_sub) (int retVal___, struct config_setting_t *it, int n, const char *source);
+typedef bool (*HPMHOOK_pre_pet_read_db_sub_intimacy) (int *idx, struct config_setting_t **t);
+typedef bool (*HPMHOOK_post_pet_read_db_sub_intimacy) (bool retVal___, int idx, struct config_setting_t *t);
+typedef void (*HPMHOOK_pre_pet_read_db_clear) (void);
+typedef void (*HPMHOOK_post_pet_read_db_clear) (void);
+typedef void (*HPMHOOK_pre_pet_read_db_sub_evolution) (struct config_setting_t **t, int *n);
+typedef void (*HPMHOOK_post_pet_read_db_sub_evolution) (struct config_setting_t *t, int n);
#endif // MAP_PET_H
#ifdef CHAR_PINCODE_H /* pincode */
typedef void (*HPMHOOK_pre_pincode_handle) (int *fd, struct char_session_data **sd);
@@ -5684,18 +6470,30 @@ typedef void (*HPMHOOK_pre_pincode_error) (int *account_id);
typedef void (*HPMHOOK_post_pincode_error) (int account_id);
typedef void (*HPMHOOK_pre_pincode_update) (int *account_id, char **pin);
typedef void (*HPMHOOK_post_pincode_update) (int account_id, char *pin);
-typedef void (*HPMHOOK_pre_pincode_sendstate) (int *fd, struct char_session_data **sd, uint16 *state);
-typedef void (*HPMHOOK_post_pincode_sendstate) (int fd, struct char_session_data *sd, uint16 state);
+typedef void (*HPMHOOK_pre_pincode_makestate) (int *fd, struct char_session_data **sd, enum pincode_make_response *state);
+typedef void (*HPMHOOK_post_pincode_makestate) (int fd, struct char_session_data *sd, enum pincode_make_response state);
+typedef void (*HPMHOOK_pre_pincode_editstate) (int *fd, struct char_session_data **sd, enum pincode_edit_response *state);
+typedef void (*HPMHOOK_post_pincode_editstate) (int fd, struct char_session_data *sd, enum pincode_edit_response state);
+typedef void (*HPMHOOK_pre_pincode_loginstate) (int *fd, struct char_session_data **sd, enum pincode_login_response *state);
+typedef void (*HPMHOOK_post_pincode_loginstate) (int fd, struct char_session_data *sd, enum pincode_login_response state);
+typedef void (*HPMHOOK_pre_pincode_loginstate2) (int *fd, struct char_session_data **sd, enum pincode_login_response *state, enum pincode_login_response2 *flag);
+typedef void (*HPMHOOK_post_pincode_loginstate2) (int fd, struct char_session_data *sd, enum pincode_login_response state, enum pincode_login_response2 flag);
typedef void (*HPMHOOK_pre_pincode_setnew) (int *fd, struct char_session_data **sd);
typedef void (*HPMHOOK_post_pincode_setnew) (int fd, struct char_session_data *sd);
typedef void (*HPMHOOK_pre_pincode_change) (int *fd, struct char_session_data **sd);
typedef void (*HPMHOOK_post_pincode_change) (int fd, struct char_session_data *sd);
+typedef bool (*HPMHOOK_pre_pincode_isBlacklisted) (const char **pin);
+typedef bool (*HPMHOOK_post_pincode_isBlacklisted) (bool retVal___, const char *pin);
typedef int (*HPMHOOK_pre_pincode_compare) (int *fd, struct char_session_data **sd, char **pin);
typedef int (*HPMHOOK_post_pincode_compare) (int retVal___, int fd, struct char_session_data *sd, char *pin);
typedef void (*HPMHOOK_pre_pincode_check) (int *fd, struct char_session_data **sd);
typedef void (*HPMHOOK_post_pincode_check) (int fd, struct char_session_data *sd);
typedef bool (*HPMHOOK_pre_pincode_config_read) (const char **filename, const struct config_t **config, bool *imported);
typedef bool (*HPMHOOK_post_pincode_config_read) (bool retVal___, const char *filename, const struct config_t *config, bool imported);
+typedef void (*HPMHOOK_pre_pincode_init) (void);
+typedef void (*HPMHOOK_post_pincode_init) (void);
+typedef void (*HPMHOOK_pre_pincode_final) (void);
+typedef void (*HPMHOOK_post_pincode_final) (void);
#endif // CHAR_PINCODE_H
#ifdef MAP_QUEST_H /* quest */
typedef void (*HPMHOOK_pre_quest_init) (bool *minimal);
@@ -5708,8 +6506,8 @@ typedef struct quest_db* (*HPMHOOK_pre_quest_db) (int *quest_id);
typedef struct quest_db* (*HPMHOOK_post_quest_db) (struct quest_db* retVal___, int quest_id);
typedef int (*HPMHOOK_pre_quest_pc_login) (struct map_session_data **sd);
typedef int (*HPMHOOK_post_quest_pc_login) (int retVal___, struct map_session_data *sd);
-typedef int (*HPMHOOK_pre_quest_add) (struct map_session_data **sd, int *quest_id);
-typedef int (*HPMHOOK_post_quest_add) (int retVal___, struct map_session_data *sd, int quest_id);
+typedef int (*HPMHOOK_pre_quest_add) (struct map_session_data **sd, int *quest_id, unsigned int *time_limit);
+typedef int (*HPMHOOK_post_quest_add) (int retVal___, struct map_session_data *sd, int quest_id, unsigned int time_limit);
typedef int (*HPMHOOK_pre_quest_change) (struct map_session_data **sd, int *qid1, int *qid2);
typedef int (*HPMHOOK_post_quest_change) (int retVal___, struct map_session_data *sd, int qid1, int qid2);
typedef int (*HPMHOOK_pre_quest_delete) (struct map_session_data **sd, int *quest_id);
@@ -5728,6 +6526,32 @@ typedef int (*HPMHOOK_pre_quest_read_db) (void);
typedef int (*HPMHOOK_post_quest_read_db) (int retVal___);
typedef struct quest_db* (*HPMHOOK_pre_quest_read_db_sub) (struct config_setting_t **cs, int *n, const char **source);
typedef struct quest_db* (*HPMHOOK_post_quest_read_db_sub) (struct quest_db* retVal___, struct config_setting_t *cs, int n, const char *source);
+typedef int (*HPMHOOK_pre_quest_questinfo_validate_icon) (int *icon);
+typedef int (*HPMHOOK_post_quest_questinfo_validate_icon) (int retVal___, int icon);
+typedef void (*HPMHOOK_pre_quest_questinfo_refresh) (struct map_session_data **sd);
+typedef void (*HPMHOOK_post_quest_questinfo_refresh) (struct map_session_data *sd);
+typedef bool (*HPMHOOK_pre_quest_questinfo_validate) (struct map_session_data **sd, struct questinfo **qi);
+typedef bool (*HPMHOOK_post_quest_questinfo_validate) (bool retVal___, struct map_session_data *sd, struct questinfo *qi);
+typedef bool (*HPMHOOK_pre_quest_questinfo_validate_job) (struct map_session_data **sd, struct questinfo **qi);
+typedef bool (*HPMHOOK_post_quest_questinfo_validate_job) (bool retVal___, struct map_session_data *sd, struct questinfo *qi);
+typedef bool (*HPMHOOK_pre_quest_questinfo_validate_sex) (struct map_session_data **sd, struct questinfo **qi);
+typedef bool (*HPMHOOK_post_quest_questinfo_validate_sex) (bool retVal___, struct map_session_data *sd, struct questinfo *qi);
+typedef bool (*HPMHOOK_pre_quest_questinfo_validate_baselevel) (struct map_session_data **sd, struct questinfo **qi);
+typedef bool (*HPMHOOK_post_quest_questinfo_validate_baselevel) (bool retVal___, struct map_session_data *sd, struct questinfo *qi);
+typedef bool (*HPMHOOK_pre_quest_questinfo_validate_joblevel) (struct map_session_data **sd, struct questinfo **qi);
+typedef bool (*HPMHOOK_post_quest_questinfo_validate_joblevel) (bool retVal___, struct map_session_data *sd, struct questinfo *qi);
+typedef bool (*HPMHOOK_pre_quest_questinfo_validate_items) (struct map_session_data **sd, struct questinfo **qi);
+typedef bool (*HPMHOOK_post_quest_questinfo_validate_items) (bool retVal___, struct map_session_data *sd, struct questinfo *qi);
+typedef bool (*HPMHOOK_pre_quest_questinfo_validate_homunculus_level) (struct map_session_data **sd, struct questinfo **qi);
+typedef bool (*HPMHOOK_post_quest_questinfo_validate_homunculus_level) (bool retVal___, struct map_session_data *sd, struct questinfo *qi);
+typedef bool (*HPMHOOK_pre_quest_questinfo_validate_homunculus_type) (struct map_session_data **sd, struct questinfo **qi);
+typedef bool (*HPMHOOK_post_quest_questinfo_validate_homunculus_type) (bool retVal___, struct map_session_data *sd, struct questinfo *qi);
+typedef bool (*HPMHOOK_pre_quest_questinfo_validate_quests) (struct map_session_data **sd, struct questinfo **qi);
+typedef bool (*HPMHOOK_post_quest_questinfo_validate_quests) (bool retVal___, struct map_session_data *sd, struct questinfo *qi);
+typedef bool (*HPMHOOK_pre_quest_questinfo_validate_mercenary_class) (struct map_session_data **sd, struct questinfo **qi);
+typedef bool (*HPMHOOK_post_quest_questinfo_validate_mercenary_class) (bool retVal___, struct map_session_data *sd, struct questinfo *qi);
+typedef void (*HPMHOOK_pre_quest_questinfo_vector_clear) (int *m);
+typedef void (*HPMHOOK_post_quest_questinfo_vector_clear) (int m);
#endif // MAP_QUEST_H
#ifdef COMMON_RANDOM_H /* rnd */
typedef void (*HPMHOOK_pre_rnd_init) (void);
@@ -5747,6 +6571,42 @@ typedef double (*HPMHOOK_post_rnd_uniform) (double retVal___);
typedef double (*HPMHOOK_pre_rnd_uniform53) (void);
typedef double (*HPMHOOK_post_rnd_uniform53) (double retVal___);
#endif // COMMON_RANDOM_H
+#ifdef MAP_RODEX_H /* rodex */
+typedef void (*HPMHOOK_pre_rodex_init) (bool *minimal);
+typedef void (*HPMHOOK_post_rodex_init) (bool minimal);
+typedef void (*HPMHOOK_pre_rodex_final) (void);
+typedef void (*HPMHOOK_post_rodex_final) (void);
+typedef bool (*HPMHOOK_pre_rodex_isenabled) (void);
+typedef bool (*HPMHOOK_post_rodex_isenabled) (bool retVal___);
+typedef void (*HPMHOOK_pre_rodex_open) (struct map_session_data **sd, int8 *open_type, int64 *first_mail_id);
+typedef void (*HPMHOOK_post_rodex_open) (struct map_session_data *sd, int8 open_type, int64 first_mail_id);
+typedef void (*HPMHOOK_pre_rodex_next_page) (struct map_session_data **sd, int8 *open_type, int64 *last_mail_id);
+typedef void (*HPMHOOK_post_rodex_next_page) (struct map_session_data *sd, int8 open_type, int64 last_mail_id);
+typedef void (*HPMHOOK_pre_rodex_refresh) (struct map_session_data **sd, int8 *open_type, int64 *first_mail_id);
+typedef void (*HPMHOOK_post_rodex_refresh) (struct map_session_data *sd, int8 open_type, int64 first_mail_id);
+typedef void (*HPMHOOK_pre_rodex_add_item) (struct map_session_data **sd, int16 *idx, int16 *amount);
+typedef void (*HPMHOOK_post_rodex_add_item) (struct map_session_data *sd, int16 idx, int16 amount);
+typedef void (*HPMHOOK_pre_rodex_remove_item) (struct map_session_data **sd, int16 *idx, int16 *amount);
+typedef void (*HPMHOOK_post_rodex_remove_item) (struct map_session_data *sd, int16 idx, int16 amount);
+typedef void (*HPMHOOK_pre_rodex_check_player) (struct map_session_data **sd, const char **name, int **base_level, int **char_id, short **class);
+typedef void (*HPMHOOK_post_rodex_check_player) (struct map_session_data *sd, const char *name, int *base_level, int *char_id, short *class);
+typedef int (*HPMHOOK_pre_rodex_send_mail) (struct map_session_data **sd, const char **receiver_name, const char **body, const char **title, int64 *zeny);
+typedef int (*HPMHOOK_post_rodex_send_mail) (int retVal___, struct map_session_data *sd, const char *receiver_name, const char *body, const char *title, int64 zeny);
+typedef void (*HPMHOOK_pre_rodex_send_mail_result) (struct map_session_data **ssd, struct map_session_data **rsd, bool *result);
+typedef void (*HPMHOOK_post_rodex_send_mail_result) (struct map_session_data *ssd, struct map_session_data *rsd, bool result);
+typedef struct rodex_message* (*HPMHOOK_pre_rodex_get_mail) (struct map_session_data **sd, int64 *mail_id);
+typedef struct rodex_message* (*HPMHOOK_post_rodex_get_mail) (struct rodex_message* retVal___, struct map_session_data *sd, int64 mail_id);
+typedef void (*HPMHOOK_pre_rodex_read_mail) (struct map_session_data **sd, int64 *mail_id);
+typedef void (*HPMHOOK_post_rodex_read_mail) (struct map_session_data *sd, int64 mail_id);
+typedef void (*HPMHOOK_pre_rodex_get_zeny) (struct map_session_data **sd, int8 *opentype, int64 *mail_id);
+typedef void (*HPMHOOK_post_rodex_get_zeny) (struct map_session_data *sd, int8 opentype, int64 mail_id);
+typedef void (*HPMHOOK_pre_rodex_get_items) (struct map_session_data **sd, int8 *opentype, int64 *mail_id);
+typedef void (*HPMHOOK_post_rodex_get_items) (struct map_session_data *sd, int8 opentype, int64 mail_id);
+typedef void (*HPMHOOK_pre_rodex_delete_mail) (struct map_session_data **sd, int64 *mail_id);
+typedef void (*HPMHOOK_post_rodex_delete_mail) (struct map_session_data *sd, int64 mail_id);
+typedef void (*HPMHOOK_pre_rodex_clean) (struct map_session_data **sd, int8 *flag);
+typedef void (*HPMHOOK_post_rodex_clean) (struct map_session_data *sd, int8 flag);
+#endif // MAP_RODEX_H
#ifdef MAP_SCRIPT_H /* script */
typedef void (*HPMHOOK_pre_script_init) (bool *minimal);
typedef void (*HPMHOOK_post_script_init) (bool minimal);
@@ -5790,6 +6650,8 @@ typedef struct script_data* (*HPMHOOK_pre_script_get_val) (struct script_state *
typedef struct script_data* (*HPMHOOK_post_script_get_val) (struct script_data* retVal___, struct script_state *st, struct script_data *data);
typedef char* (*HPMHOOK_pre_script_get_val_ref_str) (struct script_state **st, struct reg_db **n, struct script_data **data);
typedef char* (*HPMHOOK_post_script_get_val_ref_str) (char* retVal___, struct script_state *st, struct reg_db *n, struct script_data *data);
+typedef char* (*HPMHOOK_pre_script_get_val_pc_ref_str) (struct script_state **st, struct reg_db **n, struct script_data **data);
+typedef char* (*HPMHOOK_post_script_get_val_pc_ref_str) (char* retVal___, struct script_state *st, struct reg_db *n, struct script_data *data);
typedef char* (*HPMHOOK_pre_script_get_val_scope_str) (struct script_state **st, struct reg_db **n, struct script_data **data);
typedef char* (*HPMHOOK_post_script_get_val_scope_str) (char* retVal___, struct script_state *st, struct reg_db *n, struct script_data *data);
typedef char* (*HPMHOOK_pre_script_get_val_npc_str) (struct script_state **st, struct reg_db **n, struct script_data **data);
@@ -5798,6 +6660,8 @@ typedef char* (*HPMHOOK_pre_script_get_val_instance_str) (struct script_state **
typedef char* (*HPMHOOK_post_script_get_val_instance_str) (char* retVal___, struct script_state *st, const char *name, struct script_data *data);
typedef int (*HPMHOOK_pre_script_get_val_ref_num) (struct script_state **st, struct reg_db **n, struct script_data **data);
typedef int (*HPMHOOK_post_script_get_val_ref_num) (int retVal___, struct script_state *st, struct reg_db *n, struct script_data *data);
+typedef int (*HPMHOOK_pre_script_get_val_pc_ref_num) (struct script_state **st, struct reg_db **n, struct script_data **data);
+typedef int (*HPMHOOK_post_script_get_val_pc_ref_num) (int retVal___, struct script_state *st, struct reg_db *n, struct script_data *data);
typedef int (*HPMHOOK_pre_script_get_val_scope_num) (struct script_state **st, struct reg_db **n, struct script_data **data);
typedef int (*HPMHOOK_post_script_get_val_scope_num) (int retVal___, struct script_state *st, struct reg_db *n, struct script_data *data);
typedef int (*HPMHOOK_pre_script_get_val_npc_num) (struct script_state **st, struct reg_db **n, struct script_data **data);
@@ -5856,6 +6720,8 @@ typedef bool (*HPMHOOK_pre_script_config_read) (const char **filename, bool *imp
typedef bool (*HPMHOOK_post_script_config_read) (bool retVal___, const char *filename, bool imported);
typedef int (*HPMHOOK_pre_script_add_str) (const char **p);
typedef int (*HPMHOOK_post_script_add_str) (int retVal___, const char *p);
+typedef int (*HPMHOOK_pre_script_add_variable) (const char **varname);
+typedef int (*HPMHOOK_post_script_add_variable) (int retVal___, const char *varname);
typedef const char* (*HPMHOOK_pre_script_get_str) (int *id);
typedef const char* (*HPMHOOK_post_script_get_str) (const char* retVal___, int id);
typedef int (*HPMHOOK_pre_script_search_str) (const char **p);
@@ -5938,8 +6804,8 @@ typedef const char* (*HPMHOOK_pre_script_parse_expr) (const char **p);
typedef const char* (*HPMHOOK_post_script_parse_expr) (const char* retVal___, const char *p);
typedef const char* (*HPMHOOK_pre_script_parse_line) (const char **p);
typedef const char* (*HPMHOOK_post_script_parse_line) (const char* retVal___, const char *p);
-typedef void (*HPMHOOK_pre_script_read_constdb) (void);
-typedef void (*HPMHOOK_post_script_read_constdb) (void);
+typedef void (*HPMHOOK_pre_script_read_constdb) (bool *reload);
+typedef void (*HPMHOOK_post_script_read_constdb) (bool reload);
typedef void (*HPMHOOK_pre_script_constdb_comment) (const char **comment);
typedef void (*HPMHOOK_post_script_constdb_comment) (const char *comment);
typedef void (*HPMHOOK_pre_script_load_parameters) (void);
@@ -5952,6 +6818,8 @@ typedef int (*HPMHOOK_pre_script_set_reg) (struct script_state **st, struct map_
typedef int (*HPMHOOK_post_script_set_reg) (int retVal___, struct script_state *st, struct map_session_data *sd, int64 num, const char *name, const void *value, struct reg_db *ref);
typedef void (*HPMHOOK_pre_script_set_reg_ref_str) (struct script_state **st, struct reg_db **n, int64 *num, const char **name, const char **str);
typedef void (*HPMHOOK_post_script_set_reg_ref_str) (struct script_state *st, struct reg_db *n, int64 num, const char *name, const char *str);
+typedef void (*HPMHOOK_pre_script_set_reg_pc_ref_str) (struct script_state **st, struct reg_db **n, int64 *num, const char **name, const char **str);
+typedef void (*HPMHOOK_post_script_set_reg_pc_ref_str) (struct script_state *st, struct reg_db *n, int64 num, const char *name, const char *str);
typedef void (*HPMHOOK_pre_script_set_reg_scope_str) (struct script_state **st, struct reg_db **n, int64 *num, const char **name, const char **str);
typedef void (*HPMHOOK_post_script_set_reg_scope_str) (struct script_state *st, struct reg_db *n, int64 num, const char *name, const char *str);
typedef void (*HPMHOOK_pre_script_set_reg_npc_str) (struct script_state **st, struct reg_db **n, int64 *num, const char **name, const char **str);
@@ -5960,6 +6828,8 @@ typedef void (*HPMHOOK_pre_script_set_reg_instance_str) (struct script_state **s
typedef void (*HPMHOOK_post_script_set_reg_instance_str) (struct script_state *st, int64 num, const char *name, const char *str);
typedef void (*HPMHOOK_pre_script_set_reg_ref_num) (struct script_state **st, struct reg_db **n, int64 *num, const char **name, int *val);
typedef void (*HPMHOOK_post_script_set_reg_ref_num) (struct script_state *st, struct reg_db *n, int64 num, const char *name, int val);
+typedef void (*HPMHOOK_pre_script_set_reg_pc_ref_num) (struct script_state **st, struct reg_db **n, int64 *num, const char **name, int *val);
+typedef void (*HPMHOOK_post_script_set_reg_pc_ref_num) (struct script_state *st, struct reg_db *n, int64 num, const char *name, int val);
typedef void (*HPMHOOK_pre_script_set_reg_scope_num) (struct script_state **st, struct reg_db **n, int64 *num, const char **name, int *val);
typedef void (*HPMHOOK_post_script_set_reg_scope_num) (struct script_state *st, struct reg_db *n, int64 num, const char *name, int val);
typedef void (*HPMHOOK_pre_script_set_reg_npc_num) (struct script_state **st, struct reg_db **n, int64 *num, const char **name, int *val);
@@ -5990,6 +6860,12 @@ typedef void (*HPMHOOK_pre_script_add_autobonus) (const char **autobonus);
typedef void (*HPMHOOK_post_script_add_autobonus) (const char *autobonus);
typedef int (*HPMHOOK_pre_script_menu_countoptions) (const char **str, int *max_count, int **total);
typedef int (*HPMHOOK_post_script_menu_countoptions) (int retVal___, const char *str, int max_count, int *total);
+typedef int (*HPMHOOK_pre_script_buildin_recovery_sub) (struct map_session_data **sd);
+typedef int (*HPMHOOK_post_script_buildin_recovery_sub) (int retVal___, struct map_session_data *sd);
+typedef int (*HPMHOOK_pre_script_buildin_recovery_pc_sub) (struct map_session_data **sd, va_list ap);
+typedef int (*HPMHOOK_post_script_buildin_recovery_pc_sub) (int retVal___, struct map_session_data *sd, va_list ap);
+typedef int (*HPMHOOK_pre_script_buildin_recovery_bl_sub) (struct block_list **bl, va_list ap);
+typedef int (*HPMHOOK_post_script_buildin_recovery_bl_sub) (int retVal___, struct block_list *bl, va_list ap);
typedef int (*HPMHOOK_pre_script_buildin_areawarp_sub) (struct block_list **bl, va_list ap);
typedef int (*HPMHOOK_post_script_buildin_areawarp_sub) (int retVal___, struct block_list *bl, va_list ap);
typedef int (*HPMHOOK_pre_script_buildin_areapercentheal_sub) (struct block_list **bl, va_list ap);
@@ -6038,6 +6914,8 @@ typedef int (*HPMHOOK_pre_script_cleanfloor_sub) (struct block_list **bl, va_lis
typedef int (*HPMHOOK_post_script_cleanfloor_sub) (int retVal___, struct block_list *bl, va_list ap);
typedef int (*HPMHOOK_pre_script_run_func) (struct script_state **st);
typedef int (*HPMHOOK_post_script_run_func) (int retVal___, struct script_state *st);
+typedef bool (*HPMHOOK_pre_script_sprintf_helper) (struct script_state **st, int *start, struct StringBuf **out);
+typedef bool (*HPMHOOK_post_script_sprintf_helper) (bool retVal___, struct script_state *st, int start, struct StringBuf *out);
typedef const char* (*HPMHOOK_pre_script_getfuncname) (struct script_state **st);
typedef const char* (*HPMHOOK_post_script_getfuncname) (const char* retVal___, struct script_state *st);
typedef unsigned int (*HPMHOOK_pre_script_calc_hash_ci) (const char **p);
@@ -6102,8 +6980,8 @@ typedef void (*HPMHOOK_post_script_run_item_unequip_script) (struct map_session_
#ifdef MAP_SEARCHSTORE_H /* searchstore */
typedef bool (*HPMHOOK_pre_searchstore_open) (struct map_session_data **sd, unsigned int *uses, unsigned short *effect);
typedef bool (*HPMHOOK_post_searchstore_open) (bool retVal___, struct map_session_data *sd, unsigned int uses, unsigned short effect);
-typedef void (*HPMHOOK_pre_searchstore_query) (struct map_session_data **sd, unsigned char *type, unsigned int *min_price, unsigned int *max_price, const unsigned short **itemlist, unsigned int *item_count, const unsigned short **cardlist, unsigned int *card_count);
-typedef void (*HPMHOOK_post_searchstore_query) (struct map_session_data *sd, unsigned char type, unsigned int min_price, unsigned int max_price, const unsigned short *itemlist, unsigned int item_count, const unsigned short *cardlist, unsigned int card_count);
+typedef void (*HPMHOOK_pre_searchstore_query) (struct map_session_data **sd, unsigned char *type, unsigned int *min_price, unsigned int *max_price, const uint32 **itemlist, unsigned int *item_count, const uint32 **cardlist, unsigned int *card_count);
+typedef void (*HPMHOOK_post_searchstore_query) (struct map_session_data *sd, unsigned char type, unsigned int min_price, unsigned int max_price, const uint32 *itemlist, unsigned int item_count, const uint32 *cardlist, unsigned int card_count);
typedef bool (*HPMHOOK_pre_searchstore_querynext) (struct map_session_data **sd);
typedef bool (*HPMHOOK_post_searchstore_querynext) (bool retVal___, struct map_session_data *sd);
typedef void (*HPMHOOK_pre_searchstore_next) (struct map_session_data **sd);
@@ -6112,14 +6990,14 @@ typedef void (*HPMHOOK_pre_searchstore_clear) (struct map_session_data **sd);
typedef void (*HPMHOOK_post_searchstore_clear) (struct map_session_data *sd);
typedef void (*HPMHOOK_pre_searchstore_close) (struct map_session_data **sd);
typedef void (*HPMHOOK_post_searchstore_close) (struct map_session_data *sd);
-typedef void (*HPMHOOK_pre_searchstore_click) (struct map_session_data **sd, int *account_id, int *store_id, unsigned short *nameid);
-typedef void (*HPMHOOK_post_searchstore_click) (struct map_session_data *sd, int account_id, int store_id, unsigned short nameid);
+typedef void (*HPMHOOK_pre_searchstore_click) (struct map_session_data **sd, int *account_id, int *store_id, int *nameid);
+typedef void (*HPMHOOK_post_searchstore_click) (struct map_session_data *sd, int account_id, int store_id, int nameid);
typedef bool (*HPMHOOK_pre_searchstore_queryremote) (struct map_session_data **sd, int *account_id);
typedef bool (*HPMHOOK_post_searchstore_queryremote) (bool retVal___, struct map_session_data *sd, int account_id);
typedef void (*HPMHOOK_pre_searchstore_clearremote) (struct map_session_data **sd);
typedef void (*HPMHOOK_post_searchstore_clearremote) (struct map_session_data *sd);
-typedef bool (*HPMHOOK_pre_searchstore_result) (struct map_session_data **sd, unsigned int *store_id, int *account_id, const char **store_name, unsigned short *nameid, unsigned short *amount, unsigned int *price, const short **card, unsigned char *refine);
-typedef bool (*HPMHOOK_post_searchstore_result) (bool retVal___, struct map_session_data *sd, unsigned int store_id, int account_id, const char *store_name, unsigned short nameid, unsigned short amount, unsigned int price, const short *card, unsigned char refine);
+typedef bool (*HPMHOOK_pre_searchstore_result) (struct map_session_data **sd, unsigned int *store_id, int *account_id, const char **store_name, int *nameid, unsigned short *amount, unsigned int *price, const int **card, unsigned char *refine, const struct item_option **option);
+typedef bool (*HPMHOOK_post_searchstore_result) (bool retVal___, struct map_session_data *sd, unsigned int store_id, int account_id, const char *store_name, int nameid, unsigned short amount, unsigned int price, const int *card, unsigned char refine, const struct item_option *option);
#endif // MAP_SEARCHSTORE_H
#ifdef COMMON_SHOWMSG_H /* showmsg */
typedef void (*HPMHOOK_pre_showmsg_init) (void);
@@ -6140,98 +7018,104 @@ typedef void (*HPMHOOK_pre_skill_reload) (void);
typedef void (*HPMHOOK_post_skill_reload) (void);
typedef void (*HPMHOOK_pre_skill_read_db) (bool *minimal);
typedef void (*HPMHOOK_post_skill_read_db) (bool minimal);
-typedef int (*HPMHOOK_pre_skill_get_index) (uint16 *skill_id);
-typedef int (*HPMHOOK_post_skill_get_index) (int retVal___, uint16 skill_id);
-typedef int (*HPMHOOK_pre_skill_get_type) (uint16 *skill_id);
-typedef int (*HPMHOOK_post_skill_get_type) (int retVal___, uint16 skill_id);
-typedef int (*HPMHOOK_pre_skill_get_hit) (uint16 *skill_id);
-typedef int (*HPMHOOK_post_skill_get_hit) (int retVal___, uint16 skill_id);
-typedef int (*HPMHOOK_pre_skill_get_inf) (uint16 *skill_id);
-typedef int (*HPMHOOK_post_skill_get_inf) (int retVal___, uint16 skill_id);
-typedef int (*HPMHOOK_pre_skill_get_ele) (uint16 *skill_id, uint16 *skill_lv);
-typedef int (*HPMHOOK_post_skill_get_ele) (int retVal___, uint16 skill_id, uint16 skill_lv);
-typedef int (*HPMHOOK_pre_skill_get_nk) (uint16 *skill_id);
-typedef int (*HPMHOOK_post_skill_get_nk) (int retVal___, uint16 skill_id);
-typedef int (*HPMHOOK_pre_skill_get_max) (uint16 *skill_id);
-typedef int (*HPMHOOK_post_skill_get_max) (int retVal___, uint16 skill_id);
-typedef int (*HPMHOOK_pre_skill_get_range) (uint16 *skill_id, uint16 *skill_lv);
-typedef int (*HPMHOOK_post_skill_get_range) (int retVal___, uint16 skill_id, uint16 skill_lv);
-typedef int (*HPMHOOK_pre_skill_get_range2) (struct block_list **bl, uint16 *skill_id, uint16 *skill_lv);
-typedef int (*HPMHOOK_post_skill_get_range2) (int retVal___, struct block_list *bl, uint16 skill_id, uint16 skill_lv);
-typedef int (*HPMHOOK_pre_skill_get_splash) (uint16 *skill_id, uint16 *skill_lv);
-typedef int (*HPMHOOK_post_skill_get_splash) (int retVal___, uint16 skill_id, uint16 skill_lv);
-typedef int (*HPMHOOK_pre_skill_get_hp) (uint16 *skill_id, uint16 *skill_lv);
-typedef int (*HPMHOOK_post_skill_get_hp) (int retVal___, uint16 skill_id, uint16 skill_lv);
-typedef int (*HPMHOOK_pre_skill_get_mhp) (uint16 *skill_id, uint16 *skill_lv);
-typedef int (*HPMHOOK_post_skill_get_mhp) (int retVal___, uint16 skill_id, uint16 skill_lv);
-typedef int (*HPMHOOK_pre_skill_get_sp) (uint16 *skill_id, uint16 *skill_lv);
-typedef int (*HPMHOOK_post_skill_get_sp) (int retVal___, uint16 skill_id, uint16 skill_lv);
-typedef int (*HPMHOOK_pre_skill_get_state) (uint16 *skill_id);
-typedef int (*HPMHOOK_post_skill_get_state) (int retVal___, uint16 skill_id);
-typedef int (*HPMHOOK_pre_skill_get_spiritball) (uint16 *skill_id, uint16 *skill_lv);
-typedef int (*HPMHOOK_post_skill_get_spiritball) (int retVal___, uint16 skill_id, uint16 skill_lv);
-typedef int (*HPMHOOK_pre_skill_get_zeny) (uint16 *skill_id, uint16 *skill_lv);
-typedef int (*HPMHOOK_post_skill_get_zeny) (int retVal___, uint16 skill_id, uint16 skill_lv);
-typedef int (*HPMHOOK_pre_skill_get_num) (uint16 *skill_id, uint16 *skill_lv);
-typedef int (*HPMHOOK_post_skill_get_num) (int retVal___, uint16 skill_id, uint16 skill_lv);
-typedef int (*HPMHOOK_pre_skill_get_cast) (uint16 *skill_id, uint16 *skill_lv);
-typedef int (*HPMHOOK_post_skill_get_cast) (int retVal___, uint16 skill_id, uint16 skill_lv);
-typedef int (*HPMHOOK_pre_skill_get_delay) (uint16 *skill_id, uint16 *skill_lv);
-typedef int (*HPMHOOK_post_skill_get_delay) (int retVal___, uint16 skill_id, uint16 skill_lv);
-typedef int (*HPMHOOK_pre_skill_get_walkdelay) (uint16 *skill_id, uint16 *skill_lv);
-typedef int (*HPMHOOK_post_skill_get_walkdelay) (int retVal___, uint16 skill_id, uint16 skill_lv);
-typedef int (*HPMHOOK_pre_skill_get_time) (uint16 *skill_id, uint16 *skill_lv);
-typedef int (*HPMHOOK_post_skill_get_time) (int retVal___, uint16 skill_id, uint16 skill_lv);
-typedef int (*HPMHOOK_pre_skill_get_time2) (uint16 *skill_id, uint16 *skill_lv);
-typedef int (*HPMHOOK_post_skill_get_time2) (int retVal___, uint16 skill_id, uint16 skill_lv);
-typedef int (*HPMHOOK_pre_skill_get_castnodex) (uint16 *skill_id, uint16 *skill_lv);
-typedef int (*HPMHOOK_post_skill_get_castnodex) (int retVal___, uint16 skill_id, uint16 skill_lv);
-typedef int (*HPMHOOK_pre_skill_get_delaynodex) (uint16 *skill_id, uint16 *skill_lv);
-typedef int (*HPMHOOK_post_skill_get_delaynodex) (int retVal___, uint16 skill_id, uint16 skill_lv);
-typedef int (*HPMHOOK_pre_skill_get_castdef) (uint16 *skill_id);
-typedef int (*HPMHOOK_post_skill_get_castdef) (int retVal___, uint16 skill_id);
-typedef int (*HPMHOOK_pre_skill_get_weapontype) (uint16 *skill_id);
-typedef int (*HPMHOOK_post_skill_get_weapontype) (int retVal___, uint16 skill_id);
-typedef int (*HPMHOOK_pre_skill_get_ammotype) (uint16 *skill_id);
-typedef int (*HPMHOOK_post_skill_get_ammotype) (int retVal___, uint16 skill_id);
-typedef int (*HPMHOOK_pre_skill_get_ammo_qty) (uint16 *skill_id, uint16 *skill_lv);
-typedef int (*HPMHOOK_post_skill_get_ammo_qty) (int retVal___, uint16 skill_id, uint16 skill_lv);
-typedef int (*HPMHOOK_pre_skill_get_unit_id) (uint16 *skill_id, int *flag);
-typedef int (*HPMHOOK_post_skill_get_unit_id) (int retVal___, uint16 skill_id, int flag);
-typedef int (*HPMHOOK_pre_skill_get_inf2) (uint16 *skill_id);
-typedef int (*HPMHOOK_post_skill_get_inf2) (int retVal___, uint16 skill_id);
-typedef int (*HPMHOOK_pre_skill_get_castcancel) (uint16 *skill_id);
-typedef int (*HPMHOOK_post_skill_get_castcancel) (int retVal___, uint16 skill_id);
-typedef int (*HPMHOOK_pre_skill_get_maxcount) (uint16 *skill_id, uint16 *skill_lv);
-typedef int (*HPMHOOK_post_skill_get_maxcount) (int retVal___, uint16 skill_id, uint16 skill_lv);
-typedef int (*HPMHOOK_pre_skill_get_blewcount) (uint16 *skill_id, uint16 *skill_lv);
-typedef int (*HPMHOOK_post_skill_get_blewcount) (int retVal___, uint16 skill_id, uint16 skill_lv);
-typedef int (*HPMHOOK_pre_skill_get_unit_flag) (uint16 *skill_id);
-typedef int (*HPMHOOK_post_skill_get_unit_flag) (int retVal___, uint16 skill_id);
-typedef int (*HPMHOOK_pre_skill_get_unit_target) (uint16 *skill_id);
-typedef int (*HPMHOOK_post_skill_get_unit_target) (int retVal___, uint16 skill_id);
-typedef int (*HPMHOOK_pre_skill_get_unit_interval) (uint16 *skill_id);
-typedef int (*HPMHOOK_post_skill_get_unit_interval) (int retVal___, uint16 skill_id);
-typedef int (*HPMHOOK_pre_skill_get_unit_bl_target) (uint16 *skill_id);
-typedef int (*HPMHOOK_post_skill_get_unit_bl_target) (int retVal___, uint16 skill_id);
-typedef int (*HPMHOOK_pre_skill_get_unit_layout_type) (uint16 *skill_id, uint16 *skill_lv);
-typedef int (*HPMHOOK_post_skill_get_unit_layout_type) (int retVal___, uint16 skill_id, uint16 skill_lv);
-typedef int (*HPMHOOK_pre_skill_get_unit_range) (uint16 *skill_id, uint16 *skill_lv);
-typedef int (*HPMHOOK_post_skill_get_unit_range) (int retVal___, uint16 skill_id, uint16 skill_lv);
-typedef int (*HPMHOOK_pre_skill_get_cooldown) (uint16 *skill_id, uint16 *skill_lv);
-typedef int (*HPMHOOK_post_skill_get_cooldown) (int retVal___, uint16 skill_id, uint16 skill_lv);
-typedef int (*HPMHOOK_pre_skill_tree_get_max) (uint16 *skill_id, int *class);
-typedef int (*HPMHOOK_post_skill_tree_get_max) (int retVal___, uint16 skill_id, int class);
-typedef const char* (*HPMHOOK_pre_skill_get_name) (uint16 *skill_id);
-typedef const char* (*HPMHOOK_post_skill_get_name) (const char* retVal___, uint16 skill_id);
-typedef const char* (*HPMHOOK_pre_skill_get_desc) (uint16 *skill_id);
-typedef const char* (*HPMHOOK_post_skill_get_desc) (const char* retVal___, uint16 skill_id);
-typedef void (*HPMHOOK_pre_skill_chk) (uint16 **skill_id);
-typedef void (*HPMHOOK_post_skill_chk) (uint16 *skill_id);
-typedef int (*HPMHOOK_pre_skill_get_casttype) (uint16 *skill_id);
-typedef int (*HPMHOOK_post_skill_get_casttype) (int retVal___, uint16 skill_id);
-typedef int (*HPMHOOK_pre_skill_get_casttype2) (uint16 *index);
-typedef int (*HPMHOOK_post_skill_get_casttype2) (int retVal___, uint16 index);
+typedef int (*HPMHOOK_pre_skill_get_index) (int *skill_id);
+typedef int (*HPMHOOK_post_skill_get_index) (int retVal___, int skill_id);
+typedef int (*HPMHOOK_pre_skill_get_type) (int *skill_id);
+typedef int (*HPMHOOK_post_skill_get_type) (int retVal___, int skill_id);
+typedef int (*HPMHOOK_pre_skill_get_hit) (int *skill_id);
+typedef int (*HPMHOOK_post_skill_get_hit) (int retVal___, int skill_id);
+typedef int (*HPMHOOK_pre_skill_get_inf) (int *skill_id);
+typedef int (*HPMHOOK_post_skill_get_inf) (int retVal___, int skill_id);
+typedef int (*HPMHOOK_pre_skill_get_ele) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_ele) (int retVal___, int skill_id, int skill_lv);
+typedef int (*HPMHOOK_pre_skill_get_nk) (int *skill_id);
+typedef int (*HPMHOOK_post_skill_get_nk) (int retVal___, int skill_id);
+typedef int (*HPMHOOK_pre_skill_get_max) (int *skill_id);
+typedef int (*HPMHOOK_post_skill_get_max) (int retVal___, int skill_id);
+typedef int (*HPMHOOK_pre_skill_get_range) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_range) (int retVal___, int skill_id, int skill_lv);
+typedef int (*HPMHOOK_pre_skill_get_range2) (struct block_list **bl, int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_range2) (int retVal___, struct block_list *bl, int skill_id, int skill_lv);
+typedef int (*HPMHOOK_pre_skill_get_splash) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_splash) (int retVal___, int skill_id, int skill_lv);
+typedef int (*HPMHOOK_pre_skill_get_hp) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_hp) (int retVal___, int skill_id, int skill_lv);
+typedef int (*HPMHOOK_pre_skill_get_mhp) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_mhp) (int retVal___, int skill_id, int skill_lv);
+typedef int (*HPMHOOK_pre_skill_get_sp) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_sp) (int retVal___, int skill_id, int skill_lv);
+typedef int (*HPMHOOK_pre_skill_get_hp_rate) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_hp_rate) (int retVal___, int skill_id, int skill_lv);
+typedef int (*HPMHOOK_pre_skill_get_sp_rate) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_sp_rate) (int retVal___, int skill_id, int skill_lv);
+typedef int (*HPMHOOK_pre_skill_get_state) (int *skill_id);
+typedef int (*HPMHOOK_post_skill_get_state) (int retVal___, int skill_id);
+typedef int (*HPMHOOK_pre_skill_get_spiritball) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_spiritball) (int retVal___, int skill_id, int skill_lv);
+typedef int (*HPMHOOK_pre_skill_get_itemid) (int *skill_id, int *item_idx);
+typedef int (*HPMHOOK_post_skill_get_itemid) (int retVal___, int skill_id, int item_idx);
+typedef int (*HPMHOOK_pre_skill_get_itemqty) (int *skill_id, int *item_idx);
+typedef int (*HPMHOOK_post_skill_get_itemqty) (int retVal___, int skill_id, int item_idx);
+typedef int (*HPMHOOK_pre_skill_get_zeny) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_zeny) (int retVal___, int skill_id, int skill_lv);
+typedef int (*HPMHOOK_pre_skill_get_num) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_num) (int retVal___, int skill_id, int skill_lv);
+typedef int (*HPMHOOK_pre_skill_get_cast) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_cast) (int retVal___, int skill_id, int skill_lv);
+typedef int (*HPMHOOK_pre_skill_get_delay) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_delay) (int retVal___, int skill_id, int skill_lv);
+typedef int (*HPMHOOK_pre_skill_get_walkdelay) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_walkdelay) (int retVal___, int skill_id, int skill_lv);
+typedef int (*HPMHOOK_pre_skill_get_time) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_time) (int retVal___, int skill_id, int skill_lv);
+typedef int (*HPMHOOK_pre_skill_get_time2) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_time2) (int retVal___, int skill_id, int skill_lv);
+typedef int (*HPMHOOK_pre_skill_get_castnodex) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_castnodex) (int retVal___, int skill_id, int skill_lv);
+typedef int (*HPMHOOK_pre_skill_get_delaynodex) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_delaynodex) (int retVal___, int skill_id, int skill_lv);
+typedef int (*HPMHOOK_pre_skill_get_castdef) (int *skill_id);
+typedef int (*HPMHOOK_post_skill_get_castdef) (int retVal___, int skill_id);
+typedef int (*HPMHOOK_pre_skill_get_weapontype) (int *skill_id);
+typedef int (*HPMHOOK_post_skill_get_weapontype) (int retVal___, int skill_id);
+typedef int (*HPMHOOK_pre_skill_get_ammotype) (int *skill_id);
+typedef int (*HPMHOOK_post_skill_get_ammotype) (int retVal___, int skill_id);
+typedef int (*HPMHOOK_pre_skill_get_ammo_qty) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_ammo_qty) (int retVal___, int skill_id, int skill_lv);
+typedef int (*HPMHOOK_pre_skill_get_unit_id) (int *skill_id, int *flag);
+typedef int (*HPMHOOK_post_skill_get_unit_id) (int retVal___, int skill_id, int flag);
+typedef int (*HPMHOOK_pre_skill_get_inf2) (int *skill_id);
+typedef int (*HPMHOOK_post_skill_get_inf2) (int retVal___, int skill_id);
+typedef int (*HPMHOOK_pre_skill_get_castcancel) (int *skill_id);
+typedef int (*HPMHOOK_post_skill_get_castcancel) (int retVal___, int skill_id);
+typedef int (*HPMHOOK_pre_skill_get_maxcount) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_maxcount) (int retVal___, int skill_id, int skill_lv);
+typedef int (*HPMHOOK_pre_skill_get_blewcount) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_blewcount) (int retVal___, int skill_id, int skill_lv);
+typedef int (*HPMHOOK_pre_skill_get_unit_flag) (int *skill_id);
+typedef int (*HPMHOOK_post_skill_get_unit_flag) (int retVal___, int skill_id);
+typedef int (*HPMHOOK_pre_skill_get_unit_target) (int *skill_id);
+typedef int (*HPMHOOK_post_skill_get_unit_target) (int retVal___, int skill_id);
+typedef int (*HPMHOOK_pre_skill_get_unit_interval) (int *skill_id);
+typedef int (*HPMHOOK_post_skill_get_unit_interval) (int retVal___, int skill_id);
+typedef int (*HPMHOOK_pre_skill_get_unit_bl_target) (int *skill_id);
+typedef int (*HPMHOOK_post_skill_get_unit_bl_target) (int retVal___, int skill_id);
+typedef int (*HPMHOOK_pre_skill_get_unit_layout_type) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_unit_layout_type) (int retVal___, int skill_id, int skill_lv);
+typedef int (*HPMHOOK_pre_skill_get_unit_range) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_unit_range) (int retVal___, int skill_id, int skill_lv);
+typedef int (*HPMHOOK_pre_skill_get_cooldown) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_cooldown) (int retVal___, int skill_id, int skill_lv);
+typedef int (*HPMHOOK_pre_skill_tree_get_max) (int *skill_id, int *class);
+typedef int (*HPMHOOK_post_skill_tree_get_max) (int retVal___, int skill_id, int class);
+typedef const char* (*HPMHOOK_pre_skill_get_name) (int *skill_id);
+typedef const char* (*HPMHOOK_post_skill_get_name) (const char* retVal___, int skill_id);
+typedef const char* (*HPMHOOK_pre_skill_get_desc) (int *skill_id);
+typedef const char* (*HPMHOOK_post_skill_get_desc) (const char* retVal___, int skill_id);
+typedef int (*HPMHOOK_pre_skill_get_casttype) (int *skill_id);
+typedef int (*HPMHOOK_post_skill_get_casttype) (int retVal___, int skill_id);
+typedef int (*HPMHOOK_pre_skill_get_casttype2) (int *index);
+typedef int (*HPMHOOK_post_skill_get_casttype2) (int retVal___, int index);
typedef bool (*HPMHOOK_pre_skill_is_combo) (int *skill_id);
typedef bool (*HPMHOOK_post_skill_is_combo) (bool retVal___, int skill_id);
typedef int (*HPMHOOK_pre_skill_name2id) (const char **name);
@@ -6384,6 +7268,8 @@ typedef int (*HPMHOOK_pre_skill_cell_overlap) (struct block_list **bl, va_list a
typedef int (*HPMHOOK_post_skill_cell_overlap) (int retVal___, struct block_list *bl, va_list ap);
typedef int (*HPMHOOK_pre_skill_timerskill) (int *tid, int64 *tick, int *id, intptr_t *data);
typedef int (*HPMHOOK_post_skill_timerskill) (int retVal___, int tid, int64 tick, int id, intptr_t data);
+typedef void (*HPMHOOK_pre_skill_trap_do_splash) (struct block_list **bl, uint16 *skill_id, uint16 *skill_lv, int *bl_flag, int64 *tick);
+typedef void (*HPMHOOK_post_skill_trap_do_splash) (struct block_list *bl, uint16 skill_id, uint16 skill_lv, int bl_flag, int64 tick);
typedef int (*HPMHOOK_pre_skill_trap_splash) (struct block_list **bl, va_list ap);
typedef int (*HPMHOOK_post_skill_trap_splash) (int retVal___, struct block_list *bl, va_list ap);
typedef int (*HPMHOOK_pre_skill_check_condition_mercenary) (struct block_list **bl, int *skill_id, int *lv, int *type);
@@ -6418,8 +7304,8 @@ typedef void (*HPMHOOK_pre_skill_brandishspear_first) (struct square **tc, uint8
typedef void (*HPMHOOK_post_skill_brandishspear_first) (struct square *tc, uint8 dir, int16 x, int16 y);
typedef void (*HPMHOOK_pre_skill_brandishspear_dir) (struct square **tc, uint8 *dir, int *are);
typedef void (*HPMHOOK_post_skill_brandishspear_dir) (struct square *tc, uint8 dir, int are);
-typedef int (*HPMHOOK_pre_skill_get_fixed_cast) (uint16 *skill_id, uint16 *skill_lv);
-typedef int (*HPMHOOK_post_skill_get_fixed_cast) (int retVal___, uint16 skill_id, uint16 skill_lv);
+typedef int (*HPMHOOK_pre_skill_get_fixed_cast) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_fixed_cast) (int retVal___, int skill_id, int skill_lv);
typedef int (*HPMHOOK_pre_skill_sit_count) (struct block_list **bl, va_list ap);
typedef int (*HPMHOOK_post_skill_sit_count) (int retVal___, struct block_list *bl, va_list ap);
typedef int (*HPMHOOK_pre_skill_sit_in) (struct block_list **bl, va_list ap);
@@ -6452,8 +7338,8 @@ typedef int (*HPMHOOK_pre_skill_unit_timer_sub) (union DBKey *key, struct DBData
typedef int (*HPMHOOK_post_skill_unit_timer_sub) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
typedef void (*HPMHOOK_pre_skill_init_unit_layout) (void);
typedef void (*HPMHOOK_post_skill_init_unit_layout) (void);
-typedef void (*HPMHOOK_pre_skill_init_unit_layout_unknown) (int *skill_idx);
-typedef void (*HPMHOOK_post_skill_init_unit_layout_unknown) (int skill_idx);
+typedef void (*HPMHOOK_pre_skill_init_unit_layout_unknown) (int *skill_idx, int *pos);
+typedef void (*HPMHOOK_post_skill_init_unit_layout_unknown) (int skill_idx, int pos);
typedef void (*HPMHOOK_pre_skill_validate_hittype) (struct config_setting_t **conf, struct s_skill_db **sk);
typedef void (*HPMHOOK_post_skill_validate_hittype) (struct config_setting_t *conf, struct s_skill_db *sk);
typedef void (*HPMHOOK_pre_skill_validate_skilltype) (struct config_setting_t **conf, struct s_skill_db **sk);
@@ -6506,8 +7392,6 @@ typedef bool (*HPMHOOK_pre_skill_parse_row_spellbookdb) (char **split[], int *co
typedef bool (*HPMHOOK_post_skill_parse_row_spellbookdb) (bool retVal___, char *split[], int columns, int current);
typedef bool (*HPMHOOK_pre_skill_parse_row_magicmushroomdb) (char **split[], int *column, int *current);
typedef bool (*HPMHOOK_post_skill_parse_row_magicmushroomdb) (bool retVal___, char *split[], int column, int current);
-typedef bool (*HPMHOOK_pre_skill_parse_row_reproducedb) (char **split[], int *column, int *current);
-typedef bool (*HPMHOOK_post_skill_parse_row_reproducedb) (bool retVal___, char *split[], int column, int current);
typedef bool (*HPMHOOK_pre_skill_parse_row_improvisedb) (char **split[], int *columns, int *current);
typedef bool (*HPMHOOK_post_skill_parse_row_improvisedb) (bool retVal___, char *split[], int columns, int current);
typedef bool (*HPMHOOK_pre_skill_parse_row_changematerialdb) (char **split[], int *columns, int *current);
@@ -6600,8 +7484,8 @@ typedef int (*HPMHOOK_pre_skill_check_condition_castbegin_madogear_unknown) (str
typedef int (*HPMHOOK_post_skill_check_condition_castbegin_madogear_unknown) (int retVal___, struct status_change *sc, uint16 *skill_id);
typedef int (*HPMHOOK_pre_skill_check_condition_castbegin_unknown) (struct status_change **sc, uint16 **skill_id);
typedef int (*HPMHOOK_post_skill_check_condition_castbegin_unknown) (int retVal___, struct status_change *sc, uint16 *skill_id);
-typedef void (*HPMHOOK_pre_skill_check_condition_castend_unknown) (struct map_session_data **sd, uint16 **skill_id, uint16 **skill_lv);
-typedef void (*HPMHOOK_post_skill_check_condition_castend_unknown) (struct map_session_data *sd, uint16 *skill_id, uint16 *skill_lv);
+typedef bool (*HPMHOOK_pre_skill_check_condition_castend_unknown) (struct map_session_data **sd, uint16 **skill_id, uint16 **skill_lv);
+typedef bool (*HPMHOOK_post_skill_check_condition_castend_unknown) (bool retVal___, struct map_session_data *sd, uint16 *skill_id, uint16 *skill_lv);
typedef bool (*HPMHOOK_pre_skill_get_requirement_off_unknown) (struct status_change **sc, uint16 **skill_id);
typedef bool (*HPMHOOK_post_skill_get_requirement_off_unknown) (bool retVal___, struct status_change *sc, uint16 *skill_id);
typedef bool (*HPMHOOK_pre_skill_get_requirement_item_unknown) (struct status_change **sc, struct map_session_data **sd, uint16 **skill_id, uint16 **skill_lv, uint16 **idx, int **i);
@@ -6632,12 +7516,16 @@ typedef int (*HPMHOOK_pre_sockt_realloc_fifo) (int *fd, unsigned int *rfifo_size
typedef int (*HPMHOOK_post_sockt_realloc_fifo) (int retVal___, int fd, unsigned int rfifo_size, unsigned int wfifo_size);
typedef int (*HPMHOOK_pre_sockt_realloc_writefifo) (int *fd, size_t *addition);
typedef int (*HPMHOOK_post_sockt_realloc_writefifo) (int retVal___, int fd, size_t addition);
-typedef int (*HPMHOOK_pre_sockt_wfifoset) (int *fd, size_t *len);
-typedef int (*HPMHOOK_post_sockt_wfifoset) (int retVal___, int fd, size_t len);
+typedef int (*HPMHOOK_pre_sockt_wfifoset) (int *fd, size_t *len, bool *validate);
+typedef int (*HPMHOOK_post_sockt_wfifoset) (int retVal___, int fd, size_t len, bool validate);
+typedef void (*HPMHOOK_pre_sockt_wfifohead) (int *fd, size_t *len);
+typedef void (*HPMHOOK_post_sockt_wfifohead) (int fd, size_t len);
typedef int (*HPMHOOK_pre_sockt_rfifoskip) (int *fd, size_t *len);
typedef int (*HPMHOOK_post_sockt_rfifoskip) (int retVal___, int fd, size_t len);
typedef void (*HPMHOOK_pre_sockt_close) (int *fd);
typedef void (*HPMHOOK_post_sockt_close) (int fd);
+typedef void (*HPMHOOK_pre_sockt_validateWfifo) (int *fd, size_t *len);
+typedef void (*HPMHOOK_post_sockt_validateWfifo) (int fd, size_t len);
typedef bool (*HPMHOOK_pre_sockt_session_is_valid) (int *fd);
typedef bool (*HPMHOOK_post_sockt_session_is_valid) (bool retVal___, int fd);
typedef bool (*HPMHOOK_pre_sockt_session_is_active) (int *fd);
@@ -6744,8 +7632,8 @@ typedef int (*HPMHOOK_pre_status_init) (bool *minimal);
typedef int (*HPMHOOK_post_status_init) (int retVal___, bool minimal);
typedef void (*HPMHOOK_pre_status_final) (void);
typedef void (*HPMHOOK_post_status_final) (void);
-typedef int (*HPMHOOK_pre_status_get_refine_chance) (enum refine_type *wlv, int *refine);
-typedef int (*HPMHOOK_post_status_get_refine_chance) (int retVal___, enum refine_type wlv, int refine);
+typedef int (*HPMHOOK_pre_status_get_refine_chance) (enum refine_type *wlv, int *refine, enum refine_chance_type *type);
+typedef int (*HPMHOOK_post_status_get_refine_chance) (int retVal___, enum refine_type wlv, int refine, enum refine_chance_type type);
typedef sc_type (*HPMHOOK_pre_status_skill2sc) (int *skill_id);
typedef sc_type (*HPMHOOK_post_status_skill2sc) (sc_type retVal___, int skill_id);
typedef int (*HPMHOOK_pre_status_sc2skill) (sc_type *sc);
@@ -6762,12 +7650,12 @@ typedef int (*HPMHOOK_pre_status_charge) (struct block_list **bl, int64 *hp, int
typedef int (*HPMHOOK_post_status_charge) (int retVal___, struct block_list *bl, int64 hp, int64 sp);
typedef int (*HPMHOOK_pre_status_percent_change) (struct block_list **src, struct block_list **target, signed char *hp_rate, signed char *sp_rate, int *flag);
typedef int (*HPMHOOK_post_status_percent_change) (int retVal___, struct block_list *src, struct block_list *target, signed char hp_rate, signed char sp_rate, int flag);
-typedef int (*HPMHOOK_pre_status_set_hp) (struct block_list **bl, unsigned int *hp, int *flag);
-typedef int (*HPMHOOK_post_status_set_hp) (int retVal___, struct block_list *bl, unsigned int hp, int flag);
-typedef int (*HPMHOOK_pre_status_set_sp) (struct block_list **bl, unsigned int *sp, int *flag);
-typedef int (*HPMHOOK_post_status_set_sp) (int retVal___, struct block_list *bl, unsigned int sp, int flag);
-typedef int (*HPMHOOK_pre_status_heal) (struct block_list **bl, int64 *hp, int64 *sp, int *flag);
-typedef int (*HPMHOOK_post_status_heal) (int retVal___, struct block_list *bl, int64 hp, int64 sp, int flag);
+typedef int (*HPMHOOK_pre_status_set_hp) (struct block_list **bl, unsigned int *hp, enum status_heal_flag *flag);
+typedef int (*HPMHOOK_post_status_set_hp) (int retVal___, struct block_list *bl, unsigned int hp, enum status_heal_flag flag);
+typedef int (*HPMHOOK_pre_status_set_sp) (struct block_list **bl, unsigned int *sp, enum status_heal_flag *flag);
+typedef int (*HPMHOOK_post_status_set_sp) (int retVal___, struct block_list *bl, unsigned int sp, enum status_heal_flag flag);
+typedef int (*HPMHOOK_pre_status_heal) (struct block_list **bl, int64 *hp, int64 *sp, enum status_heal_flag *flag);
+typedef int (*HPMHOOK_post_status_heal) (int retVal___, struct block_list *bl, int64 hp, int64 sp, enum status_heal_flag flag);
typedef int (*HPMHOOK_pre_status_revive) (struct block_list **bl, unsigned char *per_hp, unsigned char *per_sp);
typedef int (*HPMHOOK_post_status_revive) (int retVal___, struct block_list *bl, unsigned char per_hp, unsigned char per_sp);
typedef int (*HPMHOOK_pre_status_fixed_revive) (struct block_list **bl, unsigned int *per_hp, unsigned int *per_sp);
@@ -6818,6 +7706,22 @@ typedef int (*HPMHOOK_pre_status_change_start) (struct block_list **src, struct
typedef int (*HPMHOOK_post_status_change_start) (int retVal___, struct block_list *src, struct block_list *bl, enum sc_type type, int rate, int val1, int val2, int val3, int val4, int tick, int flag);
typedef int (*HPMHOOK_pre_status_change_end_) (struct block_list **bl, enum sc_type *type, int *tid, const char **file, int *line);
typedef int (*HPMHOOK_post_status_change_end_) (int retVal___, struct block_list *bl, enum sc_type type, int tid, const char *file, int line);
+typedef bool (*HPMHOOK_pre_status_is_immune_to_status) (struct status_change **sc, enum sc_type *type);
+typedef bool (*HPMHOOK_post_status_is_immune_to_status) (bool retVal___, struct status_change *sc, enum sc_type type);
+typedef bool (*HPMHOOK_pre_status_is_boss_resist_sc) (enum sc_type *type);
+typedef bool (*HPMHOOK_post_status_is_boss_resist_sc) (bool retVal___, enum sc_type type);
+typedef bool (*HPMHOOK_pre_status_end_sc_before_start) (struct block_list **bl, struct status_data **st, struct status_change **sc, enum sc_type *type, int *undead_flag, int *val1, int *val2, int *val3, int *val4);
+typedef bool (*HPMHOOK_post_status_end_sc_before_start) (bool retVal___, struct block_list *bl, struct status_data *st, struct status_change *sc, enum sc_type type, int undead_flag, int val1, int val2, int val3, int val4);
+typedef void (*HPMHOOK_pre_status_change_start_stop_action) (struct block_list **bl, enum sc_type *type);
+typedef void (*HPMHOOK_post_status_change_start_stop_action) (struct block_list *bl, enum sc_type type);
+typedef int (*HPMHOOK_pre_status_change_start_set_option) (struct block_list **bl, struct status_change **sc, enum sc_type *type, int *val1, int *val2, int *val3, int *val4);
+typedef int (*HPMHOOK_post_status_change_start_set_option) (int retVal___, struct block_list *bl, struct status_change *sc, enum sc_type type, int val1, int val2, int val3, int val4);
+typedef int (*HPMHOOK_pre_status_get_val_flag) (enum sc_type *type);
+typedef int (*HPMHOOK_post_status_get_val_flag) (int retVal___, enum sc_type type);
+typedef void (*HPMHOOK_pre_status_change_start_display) (struct map_session_data **sd, enum sc_type *type, int *val1, int *val2, int *val3, int *val4);
+typedef void (*HPMHOOK_post_status_change_start_display) (struct map_session_data *sd, enum sc_type type, int val1, int val2, int val3, int val4);
+typedef bool (*HPMHOOK_pre_status_change_start_unknown_sc) (struct block_list **src, struct block_list **bl, enum sc_type *type, int *calc_flag, int *rate, int *val1, int *val2, int *val3, int *val4, int *tick, int *flag);
+typedef bool (*HPMHOOK_post_status_change_start_unknown_sc) (bool retVal___, struct block_list *src, struct block_list *bl, enum sc_type type, int calc_flag, int rate, int val1, int val2, int val3, int val4, int tick, int flag);
typedef int (*HPMHOOK_pre_status_kaahi_heal_timer) (int *tid, int64 *tick, int *id, intptr_t *data);
typedef int (*HPMHOOK_post_status_kaahi_heal_timer) (int retVal___, int tid, int64 tick, int id, intptr_t data);
typedef int (*HPMHOOK_pre_status_change_timer) (int *tid, int64 *tick, int *id, intptr_t *data);
@@ -6838,6 +7742,8 @@ typedef int (*HPMHOOK_pre_status_calc_pc_) (struct map_session_data **sd, enum e
typedef int (*HPMHOOK_post_status_calc_pc_) (int retVal___, struct map_session_data *sd, enum e_status_calc_opt opt);
typedef void (*HPMHOOK_pre_status_calc_pc_additional) (struct map_session_data **sd, enum e_status_calc_opt *opt);
typedef void (*HPMHOOK_post_status_calc_pc_additional) (struct map_session_data *sd, enum e_status_calc_opt opt);
+typedef void (*HPMHOOK_pre_status_calc_pc_recover_hp) (struct map_session_data **sd, struct status_data **bstatus);
+typedef void (*HPMHOOK_post_status_calc_pc_recover_hp) (struct map_session_data *sd, struct status_data *bstatus);
typedef int (*HPMHOOK_pre_status_calc_homunculus_) (struct homun_data **hd, enum e_status_calc_opt *opt);
typedef int (*HPMHOOK_post_status_calc_homunculus_) (int retVal___, struct homun_data *hd, enum e_status_calc_opt opt);
typedef int (*HPMHOOK_pre_status_calc_mercenary_) (struct mercenary_data **md, enum e_status_calc_opt *opt);
@@ -6892,6 +7798,10 @@ typedef unsigned int (*HPMHOOK_pre_status_get_base_maxhp) (const struct map_sess
typedef unsigned int (*HPMHOOK_post_status_get_base_maxhp) (unsigned int retVal___, const struct map_session_data *sd, const struct status_data *st);
typedef unsigned int (*HPMHOOK_pre_status_get_base_maxsp) (const struct map_session_data **sd, const struct status_data **st);
typedef unsigned int (*HPMHOOK_post_status_get_base_maxsp) (unsigned int retVal___, const struct map_session_data *sd, const struct status_data *st);
+typedef unsigned int (*HPMHOOK_pre_status_get_restart_hp) (const struct map_session_data **sd, const struct status_data **st);
+typedef unsigned int (*HPMHOOK_post_status_get_restart_hp) (unsigned int retVal___, const struct map_session_data *sd, const struct status_data *st);
+typedef unsigned int (*HPMHOOK_pre_status_get_restart_sp) (const struct map_session_data **sd, const struct status_data **st);
+typedef unsigned int (*HPMHOOK_post_status_get_restart_sp) (unsigned int retVal___, const struct map_session_data *sd, const struct status_data *st);
typedef int (*HPMHOOK_pre_status_calc_npc_) (struct npc_data **nd, enum e_status_calc_opt *opt);
typedef int (*HPMHOOK_post_status_calc_npc_) (int retVal___, struct npc_data *nd, enum e_status_calc_opt opt);
typedef unsigned short (*HPMHOOK_pre_status_calc_str) (struct block_list **bl, struct status_change **sc, int *str);
@@ -7220,8 +8130,8 @@ typedef uint8 (*HPMHOOK_pre_unit_getdir) (struct block_list **bl);
typedef uint8 (*HPMHOOK_post_unit_getdir) (uint8 retVal___, struct block_list *bl);
typedef int (*HPMHOOK_pre_unit_blown) (struct block_list **bl, int *dx, int *dy, int *count, int *flag);
typedef int (*HPMHOOK_post_unit_blown) (int retVal___, struct block_list *bl, int dx, int dy, int count, int flag);
-typedef int (*HPMHOOK_pre_unit_warp) (struct block_list **bl, short *m, short *x, short *y, clr_type *type);
-typedef int (*HPMHOOK_post_unit_warp) (int retVal___, struct block_list *bl, short m, short x, short y, clr_type type);
+typedef int (*HPMHOOK_pre_unit_warp) (struct block_list **bl, short *m, short *x, short *y, enum clr_type *type);
+typedef int (*HPMHOOK_post_unit_warp) (int retVal___, struct block_list *bl, short m, short x, short y, enum clr_type type);
typedef int (*HPMHOOK_pre_unit_stop_walking) (struct block_list **bl, int *type);
typedef int (*HPMHOOK_post_unit_stop_walking) (int retVal___, struct block_list *bl, int type);
typedef int (*HPMHOOK_pre_unit_skilluse_id) (struct block_list **src, int *target_id, uint16 *skill_id, uint16 *skill_lv);
@@ -7272,14 +8182,14 @@ typedef int (*HPMHOOK_pre_unit_fixdamage) (struct block_list **src, struct block
typedef int (*HPMHOOK_post_unit_fixdamage) (int retVal___, struct block_list *src, struct block_list *target, int sdelay, int ddelay, int64 damage, short div, unsigned char type, int64 damage2);
typedef int (*HPMHOOK_pre_unit_changeviewsize) (struct block_list **bl, short *size);
typedef int (*HPMHOOK_post_unit_changeviewsize) (int retVal___, struct block_list *bl, short size);
-typedef int (*HPMHOOK_pre_unit_remove_map) (struct block_list **bl, clr_type *clrtype, const char **file, int *line, const char **func);
-typedef int (*HPMHOOK_post_unit_remove_map) (int retVal___, struct block_list *bl, clr_type clrtype, const char *file, int line, const char *func);
-typedef void (*HPMHOOK_pre_unit_remove_map_pc) (struct map_session_data **sd, clr_type *clrtype);
-typedef void (*HPMHOOK_post_unit_remove_map_pc) (struct map_session_data *sd, clr_type clrtype);
+typedef int (*HPMHOOK_pre_unit_remove_map) (struct block_list **bl, enum clr_type *clrtype, const char **file, int *line, const char **func);
+typedef int (*HPMHOOK_post_unit_remove_map) (int retVal___, struct block_list *bl, enum clr_type clrtype, const char *file, int line, const char *func);
+typedef void (*HPMHOOK_pre_unit_remove_map_pc) (struct map_session_data **sd, enum clr_type *clrtype);
+typedef void (*HPMHOOK_post_unit_remove_map_pc) (struct map_session_data *sd, enum clr_type clrtype);
typedef void (*HPMHOOK_pre_unit_free_pc) (struct map_session_data **sd);
typedef void (*HPMHOOK_post_unit_free_pc) (struct map_session_data *sd);
-typedef int (*HPMHOOK_pre_unit_free) (struct block_list **bl, clr_type *clrtype);
-typedef int (*HPMHOOK_post_unit_free) (int retVal___, struct block_list *bl, clr_type clrtype);
+typedef int (*HPMHOOK_pre_unit_free) (struct block_list **bl, enum clr_type *clrtype);
+typedef int (*HPMHOOK_post_unit_free) (int retVal___, struct block_list *bl, enum clr_type clrtype);
#endif // MAP_UNIT_H
#ifdef MAP_VENDING_H /* vending */
typedef void (*HPMHOOK_pre_vending_init) (bool *minimal);
@@ -7294,8 +8204,8 @@ typedef void (*HPMHOOK_pre_vending_list) (struct map_session_data **sd, unsigned
typedef void (*HPMHOOK_post_vending_list) (struct map_session_data *sd, unsigned int id);
typedef void (*HPMHOOK_pre_vending_purchase) (struct map_session_data **sd, int *aid, unsigned int *uid, const uint8 **data, int *count);
typedef void (*HPMHOOK_post_vending_purchase) (struct map_session_data *sd, int aid, unsigned int uid, const uint8 *data, int count);
-typedef bool (*HPMHOOK_pre_vending_search) (struct map_session_data **sd, unsigned short *nameid);
-typedef bool (*HPMHOOK_post_vending_search) (bool retVal___, struct map_session_data *sd, unsigned short nameid);
+typedef bool (*HPMHOOK_pre_vending_search) (struct map_session_data **sd, int *nameid);
+typedef bool (*HPMHOOK_post_vending_search) (bool retVal___, struct map_session_data *sd, int nameid);
typedef bool (*HPMHOOK_pre_vending_searchall) (struct map_session_data **sd, const struct s_search_store_search **s);
typedef bool (*HPMHOOK_post_vending_searchall) (bool retVal___, struct map_session_data *sd, const struct s_search_store_search *s);
#endif // MAP_VENDING_H
diff --git a/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc
index eb5583035..39fb82304 100644
--- a/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc
+++ b/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2017 Hercules Dev Team
+ * Copyright (C) 2013-2019 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -62,6 +62,8 @@ struct {
struct HPMHookPoint *HP_chr_create_charstatus_post;
struct HPMHookPoint *HP_chr_mmo_char_tosql_pre;
struct HPMHookPoint *HP_chr_mmo_char_tosql_post;
+ struct HPMHookPoint *HP_chr_getitemdata_from_sql_pre;
+ struct HPMHookPoint *HP_chr_getitemdata_from_sql_post;
struct HPMHookPoint *HP_chr_memitemdata_to_sql_pre;
struct HPMHookPoint *HP_chr_memitemdata_to_sql_post;
struct HPMHookPoint *HP_chr_mmo_gender_pre;
@@ -76,6 +78,8 @@ struct {
struct HPMHookPoint *HP_chr_char_slotchange_post;
struct HPMHookPoint *HP_chr_rename_char_sql_pre;
struct HPMHookPoint *HP_chr_rename_char_sql_post;
+ struct HPMHookPoint *HP_chr_name_exists_pre;
+ struct HPMHookPoint *HP_chr_name_exists_post;
struct HPMHookPoint *HP_chr_check_char_name_pre;
struct HPMHookPoint *HP_chr_check_char_name_post;
struct HPMHookPoint *HP_chr_make_new_char_sql_pre;
@@ -86,8 +90,8 @@ struct {
struct HPMHookPoint *HP_chr_count_users_post;
struct HPMHookPoint *HP_chr_mmo_char_tobuf_pre;
struct HPMHookPoint *HP_chr_mmo_char_tobuf_post;
- struct HPMHookPoint *HP_chr_mmo_char_send099d_pre;
- struct HPMHookPoint *HP_chr_mmo_char_send099d_post;
+ struct HPMHookPoint *HP_chr_send_HC_ACK_CHARINFO_PER_PAGE_pre;
+ struct HPMHookPoint *HP_chr_send_HC_ACK_CHARINFO_PER_PAGE_post;
struct HPMHookPoint *HP_chr_mmo_char_send_ban_list_pre;
struct HPMHookPoint *HP_chr_mmo_char_send_ban_list_post;
struct HPMHookPoint *HP_chr_mmo_char_send_slots_info_pre;
@@ -232,8 +236,6 @@ struct {
struct HPMHookPoint *HP_chr_parse_frommap_auth_request_post;
struct HPMHookPoint *HP_chr_parse_frommap_update_ip_pre;
struct HPMHookPoint *HP_chr_parse_frommap_update_ip_post;
- struct HPMHookPoint *HP_chr_parse_frommap_request_stats_report_pre;
- struct HPMHookPoint *HP_chr_parse_frommap_request_stats_report_post;
struct HPMHookPoint *HP_chr_parse_frommap_scdata_update_pre;
struct HPMHookPoint *HP_chr_parse_frommap_scdata_update_post;
struct HPMHookPoint *HP_chr_parse_frommap_scdata_delete_pre;
@@ -446,6 +448,20 @@ struct {
struct HPMHookPoint *HP_geoip_final_post;
struct HPMHookPoint *HP_geoip_init_pre;
struct HPMHookPoint *HP_geoip_init_post;
+ struct HPMHookPoint *HP_inter_achievement_sql_init_pre;
+ struct HPMHookPoint *HP_inter_achievement_sql_init_post;
+ struct HPMHookPoint *HP_inter_achievement_sql_final_pre;
+ struct HPMHookPoint *HP_inter_achievement_sql_final_post;
+ struct HPMHookPoint *HP_inter_achievement_tosql_pre;
+ struct HPMHookPoint *HP_inter_achievement_tosql_post;
+ struct HPMHookPoint *HP_inter_achievement_fromsql_pre;
+ struct HPMHookPoint *HP_inter_achievement_fromsql_post;
+ struct HPMHookPoint *HP_inter_achievement_ensure_char_achievements_pre;
+ struct HPMHookPoint *HP_inter_achievement_ensure_char_achievements_post;
+ struct HPMHookPoint *HP_inter_achievement_char_achievements_clear_pre;
+ struct HPMHookPoint *HP_inter_achievement_char_achievements_clear_post;
+ struct HPMHookPoint *HP_inter_achievement_parse_frommap_pre;
+ struct HPMHookPoint *HP_inter_achievement_parse_frommap_post;
struct HPMHookPoint *HP_inter_auction_count_pre;
struct HPMHookPoint *HP_inter_auction_count_post;
struct HPMHookPoint *HP_inter_auction_save_pre;
@@ -464,12 +480,26 @@ struct {
struct HPMHookPoint *HP_inter_auction_sql_init_post;
struct HPMHookPoint *HP_inter_auction_sql_final_pre;
struct HPMHookPoint *HP_inter_auction_sql_final_post;
+ struct HPMHookPoint *HP_inter_clan_kick_inactive_members_pre;
+ struct HPMHookPoint *HP_inter_clan_kick_inactive_members_post;
+ struct HPMHookPoint *HP_inter_clan_count_members_pre;
+ struct HPMHookPoint *HP_inter_clan_count_members_post;
+ struct HPMHookPoint *HP_inter_clan_parse_frommap_pre;
+ struct HPMHookPoint *HP_inter_clan_parse_frommap_post;
struct HPMHookPoint *HP_inter_elemental_sql_init_pre;
struct HPMHookPoint *HP_inter_elemental_sql_init_post;
struct HPMHookPoint *HP_inter_elemental_sql_final_pre;
struct HPMHookPoint *HP_inter_elemental_sql_final_post;
struct HPMHookPoint *HP_inter_elemental_parse_frommap_pre;
struct HPMHookPoint *HP_inter_elemental_parse_frommap_post;
+ struct HPMHookPoint *HP_inter_elemental_create_pre;
+ struct HPMHookPoint *HP_inter_elemental_create_post;
+ struct HPMHookPoint *HP_inter_elemental_save_pre;
+ struct HPMHookPoint *HP_inter_elemental_save_post;
+ struct HPMHookPoint *HP_inter_elemental_load_pre;
+ struct HPMHookPoint *HP_inter_elemental_load_post;
+ struct HPMHookPoint *HP_inter_elemental_delete_pre;
+ struct HPMHookPoint *HP_inter_elemental_delete_post;
struct HPMHookPoint *HP_inter_guild_save_timer_pre;
struct HPMHookPoint *HP_inter_guild_save_timer_post;
struct HPMHookPoint *HP_inter_guild_removemember_tosql_pre;
@@ -510,16 +540,54 @@ struct {
struct HPMHookPoint *HP_inter_guild_charname_changed_post;
struct HPMHookPoint *HP_inter_guild_parse_frommap_pre;
struct HPMHookPoint *HP_inter_guild_parse_frommap_post;
- struct HPMHookPoint *HP_inter_guild_leave_pre;
- struct HPMHookPoint *HP_inter_guild_leave_post;
struct HPMHookPoint *HP_inter_guild_broken_pre;
struct HPMHookPoint *HP_inter_guild_broken_post;
+ struct HPMHookPoint *HP_inter_guild_create_pre;
+ struct HPMHookPoint *HP_inter_guild_create_post;
+ struct HPMHookPoint *HP_inter_guild_add_member_pre;
+ struct HPMHookPoint *HP_inter_guild_add_member_post;
+ struct HPMHookPoint *HP_inter_guild_leave_pre;
+ struct HPMHookPoint *HP_inter_guild_leave_post;
+ struct HPMHookPoint *HP_inter_guild_update_member_info_short_pre;
+ struct HPMHookPoint *HP_inter_guild_update_member_info_short_post;
+ struct HPMHookPoint *HP_inter_guild_update_member_info_pre;
+ struct HPMHookPoint *HP_inter_guild_update_member_info_post;
+ struct HPMHookPoint *HP_inter_guild_disband_pre;
+ struct HPMHookPoint *HP_inter_guild_disband_post;
+ struct HPMHookPoint *HP_inter_guild_update_basic_info_pre;
+ struct HPMHookPoint *HP_inter_guild_update_basic_info_post;
+ struct HPMHookPoint *HP_inter_guild_update_position_pre;
+ struct HPMHookPoint *HP_inter_guild_update_position_post;
+ struct HPMHookPoint *HP_inter_guild_use_skill_point_pre;
+ struct HPMHookPoint *HP_inter_guild_use_skill_point_post;
+ struct HPMHookPoint *HP_inter_guild_remove_alliance_pre;
+ struct HPMHookPoint *HP_inter_guild_remove_alliance_post;
+ struct HPMHookPoint *HP_inter_guild_change_alliance_pre;
+ struct HPMHookPoint *HP_inter_guild_change_alliance_post;
+ struct HPMHookPoint *HP_inter_guild_update_notice_pre;
+ struct HPMHookPoint *HP_inter_guild_update_notice_post;
+ struct HPMHookPoint *HP_inter_guild_update_emblem_pre;
+ struct HPMHookPoint *HP_inter_guild_update_emblem_post;
+ struct HPMHookPoint *HP_inter_guild_update_castle_data_pre;
+ struct HPMHookPoint *HP_inter_guild_update_castle_data_post;
+ struct HPMHookPoint *HP_inter_guild_change_leader_pre;
+ struct HPMHookPoint *HP_inter_guild_change_leader_post;
struct HPMHookPoint *HP_inter_homunculus_sql_init_pre;
struct HPMHookPoint *HP_inter_homunculus_sql_init_post;
struct HPMHookPoint *HP_inter_homunculus_sql_final_pre;
struct HPMHookPoint *HP_inter_homunculus_sql_final_post;
struct HPMHookPoint *HP_inter_homunculus_parse_frommap_pre;
struct HPMHookPoint *HP_inter_homunculus_parse_frommap_post;
+ struct HPMHookPoint *HP_inter_homunculus_create_pre;
+ struct HPMHookPoint *HP_inter_homunculus_create_post;
+ struct HPMHookPoint *HP_inter_homunculus_save_pre;
+ struct HPMHookPoint *HP_inter_homunculus_save_post;
+ struct HPMHookPoint *HP_inter_homunculus_load_pre;
+ struct HPMHookPoint *HP_inter_homunculus_load_post;
+ struct HPMHookPoint *HP_inter_homunculus_delete_pre;
+ struct HPMHookPoint *HP_inter_homunculus_delete_post;
+ struct HPMHookPoint *HP_inter_homunculus_rename_pre;
+ struct HPMHookPoint *HP_inter_homunculus_rename_post;
struct HPMHookPoint *HP_inter_msg_txt_pre;
struct HPMHookPoint *HP_inter_msg_txt_post;
struct HPMHookPoint *HP_inter_msg_config_read_pre;
@@ -556,6 +624,16 @@ struct {
struct HPMHookPoint *HP_inter_config_read_log_post;
struct HPMHookPoint *HP_inter_config_read_connection_pre;
struct HPMHookPoint *HP_inter_config_read_connection_post;
+ struct HPMHookPoint *HP_inter_accinfo_pre;
+ struct HPMHookPoint *HP_inter_accinfo_post;
+ struct HPMHookPoint *HP_inter_accinfo2_pre;
+ struct HPMHookPoint *HP_inter_accinfo2_post;
+ struct HPMHookPoint *HP_inter_add_wisdata_pre;
+ struct HPMHookPoint *HP_inter_add_wisdata_post;
+ struct HPMHookPoint *HP_inter_get_wisdata_pre;
+ struct HPMHookPoint *HP_inter_get_wisdata_post;
+ struct HPMHookPoint *HP_inter_remove_wisdata_pre;
+ struct HPMHookPoint *HP_inter_remove_wisdata_post;
struct HPMHookPoint *HP_inter_mail_sql_init_pre;
struct HPMHookPoint *HP_inter_mail_sql_init_post;
struct HPMHookPoint *HP_inter_mail_sql_final_pre;
@@ -572,6 +650,16 @@ struct {
struct HPMHookPoint *HP_inter_mail_DeleteAttach_post;
struct HPMHookPoint *HP_inter_mail_sendmail_pre;
struct HPMHookPoint *HP_inter_mail_sendmail_post;
+ struct HPMHookPoint *HP_inter_mail_mark_read_pre;
+ struct HPMHookPoint *HP_inter_mail_mark_read_post;
+ struct HPMHookPoint *HP_inter_mail_get_attachment_pre;
+ struct HPMHookPoint *HP_inter_mail_get_attachment_post;
+ struct HPMHookPoint *HP_inter_mail_delete_pre;
+ struct HPMHookPoint *HP_inter_mail_delete_post;
+ struct HPMHookPoint *HP_inter_mail_return_message_pre;
+ struct HPMHookPoint *HP_inter_mail_return_message_post;
+ struct HPMHookPoint *HP_inter_mail_send_pre;
+ struct HPMHookPoint *HP_inter_mail_send_post;
struct HPMHookPoint *HP_inter_mercenary_owner_fromsql_pre;
struct HPMHookPoint *HP_inter_mercenary_owner_fromsql_post;
struct HPMHookPoint *HP_inter_mercenary_owner_tosql_pre;
@@ -584,6 +672,14 @@ struct {
struct HPMHookPoint *HP_inter_mercenary_sql_final_post;
struct HPMHookPoint *HP_inter_mercenary_parse_frommap_pre;
struct HPMHookPoint *HP_inter_mercenary_parse_frommap_post;
+ struct HPMHookPoint *HP_inter_mercenary_create_pre;
+ struct HPMHookPoint *HP_inter_mercenary_create_post;
+ struct HPMHookPoint *HP_inter_mercenary_save_pre;
+ struct HPMHookPoint *HP_inter_mercenary_save_post;
+ struct HPMHookPoint *HP_inter_mercenary_load_pre;
+ struct HPMHookPoint *HP_inter_mercenary_load_post;
+ struct HPMHookPoint *HP_inter_mercenary_delete_pre;
+ struct HPMHookPoint *HP_inter_mercenary_delete_post;
struct HPMHookPoint *HP_inter_party_check_lv_pre;
struct HPMHookPoint *HP_inter_party_check_lv_post;
struct HPMHookPoint *HP_inter_party_calc_state_pre;
@@ -610,6 +706,18 @@ struct {
struct HPMHookPoint *HP_inter_party_CharOnline_post;
struct HPMHookPoint *HP_inter_party_CharOffline_pre;
struct HPMHookPoint *HP_inter_party_CharOffline_post;
+ struct HPMHookPoint *HP_inter_party_create_pre;
+ struct HPMHookPoint *HP_inter_party_create_post;
+ struct HPMHookPoint *HP_inter_party_add_member_pre;
+ struct HPMHookPoint *HP_inter_party_add_member_post;
+ struct HPMHookPoint *HP_inter_party_change_option_pre;
+ struct HPMHookPoint *HP_inter_party_change_option_post;
+ struct HPMHookPoint *HP_inter_party_change_map_pre;
+ struct HPMHookPoint *HP_inter_party_change_map_post;
+ struct HPMHookPoint *HP_inter_party_disband_pre;
+ struct HPMHookPoint *HP_inter_party_disband_post;
+ struct HPMHookPoint *HP_inter_party_change_leader_pre;
+ struct HPMHookPoint *HP_inter_party_change_leader_post;
struct HPMHookPoint *HP_inter_pet_tosql_pre;
struct HPMHookPoint *HP_inter_pet_tosql_post;
struct HPMHookPoint *HP_inter_pet_fromsql_pre;
@@ -622,8 +730,38 @@ struct {
struct HPMHookPoint *HP_inter_pet_delete__post;
struct HPMHookPoint *HP_inter_pet_parse_frommap_pre;
struct HPMHookPoint *HP_inter_pet_parse_frommap_post;
+ struct HPMHookPoint *HP_inter_pet_create_pre;
+ struct HPMHookPoint *HP_inter_pet_create_post;
+ struct HPMHookPoint *HP_inter_pet_load_pre;
+ struct HPMHookPoint *HP_inter_pet_load_post;
struct HPMHookPoint *HP_inter_quest_parse_frommap_pre;
struct HPMHookPoint *HP_inter_quest_parse_frommap_post;
+ struct HPMHookPoint *HP_inter_quest_fromsql_pre;
+ struct HPMHookPoint *HP_inter_quest_fromsql_post;
+ struct HPMHookPoint *HP_inter_quest_delete_pre;
+ struct HPMHookPoint *HP_inter_quest_delete_post;
+ struct HPMHookPoint *HP_inter_quest_add_pre;
+ struct HPMHookPoint *HP_inter_quest_add_post;
+ struct HPMHookPoint *HP_inter_quest_update_pre;
+ struct HPMHookPoint *HP_inter_quest_update_post;
+ struct HPMHookPoint *HP_inter_quest_save_pre;
+ struct HPMHookPoint *HP_inter_quest_save_post;
+ struct HPMHookPoint *HP_inter_rodex_sql_init_pre;
+ struct HPMHookPoint *HP_inter_rodex_sql_init_post;
+ struct HPMHookPoint *HP_inter_rodex_sql_final_pre;
+ struct HPMHookPoint *HP_inter_rodex_sql_final_post;
+ struct HPMHookPoint *HP_inter_rodex_parse_frommap_pre;
+ struct HPMHookPoint *HP_inter_rodex_parse_frommap_post;
+ struct HPMHookPoint *HP_inter_rodex_fromsql_pre;
+ struct HPMHookPoint *HP_inter_rodex_fromsql_post;
+ struct HPMHookPoint *HP_inter_rodex_hasnew_pre;
+ struct HPMHookPoint *HP_inter_rodex_hasnew_post;
+ struct HPMHookPoint *HP_inter_rodex_checkname_pre;
+ struct HPMHookPoint *HP_inter_rodex_checkname_post;
+ struct HPMHookPoint *HP_inter_rodex_savemessage_pre;
+ struct HPMHookPoint *HP_inter_rodex_savemessage_post;
+ struct HPMHookPoint *HP_inter_rodex_updatemail_pre;
+ struct HPMHookPoint *HP_inter_rodex_updatemail_post;
struct HPMHookPoint *HP_inter_storage_tosql_pre;
struct HPMHookPoint *HP_inter_storage_tosql_post;
struct HPMHookPoint *HP_inter_storage_fromsql_pre;
@@ -642,6 +780,8 @@ struct {
struct HPMHookPoint *HP_inter_storage_guild_storage_delete_post;
struct HPMHookPoint *HP_inter_storage_parse_frommap_pre;
struct HPMHookPoint *HP_inter_storage_parse_frommap_post;
+ struct HPMHookPoint *HP_inter_storage_retrieve_bound_items_pre;
+ struct HPMHookPoint *HP_inter_storage_retrieve_bound_items_post;
struct HPMHookPoint *HP_libconfig_read_pre;
struct HPMHookPoint *HP_libconfig_read_post;
struct HPMHookPoint *HP_libconfig_write_pre;
@@ -826,6 +966,16 @@ struct {
struct HPMHookPoint *HP_mapif_send_post;
struct HPMHookPoint *HP_mapif_send_users_count_pre;
struct HPMHookPoint *HP_mapif_send_users_count_post;
+ struct HPMHookPoint *HP_mapif_pLoadAchievements_pre;
+ struct HPMHookPoint *HP_mapif_pLoadAchievements_post;
+ struct HPMHookPoint *HP_mapif_sAchievementsToMap_pre;
+ struct HPMHookPoint *HP_mapif_sAchievementsToMap_post;
+ struct HPMHookPoint *HP_mapif_pSaveAchievements_pre;
+ struct HPMHookPoint *HP_mapif_pSaveAchievements_post;
+ struct HPMHookPoint *HP_mapif_achievement_load_pre;
+ struct HPMHookPoint *HP_mapif_achievement_load_post;
+ struct HPMHookPoint *HP_mapif_achievement_save_pre;
+ struct HPMHookPoint *HP_mapif_achievement_save_post;
struct HPMHookPoint *HP_mapif_auction_message_pre;
struct HPMHookPoint *HP_mapif_auction_message_post;
struct HPMHookPoint *HP_mapif_auction_sendlist_pre;
@@ -848,14 +998,6 @@ struct {
struct HPMHookPoint *HP_mapif_auction_bid_post;
struct HPMHookPoint *HP_mapif_parse_auction_bid_pre;
struct HPMHookPoint *HP_mapif_parse_auction_bid_post;
- struct HPMHookPoint *HP_mapif_elemental_create_pre;
- struct HPMHookPoint *HP_mapif_elemental_create_post;
- struct HPMHookPoint *HP_mapif_elemental_save_pre;
- struct HPMHookPoint *HP_mapif_elemental_save_post;
- struct HPMHookPoint *HP_mapif_elemental_load_pre;
- struct HPMHookPoint *HP_mapif_elemental_load_post;
- struct HPMHookPoint *HP_mapif_elemental_delete_pre;
- struct HPMHookPoint *HP_mapif_elemental_delete_post;
struct HPMHookPoint *HP_mapif_elemental_send_pre;
struct HPMHookPoint *HP_mapif_elemental_send_post;
struct HPMHookPoint *HP_mapif_parse_elemental_create_pre;
@@ -926,8 +1068,6 @@ struct {
struct HPMHookPoint *HP_mapif_parse_GuildPosition_post;
struct HPMHookPoint *HP_mapif_parse_GuildSkillUp_pre;
struct HPMHookPoint *HP_mapif_parse_GuildSkillUp_post;
- struct HPMHookPoint *HP_mapif_parse_GuildDeleteAlliance_pre;
- struct HPMHookPoint *HP_mapif_parse_GuildDeleteAlliance_post;
struct HPMHookPoint *HP_mapif_parse_GuildAlliance_pre;
struct HPMHookPoint *HP_mapif_parse_GuildAlliance_post;
struct HPMHookPoint *HP_mapif_parse_GuildNotice_pre;
@@ -950,16 +1090,6 @@ struct {
struct HPMHookPoint *HP_mapif_homunculus_saved_post;
struct HPMHookPoint *HP_mapif_homunculus_renamed_pre;
struct HPMHookPoint *HP_mapif_homunculus_renamed_post;
- struct HPMHookPoint *HP_mapif_homunculus_create_pre;
- struct HPMHookPoint *HP_mapif_homunculus_create_post;
- struct HPMHookPoint *HP_mapif_homunculus_save_pre;
- struct HPMHookPoint *HP_mapif_homunculus_save_post;
- struct HPMHookPoint *HP_mapif_homunculus_load_pre;
- struct HPMHookPoint *HP_mapif_homunculus_load_post;
- struct HPMHookPoint *HP_mapif_homunculus_delete_pre;
- struct HPMHookPoint *HP_mapif_homunculus_delete_post;
- struct HPMHookPoint *HP_mapif_homunculus_rename_pre;
- struct HPMHookPoint *HP_mapif_homunculus_rename_post;
struct HPMHookPoint *HP_mapif_parse_homunculus_create_pre;
struct HPMHookPoint *HP_mapif_parse_homunculus_create_post;
struct HPMHookPoint *HP_mapif_parse_homunculus_delete_pre;
@@ -978,8 +1108,6 @@ struct {
struct HPMHookPoint *HP_mapif_parse_mail_read_post;
struct HPMHookPoint *HP_mapif_mail_sendattach_pre;
struct HPMHookPoint *HP_mapif_mail_sendattach_post;
- struct HPMHookPoint *HP_mapif_mail_getattach_pre;
- struct HPMHookPoint *HP_mapif_mail_getattach_post;
struct HPMHookPoint *HP_mapif_parse_mail_getattach_pre;
struct HPMHookPoint *HP_mapif_parse_mail_getattach_post;
struct HPMHookPoint *HP_mapif_mail_delete_pre;
@@ -996,14 +1124,6 @@ struct {
struct HPMHookPoint *HP_mapif_mail_send_post;
struct HPMHookPoint *HP_mapif_parse_mail_send_pre;
struct HPMHookPoint *HP_mapif_parse_mail_send_post;
- struct HPMHookPoint *HP_mapif_mercenary_create_pre;
- struct HPMHookPoint *HP_mapif_mercenary_create_post;
- struct HPMHookPoint *HP_mapif_mercenary_save_pre;
- struct HPMHookPoint *HP_mapif_mercenary_save_post;
- struct HPMHookPoint *HP_mapif_mercenary_load_pre;
- struct HPMHookPoint *HP_mapif_mercenary_load_post;
- struct HPMHookPoint *HP_mapif_mercenary_delete_pre;
- struct HPMHookPoint *HP_mapif_mercenary_delete_post;
struct HPMHookPoint *HP_mapif_mercenary_send_pre;
struct HPMHookPoint *HP_mapif_mercenary_send_post;
struct HPMHookPoint *HP_mapif_parse_mercenary_create_pre;
@@ -1064,10 +1184,6 @@ struct {
struct HPMHookPoint *HP_mapif_save_pet_ack_post;
struct HPMHookPoint *HP_mapif_delete_pet_ack_pre;
struct HPMHookPoint *HP_mapif_delete_pet_ack_post;
- struct HPMHookPoint *HP_mapif_create_pet_pre;
- struct HPMHookPoint *HP_mapif_create_pet_post;
- struct HPMHookPoint *HP_mapif_load_pet_pre;
- struct HPMHookPoint *HP_mapif_load_pet_post;
struct HPMHookPoint *HP_mapif_save_pet_pre;
struct HPMHookPoint *HP_mapif_save_pet_post;
struct HPMHookPoint *HP_mapif_delete_pet_pre;
@@ -1080,14 +1196,6 @@ struct {
struct HPMHookPoint *HP_mapif_parse_SavePet_post;
struct HPMHookPoint *HP_mapif_parse_DeletePet_pre;
struct HPMHookPoint *HP_mapif_parse_DeletePet_post;
- struct HPMHookPoint *HP_mapif_quests_fromsql_pre;
- struct HPMHookPoint *HP_mapif_quests_fromsql_post;
- struct HPMHookPoint *HP_mapif_quest_delete_pre;
- struct HPMHookPoint *HP_mapif_quest_delete_post;
- struct HPMHookPoint *HP_mapif_quest_add_pre;
- struct HPMHookPoint *HP_mapif_quest_add_post;
- struct HPMHookPoint *HP_mapif_quest_update_pre;
- struct HPMHookPoint *HP_mapif_quest_update_post;
struct HPMHookPoint *HP_mapif_quest_save_ack_pre;
struct HPMHookPoint *HP_mapif_quest_save_ack_post;
struct HPMHookPoint *HP_mapif_parse_quest_save_pre;
@@ -1096,6 +1204,24 @@ struct {
struct HPMHookPoint *HP_mapif_send_quests_post;
struct HPMHookPoint *HP_mapif_parse_quest_load_pre;
struct HPMHookPoint *HP_mapif_parse_quest_load_post;
+ struct HPMHookPoint *HP_mapif_parse_rodex_requestinbox_pre;
+ struct HPMHookPoint *HP_mapif_parse_rodex_requestinbox_post;
+ struct HPMHookPoint *HP_mapif_rodex_sendinbox_pre;
+ struct HPMHookPoint *HP_mapif_rodex_sendinbox_post;
+ struct HPMHookPoint *HP_mapif_parse_rodex_checkhasnew_pre;
+ struct HPMHookPoint *HP_mapif_parse_rodex_checkhasnew_post;
+ struct HPMHookPoint *HP_mapif_rodex_sendhasnew_pre;
+ struct HPMHookPoint *HP_mapif_rodex_sendhasnew_post;
+ struct HPMHookPoint *HP_mapif_parse_rodex_updatemail_pre;
+ struct HPMHookPoint *HP_mapif_parse_rodex_updatemail_post;
+ struct HPMHookPoint *HP_mapif_parse_rodex_send_pre;
+ struct HPMHookPoint *HP_mapif_parse_rodex_send_post;
+ struct HPMHookPoint *HP_mapif_rodex_send_pre;
+ struct HPMHookPoint *HP_mapif_rodex_send_post;
+ struct HPMHookPoint *HP_mapif_parse_rodex_checkname_pre;
+ struct HPMHookPoint *HP_mapif_parse_rodex_checkname_post;
+ struct HPMHookPoint *HP_mapif_rodex_checkname_pre;
+ struct HPMHookPoint *HP_mapif_rodex_checkname_post;
struct HPMHookPoint *HP_mapif_load_guild_storage_pre;
struct HPMHookPoint *HP_mapif_load_guild_storage_post;
struct HPMHookPoint *HP_mapif_save_guild_storage_ack_pre;
@@ -1104,16 +1230,20 @@ struct {
struct HPMHookPoint *HP_mapif_parse_LoadGuildStorage_post;
struct HPMHookPoint *HP_mapif_parse_SaveGuildStorage_pre;
struct HPMHookPoint *HP_mapif_parse_SaveGuildStorage_post;
+ struct HPMHookPoint *HP_mapif_account_storage_load_pre;
+ struct HPMHookPoint *HP_mapif_account_storage_load_post;
+ struct HPMHookPoint *HP_mapif_pAccountStorageLoad_pre;
+ struct HPMHookPoint *HP_mapif_pAccountStorageLoad_post;
+ struct HPMHookPoint *HP_mapif_pAccountStorageSave_pre;
+ struct HPMHookPoint *HP_mapif_pAccountStorageSave_post;
+ struct HPMHookPoint *HP_mapif_sAccountStorageSaveAck_pre;
+ struct HPMHookPoint *HP_mapif_sAccountStorageSaveAck_post;
struct HPMHookPoint *HP_mapif_itembound_ack_pre;
struct HPMHookPoint *HP_mapif_itembound_ack_post;
- struct HPMHookPoint *HP_mapif_parse_ItemBoundRetrieve_sub_pre;
- struct HPMHookPoint *HP_mapif_parse_ItemBoundRetrieve_sub_post;
struct HPMHookPoint *HP_mapif_parse_ItemBoundRetrieve_pre;
struct HPMHookPoint *HP_mapif_parse_ItemBoundRetrieve_post;
struct HPMHookPoint *HP_mapif_parse_accinfo_pre;
struct HPMHookPoint *HP_mapif_parse_accinfo_post;
- struct HPMHookPoint *HP_mapif_parse_accinfo2_pre;
- struct HPMHookPoint *HP_mapif_parse_accinfo2_post;
struct HPMHookPoint *HP_mapif_broadcast_pre;
struct HPMHookPoint *HP_mapif_broadcast_post;
struct HPMHookPoint *HP_mapif_wis_message_pre;
@@ -1142,6 +1272,10 @@ struct {
struct HPMHookPoint *HP_mapif_namechange_ack_post;
struct HPMHookPoint *HP_mapif_parse_NameChangeRequest_pre;
struct HPMHookPoint *HP_mapif_parse_NameChangeRequest_post;
+ struct HPMHookPoint *HP_mapif_parse_ClanMemberKick_pre;
+ struct HPMHookPoint *HP_mapif_parse_ClanMemberKick_post;
+ struct HPMHookPoint *HP_mapif_parse_ClanMemberCount_pre;
+ struct HPMHookPoint *HP_mapif_parse_ClanMemberCount_post;
struct HPMHookPoint *HP_mapindex_init_pre;
struct HPMHookPoint *HP_mapindex_init_post;
struct HPMHookPoint *HP_mapindex_final_pre;
@@ -1188,6 +1322,14 @@ struct {
struct HPMHookPoint *HP_mutex_cond_broadcast_post;
struct HPMHookPoint *HP_nullpo_assert_report_pre;
struct HPMHookPoint *HP_nullpo_assert_report_post;
+ struct HPMHookPoint *HP_packets_init_pre;
+ struct HPMHookPoint *HP_packets_init_post;
+ struct HPMHookPoint *HP_packets_final_pre;
+ struct HPMHookPoint *HP_packets_final_post;
+ struct HPMHookPoint *HP_packets_addLens_pre;
+ struct HPMHookPoint *HP_packets_addLens_post;
+ struct HPMHookPoint *HP_packets_addLen_pre;
+ struct HPMHookPoint *HP_packets_addLen_post;
struct HPMHookPoint *HP_pincode_handle_pre;
struct HPMHookPoint *HP_pincode_handle_post;
struct HPMHookPoint *HP_pincode_decrypt_pre;
@@ -1196,18 +1338,30 @@ struct {
struct HPMHookPoint *HP_pincode_error_post;
struct HPMHookPoint *HP_pincode_update_pre;
struct HPMHookPoint *HP_pincode_update_post;
- struct HPMHookPoint *HP_pincode_sendstate_pre;
- struct HPMHookPoint *HP_pincode_sendstate_post;
+ struct HPMHookPoint *HP_pincode_makestate_pre;
+ struct HPMHookPoint *HP_pincode_makestate_post;
+ struct HPMHookPoint *HP_pincode_editstate_pre;
+ struct HPMHookPoint *HP_pincode_editstate_post;
+ struct HPMHookPoint *HP_pincode_loginstate_pre;
+ struct HPMHookPoint *HP_pincode_loginstate_post;
+ struct HPMHookPoint *HP_pincode_loginstate2_pre;
+ struct HPMHookPoint *HP_pincode_loginstate2_post;
struct HPMHookPoint *HP_pincode_setnew_pre;
struct HPMHookPoint *HP_pincode_setnew_post;
struct HPMHookPoint *HP_pincode_change_pre;
struct HPMHookPoint *HP_pincode_change_post;
+ struct HPMHookPoint *HP_pincode_isBlacklisted_pre;
+ struct HPMHookPoint *HP_pincode_isBlacklisted_post;
struct HPMHookPoint *HP_pincode_compare_pre;
struct HPMHookPoint *HP_pincode_compare_post;
struct HPMHookPoint *HP_pincode_check_pre;
struct HPMHookPoint *HP_pincode_check_post;
struct HPMHookPoint *HP_pincode_config_read_pre;
struct HPMHookPoint *HP_pincode_config_read_post;
+ struct HPMHookPoint *HP_pincode_init_pre;
+ struct HPMHookPoint *HP_pincode_init_post;
+ struct HPMHookPoint *HP_pincode_final_pre;
+ struct HPMHookPoint *HP_pincode_final_post;
struct HPMHookPoint *HP_rnd_init_pre;
struct HPMHookPoint *HP_rnd_init_post;
struct HPMHookPoint *HP_rnd_final_pre;
@@ -1250,10 +1404,14 @@ struct {
struct HPMHookPoint *HP_sockt_realloc_writefifo_post;
struct HPMHookPoint *HP_sockt_wfifoset_pre;
struct HPMHookPoint *HP_sockt_wfifoset_post;
+ struct HPMHookPoint *HP_sockt_wfifohead_pre;
+ struct HPMHookPoint *HP_sockt_wfifohead_post;
struct HPMHookPoint *HP_sockt_rfifoskip_pre;
struct HPMHookPoint *HP_sockt_rfifoskip_post;
struct HPMHookPoint *HP_sockt_close_pre;
struct HPMHookPoint *HP_sockt_close_post;
+ struct HPMHookPoint *HP_sockt_validateWfifo_pre;
+ struct HPMHookPoint *HP_sockt_validateWfifo_post;
struct HPMHookPoint *HP_sockt_session_is_valid_pre;
struct HPMHookPoint *HP_sockt_session_is_valid_post;
struct HPMHookPoint *HP_sockt_session_is_active_pre;
@@ -1539,6 +1697,8 @@ struct {
int HP_chr_create_charstatus_post;
int HP_chr_mmo_char_tosql_pre;
int HP_chr_mmo_char_tosql_post;
+ int HP_chr_getitemdata_from_sql_pre;
+ int HP_chr_getitemdata_from_sql_post;
int HP_chr_memitemdata_to_sql_pre;
int HP_chr_memitemdata_to_sql_post;
int HP_chr_mmo_gender_pre;
@@ -1553,6 +1713,8 @@ struct {
int HP_chr_char_slotchange_post;
int HP_chr_rename_char_sql_pre;
int HP_chr_rename_char_sql_post;
+ int HP_chr_name_exists_pre;
+ int HP_chr_name_exists_post;
int HP_chr_check_char_name_pre;
int HP_chr_check_char_name_post;
int HP_chr_make_new_char_sql_pre;
@@ -1563,8 +1725,8 @@ struct {
int HP_chr_count_users_post;
int HP_chr_mmo_char_tobuf_pre;
int HP_chr_mmo_char_tobuf_post;
- int HP_chr_mmo_char_send099d_pre;
- int HP_chr_mmo_char_send099d_post;
+ int HP_chr_send_HC_ACK_CHARINFO_PER_PAGE_pre;
+ int HP_chr_send_HC_ACK_CHARINFO_PER_PAGE_post;
int HP_chr_mmo_char_send_ban_list_pre;
int HP_chr_mmo_char_send_ban_list_post;
int HP_chr_mmo_char_send_slots_info_pre;
@@ -1709,8 +1871,6 @@ struct {
int HP_chr_parse_frommap_auth_request_post;
int HP_chr_parse_frommap_update_ip_pre;
int HP_chr_parse_frommap_update_ip_post;
- int HP_chr_parse_frommap_request_stats_report_pre;
- int HP_chr_parse_frommap_request_stats_report_post;
int HP_chr_parse_frommap_scdata_update_pre;
int HP_chr_parse_frommap_scdata_update_post;
int HP_chr_parse_frommap_scdata_delete_pre;
@@ -1923,6 +2083,20 @@ struct {
int HP_geoip_final_post;
int HP_geoip_init_pre;
int HP_geoip_init_post;
+ int HP_inter_achievement_sql_init_pre;
+ int HP_inter_achievement_sql_init_post;
+ int HP_inter_achievement_sql_final_pre;
+ int HP_inter_achievement_sql_final_post;
+ int HP_inter_achievement_tosql_pre;
+ int HP_inter_achievement_tosql_post;
+ int HP_inter_achievement_fromsql_pre;
+ int HP_inter_achievement_fromsql_post;
+ int HP_inter_achievement_ensure_char_achievements_pre;
+ int HP_inter_achievement_ensure_char_achievements_post;
+ int HP_inter_achievement_char_achievements_clear_pre;
+ int HP_inter_achievement_char_achievements_clear_post;
+ int HP_inter_achievement_parse_frommap_pre;
+ int HP_inter_achievement_parse_frommap_post;
int HP_inter_auction_count_pre;
int HP_inter_auction_count_post;
int HP_inter_auction_save_pre;
@@ -1941,12 +2115,26 @@ struct {
int HP_inter_auction_sql_init_post;
int HP_inter_auction_sql_final_pre;
int HP_inter_auction_sql_final_post;
+ int HP_inter_clan_kick_inactive_members_pre;
+ int HP_inter_clan_kick_inactive_members_post;
+ int HP_inter_clan_count_members_pre;
+ int HP_inter_clan_count_members_post;
+ int HP_inter_clan_parse_frommap_pre;
+ int HP_inter_clan_parse_frommap_post;
int HP_inter_elemental_sql_init_pre;
int HP_inter_elemental_sql_init_post;
int HP_inter_elemental_sql_final_pre;
int HP_inter_elemental_sql_final_post;
int HP_inter_elemental_parse_frommap_pre;
int HP_inter_elemental_parse_frommap_post;
+ int HP_inter_elemental_create_pre;
+ int HP_inter_elemental_create_post;
+ int HP_inter_elemental_save_pre;
+ int HP_inter_elemental_save_post;
+ int HP_inter_elemental_load_pre;
+ int HP_inter_elemental_load_post;
+ int HP_inter_elemental_delete_pre;
+ int HP_inter_elemental_delete_post;
int HP_inter_guild_save_timer_pre;
int HP_inter_guild_save_timer_post;
int HP_inter_guild_removemember_tosql_pre;
@@ -1987,16 +2175,54 @@ struct {
int HP_inter_guild_charname_changed_post;
int HP_inter_guild_parse_frommap_pre;
int HP_inter_guild_parse_frommap_post;
- int HP_inter_guild_leave_pre;
- int HP_inter_guild_leave_post;
int HP_inter_guild_broken_pre;
int HP_inter_guild_broken_post;
+ int HP_inter_guild_create_pre;
+ int HP_inter_guild_create_post;
+ int HP_inter_guild_add_member_pre;
+ int HP_inter_guild_add_member_post;
+ int HP_inter_guild_leave_pre;
+ int HP_inter_guild_leave_post;
+ int HP_inter_guild_update_member_info_short_pre;
+ int HP_inter_guild_update_member_info_short_post;
+ int HP_inter_guild_update_member_info_pre;
+ int HP_inter_guild_update_member_info_post;
+ int HP_inter_guild_disband_pre;
+ int HP_inter_guild_disband_post;
+ int HP_inter_guild_update_basic_info_pre;
+ int HP_inter_guild_update_basic_info_post;
+ int HP_inter_guild_update_position_pre;
+ int HP_inter_guild_update_position_post;
+ int HP_inter_guild_use_skill_point_pre;
+ int HP_inter_guild_use_skill_point_post;
+ int HP_inter_guild_remove_alliance_pre;
+ int HP_inter_guild_remove_alliance_post;
+ int HP_inter_guild_change_alliance_pre;
+ int HP_inter_guild_change_alliance_post;
+ int HP_inter_guild_update_notice_pre;
+ int HP_inter_guild_update_notice_post;
+ int HP_inter_guild_update_emblem_pre;
+ int HP_inter_guild_update_emblem_post;
+ int HP_inter_guild_update_castle_data_pre;
+ int HP_inter_guild_update_castle_data_post;
+ int HP_inter_guild_change_leader_pre;
+ int HP_inter_guild_change_leader_post;
int HP_inter_homunculus_sql_init_pre;
int HP_inter_homunculus_sql_init_post;
int HP_inter_homunculus_sql_final_pre;
int HP_inter_homunculus_sql_final_post;
int HP_inter_homunculus_parse_frommap_pre;
int HP_inter_homunculus_parse_frommap_post;
+ int HP_inter_homunculus_create_pre;
+ int HP_inter_homunculus_create_post;
+ int HP_inter_homunculus_save_pre;
+ int HP_inter_homunculus_save_post;
+ int HP_inter_homunculus_load_pre;
+ int HP_inter_homunculus_load_post;
+ int HP_inter_homunculus_delete_pre;
+ int HP_inter_homunculus_delete_post;
+ int HP_inter_homunculus_rename_pre;
+ int HP_inter_homunculus_rename_post;
int HP_inter_msg_txt_pre;
int HP_inter_msg_txt_post;
int HP_inter_msg_config_read_pre;
@@ -2033,6 +2259,16 @@ struct {
int HP_inter_config_read_log_post;
int HP_inter_config_read_connection_pre;
int HP_inter_config_read_connection_post;
+ int HP_inter_accinfo_pre;
+ int HP_inter_accinfo_post;
+ int HP_inter_accinfo2_pre;
+ int HP_inter_accinfo2_post;
+ int HP_inter_add_wisdata_pre;
+ int HP_inter_add_wisdata_post;
+ int HP_inter_get_wisdata_pre;
+ int HP_inter_get_wisdata_post;
+ int HP_inter_remove_wisdata_pre;
+ int HP_inter_remove_wisdata_post;
int HP_inter_mail_sql_init_pre;
int HP_inter_mail_sql_init_post;
int HP_inter_mail_sql_final_pre;
@@ -2049,6 +2285,16 @@ struct {
int HP_inter_mail_DeleteAttach_post;
int HP_inter_mail_sendmail_pre;
int HP_inter_mail_sendmail_post;
+ int HP_inter_mail_mark_read_pre;
+ int HP_inter_mail_mark_read_post;
+ int HP_inter_mail_get_attachment_pre;
+ int HP_inter_mail_get_attachment_post;
+ int HP_inter_mail_delete_pre;
+ int HP_inter_mail_delete_post;
+ int HP_inter_mail_return_message_pre;
+ int HP_inter_mail_return_message_post;
+ int HP_inter_mail_send_pre;
+ int HP_inter_mail_send_post;
int HP_inter_mercenary_owner_fromsql_pre;
int HP_inter_mercenary_owner_fromsql_post;
int HP_inter_mercenary_owner_tosql_pre;
@@ -2061,6 +2307,14 @@ struct {
int HP_inter_mercenary_sql_final_post;
int HP_inter_mercenary_parse_frommap_pre;
int HP_inter_mercenary_parse_frommap_post;
+ int HP_inter_mercenary_create_pre;
+ int HP_inter_mercenary_create_post;
+ int HP_inter_mercenary_save_pre;
+ int HP_inter_mercenary_save_post;
+ int HP_inter_mercenary_load_pre;
+ int HP_inter_mercenary_load_post;
+ int HP_inter_mercenary_delete_pre;
+ int HP_inter_mercenary_delete_post;
int HP_inter_party_check_lv_pre;
int HP_inter_party_check_lv_post;
int HP_inter_party_calc_state_pre;
@@ -2087,6 +2341,18 @@ struct {
int HP_inter_party_CharOnline_post;
int HP_inter_party_CharOffline_pre;
int HP_inter_party_CharOffline_post;
+ int HP_inter_party_create_pre;
+ int HP_inter_party_create_post;
+ int HP_inter_party_add_member_pre;
+ int HP_inter_party_add_member_post;
+ int HP_inter_party_change_option_pre;
+ int HP_inter_party_change_option_post;
+ int HP_inter_party_change_map_pre;
+ int HP_inter_party_change_map_post;
+ int HP_inter_party_disband_pre;
+ int HP_inter_party_disband_post;
+ int HP_inter_party_change_leader_pre;
+ int HP_inter_party_change_leader_post;
int HP_inter_pet_tosql_pre;
int HP_inter_pet_tosql_post;
int HP_inter_pet_fromsql_pre;
@@ -2099,8 +2365,38 @@ struct {
int HP_inter_pet_delete__post;
int HP_inter_pet_parse_frommap_pre;
int HP_inter_pet_parse_frommap_post;
+ int HP_inter_pet_create_pre;
+ int HP_inter_pet_create_post;
+ int HP_inter_pet_load_pre;
+ int HP_inter_pet_load_post;
int HP_inter_quest_parse_frommap_pre;
int HP_inter_quest_parse_frommap_post;
+ int HP_inter_quest_fromsql_pre;
+ int HP_inter_quest_fromsql_post;
+ int HP_inter_quest_delete_pre;
+ int HP_inter_quest_delete_post;
+ int HP_inter_quest_add_pre;
+ int HP_inter_quest_add_post;
+ int HP_inter_quest_update_pre;
+ int HP_inter_quest_update_post;
+ int HP_inter_quest_save_pre;
+ int HP_inter_quest_save_post;
+ int HP_inter_rodex_sql_init_pre;
+ int HP_inter_rodex_sql_init_post;
+ int HP_inter_rodex_sql_final_pre;
+ int HP_inter_rodex_sql_final_post;
+ int HP_inter_rodex_parse_frommap_pre;
+ int HP_inter_rodex_parse_frommap_post;
+ int HP_inter_rodex_fromsql_pre;
+ int HP_inter_rodex_fromsql_post;
+ int HP_inter_rodex_hasnew_pre;
+ int HP_inter_rodex_hasnew_post;
+ int HP_inter_rodex_checkname_pre;
+ int HP_inter_rodex_checkname_post;
+ int HP_inter_rodex_savemessage_pre;
+ int HP_inter_rodex_savemessage_post;
+ int HP_inter_rodex_updatemail_pre;
+ int HP_inter_rodex_updatemail_post;
int HP_inter_storage_tosql_pre;
int HP_inter_storage_tosql_post;
int HP_inter_storage_fromsql_pre;
@@ -2119,6 +2415,8 @@ struct {
int HP_inter_storage_guild_storage_delete_post;
int HP_inter_storage_parse_frommap_pre;
int HP_inter_storage_parse_frommap_post;
+ int HP_inter_storage_retrieve_bound_items_pre;
+ int HP_inter_storage_retrieve_bound_items_post;
int HP_libconfig_read_pre;
int HP_libconfig_read_post;
int HP_libconfig_write_pre;
@@ -2303,6 +2601,16 @@ struct {
int HP_mapif_send_post;
int HP_mapif_send_users_count_pre;
int HP_mapif_send_users_count_post;
+ int HP_mapif_pLoadAchievements_pre;
+ int HP_mapif_pLoadAchievements_post;
+ int HP_mapif_sAchievementsToMap_pre;
+ int HP_mapif_sAchievementsToMap_post;
+ int HP_mapif_pSaveAchievements_pre;
+ int HP_mapif_pSaveAchievements_post;
+ int HP_mapif_achievement_load_pre;
+ int HP_mapif_achievement_load_post;
+ int HP_mapif_achievement_save_pre;
+ int HP_mapif_achievement_save_post;
int HP_mapif_auction_message_pre;
int HP_mapif_auction_message_post;
int HP_mapif_auction_sendlist_pre;
@@ -2325,14 +2633,6 @@ struct {
int HP_mapif_auction_bid_post;
int HP_mapif_parse_auction_bid_pre;
int HP_mapif_parse_auction_bid_post;
- int HP_mapif_elemental_create_pre;
- int HP_mapif_elemental_create_post;
- int HP_mapif_elemental_save_pre;
- int HP_mapif_elemental_save_post;
- int HP_mapif_elemental_load_pre;
- int HP_mapif_elemental_load_post;
- int HP_mapif_elemental_delete_pre;
- int HP_mapif_elemental_delete_post;
int HP_mapif_elemental_send_pre;
int HP_mapif_elemental_send_post;
int HP_mapif_parse_elemental_create_pre;
@@ -2403,8 +2703,6 @@ struct {
int HP_mapif_parse_GuildPosition_post;
int HP_mapif_parse_GuildSkillUp_pre;
int HP_mapif_parse_GuildSkillUp_post;
- int HP_mapif_parse_GuildDeleteAlliance_pre;
- int HP_mapif_parse_GuildDeleteAlliance_post;
int HP_mapif_parse_GuildAlliance_pre;
int HP_mapif_parse_GuildAlliance_post;
int HP_mapif_parse_GuildNotice_pre;
@@ -2427,16 +2725,6 @@ struct {
int HP_mapif_homunculus_saved_post;
int HP_mapif_homunculus_renamed_pre;
int HP_mapif_homunculus_renamed_post;
- int HP_mapif_homunculus_create_pre;
- int HP_mapif_homunculus_create_post;
- int HP_mapif_homunculus_save_pre;
- int HP_mapif_homunculus_save_post;
- int HP_mapif_homunculus_load_pre;
- int HP_mapif_homunculus_load_post;
- int HP_mapif_homunculus_delete_pre;
- int HP_mapif_homunculus_delete_post;
- int HP_mapif_homunculus_rename_pre;
- int HP_mapif_homunculus_rename_post;
int HP_mapif_parse_homunculus_create_pre;
int HP_mapif_parse_homunculus_create_post;
int HP_mapif_parse_homunculus_delete_pre;
@@ -2455,8 +2743,6 @@ struct {
int HP_mapif_parse_mail_read_post;
int HP_mapif_mail_sendattach_pre;
int HP_mapif_mail_sendattach_post;
- int HP_mapif_mail_getattach_pre;
- int HP_mapif_mail_getattach_post;
int HP_mapif_parse_mail_getattach_pre;
int HP_mapif_parse_mail_getattach_post;
int HP_mapif_mail_delete_pre;
@@ -2473,14 +2759,6 @@ struct {
int HP_mapif_mail_send_post;
int HP_mapif_parse_mail_send_pre;
int HP_mapif_parse_mail_send_post;
- int HP_mapif_mercenary_create_pre;
- int HP_mapif_mercenary_create_post;
- int HP_mapif_mercenary_save_pre;
- int HP_mapif_mercenary_save_post;
- int HP_mapif_mercenary_load_pre;
- int HP_mapif_mercenary_load_post;
- int HP_mapif_mercenary_delete_pre;
- int HP_mapif_mercenary_delete_post;
int HP_mapif_mercenary_send_pre;
int HP_mapif_mercenary_send_post;
int HP_mapif_parse_mercenary_create_pre;
@@ -2541,10 +2819,6 @@ struct {
int HP_mapif_save_pet_ack_post;
int HP_mapif_delete_pet_ack_pre;
int HP_mapif_delete_pet_ack_post;
- int HP_mapif_create_pet_pre;
- int HP_mapif_create_pet_post;
- int HP_mapif_load_pet_pre;
- int HP_mapif_load_pet_post;
int HP_mapif_save_pet_pre;
int HP_mapif_save_pet_post;
int HP_mapif_delete_pet_pre;
@@ -2557,14 +2831,6 @@ struct {
int HP_mapif_parse_SavePet_post;
int HP_mapif_parse_DeletePet_pre;
int HP_mapif_parse_DeletePet_post;
- int HP_mapif_quests_fromsql_pre;
- int HP_mapif_quests_fromsql_post;
- int HP_mapif_quest_delete_pre;
- int HP_mapif_quest_delete_post;
- int HP_mapif_quest_add_pre;
- int HP_mapif_quest_add_post;
- int HP_mapif_quest_update_pre;
- int HP_mapif_quest_update_post;
int HP_mapif_quest_save_ack_pre;
int HP_mapif_quest_save_ack_post;
int HP_mapif_parse_quest_save_pre;
@@ -2573,6 +2839,24 @@ struct {
int HP_mapif_send_quests_post;
int HP_mapif_parse_quest_load_pre;
int HP_mapif_parse_quest_load_post;
+ int HP_mapif_parse_rodex_requestinbox_pre;
+ int HP_mapif_parse_rodex_requestinbox_post;
+ int HP_mapif_rodex_sendinbox_pre;
+ int HP_mapif_rodex_sendinbox_post;
+ int HP_mapif_parse_rodex_checkhasnew_pre;
+ int HP_mapif_parse_rodex_checkhasnew_post;
+ int HP_mapif_rodex_sendhasnew_pre;
+ int HP_mapif_rodex_sendhasnew_post;
+ int HP_mapif_parse_rodex_updatemail_pre;
+ int HP_mapif_parse_rodex_updatemail_post;
+ int HP_mapif_parse_rodex_send_pre;
+ int HP_mapif_parse_rodex_send_post;
+ int HP_mapif_rodex_send_pre;
+ int HP_mapif_rodex_send_post;
+ int HP_mapif_parse_rodex_checkname_pre;
+ int HP_mapif_parse_rodex_checkname_post;
+ int HP_mapif_rodex_checkname_pre;
+ int HP_mapif_rodex_checkname_post;
int HP_mapif_load_guild_storage_pre;
int HP_mapif_load_guild_storage_post;
int HP_mapif_save_guild_storage_ack_pre;
@@ -2581,16 +2865,20 @@ struct {
int HP_mapif_parse_LoadGuildStorage_post;
int HP_mapif_parse_SaveGuildStorage_pre;
int HP_mapif_parse_SaveGuildStorage_post;
+ int HP_mapif_account_storage_load_pre;
+ int HP_mapif_account_storage_load_post;
+ int HP_mapif_pAccountStorageLoad_pre;
+ int HP_mapif_pAccountStorageLoad_post;
+ int HP_mapif_pAccountStorageSave_pre;
+ int HP_mapif_pAccountStorageSave_post;
+ int HP_mapif_sAccountStorageSaveAck_pre;
+ int HP_mapif_sAccountStorageSaveAck_post;
int HP_mapif_itembound_ack_pre;
int HP_mapif_itembound_ack_post;
- int HP_mapif_parse_ItemBoundRetrieve_sub_pre;
- int HP_mapif_parse_ItemBoundRetrieve_sub_post;
int HP_mapif_parse_ItemBoundRetrieve_pre;
int HP_mapif_parse_ItemBoundRetrieve_post;
int HP_mapif_parse_accinfo_pre;
int HP_mapif_parse_accinfo_post;
- int HP_mapif_parse_accinfo2_pre;
- int HP_mapif_parse_accinfo2_post;
int HP_mapif_broadcast_pre;
int HP_mapif_broadcast_post;
int HP_mapif_wis_message_pre;
@@ -2619,6 +2907,10 @@ struct {
int HP_mapif_namechange_ack_post;
int HP_mapif_parse_NameChangeRequest_pre;
int HP_mapif_parse_NameChangeRequest_post;
+ int HP_mapif_parse_ClanMemberKick_pre;
+ int HP_mapif_parse_ClanMemberKick_post;
+ int HP_mapif_parse_ClanMemberCount_pre;
+ int HP_mapif_parse_ClanMemberCount_post;
int HP_mapindex_init_pre;
int HP_mapindex_init_post;
int HP_mapindex_final_pre;
@@ -2665,6 +2957,14 @@ struct {
int HP_mutex_cond_broadcast_post;
int HP_nullpo_assert_report_pre;
int HP_nullpo_assert_report_post;
+ int HP_packets_init_pre;
+ int HP_packets_init_post;
+ int HP_packets_final_pre;
+ int HP_packets_final_post;
+ int HP_packets_addLens_pre;
+ int HP_packets_addLens_post;
+ int HP_packets_addLen_pre;
+ int HP_packets_addLen_post;
int HP_pincode_handle_pre;
int HP_pincode_handle_post;
int HP_pincode_decrypt_pre;
@@ -2673,18 +2973,30 @@ struct {
int HP_pincode_error_post;
int HP_pincode_update_pre;
int HP_pincode_update_post;
- int HP_pincode_sendstate_pre;
- int HP_pincode_sendstate_post;
+ int HP_pincode_makestate_pre;
+ int HP_pincode_makestate_post;
+ int HP_pincode_editstate_pre;
+ int HP_pincode_editstate_post;
+ int HP_pincode_loginstate_pre;
+ int HP_pincode_loginstate_post;
+ int HP_pincode_loginstate2_pre;
+ int HP_pincode_loginstate2_post;
int HP_pincode_setnew_pre;
int HP_pincode_setnew_post;
int HP_pincode_change_pre;
int HP_pincode_change_post;
+ int HP_pincode_isBlacklisted_pre;
+ int HP_pincode_isBlacklisted_post;
int HP_pincode_compare_pre;
int HP_pincode_compare_post;
int HP_pincode_check_pre;
int HP_pincode_check_post;
int HP_pincode_config_read_pre;
int HP_pincode_config_read_post;
+ int HP_pincode_init_pre;
+ int HP_pincode_init_post;
+ int HP_pincode_final_pre;
+ int HP_pincode_final_post;
int HP_rnd_init_pre;
int HP_rnd_init_post;
int HP_rnd_final_pre;
@@ -2727,10 +3039,14 @@ struct {
int HP_sockt_realloc_writefifo_post;
int HP_sockt_wfifoset_pre;
int HP_sockt_wfifoset_post;
+ int HP_sockt_wfifohead_pre;
+ int HP_sockt_wfifohead_post;
int HP_sockt_rfifoskip_pre;
int HP_sockt_rfifoskip_post;
int HP_sockt_close_pre;
int HP_sockt_close_post;
+ int HP_sockt_validateWfifo_pre;
+ int HP_sockt_validateWfifo_post;
int HP_sockt_session_is_valid_pre;
int HP_sockt_session_is_valid_post;
int HP_sockt_session_is_active_pre;
@@ -2988,7 +3304,9 @@ struct {
struct db_interface DB;
struct des_interface des;
struct geoip_interface geoip;
+ struct inter_achievement_interface inter_achievement;
struct inter_auction_interface inter_auction;
+ struct inter_clan_interface inter_clan;
struct inter_elemental_interface inter_elemental;
struct inter_guild_interface inter_guild;
struct inter_homunculus_interface inter_homunculus;
@@ -2998,6 +3316,7 @@ struct {
struct inter_party_interface inter_party;
struct inter_pet_interface inter_pet;
struct inter_quest_interface inter_quest;
+ struct inter_rodex_interface inter_rodex;
struct inter_storage_interface inter_storage;
struct libconfig_interface libconfig;
struct loginif_interface loginif;
@@ -3006,6 +3325,7 @@ struct {
struct md5_interface md5;
struct mutex_interface mutex;
struct nullpo_interface nullpo;
+ struct packets_interface packets;
struct pincode_interface pincode;
struct rnd_interface rnd;
struct showmsg_interface showmsg;
diff --git a/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc
index 29720bf40..7813f5bac 100644
--- a/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc
+++ b/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2017 Hercules Dev Team
+ * Copyright (C) 2013-2019 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -46,6 +46,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(chr->set_all_offline_sql, HP_chr_set_all_offline_sql) },
{ HP_POP(chr->create_charstatus, HP_chr_create_charstatus) },
{ HP_POP(chr->mmo_char_tosql, HP_chr_mmo_char_tosql) },
+ { HP_POP(chr->getitemdata_from_sql, HP_chr_getitemdata_from_sql) },
{ HP_POP(chr->memitemdata_to_sql, HP_chr_memitemdata_to_sql) },
{ HP_POP(chr->mmo_gender, HP_chr_mmo_gender) },
{ HP_POP(chr->mmo_chars_fromsql, HP_chr_mmo_chars_fromsql) },
@@ -53,12 +54,13 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(chr->mmo_char_sql_init, HP_chr_mmo_char_sql_init) },
{ HP_POP(chr->char_slotchange, HP_chr_char_slotchange) },
{ HP_POP(chr->rename_char_sql, HP_chr_rename_char_sql) },
+ { HP_POP(chr->name_exists, HP_chr_name_exists) },
{ HP_POP(chr->check_char_name, HP_chr_check_char_name) },
{ HP_POP(chr->make_new_char_sql, HP_chr_make_new_char_sql) },
{ HP_POP(chr->divorce_char_sql, HP_chr_divorce_char_sql) },
{ HP_POP(chr->count_users, HP_chr_count_users) },
{ HP_POP(chr->mmo_char_tobuf, HP_chr_mmo_char_tobuf) },
- { HP_POP(chr->mmo_char_send099d, HP_chr_mmo_char_send099d) },
+ { HP_POP(chr->send_HC_ACK_CHARINFO_PER_PAGE, HP_chr_send_HC_ACK_CHARINFO_PER_PAGE) },
{ HP_POP(chr->mmo_char_send_ban_list, HP_chr_mmo_char_send_ban_list) },
{ HP_POP(chr->mmo_char_send_slots_info, HP_chr_mmo_char_send_slots_info) },
{ HP_POP(chr->mmo_char_send_characters, HP_chr_mmo_char_send_characters) },
@@ -131,7 +133,6 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(chr->map_auth_failed, HP_chr_map_auth_failed) },
{ HP_POP(chr->parse_frommap_auth_request, HP_chr_parse_frommap_auth_request) },
{ HP_POP(chr->parse_frommap_update_ip, HP_chr_parse_frommap_update_ip) },
- { HP_POP(chr->parse_frommap_request_stats_report, HP_chr_parse_frommap_request_stats_report) },
{ HP_POP(chr->parse_frommap_scdata_update, HP_chr_parse_frommap_scdata_update) },
{ HP_POP(chr->parse_frommap_scdata_delete, HP_chr_parse_frommap_scdata_delete) },
{ HP_POP(chr->parse_frommap, HP_chr_parse_frommap) },
@@ -244,6 +245,14 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(geoip->getcountry, HP_geoip_getcountry) },
{ HP_POP(geoip->final, HP_geoip_final) },
{ HP_POP(geoip->init, HP_geoip_init) },
+/* inter_achievement_interface */
+ { HP_POP(inter_achievement->sql_init, HP_inter_achievement_sql_init) },
+ { HP_POP(inter_achievement->sql_final, HP_inter_achievement_sql_final) },
+ { HP_POP(inter_achievement->tosql, HP_inter_achievement_tosql) },
+ { HP_POP(inter_achievement->fromsql, HP_inter_achievement_fromsql) },
+ { HP_POP(inter_achievement->ensure_char_achievements, HP_inter_achievement_ensure_char_achievements) },
+ { HP_POP(inter_achievement->char_achievements_clear, HP_inter_achievement_char_achievements_clear) },
+ { HP_POP(inter_achievement->parse_frommap, HP_inter_achievement_parse_frommap) },
/* inter_auction_interface */
{ HP_POP(inter_auction->count, HP_inter_auction_count) },
{ HP_POP(inter_auction->save, HP_inter_auction_save) },
@@ -254,10 +263,18 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(inter_auction->parse_frommap, HP_inter_auction_parse_frommap) },
{ HP_POP(inter_auction->sql_init, HP_inter_auction_sql_init) },
{ HP_POP(inter_auction->sql_final, HP_inter_auction_sql_final) },
+/* inter_clan_interface */
+ { HP_POP(inter_clan->kick_inactive_members, HP_inter_clan_kick_inactive_members) },
+ { HP_POP(inter_clan->count_members, HP_inter_clan_count_members) },
+ { HP_POP(inter_clan->parse_frommap, HP_inter_clan_parse_frommap) },
/* inter_elemental_interface */
{ HP_POP(inter_elemental->sql_init, HP_inter_elemental_sql_init) },
{ HP_POP(inter_elemental->sql_final, HP_inter_elemental_sql_final) },
{ HP_POP(inter_elemental->parse_frommap, HP_inter_elemental_parse_frommap) },
+ { HP_POP(inter_elemental->create, HP_inter_elemental_create) },
+ { HP_POP(inter_elemental->save, HP_inter_elemental_save) },
+ { HP_POP(inter_elemental->load, HP_inter_elemental_load) },
+ { HP_POP(inter_elemental->delete, HP_inter_elemental_delete) },
/* inter_guild_interface */
{ HP_POP(inter_guild->save_timer, HP_inter_guild_save_timer) },
{ HP_POP(inter_guild->removemember_tosql, HP_inter_guild_removemember_tosql) },
@@ -279,12 +296,31 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(inter_guild->sex_changed, HP_inter_guild_sex_changed) },
{ HP_POP(inter_guild->charname_changed, HP_inter_guild_charname_changed) },
{ HP_POP(inter_guild->parse_frommap, HP_inter_guild_parse_frommap) },
- { HP_POP(inter_guild->leave, HP_inter_guild_leave) },
{ HP_POP(inter_guild->broken, HP_inter_guild_broken) },
+ { HP_POP(inter_guild->create, HP_inter_guild_create) },
+ { HP_POP(inter_guild->add_member, HP_inter_guild_add_member) },
+ { HP_POP(inter_guild->leave, HP_inter_guild_leave) },
+ { HP_POP(inter_guild->update_member_info_short, HP_inter_guild_update_member_info_short) },
+ { HP_POP(inter_guild->update_member_info, HP_inter_guild_update_member_info) },
+ { HP_POP(inter_guild->disband, HP_inter_guild_disband) },
+ { HP_POP(inter_guild->update_basic_info, HP_inter_guild_update_basic_info) },
+ { HP_POP(inter_guild->update_position, HP_inter_guild_update_position) },
+ { HP_POP(inter_guild->use_skill_point, HP_inter_guild_use_skill_point) },
+ { HP_POP(inter_guild->remove_alliance, HP_inter_guild_remove_alliance) },
+ { HP_POP(inter_guild->change_alliance, HP_inter_guild_change_alliance) },
+ { HP_POP(inter_guild->update_notice, HP_inter_guild_update_notice) },
+ { HP_POP(inter_guild->update_emblem, HP_inter_guild_update_emblem) },
+ { HP_POP(inter_guild->update_castle_data, HP_inter_guild_update_castle_data) },
+ { HP_POP(inter_guild->change_leader, HP_inter_guild_change_leader) },
/* inter_homunculus_interface */
{ HP_POP(inter_homunculus->sql_init, HP_inter_homunculus_sql_init) },
{ HP_POP(inter_homunculus->sql_final, HP_inter_homunculus_sql_final) },
{ HP_POP(inter_homunculus->parse_frommap, HP_inter_homunculus_parse_frommap) },
+ { HP_POP(inter_homunculus->create, HP_inter_homunculus_create) },
+ { HP_POP(inter_homunculus->save, HP_inter_homunculus_save) },
+ { HP_POP(inter_homunculus->load, HP_inter_homunculus_load) },
+ { HP_POP(inter_homunculus->delete, HP_inter_homunculus_delete) },
+ { HP_POP(inter_homunculus->rename, HP_inter_homunculus_rename) },
/* inter_interface */
{ HP_POP(inter->msg_txt, HP_inter_msg_txt) },
{ HP_POP(inter->msg_config_read, HP_inter_msg_config_read) },
@@ -304,6 +340,11 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(inter->config_read, HP_inter_config_read) },
{ HP_POP(inter->config_read_log, HP_inter_config_read_log) },
{ HP_POP(inter->config_read_connection, HP_inter_config_read_connection) },
+ { HP_POP(inter->accinfo, HP_inter_accinfo) },
+ { HP_POP(inter->accinfo2, HP_inter_accinfo2) },
+ { HP_POP(inter->add_wisdata, HP_inter_add_wisdata) },
+ { HP_POP(inter->get_wisdata, HP_inter_get_wisdata) },
+ { HP_POP(inter->remove_wisdata, HP_inter_remove_wisdata) },
/* inter_mail_interface */
{ HP_POP(inter_mail->sql_init, HP_inter_mail_sql_init) },
{ HP_POP(inter_mail->sql_final, HP_inter_mail_sql_final) },
@@ -313,6 +354,11 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(inter_mail->loadmessage, HP_inter_mail_loadmessage) },
{ HP_POP(inter_mail->DeleteAttach, HP_inter_mail_DeleteAttach) },
{ HP_POP(inter_mail->sendmail, HP_inter_mail_sendmail) },
+ { HP_POP(inter_mail->mark_read, HP_inter_mail_mark_read) },
+ { HP_POP(inter_mail->get_attachment, HP_inter_mail_get_attachment) },
+ { HP_POP(inter_mail->delete, HP_inter_mail_delete) },
+ { HP_POP(inter_mail->return_message, HP_inter_mail_return_message) },
+ { HP_POP(inter_mail->send, HP_inter_mail_send) },
/* inter_mercenary_interface */
{ HP_POP(inter_mercenary->owner_fromsql, HP_inter_mercenary_owner_fromsql) },
{ HP_POP(inter_mercenary->owner_tosql, HP_inter_mercenary_owner_tosql) },
@@ -320,6 +366,10 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(inter_mercenary->sql_init, HP_inter_mercenary_sql_init) },
{ HP_POP(inter_mercenary->sql_final, HP_inter_mercenary_sql_final) },
{ HP_POP(inter_mercenary->parse_frommap, HP_inter_mercenary_parse_frommap) },
+ { HP_POP(inter_mercenary->create, HP_inter_mercenary_create) },
+ { HP_POP(inter_mercenary->save, HP_inter_mercenary_save) },
+ { HP_POP(inter_mercenary->load, HP_inter_mercenary_load) },
+ { HP_POP(inter_mercenary->delete, HP_inter_mercenary_delete) },
/* inter_party_interface */
{ HP_POP(inter_party->check_lv, HP_inter_party_check_lv) },
{ HP_POP(inter_party->calc_state, HP_inter_party_calc_state) },
@@ -334,6 +384,12 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(inter_party->leave, HP_inter_party_leave) },
{ HP_POP(inter_party->CharOnline, HP_inter_party_CharOnline) },
{ HP_POP(inter_party->CharOffline, HP_inter_party_CharOffline) },
+ { HP_POP(inter_party->create, HP_inter_party_create) },
+ { HP_POP(inter_party->add_member, HP_inter_party_add_member) },
+ { HP_POP(inter_party->change_option, HP_inter_party_change_option) },
+ { HP_POP(inter_party->change_map, HP_inter_party_change_map) },
+ { HP_POP(inter_party->disband, HP_inter_party_disband) },
+ { HP_POP(inter_party->change_leader, HP_inter_party_change_leader) },
/* inter_pet_interface */
{ HP_POP(inter_pet->tosql, HP_inter_pet_tosql) },
{ HP_POP(inter_pet->fromsql, HP_inter_pet_fromsql) },
@@ -341,8 +397,24 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(inter_pet->sql_final, HP_inter_pet_sql_final) },
{ HP_POP(inter_pet->delete_, HP_inter_pet_delete_) },
{ HP_POP(inter_pet->parse_frommap, HP_inter_pet_parse_frommap) },
+ { HP_POP(inter_pet->create, HP_inter_pet_create) },
+ { HP_POP(inter_pet->load, HP_inter_pet_load) },
/* inter_quest_interface */
{ HP_POP(inter_quest->parse_frommap, HP_inter_quest_parse_frommap) },
+ { HP_POP(inter_quest->fromsql, HP_inter_quest_fromsql) },
+ { HP_POP(inter_quest->delete, HP_inter_quest_delete) },
+ { HP_POP(inter_quest->add, HP_inter_quest_add) },
+ { HP_POP(inter_quest->update, HP_inter_quest_update) },
+ { HP_POP(inter_quest->save, HP_inter_quest_save) },
+/* inter_rodex_interface */
+ { HP_POP(inter_rodex->sql_init, HP_inter_rodex_sql_init) },
+ { HP_POP(inter_rodex->sql_final, HP_inter_rodex_sql_final) },
+ { HP_POP(inter_rodex->parse_frommap, HP_inter_rodex_parse_frommap) },
+ { HP_POP(inter_rodex->fromsql, HP_inter_rodex_fromsql) },
+ { HP_POP(inter_rodex->hasnew, HP_inter_rodex_hasnew) },
+ { HP_POP(inter_rodex->checkname, HP_inter_rodex_checkname) },
+ { HP_POP(inter_rodex->savemessage, HP_inter_rodex_savemessage) },
+ { HP_POP(inter_rodex->updatemail, HP_inter_rodex_updatemail) },
/* inter_storage_interface */
{ HP_POP(inter_storage->tosql, HP_inter_storage_tosql) },
{ HP_POP(inter_storage->fromsql, HP_inter_storage_fromsql) },
@@ -353,6 +425,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(inter_storage->delete_, HP_inter_storage_delete_) },
{ HP_POP(inter_storage->guild_storage_delete, HP_inter_storage_guild_storage_delete) },
{ HP_POP(inter_storage->parse_frommap, HP_inter_storage_parse_frommap) },
+ { HP_POP(inter_storage->retrieve_bound_items, HP_inter_storage_retrieve_bound_items) },
/* libconfig_interface */
{ HP_POP(libconfig->read, HP_libconfig_read) },
{ HP_POP(libconfig->write, HP_libconfig_write) },
@@ -448,6 +521,11 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(mapif->sendallwos, HP_mapif_sendallwos) },
{ HP_POP(mapif->send, HP_mapif_send) },
{ HP_POP(mapif->send_users_count, HP_mapif_send_users_count) },
+ { HP_POP(mapif->pLoadAchievements, HP_mapif_pLoadAchievements) },
+ { HP_POP(mapif->sAchievementsToMap, HP_mapif_sAchievementsToMap) },
+ { HP_POP(mapif->pSaveAchievements, HP_mapif_pSaveAchievements) },
+ { HP_POP(mapif->achievement_load, HP_mapif_achievement_load) },
+ { HP_POP(mapif->achievement_save, HP_mapif_achievement_save) },
{ HP_POP(mapif->auction_message, HP_mapif_auction_message) },
{ HP_POP(mapif->auction_sendlist, HP_mapif_auction_sendlist) },
{ HP_POP(mapif->parse_auction_requestlist, HP_mapif_parse_auction_requestlist) },
@@ -459,10 +537,6 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(mapif->parse_auction_close, HP_mapif_parse_auction_close) },
{ HP_POP(mapif->auction_bid, HP_mapif_auction_bid) },
{ HP_POP(mapif->parse_auction_bid, HP_mapif_parse_auction_bid) },
- { HP_POP(mapif->elemental_create, HP_mapif_elemental_create) },
- { HP_POP(mapif->elemental_save, HP_mapif_elemental_save) },
- { HP_POP(mapif->elemental_load, HP_mapif_elemental_load) },
- { HP_POP(mapif->elemental_delete, HP_mapif_elemental_delete) },
{ HP_POP(mapif->elemental_send, HP_mapif_elemental_send) },
{ HP_POP(mapif->parse_elemental_create, HP_mapif_parse_elemental_create) },
{ HP_POP(mapif->parse_elemental_load, HP_mapif_parse_elemental_load) },
@@ -498,7 +572,6 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(mapif->parse_GuildMemberInfoChange, HP_mapif_parse_GuildMemberInfoChange) },
{ HP_POP(mapif->parse_GuildPosition, HP_mapif_parse_GuildPosition) },
{ HP_POP(mapif->parse_GuildSkillUp, HP_mapif_parse_GuildSkillUp) },
- { HP_POP(mapif->parse_GuildDeleteAlliance, HP_mapif_parse_GuildDeleteAlliance) },
{ HP_POP(mapif->parse_GuildAlliance, HP_mapif_parse_GuildAlliance) },
{ HP_POP(mapif->parse_GuildNotice, HP_mapif_parse_GuildNotice) },
{ HP_POP(mapif->parse_GuildEmblem, HP_mapif_parse_GuildEmblem) },
@@ -510,11 +583,6 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(mapif->homunculus_loaded, HP_mapif_homunculus_loaded) },
{ HP_POP(mapif->homunculus_saved, HP_mapif_homunculus_saved) },
{ HP_POP(mapif->homunculus_renamed, HP_mapif_homunculus_renamed) },
- { HP_POP(mapif->homunculus_create, HP_mapif_homunculus_create) },
- { HP_POP(mapif->homunculus_save, HP_mapif_homunculus_save) },
- { HP_POP(mapif->homunculus_load, HP_mapif_homunculus_load) },
- { HP_POP(mapif->homunculus_delete, HP_mapif_homunculus_delete) },
- { HP_POP(mapif->homunculus_rename, HP_mapif_homunculus_rename) },
{ HP_POP(mapif->parse_homunculus_create, HP_mapif_parse_homunculus_create) },
{ HP_POP(mapif->parse_homunculus_delete, HP_mapif_parse_homunculus_delete) },
{ HP_POP(mapif->parse_homunculus_load, HP_mapif_parse_homunculus_load) },
@@ -524,7 +592,6 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(mapif->parse_mail_requestinbox, HP_mapif_parse_mail_requestinbox) },
{ HP_POP(mapif->parse_mail_read, HP_mapif_parse_mail_read) },
{ HP_POP(mapif->mail_sendattach, HP_mapif_mail_sendattach) },
- { HP_POP(mapif->mail_getattach, HP_mapif_mail_getattach) },
{ HP_POP(mapif->parse_mail_getattach, HP_mapif_parse_mail_getattach) },
{ HP_POP(mapif->mail_delete, HP_mapif_mail_delete) },
{ HP_POP(mapif->parse_mail_delete, HP_mapif_parse_mail_delete) },
@@ -533,10 +600,6 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(mapif->parse_mail_return, HP_mapif_parse_mail_return) },
{ HP_POP(mapif->mail_send, HP_mapif_mail_send) },
{ HP_POP(mapif->parse_mail_send, HP_mapif_parse_mail_send) },
- { HP_POP(mapif->mercenary_create, HP_mapif_mercenary_create) },
- { HP_POP(mapif->mercenary_save, HP_mapif_mercenary_save) },
- { HP_POP(mapif->mercenary_load, HP_mapif_mercenary_load) },
- { HP_POP(mapif->mercenary_delete, HP_mapif_mercenary_delete) },
{ HP_POP(mapif->mercenary_send, HP_mapif_mercenary_send) },
{ HP_POP(mapif->parse_mercenary_create, HP_mapif_parse_mercenary_create) },
{ HP_POP(mapif->parse_mercenary_load, HP_mapif_parse_mercenary_load) },
@@ -567,31 +630,36 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(mapif->pet_noinfo, HP_mapif_pet_noinfo) },
{ HP_POP(mapif->save_pet_ack, HP_mapif_save_pet_ack) },
{ HP_POP(mapif->delete_pet_ack, HP_mapif_delete_pet_ack) },
- { HP_POP(mapif->create_pet, HP_mapif_create_pet) },
- { HP_POP(mapif->load_pet, HP_mapif_load_pet) },
{ HP_POP(mapif->save_pet, HP_mapif_save_pet) },
{ HP_POP(mapif->delete_pet, HP_mapif_delete_pet) },
{ HP_POP(mapif->parse_CreatePet, HP_mapif_parse_CreatePet) },
{ HP_POP(mapif->parse_LoadPet, HP_mapif_parse_LoadPet) },
{ HP_POP(mapif->parse_SavePet, HP_mapif_parse_SavePet) },
{ HP_POP(mapif->parse_DeletePet, HP_mapif_parse_DeletePet) },
- { HP_POP(mapif->quests_fromsql, HP_mapif_quests_fromsql) },
- { HP_POP(mapif->quest_delete, HP_mapif_quest_delete) },
- { HP_POP(mapif->quest_add, HP_mapif_quest_add) },
- { HP_POP(mapif->quest_update, HP_mapif_quest_update) },
{ HP_POP(mapif->quest_save_ack, HP_mapif_quest_save_ack) },
{ HP_POP(mapif->parse_quest_save, HP_mapif_parse_quest_save) },
{ HP_POP(mapif->send_quests, HP_mapif_send_quests) },
{ HP_POP(mapif->parse_quest_load, HP_mapif_parse_quest_load) },
+ { HP_POP(mapif->parse_rodex_requestinbox, HP_mapif_parse_rodex_requestinbox) },
+ { HP_POP(mapif->rodex_sendinbox, HP_mapif_rodex_sendinbox) },
+ { HP_POP(mapif->parse_rodex_checkhasnew, HP_mapif_parse_rodex_checkhasnew) },
+ { HP_POP(mapif->rodex_sendhasnew, HP_mapif_rodex_sendhasnew) },
+ { HP_POP(mapif->parse_rodex_updatemail, HP_mapif_parse_rodex_updatemail) },
+ { HP_POP(mapif->parse_rodex_send, HP_mapif_parse_rodex_send) },
+ { HP_POP(mapif->rodex_send, HP_mapif_rodex_send) },
+ { HP_POP(mapif->parse_rodex_checkname, HP_mapif_parse_rodex_checkname) },
+ { HP_POP(mapif->rodex_checkname, HP_mapif_rodex_checkname) },
{ HP_POP(mapif->load_guild_storage, HP_mapif_load_guild_storage) },
{ HP_POP(mapif->save_guild_storage_ack, HP_mapif_save_guild_storage_ack) },
{ HP_POP(mapif->parse_LoadGuildStorage, HP_mapif_parse_LoadGuildStorage) },
{ HP_POP(mapif->parse_SaveGuildStorage, HP_mapif_parse_SaveGuildStorage) },
+ { HP_POP(mapif->account_storage_load, HP_mapif_account_storage_load) },
+ { HP_POP(mapif->pAccountStorageLoad, HP_mapif_pAccountStorageLoad) },
+ { HP_POP(mapif->pAccountStorageSave, HP_mapif_pAccountStorageSave) },
+ { HP_POP(mapif->sAccountStorageSaveAck, HP_mapif_sAccountStorageSaveAck) },
{ HP_POP(mapif->itembound_ack, HP_mapif_itembound_ack) },
- { HP_POP(mapif->parse_ItemBoundRetrieve_sub, HP_mapif_parse_ItemBoundRetrieve_sub) },
{ HP_POP(mapif->parse_ItemBoundRetrieve, HP_mapif_parse_ItemBoundRetrieve) },
{ HP_POP(mapif->parse_accinfo, HP_mapif_parse_accinfo) },
- { HP_POP(mapif->parse_accinfo2, HP_mapif_parse_accinfo2) },
{ HP_POP(mapif->broadcast, HP_mapif_broadcast) },
{ HP_POP(mapif->wis_message, HP_mapif_wis_message) },
{ HP_POP(mapif->wis_response, HP_mapif_wis_response) },
@@ -606,6 +674,8 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(mapif->parse_RegistryRequest, HP_mapif_parse_RegistryRequest) },
{ HP_POP(mapif->namechange_ack, HP_mapif_namechange_ack) },
{ HP_POP(mapif->parse_NameChangeRequest, HP_mapif_parse_NameChangeRequest) },
+ { HP_POP(mapif->parse_ClanMemberKick, HP_mapif_parse_ClanMemberKick) },
+ { HP_POP(mapif->parse_ClanMemberCount, HP_mapif_parse_ClanMemberCount) },
/* mapindex_interface */
{ HP_POP(mapindex->init, HP_mapindex_init) },
{ HP_POP(mapindex->final, HP_mapindex_final) },
@@ -633,17 +703,28 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(mutex->cond_broadcast, HP_mutex_cond_broadcast) },
/* nullpo_interface */
{ HP_POP(nullpo->assert_report, HP_nullpo_assert_report) },
+/* packets_interface */
+ { HP_POP(packets->init, HP_packets_init) },
+ { HP_POP(packets->final, HP_packets_final) },
+ { HP_POP(packets->addLens, HP_packets_addLens) },
+ { HP_POP(packets->addLen, HP_packets_addLen) },
/* pincode_interface */
{ HP_POP(pincode->handle, HP_pincode_handle) },
{ HP_POP(pincode->decrypt, HP_pincode_decrypt) },
{ HP_POP(pincode->error, HP_pincode_error) },
{ HP_POP(pincode->update, HP_pincode_update) },
- { HP_POP(pincode->sendstate, HP_pincode_sendstate) },
+ { HP_POP(pincode->makestate, HP_pincode_makestate) },
+ { HP_POP(pincode->editstate, HP_pincode_editstate) },
+ { HP_POP(pincode->loginstate, HP_pincode_loginstate) },
+ { HP_POP(pincode->loginstate2, HP_pincode_loginstate2) },
{ HP_POP(pincode->setnew, HP_pincode_setnew) },
{ HP_POP(pincode->change, HP_pincode_change) },
+ { HP_POP(pincode->isBlacklisted, HP_pincode_isBlacklisted) },
{ HP_POP(pincode->compare, HP_pincode_compare) },
{ HP_POP(pincode->check, HP_pincode_check) },
{ HP_POP(pincode->config_read, HP_pincode_config_read) },
+ { HP_POP(pincode->init, HP_pincode_init) },
+ { HP_POP(pincode->final, HP_pincode_final) },
/* rnd_interface */
{ HP_POP(rnd->init, HP_rnd_init) },
{ HP_POP(rnd->final, HP_rnd_final) },
@@ -668,8 +749,10 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(sockt->realloc_fifo, HP_sockt_realloc_fifo) },
{ HP_POP(sockt->realloc_writefifo, HP_sockt_realloc_writefifo) },
{ HP_POP(sockt->wfifoset, HP_sockt_wfifoset) },
+ { HP_POP(sockt->wfifohead, HP_sockt_wfifohead) },
{ HP_POP(sockt->rfifoskip, HP_sockt_rfifoskip) },
{ HP_POP(sockt->close, HP_sockt_close) },
+ { HP_POP(sockt->validateWfifo, HP_sockt_validateWfifo) },
{ HP_POP(sockt->session_is_valid, HP_sockt_session_is_valid) },
{ HP_POP(sockt->session_is_active, HP_sockt_session_is_active) },
{ HP_POP(sockt->flush, HP_sockt_flush) },
@@ -802,4 +885,4 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(timer->final, HP_timer_final) },
};
-int HookingPointsLenMax = 42;
+int HookingPointsLenMax = 43;
diff --git a/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc
index e2108c8f8..e177462e9 100644
--- a/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc
+++ b/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2017 Hercules Dev Team
+ * Copyright (C) 2013-2019 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -28,14 +28,14 @@
/* HCache_interface */
void HP_HCache_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_HCache_init_pre ) {
+ if (HPMHooks.count.HP_HCache_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_HCache_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_HCache_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_HCache_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -43,9 +43,9 @@ void HP_HCache_init(void) {
{
HPMHooks.source.HCache.init();
}
- if( HPMHooks.count.HP_HCache_init_post ) {
+ if (HPMHooks.count.HP_HCache_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_HCache_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_HCache_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_HCache_init_post[hIndex].func;
postHookFunc();
}
@@ -55,14 +55,14 @@ void HP_HCache_init(void) {
bool HP_HCache_check(const char *file) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_HCache_check_pre ) {
+ if (HPMHooks.count.HP_HCache_check_pre > 0) {
bool (*preHookFunc) (const char **file);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_HCache_check_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_HCache_check_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_HCache_check_pre[hIndex].func;
retVal___ = preHookFunc(&file);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -70,9 +70,9 @@ bool HP_HCache_check(const char *file) {
{
retVal___ = HPMHooks.source.HCache.check(file);
}
- if( HPMHooks.count.HP_HCache_check_post ) {
+ if (HPMHooks.count.HP_HCache_check_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *file);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_HCache_check_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_HCache_check_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_HCache_check_post[hIndex].func;
retVal___ = postHookFunc(retVal___, file);
}
@@ -82,14 +82,14 @@ bool HP_HCache_check(const char *file) {
FILE* HP_HCache_open(const char *file, const char *opt) {
int hIndex = 0;
FILE* retVal___ = NULL;
- if( HPMHooks.count.HP_HCache_open_pre ) {
+ if (HPMHooks.count.HP_HCache_open_pre > 0) {
FILE* (*preHookFunc) (const char **file, const char **opt);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_HCache_open_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_HCache_open_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_HCache_open_pre[hIndex].func;
retVal___ = preHookFunc(&file, &opt);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -97,9 +97,9 @@ FILE* HP_HCache_open(const char *file, const char *opt) {
{
retVal___ = HPMHooks.source.HCache.open(file, opt);
}
- if( HPMHooks.count.HP_HCache_open_post ) {
+ if (HPMHooks.count.HP_HCache_open_post > 0) {
FILE* (*postHookFunc) (FILE* retVal___, const char *file, const char *opt);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_HCache_open_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_HCache_open_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_HCache_open_post[hIndex].func;
retVal___ = postHookFunc(retVal___, file, opt);
}
@@ -110,14 +110,14 @@ FILE* HP_HCache_open(const char *file, const char *opt) {
int HP_chr_waiting_disconnect(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_waiting_disconnect_pre ) {
+ if (HPMHooks.count.HP_chr_waiting_disconnect_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_waiting_disconnect_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_waiting_disconnect_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_waiting_disconnect_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -125,9 +125,9 @@ int HP_chr_waiting_disconnect(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.chr.waiting_disconnect(tid, tick, id, data);
}
- if( HPMHooks.count.HP_chr_waiting_disconnect_post ) {
+ if (HPMHooks.count.HP_chr_waiting_disconnect_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_waiting_disconnect_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_waiting_disconnect_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_waiting_disconnect_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -137,14 +137,14 @@ int HP_chr_waiting_disconnect(int tid, int64 tick, int id, intptr_t data) {
int HP_chr_delete_char_sql(int char_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_delete_char_sql_pre ) {
+ if (HPMHooks.count.HP_chr_delete_char_sql_pre > 0) {
int (*preHookFunc) (int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete_char_sql_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete_char_sql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_delete_char_sql_pre[hIndex].func;
retVal___ = preHookFunc(&char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -152,9 +152,9 @@ int HP_chr_delete_char_sql(int char_id) {
{
retVal___ = HPMHooks.source.chr.delete_char_sql(char_id);
}
- if( HPMHooks.count.HP_chr_delete_char_sql_post ) {
+ if (HPMHooks.count.HP_chr_delete_char_sql_post > 0) {
int (*postHookFunc) (int retVal___, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete_char_sql_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete_char_sql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_delete_char_sql_post[hIndex].func;
retVal___ = postHookFunc(retVal___, char_id);
}
@@ -164,16 +164,16 @@ int HP_chr_delete_char_sql(int char_id) {
struct DBData HP_chr_create_online_char_data(union DBKey key, va_list args) {
int hIndex = 0;
struct DBData retVal___ = { 0 };
- if( HPMHooks.count.HP_chr_create_online_char_data_pre ) {
+ if (HPMHooks.count.HP_chr_create_online_char_data_pre > 0) {
struct DBData (*preHookFunc) (union DBKey *key, va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_create_online_char_data_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_create_online_char_data_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_chr_create_online_char_data_pre[hIndex].func;
retVal___ = preHookFunc(&key, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -183,9 +183,9 @@ struct DBData HP_chr_create_online_char_data(union DBKey key, va_list args) {
retVal___ = HPMHooks.source.chr.create_online_char_data(key, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_chr_create_online_char_data_post ) {
+ if (HPMHooks.count.HP_chr_create_online_char_data_post > 0) {
struct DBData (*postHookFunc) (struct DBData retVal___, union DBKey key, va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_create_online_char_data_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_create_online_char_data_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_chr_create_online_char_data_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, args___copy);
@@ -196,14 +196,14 @@ struct DBData HP_chr_create_online_char_data(union DBKey key, va_list args) {
}
void HP_chr_set_account_online(int account_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_set_account_online_pre ) {
+ if (HPMHooks.count.HP_chr_set_account_online_pre > 0) {
void (*preHookFunc) (int *account_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_set_account_online_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_set_account_online_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_set_account_online_pre[hIndex].func;
preHookFunc(&account_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -211,9 +211,9 @@ void HP_chr_set_account_online(int account_id) {
{
HPMHooks.source.chr.set_account_online(account_id);
}
- if( HPMHooks.count.HP_chr_set_account_online_post ) {
+ if (HPMHooks.count.HP_chr_set_account_online_post > 0) {
void (*postHookFunc) (int account_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_set_account_online_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_set_account_online_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_set_account_online_post[hIndex].func;
postHookFunc(account_id);
}
@@ -222,14 +222,14 @@ void HP_chr_set_account_online(int account_id) {
}
void HP_chr_set_account_offline(int account_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_set_account_offline_pre ) {
+ if (HPMHooks.count.HP_chr_set_account_offline_pre > 0) {
void (*preHookFunc) (int *account_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_set_account_offline_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_set_account_offline_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_set_account_offline_pre[hIndex].func;
preHookFunc(&account_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -237,9 +237,9 @@ void HP_chr_set_account_offline(int account_id) {
{
HPMHooks.source.chr.set_account_offline(account_id);
}
- if( HPMHooks.count.HP_chr_set_account_offline_post ) {
+ if (HPMHooks.count.HP_chr_set_account_offline_post > 0) {
void (*postHookFunc) (int account_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_set_account_offline_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_set_account_offline_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_set_account_offline_post[hIndex].func;
postHookFunc(account_id);
}
@@ -248,14 +248,14 @@ void HP_chr_set_account_offline(int account_id) {
}
void HP_chr_set_char_charselect(int account_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_set_char_charselect_pre ) {
+ if (HPMHooks.count.HP_chr_set_char_charselect_pre > 0) {
void (*preHookFunc) (int *account_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_set_char_charselect_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_set_char_charselect_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_set_char_charselect_pre[hIndex].func;
preHookFunc(&account_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -263,9 +263,9 @@ void HP_chr_set_char_charselect(int account_id) {
{
HPMHooks.source.chr.set_char_charselect(account_id);
}
- if( HPMHooks.count.HP_chr_set_char_charselect_post ) {
+ if (HPMHooks.count.HP_chr_set_char_charselect_post > 0) {
void (*postHookFunc) (int account_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_set_char_charselect_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_set_char_charselect_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_set_char_charselect_post[hIndex].func;
postHookFunc(account_id);
}
@@ -274,14 +274,14 @@ void HP_chr_set_char_charselect(int account_id) {
}
void HP_chr_set_char_online(int map_id, int char_id, int account_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_set_char_online_pre ) {
+ if (HPMHooks.count.HP_chr_set_char_online_pre > 0) {
void (*preHookFunc) (int *map_id, int *char_id, int *account_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_set_char_online_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_set_char_online_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_set_char_online_pre[hIndex].func;
preHookFunc(&map_id, &char_id, &account_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -289,9 +289,9 @@ void HP_chr_set_char_online(int map_id, int char_id, int account_id) {
{
HPMHooks.source.chr.set_char_online(map_id, char_id, account_id);
}
- if( HPMHooks.count.HP_chr_set_char_online_post ) {
+ if (HPMHooks.count.HP_chr_set_char_online_post > 0) {
void (*postHookFunc) (int map_id, int char_id, int account_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_set_char_online_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_set_char_online_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_set_char_online_post[hIndex].func;
postHookFunc(map_id, char_id, account_id);
}
@@ -300,14 +300,14 @@ void HP_chr_set_char_online(int map_id, int char_id, int account_id) {
}
void HP_chr_set_char_offline(int char_id, int account_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_set_char_offline_pre ) {
+ if (HPMHooks.count.HP_chr_set_char_offline_pre > 0) {
void (*preHookFunc) (int *char_id, int *account_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_set_char_offline_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_set_char_offline_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_set_char_offline_pre[hIndex].func;
preHookFunc(&char_id, &account_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -315,9 +315,9 @@ void HP_chr_set_char_offline(int char_id, int account_id) {
{
HPMHooks.source.chr.set_char_offline(char_id, account_id);
}
- if( HPMHooks.count.HP_chr_set_char_offline_post ) {
+ if (HPMHooks.count.HP_chr_set_char_offline_post > 0) {
void (*postHookFunc) (int char_id, int account_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_set_char_offline_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_set_char_offline_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_set_char_offline_post[hIndex].func;
postHookFunc(char_id, account_id);
}
@@ -327,16 +327,16 @@ void HP_chr_set_char_offline(int char_id, int account_id) {
int HP_chr_db_setoffline(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_db_setoffline_pre ) {
+ if (HPMHooks.count.HP_chr_db_setoffline_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_db_setoffline_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_db_setoffline_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_chr_db_setoffline_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -346,9 +346,9 @@ int HP_chr_db_setoffline(union DBKey key, struct DBData *data, va_list ap) {
retVal___ = HPMHooks.source.chr.db_setoffline(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_chr_db_setoffline_post ) {
+ if (HPMHooks.count.HP_chr_db_setoffline_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_db_setoffline_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_db_setoffline_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_chr_db_setoffline_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -360,16 +360,16 @@ int HP_chr_db_setoffline(union DBKey key, struct DBData *data, va_list ap) {
int HP_chr_db_kickoffline(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_db_kickoffline_pre ) {
+ if (HPMHooks.count.HP_chr_db_kickoffline_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_db_kickoffline_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_db_kickoffline_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_chr_db_kickoffline_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -379,9 +379,9 @@ int HP_chr_db_kickoffline(union DBKey key, struct DBData *data, va_list ap) {
retVal___ = HPMHooks.source.chr.db_kickoffline(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_chr_db_kickoffline_post ) {
+ if (HPMHooks.count.HP_chr_db_kickoffline_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_db_kickoffline_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_db_kickoffline_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_chr_db_kickoffline_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -392,14 +392,14 @@ int HP_chr_db_kickoffline(union DBKey key, struct DBData *data, va_list ap) {
}
void HP_chr_set_login_all_offline(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_set_login_all_offline_pre ) {
+ if (HPMHooks.count.HP_chr_set_login_all_offline_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_set_login_all_offline_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_set_login_all_offline_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_set_login_all_offline_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -407,9 +407,9 @@ void HP_chr_set_login_all_offline(void) {
{
HPMHooks.source.chr.set_login_all_offline();
}
- if( HPMHooks.count.HP_chr_set_login_all_offline_post ) {
+ if (HPMHooks.count.HP_chr_set_login_all_offline_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_set_login_all_offline_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_set_login_all_offline_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_set_login_all_offline_post[hIndex].func;
postHookFunc();
}
@@ -418,14 +418,14 @@ void HP_chr_set_login_all_offline(void) {
}
void HP_chr_set_all_offline(int id) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_set_all_offline_pre ) {
+ if (HPMHooks.count.HP_chr_set_all_offline_pre > 0) {
void (*preHookFunc) (int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_set_all_offline_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_set_all_offline_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_set_all_offline_pre[hIndex].func;
preHookFunc(&id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -433,9 +433,9 @@ void HP_chr_set_all_offline(int id) {
{
HPMHooks.source.chr.set_all_offline(id);
}
- if( HPMHooks.count.HP_chr_set_all_offline_post ) {
+ if (HPMHooks.count.HP_chr_set_all_offline_post > 0) {
void (*postHookFunc) (int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_set_all_offline_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_set_all_offline_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_set_all_offline_post[hIndex].func;
postHookFunc(id);
}
@@ -444,14 +444,14 @@ void HP_chr_set_all_offline(int id) {
}
void HP_chr_set_all_offline_sql(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_set_all_offline_sql_pre ) {
+ if (HPMHooks.count.HP_chr_set_all_offline_sql_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_set_all_offline_sql_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_set_all_offline_sql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_set_all_offline_sql_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -459,9 +459,9 @@ void HP_chr_set_all_offline_sql(void) {
{
HPMHooks.source.chr.set_all_offline_sql();
}
- if( HPMHooks.count.HP_chr_set_all_offline_sql_post ) {
+ if (HPMHooks.count.HP_chr_set_all_offline_sql_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_set_all_offline_sql_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_set_all_offline_sql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_set_all_offline_sql_post[hIndex].func;
postHookFunc();
}
@@ -471,16 +471,16 @@ void HP_chr_set_all_offline_sql(void) {
struct DBData HP_chr_create_charstatus(union DBKey key, va_list args) {
int hIndex = 0;
struct DBData retVal___ = { 0 };
- if( HPMHooks.count.HP_chr_create_charstatus_pre ) {
+ if (HPMHooks.count.HP_chr_create_charstatus_pre > 0) {
struct DBData (*preHookFunc) (union DBKey *key, va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_create_charstatus_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_create_charstatus_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_chr_create_charstatus_pre[hIndex].func;
retVal___ = preHookFunc(&key, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -490,9 +490,9 @@ struct DBData HP_chr_create_charstatus(union DBKey key, va_list args) {
retVal___ = HPMHooks.source.chr.create_charstatus(key, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_chr_create_charstatus_post ) {
+ if (HPMHooks.count.HP_chr_create_charstatus_post > 0) {
struct DBData (*postHookFunc) (struct DBData retVal___, union DBKey key, va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_create_charstatus_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_create_charstatus_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_chr_create_charstatus_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, args___copy);
@@ -504,14 +504,14 @@ struct DBData HP_chr_create_charstatus(union DBKey key, va_list args) {
int HP_chr_mmo_char_tosql(int char_id, struct mmo_charstatus *p) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_mmo_char_tosql_pre ) {
+ if (HPMHooks.count.HP_chr_mmo_char_tosql_pre > 0) {
int (*preHookFunc) (int *char_id, struct mmo_charstatus **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_char_tosql_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_char_tosql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_mmo_char_tosql_pre[hIndex].func;
retVal___ = preHookFunc(&char_id, &p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -519,38 +519,65 @@ int HP_chr_mmo_char_tosql(int char_id, struct mmo_charstatus *p) {
{
retVal___ = HPMHooks.source.chr.mmo_char_tosql(char_id, p);
}
- if( HPMHooks.count.HP_chr_mmo_char_tosql_post ) {
+ if (HPMHooks.count.HP_chr_mmo_char_tosql_post > 0) {
int (*postHookFunc) (int retVal___, int char_id, struct mmo_charstatus *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_char_tosql_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_char_tosql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_mmo_char_tosql_post[hIndex].func;
retVal___ = postHookFunc(retVal___, char_id, p);
}
}
return retVal___;
}
-int HP_chr_memitemdata_to_sql(const struct item items[], int max, int id, int tableswitch) {
+int HP_chr_getitemdata_from_sql(struct item *items, int max, int guid, enum inventory_table_type table) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_memitemdata_to_sql_pre ) {
- int (*preHookFunc) (const struct item *items[], int *max, int *id, int *tableswitch);
+ if (HPMHooks.count.HP_chr_getitemdata_from_sql_pre > 0) {
+ int (*preHookFunc) (struct item **items, int *max, int *guid, enum inventory_table_type *table);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_memitemdata_to_sql_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_getitemdata_from_sql_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_chr_getitemdata_from_sql_pre[hIndex].func;
+ retVal___ = preHookFunc(&items, &max, &guid, &table);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.chr.getitemdata_from_sql(items, max, guid, table);
+ }
+ if (HPMHooks.count.HP_chr_getitemdata_from_sql_post > 0) {
+ int (*postHookFunc) (int retVal___, struct item *items, int max, int guid, enum inventory_table_type table);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_getitemdata_from_sql_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_chr_getitemdata_from_sql_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, items, max, guid, table);
+ }
+ }
+ return retVal___;
+}
+int HP_chr_memitemdata_to_sql(const struct item items[], int id, enum inventory_table_type table) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_chr_memitemdata_to_sql_pre > 0) {
+ int (*preHookFunc) (const struct item *items[], int *id, enum inventory_table_type *table);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_memitemdata_to_sql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_memitemdata_to_sql_pre[hIndex].func;
- retVal___ = preHookFunc(&items, &max, &id, &tableswitch);
+ retVal___ = preHookFunc(&items, &id, &table);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
}
{
- retVal___ = HPMHooks.source.chr.memitemdata_to_sql(items, max, id, tableswitch);
+ retVal___ = HPMHooks.source.chr.memitemdata_to_sql(items, id, table);
}
- if( HPMHooks.count.HP_chr_memitemdata_to_sql_post ) {
- int (*postHookFunc) (int retVal___, const struct item items[], int max, int id, int tableswitch);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_memitemdata_to_sql_post; hIndex++ ) {
+ if (HPMHooks.count.HP_chr_memitemdata_to_sql_post > 0) {
+ int (*postHookFunc) (int retVal___, const struct item items[], int id, enum inventory_table_type table);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_memitemdata_to_sql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_memitemdata_to_sql_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, items, max, id, tableswitch);
+ retVal___ = postHookFunc(retVal___, items, id, table);
}
}
return retVal___;
@@ -558,14 +585,14 @@ int HP_chr_memitemdata_to_sql(const struct item items[], int max, int id, int ta
int HP_chr_mmo_gender(const struct char_session_data *sd, const struct mmo_charstatus *p, char sex) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_mmo_gender_pre ) {
+ if (HPMHooks.count.HP_chr_mmo_gender_pre > 0) {
int (*preHookFunc) (const struct char_session_data **sd, const struct mmo_charstatus **p, char *sex);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_gender_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_gender_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_mmo_gender_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &p, &sex);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -573,38 +600,38 @@ int HP_chr_mmo_gender(const struct char_session_data *sd, const struct mmo_chars
{
retVal___ = HPMHooks.source.chr.mmo_gender(sd, p, sex);
}
- if( HPMHooks.count.HP_chr_mmo_gender_post ) {
+ if (HPMHooks.count.HP_chr_mmo_gender_post > 0) {
int (*postHookFunc) (int retVal___, const struct char_session_data *sd, const struct mmo_charstatus *p, char sex);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_gender_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_gender_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_mmo_gender_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, p, sex);
}
}
return retVal___;
}
-int HP_chr_mmo_chars_fromsql(struct char_session_data *sd, uint8 *buf) {
+int HP_chr_mmo_chars_fromsql(struct char_session_data *sd, uint8 *buf, int *count) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_mmo_chars_fromsql_pre ) {
- int (*preHookFunc) (struct char_session_data **sd, uint8 **buf);
+ if (HPMHooks.count.HP_chr_mmo_chars_fromsql_pre > 0) {
+ int (*preHookFunc) (struct char_session_data **sd, uint8 **buf, int **count);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_chars_fromsql_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_chars_fromsql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_mmo_chars_fromsql_pre[hIndex].func;
- retVal___ = preHookFunc(&sd, &buf);
+ retVal___ = preHookFunc(&sd, &buf, &count);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
}
{
- retVal___ = HPMHooks.source.chr.mmo_chars_fromsql(sd, buf);
+ retVal___ = HPMHooks.source.chr.mmo_chars_fromsql(sd, buf, count);
}
- if( HPMHooks.count.HP_chr_mmo_chars_fromsql_post ) {
- int (*postHookFunc) (int retVal___, struct char_session_data *sd, uint8 *buf);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_chars_fromsql_post; hIndex++ ) {
+ if (HPMHooks.count.HP_chr_mmo_chars_fromsql_post > 0) {
+ int (*postHookFunc) (int retVal___, struct char_session_data *sd, uint8 *buf, int *count);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_chars_fromsql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_mmo_chars_fromsql_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, sd, buf);
+ retVal___ = postHookFunc(retVal___, sd, buf, count);
}
}
return retVal___;
@@ -612,14 +639,14 @@ int HP_chr_mmo_chars_fromsql(struct char_session_data *sd, uint8 *buf) {
int HP_chr_mmo_char_fromsql(int char_id, struct mmo_charstatus *p, bool load_everything) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_mmo_char_fromsql_pre ) {
+ if (HPMHooks.count.HP_chr_mmo_char_fromsql_pre > 0) {
int (*preHookFunc) (int *char_id, struct mmo_charstatus **p, bool *load_everything);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_char_fromsql_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_char_fromsql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_mmo_char_fromsql_pre[hIndex].func;
retVal___ = preHookFunc(&char_id, &p, &load_everything);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -627,9 +654,9 @@ int HP_chr_mmo_char_fromsql(int char_id, struct mmo_charstatus *p, bool load_eve
{
retVal___ = HPMHooks.source.chr.mmo_char_fromsql(char_id, p, load_everything);
}
- if( HPMHooks.count.HP_chr_mmo_char_fromsql_post ) {
+ if (HPMHooks.count.HP_chr_mmo_char_fromsql_post > 0) {
int (*postHookFunc) (int retVal___, int char_id, struct mmo_charstatus *p, bool load_everything);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_char_fromsql_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_char_fromsql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_mmo_char_fromsql_post[hIndex].func;
retVal___ = postHookFunc(retVal___, char_id, p, load_everything);
}
@@ -639,14 +666,14 @@ int HP_chr_mmo_char_fromsql(int char_id, struct mmo_charstatus *p, bool load_eve
int HP_chr_mmo_char_sql_init(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_mmo_char_sql_init_pre ) {
+ if (HPMHooks.count.HP_chr_mmo_char_sql_init_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_char_sql_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_char_sql_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_mmo_char_sql_init_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -654,9 +681,9 @@ int HP_chr_mmo_char_sql_init(void) {
{
retVal___ = HPMHooks.source.chr.mmo_char_sql_init();
}
- if( HPMHooks.count.HP_chr_mmo_char_sql_init_post ) {
+ if (HPMHooks.count.HP_chr_mmo_char_sql_init_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_char_sql_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_char_sql_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_mmo_char_sql_init_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -666,14 +693,14 @@ int HP_chr_mmo_char_sql_init(void) {
bool HP_chr_char_slotchange(struct char_session_data *sd, int fd, unsigned short from, unsigned short to) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chr_char_slotchange_pre ) {
+ if (HPMHooks.count.HP_chr_char_slotchange_pre > 0) {
bool (*preHookFunc) (struct char_session_data **sd, int *fd, unsigned short *from, unsigned short *to);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_char_slotchange_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_char_slotchange_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_char_slotchange_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &fd, &from, &to);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -681,9 +708,9 @@ bool HP_chr_char_slotchange(struct char_session_data *sd, int fd, unsigned short
{
retVal___ = HPMHooks.source.chr.char_slotchange(sd, fd, from, to);
}
- if( HPMHooks.count.HP_chr_char_slotchange_post ) {
+ if (HPMHooks.count.HP_chr_char_slotchange_post > 0) {
bool (*postHookFunc) (bool retVal___, struct char_session_data *sd, int fd, unsigned short from, unsigned short to);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_char_slotchange_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_char_slotchange_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_char_slotchange_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, fd, from, to);
}
@@ -693,14 +720,14 @@ bool HP_chr_char_slotchange(struct char_session_data *sd, int fd, unsigned short
int HP_chr_rename_char_sql(struct char_session_data *sd, int char_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_rename_char_sql_pre ) {
+ if (HPMHooks.count.HP_chr_rename_char_sql_pre > 0) {
int (*preHookFunc) (struct char_session_data **sd, int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_rename_char_sql_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_rename_char_sql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_rename_char_sql_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -708,26 +735,53 @@ int HP_chr_rename_char_sql(struct char_session_data *sd, int char_id) {
{
retVal___ = HPMHooks.source.chr.rename_char_sql(sd, char_id);
}
- if( HPMHooks.count.HP_chr_rename_char_sql_post ) {
+ if (HPMHooks.count.HP_chr_rename_char_sql_post > 0) {
int (*postHookFunc) (int retVal___, struct char_session_data *sd, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_rename_char_sql_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_rename_char_sql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_rename_char_sql_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, char_id);
}
}
return retVal___;
}
-int HP_chr_check_char_name(char *name, char *esc_name) {
+bool HP_chr_name_exists(const char *name, const char *esc_name) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_chr_name_exists_pre > 0) {
+ bool (*preHookFunc) (const char **name, const char **esc_name);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_name_exists_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_chr_name_exists_pre[hIndex].func;
+ retVal___ = preHookFunc(&name, &esc_name);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.chr.name_exists(name, esc_name);
+ }
+ if (HPMHooks.count.HP_chr_name_exists_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *name, const char *esc_name);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_name_exists_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_chr_name_exists_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, name, esc_name);
+ }
+ }
+ return retVal___;
+}
+int HP_chr_check_char_name(const char *name, const char *esc_name) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_check_char_name_pre ) {
- int (*preHookFunc) (char **name, char **esc_name);
+ if (HPMHooks.count.HP_chr_check_char_name_pre > 0) {
+ int (*preHookFunc) (const char **name, const char **esc_name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_check_char_name_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_check_char_name_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_check_char_name_pre[hIndex].func;
retVal___ = preHookFunc(&name, &esc_name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -735,38 +789,38 @@ int HP_chr_check_char_name(char *name, char *esc_name) {
{
retVal___ = HPMHooks.source.chr.check_char_name(name, esc_name);
}
- if( HPMHooks.count.HP_chr_check_char_name_post ) {
- int (*postHookFunc) (int retVal___, char *name, char *esc_name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_check_char_name_post; hIndex++ ) {
+ if (HPMHooks.count.HP_chr_check_char_name_post > 0) {
+ int (*postHookFunc) (int retVal___, const char *name, const char *esc_name);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_check_char_name_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_check_char_name_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name, esc_name);
}
}
return retVal___;
}
-int HP_chr_make_new_char_sql(struct char_session_data *sd, const char *name_, int str, int agi, int vit, int int_, int dex, int luk, int slot, int hair_color, int hair_style, short starting_job) {
+int HP_chr_make_new_char_sql(struct char_session_data *sd, const char *name_, int str, int agi, int vit, int int_, int dex, int luk, int slot, int hair_color, int hair_style, short starting_job, uint8 sex) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_make_new_char_sql_pre ) {
- int (*preHookFunc) (struct char_session_data **sd, const char **name_, int *str, int *agi, int *vit, int *int_, int *dex, int *luk, int *slot, int *hair_color, int *hair_style, short *starting_job);
+ if (HPMHooks.count.HP_chr_make_new_char_sql_pre > 0) {
+ int (*preHookFunc) (struct char_session_data **sd, const char **name_, int *str, int *agi, int *vit, int *int_, int *dex, int *luk, int *slot, int *hair_color, int *hair_style, short *starting_job, uint8 *sex);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_make_new_char_sql_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_make_new_char_sql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_make_new_char_sql_pre[hIndex].func;
- retVal___ = preHookFunc(&sd, &name_, &str, &agi, &vit, &int_, &dex, &luk, &slot, &hair_color, &hair_style, &starting_job);
+ retVal___ = preHookFunc(&sd, &name_, &str, &agi, &vit, &int_, &dex, &luk, &slot, &hair_color, &hair_style, &starting_job, &sex);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
}
{
- retVal___ = HPMHooks.source.chr.make_new_char_sql(sd, name_, str, agi, vit, int_, dex, luk, slot, hair_color, hair_style, starting_job);
+ retVal___ = HPMHooks.source.chr.make_new_char_sql(sd, name_, str, agi, vit, int_, dex, luk, slot, hair_color, hair_style, starting_job, sex);
}
- if( HPMHooks.count.HP_chr_make_new_char_sql_post ) {
- int (*postHookFunc) (int retVal___, struct char_session_data *sd, const char *name_, int str, int agi, int vit, int int_, int dex, int luk, int slot, int hair_color, int hair_style, short starting_job);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_make_new_char_sql_post; hIndex++ ) {
+ if (HPMHooks.count.HP_chr_make_new_char_sql_post > 0) {
+ int (*postHookFunc) (int retVal___, struct char_session_data *sd, const char *name_, int str, int agi, int vit, int int_, int dex, int luk, int slot, int hair_color, int hair_style, short starting_job, uint8 sex);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_make_new_char_sql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_make_new_char_sql_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, sd, name_, str, agi, vit, int_, dex, luk, slot, hair_color, hair_style, starting_job);
+ retVal___ = postHookFunc(retVal___, sd, name_, str, agi, vit, int_, dex, luk, slot, hair_color, hair_style, starting_job, sex);
}
}
return retVal___;
@@ -774,14 +828,14 @@ int HP_chr_make_new_char_sql(struct char_session_data *sd, const char *name_, in
int HP_chr_divorce_char_sql(int partner_id1, int partner_id2) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_divorce_char_sql_pre ) {
+ if (HPMHooks.count.HP_chr_divorce_char_sql_pre > 0) {
int (*preHookFunc) (int *partner_id1, int *partner_id2);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_divorce_char_sql_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_divorce_char_sql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_divorce_char_sql_pre[hIndex].func;
retVal___ = preHookFunc(&partner_id1, &partner_id2);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -789,9 +843,9 @@ int HP_chr_divorce_char_sql(int partner_id1, int partner_id2) {
{
retVal___ = HPMHooks.source.chr.divorce_char_sql(partner_id1, partner_id2);
}
- if( HPMHooks.count.HP_chr_divorce_char_sql_post ) {
+ if (HPMHooks.count.HP_chr_divorce_char_sql_post > 0) {
int (*postHookFunc) (int retVal___, int partner_id1, int partner_id2);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_divorce_char_sql_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_divorce_char_sql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_divorce_char_sql_post[hIndex].func;
retVal___ = postHookFunc(retVal___, partner_id1, partner_id2);
}
@@ -801,14 +855,14 @@ int HP_chr_divorce_char_sql(int partner_id1, int partner_id2) {
int HP_chr_count_users(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_count_users_pre ) {
+ if (HPMHooks.count.HP_chr_count_users_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_count_users_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_count_users_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_count_users_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -816,9 +870,9 @@ int HP_chr_count_users(void) {
{
retVal___ = HPMHooks.source.chr.count_users();
}
- if( HPMHooks.count.HP_chr_count_users_post ) {
+ if (HPMHooks.count.HP_chr_count_users_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_count_users_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_count_users_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_count_users_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -828,14 +882,14 @@ int HP_chr_count_users(void) {
int HP_chr_mmo_char_tobuf(uint8 *buffer, struct mmo_charstatus *p) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_mmo_char_tobuf_pre ) {
+ if (HPMHooks.count.HP_chr_mmo_char_tobuf_pre > 0) {
int (*preHookFunc) (uint8 **buffer, struct mmo_charstatus **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_char_tobuf_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_char_tobuf_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_mmo_char_tobuf_pre[hIndex].func;
retVal___ = preHookFunc(&buffer, &p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -843,36 +897,36 @@ int HP_chr_mmo_char_tobuf(uint8 *buffer, struct mmo_charstatus *p) {
{
retVal___ = HPMHooks.source.chr.mmo_char_tobuf(buffer, p);
}
- if( HPMHooks.count.HP_chr_mmo_char_tobuf_post ) {
+ if (HPMHooks.count.HP_chr_mmo_char_tobuf_post > 0) {
int (*postHookFunc) (int retVal___, uint8 *buffer, struct mmo_charstatus *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_char_tobuf_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_char_tobuf_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_mmo_char_tobuf_post[hIndex].func;
retVal___ = postHookFunc(retVal___, buffer, p);
}
}
return retVal___;
}
-void HP_chr_mmo_char_send099d(int fd, struct char_session_data *sd) {
+void HP_chr_send_HC_ACK_CHARINFO_PER_PAGE(int fd, struct char_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_mmo_char_send099d_pre ) {
+ if (HPMHooks.count.HP_chr_send_HC_ACK_CHARINFO_PER_PAGE_pre > 0) {
void (*preHookFunc) (int *fd, struct char_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_char_send099d_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_chr_mmo_char_send099d_pre[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_HC_ACK_CHARINFO_PER_PAGE_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_chr_send_HC_ACK_CHARINFO_PER_PAGE_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
}
{
- HPMHooks.source.chr.mmo_char_send099d(fd, sd);
+ HPMHooks.source.chr.send_HC_ACK_CHARINFO_PER_PAGE(fd, sd);
}
- if( HPMHooks.count.HP_chr_mmo_char_send099d_post ) {
+ if (HPMHooks.count.HP_chr_send_HC_ACK_CHARINFO_PER_PAGE_post > 0) {
void (*postHookFunc) (int fd, struct char_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_char_send099d_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_chr_mmo_char_send099d_post[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_HC_ACK_CHARINFO_PER_PAGE_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_chr_send_HC_ACK_CHARINFO_PER_PAGE_post[hIndex].func;
postHookFunc(fd, sd);
}
}
@@ -880,14 +934,14 @@ void HP_chr_mmo_char_send099d(int fd, struct char_session_data *sd) {
}
void HP_chr_mmo_char_send_ban_list(int fd, struct char_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_mmo_char_send_ban_list_pre ) {
+ if (HPMHooks.count.HP_chr_mmo_char_send_ban_list_pre > 0) {
void (*preHookFunc) (int *fd, struct char_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_char_send_ban_list_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_char_send_ban_list_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_mmo_char_send_ban_list_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -895,9 +949,9 @@ void HP_chr_mmo_char_send_ban_list(int fd, struct char_session_data *sd) {
{
HPMHooks.source.chr.mmo_char_send_ban_list(fd, sd);
}
- if( HPMHooks.count.HP_chr_mmo_char_send_ban_list_post ) {
+ if (HPMHooks.count.HP_chr_mmo_char_send_ban_list_post > 0) {
void (*postHookFunc) (int fd, struct char_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_char_send_ban_list_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_char_send_ban_list_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_mmo_char_send_ban_list_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -906,14 +960,14 @@ void HP_chr_mmo_char_send_ban_list(int fd, struct char_session_data *sd) {
}
void HP_chr_mmo_char_send_slots_info(int fd, struct char_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_mmo_char_send_slots_info_pre ) {
+ if (HPMHooks.count.HP_chr_mmo_char_send_slots_info_pre > 0) {
void (*preHookFunc) (int *fd, struct char_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_char_send_slots_info_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_char_send_slots_info_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_mmo_char_send_slots_info_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -921,9 +975,9 @@ void HP_chr_mmo_char_send_slots_info(int fd, struct char_session_data *sd) {
{
HPMHooks.source.chr.mmo_char_send_slots_info(fd, sd);
}
- if( HPMHooks.count.HP_chr_mmo_char_send_slots_info_post ) {
+ if (HPMHooks.count.HP_chr_mmo_char_send_slots_info_post > 0) {
void (*postHookFunc) (int fd, struct char_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_char_send_slots_info_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_char_send_slots_info_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_mmo_char_send_slots_info_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -933,14 +987,14 @@ void HP_chr_mmo_char_send_slots_info(int fd, struct char_session_data *sd) {
int HP_chr_mmo_char_send_characters(int fd, struct char_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_mmo_char_send_characters_pre ) {
+ if (HPMHooks.count.HP_chr_mmo_char_send_characters_pre > 0) {
int (*preHookFunc) (int *fd, struct char_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_char_send_characters_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_char_send_characters_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_mmo_char_send_characters_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -948,9 +1002,9 @@ int HP_chr_mmo_char_send_characters(int fd, struct char_session_data *sd) {
{
retVal___ = HPMHooks.source.chr.mmo_char_send_characters(fd, sd);
}
- if( HPMHooks.count.HP_chr_mmo_char_send_characters_post ) {
+ if (HPMHooks.count.HP_chr_mmo_char_send_characters_post > 0) {
int (*postHookFunc) (int retVal___, int fd, struct char_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_char_send_characters_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_mmo_char_send_characters_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_mmo_char_send_characters_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, sd);
}
@@ -960,14 +1014,14 @@ int HP_chr_mmo_char_send_characters(int fd, struct char_session_data *sd) {
int HP_chr_char_married(int pl1, int pl2) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_char_married_pre ) {
+ if (HPMHooks.count.HP_chr_char_married_pre > 0) {
int (*preHookFunc) (int *pl1, int *pl2);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_char_married_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_char_married_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_char_married_pre[hIndex].func;
retVal___ = preHookFunc(&pl1, &pl2);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -975,9 +1029,9 @@ int HP_chr_char_married(int pl1, int pl2) {
{
retVal___ = HPMHooks.source.chr.char_married(pl1, pl2);
}
- if( HPMHooks.count.HP_chr_char_married_post ) {
+ if (HPMHooks.count.HP_chr_char_married_post > 0) {
int (*postHookFunc) (int retVal___, int pl1, int pl2);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_char_married_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_char_married_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_char_married_post[hIndex].func;
retVal___ = postHookFunc(retVal___, pl1, pl2);
}
@@ -987,14 +1041,14 @@ int HP_chr_char_married(int pl1, int pl2) {
int HP_chr_char_child(int parent_id, int child_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_char_child_pre ) {
+ if (HPMHooks.count.HP_chr_char_child_pre > 0) {
int (*preHookFunc) (int *parent_id, int *child_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_char_child_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_char_child_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_char_child_pre[hIndex].func;
retVal___ = preHookFunc(&parent_id, &child_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1002,9 +1056,9 @@ int HP_chr_char_child(int parent_id, int child_id) {
{
retVal___ = HPMHooks.source.chr.char_child(parent_id, child_id);
}
- if( HPMHooks.count.HP_chr_char_child_post ) {
+ if (HPMHooks.count.HP_chr_char_child_post > 0) {
int (*postHookFunc) (int retVal___, int parent_id, int child_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_char_child_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_char_child_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_char_child_post[hIndex].func;
retVal___ = postHookFunc(retVal___, parent_id, child_id);
}
@@ -1014,14 +1068,14 @@ int HP_chr_char_child(int parent_id, int child_id) {
int HP_chr_char_family(int cid1, int cid2, int cid3) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_char_family_pre ) {
+ if (HPMHooks.count.HP_chr_char_family_pre > 0) {
int (*preHookFunc) (int *cid1, int *cid2, int *cid3);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_char_family_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_char_family_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_char_family_pre[hIndex].func;
retVal___ = preHookFunc(&cid1, &cid2, &cid3);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1029,9 +1083,9 @@ int HP_chr_char_family(int cid1, int cid2, int cid3) {
{
retVal___ = HPMHooks.source.chr.char_family(cid1, cid2, cid3);
}
- if( HPMHooks.count.HP_chr_char_family_post ) {
+ if (HPMHooks.count.HP_chr_char_family_post > 0) {
int (*postHookFunc) (int retVal___, int cid1, int cid2, int cid3);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_char_family_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_char_family_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_char_family_post[hIndex].func;
retVal___ = postHookFunc(retVal___, cid1, cid2, cid3);
}
@@ -1040,14 +1094,14 @@ int HP_chr_char_family(int cid1, int cid2, int cid3) {
}
void HP_chr_disconnect_player(int account_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_disconnect_player_pre ) {
+ if (HPMHooks.count.HP_chr_disconnect_player_pre > 0) {
void (*preHookFunc) (int *account_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_disconnect_player_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_disconnect_player_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_disconnect_player_pre[hIndex].func;
preHookFunc(&account_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1055,9 +1109,9 @@ void HP_chr_disconnect_player(int account_id) {
{
HPMHooks.source.chr.disconnect_player(account_id);
}
- if( HPMHooks.count.HP_chr_disconnect_player_post ) {
+ if (HPMHooks.count.HP_chr_disconnect_player_post > 0) {
void (*postHookFunc) (int account_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_disconnect_player_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_disconnect_player_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_disconnect_player_post[hIndex].func;
postHookFunc(account_id);
}
@@ -1066,14 +1120,14 @@ void HP_chr_disconnect_player(int account_id) {
}
void HP_chr_authfail_fd(int fd, int type) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_authfail_fd_pre ) {
+ if (HPMHooks.count.HP_chr_authfail_fd_pre > 0) {
void (*preHookFunc) (int *fd, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_authfail_fd_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_authfail_fd_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_authfail_fd_pre[hIndex].func;
preHookFunc(&fd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1081,9 +1135,9 @@ void HP_chr_authfail_fd(int fd, int type) {
{
HPMHooks.source.chr.authfail_fd(fd, type);
}
- if( HPMHooks.count.HP_chr_authfail_fd_post ) {
+ if (HPMHooks.count.HP_chr_authfail_fd_post > 0) {
void (*postHookFunc) (int fd, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_authfail_fd_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_authfail_fd_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_authfail_fd_post[hIndex].func;
postHookFunc(fd, type);
}
@@ -1092,14 +1146,14 @@ void HP_chr_authfail_fd(int fd, int type) {
}
void HP_chr_request_account_data(int account_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_request_account_data_pre ) {
+ if (HPMHooks.count.HP_chr_request_account_data_pre > 0) {
void (*preHookFunc) (int *account_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_request_account_data_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_request_account_data_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_request_account_data_pre[hIndex].func;
preHookFunc(&account_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1107,9 +1161,9 @@ void HP_chr_request_account_data(int account_id) {
{
HPMHooks.source.chr.request_account_data(account_id);
}
- if( HPMHooks.count.HP_chr_request_account_data_post ) {
+ if (HPMHooks.count.HP_chr_request_account_data_post > 0) {
void (*postHookFunc) (int account_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_request_account_data_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_request_account_data_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_request_account_data_post[hIndex].func;
postHookFunc(account_id);
}
@@ -1118,14 +1172,14 @@ void HP_chr_request_account_data(int account_id) {
}
void HP_chr_auth_ok(int fd, struct char_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_auth_ok_pre ) {
+ if (HPMHooks.count.HP_chr_auth_ok_pre > 0) {
void (*preHookFunc) (int *fd, struct char_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_auth_ok_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_auth_ok_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_auth_ok_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1133,9 +1187,9 @@ void HP_chr_auth_ok(int fd, struct char_session_data *sd) {
{
HPMHooks.source.chr.auth_ok(fd, sd);
}
- if( HPMHooks.count.HP_chr_auth_ok_post ) {
+ if (HPMHooks.count.HP_chr_auth_ok_post > 0) {
void (*postHookFunc) (int fd, struct char_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_auth_ok_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_auth_ok_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_auth_ok_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -1144,14 +1198,14 @@ void HP_chr_auth_ok(int fd, struct char_session_data *sd) {
}
void HP_chr_ping_login_server(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_ping_login_server_pre ) {
+ if (HPMHooks.count.HP_chr_ping_login_server_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_ping_login_server_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_ping_login_server_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_ping_login_server_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1159,9 +1213,9 @@ void HP_chr_ping_login_server(int fd) {
{
HPMHooks.source.chr.ping_login_server(fd);
}
- if( HPMHooks.count.HP_chr_ping_login_server_post ) {
+ if (HPMHooks.count.HP_chr_ping_login_server_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_ping_login_server_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_ping_login_server_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_ping_login_server_post[hIndex].func;
postHookFunc(fd);
}
@@ -1171,14 +1225,14 @@ void HP_chr_ping_login_server(int fd) {
int HP_chr_parse_fromlogin_connection_state(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_parse_fromlogin_connection_state_pre ) {
+ if (HPMHooks.count.HP_chr_parse_fromlogin_connection_state_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_connection_state_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_connection_state_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_fromlogin_connection_state_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1186,9 +1240,9 @@ int HP_chr_parse_fromlogin_connection_state(int fd) {
{
retVal___ = HPMHooks.source.chr.parse_fromlogin_connection_state(fd);
}
- if( HPMHooks.count.HP_chr_parse_fromlogin_connection_state_post ) {
+ if (HPMHooks.count.HP_chr_parse_fromlogin_connection_state_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_connection_state_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_connection_state_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_fromlogin_connection_state_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -1197,14 +1251,14 @@ int HP_chr_parse_fromlogin_connection_state(int fd) {
}
void HP_chr_auth_error(int fd, unsigned char flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_auth_error_pre ) {
+ if (HPMHooks.count.HP_chr_auth_error_pre > 0) {
void (*preHookFunc) (int *fd, unsigned char *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_auth_error_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_auth_error_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_auth_error_pre[hIndex].func;
preHookFunc(&fd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1212,9 +1266,9 @@ void HP_chr_auth_error(int fd, unsigned char flag) {
{
HPMHooks.source.chr.auth_error(fd, flag);
}
- if( HPMHooks.count.HP_chr_auth_error_post ) {
+ if (HPMHooks.count.HP_chr_auth_error_post > 0) {
void (*postHookFunc) (int fd, unsigned char flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_auth_error_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_auth_error_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_auth_error_post[hIndex].func;
postHookFunc(fd, flag);
}
@@ -1223,14 +1277,14 @@ void HP_chr_auth_error(int fd, unsigned char flag) {
}
void HP_chr_parse_fromlogin_auth_state(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_fromlogin_auth_state_pre ) {
+ if (HPMHooks.count.HP_chr_parse_fromlogin_auth_state_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_auth_state_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_auth_state_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_fromlogin_auth_state_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1238,9 +1292,9 @@ void HP_chr_parse_fromlogin_auth_state(int fd) {
{
HPMHooks.source.chr.parse_fromlogin_auth_state(fd);
}
- if( HPMHooks.count.HP_chr_parse_fromlogin_auth_state_post ) {
+ if (HPMHooks.count.HP_chr_parse_fromlogin_auth_state_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_auth_state_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_auth_state_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_fromlogin_auth_state_post[hIndex].func;
postHookFunc(fd);
}
@@ -1249,14 +1303,14 @@ void HP_chr_parse_fromlogin_auth_state(int fd) {
}
void HP_chr_parse_fromlogin_account_data(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_fromlogin_account_data_pre ) {
+ if (HPMHooks.count.HP_chr_parse_fromlogin_account_data_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_account_data_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_account_data_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_fromlogin_account_data_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1264,9 +1318,9 @@ void HP_chr_parse_fromlogin_account_data(int fd) {
{
HPMHooks.source.chr.parse_fromlogin_account_data(fd);
}
- if( HPMHooks.count.HP_chr_parse_fromlogin_account_data_post ) {
+ if (HPMHooks.count.HP_chr_parse_fromlogin_account_data_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_account_data_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_account_data_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_fromlogin_account_data_post[hIndex].func;
postHookFunc(fd);
}
@@ -1275,14 +1329,14 @@ void HP_chr_parse_fromlogin_account_data(int fd) {
}
void HP_chr_parse_fromlogin_login_pong(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_fromlogin_login_pong_pre ) {
+ if (HPMHooks.count.HP_chr_parse_fromlogin_login_pong_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_login_pong_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_login_pong_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_fromlogin_login_pong_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1290,9 +1344,9 @@ void HP_chr_parse_fromlogin_login_pong(int fd) {
{
HPMHooks.source.chr.parse_fromlogin_login_pong(fd);
}
- if( HPMHooks.count.HP_chr_parse_fromlogin_login_pong_post ) {
+ if (HPMHooks.count.HP_chr_parse_fromlogin_login_pong_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_login_pong_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_login_pong_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_fromlogin_login_pong_post[hIndex].func;
postHookFunc(fd);
}
@@ -1301,14 +1355,14 @@ void HP_chr_parse_fromlogin_login_pong(int fd) {
}
void HP_chr_changesex(int account_id, int sex) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_changesex_pre ) {
+ if (HPMHooks.count.HP_chr_changesex_pre > 0) {
void (*preHookFunc) (int *account_id, int *sex);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_changesex_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_changesex_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_changesex_pre[hIndex].func;
preHookFunc(&account_id, &sex);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1316,9 +1370,9 @@ void HP_chr_changesex(int account_id, int sex) {
{
HPMHooks.source.chr.changesex(account_id, sex);
}
- if( HPMHooks.count.HP_chr_changesex_post ) {
+ if (HPMHooks.count.HP_chr_changesex_post > 0) {
void (*postHookFunc) (int account_id, int sex);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_changesex_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_changesex_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_changesex_post[hIndex].func;
postHookFunc(account_id, sex);
}
@@ -1328,14 +1382,14 @@ void HP_chr_changesex(int account_id, int sex) {
int HP_chr_parse_fromlogin_changesex_reply(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_parse_fromlogin_changesex_reply_pre ) {
+ if (HPMHooks.count.HP_chr_parse_fromlogin_changesex_reply_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_changesex_reply_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_changesex_reply_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_fromlogin_changesex_reply_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1343,9 +1397,9 @@ int HP_chr_parse_fromlogin_changesex_reply(int fd) {
{
retVal___ = HPMHooks.source.chr.parse_fromlogin_changesex_reply(fd);
}
- if( HPMHooks.count.HP_chr_parse_fromlogin_changesex_reply_post ) {
+ if (HPMHooks.count.HP_chr_parse_fromlogin_changesex_reply_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_changesex_reply_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_changesex_reply_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_fromlogin_changesex_reply_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -1354,14 +1408,14 @@ int HP_chr_parse_fromlogin_changesex_reply(int fd) {
}
void HP_chr_parse_fromlogin_account_reg2(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_fromlogin_account_reg2_pre ) {
+ if (HPMHooks.count.HP_chr_parse_fromlogin_account_reg2_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_account_reg2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_account_reg2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_fromlogin_account_reg2_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1369,9 +1423,9 @@ void HP_chr_parse_fromlogin_account_reg2(int fd) {
{
HPMHooks.source.chr.parse_fromlogin_account_reg2(fd);
}
- if( HPMHooks.count.HP_chr_parse_fromlogin_account_reg2_post ) {
+ if (HPMHooks.count.HP_chr_parse_fromlogin_account_reg2_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_account_reg2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_account_reg2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_fromlogin_account_reg2_post[hIndex].func;
postHookFunc(fd);
}
@@ -1380,14 +1434,14 @@ void HP_chr_parse_fromlogin_account_reg2(int fd) {
}
void HP_chr_parse_fromlogin_ban(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_fromlogin_ban_pre ) {
+ if (HPMHooks.count.HP_chr_parse_fromlogin_ban_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_ban_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_ban_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_fromlogin_ban_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1395,9 +1449,9 @@ void HP_chr_parse_fromlogin_ban(int fd) {
{
HPMHooks.source.chr.parse_fromlogin_ban(fd);
}
- if( HPMHooks.count.HP_chr_parse_fromlogin_ban_post ) {
+ if (HPMHooks.count.HP_chr_parse_fromlogin_ban_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_ban_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_ban_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_fromlogin_ban_post[hIndex].func;
postHookFunc(fd);
}
@@ -1406,14 +1460,14 @@ void HP_chr_parse_fromlogin_ban(int fd) {
}
void HP_chr_parse_fromlogin_kick(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_fromlogin_kick_pre ) {
+ if (HPMHooks.count.HP_chr_parse_fromlogin_kick_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_kick_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_kick_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_fromlogin_kick_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1421,9 +1475,9 @@ void HP_chr_parse_fromlogin_kick(int fd) {
{
HPMHooks.source.chr.parse_fromlogin_kick(fd);
}
- if( HPMHooks.count.HP_chr_parse_fromlogin_kick_post ) {
+ if (HPMHooks.count.HP_chr_parse_fromlogin_kick_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_kick_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_kick_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_fromlogin_kick_post[hIndex].func;
postHookFunc(fd);
}
@@ -1432,14 +1486,14 @@ void HP_chr_parse_fromlogin_kick(int fd) {
}
void HP_chr_update_ip(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_update_ip_pre ) {
+ if (HPMHooks.count.HP_chr_update_ip_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_update_ip_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_update_ip_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_update_ip_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1447,9 +1501,9 @@ void HP_chr_update_ip(int fd) {
{
HPMHooks.source.chr.update_ip(fd);
}
- if( HPMHooks.count.HP_chr_update_ip_post ) {
+ if (HPMHooks.count.HP_chr_update_ip_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_update_ip_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_update_ip_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_update_ip_post[hIndex].func;
postHookFunc(fd);
}
@@ -1458,14 +1512,14 @@ void HP_chr_update_ip(int fd) {
}
void HP_chr_parse_fromlogin_update_ip(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_fromlogin_update_ip_pre ) {
+ if (HPMHooks.count.HP_chr_parse_fromlogin_update_ip_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_update_ip_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_update_ip_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_fromlogin_update_ip_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1473,9 +1527,9 @@ void HP_chr_parse_fromlogin_update_ip(int fd) {
{
HPMHooks.source.chr.parse_fromlogin_update_ip(fd);
}
- if( HPMHooks.count.HP_chr_parse_fromlogin_update_ip_post ) {
+ if (HPMHooks.count.HP_chr_parse_fromlogin_update_ip_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_update_ip_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_update_ip_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_fromlogin_update_ip_post[hIndex].func;
postHookFunc(fd);
}
@@ -1484,14 +1538,14 @@ void HP_chr_parse_fromlogin_update_ip(int fd) {
}
void HP_chr_parse_fromlogin_accinfo2_failed(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_fromlogin_accinfo2_failed_pre ) {
+ if (HPMHooks.count.HP_chr_parse_fromlogin_accinfo2_failed_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_accinfo2_failed_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_accinfo2_failed_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_fromlogin_accinfo2_failed_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1499,9 +1553,9 @@ void HP_chr_parse_fromlogin_accinfo2_failed(int fd) {
{
HPMHooks.source.chr.parse_fromlogin_accinfo2_failed(fd);
}
- if( HPMHooks.count.HP_chr_parse_fromlogin_accinfo2_failed_post ) {
+ if (HPMHooks.count.HP_chr_parse_fromlogin_accinfo2_failed_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_accinfo2_failed_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_accinfo2_failed_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_fromlogin_accinfo2_failed_post[hIndex].func;
postHookFunc(fd);
}
@@ -1510,14 +1564,14 @@ void HP_chr_parse_fromlogin_accinfo2_failed(int fd) {
}
void HP_chr_parse_fromlogin_accinfo2_ok(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_fromlogin_accinfo2_ok_pre ) {
+ if (HPMHooks.count.HP_chr_parse_fromlogin_accinfo2_ok_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_accinfo2_ok_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_accinfo2_ok_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_fromlogin_accinfo2_ok_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1525,9 +1579,9 @@ void HP_chr_parse_fromlogin_accinfo2_ok(int fd) {
{
HPMHooks.source.chr.parse_fromlogin_accinfo2_ok(fd);
}
- if( HPMHooks.count.HP_chr_parse_fromlogin_accinfo2_ok_post ) {
+ if (HPMHooks.count.HP_chr_parse_fromlogin_accinfo2_ok_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_accinfo2_ok_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_accinfo2_ok_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_fromlogin_accinfo2_ok_post[hIndex].func;
postHookFunc(fd);
}
@@ -1537,14 +1591,14 @@ void HP_chr_parse_fromlogin_accinfo2_ok(int fd) {
int HP_chr_parse_fromlogin(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_parse_fromlogin_pre ) {
+ if (HPMHooks.count.HP_chr_parse_fromlogin_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_fromlogin_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1552,9 +1606,9 @@ int HP_chr_parse_fromlogin(int fd) {
{
retVal___ = HPMHooks.source.chr.parse_fromlogin(fd);
}
- if( HPMHooks.count.HP_chr_parse_fromlogin_post ) {
+ if (HPMHooks.count.HP_chr_parse_fromlogin_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_fromlogin_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_fromlogin_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -1564,14 +1618,14 @@ int HP_chr_parse_fromlogin(int fd) {
int HP_chr_request_accreg2(int account_id, int char_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_request_accreg2_pre ) {
+ if (HPMHooks.count.HP_chr_request_accreg2_pre > 0) {
int (*preHookFunc) (int *account_id, int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_request_accreg2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_request_accreg2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_request_accreg2_pre[hIndex].func;
retVal___ = preHookFunc(&account_id, &char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1579,9 +1633,9 @@ int HP_chr_request_accreg2(int account_id, int char_id) {
{
retVal___ = HPMHooks.source.chr.request_accreg2(account_id, char_id);
}
- if( HPMHooks.count.HP_chr_request_accreg2_post ) {
+ if (HPMHooks.count.HP_chr_request_accreg2_post > 0) {
int (*postHookFunc) (int retVal___, int account_id, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_request_accreg2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_request_accreg2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_request_accreg2_post[hIndex].func;
retVal___ = postHookFunc(retVal___, account_id, char_id);
}
@@ -1590,14 +1644,14 @@ int HP_chr_request_accreg2(int account_id, int char_id) {
}
void HP_chr_global_accreg_to_login_start(int account_id, int char_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_global_accreg_to_login_start_pre ) {
+ if (HPMHooks.count.HP_chr_global_accreg_to_login_start_pre > 0) {
void (*preHookFunc) (int *account_id, int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_global_accreg_to_login_start_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_global_accreg_to_login_start_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_global_accreg_to_login_start_pre[hIndex].func;
preHookFunc(&account_id, &char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1605,9 +1659,9 @@ void HP_chr_global_accreg_to_login_start(int account_id, int char_id) {
{
HPMHooks.source.chr.global_accreg_to_login_start(account_id, char_id);
}
- if( HPMHooks.count.HP_chr_global_accreg_to_login_start_post ) {
+ if (HPMHooks.count.HP_chr_global_accreg_to_login_start_post > 0) {
void (*postHookFunc) (int account_id, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_global_accreg_to_login_start_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_global_accreg_to_login_start_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_global_accreg_to_login_start_post[hIndex].func;
postHookFunc(account_id, char_id);
}
@@ -1616,14 +1670,14 @@ void HP_chr_global_accreg_to_login_start(int account_id, int char_id) {
}
void HP_chr_global_accreg_to_login_send(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_global_accreg_to_login_send_pre ) {
+ if (HPMHooks.count.HP_chr_global_accreg_to_login_send_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_global_accreg_to_login_send_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_global_accreg_to_login_send_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_global_accreg_to_login_send_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1631,9 +1685,9 @@ void HP_chr_global_accreg_to_login_send(void) {
{
HPMHooks.source.chr.global_accreg_to_login_send();
}
- if( HPMHooks.count.HP_chr_global_accreg_to_login_send_post ) {
+ if (HPMHooks.count.HP_chr_global_accreg_to_login_send_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_global_accreg_to_login_send_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_global_accreg_to_login_send_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_global_accreg_to_login_send_post[hIndex].func;
postHookFunc();
}
@@ -1642,14 +1696,14 @@ void HP_chr_global_accreg_to_login_send(void) {
}
void HP_chr_global_accreg_to_login_add(const char *key, unsigned int index, intptr_t val, bool is_string) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_global_accreg_to_login_add_pre ) {
+ if (HPMHooks.count.HP_chr_global_accreg_to_login_add_pre > 0) {
void (*preHookFunc) (const char **key, unsigned int *index, intptr_t *val, bool *is_string);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_global_accreg_to_login_add_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_global_accreg_to_login_add_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_global_accreg_to_login_add_pre[hIndex].func;
preHookFunc(&key, &index, &val, &is_string);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1657,9 +1711,9 @@ void HP_chr_global_accreg_to_login_add(const char *key, unsigned int index, intp
{
HPMHooks.source.chr.global_accreg_to_login_add(key, index, val, is_string);
}
- if( HPMHooks.count.HP_chr_global_accreg_to_login_add_post ) {
+ if (HPMHooks.count.HP_chr_global_accreg_to_login_add_post > 0) {
void (*postHookFunc) (const char *key, unsigned int index, intptr_t val, bool is_string);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_global_accreg_to_login_add_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_global_accreg_to_login_add_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_global_accreg_to_login_add_post[hIndex].func;
postHookFunc(key, index, val, is_string);
}
@@ -1668,14 +1722,14 @@ void HP_chr_global_accreg_to_login_add(const char *key, unsigned int index, intp
}
void HP_chr_read_fame_list(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_read_fame_list_pre ) {
+ if (HPMHooks.count.HP_chr_read_fame_list_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_read_fame_list_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_read_fame_list_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_read_fame_list_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1683,9 +1737,9 @@ void HP_chr_read_fame_list(void) {
{
HPMHooks.source.chr.read_fame_list();
}
- if( HPMHooks.count.HP_chr_read_fame_list_post ) {
+ if (HPMHooks.count.HP_chr_read_fame_list_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_read_fame_list_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_read_fame_list_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_read_fame_list_post[hIndex].func;
postHookFunc();
}
@@ -1695,14 +1749,14 @@ void HP_chr_read_fame_list(void) {
int HP_chr_send_fame_list(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_send_fame_list_pre ) {
+ if (HPMHooks.count.HP_chr_send_fame_list_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_fame_list_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_fame_list_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_send_fame_list_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1710,9 +1764,9 @@ int HP_chr_send_fame_list(int fd) {
{
retVal___ = HPMHooks.source.chr.send_fame_list(fd);
}
- if( HPMHooks.count.HP_chr_send_fame_list_post ) {
+ if (HPMHooks.count.HP_chr_send_fame_list_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_fame_list_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_fame_list_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_send_fame_list_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -1721,14 +1775,14 @@ int HP_chr_send_fame_list(int fd) {
}
void HP_chr_update_fame_list(int type, int index, int fame) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_update_fame_list_pre ) {
+ if (HPMHooks.count.HP_chr_update_fame_list_pre > 0) {
void (*preHookFunc) (int *type, int *index, int *fame);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_update_fame_list_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_update_fame_list_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_update_fame_list_pre[hIndex].func;
preHookFunc(&type, &index, &fame);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1736,9 +1790,9 @@ void HP_chr_update_fame_list(int type, int index, int fame) {
{
HPMHooks.source.chr.update_fame_list(type, index, fame);
}
- if( HPMHooks.count.HP_chr_update_fame_list_post ) {
+ if (HPMHooks.count.HP_chr_update_fame_list_post > 0) {
void (*postHookFunc) (int type, int index, int fame);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_update_fame_list_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_update_fame_list_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_update_fame_list_post[hIndex].func;
postHookFunc(type, index, fame);
}
@@ -1748,14 +1802,14 @@ void HP_chr_update_fame_list(int type, int index, int fame) {
int HP_chr_loadName(int char_id, char *name) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_loadName_pre ) {
+ if (HPMHooks.count.HP_chr_loadName_pre > 0) {
int (*preHookFunc) (int *char_id, char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_loadName_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_loadName_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_loadName_pre[hIndex].func;
retVal___ = preHookFunc(&char_id, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1763,9 +1817,9 @@ int HP_chr_loadName(int char_id, char *name) {
{
retVal___ = HPMHooks.source.chr.loadName(char_id, name);
}
- if( HPMHooks.count.HP_chr_loadName_post ) {
+ if (HPMHooks.count.HP_chr_loadName_post > 0) {
int (*postHookFunc) (int retVal___, int char_id, char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_loadName_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_loadName_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_loadName_post[hIndex].func;
retVal___ = postHookFunc(retVal___, char_id, name);
}
@@ -1774,14 +1828,14 @@ int HP_chr_loadName(int char_id, char *name) {
}
void HP_chr_parse_frommap_datasync(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_frommap_datasync_pre ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_datasync_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_datasync_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_datasync_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_frommap_datasync_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1789,9 +1843,9 @@ void HP_chr_parse_frommap_datasync(int fd) {
{
HPMHooks.source.chr.parse_frommap_datasync(fd);
}
- if( HPMHooks.count.HP_chr_parse_frommap_datasync_post ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_datasync_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_datasync_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_datasync_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_frommap_datasync_post[hIndex].func;
postHookFunc(fd);
}
@@ -1800,14 +1854,14 @@ void HP_chr_parse_frommap_datasync(int fd) {
}
void HP_chr_parse_frommap_skillid2idx(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_frommap_skillid2idx_pre ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_skillid2idx_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_skillid2idx_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_skillid2idx_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_frommap_skillid2idx_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1815,9 +1869,9 @@ void HP_chr_parse_frommap_skillid2idx(int fd) {
{
HPMHooks.source.chr.parse_frommap_skillid2idx(fd);
}
- if( HPMHooks.count.HP_chr_parse_frommap_skillid2idx_post ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_skillid2idx_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_skillid2idx_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_skillid2idx_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_frommap_skillid2idx_post[hIndex].func;
postHookFunc(fd);
}
@@ -1826,14 +1880,14 @@ void HP_chr_parse_frommap_skillid2idx(int fd) {
}
void HP_chr_map_received_ok(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_map_received_ok_pre ) {
+ if (HPMHooks.count.HP_chr_map_received_ok_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_map_received_ok_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_map_received_ok_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_map_received_ok_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1841,9 +1895,9 @@ void HP_chr_map_received_ok(int fd) {
{
HPMHooks.source.chr.map_received_ok(fd);
}
- if( HPMHooks.count.HP_chr_map_received_ok_post ) {
+ if (HPMHooks.count.HP_chr_map_received_ok_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_map_received_ok_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_map_received_ok_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_map_received_ok_post[hIndex].func;
postHookFunc(fd);
}
@@ -1852,14 +1906,14 @@ void HP_chr_map_received_ok(int fd) {
}
void HP_chr_send_maps(int fd, int id, int j) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_send_maps_pre ) {
+ if (HPMHooks.count.HP_chr_send_maps_pre > 0) {
void (*preHookFunc) (int *fd, int *id, int *j);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_maps_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_maps_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_send_maps_pre[hIndex].func;
preHookFunc(&fd, &id, &j);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1867,9 +1921,9 @@ void HP_chr_send_maps(int fd, int id, int j) {
{
HPMHooks.source.chr.send_maps(fd, id, j);
}
- if( HPMHooks.count.HP_chr_send_maps_post ) {
+ if (HPMHooks.count.HP_chr_send_maps_post > 0) {
void (*postHookFunc) (int fd, int id, int j);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_maps_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_maps_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_send_maps_post[hIndex].func;
postHookFunc(fd, id, j);
}
@@ -1878,14 +1932,14 @@ void HP_chr_send_maps(int fd, int id, int j) {
}
void HP_chr_parse_frommap_map_names(int fd, int id) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_frommap_map_names_pre ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_map_names_pre > 0) {
void (*preHookFunc) (int *fd, int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_map_names_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_map_names_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_frommap_map_names_pre[hIndex].func;
preHookFunc(&fd, &id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1893,9 +1947,9 @@ void HP_chr_parse_frommap_map_names(int fd, int id) {
{
HPMHooks.source.chr.parse_frommap_map_names(fd, id);
}
- if( HPMHooks.count.HP_chr_parse_frommap_map_names_post ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_map_names_post > 0) {
void (*postHookFunc) (int fd, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_map_names_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_map_names_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_frommap_map_names_post[hIndex].func;
postHookFunc(fd, id);
}
@@ -1904,14 +1958,14 @@ void HP_chr_parse_frommap_map_names(int fd, int id) {
}
void HP_chr_send_scdata(int fd, int aid, int cid) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_send_scdata_pre ) {
+ if (HPMHooks.count.HP_chr_send_scdata_pre > 0) {
void (*preHookFunc) (int *fd, int *aid, int *cid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_scdata_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_scdata_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_send_scdata_pre[hIndex].func;
preHookFunc(&fd, &aid, &cid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1919,9 +1973,9 @@ void HP_chr_send_scdata(int fd, int aid, int cid) {
{
HPMHooks.source.chr.send_scdata(fd, aid, cid);
}
- if( HPMHooks.count.HP_chr_send_scdata_post ) {
+ if (HPMHooks.count.HP_chr_send_scdata_post > 0) {
void (*postHookFunc) (int fd, int aid, int cid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_scdata_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_scdata_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_send_scdata_post[hIndex].func;
postHookFunc(fd, aid, cid);
}
@@ -1930,14 +1984,14 @@ void HP_chr_send_scdata(int fd, int aid, int cid) {
}
void HP_chr_parse_frommap_request_scdata(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_frommap_request_scdata_pre ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_request_scdata_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_request_scdata_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_request_scdata_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_frommap_request_scdata_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1945,9 +1999,9 @@ void HP_chr_parse_frommap_request_scdata(int fd) {
{
HPMHooks.source.chr.parse_frommap_request_scdata(fd);
}
- if( HPMHooks.count.HP_chr_parse_frommap_request_scdata_post ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_request_scdata_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_request_scdata_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_request_scdata_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_frommap_request_scdata_post[hIndex].func;
postHookFunc(fd);
}
@@ -1956,14 +2010,14 @@ void HP_chr_parse_frommap_request_scdata(int fd) {
}
void HP_chr_parse_frommap_set_users_count(int fd, int id) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_frommap_set_users_count_pre ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_set_users_count_pre > 0) {
void (*preHookFunc) (int *fd, int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_set_users_count_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_set_users_count_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_frommap_set_users_count_pre[hIndex].func;
preHookFunc(&fd, &id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1971,9 +2025,9 @@ void HP_chr_parse_frommap_set_users_count(int fd, int id) {
{
HPMHooks.source.chr.parse_frommap_set_users_count(fd, id);
}
- if( HPMHooks.count.HP_chr_parse_frommap_set_users_count_post ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_set_users_count_post > 0) {
void (*postHookFunc) (int fd, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_set_users_count_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_set_users_count_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_frommap_set_users_count_post[hIndex].func;
postHookFunc(fd, id);
}
@@ -1982,14 +2036,14 @@ void HP_chr_parse_frommap_set_users_count(int fd, int id) {
}
void HP_chr_parse_frommap_set_users(int fd, int id) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_frommap_set_users_pre ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_set_users_pre > 0) {
void (*preHookFunc) (int *fd, int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_set_users_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_set_users_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_frommap_set_users_pre[hIndex].func;
preHookFunc(&fd, &id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1997,9 +2051,9 @@ void HP_chr_parse_frommap_set_users(int fd, int id) {
{
HPMHooks.source.chr.parse_frommap_set_users(fd, id);
}
- if( HPMHooks.count.HP_chr_parse_frommap_set_users_post ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_set_users_post > 0) {
void (*postHookFunc) (int fd, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_set_users_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_set_users_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_frommap_set_users_post[hIndex].func;
postHookFunc(fd, id);
}
@@ -2008,14 +2062,14 @@ void HP_chr_parse_frommap_set_users(int fd, int id) {
}
void HP_chr_save_character_ack(int fd, int aid, int cid) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_save_character_ack_pre ) {
+ if (HPMHooks.count.HP_chr_save_character_ack_pre > 0) {
void (*preHookFunc) (int *fd, int *aid, int *cid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_save_character_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_save_character_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_save_character_ack_pre[hIndex].func;
preHookFunc(&fd, &aid, &cid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2023,9 +2077,9 @@ void HP_chr_save_character_ack(int fd, int aid, int cid) {
{
HPMHooks.source.chr.save_character_ack(fd, aid, cid);
}
- if( HPMHooks.count.HP_chr_save_character_ack_post ) {
+ if (HPMHooks.count.HP_chr_save_character_ack_post > 0) {
void (*postHookFunc) (int fd, int aid, int cid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_save_character_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_save_character_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_save_character_ack_post[hIndex].func;
postHookFunc(fd, aid, cid);
}
@@ -2034,14 +2088,14 @@ void HP_chr_save_character_ack(int fd, int aid, int cid) {
}
void HP_chr_parse_frommap_save_character(int fd, int id) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_frommap_save_character_pre ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_save_character_pre > 0) {
void (*preHookFunc) (int *fd, int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_save_character_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_save_character_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_frommap_save_character_pre[hIndex].func;
preHookFunc(&fd, &id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2049,9 +2103,9 @@ void HP_chr_parse_frommap_save_character(int fd, int id) {
{
HPMHooks.source.chr.parse_frommap_save_character(fd, id);
}
- if( HPMHooks.count.HP_chr_parse_frommap_save_character_post ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_save_character_post > 0) {
void (*postHookFunc) (int fd, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_save_character_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_save_character_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_frommap_save_character_post[hIndex].func;
postHookFunc(fd, id);
}
@@ -2060,14 +2114,14 @@ void HP_chr_parse_frommap_save_character(int fd, int id) {
}
void HP_chr_select_ack(int fd, int account_id, uint8 flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_select_ack_pre ) {
+ if (HPMHooks.count.HP_chr_select_ack_pre > 0) {
void (*preHookFunc) (int *fd, int *account_id, uint8 *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_select_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_select_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_select_ack_pre[hIndex].func;
preHookFunc(&fd, &account_id, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2075,9 +2129,9 @@ void HP_chr_select_ack(int fd, int account_id, uint8 flag) {
{
HPMHooks.source.chr.select_ack(fd, account_id, flag);
}
- if( HPMHooks.count.HP_chr_select_ack_post ) {
+ if (HPMHooks.count.HP_chr_select_ack_post > 0) {
void (*postHookFunc) (int fd, int account_id, uint8 flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_select_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_select_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_select_ack_post[hIndex].func;
postHookFunc(fd, account_id, flag);
}
@@ -2086,14 +2140,14 @@ void HP_chr_select_ack(int fd, int account_id, uint8 flag) {
}
void HP_chr_parse_frommap_char_select_req(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_frommap_char_select_req_pre ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_char_select_req_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_char_select_req_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_char_select_req_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_frommap_char_select_req_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2101,9 +2155,9 @@ void HP_chr_parse_frommap_char_select_req(int fd) {
{
HPMHooks.source.chr.parse_frommap_char_select_req(fd);
}
- if( HPMHooks.count.HP_chr_parse_frommap_char_select_req_post ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_char_select_req_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_char_select_req_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_char_select_req_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_frommap_char_select_req_post[hIndex].func;
postHookFunc(fd);
}
@@ -2112,14 +2166,14 @@ void HP_chr_parse_frommap_char_select_req(int fd) {
}
void HP_chr_change_map_server_ack(int fd, const uint8 *data, bool ok) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_change_map_server_ack_pre ) {
+ if (HPMHooks.count.HP_chr_change_map_server_ack_pre > 0) {
void (*preHookFunc) (int *fd, const uint8 **data, bool *ok);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_change_map_server_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_change_map_server_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_change_map_server_ack_pre[hIndex].func;
preHookFunc(&fd, &data, &ok);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2127,9 +2181,9 @@ void HP_chr_change_map_server_ack(int fd, const uint8 *data, bool ok) {
{
HPMHooks.source.chr.change_map_server_ack(fd, data, ok);
}
- if( HPMHooks.count.HP_chr_change_map_server_ack_post ) {
+ if (HPMHooks.count.HP_chr_change_map_server_ack_post > 0) {
void (*postHookFunc) (int fd, const uint8 *data, bool ok);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_change_map_server_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_change_map_server_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_change_map_server_ack_post[hIndex].func;
postHookFunc(fd, data, ok);
}
@@ -2138,14 +2192,14 @@ void HP_chr_change_map_server_ack(int fd, const uint8 *data, bool ok) {
}
void HP_chr_parse_frommap_change_map_server(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_frommap_change_map_server_pre ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_change_map_server_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_change_map_server_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_change_map_server_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_frommap_change_map_server_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2153,9 +2207,9 @@ void HP_chr_parse_frommap_change_map_server(int fd) {
{
HPMHooks.source.chr.parse_frommap_change_map_server(fd);
}
- if( HPMHooks.count.HP_chr_parse_frommap_change_map_server_post ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_change_map_server_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_change_map_server_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_change_map_server_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_frommap_change_map_server_post[hIndex].func;
postHookFunc(fd);
}
@@ -2164,14 +2218,14 @@ void HP_chr_parse_frommap_change_map_server(int fd) {
}
void HP_chr_parse_frommap_remove_friend(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_frommap_remove_friend_pre ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_remove_friend_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_remove_friend_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_remove_friend_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_frommap_remove_friend_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2179,9 +2233,9 @@ void HP_chr_parse_frommap_remove_friend(int fd) {
{
HPMHooks.source.chr.parse_frommap_remove_friend(fd);
}
- if( HPMHooks.count.HP_chr_parse_frommap_remove_friend_post ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_remove_friend_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_remove_friend_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_remove_friend_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_frommap_remove_friend_post[hIndex].func;
postHookFunc(fd);
}
@@ -2190,14 +2244,14 @@ void HP_chr_parse_frommap_remove_friend(int fd) {
}
void HP_chr_char_name_ack(int fd, int char_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_char_name_ack_pre ) {
+ if (HPMHooks.count.HP_chr_char_name_ack_pre > 0) {
void (*preHookFunc) (int *fd, int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_char_name_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_char_name_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_char_name_ack_pre[hIndex].func;
preHookFunc(&fd, &char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2205,9 +2259,9 @@ void HP_chr_char_name_ack(int fd, int char_id) {
{
HPMHooks.source.chr.char_name_ack(fd, char_id);
}
- if( HPMHooks.count.HP_chr_char_name_ack_post ) {
+ if (HPMHooks.count.HP_chr_char_name_ack_post > 0) {
void (*postHookFunc) (int fd, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_char_name_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_char_name_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_char_name_ack_post[hIndex].func;
postHookFunc(fd, char_id);
}
@@ -2216,14 +2270,14 @@ void HP_chr_char_name_ack(int fd, int char_id) {
}
void HP_chr_parse_frommap_char_name_request(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_frommap_char_name_request_pre ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_char_name_request_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_char_name_request_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_char_name_request_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_frommap_char_name_request_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2231,9 +2285,9 @@ void HP_chr_parse_frommap_char_name_request(int fd) {
{
HPMHooks.source.chr.parse_frommap_char_name_request(fd);
}
- if( HPMHooks.count.HP_chr_parse_frommap_char_name_request_post ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_char_name_request_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_char_name_request_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_char_name_request_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_frommap_char_name_request_post[hIndex].func;
postHookFunc(fd);
}
@@ -2242,14 +2296,14 @@ void HP_chr_parse_frommap_char_name_request(int fd) {
}
void HP_chr_parse_frommap_change_email(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_frommap_change_email_pre ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_change_email_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_change_email_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_change_email_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_frommap_change_email_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2257,9 +2311,9 @@ void HP_chr_parse_frommap_change_email(int fd) {
{
HPMHooks.source.chr.parse_frommap_change_email(fd);
}
- if( HPMHooks.count.HP_chr_parse_frommap_change_email_post ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_change_email_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_change_email_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_change_email_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_frommap_change_email_post[hIndex].func;
postHookFunc(fd);
}
@@ -2268,14 +2322,14 @@ void HP_chr_parse_frommap_change_email(int fd) {
}
void HP_chr_ban(int account_id, int char_id, time_t *unban_time, short year, short month, short day, short hour, short minute, short second) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_ban_pre ) {
+ if (HPMHooks.count.HP_chr_ban_pre > 0) {
void (*preHookFunc) (int *account_id, int *char_id, time_t **unban_time, short *year, short *month, short *day, short *hour, short *minute, short *second);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_ban_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_ban_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_ban_pre[hIndex].func;
preHookFunc(&account_id, &char_id, &unban_time, &year, &month, &day, &hour, &minute, &second);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2283,9 +2337,9 @@ void HP_chr_ban(int account_id, int char_id, time_t *unban_time, short year, sho
{
HPMHooks.source.chr.ban(account_id, char_id, unban_time, year, month, day, hour, minute, second);
}
- if( HPMHooks.count.HP_chr_ban_post ) {
+ if (HPMHooks.count.HP_chr_ban_post > 0) {
void (*postHookFunc) (int account_id, int char_id, time_t *unban_time, short year, short month, short day, short hour, short minute, short second);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_ban_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_ban_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_ban_post[hIndex].func;
postHookFunc(account_id, char_id, unban_time, year, month, day, hour, minute, second);
}
@@ -2294,14 +2348,14 @@ void HP_chr_ban(int account_id, int char_id, time_t *unban_time, short year, sho
}
void HP_chr_unban(int char_id, int *result) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_unban_pre ) {
+ if (HPMHooks.count.HP_chr_unban_pre > 0) {
void (*preHookFunc) (int *char_id, int **result);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_unban_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_unban_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_unban_pre[hIndex].func;
preHookFunc(&char_id, &result);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2309,9 +2363,9 @@ void HP_chr_unban(int char_id, int *result) {
{
HPMHooks.source.chr.unban(char_id, result);
}
- if( HPMHooks.count.HP_chr_unban_post ) {
+ if (HPMHooks.count.HP_chr_unban_post > 0) {
void (*postHookFunc) (int char_id, int *result);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_unban_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_unban_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_unban_post[hIndex].func;
postHookFunc(char_id, result);
}
@@ -2320,14 +2374,14 @@ void HP_chr_unban(int char_id, int *result) {
}
void HP_chr_ask_name_ack(int fd, int acc, const char *name, int type, int result) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_ask_name_ack_pre ) {
+ if (HPMHooks.count.HP_chr_ask_name_ack_pre > 0) {
void (*preHookFunc) (int *fd, int *acc, const char **name, int *type, int *result);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_ask_name_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_ask_name_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_ask_name_ack_pre[hIndex].func;
preHookFunc(&fd, &acc, &name, &type, &result);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2335,9 +2389,9 @@ void HP_chr_ask_name_ack(int fd, int acc, const char *name, int type, int result
{
HPMHooks.source.chr.ask_name_ack(fd, acc, name, type, result);
}
- if( HPMHooks.count.HP_chr_ask_name_ack_post ) {
+ if (HPMHooks.count.HP_chr_ask_name_ack_post > 0) {
void (*postHookFunc) (int fd, int acc, const char *name, int type, int result);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_ask_name_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_ask_name_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_ask_name_ack_post[hIndex].func;
postHookFunc(fd, acc, name, type, result);
}
@@ -2347,14 +2401,14 @@ void HP_chr_ask_name_ack(int fd, int acc, const char *name, int type, int result
int HP_chr_changecharsex(int char_id, int sex) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_changecharsex_pre ) {
+ if (HPMHooks.count.HP_chr_changecharsex_pre > 0) {
int (*preHookFunc) (int *char_id, int *sex);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_changecharsex_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_changecharsex_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_changecharsex_pre[hIndex].func;
retVal___ = preHookFunc(&char_id, &sex);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2362,9 +2416,9 @@ int HP_chr_changecharsex(int char_id, int sex) {
{
retVal___ = HPMHooks.source.chr.changecharsex(char_id, sex);
}
- if( HPMHooks.count.HP_chr_changecharsex_post ) {
+ if (HPMHooks.count.HP_chr_changecharsex_post > 0) {
int (*postHookFunc) (int retVal___, int char_id, int sex);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_changecharsex_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_changecharsex_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_changecharsex_post[hIndex].func;
retVal___ = postHookFunc(retVal___, char_id, sex);
}
@@ -2373,14 +2427,14 @@ int HP_chr_changecharsex(int char_id, int sex) {
}
void HP_chr_parse_frommap_change_account(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_frommap_change_account_pre ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_change_account_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_change_account_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_change_account_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_frommap_change_account_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2388,9 +2442,9 @@ void HP_chr_parse_frommap_change_account(int fd) {
{
HPMHooks.source.chr.parse_frommap_change_account(fd);
}
- if( HPMHooks.count.HP_chr_parse_frommap_change_account_post ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_change_account_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_change_account_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_change_account_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_frommap_change_account_post[hIndex].func;
postHookFunc(fd);
}
@@ -2399,14 +2453,14 @@ void HP_chr_parse_frommap_change_account(int fd) {
}
void HP_chr_parse_frommap_fame_list(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_frommap_fame_list_pre ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_fame_list_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_fame_list_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_fame_list_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_frommap_fame_list_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2414,9 +2468,9 @@ void HP_chr_parse_frommap_fame_list(int fd) {
{
HPMHooks.source.chr.parse_frommap_fame_list(fd);
}
- if( HPMHooks.count.HP_chr_parse_frommap_fame_list_post ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_fame_list_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_fame_list_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_fame_list_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_frommap_fame_list_post[hIndex].func;
postHookFunc(fd);
}
@@ -2425,14 +2479,14 @@ void HP_chr_parse_frommap_fame_list(int fd) {
}
void HP_chr_parse_frommap_divorce_char(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_frommap_divorce_char_pre ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_divorce_char_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_divorce_char_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_divorce_char_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_frommap_divorce_char_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2440,9 +2494,9 @@ void HP_chr_parse_frommap_divorce_char(int fd) {
{
HPMHooks.source.chr.parse_frommap_divorce_char(fd);
}
- if( HPMHooks.count.HP_chr_parse_frommap_divorce_char_post ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_divorce_char_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_divorce_char_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_divorce_char_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_frommap_divorce_char_post[hIndex].func;
postHookFunc(fd);
}
@@ -2451,14 +2505,14 @@ void HP_chr_parse_frommap_divorce_char(int fd) {
}
void HP_chr_parse_frommap_ragsrvinfo(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_frommap_ragsrvinfo_pre ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_ragsrvinfo_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_ragsrvinfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_ragsrvinfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_frommap_ragsrvinfo_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2466,9 +2520,9 @@ void HP_chr_parse_frommap_ragsrvinfo(int fd) {
{
HPMHooks.source.chr.parse_frommap_ragsrvinfo(fd);
}
- if( HPMHooks.count.HP_chr_parse_frommap_ragsrvinfo_post ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_ragsrvinfo_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_ragsrvinfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_ragsrvinfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_frommap_ragsrvinfo_post[hIndex].func;
postHookFunc(fd);
}
@@ -2477,14 +2531,14 @@ void HP_chr_parse_frommap_ragsrvinfo(int fd) {
}
void HP_chr_parse_frommap_set_char_offline(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_frommap_set_char_offline_pre ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_set_char_offline_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_set_char_offline_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_set_char_offline_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_frommap_set_char_offline_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2492,9 +2546,9 @@ void HP_chr_parse_frommap_set_char_offline(int fd) {
{
HPMHooks.source.chr.parse_frommap_set_char_offline(fd);
}
- if( HPMHooks.count.HP_chr_parse_frommap_set_char_offline_post ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_set_char_offline_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_set_char_offline_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_set_char_offline_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_frommap_set_char_offline_post[hIndex].func;
postHookFunc(fd);
}
@@ -2503,14 +2557,14 @@ void HP_chr_parse_frommap_set_char_offline(int fd) {
}
void HP_chr_parse_frommap_set_all_offline(int fd, int id) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_frommap_set_all_offline_pre ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_set_all_offline_pre > 0) {
void (*preHookFunc) (int *fd, int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_set_all_offline_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_set_all_offline_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_frommap_set_all_offline_pre[hIndex].func;
preHookFunc(&fd, &id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2518,9 +2572,9 @@ void HP_chr_parse_frommap_set_all_offline(int fd, int id) {
{
HPMHooks.source.chr.parse_frommap_set_all_offline(fd, id);
}
- if( HPMHooks.count.HP_chr_parse_frommap_set_all_offline_post ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_set_all_offline_post > 0) {
void (*postHookFunc) (int fd, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_set_all_offline_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_set_all_offline_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_frommap_set_all_offline_post[hIndex].func;
postHookFunc(fd, id);
}
@@ -2529,14 +2583,14 @@ void HP_chr_parse_frommap_set_all_offline(int fd, int id) {
}
void HP_chr_parse_frommap_set_char_online(int fd, int id) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_frommap_set_char_online_pre ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_set_char_online_pre > 0) {
void (*preHookFunc) (int *fd, int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_set_char_online_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_set_char_online_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_frommap_set_char_online_pre[hIndex].func;
preHookFunc(&fd, &id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2544,9 +2598,9 @@ void HP_chr_parse_frommap_set_char_online(int fd, int id) {
{
HPMHooks.source.chr.parse_frommap_set_char_online(fd, id);
}
- if( HPMHooks.count.HP_chr_parse_frommap_set_char_online_post ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_set_char_online_post > 0) {
void (*postHookFunc) (int fd, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_set_char_online_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_set_char_online_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_frommap_set_char_online_post[hIndex].func;
postHookFunc(fd, id);
}
@@ -2555,14 +2609,14 @@ void HP_chr_parse_frommap_set_char_online(int fd, int id) {
}
void HP_chr_parse_frommap_build_fame_list(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_frommap_build_fame_list_pre ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_build_fame_list_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_build_fame_list_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_build_fame_list_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_frommap_build_fame_list_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2570,9 +2624,9 @@ void HP_chr_parse_frommap_build_fame_list(int fd) {
{
HPMHooks.source.chr.parse_frommap_build_fame_list(fd);
}
- if( HPMHooks.count.HP_chr_parse_frommap_build_fame_list_post ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_build_fame_list_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_build_fame_list_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_build_fame_list_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_frommap_build_fame_list_post[hIndex].func;
postHookFunc(fd);
}
@@ -2581,14 +2635,14 @@ void HP_chr_parse_frommap_build_fame_list(int fd) {
}
void HP_chr_parse_frommap_save_status_change_data(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_frommap_save_status_change_data_pre ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_save_status_change_data_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_save_status_change_data_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_save_status_change_data_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_frommap_save_status_change_data_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2596,9 +2650,9 @@ void HP_chr_parse_frommap_save_status_change_data(int fd) {
{
HPMHooks.source.chr.parse_frommap_save_status_change_data(fd);
}
- if( HPMHooks.count.HP_chr_parse_frommap_save_status_change_data_post ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_save_status_change_data_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_save_status_change_data_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_save_status_change_data_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_frommap_save_status_change_data_post[hIndex].func;
postHookFunc(fd);
}
@@ -2607,14 +2661,14 @@ void HP_chr_parse_frommap_save_status_change_data(int fd) {
}
void HP_chr_send_pong(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_send_pong_pre ) {
+ if (HPMHooks.count.HP_chr_send_pong_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_pong_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_pong_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_send_pong_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2622,9 +2676,9 @@ void HP_chr_send_pong(int fd) {
{
HPMHooks.source.chr.send_pong(fd);
}
- if( HPMHooks.count.HP_chr_send_pong_post ) {
+ if (HPMHooks.count.HP_chr_send_pong_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_pong_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_pong_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_send_pong_post[hIndex].func;
postHookFunc(fd);
}
@@ -2633,14 +2687,14 @@ void HP_chr_send_pong(int fd) {
}
void HP_chr_parse_frommap_ping(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_frommap_ping_pre ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_ping_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_ping_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_ping_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_frommap_ping_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2648,9 +2702,9 @@ void HP_chr_parse_frommap_ping(int fd) {
{
HPMHooks.source.chr.parse_frommap_ping(fd);
}
- if( HPMHooks.count.HP_chr_parse_frommap_ping_post ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_ping_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_ping_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_ping_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_frommap_ping_post[hIndex].func;
postHookFunc(fd);
}
@@ -2659,14 +2713,14 @@ void HP_chr_parse_frommap_ping(int fd) {
}
void HP_chr_map_auth_ok(int fd, int account_id, struct char_auth_node *node, struct mmo_charstatus *cd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_map_auth_ok_pre ) {
+ if (HPMHooks.count.HP_chr_map_auth_ok_pre > 0) {
void (*preHookFunc) (int *fd, int *account_id, struct char_auth_node **node, struct mmo_charstatus **cd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_map_auth_ok_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_map_auth_ok_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_map_auth_ok_pre[hIndex].func;
preHookFunc(&fd, &account_id, &node, &cd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2674,9 +2728,9 @@ void HP_chr_map_auth_ok(int fd, int account_id, struct char_auth_node *node, str
{
HPMHooks.source.chr.map_auth_ok(fd, account_id, node, cd);
}
- if( HPMHooks.count.HP_chr_map_auth_ok_post ) {
+ if (HPMHooks.count.HP_chr_map_auth_ok_post > 0) {
void (*postHookFunc) (int fd, int account_id, struct char_auth_node *node, struct mmo_charstatus *cd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_map_auth_ok_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_map_auth_ok_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_map_auth_ok_post[hIndex].func;
postHookFunc(fd, account_id, node, cd);
}
@@ -2685,14 +2739,14 @@ void HP_chr_map_auth_ok(int fd, int account_id, struct char_auth_node *node, str
}
void HP_chr_map_auth_failed(int fd, int account_id, int char_id, int login_id1, char sex, uint32 ip) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_map_auth_failed_pre ) {
+ if (HPMHooks.count.HP_chr_map_auth_failed_pre > 0) {
void (*preHookFunc) (int *fd, int *account_id, int *char_id, int *login_id1, char *sex, uint32 *ip);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_map_auth_failed_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_map_auth_failed_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_map_auth_failed_pre[hIndex].func;
preHookFunc(&fd, &account_id, &char_id, &login_id1, &sex, &ip);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2700,9 +2754,9 @@ void HP_chr_map_auth_failed(int fd, int account_id, int char_id, int login_id1,
{
HPMHooks.source.chr.map_auth_failed(fd, account_id, char_id, login_id1, sex, ip);
}
- if( HPMHooks.count.HP_chr_map_auth_failed_post ) {
+ if (HPMHooks.count.HP_chr_map_auth_failed_post > 0) {
void (*postHookFunc) (int fd, int account_id, int char_id, int login_id1, char sex, uint32 ip);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_map_auth_failed_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_map_auth_failed_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_map_auth_failed_post[hIndex].func;
postHookFunc(fd, account_id, char_id, login_id1, sex, ip);
}
@@ -2711,14 +2765,14 @@ void HP_chr_map_auth_failed(int fd, int account_id, int char_id, int login_id1,
}
void HP_chr_parse_frommap_auth_request(int fd, int id) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_frommap_auth_request_pre ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_auth_request_pre > 0) {
void (*preHookFunc) (int *fd, int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_auth_request_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_auth_request_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_frommap_auth_request_pre[hIndex].func;
preHookFunc(&fd, &id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2726,9 +2780,9 @@ void HP_chr_parse_frommap_auth_request(int fd, int id) {
{
HPMHooks.source.chr.parse_frommap_auth_request(fd, id);
}
- if( HPMHooks.count.HP_chr_parse_frommap_auth_request_post ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_auth_request_post > 0) {
void (*postHookFunc) (int fd, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_auth_request_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_auth_request_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_frommap_auth_request_post[hIndex].func;
postHookFunc(fd, id);
}
@@ -2737,14 +2791,14 @@ void HP_chr_parse_frommap_auth_request(int fd, int id) {
}
void HP_chr_parse_frommap_update_ip(int fd, int id) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_frommap_update_ip_pre ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_update_ip_pre > 0) {
void (*preHookFunc) (int *fd, int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_update_ip_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_update_ip_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_frommap_update_ip_pre[hIndex].func;
preHookFunc(&fd, &id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2752,51 +2806,25 @@ void HP_chr_parse_frommap_update_ip(int fd, int id) {
{
HPMHooks.source.chr.parse_frommap_update_ip(fd, id);
}
- if( HPMHooks.count.HP_chr_parse_frommap_update_ip_post ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_update_ip_post > 0) {
void (*postHookFunc) (int fd, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_update_ip_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_update_ip_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_frommap_update_ip_post[hIndex].func;
postHookFunc(fd, id);
}
}
return;
}
-void HP_chr_parse_frommap_request_stats_report(int fd) {
- int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_frommap_request_stats_report_pre ) {
- void (*preHookFunc) (int *fd);
- *HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_request_stats_report_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_chr_parse_frommap_request_stats_report_pre[hIndex].func;
- preHookFunc(&fd);
- }
- if( *HPMforce_return ) {
- *HPMforce_return = false;
- return;
- }
- }
- {
- HPMHooks.source.chr.parse_frommap_request_stats_report(fd);
- }
- if( HPMHooks.count.HP_chr_parse_frommap_request_stats_report_post ) {
- void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_request_stats_report_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_chr_parse_frommap_request_stats_report_post[hIndex].func;
- postHookFunc(fd);
- }
- }
- return;
-}
void HP_chr_parse_frommap_scdata_update(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_frommap_scdata_update_pre ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_scdata_update_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_scdata_update_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_scdata_update_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_frommap_scdata_update_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2804,9 +2832,9 @@ void HP_chr_parse_frommap_scdata_update(int fd) {
{
HPMHooks.source.chr.parse_frommap_scdata_update(fd);
}
- if( HPMHooks.count.HP_chr_parse_frommap_scdata_update_post ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_scdata_update_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_scdata_update_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_scdata_update_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_frommap_scdata_update_post[hIndex].func;
postHookFunc(fd);
}
@@ -2815,14 +2843,14 @@ void HP_chr_parse_frommap_scdata_update(int fd) {
}
void HP_chr_parse_frommap_scdata_delete(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_frommap_scdata_delete_pre ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_scdata_delete_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_scdata_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_scdata_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_frommap_scdata_delete_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2830,9 +2858,9 @@ void HP_chr_parse_frommap_scdata_delete(int fd) {
{
HPMHooks.source.chr.parse_frommap_scdata_delete(fd);
}
- if( HPMHooks.count.HP_chr_parse_frommap_scdata_delete_post ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_scdata_delete_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_scdata_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_scdata_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_frommap_scdata_delete_post[hIndex].func;
postHookFunc(fd);
}
@@ -2842,14 +2870,14 @@ void HP_chr_parse_frommap_scdata_delete(int fd) {
int HP_chr_parse_frommap(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_parse_frommap_pre ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_frommap_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2857,9 +2885,9 @@ int HP_chr_parse_frommap(int fd) {
{
retVal___ = HPMHooks.source.chr.parse_frommap(fd);
}
- if( HPMHooks.count.HP_chr_parse_frommap_post ) {
+ if (HPMHooks.count.HP_chr_parse_frommap_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_frommap_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_frommap_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -2869,14 +2897,14 @@ int HP_chr_parse_frommap(int fd) {
int HP_chr_search_mapserver(unsigned short map, uint32 ip, uint16 port) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_search_mapserver_pre ) {
+ if (HPMHooks.count.HP_chr_search_mapserver_pre > 0) {
int (*preHookFunc) (unsigned short *map, uint32 *ip, uint16 *port);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_search_mapserver_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_search_mapserver_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_search_mapserver_pre[hIndex].func;
retVal___ = preHookFunc(&map, &ip, &port);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2884,9 +2912,9 @@ int HP_chr_search_mapserver(unsigned short map, uint32 ip, uint16 port) {
{
retVal___ = HPMHooks.source.chr.search_mapserver(map, ip, port);
}
- if( HPMHooks.count.HP_chr_search_mapserver_post ) {
+ if (HPMHooks.count.HP_chr_search_mapserver_post > 0) {
int (*postHookFunc) (int retVal___, unsigned short map, uint32 ip, uint16 port);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_search_mapserver_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_search_mapserver_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_search_mapserver_post[hIndex].func;
retVal___ = postHookFunc(retVal___, map, ip, port);
}
@@ -2896,14 +2924,14 @@ int HP_chr_search_mapserver(unsigned short map, uint32 ip, uint16 port) {
int HP_chr_mapif_init(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_mapif_init_pre ) {
+ if (HPMHooks.count.HP_chr_mapif_init_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_mapif_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_mapif_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_mapif_init_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2911,9 +2939,9 @@ int HP_chr_mapif_init(int fd) {
{
retVal___ = HPMHooks.source.chr.mapif_init(fd);
}
- if( HPMHooks.count.HP_chr_mapif_init_post ) {
+ if (HPMHooks.count.HP_chr_mapif_init_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_mapif_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_mapif_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_mapif_init_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -2923,14 +2951,14 @@ int HP_chr_mapif_init(int fd) {
uint32 HP_chr_lan_subnet_check(uint32 ip) {
int hIndex = 0;
uint32 retVal___ = 0;
- if( HPMHooks.count.HP_chr_lan_subnet_check_pre ) {
+ if (HPMHooks.count.HP_chr_lan_subnet_check_pre > 0) {
uint32 (*preHookFunc) (uint32 *ip);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_lan_subnet_check_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_lan_subnet_check_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_lan_subnet_check_pre[hIndex].func;
retVal___ = preHookFunc(&ip);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2938,9 +2966,9 @@ uint32 HP_chr_lan_subnet_check(uint32 ip) {
{
retVal___ = HPMHooks.source.chr.lan_subnet_check(ip);
}
- if( HPMHooks.count.HP_chr_lan_subnet_check_post ) {
+ if (HPMHooks.count.HP_chr_lan_subnet_check_post > 0) {
uint32 (*postHookFunc) (uint32 retVal___, uint32 ip);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_lan_subnet_check_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_lan_subnet_check_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_lan_subnet_check_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ip);
}
@@ -2949,14 +2977,14 @@ uint32 HP_chr_lan_subnet_check(uint32 ip) {
}
void HP_chr_delete2_ack(int fd, int char_id, uint32 result, time_t delete_date) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_delete2_ack_pre ) {
+ if (HPMHooks.count.HP_chr_delete2_ack_pre > 0) {
void (*preHookFunc) (int *fd, int *char_id, uint32 *result, time_t *delete_date);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete2_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete2_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_delete2_ack_pre[hIndex].func;
preHookFunc(&fd, &char_id, &result, &delete_date);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2964,9 +2992,9 @@ void HP_chr_delete2_ack(int fd, int char_id, uint32 result, time_t delete_date)
{
HPMHooks.source.chr.delete2_ack(fd, char_id, result, delete_date);
}
- if( HPMHooks.count.HP_chr_delete2_ack_post ) {
+ if (HPMHooks.count.HP_chr_delete2_ack_post > 0) {
void (*postHookFunc) (int fd, int char_id, uint32 result, time_t delete_date);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete2_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete2_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_delete2_ack_post[hIndex].func;
postHookFunc(fd, char_id, result, delete_date);
}
@@ -2975,14 +3003,14 @@ void HP_chr_delete2_ack(int fd, int char_id, uint32 result, time_t delete_date)
}
void HP_chr_delete2_accept_actual_ack(int fd, int char_id, uint32 result) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_delete2_accept_actual_ack_pre ) {
+ if (HPMHooks.count.HP_chr_delete2_accept_actual_ack_pre > 0) {
void (*preHookFunc) (int *fd, int *char_id, uint32 *result);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete2_accept_actual_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete2_accept_actual_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_delete2_accept_actual_ack_pre[hIndex].func;
preHookFunc(&fd, &char_id, &result);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2990,9 +3018,9 @@ void HP_chr_delete2_accept_actual_ack(int fd, int char_id, uint32 result) {
{
HPMHooks.source.chr.delete2_accept_actual_ack(fd, char_id, result);
}
- if( HPMHooks.count.HP_chr_delete2_accept_actual_ack_post ) {
+ if (HPMHooks.count.HP_chr_delete2_accept_actual_ack_post > 0) {
void (*postHookFunc) (int fd, int char_id, uint32 result);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete2_accept_actual_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete2_accept_actual_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_delete2_accept_actual_ack_post[hIndex].func;
postHookFunc(fd, char_id, result);
}
@@ -3001,14 +3029,14 @@ void HP_chr_delete2_accept_actual_ack(int fd, int char_id, uint32 result) {
}
void HP_chr_delete2_accept_ack(int fd, int char_id, uint32 result) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_delete2_accept_ack_pre ) {
+ if (HPMHooks.count.HP_chr_delete2_accept_ack_pre > 0) {
void (*preHookFunc) (int *fd, int *char_id, uint32 *result);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete2_accept_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete2_accept_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_delete2_accept_ack_pre[hIndex].func;
preHookFunc(&fd, &char_id, &result);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3016,9 +3044,9 @@ void HP_chr_delete2_accept_ack(int fd, int char_id, uint32 result) {
{
HPMHooks.source.chr.delete2_accept_ack(fd, char_id, result);
}
- if( HPMHooks.count.HP_chr_delete2_accept_ack_post ) {
+ if (HPMHooks.count.HP_chr_delete2_accept_ack_post > 0) {
void (*postHookFunc) (int fd, int char_id, uint32 result);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete2_accept_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete2_accept_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_delete2_accept_ack_post[hIndex].func;
postHookFunc(fd, char_id, result);
}
@@ -3027,14 +3055,14 @@ void HP_chr_delete2_accept_ack(int fd, int char_id, uint32 result) {
}
void HP_chr_delete2_cancel_ack(int fd, int char_id, uint32 result) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_delete2_cancel_ack_pre ) {
+ if (HPMHooks.count.HP_chr_delete2_cancel_ack_pre > 0) {
void (*preHookFunc) (int *fd, int *char_id, uint32 *result);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete2_cancel_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete2_cancel_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_delete2_cancel_ack_pre[hIndex].func;
preHookFunc(&fd, &char_id, &result);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3042,9 +3070,9 @@ void HP_chr_delete2_cancel_ack(int fd, int char_id, uint32 result) {
{
HPMHooks.source.chr.delete2_cancel_ack(fd, char_id, result);
}
- if( HPMHooks.count.HP_chr_delete2_cancel_ack_post ) {
+ if (HPMHooks.count.HP_chr_delete2_cancel_ack_post > 0) {
void (*postHookFunc) (int fd, int char_id, uint32 result);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete2_cancel_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete2_cancel_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_delete2_cancel_ack_post[hIndex].func;
postHookFunc(fd, char_id, result);
}
@@ -3053,14 +3081,14 @@ void HP_chr_delete2_cancel_ack(int fd, int char_id, uint32 result) {
}
void HP_chr_delete2_req(int fd, struct char_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_delete2_req_pre ) {
+ if (HPMHooks.count.HP_chr_delete2_req_pre > 0) {
void (*preHookFunc) (int *fd, struct char_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete2_req_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete2_req_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_delete2_req_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3068,9 +3096,9 @@ void HP_chr_delete2_req(int fd, struct char_session_data *sd) {
{
HPMHooks.source.chr.delete2_req(fd, sd);
}
- if( HPMHooks.count.HP_chr_delete2_req_post ) {
+ if (HPMHooks.count.HP_chr_delete2_req_post > 0) {
void (*postHookFunc) (int fd, struct char_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete2_req_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete2_req_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_delete2_req_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -3079,14 +3107,14 @@ void HP_chr_delete2_req(int fd, struct char_session_data *sd) {
}
void HP_chr_delete2_accept(int fd, struct char_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_delete2_accept_pre ) {
+ if (HPMHooks.count.HP_chr_delete2_accept_pre > 0) {
void (*preHookFunc) (int *fd, struct char_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete2_accept_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete2_accept_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_delete2_accept_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3094,9 +3122,9 @@ void HP_chr_delete2_accept(int fd, struct char_session_data *sd) {
{
HPMHooks.source.chr.delete2_accept(fd, sd);
}
- if( HPMHooks.count.HP_chr_delete2_accept_post ) {
+ if (HPMHooks.count.HP_chr_delete2_accept_post > 0) {
void (*postHookFunc) (int fd, struct char_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete2_accept_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete2_accept_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_delete2_accept_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -3105,14 +3133,14 @@ void HP_chr_delete2_accept(int fd, struct char_session_data *sd) {
}
void HP_chr_delete2_cancel(int fd, struct char_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_delete2_cancel_pre ) {
+ if (HPMHooks.count.HP_chr_delete2_cancel_pre > 0) {
void (*preHookFunc) (int *fd, struct char_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete2_cancel_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete2_cancel_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_delete2_cancel_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3120,9 +3148,9 @@ void HP_chr_delete2_cancel(int fd, struct char_session_data *sd) {
{
HPMHooks.source.chr.delete2_cancel(fd, sd);
}
- if( HPMHooks.count.HP_chr_delete2_cancel_post ) {
+ if (HPMHooks.count.HP_chr_delete2_cancel_post > 0) {
void (*postHookFunc) (int fd, struct char_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete2_cancel_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete2_cancel_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_delete2_cancel_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -3131,14 +3159,14 @@ void HP_chr_delete2_cancel(int fd, struct char_session_data *sd) {
}
void HP_chr_send_account_id(int fd, int account_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_send_account_id_pre ) {
+ if (HPMHooks.count.HP_chr_send_account_id_pre > 0) {
void (*preHookFunc) (int *fd, int *account_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_account_id_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_account_id_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_send_account_id_pre[hIndex].func;
preHookFunc(&fd, &account_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3146,9 +3174,9 @@ void HP_chr_send_account_id(int fd, int account_id) {
{
HPMHooks.source.chr.send_account_id(fd, account_id);
}
- if( HPMHooks.count.HP_chr_send_account_id_post ) {
+ if (HPMHooks.count.HP_chr_send_account_id_post > 0) {
void (*postHookFunc) (int fd, int account_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_account_id_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_account_id_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_send_account_id_post[hIndex].func;
postHookFunc(fd, account_id);
}
@@ -3157,14 +3185,14 @@ void HP_chr_send_account_id(int fd, int account_id) {
}
void HP_chr_parse_char_connect(int fd, struct char_session_data *sd, uint32 ipl) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_char_connect_pre ) {
+ if (HPMHooks.count.HP_chr_parse_char_connect_pre > 0) {
void (*preHookFunc) (int *fd, struct char_session_data **sd, uint32 *ipl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_connect_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_connect_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_char_connect_pre[hIndex].func;
preHookFunc(&fd, &sd, &ipl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3172,51 +3200,51 @@ void HP_chr_parse_char_connect(int fd, struct char_session_data *sd, uint32 ipl)
{
HPMHooks.source.chr.parse_char_connect(fd, sd, ipl);
}
- if( HPMHooks.count.HP_chr_parse_char_connect_post ) {
+ if (HPMHooks.count.HP_chr_parse_char_connect_post > 0) {
void (*postHookFunc) (int fd, struct char_session_data *sd, uint32 ipl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_connect_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_connect_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_char_connect_post[hIndex].func;
postHookFunc(fd, sd, ipl);
}
}
return;
}
-void HP_chr_send_map_info(int fd, int i, uint32 subnet_map_ip, struct mmo_charstatus *cd) {
+void HP_chr_send_map_info(int fd, int i, uint32 subnet_map_ip, struct mmo_charstatus *cd, char *dnsHost) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_send_map_info_pre ) {
- void (*preHookFunc) (int *fd, int *i, uint32 *subnet_map_ip, struct mmo_charstatus **cd);
+ if (HPMHooks.count.HP_chr_send_map_info_pre > 0) {
+ void (*preHookFunc) (int *fd, int *i, uint32 *subnet_map_ip, struct mmo_charstatus **cd, char **dnsHost);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_map_info_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_map_info_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_send_map_info_pre[hIndex].func;
- preHookFunc(&fd, &i, &subnet_map_ip, &cd);
+ preHookFunc(&fd, &i, &subnet_map_ip, &cd, &dnsHost);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
}
{
- HPMHooks.source.chr.send_map_info(fd, i, subnet_map_ip, cd);
+ HPMHooks.source.chr.send_map_info(fd, i, subnet_map_ip, cd, dnsHost);
}
- if( HPMHooks.count.HP_chr_send_map_info_post ) {
- void (*postHookFunc) (int fd, int i, uint32 subnet_map_ip, struct mmo_charstatus *cd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_map_info_post; hIndex++ ) {
+ if (HPMHooks.count.HP_chr_send_map_info_post > 0) {
+ void (*postHookFunc) (int fd, int i, uint32 subnet_map_ip, struct mmo_charstatus *cd, char *dnsHost);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_map_info_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_send_map_info_post[hIndex].func;
- postHookFunc(fd, i, subnet_map_ip, cd);
+ postHookFunc(fd, i, subnet_map_ip, cd, dnsHost);
}
}
return;
}
void HP_chr_send_wait_char_server(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_send_wait_char_server_pre ) {
+ if (HPMHooks.count.HP_chr_send_wait_char_server_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_wait_char_server_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_wait_char_server_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_send_wait_char_server_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3224,9 +3252,9 @@ void HP_chr_send_wait_char_server(int fd) {
{
HPMHooks.source.chr.send_wait_char_server(fd);
}
- if( HPMHooks.count.HP_chr_send_wait_char_server_post ) {
+ if (HPMHooks.count.HP_chr_send_wait_char_server_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_wait_char_server_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_wait_char_server_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_send_wait_char_server_post[hIndex].func;
postHookFunc(fd);
}
@@ -3236,14 +3264,14 @@ void HP_chr_send_wait_char_server(int fd) {
int HP_chr_search_default_maps_mapserver(struct mmo_charstatus *cd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_search_default_maps_mapserver_pre ) {
+ if (HPMHooks.count.HP_chr_search_default_maps_mapserver_pre > 0) {
int (*preHookFunc) (struct mmo_charstatus **cd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_search_default_maps_mapserver_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_search_default_maps_mapserver_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_search_default_maps_mapserver_pre[hIndex].func;
retVal___ = preHookFunc(&cd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3251,9 +3279,9 @@ int HP_chr_search_default_maps_mapserver(struct mmo_charstatus *cd) {
{
retVal___ = HPMHooks.source.chr.search_default_maps_mapserver(cd);
}
- if( HPMHooks.count.HP_chr_search_default_maps_mapserver_post ) {
+ if (HPMHooks.count.HP_chr_search_default_maps_mapserver_post > 0) {
int (*postHookFunc) (int retVal___, struct mmo_charstatus *cd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_search_default_maps_mapserver_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_search_default_maps_mapserver_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_search_default_maps_mapserver_post[hIndex].func;
retVal___ = postHookFunc(retVal___, cd);
}
@@ -3262,14 +3290,14 @@ int HP_chr_search_default_maps_mapserver(struct mmo_charstatus *cd) {
}
void HP_chr_parse_char_select(int fd, struct char_session_data *sd, uint32 ipl) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_char_select_pre ) {
+ if (HPMHooks.count.HP_chr_parse_char_select_pre > 0) {
void (*preHookFunc) (int *fd, struct char_session_data **sd, uint32 *ipl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_select_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_select_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_char_select_pre[hIndex].func;
preHookFunc(&fd, &sd, &ipl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3277,9 +3305,9 @@ void HP_chr_parse_char_select(int fd, struct char_session_data *sd, uint32 ipl)
{
HPMHooks.source.chr.parse_char_select(fd, sd, ipl);
}
- if( HPMHooks.count.HP_chr_parse_char_select_post ) {
+ if (HPMHooks.count.HP_chr_parse_char_select_post > 0) {
void (*postHookFunc) (int fd, struct char_session_data *sd, uint32 ipl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_select_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_select_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_char_select_post[hIndex].func;
postHookFunc(fd, sd, ipl);
}
@@ -3288,14 +3316,14 @@ void HP_chr_parse_char_select(int fd, struct char_session_data *sd, uint32 ipl)
}
void HP_chr_creation_failed(int fd, int result) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_creation_failed_pre ) {
+ if (HPMHooks.count.HP_chr_creation_failed_pre > 0) {
void (*preHookFunc) (int *fd, int *result);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_creation_failed_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_creation_failed_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_creation_failed_pre[hIndex].func;
preHookFunc(&fd, &result);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3303,9 +3331,9 @@ void HP_chr_creation_failed(int fd, int result) {
{
HPMHooks.source.chr.creation_failed(fd, result);
}
- if( HPMHooks.count.HP_chr_creation_failed_post ) {
+ if (HPMHooks.count.HP_chr_creation_failed_post > 0) {
void (*postHookFunc) (int fd, int result);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_creation_failed_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_creation_failed_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_creation_failed_post[hIndex].func;
postHookFunc(fd, result);
}
@@ -3314,14 +3342,14 @@ void HP_chr_creation_failed(int fd, int result) {
}
void HP_chr_creation_ok(int fd, struct mmo_charstatus *char_dat) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_creation_ok_pre ) {
+ if (HPMHooks.count.HP_chr_creation_ok_pre > 0) {
void (*preHookFunc) (int *fd, struct mmo_charstatus **char_dat);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_creation_ok_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_creation_ok_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_creation_ok_pre[hIndex].func;
preHookFunc(&fd, &char_dat);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3329,9 +3357,9 @@ void HP_chr_creation_ok(int fd, struct mmo_charstatus *char_dat) {
{
HPMHooks.source.chr.creation_ok(fd, char_dat);
}
- if( HPMHooks.count.HP_chr_creation_ok_post ) {
+ if (HPMHooks.count.HP_chr_creation_ok_post > 0) {
void (*postHookFunc) (int fd, struct mmo_charstatus *char_dat);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_creation_ok_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_creation_ok_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_creation_ok_post[hIndex].func;
postHookFunc(fd, char_dat);
}
@@ -3340,14 +3368,14 @@ void HP_chr_creation_ok(int fd, struct mmo_charstatus *char_dat) {
}
void HP_chr_parse_char_create_new_char(int fd, struct char_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_char_create_new_char_pre ) {
+ if (HPMHooks.count.HP_chr_parse_char_create_new_char_pre > 0) {
void (*preHookFunc) (int *fd, struct char_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_create_new_char_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_create_new_char_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_char_create_new_char_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3355,9 +3383,9 @@ void HP_chr_parse_char_create_new_char(int fd, struct char_session_data *sd) {
{
HPMHooks.source.chr.parse_char_create_new_char(fd, sd);
}
- if( HPMHooks.count.HP_chr_parse_char_create_new_char_post ) {
+ if (HPMHooks.count.HP_chr_parse_char_create_new_char_post > 0) {
void (*postHookFunc) (int fd, struct char_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_create_new_char_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_create_new_char_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_char_create_new_char_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -3366,14 +3394,14 @@ void HP_chr_parse_char_create_new_char(int fd, struct char_session_data *sd) {
}
void HP_chr_delete_char_failed(int fd, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_delete_char_failed_pre ) {
+ if (HPMHooks.count.HP_chr_delete_char_failed_pre > 0) {
void (*preHookFunc) (int *fd, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete_char_failed_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete_char_failed_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_delete_char_failed_pre[hIndex].func;
preHookFunc(&fd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3381,9 +3409,9 @@ void HP_chr_delete_char_failed(int fd, int flag) {
{
HPMHooks.source.chr.delete_char_failed(fd, flag);
}
- if( HPMHooks.count.HP_chr_delete_char_failed_post ) {
+ if (HPMHooks.count.HP_chr_delete_char_failed_post > 0) {
void (*postHookFunc) (int fd, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete_char_failed_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete_char_failed_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_delete_char_failed_post[hIndex].func;
postHookFunc(fd, flag);
}
@@ -3392,14 +3420,14 @@ void HP_chr_delete_char_failed(int fd, int flag) {
}
void HP_chr_delete_char_ok(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_delete_char_ok_pre ) {
+ if (HPMHooks.count.HP_chr_delete_char_ok_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete_char_ok_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete_char_ok_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_delete_char_ok_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3407,9 +3435,9 @@ void HP_chr_delete_char_ok(int fd) {
{
HPMHooks.source.chr.delete_char_ok(fd);
}
- if( HPMHooks.count.HP_chr_delete_char_ok_post ) {
+ if (HPMHooks.count.HP_chr_delete_char_ok_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete_char_ok_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_delete_char_ok_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_delete_char_ok_post[hIndex].func;
postHookFunc(fd);
}
@@ -3418,14 +3446,14 @@ void HP_chr_delete_char_ok(int fd) {
}
void HP_chr_parse_char_delete_char(int fd, struct char_session_data *sd, unsigned short cmd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_char_delete_char_pre ) {
+ if (HPMHooks.count.HP_chr_parse_char_delete_char_pre > 0) {
void (*preHookFunc) (int *fd, struct char_session_data **sd, unsigned short *cmd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_delete_char_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_delete_char_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_char_delete_char_pre[hIndex].func;
preHookFunc(&fd, &sd, &cmd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3433,9 +3461,9 @@ void HP_chr_parse_char_delete_char(int fd, struct char_session_data *sd, unsigne
{
HPMHooks.source.chr.parse_char_delete_char(fd, sd, cmd);
}
- if( HPMHooks.count.HP_chr_parse_char_delete_char_post ) {
+ if (HPMHooks.count.HP_chr_parse_char_delete_char_post > 0) {
void (*postHookFunc) (int fd, struct char_session_data *sd, unsigned short cmd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_delete_char_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_delete_char_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_char_delete_char_post[hIndex].func;
postHookFunc(fd, sd, cmd);
}
@@ -3444,14 +3472,14 @@ void HP_chr_parse_char_delete_char(int fd, struct char_session_data *sd, unsigne
}
void HP_chr_parse_char_ping(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_char_ping_pre ) {
+ if (HPMHooks.count.HP_chr_parse_char_ping_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_ping_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_ping_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_char_ping_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3459,9 +3487,9 @@ void HP_chr_parse_char_ping(int fd) {
{
HPMHooks.source.chr.parse_char_ping(fd);
}
- if( HPMHooks.count.HP_chr_parse_char_ping_post ) {
+ if (HPMHooks.count.HP_chr_parse_char_ping_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_ping_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_ping_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_char_ping_post[hIndex].func;
postHookFunc(fd);
}
@@ -3470,14 +3498,14 @@ void HP_chr_parse_char_ping(int fd) {
}
void HP_chr_allow_rename(int fd, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_allow_rename_pre ) {
+ if (HPMHooks.count.HP_chr_allow_rename_pre > 0) {
void (*preHookFunc) (int *fd, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_allow_rename_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_allow_rename_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_allow_rename_pre[hIndex].func;
preHookFunc(&fd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3485,9 +3513,9 @@ void HP_chr_allow_rename(int fd, int flag) {
{
HPMHooks.source.chr.allow_rename(fd, flag);
}
- if( HPMHooks.count.HP_chr_allow_rename_post ) {
+ if (HPMHooks.count.HP_chr_allow_rename_post > 0) {
void (*postHookFunc) (int fd, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_allow_rename_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_allow_rename_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_allow_rename_post[hIndex].func;
postHookFunc(fd, flag);
}
@@ -3496,14 +3524,14 @@ void HP_chr_allow_rename(int fd, int flag) {
}
void HP_chr_parse_char_rename_char(int fd, struct char_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_char_rename_char_pre ) {
+ if (HPMHooks.count.HP_chr_parse_char_rename_char_pre > 0) {
void (*preHookFunc) (int *fd, struct char_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_rename_char_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_rename_char_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_char_rename_char_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3511,9 +3539,9 @@ void HP_chr_parse_char_rename_char(int fd, struct char_session_data *sd) {
{
HPMHooks.source.chr.parse_char_rename_char(fd, sd);
}
- if( HPMHooks.count.HP_chr_parse_char_rename_char_post ) {
+ if (HPMHooks.count.HP_chr_parse_char_rename_char_post > 0) {
void (*postHookFunc) (int fd, struct char_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_rename_char_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_rename_char_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_char_rename_char_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -3522,14 +3550,14 @@ void HP_chr_parse_char_rename_char(int fd, struct char_session_data *sd) {
}
void HP_chr_parse_char_rename_char2(int fd, struct char_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_char_rename_char2_pre ) {
+ if (HPMHooks.count.HP_chr_parse_char_rename_char2_pre > 0) {
void (*preHookFunc) (int *fd, struct char_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_rename_char2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_rename_char2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_char_rename_char2_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3537,9 +3565,9 @@ void HP_chr_parse_char_rename_char2(int fd, struct char_session_data *sd) {
{
HPMHooks.source.chr.parse_char_rename_char2(fd, sd);
}
- if( HPMHooks.count.HP_chr_parse_char_rename_char2_post ) {
+ if (HPMHooks.count.HP_chr_parse_char_rename_char2_post > 0) {
void (*postHookFunc) (int fd, struct char_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_rename_char2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_rename_char2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_char_rename_char2_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -3548,14 +3576,14 @@ void HP_chr_parse_char_rename_char2(int fd, struct char_session_data *sd) {
}
void HP_chr_rename_char_ack(int fd, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_rename_char_ack_pre ) {
+ if (HPMHooks.count.HP_chr_rename_char_ack_pre > 0) {
void (*preHookFunc) (int *fd, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_rename_char_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_rename_char_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_rename_char_ack_pre[hIndex].func;
preHookFunc(&fd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3563,9 +3591,9 @@ void HP_chr_rename_char_ack(int fd, int flag) {
{
HPMHooks.source.chr.rename_char_ack(fd, flag);
}
- if( HPMHooks.count.HP_chr_rename_char_ack_post ) {
+ if (HPMHooks.count.HP_chr_rename_char_ack_post > 0) {
void (*postHookFunc) (int fd, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_rename_char_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_rename_char_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_rename_char_ack_post[hIndex].func;
postHookFunc(fd, flag);
}
@@ -3574,14 +3602,14 @@ void HP_chr_rename_char_ack(int fd, int flag) {
}
void HP_chr_parse_char_rename_char_confirm(int fd, struct char_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_char_rename_char_confirm_pre ) {
+ if (HPMHooks.count.HP_chr_parse_char_rename_char_confirm_pre > 0) {
void (*preHookFunc) (int *fd, struct char_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_rename_char_confirm_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_rename_char_confirm_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_char_rename_char_confirm_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3589,9 +3617,9 @@ void HP_chr_parse_char_rename_char_confirm(int fd, struct char_session_data *sd)
{
HPMHooks.source.chr.parse_char_rename_char_confirm(fd, sd);
}
- if( HPMHooks.count.HP_chr_parse_char_rename_char_confirm_post ) {
+ if (HPMHooks.count.HP_chr_parse_char_rename_char_confirm_post > 0) {
void (*postHookFunc) (int fd, struct char_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_rename_char_confirm_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_rename_char_confirm_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_char_rename_char_confirm_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -3600,14 +3628,14 @@ void HP_chr_parse_char_rename_char_confirm(int fd, struct char_session_data *sd)
}
void HP_chr_captcha_notsupported(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_captcha_notsupported_pre ) {
+ if (HPMHooks.count.HP_chr_captcha_notsupported_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_captcha_notsupported_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_captcha_notsupported_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_captcha_notsupported_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3615,9 +3643,9 @@ void HP_chr_captcha_notsupported(int fd) {
{
HPMHooks.source.chr.captcha_notsupported(fd);
}
- if( HPMHooks.count.HP_chr_captcha_notsupported_post ) {
+ if (HPMHooks.count.HP_chr_captcha_notsupported_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_captcha_notsupported_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_captcha_notsupported_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_captcha_notsupported_post[hIndex].func;
postHookFunc(fd);
}
@@ -3626,14 +3654,14 @@ void HP_chr_captcha_notsupported(int fd) {
}
void HP_chr_parse_char_request_captcha(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_char_request_captcha_pre ) {
+ if (HPMHooks.count.HP_chr_parse_char_request_captcha_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_request_captcha_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_request_captcha_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_char_request_captcha_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3641,9 +3669,9 @@ void HP_chr_parse_char_request_captcha(int fd) {
{
HPMHooks.source.chr.parse_char_request_captcha(fd);
}
- if( HPMHooks.count.HP_chr_parse_char_request_captcha_post ) {
+ if (HPMHooks.count.HP_chr_parse_char_request_captcha_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_request_captcha_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_request_captcha_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_char_request_captcha_post[hIndex].func;
postHookFunc(fd);
}
@@ -3652,14 +3680,14 @@ void HP_chr_parse_char_request_captcha(int fd) {
}
void HP_chr_parse_char_check_captcha(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_char_check_captcha_pre ) {
+ if (HPMHooks.count.HP_chr_parse_char_check_captcha_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_check_captcha_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_check_captcha_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_char_check_captcha_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3667,9 +3695,9 @@ void HP_chr_parse_char_check_captcha(int fd) {
{
HPMHooks.source.chr.parse_char_check_captcha(fd);
}
- if( HPMHooks.count.HP_chr_parse_char_check_captcha_post ) {
+ if (HPMHooks.count.HP_chr_parse_char_check_captcha_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_check_captcha_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_check_captcha_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_char_check_captcha_post[hIndex].func;
postHookFunc(fd);
}
@@ -3678,14 +3706,14 @@ void HP_chr_parse_char_check_captcha(int fd) {
}
void HP_chr_parse_char_delete2_req(int fd, struct char_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_char_delete2_req_pre ) {
+ if (HPMHooks.count.HP_chr_parse_char_delete2_req_pre > 0) {
void (*preHookFunc) (int *fd, struct char_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_delete2_req_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_delete2_req_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_char_delete2_req_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3693,9 +3721,9 @@ void HP_chr_parse_char_delete2_req(int fd, struct char_session_data *sd) {
{
HPMHooks.source.chr.parse_char_delete2_req(fd, sd);
}
- if( HPMHooks.count.HP_chr_parse_char_delete2_req_post ) {
+ if (HPMHooks.count.HP_chr_parse_char_delete2_req_post > 0) {
void (*postHookFunc) (int fd, struct char_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_delete2_req_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_delete2_req_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_char_delete2_req_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -3704,14 +3732,14 @@ void HP_chr_parse_char_delete2_req(int fd, struct char_session_data *sd) {
}
void HP_chr_parse_char_delete2_accept(int fd, struct char_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_char_delete2_accept_pre ) {
+ if (HPMHooks.count.HP_chr_parse_char_delete2_accept_pre > 0) {
void (*preHookFunc) (int *fd, struct char_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_delete2_accept_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_delete2_accept_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_char_delete2_accept_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3719,9 +3747,9 @@ void HP_chr_parse_char_delete2_accept(int fd, struct char_session_data *sd) {
{
HPMHooks.source.chr.parse_char_delete2_accept(fd, sd);
}
- if( HPMHooks.count.HP_chr_parse_char_delete2_accept_post ) {
+ if (HPMHooks.count.HP_chr_parse_char_delete2_accept_post > 0) {
void (*postHookFunc) (int fd, struct char_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_delete2_accept_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_delete2_accept_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_char_delete2_accept_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -3730,14 +3758,14 @@ void HP_chr_parse_char_delete2_accept(int fd, struct char_session_data *sd) {
}
void HP_chr_parse_char_delete2_cancel(int fd, struct char_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_char_delete2_cancel_pre ) {
+ if (HPMHooks.count.HP_chr_parse_char_delete2_cancel_pre > 0) {
void (*preHookFunc) (int *fd, struct char_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_delete2_cancel_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_delete2_cancel_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_char_delete2_cancel_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3745,9 +3773,9 @@ void HP_chr_parse_char_delete2_cancel(int fd, struct char_session_data *sd) {
{
HPMHooks.source.chr.parse_char_delete2_cancel(fd, sd);
}
- if( HPMHooks.count.HP_chr_parse_char_delete2_cancel_post ) {
+ if (HPMHooks.count.HP_chr_parse_char_delete2_cancel_post > 0) {
void (*postHookFunc) (int fd, struct char_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_delete2_cancel_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_delete2_cancel_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_char_delete2_cancel_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -3756,14 +3784,14 @@ void HP_chr_parse_char_delete2_cancel(int fd, struct char_session_data *sd) {
}
void HP_chr_login_map_server_ack(int fd, uint8 flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_login_map_server_ack_pre ) {
+ if (HPMHooks.count.HP_chr_login_map_server_ack_pre > 0) {
void (*preHookFunc) (int *fd, uint8 *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_login_map_server_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_login_map_server_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_login_map_server_ack_pre[hIndex].func;
preHookFunc(&fd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3771,9 +3799,9 @@ void HP_chr_login_map_server_ack(int fd, uint8 flag) {
{
HPMHooks.source.chr.login_map_server_ack(fd, flag);
}
- if( HPMHooks.count.HP_chr_login_map_server_ack_post ) {
+ if (HPMHooks.count.HP_chr_login_map_server_ack_post > 0) {
void (*postHookFunc) (int fd, uint8 flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_login_map_server_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_login_map_server_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_login_map_server_ack_post[hIndex].func;
postHookFunc(fd, flag);
}
@@ -3782,14 +3810,14 @@ void HP_chr_login_map_server_ack(int fd, uint8 flag) {
}
void HP_chr_parse_char_login_map_server(int fd, uint32 ipl) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_char_login_map_server_pre ) {
+ if (HPMHooks.count.HP_chr_parse_char_login_map_server_pre > 0) {
void (*preHookFunc) (int *fd, uint32 *ipl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_login_map_server_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_login_map_server_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_char_login_map_server_pre[hIndex].func;
preHookFunc(&fd, &ipl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3797,9 +3825,9 @@ void HP_chr_parse_char_login_map_server(int fd, uint32 ipl) {
{
HPMHooks.source.chr.parse_char_login_map_server(fd, ipl);
}
- if( HPMHooks.count.HP_chr_parse_char_login_map_server_post ) {
+ if (HPMHooks.count.HP_chr_parse_char_login_map_server_post > 0) {
void (*postHookFunc) (int fd, uint32 ipl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_login_map_server_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_login_map_server_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_char_login_map_server_post[hIndex].func;
postHookFunc(fd, ipl);
}
@@ -3808,14 +3836,14 @@ void HP_chr_parse_char_login_map_server(int fd, uint32 ipl) {
}
void HP_chr_parse_char_pincode_check(int fd, struct char_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_char_pincode_check_pre ) {
+ if (HPMHooks.count.HP_chr_parse_char_pincode_check_pre > 0) {
void (*preHookFunc) (int *fd, struct char_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_pincode_check_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_pincode_check_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_char_pincode_check_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3823,9 +3851,9 @@ void HP_chr_parse_char_pincode_check(int fd, struct char_session_data *sd) {
{
HPMHooks.source.chr.parse_char_pincode_check(fd, sd);
}
- if( HPMHooks.count.HP_chr_parse_char_pincode_check_post ) {
+ if (HPMHooks.count.HP_chr_parse_char_pincode_check_post > 0) {
void (*postHookFunc) (int fd, struct char_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_pincode_check_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_pincode_check_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_char_pincode_check_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -3834,14 +3862,14 @@ void HP_chr_parse_char_pincode_check(int fd, struct char_session_data *sd) {
}
void HP_chr_parse_char_pincode_window(int fd, struct char_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_char_pincode_window_pre ) {
+ if (HPMHooks.count.HP_chr_parse_char_pincode_window_pre > 0) {
void (*preHookFunc) (int *fd, struct char_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_pincode_window_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_pincode_window_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_char_pincode_window_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3849,9 +3877,9 @@ void HP_chr_parse_char_pincode_window(int fd, struct char_session_data *sd) {
{
HPMHooks.source.chr.parse_char_pincode_window(fd, sd);
}
- if( HPMHooks.count.HP_chr_parse_char_pincode_window_post ) {
+ if (HPMHooks.count.HP_chr_parse_char_pincode_window_post > 0) {
void (*postHookFunc) (int fd, struct char_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_pincode_window_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_pincode_window_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_char_pincode_window_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -3860,14 +3888,14 @@ void HP_chr_parse_char_pincode_window(int fd, struct char_session_data *sd) {
}
void HP_chr_parse_char_pincode_change(int fd, struct char_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_char_pincode_change_pre ) {
+ if (HPMHooks.count.HP_chr_parse_char_pincode_change_pre > 0) {
void (*preHookFunc) (int *fd, struct char_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_pincode_change_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_pincode_change_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_char_pincode_change_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3875,9 +3903,9 @@ void HP_chr_parse_char_pincode_change(int fd, struct char_session_data *sd) {
{
HPMHooks.source.chr.parse_char_pincode_change(fd, sd);
}
- if( HPMHooks.count.HP_chr_parse_char_pincode_change_post ) {
+ if (HPMHooks.count.HP_chr_parse_char_pincode_change_post > 0) {
void (*postHookFunc) (int fd, struct char_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_pincode_change_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_pincode_change_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_char_pincode_change_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -3886,14 +3914,14 @@ void HP_chr_parse_char_pincode_change(int fd, struct char_session_data *sd) {
}
void HP_chr_parse_char_pincode_first_pin(int fd, struct char_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_char_pincode_first_pin_pre ) {
+ if (HPMHooks.count.HP_chr_parse_char_pincode_first_pin_pre > 0) {
void (*preHookFunc) (int *fd, struct char_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_pincode_first_pin_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_pincode_first_pin_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_char_pincode_first_pin_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3901,9 +3929,9 @@ void HP_chr_parse_char_pincode_first_pin(int fd, struct char_session_data *sd) {
{
HPMHooks.source.chr.parse_char_pincode_first_pin(fd, sd);
}
- if( HPMHooks.count.HP_chr_parse_char_pincode_first_pin_post ) {
+ if (HPMHooks.count.HP_chr_parse_char_pincode_first_pin_post > 0) {
void (*postHookFunc) (int fd, struct char_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_pincode_first_pin_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_pincode_first_pin_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_char_pincode_first_pin_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -3912,14 +3940,14 @@ void HP_chr_parse_char_pincode_first_pin(int fd, struct char_session_data *sd) {
}
void HP_chr_parse_char_request_chars(int fd, struct char_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_char_request_chars_pre ) {
+ if (HPMHooks.count.HP_chr_parse_char_request_chars_pre > 0) {
void (*preHookFunc) (int *fd, struct char_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_request_chars_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_request_chars_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_char_request_chars_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3927,9 +3955,9 @@ void HP_chr_parse_char_request_chars(int fd, struct char_session_data *sd) {
{
HPMHooks.source.chr.parse_char_request_chars(fd, sd);
}
- if( HPMHooks.count.HP_chr_parse_char_request_chars_post ) {
+ if (HPMHooks.count.HP_chr_parse_char_request_chars_post > 0) {
void (*postHookFunc) (int fd, struct char_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_request_chars_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_request_chars_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_char_request_chars_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -3938,14 +3966,14 @@ void HP_chr_parse_char_request_chars(int fd, struct char_session_data *sd) {
}
void HP_chr_change_character_slot_ack(int fd, bool ret) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_change_character_slot_ack_pre ) {
+ if (HPMHooks.count.HP_chr_change_character_slot_ack_pre > 0) {
void (*preHookFunc) (int *fd, bool *ret);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_change_character_slot_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_change_character_slot_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_change_character_slot_ack_pre[hIndex].func;
preHookFunc(&fd, &ret);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3953,9 +3981,9 @@ void HP_chr_change_character_slot_ack(int fd, bool ret) {
{
HPMHooks.source.chr.change_character_slot_ack(fd, ret);
}
- if( HPMHooks.count.HP_chr_change_character_slot_ack_post ) {
+ if (HPMHooks.count.HP_chr_change_character_slot_ack_post > 0) {
void (*postHookFunc) (int fd, bool ret);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_change_character_slot_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_change_character_slot_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_change_character_slot_ack_post[hIndex].func;
postHookFunc(fd, ret);
}
@@ -3964,14 +3992,14 @@ void HP_chr_change_character_slot_ack(int fd, bool ret) {
}
void HP_chr_parse_char_move_character(int fd, struct char_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_parse_char_move_character_pre ) {
+ if (HPMHooks.count.HP_chr_parse_char_move_character_pre > 0) {
void (*preHookFunc) (int *fd, struct char_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_move_character_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_move_character_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_char_move_character_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3979,9 +4007,9 @@ void HP_chr_parse_char_move_character(int fd, struct char_session_data *sd) {
{
HPMHooks.source.chr.parse_char_move_character(fd, sd);
}
- if( HPMHooks.count.HP_chr_parse_char_move_character_post ) {
+ if (HPMHooks.count.HP_chr_parse_char_move_character_post > 0) {
void (*postHookFunc) (int fd, struct char_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_move_character_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_move_character_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_char_move_character_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -3991,14 +4019,14 @@ void HP_chr_parse_char_move_character(int fd, struct char_session_data *sd) {
int HP_chr_parse_char_unknown_packet(int fd, uint32 ipl) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_parse_char_unknown_packet_pre ) {
+ if (HPMHooks.count.HP_chr_parse_char_unknown_packet_pre > 0) {
int (*preHookFunc) (int *fd, uint32 *ipl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_unknown_packet_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_unknown_packet_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_char_unknown_packet_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &ipl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4006,9 +4034,9 @@ int HP_chr_parse_char_unknown_packet(int fd, uint32 ipl) {
{
retVal___ = HPMHooks.source.chr.parse_char_unknown_packet(fd, ipl);
}
- if( HPMHooks.count.HP_chr_parse_char_unknown_packet_post ) {
+ if (HPMHooks.count.HP_chr_parse_char_unknown_packet_post > 0) {
int (*postHookFunc) (int retVal___, int fd, uint32 ipl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_unknown_packet_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_unknown_packet_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_char_unknown_packet_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, ipl);
}
@@ -4018,14 +4046,14 @@ int HP_chr_parse_char_unknown_packet(int fd, uint32 ipl) {
int HP_chr_parse_char(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_parse_char_pre ) {
+ if (HPMHooks.count.HP_chr_parse_char_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_parse_char_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4033,9 +4061,9 @@ int HP_chr_parse_char(int fd) {
{
retVal___ = HPMHooks.source.chr.parse_char(fd);
}
- if( HPMHooks.count.HP_chr_parse_char_post ) {
+ if (HPMHooks.count.HP_chr_parse_char_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_parse_char_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_parse_char_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -4045,14 +4073,14 @@ int HP_chr_parse_char(int fd) {
int HP_chr_broadcast_user_count(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_broadcast_user_count_pre ) {
+ if (HPMHooks.count.HP_chr_broadcast_user_count_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_broadcast_user_count_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_broadcast_user_count_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_broadcast_user_count_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4060,9 +4088,9 @@ int HP_chr_broadcast_user_count(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.chr.broadcast_user_count(tid, tick, id, data);
}
- if( HPMHooks.count.HP_chr_broadcast_user_count_post ) {
+ if (HPMHooks.count.HP_chr_broadcast_user_count_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_broadcast_user_count_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_broadcast_user_count_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_broadcast_user_count_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -4072,16 +4100,16 @@ int HP_chr_broadcast_user_count(int tid, int64 tick, int id, intptr_t data) {
int HP_chr_send_accounts_tologin_sub(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_send_accounts_tologin_sub_pre ) {
+ if (HPMHooks.count.HP_chr_send_accounts_tologin_sub_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_accounts_tologin_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_accounts_tologin_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_chr_send_accounts_tologin_sub_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4091,9 +4119,9 @@ int HP_chr_send_accounts_tologin_sub(union DBKey key, struct DBData *data, va_li
retVal___ = HPMHooks.source.chr.send_accounts_tologin_sub(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_chr_send_accounts_tologin_sub_post ) {
+ if (HPMHooks.count.HP_chr_send_accounts_tologin_sub_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_accounts_tologin_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_accounts_tologin_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_chr_send_accounts_tologin_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -4105,14 +4133,14 @@ int HP_chr_send_accounts_tologin_sub(union DBKey key, struct DBData *data, va_li
int HP_chr_send_accounts_tologin(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_send_accounts_tologin_pre ) {
+ if (HPMHooks.count.HP_chr_send_accounts_tologin_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_accounts_tologin_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_accounts_tologin_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_send_accounts_tologin_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4120,9 +4148,9 @@ int HP_chr_send_accounts_tologin(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.chr.send_accounts_tologin(tid, tick, id, data);
}
- if( HPMHooks.count.HP_chr_send_accounts_tologin_post ) {
+ if (HPMHooks.count.HP_chr_send_accounts_tologin_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_accounts_tologin_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_accounts_tologin_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_send_accounts_tologin_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -4132,14 +4160,14 @@ int HP_chr_send_accounts_tologin(int tid, int64 tick, int id, intptr_t data) {
int HP_chr_check_connect_login_server(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_check_connect_login_server_pre ) {
+ if (HPMHooks.count.HP_chr_check_connect_login_server_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_check_connect_login_server_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_check_connect_login_server_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_check_connect_login_server_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4147,9 +4175,9 @@ int HP_chr_check_connect_login_server(int tid, int64 tick, int id, intptr_t data
{
retVal___ = HPMHooks.source.chr.check_connect_login_server(tid, tick, id, data);
}
- if( HPMHooks.count.HP_chr_check_connect_login_server_post ) {
+ if (HPMHooks.count.HP_chr_check_connect_login_server_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_check_connect_login_server_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_check_connect_login_server_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_check_connect_login_server_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -4159,16 +4187,16 @@ int HP_chr_check_connect_login_server(int tid, int64 tick, int id, intptr_t data
int HP_chr_online_data_cleanup_sub(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_online_data_cleanup_sub_pre ) {
+ if (HPMHooks.count.HP_chr_online_data_cleanup_sub_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_online_data_cleanup_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_online_data_cleanup_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_chr_online_data_cleanup_sub_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4178,9 +4206,9 @@ int HP_chr_online_data_cleanup_sub(union DBKey key, struct DBData *data, va_list
retVal___ = HPMHooks.source.chr.online_data_cleanup_sub(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_chr_online_data_cleanup_sub_post ) {
+ if (HPMHooks.count.HP_chr_online_data_cleanup_sub_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_online_data_cleanup_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_online_data_cleanup_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_chr_online_data_cleanup_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -4192,14 +4220,14 @@ int HP_chr_online_data_cleanup_sub(union DBKey key, struct DBData *data, va_list
int HP_chr_online_data_cleanup(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chr_online_data_cleanup_pre ) {
+ if (HPMHooks.count.HP_chr_online_data_cleanup_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_online_data_cleanup_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_online_data_cleanup_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_online_data_cleanup_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4207,9 +4235,9 @@ int HP_chr_online_data_cleanup(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.chr.online_data_cleanup(tid, tick, id, data);
}
- if( HPMHooks.count.HP_chr_online_data_cleanup_post ) {
+ if (HPMHooks.count.HP_chr_online_data_cleanup_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_online_data_cleanup_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_online_data_cleanup_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_online_data_cleanup_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -4219,14 +4247,14 @@ int HP_chr_online_data_cleanup(int tid, int64 tick, int id, intptr_t data) {
bool HP_chr_sql_config_read(const char *filename, bool imported) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chr_sql_config_read_pre ) {
+ if (HPMHooks.count.HP_chr_sql_config_read_pre > 0) {
bool (*preHookFunc) (const char **filename, bool *imported);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_sql_config_read_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_sql_config_read_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_sql_config_read_pre[hIndex].func;
retVal___ = preHookFunc(&filename, &imported);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4234,9 +4262,9 @@ bool HP_chr_sql_config_read(const char *filename, bool imported) {
{
retVal___ = HPMHooks.source.chr.sql_config_read(filename, imported);
}
- if( HPMHooks.count.HP_chr_sql_config_read_post ) {
+ if (HPMHooks.count.HP_chr_sql_config_read_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *filename, bool imported);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_sql_config_read_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_sql_config_read_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_sql_config_read_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename, imported);
}
@@ -4246,14 +4274,14 @@ bool HP_chr_sql_config_read(const char *filename, bool imported) {
bool HP_chr_sql_config_read_registry(const char *filename, const struct config_t *config, bool imported) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chr_sql_config_read_registry_pre ) {
+ if (HPMHooks.count.HP_chr_sql_config_read_registry_pre > 0) {
bool (*preHookFunc) (const char **filename, const struct config_t **config, bool *imported);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_sql_config_read_registry_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_sql_config_read_registry_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_sql_config_read_registry_pre[hIndex].func;
retVal___ = preHookFunc(&filename, &config, &imported);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4261,9 +4289,9 @@ bool HP_chr_sql_config_read_registry(const char *filename, const struct config_t
{
retVal___ = HPMHooks.source.chr.sql_config_read_registry(filename, config, imported);
}
- if( HPMHooks.count.HP_chr_sql_config_read_registry_post ) {
+ if (HPMHooks.count.HP_chr_sql_config_read_registry_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *filename, const struct config_t *config, bool imported);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_sql_config_read_registry_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_sql_config_read_registry_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_sql_config_read_registry_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename, config, imported);
}
@@ -4273,14 +4301,14 @@ bool HP_chr_sql_config_read_registry(const char *filename, const struct config_t
bool HP_chr_sql_config_read_pc(const char *filename, const struct config_t *config, bool imported) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chr_sql_config_read_pc_pre ) {
+ if (HPMHooks.count.HP_chr_sql_config_read_pc_pre > 0) {
bool (*preHookFunc) (const char **filename, const struct config_t **config, bool *imported);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_sql_config_read_pc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_sql_config_read_pc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_sql_config_read_pc_pre[hIndex].func;
retVal___ = preHookFunc(&filename, &config, &imported);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4288,9 +4316,9 @@ bool HP_chr_sql_config_read_pc(const char *filename, const struct config_t *conf
{
retVal___ = HPMHooks.source.chr.sql_config_read_pc(filename, config, imported);
}
- if( HPMHooks.count.HP_chr_sql_config_read_pc_post ) {
+ if (HPMHooks.count.HP_chr_sql_config_read_pc_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *filename, const struct config_t *config, bool imported);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_sql_config_read_pc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_sql_config_read_pc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_sql_config_read_pc_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename, config, imported);
}
@@ -4300,14 +4328,14 @@ bool HP_chr_sql_config_read_pc(const char *filename, const struct config_t *conf
bool HP_chr_sql_config_read_guild(const char *filename, const struct config_t *config, bool imported) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chr_sql_config_read_guild_pre ) {
+ if (HPMHooks.count.HP_chr_sql_config_read_guild_pre > 0) {
bool (*preHookFunc) (const char **filename, const struct config_t **config, bool *imported);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_sql_config_read_guild_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_sql_config_read_guild_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_sql_config_read_guild_pre[hIndex].func;
retVal___ = preHookFunc(&filename, &config, &imported);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4315,9 +4343,9 @@ bool HP_chr_sql_config_read_guild(const char *filename, const struct config_t *c
{
retVal___ = HPMHooks.source.chr.sql_config_read_guild(filename, config, imported);
}
- if( HPMHooks.count.HP_chr_sql_config_read_guild_post ) {
+ if (HPMHooks.count.HP_chr_sql_config_read_guild_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *filename, const struct config_t *config, bool imported);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_sql_config_read_guild_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_sql_config_read_guild_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_sql_config_read_guild_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename, config, imported);
}
@@ -4327,14 +4355,14 @@ bool HP_chr_sql_config_read_guild(const char *filename, const struct config_t *c
bool HP_chr_config_read(const char *filename, bool imported) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chr_config_read_pre ) {
+ if (HPMHooks.count.HP_chr_config_read_pre > 0) {
bool (*preHookFunc) (const char **filename, bool *imported);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_config_read_pre[hIndex].func;
retVal___ = preHookFunc(&filename, &imported);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4342,9 +4370,9 @@ bool HP_chr_config_read(const char *filename, bool imported) {
{
retVal___ = HPMHooks.source.chr.config_read(filename, imported);
}
- if( HPMHooks.count.HP_chr_config_read_post ) {
+ if (HPMHooks.count.HP_chr_config_read_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *filename, bool imported);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_config_read_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename, imported);
}
@@ -4354,14 +4382,14 @@ bool HP_chr_config_read(const char *filename, bool imported) {
bool HP_chr_config_read_database(const char *filename, const struct config_t *config, bool imported) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chr_config_read_database_pre ) {
+ if (HPMHooks.count.HP_chr_config_read_database_pre > 0) {
bool (*preHookFunc) (const char **filename, const struct config_t **config, bool *imported);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_database_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_database_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_config_read_database_pre[hIndex].func;
retVal___ = preHookFunc(&filename, &config, &imported);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4369,9 +4397,9 @@ bool HP_chr_config_read_database(const char *filename, const struct config_t *co
{
retVal___ = HPMHooks.source.chr.config_read_database(filename, config, imported);
}
- if( HPMHooks.count.HP_chr_config_read_database_post ) {
+ if (HPMHooks.count.HP_chr_config_read_database_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *filename, const struct config_t *config, bool imported);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_database_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_database_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_config_read_database_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename, config, imported);
}
@@ -4381,14 +4409,14 @@ bool HP_chr_config_read_database(const char *filename, const struct config_t *co
bool HP_chr_config_read_console(const char *filename, const struct config_t *config, bool imported) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chr_config_read_console_pre ) {
+ if (HPMHooks.count.HP_chr_config_read_console_pre > 0) {
bool (*preHookFunc) (const char **filename, const struct config_t **config, bool *imported);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_console_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_console_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_config_read_console_pre[hIndex].func;
retVal___ = preHookFunc(&filename, &config, &imported);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4396,9 +4424,9 @@ bool HP_chr_config_read_console(const char *filename, const struct config_t *con
{
retVal___ = HPMHooks.source.chr.config_read_console(filename, config, imported);
}
- if( HPMHooks.count.HP_chr_config_read_console_post ) {
+ if (HPMHooks.count.HP_chr_config_read_console_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *filename, const struct config_t *config, bool imported);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_console_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_console_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_config_read_console_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename, config, imported);
}
@@ -4408,14 +4436,14 @@ bool HP_chr_config_read_console(const char *filename, const struct config_t *con
bool HP_chr_config_read_player_fame(const char *filename, const struct config_t *config, bool imported) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chr_config_read_player_fame_pre ) {
+ if (HPMHooks.count.HP_chr_config_read_player_fame_pre > 0) {
bool (*preHookFunc) (const char **filename, const struct config_t **config, bool *imported);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_player_fame_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_player_fame_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_config_read_player_fame_pre[hIndex].func;
retVal___ = preHookFunc(&filename, &config, &imported);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4423,9 +4451,9 @@ bool HP_chr_config_read_player_fame(const char *filename, const struct config_t
{
retVal___ = HPMHooks.source.chr.config_read_player_fame(filename, config, imported);
}
- if( HPMHooks.count.HP_chr_config_read_player_fame_post ) {
+ if (HPMHooks.count.HP_chr_config_read_player_fame_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *filename, const struct config_t *config, bool imported);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_player_fame_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_player_fame_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_config_read_player_fame_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename, config, imported);
}
@@ -4435,14 +4463,14 @@ bool HP_chr_config_read_player_fame(const char *filename, const struct config_t
bool HP_chr_config_read_player_deletion(const char *filename, const struct config_t *config, bool imported) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chr_config_read_player_deletion_pre ) {
+ if (HPMHooks.count.HP_chr_config_read_player_deletion_pre > 0) {
bool (*preHookFunc) (const char **filename, const struct config_t **config, bool *imported);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_player_deletion_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_player_deletion_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_config_read_player_deletion_pre[hIndex].func;
retVal___ = preHookFunc(&filename, &config, &imported);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4450,9 +4478,9 @@ bool HP_chr_config_read_player_deletion(const char *filename, const struct confi
{
retVal___ = HPMHooks.source.chr.config_read_player_deletion(filename, config, imported);
}
- if( HPMHooks.count.HP_chr_config_read_player_deletion_post ) {
+ if (HPMHooks.count.HP_chr_config_read_player_deletion_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *filename, const struct config_t *config, bool imported);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_player_deletion_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_player_deletion_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_config_read_player_deletion_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename, config, imported);
}
@@ -4462,14 +4490,14 @@ bool HP_chr_config_read_player_deletion(const char *filename, const struct confi
bool HP_chr_config_read_player_name(const char *filename, const struct config_t *config, bool imported) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chr_config_read_player_name_pre ) {
+ if (HPMHooks.count.HP_chr_config_read_player_name_pre > 0) {
bool (*preHookFunc) (const char **filename, const struct config_t **config, bool *imported);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_player_name_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_player_name_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_config_read_player_name_pre[hIndex].func;
retVal___ = preHookFunc(&filename, &config, &imported);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4477,9 +4505,9 @@ bool HP_chr_config_read_player_name(const char *filename, const struct config_t
{
retVal___ = HPMHooks.source.chr.config_read_player_name(filename, config, imported);
}
- if( HPMHooks.count.HP_chr_config_read_player_name_post ) {
+ if (HPMHooks.count.HP_chr_config_read_player_name_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *filename, const struct config_t *config, bool imported);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_player_name_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_player_name_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_config_read_player_name_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename, config, imported);
}
@@ -4488,14 +4516,14 @@ bool HP_chr_config_read_player_name(const char *filename, const struct config_t
}
void HP_chr_config_set_start_item(const struct config_setting_t *setting) {
int hIndex = 0;
- if( HPMHooks.count.HP_chr_config_set_start_item_pre ) {
+ if (HPMHooks.count.HP_chr_config_set_start_item_pre > 0) {
void (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_set_start_item_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_set_start_item_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_config_set_start_item_pre[hIndex].func;
preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4503,9 +4531,9 @@ void HP_chr_config_set_start_item(const struct config_setting_t *setting) {
{
HPMHooks.source.chr.config_set_start_item(setting);
}
- if( HPMHooks.count.HP_chr_config_set_start_item_post ) {
+ if (HPMHooks.count.HP_chr_config_set_start_item_post > 0) {
void (*postHookFunc) (const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_set_start_item_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_set_start_item_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_config_set_start_item_post[hIndex].func;
postHookFunc(setting);
}
@@ -4515,14 +4543,14 @@ void HP_chr_config_set_start_item(const struct config_setting_t *setting) {
bool HP_chr_config_read_player_new(const char *filename, const struct config_t *config, bool imported) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chr_config_read_player_new_pre ) {
+ if (HPMHooks.count.HP_chr_config_read_player_new_pre > 0) {
bool (*preHookFunc) (const char **filename, const struct config_t **config, bool *imported);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_player_new_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_player_new_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_config_read_player_new_pre[hIndex].func;
retVal___ = preHookFunc(&filename, &config, &imported);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4530,9 +4558,9 @@ bool HP_chr_config_read_player_new(const char *filename, const struct config_t *
{
retVal___ = HPMHooks.source.chr.config_read_player_new(filename, config, imported);
}
- if( HPMHooks.count.HP_chr_config_read_player_new_post ) {
+ if (HPMHooks.count.HP_chr_config_read_player_new_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *filename, const struct config_t *config, bool imported);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_player_new_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_player_new_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_config_read_player_new_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename, config, imported);
}
@@ -4542,14 +4570,14 @@ bool HP_chr_config_read_player_new(const char *filename, const struct config_t *
bool HP_chr_config_read_player(const char *filename, const struct config_t *config, bool imported) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chr_config_read_player_pre ) {
+ if (HPMHooks.count.HP_chr_config_read_player_pre > 0) {
bool (*preHookFunc) (const char **filename, const struct config_t **config, bool *imported);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_player_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_player_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_config_read_player_pre[hIndex].func;
retVal___ = preHookFunc(&filename, &config, &imported);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4557,9 +4585,9 @@ bool HP_chr_config_read_player(const char *filename, const struct config_t *conf
{
retVal___ = HPMHooks.source.chr.config_read_player(filename, config, imported);
}
- if( HPMHooks.count.HP_chr_config_read_player_post ) {
+ if (HPMHooks.count.HP_chr_config_read_player_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *filename, const struct config_t *config, bool imported);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_player_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_player_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_config_read_player_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename, config, imported);
}
@@ -4569,14 +4597,14 @@ bool HP_chr_config_read_player(const char *filename, const struct config_t *conf
bool HP_chr_config_read_permission(const char *filename, const struct config_t *config, bool imported) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chr_config_read_permission_pre ) {
+ if (HPMHooks.count.HP_chr_config_read_permission_pre > 0) {
bool (*preHookFunc) (const char **filename, const struct config_t **config, bool *imported);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_permission_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_permission_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_config_read_permission_pre[hIndex].func;
retVal___ = preHookFunc(&filename, &config, &imported);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4584,9 +4612,9 @@ bool HP_chr_config_read_permission(const char *filename, const struct config_t *
{
retVal___ = HPMHooks.source.chr.config_read_permission(filename, config, imported);
}
- if( HPMHooks.count.HP_chr_config_read_permission_post ) {
+ if (HPMHooks.count.HP_chr_config_read_permission_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *filename, const struct config_t *config, bool imported);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_permission_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_permission_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_config_read_permission_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename, config, imported);
}
@@ -4596,14 +4624,14 @@ bool HP_chr_config_read_permission(const char *filename, const struct config_t *
bool HP_chr_config_set_ip(const char *type, const char *value, uint32 *out_ip, char *out_ip_str) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chr_config_set_ip_pre ) {
+ if (HPMHooks.count.HP_chr_config_set_ip_pre > 0) {
bool (*preHookFunc) (const char **type, const char **value, uint32 **out_ip, char **out_ip_str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_set_ip_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_set_ip_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_config_set_ip_pre[hIndex].func;
retVal___ = preHookFunc(&type, &value, &out_ip, &out_ip_str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4611,9 +4639,9 @@ bool HP_chr_config_set_ip(const char *type, const char *value, uint32 *out_ip, c
{
retVal___ = HPMHooks.source.chr.config_set_ip(type, value, out_ip, out_ip_str);
}
- if( HPMHooks.count.HP_chr_config_set_ip_post ) {
+ if (HPMHooks.count.HP_chr_config_set_ip_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *type, const char *value, uint32 *out_ip, char *out_ip_str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_set_ip_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_set_ip_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_config_set_ip_post[hIndex].func;
retVal___ = postHookFunc(retVal___, type, value, out_ip, out_ip_str);
}
@@ -4623,14 +4651,14 @@ bool HP_chr_config_set_ip(const char *type, const char *value, uint32 *out_ip, c
bool HP_chr_config_read_inter(const char *filename, const struct config_t *config, bool imported) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chr_config_read_inter_pre ) {
+ if (HPMHooks.count.HP_chr_config_read_inter_pre > 0) {
bool (*preHookFunc) (const char **filename, const struct config_t **config, bool *imported);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_inter_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_inter_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_config_read_inter_pre[hIndex].func;
retVal___ = preHookFunc(&filename, &config, &imported);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4638,9 +4666,9 @@ bool HP_chr_config_read_inter(const char *filename, const struct config_t *confi
{
retVal___ = HPMHooks.source.chr.config_read_inter(filename, config, imported);
}
- if( HPMHooks.count.HP_chr_config_read_inter_post ) {
+ if (HPMHooks.count.HP_chr_config_read_inter_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *filename, const struct config_t *config, bool imported);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_inter_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_inter_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_config_read_inter_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename, config, imported);
}
@@ -4650,14 +4678,14 @@ bool HP_chr_config_read_inter(const char *filename, const struct config_t *confi
bool HP_chr_config_read_top(const char *filename, const struct config_t *config, bool imported) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chr_config_read_top_pre ) {
+ if (HPMHooks.count.HP_chr_config_read_top_pre > 0) {
bool (*preHookFunc) (const char **filename, const struct config_t **config, bool *imported);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_top_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_top_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_config_read_top_pre[hIndex].func;
retVal___ = preHookFunc(&filename, &config, &imported);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4665,9 +4693,9 @@ bool HP_chr_config_read_top(const char *filename, const struct config_t *config,
{
retVal___ = HPMHooks.source.chr.config_read_top(filename, config, imported);
}
- if( HPMHooks.count.HP_chr_config_read_top_post ) {
+ if (HPMHooks.count.HP_chr_config_read_top_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *filename, const struct config_t *config, bool imported);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_top_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_config_read_top_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_config_read_top_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename, config, imported);
}
@@ -4677,14 +4705,14 @@ bool HP_chr_config_read_top(const char *filename, const struct config_t *config,
/* cmdline_interface */
void HP_cmdline_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_cmdline_init_pre ) {
+ if (HPMHooks.count.HP_cmdline_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_cmdline_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4692,9 +4720,9 @@ void HP_cmdline_init(void) {
{
HPMHooks.source.cmdline.init();
}
- if( HPMHooks.count.HP_cmdline_init_post ) {
+ if (HPMHooks.count.HP_cmdline_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_cmdline_init_post[hIndex].func;
postHookFunc();
}
@@ -4703,14 +4731,14 @@ void HP_cmdline_init(void) {
}
void HP_cmdline_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_cmdline_final_pre ) {
+ if (HPMHooks.count.HP_cmdline_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_cmdline_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4718,9 +4746,9 @@ void HP_cmdline_final(void) {
{
HPMHooks.source.cmdline.final();
}
- if( HPMHooks.count.HP_cmdline_final_post ) {
+ if (HPMHooks.count.HP_cmdline_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_cmdline_final_post[hIndex].func;
postHookFunc();
}
@@ -4730,14 +4758,14 @@ void HP_cmdline_final(void) {
bool HP_cmdline_arg_add(unsigned int pluginID, const char *name, char shortname, CmdlineExecFunc func, const char *help, unsigned int options) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_cmdline_arg_add_pre ) {
+ if (HPMHooks.count.HP_cmdline_arg_add_pre > 0) {
bool (*preHookFunc) (unsigned int *pluginID, const char **name, char *shortname, CmdlineExecFunc *func, const char **help, unsigned int *options);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_add_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_add_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_cmdline_arg_add_pre[hIndex].func;
retVal___ = preHookFunc(&pluginID, &name, &shortname, &func, &help, &options);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4745,9 +4773,9 @@ bool HP_cmdline_arg_add(unsigned int pluginID, const char *name, char shortname,
{
retVal___ = HPMHooks.source.cmdline.arg_add(pluginID, name, shortname, func, help, options);
}
- if( HPMHooks.count.HP_cmdline_arg_add_post ) {
+ if (HPMHooks.count.HP_cmdline_arg_add_post > 0) {
bool (*postHookFunc) (bool retVal___, unsigned int pluginID, const char *name, char shortname, CmdlineExecFunc func, const char *help, unsigned int options);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_add_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_add_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_cmdline_arg_add_post[hIndex].func;
retVal___ = postHookFunc(retVal___, pluginID, name, shortname, func, help, options);
}
@@ -4757,14 +4785,14 @@ bool HP_cmdline_arg_add(unsigned int pluginID, const char *name, char shortname,
int HP_cmdline_exec(int argc, char **argv, unsigned int options) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_cmdline_exec_pre ) {
+ if (HPMHooks.count.HP_cmdline_exec_pre > 0) {
int (*preHookFunc) (int *argc, char ***argv, unsigned int *options);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_exec_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_exec_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_cmdline_exec_pre[hIndex].func;
retVal___ = preHookFunc(&argc, &argv, &options);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4772,9 +4800,9 @@ int HP_cmdline_exec(int argc, char **argv, unsigned int options) {
{
retVal___ = HPMHooks.source.cmdline.exec(argc, argv, options);
}
- if( HPMHooks.count.HP_cmdline_exec_post ) {
+ if (HPMHooks.count.HP_cmdline_exec_post > 0) {
int (*postHookFunc) (int retVal___, int argc, char **argv, unsigned int options);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_exec_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_exec_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_cmdline_exec_post[hIndex].func;
retVal___ = postHookFunc(retVal___, argc, argv, options);
}
@@ -4784,14 +4812,14 @@ int HP_cmdline_exec(int argc, char **argv, unsigned int options) {
bool HP_cmdline_arg_next_value(const char *name, int current_arg, int argc) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_cmdline_arg_next_value_pre ) {
+ if (HPMHooks.count.HP_cmdline_arg_next_value_pre > 0) {
bool (*preHookFunc) (const char **name, int *current_arg, int *argc);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_next_value_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_next_value_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_cmdline_arg_next_value_pre[hIndex].func;
retVal___ = preHookFunc(&name, &current_arg, &argc);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4799,9 +4827,9 @@ bool HP_cmdline_arg_next_value(const char *name, int current_arg, int argc) {
{
retVal___ = HPMHooks.source.cmdline.arg_next_value(name, current_arg, argc);
}
- if( HPMHooks.count.HP_cmdline_arg_next_value_post ) {
+ if (HPMHooks.count.HP_cmdline_arg_next_value_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *name, int current_arg, int argc);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_next_value_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_next_value_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_cmdline_arg_next_value_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name, current_arg, argc);
}
@@ -4811,14 +4839,14 @@ bool HP_cmdline_arg_next_value(const char *name, int current_arg, int argc) {
const char* HP_cmdline_arg_source(struct CmdlineArgData *arg) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_cmdline_arg_source_pre ) {
+ if (HPMHooks.count.HP_cmdline_arg_source_pre > 0) {
const char* (*preHookFunc) (struct CmdlineArgData **arg);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_source_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_source_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_cmdline_arg_source_pre[hIndex].func;
retVal___ = preHookFunc(&arg);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4826,9 +4854,9 @@ const char* HP_cmdline_arg_source(struct CmdlineArgData *arg) {
{
retVal___ = HPMHooks.source.cmdline.arg_source(arg);
}
- if( HPMHooks.count.HP_cmdline_arg_source_post ) {
+ if (HPMHooks.count.HP_cmdline_arg_source_post > 0) {
const char* (*postHookFunc) (const char* retVal___, struct CmdlineArgData *arg);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_source_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_source_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_cmdline_arg_source_post[hIndex].func;
retVal___ = postHookFunc(retVal___, arg);
}
@@ -4838,14 +4866,14 @@ const char* HP_cmdline_arg_source(struct CmdlineArgData *arg) {
/* console_interface */
void HP_console_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_console_init_pre ) {
+ if (HPMHooks.count.HP_console_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_console_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_console_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_console_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4853,9 +4881,9 @@ void HP_console_init(void) {
{
HPMHooks.source.console.init();
}
- if( HPMHooks.count.HP_console_init_post ) {
+ if (HPMHooks.count.HP_console_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_console_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_console_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_console_init_post[hIndex].func;
postHookFunc();
}
@@ -4864,14 +4892,14 @@ void HP_console_init(void) {
}
void HP_console_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_console_final_pre ) {
+ if (HPMHooks.count.HP_console_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_console_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_console_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_console_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4879,9 +4907,9 @@ void HP_console_final(void) {
{
HPMHooks.source.console.final();
}
- if( HPMHooks.count.HP_console_final_post ) {
+ if (HPMHooks.count.HP_console_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_console_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_console_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_console_final_post[hIndex].func;
postHookFunc();
}
@@ -4890,14 +4918,14 @@ void HP_console_final(void) {
}
void HP_console_display_title(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_console_display_title_pre ) {
+ if (HPMHooks.count.HP_console_display_title_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_console_display_title_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_console_display_title_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_console_display_title_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4905,9 +4933,9 @@ void HP_console_display_title(void) {
{
HPMHooks.source.console.display_title();
}
- if( HPMHooks.count.HP_console_display_title_post ) {
+ if (HPMHooks.count.HP_console_display_title_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_console_display_title_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_console_display_title_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_console_display_title_post[hIndex].func;
postHookFunc();
}
@@ -4916,14 +4944,14 @@ void HP_console_display_title(void) {
}
void HP_console_display_gplnotice(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_console_display_gplnotice_pre ) {
+ if (HPMHooks.count.HP_console_display_gplnotice_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_console_display_gplnotice_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_console_display_gplnotice_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_console_display_gplnotice_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4931,9 +4959,9 @@ void HP_console_display_gplnotice(void) {
{
HPMHooks.source.console.display_gplnotice();
}
- if( HPMHooks.count.HP_console_display_gplnotice_post ) {
+ if (HPMHooks.count.HP_console_display_gplnotice_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_console_display_gplnotice_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_console_display_gplnotice_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_console_display_gplnotice_post[hIndex].func;
postHookFunc();
}
@@ -4943,14 +4971,14 @@ void HP_console_display_gplnotice(void) {
/* core_interface */
void HP_core_shutdown_callback(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_core_shutdown_callback_pre ) {
+ if (HPMHooks.count.HP_core_shutdown_callback_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_core_shutdown_callback_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_core_shutdown_callback_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_core_shutdown_callback_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4958,9 +4986,9 @@ void HP_core_shutdown_callback(void) {
{
HPMHooks.source.core.shutdown_callback();
}
- if( HPMHooks.count.HP_core_shutdown_callback_post ) {
+ if (HPMHooks.count.HP_core_shutdown_callback_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_core_shutdown_callback_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_core_shutdown_callback_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_core_shutdown_callback_post[hIndex].func;
postHookFunc();
}
@@ -4971,14 +4999,14 @@ void HP_core_shutdown_callback(void) {
enum DBOptions HP_DB_fix_options(enum DBType type, enum DBOptions options) {
int hIndex = 0;
enum DBOptions retVal___ = DB_OPT_BASE;
- if( HPMHooks.count.HP_DB_fix_options_pre ) {
+ if (HPMHooks.count.HP_DB_fix_options_pre > 0) {
enum DBOptions (*preHookFunc) (enum DBType *type, enum DBOptions *options);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_fix_options_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_fix_options_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_fix_options_pre[hIndex].func;
retVal___ = preHookFunc(&type, &options);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4986,9 +5014,9 @@ enum DBOptions HP_DB_fix_options(enum DBType type, enum DBOptions options) {
{
retVal___ = HPMHooks.source.DB.fix_options(type, options);
}
- if( HPMHooks.count.HP_DB_fix_options_post ) {
+ if (HPMHooks.count.HP_DB_fix_options_post > 0) {
enum DBOptions (*postHookFunc) (enum DBOptions retVal___, enum DBType type, enum DBOptions options);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_fix_options_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_fix_options_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_fix_options_post[hIndex].func;
retVal___ = postHookFunc(retVal___, type, options);
}
@@ -4998,14 +5026,14 @@ enum DBOptions HP_DB_fix_options(enum DBType type, enum DBOptions options) {
DBComparator HP_DB_default_cmp(enum DBType type) {
int hIndex = 0;
DBComparator retVal___ = NULL;
- if( HPMHooks.count.HP_DB_default_cmp_pre ) {
+ if (HPMHooks.count.HP_DB_default_cmp_pre > 0) {
DBComparator (*preHookFunc) (enum DBType *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_cmp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_cmp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_default_cmp_pre[hIndex].func;
retVal___ = preHookFunc(&type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5013,9 +5041,9 @@ DBComparator HP_DB_default_cmp(enum DBType type) {
{
retVal___ = HPMHooks.source.DB.default_cmp(type);
}
- if( HPMHooks.count.HP_DB_default_cmp_post ) {
+ if (HPMHooks.count.HP_DB_default_cmp_post > 0) {
DBComparator (*postHookFunc) (DBComparator retVal___, enum DBType type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_cmp_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_cmp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_default_cmp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, type);
}
@@ -5025,14 +5053,14 @@ DBComparator HP_DB_default_cmp(enum DBType type) {
DBHasher HP_DB_default_hash(enum DBType type) {
int hIndex = 0;
DBHasher retVal___ = NULL;
- if( HPMHooks.count.HP_DB_default_hash_pre ) {
+ if (HPMHooks.count.HP_DB_default_hash_pre > 0) {
DBHasher (*preHookFunc) (enum DBType *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_hash_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_hash_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_default_hash_pre[hIndex].func;
retVal___ = preHookFunc(&type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5040,9 +5068,9 @@ DBHasher HP_DB_default_hash(enum DBType type) {
{
retVal___ = HPMHooks.source.DB.default_hash(type);
}
- if( HPMHooks.count.HP_DB_default_hash_post ) {
+ if (HPMHooks.count.HP_DB_default_hash_post > 0) {
DBHasher (*postHookFunc) (DBHasher retVal___, enum DBType type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_hash_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_hash_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_default_hash_post[hIndex].func;
retVal___ = postHookFunc(retVal___, type);
}
@@ -5052,14 +5080,14 @@ DBHasher HP_DB_default_hash(enum DBType type) {
DBReleaser HP_DB_default_release(enum DBType type, enum DBOptions options) {
int hIndex = 0;
DBReleaser retVal___ = NULL;
- if( HPMHooks.count.HP_DB_default_release_pre ) {
+ if (HPMHooks.count.HP_DB_default_release_pre > 0) {
DBReleaser (*preHookFunc) (enum DBType *type, enum DBOptions *options);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_release_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_release_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_default_release_pre[hIndex].func;
retVal___ = preHookFunc(&type, &options);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5067,9 +5095,9 @@ DBReleaser HP_DB_default_release(enum DBType type, enum DBOptions options) {
{
retVal___ = HPMHooks.source.DB.default_release(type, options);
}
- if( HPMHooks.count.HP_DB_default_release_post ) {
+ if (HPMHooks.count.HP_DB_default_release_post > 0) {
DBReleaser (*postHookFunc) (DBReleaser retVal___, enum DBType type, enum DBOptions options);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_release_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_release_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_default_release_post[hIndex].func;
retVal___ = postHookFunc(retVal___, type, options);
}
@@ -5079,14 +5107,14 @@ DBReleaser HP_DB_default_release(enum DBType type, enum DBOptions options) {
DBReleaser HP_DB_custom_release(enum DBReleaseOption which) {
int hIndex = 0;
DBReleaser retVal___ = NULL;
- if( HPMHooks.count.HP_DB_custom_release_pre ) {
+ if (HPMHooks.count.HP_DB_custom_release_pre > 0) {
DBReleaser (*preHookFunc) (enum DBReleaseOption *which);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_custom_release_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_custom_release_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_custom_release_pre[hIndex].func;
retVal___ = preHookFunc(&which);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5094,9 +5122,9 @@ DBReleaser HP_DB_custom_release(enum DBReleaseOption which) {
{
retVal___ = HPMHooks.source.DB.custom_release(which);
}
- if( HPMHooks.count.HP_DB_custom_release_post ) {
+ if (HPMHooks.count.HP_DB_custom_release_post > 0) {
DBReleaser (*postHookFunc) (DBReleaser retVal___, enum DBReleaseOption which);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_custom_release_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_custom_release_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_custom_release_post[hIndex].func;
retVal___ = postHookFunc(retVal___, which);
}
@@ -5106,14 +5134,14 @@ DBReleaser HP_DB_custom_release(enum DBReleaseOption which) {
struct DBMap* HP_DB_alloc(const char *file, const char *func, int line, enum DBType type, enum DBOptions options, unsigned short maxlen) {
int hIndex = 0;
struct DBMap* retVal___ = NULL;
- if( HPMHooks.count.HP_DB_alloc_pre ) {
+ if (HPMHooks.count.HP_DB_alloc_pre > 0) {
struct DBMap* (*preHookFunc) (const char **file, const char **func, int *line, enum DBType *type, enum DBOptions *options, unsigned short *maxlen);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_alloc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_alloc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_alloc_pre[hIndex].func;
retVal___ = preHookFunc(&file, &func, &line, &type, &options, &maxlen);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5121,9 +5149,9 @@ struct DBMap* HP_DB_alloc(const char *file, const char *func, int line, enum DBT
{
retVal___ = HPMHooks.source.DB.alloc(file, func, line, type, options, maxlen);
}
- if( HPMHooks.count.HP_DB_alloc_post ) {
+ if (HPMHooks.count.HP_DB_alloc_post > 0) {
struct DBMap* (*postHookFunc) (struct DBMap* retVal___, const char *file, const char *func, int line, enum DBType type, enum DBOptions options, unsigned short maxlen);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_alloc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_alloc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_alloc_post[hIndex].func;
retVal___ = postHookFunc(retVal___, file, func, line, type, options, maxlen);
}
@@ -5133,14 +5161,14 @@ struct DBMap* HP_DB_alloc(const char *file, const char *func, int line, enum DBT
union DBKey HP_DB_i2key(int key) {
int hIndex = 0;
union DBKey retVal___ = { 0 };
- if( HPMHooks.count.HP_DB_i2key_pre ) {
+ if (HPMHooks.count.HP_DB_i2key_pre > 0) {
union DBKey (*preHookFunc) (int *key);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_i2key_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_i2key_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_i2key_pre[hIndex].func;
retVal___ = preHookFunc(&key);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5148,9 +5176,9 @@ union DBKey HP_DB_i2key(int key) {
{
retVal___ = HPMHooks.source.DB.i2key(key);
}
- if( HPMHooks.count.HP_DB_i2key_post ) {
+ if (HPMHooks.count.HP_DB_i2key_post > 0) {
union DBKey (*postHookFunc) (union DBKey retVal___, int key);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_i2key_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_i2key_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_i2key_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key);
}
@@ -5160,14 +5188,14 @@ union DBKey HP_DB_i2key(int key) {
union DBKey HP_DB_ui2key(unsigned int key) {
int hIndex = 0;
union DBKey retVal___ = { 0 };
- if( HPMHooks.count.HP_DB_ui2key_pre ) {
+ if (HPMHooks.count.HP_DB_ui2key_pre > 0) {
union DBKey (*preHookFunc) (unsigned int *key);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui2key_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui2key_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_ui2key_pre[hIndex].func;
retVal___ = preHookFunc(&key);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5175,9 +5203,9 @@ union DBKey HP_DB_ui2key(unsigned int key) {
{
retVal___ = HPMHooks.source.DB.ui2key(key);
}
- if( HPMHooks.count.HP_DB_ui2key_post ) {
+ if (HPMHooks.count.HP_DB_ui2key_post > 0) {
union DBKey (*postHookFunc) (union DBKey retVal___, unsigned int key);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui2key_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui2key_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_ui2key_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key);
}
@@ -5187,14 +5215,14 @@ union DBKey HP_DB_ui2key(unsigned int key) {
union DBKey HP_DB_str2key(const char *key) {
int hIndex = 0;
union DBKey retVal___ = { 0 };
- if( HPMHooks.count.HP_DB_str2key_pre ) {
+ if (HPMHooks.count.HP_DB_str2key_pre > 0) {
union DBKey (*preHookFunc) (const char **key);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_str2key_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_str2key_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_str2key_pre[hIndex].func;
retVal___ = preHookFunc(&key);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5202,9 +5230,9 @@ union DBKey HP_DB_str2key(const char *key) {
{
retVal___ = HPMHooks.source.DB.str2key(key);
}
- if( HPMHooks.count.HP_DB_str2key_post ) {
+ if (HPMHooks.count.HP_DB_str2key_post > 0) {
union DBKey (*postHookFunc) (union DBKey retVal___, const char *key);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_str2key_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_str2key_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_str2key_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key);
}
@@ -5214,14 +5242,14 @@ union DBKey HP_DB_str2key(const char *key) {
union DBKey HP_DB_i642key(int64 key) {
int hIndex = 0;
union DBKey retVal___ = { 0 };
- if( HPMHooks.count.HP_DB_i642key_pre ) {
+ if (HPMHooks.count.HP_DB_i642key_pre > 0) {
union DBKey (*preHookFunc) (int64 *key);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_i642key_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_i642key_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_i642key_pre[hIndex].func;
retVal___ = preHookFunc(&key);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5229,9 +5257,9 @@ union DBKey HP_DB_i642key(int64 key) {
{
retVal___ = HPMHooks.source.DB.i642key(key);
}
- if( HPMHooks.count.HP_DB_i642key_post ) {
+ if (HPMHooks.count.HP_DB_i642key_post > 0) {
union DBKey (*postHookFunc) (union DBKey retVal___, int64 key);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_i642key_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_i642key_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_i642key_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key);
}
@@ -5241,14 +5269,14 @@ union DBKey HP_DB_i642key(int64 key) {
union DBKey HP_DB_ui642key(uint64 key) {
int hIndex = 0;
union DBKey retVal___ = { 0 };
- if( HPMHooks.count.HP_DB_ui642key_pre ) {
+ if (HPMHooks.count.HP_DB_ui642key_pre > 0) {
union DBKey (*preHookFunc) (uint64 *key);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui642key_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui642key_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_ui642key_pre[hIndex].func;
retVal___ = preHookFunc(&key);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5256,9 +5284,9 @@ union DBKey HP_DB_ui642key(uint64 key) {
{
retVal___ = HPMHooks.source.DB.ui642key(key);
}
- if( HPMHooks.count.HP_DB_ui642key_post ) {
+ if (HPMHooks.count.HP_DB_ui642key_post > 0) {
union DBKey (*postHookFunc) (union DBKey retVal___, uint64 key);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui642key_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui642key_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_ui642key_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key);
}
@@ -5268,14 +5296,14 @@ union DBKey HP_DB_ui642key(uint64 key) {
struct DBData HP_DB_i2data(int data) {
int hIndex = 0;
struct DBData retVal___ = { 0 };
- if( HPMHooks.count.HP_DB_i2data_pre ) {
+ if (HPMHooks.count.HP_DB_i2data_pre > 0) {
struct DBData (*preHookFunc) (int *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_i2data_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_i2data_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_i2data_pre[hIndex].func;
retVal___ = preHookFunc(&data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5283,9 +5311,9 @@ struct DBData HP_DB_i2data(int data) {
{
retVal___ = HPMHooks.source.DB.i2data(data);
}
- if( HPMHooks.count.HP_DB_i2data_post ) {
+ if (HPMHooks.count.HP_DB_i2data_post > 0) {
struct DBData (*postHookFunc) (struct DBData retVal___, int data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_i2data_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_i2data_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_i2data_post[hIndex].func;
retVal___ = postHookFunc(retVal___, data);
}
@@ -5295,14 +5323,14 @@ struct DBData HP_DB_i2data(int data) {
struct DBData HP_DB_ui2data(unsigned int data) {
int hIndex = 0;
struct DBData retVal___ = { 0 };
- if( HPMHooks.count.HP_DB_ui2data_pre ) {
+ if (HPMHooks.count.HP_DB_ui2data_pre > 0) {
struct DBData (*preHookFunc) (unsigned int *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui2data_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui2data_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_ui2data_pre[hIndex].func;
retVal___ = preHookFunc(&data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5310,9 +5338,9 @@ struct DBData HP_DB_ui2data(unsigned int data) {
{
retVal___ = HPMHooks.source.DB.ui2data(data);
}
- if( HPMHooks.count.HP_DB_ui2data_post ) {
+ if (HPMHooks.count.HP_DB_ui2data_post > 0) {
struct DBData (*postHookFunc) (struct DBData retVal___, unsigned int data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui2data_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui2data_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_ui2data_post[hIndex].func;
retVal___ = postHookFunc(retVal___, data);
}
@@ -5322,14 +5350,14 @@ struct DBData HP_DB_ui2data(unsigned int data) {
struct DBData HP_DB_ptr2data(void *data) {
int hIndex = 0;
struct DBData retVal___ = { 0 };
- if( HPMHooks.count.HP_DB_ptr2data_pre ) {
+ if (HPMHooks.count.HP_DB_ptr2data_pre > 0) {
struct DBData (*preHookFunc) (void **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_ptr2data_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_ptr2data_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_ptr2data_pre[hIndex].func;
retVal___ = preHookFunc(&data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5337,9 +5365,9 @@ struct DBData HP_DB_ptr2data(void *data) {
{
retVal___ = HPMHooks.source.DB.ptr2data(data);
}
- if( HPMHooks.count.HP_DB_ptr2data_post ) {
+ if (HPMHooks.count.HP_DB_ptr2data_post > 0) {
struct DBData (*postHookFunc) (struct DBData retVal___, void *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_ptr2data_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_ptr2data_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_ptr2data_post[hIndex].func;
retVal___ = postHookFunc(retVal___, data);
}
@@ -5349,14 +5377,14 @@ struct DBData HP_DB_ptr2data(void *data) {
int HP_DB_data2i(struct DBData *data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_DB_data2i_pre ) {
+ if (HPMHooks.count.HP_DB_data2i_pre > 0) {
int (*preHookFunc) (struct DBData **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2i_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2i_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_data2i_pre[hIndex].func;
retVal___ = preHookFunc(&data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5364,9 +5392,9 @@ int HP_DB_data2i(struct DBData *data) {
{
retVal___ = HPMHooks.source.DB.data2i(data);
}
- if( HPMHooks.count.HP_DB_data2i_post ) {
+ if (HPMHooks.count.HP_DB_data2i_post > 0) {
int (*postHookFunc) (int retVal___, struct DBData *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2i_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2i_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_data2i_post[hIndex].func;
retVal___ = postHookFunc(retVal___, data);
}
@@ -5376,14 +5404,14 @@ int HP_DB_data2i(struct DBData *data) {
unsigned int HP_DB_data2ui(struct DBData *data) {
int hIndex = 0;
unsigned int retVal___ = 0;
- if( HPMHooks.count.HP_DB_data2ui_pre ) {
+ if (HPMHooks.count.HP_DB_data2ui_pre > 0) {
unsigned int (*preHookFunc) (struct DBData **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2ui_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2ui_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_data2ui_pre[hIndex].func;
retVal___ = preHookFunc(&data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5391,9 +5419,9 @@ unsigned int HP_DB_data2ui(struct DBData *data) {
{
retVal___ = HPMHooks.source.DB.data2ui(data);
}
- if( HPMHooks.count.HP_DB_data2ui_post ) {
+ if (HPMHooks.count.HP_DB_data2ui_post > 0) {
unsigned int (*postHookFunc) (unsigned int retVal___, struct DBData *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2ui_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2ui_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_data2ui_post[hIndex].func;
retVal___ = postHookFunc(retVal___, data);
}
@@ -5403,14 +5431,14 @@ unsigned int HP_DB_data2ui(struct DBData *data) {
void* HP_DB_data2ptr(struct DBData *data) {
int hIndex = 0;
void* retVal___ = NULL;
- if( HPMHooks.count.HP_DB_data2ptr_pre ) {
+ if (HPMHooks.count.HP_DB_data2ptr_pre > 0) {
void* (*preHookFunc) (struct DBData **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2ptr_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2ptr_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_data2ptr_pre[hIndex].func;
retVal___ = preHookFunc(&data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5418,9 +5446,9 @@ void* HP_DB_data2ptr(struct DBData *data) {
{
retVal___ = HPMHooks.source.DB.data2ptr(data);
}
- if( HPMHooks.count.HP_DB_data2ptr_post ) {
+ if (HPMHooks.count.HP_DB_data2ptr_post > 0) {
void* (*postHookFunc) (void* retVal___, struct DBData *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2ptr_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2ptr_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_data2ptr_post[hIndex].func;
retVal___ = postHookFunc(retVal___, data);
}
@@ -5429,14 +5457,14 @@ void* HP_DB_data2ptr(struct DBData *data) {
}
void HP_DB_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_DB_init_pre ) {
+ if (HPMHooks.count.HP_DB_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5444,9 +5472,9 @@ void HP_DB_init(void) {
{
HPMHooks.source.DB.init();
}
- if( HPMHooks.count.HP_DB_init_post ) {
+ if (HPMHooks.count.HP_DB_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_init_post[hIndex].func;
postHookFunc();
}
@@ -5455,14 +5483,14 @@ void HP_DB_init(void) {
}
void HP_DB_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_DB_final_pre ) {
+ if (HPMHooks.count.HP_DB_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5470,9 +5498,9 @@ void HP_DB_final(void) {
{
HPMHooks.source.DB.final();
}
- if( HPMHooks.count.HP_DB_final_post ) {
+ if (HPMHooks.count.HP_DB_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_final_post[hIndex].func;
postHookFunc();
}
@@ -5482,14 +5510,14 @@ void HP_DB_final(void) {
/* des_interface */
void HP_des_decrypt_block(struct des_bit64 *block) {
int hIndex = 0;
- if( HPMHooks.count.HP_des_decrypt_block_pre ) {
+ if (HPMHooks.count.HP_des_decrypt_block_pre > 0) {
void (*preHookFunc) (struct des_bit64 **block);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_des_decrypt_block_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_des_decrypt_block_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_des_decrypt_block_pre[hIndex].func;
preHookFunc(&block);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5497,9 +5525,9 @@ void HP_des_decrypt_block(struct des_bit64 *block) {
{
HPMHooks.source.des.decrypt_block(block);
}
- if( HPMHooks.count.HP_des_decrypt_block_post ) {
+ if (HPMHooks.count.HP_des_decrypt_block_post > 0) {
void (*postHookFunc) (struct des_bit64 *block);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_des_decrypt_block_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_des_decrypt_block_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_des_decrypt_block_post[hIndex].func;
postHookFunc(block);
}
@@ -5508,14 +5536,14 @@ void HP_des_decrypt_block(struct des_bit64 *block) {
}
void HP_des_decrypt(unsigned char *data, size_t size) {
int hIndex = 0;
- if( HPMHooks.count.HP_des_decrypt_pre ) {
+ if (HPMHooks.count.HP_des_decrypt_pre > 0) {
void (*preHookFunc) (unsigned char **data, size_t *size);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_des_decrypt_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_des_decrypt_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_des_decrypt_pre[hIndex].func;
preHookFunc(&data, &size);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5523,9 +5551,9 @@ void HP_des_decrypt(unsigned char *data, size_t size) {
{
HPMHooks.source.des.decrypt(data, size);
}
- if( HPMHooks.count.HP_des_decrypt_post ) {
+ if (HPMHooks.count.HP_des_decrypt_post > 0) {
void (*postHookFunc) (unsigned char *data, size_t size);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_des_decrypt_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_des_decrypt_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_des_decrypt_post[hIndex].func;
postHookFunc(data, size);
}
@@ -5536,14 +5564,14 @@ void HP_des_decrypt(unsigned char *data, size_t size) {
const char* HP_geoip_getcountry(uint32 ipnum) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_geoip_getcountry_pre ) {
+ if (HPMHooks.count.HP_geoip_getcountry_pre > 0) {
const char* (*preHookFunc) (uint32 *ipnum);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_geoip_getcountry_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_geoip_getcountry_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_geoip_getcountry_pre[hIndex].func;
retVal___ = preHookFunc(&ipnum);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5551,9 +5579,9 @@ const char* HP_geoip_getcountry(uint32 ipnum) {
{
retVal___ = HPMHooks.source.geoip.getcountry(ipnum);
}
- if( HPMHooks.count.HP_geoip_getcountry_post ) {
+ if (HPMHooks.count.HP_geoip_getcountry_post > 0) {
const char* (*postHookFunc) (const char* retVal___, uint32 ipnum);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_geoip_getcountry_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_geoip_getcountry_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_geoip_getcountry_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ipnum);
}
@@ -5562,14 +5590,14 @@ const char* HP_geoip_getcountry(uint32 ipnum) {
}
void HP_geoip_final(bool shutdown) {
int hIndex = 0;
- if( HPMHooks.count.HP_geoip_final_pre ) {
+ if (HPMHooks.count.HP_geoip_final_pre > 0) {
void (*preHookFunc) (bool *shutdown);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_geoip_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_geoip_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_geoip_final_pre[hIndex].func;
preHookFunc(&shutdown);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5577,9 +5605,9 @@ void HP_geoip_final(bool shutdown) {
{
HPMHooks.source.geoip.final(shutdown);
}
- if( HPMHooks.count.HP_geoip_final_post ) {
+ if (HPMHooks.count.HP_geoip_final_post > 0) {
void (*postHookFunc) (bool shutdown);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_geoip_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_geoip_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_geoip_final_post[hIndex].func;
postHookFunc(shutdown);
}
@@ -5588,14 +5616,14 @@ void HP_geoip_final(bool shutdown) {
}
void HP_geoip_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_geoip_init_pre ) {
+ if (HPMHooks.count.HP_geoip_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_geoip_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_geoip_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_geoip_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5603,27 +5631,228 @@ void HP_geoip_init(void) {
{
HPMHooks.source.geoip.init();
}
- if( HPMHooks.count.HP_geoip_init_post ) {
+ if (HPMHooks.count.HP_geoip_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_geoip_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_geoip_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_geoip_init_post[hIndex].func;
postHookFunc();
}
}
return;
}
+/* inter_achievement_interface */
+int HP_inter_achievement_sql_init(void) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_inter_achievement_sql_init_pre > 0) {
+ int (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_achievement_sql_init_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_achievement_sql_init_pre[hIndex].func;
+ retVal___ = preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_achievement.sql_init();
+ }
+ if (HPMHooks.count.HP_inter_achievement_sql_init_post > 0) {
+ int (*postHookFunc) (int retVal___);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_achievement_sql_init_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_achievement_sql_init_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___);
+ }
+ }
+ return retVal___;
+}
+void HP_inter_achievement_sql_final(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_inter_achievement_sql_final_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_achievement_sql_final_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_achievement_sql_final_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.inter_achievement.sql_final();
+ }
+ if (HPMHooks.count.HP_inter_achievement_sql_final_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_achievement_sql_final_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_achievement_sql_final_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+int HP_inter_achievement_tosql(int char_id, struct char_achievements *cp, const struct char_achievements *p) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_inter_achievement_tosql_pre > 0) {
+ int (*preHookFunc) (int *char_id, struct char_achievements **cp, const struct char_achievements **p);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_achievement_tosql_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_achievement_tosql_pre[hIndex].func;
+ retVal___ = preHookFunc(&char_id, &cp, &p);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_achievement.tosql(char_id, cp, p);
+ }
+ if (HPMHooks.count.HP_inter_achievement_tosql_post > 0) {
+ int (*postHookFunc) (int retVal___, int char_id, struct char_achievements *cp, const struct char_achievements *p);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_achievement_tosql_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_achievement_tosql_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, char_id, cp, p);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_achievement_fromsql(int char_id, struct char_achievements *a) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_achievement_fromsql_pre > 0) {
+ bool (*preHookFunc) (int *char_id, struct char_achievements **a);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_achievement_fromsql_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_achievement_fromsql_pre[hIndex].func;
+ retVal___ = preHookFunc(&char_id, &a);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_achievement.fromsql(char_id, a);
+ }
+ if (HPMHooks.count.HP_inter_achievement_fromsql_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int char_id, struct char_achievements *a);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_achievement_fromsql_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_achievement_fromsql_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, char_id, a);
+ }
+ }
+ return retVal___;
+}
+struct DBData HP_inter_achievement_ensure_char_achievements(union DBKey key, va_list args) {
+ int hIndex = 0;
+ struct DBData retVal___ = { 0 };
+ if (HPMHooks.count.HP_inter_achievement_ensure_char_achievements_pre > 0) {
+ struct DBData (*preHookFunc) (union DBKey *key, va_list args);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_achievement_ensure_char_achievements_pre; hIndex++) {
+ va_list args___copy; va_copy(args___copy, args);
+ preHookFunc = HPMHooks.list.HP_inter_achievement_ensure_char_achievements_pre[hIndex].func;
+ retVal___ = preHookFunc(&key, args___copy);
+ va_end(args___copy);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ va_list args___copy; va_copy(args___copy, args);
+ retVal___ = HPMHooks.source.inter_achievement.ensure_char_achievements(key, args___copy);
+ va_end(args___copy);
+ }
+ if (HPMHooks.count.HP_inter_achievement_ensure_char_achievements_post > 0) {
+ struct DBData (*postHookFunc) (struct DBData retVal___, union DBKey key, va_list args);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_achievement_ensure_char_achievements_post; hIndex++) {
+ va_list args___copy; va_copy(args___copy, args);
+ postHookFunc = HPMHooks.list.HP_inter_achievement_ensure_char_achievements_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, key, args___copy);
+ va_end(args___copy);
+ }
+ }
+ return retVal___;
+}
+int HP_inter_achievement_char_achievements_clear(union DBKey key, struct DBData *data, va_list args) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_inter_achievement_char_achievements_clear_pre > 0) {
+ int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list args);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_achievement_char_achievements_clear_pre; hIndex++) {
+ va_list args___copy; va_copy(args___copy, args);
+ preHookFunc = HPMHooks.list.HP_inter_achievement_char_achievements_clear_pre[hIndex].func;
+ retVal___ = preHookFunc(&key, &data, args___copy);
+ va_end(args___copy);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ va_list args___copy; va_copy(args___copy, args);
+ retVal___ = HPMHooks.source.inter_achievement.char_achievements_clear(key, data, args___copy);
+ va_end(args___copy);
+ }
+ if (HPMHooks.count.HP_inter_achievement_char_achievements_clear_post > 0) {
+ int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list args);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_achievement_char_achievements_clear_post; hIndex++) {
+ va_list args___copy; va_copy(args___copy, args);
+ postHookFunc = HPMHooks.list.HP_inter_achievement_char_achievements_clear_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, key, data, args___copy);
+ va_end(args___copy);
+ }
+ }
+ return retVal___;
+}
+int HP_inter_achievement_parse_frommap(int fd) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_inter_achievement_parse_frommap_pre > 0) {
+ int (*preHookFunc) (int *fd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_achievement_parse_frommap_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_achievement_parse_frommap_pre[hIndex].func;
+ retVal___ = preHookFunc(&fd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_achievement.parse_frommap(fd);
+ }
+ if (HPMHooks.count.HP_inter_achievement_parse_frommap_post > 0) {
+ int (*postHookFunc) (int retVal___, int fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_achievement_parse_frommap_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_achievement_parse_frommap_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, fd);
+ }
+ }
+ return retVal___;
+}
/* inter_auction_interface */
int HP_inter_auction_count(int char_id, bool buy) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_auction_count_pre ) {
+ if (HPMHooks.count.HP_inter_auction_count_pre > 0) {
int (*preHookFunc) (int *char_id, bool *buy);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_count_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_count_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_auction_count_pre[hIndex].func;
retVal___ = preHookFunc(&char_id, &buy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5631,9 +5860,9 @@ int HP_inter_auction_count(int char_id, bool buy) {
{
retVal___ = HPMHooks.source.inter_auction.count(char_id, buy);
}
- if( HPMHooks.count.HP_inter_auction_count_post ) {
+ if (HPMHooks.count.HP_inter_auction_count_post > 0) {
int (*postHookFunc) (int retVal___, int char_id, bool buy);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_count_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_count_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_auction_count_post[hIndex].func;
retVal___ = postHookFunc(retVal___, char_id, buy);
}
@@ -5642,14 +5871,14 @@ int HP_inter_auction_count(int char_id, bool buy) {
}
void HP_inter_auction_save(struct auction_data *auction) {
int hIndex = 0;
- if( HPMHooks.count.HP_inter_auction_save_pre ) {
+ if (HPMHooks.count.HP_inter_auction_save_pre > 0) {
void (*preHookFunc) (struct auction_data **auction);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_save_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_save_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_auction_save_pre[hIndex].func;
preHookFunc(&auction);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5657,9 +5886,9 @@ void HP_inter_auction_save(struct auction_data *auction) {
{
HPMHooks.source.inter_auction.save(auction);
}
- if( HPMHooks.count.HP_inter_auction_save_post ) {
+ if (HPMHooks.count.HP_inter_auction_save_post > 0) {
void (*postHookFunc) (struct auction_data *auction);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_save_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_save_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_auction_save_post[hIndex].func;
postHookFunc(auction);
}
@@ -5669,14 +5898,14 @@ void HP_inter_auction_save(struct auction_data *auction) {
unsigned int HP_inter_auction_create(struct auction_data *auction) {
int hIndex = 0;
unsigned int retVal___ = 0;
- if( HPMHooks.count.HP_inter_auction_create_pre ) {
+ if (HPMHooks.count.HP_inter_auction_create_pre > 0) {
unsigned int (*preHookFunc) (struct auction_data **auction);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_auction_create_pre[hIndex].func;
retVal___ = preHookFunc(&auction);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5684,9 +5913,9 @@ unsigned int HP_inter_auction_create(struct auction_data *auction) {
{
retVal___ = HPMHooks.source.inter_auction.create(auction);
}
- if( HPMHooks.count.HP_inter_auction_create_post ) {
+ if (HPMHooks.count.HP_inter_auction_create_post > 0) {
unsigned int (*postHookFunc) (unsigned int retVal___, struct auction_data *auction);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_auction_create_post[hIndex].func;
retVal___ = postHookFunc(retVal___, auction);
}
@@ -5696,14 +5925,14 @@ unsigned int HP_inter_auction_create(struct auction_data *auction) {
int HP_inter_auction_end_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_auction_end_timer_pre ) {
+ if (HPMHooks.count.HP_inter_auction_end_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_end_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_end_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_auction_end_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5711,9 +5940,9 @@ int HP_inter_auction_end_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.inter_auction.end_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_inter_auction_end_timer_post ) {
+ if (HPMHooks.count.HP_inter_auction_end_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_end_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_end_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_auction_end_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -5722,14 +5951,14 @@ int HP_inter_auction_end_timer(int tid, int64 tick, int id, intptr_t data) {
}
void HP_inter_auction_delete_(struct auction_data *auction) {
int hIndex = 0;
- if( HPMHooks.count.HP_inter_auction_delete__pre ) {
+ if (HPMHooks.count.HP_inter_auction_delete__pre > 0) {
void (*preHookFunc) (struct auction_data **auction);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_delete__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_delete__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_auction_delete__pre[hIndex].func;
preHookFunc(&auction);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5737,9 +5966,9 @@ void HP_inter_auction_delete_(struct auction_data *auction) {
{
HPMHooks.source.inter_auction.delete_(auction);
}
- if( HPMHooks.count.HP_inter_auction_delete__post ) {
+ if (HPMHooks.count.HP_inter_auction_delete__post > 0) {
void (*postHookFunc) (struct auction_data *auction);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_delete__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_delete__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_auction_delete__post[hIndex].func;
postHookFunc(auction);
}
@@ -5748,14 +5977,14 @@ void HP_inter_auction_delete_(struct auction_data *auction) {
}
void HP_inter_auction_fromsql(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_inter_auction_fromsql_pre ) {
+ if (HPMHooks.count.HP_inter_auction_fromsql_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_fromsql_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_fromsql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_auction_fromsql_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5763,9 +5992,9 @@ void HP_inter_auction_fromsql(void) {
{
HPMHooks.source.inter_auction.fromsql();
}
- if( HPMHooks.count.HP_inter_auction_fromsql_post ) {
+ if (HPMHooks.count.HP_inter_auction_fromsql_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_fromsql_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_fromsql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_auction_fromsql_post[hIndex].func;
postHookFunc();
}
@@ -5775,14 +6004,14 @@ void HP_inter_auction_fromsql(void) {
int HP_inter_auction_parse_frommap(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_auction_parse_frommap_pre ) {
+ if (HPMHooks.count.HP_inter_auction_parse_frommap_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_parse_frommap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_parse_frommap_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_auction_parse_frommap_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5790,9 +6019,9 @@ int HP_inter_auction_parse_frommap(int fd) {
{
retVal___ = HPMHooks.source.inter_auction.parse_frommap(fd);
}
- if( HPMHooks.count.HP_inter_auction_parse_frommap_post ) {
+ if (HPMHooks.count.HP_inter_auction_parse_frommap_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_parse_frommap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_parse_frommap_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_auction_parse_frommap_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -5802,14 +6031,14 @@ int HP_inter_auction_parse_frommap(int fd) {
int HP_inter_auction_sql_init(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_auction_sql_init_pre ) {
+ if (HPMHooks.count.HP_inter_auction_sql_init_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_sql_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_sql_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_auction_sql_init_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5817,9 +6046,9 @@ int HP_inter_auction_sql_init(void) {
{
retVal___ = HPMHooks.source.inter_auction.sql_init();
}
- if( HPMHooks.count.HP_inter_auction_sql_init_post ) {
+ if (HPMHooks.count.HP_inter_auction_sql_init_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_sql_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_sql_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_auction_sql_init_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -5828,14 +6057,14 @@ int HP_inter_auction_sql_init(void) {
}
void HP_inter_auction_sql_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_inter_auction_sql_final_pre ) {
+ if (HPMHooks.count.HP_inter_auction_sql_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_sql_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_sql_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_auction_sql_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5843,26 +6072,108 @@ void HP_inter_auction_sql_final(void) {
{
HPMHooks.source.inter_auction.sql_final();
}
- if( HPMHooks.count.HP_inter_auction_sql_final_post ) {
+ if (HPMHooks.count.HP_inter_auction_sql_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_sql_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_auction_sql_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_auction_sql_final_post[hIndex].func;
postHookFunc();
}
}
return;
}
+/* inter_clan_interface */
+int HP_inter_clan_kick_inactive_members(int clan_id, int kick_interval) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_inter_clan_kick_inactive_members_pre > 0) {
+ int (*preHookFunc) (int *clan_id, int *kick_interval);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_clan_kick_inactive_members_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_clan_kick_inactive_members_pre[hIndex].func;
+ retVal___ = preHookFunc(&clan_id, &kick_interval);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_clan.kick_inactive_members(clan_id, kick_interval);
+ }
+ if (HPMHooks.count.HP_inter_clan_kick_inactive_members_post > 0) {
+ int (*postHookFunc) (int retVal___, int clan_id, int kick_interval);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_clan_kick_inactive_members_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_clan_kick_inactive_members_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, clan_id, kick_interval);
+ }
+ }
+ return retVal___;
+}
+int HP_inter_clan_count_members(int clan_id, int kick_interval) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_inter_clan_count_members_pre > 0) {
+ int (*preHookFunc) (int *clan_id, int *kick_interval);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_clan_count_members_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_clan_count_members_pre[hIndex].func;
+ retVal___ = preHookFunc(&clan_id, &kick_interval);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_clan.count_members(clan_id, kick_interval);
+ }
+ if (HPMHooks.count.HP_inter_clan_count_members_post > 0) {
+ int (*postHookFunc) (int retVal___, int clan_id, int kick_interval);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_clan_count_members_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_clan_count_members_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, clan_id, kick_interval);
+ }
+ }
+ return retVal___;
+}
+int HP_inter_clan_parse_frommap(int fd) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_inter_clan_parse_frommap_pre > 0) {
+ int (*preHookFunc) (int *fd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_clan_parse_frommap_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_clan_parse_frommap_pre[hIndex].func;
+ retVal___ = preHookFunc(&fd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_clan.parse_frommap(fd);
+ }
+ if (HPMHooks.count.HP_inter_clan_parse_frommap_post > 0) {
+ int (*postHookFunc) (int retVal___, int fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_clan_parse_frommap_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_clan_parse_frommap_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, fd);
+ }
+ }
+ return retVal___;
+}
/* inter_elemental_interface */
void HP_inter_elemental_sql_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_inter_elemental_sql_init_pre ) {
+ if (HPMHooks.count.HP_inter_elemental_sql_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_elemental_sql_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_elemental_sql_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_elemental_sql_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5870,9 +6181,9 @@ void HP_inter_elemental_sql_init(void) {
{
HPMHooks.source.inter_elemental.sql_init();
}
- if( HPMHooks.count.HP_inter_elemental_sql_init_post ) {
+ if (HPMHooks.count.HP_inter_elemental_sql_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_elemental_sql_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_elemental_sql_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_elemental_sql_init_post[hIndex].func;
postHookFunc();
}
@@ -5881,14 +6192,14 @@ void HP_inter_elemental_sql_init(void) {
}
void HP_inter_elemental_sql_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_inter_elemental_sql_final_pre ) {
+ if (HPMHooks.count.HP_inter_elemental_sql_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_elemental_sql_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_elemental_sql_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_elemental_sql_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5896,9 +6207,9 @@ void HP_inter_elemental_sql_final(void) {
{
HPMHooks.source.inter_elemental.sql_final();
}
- if( HPMHooks.count.HP_inter_elemental_sql_final_post ) {
+ if (HPMHooks.count.HP_inter_elemental_sql_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_elemental_sql_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_elemental_sql_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_elemental_sql_final_post[hIndex].func;
postHookFunc();
}
@@ -5908,14 +6219,14 @@ void HP_inter_elemental_sql_final(void) {
int HP_inter_elemental_parse_frommap(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_elemental_parse_frommap_pre ) {
+ if (HPMHooks.count.HP_inter_elemental_parse_frommap_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_elemental_parse_frommap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_elemental_parse_frommap_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_elemental_parse_frommap_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5923,27 +6234,135 @@ int HP_inter_elemental_parse_frommap(int fd) {
{
retVal___ = HPMHooks.source.inter_elemental.parse_frommap(fd);
}
- if( HPMHooks.count.HP_inter_elemental_parse_frommap_post ) {
+ if (HPMHooks.count.HP_inter_elemental_parse_frommap_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_elemental_parse_frommap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_elemental_parse_frommap_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_elemental_parse_frommap_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
}
return retVal___;
}
+bool HP_inter_elemental_create(struct s_elemental *ele) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_elemental_create_pre > 0) {
+ bool (*preHookFunc) (struct s_elemental **ele);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_elemental_create_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_elemental_create_pre[hIndex].func;
+ retVal___ = preHookFunc(&ele);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_elemental.create(ele);
+ }
+ if (HPMHooks.count.HP_inter_elemental_create_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct s_elemental *ele);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_elemental_create_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_elemental_create_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, ele);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_elemental_save(const struct s_elemental *ele) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_elemental_save_pre > 0) {
+ bool (*preHookFunc) (const struct s_elemental **ele);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_elemental_save_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_elemental_save_pre[hIndex].func;
+ retVal___ = preHookFunc(&ele);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_elemental.save(ele);
+ }
+ if (HPMHooks.count.HP_inter_elemental_save_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const struct s_elemental *ele);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_elemental_save_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_elemental_save_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, ele);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_elemental_load(int ele_id, int char_id, struct s_elemental *ele) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_elemental_load_pre > 0) {
+ bool (*preHookFunc) (int *ele_id, int *char_id, struct s_elemental **ele);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_elemental_load_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_elemental_load_pre[hIndex].func;
+ retVal___ = preHookFunc(&ele_id, &char_id, &ele);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_elemental.load(ele_id, char_id, ele);
+ }
+ if (HPMHooks.count.HP_inter_elemental_load_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int ele_id, int char_id, struct s_elemental *ele);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_elemental_load_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_elemental_load_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, ele_id, char_id, ele);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_elemental_delete(int ele_id) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_elemental_delete_pre > 0) {
+ bool (*preHookFunc) (int *ele_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_elemental_delete_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_elemental_delete_pre[hIndex].func;
+ retVal___ = preHookFunc(&ele_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_elemental.delete(ele_id);
+ }
+ if (HPMHooks.count.HP_inter_elemental_delete_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int ele_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_elemental_delete_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_elemental_delete_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, ele_id);
+ }
+ }
+ return retVal___;
+}
/* inter_guild_interface */
int HP_inter_guild_save_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_guild_save_timer_pre ) {
+ if (HPMHooks.count.HP_inter_guild_save_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_save_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_save_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_guild_save_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5951,9 +6370,9 @@ int HP_inter_guild_save_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.inter_guild.save_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_inter_guild_save_timer_post ) {
+ if (HPMHooks.count.HP_inter_guild_save_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_save_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_save_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_guild_save_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -5963,14 +6382,14 @@ int HP_inter_guild_save_timer(int tid, int64 tick, int id, intptr_t data) {
int HP_inter_guild_removemember_tosql(int account_id, int char_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_guild_removemember_tosql_pre ) {
+ if (HPMHooks.count.HP_inter_guild_removemember_tosql_pre > 0) {
int (*preHookFunc) (int *account_id, int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_removemember_tosql_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_removemember_tosql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_guild_removemember_tosql_pre[hIndex].func;
retVal___ = preHookFunc(&account_id, &char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5978,9 +6397,9 @@ int HP_inter_guild_removemember_tosql(int account_id, int char_id) {
{
retVal___ = HPMHooks.source.inter_guild.removemember_tosql(account_id, char_id);
}
- if( HPMHooks.count.HP_inter_guild_removemember_tosql_post ) {
+ if (HPMHooks.count.HP_inter_guild_removemember_tosql_post > 0) {
int (*postHookFunc) (int retVal___, int account_id, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_removemember_tosql_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_removemember_tosql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_guild_removemember_tosql_post[hIndex].func;
retVal___ = postHookFunc(retVal___, account_id, char_id);
}
@@ -5990,14 +6409,14 @@ int HP_inter_guild_removemember_tosql(int account_id, int char_id) {
int HP_inter_guild_tosql(struct guild *g, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_guild_tosql_pre ) {
+ if (HPMHooks.count.HP_inter_guild_tosql_pre > 0) {
int (*preHookFunc) (struct guild **g, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_tosql_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_tosql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_guild_tosql_pre[hIndex].func;
retVal___ = preHookFunc(&g, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6005,9 +6424,9 @@ int HP_inter_guild_tosql(struct guild *g, int flag) {
{
retVal___ = HPMHooks.source.inter_guild.tosql(g, flag);
}
- if( HPMHooks.count.HP_inter_guild_tosql_post ) {
+ if (HPMHooks.count.HP_inter_guild_tosql_post > 0) {
int (*postHookFunc) (int retVal___, struct guild *g, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_tosql_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_tosql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_guild_tosql_post[hIndex].func;
retVal___ = postHookFunc(retVal___, g, flag);
}
@@ -6017,14 +6436,14 @@ int HP_inter_guild_tosql(struct guild *g, int flag) {
struct guild* HP_inter_guild_fromsql(int guild_id) {
int hIndex = 0;
struct guild* retVal___ = NULL;
- if( HPMHooks.count.HP_inter_guild_fromsql_pre ) {
+ if (HPMHooks.count.HP_inter_guild_fromsql_pre > 0) {
struct guild* (*preHookFunc) (int *guild_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_fromsql_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_fromsql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_guild_fromsql_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6032,9 +6451,9 @@ struct guild* HP_inter_guild_fromsql(int guild_id) {
{
retVal___ = HPMHooks.source.inter_guild.fromsql(guild_id);
}
- if( HPMHooks.count.HP_inter_guild_fromsql_post ) {
+ if (HPMHooks.count.HP_inter_guild_fromsql_post > 0) {
struct guild* (*postHookFunc) (struct guild* retVal___, int guild_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_fromsql_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_fromsql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_guild_fromsql_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id);
}
@@ -6044,14 +6463,14 @@ struct guild* HP_inter_guild_fromsql(int guild_id) {
int HP_inter_guild_castle_tosql(struct guild_castle *gc) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_guild_castle_tosql_pre ) {
+ if (HPMHooks.count.HP_inter_guild_castle_tosql_pre > 0) {
int (*preHookFunc) (struct guild_castle **gc);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_castle_tosql_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_castle_tosql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_guild_castle_tosql_pre[hIndex].func;
retVal___ = preHookFunc(&gc);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6059,9 +6478,9 @@ int HP_inter_guild_castle_tosql(struct guild_castle *gc) {
{
retVal___ = HPMHooks.source.inter_guild.castle_tosql(gc);
}
- if( HPMHooks.count.HP_inter_guild_castle_tosql_post ) {
+ if (HPMHooks.count.HP_inter_guild_castle_tosql_post > 0) {
int (*postHookFunc) (int retVal___, struct guild_castle *gc);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_castle_tosql_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_castle_tosql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_guild_castle_tosql_post[hIndex].func;
retVal___ = postHookFunc(retVal___, gc);
}
@@ -6071,14 +6490,14 @@ int HP_inter_guild_castle_tosql(struct guild_castle *gc) {
struct guild_castle* HP_inter_guild_castle_fromsql(int castle_id) {
int hIndex = 0;
struct guild_castle* retVal___ = NULL;
- if( HPMHooks.count.HP_inter_guild_castle_fromsql_pre ) {
+ if (HPMHooks.count.HP_inter_guild_castle_fromsql_pre > 0) {
struct guild_castle* (*preHookFunc) (int *castle_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_castle_fromsql_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_castle_fromsql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_guild_castle_fromsql_pre[hIndex].func;
retVal___ = preHookFunc(&castle_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6086,9 +6505,9 @@ struct guild_castle* HP_inter_guild_castle_fromsql(int castle_id) {
{
retVal___ = HPMHooks.source.inter_guild.castle_fromsql(castle_id);
}
- if( HPMHooks.count.HP_inter_guild_castle_fromsql_post ) {
+ if (HPMHooks.count.HP_inter_guild_castle_fromsql_post > 0) {
struct guild_castle* (*postHookFunc) (struct guild_castle* retVal___, int castle_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_castle_fromsql_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_castle_fromsql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_guild_castle_fromsql_post[hIndex].func;
retVal___ = postHookFunc(retVal___, castle_id);
}
@@ -6098,14 +6517,14 @@ struct guild_castle* HP_inter_guild_castle_fromsql(int castle_id) {
bool HP_inter_guild_exp_parse_row(char *split[], int column, int current) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_inter_guild_exp_parse_row_pre ) {
+ if (HPMHooks.count.HP_inter_guild_exp_parse_row_pre > 0) {
bool (*preHookFunc) (char **split[], int *column, int *current);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_exp_parse_row_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_exp_parse_row_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_guild_exp_parse_row_pre[hIndex].func;
retVal___ = preHookFunc(&split, &column, &current);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6113,9 +6532,9 @@ bool HP_inter_guild_exp_parse_row(char *split[], int column, int current) {
{
retVal___ = HPMHooks.source.inter_guild.exp_parse_row(split, column, current);
}
- if( HPMHooks.count.HP_inter_guild_exp_parse_row_post ) {
+ if (HPMHooks.count.HP_inter_guild_exp_parse_row_post > 0) {
bool (*postHookFunc) (bool retVal___, char *split[], int column, int current);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_exp_parse_row_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_exp_parse_row_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_guild_exp_parse_row_post[hIndex].func;
retVal___ = postHookFunc(retVal___, split, column, current);
}
@@ -6125,14 +6544,14 @@ bool HP_inter_guild_exp_parse_row(char *split[], int column, int current) {
int HP_inter_guild_CharOnline(int char_id, int guild_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_guild_CharOnline_pre ) {
+ if (HPMHooks.count.HP_inter_guild_CharOnline_pre > 0) {
int (*preHookFunc) (int *char_id, int *guild_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_CharOnline_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_CharOnline_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_guild_CharOnline_pre[hIndex].func;
retVal___ = preHookFunc(&char_id, &guild_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6140,9 +6559,9 @@ int HP_inter_guild_CharOnline(int char_id, int guild_id) {
{
retVal___ = HPMHooks.source.inter_guild.CharOnline(char_id, guild_id);
}
- if( HPMHooks.count.HP_inter_guild_CharOnline_post ) {
+ if (HPMHooks.count.HP_inter_guild_CharOnline_post > 0) {
int (*postHookFunc) (int retVal___, int char_id, int guild_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_CharOnline_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_CharOnline_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_guild_CharOnline_post[hIndex].func;
retVal___ = postHookFunc(retVal___, char_id, guild_id);
}
@@ -6152,14 +6571,14 @@ int HP_inter_guild_CharOnline(int char_id, int guild_id) {
int HP_inter_guild_CharOffline(int char_id, int guild_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_guild_CharOffline_pre ) {
+ if (HPMHooks.count.HP_inter_guild_CharOffline_pre > 0) {
int (*preHookFunc) (int *char_id, int *guild_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_CharOffline_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_CharOffline_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_guild_CharOffline_pre[hIndex].func;
retVal___ = preHookFunc(&char_id, &guild_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6167,9 +6586,9 @@ int HP_inter_guild_CharOffline(int char_id, int guild_id) {
{
retVal___ = HPMHooks.source.inter_guild.CharOffline(char_id, guild_id);
}
- if( HPMHooks.count.HP_inter_guild_CharOffline_post ) {
+ if (HPMHooks.count.HP_inter_guild_CharOffline_post > 0) {
int (*postHookFunc) (int retVal___, int char_id, int guild_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_CharOffline_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_CharOffline_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_guild_CharOffline_post[hIndex].func;
retVal___ = postHookFunc(retVal___, char_id, guild_id);
}
@@ -6179,14 +6598,14 @@ int HP_inter_guild_CharOffline(int char_id, int guild_id) {
int HP_inter_guild_sql_init(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_guild_sql_init_pre ) {
+ if (HPMHooks.count.HP_inter_guild_sql_init_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_sql_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_sql_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_guild_sql_init_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6194,9 +6613,9 @@ int HP_inter_guild_sql_init(void) {
{
retVal___ = HPMHooks.source.inter_guild.sql_init();
}
- if( HPMHooks.count.HP_inter_guild_sql_init_post ) {
+ if (HPMHooks.count.HP_inter_guild_sql_init_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_sql_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_sql_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_guild_sql_init_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -6206,16 +6625,16 @@ int HP_inter_guild_sql_init(void) {
int HP_inter_guild_db_final(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_guild_db_final_pre ) {
+ if (HPMHooks.count.HP_inter_guild_db_final_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_db_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_db_final_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_inter_guild_db_final_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6225,9 +6644,9 @@ int HP_inter_guild_db_final(union DBKey key, struct DBData *data, va_list ap) {
retVal___ = HPMHooks.source.inter_guild.db_final(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_inter_guild_db_final_post ) {
+ if (HPMHooks.count.HP_inter_guild_db_final_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_db_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_db_final_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_inter_guild_db_final_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -6238,14 +6657,14 @@ int HP_inter_guild_db_final(union DBKey key, struct DBData *data, va_list ap) {
}
void HP_inter_guild_sql_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_inter_guild_sql_final_pre ) {
+ if (HPMHooks.count.HP_inter_guild_sql_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_sql_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_sql_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_guild_sql_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6253,9 +6672,9 @@ void HP_inter_guild_sql_final(void) {
{
HPMHooks.source.inter_guild.sql_final();
}
- if( HPMHooks.count.HP_inter_guild_sql_final_post ) {
+ if (HPMHooks.count.HP_inter_guild_sql_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_sql_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_sql_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_guild_sql_final_post[hIndex].func;
postHookFunc();
}
@@ -6265,14 +6684,14 @@ void HP_inter_guild_sql_final(void) {
int HP_inter_guild_search_guildname(const char *str) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_guild_search_guildname_pre ) {
+ if (HPMHooks.count.HP_inter_guild_search_guildname_pre > 0) {
int (*preHookFunc) (const char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_search_guildname_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_search_guildname_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_guild_search_guildname_pre[hIndex].func;
retVal___ = preHookFunc(&str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6280,9 +6699,9 @@ int HP_inter_guild_search_guildname(const char *str) {
{
retVal___ = HPMHooks.source.inter_guild.search_guildname(str);
}
- if( HPMHooks.count.HP_inter_guild_search_guildname_post ) {
+ if (HPMHooks.count.HP_inter_guild_search_guildname_post > 0) {
int (*postHookFunc) (int retVal___, const char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_search_guildname_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_search_guildname_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_guild_search_guildname_post[hIndex].func;
retVal___ = postHookFunc(retVal___, str);
}
@@ -6292,14 +6711,14 @@ int HP_inter_guild_search_guildname(const char *str) {
bool HP_inter_guild_check_empty(struct guild *g) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_inter_guild_check_empty_pre ) {
+ if (HPMHooks.count.HP_inter_guild_check_empty_pre > 0) {
bool (*preHookFunc) (struct guild **g);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_check_empty_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_check_empty_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_guild_check_empty_pre[hIndex].func;
retVal___ = preHookFunc(&g);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6307,9 +6726,9 @@ bool HP_inter_guild_check_empty(struct guild *g) {
{
retVal___ = HPMHooks.source.inter_guild.check_empty(g);
}
- if( HPMHooks.count.HP_inter_guild_check_empty_post ) {
+ if (HPMHooks.count.HP_inter_guild_check_empty_post > 0) {
bool (*postHookFunc) (bool retVal___, struct guild *g);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_check_empty_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_check_empty_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_guild_check_empty_post[hIndex].func;
retVal___ = postHookFunc(retVal___, g);
}
@@ -6319,14 +6738,14 @@ bool HP_inter_guild_check_empty(struct guild *g) {
unsigned int HP_inter_guild_nextexp(int level) {
int hIndex = 0;
unsigned int retVal___ = 0;
- if( HPMHooks.count.HP_inter_guild_nextexp_pre ) {
+ if (HPMHooks.count.HP_inter_guild_nextexp_pre > 0) {
unsigned int (*preHookFunc) (int *level);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_nextexp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_nextexp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_guild_nextexp_pre[hIndex].func;
retVal___ = preHookFunc(&level);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6334,9 +6753,9 @@ unsigned int HP_inter_guild_nextexp(int level) {
{
retVal___ = HPMHooks.source.inter_guild.nextexp(level);
}
- if( HPMHooks.count.HP_inter_guild_nextexp_post ) {
+ if (HPMHooks.count.HP_inter_guild_nextexp_post > 0) {
unsigned int (*postHookFunc) (unsigned int retVal___, int level);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_nextexp_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_nextexp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_guild_nextexp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, level);
}
@@ -6346,14 +6765,14 @@ unsigned int HP_inter_guild_nextexp(int level) {
int HP_inter_guild_checkskill(struct guild *g, int id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_guild_checkskill_pre ) {
+ if (HPMHooks.count.HP_inter_guild_checkskill_pre > 0) {
int (*preHookFunc) (struct guild **g, int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_checkskill_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_checkskill_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_guild_checkskill_pre[hIndex].func;
retVal___ = preHookFunc(&g, &id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6361,9 +6780,9 @@ int HP_inter_guild_checkskill(struct guild *g, int id) {
{
retVal___ = HPMHooks.source.inter_guild.checkskill(g, id);
}
- if( HPMHooks.count.HP_inter_guild_checkskill_post ) {
+ if (HPMHooks.count.HP_inter_guild_checkskill_post > 0) {
int (*postHookFunc) (int retVal___, struct guild *g, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_checkskill_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_checkskill_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_guild_checkskill_post[hIndex].func;
retVal___ = postHookFunc(retVal___, g, id);
}
@@ -6373,14 +6792,14 @@ int HP_inter_guild_checkskill(struct guild *g, int id) {
int HP_inter_guild_calcinfo(struct guild *g) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_guild_calcinfo_pre ) {
+ if (HPMHooks.count.HP_inter_guild_calcinfo_pre > 0) {
int (*preHookFunc) (struct guild **g);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_calcinfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_calcinfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_guild_calcinfo_pre[hIndex].func;
retVal___ = preHookFunc(&g);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6388,9 +6807,9 @@ int HP_inter_guild_calcinfo(struct guild *g) {
{
retVal___ = HPMHooks.source.inter_guild.calcinfo(g);
}
- if( HPMHooks.count.HP_inter_guild_calcinfo_post ) {
+ if (HPMHooks.count.HP_inter_guild_calcinfo_post > 0) {
int (*postHookFunc) (int retVal___, struct guild *g);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_calcinfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_calcinfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_guild_calcinfo_post[hIndex].func;
retVal___ = postHookFunc(retVal___, g);
}
@@ -6400,14 +6819,14 @@ int HP_inter_guild_calcinfo(struct guild *g) {
int HP_inter_guild_sex_changed(int guild_id, int account_id, int char_id, short gender) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_guild_sex_changed_pre ) {
+ if (HPMHooks.count.HP_inter_guild_sex_changed_pre > 0) {
int (*preHookFunc) (int *guild_id, int *account_id, int *char_id, short *gender);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_sex_changed_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_sex_changed_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_guild_sex_changed_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &account_id, &char_id, &gender);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6415,9 +6834,9 @@ int HP_inter_guild_sex_changed(int guild_id, int account_id, int char_id, short
{
retVal___ = HPMHooks.source.inter_guild.sex_changed(guild_id, account_id, char_id, gender);
}
- if( HPMHooks.count.HP_inter_guild_sex_changed_post ) {
+ if (HPMHooks.count.HP_inter_guild_sex_changed_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id, int account_id, int char_id, short gender);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_sex_changed_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_sex_changed_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_guild_sex_changed_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, account_id, char_id, gender);
}
@@ -6427,14 +6846,14 @@ int HP_inter_guild_sex_changed(int guild_id, int account_id, int char_id, short
int HP_inter_guild_charname_changed(int guild_id, int account_id, int char_id, char *name) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_guild_charname_changed_pre ) {
+ if (HPMHooks.count.HP_inter_guild_charname_changed_pre > 0) {
int (*preHookFunc) (int *guild_id, int *account_id, int *char_id, char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_charname_changed_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_charname_changed_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_guild_charname_changed_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &account_id, &char_id, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6442,9 +6861,9 @@ int HP_inter_guild_charname_changed(int guild_id, int account_id, int char_id, c
{
retVal___ = HPMHooks.source.inter_guild.charname_changed(guild_id, account_id, char_id, name);
}
- if( HPMHooks.count.HP_inter_guild_charname_changed_post ) {
+ if (HPMHooks.count.HP_inter_guild_charname_changed_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id, int account_id, int char_id, char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_charname_changed_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_charname_changed_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_guild_charname_changed_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, account_id, char_id, name);
}
@@ -6454,14 +6873,14 @@ int HP_inter_guild_charname_changed(int guild_id, int account_id, int char_id, c
int HP_inter_guild_parse_frommap(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_guild_parse_frommap_pre ) {
+ if (HPMHooks.count.HP_inter_guild_parse_frommap_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_parse_frommap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_parse_frommap_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_guild_parse_frommap_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6469,81 +6888,459 @@ int HP_inter_guild_parse_frommap(int fd) {
{
retVal___ = HPMHooks.source.inter_guild.parse_frommap(fd);
}
- if( HPMHooks.count.HP_inter_guild_parse_frommap_post ) {
+ if (HPMHooks.count.HP_inter_guild_parse_frommap_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_parse_frommap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_parse_frommap_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_guild_parse_frommap_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
}
return retVal___;
}
-int HP_inter_guild_leave(int guild_id, int account_id, int char_id) {
+int HP_inter_guild_broken(int guild_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_guild_leave_pre ) {
- int (*preHookFunc) (int *guild_id, int *account_id, int *char_id);
+ if (HPMHooks.count.HP_inter_guild_broken_pre > 0) {
+ int (*preHookFunc) (int *guild_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_broken_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_guild_broken_pre[hIndex].func;
+ retVal___ = preHookFunc(&guild_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_guild.broken(guild_id);
+ }
+ if (HPMHooks.count.HP_inter_guild_broken_post > 0) {
+ int (*postHookFunc) (int retVal___, int guild_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_broken_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_guild_broken_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, guild_id);
+ }
+ }
+ return retVal___;
+}
+struct guild* HP_inter_guild_create(const char *name, const struct guild_member *master) {
+ int hIndex = 0;
+ struct guild* retVal___ = NULL;
+ if (HPMHooks.count.HP_inter_guild_create_pre > 0) {
+ struct guild* (*preHookFunc) (const char **name, const struct guild_member **master);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_create_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_guild_create_pre[hIndex].func;
+ retVal___ = preHookFunc(&name, &master);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_guild.create(name, master);
+ }
+ if (HPMHooks.count.HP_inter_guild_create_post > 0) {
+ struct guild* (*postHookFunc) (struct guild* retVal___, const char *name, const struct guild_member *master);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_create_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_guild_create_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, name, master);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_guild_add_member(int guild_id, const struct guild_member *member, int map_fd) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_guild_add_member_pre > 0) {
+ bool (*preHookFunc) (int *guild_id, const struct guild_member **member, int *map_fd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_add_member_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_guild_add_member_pre[hIndex].func;
+ retVal___ = preHookFunc(&guild_id, &member, &map_fd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_guild.add_member(guild_id, member, map_fd);
+ }
+ if (HPMHooks.count.HP_inter_guild_add_member_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int guild_id, const struct guild_member *member, int map_fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_add_member_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_guild_add_member_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, guild_id, member, map_fd);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_guild_leave(int guild_id, int account_id, int char_id, int flag, const char *mes, int map_fd) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_guild_leave_pre > 0) {
+ bool (*preHookFunc) (int *guild_id, int *account_id, int *char_id, int *flag, const char **mes, int *map_fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_leave_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_leave_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_guild_leave_pre[hIndex].func;
- retVal___ = preHookFunc(&guild_id, &account_id, &char_id);
+ retVal___ = preHookFunc(&guild_id, &account_id, &char_id, &flag, &mes, &map_fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
}
{
- retVal___ = HPMHooks.source.inter_guild.leave(guild_id, account_id, char_id);
+ retVal___ = HPMHooks.source.inter_guild.leave(guild_id, account_id, char_id, flag, mes, map_fd);
}
- if( HPMHooks.count.HP_inter_guild_leave_post ) {
- int (*postHookFunc) (int retVal___, int guild_id, int account_id, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_leave_post; hIndex++ ) {
+ if (HPMHooks.count.HP_inter_guild_leave_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int guild_id, int account_id, int char_id, int flag, const char *mes, int map_fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_leave_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_guild_leave_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, guild_id, account_id, char_id);
+ retVal___ = postHookFunc(retVal___, guild_id, account_id, char_id, flag, mes, map_fd);
}
}
return retVal___;
}
-int HP_inter_guild_broken(int guild_id) {
+bool HP_inter_guild_update_member_info_short(int guild_id, int account_id, int char_id, int online, int lv, int16 class) {
int hIndex = 0;
- int retVal___ = 0;
- if( HPMHooks.count.HP_inter_guild_broken_pre ) {
- int (*preHookFunc) (int *guild_id);
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_guild_update_member_info_short_pre > 0) {
+ bool (*preHookFunc) (int *guild_id, int *account_id, int *char_id, int *online, int *lv, int16 *class);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_broken_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_inter_guild_broken_pre[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_update_member_info_short_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_guild_update_member_info_short_pre[hIndex].func;
+ retVal___ = preHookFunc(&guild_id, &account_id, &char_id, &online, &lv, &class);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_guild.update_member_info_short(guild_id, account_id, char_id, online, lv, class);
+ }
+ if (HPMHooks.count.HP_inter_guild_update_member_info_short_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int guild_id, int account_id, int char_id, int online, int lv, int16 class);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_update_member_info_short_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_guild_update_member_info_short_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, guild_id, account_id, char_id, online, lv, class);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_guild_update_member_info(int guild_id, int account_id, int char_id, int type, const char *data, int len) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_guild_update_member_info_pre > 0) {
+ bool (*preHookFunc) (int *guild_id, int *account_id, int *char_id, int *type, const char **data, int *len);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_update_member_info_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_guild_update_member_info_pre[hIndex].func;
+ retVal___ = preHookFunc(&guild_id, &account_id, &char_id, &type, &data, &len);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_guild.update_member_info(guild_id, account_id, char_id, type, data, len);
+ }
+ if (HPMHooks.count.HP_inter_guild_update_member_info_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int guild_id, int account_id, int char_id, int type, const char *data, int len);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_update_member_info_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_guild_update_member_info_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, guild_id, account_id, char_id, type, data, len);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_guild_disband(int guild_id) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_guild_disband_pre > 0) {
+ bool (*preHookFunc) (int *guild_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_disband_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_guild_disband_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
}
{
- retVal___ = HPMHooks.source.inter_guild.broken(guild_id);
+ retVal___ = HPMHooks.source.inter_guild.disband(guild_id);
}
- if( HPMHooks.count.HP_inter_guild_broken_post ) {
- int (*postHookFunc) (int retVal___, int guild_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_broken_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_inter_guild_broken_post[hIndex].func;
+ if (HPMHooks.count.HP_inter_guild_disband_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int guild_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_disband_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_guild_disband_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id);
}
}
return retVal___;
}
+bool HP_inter_guild_update_basic_info(int guild_id, int type, const void *data, int len) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_guild_update_basic_info_pre > 0) {
+ bool (*preHookFunc) (int *guild_id, int *type, const void **data, int *len);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_update_basic_info_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_guild_update_basic_info_pre[hIndex].func;
+ retVal___ = preHookFunc(&guild_id, &type, &data, &len);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_guild.update_basic_info(guild_id, type, data, len);
+ }
+ if (HPMHooks.count.HP_inter_guild_update_basic_info_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int guild_id, int type, const void *data, int len);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_update_basic_info_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_guild_update_basic_info_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, guild_id, type, data, len);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_guild_update_position(int guild_id, int idx, const struct guild_position *p) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_guild_update_position_pre > 0) {
+ bool (*preHookFunc) (int *guild_id, int *idx, const struct guild_position **p);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_update_position_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_guild_update_position_pre[hIndex].func;
+ retVal___ = preHookFunc(&guild_id, &idx, &p);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_guild.update_position(guild_id, idx, p);
+ }
+ if (HPMHooks.count.HP_inter_guild_update_position_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int guild_id, int idx, const struct guild_position *p);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_update_position_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_guild_update_position_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, guild_id, idx, p);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_guild_use_skill_point(int guild_id, uint16 skill_id, int account_id, int max) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_guild_use_skill_point_pre > 0) {
+ bool (*preHookFunc) (int *guild_id, uint16 *skill_id, int *account_id, int *max);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_use_skill_point_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_guild_use_skill_point_pre[hIndex].func;
+ retVal___ = preHookFunc(&guild_id, &skill_id, &account_id, &max);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_guild.use_skill_point(guild_id, skill_id, account_id, max);
+ }
+ if (HPMHooks.count.HP_inter_guild_use_skill_point_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int guild_id, uint16 skill_id, int account_id, int max);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_use_skill_point_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_guild_use_skill_point_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, guild_id, skill_id, account_id, max);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_guild_remove_alliance(struct guild *g, int guild_id, int account_id1, int account_id2, int flag) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_guild_remove_alliance_pre > 0) {
+ bool (*preHookFunc) (struct guild **g, int *guild_id, int *account_id1, int *account_id2, int *flag);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_remove_alliance_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_guild_remove_alliance_pre[hIndex].func;
+ retVal___ = preHookFunc(&g, &guild_id, &account_id1, &account_id2, &flag);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_guild.remove_alliance(g, guild_id, account_id1, account_id2, flag);
+ }
+ if (HPMHooks.count.HP_inter_guild_remove_alliance_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct guild *g, int guild_id, int account_id1, int account_id2, int flag);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_remove_alliance_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_guild_remove_alliance_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, g, guild_id, account_id1, account_id2, flag);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_guild_change_alliance(int guild_id1, int guild_id2, int account_id1, int account_id2, int flag) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_guild_change_alliance_pre > 0) {
+ bool (*preHookFunc) (int *guild_id1, int *guild_id2, int *account_id1, int *account_id2, int *flag);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_change_alliance_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_guild_change_alliance_pre[hIndex].func;
+ retVal___ = preHookFunc(&guild_id1, &guild_id2, &account_id1, &account_id2, &flag);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_guild.change_alliance(guild_id1, guild_id2, account_id1, account_id2, flag);
+ }
+ if (HPMHooks.count.HP_inter_guild_change_alliance_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int guild_id1, int guild_id2, int account_id1, int account_id2, int flag);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_change_alliance_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_guild_change_alliance_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, guild_id1, guild_id2, account_id1, account_id2, flag);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_guild_update_notice(int guild_id, const char *mes1, const char *mes2) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_guild_update_notice_pre > 0) {
+ bool (*preHookFunc) (int *guild_id, const char **mes1, const char **mes2);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_update_notice_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_guild_update_notice_pre[hIndex].func;
+ retVal___ = preHookFunc(&guild_id, &mes1, &mes2);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_guild.update_notice(guild_id, mes1, mes2);
+ }
+ if (HPMHooks.count.HP_inter_guild_update_notice_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int guild_id, const char *mes1, const char *mes2);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_update_notice_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_guild_update_notice_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, guild_id, mes1, mes2);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_guild_update_emblem(int len, int guild_id, const char *data) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_guild_update_emblem_pre > 0) {
+ bool (*preHookFunc) (int *len, int *guild_id, const char **data);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_update_emblem_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_guild_update_emblem_pre[hIndex].func;
+ retVal___ = preHookFunc(&len, &guild_id, &data);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_guild.update_emblem(len, guild_id, data);
+ }
+ if (HPMHooks.count.HP_inter_guild_update_emblem_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int len, int guild_id, const char *data);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_update_emblem_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_guild_update_emblem_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, len, guild_id, data);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_guild_update_castle_data(int castle_id, int index, int value) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_guild_update_castle_data_pre > 0) {
+ bool (*preHookFunc) (int *castle_id, int *index, int *value);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_update_castle_data_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_guild_update_castle_data_pre[hIndex].func;
+ retVal___ = preHookFunc(&castle_id, &index, &value);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_guild.update_castle_data(castle_id, index, value);
+ }
+ if (HPMHooks.count.HP_inter_guild_update_castle_data_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int castle_id, int index, int value);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_update_castle_data_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_guild_update_castle_data_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, castle_id, index, value);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_guild_change_leader(int guild_id, const char *name, int len) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_guild_change_leader_pre > 0) {
+ bool (*preHookFunc) (int *guild_id, const char **name, int *len);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_change_leader_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_guild_change_leader_pre[hIndex].func;
+ retVal___ = preHookFunc(&guild_id, &name, &len);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_guild.change_leader(guild_id, name, len);
+ }
+ if (HPMHooks.count.HP_inter_guild_change_leader_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int guild_id, const char *name, int len);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_change_leader_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_guild_change_leader_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, guild_id, name, len);
+ }
+ }
+ return retVal___;
+}
/* inter_homunculus_interface */
int HP_inter_homunculus_sql_init(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_homunculus_sql_init_pre ) {
+ if (HPMHooks.count.HP_inter_homunculus_sql_init_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_homunculus_sql_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_homunculus_sql_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_homunculus_sql_init_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6551,9 +7348,9 @@ int HP_inter_homunculus_sql_init(void) {
{
retVal___ = HPMHooks.source.inter_homunculus.sql_init();
}
- if( HPMHooks.count.HP_inter_homunculus_sql_init_post ) {
+ if (HPMHooks.count.HP_inter_homunculus_sql_init_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_homunculus_sql_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_homunculus_sql_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_homunculus_sql_init_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -6562,14 +7359,14 @@ int HP_inter_homunculus_sql_init(void) {
}
void HP_inter_homunculus_sql_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_inter_homunculus_sql_final_pre ) {
+ if (HPMHooks.count.HP_inter_homunculus_sql_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_homunculus_sql_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_homunculus_sql_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_homunculus_sql_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6577,9 +7374,9 @@ void HP_inter_homunculus_sql_final(void) {
{
HPMHooks.source.inter_homunculus.sql_final();
}
- if( HPMHooks.count.HP_inter_homunculus_sql_final_post ) {
+ if (HPMHooks.count.HP_inter_homunculus_sql_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_homunculus_sql_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_homunculus_sql_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_homunculus_sql_final_post[hIndex].func;
postHookFunc();
}
@@ -6589,14 +7386,14 @@ void HP_inter_homunculus_sql_final(void) {
int HP_inter_homunculus_parse_frommap(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_homunculus_parse_frommap_pre ) {
+ if (HPMHooks.count.HP_inter_homunculus_parse_frommap_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_homunculus_parse_frommap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_homunculus_parse_frommap_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_homunculus_parse_frommap_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6604,27 +7401,162 @@ int HP_inter_homunculus_parse_frommap(int fd) {
{
retVal___ = HPMHooks.source.inter_homunculus.parse_frommap(fd);
}
- if( HPMHooks.count.HP_inter_homunculus_parse_frommap_post ) {
+ if (HPMHooks.count.HP_inter_homunculus_parse_frommap_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_homunculus_parse_frommap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_homunculus_parse_frommap_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_homunculus_parse_frommap_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
}
return retVal___;
}
+bool HP_inter_homunculus_create(struct s_homunculus *hd) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_homunculus_create_pre > 0) {
+ bool (*preHookFunc) (struct s_homunculus **hd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_homunculus_create_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_homunculus_create_pre[hIndex].func;
+ retVal___ = preHookFunc(&hd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_homunculus.create(hd);
+ }
+ if (HPMHooks.count.HP_inter_homunculus_create_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct s_homunculus *hd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_homunculus_create_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_homunculus_create_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, hd);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_homunculus_save(const struct s_homunculus *hd) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_homunculus_save_pre > 0) {
+ bool (*preHookFunc) (const struct s_homunculus **hd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_homunculus_save_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_homunculus_save_pre[hIndex].func;
+ retVal___ = preHookFunc(&hd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_homunculus.save(hd);
+ }
+ if (HPMHooks.count.HP_inter_homunculus_save_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const struct s_homunculus *hd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_homunculus_save_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_homunculus_save_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, hd);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_homunculus_load(int homun_id, struct s_homunculus *hd) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_homunculus_load_pre > 0) {
+ bool (*preHookFunc) (int *homun_id, struct s_homunculus **hd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_homunculus_load_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_homunculus_load_pre[hIndex].func;
+ retVal___ = preHookFunc(&homun_id, &hd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_homunculus.load(homun_id, hd);
+ }
+ if (HPMHooks.count.HP_inter_homunculus_load_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int homun_id, struct s_homunculus *hd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_homunculus_load_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_homunculus_load_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, homun_id, hd);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_homunculus_delete(int homun_id) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_homunculus_delete_pre > 0) {
+ bool (*preHookFunc) (int *homun_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_homunculus_delete_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_homunculus_delete_pre[hIndex].func;
+ retVal___ = preHookFunc(&homun_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_homunculus.delete(homun_id);
+ }
+ if (HPMHooks.count.HP_inter_homunculus_delete_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int homun_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_homunculus_delete_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_homunculus_delete_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, homun_id);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_homunculus_rename(const char *name) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_homunculus_rename_pre > 0) {
+ bool (*preHookFunc) (const char **name);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_homunculus_rename_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_homunculus_rename_pre[hIndex].func;
+ retVal___ = preHookFunc(&name);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_homunculus.rename(name);
+ }
+ if (HPMHooks.count.HP_inter_homunculus_rename_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *name);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_homunculus_rename_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_homunculus_rename_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, name);
+ }
+ }
+ return retVal___;
+}
/* inter_interface */
const char* HP_inter_msg_txt(int msg_number) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_inter_msg_txt_pre ) {
+ if (HPMHooks.count.HP_inter_msg_txt_pre > 0) {
const char* (*preHookFunc) (int *msg_number);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_msg_txt_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_msg_txt_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_msg_txt_pre[hIndex].func;
retVal___ = preHookFunc(&msg_number);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6632,9 +7564,9 @@ const char* HP_inter_msg_txt(int msg_number) {
{
retVal___ = HPMHooks.source.inter.msg_txt(msg_number);
}
- if( HPMHooks.count.HP_inter_msg_txt_post ) {
+ if (HPMHooks.count.HP_inter_msg_txt_post > 0) {
const char* (*postHookFunc) (const char* retVal___, int msg_number);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_msg_txt_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_msg_txt_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_msg_txt_post[hIndex].func;
retVal___ = postHookFunc(retVal___, msg_number);
}
@@ -6644,14 +7576,14 @@ const char* HP_inter_msg_txt(int msg_number) {
bool HP_inter_msg_config_read(const char *cfg_name, bool allow_override) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_inter_msg_config_read_pre ) {
+ if (HPMHooks.count.HP_inter_msg_config_read_pre > 0) {
bool (*preHookFunc) (const char **cfg_name, bool *allow_override);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_msg_config_read_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_msg_config_read_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_msg_config_read_pre[hIndex].func;
retVal___ = preHookFunc(&cfg_name, &allow_override);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6659,9 +7591,9 @@ bool HP_inter_msg_config_read(const char *cfg_name, bool allow_override) {
{
retVal___ = HPMHooks.source.inter.msg_config_read(cfg_name, allow_override);
}
- if( HPMHooks.count.HP_inter_msg_config_read_post ) {
+ if (HPMHooks.count.HP_inter_msg_config_read_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *cfg_name, bool allow_override);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_msg_config_read_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_msg_config_read_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_msg_config_read_post[hIndex].func;
retVal___ = postHookFunc(retVal___, cfg_name, allow_override);
}
@@ -6670,14 +7602,14 @@ bool HP_inter_msg_config_read(const char *cfg_name, bool allow_override) {
}
void HP_inter_do_final_msg(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_inter_do_final_msg_pre ) {
+ if (HPMHooks.count.HP_inter_do_final_msg_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_do_final_msg_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_do_final_msg_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_do_final_msg_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6685,9 +7617,9 @@ void HP_inter_do_final_msg(void) {
{
HPMHooks.source.inter.do_final_msg();
}
- if( HPMHooks.count.HP_inter_do_final_msg_post ) {
+ if (HPMHooks.count.HP_inter_do_final_msg_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_do_final_msg_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_do_final_msg_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_do_final_msg_post[hIndex].func;
postHookFunc();
}
@@ -6697,14 +7629,14 @@ void HP_inter_do_final_msg(void) {
const char* HP_inter_job_name(int class) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_inter_job_name_pre ) {
+ if (HPMHooks.count.HP_inter_job_name_pre > 0) {
const char* (*preHookFunc) (int *class);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_job_name_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_job_name_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_job_name_pre[hIndex].func;
retVal___ = preHookFunc(&class);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6712,9 +7644,9 @@ const char* HP_inter_job_name(int class) {
{
retVal___ = HPMHooks.source.inter.job_name(class);
}
- if( HPMHooks.count.HP_inter_job_name_post ) {
+ if (HPMHooks.count.HP_inter_job_name_post > 0) {
const char* (*postHookFunc) (const char* retVal___, int class);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_job_name_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_job_name_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_job_name_post[hIndex].func;
retVal___ = postHookFunc(retVal___, class);
}
@@ -6723,16 +7655,16 @@ const char* HP_inter_job_name(int class) {
}
void HP_inter_vmsg_to_fd(int fd, int u_fd, int aid, char *msg, va_list ap) {
int hIndex = 0;
- if( HPMHooks.count.HP_inter_vmsg_to_fd_pre ) {
+ if (HPMHooks.count.HP_inter_vmsg_to_fd_pre > 0) {
void (*preHookFunc) (int *fd, int *u_fd, int *aid, char **msg, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_vmsg_to_fd_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_vmsg_to_fd_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_inter_vmsg_to_fd_pre[hIndex].func;
preHookFunc(&fd, &u_fd, &aid, &msg, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6742,9 +7674,9 @@ void HP_inter_vmsg_to_fd(int fd, int u_fd, int aid, char *msg, va_list ap) {
HPMHooks.source.inter.vmsg_to_fd(fd, u_fd, aid, msg, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_inter_vmsg_to_fd_post ) {
+ if (HPMHooks.count.HP_inter_vmsg_to_fd_post > 0) {
void (*postHookFunc) (int fd, int u_fd, int aid, char *msg, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_vmsg_to_fd_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_vmsg_to_fd_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_inter_vmsg_to_fd_post[hIndex].func;
postHookFunc(fd, u_fd, aid, msg, ap___copy);
@@ -6755,14 +7687,14 @@ void HP_inter_vmsg_to_fd(int fd, int u_fd, int aid, char *msg, va_list ap) {
}
void HP_inter_savereg(int account_id, int char_id, const char *key, unsigned int index, intptr_t val, bool is_string) {
int hIndex = 0;
- if( HPMHooks.count.HP_inter_savereg_pre ) {
+ if (HPMHooks.count.HP_inter_savereg_pre > 0) {
void (*preHookFunc) (int *account_id, int *char_id, const char **key, unsigned int *index, intptr_t *val, bool *is_string);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_savereg_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_savereg_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_savereg_pre[hIndex].func;
preHookFunc(&account_id, &char_id, &key, &index, &val, &is_string);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6770,9 +7702,9 @@ void HP_inter_savereg(int account_id, int char_id, const char *key, unsigned int
{
HPMHooks.source.inter.savereg(account_id, char_id, key, index, val, is_string);
}
- if( HPMHooks.count.HP_inter_savereg_post ) {
+ if (HPMHooks.count.HP_inter_savereg_post > 0) {
void (*postHookFunc) (int account_id, int char_id, const char *key, unsigned int index, intptr_t val, bool is_string);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_savereg_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_savereg_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_savereg_post[hIndex].func;
postHookFunc(account_id, char_id, key, index, val, is_string);
}
@@ -6782,14 +7714,14 @@ void HP_inter_savereg(int account_id, int char_id, const char *key, unsigned int
int HP_inter_accreg_fromsql(int account_id, int char_id, int fd, int type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_accreg_fromsql_pre ) {
+ if (HPMHooks.count.HP_inter_accreg_fromsql_pre > 0) {
int (*preHookFunc) (int *account_id, int *char_id, int *fd, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_accreg_fromsql_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_accreg_fromsql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_accreg_fromsql_pre[hIndex].func;
retVal___ = preHookFunc(&account_id, &char_id, &fd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6797,9 +7729,9 @@ int HP_inter_accreg_fromsql(int account_id, int char_id, int fd, int type) {
{
retVal___ = HPMHooks.source.inter.accreg_fromsql(account_id, char_id, fd, type);
}
- if( HPMHooks.count.HP_inter_accreg_fromsql_post ) {
+ if (HPMHooks.count.HP_inter_accreg_fromsql_post > 0) {
int (*postHookFunc) (int retVal___, int account_id, int char_id, int fd, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_accreg_fromsql_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_accreg_fromsql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_accreg_fromsql_post[hIndex].func;
retVal___ = postHookFunc(retVal___, account_id, char_id, fd, type);
}
@@ -6809,16 +7741,16 @@ int HP_inter_accreg_fromsql(int account_id, int char_id, int fd, int type) {
int HP_inter_vlog(char *fmt, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_vlog_pre ) {
+ if (HPMHooks.count.HP_inter_vlog_pre > 0) {
int (*preHookFunc) (char **fmt, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_vlog_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_vlog_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_inter_vlog_pre[hIndex].func;
retVal___ = preHookFunc(&fmt, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6828,9 +7760,9 @@ int HP_inter_vlog(char *fmt, va_list ap) {
retVal___ = HPMHooks.source.inter.vlog(fmt, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_inter_vlog_post ) {
+ if (HPMHooks.count.HP_inter_vlog_post > 0) {
int (*postHookFunc) (int retVal___, char *fmt, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_vlog_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_vlog_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_inter_vlog_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fmt, ap___copy);
@@ -6842,14 +7774,14 @@ int HP_inter_vlog(char *fmt, va_list ap) {
int HP_inter_init_sql(const char *file) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_init_sql_pre ) {
+ if (HPMHooks.count.HP_inter_init_sql_pre > 0) {
int (*preHookFunc) (const char **file);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_init_sql_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_init_sql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_init_sql_pre[hIndex].func;
retVal___ = preHookFunc(&file);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6857,9 +7789,9 @@ int HP_inter_init_sql(const char *file) {
{
retVal___ = HPMHooks.source.inter.init_sql(file);
}
- if( HPMHooks.count.HP_inter_init_sql_post ) {
+ if (HPMHooks.count.HP_inter_init_sql_post > 0) {
int (*postHookFunc) (int retVal___, const char *file);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_init_sql_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_init_sql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_init_sql_post[hIndex].func;
retVal___ = postHookFunc(retVal___, file);
}
@@ -6869,14 +7801,14 @@ int HP_inter_init_sql(const char *file) {
int HP_inter_mapif_init(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_mapif_init_pre ) {
+ if (HPMHooks.count.HP_inter_mapif_init_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_mapif_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mapif_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_mapif_init_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6884,9 +7816,9 @@ int HP_inter_mapif_init(int fd) {
{
retVal___ = HPMHooks.source.inter.mapif_init(fd);
}
- if( HPMHooks.count.HP_inter_mapif_init_post ) {
+ if (HPMHooks.count.HP_inter_mapif_init_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_mapif_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mapif_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_mapif_init_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -6896,16 +7828,16 @@ int HP_inter_mapif_init(int fd) {
int HP_inter_check_ttl_wisdata_sub(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_check_ttl_wisdata_sub_pre ) {
+ if (HPMHooks.count.HP_inter_check_ttl_wisdata_sub_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_check_ttl_wisdata_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_check_ttl_wisdata_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_inter_check_ttl_wisdata_sub_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6915,9 +7847,9 @@ int HP_inter_check_ttl_wisdata_sub(union DBKey key, struct DBData *data, va_list
retVal___ = HPMHooks.source.inter.check_ttl_wisdata_sub(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_inter_check_ttl_wisdata_sub_post ) {
+ if (HPMHooks.count.HP_inter_check_ttl_wisdata_sub_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_check_ttl_wisdata_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_check_ttl_wisdata_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_inter_check_ttl_wisdata_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -6929,14 +7861,14 @@ int HP_inter_check_ttl_wisdata_sub(union DBKey key, struct DBData *data, va_list
int HP_inter_check_ttl_wisdata(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_check_ttl_wisdata_pre ) {
+ if (HPMHooks.count.HP_inter_check_ttl_wisdata_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_check_ttl_wisdata_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_check_ttl_wisdata_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_check_ttl_wisdata_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6944,9 +7876,9 @@ int HP_inter_check_ttl_wisdata(void) {
{
retVal___ = HPMHooks.source.inter.check_ttl_wisdata();
}
- if( HPMHooks.count.HP_inter_check_ttl_wisdata_post ) {
+ if (HPMHooks.count.HP_inter_check_ttl_wisdata_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_check_ttl_wisdata_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_check_ttl_wisdata_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_check_ttl_wisdata_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -6956,14 +7888,14 @@ int HP_inter_check_ttl_wisdata(void) {
int HP_inter_check_length(int fd, int length) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_check_length_pre ) {
+ if (HPMHooks.count.HP_inter_check_length_pre > 0) {
int (*preHookFunc) (int *fd, int *length);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_check_length_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_check_length_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_check_length_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &length);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6971,9 +7903,9 @@ int HP_inter_check_length(int fd, int length) {
{
retVal___ = HPMHooks.source.inter.check_length(fd, length);
}
- if( HPMHooks.count.HP_inter_check_length_post ) {
+ if (HPMHooks.count.HP_inter_check_length_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int length);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_check_length_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_check_length_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_check_length_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, length);
}
@@ -6983,14 +7915,14 @@ int HP_inter_check_length(int fd, int length) {
int HP_inter_parse_frommap(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_parse_frommap_pre ) {
+ if (HPMHooks.count.HP_inter_parse_frommap_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_parse_frommap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_parse_frommap_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_parse_frommap_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6998,9 +7930,9 @@ int HP_inter_parse_frommap(int fd) {
{
retVal___ = HPMHooks.source.inter.parse_frommap(fd);
}
- if( HPMHooks.count.HP_inter_parse_frommap_post ) {
+ if (HPMHooks.count.HP_inter_parse_frommap_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_parse_frommap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_parse_frommap_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_parse_frommap_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -7009,14 +7941,14 @@ int HP_inter_parse_frommap(int fd) {
}
void HP_inter_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_inter_final_pre ) {
+ if (HPMHooks.count.HP_inter_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7024,9 +7956,9 @@ void HP_inter_final(void) {
{
HPMHooks.source.inter.final();
}
- if( HPMHooks.count.HP_inter_final_post ) {
+ if (HPMHooks.count.HP_inter_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_final_post[hIndex].func;
postHookFunc();
}
@@ -7036,14 +7968,14 @@ void HP_inter_final(void) {
bool HP_inter_config_read(const char *filename, bool imported) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_inter_config_read_pre ) {
+ if (HPMHooks.count.HP_inter_config_read_pre > 0) {
bool (*preHookFunc) (const char **filename, bool *imported);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_config_read_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_config_read_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_config_read_pre[hIndex].func;
retVal___ = preHookFunc(&filename, &imported);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7051,9 +7983,9 @@ bool HP_inter_config_read(const char *filename, bool imported) {
{
retVal___ = HPMHooks.source.inter.config_read(filename, imported);
}
- if( HPMHooks.count.HP_inter_config_read_post ) {
+ if (HPMHooks.count.HP_inter_config_read_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *filename, bool imported);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_config_read_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_config_read_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_config_read_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename, imported);
}
@@ -7063,14 +7995,14 @@ bool HP_inter_config_read(const char *filename, bool imported) {
bool HP_inter_config_read_log(const char *filename, const struct config_t *config, bool imported) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_inter_config_read_log_pre ) {
+ if (HPMHooks.count.HP_inter_config_read_log_pre > 0) {
bool (*preHookFunc) (const char **filename, const struct config_t **config, bool *imported);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_config_read_log_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_config_read_log_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_config_read_log_pre[hIndex].func;
retVal___ = preHookFunc(&filename, &config, &imported);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7078,9 +8010,9 @@ bool HP_inter_config_read_log(const char *filename, const struct config_t *confi
{
retVal___ = HPMHooks.source.inter.config_read_log(filename, config, imported);
}
- if( HPMHooks.count.HP_inter_config_read_log_post ) {
+ if (HPMHooks.count.HP_inter_config_read_log_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *filename, const struct config_t *config, bool imported);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_config_read_log_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_config_read_log_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_config_read_log_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename, config, imported);
}
@@ -7090,14 +8022,14 @@ bool HP_inter_config_read_log(const char *filename, const struct config_t *confi
bool HP_inter_config_read_connection(const char *filename, const struct config_t *config, bool imported) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_inter_config_read_connection_pre ) {
+ if (HPMHooks.count.HP_inter_config_read_connection_pre > 0) {
bool (*preHookFunc) (const char **filename, const struct config_t **config, bool *imported);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_config_read_connection_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_config_read_connection_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_config_read_connection_pre[hIndex].func;
retVal___ = preHookFunc(&filename, &config, &imported);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7105,27 +8037,159 @@ bool HP_inter_config_read_connection(const char *filename, const struct config_t
{
retVal___ = HPMHooks.source.inter.config_read_connection(filename, config, imported);
}
- if( HPMHooks.count.HP_inter_config_read_connection_post ) {
+ if (HPMHooks.count.HP_inter_config_read_connection_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *filename, const struct config_t *config, bool imported);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_config_read_connection_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_config_read_connection_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_config_read_connection_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename, config, imported);
}
}
return retVal___;
}
+void HP_inter_accinfo(int u_fd, int aid, int castergroup, const char *query, int map_fd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_inter_accinfo_pre > 0) {
+ void (*preHookFunc) (int *u_fd, int *aid, int *castergroup, const char **query, int *map_fd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_accinfo_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_accinfo_pre[hIndex].func;
+ preHookFunc(&u_fd, &aid, &castergroup, &query, &map_fd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.inter.accinfo(u_fd, aid, castergroup, query, map_fd);
+ }
+ if (HPMHooks.count.HP_inter_accinfo_post > 0) {
+ void (*postHookFunc) (int u_fd, int aid, int castergroup, const char *query, int map_fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_accinfo_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_accinfo_post[hIndex].func;
+ postHookFunc(u_fd, aid, castergroup, query, map_fd);
+ }
+ }
+ return;
+}
+void HP_inter_accinfo2(bool success, int map_fd, int u_fd, int u_aid, int account_id, const char *userid, const char *user_pass, const char *email, const char *last_ip, const char *lastlogin, const char *pin_code, const char *birthdate, int group_id, int logincount, int state) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_inter_accinfo2_pre > 0) {
+ void (*preHookFunc) (bool *success, int *map_fd, int *u_fd, int *u_aid, int *account_id, const char **userid, const char **user_pass, const char **email, const char **last_ip, const char **lastlogin, const char **pin_code, const char **birthdate, int *group_id, int *logincount, int *state);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_accinfo2_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_accinfo2_pre[hIndex].func;
+ preHookFunc(&success, &map_fd, &u_fd, &u_aid, &account_id, &userid, &user_pass, &email, &last_ip, &lastlogin, &pin_code, &birthdate, &group_id, &logincount, &state);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.inter.accinfo2(success, map_fd, u_fd, u_aid, account_id, userid, user_pass, email, last_ip, lastlogin, pin_code, birthdate, group_id, logincount, state);
+ }
+ if (HPMHooks.count.HP_inter_accinfo2_post > 0) {
+ void (*postHookFunc) (bool success, int map_fd, int u_fd, int u_aid, int account_id, const char *userid, const char *user_pass, const char *email, const char *last_ip, const char *lastlogin, const char *pin_code, const char *birthdate, int group_id, int logincount, int state);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_accinfo2_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_accinfo2_post[hIndex].func;
+ postHookFunc(success, map_fd, u_fd, u_aid, account_id, userid, user_pass, email, last_ip, lastlogin, pin_code, birthdate, group_id, logincount, state);
+ }
+ }
+ return;
+}
+struct WisData* HP_inter_add_wisdata(int fd, const unsigned char *src, const unsigned char *dst, const unsigned char *msg, int msg_len) {
+ int hIndex = 0;
+ struct WisData* retVal___ = NULL;
+ if (HPMHooks.count.HP_inter_add_wisdata_pre > 0) {
+ struct WisData* (*preHookFunc) (int *fd, const unsigned char **src, const unsigned char **dst, const unsigned char **msg, int *msg_len);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_add_wisdata_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_add_wisdata_pre[hIndex].func;
+ retVal___ = preHookFunc(&fd, &src, &dst, &msg, &msg_len);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter.add_wisdata(fd, src, dst, msg, msg_len);
+ }
+ if (HPMHooks.count.HP_inter_add_wisdata_post > 0) {
+ struct WisData* (*postHookFunc) (struct WisData* retVal___, int fd, const unsigned char *src, const unsigned char *dst, const unsigned char *msg, int msg_len);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_add_wisdata_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_add_wisdata_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, fd, src, dst, msg, msg_len);
+ }
+ }
+ return retVal___;
+}
+struct WisData* HP_inter_get_wisdata(int id) {
+ int hIndex = 0;
+ struct WisData* retVal___ = NULL;
+ if (HPMHooks.count.HP_inter_get_wisdata_pre > 0) {
+ struct WisData* (*preHookFunc) (int *id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_get_wisdata_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_get_wisdata_pre[hIndex].func;
+ retVal___ = preHookFunc(&id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter.get_wisdata(id);
+ }
+ if (HPMHooks.count.HP_inter_get_wisdata_post > 0) {
+ struct WisData* (*postHookFunc) (struct WisData* retVal___, int id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_get_wisdata_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_get_wisdata_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, id);
+ }
+ }
+ return retVal___;
+}
+void HP_inter_remove_wisdata(int id) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_inter_remove_wisdata_pre > 0) {
+ void (*preHookFunc) (int *id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_remove_wisdata_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_remove_wisdata_pre[hIndex].func;
+ preHookFunc(&id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.inter.remove_wisdata(id);
+ }
+ if (HPMHooks.count.HP_inter_remove_wisdata_post > 0) {
+ void (*postHookFunc) (int id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_remove_wisdata_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_remove_wisdata_post[hIndex].func;
+ postHookFunc(id);
+ }
+ }
+ return;
+}
/* inter_mail_interface */
int HP_inter_mail_sql_init(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_mail_sql_init_pre ) {
+ if (HPMHooks.count.HP_inter_mail_sql_init_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_sql_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_sql_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_mail_sql_init_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7133,9 +8197,9 @@ int HP_inter_mail_sql_init(void) {
{
retVal___ = HPMHooks.source.inter_mail.sql_init();
}
- if( HPMHooks.count.HP_inter_mail_sql_init_post ) {
+ if (HPMHooks.count.HP_inter_mail_sql_init_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_sql_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_sql_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_mail_sql_init_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -7144,14 +8208,14 @@ int HP_inter_mail_sql_init(void) {
}
void HP_inter_mail_sql_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_inter_mail_sql_final_pre ) {
+ if (HPMHooks.count.HP_inter_mail_sql_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_sql_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_sql_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_mail_sql_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7159,9 +8223,9 @@ void HP_inter_mail_sql_final(void) {
{
HPMHooks.source.inter_mail.sql_final();
}
- if( HPMHooks.count.HP_inter_mail_sql_final_post ) {
+ if (HPMHooks.count.HP_inter_mail_sql_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_sql_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_sql_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_mail_sql_final_post[hIndex].func;
postHookFunc();
}
@@ -7171,14 +8235,14 @@ void HP_inter_mail_sql_final(void) {
int HP_inter_mail_parse_frommap(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_mail_parse_frommap_pre ) {
+ if (HPMHooks.count.HP_inter_mail_parse_frommap_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_parse_frommap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_parse_frommap_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_mail_parse_frommap_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7186,9 +8250,9 @@ int HP_inter_mail_parse_frommap(int fd) {
{
retVal___ = HPMHooks.source.inter_mail.parse_frommap(fd);
}
- if( HPMHooks.count.HP_inter_mail_parse_frommap_post ) {
+ if (HPMHooks.count.HP_inter_mail_parse_frommap_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_parse_frommap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_parse_frommap_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_mail_parse_frommap_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -7198,14 +8262,14 @@ int HP_inter_mail_parse_frommap(int fd) {
int HP_inter_mail_fromsql(int char_id, struct mail_data *md) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_mail_fromsql_pre ) {
+ if (HPMHooks.count.HP_inter_mail_fromsql_pre > 0) {
int (*preHookFunc) (int *char_id, struct mail_data **md);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_fromsql_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_fromsql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_mail_fromsql_pre[hIndex].func;
retVal___ = preHookFunc(&char_id, &md);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7213,9 +8277,9 @@ int HP_inter_mail_fromsql(int char_id, struct mail_data *md) {
{
retVal___ = HPMHooks.source.inter_mail.fromsql(char_id, md);
}
- if( HPMHooks.count.HP_inter_mail_fromsql_post ) {
+ if (HPMHooks.count.HP_inter_mail_fromsql_post > 0) {
int (*postHookFunc) (int retVal___, int char_id, struct mail_data *md);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_fromsql_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_fromsql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_mail_fromsql_post[hIndex].func;
retVal___ = postHookFunc(retVal___, char_id, md);
}
@@ -7225,14 +8289,14 @@ int HP_inter_mail_fromsql(int char_id, struct mail_data *md) {
int HP_inter_mail_savemessage(struct mail_message *msg) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_mail_savemessage_pre ) {
+ if (HPMHooks.count.HP_inter_mail_savemessage_pre > 0) {
int (*preHookFunc) (struct mail_message **msg);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_savemessage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_savemessage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_mail_savemessage_pre[hIndex].func;
retVal___ = preHookFunc(&msg);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7240,9 +8304,9 @@ int HP_inter_mail_savemessage(struct mail_message *msg) {
{
retVal___ = HPMHooks.source.inter_mail.savemessage(msg);
}
- if( HPMHooks.count.HP_inter_mail_savemessage_post ) {
+ if (HPMHooks.count.HP_inter_mail_savemessage_post > 0) {
int (*postHookFunc) (int retVal___, struct mail_message *msg);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_savemessage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_savemessage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_mail_savemessage_post[hIndex].func;
retVal___ = postHookFunc(retVal___, msg);
}
@@ -7252,14 +8316,14 @@ int HP_inter_mail_savemessage(struct mail_message *msg) {
bool HP_inter_mail_loadmessage(int mail_id, struct mail_message *msg) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_inter_mail_loadmessage_pre ) {
+ if (HPMHooks.count.HP_inter_mail_loadmessage_pre > 0) {
bool (*preHookFunc) (int *mail_id, struct mail_message **msg);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_loadmessage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_loadmessage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_mail_loadmessage_pre[hIndex].func;
retVal___ = preHookFunc(&mail_id, &msg);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7267,9 +8331,9 @@ bool HP_inter_mail_loadmessage(int mail_id, struct mail_message *msg) {
{
retVal___ = HPMHooks.source.inter_mail.loadmessage(mail_id, msg);
}
- if( HPMHooks.count.HP_inter_mail_loadmessage_post ) {
+ if (HPMHooks.count.HP_inter_mail_loadmessage_post > 0) {
bool (*postHookFunc) (bool retVal___, int mail_id, struct mail_message *msg);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_loadmessage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_loadmessage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_mail_loadmessage_post[hIndex].func;
retVal___ = postHookFunc(retVal___, mail_id, msg);
}
@@ -7279,14 +8343,14 @@ bool HP_inter_mail_loadmessage(int mail_id, struct mail_message *msg) {
bool HP_inter_mail_DeleteAttach(int mail_id) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_inter_mail_DeleteAttach_pre ) {
+ if (HPMHooks.count.HP_inter_mail_DeleteAttach_pre > 0) {
bool (*preHookFunc) (int *mail_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_DeleteAttach_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_DeleteAttach_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_mail_DeleteAttach_pre[hIndex].func;
retVal___ = preHookFunc(&mail_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7294,9 +8358,9 @@ bool HP_inter_mail_DeleteAttach(int mail_id) {
{
retVal___ = HPMHooks.source.inter_mail.DeleteAttach(mail_id);
}
- if( HPMHooks.count.HP_inter_mail_DeleteAttach_post ) {
+ if (HPMHooks.count.HP_inter_mail_DeleteAttach_post > 0) {
bool (*postHookFunc) (bool retVal___, int mail_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_DeleteAttach_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_DeleteAttach_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_mail_DeleteAttach_post[hIndex].func;
retVal___ = postHookFunc(retVal___, mail_id);
}
@@ -7305,14 +8369,14 @@ bool HP_inter_mail_DeleteAttach(int mail_id) {
}
void HP_inter_mail_sendmail(int send_id, const char *send_name, int dest_id, const char *dest_name, const char *title, const char *body, int zeny, struct item *item) {
int hIndex = 0;
- if( HPMHooks.count.HP_inter_mail_sendmail_pre ) {
+ if (HPMHooks.count.HP_inter_mail_sendmail_pre > 0) {
void (*preHookFunc) (int *send_id, const char **send_name, int *dest_id, const char **dest_name, const char **title, const char **body, int *zeny, struct item **item);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_sendmail_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_sendmail_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_mail_sendmail_pre[hIndex].func;
preHookFunc(&send_id, &send_name, &dest_id, &dest_name, &title, &body, &zeny, &item);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7320,27 +8384,162 @@ void HP_inter_mail_sendmail(int send_id, const char *send_name, int dest_id, con
{
HPMHooks.source.inter_mail.sendmail(send_id, send_name, dest_id, dest_name, title, body, zeny, item);
}
- if( HPMHooks.count.HP_inter_mail_sendmail_post ) {
+ if (HPMHooks.count.HP_inter_mail_sendmail_post > 0) {
void (*postHookFunc) (int send_id, const char *send_name, int dest_id, const char *dest_name, const char *title, const char *body, int zeny, struct item *item);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_sendmail_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_sendmail_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_mail_sendmail_post[hIndex].func;
postHookFunc(send_id, send_name, dest_id, dest_name, title, body, zeny, item);
}
}
return;
}
+bool HP_inter_mail_mark_read(int mail_id) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_mail_mark_read_pre > 0) {
+ bool (*preHookFunc) (int *mail_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_mark_read_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_mail_mark_read_pre[hIndex].func;
+ retVal___ = preHookFunc(&mail_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_mail.mark_read(mail_id);
+ }
+ if (HPMHooks.count.HP_inter_mail_mark_read_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int mail_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_mark_read_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_mail_mark_read_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, mail_id);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_mail_get_attachment(int char_id, int mail_id, struct mail_message *msg) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_mail_get_attachment_pre > 0) {
+ bool (*preHookFunc) (int *char_id, int *mail_id, struct mail_message **msg);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_get_attachment_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_mail_get_attachment_pre[hIndex].func;
+ retVal___ = preHookFunc(&char_id, &mail_id, &msg);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_mail.get_attachment(char_id, mail_id, msg);
+ }
+ if (HPMHooks.count.HP_inter_mail_get_attachment_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int char_id, int mail_id, struct mail_message *msg);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_get_attachment_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_mail_get_attachment_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, char_id, mail_id, msg);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_mail_delete(int char_id, int mail_id) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_mail_delete_pre > 0) {
+ bool (*preHookFunc) (int *char_id, int *mail_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_delete_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_mail_delete_pre[hIndex].func;
+ retVal___ = preHookFunc(&char_id, &mail_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_mail.delete(char_id, mail_id);
+ }
+ if (HPMHooks.count.HP_inter_mail_delete_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int char_id, int mail_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_delete_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_mail_delete_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, char_id, mail_id);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_mail_return_message(int char_id, int mail_id, int *new_mail) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_mail_return_message_pre > 0) {
+ bool (*preHookFunc) (int *char_id, int *mail_id, int **new_mail);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_return_message_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_mail_return_message_pre[hIndex].func;
+ retVal___ = preHookFunc(&char_id, &mail_id, &new_mail);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_mail.return_message(char_id, mail_id, new_mail);
+ }
+ if (HPMHooks.count.HP_inter_mail_return_message_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int char_id, int mail_id, int *new_mail);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_return_message_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_mail_return_message_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, char_id, mail_id, new_mail);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_mail_send(int account_id, struct mail_message *msg) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_mail_send_pre > 0) {
+ bool (*preHookFunc) (int *account_id, struct mail_message **msg);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_send_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_mail_send_pre[hIndex].func;
+ retVal___ = preHookFunc(&account_id, &msg);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_mail.send(account_id, msg);
+ }
+ if (HPMHooks.count.HP_inter_mail_send_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int account_id, struct mail_message *msg);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_send_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_mail_send_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, account_id, msg);
+ }
+ }
+ return retVal___;
+}
/* inter_mercenary_interface */
bool HP_inter_mercenary_owner_fromsql(int char_id, struct mmo_charstatus *status) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_inter_mercenary_owner_fromsql_pre ) {
+ if (HPMHooks.count.HP_inter_mercenary_owner_fromsql_pre > 0) {
bool (*preHookFunc) (int *char_id, struct mmo_charstatus **status);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_owner_fromsql_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_owner_fromsql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_mercenary_owner_fromsql_pre[hIndex].func;
retVal___ = preHookFunc(&char_id, &status);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7348,9 +8547,9 @@ bool HP_inter_mercenary_owner_fromsql(int char_id, struct mmo_charstatus *status
{
retVal___ = HPMHooks.source.inter_mercenary.owner_fromsql(char_id, status);
}
- if( HPMHooks.count.HP_inter_mercenary_owner_fromsql_post ) {
+ if (HPMHooks.count.HP_inter_mercenary_owner_fromsql_post > 0) {
bool (*postHookFunc) (bool retVal___, int char_id, struct mmo_charstatus *status);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_owner_fromsql_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_owner_fromsql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_mercenary_owner_fromsql_post[hIndex].func;
retVal___ = postHookFunc(retVal___, char_id, status);
}
@@ -7360,14 +8559,14 @@ bool HP_inter_mercenary_owner_fromsql(int char_id, struct mmo_charstatus *status
bool HP_inter_mercenary_owner_tosql(int char_id, struct mmo_charstatus *status) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_inter_mercenary_owner_tosql_pre ) {
+ if (HPMHooks.count.HP_inter_mercenary_owner_tosql_pre > 0) {
bool (*preHookFunc) (int *char_id, struct mmo_charstatus **status);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_owner_tosql_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_owner_tosql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_mercenary_owner_tosql_pre[hIndex].func;
retVal___ = preHookFunc(&char_id, &status);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7375,9 +8574,9 @@ bool HP_inter_mercenary_owner_tosql(int char_id, struct mmo_charstatus *status)
{
retVal___ = HPMHooks.source.inter_mercenary.owner_tosql(char_id, status);
}
- if( HPMHooks.count.HP_inter_mercenary_owner_tosql_post ) {
+ if (HPMHooks.count.HP_inter_mercenary_owner_tosql_post > 0) {
bool (*postHookFunc) (bool retVal___, int char_id, struct mmo_charstatus *status);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_owner_tosql_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_owner_tosql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_mercenary_owner_tosql_post[hIndex].func;
retVal___ = postHookFunc(retVal___, char_id, status);
}
@@ -7387,14 +8586,14 @@ bool HP_inter_mercenary_owner_tosql(int char_id, struct mmo_charstatus *status)
bool HP_inter_mercenary_owner_delete(int char_id) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_inter_mercenary_owner_delete_pre ) {
+ if (HPMHooks.count.HP_inter_mercenary_owner_delete_pre > 0) {
bool (*preHookFunc) (int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_owner_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_owner_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_mercenary_owner_delete_pre[hIndex].func;
retVal___ = preHookFunc(&char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7402,9 +8601,9 @@ bool HP_inter_mercenary_owner_delete(int char_id) {
{
retVal___ = HPMHooks.source.inter_mercenary.owner_delete(char_id);
}
- if( HPMHooks.count.HP_inter_mercenary_owner_delete_post ) {
+ if (HPMHooks.count.HP_inter_mercenary_owner_delete_post > 0) {
bool (*postHookFunc) (bool retVal___, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_owner_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_owner_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_mercenary_owner_delete_post[hIndex].func;
retVal___ = postHookFunc(retVal___, char_id);
}
@@ -7414,14 +8613,14 @@ bool HP_inter_mercenary_owner_delete(int char_id) {
int HP_inter_mercenary_sql_init(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_mercenary_sql_init_pre ) {
+ if (HPMHooks.count.HP_inter_mercenary_sql_init_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_sql_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_sql_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_mercenary_sql_init_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7429,9 +8628,9 @@ int HP_inter_mercenary_sql_init(void) {
{
retVal___ = HPMHooks.source.inter_mercenary.sql_init();
}
- if( HPMHooks.count.HP_inter_mercenary_sql_init_post ) {
+ if (HPMHooks.count.HP_inter_mercenary_sql_init_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_sql_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_sql_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_mercenary_sql_init_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -7440,14 +8639,14 @@ int HP_inter_mercenary_sql_init(void) {
}
void HP_inter_mercenary_sql_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_inter_mercenary_sql_final_pre ) {
+ if (HPMHooks.count.HP_inter_mercenary_sql_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_sql_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_sql_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_mercenary_sql_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7455,9 +8654,9 @@ void HP_inter_mercenary_sql_final(void) {
{
HPMHooks.source.inter_mercenary.sql_final();
}
- if( HPMHooks.count.HP_inter_mercenary_sql_final_post ) {
+ if (HPMHooks.count.HP_inter_mercenary_sql_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_sql_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_sql_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_mercenary_sql_final_post[hIndex].func;
postHookFunc();
}
@@ -7467,14 +8666,14 @@ void HP_inter_mercenary_sql_final(void) {
int HP_inter_mercenary_parse_frommap(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_mercenary_parse_frommap_pre ) {
+ if (HPMHooks.count.HP_inter_mercenary_parse_frommap_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_parse_frommap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_parse_frommap_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_mercenary_parse_frommap_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7482,27 +8681,135 @@ int HP_inter_mercenary_parse_frommap(int fd) {
{
retVal___ = HPMHooks.source.inter_mercenary.parse_frommap(fd);
}
- if( HPMHooks.count.HP_inter_mercenary_parse_frommap_post ) {
+ if (HPMHooks.count.HP_inter_mercenary_parse_frommap_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_parse_frommap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_parse_frommap_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_mercenary_parse_frommap_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
}
return retVal___;
}
+bool HP_inter_mercenary_create(struct s_mercenary *merc) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_mercenary_create_pre > 0) {
+ bool (*preHookFunc) (struct s_mercenary **merc);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_create_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_mercenary_create_pre[hIndex].func;
+ retVal___ = preHookFunc(&merc);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_mercenary.create(merc);
+ }
+ if (HPMHooks.count.HP_inter_mercenary_create_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct s_mercenary *merc);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_create_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_mercenary_create_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, merc);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_mercenary_save(const struct s_mercenary *merc) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_mercenary_save_pre > 0) {
+ bool (*preHookFunc) (const struct s_mercenary **merc);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_save_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_mercenary_save_pre[hIndex].func;
+ retVal___ = preHookFunc(&merc);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_mercenary.save(merc);
+ }
+ if (HPMHooks.count.HP_inter_mercenary_save_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const struct s_mercenary *merc);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_save_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_mercenary_save_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, merc);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_mercenary_load(int merc_id, int char_id, struct s_mercenary *merc) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_mercenary_load_pre > 0) {
+ bool (*preHookFunc) (int *merc_id, int *char_id, struct s_mercenary **merc);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_load_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_mercenary_load_pre[hIndex].func;
+ retVal___ = preHookFunc(&merc_id, &char_id, &merc);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_mercenary.load(merc_id, char_id, merc);
+ }
+ if (HPMHooks.count.HP_inter_mercenary_load_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int merc_id, int char_id, struct s_mercenary *merc);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_load_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_mercenary_load_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, merc_id, char_id, merc);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_mercenary_delete(int merc_id) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_mercenary_delete_pre > 0) {
+ bool (*preHookFunc) (int *merc_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_delete_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_mercenary_delete_pre[hIndex].func;
+ retVal___ = preHookFunc(&merc_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_mercenary.delete(merc_id);
+ }
+ if (HPMHooks.count.HP_inter_mercenary_delete_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int merc_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_delete_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_mercenary_delete_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, merc_id);
+ }
+ }
+ return retVal___;
+}
/* inter_party_interface */
int HP_inter_party_check_lv(struct party_data *p) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_party_check_lv_pre ) {
+ if (HPMHooks.count.HP_inter_party_check_lv_pre > 0) {
int (*preHookFunc) (struct party_data **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_check_lv_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_check_lv_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_party_check_lv_pre[hIndex].func;
retVal___ = preHookFunc(&p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7510,9 +8817,9 @@ int HP_inter_party_check_lv(struct party_data *p) {
{
retVal___ = HPMHooks.source.inter_party.check_lv(p);
}
- if( HPMHooks.count.HP_inter_party_check_lv_post ) {
+ if (HPMHooks.count.HP_inter_party_check_lv_post > 0) {
int (*postHookFunc) (int retVal___, struct party_data *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_check_lv_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_check_lv_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_party_check_lv_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p);
}
@@ -7521,14 +8828,14 @@ int HP_inter_party_check_lv(struct party_data *p) {
}
void HP_inter_party_calc_state(struct party_data *p) {
int hIndex = 0;
- if( HPMHooks.count.HP_inter_party_calc_state_pre ) {
+ if (HPMHooks.count.HP_inter_party_calc_state_pre > 0) {
void (*preHookFunc) (struct party_data **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_calc_state_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_calc_state_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_party_calc_state_pre[hIndex].func;
preHookFunc(&p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7536,9 +8843,9 @@ void HP_inter_party_calc_state(struct party_data *p) {
{
HPMHooks.source.inter_party.calc_state(p);
}
- if( HPMHooks.count.HP_inter_party_calc_state_post ) {
+ if (HPMHooks.count.HP_inter_party_calc_state_post > 0) {
void (*postHookFunc) (struct party_data *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_calc_state_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_calc_state_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_party_calc_state_post[hIndex].func;
postHookFunc(p);
}
@@ -7548,14 +8855,14 @@ void HP_inter_party_calc_state(struct party_data *p) {
int HP_inter_party_tosql(struct party *p, int flag, int index) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_party_tosql_pre ) {
+ if (HPMHooks.count.HP_inter_party_tosql_pre > 0) {
int (*preHookFunc) (struct party **p, int *flag, int *index);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_tosql_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_tosql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_party_tosql_pre[hIndex].func;
retVal___ = preHookFunc(&p, &flag, &index);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7563,9 +8870,9 @@ int HP_inter_party_tosql(struct party *p, int flag, int index) {
{
retVal___ = HPMHooks.source.inter_party.tosql(p, flag, index);
}
- if( HPMHooks.count.HP_inter_party_tosql_post ) {
+ if (HPMHooks.count.HP_inter_party_tosql_post > 0) {
int (*postHookFunc) (int retVal___, struct party *p, int flag, int index);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_tosql_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_tosql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_party_tosql_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p, flag, index);
}
@@ -7575,14 +8882,14 @@ int HP_inter_party_tosql(struct party *p, int flag, int index) {
struct party_data* HP_inter_party_fromsql(int party_id) {
int hIndex = 0;
struct party_data* retVal___ = NULL;
- if( HPMHooks.count.HP_inter_party_fromsql_pre ) {
+ if (HPMHooks.count.HP_inter_party_fromsql_pre > 0) {
struct party_data* (*preHookFunc) (int *party_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_fromsql_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_fromsql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_party_fromsql_pre[hIndex].func;
retVal___ = preHookFunc(&party_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7590,9 +8897,9 @@ struct party_data* HP_inter_party_fromsql(int party_id) {
{
retVal___ = HPMHooks.source.inter_party.fromsql(party_id);
}
- if( HPMHooks.count.HP_inter_party_fromsql_post ) {
+ if (HPMHooks.count.HP_inter_party_fromsql_post > 0) {
struct party_data* (*postHookFunc) (struct party_data* retVal___, int party_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_fromsql_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_fromsql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_party_fromsql_post[hIndex].func;
retVal___ = postHookFunc(retVal___, party_id);
}
@@ -7602,14 +8909,14 @@ struct party_data* HP_inter_party_fromsql(int party_id) {
int HP_inter_party_sql_init(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_party_sql_init_pre ) {
+ if (HPMHooks.count.HP_inter_party_sql_init_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_sql_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_sql_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_party_sql_init_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7617,9 +8924,9 @@ int HP_inter_party_sql_init(void) {
{
retVal___ = HPMHooks.source.inter_party.sql_init();
}
- if( HPMHooks.count.HP_inter_party_sql_init_post ) {
+ if (HPMHooks.count.HP_inter_party_sql_init_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_sql_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_sql_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_party_sql_init_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -7628,14 +8935,14 @@ int HP_inter_party_sql_init(void) {
}
void HP_inter_party_sql_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_inter_party_sql_final_pre ) {
+ if (HPMHooks.count.HP_inter_party_sql_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_sql_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_sql_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_party_sql_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7643,9 +8950,9 @@ void HP_inter_party_sql_final(void) {
{
HPMHooks.source.inter_party.sql_final();
}
- if( HPMHooks.count.HP_inter_party_sql_final_post ) {
+ if (HPMHooks.count.HP_inter_party_sql_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_sql_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_sql_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_party_sql_final_post[hIndex].func;
postHookFunc();
}
@@ -7655,14 +8962,14 @@ void HP_inter_party_sql_final(void) {
struct party_data* HP_inter_party_search_partyname(const char *str) {
int hIndex = 0;
struct party_data* retVal___ = NULL;
- if( HPMHooks.count.HP_inter_party_search_partyname_pre ) {
+ if (HPMHooks.count.HP_inter_party_search_partyname_pre > 0) {
struct party_data* (*preHookFunc) (const char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_search_partyname_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_search_partyname_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_party_search_partyname_pre[hIndex].func;
retVal___ = preHookFunc(&str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7670,9 +8977,9 @@ struct party_data* HP_inter_party_search_partyname(const char *str) {
{
retVal___ = HPMHooks.source.inter_party.search_partyname(str);
}
- if( HPMHooks.count.HP_inter_party_search_partyname_post ) {
+ if (HPMHooks.count.HP_inter_party_search_partyname_post > 0) {
struct party_data* (*postHookFunc) (struct party_data* retVal___, const char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_search_partyname_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_search_partyname_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_party_search_partyname_post[hIndex].func;
retVal___ = postHookFunc(retVal___, str);
}
@@ -7682,14 +8989,14 @@ struct party_data* HP_inter_party_search_partyname(const char *str) {
int HP_inter_party_check_exp_share(struct party_data *p) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_party_check_exp_share_pre ) {
+ if (HPMHooks.count.HP_inter_party_check_exp_share_pre > 0) {
int (*preHookFunc) (struct party_data **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_check_exp_share_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_check_exp_share_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_party_check_exp_share_pre[hIndex].func;
retVal___ = preHookFunc(&p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7697,9 +9004,9 @@ int HP_inter_party_check_exp_share(struct party_data *p) {
{
retVal___ = HPMHooks.source.inter_party.check_exp_share(p);
}
- if( HPMHooks.count.HP_inter_party_check_exp_share_post ) {
+ if (HPMHooks.count.HP_inter_party_check_exp_share_post > 0) {
int (*postHookFunc) (int retVal___, struct party_data *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_check_exp_share_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_check_exp_share_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_party_check_exp_share_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p);
}
@@ -7709,14 +9016,14 @@ int HP_inter_party_check_exp_share(struct party_data *p) {
int HP_inter_party_check_empty(struct party_data *p) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_party_check_empty_pre ) {
+ if (HPMHooks.count.HP_inter_party_check_empty_pre > 0) {
int (*preHookFunc) (struct party_data **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_check_empty_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_check_empty_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_party_check_empty_pre[hIndex].func;
retVal___ = preHookFunc(&p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7724,9 +9031,9 @@ int HP_inter_party_check_empty(struct party_data *p) {
{
retVal___ = HPMHooks.source.inter_party.check_empty(p);
}
- if( HPMHooks.count.HP_inter_party_check_empty_post ) {
+ if (HPMHooks.count.HP_inter_party_check_empty_post > 0) {
int (*postHookFunc) (int retVal___, struct party_data *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_check_empty_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_check_empty_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_party_check_empty_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p);
}
@@ -7736,14 +9043,14 @@ int HP_inter_party_check_empty(struct party_data *p) {
int HP_inter_party_parse_frommap(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_party_parse_frommap_pre ) {
+ if (HPMHooks.count.HP_inter_party_parse_frommap_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_parse_frommap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_parse_frommap_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_party_parse_frommap_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7751,26 +9058,26 @@ int HP_inter_party_parse_frommap(int fd) {
{
retVal___ = HPMHooks.source.inter_party.parse_frommap(fd);
}
- if( HPMHooks.count.HP_inter_party_parse_frommap_post ) {
+ if (HPMHooks.count.HP_inter_party_parse_frommap_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_parse_frommap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_parse_frommap_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_party_parse_frommap_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
}
return retVal___;
}
-int HP_inter_party_leave(int party_id, int account_id, int char_id) {
+bool HP_inter_party_leave(int party_id, int account_id, int char_id) {
int hIndex = 0;
- int retVal___ = 0;
- if( HPMHooks.count.HP_inter_party_leave_pre ) {
- int (*preHookFunc) (int *party_id, int *account_id, int *char_id);
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_party_leave_pre > 0) {
+ bool (*preHookFunc) (int *party_id, int *account_id, int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_leave_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_leave_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_party_leave_pre[hIndex].func;
retVal___ = preHookFunc(&party_id, &account_id, &char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7778,9 +9085,9 @@ int HP_inter_party_leave(int party_id, int account_id, int char_id) {
{
retVal___ = HPMHooks.source.inter_party.leave(party_id, account_id, char_id);
}
- if( HPMHooks.count.HP_inter_party_leave_post ) {
- int (*postHookFunc) (int retVal___, int party_id, int account_id, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_leave_post; hIndex++ ) {
+ if (HPMHooks.count.HP_inter_party_leave_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int party_id, int account_id, int char_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_leave_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_party_leave_post[hIndex].func;
retVal___ = postHookFunc(retVal___, party_id, account_id, char_id);
}
@@ -7790,14 +9097,14 @@ int HP_inter_party_leave(int party_id, int account_id, int char_id) {
int HP_inter_party_CharOnline(int char_id, int party_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_party_CharOnline_pre ) {
+ if (HPMHooks.count.HP_inter_party_CharOnline_pre > 0) {
int (*preHookFunc) (int *char_id, int *party_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_CharOnline_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_CharOnline_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_party_CharOnline_pre[hIndex].func;
retVal___ = preHookFunc(&char_id, &party_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7805,9 +9112,9 @@ int HP_inter_party_CharOnline(int char_id, int party_id) {
{
retVal___ = HPMHooks.source.inter_party.CharOnline(char_id, party_id);
}
- if( HPMHooks.count.HP_inter_party_CharOnline_post ) {
+ if (HPMHooks.count.HP_inter_party_CharOnline_post > 0) {
int (*postHookFunc) (int retVal___, int char_id, int party_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_CharOnline_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_CharOnline_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_party_CharOnline_post[hIndex].func;
retVal___ = postHookFunc(retVal___, char_id, party_id);
}
@@ -7817,14 +9124,14 @@ int HP_inter_party_CharOnline(int char_id, int party_id) {
int HP_inter_party_CharOffline(int char_id, int party_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_party_CharOffline_pre ) {
+ if (HPMHooks.count.HP_inter_party_CharOffline_pre > 0) {
int (*preHookFunc) (int *char_id, int *party_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_CharOffline_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_CharOffline_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_party_CharOffline_pre[hIndex].func;
retVal___ = preHookFunc(&char_id, &party_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7832,27 +9139,189 @@ int HP_inter_party_CharOffline(int char_id, int party_id) {
{
retVal___ = HPMHooks.source.inter_party.CharOffline(char_id, party_id);
}
- if( HPMHooks.count.HP_inter_party_CharOffline_post ) {
+ if (HPMHooks.count.HP_inter_party_CharOffline_post > 0) {
int (*postHookFunc) (int retVal___, int char_id, int party_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_CharOffline_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_CharOffline_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_party_CharOffline_post[hIndex].func;
retVal___ = postHookFunc(retVal___, char_id, party_id);
}
}
return retVal___;
}
+struct party_data* HP_inter_party_create(const char *name, int item, int item2, const struct party_member *leader) {
+ int hIndex = 0;
+ struct party_data* retVal___ = NULL;
+ if (HPMHooks.count.HP_inter_party_create_pre > 0) {
+ struct party_data* (*preHookFunc) (const char **name, int *item, int *item2, const struct party_member **leader);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_create_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_party_create_pre[hIndex].func;
+ retVal___ = preHookFunc(&name, &item, &item2, &leader);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_party.create(name, item, item2, leader);
+ }
+ if (HPMHooks.count.HP_inter_party_create_post > 0) {
+ struct party_data* (*postHookFunc) (struct party_data* retVal___, const char *name, int item, int item2, const struct party_member *leader);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_create_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_party_create_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, name, item, item2, leader);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_party_add_member(int party_id, const struct party_member *member) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_party_add_member_pre > 0) {
+ bool (*preHookFunc) (int *party_id, const struct party_member **member);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_add_member_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_party_add_member_pre[hIndex].func;
+ retVal___ = preHookFunc(&party_id, &member);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_party.add_member(party_id, member);
+ }
+ if (HPMHooks.count.HP_inter_party_add_member_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int party_id, const struct party_member *member);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_add_member_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_party_add_member_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, party_id, member);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_party_change_option(int party_id, int account_id, int exp, int item, int map_fd) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_party_change_option_pre > 0) {
+ bool (*preHookFunc) (int *party_id, int *account_id, int *exp, int *item, int *map_fd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_change_option_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_party_change_option_pre[hIndex].func;
+ retVal___ = preHookFunc(&party_id, &account_id, &exp, &item, &map_fd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_party.change_option(party_id, account_id, exp, item, map_fd);
+ }
+ if (HPMHooks.count.HP_inter_party_change_option_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int party_id, int account_id, int exp, int item, int map_fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_change_option_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_party_change_option_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, party_id, account_id, exp, item, map_fd);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_party_change_map(int party_id, int account_id, int char_id, unsigned short map, int online, unsigned int lv) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_party_change_map_pre > 0) {
+ bool (*preHookFunc) (int *party_id, int *account_id, int *char_id, unsigned short *map, int *online, unsigned int *lv);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_change_map_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_party_change_map_pre[hIndex].func;
+ retVal___ = preHookFunc(&party_id, &account_id, &char_id, &map, &online, &lv);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_party.change_map(party_id, account_id, char_id, map, online, lv);
+ }
+ if (HPMHooks.count.HP_inter_party_change_map_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int party_id, int account_id, int char_id, unsigned short map, int online, unsigned int lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_change_map_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_party_change_map_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, party_id, account_id, char_id, map, online, lv);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_party_disband(int party_id) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_party_disband_pre > 0) {
+ bool (*preHookFunc) (int *party_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_disband_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_party_disband_pre[hIndex].func;
+ retVal___ = preHookFunc(&party_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_party.disband(party_id);
+ }
+ if (HPMHooks.count.HP_inter_party_disband_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int party_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_disband_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_party_disband_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, party_id);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_party_change_leader(int party_id, int account_id, int char_id) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_party_change_leader_pre > 0) {
+ bool (*preHookFunc) (int *party_id, int *account_id, int *char_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_change_leader_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_party_change_leader_pre[hIndex].func;
+ retVal___ = preHookFunc(&party_id, &account_id, &char_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_party.change_leader(party_id, account_id, char_id);
+ }
+ if (HPMHooks.count.HP_inter_party_change_leader_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int party_id, int account_id, int char_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_change_leader_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_party_change_leader_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, party_id, account_id, char_id);
+ }
+ }
+ return retVal___;
+}
/* inter_pet_interface */
int HP_inter_pet_tosql(const struct s_pet *p) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_pet_tosql_pre ) {
+ if (HPMHooks.count.HP_inter_pet_tosql_pre > 0) {
int (*preHookFunc) (const struct s_pet **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_pet_tosql_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_pet_tosql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_pet_tosql_pre[hIndex].func;
retVal___ = preHookFunc(&p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7860,9 +9329,9 @@ int HP_inter_pet_tosql(const struct s_pet *p) {
{
retVal___ = HPMHooks.source.inter_pet.tosql(p);
}
- if( HPMHooks.count.HP_inter_pet_tosql_post ) {
+ if (HPMHooks.count.HP_inter_pet_tosql_post > 0) {
int (*postHookFunc) (int retVal___, const struct s_pet *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_pet_tosql_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_pet_tosql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_pet_tosql_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p);
}
@@ -7872,14 +9341,14 @@ int HP_inter_pet_tosql(const struct s_pet *p) {
int HP_inter_pet_fromsql(int pet_id, struct s_pet *p) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_pet_fromsql_pre ) {
+ if (HPMHooks.count.HP_inter_pet_fromsql_pre > 0) {
int (*preHookFunc) (int *pet_id, struct s_pet **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_pet_fromsql_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_pet_fromsql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_pet_fromsql_pre[hIndex].func;
retVal___ = preHookFunc(&pet_id, &p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7887,9 +9356,9 @@ int HP_inter_pet_fromsql(int pet_id, struct s_pet *p) {
{
retVal___ = HPMHooks.source.inter_pet.fromsql(pet_id, p);
}
- if( HPMHooks.count.HP_inter_pet_fromsql_post ) {
+ if (HPMHooks.count.HP_inter_pet_fromsql_post > 0) {
int (*postHookFunc) (int retVal___, int pet_id, struct s_pet *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_pet_fromsql_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_pet_fromsql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_pet_fromsql_post[hIndex].func;
retVal___ = postHookFunc(retVal___, pet_id, p);
}
@@ -7899,14 +9368,14 @@ int HP_inter_pet_fromsql(int pet_id, struct s_pet *p) {
int HP_inter_pet_sql_init(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_pet_sql_init_pre ) {
+ if (HPMHooks.count.HP_inter_pet_sql_init_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_pet_sql_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_pet_sql_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_pet_sql_init_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7914,9 +9383,9 @@ int HP_inter_pet_sql_init(void) {
{
retVal___ = HPMHooks.source.inter_pet.sql_init();
}
- if( HPMHooks.count.HP_inter_pet_sql_init_post ) {
+ if (HPMHooks.count.HP_inter_pet_sql_init_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_pet_sql_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_pet_sql_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_pet_sql_init_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -7925,14 +9394,14 @@ int HP_inter_pet_sql_init(void) {
}
void HP_inter_pet_sql_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_inter_pet_sql_final_pre ) {
+ if (HPMHooks.count.HP_inter_pet_sql_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_pet_sql_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_pet_sql_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_pet_sql_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7940,9 +9409,9 @@ void HP_inter_pet_sql_final(void) {
{
HPMHooks.source.inter_pet.sql_final();
}
- if( HPMHooks.count.HP_inter_pet_sql_final_post ) {
+ if (HPMHooks.count.HP_inter_pet_sql_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_pet_sql_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_pet_sql_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_pet_sql_final_post[hIndex].func;
postHookFunc();
}
@@ -7952,14 +9421,14 @@ void HP_inter_pet_sql_final(void) {
int HP_inter_pet_delete_(int pet_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_pet_delete__pre ) {
+ if (HPMHooks.count.HP_inter_pet_delete__pre > 0) {
int (*preHookFunc) (int *pet_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_pet_delete__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_pet_delete__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_pet_delete__pre[hIndex].func;
retVal___ = preHookFunc(&pet_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7967,9 +9436,9 @@ int HP_inter_pet_delete_(int pet_id) {
{
retVal___ = HPMHooks.source.inter_pet.delete_(pet_id);
}
- if( HPMHooks.count.HP_inter_pet_delete__post ) {
+ if (HPMHooks.count.HP_inter_pet_delete__post > 0) {
int (*postHookFunc) (int retVal___, int pet_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_pet_delete__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_pet_delete__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_pet_delete__post[hIndex].func;
retVal___ = postHookFunc(retVal___, pet_id);
}
@@ -7979,14 +9448,14 @@ int HP_inter_pet_delete_(int pet_id) {
int HP_inter_pet_parse_frommap(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_pet_parse_frommap_pre ) {
+ if (HPMHooks.count.HP_inter_pet_parse_frommap_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_pet_parse_frommap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_pet_parse_frommap_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_pet_parse_frommap_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7994,27 +9463,81 @@ int HP_inter_pet_parse_frommap(int fd) {
{
retVal___ = HPMHooks.source.inter_pet.parse_frommap(fd);
}
- if( HPMHooks.count.HP_inter_pet_parse_frommap_post ) {
+ if (HPMHooks.count.HP_inter_pet_parse_frommap_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_pet_parse_frommap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_pet_parse_frommap_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_pet_parse_frommap_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
}
return retVal___;
}
+struct s_pet* HP_inter_pet_create(int account_id, int char_id, short pet_class, short pet_lv, int pet_egg_id, int pet_equip, short intimate, short hungry, char rename_flag, char incubate, const char *pet_name) {
+ int hIndex = 0;
+ struct s_pet* retVal___ = NULL;
+ if (HPMHooks.count.HP_inter_pet_create_pre > 0) {
+ struct s_pet* (*preHookFunc) (int *account_id, int *char_id, short *pet_class, short *pet_lv, int *pet_egg_id, int *pet_equip, short *intimate, short *hungry, char *rename_flag, char *incubate, const char **pet_name);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_pet_create_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_pet_create_pre[hIndex].func;
+ retVal___ = preHookFunc(&account_id, &char_id, &pet_class, &pet_lv, &pet_egg_id, &pet_equip, &intimate, &hungry, &rename_flag, &incubate, &pet_name);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_pet.create(account_id, char_id, pet_class, pet_lv, pet_egg_id, pet_equip, intimate, hungry, rename_flag, incubate, pet_name);
+ }
+ if (HPMHooks.count.HP_inter_pet_create_post > 0) {
+ struct s_pet* (*postHookFunc) (struct s_pet* retVal___, int account_id, int char_id, short pet_class, short pet_lv, int pet_egg_id, int pet_equip, short intimate, short hungry, char rename_flag, char incubate, const char *pet_name);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_pet_create_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_pet_create_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, account_id, char_id, pet_class, pet_lv, pet_egg_id, pet_equip, intimate, hungry, rename_flag, incubate, pet_name);
+ }
+ }
+ return retVal___;
+}
+struct s_pet* HP_inter_pet_load(int account_id, int char_id, int pet_id) {
+ int hIndex = 0;
+ struct s_pet* retVal___ = NULL;
+ if (HPMHooks.count.HP_inter_pet_load_pre > 0) {
+ struct s_pet* (*preHookFunc) (int *account_id, int *char_id, int *pet_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_pet_load_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_pet_load_pre[hIndex].func;
+ retVal___ = preHookFunc(&account_id, &char_id, &pet_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_pet.load(account_id, char_id, pet_id);
+ }
+ if (HPMHooks.count.HP_inter_pet_load_post > 0) {
+ struct s_pet* (*postHookFunc) (struct s_pet* retVal___, int account_id, int char_id, int pet_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_pet_load_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_pet_load_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, account_id, char_id, pet_id);
+ }
+ }
+ return retVal___;
+}
/* inter_quest_interface */
int HP_inter_quest_parse_frommap(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_quest_parse_frommap_pre ) {
+ if (HPMHooks.count.HP_inter_quest_parse_frommap_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_quest_parse_frommap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_quest_parse_frommap_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_quest_parse_frommap_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8022,27 +9545,378 @@ int HP_inter_quest_parse_frommap(int fd) {
{
retVal___ = HPMHooks.source.inter_quest.parse_frommap(fd);
}
- if( HPMHooks.count.HP_inter_quest_parse_frommap_post ) {
+ if (HPMHooks.count.HP_inter_quest_parse_frommap_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_quest_parse_frommap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_quest_parse_frommap_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_quest_parse_frommap_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
}
return retVal___;
}
+struct quest* HP_inter_quest_fromsql(int char_id, int *count) {
+ int hIndex = 0;
+ struct quest* retVal___ = NULL;
+ if (HPMHooks.count.HP_inter_quest_fromsql_pre > 0) {
+ struct quest* (*preHookFunc) (int *char_id, int **count);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_quest_fromsql_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_quest_fromsql_pre[hIndex].func;
+ retVal___ = preHookFunc(&char_id, &count);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_quest.fromsql(char_id, count);
+ }
+ if (HPMHooks.count.HP_inter_quest_fromsql_post > 0) {
+ struct quest* (*postHookFunc) (struct quest* retVal___, int char_id, int *count);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_quest_fromsql_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_quest_fromsql_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, char_id, count);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_quest_delete(int char_id, int quest_id) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_quest_delete_pre > 0) {
+ bool (*preHookFunc) (int *char_id, int *quest_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_quest_delete_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_quest_delete_pre[hIndex].func;
+ retVal___ = preHookFunc(&char_id, &quest_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_quest.delete(char_id, quest_id);
+ }
+ if (HPMHooks.count.HP_inter_quest_delete_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int char_id, int quest_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_quest_delete_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_quest_delete_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, char_id, quest_id);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_quest_add(int char_id, struct quest qd) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_quest_add_pre > 0) {
+ bool (*preHookFunc) (int *char_id, struct quest *qd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_quest_add_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_quest_add_pre[hIndex].func;
+ retVal___ = preHookFunc(&char_id, &qd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_quest.add(char_id, qd);
+ }
+ if (HPMHooks.count.HP_inter_quest_add_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int char_id, struct quest qd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_quest_add_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_quest_add_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, char_id, qd);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_quest_update(int char_id, struct quest qd) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_quest_update_pre > 0) {
+ bool (*preHookFunc) (int *char_id, struct quest *qd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_quest_update_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_quest_update_pre[hIndex].func;
+ retVal___ = preHookFunc(&char_id, &qd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_quest.update(char_id, qd);
+ }
+ if (HPMHooks.count.HP_inter_quest_update_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int char_id, struct quest qd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_quest_update_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_quest_update_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, char_id, qd);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_quest_save(int char_id, const struct quest *new_qd, int new_n) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_quest_save_pre > 0) {
+ bool (*preHookFunc) (int *char_id, const struct quest **new_qd, int *new_n);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_quest_save_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_quest_save_pre[hIndex].func;
+ retVal___ = preHookFunc(&char_id, &new_qd, &new_n);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_quest.save(char_id, new_qd, new_n);
+ }
+ if (HPMHooks.count.HP_inter_quest_save_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int char_id, const struct quest *new_qd, int new_n);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_quest_save_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_quest_save_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, char_id, new_qd, new_n);
+ }
+ }
+ return retVal___;
+}
+/* inter_rodex_interface */
+int HP_inter_rodex_sql_init(void) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_inter_rodex_sql_init_pre > 0) {
+ int (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_sql_init_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_rodex_sql_init_pre[hIndex].func;
+ retVal___ = preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_rodex.sql_init();
+ }
+ if (HPMHooks.count.HP_inter_rodex_sql_init_post > 0) {
+ int (*postHookFunc) (int retVal___);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_sql_init_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_rodex_sql_init_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___);
+ }
+ }
+ return retVal___;
+}
+void HP_inter_rodex_sql_final(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_inter_rodex_sql_final_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_sql_final_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_rodex_sql_final_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.inter_rodex.sql_final();
+ }
+ if (HPMHooks.count.HP_inter_rodex_sql_final_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_sql_final_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_rodex_sql_final_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+int HP_inter_rodex_parse_frommap(int fd) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_inter_rodex_parse_frommap_pre > 0) {
+ int (*preHookFunc) (int *fd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_parse_frommap_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_rodex_parse_frommap_pre[hIndex].func;
+ retVal___ = preHookFunc(&fd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_rodex.parse_frommap(fd);
+ }
+ if (HPMHooks.count.HP_inter_rodex_parse_frommap_post > 0) {
+ int (*postHookFunc) (int retVal___, int fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_parse_frommap_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_rodex_parse_frommap_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, fd);
+ }
+ }
+ return retVal___;
+}
+int HP_inter_rodex_fromsql(int char_id, int account_id, int8 opentype, int64 mail_id, struct rodex_maillist *mails) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_inter_rodex_fromsql_pre > 0) {
+ int (*preHookFunc) (int *char_id, int *account_id, int8 *opentype, int64 *mail_id, struct rodex_maillist **mails);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_fromsql_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_rodex_fromsql_pre[hIndex].func;
+ retVal___ = preHookFunc(&char_id, &account_id, &opentype, &mail_id, &mails);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_rodex.fromsql(char_id, account_id, opentype, mail_id, mails);
+ }
+ if (HPMHooks.count.HP_inter_rodex_fromsql_post > 0) {
+ int (*postHookFunc) (int retVal___, int char_id, int account_id, int8 opentype, int64 mail_id, struct rodex_maillist *mails);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_fromsql_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_rodex_fromsql_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, char_id, account_id, opentype, mail_id, mails);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_rodex_hasnew(int char_id, int account_id) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_rodex_hasnew_pre > 0) {
+ bool (*preHookFunc) (int *char_id, int *account_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_hasnew_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_rodex_hasnew_pre[hIndex].func;
+ retVal___ = preHookFunc(&char_id, &account_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_rodex.hasnew(char_id, account_id);
+ }
+ if (HPMHooks.count.HP_inter_rodex_hasnew_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int char_id, int account_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_hasnew_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_rodex_hasnew_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, char_id, account_id);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_rodex_checkname(const char *name, int *target_char_id, short *target_class, int *target_level) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_rodex_checkname_pre > 0) {
+ bool (*preHookFunc) (const char **name, int **target_char_id, short **target_class, int **target_level);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_checkname_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_rodex_checkname_pre[hIndex].func;
+ retVal___ = preHookFunc(&name, &target_char_id, &target_class, &target_level);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_rodex.checkname(name, target_char_id, target_class, target_level);
+ }
+ if (HPMHooks.count.HP_inter_rodex_checkname_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *name, int *target_char_id, short *target_class, int *target_level);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_checkname_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_rodex_checkname_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, name, target_char_id, target_class, target_level);
+ }
+ }
+ return retVal___;
+}
+int64 HP_inter_rodex_savemessage(struct rodex_message *msg) {
+ int hIndex = 0;
+ int64 retVal___ = 0;
+ if (HPMHooks.count.HP_inter_rodex_savemessage_pre > 0) {
+ int64 (*preHookFunc) (struct rodex_message **msg);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_savemessage_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_rodex_savemessage_pre[hIndex].func;
+ retVal___ = preHookFunc(&msg);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_rodex.savemessage(msg);
+ }
+ if (HPMHooks.count.HP_inter_rodex_savemessage_post > 0) {
+ int64 (*postHookFunc) (int64 retVal___, struct rodex_message *msg);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_savemessage_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_rodex_savemessage_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, msg);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_rodex_updatemail(int64 mail_id, int8 flag) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_rodex_updatemail_pre > 0) {
+ bool (*preHookFunc) (int64 *mail_id, int8 *flag);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_updatemail_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_rodex_updatemail_pre[hIndex].func;
+ retVal___ = preHookFunc(&mail_id, &flag);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_rodex.updatemail(mail_id, flag);
+ }
+ if (HPMHooks.count.HP_inter_rodex_updatemail_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int64 mail_id, int8 flag);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_updatemail_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_rodex_updatemail_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, mail_id, flag);
+ }
+ }
+ return retVal___;
+}
/* inter_storage_interface */
-int HP_inter_storage_tosql(int account_id, struct storage_data *p) {
+int HP_inter_storage_tosql(int account_id, const struct storage_data *p) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_storage_tosql_pre ) {
- int (*preHookFunc) (int *account_id, struct storage_data **p);
+ if (HPMHooks.count.HP_inter_storage_tosql_pre > 0) {
+ int (*preHookFunc) (int *account_id, const struct storage_data **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_tosql_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_tosql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_storage_tosql_pre[hIndex].func;
retVal___ = preHookFunc(&account_id, &p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8050,9 +9924,9 @@ int HP_inter_storage_tosql(int account_id, struct storage_data *p) {
{
retVal___ = HPMHooks.source.inter_storage.tosql(account_id, p);
}
- if( HPMHooks.count.HP_inter_storage_tosql_post ) {
- int (*postHookFunc) (int retVal___, int account_id, struct storage_data *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_tosql_post; hIndex++ ) {
+ if (HPMHooks.count.HP_inter_storage_tosql_post > 0) {
+ int (*postHookFunc) (int retVal___, int account_id, const struct storage_data *p);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_tosql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_storage_tosql_post[hIndex].func;
retVal___ = postHookFunc(retVal___, account_id, p);
}
@@ -8062,14 +9936,14 @@ int HP_inter_storage_tosql(int account_id, struct storage_data *p) {
int HP_inter_storage_fromsql(int account_id, struct storage_data *p) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_storage_fromsql_pre ) {
+ if (HPMHooks.count.HP_inter_storage_fromsql_pre > 0) {
int (*preHookFunc) (int *account_id, struct storage_data **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_fromsql_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_fromsql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_storage_fromsql_pre[hIndex].func;
retVal___ = preHookFunc(&account_id, &p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8077,26 +9951,26 @@ int HP_inter_storage_fromsql(int account_id, struct storage_data *p) {
{
retVal___ = HPMHooks.source.inter_storage.fromsql(account_id, p);
}
- if( HPMHooks.count.HP_inter_storage_fromsql_post ) {
+ if (HPMHooks.count.HP_inter_storage_fromsql_post > 0) {
int (*postHookFunc) (int retVal___, int account_id, struct storage_data *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_fromsql_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_fromsql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_storage_fromsql_post[hIndex].func;
retVal___ = postHookFunc(retVal___, account_id, p);
}
}
return retVal___;
}
-int HP_inter_storage_guild_storage_tosql(int guild_id, const struct guild_storage *p) {
+bool HP_inter_storage_guild_storage_tosql(int guild_id, const struct guild_storage *p) {
int hIndex = 0;
- int retVal___ = 0;
- if( HPMHooks.count.HP_inter_storage_guild_storage_tosql_pre ) {
- int (*preHookFunc) (int *guild_id, const struct guild_storage **p);
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_storage_guild_storage_tosql_pre > 0) {
+ bool (*preHookFunc) (int *guild_id, const struct guild_storage **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_guild_storage_tosql_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_guild_storage_tosql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_storage_guild_storage_tosql_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8104,9 +9978,9 @@ int HP_inter_storage_guild_storage_tosql(int guild_id, const struct guild_storag
{
retVal___ = HPMHooks.source.inter_storage.guild_storage_tosql(guild_id, p);
}
- if( HPMHooks.count.HP_inter_storage_guild_storage_tosql_post ) {
- int (*postHookFunc) (int retVal___, int guild_id, const struct guild_storage *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_guild_storage_tosql_post; hIndex++ ) {
+ if (HPMHooks.count.HP_inter_storage_guild_storage_tosql_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int guild_id, const struct guild_storage *p);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_guild_storage_tosql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_storage_guild_storage_tosql_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, p);
}
@@ -8116,14 +9990,14 @@ int HP_inter_storage_guild_storage_tosql(int guild_id, const struct guild_storag
int HP_inter_storage_guild_storage_fromsql(int guild_id, struct guild_storage *p) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_storage_guild_storage_fromsql_pre ) {
+ if (HPMHooks.count.HP_inter_storage_guild_storage_fromsql_pre > 0) {
int (*preHookFunc) (int *guild_id, struct guild_storage **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_guild_storage_fromsql_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_guild_storage_fromsql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_storage_guild_storage_fromsql_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8131,9 +10005,9 @@ int HP_inter_storage_guild_storage_fromsql(int guild_id, struct guild_storage *p
{
retVal___ = HPMHooks.source.inter_storage.guild_storage_fromsql(guild_id, p);
}
- if( HPMHooks.count.HP_inter_storage_guild_storage_fromsql_post ) {
+ if (HPMHooks.count.HP_inter_storage_guild_storage_fromsql_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id, struct guild_storage *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_guild_storage_fromsql_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_guild_storage_fromsql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_storage_guild_storage_fromsql_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, p);
}
@@ -8143,14 +10017,14 @@ int HP_inter_storage_guild_storage_fromsql(int guild_id, struct guild_storage *p
int HP_inter_storage_sql_init(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_storage_sql_init_pre ) {
+ if (HPMHooks.count.HP_inter_storage_sql_init_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_sql_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_sql_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_storage_sql_init_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8158,9 +10032,9 @@ int HP_inter_storage_sql_init(void) {
{
retVal___ = HPMHooks.source.inter_storage.sql_init();
}
- if( HPMHooks.count.HP_inter_storage_sql_init_post ) {
+ if (HPMHooks.count.HP_inter_storage_sql_init_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_sql_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_sql_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_storage_sql_init_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -8169,14 +10043,14 @@ int HP_inter_storage_sql_init(void) {
}
void HP_inter_storage_sql_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_inter_storage_sql_final_pre ) {
+ if (HPMHooks.count.HP_inter_storage_sql_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_sql_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_sql_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_storage_sql_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8184,9 +10058,9 @@ void HP_inter_storage_sql_final(void) {
{
HPMHooks.source.inter_storage.sql_final();
}
- if( HPMHooks.count.HP_inter_storage_sql_final_post ) {
+ if (HPMHooks.count.HP_inter_storage_sql_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_sql_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_sql_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_storage_sql_final_post[hIndex].func;
postHookFunc();
}
@@ -8196,14 +10070,14 @@ void HP_inter_storage_sql_final(void) {
int HP_inter_storage_delete_(int account_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_storage_delete__pre ) {
+ if (HPMHooks.count.HP_inter_storage_delete__pre > 0) {
int (*preHookFunc) (int *account_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_delete__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_delete__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_storage_delete__pre[hIndex].func;
retVal___ = preHookFunc(&account_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8211,9 +10085,9 @@ int HP_inter_storage_delete_(int account_id) {
{
retVal___ = HPMHooks.source.inter_storage.delete_(account_id);
}
- if( HPMHooks.count.HP_inter_storage_delete__post ) {
+ if (HPMHooks.count.HP_inter_storage_delete__post > 0) {
int (*postHookFunc) (int retVal___, int account_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_delete__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_delete__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_storage_delete__post[hIndex].func;
retVal___ = postHookFunc(retVal___, account_id);
}
@@ -8223,14 +10097,14 @@ int HP_inter_storage_delete_(int account_id) {
int HP_inter_storage_guild_storage_delete(int guild_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_storage_guild_storage_delete_pre ) {
+ if (HPMHooks.count.HP_inter_storage_guild_storage_delete_pre > 0) {
int (*preHookFunc) (int *guild_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_guild_storage_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_guild_storage_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_storage_guild_storage_delete_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8238,9 +10112,9 @@ int HP_inter_storage_guild_storage_delete(int guild_id) {
{
retVal___ = HPMHooks.source.inter_storage.guild_storage_delete(guild_id);
}
- if( HPMHooks.count.HP_inter_storage_guild_storage_delete_post ) {
+ if (HPMHooks.count.HP_inter_storage_guild_storage_delete_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_guild_storage_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_guild_storage_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_storage_guild_storage_delete_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id);
}
@@ -8250,14 +10124,14 @@ int HP_inter_storage_guild_storage_delete(int guild_id) {
int HP_inter_storage_parse_frommap(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_inter_storage_parse_frommap_pre ) {
+ if (HPMHooks.count.HP_inter_storage_parse_frommap_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_parse_frommap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_parse_frommap_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_storage_parse_frommap_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8265,27 +10139,54 @@ int HP_inter_storage_parse_frommap(int fd) {
{
retVal___ = HPMHooks.source.inter_storage.parse_frommap(fd);
}
- if( HPMHooks.count.HP_inter_storage_parse_frommap_post ) {
+ if (HPMHooks.count.HP_inter_storage_parse_frommap_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_parse_frommap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_parse_frommap_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_storage_parse_frommap_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
}
return retVal___;
}
+bool HP_inter_storage_retrieve_bound_items(int char_id, int account_id, int guild_id) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_storage_retrieve_bound_items_pre > 0) {
+ bool (*preHookFunc) (int *char_id, int *account_id, int *guild_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_retrieve_bound_items_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_storage_retrieve_bound_items_pre[hIndex].func;
+ retVal___ = preHookFunc(&char_id, &account_id, &guild_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_storage.retrieve_bound_items(char_id, account_id, guild_id);
+ }
+ if (HPMHooks.count.HP_inter_storage_retrieve_bound_items_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int char_id, int account_id, int guild_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_retrieve_bound_items_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_storage_retrieve_bound_items_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, char_id, account_id, guild_id);
+ }
+ }
+ return retVal___;
+}
/* libconfig_interface */
int HP_libconfig_read(struct config_t *config, FILE *stream) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_read_pre ) {
+ if (HPMHooks.count.HP_libconfig_read_pre > 0) {
int (*preHookFunc) (struct config_t **config, FILE **stream);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_read_pre[hIndex].func;
retVal___ = preHookFunc(&config, &stream);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8293,9 +10194,9 @@ int HP_libconfig_read(struct config_t *config, FILE *stream) {
{
retVal___ = HPMHooks.source.libconfig.read(config, stream);
}
- if( HPMHooks.count.HP_libconfig_read_post ) {
+ if (HPMHooks.count.HP_libconfig_read_post > 0) {
int (*postHookFunc) (int retVal___, struct config_t *config, FILE *stream);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_read_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, stream);
}
@@ -8304,14 +10205,14 @@ int HP_libconfig_read(struct config_t *config, FILE *stream) {
}
void HP_libconfig_write(const struct config_t *config, FILE *stream) {
int hIndex = 0;
- if( HPMHooks.count.HP_libconfig_write_pre ) {
+ if (HPMHooks.count.HP_libconfig_write_pre > 0) {
void (*preHookFunc) (const struct config_t **config, FILE **stream);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_write_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_write_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_write_pre[hIndex].func;
preHookFunc(&config, &stream);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8319,9 +10220,9 @@ void HP_libconfig_write(const struct config_t *config, FILE *stream) {
{
HPMHooks.source.libconfig.write(config, stream);
}
- if( HPMHooks.count.HP_libconfig_write_post ) {
+ if (HPMHooks.count.HP_libconfig_write_post > 0) {
void (*postHookFunc) (const struct config_t *config, FILE *stream);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_write_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_write_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_write_post[hIndex].func;
postHookFunc(config, stream);
}
@@ -8330,14 +10231,14 @@ void HP_libconfig_write(const struct config_t *config, FILE *stream) {
}
void HP_libconfig_set_options(struct config_t *config, int options) {
int hIndex = 0;
- if( HPMHooks.count.HP_libconfig_set_options_pre ) {
+ if (HPMHooks.count.HP_libconfig_set_options_pre > 0) {
void (*preHookFunc) (struct config_t **config, int *options);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_options_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_options_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_set_options_pre[hIndex].func;
preHookFunc(&config, &options);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8345,9 +10246,9 @@ void HP_libconfig_set_options(struct config_t *config, int options) {
{
HPMHooks.source.libconfig.set_options(config, options);
}
- if( HPMHooks.count.HP_libconfig_set_options_post ) {
+ if (HPMHooks.count.HP_libconfig_set_options_post > 0) {
void (*postHookFunc) (struct config_t *config, int options);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_options_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_options_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_set_options_post[hIndex].func;
postHookFunc(config, options);
}
@@ -8357,14 +10258,14 @@ void HP_libconfig_set_options(struct config_t *config, int options) {
int HP_libconfig_get_options(const struct config_t *config) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_get_options_pre ) {
+ if (HPMHooks.count.HP_libconfig_get_options_pre > 0) {
int (*preHookFunc) (const struct config_t **config);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_get_options_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_get_options_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_get_options_pre[hIndex].func;
retVal___ = preHookFunc(&config);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8372,9 +10273,9 @@ int HP_libconfig_get_options(const struct config_t *config) {
{
retVal___ = HPMHooks.source.libconfig.get_options(config);
}
- if( HPMHooks.count.HP_libconfig_get_options_post ) {
+ if (HPMHooks.count.HP_libconfig_get_options_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_t *config);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_get_options_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_get_options_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_get_options_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config);
}
@@ -8384,14 +10285,14 @@ int HP_libconfig_get_options(const struct config_t *config) {
int HP_libconfig_read_string(struct config_t *config, const char *str) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_read_string_pre ) {
+ if (HPMHooks.count.HP_libconfig_read_string_pre > 0) {
int (*preHookFunc) (struct config_t **config, const char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_string_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_string_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_read_string_pre[hIndex].func;
retVal___ = preHookFunc(&config, &str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8399,9 +10300,9 @@ int HP_libconfig_read_string(struct config_t *config, const char *str) {
{
retVal___ = HPMHooks.source.libconfig.read_string(config, str);
}
- if( HPMHooks.count.HP_libconfig_read_string_post ) {
+ if (HPMHooks.count.HP_libconfig_read_string_post > 0) {
int (*postHookFunc) (int retVal___, struct config_t *config, const char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_string_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_string_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_read_string_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, str);
}
@@ -8411,14 +10312,14 @@ int HP_libconfig_read_string(struct config_t *config, const char *str) {
int HP_libconfig_read_file_src(struct config_t *config, const char *filename) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_read_file_src_pre ) {
+ if (HPMHooks.count.HP_libconfig_read_file_src_pre > 0) {
int (*preHookFunc) (struct config_t **config, const char **filename);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_file_src_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_file_src_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_read_file_src_pre[hIndex].func;
retVal___ = preHookFunc(&config, &filename);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8426,9 +10327,9 @@ int HP_libconfig_read_file_src(struct config_t *config, const char *filename) {
{
retVal___ = HPMHooks.source.libconfig.read_file_src(config, filename);
}
- if( HPMHooks.count.HP_libconfig_read_file_src_post ) {
+ if (HPMHooks.count.HP_libconfig_read_file_src_post > 0) {
int (*postHookFunc) (int retVal___, struct config_t *config, const char *filename);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_file_src_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_file_src_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_read_file_src_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, filename);
}
@@ -8438,14 +10339,14 @@ int HP_libconfig_read_file_src(struct config_t *config, const char *filename) {
int HP_libconfig_write_file(struct config_t *config, const char *filename) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_write_file_pre ) {
+ if (HPMHooks.count.HP_libconfig_write_file_pre > 0) {
int (*preHookFunc) (struct config_t **config, const char **filename);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_write_file_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_write_file_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_write_file_pre[hIndex].func;
retVal___ = preHookFunc(&config, &filename);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8453,9 +10354,9 @@ int HP_libconfig_write_file(struct config_t *config, const char *filename) {
{
retVal___ = HPMHooks.source.libconfig.write_file(config, filename);
}
- if( HPMHooks.count.HP_libconfig_write_file_post ) {
+ if (HPMHooks.count.HP_libconfig_write_file_post > 0) {
int (*postHookFunc) (int retVal___, struct config_t *config, const char *filename);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_write_file_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_write_file_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_write_file_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, filename);
}
@@ -8464,14 +10365,14 @@ int HP_libconfig_write_file(struct config_t *config, const char *filename) {
}
void HP_libconfig_set_destructor(struct config_t *config, void ( *destructor ) (void *)) {
int hIndex = 0;
- if( HPMHooks.count.HP_libconfig_set_destructor_pre ) {
+ if (HPMHooks.count.HP_libconfig_set_destructor_pre > 0) {
void (*preHookFunc) (struct config_t **config, void ( **destructor ) (void *));
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_destructor_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_destructor_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_set_destructor_pre[hIndex].func;
preHookFunc(&config, &destructor);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8479,9 +10380,9 @@ void HP_libconfig_set_destructor(struct config_t *config, void ( *destructor ) (
{
HPMHooks.source.libconfig.set_destructor(config, destructor);
}
- if( HPMHooks.count.HP_libconfig_set_destructor_post ) {
+ if (HPMHooks.count.HP_libconfig_set_destructor_post > 0) {
void (*postHookFunc) (struct config_t *config, void ( *destructor ) (void *));
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_destructor_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_destructor_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_set_destructor_post[hIndex].func;
postHookFunc(config, destructor);
}
@@ -8490,14 +10391,14 @@ void HP_libconfig_set_destructor(struct config_t *config, void ( *destructor ) (
}
void HP_libconfig_set_include_dir(struct config_t *config, const char *include_dir) {
int hIndex = 0;
- if( HPMHooks.count.HP_libconfig_set_include_dir_pre ) {
+ if (HPMHooks.count.HP_libconfig_set_include_dir_pre > 0) {
void (*preHookFunc) (struct config_t **config, const char **include_dir);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_include_dir_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_include_dir_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_set_include_dir_pre[hIndex].func;
preHookFunc(&config, &include_dir);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8505,9 +10406,9 @@ void HP_libconfig_set_include_dir(struct config_t *config, const char *include_d
{
HPMHooks.source.libconfig.set_include_dir(config, include_dir);
}
- if( HPMHooks.count.HP_libconfig_set_include_dir_post ) {
+ if (HPMHooks.count.HP_libconfig_set_include_dir_post > 0) {
void (*postHookFunc) (struct config_t *config, const char *include_dir);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_include_dir_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_include_dir_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_set_include_dir_post[hIndex].func;
postHookFunc(config, include_dir);
}
@@ -8516,14 +10417,14 @@ void HP_libconfig_set_include_dir(struct config_t *config, const char *include_d
}
void HP_libconfig_init(struct config_t *config) {
int hIndex = 0;
- if( HPMHooks.count.HP_libconfig_init_pre ) {
+ if (HPMHooks.count.HP_libconfig_init_pre > 0) {
void (*preHookFunc) (struct config_t **config);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_init_pre[hIndex].func;
preHookFunc(&config);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8531,9 +10432,9 @@ void HP_libconfig_init(struct config_t *config) {
{
HPMHooks.source.libconfig.init(config);
}
- if( HPMHooks.count.HP_libconfig_init_post ) {
+ if (HPMHooks.count.HP_libconfig_init_post > 0) {
void (*postHookFunc) (struct config_t *config);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_init_post[hIndex].func;
postHookFunc(config);
}
@@ -8542,14 +10443,14 @@ void HP_libconfig_init(struct config_t *config) {
}
void HP_libconfig_destroy(struct config_t *config) {
int hIndex = 0;
- if( HPMHooks.count.HP_libconfig_destroy_pre ) {
+ if (HPMHooks.count.HP_libconfig_destroy_pre > 0) {
void (*preHookFunc) (struct config_t **config);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_destroy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_destroy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_destroy_pre[hIndex].func;
preHookFunc(&config);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8557,9 +10458,9 @@ void HP_libconfig_destroy(struct config_t *config) {
{
HPMHooks.source.libconfig.destroy(config);
}
- if( HPMHooks.count.HP_libconfig_destroy_post ) {
+ if (HPMHooks.count.HP_libconfig_destroy_post > 0) {
void (*postHookFunc) (struct config_t *config);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_destroy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_destroy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_destroy_post[hIndex].func;
postHookFunc(config);
}
@@ -8569,14 +10470,14 @@ void HP_libconfig_destroy(struct config_t *config) {
int HP_libconfig_setting_get_int(const struct config_setting_t *setting) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_get_int_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_int_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_int_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8584,9 +10485,9 @@ int HP_libconfig_setting_get_int(const struct config_setting_t *setting) {
{
retVal___ = HPMHooks.source.libconfig.setting_get_int(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_get_int_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_int_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_int_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -8596,14 +10497,14 @@ int HP_libconfig_setting_get_int(const struct config_setting_t *setting) {
int64 HP_libconfig_setting_get_int64(const struct config_setting_t *setting) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_get_int64_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_int64_pre > 0) {
int64 (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int64_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int64_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_int64_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8611,9 +10512,9 @@ int64 HP_libconfig_setting_get_int64(const struct config_setting_t *setting) {
{
retVal___ = HPMHooks.source.libconfig.setting_get_int64(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_get_int64_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_int64_post > 0) {
int64 (*postHookFunc) (int64 retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int64_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int64_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_int64_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -8623,14 +10524,14 @@ int64 HP_libconfig_setting_get_int64(const struct config_setting_t *setting) {
double HP_libconfig_setting_get_float(const struct config_setting_t *setting) {
int hIndex = 0;
double retVal___ = 0.;
- if( HPMHooks.count.HP_libconfig_setting_get_float_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_float_pre > 0) {
double (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_float_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_float_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_float_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8638,9 +10539,9 @@ double HP_libconfig_setting_get_float(const struct config_setting_t *setting) {
{
retVal___ = HPMHooks.source.libconfig.setting_get_float(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_get_float_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_float_post > 0) {
double (*postHookFunc) (double retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_float_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_float_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_float_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -8650,14 +10551,14 @@ double HP_libconfig_setting_get_float(const struct config_setting_t *setting) {
int HP_libconfig_setting_get_bool(const struct config_setting_t *setting) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_get_bool_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_bool_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_bool_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8665,9 +10566,9 @@ int HP_libconfig_setting_get_bool(const struct config_setting_t *setting) {
{
retVal___ = HPMHooks.source.libconfig.setting_get_bool(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_get_bool_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_bool_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_bool_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -8677,14 +10578,14 @@ int HP_libconfig_setting_get_bool(const struct config_setting_t *setting) {
const char* HP_libconfig_setting_get_string(const struct config_setting_t *setting) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_get_string_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_string_pre > 0) {
const char* (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_string_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_string_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_string_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8692,9 +10593,9 @@ const char* HP_libconfig_setting_get_string(const struct config_setting_t *setti
{
retVal___ = HPMHooks.source.libconfig.setting_get_string(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_get_string_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_string_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_string_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_string_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_string_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -8704,14 +10605,14 @@ const char* HP_libconfig_setting_get_string(const struct config_setting_t *setti
struct config_setting_t* HP_libconfig_setting_lookup(struct config_setting_t *setting, const char *name) {
int hIndex = 0;
struct config_setting_t* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_lookup_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_pre > 0) {
struct config_setting_t* (*preHookFunc) (struct config_setting_t **setting, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8719,9 +10620,9 @@ struct config_setting_t* HP_libconfig_setting_lookup(struct config_setting_t *se
{
retVal___ = HPMHooks.source.libconfig.setting_lookup(setting, name);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_post > 0) {
struct config_setting_t* (*postHookFunc) (struct config_setting_t* retVal___, struct config_setting_t *setting, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name);
}
@@ -8731,14 +10632,14 @@ struct config_setting_t* HP_libconfig_setting_lookup(struct config_setting_t *se
int HP_libconfig_setting_lookup_int(const struct config_setting_t *setting, const char *name, int *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_lookup_int_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_int_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, const char **name, int **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_int_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8746,9 +10647,9 @@ int HP_libconfig_setting_lookup_int(const struct config_setting_t *setting, cons
{
retVal___ = HPMHooks.source.libconfig.setting_lookup_int(setting, name, value);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_int_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_int_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, const char *name, int *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_int_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name, value);
}
@@ -8758,14 +10659,14 @@ int HP_libconfig_setting_lookup_int(const struct config_setting_t *setting, cons
int HP_libconfig_setting_lookup_int64(const struct config_setting_t *setting, const char *name, int64 *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_lookup_int64_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_int64_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, const char **name, int64 **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int64_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int64_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_int64_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8773,9 +10674,9 @@ int HP_libconfig_setting_lookup_int64(const struct config_setting_t *setting, co
{
retVal___ = HPMHooks.source.libconfig.setting_lookup_int64(setting, name, value);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_int64_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_int64_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, const char *name, int64 *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int64_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int64_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_int64_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name, value);
}
@@ -8785,14 +10686,14 @@ int HP_libconfig_setting_lookup_int64(const struct config_setting_t *setting, co
int HP_libconfig_setting_lookup_float(const struct config_setting_t *setting, const char *name, double *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_lookup_float_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_float_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, const char **name, double **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_float_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_float_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_float_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8800,9 +10701,9 @@ int HP_libconfig_setting_lookup_float(const struct config_setting_t *setting, co
{
retVal___ = HPMHooks.source.libconfig.setting_lookup_float(setting, name, value);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_float_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_float_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, const char *name, double *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_float_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_float_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_float_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name, value);
}
@@ -8812,14 +10713,14 @@ int HP_libconfig_setting_lookup_float(const struct config_setting_t *setting, co
int HP_libconfig_setting_lookup_bool(const struct config_setting_t *setting, const char *name, int *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_lookup_bool_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_bool_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, const char **name, int **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_bool_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_bool_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_bool_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8827,9 +10728,9 @@ int HP_libconfig_setting_lookup_bool(const struct config_setting_t *setting, con
{
retVal___ = HPMHooks.source.libconfig.setting_lookup_bool(setting, name, value);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_bool_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_bool_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, const char *name, int *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_bool_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_bool_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_bool_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name, value);
}
@@ -8839,14 +10740,14 @@ int HP_libconfig_setting_lookup_bool(const struct config_setting_t *setting, con
int HP_libconfig_setting_lookup_string(const struct config_setting_t *setting, const char *name, const char **value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_lookup_string_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_string_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, const char **name, const char ***value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_string_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_string_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_string_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8854,9 +10755,9 @@ int HP_libconfig_setting_lookup_string(const struct config_setting_t *setting, c
{
retVal___ = HPMHooks.source.libconfig.setting_lookup_string(setting, name, value);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_string_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_string_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, const char *name, const char **value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_string_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_string_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_string_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name, value);
}
@@ -8866,14 +10767,14 @@ int HP_libconfig_setting_lookup_string(const struct config_setting_t *setting, c
int HP_libconfig_setting_set_int(struct config_setting_t *setting, int value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_set_int_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_int_pre > 0) {
int (*preHookFunc) (struct config_setting_t **setting, int *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_int_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8881,9 +10782,9 @@ int HP_libconfig_setting_set_int(struct config_setting_t *setting, int value) {
{
retVal___ = HPMHooks.source.libconfig.setting_set_int(setting, value);
}
- if( HPMHooks.count.HP_libconfig_setting_set_int_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_int_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *setting, int value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_int_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, value);
}
@@ -8893,14 +10794,14 @@ int HP_libconfig_setting_set_int(struct config_setting_t *setting, int value) {
int HP_libconfig_setting_set_int64(struct config_setting_t *setting, int64 value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_set_int64_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_int64_pre > 0) {
int (*preHookFunc) (struct config_setting_t **setting, int64 *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int64_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int64_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_int64_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8908,9 +10809,9 @@ int HP_libconfig_setting_set_int64(struct config_setting_t *setting, int64 value
{
retVal___ = HPMHooks.source.libconfig.setting_set_int64(setting, value);
}
- if( HPMHooks.count.HP_libconfig_setting_set_int64_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_int64_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *setting, int64 value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int64_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int64_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_int64_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, value);
}
@@ -8920,14 +10821,14 @@ int HP_libconfig_setting_set_int64(struct config_setting_t *setting, int64 value
int HP_libconfig_setting_set_float(struct config_setting_t *setting, double value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_set_float_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_float_pre > 0) {
int (*preHookFunc) (struct config_setting_t **setting, double *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_float_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_float_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_float_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8935,9 +10836,9 @@ int HP_libconfig_setting_set_float(struct config_setting_t *setting, double valu
{
retVal___ = HPMHooks.source.libconfig.setting_set_float(setting, value);
}
- if( HPMHooks.count.HP_libconfig_setting_set_float_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_float_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *setting, double value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_float_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_float_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_float_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, value);
}
@@ -8947,14 +10848,14 @@ int HP_libconfig_setting_set_float(struct config_setting_t *setting, double valu
int HP_libconfig_setting_set_bool(struct config_setting_t *setting, int value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_set_bool_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_bool_pre > 0) {
int (*preHookFunc) (struct config_setting_t **setting, int *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_bool_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_bool_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_bool_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8962,9 +10863,9 @@ int HP_libconfig_setting_set_bool(struct config_setting_t *setting, int value) {
{
retVal___ = HPMHooks.source.libconfig.setting_set_bool(setting, value);
}
- if( HPMHooks.count.HP_libconfig_setting_set_bool_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_bool_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *setting, int value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_bool_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_bool_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_bool_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, value);
}
@@ -8974,14 +10875,14 @@ int HP_libconfig_setting_set_bool(struct config_setting_t *setting, int value) {
int HP_libconfig_setting_set_string(struct config_setting_t *setting, const char *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_set_string_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_string_pre > 0) {
int (*preHookFunc) (struct config_setting_t **setting, const char **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_string_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_string_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_string_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8989,9 +10890,9 @@ int HP_libconfig_setting_set_string(struct config_setting_t *setting, const char
{
retVal___ = HPMHooks.source.libconfig.setting_set_string(setting, value);
}
- if( HPMHooks.count.HP_libconfig_setting_set_string_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_string_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *setting, const char *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_string_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_string_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_string_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, value);
}
@@ -9001,14 +10902,14 @@ int HP_libconfig_setting_set_string(struct config_setting_t *setting, const char
int HP_libconfig_setting_set_format(struct config_setting_t *setting, short format) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_set_format_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_format_pre > 0) {
int (*preHookFunc) (struct config_setting_t **setting, short *format);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_format_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_format_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_format_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &format);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9016,9 +10917,9 @@ int HP_libconfig_setting_set_format(struct config_setting_t *setting, short form
{
retVal___ = HPMHooks.source.libconfig.setting_set_format(setting, format);
}
- if( HPMHooks.count.HP_libconfig_setting_set_format_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_format_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *setting, short format);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_format_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_format_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_format_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, format);
}
@@ -9028,14 +10929,14 @@ int HP_libconfig_setting_set_format(struct config_setting_t *setting, short form
short HP_libconfig_setting_get_format(const struct config_setting_t *setting) {
int hIndex = 0;
short retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_get_format_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_format_pre > 0) {
short (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_format_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_format_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_format_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9043,9 +10944,9 @@ short HP_libconfig_setting_get_format(const struct config_setting_t *setting) {
{
retVal___ = HPMHooks.source.libconfig.setting_get_format(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_get_format_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_format_post > 0) {
short (*postHookFunc) (short retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_format_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_format_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_format_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -9055,14 +10956,14 @@ short HP_libconfig_setting_get_format(const struct config_setting_t *setting) {
int HP_libconfig_setting_get_int_elem(const struct config_setting_t *setting, int idx) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_get_int_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_int_elem_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_int_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9070,9 +10971,9 @@ int HP_libconfig_setting_get_int_elem(const struct config_setting_t *setting, in
{
retVal___ = HPMHooks.source.libconfig.setting_get_int_elem(setting, idx);
}
- if( HPMHooks.count.HP_libconfig_setting_get_int_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_int_elem_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_int_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx);
}
@@ -9082,14 +10983,14 @@ int HP_libconfig_setting_get_int_elem(const struct config_setting_t *setting, in
int64 HP_libconfig_setting_get_int64_elem(const struct config_setting_t *setting, int idx) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_get_int64_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_int64_elem_pre > 0) {
int64 (*preHookFunc) (const struct config_setting_t **setting, int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int64_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int64_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_int64_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9097,9 +10998,9 @@ int64 HP_libconfig_setting_get_int64_elem(const struct config_setting_t *setting
{
retVal___ = HPMHooks.source.libconfig.setting_get_int64_elem(setting, idx);
}
- if( HPMHooks.count.HP_libconfig_setting_get_int64_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_int64_elem_post > 0) {
int64 (*postHookFunc) (int64 retVal___, const struct config_setting_t *setting, int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int64_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int64_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_int64_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx);
}
@@ -9109,14 +11010,14 @@ int64 HP_libconfig_setting_get_int64_elem(const struct config_setting_t *setting
double HP_libconfig_setting_get_float_elem(const struct config_setting_t *setting, int idx) {
int hIndex = 0;
double retVal___ = 0.;
- if( HPMHooks.count.HP_libconfig_setting_get_float_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_float_elem_pre > 0) {
double (*preHookFunc) (const struct config_setting_t **setting, int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_float_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_float_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_float_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9124,9 +11025,9 @@ double HP_libconfig_setting_get_float_elem(const struct config_setting_t *settin
{
retVal___ = HPMHooks.source.libconfig.setting_get_float_elem(setting, idx);
}
- if( HPMHooks.count.HP_libconfig_setting_get_float_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_float_elem_post > 0) {
double (*postHookFunc) (double retVal___, const struct config_setting_t *setting, int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_float_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_float_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_float_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx);
}
@@ -9136,14 +11037,14 @@ double HP_libconfig_setting_get_float_elem(const struct config_setting_t *settin
int HP_libconfig_setting_get_bool_elem(const struct config_setting_t *setting, int idx) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_get_bool_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_bool_elem_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_bool_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9151,9 +11052,9 @@ int HP_libconfig_setting_get_bool_elem(const struct config_setting_t *setting, i
{
retVal___ = HPMHooks.source.libconfig.setting_get_bool_elem(setting, idx);
}
- if( HPMHooks.count.HP_libconfig_setting_get_bool_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_bool_elem_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_bool_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx);
}
@@ -9163,14 +11064,14 @@ int HP_libconfig_setting_get_bool_elem(const struct config_setting_t *setting, i
const char* HP_libconfig_setting_get_string_elem(const struct config_setting_t *setting, int idx) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_get_string_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_string_elem_pre > 0) {
const char* (*preHookFunc) (const struct config_setting_t **setting, int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_string_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_string_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_string_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9178,9 +11079,9 @@ const char* HP_libconfig_setting_get_string_elem(const struct config_setting_t *
{
retVal___ = HPMHooks.source.libconfig.setting_get_string_elem(setting, idx);
}
- if( HPMHooks.count.HP_libconfig_setting_get_string_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_string_elem_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const struct config_setting_t *setting, int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_string_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_string_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_string_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx);
}
@@ -9190,14 +11091,14 @@ const char* HP_libconfig_setting_get_string_elem(const struct config_setting_t *
struct config_setting_t* HP_libconfig_setting_set_int_elem(struct config_setting_t *setting, int idx, int value) {
int hIndex = 0;
struct config_setting_t* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_set_int_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_int_elem_pre > 0) {
struct config_setting_t* (*preHookFunc) (struct config_setting_t **setting, int *idx, int *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_int_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9205,9 +11106,9 @@ struct config_setting_t* HP_libconfig_setting_set_int_elem(struct config_setting
{
retVal___ = HPMHooks.source.libconfig.setting_set_int_elem(setting, idx, value);
}
- if( HPMHooks.count.HP_libconfig_setting_set_int_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_int_elem_post > 0) {
struct config_setting_t* (*postHookFunc) (struct config_setting_t* retVal___, struct config_setting_t *setting, int idx, int value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_int_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx, value);
}
@@ -9217,14 +11118,14 @@ struct config_setting_t* HP_libconfig_setting_set_int_elem(struct config_setting
struct config_setting_t* HP_libconfig_setting_set_int64_elem(struct config_setting_t *setting, int idx, int64 value) {
int hIndex = 0;
struct config_setting_t* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_set_int64_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_int64_elem_pre > 0) {
struct config_setting_t* (*preHookFunc) (struct config_setting_t **setting, int *idx, int64 *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int64_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int64_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_int64_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9232,9 +11133,9 @@ struct config_setting_t* HP_libconfig_setting_set_int64_elem(struct config_setti
{
retVal___ = HPMHooks.source.libconfig.setting_set_int64_elem(setting, idx, value);
}
- if( HPMHooks.count.HP_libconfig_setting_set_int64_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_int64_elem_post > 0) {
struct config_setting_t* (*postHookFunc) (struct config_setting_t* retVal___, struct config_setting_t *setting, int idx, int64 value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int64_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int64_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_int64_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx, value);
}
@@ -9244,14 +11145,14 @@ struct config_setting_t* HP_libconfig_setting_set_int64_elem(struct config_setti
struct config_setting_t* HP_libconfig_setting_set_float_elem(struct config_setting_t *setting, int idx, double value) {
int hIndex = 0;
struct config_setting_t* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_set_float_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_float_elem_pre > 0) {
struct config_setting_t* (*preHookFunc) (struct config_setting_t **setting, int *idx, double *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_float_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_float_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_float_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9259,9 +11160,9 @@ struct config_setting_t* HP_libconfig_setting_set_float_elem(struct config_setti
{
retVal___ = HPMHooks.source.libconfig.setting_set_float_elem(setting, idx, value);
}
- if( HPMHooks.count.HP_libconfig_setting_set_float_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_float_elem_post > 0) {
struct config_setting_t* (*postHookFunc) (struct config_setting_t* retVal___, struct config_setting_t *setting, int idx, double value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_float_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_float_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_float_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx, value);
}
@@ -9271,14 +11172,14 @@ struct config_setting_t* HP_libconfig_setting_set_float_elem(struct config_setti
struct config_setting_t* HP_libconfig_setting_set_bool_elem(struct config_setting_t *setting, int idx, int value) {
int hIndex = 0;
struct config_setting_t* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_set_bool_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_bool_elem_pre > 0) {
struct config_setting_t* (*preHookFunc) (struct config_setting_t **setting, int *idx, int *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_bool_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_bool_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_bool_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9286,9 +11187,9 @@ struct config_setting_t* HP_libconfig_setting_set_bool_elem(struct config_settin
{
retVal___ = HPMHooks.source.libconfig.setting_set_bool_elem(setting, idx, value);
}
- if( HPMHooks.count.HP_libconfig_setting_set_bool_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_bool_elem_post > 0) {
struct config_setting_t* (*postHookFunc) (struct config_setting_t* retVal___, struct config_setting_t *setting, int idx, int value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_bool_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_bool_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_bool_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx, value);
}
@@ -9298,14 +11199,14 @@ struct config_setting_t* HP_libconfig_setting_set_bool_elem(struct config_settin
struct config_setting_t* HP_libconfig_setting_set_string_elem(struct config_setting_t *setting, int idx, const char *value) {
int hIndex = 0;
struct config_setting_t* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_set_string_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_string_elem_pre > 0) {
struct config_setting_t* (*preHookFunc) (struct config_setting_t **setting, int *idx, const char **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_string_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_string_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_string_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9313,9 +11214,9 @@ struct config_setting_t* HP_libconfig_setting_set_string_elem(struct config_sett
{
retVal___ = HPMHooks.source.libconfig.setting_set_string_elem(setting, idx, value);
}
- if( HPMHooks.count.HP_libconfig_setting_set_string_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_string_elem_post > 0) {
struct config_setting_t* (*postHookFunc) (struct config_setting_t* retVal___, struct config_setting_t *setting, int idx, const char *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_string_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_string_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_string_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx, value);
}
@@ -9325,14 +11226,14 @@ struct config_setting_t* HP_libconfig_setting_set_string_elem(struct config_sett
int HP_libconfig_setting_index(const struct config_setting_t *setting) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_index_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_index_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_index_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_index_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_index_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9340,9 +11241,9 @@ int HP_libconfig_setting_index(const struct config_setting_t *setting) {
{
retVal___ = HPMHooks.source.libconfig.setting_index(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_index_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_index_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_index_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_index_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_index_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -9352,14 +11253,14 @@ int HP_libconfig_setting_index(const struct config_setting_t *setting) {
int HP_libconfig_setting_length(const struct config_setting_t *setting) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_length_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_length_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_length_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_length_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_length_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9367,9 +11268,9 @@ int HP_libconfig_setting_length(const struct config_setting_t *setting) {
{
retVal___ = HPMHooks.source.libconfig.setting_length(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_length_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_length_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_length_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_length_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_length_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -9379,14 +11280,14 @@ int HP_libconfig_setting_length(const struct config_setting_t *setting) {
struct config_setting_t* HP_libconfig_setting_get_elem(const struct config_setting_t *setting, unsigned int idx) {
int hIndex = 0;
struct config_setting_t* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_get_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_elem_pre > 0) {
struct config_setting_t* (*preHookFunc) (const struct config_setting_t **setting, unsigned int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9394,9 +11295,9 @@ struct config_setting_t* HP_libconfig_setting_get_elem(const struct config_setti
{
retVal___ = HPMHooks.source.libconfig.setting_get_elem(setting, idx);
}
- if( HPMHooks.count.HP_libconfig_setting_get_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_elem_post > 0) {
struct config_setting_t* (*postHookFunc) (struct config_setting_t* retVal___, const struct config_setting_t *setting, unsigned int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx);
}
@@ -9406,14 +11307,14 @@ struct config_setting_t* HP_libconfig_setting_get_elem(const struct config_setti
struct config_setting_t* HP_libconfig_setting_get_member(const struct config_setting_t *setting, const char *name) {
int hIndex = 0;
struct config_setting_t* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_get_member_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_member_pre > 0) {
struct config_setting_t* (*preHookFunc) (const struct config_setting_t **setting, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_member_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_member_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_member_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9421,9 +11322,9 @@ struct config_setting_t* HP_libconfig_setting_get_member(const struct config_set
{
retVal___ = HPMHooks.source.libconfig.setting_get_member(setting, name);
}
- if( HPMHooks.count.HP_libconfig_setting_get_member_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_member_post > 0) {
struct config_setting_t* (*postHookFunc) (struct config_setting_t* retVal___, const struct config_setting_t *setting, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_member_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_member_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_member_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name);
}
@@ -9433,14 +11334,14 @@ struct config_setting_t* HP_libconfig_setting_get_member(const struct config_set
struct config_setting_t* HP_libconfig_setting_add(struct config_setting_t *parent, const char *name, int type) {
int hIndex = 0;
struct config_setting_t* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_add_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_add_pre > 0) {
struct config_setting_t* (*preHookFunc) (struct config_setting_t **parent, const char **name, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_add_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_add_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_add_pre[hIndex].func;
retVal___ = preHookFunc(&parent, &name, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9448,9 +11349,9 @@ struct config_setting_t* HP_libconfig_setting_add(struct config_setting_t *paren
{
retVal___ = HPMHooks.source.libconfig.setting_add(parent, name, type);
}
- if( HPMHooks.count.HP_libconfig_setting_add_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_add_post > 0) {
struct config_setting_t* (*postHookFunc) (struct config_setting_t* retVal___, struct config_setting_t *parent, const char *name, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_add_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_add_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_add_post[hIndex].func;
retVal___ = postHookFunc(retVal___, parent, name, type);
}
@@ -9460,14 +11361,14 @@ struct config_setting_t* HP_libconfig_setting_add(struct config_setting_t *paren
int HP_libconfig_setting_remove(struct config_setting_t *parent, const char *name) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_remove_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_remove_pre > 0) {
int (*preHookFunc) (struct config_setting_t **parent, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_remove_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_remove_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_remove_pre[hIndex].func;
retVal___ = preHookFunc(&parent, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9475,9 +11376,9 @@ int HP_libconfig_setting_remove(struct config_setting_t *parent, const char *nam
{
retVal___ = HPMHooks.source.libconfig.setting_remove(parent, name);
}
- if( HPMHooks.count.HP_libconfig_setting_remove_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_remove_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *parent, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_remove_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_remove_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_remove_post[hIndex].func;
retVal___ = postHookFunc(retVal___, parent, name);
}
@@ -9487,14 +11388,14 @@ int HP_libconfig_setting_remove(struct config_setting_t *parent, const char *nam
int HP_libconfig_setting_remove_elem(struct config_setting_t *parent, unsigned int idx) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_remove_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_remove_elem_pre > 0) {
int (*preHookFunc) (struct config_setting_t **parent, unsigned int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_remove_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_remove_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_remove_elem_pre[hIndex].func;
retVal___ = preHookFunc(&parent, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9502,9 +11403,9 @@ int HP_libconfig_setting_remove_elem(struct config_setting_t *parent, unsigned i
{
retVal___ = HPMHooks.source.libconfig.setting_remove_elem(parent, idx);
}
- if( HPMHooks.count.HP_libconfig_setting_remove_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_remove_elem_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *parent, unsigned int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_remove_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_remove_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_remove_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, parent, idx);
}
@@ -9513,14 +11414,14 @@ int HP_libconfig_setting_remove_elem(struct config_setting_t *parent, unsigned i
}
void HP_libconfig_setting_set_hook(struct config_setting_t *setting, void *hook) {
int hIndex = 0;
- if( HPMHooks.count.HP_libconfig_setting_set_hook_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_hook_pre > 0) {
void (*preHookFunc) (struct config_setting_t **setting, void **hook);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_hook_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_hook_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_hook_pre[hIndex].func;
preHookFunc(&setting, &hook);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9528,9 +11429,9 @@ void HP_libconfig_setting_set_hook(struct config_setting_t *setting, void *hook)
{
HPMHooks.source.libconfig.setting_set_hook(setting, hook);
}
- if( HPMHooks.count.HP_libconfig_setting_set_hook_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_hook_post > 0) {
void (*postHookFunc) (struct config_setting_t *setting, void *hook);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_hook_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_hook_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_hook_post[hIndex].func;
postHookFunc(setting, hook);
}
@@ -9540,14 +11441,14 @@ void HP_libconfig_setting_set_hook(struct config_setting_t *setting, void *hook)
struct config_setting_t* HP_libconfig_lookup(const struct config_t *config, const char *filepath) {
int hIndex = 0;
struct config_setting_t* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_lookup_pre ) {
+ if (HPMHooks.count.HP_libconfig_lookup_pre > 0) {
struct config_setting_t* (*preHookFunc) (const struct config_t **config, const char **filepath);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_lookup_pre[hIndex].func;
retVal___ = preHookFunc(&config, &filepath);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9555,9 +11456,9 @@ struct config_setting_t* HP_libconfig_lookup(const struct config_t *config, cons
{
retVal___ = HPMHooks.source.libconfig.lookup(config, filepath);
}
- if( HPMHooks.count.HP_libconfig_lookup_post ) {
+ if (HPMHooks.count.HP_libconfig_lookup_post > 0) {
struct config_setting_t* (*postHookFunc) (struct config_setting_t* retVal___, const struct config_t *config, const char *filepath);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_lookup_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, filepath);
}
@@ -9567,14 +11468,14 @@ struct config_setting_t* HP_libconfig_lookup(const struct config_t *config, cons
int HP_libconfig_lookup_int(const struct config_t *config, const char *filepath, int *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_lookup_int_pre ) {
+ if (HPMHooks.count.HP_libconfig_lookup_int_pre > 0) {
int (*preHookFunc) (const struct config_t **config, const char **filepath, int **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_int_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_int_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_lookup_int_pre[hIndex].func;
retVal___ = preHookFunc(&config, &filepath, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9582,9 +11483,9 @@ int HP_libconfig_lookup_int(const struct config_t *config, const char *filepath,
{
retVal___ = HPMHooks.source.libconfig.lookup_int(config, filepath, value);
}
- if( HPMHooks.count.HP_libconfig_lookup_int_post ) {
+ if (HPMHooks.count.HP_libconfig_lookup_int_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_t *config, const char *filepath, int *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_int_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_int_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_lookup_int_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, filepath, value);
}
@@ -9594,14 +11495,14 @@ int HP_libconfig_lookup_int(const struct config_t *config, const char *filepath,
int HP_libconfig_lookup_int64(const struct config_t *config, const char *filepath, int64 *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_lookup_int64_pre ) {
+ if (HPMHooks.count.HP_libconfig_lookup_int64_pre > 0) {
int (*preHookFunc) (const struct config_t **config, const char **filepath, int64 **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_int64_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_int64_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_lookup_int64_pre[hIndex].func;
retVal___ = preHookFunc(&config, &filepath, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9609,9 +11510,9 @@ int HP_libconfig_lookup_int64(const struct config_t *config, const char *filepat
{
retVal___ = HPMHooks.source.libconfig.lookup_int64(config, filepath, value);
}
- if( HPMHooks.count.HP_libconfig_lookup_int64_post ) {
+ if (HPMHooks.count.HP_libconfig_lookup_int64_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_t *config, const char *filepath, int64 *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_int64_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_int64_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_lookup_int64_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, filepath, value);
}
@@ -9621,14 +11522,14 @@ int HP_libconfig_lookup_int64(const struct config_t *config, const char *filepat
int HP_libconfig_lookup_float(const struct config_t *config, const char *filepath, double *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_lookup_float_pre ) {
+ if (HPMHooks.count.HP_libconfig_lookup_float_pre > 0) {
int (*preHookFunc) (const struct config_t **config, const char **filepath, double **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_float_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_float_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_lookup_float_pre[hIndex].func;
retVal___ = preHookFunc(&config, &filepath, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9636,9 +11537,9 @@ int HP_libconfig_lookup_float(const struct config_t *config, const char *filepat
{
retVal___ = HPMHooks.source.libconfig.lookup_float(config, filepath, value);
}
- if( HPMHooks.count.HP_libconfig_lookup_float_post ) {
+ if (HPMHooks.count.HP_libconfig_lookup_float_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_t *config, const char *filepath, double *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_float_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_float_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_lookup_float_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, filepath, value);
}
@@ -9648,14 +11549,14 @@ int HP_libconfig_lookup_float(const struct config_t *config, const char *filepat
int HP_libconfig_lookup_bool(const struct config_t *config, const char *filepath, int *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_lookup_bool_pre ) {
+ if (HPMHooks.count.HP_libconfig_lookup_bool_pre > 0) {
int (*preHookFunc) (const struct config_t **config, const char **filepath, int **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_bool_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_bool_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_lookup_bool_pre[hIndex].func;
retVal___ = preHookFunc(&config, &filepath, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9663,9 +11564,9 @@ int HP_libconfig_lookup_bool(const struct config_t *config, const char *filepath
{
retVal___ = HPMHooks.source.libconfig.lookup_bool(config, filepath, value);
}
- if( HPMHooks.count.HP_libconfig_lookup_bool_post ) {
+ if (HPMHooks.count.HP_libconfig_lookup_bool_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_t *config, const char *filepath, int *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_bool_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_bool_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_lookup_bool_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, filepath, value);
}
@@ -9675,14 +11576,14 @@ int HP_libconfig_lookup_bool(const struct config_t *config, const char *filepath
int HP_libconfig_lookup_string(const struct config_t *config, const char *filepath, const char **value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_lookup_string_pre ) {
+ if (HPMHooks.count.HP_libconfig_lookup_string_pre > 0) {
int (*preHookFunc) (const struct config_t **config, const char **filepath, const char ***value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_string_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_string_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_lookup_string_pre[hIndex].func;
retVal___ = preHookFunc(&config, &filepath, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9690,9 +11591,9 @@ int HP_libconfig_lookup_string(const struct config_t *config, const char *filepa
{
retVal___ = HPMHooks.source.libconfig.lookup_string(config, filepath, value);
}
- if( HPMHooks.count.HP_libconfig_lookup_string_post ) {
+ if (HPMHooks.count.HP_libconfig_lookup_string_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_t *config, const char *filepath, const char **value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_string_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_string_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_lookup_string_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, filepath, value);
}
@@ -9702,14 +11603,14 @@ int HP_libconfig_lookup_string(const struct config_t *config, const char *filepa
int HP_libconfig_load_file(struct config_t *config, const char *config_filename) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_load_file_pre ) {
+ if (HPMHooks.count.HP_libconfig_load_file_pre > 0) {
int (*preHookFunc) (struct config_t **config, const char **config_filename);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_load_file_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_load_file_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_load_file_pre[hIndex].func;
retVal___ = preHookFunc(&config, &config_filename);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9717,9 +11618,9 @@ int HP_libconfig_load_file(struct config_t *config, const char *config_filename)
{
retVal___ = HPMHooks.source.libconfig.load_file(config, config_filename);
}
- if( HPMHooks.count.HP_libconfig_load_file_post ) {
+ if (HPMHooks.count.HP_libconfig_load_file_post > 0) {
int (*postHookFunc) (int retVal___, struct config_t *config, const char *config_filename);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_load_file_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_load_file_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_load_file_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, config_filename);
}
@@ -9728,14 +11629,14 @@ int HP_libconfig_load_file(struct config_t *config, const char *config_filename)
}
void HP_libconfig_setting_copy_simple(struct config_setting_t *parent, const struct config_setting_t *src) {
int hIndex = 0;
- if( HPMHooks.count.HP_libconfig_setting_copy_simple_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_copy_simple_pre > 0) {
void (*preHookFunc) (struct config_setting_t **parent, const struct config_setting_t **src);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_simple_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_simple_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_copy_simple_pre[hIndex].func;
preHookFunc(&parent, &src);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9743,9 +11644,9 @@ void HP_libconfig_setting_copy_simple(struct config_setting_t *parent, const str
{
HPMHooks.source.libconfig.setting_copy_simple(parent, src);
}
- if( HPMHooks.count.HP_libconfig_setting_copy_simple_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_copy_simple_post > 0) {
void (*postHookFunc) (struct config_setting_t *parent, const struct config_setting_t *src);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_simple_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_simple_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_copy_simple_post[hIndex].func;
postHookFunc(parent, src);
}
@@ -9754,14 +11655,14 @@ void HP_libconfig_setting_copy_simple(struct config_setting_t *parent, const str
}
void HP_libconfig_setting_copy_elem(struct config_setting_t *parent, const struct config_setting_t *src) {
int hIndex = 0;
- if( HPMHooks.count.HP_libconfig_setting_copy_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_copy_elem_pre > 0) {
void (*preHookFunc) (struct config_setting_t **parent, const struct config_setting_t **src);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_copy_elem_pre[hIndex].func;
preHookFunc(&parent, &src);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9769,9 +11670,9 @@ void HP_libconfig_setting_copy_elem(struct config_setting_t *parent, const struc
{
HPMHooks.source.libconfig.setting_copy_elem(parent, src);
}
- if( HPMHooks.count.HP_libconfig_setting_copy_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_copy_elem_post > 0) {
void (*postHookFunc) (struct config_setting_t *parent, const struct config_setting_t *src);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_copy_elem_post[hIndex].func;
postHookFunc(parent, src);
}
@@ -9780,14 +11681,14 @@ void HP_libconfig_setting_copy_elem(struct config_setting_t *parent, const struc
}
void HP_libconfig_setting_copy_aggregate(struct config_setting_t *parent, const struct config_setting_t *src) {
int hIndex = 0;
- if( HPMHooks.count.HP_libconfig_setting_copy_aggregate_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_copy_aggregate_pre > 0) {
void (*preHookFunc) (struct config_setting_t **parent, const struct config_setting_t **src);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_aggregate_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_aggregate_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_copy_aggregate_pre[hIndex].func;
preHookFunc(&parent, &src);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9795,9 +11696,9 @@ void HP_libconfig_setting_copy_aggregate(struct config_setting_t *parent, const
{
HPMHooks.source.libconfig.setting_copy_aggregate(parent, src);
}
- if( HPMHooks.count.HP_libconfig_setting_copy_aggregate_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_copy_aggregate_post > 0) {
void (*postHookFunc) (struct config_setting_t *parent, const struct config_setting_t *src);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_aggregate_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_aggregate_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_copy_aggregate_post[hIndex].func;
postHookFunc(parent, src);
}
@@ -9807,14 +11708,14 @@ void HP_libconfig_setting_copy_aggregate(struct config_setting_t *parent, const
int HP_libconfig_setting_copy(struct config_setting_t *parent, const struct config_setting_t *src) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_copy_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_copy_pre > 0) {
int (*preHookFunc) (struct config_setting_t **parent, const struct config_setting_t **src);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_copy_pre[hIndex].func;
retVal___ = preHookFunc(&parent, &src);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9822,9 +11723,9 @@ int HP_libconfig_setting_copy(struct config_setting_t *parent, const struct conf
{
retVal___ = HPMHooks.source.libconfig.setting_copy(parent, src);
}
- if( HPMHooks.count.HP_libconfig_setting_copy_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_copy_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *parent, const struct config_setting_t *src);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_copy_post[hIndex].func;
retVal___ = postHookFunc(retVal___, parent, src);
}
@@ -9834,14 +11735,14 @@ int HP_libconfig_setting_copy(struct config_setting_t *parent, const struct conf
bool HP_libconfig_setting_get_bool_real(const struct config_setting_t *setting) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_libconfig_setting_get_bool_real_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_bool_real_pre > 0) {
bool (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_real_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_real_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_bool_real_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9849,9 +11750,9 @@ bool HP_libconfig_setting_get_bool_real(const struct config_setting_t *setting)
{
retVal___ = HPMHooks.source.libconfig.setting_get_bool_real(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_get_bool_real_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_bool_real_post > 0) {
bool (*postHookFunc) (bool retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_real_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_real_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_bool_real_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -9861,14 +11762,14 @@ bool HP_libconfig_setting_get_bool_real(const struct config_setting_t *setting)
uint32 HP_libconfig_setting_get_uint32(const struct config_setting_t *setting) {
int hIndex = 0;
uint32 retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_get_uint32_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_uint32_pre > 0) {
uint32 (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_uint32_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_uint32_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_uint32_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9876,9 +11777,9 @@ uint32 HP_libconfig_setting_get_uint32(const struct config_setting_t *setting) {
{
retVal___ = HPMHooks.source.libconfig.setting_get_uint32(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_get_uint32_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_uint32_post > 0) {
uint32 (*postHookFunc) (uint32 retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_uint32_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_uint32_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_uint32_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -9888,14 +11789,14 @@ uint32 HP_libconfig_setting_get_uint32(const struct config_setting_t *setting) {
uint16 HP_libconfig_setting_get_uint16(const struct config_setting_t *setting) {
int hIndex = 0;
uint16 retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_get_uint16_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_uint16_pre > 0) {
uint16 (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_uint16_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_uint16_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_uint16_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9903,9 +11804,9 @@ uint16 HP_libconfig_setting_get_uint16(const struct config_setting_t *setting) {
{
retVal___ = HPMHooks.source.libconfig.setting_get_uint16(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_get_uint16_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_uint16_post > 0) {
uint16 (*postHookFunc) (uint16 retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_uint16_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_uint16_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_uint16_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -9915,14 +11816,14 @@ uint16 HP_libconfig_setting_get_uint16(const struct config_setting_t *setting) {
int16 HP_libconfig_setting_get_int16(const struct config_setting_t *setting) {
int hIndex = 0;
int16 retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_get_int16_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_int16_pre > 0) {
int16 (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int16_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int16_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_int16_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9930,9 +11831,9 @@ int16 HP_libconfig_setting_get_int16(const struct config_setting_t *setting) {
{
retVal___ = HPMHooks.source.libconfig.setting_get_int16(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_get_int16_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_int16_post > 0) {
int16 (*postHookFunc) (int16 retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int16_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int16_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_int16_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -9942,14 +11843,14 @@ int16 HP_libconfig_setting_get_int16(const struct config_setting_t *setting) {
int HP_libconfig_setting_lookup_bool_real(const struct config_setting_t *setting, const char *name, bool *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_lookup_bool_real_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_bool_real_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, const char **name, bool **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_bool_real_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_bool_real_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_bool_real_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9957,9 +11858,9 @@ int HP_libconfig_setting_lookup_bool_real(const struct config_setting_t *setting
{
retVal___ = HPMHooks.source.libconfig.setting_lookup_bool_real(setting, name, value);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_bool_real_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_bool_real_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, const char *name, bool *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_bool_real_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_bool_real_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_bool_real_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name, value);
}
@@ -9969,14 +11870,14 @@ int HP_libconfig_setting_lookup_bool_real(const struct config_setting_t *setting
int HP_libconfig_setting_lookup_uint32(const struct config_setting_t *setting, const char *name, uint32 *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_lookup_uint32_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_uint32_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, const char **name, uint32 **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_uint32_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_uint32_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_uint32_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9984,9 +11885,9 @@ int HP_libconfig_setting_lookup_uint32(const struct config_setting_t *setting, c
{
retVal___ = HPMHooks.source.libconfig.setting_lookup_uint32(setting, name, value);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_uint32_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_uint32_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, const char *name, uint32 *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_uint32_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_uint32_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_uint32_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name, value);
}
@@ -9996,14 +11897,14 @@ int HP_libconfig_setting_lookup_uint32(const struct config_setting_t *setting, c
int HP_libconfig_setting_lookup_uint16(const struct config_setting_t *setting, const char *name, uint16 *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_lookup_uint16_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_uint16_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, const char **name, uint16 **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_uint16_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_uint16_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_uint16_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -10011,9 +11912,9 @@ int HP_libconfig_setting_lookup_uint16(const struct config_setting_t *setting, c
{
retVal___ = HPMHooks.source.libconfig.setting_lookup_uint16(setting, name, value);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_uint16_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_uint16_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, const char *name, uint16 *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_uint16_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_uint16_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_uint16_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name, value);
}
@@ -10023,14 +11924,14 @@ int HP_libconfig_setting_lookup_uint16(const struct config_setting_t *setting, c
int HP_libconfig_setting_lookup_int16(const struct config_setting_t *setting, const char *name, int16 *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_lookup_int16_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_int16_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, const char **name, int16 **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int16_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int16_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_int16_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -10038,9 +11939,9 @@ int HP_libconfig_setting_lookup_int16(const struct config_setting_t *setting, co
{
retVal___ = HPMHooks.source.libconfig.setting_lookup_int16(setting, name, value);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_int16_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_int16_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, const char *name, int16 *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int16_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int16_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_int16_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name, value);
}
@@ -10050,14 +11951,14 @@ int HP_libconfig_setting_lookup_int16(const struct config_setting_t *setting, co
int HP_libconfig_setting_lookup_mutable_string(const struct config_setting_t *setting, const char *name, char *out, size_t out_size) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_lookup_mutable_string_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_mutable_string_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, const char **name, char **out, size_t *out_size);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_mutable_string_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_mutable_string_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_mutable_string_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name, &out, &out_size);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -10065,9 +11966,9 @@ int HP_libconfig_setting_lookup_mutable_string(const struct config_setting_t *se
{
retVal___ = HPMHooks.source.libconfig.setting_lookup_mutable_string(setting, name, out, out_size);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_mutable_string_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_mutable_string_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, const char *name, char *out, size_t out_size);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_mutable_string_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_mutable_string_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_mutable_string_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name, out, out_size);
}
@@ -10077,14 +11978,14 @@ int HP_libconfig_setting_lookup_mutable_string(const struct config_setting_t *se
int HP_libconfig_lookup_mutable_string(const struct config_t *config, const char *name, char *out, size_t out_size) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_lookup_mutable_string_pre ) {
+ if (HPMHooks.count.HP_libconfig_lookup_mutable_string_pre > 0) {
int (*preHookFunc) (const struct config_t **config, const char **name, char **out, size_t *out_size);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_mutable_string_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_mutable_string_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_lookup_mutable_string_pre[hIndex].func;
retVal___ = preHookFunc(&config, &name, &out, &out_size);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -10092,9 +11993,9 @@ int HP_libconfig_lookup_mutable_string(const struct config_t *config, const char
{
retVal___ = HPMHooks.source.libconfig.lookup_mutable_string(config, name, out, out_size);
}
- if( HPMHooks.count.HP_libconfig_lookup_mutable_string_post ) {
+ if (HPMHooks.count.HP_libconfig_lookup_mutable_string_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_t *config, const char *name, char *out, size_t out_size);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_mutable_string_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_mutable_string_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_lookup_mutable_string_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, name, out, out_size);
}
@@ -10104,14 +12005,14 @@ int HP_libconfig_lookup_mutable_string(const struct config_t *config, const char
/* loginif_interface */
void HP_loginif_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_loginif_init_pre ) {
+ if (HPMHooks.count.HP_loginif_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_loginif_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginif_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_loginif_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10119,9 +12020,9 @@ void HP_loginif_init(void) {
{
HPMHooks.source.loginif.init();
}
- if( HPMHooks.count.HP_loginif_init_post ) {
+ if (HPMHooks.count.HP_loginif_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_loginif_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginif_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_loginif_init_post[hIndex].func;
postHookFunc();
}
@@ -10130,14 +12031,14 @@ void HP_loginif_init(void) {
}
void HP_loginif_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_loginif_final_pre ) {
+ if (HPMHooks.count.HP_loginif_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_loginif_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginif_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_loginif_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10145,9 +12046,9 @@ void HP_loginif_final(void) {
{
HPMHooks.source.loginif.final();
}
- if( HPMHooks.count.HP_loginif_final_post ) {
+ if (HPMHooks.count.HP_loginif_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_loginif_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginif_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_loginif_final_post[hIndex].func;
postHookFunc();
}
@@ -10156,14 +12057,14 @@ void HP_loginif_final(void) {
}
void HP_loginif_reset(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_loginif_reset_pre ) {
+ if (HPMHooks.count.HP_loginif_reset_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_loginif_reset_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginif_reset_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_loginif_reset_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10171,9 +12072,9 @@ void HP_loginif_reset(void) {
{
HPMHooks.source.loginif.reset();
}
- if( HPMHooks.count.HP_loginif_reset_post ) {
+ if (HPMHooks.count.HP_loginif_reset_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_loginif_reset_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginif_reset_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_loginif_reset_post[hIndex].func;
postHookFunc();
}
@@ -10182,14 +12083,14 @@ void HP_loginif_reset(void) {
}
void HP_loginif_check_shutdown(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_loginif_check_shutdown_pre ) {
+ if (HPMHooks.count.HP_loginif_check_shutdown_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_loginif_check_shutdown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginif_check_shutdown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_loginif_check_shutdown_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10197,9 +12098,9 @@ void HP_loginif_check_shutdown(void) {
{
HPMHooks.source.loginif.check_shutdown();
}
- if( HPMHooks.count.HP_loginif_check_shutdown_post ) {
+ if (HPMHooks.count.HP_loginif_check_shutdown_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_loginif_check_shutdown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginif_check_shutdown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_loginif_check_shutdown_post[hIndex].func;
postHookFunc();
}
@@ -10208,14 +12109,14 @@ void HP_loginif_check_shutdown(void) {
}
void HP_loginif_on_disconnect(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_loginif_on_disconnect_pre ) {
+ if (HPMHooks.count.HP_loginif_on_disconnect_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_loginif_on_disconnect_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginif_on_disconnect_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_loginif_on_disconnect_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10223,9 +12124,9 @@ void HP_loginif_on_disconnect(void) {
{
HPMHooks.source.loginif.on_disconnect();
}
- if( HPMHooks.count.HP_loginif_on_disconnect_post ) {
+ if (HPMHooks.count.HP_loginif_on_disconnect_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_loginif_on_disconnect_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginif_on_disconnect_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_loginif_on_disconnect_post[hIndex].func;
postHookFunc();
}
@@ -10234,14 +12135,14 @@ void HP_loginif_on_disconnect(void) {
}
void HP_loginif_on_ready(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_loginif_on_ready_pre ) {
+ if (HPMHooks.count.HP_loginif_on_ready_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_loginif_on_ready_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginif_on_ready_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_loginif_on_ready_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10249,9 +12150,9 @@ void HP_loginif_on_ready(void) {
{
HPMHooks.source.loginif.on_ready();
}
- if( HPMHooks.count.HP_loginif_on_ready_post ) {
+ if (HPMHooks.count.HP_loginif_on_ready_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_loginif_on_ready_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginif_on_ready_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_loginif_on_ready_post[hIndex].func;
postHookFunc();
}
@@ -10260,14 +12161,14 @@ void HP_loginif_on_ready(void) {
}
void HP_loginif_block_account(int account_id, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_loginif_block_account_pre ) {
+ if (HPMHooks.count.HP_loginif_block_account_pre > 0) {
void (*preHookFunc) (int *account_id, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_loginif_block_account_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginif_block_account_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_loginif_block_account_pre[hIndex].func;
preHookFunc(&account_id, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10275,9 +12176,9 @@ void HP_loginif_block_account(int account_id, int flag) {
{
HPMHooks.source.loginif.block_account(account_id, flag);
}
- if( HPMHooks.count.HP_loginif_block_account_post ) {
+ if (HPMHooks.count.HP_loginif_block_account_post > 0) {
void (*postHookFunc) (int account_id, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_loginif_block_account_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginif_block_account_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_loginif_block_account_post[hIndex].func;
postHookFunc(account_id, flag);
}
@@ -10286,14 +12187,14 @@ void HP_loginif_block_account(int account_id, int flag) {
}
void HP_loginif_ban_account(int account_id, short year, short month, short day, short hour, short minute, short second) {
int hIndex = 0;
- if( HPMHooks.count.HP_loginif_ban_account_pre ) {
+ if (HPMHooks.count.HP_loginif_ban_account_pre > 0) {
void (*preHookFunc) (int *account_id, short *year, short *month, short *day, short *hour, short *minute, short *second);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_loginif_ban_account_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginif_ban_account_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_loginif_ban_account_pre[hIndex].func;
preHookFunc(&account_id, &year, &month, &day, &hour, &minute, &second);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10301,9 +12202,9 @@ void HP_loginif_ban_account(int account_id, short year, short month, short day,
{
HPMHooks.source.loginif.ban_account(account_id, year, month, day, hour, minute, second);
}
- if( HPMHooks.count.HP_loginif_ban_account_post ) {
+ if (HPMHooks.count.HP_loginif_ban_account_post > 0) {
void (*postHookFunc) (int account_id, short year, short month, short day, short hour, short minute, short second);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_loginif_ban_account_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginif_ban_account_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_loginif_ban_account_post[hIndex].func;
postHookFunc(account_id, year, month, day, hour, minute, second);
}
@@ -10312,14 +12213,14 @@ void HP_loginif_ban_account(int account_id, short year, short month, short day,
}
void HP_loginif_unban_account(int account_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_loginif_unban_account_pre ) {
+ if (HPMHooks.count.HP_loginif_unban_account_pre > 0) {
void (*preHookFunc) (int *account_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_loginif_unban_account_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginif_unban_account_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_loginif_unban_account_pre[hIndex].func;
preHookFunc(&account_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10327,9 +12228,9 @@ void HP_loginif_unban_account(int account_id) {
{
HPMHooks.source.loginif.unban_account(account_id);
}
- if( HPMHooks.count.HP_loginif_unban_account_post ) {
+ if (HPMHooks.count.HP_loginif_unban_account_post > 0) {
void (*postHookFunc) (int account_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_loginif_unban_account_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginif_unban_account_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_loginif_unban_account_post[hIndex].func;
postHookFunc(account_id);
}
@@ -10338,14 +12239,14 @@ void HP_loginif_unban_account(int account_id) {
}
void HP_loginif_changesex(int account_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_loginif_changesex_pre ) {
+ if (HPMHooks.count.HP_loginif_changesex_pre > 0) {
void (*preHookFunc) (int *account_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_loginif_changesex_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginif_changesex_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_loginif_changesex_pre[hIndex].func;
preHookFunc(&account_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10353,9 +12254,9 @@ void HP_loginif_changesex(int account_id) {
{
HPMHooks.source.loginif.changesex(account_id);
}
- if( HPMHooks.count.HP_loginif_changesex_post ) {
+ if (HPMHooks.count.HP_loginif_changesex_post > 0) {
void (*postHookFunc) (int account_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_loginif_changesex_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginif_changesex_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_loginif_changesex_post[hIndex].func;
postHookFunc(account_id);
}
@@ -10364,14 +12265,14 @@ void HP_loginif_changesex(int account_id) {
}
void HP_loginif_auth(int fd, struct char_session_data *sd, uint32 ipl) {
int hIndex = 0;
- if( HPMHooks.count.HP_loginif_auth_pre ) {
+ if (HPMHooks.count.HP_loginif_auth_pre > 0) {
void (*preHookFunc) (int *fd, struct char_session_data **sd, uint32 *ipl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_loginif_auth_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginif_auth_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_loginif_auth_pre[hIndex].func;
preHookFunc(&fd, &sd, &ipl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10379,9 +12280,9 @@ void HP_loginif_auth(int fd, struct char_session_data *sd, uint32 ipl) {
{
HPMHooks.source.loginif.auth(fd, sd, ipl);
}
- if( HPMHooks.count.HP_loginif_auth_post ) {
+ if (HPMHooks.count.HP_loginif_auth_post > 0) {
void (*postHookFunc) (int fd, struct char_session_data *sd, uint32 ipl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_loginif_auth_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginif_auth_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_loginif_auth_post[hIndex].func;
postHookFunc(fd, sd, ipl);
}
@@ -10390,14 +12291,14 @@ void HP_loginif_auth(int fd, struct char_session_data *sd, uint32 ipl) {
}
void HP_loginif_send_users_count(int users) {
int hIndex = 0;
- if( HPMHooks.count.HP_loginif_send_users_count_pre ) {
+ if (HPMHooks.count.HP_loginif_send_users_count_pre > 0) {
void (*preHookFunc) (int *users);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_loginif_send_users_count_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginif_send_users_count_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_loginif_send_users_count_pre[hIndex].func;
preHookFunc(&users);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10405,9 +12306,9 @@ void HP_loginif_send_users_count(int users) {
{
HPMHooks.source.loginif.send_users_count(users);
}
- if( HPMHooks.count.HP_loginif_send_users_count_post ) {
+ if (HPMHooks.count.HP_loginif_send_users_count_post > 0) {
void (*postHookFunc) (int users);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_loginif_send_users_count_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginif_send_users_count_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_loginif_send_users_count_post[hIndex].func;
postHookFunc(users);
}
@@ -10416,14 +12317,14 @@ void HP_loginif_send_users_count(int users) {
}
void HP_loginif_connect_to_server(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_loginif_connect_to_server_pre ) {
+ if (HPMHooks.count.HP_loginif_connect_to_server_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_loginif_connect_to_server_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginif_connect_to_server_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_loginif_connect_to_server_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10431,9 +12332,9 @@ void HP_loginif_connect_to_server(void) {
{
HPMHooks.source.loginif.connect_to_server();
}
- if( HPMHooks.count.HP_loginif_connect_to_server_post ) {
+ if (HPMHooks.count.HP_loginif_connect_to_server_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_loginif_connect_to_server_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginif_connect_to_server_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_loginif_connect_to_server_post[hIndex].func;
postHookFunc();
}
@@ -10443,14 +12344,14 @@ void HP_loginif_connect_to_server(void) {
/* mapif_interface */
void HP_mapif_ban(int id, unsigned int flag, int status) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_ban_pre ) {
+ if (HPMHooks.count.HP_mapif_ban_pre > 0) {
void (*preHookFunc) (int *id, unsigned int *flag, int *status);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_ban_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_ban_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_ban_pre[hIndex].func;
preHookFunc(&id, &flag, &status);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10458,9 +12359,9 @@ void HP_mapif_ban(int id, unsigned int flag, int status) {
{
HPMHooks.source.mapif.ban(id, flag, status);
}
- if( HPMHooks.count.HP_mapif_ban_post ) {
+ if (HPMHooks.count.HP_mapif_ban_post > 0) {
void (*postHookFunc) (int id, unsigned int flag, int status);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_ban_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_ban_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_ban_post[hIndex].func;
postHookFunc(id, flag, status);
}
@@ -10469,14 +12370,14 @@ void HP_mapif_ban(int id, unsigned int flag, int status) {
}
void HP_mapif_server_init(int id) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_server_init_pre ) {
+ if (HPMHooks.count.HP_mapif_server_init_pre > 0) {
void (*preHookFunc) (int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_server_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_server_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_server_init_pre[hIndex].func;
preHookFunc(&id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10484,9 +12385,9 @@ void HP_mapif_server_init(int id) {
{
HPMHooks.source.mapif.server_init(id);
}
- if( HPMHooks.count.HP_mapif_server_init_post ) {
+ if (HPMHooks.count.HP_mapif_server_init_post > 0) {
void (*postHookFunc) (int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_server_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_server_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_server_init_post[hIndex].func;
postHookFunc(id);
}
@@ -10495,14 +12396,14 @@ void HP_mapif_server_init(int id) {
}
void HP_mapif_server_destroy(int id) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_server_destroy_pre ) {
+ if (HPMHooks.count.HP_mapif_server_destroy_pre > 0) {
void (*preHookFunc) (int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_server_destroy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_server_destroy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_server_destroy_pre[hIndex].func;
preHookFunc(&id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10510,9 +12411,9 @@ void HP_mapif_server_destroy(int id) {
{
HPMHooks.source.mapif.server_destroy(id);
}
- if( HPMHooks.count.HP_mapif_server_destroy_post ) {
+ if (HPMHooks.count.HP_mapif_server_destroy_post > 0) {
void (*postHookFunc) (int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_server_destroy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_server_destroy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_server_destroy_post[hIndex].func;
postHookFunc(id);
}
@@ -10521,14 +12422,14 @@ void HP_mapif_server_destroy(int id) {
}
void HP_mapif_server_reset(int id) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_server_reset_pre ) {
+ if (HPMHooks.count.HP_mapif_server_reset_pre > 0) {
void (*preHookFunc) (int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_server_reset_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_server_reset_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_server_reset_pre[hIndex].func;
preHookFunc(&id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10536,9 +12437,9 @@ void HP_mapif_server_reset(int id) {
{
HPMHooks.source.mapif.server_reset(id);
}
- if( HPMHooks.count.HP_mapif_server_reset_post ) {
+ if (HPMHooks.count.HP_mapif_server_reset_post > 0) {
void (*postHookFunc) (int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_server_reset_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_server_reset_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_server_reset_post[hIndex].func;
postHookFunc(id);
}
@@ -10547,14 +12448,14 @@ void HP_mapif_server_reset(int id) {
}
void HP_mapif_on_disconnect(int id) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_on_disconnect_pre ) {
+ if (HPMHooks.count.HP_mapif_on_disconnect_pre > 0) {
void (*preHookFunc) (int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_on_disconnect_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_on_disconnect_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_on_disconnect_pre[hIndex].func;
preHookFunc(&id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10562,9 +12463,9 @@ void HP_mapif_on_disconnect(int id) {
{
HPMHooks.source.mapif.on_disconnect(id);
}
- if( HPMHooks.count.HP_mapif_on_disconnect_post ) {
+ if (HPMHooks.count.HP_mapif_on_disconnect_post > 0) {
void (*postHookFunc) (int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_on_disconnect_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_on_disconnect_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_on_disconnect_post[hIndex].func;
postHookFunc(id);
}
@@ -10573,14 +12474,14 @@ void HP_mapif_on_disconnect(int id) {
}
void HP_mapif_on_parse_accinfo(int account_id, int u_fd, int u_aid, int u_group, int map_fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_on_parse_accinfo_pre ) {
+ if (HPMHooks.count.HP_mapif_on_parse_accinfo_pre > 0) {
void (*preHookFunc) (int *account_id, int *u_fd, int *u_aid, int *u_group, int *map_fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_on_parse_accinfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_on_parse_accinfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_on_parse_accinfo_pre[hIndex].func;
preHookFunc(&account_id, &u_fd, &u_aid, &u_group, &map_fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10588,9 +12489,9 @@ void HP_mapif_on_parse_accinfo(int account_id, int u_fd, int u_aid, int u_group,
{
HPMHooks.source.mapif.on_parse_accinfo(account_id, u_fd, u_aid, u_group, map_fd);
}
- if( HPMHooks.count.HP_mapif_on_parse_accinfo_post ) {
+ if (HPMHooks.count.HP_mapif_on_parse_accinfo_post > 0) {
void (*postHookFunc) (int account_id, int u_fd, int u_aid, int u_group, int map_fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_on_parse_accinfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_on_parse_accinfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_on_parse_accinfo_post[hIndex].func;
postHookFunc(account_id, u_fd, u_aid, u_group, map_fd);
}
@@ -10599,14 +12500,14 @@ void HP_mapif_on_parse_accinfo(int account_id, int u_fd, int u_aid, int u_group,
}
void HP_mapif_char_ban(int char_id, time_t timestamp) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_char_ban_pre ) {
+ if (HPMHooks.count.HP_mapif_char_ban_pre > 0) {
void (*preHookFunc) (int *char_id, time_t *timestamp);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_char_ban_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_char_ban_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_char_ban_pre[hIndex].func;
preHookFunc(&char_id, &timestamp);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10614,9 +12515,9 @@ void HP_mapif_char_ban(int char_id, time_t timestamp) {
{
HPMHooks.source.mapif.char_ban(char_id, timestamp);
}
- if( HPMHooks.count.HP_mapif_char_ban_post ) {
+ if (HPMHooks.count.HP_mapif_char_ban_post > 0) {
void (*postHookFunc) (int char_id, time_t timestamp);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_char_ban_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_char_ban_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_char_ban_post[hIndex].func;
postHookFunc(char_id, timestamp);
}
@@ -10626,14 +12527,14 @@ void HP_mapif_char_ban(int char_id, time_t timestamp) {
int HP_mapif_sendall(const unsigned char *buf, unsigned int len) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_sendall_pre ) {
+ if (HPMHooks.count.HP_mapif_sendall_pre > 0) {
int (*preHookFunc) (const unsigned char **buf, unsigned int *len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_sendall_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_sendall_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_sendall_pre[hIndex].func;
retVal___ = preHookFunc(&buf, &len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -10641,9 +12542,9 @@ int HP_mapif_sendall(const unsigned char *buf, unsigned int len) {
{
retVal___ = HPMHooks.source.mapif.sendall(buf, len);
}
- if( HPMHooks.count.HP_mapif_sendall_post ) {
+ if (HPMHooks.count.HP_mapif_sendall_post > 0) {
int (*postHookFunc) (int retVal___, const unsigned char *buf, unsigned int len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_sendall_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_sendall_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_sendall_post[hIndex].func;
retVal___ = postHookFunc(retVal___, buf, len);
}
@@ -10653,14 +12554,14 @@ int HP_mapif_sendall(const unsigned char *buf, unsigned int len) {
int HP_mapif_sendallwos(int sfd, unsigned char *buf, unsigned int len) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_sendallwos_pre ) {
+ if (HPMHooks.count.HP_mapif_sendallwos_pre > 0) {
int (*preHookFunc) (int *sfd, unsigned char **buf, unsigned int *len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_sendallwos_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_sendallwos_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_sendallwos_pre[hIndex].func;
retVal___ = preHookFunc(&sfd, &buf, &len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -10668,9 +12569,9 @@ int HP_mapif_sendallwos(int sfd, unsigned char *buf, unsigned int len) {
{
retVal___ = HPMHooks.source.mapif.sendallwos(sfd, buf, len);
}
- if( HPMHooks.count.HP_mapif_sendallwos_post ) {
+ if (HPMHooks.count.HP_mapif_sendallwos_post > 0) {
int (*postHookFunc) (int retVal___, int sfd, unsigned char *buf, unsigned int len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_sendallwos_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_sendallwos_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_sendallwos_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sfd, buf, len);
}
@@ -10680,14 +12581,14 @@ int HP_mapif_sendallwos(int sfd, unsigned char *buf, unsigned int len) {
int HP_mapif_send(int fd, unsigned char *buf, unsigned int len) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_send_pre ) {
+ if (HPMHooks.count.HP_mapif_send_pre > 0) {
int (*preHookFunc) (int *fd, unsigned char **buf, unsigned int *len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_send_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_send_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_send_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &buf, &len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -10695,9 +12596,9 @@ int HP_mapif_send(int fd, unsigned char *buf, unsigned int len) {
{
retVal___ = HPMHooks.source.mapif.send(fd, buf, len);
}
- if( HPMHooks.count.HP_mapif_send_post ) {
+ if (HPMHooks.count.HP_mapif_send_post > 0) {
int (*postHookFunc) (int retVal___, int fd, unsigned char *buf, unsigned int len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_send_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_send_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_send_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, buf, len);
}
@@ -10706,14 +12607,14 @@ int HP_mapif_send(int fd, unsigned char *buf, unsigned int len) {
}
void HP_mapif_send_users_count(int users) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_send_users_count_pre ) {
+ if (HPMHooks.count.HP_mapif_send_users_count_pre > 0) {
void (*preHookFunc) (int *users);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_send_users_count_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_send_users_count_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_send_users_count_pre[hIndex].func;
preHookFunc(&users);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10721,25 +12622,155 @@ void HP_mapif_send_users_count(int users) {
{
HPMHooks.source.mapif.send_users_count(users);
}
- if( HPMHooks.count.HP_mapif_send_users_count_post ) {
+ if (HPMHooks.count.HP_mapif_send_users_count_post > 0) {
void (*postHookFunc) (int users);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_send_users_count_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_send_users_count_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_send_users_count_post[hIndex].func;
postHookFunc(users);
}
}
return;
}
+void HP_mapif_pLoadAchievements(int fd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_mapif_pLoadAchievements_pre > 0) {
+ void (*preHookFunc) (int *fd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_pLoadAchievements_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapif_pLoadAchievements_pre[hIndex].func;
+ preHookFunc(&fd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.mapif.pLoadAchievements(fd);
+ }
+ if (HPMHooks.count.HP_mapif_pLoadAchievements_post > 0) {
+ void (*postHookFunc) (int fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_pLoadAchievements_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapif_pLoadAchievements_post[hIndex].func;
+ postHookFunc(fd);
+ }
+ }
+ return;
+}
+void HP_mapif_sAchievementsToMap(int fd, int char_id, const struct char_achievements *p) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_mapif_sAchievementsToMap_pre > 0) {
+ void (*preHookFunc) (int *fd, int *char_id, const struct char_achievements **p);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_sAchievementsToMap_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapif_sAchievementsToMap_pre[hIndex].func;
+ preHookFunc(&fd, &char_id, &p);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.mapif.sAchievementsToMap(fd, char_id, p);
+ }
+ if (HPMHooks.count.HP_mapif_sAchievementsToMap_post > 0) {
+ void (*postHookFunc) (int fd, int char_id, const struct char_achievements *p);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_sAchievementsToMap_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapif_sAchievementsToMap_post[hIndex].func;
+ postHookFunc(fd, char_id, p);
+ }
+ }
+ return;
+}
+void HP_mapif_pSaveAchievements(int fd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_mapif_pSaveAchievements_pre > 0) {
+ void (*preHookFunc) (int *fd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_pSaveAchievements_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapif_pSaveAchievements_pre[hIndex].func;
+ preHookFunc(&fd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.mapif.pSaveAchievements(fd);
+ }
+ if (HPMHooks.count.HP_mapif_pSaveAchievements_post > 0) {
+ void (*postHookFunc) (int fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_pSaveAchievements_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapif_pSaveAchievements_post[hIndex].func;
+ postHookFunc(fd);
+ }
+ }
+ return;
+}
+void HP_mapif_achievement_load(int fd, int char_id) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_mapif_achievement_load_pre > 0) {
+ void (*preHookFunc) (int *fd, int *char_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_achievement_load_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapif_achievement_load_pre[hIndex].func;
+ preHookFunc(&fd, &char_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.mapif.achievement_load(fd, char_id);
+ }
+ if (HPMHooks.count.HP_mapif_achievement_load_post > 0) {
+ void (*postHookFunc) (int fd, int char_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_achievement_load_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapif_achievement_load_post[hIndex].func;
+ postHookFunc(fd, char_id);
+ }
+ }
+ return;
+}
+void HP_mapif_achievement_save(int char_id, struct char_achievements *p) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_mapif_achievement_save_pre > 0) {
+ void (*preHookFunc) (int *char_id, struct char_achievements **p);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_achievement_save_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapif_achievement_save_pre[hIndex].func;
+ preHookFunc(&char_id, &p);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.mapif.achievement_save(char_id, p);
+ }
+ if (HPMHooks.count.HP_mapif_achievement_save_post > 0) {
+ void (*postHookFunc) (int char_id, struct char_achievements *p);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_achievement_save_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapif_achievement_save_post[hIndex].func;
+ postHookFunc(char_id, p);
+ }
+ }
+ return;
+}
void HP_mapif_auction_message(int char_id, unsigned char result) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_auction_message_pre ) {
+ if (HPMHooks.count.HP_mapif_auction_message_pre > 0) {
void (*preHookFunc) (int *char_id, unsigned char *result);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_auction_message_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_auction_message_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_auction_message_pre[hIndex].func;
preHookFunc(&char_id, &result);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10747,9 +12778,9 @@ void HP_mapif_auction_message(int char_id, unsigned char result) {
{
HPMHooks.source.mapif.auction_message(char_id, result);
}
- if( HPMHooks.count.HP_mapif_auction_message_post ) {
+ if (HPMHooks.count.HP_mapif_auction_message_post > 0) {
void (*postHookFunc) (int char_id, unsigned char result);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_auction_message_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_auction_message_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_auction_message_post[hIndex].func;
postHookFunc(char_id, result);
}
@@ -10758,14 +12789,14 @@ void HP_mapif_auction_message(int char_id, unsigned char result) {
}
void HP_mapif_auction_sendlist(int fd, int char_id, short count, short pages, unsigned char *buf) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_auction_sendlist_pre ) {
+ if (HPMHooks.count.HP_mapif_auction_sendlist_pre > 0) {
void (*preHookFunc) (int *fd, int *char_id, short *count, short *pages, unsigned char **buf);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_auction_sendlist_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_auction_sendlist_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_auction_sendlist_pre[hIndex].func;
preHookFunc(&fd, &char_id, &count, &pages, &buf);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10773,9 +12804,9 @@ void HP_mapif_auction_sendlist(int fd, int char_id, short count, short pages, un
{
HPMHooks.source.mapif.auction_sendlist(fd, char_id, count, pages, buf);
}
- if( HPMHooks.count.HP_mapif_auction_sendlist_post ) {
+ if (HPMHooks.count.HP_mapif_auction_sendlist_post > 0) {
void (*postHookFunc) (int fd, int char_id, short count, short pages, unsigned char *buf);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_auction_sendlist_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_auction_sendlist_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_auction_sendlist_post[hIndex].func;
postHookFunc(fd, char_id, count, pages, buf);
}
@@ -10784,14 +12815,14 @@ void HP_mapif_auction_sendlist(int fd, int char_id, short count, short pages, un
}
void HP_mapif_parse_auction_requestlist(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_parse_auction_requestlist_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_auction_requestlist_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_auction_requestlist_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_auction_requestlist_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_auction_requestlist_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10799,9 +12830,9 @@ void HP_mapif_parse_auction_requestlist(int fd) {
{
HPMHooks.source.mapif.parse_auction_requestlist(fd);
}
- if( HPMHooks.count.HP_mapif_parse_auction_requestlist_post ) {
+ if (HPMHooks.count.HP_mapif_parse_auction_requestlist_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_auction_requestlist_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_auction_requestlist_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_auction_requestlist_post[hIndex].func;
postHookFunc(fd);
}
@@ -10810,14 +12841,14 @@ void HP_mapif_parse_auction_requestlist(int fd) {
}
void HP_mapif_auction_register(int fd, struct auction_data *auction) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_auction_register_pre ) {
+ if (HPMHooks.count.HP_mapif_auction_register_pre > 0) {
void (*preHookFunc) (int *fd, struct auction_data **auction);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_auction_register_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_auction_register_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_auction_register_pre[hIndex].func;
preHookFunc(&fd, &auction);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10825,9 +12856,9 @@ void HP_mapif_auction_register(int fd, struct auction_data *auction) {
{
HPMHooks.source.mapif.auction_register(fd, auction);
}
- if( HPMHooks.count.HP_mapif_auction_register_post ) {
+ if (HPMHooks.count.HP_mapif_auction_register_post > 0) {
void (*postHookFunc) (int fd, struct auction_data *auction);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_auction_register_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_auction_register_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_auction_register_post[hIndex].func;
postHookFunc(fd, auction);
}
@@ -10836,14 +12867,14 @@ void HP_mapif_auction_register(int fd, struct auction_data *auction) {
}
void HP_mapif_parse_auction_register(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_parse_auction_register_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_auction_register_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_auction_register_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_auction_register_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_auction_register_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10851,9 +12882,9 @@ void HP_mapif_parse_auction_register(int fd) {
{
HPMHooks.source.mapif.parse_auction_register(fd);
}
- if( HPMHooks.count.HP_mapif_parse_auction_register_post ) {
+ if (HPMHooks.count.HP_mapif_parse_auction_register_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_auction_register_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_auction_register_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_auction_register_post[hIndex].func;
postHookFunc(fd);
}
@@ -10862,14 +12893,14 @@ void HP_mapif_parse_auction_register(int fd) {
}
void HP_mapif_auction_cancel(int fd, int char_id, unsigned char result) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_auction_cancel_pre ) {
+ if (HPMHooks.count.HP_mapif_auction_cancel_pre > 0) {
void (*preHookFunc) (int *fd, int *char_id, unsigned char *result);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_auction_cancel_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_auction_cancel_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_auction_cancel_pre[hIndex].func;
preHookFunc(&fd, &char_id, &result);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10877,9 +12908,9 @@ void HP_mapif_auction_cancel(int fd, int char_id, unsigned char result) {
{
HPMHooks.source.mapif.auction_cancel(fd, char_id, result);
}
- if( HPMHooks.count.HP_mapif_auction_cancel_post ) {
+ if (HPMHooks.count.HP_mapif_auction_cancel_post > 0) {
void (*postHookFunc) (int fd, int char_id, unsigned char result);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_auction_cancel_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_auction_cancel_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_auction_cancel_post[hIndex].func;
postHookFunc(fd, char_id, result);
}
@@ -10888,14 +12919,14 @@ void HP_mapif_auction_cancel(int fd, int char_id, unsigned char result) {
}
void HP_mapif_parse_auction_cancel(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_parse_auction_cancel_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_auction_cancel_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_auction_cancel_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_auction_cancel_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_auction_cancel_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10903,9 +12934,9 @@ void HP_mapif_parse_auction_cancel(int fd) {
{
HPMHooks.source.mapif.parse_auction_cancel(fd);
}
- if( HPMHooks.count.HP_mapif_parse_auction_cancel_post ) {
+ if (HPMHooks.count.HP_mapif_parse_auction_cancel_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_auction_cancel_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_auction_cancel_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_auction_cancel_post[hIndex].func;
postHookFunc(fd);
}
@@ -10914,14 +12945,14 @@ void HP_mapif_parse_auction_cancel(int fd) {
}
void HP_mapif_auction_close(int fd, int char_id, unsigned char result) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_auction_close_pre ) {
+ if (HPMHooks.count.HP_mapif_auction_close_pre > 0) {
void (*preHookFunc) (int *fd, int *char_id, unsigned char *result);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_auction_close_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_auction_close_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_auction_close_pre[hIndex].func;
preHookFunc(&fd, &char_id, &result);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10929,9 +12960,9 @@ void HP_mapif_auction_close(int fd, int char_id, unsigned char result) {
{
HPMHooks.source.mapif.auction_close(fd, char_id, result);
}
- if( HPMHooks.count.HP_mapif_auction_close_post ) {
+ if (HPMHooks.count.HP_mapif_auction_close_post > 0) {
void (*postHookFunc) (int fd, int char_id, unsigned char result);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_auction_close_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_auction_close_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_auction_close_post[hIndex].func;
postHookFunc(fd, char_id, result);
}
@@ -10940,14 +12971,14 @@ void HP_mapif_auction_close(int fd, int char_id, unsigned char result) {
}
void HP_mapif_parse_auction_close(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_parse_auction_close_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_auction_close_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_auction_close_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_auction_close_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_auction_close_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10955,9 +12986,9 @@ void HP_mapif_parse_auction_close(int fd) {
{
HPMHooks.source.mapif.parse_auction_close(fd);
}
- if( HPMHooks.count.HP_mapif_parse_auction_close_post ) {
+ if (HPMHooks.count.HP_mapif_parse_auction_close_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_auction_close_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_auction_close_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_auction_close_post[hIndex].func;
postHookFunc(fd);
}
@@ -10966,14 +12997,14 @@ void HP_mapif_parse_auction_close(int fd) {
}
void HP_mapif_auction_bid(int fd, int char_id, int bid, unsigned char result) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_auction_bid_pre ) {
+ if (HPMHooks.count.HP_mapif_auction_bid_pre > 0) {
void (*preHookFunc) (int *fd, int *char_id, int *bid, unsigned char *result);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_auction_bid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_auction_bid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_auction_bid_pre[hIndex].func;
preHookFunc(&fd, &char_id, &bid, &result);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10981,9 +13012,9 @@ void HP_mapif_auction_bid(int fd, int char_id, int bid, unsigned char result) {
{
HPMHooks.source.mapif.auction_bid(fd, char_id, bid, result);
}
- if( HPMHooks.count.HP_mapif_auction_bid_post ) {
+ if (HPMHooks.count.HP_mapif_auction_bid_post > 0) {
void (*postHookFunc) (int fd, int char_id, int bid, unsigned char result);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_auction_bid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_auction_bid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_auction_bid_post[hIndex].func;
postHookFunc(fd, char_id, bid, result);
}
@@ -10992,14 +13023,14 @@ void HP_mapif_auction_bid(int fd, int char_id, int bid, unsigned char result) {
}
void HP_mapif_parse_auction_bid(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_parse_auction_bid_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_auction_bid_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_auction_bid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_auction_bid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_auction_bid_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11007,133 +13038,25 @@ void HP_mapif_parse_auction_bid(int fd) {
{
HPMHooks.source.mapif.parse_auction_bid(fd);
}
- if( HPMHooks.count.HP_mapif_parse_auction_bid_post ) {
+ if (HPMHooks.count.HP_mapif_parse_auction_bid_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_auction_bid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_auction_bid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_auction_bid_post[hIndex].func;
postHookFunc(fd);
}
}
return;
}
-bool HP_mapif_elemental_create(struct s_elemental *ele) {
- int hIndex = 0;
- bool retVal___ = false;
- if( HPMHooks.count.HP_mapif_elemental_create_pre ) {
- bool (*preHookFunc) (struct s_elemental **ele);
- *HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_elemental_create_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_mapif_elemental_create_pre[hIndex].func;
- retVal___ = preHookFunc(&ele);
- }
- if( *HPMforce_return ) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.elemental_create(ele);
- }
- if( HPMHooks.count.HP_mapif_elemental_create_post ) {
- bool (*postHookFunc) (bool retVal___, struct s_elemental *ele);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_elemental_create_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_mapif_elemental_create_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, ele);
- }
- }
- return retVal___;
-}
-bool HP_mapif_elemental_save(const struct s_elemental *ele) {
- int hIndex = 0;
- bool retVal___ = false;
- if( HPMHooks.count.HP_mapif_elemental_save_pre ) {
- bool (*preHookFunc) (const struct s_elemental **ele);
- *HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_elemental_save_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_mapif_elemental_save_pre[hIndex].func;
- retVal___ = preHookFunc(&ele);
- }
- if( *HPMforce_return ) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.elemental_save(ele);
- }
- if( HPMHooks.count.HP_mapif_elemental_save_post ) {
- bool (*postHookFunc) (bool retVal___, const struct s_elemental *ele);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_elemental_save_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_mapif_elemental_save_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, ele);
- }
- }
- return retVal___;
-}
-bool HP_mapif_elemental_load(int ele_id, int char_id, struct s_elemental *ele) {
- int hIndex = 0;
- bool retVal___ = false;
- if( HPMHooks.count.HP_mapif_elemental_load_pre ) {
- bool (*preHookFunc) (int *ele_id, int *char_id, struct s_elemental **ele);
- *HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_elemental_load_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_mapif_elemental_load_pre[hIndex].func;
- retVal___ = preHookFunc(&ele_id, &char_id, &ele);
- }
- if( *HPMforce_return ) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.elemental_load(ele_id, char_id, ele);
- }
- if( HPMHooks.count.HP_mapif_elemental_load_post ) {
- bool (*postHookFunc) (bool retVal___, int ele_id, int char_id, struct s_elemental *ele);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_elemental_load_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_mapif_elemental_load_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, ele_id, char_id, ele);
- }
- }
- return retVal___;
-}
-bool HP_mapif_elemental_delete(int ele_id) {
- int hIndex = 0;
- bool retVal___ = false;
- if( HPMHooks.count.HP_mapif_elemental_delete_pre ) {
- bool (*preHookFunc) (int *ele_id);
- *HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_elemental_delete_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_mapif_elemental_delete_pre[hIndex].func;
- retVal___ = preHookFunc(&ele_id);
- }
- if( *HPMforce_return ) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.elemental_delete(ele_id);
- }
- if( HPMHooks.count.HP_mapif_elemental_delete_post ) {
- bool (*postHookFunc) (bool retVal___, int ele_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_elemental_delete_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_mapif_elemental_delete_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, ele_id);
- }
- }
- return retVal___;
-}
void HP_mapif_elemental_send(int fd, struct s_elemental *ele, unsigned char flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_elemental_send_pre ) {
+ if (HPMHooks.count.HP_mapif_elemental_send_pre > 0) {
void (*preHookFunc) (int *fd, struct s_elemental **ele, unsigned char *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_elemental_send_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_elemental_send_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_elemental_send_pre[hIndex].func;
preHookFunc(&fd, &ele, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11141,9 +13064,9 @@ void HP_mapif_elemental_send(int fd, struct s_elemental *ele, unsigned char flag
{
HPMHooks.source.mapif.elemental_send(fd, ele, flag);
}
- if( HPMHooks.count.HP_mapif_elemental_send_post ) {
+ if (HPMHooks.count.HP_mapif_elemental_send_post > 0) {
void (*postHookFunc) (int fd, struct s_elemental *ele, unsigned char flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_elemental_send_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_elemental_send_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_elemental_send_post[hIndex].func;
postHookFunc(fd, ele, flag);
}
@@ -11152,14 +13075,14 @@ void HP_mapif_elemental_send(int fd, struct s_elemental *ele, unsigned char flag
}
void HP_mapif_parse_elemental_create(int fd, const struct s_elemental *ele) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_parse_elemental_create_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_elemental_create_pre > 0) {
void (*preHookFunc) (int *fd, const struct s_elemental **ele);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_elemental_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_elemental_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_elemental_create_pre[hIndex].func;
preHookFunc(&fd, &ele);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11167,9 +13090,9 @@ void HP_mapif_parse_elemental_create(int fd, const struct s_elemental *ele) {
{
HPMHooks.source.mapif.parse_elemental_create(fd, ele);
}
- if( HPMHooks.count.HP_mapif_parse_elemental_create_post ) {
+ if (HPMHooks.count.HP_mapif_parse_elemental_create_post > 0) {
void (*postHookFunc) (int fd, const struct s_elemental *ele);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_elemental_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_elemental_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_elemental_create_post[hIndex].func;
postHookFunc(fd, ele);
}
@@ -11178,14 +13101,14 @@ void HP_mapif_parse_elemental_create(int fd, const struct s_elemental *ele) {
}
void HP_mapif_parse_elemental_load(int fd, int ele_id, int char_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_parse_elemental_load_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_elemental_load_pre > 0) {
void (*preHookFunc) (int *fd, int *ele_id, int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_elemental_load_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_elemental_load_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_elemental_load_pre[hIndex].func;
preHookFunc(&fd, &ele_id, &char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11193,9 +13116,9 @@ void HP_mapif_parse_elemental_load(int fd, int ele_id, int char_id) {
{
HPMHooks.source.mapif.parse_elemental_load(fd, ele_id, char_id);
}
- if( HPMHooks.count.HP_mapif_parse_elemental_load_post ) {
+ if (HPMHooks.count.HP_mapif_parse_elemental_load_post > 0) {
void (*postHookFunc) (int fd, int ele_id, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_elemental_load_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_elemental_load_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_elemental_load_post[hIndex].func;
postHookFunc(fd, ele_id, char_id);
}
@@ -11204,14 +13127,14 @@ void HP_mapif_parse_elemental_load(int fd, int ele_id, int char_id) {
}
void HP_mapif_elemental_deleted(int fd, unsigned char flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_elemental_deleted_pre ) {
+ if (HPMHooks.count.HP_mapif_elemental_deleted_pre > 0) {
void (*preHookFunc) (int *fd, unsigned char *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_elemental_deleted_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_elemental_deleted_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_elemental_deleted_pre[hIndex].func;
preHookFunc(&fd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11219,9 +13142,9 @@ void HP_mapif_elemental_deleted(int fd, unsigned char flag) {
{
HPMHooks.source.mapif.elemental_deleted(fd, flag);
}
- if( HPMHooks.count.HP_mapif_elemental_deleted_post ) {
+ if (HPMHooks.count.HP_mapif_elemental_deleted_post > 0) {
void (*postHookFunc) (int fd, unsigned char flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_elemental_deleted_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_elemental_deleted_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_elemental_deleted_post[hIndex].func;
postHookFunc(fd, flag);
}
@@ -11230,14 +13153,14 @@ void HP_mapif_elemental_deleted(int fd, unsigned char flag) {
}
void HP_mapif_parse_elemental_delete(int fd, int ele_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_parse_elemental_delete_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_elemental_delete_pre > 0) {
void (*preHookFunc) (int *fd, int *ele_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_elemental_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_elemental_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_elemental_delete_pre[hIndex].func;
preHookFunc(&fd, &ele_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11245,9 +13168,9 @@ void HP_mapif_parse_elemental_delete(int fd, int ele_id) {
{
HPMHooks.source.mapif.parse_elemental_delete(fd, ele_id);
}
- if( HPMHooks.count.HP_mapif_parse_elemental_delete_post ) {
+ if (HPMHooks.count.HP_mapif_parse_elemental_delete_post > 0) {
void (*postHookFunc) (int fd, int ele_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_elemental_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_elemental_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_elemental_delete_post[hIndex].func;
postHookFunc(fd, ele_id);
}
@@ -11256,14 +13179,14 @@ void HP_mapif_parse_elemental_delete(int fd, int ele_id) {
}
void HP_mapif_elemental_saved(int fd, unsigned char flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_elemental_saved_pre ) {
+ if (HPMHooks.count.HP_mapif_elemental_saved_pre > 0) {
void (*preHookFunc) (int *fd, unsigned char *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_elemental_saved_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_elemental_saved_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_elemental_saved_pre[hIndex].func;
preHookFunc(&fd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11271,9 +13194,9 @@ void HP_mapif_elemental_saved(int fd, unsigned char flag) {
{
HPMHooks.source.mapif.elemental_saved(fd, flag);
}
- if( HPMHooks.count.HP_mapif_elemental_saved_post ) {
+ if (HPMHooks.count.HP_mapif_elemental_saved_post > 0) {
void (*postHookFunc) (int fd, unsigned char flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_elemental_saved_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_elemental_saved_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_elemental_saved_post[hIndex].func;
postHookFunc(fd, flag);
}
@@ -11282,14 +13205,14 @@ void HP_mapif_elemental_saved(int fd, unsigned char flag) {
}
void HP_mapif_parse_elemental_save(int fd, const struct s_elemental *ele) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_parse_elemental_save_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_elemental_save_pre > 0) {
void (*preHookFunc) (int *fd, const struct s_elemental **ele);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_elemental_save_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_elemental_save_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_elemental_save_pre[hIndex].func;
preHookFunc(&fd, &ele);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11297,9 +13220,9 @@ void HP_mapif_parse_elemental_save(int fd, const struct s_elemental *ele) {
{
HPMHooks.source.mapif.parse_elemental_save(fd, ele);
}
- if( HPMHooks.count.HP_mapif_parse_elemental_save_post ) {
+ if (HPMHooks.count.HP_mapif_parse_elemental_save_post > 0) {
void (*postHookFunc) (int fd, const struct s_elemental *ele);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_elemental_save_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_elemental_save_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_elemental_save_post[hIndex].func;
postHookFunc(fd, ele);
}
@@ -11309,14 +13232,14 @@ void HP_mapif_parse_elemental_save(int fd, const struct s_elemental *ele) {
int HP_mapif_guild_created(int fd, int account_id, struct guild *g) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_guild_created_pre ) {
+ if (HPMHooks.count.HP_mapif_guild_created_pre > 0) {
int (*preHookFunc) (int *fd, int *account_id, struct guild **g);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_created_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_created_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_guild_created_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &account_id, &g);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -11324,9 +13247,9 @@ int HP_mapif_guild_created(int fd, int account_id, struct guild *g) {
{
retVal___ = HPMHooks.source.mapif.guild_created(fd, account_id, g);
}
- if( HPMHooks.count.HP_mapif_guild_created_post ) {
+ if (HPMHooks.count.HP_mapif_guild_created_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int account_id, struct guild *g);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_created_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_created_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_guild_created_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, account_id, g);
}
@@ -11336,14 +13259,14 @@ int HP_mapif_guild_created(int fd, int account_id, struct guild *g) {
int HP_mapif_guild_noinfo(int fd, int guild_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_guild_noinfo_pre ) {
+ if (HPMHooks.count.HP_mapif_guild_noinfo_pre > 0) {
int (*preHookFunc) (int *fd, int *guild_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_noinfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_noinfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_guild_noinfo_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &guild_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -11351,9 +13274,9 @@ int HP_mapif_guild_noinfo(int fd, int guild_id) {
{
retVal___ = HPMHooks.source.mapif.guild_noinfo(fd, guild_id);
}
- if( HPMHooks.count.HP_mapif_guild_noinfo_post ) {
+ if (HPMHooks.count.HP_mapif_guild_noinfo_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int guild_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_noinfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_noinfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_guild_noinfo_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, guild_id);
}
@@ -11363,14 +13286,14 @@ int HP_mapif_guild_noinfo(int fd, int guild_id) {
int HP_mapif_guild_info(int fd, struct guild *g) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_guild_info_pre ) {
+ if (HPMHooks.count.HP_mapif_guild_info_pre > 0) {
int (*preHookFunc) (int *fd, struct guild **g);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_info_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_info_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_guild_info_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &g);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -11378,9 +13301,9 @@ int HP_mapif_guild_info(int fd, struct guild *g) {
{
retVal___ = HPMHooks.source.mapif.guild_info(fd, g);
}
- if( HPMHooks.count.HP_mapif_guild_info_post ) {
+ if (HPMHooks.count.HP_mapif_guild_info_post > 0) {
int (*postHookFunc) (int retVal___, int fd, struct guild *g);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_info_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_info_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_guild_info_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, g);
}
@@ -11390,14 +13313,14 @@ int HP_mapif_guild_info(int fd, struct guild *g) {
int HP_mapif_guild_memberadded(int fd, int guild_id, int account_id, int char_id, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_guild_memberadded_pre ) {
+ if (HPMHooks.count.HP_mapif_guild_memberadded_pre > 0) {
int (*preHookFunc) (int *fd, int *guild_id, int *account_id, int *char_id, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_memberadded_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_memberadded_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_guild_memberadded_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &guild_id, &account_id, &char_id, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -11405,9 +13328,9 @@ int HP_mapif_guild_memberadded(int fd, int guild_id, int account_id, int char_id
{
retVal___ = HPMHooks.source.mapif.guild_memberadded(fd, guild_id, account_id, char_id, flag);
}
- if( HPMHooks.count.HP_mapif_guild_memberadded_post ) {
+ if (HPMHooks.count.HP_mapif_guild_memberadded_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int guild_id, int account_id, int char_id, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_memberadded_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_memberadded_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_guild_memberadded_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, guild_id, account_id, char_id, flag);
}
@@ -11417,14 +13340,14 @@ int HP_mapif_guild_memberadded(int fd, int guild_id, int account_id, int char_id
int HP_mapif_guild_withdraw(int guild_id, int account_id, int char_id, int flag, const char *name, const char *mes) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_guild_withdraw_pre ) {
+ if (HPMHooks.count.HP_mapif_guild_withdraw_pre > 0) {
int (*preHookFunc) (int *guild_id, int *account_id, int *char_id, int *flag, const char **name, const char **mes);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_withdraw_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_withdraw_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_guild_withdraw_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &account_id, &char_id, &flag, &name, &mes);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -11432,9 +13355,9 @@ int HP_mapif_guild_withdraw(int guild_id, int account_id, int char_id, int flag,
{
retVal___ = HPMHooks.source.mapif.guild_withdraw(guild_id, account_id, char_id, flag, name, mes);
}
- if( HPMHooks.count.HP_mapif_guild_withdraw_post ) {
+ if (HPMHooks.count.HP_mapif_guild_withdraw_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id, int account_id, int char_id, int flag, const char *name, const char *mes);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_withdraw_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_withdraw_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_guild_withdraw_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, account_id, char_id, flag, name, mes);
}
@@ -11444,14 +13367,14 @@ int HP_mapif_guild_withdraw(int guild_id, int account_id, int char_id, int flag,
int HP_mapif_guild_memberinfoshort(struct guild *g, int idx) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_guild_memberinfoshort_pre ) {
+ if (HPMHooks.count.HP_mapif_guild_memberinfoshort_pre > 0) {
int (*preHookFunc) (struct guild **g, int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_memberinfoshort_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_memberinfoshort_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_guild_memberinfoshort_pre[hIndex].func;
retVal___ = preHookFunc(&g, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -11459,9 +13382,9 @@ int HP_mapif_guild_memberinfoshort(struct guild *g, int idx) {
{
retVal___ = HPMHooks.source.mapif.guild_memberinfoshort(g, idx);
}
- if( HPMHooks.count.HP_mapif_guild_memberinfoshort_post ) {
+ if (HPMHooks.count.HP_mapif_guild_memberinfoshort_post > 0) {
int (*postHookFunc) (int retVal___, struct guild *g, int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_memberinfoshort_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_memberinfoshort_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_guild_memberinfoshort_post[hIndex].func;
retVal___ = postHookFunc(retVal___, g, idx);
}
@@ -11471,14 +13394,14 @@ int HP_mapif_guild_memberinfoshort(struct guild *g, int idx) {
int HP_mapif_guild_broken(int guild_id, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_guild_broken_pre ) {
+ if (HPMHooks.count.HP_mapif_guild_broken_pre > 0) {
int (*preHookFunc) (int *guild_id, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_broken_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_broken_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_guild_broken_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -11486,9 +13409,9 @@ int HP_mapif_guild_broken(int guild_id, int flag) {
{
retVal___ = HPMHooks.source.mapif.guild_broken(guild_id, flag);
}
- if( HPMHooks.count.HP_mapif_guild_broken_post ) {
+ if (HPMHooks.count.HP_mapif_guild_broken_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_broken_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_broken_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_guild_broken_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, flag);
}
@@ -11498,14 +13421,14 @@ int HP_mapif_guild_broken(int guild_id, int flag) {
int HP_mapif_guild_message(int guild_id, int account_id, const char *mes, int len, int sfd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_guild_message_pre ) {
+ if (HPMHooks.count.HP_mapif_guild_message_pre > 0) {
int (*preHookFunc) (int *guild_id, int *account_id, const char **mes, int *len, int *sfd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_message_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_message_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_guild_message_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &account_id, &mes, &len, &sfd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -11513,9 +13436,9 @@ int HP_mapif_guild_message(int guild_id, int account_id, const char *mes, int le
{
retVal___ = HPMHooks.source.mapif.guild_message(guild_id, account_id, mes, len, sfd);
}
- if( HPMHooks.count.HP_mapif_guild_message_post ) {
+ if (HPMHooks.count.HP_mapif_guild_message_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id, int account_id, const char *mes, int len, int sfd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_message_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_message_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_guild_message_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, account_id, mes, len, sfd);
}
@@ -11525,14 +13448,14 @@ int HP_mapif_guild_message(int guild_id, int account_id, const char *mes, int le
int HP_mapif_guild_basicinfochanged(int guild_id, int type, const void *data, int len) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_guild_basicinfochanged_pre ) {
+ if (HPMHooks.count.HP_mapif_guild_basicinfochanged_pre > 0) {
int (*preHookFunc) (int *guild_id, int *type, const void **data, int *len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_basicinfochanged_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_basicinfochanged_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_guild_basicinfochanged_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &type, &data, &len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -11540,9 +13463,9 @@ int HP_mapif_guild_basicinfochanged(int guild_id, int type, const void *data, in
{
retVal___ = HPMHooks.source.mapif.guild_basicinfochanged(guild_id, type, data, len);
}
- if( HPMHooks.count.HP_mapif_guild_basicinfochanged_post ) {
+ if (HPMHooks.count.HP_mapif_guild_basicinfochanged_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id, int type, const void *data, int len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_basicinfochanged_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_basicinfochanged_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_guild_basicinfochanged_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, type, data, len);
}
@@ -11552,14 +13475,14 @@ int HP_mapif_guild_basicinfochanged(int guild_id, int type, const void *data, in
int HP_mapif_guild_memberinfochanged(int guild_id, int account_id, int char_id, int type, const void *data, int len) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_guild_memberinfochanged_pre ) {
+ if (HPMHooks.count.HP_mapif_guild_memberinfochanged_pre > 0) {
int (*preHookFunc) (int *guild_id, int *account_id, int *char_id, int *type, const void **data, int *len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_memberinfochanged_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_memberinfochanged_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_guild_memberinfochanged_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &account_id, &char_id, &type, &data, &len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -11567,9 +13490,9 @@ int HP_mapif_guild_memberinfochanged(int guild_id, int account_id, int char_id,
{
retVal___ = HPMHooks.source.mapif.guild_memberinfochanged(guild_id, account_id, char_id, type, data, len);
}
- if( HPMHooks.count.HP_mapif_guild_memberinfochanged_post ) {
+ if (HPMHooks.count.HP_mapif_guild_memberinfochanged_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id, int account_id, int char_id, int type, const void *data, int len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_memberinfochanged_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_memberinfochanged_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_guild_memberinfochanged_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, account_id, char_id, type, data, len);
}
@@ -11579,14 +13502,14 @@ int HP_mapif_guild_memberinfochanged(int guild_id, int account_id, int char_id,
int HP_mapif_guild_skillupack(int guild_id, uint16 skill_id, int account_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_guild_skillupack_pre ) {
+ if (HPMHooks.count.HP_mapif_guild_skillupack_pre > 0) {
int (*preHookFunc) (int *guild_id, uint16 *skill_id, int *account_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_skillupack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_skillupack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_guild_skillupack_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &skill_id, &account_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -11594,9 +13517,9 @@ int HP_mapif_guild_skillupack(int guild_id, uint16 skill_id, int account_id) {
{
retVal___ = HPMHooks.source.mapif.guild_skillupack(guild_id, skill_id, account_id);
}
- if( HPMHooks.count.HP_mapif_guild_skillupack_post ) {
+ if (HPMHooks.count.HP_mapif_guild_skillupack_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id, uint16 skill_id, int account_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_skillupack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_skillupack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_guild_skillupack_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, skill_id, account_id);
}
@@ -11606,14 +13529,14 @@ int HP_mapif_guild_skillupack(int guild_id, uint16 skill_id, int account_id) {
int HP_mapif_guild_alliance(int guild_id1, int guild_id2, int account_id1, int account_id2, int flag, const char *name1, const char *name2) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_guild_alliance_pre ) {
+ if (HPMHooks.count.HP_mapif_guild_alliance_pre > 0) {
int (*preHookFunc) (int *guild_id1, int *guild_id2, int *account_id1, int *account_id2, int *flag, const char **name1, const char **name2);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_alliance_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_alliance_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_guild_alliance_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id1, &guild_id2, &account_id1, &account_id2, &flag, &name1, &name2);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -11621,9 +13544,9 @@ int HP_mapif_guild_alliance(int guild_id1, int guild_id2, int account_id1, int a
{
retVal___ = HPMHooks.source.mapif.guild_alliance(guild_id1, guild_id2, account_id1, account_id2, flag, name1, name2);
}
- if( HPMHooks.count.HP_mapif_guild_alliance_post ) {
+ if (HPMHooks.count.HP_mapif_guild_alliance_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id1, int guild_id2, int account_id1, int account_id2, int flag, const char *name1, const char *name2);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_alliance_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_alliance_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_guild_alliance_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id1, guild_id2, account_id1, account_id2, flag, name1, name2);
}
@@ -11633,14 +13556,14 @@ int HP_mapif_guild_alliance(int guild_id1, int guild_id2, int account_id1, int a
int HP_mapif_guild_position(struct guild *g, int idx) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_guild_position_pre ) {
+ if (HPMHooks.count.HP_mapif_guild_position_pre > 0) {
int (*preHookFunc) (struct guild **g, int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_position_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_position_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_guild_position_pre[hIndex].func;
retVal___ = preHookFunc(&g, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -11648,9 +13571,9 @@ int HP_mapif_guild_position(struct guild *g, int idx) {
{
retVal___ = HPMHooks.source.mapif.guild_position(g, idx);
}
- if( HPMHooks.count.HP_mapif_guild_position_post ) {
+ if (HPMHooks.count.HP_mapif_guild_position_post > 0) {
int (*postHookFunc) (int retVal___, struct guild *g, int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_position_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_position_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_guild_position_post[hIndex].func;
retVal___ = postHookFunc(retVal___, g, idx);
}
@@ -11660,14 +13583,14 @@ int HP_mapif_guild_position(struct guild *g, int idx) {
int HP_mapif_guild_notice(struct guild *g) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_guild_notice_pre ) {
+ if (HPMHooks.count.HP_mapif_guild_notice_pre > 0) {
int (*preHookFunc) (struct guild **g);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_notice_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_notice_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_guild_notice_pre[hIndex].func;
retVal___ = preHookFunc(&g);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -11675,9 +13598,9 @@ int HP_mapif_guild_notice(struct guild *g) {
{
retVal___ = HPMHooks.source.mapif.guild_notice(g);
}
- if( HPMHooks.count.HP_mapif_guild_notice_post ) {
+ if (HPMHooks.count.HP_mapif_guild_notice_post > 0) {
int (*postHookFunc) (int retVal___, struct guild *g);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_notice_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_notice_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_guild_notice_post[hIndex].func;
retVal___ = postHookFunc(retVal___, g);
}
@@ -11687,14 +13610,14 @@ int HP_mapif_guild_notice(struct guild *g) {
int HP_mapif_guild_emblem(struct guild *g) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_guild_emblem_pre ) {
+ if (HPMHooks.count.HP_mapif_guild_emblem_pre > 0) {
int (*preHookFunc) (struct guild **g);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_emblem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_emblem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_guild_emblem_pre[hIndex].func;
retVal___ = preHookFunc(&g);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -11702,9 +13625,9 @@ int HP_mapif_guild_emblem(struct guild *g) {
{
retVal___ = HPMHooks.source.mapif.guild_emblem(g);
}
- if( HPMHooks.count.HP_mapif_guild_emblem_post ) {
+ if (HPMHooks.count.HP_mapif_guild_emblem_post > 0) {
int (*postHookFunc) (int retVal___, struct guild *g);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_emblem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_emblem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_guild_emblem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, g);
}
@@ -11714,14 +13637,14 @@ int HP_mapif_guild_emblem(struct guild *g) {
int HP_mapif_guild_master_changed(struct guild *g, int aid, int cid) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_guild_master_changed_pre ) {
+ if (HPMHooks.count.HP_mapif_guild_master_changed_pre > 0) {
int (*preHookFunc) (struct guild **g, int *aid, int *cid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_master_changed_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_master_changed_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_guild_master_changed_pre[hIndex].func;
retVal___ = preHookFunc(&g, &aid, &cid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -11729,9 +13652,9 @@ int HP_mapif_guild_master_changed(struct guild *g, int aid, int cid) {
{
retVal___ = HPMHooks.source.mapif.guild_master_changed(g, aid, cid);
}
- if( HPMHooks.count.HP_mapif_guild_master_changed_post ) {
+ if (HPMHooks.count.HP_mapif_guild_master_changed_post > 0) {
int (*postHookFunc) (int retVal___, struct guild *g, int aid, int cid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_master_changed_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_master_changed_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_guild_master_changed_post[hIndex].func;
retVal___ = postHookFunc(retVal___, g, aid, cid);
}
@@ -11741,14 +13664,14 @@ int HP_mapif_guild_master_changed(struct guild *g, int aid, int cid) {
int HP_mapif_guild_castle_dataload(int fd, int sz, const int *castle_ids) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_guild_castle_dataload_pre ) {
+ if (HPMHooks.count.HP_mapif_guild_castle_dataload_pre > 0) {
int (*preHookFunc) (int *fd, int *sz, const int **castle_ids);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_castle_dataload_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_castle_dataload_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_guild_castle_dataload_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &sz, &castle_ids);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -11756,9 +13679,9 @@ int HP_mapif_guild_castle_dataload(int fd, int sz, const int *castle_ids) {
{
retVal___ = HPMHooks.source.mapif.guild_castle_dataload(fd, sz, castle_ids);
}
- if( HPMHooks.count.HP_mapif_guild_castle_dataload_post ) {
+ if (HPMHooks.count.HP_mapif_guild_castle_dataload_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int sz, const int *castle_ids);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_castle_dataload_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_castle_dataload_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_guild_castle_dataload_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, sz, castle_ids);
}
@@ -11768,14 +13691,14 @@ int HP_mapif_guild_castle_dataload(int fd, int sz, const int *castle_ids) {
int HP_mapif_parse_CreateGuild(int fd, int account_id, const char *name, const struct guild_member *master) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_CreateGuild_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_CreateGuild_pre > 0) {
int (*preHookFunc) (int *fd, int *account_id, const char **name, const struct guild_member **master);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_CreateGuild_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_CreateGuild_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_CreateGuild_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &account_id, &name, &master);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -11783,9 +13706,9 @@ int HP_mapif_parse_CreateGuild(int fd, int account_id, const char *name, const s
{
retVal___ = HPMHooks.source.mapif.parse_CreateGuild(fd, account_id, name, master);
}
- if( HPMHooks.count.HP_mapif_parse_CreateGuild_post ) {
+ if (HPMHooks.count.HP_mapif_parse_CreateGuild_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int account_id, const char *name, const struct guild_member *master);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_CreateGuild_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_CreateGuild_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_CreateGuild_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, account_id, name, master);
}
@@ -11795,14 +13718,14 @@ int HP_mapif_parse_CreateGuild(int fd, int account_id, const char *name, const s
int HP_mapif_parse_GuildInfo(int fd, int guild_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_GuildInfo_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_GuildInfo_pre > 0) {
int (*preHookFunc) (int *fd, int *guild_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildInfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildInfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_GuildInfo_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &guild_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -11810,9 +13733,9 @@ int HP_mapif_parse_GuildInfo(int fd, int guild_id) {
{
retVal___ = HPMHooks.source.mapif.parse_GuildInfo(fd, guild_id);
}
- if( HPMHooks.count.HP_mapif_parse_GuildInfo_post ) {
+ if (HPMHooks.count.HP_mapif_parse_GuildInfo_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int guild_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildInfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildInfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_GuildInfo_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, guild_id);
}
@@ -11822,14 +13745,14 @@ int HP_mapif_parse_GuildInfo(int fd, int guild_id) {
int HP_mapif_parse_GuildAddMember(int fd, int guild_id, const struct guild_member *m) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_GuildAddMember_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_GuildAddMember_pre > 0) {
int (*preHookFunc) (int *fd, int *guild_id, const struct guild_member **m);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildAddMember_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildAddMember_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_GuildAddMember_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &guild_id, &m);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -11837,9 +13760,9 @@ int HP_mapif_parse_GuildAddMember(int fd, int guild_id, const struct guild_membe
{
retVal___ = HPMHooks.source.mapif.parse_GuildAddMember(fd, guild_id, m);
}
- if( HPMHooks.count.HP_mapif_parse_GuildAddMember_post ) {
+ if (HPMHooks.count.HP_mapif_parse_GuildAddMember_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int guild_id, const struct guild_member *m);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildAddMember_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildAddMember_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_GuildAddMember_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, guild_id, m);
}
@@ -11849,14 +13772,14 @@ int HP_mapif_parse_GuildAddMember(int fd, int guild_id, const struct guild_membe
int HP_mapif_parse_GuildLeave(int fd, int guild_id, int account_id, int char_id, int flag, const char *mes) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_GuildLeave_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_GuildLeave_pre > 0) {
int (*preHookFunc) (int *fd, int *guild_id, int *account_id, int *char_id, int *flag, const char **mes);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildLeave_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildLeave_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_GuildLeave_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &guild_id, &account_id, &char_id, &flag, &mes);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -11864,9 +13787,9 @@ int HP_mapif_parse_GuildLeave(int fd, int guild_id, int account_id, int char_id,
{
retVal___ = HPMHooks.source.mapif.parse_GuildLeave(fd, guild_id, account_id, char_id, flag, mes);
}
- if( HPMHooks.count.HP_mapif_parse_GuildLeave_post ) {
+ if (HPMHooks.count.HP_mapif_parse_GuildLeave_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int guild_id, int account_id, int char_id, int flag, const char *mes);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildLeave_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildLeave_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_GuildLeave_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, guild_id, account_id, char_id, flag, mes);
}
@@ -11876,14 +13799,14 @@ int HP_mapif_parse_GuildLeave(int fd, int guild_id, int account_id, int char_id,
int HP_mapif_parse_GuildChangeMemberInfoShort(int fd, int guild_id, int account_id, int char_id, int online, int lv, int16 class) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_GuildChangeMemberInfoShort_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_GuildChangeMemberInfoShort_pre > 0) {
int (*preHookFunc) (int *fd, int *guild_id, int *account_id, int *char_id, int *online, int *lv, int16 *class);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildChangeMemberInfoShort_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildChangeMemberInfoShort_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_GuildChangeMemberInfoShort_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &guild_id, &account_id, &char_id, &online, &lv, &class);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -11891,9 +13814,9 @@ int HP_mapif_parse_GuildChangeMemberInfoShort(int fd, int guild_id, int account_
{
retVal___ = HPMHooks.source.mapif.parse_GuildChangeMemberInfoShort(fd, guild_id, account_id, char_id, online, lv, class);
}
- if( HPMHooks.count.HP_mapif_parse_GuildChangeMemberInfoShort_post ) {
+ if (HPMHooks.count.HP_mapif_parse_GuildChangeMemberInfoShort_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int guild_id, int account_id, int char_id, int online, int lv, int16 class);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildChangeMemberInfoShort_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildChangeMemberInfoShort_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_GuildChangeMemberInfoShort_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, guild_id, account_id, char_id, online, lv, class);
}
@@ -11903,14 +13826,14 @@ int HP_mapif_parse_GuildChangeMemberInfoShort(int fd, int guild_id, int account_
int HP_mapif_parse_BreakGuild(int fd, int guild_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_BreakGuild_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_BreakGuild_pre > 0) {
int (*preHookFunc) (int *fd, int *guild_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_BreakGuild_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_BreakGuild_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_BreakGuild_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &guild_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -11918,9 +13841,9 @@ int HP_mapif_parse_BreakGuild(int fd, int guild_id) {
{
retVal___ = HPMHooks.source.mapif.parse_BreakGuild(fd, guild_id);
}
- if( HPMHooks.count.HP_mapif_parse_BreakGuild_post ) {
+ if (HPMHooks.count.HP_mapif_parse_BreakGuild_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int guild_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_BreakGuild_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_BreakGuild_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_BreakGuild_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, guild_id);
}
@@ -11930,14 +13853,14 @@ int HP_mapif_parse_BreakGuild(int fd, int guild_id) {
int HP_mapif_parse_GuildMessage(int fd, int guild_id, int account_id, const char *mes, int len) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_GuildMessage_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_GuildMessage_pre > 0) {
int (*preHookFunc) (int *fd, int *guild_id, int *account_id, const char **mes, int *len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildMessage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildMessage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_GuildMessage_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &guild_id, &account_id, &mes, &len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -11945,9 +13868,9 @@ int HP_mapif_parse_GuildMessage(int fd, int guild_id, int account_id, const char
{
retVal___ = HPMHooks.source.mapif.parse_GuildMessage(fd, guild_id, account_id, mes, len);
}
- if( HPMHooks.count.HP_mapif_parse_GuildMessage_post ) {
+ if (HPMHooks.count.HP_mapif_parse_GuildMessage_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int guild_id, int account_id, const char *mes, int len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildMessage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildMessage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_GuildMessage_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, guild_id, account_id, mes, len);
}
@@ -11957,14 +13880,14 @@ int HP_mapif_parse_GuildMessage(int fd, int guild_id, int account_id, const char
int HP_mapif_parse_GuildBasicInfoChange(int fd, int guild_id, int type, const void *data, int len) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_GuildBasicInfoChange_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_GuildBasicInfoChange_pre > 0) {
int (*preHookFunc) (int *fd, int *guild_id, int *type, const void **data, int *len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildBasicInfoChange_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildBasicInfoChange_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_GuildBasicInfoChange_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &guild_id, &type, &data, &len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -11972,9 +13895,9 @@ int HP_mapif_parse_GuildBasicInfoChange(int fd, int guild_id, int type, const vo
{
retVal___ = HPMHooks.source.mapif.parse_GuildBasicInfoChange(fd, guild_id, type, data, len);
}
- if( HPMHooks.count.HP_mapif_parse_GuildBasicInfoChange_post ) {
+ if (HPMHooks.count.HP_mapif_parse_GuildBasicInfoChange_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int guild_id, int type, const void *data, int len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildBasicInfoChange_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildBasicInfoChange_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_GuildBasicInfoChange_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, guild_id, type, data, len);
}
@@ -11984,14 +13907,14 @@ int HP_mapif_parse_GuildBasicInfoChange(int fd, int guild_id, int type, const vo
int HP_mapif_parse_GuildMemberInfoChange(int fd, int guild_id, int account_id, int char_id, int type, const char *data, int len) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_GuildMemberInfoChange_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_GuildMemberInfoChange_pre > 0) {
int (*preHookFunc) (int *fd, int *guild_id, int *account_id, int *char_id, int *type, const char **data, int *len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildMemberInfoChange_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildMemberInfoChange_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_GuildMemberInfoChange_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &guild_id, &account_id, &char_id, &type, &data, &len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -11999,9 +13922,9 @@ int HP_mapif_parse_GuildMemberInfoChange(int fd, int guild_id, int account_id, i
{
retVal___ = HPMHooks.source.mapif.parse_GuildMemberInfoChange(fd, guild_id, account_id, char_id, type, data, len);
}
- if( HPMHooks.count.HP_mapif_parse_GuildMemberInfoChange_post ) {
+ if (HPMHooks.count.HP_mapif_parse_GuildMemberInfoChange_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int guild_id, int account_id, int char_id, int type, const char *data, int len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildMemberInfoChange_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildMemberInfoChange_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_GuildMemberInfoChange_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, guild_id, account_id, char_id, type, data, len);
}
@@ -12011,14 +13934,14 @@ int HP_mapif_parse_GuildMemberInfoChange(int fd, int guild_id, int account_id, i
int HP_mapif_parse_GuildPosition(int fd, int guild_id, int idx, const struct guild_position *p) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_GuildPosition_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_GuildPosition_pre > 0) {
int (*preHookFunc) (int *fd, int *guild_id, int *idx, const struct guild_position **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildPosition_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildPosition_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_GuildPosition_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &guild_id, &idx, &p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -12026,9 +13949,9 @@ int HP_mapif_parse_GuildPosition(int fd, int guild_id, int idx, const struct gui
{
retVal___ = HPMHooks.source.mapif.parse_GuildPosition(fd, guild_id, idx, p);
}
- if( HPMHooks.count.HP_mapif_parse_GuildPosition_post ) {
+ if (HPMHooks.count.HP_mapif_parse_GuildPosition_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int guild_id, int idx, const struct guild_position *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildPosition_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildPosition_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_GuildPosition_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, guild_id, idx, p);
}
@@ -12038,14 +13961,14 @@ int HP_mapif_parse_GuildPosition(int fd, int guild_id, int idx, const struct gui
int HP_mapif_parse_GuildSkillUp(int fd, int guild_id, uint16 skill_id, int account_id, int max) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_GuildSkillUp_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_GuildSkillUp_pre > 0) {
int (*preHookFunc) (int *fd, int *guild_id, uint16 *skill_id, int *account_id, int *max);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildSkillUp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildSkillUp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_GuildSkillUp_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &guild_id, &skill_id, &account_id, &max);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -12053,53 +13976,26 @@ int HP_mapif_parse_GuildSkillUp(int fd, int guild_id, uint16 skill_id, int accou
{
retVal___ = HPMHooks.source.mapif.parse_GuildSkillUp(fd, guild_id, skill_id, account_id, max);
}
- if( HPMHooks.count.HP_mapif_parse_GuildSkillUp_post ) {
+ if (HPMHooks.count.HP_mapif_parse_GuildSkillUp_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int guild_id, uint16 skill_id, int account_id, int max);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildSkillUp_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildSkillUp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_GuildSkillUp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, guild_id, skill_id, account_id, max);
}
}
return retVal___;
}
-int HP_mapif_parse_GuildDeleteAlliance(struct guild *g, int guild_id, int account_id1, int account_id2, int flag) {
- int hIndex = 0;
- int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_GuildDeleteAlliance_pre ) {
- int (*preHookFunc) (struct guild **g, int *guild_id, int *account_id1, int *account_id2, int *flag);
- *HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildDeleteAlliance_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_mapif_parse_GuildDeleteAlliance_pre[hIndex].func;
- retVal___ = preHookFunc(&g, &guild_id, &account_id1, &account_id2, &flag);
- }
- if( *HPMforce_return ) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.parse_GuildDeleteAlliance(g, guild_id, account_id1, account_id2, flag);
- }
- if( HPMHooks.count.HP_mapif_parse_GuildDeleteAlliance_post ) {
- int (*postHookFunc) (int retVal___, struct guild *g, int guild_id, int account_id1, int account_id2, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildDeleteAlliance_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_mapif_parse_GuildDeleteAlliance_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, g, guild_id, account_id1, account_id2, flag);
- }
- }
- return retVal___;
-}
int HP_mapif_parse_GuildAlliance(int fd, int guild_id1, int guild_id2, int account_id1, int account_id2, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_GuildAlliance_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_GuildAlliance_pre > 0) {
int (*preHookFunc) (int *fd, int *guild_id1, int *guild_id2, int *account_id1, int *account_id2, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildAlliance_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildAlliance_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_GuildAlliance_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &guild_id1, &guild_id2, &account_id1, &account_id2, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -12107,9 +14003,9 @@ int HP_mapif_parse_GuildAlliance(int fd, int guild_id1, int guild_id2, int accou
{
retVal___ = HPMHooks.source.mapif.parse_GuildAlliance(fd, guild_id1, guild_id2, account_id1, account_id2, flag);
}
- if( HPMHooks.count.HP_mapif_parse_GuildAlliance_post ) {
+ if (HPMHooks.count.HP_mapif_parse_GuildAlliance_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int guild_id1, int guild_id2, int account_id1, int account_id2, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildAlliance_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildAlliance_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_GuildAlliance_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, guild_id1, guild_id2, account_id1, account_id2, flag);
}
@@ -12119,14 +14015,14 @@ int HP_mapif_parse_GuildAlliance(int fd, int guild_id1, int guild_id2, int accou
int HP_mapif_parse_GuildNotice(int fd, int guild_id, const char *mes1, const char *mes2) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_GuildNotice_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_GuildNotice_pre > 0) {
int (*preHookFunc) (int *fd, int *guild_id, const char **mes1, const char **mes2);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildNotice_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildNotice_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_GuildNotice_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &guild_id, &mes1, &mes2);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -12134,9 +14030,9 @@ int HP_mapif_parse_GuildNotice(int fd, int guild_id, const char *mes1, const cha
{
retVal___ = HPMHooks.source.mapif.parse_GuildNotice(fd, guild_id, mes1, mes2);
}
- if( HPMHooks.count.HP_mapif_parse_GuildNotice_post ) {
+ if (HPMHooks.count.HP_mapif_parse_GuildNotice_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int guild_id, const char *mes1, const char *mes2);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildNotice_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildNotice_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_GuildNotice_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, guild_id, mes1, mes2);
}
@@ -12146,14 +14042,14 @@ int HP_mapif_parse_GuildNotice(int fd, int guild_id, const char *mes1, const cha
int HP_mapif_parse_GuildEmblem(int fd, int len, int guild_id, int dummy, const char *data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_GuildEmblem_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_GuildEmblem_pre > 0) {
int (*preHookFunc) (int *fd, int *len, int *guild_id, int *dummy, const char **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildEmblem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildEmblem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_GuildEmblem_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &len, &guild_id, &dummy, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -12161,9 +14057,9 @@ int HP_mapif_parse_GuildEmblem(int fd, int len, int guild_id, int dummy, const c
{
retVal___ = HPMHooks.source.mapif.parse_GuildEmblem(fd, len, guild_id, dummy, data);
}
- if( HPMHooks.count.HP_mapif_parse_GuildEmblem_post ) {
+ if (HPMHooks.count.HP_mapif_parse_GuildEmblem_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int len, int guild_id, int dummy, const char *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildEmblem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildEmblem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_GuildEmblem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, len, guild_id, dummy, data);
}
@@ -12173,14 +14069,14 @@ int HP_mapif_parse_GuildEmblem(int fd, int len, int guild_id, int dummy, const c
int HP_mapif_parse_GuildCastleDataLoad(int fd, int len, const int *castle_ids) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_GuildCastleDataLoad_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_GuildCastleDataLoad_pre > 0) {
int (*preHookFunc) (int *fd, int *len, const int **castle_ids);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildCastleDataLoad_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildCastleDataLoad_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_GuildCastleDataLoad_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &len, &castle_ids);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -12188,9 +14084,9 @@ int HP_mapif_parse_GuildCastleDataLoad(int fd, int len, const int *castle_ids) {
{
retVal___ = HPMHooks.source.mapif.parse_GuildCastleDataLoad(fd, len, castle_ids);
}
- if( HPMHooks.count.HP_mapif_parse_GuildCastleDataLoad_post ) {
+ if (HPMHooks.count.HP_mapif_parse_GuildCastleDataLoad_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int len, const int *castle_ids);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildCastleDataLoad_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildCastleDataLoad_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_GuildCastleDataLoad_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, len, castle_ids);
}
@@ -12200,14 +14096,14 @@ int HP_mapif_parse_GuildCastleDataLoad(int fd, int len, const int *castle_ids) {
int HP_mapif_parse_GuildCastleDataSave(int fd, int castle_id, int index, int value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_GuildCastleDataSave_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_GuildCastleDataSave_pre > 0) {
int (*preHookFunc) (int *fd, int *castle_id, int *index, int *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildCastleDataSave_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildCastleDataSave_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_GuildCastleDataSave_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &castle_id, &index, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -12215,9 +14111,9 @@ int HP_mapif_parse_GuildCastleDataSave(int fd, int castle_id, int index, int val
{
retVal___ = HPMHooks.source.mapif.parse_GuildCastleDataSave(fd, castle_id, index, value);
}
- if( HPMHooks.count.HP_mapif_parse_GuildCastleDataSave_post ) {
+ if (HPMHooks.count.HP_mapif_parse_GuildCastleDataSave_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int castle_id, int index, int value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildCastleDataSave_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildCastleDataSave_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_GuildCastleDataSave_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, castle_id, index, value);
}
@@ -12227,14 +14123,14 @@ int HP_mapif_parse_GuildCastleDataSave(int fd, int castle_id, int index, int val
int HP_mapif_parse_GuildMasterChange(int fd, int guild_id, const char *name, int len) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_GuildMasterChange_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_GuildMasterChange_pre > 0) {
int (*preHookFunc) (int *fd, int *guild_id, const char **name, int *len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildMasterChange_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildMasterChange_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_GuildMasterChange_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &guild_id, &name, &len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -12242,9 +14138,9 @@ int HP_mapif_parse_GuildMasterChange(int fd, int guild_id, const char *name, int
{
retVal___ = HPMHooks.source.mapif.parse_GuildMasterChange(fd, guild_id, name, len);
}
- if( HPMHooks.count.HP_mapif_parse_GuildMasterChange_post ) {
+ if (HPMHooks.count.HP_mapif_parse_GuildMasterChange_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int guild_id, const char *name, int len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildMasterChange_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildMasterChange_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_GuildMasterChange_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, guild_id, name, len);
}
@@ -12253,14 +14149,14 @@ int HP_mapif_parse_GuildMasterChange(int fd, int guild_id, const char *name, int
}
void HP_mapif_homunculus_created(int fd, int account_id, const struct s_homunculus *sh, unsigned char flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_homunculus_created_pre ) {
+ if (HPMHooks.count.HP_mapif_homunculus_created_pre > 0) {
void (*preHookFunc) (int *fd, int *account_id, const struct s_homunculus **sh, unsigned char *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_created_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_created_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_homunculus_created_pre[hIndex].func;
preHookFunc(&fd, &account_id, &sh, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12268,9 +14164,9 @@ void HP_mapif_homunculus_created(int fd, int account_id, const struct s_homuncul
{
HPMHooks.source.mapif.homunculus_created(fd, account_id, sh, flag);
}
- if( HPMHooks.count.HP_mapif_homunculus_created_post ) {
+ if (HPMHooks.count.HP_mapif_homunculus_created_post > 0) {
void (*postHookFunc) (int fd, int account_id, const struct s_homunculus *sh, unsigned char flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_created_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_created_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_homunculus_created_post[hIndex].func;
postHookFunc(fd, account_id, sh, flag);
}
@@ -12279,14 +14175,14 @@ void HP_mapif_homunculus_created(int fd, int account_id, const struct s_homuncul
}
void HP_mapif_homunculus_deleted(int fd, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_homunculus_deleted_pre ) {
+ if (HPMHooks.count.HP_mapif_homunculus_deleted_pre > 0) {
void (*preHookFunc) (int *fd, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_deleted_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_deleted_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_homunculus_deleted_pre[hIndex].func;
preHookFunc(&fd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12294,9 +14190,9 @@ void HP_mapif_homunculus_deleted(int fd, int flag) {
{
HPMHooks.source.mapif.homunculus_deleted(fd, flag);
}
- if( HPMHooks.count.HP_mapif_homunculus_deleted_post ) {
+ if (HPMHooks.count.HP_mapif_homunculus_deleted_post > 0) {
void (*postHookFunc) (int fd, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_deleted_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_deleted_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_homunculus_deleted_post[hIndex].func;
postHookFunc(fd, flag);
}
@@ -12305,14 +14201,14 @@ void HP_mapif_homunculus_deleted(int fd, int flag) {
}
void HP_mapif_homunculus_loaded(int fd, int account_id, struct s_homunculus *hd) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_homunculus_loaded_pre ) {
+ if (HPMHooks.count.HP_mapif_homunculus_loaded_pre > 0) {
void (*preHookFunc) (int *fd, int *account_id, struct s_homunculus **hd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_loaded_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_loaded_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_homunculus_loaded_pre[hIndex].func;
preHookFunc(&fd, &account_id, &hd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12320,9 +14216,9 @@ void HP_mapif_homunculus_loaded(int fd, int account_id, struct s_homunculus *hd)
{
HPMHooks.source.mapif.homunculus_loaded(fd, account_id, hd);
}
- if( HPMHooks.count.HP_mapif_homunculus_loaded_post ) {
+ if (HPMHooks.count.HP_mapif_homunculus_loaded_post > 0) {
void (*postHookFunc) (int fd, int account_id, struct s_homunculus *hd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_loaded_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_loaded_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_homunculus_loaded_post[hIndex].func;
postHookFunc(fd, account_id, hd);
}
@@ -12331,14 +14227,14 @@ void HP_mapif_homunculus_loaded(int fd, int account_id, struct s_homunculus *hd)
}
void HP_mapif_homunculus_saved(int fd, int account_id, bool flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_homunculus_saved_pre ) {
+ if (HPMHooks.count.HP_mapif_homunculus_saved_pre > 0) {
void (*preHookFunc) (int *fd, int *account_id, bool *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_saved_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_saved_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_homunculus_saved_pre[hIndex].func;
preHookFunc(&fd, &account_id, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12346,9 +14242,9 @@ void HP_mapif_homunculus_saved(int fd, int account_id, bool flag) {
{
HPMHooks.source.mapif.homunculus_saved(fd, account_id, flag);
}
- if( HPMHooks.count.HP_mapif_homunculus_saved_post ) {
+ if (HPMHooks.count.HP_mapif_homunculus_saved_post > 0) {
void (*postHookFunc) (int fd, int account_id, bool flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_saved_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_saved_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_homunculus_saved_post[hIndex].func;
postHookFunc(fd, account_id, flag);
}
@@ -12357,14 +14253,14 @@ void HP_mapif_homunculus_saved(int fd, int account_id, bool flag) {
}
void HP_mapif_homunculus_renamed(int fd, int account_id, int char_id, unsigned char flag, const char *name) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_homunculus_renamed_pre ) {
+ if (HPMHooks.count.HP_mapif_homunculus_renamed_pre > 0) {
void (*preHookFunc) (int *fd, int *account_id, int *char_id, unsigned char *flag, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_renamed_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_renamed_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_homunculus_renamed_pre[hIndex].func;
preHookFunc(&fd, &account_id, &char_id, &flag, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12372,160 +14268,25 @@ void HP_mapif_homunculus_renamed(int fd, int account_id, int char_id, unsigned c
{
HPMHooks.source.mapif.homunculus_renamed(fd, account_id, char_id, flag, name);
}
- if( HPMHooks.count.HP_mapif_homunculus_renamed_post ) {
+ if (HPMHooks.count.HP_mapif_homunculus_renamed_post > 0) {
void (*postHookFunc) (int fd, int account_id, int char_id, unsigned char flag, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_renamed_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_renamed_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_homunculus_renamed_post[hIndex].func;
postHookFunc(fd, account_id, char_id, flag, name);
}
}
return;
}
-bool HP_mapif_homunculus_create(struct s_homunculus *hd) {
- int hIndex = 0;
- bool retVal___ = false;
- if( HPMHooks.count.HP_mapif_homunculus_create_pre ) {
- bool (*preHookFunc) (struct s_homunculus **hd);
- *HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_create_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_mapif_homunculus_create_pre[hIndex].func;
- retVal___ = preHookFunc(&hd);
- }
- if( *HPMforce_return ) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.homunculus_create(hd);
- }
- if( HPMHooks.count.HP_mapif_homunculus_create_post ) {
- bool (*postHookFunc) (bool retVal___, struct s_homunculus *hd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_create_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_mapif_homunculus_create_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, hd);
- }
- }
- return retVal___;
-}
-bool HP_mapif_homunculus_save(const struct s_homunculus *hd) {
- int hIndex = 0;
- bool retVal___ = false;
- if( HPMHooks.count.HP_mapif_homunculus_save_pre ) {
- bool (*preHookFunc) (const struct s_homunculus **hd);
- *HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_save_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_mapif_homunculus_save_pre[hIndex].func;
- retVal___ = preHookFunc(&hd);
- }
- if( *HPMforce_return ) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.homunculus_save(hd);
- }
- if( HPMHooks.count.HP_mapif_homunculus_save_post ) {
- bool (*postHookFunc) (bool retVal___, const struct s_homunculus *hd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_save_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_mapif_homunculus_save_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, hd);
- }
- }
- return retVal___;
-}
-bool HP_mapif_homunculus_load(int homun_id, struct s_homunculus *hd) {
- int hIndex = 0;
- bool retVal___ = false;
- if( HPMHooks.count.HP_mapif_homunculus_load_pre ) {
- bool (*preHookFunc) (int *homun_id, struct s_homunculus **hd);
- *HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_load_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_mapif_homunculus_load_pre[hIndex].func;
- retVal___ = preHookFunc(&homun_id, &hd);
- }
- if( *HPMforce_return ) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.homunculus_load(homun_id, hd);
- }
- if( HPMHooks.count.HP_mapif_homunculus_load_post ) {
- bool (*postHookFunc) (bool retVal___, int homun_id, struct s_homunculus *hd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_load_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_mapif_homunculus_load_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, homun_id, hd);
- }
- }
- return retVal___;
-}
-bool HP_mapif_homunculus_delete(int homun_id) {
- int hIndex = 0;
- bool retVal___ = false;
- if( HPMHooks.count.HP_mapif_homunculus_delete_pre ) {
- bool (*preHookFunc) (int *homun_id);
- *HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_delete_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_mapif_homunculus_delete_pre[hIndex].func;
- retVal___ = preHookFunc(&homun_id);
- }
- if( *HPMforce_return ) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.homunculus_delete(homun_id);
- }
- if( HPMHooks.count.HP_mapif_homunculus_delete_post ) {
- bool (*postHookFunc) (bool retVal___, int homun_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_delete_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_mapif_homunculus_delete_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, homun_id);
- }
- }
- return retVal___;
-}
-bool HP_mapif_homunculus_rename(const char *name) {
- int hIndex = 0;
- bool retVal___ = false;
- if( HPMHooks.count.HP_mapif_homunculus_rename_pre ) {
- bool (*preHookFunc) (const char **name);
- *HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_rename_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_mapif_homunculus_rename_pre[hIndex].func;
- retVal___ = preHookFunc(&name);
- }
- if( *HPMforce_return ) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.homunculus_rename(name);
- }
- if( HPMHooks.count.HP_mapif_homunculus_rename_post ) {
- bool (*postHookFunc) (bool retVal___, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_rename_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_mapif_homunculus_rename_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, name);
- }
- }
- return retVal___;
-}
void HP_mapif_parse_homunculus_create(int fd, int len, int account_id, const struct s_homunculus *phd) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_parse_homunculus_create_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_homunculus_create_pre > 0) {
void (*preHookFunc) (int *fd, int *len, int *account_id, const struct s_homunculus **phd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_homunculus_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_homunculus_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_homunculus_create_pre[hIndex].func;
preHookFunc(&fd, &len, &account_id, &phd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12533,9 +14294,9 @@ void HP_mapif_parse_homunculus_create(int fd, int len, int account_id, const str
{
HPMHooks.source.mapif.parse_homunculus_create(fd, len, account_id, phd);
}
- if( HPMHooks.count.HP_mapif_parse_homunculus_create_post ) {
+ if (HPMHooks.count.HP_mapif_parse_homunculus_create_post > 0) {
void (*postHookFunc) (int fd, int len, int account_id, const struct s_homunculus *phd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_homunculus_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_homunculus_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_homunculus_create_post[hIndex].func;
postHookFunc(fd, len, account_id, phd);
}
@@ -12544,14 +14305,14 @@ void HP_mapif_parse_homunculus_create(int fd, int len, int account_id, const str
}
void HP_mapif_parse_homunculus_delete(int fd, int homun_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_parse_homunculus_delete_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_homunculus_delete_pre > 0) {
void (*preHookFunc) (int *fd, int *homun_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_homunculus_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_homunculus_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_homunculus_delete_pre[hIndex].func;
preHookFunc(&fd, &homun_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12559,9 +14320,9 @@ void HP_mapif_parse_homunculus_delete(int fd, int homun_id) {
{
HPMHooks.source.mapif.parse_homunculus_delete(fd, homun_id);
}
- if( HPMHooks.count.HP_mapif_parse_homunculus_delete_post ) {
+ if (HPMHooks.count.HP_mapif_parse_homunculus_delete_post > 0) {
void (*postHookFunc) (int fd, int homun_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_homunculus_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_homunculus_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_homunculus_delete_post[hIndex].func;
postHookFunc(fd, homun_id);
}
@@ -12570,14 +14331,14 @@ void HP_mapif_parse_homunculus_delete(int fd, int homun_id) {
}
void HP_mapif_parse_homunculus_load(int fd, int account_id, int homun_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_parse_homunculus_load_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_homunculus_load_pre > 0) {
void (*preHookFunc) (int *fd, int *account_id, int *homun_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_homunculus_load_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_homunculus_load_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_homunculus_load_pre[hIndex].func;
preHookFunc(&fd, &account_id, &homun_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12585,9 +14346,9 @@ void HP_mapif_parse_homunculus_load(int fd, int account_id, int homun_id) {
{
HPMHooks.source.mapif.parse_homunculus_load(fd, account_id, homun_id);
}
- if( HPMHooks.count.HP_mapif_parse_homunculus_load_post ) {
+ if (HPMHooks.count.HP_mapif_parse_homunculus_load_post > 0) {
void (*postHookFunc) (int fd, int account_id, int homun_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_homunculus_load_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_homunculus_load_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_homunculus_load_post[hIndex].func;
postHookFunc(fd, account_id, homun_id);
}
@@ -12596,14 +14357,14 @@ void HP_mapif_parse_homunculus_load(int fd, int account_id, int homun_id) {
}
void HP_mapif_parse_homunculus_save(int fd, int len, int account_id, const struct s_homunculus *phd) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_parse_homunculus_save_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_homunculus_save_pre > 0) {
void (*preHookFunc) (int *fd, int *len, int *account_id, const struct s_homunculus **phd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_homunculus_save_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_homunculus_save_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_homunculus_save_pre[hIndex].func;
preHookFunc(&fd, &len, &account_id, &phd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12611,9 +14372,9 @@ void HP_mapif_parse_homunculus_save(int fd, int len, int account_id, const struc
{
HPMHooks.source.mapif.parse_homunculus_save(fd, len, account_id, phd);
}
- if( HPMHooks.count.HP_mapif_parse_homunculus_save_post ) {
+ if (HPMHooks.count.HP_mapif_parse_homunculus_save_post > 0) {
void (*postHookFunc) (int fd, int len, int account_id, const struct s_homunculus *phd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_homunculus_save_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_homunculus_save_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_homunculus_save_post[hIndex].func;
postHookFunc(fd, len, account_id, phd);
}
@@ -12622,14 +14383,14 @@ void HP_mapif_parse_homunculus_save(int fd, int len, int account_id, const struc
}
void HP_mapif_parse_homunculus_rename(int fd, int account_id, int char_id, const char *name) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_parse_homunculus_rename_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_homunculus_rename_pre > 0) {
void (*preHookFunc) (int *fd, int *account_id, int *char_id, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_homunculus_rename_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_homunculus_rename_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_homunculus_rename_pre[hIndex].func;
preHookFunc(&fd, &account_id, &char_id, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12637,9 +14398,9 @@ void HP_mapif_parse_homunculus_rename(int fd, int account_id, int char_id, const
{
HPMHooks.source.mapif.parse_homunculus_rename(fd, account_id, char_id, name);
}
- if( HPMHooks.count.HP_mapif_parse_homunculus_rename_post ) {
+ if (HPMHooks.count.HP_mapif_parse_homunculus_rename_post > 0) {
void (*postHookFunc) (int fd, int account_id, int char_id, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_homunculus_rename_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_homunculus_rename_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_homunculus_rename_post[hIndex].func;
postHookFunc(fd, account_id, char_id, name);
}
@@ -12648,14 +14409,14 @@ void HP_mapif_parse_homunculus_rename(int fd, int account_id, int char_id, const
}
void HP_mapif_mail_sendinbox(int fd, int char_id, unsigned char flag, struct mail_data *md) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_mail_sendinbox_pre ) {
+ if (HPMHooks.count.HP_mapif_mail_sendinbox_pre > 0) {
void (*preHookFunc) (int *fd, int *char_id, unsigned char *flag, struct mail_data **md);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mail_sendinbox_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mail_sendinbox_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_mail_sendinbox_pre[hIndex].func;
preHookFunc(&fd, &char_id, &flag, &md);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12663,9 +14424,9 @@ void HP_mapif_mail_sendinbox(int fd, int char_id, unsigned char flag, struct mai
{
HPMHooks.source.mapif.mail_sendinbox(fd, char_id, flag, md);
}
- if( HPMHooks.count.HP_mapif_mail_sendinbox_post ) {
+ if (HPMHooks.count.HP_mapif_mail_sendinbox_post > 0) {
void (*postHookFunc) (int fd, int char_id, unsigned char flag, struct mail_data *md);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mail_sendinbox_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mail_sendinbox_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_mail_sendinbox_post[hIndex].func;
postHookFunc(fd, char_id, flag, md);
}
@@ -12674,14 +14435,14 @@ void HP_mapif_mail_sendinbox(int fd, int char_id, unsigned char flag, struct mai
}
void HP_mapif_parse_mail_requestinbox(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_parse_mail_requestinbox_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_mail_requestinbox_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mail_requestinbox_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mail_requestinbox_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_mail_requestinbox_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12689,9 +14450,9 @@ void HP_mapif_parse_mail_requestinbox(int fd) {
{
HPMHooks.source.mapif.parse_mail_requestinbox(fd);
}
- if( HPMHooks.count.HP_mapif_parse_mail_requestinbox_post ) {
+ if (HPMHooks.count.HP_mapif_parse_mail_requestinbox_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mail_requestinbox_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mail_requestinbox_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_mail_requestinbox_post[hIndex].func;
postHookFunc(fd);
}
@@ -12700,14 +14461,14 @@ void HP_mapif_parse_mail_requestinbox(int fd) {
}
void HP_mapif_parse_mail_read(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_parse_mail_read_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_mail_read_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mail_read_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mail_read_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_mail_read_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12715,9 +14476,9 @@ void HP_mapif_parse_mail_read(int fd) {
{
HPMHooks.source.mapif.parse_mail_read(fd);
}
- if( HPMHooks.count.HP_mapif_parse_mail_read_post ) {
+ if (HPMHooks.count.HP_mapif_parse_mail_read_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mail_read_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mail_read_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_mail_read_post[hIndex].func;
postHookFunc(fd);
}
@@ -12726,14 +14487,14 @@ void HP_mapif_parse_mail_read(int fd) {
}
void HP_mapif_mail_sendattach(int fd, int char_id, struct mail_message *msg) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_mail_sendattach_pre ) {
+ if (HPMHooks.count.HP_mapif_mail_sendattach_pre > 0) {
void (*preHookFunc) (int *fd, int *char_id, struct mail_message **msg);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mail_sendattach_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mail_sendattach_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_mail_sendattach_pre[hIndex].func;
preHookFunc(&fd, &char_id, &msg);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12741,51 +14502,25 @@ void HP_mapif_mail_sendattach(int fd, int char_id, struct mail_message *msg) {
{
HPMHooks.source.mapif.mail_sendattach(fd, char_id, msg);
}
- if( HPMHooks.count.HP_mapif_mail_sendattach_post ) {
+ if (HPMHooks.count.HP_mapif_mail_sendattach_post > 0) {
void (*postHookFunc) (int fd, int char_id, struct mail_message *msg);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mail_sendattach_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mail_sendattach_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_mail_sendattach_post[hIndex].func;
postHookFunc(fd, char_id, msg);
}
}
return;
}
-void HP_mapif_mail_getattach(int fd, int char_id, int mail_id) {
- int hIndex = 0;
- if( HPMHooks.count.HP_mapif_mail_getattach_pre ) {
- void (*preHookFunc) (int *fd, int *char_id, int *mail_id);
- *HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mail_getattach_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_mapif_mail_getattach_pre[hIndex].func;
- preHookFunc(&fd, &char_id, &mail_id);
- }
- if( *HPMforce_return ) {
- *HPMforce_return = false;
- return;
- }
- }
- {
- HPMHooks.source.mapif.mail_getattach(fd, char_id, mail_id);
- }
- if( HPMHooks.count.HP_mapif_mail_getattach_post ) {
- void (*postHookFunc) (int fd, int char_id, int mail_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mail_getattach_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_mapif_mail_getattach_post[hIndex].func;
- postHookFunc(fd, char_id, mail_id);
- }
- }
- return;
-}
void HP_mapif_parse_mail_getattach(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_parse_mail_getattach_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_mail_getattach_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mail_getattach_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mail_getattach_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_mail_getattach_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12793,9 +14528,9 @@ void HP_mapif_parse_mail_getattach(int fd) {
{
HPMHooks.source.mapif.parse_mail_getattach(fd);
}
- if( HPMHooks.count.HP_mapif_parse_mail_getattach_post ) {
+ if (HPMHooks.count.HP_mapif_parse_mail_getattach_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mail_getattach_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mail_getattach_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_mail_getattach_post[hIndex].func;
postHookFunc(fd);
}
@@ -12804,14 +14539,14 @@ void HP_mapif_parse_mail_getattach(int fd) {
}
void HP_mapif_mail_delete(int fd, int char_id, int mail_id, bool failed) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_mail_delete_pre ) {
+ if (HPMHooks.count.HP_mapif_mail_delete_pre > 0) {
void (*preHookFunc) (int *fd, int *char_id, int *mail_id, bool *failed);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mail_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mail_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_mail_delete_pre[hIndex].func;
preHookFunc(&fd, &char_id, &mail_id, &failed);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12819,9 +14554,9 @@ void HP_mapif_mail_delete(int fd, int char_id, int mail_id, bool failed) {
{
HPMHooks.source.mapif.mail_delete(fd, char_id, mail_id, failed);
}
- if( HPMHooks.count.HP_mapif_mail_delete_post ) {
+ if (HPMHooks.count.HP_mapif_mail_delete_post > 0) {
void (*postHookFunc) (int fd, int char_id, int mail_id, bool failed);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mail_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mail_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_mail_delete_post[hIndex].func;
postHookFunc(fd, char_id, mail_id, failed);
}
@@ -12830,14 +14565,14 @@ void HP_mapif_mail_delete(int fd, int char_id, int mail_id, bool failed) {
}
void HP_mapif_parse_mail_delete(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_parse_mail_delete_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_mail_delete_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mail_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mail_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_mail_delete_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12845,9 +14580,9 @@ void HP_mapif_parse_mail_delete(int fd) {
{
HPMHooks.source.mapif.parse_mail_delete(fd);
}
- if( HPMHooks.count.HP_mapif_parse_mail_delete_post ) {
+ if (HPMHooks.count.HP_mapif_parse_mail_delete_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mail_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mail_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_mail_delete_post[hIndex].func;
postHookFunc(fd);
}
@@ -12856,14 +14591,14 @@ void HP_mapif_parse_mail_delete(int fd) {
}
void HP_mapif_mail_new(struct mail_message *msg) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_mail_new_pre ) {
+ if (HPMHooks.count.HP_mapif_mail_new_pre > 0) {
void (*preHookFunc) (struct mail_message **msg);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mail_new_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mail_new_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_mail_new_pre[hIndex].func;
preHookFunc(&msg);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12871,9 +14606,9 @@ void HP_mapif_mail_new(struct mail_message *msg) {
{
HPMHooks.source.mapif.mail_new(msg);
}
- if( HPMHooks.count.HP_mapif_mail_new_post ) {
+ if (HPMHooks.count.HP_mapif_mail_new_post > 0) {
void (*postHookFunc) (struct mail_message *msg);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mail_new_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mail_new_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_mail_new_post[hIndex].func;
postHookFunc(msg);
}
@@ -12882,14 +14617,14 @@ void HP_mapif_mail_new(struct mail_message *msg) {
}
void HP_mapif_mail_return(int fd, int char_id, int mail_id, int new_mail) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_mail_return_pre ) {
+ if (HPMHooks.count.HP_mapif_mail_return_pre > 0) {
void (*preHookFunc) (int *fd, int *char_id, int *mail_id, int *new_mail);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mail_return_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mail_return_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_mail_return_pre[hIndex].func;
preHookFunc(&fd, &char_id, &mail_id, &new_mail);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12897,9 +14632,9 @@ void HP_mapif_mail_return(int fd, int char_id, int mail_id, int new_mail) {
{
HPMHooks.source.mapif.mail_return(fd, char_id, mail_id, new_mail);
}
- if( HPMHooks.count.HP_mapif_mail_return_post ) {
+ if (HPMHooks.count.HP_mapif_mail_return_post > 0) {
void (*postHookFunc) (int fd, int char_id, int mail_id, int new_mail);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mail_return_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mail_return_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_mail_return_post[hIndex].func;
postHookFunc(fd, char_id, mail_id, new_mail);
}
@@ -12908,14 +14643,14 @@ void HP_mapif_mail_return(int fd, int char_id, int mail_id, int new_mail) {
}
void HP_mapif_parse_mail_return(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_parse_mail_return_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_mail_return_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mail_return_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mail_return_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_mail_return_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12923,9 +14658,9 @@ void HP_mapif_parse_mail_return(int fd) {
{
HPMHooks.source.mapif.parse_mail_return(fd);
}
- if( HPMHooks.count.HP_mapif_parse_mail_return_post ) {
+ if (HPMHooks.count.HP_mapif_parse_mail_return_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mail_return_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mail_return_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_mail_return_post[hIndex].func;
postHookFunc(fd);
}
@@ -12934,14 +14669,14 @@ void HP_mapif_parse_mail_return(int fd) {
}
void HP_mapif_mail_send(int fd, struct mail_message *msg) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_mail_send_pre ) {
+ if (HPMHooks.count.HP_mapif_mail_send_pre > 0) {
void (*preHookFunc) (int *fd, struct mail_message **msg);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mail_send_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mail_send_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_mail_send_pre[hIndex].func;
preHookFunc(&fd, &msg);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12949,9 +14684,9 @@ void HP_mapif_mail_send(int fd, struct mail_message *msg) {
{
HPMHooks.source.mapif.mail_send(fd, msg);
}
- if( HPMHooks.count.HP_mapif_mail_send_post ) {
+ if (HPMHooks.count.HP_mapif_mail_send_post > 0) {
void (*postHookFunc) (int fd, struct mail_message *msg);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mail_send_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mail_send_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_mail_send_post[hIndex].func;
postHookFunc(fd, msg);
}
@@ -12960,14 +14695,14 @@ void HP_mapif_mail_send(int fd, struct mail_message *msg) {
}
void HP_mapif_parse_mail_send(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_parse_mail_send_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_mail_send_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mail_send_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mail_send_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_mail_send_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12975,133 +14710,25 @@ void HP_mapif_parse_mail_send(int fd) {
{
HPMHooks.source.mapif.parse_mail_send(fd);
}
- if( HPMHooks.count.HP_mapif_parse_mail_send_post ) {
+ if (HPMHooks.count.HP_mapif_parse_mail_send_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mail_send_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mail_send_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_mail_send_post[hIndex].func;
postHookFunc(fd);
}
}
return;
}
-bool HP_mapif_mercenary_create(struct s_mercenary *merc) {
- int hIndex = 0;
- bool retVal___ = false;
- if( HPMHooks.count.HP_mapif_mercenary_create_pre ) {
- bool (*preHookFunc) (struct s_mercenary **merc);
- *HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mercenary_create_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_mapif_mercenary_create_pre[hIndex].func;
- retVal___ = preHookFunc(&merc);
- }
- if( *HPMforce_return ) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.mercenary_create(merc);
- }
- if( HPMHooks.count.HP_mapif_mercenary_create_post ) {
- bool (*postHookFunc) (bool retVal___, struct s_mercenary *merc);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mercenary_create_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_mapif_mercenary_create_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, merc);
- }
- }
- return retVal___;
-}
-bool HP_mapif_mercenary_save(const struct s_mercenary *merc) {
- int hIndex = 0;
- bool retVal___ = false;
- if( HPMHooks.count.HP_mapif_mercenary_save_pre ) {
- bool (*preHookFunc) (const struct s_mercenary **merc);
- *HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mercenary_save_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_mapif_mercenary_save_pre[hIndex].func;
- retVal___ = preHookFunc(&merc);
- }
- if( *HPMforce_return ) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.mercenary_save(merc);
- }
- if( HPMHooks.count.HP_mapif_mercenary_save_post ) {
- bool (*postHookFunc) (bool retVal___, const struct s_mercenary *merc);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mercenary_save_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_mapif_mercenary_save_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, merc);
- }
- }
- return retVal___;
-}
-bool HP_mapif_mercenary_load(int merc_id, int char_id, struct s_mercenary *merc) {
- int hIndex = 0;
- bool retVal___ = false;
- if( HPMHooks.count.HP_mapif_mercenary_load_pre ) {
- bool (*preHookFunc) (int *merc_id, int *char_id, struct s_mercenary **merc);
- *HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mercenary_load_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_mapif_mercenary_load_pre[hIndex].func;
- retVal___ = preHookFunc(&merc_id, &char_id, &merc);
- }
- if( *HPMforce_return ) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.mercenary_load(merc_id, char_id, merc);
- }
- if( HPMHooks.count.HP_mapif_mercenary_load_post ) {
- bool (*postHookFunc) (bool retVal___, int merc_id, int char_id, struct s_mercenary *merc);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mercenary_load_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_mapif_mercenary_load_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, merc_id, char_id, merc);
- }
- }
- return retVal___;
-}
-bool HP_mapif_mercenary_delete(int merc_id) {
- int hIndex = 0;
- bool retVal___ = false;
- if( HPMHooks.count.HP_mapif_mercenary_delete_pre ) {
- bool (*preHookFunc) (int *merc_id);
- *HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mercenary_delete_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_mapif_mercenary_delete_pre[hIndex].func;
- retVal___ = preHookFunc(&merc_id);
- }
- if( *HPMforce_return ) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.mercenary_delete(merc_id);
- }
- if( HPMHooks.count.HP_mapif_mercenary_delete_post ) {
- bool (*postHookFunc) (bool retVal___, int merc_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mercenary_delete_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_mapif_mercenary_delete_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, merc_id);
- }
- }
- return retVal___;
-}
void HP_mapif_mercenary_send(int fd, struct s_mercenary *merc, unsigned char flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_mercenary_send_pre ) {
+ if (HPMHooks.count.HP_mapif_mercenary_send_pre > 0) {
void (*preHookFunc) (int *fd, struct s_mercenary **merc, unsigned char *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mercenary_send_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mercenary_send_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_mercenary_send_pre[hIndex].func;
preHookFunc(&fd, &merc, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13109,9 +14736,9 @@ void HP_mapif_mercenary_send(int fd, struct s_mercenary *merc, unsigned char fla
{
HPMHooks.source.mapif.mercenary_send(fd, merc, flag);
}
- if( HPMHooks.count.HP_mapif_mercenary_send_post ) {
+ if (HPMHooks.count.HP_mapif_mercenary_send_post > 0) {
void (*postHookFunc) (int fd, struct s_mercenary *merc, unsigned char flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mercenary_send_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mercenary_send_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_mercenary_send_post[hIndex].func;
postHookFunc(fd, merc, flag);
}
@@ -13120,14 +14747,14 @@ void HP_mapif_mercenary_send(int fd, struct s_mercenary *merc, unsigned char fla
}
void HP_mapif_parse_mercenary_create(int fd, const struct s_mercenary *merc) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_parse_mercenary_create_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_mercenary_create_pre > 0) {
void (*preHookFunc) (int *fd, const struct s_mercenary **merc);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mercenary_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mercenary_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_mercenary_create_pre[hIndex].func;
preHookFunc(&fd, &merc);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13135,9 +14762,9 @@ void HP_mapif_parse_mercenary_create(int fd, const struct s_mercenary *merc) {
{
HPMHooks.source.mapif.parse_mercenary_create(fd, merc);
}
- if( HPMHooks.count.HP_mapif_parse_mercenary_create_post ) {
+ if (HPMHooks.count.HP_mapif_parse_mercenary_create_post > 0) {
void (*postHookFunc) (int fd, const struct s_mercenary *merc);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mercenary_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mercenary_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_mercenary_create_post[hIndex].func;
postHookFunc(fd, merc);
}
@@ -13146,14 +14773,14 @@ void HP_mapif_parse_mercenary_create(int fd, const struct s_mercenary *merc) {
}
void HP_mapif_parse_mercenary_load(int fd, int merc_id, int char_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_parse_mercenary_load_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_mercenary_load_pre > 0) {
void (*preHookFunc) (int *fd, int *merc_id, int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mercenary_load_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mercenary_load_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_mercenary_load_pre[hIndex].func;
preHookFunc(&fd, &merc_id, &char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13161,9 +14788,9 @@ void HP_mapif_parse_mercenary_load(int fd, int merc_id, int char_id) {
{
HPMHooks.source.mapif.parse_mercenary_load(fd, merc_id, char_id);
}
- if( HPMHooks.count.HP_mapif_parse_mercenary_load_post ) {
+ if (HPMHooks.count.HP_mapif_parse_mercenary_load_post > 0) {
void (*postHookFunc) (int fd, int merc_id, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mercenary_load_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mercenary_load_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_mercenary_load_post[hIndex].func;
postHookFunc(fd, merc_id, char_id);
}
@@ -13172,14 +14799,14 @@ void HP_mapif_parse_mercenary_load(int fd, int merc_id, int char_id) {
}
void HP_mapif_mercenary_deleted(int fd, unsigned char flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_mercenary_deleted_pre ) {
+ if (HPMHooks.count.HP_mapif_mercenary_deleted_pre > 0) {
void (*preHookFunc) (int *fd, unsigned char *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mercenary_deleted_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mercenary_deleted_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_mercenary_deleted_pre[hIndex].func;
preHookFunc(&fd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13187,9 +14814,9 @@ void HP_mapif_mercenary_deleted(int fd, unsigned char flag) {
{
HPMHooks.source.mapif.mercenary_deleted(fd, flag);
}
- if( HPMHooks.count.HP_mapif_mercenary_deleted_post ) {
+ if (HPMHooks.count.HP_mapif_mercenary_deleted_post > 0) {
void (*postHookFunc) (int fd, unsigned char flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mercenary_deleted_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mercenary_deleted_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_mercenary_deleted_post[hIndex].func;
postHookFunc(fd, flag);
}
@@ -13198,14 +14825,14 @@ void HP_mapif_mercenary_deleted(int fd, unsigned char flag) {
}
void HP_mapif_parse_mercenary_delete(int fd, int merc_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_parse_mercenary_delete_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_mercenary_delete_pre > 0) {
void (*preHookFunc) (int *fd, int *merc_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mercenary_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mercenary_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_mercenary_delete_pre[hIndex].func;
preHookFunc(&fd, &merc_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13213,9 +14840,9 @@ void HP_mapif_parse_mercenary_delete(int fd, int merc_id) {
{
HPMHooks.source.mapif.parse_mercenary_delete(fd, merc_id);
}
- if( HPMHooks.count.HP_mapif_parse_mercenary_delete_post ) {
+ if (HPMHooks.count.HP_mapif_parse_mercenary_delete_post > 0) {
void (*postHookFunc) (int fd, int merc_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mercenary_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mercenary_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_mercenary_delete_post[hIndex].func;
postHookFunc(fd, merc_id);
}
@@ -13224,14 +14851,14 @@ void HP_mapif_parse_mercenary_delete(int fd, int merc_id) {
}
void HP_mapif_mercenary_saved(int fd, unsigned char flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_mercenary_saved_pre ) {
+ if (HPMHooks.count.HP_mapif_mercenary_saved_pre > 0) {
void (*preHookFunc) (int *fd, unsigned char *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mercenary_saved_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mercenary_saved_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_mercenary_saved_pre[hIndex].func;
preHookFunc(&fd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13239,9 +14866,9 @@ void HP_mapif_mercenary_saved(int fd, unsigned char flag) {
{
HPMHooks.source.mapif.mercenary_saved(fd, flag);
}
- if( HPMHooks.count.HP_mapif_mercenary_saved_post ) {
+ if (HPMHooks.count.HP_mapif_mercenary_saved_post > 0) {
void (*postHookFunc) (int fd, unsigned char flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mercenary_saved_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mercenary_saved_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_mercenary_saved_post[hIndex].func;
postHookFunc(fd, flag);
}
@@ -13250,14 +14877,14 @@ void HP_mapif_mercenary_saved(int fd, unsigned char flag) {
}
void HP_mapif_parse_mercenary_save(int fd, const struct s_mercenary *merc) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_parse_mercenary_save_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_mercenary_save_pre > 0) {
void (*preHookFunc) (int *fd, const struct s_mercenary **merc);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mercenary_save_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mercenary_save_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_mercenary_save_pre[hIndex].func;
preHookFunc(&fd, &merc);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13265,9 +14892,9 @@ void HP_mapif_parse_mercenary_save(int fd, const struct s_mercenary *merc) {
{
HPMHooks.source.mapif.parse_mercenary_save(fd, merc);
}
- if( HPMHooks.count.HP_mapif_parse_mercenary_save_post ) {
+ if (HPMHooks.count.HP_mapif_parse_mercenary_save_post > 0) {
void (*postHookFunc) (int fd, const struct s_mercenary *merc);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mercenary_save_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_mercenary_save_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_mercenary_save_post[hIndex].func;
postHookFunc(fd, merc);
}
@@ -13277,14 +14904,14 @@ void HP_mapif_parse_mercenary_save(int fd, const struct s_mercenary *merc) {
int HP_mapif_party_created(int fd, int account_id, int char_id, struct party *p) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_party_created_pre ) {
+ if (HPMHooks.count.HP_mapif_party_created_pre > 0) {
int (*preHookFunc) (int *fd, int *account_id, int *char_id, struct party **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_created_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_created_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_party_created_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &account_id, &char_id, &p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -13292,9 +14919,9 @@ int HP_mapif_party_created(int fd, int account_id, int char_id, struct party *p)
{
retVal___ = HPMHooks.source.mapif.party_created(fd, account_id, char_id, p);
}
- if( HPMHooks.count.HP_mapif_party_created_post ) {
+ if (HPMHooks.count.HP_mapif_party_created_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int account_id, int char_id, struct party *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_created_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_created_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_party_created_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, account_id, char_id, p);
}
@@ -13303,14 +14930,14 @@ int HP_mapif_party_created(int fd, int account_id, int char_id, struct party *p)
}
void HP_mapif_party_noinfo(int fd, int party_id, int char_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_party_noinfo_pre ) {
+ if (HPMHooks.count.HP_mapif_party_noinfo_pre > 0) {
void (*preHookFunc) (int *fd, int *party_id, int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_noinfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_noinfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_party_noinfo_pre[hIndex].func;
preHookFunc(&fd, &party_id, &char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13318,9 +14945,9 @@ void HP_mapif_party_noinfo(int fd, int party_id, int char_id) {
{
HPMHooks.source.mapif.party_noinfo(fd, party_id, char_id);
}
- if( HPMHooks.count.HP_mapif_party_noinfo_post ) {
+ if (HPMHooks.count.HP_mapif_party_noinfo_post > 0) {
void (*postHookFunc) (int fd, int party_id, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_noinfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_noinfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_party_noinfo_post[hIndex].func;
postHookFunc(fd, party_id, char_id);
}
@@ -13329,14 +14956,14 @@ void HP_mapif_party_noinfo(int fd, int party_id, int char_id) {
}
void HP_mapif_party_info(int fd, struct party *p, int char_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_party_info_pre ) {
+ if (HPMHooks.count.HP_mapif_party_info_pre > 0) {
void (*preHookFunc) (int *fd, struct party **p, int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_info_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_info_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_party_info_pre[hIndex].func;
preHookFunc(&fd, &p, &char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13344,9 +14971,9 @@ void HP_mapif_party_info(int fd, struct party *p, int char_id) {
{
HPMHooks.source.mapif.party_info(fd, p, char_id);
}
- if( HPMHooks.count.HP_mapif_party_info_post ) {
+ if (HPMHooks.count.HP_mapif_party_info_post > 0) {
void (*postHookFunc) (int fd, struct party *p, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_info_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_info_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_party_info_post[hIndex].func;
postHookFunc(fd, p, char_id);
}
@@ -13356,14 +14983,14 @@ void HP_mapif_party_info(int fd, struct party *p, int char_id) {
int HP_mapif_party_memberadded(int fd, int party_id, int account_id, int char_id, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_party_memberadded_pre ) {
+ if (HPMHooks.count.HP_mapif_party_memberadded_pre > 0) {
int (*preHookFunc) (int *fd, int *party_id, int *account_id, int *char_id, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_memberadded_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_memberadded_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_party_memberadded_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &party_id, &account_id, &char_id, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -13371,9 +14998,9 @@ int HP_mapif_party_memberadded(int fd, int party_id, int account_id, int char_id
{
retVal___ = HPMHooks.source.mapif.party_memberadded(fd, party_id, account_id, char_id, flag);
}
- if( HPMHooks.count.HP_mapif_party_memberadded_post ) {
+ if (HPMHooks.count.HP_mapif_party_memberadded_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int party_id, int account_id, int char_id, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_memberadded_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_memberadded_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_party_memberadded_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, party_id, account_id, char_id, flag);
}
@@ -13383,14 +15010,14 @@ int HP_mapif_party_memberadded(int fd, int party_id, int account_id, int char_id
int HP_mapif_party_optionchanged(int fd, struct party *p, int account_id, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_party_optionchanged_pre ) {
+ if (HPMHooks.count.HP_mapif_party_optionchanged_pre > 0) {
int (*preHookFunc) (int *fd, struct party **p, int *account_id, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_optionchanged_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_optionchanged_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_party_optionchanged_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &p, &account_id, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -13398,9 +15025,9 @@ int HP_mapif_party_optionchanged(int fd, struct party *p, int account_id, int fl
{
retVal___ = HPMHooks.source.mapif.party_optionchanged(fd, p, account_id, flag);
}
- if( HPMHooks.count.HP_mapif_party_optionchanged_post ) {
+ if (HPMHooks.count.HP_mapif_party_optionchanged_post > 0) {
int (*postHookFunc) (int retVal___, int fd, struct party *p, int account_id, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_optionchanged_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_optionchanged_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_party_optionchanged_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, p, account_id, flag);
}
@@ -13410,14 +15037,14 @@ int HP_mapif_party_optionchanged(int fd, struct party *p, int account_id, int fl
int HP_mapif_party_withdraw(int party_id, int account_id, int char_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_party_withdraw_pre ) {
+ if (HPMHooks.count.HP_mapif_party_withdraw_pre > 0) {
int (*preHookFunc) (int *party_id, int *account_id, int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_withdraw_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_withdraw_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_party_withdraw_pre[hIndex].func;
retVal___ = preHookFunc(&party_id, &account_id, &char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -13425,9 +15052,9 @@ int HP_mapif_party_withdraw(int party_id, int account_id, int char_id) {
{
retVal___ = HPMHooks.source.mapif.party_withdraw(party_id, account_id, char_id);
}
- if( HPMHooks.count.HP_mapif_party_withdraw_post ) {
+ if (HPMHooks.count.HP_mapif_party_withdraw_post > 0) {
int (*postHookFunc) (int retVal___, int party_id, int account_id, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_withdraw_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_withdraw_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_party_withdraw_post[hIndex].func;
retVal___ = postHookFunc(retVal___, party_id, account_id, char_id);
}
@@ -13437,14 +15064,14 @@ int HP_mapif_party_withdraw(int party_id, int account_id, int char_id) {
int HP_mapif_party_membermoved(struct party *p, int idx) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_party_membermoved_pre ) {
+ if (HPMHooks.count.HP_mapif_party_membermoved_pre > 0) {
int (*preHookFunc) (struct party **p, int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_membermoved_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_membermoved_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_party_membermoved_pre[hIndex].func;
retVal___ = preHookFunc(&p, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -13452,9 +15079,9 @@ int HP_mapif_party_membermoved(struct party *p, int idx) {
{
retVal___ = HPMHooks.source.mapif.party_membermoved(p, idx);
}
- if( HPMHooks.count.HP_mapif_party_membermoved_post ) {
+ if (HPMHooks.count.HP_mapif_party_membermoved_post > 0) {
int (*postHookFunc) (int retVal___, struct party *p, int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_membermoved_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_membermoved_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_party_membermoved_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p, idx);
}
@@ -13464,14 +15091,14 @@ int HP_mapif_party_membermoved(struct party *p, int idx) {
int HP_mapif_party_broken(int party_id, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_party_broken_pre ) {
+ if (HPMHooks.count.HP_mapif_party_broken_pre > 0) {
int (*preHookFunc) (int *party_id, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_broken_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_broken_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_party_broken_pre[hIndex].func;
retVal___ = preHookFunc(&party_id, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -13479,9 +15106,9 @@ int HP_mapif_party_broken(int party_id, int flag) {
{
retVal___ = HPMHooks.source.mapif.party_broken(party_id, flag);
}
- if( HPMHooks.count.HP_mapif_party_broken_post ) {
+ if (HPMHooks.count.HP_mapif_party_broken_post > 0) {
int (*postHookFunc) (int retVal___, int party_id, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_broken_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_broken_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_party_broken_post[hIndex].func;
retVal___ = postHookFunc(retVal___, party_id, flag);
}
@@ -13491,14 +15118,14 @@ int HP_mapif_party_broken(int party_id, int flag) {
int HP_mapif_party_message(int party_id, int account_id, const char *mes, int len, int sfd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_party_message_pre ) {
+ if (HPMHooks.count.HP_mapif_party_message_pre > 0) {
int (*preHookFunc) (int *party_id, int *account_id, const char **mes, int *len, int *sfd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_message_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_message_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_party_message_pre[hIndex].func;
retVal___ = preHookFunc(&party_id, &account_id, &mes, &len, &sfd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -13506,9 +15133,9 @@ int HP_mapif_party_message(int party_id, int account_id, const char *mes, int le
{
retVal___ = HPMHooks.source.mapif.party_message(party_id, account_id, mes, len, sfd);
}
- if( HPMHooks.count.HP_mapif_party_message_post ) {
+ if (HPMHooks.count.HP_mapif_party_message_post > 0) {
int (*postHookFunc) (int retVal___, int party_id, int account_id, const char *mes, int len, int sfd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_message_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_message_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_party_message_post[hIndex].func;
retVal___ = postHookFunc(retVal___, party_id, account_id, mes, len, sfd);
}
@@ -13518,14 +15145,14 @@ int HP_mapif_party_message(int party_id, int account_id, const char *mes, int le
int HP_mapif_parse_CreateParty(int fd, const char *name, int item, int item2, const struct party_member *leader) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_CreateParty_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_CreateParty_pre > 0) {
int (*preHookFunc) (int *fd, const char **name, int *item, int *item2, const struct party_member **leader);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_CreateParty_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_CreateParty_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_CreateParty_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &name, &item, &item2, &leader);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -13533,9 +15160,9 @@ int HP_mapif_parse_CreateParty(int fd, const char *name, int item, int item2, co
{
retVal___ = HPMHooks.source.mapif.parse_CreateParty(fd, name, item, item2, leader);
}
- if( HPMHooks.count.HP_mapif_parse_CreateParty_post ) {
+ if (HPMHooks.count.HP_mapif_parse_CreateParty_post > 0) {
int (*postHookFunc) (int retVal___, int fd, const char *name, int item, int item2, const struct party_member *leader);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_CreateParty_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_CreateParty_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_CreateParty_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, name, item, item2, leader);
}
@@ -13544,14 +15171,14 @@ int HP_mapif_parse_CreateParty(int fd, const char *name, int item, int item2, co
}
void HP_mapif_parse_PartyInfo(int fd, int party_id, int char_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_parse_PartyInfo_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_PartyInfo_pre > 0) {
void (*preHookFunc) (int *fd, int *party_id, int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_PartyInfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_PartyInfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_PartyInfo_pre[hIndex].func;
preHookFunc(&fd, &party_id, &char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13559,9 +15186,9 @@ void HP_mapif_parse_PartyInfo(int fd, int party_id, int char_id) {
{
HPMHooks.source.mapif.parse_PartyInfo(fd, party_id, char_id);
}
- if( HPMHooks.count.HP_mapif_parse_PartyInfo_post ) {
+ if (HPMHooks.count.HP_mapif_parse_PartyInfo_post > 0) {
void (*postHookFunc) (int fd, int party_id, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_PartyInfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_PartyInfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_PartyInfo_post[hIndex].func;
postHookFunc(fd, party_id, char_id);
}
@@ -13571,14 +15198,14 @@ void HP_mapif_parse_PartyInfo(int fd, int party_id, int char_id) {
int HP_mapif_parse_PartyAddMember(int fd, int party_id, const struct party_member *member) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_PartyAddMember_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_PartyAddMember_pre > 0) {
int (*preHookFunc) (int *fd, int *party_id, const struct party_member **member);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_PartyAddMember_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_PartyAddMember_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_PartyAddMember_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &party_id, &member);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -13586,9 +15213,9 @@ int HP_mapif_parse_PartyAddMember(int fd, int party_id, const struct party_membe
{
retVal___ = HPMHooks.source.mapif.parse_PartyAddMember(fd, party_id, member);
}
- if( HPMHooks.count.HP_mapif_parse_PartyAddMember_post ) {
+ if (HPMHooks.count.HP_mapif_parse_PartyAddMember_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int party_id, const struct party_member *member);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_PartyAddMember_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_PartyAddMember_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_PartyAddMember_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, party_id, member);
}
@@ -13598,14 +15225,14 @@ int HP_mapif_parse_PartyAddMember(int fd, int party_id, const struct party_membe
int HP_mapif_parse_PartyChangeOption(int fd, int party_id, int account_id, int exp, int item) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_PartyChangeOption_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_PartyChangeOption_pre > 0) {
int (*preHookFunc) (int *fd, int *party_id, int *account_id, int *exp, int *item);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_PartyChangeOption_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_PartyChangeOption_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_PartyChangeOption_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &party_id, &account_id, &exp, &item);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -13613,9 +15240,9 @@ int HP_mapif_parse_PartyChangeOption(int fd, int party_id, int account_id, int e
{
retVal___ = HPMHooks.source.mapif.parse_PartyChangeOption(fd, party_id, account_id, exp, item);
}
- if( HPMHooks.count.HP_mapif_parse_PartyChangeOption_post ) {
+ if (HPMHooks.count.HP_mapif_parse_PartyChangeOption_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int party_id, int account_id, int exp, int item);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_PartyChangeOption_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_PartyChangeOption_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_PartyChangeOption_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, party_id, account_id, exp, item);
}
@@ -13625,14 +15252,14 @@ int HP_mapif_parse_PartyChangeOption(int fd, int party_id, int account_id, int e
int HP_mapif_parse_PartyLeave(int fd, int party_id, int account_id, int char_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_PartyLeave_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_PartyLeave_pre > 0) {
int (*preHookFunc) (int *fd, int *party_id, int *account_id, int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_PartyLeave_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_PartyLeave_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_PartyLeave_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &party_id, &account_id, &char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -13640,9 +15267,9 @@ int HP_mapif_parse_PartyLeave(int fd, int party_id, int account_id, int char_id)
{
retVal___ = HPMHooks.source.mapif.parse_PartyLeave(fd, party_id, account_id, char_id);
}
- if( HPMHooks.count.HP_mapif_parse_PartyLeave_post ) {
+ if (HPMHooks.count.HP_mapif_parse_PartyLeave_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int party_id, int account_id, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_PartyLeave_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_PartyLeave_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_PartyLeave_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, party_id, account_id, char_id);
}
@@ -13652,14 +15279,14 @@ int HP_mapif_parse_PartyLeave(int fd, int party_id, int account_id, int char_id)
int HP_mapif_parse_PartyChangeMap(int fd, int party_id, int account_id, int char_id, unsigned short map, int online, unsigned int lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_PartyChangeMap_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_PartyChangeMap_pre > 0) {
int (*preHookFunc) (int *fd, int *party_id, int *account_id, int *char_id, unsigned short *map, int *online, unsigned int *lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_PartyChangeMap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_PartyChangeMap_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_PartyChangeMap_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &party_id, &account_id, &char_id, &map, &online, &lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -13667,9 +15294,9 @@ int HP_mapif_parse_PartyChangeMap(int fd, int party_id, int account_id, int char
{
retVal___ = HPMHooks.source.mapif.parse_PartyChangeMap(fd, party_id, account_id, char_id, map, online, lv);
}
- if( HPMHooks.count.HP_mapif_parse_PartyChangeMap_post ) {
+ if (HPMHooks.count.HP_mapif_parse_PartyChangeMap_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int party_id, int account_id, int char_id, unsigned short map, int online, unsigned int lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_PartyChangeMap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_PartyChangeMap_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_PartyChangeMap_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, party_id, account_id, char_id, map, online, lv);
}
@@ -13679,14 +15306,14 @@ int HP_mapif_parse_PartyChangeMap(int fd, int party_id, int account_id, int char
int HP_mapif_parse_BreakParty(int fd, int party_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_BreakParty_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_BreakParty_pre > 0) {
int (*preHookFunc) (int *fd, int *party_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_BreakParty_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_BreakParty_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_BreakParty_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &party_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -13694,9 +15321,9 @@ int HP_mapif_parse_BreakParty(int fd, int party_id) {
{
retVal___ = HPMHooks.source.mapif.parse_BreakParty(fd, party_id);
}
- if( HPMHooks.count.HP_mapif_parse_BreakParty_post ) {
+ if (HPMHooks.count.HP_mapif_parse_BreakParty_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int party_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_BreakParty_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_BreakParty_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_BreakParty_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, party_id);
}
@@ -13706,14 +15333,14 @@ int HP_mapif_parse_BreakParty(int fd, int party_id) {
int HP_mapif_parse_PartyMessage(int fd, int party_id, int account_id, const char *mes, int len) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_PartyMessage_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_PartyMessage_pre > 0) {
int (*preHookFunc) (int *fd, int *party_id, int *account_id, const char **mes, int *len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_PartyMessage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_PartyMessage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_PartyMessage_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &party_id, &account_id, &mes, &len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -13721,9 +15348,9 @@ int HP_mapif_parse_PartyMessage(int fd, int party_id, int account_id, const char
{
retVal___ = HPMHooks.source.mapif.parse_PartyMessage(fd, party_id, account_id, mes, len);
}
- if( HPMHooks.count.HP_mapif_parse_PartyMessage_post ) {
+ if (HPMHooks.count.HP_mapif_parse_PartyMessage_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int party_id, int account_id, const char *mes, int len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_PartyMessage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_PartyMessage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_PartyMessage_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, party_id, account_id, mes, len);
}
@@ -13733,14 +15360,14 @@ int HP_mapif_parse_PartyMessage(int fd, int party_id, int account_id, const char
int HP_mapif_parse_PartyLeaderChange(int fd, int party_id, int account_id, int char_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_PartyLeaderChange_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_PartyLeaderChange_pre > 0) {
int (*preHookFunc) (int *fd, int *party_id, int *account_id, int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_PartyLeaderChange_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_PartyLeaderChange_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_PartyLeaderChange_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &party_id, &account_id, &char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -13748,9 +15375,9 @@ int HP_mapif_parse_PartyLeaderChange(int fd, int party_id, int account_id, int c
{
retVal___ = HPMHooks.source.mapif.parse_PartyLeaderChange(fd, party_id, account_id, char_id);
}
- if( HPMHooks.count.HP_mapif_parse_PartyLeaderChange_post ) {
+ if (HPMHooks.count.HP_mapif_parse_PartyLeaderChange_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int party_id, int account_id, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_PartyLeaderChange_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_PartyLeaderChange_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_PartyLeaderChange_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, party_id, account_id, char_id);
}
@@ -13760,14 +15387,14 @@ int HP_mapif_parse_PartyLeaderChange(int fd, int party_id, int account_id, int c
int HP_mapif_pet_created(int fd, int account_id, struct s_pet *p) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_pet_created_pre ) {
+ if (HPMHooks.count.HP_mapif_pet_created_pre > 0) {
int (*preHookFunc) (int *fd, int *account_id, struct s_pet **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_pet_created_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_pet_created_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_pet_created_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &account_id, &p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -13775,9 +15402,9 @@ int HP_mapif_pet_created(int fd, int account_id, struct s_pet *p) {
{
retVal___ = HPMHooks.source.mapif.pet_created(fd, account_id, p);
}
- if( HPMHooks.count.HP_mapif_pet_created_post ) {
+ if (HPMHooks.count.HP_mapif_pet_created_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int account_id, struct s_pet *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_pet_created_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_pet_created_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_pet_created_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, account_id, p);
}
@@ -13787,14 +15414,14 @@ int HP_mapif_pet_created(int fd, int account_id, struct s_pet *p) {
int HP_mapif_pet_info(int fd, int account_id, struct s_pet *p) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_pet_info_pre ) {
+ if (HPMHooks.count.HP_mapif_pet_info_pre > 0) {
int (*preHookFunc) (int *fd, int *account_id, struct s_pet **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_pet_info_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_pet_info_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_pet_info_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &account_id, &p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -13802,9 +15429,9 @@ int HP_mapif_pet_info(int fd, int account_id, struct s_pet *p) {
{
retVal___ = HPMHooks.source.mapif.pet_info(fd, account_id, p);
}
- if( HPMHooks.count.HP_mapif_pet_info_post ) {
+ if (HPMHooks.count.HP_mapif_pet_info_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int account_id, struct s_pet *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_pet_info_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_pet_info_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_pet_info_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, account_id, p);
}
@@ -13814,14 +15441,14 @@ int HP_mapif_pet_info(int fd, int account_id, struct s_pet *p) {
int HP_mapif_pet_noinfo(int fd, int account_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_pet_noinfo_pre ) {
+ if (HPMHooks.count.HP_mapif_pet_noinfo_pre > 0) {
int (*preHookFunc) (int *fd, int *account_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_pet_noinfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_pet_noinfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_pet_noinfo_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &account_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -13829,9 +15456,9 @@ int HP_mapif_pet_noinfo(int fd, int account_id) {
{
retVal___ = HPMHooks.source.mapif.pet_noinfo(fd, account_id);
}
- if( HPMHooks.count.HP_mapif_pet_noinfo_post ) {
+ if (HPMHooks.count.HP_mapif_pet_noinfo_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int account_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_pet_noinfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_pet_noinfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_pet_noinfo_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, account_id);
}
@@ -13841,14 +15468,14 @@ int HP_mapif_pet_noinfo(int fd, int account_id) {
int HP_mapif_save_pet_ack(int fd, int account_id, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_save_pet_ack_pre ) {
+ if (HPMHooks.count.HP_mapif_save_pet_ack_pre > 0) {
int (*preHookFunc) (int *fd, int *account_id, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_save_pet_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_save_pet_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_save_pet_ack_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &account_id, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -13856,9 +15483,9 @@ int HP_mapif_save_pet_ack(int fd, int account_id, int flag) {
{
retVal___ = HPMHooks.source.mapif.save_pet_ack(fd, account_id, flag);
}
- if( HPMHooks.count.HP_mapif_save_pet_ack_post ) {
+ if (HPMHooks.count.HP_mapif_save_pet_ack_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int account_id, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_save_pet_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_save_pet_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_save_pet_ack_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, account_id, flag);
}
@@ -13868,14 +15495,14 @@ int HP_mapif_save_pet_ack(int fd, int account_id, int flag) {
int HP_mapif_delete_pet_ack(int fd, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_delete_pet_ack_pre ) {
+ if (HPMHooks.count.HP_mapif_delete_pet_ack_pre > 0) {
int (*preHookFunc) (int *fd, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_delete_pet_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_delete_pet_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_delete_pet_ack_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -13883,80 +15510,26 @@ int HP_mapif_delete_pet_ack(int fd, int flag) {
{
retVal___ = HPMHooks.source.mapif.delete_pet_ack(fd, flag);
}
- if( HPMHooks.count.HP_mapif_delete_pet_ack_post ) {
+ if (HPMHooks.count.HP_mapif_delete_pet_ack_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_delete_pet_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_delete_pet_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_delete_pet_ack_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, flag);
}
}
return retVal___;
}
-int HP_mapif_create_pet(int fd, int account_id, int char_id, short pet_class, short pet_lv, short pet_egg_id, short pet_equip, short intimate, short hungry, char rename_flag, char incubate, const char *pet_name) {
- int hIndex = 0;
- int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_create_pet_pre ) {
- int (*preHookFunc) (int *fd, int *account_id, int *char_id, short *pet_class, short *pet_lv, short *pet_egg_id, short *pet_equip, short *intimate, short *hungry, char *rename_flag, char *incubate, const char **pet_name);
- *HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_create_pet_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_mapif_create_pet_pre[hIndex].func;
- retVal___ = preHookFunc(&fd, &account_id, &char_id, &pet_class, &pet_lv, &pet_egg_id, &pet_equip, &intimate, &hungry, &rename_flag, &incubate, &pet_name);
- }
- if( *HPMforce_return ) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.create_pet(fd, account_id, char_id, pet_class, pet_lv, pet_egg_id, pet_equip, intimate, hungry, rename_flag, incubate, pet_name);
- }
- if( HPMHooks.count.HP_mapif_create_pet_post ) {
- int (*postHookFunc) (int retVal___, int fd, int account_id, int char_id, short pet_class, short pet_lv, short pet_egg_id, short pet_equip, short intimate, short hungry, char rename_flag, char incubate, const char *pet_name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_create_pet_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_mapif_create_pet_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, fd, account_id, char_id, pet_class, pet_lv, pet_egg_id, pet_equip, intimate, hungry, rename_flag, incubate, pet_name);
- }
- }
- return retVal___;
-}
-int HP_mapif_load_pet(int fd, int account_id, int char_id, int pet_id) {
- int hIndex = 0;
- int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_load_pet_pre ) {
- int (*preHookFunc) (int *fd, int *account_id, int *char_id, int *pet_id);
- *HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_load_pet_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_mapif_load_pet_pre[hIndex].func;
- retVal___ = preHookFunc(&fd, &account_id, &char_id, &pet_id);
- }
- if( *HPMforce_return ) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.load_pet(fd, account_id, char_id, pet_id);
- }
- if( HPMHooks.count.HP_mapif_load_pet_post ) {
- int (*postHookFunc) (int retVal___, int fd, int account_id, int char_id, int pet_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_load_pet_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_mapif_load_pet_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, fd, account_id, char_id, pet_id);
- }
- }
- return retVal___;
-}
int HP_mapif_save_pet(int fd, int account_id, const struct s_pet *data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_save_pet_pre ) {
+ if (HPMHooks.count.HP_mapif_save_pet_pre > 0) {
int (*preHookFunc) (int *fd, int *account_id, const struct s_pet **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_save_pet_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_save_pet_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_save_pet_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &account_id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -13964,9 +15537,9 @@ int HP_mapif_save_pet(int fd, int account_id, const struct s_pet *data) {
{
retVal___ = HPMHooks.source.mapif.save_pet(fd, account_id, data);
}
- if( HPMHooks.count.HP_mapif_save_pet_post ) {
+ if (HPMHooks.count.HP_mapif_save_pet_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int account_id, const struct s_pet *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_save_pet_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_save_pet_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_save_pet_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, account_id, data);
}
@@ -13976,14 +15549,14 @@ int HP_mapif_save_pet(int fd, int account_id, const struct s_pet *data) {
int HP_mapif_delete_pet(int fd, int pet_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_delete_pet_pre ) {
+ if (HPMHooks.count.HP_mapif_delete_pet_pre > 0) {
int (*preHookFunc) (int *fd, int *pet_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_delete_pet_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_delete_pet_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_delete_pet_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &pet_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -13991,9 +15564,9 @@ int HP_mapif_delete_pet(int fd, int pet_id) {
{
retVal___ = HPMHooks.source.mapif.delete_pet(fd, pet_id);
}
- if( HPMHooks.count.HP_mapif_delete_pet_post ) {
+ if (HPMHooks.count.HP_mapif_delete_pet_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int pet_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_delete_pet_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_delete_pet_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_delete_pet_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, pet_id);
}
@@ -14003,14 +15576,14 @@ int HP_mapif_delete_pet(int fd, int pet_id) {
int HP_mapif_parse_CreatePet(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_CreatePet_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_CreatePet_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_CreatePet_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_CreatePet_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_CreatePet_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -14018,9 +15591,9 @@ int HP_mapif_parse_CreatePet(int fd) {
{
retVal___ = HPMHooks.source.mapif.parse_CreatePet(fd);
}
- if( HPMHooks.count.HP_mapif_parse_CreatePet_post ) {
+ if (HPMHooks.count.HP_mapif_parse_CreatePet_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_CreatePet_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_CreatePet_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_CreatePet_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -14030,14 +15603,14 @@ int HP_mapif_parse_CreatePet(int fd) {
int HP_mapif_parse_LoadPet(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_LoadPet_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_LoadPet_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_LoadPet_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_LoadPet_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_LoadPet_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -14045,9 +15618,9 @@ int HP_mapif_parse_LoadPet(int fd) {
{
retVal___ = HPMHooks.source.mapif.parse_LoadPet(fd);
}
- if( HPMHooks.count.HP_mapif_parse_LoadPet_post ) {
+ if (HPMHooks.count.HP_mapif_parse_LoadPet_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_LoadPet_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_LoadPet_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_LoadPet_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -14057,14 +15630,14 @@ int HP_mapif_parse_LoadPet(int fd) {
int HP_mapif_parse_SavePet(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_SavePet_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_SavePet_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_SavePet_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_SavePet_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_SavePet_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -14072,9 +15645,9 @@ int HP_mapif_parse_SavePet(int fd) {
{
retVal___ = HPMHooks.source.mapif.parse_SavePet(fd);
}
- if( HPMHooks.count.HP_mapif_parse_SavePet_post ) {
+ if (HPMHooks.count.HP_mapif_parse_SavePet_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_SavePet_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_SavePet_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_SavePet_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -14084,14 +15657,14 @@ int HP_mapif_parse_SavePet(int fd) {
int HP_mapif_parse_DeletePet(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_DeletePet_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_DeletePet_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_DeletePet_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_DeletePet_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_DeletePet_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -14099,240 +15672,366 @@ int HP_mapif_parse_DeletePet(int fd) {
{
retVal___ = HPMHooks.source.mapif.parse_DeletePet(fd);
}
- if( HPMHooks.count.HP_mapif_parse_DeletePet_post ) {
+ if (HPMHooks.count.HP_mapif_parse_DeletePet_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_DeletePet_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_DeletePet_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_DeletePet_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
}
return retVal___;
}
-struct quest* HP_mapif_quests_fromsql(int char_id, int *count) {
+void HP_mapif_quest_save_ack(int fd, int char_id, bool success) {
int hIndex = 0;
- struct quest* retVal___ = NULL;
- if( HPMHooks.count.HP_mapif_quests_fromsql_pre ) {
- struct quest* (*preHookFunc) (int *char_id, int **count);
+ if (HPMHooks.count.HP_mapif_quest_save_ack_pre > 0) {
+ void (*preHookFunc) (int *fd, int *char_id, bool *success);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_quests_fromsql_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_mapif_quests_fromsql_pre[hIndex].func;
- retVal___ = preHookFunc(&char_id, &count);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_quest_save_ack_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapif_quest_save_ack_pre[hIndex].func;
+ preHookFunc(&fd, &char_id, &success);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
- return retVal___;
+ return;
}
}
{
- retVal___ = HPMHooks.source.mapif.quests_fromsql(char_id, count);
+ HPMHooks.source.mapif.quest_save_ack(fd, char_id, success);
}
- if( HPMHooks.count.HP_mapif_quests_fromsql_post ) {
- struct quest* (*postHookFunc) (struct quest* retVal___, int char_id, int *count);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_quests_fromsql_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_mapif_quests_fromsql_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, char_id, count);
+ if (HPMHooks.count.HP_mapif_quest_save_ack_post > 0) {
+ void (*postHookFunc) (int fd, int char_id, bool success);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_quest_save_ack_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapif_quest_save_ack_post[hIndex].func;
+ postHookFunc(fd, char_id, success);
}
}
- return retVal___;
+ return;
}
-bool HP_mapif_quest_delete(int char_id, int quest_id) {
+int HP_mapif_parse_quest_save(int fd) {
int hIndex = 0;
- bool retVal___ = false;
- if( HPMHooks.count.HP_mapif_quest_delete_pre ) {
- bool (*preHookFunc) (int *char_id, int *quest_id);
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_mapif_parse_quest_save_pre > 0) {
+ int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_quest_delete_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_mapif_quest_delete_pre[hIndex].func;
- retVal___ = preHookFunc(&char_id, &quest_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_quest_save_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapif_parse_quest_save_pre[hIndex].func;
+ retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
}
{
- retVal___ = HPMHooks.source.mapif.quest_delete(char_id, quest_id);
+ retVal___ = HPMHooks.source.mapif.parse_quest_save(fd);
}
- if( HPMHooks.count.HP_mapif_quest_delete_post ) {
- bool (*postHookFunc) (bool retVal___, int char_id, int quest_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_quest_delete_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_mapif_quest_delete_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, char_id, quest_id);
+ if (HPMHooks.count.HP_mapif_parse_quest_save_post > 0) {
+ int (*postHookFunc) (int retVal___, int fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_quest_save_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapif_parse_quest_save_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, fd);
}
}
return retVal___;
}
-bool HP_mapif_quest_add(int char_id, struct quest qd) {
+void HP_mapif_send_quests(int fd, int char_id, struct quest *tmp_questlog, int num_quests) {
int hIndex = 0;
- bool retVal___ = false;
- if( HPMHooks.count.HP_mapif_quest_add_pre ) {
- bool (*preHookFunc) (int *char_id, struct quest *qd);
+ if (HPMHooks.count.HP_mapif_send_quests_pre > 0) {
+ void (*preHookFunc) (int *fd, int *char_id, struct quest **tmp_questlog, int *num_quests);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_quest_add_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_mapif_quest_add_pre[hIndex].func;
- retVal___ = preHookFunc(&char_id, &qd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_send_quests_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapif_send_quests_pre[hIndex].func;
+ preHookFunc(&fd, &char_id, &tmp_questlog, &num_quests);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
- return retVal___;
+ return;
}
}
{
- retVal___ = HPMHooks.source.mapif.quest_add(char_id, qd);
+ HPMHooks.source.mapif.send_quests(fd, char_id, tmp_questlog, num_quests);
}
- if( HPMHooks.count.HP_mapif_quest_add_post ) {
- bool (*postHookFunc) (bool retVal___, int char_id, struct quest qd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_quest_add_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_mapif_quest_add_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, char_id, qd);
+ if (HPMHooks.count.HP_mapif_send_quests_post > 0) {
+ void (*postHookFunc) (int fd, int char_id, struct quest *tmp_questlog, int num_quests);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_send_quests_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapif_send_quests_post[hIndex].func;
+ postHookFunc(fd, char_id, tmp_questlog, num_quests);
}
}
- return retVal___;
+ return;
}
-bool HP_mapif_quest_update(int char_id, struct quest qd) {
+int HP_mapif_parse_quest_load(int fd) {
int hIndex = 0;
- bool retVal___ = false;
- if( HPMHooks.count.HP_mapif_quest_update_pre ) {
- bool (*preHookFunc) (int *char_id, struct quest *qd);
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_mapif_parse_quest_load_pre > 0) {
+ int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_quest_update_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_mapif_quest_update_pre[hIndex].func;
- retVal___ = preHookFunc(&char_id, &qd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_quest_load_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapif_parse_quest_load_pre[hIndex].func;
+ retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
}
{
- retVal___ = HPMHooks.source.mapif.quest_update(char_id, qd);
+ retVal___ = HPMHooks.source.mapif.parse_quest_load(fd);
}
- if( HPMHooks.count.HP_mapif_quest_update_post ) {
- bool (*postHookFunc) (bool retVal___, int char_id, struct quest qd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_quest_update_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_mapif_quest_update_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, char_id, qd);
+ if (HPMHooks.count.HP_mapif_parse_quest_load_post > 0) {
+ int (*postHookFunc) (int retVal___, int fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_quest_load_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapif_parse_quest_load_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, fd);
}
}
return retVal___;
}
-void HP_mapif_quest_save_ack(int fd, int char_id, bool success) {
+void HP_mapif_parse_rodex_requestinbox(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_quest_save_ack_pre ) {
- void (*preHookFunc) (int *fd, int *char_id, bool *success);
+ if (HPMHooks.count.HP_mapif_parse_rodex_requestinbox_pre > 0) {
+ void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_quest_save_ack_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_mapif_quest_save_ack_pre[hIndex].func;
- preHookFunc(&fd, &char_id, &success);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_rodex_requestinbox_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapif_parse_rodex_requestinbox_pre[hIndex].func;
+ preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
}
{
- HPMHooks.source.mapif.quest_save_ack(fd, char_id, success);
+ HPMHooks.source.mapif.parse_rodex_requestinbox(fd);
}
- if( HPMHooks.count.HP_mapif_quest_save_ack_post ) {
- void (*postHookFunc) (int fd, int char_id, bool success);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_quest_save_ack_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_mapif_quest_save_ack_post[hIndex].func;
- postHookFunc(fd, char_id, success);
+ if (HPMHooks.count.HP_mapif_parse_rodex_requestinbox_post > 0) {
+ void (*postHookFunc) (int fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_rodex_requestinbox_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapif_parse_rodex_requestinbox_post[hIndex].func;
+ postHookFunc(fd);
}
}
return;
}
-int HP_mapif_parse_quest_save(int fd) {
+void HP_mapif_rodex_sendinbox(int fd, int char_id, int8 opentype, int8 flag, int count, int64 mail_id, struct rodex_maillist *mails) {
int hIndex = 0;
- int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_quest_save_pre ) {
- int (*preHookFunc) (int *fd);
+ if (HPMHooks.count.HP_mapif_rodex_sendinbox_pre > 0) {
+ void (*preHookFunc) (int *fd, int *char_id, int8 *opentype, int8 *flag, int *count, int64 *mail_id, struct rodex_maillist **mails);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_quest_save_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_mapif_parse_quest_save_pre[hIndex].func;
- retVal___ = preHookFunc(&fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_rodex_sendinbox_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapif_rodex_sendinbox_pre[hIndex].func;
+ preHookFunc(&fd, &char_id, &opentype, &flag, &count, &mail_id, &mails);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
- return retVal___;
+ return;
}
}
{
- retVal___ = HPMHooks.source.mapif.parse_quest_save(fd);
+ HPMHooks.source.mapif.rodex_sendinbox(fd, char_id, opentype, flag, count, mail_id, mails);
}
- if( HPMHooks.count.HP_mapif_parse_quest_save_post ) {
- int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_quest_save_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_mapif_parse_quest_save_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, fd);
+ if (HPMHooks.count.HP_mapif_rodex_sendinbox_post > 0) {
+ void (*postHookFunc) (int fd, int char_id, int8 opentype, int8 flag, int count, int64 mail_id, struct rodex_maillist *mails);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_rodex_sendinbox_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapif_rodex_sendinbox_post[hIndex].func;
+ postHookFunc(fd, char_id, opentype, flag, count, mail_id, mails);
}
}
- return retVal___;
+ return;
}
-void HP_mapif_send_quests(int fd, int char_id, struct quest *tmp_questlog, int num_quests) {
+void HP_mapif_parse_rodex_checkhasnew(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_send_quests_pre ) {
- void (*preHookFunc) (int *fd, int *char_id, struct quest **tmp_questlog, int *num_quests);
+ if (HPMHooks.count.HP_mapif_parse_rodex_checkhasnew_pre > 0) {
+ void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_send_quests_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_mapif_send_quests_pre[hIndex].func;
- preHookFunc(&fd, &char_id, &tmp_questlog, &num_quests);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_rodex_checkhasnew_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapif_parse_rodex_checkhasnew_pre[hIndex].func;
+ preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
}
{
- HPMHooks.source.mapif.send_quests(fd, char_id, tmp_questlog, num_quests);
+ HPMHooks.source.mapif.parse_rodex_checkhasnew(fd);
}
- if( HPMHooks.count.HP_mapif_send_quests_post ) {
- void (*postHookFunc) (int fd, int char_id, struct quest *tmp_questlog, int num_quests);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_send_quests_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_mapif_send_quests_post[hIndex].func;
- postHookFunc(fd, char_id, tmp_questlog, num_quests);
+ if (HPMHooks.count.HP_mapif_parse_rodex_checkhasnew_post > 0) {
+ void (*postHookFunc) (int fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_rodex_checkhasnew_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapif_parse_rodex_checkhasnew_post[hIndex].func;
+ postHookFunc(fd);
}
}
return;
}
-int HP_mapif_parse_quest_load(int fd) {
+void HP_mapif_rodex_sendhasnew(int fd, int char_id, bool has_new) {
int hIndex = 0;
- int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_quest_load_pre ) {
- int (*preHookFunc) (int *fd);
+ if (HPMHooks.count.HP_mapif_rodex_sendhasnew_pre > 0) {
+ void (*preHookFunc) (int *fd, int *char_id, bool *has_new);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_quest_load_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_mapif_parse_quest_load_pre[hIndex].func;
- retVal___ = preHookFunc(&fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_rodex_sendhasnew_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapif_rodex_sendhasnew_pre[hIndex].func;
+ preHookFunc(&fd, &char_id, &has_new);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
- return retVal___;
+ return;
}
}
{
- retVal___ = HPMHooks.source.mapif.parse_quest_load(fd);
+ HPMHooks.source.mapif.rodex_sendhasnew(fd, char_id, has_new);
}
- if( HPMHooks.count.HP_mapif_parse_quest_load_post ) {
- int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_quest_load_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_mapif_parse_quest_load_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, fd);
+ if (HPMHooks.count.HP_mapif_rodex_sendhasnew_post > 0) {
+ void (*postHookFunc) (int fd, int char_id, bool has_new);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_rodex_sendhasnew_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapif_rodex_sendhasnew_post[hIndex].func;
+ postHookFunc(fd, char_id, has_new);
}
}
- return retVal___;
+ return;
+}
+void HP_mapif_parse_rodex_updatemail(int fd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_mapif_parse_rodex_updatemail_pre > 0) {
+ void (*preHookFunc) (int *fd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_rodex_updatemail_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapif_parse_rodex_updatemail_pre[hIndex].func;
+ preHookFunc(&fd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.mapif.parse_rodex_updatemail(fd);
+ }
+ if (HPMHooks.count.HP_mapif_parse_rodex_updatemail_post > 0) {
+ void (*postHookFunc) (int fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_rodex_updatemail_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapif_parse_rodex_updatemail_post[hIndex].func;
+ postHookFunc(fd);
+ }
+ }
+ return;
+}
+void HP_mapif_parse_rodex_send(int fd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_mapif_parse_rodex_send_pre > 0) {
+ void (*preHookFunc) (int *fd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_rodex_send_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapif_parse_rodex_send_pre[hIndex].func;
+ preHookFunc(&fd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.mapif.parse_rodex_send(fd);
+ }
+ if (HPMHooks.count.HP_mapif_parse_rodex_send_post > 0) {
+ void (*postHookFunc) (int fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_rodex_send_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapif_parse_rodex_send_post[hIndex].func;
+ postHookFunc(fd);
+ }
+ }
+ return;
+}
+void HP_mapif_rodex_send(int fd, int sender_id, int receiver_id, int receiver_accountid, bool result) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_mapif_rodex_send_pre > 0) {
+ void (*preHookFunc) (int *fd, int *sender_id, int *receiver_id, int *receiver_accountid, bool *result);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_rodex_send_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapif_rodex_send_pre[hIndex].func;
+ preHookFunc(&fd, &sender_id, &receiver_id, &receiver_accountid, &result);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.mapif.rodex_send(fd, sender_id, receiver_id, receiver_accountid, result);
+ }
+ if (HPMHooks.count.HP_mapif_rodex_send_post > 0) {
+ void (*postHookFunc) (int fd, int sender_id, int receiver_id, int receiver_accountid, bool result);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_rodex_send_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapif_rodex_send_post[hIndex].func;
+ postHookFunc(fd, sender_id, receiver_id, receiver_accountid, result);
+ }
+ }
+ return;
+}
+void HP_mapif_parse_rodex_checkname(int fd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_mapif_parse_rodex_checkname_pre > 0) {
+ void (*preHookFunc) (int *fd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_rodex_checkname_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapif_parse_rodex_checkname_pre[hIndex].func;
+ preHookFunc(&fd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.mapif.parse_rodex_checkname(fd);
+ }
+ if (HPMHooks.count.HP_mapif_parse_rodex_checkname_post > 0) {
+ void (*postHookFunc) (int fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_rodex_checkname_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapif_parse_rodex_checkname_post[hIndex].func;
+ postHookFunc(fd);
+ }
+ }
+ return;
+}
+void HP_mapif_rodex_checkname(int fd, int reqchar_id, int target_char_id, short target_class, int target_level, char *name) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_mapif_rodex_checkname_pre > 0) {
+ void (*preHookFunc) (int *fd, int *reqchar_id, int *target_char_id, short *target_class, int *target_level, char **name);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_rodex_checkname_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapif_rodex_checkname_pre[hIndex].func;
+ preHookFunc(&fd, &reqchar_id, &target_char_id, &target_class, &target_level, &name);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.mapif.rodex_checkname(fd, reqchar_id, target_char_id, target_class, target_level, name);
+ }
+ if (HPMHooks.count.HP_mapif_rodex_checkname_post > 0) {
+ void (*postHookFunc) (int fd, int reqchar_id, int target_char_id, short target_class, int target_level, char *name);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_rodex_checkname_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapif_rodex_checkname_post[hIndex].func;
+ postHookFunc(fd, reqchar_id, target_char_id, target_class, target_level, name);
+ }
+ }
+ return;
}
int HP_mapif_load_guild_storage(int fd, int account_id, int guild_id, char flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_load_guild_storage_pre ) {
+ if (HPMHooks.count.HP_mapif_load_guild_storage_pre > 0) {
int (*preHookFunc) (int *fd, int *account_id, int *guild_id, char *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_load_guild_storage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_load_guild_storage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_load_guild_storage_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &account_id, &guild_id, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -14340,9 +16039,9 @@ int HP_mapif_load_guild_storage(int fd, int account_id, int guild_id, char flag)
{
retVal___ = HPMHooks.source.mapif.load_guild_storage(fd, account_id, guild_id, flag);
}
- if( HPMHooks.count.HP_mapif_load_guild_storage_post ) {
+ if (HPMHooks.count.HP_mapif_load_guild_storage_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int account_id, int guild_id, char flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_load_guild_storage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_load_guild_storage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_load_guild_storage_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, account_id, guild_id, flag);
}
@@ -14352,14 +16051,14 @@ int HP_mapif_load_guild_storage(int fd, int account_id, int guild_id, char flag)
int HP_mapif_save_guild_storage_ack(int fd, int account_id, int guild_id, int fail) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_save_guild_storage_ack_pre ) {
+ if (HPMHooks.count.HP_mapif_save_guild_storage_ack_pre > 0) {
int (*preHookFunc) (int *fd, int *account_id, int *guild_id, int *fail);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_save_guild_storage_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_save_guild_storage_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_save_guild_storage_ack_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &account_id, &guild_id, &fail);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -14367,9 +16066,9 @@ int HP_mapif_save_guild_storage_ack(int fd, int account_id, int guild_id, int fa
{
retVal___ = HPMHooks.source.mapif.save_guild_storage_ack(fd, account_id, guild_id, fail);
}
- if( HPMHooks.count.HP_mapif_save_guild_storage_ack_post ) {
+ if (HPMHooks.count.HP_mapif_save_guild_storage_ack_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int account_id, int guild_id, int fail);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_save_guild_storage_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_save_guild_storage_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_save_guild_storage_ack_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, account_id, guild_id, fail);
}
@@ -14379,14 +16078,14 @@ int HP_mapif_save_guild_storage_ack(int fd, int account_id, int guild_id, int fa
int HP_mapif_parse_LoadGuildStorage(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_LoadGuildStorage_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_LoadGuildStorage_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_LoadGuildStorage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_LoadGuildStorage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_LoadGuildStorage_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -14394,9 +16093,9 @@ int HP_mapif_parse_LoadGuildStorage(int fd) {
{
retVal___ = HPMHooks.source.mapif.parse_LoadGuildStorage(fd);
}
- if( HPMHooks.count.HP_mapif_parse_LoadGuildStorage_post ) {
+ if (HPMHooks.count.HP_mapif_parse_LoadGuildStorage_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_LoadGuildStorage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_LoadGuildStorage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_LoadGuildStorage_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -14406,14 +16105,14 @@ int HP_mapif_parse_LoadGuildStorage(int fd) {
int HP_mapif_parse_SaveGuildStorage(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_SaveGuildStorage_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_SaveGuildStorage_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_SaveGuildStorage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_SaveGuildStorage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_SaveGuildStorage_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -14421,143 +16120,197 @@ int HP_mapif_parse_SaveGuildStorage(int fd) {
{
retVal___ = HPMHooks.source.mapif.parse_SaveGuildStorage(fd);
}
- if( HPMHooks.count.HP_mapif_parse_SaveGuildStorage_post ) {
+ if (HPMHooks.count.HP_mapif_parse_SaveGuildStorage_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_SaveGuildStorage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_SaveGuildStorage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_SaveGuildStorage_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
}
return retVal___;
}
-int HP_mapif_itembound_ack(int fd, int aid, int guild_id) {
+int HP_mapif_account_storage_load(int fd, int account_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_itembound_ack_pre ) {
- int (*preHookFunc) (int *fd, int *aid, int *guild_id);
+ if (HPMHooks.count.HP_mapif_account_storage_load_pre > 0) {
+ int (*preHookFunc) (int *fd, int *account_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_itembound_ack_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_mapif_itembound_ack_pre[hIndex].func;
- retVal___ = preHookFunc(&fd, &aid, &guild_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_account_storage_load_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapif_account_storage_load_pre[hIndex].func;
+ retVal___ = preHookFunc(&fd, &account_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
}
{
- retVal___ = HPMHooks.source.mapif.itembound_ack(fd, aid, guild_id);
+ retVal___ = HPMHooks.source.mapif.account_storage_load(fd, account_id);
}
- if( HPMHooks.count.HP_mapif_itembound_ack_post ) {
- int (*postHookFunc) (int retVal___, int fd, int aid, int guild_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_itembound_ack_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_mapif_itembound_ack_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, fd, aid, guild_id);
+ if (HPMHooks.count.HP_mapif_account_storage_load_post > 0) {
+ int (*postHookFunc) (int retVal___, int fd, int account_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_account_storage_load_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapif_account_storage_load_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, fd, account_id);
}
}
return retVal___;
}
-int HP_mapif_parse_ItemBoundRetrieve_sub(int fd) {
+int HP_mapif_pAccountStorageLoad(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_ItemBoundRetrieve_sub_pre ) {
+ if (HPMHooks.count.HP_mapif_pAccountStorageLoad_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_ItemBoundRetrieve_sub_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_mapif_parse_ItemBoundRetrieve_sub_pre[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_pAccountStorageLoad_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapif_pAccountStorageLoad_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
}
{
- retVal___ = HPMHooks.source.mapif.parse_ItemBoundRetrieve_sub(fd);
+ retVal___ = HPMHooks.source.mapif.pAccountStorageLoad(fd);
}
- if( HPMHooks.count.HP_mapif_parse_ItemBoundRetrieve_sub_post ) {
+ if (HPMHooks.count.HP_mapif_pAccountStorageLoad_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_ItemBoundRetrieve_sub_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_mapif_parse_ItemBoundRetrieve_sub_post[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_pAccountStorageLoad_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapif_pAccountStorageLoad_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
}
return retVal___;
}
-void HP_mapif_parse_ItemBoundRetrieve(int fd) {
+int HP_mapif_pAccountStorageSave(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_parse_ItemBoundRetrieve_pre ) {
- void (*preHookFunc) (int *fd);
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_mapif_pAccountStorageSave_pre > 0) {
+ int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_ItemBoundRetrieve_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_mapif_parse_ItemBoundRetrieve_pre[hIndex].func;
- preHookFunc(&fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_pAccountStorageSave_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapif_pAccountStorageSave_pre[hIndex].func;
+ retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.mapif.pAccountStorageSave(fd);
+ }
+ if (HPMHooks.count.HP_mapif_pAccountStorageSave_post > 0) {
+ int (*postHookFunc) (int retVal___, int fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_pAccountStorageSave_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapif_pAccountStorageSave_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, fd);
+ }
+ }
+ return retVal___;
+}
+void HP_mapif_sAccountStorageSaveAck(int fd, int account_id, bool save) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_mapif_sAccountStorageSaveAck_pre > 0) {
+ void (*preHookFunc) (int *fd, int *account_id, bool *save);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_sAccountStorageSaveAck_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapif_sAccountStorageSaveAck_pre[hIndex].func;
+ preHookFunc(&fd, &account_id, &save);
+ }
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
}
{
- HPMHooks.source.mapif.parse_ItemBoundRetrieve(fd);
+ HPMHooks.source.mapif.sAccountStorageSaveAck(fd, account_id, save);
}
- if( HPMHooks.count.HP_mapif_parse_ItemBoundRetrieve_post ) {
- void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_ItemBoundRetrieve_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_mapif_parse_ItemBoundRetrieve_post[hIndex].func;
- postHookFunc(fd);
+ if (HPMHooks.count.HP_mapif_sAccountStorageSaveAck_post > 0) {
+ void (*postHookFunc) (int fd, int account_id, bool save);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_sAccountStorageSaveAck_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapif_sAccountStorageSaveAck_post[hIndex].func;
+ postHookFunc(fd, account_id, save);
}
}
return;
}
-void HP_mapif_parse_accinfo(int fd) {
+int HP_mapif_itembound_ack(int fd, int aid, int guild_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_parse_accinfo_pre ) {
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_mapif_itembound_ack_pre > 0) {
+ int (*preHookFunc) (int *fd, int *aid, int *guild_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_itembound_ack_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapif_itembound_ack_pre[hIndex].func;
+ retVal___ = preHookFunc(&fd, &aid, &guild_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.mapif.itembound_ack(fd, aid, guild_id);
+ }
+ if (HPMHooks.count.HP_mapif_itembound_ack_post > 0) {
+ int (*postHookFunc) (int retVal___, int fd, int aid, int guild_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_itembound_ack_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapif_itembound_ack_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, fd, aid, guild_id);
+ }
+ }
+ return retVal___;
+}
+void HP_mapif_parse_ItemBoundRetrieve(int fd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_mapif_parse_ItemBoundRetrieve_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_accinfo_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_mapif_parse_accinfo_pre[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_ItemBoundRetrieve_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapif_parse_ItemBoundRetrieve_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
}
{
- HPMHooks.source.mapif.parse_accinfo(fd);
+ HPMHooks.source.mapif.parse_ItemBoundRetrieve(fd);
}
- if( HPMHooks.count.HP_mapif_parse_accinfo_post ) {
+ if (HPMHooks.count.HP_mapif_parse_ItemBoundRetrieve_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_accinfo_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_mapif_parse_accinfo_post[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_ItemBoundRetrieve_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapif_parse_ItemBoundRetrieve_post[hIndex].func;
postHookFunc(fd);
}
}
return;
}
-void HP_mapif_parse_accinfo2(bool success, int map_fd, int u_fd, int u_aid, int account_id, const char *userid, const char *user_pass, const char *email, const char *last_ip, const char *lastlogin, const char *pin_code, const char *birthdate, int group_id, int logincount, int state) {
+void HP_mapif_parse_accinfo(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_parse_accinfo2_pre ) {
- void (*preHookFunc) (bool *success, int *map_fd, int *u_fd, int *u_aid, int *account_id, const char **userid, const char **user_pass, const char **email, const char **last_ip, const char **lastlogin, const char **pin_code, const char **birthdate, int *group_id, int *logincount, int *state);
+ if (HPMHooks.count.HP_mapif_parse_accinfo_pre > 0) {
+ void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_accinfo2_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_mapif_parse_accinfo2_pre[hIndex].func;
- preHookFunc(&success, &map_fd, &u_fd, &u_aid, &account_id, &userid, &user_pass, &email, &last_ip, &lastlogin, &pin_code, &birthdate, &group_id, &logincount, &state);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_accinfo_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapif_parse_accinfo_pre[hIndex].func;
+ preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
}
{
- HPMHooks.source.mapif.parse_accinfo2(success, map_fd, u_fd, u_aid, account_id, userid, user_pass, email, last_ip, lastlogin, pin_code, birthdate, group_id, logincount, state);
+ HPMHooks.source.mapif.parse_accinfo(fd);
}
- if( HPMHooks.count.HP_mapif_parse_accinfo2_post ) {
- void (*postHookFunc) (bool success, int map_fd, int u_fd, int u_aid, int account_id, const char *userid, const char *user_pass, const char *email, const char *last_ip, const char *lastlogin, const char *pin_code, const char *birthdate, int group_id, int logincount, int state);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_accinfo2_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_mapif_parse_accinfo2_post[hIndex].func;
- postHookFunc(success, map_fd, u_fd, u_aid, account_id, userid, user_pass, email, last_ip, lastlogin, pin_code, birthdate, group_id, logincount, state);
+ if (HPMHooks.count.HP_mapif_parse_accinfo_post > 0) {
+ void (*postHookFunc) (int fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_accinfo_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapif_parse_accinfo_post[hIndex].func;
+ postHookFunc(fd);
}
}
return;
@@ -14565,14 +16318,14 @@ void HP_mapif_parse_accinfo2(bool success, int map_fd, int u_fd, int u_aid, int
int HP_mapif_broadcast(const unsigned char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY, int sfd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_broadcast_pre ) {
+ if (HPMHooks.count.HP_mapif_broadcast_pre > 0) {
int (*preHookFunc) (const unsigned char **mes, int *len, unsigned int *fontColor, short *fontType, short *fontSize, short *fontAlign, short *fontY, int *sfd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_broadcast_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_broadcast_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_broadcast_pre[hIndex].func;
retVal___ = preHookFunc(&mes, &len, &fontColor, &fontType, &fontSize, &fontAlign, &fontY, &sfd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -14580,9 +16333,9 @@ int HP_mapif_broadcast(const unsigned char *mes, int len, unsigned int fontColor
{
retVal___ = HPMHooks.source.mapif.broadcast(mes, len, fontColor, fontType, fontSize, fontAlign, fontY, sfd);
}
- if( HPMHooks.count.HP_mapif_broadcast_post ) {
+ if (HPMHooks.count.HP_mapif_broadcast_post > 0) {
int (*postHookFunc) (int retVal___, const unsigned char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY, int sfd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_broadcast_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_broadcast_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_broadcast_post[hIndex].func;
retVal___ = postHookFunc(retVal___, mes, len, fontColor, fontType, fontSize, fontAlign, fontY, sfd);
}
@@ -14592,14 +16345,14 @@ int HP_mapif_broadcast(const unsigned char *mes, int len, unsigned int fontColor
int HP_mapif_wis_message(struct WisData *wd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_wis_message_pre ) {
+ if (HPMHooks.count.HP_mapif_wis_message_pre > 0) {
int (*preHookFunc) (struct WisData **wd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_wis_message_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_wis_message_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_wis_message_pre[hIndex].func;
retVal___ = preHookFunc(&wd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -14607,9 +16360,9 @@ int HP_mapif_wis_message(struct WisData *wd) {
{
retVal___ = HPMHooks.source.mapif.wis_message(wd);
}
- if( HPMHooks.count.HP_mapif_wis_message_post ) {
+ if (HPMHooks.count.HP_mapif_wis_message_post > 0) {
int (*postHookFunc) (int retVal___, struct WisData *wd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_wis_message_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_wis_message_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_wis_message_post[hIndex].func;
retVal___ = postHookFunc(retVal___, wd);
}
@@ -14618,14 +16371,14 @@ int HP_mapif_wis_message(struct WisData *wd) {
}
void HP_mapif_wis_response(int fd, const unsigned char *src, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_wis_response_pre ) {
+ if (HPMHooks.count.HP_mapif_wis_response_pre > 0) {
void (*preHookFunc) (int *fd, const unsigned char **src, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_wis_response_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_wis_response_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_wis_response_pre[hIndex].func;
preHookFunc(&fd, &src, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14633,9 +16386,9 @@ void HP_mapif_wis_response(int fd, const unsigned char *src, int flag) {
{
HPMHooks.source.mapif.wis_response(fd, src, flag);
}
- if( HPMHooks.count.HP_mapif_wis_response_post ) {
+ if (HPMHooks.count.HP_mapif_wis_response_post > 0) {
void (*postHookFunc) (int fd, const unsigned char *src, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_wis_response_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_wis_response_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_wis_response_post[hIndex].func;
postHookFunc(fd, src, flag);
}
@@ -14645,14 +16398,14 @@ void HP_mapif_wis_response(int fd, const unsigned char *src, int flag) {
int HP_mapif_wis_end(struct WisData *wd, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_wis_end_pre ) {
+ if (HPMHooks.count.HP_mapif_wis_end_pre > 0) {
int (*preHookFunc) (struct WisData **wd, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_wis_end_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_wis_end_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_wis_end_pre[hIndex].func;
retVal___ = preHookFunc(&wd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -14660,9 +16413,9 @@ int HP_mapif_wis_end(struct WisData *wd, int flag) {
{
retVal___ = HPMHooks.source.mapif.wis_end(wd, flag);
}
- if( HPMHooks.count.HP_mapif_wis_end_post ) {
+ if (HPMHooks.count.HP_mapif_wis_end_post > 0) {
int (*postHookFunc) (int retVal___, struct WisData *wd, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_wis_end_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_wis_end_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_wis_end_post[hIndex].func;
retVal___ = postHookFunc(retVal___, wd, flag);
}
@@ -14672,14 +16425,14 @@ int HP_mapif_wis_end(struct WisData *wd, int flag) {
int HP_mapif_account_reg_reply(int fd, int account_id, int char_id, int type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_account_reg_reply_pre ) {
+ if (HPMHooks.count.HP_mapif_account_reg_reply_pre > 0) {
int (*preHookFunc) (int *fd, int *account_id, int *char_id, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_account_reg_reply_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_account_reg_reply_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_account_reg_reply_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &account_id, &char_id, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -14687,9 +16440,9 @@ int HP_mapif_account_reg_reply(int fd, int account_id, int char_id, int type) {
{
retVal___ = HPMHooks.source.mapif.account_reg_reply(fd, account_id, char_id, type);
}
- if( HPMHooks.count.HP_mapif_account_reg_reply_post ) {
+ if (HPMHooks.count.HP_mapif_account_reg_reply_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int account_id, int char_id, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_account_reg_reply_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_account_reg_reply_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_account_reg_reply_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, account_id, char_id, type);
}
@@ -14699,14 +16452,14 @@ int HP_mapif_account_reg_reply(int fd, int account_id, int char_id, int type) {
int HP_mapif_disconnectplayer(int fd, int account_id, int char_id, int reason) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_disconnectplayer_pre ) {
+ if (HPMHooks.count.HP_mapif_disconnectplayer_pre > 0) {
int (*preHookFunc) (int *fd, int *account_id, int *char_id, int *reason);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_disconnectplayer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_disconnectplayer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_disconnectplayer_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &account_id, &char_id, &reason);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -14714,9 +16467,9 @@ int HP_mapif_disconnectplayer(int fd, int account_id, int char_id, int reason) {
{
retVal___ = HPMHooks.source.mapif.disconnectplayer(fd, account_id, char_id, reason);
}
- if( HPMHooks.count.HP_mapif_disconnectplayer_post ) {
+ if (HPMHooks.count.HP_mapif_disconnectplayer_post > 0) {
int (*postHookFunc) (int retVal___, int fd, int account_id, int char_id, int reason);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_disconnectplayer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_disconnectplayer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_disconnectplayer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, account_id, char_id, reason);
}
@@ -14726,14 +16479,14 @@ int HP_mapif_disconnectplayer(int fd, int account_id, int char_id, int reason) {
int HP_mapif_parse_broadcast(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_broadcast_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_broadcast_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_broadcast_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_broadcast_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_broadcast_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -14741,9 +16494,9 @@ int HP_mapif_parse_broadcast(int fd) {
{
retVal___ = HPMHooks.source.mapif.parse_broadcast(fd);
}
- if( HPMHooks.count.HP_mapif_parse_broadcast_post ) {
+ if (HPMHooks.count.HP_mapif_parse_broadcast_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_broadcast_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_broadcast_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_broadcast_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -14753,14 +16506,14 @@ int HP_mapif_parse_broadcast(int fd) {
int HP_mapif_parse_WisRequest(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_WisRequest_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_WisRequest_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_WisRequest_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_WisRequest_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_WisRequest_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -14768,9 +16521,9 @@ int HP_mapif_parse_WisRequest(int fd) {
{
retVal___ = HPMHooks.source.mapif.parse_WisRequest(fd);
}
- if( HPMHooks.count.HP_mapif_parse_WisRequest_post ) {
+ if (HPMHooks.count.HP_mapif_parse_WisRequest_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_WisRequest_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_WisRequest_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_WisRequest_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -14780,14 +16533,14 @@ int HP_mapif_parse_WisRequest(int fd) {
int HP_mapif_parse_WisReply(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_WisReply_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_WisReply_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_WisReply_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_WisReply_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_WisReply_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -14795,9 +16548,9 @@ int HP_mapif_parse_WisReply(int fd) {
{
retVal___ = HPMHooks.source.mapif.parse_WisReply(fd);
}
- if( HPMHooks.count.HP_mapif_parse_WisReply_post ) {
+ if (HPMHooks.count.HP_mapif_parse_WisReply_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_WisReply_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_WisReply_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_WisReply_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -14807,14 +16560,14 @@ int HP_mapif_parse_WisReply(int fd) {
int HP_mapif_parse_WisToGM(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_WisToGM_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_WisToGM_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_WisToGM_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_WisToGM_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_WisToGM_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -14822,9 +16575,9 @@ int HP_mapif_parse_WisToGM(int fd) {
{
retVal___ = HPMHooks.source.mapif.parse_WisToGM(fd);
}
- if( HPMHooks.count.HP_mapif_parse_WisToGM_post ) {
+ if (HPMHooks.count.HP_mapif_parse_WisToGM_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_WisToGM_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_WisToGM_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_WisToGM_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -14834,14 +16587,14 @@ int HP_mapif_parse_WisToGM(int fd) {
int HP_mapif_parse_Registry(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_Registry_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_Registry_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_Registry_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_Registry_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_Registry_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -14849,9 +16602,9 @@ int HP_mapif_parse_Registry(int fd) {
{
retVal___ = HPMHooks.source.mapif.parse_Registry(fd);
}
- if( HPMHooks.count.HP_mapif_parse_Registry_post ) {
+ if (HPMHooks.count.HP_mapif_parse_Registry_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_Registry_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_Registry_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_Registry_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -14861,14 +16614,14 @@ int HP_mapif_parse_Registry(int fd) {
int HP_mapif_parse_RegistryRequest(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_RegistryRequest_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_RegistryRequest_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_RegistryRequest_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_RegistryRequest_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_RegistryRequest_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -14876,9 +16629,9 @@ int HP_mapif_parse_RegistryRequest(int fd) {
{
retVal___ = HPMHooks.source.mapif.parse_RegistryRequest(fd);
}
- if( HPMHooks.count.HP_mapif_parse_RegistryRequest_post ) {
+ if (HPMHooks.count.HP_mapif_parse_RegistryRequest_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_RegistryRequest_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_RegistryRequest_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_RegistryRequest_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -14887,14 +16640,14 @@ int HP_mapif_parse_RegistryRequest(int fd) {
}
void HP_mapif_namechange_ack(int fd, int account_id, int char_id, int type, int flag, const char *name) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapif_namechange_ack_pre ) {
+ if (HPMHooks.count.HP_mapif_namechange_ack_pre > 0) {
void (*preHookFunc) (int *fd, int *account_id, int *char_id, int *type, int *flag, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_namechange_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_namechange_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_namechange_ack_pre[hIndex].func;
preHookFunc(&fd, &account_id, &char_id, &type, &flag, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14902,9 +16655,9 @@ void HP_mapif_namechange_ack(int fd, int account_id, int char_id, int type, int
{
HPMHooks.source.mapif.namechange_ack(fd, account_id, char_id, type, flag, name);
}
- if( HPMHooks.count.HP_mapif_namechange_ack_post ) {
+ if (HPMHooks.count.HP_mapif_namechange_ack_post > 0) {
void (*postHookFunc) (int fd, int account_id, int char_id, int type, int flag, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_namechange_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_namechange_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_namechange_ack_post[hIndex].func;
postHookFunc(fd, account_id, char_id, type, flag, name);
}
@@ -14914,14 +16667,14 @@ void HP_mapif_namechange_ack(int fd, int account_id, int char_id, int type, int
int HP_mapif_parse_NameChangeRequest(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapif_parse_NameChangeRequest_pre ) {
+ if (HPMHooks.count.HP_mapif_parse_NameChangeRequest_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_NameChangeRequest_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_NameChangeRequest_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_NameChangeRequest_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -14929,27 +16682,81 @@ int HP_mapif_parse_NameChangeRequest(int fd) {
{
retVal___ = HPMHooks.source.mapif.parse_NameChangeRequest(fd);
}
- if( HPMHooks.count.HP_mapif_parse_NameChangeRequest_post ) {
+ if (HPMHooks.count.HP_mapif_parse_NameChangeRequest_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_NameChangeRequest_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_NameChangeRequest_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_NameChangeRequest_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
}
return retVal___;
}
+int HP_mapif_parse_ClanMemberKick(int fd, int clan_id, int kick_interval) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_mapif_parse_ClanMemberKick_pre > 0) {
+ int (*preHookFunc) (int *fd, int *clan_id, int *kick_interval);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_ClanMemberKick_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapif_parse_ClanMemberKick_pre[hIndex].func;
+ retVal___ = preHookFunc(&fd, &clan_id, &kick_interval);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.mapif.parse_ClanMemberKick(fd, clan_id, kick_interval);
+ }
+ if (HPMHooks.count.HP_mapif_parse_ClanMemberKick_post > 0) {
+ int (*postHookFunc) (int retVal___, int fd, int clan_id, int kick_interval);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_ClanMemberKick_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapif_parse_ClanMemberKick_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, fd, clan_id, kick_interval);
+ }
+ }
+ return retVal___;
+}
+int HP_mapif_parse_ClanMemberCount(int fd, int clan_id, int kick_interval) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_mapif_parse_ClanMemberCount_pre > 0) {
+ int (*preHookFunc) (int *fd, int *clan_id, int *kick_interval);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_ClanMemberCount_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapif_parse_ClanMemberCount_pre[hIndex].func;
+ retVal___ = preHookFunc(&fd, &clan_id, &kick_interval);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.mapif.parse_ClanMemberCount(fd, clan_id, kick_interval);
+ }
+ if (HPMHooks.count.HP_mapif_parse_ClanMemberCount_post > 0) {
+ int (*postHookFunc) (int retVal___, int fd, int clan_id, int kick_interval);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_ClanMemberCount_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapif_parse_ClanMemberCount_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, fd, clan_id, kick_interval);
+ }
+ }
+ return retVal___;
+}
/* mapindex_interface */
int HP_mapindex_init(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapindex_init_pre ) {
+ if (HPMHooks.count.HP_mapindex_init_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapindex_init_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -14957,9 +16764,9 @@ int HP_mapindex_init(void) {
{
retVal___ = HPMHooks.source.mapindex.init();
}
- if( HPMHooks.count.HP_mapindex_init_post ) {
+ if (HPMHooks.count.HP_mapindex_init_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapindex_init_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -14968,14 +16775,14 @@ int HP_mapindex_init(void) {
}
void HP_mapindex_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapindex_final_pre ) {
+ if (HPMHooks.count.HP_mapindex_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapindex_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14983,9 +16790,9 @@ void HP_mapindex_final(void) {
{
HPMHooks.source.mapindex.final();
}
- if( HPMHooks.count.HP_mapindex_final_post ) {
+ if (HPMHooks.count.HP_mapindex_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapindex_final_post[hIndex].func;
postHookFunc();
}
@@ -14995,14 +16802,14 @@ void HP_mapindex_final(void) {
int HP_mapindex_addmap(int index, const char *name) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapindex_addmap_pre ) {
+ if (HPMHooks.count.HP_mapindex_addmap_pre > 0) {
int (*preHookFunc) (int *index, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_addmap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_addmap_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapindex_addmap_pre[hIndex].func;
retVal___ = preHookFunc(&index, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -15010,9 +16817,9 @@ int HP_mapindex_addmap(int index, const char *name) {
{
retVal___ = HPMHooks.source.mapindex.addmap(index, name);
}
- if( HPMHooks.count.HP_mapindex_addmap_post ) {
+ if (HPMHooks.count.HP_mapindex_addmap_post > 0) {
int (*postHookFunc) (int retVal___, int index, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_addmap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_addmap_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapindex_addmap_post[hIndex].func;
retVal___ = postHookFunc(retVal___, index, name);
}
@@ -15021,14 +16828,14 @@ int HP_mapindex_addmap(int index, const char *name) {
}
void HP_mapindex_removemap(int index) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapindex_removemap_pre ) {
+ if (HPMHooks.count.HP_mapindex_removemap_pre > 0) {
void (*preHookFunc) (int *index);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_removemap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_removemap_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapindex_removemap_pre[hIndex].func;
preHookFunc(&index);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15036,9 +16843,9 @@ void HP_mapindex_removemap(int index) {
{
HPMHooks.source.mapindex.removemap(index);
}
- if( HPMHooks.count.HP_mapindex_removemap_post ) {
+ if (HPMHooks.count.HP_mapindex_removemap_post > 0) {
void (*postHookFunc) (int index);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_removemap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_removemap_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapindex_removemap_post[hIndex].func;
postHookFunc(index);
}
@@ -15048,14 +16855,14 @@ void HP_mapindex_removemap(int index) {
const char* HP_mapindex_getmapname(const char *string, char *output) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_mapindex_getmapname_pre ) {
+ if (HPMHooks.count.HP_mapindex_getmapname_pre > 0) {
const char* (*preHookFunc) (const char **string, char **output);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_getmapname_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_getmapname_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapindex_getmapname_pre[hIndex].func;
retVal___ = preHookFunc(&string, &output);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -15063,9 +16870,9 @@ const char* HP_mapindex_getmapname(const char *string, char *output) {
{
retVal___ = HPMHooks.source.mapindex.getmapname(string, output);
}
- if( HPMHooks.count.HP_mapindex_getmapname_post ) {
+ if (HPMHooks.count.HP_mapindex_getmapname_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *string, char *output);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_getmapname_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_getmapname_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapindex_getmapname_post[hIndex].func;
retVal___ = postHookFunc(retVal___, string, output);
}
@@ -15075,14 +16882,14 @@ const char* HP_mapindex_getmapname(const char *string, char *output) {
const char* HP_mapindex_getmapname_ext(const char *string, char *output) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_mapindex_getmapname_ext_pre ) {
+ if (HPMHooks.count.HP_mapindex_getmapname_ext_pre > 0) {
const char* (*preHookFunc) (const char **string, char **output);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_getmapname_ext_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_getmapname_ext_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapindex_getmapname_ext_pre[hIndex].func;
retVal___ = preHookFunc(&string, &output);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -15090,9 +16897,9 @@ const char* HP_mapindex_getmapname_ext(const char *string, char *output) {
{
retVal___ = HPMHooks.source.mapindex.getmapname_ext(string, output);
}
- if( HPMHooks.count.HP_mapindex_getmapname_ext_post ) {
+ if (HPMHooks.count.HP_mapindex_getmapname_ext_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *string, char *output);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_getmapname_ext_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_getmapname_ext_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapindex_getmapname_ext_post[hIndex].func;
retVal___ = postHookFunc(retVal___, string, output);
}
@@ -15102,14 +16909,14 @@ const char* HP_mapindex_getmapname_ext(const char *string, char *output) {
unsigned short HP_mapindex_name2id(const char *p1) {
int hIndex = 0;
unsigned short retVal___ = 0;
- if( HPMHooks.count.HP_mapindex_name2id_pre ) {
+ if (HPMHooks.count.HP_mapindex_name2id_pre > 0) {
unsigned short (*preHookFunc) (const char **p1);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_name2id_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_name2id_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapindex_name2id_pre[hIndex].func;
retVal___ = preHookFunc(&p1);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -15117,9 +16924,9 @@ unsigned short HP_mapindex_name2id(const char *p1) {
{
retVal___ = HPMHooks.source.mapindex.name2id(p1);
}
- if( HPMHooks.count.HP_mapindex_name2id_post ) {
+ if (HPMHooks.count.HP_mapindex_name2id_post > 0) {
unsigned short (*postHookFunc) (unsigned short retVal___, const char *p1);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_name2id_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_name2id_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapindex_name2id_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p1);
}
@@ -15129,14 +16936,14 @@ unsigned short HP_mapindex_name2id(const char *p1) {
const char* HP_mapindex_id2name(uint16 id, const char *file, int line, const char *func) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_mapindex_id2name_pre ) {
+ if (HPMHooks.count.HP_mapindex_id2name_pre > 0) {
const char* (*preHookFunc) (uint16 *id, const char **file, int *line, const char **func);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_id2name_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_id2name_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapindex_id2name_pre[hIndex].func;
retVal___ = preHookFunc(&id, &file, &line, &func);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -15144,9 +16951,9 @@ const char* HP_mapindex_id2name(uint16 id, const char *file, int line, const cha
{
retVal___ = HPMHooks.source.mapindex.id2name(id, file, line, func);
}
- if( HPMHooks.count.HP_mapindex_id2name_post ) {
+ if (HPMHooks.count.HP_mapindex_id2name_post > 0) {
const char* (*postHookFunc) (const char* retVal___, uint16 id, const char *file, int line, const char *func);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_id2name_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_id2name_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapindex_id2name_post[hIndex].func;
retVal___ = postHookFunc(retVal___, id, file, line, func);
}
@@ -15156,14 +16963,14 @@ const char* HP_mapindex_id2name(uint16 id, const char *file, int line, const cha
bool HP_mapindex_check_default(void) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_mapindex_check_default_pre ) {
+ if (HPMHooks.count.HP_mapindex_check_default_pre > 0) {
bool (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_check_default_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_check_default_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapindex_check_default_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -15171,9 +16978,9 @@ bool HP_mapindex_check_default(void) {
{
retVal___ = HPMHooks.source.mapindex.check_default();
}
- if( HPMHooks.count.HP_mapindex_check_default_post ) {
+ if (HPMHooks.count.HP_mapindex_check_default_post > 0) {
bool (*postHookFunc) (bool retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_check_default_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_check_default_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapindex_check_default_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -15183,14 +16990,14 @@ bool HP_mapindex_check_default(void) {
/* md5_interface */
void HP_md5_string(const char *string, char *output) {
int hIndex = 0;
- if( HPMHooks.count.HP_md5_string_pre ) {
+ if (HPMHooks.count.HP_md5_string_pre > 0) {
void (*preHookFunc) (const char **string, char **output);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_md5_string_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_md5_string_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_md5_string_pre[hIndex].func;
preHookFunc(&string, &output);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15198,9 +17005,9 @@ void HP_md5_string(const char *string, char *output) {
{
HPMHooks.source.md5.string(string, output);
}
- if( HPMHooks.count.HP_md5_string_post ) {
+ if (HPMHooks.count.HP_md5_string_post > 0) {
void (*postHookFunc) (const char *string, char *output);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_md5_string_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_md5_string_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_md5_string_post[hIndex].func;
postHookFunc(string, output);
}
@@ -15209,14 +17016,14 @@ void HP_md5_string(const char *string, char *output) {
}
void HP_md5_binary(const uint8 *buf, const int buf_size, uint8 *output) {
int hIndex = 0;
- if( HPMHooks.count.HP_md5_binary_pre ) {
+ if (HPMHooks.count.HP_md5_binary_pre > 0) {
void (*preHookFunc) (const uint8 **buf, const int *buf_size, uint8 **output);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_md5_binary_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_md5_binary_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_md5_binary_pre[hIndex].func;
preHookFunc(&buf, &buf_size, &output);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15224,9 +17031,9 @@ void HP_md5_binary(const uint8 *buf, const int buf_size, uint8 *output) {
{
HPMHooks.source.md5.binary(buf, buf_size, output);
}
- if( HPMHooks.count.HP_md5_binary_post ) {
+ if (HPMHooks.count.HP_md5_binary_post > 0) {
void (*postHookFunc) (const uint8 *buf, const int buf_size, uint8 *output);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_md5_binary_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_md5_binary_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_md5_binary_post[hIndex].func;
postHookFunc(buf, buf_size, output);
}
@@ -15235,14 +17042,14 @@ void HP_md5_binary(const uint8 *buf, const int buf_size, uint8 *output) {
}
void HP_md5_salt(int len, char *output) {
int hIndex = 0;
- if( HPMHooks.count.HP_md5_salt_pre ) {
+ if (HPMHooks.count.HP_md5_salt_pre > 0) {
void (*preHookFunc) (int *len, char **output);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_md5_salt_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_md5_salt_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_md5_salt_pre[hIndex].func;
preHookFunc(&len, &output);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15250,9 +17057,9 @@ void HP_md5_salt(int len, char *output) {
{
HPMHooks.source.md5.salt(len, output);
}
- if( HPMHooks.count.HP_md5_salt_post ) {
+ if (HPMHooks.count.HP_md5_salt_post > 0) {
void (*postHookFunc) (int len, char *output);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_md5_salt_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_md5_salt_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_md5_salt_post[hIndex].func;
postHookFunc(len, output);
}
@@ -15263,14 +17070,14 @@ void HP_md5_salt(int len, char *output) {
struct mutex_data* HP_mutex_create(void) {
int hIndex = 0;
struct mutex_data* retVal___ = NULL;
- if( HPMHooks.count.HP_mutex_create_pre ) {
+ if (HPMHooks.count.HP_mutex_create_pre > 0) {
struct mutex_data* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mutex_create_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -15278,9 +17085,9 @@ struct mutex_data* HP_mutex_create(void) {
{
retVal___ = HPMHooks.source.mutex.create();
}
- if( HPMHooks.count.HP_mutex_create_post ) {
+ if (HPMHooks.count.HP_mutex_create_post > 0) {
struct mutex_data* (*postHookFunc) (struct mutex_data* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mutex_create_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -15289,14 +17096,14 @@ struct mutex_data* HP_mutex_create(void) {
}
void HP_mutex_destroy(struct mutex_data *m) {
int hIndex = 0;
- if( HPMHooks.count.HP_mutex_destroy_pre ) {
+ if (HPMHooks.count.HP_mutex_destroy_pre > 0) {
void (*preHookFunc) (struct mutex_data **m);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_destroy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_destroy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mutex_destroy_pre[hIndex].func;
preHookFunc(&m);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15304,9 +17111,9 @@ void HP_mutex_destroy(struct mutex_data *m) {
{
HPMHooks.source.mutex.destroy(m);
}
- if( HPMHooks.count.HP_mutex_destroy_post ) {
+ if (HPMHooks.count.HP_mutex_destroy_post > 0) {
void (*postHookFunc) (struct mutex_data *m);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_destroy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_destroy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mutex_destroy_post[hIndex].func;
postHookFunc(m);
}
@@ -15315,14 +17122,14 @@ void HP_mutex_destroy(struct mutex_data *m) {
}
void HP_mutex_lock(struct mutex_data *m) {
int hIndex = 0;
- if( HPMHooks.count.HP_mutex_lock_pre ) {
+ if (HPMHooks.count.HP_mutex_lock_pre > 0) {
void (*preHookFunc) (struct mutex_data **m);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_lock_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_lock_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mutex_lock_pre[hIndex].func;
preHookFunc(&m);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15330,9 +17137,9 @@ void HP_mutex_lock(struct mutex_data *m) {
{
HPMHooks.source.mutex.lock(m);
}
- if( HPMHooks.count.HP_mutex_lock_post ) {
+ if (HPMHooks.count.HP_mutex_lock_post > 0) {
void (*postHookFunc) (struct mutex_data *m);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_lock_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_lock_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mutex_lock_post[hIndex].func;
postHookFunc(m);
}
@@ -15342,14 +17149,14 @@ void HP_mutex_lock(struct mutex_data *m) {
bool HP_mutex_trylock(struct mutex_data *m) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_mutex_trylock_pre ) {
+ if (HPMHooks.count.HP_mutex_trylock_pre > 0) {
bool (*preHookFunc) (struct mutex_data **m);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_trylock_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_trylock_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mutex_trylock_pre[hIndex].func;
retVal___ = preHookFunc(&m);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -15357,9 +17164,9 @@ bool HP_mutex_trylock(struct mutex_data *m) {
{
retVal___ = HPMHooks.source.mutex.trylock(m);
}
- if( HPMHooks.count.HP_mutex_trylock_post ) {
+ if (HPMHooks.count.HP_mutex_trylock_post > 0) {
bool (*postHookFunc) (bool retVal___, struct mutex_data *m);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_trylock_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_trylock_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mutex_trylock_post[hIndex].func;
retVal___ = postHookFunc(retVal___, m);
}
@@ -15368,14 +17175,14 @@ bool HP_mutex_trylock(struct mutex_data *m) {
}
void HP_mutex_unlock(struct mutex_data *m) {
int hIndex = 0;
- if( HPMHooks.count.HP_mutex_unlock_pre ) {
+ if (HPMHooks.count.HP_mutex_unlock_pre > 0) {
void (*preHookFunc) (struct mutex_data **m);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_unlock_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_unlock_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mutex_unlock_pre[hIndex].func;
preHookFunc(&m);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15383,9 +17190,9 @@ void HP_mutex_unlock(struct mutex_data *m) {
{
HPMHooks.source.mutex.unlock(m);
}
- if( HPMHooks.count.HP_mutex_unlock_post ) {
+ if (HPMHooks.count.HP_mutex_unlock_post > 0) {
void (*postHookFunc) (struct mutex_data *m);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_unlock_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_unlock_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mutex_unlock_post[hIndex].func;
postHookFunc(m);
}
@@ -15395,14 +17202,14 @@ void HP_mutex_unlock(struct mutex_data *m) {
struct cond_data* HP_mutex_cond_create(void) {
int hIndex = 0;
struct cond_data* retVal___ = NULL;
- if( HPMHooks.count.HP_mutex_cond_create_pre ) {
+ if (HPMHooks.count.HP_mutex_cond_create_pre > 0) {
struct cond_data* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mutex_cond_create_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -15410,9 +17217,9 @@ struct cond_data* HP_mutex_cond_create(void) {
{
retVal___ = HPMHooks.source.mutex.cond_create();
}
- if( HPMHooks.count.HP_mutex_cond_create_post ) {
+ if (HPMHooks.count.HP_mutex_cond_create_post > 0) {
struct cond_data* (*postHookFunc) (struct cond_data* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mutex_cond_create_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -15421,14 +17228,14 @@ struct cond_data* HP_mutex_cond_create(void) {
}
void HP_mutex_cond_destroy(struct cond_data *c) {
int hIndex = 0;
- if( HPMHooks.count.HP_mutex_cond_destroy_pre ) {
+ if (HPMHooks.count.HP_mutex_cond_destroy_pre > 0) {
void (*preHookFunc) (struct cond_data **c);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_destroy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_destroy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mutex_cond_destroy_pre[hIndex].func;
preHookFunc(&c);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15436,9 +17243,9 @@ void HP_mutex_cond_destroy(struct cond_data *c) {
{
HPMHooks.source.mutex.cond_destroy(c);
}
- if( HPMHooks.count.HP_mutex_cond_destroy_post ) {
+ if (HPMHooks.count.HP_mutex_cond_destroy_post > 0) {
void (*postHookFunc) (struct cond_data *c);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_destroy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_destroy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mutex_cond_destroy_post[hIndex].func;
postHookFunc(c);
}
@@ -15447,14 +17254,14 @@ void HP_mutex_cond_destroy(struct cond_data *c) {
}
void HP_mutex_cond_wait(struct cond_data *c, struct mutex_data *m, sysint timeout_ticks) {
int hIndex = 0;
- if( HPMHooks.count.HP_mutex_cond_wait_pre ) {
+ if (HPMHooks.count.HP_mutex_cond_wait_pre > 0) {
void (*preHookFunc) (struct cond_data **c, struct mutex_data **m, sysint *timeout_ticks);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_wait_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_wait_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mutex_cond_wait_pre[hIndex].func;
preHookFunc(&c, &m, &timeout_ticks);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15462,9 +17269,9 @@ void HP_mutex_cond_wait(struct cond_data *c, struct mutex_data *m, sysint timeou
{
HPMHooks.source.mutex.cond_wait(c, m, timeout_ticks);
}
- if( HPMHooks.count.HP_mutex_cond_wait_post ) {
+ if (HPMHooks.count.HP_mutex_cond_wait_post > 0) {
void (*postHookFunc) (struct cond_data *c, struct mutex_data *m, sysint timeout_ticks);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_wait_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_wait_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mutex_cond_wait_post[hIndex].func;
postHookFunc(c, m, timeout_ticks);
}
@@ -15473,14 +17280,14 @@ void HP_mutex_cond_wait(struct cond_data *c, struct mutex_data *m, sysint timeou
}
void HP_mutex_cond_signal(struct cond_data *c) {
int hIndex = 0;
- if( HPMHooks.count.HP_mutex_cond_signal_pre ) {
+ if (HPMHooks.count.HP_mutex_cond_signal_pre > 0) {
void (*preHookFunc) (struct cond_data **c);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_signal_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_signal_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mutex_cond_signal_pre[hIndex].func;
preHookFunc(&c);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15488,9 +17295,9 @@ void HP_mutex_cond_signal(struct cond_data *c) {
{
HPMHooks.source.mutex.cond_signal(c);
}
- if( HPMHooks.count.HP_mutex_cond_signal_post ) {
+ if (HPMHooks.count.HP_mutex_cond_signal_post > 0) {
void (*postHookFunc) (struct cond_data *c);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_signal_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_signal_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mutex_cond_signal_post[hIndex].func;
postHookFunc(c);
}
@@ -15499,14 +17306,14 @@ void HP_mutex_cond_signal(struct cond_data *c) {
}
void HP_mutex_cond_broadcast(struct cond_data *c) {
int hIndex = 0;
- if( HPMHooks.count.HP_mutex_cond_broadcast_pre ) {
+ if (HPMHooks.count.HP_mutex_cond_broadcast_pre > 0) {
void (*preHookFunc) (struct cond_data **c);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_broadcast_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_broadcast_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mutex_cond_broadcast_pre[hIndex].func;
preHookFunc(&c);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15514,9 +17321,9 @@ void HP_mutex_cond_broadcast(struct cond_data *c) {
{
HPMHooks.source.mutex.cond_broadcast(c);
}
- if( HPMHooks.count.HP_mutex_cond_broadcast_post ) {
+ if (HPMHooks.count.HP_mutex_cond_broadcast_post > 0) {
void (*postHookFunc) (struct cond_data *c);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_broadcast_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_broadcast_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mutex_cond_broadcast_post[hIndex].func;
postHookFunc(c);
}
@@ -15526,14 +17333,14 @@ void HP_mutex_cond_broadcast(struct cond_data *c) {
/* nullpo_interface */
void HP_nullpo_assert_report(const char *file, int line, const char *func, const char *targetname, const char *title) {
int hIndex = 0;
- if( HPMHooks.count.HP_nullpo_assert_report_pre ) {
+ if (HPMHooks.count.HP_nullpo_assert_report_pre > 0) {
void (*preHookFunc) (const char **file, int *line, const char **func, const char **targetname, const char **title);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_nullpo_assert_report_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_nullpo_assert_report_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_nullpo_assert_report_pre[hIndex].func;
preHookFunc(&file, &line, &func, &targetname, &title);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15541,26 +17348,131 @@ void HP_nullpo_assert_report(const char *file, int line, const char *func, const
{
HPMHooks.source.nullpo.assert_report(file, line, func, targetname, title);
}
- if( HPMHooks.count.HP_nullpo_assert_report_post ) {
+ if (HPMHooks.count.HP_nullpo_assert_report_post > 0) {
void (*postHookFunc) (const char *file, int line, const char *func, const char *targetname, const char *title);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_nullpo_assert_report_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_nullpo_assert_report_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_nullpo_assert_report_post[hIndex].func;
postHookFunc(file, line, func, targetname, title);
}
}
return;
}
+/* packets_interface */
+void HP_packets_init(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_packets_init_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_packets_init_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_packets_init_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.packets.init();
+ }
+ if (HPMHooks.count.HP_packets_init_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_packets_init_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_packets_init_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+void HP_packets_final(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_packets_final_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_packets_final_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_packets_final_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.packets.final();
+ }
+ if (HPMHooks.count.HP_packets_final_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_packets_final_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_packets_final_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+void HP_packets_addLens(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_packets_addLens_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_packets_addLens_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_packets_addLens_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.packets.addLens();
+ }
+ if (HPMHooks.count.HP_packets_addLens_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_packets_addLens_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_packets_addLens_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+void HP_packets_addLen(int id, int len) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_packets_addLen_pre > 0) {
+ void (*preHookFunc) (int *id, int *len);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_packets_addLen_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_packets_addLen_pre[hIndex].func;
+ preHookFunc(&id, &len);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.packets.addLen(id, len);
+ }
+ if (HPMHooks.count.HP_packets_addLen_post > 0) {
+ void (*postHookFunc) (int id, int len);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_packets_addLen_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_packets_addLen_post[hIndex].func;
+ postHookFunc(id, len);
+ }
+ }
+ return;
+}
/* pincode_interface */
void HP_pincode_handle(int fd, struct char_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_pincode_handle_pre ) {
+ if (HPMHooks.count.HP_pincode_handle_pre > 0) {
void (*preHookFunc) (int *fd, struct char_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pincode_handle_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pincode_handle_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pincode_handle_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15568,9 +17480,9 @@ void HP_pincode_handle(int fd, struct char_session_data *sd) {
{
HPMHooks.source.pincode.handle(fd, sd);
}
- if( HPMHooks.count.HP_pincode_handle_post ) {
+ if (HPMHooks.count.HP_pincode_handle_post > 0) {
void (*postHookFunc) (int fd, struct char_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pincode_handle_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pincode_handle_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pincode_handle_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -15579,14 +17491,14 @@ void HP_pincode_handle(int fd, struct char_session_data *sd) {
}
void HP_pincode_decrypt(unsigned int userSeed, char *pin) {
int hIndex = 0;
- if( HPMHooks.count.HP_pincode_decrypt_pre ) {
+ if (HPMHooks.count.HP_pincode_decrypt_pre > 0) {
void (*preHookFunc) (unsigned int *userSeed, char **pin);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pincode_decrypt_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pincode_decrypt_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pincode_decrypt_pre[hIndex].func;
preHookFunc(&userSeed, &pin);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15594,9 +17506,9 @@ void HP_pincode_decrypt(unsigned int userSeed, char *pin) {
{
HPMHooks.source.pincode.decrypt(userSeed, pin);
}
- if( HPMHooks.count.HP_pincode_decrypt_post ) {
+ if (HPMHooks.count.HP_pincode_decrypt_post > 0) {
void (*postHookFunc) (unsigned int userSeed, char *pin);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pincode_decrypt_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pincode_decrypt_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pincode_decrypt_post[hIndex].func;
postHookFunc(userSeed, pin);
}
@@ -15605,14 +17517,14 @@ void HP_pincode_decrypt(unsigned int userSeed, char *pin) {
}
void HP_pincode_error(int account_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_pincode_error_pre ) {
+ if (HPMHooks.count.HP_pincode_error_pre > 0) {
void (*preHookFunc) (int *account_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pincode_error_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pincode_error_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pincode_error_pre[hIndex].func;
preHookFunc(&account_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15620,9 +17532,9 @@ void HP_pincode_error(int account_id) {
{
HPMHooks.source.pincode.error(account_id);
}
- if( HPMHooks.count.HP_pincode_error_post ) {
+ if (HPMHooks.count.HP_pincode_error_post > 0) {
void (*postHookFunc) (int account_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pincode_error_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pincode_error_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pincode_error_post[hIndex].func;
postHookFunc(account_id);
}
@@ -15631,14 +17543,14 @@ void HP_pincode_error(int account_id) {
}
void HP_pincode_update(int account_id, char *pin) {
int hIndex = 0;
- if( HPMHooks.count.HP_pincode_update_pre ) {
+ if (HPMHooks.count.HP_pincode_update_pre > 0) {
void (*preHookFunc) (int *account_id, char **pin);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pincode_update_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pincode_update_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pincode_update_pre[hIndex].func;
preHookFunc(&account_id, &pin);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15646,51 +17558,129 @@ void HP_pincode_update(int account_id, char *pin) {
{
HPMHooks.source.pincode.update(account_id, pin);
}
- if( HPMHooks.count.HP_pincode_update_post ) {
+ if (HPMHooks.count.HP_pincode_update_post > 0) {
void (*postHookFunc) (int account_id, char *pin);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pincode_update_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pincode_update_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pincode_update_post[hIndex].func;
postHookFunc(account_id, pin);
}
}
return;
}
-void HP_pincode_sendstate(int fd, struct char_session_data *sd, uint16 state) {
+void HP_pincode_makestate(int fd, struct char_session_data *sd, enum pincode_make_response state) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_pincode_makestate_pre > 0) {
+ void (*preHookFunc) (int *fd, struct char_session_data **sd, enum pincode_make_response *state);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pincode_makestate_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pincode_makestate_pre[hIndex].func;
+ preHookFunc(&fd, &sd, &state);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.pincode.makestate(fd, sd, state);
+ }
+ if (HPMHooks.count.HP_pincode_makestate_post > 0) {
+ void (*postHookFunc) (int fd, struct char_session_data *sd, enum pincode_make_response state);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pincode_makestate_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pincode_makestate_post[hIndex].func;
+ postHookFunc(fd, sd, state);
+ }
+ }
+ return;
+}
+void HP_pincode_editstate(int fd, struct char_session_data *sd, enum pincode_edit_response state) {
int hIndex = 0;
- if( HPMHooks.count.HP_pincode_sendstate_pre ) {
- void (*preHookFunc) (int *fd, struct char_session_data **sd, uint16 *state);
+ if (HPMHooks.count.HP_pincode_editstate_pre > 0) {
+ void (*preHookFunc) (int *fd, struct char_session_data **sd, enum pincode_edit_response *state);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pincode_sendstate_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_pincode_sendstate_pre[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pincode_editstate_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pincode_editstate_pre[hIndex].func;
preHookFunc(&fd, &sd, &state);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
}
{
- HPMHooks.source.pincode.sendstate(fd, sd, state);
+ HPMHooks.source.pincode.editstate(fd, sd, state);
}
- if( HPMHooks.count.HP_pincode_sendstate_post ) {
- void (*postHookFunc) (int fd, struct char_session_data *sd, uint16 state);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pincode_sendstate_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_pincode_sendstate_post[hIndex].func;
+ if (HPMHooks.count.HP_pincode_editstate_post > 0) {
+ void (*postHookFunc) (int fd, struct char_session_data *sd, enum pincode_edit_response state);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pincode_editstate_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pincode_editstate_post[hIndex].func;
postHookFunc(fd, sd, state);
}
}
return;
}
+void HP_pincode_loginstate(int fd, struct char_session_data *sd, enum pincode_login_response state) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_pincode_loginstate_pre > 0) {
+ void (*preHookFunc) (int *fd, struct char_session_data **sd, enum pincode_login_response *state);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pincode_loginstate_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pincode_loginstate_pre[hIndex].func;
+ preHookFunc(&fd, &sd, &state);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.pincode.loginstate(fd, sd, state);
+ }
+ if (HPMHooks.count.HP_pincode_loginstate_post > 0) {
+ void (*postHookFunc) (int fd, struct char_session_data *sd, enum pincode_login_response state);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pincode_loginstate_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pincode_loginstate_post[hIndex].func;
+ postHookFunc(fd, sd, state);
+ }
+ }
+ return;
+}
+void HP_pincode_loginstate2(int fd, struct char_session_data *sd, enum pincode_login_response state, enum pincode_login_response2 flag) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_pincode_loginstate2_pre > 0) {
+ void (*preHookFunc) (int *fd, struct char_session_data **sd, enum pincode_login_response *state, enum pincode_login_response2 *flag);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pincode_loginstate2_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pincode_loginstate2_pre[hIndex].func;
+ preHookFunc(&fd, &sd, &state, &flag);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.pincode.loginstate2(fd, sd, state, flag);
+ }
+ if (HPMHooks.count.HP_pincode_loginstate2_post > 0) {
+ void (*postHookFunc) (int fd, struct char_session_data *sd, enum pincode_login_response state, enum pincode_login_response2 flag);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pincode_loginstate2_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pincode_loginstate2_post[hIndex].func;
+ postHookFunc(fd, sd, state, flag);
+ }
+ }
+ return;
+}
void HP_pincode_setnew(int fd, struct char_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_pincode_setnew_pre ) {
+ if (HPMHooks.count.HP_pincode_setnew_pre > 0) {
void (*preHookFunc) (int *fd, struct char_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pincode_setnew_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pincode_setnew_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pincode_setnew_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15698,9 +17688,9 @@ void HP_pincode_setnew(int fd, struct char_session_data *sd) {
{
HPMHooks.source.pincode.setnew(fd, sd);
}
- if( HPMHooks.count.HP_pincode_setnew_post ) {
+ if (HPMHooks.count.HP_pincode_setnew_post > 0) {
void (*postHookFunc) (int fd, struct char_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pincode_setnew_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pincode_setnew_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pincode_setnew_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -15709,14 +17699,14 @@ void HP_pincode_setnew(int fd, struct char_session_data *sd) {
}
void HP_pincode_change(int fd, struct char_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_pincode_change_pre ) {
+ if (HPMHooks.count.HP_pincode_change_pre > 0) {
void (*preHookFunc) (int *fd, struct char_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pincode_change_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pincode_change_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pincode_change_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15724,26 +17714,53 @@ void HP_pincode_change(int fd, struct char_session_data *sd) {
{
HPMHooks.source.pincode.change(fd, sd);
}
- if( HPMHooks.count.HP_pincode_change_post ) {
+ if (HPMHooks.count.HP_pincode_change_post > 0) {
void (*postHookFunc) (int fd, struct char_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pincode_change_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pincode_change_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pincode_change_post[hIndex].func;
postHookFunc(fd, sd);
}
}
return;
}
+bool HP_pincode_isBlacklisted(const char *pin) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_pincode_isBlacklisted_pre > 0) {
+ bool (*preHookFunc) (const char **pin);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pincode_isBlacklisted_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pincode_isBlacklisted_pre[hIndex].func;
+ retVal___ = preHookFunc(&pin);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.pincode.isBlacklisted(pin);
+ }
+ if (HPMHooks.count.HP_pincode_isBlacklisted_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *pin);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pincode_isBlacklisted_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pincode_isBlacklisted_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, pin);
+ }
+ }
+ return retVal___;
+}
int HP_pincode_compare(int fd, struct char_session_data *sd, char *pin) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pincode_compare_pre ) {
+ if (HPMHooks.count.HP_pincode_compare_pre > 0) {
int (*preHookFunc) (int *fd, struct char_session_data **sd, char **pin);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pincode_compare_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pincode_compare_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pincode_compare_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &sd, &pin);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -15751,9 +17768,9 @@ int HP_pincode_compare(int fd, struct char_session_data *sd, char *pin) {
{
retVal___ = HPMHooks.source.pincode.compare(fd, sd, pin);
}
- if( HPMHooks.count.HP_pincode_compare_post ) {
+ if (HPMHooks.count.HP_pincode_compare_post > 0) {
int (*postHookFunc) (int retVal___, int fd, struct char_session_data *sd, char *pin);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pincode_compare_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pincode_compare_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pincode_compare_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, sd, pin);
}
@@ -15762,14 +17779,14 @@ int HP_pincode_compare(int fd, struct char_session_data *sd, char *pin) {
}
void HP_pincode_check(int fd, struct char_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_pincode_check_pre ) {
+ if (HPMHooks.count.HP_pincode_check_pre > 0) {
void (*preHookFunc) (int *fd, struct char_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pincode_check_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pincode_check_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pincode_check_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15777,9 +17794,9 @@ void HP_pincode_check(int fd, struct char_session_data *sd) {
{
HPMHooks.source.pincode.check(fd, sd);
}
- if( HPMHooks.count.HP_pincode_check_post ) {
+ if (HPMHooks.count.HP_pincode_check_post > 0) {
void (*postHookFunc) (int fd, struct char_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pincode_check_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pincode_check_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pincode_check_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -15789,14 +17806,14 @@ void HP_pincode_check(int fd, struct char_session_data *sd) {
bool HP_pincode_config_read(const char *filename, const struct config_t *config, bool imported) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_pincode_config_read_pre ) {
+ if (HPMHooks.count.HP_pincode_config_read_pre > 0) {
bool (*preHookFunc) (const char **filename, const struct config_t **config, bool *imported);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pincode_config_read_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pincode_config_read_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pincode_config_read_pre[hIndex].func;
retVal___ = preHookFunc(&filename, &config, &imported);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -15804,26 +17821,78 @@ bool HP_pincode_config_read(const char *filename, const struct config_t *config,
{
retVal___ = HPMHooks.source.pincode.config_read(filename, config, imported);
}
- if( HPMHooks.count.HP_pincode_config_read_post ) {
+ if (HPMHooks.count.HP_pincode_config_read_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *filename, const struct config_t *config, bool imported);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pincode_config_read_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pincode_config_read_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pincode_config_read_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename, config, imported);
}
}
return retVal___;
}
+void HP_pincode_init(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_pincode_init_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pincode_init_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pincode_init_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.pincode.init();
+ }
+ if (HPMHooks.count.HP_pincode_init_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pincode_init_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pincode_init_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+void HP_pincode_final(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_pincode_final_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pincode_final_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pincode_final_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.pincode.final();
+ }
+ if (HPMHooks.count.HP_pincode_final_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pincode_final_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pincode_final_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
/* rnd_interface */
void HP_rnd_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_rnd_init_pre ) {
+ if (HPMHooks.count.HP_rnd_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_rnd_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15831,9 +17900,9 @@ void HP_rnd_init(void) {
{
HPMHooks.source.rnd.init();
}
- if( HPMHooks.count.HP_rnd_init_post ) {
+ if (HPMHooks.count.HP_rnd_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_rnd_init_post[hIndex].func;
postHookFunc();
}
@@ -15842,14 +17911,14 @@ void HP_rnd_init(void) {
}
void HP_rnd_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_rnd_final_pre ) {
+ if (HPMHooks.count.HP_rnd_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_rnd_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15857,9 +17926,9 @@ void HP_rnd_final(void) {
{
HPMHooks.source.rnd.final();
}
- if( HPMHooks.count.HP_rnd_final_post ) {
+ if (HPMHooks.count.HP_rnd_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_rnd_final_post[hIndex].func;
postHookFunc();
}
@@ -15868,14 +17937,14 @@ void HP_rnd_final(void) {
}
void HP_rnd_seed(uint32 seed) {
int hIndex = 0;
- if( HPMHooks.count.HP_rnd_seed_pre ) {
+ if (HPMHooks.count.HP_rnd_seed_pre > 0) {
void (*preHookFunc) (uint32 *seed);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_seed_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_seed_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_rnd_seed_pre[hIndex].func;
preHookFunc(&seed);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15883,9 +17952,9 @@ void HP_rnd_seed(uint32 seed) {
{
HPMHooks.source.rnd.seed(seed);
}
- if( HPMHooks.count.HP_rnd_seed_post ) {
+ if (HPMHooks.count.HP_rnd_seed_post > 0) {
void (*postHookFunc) (uint32 seed);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_seed_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_seed_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_rnd_seed_post[hIndex].func;
postHookFunc(seed);
}
@@ -15895,14 +17964,14 @@ void HP_rnd_seed(uint32 seed) {
int32 HP_rnd_random(void) {
int hIndex = 0;
int32 retVal___ = 0;
- if( HPMHooks.count.HP_rnd_random_pre ) {
+ if (HPMHooks.count.HP_rnd_random_pre > 0) {
int32 (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_random_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_random_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_rnd_random_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -15910,9 +17979,9 @@ int32 HP_rnd_random(void) {
{
retVal___ = HPMHooks.source.rnd.random();
}
- if( HPMHooks.count.HP_rnd_random_post ) {
+ if (HPMHooks.count.HP_rnd_random_post > 0) {
int32 (*postHookFunc) (int32 retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_random_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_random_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_rnd_random_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -15922,14 +17991,14 @@ int32 HP_rnd_random(void) {
uint32 HP_rnd_roll(uint32 dice_faces) {
int hIndex = 0;
uint32 retVal___ = 0;
- if( HPMHooks.count.HP_rnd_roll_pre ) {
+ if (HPMHooks.count.HP_rnd_roll_pre > 0) {
uint32 (*preHookFunc) (uint32 *dice_faces);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_roll_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_roll_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_rnd_roll_pre[hIndex].func;
retVal___ = preHookFunc(&dice_faces);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -15937,9 +18006,9 @@ uint32 HP_rnd_roll(uint32 dice_faces) {
{
retVal___ = HPMHooks.source.rnd.roll(dice_faces);
}
- if( HPMHooks.count.HP_rnd_roll_post ) {
+ if (HPMHooks.count.HP_rnd_roll_post > 0) {
uint32 (*postHookFunc) (uint32 retVal___, uint32 dice_faces);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_roll_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_roll_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_rnd_roll_post[hIndex].func;
retVal___ = postHookFunc(retVal___, dice_faces);
}
@@ -15949,14 +18018,14 @@ uint32 HP_rnd_roll(uint32 dice_faces) {
int32 HP_rnd_value(int32 min, int32 max) {
int hIndex = 0;
int32 retVal___ = 0;
- if( HPMHooks.count.HP_rnd_value_pre ) {
+ if (HPMHooks.count.HP_rnd_value_pre > 0) {
int32 (*preHookFunc) (int32 *min, int32 *max);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_value_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_value_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_rnd_value_pre[hIndex].func;
retVal___ = preHookFunc(&min, &max);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -15964,9 +18033,9 @@ int32 HP_rnd_value(int32 min, int32 max) {
{
retVal___ = HPMHooks.source.rnd.value(min, max);
}
- if( HPMHooks.count.HP_rnd_value_post ) {
+ if (HPMHooks.count.HP_rnd_value_post > 0) {
int32 (*postHookFunc) (int32 retVal___, int32 min, int32 max);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_value_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_value_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_rnd_value_post[hIndex].func;
retVal___ = postHookFunc(retVal___, min, max);
}
@@ -15976,14 +18045,14 @@ int32 HP_rnd_value(int32 min, int32 max) {
double HP_rnd_uniform(void) {
int hIndex = 0;
double retVal___ = 0.;
- if( HPMHooks.count.HP_rnd_uniform_pre ) {
+ if (HPMHooks.count.HP_rnd_uniform_pre > 0) {
double (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_uniform_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_uniform_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_rnd_uniform_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -15991,9 +18060,9 @@ double HP_rnd_uniform(void) {
{
retVal___ = HPMHooks.source.rnd.uniform();
}
- if( HPMHooks.count.HP_rnd_uniform_post ) {
+ if (HPMHooks.count.HP_rnd_uniform_post > 0) {
double (*postHookFunc) (double retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_uniform_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_uniform_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_rnd_uniform_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -16003,14 +18072,14 @@ double HP_rnd_uniform(void) {
double HP_rnd_uniform53(void) {
int hIndex = 0;
double retVal___ = 0.;
- if( HPMHooks.count.HP_rnd_uniform53_pre ) {
+ if (HPMHooks.count.HP_rnd_uniform53_pre > 0) {
double (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_uniform53_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_uniform53_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_rnd_uniform53_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -16018,9 +18087,9 @@ double HP_rnd_uniform53(void) {
{
retVal___ = HPMHooks.source.rnd.uniform53();
}
- if( HPMHooks.count.HP_rnd_uniform53_post ) {
+ if (HPMHooks.count.HP_rnd_uniform53_post > 0) {
double (*postHookFunc) (double retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_uniform53_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_uniform53_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_rnd_uniform53_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -16030,14 +18099,14 @@ double HP_rnd_uniform53(void) {
/* showmsg_interface */
void HP_showmsg_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_showmsg_init_pre ) {
+ if (HPMHooks.count.HP_showmsg_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_showmsg_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16045,9 +18114,9 @@ void HP_showmsg_init(void) {
{
HPMHooks.source.showmsg.init();
}
- if( HPMHooks.count.HP_showmsg_init_post ) {
+ if (HPMHooks.count.HP_showmsg_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_showmsg_init_post[hIndex].func;
postHookFunc();
}
@@ -16056,14 +18125,14 @@ void HP_showmsg_init(void) {
}
void HP_showmsg_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_showmsg_final_pre ) {
+ if (HPMHooks.count.HP_showmsg_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_showmsg_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16071,9 +18140,9 @@ void HP_showmsg_final(void) {
{
HPMHooks.source.showmsg.final();
}
- if( HPMHooks.count.HP_showmsg_final_post ) {
+ if (HPMHooks.count.HP_showmsg_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_showmsg_final_post[hIndex].func;
postHookFunc();
}
@@ -16082,14 +18151,14 @@ void HP_showmsg_final(void) {
}
void HP_showmsg_clearScreen(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_showmsg_clearScreen_pre ) {
+ if (HPMHooks.count.HP_showmsg_clearScreen_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_clearScreen_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_clearScreen_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_showmsg_clearScreen_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16097,9 +18166,9 @@ void HP_showmsg_clearScreen(void) {
{
HPMHooks.source.showmsg.clearScreen();
}
- if( HPMHooks.count.HP_showmsg_clearScreen_post ) {
+ if (HPMHooks.count.HP_showmsg_clearScreen_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_clearScreen_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_clearScreen_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_showmsg_clearScreen_post[hIndex].func;
postHookFunc();
}
@@ -16109,16 +18178,16 @@ void HP_showmsg_clearScreen(void) {
int HP_showmsg_showMessageV(const char *string, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_showmsg_showMessageV_pre ) {
+ if (HPMHooks.count.HP_showmsg_showMessageV_pre > 0) {
int (*preHookFunc) (const char **string, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_showMessageV_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_showMessageV_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_showmsg_showMessageV_pre[hIndex].func;
retVal___ = preHookFunc(&string, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -16128,9 +18197,9 @@ int HP_showmsg_showMessageV(const char *string, va_list ap) {
retVal___ = HPMHooks.source.showmsg.showMessageV(string, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_showmsg_showMessageV_post ) {
+ if (HPMHooks.count.HP_showmsg_showMessageV_post > 0) {
int (*postHookFunc) (int retVal___, const char *string, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_showMessageV_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_showMessageV_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_showmsg_showMessageV_post[hIndex].func;
retVal___ = postHookFunc(retVal___, string, ap___copy);
@@ -16142,14 +18211,14 @@ int HP_showmsg_showMessageV(const char *string, va_list ap) {
/* socket_interface */
void HP_sockt_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_sockt_init_pre ) {
+ if (HPMHooks.count.HP_sockt_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16157,9 +18226,9 @@ void HP_sockt_init(void) {
{
HPMHooks.source.sockt.init();
}
- if( HPMHooks.count.HP_sockt_init_post ) {
+ if (HPMHooks.count.HP_sockt_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_init_post[hIndex].func;
postHookFunc();
}
@@ -16168,14 +18237,14 @@ void HP_sockt_init(void) {
}
void HP_sockt_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_sockt_final_pre ) {
+ if (HPMHooks.count.HP_sockt_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16183,9 +18252,9 @@ void HP_sockt_final(void) {
{
HPMHooks.source.sockt.final();
}
- if( HPMHooks.count.HP_sockt_final_post ) {
+ if (HPMHooks.count.HP_sockt_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_final_post[hIndex].func;
postHookFunc();
}
@@ -16195,14 +18264,14 @@ void HP_sockt_final(void) {
int HP_sockt_perform(int next) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sockt_perform_pre ) {
+ if (HPMHooks.count.HP_sockt_perform_pre > 0) {
int (*preHookFunc) (int *next);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_perform_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_perform_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_perform_pre[hIndex].func;
retVal___ = preHookFunc(&next);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -16210,9 +18279,9 @@ int HP_sockt_perform(int next) {
{
retVal___ = HPMHooks.source.sockt.perform(next);
}
- if( HPMHooks.count.HP_sockt_perform_post ) {
+ if (HPMHooks.count.HP_sockt_perform_post > 0) {
int (*postHookFunc) (int retVal___, int next);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_perform_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_perform_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_perform_post[hIndex].func;
retVal___ = postHookFunc(retVal___, next);
}
@@ -16221,14 +18290,14 @@ int HP_sockt_perform(int next) {
}
void HP_sockt_datasync(int fd, bool send) {
int hIndex = 0;
- if( HPMHooks.count.HP_sockt_datasync_pre ) {
+ if (HPMHooks.count.HP_sockt_datasync_pre > 0) {
void (*preHookFunc) (int *fd, bool *send);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_datasync_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_datasync_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_datasync_pre[hIndex].func;
preHookFunc(&fd, &send);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16236,9 +18305,9 @@ void HP_sockt_datasync(int fd, bool send) {
{
HPMHooks.source.sockt.datasync(fd, send);
}
- if( HPMHooks.count.HP_sockt_datasync_post ) {
+ if (HPMHooks.count.HP_sockt_datasync_post > 0) {
void (*postHookFunc) (int fd, bool send);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_datasync_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_datasync_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_datasync_post[hIndex].func;
postHookFunc(fd, send);
}
@@ -16248,14 +18317,14 @@ void HP_sockt_datasync(int fd, bool send) {
int HP_sockt_make_listen_bind(uint32 ip, uint16 port) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sockt_make_listen_bind_pre ) {
+ if (HPMHooks.count.HP_sockt_make_listen_bind_pre > 0) {
int (*preHookFunc) (uint32 *ip, uint16 *port);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_make_listen_bind_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_make_listen_bind_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_make_listen_bind_pre[hIndex].func;
retVal___ = preHookFunc(&ip, &port);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -16263,9 +18332,9 @@ int HP_sockt_make_listen_bind(uint32 ip, uint16 port) {
{
retVal___ = HPMHooks.source.sockt.make_listen_bind(ip, port);
}
- if( HPMHooks.count.HP_sockt_make_listen_bind_post ) {
+ if (HPMHooks.count.HP_sockt_make_listen_bind_post > 0) {
int (*postHookFunc) (int retVal___, uint32 ip, uint16 port);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_make_listen_bind_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_make_listen_bind_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_make_listen_bind_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ip, port);
}
@@ -16275,14 +18344,14 @@ int HP_sockt_make_listen_bind(uint32 ip, uint16 port) {
int HP_sockt_make_connection(uint32 ip, uint16 port, struct hSockOpt *opt) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sockt_make_connection_pre ) {
+ if (HPMHooks.count.HP_sockt_make_connection_pre > 0) {
int (*preHookFunc) (uint32 *ip, uint16 *port, struct hSockOpt **opt);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_make_connection_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_make_connection_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_make_connection_pre[hIndex].func;
retVal___ = preHookFunc(&ip, &port, &opt);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -16290,9 +18359,9 @@ int HP_sockt_make_connection(uint32 ip, uint16 port, struct hSockOpt *opt) {
{
retVal___ = HPMHooks.source.sockt.make_connection(ip, port, opt);
}
- if( HPMHooks.count.HP_sockt_make_connection_post ) {
+ if (HPMHooks.count.HP_sockt_make_connection_post > 0) {
int (*postHookFunc) (int retVal___, uint32 ip, uint16 port, struct hSockOpt *opt);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_make_connection_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_make_connection_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_make_connection_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ip, port, opt);
}
@@ -16302,14 +18371,14 @@ int HP_sockt_make_connection(uint32 ip, uint16 port, struct hSockOpt *opt) {
int HP_sockt_realloc_fifo(int fd, unsigned int rfifo_size, unsigned int wfifo_size) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sockt_realloc_fifo_pre ) {
+ if (HPMHooks.count.HP_sockt_realloc_fifo_pre > 0) {
int (*preHookFunc) (int *fd, unsigned int *rfifo_size, unsigned int *wfifo_size);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_realloc_fifo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_realloc_fifo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_realloc_fifo_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &rfifo_size, &wfifo_size);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -16317,9 +18386,9 @@ int HP_sockt_realloc_fifo(int fd, unsigned int rfifo_size, unsigned int wfifo_si
{
retVal___ = HPMHooks.source.sockt.realloc_fifo(fd, rfifo_size, wfifo_size);
}
- if( HPMHooks.count.HP_sockt_realloc_fifo_post ) {
+ if (HPMHooks.count.HP_sockt_realloc_fifo_post > 0) {
int (*postHookFunc) (int retVal___, int fd, unsigned int rfifo_size, unsigned int wfifo_size);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_realloc_fifo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_realloc_fifo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_realloc_fifo_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, rfifo_size, wfifo_size);
}
@@ -16329,14 +18398,14 @@ int HP_sockt_realloc_fifo(int fd, unsigned int rfifo_size, unsigned int wfifo_si
int HP_sockt_realloc_writefifo(int fd, size_t addition) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sockt_realloc_writefifo_pre ) {
+ if (HPMHooks.count.HP_sockt_realloc_writefifo_pre > 0) {
int (*preHookFunc) (int *fd, size_t *addition);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_realloc_writefifo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_realloc_writefifo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_realloc_writefifo_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &addition);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -16344,53 +18413,79 @@ int HP_sockt_realloc_writefifo(int fd, size_t addition) {
{
retVal___ = HPMHooks.source.sockt.realloc_writefifo(fd, addition);
}
- if( HPMHooks.count.HP_sockt_realloc_writefifo_post ) {
+ if (HPMHooks.count.HP_sockt_realloc_writefifo_post > 0) {
int (*postHookFunc) (int retVal___, int fd, size_t addition);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_realloc_writefifo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_realloc_writefifo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_realloc_writefifo_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, addition);
}
}
return retVal___;
}
-int HP_sockt_wfifoset(int fd, size_t len) {
+int HP_sockt_wfifoset(int fd, size_t len, bool validate) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sockt_wfifoset_pre ) {
- int (*preHookFunc) (int *fd, size_t *len);
+ if (HPMHooks.count.HP_sockt_wfifoset_pre > 0) {
+ int (*preHookFunc) (int *fd, size_t *len, bool *validate);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_wfifoset_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_wfifoset_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_wfifoset_pre[hIndex].func;
- retVal___ = preHookFunc(&fd, &len);
+ retVal___ = preHookFunc(&fd, &len, &validate);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
}
{
- retVal___ = HPMHooks.source.sockt.wfifoset(fd, len);
+ retVal___ = HPMHooks.source.sockt.wfifoset(fd, len, validate);
}
- if( HPMHooks.count.HP_sockt_wfifoset_post ) {
- int (*postHookFunc) (int retVal___, int fd, size_t len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_wfifoset_post; hIndex++ ) {
+ if (HPMHooks.count.HP_sockt_wfifoset_post > 0) {
+ int (*postHookFunc) (int retVal___, int fd, size_t len, bool validate);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_wfifoset_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_wfifoset_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, fd, len);
+ retVal___ = postHookFunc(retVal___, fd, len, validate);
}
}
return retVal___;
}
+void HP_sockt_wfifohead(int fd, size_t len) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_sockt_wfifohead_pre > 0) {
+ void (*preHookFunc) (int *fd, size_t *len);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_wfifohead_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_sockt_wfifohead_pre[hIndex].func;
+ preHookFunc(&fd, &len);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.sockt.wfifohead(fd, len);
+ }
+ if (HPMHooks.count.HP_sockt_wfifohead_post > 0) {
+ void (*postHookFunc) (int fd, size_t len);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_wfifohead_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_sockt_wfifohead_post[hIndex].func;
+ postHookFunc(fd, len);
+ }
+ }
+ return;
+}
int HP_sockt_rfifoskip(int fd, size_t len) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sockt_rfifoskip_pre ) {
+ if (HPMHooks.count.HP_sockt_rfifoskip_pre > 0) {
int (*preHookFunc) (int *fd, size_t *len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_rfifoskip_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_rfifoskip_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_rfifoskip_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -16398,9 +18493,9 @@ int HP_sockt_rfifoskip(int fd, size_t len) {
{
retVal___ = HPMHooks.source.sockt.rfifoskip(fd, len);
}
- if( HPMHooks.count.HP_sockt_rfifoskip_post ) {
+ if (HPMHooks.count.HP_sockt_rfifoskip_post > 0) {
int (*postHookFunc) (int retVal___, int fd, size_t len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_rfifoskip_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_rfifoskip_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_rfifoskip_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, len);
}
@@ -16409,14 +18504,14 @@ int HP_sockt_rfifoskip(int fd, size_t len) {
}
void HP_sockt_close(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_sockt_close_pre ) {
+ if (HPMHooks.count.HP_sockt_close_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_close_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_close_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_close_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16424,26 +18519,52 @@ void HP_sockt_close(int fd) {
{
HPMHooks.source.sockt.close(fd);
}
- if( HPMHooks.count.HP_sockt_close_post ) {
+ if (HPMHooks.count.HP_sockt_close_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_close_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_close_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_close_post[hIndex].func;
postHookFunc(fd);
}
}
return;
}
+void HP_sockt_validateWfifo(int fd, size_t len) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_sockt_validateWfifo_pre > 0) {
+ void (*preHookFunc) (int *fd, size_t *len);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_validateWfifo_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_sockt_validateWfifo_pre[hIndex].func;
+ preHookFunc(&fd, &len);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.sockt.validateWfifo(fd, len);
+ }
+ if (HPMHooks.count.HP_sockt_validateWfifo_post > 0) {
+ void (*postHookFunc) (int fd, size_t len);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_validateWfifo_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_sockt_validateWfifo_post[hIndex].func;
+ postHookFunc(fd, len);
+ }
+ }
+ return;
+}
bool HP_sockt_session_is_valid(int fd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_sockt_session_is_valid_pre ) {
+ if (HPMHooks.count.HP_sockt_session_is_valid_pre > 0) {
bool (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_session_is_valid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_session_is_valid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_session_is_valid_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -16451,9 +18572,9 @@ bool HP_sockt_session_is_valid(int fd) {
{
retVal___ = HPMHooks.source.sockt.session_is_valid(fd);
}
- if( HPMHooks.count.HP_sockt_session_is_valid_post ) {
+ if (HPMHooks.count.HP_sockt_session_is_valid_post > 0) {
bool (*postHookFunc) (bool retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_session_is_valid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_session_is_valid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_session_is_valid_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -16463,14 +18584,14 @@ bool HP_sockt_session_is_valid(int fd) {
bool HP_sockt_session_is_active(int fd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_sockt_session_is_active_pre ) {
+ if (HPMHooks.count.HP_sockt_session_is_active_pre > 0) {
bool (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_session_is_active_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_session_is_active_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_session_is_active_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -16478,9 +18599,9 @@ bool HP_sockt_session_is_active(int fd) {
{
retVal___ = HPMHooks.source.sockt.session_is_active(fd);
}
- if( HPMHooks.count.HP_sockt_session_is_active_post ) {
+ if (HPMHooks.count.HP_sockt_session_is_active_post > 0) {
bool (*postHookFunc) (bool retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_session_is_active_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_session_is_active_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_session_is_active_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -16489,14 +18610,14 @@ bool HP_sockt_session_is_active(int fd) {
}
void HP_sockt_flush(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_sockt_flush_pre ) {
+ if (HPMHooks.count.HP_sockt_flush_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_flush_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_flush_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_flush_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16504,9 +18625,9 @@ void HP_sockt_flush(int fd) {
{
HPMHooks.source.sockt.flush(fd);
}
- if( HPMHooks.count.HP_sockt_flush_post ) {
+ if (HPMHooks.count.HP_sockt_flush_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_flush_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_flush_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_flush_post[hIndex].func;
postHookFunc(fd);
}
@@ -16515,14 +18636,14 @@ void HP_sockt_flush(int fd) {
}
void HP_sockt_flush_fifos(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_sockt_flush_fifos_pre ) {
+ if (HPMHooks.count.HP_sockt_flush_fifos_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_flush_fifos_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_flush_fifos_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_flush_fifos_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16530,9 +18651,9 @@ void HP_sockt_flush_fifos(void) {
{
HPMHooks.source.sockt.flush_fifos();
}
- if( HPMHooks.count.HP_sockt_flush_fifos_post ) {
+ if (HPMHooks.count.HP_sockt_flush_fifos_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_flush_fifos_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_flush_fifos_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_flush_fifos_post[hIndex].func;
postHookFunc();
}
@@ -16541,14 +18662,14 @@ void HP_sockt_flush_fifos(void) {
}
void HP_sockt_set_nonblocking(int fd, unsigned long yes) {
int hIndex = 0;
- if( HPMHooks.count.HP_sockt_set_nonblocking_pre ) {
+ if (HPMHooks.count.HP_sockt_set_nonblocking_pre > 0) {
void (*preHookFunc) (int *fd, unsigned long *yes);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_set_nonblocking_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_set_nonblocking_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_set_nonblocking_pre[hIndex].func;
preHookFunc(&fd, &yes);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16556,9 +18677,9 @@ void HP_sockt_set_nonblocking(int fd, unsigned long yes) {
{
HPMHooks.source.sockt.set_nonblocking(fd, yes);
}
- if( HPMHooks.count.HP_sockt_set_nonblocking_post ) {
+ if (HPMHooks.count.HP_sockt_set_nonblocking_post > 0) {
void (*postHookFunc) (int fd, unsigned long yes);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_set_nonblocking_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_set_nonblocking_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_set_nonblocking_post[hIndex].func;
postHookFunc(fd, yes);
}
@@ -16567,14 +18688,14 @@ void HP_sockt_set_nonblocking(int fd, unsigned long yes) {
}
void HP_sockt_set_defaultparse(ParseFunc defaultparse) {
int hIndex = 0;
- if( HPMHooks.count.HP_sockt_set_defaultparse_pre ) {
+ if (HPMHooks.count.HP_sockt_set_defaultparse_pre > 0) {
void (*preHookFunc) (ParseFunc *defaultparse);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_set_defaultparse_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_set_defaultparse_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_set_defaultparse_pre[hIndex].func;
preHookFunc(&defaultparse);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16582,9 +18703,9 @@ void HP_sockt_set_defaultparse(ParseFunc defaultparse) {
{
HPMHooks.source.sockt.set_defaultparse(defaultparse);
}
- if( HPMHooks.count.HP_sockt_set_defaultparse_post ) {
+ if (HPMHooks.count.HP_sockt_set_defaultparse_post > 0) {
void (*postHookFunc) (ParseFunc defaultparse);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_set_defaultparse_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_set_defaultparse_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_set_defaultparse_post[hIndex].func;
postHookFunc(defaultparse);
}
@@ -16594,14 +18715,14 @@ void HP_sockt_set_defaultparse(ParseFunc defaultparse) {
uint32 HP_sockt_host2ip(const char *hostname) {
int hIndex = 0;
uint32 retVal___ = 0;
- if( HPMHooks.count.HP_sockt_host2ip_pre ) {
+ if (HPMHooks.count.HP_sockt_host2ip_pre > 0) {
uint32 (*preHookFunc) (const char **hostname);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_host2ip_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_host2ip_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_host2ip_pre[hIndex].func;
retVal___ = preHookFunc(&hostname);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -16609,9 +18730,9 @@ uint32 HP_sockt_host2ip(const char *hostname) {
{
retVal___ = HPMHooks.source.sockt.host2ip(hostname);
}
- if( HPMHooks.count.HP_sockt_host2ip_post ) {
+ if (HPMHooks.count.HP_sockt_host2ip_post > 0) {
uint32 (*postHookFunc) (uint32 retVal___, const char *hostname);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_host2ip_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_host2ip_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_host2ip_post[hIndex].func;
retVal___ = postHookFunc(retVal___, hostname);
}
@@ -16621,14 +18742,14 @@ uint32 HP_sockt_host2ip(const char *hostname) {
const char* HP_sockt_ip2str(uint32 ip, char *ip_str) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sockt_ip2str_pre ) {
+ if (HPMHooks.count.HP_sockt_ip2str_pre > 0) {
const char* (*preHookFunc) (uint32 *ip, char **ip_str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_ip2str_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_ip2str_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_ip2str_pre[hIndex].func;
retVal___ = preHookFunc(&ip, &ip_str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -16636,9 +18757,9 @@ const char* HP_sockt_ip2str(uint32 ip, char *ip_str) {
{
retVal___ = HPMHooks.source.sockt.ip2str(ip, ip_str);
}
- if( HPMHooks.count.HP_sockt_ip2str_post ) {
+ if (HPMHooks.count.HP_sockt_ip2str_post > 0) {
const char* (*postHookFunc) (const char* retVal___, uint32 ip, char *ip_str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_ip2str_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_ip2str_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_ip2str_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ip, ip_str);
}
@@ -16648,14 +18769,14 @@ const char* HP_sockt_ip2str(uint32 ip, char *ip_str) {
uint32 HP_sockt_str2ip(const char *ip_str) {
int hIndex = 0;
uint32 retVal___ = 0;
- if( HPMHooks.count.HP_sockt_str2ip_pre ) {
+ if (HPMHooks.count.HP_sockt_str2ip_pre > 0) {
uint32 (*preHookFunc) (const char **ip_str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_str2ip_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_str2ip_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_str2ip_pre[hIndex].func;
retVal___ = preHookFunc(&ip_str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -16663,9 +18784,9 @@ uint32 HP_sockt_str2ip(const char *ip_str) {
{
retVal___ = HPMHooks.source.sockt.str2ip(ip_str);
}
- if( HPMHooks.count.HP_sockt_str2ip_post ) {
+ if (HPMHooks.count.HP_sockt_str2ip_post > 0) {
uint32 (*postHookFunc) (uint32 retVal___, const char *ip_str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_str2ip_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_str2ip_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_str2ip_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ip_str);
}
@@ -16675,14 +18796,14 @@ uint32 HP_sockt_str2ip(const char *ip_str) {
uint16 HP_sockt_ntows(uint16 netshort) {
int hIndex = 0;
uint16 retVal___ = 0;
- if( HPMHooks.count.HP_sockt_ntows_pre ) {
+ if (HPMHooks.count.HP_sockt_ntows_pre > 0) {
uint16 (*preHookFunc) (uint16 *netshort);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_ntows_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_ntows_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_ntows_pre[hIndex].func;
retVal___ = preHookFunc(&netshort);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -16690,9 +18811,9 @@ uint16 HP_sockt_ntows(uint16 netshort) {
{
retVal___ = HPMHooks.source.sockt.ntows(netshort);
}
- if( HPMHooks.count.HP_sockt_ntows_post ) {
+ if (HPMHooks.count.HP_sockt_ntows_post > 0) {
uint16 (*postHookFunc) (uint16 retVal___, uint16 netshort);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_ntows_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_ntows_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_ntows_post[hIndex].func;
retVal___ = postHookFunc(retVal___, netshort);
}
@@ -16702,14 +18823,14 @@ uint16 HP_sockt_ntows(uint16 netshort) {
int HP_sockt_getips(uint32 *ips, int max) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sockt_getips_pre ) {
+ if (HPMHooks.count.HP_sockt_getips_pre > 0) {
int (*preHookFunc) (uint32 **ips, int *max);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_getips_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_getips_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_getips_pre[hIndex].func;
retVal___ = preHookFunc(&ips, &max);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -16717,9 +18838,9 @@ int HP_sockt_getips(uint32 *ips, int max) {
{
retVal___ = HPMHooks.source.sockt.getips(ips, max);
}
- if( HPMHooks.count.HP_sockt_getips_post ) {
+ if (HPMHooks.count.HP_sockt_getips_post > 0) {
int (*postHookFunc) (int retVal___, uint32 *ips, int max);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_getips_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_getips_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_getips_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ips, max);
}
@@ -16728,14 +18849,14 @@ int HP_sockt_getips(uint32 *ips, int max) {
}
void HP_sockt_eof(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_sockt_eof_pre ) {
+ if (HPMHooks.count.HP_sockt_eof_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_eof_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_eof_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_eof_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16743,9 +18864,9 @@ void HP_sockt_eof(int fd) {
{
HPMHooks.source.sockt.eof(fd);
}
- if( HPMHooks.count.HP_sockt_eof_post ) {
+ if (HPMHooks.count.HP_sockt_eof_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_eof_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_eof_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_eof_post[hIndex].func;
postHookFunc(fd);
}
@@ -16755,14 +18876,14 @@ void HP_sockt_eof(int fd) {
uint32 HP_sockt_lan_subnet_check(uint32 ip, struct s_subnet *info) {
int hIndex = 0;
uint32 retVal___ = 0;
- if( HPMHooks.count.HP_sockt_lan_subnet_check_pre ) {
+ if (HPMHooks.count.HP_sockt_lan_subnet_check_pre > 0) {
uint32 (*preHookFunc) (uint32 *ip, struct s_subnet **info);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_lan_subnet_check_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_lan_subnet_check_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_lan_subnet_check_pre[hIndex].func;
retVal___ = preHookFunc(&ip, &info);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -16770,9 +18891,9 @@ uint32 HP_sockt_lan_subnet_check(uint32 ip, struct s_subnet *info) {
{
retVal___ = HPMHooks.source.sockt.lan_subnet_check(ip, info);
}
- if( HPMHooks.count.HP_sockt_lan_subnet_check_post ) {
+ if (HPMHooks.count.HP_sockt_lan_subnet_check_post > 0) {
uint32 (*postHookFunc) (uint32 retVal___, uint32 ip, struct s_subnet *info);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_lan_subnet_check_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_lan_subnet_check_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_lan_subnet_check_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ip, info);
}
@@ -16782,14 +18903,14 @@ uint32 HP_sockt_lan_subnet_check(uint32 ip, struct s_subnet *info) {
bool HP_sockt_allowed_ip_check(uint32 ip) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_sockt_allowed_ip_check_pre ) {
+ if (HPMHooks.count.HP_sockt_allowed_ip_check_pre > 0) {
bool (*preHookFunc) (uint32 *ip);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_allowed_ip_check_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_allowed_ip_check_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_allowed_ip_check_pre[hIndex].func;
retVal___ = preHookFunc(&ip);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -16797,9 +18918,9 @@ bool HP_sockt_allowed_ip_check(uint32 ip) {
{
retVal___ = HPMHooks.source.sockt.allowed_ip_check(ip);
}
- if( HPMHooks.count.HP_sockt_allowed_ip_check_post ) {
+ if (HPMHooks.count.HP_sockt_allowed_ip_check_post > 0) {
bool (*postHookFunc) (bool retVal___, uint32 ip);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_allowed_ip_check_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_allowed_ip_check_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_allowed_ip_check_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ip);
}
@@ -16809,14 +18930,14 @@ bool HP_sockt_allowed_ip_check(uint32 ip) {
bool HP_sockt_trusted_ip_check(uint32 ip) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_sockt_trusted_ip_check_pre ) {
+ if (HPMHooks.count.HP_sockt_trusted_ip_check_pre > 0) {
bool (*preHookFunc) (uint32 *ip);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_trusted_ip_check_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_trusted_ip_check_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_trusted_ip_check_pre[hIndex].func;
retVal___ = preHookFunc(&ip);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -16824,9 +18945,9 @@ bool HP_sockt_trusted_ip_check(uint32 ip) {
{
retVal___ = HPMHooks.source.sockt.trusted_ip_check(ip);
}
- if( HPMHooks.count.HP_sockt_trusted_ip_check_post ) {
+ if (HPMHooks.count.HP_sockt_trusted_ip_check_post > 0) {
bool (*postHookFunc) (bool retVal___, uint32 ip);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_trusted_ip_check_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_trusted_ip_check_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_trusted_ip_check_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ip);
}
@@ -16836,14 +18957,14 @@ bool HP_sockt_trusted_ip_check(uint32 ip) {
int HP_sockt_net_config_read_sub(struct config_setting_t *t, struct s_subnet_vector *list, const char *filename, const char *groupname) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sockt_net_config_read_sub_pre ) {
+ if (HPMHooks.count.HP_sockt_net_config_read_sub_pre > 0) {
int (*preHookFunc) (struct config_setting_t **t, struct s_subnet_vector **list, const char **filename, const char **groupname);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_net_config_read_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_net_config_read_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_net_config_read_sub_pre[hIndex].func;
retVal___ = preHookFunc(&t, &list, &filename, &groupname);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -16851,9 +18972,9 @@ int HP_sockt_net_config_read_sub(struct config_setting_t *t, struct s_subnet_vec
{
retVal___ = HPMHooks.source.sockt.net_config_read_sub(t, list, filename, groupname);
}
- if( HPMHooks.count.HP_sockt_net_config_read_sub_post ) {
+ if (HPMHooks.count.HP_sockt_net_config_read_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *t, struct s_subnet_vector *list, const char *filename, const char *groupname);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_net_config_read_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_net_config_read_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_net_config_read_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, t, list, filename, groupname);
}
@@ -16862,14 +18983,14 @@ int HP_sockt_net_config_read_sub(struct config_setting_t *t, struct s_subnet_vec
}
void HP_sockt_net_config_read(const char *filename) {
int hIndex = 0;
- if( HPMHooks.count.HP_sockt_net_config_read_pre ) {
+ if (HPMHooks.count.HP_sockt_net_config_read_pre > 0) {
void (*preHookFunc) (const char **filename);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_net_config_read_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_net_config_read_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_net_config_read_pre[hIndex].func;
preHookFunc(&filename);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16877,9 +18998,9 @@ void HP_sockt_net_config_read(const char *filename) {
{
HPMHooks.source.sockt.net_config_read(filename);
}
- if( HPMHooks.count.HP_sockt_net_config_read_post ) {
+ if (HPMHooks.count.HP_sockt_net_config_read_post > 0) {
void (*postHookFunc) (const char *filename);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_net_config_read_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_net_config_read_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_net_config_read_post[hIndex].func;
postHookFunc(filename);
}
@@ -16890,14 +19011,14 @@ void HP_sockt_net_config_read(const char *filename) {
int HP_SQL_Connect(struct Sql *self, const char *user, const char *passwd, const char *host, uint16 port, const char *db) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_Connect_pre ) {
+ if (HPMHooks.count.HP_SQL_Connect_pre > 0) {
int (*preHookFunc) (struct Sql **self, const char **user, const char **passwd, const char **host, uint16 *port, const char **db);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Connect_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Connect_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_Connect_pre[hIndex].func;
retVal___ = preHookFunc(&self, &user, &passwd, &host, &port, &db);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -16905,9 +19026,9 @@ int HP_SQL_Connect(struct Sql *self, const char *user, const char *passwd, const
{
retVal___ = HPMHooks.source.SQL.Connect(self, user, passwd, host, port, db);
}
- if( HPMHooks.count.HP_SQL_Connect_post ) {
+ if (HPMHooks.count.HP_SQL_Connect_post > 0) {
int (*postHookFunc) (int retVal___, struct Sql *self, const char *user, const char *passwd, const char *host, uint16 port, const char *db);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Connect_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Connect_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_Connect_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, user, passwd, host, port, db);
}
@@ -16917,14 +19038,14 @@ int HP_SQL_Connect(struct Sql *self, const char *user, const char *passwd, const
int HP_SQL_GetTimeout(struct Sql *self, uint32 *out_timeout) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_GetTimeout_pre ) {
+ if (HPMHooks.count.HP_SQL_GetTimeout_pre > 0) {
int (*preHookFunc) (struct Sql **self, uint32 **out_timeout);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetTimeout_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetTimeout_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_GetTimeout_pre[hIndex].func;
retVal___ = preHookFunc(&self, &out_timeout);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -16932,9 +19053,9 @@ int HP_SQL_GetTimeout(struct Sql *self, uint32 *out_timeout) {
{
retVal___ = HPMHooks.source.SQL.GetTimeout(self, out_timeout);
}
- if( HPMHooks.count.HP_SQL_GetTimeout_post ) {
+ if (HPMHooks.count.HP_SQL_GetTimeout_post > 0) {
int (*postHookFunc) (int retVal___, struct Sql *self, uint32 *out_timeout);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetTimeout_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetTimeout_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_GetTimeout_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, out_timeout);
}
@@ -16944,14 +19065,14 @@ int HP_SQL_GetTimeout(struct Sql *self, uint32 *out_timeout) {
int HP_SQL_GetColumnNames(struct Sql *self, const char *table, char *out_buf, size_t buf_len, char sep) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_GetColumnNames_pre ) {
+ if (HPMHooks.count.HP_SQL_GetColumnNames_pre > 0) {
int (*preHookFunc) (struct Sql **self, const char **table, char **out_buf, size_t *buf_len, char *sep);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetColumnNames_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetColumnNames_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_GetColumnNames_pre[hIndex].func;
retVal___ = preHookFunc(&self, &table, &out_buf, &buf_len, &sep);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -16959,9 +19080,9 @@ int HP_SQL_GetColumnNames(struct Sql *self, const char *table, char *out_buf, si
{
retVal___ = HPMHooks.source.SQL.GetColumnNames(self, table, out_buf, buf_len, sep);
}
- if( HPMHooks.count.HP_SQL_GetColumnNames_post ) {
+ if (HPMHooks.count.HP_SQL_GetColumnNames_post > 0) {
int (*postHookFunc) (int retVal___, struct Sql *self, const char *table, char *out_buf, size_t buf_len, char sep);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetColumnNames_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetColumnNames_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_GetColumnNames_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, table, out_buf, buf_len, sep);
}
@@ -16971,14 +19092,14 @@ int HP_SQL_GetColumnNames(struct Sql *self, const char *table, char *out_buf, si
int HP_SQL_SetEncoding(struct Sql *self, const char *encoding) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_SetEncoding_pre ) {
+ if (HPMHooks.count.HP_SQL_SetEncoding_pre > 0) {
int (*preHookFunc) (struct Sql **self, const char **encoding);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_SetEncoding_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_SetEncoding_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_SetEncoding_pre[hIndex].func;
retVal___ = preHookFunc(&self, &encoding);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -16986,9 +19107,9 @@ int HP_SQL_SetEncoding(struct Sql *self, const char *encoding) {
{
retVal___ = HPMHooks.source.SQL.SetEncoding(self, encoding);
}
- if( HPMHooks.count.HP_SQL_SetEncoding_post ) {
+ if (HPMHooks.count.HP_SQL_SetEncoding_post > 0) {
int (*postHookFunc) (int retVal___, struct Sql *self, const char *encoding);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_SetEncoding_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_SetEncoding_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_SetEncoding_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, encoding);
}
@@ -16998,14 +19119,14 @@ int HP_SQL_SetEncoding(struct Sql *self, const char *encoding) {
int HP_SQL_Ping(struct Sql *self) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_Ping_pre ) {
+ if (HPMHooks.count.HP_SQL_Ping_pre > 0) {
int (*preHookFunc) (struct Sql **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Ping_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Ping_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_Ping_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -17013,9 +19134,9 @@ int HP_SQL_Ping(struct Sql *self) {
{
retVal___ = HPMHooks.source.SQL.Ping(self);
}
- if( HPMHooks.count.HP_SQL_Ping_post ) {
+ if (HPMHooks.count.HP_SQL_Ping_post > 0) {
int (*postHookFunc) (int retVal___, struct Sql *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Ping_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Ping_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_Ping_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -17025,14 +19146,14 @@ int HP_SQL_Ping(struct Sql *self) {
size_t HP_SQL_EscapeString(struct Sql *self, char *out_to, const char *from) {
int hIndex = 0;
size_t retVal___ = 0;
- if( HPMHooks.count.HP_SQL_EscapeString_pre ) {
+ if (HPMHooks.count.HP_SQL_EscapeString_pre > 0) {
size_t (*preHookFunc) (struct Sql **self, char **out_to, const char **from);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_EscapeString_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_EscapeString_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_EscapeString_pre[hIndex].func;
retVal___ = preHookFunc(&self, &out_to, &from);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -17040,9 +19161,9 @@ size_t HP_SQL_EscapeString(struct Sql *self, char *out_to, const char *from) {
{
retVal___ = HPMHooks.source.SQL.EscapeString(self, out_to, from);
}
- if( HPMHooks.count.HP_SQL_EscapeString_post ) {
+ if (HPMHooks.count.HP_SQL_EscapeString_post > 0) {
size_t (*postHookFunc) (size_t retVal___, struct Sql *self, char *out_to, const char *from);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_EscapeString_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_EscapeString_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_EscapeString_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, out_to, from);
}
@@ -17052,14 +19173,14 @@ size_t HP_SQL_EscapeString(struct Sql *self, char *out_to, const char *from) {
size_t HP_SQL_EscapeStringLen(struct Sql *self, char *out_to, const char *from, size_t from_len) {
int hIndex = 0;
size_t retVal___ = 0;
- if( HPMHooks.count.HP_SQL_EscapeStringLen_pre ) {
+ if (HPMHooks.count.HP_SQL_EscapeStringLen_pre > 0) {
size_t (*preHookFunc) (struct Sql **self, char **out_to, const char **from, size_t *from_len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_EscapeStringLen_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_EscapeStringLen_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_EscapeStringLen_pre[hIndex].func;
retVal___ = preHookFunc(&self, &out_to, &from, &from_len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -17067,9 +19188,9 @@ size_t HP_SQL_EscapeStringLen(struct Sql *self, char *out_to, const char *from,
{
retVal___ = HPMHooks.source.SQL.EscapeStringLen(self, out_to, from, from_len);
}
- if( HPMHooks.count.HP_SQL_EscapeStringLen_post ) {
+ if (HPMHooks.count.HP_SQL_EscapeStringLen_post > 0) {
size_t (*postHookFunc) (size_t retVal___, struct Sql *self, char *out_to, const char *from, size_t from_len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_EscapeStringLen_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_EscapeStringLen_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_EscapeStringLen_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, out_to, from, from_len);
}
@@ -17079,16 +19200,16 @@ size_t HP_SQL_EscapeStringLen(struct Sql *self, char *out_to, const char *from,
int HP_SQL_QueryV(struct Sql *self, const char *query, va_list args) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_QueryV_pre ) {
+ if (HPMHooks.count.HP_SQL_QueryV_pre > 0) {
int (*preHookFunc) (struct Sql **self, const char **query, va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_QueryV_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_QueryV_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_SQL_QueryV_pre[hIndex].func;
retVal___ = preHookFunc(&self, &query, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -17098,9 +19219,9 @@ int HP_SQL_QueryV(struct Sql *self, const char *query, va_list args) {
retVal___ = HPMHooks.source.SQL.QueryV(self, query, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_SQL_QueryV_post ) {
+ if (HPMHooks.count.HP_SQL_QueryV_post > 0) {
int (*postHookFunc) (int retVal___, struct Sql *self, const char *query, va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_QueryV_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_QueryV_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_SQL_QueryV_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, query, args___copy);
@@ -17112,14 +19233,14 @@ int HP_SQL_QueryV(struct Sql *self, const char *query, va_list args) {
int HP_SQL_QueryStr(struct Sql *self, const char *query) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_QueryStr_pre ) {
+ if (HPMHooks.count.HP_SQL_QueryStr_pre > 0) {
int (*preHookFunc) (struct Sql **self, const char **query);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_QueryStr_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_QueryStr_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_QueryStr_pre[hIndex].func;
retVal___ = preHookFunc(&self, &query);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -17127,9 +19248,9 @@ int HP_SQL_QueryStr(struct Sql *self, const char *query) {
{
retVal___ = HPMHooks.source.SQL.QueryStr(self, query);
}
- if( HPMHooks.count.HP_SQL_QueryStr_post ) {
+ if (HPMHooks.count.HP_SQL_QueryStr_post > 0) {
int (*postHookFunc) (int retVal___, struct Sql *self, const char *query);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_QueryStr_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_QueryStr_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_QueryStr_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, query);
}
@@ -17139,14 +19260,14 @@ int HP_SQL_QueryStr(struct Sql *self, const char *query) {
uint64 HP_SQL_LastInsertId(struct Sql *self) {
int hIndex = 0;
uint64 retVal___ = 0;
- if( HPMHooks.count.HP_SQL_LastInsertId_pre ) {
+ if (HPMHooks.count.HP_SQL_LastInsertId_pre > 0) {
uint64 (*preHookFunc) (struct Sql **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_LastInsertId_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_LastInsertId_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_LastInsertId_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -17154,9 +19275,9 @@ uint64 HP_SQL_LastInsertId(struct Sql *self) {
{
retVal___ = HPMHooks.source.SQL.LastInsertId(self);
}
- if( HPMHooks.count.HP_SQL_LastInsertId_post ) {
+ if (HPMHooks.count.HP_SQL_LastInsertId_post > 0) {
uint64 (*postHookFunc) (uint64 retVal___, struct Sql *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_LastInsertId_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_LastInsertId_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_LastInsertId_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -17166,14 +19287,14 @@ uint64 HP_SQL_LastInsertId(struct Sql *self) {
uint32 HP_SQL_NumColumns(struct Sql *self) {
int hIndex = 0;
uint32 retVal___ = 0;
- if( HPMHooks.count.HP_SQL_NumColumns_pre ) {
+ if (HPMHooks.count.HP_SQL_NumColumns_pre > 0) {
uint32 (*preHookFunc) (struct Sql **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NumColumns_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NumColumns_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_NumColumns_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -17181,9 +19302,9 @@ uint32 HP_SQL_NumColumns(struct Sql *self) {
{
retVal___ = HPMHooks.source.SQL.NumColumns(self);
}
- if( HPMHooks.count.HP_SQL_NumColumns_post ) {
+ if (HPMHooks.count.HP_SQL_NumColumns_post > 0) {
uint32 (*postHookFunc) (uint32 retVal___, struct Sql *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NumColumns_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NumColumns_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_NumColumns_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -17193,14 +19314,14 @@ uint32 HP_SQL_NumColumns(struct Sql *self) {
uint64 HP_SQL_NumRows(struct Sql *self) {
int hIndex = 0;
uint64 retVal___ = 0;
- if( HPMHooks.count.HP_SQL_NumRows_pre ) {
+ if (HPMHooks.count.HP_SQL_NumRows_pre > 0) {
uint64 (*preHookFunc) (struct Sql **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NumRows_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NumRows_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_NumRows_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -17208,9 +19329,9 @@ uint64 HP_SQL_NumRows(struct Sql *self) {
{
retVal___ = HPMHooks.source.SQL.NumRows(self);
}
- if( HPMHooks.count.HP_SQL_NumRows_post ) {
+ if (HPMHooks.count.HP_SQL_NumRows_post > 0) {
uint64 (*postHookFunc) (uint64 retVal___, struct Sql *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NumRows_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NumRows_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_NumRows_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -17220,14 +19341,14 @@ uint64 HP_SQL_NumRows(struct Sql *self) {
int HP_SQL_NextRow(struct Sql *self) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_NextRow_pre ) {
+ if (HPMHooks.count.HP_SQL_NextRow_pre > 0) {
int (*preHookFunc) (struct Sql **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NextRow_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NextRow_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_NextRow_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -17235,9 +19356,9 @@ int HP_SQL_NextRow(struct Sql *self) {
{
retVal___ = HPMHooks.source.SQL.NextRow(self);
}
- if( HPMHooks.count.HP_SQL_NextRow_post ) {
+ if (HPMHooks.count.HP_SQL_NextRow_post > 0) {
int (*postHookFunc) (int retVal___, struct Sql *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NextRow_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NextRow_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_NextRow_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -17247,14 +19368,14 @@ int HP_SQL_NextRow(struct Sql *self) {
int HP_SQL_GetData(struct Sql *self, size_t col, char **out_buf, size_t *out_len) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_GetData_pre ) {
+ if (HPMHooks.count.HP_SQL_GetData_pre > 0) {
int (*preHookFunc) (struct Sql **self, size_t *col, char ***out_buf, size_t **out_len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetData_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetData_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_GetData_pre[hIndex].func;
retVal___ = preHookFunc(&self, &col, &out_buf, &out_len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -17262,9 +19383,9 @@ int HP_SQL_GetData(struct Sql *self, size_t col, char **out_buf, size_t *out_len
{
retVal___ = HPMHooks.source.SQL.GetData(self, col, out_buf, out_len);
}
- if( HPMHooks.count.HP_SQL_GetData_post ) {
+ if (HPMHooks.count.HP_SQL_GetData_post > 0) {
int (*postHookFunc) (int retVal___, struct Sql *self, size_t col, char **out_buf, size_t *out_len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetData_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetData_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_GetData_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, col, out_buf, out_len);
}
@@ -17273,14 +19394,14 @@ int HP_SQL_GetData(struct Sql *self, size_t col, char **out_buf, size_t *out_len
}
void HP_SQL_FreeResult(struct Sql *self) {
int hIndex = 0;
- if( HPMHooks.count.HP_SQL_FreeResult_pre ) {
+ if (HPMHooks.count.HP_SQL_FreeResult_pre > 0) {
void (*preHookFunc) (struct Sql **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_FreeResult_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_FreeResult_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_FreeResult_pre[hIndex].func;
preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17288,9 +19409,9 @@ void HP_SQL_FreeResult(struct Sql *self) {
{
HPMHooks.source.SQL.FreeResult(self);
}
- if( HPMHooks.count.HP_SQL_FreeResult_post ) {
+ if (HPMHooks.count.HP_SQL_FreeResult_post > 0) {
void (*postHookFunc) (struct Sql *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_FreeResult_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_FreeResult_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_FreeResult_post[hIndex].func;
postHookFunc(self);
}
@@ -17299,14 +19420,14 @@ void HP_SQL_FreeResult(struct Sql *self) {
}
void HP_SQL_ShowDebug_(struct Sql *self, const char *debug_file, const unsigned long debug_line) {
int hIndex = 0;
- if( HPMHooks.count.HP_SQL_ShowDebug__pre ) {
+ if (HPMHooks.count.HP_SQL_ShowDebug__pre > 0) {
void (*preHookFunc) (struct Sql **self, const char **debug_file, const unsigned long *debug_line);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_ShowDebug__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_ShowDebug__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_ShowDebug__pre[hIndex].func;
preHookFunc(&self, &debug_file, &debug_line);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17314,9 +19435,9 @@ void HP_SQL_ShowDebug_(struct Sql *self, const char *debug_file, const unsigned
{
HPMHooks.source.SQL.ShowDebug_(self, debug_file, debug_line);
}
- if( HPMHooks.count.HP_SQL_ShowDebug__post ) {
+ if (HPMHooks.count.HP_SQL_ShowDebug__post > 0) {
void (*postHookFunc) (struct Sql *self, const char *debug_file, const unsigned long debug_line);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_ShowDebug__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_ShowDebug__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_ShowDebug__post[hIndex].func;
postHookFunc(self, debug_file, debug_line);
}
@@ -17325,14 +19446,14 @@ void HP_SQL_ShowDebug_(struct Sql *self, const char *debug_file, const unsigned
}
void HP_SQL_Free(struct Sql *self) {
int hIndex = 0;
- if( HPMHooks.count.HP_SQL_Free_pre ) {
+ if (HPMHooks.count.HP_SQL_Free_pre > 0) {
void (*preHookFunc) (struct Sql **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Free_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Free_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_Free_pre[hIndex].func;
preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17340,9 +19461,9 @@ void HP_SQL_Free(struct Sql *self) {
{
HPMHooks.source.SQL.Free(self);
}
- if( HPMHooks.count.HP_SQL_Free_post ) {
+ if (HPMHooks.count.HP_SQL_Free_post > 0) {
void (*postHookFunc) (struct Sql *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Free_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Free_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_Free_post[hIndex].func;
postHookFunc(self);
}
@@ -17352,14 +19473,14 @@ void HP_SQL_Free(struct Sql *self) {
struct Sql* HP_SQL_Malloc(void) {
int hIndex = 0;
struct Sql* retVal___ = NULL;
- if( HPMHooks.count.HP_SQL_Malloc_pre ) {
+ if (HPMHooks.count.HP_SQL_Malloc_pre > 0) {
struct Sql* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Malloc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Malloc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_Malloc_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -17367,9 +19488,9 @@ struct Sql* HP_SQL_Malloc(void) {
{
retVal___ = HPMHooks.source.SQL.Malloc();
}
- if( HPMHooks.count.HP_SQL_Malloc_post ) {
+ if (HPMHooks.count.HP_SQL_Malloc_post > 0) {
struct Sql* (*postHookFunc) (struct Sql* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Malloc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Malloc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_Malloc_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -17379,14 +19500,14 @@ struct Sql* HP_SQL_Malloc(void) {
struct SqlStmt* HP_SQL_StmtMalloc(struct Sql *sql) {
int hIndex = 0;
struct SqlStmt* retVal___ = NULL;
- if( HPMHooks.count.HP_SQL_StmtMalloc_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtMalloc_pre > 0) {
struct SqlStmt* (*preHookFunc) (struct Sql **sql);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtMalloc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtMalloc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtMalloc_pre[hIndex].func;
retVal___ = preHookFunc(&sql);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -17394,9 +19515,9 @@ struct SqlStmt* HP_SQL_StmtMalloc(struct Sql *sql) {
{
retVal___ = HPMHooks.source.SQL.StmtMalloc(sql);
}
- if( HPMHooks.count.HP_SQL_StmtMalloc_post ) {
+ if (HPMHooks.count.HP_SQL_StmtMalloc_post > 0) {
struct SqlStmt* (*postHookFunc) (struct SqlStmt* retVal___, struct Sql *sql);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtMalloc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtMalloc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtMalloc_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sql);
}
@@ -17406,16 +19527,16 @@ struct SqlStmt* HP_SQL_StmtMalloc(struct Sql *sql) {
int HP_SQL_StmtPrepareV(struct SqlStmt *self, const char *query, va_list args) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_StmtPrepareV_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtPrepareV_pre > 0) {
int (*preHookFunc) (struct SqlStmt **self, const char **query, va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtPrepareV_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtPrepareV_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_SQL_StmtPrepareV_pre[hIndex].func;
retVal___ = preHookFunc(&self, &query, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -17425,9 +19546,9 @@ int HP_SQL_StmtPrepareV(struct SqlStmt *self, const char *query, va_list args) {
retVal___ = HPMHooks.source.SQL.StmtPrepareV(self, query, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_SQL_StmtPrepareV_post ) {
+ if (HPMHooks.count.HP_SQL_StmtPrepareV_post > 0) {
int (*postHookFunc) (int retVal___, struct SqlStmt *self, const char *query, va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtPrepareV_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtPrepareV_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_SQL_StmtPrepareV_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, query, args___copy);
@@ -17439,14 +19560,14 @@ int HP_SQL_StmtPrepareV(struct SqlStmt *self, const char *query, va_list args) {
int HP_SQL_StmtPrepareStr(struct SqlStmt *self, const char *query) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_StmtPrepareStr_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtPrepareStr_pre > 0) {
int (*preHookFunc) (struct SqlStmt **self, const char **query);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtPrepareStr_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtPrepareStr_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtPrepareStr_pre[hIndex].func;
retVal___ = preHookFunc(&self, &query);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -17454,9 +19575,9 @@ int HP_SQL_StmtPrepareStr(struct SqlStmt *self, const char *query) {
{
retVal___ = HPMHooks.source.SQL.StmtPrepareStr(self, query);
}
- if( HPMHooks.count.HP_SQL_StmtPrepareStr_post ) {
+ if (HPMHooks.count.HP_SQL_StmtPrepareStr_post > 0) {
int (*postHookFunc) (int retVal___, struct SqlStmt *self, const char *query);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtPrepareStr_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtPrepareStr_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtPrepareStr_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, query);
}
@@ -17466,14 +19587,14 @@ int HP_SQL_StmtPrepareStr(struct SqlStmt *self, const char *query) {
size_t HP_SQL_StmtNumParams(struct SqlStmt *self) {
int hIndex = 0;
size_t retVal___ = 0;
- if( HPMHooks.count.HP_SQL_StmtNumParams_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtNumParams_pre > 0) {
size_t (*preHookFunc) (struct SqlStmt **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumParams_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumParams_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtNumParams_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -17481,9 +19602,9 @@ size_t HP_SQL_StmtNumParams(struct SqlStmt *self) {
{
retVal___ = HPMHooks.source.SQL.StmtNumParams(self);
}
- if( HPMHooks.count.HP_SQL_StmtNumParams_post ) {
+ if (HPMHooks.count.HP_SQL_StmtNumParams_post > 0) {
size_t (*postHookFunc) (size_t retVal___, struct SqlStmt *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumParams_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumParams_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtNumParams_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -17493,14 +19614,14 @@ size_t HP_SQL_StmtNumParams(struct SqlStmt *self) {
int HP_SQL_StmtBindParam(struct SqlStmt *self, size_t idx, enum SqlDataType buffer_type, const void *buffer, size_t buffer_len) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_StmtBindParam_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtBindParam_pre > 0) {
int (*preHookFunc) (struct SqlStmt **self, size_t *idx, enum SqlDataType *buffer_type, const void **buffer, size_t *buffer_len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtBindParam_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtBindParam_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtBindParam_pre[hIndex].func;
retVal___ = preHookFunc(&self, &idx, &buffer_type, &buffer, &buffer_len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -17508,9 +19629,9 @@ int HP_SQL_StmtBindParam(struct SqlStmt *self, size_t idx, enum SqlDataType buff
{
retVal___ = HPMHooks.source.SQL.StmtBindParam(self, idx, buffer_type, buffer, buffer_len);
}
- if( HPMHooks.count.HP_SQL_StmtBindParam_post ) {
+ if (HPMHooks.count.HP_SQL_StmtBindParam_post > 0) {
int (*postHookFunc) (int retVal___, struct SqlStmt *self, size_t idx, enum SqlDataType buffer_type, const void *buffer, size_t buffer_len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtBindParam_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtBindParam_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtBindParam_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, idx, buffer_type, buffer, buffer_len);
}
@@ -17520,14 +19641,14 @@ int HP_SQL_StmtBindParam(struct SqlStmt *self, size_t idx, enum SqlDataType buff
int HP_SQL_StmtExecute(struct SqlStmt *self) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_StmtExecute_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtExecute_pre > 0) {
int (*preHookFunc) (struct SqlStmt **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtExecute_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtExecute_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtExecute_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -17535,9 +19656,9 @@ int HP_SQL_StmtExecute(struct SqlStmt *self) {
{
retVal___ = HPMHooks.source.SQL.StmtExecute(self);
}
- if( HPMHooks.count.HP_SQL_StmtExecute_post ) {
+ if (HPMHooks.count.HP_SQL_StmtExecute_post > 0) {
int (*postHookFunc) (int retVal___, struct SqlStmt *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtExecute_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtExecute_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtExecute_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -17547,14 +19668,14 @@ int HP_SQL_StmtExecute(struct SqlStmt *self) {
uint64 HP_SQL_StmtLastInsertId(struct SqlStmt *self) {
int hIndex = 0;
uint64 retVal___ = 0;
- if( HPMHooks.count.HP_SQL_StmtLastInsertId_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtLastInsertId_pre > 0) {
uint64 (*preHookFunc) (struct SqlStmt **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtLastInsertId_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtLastInsertId_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtLastInsertId_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -17562,9 +19683,9 @@ uint64 HP_SQL_StmtLastInsertId(struct SqlStmt *self) {
{
retVal___ = HPMHooks.source.SQL.StmtLastInsertId(self);
}
- if( HPMHooks.count.HP_SQL_StmtLastInsertId_post ) {
+ if (HPMHooks.count.HP_SQL_StmtLastInsertId_post > 0) {
uint64 (*postHookFunc) (uint64 retVal___, struct SqlStmt *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtLastInsertId_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtLastInsertId_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtLastInsertId_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -17574,14 +19695,14 @@ uint64 HP_SQL_StmtLastInsertId(struct SqlStmt *self) {
size_t HP_SQL_StmtNumColumns(struct SqlStmt *self) {
int hIndex = 0;
size_t retVal___ = 0;
- if( HPMHooks.count.HP_SQL_StmtNumColumns_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtNumColumns_pre > 0) {
size_t (*preHookFunc) (struct SqlStmt **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumColumns_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumColumns_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtNumColumns_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -17589,9 +19710,9 @@ size_t HP_SQL_StmtNumColumns(struct SqlStmt *self) {
{
retVal___ = HPMHooks.source.SQL.StmtNumColumns(self);
}
- if( HPMHooks.count.HP_SQL_StmtNumColumns_post ) {
+ if (HPMHooks.count.HP_SQL_StmtNumColumns_post > 0) {
size_t (*postHookFunc) (size_t retVal___, struct SqlStmt *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumColumns_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumColumns_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtNumColumns_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -17601,14 +19722,14 @@ size_t HP_SQL_StmtNumColumns(struct SqlStmt *self) {
int HP_SQL_StmtBindColumn(struct SqlStmt *self, size_t idx, enum SqlDataType buffer_type, void *buffer, size_t buffer_len, uint32 *out_length, int8 *out_is_null) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_StmtBindColumn_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtBindColumn_pre > 0) {
int (*preHookFunc) (struct SqlStmt **self, size_t *idx, enum SqlDataType *buffer_type, void **buffer, size_t *buffer_len, uint32 **out_length, int8 **out_is_null);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtBindColumn_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtBindColumn_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtBindColumn_pre[hIndex].func;
retVal___ = preHookFunc(&self, &idx, &buffer_type, &buffer, &buffer_len, &out_length, &out_is_null);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -17616,9 +19737,9 @@ int HP_SQL_StmtBindColumn(struct SqlStmt *self, size_t idx, enum SqlDataType buf
{
retVal___ = HPMHooks.source.SQL.StmtBindColumn(self, idx, buffer_type, buffer, buffer_len, out_length, out_is_null);
}
- if( HPMHooks.count.HP_SQL_StmtBindColumn_post ) {
+ if (HPMHooks.count.HP_SQL_StmtBindColumn_post > 0) {
int (*postHookFunc) (int retVal___, struct SqlStmt *self, size_t idx, enum SqlDataType buffer_type, void *buffer, size_t buffer_len, uint32 *out_length, int8 *out_is_null);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtBindColumn_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtBindColumn_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtBindColumn_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, idx, buffer_type, buffer, buffer_len, out_length, out_is_null);
}
@@ -17628,14 +19749,14 @@ int HP_SQL_StmtBindColumn(struct SqlStmt *self, size_t idx, enum SqlDataType buf
uint64 HP_SQL_StmtNumRows(struct SqlStmt *self) {
int hIndex = 0;
uint64 retVal___ = 0;
- if( HPMHooks.count.HP_SQL_StmtNumRows_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtNumRows_pre > 0) {
uint64 (*preHookFunc) (struct SqlStmt **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumRows_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumRows_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtNumRows_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -17643,9 +19764,9 @@ uint64 HP_SQL_StmtNumRows(struct SqlStmt *self) {
{
retVal___ = HPMHooks.source.SQL.StmtNumRows(self);
}
- if( HPMHooks.count.HP_SQL_StmtNumRows_post ) {
+ if (HPMHooks.count.HP_SQL_StmtNumRows_post > 0) {
uint64 (*postHookFunc) (uint64 retVal___, struct SqlStmt *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumRows_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumRows_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtNumRows_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -17655,14 +19776,14 @@ uint64 HP_SQL_StmtNumRows(struct SqlStmt *self) {
int HP_SQL_StmtNextRow(struct SqlStmt *self) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_StmtNextRow_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtNextRow_pre > 0) {
int (*preHookFunc) (struct SqlStmt **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNextRow_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNextRow_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtNextRow_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -17670,9 +19791,9 @@ int HP_SQL_StmtNextRow(struct SqlStmt *self) {
{
retVal___ = HPMHooks.source.SQL.StmtNextRow(self);
}
- if( HPMHooks.count.HP_SQL_StmtNextRow_post ) {
+ if (HPMHooks.count.HP_SQL_StmtNextRow_post > 0) {
int (*postHookFunc) (int retVal___, struct SqlStmt *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNextRow_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNextRow_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtNextRow_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -17681,14 +19802,14 @@ int HP_SQL_StmtNextRow(struct SqlStmt *self) {
}
void HP_SQL_StmtFreeResult(struct SqlStmt *self) {
int hIndex = 0;
- if( HPMHooks.count.HP_SQL_StmtFreeResult_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtFreeResult_pre > 0) {
void (*preHookFunc) (struct SqlStmt **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtFreeResult_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtFreeResult_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtFreeResult_pre[hIndex].func;
preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17696,9 +19817,9 @@ void HP_SQL_StmtFreeResult(struct SqlStmt *self) {
{
HPMHooks.source.SQL.StmtFreeResult(self);
}
- if( HPMHooks.count.HP_SQL_StmtFreeResult_post ) {
+ if (HPMHooks.count.HP_SQL_StmtFreeResult_post > 0) {
void (*postHookFunc) (struct SqlStmt *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtFreeResult_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtFreeResult_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtFreeResult_post[hIndex].func;
postHookFunc(self);
}
@@ -17707,14 +19828,14 @@ void HP_SQL_StmtFreeResult(struct SqlStmt *self) {
}
void HP_SQL_StmtFree(struct SqlStmt *self) {
int hIndex = 0;
- if( HPMHooks.count.HP_SQL_StmtFree_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtFree_pre > 0) {
void (*preHookFunc) (struct SqlStmt **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtFree_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtFree_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtFree_pre[hIndex].func;
preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17722,9 +19843,9 @@ void HP_SQL_StmtFree(struct SqlStmt *self) {
{
HPMHooks.source.SQL.StmtFree(self);
}
- if( HPMHooks.count.HP_SQL_StmtFree_post ) {
+ if (HPMHooks.count.HP_SQL_StmtFree_post > 0) {
void (*postHookFunc) (struct SqlStmt *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtFree_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtFree_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtFree_post[hIndex].func;
postHookFunc(self);
}
@@ -17733,14 +19854,14 @@ void HP_SQL_StmtFree(struct SqlStmt *self) {
}
void HP_SQL_StmtShowDebug_(struct SqlStmt *self, const char *debug_file, const unsigned long debug_line) {
int hIndex = 0;
- if( HPMHooks.count.HP_SQL_StmtShowDebug__pre ) {
+ if (HPMHooks.count.HP_SQL_StmtShowDebug__pre > 0) {
void (*preHookFunc) (struct SqlStmt **self, const char **debug_file, const unsigned long *debug_line);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtShowDebug__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtShowDebug__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtShowDebug__pre[hIndex].func;
preHookFunc(&self, &debug_file, &debug_line);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17748,9 +19869,9 @@ void HP_SQL_StmtShowDebug_(struct SqlStmt *self, const char *debug_file, const u
{
HPMHooks.source.SQL.StmtShowDebug_(self, debug_file, debug_line);
}
- if( HPMHooks.count.HP_SQL_StmtShowDebug__post ) {
+ if (HPMHooks.count.HP_SQL_StmtShowDebug__post > 0) {
void (*postHookFunc) (struct SqlStmt *self, const char *debug_file, const unsigned long debug_line);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtShowDebug__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtShowDebug__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtShowDebug__post[hIndex].func;
postHookFunc(self, debug_file, debug_line);
}
@@ -17761,14 +19882,14 @@ void HP_SQL_StmtShowDebug_(struct SqlStmt *self, const char *debug_file, const u
StringBuf* HP_StrBuf_Malloc(void) {
int hIndex = 0;
StringBuf* retVal___ = NULL;
- if( HPMHooks.count.HP_StrBuf_Malloc_pre ) {
+ if (HPMHooks.count.HP_StrBuf_Malloc_pre > 0) {
StringBuf* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Malloc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Malloc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_StrBuf_Malloc_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -17776,9 +19897,9 @@ StringBuf* HP_StrBuf_Malloc(void) {
{
retVal___ = HPMHooks.source.StrBuf.Malloc();
}
- if( HPMHooks.count.HP_StrBuf_Malloc_post ) {
+ if (HPMHooks.count.HP_StrBuf_Malloc_post > 0) {
StringBuf* (*postHookFunc) (StringBuf* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Malloc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Malloc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_StrBuf_Malloc_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -17787,14 +19908,14 @@ StringBuf* HP_StrBuf_Malloc(void) {
}
void HP_StrBuf_Init(StringBuf *self) {
int hIndex = 0;
- if( HPMHooks.count.HP_StrBuf_Init_pre ) {
+ if (HPMHooks.count.HP_StrBuf_Init_pre > 0) {
void (*preHookFunc) (StringBuf **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_StrBuf_Init_pre[hIndex].func;
preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17802,9 +19923,9 @@ void HP_StrBuf_Init(StringBuf *self) {
{
HPMHooks.source.StrBuf.Init(self);
}
- if( HPMHooks.count.HP_StrBuf_Init_post ) {
+ if (HPMHooks.count.HP_StrBuf_Init_post > 0) {
void (*postHookFunc) (StringBuf *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_StrBuf_Init_post[hIndex].func;
postHookFunc(self);
}
@@ -17814,16 +19935,16 @@ void HP_StrBuf_Init(StringBuf *self) {
int HP_StrBuf_Vprintf(StringBuf *self, const char *fmt, va_list args) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_StrBuf_Vprintf_pre ) {
+ if (HPMHooks.count.HP_StrBuf_Vprintf_pre > 0) {
int (*preHookFunc) (StringBuf **self, const char **fmt, va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Vprintf_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Vprintf_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_StrBuf_Vprintf_pre[hIndex].func;
retVal___ = preHookFunc(&self, &fmt, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -17833,9 +19954,9 @@ int HP_StrBuf_Vprintf(StringBuf *self, const char *fmt, va_list args) {
retVal___ = HPMHooks.source.StrBuf.Vprintf(self, fmt, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_StrBuf_Vprintf_post ) {
+ if (HPMHooks.count.HP_StrBuf_Vprintf_post > 0) {
int (*postHookFunc) (int retVal___, StringBuf *self, const char *fmt, va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Vprintf_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Vprintf_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_StrBuf_Vprintf_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, fmt, args___copy);
@@ -17847,14 +19968,14 @@ int HP_StrBuf_Vprintf(StringBuf *self, const char *fmt, va_list args) {
int HP_StrBuf_Append(StringBuf *self, const StringBuf *sbuf) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_StrBuf_Append_pre ) {
+ if (HPMHooks.count.HP_StrBuf_Append_pre > 0) {
int (*preHookFunc) (StringBuf **self, const StringBuf **sbuf);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Append_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Append_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_StrBuf_Append_pre[hIndex].func;
retVal___ = preHookFunc(&self, &sbuf);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -17862,9 +19983,9 @@ int HP_StrBuf_Append(StringBuf *self, const StringBuf *sbuf) {
{
retVal___ = HPMHooks.source.StrBuf.Append(self, sbuf);
}
- if( HPMHooks.count.HP_StrBuf_Append_post ) {
+ if (HPMHooks.count.HP_StrBuf_Append_post > 0) {
int (*postHookFunc) (int retVal___, StringBuf *self, const StringBuf *sbuf);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Append_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Append_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_StrBuf_Append_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, sbuf);
}
@@ -17874,14 +19995,14 @@ int HP_StrBuf_Append(StringBuf *self, const StringBuf *sbuf) {
int HP_StrBuf_AppendStr(StringBuf *self, const char *str) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_StrBuf_AppendStr_pre ) {
+ if (HPMHooks.count.HP_StrBuf_AppendStr_pre > 0) {
int (*preHookFunc) (StringBuf **self, const char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_AppendStr_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_AppendStr_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_StrBuf_AppendStr_pre[hIndex].func;
retVal___ = preHookFunc(&self, &str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -17889,9 +20010,9 @@ int HP_StrBuf_AppendStr(StringBuf *self, const char *str) {
{
retVal___ = HPMHooks.source.StrBuf.AppendStr(self, str);
}
- if( HPMHooks.count.HP_StrBuf_AppendStr_post ) {
+ if (HPMHooks.count.HP_StrBuf_AppendStr_post > 0) {
int (*postHookFunc) (int retVal___, StringBuf *self, const char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_AppendStr_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_AppendStr_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_StrBuf_AppendStr_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, str);
}
@@ -17901,14 +20022,14 @@ int HP_StrBuf_AppendStr(StringBuf *self, const char *str) {
int HP_StrBuf_Length(StringBuf *self) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_StrBuf_Length_pre ) {
+ if (HPMHooks.count.HP_StrBuf_Length_pre > 0) {
int (*preHookFunc) (StringBuf **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Length_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Length_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_StrBuf_Length_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -17916,9 +20037,9 @@ int HP_StrBuf_Length(StringBuf *self) {
{
retVal___ = HPMHooks.source.StrBuf.Length(self);
}
- if( HPMHooks.count.HP_StrBuf_Length_post ) {
+ if (HPMHooks.count.HP_StrBuf_Length_post > 0) {
int (*postHookFunc) (int retVal___, StringBuf *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Length_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Length_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_StrBuf_Length_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -17928,14 +20049,14 @@ int HP_StrBuf_Length(StringBuf *self) {
char* HP_StrBuf_Value(StringBuf *self) {
int hIndex = 0;
char* retVal___ = NULL;
- if( HPMHooks.count.HP_StrBuf_Value_pre ) {
+ if (HPMHooks.count.HP_StrBuf_Value_pre > 0) {
char* (*preHookFunc) (StringBuf **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Value_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Value_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_StrBuf_Value_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -17943,9 +20064,9 @@ char* HP_StrBuf_Value(StringBuf *self) {
{
retVal___ = HPMHooks.source.StrBuf.Value(self);
}
- if( HPMHooks.count.HP_StrBuf_Value_post ) {
+ if (HPMHooks.count.HP_StrBuf_Value_post > 0) {
char* (*postHookFunc) (char* retVal___, StringBuf *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Value_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Value_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_StrBuf_Value_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -17954,14 +20075,14 @@ char* HP_StrBuf_Value(StringBuf *self) {
}
void HP_StrBuf_Clear(StringBuf *self) {
int hIndex = 0;
- if( HPMHooks.count.HP_StrBuf_Clear_pre ) {
+ if (HPMHooks.count.HP_StrBuf_Clear_pre > 0) {
void (*preHookFunc) (StringBuf **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Clear_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Clear_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_StrBuf_Clear_pre[hIndex].func;
preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17969,9 +20090,9 @@ void HP_StrBuf_Clear(StringBuf *self) {
{
HPMHooks.source.StrBuf.Clear(self);
}
- if( HPMHooks.count.HP_StrBuf_Clear_post ) {
+ if (HPMHooks.count.HP_StrBuf_Clear_post > 0) {
void (*postHookFunc) (StringBuf *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Clear_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Clear_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_StrBuf_Clear_post[hIndex].func;
postHookFunc(self);
}
@@ -17980,14 +20101,14 @@ void HP_StrBuf_Clear(StringBuf *self) {
}
void HP_StrBuf_Destroy(StringBuf *self) {
int hIndex = 0;
- if( HPMHooks.count.HP_StrBuf_Destroy_pre ) {
+ if (HPMHooks.count.HP_StrBuf_Destroy_pre > 0) {
void (*preHookFunc) (StringBuf **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Destroy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Destroy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_StrBuf_Destroy_pre[hIndex].func;
preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17995,9 +20116,9 @@ void HP_StrBuf_Destroy(StringBuf *self) {
{
HPMHooks.source.StrBuf.Destroy(self);
}
- if( HPMHooks.count.HP_StrBuf_Destroy_post ) {
+ if (HPMHooks.count.HP_StrBuf_Destroy_post > 0) {
void (*postHookFunc) (StringBuf *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Destroy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Destroy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_StrBuf_Destroy_post[hIndex].func;
postHookFunc(self);
}
@@ -18006,14 +20127,14 @@ void HP_StrBuf_Destroy(StringBuf *self) {
}
void HP_StrBuf_Free(StringBuf *self) {
int hIndex = 0;
- if( HPMHooks.count.HP_StrBuf_Free_pre ) {
+ if (HPMHooks.count.HP_StrBuf_Free_pre > 0) {
void (*preHookFunc) (StringBuf **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Free_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Free_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_StrBuf_Free_pre[hIndex].func;
preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18021,9 +20142,9 @@ void HP_StrBuf_Free(StringBuf *self) {
{
HPMHooks.source.StrBuf.Free(self);
}
- if( HPMHooks.count.HP_StrBuf_Free_post ) {
+ if (HPMHooks.count.HP_StrBuf_Free_post > 0) {
void (*postHookFunc) (StringBuf *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Free_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Free_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_StrBuf_Free_post[hIndex].func;
postHookFunc(self);
}
@@ -18034,14 +20155,14 @@ void HP_StrBuf_Free(StringBuf *self) {
char* HP_strlib_jstrescape(char *pt) {
int hIndex = 0;
char* retVal___ = NULL;
- if( HPMHooks.count.HP_strlib_jstrescape_pre ) {
+ if (HPMHooks.count.HP_strlib_jstrescape_pre > 0) {
char* (*preHookFunc) (char **pt);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jstrescape_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jstrescape_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_jstrescape_pre[hIndex].func;
retVal___ = preHookFunc(&pt);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18049,9 +20170,9 @@ char* HP_strlib_jstrescape(char *pt) {
{
retVal___ = HPMHooks.source.strlib.jstrescape(pt);
}
- if( HPMHooks.count.HP_strlib_jstrescape_post ) {
+ if (HPMHooks.count.HP_strlib_jstrescape_post > 0) {
char* (*postHookFunc) (char* retVal___, char *pt);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jstrescape_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jstrescape_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_jstrescape_post[hIndex].func;
retVal___ = postHookFunc(retVal___, pt);
}
@@ -18061,14 +20182,14 @@ char* HP_strlib_jstrescape(char *pt) {
char* HP_strlib_jstrescapecpy(char *pt, const char *spt) {
int hIndex = 0;
char* retVal___ = NULL;
- if( HPMHooks.count.HP_strlib_jstrescapecpy_pre ) {
+ if (HPMHooks.count.HP_strlib_jstrescapecpy_pre > 0) {
char* (*preHookFunc) (char **pt, const char **spt);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jstrescapecpy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jstrescapecpy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_jstrescapecpy_pre[hIndex].func;
retVal___ = preHookFunc(&pt, &spt);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18076,9 +20197,9 @@ char* HP_strlib_jstrescapecpy(char *pt, const char *spt) {
{
retVal___ = HPMHooks.source.strlib.jstrescapecpy(pt, spt);
}
- if( HPMHooks.count.HP_strlib_jstrescapecpy_post ) {
+ if (HPMHooks.count.HP_strlib_jstrescapecpy_post > 0) {
char* (*postHookFunc) (char* retVal___, char *pt, const char *spt);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jstrescapecpy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jstrescapecpy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_jstrescapecpy_post[hIndex].func;
retVal___ = postHookFunc(retVal___, pt, spt);
}
@@ -18088,14 +20209,14 @@ char* HP_strlib_jstrescapecpy(char *pt, const char *spt) {
int HP_strlib_jmemescapecpy(char *pt, const char *spt, int size) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_strlib_jmemescapecpy_pre ) {
+ if (HPMHooks.count.HP_strlib_jmemescapecpy_pre > 0) {
int (*preHookFunc) (char **pt, const char **spt, int *size);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jmemescapecpy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jmemescapecpy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_jmemescapecpy_pre[hIndex].func;
retVal___ = preHookFunc(&pt, &spt, &size);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18103,9 +20224,9 @@ int HP_strlib_jmemescapecpy(char *pt, const char *spt, int size) {
{
retVal___ = HPMHooks.source.strlib.jmemescapecpy(pt, spt, size);
}
- if( HPMHooks.count.HP_strlib_jmemescapecpy_post ) {
+ if (HPMHooks.count.HP_strlib_jmemescapecpy_post > 0) {
int (*postHookFunc) (int retVal___, char *pt, const char *spt, int size);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jmemescapecpy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jmemescapecpy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_jmemescapecpy_post[hIndex].func;
retVal___ = postHookFunc(retVal___, pt, spt, size);
}
@@ -18115,14 +20236,14 @@ int HP_strlib_jmemescapecpy(char *pt, const char *spt, int size) {
int HP_strlib_remove_control_chars_(char *str) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_strlib_remove_control_chars__pre ) {
+ if (HPMHooks.count.HP_strlib_remove_control_chars__pre > 0) {
int (*preHookFunc) (char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_remove_control_chars__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_remove_control_chars__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_remove_control_chars__pre[hIndex].func;
retVal___ = preHookFunc(&str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18130,9 +20251,9 @@ int HP_strlib_remove_control_chars_(char *str) {
{
retVal___ = HPMHooks.source.strlib.remove_control_chars_(str);
}
- if( HPMHooks.count.HP_strlib_remove_control_chars__post ) {
+ if (HPMHooks.count.HP_strlib_remove_control_chars__post > 0) {
int (*postHookFunc) (int retVal___, char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_remove_control_chars__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_remove_control_chars__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_remove_control_chars__post[hIndex].func;
retVal___ = postHookFunc(retVal___, str);
}
@@ -18142,14 +20263,14 @@ int HP_strlib_remove_control_chars_(char *str) {
char* HP_strlib_trim_(char *str) {
int hIndex = 0;
char* retVal___ = NULL;
- if( HPMHooks.count.HP_strlib_trim__pre ) {
+ if (HPMHooks.count.HP_strlib_trim__pre > 0) {
char* (*preHookFunc) (char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_trim__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_trim__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_trim__pre[hIndex].func;
retVal___ = preHookFunc(&str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18157,9 +20278,9 @@ char* HP_strlib_trim_(char *str) {
{
retVal___ = HPMHooks.source.strlib.trim_(str);
}
- if( HPMHooks.count.HP_strlib_trim__post ) {
+ if (HPMHooks.count.HP_strlib_trim__post > 0) {
char* (*postHookFunc) (char* retVal___, char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_trim__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_trim__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_trim__post[hIndex].func;
retVal___ = postHookFunc(retVal___, str);
}
@@ -18169,14 +20290,14 @@ char* HP_strlib_trim_(char *str) {
char* HP_strlib_normalize_name_(char *str, const char *delims) {
int hIndex = 0;
char* retVal___ = NULL;
- if( HPMHooks.count.HP_strlib_normalize_name__pre ) {
+ if (HPMHooks.count.HP_strlib_normalize_name__pre > 0) {
char* (*preHookFunc) (char **str, const char **delims);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_normalize_name__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_normalize_name__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_normalize_name__pre[hIndex].func;
retVal___ = preHookFunc(&str, &delims);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18184,9 +20305,9 @@ char* HP_strlib_normalize_name_(char *str, const char *delims) {
{
retVal___ = HPMHooks.source.strlib.normalize_name_(str, delims);
}
- if( HPMHooks.count.HP_strlib_normalize_name__post ) {
+ if (HPMHooks.count.HP_strlib_normalize_name__post > 0) {
char* (*postHookFunc) (char* retVal___, char *str, const char *delims);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_normalize_name__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_normalize_name__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_normalize_name__post[hIndex].func;
retVal___ = postHookFunc(retVal___, str, delims);
}
@@ -18196,14 +20317,14 @@ char* HP_strlib_normalize_name_(char *str, const char *delims) {
const char* HP_strlib_stristr_(const char *haystack, const char *needle) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_strlib_stristr__pre ) {
+ if (HPMHooks.count.HP_strlib_stristr__pre > 0) {
const char* (*preHookFunc) (const char **haystack, const char **needle);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_stristr__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_stristr__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_stristr__pre[hIndex].func;
retVal___ = preHookFunc(&haystack, &needle);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18211,9 +20332,9 @@ const char* HP_strlib_stristr_(const char *haystack, const char *needle) {
{
retVal___ = HPMHooks.source.strlib.stristr_(haystack, needle);
}
- if( HPMHooks.count.HP_strlib_stristr__post ) {
+ if (HPMHooks.count.HP_strlib_stristr__post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *haystack, const char *needle);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_stristr__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_stristr__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_stristr__post[hIndex].func;
retVal___ = postHookFunc(retVal___, haystack, needle);
}
@@ -18223,14 +20344,14 @@ const char* HP_strlib_stristr_(const char *haystack, const char *needle) {
size_t HP_strlib_strnlen_(const char *string, size_t maxlen) {
int hIndex = 0;
size_t retVal___ = 0;
- if( HPMHooks.count.HP_strlib_strnlen__pre ) {
+ if (HPMHooks.count.HP_strlib_strnlen__pre > 0) {
size_t (*preHookFunc) (const char **string, size_t *maxlen);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strnlen__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strnlen__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_strnlen__pre[hIndex].func;
retVal___ = preHookFunc(&string, &maxlen);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18238,9 +20359,9 @@ size_t HP_strlib_strnlen_(const char *string, size_t maxlen) {
{
retVal___ = HPMHooks.source.strlib.strnlen_(string, maxlen);
}
- if( HPMHooks.count.HP_strlib_strnlen__post ) {
+ if (HPMHooks.count.HP_strlib_strnlen__post > 0) {
size_t (*postHookFunc) (size_t retVal___, const char *string, size_t maxlen);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strnlen__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strnlen__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_strnlen__post[hIndex].func;
retVal___ = postHookFunc(retVal___, string, maxlen);
}
@@ -18250,14 +20371,14 @@ size_t HP_strlib_strnlen_(const char *string, size_t maxlen) {
char* HP_strlib_strtok_r_(char *s1, const char *s2, char **lasts) {
int hIndex = 0;
char* retVal___ = NULL;
- if( HPMHooks.count.HP_strlib_strtok_r__pre ) {
+ if (HPMHooks.count.HP_strlib_strtok_r__pre > 0) {
char* (*preHookFunc) (char **s1, const char **s2, char ***lasts);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strtok_r__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strtok_r__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_strtok_r__pre[hIndex].func;
retVal___ = preHookFunc(&s1, &s2, &lasts);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18265,9 +20386,9 @@ char* HP_strlib_strtok_r_(char *s1, const char *s2, char **lasts) {
{
retVal___ = HPMHooks.source.strlib.strtok_r_(s1, s2, lasts);
}
- if( HPMHooks.count.HP_strlib_strtok_r__post ) {
+ if (HPMHooks.count.HP_strlib_strtok_r__post > 0) {
char* (*postHookFunc) (char* retVal___, char *s1, const char *s2, char **lasts);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strtok_r__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strtok_r__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_strtok_r__post[hIndex].func;
retVal___ = postHookFunc(retVal___, s1, s2, lasts);
}
@@ -18277,14 +20398,14 @@ char* HP_strlib_strtok_r_(char *s1, const char *s2, char **lasts) {
int HP_strlib_e_mail_check_(char *email) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_strlib_e_mail_check__pre ) {
+ if (HPMHooks.count.HP_strlib_e_mail_check__pre > 0) {
int (*preHookFunc) (char **email);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_e_mail_check__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_e_mail_check__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_e_mail_check__pre[hIndex].func;
retVal___ = preHookFunc(&email);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18292,9 +20413,9 @@ int HP_strlib_e_mail_check_(char *email) {
{
retVal___ = HPMHooks.source.strlib.e_mail_check_(email);
}
- if( HPMHooks.count.HP_strlib_e_mail_check__post ) {
+ if (HPMHooks.count.HP_strlib_e_mail_check__post > 0) {
int (*postHookFunc) (int retVal___, char *email);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_e_mail_check__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_e_mail_check__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_e_mail_check__post[hIndex].func;
retVal___ = postHookFunc(retVal___, email);
}
@@ -18304,14 +20425,14 @@ int HP_strlib_e_mail_check_(char *email) {
int HP_strlib_config_switch_(const char *str) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_strlib_config_switch__pre ) {
+ if (HPMHooks.count.HP_strlib_config_switch__pre > 0) {
int (*preHookFunc) (const char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_config_switch__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_config_switch__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_config_switch__pre[hIndex].func;
retVal___ = preHookFunc(&str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18319,9 +20440,9 @@ int HP_strlib_config_switch_(const char *str) {
{
retVal___ = HPMHooks.source.strlib.config_switch_(str);
}
- if( HPMHooks.count.HP_strlib_config_switch__post ) {
+ if (HPMHooks.count.HP_strlib_config_switch__post > 0) {
int (*postHookFunc) (int retVal___, const char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_config_switch__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_config_switch__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_config_switch__post[hIndex].func;
retVal___ = postHookFunc(retVal___, str);
}
@@ -18331,14 +20452,14 @@ int HP_strlib_config_switch_(const char *str) {
char* HP_strlib_safestrncpy_(char *dst, const char *src, size_t n) {
int hIndex = 0;
char* retVal___ = NULL;
- if( HPMHooks.count.HP_strlib_safestrncpy__pre ) {
+ if (HPMHooks.count.HP_strlib_safestrncpy__pre > 0) {
char* (*preHookFunc) (char **dst, const char **src, size_t *n);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_safestrncpy__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_safestrncpy__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_safestrncpy__pre[hIndex].func;
retVal___ = preHookFunc(&dst, &src, &n);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18346,9 +20467,9 @@ char* HP_strlib_safestrncpy_(char *dst, const char *src, size_t n) {
{
retVal___ = HPMHooks.source.strlib.safestrncpy_(dst, src, n);
}
- if( HPMHooks.count.HP_strlib_safestrncpy__post ) {
+ if (HPMHooks.count.HP_strlib_safestrncpy__post > 0) {
char* (*postHookFunc) (char* retVal___, char *dst, const char *src, size_t n);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_safestrncpy__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_safestrncpy__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_safestrncpy__post[hIndex].func;
retVal___ = postHookFunc(retVal___, dst, src, n);
}
@@ -18358,14 +20479,14 @@ char* HP_strlib_safestrncpy_(char *dst, const char *src, size_t n) {
size_t HP_strlib_safestrnlen_(const char *string, size_t maxlen) {
int hIndex = 0;
size_t retVal___ = 0;
- if( HPMHooks.count.HP_strlib_safestrnlen__pre ) {
+ if (HPMHooks.count.HP_strlib_safestrnlen__pre > 0) {
size_t (*preHookFunc) (const char **string, size_t *maxlen);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_safestrnlen__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_safestrnlen__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_safestrnlen__pre[hIndex].func;
retVal___ = preHookFunc(&string, &maxlen);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18373,9 +20494,9 @@ size_t HP_strlib_safestrnlen_(const char *string, size_t maxlen) {
{
retVal___ = HPMHooks.source.strlib.safestrnlen_(string, maxlen);
}
- if( HPMHooks.count.HP_strlib_safestrnlen__post ) {
+ if (HPMHooks.count.HP_strlib_safestrnlen__post > 0) {
size_t (*postHookFunc) (size_t retVal___, const char *string, size_t maxlen);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_safestrnlen__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_safestrnlen__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_safestrnlen__post[hIndex].func;
retVal___ = postHookFunc(retVal___, string, maxlen);
}
@@ -18385,14 +20506,14 @@ size_t HP_strlib_safestrnlen_(const char *string, size_t maxlen) {
int HP_strlib_strline_(const char *str, size_t pos) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_strlib_strline__pre ) {
+ if (HPMHooks.count.HP_strlib_strline__pre > 0) {
int (*preHookFunc) (const char **str, size_t *pos);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strline__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strline__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_strline__pre[hIndex].func;
retVal___ = preHookFunc(&str, &pos);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18400,9 +20521,9 @@ int HP_strlib_strline_(const char *str, size_t pos) {
{
retVal___ = HPMHooks.source.strlib.strline_(str, pos);
}
- if( HPMHooks.count.HP_strlib_strline__post ) {
+ if (HPMHooks.count.HP_strlib_strline__post > 0) {
int (*postHookFunc) (int retVal___, const char *str, size_t pos);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strline__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strline__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_strline__post[hIndex].func;
retVal___ = postHookFunc(retVal___, str, pos);
}
@@ -18412,14 +20533,14 @@ int HP_strlib_strline_(const char *str, size_t pos) {
bool HP_strlib_bin2hex_(char *output, const unsigned char *input, size_t count) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_strlib_bin2hex__pre ) {
+ if (HPMHooks.count.HP_strlib_bin2hex__pre > 0) {
bool (*preHookFunc) (char **output, const unsigned char **input, size_t *count);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_bin2hex__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_bin2hex__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_bin2hex__pre[hIndex].func;
retVal___ = preHookFunc(&output, &input, &count);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18427,9 +20548,9 @@ bool HP_strlib_bin2hex_(char *output, const unsigned char *input, size_t count)
{
retVal___ = HPMHooks.source.strlib.bin2hex_(output, input, count);
}
- if( HPMHooks.count.HP_strlib_bin2hex__post ) {
+ if (HPMHooks.count.HP_strlib_bin2hex__post > 0) {
bool (*postHookFunc) (bool retVal___, char *output, const unsigned char *input, size_t count);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_bin2hex__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_bin2hex__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_bin2hex__post[hIndex].func;
retVal___ = postHookFunc(retVal___, output, input, count);
}
@@ -18440,14 +20561,14 @@ bool HP_strlib_bin2hex_(char *output, const unsigned char *input, size_t count)
int HP_sv_parse_next(struct s_svstate *svstate) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sv_parse_next_pre ) {
+ if (HPMHooks.count.HP_sv_parse_next_pre > 0) {
int (*preHookFunc) (struct s_svstate **svstate);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_parse_next_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_parse_next_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sv_parse_next_pre[hIndex].func;
retVal___ = preHookFunc(&svstate);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18455,9 +20576,9 @@ int HP_sv_parse_next(struct s_svstate *svstate) {
{
retVal___ = HPMHooks.source.sv.parse_next(svstate);
}
- if( HPMHooks.count.HP_sv_parse_next_post ) {
+ if (HPMHooks.count.HP_sv_parse_next_post > 0) {
int (*postHookFunc) (int retVal___, struct s_svstate *svstate);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_parse_next_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_parse_next_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sv_parse_next_post[hIndex].func;
retVal___ = postHookFunc(retVal___, svstate);
}
@@ -18467,14 +20588,14 @@ int HP_sv_parse_next(struct s_svstate *svstate) {
int HP_sv_parse(const char *str, int len, int startoff, char delim, int *out_pos, int npos, enum e_svopt opt) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sv_parse_pre ) {
+ if (HPMHooks.count.HP_sv_parse_pre > 0) {
int (*preHookFunc) (const char **str, int *len, int *startoff, char *delim, int **out_pos, int *npos, enum e_svopt *opt);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_parse_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_parse_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sv_parse_pre[hIndex].func;
retVal___ = preHookFunc(&str, &len, &startoff, &delim, &out_pos, &npos, &opt);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18482,9 +20603,9 @@ int HP_sv_parse(const char *str, int len, int startoff, char delim, int *out_pos
{
retVal___ = HPMHooks.source.sv.parse(str, len, startoff, delim, out_pos, npos, opt);
}
- if( HPMHooks.count.HP_sv_parse_post ) {
+ if (HPMHooks.count.HP_sv_parse_post > 0) {
int (*postHookFunc) (int retVal___, const char *str, int len, int startoff, char delim, int *out_pos, int npos, enum e_svopt opt);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_parse_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_parse_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sv_parse_post[hIndex].func;
retVal___ = postHookFunc(retVal___, str, len, startoff, delim, out_pos, npos, opt);
}
@@ -18494,14 +20615,14 @@ int HP_sv_parse(const char *str, int len, int startoff, char delim, int *out_pos
int HP_sv_split(char *str, int len, int startoff, char delim, char **out_fields, int nfields, enum e_svopt opt) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sv_split_pre ) {
+ if (HPMHooks.count.HP_sv_split_pre > 0) {
int (*preHookFunc) (char **str, int *len, int *startoff, char *delim, char ***out_fields, int *nfields, enum e_svopt *opt);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_split_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_split_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sv_split_pre[hIndex].func;
retVal___ = preHookFunc(&str, &len, &startoff, &delim, &out_fields, &nfields, &opt);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18509,9 +20630,9 @@ int HP_sv_split(char *str, int len, int startoff, char delim, char **out_fields,
{
retVal___ = HPMHooks.source.sv.split(str, len, startoff, delim, out_fields, nfields, opt);
}
- if( HPMHooks.count.HP_sv_split_post ) {
+ if (HPMHooks.count.HP_sv_split_post > 0) {
int (*postHookFunc) (int retVal___, char *str, int len, int startoff, char delim, char **out_fields, int nfields, enum e_svopt opt);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_split_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_split_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sv_split_post[hIndex].func;
retVal___ = postHookFunc(retVal___, str, len, startoff, delim, out_fields, nfields, opt);
}
@@ -18521,14 +20642,14 @@ int HP_sv_split(char *str, int len, int startoff, char delim, char **out_fields,
size_t HP_sv_escape_c(char *out_dest, const char *src, size_t len, const char *escapes) {
int hIndex = 0;
size_t retVal___ = 0;
- if( HPMHooks.count.HP_sv_escape_c_pre ) {
+ if (HPMHooks.count.HP_sv_escape_c_pre > 0) {
size_t (*preHookFunc) (char **out_dest, const char **src, size_t *len, const char **escapes);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_escape_c_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_escape_c_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sv_escape_c_pre[hIndex].func;
retVal___ = preHookFunc(&out_dest, &src, &len, &escapes);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18536,9 +20657,9 @@ size_t HP_sv_escape_c(char *out_dest, const char *src, size_t len, const char *e
{
retVal___ = HPMHooks.source.sv.escape_c(out_dest, src, len, escapes);
}
- if( HPMHooks.count.HP_sv_escape_c_post ) {
+ if (HPMHooks.count.HP_sv_escape_c_post > 0) {
size_t (*postHookFunc) (size_t retVal___, char *out_dest, const char *src, size_t len, const char *escapes);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_escape_c_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_escape_c_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sv_escape_c_post[hIndex].func;
retVal___ = postHookFunc(retVal___, out_dest, src, len, escapes);
}
@@ -18548,14 +20669,14 @@ size_t HP_sv_escape_c(char *out_dest, const char *src, size_t len, const char *e
size_t HP_sv_unescape_c(char *out_dest, const char *src, size_t len) {
int hIndex = 0;
size_t retVal___ = 0;
- if( HPMHooks.count.HP_sv_unescape_c_pre ) {
+ if (HPMHooks.count.HP_sv_unescape_c_pre > 0) {
size_t (*preHookFunc) (char **out_dest, const char **src, size_t *len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_unescape_c_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_unescape_c_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sv_unescape_c_pre[hIndex].func;
retVal___ = preHookFunc(&out_dest, &src, &len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18563,9 +20684,9 @@ size_t HP_sv_unescape_c(char *out_dest, const char *src, size_t len) {
{
retVal___ = HPMHooks.source.sv.unescape_c(out_dest, src, len);
}
- if( HPMHooks.count.HP_sv_unescape_c_post ) {
+ if (HPMHooks.count.HP_sv_unescape_c_post > 0) {
size_t (*postHookFunc) (size_t retVal___, char *out_dest, const char *src, size_t len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_unescape_c_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_unescape_c_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sv_unescape_c_post[hIndex].func;
retVal___ = postHookFunc(retVal___, out_dest, src, len);
}
@@ -18575,14 +20696,14 @@ size_t HP_sv_unescape_c(char *out_dest, const char *src, size_t len) {
const char* HP_sv_skip_escaped_c(const char *p) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sv_skip_escaped_c_pre ) {
+ if (HPMHooks.count.HP_sv_skip_escaped_c_pre > 0) {
const char* (*preHookFunc) (const char **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_skip_escaped_c_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_skip_escaped_c_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sv_skip_escaped_c_pre[hIndex].func;
retVal___ = preHookFunc(&p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18590,9 +20711,9 @@ const char* HP_sv_skip_escaped_c(const char *p) {
{
retVal___ = HPMHooks.source.sv.skip_escaped_c(p);
}
- if( HPMHooks.count.HP_sv_skip_escaped_c_post ) {
+ if (HPMHooks.count.HP_sv_skip_escaped_c_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_skip_escaped_c_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_skip_escaped_c_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sv_skip_escaped_c_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p);
}
@@ -18602,14 +20723,14 @@ const char* HP_sv_skip_escaped_c(const char *p) {
bool HP_sv_readdb(const char *directory, const char *filename, char delim, int mincols, int maxcols, int maxrows, bool ( *parseproc ) (char *fields[], int columns, int current)) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_sv_readdb_pre ) {
+ if (HPMHooks.count.HP_sv_readdb_pre > 0) {
bool (*preHookFunc) (const char **directory, const char **filename, char *delim, int *mincols, int *maxcols, int *maxrows, bool ( **parseproc ) (char *fields[], int columns, int current));
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_readdb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_readdb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sv_readdb_pre[hIndex].func;
retVal___ = preHookFunc(&directory, &filename, &delim, &mincols, &maxcols, &maxrows, &parseproc);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18617,9 +20738,9 @@ bool HP_sv_readdb(const char *directory, const char *filename, char delim, int m
{
retVal___ = HPMHooks.source.sv.readdb(directory, filename, delim, mincols, maxcols, maxrows, parseproc);
}
- if( HPMHooks.count.HP_sv_readdb_post ) {
+ if (HPMHooks.count.HP_sv_readdb_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *directory, const char *filename, char delim, int mincols, int maxcols, int maxrows, bool ( *parseproc ) (char *fields[], int columns, int current));
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_readdb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_readdb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sv_readdb_post[hIndex].func;
retVal___ = postHookFunc(retVal___, directory, filename, delim, mincols, maxcols, maxrows, parseproc);
}
@@ -18630,14 +20751,14 @@ bool HP_sv_readdb(const char *directory, const char *filename, char delim, int m
int HP_sysinfo_getpagesize(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sysinfo_getpagesize_pre ) {
+ if (HPMHooks.count.HP_sysinfo_getpagesize_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_getpagesize_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_getpagesize_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_getpagesize_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18645,9 +20766,9 @@ int HP_sysinfo_getpagesize(void) {
{
retVal___ = HPMHooks.source.sysinfo.getpagesize();
}
- if( HPMHooks.count.HP_sysinfo_getpagesize_post ) {
+ if (HPMHooks.count.HP_sysinfo_getpagesize_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_getpagesize_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_getpagesize_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_getpagesize_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -18657,14 +20778,14 @@ int HP_sysinfo_getpagesize(void) {
const char* HP_sysinfo_platform(void) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sysinfo_platform_pre ) {
+ if (HPMHooks.count.HP_sysinfo_platform_pre > 0) {
const char* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_platform_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_platform_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_platform_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18672,9 +20793,9 @@ const char* HP_sysinfo_platform(void) {
{
retVal___ = HPMHooks.source.sysinfo.platform();
}
- if( HPMHooks.count.HP_sysinfo_platform_post ) {
+ if (HPMHooks.count.HP_sysinfo_platform_post > 0) {
const char* (*postHookFunc) (const char* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_platform_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_platform_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_platform_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -18684,14 +20805,14 @@ const char* HP_sysinfo_platform(void) {
const char* HP_sysinfo_osversion(void) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sysinfo_osversion_pre ) {
+ if (HPMHooks.count.HP_sysinfo_osversion_pre > 0) {
const char* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_osversion_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_osversion_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_osversion_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18699,9 +20820,9 @@ const char* HP_sysinfo_osversion(void) {
{
retVal___ = HPMHooks.source.sysinfo.osversion();
}
- if( HPMHooks.count.HP_sysinfo_osversion_post ) {
+ if (HPMHooks.count.HP_sysinfo_osversion_post > 0) {
const char* (*postHookFunc) (const char* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_osversion_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_osversion_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_osversion_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -18711,14 +20832,14 @@ const char* HP_sysinfo_osversion(void) {
const char* HP_sysinfo_cpu(void) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sysinfo_cpu_pre ) {
+ if (HPMHooks.count.HP_sysinfo_cpu_pre > 0) {
const char* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cpu_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cpu_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_cpu_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18726,9 +20847,9 @@ const char* HP_sysinfo_cpu(void) {
{
retVal___ = HPMHooks.source.sysinfo.cpu();
}
- if( HPMHooks.count.HP_sysinfo_cpu_post ) {
+ if (HPMHooks.count.HP_sysinfo_cpu_post > 0) {
const char* (*postHookFunc) (const char* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cpu_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cpu_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_cpu_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -18738,14 +20859,14 @@ const char* HP_sysinfo_cpu(void) {
int HP_sysinfo_cpucores(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sysinfo_cpucores_pre ) {
+ if (HPMHooks.count.HP_sysinfo_cpucores_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cpucores_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cpucores_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_cpucores_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18753,9 +20874,9 @@ int HP_sysinfo_cpucores(void) {
{
retVal___ = HPMHooks.source.sysinfo.cpucores();
}
- if( HPMHooks.count.HP_sysinfo_cpucores_post ) {
+ if (HPMHooks.count.HP_sysinfo_cpucores_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cpucores_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cpucores_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_cpucores_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -18765,14 +20886,14 @@ int HP_sysinfo_cpucores(void) {
const char* HP_sysinfo_arch(void) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sysinfo_arch_pre ) {
+ if (HPMHooks.count.HP_sysinfo_arch_pre > 0) {
const char* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_arch_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_arch_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_arch_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18780,9 +20901,9 @@ const char* HP_sysinfo_arch(void) {
{
retVal___ = HPMHooks.source.sysinfo.arch();
}
- if( HPMHooks.count.HP_sysinfo_arch_post ) {
+ if (HPMHooks.count.HP_sysinfo_arch_post > 0) {
const char* (*postHookFunc) (const char* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_arch_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_arch_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_arch_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -18792,14 +20913,14 @@ const char* HP_sysinfo_arch(void) {
bool HP_sysinfo_is64bit(void) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_sysinfo_is64bit_pre ) {
+ if (HPMHooks.count.HP_sysinfo_is64bit_pre > 0) {
bool (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_is64bit_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_is64bit_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_is64bit_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18807,9 +20928,9 @@ bool HP_sysinfo_is64bit(void) {
{
retVal___ = HPMHooks.source.sysinfo.is64bit();
}
- if( HPMHooks.count.HP_sysinfo_is64bit_post ) {
+ if (HPMHooks.count.HP_sysinfo_is64bit_post > 0) {
bool (*postHookFunc) (bool retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_is64bit_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_is64bit_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_is64bit_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -18819,14 +20940,14 @@ bool HP_sysinfo_is64bit(void) {
const char* HP_sysinfo_compiler(void) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sysinfo_compiler_pre ) {
+ if (HPMHooks.count.HP_sysinfo_compiler_pre > 0) {
const char* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_compiler_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_compiler_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_compiler_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18834,9 +20955,9 @@ const char* HP_sysinfo_compiler(void) {
{
retVal___ = HPMHooks.source.sysinfo.compiler();
}
- if( HPMHooks.count.HP_sysinfo_compiler_post ) {
+ if (HPMHooks.count.HP_sysinfo_compiler_post > 0) {
const char* (*postHookFunc) (const char* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_compiler_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_compiler_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_compiler_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -18846,14 +20967,14 @@ const char* HP_sysinfo_compiler(void) {
const char* HP_sysinfo_cflags(void) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sysinfo_cflags_pre ) {
+ if (HPMHooks.count.HP_sysinfo_cflags_pre > 0) {
const char* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cflags_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cflags_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_cflags_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18861,9 +20982,9 @@ const char* HP_sysinfo_cflags(void) {
{
retVal___ = HPMHooks.source.sysinfo.cflags();
}
- if( HPMHooks.count.HP_sysinfo_cflags_post ) {
+ if (HPMHooks.count.HP_sysinfo_cflags_post > 0) {
const char* (*postHookFunc) (const char* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cflags_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cflags_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_cflags_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -18873,14 +20994,14 @@ const char* HP_sysinfo_cflags(void) {
const char* HP_sysinfo_time(void) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sysinfo_time_pre ) {
+ if (HPMHooks.count.HP_sysinfo_time_pre > 0) {
const char* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_time_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_time_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_time_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18888,9 +21009,9 @@ const char* HP_sysinfo_time(void) {
{
retVal___ = HPMHooks.source.sysinfo.time();
}
- if( HPMHooks.count.HP_sysinfo_time_post ) {
+ if (HPMHooks.count.HP_sysinfo_time_post > 0) {
const char* (*postHookFunc) (const char* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_time_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_time_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_time_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -18900,14 +21021,14 @@ const char* HP_sysinfo_time(void) {
const char* HP_sysinfo_vcstype(void) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sysinfo_vcstype_pre ) {
+ if (HPMHooks.count.HP_sysinfo_vcstype_pre > 0) {
const char* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcstype_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcstype_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_vcstype_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18915,9 +21036,9 @@ const char* HP_sysinfo_vcstype(void) {
{
retVal___ = HPMHooks.source.sysinfo.vcstype();
}
- if( HPMHooks.count.HP_sysinfo_vcstype_post ) {
+ if (HPMHooks.count.HP_sysinfo_vcstype_post > 0) {
const char* (*postHookFunc) (const char* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcstype_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcstype_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_vcstype_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -18927,14 +21048,14 @@ const char* HP_sysinfo_vcstype(void) {
int HP_sysinfo_vcstypeid(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sysinfo_vcstypeid_pre ) {
+ if (HPMHooks.count.HP_sysinfo_vcstypeid_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcstypeid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcstypeid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_vcstypeid_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18942,9 +21063,9 @@ int HP_sysinfo_vcstypeid(void) {
{
retVal___ = HPMHooks.source.sysinfo.vcstypeid();
}
- if( HPMHooks.count.HP_sysinfo_vcstypeid_post ) {
+ if (HPMHooks.count.HP_sysinfo_vcstypeid_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcstypeid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcstypeid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_vcstypeid_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -18954,14 +21075,14 @@ int HP_sysinfo_vcstypeid(void) {
const char* HP_sysinfo_vcsrevision_src(void) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sysinfo_vcsrevision_src_pre ) {
+ if (HPMHooks.count.HP_sysinfo_vcsrevision_src_pre > 0) {
const char* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_src_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_src_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_vcsrevision_src_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18969,9 +21090,9 @@ const char* HP_sysinfo_vcsrevision_src(void) {
{
retVal___ = HPMHooks.source.sysinfo.vcsrevision_src();
}
- if( HPMHooks.count.HP_sysinfo_vcsrevision_src_post ) {
+ if (HPMHooks.count.HP_sysinfo_vcsrevision_src_post > 0) {
const char* (*postHookFunc) (const char* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_src_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_src_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_vcsrevision_src_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -18981,14 +21102,14 @@ const char* HP_sysinfo_vcsrevision_src(void) {
const char* HP_sysinfo_vcsrevision_scripts(void) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sysinfo_vcsrevision_scripts_pre ) {
+ if (HPMHooks.count.HP_sysinfo_vcsrevision_scripts_pre > 0) {
const char* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_scripts_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_scripts_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_vcsrevision_scripts_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18996,9 +21117,9 @@ const char* HP_sysinfo_vcsrevision_scripts(void) {
{
retVal___ = HPMHooks.source.sysinfo.vcsrevision_scripts();
}
- if( HPMHooks.count.HP_sysinfo_vcsrevision_scripts_post ) {
+ if (HPMHooks.count.HP_sysinfo_vcsrevision_scripts_post > 0) {
const char* (*postHookFunc) (const char* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_scripts_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_scripts_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_vcsrevision_scripts_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -19007,14 +21128,14 @@ const char* HP_sysinfo_vcsrevision_scripts(void) {
}
void HP_sysinfo_vcsrevision_reload(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_sysinfo_vcsrevision_reload_pre ) {
+ if (HPMHooks.count.HP_sysinfo_vcsrevision_reload_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_reload_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_reload_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_vcsrevision_reload_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19022,9 +21143,9 @@ void HP_sysinfo_vcsrevision_reload(void) {
{
HPMHooks.source.sysinfo.vcsrevision_reload();
}
- if( HPMHooks.count.HP_sysinfo_vcsrevision_reload_post ) {
+ if (HPMHooks.count.HP_sysinfo_vcsrevision_reload_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_reload_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_reload_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_vcsrevision_reload_post[hIndex].func;
postHookFunc();
}
@@ -19034,14 +21155,14 @@ void HP_sysinfo_vcsrevision_reload(void) {
bool HP_sysinfo_is_superuser(void) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_sysinfo_is_superuser_pre ) {
+ if (HPMHooks.count.HP_sysinfo_is_superuser_pre > 0) {
bool (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_is_superuser_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_is_superuser_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_is_superuser_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -19049,9 +21170,9 @@ bool HP_sysinfo_is_superuser(void) {
{
retVal___ = HPMHooks.source.sysinfo.is_superuser();
}
- if( HPMHooks.count.HP_sysinfo_is_superuser_post ) {
+ if (HPMHooks.count.HP_sysinfo_is_superuser_post > 0) {
bool (*postHookFunc) (bool retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_is_superuser_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_is_superuser_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_is_superuser_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -19060,14 +21181,14 @@ bool HP_sysinfo_is_superuser(void) {
}
void HP_sysinfo_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_sysinfo_init_pre ) {
+ if (HPMHooks.count.HP_sysinfo_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19075,9 +21196,9 @@ void HP_sysinfo_init(void) {
{
HPMHooks.source.sysinfo.init();
}
- if( HPMHooks.count.HP_sysinfo_init_post ) {
+ if (HPMHooks.count.HP_sysinfo_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_init_post[hIndex].func;
postHookFunc();
}
@@ -19086,14 +21207,14 @@ void HP_sysinfo_init(void) {
}
void HP_sysinfo_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_sysinfo_final_pre ) {
+ if (HPMHooks.count.HP_sysinfo_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19101,9 +21222,9 @@ void HP_sysinfo_final(void) {
{
HPMHooks.source.sysinfo.final();
}
- if( HPMHooks.count.HP_sysinfo_final_post ) {
+ if (HPMHooks.count.HP_sysinfo_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_final_post[hIndex].func;
postHookFunc();
}
@@ -19113,14 +21234,14 @@ void HP_sysinfo_final(void) {
/* thread_interface */
void HP_thread_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_thread_init_pre ) {
+ if (HPMHooks.count.HP_thread_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19128,9 +21249,9 @@ void HP_thread_init(void) {
{
HPMHooks.source.thread.init();
}
- if( HPMHooks.count.HP_thread_init_post ) {
+ if (HPMHooks.count.HP_thread_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_init_post[hIndex].func;
postHookFunc();
}
@@ -19139,14 +21260,14 @@ void HP_thread_init(void) {
}
void HP_thread_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_thread_final_pre ) {
+ if (HPMHooks.count.HP_thread_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19154,9 +21275,9 @@ void HP_thread_final(void) {
{
HPMHooks.source.thread.final();
}
- if( HPMHooks.count.HP_thread_final_post ) {
+ if (HPMHooks.count.HP_thread_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_final_post[hIndex].func;
postHookFunc();
}
@@ -19166,14 +21287,14 @@ void HP_thread_final(void) {
struct thread_handle* HP_thread_create(threadFunc entry_point, void *param) {
int hIndex = 0;
struct thread_handle* retVal___ = NULL;
- if( HPMHooks.count.HP_thread_create_pre ) {
+ if (HPMHooks.count.HP_thread_create_pre > 0) {
struct thread_handle* (*preHookFunc) (threadFunc *entry_point, void **param);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_create_pre[hIndex].func;
retVal___ = preHookFunc(&entry_point, &param);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -19181,9 +21302,9 @@ struct thread_handle* HP_thread_create(threadFunc entry_point, void *param) {
{
retVal___ = HPMHooks.source.thread.create(entry_point, param);
}
- if( HPMHooks.count.HP_thread_create_post ) {
+ if (HPMHooks.count.HP_thread_create_post > 0) {
struct thread_handle* (*postHookFunc) (struct thread_handle* retVal___, threadFunc entry_point, void *param);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_create_post[hIndex].func;
retVal___ = postHookFunc(retVal___, entry_point, param);
}
@@ -19193,14 +21314,14 @@ struct thread_handle* HP_thread_create(threadFunc entry_point, void *param) {
struct thread_handle* HP_thread_create_opt(threadFunc entry_point, void *param, size_t stack_size, enum thread_priority prio) {
int hIndex = 0;
struct thread_handle* retVal___ = NULL;
- if( HPMHooks.count.HP_thread_create_opt_pre ) {
+ if (HPMHooks.count.HP_thread_create_opt_pre > 0) {
struct thread_handle* (*preHookFunc) (threadFunc *entry_point, void **param, size_t *stack_size, enum thread_priority *prio);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_create_opt_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_create_opt_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_create_opt_pre[hIndex].func;
retVal___ = preHookFunc(&entry_point, &param, &stack_size, &prio);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -19208,9 +21329,9 @@ struct thread_handle* HP_thread_create_opt(threadFunc entry_point, void *param,
{
retVal___ = HPMHooks.source.thread.create_opt(entry_point, param, stack_size, prio);
}
- if( HPMHooks.count.HP_thread_create_opt_post ) {
+ if (HPMHooks.count.HP_thread_create_opt_post > 0) {
struct thread_handle* (*postHookFunc) (struct thread_handle* retVal___, threadFunc entry_point, void *param, size_t stack_size, enum thread_priority prio);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_create_opt_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_create_opt_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_create_opt_post[hIndex].func;
retVal___ = postHookFunc(retVal___, entry_point, param, stack_size, prio);
}
@@ -19219,14 +21340,14 @@ struct thread_handle* HP_thread_create_opt(threadFunc entry_point, void *param,
}
void HP_thread_destroy(struct thread_handle *handle) {
int hIndex = 0;
- if( HPMHooks.count.HP_thread_destroy_pre ) {
+ if (HPMHooks.count.HP_thread_destroy_pre > 0) {
void (*preHookFunc) (struct thread_handle **handle);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_destroy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_destroy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_destroy_pre[hIndex].func;
preHookFunc(&handle);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19234,9 +21355,9 @@ void HP_thread_destroy(struct thread_handle *handle) {
{
HPMHooks.source.thread.destroy(handle);
}
- if( HPMHooks.count.HP_thread_destroy_post ) {
+ if (HPMHooks.count.HP_thread_destroy_post > 0) {
void (*postHookFunc) (struct thread_handle *handle);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_destroy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_destroy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_destroy_post[hIndex].func;
postHookFunc(handle);
}
@@ -19246,14 +21367,14 @@ void HP_thread_destroy(struct thread_handle *handle) {
struct thread_handle* HP_thread_self(void) {
int hIndex = 0;
struct thread_handle* retVal___ = NULL;
- if( HPMHooks.count.HP_thread_self_pre ) {
+ if (HPMHooks.count.HP_thread_self_pre > 0) {
struct thread_handle* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_self_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_self_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_self_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -19261,9 +21382,9 @@ struct thread_handle* HP_thread_self(void) {
{
retVal___ = HPMHooks.source.thread.self();
}
- if( HPMHooks.count.HP_thread_self_post ) {
+ if (HPMHooks.count.HP_thread_self_post > 0) {
struct thread_handle* (*postHookFunc) (struct thread_handle* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_self_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_self_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_self_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -19273,14 +21394,14 @@ struct thread_handle* HP_thread_self(void) {
int HP_thread_get_tid(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_thread_get_tid_pre ) {
+ if (HPMHooks.count.HP_thread_get_tid_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_get_tid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_get_tid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_get_tid_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -19288,9 +21409,9 @@ int HP_thread_get_tid(void) {
{
retVal___ = HPMHooks.source.thread.get_tid();
}
- if( HPMHooks.count.HP_thread_get_tid_post ) {
+ if (HPMHooks.count.HP_thread_get_tid_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_get_tid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_get_tid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_get_tid_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -19300,14 +21421,14 @@ int HP_thread_get_tid(void) {
bool HP_thread_wait(struct thread_handle *handle, void **out_exit_code) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_thread_wait_pre ) {
+ if (HPMHooks.count.HP_thread_wait_pre > 0) {
bool (*preHookFunc) (struct thread_handle **handle, void ***out_exit_code);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_wait_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_wait_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_wait_pre[hIndex].func;
retVal___ = preHookFunc(&handle, &out_exit_code);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -19315,9 +21436,9 @@ bool HP_thread_wait(struct thread_handle *handle, void **out_exit_code) {
{
retVal___ = HPMHooks.source.thread.wait(handle, out_exit_code);
}
- if( HPMHooks.count.HP_thread_wait_post ) {
+ if (HPMHooks.count.HP_thread_wait_post > 0) {
bool (*postHookFunc) (bool retVal___, struct thread_handle *handle, void **out_exit_code);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_wait_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_wait_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_wait_post[hIndex].func;
retVal___ = postHookFunc(retVal___, handle, out_exit_code);
}
@@ -19326,14 +21447,14 @@ bool HP_thread_wait(struct thread_handle *handle, void **out_exit_code) {
}
void HP_thread_prio_set(struct thread_handle *handle, enum thread_priority prio) {
int hIndex = 0;
- if( HPMHooks.count.HP_thread_prio_set_pre ) {
+ if (HPMHooks.count.HP_thread_prio_set_pre > 0) {
void (*preHookFunc) (struct thread_handle **handle, enum thread_priority *prio);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_prio_set_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_prio_set_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_prio_set_pre[hIndex].func;
preHookFunc(&handle, &prio);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19341,9 +21462,9 @@ void HP_thread_prio_set(struct thread_handle *handle, enum thread_priority prio)
{
HPMHooks.source.thread.prio_set(handle, prio);
}
- if( HPMHooks.count.HP_thread_prio_set_post ) {
+ if (HPMHooks.count.HP_thread_prio_set_post > 0) {
void (*postHookFunc) (struct thread_handle *handle, enum thread_priority prio);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_prio_set_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_prio_set_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_prio_set_post[hIndex].func;
postHookFunc(handle, prio);
}
@@ -19353,14 +21474,14 @@ void HP_thread_prio_set(struct thread_handle *handle, enum thread_priority prio)
enum thread_priority HP_thread_prio_get(struct thread_handle *handle) {
int hIndex = 0;
enum thread_priority retVal___ = THREADPRIO_NORMAL;
- if( HPMHooks.count.HP_thread_prio_get_pre ) {
+ if (HPMHooks.count.HP_thread_prio_get_pre > 0) {
enum thread_priority (*preHookFunc) (struct thread_handle **handle);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_prio_get_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_prio_get_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_prio_get_pre[hIndex].func;
retVal___ = preHookFunc(&handle);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -19368,9 +21489,9 @@ enum thread_priority HP_thread_prio_get(struct thread_handle *handle) {
{
retVal___ = HPMHooks.source.thread.prio_get(handle);
}
- if( HPMHooks.count.HP_thread_prio_get_post ) {
+ if (HPMHooks.count.HP_thread_prio_get_post > 0) {
enum thread_priority (*postHookFunc) (enum thread_priority retVal___, struct thread_handle *handle);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_prio_get_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_prio_get_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_prio_get_post[hIndex].func;
retVal___ = postHookFunc(retVal___, handle);
}
@@ -19379,14 +21500,14 @@ enum thread_priority HP_thread_prio_get(struct thread_handle *handle) {
}
void HP_thread_yield(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_thread_yield_pre ) {
+ if (HPMHooks.count.HP_thread_yield_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_yield_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_yield_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_yield_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19394,9 +21515,9 @@ void HP_thread_yield(void) {
{
HPMHooks.source.thread.yield();
}
- if( HPMHooks.count.HP_thread_yield_post ) {
+ if (HPMHooks.count.HP_thread_yield_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_yield_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_yield_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_yield_post[hIndex].func;
postHookFunc();
}
@@ -19407,14 +21528,14 @@ void HP_thread_yield(void) {
int64 HP_timer_gettick(void) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_timer_gettick_pre ) {
+ if (HPMHooks.count.HP_timer_gettick_pre > 0) {
int64 (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_gettick_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_gettick_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_gettick_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -19422,9 +21543,9 @@ int64 HP_timer_gettick(void) {
{
retVal___ = HPMHooks.source.timer.gettick();
}
- if( HPMHooks.count.HP_timer_gettick_post ) {
+ if (HPMHooks.count.HP_timer_gettick_post > 0) {
int64 (*postHookFunc) (int64 retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_gettick_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_gettick_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_gettick_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -19434,14 +21555,14 @@ int64 HP_timer_gettick(void) {
int64 HP_timer_gettick_nocache(void) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_timer_gettick_nocache_pre ) {
+ if (HPMHooks.count.HP_timer_gettick_nocache_pre > 0) {
int64 (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_gettick_nocache_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_gettick_nocache_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_gettick_nocache_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -19449,9 +21570,9 @@ int64 HP_timer_gettick_nocache(void) {
{
retVal___ = HPMHooks.source.timer.gettick_nocache();
}
- if( HPMHooks.count.HP_timer_gettick_nocache_post ) {
+ if (HPMHooks.count.HP_timer_gettick_nocache_post > 0) {
int64 (*postHookFunc) (int64 retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_gettick_nocache_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_gettick_nocache_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_gettick_nocache_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -19461,14 +21582,14 @@ int64 HP_timer_gettick_nocache(void) {
int HP_timer_add(int64 tick, TimerFunc func, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_timer_add_pre ) {
+ if (HPMHooks.count.HP_timer_add_pre > 0) {
int (*preHookFunc) (int64 *tick, TimerFunc *func, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_add_pre[hIndex].func;
retVal___ = preHookFunc(&tick, &func, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -19476,9 +21597,9 @@ int HP_timer_add(int64 tick, TimerFunc func, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.timer.add(tick, func, id, data);
}
- if( HPMHooks.count.HP_timer_add_post ) {
+ if (HPMHooks.count.HP_timer_add_post > 0) {
int (*postHookFunc) (int retVal___, int64 tick, TimerFunc func, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_add_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tick, func, id, data);
}
@@ -19488,14 +21609,14 @@ int HP_timer_add(int64 tick, TimerFunc func, int id, intptr_t data) {
int HP_timer_add_interval(int64 tick, TimerFunc func, int id, intptr_t data, int interval) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_timer_add_interval_pre ) {
+ if (HPMHooks.count.HP_timer_add_interval_pre > 0) {
int (*preHookFunc) (int64 *tick, TimerFunc *func, int *id, intptr_t *data, int *interval);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_interval_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_interval_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_add_interval_pre[hIndex].func;
retVal___ = preHookFunc(&tick, &func, &id, &data, &interval);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -19503,9 +21624,9 @@ int HP_timer_add_interval(int64 tick, TimerFunc func, int id, intptr_t data, int
{
retVal___ = HPMHooks.source.timer.add_interval(tick, func, id, data, interval);
}
- if( HPMHooks.count.HP_timer_add_interval_post ) {
+ if (HPMHooks.count.HP_timer_add_interval_post > 0) {
int (*postHookFunc) (int retVal___, int64 tick, TimerFunc func, int id, intptr_t data, int interval);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_interval_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_interval_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_add_interval_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tick, func, id, data, interval);
}
@@ -19515,14 +21636,14 @@ int HP_timer_add_interval(int64 tick, TimerFunc func, int id, intptr_t data, int
const struct TimerData* HP_timer_get(int tid) {
int hIndex = 0;
const struct TimerData* retVal___ = NULL;
- if( HPMHooks.count.HP_timer_get_pre ) {
+ if (HPMHooks.count.HP_timer_get_pre > 0) {
const struct TimerData* (*preHookFunc) (int *tid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_get_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_get_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_get_pre[hIndex].func;
retVal___ = preHookFunc(&tid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -19530,9 +21651,9 @@ const struct TimerData* HP_timer_get(int tid) {
{
retVal___ = HPMHooks.source.timer.get(tid);
}
- if( HPMHooks.count.HP_timer_get_post ) {
+ if (HPMHooks.count.HP_timer_get_post > 0) {
const struct TimerData* (*postHookFunc) (const struct TimerData* retVal___, int tid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_get_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_get_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_get_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid);
}
@@ -19542,14 +21663,14 @@ const struct TimerData* HP_timer_get(int tid) {
int HP_timer_delete(int tid, TimerFunc func) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_timer_delete_pre ) {
+ if (HPMHooks.count.HP_timer_delete_pre > 0) {
int (*preHookFunc) (int *tid, TimerFunc *func);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_delete_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &func);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -19557,9 +21678,9 @@ int HP_timer_delete(int tid, TimerFunc func) {
{
retVal___ = HPMHooks.source.timer.delete(tid, func);
}
- if( HPMHooks.count.HP_timer_delete_post ) {
+ if (HPMHooks.count.HP_timer_delete_post > 0) {
int (*postHookFunc) (int retVal___, int tid, TimerFunc func);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_delete_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, func);
}
@@ -19569,14 +21690,14 @@ int HP_timer_delete(int tid, TimerFunc func) {
int64 HP_timer_addtick(int tid, int64 tick) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_timer_addtick_pre ) {
+ if (HPMHooks.count.HP_timer_addtick_pre > 0) {
int64 (*preHookFunc) (int *tid, int64 *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_addtick_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_addtick_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_addtick_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -19584,9 +21705,9 @@ int64 HP_timer_addtick(int tid, int64 tick) {
{
retVal___ = HPMHooks.source.timer.addtick(tid, tick);
}
- if( HPMHooks.count.HP_timer_addtick_post ) {
+ if (HPMHooks.count.HP_timer_addtick_post > 0) {
int64 (*postHookFunc) (int64 retVal___, int tid, int64 tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_addtick_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_addtick_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_addtick_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick);
}
@@ -19596,14 +21717,14 @@ int64 HP_timer_addtick(int tid, int64 tick) {
int64 HP_timer_settick(int tid, int64 tick) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_timer_settick_pre ) {
+ if (HPMHooks.count.HP_timer_settick_pre > 0) {
int64 (*preHookFunc) (int *tid, int64 *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_settick_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_settick_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_settick_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -19611,9 +21732,9 @@ int64 HP_timer_settick(int tid, int64 tick) {
{
retVal___ = HPMHooks.source.timer.settick(tid, tick);
}
- if( HPMHooks.count.HP_timer_settick_post ) {
+ if (HPMHooks.count.HP_timer_settick_post > 0) {
int64 (*postHookFunc) (int64 retVal___, int tid, int64 tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_settick_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_settick_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_settick_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick);
}
@@ -19623,14 +21744,14 @@ int64 HP_timer_settick(int tid, int64 tick) {
int HP_timer_add_func_list(TimerFunc func, char *name) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_timer_add_func_list_pre ) {
+ if (HPMHooks.count.HP_timer_add_func_list_pre > 0) {
int (*preHookFunc) (TimerFunc *func, char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_func_list_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_func_list_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_add_func_list_pre[hIndex].func;
retVal___ = preHookFunc(&func, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -19638,9 +21759,9 @@ int HP_timer_add_func_list(TimerFunc func, char *name) {
{
retVal___ = HPMHooks.source.timer.add_func_list(func, name);
}
- if( HPMHooks.count.HP_timer_add_func_list_post ) {
+ if (HPMHooks.count.HP_timer_add_func_list_post > 0) {
int (*postHookFunc) (int retVal___, TimerFunc func, char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_func_list_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_func_list_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_add_func_list_post[hIndex].func;
retVal___ = postHookFunc(retVal___, func, name);
}
@@ -19650,14 +21771,14 @@ int HP_timer_add_func_list(TimerFunc func, char *name) {
unsigned long HP_timer_get_uptime(void) {
int hIndex = 0;
unsigned long retVal___ = 0;
- if( HPMHooks.count.HP_timer_get_uptime_pre ) {
+ if (HPMHooks.count.HP_timer_get_uptime_pre > 0) {
unsigned long (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_get_uptime_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_get_uptime_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_get_uptime_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -19665,9 +21786,9 @@ unsigned long HP_timer_get_uptime(void) {
{
retVal___ = HPMHooks.source.timer.get_uptime();
}
- if( HPMHooks.count.HP_timer_get_uptime_post ) {
+ if (HPMHooks.count.HP_timer_get_uptime_post > 0) {
unsigned long (*postHookFunc) (unsigned long retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_get_uptime_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_get_uptime_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_get_uptime_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -19677,14 +21798,14 @@ unsigned long HP_timer_get_uptime(void) {
int HP_timer_perform(int64 tick) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_timer_perform_pre ) {
+ if (HPMHooks.count.HP_timer_perform_pre > 0) {
int (*preHookFunc) (int64 *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_perform_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_perform_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_perform_pre[hIndex].func;
retVal___ = preHookFunc(&tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -19692,9 +21813,9 @@ int HP_timer_perform(int64 tick) {
{
retVal___ = HPMHooks.source.timer.perform(tick);
}
- if( HPMHooks.count.HP_timer_perform_post ) {
+ if (HPMHooks.count.HP_timer_perform_post > 0) {
int (*postHookFunc) (int retVal___, int64 tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_perform_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_perform_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_perform_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tick);
}
@@ -19703,14 +21824,14 @@ int HP_timer_perform(int64 tick) {
}
void HP_timer_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_timer_init_pre ) {
+ if (HPMHooks.count.HP_timer_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19718,9 +21839,9 @@ void HP_timer_init(void) {
{
HPMHooks.source.timer.init();
}
- if( HPMHooks.count.HP_timer_init_post ) {
+ if (HPMHooks.count.HP_timer_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_init_post[hIndex].func;
postHookFunc();
}
@@ -19729,14 +21850,14 @@ void HP_timer_init(void) {
}
void HP_timer_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_timer_final_pre ) {
+ if (HPMHooks.count.HP_timer_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19744,9 +21865,9 @@ void HP_timer_final(void) {
{
HPMHooks.source.timer.final();
}
- if( HPMHooks.count.HP_timer_final_post ) {
+ if (HPMHooks.count.HP_timer_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_final_post[hIndex].func;
postHookFunc();
}
diff --git a/src/plugins/HPMHooking/HPMHooking_char.sources.inc b/src/plugins/HPMHooking/HPMHooking_char.sources.inc
index 07cd94cb2..973f8aff3 100644
--- a/src/plugins/HPMHooking/HPMHooking_char.sources.inc
+++ b/src/plugins/HPMHooking/HPMHooking_char.sources.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2017 Hercules Dev Team
+ * Copyright (C) 2013-2019 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -25,40 +25,44 @@
/* GENERATED FILE DO NOT EDIT */
-memcpy(&HPMHooks.source.HCache, HCache, sizeof(struct HCache_interface));
-memcpy(&HPMHooks.source.chr, chr, sizeof(struct char_interface));
-memcpy(&HPMHooks.source.cmdline, cmdline, sizeof(struct cmdline_interface));
-memcpy(&HPMHooks.source.console, console, sizeof(struct console_interface));
-memcpy(&HPMHooks.source.core, core, sizeof(struct core_interface));
-memcpy(&HPMHooks.source.DB, DB, sizeof(struct db_interface));
-memcpy(&HPMHooks.source.des, des, sizeof(struct des_interface));
-memcpy(&HPMHooks.source.geoip, geoip, sizeof(struct geoip_interface));
-memcpy(&HPMHooks.source.inter_auction, inter_auction, sizeof(struct inter_auction_interface));
-memcpy(&HPMHooks.source.inter_elemental, inter_elemental, sizeof(struct inter_elemental_interface));
-memcpy(&HPMHooks.source.inter_guild, inter_guild, sizeof(struct inter_guild_interface));
-memcpy(&HPMHooks.source.inter_homunculus, inter_homunculus, sizeof(struct inter_homunculus_interface));
-memcpy(&HPMHooks.source.inter, inter, sizeof(struct inter_interface));
-memcpy(&HPMHooks.source.inter_mail, inter_mail, sizeof(struct inter_mail_interface));
-memcpy(&HPMHooks.source.inter_mercenary, inter_mercenary, sizeof(struct inter_mercenary_interface));
-memcpy(&HPMHooks.source.inter_party, inter_party, sizeof(struct inter_party_interface));
-memcpy(&HPMHooks.source.inter_pet, inter_pet, sizeof(struct inter_pet_interface));
-memcpy(&HPMHooks.source.inter_quest, inter_quest, sizeof(struct inter_quest_interface));
-memcpy(&HPMHooks.source.inter_storage, inter_storage, sizeof(struct inter_storage_interface));
-memcpy(&HPMHooks.source.libconfig, libconfig, sizeof(struct libconfig_interface));
-memcpy(&HPMHooks.source.loginif, loginif, sizeof(struct loginif_interface));
-memcpy(&HPMHooks.source.mapif, mapif, sizeof(struct mapif_interface));
-memcpy(&HPMHooks.source.mapindex, mapindex, sizeof(struct mapindex_interface));
-memcpy(&HPMHooks.source.md5, md5, sizeof(struct md5_interface));
-memcpy(&HPMHooks.source.mutex, mutex, sizeof(struct mutex_interface));
-memcpy(&HPMHooks.source.nullpo, nullpo, sizeof(struct nullpo_interface));
-memcpy(&HPMHooks.source.pincode, pincode, sizeof(struct pincode_interface));
-memcpy(&HPMHooks.source.rnd, rnd, sizeof(struct rnd_interface));
-memcpy(&HPMHooks.source.showmsg, showmsg, sizeof(struct showmsg_interface));
-memcpy(&HPMHooks.source.sockt, sockt, sizeof(struct socket_interface));
-memcpy(&HPMHooks.source.SQL, SQL, sizeof(struct sql_interface));
-memcpy(&HPMHooks.source.StrBuf, StrBuf, sizeof(struct stringbuf_interface));
-memcpy(&HPMHooks.source.strlib, strlib, sizeof(struct strlib_interface));
-memcpy(&HPMHooks.source.sv, sv, sizeof(struct sv_interface));
-memcpy(&HPMHooks.source.sysinfo, sysinfo, sizeof(struct sysinfo_interface));
-memcpy(&HPMHooks.source.thread, thread, sizeof(struct thread_interface));
-memcpy(&HPMHooks.source.timer, timer, sizeof(struct timer_interface));
+HPMHooks.source.HCache = *HCache;
+HPMHooks.source.chr = *chr;
+HPMHooks.source.cmdline = *cmdline;
+HPMHooks.source.console = *console;
+HPMHooks.source.core = *core;
+HPMHooks.source.DB = *DB;
+HPMHooks.source.des = *des;
+HPMHooks.source.geoip = *geoip;
+HPMHooks.source.inter_achievement = *inter_achievement;
+HPMHooks.source.inter_auction = *inter_auction;
+HPMHooks.source.inter_clan = *inter_clan;
+HPMHooks.source.inter_elemental = *inter_elemental;
+HPMHooks.source.inter_guild = *inter_guild;
+HPMHooks.source.inter_homunculus = *inter_homunculus;
+HPMHooks.source.inter = *inter;
+HPMHooks.source.inter_mail = *inter_mail;
+HPMHooks.source.inter_mercenary = *inter_mercenary;
+HPMHooks.source.inter_party = *inter_party;
+HPMHooks.source.inter_pet = *inter_pet;
+HPMHooks.source.inter_quest = *inter_quest;
+HPMHooks.source.inter_rodex = *inter_rodex;
+HPMHooks.source.inter_storage = *inter_storage;
+HPMHooks.source.libconfig = *libconfig;
+HPMHooks.source.loginif = *loginif;
+HPMHooks.source.mapif = *mapif;
+HPMHooks.source.mapindex = *mapindex;
+HPMHooks.source.md5 = *md5;
+HPMHooks.source.mutex = *mutex;
+HPMHooks.source.nullpo = *nullpo;
+HPMHooks.source.packets = *packets;
+HPMHooks.source.pincode = *pincode;
+HPMHooks.source.rnd = *rnd;
+HPMHooks.source.showmsg = *showmsg;
+HPMHooks.source.sockt = *sockt;
+HPMHooks.source.SQL = *SQL;
+HPMHooks.source.StrBuf = *StrBuf;
+HPMHooks.source.strlib = *strlib;
+HPMHooks.source.sv = *sv;
+HPMHooks.source.sysinfo = *sysinfo;
+HPMHooks.source.thread = *thread;
+HPMHooks.source.timer = *timer;
diff --git a/src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc
index 57c1e0233..7293e8fc4 100644
--- a/src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc
+++ b/src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2017 Hercules Dev Team
+ * Copyright (C) 2013-2019 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -32,6 +32,44 @@ struct {
struct HPMHookPoint *HP_HCache_check_post;
struct HPMHookPoint *HP_HCache_open_pre;
struct HPMHookPoint *HP_HCache_open_post;
+ struct HPMHookPoint *HP_account_db_sql_up_pre;
+ struct HPMHookPoint *HP_account_db_sql_up_post;
+ struct HPMHookPoint *HP_account_mmo_send_accreg2_pre;
+ struct HPMHookPoint *HP_account_mmo_send_accreg2_post;
+ struct HPMHookPoint *HP_account_mmo_save_accreg2_pre;
+ struct HPMHookPoint *HP_account_mmo_save_accreg2_post;
+ struct HPMHookPoint *HP_account_mmo_auth_fromsql_pre;
+ struct HPMHookPoint *HP_account_mmo_auth_fromsql_post;
+ struct HPMHookPoint *HP_account_mmo_auth_tosql_pre;
+ struct HPMHookPoint *HP_account_mmo_auth_tosql_post;
+ struct HPMHookPoint *HP_account_db_sql_pre;
+ struct HPMHookPoint *HP_account_db_sql_post;
+ struct HPMHookPoint *HP_account_db_sql_init_pre;
+ struct HPMHookPoint *HP_account_db_sql_init_post;
+ struct HPMHookPoint *HP_account_db_sql_destroy_pre;
+ struct HPMHookPoint *HP_account_db_sql_destroy_post;
+ struct HPMHookPoint *HP_account_db_sql_get_property_pre;
+ struct HPMHookPoint *HP_account_db_sql_get_property_post;
+ struct HPMHookPoint *HP_account_db_sql_set_property_pre;
+ struct HPMHookPoint *HP_account_db_sql_set_property_post;
+ struct HPMHookPoint *HP_account_db_sql_create_pre;
+ struct HPMHookPoint *HP_account_db_sql_create_post;
+ struct HPMHookPoint *HP_account_db_sql_remove_pre;
+ struct HPMHookPoint *HP_account_db_sql_remove_post;
+ struct HPMHookPoint *HP_account_db_sql_save_pre;
+ struct HPMHookPoint *HP_account_db_sql_save_post;
+ struct HPMHookPoint *HP_account_db_sql_load_num_pre;
+ struct HPMHookPoint *HP_account_db_sql_load_num_post;
+ struct HPMHookPoint *HP_account_db_sql_load_str_pre;
+ struct HPMHookPoint *HP_account_db_sql_load_str_post;
+ struct HPMHookPoint *HP_account_db_sql_iterator_pre;
+ struct HPMHookPoint *HP_account_db_sql_iterator_post;
+ struct HPMHookPoint *HP_account_db_sql_iter_destroy_pre;
+ struct HPMHookPoint *HP_account_db_sql_iter_destroy_post;
+ struct HPMHookPoint *HP_account_db_sql_iter_next_pre;
+ struct HPMHookPoint *HP_account_db_sql_iter_next_post;
+ struct HPMHookPoint *HP_account_db_read_inter_pre;
+ struct HPMHookPoint *HP_account_db_read_inter_post;
struct HPMHookPoint *HP_cmdline_init_pre;
struct HPMHookPoint *HP_cmdline_init_post;
struct HPMHookPoint *HP_cmdline_final_pre;
@@ -96,6 +134,32 @@ struct {
struct HPMHookPoint *HP_des_decrypt_block_post;
struct HPMHookPoint *HP_des_decrypt_pre;
struct HPMHookPoint *HP_des_decrypt_post;
+ struct HPMHookPoint *HP_ipban_init_pre;
+ struct HPMHookPoint *HP_ipban_init_post;
+ struct HPMHookPoint *HP_ipban_final_pre;
+ struct HPMHookPoint *HP_ipban_final_post;
+ struct HPMHookPoint *HP_ipban_cleanup_pre;
+ struct HPMHookPoint *HP_ipban_cleanup_post;
+ struct HPMHookPoint *HP_ipban_config_read_inter_pre;
+ struct HPMHookPoint *HP_ipban_config_read_inter_post;
+ struct HPMHookPoint *HP_ipban_config_read_connection_pre;
+ struct HPMHookPoint *HP_ipban_config_read_connection_post;
+ struct HPMHookPoint *HP_ipban_config_read_dynamic_pre;
+ struct HPMHookPoint *HP_ipban_config_read_dynamic_post;
+ struct HPMHookPoint *HP_ipban_config_read_pre;
+ struct HPMHookPoint *HP_ipban_config_read_post;
+ struct HPMHookPoint *HP_ipban_check_pre;
+ struct HPMHookPoint *HP_ipban_check_post;
+ struct HPMHookPoint *HP_ipban_log_pre;
+ struct HPMHookPoint *HP_ipban_log_post;
+ struct HPMHookPoint *HP_lchrif_server_init_pre;
+ struct HPMHookPoint *HP_lchrif_server_init_post;
+ struct HPMHookPoint *HP_lchrif_server_destroy_pre;
+ struct HPMHookPoint *HP_lchrif_server_destroy_post;
+ struct HPMHookPoint *HP_lchrif_server_reset_pre;
+ struct HPMHookPoint *HP_lchrif_server_reset_post;
+ struct HPMHookPoint *HP_lchrif_on_disconnect_pre;
+ struct HPMHookPoint *HP_lchrif_on_disconnect_post;
struct HPMHookPoint *HP_lclif_init_pre;
struct HPMHookPoint *HP_lclif_init_post;
struct HPMHookPoint *HP_lclif_final_pre;
@@ -138,6 +202,12 @@ struct {
struct HPMHookPoint *HP_PRIV__lclif_parse_CA_LOGIN_HAN_post;
struct HPMHookPoint *HP_PRIV__lclif_parse_CA_SSO_LOGIN_REQ_pre;
struct HPMHookPoint *HP_PRIV__lclif_parse_CA_SSO_LOGIN_REQ_post;
+ struct HPMHookPoint *HP_PRIV__lclif_parse_CA_LOGIN_OTP_pre;
+ struct HPMHookPoint *HP_PRIV__lclif_parse_CA_LOGIN_OTP_post;
+ struct HPMHookPoint *HP_PRIV__lclif_parse_CA_ACK_MOBILE_OTP_pre;
+ struct HPMHookPoint *HP_PRIV__lclif_parse_CA_ACK_MOBILE_OTP_post;
+ struct HPMHookPoint *HP_PRIV__lclif_parse_CA_OTP_CODE_pre;
+ struct HPMHookPoint *HP_PRIV__lclif_parse_CA_OTP_CODE_post;
struct HPMHookPoint *HP_PRIV__lclif_parse_CA_REQ_HASH_pre;
struct HPMHookPoint *HP_PRIV__lclif_parse_CA_REQ_HASH_post;
struct HPMHookPoint *HP_PRIV__lclif_parse_CA_CHARSERVERCONNECT_pre;
@@ -368,6 +438,10 @@ struct {
struct HPMHookPoint *HP_login_auth_failed_post;
struct HPMHookPoint *HP_login_client_login_pre;
struct HPMHookPoint *HP_login_client_login_post;
+ struct HPMHookPoint *HP_login_client_login_otp_pre;
+ struct HPMHookPoint *HP_login_client_login_otp_post;
+ struct HPMHookPoint *HP_login_client_login_mobile_otp_request_pre;
+ struct HPMHookPoint *HP_login_client_login_mobile_otp_request_post;
struct HPMHookPoint *HP_login_char_server_connection_status_pre;
struct HPMHookPoint *HP_login_char_server_connection_status_post;
struct HPMHookPoint *HP_login_parse_request_connection_pre;
@@ -376,6 +450,46 @@ struct {
struct HPMHookPoint *HP_login_config_set_defaults_post;
struct HPMHookPoint *HP_login_config_read_pre;
struct HPMHookPoint *HP_login_config_read_post;
+ struct HPMHookPoint *HP_login_config_read_inter_pre;
+ struct HPMHookPoint *HP_login_config_read_inter_post;
+ struct HPMHookPoint *HP_login_config_read_console_pre;
+ struct HPMHookPoint *HP_login_config_read_console_post;
+ struct HPMHookPoint *HP_login_config_read_log_pre;
+ struct HPMHookPoint *HP_login_config_read_log_post;
+ struct HPMHookPoint *HP_login_config_read_account_pre;
+ struct HPMHookPoint *HP_login_config_read_account_post;
+ struct HPMHookPoint *HP_login_config_read_permission_pre;
+ struct HPMHookPoint *HP_login_config_read_permission_post;
+ struct HPMHookPoint *HP_login_config_read_permission_hash_pre;
+ struct HPMHookPoint *HP_login_config_read_permission_hash_post;
+ struct HPMHookPoint *HP_login_config_read_permission_blacklist_pre;
+ struct HPMHookPoint *HP_login_config_read_permission_blacklist_post;
+ struct HPMHookPoint *HP_login_config_read_users_pre;
+ struct HPMHookPoint *HP_login_config_read_users_post;
+ struct HPMHookPoint *HP_login_clear_dnsbl_servers_pre;
+ struct HPMHookPoint *HP_login_clear_dnsbl_servers_post;
+ struct HPMHookPoint *HP_login_config_set_dnsbl_servers_pre;
+ struct HPMHookPoint *HP_login_config_set_dnsbl_servers_post;
+ struct HPMHookPoint *HP_login_clear_client_hash_nodes_pre;
+ struct HPMHookPoint *HP_login_clear_client_hash_nodes_post;
+ struct HPMHookPoint *HP_login_config_set_md5hash_pre;
+ struct HPMHookPoint *HP_login_config_set_md5hash_post;
+ struct HPMHookPoint *HP_login_convert_users_to_colors_pre;
+ struct HPMHookPoint *HP_login_convert_users_to_colors_post;
+ struct HPMHookPoint *HP_loginlog_failedattempts_pre;
+ struct HPMHookPoint *HP_loginlog_failedattempts_post;
+ struct HPMHookPoint *HP_loginlog_log_pre;
+ struct HPMHookPoint *HP_loginlog_log_post;
+ struct HPMHookPoint *HP_loginlog_init_pre;
+ struct HPMHookPoint *HP_loginlog_init_post;
+ struct HPMHookPoint *HP_loginlog_final_pre;
+ struct HPMHookPoint *HP_loginlog_final_post;
+ struct HPMHookPoint *HP_loginlog_config_read_names_pre;
+ struct HPMHookPoint *HP_loginlog_config_read_names_post;
+ struct HPMHookPoint *HP_loginlog_config_read_log_pre;
+ struct HPMHookPoint *HP_loginlog_config_read_log_post;
+ struct HPMHookPoint *HP_loginlog_config_read_pre;
+ struct HPMHookPoint *HP_loginlog_config_read_post;
struct HPMHookPoint *HP_md5_string_pre;
struct HPMHookPoint *HP_md5_string_post;
struct HPMHookPoint *HP_md5_binary_pre;
@@ -404,6 +518,14 @@ struct {
struct HPMHookPoint *HP_mutex_cond_broadcast_post;
struct HPMHookPoint *HP_nullpo_assert_report_pre;
struct HPMHookPoint *HP_nullpo_assert_report_post;
+ struct HPMHookPoint *HP_packets_init_pre;
+ struct HPMHookPoint *HP_packets_init_post;
+ struct HPMHookPoint *HP_packets_final_pre;
+ struct HPMHookPoint *HP_packets_final_post;
+ struct HPMHookPoint *HP_packets_addLens_pre;
+ struct HPMHookPoint *HP_packets_addLens_post;
+ struct HPMHookPoint *HP_packets_addLen_pre;
+ struct HPMHookPoint *HP_packets_addLen_post;
struct HPMHookPoint *HP_rnd_init_pre;
struct HPMHookPoint *HP_rnd_init_post;
struct HPMHookPoint *HP_rnd_final_pre;
@@ -446,10 +568,14 @@ struct {
struct HPMHookPoint *HP_sockt_realloc_writefifo_post;
struct HPMHookPoint *HP_sockt_wfifoset_pre;
struct HPMHookPoint *HP_sockt_wfifoset_post;
+ struct HPMHookPoint *HP_sockt_wfifohead_pre;
+ struct HPMHookPoint *HP_sockt_wfifohead_post;
struct HPMHookPoint *HP_sockt_rfifoskip_pre;
struct HPMHookPoint *HP_sockt_rfifoskip_post;
struct HPMHookPoint *HP_sockt_close_pre;
struct HPMHookPoint *HP_sockt_close_post;
+ struct HPMHookPoint *HP_sockt_validateWfifo_pre;
+ struct HPMHookPoint *HP_sockt_validateWfifo_post;
struct HPMHookPoint *HP_sockt_session_is_valid_pre;
struct HPMHookPoint *HP_sockt_session_is_valid_post;
struct HPMHookPoint *HP_sockt_session_is_active_pre;
@@ -705,6 +831,44 @@ struct {
int HP_HCache_check_post;
int HP_HCache_open_pre;
int HP_HCache_open_post;
+ int HP_account_db_sql_up_pre;
+ int HP_account_db_sql_up_post;
+ int HP_account_mmo_send_accreg2_pre;
+ int HP_account_mmo_send_accreg2_post;
+ int HP_account_mmo_save_accreg2_pre;
+ int HP_account_mmo_save_accreg2_post;
+ int HP_account_mmo_auth_fromsql_pre;
+ int HP_account_mmo_auth_fromsql_post;
+ int HP_account_mmo_auth_tosql_pre;
+ int HP_account_mmo_auth_tosql_post;
+ int HP_account_db_sql_pre;
+ int HP_account_db_sql_post;
+ int HP_account_db_sql_init_pre;
+ int HP_account_db_sql_init_post;
+ int HP_account_db_sql_destroy_pre;
+ int HP_account_db_sql_destroy_post;
+ int HP_account_db_sql_get_property_pre;
+ int HP_account_db_sql_get_property_post;
+ int HP_account_db_sql_set_property_pre;
+ int HP_account_db_sql_set_property_post;
+ int HP_account_db_sql_create_pre;
+ int HP_account_db_sql_create_post;
+ int HP_account_db_sql_remove_pre;
+ int HP_account_db_sql_remove_post;
+ int HP_account_db_sql_save_pre;
+ int HP_account_db_sql_save_post;
+ int HP_account_db_sql_load_num_pre;
+ int HP_account_db_sql_load_num_post;
+ int HP_account_db_sql_load_str_pre;
+ int HP_account_db_sql_load_str_post;
+ int HP_account_db_sql_iterator_pre;
+ int HP_account_db_sql_iterator_post;
+ int HP_account_db_sql_iter_destroy_pre;
+ int HP_account_db_sql_iter_destroy_post;
+ int HP_account_db_sql_iter_next_pre;
+ int HP_account_db_sql_iter_next_post;
+ int HP_account_db_read_inter_pre;
+ int HP_account_db_read_inter_post;
int HP_cmdline_init_pre;
int HP_cmdline_init_post;
int HP_cmdline_final_pre;
@@ -769,6 +933,32 @@ struct {
int HP_des_decrypt_block_post;
int HP_des_decrypt_pre;
int HP_des_decrypt_post;
+ int HP_ipban_init_pre;
+ int HP_ipban_init_post;
+ int HP_ipban_final_pre;
+ int HP_ipban_final_post;
+ int HP_ipban_cleanup_pre;
+ int HP_ipban_cleanup_post;
+ int HP_ipban_config_read_inter_pre;
+ int HP_ipban_config_read_inter_post;
+ int HP_ipban_config_read_connection_pre;
+ int HP_ipban_config_read_connection_post;
+ int HP_ipban_config_read_dynamic_pre;
+ int HP_ipban_config_read_dynamic_post;
+ int HP_ipban_config_read_pre;
+ int HP_ipban_config_read_post;
+ int HP_ipban_check_pre;
+ int HP_ipban_check_post;
+ int HP_ipban_log_pre;
+ int HP_ipban_log_post;
+ int HP_lchrif_server_init_pre;
+ int HP_lchrif_server_init_post;
+ int HP_lchrif_server_destroy_pre;
+ int HP_lchrif_server_destroy_post;
+ int HP_lchrif_server_reset_pre;
+ int HP_lchrif_server_reset_post;
+ int HP_lchrif_on_disconnect_pre;
+ int HP_lchrif_on_disconnect_post;
int HP_lclif_init_pre;
int HP_lclif_init_post;
int HP_lclif_final_pre;
@@ -811,6 +1001,12 @@ struct {
int HP_PRIV__lclif_parse_CA_LOGIN_HAN_post;
int HP_PRIV__lclif_parse_CA_SSO_LOGIN_REQ_pre;
int HP_PRIV__lclif_parse_CA_SSO_LOGIN_REQ_post;
+ int HP_PRIV__lclif_parse_CA_LOGIN_OTP_pre;
+ int HP_PRIV__lclif_parse_CA_LOGIN_OTP_post;
+ int HP_PRIV__lclif_parse_CA_ACK_MOBILE_OTP_pre;
+ int HP_PRIV__lclif_parse_CA_ACK_MOBILE_OTP_post;
+ int HP_PRIV__lclif_parse_CA_OTP_CODE_pre;
+ int HP_PRIV__lclif_parse_CA_OTP_CODE_post;
int HP_PRIV__lclif_parse_CA_REQ_HASH_pre;
int HP_PRIV__lclif_parse_CA_REQ_HASH_post;
int HP_PRIV__lclif_parse_CA_CHARSERVERCONNECT_pre;
@@ -1041,6 +1237,10 @@ struct {
int HP_login_auth_failed_post;
int HP_login_client_login_pre;
int HP_login_client_login_post;
+ int HP_login_client_login_otp_pre;
+ int HP_login_client_login_otp_post;
+ int HP_login_client_login_mobile_otp_request_pre;
+ int HP_login_client_login_mobile_otp_request_post;
int HP_login_char_server_connection_status_pre;
int HP_login_char_server_connection_status_post;
int HP_login_parse_request_connection_pre;
@@ -1049,6 +1249,46 @@ struct {
int HP_login_config_set_defaults_post;
int HP_login_config_read_pre;
int HP_login_config_read_post;
+ int HP_login_config_read_inter_pre;
+ int HP_login_config_read_inter_post;
+ int HP_login_config_read_console_pre;
+ int HP_login_config_read_console_post;
+ int HP_login_config_read_log_pre;
+ int HP_login_config_read_log_post;
+ int HP_login_config_read_account_pre;
+ int HP_login_config_read_account_post;
+ int HP_login_config_read_permission_pre;
+ int HP_login_config_read_permission_post;
+ int HP_login_config_read_permission_hash_pre;
+ int HP_login_config_read_permission_hash_post;
+ int HP_login_config_read_permission_blacklist_pre;
+ int HP_login_config_read_permission_blacklist_post;
+ int HP_login_config_read_users_pre;
+ int HP_login_config_read_users_post;
+ int HP_login_clear_dnsbl_servers_pre;
+ int HP_login_clear_dnsbl_servers_post;
+ int HP_login_config_set_dnsbl_servers_pre;
+ int HP_login_config_set_dnsbl_servers_post;
+ int HP_login_clear_client_hash_nodes_pre;
+ int HP_login_clear_client_hash_nodes_post;
+ int HP_login_config_set_md5hash_pre;
+ int HP_login_config_set_md5hash_post;
+ int HP_login_convert_users_to_colors_pre;
+ int HP_login_convert_users_to_colors_post;
+ int HP_loginlog_failedattempts_pre;
+ int HP_loginlog_failedattempts_post;
+ int HP_loginlog_log_pre;
+ int HP_loginlog_log_post;
+ int HP_loginlog_init_pre;
+ int HP_loginlog_init_post;
+ int HP_loginlog_final_pre;
+ int HP_loginlog_final_post;
+ int HP_loginlog_config_read_names_pre;
+ int HP_loginlog_config_read_names_post;
+ int HP_loginlog_config_read_log_pre;
+ int HP_loginlog_config_read_log_post;
+ int HP_loginlog_config_read_pre;
+ int HP_loginlog_config_read_post;
int HP_md5_string_pre;
int HP_md5_string_post;
int HP_md5_binary_pre;
@@ -1077,6 +1317,14 @@ struct {
int HP_mutex_cond_broadcast_post;
int HP_nullpo_assert_report_pre;
int HP_nullpo_assert_report_post;
+ int HP_packets_init_pre;
+ int HP_packets_init_post;
+ int HP_packets_final_pre;
+ int HP_packets_final_post;
+ int HP_packets_addLens_pre;
+ int HP_packets_addLens_post;
+ int HP_packets_addLen_pre;
+ int HP_packets_addLen_post;
int HP_rnd_init_pre;
int HP_rnd_init_post;
int HP_rnd_final_pre;
@@ -1119,10 +1367,14 @@ struct {
int HP_sockt_realloc_writefifo_post;
int HP_sockt_wfifoset_pre;
int HP_sockt_wfifoset_post;
+ int HP_sockt_wfifohead_pre;
+ int HP_sockt_wfifohead_post;
int HP_sockt_rfifoskip_pre;
int HP_sockt_rfifoskip_post;
int HP_sockt_close_pre;
int HP_sockt_close_post;
+ int HP_sockt_validateWfifo_pre;
+ int HP_sockt_validateWfifo_post;
int HP_sockt_session_is_valid_pre;
int HP_sockt_session_is_valid_post;
int HP_sockt_session_is_active_pre;
@@ -1373,18 +1625,23 @@ struct {
struct {
struct HCache_interface HCache;
+ struct account_interface account;
struct cmdline_interface cmdline;
struct console_interface console;
struct core_interface core;
struct db_interface DB;
struct des_interface des;
+ struct ipban_interface ipban;
+ struct lchrif_interface lchrif;
struct lclif_interface lclif;
struct lclif_interface_private PRIV__lclif;
struct libconfig_interface libconfig;
struct login_interface login;
+ struct loginlog_interface loginlog;
struct md5_interface md5;
struct mutex_interface mutex;
struct nullpo_interface nullpo;
+ struct packets_interface packets;
struct rnd_interface rnd;
struct showmsg_interface showmsg;
struct socket_interface sockt;
diff --git a/src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc
index 125c54a12..825e049b1 100644
--- a/src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc
+++ b/src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2017 Hercules Dev Team
+ * Copyright (C) 2013-2019 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -30,6 +30,26 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(HCache->init, HP_HCache_init) },
{ HP_POP(HCache->check, HP_HCache_check) },
{ HP_POP(HCache->open, HP_HCache_open) },
+/* account_interface */
+ { HP_POP(account->db_sql_up, HP_account_db_sql_up) },
+ { HP_POP(account->mmo_send_accreg2, HP_account_mmo_send_accreg2) },
+ { HP_POP(account->mmo_save_accreg2, HP_account_mmo_save_accreg2) },
+ { HP_POP(account->mmo_auth_fromsql, HP_account_mmo_auth_fromsql) },
+ { HP_POP(account->mmo_auth_tosql, HP_account_mmo_auth_tosql) },
+ { HP_POP(account->db_sql, HP_account_db_sql) },
+ { HP_POP(account->db_sql_init, HP_account_db_sql_init) },
+ { HP_POP(account->db_sql_destroy, HP_account_db_sql_destroy) },
+ { HP_POP(account->db_sql_get_property, HP_account_db_sql_get_property) },
+ { HP_POP(account->db_sql_set_property, HP_account_db_sql_set_property) },
+ { HP_POP(account->db_sql_create, HP_account_db_sql_create) },
+ { HP_POP(account->db_sql_remove, HP_account_db_sql_remove) },
+ { HP_POP(account->db_sql_save, HP_account_db_sql_save) },
+ { HP_POP(account->db_sql_load_num, HP_account_db_sql_load_num) },
+ { HP_POP(account->db_sql_load_str, HP_account_db_sql_load_str) },
+ { HP_POP(account->db_sql_iterator, HP_account_db_sql_iterator) },
+ { HP_POP(account->db_sql_iter_destroy, HP_account_db_sql_iter_destroy) },
+ { HP_POP(account->db_sql_iter_next, HP_account_db_sql_iter_next) },
+ { HP_POP(account->db_read_inter, HP_account_db_read_inter) },
/* cmdline_interface */
{ HP_POP(cmdline->init, HP_cmdline_init) },
{ HP_POP(cmdline->final, HP_cmdline_final) },
@@ -67,6 +87,21 @@ struct HookingPointData HookingPoints[] = {
/* des_interface */
{ HP_POP(des->decrypt_block, HP_des_decrypt_block) },
{ HP_POP(des->decrypt, HP_des_decrypt) },
+/* ipban_interface */
+ { HP_POP(ipban->init, HP_ipban_init) },
+ { HP_POP(ipban->final, HP_ipban_final) },
+ { HP_POP(ipban->cleanup, HP_ipban_cleanup) },
+ { HP_POP(ipban->config_read_inter, HP_ipban_config_read_inter) },
+ { HP_POP(ipban->config_read_connection, HP_ipban_config_read_connection) },
+ { HP_POP(ipban->config_read_dynamic, HP_ipban_config_read_dynamic) },
+ { HP_POP(ipban->config_read, HP_ipban_config_read) },
+ { HP_POP(ipban->check, HP_ipban_check) },
+ { HP_POP(ipban->log, HP_ipban_log) },
+/* lchrif_interface */
+ { HP_POP(lchrif->server_init, HP_lchrif_server_init) },
+ { HP_POP(lchrif->server_destroy, HP_lchrif_server_destroy) },
+ { HP_POP(lchrif->server_reset, HP_lchrif_server_reset) },
+ { HP_POP(lchrif->on_disconnect, HP_lchrif_on_disconnect) },
/* lclif_interface */
{ HP_POP(lclif->init, HP_lclif_init) },
{ HP_POP(lclif->final, HP_lclif_final) },
@@ -90,6 +125,9 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(lclif->p->parse_CA_LOGIN_PCBANG, HP_PRIV__lclif_parse_CA_LOGIN_PCBANG) },
{ HP_POP(lclif->p->parse_CA_LOGIN_HAN, HP_PRIV__lclif_parse_CA_LOGIN_HAN) },
{ HP_POP(lclif->p->parse_CA_SSO_LOGIN_REQ, HP_PRIV__lclif_parse_CA_SSO_LOGIN_REQ) },
+ { HP_POP(lclif->p->parse_CA_LOGIN_OTP, HP_PRIV__lclif_parse_CA_LOGIN_OTP) },
+ { HP_POP(lclif->p->parse_CA_ACK_MOBILE_OTP, HP_PRIV__lclif_parse_CA_ACK_MOBILE_OTP) },
+ { HP_POP(lclif->p->parse_CA_OTP_CODE, HP_PRIV__lclif_parse_CA_OTP_CODE) },
{ HP_POP(lclif->p->parse_CA_REQ_HASH, HP_PRIV__lclif_parse_CA_REQ_HASH) },
{ HP_POP(lclif->p->parse_CA_CHARSERVERCONNECT, HP_PRIV__lclif_parse_CA_CHARSERVERCONNECT) },
/* libconfig_interface */
@@ -207,10 +245,33 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(login->auth_ok, HP_login_auth_ok) },
{ HP_POP(login->auth_failed, HP_login_auth_failed) },
{ HP_POP(login->client_login, HP_login_client_login) },
+ { HP_POP(login->client_login_otp, HP_login_client_login_otp) },
+ { HP_POP(login->client_login_mobile_otp_request, HP_login_client_login_mobile_otp_request) },
{ HP_POP(login->char_server_connection_status, HP_login_char_server_connection_status) },
{ HP_POP(login->parse_request_connection, HP_login_parse_request_connection) },
{ HP_POP(login->config_set_defaults, HP_login_config_set_defaults) },
{ HP_POP(login->config_read, HP_login_config_read) },
+ { HP_POP(login->config_read_inter, HP_login_config_read_inter) },
+ { HP_POP(login->config_read_console, HP_login_config_read_console) },
+ { HP_POP(login->config_read_log, HP_login_config_read_log) },
+ { HP_POP(login->config_read_account, HP_login_config_read_account) },
+ { HP_POP(login->config_read_permission, HP_login_config_read_permission) },
+ { HP_POP(login->config_read_permission_hash, HP_login_config_read_permission_hash) },
+ { HP_POP(login->config_read_permission_blacklist, HP_login_config_read_permission_blacklist) },
+ { HP_POP(login->config_read_users, HP_login_config_read_users) },
+ { HP_POP(login->clear_dnsbl_servers, HP_login_clear_dnsbl_servers) },
+ { HP_POP(login->config_set_dnsbl_servers, HP_login_config_set_dnsbl_servers) },
+ { HP_POP(login->clear_client_hash_nodes, HP_login_clear_client_hash_nodes) },
+ { HP_POP(login->config_set_md5hash, HP_login_config_set_md5hash) },
+ { HP_POP(login->convert_users_to_colors, HP_login_convert_users_to_colors) },
+/* loginlog_interface */
+ { HP_POP(loginlog->failedattempts, HP_loginlog_failedattempts) },
+ { HP_POP(loginlog->log, HP_loginlog_log) },
+ { HP_POP(loginlog->init, HP_loginlog_init) },
+ { HP_POP(loginlog->final, HP_loginlog_final) },
+ { HP_POP(loginlog->config_read_names, HP_loginlog_config_read_names) },
+ { HP_POP(loginlog->config_read_log, HP_loginlog_config_read_log) },
+ { HP_POP(loginlog->config_read, HP_loginlog_config_read) },
/* md5_interface */
{ HP_POP(md5->string, HP_md5_string) },
{ HP_POP(md5->binary, HP_md5_binary) },
@@ -228,6 +289,11 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(mutex->cond_broadcast, HP_mutex_cond_broadcast) },
/* nullpo_interface */
{ HP_POP(nullpo->assert_report, HP_nullpo_assert_report) },
+/* packets_interface */
+ { HP_POP(packets->init, HP_packets_init) },
+ { HP_POP(packets->final, HP_packets_final) },
+ { HP_POP(packets->addLens, HP_packets_addLens) },
+ { HP_POP(packets->addLen, HP_packets_addLen) },
/* rnd_interface */
{ HP_POP(rnd->init, HP_rnd_init) },
{ HP_POP(rnd->final, HP_rnd_final) },
@@ -252,8 +318,10 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(sockt->realloc_fifo, HP_sockt_realloc_fifo) },
{ HP_POP(sockt->realloc_writefifo, HP_sockt_realloc_writefifo) },
{ HP_POP(sockt->wfifoset, HP_sockt_wfifoset) },
+ { HP_POP(sockt->wfifohead, HP_sockt_wfifohead) },
{ HP_POP(sockt->rfifoskip, HP_sockt_rfifoskip) },
{ HP_POP(sockt->close, HP_sockt_close) },
+ { HP_POP(sockt->validateWfifo, HP_sockt_validateWfifo) },
{ HP_POP(sockt->session_is_valid, HP_sockt_session_is_valid) },
{ HP_POP(sockt->session_is_active, HP_sockt_session_is_active) },
{ HP_POP(sockt->flush, HP_sockt_flush) },
diff --git a/src/plugins/HPMHooking/HPMHooking_login.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_login.Hooks.inc
index a7e7afa4e..044ee2df2 100644
--- a/src/plugins/HPMHooking/HPMHooking_login.Hooks.inc
+++ b/src/plugins/HPMHooking/HPMHooking_login.Hooks.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2017 Hercules Dev Team
+ * Copyright (C) 2013-2019 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -28,14 +28,14 @@
/* HCache_interface */
void HP_HCache_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_HCache_init_pre ) {
+ if (HPMHooks.count.HP_HCache_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_HCache_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_HCache_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_HCache_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -43,9 +43,9 @@ void HP_HCache_init(void) {
{
HPMHooks.source.HCache.init();
}
- if( HPMHooks.count.HP_HCache_init_post ) {
+ if (HPMHooks.count.HP_HCache_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_HCache_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_HCache_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_HCache_init_post[hIndex].func;
postHookFunc();
}
@@ -55,14 +55,14 @@ void HP_HCache_init(void) {
bool HP_HCache_check(const char *file) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_HCache_check_pre ) {
+ if (HPMHooks.count.HP_HCache_check_pre > 0) {
bool (*preHookFunc) (const char **file);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_HCache_check_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_HCache_check_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_HCache_check_pre[hIndex].func;
retVal___ = preHookFunc(&file);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -70,9 +70,9 @@ bool HP_HCache_check(const char *file) {
{
retVal___ = HPMHooks.source.HCache.check(file);
}
- if( HPMHooks.count.HP_HCache_check_post ) {
+ if (HPMHooks.count.HP_HCache_check_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *file);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_HCache_check_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_HCache_check_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_HCache_check_post[hIndex].func;
retVal___ = postHookFunc(retVal___, file);
}
@@ -82,14 +82,14 @@ bool HP_HCache_check(const char *file) {
FILE* HP_HCache_open(const char *file, const char *opt) {
int hIndex = 0;
FILE* retVal___ = NULL;
- if( HPMHooks.count.HP_HCache_open_pre ) {
+ if (HPMHooks.count.HP_HCache_open_pre > 0) {
FILE* (*preHookFunc) (const char **file, const char **opt);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_HCache_open_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_HCache_open_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_HCache_open_pre[hIndex].func;
retVal___ = preHookFunc(&file, &opt);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -97,26 +97,536 @@ FILE* HP_HCache_open(const char *file, const char *opt) {
{
retVal___ = HPMHooks.source.HCache.open(file, opt);
}
- if( HPMHooks.count.HP_HCache_open_post ) {
+ if (HPMHooks.count.HP_HCache_open_post > 0) {
FILE* (*postHookFunc) (FILE* retVal___, const char *file, const char *opt);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_HCache_open_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_HCache_open_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_HCache_open_post[hIndex].func;
retVal___ = postHookFunc(retVal___, file, opt);
}
}
return retVal___;
}
+/* account_interface */
+struct Sql* HP_account_db_sql_up(AccountDB *self) {
+ int hIndex = 0;
+ struct Sql* retVal___ = NULL;
+ if (HPMHooks.count.HP_account_db_sql_up_pre > 0) {
+ struct Sql* (*preHookFunc) (AccountDB **self);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_db_sql_up_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_account_db_sql_up_pre[hIndex].func;
+ retVal___ = preHookFunc(&self);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.account.db_sql_up(self);
+ }
+ if (HPMHooks.count.HP_account_db_sql_up_post > 0) {
+ struct Sql* (*postHookFunc) (struct Sql* retVal___, AccountDB *self);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_db_sql_up_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_account_db_sql_up_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, self);
+ }
+ }
+ return retVal___;
+}
+void HP_account_mmo_send_accreg2(AccountDB *self, int fd, int account_id, int char_id) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_account_mmo_send_accreg2_pre > 0) {
+ void (*preHookFunc) (AccountDB **self, int *fd, int *account_id, int *char_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_mmo_send_accreg2_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_account_mmo_send_accreg2_pre[hIndex].func;
+ preHookFunc(&self, &fd, &account_id, &char_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.account.mmo_send_accreg2(self, fd, account_id, char_id);
+ }
+ if (HPMHooks.count.HP_account_mmo_send_accreg2_post > 0) {
+ void (*postHookFunc) (AccountDB *self, int fd, int account_id, int char_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_mmo_send_accreg2_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_account_mmo_send_accreg2_post[hIndex].func;
+ postHookFunc(self, fd, account_id, char_id);
+ }
+ }
+ return;
+}
+void HP_account_mmo_save_accreg2(AccountDB *self, int fd, int account_id, int char_id) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_account_mmo_save_accreg2_pre > 0) {
+ void (*preHookFunc) (AccountDB **self, int *fd, int *account_id, int *char_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_mmo_save_accreg2_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_account_mmo_save_accreg2_pre[hIndex].func;
+ preHookFunc(&self, &fd, &account_id, &char_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.account.mmo_save_accreg2(self, fd, account_id, char_id);
+ }
+ if (HPMHooks.count.HP_account_mmo_save_accreg2_post > 0) {
+ void (*postHookFunc) (AccountDB *self, int fd, int account_id, int char_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_mmo_save_accreg2_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_account_mmo_save_accreg2_post[hIndex].func;
+ postHookFunc(self, fd, account_id, char_id);
+ }
+ }
+ return;
+}
+bool HP_account_mmo_auth_fromsql(AccountDB_SQL *db, struct mmo_account *acc, int account_id) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_account_mmo_auth_fromsql_pre > 0) {
+ bool (*preHookFunc) (AccountDB_SQL **db, struct mmo_account **acc, int *account_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_mmo_auth_fromsql_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_account_mmo_auth_fromsql_pre[hIndex].func;
+ retVal___ = preHookFunc(&db, &acc, &account_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.account.mmo_auth_fromsql(db, acc, account_id);
+ }
+ if (HPMHooks.count.HP_account_mmo_auth_fromsql_post > 0) {
+ bool (*postHookFunc) (bool retVal___, AccountDB_SQL *db, struct mmo_account *acc, int account_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_mmo_auth_fromsql_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_account_mmo_auth_fromsql_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, db, acc, account_id);
+ }
+ }
+ return retVal___;
+}
+bool HP_account_mmo_auth_tosql(AccountDB_SQL *db, const struct mmo_account *acc, bool is_new) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_account_mmo_auth_tosql_pre > 0) {
+ bool (*preHookFunc) (AccountDB_SQL **db, const struct mmo_account **acc, bool *is_new);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_mmo_auth_tosql_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_account_mmo_auth_tosql_pre[hIndex].func;
+ retVal___ = preHookFunc(&db, &acc, &is_new);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.account.mmo_auth_tosql(db, acc, is_new);
+ }
+ if (HPMHooks.count.HP_account_mmo_auth_tosql_post > 0) {
+ bool (*postHookFunc) (bool retVal___, AccountDB_SQL *db, const struct mmo_account *acc, bool is_new);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_mmo_auth_tosql_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_account_mmo_auth_tosql_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, db, acc, is_new);
+ }
+ }
+ return retVal___;
+}
+AccountDB* HP_account_db_sql(void) {
+ int hIndex = 0;
+ AccountDB* retVal___ = NULL;
+ if (HPMHooks.count.HP_account_db_sql_pre > 0) {
+ AccountDB* (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_db_sql_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_account_db_sql_pre[hIndex].func;
+ retVal___ = preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.account.db_sql();
+ }
+ if (HPMHooks.count.HP_account_db_sql_post > 0) {
+ AccountDB* (*postHookFunc) (AccountDB* retVal___);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_db_sql_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_account_db_sql_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___);
+ }
+ }
+ return retVal___;
+}
+bool HP_account_db_sql_init(AccountDB *self) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_account_db_sql_init_pre > 0) {
+ bool (*preHookFunc) (AccountDB **self);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_db_sql_init_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_account_db_sql_init_pre[hIndex].func;
+ retVal___ = preHookFunc(&self);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.account.db_sql_init(self);
+ }
+ if (HPMHooks.count.HP_account_db_sql_init_post > 0) {
+ bool (*postHookFunc) (bool retVal___, AccountDB *self);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_db_sql_init_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_account_db_sql_init_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, self);
+ }
+ }
+ return retVal___;
+}
+void HP_account_db_sql_destroy(AccountDB *self) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_account_db_sql_destroy_pre > 0) {
+ void (*preHookFunc) (AccountDB **self);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_db_sql_destroy_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_account_db_sql_destroy_pre[hIndex].func;
+ preHookFunc(&self);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.account.db_sql_destroy(self);
+ }
+ if (HPMHooks.count.HP_account_db_sql_destroy_post > 0) {
+ void (*postHookFunc) (AccountDB *self);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_db_sql_destroy_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_account_db_sql_destroy_post[hIndex].func;
+ postHookFunc(self);
+ }
+ }
+ return;
+}
+bool HP_account_db_sql_get_property(AccountDB *self, const char *key, char *buf, size_t buflen) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_account_db_sql_get_property_pre > 0) {
+ bool (*preHookFunc) (AccountDB **self, const char **key, char **buf, size_t *buflen);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_db_sql_get_property_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_account_db_sql_get_property_pre[hIndex].func;
+ retVal___ = preHookFunc(&self, &key, &buf, &buflen);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.account.db_sql_get_property(self, key, buf, buflen);
+ }
+ if (HPMHooks.count.HP_account_db_sql_get_property_post > 0) {
+ bool (*postHookFunc) (bool retVal___, AccountDB *self, const char *key, char *buf, size_t buflen);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_db_sql_get_property_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_account_db_sql_get_property_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, self, key, buf, buflen);
+ }
+ }
+ return retVal___;
+}
+bool HP_account_db_sql_set_property(AccountDB *self, struct config_t *config, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_account_db_sql_set_property_pre > 0) {
+ bool (*preHookFunc) (AccountDB **self, struct config_t **config, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_db_sql_set_property_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_account_db_sql_set_property_pre[hIndex].func;
+ retVal___ = preHookFunc(&self, &config, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.account.db_sql_set_property(self, config, imported);
+ }
+ if (HPMHooks.count.HP_account_db_sql_set_property_post > 0) {
+ bool (*postHookFunc) (bool retVal___, AccountDB *self, struct config_t *config, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_db_sql_set_property_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_account_db_sql_set_property_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, self, config, imported);
+ }
+ }
+ return retVal___;
+}
+bool HP_account_db_sql_create(AccountDB *self, struct mmo_account *acc) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_account_db_sql_create_pre > 0) {
+ bool (*preHookFunc) (AccountDB **self, struct mmo_account **acc);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_db_sql_create_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_account_db_sql_create_pre[hIndex].func;
+ retVal___ = preHookFunc(&self, &acc);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.account.db_sql_create(self, acc);
+ }
+ if (HPMHooks.count.HP_account_db_sql_create_post > 0) {
+ bool (*postHookFunc) (bool retVal___, AccountDB *self, struct mmo_account *acc);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_db_sql_create_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_account_db_sql_create_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, self, acc);
+ }
+ }
+ return retVal___;
+}
+bool HP_account_db_sql_remove(AccountDB *self, const int account_id) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_account_db_sql_remove_pre > 0) {
+ bool (*preHookFunc) (AccountDB **self, const int *account_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_db_sql_remove_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_account_db_sql_remove_pre[hIndex].func;
+ retVal___ = preHookFunc(&self, &account_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.account.db_sql_remove(self, account_id);
+ }
+ if (HPMHooks.count.HP_account_db_sql_remove_post > 0) {
+ bool (*postHookFunc) (bool retVal___, AccountDB *self, const int account_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_db_sql_remove_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_account_db_sql_remove_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, self, account_id);
+ }
+ }
+ return retVal___;
+}
+bool HP_account_db_sql_save(AccountDB *self, const struct mmo_account *acc) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_account_db_sql_save_pre > 0) {
+ bool (*preHookFunc) (AccountDB **self, const struct mmo_account **acc);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_db_sql_save_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_account_db_sql_save_pre[hIndex].func;
+ retVal___ = preHookFunc(&self, &acc);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.account.db_sql_save(self, acc);
+ }
+ if (HPMHooks.count.HP_account_db_sql_save_post > 0) {
+ bool (*postHookFunc) (bool retVal___, AccountDB *self, const struct mmo_account *acc);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_db_sql_save_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_account_db_sql_save_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, self, acc);
+ }
+ }
+ return retVal___;
+}
+bool HP_account_db_sql_load_num(AccountDB *self, struct mmo_account *acc, const int account_id) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_account_db_sql_load_num_pre > 0) {
+ bool (*preHookFunc) (AccountDB **self, struct mmo_account **acc, const int *account_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_db_sql_load_num_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_account_db_sql_load_num_pre[hIndex].func;
+ retVal___ = preHookFunc(&self, &acc, &account_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.account.db_sql_load_num(self, acc, account_id);
+ }
+ if (HPMHooks.count.HP_account_db_sql_load_num_post > 0) {
+ bool (*postHookFunc) (bool retVal___, AccountDB *self, struct mmo_account *acc, const int account_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_db_sql_load_num_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_account_db_sql_load_num_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, self, acc, account_id);
+ }
+ }
+ return retVal___;
+}
+bool HP_account_db_sql_load_str(AccountDB *self, struct mmo_account *acc, const char *userid) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_account_db_sql_load_str_pre > 0) {
+ bool (*preHookFunc) (AccountDB **self, struct mmo_account **acc, const char **userid);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_db_sql_load_str_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_account_db_sql_load_str_pre[hIndex].func;
+ retVal___ = preHookFunc(&self, &acc, &userid);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.account.db_sql_load_str(self, acc, userid);
+ }
+ if (HPMHooks.count.HP_account_db_sql_load_str_post > 0) {
+ bool (*postHookFunc) (bool retVal___, AccountDB *self, struct mmo_account *acc, const char *userid);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_db_sql_load_str_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_account_db_sql_load_str_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, self, acc, userid);
+ }
+ }
+ return retVal___;
+}
+AccountDBIterator* HP_account_db_sql_iterator(AccountDB *self) {
+ int hIndex = 0;
+ AccountDBIterator* retVal___ = NULL;
+ if (HPMHooks.count.HP_account_db_sql_iterator_pre > 0) {
+ AccountDBIterator* (*preHookFunc) (AccountDB **self);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_db_sql_iterator_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_account_db_sql_iterator_pre[hIndex].func;
+ retVal___ = preHookFunc(&self);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.account.db_sql_iterator(self);
+ }
+ if (HPMHooks.count.HP_account_db_sql_iterator_post > 0) {
+ AccountDBIterator* (*postHookFunc) (AccountDBIterator* retVal___, AccountDB *self);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_db_sql_iterator_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_account_db_sql_iterator_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, self);
+ }
+ }
+ return retVal___;
+}
+void HP_account_db_sql_iter_destroy(AccountDBIterator *self) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_account_db_sql_iter_destroy_pre > 0) {
+ void (*preHookFunc) (AccountDBIterator **self);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_db_sql_iter_destroy_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_account_db_sql_iter_destroy_pre[hIndex].func;
+ preHookFunc(&self);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.account.db_sql_iter_destroy(self);
+ }
+ if (HPMHooks.count.HP_account_db_sql_iter_destroy_post > 0) {
+ void (*postHookFunc) (AccountDBIterator *self);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_db_sql_iter_destroy_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_account_db_sql_iter_destroy_post[hIndex].func;
+ postHookFunc(self);
+ }
+ }
+ return;
+}
+bool HP_account_db_sql_iter_next(AccountDBIterator *self, struct mmo_account *acc) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_account_db_sql_iter_next_pre > 0) {
+ bool (*preHookFunc) (AccountDBIterator **self, struct mmo_account **acc);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_db_sql_iter_next_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_account_db_sql_iter_next_pre[hIndex].func;
+ retVal___ = preHookFunc(&self, &acc);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.account.db_sql_iter_next(self, acc);
+ }
+ if (HPMHooks.count.HP_account_db_sql_iter_next_post > 0) {
+ bool (*postHookFunc) (bool retVal___, AccountDBIterator *self, struct mmo_account *acc);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_db_sql_iter_next_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_account_db_sql_iter_next_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, self, acc);
+ }
+ }
+ return retVal___;
+}
+bool HP_account_db_read_inter(AccountDB_SQL *db, const char *filename, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_account_db_read_inter_pre > 0) {
+ bool (*preHookFunc) (AccountDB_SQL **db, const char **filename, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_db_read_inter_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_account_db_read_inter_pre[hIndex].func;
+ retVal___ = preHookFunc(&db, &filename, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.account.db_read_inter(db, filename, imported);
+ }
+ if (HPMHooks.count.HP_account_db_read_inter_post > 0) {
+ bool (*postHookFunc) (bool retVal___, AccountDB_SQL *db, const char *filename, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_account_db_read_inter_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_account_db_read_inter_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, db, filename, imported);
+ }
+ }
+ return retVal___;
+}
/* cmdline_interface */
void HP_cmdline_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_cmdline_init_pre ) {
+ if (HPMHooks.count.HP_cmdline_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_cmdline_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -124,9 +634,9 @@ void HP_cmdline_init(void) {
{
HPMHooks.source.cmdline.init();
}
- if( HPMHooks.count.HP_cmdline_init_post ) {
+ if (HPMHooks.count.HP_cmdline_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_cmdline_init_post[hIndex].func;
postHookFunc();
}
@@ -135,14 +645,14 @@ void HP_cmdline_init(void) {
}
void HP_cmdline_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_cmdline_final_pre ) {
+ if (HPMHooks.count.HP_cmdline_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_cmdline_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -150,9 +660,9 @@ void HP_cmdline_final(void) {
{
HPMHooks.source.cmdline.final();
}
- if( HPMHooks.count.HP_cmdline_final_post ) {
+ if (HPMHooks.count.HP_cmdline_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_cmdline_final_post[hIndex].func;
postHookFunc();
}
@@ -162,14 +672,14 @@ void HP_cmdline_final(void) {
bool HP_cmdline_arg_add(unsigned int pluginID, const char *name, char shortname, CmdlineExecFunc func, const char *help, unsigned int options) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_cmdline_arg_add_pre ) {
+ if (HPMHooks.count.HP_cmdline_arg_add_pre > 0) {
bool (*preHookFunc) (unsigned int *pluginID, const char **name, char *shortname, CmdlineExecFunc *func, const char **help, unsigned int *options);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_add_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_add_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_cmdline_arg_add_pre[hIndex].func;
retVal___ = preHookFunc(&pluginID, &name, &shortname, &func, &help, &options);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -177,9 +687,9 @@ bool HP_cmdline_arg_add(unsigned int pluginID, const char *name, char shortname,
{
retVal___ = HPMHooks.source.cmdline.arg_add(pluginID, name, shortname, func, help, options);
}
- if( HPMHooks.count.HP_cmdline_arg_add_post ) {
+ if (HPMHooks.count.HP_cmdline_arg_add_post > 0) {
bool (*postHookFunc) (bool retVal___, unsigned int pluginID, const char *name, char shortname, CmdlineExecFunc func, const char *help, unsigned int options);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_add_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_add_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_cmdline_arg_add_post[hIndex].func;
retVal___ = postHookFunc(retVal___, pluginID, name, shortname, func, help, options);
}
@@ -189,14 +699,14 @@ bool HP_cmdline_arg_add(unsigned int pluginID, const char *name, char shortname,
int HP_cmdline_exec(int argc, char **argv, unsigned int options) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_cmdline_exec_pre ) {
+ if (HPMHooks.count.HP_cmdline_exec_pre > 0) {
int (*preHookFunc) (int *argc, char ***argv, unsigned int *options);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_exec_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_exec_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_cmdline_exec_pre[hIndex].func;
retVal___ = preHookFunc(&argc, &argv, &options);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -204,9 +714,9 @@ int HP_cmdline_exec(int argc, char **argv, unsigned int options) {
{
retVal___ = HPMHooks.source.cmdline.exec(argc, argv, options);
}
- if( HPMHooks.count.HP_cmdline_exec_post ) {
+ if (HPMHooks.count.HP_cmdline_exec_post > 0) {
int (*postHookFunc) (int retVal___, int argc, char **argv, unsigned int options);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_exec_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_exec_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_cmdline_exec_post[hIndex].func;
retVal___ = postHookFunc(retVal___, argc, argv, options);
}
@@ -216,14 +726,14 @@ int HP_cmdline_exec(int argc, char **argv, unsigned int options) {
bool HP_cmdline_arg_next_value(const char *name, int current_arg, int argc) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_cmdline_arg_next_value_pre ) {
+ if (HPMHooks.count.HP_cmdline_arg_next_value_pre > 0) {
bool (*preHookFunc) (const char **name, int *current_arg, int *argc);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_next_value_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_next_value_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_cmdline_arg_next_value_pre[hIndex].func;
retVal___ = preHookFunc(&name, &current_arg, &argc);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -231,9 +741,9 @@ bool HP_cmdline_arg_next_value(const char *name, int current_arg, int argc) {
{
retVal___ = HPMHooks.source.cmdline.arg_next_value(name, current_arg, argc);
}
- if( HPMHooks.count.HP_cmdline_arg_next_value_post ) {
+ if (HPMHooks.count.HP_cmdline_arg_next_value_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *name, int current_arg, int argc);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_next_value_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_next_value_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_cmdline_arg_next_value_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name, current_arg, argc);
}
@@ -243,14 +753,14 @@ bool HP_cmdline_arg_next_value(const char *name, int current_arg, int argc) {
const char* HP_cmdline_arg_source(struct CmdlineArgData *arg) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_cmdline_arg_source_pre ) {
+ if (HPMHooks.count.HP_cmdline_arg_source_pre > 0) {
const char* (*preHookFunc) (struct CmdlineArgData **arg);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_source_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_source_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_cmdline_arg_source_pre[hIndex].func;
retVal___ = preHookFunc(&arg);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -258,9 +768,9 @@ const char* HP_cmdline_arg_source(struct CmdlineArgData *arg) {
{
retVal___ = HPMHooks.source.cmdline.arg_source(arg);
}
- if( HPMHooks.count.HP_cmdline_arg_source_post ) {
+ if (HPMHooks.count.HP_cmdline_arg_source_post > 0) {
const char* (*postHookFunc) (const char* retVal___, struct CmdlineArgData *arg);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_source_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_source_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_cmdline_arg_source_post[hIndex].func;
retVal___ = postHookFunc(retVal___, arg);
}
@@ -270,14 +780,14 @@ const char* HP_cmdline_arg_source(struct CmdlineArgData *arg) {
/* console_interface */
void HP_console_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_console_init_pre ) {
+ if (HPMHooks.count.HP_console_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_console_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_console_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_console_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -285,9 +795,9 @@ void HP_console_init(void) {
{
HPMHooks.source.console.init();
}
- if( HPMHooks.count.HP_console_init_post ) {
+ if (HPMHooks.count.HP_console_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_console_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_console_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_console_init_post[hIndex].func;
postHookFunc();
}
@@ -296,14 +806,14 @@ void HP_console_init(void) {
}
void HP_console_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_console_final_pre ) {
+ if (HPMHooks.count.HP_console_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_console_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_console_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_console_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -311,9 +821,9 @@ void HP_console_final(void) {
{
HPMHooks.source.console.final();
}
- if( HPMHooks.count.HP_console_final_post ) {
+ if (HPMHooks.count.HP_console_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_console_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_console_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_console_final_post[hIndex].func;
postHookFunc();
}
@@ -322,14 +832,14 @@ void HP_console_final(void) {
}
void HP_console_display_title(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_console_display_title_pre ) {
+ if (HPMHooks.count.HP_console_display_title_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_console_display_title_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_console_display_title_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_console_display_title_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -337,9 +847,9 @@ void HP_console_display_title(void) {
{
HPMHooks.source.console.display_title();
}
- if( HPMHooks.count.HP_console_display_title_post ) {
+ if (HPMHooks.count.HP_console_display_title_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_console_display_title_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_console_display_title_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_console_display_title_post[hIndex].func;
postHookFunc();
}
@@ -348,14 +858,14 @@ void HP_console_display_title(void) {
}
void HP_console_display_gplnotice(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_console_display_gplnotice_pre ) {
+ if (HPMHooks.count.HP_console_display_gplnotice_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_console_display_gplnotice_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_console_display_gplnotice_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_console_display_gplnotice_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -363,9 +873,9 @@ void HP_console_display_gplnotice(void) {
{
HPMHooks.source.console.display_gplnotice();
}
- if( HPMHooks.count.HP_console_display_gplnotice_post ) {
+ if (HPMHooks.count.HP_console_display_gplnotice_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_console_display_gplnotice_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_console_display_gplnotice_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_console_display_gplnotice_post[hIndex].func;
postHookFunc();
}
@@ -375,14 +885,14 @@ void HP_console_display_gplnotice(void) {
/* core_interface */
void HP_core_shutdown_callback(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_core_shutdown_callback_pre ) {
+ if (HPMHooks.count.HP_core_shutdown_callback_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_core_shutdown_callback_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_core_shutdown_callback_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_core_shutdown_callback_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -390,9 +900,9 @@ void HP_core_shutdown_callback(void) {
{
HPMHooks.source.core.shutdown_callback();
}
- if( HPMHooks.count.HP_core_shutdown_callback_post ) {
+ if (HPMHooks.count.HP_core_shutdown_callback_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_core_shutdown_callback_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_core_shutdown_callback_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_core_shutdown_callback_post[hIndex].func;
postHookFunc();
}
@@ -403,14 +913,14 @@ void HP_core_shutdown_callback(void) {
enum DBOptions HP_DB_fix_options(enum DBType type, enum DBOptions options) {
int hIndex = 0;
enum DBOptions retVal___ = DB_OPT_BASE;
- if( HPMHooks.count.HP_DB_fix_options_pre ) {
+ if (HPMHooks.count.HP_DB_fix_options_pre > 0) {
enum DBOptions (*preHookFunc) (enum DBType *type, enum DBOptions *options);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_fix_options_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_fix_options_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_fix_options_pre[hIndex].func;
retVal___ = preHookFunc(&type, &options);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -418,9 +928,9 @@ enum DBOptions HP_DB_fix_options(enum DBType type, enum DBOptions options) {
{
retVal___ = HPMHooks.source.DB.fix_options(type, options);
}
- if( HPMHooks.count.HP_DB_fix_options_post ) {
+ if (HPMHooks.count.HP_DB_fix_options_post > 0) {
enum DBOptions (*postHookFunc) (enum DBOptions retVal___, enum DBType type, enum DBOptions options);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_fix_options_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_fix_options_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_fix_options_post[hIndex].func;
retVal___ = postHookFunc(retVal___, type, options);
}
@@ -430,14 +940,14 @@ enum DBOptions HP_DB_fix_options(enum DBType type, enum DBOptions options) {
DBComparator HP_DB_default_cmp(enum DBType type) {
int hIndex = 0;
DBComparator retVal___ = NULL;
- if( HPMHooks.count.HP_DB_default_cmp_pre ) {
+ if (HPMHooks.count.HP_DB_default_cmp_pre > 0) {
DBComparator (*preHookFunc) (enum DBType *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_cmp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_cmp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_default_cmp_pre[hIndex].func;
retVal___ = preHookFunc(&type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -445,9 +955,9 @@ DBComparator HP_DB_default_cmp(enum DBType type) {
{
retVal___ = HPMHooks.source.DB.default_cmp(type);
}
- if( HPMHooks.count.HP_DB_default_cmp_post ) {
+ if (HPMHooks.count.HP_DB_default_cmp_post > 0) {
DBComparator (*postHookFunc) (DBComparator retVal___, enum DBType type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_cmp_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_cmp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_default_cmp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, type);
}
@@ -457,14 +967,14 @@ DBComparator HP_DB_default_cmp(enum DBType type) {
DBHasher HP_DB_default_hash(enum DBType type) {
int hIndex = 0;
DBHasher retVal___ = NULL;
- if( HPMHooks.count.HP_DB_default_hash_pre ) {
+ if (HPMHooks.count.HP_DB_default_hash_pre > 0) {
DBHasher (*preHookFunc) (enum DBType *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_hash_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_hash_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_default_hash_pre[hIndex].func;
retVal___ = preHookFunc(&type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -472,9 +982,9 @@ DBHasher HP_DB_default_hash(enum DBType type) {
{
retVal___ = HPMHooks.source.DB.default_hash(type);
}
- if( HPMHooks.count.HP_DB_default_hash_post ) {
+ if (HPMHooks.count.HP_DB_default_hash_post > 0) {
DBHasher (*postHookFunc) (DBHasher retVal___, enum DBType type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_hash_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_hash_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_default_hash_post[hIndex].func;
retVal___ = postHookFunc(retVal___, type);
}
@@ -484,14 +994,14 @@ DBHasher HP_DB_default_hash(enum DBType type) {
DBReleaser HP_DB_default_release(enum DBType type, enum DBOptions options) {
int hIndex = 0;
DBReleaser retVal___ = NULL;
- if( HPMHooks.count.HP_DB_default_release_pre ) {
+ if (HPMHooks.count.HP_DB_default_release_pre > 0) {
DBReleaser (*preHookFunc) (enum DBType *type, enum DBOptions *options);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_release_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_release_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_default_release_pre[hIndex].func;
retVal___ = preHookFunc(&type, &options);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -499,9 +1009,9 @@ DBReleaser HP_DB_default_release(enum DBType type, enum DBOptions options) {
{
retVal___ = HPMHooks.source.DB.default_release(type, options);
}
- if( HPMHooks.count.HP_DB_default_release_post ) {
+ if (HPMHooks.count.HP_DB_default_release_post > 0) {
DBReleaser (*postHookFunc) (DBReleaser retVal___, enum DBType type, enum DBOptions options);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_release_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_release_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_default_release_post[hIndex].func;
retVal___ = postHookFunc(retVal___, type, options);
}
@@ -511,14 +1021,14 @@ DBReleaser HP_DB_default_release(enum DBType type, enum DBOptions options) {
DBReleaser HP_DB_custom_release(enum DBReleaseOption which) {
int hIndex = 0;
DBReleaser retVal___ = NULL;
- if( HPMHooks.count.HP_DB_custom_release_pre ) {
+ if (HPMHooks.count.HP_DB_custom_release_pre > 0) {
DBReleaser (*preHookFunc) (enum DBReleaseOption *which);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_custom_release_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_custom_release_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_custom_release_pre[hIndex].func;
retVal___ = preHookFunc(&which);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -526,9 +1036,9 @@ DBReleaser HP_DB_custom_release(enum DBReleaseOption which) {
{
retVal___ = HPMHooks.source.DB.custom_release(which);
}
- if( HPMHooks.count.HP_DB_custom_release_post ) {
+ if (HPMHooks.count.HP_DB_custom_release_post > 0) {
DBReleaser (*postHookFunc) (DBReleaser retVal___, enum DBReleaseOption which);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_custom_release_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_custom_release_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_custom_release_post[hIndex].func;
retVal___ = postHookFunc(retVal___, which);
}
@@ -538,14 +1048,14 @@ DBReleaser HP_DB_custom_release(enum DBReleaseOption which) {
struct DBMap* HP_DB_alloc(const char *file, const char *func, int line, enum DBType type, enum DBOptions options, unsigned short maxlen) {
int hIndex = 0;
struct DBMap* retVal___ = NULL;
- if( HPMHooks.count.HP_DB_alloc_pre ) {
+ if (HPMHooks.count.HP_DB_alloc_pre > 0) {
struct DBMap* (*preHookFunc) (const char **file, const char **func, int *line, enum DBType *type, enum DBOptions *options, unsigned short *maxlen);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_alloc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_alloc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_alloc_pre[hIndex].func;
retVal___ = preHookFunc(&file, &func, &line, &type, &options, &maxlen);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -553,9 +1063,9 @@ struct DBMap* HP_DB_alloc(const char *file, const char *func, int line, enum DBT
{
retVal___ = HPMHooks.source.DB.alloc(file, func, line, type, options, maxlen);
}
- if( HPMHooks.count.HP_DB_alloc_post ) {
+ if (HPMHooks.count.HP_DB_alloc_post > 0) {
struct DBMap* (*postHookFunc) (struct DBMap* retVal___, const char *file, const char *func, int line, enum DBType type, enum DBOptions options, unsigned short maxlen);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_alloc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_alloc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_alloc_post[hIndex].func;
retVal___ = postHookFunc(retVal___, file, func, line, type, options, maxlen);
}
@@ -565,14 +1075,14 @@ struct DBMap* HP_DB_alloc(const char *file, const char *func, int line, enum DBT
union DBKey HP_DB_i2key(int key) {
int hIndex = 0;
union DBKey retVal___ = { 0 };
- if( HPMHooks.count.HP_DB_i2key_pre ) {
+ if (HPMHooks.count.HP_DB_i2key_pre > 0) {
union DBKey (*preHookFunc) (int *key);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_i2key_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_i2key_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_i2key_pre[hIndex].func;
retVal___ = preHookFunc(&key);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -580,9 +1090,9 @@ union DBKey HP_DB_i2key(int key) {
{
retVal___ = HPMHooks.source.DB.i2key(key);
}
- if( HPMHooks.count.HP_DB_i2key_post ) {
+ if (HPMHooks.count.HP_DB_i2key_post > 0) {
union DBKey (*postHookFunc) (union DBKey retVal___, int key);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_i2key_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_i2key_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_i2key_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key);
}
@@ -592,14 +1102,14 @@ union DBKey HP_DB_i2key(int key) {
union DBKey HP_DB_ui2key(unsigned int key) {
int hIndex = 0;
union DBKey retVal___ = { 0 };
- if( HPMHooks.count.HP_DB_ui2key_pre ) {
+ if (HPMHooks.count.HP_DB_ui2key_pre > 0) {
union DBKey (*preHookFunc) (unsigned int *key);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui2key_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui2key_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_ui2key_pre[hIndex].func;
retVal___ = preHookFunc(&key);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -607,9 +1117,9 @@ union DBKey HP_DB_ui2key(unsigned int key) {
{
retVal___ = HPMHooks.source.DB.ui2key(key);
}
- if( HPMHooks.count.HP_DB_ui2key_post ) {
+ if (HPMHooks.count.HP_DB_ui2key_post > 0) {
union DBKey (*postHookFunc) (union DBKey retVal___, unsigned int key);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui2key_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui2key_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_ui2key_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key);
}
@@ -619,14 +1129,14 @@ union DBKey HP_DB_ui2key(unsigned int key) {
union DBKey HP_DB_str2key(const char *key) {
int hIndex = 0;
union DBKey retVal___ = { 0 };
- if( HPMHooks.count.HP_DB_str2key_pre ) {
+ if (HPMHooks.count.HP_DB_str2key_pre > 0) {
union DBKey (*preHookFunc) (const char **key);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_str2key_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_str2key_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_str2key_pre[hIndex].func;
retVal___ = preHookFunc(&key);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -634,9 +1144,9 @@ union DBKey HP_DB_str2key(const char *key) {
{
retVal___ = HPMHooks.source.DB.str2key(key);
}
- if( HPMHooks.count.HP_DB_str2key_post ) {
+ if (HPMHooks.count.HP_DB_str2key_post > 0) {
union DBKey (*postHookFunc) (union DBKey retVal___, const char *key);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_str2key_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_str2key_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_str2key_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key);
}
@@ -646,14 +1156,14 @@ union DBKey HP_DB_str2key(const char *key) {
union DBKey HP_DB_i642key(int64 key) {
int hIndex = 0;
union DBKey retVal___ = { 0 };
- if( HPMHooks.count.HP_DB_i642key_pre ) {
+ if (HPMHooks.count.HP_DB_i642key_pre > 0) {
union DBKey (*preHookFunc) (int64 *key);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_i642key_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_i642key_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_i642key_pre[hIndex].func;
retVal___ = preHookFunc(&key);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -661,9 +1171,9 @@ union DBKey HP_DB_i642key(int64 key) {
{
retVal___ = HPMHooks.source.DB.i642key(key);
}
- if( HPMHooks.count.HP_DB_i642key_post ) {
+ if (HPMHooks.count.HP_DB_i642key_post > 0) {
union DBKey (*postHookFunc) (union DBKey retVal___, int64 key);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_i642key_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_i642key_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_i642key_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key);
}
@@ -673,14 +1183,14 @@ union DBKey HP_DB_i642key(int64 key) {
union DBKey HP_DB_ui642key(uint64 key) {
int hIndex = 0;
union DBKey retVal___ = { 0 };
- if( HPMHooks.count.HP_DB_ui642key_pre ) {
+ if (HPMHooks.count.HP_DB_ui642key_pre > 0) {
union DBKey (*preHookFunc) (uint64 *key);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui642key_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui642key_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_ui642key_pre[hIndex].func;
retVal___ = preHookFunc(&key);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -688,9 +1198,9 @@ union DBKey HP_DB_ui642key(uint64 key) {
{
retVal___ = HPMHooks.source.DB.ui642key(key);
}
- if( HPMHooks.count.HP_DB_ui642key_post ) {
+ if (HPMHooks.count.HP_DB_ui642key_post > 0) {
union DBKey (*postHookFunc) (union DBKey retVal___, uint64 key);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui642key_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui642key_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_ui642key_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key);
}
@@ -700,14 +1210,14 @@ union DBKey HP_DB_ui642key(uint64 key) {
struct DBData HP_DB_i2data(int data) {
int hIndex = 0;
struct DBData retVal___ = { 0 };
- if( HPMHooks.count.HP_DB_i2data_pre ) {
+ if (HPMHooks.count.HP_DB_i2data_pre > 0) {
struct DBData (*preHookFunc) (int *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_i2data_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_i2data_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_i2data_pre[hIndex].func;
retVal___ = preHookFunc(&data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -715,9 +1225,9 @@ struct DBData HP_DB_i2data(int data) {
{
retVal___ = HPMHooks.source.DB.i2data(data);
}
- if( HPMHooks.count.HP_DB_i2data_post ) {
+ if (HPMHooks.count.HP_DB_i2data_post > 0) {
struct DBData (*postHookFunc) (struct DBData retVal___, int data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_i2data_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_i2data_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_i2data_post[hIndex].func;
retVal___ = postHookFunc(retVal___, data);
}
@@ -727,14 +1237,14 @@ struct DBData HP_DB_i2data(int data) {
struct DBData HP_DB_ui2data(unsigned int data) {
int hIndex = 0;
struct DBData retVal___ = { 0 };
- if( HPMHooks.count.HP_DB_ui2data_pre ) {
+ if (HPMHooks.count.HP_DB_ui2data_pre > 0) {
struct DBData (*preHookFunc) (unsigned int *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui2data_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui2data_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_ui2data_pre[hIndex].func;
retVal___ = preHookFunc(&data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -742,9 +1252,9 @@ struct DBData HP_DB_ui2data(unsigned int data) {
{
retVal___ = HPMHooks.source.DB.ui2data(data);
}
- if( HPMHooks.count.HP_DB_ui2data_post ) {
+ if (HPMHooks.count.HP_DB_ui2data_post > 0) {
struct DBData (*postHookFunc) (struct DBData retVal___, unsigned int data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui2data_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui2data_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_ui2data_post[hIndex].func;
retVal___ = postHookFunc(retVal___, data);
}
@@ -754,14 +1264,14 @@ struct DBData HP_DB_ui2data(unsigned int data) {
struct DBData HP_DB_ptr2data(void *data) {
int hIndex = 0;
struct DBData retVal___ = { 0 };
- if( HPMHooks.count.HP_DB_ptr2data_pre ) {
+ if (HPMHooks.count.HP_DB_ptr2data_pre > 0) {
struct DBData (*preHookFunc) (void **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_ptr2data_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_ptr2data_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_ptr2data_pre[hIndex].func;
retVal___ = preHookFunc(&data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -769,9 +1279,9 @@ struct DBData HP_DB_ptr2data(void *data) {
{
retVal___ = HPMHooks.source.DB.ptr2data(data);
}
- if( HPMHooks.count.HP_DB_ptr2data_post ) {
+ if (HPMHooks.count.HP_DB_ptr2data_post > 0) {
struct DBData (*postHookFunc) (struct DBData retVal___, void *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_ptr2data_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_ptr2data_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_ptr2data_post[hIndex].func;
retVal___ = postHookFunc(retVal___, data);
}
@@ -781,14 +1291,14 @@ struct DBData HP_DB_ptr2data(void *data) {
int HP_DB_data2i(struct DBData *data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_DB_data2i_pre ) {
+ if (HPMHooks.count.HP_DB_data2i_pre > 0) {
int (*preHookFunc) (struct DBData **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2i_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2i_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_data2i_pre[hIndex].func;
retVal___ = preHookFunc(&data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -796,9 +1306,9 @@ int HP_DB_data2i(struct DBData *data) {
{
retVal___ = HPMHooks.source.DB.data2i(data);
}
- if( HPMHooks.count.HP_DB_data2i_post ) {
+ if (HPMHooks.count.HP_DB_data2i_post > 0) {
int (*postHookFunc) (int retVal___, struct DBData *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2i_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2i_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_data2i_post[hIndex].func;
retVal___ = postHookFunc(retVal___, data);
}
@@ -808,14 +1318,14 @@ int HP_DB_data2i(struct DBData *data) {
unsigned int HP_DB_data2ui(struct DBData *data) {
int hIndex = 0;
unsigned int retVal___ = 0;
- if( HPMHooks.count.HP_DB_data2ui_pre ) {
+ if (HPMHooks.count.HP_DB_data2ui_pre > 0) {
unsigned int (*preHookFunc) (struct DBData **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2ui_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2ui_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_data2ui_pre[hIndex].func;
retVal___ = preHookFunc(&data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -823,9 +1333,9 @@ unsigned int HP_DB_data2ui(struct DBData *data) {
{
retVal___ = HPMHooks.source.DB.data2ui(data);
}
- if( HPMHooks.count.HP_DB_data2ui_post ) {
+ if (HPMHooks.count.HP_DB_data2ui_post > 0) {
unsigned int (*postHookFunc) (unsigned int retVal___, struct DBData *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2ui_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2ui_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_data2ui_post[hIndex].func;
retVal___ = postHookFunc(retVal___, data);
}
@@ -835,14 +1345,14 @@ unsigned int HP_DB_data2ui(struct DBData *data) {
void* HP_DB_data2ptr(struct DBData *data) {
int hIndex = 0;
void* retVal___ = NULL;
- if( HPMHooks.count.HP_DB_data2ptr_pre ) {
+ if (HPMHooks.count.HP_DB_data2ptr_pre > 0) {
void* (*preHookFunc) (struct DBData **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2ptr_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2ptr_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_data2ptr_pre[hIndex].func;
retVal___ = preHookFunc(&data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -850,9 +1360,9 @@ void* HP_DB_data2ptr(struct DBData *data) {
{
retVal___ = HPMHooks.source.DB.data2ptr(data);
}
- if( HPMHooks.count.HP_DB_data2ptr_post ) {
+ if (HPMHooks.count.HP_DB_data2ptr_post > 0) {
void* (*postHookFunc) (void* retVal___, struct DBData *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2ptr_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2ptr_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_data2ptr_post[hIndex].func;
retVal___ = postHookFunc(retVal___, data);
}
@@ -861,14 +1371,14 @@ void* HP_DB_data2ptr(struct DBData *data) {
}
void HP_DB_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_DB_init_pre ) {
+ if (HPMHooks.count.HP_DB_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -876,9 +1386,9 @@ void HP_DB_init(void) {
{
HPMHooks.source.DB.init();
}
- if( HPMHooks.count.HP_DB_init_post ) {
+ if (HPMHooks.count.HP_DB_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_init_post[hIndex].func;
postHookFunc();
}
@@ -887,14 +1397,14 @@ void HP_DB_init(void) {
}
void HP_DB_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_DB_final_pre ) {
+ if (HPMHooks.count.HP_DB_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -902,9 +1412,9 @@ void HP_DB_final(void) {
{
HPMHooks.source.DB.final();
}
- if( HPMHooks.count.HP_DB_final_post ) {
+ if (HPMHooks.count.HP_DB_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_final_post[hIndex].func;
postHookFunc();
}
@@ -914,14 +1424,14 @@ void HP_DB_final(void) {
/* des_interface */
void HP_des_decrypt_block(struct des_bit64 *block) {
int hIndex = 0;
- if( HPMHooks.count.HP_des_decrypt_block_pre ) {
+ if (HPMHooks.count.HP_des_decrypt_block_pre > 0) {
void (*preHookFunc) (struct des_bit64 **block);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_des_decrypt_block_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_des_decrypt_block_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_des_decrypt_block_pre[hIndex].func;
preHookFunc(&block);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -929,9 +1439,9 @@ void HP_des_decrypt_block(struct des_bit64 *block) {
{
HPMHooks.source.des.decrypt_block(block);
}
- if( HPMHooks.count.HP_des_decrypt_block_post ) {
+ if (HPMHooks.count.HP_des_decrypt_block_post > 0) {
void (*postHookFunc) (struct des_bit64 *block);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_des_decrypt_block_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_des_decrypt_block_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_des_decrypt_block_post[hIndex].func;
postHookFunc(block);
}
@@ -940,14 +1450,14 @@ void HP_des_decrypt_block(struct des_bit64 *block) {
}
void HP_des_decrypt(unsigned char *data, size_t size) {
int hIndex = 0;
- if( HPMHooks.count.HP_des_decrypt_pre ) {
+ if (HPMHooks.count.HP_des_decrypt_pre > 0) {
void (*preHookFunc) (unsigned char **data, size_t *size);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_des_decrypt_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_des_decrypt_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_des_decrypt_pre[hIndex].func;
preHookFunc(&data, &size);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -955,26 +1465,372 @@ void HP_des_decrypt(unsigned char *data, size_t size) {
{
HPMHooks.source.des.decrypt(data, size);
}
- if( HPMHooks.count.HP_des_decrypt_post ) {
+ if (HPMHooks.count.HP_des_decrypt_post > 0) {
void (*postHookFunc) (unsigned char *data, size_t size);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_des_decrypt_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_des_decrypt_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_des_decrypt_post[hIndex].func;
postHookFunc(data, size);
}
}
return;
}
+/* ipban_interface */
+void HP_ipban_init(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_ipban_init_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ipban_init_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_ipban_init_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.ipban.init();
+ }
+ if (HPMHooks.count.HP_ipban_init_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ipban_init_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_ipban_init_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+void HP_ipban_final(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_ipban_final_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ipban_final_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_ipban_final_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.ipban.final();
+ }
+ if (HPMHooks.count.HP_ipban_final_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ipban_final_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_ipban_final_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+int HP_ipban_cleanup(int tid, int64 tick, int id, intptr_t data) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_ipban_cleanup_pre > 0) {
+ int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ipban_cleanup_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_ipban_cleanup_pre[hIndex].func;
+ retVal___ = preHookFunc(&tid, &tick, &id, &data);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.ipban.cleanup(tid, tick, id, data);
+ }
+ if (HPMHooks.count.HP_ipban_cleanup_post > 0) {
+ int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ipban_cleanup_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_ipban_cleanup_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, tid, tick, id, data);
+ }
+ }
+ return retVal___;
+}
+bool HP_ipban_config_read_inter(const char *filename, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_ipban_config_read_inter_pre > 0) {
+ bool (*preHookFunc) (const char **filename, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ipban_config_read_inter_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_ipban_config_read_inter_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.ipban.config_read_inter(filename, imported);
+ }
+ if (HPMHooks.count.HP_ipban_config_read_inter_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *filename, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ipban_config_read_inter_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_ipban_config_read_inter_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, imported);
+ }
+ }
+ return retVal___;
+}
+bool HP_ipban_config_read_connection(const char *filename, struct config_t *config, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_ipban_config_read_connection_pre > 0) {
+ bool (*preHookFunc) (const char **filename, struct config_t **config, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ipban_config_read_connection_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_ipban_config_read_connection_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &config, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.ipban.config_read_connection(filename, config, imported);
+ }
+ if (HPMHooks.count.HP_ipban_config_read_connection_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ipban_config_read_connection_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_ipban_config_read_connection_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, config, imported);
+ }
+ }
+ return retVal___;
+}
+bool HP_ipban_config_read_dynamic(const char *filename, struct config_t *config, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_ipban_config_read_dynamic_pre > 0) {
+ bool (*preHookFunc) (const char **filename, struct config_t **config, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ipban_config_read_dynamic_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_ipban_config_read_dynamic_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &config, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.ipban.config_read_dynamic(filename, config, imported);
+ }
+ if (HPMHooks.count.HP_ipban_config_read_dynamic_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ipban_config_read_dynamic_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_ipban_config_read_dynamic_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, config, imported);
+ }
+ }
+ return retVal___;
+}
+bool HP_ipban_config_read(const char *filename, struct config_t *config, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_ipban_config_read_pre > 0) {
+ bool (*preHookFunc) (const char **filename, struct config_t **config, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ipban_config_read_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_ipban_config_read_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &config, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.ipban.config_read(filename, config, imported);
+ }
+ if (HPMHooks.count.HP_ipban_config_read_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ipban_config_read_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_ipban_config_read_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, config, imported);
+ }
+ }
+ return retVal___;
+}
+bool HP_ipban_check(uint32 ip) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_ipban_check_pre > 0) {
+ bool (*preHookFunc) (uint32 *ip);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ipban_check_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_ipban_check_pre[hIndex].func;
+ retVal___ = preHookFunc(&ip);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.ipban.check(ip);
+ }
+ if (HPMHooks.count.HP_ipban_check_post > 0) {
+ bool (*postHookFunc) (bool retVal___, uint32 ip);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ipban_check_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_ipban_check_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, ip);
+ }
+ }
+ return retVal___;
+}
+void HP_ipban_log(uint32 ip) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_ipban_log_pre > 0) {
+ void (*preHookFunc) (uint32 *ip);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ipban_log_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_ipban_log_pre[hIndex].func;
+ preHookFunc(&ip);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.ipban.log(ip);
+ }
+ if (HPMHooks.count.HP_ipban_log_post > 0) {
+ void (*postHookFunc) (uint32 ip);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ipban_log_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_ipban_log_post[hIndex].func;
+ postHookFunc(ip);
+ }
+ }
+ return;
+}
+/* lchrif_interface */
+void HP_lchrif_server_init(int id) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_lchrif_server_init_pre > 0) {
+ void (*preHookFunc) (int *id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_lchrif_server_init_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_lchrif_server_init_pre[hIndex].func;
+ preHookFunc(&id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.lchrif.server_init(id);
+ }
+ if (HPMHooks.count.HP_lchrif_server_init_post > 0) {
+ void (*postHookFunc) (int id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_lchrif_server_init_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_lchrif_server_init_post[hIndex].func;
+ postHookFunc(id);
+ }
+ }
+ return;
+}
+void HP_lchrif_server_destroy(int id) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_lchrif_server_destroy_pre > 0) {
+ void (*preHookFunc) (int *id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_lchrif_server_destroy_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_lchrif_server_destroy_pre[hIndex].func;
+ preHookFunc(&id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.lchrif.server_destroy(id);
+ }
+ if (HPMHooks.count.HP_lchrif_server_destroy_post > 0) {
+ void (*postHookFunc) (int id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_lchrif_server_destroy_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_lchrif_server_destroy_post[hIndex].func;
+ postHookFunc(id);
+ }
+ }
+ return;
+}
+void HP_lchrif_server_reset(int id) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_lchrif_server_reset_pre > 0) {
+ void (*preHookFunc) (int *id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_lchrif_server_reset_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_lchrif_server_reset_pre[hIndex].func;
+ preHookFunc(&id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.lchrif.server_reset(id);
+ }
+ if (HPMHooks.count.HP_lchrif_server_reset_post > 0) {
+ void (*postHookFunc) (int id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_lchrif_server_reset_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_lchrif_server_reset_post[hIndex].func;
+ postHookFunc(id);
+ }
+ }
+ return;
+}
+void HP_lchrif_on_disconnect(int id) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_lchrif_on_disconnect_pre > 0) {
+ void (*preHookFunc) (int *id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_lchrif_on_disconnect_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_lchrif_on_disconnect_pre[hIndex].func;
+ preHookFunc(&id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.lchrif.on_disconnect(id);
+ }
+ if (HPMHooks.count.HP_lchrif_on_disconnect_post > 0) {
+ void (*postHookFunc) (int id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_lchrif_on_disconnect_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_lchrif_on_disconnect_post[hIndex].func;
+ postHookFunc(id);
+ }
+ }
+ return;
+}
/* lclif_interface */
void HP_lclif_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_lclif_init_pre ) {
+ if (HPMHooks.count.HP_lclif_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_lclif_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_lclif_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_lclif_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -982,9 +1838,9 @@ void HP_lclif_init(void) {
{
HPMHooks.source.lclif.init();
}
- if( HPMHooks.count.HP_lclif_init_post ) {
+ if (HPMHooks.count.HP_lclif_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_lclif_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_lclif_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_lclif_init_post[hIndex].func;
postHookFunc();
}
@@ -993,14 +1849,14 @@ void HP_lclif_init(void) {
}
void HP_lclif_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_lclif_final_pre ) {
+ if (HPMHooks.count.HP_lclif_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_lclif_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_lclif_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_lclif_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1008,9 +1864,9 @@ void HP_lclif_final(void) {
{
HPMHooks.source.lclif.final();
}
- if( HPMHooks.count.HP_lclif_final_post ) {
+ if (HPMHooks.count.HP_lclif_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_lclif_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_lclif_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_lclif_final_post[hIndex].func;
postHookFunc();
}
@@ -1019,14 +1875,14 @@ void HP_lclif_final(void) {
}
void HP_lclif_connection_error(int fd, uint8 error) {
int hIndex = 0;
- if( HPMHooks.count.HP_lclif_connection_error_pre ) {
+ if (HPMHooks.count.HP_lclif_connection_error_pre > 0) {
void (*preHookFunc) (int *fd, uint8 *error);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_lclif_connection_error_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_lclif_connection_error_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_lclif_connection_error_pre[hIndex].func;
preHookFunc(&fd, &error);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1034,9 +1890,9 @@ void HP_lclif_connection_error(int fd, uint8 error) {
{
HPMHooks.source.lclif.connection_error(fd, error);
}
- if( HPMHooks.count.HP_lclif_connection_error_post ) {
+ if (HPMHooks.count.HP_lclif_connection_error_post > 0) {
void (*postHookFunc) (int fd, uint8 error);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_lclif_connection_error_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_lclif_connection_error_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_lclif_connection_error_post[hIndex].func;
postHookFunc(fd, error);
}
@@ -1046,14 +1902,14 @@ void HP_lclif_connection_error(int fd, uint8 error) {
bool HP_lclif_server_list(struct login_session_data *sd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_lclif_server_list_pre ) {
+ if (HPMHooks.count.HP_lclif_server_list_pre > 0) {
bool (*preHookFunc) (struct login_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_lclif_server_list_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_lclif_server_list_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_lclif_server_list_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1061,9 +1917,9 @@ bool HP_lclif_server_list(struct login_session_data *sd) {
{
retVal___ = HPMHooks.source.lclif.server_list(sd);
}
- if( HPMHooks.count.HP_lclif_server_list_post ) {
+ if (HPMHooks.count.HP_lclif_server_list_post > 0) {
bool (*postHookFunc) (bool retVal___, struct login_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_lclif_server_list_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_lclif_server_list_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_lclif_server_list_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -1072,14 +1928,14 @@ bool HP_lclif_server_list(struct login_session_data *sd) {
}
void HP_lclif_auth_failed(int fd, time_t ban, uint32 error) {
int hIndex = 0;
- if( HPMHooks.count.HP_lclif_auth_failed_pre ) {
+ if (HPMHooks.count.HP_lclif_auth_failed_pre > 0) {
void (*preHookFunc) (int *fd, time_t *ban, uint32 *error);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_lclif_auth_failed_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_lclif_auth_failed_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_lclif_auth_failed_pre[hIndex].func;
preHookFunc(&fd, &ban, &error);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1087,9 +1943,9 @@ void HP_lclif_auth_failed(int fd, time_t ban, uint32 error) {
{
HPMHooks.source.lclif.auth_failed(fd, ban, error);
}
- if( HPMHooks.count.HP_lclif_auth_failed_post ) {
+ if (HPMHooks.count.HP_lclif_auth_failed_post > 0) {
void (*postHookFunc) (int fd, time_t ban, uint32 error);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_lclif_auth_failed_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_lclif_auth_failed_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_lclif_auth_failed_post[hIndex].func;
postHookFunc(fd, ban, error);
}
@@ -1098,14 +1954,14 @@ void HP_lclif_auth_failed(int fd, time_t ban, uint32 error) {
}
void HP_lclif_login_error(int fd, uint8 error) {
int hIndex = 0;
- if( HPMHooks.count.HP_lclif_login_error_pre ) {
+ if (HPMHooks.count.HP_lclif_login_error_pre > 0) {
void (*preHookFunc) (int *fd, uint8 *error);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_lclif_login_error_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_lclif_login_error_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_lclif_login_error_pre[hIndex].func;
preHookFunc(&fd, &error);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1113,9 +1969,9 @@ void HP_lclif_login_error(int fd, uint8 error) {
{
HPMHooks.source.lclif.login_error(fd, error);
}
- if( HPMHooks.count.HP_lclif_login_error_post ) {
+ if (HPMHooks.count.HP_lclif_login_error_post > 0) {
void (*postHookFunc) (int fd, uint8 error);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_lclif_login_error_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_lclif_login_error_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_lclif_login_error_post[hIndex].func;
postHookFunc(fd, error);
}
@@ -1124,14 +1980,14 @@ void HP_lclif_login_error(int fd, uint8 error) {
}
void HP_lclif_coding_key(int fd, struct login_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_lclif_coding_key_pre ) {
+ if (HPMHooks.count.HP_lclif_coding_key_pre > 0) {
void (*preHookFunc) (int *fd, struct login_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_lclif_coding_key_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_lclif_coding_key_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_lclif_coding_key_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1139,9 +1995,9 @@ void HP_lclif_coding_key(int fd, struct login_session_data *sd) {
{
HPMHooks.source.lclif.coding_key(fd, sd);
}
- if( HPMHooks.count.HP_lclif_coding_key_post ) {
+ if (HPMHooks.count.HP_lclif_coding_key_post > 0) {
void (*postHookFunc) (int fd, struct login_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_lclif_coding_key_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_lclif_coding_key_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_lclif_coding_key_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -1151,14 +2007,14 @@ void HP_lclif_coding_key(int fd, struct login_session_data *sd) {
const struct login_packet_db* HP_lclif_packet(int16 packet_id) {
int hIndex = 0;
const struct login_packet_db* retVal___ = NULL;
- if( HPMHooks.count.HP_lclif_packet_pre ) {
+ if (HPMHooks.count.HP_lclif_packet_pre > 0) {
const struct login_packet_db* (*preHookFunc) (int16 *packet_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_lclif_packet_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_lclif_packet_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_lclif_packet_pre[hIndex].func;
retVal___ = preHookFunc(&packet_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1166,9 +2022,9 @@ const struct login_packet_db* HP_lclif_packet(int16 packet_id) {
{
retVal___ = HPMHooks.source.lclif.packet(packet_id);
}
- if( HPMHooks.count.HP_lclif_packet_post ) {
+ if (HPMHooks.count.HP_lclif_packet_post > 0) {
const struct login_packet_db* (*postHookFunc) (const struct login_packet_db* retVal___, int16 packet_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_lclif_packet_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_lclif_packet_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_lclif_packet_post[hIndex].func;
retVal___ = postHookFunc(retVal___, packet_id);
}
@@ -1178,14 +2034,14 @@ const struct login_packet_db* HP_lclif_packet(int16 packet_id) {
enum parsefunc_rcode HP_lclif_parse_packet(const struct login_packet_db *lpd, int fd, struct login_session_data *sd) {
int hIndex = 0;
enum parsefunc_rcode retVal___ = PACKET_UNKNOWN;
- if( HPMHooks.count.HP_lclif_parse_packet_pre ) {
+ if (HPMHooks.count.HP_lclif_parse_packet_pre > 0) {
enum parsefunc_rcode (*preHookFunc) (const struct login_packet_db **lpd, int *fd, struct login_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_lclif_parse_packet_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_lclif_parse_packet_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_lclif_parse_packet_pre[hIndex].func;
retVal___ = preHookFunc(&lpd, &fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1193,9 +2049,9 @@ enum parsefunc_rcode HP_lclif_parse_packet(const struct login_packet_db *lpd, in
{
retVal___ = HPMHooks.source.lclif.parse_packet(lpd, fd, sd);
}
- if( HPMHooks.count.HP_lclif_parse_packet_post ) {
+ if (HPMHooks.count.HP_lclif_parse_packet_post > 0) {
enum parsefunc_rcode (*postHookFunc) (enum parsefunc_rcode retVal___, const struct login_packet_db *lpd, int fd, struct login_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_lclif_parse_packet_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_lclif_parse_packet_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_lclif_parse_packet_post[hIndex].func;
retVal___ = postHookFunc(retVal___, lpd, fd, sd);
}
@@ -1205,14 +2061,14 @@ enum parsefunc_rcode HP_lclif_parse_packet(const struct login_packet_db *lpd, in
int HP_lclif_parse(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_lclif_parse_pre ) {
+ if (HPMHooks.count.HP_lclif_parse_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_lclif_parse_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_lclif_parse_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_lclif_parse_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1220,9 +2076,9 @@ int HP_lclif_parse(int fd) {
{
retVal___ = HPMHooks.source.lclif.parse(fd);
}
- if( HPMHooks.count.HP_lclif_parse_post ) {
+ if (HPMHooks.count.HP_lclif_parse_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_lclif_parse_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_lclif_parse_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_lclif_parse_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -1232,14 +2088,14 @@ int HP_lclif_parse(int fd) {
/* lclif_interface_private */
void HP_PRIV__lclif_packetdb_loaddb(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_PRIV__lclif_packetdb_loaddb_pre ) {
+ if (HPMHooks.count.HP_PRIV__lclif_packetdb_loaddb_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_packetdb_loaddb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_packetdb_loaddb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_PRIV__lclif_packetdb_loaddb_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1247,9 +2103,9 @@ void HP_PRIV__lclif_packetdb_loaddb(void) {
{
HPMHooks.source.PRIV__lclif.packetdb_loaddb();
}
- if( HPMHooks.count.HP_PRIV__lclif_packetdb_loaddb_post ) {
+ if (HPMHooks.count.HP_PRIV__lclif_packetdb_loaddb_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_packetdb_loaddb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_packetdb_loaddb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_PRIV__lclif_packetdb_loaddb_post[hIndex].func;
postHookFunc();
}
@@ -1259,14 +2115,14 @@ void HP_PRIV__lclif_packetdb_loaddb(void) {
enum parsefunc_rcode HP_PRIV__lclif_parse_sub(int fd, struct login_session_data *sd) {
int hIndex = 0;
enum parsefunc_rcode retVal___ = PACKET_UNKNOWN;
- if( HPMHooks.count.HP_PRIV__lclif_parse_sub_pre ) {
+ if (HPMHooks.count.HP_PRIV__lclif_parse_sub_pre > 0) {
enum parsefunc_rcode (*preHookFunc) (int *fd, struct login_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_PRIV__lclif_parse_sub_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1274,9 +2130,9 @@ enum parsefunc_rcode HP_PRIV__lclif_parse_sub(int fd, struct login_session_data
{
retVal___ = HPMHooks.source.PRIV__lclif.parse_sub(fd, sd);
}
- if( HPMHooks.count.HP_PRIV__lclif_parse_sub_post ) {
+ if (HPMHooks.count.HP_PRIV__lclif_parse_sub_post > 0) {
enum parsefunc_rcode (*postHookFunc) (enum parsefunc_rcode retVal___, int fd, struct login_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_PRIV__lclif_parse_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, sd);
}
@@ -1286,14 +2142,14 @@ enum parsefunc_rcode HP_PRIV__lclif_parse_sub(int fd, struct login_session_data
enum parsefunc_rcode HP_PRIV__lclif_parse_CA_CONNECT_INFO_CHANGED(int fd, struct login_session_data *sd) {
int hIndex = 0;
enum parsefunc_rcode retVal___ = PACKET_UNKNOWN;
- if( HPMHooks.count.HP_PRIV__lclif_parse_CA_CONNECT_INFO_CHANGED_pre ) {
+ if (HPMHooks.count.HP_PRIV__lclif_parse_CA_CONNECT_INFO_CHANGED_pre > 0) {
enum parsefunc_rcode (*preHookFunc) (int *fd, struct login_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_CONNECT_INFO_CHANGED_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_CONNECT_INFO_CHANGED_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_PRIV__lclif_parse_CA_CONNECT_INFO_CHANGED_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1301,9 +2157,9 @@ enum parsefunc_rcode HP_PRIV__lclif_parse_CA_CONNECT_INFO_CHANGED(int fd, struct
{
retVal___ = HPMHooks.source.PRIV__lclif.parse_CA_CONNECT_INFO_CHANGED(fd, sd);
}
- if( HPMHooks.count.HP_PRIV__lclif_parse_CA_CONNECT_INFO_CHANGED_post ) {
+ if (HPMHooks.count.HP_PRIV__lclif_parse_CA_CONNECT_INFO_CHANGED_post > 0) {
enum parsefunc_rcode (*postHookFunc) (enum parsefunc_rcode retVal___, int fd, struct login_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_CONNECT_INFO_CHANGED_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_CONNECT_INFO_CHANGED_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_PRIV__lclif_parse_CA_CONNECT_INFO_CHANGED_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, sd);
}
@@ -1313,14 +2169,14 @@ enum parsefunc_rcode HP_PRIV__lclif_parse_CA_CONNECT_INFO_CHANGED(int fd, struct
enum parsefunc_rcode HP_PRIV__lclif_parse_CA_EXE_HASHCHECK(int fd, struct login_session_data *sd) {
int hIndex = 0;
enum parsefunc_rcode retVal___ = PACKET_UNKNOWN;
- if( HPMHooks.count.HP_PRIV__lclif_parse_CA_EXE_HASHCHECK_pre ) {
+ if (HPMHooks.count.HP_PRIV__lclif_parse_CA_EXE_HASHCHECK_pre > 0) {
enum parsefunc_rcode (*preHookFunc) (int *fd, struct login_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_EXE_HASHCHECK_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_EXE_HASHCHECK_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_PRIV__lclif_parse_CA_EXE_HASHCHECK_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1328,9 +2184,9 @@ enum parsefunc_rcode HP_PRIV__lclif_parse_CA_EXE_HASHCHECK(int fd, struct login_
{
retVal___ = HPMHooks.source.PRIV__lclif.parse_CA_EXE_HASHCHECK(fd, sd);
}
- if( HPMHooks.count.HP_PRIV__lclif_parse_CA_EXE_HASHCHECK_post ) {
+ if (HPMHooks.count.HP_PRIV__lclif_parse_CA_EXE_HASHCHECK_post > 0) {
enum parsefunc_rcode (*postHookFunc) (enum parsefunc_rcode retVal___, int fd, struct login_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_EXE_HASHCHECK_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_EXE_HASHCHECK_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_PRIV__lclif_parse_CA_EXE_HASHCHECK_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, sd);
}
@@ -1340,14 +2196,14 @@ enum parsefunc_rcode HP_PRIV__lclif_parse_CA_EXE_HASHCHECK(int fd, struct login_
enum parsefunc_rcode HP_PRIV__lclif_parse_CA_LOGIN(int fd, struct login_session_data *sd) {
int hIndex = 0;
enum parsefunc_rcode retVal___ = PACKET_UNKNOWN;
- if( HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN_pre ) {
+ if (HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN_pre > 0) {
enum parsefunc_rcode (*preHookFunc) (int *fd, struct login_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_PRIV__lclif_parse_CA_LOGIN_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1355,9 +2211,9 @@ enum parsefunc_rcode HP_PRIV__lclif_parse_CA_LOGIN(int fd, struct login_session_
{
retVal___ = HPMHooks.source.PRIV__lclif.parse_CA_LOGIN(fd, sd);
}
- if( HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN_post ) {
+ if (HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN_post > 0) {
enum parsefunc_rcode (*postHookFunc) (enum parsefunc_rcode retVal___, int fd, struct login_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_PRIV__lclif_parse_CA_LOGIN_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, sd);
}
@@ -1367,14 +2223,14 @@ enum parsefunc_rcode HP_PRIV__lclif_parse_CA_LOGIN(int fd, struct login_session_
enum parsefunc_rcode HP_PRIV__lclif_parse_CA_LOGIN2(int fd, struct login_session_data *sd) {
int hIndex = 0;
enum parsefunc_rcode retVal___ = PACKET_UNKNOWN;
- if( HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN2_pre ) {
+ if (HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN2_pre > 0) {
enum parsefunc_rcode (*preHookFunc) (int *fd, struct login_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_PRIV__lclif_parse_CA_LOGIN2_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1382,9 +2238,9 @@ enum parsefunc_rcode HP_PRIV__lclif_parse_CA_LOGIN2(int fd, struct login_session
{
retVal___ = HPMHooks.source.PRIV__lclif.parse_CA_LOGIN2(fd, sd);
}
- if( HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN2_post ) {
+ if (HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN2_post > 0) {
enum parsefunc_rcode (*postHookFunc) (enum parsefunc_rcode retVal___, int fd, struct login_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_PRIV__lclif_parse_CA_LOGIN2_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, sd);
}
@@ -1394,14 +2250,14 @@ enum parsefunc_rcode HP_PRIV__lclif_parse_CA_LOGIN2(int fd, struct login_session
enum parsefunc_rcode HP_PRIV__lclif_parse_CA_LOGIN3(int fd, struct login_session_data *sd) {
int hIndex = 0;
enum parsefunc_rcode retVal___ = PACKET_UNKNOWN;
- if( HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN3_pre ) {
+ if (HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN3_pre > 0) {
enum parsefunc_rcode (*preHookFunc) (int *fd, struct login_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN3_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN3_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_PRIV__lclif_parse_CA_LOGIN3_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1409,9 +2265,9 @@ enum parsefunc_rcode HP_PRIV__lclif_parse_CA_LOGIN3(int fd, struct login_session
{
retVal___ = HPMHooks.source.PRIV__lclif.parse_CA_LOGIN3(fd, sd);
}
- if( HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN3_post ) {
+ if (HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN3_post > 0) {
enum parsefunc_rcode (*postHookFunc) (enum parsefunc_rcode retVal___, int fd, struct login_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN3_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN3_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_PRIV__lclif_parse_CA_LOGIN3_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, sd);
}
@@ -1421,14 +2277,14 @@ enum parsefunc_rcode HP_PRIV__lclif_parse_CA_LOGIN3(int fd, struct login_session
enum parsefunc_rcode HP_PRIV__lclif_parse_CA_LOGIN4(int fd, struct login_session_data *sd) {
int hIndex = 0;
enum parsefunc_rcode retVal___ = PACKET_UNKNOWN;
- if( HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN4_pre ) {
+ if (HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN4_pre > 0) {
enum parsefunc_rcode (*preHookFunc) (int *fd, struct login_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN4_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN4_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_PRIV__lclif_parse_CA_LOGIN4_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1436,9 +2292,9 @@ enum parsefunc_rcode HP_PRIV__lclif_parse_CA_LOGIN4(int fd, struct login_session
{
retVal___ = HPMHooks.source.PRIV__lclif.parse_CA_LOGIN4(fd, sd);
}
- if( HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN4_post ) {
+ if (HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN4_post > 0) {
enum parsefunc_rcode (*postHookFunc) (enum parsefunc_rcode retVal___, int fd, struct login_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN4_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN4_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_PRIV__lclif_parse_CA_LOGIN4_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, sd);
}
@@ -1448,14 +2304,14 @@ enum parsefunc_rcode HP_PRIV__lclif_parse_CA_LOGIN4(int fd, struct login_session
enum parsefunc_rcode HP_PRIV__lclif_parse_CA_LOGIN_PCBANG(int fd, struct login_session_data *sd) {
int hIndex = 0;
enum parsefunc_rcode retVal___ = PACKET_UNKNOWN;
- if( HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN_PCBANG_pre ) {
+ if (HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN_PCBANG_pre > 0) {
enum parsefunc_rcode (*preHookFunc) (int *fd, struct login_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN_PCBANG_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN_PCBANG_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_PRIV__lclif_parse_CA_LOGIN_PCBANG_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1463,9 +2319,9 @@ enum parsefunc_rcode HP_PRIV__lclif_parse_CA_LOGIN_PCBANG(int fd, struct login_s
{
retVal___ = HPMHooks.source.PRIV__lclif.parse_CA_LOGIN_PCBANG(fd, sd);
}
- if( HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN_PCBANG_post ) {
+ if (HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN_PCBANG_post > 0) {
enum parsefunc_rcode (*postHookFunc) (enum parsefunc_rcode retVal___, int fd, struct login_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN_PCBANG_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN_PCBANG_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_PRIV__lclif_parse_CA_LOGIN_PCBANG_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, sd);
}
@@ -1475,14 +2331,14 @@ enum parsefunc_rcode HP_PRIV__lclif_parse_CA_LOGIN_PCBANG(int fd, struct login_s
enum parsefunc_rcode HP_PRIV__lclif_parse_CA_LOGIN_HAN(int fd, struct login_session_data *sd) {
int hIndex = 0;
enum parsefunc_rcode retVal___ = PACKET_UNKNOWN;
- if( HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN_HAN_pre ) {
+ if (HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN_HAN_pre > 0) {
enum parsefunc_rcode (*preHookFunc) (int *fd, struct login_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN_HAN_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN_HAN_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_PRIV__lclif_parse_CA_LOGIN_HAN_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1490,9 +2346,9 @@ enum parsefunc_rcode HP_PRIV__lclif_parse_CA_LOGIN_HAN(int fd, struct login_sess
{
retVal___ = HPMHooks.source.PRIV__lclif.parse_CA_LOGIN_HAN(fd, sd);
}
- if( HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN_HAN_post ) {
+ if (HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN_HAN_post > 0) {
enum parsefunc_rcode (*postHookFunc) (enum parsefunc_rcode retVal___, int fd, struct login_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN_HAN_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN_HAN_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_PRIV__lclif_parse_CA_LOGIN_HAN_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, sd);
}
@@ -1502,14 +2358,14 @@ enum parsefunc_rcode HP_PRIV__lclif_parse_CA_LOGIN_HAN(int fd, struct login_sess
enum parsefunc_rcode HP_PRIV__lclif_parse_CA_SSO_LOGIN_REQ(int fd, struct login_session_data *sd) {
int hIndex = 0;
enum parsefunc_rcode retVal___ = PACKET_UNKNOWN;
- if( HPMHooks.count.HP_PRIV__lclif_parse_CA_SSO_LOGIN_REQ_pre ) {
+ if (HPMHooks.count.HP_PRIV__lclif_parse_CA_SSO_LOGIN_REQ_pre > 0) {
enum parsefunc_rcode (*preHookFunc) (int *fd, struct login_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_SSO_LOGIN_REQ_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_SSO_LOGIN_REQ_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_PRIV__lclif_parse_CA_SSO_LOGIN_REQ_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1517,26 +2373,107 @@ enum parsefunc_rcode HP_PRIV__lclif_parse_CA_SSO_LOGIN_REQ(int fd, struct login_
{
retVal___ = HPMHooks.source.PRIV__lclif.parse_CA_SSO_LOGIN_REQ(fd, sd);
}
- if( HPMHooks.count.HP_PRIV__lclif_parse_CA_SSO_LOGIN_REQ_post ) {
+ if (HPMHooks.count.HP_PRIV__lclif_parse_CA_SSO_LOGIN_REQ_post > 0) {
enum parsefunc_rcode (*postHookFunc) (enum parsefunc_rcode retVal___, int fd, struct login_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_SSO_LOGIN_REQ_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_SSO_LOGIN_REQ_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_PRIV__lclif_parse_CA_SSO_LOGIN_REQ_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, sd);
}
}
return retVal___;
}
+enum parsefunc_rcode HP_PRIV__lclif_parse_CA_LOGIN_OTP(int fd, struct login_session_data *sd) {
+ int hIndex = 0;
+ enum parsefunc_rcode retVal___ = PACKET_UNKNOWN;
+ if (HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN_OTP_pre > 0) {
+ enum parsefunc_rcode (*preHookFunc) (int *fd, struct login_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN_OTP_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_PRIV__lclif_parse_CA_LOGIN_OTP_pre[hIndex].func;
+ retVal___ = preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.PRIV__lclif.parse_CA_LOGIN_OTP(fd, sd);
+ }
+ if (HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN_OTP_post > 0) {
+ enum parsefunc_rcode (*postHookFunc) (enum parsefunc_rcode retVal___, int fd, struct login_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_LOGIN_OTP_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_PRIV__lclif_parse_CA_LOGIN_OTP_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, fd, sd);
+ }
+ }
+ return retVal___;
+}
+enum parsefunc_rcode HP_PRIV__lclif_parse_CA_ACK_MOBILE_OTP(int fd, struct login_session_data *sd) {
+ int hIndex = 0;
+ enum parsefunc_rcode retVal___ = PACKET_UNKNOWN;
+ if (HPMHooks.count.HP_PRIV__lclif_parse_CA_ACK_MOBILE_OTP_pre > 0) {
+ enum parsefunc_rcode (*preHookFunc) (int *fd, struct login_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_ACK_MOBILE_OTP_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_PRIV__lclif_parse_CA_ACK_MOBILE_OTP_pre[hIndex].func;
+ retVal___ = preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.PRIV__lclif.parse_CA_ACK_MOBILE_OTP(fd, sd);
+ }
+ if (HPMHooks.count.HP_PRIV__lclif_parse_CA_ACK_MOBILE_OTP_post > 0) {
+ enum parsefunc_rcode (*postHookFunc) (enum parsefunc_rcode retVal___, int fd, struct login_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_ACK_MOBILE_OTP_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_PRIV__lclif_parse_CA_ACK_MOBILE_OTP_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, fd, sd);
+ }
+ }
+ return retVal___;
+}
+enum parsefunc_rcode HP_PRIV__lclif_parse_CA_OTP_CODE(int fd, struct login_session_data *sd) {
+ int hIndex = 0;
+ enum parsefunc_rcode retVal___ = PACKET_UNKNOWN;
+ if (HPMHooks.count.HP_PRIV__lclif_parse_CA_OTP_CODE_pre > 0) {
+ enum parsefunc_rcode (*preHookFunc) (int *fd, struct login_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_OTP_CODE_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_PRIV__lclif_parse_CA_OTP_CODE_pre[hIndex].func;
+ retVal___ = preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.PRIV__lclif.parse_CA_OTP_CODE(fd, sd);
+ }
+ if (HPMHooks.count.HP_PRIV__lclif_parse_CA_OTP_CODE_post > 0) {
+ enum parsefunc_rcode (*postHookFunc) (enum parsefunc_rcode retVal___, int fd, struct login_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_OTP_CODE_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_PRIV__lclif_parse_CA_OTP_CODE_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, fd, sd);
+ }
+ }
+ return retVal___;
+}
enum parsefunc_rcode HP_PRIV__lclif_parse_CA_REQ_HASH(int fd, struct login_session_data *sd) {
int hIndex = 0;
enum parsefunc_rcode retVal___ = PACKET_UNKNOWN;
- if( HPMHooks.count.HP_PRIV__lclif_parse_CA_REQ_HASH_pre ) {
+ if (HPMHooks.count.HP_PRIV__lclif_parse_CA_REQ_HASH_pre > 0) {
enum parsefunc_rcode (*preHookFunc) (int *fd, struct login_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_REQ_HASH_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_REQ_HASH_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_PRIV__lclif_parse_CA_REQ_HASH_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1544,9 +2481,9 @@ enum parsefunc_rcode HP_PRIV__lclif_parse_CA_REQ_HASH(int fd, struct login_sessi
{
retVal___ = HPMHooks.source.PRIV__lclif.parse_CA_REQ_HASH(fd, sd);
}
- if( HPMHooks.count.HP_PRIV__lclif_parse_CA_REQ_HASH_post ) {
+ if (HPMHooks.count.HP_PRIV__lclif_parse_CA_REQ_HASH_post > 0) {
enum parsefunc_rcode (*postHookFunc) (enum parsefunc_rcode retVal___, int fd, struct login_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_REQ_HASH_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_REQ_HASH_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_PRIV__lclif_parse_CA_REQ_HASH_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, sd);
}
@@ -1556,14 +2493,14 @@ enum parsefunc_rcode HP_PRIV__lclif_parse_CA_REQ_HASH(int fd, struct login_sessi
enum parsefunc_rcode HP_PRIV__lclif_parse_CA_CHARSERVERCONNECT(int fd, struct login_session_data *sd) {
int hIndex = 0;
enum parsefunc_rcode retVal___ = PACKET_UNKNOWN;
- if( HPMHooks.count.HP_PRIV__lclif_parse_CA_CHARSERVERCONNECT_pre ) {
+ if (HPMHooks.count.HP_PRIV__lclif_parse_CA_CHARSERVERCONNECT_pre > 0) {
enum parsefunc_rcode (*preHookFunc) (int *fd, struct login_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_CHARSERVERCONNECT_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_CHARSERVERCONNECT_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_PRIV__lclif_parse_CA_CHARSERVERCONNECT_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1571,9 +2508,9 @@ enum parsefunc_rcode HP_PRIV__lclif_parse_CA_CHARSERVERCONNECT(int fd, struct lo
{
retVal___ = HPMHooks.source.PRIV__lclif.parse_CA_CHARSERVERCONNECT(fd, sd);
}
- if( HPMHooks.count.HP_PRIV__lclif_parse_CA_CHARSERVERCONNECT_post ) {
+ if (HPMHooks.count.HP_PRIV__lclif_parse_CA_CHARSERVERCONNECT_post > 0) {
enum parsefunc_rcode (*postHookFunc) (enum parsefunc_rcode retVal___, int fd, struct login_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_CHARSERVERCONNECT_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_PRIV__lclif_parse_CA_CHARSERVERCONNECT_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_PRIV__lclif_parse_CA_CHARSERVERCONNECT_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, sd);
}
@@ -1584,14 +2521,14 @@ enum parsefunc_rcode HP_PRIV__lclif_parse_CA_CHARSERVERCONNECT(int fd, struct lo
int HP_libconfig_read(struct config_t *config, FILE *stream) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_read_pre ) {
+ if (HPMHooks.count.HP_libconfig_read_pre > 0) {
int (*preHookFunc) (struct config_t **config, FILE **stream);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_read_pre[hIndex].func;
retVal___ = preHookFunc(&config, &stream);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1599,9 +2536,9 @@ int HP_libconfig_read(struct config_t *config, FILE *stream) {
{
retVal___ = HPMHooks.source.libconfig.read(config, stream);
}
- if( HPMHooks.count.HP_libconfig_read_post ) {
+ if (HPMHooks.count.HP_libconfig_read_post > 0) {
int (*postHookFunc) (int retVal___, struct config_t *config, FILE *stream);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_read_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, stream);
}
@@ -1610,14 +2547,14 @@ int HP_libconfig_read(struct config_t *config, FILE *stream) {
}
void HP_libconfig_write(const struct config_t *config, FILE *stream) {
int hIndex = 0;
- if( HPMHooks.count.HP_libconfig_write_pre ) {
+ if (HPMHooks.count.HP_libconfig_write_pre > 0) {
void (*preHookFunc) (const struct config_t **config, FILE **stream);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_write_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_write_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_write_pre[hIndex].func;
preHookFunc(&config, &stream);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1625,9 +2562,9 @@ void HP_libconfig_write(const struct config_t *config, FILE *stream) {
{
HPMHooks.source.libconfig.write(config, stream);
}
- if( HPMHooks.count.HP_libconfig_write_post ) {
+ if (HPMHooks.count.HP_libconfig_write_post > 0) {
void (*postHookFunc) (const struct config_t *config, FILE *stream);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_write_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_write_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_write_post[hIndex].func;
postHookFunc(config, stream);
}
@@ -1636,14 +2573,14 @@ void HP_libconfig_write(const struct config_t *config, FILE *stream) {
}
void HP_libconfig_set_options(struct config_t *config, int options) {
int hIndex = 0;
- if( HPMHooks.count.HP_libconfig_set_options_pre ) {
+ if (HPMHooks.count.HP_libconfig_set_options_pre > 0) {
void (*preHookFunc) (struct config_t **config, int *options);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_options_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_options_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_set_options_pre[hIndex].func;
preHookFunc(&config, &options);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1651,9 +2588,9 @@ void HP_libconfig_set_options(struct config_t *config, int options) {
{
HPMHooks.source.libconfig.set_options(config, options);
}
- if( HPMHooks.count.HP_libconfig_set_options_post ) {
+ if (HPMHooks.count.HP_libconfig_set_options_post > 0) {
void (*postHookFunc) (struct config_t *config, int options);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_options_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_options_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_set_options_post[hIndex].func;
postHookFunc(config, options);
}
@@ -1663,14 +2600,14 @@ void HP_libconfig_set_options(struct config_t *config, int options) {
int HP_libconfig_get_options(const struct config_t *config) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_get_options_pre ) {
+ if (HPMHooks.count.HP_libconfig_get_options_pre > 0) {
int (*preHookFunc) (const struct config_t **config);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_get_options_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_get_options_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_get_options_pre[hIndex].func;
retVal___ = preHookFunc(&config);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1678,9 +2615,9 @@ int HP_libconfig_get_options(const struct config_t *config) {
{
retVal___ = HPMHooks.source.libconfig.get_options(config);
}
- if( HPMHooks.count.HP_libconfig_get_options_post ) {
+ if (HPMHooks.count.HP_libconfig_get_options_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_t *config);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_get_options_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_get_options_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_get_options_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config);
}
@@ -1690,14 +2627,14 @@ int HP_libconfig_get_options(const struct config_t *config) {
int HP_libconfig_read_string(struct config_t *config, const char *str) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_read_string_pre ) {
+ if (HPMHooks.count.HP_libconfig_read_string_pre > 0) {
int (*preHookFunc) (struct config_t **config, const char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_string_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_string_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_read_string_pre[hIndex].func;
retVal___ = preHookFunc(&config, &str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1705,9 +2642,9 @@ int HP_libconfig_read_string(struct config_t *config, const char *str) {
{
retVal___ = HPMHooks.source.libconfig.read_string(config, str);
}
- if( HPMHooks.count.HP_libconfig_read_string_post ) {
+ if (HPMHooks.count.HP_libconfig_read_string_post > 0) {
int (*postHookFunc) (int retVal___, struct config_t *config, const char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_string_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_string_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_read_string_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, str);
}
@@ -1717,14 +2654,14 @@ int HP_libconfig_read_string(struct config_t *config, const char *str) {
int HP_libconfig_read_file_src(struct config_t *config, const char *filename) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_read_file_src_pre ) {
+ if (HPMHooks.count.HP_libconfig_read_file_src_pre > 0) {
int (*preHookFunc) (struct config_t **config, const char **filename);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_file_src_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_file_src_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_read_file_src_pre[hIndex].func;
retVal___ = preHookFunc(&config, &filename);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1732,9 +2669,9 @@ int HP_libconfig_read_file_src(struct config_t *config, const char *filename) {
{
retVal___ = HPMHooks.source.libconfig.read_file_src(config, filename);
}
- if( HPMHooks.count.HP_libconfig_read_file_src_post ) {
+ if (HPMHooks.count.HP_libconfig_read_file_src_post > 0) {
int (*postHookFunc) (int retVal___, struct config_t *config, const char *filename);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_file_src_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_file_src_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_read_file_src_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, filename);
}
@@ -1744,14 +2681,14 @@ int HP_libconfig_read_file_src(struct config_t *config, const char *filename) {
int HP_libconfig_write_file(struct config_t *config, const char *filename) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_write_file_pre ) {
+ if (HPMHooks.count.HP_libconfig_write_file_pre > 0) {
int (*preHookFunc) (struct config_t **config, const char **filename);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_write_file_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_write_file_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_write_file_pre[hIndex].func;
retVal___ = preHookFunc(&config, &filename);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1759,9 +2696,9 @@ int HP_libconfig_write_file(struct config_t *config, const char *filename) {
{
retVal___ = HPMHooks.source.libconfig.write_file(config, filename);
}
- if( HPMHooks.count.HP_libconfig_write_file_post ) {
+ if (HPMHooks.count.HP_libconfig_write_file_post > 0) {
int (*postHookFunc) (int retVal___, struct config_t *config, const char *filename);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_write_file_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_write_file_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_write_file_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, filename);
}
@@ -1770,14 +2707,14 @@ int HP_libconfig_write_file(struct config_t *config, const char *filename) {
}
void HP_libconfig_set_destructor(struct config_t *config, void ( *destructor ) (void *)) {
int hIndex = 0;
- if( HPMHooks.count.HP_libconfig_set_destructor_pre ) {
+ if (HPMHooks.count.HP_libconfig_set_destructor_pre > 0) {
void (*preHookFunc) (struct config_t **config, void ( **destructor ) (void *));
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_destructor_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_destructor_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_set_destructor_pre[hIndex].func;
preHookFunc(&config, &destructor);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1785,9 +2722,9 @@ void HP_libconfig_set_destructor(struct config_t *config, void ( *destructor ) (
{
HPMHooks.source.libconfig.set_destructor(config, destructor);
}
- if( HPMHooks.count.HP_libconfig_set_destructor_post ) {
+ if (HPMHooks.count.HP_libconfig_set_destructor_post > 0) {
void (*postHookFunc) (struct config_t *config, void ( *destructor ) (void *));
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_destructor_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_destructor_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_set_destructor_post[hIndex].func;
postHookFunc(config, destructor);
}
@@ -1796,14 +2733,14 @@ void HP_libconfig_set_destructor(struct config_t *config, void ( *destructor ) (
}
void HP_libconfig_set_include_dir(struct config_t *config, const char *include_dir) {
int hIndex = 0;
- if( HPMHooks.count.HP_libconfig_set_include_dir_pre ) {
+ if (HPMHooks.count.HP_libconfig_set_include_dir_pre > 0) {
void (*preHookFunc) (struct config_t **config, const char **include_dir);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_include_dir_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_include_dir_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_set_include_dir_pre[hIndex].func;
preHookFunc(&config, &include_dir);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1811,9 +2748,9 @@ void HP_libconfig_set_include_dir(struct config_t *config, const char *include_d
{
HPMHooks.source.libconfig.set_include_dir(config, include_dir);
}
- if( HPMHooks.count.HP_libconfig_set_include_dir_post ) {
+ if (HPMHooks.count.HP_libconfig_set_include_dir_post > 0) {
void (*postHookFunc) (struct config_t *config, const char *include_dir);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_include_dir_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_include_dir_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_set_include_dir_post[hIndex].func;
postHookFunc(config, include_dir);
}
@@ -1822,14 +2759,14 @@ void HP_libconfig_set_include_dir(struct config_t *config, const char *include_d
}
void HP_libconfig_init(struct config_t *config) {
int hIndex = 0;
- if( HPMHooks.count.HP_libconfig_init_pre ) {
+ if (HPMHooks.count.HP_libconfig_init_pre > 0) {
void (*preHookFunc) (struct config_t **config);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_init_pre[hIndex].func;
preHookFunc(&config);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1837,9 +2774,9 @@ void HP_libconfig_init(struct config_t *config) {
{
HPMHooks.source.libconfig.init(config);
}
- if( HPMHooks.count.HP_libconfig_init_post ) {
+ if (HPMHooks.count.HP_libconfig_init_post > 0) {
void (*postHookFunc) (struct config_t *config);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_init_post[hIndex].func;
postHookFunc(config);
}
@@ -1848,14 +2785,14 @@ void HP_libconfig_init(struct config_t *config) {
}
void HP_libconfig_destroy(struct config_t *config) {
int hIndex = 0;
- if( HPMHooks.count.HP_libconfig_destroy_pre ) {
+ if (HPMHooks.count.HP_libconfig_destroy_pre > 0) {
void (*preHookFunc) (struct config_t **config);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_destroy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_destroy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_destroy_pre[hIndex].func;
preHookFunc(&config);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1863,9 +2800,9 @@ void HP_libconfig_destroy(struct config_t *config) {
{
HPMHooks.source.libconfig.destroy(config);
}
- if( HPMHooks.count.HP_libconfig_destroy_post ) {
+ if (HPMHooks.count.HP_libconfig_destroy_post > 0) {
void (*postHookFunc) (struct config_t *config);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_destroy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_destroy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_destroy_post[hIndex].func;
postHookFunc(config);
}
@@ -1875,14 +2812,14 @@ void HP_libconfig_destroy(struct config_t *config) {
int HP_libconfig_setting_get_int(const struct config_setting_t *setting) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_get_int_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_int_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_int_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1890,9 +2827,9 @@ int HP_libconfig_setting_get_int(const struct config_setting_t *setting) {
{
retVal___ = HPMHooks.source.libconfig.setting_get_int(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_get_int_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_int_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_int_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -1902,14 +2839,14 @@ int HP_libconfig_setting_get_int(const struct config_setting_t *setting) {
int64 HP_libconfig_setting_get_int64(const struct config_setting_t *setting) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_get_int64_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_int64_pre > 0) {
int64 (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int64_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int64_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_int64_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1917,9 +2854,9 @@ int64 HP_libconfig_setting_get_int64(const struct config_setting_t *setting) {
{
retVal___ = HPMHooks.source.libconfig.setting_get_int64(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_get_int64_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_int64_post > 0) {
int64 (*postHookFunc) (int64 retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int64_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int64_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_int64_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -1929,14 +2866,14 @@ int64 HP_libconfig_setting_get_int64(const struct config_setting_t *setting) {
double HP_libconfig_setting_get_float(const struct config_setting_t *setting) {
int hIndex = 0;
double retVal___ = 0.;
- if( HPMHooks.count.HP_libconfig_setting_get_float_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_float_pre > 0) {
double (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_float_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_float_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_float_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1944,9 +2881,9 @@ double HP_libconfig_setting_get_float(const struct config_setting_t *setting) {
{
retVal___ = HPMHooks.source.libconfig.setting_get_float(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_get_float_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_float_post > 0) {
double (*postHookFunc) (double retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_float_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_float_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_float_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -1956,14 +2893,14 @@ double HP_libconfig_setting_get_float(const struct config_setting_t *setting) {
int HP_libconfig_setting_get_bool(const struct config_setting_t *setting) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_get_bool_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_bool_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_bool_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1971,9 +2908,9 @@ int HP_libconfig_setting_get_bool(const struct config_setting_t *setting) {
{
retVal___ = HPMHooks.source.libconfig.setting_get_bool(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_get_bool_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_bool_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_bool_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -1983,14 +2920,14 @@ int HP_libconfig_setting_get_bool(const struct config_setting_t *setting) {
const char* HP_libconfig_setting_get_string(const struct config_setting_t *setting) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_get_string_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_string_pre > 0) {
const char* (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_string_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_string_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_string_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1998,9 +2935,9 @@ const char* HP_libconfig_setting_get_string(const struct config_setting_t *setti
{
retVal___ = HPMHooks.source.libconfig.setting_get_string(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_get_string_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_string_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_string_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_string_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_string_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -2010,14 +2947,14 @@ const char* HP_libconfig_setting_get_string(const struct config_setting_t *setti
struct config_setting_t* HP_libconfig_setting_lookup(struct config_setting_t *setting, const char *name) {
int hIndex = 0;
struct config_setting_t* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_lookup_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_pre > 0) {
struct config_setting_t* (*preHookFunc) (struct config_setting_t **setting, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2025,9 +2962,9 @@ struct config_setting_t* HP_libconfig_setting_lookup(struct config_setting_t *se
{
retVal___ = HPMHooks.source.libconfig.setting_lookup(setting, name);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_post > 0) {
struct config_setting_t* (*postHookFunc) (struct config_setting_t* retVal___, struct config_setting_t *setting, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name);
}
@@ -2037,14 +2974,14 @@ struct config_setting_t* HP_libconfig_setting_lookup(struct config_setting_t *se
int HP_libconfig_setting_lookup_int(const struct config_setting_t *setting, const char *name, int *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_lookup_int_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_int_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, const char **name, int **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_int_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2052,9 +2989,9 @@ int HP_libconfig_setting_lookup_int(const struct config_setting_t *setting, cons
{
retVal___ = HPMHooks.source.libconfig.setting_lookup_int(setting, name, value);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_int_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_int_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, const char *name, int *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_int_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name, value);
}
@@ -2064,14 +3001,14 @@ int HP_libconfig_setting_lookup_int(const struct config_setting_t *setting, cons
int HP_libconfig_setting_lookup_int64(const struct config_setting_t *setting, const char *name, int64 *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_lookup_int64_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_int64_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, const char **name, int64 **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int64_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int64_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_int64_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2079,9 +3016,9 @@ int HP_libconfig_setting_lookup_int64(const struct config_setting_t *setting, co
{
retVal___ = HPMHooks.source.libconfig.setting_lookup_int64(setting, name, value);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_int64_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_int64_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, const char *name, int64 *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int64_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int64_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_int64_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name, value);
}
@@ -2091,14 +3028,14 @@ int HP_libconfig_setting_lookup_int64(const struct config_setting_t *setting, co
int HP_libconfig_setting_lookup_float(const struct config_setting_t *setting, const char *name, double *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_lookup_float_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_float_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, const char **name, double **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_float_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_float_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_float_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2106,9 +3043,9 @@ int HP_libconfig_setting_lookup_float(const struct config_setting_t *setting, co
{
retVal___ = HPMHooks.source.libconfig.setting_lookup_float(setting, name, value);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_float_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_float_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, const char *name, double *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_float_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_float_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_float_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name, value);
}
@@ -2118,14 +3055,14 @@ int HP_libconfig_setting_lookup_float(const struct config_setting_t *setting, co
int HP_libconfig_setting_lookup_bool(const struct config_setting_t *setting, const char *name, int *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_lookup_bool_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_bool_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, const char **name, int **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_bool_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_bool_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_bool_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2133,9 +3070,9 @@ int HP_libconfig_setting_lookup_bool(const struct config_setting_t *setting, con
{
retVal___ = HPMHooks.source.libconfig.setting_lookup_bool(setting, name, value);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_bool_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_bool_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, const char *name, int *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_bool_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_bool_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_bool_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name, value);
}
@@ -2145,14 +3082,14 @@ int HP_libconfig_setting_lookup_bool(const struct config_setting_t *setting, con
int HP_libconfig_setting_lookup_string(const struct config_setting_t *setting, const char *name, const char **value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_lookup_string_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_string_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, const char **name, const char ***value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_string_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_string_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_string_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2160,9 +3097,9 @@ int HP_libconfig_setting_lookup_string(const struct config_setting_t *setting, c
{
retVal___ = HPMHooks.source.libconfig.setting_lookup_string(setting, name, value);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_string_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_string_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, const char *name, const char **value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_string_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_string_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_string_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name, value);
}
@@ -2172,14 +3109,14 @@ int HP_libconfig_setting_lookup_string(const struct config_setting_t *setting, c
int HP_libconfig_setting_set_int(struct config_setting_t *setting, int value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_set_int_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_int_pre > 0) {
int (*preHookFunc) (struct config_setting_t **setting, int *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_int_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2187,9 +3124,9 @@ int HP_libconfig_setting_set_int(struct config_setting_t *setting, int value) {
{
retVal___ = HPMHooks.source.libconfig.setting_set_int(setting, value);
}
- if( HPMHooks.count.HP_libconfig_setting_set_int_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_int_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *setting, int value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_int_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, value);
}
@@ -2199,14 +3136,14 @@ int HP_libconfig_setting_set_int(struct config_setting_t *setting, int value) {
int HP_libconfig_setting_set_int64(struct config_setting_t *setting, int64 value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_set_int64_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_int64_pre > 0) {
int (*preHookFunc) (struct config_setting_t **setting, int64 *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int64_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int64_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_int64_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2214,9 +3151,9 @@ int HP_libconfig_setting_set_int64(struct config_setting_t *setting, int64 value
{
retVal___ = HPMHooks.source.libconfig.setting_set_int64(setting, value);
}
- if( HPMHooks.count.HP_libconfig_setting_set_int64_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_int64_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *setting, int64 value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int64_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int64_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_int64_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, value);
}
@@ -2226,14 +3163,14 @@ int HP_libconfig_setting_set_int64(struct config_setting_t *setting, int64 value
int HP_libconfig_setting_set_float(struct config_setting_t *setting, double value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_set_float_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_float_pre > 0) {
int (*preHookFunc) (struct config_setting_t **setting, double *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_float_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_float_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_float_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2241,9 +3178,9 @@ int HP_libconfig_setting_set_float(struct config_setting_t *setting, double valu
{
retVal___ = HPMHooks.source.libconfig.setting_set_float(setting, value);
}
- if( HPMHooks.count.HP_libconfig_setting_set_float_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_float_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *setting, double value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_float_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_float_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_float_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, value);
}
@@ -2253,14 +3190,14 @@ int HP_libconfig_setting_set_float(struct config_setting_t *setting, double valu
int HP_libconfig_setting_set_bool(struct config_setting_t *setting, int value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_set_bool_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_bool_pre > 0) {
int (*preHookFunc) (struct config_setting_t **setting, int *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_bool_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_bool_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_bool_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2268,9 +3205,9 @@ int HP_libconfig_setting_set_bool(struct config_setting_t *setting, int value) {
{
retVal___ = HPMHooks.source.libconfig.setting_set_bool(setting, value);
}
- if( HPMHooks.count.HP_libconfig_setting_set_bool_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_bool_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *setting, int value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_bool_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_bool_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_bool_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, value);
}
@@ -2280,14 +3217,14 @@ int HP_libconfig_setting_set_bool(struct config_setting_t *setting, int value) {
int HP_libconfig_setting_set_string(struct config_setting_t *setting, const char *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_set_string_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_string_pre > 0) {
int (*preHookFunc) (struct config_setting_t **setting, const char **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_string_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_string_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_string_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2295,9 +3232,9 @@ int HP_libconfig_setting_set_string(struct config_setting_t *setting, const char
{
retVal___ = HPMHooks.source.libconfig.setting_set_string(setting, value);
}
- if( HPMHooks.count.HP_libconfig_setting_set_string_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_string_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *setting, const char *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_string_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_string_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_string_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, value);
}
@@ -2307,14 +3244,14 @@ int HP_libconfig_setting_set_string(struct config_setting_t *setting, const char
int HP_libconfig_setting_set_format(struct config_setting_t *setting, short format) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_set_format_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_format_pre > 0) {
int (*preHookFunc) (struct config_setting_t **setting, short *format);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_format_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_format_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_format_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &format);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2322,9 +3259,9 @@ int HP_libconfig_setting_set_format(struct config_setting_t *setting, short form
{
retVal___ = HPMHooks.source.libconfig.setting_set_format(setting, format);
}
- if( HPMHooks.count.HP_libconfig_setting_set_format_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_format_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *setting, short format);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_format_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_format_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_format_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, format);
}
@@ -2334,14 +3271,14 @@ int HP_libconfig_setting_set_format(struct config_setting_t *setting, short form
short HP_libconfig_setting_get_format(const struct config_setting_t *setting) {
int hIndex = 0;
short retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_get_format_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_format_pre > 0) {
short (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_format_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_format_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_format_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2349,9 +3286,9 @@ short HP_libconfig_setting_get_format(const struct config_setting_t *setting) {
{
retVal___ = HPMHooks.source.libconfig.setting_get_format(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_get_format_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_format_post > 0) {
short (*postHookFunc) (short retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_format_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_format_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_format_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -2361,14 +3298,14 @@ short HP_libconfig_setting_get_format(const struct config_setting_t *setting) {
int HP_libconfig_setting_get_int_elem(const struct config_setting_t *setting, int idx) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_get_int_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_int_elem_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_int_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2376,9 +3313,9 @@ int HP_libconfig_setting_get_int_elem(const struct config_setting_t *setting, in
{
retVal___ = HPMHooks.source.libconfig.setting_get_int_elem(setting, idx);
}
- if( HPMHooks.count.HP_libconfig_setting_get_int_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_int_elem_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_int_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx);
}
@@ -2388,14 +3325,14 @@ int HP_libconfig_setting_get_int_elem(const struct config_setting_t *setting, in
int64 HP_libconfig_setting_get_int64_elem(const struct config_setting_t *setting, int idx) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_get_int64_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_int64_elem_pre > 0) {
int64 (*preHookFunc) (const struct config_setting_t **setting, int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int64_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int64_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_int64_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2403,9 +3340,9 @@ int64 HP_libconfig_setting_get_int64_elem(const struct config_setting_t *setting
{
retVal___ = HPMHooks.source.libconfig.setting_get_int64_elem(setting, idx);
}
- if( HPMHooks.count.HP_libconfig_setting_get_int64_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_int64_elem_post > 0) {
int64 (*postHookFunc) (int64 retVal___, const struct config_setting_t *setting, int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int64_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int64_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_int64_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx);
}
@@ -2415,14 +3352,14 @@ int64 HP_libconfig_setting_get_int64_elem(const struct config_setting_t *setting
double HP_libconfig_setting_get_float_elem(const struct config_setting_t *setting, int idx) {
int hIndex = 0;
double retVal___ = 0.;
- if( HPMHooks.count.HP_libconfig_setting_get_float_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_float_elem_pre > 0) {
double (*preHookFunc) (const struct config_setting_t **setting, int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_float_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_float_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_float_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2430,9 +3367,9 @@ double HP_libconfig_setting_get_float_elem(const struct config_setting_t *settin
{
retVal___ = HPMHooks.source.libconfig.setting_get_float_elem(setting, idx);
}
- if( HPMHooks.count.HP_libconfig_setting_get_float_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_float_elem_post > 0) {
double (*postHookFunc) (double retVal___, const struct config_setting_t *setting, int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_float_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_float_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_float_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx);
}
@@ -2442,14 +3379,14 @@ double HP_libconfig_setting_get_float_elem(const struct config_setting_t *settin
int HP_libconfig_setting_get_bool_elem(const struct config_setting_t *setting, int idx) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_get_bool_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_bool_elem_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_bool_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2457,9 +3394,9 @@ int HP_libconfig_setting_get_bool_elem(const struct config_setting_t *setting, i
{
retVal___ = HPMHooks.source.libconfig.setting_get_bool_elem(setting, idx);
}
- if( HPMHooks.count.HP_libconfig_setting_get_bool_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_bool_elem_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_bool_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx);
}
@@ -2469,14 +3406,14 @@ int HP_libconfig_setting_get_bool_elem(const struct config_setting_t *setting, i
const char* HP_libconfig_setting_get_string_elem(const struct config_setting_t *setting, int idx) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_get_string_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_string_elem_pre > 0) {
const char* (*preHookFunc) (const struct config_setting_t **setting, int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_string_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_string_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_string_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2484,9 +3421,9 @@ const char* HP_libconfig_setting_get_string_elem(const struct config_setting_t *
{
retVal___ = HPMHooks.source.libconfig.setting_get_string_elem(setting, idx);
}
- if( HPMHooks.count.HP_libconfig_setting_get_string_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_string_elem_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const struct config_setting_t *setting, int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_string_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_string_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_string_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx);
}
@@ -2496,14 +3433,14 @@ const char* HP_libconfig_setting_get_string_elem(const struct config_setting_t *
struct config_setting_t* HP_libconfig_setting_set_int_elem(struct config_setting_t *setting, int idx, int value) {
int hIndex = 0;
struct config_setting_t* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_set_int_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_int_elem_pre > 0) {
struct config_setting_t* (*preHookFunc) (struct config_setting_t **setting, int *idx, int *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_int_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2511,9 +3448,9 @@ struct config_setting_t* HP_libconfig_setting_set_int_elem(struct config_setting
{
retVal___ = HPMHooks.source.libconfig.setting_set_int_elem(setting, idx, value);
}
- if( HPMHooks.count.HP_libconfig_setting_set_int_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_int_elem_post > 0) {
struct config_setting_t* (*postHookFunc) (struct config_setting_t* retVal___, struct config_setting_t *setting, int idx, int value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_int_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx, value);
}
@@ -2523,14 +3460,14 @@ struct config_setting_t* HP_libconfig_setting_set_int_elem(struct config_setting
struct config_setting_t* HP_libconfig_setting_set_int64_elem(struct config_setting_t *setting, int idx, int64 value) {
int hIndex = 0;
struct config_setting_t* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_set_int64_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_int64_elem_pre > 0) {
struct config_setting_t* (*preHookFunc) (struct config_setting_t **setting, int *idx, int64 *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int64_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int64_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_int64_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2538,9 +3475,9 @@ struct config_setting_t* HP_libconfig_setting_set_int64_elem(struct config_setti
{
retVal___ = HPMHooks.source.libconfig.setting_set_int64_elem(setting, idx, value);
}
- if( HPMHooks.count.HP_libconfig_setting_set_int64_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_int64_elem_post > 0) {
struct config_setting_t* (*postHookFunc) (struct config_setting_t* retVal___, struct config_setting_t *setting, int idx, int64 value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int64_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int64_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_int64_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx, value);
}
@@ -2550,14 +3487,14 @@ struct config_setting_t* HP_libconfig_setting_set_int64_elem(struct config_setti
struct config_setting_t* HP_libconfig_setting_set_float_elem(struct config_setting_t *setting, int idx, double value) {
int hIndex = 0;
struct config_setting_t* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_set_float_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_float_elem_pre > 0) {
struct config_setting_t* (*preHookFunc) (struct config_setting_t **setting, int *idx, double *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_float_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_float_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_float_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2565,9 +3502,9 @@ struct config_setting_t* HP_libconfig_setting_set_float_elem(struct config_setti
{
retVal___ = HPMHooks.source.libconfig.setting_set_float_elem(setting, idx, value);
}
- if( HPMHooks.count.HP_libconfig_setting_set_float_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_float_elem_post > 0) {
struct config_setting_t* (*postHookFunc) (struct config_setting_t* retVal___, struct config_setting_t *setting, int idx, double value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_float_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_float_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_float_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx, value);
}
@@ -2577,14 +3514,14 @@ struct config_setting_t* HP_libconfig_setting_set_float_elem(struct config_setti
struct config_setting_t* HP_libconfig_setting_set_bool_elem(struct config_setting_t *setting, int idx, int value) {
int hIndex = 0;
struct config_setting_t* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_set_bool_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_bool_elem_pre > 0) {
struct config_setting_t* (*preHookFunc) (struct config_setting_t **setting, int *idx, int *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_bool_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_bool_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_bool_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2592,9 +3529,9 @@ struct config_setting_t* HP_libconfig_setting_set_bool_elem(struct config_settin
{
retVal___ = HPMHooks.source.libconfig.setting_set_bool_elem(setting, idx, value);
}
- if( HPMHooks.count.HP_libconfig_setting_set_bool_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_bool_elem_post > 0) {
struct config_setting_t* (*postHookFunc) (struct config_setting_t* retVal___, struct config_setting_t *setting, int idx, int value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_bool_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_bool_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_bool_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx, value);
}
@@ -2604,14 +3541,14 @@ struct config_setting_t* HP_libconfig_setting_set_bool_elem(struct config_settin
struct config_setting_t* HP_libconfig_setting_set_string_elem(struct config_setting_t *setting, int idx, const char *value) {
int hIndex = 0;
struct config_setting_t* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_set_string_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_string_elem_pre > 0) {
struct config_setting_t* (*preHookFunc) (struct config_setting_t **setting, int *idx, const char **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_string_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_string_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_string_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2619,9 +3556,9 @@ struct config_setting_t* HP_libconfig_setting_set_string_elem(struct config_sett
{
retVal___ = HPMHooks.source.libconfig.setting_set_string_elem(setting, idx, value);
}
- if( HPMHooks.count.HP_libconfig_setting_set_string_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_string_elem_post > 0) {
struct config_setting_t* (*postHookFunc) (struct config_setting_t* retVal___, struct config_setting_t *setting, int idx, const char *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_string_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_string_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_string_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx, value);
}
@@ -2631,14 +3568,14 @@ struct config_setting_t* HP_libconfig_setting_set_string_elem(struct config_sett
int HP_libconfig_setting_index(const struct config_setting_t *setting) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_index_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_index_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_index_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_index_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_index_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2646,9 +3583,9 @@ int HP_libconfig_setting_index(const struct config_setting_t *setting) {
{
retVal___ = HPMHooks.source.libconfig.setting_index(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_index_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_index_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_index_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_index_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_index_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -2658,14 +3595,14 @@ int HP_libconfig_setting_index(const struct config_setting_t *setting) {
int HP_libconfig_setting_length(const struct config_setting_t *setting) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_length_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_length_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_length_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_length_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_length_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2673,9 +3610,9 @@ int HP_libconfig_setting_length(const struct config_setting_t *setting) {
{
retVal___ = HPMHooks.source.libconfig.setting_length(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_length_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_length_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_length_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_length_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_length_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -2685,14 +3622,14 @@ int HP_libconfig_setting_length(const struct config_setting_t *setting) {
struct config_setting_t* HP_libconfig_setting_get_elem(const struct config_setting_t *setting, unsigned int idx) {
int hIndex = 0;
struct config_setting_t* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_get_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_elem_pre > 0) {
struct config_setting_t* (*preHookFunc) (const struct config_setting_t **setting, unsigned int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2700,9 +3637,9 @@ struct config_setting_t* HP_libconfig_setting_get_elem(const struct config_setti
{
retVal___ = HPMHooks.source.libconfig.setting_get_elem(setting, idx);
}
- if( HPMHooks.count.HP_libconfig_setting_get_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_elem_post > 0) {
struct config_setting_t* (*postHookFunc) (struct config_setting_t* retVal___, const struct config_setting_t *setting, unsigned int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx);
}
@@ -2712,14 +3649,14 @@ struct config_setting_t* HP_libconfig_setting_get_elem(const struct config_setti
struct config_setting_t* HP_libconfig_setting_get_member(const struct config_setting_t *setting, const char *name) {
int hIndex = 0;
struct config_setting_t* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_get_member_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_member_pre > 0) {
struct config_setting_t* (*preHookFunc) (const struct config_setting_t **setting, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_member_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_member_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_member_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2727,9 +3664,9 @@ struct config_setting_t* HP_libconfig_setting_get_member(const struct config_set
{
retVal___ = HPMHooks.source.libconfig.setting_get_member(setting, name);
}
- if( HPMHooks.count.HP_libconfig_setting_get_member_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_member_post > 0) {
struct config_setting_t* (*postHookFunc) (struct config_setting_t* retVal___, const struct config_setting_t *setting, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_member_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_member_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_member_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name);
}
@@ -2739,14 +3676,14 @@ struct config_setting_t* HP_libconfig_setting_get_member(const struct config_set
struct config_setting_t* HP_libconfig_setting_add(struct config_setting_t *parent, const char *name, int type) {
int hIndex = 0;
struct config_setting_t* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_add_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_add_pre > 0) {
struct config_setting_t* (*preHookFunc) (struct config_setting_t **parent, const char **name, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_add_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_add_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_add_pre[hIndex].func;
retVal___ = preHookFunc(&parent, &name, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2754,9 +3691,9 @@ struct config_setting_t* HP_libconfig_setting_add(struct config_setting_t *paren
{
retVal___ = HPMHooks.source.libconfig.setting_add(parent, name, type);
}
- if( HPMHooks.count.HP_libconfig_setting_add_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_add_post > 0) {
struct config_setting_t* (*postHookFunc) (struct config_setting_t* retVal___, struct config_setting_t *parent, const char *name, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_add_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_add_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_add_post[hIndex].func;
retVal___ = postHookFunc(retVal___, parent, name, type);
}
@@ -2766,14 +3703,14 @@ struct config_setting_t* HP_libconfig_setting_add(struct config_setting_t *paren
int HP_libconfig_setting_remove(struct config_setting_t *parent, const char *name) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_remove_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_remove_pre > 0) {
int (*preHookFunc) (struct config_setting_t **parent, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_remove_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_remove_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_remove_pre[hIndex].func;
retVal___ = preHookFunc(&parent, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2781,9 +3718,9 @@ int HP_libconfig_setting_remove(struct config_setting_t *parent, const char *nam
{
retVal___ = HPMHooks.source.libconfig.setting_remove(parent, name);
}
- if( HPMHooks.count.HP_libconfig_setting_remove_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_remove_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *parent, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_remove_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_remove_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_remove_post[hIndex].func;
retVal___ = postHookFunc(retVal___, parent, name);
}
@@ -2793,14 +3730,14 @@ int HP_libconfig_setting_remove(struct config_setting_t *parent, const char *nam
int HP_libconfig_setting_remove_elem(struct config_setting_t *parent, unsigned int idx) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_remove_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_remove_elem_pre > 0) {
int (*preHookFunc) (struct config_setting_t **parent, unsigned int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_remove_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_remove_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_remove_elem_pre[hIndex].func;
retVal___ = preHookFunc(&parent, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2808,9 +3745,9 @@ int HP_libconfig_setting_remove_elem(struct config_setting_t *parent, unsigned i
{
retVal___ = HPMHooks.source.libconfig.setting_remove_elem(parent, idx);
}
- if( HPMHooks.count.HP_libconfig_setting_remove_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_remove_elem_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *parent, unsigned int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_remove_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_remove_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_remove_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, parent, idx);
}
@@ -2819,14 +3756,14 @@ int HP_libconfig_setting_remove_elem(struct config_setting_t *parent, unsigned i
}
void HP_libconfig_setting_set_hook(struct config_setting_t *setting, void *hook) {
int hIndex = 0;
- if( HPMHooks.count.HP_libconfig_setting_set_hook_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_hook_pre > 0) {
void (*preHookFunc) (struct config_setting_t **setting, void **hook);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_hook_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_hook_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_hook_pre[hIndex].func;
preHookFunc(&setting, &hook);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2834,9 +3771,9 @@ void HP_libconfig_setting_set_hook(struct config_setting_t *setting, void *hook)
{
HPMHooks.source.libconfig.setting_set_hook(setting, hook);
}
- if( HPMHooks.count.HP_libconfig_setting_set_hook_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_hook_post > 0) {
void (*postHookFunc) (struct config_setting_t *setting, void *hook);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_hook_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_hook_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_hook_post[hIndex].func;
postHookFunc(setting, hook);
}
@@ -2846,14 +3783,14 @@ void HP_libconfig_setting_set_hook(struct config_setting_t *setting, void *hook)
struct config_setting_t* HP_libconfig_lookup(const struct config_t *config, const char *filepath) {
int hIndex = 0;
struct config_setting_t* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_lookup_pre ) {
+ if (HPMHooks.count.HP_libconfig_lookup_pre > 0) {
struct config_setting_t* (*preHookFunc) (const struct config_t **config, const char **filepath);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_lookup_pre[hIndex].func;
retVal___ = preHookFunc(&config, &filepath);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2861,9 +3798,9 @@ struct config_setting_t* HP_libconfig_lookup(const struct config_t *config, cons
{
retVal___ = HPMHooks.source.libconfig.lookup(config, filepath);
}
- if( HPMHooks.count.HP_libconfig_lookup_post ) {
+ if (HPMHooks.count.HP_libconfig_lookup_post > 0) {
struct config_setting_t* (*postHookFunc) (struct config_setting_t* retVal___, const struct config_t *config, const char *filepath);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_lookup_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, filepath);
}
@@ -2873,14 +3810,14 @@ struct config_setting_t* HP_libconfig_lookup(const struct config_t *config, cons
int HP_libconfig_lookup_int(const struct config_t *config, const char *filepath, int *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_lookup_int_pre ) {
+ if (HPMHooks.count.HP_libconfig_lookup_int_pre > 0) {
int (*preHookFunc) (const struct config_t **config, const char **filepath, int **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_int_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_int_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_lookup_int_pre[hIndex].func;
retVal___ = preHookFunc(&config, &filepath, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2888,9 +3825,9 @@ int HP_libconfig_lookup_int(const struct config_t *config, const char *filepath,
{
retVal___ = HPMHooks.source.libconfig.lookup_int(config, filepath, value);
}
- if( HPMHooks.count.HP_libconfig_lookup_int_post ) {
+ if (HPMHooks.count.HP_libconfig_lookup_int_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_t *config, const char *filepath, int *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_int_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_int_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_lookup_int_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, filepath, value);
}
@@ -2900,14 +3837,14 @@ int HP_libconfig_lookup_int(const struct config_t *config, const char *filepath,
int HP_libconfig_lookup_int64(const struct config_t *config, const char *filepath, int64 *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_lookup_int64_pre ) {
+ if (HPMHooks.count.HP_libconfig_lookup_int64_pre > 0) {
int (*preHookFunc) (const struct config_t **config, const char **filepath, int64 **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_int64_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_int64_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_lookup_int64_pre[hIndex].func;
retVal___ = preHookFunc(&config, &filepath, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2915,9 +3852,9 @@ int HP_libconfig_lookup_int64(const struct config_t *config, const char *filepat
{
retVal___ = HPMHooks.source.libconfig.lookup_int64(config, filepath, value);
}
- if( HPMHooks.count.HP_libconfig_lookup_int64_post ) {
+ if (HPMHooks.count.HP_libconfig_lookup_int64_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_t *config, const char *filepath, int64 *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_int64_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_int64_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_lookup_int64_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, filepath, value);
}
@@ -2927,14 +3864,14 @@ int HP_libconfig_lookup_int64(const struct config_t *config, const char *filepat
int HP_libconfig_lookup_float(const struct config_t *config, const char *filepath, double *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_lookup_float_pre ) {
+ if (HPMHooks.count.HP_libconfig_lookup_float_pre > 0) {
int (*preHookFunc) (const struct config_t **config, const char **filepath, double **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_float_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_float_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_lookup_float_pre[hIndex].func;
retVal___ = preHookFunc(&config, &filepath, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2942,9 +3879,9 @@ int HP_libconfig_lookup_float(const struct config_t *config, const char *filepat
{
retVal___ = HPMHooks.source.libconfig.lookup_float(config, filepath, value);
}
- if( HPMHooks.count.HP_libconfig_lookup_float_post ) {
+ if (HPMHooks.count.HP_libconfig_lookup_float_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_t *config, const char *filepath, double *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_float_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_float_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_lookup_float_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, filepath, value);
}
@@ -2954,14 +3891,14 @@ int HP_libconfig_lookup_float(const struct config_t *config, const char *filepat
int HP_libconfig_lookup_bool(const struct config_t *config, const char *filepath, int *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_lookup_bool_pre ) {
+ if (HPMHooks.count.HP_libconfig_lookup_bool_pre > 0) {
int (*preHookFunc) (const struct config_t **config, const char **filepath, int **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_bool_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_bool_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_lookup_bool_pre[hIndex].func;
retVal___ = preHookFunc(&config, &filepath, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2969,9 +3906,9 @@ int HP_libconfig_lookup_bool(const struct config_t *config, const char *filepath
{
retVal___ = HPMHooks.source.libconfig.lookup_bool(config, filepath, value);
}
- if( HPMHooks.count.HP_libconfig_lookup_bool_post ) {
+ if (HPMHooks.count.HP_libconfig_lookup_bool_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_t *config, const char *filepath, int *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_bool_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_bool_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_lookup_bool_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, filepath, value);
}
@@ -2981,14 +3918,14 @@ int HP_libconfig_lookup_bool(const struct config_t *config, const char *filepath
int HP_libconfig_lookup_string(const struct config_t *config, const char *filepath, const char **value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_lookup_string_pre ) {
+ if (HPMHooks.count.HP_libconfig_lookup_string_pre > 0) {
int (*preHookFunc) (const struct config_t **config, const char **filepath, const char ***value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_string_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_string_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_lookup_string_pre[hIndex].func;
retVal___ = preHookFunc(&config, &filepath, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2996,9 +3933,9 @@ int HP_libconfig_lookup_string(const struct config_t *config, const char *filepa
{
retVal___ = HPMHooks.source.libconfig.lookup_string(config, filepath, value);
}
- if( HPMHooks.count.HP_libconfig_lookup_string_post ) {
+ if (HPMHooks.count.HP_libconfig_lookup_string_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_t *config, const char *filepath, const char **value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_string_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_string_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_lookup_string_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, filepath, value);
}
@@ -3008,14 +3945,14 @@ int HP_libconfig_lookup_string(const struct config_t *config, const char *filepa
int HP_libconfig_load_file(struct config_t *config, const char *config_filename) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_load_file_pre ) {
+ if (HPMHooks.count.HP_libconfig_load_file_pre > 0) {
int (*preHookFunc) (struct config_t **config, const char **config_filename);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_load_file_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_load_file_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_load_file_pre[hIndex].func;
retVal___ = preHookFunc(&config, &config_filename);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3023,9 +3960,9 @@ int HP_libconfig_load_file(struct config_t *config, const char *config_filename)
{
retVal___ = HPMHooks.source.libconfig.load_file(config, config_filename);
}
- if( HPMHooks.count.HP_libconfig_load_file_post ) {
+ if (HPMHooks.count.HP_libconfig_load_file_post > 0) {
int (*postHookFunc) (int retVal___, struct config_t *config, const char *config_filename);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_load_file_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_load_file_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_load_file_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, config_filename);
}
@@ -3034,14 +3971,14 @@ int HP_libconfig_load_file(struct config_t *config, const char *config_filename)
}
void HP_libconfig_setting_copy_simple(struct config_setting_t *parent, const struct config_setting_t *src) {
int hIndex = 0;
- if( HPMHooks.count.HP_libconfig_setting_copy_simple_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_copy_simple_pre > 0) {
void (*preHookFunc) (struct config_setting_t **parent, const struct config_setting_t **src);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_simple_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_simple_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_copy_simple_pre[hIndex].func;
preHookFunc(&parent, &src);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3049,9 +3986,9 @@ void HP_libconfig_setting_copy_simple(struct config_setting_t *parent, const str
{
HPMHooks.source.libconfig.setting_copy_simple(parent, src);
}
- if( HPMHooks.count.HP_libconfig_setting_copy_simple_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_copy_simple_post > 0) {
void (*postHookFunc) (struct config_setting_t *parent, const struct config_setting_t *src);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_simple_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_simple_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_copy_simple_post[hIndex].func;
postHookFunc(parent, src);
}
@@ -3060,14 +3997,14 @@ void HP_libconfig_setting_copy_simple(struct config_setting_t *parent, const str
}
void HP_libconfig_setting_copy_elem(struct config_setting_t *parent, const struct config_setting_t *src) {
int hIndex = 0;
- if( HPMHooks.count.HP_libconfig_setting_copy_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_copy_elem_pre > 0) {
void (*preHookFunc) (struct config_setting_t **parent, const struct config_setting_t **src);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_copy_elem_pre[hIndex].func;
preHookFunc(&parent, &src);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3075,9 +4012,9 @@ void HP_libconfig_setting_copy_elem(struct config_setting_t *parent, const struc
{
HPMHooks.source.libconfig.setting_copy_elem(parent, src);
}
- if( HPMHooks.count.HP_libconfig_setting_copy_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_copy_elem_post > 0) {
void (*postHookFunc) (struct config_setting_t *parent, const struct config_setting_t *src);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_copy_elem_post[hIndex].func;
postHookFunc(parent, src);
}
@@ -3086,14 +4023,14 @@ void HP_libconfig_setting_copy_elem(struct config_setting_t *parent, const struc
}
void HP_libconfig_setting_copy_aggregate(struct config_setting_t *parent, const struct config_setting_t *src) {
int hIndex = 0;
- if( HPMHooks.count.HP_libconfig_setting_copy_aggregate_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_copy_aggregate_pre > 0) {
void (*preHookFunc) (struct config_setting_t **parent, const struct config_setting_t **src);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_aggregate_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_aggregate_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_copy_aggregate_pre[hIndex].func;
preHookFunc(&parent, &src);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3101,9 +4038,9 @@ void HP_libconfig_setting_copy_aggregate(struct config_setting_t *parent, const
{
HPMHooks.source.libconfig.setting_copy_aggregate(parent, src);
}
- if( HPMHooks.count.HP_libconfig_setting_copy_aggregate_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_copy_aggregate_post > 0) {
void (*postHookFunc) (struct config_setting_t *parent, const struct config_setting_t *src);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_aggregate_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_aggregate_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_copy_aggregate_post[hIndex].func;
postHookFunc(parent, src);
}
@@ -3113,14 +4050,14 @@ void HP_libconfig_setting_copy_aggregate(struct config_setting_t *parent, const
int HP_libconfig_setting_copy(struct config_setting_t *parent, const struct config_setting_t *src) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_copy_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_copy_pre > 0) {
int (*preHookFunc) (struct config_setting_t **parent, const struct config_setting_t **src);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_copy_pre[hIndex].func;
retVal___ = preHookFunc(&parent, &src);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3128,9 +4065,9 @@ int HP_libconfig_setting_copy(struct config_setting_t *parent, const struct conf
{
retVal___ = HPMHooks.source.libconfig.setting_copy(parent, src);
}
- if( HPMHooks.count.HP_libconfig_setting_copy_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_copy_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *parent, const struct config_setting_t *src);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_copy_post[hIndex].func;
retVal___ = postHookFunc(retVal___, parent, src);
}
@@ -3140,14 +4077,14 @@ int HP_libconfig_setting_copy(struct config_setting_t *parent, const struct conf
bool HP_libconfig_setting_get_bool_real(const struct config_setting_t *setting) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_libconfig_setting_get_bool_real_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_bool_real_pre > 0) {
bool (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_real_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_real_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_bool_real_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3155,9 +4092,9 @@ bool HP_libconfig_setting_get_bool_real(const struct config_setting_t *setting)
{
retVal___ = HPMHooks.source.libconfig.setting_get_bool_real(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_get_bool_real_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_bool_real_post > 0) {
bool (*postHookFunc) (bool retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_real_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_real_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_bool_real_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -3167,14 +4104,14 @@ bool HP_libconfig_setting_get_bool_real(const struct config_setting_t *setting)
uint32 HP_libconfig_setting_get_uint32(const struct config_setting_t *setting) {
int hIndex = 0;
uint32 retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_get_uint32_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_uint32_pre > 0) {
uint32 (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_uint32_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_uint32_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_uint32_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3182,9 +4119,9 @@ uint32 HP_libconfig_setting_get_uint32(const struct config_setting_t *setting) {
{
retVal___ = HPMHooks.source.libconfig.setting_get_uint32(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_get_uint32_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_uint32_post > 0) {
uint32 (*postHookFunc) (uint32 retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_uint32_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_uint32_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_uint32_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -3194,14 +4131,14 @@ uint32 HP_libconfig_setting_get_uint32(const struct config_setting_t *setting) {
uint16 HP_libconfig_setting_get_uint16(const struct config_setting_t *setting) {
int hIndex = 0;
uint16 retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_get_uint16_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_uint16_pre > 0) {
uint16 (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_uint16_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_uint16_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_uint16_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3209,9 +4146,9 @@ uint16 HP_libconfig_setting_get_uint16(const struct config_setting_t *setting) {
{
retVal___ = HPMHooks.source.libconfig.setting_get_uint16(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_get_uint16_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_uint16_post > 0) {
uint16 (*postHookFunc) (uint16 retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_uint16_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_uint16_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_uint16_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -3221,14 +4158,14 @@ uint16 HP_libconfig_setting_get_uint16(const struct config_setting_t *setting) {
int16 HP_libconfig_setting_get_int16(const struct config_setting_t *setting) {
int hIndex = 0;
int16 retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_get_int16_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_int16_pre > 0) {
int16 (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int16_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int16_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_int16_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3236,9 +4173,9 @@ int16 HP_libconfig_setting_get_int16(const struct config_setting_t *setting) {
{
retVal___ = HPMHooks.source.libconfig.setting_get_int16(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_get_int16_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_int16_post > 0) {
int16 (*postHookFunc) (int16 retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int16_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int16_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_int16_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -3248,14 +4185,14 @@ int16 HP_libconfig_setting_get_int16(const struct config_setting_t *setting) {
int HP_libconfig_setting_lookup_bool_real(const struct config_setting_t *setting, const char *name, bool *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_lookup_bool_real_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_bool_real_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, const char **name, bool **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_bool_real_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_bool_real_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_bool_real_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3263,9 +4200,9 @@ int HP_libconfig_setting_lookup_bool_real(const struct config_setting_t *setting
{
retVal___ = HPMHooks.source.libconfig.setting_lookup_bool_real(setting, name, value);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_bool_real_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_bool_real_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, const char *name, bool *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_bool_real_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_bool_real_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_bool_real_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name, value);
}
@@ -3275,14 +4212,14 @@ int HP_libconfig_setting_lookup_bool_real(const struct config_setting_t *setting
int HP_libconfig_setting_lookup_uint32(const struct config_setting_t *setting, const char *name, uint32 *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_lookup_uint32_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_uint32_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, const char **name, uint32 **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_uint32_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_uint32_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_uint32_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3290,9 +4227,9 @@ int HP_libconfig_setting_lookup_uint32(const struct config_setting_t *setting, c
{
retVal___ = HPMHooks.source.libconfig.setting_lookup_uint32(setting, name, value);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_uint32_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_uint32_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, const char *name, uint32 *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_uint32_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_uint32_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_uint32_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name, value);
}
@@ -3302,14 +4239,14 @@ int HP_libconfig_setting_lookup_uint32(const struct config_setting_t *setting, c
int HP_libconfig_setting_lookup_uint16(const struct config_setting_t *setting, const char *name, uint16 *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_lookup_uint16_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_uint16_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, const char **name, uint16 **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_uint16_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_uint16_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_uint16_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3317,9 +4254,9 @@ int HP_libconfig_setting_lookup_uint16(const struct config_setting_t *setting, c
{
retVal___ = HPMHooks.source.libconfig.setting_lookup_uint16(setting, name, value);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_uint16_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_uint16_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, const char *name, uint16 *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_uint16_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_uint16_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_uint16_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name, value);
}
@@ -3329,14 +4266,14 @@ int HP_libconfig_setting_lookup_uint16(const struct config_setting_t *setting, c
int HP_libconfig_setting_lookup_int16(const struct config_setting_t *setting, const char *name, int16 *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_lookup_int16_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_int16_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, const char **name, int16 **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int16_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int16_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_int16_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3344,9 +4281,9 @@ int HP_libconfig_setting_lookup_int16(const struct config_setting_t *setting, co
{
retVal___ = HPMHooks.source.libconfig.setting_lookup_int16(setting, name, value);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_int16_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_int16_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, const char *name, int16 *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int16_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int16_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_int16_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name, value);
}
@@ -3356,14 +4293,14 @@ int HP_libconfig_setting_lookup_int16(const struct config_setting_t *setting, co
int HP_libconfig_setting_lookup_mutable_string(const struct config_setting_t *setting, const char *name, char *out, size_t out_size) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_lookup_mutable_string_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_mutable_string_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, const char **name, char **out, size_t *out_size);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_mutable_string_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_mutable_string_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_mutable_string_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name, &out, &out_size);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3371,9 +4308,9 @@ int HP_libconfig_setting_lookup_mutable_string(const struct config_setting_t *se
{
retVal___ = HPMHooks.source.libconfig.setting_lookup_mutable_string(setting, name, out, out_size);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_mutable_string_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_mutable_string_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, const char *name, char *out, size_t out_size);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_mutable_string_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_mutable_string_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_mutable_string_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name, out, out_size);
}
@@ -3383,14 +4320,14 @@ int HP_libconfig_setting_lookup_mutable_string(const struct config_setting_t *se
int HP_libconfig_lookup_mutable_string(const struct config_t *config, const char *name, char *out, size_t out_size) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_lookup_mutable_string_pre ) {
+ if (HPMHooks.count.HP_libconfig_lookup_mutable_string_pre > 0) {
int (*preHookFunc) (const struct config_t **config, const char **name, char **out, size_t *out_size);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_mutable_string_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_mutable_string_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_lookup_mutable_string_pre[hIndex].func;
retVal___ = preHookFunc(&config, &name, &out, &out_size);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3398,9 +4335,9 @@ int HP_libconfig_lookup_mutable_string(const struct config_t *config, const char
{
retVal___ = HPMHooks.source.libconfig.lookup_mutable_string(config, name, out, out_size);
}
- if( HPMHooks.count.HP_libconfig_lookup_mutable_string_post ) {
+ if (HPMHooks.count.HP_libconfig_lookup_mutable_string_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_t *config, const char *name, char *out, size_t out_size);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_mutable_string_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_mutable_string_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_lookup_mutable_string_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, name, out, out_size);
}
@@ -3411,14 +4348,14 @@ int HP_libconfig_lookup_mutable_string(const struct config_t *config, const char
int HP_login_mmo_auth(struct login_session_data *sd, bool isServer) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_login_mmo_auth_pre ) {
+ if (HPMHooks.count.HP_login_mmo_auth_pre > 0) {
int (*preHookFunc) (struct login_session_data **sd, bool *isServer);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_mmo_auth_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_mmo_auth_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_mmo_auth_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &isServer);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3426,9 +4363,9 @@ int HP_login_mmo_auth(struct login_session_data *sd, bool isServer) {
{
retVal___ = HPMHooks.source.login.mmo_auth(sd, isServer);
}
- if( HPMHooks.count.HP_login_mmo_auth_post ) {
+ if (HPMHooks.count.HP_login_mmo_auth_post > 0) {
int (*postHookFunc) (int retVal___, struct login_session_data *sd, bool isServer);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_mmo_auth_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_mmo_auth_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_mmo_auth_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, isServer);
}
@@ -3438,14 +4375,14 @@ int HP_login_mmo_auth(struct login_session_data *sd, bool isServer) {
int HP_login_mmo_auth_new(const char *userid, const char *pass, const char sex, const char *last_ip) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_login_mmo_auth_new_pre ) {
+ if (HPMHooks.count.HP_login_mmo_auth_new_pre > 0) {
int (*preHookFunc) (const char **userid, const char **pass, const char *sex, const char **last_ip);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_mmo_auth_new_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_mmo_auth_new_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_mmo_auth_new_pre[hIndex].func;
retVal___ = preHookFunc(&userid, &pass, &sex, &last_ip);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3453,9 +4390,9 @@ int HP_login_mmo_auth_new(const char *userid, const char *pass, const char sex,
{
retVal___ = HPMHooks.source.login.mmo_auth_new(userid, pass, sex, last_ip);
}
- if( HPMHooks.count.HP_login_mmo_auth_new_post ) {
+ if (HPMHooks.count.HP_login_mmo_auth_new_post > 0) {
int (*postHookFunc) (int retVal___, const char *userid, const char *pass, const char sex, const char *last_ip);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_mmo_auth_new_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_mmo_auth_new_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_mmo_auth_new_post[hIndex].func;
retVal___ = postHookFunc(retVal___, userid, pass, sex, last_ip);
}
@@ -3465,14 +4402,14 @@ int HP_login_mmo_auth_new(const char *userid, const char *pass, const char sex,
int HP_login_waiting_disconnect_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_login_waiting_disconnect_timer_pre ) {
+ if (HPMHooks.count.HP_login_waiting_disconnect_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_waiting_disconnect_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_waiting_disconnect_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_waiting_disconnect_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3480,9 +4417,9 @@ int HP_login_waiting_disconnect_timer(int tid, int64 tick, int id, intptr_t data
{
retVal___ = HPMHooks.source.login.waiting_disconnect_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_login_waiting_disconnect_timer_post ) {
+ if (HPMHooks.count.HP_login_waiting_disconnect_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_waiting_disconnect_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_waiting_disconnect_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_waiting_disconnect_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -3492,16 +4429,16 @@ int HP_login_waiting_disconnect_timer(int tid, int64 tick, int id, intptr_t data
struct DBData HP_login_create_online_user(union DBKey key, va_list args) {
int hIndex = 0;
struct DBData retVal___ = { 0 };
- if( HPMHooks.count.HP_login_create_online_user_pre ) {
+ if (HPMHooks.count.HP_login_create_online_user_pre > 0) {
struct DBData (*preHookFunc) (union DBKey *key, va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_create_online_user_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_create_online_user_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_login_create_online_user_pre[hIndex].func;
retVal___ = preHookFunc(&key, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3511,9 +4448,9 @@ struct DBData HP_login_create_online_user(union DBKey key, va_list args) {
retVal___ = HPMHooks.source.login.create_online_user(key, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_login_create_online_user_post ) {
+ if (HPMHooks.count.HP_login_create_online_user_post > 0) {
struct DBData (*postHookFunc) (struct DBData retVal___, union DBKey key, va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_create_online_user_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_create_online_user_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_login_create_online_user_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, args___copy);
@@ -3525,14 +4462,14 @@ struct DBData HP_login_create_online_user(union DBKey key, va_list args) {
struct online_login_data* HP_login_add_online_user(int char_server, int account_id) {
int hIndex = 0;
struct online_login_data* retVal___ = NULL;
- if( HPMHooks.count.HP_login_add_online_user_pre ) {
+ if (HPMHooks.count.HP_login_add_online_user_pre > 0) {
struct online_login_data* (*preHookFunc) (int *char_server, int *account_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_add_online_user_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_add_online_user_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_add_online_user_pre[hIndex].func;
retVal___ = preHookFunc(&char_server, &account_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3540,9 +4477,9 @@ struct online_login_data* HP_login_add_online_user(int char_server, int account_
{
retVal___ = HPMHooks.source.login.add_online_user(char_server, account_id);
}
- if( HPMHooks.count.HP_login_add_online_user_post ) {
+ if (HPMHooks.count.HP_login_add_online_user_post > 0) {
struct online_login_data* (*postHookFunc) (struct online_login_data* retVal___, int char_server, int account_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_add_online_user_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_add_online_user_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_add_online_user_post[hIndex].func;
retVal___ = postHookFunc(retVal___, char_server, account_id);
}
@@ -3551,14 +4488,14 @@ struct online_login_data* HP_login_add_online_user(int char_server, int account_
}
void HP_login_remove_online_user(int account_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_remove_online_user_pre ) {
+ if (HPMHooks.count.HP_login_remove_online_user_pre > 0) {
void (*preHookFunc) (int *account_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_remove_online_user_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_remove_online_user_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_remove_online_user_pre[hIndex].func;
preHookFunc(&account_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3566,9 +4503,9 @@ void HP_login_remove_online_user(int account_id) {
{
HPMHooks.source.login.remove_online_user(account_id);
}
- if( HPMHooks.count.HP_login_remove_online_user_post ) {
+ if (HPMHooks.count.HP_login_remove_online_user_post > 0) {
void (*postHookFunc) (int account_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_remove_online_user_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_remove_online_user_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_remove_online_user_post[hIndex].func;
postHookFunc(account_id);
}
@@ -3578,16 +4515,16 @@ void HP_login_remove_online_user(int account_id) {
int HP_login_online_db_setoffline(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_login_online_db_setoffline_pre ) {
+ if (HPMHooks.count.HP_login_online_db_setoffline_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_online_db_setoffline_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_online_db_setoffline_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_login_online_db_setoffline_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3597,9 +4534,9 @@ int HP_login_online_db_setoffline(union DBKey key, struct DBData *data, va_list
retVal___ = HPMHooks.source.login.online_db_setoffline(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_login_online_db_setoffline_post ) {
+ if (HPMHooks.count.HP_login_online_db_setoffline_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_online_db_setoffline_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_online_db_setoffline_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_login_online_db_setoffline_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -3611,16 +4548,16 @@ int HP_login_online_db_setoffline(union DBKey key, struct DBData *data, va_list
int HP_login_online_data_cleanup_sub(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_login_online_data_cleanup_sub_pre ) {
+ if (HPMHooks.count.HP_login_online_data_cleanup_sub_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_online_data_cleanup_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_online_data_cleanup_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_login_online_data_cleanup_sub_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3630,9 +4567,9 @@ int HP_login_online_data_cleanup_sub(union DBKey key, struct DBData *data, va_li
retVal___ = HPMHooks.source.login.online_data_cleanup_sub(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_login_online_data_cleanup_sub_post ) {
+ if (HPMHooks.count.HP_login_online_data_cleanup_sub_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_online_data_cleanup_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_online_data_cleanup_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_login_online_data_cleanup_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -3644,14 +4581,14 @@ int HP_login_online_data_cleanup_sub(union DBKey key, struct DBData *data, va_li
int HP_login_online_data_cleanup(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_login_online_data_cleanup_pre ) {
+ if (HPMHooks.count.HP_login_online_data_cleanup_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_online_data_cleanup_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_online_data_cleanup_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_online_data_cleanup_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3659,9 +4596,9 @@ int HP_login_online_data_cleanup(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.login.online_data_cleanup(tid, tick, id, data);
}
- if( HPMHooks.count.HP_login_online_data_cleanup_post ) {
+ if (HPMHooks.count.HP_login_online_data_cleanup_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_online_data_cleanup_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_online_data_cleanup_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_online_data_cleanup_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -3671,14 +4608,14 @@ int HP_login_online_data_cleanup(int tid, int64 tick, int id, intptr_t data) {
int HP_login_sync_ip_addresses(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_login_sync_ip_addresses_pre ) {
+ if (HPMHooks.count.HP_login_sync_ip_addresses_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_sync_ip_addresses_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_sync_ip_addresses_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_sync_ip_addresses_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3686,9 +4623,9 @@ int HP_login_sync_ip_addresses(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.login.sync_ip_addresses(tid, tick, id, data);
}
- if( HPMHooks.count.HP_login_sync_ip_addresses_post ) {
+ if (HPMHooks.count.HP_login_sync_ip_addresses_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_sync_ip_addresses_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_sync_ip_addresses_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_sync_ip_addresses_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -3698,14 +4635,14 @@ int HP_login_sync_ip_addresses(int tid, int64 tick, int id, intptr_t data) {
bool HP_login_check_encrypted(const char *str1, const char *str2, const char *passwd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_login_check_encrypted_pre ) {
+ if (HPMHooks.count.HP_login_check_encrypted_pre > 0) {
bool (*preHookFunc) (const char **str1, const char **str2, const char **passwd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_check_encrypted_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_check_encrypted_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_check_encrypted_pre[hIndex].func;
retVal___ = preHookFunc(&str1, &str2, &passwd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3713,9 +4650,9 @@ bool HP_login_check_encrypted(const char *str1, const char *str2, const char *pa
{
retVal___ = HPMHooks.source.login.check_encrypted(str1, str2, passwd);
}
- if( HPMHooks.count.HP_login_check_encrypted_post ) {
+ if (HPMHooks.count.HP_login_check_encrypted_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *str1, const char *str2, const char *passwd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_check_encrypted_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_check_encrypted_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_check_encrypted_post[hIndex].func;
retVal___ = postHookFunc(retVal___, str1, str2, passwd);
}
@@ -3725,14 +4662,14 @@ bool HP_login_check_encrypted(const char *str1, const char *str2, const char *pa
bool HP_login_check_password(const char *md5key, int passwdenc, const char *passwd, const char *refpass) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_login_check_password_pre ) {
+ if (HPMHooks.count.HP_login_check_password_pre > 0) {
bool (*preHookFunc) (const char **md5key, int *passwdenc, const char **passwd, const char **refpass);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_check_password_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_check_password_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_check_password_pre[hIndex].func;
retVal___ = preHookFunc(&md5key, &passwdenc, &passwd, &refpass);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3740,9 +4677,9 @@ bool HP_login_check_password(const char *md5key, int passwdenc, const char *pass
{
retVal___ = HPMHooks.source.login.check_password(md5key, passwdenc, passwd, refpass);
}
- if( HPMHooks.count.HP_login_check_password_post ) {
+ if (HPMHooks.count.HP_login_check_password_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *md5key, int passwdenc, const char *passwd, const char *refpass);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_check_password_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_check_password_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_check_password_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md5key, passwdenc, passwd, refpass);
}
@@ -3752,14 +4689,14 @@ bool HP_login_check_password(const char *md5key, int passwdenc, const char *pass
uint32 HP_login_lan_subnet_check(uint32 ip) {
int hIndex = 0;
uint32 retVal___ = 0;
- if( HPMHooks.count.HP_login_lan_subnet_check_pre ) {
+ if (HPMHooks.count.HP_login_lan_subnet_check_pre > 0) {
uint32 (*preHookFunc) (uint32 *ip);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_lan_subnet_check_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_lan_subnet_check_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_lan_subnet_check_pre[hIndex].func;
retVal___ = preHookFunc(&ip);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3767,9 +4704,9 @@ uint32 HP_login_lan_subnet_check(uint32 ip) {
{
retVal___ = HPMHooks.source.login.lan_subnet_check(ip);
}
- if( HPMHooks.count.HP_login_lan_subnet_check_post ) {
+ if (HPMHooks.count.HP_login_lan_subnet_check_post > 0) {
uint32 (*postHookFunc) (uint32 retVal___, uint32 ip);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_lan_subnet_check_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_lan_subnet_check_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_lan_subnet_check_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ip);
}
@@ -3778,14 +4715,14 @@ uint32 HP_login_lan_subnet_check(uint32 ip) {
}
void HP_login_fromchar_accinfo(int fd, int account_id, int u_fd, int u_aid, int u_group, int map_fd, struct mmo_account *acc) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_fromchar_accinfo_pre ) {
+ if (HPMHooks.count.HP_login_fromchar_accinfo_pre > 0) {
void (*preHookFunc) (int *fd, int *account_id, int *u_fd, int *u_aid, int *u_group, int *map_fd, struct mmo_account **acc);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_accinfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_accinfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_fromchar_accinfo_pre[hIndex].func;
preHookFunc(&fd, &account_id, &u_fd, &u_aid, &u_group, &map_fd, &acc);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3793,9 +4730,9 @@ void HP_login_fromchar_accinfo(int fd, int account_id, int u_fd, int u_aid, int
{
HPMHooks.source.login.fromchar_accinfo(fd, account_id, u_fd, u_aid, u_group, map_fd, acc);
}
- if( HPMHooks.count.HP_login_fromchar_accinfo_post ) {
+ if (HPMHooks.count.HP_login_fromchar_accinfo_post > 0) {
void (*postHookFunc) (int fd, int account_id, int u_fd, int u_aid, int u_group, int map_fd, struct mmo_account *acc);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_accinfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_accinfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_fromchar_accinfo_post[hIndex].func;
postHookFunc(fd, account_id, u_fd, u_aid, u_group, map_fd, acc);
}
@@ -3804,14 +4741,14 @@ void HP_login_fromchar_accinfo(int fd, int account_id, int u_fd, int u_aid, int
}
void HP_login_fromchar_account(int fd, int account_id, struct mmo_account *acc) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_fromchar_account_pre ) {
+ if (HPMHooks.count.HP_login_fromchar_account_pre > 0) {
void (*preHookFunc) (int *fd, int *account_id, struct mmo_account **acc);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_account_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_account_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_fromchar_account_pre[hIndex].func;
preHookFunc(&fd, &account_id, &acc);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3819,9 +4756,9 @@ void HP_login_fromchar_account(int fd, int account_id, struct mmo_account *acc)
{
HPMHooks.source.login.fromchar_account(fd, account_id, acc);
}
- if( HPMHooks.count.HP_login_fromchar_account_post ) {
+ if (HPMHooks.count.HP_login_fromchar_account_post > 0) {
void (*postHookFunc) (int fd, int account_id, struct mmo_account *acc);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_account_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_account_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_fromchar_account_post[hIndex].func;
postHookFunc(fd, account_id, acc);
}
@@ -3830,14 +4767,14 @@ void HP_login_fromchar_account(int fd, int account_id, struct mmo_account *acc)
}
void HP_login_fromchar_account_update_other(int account_id, unsigned int state) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_fromchar_account_update_other_pre ) {
+ if (HPMHooks.count.HP_login_fromchar_account_update_other_pre > 0) {
void (*preHookFunc) (int *account_id, unsigned int *state);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_account_update_other_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_account_update_other_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_fromchar_account_update_other_pre[hIndex].func;
preHookFunc(&account_id, &state);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3845,9 +4782,9 @@ void HP_login_fromchar_account_update_other(int account_id, unsigned int state)
{
HPMHooks.source.login.fromchar_account_update_other(account_id, state);
}
- if( HPMHooks.count.HP_login_fromchar_account_update_other_post ) {
+ if (HPMHooks.count.HP_login_fromchar_account_update_other_post > 0) {
void (*postHookFunc) (int account_id, unsigned int state);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_account_update_other_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_account_update_other_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_fromchar_account_update_other_post[hIndex].func;
postHookFunc(account_id, state);
}
@@ -3856,14 +4793,14 @@ void HP_login_fromchar_account_update_other(int account_id, unsigned int state)
}
void HP_login_fromchar_auth_ack(int fd, int account_id, uint32 login_id1, uint32 login_id2, uint8 sex, int request_id, struct login_auth_node *node) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_fromchar_auth_ack_pre ) {
+ if (HPMHooks.count.HP_login_fromchar_auth_ack_pre > 0) {
void (*preHookFunc) (int *fd, int *account_id, uint32 *login_id1, uint32 *login_id2, uint8 *sex, int *request_id, struct login_auth_node **node);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_auth_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_auth_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_fromchar_auth_ack_pre[hIndex].func;
preHookFunc(&fd, &account_id, &login_id1, &login_id2, &sex, &request_id, &node);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3871,9 +4808,9 @@ void HP_login_fromchar_auth_ack(int fd, int account_id, uint32 login_id1, uint32
{
HPMHooks.source.login.fromchar_auth_ack(fd, account_id, login_id1, login_id2, sex, request_id, node);
}
- if( HPMHooks.count.HP_login_fromchar_auth_ack_post ) {
+ if (HPMHooks.count.HP_login_fromchar_auth_ack_post > 0) {
void (*postHookFunc) (int fd, int account_id, uint32 login_id1, uint32 login_id2, uint8 sex, int request_id, struct login_auth_node *node);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_auth_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_auth_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_fromchar_auth_ack_post[hIndex].func;
postHookFunc(fd, account_id, login_id1, login_id2, sex, request_id, node);
}
@@ -3882,14 +4819,14 @@ void HP_login_fromchar_auth_ack(int fd, int account_id, uint32 login_id1, uint32
}
void HP_login_fromchar_ban(int account_id, time_t timestamp) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_fromchar_ban_pre ) {
+ if (HPMHooks.count.HP_login_fromchar_ban_pre > 0) {
void (*preHookFunc) (int *account_id, time_t *timestamp);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_ban_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_ban_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_fromchar_ban_pre[hIndex].func;
preHookFunc(&account_id, &timestamp);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3897,9 +4834,9 @@ void HP_login_fromchar_ban(int account_id, time_t timestamp) {
{
HPMHooks.source.login.fromchar_ban(account_id, timestamp);
}
- if( HPMHooks.count.HP_login_fromchar_ban_post ) {
+ if (HPMHooks.count.HP_login_fromchar_ban_post > 0) {
void (*postHookFunc) (int account_id, time_t timestamp);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_ban_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_ban_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_fromchar_ban_post[hIndex].func;
postHookFunc(account_id, timestamp);
}
@@ -3908,14 +4845,14 @@ void HP_login_fromchar_ban(int account_id, time_t timestamp) {
}
void HP_login_fromchar_change_sex_other(int account_id, char sex) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_fromchar_change_sex_other_pre ) {
+ if (HPMHooks.count.HP_login_fromchar_change_sex_other_pre > 0) {
void (*preHookFunc) (int *account_id, char *sex);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_change_sex_other_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_change_sex_other_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_fromchar_change_sex_other_pre[hIndex].func;
preHookFunc(&account_id, &sex);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3923,9 +4860,9 @@ void HP_login_fromchar_change_sex_other(int account_id, char sex) {
{
HPMHooks.source.login.fromchar_change_sex_other(account_id, sex);
}
- if( HPMHooks.count.HP_login_fromchar_change_sex_other_post ) {
+ if (HPMHooks.count.HP_login_fromchar_change_sex_other_post > 0) {
void (*postHookFunc) (int account_id, char sex);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_change_sex_other_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_change_sex_other_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_fromchar_change_sex_other_post[hIndex].func;
postHookFunc(account_id, sex);
}
@@ -3934,14 +4871,14 @@ void HP_login_fromchar_change_sex_other(int account_id, char sex) {
}
void HP_login_fromchar_pong(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_fromchar_pong_pre ) {
+ if (HPMHooks.count.HP_login_fromchar_pong_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_pong_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_pong_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_fromchar_pong_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3949,9 +4886,9 @@ void HP_login_fromchar_pong(int fd) {
{
HPMHooks.source.login.fromchar_pong(fd);
}
- if( HPMHooks.count.HP_login_fromchar_pong_post ) {
+ if (HPMHooks.count.HP_login_fromchar_pong_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_pong_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_pong_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_fromchar_pong_post[hIndex].func;
postHookFunc(fd);
}
@@ -3960,14 +4897,14 @@ void HP_login_fromchar_pong(int fd) {
}
void HP_login_fromchar_parse_auth(int fd, int id, const char *ip) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_fromchar_parse_auth_pre ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_auth_pre > 0) {
void (*preHookFunc) (int *fd, int *id, const char **ip);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_auth_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_auth_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_fromchar_parse_auth_pre[hIndex].func;
preHookFunc(&fd, &id, &ip);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3975,9 +4912,9 @@ void HP_login_fromchar_parse_auth(int fd, int id, const char *ip) {
{
HPMHooks.source.login.fromchar_parse_auth(fd, id, ip);
}
- if( HPMHooks.count.HP_login_fromchar_parse_auth_post ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_auth_post > 0) {
void (*postHookFunc) (int fd, int id, const char *ip);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_auth_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_auth_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_fromchar_parse_auth_post[hIndex].func;
postHookFunc(fd, id, ip);
}
@@ -3986,14 +4923,14 @@ void HP_login_fromchar_parse_auth(int fd, int id, const char *ip) {
}
void HP_login_fromchar_parse_update_users(int fd, int id) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_fromchar_parse_update_users_pre ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_update_users_pre > 0) {
void (*preHookFunc) (int *fd, int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_update_users_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_update_users_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_fromchar_parse_update_users_pre[hIndex].func;
preHookFunc(&fd, &id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4001,9 +4938,9 @@ void HP_login_fromchar_parse_update_users(int fd, int id) {
{
HPMHooks.source.login.fromchar_parse_update_users(fd, id);
}
- if( HPMHooks.count.HP_login_fromchar_parse_update_users_post ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_update_users_post > 0) {
void (*postHookFunc) (int fd, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_update_users_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_update_users_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_fromchar_parse_update_users_post[hIndex].func;
postHookFunc(fd, id);
}
@@ -4012,14 +4949,14 @@ void HP_login_fromchar_parse_update_users(int fd, int id) {
}
void HP_login_fromchar_parse_request_change_email(int fd, int id, const char *ip) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_fromchar_parse_request_change_email_pre ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_request_change_email_pre > 0) {
void (*preHookFunc) (int *fd, int *id, const char **ip);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_request_change_email_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_request_change_email_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_fromchar_parse_request_change_email_pre[hIndex].func;
preHookFunc(&fd, &id, &ip);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4027,9 +4964,9 @@ void HP_login_fromchar_parse_request_change_email(int fd, int id, const char *ip
{
HPMHooks.source.login.fromchar_parse_request_change_email(fd, id, ip);
}
- if( HPMHooks.count.HP_login_fromchar_parse_request_change_email_post ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_request_change_email_post > 0) {
void (*postHookFunc) (int fd, int id, const char *ip);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_request_change_email_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_request_change_email_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_fromchar_parse_request_change_email_post[hIndex].func;
postHookFunc(fd, id, ip);
}
@@ -4038,14 +4975,14 @@ void HP_login_fromchar_parse_request_change_email(int fd, int id, const char *ip
}
void HP_login_fromchar_parse_account_data(int fd, int id, const char *ip) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_fromchar_parse_account_data_pre ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_account_data_pre > 0) {
void (*preHookFunc) (int *fd, int *id, const char **ip);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_account_data_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_account_data_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_fromchar_parse_account_data_pre[hIndex].func;
preHookFunc(&fd, &id, &ip);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4053,9 +4990,9 @@ void HP_login_fromchar_parse_account_data(int fd, int id, const char *ip) {
{
HPMHooks.source.login.fromchar_parse_account_data(fd, id, ip);
}
- if( HPMHooks.count.HP_login_fromchar_parse_account_data_post ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_account_data_post > 0) {
void (*postHookFunc) (int fd, int id, const char *ip);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_account_data_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_account_data_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_fromchar_parse_account_data_post[hIndex].func;
postHookFunc(fd, id, ip);
}
@@ -4064,14 +5001,14 @@ void HP_login_fromchar_parse_account_data(int fd, int id, const char *ip) {
}
void HP_login_fromchar_parse_ping(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_fromchar_parse_ping_pre ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_ping_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_ping_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_ping_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_fromchar_parse_ping_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4079,9 +5016,9 @@ void HP_login_fromchar_parse_ping(int fd) {
{
HPMHooks.source.login.fromchar_parse_ping(fd);
}
- if( HPMHooks.count.HP_login_fromchar_parse_ping_post ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_ping_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_ping_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_ping_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_fromchar_parse_ping_post[hIndex].func;
postHookFunc(fd);
}
@@ -4090,14 +5027,14 @@ void HP_login_fromchar_parse_ping(int fd) {
}
void HP_login_fromchar_parse_change_email(int fd, int id, const char *ip) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_fromchar_parse_change_email_pre ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_change_email_pre > 0) {
void (*preHookFunc) (int *fd, int *id, const char **ip);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_change_email_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_change_email_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_fromchar_parse_change_email_pre[hIndex].func;
preHookFunc(&fd, &id, &ip);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4105,9 +5042,9 @@ void HP_login_fromchar_parse_change_email(int fd, int id, const char *ip) {
{
HPMHooks.source.login.fromchar_parse_change_email(fd, id, ip);
}
- if( HPMHooks.count.HP_login_fromchar_parse_change_email_post ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_change_email_post > 0) {
void (*postHookFunc) (int fd, int id, const char *ip);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_change_email_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_change_email_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_fromchar_parse_change_email_post[hIndex].func;
postHookFunc(fd, id, ip);
}
@@ -4116,14 +5053,14 @@ void HP_login_fromchar_parse_change_email(int fd, int id, const char *ip) {
}
void HP_login_fromchar_parse_account_update(int fd, int id, const char *ip) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_fromchar_parse_account_update_pre ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_account_update_pre > 0) {
void (*preHookFunc) (int *fd, int *id, const char **ip);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_account_update_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_account_update_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_fromchar_parse_account_update_pre[hIndex].func;
preHookFunc(&fd, &id, &ip);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4131,9 +5068,9 @@ void HP_login_fromchar_parse_account_update(int fd, int id, const char *ip) {
{
HPMHooks.source.login.fromchar_parse_account_update(fd, id, ip);
}
- if( HPMHooks.count.HP_login_fromchar_parse_account_update_post ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_account_update_post > 0) {
void (*postHookFunc) (int fd, int id, const char *ip);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_account_update_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_account_update_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_fromchar_parse_account_update_post[hIndex].func;
postHookFunc(fd, id, ip);
}
@@ -4142,14 +5079,14 @@ void HP_login_fromchar_parse_account_update(int fd, int id, const char *ip) {
}
void HP_login_fromchar_parse_ban(int fd, int id, const char *ip) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_fromchar_parse_ban_pre ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_ban_pre > 0) {
void (*preHookFunc) (int *fd, int *id, const char **ip);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_ban_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_ban_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_fromchar_parse_ban_pre[hIndex].func;
preHookFunc(&fd, &id, &ip);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4157,9 +5094,9 @@ void HP_login_fromchar_parse_ban(int fd, int id, const char *ip) {
{
HPMHooks.source.login.fromchar_parse_ban(fd, id, ip);
}
- if( HPMHooks.count.HP_login_fromchar_parse_ban_post ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_ban_post > 0) {
void (*postHookFunc) (int fd, int id, const char *ip);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_ban_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_ban_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_fromchar_parse_ban_post[hIndex].func;
postHookFunc(fd, id, ip);
}
@@ -4168,14 +5105,14 @@ void HP_login_fromchar_parse_ban(int fd, int id, const char *ip) {
}
void HP_login_fromchar_parse_change_sex(int fd, int id, const char *ip) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_fromchar_parse_change_sex_pre ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_change_sex_pre > 0) {
void (*preHookFunc) (int *fd, int *id, const char **ip);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_change_sex_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_change_sex_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_fromchar_parse_change_sex_pre[hIndex].func;
preHookFunc(&fd, &id, &ip);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4183,9 +5120,9 @@ void HP_login_fromchar_parse_change_sex(int fd, int id, const char *ip) {
{
HPMHooks.source.login.fromchar_parse_change_sex(fd, id, ip);
}
- if( HPMHooks.count.HP_login_fromchar_parse_change_sex_post ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_change_sex_post > 0) {
void (*postHookFunc) (int fd, int id, const char *ip);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_change_sex_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_change_sex_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_fromchar_parse_change_sex_post[hIndex].func;
postHookFunc(fd, id, ip);
}
@@ -4194,14 +5131,14 @@ void HP_login_fromchar_parse_change_sex(int fd, int id, const char *ip) {
}
void HP_login_fromchar_parse_account_reg2(int fd, int id, const char *ip) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_fromchar_parse_account_reg2_pre ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_account_reg2_pre > 0) {
void (*preHookFunc) (int *fd, int *id, const char **ip);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_account_reg2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_account_reg2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_fromchar_parse_account_reg2_pre[hIndex].func;
preHookFunc(&fd, &id, &ip);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4209,9 +5146,9 @@ void HP_login_fromchar_parse_account_reg2(int fd, int id, const char *ip) {
{
HPMHooks.source.login.fromchar_parse_account_reg2(fd, id, ip);
}
- if( HPMHooks.count.HP_login_fromchar_parse_account_reg2_post ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_account_reg2_post > 0) {
void (*postHookFunc) (int fd, int id, const char *ip);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_account_reg2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_account_reg2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_fromchar_parse_account_reg2_post[hIndex].func;
postHookFunc(fd, id, ip);
}
@@ -4220,14 +5157,14 @@ void HP_login_fromchar_parse_account_reg2(int fd, int id, const char *ip) {
}
void HP_login_fromchar_parse_unban(int fd, int id, const char *ip) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_fromchar_parse_unban_pre ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_unban_pre > 0) {
void (*preHookFunc) (int *fd, int *id, const char **ip);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_unban_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_unban_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_fromchar_parse_unban_pre[hIndex].func;
preHookFunc(&fd, &id, &ip);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4235,9 +5172,9 @@ void HP_login_fromchar_parse_unban(int fd, int id, const char *ip) {
{
HPMHooks.source.login.fromchar_parse_unban(fd, id, ip);
}
- if( HPMHooks.count.HP_login_fromchar_parse_unban_post ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_unban_post > 0) {
void (*postHookFunc) (int fd, int id, const char *ip);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_unban_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_unban_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_fromchar_parse_unban_post[hIndex].func;
postHookFunc(fd, id, ip);
}
@@ -4246,14 +5183,14 @@ void HP_login_fromchar_parse_unban(int fd, int id, const char *ip) {
}
void HP_login_fromchar_parse_account_online(int fd, int id) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_fromchar_parse_account_online_pre ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_account_online_pre > 0) {
void (*preHookFunc) (int *fd, int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_account_online_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_account_online_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_fromchar_parse_account_online_pre[hIndex].func;
preHookFunc(&fd, &id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4261,9 +5198,9 @@ void HP_login_fromchar_parse_account_online(int fd, int id) {
{
HPMHooks.source.login.fromchar_parse_account_online(fd, id);
}
- if( HPMHooks.count.HP_login_fromchar_parse_account_online_post ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_account_online_post > 0) {
void (*postHookFunc) (int fd, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_account_online_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_account_online_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_fromchar_parse_account_online_post[hIndex].func;
postHookFunc(fd, id);
}
@@ -4272,14 +5209,14 @@ void HP_login_fromchar_parse_account_online(int fd, int id) {
}
void HP_login_fromchar_parse_account_offline(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_fromchar_parse_account_offline_pre ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_account_offline_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_account_offline_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_account_offline_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_fromchar_parse_account_offline_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4287,9 +5224,9 @@ void HP_login_fromchar_parse_account_offline(int fd) {
{
HPMHooks.source.login.fromchar_parse_account_offline(fd);
}
- if( HPMHooks.count.HP_login_fromchar_parse_account_offline_post ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_account_offline_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_account_offline_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_account_offline_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_fromchar_parse_account_offline_post[hIndex].func;
postHookFunc(fd);
}
@@ -4298,14 +5235,14 @@ void HP_login_fromchar_parse_account_offline(int fd) {
}
void HP_login_fromchar_parse_online_accounts(int fd, int id) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_fromchar_parse_online_accounts_pre ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_online_accounts_pre > 0) {
void (*preHookFunc) (int *fd, int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_online_accounts_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_online_accounts_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_fromchar_parse_online_accounts_pre[hIndex].func;
preHookFunc(&fd, &id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4313,9 +5250,9 @@ void HP_login_fromchar_parse_online_accounts(int fd, int id) {
{
HPMHooks.source.login.fromchar_parse_online_accounts(fd, id);
}
- if( HPMHooks.count.HP_login_fromchar_parse_online_accounts_post ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_online_accounts_post > 0) {
void (*postHookFunc) (int fd, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_online_accounts_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_online_accounts_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_fromchar_parse_online_accounts_post[hIndex].func;
postHookFunc(fd, id);
}
@@ -4324,14 +5261,14 @@ void HP_login_fromchar_parse_online_accounts(int fd, int id) {
}
void HP_login_fromchar_parse_request_account_reg2(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_fromchar_parse_request_account_reg2_pre ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_request_account_reg2_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_request_account_reg2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_request_account_reg2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_fromchar_parse_request_account_reg2_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4339,9 +5276,9 @@ void HP_login_fromchar_parse_request_account_reg2(int fd) {
{
HPMHooks.source.login.fromchar_parse_request_account_reg2(fd);
}
- if( HPMHooks.count.HP_login_fromchar_parse_request_account_reg2_post ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_request_account_reg2_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_request_account_reg2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_request_account_reg2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_fromchar_parse_request_account_reg2_post[hIndex].func;
postHookFunc(fd);
}
@@ -4350,14 +5287,14 @@ void HP_login_fromchar_parse_request_account_reg2(int fd) {
}
void HP_login_fromchar_parse_update_wan_ip(int fd, int id) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_fromchar_parse_update_wan_ip_pre ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_update_wan_ip_pre > 0) {
void (*preHookFunc) (int *fd, int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_update_wan_ip_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_update_wan_ip_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_fromchar_parse_update_wan_ip_pre[hIndex].func;
preHookFunc(&fd, &id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4365,9 +5302,9 @@ void HP_login_fromchar_parse_update_wan_ip(int fd, int id) {
{
HPMHooks.source.login.fromchar_parse_update_wan_ip(fd, id);
}
- if( HPMHooks.count.HP_login_fromchar_parse_update_wan_ip_post ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_update_wan_ip_post > 0) {
void (*postHookFunc) (int fd, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_update_wan_ip_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_update_wan_ip_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_fromchar_parse_update_wan_ip_post[hIndex].func;
postHookFunc(fd, id);
}
@@ -4376,14 +5313,14 @@ void HP_login_fromchar_parse_update_wan_ip(int fd, int id) {
}
void HP_login_fromchar_parse_all_offline(int fd, int id) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_fromchar_parse_all_offline_pre ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_all_offline_pre > 0) {
void (*preHookFunc) (int *fd, int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_all_offline_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_all_offline_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_fromchar_parse_all_offline_pre[hIndex].func;
preHookFunc(&fd, &id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4391,9 +5328,9 @@ void HP_login_fromchar_parse_all_offline(int fd, int id) {
{
HPMHooks.source.login.fromchar_parse_all_offline(fd, id);
}
- if( HPMHooks.count.HP_login_fromchar_parse_all_offline_post ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_all_offline_post > 0) {
void (*postHookFunc) (int fd, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_all_offline_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_all_offline_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_fromchar_parse_all_offline_post[hIndex].func;
postHookFunc(fd, id);
}
@@ -4402,14 +5339,14 @@ void HP_login_fromchar_parse_all_offline(int fd, int id) {
}
void HP_login_fromchar_parse_change_pincode(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_fromchar_parse_change_pincode_pre ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_change_pincode_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_change_pincode_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_change_pincode_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_fromchar_parse_change_pincode_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4417,9 +5354,9 @@ void HP_login_fromchar_parse_change_pincode(int fd) {
{
HPMHooks.source.login.fromchar_parse_change_pincode(fd);
}
- if( HPMHooks.count.HP_login_fromchar_parse_change_pincode_post ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_change_pincode_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_change_pincode_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_change_pincode_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_fromchar_parse_change_pincode_post[hIndex].func;
postHookFunc(fd);
}
@@ -4429,14 +5366,14 @@ void HP_login_fromchar_parse_change_pincode(int fd) {
bool HP_login_fromchar_parse_wrong_pincode(int fd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_login_fromchar_parse_wrong_pincode_pre ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_wrong_pincode_pre > 0) {
bool (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_wrong_pincode_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_wrong_pincode_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_fromchar_parse_wrong_pincode_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4444,9 +5381,9 @@ bool HP_login_fromchar_parse_wrong_pincode(int fd) {
{
retVal___ = HPMHooks.source.login.fromchar_parse_wrong_pincode(fd);
}
- if( HPMHooks.count.HP_login_fromchar_parse_wrong_pincode_post ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_wrong_pincode_post > 0) {
bool (*postHookFunc) (bool retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_wrong_pincode_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_wrong_pincode_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_fromchar_parse_wrong_pincode_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -4455,14 +5392,14 @@ bool HP_login_fromchar_parse_wrong_pincode(int fd) {
}
void HP_login_fromchar_parse_accinfo(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_fromchar_parse_accinfo_pre ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_accinfo_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_accinfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_accinfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_fromchar_parse_accinfo_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4470,9 +5407,9 @@ void HP_login_fromchar_parse_accinfo(int fd) {
{
HPMHooks.source.login.fromchar_parse_accinfo(fd);
}
- if( HPMHooks.count.HP_login_fromchar_parse_accinfo_post ) {
+ if (HPMHooks.count.HP_login_fromchar_parse_accinfo_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_accinfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_fromchar_parse_accinfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_fromchar_parse_accinfo_post[hIndex].func;
postHookFunc(fd);
}
@@ -4482,14 +5419,14 @@ void HP_login_fromchar_parse_accinfo(int fd) {
int HP_login_parse_fromchar(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_login_parse_fromchar_pre ) {
+ if (HPMHooks.count.HP_login_parse_fromchar_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_parse_fromchar_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_parse_fromchar_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_parse_fromchar_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4497,9 +5434,9 @@ int HP_login_parse_fromchar(int fd) {
{
retVal___ = HPMHooks.source.login.parse_fromchar(fd);
}
- if( HPMHooks.count.HP_login_parse_fromchar_post ) {
+ if (HPMHooks.count.HP_login_parse_fromchar_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_parse_fromchar_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_parse_fromchar_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_parse_fromchar_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -4508,14 +5445,14 @@ int HP_login_parse_fromchar(int fd) {
}
void HP_login_kick(struct login_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_kick_pre ) {
+ if (HPMHooks.count.HP_login_kick_pre > 0) {
void (*preHookFunc) (struct login_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_kick_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_kick_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_kick_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4523,9 +5460,9 @@ void HP_login_kick(struct login_session_data *sd) {
{
HPMHooks.source.login.kick(sd);
}
- if( HPMHooks.count.HP_login_kick_post ) {
+ if (HPMHooks.count.HP_login_kick_post > 0) {
void (*postHookFunc) (struct login_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_kick_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_kick_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_kick_post[hIndex].func;
postHookFunc(sd);
}
@@ -4534,14 +5471,14 @@ void HP_login_kick(struct login_session_data *sd) {
}
void HP_login_auth_ok(struct login_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_auth_ok_pre ) {
+ if (HPMHooks.count.HP_login_auth_ok_pre > 0) {
void (*preHookFunc) (struct login_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_auth_ok_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_auth_ok_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_auth_ok_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4549,9 +5486,9 @@ void HP_login_auth_ok(struct login_session_data *sd) {
{
HPMHooks.source.login.auth_ok(sd);
}
- if( HPMHooks.count.HP_login_auth_ok_post ) {
+ if (HPMHooks.count.HP_login_auth_ok_post > 0) {
void (*postHookFunc) (struct login_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_auth_ok_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_auth_ok_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_auth_ok_post[hIndex].func;
postHookFunc(sd);
}
@@ -4560,14 +5497,14 @@ void HP_login_auth_ok(struct login_session_data *sd) {
}
void HP_login_auth_failed(struct login_session_data *sd, int result) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_auth_failed_pre ) {
+ if (HPMHooks.count.HP_login_auth_failed_pre > 0) {
void (*preHookFunc) (struct login_session_data **sd, int *result);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_auth_failed_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_auth_failed_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_auth_failed_pre[hIndex].func;
preHookFunc(&sd, &result);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4575,9 +5512,9 @@ void HP_login_auth_failed(struct login_session_data *sd, int result) {
{
HPMHooks.source.login.auth_failed(sd, result);
}
- if( HPMHooks.count.HP_login_auth_failed_post ) {
+ if (HPMHooks.count.HP_login_auth_failed_post > 0) {
void (*postHookFunc) (struct login_session_data *sd, int result);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_auth_failed_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_auth_failed_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_auth_failed_post[hIndex].func;
postHookFunc(sd, result);
}
@@ -4587,14 +5524,14 @@ void HP_login_auth_failed(struct login_session_data *sd, int result) {
bool HP_login_client_login(int fd, struct login_session_data *sd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_login_client_login_pre ) {
+ if (HPMHooks.count.HP_login_client_login_pre > 0) {
bool (*preHookFunc) (int *fd, struct login_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_client_login_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_client_login_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_client_login_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4602,25 +5539,78 @@ bool HP_login_client_login(int fd, struct login_session_data *sd) {
{
retVal___ = HPMHooks.source.login.client_login(fd, sd);
}
- if( HPMHooks.count.HP_login_client_login_post ) {
+ if (HPMHooks.count.HP_login_client_login_post > 0) {
bool (*postHookFunc) (bool retVal___, int fd, struct login_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_client_login_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_client_login_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_client_login_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, sd);
}
}
return retVal___;
}
+bool HP_login_client_login_otp(int fd, struct login_session_data *sd) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_login_client_login_otp_pre > 0) {
+ bool (*preHookFunc) (int *fd, struct login_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_client_login_otp_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_client_login_otp_pre[hIndex].func;
+ retVal___ = preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.login.client_login_otp(fd, sd);
+ }
+ if (HPMHooks.count.HP_login_client_login_otp_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int fd, struct login_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_client_login_otp_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_client_login_otp_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, fd, sd);
+ }
+ }
+ return retVal___;
+}
+void HP_login_client_login_mobile_otp_request(int fd, struct login_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_login_client_login_mobile_otp_request_pre > 0) {
+ void (*preHookFunc) (int *fd, struct login_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_client_login_mobile_otp_request_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_client_login_mobile_otp_request_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.login.client_login_mobile_otp_request(fd, sd);
+ }
+ if (HPMHooks.count.HP_login_client_login_mobile_otp_request_post > 0) {
+ void (*postHookFunc) (int fd, struct login_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_client_login_mobile_otp_request_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_client_login_mobile_otp_request_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
void HP_login_char_server_connection_status(int fd, struct login_session_data *sd, uint8 status) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_char_server_connection_status_pre ) {
+ if (HPMHooks.count.HP_login_char_server_connection_status_pre > 0) {
void (*preHookFunc) (int *fd, struct login_session_data **sd, uint8 *status);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_char_server_connection_status_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_char_server_connection_status_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_char_server_connection_status_pre[hIndex].func;
preHookFunc(&fd, &sd, &status);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4628,9 +5618,9 @@ void HP_login_char_server_connection_status(int fd, struct login_session_data *s
{
HPMHooks.source.login.char_server_connection_status(fd, sd, status);
}
- if( HPMHooks.count.HP_login_char_server_connection_status_post ) {
+ if (HPMHooks.count.HP_login_char_server_connection_status_post > 0) {
void (*postHookFunc) (int fd, struct login_session_data *sd, uint8 status);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_char_server_connection_status_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_char_server_connection_status_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_char_server_connection_status_post[hIndex].func;
postHookFunc(fd, sd, status);
}
@@ -4639,14 +5629,14 @@ void HP_login_char_server_connection_status(int fd, struct login_session_data *s
}
void HP_login_parse_request_connection(int fd, struct login_session_data *sd, const char *ip, uint32 ipl) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_parse_request_connection_pre ) {
+ if (HPMHooks.count.HP_login_parse_request_connection_pre > 0) {
void (*preHookFunc) (int *fd, struct login_session_data **sd, const char **ip, uint32 *ipl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_parse_request_connection_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_parse_request_connection_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_parse_request_connection_pre[hIndex].func;
preHookFunc(&fd, &sd, &ip, &ipl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4654,9 +5644,9 @@ void HP_login_parse_request_connection(int fd, struct login_session_data *sd, co
{
HPMHooks.source.login.parse_request_connection(fd, sd, ip, ipl);
}
- if( HPMHooks.count.HP_login_parse_request_connection_post ) {
+ if (HPMHooks.count.HP_login_parse_request_connection_post > 0) {
void (*postHookFunc) (int fd, struct login_session_data *sd, const char *ip, uint32 ipl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_parse_request_connection_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_parse_request_connection_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_parse_request_connection_post[hIndex].func;
postHookFunc(fd, sd, ip, ipl);
}
@@ -4665,14 +5655,14 @@ void HP_login_parse_request_connection(int fd, struct login_session_data *sd, co
}
void HP_login_config_set_defaults(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_login_config_set_defaults_pre ) {
+ if (HPMHooks.count.HP_login_config_set_defaults_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_config_set_defaults_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_set_defaults_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_config_set_defaults_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4680,9 +5670,9 @@ void HP_login_config_set_defaults(void) {
{
HPMHooks.source.login.config_set_defaults();
}
- if( HPMHooks.count.HP_login_config_set_defaults_post ) {
+ if (HPMHooks.count.HP_login_config_set_defaults_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_config_set_defaults_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_set_defaults_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_config_set_defaults_post[hIndex].func;
postHookFunc();
}
@@ -4692,14 +5682,14 @@ void HP_login_config_set_defaults(void) {
bool HP_login_config_read(const char *filename, bool included) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_login_config_read_pre ) {
+ if (HPMHooks.count.HP_login_config_read_pre > 0) {
bool (*preHookFunc) (const char **filename, bool *included);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_login_config_read_pre[hIndex].func;
retVal___ = preHookFunc(&filename, &included);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4707,26 +5697,562 @@ bool HP_login_config_read(const char *filename, bool included) {
{
retVal___ = HPMHooks.source.login.config_read(filename, included);
}
- if( HPMHooks.count.HP_login_config_read_post ) {
+ if (HPMHooks.count.HP_login_config_read_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *filename, bool included);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_login_config_read_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename, included);
}
}
return retVal___;
}
+bool HP_login_config_read_inter(const char *filename, struct config_t *config, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_login_config_read_inter_pre > 0) {
+ bool (*preHookFunc) (const char **filename, struct config_t **config, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_inter_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_config_read_inter_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &config, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.login.config_read_inter(filename, config, imported);
+ }
+ if (HPMHooks.count.HP_login_config_read_inter_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_inter_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_config_read_inter_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, config, imported);
+ }
+ }
+ return retVal___;
+}
+bool HP_login_config_read_console(const char *filename, struct config_t *config, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_login_config_read_console_pre > 0) {
+ bool (*preHookFunc) (const char **filename, struct config_t **config, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_console_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_config_read_console_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &config, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.login.config_read_console(filename, config, imported);
+ }
+ if (HPMHooks.count.HP_login_config_read_console_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_console_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_config_read_console_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, config, imported);
+ }
+ }
+ return retVal___;
+}
+bool HP_login_config_read_log(const char *filename, struct config_t *config, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_login_config_read_log_pre > 0) {
+ bool (*preHookFunc) (const char **filename, struct config_t **config, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_log_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_config_read_log_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &config, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.login.config_read_log(filename, config, imported);
+ }
+ if (HPMHooks.count.HP_login_config_read_log_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_log_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_config_read_log_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, config, imported);
+ }
+ }
+ return retVal___;
+}
+bool HP_login_config_read_account(const char *filename, struct config_t *config, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_login_config_read_account_pre > 0) {
+ bool (*preHookFunc) (const char **filename, struct config_t **config, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_account_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_config_read_account_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &config, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.login.config_read_account(filename, config, imported);
+ }
+ if (HPMHooks.count.HP_login_config_read_account_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_account_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_config_read_account_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, config, imported);
+ }
+ }
+ return retVal___;
+}
+bool HP_login_config_read_permission(const char *filename, struct config_t *config, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_login_config_read_permission_pre > 0) {
+ bool (*preHookFunc) (const char **filename, struct config_t **config, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_permission_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_config_read_permission_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &config, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.login.config_read_permission(filename, config, imported);
+ }
+ if (HPMHooks.count.HP_login_config_read_permission_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_permission_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_config_read_permission_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, config, imported);
+ }
+ }
+ return retVal___;
+}
+bool HP_login_config_read_permission_hash(const char *filename, struct config_t *config, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_login_config_read_permission_hash_pre > 0) {
+ bool (*preHookFunc) (const char **filename, struct config_t **config, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_permission_hash_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_config_read_permission_hash_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &config, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.login.config_read_permission_hash(filename, config, imported);
+ }
+ if (HPMHooks.count.HP_login_config_read_permission_hash_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_permission_hash_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_config_read_permission_hash_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, config, imported);
+ }
+ }
+ return retVal___;
+}
+bool HP_login_config_read_permission_blacklist(const char *filename, struct config_t *config, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_login_config_read_permission_blacklist_pre > 0) {
+ bool (*preHookFunc) (const char **filename, struct config_t **config, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_permission_blacklist_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_config_read_permission_blacklist_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &config, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.login.config_read_permission_blacklist(filename, config, imported);
+ }
+ if (HPMHooks.count.HP_login_config_read_permission_blacklist_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_permission_blacklist_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_config_read_permission_blacklist_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, config, imported);
+ }
+ }
+ return retVal___;
+}
+bool HP_login_config_read_users(const char *filename, struct config_t *config, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_login_config_read_users_pre > 0) {
+ bool (*preHookFunc) (const char **filename, struct config_t **config, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_users_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_config_read_users_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &config, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.login.config_read_users(filename, config, imported);
+ }
+ if (HPMHooks.count.HP_login_config_read_users_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_users_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_config_read_users_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, config, imported);
+ }
+ }
+ return retVal___;
+}
+void HP_login_clear_dnsbl_servers(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_login_clear_dnsbl_servers_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_clear_dnsbl_servers_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_clear_dnsbl_servers_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.login.clear_dnsbl_servers();
+ }
+ if (HPMHooks.count.HP_login_clear_dnsbl_servers_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_clear_dnsbl_servers_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_clear_dnsbl_servers_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+void HP_login_config_set_dnsbl_servers(struct config_setting_t *setting) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_login_config_set_dnsbl_servers_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **setting);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_set_dnsbl_servers_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_config_set_dnsbl_servers_pre[hIndex].func;
+ preHookFunc(&setting);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.login.config_set_dnsbl_servers(setting);
+ }
+ if (HPMHooks.count.HP_login_config_set_dnsbl_servers_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *setting);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_set_dnsbl_servers_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_config_set_dnsbl_servers_post[hIndex].func;
+ postHookFunc(setting);
+ }
+ }
+ return;
+}
+void HP_login_clear_client_hash_nodes(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_login_clear_client_hash_nodes_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_clear_client_hash_nodes_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_clear_client_hash_nodes_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.login.clear_client_hash_nodes();
+ }
+ if (HPMHooks.count.HP_login_clear_client_hash_nodes_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_clear_client_hash_nodes_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_clear_client_hash_nodes_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+void HP_login_config_set_md5hash(struct config_setting_t *setting) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_login_config_set_md5hash_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **setting);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_set_md5hash_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_config_set_md5hash_pre[hIndex].func;
+ preHookFunc(&setting);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.login.config_set_md5hash(setting);
+ }
+ if (HPMHooks.count.HP_login_config_set_md5hash_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *setting);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_set_md5hash_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_config_set_md5hash_post[hIndex].func;
+ postHookFunc(setting);
+ }
+ }
+ return;
+}
+uint16 HP_login_convert_users_to_colors(uint16 users) {
+ int hIndex = 0;
+ uint16 retVal___ = 0;
+ if (HPMHooks.count.HP_login_convert_users_to_colors_pre > 0) {
+ uint16 (*preHookFunc) (uint16 *users);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_convert_users_to_colors_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_convert_users_to_colors_pre[hIndex].func;
+ retVal___ = preHookFunc(&users);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.login.convert_users_to_colors(users);
+ }
+ if (HPMHooks.count.HP_login_convert_users_to_colors_post > 0) {
+ uint16 (*postHookFunc) (uint16 retVal___, uint16 users);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_convert_users_to_colors_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_convert_users_to_colors_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, users);
+ }
+ }
+ return retVal___;
+}
+/* loginlog_interface */
+unsigned long HP_loginlog_failedattempts(uint32 ip, unsigned int minutes) {
+ int hIndex = 0;
+ unsigned long retVal___ = 0;
+ if (HPMHooks.count.HP_loginlog_failedattempts_pre > 0) {
+ unsigned long (*preHookFunc) (uint32 *ip, unsigned int *minutes);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginlog_failedattempts_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_loginlog_failedattempts_pre[hIndex].func;
+ retVal___ = preHookFunc(&ip, &minutes);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.loginlog.failedattempts(ip, minutes);
+ }
+ if (HPMHooks.count.HP_loginlog_failedattempts_post > 0) {
+ unsigned long (*postHookFunc) (unsigned long retVal___, uint32 ip, unsigned int minutes);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginlog_failedattempts_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_loginlog_failedattempts_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, ip, minutes);
+ }
+ }
+ return retVal___;
+}
+void HP_loginlog_log(uint32 ip, const char *username, int rcode, const char *message) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_loginlog_log_pre > 0) {
+ void (*preHookFunc) (uint32 *ip, const char **username, int *rcode, const char **message);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginlog_log_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_loginlog_log_pre[hIndex].func;
+ preHookFunc(&ip, &username, &rcode, &message);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.loginlog.log(ip, username, rcode, message);
+ }
+ if (HPMHooks.count.HP_loginlog_log_post > 0) {
+ void (*postHookFunc) (uint32 ip, const char *username, int rcode, const char *message);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginlog_log_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_loginlog_log_post[hIndex].func;
+ postHookFunc(ip, username, rcode, message);
+ }
+ }
+ return;
+}
+bool HP_loginlog_init(void) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_loginlog_init_pre > 0) {
+ bool (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginlog_init_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_loginlog_init_pre[hIndex].func;
+ retVal___ = preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.loginlog.init();
+ }
+ if (HPMHooks.count.HP_loginlog_init_post > 0) {
+ bool (*postHookFunc) (bool retVal___);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginlog_init_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_loginlog_init_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___);
+ }
+ }
+ return retVal___;
+}
+bool HP_loginlog_final(void) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_loginlog_final_pre > 0) {
+ bool (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginlog_final_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_loginlog_final_pre[hIndex].func;
+ retVal___ = preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.loginlog.final();
+ }
+ if (HPMHooks.count.HP_loginlog_final_post > 0) {
+ bool (*postHookFunc) (bool retVal___);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginlog_final_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_loginlog_final_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___);
+ }
+ }
+ return retVal___;
+}
+bool HP_loginlog_config_read_names(const char *filename, struct config_t *config, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_loginlog_config_read_names_pre > 0) {
+ bool (*preHookFunc) (const char **filename, struct config_t **config, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginlog_config_read_names_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_loginlog_config_read_names_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &config, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.loginlog.config_read_names(filename, config, imported);
+ }
+ if (HPMHooks.count.HP_loginlog_config_read_names_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginlog_config_read_names_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_loginlog_config_read_names_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, config, imported);
+ }
+ }
+ return retVal___;
+}
+bool HP_loginlog_config_read_log(const char *filename, struct config_t *config, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_loginlog_config_read_log_pre > 0) {
+ bool (*preHookFunc) (const char **filename, struct config_t **config, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginlog_config_read_log_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_loginlog_config_read_log_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &config, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.loginlog.config_read_log(filename, config, imported);
+ }
+ if (HPMHooks.count.HP_loginlog_config_read_log_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginlog_config_read_log_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_loginlog_config_read_log_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, config, imported);
+ }
+ }
+ return retVal___;
+}
+bool HP_loginlog_config_read(const char *filename, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_loginlog_config_read_pre > 0) {
+ bool (*preHookFunc) (const char **filename, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginlog_config_read_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_loginlog_config_read_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.loginlog.config_read(filename, imported);
+ }
+ if (HPMHooks.count.HP_loginlog_config_read_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *filename, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_loginlog_config_read_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_loginlog_config_read_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, imported);
+ }
+ }
+ return retVal___;
+}
/* md5_interface */
void HP_md5_string(const char *string, char *output) {
int hIndex = 0;
- if( HPMHooks.count.HP_md5_string_pre ) {
+ if (HPMHooks.count.HP_md5_string_pre > 0) {
void (*preHookFunc) (const char **string, char **output);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_md5_string_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_md5_string_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_md5_string_pre[hIndex].func;
preHookFunc(&string, &output);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4734,9 +6260,9 @@ void HP_md5_string(const char *string, char *output) {
{
HPMHooks.source.md5.string(string, output);
}
- if( HPMHooks.count.HP_md5_string_post ) {
+ if (HPMHooks.count.HP_md5_string_post > 0) {
void (*postHookFunc) (const char *string, char *output);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_md5_string_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_md5_string_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_md5_string_post[hIndex].func;
postHookFunc(string, output);
}
@@ -4745,14 +6271,14 @@ void HP_md5_string(const char *string, char *output) {
}
void HP_md5_binary(const uint8 *buf, const int buf_size, uint8 *output) {
int hIndex = 0;
- if( HPMHooks.count.HP_md5_binary_pre ) {
+ if (HPMHooks.count.HP_md5_binary_pre > 0) {
void (*preHookFunc) (const uint8 **buf, const int *buf_size, uint8 **output);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_md5_binary_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_md5_binary_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_md5_binary_pre[hIndex].func;
preHookFunc(&buf, &buf_size, &output);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4760,9 +6286,9 @@ void HP_md5_binary(const uint8 *buf, const int buf_size, uint8 *output) {
{
HPMHooks.source.md5.binary(buf, buf_size, output);
}
- if( HPMHooks.count.HP_md5_binary_post ) {
+ if (HPMHooks.count.HP_md5_binary_post > 0) {
void (*postHookFunc) (const uint8 *buf, const int buf_size, uint8 *output);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_md5_binary_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_md5_binary_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_md5_binary_post[hIndex].func;
postHookFunc(buf, buf_size, output);
}
@@ -4771,14 +6297,14 @@ void HP_md5_binary(const uint8 *buf, const int buf_size, uint8 *output) {
}
void HP_md5_salt(int len, char *output) {
int hIndex = 0;
- if( HPMHooks.count.HP_md5_salt_pre ) {
+ if (HPMHooks.count.HP_md5_salt_pre > 0) {
void (*preHookFunc) (int *len, char **output);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_md5_salt_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_md5_salt_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_md5_salt_pre[hIndex].func;
preHookFunc(&len, &output);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4786,9 +6312,9 @@ void HP_md5_salt(int len, char *output) {
{
HPMHooks.source.md5.salt(len, output);
}
- if( HPMHooks.count.HP_md5_salt_post ) {
+ if (HPMHooks.count.HP_md5_salt_post > 0) {
void (*postHookFunc) (int len, char *output);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_md5_salt_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_md5_salt_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_md5_salt_post[hIndex].func;
postHookFunc(len, output);
}
@@ -4799,14 +6325,14 @@ void HP_md5_salt(int len, char *output) {
struct mutex_data* HP_mutex_create(void) {
int hIndex = 0;
struct mutex_data* retVal___ = NULL;
- if( HPMHooks.count.HP_mutex_create_pre ) {
+ if (HPMHooks.count.HP_mutex_create_pre > 0) {
struct mutex_data* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mutex_create_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4814,9 +6340,9 @@ struct mutex_data* HP_mutex_create(void) {
{
retVal___ = HPMHooks.source.mutex.create();
}
- if( HPMHooks.count.HP_mutex_create_post ) {
+ if (HPMHooks.count.HP_mutex_create_post > 0) {
struct mutex_data* (*postHookFunc) (struct mutex_data* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mutex_create_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -4825,14 +6351,14 @@ struct mutex_data* HP_mutex_create(void) {
}
void HP_mutex_destroy(struct mutex_data *m) {
int hIndex = 0;
- if( HPMHooks.count.HP_mutex_destroy_pre ) {
+ if (HPMHooks.count.HP_mutex_destroy_pre > 0) {
void (*preHookFunc) (struct mutex_data **m);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_destroy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_destroy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mutex_destroy_pre[hIndex].func;
preHookFunc(&m);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4840,9 +6366,9 @@ void HP_mutex_destroy(struct mutex_data *m) {
{
HPMHooks.source.mutex.destroy(m);
}
- if( HPMHooks.count.HP_mutex_destroy_post ) {
+ if (HPMHooks.count.HP_mutex_destroy_post > 0) {
void (*postHookFunc) (struct mutex_data *m);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_destroy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_destroy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mutex_destroy_post[hIndex].func;
postHookFunc(m);
}
@@ -4851,14 +6377,14 @@ void HP_mutex_destroy(struct mutex_data *m) {
}
void HP_mutex_lock(struct mutex_data *m) {
int hIndex = 0;
- if( HPMHooks.count.HP_mutex_lock_pre ) {
+ if (HPMHooks.count.HP_mutex_lock_pre > 0) {
void (*preHookFunc) (struct mutex_data **m);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_lock_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_lock_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mutex_lock_pre[hIndex].func;
preHookFunc(&m);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4866,9 +6392,9 @@ void HP_mutex_lock(struct mutex_data *m) {
{
HPMHooks.source.mutex.lock(m);
}
- if( HPMHooks.count.HP_mutex_lock_post ) {
+ if (HPMHooks.count.HP_mutex_lock_post > 0) {
void (*postHookFunc) (struct mutex_data *m);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_lock_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_lock_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mutex_lock_post[hIndex].func;
postHookFunc(m);
}
@@ -4878,14 +6404,14 @@ void HP_mutex_lock(struct mutex_data *m) {
bool HP_mutex_trylock(struct mutex_data *m) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_mutex_trylock_pre ) {
+ if (HPMHooks.count.HP_mutex_trylock_pre > 0) {
bool (*preHookFunc) (struct mutex_data **m);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_trylock_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_trylock_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mutex_trylock_pre[hIndex].func;
retVal___ = preHookFunc(&m);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4893,9 +6419,9 @@ bool HP_mutex_trylock(struct mutex_data *m) {
{
retVal___ = HPMHooks.source.mutex.trylock(m);
}
- if( HPMHooks.count.HP_mutex_trylock_post ) {
+ if (HPMHooks.count.HP_mutex_trylock_post > 0) {
bool (*postHookFunc) (bool retVal___, struct mutex_data *m);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_trylock_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_trylock_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mutex_trylock_post[hIndex].func;
retVal___ = postHookFunc(retVal___, m);
}
@@ -4904,14 +6430,14 @@ bool HP_mutex_trylock(struct mutex_data *m) {
}
void HP_mutex_unlock(struct mutex_data *m) {
int hIndex = 0;
- if( HPMHooks.count.HP_mutex_unlock_pre ) {
+ if (HPMHooks.count.HP_mutex_unlock_pre > 0) {
void (*preHookFunc) (struct mutex_data **m);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_unlock_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_unlock_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mutex_unlock_pre[hIndex].func;
preHookFunc(&m);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4919,9 +6445,9 @@ void HP_mutex_unlock(struct mutex_data *m) {
{
HPMHooks.source.mutex.unlock(m);
}
- if( HPMHooks.count.HP_mutex_unlock_post ) {
+ if (HPMHooks.count.HP_mutex_unlock_post > 0) {
void (*postHookFunc) (struct mutex_data *m);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_unlock_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_unlock_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mutex_unlock_post[hIndex].func;
postHookFunc(m);
}
@@ -4931,14 +6457,14 @@ void HP_mutex_unlock(struct mutex_data *m) {
struct cond_data* HP_mutex_cond_create(void) {
int hIndex = 0;
struct cond_data* retVal___ = NULL;
- if( HPMHooks.count.HP_mutex_cond_create_pre ) {
+ if (HPMHooks.count.HP_mutex_cond_create_pre > 0) {
struct cond_data* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mutex_cond_create_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4946,9 +6472,9 @@ struct cond_data* HP_mutex_cond_create(void) {
{
retVal___ = HPMHooks.source.mutex.cond_create();
}
- if( HPMHooks.count.HP_mutex_cond_create_post ) {
+ if (HPMHooks.count.HP_mutex_cond_create_post > 0) {
struct cond_data* (*postHookFunc) (struct cond_data* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mutex_cond_create_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -4957,14 +6483,14 @@ struct cond_data* HP_mutex_cond_create(void) {
}
void HP_mutex_cond_destroy(struct cond_data *c) {
int hIndex = 0;
- if( HPMHooks.count.HP_mutex_cond_destroy_pre ) {
+ if (HPMHooks.count.HP_mutex_cond_destroy_pre > 0) {
void (*preHookFunc) (struct cond_data **c);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_destroy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_destroy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mutex_cond_destroy_pre[hIndex].func;
preHookFunc(&c);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4972,9 +6498,9 @@ void HP_mutex_cond_destroy(struct cond_data *c) {
{
HPMHooks.source.mutex.cond_destroy(c);
}
- if( HPMHooks.count.HP_mutex_cond_destroy_post ) {
+ if (HPMHooks.count.HP_mutex_cond_destroy_post > 0) {
void (*postHookFunc) (struct cond_data *c);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_destroy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_destroy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mutex_cond_destroy_post[hIndex].func;
postHookFunc(c);
}
@@ -4983,14 +6509,14 @@ void HP_mutex_cond_destroy(struct cond_data *c) {
}
void HP_mutex_cond_wait(struct cond_data *c, struct mutex_data *m, sysint timeout_ticks) {
int hIndex = 0;
- if( HPMHooks.count.HP_mutex_cond_wait_pre ) {
+ if (HPMHooks.count.HP_mutex_cond_wait_pre > 0) {
void (*preHookFunc) (struct cond_data **c, struct mutex_data **m, sysint *timeout_ticks);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_wait_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_wait_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mutex_cond_wait_pre[hIndex].func;
preHookFunc(&c, &m, &timeout_ticks);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4998,9 +6524,9 @@ void HP_mutex_cond_wait(struct cond_data *c, struct mutex_data *m, sysint timeou
{
HPMHooks.source.mutex.cond_wait(c, m, timeout_ticks);
}
- if( HPMHooks.count.HP_mutex_cond_wait_post ) {
+ if (HPMHooks.count.HP_mutex_cond_wait_post > 0) {
void (*postHookFunc) (struct cond_data *c, struct mutex_data *m, sysint timeout_ticks);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_wait_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_wait_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mutex_cond_wait_post[hIndex].func;
postHookFunc(c, m, timeout_ticks);
}
@@ -5009,14 +6535,14 @@ void HP_mutex_cond_wait(struct cond_data *c, struct mutex_data *m, sysint timeou
}
void HP_mutex_cond_signal(struct cond_data *c) {
int hIndex = 0;
- if( HPMHooks.count.HP_mutex_cond_signal_pre ) {
+ if (HPMHooks.count.HP_mutex_cond_signal_pre > 0) {
void (*preHookFunc) (struct cond_data **c);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_signal_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_signal_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mutex_cond_signal_pre[hIndex].func;
preHookFunc(&c);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5024,9 +6550,9 @@ void HP_mutex_cond_signal(struct cond_data *c) {
{
HPMHooks.source.mutex.cond_signal(c);
}
- if( HPMHooks.count.HP_mutex_cond_signal_post ) {
+ if (HPMHooks.count.HP_mutex_cond_signal_post > 0) {
void (*postHookFunc) (struct cond_data *c);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_signal_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_signal_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mutex_cond_signal_post[hIndex].func;
postHookFunc(c);
}
@@ -5035,14 +6561,14 @@ void HP_mutex_cond_signal(struct cond_data *c) {
}
void HP_mutex_cond_broadcast(struct cond_data *c) {
int hIndex = 0;
- if( HPMHooks.count.HP_mutex_cond_broadcast_pre ) {
+ if (HPMHooks.count.HP_mutex_cond_broadcast_pre > 0) {
void (*preHookFunc) (struct cond_data **c);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_broadcast_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_broadcast_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mutex_cond_broadcast_pre[hIndex].func;
preHookFunc(&c);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5050,9 +6576,9 @@ void HP_mutex_cond_broadcast(struct cond_data *c) {
{
HPMHooks.source.mutex.cond_broadcast(c);
}
- if( HPMHooks.count.HP_mutex_cond_broadcast_post ) {
+ if (HPMHooks.count.HP_mutex_cond_broadcast_post > 0) {
void (*postHookFunc) (struct cond_data *c);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_broadcast_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_broadcast_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mutex_cond_broadcast_post[hIndex].func;
postHookFunc(c);
}
@@ -5062,14 +6588,14 @@ void HP_mutex_cond_broadcast(struct cond_data *c) {
/* nullpo_interface */
void HP_nullpo_assert_report(const char *file, int line, const char *func, const char *targetname, const char *title) {
int hIndex = 0;
- if( HPMHooks.count.HP_nullpo_assert_report_pre ) {
+ if (HPMHooks.count.HP_nullpo_assert_report_pre > 0) {
void (*preHookFunc) (const char **file, int *line, const char **func, const char **targetname, const char **title);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_nullpo_assert_report_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_nullpo_assert_report_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_nullpo_assert_report_pre[hIndex].func;
preHookFunc(&file, &line, &func, &targetname, &title);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5077,26 +6603,131 @@ void HP_nullpo_assert_report(const char *file, int line, const char *func, const
{
HPMHooks.source.nullpo.assert_report(file, line, func, targetname, title);
}
- if( HPMHooks.count.HP_nullpo_assert_report_post ) {
+ if (HPMHooks.count.HP_nullpo_assert_report_post > 0) {
void (*postHookFunc) (const char *file, int line, const char *func, const char *targetname, const char *title);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_nullpo_assert_report_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_nullpo_assert_report_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_nullpo_assert_report_post[hIndex].func;
postHookFunc(file, line, func, targetname, title);
}
}
return;
}
+/* packets_interface */
+void HP_packets_init(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_packets_init_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_packets_init_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_packets_init_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.packets.init();
+ }
+ if (HPMHooks.count.HP_packets_init_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_packets_init_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_packets_init_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+void HP_packets_final(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_packets_final_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_packets_final_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_packets_final_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.packets.final();
+ }
+ if (HPMHooks.count.HP_packets_final_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_packets_final_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_packets_final_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+void HP_packets_addLens(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_packets_addLens_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_packets_addLens_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_packets_addLens_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.packets.addLens();
+ }
+ if (HPMHooks.count.HP_packets_addLens_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_packets_addLens_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_packets_addLens_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+void HP_packets_addLen(int id, int len) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_packets_addLen_pre > 0) {
+ void (*preHookFunc) (int *id, int *len);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_packets_addLen_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_packets_addLen_pre[hIndex].func;
+ preHookFunc(&id, &len);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.packets.addLen(id, len);
+ }
+ if (HPMHooks.count.HP_packets_addLen_post > 0) {
+ void (*postHookFunc) (int id, int len);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_packets_addLen_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_packets_addLen_post[hIndex].func;
+ postHookFunc(id, len);
+ }
+ }
+ return;
+}
/* rnd_interface */
void HP_rnd_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_rnd_init_pre ) {
+ if (HPMHooks.count.HP_rnd_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_rnd_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5104,9 +6735,9 @@ void HP_rnd_init(void) {
{
HPMHooks.source.rnd.init();
}
- if( HPMHooks.count.HP_rnd_init_post ) {
+ if (HPMHooks.count.HP_rnd_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_rnd_init_post[hIndex].func;
postHookFunc();
}
@@ -5115,14 +6746,14 @@ void HP_rnd_init(void) {
}
void HP_rnd_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_rnd_final_pre ) {
+ if (HPMHooks.count.HP_rnd_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_rnd_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5130,9 +6761,9 @@ void HP_rnd_final(void) {
{
HPMHooks.source.rnd.final();
}
- if( HPMHooks.count.HP_rnd_final_post ) {
+ if (HPMHooks.count.HP_rnd_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_rnd_final_post[hIndex].func;
postHookFunc();
}
@@ -5141,14 +6772,14 @@ void HP_rnd_final(void) {
}
void HP_rnd_seed(uint32 seed) {
int hIndex = 0;
- if( HPMHooks.count.HP_rnd_seed_pre ) {
+ if (HPMHooks.count.HP_rnd_seed_pre > 0) {
void (*preHookFunc) (uint32 *seed);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_seed_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_seed_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_rnd_seed_pre[hIndex].func;
preHookFunc(&seed);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5156,9 +6787,9 @@ void HP_rnd_seed(uint32 seed) {
{
HPMHooks.source.rnd.seed(seed);
}
- if( HPMHooks.count.HP_rnd_seed_post ) {
+ if (HPMHooks.count.HP_rnd_seed_post > 0) {
void (*postHookFunc) (uint32 seed);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_seed_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_seed_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_rnd_seed_post[hIndex].func;
postHookFunc(seed);
}
@@ -5168,14 +6799,14 @@ void HP_rnd_seed(uint32 seed) {
int32 HP_rnd_random(void) {
int hIndex = 0;
int32 retVal___ = 0;
- if( HPMHooks.count.HP_rnd_random_pre ) {
+ if (HPMHooks.count.HP_rnd_random_pre > 0) {
int32 (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_random_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_random_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_rnd_random_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5183,9 +6814,9 @@ int32 HP_rnd_random(void) {
{
retVal___ = HPMHooks.source.rnd.random();
}
- if( HPMHooks.count.HP_rnd_random_post ) {
+ if (HPMHooks.count.HP_rnd_random_post > 0) {
int32 (*postHookFunc) (int32 retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_random_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_random_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_rnd_random_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -5195,14 +6826,14 @@ int32 HP_rnd_random(void) {
uint32 HP_rnd_roll(uint32 dice_faces) {
int hIndex = 0;
uint32 retVal___ = 0;
- if( HPMHooks.count.HP_rnd_roll_pre ) {
+ if (HPMHooks.count.HP_rnd_roll_pre > 0) {
uint32 (*preHookFunc) (uint32 *dice_faces);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_roll_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_roll_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_rnd_roll_pre[hIndex].func;
retVal___ = preHookFunc(&dice_faces);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5210,9 +6841,9 @@ uint32 HP_rnd_roll(uint32 dice_faces) {
{
retVal___ = HPMHooks.source.rnd.roll(dice_faces);
}
- if( HPMHooks.count.HP_rnd_roll_post ) {
+ if (HPMHooks.count.HP_rnd_roll_post > 0) {
uint32 (*postHookFunc) (uint32 retVal___, uint32 dice_faces);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_roll_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_roll_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_rnd_roll_post[hIndex].func;
retVal___ = postHookFunc(retVal___, dice_faces);
}
@@ -5222,14 +6853,14 @@ uint32 HP_rnd_roll(uint32 dice_faces) {
int32 HP_rnd_value(int32 min, int32 max) {
int hIndex = 0;
int32 retVal___ = 0;
- if( HPMHooks.count.HP_rnd_value_pre ) {
+ if (HPMHooks.count.HP_rnd_value_pre > 0) {
int32 (*preHookFunc) (int32 *min, int32 *max);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_value_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_value_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_rnd_value_pre[hIndex].func;
retVal___ = preHookFunc(&min, &max);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5237,9 +6868,9 @@ int32 HP_rnd_value(int32 min, int32 max) {
{
retVal___ = HPMHooks.source.rnd.value(min, max);
}
- if( HPMHooks.count.HP_rnd_value_post ) {
+ if (HPMHooks.count.HP_rnd_value_post > 0) {
int32 (*postHookFunc) (int32 retVal___, int32 min, int32 max);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_value_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_value_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_rnd_value_post[hIndex].func;
retVal___ = postHookFunc(retVal___, min, max);
}
@@ -5249,14 +6880,14 @@ int32 HP_rnd_value(int32 min, int32 max) {
double HP_rnd_uniform(void) {
int hIndex = 0;
double retVal___ = 0.;
- if( HPMHooks.count.HP_rnd_uniform_pre ) {
+ if (HPMHooks.count.HP_rnd_uniform_pre > 0) {
double (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_uniform_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_uniform_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_rnd_uniform_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5264,9 +6895,9 @@ double HP_rnd_uniform(void) {
{
retVal___ = HPMHooks.source.rnd.uniform();
}
- if( HPMHooks.count.HP_rnd_uniform_post ) {
+ if (HPMHooks.count.HP_rnd_uniform_post > 0) {
double (*postHookFunc) (double retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_uniform_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_uniform_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_rnd_uniform_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -5276,14 +6907,14 @@ double HP_rnd_uniform(void) {
double HP_rnd_uniform53(void) {
int hIndex = 0;
double retVal___ = 0.;
- if( HPMHooks.count.HP_rnd_uniform53_pre ) {
+ if (HPMHooks.count.HP_rnd_uniform53_pre > 0) {
double (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_uniform53_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_uniform53_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_rnd_uniform53_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5291,9 +6922,9 @@ double HP_rnd_uniform53(void) {
{
retVal___ = HPMHooks.source.rnd.uniform53();
}
- if( HPMHooks.count.HP_rnd_uniform53_post ) {
+ if (HPMHooks.count.HP_rnd_uniform53_post > 0) {
double (*postHookFunc) (double retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_uniform53_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_uniform53_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_rnd_uniform53_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -5303,14 +6934,14 @@ double HP_rnd_uniform53(void) {
/* showmsg_interface */
void HP_showmsg_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_showmsg_init_pre ) {
+ if (HPMHooks.count.HP_showmsg_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_showmsg_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5318,9 +6949,9 @@ void HP_showmsg_init(void) {
{
HPMHooks.source.showmsg.init();
}
- if( HPMHooks.count.HP_showmsg_init_post ) {
+ if (HPMHooks.count.HP_showmsg_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_showmsg_init_post[hIndex].func;
postHookFunc();
}
@@ -5329,14 +6960,14 @@ void HP_showmsg_init(void) {
}
void HP_showmsg_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_showmsg_final_pre ) {
+ if (HPMHooks.count.HP_showmsg_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_showmsg_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5344,9 +6975,9 @@ void HP_showmsg_final(void) {
{
HPMHooks.source.showmsg.final();
}
- if( HPMHooks.count.HP_showmsg_final_post ) {
+ if (HPMHooks.count.HP_showmsg_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_showmsg_final_post[hIndex].func;
postHookFunc();
}
@@ -5355,14 +6986,14 @@ void HP_showmsg_final(void) {
}
void HP_showmsg_clearScreen(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_showmsg_clearScreen_pre ) {
+ if (HPMHooks.count.HP_showmsg_clearScreen_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_clearScreen_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_clearScreen_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_showmsg_clearScreen_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5370,9 +7001,9 @@ void HP_showmsg_clearScreen(void) {
{
HPMHooks.source.showmsg.clearScreen();
}
- if( HPMHooks.count.HP_showmsg_clearScreen_post ) {
+ if (HPMHooks.count.HP_showmsg_clearScreen_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_clearScreen_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_clearScreen_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_showmsg_clearScreen_post[hIndex].func;
postHookFunc();
}
@@ -5382,16 +7013,16 @@ void HP_showmsg_clearScreen(void) {
int HP_showmsg_showMessageV(const char *string, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_showmsg_showMessageV_pre ) {
+ if (HPMHooks.count.HP_showmsg_showMessageV_pre > 0) {
int (*preHookFunc) (const char **string, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_showMessageV_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_showMessageV_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_showmsg_showMessageV_pre[hIndex].func;
retVal___ = preHookFunc(&string, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5401,9 +7032,9 @@ int HP_showmsg_showMessageV(const char *string, va_list ap) {
retVal___ = HPMHooks.source.showmsg.showMessageV(string, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_showmsg_showMessageV_post ) {
+ if (HPMHooks.count.HP_showmsg_showMessageV_post > 0) {
int (*postHookFunc) (int retVal___, const char *string, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_showMessageV_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_showMessageV_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_showmsg_showMessageV_post[hIndex].func;
retVal___ = postHookFunc(retVal___, string, ap___copy);
@@ -5415,14 +7046,14 @@ int HP_showmsg_showMessageV(const char *string, va_list ap) {
/* socket_interface */
void HP_sockt_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_sockt_init_pre ) {
+ if (HPMHooks.count.HP_sockt_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5430,9 +7061,9 @@ void HP_sockt_init(void) {
{
HPMHooks.source.sockt.init();
}
- if( HPMHooks.count.HP_sockt_init_post ) {
+ if (HPMHooks.count.HP_sockt_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_init_post[hIndex].func;
postHookFunc();
}
@@ -5441,14 +7072,14 @@ void HP_sockt_init(void) {
}
void HP_sockt_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_sockt_final_pre ) {
+ if (HPMHooks.count.HP_sockt_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5456,9 +7087,9 @@ void HP_sockt_final(void) {
{
HPMHooks.source.sockt.final();
}
- if( HPMHooks.count.HP_sockt_final_post ) {
+ if (HPMHooks.count.HP_sockt_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_final_post[hIndex].func;
postHookFunc();
}
@@ -5468,14 +7099,14 @@ void HP_sockt_final(void) {
int HP_sockt_perform(int next) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sockt_perform_pre ) {
+ if (HPMHooks.count.HP_sockt_perform_pre > 0) {
int (*preHookFunc) (int *next);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_perform_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_perform_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_perform_pre[hIndex].func;
retVal___ = preHookFunc(&next);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5483,9 +7114,9 @@ int HP_sockt_perform(int next) {
{
retVal___ = HPMHooks.source.sockt.perform(next);
}
- if( HPMHooks.count.HP_sockt_perform_post ) {
+ if (HPMHooks.count.HP_sockt_perform_post > 0) {
int (*postHookFunc) (int retVal___, int next);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_perform_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_perform_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_perform_post[hIndex].func;
retVal___ = postHookFunc(retVal___, next);
}
@@ -5494,14 +7125,14 @@ int HP_sockt_perform(int next) {
}
void HP_sockt_datasync(int fd, bool send) {
int hIndex = 0;
- if( HPMHooks.count.HP_sockt_datasync_pre ) {
+ if (HPMHooks.count.HP_sockt_datasync_pre > 0) {
void (*preHookFunc) (int *fd, bool *send);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_datasync_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_datasync_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_datasync_pre[hIndex].func;
preHookFunc(&fd, &send);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5509,9 +7140,9 @@ void HP_sockt_datasync(int fd, bool send) {
{
HPMHooks.source.sockt.datasync(fd, send);
}
- if( HPMHooks.count.HP_sockt_datasync_post ) {
+ if (HPMHooks.count.HP_sockt_datasync_post > 0) {
void (*postHookFunc) (int fd, bool send);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_datasync_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_datasync_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_datasync_post[hIndex].func;
postHookFunc(fd, send);
}
@@ -5521,14 +7152,14 @@ void HP_sockt_datasync(int fd, bool send) {
int HP_sockt_make_listen_bind(uint32 ip, uint16 port) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sockt_make_listen_bind_pre ) {
+ if (HPMHooks.count.HP_sockt_make_listen_bind_pre > 0) {
int (*preHookFunc) (uint32 *ip, uint16 *port);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_make_listen_bind_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_make_listen_bind_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_make_listen_bind_pre[hIndex].func;
retVal___ = preHookFunc(&ip, &port);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5536,9 +7167,9 @@ int HP_sockt_make_listen_bind(uint32 ip, uint16 port) {
{
retVal___ = HPMHooks.source.sockt.make_listen_bind(ip, port);
}
- if( HPMHooks.count.HP_sockt_make_listen_bind_post ) {
+ if (HPMHooks.count.HP_sockt_make_listen_bind_post > 0) {
int (*postHookFunc) (int retVal___, uint32 ip, uint16 port);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_make_listen_bind_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_make_listen_bind_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_make_listen_bind_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ip, port);
}
@@ -5548,14 +7179,14 @@ int HP_sockt_make_listen_bind(uint32 ip, uint16 port) {
int HP_sockt_make_connection(uint32 ip, uint16 port, struct hSockOpt *opt) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sockt_make_connection_pre ) {
+ if (HPMHooks.count.HP_sockt_make_connection_pre > 0) {
int (*preHookFunc) (uint32 *ip, uint16 *port, struct hSockOpt **opt);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_make_connection_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_make_connection_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_make_connection_pre[hIndex].func;
retVal___ = preHookFunc(&ip, &port, &opt);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5563,9 +7194,9 @@ int HP_sockt_make_connection(uint32 ip, uint16 port, struct hSockOpt *opt) {
{
retVal___ = HPMHooks.source.sockt.make_connection(ip, port, opt);
}
- if( HPMHooks.count.HP_sockt_make_connection_post ) {
+ if (HPMHooks.count.HP_sockt_make_connection_post > 0) {
int (*postHookFunc) (int retVal___, uint32 ip, uint16 port, struct hSockOpt *opt);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_make_connection_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_make_connection_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_make_connection_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ip, port, opt);
}
@@ -5575,14 +7206,14 @@ int HP_sockt_make_connection(uint32 ip, uint16 port, struct hSockOpt *opt) {
int HP_sockt_realloc_fifo(int fd, unsigned int rfifo_size, unsigned int wfifo_size) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sockt_realloc_fifo_pre ) {
+ if (HPMHooks.count.HP_sockt_realloc_fifo_pre > 0) {
int (*preHookFunc) (int *fd, unsigned int *rfifo_size, unsigned int *wfifo_size);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_realloc_fifo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_realloc_fifo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_realloc_fifo_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &rfifo_size, &wfifo_size);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5590,9 +7221,9 @@ int HP_sockt_realloc_fifo(int fd, unsigned int rfifo_size, unsigned int wfifo_si
{
retVal___ = HPMHooks.source.sockt.realloc_fifo(fd, rfifo_size, wfifo_size);
}
- if( HPMHooks.count.HP_sockt_realloc_fifo_post ) {
+ if (HPMHooks.count.HP_sockt_realloc_fifo_post > 0) {
int (*postHookFunc) (int retVal___, int fd, unsigned int rfifo_size, unsigned int wfifo_size);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_realloc_fifo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_realloc_fifo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_realloc_fifo_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, rfifo_size, wfifo_size);
}
@@ -5602,14 +7233,14 @@ int HP_sockt_realloc_fifo(int fd, unsigned int rfifo_size, unsigned int wfifo_si
int HP_sockt_realloc_writefifo(int fd, size_t addition) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sockt_realloc_writefifo_pre ) {
+ if (HPMHooks.count.HP_sockt_realloc_writefifo_pre > 0) {
int (*preHookFunc) (int *fd, size_t *addition);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_realloc_writefifo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_realloc_writefifo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_realloc_writefifo_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &addition);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5617,53 +7248,79 @@ int HP_sockt_realloc_writefifo(int fd, size_t addition) {
{
retVal___ = HPMHooks.source.sockt.realloc_writefifo(fd, addition);
}
- if( HPMHooks.count.HP_sockt_realloc_writefifo_post ) {
+ if (HPMHooks.count.HP_sockt_realloc_writefifo_post > 0) {
int (*postHookFunc) (int retVal___, int fd, size_t addition);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_realloc_writefifo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_realloc_writefifo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_realloc_writefifo_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, addition);
}
}
return retVal___;
}
-int HP_sockt_wfifoset(int fd, size_t len) {
+int HP_sockt_wfifoset(int fd, size_t len, bool validate) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sockt_wfifoset_pre ) {
- int (*preHookFunc) (int *fd, size_t *len);
+ if (HPMHooks.count.HP_sockt_wfifoset_pre > 0) {
+ int (*preHookFunc) (int *fd, size_t *len, bool *validate);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_wfifoset_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_wfifoset_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_wfifoset_pre[hIndex].func;
- retVal___ = preHookFunc(&fd, &len);
+ retVal___ = preHookFunc(&fd, &len, &validate);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
}
{
- retVal___ = HPMHooks.source.sockt.wfifoset(fd, len);
+ retVal___ = HPMHooks.source.sockt.wfifoset(fd, len, validate);
}
- if( HPMHooks.count.HP_sockt_wfifoset_post ) {
- int (*postHookFunc) (int retVal___, int fd, size_t len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_wfifoset_post; hIndex++ ) {
+ if (HPMHooks.count.HP_sockt_wfifoset_post > 0) {
+ int (*postHookFunc) (int retVal___, int fd, size_t len, bool validate);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_wfifoset_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_wfifoset_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, fd, len);
+ retVal___ = postHookFunc(retVal___, fd, len, validate);
}
}
return retVal___;
}
+void HP_sockt_wfifohead(int fd, size_t len) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_sockt_wfifohead_pre > 0) {
+ void (*preHookFunc) (int *fd, size_t *len);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_wfifohead_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_sockt_wfifohead_pre[hIndex].func;
+ preHookFunc(&fd, &len);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.sockt.wfifohead(fd, len);
+ }
+ if (HPMHooks.count.HP_sockt_wfifohead_post > 0) {
+ void (*postHookFunc) (int fd, size_t len);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_wfifohead_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_sockt_wfifohead_post[hIndex].func;
+ postHookFunc(fd, len);
+ }
+ }
+ return;
+}
int HP_sockt_rfifoskip(int fd, size_t len) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sockt_rfifoskip_pre ) {
+ if (HPMHooks.count.HP_sockt_rfifoskip_pre > 0) {
int (*preHookFunc) (int *fd, size_t *len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_rfifoskip_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_rfifoskip_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_rfifoskip_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5671,9 +7328,9 @@ int HP_sockt_rfifoskip(int fd, size_t len) {
{
retVal___ = HPMHooks.source.sockt.rfifoskip(fd, len);
}
- if( HPMHooks.count.HP_sockt_rfifoskip_post ) {
+ if (HPMHooks.count.HP_sockt_rfifoskip_post > 0) {
int (*postHookFunc) (int retVal___, int fd, size_t len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_rfifoskip_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_rfifoskip_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_rfifoskip_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, len);
}
@@ -5682,14 +7339,14 @@ int HP_sockt_rfifoskip(int fd, size_t len) {
}
void HP_sockt_close(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_sockt_close_pre ) {
+ if (HPMHooks.count.HP_sockt_close_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_close_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_close_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_close_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5697,26 +7354,52 @@ void HP_sockt_close(int fd) {
{
HPMHooks.source.sockt.close(fd);
}
- if( HPMHooks.count.HP_sockt_close_post ) {
+ if (HPMHooks.count.HP_sockt_close_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_close_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_close_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_close_post[hIndex].func;
postHookFunc(fd);
}
}
return;
}
+void HP_sockt_validateWfifo(int fd, size_t len) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_sockt_validateWfifo_pre > 0) {
+ void (*preHookFunc) (int *fd, size_t *len);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_validateWfifo_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_sockt_validateWfifo_pre[hIndex].func;
+ preHookFunc(&fd, &len);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.sockt.validateWfifo(fd, len);
+ }
+ if (HPMHooks.count.HP_sockt_validateWfifo_post > 0) {
+ void (*postHookFunc) (int fd, size_t len);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_validateWfifo_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_sockt_validateWfifo_post[hIndex].func;
+ postHookFunc(fd, len);
+ }
+ }
+ return;
+}
bool HP_sockt_session_is_valid(int fd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_sockt_session_is_valid_pre ) {
+ if (HPMHooks.count.HP_sockt_session_is_valid_pre > 0) {
bool (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_session_is_valid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_session_is_valid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_session_is_valid_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5724,9 +7407,9 @@ bool HP_sockt_session_is_valid(int fd) {
{
retVal___ = HPMHooks.source.sockt.session_is_valid(fd);
}
- if( HPMHooks.count.HP_sockt_session_is_valid_post ) {
+ if (HPMHooks.count.HP_sockt_session_is_valid_post > 0) {
bool (*postHookFunc) (bool retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_session_is_valid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_session_is_valid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_session_is_valid_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -5736,14 +7419,14 @@ bool HP_sockt_session_is_valid(int fd) {
bool HP_sockt_session_is_active(int fd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_sockt_session_is_active_pre ) {
+ if (HPMHooks.count.HP_sockt_session_is_active_pre > 0) {
bool (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_session_is_active_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_session_is_active_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_session_is_active_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5751,9 +7434,9 @@ bool HP_sockt_session_is_active(int fd) {
{
retVal___ = HPMHooks.source.sockt.session_is_active(fd);
}
- if( HPMHooks.count.HP_sockt_session_is_active_post ) {
+ if (HPMHooks.count.HP_sockt_session_is_active_post > 0) {
bool (*postHookFunc) (bool retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_session_is_active_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_session_is_active_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_session_is_active_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -5762,14 +7445,14 @@ bool HP_sockt_session_is_active(int fd) {
}
void HP_sockt_flush(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_sockt_flush_pre ) {
+ if (HPMHooks.count.HP_sockt_flush_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_flush_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_flush_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_flush_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5777,9 +7460,9 @@ void HP_sockt_flush(int fd) {
{
HPMHooks.source.sockt.flush(fd);
}
- if( HPMHooks.count.HP_sockt_flush_post ) {
+ if (HPMHooks.count.HP_sockt_flush_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_flush_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_flush_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_flush_post[hIndex].func;
postHookFunc(fd);
}
@@ -5788,14 +7471,14 @@ void HP_sockt_flush(int fd) {
}
void HP_sockt_flush_fifos(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_sockt_flush_fifos_pre ) {
+ if (HPMHooks.count.HP_sockt_flush_fifos_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_flush_fifos_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_flush_fifos_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_flush_fifos_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5803,9 +7486,9 @@ void HP_sockt_flush_fifos(void) {
{
HPMHooks.source.sockt.flush_fifos();
}
- if( HPMHooks.count.HP_sockt_flush_fifos_post ) {
+ if (HPMHooks.count.HP_sockt_flush_fifos_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_flush_fifos_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_flush_fifos_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_flush_fifos_post[hIndex].func;
postHookFunc();
}
@@ -5814,14 +7497,14 @@ void HP_sockt_flush_fifos(void) {
}
void HP_sockt_set_nonblocking(int fd, unsigned long yes) {
int hIndex = 0;
- if( HPMHooks.count.HP_sockt_set_nonblocking_pre ) {
+ if (HPMHooks.count.HP_sockt_set_nonblocking_pre > 0) {
void (*preHookFunc) (int *fd, unsigned long *yes);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_set_nonblocking_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_set_nonblocking_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_set_nonblocking_pre[hIndex].func;
preHookFunc(&fd, &yes);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5829,9 +7512,9 @@ void HP_sockt_set_nonblocking(int fd, unsigned long yes) {
{
HPMHooks.source.sockt.set_nonblocking(fd, yes);
}
- if( HPMHooks.count.HP_sockt_set_nonblocking_post ) {
+ if (HPMHooks.count.HP_sockt_set_nonblocking_post > 0) {
void (*postHookFunc) (int fd, unsigned long yes);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_set_nonblocking_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_set_nonblocking_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_set_nonblocking_post[hIndex].func;
postHookFunc(fd, yes);
}
@@ -5840,14 +7523,14 @@ void HP_sockt_set_nonblocking(int fd, unsigned long yes) {
}
void HP_sockt_set_defaultparse(ParseFunc defaultparse) {
int hIndex = 0;
- if( HPMHooks.count.HP_sockt_set_defaultparse_pre ) {
+ if (HPMHooks.count.HP_sockt_set_defaultparse_pre > 0) {
void (*preHookFunc) (ParseFunc *defaultparse);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_set_defaultparse_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_set_defaultparse_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_set_defaultparse_pre[hIndex].func;
preHookFunc(&defaultparse);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5855,9 +7538,9 @@ void HP_sockt_set_defaultparse(ParseFunc defaultparse) {
{
HPMHooks.source.sockt.set_defaultparse(defaultparse);
}
- if( HPMHooks.count.HP_sockt_set_defaultparse_post ) {
+ if (HPMHooks.count.HP_sockt_set_defaultparse_post > 0) {
void (*postHookFunc) (ParseFunc defaultparse);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_set_defaultparse_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_set_defaultparse_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_set_defaultparse_post[hIndex].func;
postHookFunc(defaultparse);
}
@@ -5867,14 +7550,14 @@ void HP_sockt_set_defaultparse(ParseFunc defaultparse) {
uint32 HP_sockt_host2ip(const char *hostname) {
int hIndex = 0;
uint32 retVal___ = 0;
- if( HPMHooks.count.HP_sockt_host2ip_pre ) {
+ if (HPMHooks.count.HP_sockt_host2ip_pre > 0) {
uint32 (*preHookFunc) (const char **hostname);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_host2ip_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_host2ip_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_host2ip_pre[hIndex].func;
retVal___ = preHookFunc(&hostname);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5882,9 +7565,9 @@ uint32 HP_sockt_host2ip(const char *hostname) {
{
retVal___ = HPMHooks.source.sockt.host2ip(hostname);
}
- if( HPMHooks.count.HP_sockt_host2ip_post ) {
+ if (HPMHooks.count.HP_sockt_host2ip_post > 0) {
uint32 (*postHookFunc) (uint32 retVal___, const char *hostname);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_host2ip_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_host2ip_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_host2ip_post[hIndex].func;
retVal___ = postHookFunc(retVal___, hostname);
}
@@ -5894,14 +7577,14 @@ uint32 HP_sockt_host2ip(const char *hostname) {
const char* HP_sockt_ip2str(uint32 ip, char *ip_str) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sockt_ip2str_pre ) {
+ if (HPMHooks.count.HP_sockt_ip2str_pre > 0) {
const char* (*preHookFunc) (uint32 *ip, char **ip_str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_ip2str_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_ip2str_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_ip2str_pre[hIndex].func;
retVal___ = preHookFunc(&ip, &ip_str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5909,9 +7592,9 @@ const char* HP_sockt_ip2str(uint32 ip, char *ip_str) {
{
retVal___ = HPMHooks.source.sockt.ip2str(ip, ip_str);
}
- if( HPMHooks.count.HP_sockt_ip2str_post ) {
+ if (HPMHooks.count.HP_sockt_ip2str_post > 0) {
const char* (*postHookFunc) (const char* retVal___, uint32 ip, char *ip_str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_ip2str_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_ip2str_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_ip2str_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ip, ip_str);
}
@@ -5921,14 +7604,14 @@ const char* HP_sockt_ip2str(uint32 ip, char *ip_str) {
uint32 HP_sockt_str2ip(const char *ip_str) {
int hIndex = 0;
uint32 retVal___ = 0;
- if( HPMHooks.count.HP_sockt_str2ip_pre ) {
+ if (HPMHooks.count.HP_sockt_str2ip_pre > 0) {
uint32 (*preHookFunc) (const char **ip_str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_str2ip_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_str2ip_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_str2ip_pre[hIndex].func;
retVal___ = preHookFunc(&ip_str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5936,9 +7619,9 @@ uint32 HP_sockt_str2ip(const char *ip_str) {
{
retVal___ = HPMHooks.source.sockt.str2ip(ip_str);
}
- if( HPMHooks.count.HP_sockt_str2ip_post ) {
+ if (HPMHooks.count.HP_sockt_str2ip_post > 0) {
uint32 (*postHookFunc) (uint32 retVal___, const char *ip_str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_str2ip_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_str2ip_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_str2ip_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ip_str);
}
@@ -5948,14 +7631,14 @@ uint32 HP_sockt_str2ip(const char *ip_str) {
uint16 HP_sockt_ntows(uint16 netshort) {
int hIndex = 0;
uint16 retVal___ = 0;
- if( HPMHooks.count.HP_sockt_ntows_pre ) {
+ if (HPMHooks.count.HP_sockt_ntows_pre > 0) {
uint16 (*preHookFunc) (uint16 *netshort);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_ntows_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_ntows_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_ntows_pre[hIndex].func;
retVal___ = preHookFunc(&netshort);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5963,9 +7646,9 @@ uint16 HP_sockt_ntows(uint16 netshort) {
{
retVal___ = HPMHooks.source.sockt.ntows(netshort);
}
- if( HPMHooks.count.HP_sockt_ntows_post ) {
+ if (HPMHooks.count.HP_sockt_ntows_post > 0) {
uint16 (*postHookFunc) (uint16 retVal___, uint16 netshort);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_ntows_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_ntows_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_ntows_post[hIndex].func;
retVal___ = postHookFunc(retVal___, netshort);
}
@@ -5975,14 +7658,14 @@ uint16 HP_sockt_ntows(uint16 netshort) {
int HP_sockt_getips(uint32 *ips, int max) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sockt_getips_pre ) {
+ if (HPMHooks.count.HP_sockt_getips_pre > 0) {
int (*preHookFunc) (uint32 **ips, int *max);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_getips_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_getips_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_getips_pre[hIndex].func;
retVal___ = preHookFunc(&ips, &max);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5990,9 +7673,9 @@ int HP_sockt_getips(uint32 *ips, int max) {
{
retVal___ = HPMHooks.source.sockt.getips(ips, max);
}
- if( HPMHooks.count.HP_sockt_getips_post ) {
+ if (HPMHooks.count.HP_sockt_getips_post > 0) {
int (*postHookFunc) (int retVal___, uint32 *ips, int max);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_getips_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_getips_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_getips_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ips, max);
}
@@ -6001,14 +7684,14 @@ int HP_sockt_getips(uint32 *ips, int max) {
}
void HP_sockt_eof(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_sockt_eof_pre ) {
+ if (HPMHooks.count.HP_sockt_eof_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_eof_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_eof_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_eof_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6016,9 +7699,9 @@ void HP_sockt_eof(int fd) {
{
HPMHooks.source.sockt.eof(fd);
}
- if( HPMHooks.count.HP_sockt_eof_post ) {
+ if (HPMHooks.count.HP_sockt_eof_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_eof_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_eof_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_eof_post[hIndex].func;
postHookFunc(fd);
}
@@ -6028,14 +7711,14 @@ void HP_sockt_eof(int fd) {
uint32 HP_sockt_lan_subnet_check(uint32 ip, struct s_subnet *info) {
int hIndex = 0;
uint32 retVal___ = 0;
- if( HPMHooks.count.HP_sockt_lan_subnet_check_pre ) {
+ if (HPMHooks.count.HP_sockt_lan_subnet_check_pre > 0) {
uint32 (*preHookFunc) (uint32 *ip, struct s_subnet **info);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_lan_subnet_check_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_lan_subnet_check_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_lan_subnet_check_pre[hIndex].func;
retVal___ = preHookFunc(&ip, &info);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6043,9 +7726,9 @@ uint32 HP_sockt_lan_subnet_check(uint32 ip, struct s_subnet *info) {
{
retVal___ = HPMHooks.source.sockt.lan_subnet_check(ip, info);
}
- if( HPMHooks.count.HP_sockt_lan_subnet_check_post ) {
+ if (HPMHooks.count.HP_sockt_lan_subnet_check_post > 0) {
uint32 (*postHookFunc) (uint32 retVal___, uint32 ip, struct s_subnet *info);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_lan_subnet_check_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_lan_subnet_check_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_lan_subnet_check_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ip, info);
}
@@ -6055,14 +7738,14 @@ uint32 HP_sockt_lan_subnet_check(uint32 ip, struct s_subnet *info) {
bool HP_sockt_allowed_ip_check(uint32 ip) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_sockt_allowed_ip_check_pre ) {
+ if (HPMHooks.count.HP_sockt_allowed_ip_check_pre > 0) {
bool (*preHookFunc) (uint32 *ip);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_allowed_ip_check_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_allowed_ip_check_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_allowed_ip_check_pre[hIndex].func;
retVal___ = preHookFunc(&ip);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6070,9 +7753,9 @@ bool HP_sockt_allowed_ip_check(uint32 ip) {
{
retVal___ = HPMHooks.source.sockt.allowed_ip_check(ip);
}
- if( HPMHooks.count.HP_sockt_allowed_ip_check_post ) {
+ if (HPMHooks.count.HP_sockt_allowed_ip_check_post > 0) {
bool (*postHookFunc) (bool retVal___, uint32 ip);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_allowed_ip_check_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_allowed_ip_check_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_allowed_ip_check_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ip);
}
@@ -6082,14 +7765,14 @@ bool HP_sockt_allowed_ip_check(uint32 ip) {
bool HP_sockt_trusted_ip_check(uint32 ip) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_sockt_trusted_ip_check_pre ) {
+ if (HPMHooks.count.HP_sockt_trusted_ip_check_pre > 0) {
bool (*preHookFunc) (uint32 *ip);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_trusted_ip_check_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_trusted_ip_check_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_trusted_ip_check_pre[hIndex].func;
retVal___ = preHookFunc(&ip);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6097,9 +7780,9 @@ bool HP_sockt_trusted_ip_check(uint32 ip) {
{
retVal___ = HPMHooks.source.sockt.trusted_ip_check(ip);
}
- if( HPMHooks.count.HP_sockt_trusted_ip_check_post ) {
+ if (HPMHooks.count.HP_sockt_trusted_ip_check_post > 0) {
bool (*postHookFunc) (bool retVal___, uint32 ip);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_trusted_ip_check_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_trusted_ip_check_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_trusted_ip_check_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ip);
}
@@ -6109,14 +7792,14 @@ bool HP_sockt_trusted_ip_check(uint32 ip) {
int HP_sockt_net_config_read_sub(struct config_setting_t *t, struct s_subnet_vector *list, const char *filename, const char *groupname) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sockt_net_config_read_sub_pre ) {
+ if (HPMHooks.count.HP_sockt_net_config_read_sub_pre > 0) {
int (*preHookFunc) (struct config_setting_t **t, struct s_subnet_vector **list, const char **filename, const char **groupname);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_net_config_read_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_net_config_read_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_net_config_read_sub_pre[hIndex].func;
retVal___ = preHookFunc(&t, &list, &filename, &groupname);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6124,9 +7807,9 @@ int HP_sockt_net_config_read_sub(struct config_setting_t *t, struct s_subnet_vec
{
retVal___ = HPMHooks.source.sockt.net_config_read_sub(t, list, filename, groupname);
}
- if( HPMHooks.count.HP_sockt_net_config_read_sub_post ) {
+ if (HPMHooks.count.HP_sockt_net_config_read_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *t, struct s_subnet_vector *list, const char *filename, const char *groupname);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_net_config_read_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_net_config_read_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_net_config_read_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, t, list, filename, groupname);
}
@@ -6135,14 +7818,14 @@ int HP_sockt_net_config_read_sub(struct config_setting_t *t, struct s_subnet_vec
}
void HP_sockt_net_config_read(const char *filename) {
int hIndex = 0;
- if( HPMHooks.count.HP_sockt_net_config_read_pre ) {
+ if (HPMHooks.count.HP_sockt_net_config_read_pre > 0) {
void (*preHookFunc) (const char **filename);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_net_config_read_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_net_config_read_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_net_config_read_pre[hIndex].func;
preHookFunc(&filename);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6150,9 +7833,9 @@ void HP_sockt_net_config_read(const char *filename) {
{
HPMHooks.source.sockt.net_config_read(filename);
}
- if( HPMHooks.count.HP_sockt_net_config_read_post ) {
+ if (HPMHooks.count.HP_sockt_net_config_read_post > 0) {
void (*postHookFunc) (const char *filename);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_net_config_read_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_net_config_read_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_net_config_read_post[hIndex].func;
postHookFunc(filename);
}
@@ -6163,14 +7846,14 @@ void HP_sockt_net_config_read(const char *filename) {
int HP_SQL_Connect(struct Sql *self, const char *user, const char *passwd, const char *host, uint16 port, const char *db) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_Connect_pre ) {
+ if (HPMHooks.count.HP_SQL_Connect_pre > 0) {
int (*preHookFunc) (struct Sql **self, const char **user, const char **passwd, const char **host, uint16 *port, const char **db);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Connect_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Connect_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_Connect_pre[hIndex].func;
retVal___ = preHookFunc(&self, &user, &passwd, &host, &port, &db);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6178,9 +7861,9 @@ int HP_SQL_Connect(struct Sql *self, const char *user, const char *passwd, const
{
retVal___ = HPMHooks.source.SQL.Connect(self, user, passwd, host, port, db);
}
- if( HPMHooks.count.HP_SQL_Connect_post ) {
+ if (HPMHooks.count.HP_SQL_Connect_post > 0) {
int (*postHookFunc) (int retVal___, struct Sql *self, const char *user, const char *passwd, const char *host, uint16 port, const char *db);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Connect_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Connect_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_Connect_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, user, passwd, host, port, db);
}
@@ -6190,14 +7873,14 @@ int HP_SQL_Connect(struct Sql *self, const char *user, const char *passwd, const
int HP_SQL_GetTimeout(struct Sql *self, uint32 *out_timeout) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_GetTimeout_pre ) {
+ if (HPMHooks.count.HP_SQL_GetTimeout_pre > 0) {
int (*preHookFunc) (struct Sql **self, uint32 **out_timeout);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetTimeout_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetTimeout_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_GetTimeout_pre[hIndex].func;
retVal___ = preHookFunc(&self, &out_timeout);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6205,9 +7888,9 @@ int HP_SQL_GetTimeout(struct Sql *self, uint32 *out_timeout) {
{
retVal___ = HPMHooks.source.SQL.GetTimeout(self, out_timeout);
}
- if( HPMHooks.count.HP_SQL_GetTimeout_post ) {
+ if (HPMHooks.count.HP_SQL_GetTimeout_post > 0) {
int (*postHookFunc) (int retVal___, struct Sql *self, uint32 *out_timeout);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetTimeout_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetTimeout_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_GetTimeout_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, out_timeout);
}
@@ -6217,14 +7900,14 @@ int HP_SQL_GetTimeout(struct Sql *self, uint32 *out_timeout) {
int HP_SQL_GetColumnNames(struct Sql *self, const char *table, char *out_buf, size_t buf_len, char sep) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_GetColumnNames_pre ) {
+ if (HPMHooks.count.HP_SQL_GetColumnNames_pre > 0) {
int (*preHookFunc) (struct Sql **self, const char **table, char **out_buf, size_t *buf_len, char *sep);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetColumnNames_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetColumnNames_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_GetColumnNames_pre[hIndex].func;
retVal___ = preHookFunc(&self, &table, &out_buf, &buf_len, &sep);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6232,9 +7915,9 @@ int HP_SQL_GetColumnNames(struct Sql *self, const char *table, char *out_buf, si
{
retVal___ = HPMHooks.source.SQL.GetColumnNames(self, table, out_buf, buf_len, sep);
}
- if( HPMHooks.count.HP_SQL_GetColumnNames_post ) {
+ if (HPMHooks.count.HP_SQL_GetColumnNames_post > 0) {
int (*postHookFunc) (int retVal___, struct Sql *self, const char *table, char *out_buf, size_t buf_len, char sep);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetColumnNames_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetColumnNames_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_GetColumnNames_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, table, out_buf, buf_len, sep);
}
@@ -6244,14 +7927,14 @@ int HP_SQL_GetColumnNames(struct Sql *self, const char *table, char *out_buf, si
int HP_SQL_SetEncoding(struct Sql *self, const char *encoding) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_SetEncoding_pre ) {
+ if (HPMHooks.count.HP_SQL_SetEncoding_pre > 0) {
int (*preHookFunc) (struct Sql **self, const char **encoding);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_SetEncoding_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_SetEncoding_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_SetEncoding_pre[hIndex].func;
retVal___ = preHookFunc(&self, &encoding);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6259,9 +7942,9 @@ int HP_SQL_SetEncoding(struct Sql *self, const char *encoding) {
{
retVal___ = HPMHooks.source.SQL.SetEncoding(self, encoding);
}
- if( HPMHooks.count.HP_SQL_SetEncoding_post ) {
+ if (HPMHooks.count.HP_SQL_SetEncoding_post > 0) {
int (*postHookFunc) (int retVal___, struct Sql *self, const char *encoding);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_SetEncoding_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_SetEncoding_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_SetEncoding_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, encoding);
}
@@ -6271,14 +7954,14 @@ int HP_SQL_SetEncoding(struct Sql *self, const char *encoding) {
int HP_SQL_Ping(struct Sql *self) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_Ping_pre ) {
+ if (HPMHooks.count.HP_SQL_Ping_pre > 0) {
int (*preHookFunc) (struct Sql **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Ping_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Ping_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_Ping_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6286,9 +7969,9 @@ int HP_SQL_Ping(struct Sql *self) {
{
retVal___ = HPMHooks.source.SQL.Ping(self);
}
- if( HPMHooks.count.HP_SQL_Ping_post ) {
+ if (HPMHooks.count.HP_SQL_Ping_post > 0) {
int (*postHookFunc) (int retVal___, struct Sql *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Ping_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Ping_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_Ping_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -6298,14 +7981,14 @@ int HP_SQL_Ping(struct Sql *self) {
size_t HP_SQL_EscapeString(struct Sql *self, char *out_to, const char *from) {
int hIndex = 0;
size_t retVal___ = 0;
- if( HPMHooks.count.HP_SQL_EscapeString_pre ) {
+ if (HPMHooks.count.HP_SQL_EscapeString_pre > 0) {
size_t (*preHookFunc) (struct Sql **self, char **out_to, const char **from);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_EscapeString_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_EscapeString_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_EscapeString_pre[hIndex].func;
retVal___ = preHookFunc(&self, &out_to, &from);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6313,9 +7996,9 @@ size_t HP_SQL_EscapeString(struct Sql *self, char *out_to, const char *from) {
{
retVal___ = HPMHooks.source.SQL.EscapeString(self, out_to, from);
}
- if( HPMHooks.count.HP_SQL_EscapeString_post ) {
+ if (HPMHooks.count.HP_SQL_EscapeString_post > 0) {
size_t (*postHookFunc) (size_t retVal___, struct Sql *self, char *out_to, const char *from);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_EscapeString_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_EscapeString_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_EscapeString_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, out_to, from);
}
@@ -6325,14 +8008,14 @@ size_t HP_SQL_EscapeString(struct Sql *self, char *out_to, const char *from) {
size_t HP_SQL_EscapeStringLen(struct Sql *self, char *out_to, const char *from, size_t from_len) {
int hIndex = 0;
size_t retVal___ = 0;
- if( HPMHooks.count.HP_SQL_EscapeStringLen_pre ) {
+ if (HPMHooks.count.HP_SQL_EscapeStringLen_pre > 0) {
size_t (*preHookFunc) (struct Sql **self, char **out_to, const char **from, size_t *from_len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_EscapeStringLen_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_EscapeStringLen_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_EscapeStringLen_pre[hIndex].func;
retVal___ = preHookFunc(&self, &out_to, &from, &from_len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6340,9 +8023,9 @@ size_t HP_SQL_EscapeStringLen(struct Sql *self, char *out_to, const char *from,
{
retVal___ = HPMHooks.source.SQL.EscapeStringLen(self, out_to, from, from_len);
}
- if( HPMHooks.count.HP_SQL_EscapeStringLen_post ) {
+ if (HPMHooks.count.HP_SQL_EscapeStringLen_post > 0) {
size_t (*postHookFunc) (size_t retVal___, struct Sql *self, char *out_to, const char *from, size_t from_len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_EscapeStringLen_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_EscapeStringLen_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_EscapeStringLen_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, out_to, from, from_len);
}
@@ -6352,16 +8035,16 @@ size_t HP_SQL_EscapeStringLen(struct Sql *self, char *out_to, const char *from,
int HP_SQL_QueryV(struct Sql *self, const char *query, va_list args) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_QueryV_pre ) {
+ if (HPMHooks.count.HP_SQL_QueryV_pre > 0) {
int (*preHookFunc) (struct Sql **self, const char **query, va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_QueryV_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_QueryV_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_SQL_QueryV_pre[hIndex].func;
retVal___ = preHookFunc(&self, &query, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6371,9 +8054,9 @@ int HP_SQL_QueryV(struct Sql *self, const char *query, va_list args) {
retVal___ = HPMHooks.source.SQL.QueryV(self, query, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_SQL_QueryV_post ) {
+ if (HPMHooks.count.HP_SQL_QueryV_post > 0) {
int (*postHookFunc) (int retVal___, struct Sql *self, const char *query, va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_QueryV_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_QueryV_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_SQL_QueryV_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, query, args___copy);
@@ -6385,14 +8068,14 @@ int HP_SQL_QueryV(struct Sql *self, const char *query, va_list args) {
int HP_SQL_QueryStr(struct Sql *self, const char *query) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_QueryStr_pre ) {
+ if (HPMHooks.count.HP_SQL_QueryStr_pre > 0) {
int (*preHookFunc) (struct Sql **self, const char **query);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_QueryStr_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_QueryStr_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_QueryStr_pre[hIndex].func;
retVal___ = preHookFunc(&self, &query);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6400,9 +8083,9 @@ int HP_SQL_QueryStr(struct Sql *self, const char *query) {
{
retVal___ = HPMHooks.source.SQL.QueryStr(self, query);
}
- if( HPMHooks.count.HP_SQL_QueryStr_post ) {
+ if (HPMHooks.count.HP_SQL_QueryStr_post > 0) {
int (*postHookFunc) (int retVal___, struct Sql *self, const char *query);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_QueryStr_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_QueryStr_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_QueryStr_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, query);
}
@@ -6412,14 +8095,14 @@ int HP_SQL_QueryStr(struct Sql *self, const char *query) {
uint64 HP_SQL_LastInsertId(struct Sql *self) {
int hIndex = 0;
uint64 retVal___ = 0;
- if( HPMHooks.count.HP_SQL_LastInsertId_pre ) {
+ if (HPMHooks.count.HP_SQL_LastInsertId_pre > 0) {
uint64 (*preHookFunc) (struct Sql **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_LastInsertId_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_LastInsertId_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_LastInsertId_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6427,9 +8110,9 @@ uint64 HP_SQL_LastInsertId(struct Sql *self) {
{
retVal___ = HPMHooks.source.SQL.LastInsertId(self);
}
- if( HPMHooks.count.HP_SQL_LastInsertId_post ) {
+ if (HPMHooks.count.HP_SQL_LastInsertId_post > 0) {
uint64 (*postHookFunc) (uint64 retVal___, struct Sql *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_LastInsertId_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_LastInsertId_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_LastInsertId_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -6439,14 +8122,14 @@ uint64 HP_SQL_LastInsertId(struct Sql *self) {
uint32 HP_SQL_NumColumns(struct Sql *self) {
int hIndex = 0;
uint32 retVal___ = 0;
- if( HPMHooks.count.HP_SQL_NumColumns_pre ) {
+ if (HPMHooks.count.HP_SQL_NumColumns_pre > 0) {
uint32 (*preHookFunc) (struct Sql **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NumColumns_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NumColumns_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_NumColumns_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6454,9 +8137,9 @@ uint32 HP_SQL_NumColumns(struct Sql *self) {
{
retVal___ = HPMHooks.source.SQL.NumColumns(self);
}
- if( HPMHooks.count.HP_SQL_NumColumns_post ) {
+ if (HPMHooks.count.HP_SQL_NumColumns_post > 0) {
uint32 (*postHookFunc) (uint32 retVal___, struct Sql *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NumColumns_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NumColumns_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_NumColumns_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -6466,14 +8149,14 @@ uint32 HP_SQL_NumColumns(struct Sql *self) {
uint64 HP_SQL_NumRows(struct Sql *self) {
int hIndex = 0;
uint64 retVal___ = 0;
- if( HPMHooks.count.HP_SQL_NumRows_pre ) {
+ if (HPMHooks.count.HP_SQL_NumRows_pre > 0) {
uint64 (*preHookFunc) (struct Sql **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NumRows_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NumRows_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_NumRows_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6481,9 +8164,9 @@ uint64 HP_SQL_NumRows(struct Sql *self) {
{
retVal___ = HPMHooks.source.SQL.NumRows(self);
}
- if( HPMHooks.count.HP_SQL_NumRows_post ) {
+ if (HPMHooks.count.HP_SQL_NumRows_post > 0) {
uint64 (*postHookFunc) (uint64 retVal___, struct Sql *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NumRows_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NumRows_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_NumRows_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -6493,14 +8176,14 @@ uint64 HP_SQL_NumRows(struct Sql *self) {
int HP_SQL_NextRow(struct Sql *self) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_NextRow_pre ) {
+ if (HPMHooks.count.HP_SQL_NextRow_pre > 0) {
int (*preHookFunc) (struct Sql **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NextRow_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NextRow_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_NextRow_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6508,9 +8191,9 @@ int HP_SQL_NextRow(struct Sql *self) {
{
retVal___ = HPMHooks.source.SQL.NextRow(self);
}
- if( HPMHooks.count.HP_SQL_NextRow_post ) {
+ if (HPMHooks.count.HP_SQL_NextRow_post > 0) {
int (*postHookFunc) (int retVal___, struct Sql *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NextRow_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NextRow_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_NextRow_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -6520,14 +8203,14 @@ int HP_SQL_NextRow(struct Sql *self) {
int HP_SQL_GetData(struct Sql *self, size_t col, char **out_buf, size_t *out_len) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_GetData_pre ) {
+ if (HPMHooks.count.HP_SQL_GetData_pre > 0) {
int (*preHookFunc) (struct Sql **self, size_t *col, char ***out_buf, size_t **out_len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetData_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetData_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_GetData_pre[hIndex].func;
retVal___ = preHookFunc(&self, &col, &out_buf, &out_len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6535,9 +8218,9 @@ int HP_SQL_GetData(struct Sql *self, size_t col, char **out_buf, size_t *out_len
{
retVal___ = HPMHooks.source.SQL.GetData(self, col, out_buf, out_len);
}
- if( HPMHooks.count.HP_SQL_GetData_post ) {
+ if (HPMHooks.count.HP_SQL_GetData_post > 0) {
int (*postHookFunc) (int retVal___, struct Sql *self, size_t col, char **out_buf, size_t *out_len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetData_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetData_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_GetData_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, col, out_buf, out_len);
}
@@ -6546,14 +8229,14 @@ int HP_SQL_GetData(struct Sql *self, size_t col, char **out_buf, size_t *out_len
}
void HP_SQL_FreeResult(struct Sql *self) {
int hIndex = 0;
- if( HPMHooks.count.HP_SQL_FreeResult_pre ) {
+ if (HPMHooks.count.HP_SQL_FreeResult_pre > 0) {
void (*preHookFunc) (struct Sql **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_FreeResult_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_FreeResult_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_FreeResult_pre[hIndex].func;
preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6561,9 +8244,9 @@ void HP_SQL_FreeResult(struct Sql *self) {
{
HPMHooks.source.SQL.FreeResult(self);
}
- if( HPMHooks.count.HP_SQL_FreeResult_post ) {
+ if (HPMHooks.count.HP_SQL_FreeResult_post > 0) {
void (*postHookFunc) (struct Sql *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_FreeResult_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_FreeResult_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_FreeResult_post[hIndex].func;
postHookFunc(self);
}
@@ -6572,14 +8255,14 @@ void HP_SQL_FreeResult(struct Sql *self) {
}
void HP_SQL_ShowDebug_(struct Sql *self, const char *debug_file, const unsigned long debug_line) {
int hIndex = 0;
- if( HPMHooks.count.HP_SQL_ShowDebug__pre ) {
+ if (HPMHooks.count.HP_SQL_ShowDebug__pre > 0) {
void (*preHookFunc) (struct Sql **self, const char **debug_file, const unsigned long *debug_line);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_ShowDebug__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_ShowDebug__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_ShowDebug__pre[hIndex].func;
preHookFunc(&self, &debug_file, &debug_line);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6587,9 +8270,9 @@ void HP_SQL_ShowDebug_(struct Sql *self, const char *debug_file, const unsigned
{
HPMHooks.source.SQL.ShowDebug_(self, debug_file, debug_line);
}
- if( HPMHooks.count.HP_SQL_ShowDebug__post ) {
+ if (HPMHooks.count.HP_SQL_ShowDebug__post > 0) {
void (*postHookFunc) (struct Sql *self, const char *debug_file, const unsigned long debug_line);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_ShowDebug__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_ShowDebug__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_ShowDebug__post[hIndex].func;
postHookFunc(self, debug_file, debug_line);
}
@@ -6598,14 +8281,14 @@ void HP_SQL_ShowDebug_(struct Sql *self, const char *debug_file, const unsigned
}
void HP_SQL_Free(struct Sql *self) {
int hIndex = 0;
- if( HPMHooks.count.HP_SQL_Free_pre ) {
+ if (HPMHooks.count.HP_SQL_Free_pre > 0) {
void (*preHookFunc) (struct Sql **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Free_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Free_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_Free_pre[hIndex].func;
preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6613,9 +8296,9 @@ void HP_SQL_Free(struct Sql *self) {
{
HPMHooks.source.SQL.Free(self);
}
- if( HPMHooks.count.HP_SQL_Free_post ) {
+ if (HPMHooks.count.HP_SQL_Free_post > 0) {
void (*postHookFunc) (struct Sql *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Free_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Free_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_Free_post[hIndex].func;
postHookFunc(self);
}
@@ -6625,14 +8308,14 @@ void HP_SQL_Free(struct Sql *self) {
struct Sql* HP_SQL_Malloc(void) {
int hIndex = 0;
struct Sql* retVal___ = NULL;
- if( HPMHooks.count.HP_SQL_Malloc_pre ) {
+ if (HPMHooks.count.HP_SQL_Malloc_pre > 0) {
struct Sql* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Malloc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Malloc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_Malloc_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6640,9 +8323,9 @@ struct Sql* HP_SQL_Malloc(void) {
{
retVal___ = HPMHooks.source.SQL.Malloc();
}
- if( HPMHooks.count.HP_SQL_Malloc_post ) {
+ if (HPMHooks.count.HP_SQL_Malloc_post > 0) {
struct Sql* (*postHookFunc) (struct Sql* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Malloc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Malloc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_Malloc_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -6652,14 +8335,14 @@ struct Sql* HP_SQL_Malloc(void) {
struct SqlStmt* HP_SQL_StmtMalloc(struct Sql *sql) {
int hIndex = 0;
struct SqlStmt* retVal___ = NULL;
- if( HPMHooks.count.HP_SQL_StmtMalloc_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtMalloc_pre > 0) {
struct SqlStmt* (*preHookFunc) (struct Sql **sql);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtMalloc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtMalloc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtMalloc_pre[hIndex].func;
retVal___ = preHookFunc(&sql);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6667,9 +8350,9 @@ struct SqlStmt* HP_SQL_StmtMalloc(struct Sql *sql) {
{
retVal___ = HPMHooks.source.SQL.StmtMalloc(sql);
}
- if( HPMHooks.count.HP_SQL_StmtMalloc_post ) {
+ if (HPMHooks.count.HP_SQL_StmtMalloc_post > 0) {
struct SqlStmt* (*postHookFunc) (struct SqlStmt* retVal___, struct Sql *sql);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtMalloc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtMalloc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtMalloc_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sql);
}
@@ -6679,16 +8362,16 @@ struct SqlStmt* HP_SQL_StmtMalloc(struct Sql *sql) {
int HP_SQL_StmtPrepareV(struct SqlStmt *self, const char *query, va_list args) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_StmtPrepareV_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtPrepareV_pre > 0) {
int (*preHookFunc) (struct SqlStmt **self, const char **query, va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtPrepareV_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtPrepareV_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_SQL_StmtPrepareV_pre[hIndex].func;
retVal___ = preHookFunc(&self, &query, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6698,9 +8381,9 @@ int HP_SQL_StmtPrepareV(struct SqlStmt *self, const char *query, va_list args) {
retVal___ = HPMHooks.source.SQL.StmtPrepareV(self, query, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_SQL_StmtPrepareV_post ) {
+ if (HPMHooks.count.HP_SQL_StmtPrepareV_post > 0) {
int (*postHookFunc) (int retVal___, struct SqlStmt *self, const char *query, va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtPrepareV_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtPrepareV_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_SQL_StmtPrepareV_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, query, args___copy);
@@ -6712,14 +8395,14 @@ int HP_SQL_StmtPrepareV(struct SqlStmt *self, const char *query, va_list args) {
int HP_SQL_StmtPrepareStr(struct SqlStmt *self, const char *query) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_StmtPrepareStr_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtPrepareStr_pre > 0) {
int (*preHookFunc) (struct SqlStmt **self, const char **query);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtPrepareStr_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtPrepareStr_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtPrepareStr_pre[hIndex].func;
retVal___ = preHookFunc(&self, &query);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6727,9 +8410,9 @@ int HP_SQL_StmtPrepareStr(struct SqlStmt *self, const char *query) {
{
retVal___ = HPMHooks.source.SQL.StmtPrepareStr(self, query);
}
- if( HPMHooks.count.HP_SQL_StmtPrepareStr_post ) {
+ if (HPMHooks.count.HP_SQL_StmtPrepareStr_post > 0) {
int (*postHookFunc) (int retVal___, struct SqlStmt *self, const char *query);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtPrepareStr_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtPrepareStr_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtPrepareStr_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, query);
}
@@ -6739,14 +8422,14 @@ int HP_SQL_StmtPrepareStr(struct SqlStmt *self, const char *query) {
size_t HP_SQL_StmtNumParams(struct SqlStmt *self) {
int hIndex = 0;
size_t retVal___ = 0;
- if( HPMHooks.count.HP_SQL_StmtNumParams_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtNumParams_pre > 0) {
size_t (*preHookFunc) (struct SqlStmt **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumParams_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumParams_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtNumParams_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6754,9 +8437,9 @@ size_t HP_SQL_StmtNumParams(struct SqlStmt *self) {
{
retVal___ = HPMHooks.source.SQL.StmtNumParams(self);
}
- if( HPMHooks.count.HP_SQL_StmtNumParams_post ) {
+ if (HPMHooks.count.HP_SQL_StmtNumParams_post > 0) {
size_t (*postHookFunc) (size_t retVal___, struct SqlStmt *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumParams_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumParams_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtNumParams_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -6766,14 +8449,14 @@ size_t HP_SQL_StmtNumParams(struct SqlStmt *self) {
int HP_SQL_StmtBindParam(struct SqlStmt *self, size_t idx, enum SqlDataType buffer_type, const void *buffer, size_t buffer_len) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_StmtBindParam_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtBindParam_pre > 0) {
int (*preHookFunc) (struct SqlStmt **self, size_t *idx, enum SqlDataType *buffer_type, const void **buffer, size_t *buffer_len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtBindParam_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtBindParam_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtBindParam_pre[hIndex].func;
retVal___ = preHookFunc(&self, &idx, &buffer_type, &buffer, &buffer_len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6781,9 +8464,9 @@ int HP_SQL_StmtBindParam(struct SqlStmt *self, size_t idx, enum SqlDataType buff
{
retVal___ = HPMHooks.source.SQL.StmtBindParam(self, idx, buffer_type, buffer, buffer_len);
}
- if( HPMHooks.count.HP_SQL_StmtBindParam_post ) {
+ if (HPMHooks.count.HP_SQL_StmtBindParam_post > 0) {
int (*postHookFunc) (int retVal___, struct SqlStmt *self, size_t idx, enum SqlDataType buffer_type, const void *buffer, size_t buffer_len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtBindParam_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtBindParam_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtBindParam_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, idx, buffer_type, buffer, buffer_len);
}
@@ -6793,14 +8476,14 @@ int HP_SQL_StmtBindParam(struct SqlStmt *self, size_t idx, enum SqlDataType buff
int HP_SQL_StmtExecute(struct SqlStmt *self) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_StmtExecute_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtExecute_pre > 0) {
int (*preHookFunc) (struct SqlStmt **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtExecute_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtExecute_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtExecute_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6808,9 +8491,9 @@ int HP_SQL_StmtExecute(struct SqlStmt *self) {
{
retVal___ = HPMHooks.source.SQL.StmtExecute(self);
}
- if( HPMHooks.count.HP_SQL_StmtExecute_post ) {
+ if (HPMHooks.count.HP_SQL_StmtExecute_post > 0) {
int (*postHookFunc) (int retVal___, struct SqlStmt *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtExecute_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtExecute_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtExecute_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -6820,14 +8503,14 @@ int HP_SQL_StmtExecute(struct SqlStmt *self) {
uint64 HP_SQL_StmtLastInsertId(struct SqlStmt *self) {
int hIndex = 0;
uint64 retVal___ = 0;
- if( HPMHooks.count.HP_SQL_StmtLastInsertId_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtLastInsertId_pre > 0) {
uint64 (*preHookFunc) (struct SqlStmt **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtLastInsertId_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtLastInsertId_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtLastInsertId_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6835,9 +8518,9 @@ uint64 HP_SQL_StmtLastInsertId(struct SqlStmt *self) {
{
retVal___ = HPMHooks.source.SQL.StmtLastInsertId(self);
}
- if( HPMHooks.count.HP_SQL_StmtLastInsertId_post ) {
+ if (HPMHooks.count.HP_SQL_StmtLastInsertId_post > 0) {
uint64 (*postHookFunc) (uint64 retVal___, struct SqlStmt *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtLastInsertId_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtLastInsertId_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtLastInsertId_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -6847,14 +8530,14 @@ uint64 HP_SQL_StmtLastInsertId(struct SqlStmt *self) {
size_t HP_SQL_StmtNumColumns(struct SqlStmt *self) {
int hIndex = 0;
size_t retVal___ = 0;
- if( HPMHooks.count.HP_SQL_StmtNumColumns_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtNumColumns_pre > 0) {
size_t (*preHookFunc) (struct SqlStmt **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumColumns_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumColumns_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtNumColumns_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6862,9 +8545,9 @@ size_t HP_SQL_StmtNumColumns(struct SqlStmt *self) {
{
retVal___ = HPMHooks.source.SQL.StmtNumColumns(self);
}
- if( HPMHooks.count.HP_SQL_StmtNumColumns_post ) {
+ if (HPMHooks.count.HP_SQL_StmtNumColumns_post > 0) {
size_t (*postHookFunc) (size_t retVal___, struct SqlStmt *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumColumns_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumColumns_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtNumColumns_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -6874,14 +8557,14 @@ size_t HP_SQL_StmtNumColumns(struct SqlStmt *self) {
int HP_SQL_StmtBindColumn(struct SqlStmt *self, size_t idx, enum SqlDataType buffer_type, void *buffer, size_t buffer_len, uint32 *out_length, int8 *out_is_null) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_StmtBindColumn_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtBindColumn_pre > 0) {
int (*preHookFunc) (struct SqlStmt **self, size_t *idx, enum SqlDataType *buffer_type, void **buffer, size_t *buffer_len, uint32 **out_length, int8 **out_is_null);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtBindColumn_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtBindColumn_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtBindColumn_pre[hIndex].func;
retVal___ = preHookFunc(&self, &idx, &buffer_type, &buffer, &buffer_len, &out_length, &out_is_null);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6889,9 +8572,9 @@ int HP_SQL_StmtBindColumn(struct SqlStmt *self, size_t idx, enum SqlDataType buf
{
retVal___ = HPMHooks.source.SQL.StmtBindColumn(self, idx, buffer_type, buffer, buffer_len, out_length, out_is_null);
}
- if( HPMHooks.count.HP_SQL_StmtBindColumn_post ) {
+ if (HPMHooks.count.HP_SQL_StmtBindColumn_post > 0) {
int (*postHookFunc) (int retVal___, struct SqlStmt *self, size_t idx, enum SqlDataType buffer_type, void *buffer, size_t buffer_len, uint32 *out_length, int8 *out_is_null);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtBindColumn_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtBindColumn_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtBindColumn_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, idx, buffer_type, buffer, buffer_len, out_length, out_is_null);
}
@@ -6901,14 +8584,14 @@ int HP_SQL_StmtBindColumn(struct SqlStmt *self, size_t idx, enum SqlDataType buf
uint64 HP_SQL_StmtNumRows(struct SqlStmt *self) {
int hIndex = 0;
uint64 retVal___ = 0;
- if( HPMHooks.count.HP_SQL_StmtNumRows_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtNumRows_pre > 0) {
uint64 (*preHookFunc) (struct SqlStmt **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumRows_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumRows_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtNumRows_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6916,9 +8599,9 @@ uint64 HP_SQL_StmtNumRows(struct SqlStmt *self) {
{
retVal___ = HPMHooks.source.SQL.StmtNumRows(self);
}
- if( HPMHooks.count.HP_SQL_StmtNumRows_post ) {
+ if (HPMHooks.count.HP_SQL_StmtNumRows_post > 0) {
uint64 (*postHookFunc) (uint64 retVal___, struct SqlStmt *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumRows_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumRows_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtNumRows_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -6928,14 +8611,14 @@ uint64 HP_SQL_StmtNumRows(struct SqlStmt *self) {
int HP_SQL_StmtNextRow(struct SqlStmt *self) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_StmtNextRow_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtNextRow_pre > 0) {
int (*preHookFunc) (struct SqlStmt **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNextRow_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNextRow_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtNextRow_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6943,9 +8626,9 @@ int HP_SQL_StmtNextRow(struct SqlStmt *self) {
{
retVal___ = HPMHooks.source.SQL.StmtNextRow(self);
}
- if( HPMHooks.count.HP_SQL_StmtNextRow_post ) {
+ if (HPMHooks.count.HP_SQL_StmtNextRow_post > 0) {
int (*postHookFunc) (int retVal___, struct SqlStmt *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNextRow_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNextRow_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtNextRow_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -6954,14 +8637,14 @@ int HP_SQL_StmtNextRow(struct SqlStmt *self) {
}
void HP_SQL_StmtFreeResult(struct SqlStmt *self) {
int hIndex = 0;
- if( HPMHooks.count.HP_SQL_StmtFreeResult_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtFreeResult_pre > 0) {
void (*preHookFunc) (struct SqlStmt **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtFreeResult_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtFreeResult_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtFreeResult_pre[hIndex].func;
preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6969,9 +8652,9 @@ void HP_SQL_StmtFreeResult(struct SqlStmt *self) {
{
HPMHooks.source.SQL.StmtFreeResult(self);
}
- if( HPMHooks.count.HP_SQL_StmtFreeResult_post ) {
+ if (HPMHooks.count.HP_SQL_StmtFreeResult_post > 0) {
void (*postHookFunc) (struct SqlStmt *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtFreeResult_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtFreeResult_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtFreeResult_post[hIndex].func;
postHookFunc(self);
}
@@ -6980,14 +8663,14 @@ void HP_SQL_StmtFreeResult(struct SqlStmt *self) {
}
void HP_SQL_StmtFree(struct SqlStmt *self) {
int hIndex = 0;
- if( HPMHooks.count.HP_SQL_StmtFree_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtFree_pre > 0) {
void (*preHookFunc) (struct SqlStmt **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtFree_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtFree_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtFree_pre[hIndex].func;
preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6995,9 +8678,9 @@ void HP_SQL_StmtFree(struct SqlStmt *self) {
{
HPMHooks.source.SQL.StmtFree(self);
}
- if( HPMHooks.count.HP_SQL_StmtFree_post ) {
+ if (HPMHooks.count.HP_SQL_StmtFree_post > 0) {
void (*postHookFunc) (struct SqlStmt *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtFree_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtFree_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtFree_post[hIndex].func;
postHookFunc(self);
}
@@ -7006,14 +8689,14 @@ void HP_SQL_StmtFree(struct SqlStmt *self) {
}
void HP_SQL_StmtShowDebug_(struct SqlStmt *self, const char *debug_file, const unsigned long debug_line) {
int hIndex = 0;
- if( HPMHooks.count.HP_SQL_StmtShowDebug__pre ) {
+ if (HPMHooks.count.HP_SQL_StmtShowDebug__pre > 0) {
void (*preHookFunc) (struct SqlStmt **self, const char **debug_file, const unsigned long *debug_line);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtShowDebug__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtShowDebug__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtShowDebug__pre[hIndex].func;
preHookFunc(&self, &debug_file, &debug_line);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7021,9 +8704,9 @@ void HP_SQL_StmtShowDebug_(struct SqlStmt *self, const char *debug_file, const u
{
HPMHooks.source.SQL.StmtShowDebug_(self, debug_file, debug_line);
}
- if( HPMHooks.count.HP_SQL_StmtShowDebug__post ) {
+ if (HPMHooks.count.HP_SQL_StmtShowDebug__post > 0) {
void (*postHookFunc) (struct SqlStmt *self, const char *debug_file, const unsigned long debug_line);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtShowDebug__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtShowDebug__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtShowDebug__post[hIndex].func;
postHookFunc(self, debug_file, debug_line);
}
@@ -7034,14 +8717,14 @@ void HP_SQL_StmtShowDebug_(struct SqlStmt *self, const char *debug_file, const u
StringBuf* HP_StrBuf_Malloc(void) {
int hIndex = 0;
StringBuf* retVal___ = NULL;
- if( HPMHooks.count.HP_StrBuf_Malloc_pre ) {
+ if (HPMHooks.count.HP_StrBuf_Malloc_pre > 0) {
StringBuf* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Malloc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Malloc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_StrBuf_Malloc_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7049,9 +8732,9 @@ StringBuf* HP_StrBuf_Malloc(void) {
{
retVal___ = HPMHooks.source.StrBuf.Malloc();
}
- if( HPMHooks.count.HP_StrBuf_Malloc_post ) {
+ if (HPMHooks.count.HP_StrBuf_Malloc_post > 0) {
StringBuf* (*postHookFunc) (StringBuf* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Malloc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Malloc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_StrBuf_Malloc_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -7060,14 +8743,14 @@ StringBuf* HP_StrBuf_Malloc(void) {
}
void HP_StrBuf_Init(StringBuf *self) {
int hIndex = 0;
- if( HPMHooks.count.HP_StrBuf_Init_pre ) {
+ if (HPMHooks.count.HP_StrBuf_Init_pre > 0) {
void (*preHookFunc) (StringBuf **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_StrBuf_Init_pre[hIndex].func;
preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7075,9 +8758,9 @@ void HP_StrBuf_Init(StringBuf *self) {
{
HPMHooks.source.StrBuf.Init(self);
}
- if( HPMHooks.count.HP_StrBuf_Init_post ) {
+ if (HPMHooks.count.HP_StrBuf_Init_post > 0) {
void (*postHookFunc) (StringBuf *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_StrBuf_Init_post[hIndex].func;
postHookFunc(self);
}
@@ -7087,16 +8770,16 @@ void HP_StrBuf_Init(StringBuf *self) {
int HP_StrBuf_Vprintf(StringBuf *self, const char *fmt, va_list args) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_StrBuf_Vprintf_pre ) {
+ if (HPMHooks.count.HP_StrBuf_Vprintf_pre > 0) {
int (*preHookFunc) (StringBuf **self, const char **fmt, va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Vprintf_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Vprintf_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_StrBuf_Vprintf_pre[hIndex].func;
retVal___ = preHookFunc(&self, &fmt, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7106,9 +8789,9 @@ int HP_StrBuf_Vprintf(StringBuf *self, const char *fmt, va_list args) {
retVal___ = HPMHooks.source.StrBuf.Vprintf(self, fmt, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_StrBuf_Vprintf_post ) {
+ if (HPMHooks.count.HP_StrBuf_Vprintf_post > 0) {
int (*postHookFunc) (int retVal___, StringBuf *self, const char *fmt, va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Vprintf_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Vprintf_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_StrBuf_Vprintf_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, fmt, args___copy);
@@ -7120,14 +8803,14 @@ int HP_StrBuf_Vprintf(StringBuf *self, const char *fmt, va_list args) {
int HP_StrBuf_Append(StringBuf *self, const StringBuf *sbuf) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_StrBuf_Append_pre ) {
+ if (HPMHooks.count.HP_StrBuf_Append_pre > 0) {
int (*preHookFunc) (StringBuf **self, const StringBuf **sbuf);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Append_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Append_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_StrBuf_Append_pre[hIndex].func;
retVal___ = preHookFunc(&self, &sbuf);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7135,9 +8818,9 @@ int HP_StrBuf_Append(StringBuf *self, const StringBuf *sbuf) {
{
retVal___ = HPMHooks.source.StrBuf.Append(self, sbuf);
}
- if( HPMHooks.count.HP_StrBuf_Append_post ) {
+ if (HPMHooks.count.HP_StrBuf_Append_post > 0) {
int (*postHookFunc) (int retVal___, StringBuf *self, const StringBuf *sbuf);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Append_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Append_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_StrBuf_Append_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, sbuf);
}
@@ -7147,14 +8830,14 @@ int HP_StrBuf_Append(StringBuf *self, const StringBuf *sbuf) {
int HP_StrBuf_AppendStr(StringBuf *self, const char *str) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_StrBuf_AppendStr_pre ) {
+ if (HPMHooks.count.HP_StrBuf_AppendStr_pre > 0) {
int (*preHookFunc) (StringBuf **self, const char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_AppendStr_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_AppendStr_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_StrBuf_AppendStr_pre[hIndex].func;
retVal___ = preHookFunc(&self, &str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7162,9 +8845,9 @@ int HP_StrBuf_AppendStr(StringBuf *self, const char *str) {
{
retVal___ = HPMHooks.source.StrBuf.AppendStr(self, str);
}
- if( HPMHooks.count.HP_StrBuf_AppendStr_post ) {
+ if (HPMHooks.count.HP_StrBuf_AppendStr_post > 0) {
int (*postHookFunc) (int retVal___, StringBuf *self, const char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_AppendStr_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_AppendStr_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_StrBuf_AppendStr_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, str);
}
@@ -7174,14 +8857,14 @@ int HP_StrBuf_AppendStr(StringBuf *self, const char *str) {
int HP_StrBuf_Length(StringBuf *self) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_StrBuf_Length_pre ) {
+ if (HPMHooks.count.HP_StrBuf_Length_pre > 0) {
int (*preHookFunc) (StringBuf **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Length_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Length_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_StrBuf_Length_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7189,9 +8872,9 @@ int HP_StrBuf_Length(StringBuf *self) {
{
retVal___ = HPMHooks.source.StrBuf.Length(self);
}
- if( HPMHooks.count.HP_StrBuf_Length_post ) {
+ if (HPMHooks.count.HP_StrBuf_Length_post > 0) {
int (*postHookFunc) (int retVal___, StringBuf *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Length_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Length_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_StrBuf_Length_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -7201,14 +8884,14 @@ int HP_StrBuf_Length(StringBuf *self) {
char* HP_StrBuf_Value(StringBuf *self) {
int hIndex = 0;
char* retVal___ = NULL;
- if( HPMHooks.count.HP_StrBuf_Value_pre ) {
+ if (HPMHooks.count.HP_StrBuf_Value_pre > 0) {
char* (*preHookFunc) (StringBuf **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Value_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Value_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_StrBuf_Value_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7216,9 +8899,9 @@ char* HP_StrBuf_Value(StringBuf *self) {
{
retVal___ = HPMHooks.source.StrBuf.Value(self);
}
- if( HPMHooks.count.HP_StrBuf_Value_post ) {
+ if (HPMHooks.count.HP_StrBuf_Value_post > 0) {
char* (*postHookFunc) (char* retVal___, StringBuf *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Value_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Value_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_StrBuf_Value_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -7227,14 +8910,14 @@ char* HP_StrBuf_Value(StringBuf *self) {
}
void HP_StrBuf_Clear(StringBuf *self) {
int hIndex = 0;
- if( HPMHooks.count.HP_StrBuf_Clear_pre ) {
+ if (HPMHooks.count.HP_StrBuf_Clear_pre > 0) {
void (*preHookFunc) (StringBuf **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Clear_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Clear_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_StrBuf_Clear_pre[hIndex].func;
preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7242,9 +8925,9 @@ void HP_StrBuf_Clear(StringBuf *self) {
{
HPMHooks.source.StrBuf.Clear(self);
}
- if( HPMHooks.count.HP_StrBuf_Clear_post ) {
+ if (HPMHooks.count.HP_StrBuf_Clear_post > 0) {
void (*postHookFunc) (StringBuf *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Clear_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Clear_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_StrBuf_Clear_post[hIndex].func;
postHookFunc(self);
}
@@ -7253,14 +8936,14 @@ void HP_StrBuf_Clear(StringBuf *self) {
}
void HP_StrBuf_Destroy(StringBuf *self) {
int hIndex = 0;
- if( HPMHooks.count.HP_StrBuf_Destroy_pre ) {
+ if (HPMHooks.count.HP_StrBuf_Destroy_pre > 0) {
void (*preHookFunc) (StringBuf **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Destroy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Destroy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_StrBuf_Destroy_pre[hIndex].func;
preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7268,9 +8951,9 @@ void HP_StrBuf_Destroy(StringBuf *self) {
{
HPMHooks.source.StrBuf.Destroy(self);
}
- if( HPMHooks.count.HP_StrBuf_Destroy_post ) {
+ if (HPMHooks.count.HP_StrBuf_Destroy_post > 0) {
void (*postHookFunc) (StringBuf *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Destroy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Destroy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_StrBuf_Destroy_post[hIndex].func;
postHookFunc(self);
}
@@ -7279,14 +8962,14 @@ void HP_StrBuf_Destroy(StringBuf *self) {
}
void HP_StrBuf_Free(StringBuf *self) {
int hIndex = 0;
- if( HPMHooks.count.HP_StrBuf_Free_pre ) {
+ if (HPMHooks.count.HP_StrBuf_Free_pre > 0) {
void (*preHookFunc) (StringBuf **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Free_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Free_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_StrBuf_Free_pre[hIndex].func;
preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7294,9 +8977,9 @@ void HP_StrBuf_Free(StringBuf *self) {
{
HPMHooks.source.StrBuf.Free(self);
}
- if( HPMHooks.count.HP_StrBuf_Free_post ) {
+ if (HPMHooks.count.HP_StrBuf_Free_post > 0) {
void (*postHookFunc) (StringBuf *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Free_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Free_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_StrBuf_Free_post[hIndex].func;
postHookFunc(self);
}
@@ -7307,14 +8990,14 @@ void HP_StrBuf_Free(StringBuf *self) {
char* HP_strlib_jstrescape(char *pt) {
int hIndex = 0;
char* retVal___ = NULL;
- if( HPMHooks.count.HP_strlib_jstrescape_pre ) {
+ if (HPMHooks.count.HP_strlib_jstrescape_pre > 0) {
char* (*preHookFunc) (char **pt);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jstrescape_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jstrescape_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_jstrescape_pre[hIndex].func;
retVal___ = preHookFunc(&pt);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7322,9 +9005,9 @@ char* HP_strlib_jstrescape(char *pt) {
{
retVal___ = HPMHooks.source.strlib.jstrescape(pt);
}
- if( HPMHooks.count.HP_strlib_jstrescape_post ) {
+ if (HPMHooks.count.HP_strlib_jstrescape_post > 0) {
char* (*postHookFunc) (char* retVal___, char *pt);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jstrescape_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jstrescape_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_jstrescape_post[hIndex].func;
retVal___ = postHookFunc(retVal___, pt);
}
@@ -7334,14 +9017,14 @@ char* HP_strlib_jstrescape(char *pt) {
char* HP_strlib_jstrescapecpy(char *pt, const char *spt) {
int hIndex = 0;
char* retVal___ = NULL;
- if( HPMHooks.count.HP_strlib_jstrescapecpy_pre ) {
+ if (HPMHooks.count.HP_strlib_jstrescapecpy_pre > 0) {
char* (*preHookFunc) (char **pt, const char **spt);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jstrescapecpy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jstrescapecpy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_jstrescapecpy_pre[hIndex].func;
retVal___ = preHookFunc(&pt, &spt);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7349,9 +9032,9 @@ char* HP_strlib_jstrescapecpy(char *pt, const char *spt) {
{
retVal___ = HPMHooks.source.strlib.jstrescapecpy(pt, spt);
}
- if( HPMHooks.count.HP_strlib_jstrescapecpy_post ) {
+ if (HPMHooks.count.HP_strlib_jstrescapecpy_post > 0) {
char* (*postHookFunc) (char* retVal___, char *pt, const char *spt);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jstrescapecpy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jstrescapecpy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_jstrescapecpy_post[hIndex].func;
retVal___ = postHookFunc(retVal___, pt, spt);
}
@@ -7361,14 +9044,14 @@ char* HP_strlib_jstrescapecpy(char *pt, const char *spt) {
int HP_strlib_jmemescapecpy(char *pt, const char *spt, int size) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_strlib_jmemescapecpy_pre ) {
+ if (HPMHooks.count.HP_strlib_jmemescapecpy_pre > 0) {
int (*preHookFunc) (char **pt, const char **spt, int *size);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jmemescapecpy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jmemescapecpy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_jmemescapecpy_pre[hIndex].func;
retVal___ = preHookFunc(&pt, &spt, &size);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7376,9 +9059,9 @@ int HP_strlib_jmemescapecpy(char *pt, const char *spt, int size) {
{
retVal___ = HPMHooks.source.strlib.jmemescapecpy(pt, spt, size);
}
- if( HPMHooks.count.HP_strlib_jmemescapecpy_post ) {
+ if (HPMHooks.count.HP_strlib_jmemescapecpy_post > 0) {
int (*postHookFunc) (int retVal___, char *pt, const char *spt, int size);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jmemescapecpy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jmemescapecpy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_jmemescapecpy_post[hIndex].func;
retVal___ = postHookFunc(retVal___, pt, spt, size);
}
@@ -7388,14 +9071,14 @@ int HP_strlib_jmemescapecpy(char *pt, const char *spt, int size) {
int HP_strlib_remove_control_chars_(char *str) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_strlib_remove_control_chars__pre ) {
+ if (HPMHooks.count.HP_strlib_remove_control_chars__pre > 0) {
int (*preHookFunc) (char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_remove_control_chars__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_remove_control_chars__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_remove_control_chars__pre[hIndex].func;
retVal___ = preHookFunc(&str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7403,9 +9086,9 @@ int HP_strlib_remove_control_chars_(char *str) {
{
retVal___ = HPMHooks.source.strlib.remove_control_chars_(str);
}
- if( HPMHooks.count.HP_strlib_remove_control_chars__post ) {
+ if (HPMHooks.count.HP_strlib_remove_control_chars__post > 0) {
int (*postHookFunc) (int retVal___, char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_remove_control_chars__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_remove_control_chars__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_remove_control_chars__post[hIndex].func;
retVal___ = postHookFunc(retVal___, str);
}
@@ -7415,14 +9098,14 @@ int HP_strlib_remove_control_chars_(char *str) {
char* HP_strlib_trim_(char *str) {
int hIndex = 0;
char* retVal___ = NULL;
- if( HPMHooks.count.HP_strlib_trim__pre ) {
+ if (HPMHooks.count.HP_strlib_trim__pre > 0) {
char* (*preHookFunc) (char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_trim__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_trim__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_trim__pre[hIndex].func;
retVal___ = preHookFunc(&str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7430,9 +9113,9 @@ char* HP_strlib_trim_(char *str) {
{
retVal___ = HPMHooks.source.strlib.trim_(str);
}
- if( HPMHooks.count.HP_strlib_trim__post ) {
+ if (HPMHooks.count.HP_strlib_trim__post > 0) {
char* (*postHookFunc) (char* retVal___, char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_trim__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_trim__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_trim__post[hIndex].func;
retVal___ = postHookFunc(retVal___, str);
}
@@ -7442,14 +9125,14 @@ char* HP_strlib_trim_(char *str) {
char* HP_strlib_normalize_name_(char *str, const char *delims) {
int hIndex = 0;
char* retVal___ = NULL;
- if( HPMHooks.count.HP_strlib_normalize_name__pre ) {
+ if (HPMHooks.count.HP_strlib_normalize_name__pre > 0) {
char* (*preHookFunc) (char **str, const char **delims);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_normalize_name__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_normalize_name__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_normalize_name__pre[hIndex].func;
retVal___ = preHookFunc(&str, &delims);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7457,9 +9140,9 @@ char* HP_strlib_normalize_name_(char *str, const char *delims) {
{
retVal___ = HPMHooks.source.strlib.normalize_name_(str, delims);
}
- if( HPMHooks.count.HP_strlib_normalize_name__post ) {
+ if (HPMHooks.count.HP_strlib_normalize_name__post > 0) {
char* (*postHookFunc) (char* retVal___, char *str, const char *delims);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_normalize_name__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_normalize_name__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_normalize_name__post[hIndex].func;
retVal___ = postHookFunc(retVal___, str, delims);
}
@@ -7469,14 +9152,14 @@ char* HP_strlib_normalize_name_(char *str, const char *delims) {
const char* HP_strlib_stristr_(const char *haystack, const char *needle) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_strlib_stristr__pre ) {
+ if (HPMHooks.count.HP_strlib_stristr__pre > 0) {
const char* (*preHookFunc) (const char **haystack, const char **needle);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_stristr__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_stristr__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_stristr__pre[hIndex].func;
retVal___ = preHookFunc(&haystack, &needle);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7484,9 +9167,9 @@ const char* HP_strlib_stristr_(const char *haystack, const char *needle) {
{
retVal___ = HPMHooks.source.strlib.stristr_(haystack, needle);
}
- if( HPMHooks.count.HP_strlib_stristr__post ) {
+ if (HPMHooks.count.HP_strlib_stristr__post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *haystack, const char *needle);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_stristr__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_stristr__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_stristr__post[hIndex].func;
retVal___ = postHookFunc(retVal___, haystack, needle);
}
@@ -7496,14 +9179,14 @@ const char* HP_strlib_stristr_(const char *haystack, const char *needle) {
size_t HP_strlib_strnlen_(const char *string, size_t maxlen) {
int hIndex = 0;
size_t retVal___ = 0;
- if( HPMHooks.count.HP_strlib_strnlen__pre ) {
+ if (HPMHooks.count.HP_strlib_strnlen__pre > 0) {
size_t (*preHookFunc) (const char **string, size_t *maxlen);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strnlen__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strnlen__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_strnlen__pre[hIndex].func;
retVal___ = preHookFunc(&string, &maxlen);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7511,9 +9194,9 @@ size_t HP_strlib_strnlen_(const char *string, size_t maxlen) {
{
retVal___ = HPMHooks.source.strlib.strnlen_(string, maxlen);
}
- if( HPMHooks.count.HP_strlib_strnlen__post ) {
+ if (HPMHooks.count.HP_strlib_strnlen__post > 0) {
size_t (*postHookFunc) (size_t retVal___, const char *string, size_t maxlen);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strnlen__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strnlen__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_strnlen__post[hIndex].func;
retVal___ = postHookFunc(retVal___, string, maxlen);
}
@@ -7523,14 +9206,14 @@ size_t HP_strlib_strnlen_(const char *string, size_t maxlen) {
char* HP_strlib_strtok_r_(char *s1, const char *s2, char **lasts) {
int hIndex = 0;
char* retVal___ = NULL;
- if( HPMHooks.count.HP_strlib_strtok_r__pre ) {
+ if (HPMHooks.count.HP_strlib_strtok_r__pre > 0) {
char* (*preHookFunc) (char **s1, const char **s2, char ***lasts);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strtok_r__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strtok_r__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_strtok_r__pre[hIndex].func;
retVal___ = preHookFunc(&s1, &s2, &lasts);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7538,9 +9221,9 @@ char* HP_strlib_strtok_r_(char *s1, const char *s2, char **lasts) {
{
retVal___ = HPMHooks.source.strlib.strtok_r_(s1, s2, lasts);
}
- if( HPMHooks.count.HP_strlib_strtok_r__post ) {
+ if (HPMHooks.count.HP_strlib_strtok_r__post > 0) {
char* (*postHookFunc) (char* retVal___, char *s1, const char *s2, char **lasts);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strtok_r__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strtok_r__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_strtok_r__post[hIndex].func;
retVal___ = postHookFunc(retVal___, s1, s2, lasts);
}
@@ -7550,14 +9233,14 @@ char* HP_strlib_strtok_r_(char *s1, const char *s2, char **lasts) {
int HP_strlib_e_mail_check_(char *email) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_strlib_e_mail_check__pre ) {
+ if (HPMHooks.count.HP_strlib_e_mail_check__pre > 0) {
int (*preHookFunc) (char **email);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_e_mail_check__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_e_mail_check__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_e_mail_check__pre[hIndex].func;
retVal___ = preHookFunc(&email);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7565,9 +9248,9 @@ int HP_strlib_e_mail_check_(char *email) {
{
retVal___ = HPMHooks.source.strlib.e_mail_check_(email);
}
- if( HPMHooks.count.HP_strlib_e_mail_check__post ) {
+ if (HPMHooks.count.HP_strlib_e_mail_check__post > 0) {
int (*postHookFunc) (int retVal___, char *email);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_e_mail_check__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_e_mail_check__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_e_mail_check__post[hIndex].func;
retVal___ = postHookFunc(retVal___, email);
}
@@ -7577,14 +9260,14 @@ int HP_strlib_e_mail_check_(char *email) {
int HP_strlib_config_switch_(const char *str) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_strlib_config_switch__pre ) {
+ if (HPMHooks.count.HP_strlib_config_switch__pre > 0) {
int (*preHookFunc) (const char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_config_switch__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_config_switch__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_config_switch__pre[hIndex].func;
retVal___ = preHookFunc(&str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7592,9 +9275,9 @@ int HP_strlib_config_switch_(const char *str) {
{
retVal___ = HPMHooks.source.strlib.config_switch_(str);
}
- if( HPMHooks.count.HP_strlib_config_switch__post ) {
+ if (HPMHooks.count.HP_strlib_config_switch__post > 0) {
int (*postHookFunc) (int retVal___, const char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_config_switch__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_config_switch__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_config_switch__post[hIndex].func;
retVal___ = postHookFunc(retVal___, str);
}
@@ -7604,14 +9287,14 @@ int HP_strlib_config_switch_(const char *str) {
char* HP_strlib_safestrncpy_(char *dst, const char *src, size_t n) {
int hIndex = 0;
char* retVal___ = NULL;
- if( HPMHooks.count.HP_strlib_safestrncpy__pre ) {
+ if (HPMHooks.count.HP_strlib_safestrncpy__pre > 0) {
char* (*preHookFunc) (char **dst, const char **src, size_t *n);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_safestrncpy__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_safestrncpy__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_safestrncpy__pre[hIndex].func;
retVal___ = preHookFunc(&dst, &src, &n);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7619,9 +9302,9 @@ char* HP_strlib_safestrncpy_(char *dst, const char *src, size_t n) {
{
retVal___ = HPMHooks.source.strlib.safestrncpy_(dst, src, n);
}
- if( HPMHooks.count.HP_strlib_safestrncpy__post ) {
+ if (HPMHooks.count.HP_strlib_safestrncpy__post > 0) {
char* (*postHookFunc) (char* retVal___, char *dst, const char *src, size_t n);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_safestrncpy__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_safestrncpy__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_safestrncpy__post[hIndex].func;
retVal___ = postHookFunc(retVal___, dst, src, n);
}
@@ -7631,14 +9314,14 @@ char* HP_strlib_safestrncpy_(char *dst, const char *src, size_t n) {
size_t HP_strlib_safestrnlen_(const char *string, size_t maxlen) {
int hIndex = 0;
size_t retVal___ = 0;
- if( HPMHooks.count.HP_strlib_safestrnlen__pre ) {
+ if (HPMHooks.count.HP_strlib_safestrnlen__pre > 0) {
size_t (*preHookFunc) (const char **string, size_t *maxlen);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_safestrnlen__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_safestrnlen__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_safestrnlen__pre[hIndex].func;
retVal___ = preHookFunc(&string, &maxlen);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7646,9 +9329,9 @@ size_t HP_strlib_safestrnlen_(const char *string, size_t maxlen) {
{
retVal___ = HPMHooks.source.strlib.safestrnlen_(string, maxlen);
}
- if( HPMHooks.count.HP_strlib_safestrnlen__post ) {
+ if (HPMHooks.count.HP_strlib_safestrnlen__post > 0) {
size_t (*postHookFunc) (size_t retVal___, const char *string, size_t maxlen);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_safestrnlen__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_safestrnlen__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_safestrnlen__post[hIndex].func;
retVal___ = postHookFunc(retVal___, string, maxlen);
}
@@ -7658,14 +9341,14 @@ size_t HP_strlib_safestrnlen_(const char *string, size_t maxlen) {
int HP_strlib_strline_(const char *str, size_t pos) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_strlib_strline__pre ) {
+ if (HPMHooks.count.HP_strlib_strline__pre > 0) {
int (*preHookFunc) (const char **str, size_t *pos);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strline__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strline__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_strline__pre[hIndex].func;
retVal___ = preHookFunc(&str, &pos);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7673,9 +9356,9 @@ int HP_strlib_strline_(const char *str, size_t pos) {
{
retVal___ = HPMHooks.source.strlib.strline_(str, pos);
}
- if( HPMHooks.count.HP_strlib_strline__post ) {
+ if (HPMHooks.count.HP_strlib_strline__post > 0) {
int (*postHookFunc) (int retVal___, const char *str, size_t pos);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strline__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strline__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_strline__post[hIndex].func;
retVal___ = postHookFunc(retVal___, str, pos);
}
@@ -7685,14 +9368,14 @@ int HP_strlib_strline_(const char *str, size_t pos) {
bool HP_strlib_bin2hex_(char *output, const unsigned char *input, size_t count) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_strlib_bin2hex__pre ) {
+ if (HPMHooks.count.HP_strlib_bin2hex__pre > 0) {
bool (*preHookFunc) (char **output, const unsigned char **input, size_t *count);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_bin2hex__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_bin2hex__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_bin2hex__pre[hIndex].func;
retVal___ = preHookFunc(&output, &input, &count);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7700,9 +9383,9 @@ bool HP_strlib_bin2hex_(char *output, const unsigned char *input, size_t count)
{
retVal___ = HPMHooks.source.strlib.bin2hex_(output, input, count);
}
- if( HPMHooks.count.HP_strlib_bin2hex__post ) {
+ if (HPMHooks.count.HP_strlib_bin2hex__post > 0) {
bool (*postHookFunc) (bool retVal___, char *output, const unsigned char *input, size_t count);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_bin2hex__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_bin2hex__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_bin2hex__post[hIndex].func;
retVal___ = postHookFunc(retVal___, output, input, count);
}
@@ -7713,14 +9396,14 @@ bool HP_strlib_bin2hex_(char *output, const unsigned char *input, size_t count)
int HP_sv_parse_next(struct s_svstate *svstate) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sv_parse_next_pre ) {
+ if (HPMHooks.count.HP_sv_parse_next_pre > 0) {
int (*preHookFunc) (struct s_svstate **svstate);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_parse_next_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_parse_next_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sv_parse_next_pre[hIndex].func;
retVal___ = preHookFunc(&svstate);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7728,9 +9411,9 @@ int HP_sv_parse_next(struct s_svstate *svstate) {
{
retVal___ = HPMHooks.source.sv.parse_next(svstate);
}
- if( HPMHooks.count.HP_sv_parse_next_post ) {
+ if (HPMHooks.count.HP_sv_parse_next_post > 0) {
int (*postHookFunc) (int retVal___, struct s_svstate *svstate);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_parse_next_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_parse_next_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sv_parse_next_post[hIndex].func;
retVal___ = postHookFunc(retVal___, svstate);
}
@@ -7740,14 +9423,14 @@ int HP_sv_parse_next(struct s_svstate *svstate) {
int HP_sv_parse(const char *str, int len, int startoff, char delim, int *out_pos, int npos, enum e_svopt opt) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sv_parse_pre ) {
+ if (HPMHooks.count.HP_sv_parse_pre > 0) {
int (*preHookFunc) (const char **str, int *len, int *startoff, char *delim, int **out_pos, int *npos, enum e_svopt *opt);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_parse_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_parse_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sv_parse_pre[hIndex].func;
retVal___ = preHookFunc(&str, &len, &startoff, &delim, &out_pos, &npos, &opt);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7755,9 +9438,9 @@ int HP_sv_parse(const char *str, int len, int startoff, char delim, int *out_pos
{
retVal___ = HPMHooks.source.sv.parse(str, len, startoff, delim, out_pos, npos, opt);
}
- if( HPMHooks.count.HP_sv_parse_post ) {
+ if (HPMHooks.count.HP_sv_parse_post > 0) {
int (*postHookFunc) (int retVal___, const char *str, int len, int startoff, char delim, int *out_pos, int npos, enum e_svopt opt);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_parse_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_parse_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sv_parse_post[hIndex].func;
retVal___ = postHookFunc(retVal___, str, len, startoff, delim, out_pos, npos, opt);
}
@@ -7767,14 +9450,14 @@ int HP_sv_parse(const char *str, int len, int startoff, char delim, int *out_pos
int HP_sv_split(char *str, int len, int startoff, char delim, char **out_fields, int nfields, enum e_svopt opt) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sv_split_pre ) {
+ if (HPMHooks.count.HP_sv_split_pre > 0) {
int (*preHookFunc) (char **str, int *len, int *startoff, char *delim, char ***out_fields, int *nfields, enum e_svopt *opt);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_split_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_split_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sv_split_pre[hIndex].func;
retVal___ = preHookFunc(&str, &len, &startoff, &delim, &out_fields, &nfields, &opt);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7782,9 +9465,9 @@ int HP_sv_split(char *str, int len, int startoff, char delim, char **out_fields,
{
retVal___ = HPMHooks.source.sv.split(str, len, startoff, delim, out_fields, nfields, opt);
}
- if( HPMHooks.count.HP_sv_split_post ) {
+ if (HPMHooks.count.HP_sv_split_post > 0) {
int (*postHookFunc) (int retVal___, char *str, int len, int startoff, char delim, char **out_fields, int nfields, enum e_svopt opt);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_split_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_split_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sv_split_post[hIndex].func;
retVal___ = postHookFunc(retVal___, str, len, startoff, delim, out_fields, nfields, opt);
}
@@ -7794,14 +9477,14 @@ int HP_sv_split(char *str, int len, int startoff, char delim, char **out_fields,
size_t HP_sv_escape_c(char *out_dest, const char *src, size_t len, const char *escapes) {
int hIndex = 0;
size_t retVal___ = 0;
- if( HPMHooks.count.HP_sv_escape_c_pre ) {
+ if (HPMHooks.count.HP_sv_escape_c_pre > 0) {
size_t (*preHookFunc) (char **out_dest, const char **src, size_t *len, const char **escapes);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_escape_c_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_escape_c_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sv_escape_c_pre[hIndex].func;
retVal___ = preHookFunc(&out_dest, &src, &len, &escapes);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7809,9 +9492,9 @@ size_t HP_sv_escape_c(char *out_dest, const char *src, size_t len, const char *e
{
retVal___ = HPMHooks.source.sv.escape_c(out_dest, src, len, escapes);
}
- if( HPMHooks.count.HP_sv_escape_c_post ) {
+ if (HPMHooks.count.HP_sv_escape_c_post > 0) {
size_t (*postHookFunc) (size_t retVal___, char *out_dest, const char *src, size_t len, const char *escapes);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_escape_c_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_escape_c_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sv_escape_c_post[hIndex].func;
retVal___ = postHookFunc(retVal___, out_dest, src, len, escapes);
}
@@ -7821,14 +9504,14 @@ size_t HP_sv_escape_c(char *out_dest, const char *src, size_t len, const char *e
size_t HP_sv_unescape_c(char *out_dest, const char *src, size_t len) {
int hIndex = 0;
size_t retVal___ = 0;
- if( HPMHooks.count.HP_sv_unescape_c_pre ) {
+ if (HPMHooks.count.HP_sv_unescape_c_pre > 0) {
size_t (*preHookFunc) (char **out_dest, const char **src, size_t *len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_unescape_c_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_unescape_c_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sv_unescape_c_pre[hIndex].func;
retVal___ = preHookFunc(&out_dest, &src, &len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7836,9 +9519,9 @@ size_t HP_sv_unescape_c(char *out_dest, const char *src, size_t len) {
{
retVal___ = HPMHooks.source.sv.unescape_c(out_dest, src, len);
}
- if( HPMHooks.count.HP_sv_unescape_c_post ) {
+ if (HPMHooks.count.HP_sv_unescape_c_post > 0) {
size_t (*postHookFunc) (size_t retVal___, char *out_dest, const char *src, size_t len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_unescape_c_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_unescape_c_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sv_unescape_c_post[hIndex].func;
retVal___ = postHookFunc(retVal___, out_dest, src, len);
}
@@ -7848,14 +9531,14 @@ size_t HP_sv_unescape_c(char *out_dest, const char *src, size_t len) {
const char* HP_sv_skip_escaped_c(const char *p) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sv_skip_escaped_c_pre ) {
+ if (HPMHooks.count.HP_sv_skip_escaped_c_pre > 0) {
const char* (*preHookFunc) (const char **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_skip_escaped_c_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_skip_escaped_c_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sv_skip_escaped_c_pre[hIndex].func;
retVal___ = preHookFunc(&p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7863,9 +9546,9 @@ const char* HP_sv_skip_escaped_c(const char *p) {
{
retVal___ = HPMHooks.source.sv.skip_escaped_c(p);
}
- if( HPMHooks.count.HP_sv_skip_escaped_c_post ) {
+ if (HPMHooks.count.HP_sv_skip_escaped_c_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_skip_escaped_c_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_skip_escaped_c_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sv_skip_escaped_c_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p);
}
@@ -7875,14 +9558,14 @@ const char* HP_sv_skip_escaped_c(const char *p) {
bool HP_sv_readdb(const char *directory, const char *filename, char delim, int mincols, int maxcols, int maxrows, bool ( *parseproc ) (char *fields[], int columns, int current)) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_sv_readdb_pre ) {
+ if (HPMHooks.count.HP_sv_readdb_pre > 0) {
bool (*preHookFunc) (const char **directory, const char **filename, char *delim, int *mincols, int *maxcols, int *maxrows, bool ( **parseproc ) (char *fields[], int columns, int current));
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_readdb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_readdb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sv_readdb_pre[hIndex].func;
retVal___ = preHookFunc(&directory, &filename, &delim, &mincols, &maxcols, &maxrows, &parseproc);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7890,9 +9573,9 @@ bool HP_sv_readdb(const char *directory, const char *filename, char delim, int m
{
retVal___ = HPMHooks.source.sv.readdb(directory, filename, delim, mincols, maxcols, maxrows, parseproc);
}
- if( HPMHooks.count.HP_sv_readdb_post ) {
+ if (HPMHooks.count.HP_sv_readdb_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *directory, const char *filename, char delim, int mincols, int maxcols, int maxrows, bool ( *parseproc ) (char *fields[], int columns, int current));
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_readdb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_readdb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sv_readdb_post[hIndex].func;
retVal___ = postHookFunc(retVal___, directory, filename, delim, mincols, maxcols, maxrows, parseproc);
}
@@ -7903,14 +9586,14 @@ bool HP_sv_readdb(const char *directory, const char *filename, char delim, int m
int HP_sysinfo_getpagesize(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sysinfo_getpagesize_pre ) {
+ if (HPMHooks.count.HP_sysinfo_getpagesize_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_getpagesize_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_getpagesize_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_getpagesize_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7918,9 +9601,9 @@ int HP_sysinfo_getpagesize(void) {
{
retVal___ = HPMHooks.source.sysinfo.getpagesize();
}
- if( HPMHooks.count.HP_sysinfo_getpagesize_post ) {
+ if (HPMHooks.count.HP_sysinfo_getpagesize_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_getpagesize_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_getpagesize_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_getpagesize_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -7930,14 +9613,14 @@ int HP_sysinfo_getpagesize(void) {
const char* HP_sysinfo_platform(void) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sysinfo_platform_pre ) {
+ if (HPMHooks.count.HP_sysinfo_platform_pre > 0) {
const char* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_platform_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_platform_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_platform_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7945,9 +9628,9 @@ const char* HP_sysinfo_platform(void) {
{
retVal___ = HPMHooks.source.sysinfo.platform();
}
- if( HPMHooks.count.HP_sysinfo_platform_post ) {
+ if (HPMHooks.count.HP_sysinfo_platform_post > 0) {
const char* (*postHookFunc) (const char* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_platform_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_platform_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_platform_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -7957,14 +9640,14 @@ const char* HP_sysinfo_platform(void) {
const char* HP_sysinfo_osversion(void) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sysinfo_osversion_pre ) {
+ if (HPMHooks.count.HP_sysinfo_osversion_pre > 0) {
const char* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_osversion_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_osversion_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_osversion_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7972,9 +9655,9 @@ const char* HP_sysinfo_osversion(void) {
{
retVal___ = HPMHooks.source.sysinfo.osversion();
}
- if( HPMHooks.count.HP_sysinfo_osversion_post ) {
+ if (HPMHooks.count.HP_sysinfo_osversion_post > 0) {
const char* (*postHookFunc) (const char* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_osversion_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_osversion_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_osversion_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -7984,14 +9667,14 @@ const char* HP_sysinfo_osversion(void) {
const char* HP_sysinfo_cpu(void) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sysinfo_cpu_pre ) {
+ if (HPMHooks.count.HP_sysinfo_cpu_pre > 0) {
const char* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cpu_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cpu_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_cpu_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -7999,9 +9682,9 @@ const char* HP_sysinfo_cpu(void) {
{
retVal___ = HPMHooks.source.sysinfo.cpu();
}
- if( HPMHooks.count.HP_sysinfo_cpu_post ) {
+ if (HPMHooks.count.HP_sysinfo_cpu_post > 0) {
const char* (*postHookFunc) (const char* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cpu_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cpu_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_cpu_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -8011,14 +9694,14 @@ const char* HP_sysinfo_cpu(void) {
int HP_sysinfo_cpucores(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sysinfo_cpucores_pre ) {
+ if (HPMHooks.count.HP_sysinfo_cpucores_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cpucores_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cpucores_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_cpucores_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8026,9 +9709,9 @@ int HP_sysinfo_cpucores(void) {
{
retVal___ = HPMHooks.source.sysinfo.cpucores();
}
- if( HPMHooks.count.HP_sysinfo_cpucores_post ) {
+ if (HPMHooks.count.HP_sysinfo_cpucores_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cpucores_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cpucores_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_cpucores_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -8038,14 +9721,14 @@ int HP_sysinfo_cpucores(void) {
const char* HP_sysinfo_arch(void) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sysinfo_arch_pre ) {
+ if (HPMHooks.count.HP_sysinfo_arch_pre > 0) {
const char* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_arch_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_arch_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_arch_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8053,9 +9736,9 @@ const char* HP_sysinfo_arch(void) {
{
retVal___ = HPMHooks.source.sysinfo.arch();
}
- if( HPMHooks.count.HP_sysinfo_arch_post ) {
+ if (HPMHooks.count.HP_sysinfo_arch_post > 0) {
const char* (*postHookFunc) (const char* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_arch_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_arch_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_arch_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -8065,14 +9748,14 @@ const char* HP_sysinfo_arch(void) {
bool HP_sysinfo_is64bit(void) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_sysinfo_is64bit_pre ) {
+ if (HPMHooks.count.HP_sysinfo_is64bit_pre > 0) {
bool (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_is64bit_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_is64bit_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_is64bit_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8080,9 +9763,9 @@ bool HP_sysinfo_is64bit(void) {
{
retVal___ = HPMHooks.source.sysinfo.is64bit();
}
- if( HPMHooks.count.HP_sysinfo_is64bit_post ) {
+ if (HPMHooks.count.HP_sysinfo_is64bit_post > 0) {
bool (*postHookFunc) (bool retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_is64bit_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_is64bit_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_is64bit_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -8092,14 +9775,14 @@ bool HP_sysinfo_is64bit(void) {
const char* HP_sysinfo_compiler(void) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sysinfo_compiler_pre ) {
+ if (HPMHooks.count.HP_sysinfo_compiler_pre > 0) {
const char* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_compiler_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_compiler_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_compiler_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8107,9 +9790,9 @@ const char* HP_sysinfo_compiler(void) {
{
retVal___ = HPMHooks.source.sysinfo.compiler();
}
- if( HPMHooks.count.HP_sysinfo_compiler_post ) {
+ if (HPMHooks.count.HP_sysinfo_compiler_post > 0) {
const char* (*postHookFunc) (const char* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_compiler_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_compiler_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_compiler_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -8119,14 +9802,14 @@ const char* HP_sysinfo_compiler(void) {
const char* HP_sysinfo_cflags(void) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sysinfo_cflags_pre ) {
+ if (HPMHooks.count.HP_sysinfo_cflags_pre > 0) {
const char* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cflags_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cflags_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_cflags_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8134,9 +9817,9 @@ const char* HP_sysinfo_cflags(void) {
{
retVal___ = HPMHooks.source.sysinfo.cflags();
}
- if( HPMHooks.count.HP_sysinfo_cflags_post ) {
+ if (HPMHooks.count.HP_sysinfo_cflags_post > 0) {
const char* (*postHookFunc) (const char* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cflags_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cflags_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_cflags_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -8146,14 +9829,14 @@ const char* HP_sysinfo_cflags(void) {
const char* HP_sysinfo_time(void) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sysinfo_time_pre ) {
+ if (HPMHooks.count.HP_sysinfo_time_pre > 0) {
const char* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_time_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_time_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_time_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8161,9 +9844,9 @@ const char* HP_sysinfo_time(void) {
{
retVal___ = HPMHooks.source.sysinfo.time();
}
- if( HPMHooks.count.HP_sysinfo_time_post ) {
+ if (HPMHooks.count.HP_sysinfo_time_post > 0) {
const char* (*postHookFunc) (const char* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_time_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_time_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_time_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -8173,14 +9856,14 @@ const char* HP_sysinfo_time(void) {
const char* HP_sysinfo_vcstype(void) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sysinfo_vcstype_pre ) {
+ if (HPMHooks.count.HP_sysinfo_vcstype_pre > 0) {
const char* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcstype_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcstype_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_vcstype_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8188,9 +9871,9 @@ const char* HP_sysinfo_vcstype(void) {
{
retVal___ = HPMHooks.source.sysinfo.vcstype();
}
- if( HPMHooks.count.HP_sysinfo_vcstype_post ) {
+ if (HPMHooks.count.HP_sysinfo_vcstype_post > 0) {
const char* (*postHookFunc) (const char* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcstype_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcstype_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_vcstype_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -8200,14 +9883,14 @@ const char* HP_sysinfo_vcstype(void) {
int HP_sysinfo_vcstypeid(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sysinfo_vcstypeid_pre ) {
+ if (HPMHooks.count.HP_sysinfo_vcstypeid_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcstypeid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcstypeid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_vcstypeid_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8215,9 +9898,9 @@ int HP_sysinfo_vcstypeid(void) {
{
retVal___ = HPMHooks.source.sysinfo.vcstypeid();
}
- if( HPMHooks.count.HP_sysinfo_vcstypeid_post ) {
+ if (HPMHooks.count.HP_sysinfo_vcstypeid_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcstypeid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcstypeid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_vcstypeid_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -8227,14 +9910,14 @@ int HP_sysinfo_vcstypeid(void) {
const char* HP_sysinfo_vcsrevision_src(void) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sysinfo_vcsrevision_src_pre ) {
+ if (HPMHooks.count.HP_sysinfo_vcsrevision_src_pre > 0) {
const char* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_src_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_src_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_vcsrevision_src_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8242,9 +9925,9 @@ const char* HP_sysinfo_vcsrevision_src(void) {
{
retVal___ = HPMHooks.source.sysinfo.vcsrevision_src();
}
- if( HPMHooks.count.HP_sysinfo_vcsrevision_src_post ) {
+ if (HPMHooks.count.HP_sysinfo_vcsrevision_src_post > 0) {
const char* (*postHookFunc) (const char* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_src_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_src_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_vcsrevision_src_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -8254,14 +9937,14 @@ const char* HP_sysinfo_vcsrevision_src(void) {
const char* HP_sysinfo_vcsrevision_scripts(void) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sysinfo_vcsrevision_scripts_pre ) {
+ if (HPMHooks.count.HP_sysinfo_vcsrevision_scripts_pre > 0) {
const char* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_scripts_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_scripts_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_vcsrevision_scripts_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8269,9 +9952,9 @@ const char* HP_sysinfo_vcsrevision_scripts(void) {
{
retVal___ = HPMHooks.source.sysinfo.vcsrevision_scripts();
}
- if( HPMHooks.count.HP_sysinfo_vcsrevision_scripts_post ) {
+ if (HPMHooks.count.HP_sysinfo_vcsrevision_scripts_post > 0) {
const char* (*postHookFunc) (const char* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_scripts_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_scripts_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_vcsrevision_scripts_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -8280,14 +9963,14 @@ const char* HP_sysinfo_vcsrevision_scripts(void) {
}
void HP_sysinfo_vcsrevision_reload(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_sysinfo_vcsrevision_reload_pre ) {
+ if (HPMHooks.count.HP_sysinfo_vcsrevision_reload_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_reload_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_reload_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_vcsrevision_reload_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8295,9 +9978,9 @@ void HP_sysinfo_vcsrevision_reload(void) {
{
HPMHooks.source.sysinfo.vcsrevision_reload();
}
- if( HPMHooks.count.HP_sysinfo_vcsrevision_reload_post ) {
+ if (HPMHooks.count.HP_sysinfo_vcsrevision_reload_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_reload_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_reload_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_vcsrevision_reload_post[hIndex].func;
postHookFunc();
}
@@ -8307,14 +9990,14 @@ void HP_sysinfo_vcsrevision_reload(void) {
bool HP_sysinfo_is_superuser(void) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_sysinfo_is_superuser_pre ) {
+ if (HPMHooks.count.HP_sysinfo_is_superuser_pre > 0) {
bool (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_is_superuser_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_is_superuser_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_is_superuser_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8322,9 +10005,9 @@ bool HP_sysinfo_is_superuser(void) {
{
retVal___ = HPMHooks.source.sysinfo.is_superuser();
}
- if( HPMHooks.count.HP_sysinfo_is_superuser_post ) {
+ if (HPMHooks.count.HP_sysinfo_is_superuser_post > 0) {
bool (*postHookFunc) (bool retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_is_superuser_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_is_superuser_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_is_superuser_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -8333,14 +10016,14 @@ bool HP_sysinfo_is_superuser(void) {
}
void HP_sysinfo_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_sysinfo_init_pre ) {
+ if (HPMHooks.count.HP_sysinfo_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8348,9 +10031,9 @@ void HP_sysinfo_init(void) {
{
HPMHooks.source.sysinfo.init();
}
- if( HPMHooks.count.HP_sysinfo_init_post ) {
+ if (HPMHooks.count.HP_sysinfo_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_init_post[hIndex].func;
postHookFunc();
}
@@ -8359,14 +10042,14 @@ void HP_sysinfo_init(void) {
}
void HP_sysinfo_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_sysinfo_final_pre ) {
+ if (HPMHooks.count.HP_sysinfo_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8374,9 +10057,9 @@ void HP_sysinfo_final(void) {
{
HPMHooks.source.sysinfo.final();
}
- if( HPMHooks.count.HP_sysinfo_final_post ) {
+ if (HPMHooks.count.HP_sysinfo_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_final_post[hIndex].func;
postHookFunc();
}
@@ -8386,14 +10069,14 @@ void HP_sysinfo_final(void) {
/* thread_interface */
void HP_thread_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_thread_init_pre ) {
+ if (HPMHooks.count.HP_thread_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8401,9 +10084,9 @@ void HP_thread_init(void) {
{
HPMHooks.source.thread.init();
}
- if( HPMHooks.count.HP_thread_init_post ) {
+ if (HPMHooks.count.HP_thread_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_init_post[hIndex].func;
postHookFunc();
}
@@ -8412,14 +10095,14 @@ void HP_thread_init(void) {
}
void HP_thread_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_thread_final_pre ) {
+ if (HPMHooks.count.HP_thread_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8427,9 +10110,9 @@ void HP_thread_final(void) {
{
HPMHooks.source.thread.final();
}
- if( HPMHooks.count.HP_thread_final_post ) {
+ if (HPMHooks.count.HP_thread_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_final_post[hIndex].func;
postHookFunc();
}
@@ -8439,14 +10122,14 @@ void HP_thread_final(void) {
struct thread_handle* HP_thread_create(threadFunc entry_point, void *param) {
int hIndex = 0;
struct thread_handle* retVal___ = NULL;
- if( HPMHooks.count.HP_thread_create_pre ) {
+ if (HPMHooks.count.HP_thread_create_pre > 0) {
struct thread_handle* (*preHookFunc) (threadFunc *entry_point, void **param);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_create_pre[hIndex].func;
retVal___ = preHookFunc(&entry_point, &param);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8454,9 +10137,9 @@ struct thread_handle* HP_thread_create(threadFunc entry_point, void *param) {
{
retVal___ = HPMHooks.source.thread.create(entry_point, param);
}
- if( HPMHooks.count.HP_thread_create_post ) {
+ if (HPMHooks.count.HP_thread_create_post > 0) {
struct thread_handle* (*postHookFunc) (struct thread_handle* retVal___, threadFunc entry_point, void *param);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_create_post[hIndex].func;
retVal___ = postHookFunc(retVal___, entry_point, param);
}
@@ -8466,14 +10149,14 @@ struct thread_handle* HP_thread_create(threadFunc entry_point, void *param) {
struct thread_handle* HP_thread_create_opt(threadFunc entry_point, void *param, size_t stack_size, enum thread_priority prio) {
int hIndex = 0;
struct thread_handle* retVal___ = NULL;
- if( HPMHooks.count.HP_thread_create_opt_pre ) {
+ if (HPMHooks.count.HP_thread_create_opt_pre > 0) {
struct thread_handle* (*preHookFunc) (threadFunc *entry_point, void **param, size_t *stack_size, enum thread_priority *prio);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_create_opt_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_create_opt_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_create_opt_pre[hIndex].func;
retVal___ = preHookFunc(&entry_point, &param, &stack_size, &prio);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8481,9 +10164,9 @@ struct thread_handle* HP_thread_create_opt(threadFunc entry_point, void *param,
{
retVal___ = HPMHooks.source.thread.create_opt(entry_point, param, stack_size, prio);
}
- if( HPMHooks.count.HP_thread_create_opt_post ) {
+ if (HPMHooks.count.HP_thread_create_opt_post > 0) {
struct thread_handle* (*postHookFunc) (struct thread_handle* retVal___, threadFunc entry_point, void *param, size_t stack_size, enum thread_priority prio);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_create_opt_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_create_opt_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_create_opt_post[hIndex].func;
retVal___ = postHookFunc(retVal___, entry_point, param, stack_size, prio);
}
@@ -8492,14 +10175,14 @@ struct thread_handle* HP_thread_create_opt(threadFunc entry_point, void *param,
}
void HP_thread_destroy(struct thread_handle *handle) {
int hIndex = 0;
- if( HPMHooks.count.HP_thread_destroy_pre ) {
+ if (HPMHooks.count.HP_thread_destroy_pre > 0) {
void (*preHookFunc) (struct thread_handle **handle);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_destroy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_destroy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_destroy_pre[hIndex].func;
preHookFunc(&handle);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8507,9 +10190,9 @@ void HP_thread_destroy(struct thread_handle *handle) {
{
HPMHooks.source.thread.destroy(handle);
}
- if( HPMHooks.count.HP_thread_destroy_post ) {
+ if (HPMHooks.count.HP_thread_destroy_post > 0) {
void (*postHookFunc) (struct thread_handle *handle);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_destroy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_destroy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_destroy_post[hIndex].func;
postHookFunc(handle);
}
@@ -8519,14 +10202,14 @@ void HP_thread_destroy(struct thread_handle *handle) {
struct thread_handle* HP_thread_self(void) {
int hIndex = 0;
struct thread_handle* retVal___ = NULL;
- if( HPMHooks.count.HP_thread_self_pre ) {
+ if (HPMHooks.count.HP_thread_self_pre > 0) {
struct thread_handle* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_self_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_self_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_self_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8534,9 +10217,9 @@ struct thread_handle* HP_thread_self(void) {
{
retVal___ = HPMHooks.source.thread.self();
}
- if( HPMHooks.count.HP_thread_self_post ) {
+ if (HPMHooks.count.HP_thread_self_post > 0) {
struct thread_handle* (*postHookFunc) (struct thread_handle* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_self_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_self_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_self_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -8546,14 +10229,14 @@ struct thread_handle* HP_thread_self(void) {
int HP_thread_get_tid(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_thread_get_tid_pre ) {
+ if (HPMHooks.count.HP_thread_get_tid_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_get_tid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_get_tid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_get_tid_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8561,9 +10244,9 @@ int HP_thread_get_tid(void) {
{
retVal___ = HPMHooks.source.thread.get_tid();
}
- if( HPMHooks.count.HP_thread_get_tid_post ) {
+ if (HPMHooks.count.HP_thread_get_tid_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_get_tid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_get_tid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_get_tid_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -8573,14 +10256,14 @@ int HP_thread_get_tid(void) {
bool HP_thread_wait(struct thread_handle *handle, void **out_exit_code) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_thread_wait_pre ) {
+ if (HPMHooks.count.HP_thread_wait_pre > 0) {
bool (*preHookFunc) (struct thread_handle **handle, void ***out_exit_code);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_wait_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_wait_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_wait_pre[hIndex].func;
retVal___ = preHookFunc(&handle, &out_exit_code);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8588,9 +10271,9 @@ bool HP_thread_wait(struct thread_handle *handle, void **out_exit_code) {
{
retVal___ = HPMHooks.source.thread.wait(handle, out_exit_code);
}
- if( HPMHooks.count.HP_thread_wait_post ) {
+ if (HPMHooks.count.HP_thread_wait_post > 0) {
bool (*postHookFunc) (bool retVal___, struct thread_handle *handle, void **out_exit_code);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_wait_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_wait_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_wait_post[hIndex].func;
retVal___ = postHookFunc(retVal___, handle, out_exit_code);
}
@@ -8599,14 +10282,14 @@ bool HP_thread_wait(struct thread_handle *handle, void **out_exit_code) {
}
void HP_thread_prio_set(struct thread_handle *handle, enum thread_priority prio) {
int hIndex = 0;
- if( HPMHooks.count.HP_thread_prio_set_pre ) {
+ if (HPMHooks.count.HP_thread_prio_set_pre > 0) {
void (*preHookFunc) (struct thread_handle **handle, enum thread_priority *prio);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_prio_set_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_prio_set_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_prio_set_pre[hIndex].func;
preHookFunc(&handle, &prio);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8614,9 +10297,9 @@ void HP_thread_prio_set(struct thread_handle *handle, enum thread_priority prio)
{
HPMHooks.source.thread.prio_set(handle, prio);
}
- if( HPMHooks.count.HP_thread_prio_set_post ) {
+ if (HPMHooks.count.HP_thread_prio_set_post > 0) {
void (*postHookFunc) (struct thread_handle *handle, enum thread_priority prio);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_prio_set_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_prio_set_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_prio_set_post[hIndex].func;
postHookFunc(handle, prio);
}
@@ -8626,14 +10309,14 @@ void HP_thread_prio_set(struct thread_handle *handle, enum thread_priority prio)
enum thread_priority HP_thread_prio_get(struct thread_handle *handle) {
int hIndex = 0;
enum thread_priority retVal___ = THREADPRIO_NORMAL;
- if( HPMHooks.count.HP_thread_prio_get_pre ) {
+ if (HPMHooks.count.HP_thread_prio_get_pre > 0) {
enum thread_priority (*preHookFunc) (struct thread_handle **handle);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_prio_get_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_prio_get_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_prio_get_pre[hIndex].func;
retVal___ = preHookFunc(&handle);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8641,9 +10324,9 @@ enum thread_priority HP_thread_prio_get(struct thread_handle *handle) {
{
retVal___ = HPMHooks.source.thread.prio_get(handle);
}
- if( HPMHooks.count.HP_thread_prio_get_post ) {
+ if (HPMHooks.count.HP_thread_prio_get_post > 0) {
enum thread_priority (*postHookFunc) (enum thread_priority retVal___, struct thread_handle *handle);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_prio_get_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_prio_get_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_prio_get_post[hIndex].func;
retVal___ = postHookFunc(retVal___, handle);
}
@@ -8652,14 +10335,14 @@ enum thread_priority HP_thread_prio_get(struct thread_handle *handle) {
}
void HP_thread_yield(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_thread_yield_pre ) {
+ if (HPMHooks.count.HP_thread_yield_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_yield_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_yield_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_yield_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8667,9 +10350,9 @@ void HP_thread_yield(void) {
{
HPMHooks.source.thread.yield();
}
- if( HPMHooks.count.HP_thread_yield_post ) {
+ if (HPMHooks.count.HP_thread_yield_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_yield_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_yield_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_yield_post[hIndex].func;
postHookFunc();
}
@@ -8680,14 +10363,14 @@ void HP_thread_yield(void) {
int64 HP_timer_gettick(void) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_timer_gettick_pre ) {
+ if (HPMHooks.count.HP_timer_gettick_pre > 0) {
int64 (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_gettick_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_gettick_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_gettick_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8695,9 +10378,9 @@ int64 HP_timer_gettick(void) {
{
retVal___ = HPMHooks.source.timer.gettick();
}
- if( HPMHooks.count.HP_timer_gettick_post ) {
+ if (HPMHooks.count.HP_timer_gettick_post > 0) {
int64 (*postHookFunc) (int64 retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_gettick_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_gettick_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_gettick_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -8707,14 +10390,14 @@ int64 HP_timer_gettick(void) {
int64 HP_timer_gettick_nocache(void) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_timer_gettick_nocache_pre ) {
+ if (HPMHooks.count.HP_timer_gettick_nocache_pre > 0) {
int64 (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_gettick_nocache_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_gettick_nocache_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_gettick_nocache_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8722,9 +10405,9 @@ int64 HP_timer_gettick_nocache(void) {
{
retVal___ = HPMHooks.source.timer.gettick_nocache();
}
- if( HPMHooks.count.HP_timer_gettick_nocache_post ) {
+ if (HPMHooks.count.HP_timer_gettick_nocache_post > 0) {
int64 (*postHookFunc) (int64 retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_gettick_nocache_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_gettick_nocache_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_gettick_nocache_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -8734,14 +10417,14 @@ int64 HP_timer_gettick_nocache(void) {
int HP_timer_add(int64 tick, TimerFunc func, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_timer_add_pre ) {
+ if (HPMHooks.count.HP_timer_add_pre > 0) {
int (*preHookFunc) (int64 *tick, TimerFunc *func, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_add_pre[hIndex].func;
retVal___ = preHookFunc(&tick, &func, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8749,9 +10432,9 @@ int HP_timer_add(int64 tick, TimerFunc func, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.timer.add(tick, func, id, data);
}
- if( HPMHooks.count.HP_timer_add_post ) {
+ if (HPMHooks.count.HP_timer_add_post > 0) {
int (*postHookFunc) (int retVal___, int64 tick, TimerFunc func, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_add_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tick, func, id, data);
}
@@ -8761,14 +10444,14 @@ int HP_timer_add(int64 tick, TimerFunc func, int id, intptr_t data) {
int HP_timer_add_interval(int64 tick, TimerFunc func, int id, intptr_t data, int interval) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_timer_add_interval_pre ) {
+ if (HPMHooks.count.HP_timer_add_interval_pre > 0) {
int (*preHookFunc) (int64 *tick, TimerFunc *func, int *id, intptr_t *data, int *interval);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_interval_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_interval_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_add_interval_pre[hIndex].func;
retVal___ = preHookFunc(&tick, &func, &id, &data, &interval);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8776,9 +10459,9 @@ int HP_timer_add_interval(int64 tick, TimerFunc func, int id, intptr_t data, int
{
retVal___ = HPMHooks.source.timer.add_interval(tick, func, id, data, interval);
}
- if( HPMHooks.count.HP_timer_add_interval_post ) {
+ if (HPMHooks.count.HP_timer_add_interval_post > 0) {
int (*postHookFunc) (int retVal___, int64 tick, TimerFunc func, int id, intptr_t data, int interval);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_interval_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_interval_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_add_interval_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tick, func, id, data, interval);
}
@@ -8788,14 +10471,14 @@ int HP_timer_add_interval(int64 tick, TimerFunc func, int id, intptr_t data, int
const struct TimerData* HP_timer_get(int tid) {
int hIndex = 0;
const struct TimerData* retVal___ = NULL;
- if( HPMHooks.count.HP_timer_get_pre ) {
+ if (HPMHooks.count.HP_timer_get_pre > 0) {
const struct TimerData* (*preHookFunc) (int *tid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_get_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_get_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_get_pre[hIndex].func;
retVal___ = preHookFunc(&tid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8803,9 +10486,9 @@ const struct TimerData* HP_timer_get(int tid) {
{
retVal___ = HPMHooks.source.timer.get(tid);
}
- if( HPMHooks.count.HP_timer_get_post ) {
+ if (HPMHooks.count.HP_timer_get_post > 0) {
const struct TimerData* (*postHookFunc) (const struct TimerData* retVal___, int tid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_get_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_get_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_get_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid);
}
@@ -8815,14 +10498,14 @@ const struct TimerData* HP_timer_get(int tid) {
int HP_timer_delete(int tid, TimerFunc func) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_timer_delete_pre ) {
+ if (HPMHooks.count.HP_timer_delete_pre > 0) {
int (*preHookFunc) (int *tid, TimerFunc *func);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_delete_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &func);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8830,9 +10513,9 @@ int HP_timer_delete(int tid, TimerFunc func) {
{
retVal___ = HPMHooks.source.timer.delete(tid, func);
}
- if( HPMHooks.count.HP_timer_delete_post ) {
+ if (HPMHooks.count.HP_timer_delete_post > 0) {
int (*postHookFunc) (int retVal___, int tid, TimerFunc func);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_delete_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, func);
}
@@ -8842,14 +10525,14 @@ int HP_timer_delete(int tid, TimerFunc func) {
int64 HP_timer_addtick(int tid, int64 tick) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_timer_addtick_pre ) {
+ if (HPMHooks.count.HP_timer_addtick_pre > 0) {
int64 (*preHookFunc) (int *tid, int64 *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_addtick_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_addtick_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_addtick_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8857,9 +10540,9 @@ int64 HP_timer_addtick(int tid, int64 tick) {
{
retVal___ = HPMHooks.source.timer.addtick(tid, tick);
}
- if( HPMHooks.count.HP_timer_addtick_post ) {
+ if (HPMHooks.count.HP_timer_addtick_post > 0) {
int64 (*postHookFunc) (int64 retVal___, int tid, int64 tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_addtick_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_addtick_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_addtick_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick);
}
@@ -8869,14 +10552,14 @@ int64 HP_timer_addtick(int tid, int64 tick) {
int64 HP_timer_settick(int tid, int64 tick) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_timer_settick_pre ) {
+ if (HPMHooks.count.HP_timer_settick_pre > 0) {
int64 (*preHookFunc) (int *tid, int64 *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_settick_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_settick_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_settick_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8884,9 +10567,9 @@ int64 HP_timer_settick(int tid, int64 tick) {
{
retVal___ = HPMHooks.source.timer.settick(tid, tick);
}
- if( HPMHooks.count.HP_timer_settick_post ) {
+ if (HPMHooks.count.HP_timer_settick_post > 0) {
int64 (*postHookFunc) (int64 retVal___, int tid, int64 tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_settick_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_settick_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_settick_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick);
}
@@ -8896,14 +10579,14 @@ int64 HP_timer_settick(int tid, int64 tick) {
int HP_timer_add_func_list(TimerFunc func, char *name) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_timer_add_func_list_pre ) {
+ if (HPMHooks.count.HP_timer_add_func_list_pre > 0) {
int (*preHookFunc) (TimerFunc *func, char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_func_list_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_func_list_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_add_func_list_pre[hIndex].func;
retVal___ = preHookFunc(&func, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8911,9 +10594,9 @@ int HP_timer_add_func_list(TimerFunc func, char *name) {
{
retVal___ = HPMHooks.source.timer.add_func_list(func, name);
}
- if( HPMHooks.count.HP_timer_add_func_list_post ) {
+ if (HPMHooks.count.HP_timer_add_func_list_post > 0) {
int (*postHookFunc) (int retVal___, TimerFunc func, char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_func_list_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_func_list_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_add_func_list_post[hIndex].func;
retVal___ = postHookFunc(retVal___, func, name);
}
@@ -8923,14 +10606,14 @@ int HP_timer_add_func_list(TimerFunc func, char *name) {
unsigned long HP_timer_get_uptime(void) {
int hIndex = 0;
unsigned long retVal___ = 0;
- if( HPMHooks.count.HP_timer_get_uptime_pre ) {
+ if (HPMHooks.count.HP_timer_get_uptime_pre > 0) {
unsigned long (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_get_uptime_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_get_uptime_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_get_uptime_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8938,9 +10621,9 @@ unsigned long HP_timer_get_uptime(void) {
{
retVal___ = HPMHooks.source.timer.get_uptime();
}
- if( HPMHooks.count.HP_timer_get_uptime_post ) {
+ if (HPMHooks.count.HP_timer_get_uptime_post > 0) {
unsigned long (*postHookFunc) (unsigned long retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_get_uptime_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_get_uptime_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_get_uptime_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -8950,14 +10633,14 @@ unsigned long HP_timer_get_uptime(void) {
int HP_timer_perform(int64 tick) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_timer_perform_pre ) {
+ if (HPMHooks.count.HP_timer_perform_pre > 0) {
int (*preHookFunc) (int64 *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_perform_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_perform_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_perform_pre[hIndex].func;
retVal___ = preHookFunc(&tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8965,9 +10648,9 @@ int HP_timer_perform(int64 tick) {
{
retVal___ = HPMHooks.source.timer.perform(tick);
}
- if( HPMHooks.count.HP_timer_perform_post ) {
+ if (HPMHooks.count.HP_timer_perform_post > 0) {
int (*postHookFunc) (int retVal___, int64 tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_perform_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_perform_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_perform_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tick);
}
@@ -8976,14 +10659,14 @@ int HP_timer_perform(int64 tick) {
}
void HP_timer_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_timer_init_pre ) {
+ if (HPMHooks.count.HP_timer_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8991,9 +10674,9 @@ void HP_timer_init(void) {
{
HPMHooks.source.timer.init();
}
- if( HPMHooks.count.HP_timer_init_post ) {
+ if (HPMHooks.count.HP_timer_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_init_post[hIndex].func;
postHookFunc();
}
@@ -9002,14 +10685,14 @@ void HP_timer_init(void) {
}
void HP_timer_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_timer_final_pre ) {
+ if (HPMHooks.count.HP_timer_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9017,9 +10700,9 @@ void HP_timer_final(void) {
{
HPMHooks.source.timer.final();
}
- if( HPMHooks.count.HP_timer_final_post ) {
+ if (HPMHooks.count.HP_timer_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_final_post[hIndex].func;
postHookFunc();
}
diff --git a/src/plugins/HPMHooking/HPMHooking_login.sources.inc b/src/plugins/HPMHooking/HPMHooking_login.sources.inc
index 8239d64ce..510cb8bc4 100644
--- a/src/plugins/HPMHooking/HPMHooking_login.sources.inc
+++ b/src/plugins/HPMHooking/HPMHooking_login.sources.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2017 Hercules Dev Team
+ * Copyright (C) 2013-2019 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -25,26 +25,31 @@
/* GENERATED FILE DO NOT EDIT */
-memcpy(&HPMHooks.source.HCache, HCache, sizeof(struct HCache_interface));
-memcpy(&HPMHooks.source.cmdline, cmdline, sizeof(struct cmdline_interface));
-memcpy(&HPMHooks.source.console, console, sizeof(struct console_interface));
-memcpy(&HPMHooks.source.core, core, sizeof(struct core_interface));
-memcpy(&HPMHooks.source.DB, DB, sizeof(struct db_interface));
-memcpy(&HPMHooks.source.des, des, sizeof(struct des_interface));
-memcpy(&HPMHooks.source.lclif, lclif, sizeof(struct lclif_interface));
-memcpy(&HPMHooks.source.PRIV__lclif, lclif->p, sizeof(struct lclif_interface_private));
-memcpy(&HPMHooks.source.libconfig, libconfig, sizeof(struct libconfig_interface));
-memcpy(&HPMHooks.source.login, login, sizeof(struct login_interface));
-memcpy(&HPMHooks.source.md5, md5, sizeof(struct md5_interface));
-memcpy(&HPMHooks.source.mutex, mutex, sizeof(struct mutex_interface));
-memcpy(&HPMHooks.source.nullpo, nullpo, sizeof(struct nullpo_interface));
-memcpy(&HPMHooks.source.rnd, rnd, sizeof(struct rnd_interface));
-memcpy(&HPMHooks.source.showmsg, showmsg, sizeof(struct showmsg_interface));
-memcpy(&HPMHooks.source.sockt, sockt, sizeof(struct socket_interface));
-memcpy(&HPMHooks.source.SQL, SQL, sizeof(struct sql_interface));
-memcpy(&HPMHooks.source.StrBuf, StrBuf, sizeof(struct stringbuf_interface));
-memcpy(&HPMHooks.source.strlib, strlib, sizeof(struct strlib_interface));
-memcpy(&HPMHooks.source.sv, sv, sizeof(struct sv_interface));
-memcpy(&HPMHooks.source.sysinfo, sysinfo, sizeof(struct sysinfo_interface));
-memcpy(&HPMHooks.source.thread, thread, sizeof(struct thread_interface));
-memcpy(&HPMHooks.source.timer, timer, sizeof(struct timer_interface));
+HPMHooks.source.HCache = *HCache;
+HPMHooks.source.account = *account;
+HPMHooks.source.cmdline = *cmdline;
+HPMHooks.source.console = *console;
+HPMHooks.source.core = *core;
+HPMHooks.source.DB = *DB;
+HPMHooks.source.des = *des;
+HPMHooks.source.ipban = *ipban;
+HPMHooks.source.lchrif = *lchrif;
+HPMHooks.source.lclif = *lclif;
+HPMHooks.source.PRIV__lclif = *lclif->p;
+HPMHooks.source.libconfig = *libconfig;
+HPMHooks.source.login = *login;
+HPMHooks.source.loginlog = *loginlog;
+HPMHooks.source.md5 = *md5;
+HPMHooks.source.mutex = *mutex;
+HPMHooks.source.nullpo = *nullpo;
+HPMHooks.source.packets = *packets;
+HPMHooks.source.rnd = *rnd;
+HPMHooks.source.showmsg = *showmsg;
+HPMHooks.source.sockt = *sockt;
+HPMHooks.source.SQL = *SQL;
+HPMHooks.source.StrBuf = *StrBuf;
+HPMHooks.source.strlib = *strlib;
+HPMHooks.source.sv = *sv;
+HPMHooks.source.sysinfo = *sysinfo;
+HPMHooks.source.thread = *thread;
+HPMHooks.source.timer = *timer;
diff --git a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
index bd055cac2..aa4efd5c3 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2017 Hercules Dev Team
+ * Copyright (C) 2013-2019 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -32,6 +32,114 @@ struct {
struct HPMHookPoint *HP_HCache_check_post;
struct HPMHookPoint *HP_HCache_open_pre;
struct HPMHookPoint *HP_HCache_open_post;
+ struct HPMHookPoint *HP_achievement_init_pre;
+ struct HPMHookPoint *HP_achievement_init_post;
+ struct HPMHookPoint *HP_achievement_final_pre;
+ struct HPMHookPoint *HP_achievement_final_post;
+ struct HPMHookPoint *HP_achievement_db_finalize_pre;
+ struct HPMHookPoint *HP_achievement_db_finalize_post;
+ struct HPMHookPoint *HP_achievement_readdb_pre;
+ struct HPMHookPoint *HP_achievement_readdb_post;
+ struct HPMHookPoint *HP_achievement_readdb_objectives_sub_pre;
+ struct HPMHookPoint *HP_achievement_readdb_objectives_sub_post;
+ struct HPMHookPoint *HP_achievement_readdb_objectives_pre;
+ struct HPMHookPoint *HP_achievement_readdb_objectives_post;
+ struct HPMHookPoint *HP_achievement_readdb_validate_criteria_mobid_pre;
+ struct HPMHookPoint *HP_achievement_readdb_validate_criteria_mobid_post;
+ struct HPMHookPoint *HP_achievement_readdb_validate_criteria_jobid_pre;
+ struct HPMHookPoint *HP_achievement_readdb_validate_criteria_jobid_post;
+ struct HPMHookPoint *HP_achievement_readdb_validate_criteria_itemid_pre;
+ struct HPMHookPoint *HP_achievement_readdb_validate_criteria_itemid_post;
+ struct HPMHookPoint *HP_achievement_readdb_validate_criteria_statustype_pre;
+ struct HPMHookPoint *HP_achievement_readdb_validate_criteria_statustype_post;
+ struct HPMHookPoint *HP_achievement_readdb_validate_criteria_itemtype_pre;
+ struct HPMHookPoint *HP_achievement_readdb_validate_criteria_itemtype_post;
+ struct HPMHookPoint *HP_achievement_readdb_validate_criteria_weaponlv_pre;
+ struct HPMHookPoint *HP_achievement_readdb_validate_criteria_weaponlv_post;
+ struct HPMHookPoint *HP_achievement_readdb_validate_criteria_achievement_pre;
+ struct HPMHookPoint *HP_achievement_readdb_validate_criteria_achievement_post;
+ struct HPMHookPoint *HP_achievement_readdb_rewards_pre;
+ struct HPMHookPoint *HP_achievement_readdb_rewards_post;
+ struct HPMHookPoint *HP_achievement_readdb_validate_reward_items_pre;
+ struct HPMHookPoint *HP_achievement_readdb_validate_reward_items_post;
+ struct HPMHookPoint *HP_achievement_readdb_validate_reward_item_sub_pre;
+ struct HPMHookPoint *HP_achievement_readdb_validate_reward_item_sub_post;
+ struct HPMHookPoint *HP_achievement_readdb_validate_reward_bonus_pre;
+ struct HPMHookPoint *HP_achievement_readdb_validate_reward_bonus_post;
+ struct HPMHookPoint *HP_achievement_readdb_validate_reward_titleid_pre;
+ struct HPMHookPoint *HP_achievement_readdb_validate_reward_titleid_post;
+ struct HPMHookPoint *HP_achievement_readdb_additional_fields_pre;
+ struct HPMHookPoint *HP_achievement_readdb_additional_fields_post;
+ struct HPMHookPoint *HP_achievement_readdb_ranks_pre;
+ struct HPMHookPoint *HP_achievement_readdb_ranks_post;
+ struct HPMHookPoint *HP_achievement_get_pre;
+ struct HPMHookPoint *HP_achievement_get_post;
+ struct HPMHookPoint *HP_achievement_ensure_pre;
+ struct HPMHookPoint *HP_achievement_ensure_post;
+ struct HPMHookPoint *HP_achievement_calculate_totals_pre;
+ struct HPMHookPoint *HP_achievement_calculate_totals_post;
+ struct HPMHookPoint *HP_achievement_check_complete_pre;
+ struct HPMHookPoint *HP_achievement_check_complete_post;
+ struct HPMHookPoint *HP_achievement_progress_add_pre;
+ struct HPMHookPoint *HP_achievement_progress_add_post;
+ struct HPMHookPoint *HP_achievement_progress_set_pre;
+ struct HPMHookPoint *HP_achievement_progress_set_post;
+ struct HPMHookPoint *HP_achievement_check_criteria_pre;
+ struct HPMHookPoint *HP_achievement_check_criteria_post;
+ struct HPMHookPoint *HP_achievement_validate_pre;
+ struct HPMHookPoint *HP_achievement_validate_post;
+ struct HPMHookPoint *HP_achievement_validate_type_pre;
+ struct HPMHookPoint *HP_achievement_validate_type_post;
+ struct HPMHookPoint *HP_achievement_validate_mob_kill_pre;
+ struct HPMHookPoint *HP_achievement_validate_mob_kill_post;
+ struct HPMHookPoint *HP_achievement_validate_mob_damage_pre;
+ struct HPMHookPoint *HP_achievement_validate_mob_damage_post;
+ struct HPMHookPoint *HP_achievement_validate_pc_kill_pre;
+ struct HPMHookPoint *HP_achievement_validate_pc_kill_post;
+ struct HPMHookPoint *HP_achievement_validate_pc_damage_pre;
+ struct HPMHookPoint *HP_achievement_validate_pc_damage_post;
+ struct HPMHookPoint *HP_achievement_validate_jobchange_pre;
+ struct HPMHookPoint *HP_achievement_validate_jobchange_post;
+ struct HPMHookPoint *HP_achievement_validate_stats_pre;
+ struct HPMHookPoint *HP_achievement_validate_stats_post;
+ struct HPMHookPoint *HP_achievement_validate_chatroom_create_pre;
+ struct HPMHookPoint *HP_achievement_validate_chatroom_create_post;
+ struct HPMHookPoint *HP_achievement_validate_chatroom_members_pre;
+ struct HPMHookPoint *HP_achievement_validate_chatroom_members_post;
+ struct HPMHookPoint *HP_achievement_validate_friend_add_pre;
+ struct HPMHookPoint *HP_achievement_validate_friend_add_post;
+ struct HPMHookPoint *HP_achievement_validate_party_create_pre;
+ struct HPMHookPoint *HP_achievement_validate_party_create_post;
+ struct HPMHookPoint *HP_achievement_validate_marry_pre;
+ struct HPMHookPoint *HP_achievement_validate_marry_post;
+ struct HPMHookPoint *HP_achievement_validate_adopt_pre;
+ struct HPMHookPoint *HP_achievement_validate_adopt_post;
+ struct HPMHookPoint *HP_achievement_validate_zeny_pre;
+ struct HPMHookPoint *HP_achievement_validate_zeny_post;
+ struct HPMHookPoint *HP_achievement_validate_refine_pre;
+ struct HPMHookPoint *HP_achievement_validate_refine_post;
+ struct HPMHookPoint *HP_achievement_validate_item_get_pre;
+ struct HPMHookPoint *HP_achievement_validate_item_get_post;
+ struct HPMHookPoint *HP_achievement_validate_item_sell_pre;
+ struct HPMHookPoint *HP_achievement_validate_item_sell_post;
+ struct HPMHookPoint *HP_achievement_validate_achieve_pre;
+ struct HPMHookPoint *HP_achievement_validate_achieve_post;
+ struct HPMHookPoint *HP_achievement_validate_taming_pre;
+ struct HPMHookPoint *HP_achievement_validate_taming_post;
+ struct HPMHookPoint *HP_achievement_validate_achievement_rank_pre;
+ struct HPMHookPoint *HP_achievement_validate_achievement_rank_post;
+ struct HPMHookPoint *HP_achievement_type_requires_criteria_pre;
+ struct HPMHookPoint *HP_achievement_type_requires_criteria_post;
+ struct HPMHookPoint *HP_achievement_init_titles_pre;
+ struct HPMHookPoint *HP_achievement_init_titles_post;
+ struct HPMHookPoint *HP_achievement_check_title_pre;
+ struct HPMHookPoint *HP_achievement_check_title_post;
+ struct HPMHookPoint *HP_achievement_get_rewards_pre;
+ struct HPMHookPoint *HP_achievement_get_rewards_post;
+ struct HPMHookPoint *HP_achievement_get_rewards_buffs_pre;
+ struct HPMHookPoint *HP_achievement_get_rewards_buffs_post;
+ struct HPMHookPoint *HP_achievement_get_rewards_items_pre;
+ struct HPMHookPoint *HP_achievement_get_rewards_items_post;
struct HPMHookPoint *HP_atcommand_init_pre;
struct HPMHookPoint *HP_atcommand_init_post;
struct HPMHookPoint *HP_atcommand_final_pre;
@@ -128,6 +236,8 @@ struct {
struct HPMHookPoint *HP_battle_drain_post;
struct HPMHookPoint *HP_battle_reflect_damage_pre;
struct HPMHookPoint *HP_battle_reflect_damage_post;
+ struct HPMHookPoint *HP_battle_reflect_trap_pre;
+ struct HPMHookPoint *HP_battle_reflect_trap_post;
struct HPMHookPoint *HP_battle_attr_ratio_pre;
struct HPMHookPoint *HP_battle_attr_ratio_post;
struct HPMHookPoint *HP_battle_attr_fix_pre;
@@ -430,8 +540,6 @@ struct {
struct HPMHookPoint *HP_chrif_divorce_post;
struct HPMHookPoint *HP_chrif_removefriend_pre;
struct HPMHookPoint *HP_chrif_removefriend_post;
- struct HPMHookPoint *HP_chrif_send_report_pre;
- struct HPMHookPoint *HP_chrif_send_report_post;
struct HPMHookPoint *HP_chrif_flush_pre;
struct HPMHookPoint *HP_chrif_flush_post;
struct HPMHookPoint *HP_chrif_skillid2idx_pre;
@@ -504,6 +612,60 @@ struct {
struct HPMHookPoint *HP_chrif_save_scdata_single_post;
struct HPMHookPoint *HP_chrif_del_scdata_single_pre;
struct HPMHookPoint *HP_chrif_del_scdata_single_post;
+ struct HPMHookPoint *HP_clan_init_pre;
+ struct HPMHookPoint *HP_clan_init_post;
+ struct HPMHookPoint *HP_clan_final_pre;
+ struct HPMHookPoint *HP_clan_final_post;
+ struct HPMHookPoint *HP_clan_config_read_pre;
+ struct HPMHookPoint *HP_clan_config_read_post;
+ struct HPMHookPoint *HP_clan_config_read_additional_settings_pre;
+ struct HPMHookPoint *HP_clan_config_read_additional_settings_post;
+ struct HPMHookPoint *HP_clan_read_db_pre;
+ struct HPMHookPoint *HP_clan_read_db_post;
+ struct HPMHookPoint *HP_clan_read_db_sub_pre;
+ struct HPMHookPoint *HP_clan_read_db_sub_post;
+ struct HPMHookPoint *HP_clan_read_db_additional_fields_pre;
+ struct HPMHookPoint *HP_clan_read_db_additional_fields_post;
+ struct HPMHookPoint *HP_clan_read_buffs_pre;
+ struct HPMHookPoint *HP_clan_read_buffs_post;
+ struct HPMHookPoint *HP_clan_search_pre;
+ struct HPMHookPoint *HP_clan_search_post;
+ struct HPMHookPoint *HP_clan_searchname_pre;
+ struct HPMHookPoint *HP_clan_searchname_post;
+ struct HPMHookPoint *HP_clan_getonlinesd_pre;
+ struct HPMHookPoint *HP_clan_getonlinesd_post;
+ struct HPMHookPoint *HP_clan_getindex_pre;
+ struct HPMHookPoint *HP_clan_getindex_post;
+ struct HPMHookPoint *HP_clan_join_pre;
+ struct HPMHookPoint *HP_clan_join_post;
+ struct HPMHookPoint *HP_clan_member_online_pre;
+ struct HPMHookPoint *HP_clan_member_online_post;
+ struct HPMHookPoint *HP_clan_leave_pre;
+ struct HPMHookPoint *HP_clan_leave_post;
+ struct HPMHookPoint *HP_clan_send_message_pre;
+ struct HPMHookPoint *HP_clan_send_message_post;
+ struct HPMHookPoint *HP_clan_recv_message_pre;
+ struct HPMHookPoint *HP_clan_recv_message_post;
+ struct HPMHookPoint *HP_clan_member_offline_pre;
+ struct HPMHookPoint *HP_clan_member_offline_post;
+ struct HPMHookPoint *HP_clan_set_constants_pre;
+ struct HPMHookPoint *HP_clan_set_constants_post;
+ struct HPMHookPoint *HP_clan_get_id_pre;
+ struct HPMHookPoint *HP_clan_get_id_post;
+ struct HPMHookPoint *HP_clan_buff_start_pre;
+ struct HPMHookPoint *HP_clan_buff_start_post;
+ struct HPMHookPoint *HP_clan_buff_end_pre;
+ struct HPMHookPoint *HP_clan_buff_end_post;
+ struct HPMHookPoint *HP_clan_reload_pre;
+ struct HPMHookPoint *HP_clan_reload_post;
+ struct HPMHookPoint *HP_clan_rejoin_pre;
+ struct HPMHookPoint *HP_clan_rejoin_post;
+ struct HPMHookPoint *HP_clan_inactivity_kick_pre;
+ struct HPMHookPoint *HP_clan_inactivity_kick_post;
+ struct HPMHookPoint *HP_clan_request_kickoffline_pre;
+ struct HPMHookPoint *HP_clan_request_kickoffline_post;
+ struct HPMHookPoint *HP_clan_request_membercount_pre;
+ struct HPMHookPoint *HP_clan_request_membercount_post;
struct HPMHookPoint *HP_clif_init_pre;
struct HPMHookPoint *HP_clif_init_post;
struct HPMHookPoint *HP_clif_final_pre;
@@ -532,6 +694,8 @@ struct {
struct HPMHookPoint *HP_clif_decrypt_cmd_post;
struct HPMHookPoint *HP_clif_authok_pre;
struct HPMHookPoint *HP_clif_authok_post;
+ struct HPMHookPoint *HP_clif_auth_error_pre;
+ struct HPMHookPoint *HP_clif_auth_error_post;
struct HPMHookPoint *HP_clif_authrefuse_pre;
struct HPMHookPoint *HP_clif_authrefuse_post;
struct HPMHookPoint *HP_clif_authfail_fd_pre;
@@ -550,6 +714,8 @@ struct {
struct HPMHookPoint *HP_clif_delitem_post;
struct HPMHookPoint *HP_clif_takeitem_pre;
struct HPMHookPoint *HP_clif_takeitem_post;
+ struct HPMHookPoint *HP_clif_item_movefailed_pre;
+ struct HPMHookPoint *HP_clif_item_movefailed_post;
struct HPMHookPoint *HP_clif_item_equip_pre;
struct HPMHookPoint *HP_clif_item_equip_post;
struct HPMHookPoint *HP_clif_item_normal_pre;
@@ -572,8 +738,6 @@ struct {
struct HPMHookPoint *HP_clif_useitemack_post;
struct HPMHookPoint *HP_clif_addcards_pre;
struct HPMHookPoint *HP_clif_addcards_post;
- struct HPMHookPoint *HP_clif_addcards2_pre;
- struct HPMHookPoint *HP_clif_addcards2_post;
struct HPMHookPoint *HP_clif_item_sub_pre;
struct HPMHookPoint *HP_clif_item_sub_post;
struct HPMHookPoint *HP_clif_getareachar_item_pre;
@@ -582,6 +746,8 @@ struct {
struct HPMHookPoint *HP_clif_cart_additem_ack_post;
struct HPMHookPoint *HP_clif_cashshop_load_pre;
struct HPMHookPoint *HP_clif_cashshop_load_post;
+ struct HPMHookPoint *HP_clif_cashShopSchedule_pre;
+ struct HPMHookPoint *HP_clif_cashShopSchedule_post;
struct HPMHookPoint *HP_clif_package_announce_pre;
struct HPMHookPoint *HP_clif_package_announce_post;
struct HPMHookPoint *HP_clif_item_drop_announce_pre;
@@ -646,6 +812,8 @@ struct {
struct HPMHookPoint *HP_clif_spawn_post;
struct HPMHookPoint *HP_clif_changemap_pre;
struct HPMHookPoint *HP_clif_changemap_post;
+ struct HPMHookPoint *HP_clif_changemap_airship_pre;
+ struct HPMHookPoint *HP_clif_changemap_airship_post;
struct HPMHookPoint *HP_clif_changemapcell_pre;
struct HPMHookPoint *HP_clif_changemapcell_post;
struct HPMHookPoint *HP_clif_map_property_pre;
@@ -662,6 +830,8 @@ struct {
struct HPMHookPoint *HP_clif_maptypeproperty2_post;
struct HPMHookPoint *HP_clif_changemapserver_pre;
struct HPMHookPoint *HP_clif_changemapserver_post;
+ struct HPMHookPoint *HP_clif_changemapserver_airship_pre;
+ struct HPMHookPoint *HP_clif_changemapserver_airship_post;
struct HPMHookPoint *HP_clif_npcbuysell_pre;
struct HPMHookPoint *HP_clif_npcbuysell_post;
struct HPMHookPoint *HP_clif_buylist_pre;
@@ -748,12 +918,30 @@ struct {
struct HPMHookPoint *HP_clif_status_change_post;
struct HPMHookPoint *HP_clif_insert_card_pre;
struct HPMHookPoint *HP_clif_insert_card_post;
- struct HPMHookPoint *HP_clif_inventorylist_pre;
- struct HPMHookPoint *HP_clif_inventorylist_post;
- struct HPMHookPoint *HP_clif_equiplist_pre;
- struct HPMHookPoint *HP_clif_equiplist_post;
- struct HPMHookPoint *HP_clif_cartlist_pre;
- struct HPMHookPoint *HP_clif_cartlist_post;
+ struct HPMHookPoint *HP_clif_inventoryList_pre;
+ struct HPMHookPoint *HP_clif_inventoryList_post;
+ struct HPMHookPoint *HP_clif_inventoryItems_pre;
+ struct HPMHookPoint *HP_clif_inventoryItems_post;
+ struct HPMHookPoint *HP_clif_equipList_pre;
+ struct HPMHookPoint *HP_clif_equipList_post;
+ struct HPMHookPoint *HP_clif_equipItems_pre;
+ struct HPMHookPoint *HP_clif_equipItems_post;
+ struct HPMHookPoint *HP_clif_cartList_pre;
+ struct HPMHookPoint *HP_clif_cartList_post;
+ struct HPMHookPoint *HP_clif_cartItems_pre;
+ struct HPMHookPoint *HP_clif_cartItems_post;
+ struct HPMHookPoint *HP_clif_inventoryExpansionInfo_pre;
+ struct HPMHookPoint *HP_clif_inventoryExpansionInfo_post;
+ struct HPMHookPoint *HP_clif_inventoryExpandAck_pre;
+ struct HPMHookPoint *HP_clif_inventoryExpandAck_post;
+ struct HPMHookPoint *HP_clif_inventoryExpandResult_pre;
+ struct HPMHookPoint *HP_clif_inventoryExpandResult_post;
+ struct HPMHookPoint *HP_clif_pInventoryExpansion_pre;
+ struct HPMHookPoint *HP_clif_pInventoryExpansion_post;
+ struct HPMHookPoint *HP_clif_pInventoryExpansionConfirmed_pre;
+ struct HPMHookPoint *HP_clif_pInventoryExpansionConfirmed_post;
+ struct HPMHookPoint *HP_clif_pInventoryExpansionRejected_pre;
+ struct HPMHookPoint *HP_clif_pInventoryExpansionRejected_post;
struct HPMHookPoint *HP_clif_favorite_item_pre;
struct HPMHookPoint *HP_clif_favorite_item_post;
struct HPMHookPoint *HP_clif_clearcart_pre;
@@ -810,8 +998,8 @@ struct {
struct HPMHookPoint *HP_clif_feel_hate_reset_post;
struct HPMHookPoint *HP_clif_partytickack_pre;
struct HPMHookPoint *HP_clif_partytickack_post;
- struct HPMHookPoint *HP_clif_equiptickack_pre;
- struct HPMHookPoint *HP_clif_equiptickack_post;
+ struct HPMHookPoint *HP_clif_zc_config_pre;
+ struct HPMHookPoint *HP_clif_zc_config_post;
struct HPMHookPoint *HP_clif_viewequip_ack_pre;
struct HPMHookPoint *HP_clif_viewequip_ack_post;
struct HPMHookPoint *HP_clif_equpcheckbox_pre;
@@ -824,6 +1012,8 @@ struct {
struct HPMHookPoint *HP_clif_progressbar_post;
struct HPMHookPoint *HP_clif_progressbar_abort_pre;
struct HPMHookPoint *HP_clif_progressbar_abort_post;
+ struct HPMHookPoint *HP_clif_progressbar_unit_pre;
+ struct HPMHookPoint *HP_clif_progressbar_unit_post;
struct HPMHookPoint *HP_clif_showdigit_pre;
struct HPMHookPoint *HP_clif_showdigit_post;
struct HPMHookPoint *HP_clif_elementalconverter_list_pre;
@@ -932,6 +1122,10 @@ struct {
struct HPMHookPoint *HP_clif_specialeffect_single_post;
struct HPMHookPoint *HP_clif_specialeffect_value_pre;
struct HPMHookPoint *HP_clif_specialeffect_value_post;
+ struct HPMHookPoint *HP_clif_removeSpecialEffect_pre;
+ struct HPMHookPoint *HP_clif_removeSpecialEffect_post;
+ struct HPMHookPoint *HP_clif_removeSpecialEffect_single_pre;
+ struct HPMHookPoint *HP_clif_removeSpecialEffect_single_post;
struct HPMHookPoint *HP_clif_millenniumshield_pre;
struct HPMHookPoint *HP_clif_millenniumshield_post;
struct HPMHookPoint *HP_clif_spiritcharm_pre;
@@ -982,14 +1176,24 @@ struct {
struct HPMHookPoint *HP_clif_messagecolor_self_post;
struct HPMHookPoint *HP_clif_messagecolor_pre;
struct HPMHookPoint *HP_clif_messagecolor_post;
+ struct HPMHookPoint *HP_clif_serviceMessageColor_pre;
+ struct HPMHookPoint *HP_clif_serviceMessageColor_post;
struct HPMHookPoint *HP_clif_disp_overhead_pre;
struct HPMHookPoint *HP_clif_disp_overhead_post;
+ struct HPMHookPoint *HP_clif_notify_playerchat_pre;
+ struct HPMHookPoint *HP_clif_notify_playerchat_post;
struct HPMHookPoint *HP_clif_msgtable_pre;
struct HPMHookPoint *HP_clif_msgtable_post;
struct HPMHookPoint *HP_clif_msgtable_num_pre;
struct HPMHookPoint *HP_clif_msgtable_num_post;
struct HPMHookPoint *HP_clif_msgtable_skill_pre;
struct HPMHookPoint *HP_clif_msgtable_skill_post;
+ struct HPMHookPoint *HP_clif_msgtable_str_pre;
+ struct HPMHookPoint *HP_clif_msgtable_str_post;
+ struct HPMHookPoint *HP_clif_msgtable_str_color_pre;
+ struct HPMHookPoint *HP_clif_msgtable_str_color_post;
+ struct HPMHookPoint *HP_clif_msgtable_color_pre;
+ struct HPMHookPoint *HP_clif_msgtable_color_post;
struct HPMHookPoint *HP_clif_message_pre;
struct HPMHookPoint *HP_clif_message_post;
struct HPMHookPoint *HP_clif_messageln_pre;
@@ -1034,10 +1238,20 @@ struct {
struct HPMHookPoint *HP_clif_buyvending_post;
struct HPMHookPoint *HP_clif_openvending_pre;
struct HPMHookPoint *HP_clif_openvending_post;
+ struct HPMHookPoint *HP_clif_openvendingAck_pre;
+ struct HPMHookPoint *HP_clif_openvendingAck_post;
struct HPMHookPoint *HP_clif_vendingreport_pre;
struct HPMHookPoint *HP_clif_vendingreport_post;
- struct HPMHookPoint *HP_clif_storagelist_pre;
- struct HPMHookPoint *HP_clif_storagelist_post;
+ struct HPMHookPoint *HP_clif_storageList_pre;
+ struct HPMHookPoint *HP_clif_storageList_post;
+ struct HPMHookPoint *HP_clif_guildStorageList_pre;
+ struct HPMHookPoint *HP_clif_guildStorageList_post;
+ struct HPMHookPoint *HP_clif_storageItems_pre;
+ struct HPMHookPoint *HP_clif_storageItems_post;
+ struct HPMHookPoint *HP_clif_inventoryStart_pre;
+ struct HPMHookPoint *HP_clif_inventoryStart_post;
+ struct HPMHookPoint *HP_clif_inventoryEnd_pre;
+ struct HPMHookPoint *HP_clif_inventoryEnd_post;
struct HPMHookPoint *HP_clif_updatestorageamount_pre;
struct HPMHookPoint *HP_clif_updatestorageamount_post;
struct HPMHookPoint *HP_clif_storageitemadded_pre;
@@ -1062,6 +1276,8 @@ struct {
struct HPMHookPoint *HP_clif_party_member_info_post;
struct HPMHookPoint *HP_clif_party_info_pre;
struct HPMHookPoint *HP_clif_party_info_post;
+ struct HPMHookPoint *HP_clif_party_job_and_level_pre;
+ struct HPMHookPoint *HP_clif_party_job_and_level_post;
struct HPMHookPoint *HP_clif_party_invite_pre;
struct HPMHookPoint *HP_clif_party_invite_post;
struct HPMHookPoint *HP_clif_party_inviteack_pre;
@@ -1146,6 +1362,10 @@ struct {
struct HPMHookPoint *HP_clif_guild_positioninfolist_post;
struct HPMHookPoint *HP_clif_guild_expulsionlist_pre;
struct HPMHookPoint *HP_clif_guild_expulsionlist_post;
+ struct HPMHookPoint *HP_clif_guild_set_position_pre;
+ struct HPMHookPoint *HP_clif_guild_set_position_post;
+ struct HPMHookPoint *HP_clif_guild_position_selected_pre;
+ struct HPMHookPoint *HP_clif_guild_position_selected_post;
struct HPMHookPoint *HP_clif_validate_emblem_pre;
struct HPMHookPoint *HP_clif_validate_emblem_post;
struct HPMHookPoint *HP_clif_bg_hp_pre;
@@ -1228,6 +1448,8 @@ struct {
struct HPMHookPoint *HP_clif_quest_update_status_post;
struct HPMHookPoint *HP_clif_quest_update_objective_pre;
struct HPMHookPoint *HP_clif_quest_update_objective_post;
+ struct HPMHookPoint *HP_clif_quest_notify_objective_pre;
+ struct HPMHookPoint *HP_clif_quest_notify_objective_post;
struct HPMHookPoint *HP_clif_quest_show_event_pre;
struct HPMHookPoint *HP_clif_quest_show_event_post;
struct HPMHookPoint *HP_clif_mail_window_pre;
@@ -1406,6 +1628,18 @@ struct {
struct HPMHookPoint *HP_clif_navigate_to_post;
struct HPMHookPoint *HP_clif_bl_type_pre;
struct HPMHookPoint *HP_clif_bl_type_post;
+ struct HPMHookPoint *HP_clif_achievement_send_list_pre;
+ struct HPMHookPoint *HP_clif_achievement_send_list_post;
+ struct HPMHookPoint *HP_clif_achievement_send_update_pre;
+ struct HPMHookPoint *HP_clif_achievement_send_update_post;
+ struct HPMHookPoint *HP_clif_pAchievementGetReward_pre;
+ struct HPMHookPoint *HP_clif_pAchievementGetReward_post;
+ struct HPMHookPoint *HP_clif_achievement_reward_ack_pre;
+ struct HPMHookPoint *HP_clif_achievement_reward_ack_post;
+ struct HPMHookPoint *HP_clif_change_title_ack_pre;
+ struct HPMHookPoint *HP_clif_change_title_ack_post;
+ struct HPMHookPoint *HP_clif_pChangeTitle_pre;
+ struct HPMHookPoint *HP_clif_pChangeTitle_post;
struct HPMHookPoint *HP_clif_pWantToConnection_pre;
struct HPMHookPoint *HP_clif_pWantToConnection_post;
struct HPMHookPoint *HP_clif_pLoadEndAck_pre;
@@ -1498,8 +1732,14 @@ struct {
struct HPMHookPoint *HP_clif_pStatusUp_post;
struct HPMHookPoint *HP_clif_pSkillUp_pre;
struct HPMHookPoint *HP_clif_pSkillUp_post;
+ struct HPMHookPoint *HP_clif_useSkillToIdReal_pre;
+ struct HPMHookPoint *HP_clif_useSkillToIdReal_post;
struct HPMHookPoint *HP_clif_pUseSkillToId_pre;
struct HPMHookPoint *HP_clif_pUseSkillToId_post;
+ struct HPMHookPoint *HP_clif_pStartUseSkillToId_pre;
+ struct HPMHookPoint *HP_clif_pStartUseSkillToId_post;
+ struct HPMHookPoint *HP_clif_pStopUseSkillToId_pre;
+ struct HPMHookPoint *HP_clif_pStopUseSkillToId_post;
struct HPMHookPoint *HP_clif_pUseSkillToId_homun_pre;
struct HPMHookPoint *HP_clif_pUseSkillToId_homun_post;
struct HPMHookPoint *HP_clif_pUseSkillToId_mercenary_pre;
@@ -1766,8 +2006,8 @@ struct {
struct HPMHookPoint *HP_clif_pAdopt_reply_post;
struct HPMHookPoint *HP_clif_pViewPlayerEquip_pre;
struct HPMHookPoint *HP_clif_pViewPlayerEquip_post;
- struct HPMHookPoint *HP_clif_pEquipTick_pre;
- struct HPMHookPoint *HP_clif_pEquipTick_post;
+ struct HPMHookPoint *HP_clif_p_cz_config_pre;
+ struct HPMHookPoint *HP_clif_p_cz_config_post;
struct HPMHookPoint *HP_clif_pquestStateAck_pre;
struct HPMHookPoint *HP_clif_pquestStateAck_post;
struct HPMHookPoint *HP_clif_pmercenary_action_pre;
@@ -1802,6 +2042,8 @@ struct {
struct HPMHookPoint *HP_clif_pMoveItem_post;
struct HPMHookPoint *HP_clif_pDull_pre;
struct HPMHookPoint *HP_clif_pDull_post;
+ struct HPMHookPoint *HP_clif_p_cz_blocking_play_cancel_pre;
+ struct HPMHookPoint *HP_clif_p_cz_blocking_play_cancel_post;
struct HPMHookPoint *HP_clif_pBGQueueRegister_pre;
struct HPMHookPoint *HP_clif_pBGQueueRegister_post;
struct HPMHookPoint *HP_clif_pBGQueueCheckState_pre;
@@ -1860,8 +2102,8 @@ struct {
struct HPMHookPoint *HP_clif_pNPCMarketClosed_post;
struct HPMHookPoint *HP_clif_pNPCMarketPurchase_pre;
struct HPMHookPoint *HP_clif_pNPCMarketPurchase_post;
- struct HPMHookPoint *HP_clif_add_random_options_pre;
- struct HPMHookPoint *HP_clif_add_random_options_post;
+ struct HPMHookPoint *HP_clif_add_item_options_pre;
+ struct HPMHookPoint *HP_clif_add_item_options_post;
struct HPMHookPoint *HP_clif_pHotkeyRowShift_pre;
struct HPMHookPoint *HP_clif_pHotkeyRowShift_post;
struct HPMHookPoint *HP_clif_dressroom_open_pre;
@@ -1874,6 +2116,146 @@ struct {
struct HPMHookPoint *HP_clif_pSelectCart_post;
struct HPMHookPoint *HP_clif_get_bl_name_pre;
struct HPMHookPoint *HP_clif_get_bl_name_post;
+ struct HPMHookPoint *HP_clif_pRodexOpenWriteMail_pre;
+ struct HPMHookPoint *HP_clif_pRodexOpenWriteMail_post;
+ struct HPMHookPoint *HP_clif_rodex_open_write_mail_pre;
+ struct HPMHookPoint *HP_clif_rodex_open_write_mail_post;
+ struct HPMHookPoint *HP_clif_pRodexAddItem_pre;
+ struct HPMHookPoint *HP_clif_pRodexAddItem_post;
+ struct HPMHookPoint *HP_clif_rodex_add_item_result_pre;
+ struct HPMHookPoint *HP_clif_rodex_add_item_result_post;
+ struct HPMHookPoint *HP_clif_pRodexRemoveItem_pre;
+ struct HPMHookPoint *HP_clif_pRodexRemoveItem_post;
+ struct HPMHookPoint *HP_clif_rodex_remove_item_result_pre;
+ struct HPMHookPoint *HP_clif_rodex_remove_item_result_post;
+ struct HPMHookPoint *HP_clif_pRodexSendMail_pre;
+ struct HPMHookPoint *HP_clif_pRodexSendMail_post;
+ struct HPMHookPoint *HP_clif_rodex_send_mail_result_pre;
+ struct HPMHookPoint *HP_clif_rodex_send_mail_result_post;
+ struct HPMHookPoint *HP_clif_rodex_send_maillist_pre;
+ struct HPMHookPoint *HP_clif_rodex_send_maillist_post;
+ struct HPMHookPoint *HP_clif_rodex_send_refresh_pre;
+ struct HPMHookPoint *HP_clif_rodex_send_refresh_post;
+ struct HPMHookPoint *HP_clif_rodex_send_mails_all_pre;
+ struct HPMHookPoint *HP_clif_rodex_send_mails_all_post;
+ struct HPMHookPoint *HP_clif_pRodexReadMail_pre;
+ struct HPMHookPoint *HP_clif_pRodexReadMail_post;
+ struct HPMHookPoint *HP_clif_rodex_read_mail_pre;
+ struct HPMHookPoint *HP_clif_rodex_read_mail_post;
+ struct HPMHookPoint *HP_clif_pRodexNextMaillist_pre;
+ struct HPMHookPoint *HP_clif_pRodexNextMaillist_post;
+ struct HPMHookPoint *HP_clif_pRodexCloseMailbox_pre;
+ struct HPMHookPoint *HP_clif_pRodexCloseMailbox_post;
+ struct HPMHookPoint *HP_clif_pRodexCancelWriteMail_pre;
+ struct HPMHookPoint *HP_clif_pRodexCancelWriteMail_post;
+ struct HPMHookPoint *HP_clif_pRodexOpenMailbox_pre;
+ struct HPMHookPoint *HP_clif_pRodexOpenMailbox_post;
+ struct HPMHookPoint *HP_clif_pRodexCheckName_pre;
+ struct HPMHookPoint *HP_clif_pRodexCheckName_post;
+ struct HPMHookPoint *HP_clif_rodex_checkname_result_pre;
+ struct HPMHookPoint *HP_clif_rodex_checkname_result_post;
+ struct HPMHookPoint *HP_clif_pRodexDeleteMail_pre;
+ struct HPMHookPoint *HP_clif_pRodexDeleteMail_post;
+ struct HPMHookPoint *HP_clif_rodex_delete_mail_pre;
+ struct HPMHookPoint *HP_clif_rodex_delete_mail_post;
+ struct HPMHookPoint *HP_clif_pRodexRefreshMaillist_pre;
+ struct HPMHookPoint *HP_clif_pRodexRefreshMaillist_post;
+ struct HPMHookPoint *HP_clif_pRodexRequestZeny_pre;
+ struct HPMHookPoint *HP_clif_pRodexRequestZeny_post;
+ struct HPMHookPoint *HP_clif_rodex_request_zeny_pre;
+ struct HPMHookPoint *HP_clif_rodex_request_zeny_post;
+ struct HPMHookPoint *HP_clif_pRodexRequestItems_pre;
+ struct HPMHookPoint *HP_clif_pRodexRequestItems_post;
+ struct HPMHookPoint *HP_clif_rodex_request_items_pre;
+ struct HPMHookPoint *HP_clif_rodex_request_items_post;
+ struct HPMHookPoint *HP_clif_rodex_icon_pre;
+ struct HPMHookPoint *HP_clif_rodex_icon_post;
+ struct HPMHookPoint *HP_clif_skill_scale_pre;
+ struct HPMHookPoint *HP_clif_skill_scale_post;
+ struct HPMHookPoint *HP_clif_clan_basicinfo_pre;
+ struct HPMHookPoint *HP_clif_clan_basicinfo_post;
+ struct HPMHookPoint *HP_clif_clan_onlinecount_pre;
+ struct HPMHookPoint *HP_clif_clan_onlinecount_post;
+ struct HPMHookPoint *HP_clif_clan_leave_pre;
+ struct HPMHookPoint *HP_clif_clan_leave_post;
+ struct HPMHookPoint *HP_clif_clan_message_pre;
+ struct HPMHookPoint *HP_clif_clan_message_post;
+ struct HPMHookPoint *HP_clif_pClanMessage_pre;
+ struct HPMHookPoint *HP_clif_pClanMessage_post;
+ struct HPMHookPoint *HP_clif_hat_effect_pre;
+ struct HPMHookPoint *HP_clif_hat_effect_post;
+ struct HPMHookPoint *HP_clif_hat_effect_single_pre;
+ struct HPMHookPoint *HP_clif_hat_effect_single_post;
+ struct HPMHookPoint *HP_clif_overweight_percent_pre;
+ struct HPMHookPoint *HP_clif_overweight_percent_post;
+ struct HPMHookPoint *HP_clif_pChangeDress_pre;
+ struct HPMHookPoint *HP_clif_pChangeDress_post;
+ struct HPMHookPoint *HP_clif_pAttendanceDB_pre;
+ struct HPMHookPoint *HP_clif_pAttendanceDB_post;
+ struct HPMHookPoint *HP_clif_attendancedb_libconfig_sub_pre;
+ struct HPMHookPoint *HP_clif_attendancedb_libconfig_sub_post;
+ struct HPMHookPoint *HP_clif_attendance_timediff_pre;
+ struct HPMHookPoint *HP_clif_attendance_timediff_post;
+ struct HPMHookPoint *HP_clif_attendance_getendtime_pre;
+ struct HPMHookPoint *HP_clif_attendance_getendtime_post;
+ struct HPMHookPoint *HP_clif_pOpenUIRequest_pre;
+ struct HPMHookPoint *HP_clif_pOpenUIRequest_post;
+ struct HPMHookPoint *HP_clif_open_ui_pre;
+ struct HPMHookPoint *HP_clif_open_ui_post;
+ struct HPMHookPoint *HP_clif_pAttendanceRewardRequest_pre;
+ struct HPMHookPoint *HP_clif_pAttendanceRewardRequest_post;
+ struct HPMHookPoint *HP_clif_ui_action_pre;
+ struct HPMHookPoint *HP_clif_ui_action_post;
+ struct HPMHookPoint *HP_clif_pPrivateAirshipRequest_pre;
+ struct HPMHookPoint *HP_clif_pPrivateAirshipRequest_post;
+ struct HPMHookPoint *HP_clif_PrivateAirshipResponse_pre;
+ struct HPMHookPoint *HP_clif_PrivateAirshipResponse_post;
+ struct HPMHookPoint *HP_clif_stylist_vector_init_pre;
+ struct HPMHookPoint *HP_clif_stylist_vector_init_post;
+ struct HPMHookPoint *HP_clif_stylist_vector_clear_pre;
+ struct HPMHookPoint *HP_clif_stylist_vector_clear_post;
+ struct HPMHookPoint *HP_clif_stylist_read_db_libconfig_pre;
+ struct HPMHookPoint *HP_clif_stylist_read_db_libconfig_post;
+ struct HPMHookPoint *HP_clif_stylist_read_db_libconfig_sub_pre;
+ struct HPMHookPoint *HP_clif_stylist_read_db_libconfig_sub_post;
+ struct HPMHookPoint *HP_clif_style_change_validate_requirements_pre;
+ struct HPMHookPoint *HP_clif_style_change_validate_requirements_post;
+ struct HPMHookPoint *HP_clif_stylist_send_rodexitem_pre;
+ struct HPMHookPoint *HP_clif_stylist_send_rodexitem_post;
+ struct HPMHookPoint *HP_clif_pReqStyleChange_pre;
+ struct HPMHookPoint *HP_clif_pReqStyleChange_post;
+ struct HPMHookPoint *HP_clif_pReqStyleChange2_pre;
+ struct HPMHookPoint *HP_clif_pReqStyleChange2_post;
+ struct HPMHookPoint *HP_clif_cz_req_style_change_sub_pre;
+ struct HPMHookPoint *HP_clif_cz_req_style_change_sub_post;
+ struct HPMHookPoint *HP_clif_style_change_response_pre;
+ struct HPMHookPoint *HP_clif_style_change_response_post;
+ struct HPMHookPoint *HP_clif_pPetEvolution_pre;
+ struct HPMHookPoint *HP_clif_pPetEvolution_post;
+ struct HPMHookPoint *HP_clif_petEvolutionResult_pre;
+ struct HPMHookPoint *HP_clif_petEvolutionResult_post;
+ struct HPMHookPoint *HP_clif_party_dead_notification_pre;
+ struct HPMHookPoint *HP_clif_party_dead_notification_post;
+ struct HPMHookPoint *HP_clif_pMemorialDungeonCommand_pre;
+ struct HPMHookPoint *HP_clif_pMemorialDungeonCommand_post;
+ struct HPMHookPoint *HP_clif_camera_showWindow_pre;
+ struct HPMHookPoint *HP_clif_camera_showWindow_post;
+ struct HPMHookPoint *HP_clif_camera_change_pre;
+ struct HPMHookPoint *HP_clif_camera_change_post;
+ struct HPMHookPoint *HP_clif_pCameraInfo_pre;
+ struct HPMHookPoint *HP_clif_pCameraInfo_post;
+ struct HPMHookPoint *HP_clif_item_preview_pre;
+ struct HPMHookPoint *HP_clif_item_preview_post;
+ struct HPMHookPoint *HP_clif_enchant_equipment_pre;
+ struct HPMHookPoint *HP_clif_enchant_equipment_post;
+ struct HPMHookPoint *HP_clif_pReqRemainTime_pre;
+ struct HPMHookPoint *HP_clif_pReqRemainTime_post;
+ struct HPMHookPoint *HP_clif_npc_barter_open_pre;
+ struct HPMHookPoint *HP_clif_npc_barter_open_post;
+ struct HPMHookPoint *HP_clif_pNPCBarterClosed_pre;
+ struct HPMHookPoint *HP_clif_pNPCBarterClosed_post;
+ struct HPMHookPoint *HP_clif_pNPCBarterPurchase_pre;
+ struct HPMHookPoint *HP_clif_pNPCBarterPurchase_post;
struct HPMHookPoint *HP_cmdline_init_pre;
struct HPMHookPoint *HP_cmdline_init_post;
struct HPMHookPoint *HP_cmdline_final_pre;
@@ -2368,6 +2750,8 @@ struct {
struct HPMHookPoint *HP_instance_valid_post;
struct HPMHookPoint *HP_instance_destroy_timer_pre;
struct HPMHookPoint *HP_instance_destroy_timer_post;
+ struct HPMHookPoint *HP_instance_force_destroy_pre;
+ struct HPMHookPoint *HP_instance_force_destroy_post;
struct HPMHookPoint *HP_intif_parse_pre;
struct HPMHookPoint *HP_intif_parse_post;
struct HPMHookPoint *HP_intif_create_pet_pre;
@@ -2386,6 +2770,10 @@ struct {
struct HPMHookPoint *HP_intif_saveregistry_post;
struct HPMHookPoint *HP_intif_request_registry_pre;
struct HPMHookPoint *HP_intif_request_registry_post;
+ struct HPMHookPoint *HP_intif_request_account_storage_pre;
+ struct HPMHookPoint *HP_intif_request_account_storage_post;
+ struct HPMHookPoint *HP_intif_send_account_storage_pre;
+ struct HPMHookPoint *HP_intif_send_account_storage_post;
struct HPMHookPoint *HP_intif_request_guild_storage_pre;
struct HPMHookPoint *HP_intif_request_guild_storage_post;
struct HPMHookPoint *HP_intif_send_guild_storage_pre;
@@ -2502,10 +2890,28 @@ struct {
struct HPMHookPoint *HP_intif_elemental_delete_post;
struct HPMHookPoint *HP_intif_elemental_save_pre;
struct HPMHookPoint *HP_intif_elemental_save_post;
+ struct HPMHookPoint *HP_intif_rodex_requestinbox_pre;
+ struct HPMHookPoint *HP_intif_rodex_requestinbox_post;
+ struct HPMHookPoint *HP_intif_rodex_checkhasnew_pre;
+ struct HPMHookPoint *HP_intif_rodex_checkhasnew_post;
+ struct HPMHookPoint *HP_intif_rodex_updatemail_pre;
+ struct HPMHookPoint *HP_intif_rodex_updatemail_post;
+ struct HPMHookPoint *HP_intif_rodex_sendmail_pre;
+ struct HPMHookPoint *HP_intif_rodex_sendmail_post;
+ struct HPMHookPoint *HP_intif_rodex_checkname_pre;
+ struct HPMHookPoint *HP_intif_rodex_checkname_post;
+ struct HPMHookPoint *HP_intif_clan_kickoffline_pre;
+ struct HPMHookPoint *HP_intif_clan_kickoffline_post;
+ struct HPMHookPoint *HP_intif_clan_membercount_pre;
+ struct HPMHookPoint *HP_intif_clan_membercount_post;
struct HPMHookPoint *HP_intif_request_accinfo_pre;
struct HPMHookPoint *HP_intif_request_accinfo_post;
struct HPMHookPoint *HP_intif_CheckForCharServer_pre;
struct HPMHookPoint *HP_intif_CheckForCharServer_post;
+ struct HPMHookPoint *HP_intif_achievements_request_pre;
+ struct HPMHookPoint *HP_intif_achievements_request_post;
+ struct HPMHookPoint *HP_intif_achievements_save_pre;
+ struct HPMHookPoint *HP_intif_achievements_save_post;
struct HPMHookPoint *HP_intif_pWisMessage_pre;
struct HPMHookPoint *HP_intif_pWisMessage_post;
struct HPMHookPoint *HP_intif_pWisEnd_pre;
@@ -2516,10 +2922,14 @@ struct {
struct HPMHookPoint *HP_intif_pWisToGM_post;
struct HPMHookPoint *HP_intif_pRegisters_pre;
struct HPMHookPoint *HP_intif_pRegisters_post;
+ struct HPMHookPoint *HP_intif_pAccountStorage_pre;
+ struct HPMHookPoint *HP_intif_pAccountStorage_post;
struct HPMHookPoint *HP_intif_pChangeNameOk_pre;
struct HPMHookPoint *HP_intif_pChangeNameOk_post;
struct HPMHookPoint *HP_intif_pMessageToFD_pre;
struct HPMHookPoint *HP_intif_pMessageToFD_post;
+ struct HPMHookPoint *HP_intif_pAccountStorageSaveAck_pre;
+ struct HPMHookPoint *HP_intif_pAccountStorageSaveAck_post;
struct HPMHookPoint *HP_intif_pLoadGuildStorage_pre;
struct HPMHookPoint *HP_intif_pLoadGuildStorage_post;
struct HPMHookPoint *HP_intif_pSaveGuildStorage_pre;
@@ -2630,6 +3040,18 @@ struct {
struct HPMHookPoint *HP_intif_pSaveHomunculusOk_post;
struct HPMHookPoint *HP_intif_pDeleteHomunculusOk_pre;
struct HPMHookPoint *HP_intif_pDeleteHomunculusOk_post;
+ struct HPMHookPoint *HP_intif_pRequestRodexOpenInbox_pre;
+ struct HPMHookPoint *HP_intif_pRequestRodexOpenInbox_post;
+ struct HPMHookPoint *HP_intif_pRodexHasNew_pre;
+ struct HPMHookPoint *HP_intif_pRodexHasNew_post;
+ struct HPMHookPoint *HP_intif_pRodexSendMail_pre;
+ struct HPMHookPoint *HP_intif_pRodexSendMail_post;
+ struct HPMHookPoint *HP_intif_pRodexCheckName_pre;
+ struct HPMHookPoint *HP_intif_pRodexCheckName_post;
+ struct HPMHookPoint *HP_intif_pRecvClanMemberAction_pre;
+ struct HPMHookPoint *HP_intif_pRecvClanMemberAction_post;
+ struct HPMHookPoint *HP_intif_pAchievementsLoad_pre;
+ struct HPMHookPoint *HP_intif_pAchievementsLoad_post;
struct HPMHookPoint *HP_ircbot_init_pre;
struct HPMHookPoint *HP_ircbot_init_post;
struct HPMHookPoint *HP_ircbot_final_pre;
@@ -2682,6 +3104,8 @@ struct {
struct HPMHookPoint *HP_itemdb_read_chains_post;
struct HPMHookPoint *HP_itemdb_read_packages_pre;
struct HPMHookPoint *HP_itemdb_read_packages_post;
+ struct HPMHookPoint *HP_itemdb_read_options_pre;
+ struct HPMHookPoint *HP_itemdb_read_options_post;
struct HPMHookPoint *HP_itemdb_write_cached_packages_pre;
struct HPMHookPoint *HP_itemdb_write_cached_packages_post;
struct HPMHookPoint *HP_itemdb_read_cached_packages_pre;
@@ -2698,6 +3122,8 @@ struct {
struct HPMHookPoint *HP_itemdb_search_post;
struct HPMHookPoint *HP_itemdb_exists_pre;
struct HPMHookPoint *HP_itemdb_exists_post;
+ struct HPMHookPoint *HP_itemdb_option_exists_pre;
+ struct HPMHookPoint *HP_itemdb_option_exists_post;
struct HPMHookPoint *HP_itemdb_in_group_pre;
struct HPMHookPoint *HP_itemdb_in_group_post;
struct HPMHookPoint *HP_itemdb_group_item_pre;
@@ -2762,6 +3188,8 @@ struct {
struct HPMHookPoint *HP_itemdb_gendercheck_post;
struct HPMHookPoint *HP_itemdb_validate_entry_pre;
struct HPMHookPoint *HP_itemdb_validate_entry_post;
+ struct HPMHookPoint *HP_itemdb_readdb_options_additional_fields_pre;
+ struct HPMHookPoint *HP_itemdb_readdb_options_additional_fields_post;
struct HPMHookPoint *HP_itemdb_readdb_additional_fields_pre;
struct HPMHookPoint *HP_itemdb_readdb_additional_fields_post;
struct HPMHookPoint *HP_itemdb_readdb_job_sub_pre;
@@ -2778,6 +3206,8 @@ struct {
struct HPMHookPoint *HP_itemdb_destroy_item_data_post;
struct HPMHookPoint *HP_itemdb_final_sub_pre;
struct HPMHookPoint *HP_itemdb_final_sub_post;
+ struct HPMHookPoint *HP_itemdb_options_final_sub_pre;
+ struct HPMHookPoint *HP_itemdb_options_final_sub_post;
struct HPMHookPoint *HP_itemdb_clear_pre;
struct HPMHookPoint *HP_itemdb_clear_post;
struct HPMHookPoint *HP_itemdb_id2combo_pre;
@@ -2786,6 +3216,10 @@ struct {
struct HPMHookPoint *HP_itemdb_is_item_usable_post;
struct HPMHookPoint *HP_itemdb_lookup_const_pre;
struct HPMHookPoint *HP_itemdb_lookup_const_post;
+ struct HPMHookPoint *HP_itemdb_lookup_const_mask_pre;
+ struct HPMHookPoint *HP_itemdb_lookup_const_mask_post;
+ struct HPMHookPoint *HP_itemdb_addname_sub_pre;
+ struct HPMHookPoint *HP_itemdb_addname_sub_post;
struct HPMHookPoint *HP_libconfig_read_pre;
struct HPMHookPoint *HP_libconfig_read_post;
struct HPMHookPoint *HP_libconfig_write_pre;
@@ -2988,12 +3422,16 @@ struct {
struct HPMHookPoint *HP_map_zone_init_post;
struct HPMHookPoint *HP_map_zone_remove_pre;
struct HPMHookPoint *HP_map_zone_remove_post;
+ struct HPMHookPoint *HP_map_zone_remove_all_pre;
+ struct HPMHookPoint *HP_map_zone_remove_all_post;
struct HPMHookPoint *HP_map_zone_apply_pre;
struct HPMHookPoint *HP_map_zone_apply_post;
struct HPMHookPoint *HP_map_zone_change_pre;
struct HPMHookPoint *HP_map_zone_change_post;
struct HPMHookPoint *HP_map_zone_change2_pre;
struct HPMHookPoint *HP_map_zone_change2_post;
+ struct HPMHookPoint *HP_map_zone_reload_pre;
+ struct HPMHookPoint *HP_map_zone_reload_post;
struct HPMHookPoint *HP_map_getcell_pre;
struct HPMHookPoint *HP_map_getcell_post;
struct HPMHookPoint *HP_map_setgatcell_pre;
@@ -3190,10 +3628,10 @@ struct {
struct HPMHookPoint *HP_map_create_map_data_other_server_post;
struct HPMHookPoint *HP_map_eraseallipport_sub_pre;
struct HPMHookPoint *HP_map_eraseallipport_sub_post;
- struct HPMHookPoint *HP_map_init_mapcache_pre;
- struct HPMHookPoint *HP_map_init_mapcache_post;
struct HPMHookPoint *HP_map_readfromcache_pre;
struct HPMHookPoint *HP_map_readfromcache_post;
+ struct HPMHookPoint *HP_map_readfromcache_v1_pre;
+ struct HPMHookPoint *HP_map_readfromcache_v1_post;
struct HPMHookPoint *HP_map_addmap_pre;
struct HPMHookPoint *HP_map_addmap_post;
struct HPMHookPoint *HP_map_delmapid_pre;
@@ -3384,6 +3822,10 @@ struct {
struct HPMHookPoint *HP_mob_db_searchname_post;
struct HPMHookPoint *HP_mob_db_searchname_array_sub_pre;
struct HPMHookPoint *HP_mob_db_searchname_array_sub_post;
+ struct HPMHookPoint *HP_mob_mvptomb_spawn_delayed_pre;
+ struct HPMHookPoint *HP_mob_mvptomb_spawn_delayed_post;
+ struct HPMHookPoint *HP_mob_mvptomb_delayspawn_pre;
+ struct HPMHookPoint *HP_mob_mvptomb_delayspawn_post;
struct HPMHookPoint *HP_mob_mvptomb_create_pre;
struct HPMHookPoint *HP_mob_mvptomb_create_post;
struct HPMHookPoint *HP_mob_mvptomb_destroy_pre;
@@ -3556,8 +3998,6 @@ struct {
struct HPMHookPoint *HP_mob_parse_row_chatdb_post;
struct HPMHookPoint *HP_mob_readchatdb_pre;
struct HPMHookPoint *HP_mob_readchatdb_post;
- struct HPMHookPoint *HP_mob_parse_row_mobskilldb_pre;
- struct HPMHookPoint *HP_mob_parse_row_mobskilldb_post;
struct HPMHookPoint *HP_mob_readskilldb_pre;
struct HPMHookPoint *HP_mob_readskilldb_post;
struct HPMHookPoint *HP_mob_readdb_race2_pre;
@@ -3568,8 +4008,20 @@ struct {
struct HPMHookPoint *HP_mob_load_post;
struct HPMHookPoint *HP_mob_clear_spawninfo_pre;
struct HPMHookPoint *HP_mob_clear_spawninfo_post;
+ struct HPMHookPoint *HP_mob_get_item_drop_ratio_pre;
+ struct HPMHookPoint *HP_mob_get_item_drop_ratio_post;
+ struct HPMHookPoint *HP_mob_set_item_drop_ratio_pre;
+ struct HPMHookPoint *HP_mob_set_item_drop_ratio_post;
+ struct HPMHookPoint *HP_mob_final_ratio_sub_pre;
+ struct HPMHookPoint *HP_mob_final_ratio_sub_post;
struct HPMHookPoint *HP_mob_destroy_mob_db_pre;
struct HPMHookPoint *HP_mob_destroy_mob_db_post;
+ struct HPMHookPoint *HP_mob_skill_db_libconfig_pre;
+ struct HPMHookPoint *HP_mob_skill_db_libconfig_post;
+ struct HPMHookPoint *HP_mob_skill_db_libconfig_sub_pre;
+ struct HPMHookPoint *HP_mob_skill_db_libconfig_sub_post;
+ struct HPMHookPoint *HP_mob_skill_db_libconfig_sub_skill_pre;
+ struct HPMHookPoint *HP_mob_skill_db_libconfig_sub_skill_post;
struct HPMHookPoint *HP_mutex_create_pre;
struct HPMHookPoint *HP_mutex_create_post;
struct HPMHookPoint *HP_mutex_destroy_pre;
@@ -3814,6 +4266,8 @@ struct {
struct HPMHookPoint *HP_npc_trader_update_post;
struct HPMHookPoint *HP_npc_market_buylist_pre;
struct HPMHookPoint *HP_npc_market_buylist_post;
+ struct HPMHookPoint *HP_npc_barter_buylist_pre;
+ struct HPMHookPoint *HP_npc_barter_buylist_post;
struct HPMHookPoint *HP_npc_trader_open_pre;
struct HPMHookPoint *HP_npc_trader_open_post;
struct HPMHookPoint *HP_npc_market_fromsql_pre;
@@ -3824,12 +4278,30 @@ struct {
struct HPMHookPoint *HP_npc_market_delfromsql_post;
struct HPMHookPoint *HP_npc_market_delfromsql_sub_pre;
struct HPMHookPoint *HP_npc_market_delfromsql_sub_post;
+ struct HPMHookPoint *HP_npc_barter_fromsql_pre;
+ struct HPMHookPoint *HP_npc_barter_fromsql_post;
+ struct HPMHookPoint *HP_npc_barter_tosql_pre;
+ struct HPMHookPoint *HP_npc_barter_tosql_post;
+ struct HPMHookPoint *HP_npc_barter_delfromsql_pre;
+ struct HPMHookPoint *HP_npc_barter_delfromsql_post;
+ struct HPMHookPoint *HP_npc_barter_delfromsql_sub_pre;
+ struct HPMHookPoint *HP_npc_barter_delfromsql_sub_post;
struct HPMHookPoint *HP_npc_db_checkid_pre;
struct HPMHookPoint *HP_npc_db_checkid_post;
+ struct HPMHookPoint *HP_npc_refresh_pre;
+ struct HPMHookPoint *HP_npc_refresh_post;
struct HPMHookPoint *HP_npc_secure_timeout_timer_pre;
struct HPMHookPoint *HP_npc_secure_timeout_timer_post;
struct HPMHookPoint *HP_nullpo_assert_report_pre;
struct HPMHookPoint *HP_nullpo_assert_report_post;
+ struct HPMHookPoint *HP_packets_init_pre;
+ struct HPMHookPoint *HP_packets_init_post;
+ struct HPMHookPoint *HP_packets_final_pre;
+ struct HPMHookPoint *HP_packets_final_post;
+ struct HPMHookPoint *HP_packets_addLens_pre;
+ struct HPMHookPoint *HP_packets_addLens_post;
+ struct HPMHookPoint *HP_packets_addLen_pre;
+ struct HPMHookPoint *HP_packets_addLen_post;
struct HPMHookPoint *HP_party_init_pre;
struct HPMHookPoint *HP_party_init_post;
struct HPMHookPoint *HP_party_final_pre;
@@ -4000,6 +4472,8 @@ struct {
struct HPMHookPoint *HP_pc_isequip_post;
struct HPMHookPoint *HP_pc_equippoint_pre;
struct HPMHookPoint *HP_pc_equippoint_post;
+ struct HPMHookPoint *HP_pc_item_equippoint_pre;
+ struct HPMHookPoint *HP_pc_item_equippoint_post;
struct HPMHookPoint *HP_pc_setinventorydata_pre;
struct HPMHookPoint *HP_pc_setinventorydata_post;
struct HPMHookPoint *HP_pc_checkskill_pre;
@@ -4012,6 +4486,10 @@ struct {
struct HPMHookPoint *HP_pc_checkequip_post;
struct HPMHookPoint *HP_pc_calc_skilltree_pre;
struct HPMHookPoint *HP_pc_calc_skilltree_post;
+ struct HPMHookPoint *HP_pc_calc_skilltree_clear_pre;
+ struct HPMHookPoint *HP_pc_calc_skilltree_clear_post;
+ struct HPMHookPoint *HP_pc_calc_skilltree_bonus_pre;
+ struct HPMHookPoint *HP_pc_calc_skilltree_bonus_post;
struct HPMHookPoint *HP_pc_calc_skilltree_normalize_job_pre;
struct HPMHookPoint *HP_pc_calc_skilltree_normalize_job_post;
struct HPMHookPoint *HP_pc_clean_skilltree_pre;
@@ -4108,6 +4586,8 @@ struct {
struct HPMHookPoint *HP_pc_maxjoblv_post;
struct HPMHookPoint *HP_pc_checkbaselevelup_pre;
struct HPMHookPoint *HP_pc_checkbaselevelup_post;
+ struct HPMHookPoint *HP_pc_checkbaselevelup_sc_pre;
+ struct HPMHookPoint *HP_pc_checkbaselevelup_sc_post;
struct HPMHookPoint *HP_pc_checkjoblevelup_pre;
struct HPMHookPoint *HP_pc_checkjoblevelup_post;
struct HPMHookPoint *HP_pc_gainexp_pre;
@@ -4140,6 +4620,8 @@ struct {
struct HPMHookPoint *HP_pc_resetstate_post;
struct HPMHookPoint *HP_pc_resetskill_pre;
struct HPMHookPoint *HP_pc_resetskill_post;
+ struct HPMHookPoint *HP_pc_resetskill_job_pre;
+ struct HPMHookPoint *HP_pc_resetskill_job_post;
struct HPMHookPoint *HP_pc_resetfeel_pre;
struct HPMHookPoint *HP_pc_resetfeel_post;
struct HPMHookPoint *HP_pc_resethate_pre;
@@ -4260,8 +4742,12 @@ struct {
struct HPMHookPoint *HP_pc_delinvincibletimer_post;
struct HPMHookPoint *HP_pc_addspiritball_pre;
struct HPMHookPoint *HP_pc_addspiritball_post;
+ struct HPMHookPoint *HP_pc_addspiritball_sub_pre;
+ struct HPMHookPoint *HP_pc_addspiritball_sub_post;
struct HPMHookPoint *HP_pc_delspiritball_pre;
struct HPMHookPoint *HP_pc_delspiritball_post;
+ struct HPMHookPoint *HP_pc_delspiritball_sub_pre;
+ struct HPMHookPoint *HP_pc_delspiritball_sub_post;
struct HPMHookPoint *HP_pc_getmaxspiritball_pre;
struct HPMHookPoint *HP_pc_getmaxspiritball_post;
struct HPMHookPoint *HP_pc_addfame_pre;
@@ -4274,6 +4760,12 @@ struct {
struct HPMHookPoint *HP_pc_set_hate_mob_post;
struct HPMHookPoint *HP_pc_readdb_pre;
struct HPMHookPoint *HP_pc_readdb_post;
+ struct HPMHookPoint *HP_pc_read_exp_db_pre;
+ struct HPMHookPoint *HP_pc_read_exp_db_post;
+ struct HPMHookPoint *HP_pc_read_exp_db_sub_pre;
+ struct HPMHookPoint *HP_pc_read_exp_db_sub_post;
+ struct HPMHookPoint *HP_pc_read_exp_db_sub_class_pre;
+ struct HPMHookPoint *HP_pc_read_exp_db_sub_class_post;
struct HPMHookPoint *HP_pc_map_day_timer_pre;
struct HPMHookPoint *HP_pc_map_day_timer_post;
struct HPMHookPoint *HP_pc_map_night_timer_pre;
@@ -4350,6 +4842,8 @@ struct {
struct HPMHookPoint *HP_pc_follow_timer_post;
struct HPMHookPoint *HP_pc_read_skill_tree_pre;
struct HPMHookPoint *HP_pc_read_skill_tree_post;
+ struct HPMHookPoint *HP_pc_read_skill_job_skip_pre;
+ struct HPMHookPoint *HP_pc_read_skill_job_skip_post;
struct HPMHookPoint *HP_pc_clear_skill_tree_pre;
struct HPMHookPoint *HP_pc_clear_skill_tree_post;
struct HPMHookPoint *HP_pc_isUseitem_pre;
@@ -4382,6 +4876,14 @@ struct {
struct HPMHookPoint *HP_pc_db_checkid_post;
struct HPMHookPoint *HP_pc_validate_levels_pre;
struct HPMHookPoint *HP_pc_validate_levels_post;
+ struct HPMHookPoint *HP_pc_update_job_and_level_pre;
+ struct HPMHookPoint *HP_pc_update_job_and_level_post;
+ struct HPMHookPoint *HP_pc_clear_exp_groups_pre;
+ struct HPMHookPoint *HP_pc_clear_exp_groups_post;
+ struct HPMHookPoint *HP_pc_init_exp_groups_pre;
+ struct HPMHookPoint *HP_pc_init_exp_groups_post;
+ struct HPMHookPoint *HP_pc_job_is_dummy_pre;
+ struct HPMHookPoint *HP_pc_job_is_dummy_post;
struct HPMHookPoint *HP_pc_autotrade_load_pre;
struct HPMHookPoint *HP_pc_autotrade_load_post;
struct HPMHookPoint *HP_pc_autotrade_update_pre;
@@ -4406,6 +4908,12 @@ struct {
struct HPMHookPoint *HP_pc_check_supernovice_call_post;
struct HPMHookPoint *HP_pc_check_basicskill_pre;
struct HPMHookPoint *HP_pc_check_basicskill_post;
+ struct HPMHookPoint *HP_pc_isDeathPenaltyJob_pre;
+ struct HPMHookPoint *HP_pc_isDeathPenaltyJob_post;
+ struct HPMHookPoint *HP_pc_has_second_costume_pre;
+ struct HPMHookPoint *HP_pc_has_second_costume_post;
+ struct HPMHookPoint *HP_pc_expandInventory_pre;
+ struct HPMHookPoint *HP_pc_expandInventory_post;
struct HPMHookPoint *HP_libpcre_compile_pre;
struct HPMHookPoint *HP_libpcre_compile_post;
struct HPMHookPoint *HP_libpcre_study_pre;
@@ -4498,6 +5006,16 @@ struct {
struct HPMHookPoint *HP_pet_skill_support_timer_post;
struct HPMHookPoint *HP_pet_read_db_pre;
struct HPMHookPoint *HP_pet_read_db_post;
+ struct HPMHookPoint *HP_pet_read_db_libconfig_pre;
+ struct HPMHookPoint *HP_pet_read_db_libconfig_post;
+ struct HPMHookPoint *HP_pet_read_db_sub_pre;
+ struct HPMHookPoint *HP_pet_read_db_sub_post;
+ struct HPMHookPoint *HP_pet_read_db_sub_intimacy_pre;
+ struct HPMHookPoint *HP_pet_read_db_sub_intimacy_post;
+ struct HPMHookPoint *HP_pet_read_db_clear_pre;
+ struct HPMHookPoint *HP_pet_read_db_clear_post;
+ struct HPMHookPoint *HP_pet_read_db_sub_evolution_pre;
+ struct HPMHookPoint *HP_pet_read_db_sub_evolution_post;
struct HPMHookPoint *HP_quest_init_pre;
struct HPMHookPoint *HP_quest_init_post;
struct HPMHookPoint *HP_quest_final_pre;
@@ -4528,6 +5046,32 @@ struct {
struct HPMHookPoint *HP_quest_read_db_post;
struct HPMHookPoint *HP_quest_read_db_sub_pre;
struct HPMHookPoint *HP_quest_read_db_sub_post;
+ struct HPMHookPoint *HP_quest_questinfo_validate_icon_pre;
+ struct HPMHookPoint *HP_quest_questinfo_validate_icon_post;
+ struct HPMHookPoint *HP_quest_questinfo_refresh_pre;
+ struct HPMHookPoint *HP_quest_questinfo_refresh_post;
+ struct HPMHookPoint *HP_quest_questinfo_validate_pre;
+ struct HPMHookPoint *HP_quest_questinfo_validate_post;
+ struct HPMHookPoint *HP_quest_questinfo_validate_job_pre;
+ struct HPMHookPoint *HP_quest_questinfo_validate_job_post;
+ struct HPMHookPoint *HP_quest_questinfo_validate_sex_pre;
+ struct HPMHookPoint *HP_quest_questinfo_validate_sex_post;
+ struct HPMHookPoint *HP_quest_questinfo_validate_baselevel_pre;
+ struct HPMHookPoint *HP_quest_questinfo_validate_baselevel_post;
+ struct HPMHookPoint *HP_quest_questinfo_validate_joblevel_pre;
+ struct HPMHookPoint *HP_quest_questinfo_validate_joblevel_post;
+ struct HPMHookPoint *HP_quest_questinfo_validate_items_pre;
+ struct HPMHookPoint *HP_quest_questinfo_validate_items_post;
+ struct HPMHookPoint *HP_quest_questinfo_validate_homunculus_level_pre;
+ struct HPMHookPoint *HP_quest_questinfo_validate_homunculus_level_post;
+ struct HPMHookPoint *HP_quest_questinfo_validate_homunculus_type_pre;
+ struct HPMHookPoint *HP_quest_questinfo_validate_homunculus_type_post;
+ struct HPMHookPoint *HP_quest_questinfo_validate_quests_pre;
+ struct HPMHookPoint *HP_quest_questinfo_validate_quests_post;
+ struct HPMHookPoint *HP_quest_questinfo_validate_mercenary_class_pre;
+ struct HPMHookPoint *HP_quest_questinfo_validate_mercenary_class_post;
+ struct HPMHookPoint *HP_quest_questinfo_vector_clear_pre;
+ struct HPMHookPoint *HP_quest_questinfo_vector_clear_post;
struct HPMHookPoint *HP_rnd_init_pre;
struct HPMHookPoint *HP_rnd_init_post;
struct HPMHookPoint *HP_rnd_final_pre;
@@ -4544,6 +5088,40 @@ struct {
struct HPMHookPoint *HP_rnd_uniform_post;
struct HPMHookPoint *HP_rnd_uniform53_pre;
struct HPMHookPoint *HP_rnd_uniform53_post;
+ struct HPMHookPoint *HP_rodex_init_pre;
+ struct HPMHookPoint *HP_rodex_init_post;
+ struct HPMHookPoint *HP_rodex_final_pre;
+ struct HPMHookPoint *HP_rodex_final_post;
+ struct HPMHookPoint *HP_rodex_isenabled_pre;
+ struct HPMHookPoint *HP_rodex_isenabled_post;
+ struct HPMHookPoint *HP_rodex_open_pre;
+ struct HPMHookPoint *HP_rodex_open_post;
+ struct HPMHookPoint *HP_rodex_next_page_pre;
+ struct HPMHookPoint *HP_rodex_next_page_post;
+ struct HPMHookPoint *HP_rodex_refresh_pre;
+ struct HPMHookPoint *HP_rodex_refresh_post;
+ struct HPMHookPoint *HP_rodex_add_item_pre;
+ struct HPMHookPoint *HP_rodex_add_item_post;
+ struct HPMHookPoint *HP_rodex_remove_item_pre;
+ struct HPMHookPoint *HP_rodex_remove_item_post;
+ struct HPMHookPoint *HP_rodex_check_player_pre;
+ struct HPMHookPoint *HP_rodex_check_player_post;
+ struct HPMHookPoint *HP_rodex_send_mail_pre;
+ struct HPMHookPoint *HP_rodex_send_mail_post;
+ struct HPMHookPoint *HP_rodex_send_mail_result_pre;
+ struct HPMHookPoint *HP_rodex_send_mail_result_post;
+ struct HPMHookPoint *HP_rodex_get_mail_pre;
+ struct HPMHookPoint *HP_rodex_get_mail_post;
+ struct HPMHookPoint *HP_rodex_read_mail_pre;
+ struct HPMHookPoint *HP_rodex_read_mail_post;
+ struct HPMHookPoint *HP_rodex_get_zeny_pre;
+ struct HPMHookPoint *HP_rodex_get_zeny_post;
+ struct HPMHookPoint *HP_rodex_get_items_pre;
+ struct HPMHookPoint *HP_rodex_get_items_post;
+ struct HPMHookPoint *HP_rodex_delete_mail_pre;
+ struct HPMHookPoint *HP_rodex_delete_mail_post;
+ struct HPMHookPoint *HP_rodex_clean_pre;
+ struct HPMHookPoint *HP_rodex_clean_post;
struct HPMHookPoint *HP_script_init_pre;
struct HPMHookPoint *HP_script_init_post;
struct HPMHookPoint *HP_script_final_pre;
@@ -4586,6 +5164,8 @@ struct {
struct HPMHookPoint *HP_script_get_val_post;
struct HPMHookPoint *HP_script_get_val_ref_str_pre;
struct HPMHookPoint *HP_script_get_val_ref_str_post;
+ struct HPMHookPoint *HP_script_get_val_pc_ref_str_pre;
+ struct HPMHookPoint *HP_script_get_val_pc_ref_str_post;
struct HPMHookPoint *HP_script_get_val_scope_str_pre;
struct HPMHookPoint *HP_script_get_val_scope_str_post;
struct HPMHookPoint *HP_script_get_val_npc_str_pre;
@@ -4594,6 +5174,8 @@ struct {
struct HPMHookPoint *HP_script_get_val_instance_str_post;
struct HPMHookPoint *HP_script_get_val_ref_num_pre;
struct HPMHookPoint *HP_script_get_val_ref_num_post;
+ struct HPMHookPoint *HP_script_get_val_pc_ref_num_pre;
+ struct HPMHookPoint *HP_script_get_val_pc_ref_num_post;
struct HPMHookPoint *HP_script_get_val_scope_num_pre;
struct HPMHookPoint *HP_script_get_val_scope_num_post;
struct HPMHookPoint *HP_script_get_val_npc_num_pre;
@@ -4652,6 +5234,8 @@ struct {
struct HPMHookPoint *HP_script_config_read_post;
struct HPMHookPoint *HP_script_add_str_pre;
struct HPMHookPoint *HP_script_add_str_post;
+ struct HPMHookPoint *HP_script_add_variable_pre;
+ struct HPMHookPoint *HP_script_add_variable_post;
struct HPMHookPoint *HP_script_get_str_pre;
struct HPMHookPoint *HP_script_get_str_post;
struct HPMHookPoint *HP_script_search_str_pre;
@@ -4748,6 +5332,8 @@ struct {
struct HPMHookPoint *HP_script_set_reg_post;
struct HPMHookPoint *HP_script_set_reg_ref_str_pre;
struct HPMHookPoint *HP_script_set_reg_ref_str_post;
+ struct HPMHookPoint *HP_script_set_reg_pc_ref_str_pre;
+ struct HPMHookPoint *HP_script_set_reg_pc_ref_str_post;
struct HPMHookPoint *HP_script_set_reg_scope_str_pre;
struct HPMHookPoint *HP_script_set_reg_scope_str_post;
struct HPMHookPoint *HP_script_set_reg_npc_str_pre;
@@ -4756,6 +5342,8 @@ struct {
struct HPMHookPoint *HP_script_set_reg_instance_str_post;
struct HPMHookPoint *HP_script_set_reg_ref_num_pre;
struct HPMHookPoint *HP_script_set_reg_ref_num_post;
+ struct HPMHookPoint *HP_script_set_reg_pc_ref_num_pre;
+ struct HPMHookPoint *HP_script_set_reg_pc_ref_num_post;
struct HPMHookPoint *HP_script_set_reg_scope_num_pre;
struct HPMHookPoint *HP_script_set_reg_scope_num_post;
struct HPMHookPoint *HP_script_set_reg_npc_num_pre;
@@ -4786,6 +5374,12 @@ struct {
struct HPMHookPoint *HP_script_add_autobonus_post;
struct HPMHookPoint *HP_script_menu_countoptions_pre;
struct HPMHookPoint *HP_script_menu_countoptions_post;
+ struct HPMHookPoint *HP_script_buildin_recovery_sub_pre;
+ struct HPMHookPoint *HP_script_buildin_recovery_sub_post;
+ struct HPMHookPoint *HP_script_buildin_recovery_pc_sub_pre;
+ struct HPMHookPoint *HP_script_buildin_recovery_pc_sub_post;
+ struct HPMHookPoint *HP_script_buildin_recovery_bl_sub_pre;
+ struct HPMHookPoint *HP_script_buildin_recovery_bl_sub_post;
struct HPMHookPoint *HP_script_buildin_areawarp_sub_pre;
struct HPMHookPoint *HP_script_buildin_areawarp_sub_post;
struct HPMHookPoint *HP_script_buildin_areapercentheal_sub_pre;
@@ -4834,6 +5428,8 @@ struct {
struct HPMHookPoint *HP_script_cleanfloor_sub_post;
struct HPMHookPoint *HP_script_run_func_pre;
struct HPMHookPoint *HP_script_run_func_post;
+ struct HPMHookPoint *HP_script_sprintf_helper_pre;
+ struct HPMHookPoint *HP_script_sprintf_helper_post;
struct HPMHookPoint *HP_script_getfuncname_pre;
struct HPMHookPoint *HP_script_getfuncname_post;
struct HPMHookPoint *HP_script_calc_hash_ci_pre;
@@ -4956,10 +5552,18 @@ struct {
struct HPMHookPoint *HP_skill_get_mhp_post;
struct HPMHookPoint *HP_skill_get_sp_pre;
struct HPMHookPoint *HP_skill_get_sp_post;
+ struct HPMHookPoint *HP_skill_get_hp_rate_pre;
+ struct HPMHookPoint *HP_skill_get_hp_rate_post;
+ struct HPMHookPoint *HP_skill_get_sp_rate_pre;
+ struct HPMHookPoint *HP_skill_get_sp_rate_post;
struct HPMHookPoint *HP_skill_get_state_pre;
struct HPMHookPoint *HP_skill_get_state_post;
struct HPMHookPoint *HP_skill_get_spiritball_pre;
struct HPMHookPoint *HP_skill_get_spiritball_post;
+ struct HPMHookPoint *HP_skill_get_itemid_pre;
+ struct HPMHookPoint *HP_skill_get_itemid_post;
+ struct HPMHookPoint *HP_skill_get_itemqty_pre;
+ struct HPMHookPoint *HP_skill_get_itemqty_post;
struct HPMHookPoint *HP_skill_get_zeny_pre;
struct HPMHookPoint *HP_skill_get_zeny_post;
struct HPMHookPoint *HP_skill_get_num_pre;
@@ -5016,8 +5620,6 @@ struct {
struct HPMHookPoint *HP_skill_get_name_post;
struct HPMHookPoint *HP_skill_get_desc_pre;
struct HPMHookPoint *HP_skill_get_desc_post;
- struct HPMHookPoint *HP_skill_chk_pre;
- struct HPMHookPoint *HP_skill_chk_post;
struct HPMHookPoint *HP_skill_get_casttype_pre;
struct HPMHookPoint *HP_skill_get_casttype_post;
struct HPMHookPoint *HP_skill_get_casttype2_pre;
@@ -5174,6 +5776,8 @@ struct {
struct HPMHookPoint *HP_skill_cell_overlap_post;
struct HPMHookPoint *HP_skill_timerskill_pre;
struct HPMHookPoint *HP_skill_timerskill_post;
+ struct HPMHookPoint *HP_skill_trap_do_splash_pre;
+ struct HPMHookPoint *HP_skill_trap_do_splash_post;
struct HPMHookPoint *HP_skill_trap_splash_pre;
struct HPMHookPoint *HP_skill_trap_splash_post;
struct HPMHookPoint *HP_skill_check_condition_mercenary_pre;
@@ -5296,8 +5900,6 @@ struct {
struct HPMHookPoint *HP_skill_parse_row_spellbookdb_post;
struct HPMHookPoint *HP_skill_parse_row_magicmushroomdb_pre;
struct HPMHookPoint *HP_skill_parse_row_magicmushroomdb_post;
- struct HPMHookPoint *HP_skill_parse_row_reproducedb_pre;
- struct HPMHookPoint *HP_skill_parse_row_reproducedb_post;
struct HPMHookPoint *HP_skill_parse_row_improvisedb_pre;
struct HPMHookPoint *HP_skill_parse_row_improvisedb_post;
struct HPMHookPoint *HP_skill_parse_row_changematerialdb_pre;
@@ -5422,10 +6024,14 @@ struct {
struct HPMHookPoint *HP_sockt_realloc_writefifo_post;
struct HPMHookPoint *HP_sockt_wfifoset_pre;
struct HPMHookPoint *HP_sockt_wfifoset_post;
+ struct HPMHookPoint *HP_sockt_wfifohead_pre;
+ struct HPMHookPoint *HP_sockt_wfifohead_post;
struct HPMHookPoint *HP_sockt_rfifoskip_pre;
struct HPMHookPoint *HP_sockt_rfifoskip_post;
struct HPMHookPoint *HP_sockt_close_pre;
struct HPMHookPoint *HP_sockt_close_post;
+ struct HPMHookPoint *HP_sockt_validateWfifo_pre;
+ struct HPMHookPoint *HP_sockt_validateWfifo_post;
struct HPMHookPoint *HP_sockt_session_is_valid_pre;
struct HPMHookPoint *HP_sockt_session_is_valid_post;
struct HPMHookPoint *HP_sockt_session_is_active_pre;
@@ -5602,6 +6208,22 @@ struct {
struct HPMHookPoint *HP_status_change_start_post;
struct HPMHookPoint *HP_status_change_end__pre;
struct HPMHookPoint *HP_status_change_end__post;
+ struct HPMHookPoint *HP_status_is_immune_to_status_pre;
+ struct HPMHookPoint *HP_status_is_immune_to_status_post;
+ struct HPMHookPoint *HP_status_is_boss_resist_sc_pre;
+ struct HPMHookPoint *HP_status_is_boss_resist_sc_post;
+ struct HPMHookPoint *HP_status_end_sc_before_start_pre;
+ struct HPMHookPoint *HP_status_end_sc_before_start_post;
+ struct HPMHookPoint *HP_status_change_start_stop_action_pre;
+ struct HPMHookPoint *HP_status_change_start_stop_action_post;
+ struct HPMHookPoint *HP_status_change_start_set_option_pre;
+ struct HPMHookPoint *HP_status_change_start_set_option_post;
+ struct HPMHookPoint *HP_status_get_val_flag_pre;
+ struct HPMHookPoint *HP_status_get_val_flag_post;
+ struct HPMHookPoint *HP_status_change_start_display_pre;
+ struct HPMHookPoint *HP_status_change_start_display_post;
+ struct HPMHookPoint *HP_status_change_start_unknown_sc_pre;
+ struct HPMHookPoint *HP_status_change_start_unknown_sc_post;
struct HPMHookPoint *HP_status_kaahi_heal_timer_pre;
struct HPMHookPoint *HP_status_kaahi_heal_timer_post;
struct HPMHookPoint *HP_status_change_timer_pre;
@@ -5622,6 +6244,8 @@ struct {
struct HPMHookPoint *HP_status_calc_pc__post;
struct HPMHookPoint *HP_status_calc_pc_additional_pre;
struct HPMHookPoint *HP_status_calc_pc_additional_post;
+ struct HPMHookPoint *HP_status_calc_pc_recover_hp_pre;
+ struct HPMHookPoint *HP_status_calc_pc_recover_hp_post;
struct HPMHookPoint *HP_status_calc_homunculus__pre;
struct HPMHookPoint *HP_status_calc_homunculus__post;
struct HPMHookPoint *HP_status_calc_mercenary__pre;
@@ -5676,6 +6300,10 @@ struct {
struct HPMHookPoint *HP_status_get_base_maxhp_post;
struct HPMHookPoint *HP_status_get_base_maxsp_pre;
struct HPMHookPoint *HP_status_get_base_maxsp_post;
+ struct HPMHookPoint *HP_status_get_restart_hp_pre;
+ struct HPMHookPoint *HP_status_get_restart_hp_post;
+ struct HPMHookPoint *HP_status_get_restart_sp_pre;
+ struct HPMHookPoint *HP_status_get_restart_sp_post;
struct HPMHookPoint *HP_status_calc_npc__pre;
struct HPMHookPoint *HP_status_calc_npc__post;
struct HPMHookPoint *HP_status_calc_str_pre;
@@ -6071,6 +6699,114 @@ struct {
int HP_HCache_check_post;
int HP_HCache_open_pre;
int HP_HCache_open_post;
+ int HP_achievement_init_pre;
+ int HP_achievement_init_post;
+ int HP_achievement_final_pre;
+ int HP_achievement_final_post;
+ int HP_achievement_db_finalize_pre;
+ int HP_achievement_db_finalize_post;
+ int HP_achievement_readdb_pre;
+ int HP_achievement_readdb_post;
+ int HP_achievement_readdb_objectives_sub_pre;
+ int HP_achievement_readdb_objectives_sub_post;
+ int HP_achievement_readdb_objectives_pre;
+ int HP_achievement_readdb_objectives_post;
+ int HP_achievement_readdb_validate_criteria_mobid_pre;
+ int HP_achievement_readdb_validate_criteria_mobid_post;
+ int HP_achievement_readdb_validate_criteria_jobid_pre;
+ int HP_achievement_readdb_validate_criteria_jobid_post;
+ int HP_achievement_readdb_validate_criteria_itemid_pre;
+ int HP_achievement_readdb_validate_criteria_itemid_post;
+ int HP_achievement_readdb_validate_criteria_statustype_pre;
+ int HP_achievement_readdb_validate_criteria_statustype_post;
+ int HP_achievement_readdb_validate_criteria_itemtype_pre;
+ int HP_achievement_readdb_validate_criteria_itemtype_post;
+ int HP_achievement_readdb_validate_criteria_weaponlv_pre;
+ int HP_achievement_readdb_validate_criteria_weaponlv_post;
+ int HP_achievement_readdb_validate_criteria_achievement_pre;
+ int HP_achievement_readdb_validate_criteria_achievement_post;
+ int HP_achievement_readdb_rewards_pre;
+ int HP_achievement_readdb_rewards_post;
+ int HP_achievement_readdb_validate_reward_items_pre;
+ int HP_achievement_readdb_validate_reward_items_post;
+ int HP_achievement_readdb_validate_reward_item_sub_pre;
+ int HP_achievement_readdb_validate_reward_item_sub_post;
+ int HP_achievement_readdb_validate_reward_bonus_pre;
+ int HP_achievement_readdb_validate_reward_bonus_post;
+ int HP_achievement_readdb_validate_reward_titleid_pre;
+ int HP_achievement_readdb_validate_reward_titleid_post;
+ int HP_achievement_readdb_additional_fields_pre;
+ int HP_achievement_readdb_additional_fields_post;
+ int HP_achievement_readdb_ranks_pre;
+ int HP_achievement_readdb_ranks_post;
+ int HP_achievement_get_pre;
+ int HP_achievement_get_post;
+ int HP_achievement_ensure_pre;
+ int HP_achievement_ensure_post;
+ int HP_achievement_calculate_totals_pre;
+ int HP_achievement_calculate_totals_post;
+ int HP_achievement_check_complete_pre;
+ int HP_achievement_check_complete_post;
+ int HP_achievement_progress_add_pre;
+ int HP_achievement_progress_add_post;
+ int HP_achievement_progress_set_pre;
+ int HP_achievement_progress_set_post;
+ int HP_achievement_check_criteria_pre;
+ int HP_achievement_check_criteria_post;
+ int HP_achievement_validate_pre;
+ int HP_achievement_validate_post;
+ int HP_achievement_validate_type_pre;
+ int HP_achievement_validate_type_post;
+ int HP_achievement_validate_mob_kill_pre;
+ int HP_achievement_validate_mob_kill_post;
+ int HP_achievement_validate_mob_damage_pre;
+ int HP_achievement_validate_mob_damage_post;
+ int HP_achievement_validate_pc_kill_pre;
+ int HP_achievement_validate_pc_kill_post;
+ int HP_achievement_validate_pc_damage_pre;
+ int HP_achievement_validate_pc_damage_post;
+ int HP_achievement_validate_jobchange_pre;
+ int HP_achievement_validate_jobchange_post;
+ int HP_achievement_validate_stats_pre;
+ int HP_achievement_validate_stats_post;
+ int HP_achievement_validate_chatroom_create_pre;
+ int HP_achievement_validate_chatroom_create_post;
+ int HP_achievement_validate_chatroom_members_pre;
+ int HP_achievement_validate_chatroom_members_post;
+ int HP_achievement_validate_friend_add_pre;
+ int HP_achievement_validate_friend_add_post;
+ int HP_achievement_validate_party_create_pre;
+ int HP_achievement_validate_party_create_post;
+ int HP_achievement_validate_marry_pre;
+ int HP_achievement_validate_marry_post;
+ int HP_achievement_validate_adopt_pre;
+ int HP_achievement_validate_adopt_post;
+ int HP_achievement_validate_zeny_pre;
+ int HP_achievement_validate_zeny_post;
+ int HP_achievement_validate_refine_pre;
+ int HP_achievement_validate_refine_post;
+ int HP_achievement_validate_item_get_pre;
+ int HP_achievement_validate_item_get_post;
+ int HP_achievement_validate_item_sell_pre;
+ int HP_achievement_validate_item_sell_post;
+ int HP_achievement_validate_achieve_pre;
+ int HP_achievement_validate_achieve_post;
+ int HP_achievement_validate_taming_pre;
+ int HP_achievement_validate_taming_post;
+ int HP_achievement_validate_achievement_rank_pre;
+ int HP_achievement_validate_achievement_rank_post;
+ int HP_achievement_type_requires_criteria_pre;
+ int HP_achievement_type_requires_criteria_post;
+ int HP_achievement_init_titles_pre;
+ int HP_achievement_init_titles_post;
+ int HP_achievement_check_title_pre;
+ int HP_achievement_check_title_post;
+ int HP_achievement_get_rewards_pre;
+ int HP_achievement_get_rewards_post;
+ int HP_achievement_get_rewards_buffs_pre;
+ int HP_achievement_get_rewards_buffs_post;
+ int HP_achievement_get_rewards_items_pre;
+ int HP_achievement_get_rewards_items_post;
int HP_atcommand_init_pre;
int HP_atcommand_init_post;
int HP_atcommand_final_pre;
@@ -6167,6 +6903,8 @@ struct {
int HP_battle_drain_post;
int HP_battle_reflect_damage_pre;
int HP_battle_reflect_damage_post;
+ int HP_battle_reflect_trap_pre;
+ int HP_battle_reflect_trap_post;
int HP_battle_attr_ratio_pre;
int HP_battle_attr_ratio_post;
int HP_battle_attr_fix_pre;
@@ -6469,8 +7207,6 @@ struct {
int HP_chrif_divorce_post;
int HP_chrif_removefriend_pre;
int HP_chrif_removefriend_post;
- int HP_chrif_send_report_pre;
- int HP_chrif_send_report_post;
int HP_chrif_flush_pre;
int HP_chrif_flush_post;
int HP_chrif_skillid2idx_pre;
@@ -6543,6 +7279,60 @@ struct {
int HP_chrif_save_scdata_single_post;
int HP_chrif_del_scdata_single_pre;
int HP_chrif_del_scdata_single_post;
+ int HP_clan_init_pre;
+ int HP_clan_init_post;
+ int HP_clan_final_pre;
+ int HP_clan_final_post;
+ int HP_clan_config_read_pre;
+ int HP_clan_config_read_post;
+ int HP_clan_config_read_additional_settings_pre;
+ int HP_clan_config_read_additional_settings_post;
+ int HP_clan_read_db_pre;
+ int HP_clan_read_db_post;
+ int HP_clan_read_db_sub_pre;
+ int HP_clan_read_db_sub_post;
+ int HP_clan_read_db_additional_fields_pre;
+ int HP_clan_read_db_additional_fields_post;
+ int HP_clan_read_buffs_pre;
+ int HP_clan_read_buffs_post;
+ int HP_clan_search_pre;
+ int HP_clan_search_post;
+ int HP_clan_searchname_pre;
+ int HP_clan_searchname_post;
+ int HP_clan_getonlinesd_pre;
+ int HP_clan_getonlinesd_post;
+ int HP_clan_getindex_pre;
+ int HP_clan_getindex_post;
+ int HP_clan_join_pre;
+ int HP_clan_join_post;
+ int HP_clan_member_online_pre;
+ int HP_clan_member_online_post;
+ int HP_clan_leave_pre;
+ int HP_clan_leave_post;
+ int HP_clan_send_message_pre;
+ int HP_clan_send_message_post;
+ int HP_clan_recv_message_pre;
+ int HP_clan_recv_message_post;
+ int HP_clan_member_offline_pre;
+ int HP_clan_member_offline_post;
+ int HP_clan_set_constants_pre;
+ int HP_clan_set_constants_post;
+ int HP_clan_get_id_pre;
+ int HP_clan_get_id_post;
+ int HP_clan_buff_start_pre;
+ int HP_clan_buff_start_post;
+ int HP_clan_buff_end_pre;
+ int HP_clan_buff_end_post;
+ int HP_clan_reload_pre;
+ int HP_clan_reload_post;
+ int HP_clan_rejoin_pre;
+ int HP_clan_rejoin_post;
+ int HP_clan_inactivity_kick_pre;
+ int HP_clan_inactivity_kick_post;
+ int HP_clan_request_kickoffline_pre;
+ int HP_clan_request_kickoffline_post;
+ int HP_clan_request_membercount_pre;
+ int HP_clan_request_membercount_post;
int HP_clif_init_pre;
int HP_clif_init_post;
int HP_clif_final_pre;
@@ -6571,6 +7361,8 @@ struct {
int HP_clif_decrypt_cmd_post;
int HP_clif_authok_pre;
int HP_clif_authok_post;
+ int HP_clif_auth_error_pre;
+ int HP_clif_auth_error_post;
int HP_clif_authrefuse_pre;
int HP_clif_authrefuse_post;
int HP_clif_authfail_fd_pre;
@@ -6589,6 +7381,8 @@ struct {
int HP_clif_delitem_post;
int HP_clif_takeitem_pre;
int HP_clif_takeitem_post;
+ int HP_clif_item_movefailed_pre;
+ int HP_clif_item_movefailed_post;
int HP_clif_item_equip_pre;
int HP_clif_item_equip_post;
int HP_clif_item_normal_pre;
@@ -6611,8 +7405,6 @@ struct {
int HP_clif_useitemack_post;
int HP_clif_addcards_pre;
int HP_clif_addcards_post;
- int HP_clif_addcards2_pre;
- int HP_clif_addcards2_post;
int HP_clif_item_sub_pre;
int HP_clif_item_sub_post;
int HP_clif_getareachar_item_pre;
@@ -6621,6 +7413,8 @@ struct {
int HP_clif_cart_additem_ack_post;
int HP_clif_cashshop_load_pre;
int HP_clif_cashshop_load_post;
+ int HP_clif_cashShopSchedule_pre;
+ int HP_clif_cashShopSchedule_post;
int HP_clif_package_announce_pre;
int HP_clif_package_announce_post;
int HP_clif_item_drop_announce_pre;
@@ -6685,6 +7479,8 @@ struct {
int HP_clif_spawn_post;
int HP_clif_changemap_pre;
int HP_clif_changemap_post;
+ int HP_clif_changemap_airship_pre;
+ int HP_clif_changemap_airship_post;
int HP_clif_changemapcell_pre;
int HP_clif_changemapcell_post;
int HP_clif_map_property_pre;
@@ -6701,6 +7497,8 @@ struct {
int HP_clif_maptypeproperty2_post;
int HP_clif_changemapserver_pre;
int HP_clif_changemapserver_post;
+ int HP_clif_changemapserver_airship_pre;
+ int HP_clif_changemapserver_airship_post;
int HP_clif_npcbuysell_pre;
int HP_clif_npcbuysell_post;
int HP_clif_buylist_pre;
@@ -6787,12 +7585,30 @@ struct {
int HP_clif_status_change_post;
int HP_clif_insert_card_pre;
int HP_clif_insert_card_post;
- int HP_clif_inventorylist_pre;
- int HP_clif_inventorylist_post;
- int HP_clif_equiplist_pre;
- int HP_clif_equiplist_post;
- int HP_clif_cartlist_pre;
- int HP_clif_cartlist_post;
+ int HP_clif_inventoryList_pre;
+ int HP_clif_inventoryList_post;
+ int HP_clif_inventoryItems_pre;
+ int HP_clif_inventoryItems_post;
+ int HP_clif_equipList_pre;
+ int HP_clif_equipList_post;
+ int HP_clif_equipItems_pre;
+ int HP_clif_equipItems_post;
+ int HP_clif_cartList_pre;
+ int HP_clif_cartList_post;
+ int HP_clif_cartItems_pre;
+ int HP_clif_cartItems_post;
+ int HP_clif_inventoryExpansionInfo_pre;
+ int HP_clif_inventoryExpansionInfo_post;
+ int HP_clif_inventoryExpandAck_pre;
+ int HP_clif_inventoryExpandAck_post;
+ int HP_clif_inventoryExpandResult_pre;
+ int HP_clif_inventoryExpandResult_post;
+ int HP_clif_pInventoryExpansion_pre;
+ int HP_clif_pInventoryExpansion_post;
+ int HP_clif_pInventoryExpansionConfirmed_pre;
+ int HP_clif_pInventoryExpansionConfirmed_post;
+ int HP_clif_pInventoryExpansionRejected_pre;
+ int HP_clif_pInventoryExpansionRejected_post;
int HP_clif_favorite_item_pre;
int HP_clif_favorite_item_post;
int HP_clif_clearcart_pre;
@@ -6849,8 +7665,8 @@ struct {
int HP_clif_feel_hate_reset_post;
int HP_clif_partytickack_pre;
int HP_clif_partytickack_post;
- int HP_clif_equiptickack_pre;
- int HP_clif_equiptickack_post;
+ int HP_clif_zc_config_pre;
+ int HP_clif_zc_config_post;
int HP_clif_viewequip_ack_pre;
int HP_clif_viewequip_ack_post;
int HP_clif_equpcheckbox_pre;
@@ -6863,6 +7679,8 @@ struct {
int HP_clif_progressbar_post;
int HP_clif_progressbar_abort_pre;
int HP_clif_progressbar_abort_post;
+ int HP_clif_progressbar_unit_pre;
+ int HP_clif_progressbar_unit_post;
int HP_clif_showdigit_pre;
int HP_clif_showdigit_post;
int HP_clif_elementalconverter_list_pre;
@@ -6971,6 +7789,10 @@ struct {
int HP_clif_specialeffect_single_post;
int HP_clif_specialeffect_value_pre;
int HP_clif_specialeffect_value_post;
+ int HP_clif_removeSpecialEffect_pre;
+ int HP_clif_removeSpecialEffect_post;
+ int HP_clif_removeSpecialEffect_single_pre;
+ int HP_clif_removeSpecialEffect_single_post;
int HP_clif_millenniumshield_pre;
int HP_clif_millenniumshield_post;
int HP_clif_spiritcharm_pre;
@@ -7021,14 +7843,24 @@ struct {
int HP_clif_messagecolor_self_post;
int HP_clif_messagecolor_pre;
int HP_clif_messagecolor_post;
+ int HP_clif_serviceMessageColor_pre;
+ int HP_clif_serviceMessageColor_post;
int HP_clif_disp_overhead_pre;
int HP_clif_disp_overhead_post;
+ int HP_clif_notify_playerchat_pre;
+ int HP_clif_notify_playerchat_post;
int HP_clif_msgtable_pre;
int HP_clif_msgtable_post;
int HP_clif_msgtable_num_pre;
int HP_clif_msgtable_num_post;
int HP_clif_msgtable_skill_pre;
int HP_clif_msgtable_skill_post;
+ int HP_clif_msgtable_str_pre;
+ int HP_clif_msgtable_str_post;
+ int HP_clif_msgtable_str_color_pre;
+ int HP_clif_msgtable_str_color_post;
+ int HP_clif_msgtable_color_pre;
+ int HP_clif_msgtable_color_post;
int HP_clif_message_pre;
int HP_clif_message_post;
int HP_clif_messageln_pre;
@@ -7073,10 +7905,20 @@ struct {
int HP_clif_buyvending_post;
int HP_clif_openvending_pre;
int HP_clif_openvending_post;
+ int HP_clif_openvendingAck_pre;
+ int HP_clif_openvendingAck_post;
int HP_clif_vendingreport_pre;
int HP_clif_vendingreport_post;
- int HP_clif_storagelist_pre;
- int HP_clif_storagelist_post;
+ int HP_clif_storageList_pre;
+ int HP_clif_storageList_post;
+ int HP_clif_guildStorageList_pre;
+ int HP_clif_guildStorageList_post;
+ int HP_clif_storageItems_pre;
+ int HP_clif_storageItems_post;
+ int HP_clif_inventoryStart_pre;
+ int HP_clif_inventoryStart_post;
+ int HP_clif_inventoryEnd_pre;
+ int HP_clif_inventoryEnd_post;
int HP_clif_updatestorageamount_pre;
int HP_clif_updatestorageamount_post;
int HP_clif_storageitemadded_pre;
@@ -7101,6 +7943,8 @@ struct {
int HP_clif_party_member_info_post;
int HP_clif_party_info_pre;
int HP_clif_party_info_post;
+ int HP_clif_party_job_and_level_pre;
+ int HP_clif_party_job_and_level_post;
int HP_clif_party_invite_pre;
int HP_clif_party_invite_post;
int HP_clif_party_inviteack_pre;
@@ -7185,6 +8029,10 @@ struct {
int HP_clif_guild_positioninfolist_post;
int HP_clif_guild_expulsionlist_pre;
int HP_clif_guild_expulsionlist_post;
+ int HP_clif_guild_set_position_pre;
+ int HP_clif_guild_set_position_post;
+ int HP_clif_guild_position_selected_pre;
+ int HP_clif_guild_position_selected_post;
int HP_clif_validate_emblem_pre;
int HP_clif_validate_emblem_post;
int HP_clif_bg_hp_pre;
@@ -7267,6 +8115,8 @@ struct {
int HP_clif_quest_update_status_post;
int HP_clif_quest_update_objective_pre;
int HP_clif_quest_update_objective_post;
+ int HP_clif_quest_notify_objective_pre;
+ int HP_clif_quest_notify_objective_post;
int HP_clif_quest_show_event_pre;
int HP_clif_quest_show_event_post;
int HP_clif_mail_window_pre;
@@ -7445,6 +8295,18 @@ struct {
int HP_clif_navigate_to_post;
int HP_clif_bl_type_pre;
int HP_clif_bl_type_post;
+ int HP_clif_achievement_send_list_pre;
+ int HP_clif_achievement_send_list_post;
+ int HP_clif_achievement_send_update_pre;
+ int HP_clif_achievement_send_update_post;
+ int HP_clif_pAchievementGetReward_pre;
+ int HP_clif_pAchievementGetReward_post;
+ int HP_clif_achievement_reward_ack_pre;
+ int HP_clif_achievement_reward_ack_post;
+ int HP_clif_change_title_ack_pre;
+ int HP_clif_change_title_ack_post;
+ int HP_clif_pChangeTitle_pre;
+ int HP_clif_pChangeTitle_post;
int HP_clif_pWantToConnection_pre;
int HP_clif_pWantToConnection_post;
int HP_clif_pLoadEndAck_pre;
@@ -7537,8 +8399,14 @@ struct {
int HP_clif_pStatusUp_post;
int HP_clif_pSkillUp_pre;
int HP_clif_pSkillUp_post;
+ int HP_clif_useSkillToIdReal_pre;
+ int HP_clif_useSkillToIdReal_post;
int HP_clif_pUseSkillToId_pre;
int HP_clif_pUseSkillToId_post;
+ int HP_clif_pStartUseSkillToId_pre;
+ int HP_clif_pStartUseSkillToId_post;
+ int HP_clif_pStopUseSkillToId_pre;
+ int HP_clif_pStopUseSkillToId_post;
int HP_clif_pUseSkillToId_homun_pre;
int HP_clif_pUseSkillToId_homun_post;
int HP_clif_pUseSkillToId_mercenary_pre;
@@ -7805,8 +8673,8 @@ struct {
int HP_clif_pAdopt_reply_post;
int HP_clif_pViewPlayerEquip_pre;
int HP_clif_pViewPlayerEquip_post;
- int HP_clif_pEquipTick_pre;
- int HP_clif_pEquipTick_post;
+ int HP_clif_p_cz_config_pre;
+ int HP_clif_p_cz_config_post;
int HP_clif_pquestStateAck_pre;
int HP_clif_pquestStateAck_post;
int HP_clif_pmercenary_action_pre;
@@ -7841,6 +8709,8 @@ struct {
int HP_clif_pMoveItem_post;
int HP_clif_pDull_pre;
int HP_clif_pDull_post;
+ int HP_clif_p_cz_blocking_play_cancel_pre;
+ int HP_clif_p_cz_blocking_play_cancel_post;
int HP_clif_pBGQueueRegister_pre;
int HP_clif_pBGQueueRegister_post;
int HP_clif_pBGQueueCheckState_pre;
@@ -7899,8 +8769,8 @@ struct {
int HP_clif_pNPCMarketClosed_post;
int HP_clif_pNPCMarketPurchase_pre;
int HP_clif_pNPCMarketPurchase_post;
- int HP_clif_add_random_options_pre;
- int HP_clif_add_random_options_post;
+ int HP_clif_add_item_options_pre;
+ int HP_clif_add_item_options_post;
int HP_clif_pHotkeyRowShift_pre;
int HP_clif_pHotkeyRowShift_post;
int HP_clif_dressroom_open_pre;
@@ -7913,6 +8783,146 @@ struct {
int HP_clif_pSelectCart_post;
int HP_clif_get_bl_name_pre;
int HP_clif_get_bl_name_post;
+ int HP_clif_pRodexOpenWriteMail_pre;
+ int HP_clif_pRodexOpenWriteMail_post;
+ int HP_clif_rodex_open_write_mail_pre;
+ int HP_clif_rodex_open_write_mail_post;
+ int HP_clif_pRodexAddItem_pre;
+ int HP_clif_pRodexAddItem_post;
+ int HP_clif_rodex_add_item_result_pre;
+ int HP_clif_rodex_add_item_result_post;
+ int HP_clif_pRodexRemoveItem_pre;
+ int HP_clif_pRodexRemoveItem_post;
+ int HP_clif_rodex_remove_item_result_pre;
+ int HP_clif_rodex_remove_item_result_post;
+ int HP_clif_pRodexSendMail_pre;
+ int HP_clif_pRodexSendMail_post;
+ int HP_clif_rodex_send_mail_result_pre;
+ int HP_clif_rodex_send_mail_result_post;
+ int HP_clif_rodex_send_maillist_pre;
+ int HP_clif_rodex_send_maillist_post;
+ int HP_clif_rodex_send_refresh_pre;
+ int HP_clif_rodex_send_refresh_post;
+ int HP_clif_rodex_send_mails_all_pre;
+ int HP_clif_rodex_send_mails_all_post;
+ int HP_clif_pRodexReadMail_pre;
+ int HP_clif_pRodexReadMail_post;
+ int HP_clif_rodex_read_mail_pre;
+ int HP_clif_rodex_read_mail_post;
+ int HP_clif_pRodexNextMaillist_pre;
+ int HP_clif_pRodexNextMaillist_post;
+ int HP_clif_pRodexCloseMailbox_pre;
+ int HP_clif_pRodexCloseMailbox_post;
+ int HP_clif_pRodexCancelWriteMail_pre;
+ int HP_clif_pRodexCancelWriteMail_post;
+ int HP_clif_pRodexOpenMailbox_pre;
+ int HP_clif_pRodexOpenMailbox_post;
+ int HP_clif_pRodexCheckName_pre;
+ int HP_clif_pRodexCheckName_post;
+ int HP_clif_rodex_checkname_result_pre;
+ int HP_clif_rodex_checkname_result_post;
+ int HP_clif_pRodexDeleteMail_pre;
+ int HP_clif_pRodexDeleteMail_post;
+ int HP_clif_rodex_delete_mail_pre;
+ int HP_clif_rodex_delete_mail_post;
+ int HP_clif_pRodexRefreshMaillist_pre;
+ int HP_clif_pRodexRefreshMaillist_post;
+ int HP_clif_pRodexRequestZeny_pre;
+ int HP_clif_pRodexRequestZeny_post;
+ int HP_clif_rodex_request_zeny_pre;
+ int HP_clif_rodex_request_zeny_post;
+ int HP_clif_pRodexRequestItems_pre;
+ int HP_clif_pRodexRequestItems_post;
+ int HP_clif_rodex_request_items_pre;
+ int HP_clif_rodex_request_items_post;
+ int HP_clif_rodex_icon_pre;
+ int HP_clif_rodex_icon_post;
+ int HP_clif_skill_scale_pre;
+ int HP_clif_skill_scale_post;
+ int HP_clif_clan_basicinfo_pre;
+ int HP_clif_clan_basicinfo_post;
+ int HP_clif_clan_onlinecount_pre;
+ int HP_clif_clan_onlinecount_post;
+ int HP_clif_clan_leave_pre;
+ int HP_clif_clan_leave_post;
+ int HP_clif_clan_message_pre;
+ int HP_clif_clan_message_post;
+ int HP_clif_pClanMessage_pre;
+ int HP_clif_pClanMessage_post;
+ int HP_clif_hat_effect_pre;
+ int HP_clif_hat_effect_post;
+ int HP_clif_hat_effect_single_pre;
+ int HP_clif_hat_effect_single_post;
+ int HP_clif_overweight_percent_pre;
+ int HP_clif_overweight_percent_post;
+ int HP_clif_pChangeDress_pre;
+ int HP_clif_pChangeDress_post;
+ int HP_clif_pAttendanceDB_pre;
+ int HP_clif_pAttendanceDB_post;
+ int HP_clif_attendancedb_libconfig_sub_pre;
+ int HP_clif_attendancedb_libconfig_sub_post;
+ int HP_clif_attendance_timediff_pre;
+ int HP_clif_attendance_timediff_post;
+ int HP_clif_attendance_getendtime_pre;
+ int HP_clif_attendance_getendtime_post;
+ int HP_clif_pOpenUIRequest_pre;
+ int HP_clif_pOpenUIRequest_post;
+ int HP_clif_open_ui_pre;
+ int HP_clif_open_ui_post;
+ int HP_clif_pAttendanceRewardRequest_pre;
+ int HP_clif_pAttendanceRewardRequest_post;
+ int HP_clif_ui_action_pre;
+ int HP_clif_ui_action_post;
+ int HP_clif_pPrivateAirshipRequest_pre;
+ int HP_clif_pPrivateAirshipRequest_post;
+ int HP_clif_PrivateAirshipResponse_pre;
+ int HP_clif_PrivateAirshipResponse_post;
+ int HP_clif_stylist_vector_init_pre;
+ int HP_clif_stylist_vector_init_post;
+ int HP_clif_stylist_vector_clear_pre;
+ int HP_clif_stylist_vector_clear_post;
+ int HP_clif_stylist_read_db_libconfig_pre;
+ int HP_clif_stylist_read_db_libconfig_post;
+ int HP_clif_stylist_read_db_libconfig_sub_pre;
+ int HP_clif_stylist_read_db_libconfig_sub_post;
+ int HP_clif_style_change_validate_requirements_pre;
+ int HP_clif_style_change_validate_requirements_post;
+ int HP_clif_stylist_send_rodexitem_pre;
+ int HP_clif_stylist_send_rodexitem_post;
+ int HP_clif_pReqStyleChange_pre;
+ int HP_clif_pReqStyleChange_post;
+ int HP_clif_pReqStyleChange2_pre;
+ int HP_clif_pReqStyleChange2_post;
+ int HP_clif_cz_req_style_change_sub_pre;
+ int HP_clif_cz_req_style_change_sub_post;
+ int HP_clif_style_change_response_pre;
+ int HP_clif_style_change_response_post;
+ int HP_clif_pPetEvolution_pre;
+ int HP_clif_pPetEvolution_post;
+ int HP_clif_petEvolutionResult_pre;
+ int HP_clif_petEvolutionResult_post;
+ int HP_clif_party_dead_notification_pre;
+ int HP_clif_party_dead_notification_post;
+ int HP_clif_pMemorialDungeonCommand_pre;
+ int HP_clif_pMemorialDungeonCommand_post;
+ int HP_clif_camera_showWindow_pre;
+ int HP_clif_camera_showWindow_post;
+ int HP_clif_camera_change_pre;
+ int HP_clif_camera_change_post;
+ int HP_clif_pCameraInfo_pre;
+ int HP_clif_pCameraInfo_post;
+ int HP_clif_item_preview_pre;
+ int HP_clif_item_preview_post;
+ int HP_clif_enchant_equipment_pre;
+ int HP_clif_enchant_equipment_post;
+ int HP_clif_pReqRemainTime_pre;
+ int HP_clif_pReqRemainTime_post;
+ int HP_clif_npc_barter_open_pre;
+ int HP_clif_npc_barter_open_post;
+ int HP_clif_pNPCBarterClosed_pre;
+ int HP_clif_pNPCBarterClosed_post;
+ int HP_clif_pNPCBarterPurchase_pre;
+ int HP_clif_pNPCBarterPurchase_post;
int HP_cmdline_init_pre;
int HP_cmdline_init_post;
int HP_cmdline_final_pre;
@@ -8407,6 +9417,8 @@ struct {
int HP_instance_valid_post;
int HP_instance_destroy_timer_pre;
int HP_instance_destroy_timer_post;
+ int HP_instance_force_destroy_pre;
+ int HP_instance_force_destroy_post;
int HP_intif_parse_pre;
int HP_intif_parse_post;
int HP_intif_create_pet_pre;
@@ -8425,6 +9437,10 @@ struct {
int HP_intif_saveregistry_post;
int HP_intif_request_registry_pre;
int HP_intif_request_registry_post;
+ int HP_intif_request_account_storage_pre;
+ int HP_intif_request_account_storage_post;
+ int HP_intif_send_account_storage_pre;
+ int HP_intif_send_account_storage_post;
int HP_intif_request_guild_storage_pre;
int HP_intif_request_guild_storage_post;
int HP_intif_send_guild_storage_pre;
@@ -8541,10 +9557,28 @@ struct {
int HP_intif_elemental_delete_post;
int HP_intif_elemental_save_pre;
int HP_intif_elemental_save_post;
+ int HP_intif_rodex_requestinbox_pre;
+ int HP_intif_rodex_requestinbox_post;
+ int HP_intif_rodex_checkhasnew_pre;
+ int HP_intif_rodex_checkhasnew_post;
+ int HP_intif_rodex_updatemail_pre;
+ int HP_intif_rodex_updatemail_post;
+ int HP_intif_rodex_sendmail_pre;
+ int HP_intif_rodex_sendmail_post;
+ int HP_intif_rodex_checkname_pre;
+ int HP_intif_rodex_checkname_post;
+ int HP_intif_clan_kickoffline_pre;
+ int HP_intif_clan_kickoffline_post;
+ int HP_intif_clan_membercount_pre;
+ int HP_intif_clan_membercount_post;
int HP_intif_request_accinfo_pre;
int HP_intif_request_accinfo_post;
int HP_intif_CheckForCharServer_pre;
int HP_intif_CheckForCharServer_post;
+ int HP_intif_achievements_request_pre;
+ int HP_intif_achievements_request_post;
+ int HP_intif_achievements_save_pre;
+ int HP_intif_achievements_save_post;
int HP_intif_pWisMessage_pre;
int HP_intif_pWisMessage_post;
int HP_intif_pWisEnd_pre;
@@ -8555,10 +9589,14 @@ struct {
int HP_intif_pWisToGM_post;
int HP_intif_pRegisters_pre;
int HP_intif_pRegisters_post;
+ int HP_intif_pAccountStorage_pre;
+ int HP_intif_pAccountStorage_post;
int HP_intif_pChangeNameOk_pre;
int HP_intif_pChangeNameOk_post;
int HP_intif_pMessageToFD_pre;
int HP_intif_pMessageToFD_post;
+ int HP_intif_pAccountStorageSaveAck_pre;
+ int HP_intif_pAccountStorageSaveAck_post;
int HP_intif_pLoadGuildStorage_pre;
int HP_intif_pLoadGuildStorage_post;
int HP_intif_pSaveGuildStorage_pre;
@@ -8669,6 +9707,18 @@ struct {
int HP_intif_pSaveHomunculusOk_post;
int HP_intif_pDeleteHomunculusOk_pre;
int HP_intif_pDeleteHomunculusOk_post;
+ int HP_intif_pRequestRodexOpenInbox_pre;
+ int HP_intif_pRequestRodexOpenInbox_post;
+ int HP_intif_pRodexHasNew_pre;
+ int HP_intif_pRodexHasNew_post;
+ int HP_intif_pRodexSendMail_pre;
+ int HP_intif_pRodexSendMail_post;
+ int HP_intif_pRodexCheckName_pre;
+ int HP_intif_pRodexCheckName_post;
+ int HP_intif_pRecvClanMemberAction_pre;
+ int HP_intif_pRecvClanMemberAction_post;
+ int HP_intif_pAchievementsLoad_pre;
+ int HP_intif_pAchievementsLoad_post;
int HP_ircbot_init_pre;
int HP_ircbot_init_post;
int HP_ircbot_final_pre;
@@ -8721,6 +9771,8 @@ struct {
int HP_itemdb_read_chains_post;
int HP_itemdb_read_packages_pre;
int HP_itemdb_read_packages_post;
+ int HP_itemdb_read_options_pre;
+ int HP_itemdb_read_options_post;
int HP_itemdb_write_cached_packages_pre;
int HP_itemdb_write_cached_packages_post;
int HP_itemdb_read_cached_packages_pre;
@@ -8737,6 +9789,8 @@ struct {
int HP_itemdb_search_post;
int HP_itemdb_exists_pre;
int HP_itemdb_exists_post;
+ int HP_itemdb_option_exists_pre;
+ int HP_itemdb_option_exists_post;
int HP_itemdb_in_group_pre;
int HP_itemdb_in_group_post;
int HP_itemdb_group_item_pre;
@@ -8801,6 +9855,8 @@ struct {
int HP_itemdb_gendercheck_post;
int HP_itemdb_validate_entry_pre;
int HP_itemdb_validate_entry_post;
+ int HP_itemdb_readdb_options_additional_fields_pre;
+ int HP_itemdb_readdb_options_additional_fields_post;
int HP_itemdb_readdb_additional_fields_pre;
int HP_itemdb_readdb_additional_fields_post;
int HP_itemdb_readdb_job_sub_pre;
@@ -8817,6 +9873,8 @@ struct {
int HP_itemdb_destroy_item_data_post;
int HP_itemdb_final_sub_pre;
int HP_itemdb_final_sub_post;
+ int HP_itemdb_options_final_sub_pre;
+ int HP_itemdb_options_final_sub_post;
int HP_itemdb_clear_pre;
int HP_itemdb_clear_post;
int HP_itemdb_id2combo_pre;
@@ -8825,6 +9883,10 @@ struct {
int HP_itemdb_is_item_usable_post;
int HP_itemdb_lookup_const_pre;
int HP_itemdb_lookup_const_post;
+ int HP_itemdb_lookup_const_mask_pre;
+ int HP_itemdb_lookup_const_mask_post;
+ int HP_itemdb_addname_sub_pre;
+ int HP_itemdb_addname_sub_post;
int HP_libconfig_read_pre;
int HP_libconfig_read_post;
int HP_libconfig_write_pre;
@@ -9027,12 +10089,16 @@ struct {
int HP_map_zone_init_post;
int HP_map_zone_remove_pre;
int HP_map_zone_remove_post;
+ int HP_map_zone_remove_all_pre;
+ int HP_map_zone_remove_all_post;
int HP_map_zone_apply_pre;
int HP_map_zone_apply_post;
int HP_map_zone_change_pre;
int HP_map_zone_change_post;
int HP_map_zone_change2_pre;
int HP_map_zone_change2_post;
+ int HP_map_zone_reload_pre;
+ int HP_map_zone_reload_post;
int HP_map_getcell_pre;
int HP_map_getcell_post;
int HP_map_setgatcell_pre;
@@ -9229,10 +10295,10 @@ struct {
int HP_map_create_map_data_other_server_post;
int HP_map_eraseallipport_sub_pre;
int HP_map_eraseallipport_sub_post;
- int HP_map_init_mapcache_pre;
- int HP_map_init_mapcache_post;
int HP_map_readfromcache_pre;
int HP_map_readfromcache_post;
+ int HP_map_readfromcache_v1_pre;
+ int HP_map_readfromcache_v1_post;
int HP_map_addmap_pre;
int HP_map_addmap_post;
int HP_map_delmapid_pre;
@@ -9423,6 +10489,10 @@ struct {
int HP_mob_db_searchname_post;
int HP_mob_db_searchname_array_sub_pre;
int HP_mob_db_searchname_array_sub_post;
+ int HP_mob_mvptomb_spawn_delayed_pre;
+ int HP_mob_mvptomb_spawn_delayed_post;
+ int HP_mob_mvptomb_delayspawn_pre;
+ int HP_mob_mvptomb_delayspawn_post;
int HP_mob_mvptomb_create_pre;
int HP_mob_mvptomb_create_post;
int HP_mob_mvptomb_destroy_pre;
@@ -9595,8 +10665,6 @@ struct {
int HP_mob_parse_row_chatdb_post;
int HP_mob_readchatdb_pre;
int HP_mob_readchatdb_post;
- int HP_mob_parse_row_mobskilldb_pre;
- int HP_mob_parse_row_mobskilldb_post;
int HP_mob_readskilldb_pre;
int HP_mob_readskilldb_post;
int HP_mob_readdb_race2_pre;
@@ -9607,8 +10675,20 @@ struct {
int HP_mob_load_post;
int HP_mob_clear_spawninfo_pre;
int HP_mob_clear_spawninfo_post;
+ int HP_mob_get_item_drop_ratio_pre;
+ int HP_mob_get_item_drop_ratio_post;
+ int HP_mob_set_item_drop_ratio_pre;
+ int HP_mob_set_item_drop_ratio_post;
+ int HP_mob_final_ratio_sub_pre;
+ int HP_mob_final_ratio_sub_post;
int HP_mob_destroy_mob_db_pre;
int HP_mob_destroy_mob_db_post;
+ int HP_mob_skill_db_libconfig_pre;
+ int HP_mob_skill_db_libconfig_post;
+ int HP_mob_skill_db_libconfig_sub_pre;
+ int HP_mob_skill_db_libconfig_sub_post;
+ int HP_mob_skill_db_libconfig_sub_skill_pre;
+ int HP_mob_skill_db_libconfig_sub_skill_post;
int HP_mutex_create_pre;
int HP_mutex_create_post;
int HP_mutex_destroy_pre;
@@ -9853,6 +10933,8 @@ struct {
int HP_npc_trader_update_post;
int HP_npc_market_buylist_pre;
int HP_npc_market_buylist_post;
+ int HP_npc_barter_buylist_pre;
+ int HP_npc_barter_buylist_post;
int HP_npc_trader_open_pre;
int HP_npc_trader_open_post;
int HP_npc_market_fromsql_pre;
@@ -9863,12 +10945,30 @@ struct {
int HP_npc_market_delfromsql_post;
int HP_npc_market_delfromsql_sub_pre;
int HP_npc_market_delfromsql_sub_post;
+ int HP_npc_barter_fromsql_pre;
+ int HP_npc_barter_fromsql_post;
+ int HP_npc_barter_tosql_pre;
+ int HP_npc_barter_tosql_post;
+ int HP_npc_barter_delfromsql_pre;
+ int HP_npc_barter_delfromsql_post;
+ int HP_npc_barter_delfromsql_sub_pre;
+ int HP_npc_barter_delfromsql_sub_post;
int HP_npc_db_checkid_pre;
int HP_npc_db_checkid_post;
+ int HP_npc_refresh_pre;
+ int HP_npc_refresh_post;
int HP_npc_secure_timeout_timer_pre;
int HP_npc_secure_timeout_timer_post;
int HP_nullpo_assert_report_pre;
int HP_nullpo_assert_report_post;
+ int HP_packets_init_pre;
+ int HP_packets_init_post;
+ int HP_packets_final_pre;
+ int HP_packets_final_post;
+ int HP_packets_addLens_pre;
+ int HP_packets_addLens_post;
+ int HP_packets_addLen_pre;
+ int HP_packets_addLen_post;
int HP_party_init_pre;
int HP_party_init_post;
int HP_party_final_pre;
@@ -10039,6 +11139,8 @@ struct {
int HP_pc_isequip_post;
int HP_pc_equippoint_pre;
int HP_pc_equippoint_post;
+ int HP_pc_item_equippoint_pre;
+ int HP_pc_item_equippoint_post;
int HP_pc_setinventorydata_pre;
int HP_pc_setinventorydata_post;
int HP_pc_checkskill_pre;
@@ -10051,6 +11153,10 @@ struct {
int HP_pc_checkequip_post;
int HP_pc_calc_skilltree_pre;
int HP_pc_calc_skilltree_post;
+ int HP_pc_calc_skilltree_clear_pre;
+ int HP_pc_calc_skilltree_clear_post;
+ int HP_pc_calc_skilltree_bonus_pre;
+ int HP_pc_calc_skilltree_bonus_post;
int HP_pc_calc_skilltree_normalize_job_pre;
int HP_pc_calc_skilltree_normalize_job_post;
int HP_pc_clean_skilltree_pre;
@@ -10147,6 +11253,8 @@ struct {
int HP_pc_maxjoblv_post;
int HP_pc_checkbaselevelup_pre;
int HP_pc_checkbaselevelup_post;
+ int HP_pc_checkbaselevelup_sc_pre;
+ int HP_pc_checkbaselevelup_sc_post;
int HP_pc_checkjoblevelup_pre;
int HP_pc_checkjoblevelup_post;
int HP_pc_gainexp_pre;
@@ -10179,6 +11287,8 @@ struct {
int HP_pc_resetstate_post;
int HP_pc_resetskill_pre;
int HP_pc_resetskill_post;
+ int HP_pc_resetskill_job_pre;
+ int HP_pc_resetskill_job_post;
int HP_pc_resetfeel_pre;
int HP_pc_resetfeel_post;
int HP_pc_resethate_pre;
@@ -10299,8 +11409,12 @@ struct {
int HP_pc_delinvincibletimer_post;
int HP_pc_addspiritball_pre;
int HP_pc_addspiritball_post;
+ int HP_pc_addspiritball_sub_pre;
+ int HP_pc_addspiritball_sub_post;
int HP_pc_delspiritball_pre;
int HP_pc_delspiritball_post;
+ int HP_pc_delspiritball_sub_pre;
+ int HP_pc_delspiritball_sub_post;
int HP_pc_getmaxspiritball_pre;
int HP_pc_getmaxspiritball_post;
int HP_pc_addfame_pre;
@@ -10313,6 +11427,12 @@ struct {
int HP_pc_set_hate_mob_post;
int HP_pc_readdb_pre;
int HP_pc_readdb_post;
+ int HP_pc_read_exp_db_pre;
+ int HP_pc_read_exp_db_post;
+ int HP_pc_read_exp_db_sub_pre;
+ int HP_pc_read_exp_db_sub_post;
+ int HP_pc_read_exp_db_sub_class_pre;
+ int HP_pc_read_exp_db_sub_class_post;
int HP_pc_map_day_timer_pre;
int HP_pc_map_day_timer_post;
int HP_pc_map_night_timer_pre;
@@ -10389,6 +11509,8 @@ struct {
int HP_pc_follow_timer_post;
int HP_pc_read_skill_tree_pre;
int HP_pc_read_skill_tree_post;
+ int HP_pc_read_skill_job_skip_pre;
+ int HP_pc_read_skill_job_skip_post;
int HP_pc_clear_skill_tree_pre;
int HP_pc_clear_skill_tree_post;
int HP_pc_isUseitem_pre;
@@ -10421,6 +11543,14 @@ struct {
int HP_pc_db_checkid_post;
int HP_pc_validate_levels_pre;
int HP_pc_validate_levels_post;
+ int HP_pc_update_job_and_level_pre;
+ int HP_pc_update_job_and_level_post;
+ int HP_pc_clear_exp_groups_pre;
+ int HP_pc_clear_exp_groups_post;
+ int HP_pc_init_exp_groups_pre;
+ int HP_pc_init_exp_groups_post;
+ int HP_pc_job_is_dummy_pre;
+ int HP_pc_job_is_dummy_post;
int HP_pc_autotrade_load_pre;
int HP_pc_autotrade_load_post;
int HP_pc_autotrade_update_pre;
@@ -10445,6 +11575,12 @@ struct {
int HP_pc_check_supernovice_call_post;
int HP_pc_check_basicskill_pre;
int HP_pc_check_basicskill_post;
+ int HP_pc_isDeathPenaltyJob_pre;
+ int HP_pc_isDeathPenaltyJob_post;
+ int HP_pc_has_second_costume_pre;
+ int HP_pc_has_second_costume_post;
+ int HP_pc_expandInventory_pre;
+ int HP_pc_expandInventory_post;
int HP_libpcre_compile_pre;
int HP_libpcre_compile_post;
int HP_libpcre_study_pre;
@@ -10537,6 +11673,16 @@ struct {
int HP_pet_skill_support_timer_post;
int HP_pet_read_db_pre;
int HP_pet_read_db_post;
+ int HP_pet_read_db_libconfig_pre;
+ int HP_pet_read_db_libconfig_post;
+ int HP_pet_read_db_sub_pre;
+ int HP_pet_read_db_sub_post;
+ int HP_pet_read_db_sub_intimacy_pre;
+ int HP_pet_read_db_sub_intimacy_post;
+ int HP_pet_read_db_clear_pre;
+ int HP_pet_read_db_clear_post;
+ int HP_pet_read_db_sub_evolution_pre;
+ int HP_pet_read_db_sub_evolution_post;
int HP_quest_init_pre;
int HP_quest_init_post;
int HP_quest_final_pre;
@@ -10567,6 +11713,32 @@ struct {
int HP_quest_read_db_post;
int HP_quest_read_db_sub_pre;
int HP_quest_read_db_sub_post;
+ int HP_quest_questinfo_validate_icon_pre;
+ int HP_quest_questinfo_validate_icon_post;
+ int HP_quest_questinfo_refresh_pre;
+ int HP_quest_questinfo_refresh_post;
+ int HP_quest_questinfo_validate_pre;
+ int HP_quest_questinfo_validate_post;
+ int HP_quest_questinfo_validate_job_pre;
+ int HP_quest_questinfo_validate_job_post;
+ int HP_quest_questinfo_validate_sex_pre;
+ int HP_quest_questinfo_validate_sex_post;
+ int HP_quest_questinfo_validate_baselevel_pre;
+ int HP_quest_questinfo_validate_baselevel_post;
+ int HP_quest_questinfo_validate_joblevel_pre;
+ int HP_quest_questinfo_validate_joblevel_post;
+ int HP_quest_questinfo_validate_items_pre;
+ int HP_quest_questinfo_validate_items_post;
+ int HP_quest_questinfo_validate_homunculus_level_pre;
+ int HP_quest_questinfo_validate_homunculus_level_post;
+ int HP_quest_questinfo_validate_homunculus_type_pre;
+ int HP_quest_questinfo_validate_homunculus_type_post;
+ int HP_quest_questinfo_validate_quests_pre;
+ int HP_quest_questinfo_validate_quests_post;
+ int HP_quest_questinfo_validate_mercenary_class_pre;
+ int HP_quest_questinfo_validate_mercenary_class_post;
+ int HP_quest_questinfo_vector_clear_pre;
+ int HP_quest_questinfo_vector_clear_post;
int HP_rnd_init_pre;
int HP_rnd_init_post;
int HP_rnd_final_pre;
@@ -10583,6 +11755,40 @@ struct {
int HP_rnd_uniform_post;
int HP_rnd_uniform53_pre;
int HP_rnd_uniform53_post;
+ int HP_rodex_init_pre;
+ int HP_rodex_init_post;
+ int HP_rodex_final_pre;
+ int HP_rodex_final_post;
+ int HP_rodex_isenabled_pre;
+ int HP_rodex_isenabled_post;
+ int HP_rodex_open_pre;
+ int HP_rodex_open_post;
+ int HP_rodex_next_page_pre;
+ int HP_rodex_next_page_post;
+ int HP_rodex_refresh_pre;
+ int HP_rodex_refresh_post;
+ int HP_rodex_add_item_pre;
+ int HP_rodex_add_item_post;
+ int HP_rodex_remove_item_pre;
+ int HP_rodex_remove_item_post;
+ int HP_rodex_check_player_pre;
+ int HP_rodex_check_player_post;
+ int HP_rodex_send_mail_pre;
+ int HP_rodex_send_mail_post;
+ int HP_rodex_send_mail_result_pre;
+ int HP_rodex_send_mail_result_post;
+ int HP_rodex_get_mail_pre;
+ int HP_rodex_get_mail_post;
+ int HP_rodex_read_mail_pre;
+ int HP_rodex_read_mail_post;
+ int HP_rodex_get_zeny_pre;
+ int HP_rodex_get_zeny_post;
+ int HP_rodex_get_items_pre;
+ int HP_rodex_get_items_post;
+ int HP_rodex_delete_mail_pre;
+ int HP_rodex_delete_mail_post;
+ int HP_rodex_clean_pre;
+ int HP_rodex_clean_post;
int HP_script_init_pre;
int HP_script_init_post;
int HP_script_final_pre;
@@ -10625,6 +11831,8 @@ struct {
int HP_script_get_val_post;
int HP_script_get_val_ref_str_pre;
int HP_script_get_val_ref_str_post;
+ int HP_script_get_val_pc_ref_str_pre;
+ int HP_script_get_val_pc_ref_str_post;
int HP_script_get_val_scope_str_pre;
int HP_script_get_val_scope_str_post;
int HP_script_get_val_npc_str_pre;
@@ -10633,6 +11841,8 @@ struct {
int HP_script_get_val_instance_str_post;
int HP_script_get_val_ref_num_pre;
int HP_script_get_val_ref_num_post;
+ int HP_script_get_val_pc_ref_num_pre;
+ int HP_script_get_val_pc_ref_num_post;
int HP_script_get_val_scope_num_pre;
int HP_script_get_val_scope_num_post;
int HP_script_get_val_npc_num_pre;
@@ -10691,6 +11901,8 @@ struct {
int HP_script_config_read_post;
int HP_script_add_str_pre;
int HP_script_add_str_post;
+ int HP_script_add_variable_pre;
+ int HP_script_add_variable_post;
int HP_script_get_str_pre;
int HP_script_get_str_post;
int HP_script_search_str_pre;
@@ -10787,6 +11999,8 @@ struct {
int HP_script_set_reg_post;
int HP_script_set_reg_ref_str_pre;
int HP_script_set_reg_ref_str_post;
+ int HP_script_set_reg_pc_ref_str_pre;
+ int HP_script_set_reg_pc_ref_str_post;
int HP_script_set_reg_scope_str_pre;
int HP_script_set_reg_scope_str_post;
int HP_script_set_reg_npc_str_pre;
@@ -10795,6 +12009,8 @@ struct {
int HP_script_set_reg_instance_str_post;
int HP_script_set_reg_ref_num_pre;
int HP_script_set_reg_ref_num_post;
+ int HP_script_set_reg_pc_ref_num_pre;
+ int HP_script_set_reg_pc_ref_num_post;
int HP_script_set_reg_scope_num_pre;
int HP_script_set_reg_scope_num_post;
int HP_script_set_reg_npc_num_pre;
@@ -10825,6 +12041,12 @@ struct {
int HP_script_add_autobonus_post;
int HP_script_menu_countoptions_pre;
int HP_script_menu_countoptions_post;
+ int HP_script_buildin_recovery_sub_pre;
+ int HP_script_buildin_recovery_sub_post;
+ int HP_script_buildin_recovery_pc_sub_pre;
+ int HP_script_buildin_recovery_pc_sub_post;
+ int HP_script_buildin_recovery_bl_sub_pre;
+ int HP_script_buildin_recovery_bl_sub_post;
int HP_script_buildin_areawarp_sub_pre;
int HP_script_buildin_areawarp_sub_post;
int HP_script_buildin_areapercentheal_sub_pre;
@@ -10873,6 +12095,8 @@ struct {
int HP_script_cleanfloor_sub_post;
int HP_script_run_func_pre;
int HP_script_run_func_post;
+ int HP_script_sprintf_helper_pre;
+ int HP_script_sprintf_helper_post;
int HP_script_getfuncname_pre;
int HP_script_getfuncname_post;
int HP_script_calc_hash_ci_pre;
@@ -10995,10 +12219,18 @@ struct {
int HP_skill_get_mhp_post;
int HP_skill_get_sp_pre;
int HP_skill_get_sp_post;
+ int HP_skill_get_hp_rate_pre;
+ int HP_skill_get_hp_rate_post;
+ int HP_skill_get_sp_rate_pre;
+ int HP_skill_get_sp_rate_post;
int HP_skill_get_state_pre;
int HP_skill_get_state_post;
int HP_skill_get_spiritball_pre;
int HP_skill_get_spiritball_post;
+ int HP_skill_get_itemid_pre;
+ int HP_skill_get_itemid_post;
+ int HP_skill_get_itemqty_pre;
+ int HP_skill_get_itemqty_post;
int HP_skill_get_zeny_pre;
int HP_skill_get_zeny_post;
int HP_skill_get_num_pre;
@@ -11055,8 +12287,6 @@ struct {
int HP_skill_get_name_post;
int HP_skill_get_desc_pre;
int HP_skill_get_desc_post;
- int HP_skill_chk_pre;
- int HP_skill_chk_post;
int HP_skill_get_casttype_pre;
int HP_skill_get_casttype_post;
int HP_skill_get_casttype2_pre;
@@ -11213,6 +12443,8 @@ struct {
int HP_skill_cell_overlap_post;
int HP_skill_timerskill_pre;
int HP_skill_timerskill_post;
+ int HP_skill_trap_do_splash_pre;
+ int HP_skill_trap_do_splash_post;
int HP_skill_trap_splash_pre;
int HP_skill_trap_splash_post;
int HP_skill_check_condition_mercenary_pre;
@@ -11335,8 +12567,6 @@ struct {
int HP_skill_parse_row_spellbookdb_post;
int HP_skill_parse_row_magicmushroomdb_pre;
int HP_skill_parse_row_magicmushroomdb_post;
- int HP_skill_parse_row_reproducedb_pre;
- int HP_skill_parse_row_reproducedb_post;
int HP_skill_parse_row_improvisedb_pre;
int HP_skill_parse_row_improvisedb_post;
int HP_skill_parse_row_changematerialdb_pre;
@@ -11461,10 +12691,14 @@ struct {
int HP_sockt_realloc_writefifo_post;
int HP_sockt_wfifoset_pre;
int HP_sockt_wfifoset_post;
+ int HP_sockt_wfifohead_pre;
+ int HP_sockt_wfifohead_post;
int HP_sockt_rfifoskip_pre;
int HP_sockt_rfifoskip_post;
int HP_sockt_close_pre;
int HP_sockt_close_post;
+ int HP_sockt_validateWfifo_pre;
+ int HP_sockt_validateWfifo_post;
int HP_sockt_session_is_valid_pre;
int HP_sockt_session_is_valid_post;
int HP_sockt_session_is_active_pre;
@@ -11641,6 +12875,22 @@ struct {
int HP_status_change_start_post;
int HP_status_change_end__pre;
int HP_status_change_end__post;
+ int HP_status_is_immune_to_status_pre;
+ int HP_status_is_immune_to_status_post;
+ int HP_status_is_boss_resist_sc_pre;
+ int HP_status_is_boss_resist_sc_post;
+ int HP_status_end_sc_before_start_pre;
+ int HP_status_end_sc_before_start_post;
+ int HP_status_change_start_stop_action_pre;
+ int HP_status_change_start_stop_action_post;
+ int HP_status_change_start_set_option_pre;
+ int HP_status_change_start_set_option_post;
+ int HP_status_get_val_flag_pre;
+ int HP_status_get_val_flag_post;
+ int HP_status_change_start_display_pre;
+ int HP_status_change_start_display_post;
+ int HP_status_change_start_unknown_sc_pre;
+ int HP_status_change_start_unknown_sc_post;
int HP_status_kaahi_heal_timer_pre;
int HP_status_kaahi_heal_timer_post;
int HP_status_change_timer_pre;
@@ -11661,6 +12911,8 @@ struct {
int HP_status_calc_pc__post;
int HP_status_calc_pc_additional_pre;
int HP_status_calc_pc_additional_post;
+ int HP_status_calc_pc_recover_hp_pre;
+ int HP_status_calc_pc_recover_hp_post;
int HP_status_calc_homunculus__pre;
int HP_status_calc_homunculus__post;
int HP_status_calc_mercenary__pre;
@@ -11715,6 +12967,10 @@ struct {
int HP_status_get_base_maxhp_post;
int HP_status_get_base_maxsp_pre;
int HP_status_get_base_maxsp_post;
+ int HP_status_get_restart_hp_pre;
+ int HP_status_get_restart_hp_post;
+ int HP_status_get_restart_sp_pre;
+ int HP_status_get_restart_sp_post;
int HP_status_calc_npc__pre;
int HP_status_calc_npc__post;
int HP_status_calc_str_pre;
@@ -12105,6 +13361,7 @@ struct {
struct {
struct HCache_interface HCache;
+ struct achievement_interface achievement;
struct atcommand_interface atcommand;
struct battle_interface battle;
struct battleground_interface bg;
@@ -12112,6 +13369,7 @@ struct {
struct channel_interface channel;
struct chat_interface chat;
struct chrif_interface chrif;
+ struct clan_interface clan;
struct clif_interface clif;
struct cmdline_interface cmdline;
struct console_interface console;
@@ -12142,6 +13400,7 @@ struct {
struct npc_chat_interface npc_chat;
struct npc_interface npc;
struct nullpo_interface nullpo;
+ struct packets_interface packets;
struct party_interface party;
struct path_interface path;
struct pc_groups_interface pcg;
@@ -12150,6 +13409,7 @@ struct {
struct pet_interface pet;
struct quest_interface quest;
struct rnd_interface rnd;
+ struct rodex_interface rodex;
struct script_interface script;
struct searchstore_interface searchstore;
struct showmsg_interface showmsg;
diff --git a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
index 53f65bcd3..8d031e140 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2017 Hercules Dev Team
+ * Copyright (C) 2013-2019 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -30,6 +30,61 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(HCache->init, HP_HCache_init) },
{ HP_POP(HCache->check, HP_HCache_check) },
{ HP_POP(HCache->open, HP_HCache_open) },
+/* achievement_interface */
+ { HP_POP(achievement->init, HP_achievement_init) },
+ { HP_POP(achievement->final, HP_achievement_final) },
+ { HP_POP(achievement->db_finalize, HP_achievement_db_finalize) },
+ { HP_POP(achievement->readdb, HP_achievement_readdb) },
+ { HP_POP(achievement->readdb_objectives_sub, HP_achievement_readdb_objectives_sub) },
+ { HP_POP(achievement->readdb_objectives, HP_achievement_readdb_objectives) },
+ { HP_POP(achievement->readdb_validate_criteria_mobid, HP_achievement_readdb_validate_criteria_mobid) },
+ { HP_POP(achievement->readdb_validate_criteria_jobid, HP_achievement_readdb_validate_criteria_jobid) },
+ { HP_POP(achievement->readdb_validate_criteria_itemid, HP_achievement_readdb_validate_criteria_itemid) },
+ { HP_POP(achievement->readdb_validate_criteria_statustype, HP_achievement_readdb_validate_criteria_statustype) },
+ { HP_POP(achievement->readdb_validate_criteria_itemtype, HP_achievement_readdb_validate_criteria_itemtype) },
+ { HP_POP(achievement->readdb_validate_criteria_weaponlv, HP_achievement_readdb_validate_criteria_weaponlv) },
+ { HP_POP(achievement->readdb_validate_criteria_achievement, HP_achievement_readdb_validate_criteria_achievement) },
+ { HP_POP(achievement->readdb_rewards, HP_achievement_readdb_rewards) },
+ { HP_POP(achievement->readdb_validate_reward_items, HP_achievement_readdb_validate_reward_items) },
+ { HP_POP(achievement->readdb_validate_reward_item_sub, HP_achievement_readdb_validate_reward_item_sub) },
+ { HP_POP(achievement->readdb_validate_reward_bonus, HP_achievement_readdb_validate_reward_bonus) },
+ { HP_POP(achievement->readdb_validate_reward_titleid, HP_achievement_readdb_validate_reward_titleid) },
+ { HP_POP(achievement->readdb_additional_fields, HP_achievement_readdb_additional_fields) },
+ { HP_POP(achievement->readdb_ranks, HP_achievement_readdb_ranks) },
+ { HP_POP(achievement->get, HP_achievement_get) },
+ { HP_POP(achievement->ensure, HP_achievement_ensure) },
+ { HP_POP(achievement->calculate_totals, HP_achievement_calculate_totals) },
+ { HP_POP(achievement->check_complete, HP_achievement_check_complete) },
+ { HP_POP(achievement->progress_add, HP_achievement_progress_add) },
+ { HP_POP(achievement->progress_set, HP_achievement_progress_set) },
+ { HP_POP(achievement->check_criteria, HP_achievement_check_criteria) },
+ { HP_POP(achievement->validate, HP_achievement_validate) },
+ { HP_POP(achievement->validate_type, HP_achievement_validate_type) },
+ { HP_POP(achievement->validate_mob_kill, HP_achievement_validate_mob_kill) },
+ { HP_POP(achievement->validate_mob_damage, HP_achievement_validate_mob_damage) },
+ { HP_POP(achievement->validate_pc_kill, HP_achievement_validate_pc_kill) },
+ { HP_POP(achievement->validate_pc_damage, HP_achievement_validate_pc_damage) },
+ { HP_POP(achievement->validate_jobchange, HP_achievement_validate_jobchange) },
+ { HP_POP(achievement->validate_stats, HP_achievement_validate_stats) },
+ { HP_POP(achievement->validate_chatroom_create, HP_achievement_validate_chatroom_create) },
+ { HP_POP(achievement->validate_chatroom_members, HP_achievement_validate_chatroom_members) },
+ { HP_POP(achievement->validate_friend_add, HP_achievement_validate_friend_add) },
+ { HP_POP(achievement->validate_party_create, HP_achievement_validate_party_create) },
+ { HP_POP(achievement->validate_marry, HP_achievement_validate_marry) },
+ { HP_POP(achievement->validate_adopt, HP_achievement_validate_adopt) },
+ { HP_POP(achievement->validate_zeny, HP_achievement_validate_zeny) },
+ { HP_POP(achievement->validate_refine, HP_achievement_validate_refine) },
+ { HP_POP(achievement->validate_item_get, HP_achievement_validate_item_get) },
+ { HP_POP(achievement->validate_item_sell, HP_achievement_validate_item_sell) },
+ { HP_POP(achievement->validate_achieve, HP_achievement_validate_achieve) },
+ { HP_POP(achievement->validate_taming, HP_achievement_validate_taming) },
+ { HP_POP(achievement->validate_achievement_rank, HP_achievement_validate_achievement_rank) },
+ { HP_POP(achievement->type_requires_criteria, HP_achievement_type_requires_criteria) },
+ { HP_POP(achievement->init_titles, HP_achievement_init_titles) },
+ { HP_POP(achievement->check_title, HP_achievement_check_title) },
+ { HP_POP(achievement->get_rewards, HP_achievement_get_rewards) },
+ { HP_POP(achievement->get_rewards_buffs, HP_achievement_get_rewards_buffs) },
+ { HP_POP(achievement->get_rewards_items, HP_achievement_get_rewards_items) },
/* atcommand_interface */
{ HP_POP(atcommand->init, HP_atcommand_init) },
{ HP_POP(atcommand->final, HP_atcommand_final) },
@@ -80,6 +135,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(battle->delay_damage, HP_battle_delay_damage) },
{ HP_POP(battle->drain, HP_battle_drain) },
{ HP_POP(battle->reflect_damage, HP_battle_reflect_damage) },
+ { HP_POP(battle->reflect_trap, HP_battle_reflect_trap) },
{ HP_POP(battle->attr_ratio, HP_battle_attr_ratio) },
{ HP_POP(battle->attr_fix, HP_battle_attr_fix) },
{ HP_POP(battle->calc_cardfix, HP_battle_calc_cardfix) },
@@ -236,7 +292,6 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(chrif->changesex, HP_chrif_changesex) },
{ HP_POP(chrif->divorce, HP_chrif_divorce) },
{ HP_POP(chrif->removefriend, HP_chrif_removefriend) },
- { HP_POP(chrif->send_report, HP_chrif_send_report) },
{ HP_POP(chrif->flush, HP_chrif_flush) },
{ HP_POP(chrif->skillid2idx, HP_chrif_skillid2idx) },
{ HP_POP(chrif->sd_to_auth, HP_chrif_sd_to_auth) },
@@ -273,6 +328,34 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(chrif->parse, HP_chrif_parse) },
{ HP_POP(chrif->save_scdata_single, HP_chrif_save_scdata_single) },
{ HP_POP(chrif->del_scdata_single, HP_chrif_del_scdata_single) },
+/* clan_interface */
+ { HP_POP(clan->init, HP_clan_init) },
+ { HP_POP(clan->final, HP_clan_final) },
+ { HP_POP(clan->config_read, HP_clan_config_read) },
+ { HP_POP(clan->config_read_additional_settings, HP_clan_config_read_additional_settings) },
+ { HP_POP(clan->read_db, HP_clan_read_db) },
+ { HP_POP(clan->read_db_sub, HP_clan_read_db_sub) },
+ { HP_POP(clan->read_db_additional_fields, HP_clan_read_db_additional_fields) },
+ { HP_POP(clan->read_buffs, HP_clan_read_buffs) },
+ { HP_POP(clan->search, HP_clan_search) },
+ { HP_POP(clan->searchname, HP_clan_searchname) },
+ { HP_POP(clan->getonlinesd, HP_clan_getonlinesd) },
+ { HP_POP(clan->getindex, HP_clan_getindex) },
+ { HP_POP(clan->join, HP_clan_join) },
+ { HP_POP(clan->member_online, HP_clan_member_online) },
+ { HP_POP(clan->leave, HP_clan_leave) },
+ { HP_POP(clan->send_message, HP_clan_send_message) },
+ { HP_POP(clan->recv_message, HP_clan_recv_message) },
+ { HP_POP(clan->member_offline, HP_clan_member_offline) },
+ { HP_POP(clan->set_constants, HP_clan_set_constants) },
+ { HP_POP(clan->get_id, HP_clan_get_id) },
+ { HP_POP(clan->buff_start, HP_clan_buff_start) },
+ { HP_POP(clan->buff_end, HP_clan_buff_end) },
+ { HP_POP(clan->reload, HP_clan_reload) },
+ { HP_POP(clan->rejoin, HP_clan_rejoin) },
+ { HP_POP(clan->inactivity_kick, HP_clan_inactivity_kick) },
+ { HP_POP(clan->request_kickoffline, HP_clan_request_kickoffline) },
+ { HP_POP(clan->request_membercount, HP_clan_request_membercount) },
/* clif_interface */
{ HP_POP(clif->init, HP_clif_init) },
{ HP_POP(clif->final, HP_clif_final) },
@@ -288,6 +371,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(clif->parse_cmd, HP_clif_parse_cmd) },
{ HP_POP(clif->decrypt_cmd, HP_clif_decrypt_cmd) },
{ HP_POP(clif->authok, HP_clif_authok) },
+ { HP_POP(clif->auth_error, HP_clif_auth_error) },
{ HP_POP(clif->authrefuse, HP_clif_authrefuse) },
{ HP_POP(clif->authfail_fd, HP_clif_authfail_fd) },
{ HP_POP(clif->charselectok, HP_clif_charselectok) },
@@ -297,6 +381,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(clif->dropitem, HP_clif_dropitem) },
{ HP_POP(clif->delitem, HP_clif_delitem) },
{ HP_POP(clif->takeitem, HP_clif_takeitem) },
+ { HP_POP(clif->item_movefailed, HP_clif_item_movefailed) },
{ HP_POP(clif->item_equip, HP_clif_item_equip) },
{ HP_POP(clif->item_normal, HP_clif_item_normal) },
{ HP_POP(clif->arrowequip, HP_clif_arrowequip) },
@@ -308,11 +393,11 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(clif->unequipitemack, HP_clif_unequipitemack) },
{ HP_POP(clif->useitemack, HP_clif_useitemack) },
{ HP_POP(clif->addcards, HP_clif_addcards) },
- { HP_POP(clif->addcards2, HP_clif_addcards2) },
{ HP_POP(clif->item_sub, HP_clif_item_sub) },
{ HP_POP(clif->getareachar_item, HP_clif_getareachar_item) },
{ HP_POP(clif->cart_additem_ack, HP_clif_cart_additem_ack) },
{ HP_POP(clif->cashshop_load, HP_clif_cashshop_load) },
+ { HP_POP(clif->cashShopSchedule, HP_clif_cashShopSchedule) },
{ HP_POP(clif->package_announce, HP_clif_package_announce) },
{ HP_POP(clif->item_drop_announce, HP_clif_item_drop_announce) },
{ HP_POP(clif->clearunit_single, HP_clif_clearunit_single) },
@@ -345,6 +430,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(clif->graffiti_entry, HP_clif_graffiti_entry) },
{ HP_POP(clif->spawn, HP_clif_spawn) },
{ HP_POP(clif->changemap, HP_clif_changemap) },
+ { HP_POP(clif->changemap_airship, HP_clif_changemap_airship) },
{ HP_POP(clif->changemapcell, HP_clif_changemapcell) },
{ HP_POP(clif->map_property, HP_clif_map_property) },
{ HP_POP(clif->pvpset, HP_clif_pvpset) },
@@ -353,6 +439,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(clif->map_type, HP_clif_map_type) },
{ HP_POP(clif->maptypeproperty2, HP_clif_maptypeproperty2) },
{ HP_POP(clif->changemapserver, HP_clif_changemapserver) },
+ { HP_POP(clif->changemapserver_airship, HP_clif_changemapserver_airship) },
{ HP_POP(clif->npcbuysell, HP_clif_npcbuysell) },
{ HP_POP(clif->buylist, HP_clif_buylist) },
{ HP_POP(clif->selllist, HP_clif_selllist) },
@@ -396,9 +483,18 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(clif->combo_delay, HP_clif_combo_delay) },
{ HP_POP(clif->status_change, HP_clif_status_change) },
{ HP_POP(clif->insert_card, HP_clif_insert_card) },
- { HP_POP(clif->inventorylist, HP_clif_inventorylist) },
- { HP_POP(clif->equiplist, HP_clif_equiplist) },
- { HP_POP(clif->cartlist, HP_clif_cartlist) },
+ { HP_POP(clif->inventoryList, HP_clif_inventoryList) },
+ { HP_POP(clif->inventoryItems, HP_clif_inventoryItems) },
+ { HP_POP(clif->equipList, HP_clif_equipList) },
+ { HP_POP(clif->equipItems, HP_clif_equipItems) },
+ { HP_POP(clif->cartList, HP_clif_cartList) },
+ { HP_POP(clif->cartItems, HP_clif_cartItems) },
+ { HP_POP(clif->inventoryExpansionInfo, HP_clif_inventoryExpansionInfo) },
+ { HP_POP(clif->inventoryExpandAck, HP_clif_inventoryExpandAck) },
+ { HP_POP(clif->inventoryExpandResult, HP_clif_inventoryExpandResult) },
+ { HP_POP(clif->pInventoryExpansion, HP_clif_pInventoryExpansion) },
+ { HP_POP(clif->pInventoryExpansionConfirmed, HP_clif_pInventoryExpansionConfirmed) },
+ { HP_POP(clif->pInventoryExpansionRejected, HP_clif_pInventoryExpansionRejected) },
{ HP_POP(clif->favorite_item, HP_clif_favorite_item) },
{ HP_POP(clif->clearcart, HP_clif_clearcart) },
{ HP_POP(clif->item_identify_list, HP_clif_item_identify_list) },
@@ -427,13 +523,14 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(clif->mission_info, HP_clif_mission_info) },
{ HP_POP(clif->feel_hate_reset, HP_clif_feel_hate_reset) },
{ HP_POP(clif->partytickack, HP_clif_partytickack) },
- { HP_POP(clif->equiptickack, HP_clif_equiptickack) },
+ { HP_POP(clif->zc_config, HP_clif_zc_config) },
{ HP_POP(clif->viewequip_ack, HP_clif_viewequip_ack) },
{ HP_POP(clif->equpcheckbox, HP_clif_equpcheckbox) },
{ HP_POP(clif->displayexp, HP_clif_displayexp) },
{ HP_POP(clif->font, HP_clif_font) },
{ HP_POP(clif->progressbar, HP_clif_progressbar) },
{ HP_POP(clif->progressbar_abort, HP_clif_progressbar_abort) },
+ { HP_POP(clif->progressbar_unit, HP_clif_progressbar_unit) },
{ HP_POP(clif->showdigit, HP_clif_showdigit) },
{ HP_POP(clif->elementalconverter_list, HP_clif_elementalconverter_list) },
{ HP_POP(clif->spellbook_list, HP_clif_spellbook_list) },
@@ -488,6 +585,8 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(clif->specialeffect, HP_clif_specialeffect) },
{ HP_POP(clif->specialeffect_single, HP_clif_specialeffect_single) },
{ HP_POP(clif->specialeffect_value, HP_clif_specialeffect_value) },
+ { HP_POP(clif->removeSpecialEffect, HP_clif_removeSpecialEffect) },
+ { HP_POP(clif->removeSpecialEffect_single, HP_clif_removeSpecialEffect_single) },
{ HP_POP(clif->millenniumshield, HP_clif_millenniumshield) },
{ HP_POP(clif->spiritcharm, HP_clif_spiritcharm) },
{ HP_POP(clif->charm_single, HP_clif_charm_single) },
@@ -513,10 +612,15 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(clif->broadcast2, HP_clif_broadcast2) },
{ HP_POP(clif->messagecolor_self, HP_clif_messagecolor_self) },
{ HP_POP(clif->messagecolor, HP_clif_messagecolor) },
+ { HP_POP(clif->serviceMessageColor, HP_clif_serviceMessageColor) },
{ HP_POP(clif->disp_overhead, HP_clif_disp_overhead) },
+ { HP_POP(clif->notify_playerchat, HP_clif_notify_playerchat) },
{ HP_POP(clif->msgtable, HP_clif_msgtable) },
{ HP_POP(clif->msgtable_num, HP_clif_msgtable_num) },
{ HP_POP(clif->msgtable_skill, HP_clif_msgtable_skill) },
+ { HP_POP(clif->msgtable_str, HP_clif_msgtable_str) },
+ { HP_POP(clif->msgtable_str_color, HP_clif_msgtable_str_color) },
+ { HP_POP(clif->msgtable_color, HP_clif_msgtable_color) },
{ HP_POP(clif->message, HP_clif_message) },
{ HP_POP(clif->messageln, HP_clif_messageln) },
{ HP_POP(clif->process_chat_message, HP_clif_process_chat_message) },
@@ -539,8 +643,13 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(clif->vendinglist, HP_clif_vendinglist) },
{ HP_POP(clif->buyvending, HP_clif_buyvending) },
{ HP_POP(clif->openvending, HP_clif_openvending) },
+ { HP_POP(clif->openvendingAck, HP_clif_openvendingAck) },
{ HP_POP(clif->vendingreport, HP_clif_vendingreport) },
- { HP_POP(clif->storagelist, HP_clif_storagelist) },
+ { HP_POP(clif->storageList, HP_clif_storageList) },
+ { HP_POP(clif->guildStorageList, HP_clif_guildStorageList) },
+ { HP_POP(clif->storageItems, HP_clif_storageItems) },
+ { HP_POP(clif->inventoryStart, HP_clif_inventoryStart) },
+ { HP_POP(clif->inventoryEnd, HP_clif_inventoryEnd) },
{ HP_POP(clif->updatestorageamount, HP_clif_updatestorageamount) },
{ HP_POP(clif->storageitemadded, HP_clif_storageitemadded) },
{ HP_POP(clif->storageitemremoved, HP_clif_storageitemremoved) },
@@ -553,6 +662,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(clif->party_created, HP_clif_party_created) },
{ HP_POP(clif->party_member_info, HP_clif_party_member_info) },
{ HP_POP(clif->party_info, HP_clif_party_info) },
+ { HP_POP(clif->party_job_and_level, HP_clif_party_job_and_level) },
{ HP_POP(clif->party_invite, HP_clif_party_invite) },
{ HP_POP(clif->party_inviteack, HP_clif_party_inviteack) },
{ HP_POP(clif->party_option, HP_clif_party_option) },
@@ -595,6 +705,8 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(clif->guild_positionnamelist, HP_clif_guild_positionnamelist) },
{ HP_POP(clif->guild_positioninfolist, HP_clif_guild_positioninfolist) },
{ HP_POP(clif->guild_expulsionlist, HP_clif_guild_expulsionlist) },
+ { HP_POP(clif->guild_set_position, HP_clif_guild_set_position) },
+ { HP_POP(clif->guild_position_selected, HP_clif_guild_position_selected) },
{ HP_POP(clif->validate_emblem, HP_clif_validate_emblem) },
{ HP_POP(clif->bg_hp, HP_clif_bg_hp) },
{ HP_POP(clif->bg_xy, HP_clif_bg_xy) },
@@ -636,6 +748,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(clif->quest_delete, HP_clif_quest_delete) },
{ HP_POP(clif->quest_update_status, HP_clif_quest_update_status) },
{ HP_POP(clif->quest_update_objective, HP_clif_quest_update_objective) },
+ { HP_POP(clif->quest_notify_objective, HP_clif_quest_notify_objective) },
{ HP_POP(clif->quest_show_event, HP_clif_quest_show_event) },
{ HP_POP(clif->mail_window, HP_clif_mail_window) },
{ HP_POP(clif->mail_read, HP_clif_mail_read) },
@@ -725,6 +838,12 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(clif->isdisguised, HP_clif_isdisguised) },
{ HP_POP(clif->navigate_to, HP_clif_navigate_to) },
{ HP_POP(clif->bl_type, HP_clif_bl_type) },
+ { HP_POP(clif->achievement_send_list, HP_clif_achievement_send_list) },
+ { HP_POP(clif->achievement_send_update, HP_clif_achievement_send_update) },
+ { HP_POP(clif->pAchievementGetReward, HP_clif_pAchievementGetReward) },
+ { HP_POP(clif->achievement_reward_ack, HP_clif_achievement_reward_ack) },
+ { HP_POP(clif->change_title_ack, HP_clif_change_title_ack) },
+ { HP_POP(clif->pChangeTitle, HP_clif_pChangeTitle) },
{ HP_POP(clif->pWantToConnection, HP_clif_pWantToConnection) },
{ HP_POP(clif->pLoadEndAck, HP_clif_pLoadEndAck) },
{ HP_POP(clif->pTickSend, HP_clif_pTickSend) },
@@ -771,7 +890,10 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(clif->pChangeCart, HP_clif_pChangeCart) },
{ HP_POP(clif->pStatusUp, HP_clif_pStatusUp) },
{ HP_POP(clif->pSkillUp, HP_clif_pSkillUp) },
+ { HP_POP(clif->useSkillToIdReal, HP_clif_useSkillToIdReal) },
{ HP_POP(clif->pUseSkillToId, HP_clif_pUseSkillToId) },
+ { HP_POP(clif->pStartUseSkillToId, HP_clif_pStartUseSkillToId) },
+ { HP_POP(clif->pStopUseSkillToId, HP_clif_pStopUseSkillToId) },
{ HP_POP(clif->pUseSkillToId_homun, HP_clif_pUseSkillToId_homun) },
{ HP_POP(clif->pUseSkillToId_mercenary, HP_clif_pUseSkillToId_mercenary) },
{ HP_POP(clif->pUseSkillToPos, HP_clif_pUseSkillToPos) },
@@ -905,7 +1027,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(clif->pAdopt_request, HP_clif_pAdopt_request) },
{ HP_POP(clif->pAdopt_reply, HP_clif_pAdopt_reply) },
{ HP_POP(clif->pViewPlayerEquip, HP_clif_pViewPlayerEquip) },
- { HP_POP(clif->pEquipTick, HP_clif_pEquipTick) },
+ { HP_POP(clif->p_cz_config, HP_clif_p_cz_config) },
{ HP_POP(clif->pquestStateAck, HP_clif_pquestStateAck) },
{ HP_POP(clif->pmercenary_action, HP_clif_pmercenary_action) },
{ HP_POP(clif->pBattleChat, HP_clif_pBattleChat) },
@@ -923,6 +1045,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(clif->pSkillSelectMenu, HP_clif_pSkillSelectMenu) },
{ HP_POP(clif->pMoveItem, HP_clif_pMoveItem) },
{ HP_POP(clif->pDull, HP_clif_pDull) },
+ { HP_POP(clif->p_cz_blocking_play_cancel, HP_clif_p_cz_blocking_play_cancel) },
{ HP_POP(clif->pBGQueueRegister, HP_clif_pBGQueueRegister) },
{ HP_POP(clif->pBGQueueCheckState, HP_clif_pBGQueueCheckState) },
{ HP_POP(clif->pBGQueueRevokeReq, HP_clif_pBGQueueRevokeReq) },
@@ -952,13 +1075,83 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(clif->pNPCShopClosed, HP_clif_pNPCShopClosed) },
{ HP_POP(clif->pNPCMarketClosed, HP_clif_pNPCMarketClosed) },
{ HP_POP(clif->pNPCMarketPurchase, HP_clif_pNPCMarketPurchase) },
- { HP_POP(clif->add_random_options, HP_clif_add_random_options) },
+ { HP_POP(clif->add_item_options, HP_clif_add_item_options) },
{ HP_POP(clif->pHotkeyRowShift, HP_clif_pHotkeyRowShift) },
{ HP_POP(clif->dressroom_open, HP_clif_dressroom_open) },
{ HP_POP(clif->pOneClick_ItemIdentify, HP_clif_pOneClick_ItemIdentify) },
{ HP_POP(clif->selectcart, HP_clif_selectcart) },
{ HP_POP(clif->pSelectCart, HP_clif_pSelectCart) },
{ HP_POP(clif->get_bl_name, HP_clif_get_bl_name) },
+ { HP_POP(clif->pRodexOpenWriteMail, HP_clif_pRodexOpenWriteMail) },
+ { HP_POP(clif->rodex_open_write_mail, HP_clif_rodex_open_write_mail) },
+ { HP_POP(clif->pRodexAddItem, HP_clif_pRodexAddItem) },
+ { HP_POP(clif->rodex_add_item_result, HP_clif_rodex_add_item_result) },
+ { HP_POP(clif->pRodexRemoveItem, HP_clif_pRodexRemoveItem) },
+ { HP_POP(clif->rodex_remove_item_result, HP_clif_rodex_remove_item_result) },
+ { HP_POP(clif->pRodexSendMail, HP_clif_pRodexSendMail) },
+ { HP_POP(clif->rodex_send_mail_result, HP_clif_rodex_send_mail_result) },
+ { HP_POP(clif->rodex_send_maillist, HP_clif_rodex_send_maillist) },
+ { HP_POP(clif->rodex_send_refresh, HP_clif_rodex_send_refresh) },
+ { HP_POP(clif->rodex_send_mails_all, HP_clif_rodex_send_mails_all) },
+ { HP_POP(clif->pRodexReadMail, HP_clif_pRodexReadMail) },
+ { HP_POP(clif->rodex_read_mail, HP_clif_rodex_read_mail) },
+ { HP_POP(clif->pRodexNextMaillist, HP_clif_pRodexNextMaillist) },
+ { HP_POP(clif->pRodexCloseMailbox, HP_clif_pRodexCloseMailbox) },
+ { HP_POP(clif->pRodexCancelWriteMail, HP_clif_pRodexCancelWriteMail) },
+ { HP_POP(clif->pRodexOpenMailbox, HP_clif_pRodexOpenMailbox) },
+ { HP_POP(clif->pRodexCheckName, HP_clif_pRodexCheckName) },
+ { HP_POP(clif->rodex_checkname_result, HP_clif_rodex_checkname_result) },
+ { HP_POP(clif->pRodexDeleteMail, HP_clif_pRodexDeleteMail) },
+ { HP_POP(clif->rodex_delete_mail, HP_clif_rodex_delete_mail) },
+ { HP_POP(clif->pRodexRefreshMaillist, HP_clif_pRodexRefreshMaillist) },
+ { HP_POP(clif->pRodexRequestZeny, HP_clif_pRodexRequestZeny) },
+ { HP_POP(clif->rodex_request_zeny, HP_clif_rodex_request_zeny) },
+ { HP_POP(clif->pRodexRequestItems, HP_clif_pRodexRequestItems) },
+ { HP_POP(clif->rodex_request_items, HP_clif_rodex_request_items) },
+ { HP_POP(clif->rodex_icon, HP_clif_rodex_icon) },
+ { HP_POP(clif->skill_scale, HP_clif_skill_scale) },
+ { HP_POP(clif->clan_basicinfo, HP_clif_clan_basicinfo) },
+ { HP_POP(clif->clan_onlinecount, HP_clif_clan_onlinecount) },
+ { HP_POP(clif->clan_leave, HP_clif_clan_leave) },
+ { HP_POP(clif->clan_message, HP_clif_clan_message) },
+ { HP_POP(clif->pClanMessage, HP_clif_pClanMessage) },
+ { HP_POP(clif->hat_effect, HP_clif_hat_effect) },
+ { HP_POP(clif->hat_effect_single, HP_clif_hat_effect_single) },
+ { HP_POP(clif->overweight_percent, HP_clif_overweight_percent) },
+ { HP_POP(clif->pChangeDress, HP_clif_pChangeDress) },
+ { HP_POP(clif->pAttendanceDB, HP_clif_pAttendanceDB) },
+ { HP_POP(clif->attendancedb_libconfig_sub, HP_clif_attendancedb_libconfig_sub) },
+ { HP_POP(clif->attendance_timediff, HP_clif_attendance_timediff) },
+ { HP_POP(clif->attendance_getendtime, HP_clif_attendance_getendtime) },
+ { HP_POP(clif->pOpenUIRequest, HP_clif_pOpenUIRequest) },
+ { HP_POP(clif->open_ui, HP_clif_open_ui) },
+ { HP_POP(clif->pAttendanceRewardRequest, HP_clif_pAttendanceRewardRequest) },
+ { HP_POP(clif->ui_action, HP_clif_ui_action) },
+ { HP_POP(clif->pPrivateAirshipRequest, HP_clif_pPrivateAirshipRequest) },
+ { HP_POP(clif->PrivateAirshipResponse, HP_clif_PrivateAirshipResponse) },
+ { HP_POP(clif->stylist_vector_init, HP_clif_stylist_vector_init) },
+ { HP_POP(clif->stylist_vector_clear, HP_clif_stylist_vector_clear) },
+ { HP_POP(clif->stylist_read_db_libconfig, HP_clif_stylist_read_db_libconfig) },
+ { HP_POP(clif->stylist_read_db_libconfig_sub, HP_clif_stylist_read_db_libconfig_sub) },
+ { HP_POP(clif->style_change_validate_requirements, HP_clif_style_change_validate_requirements) },
+ { HP_POP(clif->stylist_send_rodexitem, HP_clif_stylist_send_rodexitem) },
+ { HP_POP(clif->pReqStyleChange, HP_clif_pReqStyleChange) },
+ { HP_POP(clif->pReqStyleChange2, HP_clif_pReqStyleChange2) },
+ { HP_POP(clif->cz_req_style_change_sub, HP_clif_cz_req_style_change_sub) },
+ { HP_POP(clif->style_change_response, HP_clif_style_change_response) },
+ { HP_POP(clif->pPetEvolution, HP_clif_pPetEvolution) },
+ { HP_POP(clif->petEvolutionResult, HP_clif_petEvolutionResult) },
+ { HP_POP(clif->party_dead_notification, HP_clif_party_dead_notification) },
+ { HP_POP(clif->pMemorialDungeonCommand, HP_clif_pMemorialDungeonCommand) },
+ { HP_POP(clif->camera_showWindow, HP_clif_camera_showWindow) },
+ { HP_POP(clif->camera_change, HP_clif_camera_change) },
+ { HP_POP(clif->pCameraInfo, HP_clif_pCameraInfo) },
+ { HP_POP(clif->item_preview, HP_clif_item_preview) },
+ { HP_POP(clif->enchant_equipment, HP_clif_enchant_equipment) },
+ { HP_POP(clif->pReqRemainTime, HP_clif_pReqRemainTime) },
+ { HP_POP(clif->npc_barter_open, HP_clif_npc_barter_open) },
+ { HP_POP(clif->pNPCBarterClosed, HP_clif_pNPCBarterClosed) },
+ { HP_POP(clif->pNPCBarterPurchase, HP_clif_pNPCBarterPurchase) },
/* cmdline_interface */
{ HP_POP(cmdline->init, HP_cmdline_init) },
{ HP_POP(cmdline->final, HP_cmdline_final) },
@@ -1218,6 +1411,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(instance->set_timeout, HP_instance_set_timeout) },
{ HP_POP(instance->valid, HP_instance_valid) },
{ HP_POP(instance->destroy_timer, HP_instance_destroy_timer) },
+ { HP_POP(instance->force_destroy, HP_instance_force_destroy) },
/* intif_interface */
{ HP_POP(intif->parse, HP_intif_parse) },
{ HP_POP(intif->create_pet, HP_intif_create_pet) },
@@ -1228,6 +1422,8 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(intif->wis_message_to_gm, HP_intif_wis_message_to_gm) },
{ HP_POP(intif->saveregistry, HP_intif_saveregistry) },
{ HP_POP(intif->request_registry, HP_intif_request_registry) },
+ { HP_POP(intif->request_account_storage, HP_intif_request_account_storage) },
+ { HP_POP(intif->send_account_storage, HP_intif_send_account_storage) },
{ HP_POP(intif->request_guild_storage, HP_intif_request_guild_storage) },
{ HP_POP(intif->send_guild_storage, HP_intif_send_guild_storage) },
{ HP_POP(intif->create_party, HP_intif_create_party) },
@@ -1286,15 +1482,26 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(intif->elemental_request, HP_intif_elemental_request) },
{ HP_POP(intif->elemental_delete, HP_intif_elemental_delete) },
{ HP_POP(intif->elemental_save, HP_intif_elemental_save) },
+ { HP_POP(intif->rodex_requestinbox, HP_intif_rodex_requestinbox) },
+ { HP_POP(intif->rodex_checkhasnew, HP_intif_rodex_checkhasnew) },
+ { HP_POP(intif->rodex_updatemail, HP_intif_rodex_updatemail) },
+ { HP_POP(intif->rodex_sendmail, HP_intif_rodex_sendmail) },
+ { HP_POP(intif->rodex_checkname, HP_intif_rodex_checkname) },
+ { HP_POP(intif->clan_kickoffline, HP_intif_clan_kickoffline) },
+ { HP_POP(intif->clan_membercount, HP_intif_clan_membercount) },
{ HP_POP(intif->request_accinfo, HP_intif_request_accinfo) },
{ HP_POP(intif->CheckForCharServer, HP_intif_CheckForCharServer) },
+ { HP_POP(intif->achievements_request, HP_intif_achievements_request) },
+ { HP_POP(intif->achievements_save, HP_intif_achievements_save) },
{ HP_POP(intif->pWisMessage, HP_intif_pWisMessage) },
{ HP_POP(intif->pWisEnd, HP_intif_pWisEnd) },
{ HP_POP(intif->pWisToGM_sub, HP_intif_pWisToGM_sub) },
{ HP_POP(intif->pWisToGM, HP_intif_pWisToGM) },
{ HP_POP(intif->pRegisters, HP_intif_pRegisters) },
+ { HP_POP(intif->pAccountStorage, HP_intif_pAccountStorage) },
{ HP_POP(intif->pChangeNameOk, HP_intif_pChangeNameOk) },
{ HP_POP(intif->pMessageToFD, HP_intif_pMessageToFD) },
+ { HP_POP(intif->pAccountStorageSaveAck, HP_intif_pAccountStorageSaveAck) },
{ HP_POP(intif->pLoadGuildStorage, HP_intif_pLoadGuildStorage) },
{ HP_POP(intif->pSaveGuildStorage, HP_intif_pSaveGuildStorage) },
{ HP_POP(intif->pPartyCreated, HP_intif_pPartyCreated) },
@@ -1350,6 +1557,12 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(intif->pRecvHomunculusData, HP_intif_pRecvHomunculusData) },
{ HP_POP(intif->pSaveHomunculusOk, HP_intif_pSaveHomunculusOk) },
{ HP_POP(intif->pDeleteHomunculusOk, HP_intif_pDeleteHomunculusOk) },
+ { HP_POP(intif->pRequestRodexOpenInbox, HP_intif_pRequestRodexOpenInbox) },
+ { HP_POP(intif->pRodexHasNew, HP_intif_pRodexHasNew) },
+ { HP_POP(intif->pRodexSendMail, HP_intif_pRodexSendMail) },
+ { HP_POP(intif->pRodexCheckName, HP_intif_pRodexCheckName) },
+ { HP_POP(intif->pRecvClanMemberAction, HP_intif_pRecvClanMemberAction) },
+ { HP_POP(intif->pAchievementsLoad, HP_intif_pAchievementsLoad) },
/* irc_bot_interface */
{ HP_POP(ircbot->init, HP_ircbot_init) },
{ HP_POP(ircbot->final, HP_ircbot_final) },
@@ -1378,6 +1591,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(itemdb->read_groups, HP_itemdb_read_groups) },
{ HP_POP(itemdb->read_chains, HP_itemdb_read_chains) },
{ HP_POP(itemdb->read_packages, HP_itemdb_read_packages) },
+ { HP_POP(itemdb->read_options, HP_itemdb_read_options) },
{ HP_POP(itemdb->write_cached_packages, HP_itemdb_write_cached_packages) },
{ HP_POP(itemdb->read_cached_packages, HP_itemdb_read_cached_packages) },
{ HP_POP(itemdb->name2id, HP_itemdb_name2id) },
@@ -1386,6 +1600,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(itemdb->load, HP_itemdb_load) },
{ HP_POP(itemdb->search, HP_itemdb_search) },
{ HP_POP(itemdb->exists, HP_itemdb_exists) },
+ { HP_POP(itemdb->option_exists, HP_itemdb_option_exists) },
{ HP_POP(itemdb->in_group, HP_itemdb_in_group) },
{ HP_POP(itemdb->group_item, HP_itemdb_group_item) },
{ HP_POP(itemdb->chain_item, HP_itemdb_chain_item) },
@@ -1418,6 +1633,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(itemdb->read_combos, HP_itemdb_read_combos) },
{ HP_POP(itemdb->gendercheck, HP_itemdb_gendercheck) },
{ HP_POP(itemdb->validate_entry, HP_itemdb_validate_entry) },
+ { HP_POP(itemdb->readdb_options_additional_fields, HP_itemdb_readdb_options_additional_fields) },
{ HP_POP(itemdb->readdb_additional_fields, HP_itemdb_readdb_additional_fields) },
{ HP_POP(itemdb->readdb_job_sub, HP_itemdb_readdb_job_sub) },
{ HP_POP(itemdb->readdb_libconfig_sub, HP_itemdb_readdb_libconfig_sub) },
@@ -1426,10 +1642,13 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(itemdb->read, HP_itemdb_read) },
{ HP_POP(itemdb->destroy_item_data, HP_itemdb_destroy_item_data) },
{ HP_POP(itemdb->final_sub, HP_itemdb_final_sub) },
+ { HP_POP(itemdb->options_final_sub, HP_itemdb_options_final_sub) },
{ HP_POP(itemdb->clear, HP_itemdb_clear) },
{ HP_POP(itemdb->id2combo, HP_itemdb_id2combo) },
{ HP_POP(itemdb->is_item_usable, HP_itemdb_is_item_usable) },
{ HP_POP(itemdb->lookup_const, HP_itemdb_lookup_const) },
+ { HP_POP(itemdb->lookup_const_mask, HP_itemdb_lookup_const_mask) },
+ { HP_POP(itemdb->addname_sub, HP_itemdb_addname_sub) },
/* libconfig_interface */
{ HP_POP(libconfig->read, HP_libconfig_read) },
{ HP_POP(libconfig->write, HP_libconfig_write) },
@@ -1535,9 +1754,11 @@ struct HookingPointData HookingPoints[] = {
/* map_interface */
{ HP_POP(map->zone_init, HP_map_zone_init) },
{ HP_POP(map->zone_remove, HP_map_zone_remove) },
+ { HP_POP(map->zone_remove_all, HP_map_zone_remove_all) },
{ HP_POP(map->zone_apply, HP_map_zone_apply) },
{ HP_POP(map->zone_change, HP_map_zone_change) },
{ HP_POP(map->zone_change2, HP_map_zone_change2) },
+ { HP_POP(map->zone_reload, HP_map_zone_reload) },
{ HP_POP(map->getcell, HP_map_getcell) },
{ HP_POP(map->setgatcell, HP_map_setgatcell) },
{ HP_POP(map->cellfromcache, HP_map_cellfromcache) },
@@ -1636,8 +1857,8 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(map->iwall_nextxy, HP_map_iwall_nextxy) },
{ HP_POP(map->create_map_data_other_server, HP_map_create_map_data_other_server) },
{ HP_POP(map->eraseallipport_sub, HP_map_eraseallipport_sub) },
- { HP_POP(map->init_mapcache, HP_map_init_mapcache) },
{ HP_POP(map->readfromcache, HP_map_readfromcache) },
+ { HP_POP(map->readfromcache_v1, HP_map_readfromcache_v1) },
{ HP_POP(map->addmap, HP_map_addmap) },
{ HP_POP(map->delmapid, HP_map_delmapid) },
{ HP_POP(map->zone_db_clear, HP_map_zone_db_clear) },
@@ -1739,6 +1960,8 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(mob->skill_id2skill_idx, HP_mob_skill_id2skill_idx) },
{ HP_POP(mob->db_searchname, HP_mob_db_searchname) },
{ HP_POP(mob->db_searchname_array_sub, HP_mob_db_searchname_array_sub) },
+ { HP_POP(mob->mvptomb_spawn_delayed, HP_mob_mvptomb_spawn_delayed) },
+ { HP_POP(mob->mvptomb_delayspawn, HP_mob_mvptomb_delayspawn) },
{ HP_POP(mob->mvptomb_create, HP_mob_mvptomb_create) },
{ HP_POP(mob->mvptomb_destroy, HP_mob_mvptomb_destroy) },
{ HP_POP(mob->db_searchname_array, HP_mob_db_searchname_array) },
@@ -1825,13 +2048,18 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(mob->read_randommonster, HP_mob_read_randommonster) },
{ HP_POP(mob->parse_row_chatdb, HP_mob_parse_row_chatdb) },
{ HP_POP(mob->readchatdb, HP_mob_readchatdb) },
- { HP_POP(mob->parse_row_mobskilldb, HP_mob_parse_row_mobskilldb) },
{ HP_POP(mob->readskilldb, HP_mob_readskilldb) },
{ HP_POP(mob->readdb_race2, HP_mob_readdb_race2) },
{ HP_POP(mob->readdb_itemratio, HP_mob_readdb_itemratio) },
{ HP_POP(mob->load, HP_mob_load) },
{ HP_POP(mob->clear_spawninfo, HP_mob_clear_spawninfo) },
+ { HP_POP(mob->get_item_drop_ratio, HP_mob_get_item_drop_ratio) },
+ { HP_POP(mob->set_item_drop_ratio, HP_mob_set_item_drop_ratio) },
+ { HP_POP(mob->final_ratio_sub, HP_mob_final_ratio_sub) },
{ HP_POP(mob->destroy_mob_db, HP_mob_destroy_mob_db) },
+ { HP_POP(mob->skill_db_libconfig, HP_mob_skill_db_libconfig) },
+ { HP_POP(mob->skill_db_libconfig_sub, HP_mob_skill_db_libconfig_sub) },
+ { HP_POP(mob->skill_db_libconfig_sub_skill, HP_mob_skill_db_libconfig_sub_skill) },
/* mutex_interface */
{ HP_POP(mutex->create, HP_mutex_create) },
{ HP_POP(mutex->destroy, HP_mutex_destroy) },
@@ -1957,15 +2185,26 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(npc->trader_pay, HP_npc_trader_pay) },
{ HP_POP(npc->trader_update, HP_npc_trader_update) },
{ HP_POP(npc->market_buylist, HP_npc_market_buylist) },
+ { HP_POP(npc->barter_buylist, HP_npc_barter_buylist) },
{ HP_POP(npc->trader_open, HP_npc_trader_open) },
{ HP_POP(npc->market_fromsql, HP_npc_market_fromsql) },
{ HP_POP(npc->market_tosql, HP_npc_market_tosql) },
{ HP_POP(npc->market_delfromsql, HP_npc_market_delfromsql) },
{ HP_POP(npc->market_delfromsql_sub, HP_npc_market_delfromsql_sub) },
+ { HP_POP(npc->barter_fromsql, HP_npc_barter_fromsql) },
+ { HP_POP(npc->barter_tosql, HP_npc_barter_tosql) },
+ { HP_POP(npc->barter_delfromsql, HP_npc_barter_delfromsql) },
+ { HP_POP(npc->barter_delfromsql_sub, HP_npc_barter_delfromsql_sub) },
{ HP_POP(npc->db_checkid, HP_npc_db_checkid) },
+ { HP_POP(npc->refresh, HP_npc_refresh) },
{ HP_POP(npc->secure_timeout_timer, HP_npc_secure_timeout_timer) },
/* nullpo_interface */
{ HP_POP(nullpo->assert_report, HP_nullpo_assert_report) },
+/* packets_interface */
+ { HP_POP(packets->init, HP_packets_init) },
+ { HP_POP(packets->final, HP_packets_final) },
+ { HP_POP(packets->addLens, HP_packets_addLens) },
+ { HP_POP(packets->addLen, HP_packets_addLen) },
/* party_interface */
{ HP_POP(party->init, HP_party_init) },
{ HP_POP(party->final, HP_party_final) },
@@ -2055,12 +2294,15 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(pc->reg_received, HP_pc_reg_received) },
{ HP_POP(pc->isequip, HP_pc_isequip) },
{ HP_POP(pc->equippoint, HP_pc_equippoint) },
+ { HP_POP(pc->item_equippoint, HP_pc_item_equippoint) },
{ HP_POP(pc->setinventorydata, HP_pc_setinventorydata) },
{ HP_POP(pc->checkskill, HP_pc_checkskill) },
{ HP_POP(pc->checkskill2, HP_pc_checkskill2) },
{ HP_POP(pc->checkallowskill, HP_pc_checkallowskill) },
{ HP_POP(pc->checkequip, HP_pc_checkequip) },
{ HP_POP(pc->calc_skilltree, HP_pc_calc_skilltree) },
+ { HP_POP(pc->calc_skilltree_clear, HP_pc_calc_skilltree_clear) },
+ { HP_POP(pc->calc_skilltree_bonus, HP_pc_calc_skilltree_bonus) },
{ HP_POP(pc->calc_skilltree_normalize_job, HP_pc_calc_skilltree_normalize_job) },
{ HP_POP(pc->clean_skilltree, HP_pc_clean_skilltree) },
{ HP_POP(pc->setpos, HP_pc_setpos) },
@@ -2109,6 +2351,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(pc->maxbaselv, HP_pc_maxbaselv) },
{ HP_POP(pc->maxjoblv, HP_pc_maxjoblv) },
{ HP_POP(pc->checkbaselevelup, HP_pc_checkbaselevelup) },
+ { HP_POP(pc->checkbaselevelup_sc, HP_pc_checkbaselevelup_sc) },
{ HP_POP(pc->checkjoblevelup, HP_pc_checkjoblevelup) },
{ HP_POP(pc->gainexp, HP_pc_gainexp) },
{ HP_POP(pc->nextbaseexp, HP_pc_nextbaseexp) },
@@ -2125,6 +2368,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(pc->resetlvl, HP_pc_resetlvl) },
{ HP_POP(pc->resetstate, HP_pc_resetstate) },
{ HP_POP(pc->resetskill, HP_pc_resetskill) },
+ { HP_POP(pc->resetskill_job, HP_pc_resetskill_job) },
{ HP_POP(pc->resetfeel, HP_pc_resetfeel) },
{ HP_POP(pc->resethate, HP_pc_resethate) },
{ HP_POP(pc->equipitem, HP_pc_equipitem) },
@@ -2185,13 +2429,18 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(pc->setinvincibletimer, HP_pc_setinvincibletimer) },
{ HP_POP(pc->delinvincibletimer, HP_pc_delinvincibletimer) },
{ HP_POP(pc->addspiritball, HP_pc_addspiritball) },
+ { HP_POP(pc->addspiritball_sub, HP_pc_addspiritball_sub) },
{ HP_POP(pc->delspiritball, HP_pc_delspiritball) },
+ { HP_POP(pc->delspiritball_sub, HP_pc_delspiritball_sub) },
{ HP_POP(pc->getmaxspiritball, HP_pc_getmaxspiritball) },
{ HP_POP(pc->addfame, HP_pc_addfame) },
{ HP_POP(pc->fame_rank, HP_pc_fame_rank) },
{ HP_POP(pc->famelist_type, HP_pc_famelist_type) },
{ HP_POP(pc->set_hate_mob, HP_pc_set_hate_mob) },
{ HP_POP(pc->readdb, HP_pc_readdb) },
+ { HP_POP(pc->read_exp_db, HP_pc_read_exp_db) },
+ { HP_POP(pc->read_exp_db_sub, HP_pc_read_exp_db_sub) },
+ { HP_POP(pc->read_exp_db_sub_class, HP_pc_read_exp_db_sub_class) },
{ HP_POP(pc->map_day_timer, HP_pc_map_day_timer) },
{ HP_POP(pc->map_night_timer, HP_pc_map_night_timer) },
{ HP_POP(pc->inventory_rentals, HP_pc_inventory_rentals) },
@@ -2230,6 +2479,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(pc->autosave, HP_pc_autosave) },
{ HP_POP(pc->follow_timer, HP_pc_follow_timer) },
{ HP_POP(pc->read_skill_tree, HP_pc_read_skill_tree) },
+ { HP_POP(pc->read_skill_job_skip, HP_pc_read_skill_job_skip) },
{ HP_POP(pc->clear_skill_tree, HP_pc_clear_skill_tree) },
{ HP_POP(pc->isUseitem, HP_pc_isUseitem) },
{ HP_POP(pc->show_steal, HP_pc_show_steal) },
@@ -2246,6 +2496,10 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(pc->expire_check, HP_pc_expire_check) },
{ HP_POP(pc->db_checkid, HP_pc_db_checkid) },
{ HP_POP(pc->validate_levels, HP_pc_validate_levels) },
+ { HP_POP(pc->update_job_and_level, HP_pc_update_job_and_level) },
+ { HP_POP(pc->clear_exp_groups, HP_pc_clear_exp_groups) },
+ { HP_POP(pc->init_exp_groups, HP_pc_init_exp_groups) },
+ { HP_POP(pc->job_is_dummy, HP_pc_job_is_dummy) },
{ HP_POP(pc->autotrade_load, HP_pc_autotrade_load) },
{ HP_POP(pc->autotrade_update, HP_pc_autotrade_update) },
{ HP_POP(pc->autotrade_start, HP_pc_autotrade_start) },
@@ -2258,6 +2512,9 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(pc->process_chat_message, HP_pc_process_chat_message) },
{ HP_POP(pc->check_supernovice_call, HP_pc_check_supernovice_call) },
{ HP_POP(pc->check_basicskill, HP_pc_check_basicskill) },
+ { HP_POP(pc->isDeathPenaltyJob, HP_pc_isDeathPenaltyJob) },
+ { HP_POP(pc->has_second_costume, HP_pc_has_second_costume) },
+ { HP_POP(pc->expandInventory, HP_pc_expandInventory) },
/* pcre_interface */
{ HP_POP(libpcre->compile, HP_libpcre_compile) },
{ HP_POP(libpcre->study, HP_libpcre_study) },
@@ -2306,6 +2563,11 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(pet->recovery_timer, HP_pet_recovery_timer) },
{ HP_POP(pet->skill_support_timer, HP_pet_skill_support_timer) },
{ HP_POP(pet->read_db, HP_pet_read_db) },
+ { HP_POP(pet->read_db_libconfig, HP_pet_read_db_libconfig) },
+ { HP_POP(pet->read_db_sub, HP_pet_read_db_sub) },
+ { HP_POP(pet->read_db_sub_intimacy, HP_pet_read_db_sub_intimacy) },
+ { HP_POP(pet->read_db_clear, HP_pet_read_db_clear) },
+ { HP_POP(pet->read_db_sub_evolution, HP_pet_read_db_sub_evolution) },
/* quest_interface */
{ HP_POP(quest->init, HP_quest_init) },
{ HP_POP(quest->final, HP_quest_final) },
@@ -2322,6 +2584,19 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(quest->clear, HP_quest_clear) },
{ HP_POP(quest->read_db, HP_quest_read_db) },
{ HP_POP(quest->read_db_sub, HP_quest_read_db_sub) },
+ { HP_POP(quest->questinfo_validate_icon, HP_quest_questinfo_validate_icon) },
+ { HP_POP(quest->questinfo_refresh, HP_quest_questinfo_refresh) },
+ { HP_POP(quest->questinfo_validate, HP_quest_questinfo_validate) },
+ { HP_POP(quest->questinfo_validate_job, HP_quest_questinfo_validate_job) },
+ { HP_POP(quest->questinfo_validate_sex, HP_quest_questinfo_validate_sex) },
+ { HP_POP(quest->questinfo_validate_baselevel, HP_quest_questinfo_validate_baselevel) },
+ { HP_POP(quest->questinfo_validate_joblevel, HP_quest_questinfo_validate_joblevel) },
+ { HP_POP(quest->questinfo_validate_items, HP_quest_questinfo_validate_items) },
+ { HP_POP(quest->questinfo_validate_homunculus_level, HP_quest_questinfo_validate_homunculus_level) },
+ { HP_POP(quest->questinfo_validate_homunculus_type, HP_quest_questinfo_validate_homunculus_type) },
+ { HP_POP(quest->questinfo_validate_quests, HP_quest_questinfo_validate_quests) },
+ { HP_POP(quest->questinfo_validate_mercenary_class, HP_quest_questinfo_validate_mercenary_class) },
+ { HP_POP(quest->questinfo_vector_clear, HP_quest_questinfo_vector_clear) },
/* rnd_interface */
{ HP_POP(rnd->init, HP_rnd_init) },
{ HP_POP(rnd->final, HP_rnd_final) },
@@ -2331,6 +2606,24 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(rnd->value, HP_rnd_value) },
{ HP_POP(rnd->uniform, HP_rnd_uniform) },
{ HP_POP(rnd->uniform53, HP_rnd_uniform53) },
+/* rodex_interface */
+ { HP_POP(rodex->init, HP_rodex_init) },
+ { HP_POP(rodex->final, HP_rodex_final) },
+ { HP_POP(rodex->isenabled, HP_rodex_isenabled) },
+ { HP_POP(rodex->open, HP_rodex_open) },
+ { HP_POP(rodex->next_page, HP_rodex_next_page) },
+ { HP_POP(rodex->refresh, HP_rodex_refresh) },
+ { HP_POP(rodex->add_item, HP_rodex_add_item) },
+ { HP_POP(rodex->remove_item, HP_rodex_remove_item) },
+ { HP_POP(rodex->check_player, HP_rodex_check_player) },
+ { HP_POP(rodex->send_mail, HP_rodex_send_mail) },
+ { HP_POP(rodex->send_mail_result, HP_rodex_send_mail_result) },
+ { HP_POP(rodex->get_mail, HP_rodex_get_mail) },
+ { HP_POP(rodex->read_mail, HP_rodex_read_mail) },
+ { HP_POP(rodex->get_zeny, HP_rodex_get_zeny) },
+ { HP_POP(rodex->get_items, HP_rodex_get_items) },
+ { HP_POP(rodex->delete_mail, HP_rodex_delete_mail) },
+ { HP_POP(rodex->clean, HP_rodex_clean) },
/* script_interface */
{ HP_POP(script->init, HP_script_init) },
{ HP_POP(script->final, HP_script_final) },
@@ -2353,10 +2646,12 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(script->push_val, HP_script_push_val) },
{ HP_POP(script->get_val, HP_script_get_val) },
{ HP_POP(script->get_val_ref_str, HP_script_get_val_ref_str) },
+ { HP_POP(script->get_val_pc_ref_str, HP_script_get_val_pc_ref_str) },
{ HP_POP(script->get_val_scope_str, HP_script_get_val_scope_str) },
{ HP_POP(script->get_val_npc_str, HP_script_get_val_npc_str) },
{ HP_POP(script->get_val_instance_str, HP_script_get_val_instance_str) },
{ HP_POP(script->get_val_ref_num, HP_script_get_val_ref_num) },
+ { HP_POP(script->get_val_pc_ref_num, HP_script_get_val_pc_ref_num) },
{ HP_POP(script->get_val_scope_num, HP_script_get_val_scope_num) },
{ HP_POP(script->get_val_npc_num, HP_script_get_val_npc_num) },
{ HP_POP(script->get_val_instance_num, HP_script_get_val_instance_num) },
@@ -2386,6 +2681,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(script->setarray_pc, HP_script_setarray_pc) },
{ HP_POP(script->config_read, HP_script_config_read) },
{ HP_POP(script->add_str, HP_script_add_str) },
+ { HP_POP(script->add_variable, HP_script_add_variable) },
{ HP_POP(script->get_str, HP_script_get_str) },
{ HP_POP(script->search_str, HP_script_search_str) },
{ HP_POP(script->setd_sub, HP_script_setd_sub) },
@@ -2434,10 +2730,12 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(script->errorwarning_sub, HP_script_errorwarning_sub) },
{ HP_POP(script->set_reg, HP_script_set_reg) },
{ HP_POP(script->set_reg_ref_str, HP_script_set_reg_ref_str) },
+ { HP_POP(script->set_reg_pc_ref_str, HP_script_set_reg_pc_ref_str) },
{ HP_POP(script->set_reg_scope_str, HP_script_set_reg_scope_str) },
{ HP_POP(script->set_reg_npc_str, HP_script_set_reg_npc_str) },
{ HP_POP(script->set_reg_instance_str, HP_script_set_reg_instance_str) },
{ HP_POP(script->set_reg_ref_num, HP_script_set_reg_ref_num) },
+ { HP_POP(script->set_reg_pc_ref_num, HP_script_set_reg_pc_ref_num) },
{ HP_POP(script->set_reg_scope_num, HP_script_set_reg_scope_num) },
{ HP_POP(script->set_reg_npc_num, HP_script_set_reg_npc_num) },
{ HP_POP(script->set_reg_instance_num, HP_script_set_reg_instance_num) },
@@ -2453,6 +2751,9 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(script->db_free_code_sub, HP_script_db_free_code_sub) },
{ HP_POP(script->add_autobonus, HP_script_add_autobonus) },
{ HP_POP(script->menu_countoptions, HP_script_menu_countoptions) },
+ { HP_POP(script->buildin_recovery_sub, HP_script_buildin_recovery_sub) },
+ { HP_POP(script->buildin_recovery_pc_sub, HP_script_buildin_recovery_pc_sub) },
+ { HP_POP(script->buildin_recovery_bl_sub, HP_script_buildin_recovery_bl_sub) },
{ HP_POP(script->buildin_areawarp_sub, HP_script_buildin_areawarp_sub) },
{ HP_POP(script->buildin_areapercentheal_sub, HP_script_buildin_areapercentheal_sub) },
{ HP_POP(script->buildin_delitem_delete, HP_script_buildin_delitem_delete) },
@@ -2477,6 +2778,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(script->buildin_mobuseskill_sub, HP_script_buildin_mobuseskill_sub) },
{ HP_POP(script->cleanfloor_sub, HP_script_cleanfloor_sub) },
{ HP_POP(script->run_func, HP_script_run_func) },
+ { HP_POP(script->sprintf_helper, HP_script_sprintf_helper) },
{ HP_POP(script->getfuncname, HP_script_getfuncname) },
{ HP_POP(script->calc_hash_ci, HP_script_calc_hash_ci) },
{ HP_POP(script->array_src, HP_script_array_src) },
@@ -2541,8 +2843,12 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(skill->get_hp, HP_skill_get_hp) },
{ HP_POP(skill->get_mhp, HP_skill_get_mhp) },
{ HP_POP(skill->get_sp, HP_skill_get_sp) },
+ { HP_POP(skill->get_hp_rate, HP_skill_get_hp_rate) },
+ { HP_POP(skill->get_sp_rate, HP_skill_get_sp_rate) },
{ HP_POP(skill->get_state, HP_skill_get_state) },
{ HP_POP(skill->get_spiritball, HP_skill_get_spiritball) },
+ { HP_POP(skill->get_itemid, HP_skill_get_itemid) },
+ { HP_POP(skill->get_itemqty, HP_skill_get_itemqty) },
{ HP_POP(skill->get_zeny, HP_skill_get_zeny) },
{ HP_POP(skill->get_num, HP_skill_get_num) },
{ HP_POP(skill->get_cast, HP_skill_get_cast) },
@@ -2571,7 +2877,6 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(skill->tree_get_max, HP_skill_tree_get_max) },
{ HP_POP(skill->get_name, HP_skill_get_name) },
{ HP_POP(skill->get_desc, HP_skill_get_desc) },
- { HP_POP(skill->chk, HP_skill_chk) },
{ HP_POP(skill->get_casttype, HP_skill_get_casttype) },
{ HP_POP(skill->get_casttype2, HP_skill_get_casttype2) },
{ HP_POP(skill->is_combo, HP_skill_is_combo) },
@@ -2650,6 +2955,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(skill->onskillusage, HP_skill_onskillusage) },
{ HP_POP(skill->cell_overlap, HP_skill_cell_overlap) },
{ HP_POP(skill->timerskill, HP_skill_timerskill) },
+ { HP_POP(skill->trap_do_splash, HP_skill_trap_do_splash) },
{ HP_POP(skill->trap_splash, HP_skill_trap_splash) },
{ HP_POP(skill->check_condition_mercenary, HP_skill_check_condition_mercenary) },
{ HP_POP(skill->locate_element_field, HP_skill_locate_element_field) },
@@ -2711,7 +3017,6 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(skill->parse_row_abradb, HP_skill_parse_row_abradb) },
{ HP_POP(skill->parse_row_spellbookdb, HP_skill_parse_row_spellbookdb) },
{ HP_POP(skill->parse_row_magicmushroomdb, HP_skill_parse_row_magicmushroomdb) },
- { HP_POP(skill->parse_row_reproducedb, HP_skill_parse_row_reproducedb) },
{ HP_POP(skill->parse_row_improvisedb, HP_skill_parse_row_improvisedb) },
{ HP_POP(skill->parse_row_changematerialdb, HP_skill_parse_row_changematerialdb) },
{ HP_POP(skill->usave_add, HP_skill_usave_add) },
@@ -2775,8 +3080,10 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(sockt->realloc_fifo, HP_sockt_realloc_fifo) },
{ HP_POP(sockt->realloc_writefifo, HP_sockt_realloc_writefifo) },
{ HP_POP(sockt->wfifoset, HP_sockt_wfifoset) },
+ { HP_POP(sockt->wfifohead, HP_sockt_wfifohead) },
{ HP_POP(sockt->rfifoskip, HP_sockt_rfifoskip) },
{ HP_POP(sockt->close, HP_sockt_close) },
+ { HP_POP(sockt->validateWfifo, HP_sockt_validateWfifo) },
{ HP_POP(sockt->session_is_valid, HP_sockt_session_is_valid) },
{ HP_POP(sockt->session_is_active, HP_sockt_session_is_active) },
{ HP_POP(sockt->flush, HP_sockt_flush) },
@@ -2867,6 +3174,14 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(status->get_sc_def, HP_status_get_sc_def) },
{ HP_POP(status->change_start, HP_status_change_start) },
{ HP_POP(status->change_end_, HP_status_change_end_) },
+ { HP_POP(status->is_immune_to_status, HP_status_is_immune_to_status) },
+ { HP_POP(status->is_boss_resist_sc, HP_status_is_boss_resist_sc) },
+ { HP_POP(status->end_sc_before_start, HP_status_end_sc_before_start) },
+ { HP_POP(status->change_start_stop_action, HP_status_change_start_stop_action) },
+ { HP_POP(status->change_start_set_option, HP_status_change_start_set_option) },
+ { HP_POP(status->get_val_flag, HP_status_get_val_flag) },
+ { HP_POP(status->change_start_display, HP_status_change_start_display) },
+ { HP_POP(status->change_start_unknown_sc, HP_status_change_start_unknown_sc) },
{ HP_POP(status->kaahi_heal_timer, HP_status_kaahi_heal_timer) },
{ HP_POP(status->change_timer, HP_status_change_timer) },
{ HP_POP(status->change_timer_sub, HP_status_change_timer_sub) },
@@ -2877,6 +3192,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(status->calc_pet_, HP_status_calc_pet_) },
{ HP_POP(status->calc_pc_, HP_status_calc_pc_) },
{ HP_POP(status->calc_pc_additional, HP_status_calc_pc_additional) },
+ { HP_POP(status->calc_pc_recover_hp, HP_status_calc_pc_recover_hp) },
{ HP_POP(status->calc_homunculus_, HP_status_calc_homunculus_) },
{ HP_POP(status->calc_mercenary_, HP_status_calc_mercenary_) },
{ HP_POP(status->calc_elemental_, HP_status_calc_elemental_) },
@@ -2904,6 +3220,8 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(status->base_atk, HP_status_base_atk) },
{ HP_POP(status->get_base_maxhp, HP_status_get_base_maxhp) },
{ HP_POP(status->get_base_maxsp, HP_status_get_base_maxsp) },
+ { HP_POP(status->get_restart_hp, HP_status_get_restart_hp) },
+ { HP_POP(status->get_restart_sp, HP_status_get_restart_sp) },
{ HP_POP(status->calc_npc_, HP_status_calc_npc_) },
{ HP_POP(status->calc_str, HP_status_calc_str) },
{ HP_POP(status->calc_agi, HP_status_calc_agi) },
diff --git a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
index 800fb8c76..af1fc7bc4 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2017 Hercules Dev Team
+ * Copyright (C) 2013-2019 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -28,14 +28,14 @@
/* HCache_interface */
void HP_HCache_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_HCache_init_pre ) {
+ if (HPMHooks.count.HP_HCache_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_HCache_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_HCache_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_HCache_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -43,9 +43,9 @@ void HP_HCache_init(void) {
{
HPMHooks.source.HCache.init();
}
- if( HPMHooks.count.HP_HCache_init_post ) {
+ if (HPMHooks.count.HP_HCache_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_HCache_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_HCache_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_HCache_init_post[hIndex].func;
postHookFunc();
}
@@ -55,14 +55,14 @@ void HP_HCache_init(void) {
bool HP_HCache_check(const char *file) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_HCache_check_pre ) {
+ if (HPMHooks.count.HP_HCache_check_pre > 0) {
bool (*preHookFunc) (const char **file);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_HCache_check_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_HCache_check_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_HCache_check_pre[hIndex].func;
retVal___ = preHookFunc(&file);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -70,9 +70,9 @@ bool HP_HCache_check(const char *file) {
{
retVal___ = HPMHooks.source.HCache.check(file);
}
- if( HPMHooks.count.HP_HCache_check_post ) {
+ if (HPMHooks.count.HP_HCache_check_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *file);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_HCache_check_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_HCache_check_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_HCache_check_post[hIndex].func;
retVal___ = postHookFunc(retVal___, file);
}
@@ -82,14 +82,14 @@ bool HP_HCache_check(const char *file) {
FILE* HP_HCache_open(const char *file, const char *opt) {
int hIndex = 0;
FILE* retVal___ = NULL;
- if( HPMHooks.count.HP_HCache_open_pre ) {
+ if (HPMHooks.count.HP_HCache_open_pre > 0) {
FILE* (*preHookFunc) (const char **file, const char **opt);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_HCache_open_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_HCache_open_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_HCache_open_pre[hIndex].func;
retVal___ = preHookFunc(&file, &opt);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -97,26 +97,1458 @@ FILE* HP_HCache_open(const char *file, const char *opt) {
{
retVal___ = HPMHooks.source.HCache.open(file, opt);
}
- if( HPMHooks.count.HP_HCache_open_post ) {
+ if (HPMHooks.count.HP_HCache_open_post > 0) {
FILE* (*postHookFunc) (FILE* retVal___, const char *file, const char *opt);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_HCache_open_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_HCache_open_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_HCache_open_post[hIndex].func;
retVal___ = postHookFunc(retVal___, file, opt);
}
}
return retVal___;
}
+/* achievement_interface */
+void HP_achievement_init(bool minimal) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_init_pre > 0) {
+ void (*preHookFunc) (bool *minimal);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_init_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_init_pre[hIndex].func;
+ preHookFunc(&minimal);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.init(minimal);
+ }
+ if (HPMHooks.count.HP_achievement_init_post > 0) {
+ void (*postHookFunc) (bool minimal);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_init_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_init_post[hIndex].func;
+ postHookFunc(minimal);
+ }
+ }
+ return;
+}
+void HP_achievement_final(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_final_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_final_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_final_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.final();
+ }
+ if (HPMHooks.count.HP_achievement_final_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_final_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_final_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+int HP_achievement_db_finalize(union DBKey key, struct DBData *data, va_list args) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_achievement_db_finalize_pre > 0) {
+ int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list args);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_db_finalize_pre; hIndex++) {
+ va_list args___copy; va_copy(args___copy, args);
+ preHookFunc = HPMHooks.list.HP_achievement_db_finalize_pre[hIndex].func;
+ retVal___ = preHookFunc(&key, &data, args___copy);
+ va_end(args___copy);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ va_list args___copy; va_copy(args___copy, args);
+ retVal___ = HPMHooks.source.achievement.db_finalize(key, data, args___copy);
+ va_end(args___copy);
+ }
+ if (HPMHooks.count.HP_achievement_db_finalize_post > 0) {
+ int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list args);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_db_finalize_post; hIndex++) {
+ va_list args___copy; va_copy(args___copy, args);
+ postHookFunc = HPMHooks.list.HP_achievement_db_finalize_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, key, data, args___copy);
+ va_end(args___copy);
+ }
+ }
+ return retVal___;
+}
+void HP_achievement_readdb(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_readdb_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_readdb_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.readdb();
+ }
+ if (HPMHooks.count.HP_achievement_readdb_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_readdb_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+bool HP_achievement_readdb_objectives_sub(const struct config_setting_t *conf, int index, struct achievement_data *entry) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_achievement_readdb_objectives_sub_pre > 0) {
+ bool (*preHookFunc) (const struct config_setting_t **conf, int *index, struct achievement_data **entry);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_objectives_sub_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_readdb_objectives_sub_pre[hIndex].func;
+ retVal___ = preHookFunc(&conf, &index, &entry);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.achievement.readdb_objectives_sub(conf, index, entry);
+ }
+ if (HPMHooks.count.HP_achievement_readdb_objectives_sub_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const struct config_setting_t *conf, int index, struct achievement_data *entry);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_objectives_sub_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_readdb_objectives_sub_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, conf, index, entry);
+ }
+ }
+ return retVal___;
+}
+bool HP_achievement_readdb_objectives(const struct config_setting_t *conf, struct achievement_data *entry) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_achievement_readdb_objectives_pre > 0) {
+ bool (*preHookFunc) (const struct config_setting_t **conf, struct achievement_data **entry);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_objectives_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_readdb_objectives_pre[hIndex].func;
+ retVal___ = preHookFunc(&conf, &entry);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.achievement.readdb_objectives(conf, entry);
+ }
+ if (HPMHooks.count.HP_achievement_readdb_objectives_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const struct config_setting_t *conf, struct achievement_data *entry);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_objectives_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_readdb_objectives_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, conf, entry);
+ }
+ }
+ return retVal___;
+}
+bool HP_achievement_readdb_validate_criteria_mobid(const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_achievement_readdb_validate_criteria_mobid_pre > 0) {
+ bool (*preHookFunc) (const struct config_setting_t **t, struct achievement_objective **obj, enum achievement_types *type, int *entry_id, int *obj_idx);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_validate_criteria_mobid_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_readdb_validate_criteria_mobid_pre[hIndex].func;
+ retVal___ = preHookFunc(&t, &obj, &type, &entry_id, &obj_idx);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.achievement.readdb_validate_criteria_mobid(t, obj, type, entry_id, obj_idx);
+ }
+ if (HPMHooks.count.HP_achievement_readdb_validate_criteria_mobid_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_validate_criteria_mobid_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_readdb_validate_criteria_mobid_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, t, obj, type, entry_id, obj_idx);
+ }
+ }
+ return retVal___;
+}
+bool HP_achievement_readdb_validate_criteria_jobid(const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_achievement_readdb_validate_criteria_jobid_pre > 0) {
+ bool (*preHookFunc) (const struct config_setting_t **t, struct achievement_objective **obj, enum achievement_types *type, int *entry_id, int *obj_idx);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_validate_criteria_jobid_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_readdb_validate_criteria_jobid_pre[hIndex].func;
+ retVal___ = preHookFunc(&t, &obj, &type, &entry_id, &obj_idx);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.achievement.readdb_validate_criteria_jobid(t, obj, type, entry_id, obj_idx);
+ }
+ if (HPMHooks.count.HP_achievement_readdb_validate_criteria_jobid_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_validate_criteria_jobid_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_readdb_validate_criteria_jobid_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, t, obj, type, entry_id, obj_idx);
+ }
+ }
+ return retVal___;
+}
+bool HP_achievement_readdb_validate_criteria_itemid(const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_achievement_readdb_validate_criteria_itemid_pre > 0) {
+ bool (*preHookFunc) (const struct config_setting_t **t, struct achievement_objective **obj, enum achievement_types *type, int *entry_id, int *obj_idx);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_validate_criteria_itemid_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_readdb_validate_criteria_itemid_pre[hIndex].func;
+ retVal___ = preHookFunc(&t, &obj, &type, &entry_id, &obj_idx);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.achievement.readdb_validate_criteria_itemid(t, obj, type, entry_id, obj_idx);
+ }
+ if (HPMHooks.count.HP_achievement_readdb_validate_criteria_itemid_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_validate_criteria_itemid_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_readdb_validate_criteria_itemid_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, t, obj, type, entry_id, obj_idx);
+ }
+ }
+ return retVal___;
+}
+bool HP_achievement_readdb_validate_criteria_statustype(const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_achievement_readdb_validate_criteria_statustype_pre > 0) {
+ bool (*preHookFunc) (const struct config_setting_t **t, struct achievement_objective **obj, enum achievement_types *type, int *entry_id, int *obj_idx);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_validate_criteria_statustype_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_readdb_validate_criteria_statustype_pre[hIndex].func;
+ retVal___ = preHookFunc(&t, &obj, &type, &entry_id, &obj_idx);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.achievement.readdb_validate_criteria_statustype(t, obj, type, entry_id, obj_idx);
+ }
+ if (HPMHooks.count.HP_achievement_readdb_validate_criteria_statustype_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_validate_criteria_statustype_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_readdb_validate_criteria_statustype_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, t, obj, type, entry_id, obj_idx);
+ }
+ }
+ return retVal___;
+}
+bool HP_achievement_readdb_validate_criteria_itemtype(const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_achievement_readdb_validate_criteria_itemtype_pre > 0) {
+ bool (*preHookFunc) (const struct config_setting_t **t, struct achievement_objective **obj, enum achievement_types *type, int *entry_id, int *obj_idx);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_validate_criteria_itemtype_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_readdb_validate_criteria_itemtype_pre[hIndex].func;
+ retVal___ = preHookFunc(&t, &obj, &type, &entry_id, &obj_idx);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.achievement.readdb_validate_criteria_itemtype(t, obj, type, entry_id, obj_idx);
+ }
+ if (HPMHooks.count.HP_achievement_readdb_validate_criteria_itemtype_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_validate_criteria_itemtype_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_readdb_validate_criteria_itemtype_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, t, obj, type, entry_id, obj_idx);
+ }
+ }
+ return retVal___;
+}
+bool HP_achievement_readdb_validate_criteria_weaponlv(const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_achievement_readdb_validate_criteria_weaponlv_pre > 0) {
+ bool (*preHookFunc) (const struct config_setting_t **t, struct achievement_objective **obj, enum achievement_types *type, int *entry_id, int *obj_idx);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_validate_criteria_weaponlv_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_readdb_validate_criteria_weaponlv_pre[hIndex].func;
+ retVal___ = preHookFunc(&t, &obj, &type, &entry_id, &obj_idx);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.achievement.readdb_validate_criteria_weaponlv(t, obj, type, entry_id, obj_idx);
+ }
+ if (HPMHooks.count.HP_achievement_readdb_validate_criteria_weaponlv_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_validate_criteria_weaponlv_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_readdb_validate_criteria_weaponlv_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, t, obj, type, entry_id, obj_idx);
+ }
+ }
+ return retVal___;
+}
+bool HP_achievement_readdb_validate_criteria_achievement(const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_achievement_readdb_validate_criteria_achievement_pre > 0) {
+ bool (*preHookFunc) (const struct config_setting_t **t, struct achievement_objective **obj, enum achievement_types *type, int *entry_id, int *obj_idx);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_validate_criteria_achievement_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_readdb_validate_criteria_achievement_pre[hIndex].func;
+ retVal___ = preHookFunc(&t, &obj, &type, &entry_id, &obj_idx);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.achievement.readdb_validate_criteria_achievement(t, obj, type, entry_id, obj_idx);
+ }
+ if (HPMHooks.count.HP_achievement_readdb_validate_criteria_achievement_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const struct config_setting_t *t, struct achievement_objective *obj, enum achievement_types type, int entry_id, int obj_idx);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_validate_criteria_achievement_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_readdb_validate_criteria_achievement_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, t, obj, type, entry_id, obj_idx);
+ }
+ }
+ return retVal___;
+}
+bool HP_achievement_readdb_rewards(const struct config_setting_t *conf, struct achievement_data *entry, const char *source) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_achievement_readdb_rewards_pre > 0) {
+ bool (*preHookFunc) (const struct config_setting_t **conf, struct achievement_data **entry, const char **source);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_rewards_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_readdb_rewards_pre[hIndex].func;
+ retVal___ = preHookFunc(&conf, &entry, &source);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.achievement.readdb_rewards(conf, entry, source);
+ }
+ if (HPMHooks.count.HP_achievement_readdb_rewards_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const struct config_setting_t *conf, struct achievement_data *entry, const char *source);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_rewards_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_readdb_rewards_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, conf, entry, source);
+ }
+ }
+ return retVal___;
+}
+void HP_achievement_readdb_validate_reward_items(const struct config_setting_t *t, struct achievement_data *entry) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_readdb_validate_reward_items_pre > 0) {
+ void (*preHookFunc) (const struct config_setting_t **t, struct achievement_data **entry);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_validate_reward_items_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_readdb_validate_reward_items_pre[hIndex].func;
+ preHookFunc(&t, &entry);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.readdb_validate_reward_items(t, entry);
+ }
+ if (HPMHooks.count.HP_achievement_readdb_validate_reward_items_post > 0) {
+ void (*postHookFunc) (const struct config_setting_t *t, struct achievement_data *entry);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_validate_reward_items_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_readdb_validate_reward_items_post[hIndex].func;
+ postHookFunc(t, entry);
+ }
+ }
+ return;
+}
+bool HP_achievement_readdb_validate_reward_item_sub(const struct config_setting_t *t, int element, struct achievement_data *entry) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_achievement_readdb_validate_reward_item_sub_pre > 0) {
+ bool (*preHookFunc) (const struct config_setting_t **t, int *element, struct achievement_data **entry);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_validate_reward_item_sub_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_readdb_validate_reward_item_sub_pre[hIndex].func;
+ retVal___ = preHookFunc(&t, &element, &entry);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.achievement.readdb_validate_reward_item_sub(t, element, entry);
+ }
+ if (HPMHooks.count.HP_achievement_readdb_validate_reward_item_sub_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const struct config_setting_t *t, int element, struct achievement_data *entry);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_validate_reward_item_sub_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_readdb_validate_reward_item_sub_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, t, element, entry);
+ }
+ }
+ return retVal___;
+}
+void HP_achievement_readdb_validate_reward_bonus(const struct config_setting_t *t, struct achievement_data *entry, const char *source) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_readdb_validate_reward_bonus_pre > 0) {
+ void (*preHookFunc) (const struct config_setting_t **t, struct achievement_data **entry, const char **source);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_validate_reward_bonus_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_readdb_validate_reward_bonus_pre[hIndex].func;
+ preHookFunc(&t, &entry, &source);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.readdb_validate_reward_bonus(t, entry, source);
+ }
+ if (HPMHooks.count.HP_achievement_readdb_validate_reward_bonus_post > 0) {
+ void (*postHookFunc) (const struct config_setting_t *t, struct achievement_data *entry, const char *source);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_validate_reward_bonus_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_readdb_validate_reward_bonus_post[hIndex].func;
+ postHookFunc(t, entry, source);
+ }
+ }
+ return;
+}
+void HP_achievement_readdb_validate_reward_titleid(const struct config_setting_t *t, struct achievement_data *entry) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_readdb_validate_reward_titleid_pre > 0) {
+ void (*preHookFunc) (const struct config_setting_t **t, struct achievement_data **entry);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_validate_reward_titleid_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_readdb_validate_reward_titleid_pre[hIndex].func;
+ preHookFunc(&t, &entry);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.readdb_validate_reward_titleid(t, entry);
+ }
+ if (HPMHooks.count.HP_achievement_readdb_validate_reward_titleid_post > 0) {
+ void (*postHookFunc) (const struct config_setting_t *t, struct achievement_data *entry);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_validate_reward_titleid_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_readdb_validate_reward_titleid_post[hIndex].func;
+ postHookFunc(t, entry);
+ }
+ }
+ return;
+}
+void HP_achievement_readdb_additional_fields(const struct config_setting_t *conf, struct achievement_data *entry, const char *source) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_readdb_additional_fields_pre > 0) {
+ void (*preHookFunc) (const struct config_setting_t **conf, struct achievement_data **entry, const char **source);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_additional_fields_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_readdb_additional_fields_pre[hIndex].func;
+ preHookFunc(&conf, &entry, &source);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.readdb_additional_fields(conf, entry, source);
+ }
+ if (HPMHooks.count.HP_achievement_readdb_additional_fields_post > 0) {
+ void (*postHookFunc) (const struct config_setting_t *conf, struct achievement_data *entry, const char *source);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_additional_fields_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_readdb_additional_fields_post[hIndex].func;
+ postHookFunc(conf, entry, source);
+ }
+ }
+ return;
+}
+void HP_achievement_readdb_ranks(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_readdb_ranks_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_ranks_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_readdb_ranks_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.readdb_ranks();
+ }
+ if (HPMHooks.count.HP_achievement_readdb_ranks_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_readdb_ranks_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_readdb_ranks_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+const struct achievement_data* HP_achievement_get(int aid) {
+ int hIndex = 0;
+ const struct achievement_data* retVal___ = NULL;
+ if (HPMHooks.count.HP_achievement_get_pre > 0) {
+ const struct achievement_data* (*preHookFunc) (int *aid);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_get_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_get_pre[hIndex].func;
+ retVal___ = preHookFunc(&aid);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.achievement.get(aid);
+ }
+ if (HPMHooks.count.HP_achievement_get_post > 0) {
+ const struct achievement_data* (*postHookFunc) (const struct achievement_data* retVal___, int aid);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_get_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_get_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, aid);
+ }
+ }
+ return retVal___;
+}
+struct achievement* HP_achievement_ensure(struct map_session_data *sd, const struct achievement_data *ad) {
+ int hIndex = 0;
+ struct achievement* retVal___ = NULL;
+ if (HPMHooks.count.HP_achievement_ensure_pre > 0) {
+ struct achievement* (*preHookFunc) (struct map_session_data **sd, const struct achievement_data **ad);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_ensure_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_ensure_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &ad);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.achievement.ensure(sd, ad);
+ }
+ if (HPMHooks.count.HP_achievement_ensure_post > 0) {
+ struct achievement* (*postHookFunc) (struct achievement* retVal___, struct map_session_data *sd, const struct achievement_data *ad);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_ensure_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_ensure_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, ad);
+ }
+ }
+ return retVal___;
+}
+void HP_achievement_calculate_totals(const struct map_session_data *sd, int *points, int *completed, int *rank, int *curr_rank_points) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_calculate_totals_pre > 0) {
+ void (*preHookFunc) (const struct map_session_data **sd, int **points, int **completed, int **rank, int **curr_rank_points);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_calculate_totals_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_calculate_totals_pre[hIndex].func;
+ preHookFunc(&sd, &points, &completed, &rank, &curr_rank_points);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.calculate_totals(sd, points, completed, rank, curr_rank_points);
+ }
+ if (HPMHooks.count.HP_achievement_calculate_totals_post > 0) {
+ void (*postHookFunc) (const struct map_session_data *sd, int *points, int *completed, int *rank, int *curr_rank_points);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_calculate_totals_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_calculate_totals_post[hIndex].func;
+ postHookFunc(sd, points, completed, rank, curr_rank_points);
+ }
+ }
+ return;
+}
+bool HP_achievement_check_complete(struct map_session_data *sd, const struct achievement_data *ad) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_achievement_check_complete_pre > 0) {
+ bool (*preHookFunc) (struct map_session_data **sd, const struct achievement_data **ad);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_check_complete_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_check_complete_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &ad);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.achievement.check_complete(sd, ad);
+ }
+ if (HPMHooks.count.HP_achievement_check_complete_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, const struct achievement_data *ad);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_check_complete_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_check_complete_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, ad);
+ }
+ }
+ return retVal___;
+}
+void HP_achievement_progress_add(struct map_session_data *sd, const struct achievement_data *ad, unsigned int obj_idx, int progress) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_progress_add_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, const struct achievement_data **ad, unsigned int *obj_idx, int *progress);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_progress_add_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_progress_add_pre[hIndex].func;
+ preHookFunc(&sd, &ad, &obj_idx, &progress);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.progress_add(sd, ad, obj_idx, progress);
+ }
+ if (HPMHooks.count.HP_achievement_progress_add_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, const struct achievement_data *ad, unsigned int obj_idx, int progress);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_progress_add_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_progress_add_post[hIndex].func;
+ postHookFunc(sd, ad, obj_idx, progress);
+ }
+ }
+ return;
+}
+void HP_achievement_progress_set(struct map_session_data *sd, const struct achievement_data *ad, unsigned int obj_idx, int progress) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_progress_set_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, const struct achievement_data **ad, unsigned int *obj_idx, int *progress);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_progress_set_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_progress_set_pre[hIndex].func;
+ preHookFunc(&sd, &ad, &obj_idx, &progress);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.progress_set(sd, ad, obj_idx, progress);
+ }
+ if (HPMHooks.count.HP_achievement_progress_set_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, const struct achievement_data *ad, unsigned int obj_idx, int progress);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_progress_set_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_progress_set_post[hIndex].func;
+ postHookFunc(sd, ad, obj_idx, progress);
+ }
+ }
+ return;
+}
+bool HP_achievement_check_criteria(const struct achievement_objective *objective, const struct achievement_objective *criteria) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_achievement_check_criteria_pre > 0) {
+ bool (*preHookFunc) (const struct achievement_objective **objective, const struct achievement_objective **criteria);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_check_criteria_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_check_criteria_pre[hIndex].func;
+ retVal___ = preHookFunc(&objective, &criteria);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.achievement.check_criteria(objective, criteria);
+ }
+ if (HPMHooks.count.HP_achievement_check_criteria_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const struct achievement_objective *objective, const struct achievement_objective *criteria);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_check_criteria_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_check_criteria_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, objective, criteria);
+ }
+ }
+ return retVal___;
+}
+bool HP_achievement_validate(struct map_session_data *sd, int aid, unsigned int obj_idx, int progress, bool additive) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_achievement_validate_pre > 0) {
+ bool (*preHookFunc) (struct map_session_data **sd, int *aid, unsigned int *obj_idx, int *progress, bool *additive);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_validate_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &aid, &obj_idx, &progress, &additive);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.achievement.validate(sd, aid, obj_idx, progress, additive);
+ }
+ if (HPMHooks.count.HP_achievement_validate_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, int aid, unsigned int obj_idx, int progress, bool additive);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_validate_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, aid, obj_idx, progress, additive);
+ }
+ }
+ return retVal___;
+}
+int HP_achievement_validate_type(struct map_session_data *sd, enum achievement_types type, const struct achievement_objective *criteria, bool additive) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_achievement_validate_type_pre > 0) {
+ int (*preHookFunc) (struct map_session_data **sd, enum achievement_types *type, const struct achievement_objective **criteria, bool *additive);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_type_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_validate_type_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &type, &criteria, &additive);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.achievement.validate_type(sd, type, criteria, additive);
+ }
+ if (HPMHooks.count.HP_achievement_validate_type_post > 0) {
+ int (*postHookFunc) (int retVal___, struct map_session_data *sd, enum achievement_types type, const struct achievement_objective *criteria, bool additive);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_type_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_validate_type_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, type, criteria, additive);
+ }
+ }
+ return retVal___;
+}
+void HP_achievement_validate_mob_kill(struct map_session_data *sd, int mob_id) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_validate_mob_kill_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int *mob_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_mob_kill_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_validate_mob_kill_pre[hIndex].func;
+ preHookFunc(&sd, &mob_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.validate_mob_kill(sd, mob_id);
+ }
+ if (HPMHooks.count.HP_achievement_validate_mob_kill_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int mob_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_mob_kill_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_validate_mob_kill_post[hIndex].func;
+ postHookFunc(sd, mob_id);
+ }
+ }
+ return;
+}
+void HP_achievement_validate_mob_damage(struct map_session_data *sd, unsigned int damage, bool received) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_validate_mob_damage_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, unsigned int *damage, bool *received);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_mob_damage_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_validate_mob_damage_pre[hIndex].func;
+ preHookFunc(&sd, &damage, &received);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.validate_mob_damage(sd, damage, received);
+ }
+ if (HPMHooks.count.HP_achievement_validate_mob_damage_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, unsigned int damage, bool received);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_mob_damage_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_validate_mob_damage_post[hIndex].func;
+ postHookFunc(sd, damage, received);
+ }
+ }
+ return;
+}
+void HP_achievement_validate_pc_kill(struct map_session_data *sd, struct map_session_data *dstsd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_validate_pc_kill_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, struct map_session_data **dstsd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_pc_kill_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_validate_pc_kill_pre[hIndex].func;
+ preHookFunc(&sd, &dstsd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.validate_pc_kill(sd, dstsd);
+ }
+ if (HPMHooks.count.HP_achievement_validate_pc_kill_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, struct map_session_data *dstsd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_pc_kill_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_validate_pc_kill_post[hIndex].func;
+ postHookFunc(sd, dstsd);
+ }
+ }
+ return;
+}
+void HP_achievement_validate_pc_damage(struct map_session_data *sd, struct map_session_data *dstsd, unsigned int damage) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_validate_pc_damage_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, struct map_session_data **dstsd, unsigned int *damage);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_pc_damage_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_validate_pc_damage_pre[hIndex].func;
+ preHookFunc(&sd, &dstsd, &damage);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.validate_pc_damage(sd, dstsd, damage);
+ }
+ if (HPMHooks.count.HP_achievement_validate_pc_damage_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, struct map_session_data *dstsd, unsigned int damage);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_pc_damage_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_validate_pc_damage_post[hIndex].func;
+ postHookFunc(sd, dstsd, damage);
+ }
+ }
+ return;
+}
+void HP_achievement_validate_jobchange(struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_validate_jobchange_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_jobchange_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_validate_jobchange_pre[hIndex].func;
+ preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.validate_jobchange(sd);
+ }
+ if (HPMHooks.count.HP_achievement_validate_jobchange_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_jobchange_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_validate_jobchange_post[hIndex].func;
+ postHookFunc(sd);
+ }
+ }
+ return;
+}
+void HP_achievement_validate_stats(struct map_session_data *sd, enum status_point_types stat_type, int progress) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_validate_stats_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, enum status_point_types *stat_type, int *progress);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_stats_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_validate_stats_pre[hIndex].func;
+ preHookFunc(&sd, &stat_type, &progress);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.validate_stats(sd, stat_type, progress);
+ }
+ if (HPMHooks.count.HP_achievement_validate_stats_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, enum status_point_types stat_type, int progress);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_stats_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_validate_stats_post[hIndex].func;
+ postHookFunc(sd, stat_type, progress);
+ }
+ }
+ return;
+}
+void HP_achievement_validate_chatroom_create(struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_validate_chatroom_create_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_chatroom_create_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_validate_chatroom_create_pre[hIndex].func;
+ preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.validate_chatroom_create(sd);
+ }
+ if (HPMHooks.count.HP_achievement_validate_chatroom_create_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_chatroom_create_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_validate_chatroom_create_post[hIndex].func;
+ postHookFunc(sd);
+ }
+ }
+ return;
+}
+void HP_achievement_validate_chatroom_members(struct map_session_data *sd, int progress) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_validate_chatroom_members_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int *progress);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_chatroom_members_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_validate_chatroom_members_pre[hIndex].func;
+ preHookFunc(&sd, &progress);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.validate_chatroom_members(sd, progress);
+ }
+ if (HPMHooks.count.HP_achievement_validate_chatroom_members_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int progress);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_chatroom_members_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_validate_chatroom_members_post[hIndex].func;
+ postHookFunc(sd, progress);
+ }
+ }
+ return;
+}
+void HP_achievement_validate_friend_add(struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_validate_friend_add_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_friend_add_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_validate_friend_add_pre[hIndex].func;
+ preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.validate_friend_add(sd);
+ }
+ if (HPMHooks.count.HP_achievement_validate_friend_add_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_friend_add_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_validate_friend_add_post[hIndex].func;
+ postHookFunc(sd);
+ }
+ }
+ return;
+}
+void HP_achievement_validate_party_create(struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_validate_party_create_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_party_create_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_validate_party_create_pre[hIndex].func;
+ preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.validate_party_create(sd);
+ }
+ if (HPMHooks.count.HP_achievement_validate_party_create_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_party_create_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_validate_party_create_post[hIndex].func;
+ postHookFunc(sd);
+ }
+ }
+ return;
+}
+void HP_achievement_validate_marry(struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_validate_marry_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_marry_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_validate_marry_pre[hIndex].func;
+ preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.validate_marry(sd);
+ }
+ if (HPMHooks.count.HP_achievement_validate_marry_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_marry_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_validate_marry_post[hIndex].func;
+ postHookFunc(sd);
+ }
+ }
+ return;
+}
+void HP_achievement_validate_adopt(struct map_session_data *sd, bool parent) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_validate_adopt_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, bool *parent);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_adopt_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_validate_adopt_pre[hIndex].func;
+ preHookFunc(&sd, &parent);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.validate_adopt(sd, parent);
+ }
+ if (HPMHooks.count.HP_achievement_validate_adopt_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, bool parent);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_adopt_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_validate_adopt_post[hIndex].func;
+ postHookFunc(sd, parent);
+ }
+ }
+ return;
+}
+void HP_achievement_validate_zeny(struct map_session_data *sd, int amount) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_validate_zeny_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int *amount);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_zeny_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_validate_zeny_pre[hIndex].func;
+ preHookFunc(&sd, &amount);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.validate_zeny(sd, amount);
+ }
+ if (HPMHooks.count.HP_achievement_validate_zeny_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int amount);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_zeny_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_validate_zeny_post[hIndex].func;
+ postHookFunc(sd, amount);
+ }
+ }
+ return;
+}
+void HP_achievement_validate_refine(struct map_session_data *sd, unsigned int idx, bool success) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_validate_refine_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, unsigned int *idx, bool *success);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_refine_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_validate_refine_pre[hIndex].func;
+ preHookFunc(&sd, &idx, &success);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.validate_refine(sd, idx, success);
+ }
+ if (HPMHooks.count.HP_achievement_validate_refine_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, unsigned int idx, bool success);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_refine_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_validate_refine_post[hIndex].func;
+ postHookFunc(sd, idx, success);
+ }
+ }
+ return;
+}
+void HP_achievement_validate_item_get(struct map_session_data *sd, int nameid, int amount) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_validate_item_get_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int *nameid, int *amount);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_item_get_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_validate_item_get_pre[hIndex].func;
+ preHookFunc(&sd, &nameid, &amount);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.validate_item_get(sd, nameid, amount);
+ }
+ if (HPMHooks.count.HP_achievement_validate_item_get_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int nameid, int amount);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_item_get_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_validate_item_get_post[hIndex].func;
+ postHookFunc(sd, nameid, amount);
+ }
+ }
+ return;
+}
+void HP_achievement_validate_item_sell(struct map_session_data *sd, int nameid, int amount) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_validate_item_sell_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int *nameid, int *amount);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_item_sell_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_validate_item_sell_pre[hIndex].func;
+ preHookFunc(&sd, &nameid, &amount);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.validate_item_sell(sd, nameid, amount);
+ }
+ if (HPMHooks.count.HP_achievement_validate_item_sell_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int nameid, int amount);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_item_sell_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_validate_item_sell_post[hIndex].func;
+ postHookFunc(sd, nameid, amount);
+ }
+ }
+ return;
+}
+void HP_achievement_validate_achieve(struct map_session_data *sd, int achid) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_validate_achieve_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int *achid);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_achieve_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_validate_achieve_pre[hIndex].func;
+ preHookFunc(&sd, &achid);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.validate_achieve(sd, achid);
+ }
+ if (HPMHooks.count.HP_achievement_validate_achieve_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int achid);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_achieve_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_validate_achieve_post[hIndex].func;
+ postHookFunc(sd, achid);
+ }
+ }
+ return;
+}
+void HP_achievement_validate_taming(struct map_session_data *sd, int class) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_validate_taming_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int *class);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_taming_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_validate_taming_pre[hIndex].func;
+ preHookFunc(&sd, &class);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.validate_taming(sd, class);
+ }
+ if (HPMHooks.count.HP_achievement_validate_taming_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int class);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_taming_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_validate_taming_post[hIndex].func;
+ postHookFunc(sd, class);
+ }
+ }
+ return;
+}
+void HP_achievement_validate_achievement_rank(struct map_session_data *sd, int rank) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_validate_achievement_rank_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int *rank);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_achievement_rank_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_validate_achievement_rank_pre[hIndex].func;
+ preHookFunc(&sd, &rank);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.validate_achievement_rank(sd, rank);
+ }
+ if (HPMHooks.count.HP_achievement_validate_achievement_rank_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int rank);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_validate_achievement_rank_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_validate_achievement_rank_post[hIndex].func;
+ postHookFunc(sd, rank);
+ }
+ }
+ return;
+}
+bool HP_achievement_type_requires_criteria(enum achievement_types type) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_achievement_type_requires_criteria_pre > 0) {
+ bool (*preHookFunc) (enum achievement_types *type);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_type_requires_criteria_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_type_requires_criteria_pre[hIndex].func;
+ retVal___ = preHookFunc(&type);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.achievement.type_requires_criteria(type);
+ }
+ if (HPMHooks.count.HP_achievement_type_requires_criteria_post > 0) {
+ bool (*postHookFunc) (bool retVal___, enum achievement_types type);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_type_requires_criteria_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_type_requires_criteria_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, type);
+ }
+ }
+ return retVal___;
+}
+void HP_achievement_init_titles(struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_init_titles_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_init_titles_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_init_titles_pre[hIndex].func;
+ preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.init_titles(sd);
+ }
+ if (HPMHooks.count.HP_achievement_init_titles_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_init_titles_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_init_titles_post[hIndex].func;
+ postHookFunc(sd);
+ }
+ }
+ return;
+}
+bool HP_achievement_check_title(struct map_session_data *sd, int title_id) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_achievement_check_title_pre > 0) {
+ bool (*preHookFunc) (struct map_session_data **sd, int *title_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_check_title_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_check_title_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &title_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.achievement.check_title(sd, title_id);
+ }
+ if (HPMHooks.count.HP_achievement_check_title_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, int title_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_check_title_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_check_title_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, title_id);
+ }
+ }
+ return retVal___;
+}
+bool HP_achievement_get_rewards(struct map_session_data *sd, const struct achievement_data *ad) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_achievement_get_rewards_pre > 0) {
+ bool (*preHookFunc) (struct map_session_data **sd, const struct achievement_data **ad);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_get_rewards_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_get_rewards_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &ad);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.achievement.get_rewards(sd, ad);
+ }
+ if (HPMHooks.count.HP_achievement_get_rewards_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, const struct achievement_data *ad);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_get_rewards_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_get_rewards_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, ad);
+ }
+ }
+ return retVal___;
+}
+void HP_achievement_get_rewards_buffs(struct map_session_data *sd, const struct achievement_data *ad) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_get_rewards_buffs_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, const struct achievement_data **ad);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_get_rewards_buffs_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_get_rewards_buffs_pre[hIndex].func;
+ preHookFunc(&sd, &ad);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.get_rewards_buffs(sd, ad);
+ }
+ if (HPMHooks.count.HP_achievement_get_rewards_buffs_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, const struct achievement_data *ad);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_get_rewards_buffs_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_get_rewards_buffs_post[hIndex].func;
+ postHookFunc(sd, ad);
+ }
+ }
+ return;
+}
+void HP_achievement_get_rewards_items(struct map_session_data *sd, const struct achievement_data *ad) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_get_rewards_items_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, const struct achievement_data **ad);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_get_rewards_items_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_get_rewards_items_pre[hIndex].func;
+ preHookFunc(&sd, &ad);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.get_rewards_items(sd, ad);
+ }
+ if (HPMHooks.count.HP_achievement_get_rewards_items_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, const struct achievement_data *ad);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_get_rewards_items_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_get_rewards_items_post[hIndex].func;
+ postHookFunc(sd, ad);
+ }
+ }
+ return;
+}
/* atcommand_interface */
void HP_atcommand_init(bool minimal) {
int hIndex = 0;
- if( HPMHooks.count.HP_atcommand_init_pre ) {
+ if (HPMHooks.count.HP_atcommand_init_pre > 0) {
void (*preHookFunc) (bool *minimal);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_atcommand_init_pre[hIndex].func;
preHookFunc(&minimal);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -124,9 +1556,9 @@ void HP_atcommand_init(bool minimal) {
{
HPMHooks.source.atcommand.init(minimal);
}
- if( HPMHooks.count.HP_atcommand_init_post ) {
+ if (HPMHooks.count.HP_atcommand_init_post > 0) {
void (*postHookFunc) (bool minimal);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_atcommand_init_post[hIndex].func;
postHookFunc(minimal);
}
@@ -135,14 +1567,14 @@ void HP_atcommand_init(bool minimal) {
}
void HP_atcommand_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_atcommand_final_pre ) {
+ if (HPMHooks.count.HP_atcommand_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_atcommand_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -150,9 +1582,9 @@ void HP_atcommand_final(void) {
{
HPMHooks.source.atcommand.final();
}
- if( HPMHooks.count.HP_atcommand_final_post ) {
+ if (HPMHooks.count.HP_atcommand_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_atcommand_final_post[hIndex].func;
postHookFunc();
}
@@ -162,14 +1594,14 @@ void HP_atcommand_final(void) {
bool HP_atcommand_exec(const int fd, struct map_session_data *sd, const char *message, bool player_invoked) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_atcommand_exec_pre ) {
+ if (HPMHooks.count.HP_atcommand_exec_pre > 0) {
bool (*preHookFunc) (const int *fd, struct map_session_data **sd, const char **message, bool *player_invoked);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_exec_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_exec_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_atcommand_exec_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &sd, &message, &player_invoked);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -177,9 +1609,9 @@ bool HP_atcommand_exec(const int fd, struct map_session_data *sd, const char *me
{
retVal___ = HPMHooks.source.atcommand.exec(fd, sd, message, player_invoked);
}
- if( HPMHooks.count.HP_atcommand_exec_post ) {
+ if (HPMHooks.count.HP_atcommand_exec_post > 0) {
bool (*postHookFunc) (bool retVal___, const int fd, struct map_session_data *sd, const char *message, bool player_invoked);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_exec_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_exec_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_atcommand_exec_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, sd, message, player_invoked);
}
@@ -189,14 +1621,14 @@ bool HP_atcommand_exec(const int fd, struct map_session_data *sd, const char *me
bool HP_atcommand_create(char *name, AtCommandFunc func) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_atcommand_create_pre ) {
+ if (HPMHooks.count.HP_atcommand_create_pre > 0) {
bool (*preHookFunc) (char **name, AtCommandFunc *func);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_atcommand_create_pre[hIndex].func;
retVal___ = preHookFunc(&name, &func);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -204,9 +1636,9 @@ bool HP_atcommand_create(char *name, AtCommandFunc func) {
{
retVal___ = HPMHooks.source.atcommand.create(name, func);
}
- if( HPMHooks.count.HP_atcommand_create_post ) {
+ if (HPMHooks.count.HP_atcommand_create_post > 0) {
bool (*postHookFunc) (bool retVal___, char *name, AtCommandFunc func);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_atcommand_create_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name, func);
}
@@ -216,14 +1648,14 @@ bool HP_atcommand_create(char *name, AtCommandFunc func) {
bool HP_atcommand_can_use(struct map_session_data *sd, const char *command) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_atcommand_can_use_pre ) {
+ if (HPMHooks.count.HP_atcommand_can_use_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, const char **command);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_can_use_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_can_use_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_atcommand_can_use_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &command);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -231,9 +1663,9 @@ bool HP_atcommand_can_use(struct map_session_data *sd, const char *command) {
{
retVal___ = HPMHooks.source.atcommand.can_use(sd, command);
}
- if( HPMHooks.count.HP_atcommand_can_use_post ) {
+ if (HPMHooks.count.HP_atcommand_can_use_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, const char *command);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_can_use_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_can_use_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_atcommand_can_use_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, command);
}
@@ -243,14 +1675,14 @@ bool HP_atcommand_can_use(struct map_session_data *sd, const char *command) {
bool HP_atcommand_can_use2(struct map_session_data *sd, const char *command, AtCommandType type) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_atcommand_can_use2_pre ) {
+ if (HPMHooks.count.HP_atcommand_can_use2_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, const char **command, AtCommandType *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_can_use2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_can_use2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_atcommand_can_use2_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &command, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -258,9 +1690,9 @@ bool HP_atcommand_can_use2(struct map_session_data *sd, const char *command, AtC
{
retVal___ = HPMHooks.source.atcommand.can_use2(sd, command, type);
}
- if( HPMHooks.count.HP_atcommand_can_use2_post ) {
+ if (HPMHooks.count.HP_atcommand_can_use2_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, const char *command, AtCommandType type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_can_use2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_can_use2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_atcommand_can_use2_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, command, type);
}
@@ -269,14 +1701,14 @@ bool HP_atcommand_can_use2(struct map_session_data *sd, const char *command, AtC
}
void HP_atcommand_load_groups(GroupSettings **groups, struct config_setting_t **commands_, size_t sz) {
int hIndex = 0;
- if( HPMHooks.count.HP_atcommand_load_groups_pre ) {
+ if (HPMHooks.count.HP_atcommand_load_groups_pre > 0) {
void (*preHookFunc) (GroupSettings ***groups, struct config_setting_t ***commands_, size_t *sz);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_load_groups_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_load_groups_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_atcommand_load_groups_pre[hIndex].func;
preHookFunc(&groups, &commands_, &sz);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -284,9 +1716,9 @@ void HP_atcommand_load_groups(GroupSettings **groups, struct config_setting_t **
{
HPMHooks.source.atcommand.load_groups(groups, commands_, sz);
}
- if( HPMHooks.count.HP_atcommand_load_groups_post ) {
+ if (HPMHooks.count.HP_atcommand_load_groups_post > 0) {
void (*postHookFunc) (GroupSettings **groups, struct config_setting_t **commands_, size_t sz);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_load_groups_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_load_groups_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_atcommand_load_groups_post[hIndex].func;
postHookFunc(groups, commands_, sz);
}
@@ -296,14 +1728,14 @@ void HP_atcommand_load_groups(GroupSettings **groups, struct config_setting_t **
AtCommandInfo* HP_atcommand_exists(const char *name) {
int hIndex = 0;
AtCommandInfo* retVal___ = NULL;
- if( HPMHooks.count.HP_atcommand_exists_pre ) {
+ if (HPMHooks.count.HP_atcommand_exists_pre > 0) {
AtCommandInfo* (*preHookFunc) (const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_exists_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_exists_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_atcommand_exists_pre[hIndex].func;
retVal___ = preHookFunc(&name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -311,9 +1743,9 @@ AtCommandInfo* HP_atcommand_exists(const char *name) {
{
retVal___ = HPMHooks.source.atcommand.exists(name);
}
- if( HPMHooks.count.HP_atcommand_exists_post ) {
+ if (HPMHooks.count.HP_atcommand_exists_post > 0) {
AtCommandInfo* (*postHookFunc) (AtCommandInfo* retVal___, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_exists_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_exists_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_atcommand_exists_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name);
}
@@ -323,14 +1755,14 @@ AtCommandInfo* HP_atcommand_exists(const char *name) {
bool HP_atcommand_msg_read(const char *cfg_name, bool allow_override) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_atcommand_msg_read_pre ) {
+ if (HPMHooks.count.HP_atcommand_msg_read_pre > 0) {
bool (*preHookFunc) (const char **cfg_name, bool *allow_override);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_msg_read_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_msg_read_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_atcommand_msg_read_pre[hIndex].func;
retVal___ = preHookFunc(&cfg_name, &allow_override);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -338,9 +1770,9 @@ bool HP_atcommand_msg_read(const char *cfg_name, bool allow_override) {
{
retVal___ = HPMHooks.source.atcommand.msg_read(cfg_name, allow_override);
}
- if( HPMHooks.count.HP_atcommand_msg_read_post ) {
+ if (HPMHooks.count.HP_atcommand_msg_read_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *cfg_name, bool allow_override);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_msg_read_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_msg_read_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_atcommand_msg_read_post[hIndex].func;
retVal___ = postHookFunc(retVal___, cfg_name, allow_override);
}
@@ -349,14 +1781,14 @@ bool HP_atcommand_msg_read(const char *cfg_name, bool allow_override) {
}
void HP_atcommand_final_msg(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_atcommand_final_msg_pre ) {
+ if (HPMHooks.count.HP_atcommand_final_msg_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_final_msg_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_final_msg_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_atcommand_final_msg_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -364,9 +1796,9 @@ void HP_atcommand_final_msg(void) {
{
HPMHooks.source.atcommand.final_msg();
}
- if( HPMHooks.count.HP_atcommand_final_msg_post ) {
+ if (HPMHooks.count.HP_atcommand_final_msg_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_final_msg_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_final_msg_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_atcommand_final_msg_post[hIndex].func;
postHookFunc();
}
@@ -376,14 +1808,14 @@ void HP_atcommand_final_msg(void) {
struct atcmd_binding_data* HP_atcommand_get_bind_byname(const char *name) {
int hIndex = 0;
struct atcmd_binding_data* retVal___ = NULL;
- if( HPMHooks.count.HP_atcommand_get_bind_byname_pre ) {
+ if (HPMHooks.count.HP_atcommand_get_bind_byname_pre > 0) {
struct atcmd_binding_data* (*preHookFunc) (const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_get_bind_byname_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_get_bind_byname_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_atcommand_get_bind_byname_pre[hIndex].func;
retVal___ = preHookFunc(&name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -391,9 +1823,9 @@ struct atcmd_binding_data* HP_atcommand_get_bind_byname(const char *name) {
{
retVal___ = HPMHooks.source.atcommand.get_bind_byname(name);
}
- if( HPMHooks.count.HP_atcommand_get_bind_byname_post ) {
+ if (HPMHooks.count.HP_atcommand_get_bind_byname_post > 0) {
struct atcmd_binding_data* (*postHookFunc) (struct atcmd_binding_data* retVal___, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_get_bind_byname_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_get_bind_byname_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_atcommand_get_bind_byname_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name);
}
@@ -403,14 +1835,14 @@ struct atcmd_binding_data* HP_atcommand_get_bind_byname(const char *name) {
AtCommandInfo* HP_atcommand_get_info_byname(const char *name) {
int hIndex = 0;
AtCommandInfo* retVal___ = NULL;
- if( HPMHooks.count.HP_atcommand_get_info_byname_pre ) {
+ if (HPMHooks.count.HP_atcommand_get_info_byname_pre > 0) {
AtCommandInfo* (*preHookFunc) (const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_get_info_byname_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_get_info_byname_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_atcommand_get_info_byname_pre[hIndex].func;
retVal___ = preHookFunc(&name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -418,9 +1850,9 @@ AtCommandInfo* HP_atcommand_get_info_byname(const char *name) {
{
retVal___ = HPMHooks.source.atcommand.get_info_byname(name);
}
- if( HPMHooks.count.HP_atcommand_get_info_byname_post ) {
+ if (HPMHooks.count.HP_atcommand_get_info_byname_post > 0) {
AtCommandInfo* (*postHookFunc) (AtCommandInfo* retVal___, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_get_info_byname_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_get_info_byname_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_atcommand_get_info_byname_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name);
}
@@ -430,14 +1862,14 @@ AtCommandInfo* HP_atcommand_get_info_byname(const char *name) {
const char* HP_atcommand_check_alias(const char *aliasname) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_atcommand_check_alias_pre ) {
+ if (HPMHooks.count.HP_atcommand_check_alias_pre > 0) {
const char* (*preHookFunc) (const char **aliasname);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_check_alias_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_check_alias_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_atcommand_check_alias_pre[hIndex].func;
retVal___ = preHookFunc(&aliasname);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -445,9 +1877,9 @@ const char* HP_atcommand_check_alias(const char *aliasname) {
{
retVal___ = HPMHooks.source.atcommand.check_alias(aliasname);
}
- if( HPMHooks.count.HP_atcommand_check_alias_post ) {
+ if (HPMHooks.count.HP_atcommand_check_alias_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *aliasname);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_check_alias_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_check_alias_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_atcommand_check_alias_post[hIndex].func;
retVal___ = postHookFunc(retVal___, aliasname);
}
@@ -456,14 +1888,14 @@ const char* HP_atcommand_check_alias(const char *aliasname) {
}
void HP_atcommand_get_suggestions(struct map_session_data *sd, const char *name, bool is_atcmd_cmd) {
int hIndex = 0;
- if( HPMHooks.count.HP_atcommand_get_suggestions_pre ) {
+ if (HPMHooks.count.HP_atcommand_get_suggestions_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, const char **name, bool *is_atcmd_cmd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_get_suggestions_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_get_suggestions_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_atcommand_get_suggestions_pre[hIndex].func;
preHookFunc(&sd, &name, &is_atcmd_cmd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -471,9 +1903,9 @@ void HP_atcommand_get_suggestions(struct map_session_data *sd, const char *name,
{
HPMHooks.source.atcommand.get_suggestions(sd, name, is_atcmd_cmd);
}
- if( HPMHooks.count.HP_atcommand_get_suggestions_post ) {
+ if (HPMHooks.count.HP_atcommand_get_suggestions_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, const char *name, bool is_atcmd_cmd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_get_suggestions_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_get_suggestions_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_atcommand_get_suggestions_post[hIndex].func;
postHookFunc(sd, name, is_atcmd_cmd);
}
@@ -482,14 +1914,14 @@ void HP_atcommand_get_suggestions(struct map_session_data *sd, const char *name,
}
void HP_atcommand_config_read(const char *config_filename) {
int hIndex = 0;
- if( HPMHooks.count.HP_atcommand_config_read_pre ) {
+ if (HPMHooks.count.HP_atcommand_config_read_pre > 0) {
void (*preHookFunc) (const char **config_filename);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_config_read_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_config_read_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_atcommand_config_read_pre[hIndex].func;
preHookFunc(&config_filename);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -497,9 +1929,9 @@ void HP_atcommand_config_read(const char *config_filename) {
{
HPMHooks.source.atcommand.config_read(config_filename);
}
- if( HPMHooks.count.HP_atcommand_config_read_post ) {
+ if (HPMHooks.count.HP_atcommand_config_read_post > 0) {
void (*postHookFunc) (const char *config_filename);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_config_read_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_config_read_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_atcommand_config_read_post[hIndex].func;
postHookFunc(config_filename);
}
@@ -509,16 +1941,16 @@ void HP_atcommand_config_read(const char *config_filename) {
int HP_atcommand_stopattack(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_atcommand_stopattack_pre ) {
+ if (HPMHooks.count.HP_atcommand_stopattack_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_stopattack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_stopattack_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_atcommand_stopattack_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -528,9 +1960,9 @@ int HP_atcommand_stopattack(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.atcommand.stopattack(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_atcommand_stopattack_post ) {
+ if (HPMHooks.count.HP_atcommand_stopattack_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_stopattack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_stopattack_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_atcommand_stopattack_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -542,16 +1974,16 @@ int HP_atcommand_stopattack(struct block_list *bl, va_list ap) {
int HP_atcommand_pvpoff_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_atcommand_pvpoff_sub_pre ) {
+ if (HPMHooks.count.HP_atcommand_pvpoff_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_pvpoff_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_pvpoff_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_atcommand_pvpoff_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -561,9 +1993,9 @@ int HP_atcommand_pvpoff_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.atcommand.pvpoff_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_atcommand_pvpoff_sub_post ) {
+ if (HPMHooks.count.HP_atcommand_pvpoff_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_pvpoff_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_pvpoff_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_atcommand_pvpoff_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -575,16 +2007,16 @@ int HP_atcommand_pvpoff_sub(struct block_list *bl, va_list ap) {
int HP_atcommand_pvpon_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_atcommand_pvpon_sub_pre ) {
+ if (HPMHooks.count.HP_atcommand_pvpon_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_pvpon_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_pvpon_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_atcommand_pvpon_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -594,9 +2026,9 @@ int HP_atcommand_pvpon_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.atcommand.pvpon_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_atcommand_pvpon_sub_post ) {
+ if (HPMHooks.count.HP_atcommand_pvpon_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_pvpon_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_pvpon_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_atcommand_pvpon_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -608,16 +2040,16 @@ int HP_atcommand_pvpon_sub(struct block_list *bl, va_list ap) {
int HP_atcommand_atkillmonster_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_atcommand_atkillmonster_sub_pre ) {
+ if (HPMHooks.count.HP_atcommand_atkillmonster_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_atkillmonster_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_atkillmonster_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_atcommand_atkillmonster_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -627,9 +2059,9 @@ int HP_atcommand_atkillmonster_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.atcommand.atkillmonster_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_atcommand_atkillmonster_sub_post ) {
+ if (HPMHooks.count.HP_atcommand_atkillmonster_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_atkillmonster_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_atkillmonster_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_atcommand_atkillmonster_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -640,14 +2072,14 @@ int HP_atcommand_atkillmonster_sub(struct block_list *bl, va_list ap) {
}
void HP_atcommand_raise_sub(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_atcommand_raise_sub_pre ) {
+ if (HPMHooks.count.HP_atcommand_raise_sub_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_raise_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_raise_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_atcommand_raise_sub_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -655,9 +2087,9 @@ void HP_atcommand_raise_sub(struct map_session_data *sd) {
{
HPMHooks.source.atcommand.raise_sub(sd);
}
- if( HPMHooks.count.HP_atcommand_raise_sub_post ) {
+ if (HPMHooks.count.HP_atcommand_raise_sub_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_raise_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_raise_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_atcommand_raise_sub_post[hIndex].func;
postHookFunc(sd);
}
@@ -666,14 +2098,14 @@ void HP_atcommand_raise_sub(struct map_session_data *sd) {
}
void HP_atcommand_get_jail_time(int jailtime, int *year, int *month, int *day, int *hour, int *minute) {
int hIndex = 0;
- if( HPMHooks.count.HP_atcommand_get_jail_time_pre ) {
+ if (HPMHooks.count.HP_atcommand_get_jail_time_pre > 0) {
void (*preHookFunc) (int *jailtime, int **year, int **month, int **day, int **hour, int **minute);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_get_jail_time_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_get_jail_time_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_atcommand_get_jail_time_pre[hIndex].func;
preHookFunc(&jailtime, &year, &month, &day, &hour, &minute);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -681,9 +2113,9 @@ void HP_atcommand_get_jail_time(int jailtime, int *year, int *month, int *day, i
{
HPMHooks.source.atcommand.get_jail_time(jailtime, year, month, day, hour, minute);
}
- if( HPMHooks.count.HP_atcommand_get_jail_time_post ) {
+ if (HPMHooks.count.HP_atcommand_get_jail_time_post > 0) {
void (*postHookFunc) (int jailtime, int *year, int *month, int *day, int *hour, int *minute);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_get_jail_time_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_get_jail_time_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_atcommand_get_jail_time_post[hIndex].func;
postHookFunc(jailtime, year, month, day, hour, minute);
}
@@ -693,16 +2125,16 @@ void HP_atcommand_get_jail_time(int jailtime, int *year, int *month, int *day, i
int HP_atcommand_cleanfloor_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_atcommand_cleanfloor_sub_pre ) {
+ if (HPMHooks.count.HP_atcommand_cleanfloor_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_cleanfloor_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_cleanfloor_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_atcommand_cleanfloor_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -712,9 +2144,9 @@ int HP_atcommand_cleanfloor_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.atcommand.cleanfloor_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_atcommand_cleanfloor_sub_post ) {
+ if (HPMHooks.count.HP_atcommand_cleanfloor_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_cleanfloor_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_cleanfloor_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_atcommand_cleanfloor_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -726,16 +2158,16 @@ int HP_atcommand_cleanfloor_sub(struct block_list *bl, va_list ap) {
int HP_atcommand_mutearea_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_atcommand_mutearea_sub_pre ) {
+ if (HPMHooks.count.HP_atcommand_mutearea_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_mutearea_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_mutearea_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_atcommand_mutearea_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -745,9 +2177,9 @@ int HP_atcommand_mutearea_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.atcommand.mutearea_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_atcommand_mutearea_sub_post ) {
+ if (HPMHooks.count.HP_atcommand_mutearea_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_mutearea_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_mutearea_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_atcommand_mutearea_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -758,14 +2190,14 @@ int HP_atcommand_mutearea_sub(struct block_list *bl, va_list ap) {
}
void HP_atcommand_getring(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_atcommand_getring_pre ) {
+ if (HPMHooks.count.HP_atcommand_getring_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_getring_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_getring_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_atcommand_getring_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -773,9 +2205,9 @@ void HP_atcommand_getring(struct map_session_data *sd) {
{
HPMHooks.source.atcommand.getring(sd);
}
- if( HPMHooks.count.HP_atcommand_getring_post ) {
+ if (HPMHooks.count.HP_atcommand_getring_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_getring_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_getring_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_atcommand_getring_post[hIndex].func;
postHookFunc(sd);
}
@@ -784,14 +2216,14 @@ void HP_atcommand_getring(struct map_session_data *sd) {
}
void HP_atcommand_channel_help(int fd, const char *command, bool can_create) {
int hIndex = 0;
- if( HPMHooks.count.HP_atcommand_channel_help_pre ) {
+ if (HPMHooks.count.HP_atcommand_channel_help_pre > 0) {
void (*preHookFunc) (int *fd, const char **command, bool *can_create);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_channel_help_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_channel_help_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_atcommand_channel_help_pre[hIndex].func;
preHookFunc(&fd, &command, &can_create);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -799,9 +2231,9 @@ void HP_atcommand_channel_help(int fd, const char *command, bool can_create) {
{
HPMHooks.source.atcommand.channel_help(fd, command, can_create);
}
- if( HPMHooks.count.HP_atcommand_channel_help_post ) {
+ if (HPMHooks.count.HP_atcommand_channel_help_post > 0) {
void (*postHookFunc) (int fd, const char *command, bool can_create);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_channel_help_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_channel_help_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_atcommand_channel_help_post[hIndex].func;
postHookFunc(fd, command, can_create);
}
@@ -810,14 +2242,14 @@ void HP_atcommand_channel_help(int fd, const char *command, bool can_create) {
}
void HP_atcommand_commands_sub(struct map_session_data *sd, const int fd, AtCommandType type) {
int hIndex = 0;
- if( HPMHooks.count.HP_atcommand_commands_sub_pre ) {
+ if (HPMHooks.count.HP_atcommand_commands_sub_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, const int *fd, AtCommandType *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_commands_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_commands_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_atcommand_commands_sub_pre[hIndex].func;
preHookFunc(&sd, &fd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -825,9 +2257,9 @@ void HP_atcommand_commands_sub(struct map_session_data *sd, const int fd, AtComm
{
HPMHooks.source.atcommand.commands_sub(sd, fd, type);
}
- if( HPMHooks.count.HP_atcommand_commands_sub_post ) {
+ if (HPMHooks.count.HP_atcommand_commands_sub_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, const int fd, AtCommandType type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_commands_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_commands_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_atcommand_commands_sub_post[hIndex].func;
postHookFunc(sd, fd, type);
}
@@ -836,14 +2268,14 @@ void HP_atcommand_commands_sub(struct map_session_data *sd, const int fd, AtComm
}
void HP_atcommand_cmd_db_clear(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_atcommand_cmd_db_clear_pre ) {
+ if (HPMHooks.count.HP_atcommand_cmd_db_clear_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_cmd_db_clear_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_cmd_db_clear_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_atcommand_cmd_db_clear_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -851,9 +2283,9 @@ void HP_atcommand_cmd_db_clear(void) {
{
HPMHooks.source.atcommand.cmd_db_clear();
}
- if( HPMHooks.count.HP_atcommand_cmd_db_clear_post ) {
+ if (HPMHooks.count.HP_atcommand_cmd_db_clear_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_cmd_db_clear_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_cmd_db_clear_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_atcommand_cmd_db_clear_post[hIndex].func;
postHookFunc();
}
@@ -863,16 +2295,16 @@ void HP_atcommand_cmd_db_clear(void) {
int HP_atcommand_cmd_db_clear_sub(union DBKey key, struct DBData *data, va_list args) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_atcommand_cmd_db_clear_sub_pre ) {
+ if (HPMHooks.count.HP_atcommand_cmd_db_clear_sub_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_cmd_db_clear_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_cmd_db_clear_sub_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_atcommand_cmd_db_clear_sub_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -882,9 +2314,9 @@ int HP_atcommand_cmd_db_clear_sub(union DBKey key, struct DBData *data, va_list
retVal___ = HPMHooks.source.atcommand.cmd_db_clear_sub(key, data, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_atcommand_cmd_db_clear_sub_post ) {
+ if (HPMHooks.count.HP_atcommand_cmd_db_clear_sub_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_cmd_db_clear_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_cmd_db_clear_sub_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_atcommand_cmd_db_clear_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, args___copy);
@@ -895,14 +2327,14 @@ int HP_atcommand_cmd_db_clear_sub(union DBKey key, struct DBData *data, va_list
}
void HP_atcommand_doload(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_atcommand_doload_pre ) {
+ if (HPMHooks.count.HP_atcommand_doload_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_doload_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_doload_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_atcommand_doload_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -910,9 +2342,9 @@ void HP_atcommand_doload(void) {
{
HPMHooks.source.atcommand.doload();
}
- if( HPMHooks.count.HP_atcommand_doload_post ) {
+ if (HPMHooks.count.HP_atcommand_doload_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_doload_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_doload_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_atcommand_doload_post[hIndex].func;
postHookFunc();
}
@@ -921,14 +2353,14 @@ void HP_atcommand_doload(void) {
}
void HP_atcommand_base_commands(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_atcommand_base_commands_pre ) {
+ if (HPMHooks.count.HP_atcommand_base_commands_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_base_commands_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_base_commands_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_atcommand_base_commands_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -936,9 +2368,9 @@ void HP_atcommand_base_commands(void) {
{
HPMHooks.source.atcommand.base_commands();
}
- if( HPMHooks.count.HP_atcommand_base_commands_post ) {
+ if (HPMHooks.count.HP_atcommand_base_commands_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_base_commands_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_base_commands_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_atcommand_base_commands_post[hIndex].func;
postHookFunc();
}
@@ -948,14 +2380,14 @@ void HP_atcommand_base_commands(void) {
bool HP_atcommand_add(char *name, AtCommandFunc func, bool replace) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_atcommand_add_pre ) {
+ if (HPMHooks.count.HP_atcommand_add_pre > 0) {
bool (*preHookFunc) (char **name, AtCommandFunc *func, bool *replace);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_add_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_add_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_atcommand_add_pre[hIndex].func;
retVal___ = preHookFunc(&name, &func, &replace);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -963,9 +2395,9 @@ bool HP_atcommand_add(char *name, AtCommandFunc func, bool replace) {
{
retVal___ = HPMHooks.source.atcommand.add(name, func, replace);
}
- if( HPMHooks.count.HP_atcommand_add_post ) {
+ if (HPMHooks.count.HP_atcommand_add_post > 0) {
bool (*postHookFunc) (bool retVal___, char *name, AtCommandFunc func, bool replace);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_add_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_add_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_atcommand_add_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name, func, replace);
}
@@ -975,14 +2407,14 @@ bool HP_atcommand_add(char *name, AtCommandFunc func, bool replace) {
const char* HP_atcommand_msg(int msg_number) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_atcommand_msg_pre ) {
+ if (HPMHooks.count.HP_atcommand_msg_pre > 0) {
const char* (*preHookFunc) (int *msg_number);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_msg_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_msg_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_atcommand_msg_pre[hIndex].func;
retVal___ = preHookFunc(&msg_number);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -990,9 +2422,9 @@ const char* HP_atcommand_msg(int msg_number) {
{
retVal___ = HPMHooks.source.atcommand.msg(msg_number);
}
- if( HPMHooks.count.HP_atcommand_msg_post ) {
+ if (HPMHooks.count.HP_atcommand_msg_post > 0) {
const char* (*postHookFunc) (const char* retVal___, int msg_number);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_msg_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_msg_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_atcommand_msg_post[hIndex].func;
retVal___ = postHookFunc(retVal___, msg_number);
}
@@ -1001,14 +2433,14 @@ const char* HP_atcommand_msg(int msg_number) {
}
void HP_atcommand_expand_message_table(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_atcommand_expand_message_table_pre ) {
+ if (HPMHooks.count.HP_atcommand_expand_message_table_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_expand_message_table_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_expand_message_table_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_atcommand_expand_message_table_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1016,9 +2448,9 @@ void HP_atcommand_expand_message_table(void) {
{
HPMHooks.source.atcommand.expand_message_table();
}
- if( HPMHooks.count.HP_atcommand_expand_message_table_post ) {
+ if (HPMHooks.count.HP_atcommand_expand_message_table_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_expand_message_table_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_expand_message_table_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_atcommand_expand_message_table_post[hIndex].func;
postHookFunc();
}
@@ -1028,14 +2460,14 @@ void HP_atcommand_expand_message_table(void) {
const char* HP_atcommand_msgfd(int fd, int msg_number) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_atcommand_msgfd_pre ) {
+ if (HPMHooks.count.HP_atcommand_msgfd_pre > 0) {
const char* (*preHookFunc) (int *fd, int *msg_number);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_msgfd_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_msgfd_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_atcommand_msgfd_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &msg_number);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1043,9 +2475,9 @@ const char* HP_atcommand_msgfd(int fd, int msg_number) {
{
retVal___ = HPMHooks.source.atcommand.msgfd(fd, msg_number);
}
- if( HPMHooks.count.HP_atcommand_msgfd_post ) {
+ if (HPMHooks.count.HP_atcommand_msgfd_post > 0) {
const char* (*postHookFunc) (const char* retVal___, int fd, int msg_number);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_msgfd_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_msgfd_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_atcommand_msgfd_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, msg_number);
}
@@ -1055,14 +2487,14 @@ const char* HP_atcommand_msgfd(int fd, int msg_number) {
const char* HP_atcommand_msgsd(struct map_session_data *sd, int msg_number) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_atcommand_msgsd_pre ) {
+ if (HPMHooks.count.HP_atcommand_msgsd_pre > 0) {
const char* (*preHookFunc) (struct map_session_data **sd, int *msg_number);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_msgsd_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_msgsd_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_atcommand_msgsd_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &msg_number);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1070,9 +2502,9 @@ const char* HP_atcommand_msgsd(struct map_session_data *sd, int msg_number) {
{
retVal___ = HPMHooks.source.atcommand.msgsd(sd, msg_number);
}
- if( HPMHooks.count.HP_atcommand_msgsd_post ) {
+ if (HPMHooks.count.HP_atcommand_msgsd_post > 0) {
const char* (*postHookFunc) (const char* retVal___, struct map_session_data *sd, int msg_number);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_msgsd_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_msgsd_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_atcommand_msgsd_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, msg_number);
}
@@ -1082,14 +2514,14 @@ const char* HP_atcommand_msgsd(struct map_session_data *sd, int msg_number) {
/* battle_interface */
void HP_battle_init(bool minimal) {
int hIndex = 0;
- if( HPMHooks.count.HP_battle_init_pre ) {
+ if (HPMHooks.count.HP_battle_init_pre > 0) {
void (*preHookFunc) (bool *minimal);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_init_pre[hIndex].func;
preHookFunc(&minimal);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1097,9 +2529,9 @@ void HP_battle_init(bool minimal) {
{
HPMHooks.source.battle.init(minimal);
}
- if( HPMHooks.count.HP_battle_init_post ) {
+ if (HPMHooks.count.HP_battle_init_post > 0) {
void (*postHookFunc) (bool minimal);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_init_post[hIndex].func;
postHookFunc(minimal);
}
@@ -1108,14 +2540,14 @@ void HP_battle_init(bool minimal) {
}
void HP_battle_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_battle_final_pre ) {
+ if (HPMHooks.count.HP_battle_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1123,9 +2555,9 @@ void HP_battle_final(void) {
{
HPMHooks.source.battle.final();
}
- if( HPMHooks.count.HP_battle_final_post ) {
+ if (HPMHooks.count.HP_battle_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_final_post[hIndex].func;
postHookFunc();
}
@@ -1135,14 +2567,14 @@ void HP_battle_final(void) {
struct Damage HP_battle_calc_attack(int attack_type, struct block_list *bl, struct block_list *target, uint16 skill_id, uint16 skill_lv, int count) {
int hIndex = 0;
struct Damage retVal___ = { 0 };
- if( HPMHooks.count.HP_battle_calc_attack_pre ) {
+ if (HPMHooks.count.HP_battle_calc_attack_pre > 0) {
struct Damage (*preHookFunc) (int *attack_type, struct block_list **bl, struct block_list **target, uint16 *skill_id, uint16 *skill_lv, int *count);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_attack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_attack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_calc_attack_pre[hIndex].func;
retVal___ = preHookFunc(&attack_type, &bl, &target, &skill_id, &skill_lv, &count);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1150,9 +2582,9 @@ struct Damage HP_battle_calc_attack(int attack_type, struct block_list *bl, stru
{
retVal___ = HPMHooks.source.battle.calc_attack(attack_type, bl, target, skill_id, skill_lv, count);
}
- if( HPMHooks.count.HP_battle_calc_attack_post ) {
+ if (HPMHooks.count.HP_battle_calc_attack_post > 0) {
struct Damage (*postHookFunc) (struct Damage retVal___, int attack_type, struct block_list *bl, struct block_list *target, uint16 skill_id, uint16 skill_lv, int count);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_attack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_attack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_calc_attack_post[hIndex].func;
retVal___ = postHookFunc(retVal___, attack_type, bl, target, skill_id, skill_lv, count);
}
@@ -1162,14 +2594,14 @@ struct Damage HP_battle_calc_attack(int attack_type, struct block_list *bl, stru
int64 HP_battle_calc_damage(struct block_list *src, struct block_list *bl, struct Damage *d, int64 damage, uint16 skill_id, uint16 skill_lv) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_battle_calc_damage_pre ) {
+ if (HPMHooks.count.HP_battle_calc_damage_pre > 0) {
int64 (*preHookFunc) (struct block_list **src, struct block_list **bl, struct Damage **d, int64 *damage, uint16 *skill_id, uint16 *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_damage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_damage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_calc_damage_pre[hIndex].func;
retVal___ = preHookFunc(&src, &bl, &d, &damage, &skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1177,9 +2609,9 @@ int64 HP_battle_calc_damage(struct block_list *src, struct block_list *bl, struc
{
retVal___ = HPMHooks.source.battle.calc_damage(src, bl, d, damage, skill_id, skill_lv);
}
- if( HPMHooks.count.HP_battle_calc_damage_post ) {
+ if (HPMHooks.count.HP_battle_calc_damage_post > 0) {
int64 (*postHookFunc) (int64 retVal___, struct block_list *src, struct block_list *bl, struct Damage *d, int64 damage, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_damage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_damage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_calc_damage_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, bl, d, damage, skill_id, skill_lv);
}
@@ -1189,14 +2621,14 @@ int64 HP_battle_calc_damage(struct block_list *src, struct block_list *bl, struc
int64 HP_battle_calc_pc_damage(struct block_list *src, struct block_list *bl, struct Damage *d, int64 damage, uint16 skill_id, uint16 skill_lv) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_battle_calc_pc_damage_pre ) {
+ if (HPMHooks.count.HP_battle_calc_pc_damage_pre > 0) {
int64 (*preHookFunc) (struct block_list **src, struct block_list **bl, struct Damage **d, int64 *damage, uint16 *skill_id, uint16 *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_pc_damage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_pc_damage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_calc_pc_damage_pre[hIndex].func;
retVal___ = preHookFunc(&src, &bl, &d, &damage, &skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1204,9 +2636,9 @@ int64 HP_battle_calc_pc_damage(struct block_list *src, struct block_list *bl, st
{
retVal___ = HPMHooks.source.battle.calc_pc_damage(src, bl, d, damage, skill_id, skill_lv);
}
- if( HPMHooks.count.HP_battle_calc_pc_damage_post ) {
+ if (HPMHooks.count.HP_battle_calc_pc_damage_post > 0) {
int64 (*postHookFunc) (int64 retVal___, struct block_list *src, struct block_list *bl, struct Damage *d, int64 damage, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_pc_damage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_pc_damage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_calc_pc_damage_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, bl, d, damage, skill_id, skill_lv);
}
@@ -1216,14 +2648,14 @@ int64 HP_battle_calc_pc_damage(struct block_list *src, struct block_list *bl, st
int64 HP_battle_calc_gvg_damage(struct block_list *src, struct block_list *bl, int64 damage, int div_, uint16 skill_id, uint16 skill_lv, int flag) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_battle_calc_gvg_damage_pre ) {
+ if (HPMHooks.count.HP_battle_calc_gvg_damage_pre > 0) {
int64 (*preHookFunc) (struct block_list **src, struct block_list **bl, int64 *damage, int *div_, uint16 *skill_id, uint16 *skill_lv, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_gvg_damage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_gvg_damage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_calc_gvg_damage_pre[hIndex].func;
retVal___ = preHookFunc(&src, &bl, &damage, &div_, &skill_id, &skill_lv, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1231,9 +2663,9 @@ int64 HP_battle_calc_gvg_damage(struct block_list *src, struct block_list *bl, i
{
retVal___ = HPMHooks.source.battle.calc_gvg_damage(src, bl, damage, div_, skill_id, skill_lv, flag);
}
- if( HPMHooks.count.HP_battle_calc_gvg_damage_post ) {
+ if (HPMHooks.count.HP_battle_calc_gvg_damage_post > 0) {
int64 (*postHookFunc) (int64 retVal___, struct block_list *src, struct block_list *bl, int64 damage, int div_, uint16 skill_id, uint16 skill_lv, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_gvg_damage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_gvg_damage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_calc_gvg_damage_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, bl, damage, div_, skill_id, skill_lv, flag);
}
@@ -1243,14 +2675,14 @@ int64 HP_battle_calc_gvg_damage(struct block_list *src, struct block_list *bl, i
int64 HP_battle_calc_bg_damage(struct block_list *src, struct block_list *bl, int64 damage, int div_, uint16 skill_id, uint16 skill_lv, int flag) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_battle_calc_bg_damage_pre ) {
+ if (HPMHooks.count.HP_battle_calc_bg_damage_pre > 0) {
int64 (*preHookFunc) (struct block_list **src, struct block_list **bl, int64 *damage, int *div_, uint16 *skill_id, uint16 *skill_lv, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_bg_damage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_bg_damage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_calc_bg_damage_pre[hIndex].func;
retVal___ = preHookFunc(&src, &bl, &damage, &div_, &skill_id, &skill_lv, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1258,9 +2690,9 @@ int64 HP_battle_calc_bg_damage(struct block_list *src, struct block_list *bl, in
{
retVal___ = HPMHooks.source.battle.calc_bg_damage(src, bl, damage, div_, skill_id, skill_lv, flag);
}
- if( HPMHooks.count.HP_battle_calc_bg_damage_post ) {
+ if (HPMHooks.count.HP_battle_calc_bg_damage_post > 0) {
int64 (*postHookFunc) (int64 retVal___, struct block_list *src, struct block_list *bl, int64 damage, int div_, uint16 skill_id, uint16 skill_lv, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_bg_damage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_bg_damage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_calc_bg_damage_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, bl, damage, div_, skill_id, skill_lv, flag);
}
@@ -1270,14 +2702,14 @@ int64 HP_battle_calc_bg_damage(struct block_list *src, struct block_list *bl, in
enum damage_lv HP_battle_weapon_attack(struct block_list *bl, struct block_list *target, int64 tick, int flag) {
int hIndex = 0;
enum damage_lv retVal___ = ATK_NONE;
- if( HPMHooks.count.HP_battle_weapon_attack_pre ) {
+ if (HPMHooks.count.HP_battle_weapon_attack_pre > 0) {
enum damage_lv (*preHookFunc) (struct block_list **bl, struct block_list **target, int64 *tick, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_weapon_attack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_weapon_attack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_weapon_attack_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &target, &tick, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1285,9 +2717,9 @@ enum damage_lv HP_battle_weapon_attack(struct block_list *bl, struct block_list
{
retVal___ = HPMHooks.source.battle.weapon_attack(bl, target, tick, flag);
}
- if( HPMHooks.count.HP_battle_weapon_attack_post ) {
+ if (HPMHooks.count.HP_battle_weapon_attack_post > 0) {
enum damage_lv (*postHookFunc) (enum damage_lv retVal___, struct block_list *bl, struct block_list *target, int64 tick, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_weapon_attack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_weapon_attack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_weapon_attack_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, target, tick, flag);
}
@@ -1297,14 +2729,14 @@ enum damage_lv HP_battle_weapon_attack(struct block_list *bl, struct block_list
bool HP_battle_check_arrows(struct map_session_data *sd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_battle_check_arrows_pre ) {
+ if (HPMHooks.count.HP_battle_check_arrows_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_check_arrows_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_check_arrows_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_check_arrows_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1312,9 +2744,9 @@ bool HP_battle_check_arrows(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.battle.check_arrows(sd);
}
- if( HPMHooks.count.HP_battle_check_arrows_post ) {
+ if (HPMHooks.count.HP_battle_check_arrows_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_check_arrows_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_check_arrows_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_check_arrows_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -1324,14 +2756,14 @@ bool HP_battle_check_arrows(struct map_session_data *sd) {
struct Damage HP_battle_calc_weapon_attack(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int wflag) {
int hIndex = 0;
struct Damage retVal___ = { 0 };
- if( HPMHooks.count.HP_battle_calc_weapon_attack_pre ) {
+ if (HPMHooks.count.HP_battle_calc_weapon_attack_pre > 0) {
struct Damage (*preHookFunc) (struct block_list **src, struct block_list **target, uint16 *skill_id, uint16 *skill_lv, int *wflag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_weapon_attack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_weapon_attack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_calc_weapon_attack_pre[hIndex].func;
retVal___ = preHookFunc(&src, &target, &skill_id, &skill_lv, &wflag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1339,9 +2771,9 @@ struct Damage HP_battle_calc_weapon_attack(struct block_list *src, struct block_
{
retVal___ = HPMHooks.source.battle.calc_weapon_attack(src, target, skill_id, skill_lv, wflag);
}
- if( HPMHooks.count.HP_battle_calc_weapon_attack_post ) {
+ if (HPMHooks.count.HP_battle_calc_weapon_attack_post > 0) {
struct Damage (*postHookFunc) (struct Damage retVal___, struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int wflag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_weapon_attack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_weapon_attack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_calc_weapon_attack_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, target, skill_id, skill_lv, wflag);
}
@@ -1351,14 +2783,14 @@ struct Damage HP_battle_calc_weapon_attack(struct block_list *src, struct block_
int HP_battle_delay_damage(int64 tick, int amotion, struct block_list *src, struct block_list *target, int attack_type, uint16 skill_id, uint16 skill_lv, int64 damage, enum damage_lv dmg_lv, int ddelay, bool additional_effects) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_battle_delay_damage_pre ) {
+ if (HPMHooks.count.HP_battle_delay_damage_pre > 0) {
int (*preHookFunc) (int64 *tick, int *amotion, struct block_list **src, struct block_list **target, int *attack_type, uint16 *skill_id, uint16 *skill_lv, int64 *damage, enum damage_lv *dmg_lv, int *ddelay, bool *additional_effects);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_delay_damage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_delay_damage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_delay_damage_pre[hIndex].func;
retVal___ = preHookFunc(&tick, &amotion, &src, &target, &attack_type, &skill_id, &skill_lv, &damage, &dmg_lv, &ddelay, &additional_effects);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1366,9 +2798,9 @@ int HP_battle_delay_damage(int64 tick, int amotion, struct block_list *src, stru
{
retVal___ = HPMHooks.source.battle.delay_damage(tick, amotion, src, target, attack_type, skill_id, skill_lv, damage, dmg_lv, ddelay, additional_effects);
}
- if( HPMHooks.count.HP_battle_delay_damage_post ) {
+ if (HPMHooks.count.HP_battle_delay_damage_post > 0) {
int (*postHookFunc) (int retVal___, int64 tick, int amotion, struct block_list *src, struct block_list *target, int attack_type, uint16 skill_id, uint16 skill_lv, int64 damage, enum damage_lv dmg_lv, int ddelay, bool additional_effects);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_delay_damage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_delay_damage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_delay_damage_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tick, amotion, src, target, attack_type, skill_id, skill_lv, damage, dmg_lv, ddelay, additional_effects);
}
@@ -1377,14 +2809,14 @@ int HP_battle_delay_damage(int64 tick, int amotion, struct block_list *src, stru
}
void HP_battle_drain(struct map_session_data *sd, struct block_list *tbl, int64 rdamage, int64 ldamage, int race, int boss) {
int hIndex = 0;
- if( HPMHooks.count.HP_battle_drain_pre ) {
+ if (HPMHooks.count.HP_battle_drain_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct block_list **tbl, int64 *rdamage, int64 *ldamage, int *race, int *boss);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_drain_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_drain_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_drain_pre[hIndex].func;
preHookFunc(&sd, &tbl, &rdamage, &ldamage, &race, &boss);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1392,9 +2824,9 @@ void HP_battle_drain(struct map_session_data *sd, struct block_list *tbl, int64
{
HPMHooks.source.battle.drain(sd, tbl, rdamage, ldamage, race, boss);
}
- if( HPMHooks.count.HP_battle_drain_post ) {
+ if (HPMHooks.count.HP_battle_drain_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct block_list *tbl, int64 rdamage, int64 ldamage, int race, int boss);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_drain_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_drain_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_drain_post[hIndex].func;
postHookFunc(sd, tbl, rdamage, ldamage, race, boss);
}
@@ -1403,14 +2835,14 @@ void HP_battle_drain(struct map_session_data *sd, struct block_list *tbl, int64
}
void HP_battle_reflect_damage(struct block_list *target, struct block_list *src, struct Damage *wd, uint16 skill_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_battle_reflect_damage_pre ) {
+ if (HPMHooks.count.HP_battle_reflect_damage_pre > 0) {
void (*preHookFunc) (struct block_list **target, struct block_list **src, struct Damage **wd, uint16 *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_reflect_damage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_reflect_damage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_reflect_damage_pre[hIndex].func;
preHookFunc(&target, &src, &wd, &skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1418,26 +2850,52 @@ void HP_battle_reflect_damage(struct block_list *target, struct block_list *src,
{
HPMHooks.source.battle.reflect_damage(target, src, wd, skill_id);
}
- if( HPMHooks.count.HP_battle_reflect_damage_post ) {
+ if (HPMHooks.count.HP_battle_reflect_damage_post > 0) {
void (*postHookFunc) (struct block_list *target, struct block_list *src, struct Damage *wd, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_reflect_damage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_reflect_damage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_reflect_damage_post[hIndex].func;
postHookFunc(target, src, wd, skill_id);
}
}
return;
}
+void HP_battle_reflect_trap(struct block_list *target, struct block_list *src, struct Damage *md, uint16 skill_id) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_battle_reflect_trap_pre > 0) {
+ void (*preHookFunc) (struct block_list **target, struct block_list **src, struct Damage **md, uint16 *skill_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_reflect_trap_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_battle_reflect_trap_pre[hIndex].func;
+ preHookFunc(&target, &src, &md, &skill_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.battle.reflect_trap(target, src, md, skill_id);
+ }
+ if (HPMHooks.count.HP_battle_reflect_trap_post > 0) {
+ void (*postHookFunc) (struct block_list *target, struct block_list *src, struct Damage *md, uint16 skill_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_reflect_trap_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_battle_reflect_trap_post[hIndex].func;
+ postHookFunc(target, src, md, skill_id);
+ }
+ }
+ return;
+}
int HP_battle_attr_ratio(int atk_elem, int def_type, int def_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_battle_attr_ratio_pre ) {
+ if (HPMHooks.count.HP_battle_attr_ratio_pre > 0) {
int (*preHookFunc) (int *atk_elem, int *def_type, int *def_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_attr_ratio_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_attr_ratio_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_attr_ratio_pre[hIndex].func;
retVal___ = preHookFunc(&atk_elem, &def_type, &def_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1445,9 +2903,9 @@ int HP_battle_attr_ratio(int atk_elem, int def_type, int def_lv) {
{
retVal___ = HPMHooks.source.battle.attr_ratio(atk_elem, def_type, def_lv);
}
- if( HPMHooks.count.HP_battle_attr_ratio_post ) {
+ if (HPMHooks.count.HP_battle_attr_ratio_post > 0) {
int (*postHookFunc) (int retVal___, int atk_elem, int def_type, int def_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_attr_ratio_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_attr_ratio_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_attr_ratio_post[hIndex].func;
retVal___ = postHookFunc(retVal___, atk_elem, def_type, def_lv);
}
@@ -1457,14 +2915,14 @@ int HP_battle_attr_ratio(int atk_elem, int def_type, int def_lv) {
int64 HP_battle_attr_fix(struct block_list *src, struct block_list *target, int64 damage, int atk_elem, int def_type, int def_lv) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_battle_attr_fix_pre ) {
+ if (HPMHooks.count.HP_battle_attr_fix_pre > 0) {
int64 (*preHookFunc) (struct block_list **src, struct block_list **target, int64 *damage, int *atk_elem, int *def_type, int *def_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_attr_fix_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_attr_fix_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_attr_fix_pre[hIndex].func;
retVal___ = preHookFunc(&src, &target, &damage, &atk_elem, &def_type, &def_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1472,9 +2930,9 @@ int64 HP_battle_attr_fix(struct block_list *src, struct block_list *target, int6
{
retVal___ = HPMHooks.source.battle.attr_fix(src, target, damage, atk_elem, def_type, def_lv);
}
- if( HPMHooks.count.HP_battle_attr_fix_post ) {
+ if (HPMHooks.count.HP_battle_attr_fix_post > 0) {
int64 (*postHookFunc) (int64 retVal___, struct block_list *src, struct block_list *target, int64 damage, int atk_elem, int def_type, int def_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_attr_fix_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_attr_fix_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_attr_fix_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, target, damage, atk_elem, def_type, def_lv);
}
@@ -1484,14 +2942,14 @@ int64 HP_battle_attr_fix(struct block_list *src, struct block_list *target, int6
int64 HP_battle_calc_cardfix(int attack_type, struct block_list *src, struct block_list *target, int nk, int s_ele, int s_ele_, int64 damage, int left, int flag) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_battle_calc_cardfix_pre ) {
+ if (HPMHooks.count.HP_battle_calc_cardfix_pre > 0) {
int64 (*preHookFunc) (int *attack_type, struct block_list **src, struct block_list **target, int *nk, int *s_ele, int *s_ele_, int64 *damage, int *left, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_cardfix_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_cardfix_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_calc_cardfix_pre[hIndex].func;
retVal___ = preHookFunc(&attack_type, &src, &target, &nk, &s_ele, &s_ele_, &damage, &left, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1499,9 +2957,9 @@ int64 HP_battle_calc_cardfix(int attack_type, struct block_list *src, struct blo
{
retVal___ = HPMHooks.source.battle.calc_cardfix(attack_type, src, target, nk, s_ele, s_ele_, damage, left, flag);
}
- if( HPMHooks.count.HP_battle_calc_cardfix_post ) {
+ if (HPMHooks.count.HP_battle_calc_cardfix_post > 0) {
int64 (*postHookFunc) (int64 retVal___, int attack_type, struct block_list *src, struct block_list *target, int nk, int s_ele, int s_ele_, int64 damage, int left, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_cardfix_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_cardfix_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_calc_cardfix_post[hIndex].func;
retVal___ = postHookFunc(retVal___, attack_type, src, target, nk, s_ele, s_ele_, damage, left, flag);
}
@@ -1511,14 +2969,14 @@ int64 HP_battle_calc_cardfix(int attack_type, struct block_list *src, struct blo
int64 HP_battle_calc_cardfix2(struct block_list *src, struct block_list *bl, int64 damage, int s_ele, int nk, int flag) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_battle_calc_cardfix2_pre ) {
+ if (HPMHooks.count.HP_battle_calc_cardfix2_pre > 0) {
int64 (*preHookFunc) (struct block_list **src, struct block_list **bl, int64 *damage, int *s_ele, int *nk, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_cardfix2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_cardfix2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_calc_cardfix2_pre[hIndex].func;
retVal___ = preHookFunc(&src, &bl, &damage, &s_ele, &nk, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1526,9 +2984,9 @@ int64 HP_battle_calc_cardfix2(struct block_list *src, struct block_list *bl, int
{
retVal___ = HPMHooks.source.battle.calc_cardfix2(src, bl, damage, s_ele, nk, flag);
}
- if( HPMHooks.count.HP_battle_calc_cardfix2_post ) {
+ if (HPMHooks.count.HP_battle_calc_cardfix2_post > 0) {
int64 (*postHookFunc) (int64 retVal___, struct block_list *src, struct block_list *bl, int64 damage, int s_ele, int nk, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_cardfix2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_cardfix2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_calc_cardfix2_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, bl, damage, s_ele, nk, flag);
}
@@ -1538,14 +2996,14 @@ int64 HP_battle_calc_cardfix2(struct block_list *src, struct block_list *bl, int
int64 HP_battle_calc_elefix(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int64 damage, int nk, int n_ele, int s_ele, int s_ele_, bool left, int flag) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_battle_calc_elefix_pre ) {
+ if (HPMHooks.count.HP_battle_calc_elefix_pre > 0) {
int64 (*preHookFunc) (struct block_list **src, struct block_list **target, uint16 *skill_id, uint16 *skill_lv, int64 *damage, int *nk, int *n_ele, int *s_ele, int *s_ele_, bool *left, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_elefix_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_elefix_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_calc_elefix_pre[hIndex].func;
retVal___ = preHookFunc(&src, &target, &skill_id, &skill_lv, &damage, &nk, &n_ele, &s_ele, &s_ele_, &left, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1553,9 +3011,9 @@ int64 HP_battle_calc_elefix(struct block_list *src, struct block_list *target, u
{
retVal___ = HPMHooks.source.battle.calc_elefix(src, target, skill_id, skill_lv, damage, nk, n_ele, s_ele, s_ele_, left, flag);
}
- if( HPMHooks.count.HP_battle_calc_elefix_post ) {
+ if (HPMHooks.count.HP_battle_calc_elefix_post > 0) {
int64 (*postHookFunc) (int64 retVal___, struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int64 damage, int nk, int n_ele, int s_ele, int s_ele_, bool left, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_elefix_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_elefix_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_calc_elefix_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, target, skill_id, skill_lv, damage, nk, n_ele, s_ele, s_ele_, left, flag);
}
@@ -1565,14 +3023,14 @@ int64 HP_battle_calc_elefix(struct block_list *src, struct block_list *target, u
int64 HP_battle_calc_masteryfix(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int64 damage, int div, bool left, bool weapon) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_battle_calc_masteryfix_pre ) {
+ if (HPMHooks.count.HP_battle_calc_masteryfix_pre > 0) {
int64 (*preHookFunc) (struct block_list **src, struct block_list **target, uint16 *skill_id, uint16 *skill_lv, int64 *damage, int *div, bool *left, bool *weapon);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_masteryfix_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_masteryfix_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_calc_masteryfix_pre[hIndex].func;
retVal___ = preHookFunc(&src, &target, &skill_id, &skill_lv, &damage, &div, &left, &weapon);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1580,9 +3038,9 @@ int64 HP_battle_calc_masteryfix(struct block_list *src, struct block_list *targe
{
retVal___ = HPMHooks.source.battle.calc_masteryfix(src, target, skill_id, skill_lv, damage, div, left, weapon);
}
- if( HPMHooks.count.HP_battle_calc_masteryfix_post ) {
+ if (HPMHooks.count.HP_battle_calc_masteryfix_post > 0) {
int64 (*postHookFunc) (int64 retVal___, struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int64 damage, int div, bool left, bool weapon);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_masteryfix_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_masteryfix_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_calc_masteryfix_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, target, skill_id, skill_lv, damage, div, left, weapon);
}
@@ -1592,14 +3050,14 @@ int64 HP_battle_calc_masteryfix(struct block_list *src, struct block_list *targe
int HP_battle_calc_chorusbonus(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_battle_calc_chorusbonus_pre ) {
+ if (HPMHooks.count.HP_battle_calc_chorusbonus_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_chorusbonus_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_chorusbonus_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_calc_chorusbonus_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1607,9 +3065,9 @@ int HP_battle_calc_chorusbonus(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.battle.calc_chorusbonus(sd);
}
- if( HPMHooks.count.HP_battle_calc_chorusbonus_post ) {
+ if (HPMHooks.count.HP_battle_calc_chorusbonus_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_chorusbonus_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_chorusbonus_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_calc_chorusbonus_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -1619,14 +3077,14 @@ int HP_battle_calc_chorusbonus(struct map_session_data *sd) {
int HP_battle_calc_skillratio(int attack_type, struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int skillratio, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_battle_calc_skillratio_pre ) {
+ if (HPMHooks.count.HP_battle_calc_skillratio_pre > 0) {
int (*preHookFunc) (int *attack_type, struct block_list **src, struct block_list **target, uint16 *skill_id, uint16 *skill_lv, int *skillratio, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_skillratio_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_skillratio_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_calc_skillratio_pre[hIndex].func;
retVal___ = preHookFunc(&attack_type, &src, &target, &skill_id, &skill_lv, &skillratio, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1634,9 +3092,9 @@ int HP_battle_calc_skillratio(int attack_type, struct block_list *src, struct bl
{
retVal___ = HPMHooks.source.battle.calc_skillratio(attack_type, src, target, skill_id, skill_lv, skillratio, flag);
}
- if( HPMHooks.count.HP_battle_calc_skillratio_post ) {
+ if (HPMHooks.count.HP_battle_calc_skillratio_post > 0) {
int (*postHookFunc) (int retVal___, int attack_type, struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int skillratio, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_skillratio_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_skillratio_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_calc_skillratio_post[hIndex].func;
retVal___ = postHookFunc(retVal___, attack_type, src, target, skill_id, skill_lv, skillratio, flag);
}
@@ -1646,14 +3104,14 @@ int HP_battle_calc_skillratio(int attack_type, struct block_list *src, struct bl
int64 HP_battle_calc_sizefix(struct map_session_data *sd, int64 damage, int type, int size, bool ignore) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_battle_calc_sizefix_pre ) {
+ if (HPMHooks.count.HP_battle_calc_sizefix_pre > 0) {
int64 (*preHookFunc) (struct map_session_data **sd, int64 *damage, int *type, int *size, bool *ignore);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_sizefix_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_sizefix_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_calc_sizefix_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &damage, &type, &size, &ignore);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1661,9 +3119,9 @@ int64 HP_battle_calc_sizefix(struct map_session_data *sd, int64 damage, int type
{
retVal___ = HPMHooks.source.battle.calc_sizefix(sd, damage, type, size, ignore);
}
- if( HPMHooks.count.HP_battle_calc_sizefix_post ) {
+ if (HPMHooks.count.HP_battle_calc_sizefix_post > 0) {
int64 (*postHookFunc) (int64 retVal___, struct map_session_data *sd, int64 damage, int type, int size, bool ignore);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_sizefix_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_sizefix_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_calc_sizefix_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, damage, type, size, ignore);
}
@@ -1673,14 +3131,14 @@ int64 HP_battle_calc_sizefix(struct map_session_data *sd, int64 damage, int type
int64 HP_battle_calc_weapon_damage(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, struct weapon_atk *watk, int nk, bool n_ele, short s_ele, short s_ele_, int size, int type, int flag, int flag2) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_battle_calc_weapon_damage_pre ) {
+ if (HPMHooks.count.HP_battle_calc_weapon_damage_pre > 0) {
int64 (*preHookFunc) (struct block_list **src, struct block_list **bl, uint16 *skill_id, uint16 *skill_lv, struct weapon_atk **watk, int *nk, bool *n_ele, short *s_ele, short *s_ele_, int *size, int *type, int *flag, int *flag2);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_weapon_damage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_weapon_damage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_calc_weapon_damage_pre[hIndex].func;
retVal___ = preHookFunc(&src, &bl, &skill_id, &skill_lv, &watk, &nk, &n_ele, &s_ele, &s_ele_, &size, &type, &flag, &flag2);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1688,9 +3146,9 @@ int64 HP_battle_calc_weapon_damage(struct block_list *src, struct block_list *bl
{
retVal___ = HPMHooks.source.battle.calc_weapon_damage(src, bl, skill_id, skill_lv, watk, nk, n_ele, s_ele, s_ele_, size, type, flag, flag2);
}
- if( HPMHooks.count.HP_battle_calc_weapon_damage_post ) {
+ if (HPMHooks.count.HP_battle_calc_weapon_damage_post > 0) {
int64 (*postHookFunc) (int64 retVal___, struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, struct weapon_atk *watk, int nk, bool n_ele, short s_ele, short s_ele_, int size, int type, int flag, int flag2);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_weapon_damage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_weapon_damage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_calc_weapon_damage_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, bl, skill_id, skill_lv, watk, nk, n_ele, s_ele, s_ele_, size, type, flag, flag2);
}
@@ -1700,14 +3158,14 @@ int64 HP_battle_calc_weapon_damage(struct block_list *src, struct block_list *bl
int64 HP_battle_calc_defense(int attack_type, struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int64 damage, int flag, int pdef) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_battle_calc_defense_pre ) {
+ if (HPMHooks.count.HP_battle_calc_defense_pre > 0) {
int64 (*preHookFunc) (int *attack_type, struct block_list **src, struct block_list **target, uint16 *skill_id, uint16 *skill_lv, int64 *damage, int *flag, int *pdef);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_defense_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_defense_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_calc_defense_pre[hIndex].func;
retVal___ = preHookFunc(&attack_type, &src, &target, &skill_id, &skill_lv, &damage, &flag, &pdef);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1715,9 +3173,9 @@ int64 HP_battle_calc_defense(int attack_type, struct block_list *src, struct blo
{
retVal___ = HPMHooks.source.battle.calc_defense(attack_type, src, target, skill_id, skill_lv, damage, flag, pdef);
}
- if( HPMHooks.count.HP_battle_calc_defense_post ) {
+ if (HPMHooks.count.HP_battle_calc_defense_post > 0) {
int64 (*postHookFunc) (int64 retVal___, int attack_type, struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int64 damage, int flag, int pdef);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_defense_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_defense_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_calc_defense_post[hIndex].func;
retVal___ = postHookFunc(retVal___, attack_type, src, target, skill_id, skill_lv, damage, flag, pdef);
}
@@ -1727,14 +3185,14 @@ int64 HP_battle_calc_defense(int attack_type, struct block_list *src, struct blo
struct block_list* HP_battle_get_master(struct block_list *src) {
int hIndex = 0;
struct block_list* retVal___ = NULL;
- if( HPMHooks.count.HP_battle_get_master_pre ) {
+ if (HPMHooks.count.HP_battle_get_master_pre > 0) {
struct block_list* (*preHookFunc) (struct block_list **src);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_master_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_master_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_get_master_pre[hIndex].func;
retVal___ = preHookFunc(&src);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1742,9 +3200,9 @@ struct block_list* HP_battle_get_master(struct block_list *src) {
{
retVal___ = HPMHooks.source.battle.get_master(src);
}
- if( HPMHooks.count.HP_battle_get_master_post ) {
+ if (HPMHooks.count.HP_battle_get_master_post > 0) {
struct block_list* (*postHookFunc) (struct block_list* retVal___, struct block_list *src);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_master_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_master_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_get_master_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src);
}
@@ -1754,14 +3212,14 @@ struct block_list* HP_battle_get_master(struct block_list *src) {
struct block_list* HP_battle_get_targeted(struct block_list *target) {
int hIndex = 0;
struct block_list* retVal___ = NULL;
- if( HPMHooks.count.HP_battle_get_targeted_pre ) {
+ if (HPMHooks.count.HP_battle_get_targeted_pre > 0) {
struct block_list* (*preHookFunc) (struct block_list **target);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_targeted_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_targeted_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_get_targeted_pre[hIndex].func;
retVal___ = preHookFunc(&target);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1769,9 +3227,9 @@ struct block_list* HP_battle_get_targeted(struct block_list *target) {
{
retVal___ = HPMHooks.source.battle.get_targeted(target);
}
- if( HPMHooks.count.HP_battle_get_targeted_post ) {
+ if (HPMHooks.count.HP_battle_get_targeted_post > 0) {
struct block_list* (*postHookFunc) (struct block_list* retVal___, struct block_list *target);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_targeted_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_targeted_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_get_targeted_post[hIndex].func;
retVal___ = postHookFunc(retVal___, target);
}
@@ -1781,14 +3239,14 @@ struct block_list* HP_battle_get_targeted(struct block_list *target) {
struct block_list* HP_battle_get_enemy(struct block_list *target, int type, int range) {
int hIndex = 0;
struct block_list* retVal___ = NULL;
- if( HPMHooks.count.HP_battle_get_enemy_pre ) {
+ if (HPMHooks.count.HP_battle_get_enemy_pre > 0) {
struct block_list* (*preHookFunc) (struct block_list **target, int *type, int *range);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_enemy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_enemy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_get_enemy_pre[hIndex].func;
retVal___ = preHookFunc(&target, &type, &range);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1796,9 +3254,9 @@ struct block_list* HP_battle_get_enemy(struct block_list *target, int type, int
{
retVal___ = HPMHooks.source.battle.get_enemy(target, type, range);
}
- if( HPMHooks.count.HP_battle_get_enemy_post ) {
+ if (HPMHooks.count.HP_battle_get_enemy_post > 0) {
struct block_list* (*postHookFunc) (struct block_list* retVal___, struct block_list *target, int type, int range);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_enemy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_enemy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_get_enemy_post[hIndex].func;
retVal___ = postHookFunc(retVal___, target, type, range);
}
@@ -1808,14 +3266,14 @@ struct block_list* HP_battle_get_enemy(struct block_list *target, int type, int
int HP_battle_get_target(struct block_list *bl) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_battle_get_target_pre ) {
+ if (HPMHooks.count.HP_battle_get_target_pre > 0) {
int (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_target_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_target_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_get_target_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1823,9 +3281,9 @@ int HP_battle_get_target(struct block_list *bl) {
{
retVal___ = HPMHooks.source.battle.get_target(bl);
}
- if( HPMHooks.count.HP_battle_get_target_post ) {
+ if (HPMHooks.count.HP_battle_get_target_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_target_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_target_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_get_target_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -1835,14 +3293,14 @@ int HP_battle_get_target(struct block_list *bl) {
int HP_battle_get_current_skill(struct block_list *bl) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_battle_get_current_skill_pre ) {
+ if (HPMHooks.count.HP_battle_get_current_skill_pre > 0) {
int (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_current_skill_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_current_skill_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_get_current_skill_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1850,9 +3308,9 @@ int HP_battle_get_current_skill(struct block_list *bl) {
{
retVal___ = HPMHooks.source.battle.get_current_skill(bl);
}
- if( HPMHooks.count.HP_battle_get_current_skill_post ) {
+ if (HPMHooks.count.HP_battle_get_current_skill_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_current_skill_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_current_skill_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_get_current_skill_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -1862,14 +3320,14 @@ int HP_battle_get_current_skill(struct block_list *bl) {
bool HP_battle_check_undead(int race, int element) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_battle_check_undead_pre ) {
+ if (HPMHooks.count.HP_battle_check_undead_pre > 0) {
bool (*preHookFunc) (int *race, int *element);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_check_undead_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_check_undead_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_check_undead_pre[hIndex].func;
retVal___ = preHookFunc(&race, &element);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1877,9 +3335,9 @@ bool HP_battle_check_undead(int race, int element) {
{
retVal___ = HPMHooks.source.battle.check_undead(race, element);
}
- if( HPMHooks.count.HP_battle_check_undead_post ) {
+ if (HPMHooks.count.HP_battle_check_undead_post > 0) {
bool (*postHookFunc) (bool retVal___, int race, int element);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_check_undead_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_check_undead_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_check_undead_post[hIndex].func;
retVal___ = postHookFunc(retVal___, race, element);
}
@@ -1889,14 +3347,14 @@ bool HP_battle_check_undead(int race, int element) {
int HP_battle_check_target(struct block_list *src, struct block_list *target, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_battle_check_target_pre ) {
+ if (HPMHooks.count.HP_battle_check_target_pre > 0) {
int (*preHookFunc) (struct block_list **src, struct block_list **target, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_check_target_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_check_target_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_check_target_pre[hIndex].func;
retVal___ = preHookFunc(&src, &target, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1904,9 +3362,9 @@ int HP_battle_check_target(struct block_list *src, struct block_list *target, in
{
retVal___ = HPMHooks.source.battle.check_target(src, target, flag);
}
- if( HPMHooks.count.HP_battle_check_target_post ) {
+ if (HPMHooks.count.HP_battle_check_target_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src, struct block_list *target, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_check_target_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_check_target_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_check_target_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, target, flag);
}
@@ -1916,14 +3374,14 @@ int HP_battle_check_target(struct block_list *src, struct block_list *target, in
bool HP_battle_check_range(struct block_list *src, struct block_list *bl, int range) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_battle_check_range_pre ) {
+ if (HPMHooks.count.HP_battle_check_range_pre > 0) {
bool (*preHookFunc) (struct block_list **src, struct block_list **bl, int *range);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_check_range_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_check_range_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_check_range_pre[hIndex].func;
retVal___ = preHookFunc(&src, &bl, &range);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1931,9 +3389,9 @@ bool HP_battle_check_range(struct block_list *src, struct block_list *bl, int ra
{
retVal___ = HPMHooks.source.battle.check_range(src, bl, range);
}
- if( HPMHooks.count.HP_battle_check_range_post ) {
+ if (HPMHooks.count.HP_battle_check_range_post > 0) {
bool (*postHookFunc) (bool retVal___, struct block_list *src, struct block_list *bl, int range);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_check_range_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_check_range_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_check_range_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, bl, range);
}
@@ -1942,14 +3400,14 @@ bool HP_battle_check_range(struct block_list *src, struct block_list *bl, int ra
}
void HP_battle_consume_ammo(struct map_session_data *sd, int skill_id, int lv) {
int hIndex = 0;
- if( HPMHooks.count.HP_battle_consume_ammo_pre ) {
+ if (HPMHooks.count.HP_battle_consume_ammo_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *skill_id, int *lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_consume_ammo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_consume_ammo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_consume_ammo_pre[hIndex].func;
preHookFunc(&sd, &skill_id, &lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -1957,9 +3415,9 @@ void HP_battle_consume_ammo(struct map_session_data *sd, int skill_id, int lv) {
{
HPMHooks.source.battle.consume_ammo(sd, skill_id, lv);
}
- if( HPMHooks.count.HP_battle_consume_ammo_post ) {
+ if (HPMHooks.count.HP_battle_consume_ammo_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int skill_id, int lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_consume_ammo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_consume_ammo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_consume_ammo_post[hIndex].func;
postHookFunc(sd, skill_id, lv);
}
@@ -1969,16 +3427,16 @@ void HP_battle_consume_ammo(struct map_session_data *sd, int skill_id, int lv) {
int HP_battle_get_targeted_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_battle_get_targeted_sub_pre ) {
+ if (HPMHooks.count.HP_battle_get_targeted_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_targeted_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_targeted_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_battle_get_targeted_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -1988,9 +3446,9 @@ int HP_battle_get_targeted_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.battle.get_targeted_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_battle_get_targeted_sub_post ) {
+ if (HPMHooks.count.HP_battle_get_targeted_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_targeted_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_targeted_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_battle_get_targeted_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -2002,16 +3460,16 @@ int HP_battle_get_targeted_sub(struct block_list *bl, va_list ap) {
int HP_battle_get_enemy_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_battle_get_enemy_sub_pre ) {
+ if (HPMHooks.count.HP_battle_get_enemy_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_enemy_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_enemy_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_battle_get_enemy_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2021,9 +3479,9 @@ int HP_battle_get_enemy_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.battle.get_enemy_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_battle_get_enemy_sub_post ) {
+ if (HPMHooks.count.HP_battle_get_enemy_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_enemy_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_enemy_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_battle_get_enemy_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -2035,16 +3493,16 @@ int HP_battle_get_enemy_sub(struct block_list *bl, va_list ap) {
int HP_battle_get_enemy_area_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_battle_get_enemy_area_sub_pre ) {
+ if (HPMHooks.count.HP_battle_get_enemy_area_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_enemy_area_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_enemy_area_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_battle_get_enemy_area_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2054,9 +3512,9 @@ int HP_battle_get_enemy_area_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.battle.get_enemy_area_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_battle_get_enemy_area_sub_post ) {
+ if (HPMHooks.count.HP_battle_get_enemy_area_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_enemy_area_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_enemy_area_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_battle_get_enemy_area_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -2068,14 +3526,14 @@ int HP_battle_get_enemy_area_sub(struct block_list *bl, va_list ap) {
int HP_battle_delay_damage_sub(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_battle_delay_damage_sub_pre ) {
+ if (HPMHooks.count.HP_battle_delay_damage_sub_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_delay_damage_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_delay_damage_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_delay_damage_sub_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2083,9 +3541,9 @@ int HP_battle_delay_damage_sub(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.battle.delay_damage_sub(tid, tick, id, data);
}
- if( HPMHooks.count.HP_battle_delay_damage_sub_post ) {
+ if (HPMHooks.count.HP_battle_delay_damage_sub_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_delay_damage_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_delay_damage_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_delay_damage_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -2095,14 +3553,14 @@ int HP_battle_delay_damage_sub(int tid, int64 tick, int id, intptr_t data) {
int HP_battle_blewcount_bonus(struct map_session_data *sd, uint16 skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_battle_blewcount_bonus_pre ) {
+ if (HPMHooks.count.HP_battle_blewcount_bonus_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, uint16 *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_blewcount_bonus_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_blewcount_bonus_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_blewcount_bonus_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2110,9 +3568,9 @@ int HP_battle_blewcount_bonus(struct map_session_data *sd, uint16 skill_id) {
{
retVal___ = HPMHooks.source.battle.blewcount_bonus(sd, skill_id);
}
- if( HPMHooks.count.HP_battle_blewcount_bonus_post ) {
+ if (HPMHooks.count.HP_battle_blewcount_bonus_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_blewcount_bonus_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_blewcount_bonus_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_blewcount_bonus_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, skill_id);
}
@@ -2122,14 +3580,14 @@ int HP_battle_blewcount_bonus(struct map_session_data *sd, uint16 skill_id) {
int HP_battle_range_type(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_battle_range_type_pre ) {
+ if (HPMHooks.count.HP_battle_range_type_pre > 0) {
int (*preHookFunc) (struct block_list **src, struct block_list **target, uint16 *skill_id, uint16 *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_range_type_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_range_type_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_range_type_pre[hIndex].func;
retVal___ = preHookFunc(&src, &target, &skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2137,9 +3595,9 @@ int HP_battle_range_type(struct block_list *src, struct block_list *target, uint
{
retVal___ = HPMHooks.source.battle.range_type(src, target, skill_id, skill_lv);
}
- if( HPMHooks.count.HP_battle_range_type_post ) {
+ if (HPMHooks.count.HP_battle_range_type_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_range_type_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_range_type_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_range_type_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, target, skill_id, skill_lv);
}
@@ -2149,14 +3607,14 @@ int HP_battle_range_type(struct block_list *src, struct block_list *target, uint
int64 HP_battle_calc_base_damage(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int nk, bool n_ele, short s_ele, short s_ele_, int type, int flag, int flag2) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_battle_calc_base_damage_pre ) {
+ if (HPMHooks.count.HP_battle_calc_base_damage_pre > 0) {
int64 (*preHookFunc) (struct block_list **src, struct block_list **bl, uint16 *skill_id, uint16 *skill_lv, int *nk, bool *n_ele, short *s_ele, short *s_ele_, int *type, int *flag, int *flag2);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_base_damage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_base_damage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_calc_base_damage_pre[hIndex].func;
retVal___ = preHookFunc(&src, &bl, &skill_id, &skill_lv, &nk, &n_ele, &s_ele, &s_ele_, &type, &flag, &flag2);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2164,9 +3622,9 @@ int64 HP_battle_calc_base_damage(struct block_list *src, struct block_list *bl,
{
retVal___ = HPMHooks.source.battle.calc_base_damage(src, bl, skill_id, skill_lv, nk, n_ele, s_ele, s_ele_, type, flag, flag2);
}
- if( HPMHooks.count.HP_battle_calc_base_damage_post ) {
+ if (HPMHooks.count.HP_battle_calc_base_damage_post > 0) {
int64 (*postHookFunc) (int64 retVal___, struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int nk, bool n_ele, short s_ele, short s_ele_, int type, int flag, int flag2);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_base_damage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_base_damage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_calc_base_damage_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, bl, skill_id, skill_lv, nk, n_ele, s_ele, s_ele_, type, flag, flag2);
}
@@ -2176,14 +3634,14 @@ int64 HP_battle_calc_base_damage(struct block_list *src, struct block_list *bl,
int64 HP_battle_calc_base_damage2(struct status_data *st, struct weapon_atk *wa, struct status_change *sc, unsigned short t_size, struct map_session_data *sd, int flag) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_battle_calc_base_damage2_pre ) {
+ if (HPMHooks.count.HP_battle_calc_base_damage2_pre > 0) {
int64 (*preHookFunc) (struct status_data **st, struct weapon_atk **wa, struct status_change **sc, unsigned short *t_size, struct map_session_data **sd, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_base_damage2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_base_damage2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_calc_base_damage2_pre[hIndex].func;
retVal___ = preHookFunc(&st, &wa, &sc, &t_size, &sd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2191,9 +3649,9 @@ int64 HP_battle_calc_base_damage2(struct status_data *st, struct weapon_atk *wa,
{
retVal___ = HPMHooks.source.battle.calc_base_damage2(st, wa, sc, t_size, sd, flag);
}
- if( HPMHooks.count.HP_battle_calc_base_damage2_post ) {
+ if (HPMHooks.count.HP_battle_calc_base_damage2_post > 0) {
int64 (*postHookFunc) (int64 retVal___, struct status_data *st, struct weapon_atk *wa, struct status_change *sc, unsigned short t_size, struct map_session_data *sd, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_base_damage2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_base_damage2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_calc_base_damage2_post[hIndex].func;
retVal___ = postHookFunc(retVal___, st, wa, sc, t_size, sd, flag);
}
@@ -2203,14 +3661,14 @@ int64 HP_battle_calc_base_damage2(struct status_data *st, struct weapon_atk *wa,
struct Damage HP_battle_calc_misc_attack(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int mflag) {
int hIndex = 0;
struct Damage retVal___ = { 0 };
- if( HPMHooks.count.HP_battle_calc_misc_attack_pre ) {
+ if (HPMHooks.count.HP_battle_calc_misc_attack_pre > 0) {
struct Damage (*preHookFunc) (struct block_list **src, struct block_list **target, uint16 *skill_id, uint16 *skill_lv, int *mflag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_misc_attack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_misc_attack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_calc_misc_attack_pre[hIndex].func;
retVal___ = preHookFunc(&src, &target, &skill_id, &skill_lv, &mflag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2218,9 +3676,9 @@ struct Damage HP_battle_calc_misc_attack(struct block_list *src, struct block_li
{
retVal___ = HPMHooks.source.battle.calc_misc_attack(src, target, skill_id, skill_lv, mflag);
}
- if( HPMHooks.count.HP_battle_calc_misc_attack_post ) {
+ if (HPMHooks.count.HP_battle_calc_misc_attack_post > 0) {
struct Damage (*postHookFunc) (struct Damage retVal___, struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int mflag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_misc_attack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_misc_attack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_calc_misc_attack_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, target, skill_id, skill_lv, mflag);
}
@@ -2230,14 +3688,14 @@ struct Damage HP_battle_calc_misc_attack(struct block_list *src, struct block_li
struct Damage HP_battle_calc_magic_attack(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int mflag) {
int hIndex = 0;
struct Damage retVal___ = { 0 };
- if( HPMHooks.count.HP_battle_calc_magic_attack_pre ) {
+ if (HPMHooks.count.HP_battle_calc_magic_attack_pre > 0) {
struct Damage (*preHookFunc) (struct block_list **src, struct block_list **target, uint16 *skill_id, uint16 *skill_lv, int *mflag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_magic_attack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_magic_attack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_calc_magic_attack_pre[hIndex].func;
retVal___ = preHookFunc(&src, &target, &skill_id, &skill_lv, &mflag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2245,9 +3703,9 @@ struct Damage HP_battle_calc_magic_attack(struct block_list *src, struct block_l
{
retVal___ = HPMHooks.source.battle.calc_magic_attack(src, target, skill_id, skill_lv, mflag);
}
- if( HPMHooks.count.HP_battle_calc_magic_attack_post ) {
+ if (HPMHooks.count.HP_battle_calc_magic_attack_post > 0) {
struct Damage (*postHookFunc) (struct Damage retVal___, struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int mflag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_magic_attack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_magic_attack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_calc_magic_attack_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, target, skill_id, skill_lv, mflag);
}
@@ -2257,14 +3715,14 @@ struct Damage HP_battle_calc_magic_attack(struct block_list *src, struct block_l
int HP_battle_adjust_skill_damage(int m, unsigned short skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_battle_adjust_skill_damage_pre ) {
+ if (HPMHooks.count.HP_battle_adjust_skill_damage_pre > 0) {
int (*preHookFunc) (int *m, unsigned short *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_adjust_skill_damage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_adjust_skill_damage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_adjust_skill_damage_pre[hIndex].func;
retVal___ = preHookFunc(&m, &skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2272,9 +3730,9 @@ int HP_battle_adjust_skill_damage(int m, unsigned short skill_id) {
{
retVal___ = HPMHooks.source.battle.adjust_skill_damage(m, skill_id);
}
- if( HPMHooks.count.HP_battle_adjust_skill_damage_post ) {
+ if (HPMHooks.count.HP_battle_adjust_skill_damage_post > 0) {
int (*postHookFunc) (int retVal___, int m, unsigned short skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_adjust_skill_damage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_adjust_skill_damage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_adjust_skill_damage_post[hIndex].func;
retVal___ = postHookFunc(retVal___, m, skill_id);
}
@@ -2284,14 +3742,14 @@ int HP_battle_adjust_skill_damage(int m, unsigned short skill_id) {
int64 HP_battle_add_mastery(struct map_session_data *sd, struct block_list *target, int64 dmg, int type) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_battle_add_mastery_pre ) {
+ if (HPMHooks.count.HP_battle_add_mastery_pre > 0) {
int64 (*preHookFunc) (struct map_session_data **sd, struct block_list **target, int64 *dmg, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_add_mastery_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_add_mastery_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_add_mastery_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &target, &dmg, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2299,9 +3757,9 @@ int64 HP_battle_add_mastery(struct map_session_data *sd, struct block_list *targ
{
retVal___ = HPMHooks.source.battle.add_mastery(sd, target, dmg, type);
}
- if( HPMHooks.count.HP_battle_add_mastery_post ) {
+ if (HPMHooks.count.HP_battle_add_mastery_post > 0) {
int64 (*postHookFunc) (int64 retVal___, struct map_session_data *sd, struct block_list *target, int64 dmg, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_add_mastery_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_add_mastery_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_add_mastery_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, target, dmg, type);
}
@@ -2311,14 +3769,14 @@ int64 HP_battle_add_mastery(struct map_session_data *sd, struct block_list *targ
int HP_battle_calc_drain(int64 damage, int rate, int per) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_battle_calc_drain_pre ) {
+ if (HPMHooks.count.HP_battle_calc_drain_pre > 0) {
int (*preHookFunc) (int64 *damage, int *rate, int *per);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_drain_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_drain_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_calc_drain_pre[hIndex].func;
retVal___ = preHookFunc(&damage, &rate, &per);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2326,9 +3784,9 @@ int HP_battle_calc_drain(int64 damage, int rate, int per) {
{
retVal___ = HPMHooks.source.battle.calc_drain(damage, rate, per);
}
- if( HPMHooks.count.HP_battle_calc_drain_post ) {
+ if (HPMHooks.count.HP_battle_calc_drain_post > 0) {
int (*postHookFunc) (int retVal___, int64 damage, int rate, int per);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_drain_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_drain_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_calc_drain_post[hIndex].func;
retVal___ = postHookFunc(retVal___, damage, rate, per);
}
@@ -2338,14 +3796,14 @@ int HP_battle_calc_drain(int64 damage, int rate, int per) {
bool HP_battle_config_read(const char *filename, bool imported) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_battle_config_read_pre ) {
+ if (HPMHooks.count.HP_battle_config_read_pre > 0) {
bool (*preHookFunc) (const char **filename, bool *imported);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_config_read_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_config_read_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_config_read_pre[hIndex].func;
retVal___ = preHookFunc(&filename, &imported);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2353,9 +3811,9 @@ bool HP_battle_config_read(const char *filename, bool imported) {
{
retVal___ = HPMHooks.source.battle.config_read(filename, imported);
}
- if( HPMHooks.count.HP_battle_config_read_post ) {
+ if (HPMHooks.count.HP_battle_config_read_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *filename, bool imported);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_config_read_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_config_read_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_config_read_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename, imported);
}
@@ -2364,14 +3822,14 @@ bool HP_battle_config_read(const char *filename, bool imported) {
}
void HP_battle_config_set_defaults(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_battle_config_set_defaults_pre ) {
+ if (HPMHooks.count.HP_battle_config_set_defaults_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_config_set_defaults_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_config_set_defaults_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_config_set_defaults_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2379,9 +3837,9 @@ void HP_battle_config_set_defaults(void) {
{
HPMHooks.source.battle.config_set_defaults();
}
- if( HPMHooks.count.HP_battle_config_set_defaults_post ) {
+ if (HPMHooks.count.HP_battle_config_set_defaults_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_config_set_defaults_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_config_set_defaults_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_config_set_defaults_post[hIndex].func;
postHookFunc();
}
@@ -2391,14 +3849,14 @@ void HP_battle_config_set_defaults(void) {
bool HP_battle_config_set_value_sub(int index, int value) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_battle_config_set_value_sub_pre ) {
+ if (HPMHooks.count.HP_battle_config_set_value_sub_pre > 0) {
bool (*preHookFunc) (int *index, int *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_config_set_value_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_config_set_value_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_config_set_value_sub_pre[hIndex].func;
retVal___ = preHookFunc(&index, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2406,9 +3864,9 @@ bool HP_battle_config_set_value_sub(int index, int value) {
{
retVal___ = HPMHooks.source.battle.config_set_value_sub(index, value);
}
- if( HPMHooks.count.HP_battle_config_set_value_sub_post ) {
+ if (HPMHooks.count.HP_battle_config_set_value_sub_post > 0) {
bool (*postHookFunc) (bool retVal___, int index, int value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_config_set_value_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_config_set_value_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_config_set_value_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, index, value);
}
@@ -2418,14 +3876,14 @@ bool HP_battle_config_set_value_sub(int index, int value) {
bool HP_battle_config_set_value(const char *param, const char *value) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_battle_config_set_value_pre ) {
+ if (HPMHooks.count.HP_battle_config_set_value_pre > 0) {
bool (*preHookFunc) (const char **param, const char **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_config_set_value_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_config_set_value_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_config_set_value_pre[hIndex].func;
retVal___ = preHookFunc(&param, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2433,9 +3891,9 @@ bool HP_battle_config_set_value(const char *param, const char *value) {
{
retVal___ = HPMHooks.source.battle.config_set_value(param, value);
}
- if( HPMHooks.count.HP_battle_config_set_value_post ) {
+ if (HPMHooks.count.HP_battle_config_set_value_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *param, const char *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_config_set_value_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_config_set_value_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_config_set_value_post[hIndex].func;
retVal___ = postHookFunc(retVal___, param, value);
}
@@ -2445,14 +3903,14 @@ bool HP_battle_config_set_value(const char *param, const char *value) {
bool HP_battle_config_get_value(const char *w1, int *value) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_battle_config_get_value_pre ) {
+ if (HPMHooks.count.HP_battle_config_get_value_pre > 0) {
bool (*preHookFunc) (const char **w1, int **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_config_get_value_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_config_get_value_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_config_get_value_pre[hIndex].func;
retVal___ = preHookFunc(&w1, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2460,9 +3918,9 @@ bool HP_battle_config_get_value(const char *w1, int *value) {
{
retVal___ = HPMHooks.source.battle.config_get_value(w1, value);
}
- if( HPMHooks.count.HP_battle_config_get_value_post ) {
+ if (HPMHooks.count.HP_battle_config_get_value_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *w1, int *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_config_get_value_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_config_get_value_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_config_get_value_post[hIndex].func;
retVal___ = postHookFunc(retVal___, w1, value);
}
@@ -2471,14 +3929,14 @@ bool HP_battle_config_get_value(const char *w1, int *value) {
}
void HP_battle_config_adjust(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_battle_config_adjust_pre ) {
+ if (HPMHooks.count.HP_battle_config_adjust_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_config_adjust_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_config_adjust_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_config_adjust_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2486,9 +3944,9 @@ void HP_battle_config_adjust(void) {
{
HPMHooks.source.battle.config_adjust();
}
- if( HPMHooks.count.HP_battle_config_adjust_post ) {
+ if (HPMHooks.count.HP_battle_config_adjust_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_config_adjust_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_config_adjust_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_config_adjust_post[hIndex].func;
postHookFunc();
}
@@ -2498,14 +3956,14 @@ void HP_battle_config_adjust(void) {
struct block_list* HP_battle_get_enemy_area(struct block_list *src, int x, int y, int range, int type, int ignore_id) {
int hIndex = 0;
struct block_list* retVal___ = NULL;
- if( HPMHooks.count.HP_battle_get_enemy_area_pre ) {
+ if (HPMHooks.count.HP_battle_get_enemy_area_pre > 0) {
struct block_list* (*preHookFunc) (struct block_list **src, int *x, int *y, int *range, int *type, int *ignore_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_enemy_area_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_enemy_area_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_get_enemy_area_pre[hIndex].func;
retVal___ = preHookFunc(&src, &x, &y, &range, &type, &ignore_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2513,9 +3971,9 @@ struct block_list* HP_battle_get_enemy_area(struct block_list *src, int x, int y
{
retVal___ = HPMHooks.source.battle.get_enemy_area(src, x, y, range, type, ignore_id);
}
- if( HPMHooks.count.HP_battle_get_enemy_area_post ) {
+ if (HPMHooks.count.HP_battle_get_enemy_area_post > 0) {
struct block_list* (*postHookFunc) (struct block_list* retVal___, struct block_list *src, int x, int y, int range, int type, int ignore_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_enemy_area_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_get_enemy_area_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_get_enemy_area_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, x, y, range, type, ignore_id);
}
@@ -2525,16 +3983,16 @@ struct block_list* HP_battle_get_enemy_area(struct block_list *src, int x, int y
int HP_battle_damage_area(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_battle_damage_area_pre ) {
+ if (HPMHooks.count.HP_battle_damage_area_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_damage_area_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_damage_area_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_battle_damage_area_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2544,9 +4002,9 @@ int HP_battle_damage_area(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.battle.damage_area(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_battle_damage_area_post ) {
+ if (HPMHooks.count.HP_battle_damage_area_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_damage_area_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_damage_area_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_battle_damage_area_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -2557,14 +4015,14 @@ int HP_battle_damage_area(struct block_list *bl, va_list ap) {
}
void HP_battle_calc_masteryfix_unknown(struct block_list *src, struct block_list *target, uint16 *skill_id, uint16 *skill_lv, int64 *damage, int *div, bool *left, bool *weapon) {
int hIndex = 0;
- if( HPMHooks.count.HP_battle_calc_masteryfix_unknown_pre ) {
+ if (HPMHooks.count.HP_battle_calc_masteryfix_unknown_pre > 0) {
void (*preHookFunc) (struct block_list **src, struct block_list **target, uint16 **skill_id, uint16 **skill_lv, int64 **damage, int **div, bool **left, bool **weapon);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_masteryfix_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_masteryfix_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_calc_masteryfix_unknown_pre[hIndex].func;
preHookFunc(&src, &target, &skill_id, &skill_lv, &damage, &div, &left, &weapon);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2572,9 +4030,9 @@ void HP_battle_calc_masteryfix_unknown(struct block_list *src, struct block_list
{
HPMHooks.source.battle.calc_masteryfix_unknown(src, target, skill_id, skill_lv, damage, div, left, weapon);
}
- if( HPMHooks.count.HP_battle_calc_masteryfix_unknown_post ) {
+ if (HPMHooks.count.HP_battle_calc_masteryfix_unknown_post > 0) {
void (*postHookFunc) (struct block_list *src, struct block_list *target, uint16 *skill_id, uint16 *skill_lv, int64 *damage, int *div, bool *left, bool *weapon);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_masteryfix_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_masteryfix_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_calc_masteryfix_unknown_post[hIndex].func;
postHookFunc(src, target, skill_id, skill_lv, damage, div, left, weapon);
}
@@ -2583,14 +4041,14 @@ void HP_battle_calc_masteryfix_unknown(struct block_list *src, struct block_list
}
void HP_battle_calc_skillratio_magic_unknown(int *attack_type, struct block_list *src, struct block_list *target, uint16 *skill_id, uint16 *skill_lv, int *skillratio, int *flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_battle_calc_skillratio_magic_unknown_pre ) {
+ if (HPMHooks.count.HP_battle_calc_skillratio_magic_unknown_pre > 0) {
void (*preHookFunc) (int **attack_type, struct block_list **src, struct block_list **target, uint16 **skill_id, uint16 **skill_lv, int **skillratio, int **flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_skillratio_magic_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_skillratio_magic_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_calc_skillratio_magic_unknown_pre[hIndex].func;
preHookFunc(&attack_type, &src, &target, &skill_id, &skill_lv, &skillratio, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2598,9 +4056,9 @@ void HP_battle_calc_skillratio_magic_unknown(int *attack_type, struct block_list
{
HPMHooks.source.battle.calc_skillratio_magic_unknown(attack_type, src, target, skill_id, skill_lv, skillratio, flag);
}
- if( HPMHooks.count.HP_battle_calc_skillratio_magic_unknown_post ) {
+ if (HPMHooks.count.HP_battle_calc_skillratio_magic_unknown_post > 0) {
void (*postHookFunc) (int *attack_type, struct block_list *src, struct block_list *target, uint16 *skill_id, uint16 *skill_lv, int *skillratio, int *flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_skillratio_magic_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_skillratio_magic_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_calc_skillratio_magic_unknown_post[hIndex].func;
postHookFunc(attack_type, src, target, skill_id, skill_lv, skillratio, flag);
}
@@ -2609,14 +4067,14 @@ void HP_battle_calc_skillratio_magic_unknown(int *attack_type, struct block_list
}
void HP_battle_calc_skillratio_weapon_unknown(int *attack_type, struct block_list *src, struct block_list *target, uint16 *skill_id, uint16 *skill_lv, int *skillratio, int *flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_battle_calc_skillratio_weapon_unknown_pre ) {
+ if (HPMHooks.count.HP_battle_calc_skillratio_weapon_unknown_pre > 0) {
void (*preHookFunc) (int **attack_type, struct block_list **src, struct block_list **target, uint16 **skill_id, uint16 **skill_lv, int **skillratio, int **flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_skillratio_weapon_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_skillratio_weapon_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_calc_skillratio_weapon_unknown_pre[hIndex].func;
preHookFunc(&attack_type, &src, &target, &skill_id, &skill_lv, &skillratio, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2624,9 +4082,9 @@ void HP_battle_calc_skillratio_weapon_unknown(int *attack_type, struct block_lis
{
HPMHooks.source.battle.calc_skillratio_weapon_unknown(attack_type, src, target, skill_id, skill_lv, skillratio, flag);
}
- if( HPMHooks.count.HP_battle_calc_skillratio_weapon_unknown_post ) {
+ if (HPMHooks.count.HP_battle_calc_skillratio_weapon_unknown_post > 0) {
void (*postHookFunc) (int *attack_type, struct block_list *src, struct block_list *target, uint16 *skill_id, uint16 *skill_lv, int *skillratio, int *flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_skillratio_weapon_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_skillratio_weapon_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_calc_skillratio_weapon_unknown_post[hIndex].func;
postHookFunc(attack_type, src, target, skill_id, skill_lv, skillratio, flag);
}
@@ -2635,14 +4093,14 @@ void HP_battle_calc_skillratio_weapon_unknown(int *attack_type, struct block_lis
}
void HP_battle_calc_misc_attack_unknown(struct block_list *src, struct block_list *target, uint16 *skill_id, uint16 *skill_lv, int *mflag, struct Damage *md) {
int hIndex = 0;
- if( HPMHooks.count.HP_battle_calc_misc_attack_unknown_pre ) {
+ if (HPMHooks.count.HP_battle_calc_misc_attack_unknown_pre > 0) {
void (*preHookFunc) (struct block_list **src, struct block_list **target, uint16 **skill_id, uint16 **skill_lv, int **mflag, struct Damage **md);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_misc_attack_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_misc_attack_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_battle_calc_misc_attack_unknown_pre[hIndex].func;
preHookFunc(&src, &target, &skill_id, &skill_lv, &mflag, &md);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2650,9 +4108,9 @@ void HP_battle_calc_misc_attack_unknown(struct block_list *src, struct block_lis
{
HPMHooks.source.battle.calc_misc_attack_unknown(src, target, skill_id, skill_lv, mflag, md);
}
- if( HPMHooks.count.HP_battle_calc_misc_attack_unknown_post ) {
+ if (HPMHooks.count.HP_battle_calc_misc_attack_unknown_post > 0) {
void (*postHookFunc) (struct block_list *src, struct block_list *target, uint16 *skill_id, uint16 *skill_lv, int *mflag, struct Damage *md);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_misc_attack_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_battle_calc_misc_attack_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_battle_calc_misc_attack_unknown_post[hIndex].func;
postHookFunc(src, target, skill_id, skill_lv, mflag, md);
}
@@ -2662,14 +4120,14 @@ void HP_battle_calc_misc_attack_unknown(struct block_list *src, struct block_lis
/* battleground_interface */
void HP_bg_init(bool minimal) {
int hIndex = 0;
- if( HPMHooks.count.HP_bg_init_pre ) {
+ if (HPMHooks.count.HP_bg_init_pre > 0) {
void (*preHookFunc) (bool *minimal);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_bg_init_pre[hIndex].func;
preHookFunc(&minimal);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2677,9 +4135,9 @@ void HP_bg_init(bool minimal) {
{
HPMHooks.source.bg.init(minimal);
}
- if( HPMHooks.count.HP_bg_init_post ) {
+ if (HPMHooks.count.HP_bg_init_post > 0) {
void (*postHookFunc) (bool minimal);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_bg_init_post[hIndex].func;
postHookFunc(minimal);
}
@@ -2688,14 +4146,14 @@ void HP_bg_init(bool minimal) {
}
void HP_bg_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_bg_final_pre ) {
+ if (HPMHooks.count.HP_bg_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_bg_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2703,9 +4161,9 @@ void HP_bg_final(void) {
{
HPMHooks.source.bg.final();
}
- if( HPMHooks.count.HP_bg_final_post ) {
+ if (HPMHooks.count.HP_bg_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_bg_final_post[hIndex].func;
postHookFunc();
}
@@ -2715,14 +4173,14 @@ void HP_bg_final(void) {
struct bg_arena* HP_bg_name2arena(const char *name) {
int hIndex = 0;
struct bg_arena* retVal___ = NULL;
- if( HPMHooks.count.HP_bg_name2arena_pre ) {
+ if (HPMHooks.count.HP_bg_name2arena_pre > 0) {
struct bg_arena* (*preHookFunc) (const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_name2arena_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_name2arena_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_bg_name2arena_pre[hIndex].func;
retVal___ = preHookFunc(&name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2730,9 +4188,9 @@ struct bg_arena* HP_bg_name2arena(const char *name) {
{
retVal___ = HPMHooks.source.bg.name2arena(name);
}
- if( HPMHooks.count.HP_bg_name2arena_post ) {
+ if (HPMHooks.count.HP_bg_name2arena_post > 0) {
struct bg_arena* (*postHookFunc) (struct bg_arena* retVal___, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_name2arena_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_name2arena_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_bg_name2arena_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name);
}
@@ -2741,14 +4199,14 @@ struct bg_arena* HP_bg_name2arena(const char *name) {
}
void HP_bg_queue_add(struct map_session_data *sd, struct bg_arena *arena, enum bg_queue_types type) {
int hIndex = 0;
- if( HPMHooks.count.HP_bg_queue_add_pre ) {
+ if (HPMHooks.count.HP_bg_queue_add_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct bg_arena **arena, enum bg_queue_types *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_queue_add_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_queue_add_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_bg_queue_add_pre[hIndex].func;
preHookFunc(&sd, &arena, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2756,9 +4214,9 @@ void HP_bg_queue_add(struct map_session_data *sd, struct bg_arena *arena, enum b
{
HPMHooks.source.bg.queue_add(sd, arena, type);
}
- if( HPMHooks.count.HP_bg_queue_add_post ) {
+ if (HPMHooks.count.HP_bg_queue_add_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct bg_arena *arena, enum bg_queue_types type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_queue_add_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_queue_add_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_bg_queue_add_post[hIndex].func;
postHookFunc(sd, arena, type);
}
@@ -2768,14 +4226,14 @@ void HP_bg_queue_add(struct map_session_data *sd, struct bg_arena *arena, enum b
enum BATTLEGROUNDS_QUEUE_ACK HP_bg_can_queue(struct map_session_data *sd, struct bg_arena *arena, enum bg_queue_types type) {
int hIndex = 0;
enum BATTLEGROUNDS_QUEUE_ACK retVal___ = BGQA_SUCCESS;
- if( HPMHooks.count.HP_bg_can_queue_pre ) {
+ if (HPMHooks.count.HP_bg_can_queue_pre > 0) {
enum BATTLEGROUNDS_QUEUE_ACK (*preHookFunc) (struct map_session_data **sd, struct bg_arena **arena, enum bg_queue_types *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_can_queue_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_can_queue_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_bg_can_queue_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &arena, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2783,9 +4241,9 @@ enum BATTLEGROUNDS_QUEUE_ACK HP_bg_can_queue(struct map_session_data *sd, struct
{
retVal___ = HPMHooks.source.bg.can_queue(sd, arena, type);
}
- if( HPMHooks.count.HP_bg_can_queue_post ) {
+ if (HPMHooks.count.HP_bg_can_queue_post > 0) {
enum BATTLEGROUNDS_QUEUE_ACK (*postHookFunc) (enum BATTLEGROUNDS_QUEUE_ACK retVal___, struct map_session_data *sd, struct bg_arena *arena, enum bg_queue_types type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_can_queue_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_can_queue_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_bg_can_queue_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, arena, type);
}
@@ -2795,14 +4253,14 @@ enum BATTLEGROUNDS_QUEUE_ACK HP_bg_can_queue(struct map_session_data *sd, struct
int HP_bg_id2pos(int queue_id, int account_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_bg_id2pos_pre ) {
+ if (HPMHooks.count.HP_bg_id2pos_pre > 0) {
int (*preHookFunc) (int *queue_id, int *account_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_id2pos_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_id2pos_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_bg_id2pos_pre[hIndex].func;
retVal___ = preHookFunc(&queue_id, &account_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2810,9 +4268,9 @@ int HP_bg_id2pos(int queue_id, int account_id) {
{
retVal___ = HPMHooks.source.bg.id2pos(queue_id, account_id);
}
- if( HPMHooks.count.HP_bg_id2pos_post ) {
+ if (HPMHooks.count.HP_bg_id2pos_post > 0) {
int (*postHookFunc) (int retVal___, int queue_id, int account_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_id2pos_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_id2pos_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_bg_id2pos_post[hIndex].func;
retVal___ = postHookFunc(retVal___, queue_id, account_id);
}
@@ -2821,14 +4279,14 @@ int HP_bg_id2pos(int queue_id, int account_id) {
}
void HP_bg_queue_pc_cleanup(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_bg_queue_pc_cleanup_pre ) {
+ if (HPMHooks.count.HP_bg_queue_pc_cleanup_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_queue_pc_cleanup_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_queue_pc_cleanup_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_bg_queue_pc_cleanup_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2836,9 +4294,9 @@ void HP_bg_queue_pc_cleanup(struct map_session_data *sd) {
{
HPMHooks.source.bg.queue_pc_cleanup(sd);
}
- if( HPMHooks.count.HP_bg_queue_pc_cleanup_post ) {
+ if (HPMHooks.count.HP_bg_queue_pc_cleanup_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_queue_pc_cleanup_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_queue_pc_cleanup_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_bg_queue_pc_cleanup_post[hIndex].func;
postHookFunc(sd);
}
@@ -2847,14 +4305,14 @@ void HP_bg_queue_pc_cleanup(struct map_session_data *sd) {
}
void HP_bg_begin(struct bg_arena *arena) {
int hIndex = 0;
- if( HPMHooks.count.HP_bg_begin_pre ) {
+ if (HPMHooks.count.HP_bg_begin_pre > 0) {
void (*preHookFunc) (struct bg_arena **arena);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_begin_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_begin_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_bg_begin_pre[hIndex].func;
preHookFunc(&arena);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2862,9 +4320,9 @@ void HP_bg_begin(struct bg_arena *arena) {
{
HPMHooks.source.bg.begin(arena);
}
- if( HPMHooks.count.HP_bg_begin_post ) {
+ if (HPMHooks.count.HP_bg_begin_post > 0) {
void (*postHookFunc) (struct bg_arena *arena);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_begin_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_begin_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_bg_begin_post[hIndex].func;
postHookFunc(arena);
}
@@ -2874,14 +4332,14 @@ void HP_bg_begin(struct bg_arena *arena) {
int HP_bg_begin_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_bg_begin_timer_pre ) {
+ if (HPMHooks.count.HP_bg_begin_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_begin_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_begin_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_bg_begin_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2889,9 +4347,9 @@ int HP_bg_begin_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.bg.begin_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_bg_begin_timer_post ) {
+ if (HPMHooks.count.HP_bg_begin_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_begin_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_begin_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_bg_begin_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -2900,14 +4358,14 @@ int HP_bg_begin_timer(int tid, int64 tick, int id, intptr_t data) {
}
void HP_bg_queue_pregame(struct bg_arena *arena) {
int hIndex = 0;
- if( HPMHooks.count.HP_bg_queue_pregame_pre ) {
+ if (HPMHooks.count.HP_bg_queue_pregame_pre > 0) {
void (*preHookFunc) (struct bg_arena **arena);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_queue_pregame_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_queue_pregame_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_bg_queue_pregame_pre[hIndex].func;
preHookFunc(&arena);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2915,9 +4373,9 @@ void HP_bg_queue_pregame(struct bg_arena *arena) {
{
HPMHooks.source.bg.queue_pregame(arena);
}
- if( HPMHooks.count.HP_bg_queue_pregame_post ) {
+ if (HPMHooks.count.HP_bg_queue_pregame_post > 0) {
void (*postHookFunc) (struct bg_arena *arena);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_queue_pregame_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_queue_pregame_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_bg_queue_pregame_post[hIndex].func;
postHookFunc(arena);
}
@@ -2927,14 +4385,14 @@ void HP_bg_queue_pregame(struct bg_arena *arena) {
int HP_bg_fillup_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_bg_fillup_timer_pre ) {
+ if (HPMHooks.count.HP_bg_fillup_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_fillup_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_fillup_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_bg_fillup_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -2942,9 +4400,9 @@ int HP_bg_fillup_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.bg.fillup_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_bg_fillup_timer_post ) {
+ if (HPMHooks.count.HP_bg_fillup_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_fillup_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_fillup_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_bg_fillup_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -2953,14 +4411,14 @@ int HP_bg_fillup_timer(int tid, int64 tick, int id, intptr_t data) {
}
void HP_bg_queue_ready_ack(struct bg_arena *arena, struct map_session_data *sd, bool response) {
int hIndex = 0;
- if( HPMHooks.count.HP_bg_queue_ready_ack_pre ) {
+ if (HPMHooks.count.HP_bg_queue_ready_ack_pre > 0) {
void (*preHookFunc) (struct bg_arena **arena, struct map_session_data **sd, bool *response);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_queue_ready_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_queue_ready_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_bg_queue_ready_ack_pre[hIndex].func;
preHookFunc(&arena, &sd, &response);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2968,9 +4426,9 @@ void HP_bg_queue_ready_ack(struct bg_arena *arena, struct map_session_data *sd,
{
HPMHooks.source.bg.queue_ready_ack(arena, sd, response);
}
- if( HPMHooks.count.HP_bg_queue_ready_ack_post ) {
+ if (HPMHooks.count.HP_bg_queue_ready_ack_post > 0) {
void (*postHookFunc) (struct bg_arena *arena, struct map_session_data *sd, bool response);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_queue_ready_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_queue_ready_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_bg_queue_ready_ack_post[hIndex].func;
postHookFunc(arena, sd, response);
}
@@ -2979,14 +4437,14 @@ void HP_bg_queue_ready_ack(struct bg_arena *arena, struct map_session_data *sd,
}
void HP_bg_match_over(struct bg_arena *arena, bool canceled) {
int hIndex = 0;
- if( HPMHooks.count.HP_bg_match_over_pre ) {
+ if (HPMHooks.count.HP_bg_match_over_pre > 0) {
void (*preHookFunc) (struct bg_arena **arena, bool *canceled);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_match_over_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_match_over_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_bg_match_over_pre[hIndex].func;
preHookFunc(&arena, &canceled);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -2994,9 +4452,9 @@ void HP_bg_match_over(struct bg_arena *arena, bool canceled) {
{
HPMHooks.source.bg.match_over(arena, canceled);
}
- if( HPMHooks.count.HP_bg_match_over_post ) {
+ if (HPMHooks.count.HP_bg_match_over_post > 0) {
void (*postHookFunc) (struct bg_arena *arena, bool canceled);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_match_over_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_match_over_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_bg_match_over_post[hIndex].func;
postHookFunc(arena, canceled);
}
@@ -3005,14 +4463,14 @@ void HP_bg_match_over(struct bg_arena *arena, bool canceled) {
}
void HP_bg_queue_check(struct bg_arena *arena) {
int hIndex = 0;
- if( HPMHooks.count.HP_bg_queue_check_pre ) {
+ if (HPMHooks.count.HP_bg_queue_check_pre > 0) {
void (*preHookFunc) (struct bg_arena **arena);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_queue_check_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_queue_check_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_bg_queue_check_pre[hIndex].func;
preHookFunc(&arena);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3020,9 +4478,9 @@ void HP_bg_queue_check(struct bg_arena *arena) {
{
HPMHooks.source.bg.queue_check(arena);
}
- if( HPMHooks.count.HP_bg_queue_check_post ) {
+ if (HPMHooks.count.HP_bg_queue_check_post > 0) {
void (*postHookFunc) (struct bg_arena *arena);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_queue_check_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_queue_check_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_bg_queue_check_post[hIndex].func;
postHookFunc(arena);
}
@@ -3032,14 +4490,14 @@ void HP_bg_queue_check(struct bg_arena *arena) {
struct battleground_data* HP_bg_team_search(int bg_id) {
int hIndex = 0;
struct battleground_data* retVal___ = NULL;
- if( HPMHooks.count.HP_bg_team_search_pre ) {
+ if (HPMHooks.count.HP_bg_team_search_pre > 0) {
struct battleground_data* (*preHookFunc) (int *bg_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_team_search_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_team_search_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_bg_team_search_pre[hIndex].func;
retVal___ = preHookFunc(&bg_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3047,9 +4505,9 @@ struct battleground_data* HP_bg_team_search(int bg_id) {
{
retVal___ = HPMHooks.source.bg.team_search(bg_id);
}
- if( HPMHooks.count.HP_bg_team_search_post ) {
+ if (HPMHooks.count.HP_bg_team_search_post > 0) {
struct battleground_data* (*postHookFunc) (struct battleground_data* retVal___, int bg_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_team_search_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_team_search_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_bg_team_search_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bg_id);
}
@@ -3059,14 +4517,14 @@ struct battleground_data* HP_bg_team_search(int bg_id) {
struct map_session_data* HP_bg_getavailablesd(struct battleground_data *bgd) {
int hIndex = 0;
struct map_session_data* retVal___ = NULL;
- if( HPMHooks.count.HP_bg_getavailablesd_pre ) {
+ if (HPMHooks.count.HP_bg_getavailablesd_pre > 0) {
struct map_session_data* (*preHookFunc) (struct battleground_data **bgd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_getavailablesd_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_getavailablesd_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_bg_getavailablesd_pre[hIndex].func;
retVal___ = preHookFunc(&bgd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3074,9 +4532,9 @@ struct map_session_data* HP_bg_getavailablesd(struct battleground_data *bgd) {
{
retVal___ = HPMHooks.source.bg.getavailablesd(bgd);
}
- if( HPMHooks.count.HP_bg_getavailablesd_post ) {
+ if (HPMHooks.count.HP_bg_getavailablesd_post > 0) {
struct map_session_data* (*postHookFunc) (struct map_session_data* retVal___, struct battleground_data *bgd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_getavailablesd_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_getavailablesd_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_bg_getavailablesd_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bgd);
}
@@ -3086,14 +4544,14 @@ struct map_session_data* HP_bg_getavailablesd(struct battleground_data *bgd) {
bool HP_bg_team_delete(int bg_id) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_bg_team_delete_pre ) {
+ if (HPMHooks.count.HP_bg_team_delete_pre > 0) {
bool (*preHookFunc) (int *bg_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_team_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_team_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_bg_team_delete_pre[hIndex].func;
retVal___ = preHookFunc(&bg_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3101,9 +4559,9 @@ bool HP_bg_team_delete(int bg_id) {
{
retVal___ = HPMHooks.source.bg.team_delete(bg_id);
}
- if( HPMHooks.count.HP_bg_team_delete_post ) {
+ if (HPMHooks.count.HP_bg_team_delete_post > 0) {
bool (*postHookFunc) (bool retVal___, int bg_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_team_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_team_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_bg_team_delete_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bg_id);
}
@@ -3113,14 +4571,14 @@ bool HP_bg_team_delete(int bg_id) {
bool HP_bg_team_warp(int bg_id, unsigned short map_index, short x, short y) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_bg_team_warp_pre ) {
+ if (HPMHooks.count.HP_bg_team_warp_pre > 0) {
bool (*preHookFunc) (int *bg_id, unsigned short *map_index, short *x, short *y);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_team_warp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_team_warp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_bg_team_warp_pre[hIndex].func;
retVal___ = preHookFunc(&bg_id, &map_index, &x, &y);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3128,9 +4586,9 @@ bool HP_bg_team_warp(int bg_id, unsigned short map_index, short x, short y) {
{
retVal___ = HPMHooks.source.bg.team_warp(bg_id, map_index, x, y);
}
- if( HPMHooks.count.HP_bg_team_warp_post ) {
+ if (HPMHooks.count.HP_bg_team_warp_post > 0) {
bool (*postHookFunc) (bool retVal___, int bg_id, unsigned short map_index, short x, short y);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_team_warp_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_team_warp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_bg_team_warp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bg_id, map_index, x, y);
}
@@ -3139,14 +4597,14 @@ bool HP_bg_team_warp(int bg_id, unsigned short map_index, short x, short y) {
}
void HP_bg_send_dot_remove(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_bg_send_dot_remove_pre ) {
+ if (HPMHooks.count.HP_bg_send_dot_remove_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_send_dot_remove_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_send_dot_remove_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_bg_send_dot_remove_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3154,9 +4612,9 @@ void HP_bg_send_dot_remove(struct map_session_data *sd) {
{
HPMHooks.source.bg.send_dot_remove(sd);
}
- if( HPMHooks.count.HP_bg_send_dot_remove_post ) {
+ if (HPMHooks.count.HP_bg_send_dot_remove_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_send_dot_remove_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_send_dot_remove_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_bg_send_dot_remove_post[hIndex].func;
postHookFunc(sd);
}
@@ -3166,14 +4624,14 @@ void HP_bg_send_dot_remove(struct map_session_data *sd) {
bool HP_bg_team_join(int bg_id, struct map_session_data *sd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_bg_team_join_pre ) {
+ if (HPMHooks.count.HP_bg_team_join_pre > 0) {
bool (*preHookFunc) (int *bg_id, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_team_join_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_team_join_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_bg_team_join_pre[hIndex].func;
retVal___ = preHookFunc(&bg_id, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3181,9 +4639,9 @@ bool HP_bg_team_join(int bg_id, struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.bg.team_join(bg_id, sd);
}
- if( HPMHooks.count.HP_bg_team_join_post ) {
+ if (HPMHooks.count.HP_bg_team_join_post > 0) {
bool (*postHookFunc) (bool retVal___, int bg_id, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_team_join_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_team_join_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_bg_team_join_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bg_id, sd);
}
@@ -3193,14 +4651,14 @@ bool HP_bg_team_join(int bg_id, struct map_session_data *sd) {
int HP_bg_team_leave(struct map_session_data *sd, enum bg_team_leave_type flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_bg_team_leave_pre ) {
+ if (HPMHooks.count.HP_bg_team_leave_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, enum bg_team_leave_type *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_team_leave_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_team_leave_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_bg_team_leave_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3208,9 +4666,9 @@ int HP_bg_team_leave(struct map_session_data *sd, enum bg_team_leave_type flag)
{
retVal___ = HPMHooks.source.bg.team_leave(sd, flag);
}
- if( HPMHooks.count.HP_bg_team_leave_post ) {
+ if (HPMHooks.count.HP_bg_team_leave_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, enum bg_team_leave_type flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_team_leave_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_team_leave_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_bg_team_leave_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, flag);
}
@@ -3220,14 +4678,14 @@ int HP_bg_team_leave(struct map_session_data *sd, enum bg_team_leave_type flag)
bool HP_bg_member_respawn(struct map_session_data *sd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_bg_member_respawn_pre ) {
+ if (HPMHooks.count.HP_bg_member_respawn_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_member_respawn_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_member_respawn_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_bg_member_respawn_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3235,9 +4693,9 @@ bool HP_bg_member_respawn(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.bg.member_respawn(sd);
}
- if( HPMHooks.count.HP_bg_member_respawn_post ) {
+ if (HPMHooks.count.HP_bg_member_respawn_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_member_respawn_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_member_respawn_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_bg_member_respawn_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -3247,14 +4705,14 @@ bool HP_bg_member_respawn(struct map_session_data *sd) {
int HP_bg_create(unsigned short map_index, short rx, short ry, const char *ev, const char *dev) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_bg_create_pre ) {
+ if (HPMHooks.count.HP_bg_create_pre > 0) {
int (*preHookFunc) (unsigned short *map_index, short *rx, short *ry, const char **ev, const char **dev);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_bg_create_pre[hIndex].func;
retVal___ = preHookFunc(&map_index, &rx, &ry, &ev, &dev);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3262,9 +4720,9 @@ int HP_bg_create(unsigned short map_index, short rx, short ry, const char *ev, c
{
retVal___ = HPMHooks.source.bg.create(map_index, rx, ry, ev, dev);
}
- if( HPMHooks.count.HP_bg_create_post ) {
+ if (HPMHooks.count.HP_bg_create_post > 0) {
int (*postHookFunc) (int retVal___, unsigned short map_index, short rx, short ry, const char *ev, const char *dev);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_bg_create_post[hIndex].func;
retVal___ = postHookFunc(retVal___, map_index, rx, ry, ev, dev);
}
@@ -3274,14 +4732,14 @@ int HP_bg_create(unsigned short map_index, short rx, short ry, const char *ev, c
int HP_bg_team_get_id(struct block_list *bl) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_bg_team_get_id_pre ) {
+ if (HPMHooks.count.HP_bg_team_get_id_pre > 0) {
int (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_team_get_id_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_team_get_id_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_bg_team_get_id_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3289,9 +4747,9 @@ int HP_bg_team_get_id(struct block_list *bl) {
{
retVal___ = HPMHooks.source.bg.team_get_id(bl);
}
- if( HPMHooks.count.HP_bg_team_get_id_post ) {
+ if (HPMHooks.count.HP_bg_team_get_id_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_team_get_id_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_team_get_id_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_bg_team_get_id_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -3301,14 +4759,14 @@ int HP_bg_team_get_id(struct block_list *bl) {
bool HP_bg_send_message(struct map_session_data *sd, const char *mes) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_bg_send_message_pre ) {
+ if (HPMHooks.count.HP_bg_send_message_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, const char **mes);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_send_message_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_send_message_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_bg_send_message_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &mes);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3316,9 +4774,9 @@ bool HP_bg_send_message(struct map_session_data *sd, const char *mes) {
{
retVal___ = HPMHooks.source.bg.send_message(sd, mes);
}
- if( HPMHooks.count.HP_bg_send_message_post ) {
+ if (HPMHooks.count.HP_bg_send_message_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, const char *mes);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_send_message_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_send_message_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_bg_send_message_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, mes);
}
@@ -3328,16 +4786,16 @@ bool HP_bg_send_message(struct map_session_data *sd, const char *mes) {
int HP_bg_send_xy_timer_sub(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_bg_send_xy_timer_sub_pre ) {
+ if (HPMHooks.count.HP_bg_send_xy_timer_sub_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_send_xy_timer_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_send_xy_timer_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_bg_send_xy_timer_sub_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3347,9 +4805,9 @@ int HP_bg_send_xy_timer_sub(union DBKey key, struct DBData *data, va_list ap) {
retVal___ = HPMHooks.source.bg.send_xy_timer_sub(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_bg_send_xy_timer_sub_post ) {
+ if (HPMHooks.count.HP_bg_send_xy_timer_sub_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_send_xy_timer_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_send_xy_timer_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_bg_send_xy_timer_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -3361,14 +4819,14 @@ int HP_bg_send_xy_timer_sub(union DBKey key, struct DBData *data, va_list ap) {
int HP_bg_send_xy_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_bg_send_xy_timer_pre ) {
+ if (HPMHooks.count.HP_bg_send_xy_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_send_xy_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_send_xy_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_bg_send_xy_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3376,9 +4834,9 @@ int HP_bg_send_xy_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.bg.send_xy_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_bg_send_xy_timer_post ) {
+ if (HPMHooks.count.HP_bg_send_xy_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_send_xy_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_send_xy_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_bg_send_xy_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -3388,14 +4846,14 @@ int HP_bg_send_xy_timer(int tid, int64 tick, int id, intptr_t data) {
int HP_bg_afk_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_bg_afk_timer_pre ) {
+ if (HPMHooks.count.HP_bg_afk_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_afk_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_afk_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_bg_afk_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3403,9 +4861,9 @@ int HP_bg_afk_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.bg.afk_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_bg_afk_timer_post ) {
+ if (HPMHooks.count.HP_bg_afk_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_afk_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_afk_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_bg_afk_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -3415,16 +4873,16 @@ int HP_bg_afk_timer(int tid, int64 tick, int id, intptr_t data) {
int HP_bg_team_db_final(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_bg_team_db_final_pre ) {
+ if (HPMHooks.count.HP_bg_team_db_final_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_team_db_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_team_db_final_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_bg_team_db_final_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3434,9 +4892,9 @@ int HP_bg_team_db_final(union DBKey key, struct DBData *data, va_list ap) {
retVal___ = HPMHooks.source.bg.team_db_final(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_bg_team_db_final_post ) {
+ if (HPMHooks.count.HP_bg_team_db_final_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_team_db_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_team_db_final_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_bg_team_db_final_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -3448,14 +4906,14 @@ int HP_bg_team_db_final(union DBKey key, struct DBData *data, va_list ap) {
enum bg_queue_types HP_bg_str2teamtype(const char *str) {
int hIndex = 0;
enum bg_queue_types retVal___ = BGQT_INVALID;
- if( HPMHooks.count.HP_bg_str2teamtype_pre ) {
+ if (HPMHooks.count.HP_bg_str2teamtype_pre > 0) {
enum bg_queue_types (*preHookFunc) (const char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_str2teamtype_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_str2teamtype_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_bg_str2teamtype_pre[hIndex].func;
retVal___ = preHookFunc(&str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3463,9 +4921,9 @@ enum bg_queue_types HP_bg_str2teamtype(const char *str) {
{
retVal___ = HPMHooks.source.bg.str2teamtype(str);
}
- if( HPMHooks.count.HP_bg_str2teamtype_post ) {
+ if (HPMHooks.count.HP_bg_str2teamtype_post > 0) {
enum bg_queue_types (*postHookFunc) (enum bg_queue_types retVal___, const char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_str2teamtype_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_str2teamtype_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_bg_str2teamtype_post[hIndex].func;
retVal___ = postHookFunc(retVal___, str);
}
@@ -3474,14 +4932,14 @@ enum bg_queue_types HP_bg_str2teamtype(const char *str) {
}
void HP_bg_config_read(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_bg_config_read_pre ) {
+ if (HPMHooks.count.HP_bg_config_read_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_config_read_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_config_read_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_bg_config_read_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3489,9 +4947,9 @@ void HP_bg_config_read(void) {
{
HPMHooks.source.bg.config_read();
}
- if( HPMHooks.count.HP_bg_config_read_post ) {
+ if (HPMHooks.count.HP_bg_config_read_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_bg_config_read_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_bg_config_read_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_bg_config_read_post[hIndex].func;
postHookFunc();
}
@@ -3502,14 +4960,14 @@ void HP_bg_config_read(void) {
bool HP_buyingstore_setup(struct map_session_data *sd, unsigned char slots) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_buyingstore_setup_pre ) {
+ if (HPMHooks.count.HP_buyingstore_setup_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, unsigned char *slots);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_setup_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_setup_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_buyingstore_setup_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &slots);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3517,25 +4975,25 @@ bool HP_buyingstore_setup(struct map_session_data *sd, unsigned char slots) {
{
retVal___ = HPMHooks.source.buyingstore.setup(sd, slots);
}
- if( HPMHooks.count.HP_buyingstore_setup_post ) {
+ if (HPMHooks.count.HP_buyingstore_setup_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, unsigned char slots);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_setup_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_setup_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_buyingstore_setup_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, slots);
}
}
return retVal___;
}
-void HP_buyingstore_create(struct map_session_data *sd, int zenylimit, unsigned char result, const char *storename, const uint8 *itemlist, unsigned int count) {
+void HP_buyingstore_create(struct map_session_data *sd, int zenylimit, unsigned char result, const char *storename, const struct PACKET_CZ_REQ_OPEN_BUYING_STORE_sub *itemlist, unsigned int count) {
int hIndex = 0;
- if( HPMHooks.count.HP_buyingstore_create_pre ) {
- void (*preHookFunc) (struct map_session_data **sd, int *zenylimit, unsigned char *result, const char **storename, const uint8 **itemlist, unsigned int *count);
+ if (HPMHooks.count.HP_buyingstore_create_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int *zenylimit, unsigned char *result, const char **storename, const struct PACKET_CZ_REQ_OPEN_BUYING_STORE_sub **itemlist, unsigned int *count);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_buyingstore_create_pre[hIndex].func;
preHookFunc(&sd, &zenylimit, &result, &storename, &itemlist, &count);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3543,9 +5001,9 @@ void HP_buyingstore_create(struct map_session_data *sd, int zenylimit, unsigned
{
HPMHooks.source.buyingstore.create(sd, zenylimit, result, storename, itemlist, count);
}
- if( HPMHooks.count.HP_buyingstore_create_post ) {
- void (*postHookFunc) (struct map_session_data *sd, int zenylimit, unsigned char result, const char *storename, const uint8 *itemlist, unsigned int count);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_create_post; hIndex++ ) {
+ if (HPMHooks.count.HP_buyingstore_create_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int zenylimit, unsigned char result, const char *storename, const struct PACKET_CZ_REQ_OPEN_BUYING_STORE_sub *itemlist, unsigned int count);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_buyingstore_create_post[hIndex].func;
postHookFunc(sd, zenylimit, result, storename, itemlist, count);
}
@@ -3554,14 +5012,14 @@ void HP_buyingstore_create(struct map_session_data *sd, int zenylimit, unsigned
}
void HP_buyingstore_close(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_buyingstore_close_pre ) {
+ if (HPMHooks.count.HP_buyingstore_close_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_close_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_close_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_buyingstore_close_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3569,9 +5027,9 @@ void HP_buyingstore_close(struct map_session_data *sd) {
{
HPMHooks.source.buyingstore.close(sd);
}
- if( HPMHooks.count.HP_buyingstore_close_post ) {
+ if (HPMHooks.count.HP_buyingstore_close_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_close_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_close_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_buyingstore_close_post[hIndex].func;
postHookFunc(sd);
}
@@ -3580,14 +5038,14 @@ void HP_buyingstore_close(struct map_session_data *sd) {
}
void HP_buyingstore_open(struct map_session_data *sd, int account_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_buyingstore_open_pre ) {
+ if (HPMHooks.count.HP_buyingstore_open_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *account_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_open_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_open_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_buyingstore_open_pre[hIndex].func;
preHookFunc(&sd, &account_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3595,25 +5053,25 @@ void HP_buyingstore_open(struct map_session_data *sd, int account_id) {
{
HPMHooks.source.buyingstore.open(sd, account_id);
}
- if( HPMHooks.count.HP_buyingstore_open_post ) {
+ if (HPMHooks.count.HP_buyingstore_open_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int account_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_open_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_open_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_buyingstore_open_post[hIndex].func;
postHookFunc(sd, account_id);
}
}
return;
}
-void HP_buyingstore_trade(struct map_session_data *sd, int account_id, unsigned int buyer_id, const uint8 *itemlist, unsigned int count) {
+void HP_buyingstore_trade(struct map_session_data *sd, int account_id, unsigned int buyer_id, const struct PACKET_CZ_REQ_TRADE_BUYING_STORE_sub *itemlist, unsigned int count) {
int hIndex = 0;
- if( HPMHooks.count.HP_buyingstore_trade_pre ) {
- void (*preHookFunc) (struct map_session_data **sd, int *account_id, unsigned int *buyer_id, const uint8 **itemlist, unsigned int *count);
+ if (HPMHooks.count.HP_buyingstore_trade_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int *account_id, unsigned int *buyer_id, const struct PACKET_CZ_REQ_TRADE_BUYING_STORE_sub **itemlist, unsigned int *count);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_trade_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_trade_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_buyingstore_trade_pre[hIndex].func;
preHookFunc(&sd, &account_id, &buyer_id, &itemlist, &count);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3621,26 +5079,26 @@ void HP_buyingstore_trade(struct map_session_data *sd, int account_id, unsigned
{
HPMHooks.source.buyingstore.trade(sd, account_id, buyer_id, itemlist, count);
}
- if( HPMHooks.count.HP_buyingstore_trade_post ) {
- void (*postHookFunc) (struct map_session_data *sd, int account_id, unsigned int buyer_id, const uint8 *itemlist, unsigned int count);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_trade_post; hIndex++ ) {
+ if (HPMHooks.count.HP_buyingstore_trade_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int account_id, unsigned int buyer_id, const struct PACKET_CZ_REQ_TRADE_BUYING_STORE_sub *itemlist, unsigned int count);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_trade_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_buyingstore_trade_post[hIndex].func;
postHookFunc(sd, account_id, buyer_id, itemlist, count);
}
}
return;
}
-bool HP_buyingstore_search(struct map_session_data *sd, unsigned short nameid) {
+bool HP_buyingstore_search(struct map_session_data *sd, int nameid) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_buyingstore_search_pre ) {
- bool (*preHookFunc) (struct map_session_data **sd, unsigned short *nameid);
+ if (HPMHooks.count.HP_buyingstore_search_pre > 0) {
+ bool (*preHookFunc) (struct map_session_data **sd, int *nameid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_search_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_search_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_buyingstore_search_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &nameid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3648,9 +5106,9 @@ bool HP_buyingstore_search(struct map_session_data *sd, unsigned short nameid) {
{
retVal___ = HPMHooks.source.buyingstore.search(sd, nameid);
}
- if( HPMHooks.count.HP_buyingstore_search_post ) {
- bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, unsigned short nameid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_search_post; hIndex++ ) {
+ if (HPMHooks.count.HP_buyingstore_search_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, int nameid);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_search_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_buyingstore_search_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, nameid);
}
@@ -3660,14 +5118,14 @@ bool HP_buyingstore_search(struct map_session_data *sd, unsigned short nameid) {
bool HP_buyingstore_searchall(struct map_session_data *sd, const struct s_search_store_search *s) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_buyingstore_searchall_pre ) {
+ if (HPMHooks.count.HP_buyingstore_searchall_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, const struct s_search_store_search **s);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_searchall_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_searchall_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_buyingstore_searchall_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &s);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3675,9 +5133,9 @@ bool HP_buyingstore_searchall(struct map_session_data *sd, const struct s_search
{
retVal___ = HPMHooks.source.buyingstore.searchall(sd, s);
}
- if( HPMHooks.count.HP_buyingstore_searchall_post ) {
+ if (HPMHooks.count.HP_buyingstore_searchall_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, const struct s_search_store_search *s);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_searchall_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_searchall_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_buyingstore_searchall_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, s);
}
@@ -3687,14 +5145,14 @@ bool HP_buyingstore_searchall(struct map_session_data *sd, const struct s_search
unsigned int HP_buyingstore_getuid(void) {
int hIndex = 0;
unsigned int retVal___ = 0;
- if( HPMHooks.count.HP_buyingstore_getuid_pre ) {
+ if (HPMHooks.count.HP_buyingstore_getuid_pre > 0) {
unsigned int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_getuid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_getuid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_buyingstore_getuid_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3702,9 +5160,9 @@ unsigned int HP_buyingstore_getuid(void) {
{
retVal___ = HPMHooks.source.buyingstore.getuid();
}
- if( HPMHooks.count.HP_buyingstore_getuid_post ) {
+ if (HPMHooks.count.HP_buyingstore_getuid_post > 0) {
unsigned int (*postHookFunc) (unsigned int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_getuid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_getuid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_buyingstore_getuid_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -3715,14 +5173,14 @@ unsigned int HP_buyingstore_getuid(void) {
int HP_channel_init(bool minimal) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_channel_init_pre ) {
+ if (HPMHooks.count.HP_channel_init_pre > 0) {
int (*preHookFunc) (bool *minimal);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_channel_init_pre[hIndex].func;
retVal___ = preHookFunc(&minimal);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3730,9 +5188,9 @@ int HP_channel_init(bool minimal) {
{
retVal___ = HPMHooks.source.channel.init(minimal);
}
- if( HPMHooks.count.HP_channel_init_post ) {
+ if (HPMHooks.count.HP_channel_init_post > 0) {
int (*postHookFunc) (int retVal___, bool minimal);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_channel_init_post[hIndex].func;
retVal___ = postHookFunc(retVal___, minimal);
}
@@ -3741,14 +5199,14 @@ int HP_channel_init(bool minimal) {
}
void HP_channel_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_channel_final_pre ) {
+ if (HPMHooks.count.HP_channel_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_channel_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3756,9 +5214,9 @@ void HP_channel_final(void) {
{
HPMHooks.source.channel.final();
}
- if( HPMHooks.count.HP_channel_final_post ) {
+ if (HPMHooks.count.HP_channel_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_channel_final_post[hIndex].func;
postHookFunc();
}
@@ -3768,14 +5226,14 @@ void HP_channel_final(void) {
struct channel_data* HP_channel_search(const char *name, struct map_session_data *sd) {
int hIndex = 0;
struct channel_data* retVal___ = NULL;
- if( HPMHooks.count.HP_channel_search_pre ) {
+ if (HPMHooks.count.HP_channel_search_pre > 0) {
struct channel_data* (*preHookFunc) (const char **name, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_search_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_search_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_channel_search_pre[hIndex].func;
retVal___ = preHookFunc(&name, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3783,9 +5241,9 @@ struct channel_data* HP_channel_search(const char *name, struct map_session_data
{
retVal___ = HPMHooks.source.channel.search(name, sd);
}
- if( HPMHooks.count.HP_channel_search_post ) {
+ if (HPMHooks.count.HP_channel_search_post > 0) {
struct channel_data* (*postHookFunc) (struct channel_data* retVal___, const char *name, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_search_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_search_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_channel_search_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name, sd);
}
@@ -3795,14 +5253,14 @@ struct channel_data* HP_channel_search(const char *name, struct map_session_data
struct channel_data* HP_channel_create(enum channel_types type, const char *name, unsigned char color) {
int hIndex = 0;
struct channel_data* retVal___ = NULL;
- if( HPMHooks.count.HP_channel_create_pre ) {
+ if (HPMHooks.count.HP_channel_create_pre > 0) {
struct channel_data* (*preHookFunc) (enum channel_types *type, const char **name, unsigned char *color);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_channel_create_pre[hIndex].func;
retVal___ = preHookFunc(&type, &name, &color);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3810,9 +5268,9 @@ struct channel_data* HP_channel_create(enum channel_types type, const char *name
{
retVal___ = HPMHooks.source.channel.create(type, name, color);
}
- if( HPMHooks.count.HP_channel_create_post ) {
+ if (HPMHooks.count.HP_channel_create_post > 0) {
struct channel_data* (*postHookFunc) (struct channel_data* retVal___, enum channel_types type, const char *name, unsigned char color);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_channel_create_post[hIndex].func;
retVal___ = postHookFunc(retVal___, type, name, color);
}
@@ -3821,14 +5279,14 @@ struct channel_data* HP_channel_create(enum channel_types type, const char *name
}
void HP_channel_delete(struct channel_data *chan) {
int hIndex = 0;
- if( HPMHooks.count.HP_channel_delete_pre ) {
+ if (HPMHooks.count.HP_channel_delete_pre > 0) {
void (*preHookFunc) (struct channel_data **chan);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_channel_delete_pre[hIndex].func;
preHookFunc(&chan);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3836,9 +5294,9 @@ void HP_channel_delete(struct channel_data *chan) {
{
HPMHooks.source.channel.delete(chan);
}
- if( HPMHooks.count.HP_channel_delete_post ) {
+ if (HPMHooks.count.HP_channel_delete_post > 0) {
void (*postHookFunc) (struct channel_data *chan);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_channel_delete_post[hIndex].func;
postHookFunc(chan);
}
@@ -3847,14 +5305,14 @@ void HP_channel_delete(struct channel_data *chan) {
}
void HP_channel_set_password(struct channel_data *chan, const char *password) {
int hIndex = 0;
- if( HPMHooks.count.HP_channel_set_password_pre ) {
+ if (HPMHooks.count.HP_channel_set_password_pre > 0) {
void (*preHookFunc) (struct channel_data **chan, const char **password);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_set_password_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_set_password_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_channel_set_password_pre[hIndex].func;
preHookFunc(&chan, &password);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3862,9 +5320,9 @@ void HP_channel_set_password(struct channel_data *chan, const char *password) {
{
HPMHooks.source.channel.set_password(chan, password);
}
- if( HPMHooks.count.HP_channel_set_password_post ) {
+ if (HPMHooks.count.HP_channel_set_password_post > 0) {
void (*postHookFunc) (struct channel_data *chan, const char *password);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_set_password_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_set_password_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_channel_set_password_post[hIndex].func;
postHookFunc(chan, password);
}
@@ -3874,14 +5332,14 @@ void HP_channel_set_password(struct channel_data *chan, const char *password) {
enum channel_operation_status HP_channel_ban(struct channel_data *chan, const struct map_session_data *ssd, struct map_session_data *tsd) {
int hIndex = 0;
enum channel_operation_status retVal___ = HCS_STATUS_FAIL;
- if( HPMHooks.count.HP_channel_ban_pre ) {
+ if (HPMHooks.count.HP_channel_ban_pre > 0) {
enum channel_operation_status (*preHookFunc) (struct channel_data **chan, const struct map_session_data **ssd, struct map_session_data **tsd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_ban_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_ban_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_channel_ban_pre[hIndex].func;
retVal___ = preHookFunc(&chan, &ssd, &tsd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3889,9 +5347,9 @@ enum channel_operation_status HP_channel_ban(struct channel_data *chan, const st
{
retVal___ = HPMHooks.source.channel.ban(chan, ssd, tsd);
}
- if( HPMHooks.count.HP_channel_ban_post ) {
+ if (HPMHooks.count.HP_channel_ban_post > 0) {
enum channel_operation_status (*postHookFunc) (enum channel_operation_status retVal___, struct channel_data *chan, const struct map_session_data *ssd, struct map_session_data *tsd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_ban_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_ban_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_channel_ban_post[hIndex].func;
retVal___ = postHookFunc(retVal___, chan, ssd, tsd);
}
@@ -3901,14 +5359,14 @@ enum channel_operation_status HP_channel_ban(struct channel_data *chan, const st
enum channel_operation_status HP_channel_unban(struct channel_data *chan, const struct map_session_data *ssd, struct map_session_data *tsd) {
int hIndex = 0;
enum channel_operation_status retVal___ = HCS_STATUS_FAIL;
- if( HPMHooks.count.HP_channel_unban_pre ) {
+ if (HPMHooks.count.HP_channel_unban_pre > 0) {
enum channel_operation_status (*preHookFunc) (struct channel_data **chan, const struct map_session_data **ssd, struct map_session_data **tsd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_unban_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_unban_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_channel_unban_pre[hIndex].func;
retVal___ = preHookFunc(&chan, &ssd, &tsd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -3916,9 +5374,9 @@ enum channel_operation_status HP_channel_unban(struct channel_data *chan, const
{
retVal___ = HPMHooks.source.channel.unban(chan, ssd, tsd);
}
- if( HPMHooks.count.HP_channel_unban_post ) {
+ if (HPMHooks.count.HP_channel_unban_post > 0) {
enum channel_operation_status (*postHookFunc) (enum channel_operation_status retVal___, struct channel_data *chan, const struct map_session_data *ssd, struct map_session_data *tsd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_unban_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_unban_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_channel_unban_post[hIndex].func;
retVal___ = postHookFunc(retVal___, chan, ssd, tsd);
}
@@ -3927,14 +5385,14 @@ enum channel_operation_status HP_channel_unban(struct channel_data *chan, const
}
void HP_channel_set_options(struct channel_data *chan, unsigned int options) {
int hIndex = 0;
- if( HPMHooks.count.HP_channel_set_options_pre ) {
+ if (HPMHooks.count.HP_channel_set_options_pre > 0) {
void (*preHookFunc) (struct channel_data **chan, unsigned int *options);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_set_options_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_set_options_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_channel_set_options_pre[hIndex].func;
preHookFunc(&chan, &options);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3942,9 +5400,9 @@ void HP_channel_set_options(struct channel_data *chan, unsigned int options) {
{
HPMHooks.source.channel.set_options(chan, options);
}
- if( HPMHooks.count.HP_channel_set_options_post ) {
+ if (HPMHooks.count.HP_channel_set_options_post > 0) {
void (*postHookFunc) (struct channel_data *chan, unsigned int options);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_set_options_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_set_options_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_channel_set_options_post[hIndex].func;
postHookFunc(chan, options);
}
@@ -3953,14 +5411,14 @@ void HP_channel_set_options(struct channel_data *chan, unsigned int options) {
}
void HP_channel_send(struct channel_data *chan, struct map_session_data *sd, const char *msg) {
int hIndex = 0;
- if( HPMHooks.count.HP_channel_send_pre ) {
+ if (HPMHooks.count.HP_channel_send_pre > 0) {
void (*preHookFunc) (struct channel_data **chan, struct map_session_data **sd, const char **msg);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_send_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_send_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_channel_send_pre[hIndex].func;
preHookFunc(&chan, &sd, &msg);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3968,9 +5426,9 @@ void HP_channel_send(struct channel_data *chan, struct map_session_data *sd, con
{
HPMHooks.source.channel.send(chan, sd, msg);
}
- if( HPMHooks.count.HP_channel_send_post ) {
+ if (HPMHooks.count.HP_channel_send_post > 0) {
void (*postHookFunc) (struct channel_data *chan, struct map_session_data *sd, const char *msg);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_send_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_send_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_channel_send_post[hIndex].func;
postHookFunc(chan, sd, msg);
}
@@ -3979,14 +5437,14 @@ void HP_channel_send(struct channel_data *chan, struct map_session_data *sd, con
}
void HP_channel_join_sub(struct channel_data *chan, struct map_session_data *sd, bool stealth) {
int hIndex = 0;
- if( HPMHooks.count.HP_channel_join_sub_pre ) {
+ if (HPMHooks.count.HP_channel_join_sub_pre > 0) {
void (*preHookFunc) (struct channel_data **chan, struct map_session_data **sd, bool *stealth);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_join_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_join_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_channel_join_sub_pre[hIndex].func;
preHookFunc(&chan, &sd, &stealth);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -3994,9 +5452,9 @@ void HP_channel_join_sub(struct channel_data *chan, struct map_session_data *sd,
{
HPMHooks.source.channel.join_sub(chan, sd, stealth);
}
- if( HPMHooks.count.HP_channel_join_sub_post ) {
+ if (HPMHooks.count.HP_channel_join_sub_post > 0) {
void (*postHookFunc) (struct channel_data *chan, struct map_session_data *sd, bool stealth);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_join_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_join_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_channel_join_sub_post[hIndex].func;
postHookFunc(chan, sd, stealth);
}
@@ -4006,14 +5464,14 @@ void HP_channel_join_sub(struct channel_data *chan, struct map_session_data *sd,
enum channel_operation_status HP_channel_join(struct channel_data *chan, struct map_session_data *sd, const char *password, bool silent) {
int hIndex = 0;
enum channel_operation_status retVal___ = HCS_STATUS_FAIL;
- if( HPMHooks.count.HP_channel_join_pre ) {
+ if (HPMHooks.count.HP_channel_join_pre > 0) {
enum channel_operation_status (*preHookFunc) (struct channel_data **chan, struct map_session_data **sd, const char **password, bool *silent);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_join_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_join_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_channel_join_pre[hIndex].func;
retVal___ = preHookFunc(&chan, &sd, &password, &silent);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4021,9 +5479,9 @@ enum channel_operation_status HP_channel_join(struct channel_data *chan, struct
{
retVal___ = HPMHooks.source.channel.join(chan, sd, password, silent);
}
- if( HPMHooks.count.HP_channel_join_post ) {
+ if (HPMHooks.count.HP_channel_join_post > 0) {
enum channel_operation_status (*postHookFunc) (enum channel_operation_status retVal___, struct channel_data *chan, struct map_session_data *sd, const char *password, bool silent);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_join_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_join_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_channel_join_post[hIndex].func;
retVal___ = postHookFunc(retVal___, chan, sd, password, silent);
}
@@ -4032,14 +5490,14 @@ enum channel_operation_status HP_channel_join(struct channel_data *chan, struct
}
void HP_channel_leave(struct channel_data *chan, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_channel_leave_pre ) {
+ if (HPMHooks.count.HP_channel_leave_pre > 0) {
void (*preHookFunc) (struct channel_data **chan, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_leave_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_leave_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_channel_leave_pre[hIndex].func;
preHookFunc(&chan, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4047,9 +5505,9 @@ void HP_channel_leave(struct channel_data *chan, struct map_session_data *sd) {
{
HPMHooks.source.channel.leave(chan, sd);
}
- if( HPMHooks.count.HP_channel_leave_post ) {
+ if (HPMHooks.count.HP_channel_leave_post > 0) {
void (*postHookFunc) (struct channel_data *chan, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_leave_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_leave_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_channel_leave_post[hIndex].func;
postHookFunc(chan, sd);
}
@@ -4058,14 +5516,14 @@ void HP_channel_leave(struct channel_data *chan, struct map_session_data *sd) {
}
void HP_channel_leave_sub(struct channel_data *chan, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_channel_leave_sub_pre ) {
+ if (HPMHooks.count.HP_channel_leave_sub_pre > 0) {
void (*preHookFunc) (struct channel_data **chan, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_leave_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_leave_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_channel_leave_sub_pre[hIndex].func;
preHookFunc(&chan, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4073,9 +5531,9 @@ void HP_channel_leave_sub(struct channel_data *chan, struct map_session_data *sd
{
HPMHooks.source.channel.leave_sub(chan, sd);
}
- if( HPMHooks.count.HP_channel_leave_sub_post ) {
+ if (HPMHooks.count.HP_channel_leave_sub_post > 0) {
void (*postHookFunc) (struct channel_data *chan, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_leave_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_leave_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_channel_leave_sub_post[hIndex].func;
postHookFunc(chan, sd);
}
@@ -4084,14 +5542,14 @@ void HP_channel_leave_sub(struct channel_data *chan, struct map_session_data *sd
}
void HP_channel_quit(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_channel_quit_pre ) {
+ if (HPMHooks.count.HP_channel_quit_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_quit_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_quit_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_channel_quit_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4099,9 +5557,9 @@ void HP_channel_quit(struct map_session_data *sd) {
{
HPMHooks.source.channel.quit(sd);
}
- if( HPMHooks.count.HP_channel_quit_post ) {
+ if (HPMHooks.count.HP_channel_quit_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_quit_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_quit_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_channel_quit_post[hIndex].func;
postHookFunc(sd);
}
@@ -4110,14 +5568,14 @@ void HP_channel_quit(struct map_session_data *sd) {
}
void HP_channel_map_join(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_channel_map_join_pre ) {
+ if (HPMHooks.count.HP_channel_map_join_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_map_join_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_map_join_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_channel_map_join_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4125,9 +5583,9 @@ void HP_channel_map_join(struct map_session_data *sd) {
{
HPMHooks.source.channel.map_join(sd);
}
- if( HPMHooks.count.HP_channel_map_join_post ) {
+ if (HPMHooks.count.HP_channel_map_join_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_map_join_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_map_join_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_channel_map_join_post[hIndex].func;
postHookFunc(sd);
}
@@ -4136,14 +5594,14 @@ void HP_channel_map_join(struct map_session_data *sd) {
}
void HP_channel_guild_join_alliance(const struct guild *g_source, const struct guild *g_ally) {
int hIndex = 0;
- if( HPMHooks.count.HP_channel_guild_join_alliance_pre ) {
+ if (HPMHooks.count.HP_channel_guild_join_alliance_pre > 0) {
void (*preHookFunc) (const struct guild **g_source, const struct guild **g_ally);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_guild_join_alliance_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_guild_join_alliance_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_channel_guild_join_alliance_pre[hIndex].func;
preHookFunc(&g_source, &g_ally);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4151,9 +5609,9 @@ void HP_channel_guild_join_alliance(const struct guild *g_source, const struct g
{
HPMHooks.source.channel.guild_join_alliance(g_source, g_ally);
}
- if( HPMHooks.count.HP_channel_guild_join_alliance_post ) {
+ if (HPMHooks.count.HP_channel_guild_join_alliance_post > 0) {
void (*postHookFunc) (const struct guild *g_source, const struct guild *g_ally);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_guild_join_alliance_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_guild_join_alliance_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_channel_guild_join_alliance_post[hIndex].func;
postHookFunc(g_source, g_ally);
}
@@ -4162,14 +5620,14 @@ void HP_channel_guild_join_alliance(const struct guild *g_source, const struct g
}
void HP_channel_guild_leave_alliance(const struct guild *g_source, const struct guild *g_ally) {
int hIndex = 0;
- if( HPMHooks.count.HP_channel_guild_leave_alliance_pre ) {
+ if (HPMHooks.count.HP_channel_guild_leave_alliance_pre > 0) {
void (*preHookFunc) (const struct guild **g_source, const struct guild **g_ally);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_guild_leave_alliance_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_guild_leave_alliance_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_channel_guild_leave_alliance_pre[hIndex].func;
preHookFunc(&g_source, &g_ally);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4177,9 +5635,9 @@ void HP_channel_guild_leave_alliance(const struct guild *g_source, const struct
{
HPMHooks.source.channel.guild_leave_alliance(g_source, g_ally);
}
- if( HPMHooks.count.HP_channel_guild_leave_alliance_post ) {
+ if (HPMHooks.count.HP_channel_guild_leave_alliance_post > 0) {
void (*postHookFunc) (const struct guild *g_source, const struct guild *g_ally);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_guild_leave_alliance_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_guild_leave_alliance_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_channel_guild_leave_alliance_post[hIndex].func;
postHookFunc(g_source, g_ally);
}
@@ -4188,14 +5646,14 @@ void HP_channel_guild_leave_alliance(const struct guild *g_source, const struct
}
void HP_channel_quit_guild(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_channel_quit_guild_pre ) {
+ if (HPMHooks.count.HP_channel_quit_guild_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_quit_guild_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_quit_guild_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_channel_quit_guild_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4203,9 +5661,9 @@ void HP_channel_quit_guild(struct map_session_data *sd) {
{
HPMHooks.source.channel.quit_guild(sd);
}
- if( HPMHooks.count.HP_channel_quit_guild_post ) {
+ if (HPMHooks.count.HP_channel_quit_guild_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_quit_guild_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_quit_guild_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_channel_quit_guild_post[hIndex].func;
postHookFunc(sd);
}
@@ -4214,14 +5672,14 @@ void HP_channel_quit_guild(struct map_session_data *sd) {
}
void HP_channel_irc_join(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_channel_irc_join_pre ) {
+ if (HPMHooks.count.HP_channel_irc_join_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_irc_join_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_irc_join_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_channel_irc_join_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4229,9 +5687,9 @@ void HP_channel_irc_join(struct map_session_data *sd) {
{
HPMHooks.source.channel.irc_join(sd);
}
- if( HPMHooks.count.HP_channel_irc_join_post ) {
+ if (HPMHooks.count.HP_channel_irc_join_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_irc_join_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_irc_join_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_channel_irc_join_post[hIndex].func;
postHookFunc(sd);
}
@@ -4240,14 +5698,14 @@ void HP_channel_irc_join(struct map_session_data *sd) {
}
void HP_channel_config_read(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_channel_config_read_pre ) {
+ if (HPMHooks.count.HP_channel_config_read_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_config_read_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_config_read_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_channel_config_read_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4255,9 +5713,9 @@ void HP_channel_config_read(void) {
{
HPMHooks.source.channel.config_read();
}
- if( HPMHooks.count.HP_channel_config_read_post ) {
+ if (HPMHooks.count.HP_channel_config_read_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_channel_config_read_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_channel_config_read_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_channel_config_read_post[hIndex].func;
postHookFunc();
}
@@ -4268,14 +5726,14 @@ void HP_channel_config_read(void) {
bool HP_chat_create_pc_chat(struct map_session_data *sd, const char *title, const char *pass, int limit, bool pub) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chat_create_pc_chat_pre ) {
+ if (HPMHooks.count.HP_chat_create_pc_chat_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, const char **title, const char **pass, int *limit, bool *pub);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chat_create_pc_chat_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chat_create_pc_chat_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chat_create_pc_chat_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &title, &pass, &limit, &pub);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4283,9 +5741,9 @@ bool HP_chat_create_pc_chat(struct map_session_data *sd, const char *title, cons
{
retVal___ = HPMHooks.source.chat.create_pc_chat(sd, title, pass, limit, pub);
}
- if( HPMHooks.count.HP_chat_create_pc_chat_post ) {
+ if (HPMHooks.count.HP_chat_create_pc_chat_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, const char *title, const char *pass, int limit, bool pub);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chat_create_pc_chat_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chat_create_pc_chat_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chat_create_pc_chat_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, title, pass, limit, pub);
}
@@ -4295,14 +5753,14 @@ bool HP_chat_create_pc_chat(struct map_session_data *sd, const char *title, cons
bool HP_chat_join(struct map_session_data *sd, int chatid, const char *pass) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chat_join_pre ) {
+ if (HPMHooks.count.HP_chat_join_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, int *chatid, const char **pass);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chat_join_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chat_join_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chat_join_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &chatid, &pass);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4310,9 +5768,9 @@ bool HP_chat_join(struct map_session_data *sd, int chatid, const char *pass) {
{
retVal___ = HPMHooks.source.chat.join(sd, chatid, pass);
}
- if( HPMHooks.count.HP_chat_join_post ) {
+ if (HPMHooks.count.HP_chat_join_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, int chatid, const char *pass);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chat_join_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chat_join_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chat_join_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, chatid, pass);
}
@@ -4322,14 +5780,14 @@ bool HP_chat_join(struct map_session_data *sd, int chatid, const char *pass) {
int HP_chat_leave(struct map_session_data *sd, bool kicked) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chat_leave_pre ) {
+ if (HPMHooks.count.HP_chat_leave_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, bool *kicked);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chat_leave_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chat_leave_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chat_leave_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &kicked);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4337,9 +5795,9 @@ int HP_chat_leave(struct map_session_data *sd, bool kicked) {
{
retVal___ = HPMHooks.source.chat.leave(sd, kicked);
}
- if( HPMHooks.count.HP_chat_leave_post ) {
+ if (HPMHooks.count.HP_chat_leave_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, bool kicked);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chat_leave_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chat_leave_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chat_leave_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, kicked);
}
@@ -4349,14 +5807,14 @@ int HP_chat_leave(struct map_session_data *sd, bool kicked) {
bool HP_chat_change_owner(struct map_session_data *sd, const char *nextownername) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chat_change_owner_pre ) {
+ if (HPMHooks.count.HP_chat_change_owner_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, const char **nextownername);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chat_change_owner_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chat_change_owner_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chat_change_owner_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &nextownername);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4364,9 +5822,9 @@ bool HP_chat_change_owner(struct map_session_data *sd, const char *nextownername
{
retVal___ = HPMHooks.source.chat.change_owner(sd, nextownername);
}
- if( HPMHooks.count.HP_chat_change_owner_post ) {
+ if (HPMHooks.count.HP_chat_change_owner_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, const char *nextownername);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chat_change_owner_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chat_change_owner_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chat_change_owner_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, nextownername);
}
@@ -4376,14 +5834,14 @@ bool HP_chat_change_owner(struct map_session_data *sd, const char *nextownername
bool HP_chat_change_status(struct map_session_data *sd, const char *title, const char *pass, int limit, bool pub) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chat_change_status_pre ) {
+ if (HPMHooks.count.HP_chat_change_status_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, const char **title, const char **pass, int *limit, bool *pub);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chat_change_status_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chat_change_status_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chat_change_status_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &title, &pass, &limit, &pub);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4391,9 +5849,9 @@ bool HP_chat_change_status(struct map_session_data *sd, const char *title, const
{
retVal___ = HPMHooks.source.chat.change_status(sd, title, pass, limit, pub);
}
- if( HPMHooks.count.HP_chat_change_status_post ) {
+ if (HPMHooks.count.HP_chat_change_status_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, const char *title, const char *pass, int limit, bool pub);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chat_change_status_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chat_change_status_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chat_change_status_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, title, pass, limit, pub);
}
@@ -4403,14 +5861,14 @@ bool HP_chat_change_status(struct map_session_data *sd, const char *title, const
bool HP_chat_kick(struct map_session_data *sd, const char *kickusername) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chat_kick_pre ) {
+ if (HPMHooks.count.HP_chat_kick_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, const char **kickusername);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chat_kick_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chat_kick_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chat_kick_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &kickusername);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4418,9 +5876,9 @@ bool HP_chat_kick(struct map_session_data *sd, const char *kickusername) {
{
retVal___ = HPMHooks.source.chat.kick(sd, kickusername);
}
- if( HPMHooks.count.HP_chat_kick_post ) {
+ if (HPMHooks.count.HP_chat_kick_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, const char *kickusername);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chat_kick_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chat_kick_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chat_kick_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, kickusername);
}
@@ -4430,14 +5888,14 @@ bool HP_chat_kick(struct map_session_data *sd, const char *kickusername) {
bool HP_chat_create_npc_chat(struct npc_data *nd, const char *title, int limit, bool pub, int trigger, const char *ev, int zeny, int min_level, int max_level) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chat_create_npc_chat_pre ) {
+ if (HPMHooks.count.HP_chat_create_npc_chat_pre > 0) {
bool (*preHookFunc) (struct npc_data **nd, const char **title, int *limit, bool *pub, int *trigger, const char **ev, int *zeny, int *min_level, int *max_level);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chat_create_npc_chat_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chat_create_npc_chat_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chat_create_npc_chat_pre[hIndex].func;
retVal___ = preHookFunc(&nd, &title, &limit, &pub, &trigger, &ev, &zeny, &min_level, &max_level);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4445,9 +5903,9 @@ bool HP_chat_create_npc_chat(struct npc_data *nd, const char *title, int limit,
{
retVal___ = HPMHooks.source.chat.create_npc_chat(nd, title, limit, pub, trigger, ev, zeny, min_level, max_level);
}
- if( HPMHooks.count.HP_chat_create_npc_chat_post ) {
+ if (HPMHooks.count.HP_chat_create_npc_chat_post > 0) {
bool (*postHookFunc) (bool retVal___, struct npc_data *nd, const char *title, int limit, bool pub, int trigger, const char *ev, int zeny, int min_level, int max_level);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chat_create_npc_chat_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chat_create_npc_chat_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chat_create_npc_chat_post[hIndex].func;
retVal___ = postHookFunc(retVal___, nd, title, limit, pub, trigger, ev, zeny, min_level, max_level);
}
@@ -4457,14 +5915,14 @@ bool HP_chat_create_npc_chat(struct npc_data *nd, const char *title, int limit,
bool HP_chat_delete_npc_chat(struct npc_data *nd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chat_delete_npc_chat_pre ) {
+ if (HPMHooks.count.HP_chat_delete_npc_chat_pre > 0) {
bool (*preHookFunc) (struct npc_data **nd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chat_delete_npc_chat_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chat_delete_npc_chat_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chat_delete_npc_chat_pre[hIndex].func;
retVal___ = preHookFunc(&nd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4472,9 +5930,9 @@ bool HP_chat_delete_npc_chat(struct npc_data *nd) {
{
retVal___ = HPMHooks.source.chat.delete_npc_chat(nd);
}
- if( HPMHooks.count.HP_chat_delete_npc_chat_post ) {
+ if (HPMHooks.count.HP_chat_delete_npc_chat_post > 0) {
bool (*postHookFunc) (bool retVal___, struct npc_data *nd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chat_delete_npc_chat_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chat_delete_npc_chat_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chat_delete_npc_chat_post[hIndex].func;
retVal___ = postHookFunc(retVal___, nd);
}
@@ -4484,14 +5942,14 @@ bool HP_chat_delete_npc_chat(struct npc_data *nd) {
bool HP_chat_enable_event(struct chat_data *cd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chat_enable_event_pre ) {
+ if (HPMHooks.count.HP_chat_enable_event_pre > 0) {
bool (*preHookFunc) (struct chat_data **cd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chat_enable_event_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chat_enable_event_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chat_enable_event_pre[hIndex].func;
retVal___ = preHookFunc(&cd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4499,9 +5957,9 @@ bool HP_chat_enable_event(struct chat_data *cd) {
{
retVal___ = HPMHooks.source.chat.enable_event(cd);
}
- if( HPMHooks.count.HP_chat_enable_event_post ) {
+ if (HPMHooks.count.HP_chat_enable_event_post > 0) {
bool (*postHookFunc) (bool retVal___, struct chat_data *cd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chat_enable_event_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chat_enable_event_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chat_enable_event_post[hIndex].func;
retVal___ = postHookFunc(retVal___, cd);
}
@@ -4511,14 +5969,14 @@ bool HP_chat_enable_event(struct chat_data *cd) {
bool HP_chat_disable_event(struct chat_data *cd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chat_disable_event_pre ) {
+ if (HPMHooks.count.HP_chat_disable_event_pre > 0) {
bool (*preHookFunc) (struct chat_data **cd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chat_disable_event_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chat_disable_event_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chat_disable_event_pre[hIndex].func;
retVal___ = preHookFunc(&cd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4526,9 +5984,9 @@ bool HP_chat_disable_event(struct chat_data *cd) {
{
retVal___ = HPMHooks.source.chat.disable_event(cd);
}
- if( HPMHooks.count.HP_chat_disable_event_post ) {
+ if (HPMHooks.count.HP_chat_disable_event_post > 0) {
bool (*postHookFunc) (bool retVal___, struct chat_data *cd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chat_disable_event_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chat_disable_event_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chat_disable_event_post[hIndex].func;
retVal___ = postHookFunc(retVal___, cd);
}
@@ -4538,14 +5996,14 @@ bool HP_chat_disable_event(struct chat_data *cd) {
bool HP_chat_npc_kick_all(struct chat_data *cd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chat_npc_kick_all_pre ) {
+ if (HPMHooks.count.HP_chat_npc_kick_all_pre > 0) {
bool (*preHookFunc) (struct chat_data **cd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chat_npc_kick_all_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chat_npc_kick_all_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chat_npc_kick_all_pre[hIndex].func;
retVal___ = preHookFunc(&cd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4553,9 +6011,9 @@ bool HP_chat_npc_kick_all(struct chat_data *cd) {
{
retVal___ = HPMHooks.source.chat.npc_kick_all(cd);
}
- if( HPMHooks.count.HP_chat_npc_kick_all_post ) {
+ if (HPMHooks.count.HP_chat_npc_kick_all_post > 0) {
bool (*postHookFunc) (bool retVal___, struct chat_data *cd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chat_npc_kick_all_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chat_npc_kick_all_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chat_npc_kick_all_post[hIndex].func;
retVal___ = postHookFunc(retVal___, cd);
}
@@ -4565,14 +6023,14 @@ bool HP_chat_npc_kick_all(struct chat_data *cd) {
bool HP_chat_trigger_event(struct chat_data *cd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chat_trigger_event_pre ) {
+ if (HPMHooks.count.HP_chat_trigger_event_pre > 0) {
bool (*preHookFunc) (struct chat_data **cd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chat_trigger_event_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chat_trigger_event_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chat_trigger_event_pre[hIndex].func;
retVal___ = preHookFunc(&cd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4580,9 +6038,9 @@ bool HP_chat_trigger_event(struct chat_data *cd) {
{
retVal___ = HPMHooks.source.chat.trigger_event(cd);
}
- if( HPMHooks.count.HP_chat_trigger_event_post ) {
+ if (HPMHooks.count.HP_chat_trigger_event_post > 0) {
bool (*postHookFunc) (bool retVal___, struct chat_data *cd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chat_trigger_event_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chat_trigger_event_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chat_trigger_event_post[hIndex].func;
retVal___ = postHookFunc(retVal___, cd);
}
@@ -4592,14 +6050,14 @@ bool HP_chat_trigger_event(struct chat_data *cd) {
struct chat_data* HP_chat_create(struct block_list *bl, const char *title, const char *pass, int limit, bool pub, int trigger, const char *ev, int zeny, int min_level, int max_level) {
int hIndex = 0;
struct chat_data* retVal___ = NULL;
- if( HPMHooks.count.HP_chat_create_pre ) {
+ if (HPMHooks.count.HP_chat_create_pre > 0) {
struct chat_data* (*preHookFunc) (struct block_list **bl, const char **title, const char **pass, int *limit, bool *pub, int *trigger, const char **ev, int *zeny, int *min_level, int *max_level);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chat_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chat_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chat_create_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &title, &pass, &limit, &pub, &trigger, &ev, &zeny, &min_level, &max_level);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4607,9 +6065,9 @@ struct chat_data* HP_chat_create(struct block_list *bl, const char *title, const
{
retVal___ = HPMHooks.source.chat.create(bl, title, pass, limit, pub, trigger, ev, zeny, min_level, max_level);
}
- if( HPMHooks.count.HP_chat_create_post ) {
+ if (HPMHooks.count.HP_chat_create_post > 0) {
struct chat_data* (*postHookFunc) (struct chat_data* retVal___, struct block_list *bl, const char *title, const char *pass, int limit, bool pub, int trigger, const char *ev, int zeny, int min_level, int max_level);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chat_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chat_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chat_create_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, title, pass, limit, pub, trigger, ev, zeny, min_level, max_level);
}
@@ -4619,14 +6077,14 @@ struct chat_data* HP_chat_create(struct block_list *bl, const char *title, const
/* chrif_interface */
void HP_chrif_init(bool minimal) {
int hIndex = 0;
- if( HPMHooks.count.HP_chrif_init_pre ) {
+ if (HPMHooks.count.HP_chrif_init_pre > 0) {
void (*preHookFunc) (bool *minimal);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_init_pre[hIndex].func;
preHookFunc(&minimal);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4634,9 +6092,9 @@ void HP_chrif_init(bool minimal) {
{
HPMHooks.source.chrif.init(minimal);
}
- if( HPMHooks.count.HP_chrif_init_post ) {
+ if (HPMHooks.count.HP_chrif_init_post > 0) {
void (*postHookFunc) (bool minimal);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_init_post[hIndex].func;
postHookFunc(minimal);
}
@@ -4645,14 +6103,14 @@ void HP_chrif_init(bool minimal) {
}
void HP_chrif_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_chrif_final_pre ) {
+ if (HPMHooks.count.HP_chrif_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4660,9 +6118,9 @@ void HP_chrif_final(void) {
{
HPMHooks.source.chrif.final();
}
- if( HPMHooks.count.HP_chrif_final_post ) {
+ if (HPMHooks.count.HP_chrif_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_final_post[hIndex].func;
postHookFunc();
}
@@ -4671,14 +6129,14 @@ void HP_chrif_final(void) {
}
void HP_chrif_setuserid(char *id) {
int hIndex = 0;
- if( HPMHooks.count.HP_chrif_setuserid_pre ) {
+ if (HPMHooks.count.HP_chrif_setuserid_pre > 0) {
void (*preHookFunc) (char **id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_setuserid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_setuserid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_setuserid_pre[hIndex].func;
preHookFunc(&id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4686,9 +6144,9 @@ void HP_chrif_setuserid(char *id) {
{
HPMHooks.source.chrif.setuserid(id);
}
- if( HPMHooks.count.HP_chrif_setuserid_post ) {
+ if (HPMHooks.count.HP_chrif_setuserid_post > 0) {
void (*postHookFunc) (char *id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_setuserid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_setuserid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_setuserid_post[hIndex].func;
postHookFunc(id);
}
@@ -4697,14 +6155,14 @@ void HP_chrif_setuserid(char *id) {
}
void HP_chrif_setpasswd(char *pwd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chrif_setpasswd_pre ) {
+ if (HPMHooks.count.HP_chrif_setpasswd_pre > 0) {
void (*preHookFunc) (char **pwd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_setpasswd_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_setpasswd_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_setpasswd_pre[hIndex].func;
preHookFunc(&pwd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4712,9 +6170,9 @@ void HP_chrif_setpasswd(char *pwd) {
{
HPMHooks.source.chrif.setpasswd(pwd);
}
- if( HPMHooks.count.HP_chrif_setpasswd_post ) {
+ if (HPMHooks.count.HP_chrif_setpasswd_post > 0) {
void (*postHookFunc) (char *pwd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_setpasswd_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_setpasswd_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_setpasswd_post[hIndex].func;
postHookFunc(pwd);
}
@@ -4723,14 +6181,14 @@ void HP_chrif_setpasswd(char *pwd) {
}
void HP_chrif_checkdefaultlogin(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_chrif_checkdefaultlogin_pre ) {
+ if (HPMHooks.count.HP_chrif_checkdefaultlogin_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_checkdefaultlogin_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_checkdefaultlogin_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_checkdefaultlogin_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4738,9 +6196,9 @@ void HP_chrif_checkdefaultlogin(void) {
{
HPMHooks.source.chrif.checkdefaultlogin();
}
- if( HPMHooks.count.HP_chrif_checkdefaultlogin_post ) {
+ if (HPMHooks.count.HP_chrif_checkdefaultlogin_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_checkdefaultlogin_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_checkdefaultlogin_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_checkdefaultlogin_post[hIndex].func;
postHookFunc();
}
@@ -4750,14 +6208,14 @@ void HP_chrif_checkdefaultlogin(void) {
bool HP_chrif_setip(const char *ip) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chrif_setip_pre ) {
+ if (HPMHooks.count.HP_chrif_setip_pre > 0) {
bool (*preHookFunc) (const char **ip);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_setip_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_setip_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_setip_pre[hIndex].func;
retVal___ = preHookFunc(&ip);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4765,9 +6223,9 @@ bool HP_chrif_setip(const char *ip) {
{
retVal___ = HPMHooks.source.chrif.setip(ip);
}
- if( HPMHooks.count.HP_chrif_setip_post ) {
+ if (HPMHooks.count.HP_chrif_setip_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *ip);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_setip_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_setip_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_setip_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ip);
}
@@ -4776,14 +6234,14 @@ bool HP_chrif_setip(const char *ip) {
}
void HP_chrif_setport(uint16 port) {
int hIndex = 0;
- if( HPMHooks.count.HP_chrif_setport_pre ) {
+ if (HPMHooks.count.HP_chrif_setport_pre > 0) {
void (*preHookFunc) (uint16 *port);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_setport_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_setport_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_setport_pre[hIndex].func;
preHookFunc(&port);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4791,9 +6249,9 @@ void HP_chrif_setport(uint16 port) {
{
HPMHooks.source.chrif.setport(port);
}
- if( HPMHooks.count.HP_chrif_setport_post ) {
+ if (HPMHooks.count.HP_chrif_setport_post > 0) {
void (*postHookFunc) (uint16 port);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_setport_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_setport_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_setport_post[hIndex].func;
postHookFunc(port);
}
@@ -4803,14 +6261,14 @@ void HP_chrif_setport(uint16 port) {
int HP_chrif_isconnected(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chrif_isconnected_pre ) {
+ if (HPMHooks.count.HP_chrif_isconnected_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_isconnected_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_isconnected_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_isconnected_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4818,9 +6276,9 @@ int HP_chrif_isconnected(void) {
{
retVal___ = HPMHooks.source.chrif.isconnected();
}
- if( HPMHooks.count.HP_chrif_isconnected_post ) {
+ if (HPMHooks.count.HP_chrif_isconnected_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_isconnected_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_isconnected_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_isconnected_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -4829,14 +6287,14 @@ int HP_chrif_isconnected(void) {
}
void HP_chrif_check_shutdown(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_chrif_check_shutdown_pre ) {
+ if (HPMHooks.count.HP_chrif_check_shutdown_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_check_shutdown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_check_shutdown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_check_shutdown_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4844,9 +6302,9 @@ void HP_chrif_check_shutdown(void) {
{
HPMHooks.source.chrif.check_shutdown();
}
- if( HPMHooks.count.HP_chrif_check_shutdown_post ) {
+ if (HPMHooks.count.HP_chrif_check_shutdown_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_check_shutdown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_check_shutdown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_check_shutdown_post[hIndex].func;
postHookFunc();
}
@@ -4856,14 +6314,14 @@ void HP_chrif_check_shutdown(void) {
struct auth_node* HP_chrif_search(int account_id) {
int hIndex = 0;
struct auth_node* retVal___ = NULL;
- if( HPMHooks.count.HP_chrif_search_pre ) {
+ if (HPMHooks.count.HP_chrif_search_pre > 0) {
struct auth_node* (*preHookFunc) (int *account_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_search_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_search_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_search_pre[hIndex].func;
retVal___ = preHookFunc(&account_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4871,9 +6329,9 @@ struct auth_node* HP_chrif_search(int account_id) {
{
retVal___ = HPMHooks.source.chrif.search(account_id);
}
- if( HPMHooks.count.HP_chrif_search_post ) {
+ if (HPMHooks.count.HP_chrif_search_post > 0) {
struct auth_node* (*postHookFunc) (struct auth_node* retVal___, int account_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_search_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_search_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_search_post[hIndex].func;
retVal___ = postHookFunc(retVal___, account_id);
}
@@ -4883,14 +6341,14 @@ struct auth_node* HP_chrif_search(int account_id) {
struct auth_node* HP_chrif_auth_check(int account_id, int char_id, enum sd_state state) {
int hIndex = 0;
struct auth_node* retVal___ = NULL;
- if( HPMHooks.count.HP_chrif_auth_check_pre ) {
+ if (HPMHooks.count.HP_chrif_auth_check_pre > 0) {
struct auth_node* (*preHookFunc) (int *account_id, int *char_id, enum sd_state *state);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_auth_check_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_auth_check_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_auth_check_pre[hIndex].func;
retVal___ = preHookFunc(&account_id, &char_id, &state);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4898,9 +6356,9 @@ struct auth_node* HP_chrif_auth_check(int account_id, int char_id, enum sd_state
{
retVal___ = HPMHooks.source.chrif.auth_check(account_id, char_id, state);
}
- if( HPMHooks.count.HP_chrif_auth_check_post ) {
+ if (HPMHooks.count.HP_chrif_auth_check_post > 0) {
struct auth_node* (*postHookFunc) (struct auth_node* retVal___, int account_id, int char_id, enum sd_state state);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_auth_check_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_auth_check_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_auth_check_post[hIndex].func;
retVal___ = postHookFunc(retVal___, account_id, char_id, state);
}
@@ -4910,14 +6368,14 @@ struct auth_node* HP_chrif_auth_check(int account_id, int char_id, enum sd_state
bool HP_chrif_auth_delete(int account_id, int char_id, enum sd_state state) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chrif_auth_delete_pre ) {
+ if (HPMHooks.count.HP_chrif_auth_delete_pre > 0) {
bool (*preHookFunc) (int *account_id, int *char_id, enum sd_state *state);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_auth_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_auth_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_auth_delete_pre[hIndex].func;
retVal___ = preHookFunc(&account_id, &char_id, &state);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4925,9 +6383,9 @@ bool HP_chrif_auth_delete(int account_id, int char_id, enum sd_state state) {
{
retVal___ = HPMHooks.source.chrif.auth_delete(account_id, char_id, state);
}
- if( HPMHooks.count.HP_chrif_auth_delete_post ) {
+ if (HPMHooks.count.HP_chrif_auth_delete_post > 0) {
bool (*postHookFunc) (bool retVal___, int account_id, int char_id, enum sd_state state);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_auth_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_auth_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_auth_delete_post[hIndex].func;
retVal___ = postHookFunc(retVal___, account_id, char_id, state);
}
@@ -4937,14 +6395,14 @@ bool HP_chrif_auth_delete(int account_id, int char_id, enum sd_state state) {
bool HP_chrif_auth_finished(struct map_session_data *sd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chrif_auth_finished_pre ) {
+ if (HPMHooks.count.HP_chrif_auth_finished_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_auth_finished_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_auth_finished_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_auth_finished_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -4952,9 +6410,9 @@ bool HP_chrif_auth_finished(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.chrif.auth_finished(sd);
}
- if( HPMHooks.count.HP_chrif_auth_finished_post ) {
+ if (HPMHooks.count.HP_chrif_auth_finished_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_auth_finished_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_auth_finished_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_auth_finished_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -4963,14 +6421,14 @@ bool HP_chrif_auth_finished(struct map_session_data *sd) {
}
void HP_chrif_authreq(struct map_session_data *sd, bool hstandalone) {
int hIndex = 0;
- if( HPMHooks.count.HP_chrif_authreq_pre ) {
+ if (HPMHooks.count.HP_chrif_authreq_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, bool *hstandalone);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_authreq_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_authreq_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_authreq_pre[hIndex].func;
preHookFunc(&sd, &hstandalone);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -4978,9 +6436,9 @@ void HP_chrif_authreq(struct map_session_data *sd, bool hstandalone) {
{
HPMHooks.source.chrif.authreq(sd, hstandalone);
}
- if( HPMHooks.count.HP_chrif_authreq_post ) {
+ if (HPMHooks.count.HP_chrif_authreq_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, bool hstandalone);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_authreq_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_authreq_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_authreq_post[hIndex].func;
postHookFunc(sd, hstandalone);
}
@@ -4989,14 +6447,14 @@ void HP_chrif_authreq(struct map_session_data *sd, bool hstandalone) {
}
void HP_chrif_authok(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chrif_authok_pre ) {
+ if (HPMHooks.count.HP_chrif_authok_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_authok_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_authok_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_authok_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5004,9 +6462,9 @@ void HP_chrif_authok(int fd) {
{
HPMHooks.source.chrif.authok(fd);
}
- if( HPMHooks.count.HP_chrif_authok_post ) {
+ if (HPMHooks.count.HP_chrif_authok_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_authok_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_authok_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_authok_post[hIndex].func;
postHookFunc(fd);
}
@@ -5016,14 +6474,14 @@ void HP_chrif_authok(int fd) {
bool HP_chrif_scdata_request(int account_id, int char_id) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chrif_scdata_request_pre ) {
+ if (HPMHooks.count.HP_chrif_scdata_request_pre > 0) {
bool (*preHookFunc) (int *account_id, int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_scdata_request_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_scdata_request_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_scdata_request_pre[hIndex].func;
retVal___ = preHookFunc(&account_id, &char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5031,9 +6489,9 @@ bool HP_chrif_scdata_request(int account_id, int char_id) {
{
retVal___ = HPMHooks.source.chrif.scdata_request(account_id, char_id);
}
- if( HPMHooks.count.HP_chrif_scdata_request_post ) {
+ if (HPMHooks.count.HP_chrif_scdata_request_post > 0) {
bool (*postHookFunc) (bool retVal___, int account_id, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_scdata_request_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_scdata_request_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_scdata_request_post[hIndex].func;
retVal___ = postHookFunc(retVal___, account_id, char_id);
}
@@ -5043,14 +6501,14 @@ bool HP_chrif_scdata_request(int account_id, int char_id) {
bool HP_chrif_save(struct map_session_data *sd, int flag) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chrif_save_pre ) {
+ if (HPMHooks.count.HP_chrif_save_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_save_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_save_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_save_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5058,9 +6516,9 @@ bool HP_chrif_save(struct map_session_data *sd, int flag) {
{
retVal___ = HPMHooks.source.chrif.save(sd, flag);
}
- if( HPMHooks.count.HP_chrif_save_post ) {
+ if (HPMHooks.count.HP_chrif_save_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_save_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_save_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_save_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, flag);
}
@@ -5070,14 +6528,14 @@ bool HP_chrif_save(struct map_session_data *sd, int flag) {
bool HP_chrif_charselectreq(struct map_session_data *sd, uint32 s_ip) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chrif_charselectreq_pre ) {
+ if (HPMHooks.count.HP_chrif_charselectreq_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, uint32 *s_ip);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_charselectreq_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_charselectreq_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_charselectreq_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &s_ip);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5085,9 +6543,9 @@ bool HP_chrif_charselectreq(struct map_session_data *sd, uint32 s_ip) {
{
retVal___ = HPMHooks.source.chrif.charselectreq(sd, s_ip);
}
- if( HPMHooks.count.HP_chrif_charselectreq_post ) {
+ if (HPMHooks.count.HP_chrif_charselectreq_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, uint32 s_ip);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_charselectreq_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_charselectreq_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_charselectreq_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, s_ip);
}
@@ -5097,14 +6555,14 @@ bool HP_chrif_charselectreq(struct map_session_data *sd, uint32 s_ip) {
bool HP_chrif_changemapserver(struct map_session_data *sd, uint32 ip, uint16 port) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chrif_changemapserver_pre ) {
+ if (HPMHooks.count.HP_chrif_changemapserver_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, uint32 *ip, uint16 *port);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_changemapserver_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_changemapserver_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_changemapserver_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &ip, &port);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5112,9 +6570,9 @@ bool HP_chrif_changemapserver(struct map_session_data *sd, uint32 ip, uint16 por
{
retVal___ = HPMHooks.source.chrif.changemapserver(sd, ip, port);
}
- if( HPMHooks.count.HP_chrif_changemapserver_post ) {
+ if (HPMHooks.count.HP_chrif_changemapserver_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, uint32 ip, uint16 port);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_changemapserver_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_changemapserver_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_changemapserver_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, ip, port);
}
@@ -5124,14 +6582,14 @@ bool HP_chrif_changemapserver(struct map_session_data *sd, uint32 ip, uint16 por
bool HP_chrif_searchcharid(int char_id) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chrif_searchcharid_pre ) {
+ if (HPMHooks.count.HP_chrif_searchcharid_pre > 0) {
bool (*preHookFunc) (int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_searchcharid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_searchcharid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_searchcharid_pre[hIndex].func;
retVal___ = preHookFunc(&char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5139,9 +6597,9 @@ bool HP_chrif_searchcharid(int char_id) {
{
retVal___ = HPMHooks.source.chrif.searchcharid(char_id);
}
- if( HPMHooks.count.HP_chrif_searchcharid_post ) {
+ if (HPMHooks.count.HP_chrif_searchcharid_post > 0) {
bool (*postHookFunc) (bool retVal___, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_searchcharid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_searchcharid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_searchcharid_post[hIndex].func;
retVal___ = postHookFunc(retVal___, char_id);
}
@@ -5151,14 +6609,14 @@ bool HP_chrif_searchcharid(int char_id) {
bool HP_chrif_changeemail(int id, const char *actual_email, const char *new_email) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chrif_changeemail_pre ) {
+ if (HPMHooks.count.HP_chrif_changeemail_pre > 0) {
bool (*preHookFunc) (int *id, const char **actual_email, const char **new_email);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_changeemail_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_changeemail_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_changeemail_pre[hIndex].func;
retVal___ = preHookFunc(&id, &actual_email, &new_email);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5166,9 +6624,9 @@ bool HP_chrif_changeemail(int id, const char *actual_email, const char *new_emai
{
retVal___ = HPMHooks.source.chrif.changeemail(id, actual_email, new_email);
}
- if( HPMHooks.count.HP_chrif_changeemail_post ) {
+ if (HPMHooks.count.HP_chrif_changeemail_post > 0) {
bool (*postHookFunc) (bool retVal___, int id, const char *actual_email, const char *new_email);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_changeemail_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_changeemail_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_changeemail_post[hIndex].func;
retVal___ = postHookFunc(retVal___, id, actual_email, new_email);
}
@@ -5178,14 +6636,14 @@ bool HP_chrif_changeemail(int id, const char *actual_email, const char *new_emai
bool HP_chrif_char_ask_name(int acc, const char *character_name, unsigned short operation_type, int year, int month, int day, int hour, int minute, int second) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chrif_char_ask_name_pre ) {
+ if (HPMHooks.count.HP_chrif_char_ask_name_pre > 0) {
bool (*preHookFunc) (int *acc, const char **character_name, unsigned short *operation_type, int *year, int *month, int *day, int *hour, int *minute, int *second);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_char_ask_name_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_char_ask_name_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_char_ask_name_pre[hIndex].func;
retVal___ = preHookFunc(&acc, &character_name, &operation_type, &year, &month, &day, &hour, &minute, &second);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5193,9 +6651,9 @@ bool HP_chrif_char_ask_name(int acc, const char *character_name, unsigned short
{
retVal___ = HPMHooks.source.chrif.char_ask_name(acc, character_name, operation_type, year, month, day, hour, minute, second);
}
- if( HPMHooks.count.HP_chrif_char_ask_name_post ) {
+ if (HPMHooks.count.HP_chrif_char_ask_name_post > 0) {
bool (*postHookFunc) (bool retVal___, int acc, const char *character_name, unsigned short operation_type, int year, int month, int day, int hour, int minute, int second);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_char_ask_name_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_char_ask_name_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_char_ask_name_post[hIndex].func;
retVal___ = postHookFunc(retVal___, acc, character_name, operation_type, year, month, day, hour, minute, second);
}
@@ -5205,14 +6663,14 @@ bool HP_chrif_char_ask_name(int acc, const char *character_name, unsigned short
int HP_chrif_updatefamelist(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chrif_updatefamelist_pre ) {
+ if (HPMHooks.count.HP_chrif_updatefamelist_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_updatefamelist_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_updatefamelist_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_updatefamelist_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5220,9 +6678,9 @@ int HP_chrif_updatefamelist(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.chrif.updatefamelist(sd);
}
- if( HPMHooks.count.HP_chrif_updatefamelist_post ) {
+ if (HPMHooks.count.HP_chrif_updatefamelist_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_updatefamelist_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_updatefamelist_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_updatefamelist_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -5232,14 +6690,14 @@ int HP_chrif_updatefamelist(struct map_session_data *sd) {
bool HP_chrif_buildfamelist(void) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chrif_buildfamelist_pre ) {
+ if (HPMHooks.count.HP_chrif_buildfamelist_pre > 0) {
bool (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_buildfamelist_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_buildfamelist_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_buildfamelist_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5247,9 +6705,9 @@ bool HP_chrif_buildfamelist(void) {
{
retVal___ = HPMHooks.source.chrif.buildfamelist();
}
- if( HPMHooks.count.HP_chrif_buildfamelist_post ) {
+ if (HPMHooks.count.HP_chrif_buildfamelist_post > 0) {
bool (*postHookFunc) (bool retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_buildfamelist_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_buildfamelist_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_buildfamelist_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -5259,14 +6717,14 @@ bool HP_chrif_buildfamelist(void) {
bool HP_chrif_save_scdata(struct map_session_data *sd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chrif_save_scdata_pre ) {
+ if (HPMHooks.count.HP_chrif_save_scdata_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_save_scdata_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_save_scdata_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_save_scdata_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5274,9 +6732,9 @@ bool HP_chrif_save_scdata(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.chrif.save_scdata(sd);
}
- if( HPMHooks.count.HP_chrif_save_scdata_post ) {
+ if (HPMHooks.count.HP_chrif_save_scdata_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_save_scdata_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_save_scdata_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_save_scdata_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -5286,14 +6744,14 @@ bool HP_chrif_save_scdata(struct map_session_data *sd) {
bool HP_chrif_ragsrvinfo(int base_rate, int job_rate, int drop_rate) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chrif_ragsrvinfo_pre ) {
+ if (HPMHooks.count.HP_chrif_ragsrvinfo_pre > 0) {
bool (*preHookFunc) (int *base_rate, int *job_rate, int *drop_rate);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_ragsrvinfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_ragsrvinfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_ragsrvinfo_pre[hIndex].func;
retVal___ = preHookFunc(&base_rate, &job_rate, &drop_rate);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5301,9 +6759,9 @@ bool HP_chrif_ragsrvinfo(int base_rate, int job_rate, int drop_rate) {
{
retVal___ = HPMHooks.source.chrif.ragsrvinfo(base_rate, job_rate, drop_rate);
}
- if( HPMHooks.count.HP_chrif_ragsrvinfo_post ) {
+ if (HPMHooks.count.HP_chrif_ragsrvinfo_post > 0) {
bool (*postHookFunc) (bool retVal___, int base_rate, int job_rate, int drop_rate);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_ragsrvinfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_ragsrvinfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_ragsrvinfo_post[hIndex].func;
retVal___ = postHookFunc(retVal___, base_rate, job_rate, drop_rate);
}
@@ -5313,14 +6771,14 @@ bool HP_chrif_ragsrvinfo(int base_rate, int job_rate, int drop_rate) {
bool HP_chrif_char_offline_nsd(int account_id, int char_id) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chrif_char_offline_nsd_pre ) {
+ if (HPMHooks.count.HP_chrif_char_offline_nsd_pre > 0) {
bool (*preHookFunc) (int *account_id, int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_char_offline_nsd_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_char_offline_nsd_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_char_offline_nsd_pre[hIndex].func;
retVal___ = preHookFunc(&account_id, &char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5328,9 +6786,9 @@ bool HP_chrif_char_offline_nsd(int account_id, int char_id) {
{
retVal___ = HPMHooks.source.chrif.char_offline_nsd(account_id, char_id);
}
- if( HPMHooks.count.HP_chrif_char_offline_nsd_post ) {
+ if (HPMHooks.count.HP_chrif_char_offline_nsd_post > 0) {
bool (*postHookFunc) (bool retVal___, int account_id, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_char_offline_nsd_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_char_offline_nsd_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_char_offline_nsd_post[hIndex].func;
retVal___ = postHookFunc(retVal___, account_id, char_id);
}
@@ -5340,14 +6798,14 @@ bool HP_chrif_char_offline_nsd(int account_id, int char_id) {
bool HP_chrif_char_reset_offline(void) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chrif_char_reset_offline_pre ) {
+ if (HPMHooks.count.HP_chrif_char_reset_offline_pre > 0) {
bool (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_char_reset_offline_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_char_reset_offline_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_char_reset_offline_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5355,9 +6813,9 @@ bool HP_chrif_char_reset_offline(void) {
{
retVal___ = HPMHooks.source.chrif.char_reset_offline();
}
- if( HPMHooks.count.HP_chrif_char_reset_offline_post ) {
+ if (HPMHooks.count.HP_chrif_char_reset_offline_post > 0) {
bool (*postHookFunc) (bool retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_char_reset_offline_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_char_reset_offline_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_char_reset_offline_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -5367,14 +6825,14 @@ bool HP_chrif_char_reset_offline(void) {
bool HP_chrif_send_users_tochar(void) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chrif_send_users_tochar_pre ) {
+ if (HPMHooks.count.HP_chrif_send_users_tochar_pre > 0) {
bool (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_send_users_tochar_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_send_users_tochar_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_send_users_tochar_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5382,9 +6840,9 @@ bool HP_chrif_send_users_tochar(void) {
{
retVal___ = HPMHooks.source.chrif.send_users_tochar();
}
- if( HPMHooks.count.HP_chrif_send_users_tochar_post ) {
+ if (HPMHooks.count.HP_chrif_send_users_tochar_post > 0) {
bool (*postHookFunc) (bool retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_send_users_tochar_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_send_users_tochar_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_send_users_tochar_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -5394,14 +6852,14 @@ bool HP_chrif_send_users_tochar(void) {
bool HP_chrif_char_online(struct map_session_data *sd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chrif_char_online_pre ) {
+ if (HPMHooks.count.HP_chrif_char_online_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_char_online_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_char_online_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_char_online_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5409,9 +6867,9 @@ bool HP_chrif_char_online(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.chrif.char_online(sd);
}
- if( HPMHooks.count.HP_chrif_char_online_post ) {
+ if (HPMHooks.count.HP_chrif_char_online_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_char_online_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_char_online_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_char_online_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -5421,14 +6879,14 @@ bool HP_chrif_char_online(struct map_session_data *sd) {
bool HP_chrif_changesex(struct map_session_data *sd, bool change_account) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chrif_changesex_pre ) {
+ if (HPMHooks.count.HP_chrif_changesex_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, bool *change_account);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_changesex_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_changesex_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_changesex_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &change_account);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5436,9 +6894,9 @@ bool HP_chrif_changesex(struct map_session_data *sd, bool change_account) {
{
retVal___ = HPMHooks.source.chrif.changesex(sd, change_account);
}
- if( HPMHooks.count.HP_chrif_changesex_post ) {
+ if (HPMHooks.count.HP_chrif_changesex_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, bool change_account);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_changesex_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_changesex_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_changesex_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, change_account);
}
@@ -5448,14 +6906,14 @@ bool HP_chrif_changesex(struct map_session_data *sd, bool change_account) {
bool HP_chrif_divorce(int partner_id1, int partner_id2) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chrif_divorce_pre ) {
+ if (HPMHooks.count.HP_chrif_divorce_pre > 0) {
bool (*preHookFunc) (int *partner_id1, int *partner_id2);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_divorce_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_divorce_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_divorce_pre[hIndex].func;
retVal___ = preHookFunc(&partner_id1, &partner_id2);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5463,9 +6921,9 @@ bool HP_chrif_divorce(int partner_id1, int partner_id2) {
{
retVal___ = HPMHooks.source.chrif.divorce(partner_id1, partner_id2);
}
- if( HPMHooks.count.HP_chrif_divorce_post ) {
+ if (HPMHooks.count.HP_chrif_divorce_post > 0) {
bool (*postHookFunc) (bool retVal___, int partner_id1, int partner_id2);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_divorce_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_divorce_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_divorce_post[hIndex].func;
retVal___ = postHookFunc(retVal___, partner_id1, partner_id2);
}
@@ -5475,14 +6933,14 @@ bool HP_chrif_divorce(int partner_id1, int partner_id2) {
bool HP_chrif_removefriend(int char_id, int friend_id) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chrif_removefriend_pre ) {
+ if (HPMHooks.count.HP_chrif_removefriend_pre > 0) {
bool (*preHookFunc) (int *char_id, int *friend_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_removefriend_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_removefriend_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_removefriend_pre[hIndex].func;
retVal___ = preHookFunc(&char_id, &friend_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5490,52 +6948,26 @@ bool HP_chrif_removefriend(int char_id, int friend_id) {
{
retVal___ = HPMHooks.source.chrif.removefriend(char_id, friend_id);
}
- if( HPMHooks.count.HP_chrif_removefriend_post ) {
+ if (HPMHooks.count.HP_chrif_removefriend_post > 0) {
bool (*postHookFunc) (bool retVal___, int char_id, int friend_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_removefriend_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_removefriend_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_removefriend_post[hIndex].func;
retVal___ = postHookFunc(retVal___, char_id, friend_id);
}
}
return retVal___;
}
-void HP_chrif_send_report(char *buf, int len) {
- int hIndex = 0;
- if( HPMHooks.count.HP_chrif_send_report_pre ) {
- void (*preHookFunc) (char **buf, int *len);
- *HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_send_report_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_chrif_send_report_pre[hIndex].func;
- preHookFunc(&buf, &len);
- }
- if( *HPMforce_return ) {
- *HPMforce_return = false;
- return;
- }
- }
- {
- HPMHooks.source.chrif.send_report(buf, len);
- }
- if( HPMHooks.count.HP_chrif_send_report_post ) {
- void (*postHookFunc) (char *buf, int len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_send_report_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_chrif_send_report_post[hIndex].func;
- postHookFunc(buf, len);
- }
- }
- return;
-}
bool HP_chrif_flush(void) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chrif_flush_pre ) {
+ if (HPMHooks.count.HP_chrif_flush_pre > 0) {
bool (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_flush_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_flush_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_flush_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5543,9 +6975,9 @@ bool HP_chrif_flush(void) {
{
retVal___ = HPMHooks.source.chrif.flush();
}
- if( HPMHooks.count.HP_chrif_flush_post ) {
+ if (HPMHooks.count.HP_chrif_flush_post > 0) {
bool (*postHookFunc) (bool retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_flush_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_flush_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_flush_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -5554,14 +6986,14 @@ bool HP_chrif_flush(void) {
}
void HP_chrif_skillid2idx(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chrif_skillid2idx_pre ) {
+ if (HPMHooks.count.HP_chrif_skillid2idx_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_skillid2idx_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_skillid2idx_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_skillid2idx_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5569,9 +7001,9 @@ void HP_chrif_skillid2idx(int fd) {
{
HPMHooks.source.chrif.skillid2idx(fd);
}
- if( HPMHooks.count.HP_chrif_skillid2idx_post ) {
+ if (HPMHooks.count.HP_chrif_skillid2idx_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_skillid2idx_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_skillid2idx_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_skillid2idx_post[hIndex].func;
postHookFunc(fd);
}
@@ -5581,14 +7013,14 @@ void HP_chrif_skillid2idx(int fd) {
bool HP_chrif_sd_to_auth(struct map_session_data *sd, enum sd_state state) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chrif_sd_to_auth_pre ) {
+ if (HPMHooks.count.HP_chrif_sd_to_auth_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, enum sd_state *state);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_sd_to_auth_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_sd_to_auth_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_sd_to_auth_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &state);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5596,9 +7028,9 @@ bool HP_chrif_sd_to_auth(struct map_session_data *sd, enum sd_state state) {
{
retVal___ = HPMHooks.source.chrif.sd_to_auth(sd, state);
}
- if( HPMHooks.count.HP_chrif_sd_to_auth_post ) {
+ if (HPMHooks.count.HP_chrif_sd_to_auth_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, enum sd_state state);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_sd_to_auth_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_sd_to_auth_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_sd_to_auth_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, state);
}
@@ -5608,14 +7040,14 @@ bool HP_chrif_sd_to_auth(struct map_session_data *sd, enum sd_state state) {
int HP_chrif_check_connect_char_server(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chrif_check_connect_char_server_pre ) {
+ if (HPMHooks.count.HP_chrif_check_connect_char_server_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_check_connect_char_server_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_check_connect_char_server_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_check_connect_char_server_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5623,9 +7055,9 @@ int HP_chrif_check_connect_char_server(int tid, int64 tick, int id, intptr_t dat
{
retVal___ = HPMHooks.source.chrif.check_connect_char_server(tid, tick, id, data);
}
- if( HPMHooks.count.HP_chrif_check_connect_char_server_post ) {
+ if (HPMHooks.count.HP_chrif_check_connect_char_server_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_check_connect_char_server_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_check_connect_char_server_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_check_connect_char_server_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -5635,14 +7067,14 @@ int HP_chrif_check_connect_char_server(int tid, int64 tick, int id, intptr_t dat
bool HP_chrif_auth_logout(struct map_session_data *sd, enum sd_state state) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chrif_auth_logout_pre ) {
+ if (HPMHooks.count.HP_chrif_auth_logout_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, enum sd_state *state);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_auth_logout_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_auth_logout_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_auth_logout_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &state);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5650,9 +7082,9 @@ bool HP_chrif_auth_logout(struct map_session_data *sd, enum sd_state state) {
{
retVal___ = HPMHooks.source.chrif.auth_logout(sd, state);
}
- if( HPMHooks.count.HP_chrif_auth_logout_post ) {
+ if (HPMHooks.count.HP_chrif_auth_logout_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, enum sd_state state);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_auth_logout_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_auth_logout_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_auth_logout_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, state);
}
@@ -5661,14 +7093,14 @@ bool HP_chrif_auth_logout(struct map_session_data *sd, enum sd_state state) {
}
void HP_chrif_save_ack(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chrif_save_ack_pre ) {
+ if (HPMHooks.count.HP_chrif_save_ack_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_save_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_save_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_save_ack_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5676,9 +7108,9 @@ void HP_chrif_save_ack(int fd) {
{
HPMHooks.source.chrif.save_ack(fd);
}
- if( HPMHooks.count.HP_chrif_save_ack_post ) {
+ if (HPMHooks.count.HP_chrif_save_ack_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_save_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_save_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_save_ack_post[hIndex].func;
postHookFunc(fd);
}
@@ -5688,16 +7120,16 @@ void HP_chrif_save_ack(int fd) {
int HP_chrif_reconnect(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chrif_reconnect_pre ) {
+ if (HPMHooks.count.HP_chrif_reconnect_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_reconnect_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_reconnect_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_chrif_reconnect_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5707,9 +7139,9 @@ int HP_chrif_reconnect(union DBKey key, struct DBData *data, va_list ap) {
retVal___ = HPMHooks.source.chrif.reconnect(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_chrif_reconnect_post ) {
+ if (HPMHooks.count.HP_chrif_reconnect_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_reconnect_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_reconnect_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_chrif_reconnect_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -5721,16 +7153,16 @@ int HP_chrif_reconnect(union DBKey key, struct DBData *data, va_list ap) {
int HP_chrif_auth_db_cleanup_sub(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chrif_auth_db_cleanup_sub_pre ) {
+ if (HPMHooks.count.HP_chrif_auth_db_cleanup_sub_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_auth_db_cleanup_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_auth_db_cleanup_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_chrif_auth_db_cleanup_sub_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5740,9 +7172,9 @@ int HP_chrif_auth_db_cleanup_sub(union DBKey key, struct DBData *data, va_list a
retVal___ = HPMHooks.source.chrif.auth_db_cleanup_sub(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_chrif_auth_db_cleanup_sub_post ) {
+ if (HPMHooks.count.HP_chrif_auth_db_cleanup_sub_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_auth_db_cleanup_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_auth_db_cleanup_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_chrif_auth_db_cleanup_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -5754,14 +7186,14 @@ int HP_chrif_auth_db_cleanup_sub(union DBKey key, struct DBData *data, va_list a
bool HP_chrif_char_ask_name_answer(int acc, const char *player_name, uint16 type, uint16 answer) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chrif_char_ask_name_answer_pre ) {
+ if (HPMHooks.count.HP_chrif_char_ask_name_answer_pre > 0) {
bool (*preHookFunc) (int *acc, const char **player_name, uint16 *type, uint16 *answer);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_char_ask_name_answer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_char_ask_name_answer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_char_ask_name_answer_pre[hIndex].func;
retVal___ = preHookFunc(&acc, &player_name, &type, &answer);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5769,9 +7201,9 @@ bool HP_chrif_char_ask_name_answer(int acc, const char *player_name, uint16 type
{
retVal___ = HPMHooks.source.chrif.char_ask_name_answer(acc, player_name, type, answer);
}
- if( HPMHooks.count.HP_chrif_char_ask_name_answer_post ) {
+ if (HPMHooks.count.HP_chrif_char_ask_name_answer_post > 0) {
bool (*postHookFunc) (bool retVal___, int acc, const char *player_name, uint16 type, uint16 answer);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_char_ask_name_answer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_char_ask_name_answer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_char_ask_name_answer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, acc, player_name, type, answer);
}
@@ -5781,16 +7213,16 @@ bool HP_chrif_char_ask_name_answer(int acc, const char *player_name, uint16 type
int HP_chrif_auth_db_final(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chrif_auth_db_final_pre ) {
+ if (HPMHooks.count.HP_chrif_auth_db_final_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_auth_db_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_auth_db_final_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_chrif_auth_db_final_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5800,9 +7232,9 @@ int HP_chrif_auth_db_final(union DBKey key, struct DBData *data, va_list ap) {
retVal___ = HPMHooks.source.chrif.auth_db_final(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_chrif_auth_db_final_post ) {
+ if (HPMHooks.count.HP_chrif_auth_db_final_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_auth_db_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_auth_db_final_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_chrif_auth_db_final_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -5814,14 +7246,14 @@ int HP_chrif_auth_db_final(union DBKey key, struct DBData *data, va_list ap) {
int HP_chrif_send_usercount_tochar(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chrif_send_usercount_tochar_pre ) {
+ if (HPMHooks.count.HP_chrif_send_usercount_tochar_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_send_usercount_tochar_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_send_usercount_tochar_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_send_usercount_tochar_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5829,9 +7261,9 @@ int HP_chrif_send_usercount_tochar(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.chrif.send_usercount_tochar(tid, tick, id, data);
}
- if( HPMHooks.count.HP_chrif_send_usercount_tochar_post ) {
+ if (HPMHooks.count.HP_chrif_send_usercount_tochar_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_send_usercount_tochar_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_send_usercount_tochar_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_send_usercount_tochar_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -5841,14 +7273,14 @@ int HP_chrif_send_usercount_tochar(int tid, int64 tick, int id, intptr_t data) {
int HP_chrif_auth_db_cleanup(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chrif_auth_db_cleanup_pre ) {
+ if (HPMHooks.count.HP_chrif_auth_db_cleanup_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_auth_db_cleanup_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_auth_db_cleanup_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_auth_db_cleanup_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -5856,9 +7288,9 @@ int HP_chrif_auth_db_cleanup(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.chrif.auth_db_cleanup(tid, tick, id, data);
}
- if( HPMHooks.count.HP_chrif_auth_db_cleanup_post ) {
+ if (HPMHooks.count.HP_chrif_auth_db_cleanup_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_auth_db_cleanup_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_auth_db_cleanup_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_auth_db_cleanup_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -5867,14 +7299,14 @@ int HP_chrif_auth_db_cleanup(int tid, int64 tick, int id, intptr_t data) {
}
void HP_chrif_connect(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chrif_connect_pre ) {
+ if (HPMHooks.count.HP_chrif_connect_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_connect_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_connect_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_connect_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5882,9 +7314,9 @@ void HP_chrif_connect(int fd) {
{
HPMHooks.source.chrif.connect(fd);
}
- if( HPMHooks.count.HP_chrif_connect_post ) {
+ if (HPMHooks.count.HP_chrif_connect_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_connect_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_connect_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_connect_post[hIndex].func;
postHookFunc(fd);
}
@@ -5893,14 +7325,14 @@ void HP_chrif_connect(int fd) {
}
void HP_chrif_connectack(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chrif_connectack_pre ) {
+ if (HPMHooks.count.HP_chrif_connectack_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_connectack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_connectack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_connectack_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5908,9 +7340,9 @@ void HP_chrif_connectack(int fd) {
{
HPMHooks.source.chrif.connectack(fd);
}
- if( HPMHooks.count.HP_chrif_connectack_post ) {
+ if (HPMHooks.count.HP_chrif_connectack_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_connectack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_connectack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_connectack_post[hIndex].func;
postHookFunc(fd);
}
@@ -5919,14 +7351,14 @@ void HP_chrif_connectack(int fd) {
}
void HP_chrif_sendmap(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chrif_sendmap_pre ) {
+ if (HPMHooks.count.HP_chrif_sendmap_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_sendmap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_sendmap_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_sendmap_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5934,9 +7366,9 @@ void HP_chrif_sendmap(int fd) {
{
HPMHooks.source.chrif.sendmap(fd);
}
- if( HPMHooks.count.HP_chrif_sendmap_post ) {
+ if (HPMHooks.count.HP_chrif_sendmap_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_sendmap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_sendmap_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_sendmap_post[hIndex].func;
postHookFunc(fd);
}
@@ -5945,14 +7377,14 @@ void HP_chrif_sendmap(int fd) {
}
void HP_chrif_sendmapack(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chrif_sendmapack_pre ) {
+ if (HPMHooks.count.HP_chrif_sendmapack_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_sendmapack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_sendmapack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_sendmapack_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5960,9 +7392,9 @@ void HP_chrif_sendmapack(int fd) {
{
HPMHooks.source.chrif.sendmapack(fd);
}
- if( HPMHooks.count.HP_chrif_sendmapack_post ) {
+ if (HPMHooks.count.HP_chrif_sendmapack_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_sendmapack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_sendmapack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_sendmapack_post[hIndex].func;
postHookFunc(fd);
}
@@ -5971,14 +7403,14 @@ void HP_chrif_sendmapack(int fd) {
}
void HP_chrif_recvmap(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chrif_recvmap_pre ) {
+ if (HPMHooks.count.HP_chrif_recvmap_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_recvmap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_recvmap_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_recvmap_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -5986,9 +7418,9 @@ void HP_chrif_recvmap(int fd) {
{
HPMHooks.source.chrif.recvmap(fd);
}
- if( HPMHooks.count.HP_chrif_recvmap_post ) {
+ if (HPMHooks.count.HP_chrif_recvmap_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_recvmap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_recvmap_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_recvmap_post[hIndex].func;
postHookFunc(fd);
}
@@ -5998,14 +7430,14 @@ void HP_chrif_recvmap(int fd) {
bool HP_chrif_changemapserverack(int account_id, int login_id1, int login_id2, int char_id, short map_index, short x, short y, uint32 ip, uint16 port) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chrif_changemapserverack_pre ) {
+ if (HPMHooks.count.HP_chrif_changemapserverack_pre > 0) {
bool (*preHookFunc) (int *account_id, int *login_id1, int *login_id2, int *char_id, short *map_index, short *x, short *y, uint32 *ip, uint16 *port);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_changemapserverack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_changemapserverack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_changemapserverack_pre[hIndex].func;
retVal___ = preHookFunc(&account_id, &login_id1, &login_id2, &char_id, &map_index, &x, &y, &ip, &port);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6013,9 +7445,9 @@ bool HP_chrif_changemapserverack(int account_id, int login_id1, int login_id2, i
{
retVal___ = HPMHooks.source.chrif.changemapserverack(account_id, login_id1, login_id2, char_id, map_index, x, y, ip, port);
}
- if( HPMHooks.count.HP_chrif_changemapserverack_post ) {
+ if (HPMHooks.count.HP_chrif_changemapserverack_post > 0) {
bool (*postHookFunc) (bool retVal___, int account_id, int login_id1, int login_id2, int char_id, short map_index, short x, short y, uint32 ip, uint16 port);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_changemapserverack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_changemapserverack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_changemapserverack_post[hIndex].func;
retVal___ = postHookFunc(retVal___, account_id, login_id1, login_id2, char_id, map_index, x, y, ip, port);
}
@@ -6024,14 +7456,14 @@ bool HP_chrif_changemapserverack(int account_id, int login_id1, int login_id2, i
}
void HP_chrif_changedsex(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chrif_changedsex_pre ) {
+ if (HPMHooks.count.HP_chrif_changedsex_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_changedsex_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_changedsex_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_changedsex_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6039,9 +7471,9 @@ void HP_chrif_changedsex(int fd) {
{
HPMHooks.source.chrif.changedsex(fd);
}
- if( HPMHooks.count.HP_chrif_changedsex_post ) {
+ if (HPMHooks.count.HP_chrif_changedsex_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_changedsex_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_changedsex_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_changedsex_post[hIndex].func;
postHookFunc(fd);
}
@@ -6051,14 +7483,14 @@ void HP_chrif_changedsex(int fd) {
bool HP_chrif_divorceack(int char_id, int partner_id) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chrif_divorceack_pre ) {
+ if (HPMHooks.count.HP_chrif_divorceack_pre > 0) {
bool (*preHookFunc) (int *char_id, int *partner_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_divorceack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_divorceack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_divorceack_pre[hIndex].func;
retVal___ = preHookFunc(&char_id, &partner_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6066,9 +7498,9 @@ bool HP_chrif_divorceack(int char_id, int partner_id) {
{
retVal___ = HPMHooks.source.chrif.divorceack(char_id, partner_id);
}
- if( HPMHooks.count.HP_chrif_divorceack_post ) {
+ if (HPMHooks.count.HP_chrif_divorceack_post > 0) {
bool (*postHookFunc) (bool retVal___, int char_id, int partner_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_divorceack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_divorceack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_divorceack_post[hIndex].func;
retVal___ = postHookFunc(retVal___, char_id, partner_id);
}
@@ -6077,14 +7509,14 @@ bool HP_chrif_divorceack(int char_id, int partner_id) {
}
void HP_chrif_idbanned(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chrif_idbanned_pre ) {
+ if (HPMHooks.count.HP_chrif_idbanned_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_idbanned_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_idbanned_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_idbanned_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6092,9 +7524,9 @@ void HP_chrif_idbanned(int fd) {
{
HPMHooks.source.chrif.idbanned(fd);
}
- if( HPMHooks.count.HP_chrif_idbanned_post ) {
+ if (HPMHooks.count.HP_chrif_idbanned_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_idbanned_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_idbanned_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_idbanned_post[hIndex].func;
postHookFunc(fd);
}
@@ -6103,14 +7535,14 @@ void HP_chrif_idbanned(int fd) {
}
void HP_chrif_recvfamelist(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chrif_recvfamelist_pre ) {
+ if (HPMHooks.count.HP_chrif_recvfamelist_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_recvfamelist_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_recvfamelist_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_recvfamelist_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6118,9 +7550,9 @@ void HP_chrif_recvfamelist(int fd) {
{
HPMHooks.source.chrif.recvfamelist(fd);
}
- if( HPMHooks.count.HP_chrif_recvfamelist_post ) {
+ if (HPMHooks.count.HP_chrif_recvfamelist_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_recvfamelist_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_recvfamelist_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_recvfamelist_post[hIndex].func;
postHookFunc(fd);
}
@@ -6130,14 +7562,14 @@ void HP_chrif_recvfamelist(int fd) {
bool HP_chrif_load_scdata(int fd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_chrif_load_scdata_pre ) {
+ if (HPMHooks.count.HP_chrif_load_scdata_pre > 0) {
bool (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_load_scdata_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_load_scdata_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_load_scdata_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6145,9 +7577,9 @@ bool HP_chrif_load_scdata(int fd) {
{
retVal___ = HPMHooks.source.chrif.load_scdata(fd);
}
- if( HPMHooks.count.HP_chrif_load_scdata_post ) {
+ if (HPMHooks.count.HP_chrif_load_scdata_post > 0) {
bool (*postHookFunc) (bool retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_load_scdata_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_load_scdata_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_load_scdata_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -6156,14 +7588,14 @@ bool HP_chrif_load_scdata(int fd) {
}
void HP_chrif_update_ip(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chrif_update_ip_pre ) {
+ if (HPMHooks.count.HP_chrif_update_ip_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_update_ip_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_update_ip_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_update_ip_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6171,9 +7603,9 @@ void HP_chrif_update_ip(int fd) {
{
HPMHooks.source.chrif.update_ip(fd);
}
- if( HPMHooks.count.HP_chrif_update_ip_post ) {
+ if (HPMHooks.count.HP_chrif_update_ip_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_update_ip_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_update_ip_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_update_ip_post[hIndex].func;
postHookFunc(fd);
}
@@ -6183,14 +7615,14 @@ void HP_chrif_update_ip(int fd) {
int HP_chrif_disconnectplayer(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chrif_disconnectplayer_pre ) {
+ if (HPMHooks.count.HP_chrif_disconnectplayer_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_disconnectplayer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_disconnectplayer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_disconnectplayer_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6198,9 +7630,9 @@ int HP_chrif_disconnectplayer(int fd) {
{
retVal___ = HPMHooks.source.chrif.disconnectplayer(fd);
}
- if( HPMHooks.count.HP_chrif_disconnectplayer_post ) {
+ if (HPMHooks.count.HP_chrif_disconnectplayer_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_disconnectplayer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_disconnectplayer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_disconnectplayer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -6209,14 +7641,14 @@ int HP_chrif_disconnectplayer(int fd) {
}
void HP_chrif_removemap(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chrif_removemap_pre ) {
+ if (HPMHooks.count.HP_chrif_removemap_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_removemap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_removemap_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_removemap_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6224,9 +7656,9 @@ void HP_chrif_removemap(int fd) {
{
HPMHooks.source.chrif.removemap(fd);
}
- if( HPMHooks.count.HP_chrif_removemap_post ) {
+ if (HPMHooks.count.HP_chrif_removemap_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_removemap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_removemap_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_removemap_post[hIndex].func;
postHookFunc(fd);
}
@@ -6236,14 +7668,14 @@ void HP_chrif_removemap(int fd) {
int HP_chrif_updatefamelist_ack(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chrif_updatefamelist_ack_pre ) {
+ if (HPMHooks.count.HP_chrif_updatefamelist_ack_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_updatefamelist_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_updatefamelist_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_updatefamelist_ack_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6251,9 +7683,9 @@ int HP_chrif_updatefamelist_ack(int fd) {
{
retVal___ = HPMHooks.source.chrif.updatefamelist_ack(fd);
}
- if( HPMHooks.count.HP_chrif_updatefamelist_ack_post ) {
+ if (HPMHooks.count.HP_chrif_updatefamelist_ack_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_updatefamelist_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_updatefamelist_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_updatefamelist_ack_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -6262,14 +7694,14 @@ int HP_chrif_updatefamelist_ack(int fd) {
}
void HP_chrif_keepalive(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chrif_keepalive_pre ) {
+ if (HPMHooks.count.HP_chrif_keepalive_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_keepalive_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_keepalive_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_keepalive_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6277,9 +7709,9 @@ void HP_chrif_keepalive(int fd) {
{
HPMHooks.source.chrif.keepalive(fd);
}
- if( HPMHooks.count.HP_chrif_keepalive_post ) {
+ if (HPMHooks.count.HP_chrif_keepalive_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_keepalive_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_keepalive_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_keepalive_post[hIndex].func;
postHookFunc(fd);
}
@@ -6288,14 +7720,14 @@ void HP_chrif_keepalive(int fd) {
}
void HP_chrif_keepalive_ack(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chrif_keepalive_ack_pre ) {
+ if (HPMHooks.count.HP_chrif_keepalive_ack_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_keepalive_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_keepalive_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_keepalive_ack_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6303,9 +7735,9 @@ void HP_chrif_keepalive_ack(int fd) {
{
HPMHooks.source.chrif.keepalive_ack(fd);
}
- if( HPMHooks.count.HP_chrif_keepalive_ack_post ) {
+ if (HPMHooks.count.HP_chrif_keepalive_ack_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_keepalive_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_keepalive_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_keepalive_ack_post[hIndex].func;
postHookFunc(fd);
}
@@ -6314,14 +7746,14 @@ void HP_chrif_keepalive_ack(int fd) {
}
void HP_chrif_deadopt(int father_id, int mother_id, int child_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_chrif_deadopt_pre ) {
+ if (HPMHooks.count.HP_chrif_deadopt_pre > 0) {
void (*preHookFunc) (int *father_id, int *mother_id, int *child_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_deadopt_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_deadopt_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_deadopt_pre[hIndex].func;
preHookFunc(&father_id, &mother_id, &child_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6329,9 +7761,9 @@ void HP_chrif_deadopt(int father_id, int mother_id, int child_id) {
{
HPMHooks.source.chrif.deadopt(father_id, mother_id, child_id);
}
- if( HPMHooks.count.HP_chrif_deadopt_post ) {
+ if (HPMHooks.count.HP_chrif_deadopt_post > 0) {
void (*postHookFunc) (int father_id, int mother_id, int child_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_deadopt_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_deadopt_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_deadopt_post[hIndex].func;
postHookFunc(father_id, mother_id, child_id);
}
@@ -6340,14 +7772,14 @@ void HP_chrif_deadopt(int father_id, int mother_id, int child_id) {
}
void HP_chrif_authfail(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_chrif_authfail_pre ) {
+ if (HPMHooks.count.HP_chrif_authfail_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_authfail_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_authfail_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_authfail_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6355,9 +7787,9 @@ void HP_chrif_authfail(int fd) {
{
HPMHooks.source.chrif.authfail(fd);
}
- if( HPMHooks.count.HP_chrif_authfail_post ) {
+ if (HPMHooks.count.HP_chrif_authfail_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_authfail_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_authfail_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_authfail_post[hIndex].func;
postHookFunc(fd);
}
@@ -6366,14 +7798,14 @@ void HP_chrif_authfail(int fd) {
}
void HP_chrif_on_ready(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_chrif_on_ready_pre ) {
+ if (HPMHooks.count.HP_chrif_on_ready_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_on_ready_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_on_ready_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_on_ready_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6381,9 +7813,9 @@ void HP_chrif_on_ready(void) {
{
HPMHooks.source.chrif.on_ready();
}
- if( HPMHooks.count.HP_chrif_on_ready_post ) {
+ if (HPMHooks.count.HP_chrif_on_ready_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_on_ready_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_on_ready_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_on_ready_post[hIndex].func;
postHookFunc();
}
@@ -6392,14 +7824,14 @@ void HP_chrif_on_ready(void) {
}
void HP_chrif_on_disconnect(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_chrif_on_disconnect_pre ) {
+ if (HPMHooks.count.HP_chrif_on_disconnect_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_on_disconnect_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_on_disconnect_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_on_disconnect_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6407,9 +7839,9 @@ void HP_chrif_on_disconnect(void) {
{
HPMHooks.source.chrif.on_disconnect();
}
- if( HPMHooks.count.HP_chrif_on_disconnect_post ) {
+ if (HPMHooks.count.HP_chrif_on_disconnect_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_on_disconnect_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_on_disconnect_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_on_disconnect_post[hIndex].func;
postHookFunc();
}
@@ -6419,14 +7851,14 @@ void HP_chrif_on_disconnect(void) {
int HP_chrif_parse(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_chrif_parse_pre ) {
+ if (HPMHooks.count.HP_chrif_parse_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_parse_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_parse_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_parse_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6434,9 +7866,9 @@ int HP_chrif_parse(int fd) {
{
retVal___ = HPMHooks.source.chrif.parse(fd);
}
- if( HPMHooks.count.HP_chrif_parse_post ) {
+ if (HPMHooks.count.HP_chrif_parse_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_parse_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_parse_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_parse_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -6445,14 +7877,14 @@ int HP_chrif_parse(int fd) {
}
void HP_chrif_save_scdata_single(int account_id, int char_id, short type, struct status_change_entry *sce) {
int hIndex = 0;
- if( HPMHooks.count.HP_chrif_save_scdata_single_pre ) {
+ if (HPMHooks.count.HP_chrif_save_scdata_single_pre > 0) {
void (*preHookFunc) (int *account_id, int *char_id, short *type, struct status_change_entry **sce);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_save_scdata_single_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_save_scdata_single_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_save_scdata_single_pre[hIndex].func;
preHookFunc(&account_id, &char_id, &type, &sce);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6460,9 +7892,9 @@ void HP_chrif_save_scdata_single(int account_id, int char_id, short type, struct
{
HPMHooks.source.chrif.save_scdata_single(account_id, char_id, type, sce);
}
- if( HPMHooks.count.HP_chrif_save_scdata_single_post ) {
+ if (HPMHooks.count.HP_chrif_save_scdata_single_post > 0) {
void (*postHookFunc) (int account_id, int char_id, short type, struct status_change_entry *sce);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_save_scdata_single_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_save_scdata_single_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_save_scdata_single_post[hIndex].func;
postHookFunc(account_id, char_id, type, sce);
}
@@ -6471,14 +7903,14 @@ void HP_chrif_save_scdata_single(int account_id, int char_id, short type, struct
}
void HP_chrif_del_scdata_single(int account_id, int char_id, short type) {
int hIndex = 0;
- if( HPMHooks.count.HP_chrif_del_scdata_single_pre ) {
+ if (HPMHooks.count.HP_chrif_del_scdata_single_pre > 0) {
void (*preHookFunc) (int *account_id, int *char_id, short *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_del_scdata_single_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_del_scdata_single_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chrif_del_scdata_single_pre[hIndex].func;
preHookFunc(&account_id, &char_id, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6486,27 +7918,750 @@ void HP_chrif_del_scdata_single(int account_id, int char_id, short type) {
{
HPMHooks.source.chrif.del_scdata_single(account_id, char_id, type);
}
- if( HPMHooks.count.HP_chrif_del_scdata_single_post ) {
+ if (HPMHooks.count.HP_chrif_del_scdata_single_post > 0) {
void (*postHookFunc) (int account_id, int char_id, short type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_del_scdata_single_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chrif_del_scdata_single_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chrif_del_scdata_single_post[hIndex].func;
postHookFunc(account_id, char_id, type);
}
}
return;
}
+/* clan_interface */
+void HP_clan_init(bool minimal) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clan_init_pre > 0) {
+ void (*preHookFunc) (bool *minimal);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_init_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clan_init_pre[hIndex].func;
+ preHookFunc(&minimal);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clan.init(minimal);
+ }
+ if (HPMHooks.count.HP_clan_init_post > 0) {
+ void (*postHookFunc) (bool minimal);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_init_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clan_init_post[hIndex].func;
+ postHookFunc(minimal);
+ }
+ }
+ return;
+}
+void HP_clan_final(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clan_final_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_final_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clan_final_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clan.final();
+ }
+ if (HPMHooks.count.HP_clan_final_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_final_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clan_final_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+bool HP_clan_config_read(bool reload) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_clan_config_read_pre > 0) {
+ bool (*preHookFunc) (bool *reload);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_config_read_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clan_config_read_pre[hIndex].func;
+ retVal___ = preHookFunc(&reload);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.clan.config_read(reload);
+ }
+ if (HPMHooks.count.HP_clan_config_read_post > 0) {
+ bool (*postHookFunc) (bool retVal___, bool reload);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_config_read_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clan_config_read_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, reload);
+ }
+ }
+ return retVal___;
+}
+void HP_clan_config_read_additional_settings(struct config_setting_t *settings, const char *source) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clan_config_read_additional_settings_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **settings, const char **source);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_config_read_additional_settings_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clan_config_read_additional_settings_pre[hIndex].func;
+ preHookFunc(&settings, &source);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clan.config_read_additional_settings(settings, source);
+ }
+ if (HPMHooks.count.HP_clan_config_read_additional_settings_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *settings, const char *source);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_config_read_additional_settings_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clan_config_read_additional_settings_post[hIndex].func;
+ postHookFunc(settings, source);
+ }
+ }
+ return;
+}
+void HP_clan_read_db(struct config_setting_t *settings, const char *source, bool reload) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clan_read_db_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **settings, const char **source, bool *reload);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_read_db_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clan_read_db_pre[hIndex].func;
+ preHookFunc(&settings, &source, &reload);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clan.read_db(settings, source, reload);
+ }
+ if (HPMHooks.count.HP_clan_read_db_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *settings, const char *source, bool reload);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_read_db_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clan_read_db_post[hIndex].func;
+ postHookFunc(settings, source, reload);
+ }
+ }
+ return;
+}
+int HP_clan_read_db_sub(struct config_setting_t *settings, const char *source, bool reload) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_clan_read_db_sub_pre > 0) {
+ int (*preHookFunc) (struct config_setting_t **settings, const char **source, bool *reload);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_read_db_sub_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clan_read_db_sub_pre[hIndex].func;
+ retVal___ = preHookFunc(&settings, &source, &reload);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.clan.read_db_sub(settings, source, reload);
+ }
+ if (HPMHooks.count.HP_clan_read_db_sub_post > 0) {
+ int (*postHookFunc) (int retVal___, struct config_setting_t *settings, const char *source, bool reload);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_read_db_sub_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clan_read_db_sub_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, settings, source, reload);
+ }
+ }
+ return retVal___;
+}
+void HP_clan_read_db_additional_fields(struct clan *entry, struct config_setting_t *t, int n, const char *source) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clan_read_db_additional_fields_pre > 0) {
+ void (*preHookFunc) (struct clan **entry, struct config_setting_t **t, int *n, const char **source);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_read_db_additional_fields_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clan_read_db_additional_fields_pre[hIndex].func;
+ preHookFunc(&entry, &t, &n, &source);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clan.read_db_additional_fields(entry, t, n, source);
+ }
+ if (HPMHooks.count.HP_clan_read_db_additional_fields_post > 0) {
+ void (*postHookFunc) (struct clan *entry, struct config_setting_t *t, int n, const char *source);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_read_db_additional_fields_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clan_read_db_additional_fields_post[hIndex].func;
+ postHookFunc(entry, t, n, source);
+ }
+ }
+ return;
+}
+void HP_clan_read_buffs(struct clan *c, struct config_setting_t *buff, const char *source) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clan_read_buffs_pre > 0) {
+ void (*preHookFunc) (struct clan **c, struct config_setting_t **buff, const char **source);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_read_buffs_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clan_read_buffs_pre[hIndex].func;
+ preHookFunc(&c, &buff, &source);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clan.read_buffs(c, buff, source);
+ }
+ if (HPMHooks.count.HP_clan_read_buffs_post > 0) {
+ void (*postHookFunc) (struct clan *c, struct config_setting_t *buff, const char *source);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_read_buffs_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clan_read_buffs_post[hIndex].func;
+ postHookFunc(c, buff, source);
+ }
+ }
+ return;
+}
+struct clan* HP_clan_search(int clan_id) {
+ int hIndex = 0;
+ struct clan* retVal___ = NULL;
+ if (HPMHooks.count.HP_clan_search_pre > 0) {
+ struct clan* (*preHookFunc) (int *clan_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_search_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clan_search_pre[hIndex].func;
+ retVal___ = preHookFunc(&clan_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.clan.search(clan_id);
+ }
+ if (HPMHooks.count.HP_clan_search_post > 0) {
+ struct clan* (*postHookFunc) (struct clan* retVal___, int clan_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_search_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clan_search_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, clan_id);
+ }
+ }
+ return retVal___;
+}
+struct clan* HP_clan_searchname(const char *name) {
+ int hIndex = 0;
+ struct clan* retVal___ = NULL;
+ if (HPMHooks.count.HP_clan_searchname_pre > 0) {
+ struct clan* (*preHookFunc) (const char **name);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_searchname_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clan_searchname_pre[hIndex].func;
+ retVal___ = preHookFunc(&name);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.clan.searchname(name);
+ }
+ if (HPMHooks.count.HP_clan_searchname_post > 0) {
+ struct clan* (*postHookFunc) (struct clan* retVal___, const char *name);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_searchname_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clan_searchname_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, name);
+ }
+ }
+ return retVal___;
+}
+struct map_session_data* HP_clan_getonlinesd(struct clan *c) {
+ int hIndex = 0;
+ struct map_session_data* retVal___ = NULL;
+ if (HPMHooks.count.HP_clan_getonlinesd_pre > 0) {
+ struct map_session_data* (*preHookFunc) (struct clan **c);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_getonlinesd_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clan_getonlinesd_pre[hIndex].func;
+ retVal___ = preHookFunc(&c);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.clan.getonlinesd(c);
+ }
+ if (HPMHooks.count.HP_clan_getonlinesd_post > 0) {
+ struct map_session_data* (*postHookFunc) (struct map_session_data* retVal___, struct clan *c);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_getonlinesd_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clan_getonlinesd_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, c);
+ }
+ }
+ return retVal___;
+}
+int HP_clan_getindex(const struct clan *c, int char_id) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_clan_getindex_pre > 0) {
+ int (*preHookFunc) (const struct clan **c, int *char_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_getindex_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clan_getindex_pre[hIndex].func;
+ retVal___ = preHookFunc(&c, &char_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.clan.getindex(c, char_id);
+ }
+ if (HPMHooks.count.HP_clan_getindex_post > 0) {
+ int (*postHookFunc) (int retVal___, const struct clan *c, int char_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_getindex_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clan_getindex_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, c, char_id);
+ }
+ }
+ return retVal___;
+}
+bool HP_clan_join(struct map_session_data *sd, int clan_id) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_clan_join_pre > 0) {
+ bool (*preHookFunc) (struct map_session_data **sd, int *clan_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_join_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clan_join_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &clan_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.clan.join(sd, clan_id);
+ }
+ if (HPMHooks.count.HP_clan_join_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, int clan_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_join_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clan_join_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, clan_id);
+ }
+ }
+ return retVal___;
+}
+void HP_clan_member_online(struct map_session_data *sd, bool first) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clan_member_online_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, bool *first);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_member_online_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clan_member_online_pre[hIndex].func;
+ preHookFunc(&sd, &first);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clan.member_online(sd, first);
+ }
+ if (HPMHooks.count.HP_clan_member_online_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, bool first);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_member_online_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clan_member_online_post[hIndex].func;
+ postHookFunc(sd, first);
+ }
+ }
+ return;
+}
+bool HP_clan_leave(struct map_session_data *sd, bool first) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_clan_leave_pre > 0) {
+ bool (*preHookFunc) (struct map_session_data **sd, bool *first);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_leave_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clan_leave_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &first);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.clan.leave(sd, first);
+ }
+ if (HPMHooks.count.HP_clan_leave_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, bool first);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_leave_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clan_leave_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, first);
+ }
+ }
+ return retVal___;
+}
+bool HP_clan_send_message(struct map_session_data *sd, const char *mes) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_clan_send_message_pre > 0) {
+ bool (*preHookFunc) (struct map_session_data **sd, const char **mes);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_send_message_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clan_send_message_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &mes);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.clan.send_message(sd, mes);
+ }
+ if (HPMHooks.count.HP_clan_send_message_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, const char *mes);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_send_message_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clan_send_message_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, mes);
+ }
+ }
+ return retVal___;
+}
+void HP_clan_recv_message(struct clan *c, const char *mes, int len) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clan_recv_message_pre > 0) {
+ void (*preHookFunc) (struct clan **c, const char **mes, int *len);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_recv_message_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clan_recv_message_pre[hIndex].func;
+ preHookFunc(&c, &mes, &len);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clan.recv_message(c, mes, len);
+ }
+ if (HPMHooks.count.HP_clan_recv_message_post > 0) {
+ void (*postHookFunc) (struct clan *c, const char *mes, int len);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_recv_message_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clan_recv_message_post[hIndex].func;
+ postHookFunc(c, mes, len);
+ }
+ }
+ return;
+}
+void HP_clan_member_offline(struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clan_member_offline_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_member_offline_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clan_member_offline_pre[hIndex].func;
+ preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clan.member_offline(sd);
+ }
+ if (HPMHooks.count.HP_clan_member_offline_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_member_offline_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clan_member_offline_post[hIndex].func;
+ postHookFunc(sd);
+ }
+ }
+ return;
+}
+void HP_clan_set_constants(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clan_set_constants_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_set_constants_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clan_set_constants_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clan.set_constants();
+ }
+ if (HPMHooks.count.HP_clan_set_constants_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_set_constants_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clan_set_constants_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+int HP_clan_get_id(const struct block_list *bl) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_clan_get_id_pre > 0) {
+ int (*preHookFunc) (const struct block_list **bl);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_get_id_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clan_get_id_pre[hIndex].func;
+ retVal___ = preHookFunc(&bl);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.clan.get_id(bl);
+ }
+ if (HPMHooks.count.HP_clan_get_id_post > 0) {
+ int (*postHookFunc) (int retVal___, const struct block_list *bl);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_get_id_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clan_get_id_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, bl);
+ }
+ }
+ return retVal___;
+}
+void HP_clan_buff_start(struct map_session_data *sd, struct clan *c) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clan_buff_start_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, struct clan **c);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_buff_start_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clan_buff_start_pre[hIndex].func;
+ preHookFunc(&sd, &c);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clan.buff_start(sd, c);
+ }
+ if (HPMHooks.count.HP_clan_buff_start_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, struct clan *c);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_buff_start_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clan_buff_start_post[hIndex].func;
+ postHookFunc(sd, c);
+ }
+ }
+ return;
+}
+void HP_clan_buff_end(struct map_session_data *sd, struct clan *c) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clan_buff_end_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, struct clan **c);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_buff_end_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clan_buff_end_pre[hIndex].func;
+ preHookFunc(&sd, &c);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clan.buff_end(sd, c);
+ }
+ if (HPMHooks.count.HP_clan_buff_end_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, struct clan *c);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_buff_end_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clan_buff_end_post[hIndex].func;
+ postHookFunc(sd, c);
+ }
+ }
+ return;
+}
+void HP_clan_reload(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clan_reload_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_reload_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clan_reload_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clan.reload();
+ }
+ if (HPMHooks.count.HP_clan_reload_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_reload_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clan_reload_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+int HP_clan_rejoin(struct map_session_data *sd, va_list ap) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_clan_rejoin_pre > 0) {
+ int (*preHookFunc) (struct map_session_data **sd, va_list ap);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_rejoin_pre; hIndex++) {
+ va_list ap___copy; va_copy(ap___copy, ap);
+ preHookFunc = HPMHooks.list.HP_clan_rejoin_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, ap___copy);
+ va_end(ap___copy);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ va_list ap___copy; va_copy(ap___copy, ap);
+ retVal___ = HPMHooks.source.clan.rejoin(sd, ap___copy);
+ va_end(ap___copy);
+ }
+ if (HPMHooks.count.HP_clan_rejoin_post > 0) {
+ int (*postHookFunc) (int retVal___, struct map_session_data *sd, va_list ap);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_rejoin_post; hIndex++) {
+ va_list ap___copy; va_copy(ap___copy, ap);
+ postHookFunc = HPMHooks.list.HP_clan_rejoin_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, ap___copy);
+ va_end(ap___copy);
+ }
+ }
+ return retVal___;
+}
+int HP_clan_inactivity_kick(int tid, int64 tick, int id, intptr_t data) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_clan_inactivity_kick_pre > 0) {
+ int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_inactivity_kick_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clan_inactivity_kick_pre[hIndex].func;
+ retVal___ = preHookFunc(&tid, &tick, &id, &data);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.clan.inactivity_kick(tid, tick, id, data);
+ }
+ if (HPMHooks.count.HP_clan_inactivity_kick_post > 0) {
+ int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_inactivity_kick_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clan_inactivity_kick_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, tid, tick, id, data);
+ }
+ }
+ return retVal___;
+}
+int HP_clan_request_kickoffline(int tid, int64 tick, int id, intptr_t data) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_clan_request_kickoffline_pre > 0) {
+ int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_request_kickoffline_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clan_request_kickoffline_pre[hIndex].func;
+ retVal___ = preHookFunc(&tid, &tick, &id, &data);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.clan.request_kickoffline(tid, tick, id, data);
+ }
+ if (HPMHooks.count.HP_clan_request_kickoffline_post > 0) {
+ int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_request_kickoffline_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clan_request_kickoffline_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, tid, tick, id, data);
+ }
+ }
+ return retVal___;
+}
+int HP_clan_request_membercount(int tid, int64 tick, int id, intptr_t data) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_clan_request_membercount_pre > 0) {
+ int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_request_membercount_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clan_request_membercount_pre[hIndex].func;
+ retVal___ = preHookFunc(&tid, &tick, &id, &data);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.clan.request_membercount(tid, tick, id, data);
+ }
+ if (HPMHooks.count.HP_clan_request_membercount_post > 0) {
+ int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clan_request_membercount_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clan_request_membercount_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, tid, tick, id, data);
+ }
+ }
+ return retVal___;
+}
/* clif_interface */
int HP_clif_init(bool minimal) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_clif_init_pre ) {
+ if (HPMHooks.count.HP_clif_init_pre > 0) {
int (*preHookFunc) (bool *minimal);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_init_pre[hIndex].func;
retVal___ = preHookFunc(&minimal);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6514,9 +8669,9 @@ int HP_clif_init(bool minimal) {
{
retVal___ = HPMHooks.source.clif.init(minimal);
}
- if( HPMHooks.count.HP_clif_init_post ) {
+ if (HPMHooks.count.HP_clif_init_post > 0) {
int (*postHookFunc) (int retVal___, bool minimal);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_init_post[hIndex].func;
retVal___ = postHookFunc(retVal___, minimal);
}
@@ -6525,14 +8680,14 @@ int HP_clif_init(bool minimal) {
}
void HP_clif_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_final_pre ) {
+ if (HPMHooks.count.HP_clif_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6540,9 +8695,9 @@ void HP_clif_final(void) {
{
HPMHooks.source.clif.final();
}
- if( HPMHooks.count.HP_clif_final_post ) {
+ if (HPMHooks.count.HP_clif_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_final_post[hIndex].func;
postHookFunc();
}
@@ -6552,14 +8707,14 @@ void HP_clif_final(void) {
bool HP_clif_setip(const char *ip) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_clif_setip_pre ) {
+ if (HPMHooks.count.HP_clif_setip_pre > 0) {
bool (*preHookFunc) (const char **ip);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_setip_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_setip_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_setip_pre[hIndex].func;
retVal___ = preHookFunc(&ip);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6567,9 +8722,9 @@ bool HP_clif_setip(const char *ip) {
{
retVal___ = HPMHooks.source.clif.setip(ip);
}
- if( HPMHooks.count.HP_clif_setip_post ) {
+ if (HPMHooks.count.HP_clif_setip_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *ip);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_setip_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_setip_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_setip_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ip);
}
@@ -6579,14 +8734,14 @@ bool HP_clif_setip(const char *ip) {
bool HP_clif_setbindip(const char *ip) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_clif_setbindip_pre ) {
+ if (HPMHooks.count.HP_clif_setbindip_pre > 0) {
bool (*preHookFunc) (const char **ip);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_setbindip_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_setbindip_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_setbindip_pre[hIndex].func;
retVal___ = preHookFunc(&ip);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6594,9 +8749,9 @@ bool HP_clif_setbindip(const char *ip) {
{
retVal___ = HPMHooks.source.clif.setbindip(ip);
}
- if( HPMHooks.count.HP_clif_setbindip_post ) {
+ if (HPMHooks.count.HP_clif_setbindip_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *ip);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_setbindip_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_setbindip_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_setbindip_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ip);
}
@@ -6605,14 +8760,14 @@ bool HP_clif_setbindip(const char *ip) {
}
void HP_clif_setport(uint16 port) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_setport_pre ) {
+ if (HPMHooks.count.HP_clif_setport_pre > 0) {
void (*preHookFunc) (uint16 *port);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_setport_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_setport_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_setport_pre[hIndex].func;
preHookFunc(&port);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6620,9 +8775,9 @@ void HP_clif_setport(uint16 port) {
{
HPMHooks.source.clif.setport(port);
}
- if( HPMHooks.count.HP_clif_setport_post ) {
+ if (HPMHooks.count.HP_clif_setport_post > 0) {
void (*postHookFunc) (uint16 port);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_setport_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_setport_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_setport_post[hIndex].func;
postHookFunc(port);
}
@@ -6632,14 +8787,14 @@ void HP_clif_setport(uint16 port) {
uint32 HP_clif_refresh_ip(void) {
int hIndex = 0;
uint32 retVal___ = 0;
- if( HPMHooks.count.HP_clif_refresh_ip_pre ) {
+ if (HPMHooks.count.HP_clif_refresh_ip_pre > 0) {
uint32 (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_refresh_ip_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_refresh_ip_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_refresh_ip_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6647,9 +8802,9 @@ uint32 HP_clif_refresh_ip(void) {
{
retVal___ = HPMHooks.source.clif.refresh_ip();
}
- if( HPMHooks.count.HP_clif_refresh_ip_post ) {
+ if (HPMHooks.count.HP_clif_refresh_ip_post > 0) {
uint32 (*postHookFunc) (uint32 retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_refresh_ip_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_refresh_ip_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_refresh_ip_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -6659,14 +8814,14 @@ uint32 HP_clif_refresh_ip(void) {
bool HP_clif_send(const void *buf, int len, struct block_list *bl, enum send_target type) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_clif_send_pre ) {
+ if (HPMHooks.count.HP_clif_send_pre > 0) {
bool (*preHookFunc) (const void **buf, int *len, struct block_list **bl, enum send_target *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_send_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_send_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_send_pre[hIndex].func;
retVal___ = preHookFunc(&buf, &len, &bl, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6674,9 +8829,9 @@ bool HP_clif_send(const void *buf, int len, struct block_list *bl, enum send_tar
{
retVal___ = HPMHooks.source.clif.send(buf, len, bl, type);
}
- if( HPMHooks.count.HP_clif_send_post ) {
+ if (HPMHooks.count.HP_clif_send_post > 0) {
bool (*postHookFunc) (bool retVal___, const void *buf, int len, struct block_list *bl, enum send_target type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_send_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_send_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_send_post[hIndex].func;
retVal___ = postHookFunc(retVal___, buf, len, bl, type);
}
@@ -6686,16 +8841,16 @@ bool HP_clif_send(const void *buf, int len, struct block_list *bl, enum send_tar
int HP_clif_send_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_clif_send_sub_pre ) {
+ if (HPMHooks.count.HP_clif_send_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_send_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_send_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_clif_send_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6705,9 +8860,9 @@ int HP_clif_send_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.clif.send_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_clif_send_sub_post ) {
+ if (HPMHooks.count.HP_clif_send_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_send_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_send_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_clif_send_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -6719,14 +8874,14 @@ int HP_clif_send_sub(struct block_list *bl, va_list ap) {
int HP_clif_send_actual(int fd, void *buf, int len) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_clif_send_actual_pre ) {
+ if (HPMHooks.count.HP_clif_send_actual_pre > 0) {
int (*preHookFunc) (int *fd, void **buf, int *len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_send_actual_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_send_actual_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_send_actual_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &buf, &len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6734,9 +8889,9 @@ int HP_clif_send_actual(int fd, void *buf, int len) {
{
retVal___ = HPMHooks.source.clif.send_actual(fd, buf, len);
}
- if( HPMHooks.count.HP_clif_send_actual_post ) {
+ if (HPMHooks.count.HP_clif_send_actual_post > 0) {
int (*postHookFunc) (int retVal___, int fd, void *buf, int len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_send_actual_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_send_actual_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_send_actual_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, buf, len);
}
@@ -6746,14 +8901,14 @@ int HP_clif_send_actual(int fd, void *buf, int len) {
int HP_clif_parse(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_clif_parse_pre ) {
+ if (HPMHooks.count.HP_clif_parse_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_parse_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_parse_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_parse_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6761,9 +8916,9 @@ int HP_clif_parse(int fd) {
{
retVal___ = HPMHooks.source.clif.parse(fd);
}
- if( HPMHooks.count.HP_clif_parse_post ) {
+ if (HPMHooks.count.HP_clif_parse_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_parse_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_parse_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_parse_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -6773,14 +8928,14 @@ int HP_clif_parse(int fd) {
const struct s_packet_db* HP_clif_packet(int packet_id) {
int hIndex = 0;
const struct s_packet_db* retVal___ = NULL;
- if( HPMHooks.count.HP_clif_packet_pre ) {
+ if (HPMHooks.count.HP_clif_packet_pre > 0) {
const struct s_packet_db* (*preHookFunc) (int *packet_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_packet_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_packet_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_packet_pre[hIndex].func;
retVal___ = preHookFunc(&packet_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6788,9 +8943,9 @@ const struct s_packet_db* HP_clif_packet(int packet_id) {
{
retVal___ = HPMHooks.source.clif.packet(packet_id);
}
- if( HPMHooks.count.HP_clif_packet_post ) {
+ if (HPMHooks.count.HP_clif_packet_post > 0) {
const struct s_packet_db* (*postHookFunc) (const struct s_packet_db* retVal___, int packet_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_packet_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_packet_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_packet_post[hIndex].func;
retVal___ = postHookFunc(retVal___, packet_id);
}
@@ -6800,14 +8955,14 @@ const struct s_packet_db* HP_clif_packet(int packet_id) {
unsigned short HP_clif_parse_cmd(int fd, struct map_session_data *sd) {
int hIndex = 0;
unsigned short retVal___ = 0;
- if( HPMHooks.count.HP_clif_parse_cmd_pre ) {
+ if (HPMHooks.count.HP_clif_parse_cmd_pre > 0) {
unsigned short (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_parse_cmd_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_parse_cmd_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_parse_cmd_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6815,9 +8970,9 @@ unsigned short HP_clif_parse_cmd(int fd, struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.clif.parse_cmd(fd, sd);
}
- if( HPMHooks.count.HP_clif_parse_cmd_post ) {
+ if (HPMHooks.count.HP_clif_parse_cmd_post > 0) {
unsigned short (*postHookFunc) (unsigned short retVal___, int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_parse_cmd_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_parse_cmd_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_parse_cmd_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, sd);
}
@@ -6827,14 +8982,14 @@ unsigned short HP_clif_parse_cmd(int fd, struct map_session_data *sd) {
unsigned short HP_clif_decrypt_cmd(int cmd, struct map_session_data *sd) {
int hIndex = 0;
unsigned short retVal___ = 0;
- if( HPMHooks.count.HP_clif_decrypt_cmd_pre ) {
+ if (HPMHooks.count.HP_clif_decrypt_cmd_pre > 0) {
unsigned short (*preHookFunc) (int *cmd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_decrypt_cmd_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_decrypt_cmd_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_decrypt_cmd_pre[hIndex].func;
retVal___ = preHookFunc(&cmd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -6842,9 +8997,9 @@ unsigned short HP_clif_decrypt_cmd(int cmd, struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.clif.decrypt_cmd(cmd, sd);
}
- if( HPMHooks.count.HP_clif_decrypt_cmd_post ) {
+ if (HPMHooks.count.HP_clif_decrypt_cmd_post > 0) {
unsigned short (*postHookFunc) (unsigned short retVal___, int cmd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_decrypt_cmd_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_decrypt_cmd_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_decrypt_cmd_post[hIndex].func;
retVal___ = postHookFunc(retVal___, cmd, sd);
}
@@ -6853,14 +9008,14 @@ unsigned short HP_clif_decrypt_cmd(int cmd, struct map_session_data *sd) {
}
void HP_clif_authok(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_authok_pre ) {
+ if (HPMHooks.count.HP_clif_authok_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_authok_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_authok_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_authok_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6868,25 +9023,51 @@ void HP_clif_authok(struct map_session_data *sd) {
{
HPMHooks.source.clif.authok(sd);
}
- if( HPMHooks.count.HP_clif_authok_post ) {
+ if (HPMHooks.count.HP_clif_authok_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_authok_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_authok_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_authok_post[hIndex].func;
postHookFunc(sd);
}
}
return;
}
+void HP_clif_auth_error(int fd, int errorCode) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_auth_error_pre > 0) {
+ void (*preHookFunc) (int *fd, int *errorCode);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_auth_error_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_auth_error_pre[hIndex].func;
+ preHookFunc(&fd, &errorCode);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.auth_error(fd, errorCode);
+ }
+ if (HPMHooks.count.HP_clif_auth_error_post > 0) {
+ void (*postHookFunc) (int fd, int errorCode);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_auth_error_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_auth_error_post[hIndex].func;
+ postHookFunc(fd, errorCode);
+ }
+ }
+ return;
+}
void HP_clif_authrefuse(int fd, uint8 error_code) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_authrefuse_pre ) {
+ if (HPMHooks.count.HP_clif_authrefuse_pre > 0) {
void (*preHookFunc) (int *fd, uint8 *error_code);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_authrefuse_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_authrefuse_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_authrefuse_pre[hIndex].func;
preHookFunc(&fd, &error_code);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6894,9 +9075,9 @@ void HP_clif_authrefuse(int fd, uint8 error_code) {
{
HPMHooks.source.clif.authrefuse(fd, error_code);
}
- if( HPMHooks.count.HP_clif_authrefuse_post ) {
+ if (HPMHooks.count.HP_clif_authrefuse_post > 0) {
void (*postHookFunc) (int fd, uint8 error_code);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_authrefuse_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_authrefuse_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_authrefuse_post[hIndex].func;
postHookFunc(fd, error_code);
}
@@ -6905,14 +9086,14 @@ void HP_clif_authrefuse(int fd, uint8 error_code) {
}
void HP_clif_authfail_fd(int fd, int type) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_authfail_fd_pre ) {
+ if (HPMHooks.count.HP_clif_authfail_fd_pre > 0) {
void (*preHookFunc) (int *fd, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_authfail_fd_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_authfail_fd_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_authfail_fd_pre[hIndex].func;
preHookFunc(&fd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6920,9 +9101,9 @@ void HP_clif_authfail_fd(int fd, int type) {
{
HPMHooks.source.clif.authfail_fd(fd, type);
}
- if( HPMHooks.count.HP_clif_authfail_fd_post ) {
+ if (HPMHooks.count.HP_clif_authfail_fd_post > 0) {
void (*postHookFunc) (int fd, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_authfail_fd_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_authfail_fd_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_authfail_fd_post[hIndex].func;
postHookFunc(fd, type);
}
@@ -6931,14 +9112,14 @@ void HP_clif_authfail_fd(int fd, int type) {
}
void HP_clif_charselectok(int id, uint8 ok) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_charselectok_pre ) {
+ if (HPMHooks.count.HP_clif_charselectok_pre > 0) {
void (*preHookFunc) (int *id, uint8 *ok);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_charselectok_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_charselectok_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_charselectok_pre[hIndex].func;
preHookFunc(&id, &ok);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6946,9 +9127,9 @@ void HP_clif_charselectok(int id, uint8 ok) {
{
HPMHooks.source.clif.charselectok(id, ok);
}
- if( HPMHooks.count.HP_clif_charselectok_post ) {
+ if (HPMHooks.count.HP_clif_charselectok_post > 0) {
void (*postHookFunc) (int id, uint8 ok);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_charselectok_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_charselectok_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_charselectok_post[hIndex].func;
postHookFunc(id, ok);
}
@@ -6957,14 +9138,14 @@ void HP_clif_charselectok(int id, uint8 ok) {
}
void HP_clif_dropflooritem(struct flooritem_data *fitem) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_dropflooritem_pre ) {
+ if (HPMHooks.count.HP_clif_dropflooritem_pre > 0) {
void (*preHookFunc) (struct flooritem_data **fitem);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_dropflooritem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_dropflooritem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_dropflooritem_pre[hIndex].func;
preHookFunc(&fitem);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6972,9 +9153,9 @@ void HP_clif_dropflooritem(struct flooritem_data *fitem) {
{
HPMHooks.source.clif.dropflooritem(fitem);
}
- if( HPMHooks.count.HP_clif_dropflooritem_post ) {
+ if (HPMHooks.count.HP_clif_dropflooritem_post > 0) {
void (*postHookFunc) (struct flooritem_data *fitem);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_dropflooritem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_dropflooritem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_dropflooritem_post[hIndex].func;
postHookFunc(fitem);
}
@@ -6983,14 +9164,14 @@ void HP_clif_dropflooritem(struct flooritem_data *fitem) {
}
void HP_clif_clearflooritem(struct flooritem_data *fitem, int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_clearflooritem_pre ) {
+ if (HPMHooks.count.HP_clif_clearflooritem_pre > 0) {
void (*preHookFunc) (struct flooritem_data **fitem, int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_clearflooritem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_clearflooritem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_clearflooritem_pre[hIndex].func;
preHookFunc(&fitem, &fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -6998,9 +9179,9 @@ void HP_clif_clearflooritem(struct flooritem_data *fitem, int fd) {
{
HPMHooks.source.clif.clearflooritem(fitem, fd);
}
- if( HPMHooks.count.HP_clif_clearflooritem_post ) {
+ if (HPMHooks.count.HP_clif_clearflooritem_post > 0) {
void (*postHookFunc) (struct flooritem_data *fitem, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_clearflooritem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_clearflooritem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_clearflooritem_post[hIndex].func;
postHookFunc(fitem, fd);
}
@@ -7009,14 +9190,14 @@ void HP_clif_clearflooritem(struct flooritem_data *fitem, int fd) {
}
void HP_clif_additem(struct map_session_data *sd, int n, int amount, int fail) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_additem_pre ) {
+ if (HPMHooks.count.HP_clif_additem_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *n, int *amount, int *fail);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_additem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_additem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_additem_pre[hIndex].func;
preHookFunc(&sd, &n, &amount, &fail);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7024,9 +9205,9 @@ void HP_clif_additem(struct map_session_data *sd, int n, int amount, int fail) {
{
HPMHooks.source.clif.additem(sd, n, amount, fail);
}
- if( HPMHooks.count.HP_clif_additem_post ) {
+ if (HPMHooks.count.HP_clif_additem_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int n, int amount, int fail);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_additem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_additem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_additem_post[hIndex].func;
postHookFunc(sd, n, amount, fail);
}
@@ -7035,14 +9216,14 @@ void HP_clif_additem(struct map_session_data *sd, int n, int amount, int fail) {
}
void HP_clif_dropitem(struct map_session_data *sd, int n, int amount) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_dropitem_pre ) {
+ if (HPMHooks.count.HP_clif_dropitem_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *n, int *amount);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_dropitem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_dropitem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_dropitem_pre[hIndex].func;
preHookFunc(&sd, &n, &amount);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7050,9 +9231,9 @@ void HP_clif_dropitem(struct map_session_data *sd, int n, int amount) {
{
HPMHooks.source.clif.dropitem(sd, n, amount);
}
- if( HPMHooks.count.HP_clif_dropitem_post ) {
+ if (HPMHooks.count.HP_clif_dropitem_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int n, int amount);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_dropitem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_dropitem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_dropitem_post[hIndex].func;
postHookFunc(sd, n, amount);
}
@@ -7061,14 +9242,14 @@ void HP_clif_dropitem(struct map_session_data *sd, int n, int amount) {
}
void HP_clif_delitem(struct map_session_data *sd, int n, int amount, short reason) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_delitem_pre ) {
+ if (HPMHooks.count.HP_clif_delitem_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *n, int *amount, short *reason);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_delitem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_delitem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_delitem_pre[hIndex].func;
preHookFunc(&sd, &n, &amount, &reason);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7076,9 +9257,9 @@ void HP_clif_delitem(struct map_session_data *sd, int n, int amount, short reaso
{
HPMHooks.source.clif.delitem(sd, n, amount, reason);
}
- if( HPMHooks.count.HP_clif_delitem_post ) {
+ if (HPMHooks.count.HP_clif_delitem_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int n, int amount, short reason);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_delitem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_delitem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_delitem_post[hIndex].func;
postHookFunc(sd, n, amount, reason);
}
@@ -7087,14 +9268,14 @@ void HP_clif_delitem(struct map_session_data *sd, int n, int amount, short reaso
}
void HP_clif_takeitem(struct block_list *src, struct block_list *dst) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_takeitem_pre ) {
+ if (HPMHooks.count.HP_clif_takeitem_pre > 0) {
void (*preHookFunc) (struct block_list **src, struct block_list **dst);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_takeitem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_takeitem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_takeitem_pre[hIndex].func;
preHookFunc(&src, &dst);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7102,25 +9283,51 @@ void HP_clif_takeitem(struct block_list *src, struct block_list *dst) {
{
HPMHooks.source.clif.takeitem(src, dst);
}
- if( HPMHooks.count.HP_clif_takeitem_post ) {
+ if (HPMHooks.count.HP_clif_takeitem_post > 0) {
void (*postHookFunc) (struct block_list *src, struct block_list *dst);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_takeitem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_takeitem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_takeitem_post[hIndex].func;
postHookFunc(src, dst);
}
}
return;
}
+void HP_clif_item_movefailed(struct map_session_data *sd, int n) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_item_movefailed_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int *n);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_movefailed_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_item_movefailed_pre[hIndex].func;
+ preHookFunc(&sd, &n);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.item_movefailed(sd, n);
+ }
+ if (HPMHooks.count.HP_clif_item_movefailed_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int n);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_movefailed_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_item_movefailed_post[hIndex].func;
+ postHookFunc(sd, n);
+ }
+ }
+ return;
+}
void HP_clif_item_equip(short idx, struct EQUIPITEM_INFO *p, struct item *i, struct item_data *id, int eqp_pos) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_item_equip_pre ) {
+ if (HPMHooks.count.HP_clif_item_equip_pre > 0) {
void (*preHookFunc) (short *idx, struct EQUIPITEM_INFO **p, struct item **i, struct item_data **id, int *eqp_pos);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_equip_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_equip_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_item_equip_pre[hIndex].func;
preHookFunc(&idx, &p, &i, &id, &eqp_pos);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7128,9 +9335,9 @@ void HP_clif_item_equip(short idx, struct EQUIPITEM_INFO *p, struct item *i, str
{
HPMHooks.source.clif.item_equip(idx, p, i, id, eqp_pos);
}
- if( HPMHooks.count.HP_clif_item_equip_post ) {
+ if (HPMHooks.count.HP_clif_item_equip_post > 0) {
void (*postHookFunc) (short idx, struct EQUIPITEM_INFO *p, struct item *i, struct item_data *id, int eqp_pos);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_equip_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_equip_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_item_equip_post[hIndex].func;
postHookFunc(idx, p, i, id, eqp_pos);
}
@@ -7139,14 +9346,14 @@ void HP_clif_item_equip(short idx, struct EQUIPITEM_INFO *p, struct item *i, str
}
void HP_clif_item_normal(short idx, struct NORMALITEM_INFO *p, struct item *i, struct item_data *id) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_item_normal_pre ) {
+ if (HPMHooks.count.HP_clif_item_normal_pre > 0) {
void (*preHookFunc) (short *idx, struct NORMALITEM_INFO **p, struct item **i, struct item_data **id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_normal_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_normal_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_item_normal_pre[hIndex].func;
preHookFunc(&idx, &p, &i, &id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7154,9 +9361,9 @@ void HP_clif_item_normal(short idx, struct NORMALITEM_INFO *p, struct item *i, s
{
HPMHooks.source.clif.item_normal(idx, p, i, id);
}
- if( HPMHooks.count.HP_clif_item_normal_post ) {
+ if (HPMHooks.count.HP_clif_item_normal_post > 0) {
void (*postHookFunc) (short idx, struct NORMALITEM_INFO *p, struct item *i, struct item_data *id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_normal_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_normal_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_item_normal_post[hIndex].func;
postHookFunc(idx, p, i, id);
}
@@ -7165,14 +9372,14 @@ void HP_clif_item_normal(short idx, struct NORMALITEM_INFO *p, struct item *i, s
}
void HP_clif_arrowequip(struct map_session_data *sd, int val) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_arrowequip_pre ) {
+ if (HPMHooks.count.HP_clif_arrowequip_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *val);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_arrowequip_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_arrowequip_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_arrowequip_pre[hIndex].func;
preHookFunc(&sd, &val);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7180,9 +9387,9 @@ void HP_clif_arrowequip(struct map_session_data *sd, int val) {
{
HPMHooks.source.clif.arrowequip(sd, val);
}
- if( HPMHooks.count.HP_clif_arrowequip_post ) {
+ if (HPMHooks.count.HP_clif_arrowequip_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int val);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_arrowequip_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_arrowequip_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_arrowequip_post[hIndex].func;
postHookFunc(sd, val);
}
@@ -7191,14 +9398,14 @@ void HP_clif_arrowequip(struct map_session_data *sd, int val) {
}
void HP_clif_arrow_fail(struct map_session_data *sd, int type) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_arrow_fail_pre ) {
+ if (HPMHooks.count.HP_clif_arrow_fail_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_arrow_fail_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_arrow_fail_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_arrow_fail_pre[hIndex].func;
preHookFunc(&sd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7206,9 +9413,9 @@ void HP_clif_arrow_fail(struct map_session_data *sd, int type) {
{
HPMHooks.source.clif.arrow_fail(sd, type);
}
- if( HPMHooks.count.HP_clif_arrow_fail_post ) {
+ if (HPMHooks.count.HP_clif_arrow_fail_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_arrow_fail_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_arrow_fail_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_arrow_fail_post[hIndex].func;
postHookFunc(sd, type);
}
@@ -7217,14 +9424,14 @@ void HP_clif_arrow_fail(struct map_session_data *sd, int type) {
}
void HP_clif_use_card(struct map_session_data *sd, int idx) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_use_card_pre ) {
+ if (HPMHooks.count.HP_clif_use_card_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_use_card_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_use_card_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_use_card_pre[hIndex].func;
preHookFunc(&sd, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7232,9 +9439,9 @@ void HP_clif_use_card(struct map_session_data *sd, int idx) {
{
HPMHooks.source.clif.use_card(sd, idx);
}
- if( HPMHooks.count.HP_clif_use_card_post ) {
+ if (HPMHooks.count.HP_clif_use_card_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_use_card_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_use_card_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_use_card_post[hIndex].func;
postHookFunc(sd, idx);
}
@@ -7243,14 +9450,14 @@ void HP_clif_use_card(struct map_session_data *sd, int idx) {
}
void HP_clif_cart_additem(struct map_session_data *sd, int n, int amount, int fail) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_cart_additem_pre ) {
+ if (HPMHooks.count.HP_clif_cart_additem_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *n, int *amount, int *fail);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_cart_additem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_cart_additem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_cart_additem_pre[hIndex].func;
preHookFunc(&sd, &n, &amount, &fail);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7258,9 +9465,9 @@ void HP_clif_cart_additem(struct map_session_data *sd, int n, int amount, int fa
{
HPMHooks.source.clif.cart_additem(sd, n, amount, fail);
}
- if( HPMHooks.count.HP_clif_cart_additem_post ) {
+ if (HPMHooks.count.HP_clif_cart_additem_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int n, int amount, int fail);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_cart_additem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_cart_additem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_cart_additem_post[hIndex].func;
postHookFunc(sd, n, amount, fail);
}
@@ -7269,14 +9476,14 @@ void HP_clif_cart_additem(struct map_session_data *sd, int n, int amount, int fa
}
void HP_clif_cart_delitem(struct map_session_data *sd, int n, int amount) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_cart_delitem_pre ) {
+ if (HPMHooks.count.HP_clif_cart_delitem_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *n, int *amount);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_cart_delitem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_cart_delitem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_cart_delitem_pre[hIndex].func;
preHookFunc(&sd, &n, &amount);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7284,9 +9491,9 @@ void HP_clif_cart_delitem(struct map_session_data *sd, int n, int amount) {
{
HPMHooks.source.clif.cart_delitem(sd, n, amount);
}
- if( HPMHooks.count.HP_clif_cart_delitem_post ) {
+ if (HPMHooks.count.HP_clif_cart_delitem_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int n, int amount);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_cart_delitem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_cart_delitem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_cart_delitem_post[hIndex].func;
postHookFunc(sd, n, amount);
}
@@ -7295,14 +9502,14 @@ void HP_clif_cart_delitem(struct map_session_data *sd, int n, int amount) {
}
void HP_clif_equipitemack(struct map_session_data *sd, int n, int pos, enum e_EQUIP_ITEM_ACK result) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_equipitemack_pre ) {
+ if (HPMHooks.count.HP_clif_equipitemack_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *n, int *pos, enum e_EQUIP_ITEM_ACK *result);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_equipitemack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_equipitemack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_equipitemack_pre[hIndex].func;
preHookFunc(&sd, &n, &pos, &result);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7310,9 +9517,9 @@ void HP_clif_equipitemack(struct map_session_data *sd, int n, int pos, enum e_EQ
{
HPMHooks.source.clif.equipitemack(sd, n, pos, result);
}
- if( HPMHooks.count.HP_clif_equipitemack_post ) {
+ if (HPMHooks.count.HP_clif_equipitemack_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int n, int pos, enum e_EQUIP_ITEM_ACK result);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_equipitemack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_equipitemack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_equipitemack_post[hIndex].func;
postHookFunc(sd, n, pos, result);
}
@@ -7321,14 +9528,14 @@ void HP_clif_equipitemack(struct map_session_data *sd, int n, int pos, enum e_EQ
}
void HP_clif_unequipitemack(struct map_session_data *sd, int n, int pos, enum e_UNEQUIP_ITEM_ACK result) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_unequipitemack_pre ) {
+ if (HPMHooks.count.HP_clif_unequipitemack_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *n, int *pos, enum e_UNEQUIP_ITEM_ACK *result);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_unequipitemack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_unequipitemack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_unequipitemack_pre[hIndex].func;
preHookFunc(&sd, &n, &pos, &result);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7336,9 +9543,9 @@ void HP_clif_unequipitemack(struct map_session_data *sd, int n, int pos, enum e_
{
HPMHooks.source.clif.unequipitemack(sd, n, pos, result);
}
- if( HPMHooks.count.HP_clif_unequipitemack_post ) {
+ if (HPMHooks.count.HP_clif_unequipitemack_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int n, int pos, enum e_UNEQUIP_ITEM_ACK result);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_unequipitemack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_unequipitemack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_unequipitemack_post[hIndex].func;
postHookFunc(sd, n, pos, result);
}
@@ -7347,14 +9554,14 @@ void HP_clif_unequipitemack(struct map_session_data *sd, int n, int pos, enum e_
}
void HP_clif_useitemack(struct map_session_data *sd, int index, int amount, bool ok) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_useitemack_pre ) {
+ if (HPMHooks.count.HP_clif_useitemack_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *index, int *amount, bool *ok);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_useitemack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_useitemack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_useitemack_pre[hIndex].func;
preHookFunc(&sd, &index, &amount, &ok);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7362,25 +9569,25 @@ void HP_clif_useitemack(struct map_session_data *sd, int index, int amount, bool
{
HPMHooks.source.clif.useitemack(sd, index, amount, ok);
}
- if( HPMHooks.count.HP_clif_useitemack_post ) {
+ if (HPMHooks.count.HP_clif_useitemack_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int index, int amount, bool ok);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_useitemack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_useitemack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_useitemack_post[hIndex].func;
postHookFunc(sd, index, amount, ok);
}
}
return;
}
-void HP_clif_addcards(unsigned char *buf, struct item *item) {
+void HP_clif_addcards(struct EQUIPSLOTINFO *buf, struct item *item) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_addcards_pre ) {
- void (*preHookFunc) (unsigned char **buf, struct item **item);
+ if (HPMHooks.count.HP_clif_addcards_pre > 0) {
+ void (*preHookFunc) (struct EQUIPSLOTINFO **buf, struct item **item);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_addcards_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_addcards_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_addcards_pre[hIndex].func;
preHookFunc(&buf, &item);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7388,51 +9595,25 @@ void HP_clif_addcards(unsigned char *buf, struct item *item) {
{
HPMHooks.source.clif.addcards(buf, item);
}
- if( HPMHooks.count.HP_clif_addcards_post ) {
- void (*postHookFunc) (unsigned char *buf, struct item *item);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_addcards_post; hIndex++ ) {
+ if (HPMHooks.count.HP_clif_addcards_post > 0) {
+ void (*postHookFunc) (struct EQUIPSLOTINFO *buf, struct item *item);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_addcards_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_addcards_post[hIndex].func;
postHookFunc(buf, item);
}
}
return;
}
-void HP_clif_addcards2(unsigned short *cards, struct item *item) {
- int hIndex = 0;
- if( HPMHooks.count.HP_clif_addcards2_pre ) {
- void (*preHookFunc) (unsigned short **cards, struct item **item);
- *HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_addcards2_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_clif_addcards2_pre[hIndex].func;
- preHookFunc(&cards, &item);
- }
- if( *HPMforce_return ) {
- *HPMforce_return = false;
- return;
- }
- }
- {
- HPMHooks.source.clif.addcards2(cards, item);
- }
- if( HPMHooks.count.HP_clif_addcards2_post ) {
- void (*postHookFunc) (unsigned short *cards, struct item *item);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_addcards2_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_clif_addcards2_post[hIndex].func;
- postHookFunc(cards, item);
- }
- }
- return;
-}
void HP_clif_item_sub(unsigned char *buf, int n, struct item *i, struct item_data *id, int equip) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_item_sub_pre ) {
+ if (HPMHooks.count.HP_clif_item_sub_pre > 0) {
void (*preHookFunc) (unsigned char **buf, int *n, struct item **i, struct item_data **id, int *equip);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_item_sub_pre[hIndex].func;
preHookFunc(&buf, &n, &i, &id, &equip);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7440,9 +9621,9 @@ void HP_clif_item_sub(unsigned char *buf, int n, struct item *i, struct item_dat
{
HPMHooks.source.clif.item_sub(buf, n, i, id, equip);
}
- if( HPMHooks.count.HP_clif_item_sub_post ) {
+ if (HPMHooks.count.HP_clif_item_sub_post > 0) {
void (*postHookFunc) (unsigned char *buf, int n, struct item *i, struct item_data *id, int equip);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_item_sub_post[hIndex].func;
postHookFunc(buf, n, i, id, equip);
}
@@ -7451,14 +9632,14 @@ void HP_clif_item_sub(unsigned char *buf, int n, struct item *i, struct item_dat
}
void HP_clif_getareachar_item(struct map_session_data *sd, struct flooritem_data *fitem) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_getareachar_item_pre ) {
+ if (HPMHooks.count.HP_clif_getareachar_item_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct flooritem_data **fitem);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_getareachar_item_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_getareachar_item_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_getareachar_item_pre[hIndex].func;
preHookFunc(&sd, &fitem);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7466,9 +9647,9 @@ void HP_clif_getareachar_item(struct map_session_data *sd, struct flooritem_data
{
HPMHooks.source.clif.getareachar_item(sd, fitem);
}
- if( HPMHooks.count.HP_clif_getareachar_item_post ) {
+ if (HPMHooks.count.HP_clif_getareachar_item_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct flooritem_data *fitem);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_getareachar_item_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_getareachar_item_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_getareachar_item_post[hIndex].func;
postHookFunc(sd, fitem);
}
@@ -7477,14 +9658,14 @@ void HP_clif_getareachar_item(struct map_session_data *sd, struct flooritem_data
}
void HP_clif_cart_additem_ack(struct map_session_data *sd, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_cart_additem_ack_pre ) {
+ if (HPMHooks.count.HP_clif_cart_additem_ack_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_cart_additem_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_cart_additem_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_cart_additem_ack_pre[hIndex].func;
preHookFunc(&sd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7492,9 +9673,9 @@ void HP_clif_cart_additem_ack(struct map_session_data *sd, int flag) {
{
HPMHooks.source.clif.cart_additem_ack(sd, flag);
}
- if( HPMHooks.count.HP_clif_cart_additem_ack_post ) {
+ if (HPMHooks.count.HP_clif_cart_additem_ack_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_cart_additem_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_cart_additem_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_cart_additem_ack_post[hIndex].func;
postHookFunc(sd, flag);
}
@@ -7503,14 +9684,14 @@ void HP_clif_cart_additem_ack(struct map_session_data *sd, int flag) {
}
void HP_clif_cashshop_load(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_cashshop_load_pre ) {
+ if (HPMHooks.count.HP_clif_cashshop_load_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_cashshop_load_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_cashshop_load_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_cashshop_load_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7518,25 +9699,51 @@ void HP_clif_cashshop_load(void) {
{
HPMHooks.source.clif.cashshop_load();
}
- if( HPMHooks.count.HP_clif_cashshop_load_post ) {
+ if (HPMHooks.count.HP_clif_cashshop_load_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_cashshop_load_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_cashshop_load_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_cashshop_load_post[hIndex].func;
postHookFunc();
}
}
return;
}
-void HP_clif_package_announce(struct map_session_data *sd, unsigned short nameid, unsigned short containerid) {
+void HP_clif_cashShopSchedule(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_package_announce_pre ) {
- void (*preHookFunc) (struct map_session_data **sd, unsigned short *nameid, unsigned short *containerid);
+ if (HPMHooks.count.HP_clif_cashShopSchedule_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_package_announce_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_cashShopSchedule_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_cashShopSchedule_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.cashShopSchedule(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_cashShopSchedule_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_cashShopSchedule_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_cashShopSchedule_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_package_announce(struct map_session_data *sd, int nameid, int containerid) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_package_announce_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int *nameid, int *containerid);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_package_announce_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_package_announce_pre[hIndex].func;
preHookFunc(&sd, &nameid, &containerid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7544,25 +9751,25 @@ void HP_clif_package_announce(struct map_session_data *sd, unsigned short nameid
{
HPMHooks.source.clif.package_announce(sd, nameid, containerid);
}
- if( HPMHooks.count.HP_clif_package_announce_post ) {
- void (*postHookFunc) (struct map_session_data *sd, unsigned short nameid, unsigned short containerid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_package_announce_post; hIndex++ ) {
+ if (HPMHooks.count.HP_clif_package_announce_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int nameid, int containerid);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_package_announce_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_package_announce_post[hIndex].func;
postHookFunc(sd, nameid, containerid);
}
}
return;
}
-void HP_clif_item_drop_announce(struct map_session_data *sd, unsigned short nameid, char *monsterName) {
+void HP_clif_item_drop_announce(struct map_session_data *sd, int nameid, char *monsterName) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_item_drop_announce_pre ) {
- void (*preHookFunc) (struct map_session_data **sd, unsigned short *nameid, char **monsterName);
+ if (HPMHooks.count.HP_clif_item_drop_announce_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int *nameid, char **monsterName);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_drop_announce_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_drop_announce_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_item_drop_announce_pre[hIndex].func;
preHookFunc(&sd, &nameid, &monsterName);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7570,25 +9777,25 @@ void HP_clif_item_drop_announce(struct map_session_data *sd, unsigned short name
{
HPMHooks.source.clif.item_drop_announce(sd, nameid, monsterName);
}
- if( HPMHooks.count.HP_clif_item_drop_announce_post ) {
- void (*postHookFunc) (struct map_session_data *sd, unsigned short nameid, char *monsterName);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_drop_announce_post; hIndex++ ) {
+ if (HPMHooks.count.HP_clif_item_drop_announce_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int nameid, char *monsterName);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_drop_announce_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_item_drop_announce_post[hIndex].func;
postHookFunc(sd, nameid, monsterName);
}
}
return;
}
-void HP_clif_clearunit_single(int id, clr_type type, int fd) {
+void HP_clif_clearunit_single(int id, enum clr_type type, int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_clearunit_single_pre ) {
- void (*preHookFunc) (int *id, clr_type *type, int *fd);
+ if (HPMHooks.count.HP_clif_clearunit_single_pre > 0) {
+ void (*preHookFunc) (int *id, enum clr_type *type, int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_clearunit_single_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_clearunit_single_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_clearunit_single_pre[hIndex].func;
preHookFunc(&id, &type, &fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7596,25 +9803,25 @@ void HP_clif_clearunit_single(int id, clr_type type, int fd) {
{
HPMHooks.source.clif.clearunit_single(id, type, fd);
}
- if( HPMHooks.count.HP_clif_clearunit_single_post ) {
- void (*postHookFunc) (int id, clr_type type, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_clearunit_single_post; hIndex++ ) {
+ if (HPMHooks.count.HP_clif_clearunit_single_post > 0) {
+ void (*postHookFunc) (int id, enum clr_type type, int fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_clearunit_single_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_clearunit_single_post[hIndex].func;
postHookFunc(id, type, fd);
}
}
return;
}
-void HP_clif_clearunit_area(struct block_list *bl, clr_type type) {
+void HP_clif_clearunit_area(struct block_list *bl, enum clr_type type) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_clearunit_area_pre ) {
- void (*preHookFunc) (struct block_list **bl, clr_type *type);
+ if (HPMHooks.count.HP_clif_clearunit_area_pre > 0) {
+ void (*preHookFunc) (struct block_list **bl, enum clr_type *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_clearunit_area_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_clearunit_area_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_clearunit_area_pre[hIndex].func;
preHookFunc(&bl, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7622,25 +9829,25 @@ void HP_clif_clearunit_area(struct block_list *bl, clr_type type) {
{
HPMHooks.source.clif.clearunit_area(bl, type);
}
- if( HPMHooks.count.HP_clif_clearunit_area_post ) {
- void (*postHookFunc) (struct block_list *bl, clr_type type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_clearunit_area_post; hIndex++ ) {
+ if (HPMHooks.count.HP_clif_clearunit_area_post > 0) {
+ void (*postHookFunc) (struct block_list *bl, enum clr_type type);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_clearunit_area_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_clearunit_area_post[hIndex].func;
postHookFunc(bl, type);
}
}
return;
}
-void HP_clif_clearunit_delayed(struct block_list *bl, clr_type type, int64 tick) {
+void HP_clif_clearunit_delayed(struct block_list *bl, enum clr_type type, int64 tick) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_clearunit_delayed_pre ) {
- void (*preHookFunc) (struct block_list **bl, clr_type *type, int64 *tick);
+ if (HPMHooks.count.HP_clif_clearunit_delayed_pre > 0) {
+ void (*preHookFunc) (struct block_list **bl, enum clr_type *type, int64 *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_clearunit_delayed_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_clearunit_delayed_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_clearunit_delayed_pre[hIndex].func;
preHookFunc(&bl, &type, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7648,9 +9855,9 @@ void HP_clif_clearunit_delayed(struct block_list *bl, clr_type type, int64 tick)
{
HPMHooks.source.clif.clearunit_delayed(bl, type, tick);
}
- if( HPMHooks.count.HP_clif_clearunit_delayed_post ) {
- void (*postHookFunc) (struct block_list *bl, clr_type type, int64 tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_clearunit_delayed_post; hIndex++ ) {
+ if (HPMHooks.count.HP_clif_clearunit_delayed_post > 0) {
+ void (*postHookFunc) (struct block_list *bl, enum clr_type type, int64 tick);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_clearunit_delayed_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_clearunit_delayed_post[hIndex].func;
postHookFunc(bl, type, tick);
}
@@ -7659,14 +9866,14 @@ void HP_clif_clearunit_delayed(struct block_list *bl, clr_type type, int64 tick)
}
void HP_clif_walkok(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_walkok_pre ) {
+ if (HPMHooks.count.HP_clif_walkok_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_walkok_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_walkok_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_walkok_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7674,9 +9881,9 @@ void HP_clif_walkok(struct map_session_data *sd) {
{
HPMHooks.source.clif.walkok(sd);
}
- if( HPMHooks.count.HP_clif_walkok_post ) {
+ if (HPMHooks.count.HP_clif_walkok_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_walkok_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_walkok_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_walkok_post[hIndex].func;
postHookFunc(sd);
}
@@ -7685,14 +9892,14 @@ void HP_clif_walkok(struct map_session_data *sd) {
}
void HP_clif_move(struct unit_data *ud) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_move_pre ) {
+ if (HPMHooks.count.HP_clif_move_pre > 0) {
void (*preHookFunc) (struct unit_data **ud);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_move_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_move_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_move_pre[hIndex].func;
preHookFunc(&ud);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7700,9 +9907,9 @@ void HP_clif_move(struct unit_data *ud) {
{
HPMHooks.source.clif.move(ud);
}
- if( HPMHooks.count.HP_clif_move_post ) {
+ if (HPMHooks.count.HP_clif_move_post > 0) {
void (*postHookFunc) (struct unit_data *ud);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_move_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_move_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_move_post[hIndex].func;
postHookFunc(ud);
}
@@ -7711,14 +9918,14 @@ void HP_clif_move(struct unit_data *ud) {
}
void HP_clif_move2(struct block_list *bl, struct view_data *vd, struct unit_data *ud) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_move2_pre ) {
+ if (HPMHooks.count.HP_clif_move2_pre > 0) {
void (*preHookFunc) (struct block_list **bl, struct view_data **vd, struct unit_data **ud);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_move2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_move2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_move2_pre[hIndex].func;
preHookFunc(&bl, &vd, &ud);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7726,9 +9933,9 @@ void HP_clif_move2(struct block_list *bl, struct view_data *vd, struct unit_data
{
HPMHooks.source.clif.move2(bl, vd, ud);
}
- if( HPMHooks.count.HP_clif_move2_post ) {
+ if (HPMHooks.count.HP_clif_move2_post > 0) {
void (*postHookFunc) (struct block_list *bl, struct view_data *vd, struct unit_data *ud);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_move2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_move2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_move2_post[hIndex].func;
postHookFunc(bl, vd, ud);
}
@@ -7737,14 +9944,14 @@ void HP_clif_move2(struct block_list *bl, struct view_data *vd, struct unit_data
}
void HP_clif_blown(struct block_list *bl) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_blown_pre ) {
+ if (HPMHooks.count.HP_clif_blown_pre > 0) {
void (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_blown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_blown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_blown_pre[hIndex].func;
preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7752,9 +9959,9 @@ void HP_clif_blown(struct block_list *bl) {
{
HPMHooks.source.clif.blown(bl);
}
- if( HPMHooks.count.HP_clif_blown_post ) {
+ if (HPMHooks.count.HP_clif_blown_post > 0) {
void (*postHookFunc) (struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_blown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_blown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_blown_post[hIndex].func;
postHookFunc(bl);
}
@@ -7763,14 +9970,14 @@ void HP_clif_blown(struct block_list *bl) {
}
void HP_clif_slide(struct block_list *bl, int x, int y) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_slide_pre ) {
+ if (HPMHooks.count.HP_clif_slide_pre > 0) {
void (*preHookFunc) (struct block_list **bl, int *x, int *y);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_slide_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_slide_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_slide_pre[hIndex].func;
preHookFunc(&bl, &x, &y);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7778,9 +9985,9 @@ void HP_clif_slide(struct block_list *bl, int x, int y) {
{
HPMHooks.source.clif.slide(bl, x, y);
}
- if( HPMHooks.count.HP_clif_slide_post ) {
+ if (HPMHooks.count.HP_clif_slide_post > 0) {
void (*postHookFunc) (struct block_list *bl, int x, int y);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_slide_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_slide_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_slide_post[hIndex].func;
postHookFunc(bl, x, y);
}
@@ -7789,14 +9996,14 @@ void HP_clif_slide(struct block_list *bl, int x, int y) {
}
void HP_clif_fixpos(struct block_list *bl) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_fixpos_pre ) {
+ if (HPMHooks.count.HP_clif_fixpos_pre > 0) {
void (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_fixpos_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_fixpos_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_fixpos_pre[hIndex].func;
preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7804,9 +10011,9 @@ void HP_clif_fixpos(struct block_list *bl) {
{
HPMHooks.source.clif.fixpos(bl);
}
- if( HPMHooks.count.HP_clif_fixpos_post ) {
+ if (HPMHooks.count.HP_clif_fixpos_post > 0) {
void (*postHookFunc) (struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_fixpos_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_fixpos_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_fixpos_post[hIndex].func;
postHookFunc(bl);
}
@@ -7815,14 +10022,14 @@ void HP_clif_fixpos(struct block_list *bl) {
}
void HP_clif_changelook(struct block_list *bl, int type, int val) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_changelook_pre ) {
+ if (HPMHooks.count.HP_clif_changelook_pre > 0) {
void (*preHookFunc) (struct block_list **bl, int *type, int *val);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_changelook_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_changelook_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_changelook_pre[hIndex].func;
preHookFunc(&bl, &type, &val);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7830,9 +10037,9 @@ void HP_clif_changelook(struct block_list *bl, int type, int val) {
{
HPMHooks.source.clif.changelook(bl, type, val);
}
- if( HPMHooks.count.HP_clif_changelook_post ) {
+ if (HPMHooks.count.HP_clif_changelook_post > 0) {
void (*postHookFunc) (struct block_list *bl, int type, int val);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_changelook_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_changelook_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_changelook_post[hIndex].func;
postHookFunc(bl, type, val);
}
@@ -7841,14 +10048,14 @@ void HP_clif_changelook(struct block_list *bl, int type, int val) {
}
void HP_clif_changetraplook(struct block_list *bl, int val) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_changetraplook_pre ) {
+ if (HPMHooks.count.HP_clif_changetraplook_pre > 0) {
void (*preHookFunc) (struct block_list **bl, int *val);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_changetraplook_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_changetraplook_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_changetraplook_pre[hIndex].func;
preHookFunc(&bl, &val);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7856,9 +10063,9 @@ void HP_clif_changetraplook(struct block_list *bl, int val) {
{
HPMHooks.source.clif.changetraplook(bl, val);
}
- if( HPMHooks.count.HP_clif_changetraplook_post ) {
+ if (HPMHooks.count.HP_clif_changetraplook_post > 0) {
void (*postHookFunc) (struct block_list *bl, int val);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_changetraplook_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_changetraplook_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_changetraplook_post[hIndex].func;
postHookFunc(bl, val);
}
@@ -7867,14 +10074,14 @@ void HP_clif_changetraplook(struct block_list *bl, int val) {
}
void HP_clif_refreshlook(struct block_list *bl, int id, int type, int val, enum send_target target) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_refreshlook_pre ) {
+ if (HPMHooks.count.HP_clif_refreshlook_pre > 0) {
void (*preHookFunc) (struct block_list **bl, int *id, int *type, int *val, enum send_target *target);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_refreshlook_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_refreshlook_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_refreshlook_pre[hIndex].func;
preHookFunc(&bl, &id, &type, &val, &target);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7882,9 +10089,9 @@ void HP_clif_refreshlook(struct block_list *bl, int id, int type, int val, enum
{
HPMHooks.source.clif.refreshlook(bl, id, type, val, target);
}
- if( HPMHooks.count.HP_clif_refreshlook_post ) {
+ if (HPMHooks.count.HP_clif_refreshlook_post > 0) {
void (*postHookFunc) (struct block_list *bl, int id, int type, int val, enum send_target target);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_refreshlook_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_refreshlook_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_refreshlook_post[hIndex].func;
postHookFunc(bl, id, type, val, target);
}
@@ -7893,14 +10100,14 @@ void HP_clif_refreshlook(struct block_list *bl, int id, int type, int val, enum
}
void HP_clif_sendlook(struct block_list *bl, int id, int type, int val, int val2, enum send_target target) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_sendlook_pre ) {
+ if (HPMHooks.count.HP_clif_sendlook_pre > 0) {
void (*preHookFunc) (struct block_list **bl, int *id, int *type, int *val, int *val2, enum send_target *target);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_sendlook_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_sendlook_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_sendlook_pre[hIndex].func;
preHookFunc(&bl, &id, &type, &val, &val2, &target);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7908,9 +10115,9 @@ void HP_clif_sendlook(struct block_list *bl, int id, int type, int val, int val2
{
HPMHooks.source.clif.sendlook(bl, id, type, val, val2, target);
}
- if( HPMHooks.count.HP_clif_sendlook_post ) {
+ if (HPMHooks.count.HP_clif_sendlook_post > 0) {
void (*postHookFunc) (struct block_list *bl, int id, int type, int val, int val2, enum send_target target);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_sendlook_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_sendlook_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_sendlook_post[hIndex].func;
postHookFunc(bl, id, type, val, val2, target);
}
@@ -7919,14 +10126,14 @@ void HP_clif_sendlook(struct block_list *bl, int id, int type, int val, int val2
}
void HP_clif_class_change(struct block_list *bl, int class_, int type, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_class_change_pre ) {
+ if (HPMHooks.count.HP_clif_class_change_pre > 0) {
void (*preHookFunc) (struct block_list **bl, int *class_, int *type, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_class_change_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_class_change_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_class_change_pre[hIndex].func;
preHookFunc(&bl, &class_, &type, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7934,9 +10141,9 @@ void HP_clif_class_change(struct block_list *bl, int class_, int type, struct ma
{
HPMHooks.source.clif.class_change(bl, class_, type, sd);
}
- if( HPMHooks.count.HP_clif_class_change_post ) {
+ if (HPMHooks.count.HP_clif_class_change_post > 0) {
void (*postHookFunc) (struct block_list *bl, int class_, int type, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_class_change_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_class_change_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_class_change_post[hIndex].func;
postHookFunc(bl, class_, type, sd);
}
@@ -7945,14 +10152,14 @@ void HP_clif_class_change(struct block_list *bl, int class_, int type, struct ma
}
void HP_clif_skill_delunit(struct skill_unit *su) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_skill_delunit_pre ) {
+ if (HPMHooks.count.HP_clif_skill_delunit_pre > 0) {
void (*preHookFunc) (struct skill_unit **su);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_delunit_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_delunit_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_skill_delunit_pre[hIndex].func;
preHookFunc(&su);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7960,9 +10167,9 @@ void HP_clif_skill_delunit(struct skill_unit *su) {
{
HPMHooks.source.clif.skill_delunit(su);
}
- if( HPMHooks.count.HP_clif_skill_delunit_post ) {
+ if (HPMHooks.count.HP_clif_skill_delunit_post > 0) {
void (*postHookFunc) (struct skill_unit *su);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_delunit_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_delunit_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_skill_delunit_post[hIndex].func;
postHookFunc(su);
}
@@ -7971,14 +10178,14 @@ void HP_clif_skill_delunit(struct skill_unit *su) {
}
void HP_clif_skillunit_update(struct block_list *bl) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_skillunit_update_pre ) {
+ if (HPMHooks.count.HP_clif_skillunit_update_pre > 0) {
void (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skillunit_update_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skillunit_update_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_skillunit_update_pre[hIndex].func;
preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -7986,9 +10193,9 @@ void HP_clif_skillunit_update(struct block_list *bl) {
{
HPMHooks.source.clif.skillunit_update(bl);
}
- if( HPMHooks.count.HP_clif_skillunit_update_post ) {
+ if (HPMHooks.count.HP_clif_skillunit_update_post > 0) {
void (*postHookFunc) (struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skillunit_update_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skillunit_update_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_skillunit_update_post[hIndex].func;
postHookFunc(bl);
}
@@ -7998,14 +10205,14 @@ void HP_clif_skillunit_update(struct block_list *bl) {
int HP_clif_clearunit_delayed_sub(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_clif_clearunit_delayed_sub_pre ) {
+ if (HPMHooks.count.HP_clif_clearunit_delayed_sub_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_clearunit_delayed_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_clearunit_delayed_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_clearunit_delayed_sub_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8013,9 +10220,9 @@ int HP_clif_clearunit_delayed_sub(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.clif.clearunit_delayed_sub(tid, tick, id, data);
}
- if( HPMHooks.count.HP_clif_clearunit_delayed_sub_post ) {
+ if (HPMHooks.count.HP_clif_clearunit_delayed_sub_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_clearunit_delayed_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_clearunit_delayed_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_clearunit_delayed_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -8024,14 +10231,14 @@ int HP_clif_clearunit_delayed_sub(int tid, int64 tick, int id, intptr_t data) {
}
void HP_clif_set_unit_idle(struct block_list *bl, struct map_session_data *tsd, enum send_target target) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_set_unit_idle_pre ) {
+ if (HPMHooks.count.HP_clif_set_unit_idle_pre > 0) {
void (*preHookFunc) (struct block_list **bl, struct map_session_data **tsd, enum send_target *target);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_set_unit_idle_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_set_unit_idle_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_set_unit_idle_pre[hIndex].func;
preHookFunc(&bl, &tsd, &target);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8039,9 +10246,9 @@ void HP_clif_set_unit_idle(struct block_list *bl, struct map_session_data *tsd,
{
HPMHooks.source.clif.set_unit_idle(bl, tsd, target);
}
- if( HPMHooks.count.HP_clif_set_unit_idle_post ) {
+ if (HPMHooks.count.HP_clif_set_unit_idle_post > 0) {
void (*postHookFunc) (struct block_list *bl, struct map_session_data *tsd, enum send_target target);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_set_unit_idle_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_set_unit_idle_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_set_unit_idle_post[hIndex].func;
postHookFunc(bl, tsd, target);
}
@@ -8050,14 +10257,14 @@ void HP_clif_set_unit_idle(struct block_list *bl, struct map_session_data *tsd,
}
void HP_clif_spawn_unit(struct block_list *bl, enum send_target target) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_spawn_unit_pre ) {
+ if (HPMHooks.count.HP_clif_spawn_unit_pre > 0) {
void (*preHookFunc) (struct block_list **bl, enum send_target *target);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_spawn_unit_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_spawn_unit_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_spawn_unit_pre[hIndex].func;
preHookFunc(&bl, &target);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8065,9 +10272,9 @@ void HP_clif_spawn_unit(struct block_list *bl, enum send_target target) {
{
HPMHooks.source.clif.spawn_unit(bl, target);
}
- if( HPMHooks.count.HP_clif_spawn_unit_post ) {
+ if (HPMHooks.count.HP_clif_spawn_unit_post > 0) {
void (*postHookFunc) (struct block_list *bl, enum send_target target);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_spawn_unit_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_spawn_unit_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_spawn_unit_post[hIndex].func;
postHookFunc(bl, target);
}
@@ -8076,14 +10283,14 @@ void HP_clif_spawn_unit(struct block_list *bl, enum send_target target) {
}
void HP_clif_spawn_unit2(struct block_list *bl, enum send_target target) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_spawn_unit2_pre ) {
+ if (HPMHooks.count.HP_clif_spawn_unit2_pre > 0) {
void (*preHookFunc) (struct block_list **bl, enum send_target *target);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_spawn_unit2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_spawn_unit2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_spawn_unit2_pre[hIndex].func;
preHookFunc(&bl, &target);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8091,9 +10298,9 @@ void HP_clif_spawn_unit2(struct block_list *bl, enum send_target target) {
{
HPMHooks.source.clif.spawn_unit2(bl, target);
}
- if( HPMHooks.count.HP_clif_spawn_unit2_post ) {
+ if (HPMHooks.count.HP_clif_spawn_unit2_post > 0) {
void (*postHookFunc) (struct block_list *bl, enum send_target target);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_spawn_unit2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_spawn_unit2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_spawn_unit2_post[hIndex].func;
postHookFunc(bl, target);
}
@@ -8102,14 +10309,14 @@ void HP_clif_spawn_unit2(struct block_list *bl, enum send_target target) {
}
void HP_clif_set_unit_idle2(struct block_list *bl, struct map_session_data *tsd, enum send_target target) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_set_unit_idle2_pre ) {
+ if (HPMHooks.count.HP_clif_set_unit_idle2_pre > 0) {
void (*preHookFunc) (struct block_list **bl, struct map_session_data **tsd, enum send_target *target);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_set_unit_idle2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_set_unit_idle2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_set_unit_idle2_pre[hIndex].func;
preHookFunc(&bl, &tsd, &target);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8117,9 +10324,9 @@ void HP_clif_set_unit_idle2(struct block_list *bl, struct map_session_data *tsd,
{
HPMHooks.source.clif.set_unit_idle2(bl, tsd, target);
}
- if( HPMHooks.count.HP_clif_set_unit_idle2_post ) {
+ if (HPMHooks.count.HP_clif_set_unit_idle2_post > 0) {
void (*postHookFunc) (struct block_list *bl, struct map_session_data *tsd, enum send_target target);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_set_unit_idle2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_set_unit_idle2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_set_unit_idle2_post[hIndex].func;
postHookFunc(bl, tsd, target);
}
@@ -8128,14 +10335,14 @@ void HP_clif_set_unit_idle2(struct block_list *bl, struct map_session_data *tsd,
}
void HP_clif_set_unit_walking(struct block_list *bl, struct map_session_data *tsd, struct unit_data *ud, enum send_target target) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_set_unit_walking_pre ) {
+ if (HPMHooks.count.HP_clif_set_unit_walking_pre > 0) {
void (*preHookFunc) (struct block_list **bl, struct map_session_data **tsd, struct unit_data **ud, enum send_target *target);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_set_unit_walking_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_set_unit_walking_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_set_unit_walking_pre[hIndex].func;
preHookFunc(&bl, &tsd, &ud, &target);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8143,9 +10350,9 @@ void HP_clif_set_unit_walking(struct block_list *bl, struct map_session_data *ts
{
HPMHooks.source.clif.set_unit_walking(bl, tsd, ud, target);
}
- if( HPMHooks.count.HP_clif_set_unit_walking_post ) {
+ if (HPMHooks.count.HP_clif_set_unit_walking_post > 0) {
void (*postHookFunc) (struct block_list *bl, struct map_session_data *tsd, struct unit_data *ud, enum send_target target);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_set_unit_walking_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_set_unit_walking_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_set_unit_walking_post[hIndex].func;
postHookFunc(bl, tsd, ud, target);
}
@@ -8155,14 +10362,14 @@ void HP_clif_set_unit_walking(struct block_list *bl, struct map_session_data *ts
int HP_clif_calc_walkdelay(struct block_list *bl, int delay, int type, int damage, int div_) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_clif_calc_walkdelay_pre ) {
+ if (HPMHooks.count.HP_clif_calc_walkdelay_pre > 0) {
int (*preHookFunc) (struct block_list **bl, int *delay, int *type, int *damage, int *div_);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_calc_walkdelay_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_calc_walkdelay_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_calc_walkdelay_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &delay, &type, &damage, &div_);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8170,9 +10377,9 @@ int HP_clif_calc_walkdelay(struct block_list *bl, int delay, int type, int damag
{
retVal___ = HPMHooks.source.clif.calc_walkdelay(bl, delay, type, damage, div_);
}
- if( HPMHooks.count.HP_clif_calc_walkdelay_post ) {
+ if (HPMHooks.count.HP_clif_calc_walkdelay_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, int delay, int type, int damage, int div_);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_calc_walkdelay_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_calc_walkdelay_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_calc_walkdelay_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, delay, type, damage, div_);
}
@@ -8181,14 +10388,14 @@ int HP_clif_calc_walkdelay(struct block_list *bl, int delay, int type, int damag
}
void HP_clif_getareachar_skillunit(struct block_list *bl, struct skill_unit *su, enum send_target target) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_getareachar_skillunit_pre ) {
+ if (HPMHooks.count.HP_clif_getareachar_skillunit_pre > 0) {
void (*preHookFunc) (struct block_list **bl, struct skill_unit **su, enum send_target *target);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_getareachar_skillunit_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_getareachar_skillunit_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_getareachar_skillunit_pre[hIndex].func;
preHookFunc(&bl, &su, &target);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8196,9 +10403,9 @@ void HP_clif_getareachar_skillunit(struct block_list *bl, struct skill_unit *su,
{
HPMHooks.source.clif.getareachar_skillunit(bl, su, target);
}
- if( HPMHooks.count.HP_clif_getareachar_skillunit_post ) {
+ if (HPMHooks.count.HP_clif_getareachar_skillunit_post > 0) {
void (*postHookFunc) (struct block_list *bl, struct skill_unit *su, enum send_target target);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_getareachar_skillunit_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_getareachar_skillunit_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_getareachar_skillunit_post[hIndex].func;
postHookFunc(bl, su, target);
}
@@ -8207,14 +10414,14 @@ void HP_clif_getareachar_skillunit(struct block_list *bl, struct skill_unit *su,
}
void HP_clif_getareachar_unit(struct map_session_data *sd, struct block_list *bl) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_getareachar_unit_pre ) {
+ if (HPMHooks.count.HP_clif_getareachar_unit_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_getareachar_unit_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_getareachar_unit_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_getareachar_unit_pre[hIndex].func;
preHookFunc(&sd, &bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8222,9 +10429,9 @@ void HP_clif_getareachar_unit(struct map_session_data *sd, struct block_list *bl
{
HPMHooks.source.clif.getareachar_unit(sd, bl);
}
- if( HPMHooks.count.HP_clif_getareachar_unit_post ) {
+ if (HPMHooks.count.HP_clif_getareachar_unit_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_getareachar_unit_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_getareachar_unit_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_getareachar_unit_post[hIndex].func;
postHookFunc(sd, bl);
}
@@ -8233,14 +10440,14 @@ void HP_clif_getareachar_unit(struct map_session_data *sd, struct block_list *bl
}
void HP_clif_clearchar_skillunit(struct skill_unit *su, int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_clearchar_skillunit_pre ) {
+ if (HPMHooks.count.HP_clif_clearchar_skillunit_pre > 0) {
void (*preHookFunc) (struct skill_unit **su, int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_clearchar_skillunit_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_clearchar_skillunit_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_clearchar_skillunit_pre[hIndex].func;
preHookFunc(&su, &fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8248,9 +10455,9 @@ void HP_clif_clearchar_skillunit(struct skill_unit *su, int fd) {
{
HPMHooks.source.clif.clearchar_skillunit(su, fd);
}
- if( HPMHooks.count.HP_clif_clearchar_skillunit_post ) {
+ if (HPMHooks.count.HP_clif_clearchar_skillunit_post > 0) {
void (*postHookFunc) (struct skill_unit *su, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_clearchar_skillunit_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_clearchar_skillunit_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_clearchar_skillunit_post[hIndex].func;
postHookFunc(su, fd);
}
@@ -8260,16 +10467,16 @@ void HP_clif_clearchar_skillunit(struct skill_unit *su, int fd) {
int HP_clif_getareachar(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_clif_getareachar_pre ) {
+ if (HPMHooks.count.HP_clif_getareachar_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_getareachar_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_getareachar_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_clif_getareachar_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8279,9 +10486,9 @@ int HP_clif_getareachar(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.clif.getareachar(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_clif_getareachar_post ) {
+ if (HPMHooks.count.HP_clif_getareachar_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_getareachar_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_getareachar_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_clif_getareachar_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -8292,14 +10499,14 @@ int HP_clif_getareachar(struct block_list *bl, va_list ap) {
}
void HP_clif_graffiti_entry(struct block_list *bl, struct skill_unit *su, enum send_target target) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_graffiti_entry_pre ) {
+ if (HPMHooks.count.HP_clif_graffiti_entry_pre > 0) {
void (*preHookFunc) (struct block_list **bl, struct skill_unit **su, enum send_target *target);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_graffiti_entry_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_graffiti_entry_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_graffiti_entry_pre[hIndex].func;
preHookFunc(&bl, &su, &target);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8307,9 +10514,9 @@ void HP_clif_graffiti_entry(struct block_list *bl, struct skill_unit *su, enum s
{
HPMHooks.source.clif.graffiti_entry(bl, su, target);
}
- if( HPMHooks.count.HP_clif_graffiti_entry_post ) {
+ if (HPMHooks.count.HP_clif_graffiti_entry_post > 0) {
void (*postHookFunc) (struct block_list *bl, struct skill_unit *su, enum send_target target);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_graffiti_entry_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_graffiti_entry_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_graffiti_entry_post[hIndex].func;
postHookFunc(bl, su, target);
}
@@ -8319,14 +10526,14 @@ void HP_clif_graffiti_entry(struct block_list *bl, struct skill_unit *su, enum s
bool HP_clif_spawn(struct block_list *bl) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_clif_spawn_pre ) {
+ if (HPMHooks.count.HP_clif_spawn_pre > 0) {
bool (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_spawn_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_spawn_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_spawn_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -8334,9 +10541,9 @@ bool HP_clif_spawn(struct block_list *bl) {
{
retVal___ = HPMHooks.source.clif.spawn(bl);
}
- if( HPMHooks.count.HP_clif_spawn_post ) {
+ if (HPMHooks.count.HP_clif_spawn_post > 0) {
bool (*postHookFunc) (bool retVal___, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_spawn_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_spawn_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_spawn_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -8345,14 +10552,14 @@ bool HP_clif_spawn(struct block_list *bl) {
}
void HP_clif_changemap(struct map_session_data *sd, short m, int x, int y) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_changemap_pre ) {
+ if (HPMHooks.count.HP_clif_changemap_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, short *m, int *x, int *y);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_changemap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_changemap_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_changemap_pre[hIndex].func;
preHookFunc(&sd, &m, &x, &y);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8360,25 +10567,51 @@ void HP_clif_changemap(struct map_session_data *sd, short m, int x, int y) {
{
HPMHooks.source.clif.changemap(sd, m, x, y);
}
- if( HPMHooks.count.HP_clif_changemap_post ) {
+ if (HPMHooks.count.HP_clif_changemap_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, short m, int x, int y);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_changemap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_changemap_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_changemap_post[hIndex].func;
postHookFunc(sd, m, x, y);
}
}
return;
}
+void HP_clif_changemap_airship(struct map_session_data *sd, short m, int x, int y) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_changemap_airship_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, short *m, int *x, int *y);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_changemap_airship_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_changemap_airship_pre[hIndex].func;
+ preHookFunc(&sd, &m, &x, &y);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.changemap_airship(sd, m, x, y);
+ }
+ if (HPMHooks.count.HP_clif_changemap_airship_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, short m, int x, int y);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_changemap_airship_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_changemap_airship_post[hIndex].func;
+ postHookFunc(sd, m, x, y);
+ }
+ }
+ return;
+}
void HP_clif_changemapcell(int fd, int16 m, int x, int y, int type, enum send_target target) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_changemapcell_pre ) {
+ if (HPMHooks.count.HP_clif_changemapcell_pre > 0) {
void (*preHookFunc) (int *fd, int16 *m, int *x, int *y, int *type, enum send_target *target);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_changemapcell_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_changemapcell_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_changemapcell_pre[hIndex].func;
preHookFunc(&fd, &m, &x, &y, &type, &target);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8386,9 +10619,9 @@ void HP_clif_changemapcell(int fd, int16 m, int x, int y, int type, enum send_ta
{
HPMHooks.source.clif.changemapcell(fd, m, x, y, type, target);
}
- if( HPMHooks.count.HP_clif_changemapcell_post ) {
+ if (HPMHooks.count.HP_clif_changemapcell_post > 0) {
void (*postHookFunc) (int fd, int16 m, int x, int y, int type, enum send_target target);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_changemapcell_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_changemapcell_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_changemapcell_post[hIndex].func;
postHookFunc(fd, m, x, y, type, target);
}
@@ -8397,14 +10630,14 @@ void HP_clif_changemapcell(int fd, int16 m, int x, int y, int type, enum send_ta
}
void HP_clif_map_property(struct map_session_data *sd, enum map_property property) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_map_property_pre ) {
+ if (HPMHooks.count.HP_clif_map_property_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, enum map_property *property);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_map_property_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_map_property_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_map_property_pre[hIndex].func;
preHookFunc(&sd, &property);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8412,9 +10645,9 @@ void HP_clif_map_property(struct map_session_data *sd, enum map_property propert
{
HPMHooks.source.clif.map_property(sd, property);
}
- if( HPMHooks.count.HP_clif_map_property_post ) {
+ if (HPMHooks.count.HP_clif_map_property_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, enum map_property property);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_map_property_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_map_property_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_map_property_post[hIndex].func;
postHookFunc(sd, property);
}
@@ -8423,14 +10656,14 @@ void HP_clif_map_property(struct map_session_data *sd, enum map_property propert
}
void HP_clif_pvpset(struct map_session_data *sd, int pvprank, int pvpnum, int type) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pvpset_pre ) {
+ if (HPMHooks.count.HP_clif_pvpset_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *pvprank, int *pvpnum, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pvpset_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pvpset_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pvpset_pre[hIndex].func;
preHookFunc(&sd, &pvprank, &pvpnum, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8438,9 +10671,9 @@ void HP_clif_pvpset(struct map_session_data *sd, int pvprank, int pvpnum, int ty
{
HPMHooks.source.clif.pvpset(sd, pvprank, pvpnum, type);
}
- if( HPMHooks.count.HP_clif_pvpset_post ) {
+ if (HPMHooks.count.HP_clif_pvpset_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int pvprank, int pvpnum, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pvpset_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pvpset_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pvpset_post[hIndex].func;
postHookFunc(sd, pvprank, pvpnum, type);
}
@@ -8449,14 +10682,14 @@ void HP_clif_pvpset(struct map_session_data *sd, int pvprank, int pvpnum, int ty
}
void HP_clif_map_property_mapall(int mapid, enum map_property property) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_map_property_mapall_pre ) {
+ if (HPMHooks.count.HP_clif_map_property_mapall_pre > 0) {
void (*preHookFunc) (int *mapid, enum map_property *property);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_map_property_mapall_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_map_property_mapall_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_map_property_mapall_pre[hIndex].func;
preHookFunc(&mapid, &property);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8464,9 +10697,9 @@ void HP_clif_map_property_mapall(int mapid, enum map_property property) {
{
HPMHooks.source.clif.map_property_mapall(mapid, property);
}
- if( HPMHooks.count.HP_clif_map_property_mapall_post ) {
+ if (HPMHooks.count.HP_clif_map_property_mapall_post > 0) {
void (*postHookFunc) (int mapid, enum map_property property);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_map_property_mapall_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_map_property_mapall_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_map_property_mapall_post[hIndex].func;
postHookFunc(mapid, property);
}
@@ -8475,14 +10708,14 @@ void HP_clif_map_property_mapall(int mapid, enum map_property property) {
}
void HP_clif_bossmapinfo(int fd, struct mob_data *md, short flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_bossmapinfo_pre ) {
+ if (HPMHooks.count.HP_clif_bossmapinfo_pre > 0) {
void (*preHookFunc) (int *fd, struct mob_data **md, short *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bossmapinfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bossmapinfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_bossmapinfo_pre[hIndex].func;
preHookFunc(&fd, &md, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8490,9 +10723,9 @@ void HP_clif_bossmapinfo(int fd, struct mob_data *md, short flag) {
{
HPMHooks.source.clif.bossmapinfo(fd, md, flag);
}
- if( HPMHooks.count.HP_clif_bossmapinfo_post ) {
+ if (HPMHooks.count.HP_clif_bossmapinfo_post > 0) {
void (*postHookFunc) (int fd, struct mob_data *md, short flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bossmapinfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bossmapinfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_bossmapinfo_post[hIndex].func;
postHookFunc(fd, md, flag);
}
@@ -8501,14 +10734,14 @@ void HP_clif_bossmapinfo(int fd, struct mob_data *md, short flag) {
}
void HP_clif_map_type(struct map_session_data *sd, enum map_type type) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_map_type_pre ) {
+ if (HPMHooks.count.HP_clif_map_type_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, enum map_type *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_map_type_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_map_type_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_map_type_pre[hIndex].func;
preHookFunc(&sd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8516,9 +10749,9 @@ void HP_clif_map_type(struct map_session_data *sd, enum map_type type) {
{
HPMHooks.source.clif.map_type(sd, type);
}
- if( HPMHooks.count.HP_clif_map_type_post ) {
+ if (HPMHooks.count.HP_clif_map_type_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, enum map_type type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_map_type_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_map_type_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_map_type_post[hIndex].func;
postHookFunc(sd, type);
}
@@ -8527,14 +10760,14 @@ void HP_clif_map_type(struct map_session_data *sd, enum map_type type) {
}
void HP_clif_maptypeproperty2(struct block_list *bl, enum send_target t) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_maptypeproperty2_pre ) {
+ if (HPMHooks.count.HP_clif_maptypeproperty2_pre > 0) {
void (*preHookFunc) (struct block_list **bl, enum send_target *t);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_maptypeproperty2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_maptypeproperty2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_maptypeproperty2_pre[hIndex].func;
preHookFunc(&bl, &t);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8542,36 +10775,62 @@ void HP_clif_maptypeproperty2(struct block_list *bl, enum send_target t) {
{
HPMHooks.source.clif.maptypeproperty2(bl, t);
}
- if( HPMHooks.count.HP_clif_maptypeproperty2_post ) {
+ if (HPMHooks.count.HP_clif_maptypeproperty2_post > 0) {
void (*postHookFunc) (struct block_list *bl, enum send_target t);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_maptypeproperty2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_maptypeproperty2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_maptypeproperty2_post[hIndex].func;
postHookFunc(bl, t);
}
}
return;
}
-void HP_clif_changemapserver(struct map_session_data *sd, unsigned short map_index, int x, int y, uint32 ip, uint16 port) {
+void HP_clif_changemapserver(struct map_session_data *sd, unsigned short map_index, int x, int y, uint32 ip, uint16 port, char *dnsHost) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_changemapserver_pre ) {
- void (*preHookFunc) (struct map_session_data **sd, unsigned short *map_index, int *x, int *y, uint32 *ip, uint16 *port);
+ if (HPMHooks.count.HP_clif_changemapserver_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, unsigned short *map_index, int *x, int *y, uint32 *ip, uint16 *port, char **dnsHost);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_changemapserver_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_changemapserver_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_changemapserver_pre[hIndex].func;
+ preHookFunc(&sd, &map_index, &x, &y, &ip, &port, &dnsHost);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.changemapserver(sd, map_index, x, y, ip, port, dnsHost);
+ }
+ if (HPMHooks.count.HP_clif_changemapserver_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, unsigned short map_index, int x, int y, uint32 ip, uint16 port, char *dnsHost);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_changemapserver_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_changemapserver_post[hIndex].func;
+ postHookFunc(sd, map_index, x, y, ip, port, dnsHost);
+ }
+ }
+ return;
+}
+void HP_clif_changemapserver_airship(struct map_session_data *sd, unsigned short map_index, int x, int y, uint32 ip, uint16 port) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_changemapserver_airship_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, unsigned short *map_index, int *x, int *y, uint32 *ip, uint16 *port);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_changemapserver_airship_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_changemapserver_airship_pre[hIndex].func;
preHookFunc(&sd, &map_index, &x, &y, &ip, &port);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
}
{
- HPMHooks.source.clif.changemapserver(sd, map_index, x, y, ip, port);
+ HPMHooks.source.clif.changemapserver_airship(sd, map_index, x, y, ip, port);
}
- if( HPMHooks.count.HP_clif_changemapserver_post ) {
+ if (HPMHooks.count.HP_clif_changemapserver_airship_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, unsigned short map_index, int x, int y, uint32 ip, uint16 port);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_changemapserver_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_clif_changemapserver_post[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_changemapserver_airship_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_changemapserver_airship_post[hIndex].func;
postHookFunc(sd, map_index, x, y, ip, port);
}
}
@@ -8579,14 +10838,14 @@ void HP_clif_changemapserver(struct map_session_data *sd, unsigned short map_ind
}
void HP_clif_npcbuysell(struct map_session_data *sd, int id) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_npcbuysell_pre ) {
+ if (HPMHooks.count.HP_clif_npcbuysell_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_npcbuysell_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_npcbuysell_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_npcbuysell_pre[hIndex].func;
preHookFunc(&sd, &id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8594,9 +10853,9 @@ void HP_clif_npcbuysell(struct map_session_data *sd, int id) {
{
HPMHooks.source.clif.npcbuysell(sd, id);
}
- if( HPMHooks.count.HP_clif_npcbuysell_post ) {
+ if (HPMHooks.count.HP_clif_npcbuysell_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_npcbuysell_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_npcbuysell_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_npcbuysell_post[hIndex].func;
postHookFunc(sd, id);
}
@@ -8605,14 +10864,14 @@ void HP_clif_npcbuysell(struct map_session_data *sd, int id) {
}
void HP_clif_buylist(struct map_session_data *sd, struct npc_data *nd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_buylist_pre ) {
+ if (HPMHooks.count.HP_clif_buylist_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct npc_data **nd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_buylist_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_buylist_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_buylist_pre[hIndex].func;
preHookFunc(&sd, &nd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8620,9 +10879,9 @@ void HP_clif_buylist(struct map_session_data *sd, struct npc_data *nd) {
{
HPMHooks.source.clif.buylist(sd, nd);
}
- if( HPMHooks.count.HP_clif_buylist_post ) {
+ if (HPMHooks.count.HP_clif_buylist_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct npc_data *nd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_buylist_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_buylist_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_buylist_post[hIndex].func;
postHookFunc(sd, nd);
}
@@ -8631,14 +10890,14 @@ void HP_clif_buylist(struct map_session_data *sd, struct npc_data *nd) {
}
void HP_clif_selllist(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_selllist_pre ) {
+ if (HPMHooks.count.HP_clif_selllist_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_selllist_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_selllist_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_selllist_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8646,9 +10905,9 @@ void HP_clif_selllist(struct map_session_data *sd) {
{
HPMHooks.source.clif.selllist(sd);
}
- if( HPMHooks.count.HP_clif_selllist_post ) {
+ if (HPMHooks.count.HP_clif_selllist_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_selllist_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_selllist_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_selllist_post[hIndex].func;
postHookFunc(sd);
}
@@ -8657,14 +10916,14 @@ void HP_clif_selllist(struct map_session_data *sd) {
}
void HP_clif_cashshop_show(struct map_session_data *sd, struct npc_data *nd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_cashshop_show_pre ) {
+ if (HPMHooks.count.HP_clif_cashshop_show_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct npc_data **nd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_cashshop_show_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_cashshop_show_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_cashshop_show_pre[hIndex].func;
preHookFunc(&sd, &nd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8672,9 +10931,9 @@ void HP_clif_cashshop_show(struct map_session_data *sd, struct npc_data *nd) {
{
HPMHooks.source.clif.cashshop_show(sd, nd);
}
- if( HPMHooks.count.HP_clif_cashshop_show_post ) {
+ if (HPMHooks.count.HP_clif_cashshop_show_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct npc_data *nd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_cashshop_show_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_cashshop_show_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_cashshop_show_post[hIndex].func;
postHookFunc(sd, nd);
}
@@ -8683,14 +10942,14 @@ void HP_clif_cashshop_show(struct map_session_data *sd, struct npc_data *nd) {
}
void HP_clif_npc_buy_result(struct map_session_data *sd, unsigned char result) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_npc_buy_result_pre ) {
+ if (HPMHooks.count.HP_clif_npc_buy_result_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, unsigned char *result);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_npc_buy_result_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_npc_buy_result_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_npc_buy_result_pre[hIndex].func;
preHookFunc(&sd, &result);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8698,9 +10957,9 @@ void HP_clif_npc_buy_result(struct map_session_data *sd, unsigned char result) {
{
HPMHooks.source.clif.npc_buy_result(sd, result);
}
- if( HPMHooks.count.HP_clif_npc_buy_result_post ) {
+ if (HPMHooks.count.HP_clif_npc_buy_result_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, unsigned char result);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_npc_buy_result_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_npc_buy_result_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_npc_buy_result_post[hIndex].func;
postHookFunc(sd, result);
}
@@ -8709,14 +10968,14 @@ void HP_clif_npc_buy_result(struct map_session_data *sd, unsigned char result) {
}
void HP_clif_npc_sell_result(struct map_session_data *sd, unsigned char result) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_npc_sell_result_pre ) {
+ if (HPMHooks.count.HP_clif_npc_sell_result_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, unsigned char *result);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_npc_sell_result_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_npc_sell_result_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_npc_sell_result_pre[hIndex].func;
preHookFunc(&sd, &result);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8724,9 +10983,9 @@ void HP_clif_npc_sell_result(struct map_session_data *sd, unsigned char result)
{
HPMHooks.source.clif.npc_sell_result(sd, result);
}
- if( HPMHooks.count.HP_clif_npc_sell_result_post ) {
+ if (HPMHooks.count.HP_clif_npc_sell_result_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, unsigned char result);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_npc_sell_result_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_npc_sell_result_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_npc_sell_result_post[hIndex].func;
postHookFunc(sd, result);
}
@@ -8735,14 +10994,14 @@ void HP_clif_npc_sell_result(struct map_session_data *sd, unsigned char result)
}
void HP_clif_cashshop_ack(struct map_session_data *sd, int error) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_cashshop_ack_pre ) {
+ if (HPMHooks.count.HP_clif_cashshop_ack_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *error);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_cashshop_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_cashshop_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_cashshop_ack_pre[hIndex].func;
preHookFunc(&sd, &error);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8750,9 +11009,9 @@ void HP_clif_cashshop_ack(struct map_session_data *sd, int error) {
{
HPMHooks.source.clif.cashshop_ack(sd, error);
}
- if( HPMHooks.count.HP_clif_cashshop_ack_post ) {
+ if (HPMHooks.count.HP_clif_cashshop_ack_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int error);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_cashshop_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_cashshop_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_cashshop_ack_post[hIndex].func;
postHookFunc(sd, error);
}
@@ -8761,14 +11020,14 @@ void HP_clif_cashshop_ack(struct map_session_data *sd, int error) {
}
void HP_clif_scriptmes(struct map_session_data *sd, int npcid, const char *mes) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_scriptmes_pre ) {
+ if (HPMHooks.count.HP_clif_scriptmes_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *npcid, const char **mes);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_scriptmes_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_scriptmes_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_scriptmes_pre[hIndex].func;
preHookFunc(&sd, &npcid, &mes);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8776,9 +11035,9 @@ void HP_clif_scriptmes(struct map_session_data *sd, int npcid, const char *mes)
{
HPMHooks.source.clif.scriptmes(sd, npcid, mes);
}
- if( HPMHooks.count.HP_clif_scriptmes_post ) {
+ if (HPMHooks.count.HP_clif_scriptmes_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int npcid, const char *mes);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_scriptmes_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_scriptmes_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_scriptmes_post[hIndex].func;
postHookFunc(sd, npcid, mes);
}
@@ -8787,14 +11046,14 @@ void HP_clif_scriptmes(struct map_session_data *sd, int npcid, const char *mes)
}
void HP_clif_scriptnext(struct map_session_data *sd, int npcid) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_scriptnext_pre ) {
+ if (HPMHooks.count.HP_clif_scriptnext_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *npcid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_scriptnext_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_scriptnext_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_scriptnext_pre[hIndex].func;
preHookFunc(&sd, &npcid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8802,9 +11061,9 @@ void HP_clif_scriptnext(struct map_session_data *sd, int npcid) {
{
HPMHooks.source.clif.scriptnext(sd, npcid);
}
- if( HPMHooks.count.HP_clif_scriptnext_post ) {
+ if (HPMHooks.count.HP_clif_scriptnext_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int npcid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_scriptnext_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_scriptnext_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_scriptnext_post[hIndex].func;
postHookFunc(sd, npcid);
}
@@ -8813,14 +11072,14 @@ void HP_clif_scriptnext(struct map_session_data *sd, int npcid) {
}
void HP_clif_scriptclose(struct map_session_data *sd, int npcid) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_scriptclose_pre ) {
+ if (HPMHooks.count.HP_clif_scriptclose_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *npcid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_scriptclose_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_scriptclose_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_scriptclose_pre[hIndex].func;
preHookFunc(&sd, &npcid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8828,9 +11087,9 @@ void HP_clif_scriptclose(struct map_session_data *sd, int npcid) {
{
HPMHooks.source.clif.scriptclose(sd, npcid);
}
- if( HPMHooks.count.HP_clif_scriptclose_post ) {
+ if (HPMHooks.count.HP_clif_scriptclose_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int npcid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_scriptclose_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_scriptclose_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_scriptclose_post[hIndex].func;
postHookFunc(sd, npcid);
}
@@ -8839,14 +11098,14 @@ void HP_clif_scriptclose(struct map_session_data *sd, int npcid) {
}
void HP_clif_scriptmenu(struct map_session_data *sd, int npcid, const char *mes) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_scriptmenu_pre ) {
+ if (HPMHooks.count.HP_clif_scriptmenu_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *npcid, const char **mes);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_scriptmenu_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_scriptmenu_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_scriptmenu_pre[hIndex].func;
preHookFunc(&sd, &npcid, &mes);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8854,9 +11113,9 @@ void HP_clif_scriptmenu(struct map_session_data *sd, int npcid, const char *mes)
{
HPMHooks.source.clif.scriptmenu(sd, npcid, mes);
}
- if( HPMHooks.count.HP_clif_scriptmenu_post ) {
+ if (HPMHooks.count.HP_clif_scriptmenu_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int npcid, const char *mes);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_scriptmenu_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_scriptmenu_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_scriptmenu_post[hIndex].func;
postHookFunc(sd, npcid, mes);
}
@@ -8865,14 +11124,14 @@ void HP_clif_scriptmenu(struct map_session_data *sd, int npcid, const char *mes)
}
void HP_clif_scriptinput(struct map_session_data *sd, int npcid) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_scriptinput_pre ) {
+ if (HPMHooks.count.HP_clif_scriptinput_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *npcid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_scriptinput_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_scriptinput_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_scriptinput_pre[hIndex].func;
preHookFunc(&sd, &npcid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8880,9 +11139,9 @@ void HP_clif_scriptinput(struct map_session_data *sd, int npcid) {
{
HPMHooks.source.clif.scriptinput(sd, npcid);
}
- if( HPMHooks.count.HP_clif_scriptinput_post ) {
+ if (HPMHooks.count.HP_clif_scriptinput_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int npcid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_scriptinput_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_scriptinput_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_scriptinput_post[hIndex].func;
postHookFunc(sd, npcid);
}
@@ -8891,14 +11150,14 @@ void HP_clif_scriptinput(struct map_session_data *sd, int npcid) {
}
void HP_clif_scriptinputstr(struct map_session_data *sd, int npcid) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_scriptinputstr_pre ) {
+ if (HPMHooks.count.HP_clif_scriptinputstr_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *npcid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_scriptinputstr_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_scriptinputstr_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_scriptinputstr_pre[hIndex].func;
preHookFunc(&sd, &npcid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8906,9 +11165,9 @@ void HP_clif_scriptinputstr(struct map_session_data *sd, int npcid) {
{
HPMHooks.source.clif.scriptinputstr(sd, npcid);
}
- if( HPMHooks.count.HP_clif_scriptinputstr_post ) {
+ if (HPMHooks.count.HP_clif_scriptinputstr_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int npcid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_scriptinputstr_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_scriptinputstr_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_scriptinputstr_post[hIndex].func;
postHookFunc(sd, npcid);
}
@@ -8917,14 +11176,14 @@ void HP_clif_scriptinputstr(struct map_session_data *sd, int npcid) {
}
void HP_clif_cutin(struct map_session_data *sd, const char *image, int type) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_cutin_pre ) {
+ if (HPMHooks.count.HP_clif_cutin_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, const char **image, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_cutin_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_cutin_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_cutin_pre[hIndex].func;
preHookFunc(&sd, &image, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8932,9 +11191,9 @@ void HP_clif_cutin(struct map_session_data *sd, const char *image, int type) {
{
HPMHooks.source.clif.cutin(sd, image, type);
}
- if( HPMHooks.count.HP_clif_cutin_post ) {
+ if (HPMHooks.count.HP_clif_cutin_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, const char *image, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_cutin_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_cutin_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_cutin_post[hIndex].func;
postHookFunc(sd, image, type);
}
@@ -8943,14 +11202,14 @@ void HP_clif_cutin(struct map_session_data *sd, const char *image, int type) {
}
void HP_clif_sendfakenpc(struct map_session_data *sd, int npcid) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_sendfakenpc_pre ) {
+ if (HPMHooks.count.HP_clif_sendfakenpc_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *npcid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_sendfakenpc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_sendfakenpc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_sendfakenpc_pre[hIndex].func;
preHookFunc(&sd, &npcid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8958,9 +11217,9 @@ void HP_clif_sendfakenpc(struct map_session_data *sd, int npcid) {
{
HPMHooks.source.clif.sendfakenpc(sd, npcid);
}
- if( HPMHooks.count.HP_clif_sendfakenpc_post ) {
+ if (HPMHooks.count.HP_clif_sendfakenpc_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int npcid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_sendfakenpc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_sendfakenpc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_sendfakenpc_post[hIndex].func;
postHookFunc(sd, npcid);
}
@@ -8969,14 +11228,14 @@ void HP_clif_sendfakenpc(struct map_session_data *sd, int npcid) {
}
void HP_clif_scriptclear(struct map_session_data *sd, int npcid) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_scriptclear_pre ) {
+ if (HPMHooks.count.HP_clif_scriptclear_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *npcid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_scriptclear_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_scriptclear_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_scriptclear_pre[hIndex].func;
preHookFunc(&sd, &npcid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -8984,9 +11243,9 @@ void HP_clif_scriptclear(struct map_session_data *sd, int npcid) {
{
HPMHooks.source.clif.scriptclear(sd, npcid);
}
- if( HPMHooks.count.HP_clif_scriptclear_post ) {
+ if (HPMHooks.count.HP_clif_scriptclear_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int npcid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_scriptclear_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_scriptclear_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_scriptclear_post[hIndex].func;
postHookFunc(sd, npcid);
}
@@ -8995,14 +11254,14 @@ void HP_clif_scriptclear(struct map_session_data *sd, int npcid) {
}
void HP_clif_viewpoint(struct map_session_data *sd, int npc_id, int type, int x, int y, int id, int color) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_viewpoint_pre ) {
+ if (HPMHooks.count.HP_clif_viewpoint_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *npc_id, int *type, int *x, int *y, int *id, int *color);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_viewpoint_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_viewpoint_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_viewpoint_pre[hIndex].func;
preHookFunc(&sd, &npc_id, &type, &x, &y, &id, &color);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9010,9 +11269,9 @@ void HP_clif_viewpoint(struct map_session_data *sd, int npc_id, int type, int x,
{
HPMHooks.source.clif.viewpoint(sd, npc_id, type, x, y, id, color);
}
- if( HPMHooks.count.HP_clif_viewpoint_post ) {
+ if (HPMHooks.count.HP_clif_viewpoint_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int npc_id, int type, int x, int y, int id, int color);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_viewpoint_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_viewpoint_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_viewpoint_post[hIndex].func;
postHookFunc(sd, npc_id, type, x, y, id, color);
}
@@ -9022,14 +11281,14 @@ void HP_clif_viewpoint(struct map_session_data *sd, int npc_id, int type, int x,
int HP_clif_damage(struct block_list *src, struct block_list *dst, int sdelay, int ddelay, int64 damage, short div, unsigned char type, int64 damage2) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_clif_damage_pre ) {
+ if (HPMHooks.count.HP_clif_damage_pre > 0) {
int (*preHookFunc) (struct block_list **src, struct block_list **dst, int *sdelay, int *ddelay, int64 *damage, short *div, unsigned char *type, int64 *damage2);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_damage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_damage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_damage_pre[hIndex].func;
retVal___ = preHookFunc(&src, &dst, &sdelay, &ddelay, &damage, &div, &type, &damage2);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9037,9 +11296,9 @@ int HP_clif_damage(struct block_list *src, struct block_list *dst, int sdelay, i
{
retVal___ = HPMHooks.source.clif.damage(src, dst, sdelay, ddelay, damage, div, type, damage2);
}
- if( HPMHooks.count.HP_clif_damage_post ) {
+ if (HPMHooks.count.HP_clif_damage_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src, struct block_list *dst, int sdelay, int ddelay, int64 damage, short div, unsigned char type, int64 damage2);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_damage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_damage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_damage_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, dst, sdelay, ddelay, damage, div, type, damage2);
}
@@ -9048,14 +11307,14 @@ int HP_clif_damage(struct block_list *src, struct block_list *dst, int sdelay, i
}
void HP_clif_sitting(struct block_list *bl) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_sitting_pre ) {
+ if (HPMHooks.count.HP_clif_sitting_pre > 0) {
void (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_sitting_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_sitting_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_sitting_pre[hIndex].func;
preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9063,9 +11322,9 @@ void HP_clif_sitting(struct block_list *bl) {
{
HPMHooks.source.clif.sitting(bl);
}
- if( HPMHooks.count.HP_clif_sitting_post ) {
+ if (HPMHooks.count.HP_clif_sitting_post > 0) {
void (*postHookFunc) (struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_sitting_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_sitting_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_sitting_post[hIndex].func;
postHookFunc(bl);
}
@@ -9074,14 +11333,14 @@ void HP_clif_sitting(struct block_list *bl) {
}
void HP_clif_standing(struct block_list *bl) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_standing_pre ) {
+ if (HPMHooks.count.HP_clif_standing_pre > 0) {
void (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_standing_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_standing_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_standing_pre[hIndex].func;
preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9089,9 +11348,9 @@ void HP_clif_standing(struct block_list *bl) {
{
HPMHooks.source.clif.standing(bl);
}
- if( HPMHooks.count.HP_clif_standing_post ) {
+ if (HPMHooks.count.HP_clif_standing_post > 0) {
void (*postHookFunc) (struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_standing_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_standing_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_standing_post[hIndex].func;
postHookFunc(bl);
}
@@ -9100,14 +11359,14 @@ void HP_clif_standing(struct block_list *bl) {
}
void HP_clif_arrow_create_list(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_arrow_create_list_pre ) {
+ if (HPMHooks.count.HP_clif_arrow_create_list_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_arrow_create_list_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_arrow_create_list_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_arrow_create_list_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9115,9 +11374,9 @@ void HP_clif_arrow_create_list(struct map_session_data *sd) {
{
HPMHooks.source.clif.arrow_create_list(sd);
}
- if( HPMHooks.count.HP_clif_arrow_create_list_post ) {
+ if (HPMHooks.count.HP_clif_arrow_create_list_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_arrow_create_list_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_arrow_create_list_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_arrow_create_list_post[hIndex].func;
postHookFunc(sd);
}
@@ -9126,14 +11385,14 @@ void HP_clif_arrow_create_list(struct map_session_data *sd) {
}
void HP_clif_refresh_storagewindow(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_refresh_storagewindow_pre ) {
+ if (HPMHooks.count.HP_clif_refresh_storagewindow_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_refresh_storagewindow_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_refresh_storagewindow_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_refresh_storagewindow_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9141,9 +11400,9 @@ void HP_clif_refresh_storagewindow(struct map_session_data *sd) {
{
HPMHooks.source.clif.refresh_storagewindow(sd);
}
- if( HPMHooks.count.HP_clif_refresh_storagewindow_post ) {
+ if (HPMHooks.count.HP_clif_refresh_storagewindow_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_refresh_storagewindow_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_refresh_storagewindow_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_refresh_storagewindow_post[hIndex].func;
postHookFunc(sd);
}
@@ -9152,14 +11411,14 @@ void HP_clif_refresh_storagewindow(struct map_session_data *sd) {
}
void HP_clif_refresh(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_refresh_pre ) {
+ if (HPMHooks.count.HP_clif_refresh_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_refresh_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_refresh_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_refresh_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9167,9 +11426,9 @@ void HP_clif_refresh(struct map_session_data *sd) {
{
HPMHooks.source.clif.refresh(sd);
}
- if( HPMHooks.count.HP_clif_refresh_post ) {
+ if (HPMHooks.count.HP_clif_refresh_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_refresh_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_refresh_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_refresh_post[hIndex].func;
postHookFunc(sd);
}
@@ -9178,14 +11437,14 @@ void HP_clif_refresh(struct map_session_data *sd) {
}
void HP_clif_fame_blacksmith(struct map_session_data *sd, int points) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_fame_blacksmith_pre ) {
+ if (HPMHooks.count.HP_clif_fame_blacksmith_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *points);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_fame_blacksmith_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_fame_blacksmith_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_fame_blacksmith_pre[hIndex].func;
preHookFunc(&sd, &points);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9193,9 +11452,9 @@ void HP_clif_fame_blacksmith(struct map_session_data *sd, int points) {
{
HPMHooks.source.clif.fame_blacksmith(sd, points);
}
- if( HPMHooks.count.HP_clif_fame_blacksmith_post ) {
+ if (HPMHooks.count.HP_clif_fame_blacksmith_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int points);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_fame_blacksmith_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_fame_blacksmith_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_fame_blacksmith_post[hIndex].func;
postHookFunc(sd, points);
}
@@ -9204,14 +11463,14 @@ void HP_clif_fame_blacksmith(struct map_session_data *sd, int points) {
}
void HP_clif_fame_alchemist(struct map_session_data *sd, int points) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_fame_alchemist_pre ) {
+ if (HPMHooks.count.HP_clif_fame_alchemist_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *points);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_fame_alchemist_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_fame_alchemist_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_fame_alchemist_pre[hIndex].func;
preHookFunc(&sd, &points);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9219,9 +11478,9 @@ void HP_clif_fame_alchemist(struct map_session_data *sd, int points) {
{
HPMHooks.source.clif.fame_alchemist(sd, points);
}
- if( HPMHooks.count.HP_clif_fame_alchemist_post ) {
+ if (HPMHooks.count.HP_clif_fame_alchemist_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int points);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_fame_alchemist_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_fame_alchemist_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_fame_alchemist_post[hIndex].func;
postHookFunc(sd, points);
}
@@ -9230,14 +11489,14 @@ void HP_clif_fame_alchemist(struct map_session_data *sd, int points) {
}
void HP_clif_fame_taekwon(struct map_session_data *sd, int points) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_fame_taekwon_pre ) {
+ if (HPMHooks.count.HP_clif_fame_taekwon_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *points);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_fame_taekwon_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_fame_taekwon_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_fame_taekwon_pre[hIndex].func;
preHookFunc(&sd, &points);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9245,9 +11504,9 @@ void HP_clif_fame_taekwon(struct map_session_data *sd, int points) {
{
HPMHooks.source.clif.fame_taekwon(sd, points);
}
- if( HPMHooks.count.HP_clif_fame_taekwon_post ) {
+ if (HPMHooks.count.HP_clif_fame_taekwon_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int points);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_fame_taekwon_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_fame_taekwon_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_fame_taekwon_post[hIndex].func;
postHookFunc(sd, points);
}
@@ -9256,14 +11515,14 @@ void HP_clif_fame_taekwon(struct map_session_data *sd, int points) {
}
void HP_clif_ranklist(struct map_session_data *sd, enum fame_list_type type) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_ranklist_pre ) {
+ if (HPMHooks.count.HP_clif_ranklist_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, enum fame_list_type *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_ranklist_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_ranklist_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_ranklist_pre[hIndex].func;
preHookFunc(&sd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9271,9 +11530,9 @@ void HP_clif_ranklist(struct map_session_data *sd, enum fame_list_type type) {
{
HPMHooks.source.clif.ranklist(sd, type);
}
- if( HPMHooks.count.HP_clif_ranklist_post ) {
+ if (HPMHooks.count.HP_clif_ranklist_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, enum fame_list_type type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_ranklist_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_ranklist_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_ranklist_post[hIndex].func;
postHookFunc(sd, type);
}
@@ -9282,14 +11541,14 @@ void HP_clif_ranklist(struct map_session_data *sd, enum fame_list_type type) {
}
void HP_clif_update_rankingpoint(struct map_session_data *sd, enum fame_list_type type, int points) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_update_rankingpoint_pre ) {
+ if (HPMHooks.count.HP_clif_update_rankingpoint_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, enum fame_list_type *type, int *points);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_update_rankingpoint_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_update_rankingpoint_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_update_rankingpoint_pre[hIndex].func;
preHookFunc(&sd, &type, &points);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9297,9 +11556,9 @@ void HP_clif_update_rankingpoint(struct map_session_data *sd, enum fame_list_typ
{
HPMHooks.source.clif.update_rankingpoint(sd, type, points);
}
- if( HPMHooks.count.HP_clif_update_rankingpoint_post ) {
+ if (HPMHooks.count.HP_clif_update_rankingpoint_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, enum fame_list_type type, int points);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_update_rankingpoint_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_update_rankingpoint_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_update_rankingpoint_post[hIndex].func;
postHookFunc(sd, type, points);
}
@@ -9308,14 +11567,14 @@ void HP_clif_update_rankingpoint(struct map_session_data *sd, enum fame_list_typ
}
void HP_clif_pRanklist(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pRanklist_pre ) {
+ if (HPMHooks.count.HP_clif_pRanklist_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRanklist_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRanklist_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pRanklist_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9323,9 +11582,9 @@ void HP_clif_pRanklist(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pRanklist(fd, sd);
}
- if( HPMHooks.count.HP_clif_pRanklist_post ) {
+ if (HPMHooks.count.HP_clif_pRanklist_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRanklist_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRanklist_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pRanklist_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -9334,14 +11593,14 @@ void HP_clif_pRanklist(int fd, struct map_session_data *sd) {
}
void HP_clif_hotkeys(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_hotkeys_pre ) {
+ if (HPMHooks.count.HP_clif_hotkeys_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_hotkeys_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_hotkeys_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_hotkeys_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9349,9 +11608,9 @@ void HP_clif_hotkeys(struct map_session_data *sd) {
{
HPMHooks.source.clif.hotkeys(sd);
}
- if( HPMHooks.count.HP_clif_hotkeys_post ) {
+ if (HPMHooks.count.HP_clif_hotkeys_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_hotkeys_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_hotkeys_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_hotkeys_post[hIndex].func;
postHookFunc(sd);
}
@@ -9361,16 +11620,16 @@ void HP_clif_hotkeys(struct map_session_data *sd) {
int HP_clif_insight(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_clif_insight_pre ) {
+ if (HPMHooks.count.HP_clif_insight_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_insight_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_insight_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_clif_insight_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9380,9 +11639,9 @@ int HP_clif_insight(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.clif.insight(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_clif_insight_post ) {
+ if (HPMHooks.count.HP_clif_insight_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_insight_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_insight_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_clif_insight_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -9394,16 +11653,16 @@ int HP_clif_insight(struct block_list *bl, va_list ap) {
int HP_clif_outsight(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_clif_outsight_pre ) {
+ if (HPMHooks.count.HP_clif_outsight_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_outsight_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_outsight_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_clif_outsight_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -9413,9 +11672,9 @@ int HP_clif_outsight(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.clif.outsight(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_clif_outsight_post ) {
+ if (HPMHooks.count.HP_clif_outsight_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_outsight_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_outsight_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_clif_outsight_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -9426,14 +11685,14 @@ int HP_clif_outsight(struct block_list *bl, va_list ap) {
}
void HP_clif_skillcastcancel(struct block_list *bl) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_skillcastcancel_pre ) {
+ if (HPMHooks.count.HP_clif_skillcastcancel_pre > 0) {
void (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skillcastcancel_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skillcastcancel_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_skillcastcancel_pre[hIndex].func;
preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9441,51 +11700,51 @@ void HP_clif_skillcastcancel(struct block_list *bl) {
{
HPMHooks.source.clif.skillcastcancel(bl);
}
- if( HPMHooks.count.HP_clif_skillcastcancel_post ) {
+ if (HPMHooks.count.HP_clif_skillcastcancel_post > 0) {
void (*postHookFunc) (struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skillcastcancel_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skillcastcancel_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_skillcastcancel_post[hIndex].func;
postHookFunc(bl);
}
}
return;
}
-void HP_clif_skill_fail(struct map_session_data *sd, uint16 skill_id, enum useskill_fail_cause cause, int btype) {
+void HP_clif_skill_fail(struct map_session_data *sd, uint16 skill_id, enum useskill_fail_cause cause, int btype, int32 item_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_skill_fail_pre ) {
- void (*preHookFunc) (struct map_session_data **sd, uint16 *skill_id, enum useskill_fail_cause *cause, int *btype);
+ if (HPMHooks.count.HP_clif_skill_fail_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, uint16 *skill_id, enum useskill_fail_cause *cause, int *btype, int32 *item_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_fail_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_fail_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_skill_fail_pre[hIndex].func;
- preHookFunc(&sd, &skill_id, &cause, &btype);
+ preHookFunc(&sd, &skill_id, &cause, &btype, &item_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
}
{
- HPMHooks.source.clif.skill_fail(sd, skill_id, cause, btype);
+ HPMHooks.source.clif.skill_fail(sd, skill_id, cause, btype, item_id);
}
- if( HPMHooks.count.HP_clif_skill_fail_post ) {
- void (*postHookFunc) (struct map_session_data *sd, uint16 skill_id, enum useskill_fail_cause cause, int btype);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_fail_post; hIndex++ ) {
+ if (HPMHooks.count.HP_clif_skill_fail_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, uint16 skill_id, enum useskill_fail_cause cause, int btype, int32 item_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_fail_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_skill_fail_post[hIndex].func;
- postHookFunc(sd, skill_id, cause, btype);
+ postHookFunc(sd, skill_id, cause, btype, item_id);
}
}
return;
}
void HP_clif_skill_cooldown(struct map_session_data *sd, uint16 skill_id, unsigned int duration) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_skill_cooldown_pre ) {
+ if (HPMHooks.count.HP_clif_skill_cooldown_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, uint16 *skill_id, unsigned int *duration);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_cooldown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_cooldown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_skill_cooldown_pre[hIndex].func;
preHookFunc(&sd, &skill_id, &duration);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9493,9 +11752,9 @@ void HP_clif_skill_cooldown(struct map_session_data *sd, uint16 skill_id, unsign
{
HPMHooks.source.clif.skill_cooldown(sd, skill_id, duration);
}
- if( HPMHooks.count.HP_clif_skill_cooldown_post ) {
+ if (HPMHooks.count.HP_clif_skill_cooldown_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, uint16 skill_id, unsigned int duration);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_cooldown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_cooldown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_skill_cooldown_post[hIndex].func;
postHookFunc(sd, skill_id, duration);
}
@@ -9504,14 +11763,14 @@ void HP_clif_skill_cooldown(struct map_session_data *sd, uint16 skill_id, unsign
}
void HP_clif_skill_memomessage(struct map_session_data *sd, int type) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_skill_memomessage_pre ) {
+ if (HPMHooks.count.HP_clif_skill_memomessage_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_memomessage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_memomessage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_skill_memomessage_pre[hIndex].func;
preHookFunc(&sd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9519,9 +11778,9 @@ void HP_clif_skill_memomessage(struct map_session_data *sd, int type) {
{
HPMHooks.source.clif.skill_memomessage(sd, type);
}
- if( HPMHooks.count.HP_clif_skill_memomessage_post ) {
+ if (HPMHooks.count.HP_clif_skill_memomessage_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_memomessage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_memomessage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_skill_memomessage_post[hIndex].func;
postHookFunc(sd, type);
}
@@ -9530,14 +11789,14 @@ void HP_clif_skill_memomessage(struct map_session_data *sd, int type) {
}
void HP_clif_skill_mapinfomessage(struct map_session_data *sd, int type) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_skill_mapinfomessage_pre ) {
+ if (HPMHooks.count.HP_clif_skill_mapinfomessage_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_mapinfomessage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_mapinfomessage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_skill_mapinfomessage_pre[hIndex].func;
preHookFunc(&sd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9545,9 +11804,9 @@ void HP_clif_skill_mapinfomessage(struct map_session_data *sd, int type) {
{
HPMHooks.source.clif.skill_mapinfomessage(sd, type);
}
- if( HPMHooks.count.HP_clif_skill_mapinfomessage_post ) {
+ if (HPMHooks.count.HP_clif_skill_mapinfomessage_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_mapinfomessage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_mapinfomessage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_skill_mapinfomessage_post[hIndex].func;
postHookFunc(sd, type);
}
@@ -9556,14 +11815,14 @@ void HP_clif_skill_mapinfomessage(struct map_session_data *sd, int type) {
}
void HP_clif_skill_produce_mix_list(struct map_session_data *sd, int skill_id, int trigger) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_skill_produce_mix_list_pre ) {
+ if (HPMHooks.count.HP_clif_skill_produce_mix_list_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *skill_id, int *trigger);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_produce_mix_list_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_produce_mix_list_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_skill_produce_mix_list_pre[hIndex].func;
preHookFunc(&sd, &skill_id, &trigger);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9571,9 +11830,9 @@ void HP_clif_skill_produce_mix_list(struct map_session_data *sd, int skill_id, i
{
HPMHooks.source.clif.skill_produce_mix_list(sd, skill_id, trigger);
}
- if( HPMHooks.count.HP_clif_skill_produce_mix_list_post ) {
+ if (HPMHooks.count.HP_clif_skill_produce_mix_list_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int skill_id, int trigger);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_produce_mix_list_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_produce_mix_list_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_skill_produce_mix_list_post[hIndex].func;
postHookFunc(sd, skill_id, trigger);
}
@@ -9582,14 +11841,14 @@ void HP_clif_skill_produce_mix_list(struct map_session_data *sd, int skill_id, i
}
void HP_clif_cooking_list(struct map_session_data *sd, int trigger, uint16 skill_id, int qty, int list_type) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_cooking_list_pre ) {
+ if (HPMHooks.count.HP_clif_cooking_list_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *trigger, uint16 *skill_id, int *qty, int *list_type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_cooking_list_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_cooking_list_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_cooking_list_pre[hIndex].func;
preHookFunc(&sd, &trigger, &skill_id, &qty, &list_type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9597,9 +11856,9 @@ void HP_clif_cooking_list(struct map_session_data *sd, int trigger, uint16 skill
{
HPMHooks.source.clif.cooking_list(sd, trigger, skill_id, qty, list_type);
}
- if( HPMHooks.count.HP_clif_cooking_list_post ) {
+ if (HPMHooks.count.HP_clif_cooking_list_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int trigger, uint16 skill_id, int qty, int list_type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_cooking_list_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_cooking_list_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_cooking_list_post[hIndex].func;
postHookFunc(sd, trigger, skill_id, qty, list_type);
}
@@ -9608,14 +11867,14 @@ void HP_clif_cooking_list(struct map_session_data *sd, int trigger, uint16 skill
}
void HP_clif_autospell(struct map_session_data *sd, uint16 skill_lv) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_autospell_pre ) {
+ if (HPMHooks.count.HP_clif_autospell_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, uint16 *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_autospell_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_autospell_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_autospell_pre[hIndex].func;
preHookFunc(&sd, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9623,9 +11882,9 @@ void HP_clif_autospell(struct map_session_data *sd, uint16 skill_lv) {
{
HPMHooks.source.clif.autospell(sd, skill_lv);
}
- if( HPMHooks.count.HP_clif_autospell_post ) {
+ if (HPMHooks.count.HP_clif_autospell_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_autospell_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_autospell_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_autospell_post[hIndex].func;
postHookFunc(sd, skill_lv);
}
@@ -9634,14 +11893,14 @@ void HP_clif_autospell(struct map_session_data *sd, uint16 skill_lv) {
}
void HP_clif_combo_delay(struct block_list *bl, int wait) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_combo_delay_pre ) {
+ if (HPMHooks.count.HP_clif_combo_delay_pre > 0) {
void (*preHookFunc) (struct block_list **bl, int *wait);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_combo_delay_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_combo_delay_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_combo_delay_pre[hIndex].func;
preHookFunc(&bl, &wait);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9649,9 +11908,9 @@ void HP_clif_combo_delay(struct block_list *bl, int wait) {
{
HPMHooks.source.clif.combo_delay(bl, wait);
}
- if( HPMHooks.count.HP_clif_combo_delay_post ) {
+ if (HPMHooks.count.HP_clif_combo_delay_post > 0) {
void (*postHookFunc) (struct block_list *bl, int wait);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_combo_delay_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_combo_delay_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_combo_delay_post[hIndex].func;
postHookFunc(bl, wait);
}
@@ -9660,14 +11919,14 @@ void HP_clif_combo_delay(struct block_list *bl, int wait) {
}
void HP_clif_status_change(struct block_list *bl, int type, int flag, int tick, int val1, int val2, int val3) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_status_change_pre ) {
+ if (HPMHooks.count.HP_clif_status_change_pre > 0) {
void (*preHookFunc) (struct block_list **bl, int *type, int *flag, int *tick, int *val1, int *val2, int *val3);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_status_change_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_status_change_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_status_change_pre[hIndex].func;
preHookFunc(&bl, &type, &flag, &tick, &val1, &val2, &val3);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9675,9 +11934,9 @@ void HP_clif_status_change(struct block_list *bl, int type, int flag, int tick,
{
HPMHooks.source.clif.status_change(bl, type, flag, tick, val1, val2, val3);
}
- if( HPMHooks.count.HP_clif_status_change_post ) {
+ if (HPMHooks.count.HP_clif_status_change_post > 0) {
void (*postHookFunc) (struct block_list *bl, int type, int flag, int tick, int val1, int val2, int val3);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_status_change_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_status_change_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_status_change_post[hIndex].func;
postHookFunc(bl, type, flag, tick, val1, val2, val3);
}
@@ -9686,14 +11945,14 @@ void HP_clif_status_change(struct block_list *bl, int type, int flag, int tick,
}
void HP_clif_insert_card(struct map_session_data *sd, int idx_equip, int idx_card, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_insert_card_pre ) {
+ if (HPMHooks.count.HP_clif_insert_card_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *idx_equip, int *idx_card, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_insert_card_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_insert_card_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_insert_card_pre[hIndex].func;
preHookFunc(&sd, &idx_equip, &idx_card, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9701,103 +11960,337 @@ void HP_clif_insert_card(struct map_session_data *sd, int idx_equip, int idx_car
{
HPMHooks.source.clif.insert_card(sd, idx_equip, idx_card, flag);
}
- if( HPMHooks.count.HP_clif_insert_card_post ) {
+ if (HPMHooks.count.HP_clif_insert_card_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int idx_equip, int idx_card, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_insert_card_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_insert_card_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_insert_card_post[hIndex].func;
postHookFunc(sd, idx_equip, idx_card, flag);
}
}
return;
}
-void HP_clif_inventorylist(struct map_session_data *sd) {
+void HP_clif_inventoryList(struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_inventoryList_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_inventoryList_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_inventoryList_pre[hIndex].func;
+ preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.inventoryList(sd);
+ }
+ if (HPMHooks.count.HP_clif_inventoryList_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_inventoryList_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_inventoryList_post[hIndex].func;
+ postHookFunc(sd);
+ }
+ }
+ return;
+}
+void HP_clif_inventoryItems(struct map_session_data *sd, enum inventory_type type) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_inventoryItems_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, enum inventory_type *type);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_inventoryItems_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_inventoryItems_pre[hIndex].func;
+ preHookFunc(&sd, &type);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.inventoryItems(sd, type);
+ }
+ if (HPMHooks.count.HP_clif_inventoryItems_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, enum inventory_type type);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_inventoryItems_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_inventoryItems_post[hIndex].func;
+ postHookFunc(sd, type);
+ }
+ }
+ return;
+}
+void HP_clif_equipList(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_inventorylist_pre ) {
+ if (HPMHooks.count.HP_clif_equipList_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_inventorylist_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_clif_inventorylist_pre[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_equipList_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_equipList_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
}
{
- HPMHooks.source.clif.inventorylist(sd);
+ HPMHooks.source.clif.equipList(sd);
}
- if( HPMHooks.count.HP_clif_inventorylist_post ) {
+ if (HPMHooks.count.HP_clif_equipList_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_inventorylist_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_clif_inventorylist_post[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_equipList_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_equipList_post[hIndex].func;
postHookFunc(sd);
}
}
return;
}
-void HP_clif_equiplist(struct map_session_data *sd) {
+void HP_clif_equipItems(struct map_session_data *sd, enum inventory_type type) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_equipItems_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, enum inventory_type *type);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_equipItems_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_equipItems_pre[hIndex].func;
+ preHookFunc(&sd, &type);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.equipItems(sd, type);
+ }
+ if (HPMHooks.count.HP_clif_equipItems_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, enum inventory_type type);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_equipItems_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_equipItems_post[hIndex].func;
+ postHookFunc(sd, type);
+ }
+ }
+ return;
+}
+void HP_clif_cartList(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_equiplist_pre ) {
+ if (HPMHooks.count.HP_clif_cartList_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_equiplist_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_clif_equiplist_pre[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_cartList_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_cartList_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
}
{
- HPMHooks.source.clif.equiplist(sd);
+ HPMHooks.source.clif.cartList(sd);
}
- if( HPMHooks.count.HP_clif_equiplist_post ) {
+ if (HPMHooks.count.HP_clif_cartList_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_equiplist_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_clif_equiplist_post[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_cartList_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_cartList_post[hIndex].func;
postHookFunc(sd);
}
}
return;
}
-void HP_clif_cartlist(struct map_session_data *sd) {
+void HP_clif_cartItems(struct map_session_data *sd, enum inventory_type type) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_cartItems_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, enum inventory_type *type);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_cartItems_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_cartItems_pre[hIndex].func;
+ preHookFunc(&sd, &type);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.cartItems(sd, type);
+ }
+ if (HPMHooks.count.HP_clif_cartItems_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, enum inventory_type type);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_cartItems_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_cartItems_post[hIndex].func;
+ postHookFunc(sd, type);
+ }
+ }
+ return;
+}
+void HP_clif_inventoryExpansionInfo(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_cartlist_pre ) {
+ if (HPMHooks.count.HP_clif_inventoryExpansionInfo_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_cartlist_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_clif_cartlist_pre[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_inventoryExpansionInfo_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_inventoryExpansionInfo_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
}
{
- HPMHooks.source.clif.cartlist(sd);
+ HPMHooks.source.clif.inventoryExpansionInfo(sd);
}
- if( HPMHooks.count.HP_clif_cartlist_post ) {
+ if (HPMHooks.count.HP_clif_inventoryExpansionInfo_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_cartlist_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_clif_cartlist_post[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_inventoryExpansionInfo_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_inventoryExpansionInfo_post[hIndex].func;
postHookFunc(sd);
}
}
return;
}
+void HP_clif_inventoryExpandAck(struct map_session_data *sd, enum expand_inventory result, int itemId) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_inventoryExpandAck_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, enum expand_inventory *result, int *itemId);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_inventoryExpandAck_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_inventoryExpandAck_pre[hIndex].func;
+ preHookFunc(&sd, &result, &itemId);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.inventoryExpandAck(sd, result, itemId);
+ }
+ if (HPMHooks.count.HP_clif_inventoryExpandAck_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, enum expand_inventory result, int itemId);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_inventoryExpandAck_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_inventoryExpandAck_post[hIndex].func;
+ postHookFunc(sd, result, itemId);
+ }
+ }
+ return;
+}
+void HP_clif_inventoryExpandResult(struct map_session_data *sd, enum expand_inventory_result result) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_inventoryExpandResult_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, enum expand_inventory_result *result);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_inventoryExpandResult_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_inventoryExpandResult_pre[hIndex].func;
+ preHookFunc(&sd, &result);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.inventoryExpandResult(sd, result);
+ }
+ if (HPMHooks.count.HP_clif_inventoryExpandResult_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, enum expand_inventory_result result);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_inventoryExpandResult_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_inventoryExpandResult_post[hIndex].func;
+ postHookFunc(sd, result);
+ }
+ }
+ return;
+}
+void HP_clif_pInventoryExpansion(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pInventoryExpansion_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pInventoryExpansion_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pInventoryExpansion_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pInventoryExpansion(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pInventoryExpansion_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pInventoryExpansion_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pInventoryExpansion_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_pInventoryExpansionConfirmed(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pInventoryExpansionConfirmed_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pInventoryExpansionConfirmed_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pInventoryExpansionConfirmed_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pInventoryExpansionConfirmed(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pInventoryExpansionConfirmed_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pInventoryExpansionConfirmed_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pInventoryExpansionConfirmed_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_pInventoryExpansionRejected(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pInventoryExpansionRejected_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pInventoryExpansionRejected_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pInventoryExpansionRejected_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pInventoryExpansionRejected(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pInventoryExpansionRejected_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pInventoryExpansionRejected_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pInventoryExpansionRejected_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
void HP_clif_favorite_item(struct map_session_data *sd, unsigned short index) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_favorite_item_pre ) {
+ if (HPMHooks.count.HP_clif_favorite_item_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, unsigned short *index);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_favorite_item_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_favorite_item_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_favorite_item_pre[hIndex].func;
preHookFunc(&sd, &index);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9805,9 +12298,9 @@ void HP_clif_favorite_item(struct map_session_data *sd, unsigned short index) {
{
HPMHooks.source.clif.favorite_item(sd, index);
}
- if( HPMHooks.count.HP_clif_favorite_item_post ) {
+ if (HPMHooks.count.HP_clif_favorite_item_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, unsigned short index);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_favorite_item_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_favorite_item_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_favorite_item_post[hIndex].func;
postHookFunc(sd, index);
}
@@ -9816,14 +12309,14 @@ void HP_clif_favorite_item(struct map_session_data *sd, unsigned short index) {
}
void HP_clif_clearcart(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_clearcart_pre ) {
+ if (HPMHooks.count.HP_clif_clearcart_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_clearcart_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_clearcart_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_clearcart_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9831,9 +12324,9 @@ void HP_clif_clearcart(int fd) {
{
HPMHooks.source.clif.clearcart(fd);
}
- if( HPMHooks.count.HP_clif_clearcart_post ) {
+ if (HPMHooks.count.HP_clif_clearcart_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_clearcart_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_clearcart_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_clearcart_post[hIndex].func;
postHookFunc(fd);
}
@@ -9842,14 +12335,14 @@ void HP_clif_clearcart(int fd) {
}
void HP_clif_item_identify_list(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_item_identify_list_pre ) {
+ if (HPMHooks.count.HP_clif_item_identify_list_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_identify_list_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_identify_list_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_item_identify_list_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9857,9 +12350,9 @@ void HP_clif_item_identify_list(struct map_session_data *sd) {
{
HPMHooks.source.clif.item_identify_list(sd);
}
- if( HPMHooks.count.HP_clif_item_identify_list_post ) {
+ if (HPMHooks.count.HP_clif_item_identify_list_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_identify_list_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_identify_list_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_item_identify_list_post[hIndex].func;
postHookFunc(sd);
}
@@ -9868,14 +12361,14 @@ void HP_clif_item_identify_list(struct map_session_data *sd) {
}
void HP_clif_item_identified(struct map_session_data *sd, int idx, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_item_identified_pre ) {
+ if (HPMHooks.count.HP_clif_item_identified_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *idx, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_identified_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_identified_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_item_identified_pre[hIndex].func;
preHookFunc(&sd, &idx, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9883,9 +12376,9 @@ void HP_clif_item_identified(struct map_session_data *sd, int idx, int flag) {
{
HPMHooks.source.clif.item_identified(sd, idx, flag);
}
- if( HPMHooks.count.HP_clif_item_identified_post ) {
+ if (HPMHooks.count.HP_clif_item_identified_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int idx, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_identified_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_identified_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_item_identified_post[hIndex].func;
postHookFunc(sd, idx, flag);
}
@@ -9894,14 +12387,14 @@ void HP_clif_item_identified(struct map_session_data *sd, int idx, int flag) {
}
void HP_clif_item_repair_list(struct map_session_data *sd, struct map_session_data *dstsd, int lv) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_item_repair_list_pre ) {
+ if (HPMHooks.count.HP_clif_item_repair_list_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct map_session_data **dstsd, int *lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_repair_list_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_repair_list_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_item_repair_list_pre[hIndex].func;
preHookFunc(&sd, &dstsd, &lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9909,9 +12402,9 @@ void HP_clif_item_repair_list(struct map_session_data *sd, struct map_session_da
{
HPMHooks.source.clif.item_repair_list(sd, dstsd, lv);
}
- if( HPMHooks.count.HP_clif_item_repair_list_post ) {
+ if (HPMHooks.count.HP_clif_item_repair_list_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct map_session_data *dstsd, int lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_repair_list_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_repair_list_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_item_repair_list_post[hIndex].func;
postHookFunc(sd, dstsd, lv);
}
@@ -9920,14 +12413,14 @@ void HP_clif_item_repair_list(struct map_session_data *sd, struct map_session_da
}
void HP_clif_item_repaireffect(struct map_session_data *sd, int idx, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_item_repaireffect_pre ) {
+ if (HPMHooks.count.HP_clif_item_repaireffect_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *idx, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_repaireffect_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_repaireffect_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_item_repaireffect_pre[hIndex].func;
preHookFunc(&sd, &idx, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9935,9 +12428,9 @@ void HP_clif_item_repaireffect(struct map_session_data *sd, int idx, int flag) {
{
HPMHooks.source.clif.item_repaireffect(sd, idx, flag);
}
- if( HPMHooks.count.HP_clif_item_repaireffect_post ) {
+ if (HPMHooks.count.HP_clif_item_repaireffect_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int idx, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_repaireffect_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_repaireffect_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_item_repaireffect_post[hIndex].func;
postHookFunc(sd, idx, flag);
}
@@ -9946,14 +12439,14 @@ void HP_clif_item_repaireffect(struct map_session_data *sd, int idx, int flag) {
}
void HP_clif_item_damaged(struct map_session_data *sd, unsigned short position) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_item_damaged_pre ) {
+ if (HPMHooks.count.HP_clif_item_damaged_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, unsigned short *position);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_damaged_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_damaged_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_item_damaged_pre[hIndex].func;
preHookFunc(&sd, &position);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9961,9 +12454,9 @@ void HP_clif_item_damaged(struct map_session_data *sd, unsigned short position)
{
HPMHooks.source.clif.item_damaged(sd, position);
}
- if( HPMHooks.count.HP_clif_item_damaged_post ) {
+ if (HPMHooks.count.HP_clif_item_damaged_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, unsigned short position);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_damaged_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_damaged_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_item_damaged_post[hIndex].func;
postHookFunc(sd, position);
}
@@ -9972,14 +12465,14 @@ void HP_clif_item_damaged(struct map_session_data *sd, unsigned short position)
}
void HP_clif_item_refine_list(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_item_refine_list_pre ) {
+ if (HPMHooks.count.HP_clif_item_refine_list_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_refine_list_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_refine_list_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_item_refine_list_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -9987,9 +12480,9 @@ void HP_clif_item_refine_list(struct map_session_data *sd) {
{
HPMHooks.source.clif.item_refine_list(sd);
}
- if( HPMHooks.count.HP_clif_item_refine_list_post ) {
+ if (HPMHooks.count.HP_clif_item_refine_list_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_refine_list_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_refine_list_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_item_refine_list_post[hIndex].func;
postHookFunc(sd);
}
@@ -9998,14 +12491,14 @@ void HP_clif_item_refine_list(struct map_session_data *sd) {
}
void HP_clif_item_skill(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_item_skill_pre ) {
+ if (HPMHooks.count.HP_clif_item_skill_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, uint16 *skill_id, uint16 *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_skill_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_skill_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_item_skill_pre[hIndex].func;
preHookFunc(&sd, &skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10013,9 +12506,9 @@ void HP_clif_item_skill(struct map_session_data *sd, uint16 skill_id, uint16 ski
{
HPMHooks.source.clif.item_skill(sd, skill_id, skill_lv);
}
- if( HPMHooks.count.HP_clif_item_skill_post ) {
+ if (HPMHooks.count.HP_clif_item_skill_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_skill_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_skill_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_item_skill_post[hIndex].func;
postHookFunc(sd, skill_id, skill_lv);
}
@@ -10024,14 +12517,14 @@ void HP_clif_item_skill(struct map_session_data *sd, uint16 skill_id, uint16 ski
}
void HP_clif_mvp_item(struct map_session_data *sd, int nameid) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_mvp_item_pre ) {
+ if (HPMHooks.count.HP_clif_mvp_item_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *nameid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mvp_item_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mvp_item_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_mvp_item_pre[hIndex].func;
preHookFunc(&sd, &nameid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10039,9 +12532,9 @@ void HP_clif_mvp_item(struct map_session_data *sd, int nameid) {
{
HPMHooks.source.clif.mvp_item(sd, nameid);
}
- if( HPMHooks.count.HP_clif_mvp_item_post ) {
+ if (HPMHooks.count.HP_clif_mvp_item_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int nameid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mvp_item_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mvp_item_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_mvp_item_post[hIndex].func;
postHookFunc(sd, nameid);
}
@@ -10050,14 +12543,14 @@ void HP_clif_mvp_item(struct map_session_data *sd, int nameid) {
}
void HP_clif_mvp_exp(struct map_session_data *sd, unsigned int exp) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_mvp_exp_pre ) {
+ if (HPMHooks.count.HP_clif_mvp_exp_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, unsigned int *exp);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mvp_exp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mvp_exp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_mvp_exp_pre[hIndex].func;
preHookFunc(&sd, &exp);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10065,9 +12558,9 @@ void HP_clif_mvp_exp(struct map_session_data *sd, unsigned int exp) {
{
HPMHooks.source.clif.mvp_exp(sd, exp);
}
- if( HPMHooks.count.HP_clif_mvp_exp_post ) {
+ if (HPMHooks.count.HP_clif_mvp_exp_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, unsigned int exp);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mvp_exp_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mvp_exp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_mvp_exp_post[hIndex].func;
postHookFunc(sd, exp);
}
@@ -10076,14 +12569,14 @@ void HP_clif_mvp_exp(struct map_session_data *sd, unsigned int exp) {
}
void HP_clif_mvp_noitem(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_mvp_noitem_pre ) {
+ if (HPMHooks.count.HP_clif_mvp_noitem_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mvp_noitem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mvp_noitem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_mvp_noitem_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10091,9 +12584,9 @@ void HP_clif_mvp_noitem(struct map_session_data *sd) {
{
HPMHooks.source.clif.mvp_noitem(sd);
}
- if( HPMHooks.count.HP_clif_mvp_noitem_post ) {
+ if (HPMHooks.count.HP_clif_mvp_noitem_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mvp_noitem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mvp_noitem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_mvp_noitem_post[hIndex].func;
postHookFunc(sd);
}
@@ -10102,14 +12595,14 @@ void HP_clif_mvp_noitem(struct map_session_data *sd) {
}
void HP_clif_changed_dir(struct block_list *bl, enum send_target target) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_changed_dir_pre ) {
+ if (HPMHooks.count.HP_clif_changed_dir_pre > 0) {
void (*preHookFunc) (struct block_list **bl, enum send_target *target);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_changed_dir_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_changed_dir_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_changed_dir_pre[hIndex].func;
preHookFunc(&bl, &target);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10117,9 +12610,9 @@ void HP_clif_changed_dir(struct block_list *bl, enum send_target target) {
{
HPMHooks.source.clif.changed_dir(bl, target);
}
- if( HPMHooks.count.HP_clif_changed_dir_post ) {
+ if (HPMHooks.count.HP_clif_changed_dir_post > 0) {
void (*postHookFunc) (struct block_list *bl, enum send_target target);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_changed_dir_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_changed_dir_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_changed_dir_post[hIndex].func;
postHookFunc(bl, target);
}
@@ -10128,14 +12621,14 @@ void HP_clif_changed_dir(struct block_list *bl, enum send_target target) {
}
void HP_clif_charnameack(int fd, struct block_list *bl) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_charnameack_pre ) {
+ if (HPMHooks.count.HP_clif_charnameack_pre > 0) {
void (*preHookFunc) (int *fd, struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_charnameack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_charnameack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_charnameack_pre[hIndex].func;
preHookFunc(&fd, &bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10143,9 +12636,9 @@ void HP_clif_charnameack(int fd, struct block_list *bl) {
{
HPMHooks.source.clif.charnameack(fd, bl);
}
- if( HPMHooks.count.HP_clif_charnameack_post ) {
+ if (HPMHooks.count.HP_clif_charnameack_post > 0) {
void (*postHookFunc) (int fd, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_charnameack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_charnameack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_charnameack_post[hIndex].func;
postHookFunc(fd, bl);
}
@@ -10154,14 +12647,14 @@ void HP_clif_charnameack(int fd, struct block_list *bl) {
}
void HP_clif_monster_hp_bar(struct mob_data *md, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_monster_hp_bar_pre ) {
+ if (HPMHooks.count.HP_clif_monster_hp_bar_pre > 0) {
void (*preHookFunc) (struct mob_data **md, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_monster_hp_bar_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_monster_hp_bar_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_monster_hp_bar_pre[hIndex].func;
preHookFunc(&md, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10169,9 +12662,9 @@ void HP_clif_monster_hp_bar(struct mob_data *md, struct map_session_data *sd) {
{
HPMHooks.source.clif.monster_hp_bar(md, sd);
}
- if( HPMHooks.count.HP_clif_monster_hp_bar_post ) {
+ if (HPMHooks.count.HP_clif_monster_hp_bar_post > 0) {
void (*postHookFunc) (struct mob_data *md, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_monster_hp_bar_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_monster_hp_bar_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_monster_hp_bar_post[hIndex].func;
postHookFunc(md, sd);
}
@@ -10181,14 +12674,14 @@ void HP_clif_monster_hp_bar(struct mob_data *md, struct map_session_data *sd) {
int HP_clif_hpmeter(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_clif_hpmeter_pre ) {
+ if (HPMHooks.count.HP_clif_hpmeter_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_hpmeter_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_hpmeter_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_hpmeter_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -10196,9 +12689,9 @@ int HP_clif_hpmeter(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.clif.hpmeter(sd);
}
- if( HPMHooks.count.HP_clif_hpmeter_post ) {
+ if (HPMHooks.count.HP_clif_hpmeter_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_hpmeter_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_hpmeter_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_hpmeter_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -10207,14 +12700,14 @@ int HP_clif_hpmeter(struct map_session_data *sd) {
}
void HP_clif_hpmeter_single(int fd, int id, unsigned int hp, unsigned int maxhp) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_hpmeter_single_pre ) {
+ if (HPMHooks.count.HP_clif_hpmeter_single_pre > 0) {
void (*preHookFunc) (int *fd, int *id, unsigned int *hp, unsigned int *maxhp);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_hpmeter_single_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_hpmeter_single_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_hpmeter_single_pre[hIndex].func;
preHookFunc(&fd, &id, &hp, &maxhp);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10222,9 +12715,9 @@ void HP_clif_hpmeter_single(int fd, int id, unsigned int hp, unsigned int maxhp)
{
HPMHooks.source.clif.hpmeter_single(fd, id, hp, maxhp);
}
- if( HPMHooks.count.HP_clif_hpmeter_single_post ) {
+ if (HPMHooks.count.HP_clif_hpmeter_single_post > 0) {
void (*postHookFunc) (int fd, int id, unsigned int hp, unsigned int maxhp);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_hpmeter_single_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_hpmeter_single_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_hpmeter_single_post[hIndex].func;
postHookFunc(fd, id, hp, maxhp);
}
@@ -10234,16 +12727,16 @@ void HP_clif_hpmeter_single(int fd, int id, unsigned int hp, unsigned int maxhp)
int HP_clif_hpmeter_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_clif_hpmeter_sub_pre ) {
+ if (HPMHooks.count.HP_clif_hpmeter_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_hpmeter_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_hpmeter_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_clif_hpmeter_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -10253,9 +12746,9 @@ int HP_clif_hpmeter_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.clif.hpmeter_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_clif_hpmeter_sub_post ) {
+ if (HPMHooks.count.HP_clif_hpmeter_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_hpmeter_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_hpmeter_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_clif_hpmeter_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -10266,14 +12759,14 @@ int HP_clif_hpmeter_sub(struct block_list *bl, va_list ap) {
}
void HP_clif_upgrademessage(int fd, int result, int item_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_upgrademessage_pre ) {
+ if (HPMHooks.count.HP_clif_upgrademessage_pre > 0) {
void (*preHookFunc) (int *fd, int *result, int *item_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_upgrademessage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_upgrademessage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_upgrademessage_pre[hIndex].func;
preHookFunc(&fd, &result, &item_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10281,25 +12774,25 @@ void HP_clif_upgrademessage(int fd, int result, int item_id) {
{
HPMHooks.source.clif.upgrademessage(fd, result, item_id);
}
- if( HPMHooks.count.HP_clif_upgrademessage_post ) {
+ if (HPMHooks.count.HP_clif_upgrademessage_post > 0) {
void (*postHookFunc) (int fd, int result, int item_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_upgrademessage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_upgrademessage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_upgrademessage_post[hIndex].func;
postHookFunc(fd, result, item_id);
}
}
return;
}
-void HP_clif_get_weapon_view(struct map_session_data *sd, unsigned short *rhand, unsigned short *lhand) {
+void HP_clif_get_weapon_view(struct map_session_data *sd, int *rhand, int *lhand) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_get_weapon_view_pre ) {
- void (*preHookFunc) (struct map_session_data **sd, unsigned short **rhand, unsigned short **lhand);
+ if (HPMHooks.count.HP_clif_get_weapon_view_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int **rhand, int **lhand);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_get_weapon_view_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_get_weapon_view_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_get_weapon_view_pre[hIndex].func;
preHookFunc(&sd, &rhand, &lhand);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10307,9 +12800,9 @@ void HP_clif_get_weapon_view(struct map_session_data *sd, unsigned short *rhand,
{
HPMHooks.source.clif.get_weapon_view(sd, rhand, lhand);
}
- if( HPMHooks.count.HP_clif_get_weapon_view_post ) {
- void (*postHookFunc) (struct map_session_data *sd, unsigned short *rhand, unsigned short *lhand);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_get_weapon_view_post; hIndex++ ) {
+ if (HPMHooks.count.HP_clif_get_weapon_view_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int *rhand, int *lhand);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_get_weapon_view_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_get_weapon_view_post[hIndex].func;
postHookFunc(sd, rhand, lhand);
}
@@ -10318,14 +12811,14 @@ void HP_clif_get_weapon_view(struct map_session_data *sd, unsigned short *rhand,
}
void HP_clif_gospel_info(struct map_session_data *sd, int type) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_gospel_info_pre ) {
+ if (HPMHooks.count.HP_clif_gospel_info_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_gospel_info_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_gospel_info_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_gospel_info_pre[hIndex].func;
preHookFunc(&sd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10333,9 +12826,9 @@ void HP_clif_gospel_info(struct map_session_data *sd, int type) {
{
HPMHooks.source.clif.gospel_info(sd, type);
}
- if( HPMHooks.count.HP_clif_gospel_info_post ) {
+ if (HPMHooks.count.HP_clif_gospel_info_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_gospel_info_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_gospel_info_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_gospel_info_post[hIndex].func;
postHookFunc(sd, type);
}
@@ -10344,14 +12837,14 @@ void HP_clif_gospel_info(struct map_session_data *sd, int type) {
}
void HP_clif_feel_req(int fd, struct map_session_data *sd, uint16 skill_lv) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_feel_req_pre ) {
+ if (HPMHooks.count.HP_clif_feel_req_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd, uint16 *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_feel_req_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_feel_req_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_feel_req_pre[hIndex].func;
preHookFunc(&fd, &sd, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10359,9 +12852,9 @@ void HP_clif_feel_req(int fd, struct map_session_data *sd, uint16 skill_lv) {
{
HPMHooks.source.clif.feel_req(fd, sd, skill_lv);
}
- if( HPMHooks.count.HP_clif_feel_req_post ) {
+ if (HPMHooks.count.HP_clif_feel_req_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_feel_req_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_feel_req_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_feel_req_post[hIndex].func;
postHookFunc(fd, sd, skill_lv);
}
@@ -10370,14 +12863,14 @@ void HP_clif_feel_req(int fd, struct map_session_data *sd, uint16 skill_lv) {
}
void HP_clif_starskill(struct map_session_data *sd, const char *mapname, int monster_id, unsigned char star, unsigned char result) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_starskill_pre ) {
+ if (HPMHooks.count.HP_clif_starskill_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, const char **mapname, int *monster_id, unsigned char *star, unsigned char *result);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_starskill_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_starskill_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_starskill_pre[hIndex].func;
preHookFunc(&sd, &mapname, &monster_id, &star, &result);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10385,9 +12878,9 @@ void HP_clif_starskill(struct map_session_data *sd, const char *mapname, int mon
{
HPMHooks.source.clif.starskill(sd, mapname, monster_id, star, result);
}
- if( HPMHooks.count.HP_clif_starskill_post ) {
+ if (HPMHooks.count.HP_clif_starskill_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, const char *mapname, int monster_id, unsigned char star, unsigned char result);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_starskill_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_starskill_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_starskill_post[hIndex].func;
postHookFunc(sd, mapname, monster_id, star, result);
}
@@ -10396,14 +12889,14 @@ void HP_clif_starskill(struct map_session_data *sd, const char *mapname, int mon
}
void HP_clif_feel_info(struct map_session_data *sd, unsigned char feel_level, unsigned char type) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_feel_info_pre ) {
+ if (HPMHooks.count.HP_clif_feel_info_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, unsigned char *feel_level, unsigned char *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_feel_info_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_feel_info_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_feel_info_pre[hIndex].func;
preHookFunc(&sd, &feel_level, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10411,9 +12904,9 @@ void HP_clif_feel_info(struct map_session_data *sd, unsigned char feel_level, un
{
HPMHooks.source.clif.feel_info(sd, feel_level, type);
}
- if( HPMHooks.count.HP_clif_feel_info_post ) {
+ if (HPMHooks.count.HP_clif_feel_info_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, unsigned char feel_level, unsigned char type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_feel_info_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_feel_info_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_feel_info_post[hIndex].func;
postHookFunc(sd, feel_level, type);
}
@@ -10422,14 +12915,14 @@ void HP_clif_feel_info(struct map_session_data *sd, unsigned char feel_level, un
}
void HP_clif_hate_info(struct map_session_data *sd, unsigned char hate_level, int class_, unsigned char type) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_hate_info_pre ) {
+ if (HPMHooks.count.HP_clif_hate_info_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, unsigned char *hate_level, int *class_, unsigned char *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_hate_info_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_hate_info_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_hate_info_pre[hIndex].func;
preHookFunc(&sd, &hate_level, &class_, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10437,9 +12930,9 @@ void HP_clif_hate_info(struct map_session_data *sd, unsigned char hate_level, in
{
HPMHooks.source.clif.hate_info(sd, hate_level, class_, type);
}
- if( HPMHooks.count.HP_clif_hate_info_post ) {
+ if (HPMHooks.count.HP_clif_hate_info_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, unsigned char hate_level, int class_, unsigned char type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_hate_info_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_hate_info_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_hate_info_post[hIndex].func;
postHookFunc(sd, hate_level, class_, type);
}
@@ -10448,14 +12941,14 @@ void HP_clif_hate_info(struct map_session_data *sd, unsigned char hate_level, in
}
void HP_clif_mission_info(struct map_session_data *sd, int mob_id, unsigned char progress) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_mission_info_pre ) {
+ if (HPMHooks.count.HP_clif_mission_info_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *mob_id, unsigned char *progress);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mission_info_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mission_info_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_mission_info_pre[hIndex].func;
preHookFunc(&sd, &mob_id, &progress);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10463,9 +12956,9 @@ void HP_clif_mission_info(struct map_session_data *sd, int mob_id, unsigned char
{
HPMHooks.source.clif.mission_info(sd, mob_id, progress);
}
- if( HPMHooks.count.HP_clif_mission_info_post ) {
+ if (HPMHooks.count.HP_clif_mission_info_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int mob_id, unsigned char progress);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mission_info_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mission_info_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_mission_info_post[hIndex].func;
postHookFunc(sd, mob_id, progress);
}
@@ -10474,14 +12967,14 @@ void HP_clif_mission_info(struct map_session_data *sd, int mob_id, unsigned char
}
void HP_clif_feel_hate_reset(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_feel_hate_reset_pre ) {
+ if (HPMHooks.count.HP_clif_feel_hate_reset_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_feel_hate_reset_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_feel_hate_reset_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_feel_hate_reset_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10489,9 +12982,9 @@ void HP_clif_feel_hate_reset(struct map_session_data *sd) {
{
HPMHooks.source.clif.feel_hate_reset(sd);
}
- if( HPMHooks.count.HP_clif_feel_hate_reset_post ) {
+ if (HPMHooks.count.HP_clif_feel_hate_reset_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_feel_hate_reset_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_feel_hate_reset_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_feel_hate_reset_post[hIndex].func;
postHookFunc(sd);
}
@@ -10500,14 +12993,14 @@ void HP_clif_feel_hate_reset(struct map_session_data *sd) {
}
void HP_clif_partytickack(struct map_session_data *sd, bool flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_partytickack_pre ) {
+ if (HPMHooks.count.HP_clif_partytickack_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, bool *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_partytickack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_partytickack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_partytickack_pre[hIndex].func;
preHookFunc(&sd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10515,51 +13008,51 @@ void HP_clif_partytickack(struct map_session_data *sd, bool flag) {
{
HPMHooks.source.clif.partytickack(sd, flag);
}
- if( HPMHooks.count.HP_clif_partytickack_post ) {
+ if (HPMHooks.count.HP_clif_partytickack_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, bool flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_partytickack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_partytickack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_partytickack_post[hIndex].func;
postHookFunc(sd, flag);
}
}
return;
}
-void HP_clif_equiptickack(struct map_session_data *sd, int flag) {
+void HP_clif_zc_config(struct map_session_data *sd, enum CZ_CONFIG type, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_equiptickack_pre ) {
- void (*preHookFunc) (struct map_session_data **sd, int *flag);
+ if (HPMHooks.count.HP_clif_zc_config_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, enum CZ_CONFIG *type, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_equiptickack_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_clif_equiptickack_pre[hIndex].func;
- preHookFunc(&sd, &flag);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_zc_config_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_zc_config_pre[hIndex].func;
+ preHookFunc(&sd, &type, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
}
{
- HPMHooks.source.clif.equiptickack(sd, flag);
+ HPMHooks.source.clif.zc_config(sd, type, flag);
}
- if( HPMHooks.count.HP_clif_equiptickack_post ) {
- void (*postHookFunc) (struct map_session_data *sd, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_equiptickack_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_clif_equiptickack_post[hIndex].func;
- postHookFunc(sd, flag);
+ if (HPMHooks.count.HP_clif_zc_config_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, enum CZ_CONFIG type, int flag);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_zc_config_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_zc_config_post[hIndex].func;
+ postHookFunc(sd, type, flag);
}
}
return;
}
void HP_clif_viewequip_ack(struct map_session_data *sd, struct map_session_data *tsd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_viewequip_ack_pre ) {
+ if (HPMHooks.count.HP_clif_viewequip_ack_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct map_session_data **tsd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_viewequip_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_viewequip_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_viewequip_ack_pre[hIndex].func;
preHookFunc(&sd, &tsd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10567,9 +13060,9 @@ void HP_clif_viewequip_ack(struct map_session_data *sd, struct map_session_data
{
HPMHooks.source.clif.viewequip_ack(sd, tsd);
}
- if( HPMHooks.count.HP_clif_viewequip_ack_post ) {
+ if (HPMHooks.count.HP_clif_viewequip_ack_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct map_session_data *tsd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_viewequip_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_viewequip_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_viewequip_ack_post[hIndex].func;
postHookFunc(sd, tsd);
}
@@ -10578,14 +13071,14 @@ void HP_clif_viewequip_ack(struct map_session_data *sd, struct map_session_data
}
void HP_clif_equpcheckbox(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_equpcheckbox_pre ) {
+ if (HPMHooks.count.HP_clif_equpcheckbox_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_equpcheckbox_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_equpcheckbox_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_equpcheckbox_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10593,25 +13086,25 @@ void HP_clif_equpcheckbox(struct map_session_data *sd) {
{
HPMHooks.source.clif.equpcheckbox(sd);
}
- if( HPMHooks.count.HP_clif_equpcheckbox_post ) {
+ if (HPMHooks.count.HP_clif_equpcheckbox_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_equpcheckbox_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_equpcheckbox_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_equpcheckbox_post[hIndex].func;
postHookFunc(sd);
}
}
return;
}
-void HP_clif_displayexp(struct map_session_data *sd, unsigned int exp, char type, bool is_quest) {
+void HP_clif_displayexp(struct map_session_data *sd, uint64 exp, char type, bool is_quest) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_displayexp_pre ) {
- void (*preHookFunc) (struct map_session_data **sd, unsigned int *exp, char *type, bool *is_quest);
+ if (HPMHooks.count.HP_clif_displayexp_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, uint64 *exp, char *type, bool *is_quest);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_displayexp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_displayexp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_displayexp_pre[hIndex].func;
preHookFunc(&sd, &exp, &type, &is_quest);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10619,9 +13112,9 @@ void HP_clif_displayexp(struct map_session_data *sd, unsigned int exp, char type
{
HPMHooks.source.clif.displayexp(sd, exp, type, is_quest);
}
- if( HPMHooks.count.HP_clif_displayexp_post ) {
- void (*postHookFunc) (struct map_session_data *sd, unsigned int exp, char type, bool is_quest);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_displayexp_post; hIndex++ ) {
+ if (HPMHooks.count.HP_clif_displayexp_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, uint64 exp, char type, bool is_quest);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_displayexp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_displayexp_post[hIndex].func;
postHookFunc(sd, exp, type, is_quest);
}
@@ -10630,14 +13123,14 @@ void HP_clif_displayexp(struct map_session_data *sd, unsigned int exp, char type
}
void HP_clif_font(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_font_pre ) {
+ if (HPMHooks.count.HP_clif_font_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_font_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_font_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_font_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10645,9 +13138,9 @@ void HP_clif_font(struct map_session_data *sd) {
{
HPMHooks.source.clif.font(sd);
}
- if( HPMHooks.count.HP_clif_font_post ) {
+ if (HPMHooks.count.HP_clif_font_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_font_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_font_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_font_post[hIndex].func;
postHookFunc(sd);
}
@@ -10656,14 +13149,14 @@ void HP_clif_font(struct map_session_data *sd) {
}
void HP_clif_progressbar(struct map_session_data *sd, unsigned int color, unsigned int second) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_progressbar_pre ) {
+ if (HPMHooks.count.HP_clif_progressbar_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, unsigned int *color, unsigned int *second);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_progressbar_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_progressbar_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_progressbar_pre[hIndex].func;
preHookFunc(&sd, &color, &second);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10671,9 +13164,9 @@ void HP_clif_progressbar(struct map_session_data *sd, unsigned int color, unsign
{
HPMHooks.source.clif.progressbar(sd, color, second);
}
- if( HPMHooks.count.HP_clif_progressbar_post ) {
+ if (HPMHooks.count.HP_clif_progressbar_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, unsigned int color, unsigned int second);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_progressbar_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_progressbar_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_progressbar_post[hIndex].func;
postHookFunc(sd, color, second);
}
@@ -10682,14 +13175,14 @@ void HP_clif_progressbar(struct map_session_data *sd, unsigned int color, unsign
}
void HP_clif_progressbar_abort(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_progressbar_abort_pre ) {
+ if (HPMHooks.count.HP_clif_progressbar_abort_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_progressbar_abort_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_progressbar_abort_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_progressbar_abort_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10697,25 +13190,51 @@ void HP_clif_progressbar_abort(struct map_session_data *sd) {
{
HPMHooks.source.clif.progressbar_abort(sd);
}
- if( HPMHooks.count.HP_clif_progressbar_abort_post ) {
+ if (HPMHooks.count.HP_clif_progressbar_abort_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_progressbar_abort_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_progressbar_abort_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_progressbar_abort_post[hIndex].func;
postHookFunc(sd);
}
}
return;
}
+void HP_clif_progressbar_unit(struct block_list *bl, uint32 color, uint32 time) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_progressbar_unit_pre > 0) {
+ void (*preHookFunc) (struct block_list **bl, uint32 *color, uint32 *time);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_progressbar_unit_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_progressbar_unit_pre[hIndex].func;
+ preHookFunc(&bl, &color, &time);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.progressbar_unit(bl, color, time);
+ }
+ if (HPMHooks.count.HP_clif_progressbar_unit_post > 0) {
+ void (*postHookFunc) (struct block_list *bl, uint32 color, uint32 time);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_progressbar_unit_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_progressbar_unit_post[hIndex].func;
+ postHookFunc(bl, color, time);
+ }
+ }
+ return;
+}
void HP_clif_showdigit(struct map_session_data *sd, unsigned char type, int value) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_showdigit_pre ) {
+ if (HPMHooks.count.HP_clif_showdigit_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, unsigned char *type, int *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_showdigit_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_showdigit_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_showdigit_pre[hIndex].func;
preHookFunc(&sd, &type, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10723,9 +13242,9 @@ void HP_clif_showdigit(struct map_session_data *sd, unsigned char type, int valu
{
HPMHooks.source.clif.showdigit(sd, type, value);
}
- if( HPMHooks.count.HP_clif_showdigit_post ) {
+ if (HPMHooks.count.HP_clif_showdigit_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, unsigned char type, int value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_showdigit_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_showdigit_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_showdigit_post[hIndex].func;
postHookFunc(sd, type, value);
}
@@ -10735,14 +13254,14 @@ void HP_clif_showdigit(struct map_session_data *sd, unsigned char type, int valu
int HP_clif_elementalconverter_list(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_clif_elementalconverter_list_pre ) {
+ if (HPMHooks.count.HP_clif_elementalconverter_list_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_elementalconverter_list_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_elementalconverter_list_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_elementalconverter_list_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -10750,9 +13269,9 @@ int HP_clif_elementalconverter_list(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.clif.elementalconverter_list(sd);
}
- if( HPMHooks.count.HP_clif_elementalconverter_list_post ) {
+ if (HPMHooks.count.HP_clif_elementalconverter_list_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_elementalconverter_list_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_elementalconverter_list_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_elementalconverter_list_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -10762,14 +13281,14 @@ int HP_clif_elementalconverter_list(struct map_session_data *sd) {
int HP_clif_spellbook_list(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_clif_spellbook_list_pre ) {
+ if (HPMHooks.count.HP_clif_spellbook_list_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_spellbook_list_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_spellbook_list_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_spellbook_list_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -10777,9 +13296,9 @@ int HP_clif_spellbook_list(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.clif.spellbook_list(sd);
}
- if( HPMHooks.count.HP_clif_spellbook_list_post ) {
+ if (HPMHooks.count.HP_clif_spellbook_list_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_spellbook_list_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_spellbook_list_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_spellbook_list_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -10789,14 +13308,14 @@ int HP_clif_spellbook_list(struct map_session_data *sd) {
int HP_clif_magicdecoy_list(struct map_session_data *sd, uint16 skill_lv, short x, short y) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_clif_magicdecoy_list_pre ) {
+ if (HPMHooks.count.HP_clif_magicdecoy_list_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, uint16 *skill_lv, short *x, short *y);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_magicdecoy_list_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_magicdecoy_list_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_magicdecoy_list_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &skill_lv, &x, &y);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -10804,9 +13323,9 @@ int HP_clif_magicdecoy_list(struct map_session_data *sd, uint16 skill_lv, short
{
retVal___ = HPMHooks.source.clif.magicdecoy_list(sd, skill_lv, x, y);
}
- if( HPMHooks.count.HP_clif_magicdecoy_list_post ) {
+ if (HPMHooks.count.HP_clif_magicdecoy_list_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, uint16 skill_lv, short x, short y);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_magicdecoy_list_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_magicdecoy_list_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_magicdecoy_list_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, skill_lv, x, y);
}
@@ -10816,14 +13335,14 @@ int HP_clif_magicdecoy_list(struct map_session_data *sd, uint16 skill_lv, short
int HP_clif_poison_list(struct map_session_data *sd, uint16 skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_clif_poison_list_pre ) {
+ if (HPMHooks.count.HP_clif_poison_list_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, uint16 *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_poison_list_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_poison_list_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_poison_list_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -10831,9 +13350,9 @@ int HP_clif_poison_list(struct map_session_data *sd, uint16 skill_lv) {
{
retVal___ = HPMHooks.source.clif.poison_list(sd, skill_lv);
}
- if( HPMHooks.count.HP_clif_poison_list_post ) {
+ if (HPMHooks.count.HP_clif_poison_list_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_poison_list_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_poison_list_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_poison_list_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, skill_lv);
}
@@ -10843,14 +13362,14 @@ int HP_clif_poison_list(struct map_session_data *sd, uint16 skill_lv) {
int HP_clif_autoshadowspell_list(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_clif_autoshadowspell_list_pre ) {
+ if (HPMHooks.count.HP_clif_autoshadowspell_list_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_autoshadowspell_list_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_autoshadowspell_list_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_autoshadowspell_list_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -10858,9 +13377,9 @@ int HP_clif_autoshadowspell_list(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.clif.autoshadowspell_list(sd);
}
- if( HPMHooks.count.HP_clif_autoshadowspell_list_post ) {
+ if (HPMHooks.count.HP_clif_autoshadowspell_list_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_autoshadowspell_list_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_autoshadowspell_list_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_autoshadowspell_list_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -10870,14 +13389,14 @@ int HP_clif_autoshadowspell_list(struct map_session_data *sd) {
int HP_clif_skill_itemlistwindow(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_clif_skill_itemlistwindow_pre ) {
+ if (HPMHooks.count.HP_clif_skill_itemlistwindow_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, uint16 *skill_id, uint16 *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_itemlistwindow_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_itemlistwindow_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_skill_itemlistwindow_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -10885,9 +13404,9 @@ int HP_clif_skill_itemlistwindow(struct map_session_data *sd, uint16 skill_id, u
{
retVal___ = HPMHooks.source.clif.skill_itemlistwindow(sd, skill_id, skill_lv);
}
- if( HPMHooks.count.HP_clif_skill_itemlistwindow_post ) {
+ if (HPMHooks.count.HP_clif_skill_itemlistwindow_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_itemlistwindow_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_itemlistwindow_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_skill_itemlistwindow_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, skill_id, skill_lv);
}
@@ -10896,14 +13415,14 @@ int HP_clif_skill_itemlistwindow(struct map_session_data *sd, uint16 skill_id, u
}
void HP_clif_sc_load(struct block_list *bl, int tid, enum send_target target, int type, int val1, int val2, int val3) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_sc_load_pre ) {
+ if (HPMHooks.count.HP_clif_sc_load_pre > 0) {
void (*preHookFunc) (struct block_list **bl, int *tid, enum send_target *target, int *type, int *val1, int *val2, int *val3);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_sc_load_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_sc_load_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_sc_load_pre[hIndex].func;
preHookFunc(&bl, &tid, &target, &type, &val1, &val2, &val3);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10911,9 +13430,9 @@ void HP_clif_sc_load(struct block_list *bl, int tid, enum send_target target, in
{
HPMHooks.source.clif.sc_load(bl, tid, target, type, val1, val2, val3);
}
- if( HPMHooks.count.HP_clif_sc_load_post ) {
+ if (HPMHooks.count.HP_clif_sc_load_post > 0) {
void (*postHookFunc) (struct block_list *bl, int tid, enum send_target target, int type, int val1, int val2, int val3);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_sc_load_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_sc_load_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_sc_load_post[hIndex].func;
postHookFunc(bl, tid, target, type, val1, val2, val3);
}
@@ -10922,14 +13441,14 @@ void HP_clif_sc_load(struct block_list *bl, int tid, enum send_target target, in
}
void HP_clif_sc_continue(struct block_list *bl, int tid, enum send_target target, int type, int val1, int val2, int val3) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_sc_continue_pre ) {
+ if (HPMHooks.count.HP_clif_sc_continue_pre > 0) {
void (*preHookFunc) (struct block_list **bl, int *tid, enum send_target *target, int *type, int *val1, int *val2, int *val3);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_sc_continue_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_sc_continue_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_sc_continue_pre[hIndex].func;
preHookFunc(&bl, &tid, &target, &type, &val1, &val2, &val3);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10937,9 +13456,9 @@ void HP_clif_sc_continue(struct block_list *bl, int tid, enum send_target target
{
HPMHooks.source.clif.sc_continue(bl, tid, target, type, val1, val2, val3);
}
- if( HPMHooks.count.HP_clif_sc_continue_post ) {
+ if (HPMHooks.count.HP_clif_sc_continue_post > 0) {
void (*postHookFunc) (struct block_list *bl, int tid, enum send_target target, int type, int val1, int val2, int val3);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_sc_continue_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_sc_continue_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_sc_continue_post[hIndex].func;
postHookFunc(bl, tid, target, type, val1, val2, val3);
}
@@ -10948,14 +13467,14 @@ void HP_clif_sc_continue(struct block_list *bl, int tid, enum send_target target
}
void HP_clif_sc_end(struct block_list *bl, int tid, enum send_target target, int type) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_sc_end_pre ) {
+ if (HPMHooks.count.HP_clif_sc_end_pre > 0) {
void (*preHookFunc) (struct block_list **bl, int *tid, enum send_target *target, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_sc_end_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_sc_end_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_sc_end_pre[hIndex].func;
preHookFunc(&bl, &tid, &target, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10963,9 +13482,9 @@ void HP_clif_sc_end(struct block_list *bl, int tid, enum send_target target, int
{
HPMHooks.source.clif.sc_end(bl, tid, target, type);
}
- if( HPMHooks.count.HP_clif_sc_end_post ) {
+ if (HPMHooks.count.HP_clif_sc_end_post > 0) {
void (*postHookFunc) (struct block_list *bl, int tid, enum send_target target, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_sc_end_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_sc_end_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_sc_end_post[hIndex].func;
postHookFunc(bl, tid, target, type);
}
@@ -10974,14 +13493,14 @@ void HP_clif_sc_end(struct block_list *bl, int tid, enum send_target target, int
}
void HP_clif_initialstatus(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_initialstatus_pre ) {
+ if (HPMHooks.count.HP_clif_initialstatus_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_initialstatus_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_initialstatus_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_initialstatus_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -10989,9 +13508,9 @@ void HP_clif_initialstatus(struct map_session_data *sd) {
{
HPMHooks.source.clif.initialstatus(sd);
}
- if( HPMHooks.count.HP_clif_initialstatus_post ) {
+ if (HPMHooks.count.HP_clif_initialstatus_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_initialstatus_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_initialstatus_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_initialstatus_post[hIndex].func;
postHookFunc(sd);
}
@@ -11000,14 +13519,14 @@ void HP_clif_initialstatus(struct map_session_data *sd) {
}
void HP_clif_cooldown_list(int fd, struct skill_cd *cd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_cooldown_list_pre ) {
+ if (HPMHooks.count.HP_clif_cooldown_list_pre > 0) {
void (*preHookFunc) (int *fd, struct skill_cd **cd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_cooldown_list_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_cooldown_list_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_cooldown_list_pre[hIndex].func;
preHookFunc(&fd, &cd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11015,9 +13534,9 @@ void HP_clif_cooldown_list(int fd, struct skill_cd *cd) {
{
HPMHooks.source.clif.cooldown_list(fd, cd);
}
- if( HPMHooks.count.HP_clif_cooldown_list_post ) {
+ if (HPMHooks.count.HP_clif_cooldown_list_post > 0) {
void (*postHookFunc) (int fd, struct skill_cd *cd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_cooldown_list_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_cooldown_list_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_cooldown_list_post[hIndex].func;
postHookFunc(fd, cd);
}
@@ -11026,14 +13545,14 @@ void HP_clif_cooldown_list(int fd, struct skill_cd *cd) {
}
void HP_clif_updatestatus(struct map_session_data *sd, int type) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_updatestatus_pre ) {
+ if (HPMHooks.count.HP_clif_updatestatus_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_updatestatus_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_updatestatus_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_updatestatus_pre[hIndex].func;
preHookFunc(&sd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11041,9 +13560,9 @@ void HP_clif_updatestatus(struct map_session_data *sd, int type) {
{
HPMHooks.source.clif.updatestatus(sd, type);
}
- if( HPMHooks.count.HP_clif_updatestatus_post ) {
+ if (HPMHooks.count.HP_clif_updatestatus_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_updatestatus_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_updatestatus_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_updatestatus_post[hIndex].func;
postHookFunc(sd, type);
}
@@ -11052,14 +13571,14 @@ void HP_clif_updatestatus(struct map_session_data *sd, int type) {
}
void HP_clif_changestatus(struct map_session_data *sd, int type, int val) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_changestatus_pre ) {
+ if (HPMHooks.count.HP_clif_changestatus_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *type, int *val);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_changestatus_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_changestatus_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_changestatus_pre[hIndex].func;
preHookFunc(&sd, &type, &val);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11067,9 +13586,9 @@ void HP_clif_changestatus(struct map_session_data *sd, int type, int val) {
{
HPMHooks.source.clif.changestatus(sd, type, val);
}
- if( HPMHooks.count.HP_clif_changestatus_post ) {
+ if (HPMHooks.count.HP_clif_changestatus_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int type, int val);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_changestatus_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_changestatus_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_changestatus_post[hIndex].func;
postHookFunc(sd, type, val);
}
@@ -11078,14 +13597,14 @@ void HP_clif_changestatus(struct map_session_data *sd, int type, int val) {
}
void HP_clif_statusupack(struct map_session_data *sd, int type, int ok, int val) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_statusupack_pre ) {
+ if (HPMHooks.count.HP_clif_statusupack_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *type, int *ok, int *val);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_statusupack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_statusupack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_statusupack_pre[hIndex].func;
preHookFunc(&sd, &type, &ok, &val);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11093,9 +13612,9 @@ void HP_clif_statusupack(struct map_session_data *sd, int type, int ok, int val)
{
HPMHooks.source.clif.statusupack(sd, type, ok, val);
}
- if( HPMHooks.count.HP_clif_statusupack_post ) {
+ if (HPMHooks.count.HP_clif_statusupack_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int type, int ok, int val);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_statusupack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_statusupack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_statusupack_post[hIndex].func;
postHookFunc(sd, type, ok, val);
}
@@ -11104,14 +13623,14 @@ void HP_clif_statusupack(struct map_session_data *sd, int type, int ok, int val)
}
void HP_clif_movetoattack(struct map_session_data *sd, struct block_list *bl) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_movetoattack_pre ) {
+ if (HPMHooks.count.HP_clif_movetoattack_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_movetoattack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_movetoattack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_movetoattack_pre[hIndex].func;
preHookFunc(&sd, &bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11119,9 +13638,9 @@ void HP_clif_movetoattack(struct map_session_data *sd, struct block_list *bl) {
{
HPMHooks.source.clif.movetoattack(sd, bl);
}
- if( HPMHooks.count.HP_clif_movetoattack_post ) {
+ if (HPMHooks.count.HP_clif_movetoattack_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_movetoattack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_movetoattack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_movetoattack_post[hIndex].func;
postHookFunc(sd, bl);
}
@@ -11130,14 +13649,14 @@ void HP_clif_movetoattack(struct map_session_data *sd, struct block_list *bl) {
}
void HP_clif_solved_charname(int fd, int charid, const char *name) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_solved_charname_pre ) {
+ if (HPMHooks.count.HP_clif_solved_charname_pre > 0) {
void (*preHookFunc) (int *fd, int *charid, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_solved_charname_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_solved_charname_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_solved_charname_pre[hIndex].func;
preHookFunc(&fd, &charid, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11145,9 +13664,9 @@ void HP_clif_solved_charname(int fd, int charid, const char *name) {
{
HPMHooks.source.clif.solved_charname(fd, charid, name);
}
- if( HPMHooks.count.HP_clif_solved_charname_post ) {
+ if (HPMHooks.count.HP_clif_solved_charname_post > 0) {
void (*postHookFunc) (int fd, int charid, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_solved_charname_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_solved_charname_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_solved_charname_post[hIndex].func;
postHookFunc(fd, charid, name);
}
@@ -11156,14 +13675,14 @@ void HP_clif_solved_charname(int fd, int charid, const char *name) {
}
void HP_clif_charnameupdate(struct map_session_data *ssd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_charnameupdate_pre ) {
+ if (HPMHooks.count.HP_clif_charnameupdate_pre > 0) {
void (*preHookFunc) (struct map_session_data **ssd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_charnameupdate_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_charnameupdate_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_charnameupdate_pre[hIndex].func;
preHookFunc(&ssd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11171,9 +13690,9 @@ void HP_clif_charnameupdate(struct map_session_data *ssd) {
{
HPMHooks.source.clif.charnameupdate(ssd);
}
- if( HPMHooks.count.HP_clif_charnameupdate_post ) {
+ if (HPMHooks.count.HP_clif_charnameupdate_post > 0) {
void (*postHookFunc) (struct map_session_data *ssd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_charnameupdate_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_charnameupdate_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_charnameupdate_post[hIndex].func;
postHookFunc(ssd);
}
@@ -11183,14 +13702,14 @@ void HP_clif_charnameupdate(struct map_session_data *ssd) {
int HP_clif_delayquit(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_clif_delayquit_pre ) {
+ if (HPMHooks.count.HP_clif_delayquit_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_delayquit_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_delayquit_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_delayquit_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -11198,9 +13717,9 @@ int HP_clif_delayquit(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.clif.delayquit(tid, tick, id, data);
}
- if( HPMHooks.count.HP_clif_delayquit_post ) {
+ if (HPMHooks.count.HP_clif_delayquit_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_delayquit_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_delayquit_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_delayquit_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -11209,14 +13728,14 @@ int HP_clif_delayquit(int tid, int64 tick, int id, intptr_t data) {
}
void HP_clif_getareachar_pc(struct map_session_data *sd, struct map_session_data *dstsd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_getareachar_pc_pre ) {
+ if (HPMHooks.count.HP_clif_getareachar_pc_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct map_session_data **dstsd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_getareachar_pc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_getareachar_pc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_getareachar_pc_pre[hIndex].func;
preHookFunc(&sd, &dstsd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11224,9 +13743,9 @@ void HP_clif_getareachar_pc(struct map_session_data *sd, struct map_session_data
{
HPMHooks.source.clif.getareachar_pc(sd, dstsd);
}
- if( HPMHooks.count.HP_clif_getareachar_pc_post ) {
+ if (HPMHooks.count.HP_clif_getareachar_pc_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct map_session_data *dstsd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_getareachar_pc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_getareachar_pc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_getareachar_pc_post[hIndex].func;
postHookFunc(sd, dstsd);
}
@@ -11235,14 +13754,14 @@ void HP_clif_getareachar_pc(struct map_session_data *sd, struct map_session_data
}
void HP_clif_disconnect_ack(struct map_session_data *sd, short result) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_disconnect_ack_pre ) {
+ if (HPMHooks.count.HP_clif_disconnect_ack_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, short *result);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_disconnect_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_disconnect_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_disconnect_ack_pre[hIndex].func;
preHookFunc(&sd, &result);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11250,9 +13769,9 @@ void HP_clif_disconnect_ack(struct map_session_data *sd, short result) {
{
HPMHooks.source.clif.disconnect_ack(sd, result);
}
- if( HPMHooks.count.HP_clif_disconnect_ack_post ) {
+ if (HPMHooks.count.HP_clif_disconnect_ack_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, short result);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_disconnect_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_disconnect_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_disconnect_ack_post[hIndex].func;
postHookFunc(sd, result);
}
@@ -11261,14 +13780,14 @@ void HP_clif_disconnect_ack(struct map_session_data *sd, short result) {
}
void HP_clif_PVPInfo(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_PVPInfo_pre ) {
+ if (HPMHooks.count.HP_clif_PVPInfo_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PVPInfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PVPInfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_PVPInfo_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11276,9 +13795,9 @@ void HP_clif_PVPInfo(struct map_session_data *sd) {
{
HPMHooks.source.clif.PVPInfo(sd);
}
- if( HPMHooks.count.HP_clif_PVPInfo_post ) {
+ if (HPMHooks.count.HP_clif_PVPInfo_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PVPInfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PVPInfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_PVPInfo_post[hIndex].func;
postHookFunc(sd);
}
@@ -11287,14 +13806,14 @@ void HP_clif_PVPInfo(struct map_session_data *sd) {
}
void HP_clif_blacksmith(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_blacksmith_pre ) {
+ if (HPMHooks.count.HP_clif_blacksmith_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_blacksmith_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_blacksmith_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_blacksmith_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11302,9 +13821,9 @@ void HP_clif_blacksmith(struct map_session_data *sd) {
{
HPMHooks.source.clif.blacksmith(sd);
}
- if( HPMHooks.count.HP_clif_blacksmith_post ) {
+ if (HPMHooks.count.HP_clif_blacksmith_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_blacksmith_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_blacksmith_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_blacksmith_post[hIndex].func;
postHookFunc(sd);
}
@@ -11313,14 +13832,14 @@ void HP_clif_blacksmith(struct map_session_data *sd) {
}
void HP_clif_alchemist(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_alchemist_pre ) {
+ if (HPMHooks.count.HP_clif_alchemist_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_alchemist_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_alchemist_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_alchemist_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11328,9 +13847,9 @@ void HP_clif_alchemist(struct map_session_data *sd) {
{
HPMHooks.source.clif.alchemist(sd);
}
- if( HPMHooks.count.HP_clif_alchemist_post ) {
+ if (HPMHooks.count.HP_clif_alchemist_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_alchemist_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_alchemist_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_alchemist_post[hIndex].func;
postHookFunc(sd);
}
@@ -11339,14 +13858,14 @@ void HP_clif_alchemist(struct map_session_data *sd) {
}
void HP_clif_taekwon(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_taekwon_pre ) {
+ if (HPMHooks.count.HP_clif_taekwon_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_taekwon_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_taekwon_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_taekwon_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11354,9 +13873,9 @@ void HP_clif_taekwon(struct map_session_data *sd) {
{
HPMHooks.source.clif.taekwon(sd);
}
- if( HPMHooks.count.HP_clif_taekwon_post ) {
+ if (HPMHooks.count.HP_clif_taekwon_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_taekwon_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_taekwon_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_taekwon_post[hIndex].func;
postHookFunc(sd);
}
@@ -11365,14 +13884,14 @@ void HP_clif_taekwon(struct map_session_data *sd) {
}
void HP_clif_ranking_pk(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_ranking_pk_pre ) {
+ if (HPMHooks.count.HP_clif_ranking_pk_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_ranking_pk_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_ranking_pk_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_ranking_pk_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11380,9 +13899,9 @@ void HP_clif_ranking_pk(struct map_session_data *sd) {
{
HPMHooks.source.clif.ranking_pk(sd);
}
- if( HPMHooks.count.HP_clif_ranking_pk_post ) {
+ if (HPMHooks.count.HP_clif_ranking_pk_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_ranking_pk_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_ranking_pk_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_ranking_pk_post[hIndex].func;
postHookFunc(sd);
}
@@ -11391,14 +13910,14 @@ void HP_clif_ranking_pk(struct map_session_data *sd) {
}
void HP_clif_quitsave(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_quitsave_pre ) {
+ if (HPMHooks.count.HP_clif_quitsave_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_quitsave_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_quitsave_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_quitsave_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11406,9 +13925,9 @@ void HP_clif_quitsave(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.quitsave(fd, sd);
}
- if( HPMHooks.count.HP_clif_quitsave_post ) {
+ if (HPMHooks.count.HP_clif_quitsave_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_quitsave_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_quitsave_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_quitsave_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -11417,14 +13936,14 @@ void HP_clif_quitsave(int fd, struct map_session_data *sd) {
}
void HP_clif_misceffect(struct block_list *bl, int type) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_misceffect_pre ) {
+ if (HPMHooks.count.HP_clif_misceffect_pre > 0) {
void (*preHookFunc) (struct block_list **bl, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_misceffect_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_misceffect_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_misceffect_pre[hIndex].func;
preHookFunc(&bl, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11432,9 +13951,9 @@ void HP_clif_misceffect(struct block_list *bl, int type) {
{
HPMHooks.source.clif.misceffect(bl, type);
}
- if( HPMHooks.count.HP_clif_misceffect_post ) {
+ if (HPMHooks.count.HP_clif_misceffect_post > 0) {
void (*postHookFunc) (struct block_list *bl, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_misceffect_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_misceffect_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_misceffect_post[hIndex].func;
postHookFunc(bl, type);
}
@@ -11443,14 +13962,14 @@ void HP_clif_misceffect(struct block_list *bl, int type) {
}
void HP_clif_changeoption(struct block_list *bl) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_changeoption_pre ) {
+ if (HPMHooks.count.HP_clif_changeoption_pre > 0) {
void (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_changeoption_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_changeoption_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_changeoption_pre[hIndex].func;
preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11458,9 +13977,9 @@ void HP_clif_changeoption(struct block_list *bl) {
{
HPMHooks.source.clif.changeoption(bl);
}
- if( HPMHooks.count.HP_clif_changeoption_post ) {
+ if (HPMHooks.count.HP_clif_changeoption_post > 0) {
void (*postHookFunc) (struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_changeoption_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_changeoption_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_changeoption_post[hIndex].func;
postHookFunc(bl);
}
@@ -11469,14 +13988,14 @@ void HP_clif_changeoption(struct block_list *bl) {
}
void HP_clif_changeoption2(struct block_list *bl) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_changeoption2_pre ) {
+ if (HPMHooks.count.HP_clif_changeoption2_pre > 0) {
void (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_changeoption2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_changeoption2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_changeoption2_pre[hIndex].func;
preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11484,9 +14003,9 @@ void HP_clif_changeoption2(struct block_list *bl) {
{
HPMHooks.source.clif.changeoption2(bl);
}
- if( HPMHooks.count.HP_clif_changeoption2_post ) {
+ if (HPMHooks.count.HP_clif_changeoption2_post > 0) {
void (*postHookFunc) (struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_changeoption2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_changeoption2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_changeoption2_post[hIndex].func;
postHookFunc(bl);
}
@@ -11495,14 +14014,14 @@ void HP_clif_changeoption2(struct block_list *bl) {
}
void HP_clif_emotion(struct block_list *bl, int type) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_emotion_pre ) {
+ if (HPMHooks.count.HP_clif_emotion_pre > 0) {
void (*preHookFunc) (struct block_list **bl, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_emotion_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_emotion_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_emotion_pre[hIndex].func;
preHookFunc(&bl, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11510,9 +14029,9 @@ void HP_clif_emotion(struct block_list *bl, int type) {
{
HPMHooks.source.clif.emotion(bl, type);
}
- if( HPMHooks.count.HP_clif_emotion_post ) {
+ if (HPMHooks.count.HP_clif_emotion_post > 0) {
void (*postHookFunc) (struct block_list *bl, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_emotion_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_emotion_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_emotion_post[hIndex].func;
postHookFunc(bl, type);
}
@@ -11521,14 +14040,14 @@ void HP_clif_emotion(struct block_list *bl, int type) {
}
void HP_clif_talkiebox(struct block_list *bl, const char *talkie) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_talkiebox_pre ) {
+ if (HPMHooks.count.HP_clif_talkiebox_pre > 0) {
void (*preHookFunc) (struct block_list **bl, const char **talkie);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_talkiebox_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_talkiebox_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_talkiebox_pre[hIndex].func;
preHookFunc(&bl, &talkie);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11536,9 +14055,9 @@ void HP_clif_talkiebox(struct block_list *bl, const char *talkie) {
{
HPMHooks.source.clif.talkiebox(bl, talkie);
}
- if( HPMHooks.count.HP_clif_talkiebox_post ) {
+ if (HPMHooks.count.HP_clif_talkiebox_post > 0) {
void (*postHookFunc) (struct block_list *bl, const char *talkie);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_talkiebox_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_talkiebox_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_talkiebox_post[hIndex].func;
postHookFunc(bl, talkie);
}
@@ -11547,14 +14066,14 @@ void HP_clif_talkiebox(struct block_list *bl, const char *talkie) {
}
void HP_clif_wedding_effect(struct block_list *bl) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_wedding_effect_pre ) {
+ if (HPMHooks.count.HP_clif_wedding_effect_pre > 0) {
void (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_wedding_effect_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_wedding_effect_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_wedding_effect_pre[hIndex].func;
preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11562,9 +14081,9 @@ void HP_clif_wedding_effect(struct block_list *bl) {
{
HPMHooks.source.clif.wedding_effect(bl);
}
- if( HPMHooks.count.HP_clif_wedding_effect_post ) {
+ if (HPMHooks.count.HP_clif_wedding_effect_post > 0) {
void (*postHookFunc) (struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_wedding_effect_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_wedding_effect_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_wedding_effect_post[hIndex].func;
postHookFunc(bl);
}
@@ -11573,14 +14092,14 @@ void HP_clif_wedding_effect(struct block_list *bl) {
}
void HP_clif_divorced(struct map_session_data *sd, const char *name) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_divorced_pre ) {
+ if (HPMHooks.count.HP_clif_divorced_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_divorced_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_divorced_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_divorced_pre[hIndex].func;
preHookFunc(&sd, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11588,9 +14107,9 @@ void HP_clif_divorced(struct map_session_data *sd, const char *name) {
{
HPMHooks.source.clif.divorced(sd, name);
}
- if( HPMHooks.count.HP_clif_divorced_post ) {
+ if (HPMHooks.count.HP_clif_divorced_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_divorced_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_divorced_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_divorced_post[hIndex].func;
postHookFunc(sd, name);
}
@@ -11599,14 +14118,14 @@ void HP_clif_divorced(struct map_session_data *sd, const char *name) {
}
void HP_clif_callpartner(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_callpartner_pre ) {
+ if (HPMHooks.count.HP_clif_callpartner_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_callpartner_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_callpartner_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_callpartner_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11614,9 +14133,9 @@ void HP_clif_callpartner(struct map_session_data *sd) {
{
HPMHooks.source.clif.callpartner(sd);
}
- if( HPMHooks.count.HP_clif_callpartner_post ) {
+ if (HPMHooks.count.HP_clif_callpartner_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_callpartner_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_callpartner_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_callpartner_post[hIndex].func;
postHookFunc(sd);
}
@@ -11626,14 +14145,14 @@ void HP_clif_callpartner(struct map_session_data *sd) {
int HP_clif_skill_damage(struct block_list *src, struct block_list *dst, int64 tick, int sdelay, int ddelay, int64 damage, int div, uint16 skill_id, uint16 skill_lv, int type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_clif_skill_damage_pre ) {
+ if (HPMHooks.count.HP_clif_skill_damage_pre > 0) {
int (*preHookFunc) (struct block_list **src, struct block_list **dst, int64 *tick, int *sdelay, int *ddelay, int64 *damage, int *div, uint16 *skill_id, uint16 *skill_lv, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_damage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_damage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_skill_damage_pre[hIndex].func;
retVal___ = preHookFunc(&src, &dst, &tick, &sdelay, &ddelay, &damage, &div, &skill_id, &skill_lv, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -11641,9 +14160,9 @@ int HP_clif_skill_damage(struct block_list *src, struct block_list *dst, int64 t
{
retVal___ = HPMHooks.source.clif.skill_damage(src, dst, tick, sdelay, ddelay, damage, div, skill_id, skill_lv, type);
}
- if( HPMHooks.count.HP_clif_skill_damage_post ) {
+ if (HPMHooks.count.HP_clif_skill_damage_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src, struct block_list *dst, int64 tick, int sdelay, int ddelay, int64 damage, int div, uint16 skill_id, uint16 skill_lv, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_damage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_damage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_skill_damage_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, dst, tick, sdelay, ddelay, damage, div, skill_id, skill_lv, type);
}
@@ -11653,14 +14172,14 @@ int HP_clif_skill_damage(struct block_list *src, struct block_list *dst, int64 t
int HP_clif_skill_nodamage(struct block_list *src, struct block_list *dst, uint16 skill_id, int heal, int fail) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_clif_skill_nodamage_pre ) {
+ if (HPMHooks.count.HP_clif_skill_nodamage_pre > 0) {
int (*preHookFunc) (struct block_list **src, struct block_list **dst, uint16 *skill_id, int *heal, int *fail);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_nodamage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_nodamage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_skill_nodamage_pre[hIndex].func;
retVal___ = preHookFunc(&src, &dst, &skill_id, &heal, &fail);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -11668,9 +14187,9 @@ int HP_clif_skill_nodamage(struct block_list *src, struct block_list *dst, uint1
{
retVal___ = HPMHooks.source.clif.skill_nodamage(src, dst, skill_id, heal, fail);
}
- if( HPMHooks.count.HP_clif_skill_nodamage_post ) {
+ if (HPMHooks.count.HP_clif_skill_nodamage_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src, struct block_list *dst, uint16 skill_id, int heal, int fail);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_nodamage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_nodamage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_skill_nodamage_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, dst, skill_id, heal, fail);
}
@@ -11679,14 +14198,14 @@ int HP_clif_skill_nodamage(struct block_list *src, struct block_list *dst, uint1
}
void HP_clif_skill_poseffect(struct block_list *src, uint16 skill_id, int val, int x, int y, int64 tick) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_skill_poseffect_pre ) {
+ if (HPMHooks.count.HP_clif_skill_poseffect_pre > 0) {
void (*preHookFunc) (struct block_list **src, uint16 *skill_id, int *val, int *x, int *y, int64 *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_poseffect_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_poseffect_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_skill_poseffect_pre[hIndex].func;
preHookFunc(&src, &skill_id, &val, &x, &y, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11694,9 +14213,9 @@ void HP_clif_skill_poseffect(struct block_list *src, uint16 skill_id, int val, i
{
HPMHooks.source.clif.skill_poseffect(src, skill_id, val, x, y, tick);
}
- if( HPMHooks.count.HP_clif_skill_poseffect_post ) {
+ if (HPMHooks.count.HP_clif_skill_poseffect_post > 0) {
void (*postHookFunc) (struct block_list *src, uint16 skill_id, int val, int x, int y, int64 tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_poseffect_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_poseffect_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_skill_poseffect_post[hIndex].func;
postHookFunc(src, skill_id, val, x, y, tick);
}
@@ -11705,14 +14224,14 @@ void HP_clif_skill_poseffect(struct block_list *src, uint16 skill_id, int val, i
}
void HP_clif_skill_estimation(struct map_session_data *sd, struct block_list *dst) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_skill_estimation_pre ) {
+ if (HPMHooks.count.HP_clif_skill_estimation_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct block_list **dst);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_estimation_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_estimation_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_skill_estimation_pre[hIndex].func;
preHookFunc(&sd, &dst);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11720,9 +14239,9 @@ void HP_clif_skill_estimation(struct map_session_data *sd, struct block_list *ds
{
HPMHooks.source.clif.skill_estimation(sd, dst);
}
- if( HPMHooks.count.HP_clif_skill_estimation_post ) {
+ if (HPMHooks.count.HP_clif_skill_estimation_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct block_list *dst);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_estimation_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_estimation_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_skill_estimation_post[hIndex].func;
postHookFunc(sd, dst);
}
@@ -11731,14 +14250,14 @@ void HP_clif_skill_estimation(struct map_session_data *sd, struct block_list *ds
}
void HP_clif_skill_warppoint(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv, unsigned short map1, unsigned short map2, unsigned short map3, unsigned short map4) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_skill_warppoint_pre ) {
+ if (HPMHooks.count.HP_clif_skill_warppoint_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, uint16 *skill_id, uint16 *skill_lv, unsigned short *map1, unsigned short *map2, unsigned short *map3, unsigned short *map4);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_warppoint_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_warppoint_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_skill_warppoint_pre[hIndex].func;
preHookFunc(&sd, &skill_id, &skill_lv, &map1, &map2, &map3, &map4);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11746,9 +14265,9 @@ void HP_clif_skill_warppoint(struct map_session_data *sd, uint16 skill_id, uint1
{
HPMHooks.source.clif.skill_warppoint(sd, skill_id, skill_lv, map1, map2, map3, map4);
}
- if( HPMHooks.count.HP_clif_skill_warppoint_post ) {
+ if (HPMHooks.count.HP_clif_skill_warppoint_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, uint16 skill_id, uint16 skill_lv, unsigned short map1, unsigned short map2, unsigned short map3, unsigned short map4);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_warppoint_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_warppoint_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_skill_warppoint_post[hIndex].func;
postHookFunc(sd, skill_id, skill_lv, map1, map2, map3, map4);
}
@@ -11757,14 +14276,14 @@ void HP_clif_skill_warppoint(struct map_session_data *sd, uint16 skill_id, uint1
}
void HP_clif_useskill(struct block_list *bl, int src_id, int dst_id, int dst_x, int dst_y, uint16 skill_id, uint16 skill_lv, int casttime) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_useskill_pre ) {
+ if (HPMHooks.count.HP_clif_useskill_pre > 0) {
void (*preHookFunc) (struct block_list **bl, int *src_id, int *dst_id, int *dst_x, int *dst_y, uint16 *skill_id, uint16 *skill_lv, int *casttime);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_useskill_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_useskill_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_useskill_pre[hIndex].func;
preHookFunc(&bl, &src_id, &dst_id, &dst_x, &dst_y, &skill_id, &skill_lv, &casttime);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11772,9 +14291,9 @@ void HP_clif_useskill(struct block_list *bl, int src_id, int dst_id, int dst_x,
{
HPMHooks.source.clif.useskill(bl, src_id, dst_id, dst_x, dst_y, skill_id, skill_lv, casttime);
}
- if( HPMHooks.count.HP_clif_useskill_post ) {
+ if (HPMHooks.count.HP_clif_useskill_post > 0) {
void (*postHookFunc) (struct block_list *bl, int src_id, int dst_id, int dst_x, int dst_y, uint16 skill_id, uint16 skill_lv, int casttime);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_useskill_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_useskill_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_useskill_post[hIndex].func;
postHookFunc(bl, src_id, dst_id, dst_x, dst_y, skill_id, skill_lv, casttime);
}
@@ -11783,14 +14302,14 @@ void HP_clif_useskill(struct block_list *bl, int src_id, int dst_id, int dst_x,
}
void HP_clif_produce_effect(struct map_session_data *sd, int flag, int nameid) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_produce_effect_pre ) {
+ if (HPMHooks.count.HP_clif_produce_effect_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *flag, int *nameid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_produce_effect_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_produce_effect_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_produce_effect_pre[hIndex].func;
preHookFunc(&sd, &flag, &nameid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11798,9 +14317,9 @@ void HP_clif_produce_effect(struct map_session_data *sd, int flag, int nameid) {
{
HPMHooks.source.clif.produce_effect(sd, flag, nameid);
}
- if( HPMHooks.count.HP_clif_produce_effect_post ) {
+ if (HPMHooks.count.HP_clif_produce_effect_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int flag, int nameid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_produce_effect_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_produce_effect_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_produce_effect_post[hIndex].func;
postHookFunc(sd, flag, nameid);
}
@@ -11809,14 +14328,14 @@ void HP_clif_produce_effect(struct map_session_data *sd, int flag, int nameid) {
}
void HP_clif_devotion(struct block_list *src, struct map_session_data *tsd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_devotion_pre ) {
+ if (HPMHooks.count.HP_clif_devotion_pre > 0) {
void (*preHookFunc) (struct block_list **src, struct map_session_data **tsd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_devotion_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_devotion_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_devotion_pre[hIndex].func;
preHookFunc(&src, &tsd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11824,9 +14343,9 @@ void HP_clif_devotion(struct block_list *src, struct map_session_data *tsd) {
{
HPMHooks.source.clif.devotion(src, tsd);
}
- if( HPMHooks.count.HP_clif_devotion_post ) {
+ if (HPMHooks.count.HP_clif_devotion_post > 0) {
void (*postHookFunc) (struct block_list *src, struct map_session_data *tsd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_devotion_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_devotion_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_devotion_post[hIndex].func;
postHookFunc(src, tsd);
}
@@ -11835,14 +14354,14 @@ void HP_clif_devotion(struct block_list *src, struct map_session_data *tsd) {
}
void HP_clif_spiritball(struct block_list *bl) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_spiritball_pre ) {
+ if (HPMHooks.count.HP_clif_spiritball_pre > 0) {
void (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_spiritball_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_spiritball_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_spiritball_pre[hIndex].func;
preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11850,9 +14369,9 @@ void HP_clif_spiritball(struct block_list *bl) {
{
HPMHooks.source.clif.spiritball(bl);
}
- if( HPMHooks.count.HP_clif_spiritball_post ) {
+ if (HPMHooks.count.HP_clif_spiritball_post > 0) {
void (*postHookFunc) (struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_spiritball_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_spiritball_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_spiritball_post[hIndex].func;
postHookFunc(bl);
}
@@ -11861,14 +14380,14 @@ void HP_clif_spiritball(struct block_list *bl) {
}
void HP_clif_spiritball_single(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_spiritball_single_pre ) {
+ if (HPMHooks.count.HP_clif_spiritball_single_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_spiritball_single_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_spiritball_single_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_spiritball_single_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11876,9 +14395,9 @@ void HP_clif_spiritball_single(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.spiritball_single(fd, sd);
}
- if( HPMHooks.count.HP_clif_spiritball_single_post ) {
+ if (HPMHooks.count.HP_clif_spiritball_single_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_spiritball_single_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_spiritball_single_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_spiritball_single_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -11887,14 +14406,14 @@ void HP_clif_spiritball_single(int fd, struct map_session_data *sd) {
}
void HP_clif_bladestop(struct block_list *src, int dst_id, int active) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_bladestop_pre ) {
+ if (HPMHooks.count.HP_clif_bladestop_pre > 0) {
void (*preHookFunc) (struct block_list **src, int *dst_id, int *active);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bladestop_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bladestop_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_bladestop_pre[hIndex].func;
preHookFunc(&src, &dst_id, &active);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11902,9 +14421,9 @@ void HP_clif_bladestop(struct block_list *src, int dst_id, int active) {
{
HPMHooks.source.clif.bladestop(src, dst_id, active);
}
- if( HPMHooks.count.HP_clif_bladestop_post ) {
+ if (HPMHooks.count.HP_clif_bladestop_post > 0) {
void (*postHookFunc) (struct block_list *src, int dst_id, int active);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bladestop_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bladestop_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_bladestop_post[hIndex].func;
postHookFunc(src, dst_id, active);
}
@@ -11913,14 +14432,14 @@ void HP_clif_bladestop(struct block_list *src, int dst_id, int active) {
}
void HP_clif_mvp_effect(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_mvp_effect_pre ) {
+ if (HPMHooks.count.HP_clif_mvp_effect_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mvp_effect_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mvp_effect_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_mvp_effect_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11928,9 +14447,9 @@ void HP_clif_mvp_effect(struct map_session_data *sd) {
{
HPMHooks.source.clif.mvp_effect(sd);
}
- if( HPMHooks.count.HP_clif_mvp_effect_post ) {
+ if (HPMHooks.count.HP_clif_mvp_effect_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mvp_effect_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mvp_effect_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_mvp_effect_post[hIndex].func;
postHookFunc(sd);
}
@@ -11939,14 +14458,14 @@ void HP_clif_mvp_effect(struct map_session_data *sd) {
}
void HP_clif_heal(int fd, int type, int val) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_heal_pre ) {
+ if (HPMHooks.count.HP_clif_heal_pre > 0) {
void (*preHookFunc) (int *fd, int *type, int *val);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_heal_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_heal_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_heal_pre[hIndex].func;
preHookFunc(&fd, &type, &val);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11954,9 +14473,9 @@ void HP_clif_heal(int fd, int type, int val) {
{
HPMHooks.source.clif.heal(fd, type, val);
}
- if( HPMHooks.count.HP_clif_heal_post ) {
+ if (HPMHooks.count.HP_clif_heal_post > 0) {
void (*postHookFunc) (int fd, int type, int val);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_heal_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_heal_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_heal_post[hIndex].func;
postHookFunc(fd, type, val);
}
@@ -11965,14 +14484,14 @@ void HP_clif_heal(int fd, int type, int val) {
}
void HP_clif_resurrection(struct block_list *bl, int type) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_resurrection_pre ) {
+ if (HPMHooks.count.HP_clif_resurrection_pre > 0) {
void (*preHookFunc) (struct block_list **bl, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_resurrection_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_resurrection_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_resurrection_pre[hIndex].func;
preHookFunc(&bl, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -11980,9 +14499,9 @@ void HP_clif_resurrection(struct block_list *bl, int type) {
{
HPMHooks.source.clif.resurrection(bl, type);
}
- if( HPMHooks.count.HP_clif_resurrection_post ) {
+ if (HPMHooks.count.HP_clif_resurrection_post > 0) {
void (*postHookFunc) (struct block_list *bl, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_resurrection_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_resurrection_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_resurrection_post[hIndex].func;
postHookFunc(bl, type);
}
@@ -11991,14 +14510,14 @@ void HP_clif_resurrection(struct block_list *bl, int type) {
}
void HP_clif_refine(int fd, int fail, int index, int val) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_refine_pre ) {
+ if (HPMHooks.count.HP_clif_refine_pre > 0) {
void (*preHookFunc) (int *fd, int *fail, int *index, int *val);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_refine_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_refine_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_refine_pre[hIndex].func;
preHookFunc(&fd, &fail, &index, &val);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12006,9 +14525,9 @@ void HP_clif_refine(int fd, int fail, int index, int val) {
{
HPMHooks.source.clif.refine(fd, fail, index, val);
}
- if( HPMHooks.count.HP_clif_refine_post ) {
+ if (HPMHooks.count.HP_clif_refine_post > 0) {
void (*postHookFunc) (int fd, int fail, int index, int val);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_refine_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_refine_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_refine_post[hIndex].func;
postHookFunc(fd, fail, index, val);
}
@@ -12017,14 +14536,14 @@ void HP_clif_refine(int fd, int fail, int index, int val) {
}
void HP_clif_weather(int16 m) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_weather_pre ) {
+ if (HPMHooks.count.HP_clif_weather_pre > 0) {
void (*preHookFunc) (int16 *m);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_weather_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_weather_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_weather_pre[hIndex].func;
preHookFunc(&m);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12032,9 +14551,9 @@ void HP_clif_weather(int16 m) {
{
HPMHooks.source.clif.weather(m);
}
- if( HPMHooks.count.HP_clif_weather_post ) {
+ if (HPMHooks.count.HP_clif_weather_post > 0) {
void (*postHookFunc) (int16 m);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_weather_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_weather_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_weather_post[hIndex].func;
postHookFunc(m);
}
@@ -12043,14 +14562,14 @@ void HP_clif_weather(int16 m) {
}
void HP_clif_specialeffect(struct block_list *bl, int type, enum send_target target) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_specialeffect_pre ) {
+ if (HPMHooks.count.HP_clif_specialeffect_pre > 0) {
void (*preHookFunc) (struct block_list **bl, int *type, enum send_target *target);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_specialeffect_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_specialeffect_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_specialeffect_pre[hIndex].func;
preHookFunc(&bl, &type, &target);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12058,9 +14577,9 @@ void HP_clif_specialeffect(struct block_list *bl, int type, enum send_target tar
{
HPMHooks.source.clif.specialeffect(bl, type, target);
}
- if( HPMHooks.count.HP_clif_specialeffect_post ) {
+ if (HPMHooks.count.HP_clif_specialeffect_post > 0) {
void (*postHookFunc) (struct block_list *bl, int type, enum send_target target);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_specialeffect_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_specialeffect_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_specialeffect_post[hIndex].func;
postHookFunc(bl, type, target);
}
@@ -12069,14 +14588,14 @@ void HP_clif_specialeffect(struct block_list *bl, int type, enum send_target tar
}
void HP_clif_specialeffect_single(struct block_list *bl, int type, int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_specialeffect_single_pre ) {
+ if (HPMHooks.count.HP_clif_specialeffect_single_pre > 0) {
void (*preHookFunc) (struct block_list **bl, int *type, int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_specialeffect_single_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_specialeffect_single_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_specialeffect_single_pre[hIndex].func;
preHookFunc(&bl, &type, &fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12084,9 +14603,9 @@ void HP_clif_specialeffect_single(struct block_list *bl, int type, int fd) {
{
HPMHooks.source.clif.specialeffect_single(bl, type, fd);
}
- if( HPMHooks.count.HP_clif_specialeffect_single_post ) {
+ if (HPMHooks.count.HP_clif_specialeffect_single_post > 0) {
void (*postHookFunc) (struct block_list *bl, int type, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_specialeffect_single_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_specialeffect_single_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_specialeffect_single_post[hIndex].func;
postHookFunc(bl, type, fd);
}
@@ -12095,14 +14614,14 @@ void HP_clif_specialeffect_single(struct block_list *bl, int type, int fd) {
}
void HP_clif_specialeffect_value(struct block_list *bl, int effect_id, int num, send_target target) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_specialeffect_value_pre ) {
+ if (HPMHooks.count.HP_clif_specialeffect_value_pre > 0) {
void (*preHookFunc) (struct block_list **bl, int *effect_id, int *num, send_target *target);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_specialeffect_value_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_specialeffect_value_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_specialeffect_value_pre[hIndex].func;
preHookFunc(&bl, &effect_id, &num, &target);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12110,25 +14629,77 @@ void HP_clif_specialeffect_value(struct block_list *bl, int effect_id, int num,
{
HPMHooks.source.clif.specialeffect_value(bl, effect_id, num, target);
}
- if( HPMHooks.count.HP_clif_specialeffect_value_post ) {
+ if (HPMHooks.count.HP_clif_specialeffect_value_post > 0) {
void (*postHookFunc) (struct block_list *bl, int effect_id, int num, send_target target);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_specialeffect_value_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_specialeffect_value_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_specialeffect_value_post[hIndex].func;
postHookFunc(bl, effect_id, num, target);
}
}
return;
}
+void HP_clif_removeSpecialEffect(struct block_list *bl, int effectId, enum send_target target) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_removeSpecialEffect_pre > 0) {
+ void (*preHookFunc) (struct block_list **bl, int *effectId, enum send_target *target);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_removeSpecialEffect_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_removeSpecialEffect_pre[hIndex].func;
+ preHookFunc(&bl, &effectId, &target);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.removeSpecialEffect(bl, effectId, target);
+ }
+ if (HPMHooks.count.HP_clif_removeSpecialEffect_post > 0) {
+ void (*postHookFunc) (struct block_list *bl, int effectId, enum send_target target);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_removeSpecialEffect_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_removeSpecialEffect_post[hIndex].func;
+ postHookFunc(bl, effectId, target);
+ }
+ }
+ return;
+}
+void HP_clif_removeSpecialEffect_single(struct block_list *bl, int effectId, struct block_list *targetBl) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_removeSpecialEffect_single_pre > 0) {
+ void (*preHookFunc) (struct block_list **bl, int *effectId, struct block_list **targetBl);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_removeSpecialEffect_single_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_removeSpecialEffect_single_pre[hIndex].func;
+ preHookFunc(&bl, &effectId, &targetBl);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.removeSpecialEffect_single(bl, effectId, targetBl);
+ }
+ if (HPMHooks.count.HP_clif_removeSpecialEffect_single_post > 0) {
+ void (*postHookFunc) (struct block_list *bl, int effectId, struct block_list *targetBl);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_removeSpecialEffect_single_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_removeSpecialEffect_single_post[hIndex].func;
+ postHookFunc(bl, effectId, targetBl);
+ }
+ }
+ return;
+}
void HP_clif_millenniumshield(struct block_list *bl, short shields) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_millenniumshield_pre ) {
+ if (HPMHooks.count.HP_clif_millenniumshield_pre > 0) {
void (*preHookFunc) (struct block_list **bl, short *shields);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_millenniumshield_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_millenniumshield_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_millenniumshield_pre[hIndex].func;
preHookFunc(&bl, &shields);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12136,9 +14707,9 @@ void HP_clif_millenniumshield(struct block_list *bl, short shields) {
{
HPMHooks.source.clif.millenniumshield(bl, shields);
}
- if( HPMHooks.count.HP_clif_millenniumshield_post ) {
+ if (HPMHooks.count.HP_clif_millenniumshield_post > 0) {
void (*postHookFunc) (struct block_list *bl, short shields);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_millenniumshield_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_millenniumshield_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_millenniumshield_post[hIndex].func;
postHookFunc(bl, shields);
}
@@ -12147,14 +14718,14 @@ void HP_clif_millenniumshield(struct block_list *bl, short shields) {
}
void HP_clif_spiritcharm(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_spiritcharm_pre ) {
+ if (HPMHooks.count.HP_clif_spiritcharm_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_spiritcharm_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_spiritcharm_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_spiritcharm_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12162,9 +14733,9 @@ void HP_clif_spiritcharm(struct map_session_data *sd) {
{
HPMHooks.source.clif.spiritcharm(sd);
}
- if( HPMHooks.count.HP_clif_spiritcharm_post ) {
+ if (HPMHooks.count.HP_clif_spiritcharm_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_spiritcharm_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_spiritcharm_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_spiritcharm_post[hIndex].func;
postHookFunc(sd);
}
@@ -12173,14 +14744,14 @@ void HP_clif_spiritcharm(struct map_session_data *sd) {
}
void HP_clif_charm_single(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_charm_single_pre ) {
+ if (HPMHooks.count.HP_clif_charm_single_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_charm_single_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_charm_single_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_charm_single_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12188,9 +14759,9 @@ void HP_clif_charm_single(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.charm_single(fd, sd);
}
- if( HPMHooks.count.HP_clif_charm_single_post ) {
+ if (HPMHooks.count.HP_clif_charm_single_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_charm_single_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_charm_single_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_charm_single_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -12199,14 +14770,14 @@ void HP_clif_charm_single(int fd, struct map_session_data *sd) {
}
void HP_clif_snap(struct block_list *bl, short x, short y) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_snap_pre ) {
+ if (HPMHooks.count.HP_clif_snap_pre > 0) {
void (*preHookFunc) (struct block_list **bl, short *x, short *y);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_snap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_snap_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_snap_pre[hIndex].func;
preHookFunc(&bl, &x, &y);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12214,9 +14785,9 @@ void HP_clif_snap(struct block_list *bl, short x, short y) {
{
HPMHooks.source.clif.snap(bl, x, y);
}
- if( HPMHooks.count.HP_clif_snap_post ) {
+ if (HPMHooks.count.HP_clif_snap_post > 0) {
void (*postHookFunc) (struct block_list *bl, short x, short y);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_snap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_snap_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_snap_post[hIndex].func;
postHookFunc(bl, x, y);
}
@@ -12225,14 +14796,14 @@ void HP_clif_snap(struct block_list *bl, short x, short y) {
}
void HP_clif_weather_check(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_weather_check_pre ) {
+ if (HPMHooks.count.HP_clif_weather_check_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_weather_check_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_weather_check_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_weather_check_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12240,9 +14811,9 @@ void HP_clif_weather_check(struct map_session_data *sd) {
{
HPMHooks.source.clif.weather_check(sd);
}
- if( HPMHooks.count.HP_clif_weather_check_post ) {
+ if (HPMHooks.count.HP_clif_weather_check_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_weather_check_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_weather_check_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_weather_check_post[hIndex].func;
postHookFunc(sd);
}
@@ -12251,14 +14822,14 @@ void HP_clif_weather_check(struct map_session_data *sd) {
}
void HP_clif_playBGM(struct map_session_data *sd, const char *name) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_playBGM_pre ) {
+ if (HPMHooks.count.HP_clif_playBGM_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_playBGM_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_playBGM_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_playBGM_pre[hIndex].func;
preHookFunc(&sd, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12266,9 +14837,9 @@ void HP_clif_playBGM(struct map_session_data *sd, const char *name) {
{
HPMHooks.source.clif.playBGM(sd, name);
}
- if( HPMHooks.count.HP_clif_playBGM_post ) {
+ if (HPMHooks.count.HP_clif_playBGM_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_playBGM_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_playBGM_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_playBGM_post[hIndex].func;
postHookFunc(sd, name);
}
@@ -12277,14 +14848,14 @@ void HP_clif_playBGM(struct map_session_data *sd, const char *name) {
}
void HP_clif_soundeffect(struct map_session_data *sd, struct block_list *bl, const char *name, int type) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_soundeffect_pre ) {
+ if (HPMHooks.count.HP_clif_soundeffect_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct block_list **bl, const char **name, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_soundeffect_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_soundeffect_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_soundeffect_pre[hIndex].func;
preHookFunc(&sd, &bl, &name, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12292,9 +14863,9 @@ void HP_clif_soundeffect(struct map_session_data *sd, struct block_list *bl, con
{
HPMHooks.source.clif.soundeffect(sd, bl, name, type);
}
- if( HPMHooks.count.HP_clif_soundeffect_post ) {
+ if (HPMHooks.count.HP_clif_soundeffect_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct block_list *bl, const char *name, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_soundeffect_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_soundeffect_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_soundeffect_post[hIndex].func;
postHookFunc(sd, bl, name, type);
}
@@ -12303,14 +14874,14 @@ void HP_clif_soundeffect(struct map_session_data *sd, struct block_list *bl, con
}
void HP_clif_soundeffectall(struct block_list *bl, const char *name, int type, enum send_target coverage) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_soundeffectall_pre ) {
+ if (HPMHooks.count.HP_clif_soundeffectall_pre > 0) {
void (*preHookFunc) (struct block_list **bl, const char **name, int *type, enum send_target *coverage);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_soundeffectall_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_soundeffectall_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_soundeffectall_pre[hIndex].func;
preHookFunc(&bl, &name, &type, &coverage);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12318,9 +14889,9 @@ void HP_clif_soundeffectall(struct block_list *bl, const char *name, int type, e
{
HPMHooks.source.clif.soundeffectall(bl, name, type, coverage);
}
- if( HPMHooks.count.HP_clif_soundeffectall_post ) {
+ if (HPMHooks.count.HP_clif_soundeffectall_post > 0) {
void (*postHookFunc) (struct block_list *bl, const char *name, int type, enum send_target coverage);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_soundeffectall_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_soundeffectall_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_soundeffectall_post[hIndex].func;
postHookFunc(bl, name, type, coverage);
}
@@ -12329,14 +14900,14 @@ void HP_clif_soundeffectall(struct block_list *bl, const char *name, int type, e
}
void HP_clif_GlobalMessage(struct block_list *bl, const char *message) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_GlobalMessage_pre ) {
+ if (HPMHooks.count.HP_clif_GlobalMessage_pre > 0) {
void (*preHookFunc) (struct block_list **bl, const char **message);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_GlobalMessage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_GlobalMessage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_GlobalMessage_pre[hIndex].func;
preHookFunc(&bl, &message);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12344,9 +14915,9 @@ void HP_clif_GlobalMessage(struct block_list *bl, const char *message) {
{
HPMHooks.source.clif.GlobalMessage(bl, message);
}
- if( HPMHooks.count.HP_clif_GlobalMessage_post ) {
+ if (HPMHooks.count.HP_clif_GlobalMessage_post > 0) {
void (*postHookFunc) (struct block_list *bl, const char *message);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_GlobalMessage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_GlobalMessage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_GlobalMessage_post[hIndex].func;
postHookFunc(bl, message);
}
@@ -12355,14 +14926,14 @@ void HP_clif_GlobalMessage(struct block_list *bl, const char *message) {
}
void HP_clif_createchat(struct map_session_data *sd, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_createchat_pre ) {
+ if (HPMHooks.count.HP_clif_createchat_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_createchat_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_createchat_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_createchat_pre[hIndex].func;
preHookFunc(&sd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12370,9 +14941,9 @@ void HP_clif_createchat(struct map_session_data *sd, int flag) {
{
HPMHooks.source.clif.createchat(sd, flag);
}
- if( HPMHooks.count.HP_clif_createchat_post ) {
+ if (HPMHooks.count.HP_clif_createchat_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_createchat_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_createchat_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_createchat_post[hIndex].func;
postHookFunc(sd, flag);
}
@@ -12381,14 +14952,14 @@ void HP_clif_createchat(struct map_session_data *sd, int flag) {
}
void HP_clif_dispchat(struct chat_data *cd, int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_dispchat_pre ) {
+ if (HPMHooks.count.HP_clif_dispchat_pre > 0) {
void (*preHookFunc) (struct chat_data **cd, int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_dispchat_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_dispchat_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_dispchat_pre[hIndex].func;
preHookFunc(&cd, &fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12396,9 +14967,9 @@ void HP_clif_dispchat(struct chat_data *cd, int fd) {
{
HPMHooks.source.clif.dispchat(cd, fd);
}
- if( HPMHooks.count.HP_clif_dispchat_post ) {
+ if (HPMHooks.count.HP_clif_dispchat_post > 0) {
void (*postHookFunc) (struct chat_data *cd, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_dispchat_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_dispchat_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_dispchat_post[hIndex].func;
postHookFunc(cd, fd);
}
@@ -12407,14 +14978,14 @@ void HP_clif_dispchat(struct chat_data *cd, int fd) {
}
void HP_clif_joinchatfail(struct map_session_data *sd, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_joinchatfail_pre ) {
+ if (HPMHooks.count.HP_clif_joinchatfail_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_joinchatfail_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_joinchatfail_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_joinchatfail_pre[hIndex].func;
preHookFunc(&sd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12422,9 +14993,9 @@ void HP_clif_joinchatfail(struct map_session_data *sd, int flag) {
{
HPMHooks.source.clif.joinchatfail(sd, flag);
}
- if( HPMHooks.count.HP_clif_joinchatfail_post ) {
+ if (HPMHooks.count.HP_clif_joinchatfail_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_joinchatfail_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_joinchatfail_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_joinchatfail_post[hIndex].func;
postHookFunc(sd, flag);
}
@@ -12433,14 +15004,14 @@ void HP_clif_joinchatfail(struct map_session_data *sd, int flag) {
}
void HP_clif_joinchatok(struct map_session_data *sd, struct chat_data *cd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_joinchatok_pre ) {
+ if (HPMHooks.count.HP_clif_joinchatok_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct chat_data **cd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_joinchatok_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_joinchatok_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_joinchatok_pre[hIndex].func;
preHookFunc(&sd, &cd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12448,9 +15019,9 @@ void HP_clif_joinchatok(struct map_session_data *sd, struct chat_data *cd) {
{
HPMHooks.source.clif.joinchatok(sd, cd);
}
- if( HPMHooks.count.HP_clif_joinchatok_post ) {
+ if (HPMHooks.count.HP_clif_joinchatok_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct chat_data *cd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_joinchatok_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_joinchatok_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_joinchatok_post[hIndex].func;
postHookFunc(sd, cd);
}
@@ -12459,14 +15030,14 @@ void HP_clif_joinchatok(struct map_session_data *sd, struct chat_data *cd) {
}
void HP_clif_addchat(struct chat_data *cd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_addchat_pre ) {
+ if (HPMHooks.count.HP_clif_addchat_pre > 0) {
void (*preHookFunc) (struct chat_data **cd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_addchat_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_addchat_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_addchat_pre[hIndex].func;
preHookFunc(&cd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12474,9 +15045,9 @@ void HP_clif_addchat(struct chat_data *cd, struct map_session_data *sd) {
{
HPMHooks.source.clif.addchat(cd, sd);
}
- if( HPMHooks.count.HP_clif_addchat_post ) {
+ if (HPMHooks.count.HP_clif_addchat_post > 0) {
void (*postHookFunc) (struct chat_data *cd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_addchat_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_addchat_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_addchat_post[hIndex].func;
postHookFunc(cd, sd);
}
@@ -12485,14 +15056,14 @@ void HP_clif_addchat(struct chat_data *cd, struct map_session_data *sd) {
}
void HP_clif_changechatowner(struct chat_data *cd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_changechatowner_pre ) {
+ if (HPMHooks.count.HP_clif_changechatowner_pre > 0) {
void (*preHookFunc) (struct chat_data **cd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_changechatowner_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_changechatowner_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_changechatowner_pre[hIndex].func;
preHookFunc(&cd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12500,9 +15071,9 @@ void HP_clif_changechatowner(struct chat_data *cd, struct map_session_data *sd)
{
HPMHooks.source.clif.changechatowner(cd, sd);
}
- if( HPMHooks.count.HP_clif_changechatowner_post ) {
+ if (HPMHooks.count.HP_clif_changechatowner_post > 0) {
void (*postHookFunc) (struct chat_data *cd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_changechatowner_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_changechatowner_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_changechatowner_post[hIndex].func;
postHookFunc(cd, sd);
}
@@ -12511,14 +15082,14 @@ void HP_clif_changechatowner(struct chat_data *cd, struct map_session_data *sd)
}
void HP_clif_clearchat(struct chat_data *cd, int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_clearchat_pre ) {
+ if (HPMHooks.count.HP_clif_clearchat_pre > 0) {
void (*preHookFunc) (struct chat_data **cd, int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_clearchat_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_clearchat_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_clearchat_pre[hIndex].func;
preHookFunc(&cd, &fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12526,9 +15097,9 @@ void HP_clif_clearchat(struct chat_data *cd, int fd) {
{
HPMHooks.source.clif.clearchat(cd, fd);
}
- if( HPMHooks.count.HP_clif_clearchat_post ) {
+ if (HPMHooks.count.HP_clif_clearchat_post > 0) {
void (*postHookFunc) (struct chat_data *cd, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_clearchat_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_clearchat_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_clearchat_post[hIndex].func;
postHookFunc(cd, fd);
}
@@ -12537,14 +15108,14 @@ void HP_clif_clearchat(struct chat_data *cd, int fd) {
}
void HP_clif_leavechat(struct chat_data *cd, struct map_session_data *sd, bool flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_leavechat_pre ) {
+ if (HPMHooks.count.HP_clif_leavechat_pre > 0) {
void (*preHookFunc) (struct chat_data **cd, struct map_session_data **sd, bool *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_leavechat_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_leavechat_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_leavechat_pre[hIndex].func;
preHookFunc(&cd, &sd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12552,9 +15123,9 @@ void HP_clif_leavechat(struct chat_data *cd, struct map_session_data *sd, bool f
{
HPMHooks.source.clif.leavechat(cd, sd, flag);
}
- if( HPMHooks.count.HP_clif_leavechat_post ) {
+ if (HPMHooks.count.HP_clif_leavechat_post > 0) {
void (*postHookFunc) (struct chat_data *cd, struct map_session_data *sd, bool flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_leavechat_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_leavechat_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_leavechat_post[hIndex].func;
postHookFunc(cd, sd, flag);
}
@@ -12563,14 +15134,14 @@ void HP_clif_leavechat(struct chat_data *cd, struct map_session_data *sd, bool f
}
void HP_clif_changechatstatus(struct chat_data *cd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_changechatstatus_pre ) {
+ if (HPMHooks.count.HP_clif_changechatstatus_pre > 0) {
void (*preHookFunc) (struct chat_data **cd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_changechatstatus_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_changechatstatus_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_changechatstatus_pre[hIndex].func;
preHookFunc(&cd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12578,9 +15149,9 @@ void HP_clif_changechatstatus(struct chat_data *cd) {
{
HPMHooks.source.clif.changechatstatus(cd);
}
- if( HPMHooks.count.HP_clif_changechatstatus_post ) {
+ if (HPMHooks.count.HP_clif_changechatstatus_post > 0) {
void (*postHookFunc) (struct chat_data *cd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_changechatstatus_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_changechatstatus_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_changechatstatus_post[hIndex].func;
postHookFunc(cd);
}
@@ -12589,14 +15160,14 @@ void HP_clif_changechatstatus(struct chat_data *cd) {
}
void HP_clif_wis_message(int fd, const char *nick, const char *mes, int mes_len) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_wis_message_pre ) {
+ if (HPMHooks.count.HP_clif_wis_message_pre > 0) {
void (*preHookFunc) (int *fd, const char **nick, const char **mes, int *mes_len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_wis_message_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_wis_message_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_wis_message_pre[hIndex].func;
preHookFunc(&fd, &nick, &mes, &mes_len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12604,9 +15175,9 @@ void HP_clif_wis_message(int fd, const char *nick, const char *mes, int mes_len)
{
HPMHooks.source.clif.wis_message(fd, nick, mes, mes_len);
}
- if( HPMHooks.count.HP_clif_wis_message_post ) {
+ if (HPMHooks.count.HP_clif_wis_message_post > 0) {
void (*postHookFunc) (int fd, const char *nick, const char *mes, int mes_len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_wis_message_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_wis_message_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_wis_message_post[hIndex].func;
postHookFunc(fd, nick, mes, mes_len);
}
@@ -12615,14 +15186,14 @@ void HP_clif_wis_message(int fd, const char *nick, const char *mes, int mes_len)
}
void HP_clif_wis_end(int fd, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_wis_end_pre ) {
+ if (HPMHooks.count.HP_clif_wis_end_pre > 0) {
void (*preHookFunc) (int *fd, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_wis_end_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_wis_end_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_wis_end_pre[hIndex].func;
preHookFunc(&fd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12630,9 +15201,9 @@ void HP_clif_wis_end(int fd, int flag) {
{
HPMHooks.source.clif.wis_end(fd, flag);
}
- if( HPMHooks.count.HP_clif_wis_end_post ) {
+ if (HPMHooks.count.HP_clif_wis_end_post > 0) {
void (*postHookFunc) (int fd, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_wis_end_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_wis_end_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_wis_end_post[hIndex].func;
postHookFunc(fd, flag);
}
@@ -12641,14 +15212,14 @@ void HP_clif_wis_end(int fd, int flag) {
}
void HP_clif_disp_message(struct block_list *src, const char *mes, enum send_target target) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_disp_message_pre ) {
+ if (HPMHooks.count.HP_clif_disp_message_pre > 0) {
void (*preHookFunc) (struct block_list **src, const char **mes, enum send_target *target);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_disp_message_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_disp_message_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_disp_message_pre[hIndex].func;
preHookFunc(&src, &mes, &target);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12656,9 +15227,9 @@ void HP_clif_disp_message(struct block_list *src, const char *mes, enum send_tar
{
HPMHooks.source.clif.disp_message(src, mes, target);
}
- if( HPMHooks.count.HP_clif_disp_message_post ) {
+ if (HPMHooks.count.HP_clif_disp_message_post > 0) {
void (*postHookFunc) (struct block_list *src, const char *mes, enum send_target target);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_disp_message_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_disp_message_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_disp_message_post[hIndex].func;
postHookFunc(src, mes, target);
}
@@ -12667,14 +15238,14 @@ void HP_clif_disp_message(struct block_list *src, const char *mes, enum send_tar
}
void HP_clif_broadcast(struct block_list *bl, const char *mes, int len, int type, enum send_target target) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_broadcast_pre ) {
+ if (HPMHooks.count.HP_clif_broadcast_pre > 0) {
void (*preHookFunc) (struct block_list **bl, const char **mes, int *len, int *type, enum send_target *target);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_broadcast_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_broadcast_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_broadcast_pre[hIndex].func;
preHookFunc(&bl, &mes, &len, &type, &target);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12682,9 +15253,9 @@ void HP_clif_broadcast(struct block_list *bl, const char *mes, int len, int type
{
HPMHooks.source.clif.broadcast(bl, mes, len, type, target);
}
- if( HPMHooks.count.HP_clif_broadcast_post ) {
+ if (HPMHooks.count.HP_clif_broadcast_post > 0) {
void (*postHookFunc) (struct block_list *bl, const char *mes, int len, int type, enum send_target target);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_broadcast_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_broadcast_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_broadcast_post[hIndex].func;
postHookFunc(bl, mes, len, type, target);
}
@@ -12693,14 +15264,14 @@ void HP_clif_broadcast(struct block_list *bl, const char *mes, int len, int type
}
void HP_clif_broadcast2(struct block_list *bl, const char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY, enum send_target target) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_broadcast2_pre ) {
+ if (HPMHooks.count.HP_clif_broadcast2_pre > 0) {
void (*preHookFunc) (struct block_list **bl, const char **mes, int *len, unsigned int *fontColor, short *fontType, short *fontSize, short *fontAlign, short *fontY, enum send_target *target);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_broadcast2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_broadcast2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_broadcast2_pre[hIndex].func;
preHookFunc(&bl, &mes, &len, &fontColor, &fontType, &fontSize, &fontAlign, &fontY, &target);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12708,9 +15279,9 @@ void HP_clif_broadcast2(struct block_list *bl, const char *mes, int len, unsigne
{
HPMHooks.source.clif.broadcast2(bl, mes, len, fontColor, fontType, fontSize, fontAlign, fontY, target);
}
- if( HPMHooks.count.HP_clif_broadcast2_post ) {
+ if (HPMHooks.count.HP_clif_broadcast2_post > 0) {
void (*postHookFunc) (struct block_list *bl, const char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY, enum send_target target);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_broadcast2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_broadcast2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_broadcast2_post[hIndex].func;
postHookFunc(bl, mes, len, fontColor, fontType, fontSize, fontAlign, fontY, target);
}
@@ -12719,14 +15290,14 @@ void HP_clif_broadcast2(struct block_list *bl, const char *mes, int len, unsigne
}
void HP_clif_messagecolor_self(int fd, uint32 color, const char *msg) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_messagecolor_self_pre ) {
+ if (HPMHooks.count.HP_clif_messagecolor_self_pre > 0) {
void (*preHookFunc) (int *fd, uint32 *color, const char **msg);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_messagecolor_self_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_messagecolor_self_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_messagecolor_self_pre[hIndex].func;
preHookFunc(&fd, &color, &msg);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12734,9 +15305,9 @@ void HP_clif_messagecolor_self(int fd, uint32 color, const char *msg) {
{
HPMHooks.source.clif.messagecolor_self(fd, color, msg);
}
- if( HPMHooks.count.HP_clif_messagecolor_self_post ) {
+ if (HPMHooks.count.HP_clif_messagecolor_self_post > 0) {
void (*postHookFunc) (int fd, uint32 color, const char *msg);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_messagecolor_self_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_messagecolor_self_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_messagecolor_self_post[hIndex].func;
postHookFunc(fd, color, msg);
}
@@ -12745,14 +15316,14 @@ void HP_clif_messagecolor_self(int fd, uint32 color, const char *msg) {
}
void HP_clif_messagecolor(struct block_list *bl, uint32 color, const char *msg) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_messagecolor_pre ) {
+ if (HPMHooks.count.HP_clif_messagecolor_pre > 0) {
void (*preHookFunc) (struct block_list **bl, uint32 *color, const char **msg);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_messagecolor_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_messagecolor_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_messagecolor_pre[hIndex].func;
preHookFunc(&bl, &color, &msg);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12760,51 +15331,103 @@ void HP_clif_messagecolor(struct block_list *bl, uint32 color, const char *msg)
{
HPMHooks.source.clif.messagecolor(bl, color, msg);
}
- if( HPMHooks.count.HP_clif_messagecolor_post ) {
+ if (HPMHooks.count.HP_clif_messagecolor_post > 0) {
void (*postHookFunc) (struct block_list *bl, uint32 color, const char *msg);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_messagecolor_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_messagecolor_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_messagecolor_post[hIndex].func;
postHookFunc(bl, color, msg);
}
}
return;
}
-void HP_clif_disp_overhead(struct block_list *bl, const char *mes) {
+void HP_clif_serviceMessageColor(struct map_session_data *sd, uint32 color, const char *msg) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_disp_overhead_pre ) {
- void (*preHookFunc) (struct block_list **bl, const char **mes);
+ if (HPMHooks.count.HP_clif_serviceMessageColor_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, uint32 *color, const char **msg);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_disp_overhead_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_serviceMessageColor_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_serviceMessageColor_pre[hIndex].func;
+ preHookFunc(&sd, &color, &msg);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.serviceMessageColor(sd, color, msg);
+ }
+ if (HPMHooks.count.HP_clif_serviceMessageColor_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, uint32 color, const char *msg);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_serviceMessageColor_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_serviceMessageColor_post[hIndex].func;
+ postHookFunc(sd, color, msg);
+ }
+ }
+ return;
+}
+void HP_clif_disp_overhead(struct block_list *bl, const char *mes, enum send_target target, struct block_list *target_bl) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_disp_overhead_pre > 0) {
+ void (*preHookFunc) (struct block_list **bl, const char **mes, enum send_target *target, struct block_list **target_bl);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_disp_overhead_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_disp_overhead_pre[hIndex].func;
+ preHookFunc(&bl, &mes, &target, &target_bl);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.disp_overhead(bl, mes, target, target_bl);
+ }
+ if (HPMHooks.count.HP_clif_disp_overhead_post > 0) {
+ void (*postHookFunc) (struct block_list *bl, const char *mes, enum send_target target, struct block_list *target_bl);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_disp_overhead_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_disp_overhead_post[hIndex].func;
+ postHookFunc(bl, mes, target, target_bl);
+ }
+ }
+ return;
+}
+void HP_clif_notify_playerchat(struct block_list *bl, const char *mes) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_notify_playerchat_pre > 0) {
+ void (*preHookFunc) (struct block_list **bl, const char **mes);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_notify_playerchat_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_notify_playerchat_pre[hIndex].func;
preHookFunc(&bl, &mes);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
}
{
- HPMHooks.source.clif.disp_overhead(bl, mes);
+ HPMHooks.source.clif.notify_playerchat(bl, mes);
}
- if( HPMHooks.count.HP_clif_disp_overhead_post ) {
+ if (HPMHooks.count.HP_clif_notify_playerchat_post > 0) {
void (*postHookFunc) (struct block_list *bl, const char *mes);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_disp_overhead_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_clif_disp_overhead_post[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_notify_playerchat_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_notify_playerchat_post[hIndex].func;
postHookFunc(bl, mes);
}
}
return;
}
-void HP_clif_msgtable(struct map_session_data *sd, unsigned short msg_id) {
+void HP_clif_msgtable(struct map_session_data *sd, enum clif_messages msg_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_msgtable_pre ) {
- void (*preHookFunc) (struct map_session_data **sd, unsigned short *msg_id);
+ if (HPMHooks.count.HP_clif_msgtable_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, enum clif_messages *msg_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_msgtable_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_msgtable_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_msgtable_pre[hIndex].func;
preHookFunc(&sd, &msg_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12812,25 +15435,25 @@ void HP_clif_msgtable(struct map_session_data *sd, unsigned short msg_id) {
{
HPMHooks.source.clif.msgtable(sd, msg_id);
}
- if( HPMHooks.count.HP_clif_msgtable_post ) {
- void (*postHookFunc) (struct map_session_data *sd, unsigned short msg_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_msgtable_post; hIndex++ ) {
+ if (HPMHooks.count.HP_clif_msgtable_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, enum clif_messages msg_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_msgtable_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_msgtable_post[hIndex].func;
postHookFunc(sd, msg_id);
}
}
return;
}
-void HP_clif_msgtable_num(struct map_session_data *sd, unsigned short msg_id, int value) {
+void HP_clif_msgtable_num(struct map_session_data *sd, enum clif_messages msg_id, int value) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_msgtable_num_pre ) {
- void (*preHookFunc) (struct map_session_data **sd, unsigned short *msg_id, int *value);
+ if (HPMHooks.count.HP_clif_msgtable_num_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, enum clif_messages *msg_id, int *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_msgtable_num_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_msgtable_num_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_msgtable_num_pre[hIndex].func;
preHookFunc(&sd, &msg_id, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12838,25 +15461,25 @@ void HP_clif_msgtable_num(struct map_session_data *sd, unsigned short msg_id, in
{
HPMHooks.source.clif.msgtable_num(sd, msg_id, value);
}
- if( HPMHooks.count.HP_clif_msgtable_num_post ) {
- void (*postHookFunc) (struct map_session_data *sd, unsigned short msg_id, int value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_msgtable_num_post; hIndex++ ) {
+ if (HPMHooks.count.HP_clif_msgtable_num_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, enum clif_messages msg_id, int value);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_msgtable_num_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_msgtable_num_post[hIndex].func;
postHookFunc(sd, msg_id, value);
}
}
return;
}
-void HP_clif_msgtable_skill(struct map_session_data *sd, uint16 skill_id, int msg_id) {
+void HP_clif_msgtable_skill(struct map_session_data *sd, uint16 skill_id, enum clif_messages msg_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_msgtable_skill_pre ) {
- void (*preHookFunc) (struct map_session_data **sd, uint16 *skill_id, int *msg_id);
+ if (HPMHooks.count.HP_clif_msgtable_skill_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, uint16 *skill_id, enum clif_messages *msg_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_msgtable_skill_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_msgtable_skill_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_msgtable_skill_pre[hIndex].func;
preHookFunc(&sd, &skill_id, &msg_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12864,25 +15487,103 @@ void HP_clif_msgtable_skill(struct map_session_data *sd, uint16 skill_id, int ms
{
HPMHooks.source.clif.msgtable_skill(sd, skill_id, msg_id);
}
- if( HPMHooks.count.HP_clif_msgtable_skill_post ) {
- void (*postHookFunc) (struct map_session_data *sd, uint16 skill_id, int msg_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_msgtable_skill_post; hIndex++ ) {
+ if (HPMHooks.count.HP_clif_msgtable_skill_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, uint16 skill_id, enum clif_messages msg_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_msgtable_skill_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_msgtable_skill_post[hIndex].func;
postHookFunc(sd, skill_id, msg_id);
}
}
return;
}
+void HP_clif_msgtable_str(struct map_session_data *sd, enum clif_messages p1, const char *value) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_msgtable_str_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, enum clif_messages *p1, const char **value);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_msgtable_str_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_msgtable_str_pre[hIndex].func;
+ preHookFunc(&sd, &p1, &value);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.msgtable_str(sd, p1, value);
+ }
+ if (HPMHooks.count.HP_clif_msgtable_str_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, enum clif_messages p1, const char *value);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_msgtable_str_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_msgtable_str_post[hIndex].func;
+ postHookFunc(sd, p1, value);
+ }
+ }
+ return;
+}
+void HP_clif_msgtable_str_color(struct map_session_data *sd, enum clif_messages p1, const char *value, uint32 color) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_msgtable_str_color_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, enum clif_messages *p1, const char **value, uint32 *color);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_msgtable_str_color_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_msgtable_str_color_pre[hIndex].func;
+ preHookFunc(&sd, &p1, &value, &color);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.msgtable_str_color(sd, p1, value, color);
+ }
+ if (HPMHooks.count.HP_clif_msgtable_str_color_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, enum clif_messages p1, const char *value, uint32 color);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_msgtable_str_color_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_msgtable_str_color_post[hIndex].func;
+ postHookFunc(sd, p1, value, color);
+ }
+ }
+ return;
+}
+void HP_clif_msgtable_color(struct map_session_data *sd, enum clif_messages p1, uint32 color) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_msgtable_color_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, enum clif_messages *p1, uint32 *color);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_msgtable_color_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_msgtable_color_pre[hIndex].func;
+ preHookFunc(&sd, &p1, &color);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.msgtable_color(sd, p1, color);
+ }
+ if (HPMHooks.count.HP_clif_msgtable_color_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, enum clif_messages p1, uint32 color);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_msgtable_color_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_msgtable_color_post[hIndex].func;
+ postHookFunc(sd, p1, color);
+ }
+ }
+ return;
+}
void HP_clif_message(const int fd, const char *mes) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_message_pre ) {
+ if (HPMHooks.count.HP_clif_message_pre > 0) {
void (*preHookFunc) (const int *fd, const char **mes);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_message_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_message_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_message_pre[hIndex].func;
preHookFunc(&fd, &mes);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12890,9 +15591,9 @@ void HP_clif_message(const int fd, const char *mes) {
{
HPMHooks.source.clif.message(fd, mes);
}
- if( HPMHooks.count.HP_clif_message_post ) {
+ if (HPMHooks.count.HP_clif_message_post > 0) {
void (*postHookFunc) (const int fd, const char *mes);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_message_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_message_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_message_post[hIndex].func;
postHookFunc(fd, mes);
}
@@ -12901,14 +15602,14 @@ void HP_clif_message(const int fd, const char *mes) {
}
void HP_clif_messageln(const int fd, const char *mes) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_messageln_pre ) {
+ if (HPMHooks.count.HP_clif_messageln_pre > 0) {
void (*preHookFunc) (const int *fd, const char **mes);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_messageln_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_messageln_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_messageln_pre[hIndex].func;
preHookFunc(&fd, &mes);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12916,9 +15617,9 @@ void HP_clif_messageln(const int fd, const char *mes) {
{
HPMHooks.source.clif.messageln(fd, mes);
}
- if( HPMHooks.count.HP_clif_messageln_post ) {
+ if (HPMHooks.count.HP_clif_messageln_post > 0) {
void (*postHookFunc) (const int fd, const char *mes);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_messageln_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_messageln_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_messageln_post[hIndex].func;
postHookFunc(fd, mes);
}
@@ -12928,14 +15629,14 @@ void HP_clif_messageln(const int fd, const char *mes) {
const char* HP_clif_process_chat_message(struct map_session_data *sd, const struct packet_chat_message *packet, char *out_buf, int out_buflen) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_clif_process_chat_message_pre ) {
+ if (HPMHooks.count.HP_clif_process_chat_message_pre > 0) {
const char* (*preHookFunc) (struct map_session_data **sd, const struct packet_chat_message **packet, char **out_buf, int *out_buflen);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_process_chat_message_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_process_chat_message_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_process_chat_message_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &packet, &out_buf, &out_buflen);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -12943,9 +15644,9 @@ const char* HP_clif_process_chat_message(struct map_session_data *sd, const stru
{
retVal___ = HPMHooks.source.clif.process_chat_message(sd, packet, out_buf, out_buflen);
}
- if( HPMHooks.count.HP_clif_process_chat_message_post ) {
+ if (HPMHooks.count.HP_clif_process_chat_message_post > 0) {
const char* (*postHookFunc) (const char* retVal___, struct map_session_data *sd, const struct packet_chat_message *packet, char *out_buf, int out_buflen);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_process_chat_message_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_process_chat_message_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_process_chat_message_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, packet, out_buf, out_buflen);
}
@@ -12955,14 +15656,14 @@ const char* HP_clif_process_chat_message(struct map_session_data *sd, const stru
bool HP_clif_process_whisper_message(struct map_session_data *sd, const struct packet_whisper_message *packet, char *out_name, char *out_message, int out_messagelen) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_clif_process_whisper_message_pre ) {
+ if (HPMHooks.count.HP_clif_process_whisper_message_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, const struct packet_whisper_message **packet, char **out_name, char **out_message, int *out_messagelen);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_process_whisper_message_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_process_whisper_message_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_process_whisper_message_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &packet, &out_name, &out_message, &out_messagelen);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -12970,9 +15671,9 @@ bool HP_clif_process_whisper_message(struct map_session_data *sd, const struct p
{
retVal___ = HPMHooks.source.clif.process_whisper_message(sd, packet, out_name, out_message, out_messagelen);
}
- if( HPMHooks.count.HP_clif_process_whisper_message_post ) {
+ if (HPMHooks.count.HP_clif_process_whisper_message_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, const struct packet_whisper_message *packet, char *out_name, char *out_message, int out_messagelen);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_process_whisper_message_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_process_whisper_message_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_process_whisper_message_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, packet, out_name, out_message, out_messagelen);
}
@@ -12981,14 +15682,14 @@ bool HP_clif_process_whisper_message(struct map_session_data *sd, const struct p
}
void HP_clif_wisexin(struct map_session_data *sd, int type, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_wisexin_pre ) {
+ if (HPMHooks.count.HP_clif_wisexin_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *type, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_wisexin_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_wisexin_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_wisexin_pre[hIndex].func;
preHookFunc(&sd, &type, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -12996,9 +15697,9 @@ void HP_clif_wisexin(struct map_session_data *sd, int type, int flag) {
{
HPMHooks.source.clif.wisexin(sd, type, flag);
}
- if( HPMHooks.count.HP_clif_wisexin_post ) {
+ if (HPMHooks.count.HP_clif_wisexin_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int type, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_wisexin_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_wisexin_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_wisexin_post[hIndex].func;
postHookFunc(sd, type, flag);
}
@@ -13007,14 +15708,14 @@ void HP_clif_wisexin(struct map_session_data *sd, int type, int flag) {
}
void HP_clif_wisall(struct map_session_data *sd, int type, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_wisall_pre ) {
+ if (HPMHooks.count.HP_clif_wisall_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *type, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_wisall_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_wisall_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_wisall_pre[hIndex].func;
preHookFunc(&sd, &type, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13022,9 +15723,9 @@ void HP_clif_wisall(struct map_session_data *sd, int type, int flag) {
{
HPMHooks.source.clif.wisall(sd, type, flag);
}
- if( HPMHooks.count.HP_clif_wisall_post ) {
+ if (HPMHooks.count.HP_clif_wisall_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int type, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_wisall_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_wisall_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_wisall_post[hIndex].func;
postHookFunc(sd, type, flag);
}
@@ -13033,14 +15734,14 @@ void HP_clif_wisall(struct map_session_data *sd, int type, int flag) {
}
void HP_clif_PMIgnoreList(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_PMIgnoreList_pre ) {
+ if (HPMHooks.count.HP_clif_PMIgnoreList_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PMIgnoreList_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PMIgnoreList_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_PMIgnoreList_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13048,9 +15749,9 @@ void HP_clif_PMIgnoreList(struct map_session_data *sd) {
{
HPMHooks.source.clif.PMIgnoreList(sd);
}
- if( HPMHooks.count.HP_clif_PMIgnoreList_post ) {
+ if (HPMHooks.count.HP_clif_PMIgnoreList_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PMIgnoreList_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PMIgnoreList_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_PMIgnoreList_post[hIndex].func;
postHookFunc(sd);
}
@@ -13059,14 +15760,14 @@ void HP_clif_PMIgnoreList(struct map_session_data *sd) {
}
void HP_clif_ShowScript(struct block_list *bl, const char *message) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_ShowScript_pre ) {
+ if (HPMHooks.count.HP_clif_ShowScript_pre > 0) {
void (*preHookFunc) (struct block_list **bl, const char **message);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_ShowScript_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_ShowScript_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_ShowScript_pre[hIndex].func;
preHookFunc(&bl, &message);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13074,9 +15775,9 @@ void HP_clif_ShowScript(struct block_list *bl, const char *message) {
{
HPMHooks.source.clif.ShowScript(bl, message);
}
- if( HPMHooks.count.HP_clif_ShowScript_post ) {
+ if (HPMHooks.count.HP_clif_ShowScript_post > 0) {
void (*postHookFunc) (struct block_list *bl, const char *message);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_ShowScript_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_ShowScript_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_ShowScript_post[hIndex].func;
postHookFunc(bl, message);
}
@@ -13085,14 +15786,14 @@ void HP_clif_ShowScript(struct block_list *bl, const char *message) {
}
void HP_clif_traderequest(struct map_session_data *sd, const char *name) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_traderequest_pre ) {
+ if (HPMHooks.count.HP_clif_traderequest_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_traderequest_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_traderequest_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_traderequest_pre[hIndex].func;
preHookFunc(&sd, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13100,9 +15801,9 @@ void HP_clif_traderequest(struct map_session_data *sd, const char *name) {
{
HPMHooks.source.clif.traderequest(sd, name);
}
- if( HPMHooks.count.HP_clif_traderequest_post ) {
+ if (HPMHooks.count.HP_clif_traderequest_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_traderequest_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_traderequest_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_traderequest_post[hIndex].func;
postHookFunc(sd, name);
}
@@ -13111,14 +15812,14 @@ void HP_clif_traderequest(struct map_session_data *sd, const char *name) {
}
void HP_clif_tradestart(struct map_session_data *sd, uint8 type) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_tradestart_pre ) {
+ if (HPMHooks.count.HP_clif_tradestart_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, uint8 *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_tradestart_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_tradestart_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_tradestart_pre[hIndex].func;
preHookFunc(&sd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13126,9 +15827,9 @@ void HP_clif_tradestart(struct map_session_data *sd, uint8 type) {
{
HPMHooks.source.clif.tradestart(sd, type);
}
- if( HPMHooks.count.HP_clif_tradestart_post ) {
+ if (HPMHooks.count.HP_clif_tradestart_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, uint8 type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_tradestart_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_tradestart_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_tradestart_post[hIndex].func;
postHookFunc(sd, type);
}
@@ -13137,14 +15838,14 @@ void HP_clif_tradestart(struct map_session_data *sd, uint8 type) {
}
void HP_clif_tradeadditem(struct map_session_data *sd, struct map_session_data *tsd, int index, int amount) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_tradeadditem_pre ) {
+ if (HPMHooks.count.HP_clif_tradeadditem_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct map_session_data **tsd, int *index, int *amount);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_tradeadditem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_tradeadditem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_tradeadditem_pre[hIndex].func;
preHookFunc(&sd, &tsd, &index, &amount);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13152,9 +15853,9 @@ void HP_clif_tradeadditem(struct map_session_data *sd, struct map_session_data *
{
HPMHooks.source.clif.tradeadditem(sd, tsd, index, amount);
}
- if( HPMHooks.count.HP_clif_tradeadditem_post ) {
+ if (HPMHooks.count.HP_clif_tradeadditem_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct map_session_data *tsd, int index, int amount);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_tradeadditem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_tradeadditem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_tradeadditem_post[hIndex].func;
postHookFunc(sd, tsd, index, amount);
}
@@ -13163,14 +15864,14 @@ void HP_clif_tradeadditem(struct map_session_data *sd, struct map_session_data *
}
void HP_clif_tradeitemok(struct map_session_data *sd, int index, int fail) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_tradeitemok_pre ) {
+ if (HPMHooks.count.HP_clif_tradeitemok_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *index, int *fail);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_tradeitemok_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_tradeitemok_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_tradeitemok_pre[hIndex].func;
preHookFunc(&sd, &index, &fail);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13178,9 +15879,9 @@ void HP_clif_tradeitemok(struct map_session_data *sd, int index, int fail) {
{
HPMHooks.source.clif.tradeitemok(sd, index, fail);
}
- if( HPMHooks.count.HP_clif_tradeitemok_post ) {
+ if (HPMHooks.count.HP_clif_tradeitemok_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int index, int fail);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_tradeitemok_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_tradeitemok_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_tradeitemok_post[hIndex].func;
postHookFunc(sd, index, fail);
}
@@ -13189,14 +15890,14 @@ void HP_clif_tradeitemok(struct map_session_data *sd, int index, int fail) {
}
void HP_clif_tradedeal_lock(struct map_session_data *sd, int fail) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_tradedeal_lock_pre ) {
+ if (HPMHooks.count.HP_clif_tradedeal_lock_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *fail);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_tradedeal_lock_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_tradedeal_lock_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_tradedeal_lock_pre[hIndex].func;
preHookFunc(&sd, &fail);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13204,9 +15905,9 @@ void HP_clif_tradedeal_lock(struct map_session_data *sd, int fail) {
{
HPMHooks.source.clif.tradedeal_lock(sd, fail);
}
- if( HPMHooks.count.HP_clif_tradedeal_lock_post ) {
+ if (HPMHooks.count.HP_clif_tradedeal_lock_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int fail);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_tradedeal_lock_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_tradedeal_lock_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_tradedeal_lock_post[hIndex].func;
postHookFunc(sd, fail);
}
@@ -13215,14 +15916,14 @@ void HP_clif_tradedeal_lock(struct map_session_data *sd, int fail) {
}
void HP_clif_tradecancelled(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_tradecancelled_pre ) {
+ if (HPMHooks.count.HP_clif_tradecancelled_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_tradecancelled_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_tradecancelled_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_tradecancelled_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13230,9 +15931,9 @@ void HP_clif_tradecancelled(struct map_session_data *sd) {
{
HPMHooks.source.clif.tradecancelled(sd);
}
- if( HPMHooks.count.HP_clif_tradecancelled_post ) {
+ if (HPMHooks.count.HP_clif_tradecancelled_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_tradecancelled_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_tradecancelled_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_tradecancelled_post[hIndex].func;
postHookFunc(sd);
}
@@ -13241,14 +15942,14 @@ void HP_clif_tradecancelled(struct map_session_data *sd) {
}
void HP_clif_tradecompleted(struct map_session_data *sd, int fail) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_tradecompleted_pre ) {
+ if (HPMHooks.count.HP_clif_tradecompleted_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *fail);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_tradecompleted_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_tradecompleted_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_tradecompleted_pre[hIndex].func;
preHookFunc(&sd, &fail);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13256,9 +15957,9 @@ void HP_clif_tradecompleted(struct map_session_data *sd, int fail) {
{
HPMHooks.source.clif.tradecompleted(sd, fail);
}
- if( HPMHooks.count.HP_clif_tradecompleted_post ) {
+ if (HPMHooks.count.HP_clif_tradecompleted_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int fail);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_tradecompleted_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_tradecompleted_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_tradecompleted_post[hIndex].func;
postHookFunc(sd, fail);
}
@@ -13267,14 +15968,14 @@ void HP_clif_tradecompleted(struct map_session_data *sd, int fail) {
}
void HP_clif_tradeundo(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_tradeundo_pre ) {
+ if (HPMHooks.count.HP_clif_tradeundo_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_tradeundo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_tradeundo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_tradeundo_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13282,9 +15983,9 @@ void HP_clif_tradeundo(struct map_session_data *sd) {
{
HPMHooks.source.clif.tradeundo(sd);
}
- if( HPMHooks.count.HP_clif_tradeundo_post ) {
+ if (HPMHooks.count.HP_clif_tradeundo_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_tradeundo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_tradeundo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_tradeundo_post[hIndex].func;
postHookFunc(sd);
}
@@ -13293,14 +15994,14 @@ void HP_clif_tradeundo(struct map_session_data *sd) {
}
void HP_clif_openvendingreq(struct map_session_data *sd, int num) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_openvendingreq_pre ) {
+ if (HPMHooks.count.HP_clif_openvendingreq_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *num);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_openvendingreq_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_openvendingreq_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_openvendingreq_pre[hIndex].func;
preHookFunc(&sd, &num);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13308,9 +16009,9 @@ void HP_clif_openvendingreq(struct map_session_data *sd, int num) {
{
HPMHooks.source.clif.openvendingreq(sd, num);
}
- if( HPMHooks.count.HP_clif_openvendingreq_post ) {
+ if (HPMHooks.count.HP_clif_openvendingreq_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int num);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_openvendingreq_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_openvendingreq_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_openvendingreq_post[hIndex].func;
postHookFunc(sd, num);
}
@@ -13319,14 +16020,14 @@ void HP_clif_openvendingreq(struct map_session_data *sd, int num) {
}
void HP_clif_showvendingboard(struct block_list *bl, const char *message, int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_showvendingboard_pre ) {
+ if (HPMHooks.count.HP_clif_showvendingboard_pre > 0) {
void (*preHookFunc) (struct block_list **bl, const char **message, int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_showvendingboard_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_showvendingboard_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_showvendingboard_pre[hIndex].func;
preHookFunc(&bl, &message, &fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13334,9 +16035,9 @@ void HP_clif_showvendingboard(struct block_list *bl, const char *message, int fd
{
HPMHooks.source.clif.showvendingboard(bl, message, fd);
}
- if( HPMHooks.count.HP_clif_showvendingboard_post ) {
+ if (HPMHooks.count.HP_clif_showvendingboard_post > 0) {
void (*postHookFunc) (struct block_list *bl, const char *message, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_showvendingboard_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_showvendingboard_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_showvendingboard_post[hIndex].func;
postHookFunc(bl, message, fd);
}
@@ -13345,14 +16046,14 @@ void HP_clif_showvendingboard(struct block_list *bl, const char *message, int fd
}
void HP_clif_closevendingboard(struct block_list *bl, int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_closevendingboard_pre ) {
+ if (HPMHooks.count.HP_clif_closevendingboard_pre > 0) {
void (*preHookFunc) (struct block_list **bl, int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_closevendingboard_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_closevendingboard_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_closevendingboard_pre[hIndex].func;
preHookFunc(&bl, &fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13360,9 +16061,9 @@ void HP_clif_closevendingboard(struct block_list *bl, int fd) {
{
HPMHooks.source.clif.closevendingboard(bl, fd);
}
- if( HPMHooks.count.HP_clif_closevendingboard_post ) {
+ if (HPMHooks.count.HP_clif_closevendingboard_post > 0) {
void (*postHookFunc) (struct block_list *bl, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_closevendingboard_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_closevendingboard_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_closevendingboard_post[hIndex].func;
postHookFunc(bl, fd);
}
@@ -13371,14 +16072,14 @@ void HP_clif_closevendingboard(struct block_list *bl, int fd) {
}
void HP_clif_vendinglist(struct map_session_data *sd, unsigned int id, struct s_vending *vending_list) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_vendinglist_pre ) {
+ if (HPMHooks.count.HP_clif_vendinglist_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, unsigned int *id, struct s_vending **vending_list);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_vendinglist_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_vendinglist_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_vendinglist_pre[hIndex].func;
preHookFunc(&sd, &id, &vending_list);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13386,9 +16087,9 @@ void HP_clif_vendinglist(struct map_session_data *sd, unsigned int id, struct s_
{
HPMHooks.source.clif.vendinglist(sd, id, vending_list);
}
- if( HPMHooks.count.HP_clif_vendinglist_post ) {
+ if (HPMHooks.count.HP_clif_vendinglist_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, unsigned int id, struct s_vending *vending_list);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_vendinglist_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_vendinglist_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_vendinglist_post[hIndex].func;
postHookFunc(sd, id, vending_list);
}
@@ -13397,14 +16098,14 @@ void HP_clif_vendinglist(struct map_session_data *sd, unsigned int id, struct s_
}
void HP_clif_buyvending(struct map_session_data *sd, int index, int amount, int fail) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_buyvending_pre ) {
+ if (HPMHooks.count.HP_clif_buyvending_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *index, int *amount, int *fail);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyvending_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyvending_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_buyvending_pre[hIndex].func;
preHookFunc(&sd, &index, &amount, &fail);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13412,9 +16113,9 @@ void HP_clif_buyvending(struct map_session_data *sd, int index, int amount, int
{
HPMHooks.source.clif.buyvending(sd, index, amount, fail);
}
- if( HPMHooks.count.HP_clif_buyvending_post ) {
+ if (HPMHooks.count.HP_clif_buyvending_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int index, int amount, int fail);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyvending_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyvending_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_buyvending_post[hIndex].func;
postHookFunc(sd, index, amount, fail);
}
@@ -13423,14 +16124,14 @@ void HP_clif_buyvending(struct map_session_data *sd, int index, int amount, int
}
void HP_clif_openvending(struct map_session_data *sd, int id, struct s_vending *vending_list) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_openvending_pre ) {
+ if (HPMHooks.count.HP_clif_openvending_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *id, struct s_vending **vending_list);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_openvending_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_openvending_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_openvending_pre[hIndex].func;
preHookFunc(&sd, &id, &vending_list);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13438,25 +16139,51 @@ void HP_clif_openvending(struct map_session_data *sd, int id, struct s_vending *
{
HPMHooks.source.clif.openvending(sd, id, vending_list);
}
- if( HPMHooks.count.HP_clif_openvending_post ) {
+ if (HPMHooks.count.HP_clif_openvending_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int id, struct s_vending *vending_list);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_openvending_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_openvending_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_openvending_post[hIndex].func;
postHookFunc(sd, id, vending_list);
}
}
return;
}
+void HP_clif_openvendingAck(int fd, int result) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_openvendingAck_pre > 0) {
+ void (*preHookFunc) (int *fd, int *result);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_openvendingAck_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_openvendingAck_pre[hIndex].func;
+ preHookFunc(&fd, &result);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.openvendingAck(fd, result);
+ }
+ if (HPMHooks.count.HP_clif_openvendingAck_post > 0) {
+ void (*postHookFunc) (int fd, int result);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_openvendingAck_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_openvendingAck_post[hIndex].func;
+ postHookFunc(fd, result);
+ }
+ }
+ return;
+}
void HP_clif_vendingreport(struct map_session_data *sd, int index, int amount, uint32 char_id, int zeny) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_vendingreport_pre ) {
+ if (HPMHooks.count.HP_clif_vendingreport_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *index, int *amount, uint32 *char_id, int *zeny);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_vendingreport_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_vendingreport_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_vendingreport_pre[hIndex].func;
preHookFunc(&sd, &index, &amount, &char_id, &zeny);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13464,51 +16191,155 @@ void HP_clif_vendingreport(struct map_session_data *sd, int index, int amount, u
{
HPMHooks.source.clif.vendingreport(sd, index, amount, char_id, zeny);
}
- if( HPMHooks.count.HP_clif_vendingreport_post ) {
+ if (HPMHooks.count.HP_clif_vendingreport_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int index, int amount, uint32 char_id, int zeny);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_vendingreport_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_vendingreport_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_vendingreport_post[hIndex].func;
postHookFunc(sd, index, amount, char_id, zeny);
}
}
return;
}
-void HP_clif_storagelist(struct map_session_data *sd, struct item *items, int items_length) {
+void HP_clif_storageList(struct map_session_data *sd, struct item *items, int items_length) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_storageList_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, struct item **items, int *items_length);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_storageList_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_storageList_pre[hIndex].func;
+ preHookFunc(&sd, &items, &items_length);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.storageList(sd, items, items_length);
+ }
+ if (HPMHooks.count.HP_clif_storageList_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, struct item *items, int items_length);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_storageList_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_storageList_post[hIndex].func;
+ postHookFunc(sd, items, items_length);
+ }
+ }
+ return;
+}
+void HP_clif_guildStorageList(struct map_session_data *sd, struct item *items, int items_length) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_storagelist_pre ) {
+ if (HPMHooks.count.HP_clif_guildStorageList_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct item **items, int *items_length);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_storagelist_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_clif_storagelist_pre[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guildStorageList_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_guildStorageList_pre[hIndex].func;
preHookFunc(&sd, &items, &items_length);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
}
{
- HPMHooks.source.clif.storagelist(sd, items, items_length);
+ HPMHooks.source.clif.guildStorageList(sd, items, items_length);
}
- if( HPMHooks.count.HP_clif_storagelist_post ) {
+ if (HPMHooks.count.HP_clif_guildStorageList_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct item *items, int items_length);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_storagelist_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_clif_storagelist_post[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guildStorageList_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_guildStorageList_post[hIndex].func;
postHookFunc(sd, items, items_length);
}
}
return;
}
+void HP_clif_storageItems(struct map_session_data *sd, enum inventory_type type, struct item *items, int items_length) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_storageItems_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, enum inventory_type *type, struct item **items, int *items_length);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_storageItems_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_storageItems_pre[hIndex].func;
+ preHookFunc(&sd, &type, &items, &items_length);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.storageItems(sd, type, items, items_length);
+ }
+ if (HPMHooks.count.HP_clif_storageItems_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, enum inventory_type type, struct item *items, int items_length);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_storageItems_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_storageItems_post[hIndex].func;
+ postHookFunc(sd, type, items, items_length);
+ }
+ }
+ return;
+}
+void HP_clif_inventoryStart(struct map_session_data *sd, enum inventory_type type, const char *name) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_inventoryStart_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, enum inventory_type *type, const char **name);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_inventoryStart_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_inventoryStart_pre[hIndex].func;
+ preHookFunc(&sd, &type, &name);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.inventoryStart(sd, type, name);
+ }
+ if (HPMHooks.count.HP_clif_inventoryStart_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, enum inventory_type type, const char *name);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_inventoryStart_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_inventoryStart_post[hIndex].func;
+ postHookFunc(sd, type, name);
+ }
+ }
+ return;
+}
+void HP_clif_inventoryEnd(struct map_session_data *sd, enum inventory_type type) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_inventoryEnd_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, enum inventory_type *type);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_inventoryEnd_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_inventoryEnd_pre[hIndex].func;
+ preHookFunc(&sd, &type);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.inventoryEnd(sd, type);
+ }
+ if (HPMHooks.count.HP_clif_inventoryEnd_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, enum inventory_type type);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_inventoryEnd_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_inventoryEnd_post[hIndex].func;
+ postHookFunc(sd, type);
+ }
+ }
+ return;
+}
void HP_clif_updatestorageamount(struct map_session_data *sd, int amount, int max_amount) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_updatestorageamount_pre ) {
+ if (HPMHooks.count.HP_clif_updatestorageamount_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *amount, int *max_amount);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_updatestorageamount_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_updatestorageamount_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_updatestorageamount_pre[hIndex].func;
preHookFunc(&sd, &amount, &max_amount);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13516,9 +16347,9 @@ void HP_clif_updatestorageamount(struct map_session_data *sd, int amount, int ma
{
HPMHooks.source.clif.updatestorageamount(sd, amount, max_amount);
}
- if( HPMHooks.count.HP_clif_updatestorageamount_post ) {
+ if (HPMHooks.count.HP_clif_updatestorageamount_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int amount, int max_amount);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_updatestorageamount_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_updatestorageamount_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_updatestorageamount_post[hIndex].func;
postHookFunc(sd, amount, max_amount);
}
@@ -13527,14 +16358,14 @@ void HP_clif_updatestorageamount(struct map_session_data *sd, int amount, int ma
}
void HP_clif_storageitemadded(struct map_session_data *sd, struct item *i, int index, int amount) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_storageitemadded_pre ) {
+ if (HPMHooks.count.HP_clif_storageitemadded_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct item **i, int *index, int *amount);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_storageitemadded_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_storageitemadded_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_storageitemadded_pre[hIndex].func;
preHookFunc(&sd, &i, &index, &amount);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13542,9 +16373,9 @@ void HP_clif_storageitemadded(struct map_session_data *sd, struct item *i, int i
{
HPMHooks.source.clif.storageitemadded(sd, i, index, amount);
}
- if( HPMHooks.count.HP_clif_storageitemadded_post ) {
+ if (HPMHooks.count.HP_clif_storageitemadded_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct item *i, int index, int amount);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_storageitemadded_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_storageitemadded_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_storageitemadded_post[hIndex].func;
postHookFunc(sd, i, index, amount);
}
@@ -13553,14 +16384,14 @@ void HP_clif_storageitemadded(struct map_session_data *sd, struct item *i, int i
}
void HP_clif_storageitemremoved(struct map_session_data *sd, int index, int amount) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_storageitemremoved_pre ) {
+ if (HPMHooks.count.HP_clif_storageitemremoved_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *index, int *amount);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_storageitemremoved_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_storageitemremoved_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_storageitemremoved_pre[hIndex].func;
preHookFunc(&sd, &index, &amount);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13568,9 +16399,9 @@ void HP_clif_storageitemremoved(struct map_session_data *sd, int index, int amou
{
HPMHooks.source.clif.storageitemremoved(sd, index, amount);
}
- if( HPMHooks.count.HP_clif_storageitemremoved_post ) {
+ if (HPMHooks.count.HP_clif_storageitemremoved_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int index, int amount);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_storageitemremoved_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_storageitemremoved_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_storageitemremoved_post[hIndex].func;
postHookFunc(sd, index, amount);
}
@@ -13579,14 +16410,14 @@ void HP_clif_storageitemremoved(struct map_session_data *sd, int index, int amou
}
void HP_clif_storageclose(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_storageclose_pre ) {
+ if (HPMHooks.count.HP_clif_storageclose_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_storageclose_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_storageclose_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_storageclose_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13594,9 +16425,9 @@ void HP_clif_storageclose(struct map_session_data *sd) {
{
HPMHooks.source.clif.storageclose(sd);
}
- if( HPMHooks.count.HP_clif_storageclose_post ) {
+ if (HPMHooks.count.HP_clif_storageclose_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_storageclose_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_storageclose_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_storageclose_post[hIndex].func;
postHookFunc(sd);
}
@@ -13605,14 +16436,14 @@ void HP_clif_storageclose(struct map_session_data *sd) {
}
void HP_clif_skillinfoblock(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_skillinfoblock_pre ) {
+ if (HPMHooks.count.HP_clif_skillinfoblock_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skillinfoblock_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skillinfoblock_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_skillinfoblock_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13620,9 +16451,9 @@ void HP_clif_skillinfoblock(struct map_session_data *sd) {
{
HPMHooks.source.clif.skillinfoblock(sd);
}
- if( HPMHooks.count.HP_clif_skillinfoblock_post ) {
+ if (HPMHooks.count.HP_clif_skillinfoblock_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skillinfoblock_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skillinfoblock_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_skillinfoblock_post[hIndex].func;
postHookFunc(sd);
}
@@ -13631,14 +16462,14 @@ void HP_clif_skillinfoblock(struct map_session_data *sd) {
}
void HP_clif_skillup(struct map_session_data *sd, uint16 skill_id, int skill_lv, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_skillup_pre ) {
+ if (HPMHooks.count.HP_clif_skillup_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, uint16 *skill_id, int *skill_lv, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skillup_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skillup_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_skillup_pre[hIndex].func;
preHookFunc(&sd, &skill_id, &skill_lv, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13646,9 +16477,9 @@ void HP_clif_skillup(struct map_session_data *sd, uint16 skill_id, int skill_lv,
{
HPMHooks.source.clif.skillup(sd, skill_id, skill_lv, flag);
}
- if( HPMHooks.count.HP_clif_skillup_post ) {
+ if (HPMHooks.count.HP_clif_skillup_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, uint16 skill_id, int skill_lv, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skillup_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skillup_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_skillup_post[hIndex].func;
postHookFunc(sd, skill_id, skill_lv, flag);
}
@@ -13657,14 +16488,14 @@ void HP_clif_skillup(struct map_session_data *sd, uint16 skill_id, int skill_lv,
}
void HP_clif_skillinfo(struct map_session_data *sd, int skill_id, int inf) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_skillinfo_pre ) {
+ if (HPMHooks.count.HP_clif_skillinfo_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *skill_id, int *inf);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skillinfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skillinfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_skillinfo_pre[hIndex].func;
preHookFunc(&sd, &skill_id, &inf);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13672,9 +16503,9 @@ void HP_clif_skillinfo(struct map_session_data *sd, int skill_id, int inf) {
{
HPMHooks.source.clif.skillinfo(sd, skill_id, inf);
}
- if( HPMHooks.count.HP_clif_skillinfo_post ) {
+ if (HPMHooks.count.HP_clif_skillinfo_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int skill_id, int inf);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_skillinfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skillinfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_skillinfo_post[hIndex].func;
postHookFunc(sd, skill_id, inf);
}
@@ -13683,14 +16514,14 @@ void HP_clif_skillinfo(struct map_session_data *sd, int skill_id, int inf) {
}
void HP_clif_addskill(struct map_session_data *sd, int id) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_addskill_pre ) {
+ if (HPMHooks.count.HP_clif_addskill_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_addskill_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_addskill_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_addskill_pre[hIndex].func;
preHookFunc(&sd, &id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13698,9 +16529,9 @@ void HP_clif_addskill(struct map_session_data *sd, int id) {
{
HPMHooks.source.clif.addskill(sd, id);
}
- if( HPMHooks.count.HP_clif_addskill_post ) {
+ if (HPMHooks.count.HP_clif_addskill_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_addskill_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_addskill_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_addskill_post[hIndex].func;
postHookFunc(sd, id);
}
@@ -13709,14 +16540,14 @@ void HP_clif_addskill(struct map_session_data *sd, int id) {
}
void HP_clif_deleteskill(struct map_session_data *sd, int id) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_deleteskill_pre ) {
+ if (HPMHooks.count.HP_clif_deleteskill_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_deleteskill_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_deleteskill_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_deleteskill_pre[hIndex].func;
preHookFunc(&sd, &id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13724,9 +16555,9 @@ void HP_clif_deleteskill(struct map_session_data *sd, int id) {
{
HPMHooks.source.clif.deleteskill(sd, id);
}
- if( HPMHooks.count.HP_clif_deleteskill_post ) {
+ if (HPMHooks.count.HP_clif_deleteskill_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_deleteskill_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_deleteskill_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_deleteskill_post[hIndex].func;
postHookFunc(sd, id);
}
@@ -13735,14 +16566,14 @@ void HP_clif_deleteskill(struct map_session_data *sd, int id) {
}
void HP_clif_party_created(struct map_session_data *sd, int result) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_party_created_pre ) {
+ if (HPMHooks.count.HP_clif_party_created_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *result);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_created_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_created_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_party_created_pre[hIndex].func;
preHookFunc(&sd, &result);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13750,9 +16581,9 @@ void HP_clif_party_created(struct map_session_data *sd, int result) {
{
HPMHooks.source.clif.party_created(sd, result);
}
- if( HPMHooks.count.HP_clif_party_created_post ) {
+ if (HPMHooks.count.HP_clif_party_created_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int result);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_created_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_created_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_party_created_post[hIndex].func;
postHookFunc(sd, result);
}
@@ -13761,14 +16592,14 @@ void HP_clif_party_created(struct map_session_data *sd, int result) {
}
void HP_clif_party_member_info(struct party_data *p, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_party_member_info_pre ) {
+ if (HPMHooks.count.HP_clif_party_member_info_pre > 0) {
void (*preHookFunc) (struct party_data **p, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_member_info_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_member_info_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_party_member_info_pre[hIndex].func;
preHookFunc(&p, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13776,9 +16607,9 @@ void HP_clif_party_member_info(struct party_data *p, struct map_session_data *sd
{
HPMHooks.source.clif.party_member_info(p, sd);
}
- if( HPMHooks.count.HP_clif_party_member_info_post ) {
+ if (HPMHooks.count.HP_clif_party_member_info_post > 0) {
void (*postHookFunc) (struct party_data *p, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_member_info_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_member_info_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_party_member_info_post[hIndex].func;
postHookFunc(p, sd);
}
@@ -13787,14 +16618,14 @@ void HP_clif_party_member_info(struct party_data *p, struct map_session_data *sd
}
void HP_clif_party_info(struct party_data *p, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_party_info_pre ) {
+ if (HPMHooks.count.HP_clif_party_info_pre > 0) {
void (*preHookFunc) (struct party_data **p, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_info_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_info_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_party_info_pre[hIndex].func;
preHookFunc(&p, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13802,25 +16633,51 @@ void HP_clif_party_info(struct party_data *p, struct map_session_data *sd) {
{
HPMHooks.source.clif.party_info(p, sd);
}
- if( HPMHooks.count.HP_clif_party_info_post ) {
+ if (HPMHooks.count.HP_clif_party_info_post > 0) {
void (*postHookFunc) (struct party_data *p, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_info_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_info_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_party_info_post[hIndex].func;
postHookFunc(p, sd);
}
}
return;
}
+void HP_clif_party_job_and_level(struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_party_job_and_level_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_job_and_level_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_party_job_and_level_pre[hIndex].func;
+ preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.party_job_and_level(sd);
+ }
+ if (HPMHooks.count.HP_clif_party_job_and_level_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_job_and_level_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_party_job_and_level_post[hIndex].func;
+ postHookFunc(sd);
+ }
+ }
+ return;
+}
void HP_clif_party_invite(struct map_session_data *sd, struct map_session_data *tsd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_party_invite_pre ) {
+ if (HPMHooks.count.HP_clif_party_invite_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct map_session_data **tsd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_invite_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_invite_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_party_invite_pre[hIndex].func;
preHookFunc(&sd, &tsd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13828,9 +16685,9 @@ void HP_clif_party_invite(struct map_session_data *sd, struct map_session_data *
{
HPMHooks.source.clif.party_invite(sd, tsd);
}
- if( HPMHooks.count.HP_clif_party_invite_post ) {
+ if (HPMHooks.count.HP_clif_party_invite_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct map_session_data *tsd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_invite_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_invite_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_party_invite_post[hIndex].func;
postHookFunc(sd, tsd);
}
@@ -13839,14 +16696,14 @@ void HP_clif_party_invite(struct map_session_data *sd, struct map_session_data *
}
void HP_clif_party_inviteack(struct map_session_data *sd, const char *nick, int result) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_party_inviteack_pre ) {
+ if (HPMHooks.count.HP_clif_party_inviteack_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, const char **nick, int *result);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_inviteack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_inviteack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_party_inviteack_pre[hIndex].func;
preHookFunc(&sd, &nick, &result);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13854,9 +16711,9 @@ void HP_clif_party_inviteack(struct map_session_data *sd, const char *nick, int
{
HPMHooks.source.clif.party_inviteack(sd, nick, result);
}
- if( HPMHooks.count.HP_clif_party_inviteack_post ) {
+ if (HPMHooks.count.HP_clif_party_inviteack_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, const char *nick, int result);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_inviteack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_inviteack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_party_inviteack_post[hIndex].func;
postHookFunc(sd, nick, result);
}
@@ -13865,14 +16722,14 @@ void HP_clif_party_inviteack(struct map_session_data *sd, const char *nick, int
}
void HP_clif_party_option(struct party_data *p, struct map_session_data *sd, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_party_option_pre ) {
+ if (HPMHooks.count.HP_clif_party_option_pre > 0) {
void (*preHookFunc) (struct party_data **p, struct map_session_data **sd, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_option_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_option_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_party_option_pre[hIndex].func;
preHookFunc(&p, &sd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13880,9 +16737,9 @@ void HP_clif_party_option(struct party_data *p, struct map_session_data *sd, int
{
HPMHooks.source.clif.party_option(p, sd, flag);
}
- if( HPMHooks.count.HP_clif_party_option_post ) {
+ if (HPMHooks.count.HP_clif_party_option_post > 0) {
void (*postHookFunc) (struct party_data *p, struct map_session_data *sd, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_option_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_option_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_party_option_post[hIndex].func;
postHookFunc(p, sd, flag);
}
@@ -13891,14 +16748,14 @@ void HP_clif_party_option(struct party_data *p, struct map_session_data *sd, int
}
void HP_clif_party_withdraw(struct party_data *p, struct map_session_data *sd, int account_id, const char *name, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_party_withdraw_pre ) {
+ if (HPMHooks.count.HP_clif_party_withdraw_pre > 0) {
void (*preHookFunc) (struct party_data **p, struct map_session_data **sd, int *account_id, const char **name, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_withdraw_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_withdraw_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_party_withdraw_pre[hIndex].func;
preHookFunc(&p, &sd, &account_id, &name, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13906,9 +16763,9 @@ void HP_clif_party_withdraw(struct party_data *p, struct map_session_data *sd, i
{
HPMHooks.source.clif.party_withdraw(p, sd, account_id, name, flag);
}
- if( HPMHooks.count.HP_clif_party_withdraw_post ) {
+ if (HPMHooks.count.HP_clif_party_withdraw_post > 0) {
void (*postHookFunc) (struct party_data *p, struct map_session_data *sd, int account_id, const char *name, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_withdraw_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_withdraw_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_party_withdraw_post[hIndex].func;
postHookFunc(p, sd, account_id, name, flag);
}
@@ -13917,14 +16774,14 @@ void HP_clif_party_withdraw(struct party_data *p, struct map_session_data *sd, i
}
void HP_clif_party_message(struct party_data *p, int account_id, const char *mes, int len) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_party_message_pre ) {
+ if (HPMHooks.count.HP_clif_party_message_pre > 0) {
void (*preHookFunc) (struct party_data **p, int *account_id, const char **mes, int *len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_message_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_message_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_party_message_pre[hIndex].func;
preHookFunc(&p, &account_id, &mes, &len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13932,9 +16789,9 @@ void HP_clif_party_message(struct party_data *p, int account_id, const char *mes
{
HPMHooks.source.clif.party_message(p, account_id, mes, len);
}
- if( HPMHooks.count.HP_clif_party_message_post ) {
+ if (HPMHooks.count.HP_clif_party_message_post > 0) {
void (*postHookFunc) (struct party_data *p, int account_id, const char *mes, int len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_message_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_message_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_party_message_post[hIndex].func;
postHookFunc(p, account_id, mes, len);
}
@@ -13943,14 +16800,14 @@ void HP_clif_party_message(struct party_data *p, int account_id, const char *mes
}
void HP_clif_party_xy(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_party_xy_pre ) {
+ if (HPMHooks.count.HP_clif_party_xy_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_xy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_xy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_party_xy_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13958,9 +16815,9 @@ void HP_clif_party_xy(struct map_session_data *sd) {
{
HPMHooks.source.clif.party_xy(sd);
}
- if( HPMHooks.count.HP_clif_party_xy_post ) {
+ if (HPMHooks.count.HP_clif_party_xy_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_xy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_xy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_party_xy_post[hIndex].func;
postHookFunc(sd);
}
@@ -13969,14 +16826,14 @@ void HP_clif_party_xy(struct map_session_data *sd) {
}
void HP_clif_party_xy_single(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_party_xy_single_pre ) {
+ if (HPMHooks.count.HP_clif_party_xy_single_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_xy_single_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_xy_single_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_party_xy_single_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -13984,9 +16841,9 @@ void HP_clif_party_xy_single(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.party_xy_single(fd, sd);
}
- if( HPMHooks.count.HP_clif_party_xy_single_post ) {
+ if (HPMHooks.count.HP_clif_party_xy_single_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_xy_single_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_xy_single_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_party_xy_single_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -13995,14 +16852,14 @@ void HP_clif_party_xy_single(int fd, struct map_session_data *sd) {
}
void HP_clif_party_hp(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_party_hp_pre ) {
+ if (HPMHooks.count.HP_clif_party_hp_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_hp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_hp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_party_hp_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14010,9 +16867,9 @@ void HP_clif_party_hp(struct map_session_data *sd) {
{
HPMHooks.source.clif.party_hp(sd);
}
- if( HPMHooks.count.HP_clif_party_hp_post ) {
+ if (HPMHooks.count.HP_clif_party_hp_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_hp_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_hp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_party_hp_post[hIndex].func;
postHookFunc(sd);
}
@@ -14021,14 +16878,14 @@ void HP_clif_party_hp(struct map_session_data *sd) {
}
void HP_clif_party_xy_remove(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_party_xy_remove_pre ) {
+ if (HPMHooks.count.HP_clif_party_xy_remove_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_xy_remove_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_xy_remove_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_party_xy_remove_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14036,9 +16893,9 @@ void HP_clif_party_xy_remove(struct map_session_data *sd) {
{
HPMHooks.source.clif.party_xy_remove(sd);
}
- if( HPMHooks.count.HP_clif_party_xy_remove_post ) {
+ if (HPMHooks.count.HP_clif_party_xy_remove_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_xy_remove_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_xy_remove_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_party_xy_remove_post[hIndex].func;
postHookFunc(sd);
}
@@ -14047,14 +16904,14 @@ void HP_clif_party_xy_remove(struct map_session_data *sd) {
}
void HP_clif_party_show_picker(struct map_session_data *sd, struct item *item_data) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_party_show_picker_pre ) {
+ if (HPMHooks.count.HP_clif_party_show_picker_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct item **item_data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_show_picker_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_show_picker_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_party_show_picker_pre[hIndex].func;
preHookFunc(&sd, &item_data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14062,9 +16919,9 @@ void HP_clif_party_show_picker(struct map_session_data *sd, struct item *item_da
{
HPMHooks.source.clif.party_show_picker(sd, item_data);
}
- if( HPMHooks.count.HP_clif_party_show_picker_post ) {
+ if (HPMHooks.count.HP_clif_party_show_picker_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct item *item_data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_show_picker_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_show_picker_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_party_show_picker_post[hIndex].func;
postHookFunc(sd, item_data);
}
@@ -14073,14 +16930,14 @@ void HP_clif_party_show_picker(struct map_session_data *sd, struct item *item_da
}
void HP_clif_partyinvitationstate(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_partyinvitationstate_pre ) {
+ if (HPMHooks.count.HP_clif_partyinvitationstate_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_partyinvitationstate_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_partyinvitationstate_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_partyinvitationstate_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14088,9 +16945,9 @@ void HP_clif_partyinvitationstate(struct map_session_data *sd) {
{
HPMHooks.source.clif.partyinvitationstate(sd);
}
- if( HPMHooks.count.HP_clif_partyinvitationstate_post ) {
+ if (HPMHooks.count.HP_clif_partyinvitationstate_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_partyinvitationstate_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_partyinvitationstate_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_partyinvitationstate_post[hIndex].func;
postHookFunc(sd);
}
@@ -14099,14 +16956,14 @@ void HP_clif_partyinvitationstate(struct map_session_data *sd) {
}
void HP_clif_PartyLeaderChanged(struct map_session_data *sd, int prev_leader_aid, int new_leader_aid) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_PartyLeaderChanged_pre ) {
+ if (HPMHooks.count.HP_clif_PartyLeaderChanged_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *prev_leader_aid, int *new_leader_aid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyLeaderChanged_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyLeaderChanged_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_PartyLeaderChanged_pre[hIndex].func;
preHookFunc(&sd, &prev_leader_aid, &new_leader_aid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14114,9 +16971,9 @@ void HP_clif_PartyLeaderChanged(struct map_session_data *sd, int prev_leader_aid
{
HPMHooks.source.clif.PartyLeaderChanged(sd, prev_leader_aid, new_leader_aid);
}
- if( HPMHooks.count.HP_clif_PartyLeaderChanged_post ) {
+ if (HPMHooks.count.HP_clif_PartyLeaderChanged_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int prev_leader_aid, int new_leader_aid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyLeaderChanged_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyLeaderChanged_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_PartyLeaderChanged_post[hIndex].func;
postHookFunc(sd, prev_leader_aid, new_leader_aid);
}
@@ -14125,14 +16982,14 @@ void HP_clif_PartyLeaderChanged(struct map_session_data *sd, int prev_leader_aid
}
void HP_clif_guild_created(struct map_session_data *sd, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_guild_created_pre ) {
+ if (HPMHooks.count.HP_clif_guild_created_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_created_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_created_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_guild_created_pre[hIndex].func;
preHookFunc(&sd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14140,9 +16997,9 @@ void HP_clif_guild_created(struct map_session_data *sd, int flag) {
{
HPMHooks.source.clif.guild_created(sd, flag);
}
- if( HPMHooks.count.HP_clif_guild_created_post ) {
+ if (HPMHooks.count.HP_clif_guild_created_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_created_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_created_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_guild_created_post[hIndex].func;
postHookFunc(sd, flag);
}
@@ -14151,14 +17008,14 @@ void HP_clif_guild_created(struct map_session_data *sd, int flag) {
}
void HP_clif_guild_belonginfo(struct map_session_data *sd, struct guild *g) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_guild_belonginfo_pre ) {
+ if (HPMHooks.count.HP_clif_guild_belonginfo_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct guild **g);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_belonginfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_belonginfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_guild_belonginfo_pre[hIndex].func;
preHookFunc(&sd, &g);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14166,9 +17023,9 @@ void HP_clif_guild_belonginfo(struct map_session_data *sd, struct guild *g) {
{
HPMHooks.source.clif.guild_belonginfo(sd, g);
}
- if( HPMHooks.count.HP_clif_guild_belonginfo_post ) {
+ if (HPMHooks.count.HP_clif_guild_belonginfo_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct guild *g);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_belonginfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_belonginfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_guild_belonginfo_post[hIndex].func;
postHookFunc(sd, g);
}
@@ -14177,14 +17034,14 @@ void HP_clif_guild_belonginfo(struct map_session_data *sd, struct guild *g) {
}
void HP_clif_guild_masterormember(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_guild_masterormember_pre ) {
+ if (HPMHooks.count.HP_clif_guild_masterormember_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_masterormember_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_masterormember_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_guild_masterormember_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14192,9 +17049,9 @@ void HP_clif_guild_masterormember(struct map_session_data *sd) {
{
HPMHooks.source.clif.guild_masterormember(sd);
}
- if( HPMHooks.count.HP_clif_guild_masterormember_post ) {
+ if (HPMHooks.count.HP_clif_guild_masterormember_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_masterormember_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_masterormember_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_guild_masterormember_post[hIndex].func;
postHookFunc(sd);
}
@@ -14203,14 +17060,14 @@ void HP_clif_guild_masterormember(struct map_session_data *sd) {
}
void HP_clif_guild_basicinfo(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_guild_basicinfo_pre ) {
+ if (HPMHooks.count.HP_clif_guild_basicinfo_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_basicinfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_basicinfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_guild_basicinfo_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14218,9 +17075,9 @@ void HP_clif_guild_basicinfo(struct map_session_data *sd) {
{
HPMHooks.source.clif.guild_basicinfo(sd);
}
- if( HPMHooks.count.HP_clif_guild_basicinfo_post ) {
+ if (HPMHooks.count.HP_clif_guild_basicinfo_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_basicinfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_basicinfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_guild_basicinfo_post[hIndex].func;
postHookFunc(sd);
}
@@ -14229,14 +17086,14 @@ void HP_clif_guild_basicinfo(struct map_session_data *sd) {
}
void HP_clif_guild_allianceinfo(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_guild_allianceinfo_pre ) {
+ if (HPMHooks.count.HP_clif_guild_allianceinfo_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_allianceinfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_allianceinfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_guild_allianceinfo_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14244,9 +17101,9 @@ void HP_clif_guild_allianceinfo(struct map_session_data *sd) {
{
HPMHooks.source.clif.guild_allianceinfo(sd);
}
- if( HPMHooks.count.HP_clif_guild_allianceinfo_post ) {
+ if (HPMHooks.count.HP_clif_guild_allianceinfo_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_allianceinfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_allianceinfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_guild_allianceinfo_post[hIndex].func;
postHookFunc(sd);
}
@@ -14255,14 +17112,14 @@ void HP_clif_guild_allianceinfo(struct map_session_data *sd) {
}
void HP_clif_guild_memberlist(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_guild_memberlist_pre ) {
+ if (HPMHooks.count.HP_clif_guild_memberlist_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_memberlist_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_memberlist_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_guild_memberlist_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14270,9 +17127,9 @@ void HP_clif_guild_memberlist(struct map_session_data *sd) {
{
HPMHooks.source.clif.guild_memberlist(sd);
}
- if( HPMHooks.count.HP_clif_guild_memberlist_post ) {
+ if (HPMHooks.count.HP_clif_guild_memberlist_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_memberlist_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_memberlist_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_guild_memberlist_post[hIndex].func;
postHookFunc(sd);
}
@@ -14281,14 +17138,14 @@ void HP_clif_guild_memberlist(struct map_session_data *sd) {
}
void HP_clif_guild_skillinfo(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_guild_skillinfo_pre ) {
+ if (HPMHooks.count.HP_clif_guild_skillinfo_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_skillinfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_skillinfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_guild_skillinfo_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14296,9 +17153,9 @@ void HP_clif_guild_skillinfo(struct map_session_data *sd) {
{
HPMHooks.source.clif.guild_skillinfo(sd);
}
- if( HPMHooks.count.HP_clif_guild_skillinfo_post ) {
+ if (HPMHooks.count.HP_clif_guild_skillinfo_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_skillinfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_skillinfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_guild_skillinfo_post[hIndex].func;
postHookFunc(sd);
}
@@ -14307,14 +17164,14 @@ void HP_clif_guild_skillinfo(struct map_session_data *sd) {
}
void HP_clif_guild_send_onlineinfo(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_guild_send_onlineinfo_pre ) {
+ if (HPMHooks.count.HP_clif_guild_send_onlineinfo_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_send_onlineinfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_send_onlineinfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_guild_send_onlineinfo_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14322,9 +17179,9 @@ void HP_clif_guild_send_onlineinfo(struct map_session_data *sd) {
{
HPMHooks.source.clif.guild_send_onlineinfo(sd);
}
- if( HPMHooks.count.HP_clif_guild_send_onlineinfo_post ) {
+ if (HPMHooks.count.HP_clif_guild_send_onlineinfo_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_send_onlineinfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_send_onlineinfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_guild_send_onlineinfo_post[hIndex].func;
postHookFunc(sd);
}
@@ -14333,14 +17190,14 @@ void HP_clif_guild_send_onlineinfo(struct map_session_data *sd) {
}
void HP_clif_guild_memberlogin_notice(struct guild *g, int idx, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_guild_memberlogin_notice_pre ) {
+ if (HPMHooks.count.HP_clif_guild_memberlogin_notice_pre > 0) {
void (*preHookFunc) (struct guild **g, int *idx, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_memberlogin_notice_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_memberlogin_notice_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_guild_memberlogin_notice_pre[hIndex].func;
preHookFunc(&g, &idx, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14348,9 +17205,9 @@ void HP_clif_guild_memberlogin_notice(struct guild *g, int idx, int flag) {
{
HPMHooks.source.clif.guild_memberlogin_notice(g, idx, flag);
}
- if( HPMHooks.count.HP_clif_guild_memberlogin_notice_post ) {
+ if (HPMHooks.count.HP_clif_guild_memberlogin_notice_post > 0) {
void (*postHookFunc) (struct guild *g, int idx, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_memberlogin_notice_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_memberlogin_notice_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_guild_memberlogin_notice_post[hIndex].func;
postHookFunc(g, idx, flag);
}
@@ -14359,14 +17216,14 @@ void HP_clif_guild_memberlogin_notice(struct guild *g, int idx, int flag) {
}
void HP_clif_guild_invite(struct map_session_data *sd, struct guild *g) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_guild_invite_pre ) {
+ if (HPMHooks.count.HP_clif_guild_invite_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct guild **g);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_invite_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_invite_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_guild_invite_pre[hIndex].func;
preHookFunc(&sd, &g);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14374,9 +17231,9 @@ void HP_clif_guild_invite(struct map_session_data *sd, struct guild *g) {
{
HPMHooks.source.clif.guild_invite(sd, g);
}
- if( HPMHooks.count.HP_clif_guild_invite_post ) {
+ if (HPMHooks.count.HP_clif_guild_invite_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct guild *g);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_invite_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_invite_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_guild_invite_post[hIndex].func;
postHookFunc(sd, g);
}
@@ -14385,14 +17242,14 @@ void HP_clif_guild_invite(struct map_session_data *sd, struct guild *g) {
}
void HP_clif_guild_inviteack(struct map_session_data *sd, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_guild_inviteack_pre ) {
+ if (HPMHooks.count.HP_clif_guild_inviteack_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_inviteack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_inviteack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_guild_inviteack_pre[hIndex].func;
preHookFunc(&sd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14400,77 +17257,77 @@ void HP_clif_guild_inviteack(struct map_session_data *sd, int flag) {
{
HPMHooks.source.clif.guild_inviteack(sd, flag);
}
- if( HPMHooks.count.HP_clif_guild_inviteack_post ) {
+ if (HPMHooks.count.HP_clif_guild_inviteack_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_inviteack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_inviteack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_guild_inviteack_post[hIndex].func;
postHookFunc(sd, flag);
}
}
return;
}
-void HP_clif_guild_leave(struct map_session_data *sd, const char *name, const char *mes) {
+void HP_clif_guild_leave(struct map_session_data *sd, const char *name, int char_id, const char *mes) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_guild_leave_pre ) {
- void (*preHookFunc) (struct map_session_data **sd, const char **name, const char **mes);
+ if (HPMHooks.count.HP_clif_guild_leave_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, const char **name, int *char_id, const char **mes);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_leave_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_leave_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_guild_leave_pre[hIndex].func;
- preHookFunc(&sd, &name, &mes);
+ preHookFunc(&sd, &name, &char_id, &mes);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
}
{
- HPMHooks.source.clif.guild_leave(sd, name, mes);
+ HPMHooks.source.clif.guild_leave(sd, name, char_id, mes);
}
- if( HPMHooks.count.HP_clif_guild_leave_post ) {
- void (*postHookFunc) (struct map_session_data *sd, const char *name, const char *mes);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_leave_post; hIndex++ ) {
+ if (HPMHooks.count.HP_clif_guild_leave_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, const char *name, int char_id, const char *mes);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_leave_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_guild_leave_post[hIndex].func;
- postHookFunc(sd, name, mes);
+ postHookFunc(sd, name, char_id, mes);
}
}
return;
}
-void HP_clif_guild_expulsion(struct map_session_data *sd, const char *name, const char *mes, int account_id) {
+void HP_clif_guild_expulsion(struct map_session_data *sd, const char *name, int char_id, const char *mes, int account_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_guild_expulsion_pre ) {
- void (*preHookFunc) (struct map_session_data **sd, const char **name, const char **mes, int *account_id);
+ if (HPMHooks.count.HP_clif_guild_expulsion_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, const char **name, int *char_id, const char **mes, int *account_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_expulsion_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_expulsion_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_guild_expulsion_pre[hIndex].func;
- preHookFunc(&sd, &name, &mes, &account_id);
+ preHookFunc(&sd, &name, &char_id, &mes, &account_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
}
{
- HPMHooks.source.clif.guild_expulsion(sd, name, mes, account_id);
+ HPMHooks.source.clif.guild_expulsion(sd, name, char_id, mes, account_id);
}
- if( HPMHooks.count.HP_clif_guild_expulsion_post ) {
- void (*postHookFunc) (struct map_session_data *sd, const char *name, const char *mes, int account_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_expulsion_post; hIndex++ ) {
+ if (HPMHooks.count.HP_clif_guild_expulsion_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, const char *name, int char_id, const char *mes, int account_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_expulsion_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_guild_expulsion_post[hIndex].func;
- postHookFunc(sd, name, mes, account_id);
+ postHookFunc(sd, name, char_id, mes, account_id);
}
}
return;
}
void HP_clif_guild_positionchanged(struct guild *g, int idx) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_guild_positionchanged_pre ) {
+ if (HPMHooks.count.HP_clif_guild_positionchanged_pre > 0) {
void (*preHookFunc) (struct guild **g, int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_positionchanged_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_positionchanged_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_guild_positionchanged_pre[hIndex].func;
preHookFunc(&g, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14478,9 +17335,9 @@ void HP_clif_guild_positionchanged(struct guild *g, int idx) {
{
HPMHooks.source.clif.guild_positionchanged(g, idx);
}
- if( HPMHooks.count.HP_clif_guild_positionchanged_post ) {
+ if (HPMHooks.count.HP_clif_guild_positionchanged_post > 0) {
void (*postHookFunc) (struct guild *g, int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_positionchanged_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_positionchanged_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_guild_positionchanged_post[hIndex].func;
postHookFunc(g, idx);
}
@@ -14489,14 +17346,14 @@ void HP_clif_guild_positionchanged(struct guild *g, int idx) {
}
void HP_clif_guild_memberpositionchanged(struct guild *g, int idx) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_guild_memberpositionchanged_pre ) {
+ if (HPMHooks.count.HP_clif_guild_memberpositionchanged_pre > 0) {
void (*preHookFunc) (struct guild **g, int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_memberpositionchanged_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_memberpositionchanged_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_guild_memberpositionchanged_pre[hIndex].func;
preHookFunc(&g, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14504,9 +17361,9 @@ void HP_clif_guild_memberpositionchanged(struct guild *g, int idx) {
{
HPMHooks.source.clif.guild_memberpositionchanged(g, idx);
}
- if( HPMHooks.count.HP_clif_guild_memberpositionchanged_post ) {
+ if (HPMHooks.count.HP_clif_guild_memberpositionchanged_post > 0) {
void (*postHookFunc) (struct guild *g, int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_memberpositionchanged_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_memberpositionchanged_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_guild_memberpositionchanged_post[hIndex].func;
postHookFunc(g, idx);
}
@@ -14515,14 +17372,14 @@ void HP_clif_guild_memberpositionchanged(struct guild *g, int idx) {
}
void HP_clif_guild_emblem(struct map_session_data *sd, struct guild *g) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_guild_emblem_pre ) {
+ if (HPMHooks.count.HP_clif_guild_emblem_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct guild **g);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_emblem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_emblem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_guild_emblem_pre[hIndex].func;
preHookFunc(&sd, &g);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14530,9 +17387,9 @@ void HP_clif_guild_emblem(struct map_session_data *sd, struct guild *g) {
{
HPMHooks.source.clif.guild_emblem(sd, g);
}
- if( HPMHooks.count.HP_clif_guild_emblem_post ) {
+ if (HPMHooks.count.HP_clif_guild_emblem_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct guild *g);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_emblem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_emblem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_guild_emblem_post[hIndex].func;
postHookFunc(sd, g);
}
@@ -14541,14 +17398,14 @@ void HP_clif_guild_emblem(struct map_session_data *sd, struct guild *g) {
}
void HP_clif_guild_emblem_area(struct block_list *bl) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_guild_emblem_area_pre ) {
+ if (HPMHooks.count.HP_clif_guild_emblem_area_pre > 0) {
void (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_emblem_area_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_emblem_area_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_guild_emblem_area_pre[hIndex].func;
preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14556,9 +17413,9 @@ void HP_clif_guild_emblem_area(struct block_list *bl) {
{
HPMHooks.source.clif.guild_emblem_area(bl);
}
- if( HPMHooks.count.HP_clif_guild_emblem_area_post ) {
+ if (HPMHooks.count.HP_clif_guild_emblem_area_post > 0) {
void (*postHookFunc) (struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_emblem_area_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_emblem_area_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_guild_emblem_area_post[hIndex].func;
postHookFunc(bl);
}
@@ -14567,14 +17424,14 @@ void HP_clif_guild_emblem_area(struct block_list *bl) {
}
void HP_clif_guild_notice(struct map_session_data *sd, struct guild *g) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_guild_notice_pre ) {
+ if (HPMHooks.count.HP_clif_guild_notice_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct guild **g);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_notice_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_notice_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_guild_notice_pre[hIndex].func;
preHookFunc(&sd, &g);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14582,9 +17439,9 @@ void HP_clif_guild_notice(struct map_session_data *sd, struct guild *g) {
{
HPMHooks.source.clif.guild_notice(sd, g);
}
- if( HPMHooks.count.HP_clif_guild_notice_post ) {
+ if (HPMHooks.count.HP_clif_guild_notice_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct guild *g);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_notice_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_notice_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_guild_notice_post[hIndex].func;
postHookFunc(sd, g);
}
@@ -14593,14 +17450,14 @@ void HP_clif_guild_notice(struct map_session_data *sd, struct guild *g) {
}
void HP_clif_guild_message(struct guild *g, int account_id, const char *mes, int len) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_guild_message_pre ) {
+ if (HPMHooks.count.HP_clif_guild_message_pre > 0) {
void (*preHookFunc) (struct guild **g, int *account_id, const char **mes, int *len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_message_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_message_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_guild_message_pre[hIndex].func;
preHookFunc(&g, &account_id, &mes, &len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14608,9 +17465,9 @@ void HP_clif_guild_message(struct guild *g, int account_id, const char *mes, int
{
HPMHooks.source.clif.guild_message(g, account_id, mes, len);
}
- if( HPMHooks.count.HP_clif_guild_message_post ) {
+ if (HPMHooks.count.HP_clif_guild_message_post > 0) {
void (*postHookFunc) (struct guild *g, int account_id, const char *mes, int len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_message_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_message_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_guild_message_post[hIndex].func;
postHookFunc(g, account_id, mes, len);
}
@@ -14619,14 +17476,14 @@ void HP_clif_guild_message(struct guild *g, int account_id, const char *mes, int
}
void HP_clif_guild_reqalliance(struct map_session_data *sd, int account_id, const char *name) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_guild_reqalliance_pre ) {
+ if (HPMHooks.count.HP_clif_guild_reqalliance_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *account_id, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_reqalliance_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_reqalliance_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_guild_reqalliance_pre[hIndex].func;
preHookFunc(&sd, &account_id, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14634,9 +17491,9 @@ void HP_clif_guild_reqalliance(struct map_session_data *sd, int account_id, cons
{
HPMHooks.source.clif.guild_reqalliance(sd, account_id, name);
}
- if( HPMHooks.count.HP_clif_guild_reqalliance_post ) {
+ if (HPMHooks.count.HP_clif_guild_reqalliance_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int account_id, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_reqalliance_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_reqalliance_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_guild_reqalliance_post[hIndex].func;
postHookFunc(sd, account_id, name);
}
@@ -14645,14 +17502,14 @@ void HP_clif_guild_reqalliance(struct map_session_data *sd, int account_id, cons
}
void HP_clif_guild_allianceack(struct map_session_data *sd, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_guild_allianceack_pre ) {
+ if (HPMHooks.count.HP_clif_guild_allianceack_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_allianceack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_allianceack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_guild_allianceack_pre[hIndex].func;
preHookFunc(&sd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14660,9 +17517,9 @@ void HP_clif_guild_allianceack(struct map_session_data *sd, int flag) {
{
HPMHooks.source.clif.guild_allianceack(sd, flag);
}
- if( HPMHooks.count.HP_clif_guild_allianceack_post ) {
+ if (HPMHooks.count.HP_clif_guild_allianceack_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_allianceack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_allianceack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_guild_allianceack_post[hIndex].func;
postHookFunc(sd, flag);
}
@@ -14671,14 +17528,14 @@ void HP_clif_guild_allianceack(struct map_session_data *sd, int flag) {
}
void HP_clif_guild_delalliance(struct map_session_data *sd, int guild_id, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_guild_delalliance_pre ) {
+ if (HPMHooks.count.HP_clif_guild_delalliance_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *guild_id, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_delalliance_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_delalliance_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_guild_delalliance_pre[hIndex].func;
preHookFunc(&sd, &guild_id, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14686,9 +17543,9 @@ void HP_clif_guild_delalliance(struct map_session_data *sd, int guild_id, int fl
{
HPMHooks.source.clif.guild_delalliance(sd, guild_id, flag);
}
- if( HPMHooks.count.HP_clif_guild_delalliance_post ) {
+ if (HPMHooks.count.HP_clif_guild_delalliance_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int guild_id, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_delalliance_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_delalliance_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_guild_delalliance_post[hIndex].func;
postHookFunc(sd, guild_id, flag);
}
@@ -14697,14 +17554,14 @@ void HP_clif_guild_delalliance(struct map_session_data *sd, int guild_id, int fl
}
void HP_clif_guild_oppositionack(struct map_session_data *sd, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_guild_oppositionack_pre ) {
+ if (HPMHooks.count.HP_clif_guild_oppositionack_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_oppositionack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_oppositionack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_guild_oppositionack_pre[hIndex].func;
preHookFunc(&sd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14712,9 +17569,9 @@ void HP_clif_guild_oppositionack(struct map_session_data *sd, int flag) {
{
HPMHooks.source.clif.guild_oppositionack(sd, flag);
}
- if( HPMHooks.count.HP_clif_guild_oppositionack_post ) {
+ if (HPMHooks.count.HP_clif_guild_oppositionack_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_oppositionack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_oppositionack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_guild_oppositionack_post[hIndex].func;
postHookFunc(sd, flag);
}
@@ -14723,14 +17580,14 @@ void HP_clif_guild_oppositionack(struct map_session_data *sd, int flag) {
}
void HP_clif_guild_broken(struct map_session_data *sd, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_guild_broken_pre ) {
+ if (HPMHooks.count.HP_clif_guild_broken_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_broken_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_broken_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_guild_broken_pre[hIndex].func;
preHookFunc(&sd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14738,9 +17595,9 @@ void HP_clif_guild_broken(struct map_session_data *sd, int flag) {
{
HPMHooks.source.clif.guild_broken(sd, flag);
}
- if( HPMHooks.count.HP_clif_guild_broken_post ) {
+ if (HPMHooks.count.HP_clif_guild_broken_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_broken_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_broken_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_guild_broken_post[hIndex].func;
postHookFunc(sd, flag);
}
@@ -14749,14 +17606,14 @@ void HP_clif_guild_broken(struct map_session_data *sd, int flag) {
}
void HP_clif_guild_xy(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_guild_xy_pre ) {
+ if (HPMHooks.count.HP_clif_guild_xy_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_xy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_xy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_guild_xy_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14764,9 +17621,9 @@ void HP_clif_guild_xy(struct map_session_data *sd) {
{
HPMHooks.source.clif.guild_xy(sd);
}
- if( HPMHooks.count.HP_clif_guild_xy_post ) {
+ if (HPMHooks.count.HP_clif_guild_xy_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_xy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_xy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_guild_xy_post[hIndex].func;
postHookFunc(sd);
}
@@ -14775,14 +17632,14 @@ void HP_clif_guild_xy(struct map_session_data *sd) {
}
void HP_clif_guild_xy_single(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_guild_xy_single_pre ) {
+ if (HPMHooks.count.HP_clif_guild_xy_single_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_xy_single_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_xy_single_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_guild_xy_single_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14790,9 +17647,9 @@ void HP_clif_guild_xy_single(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.guild_xy_single(fd, sd);
}
- if( HPMHooks.count.HP_clif_guild_xy_single_post ) {
+ if (HPMHooks.count.HP_clif_guild_xy_single_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_xy_single_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_xy_single_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_guild_xy_single_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -14801,14 +17658,14 @@ void HP_clif_guild_xy_single(int fd, struct map_session_data *sd) {
}
void HP_clif_guild_xy_remove(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_guild_xy_remove_pre ) {
+ if (HPMHooks.count.HP_clif_guild_xy_remove_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_xy_remove_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_xy_remove_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_guild_xy_remove_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14816,9 +17673,9 @@ void HP_clif_guild_xy_remove(struct map_session_data *sd) {
{
HPMHooks.source.clif.guild_xy_remove(sd);
}
- if( HPMHooks.count.HP_clif_guild_xy_remove_post ) {
+ if (HPMHooks.count.HP_clif_guild_xy_remove_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_xy_remove_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_xy_remove_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_guild_xy_remove_post[hIndex].func;
postHookFunc(sd);
}
@@ -14827,14 +17684,14 @@ void HP_clif_guild_xy_remove(struct map_session_data *sd) {
}
void HP_clif_guild_positionnamelist(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_guild_positionnamelist_pre ) {
+ if (HPMHooks.count.HP_clif_guild_positionnamelist_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_positionnamelist_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_positionnamelist_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_guild_positionnamelist_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14842,9 +17699,9 @@ void HP_clif_guild_positionnamelist(struct map_session_data *sd) {
{
HPMHooks.source.clif.guild_positionnamelist(sd);
}
- if( HPMHooks.count.HP_clif_guild_positionnamelist_post ) {
+ if (HPMHooks.count.HP_clif_guild_positionnamelist_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_positionnamelist_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_positionnamelist_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_guild_positionnamelist_post[hIndex].func;
postHookFunc(sd);
}
@@ -14853,14 +17710,14 @@ void HP_clif_guild_positionnamelist(struct map_session_data *sd) {
}
void HP_clif_guild_positioninfolist(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_guild_positioninfolist_pre ) {
+ if (HPMHooks.count.HP_clif_guild_positioninfolist_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_positioninfolist_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_positioninfolist_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_guild_positioninfolist_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14868,9 +17725,9 @@ void HP_clif_guild_positioninfolist(struct map_session_data *sd) {
{
HPMHooks.source.clif.guild_positioninfolist(sd);
}
- if( HPMHooks.count.HP_clif_guild_positioninfolist_post ) {
+ if (HPMHooks.count.HP_clif_guild_positioninfolist_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_positioninfolist_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_positioninfolist_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_guild_positioninfolist_post[hIndex].func;
postHookFunc(sd);
}
@@ -14879,14 +17736,14 @@ void HP_clif_guild_positioninfolist(struct map_session_data *sd) {
}
void HP_clif_guild_expulsionlist(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_guild_expulsionlist_pre ) {
+ if (HPMHooks.count.HP_clif_guild_expulsionlist_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_expulsionlist_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_expulsionlist_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_guild_expulsionlist_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14894,26 +17751,78 @@ void HP_clif_guild_expulsionlist(struct map_session_data *sd) {
{
HPMHooks.source.clif.guild_expulsionlist(sd);
}
- if( HPMHooks.count.HP_clif_guild_expulsionlist_post ) {
+ if (HPMHooks.count.HP_clif_guild_expulsionlist_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_expulsionlist_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_expulsionlist_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_guild_expulsionlist_post[hIndex].func;
postHookFunc(sd);
}
}
return;
}
+void HP_clif_guild_set_position(struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_guild_set_position_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_set_position_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_guild_set_position_pre[hIndex].func;
+ preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.guild_set_position(sd);
+ }
+ if (HPMHooks.count.HP_clif_guild_set_position_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_set_position_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_guild_set_position_post[hIndex].func;
+ postHookFunc(sd);
+ }
+ }
+ return;
+}
+void HP_clif_guild_position_selected(struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_guild_position_selected_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_position_selected_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_guild_position_selected_pre[hIndex].func;
+ preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.guild_position_selected(sd);
+ }
+ if (HPMHooks.count.HP_clif_guild_position_selected_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_position_selected_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_guild_position_selected_post[hIndex].func;
+ postHookFunc(sd);
+ }
+ }
+ return;
+}
bool HP_clif_validate_emblem(const uint8 *emblem, unsigned long emblem_len) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_clif_validate_emblem_pre ) {
+ if (HPMHooks.count.HP_clif_validate_emblem_pre > 0) {
bool (*preHookFunc) (const uint8 **emblem, unsigned long *emblem_len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_validate_emblem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_validate_emblem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_validate_emblem_pre[hIndex].func;
retVal___ = preHookFunc(&emblem, &emblem_len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -14921,9 +17830,9 @@ bool HP_clif_validate_emblem(const uint8 *emblem, unsigned long emblem_len) {
{
retVal___ = HPMHooks.source.clif.validate_emblem(emblem, emblem_len);
}
- if( HPMHooks.count.HP_clif_validate_emblem_post ) {
+ if (HPMHooks.count.HP_clif_validate_emblem_post > 0) {
bool (*postHookFunc) (bool retVal___, const uint8 *emblem, unsigned long emblem_len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_validate_emblem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_validate_emblem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_validate_emblem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, emblem, emblem_len);
}
@@ -14932,14 +17841,14 @@ bool HP_clif_validate_emblem(const uint8 *emblem, unsigned long emblem_len) {
}
void HP_clif_bg_hp(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_bg_hp_pre ) {
+ if (HPMHooks.count.HP_clif_bg_hp_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bg_hp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bg_hp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_bg_hp_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14947,9 +17856,9 @@ void HP_clif_bg_hp(struct map_session_data *sd) {
{
HPMHooks.source.clif.bg_hp(sd);
}
- if( HPMHooks.count.HP_clif_bg_hp_post ) {
+ if (HPMHooks.count.HP_clif_bg_hp_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bg_hp_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bg_hp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_bg_hp_post[hIndex].func;
postHookFunc(sd);
}
@@ -14958,14 +17867,14 @@ void HP_clif_bg_hp(struct map_session_data *sd) {
}
void HP_clif_bg_xy(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_bg_xy_pre ) {
+ if (HPMHooks.count.HP_clif_bg_xy_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bg_xy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bg_xy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_bg_xy_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14973,9 +17882,9 @@ void HP_clif_bg_xy(struct map_session_data *sd) {
{
HPMHooks.source.clif.bg_xy(sd);
}
- if( HPMHooks.count.HP_clif_bg_xy_post ) {
+ if (HPMHooks.count.HP_clif_bg_xy_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bg_xy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bg_xy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_bg_xy_post[hIndex].func;
postHookFunc(sd);
}
@@ -14984,14 +17893,14 @@ void HP_clif_bg_xy(struct map_session_data *sd) {
}
void HP_clif_bg_xy_remove(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_bg_xy_remove_pre ) {
+ if (HPMHooks.count.HP_clif_bg_xy_remove_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bg_xy_remove_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bg_xy_remove_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_bg_xy_remove_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -14999,9 +17908,9 @@ void HP_clif_bg_xy_remove(struct map_session_data *sd) {
{
HPMHooks.source.clif.bg_xy_remove(sd);
}
- if( HPMHooks.count.HP_clif_bg_xy_remove_post ) {
+ if (HPMHooks.count.HP_clif_bg_xy_remove_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bg_xy_remove_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bg_xy_remove_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_bg_xy_remove_post[hIndex].func;
postHookFunc(sd);
}
@@ -15010,14 +17919,14 @@ void HP_clif_bg_xy_remove(struct map_session_data *sd) {
}
void HP_clif_bg_message(struct battleground_data *bgd, int src_id, const char *name, const char *mes) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_bg_message_pre ) {
+ if (HPMHooks.count.HP_clif_bg_message_pre > 0) {
void (*preHookFunc) (struct battleground_data **bgd, int *src_id, const char **name, const char **mes);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bg_message_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bg_message_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_bg_message_pre[hIndex].func;
preHookFunc(&bgd, &src_id, &name, &mes);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15025,9 +17934,9 @@ void HP_clif_bg_message(struct battleground_data *bgd, int src_id, const char *n
{
HPMHooks.source.clif.bg_message(bgd, src_id, name, mes);
}
- if( HPMHooks.count.HP_clif_bg_message_post ) {
+ if (HPMHooks.count.HP_clif_bg_message_post > 0) {
void (*postHookFunc) (struct battleground_data *bgd, int src_id, const char *name, const char *mes);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bg_message_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bg_message_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_bg_message_post[hIndex].func;
postHookFunc(bgd, src_id, name, mes);
}
@@ -15036,14 +17945,14 @@ void HP_clif_bg_message(struct battleground_data *bgd, int src_id, const char *n
}
void HP_clif_bg_updatescore(int16 m) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_bg_updatescore_pre ) {
+ if (HPMHooks.count.HP_clif_bg_updatescore_pre > 0) {
void (*preHookFunc) (int16 *m);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bg_updatescore_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bg_updatescore_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_bg_updatescore_pre[hIndex].func;
preHookFunc(&m);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15051,9 +17960,9 @@ void HP_clif_bg_updatescore(int16 m) {
{
HPMHooks.source.clif.bg_updatescore(m);
}
- if( HPMHooks.count.HP_clif_bg_updatescore_post ) {
+ if (HPMHooks.count.HP_clif_bg_updatescore_post > 0) {
void (*postHookFunc) (int16 m);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bg_updatescore_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bg_updatescore_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_bg_updatescore_post[hIndex].func;
postHookFunc(m);
}
@@ -15062,14 +17971,14 @@ void HP_clif_bg_updatescore(int16 m) {
}
void HP_clif_bg_updatescore_single(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_bg_updatescore_single_pre ) {
+ if (HPMHooks.count.HP_clif_bg_updatescore_single_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bg_updatescore_single_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bg_updatescore_single_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_bg_updatescore_single_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15077,9 +17986,9 @@ void HP_clif_bg_updatescore_single(struct map_session_data *sd) {
{
HPMHooks.source.clif.bg_updatescore_single(sd);
}
- if( HPMHooks.count.HP_clif_bg_updatescore_single_post ) {
+ if (HPMHooks.count.HP_clif_bg_updatescore_single_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bg_updatescore_single_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bg_updatescore_single_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_bg_updatescore_single_post[hIndex].func;
postHookFunc(sd);
}
@@ -15088,14 +17997,14 @@ void HP_clif_bg_updatescore_single(struct map_session_data *sd) {
}
void HP_clif_sendbgemblem_area(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_sendbgemblem_area_pre ) {
+ if (HPMHooks.count.HP_clif_sendbgemblem_area_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_sendbgemblem_area_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_sendbgemblem_area_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_sendbgemblem_area_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15103,9 +18012,9 @@ void HP_clif_sendbgemblem_area(struct map_session_data *sd) {
{
HPMHooks.source.clif.sendbgemblem_area(sd);
}
- if( HPMHooks.count.HP_clif_sendbgemblem_area_post ) {
+ if (HPMHooks.count.HP_clif_sendbgemblem_area_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_sendbgemblem_area_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_sendbgemblem_area_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_sendbgemblem_area_post[hIndex].func;
postHookFunc(sd);
}
@@ -15114,14 +18023,14 @@ void HP_clif_sendbgemblem_area(struct map_session_data *sd) {
}
void HP_clif_sendbgemblem_single(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_sendbgemblem_single_pre ) {
+ if (HPMHooks.count.HP_clif_sendbgemblem_single_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_sendbgemblem_single_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_sendbgemblem_single_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_sendbgemblem_single_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15129,9 +18038,9 @@ void HP_clif_sendbgemblem_single(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.sendbgemblem_single(fd, sd);
}
- if( HPMHooks.count.HP_clif_sendbgemblem_single_post ) {
+ if (HPMHooks.count.HP_clif_sendbgemblem_single_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_sendbgemblem_single_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_sendbgemblem_single_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_sendbgemblem_single_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -15141,14 +18050,14 @@ void HP_clif_sendbgemblem_single(int fd, struct map_session_data *sd) {
int HP_clif_instance(int instance_id, int type, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_clif_instance_pre ) {
+ if (HPMHooks.count.HP_clif_instance_pre > 0) {
int (*preHookFunc) (int *instance_id, int *type, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_instance_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_instance_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_instance_pre[hIndex].func;
retVal___ = preHookFunc(&instance_id, &type, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -15156,9 +18065,9 @@ int HP_clif_instance(int instance_id, int type, int flag) {
{
retVal___ = HPMHooks.source.clif.instance(instance_id, type, flag);
}
- if( HPMHooks.count.HP_clif_instance_post ) {
+ if (HPMHooks.count.HP_clif_instance_post > 0) {
int (*postHookFunc) (int retVal___, int instance_id, int type, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_instance_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_instance_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_instance_post[hIndex].func;
retVal___ = postHookFunc(retVal___, instance_id, type, flag);
}
@@ -15167,14 +18076,14 @@ int HP_clif_instance(int instance_id, int type, int flag) {
}
void HP_clif_instance_join(int fd, int instance_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_instance_join_pre ) {
+ if (HPMHooks.count.HP_clif_instance_join_pre > 0) {
void (*preHookFunc) (int *fd, int *instance_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_instance_join_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_instance_join_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_instance_join_pre[hIndex].func;
preHookFunc(&fd, &instance_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15182,9 +18091,9 @@ void HP_clif_instance_join(int fd, int instance_id) {
{
HPMHooks.source.clif.instance_join(fd, instance_id);
}
- if( HPMHooks.count.HP_clif_instance_join_post ) {
+ if (HPMHooks.count.HP_clif_instance_join_post > 0) {
void (*postHookFunc) (int fd, int instance_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_instance_join_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_instance_join_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_instance_join_post[hIndex].func;
postHookFunc(fd, instance_id);
}
@@ -15193,14 +18102,14 @@ void HP_clif_instance_join(int fd, int instance_id) {
}
void HP_clif_instance_leave(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_instance_leave_pre ) {
+ if (HPMHooks.count.HP_clif_instance_leave_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_instance_leave_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_instance_leave_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_instance_leave_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15208,9 +18117,9 @@ void HP_clif_instance_leave(int fd) {
{
HPMHooks.source.clif.instance_leave(fd);
}
- if( HPMHooks.count.HP_clif_instance_leave_post ) {
+ if (HPMHooks.count.HP_clif_instance_leave_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_instance_leave_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_instance_leave_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_instance_leave_post[hIndex].func;
postHookFunc(fd);
}
@@ -15219,14 +18128,14 @@ void HP_clif_instance_leave(int fd) {
}
void HP_clif_catch_process(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_catch_process_pre ) {
+ if (HPMHooks.count.HP_clif_catch_process_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_catch_process_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_catch_process_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_catch_process_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15234,9 +18143,9 @@ void HP_clif_catch_process(struct map_session_data *sd) {
{
HPMHooks.source.clif.catch_process(sd);
}
- if( HPMHooks.count.HP_clif_catch_process_post ) {
+ if (HPMHooks.count.HP_clif_catch_process_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_catch_process_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_catch_process_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_catch_process_post[hIndex].func;
postHookFunc(sd);
}
@@ -15245,14 +18154,14 @@ void HP_clif_catch_process(struct map_session_data *sd) {
}
void HP_clif_pet_roulette(struct map_session_data *sd, int data) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pet_roulette_pre ) {
+ if (HPMHooks.count.HP_clif_pet_roulette_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pet_roulette_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pet_roulette_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pet_roulette_pre[hIndex].func;
preHookFunc(&sd, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15260,9 +18169,9 @@ void HP_clif_pet_roulette(struct map_session_data *sd, int data) {
{
HPMHooks.source.clif.pet_roulette(sd, data);
}
- if( HPMHooks.count.HP_clif_pet_roulette_post ) {
+ if (HPMHooks.count.HP_clif_pet_roulette_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pet_roulette_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pet_roulette_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pet_roulette_post[hIndex].func;
postHookFunc(sd, data);
}
@@ -15271,14 +18180,14 @@ void HP_clif_pet_roulette(struct map_session_data *sd, int data) {
}
void HP_clif_sendegg(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_sendegg_pre ) {
+ if (HPMHooks.count.HP_clif_sendegg_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_sendegg_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_sendegg_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_sendegg_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15286,9 +18195,9 @@ void HP_clif_sendegg(struct map_session_data *sd) {
{
HPMHooks.source.clif.sendegg(sd);
}
- if( HPMHooks.count.HP_clif_sendegg_post ) {
+ if (HPMHooks.count.HP_clif_sendegg_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_sendegg_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_sendegg_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_sendegg_post[hIndex].func;
postHookFunc(sd);
}
@@ -15297,14 +18206,14 @@ void HP_clif_sendegg(struct map_session_data *sd) {
}
void HP_clif_send_petstatus(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_send_petstatus_pre ) {
+ if (HPMHooks.count.HP_clif_send_petstatus_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_send_petstatus_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_send_petstatus_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_send_petstatus_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15312,9 +18221,9 @@ void HP_clif_send_petstatus(struct map_session_data *sd) {
{
HPMHooks.source.clif.send_petstatus(sd);
}
- if( HPMHooks.count.HP_clif_send_petstatus_post ) {
+ if (HPMHooks.count.HP_clif_send_petstatus_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_send_petstatus_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_send_petstatus_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_send_petstatus_post[hIndex].func;
postHookFunc(sd);
}
@@ -15323,14 +18232,14 @@ void HP_clif_send_petstatus(struct map_session_data *sd) {
}
void HP_clif_send_petdata(struct map_session_data *sd, struct pet_data *pd, int type, int param) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_send_petdata_pre ) {
+ if (HPMHooks.count.HP_clif_send_petdata_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct pet_data **pd, int *type, int *param);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_send_petdata_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_send_petdata_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_send_petdata_pre[hIndex].func;
preHookFunc(&sd, &pd, &type, &param);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15338,9 +18247,9 @@ void HP_clif_send_petdata(struct map_session_data *sd, struct pet_data *pd, int
{
HPMHooks.source.clif.send_petdata(sd, pd, type, param);
}
- if( HPMHooks.count.HP_clif_send_petdata_post ) {
+ if (HPMHooks.count.HP_clif_send_petdata_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct pet_data *pd, int type, int param);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_send_petdata_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_send_petdata_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_send_petdata_post[hIndex].func;
postHookFunc(sd, pd, type, param);
}
@@ -15349,14 +18258,14 @@ void HP_clif_send_petdata(struct map_session_data *sd, struct pet_data *pd, int
}
void HP_clif_pet_emotion(struct pet_data *pd, int param) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pet_emotion_pre ) {
+ if (HPMHooks.count.HP_clif_pet_emotion_pre > 0) {
void (*preHookFunc) (struct pet_data **pd, int *param);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pet_emotion_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pet_emotion_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pet_emotion_pre[hIndex].func;
preHookFunc(&pd, &param);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15364,9 +18273,9 @@ void HP_clif_pet_emotion(struct pet_data *pd, int param) {
{
HPMHooks.source.clif.pet_emotion(pd, param);
}
- if( HPMHooks.count.HP_clif_pet_emotion_post ) {
+ if (HPMHooks.count.HP_clif_pet_emotion_post > 0) {
void (*postHookFunc) (struct pet_data *pd, int param);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pet_emotion_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pet_emotion_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pet_emotion_post[hIndex].func;
postHookFunc(pd, param);
}
@@ -15375,14 +18284,14 @@ void HP_clif_pet_emotion(struct pet_data *pd, int param) {
}
void HP_clif_pet_food(struct map_session_data *sd, int foodid, int fail) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pet_food_pre ) {
+ if (HPMHooks.count.HP_clif_pet_food_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *foodid, int *fail);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pet_food_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pet_food_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pet_food_pre[hIndex].func;
preHookFunc(&sd, &foodid, &fail);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15390,9 +18299,9 @@ void HP_clif_pet_food(struct map_session_data *sd, int foodid, int fail) {
{
HPMHooks.source.clif.pet_food(sd, foodid, fail);
}
- if( HPMHooks.count.HP_clif_pet_food_post ) {
+ if (HPMHooks.count.HP_clif_pet_food_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int foodid, int fail);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pet_food_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pet_food_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pet_food_post[hIndex].func;
postHookFunc(sd, foodid, fail);
}
@@ -15402,16 +18311,16 @@ void HP_clif_pet_food(struct map_session_data *sd, int foodid, int fail) {
int HP_clif_friendslist_toggle_sub(struct map_session_data *sd, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_clif_friendslist_toggle_sub_pre ) {
+ if (HPMHooks.count.HP_clif_friendslist_toggle_sub_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_friendslist_toggle_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_friendslist_toggle_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_clif_friendslist_toggle_sub_pre[hIndex].func;
retVal___ = preHookFunc(&sd, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -15421,9 +18330,9 @@ int HP_clif_friendslist_toggle_sub(struct map_session_data *sd, va_list ap) {
retVal___ = HPMHooks.source.clif.friendslist_toggle_sub(sd, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_clif_friendslist_toggle_sub_post ) {
+ if (HPMHooks.count.HP_clif_friendslist_toggle_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_friendslist_toggle_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_friendslist_toggle_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_clif_friendslist_toggle_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, ap___copy);
@@ -15434,14 +18343,14 @@ int HP_clif_friendslist_toggle_sub(struct map_session_data *sd, va_list ap) {
}
void HP_clif_friendslist_send(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_friendslist_send_pre ) {
+ if (HPMHooks.count.HP_clif_friendslist_send_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_friendslist_send_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_friendslist_send_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_friendslist_send_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15449,9 +18358,9 @@ void HP_clif_friendslist_send(struct map_session_data *sd) {
{
HPMHooks.source.clif.friendslist_send(sd);
}
- if( HPMHooks.count.HP_clif_friendslist_send_post ) {
+ if (HPMHooks.count.HP_clif_friendslist_send_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_friendslist_send_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_friendslist_send_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_friendslist_send_post[hIndex].func;
postHookFunc(sd);
}
@@ -15460,14 +18369,14 @@ void HP_clif_friendslist_send(struct map_session_data *sd) {
}
void HP_clif_friendslist_reqack(struct map_session_data *sd, struct map_session_data *f_sd, int type) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_friendslist_reqack_pre ) {
+ if (HPMHooks.count.HP_clif_friendslist_reqack_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct map_session_data **f_sd, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_friendslist_reqack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_friendslist_reqack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_friendslist_reqack_pre[hIndex].func;
preHookFunc(&sd, &f_sd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15475,9 +18384,9 @@ void HP_clif_friendslist_reqack(struct map_session_data *sd, struct map_session_
{
HPMHooks.source.clif.friendslist_reqack(sd, f_sd, type);
}
- if( HPMHooks.count.HP_clif_friendslist_reqack_post ) {
+ if (HPMHooks.count.HP_clif_friendslist_reqack_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct map_session_data *f_sd, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_friendslist_reqack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_friendslist_reqack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_friendslist_reqack_post[hIndex].func;
postHookFunc(sd, f_sd, type);
}
@@ -15486,14 +18395,14 @@ void HP_clif_friendslist_reqack(struct map_session_data *sd, struct map_session_
}
void HP_clif_friendslist_toggle(struct map_session_data *sd, int account_id, int char_id, int online) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_friendslist_toggle_pre ) {
+ if (HPMHooks.count.HP_clif_friendslist_toggle_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *account_id, int *char_id, int *online);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_friendslist_toggle_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_friendslist_toggle_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_friendslist_toggle_pre[hIndex].func;
preHookFunc(&sd, &account_id, &char_id, &online);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15501,9 +18410,9 @@ void HP_clif_friendslist_toggle(struct map_session_data *sd, int account_id, int
{
HPMHooks.source.clif.friendslist_toggle(sd, account_id, char_id, online);
}
- if( HPMHooks.count.HP_clif_friendslist_toggle_post ) {
+ if (HPMHooks.count.HP_clif_friendslist_toggle_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int account_id, int char_id, int online);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_friendslist_toggle_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_friendslist_toggle_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_friendslist_toggle_post[hIndex].func;
postHookFunc(sd, account_id, char_id, online);
}
@@ -15512,14 +18421,14 @@ void HP_clif_friendslist_toggle(struct map_session_data *sd, int account_id, int
}
void HP_clif_friendlist_req(struct map_session_data *sd, int account_id, int char_id, const char *name) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_friendlist_req_pre ) {
+ if (HPMHooks.count.HP_clif_friendlist_req_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *account_id, int *char_id, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_friendlist_req_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_friendlist_req_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_friendlist_req_pre[hIndex].func;
preHookFunc(&sd, &account_id, &char_id, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15527,9 +18436,9 @@ void HP_clif_friendlist_req(struct map_session_data *sd, int account_id, int cha
{
HPMHooks.source.clif.friendlist_req(sd, account_id, char_id, name);
}
- if( HPMHooks.count.HP_clif_friendlist_req_post ) {
+ if (HPMHooks.count.HP_clif_friendlist_req_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int account_id, int char_id, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_friendlist_req_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_friendlist_req_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_friendlist_req_post[hIndex].func;
postHookFunc(sd, account_id, char_id, name);
}
@@ -15538,14 +18447,14 @@ void HP_clif_friendlist_req(struct map_session_data *sd, int account_id, int cha
}
void HP_clif_GM_kickack(struct map_session_data *sd, int result) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_GM_kickack_pre ) {
+ if (HPMHooks.count.HP_clif_GM_kickack_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *result);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_GM_kickack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_GM_kickack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_GM_kickack_pre[hIndex].func;
preHookFunc(&sd, &result);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15553,9 +18462,9 @@ void HP_clif_GM_kickack(struct map_session_data *sd, int result) {
{
HPMHooks.source.clif.GM_kickack(sd, result);
}
- if( HPMHooks.count.HP_clif_GM_kickack_post ) {
+ if (HPMHooks.count.HP_clif_GM_kickack_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int result);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_GM_kickack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_GM_kickack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_GM_kickack_post[hIndex].func;
postHookFunc(sd, result);
}
@@ -15564,14 +18473,14 @@ void HP_clif_GM_kickack(struct map_session_data *sd, int result) {
}
void HP_clif_GM_kick(struct map_session_data *sd, struct map_session_data *tsd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_GM_kick_pre ) {
+ if (HPMHooks.count.HP_clif_GM_kick_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct map_session_data **tsd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_GM_kick_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_GM_kick_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_GM_kick_pre[hIndex].func;
preHookFunc(&sd, &tsd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15579,9 +18488,9 @@ void HP_clif_GM_kick(struct map_session_data *sd, struct map_session_data *tsd)
{
HPMHooks.source.clif.GM_kick(sd, tsd);
}
- if( HPMHooks.count.HP_clif_GM_kick_post ) {
+ if (HPMHooks.count.HP_clif_GM_kick_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct map_session_data *tsd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_GM_kick_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_GM_kick_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_GM_kick_post[hIndex].func;
postHookFunc(sd, tsd);
}
@@ -15590,14 +18499,14 @@ void HP_clif_GM_kick(struct map_session_data *sd, struct map_session_data *tsd)
}
void HP_clif_manner_message(struct map_session_data *sd, uint32 type) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_manner_message_pre ) {
+ if (HPMHooks.count.HP_clif_manner_message_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, uint32 *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_manner_message_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_manner_message_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_manner_message_pre[hIndex].func;
preHookFunc(&sd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15605,9 +18514,9 @@ void HP_clif_manner_message(struct map_session_data *sd, uint32 type) {
{
HPMHooks.source.clif.manner_message(sd, type);
}
- if( HPMHooks.count.HP_clif_manner_message_post ) {
+ if (HPMHooks.count.HP_clif_manner_message_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, uint32 type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_manner_message_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_manner_message_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_manner_message_post[hIndex].func;
postHookFunc(sd, type);
}
@@ -15616,14 +18525,14 @@ void HP_clif_manner_message(struct map_session_data *sd, uint32 type) {
}
void HP_clif_GM_silence(struct map_session_data *sd, struct map_session_data *tsd, uint8 type) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_GM_silence_pre ) {
+ if (HPMHooks.count.HP_clif_GM_silence_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct map_session_data **tsd, uint8 *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_GM_silence_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_GM_silence_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_GM_silence_pre[hIndex].func;
preHookFunc(&sd, &tsd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15631,9 +18540,9 @@ void HP_clif_GM_silence(struct map_session_data *sd, struct map_session_data *ts
{
HPMHooks.source.clif.GM_silence(sd, tsd, type);
}
- if( HPMHooks.count.HP_clif_GM_silence_post ) {
+ if (HPMHooks.count.HP_clif_GM_silence_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct map_session_data *tsd, uint8 type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_GM_silence_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_GM_silence_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_GM_silence_post[hIndex].func;
postHookFunc(sd, tsd, type);
}
@@ -15642,14 +18551,14 @@ void HP_clif_GM_silence(struct map_session_data *sd, struct map_session_data *ts
}
void HP_clif_account_name(struct map_session_data *sd, int account_id, const char *accname) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_account_name_pre ) {
+ if (HPMHooks.count.HP_clif_account_name_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *account_id, const char **accname);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_account_name_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_account_name_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_account_name_pre[hIndex].func;
preHookFunc(&sd, &account_id, &accname);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15657,9 +18566,9 @@ void HP_clif_account_name(struct map_session_data *sd, int account_id, const cha
{
HPMHooks.source.clif.account_name(sd, account_id, accname);
}
- if( HPMHooks.count.HP_clif_account_name_post ) {
+ if (HPMHooks.count.HP_clif_account_name_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int account_id, const char *accname);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_account_name_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_account_name_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_account_name_post[hIndex].func;
postHookFunc(sd, account_id, accname);
}
@@ -15668,14 +18577,14 @@ void HP_clif_account_name(struct map_session_data *sd, int account_id, const cha
}
void HP_clif_check(int fd, struct map_session_data *pl_sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_check_pre ) {
+ if (HPMHooks.count.HP_clif_check_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **pl_sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_check_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_check_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_check_pre[hIndex].func;
preHookFunc(&fd, &pl_sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15683,9 +18592,9 @@ void HP_clif_check(int fd, struct map_session_data *pl_sd) {
{
HPMHooks.source.clif.check(fd, pl_sd);
}
- if( HPMHooks.count.HP_clif_check_post ) {
+ if (HPMHooks.count.HP_clif_check_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *pl_sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_check_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_check_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_check_post[hIndex].func;
postHookFunc(fd, pl_sd);
}
@@ -15694,14 +18603,14 @@ void HP_clif_check(int fd, struct map_session_data *pl_sd) {
}
void HP_clif_hominfo(struct map_session_data *sd, struct homun_data *hd, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_hominfo_pre ) {
+ if (HPMHooks.count.HP_clif_hominfo_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct homun_data **hd, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_hominfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_hominfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_hominfo_pre[hIndex].func;
preHookFunc(&sd, &hd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15709,9 +18618,9 @@ void HP_clif_hominfo(struct map_session_data *sd, struct homun_data *hd, int fla
{
HPMHooks.source.clif.hominfo(sd, hd, flag);
}
- if( HPMHooks.count.HP_clif_hominfo_post ) {
+ if (HPMHooks.count.HP_clif_hominfo_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct homun_data *hd, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_hominfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_hominfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_hominfo_post[hIndex].func;
postHookFunc(sd, hd, flag);
}
@@ -15720,14 +18629,14 @@ void HP_clif_hominfo(struct map_session_data *sd, struct homun_data *hd, int fla
}
void HP_clif_homskillinfoblock(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_homskillinfoblock_pre ) {
+ if (HPMHooks.count.HP_clif_homskillinfoblock_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_homskillinfoblock_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_homskillinfoblock_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_homskillinfoblock_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15735,9 +18644,9 @@ void HP_clif_homskillinfoblock(struct map_session_data *sd) {
{
HPMHooks.source.clif.homskillinfoblock(sd);
}
- if( HPMHooks.count.HP_clif_homskillinfoblock_post ) {
+ if (HPMHooks.count.HP_clif_homskillinfoblock_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_homskillinfoblock_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_homskillinfoblock_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_homskillinfoblock_post[hIndex].func;
postHookFunc(sd);
}
@@ -15746,14 +18655,14 @@ void HP_clif_homskillinfoblock(struct map_session_data *sd) {
}
void HP_clif_homskillup(struct map_session_data *sd, uint16 skill_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_homskillup_pre ) {
+ if (HPMHooks.count.HP_clif_homskillup_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, uint16 *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_homskillup_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_homskillup_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_homskillup_pre[hIndex].func;
preHookFunc(&sd, &skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15761,9 +18670,9 @@ void HP_clif_homskillup(struct map_session_data *sd, uint16 skill_id) {
{
HPMHooks.source.clif.homskillup(sd, skill_id);
}
- if( HPMHooks.count.HP_clif_homskillup_post ) {
+ if (HPMHooks.count.HP_clif_homskillup_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_homskillup_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_homskillup_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_homskillup_post[hIndex].func;
postHookFunc(sd, skill_id);
}
@@ -15772,14 +18681,14 @@ void HP_clif_homskillup(struct map_session_data *sd, uint16 skill_id) {
}
void HP_clif_hom_food(struct map_session_data *sd, int foodid, int fail) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_hom_food_pre ) {
+ if (HPMHooks.count.HP_clif_hom_food_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *foodid, int *fail);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_hom_food_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_hom_food_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_hom_food_pre[hIndex].func;
preHookFunc(&sd, &foodid, &fail);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15787,9 +18696,9 @@ void HP_clif_hom_food(struct map_session_data *sd, int foodid, int fail) {
{
HPMHooks.source.clif.hom_food(sd, foodid, fail);
}
- if( HPMHooks.count.HP_clif_hom_food_post ) {
+ if (HPMHooks.count.HP_clif_hom_food_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int foodid, int fail);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_hom_food_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_hom_food_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_hom_food_post[hIndex].func;
postHookFunc(sd, foodid, fail);
}
@@ -15798,14 +18707,14 @@ void HP_clif_hom_food(struct map_session_data *sd, int foodid, int fail) {
}
void HP_clif_send_homdata(struct map_session_data *sd, int state, int param) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_send_homdata_pre ) {
+ if (HPMHooks.count.HP_clif_send_homdata_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *state, int *param);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_send_homdata_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_send_homdata_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_send_homdata_pre[hIndex].func;
preHookFunc(&sd, &state, &param);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15813,9 +18722,9 @@ void HP_clif_send_homdata(struct map_session_data *sd, int state, int param) {
{
HPMHooks.source.clif.send_homdata(sd, state, param);
}
- if( HPMHooks.count.HP_clif_send_homdata_post ) {
+ if (HPMHooks.count.HP_clif_send_homdata_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int state, int param);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_send_homdata_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_send_homdata_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_send_homdata_post[hIndex].func;
postHookFunc(sd, state, param);
}
@@ -15824,14 +18733,14 @@ void HP_clif_send_homdata(struct map_session_data *sd, int state, int param) {
}
void HP_clif_quest_send_list(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_quest_send_list_pre ) {
+ if (HPMHooks.count.HP_clif_quest_send_list_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_quest_send_list_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_quest_send_list_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_quest_send_list_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15839,9 +18748,9 @@ void HP_clif_quest_send_list(struct map_session_data *sd) {
{
HPMHooks.source.clif.quest_send_list(sd);
}
- if( HPMHooks.count.HP_clif_quest_send_list_post ) {
+ if (HPMHooks.count.HP_clif_quest_send_list_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_quest_send_list_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_quest_send_list_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_quest_send_list_post[hIndex].func;
postHookFunc(sd);
}
@@ -15850,14 +18759,14 @@ void HP_clif_quest_send_list(struct map_session_data *sd) {
}
void HP_clif_quest_send_mission(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_quest_send_mission_pre ) {
+ if (HPMHooks.count.HP_clif_quest_send_mission_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_quest_send_mission_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_quest_send_mission_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_quest_send_mission_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15865,9 +18774,9 @@ void HP_clif_quest_send_mission(struct map_session_data *sd) {
{
HPMHooks.source.clif.quest_send_mission(sd);
}
- if( HPMHooks.count.HP_clif_quest_send_mission_post ) {
+ if (HPMHooks.count.HP_clif_quest_send_mission_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_quest_send_mission_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_quest_send_mission_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_quest_send_mission_post[hIndex].func;
postHookFunc(sd);
}
@@ -15876,14 +18785,14 @@ void HP_clif_quest_send_mission(struct map_session_data *sd) {
}
void HP_clif_quest_add(struct map_session_data *sd, struct quest *qd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_quest_add_pre ) {
+ if (HPMHooks.count.HP_clif_quest_add_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct quest **qd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_quest_add_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_quest_add_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_quest_add_pre[hIndex].func;
preHookFunc(&sd, &qd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15891,9 +18800,9 @@ void HP_clif_quest_add(struct map_session_data *sd, struct quest *qd) {
{
HPMHooks.source.clif.quest_add(sd, qd);
}
- if( HPMHooks.count.HP_clif_quest_add_post ) {
+ if (HPMHooks.count.HP_clif_quest_add_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct quest *qd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_quest_add_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_quest_add_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_quest_add_post[hIndex].func;
postHookFunc(sd, qd);
}
@@ -15902,14 +18811,14 @@ void HP_clif_quest_add(struct map_session_data *sd, struct quest *qd) {
}
void HP_clif_quest_delete(struct map_session_data *sd, int quest_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_quest_delete_pre ) {
+ if (HPMHooks.count.HP_clif_quest_delete_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *quest_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_quest_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_quest_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_quest_delete_pre[hIndex].func;
preHookFunc(&sd, &quest_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15917,9 +18826,9 @@ void HP_clif_quest_delete(struct map_session_data *sd, int quest_id) {
{
HPMHooks.source.clif.quest_delete(sd, quest_id);
}
- if( HPMHooks.count.HP_clif_quest_delete_post ) {
+ if (HPMHooks.count.HP_clif_quest_delete_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int quest_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_quest_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_quest_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_quest_delete_post[hIndex].func;
postHookFunc(sd, quest_id);
}
@@ -15928,14 +18837,14 @@ void HP_clif_quest_delete(struct map_session_data *sd, int quest_id) {
}
void HP_clif_quest_update_status(struct map_session_data *sd, int quest_id, bool active) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_quest_update_status_pre ) {
+ if (HPMHooks.count.HP_clif_quest_update_status_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *quest_id, bool *active);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_quest_update_status_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_quest_update_status_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_quest_update_status_pre[hIndex].func;
preHookFunc(&sd, &quest_id, &active);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15943,9 +18852,9 @@ void HP_clif_quest_update_status(struct map_session_data *sd, int quest_id, bool
{
HPMHooks.source.clif.quest_update_status(sd, quest_id, active);
}
- if( HPMHooks.count.HP_clif_quest_update_status_post ) {
+ if (HPMHooks.count.HP_clif_quest_update_status_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int quest_id, bool active);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_quest_update_status_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_quest_update_status_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_quest_update_status_post[hIndex].func;
postHookFunc(sd, quest_id, active);
}
@@ -15954,14 +18863,14 @@ void HP_clif_quest_update_status(struct map_session_data *sd, int quest_id, bool
}
void HP_clif_quest_update_objective(struct map_session_data *sd, struct quest *qd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_quest_update_objective_pre ) {
+ if (HPMHooks.count.HP_clif_quest_update_objective_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct quest **qd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_quest_update_objective_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_quest_update_objective_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_quest_update_objective_pre[hIndex].func;
preHookFunc(&sd, &qd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15969,25 +18878,51 @@ void HP_clif_quest_update_objective(struct map_session_data *sd, struct quest *q
{
HPMHooks.source.clif.quest_update_objective(sd, qd);
}
- if( HPMHooks.count.HP_clif_quest_update_objective_post ) {
+ if (HPMHooks.count.HP_clif_quest_update_objective_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct quest *qd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_quest_update_objective_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_quest_update_objective_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_quest_update_objective_post[hIndex].func;
postHookFunc(sd, qd);
}
}
return;
}
+void HP_clif_quest_notify_objective(struct map_session_data *sd, struct quest *qd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_quest_notify_objective_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, struct quest **qd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_quest_notify_objective_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_quest_notify_objective_pre[hIndex].func;
+ preHookFunc(&sd, &qd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.quest_notify_objective(sd, qd);
+ }
+ if (HPMHooks.count.HP_clif_quest_notify_objective_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, struct quest *qd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_quest_notify_objective_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_quest_notify_objective_post[hIndex].func;
+ postHookFunc(sd, qd);
+ }
+ }
+ return;
+}
void HP_clif_quest_show_event(struct map_session_data *sd, struct block_list *bl, short state, short color) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_quest_show_event_pre ) {
+ if (HPMHooks.count.HP_clif_quest_show_event_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct block_list **bl, short *state, short *color);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_quest_show_event_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_quest_show_event_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_quest_show_event_pre[hIndex].func;
preHookFunc(&sd, &bl, &state, &color);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -15995,9 +18930,9 @@ void HP_clif_quest_show_event(struct map_session_data *sd, struct block_list *bl
{
HPMHooks.source.clif.quest_show_event(sd, bl, state, color);
}
- if( HPMHooks.count.HP_clif_quest_show_event_post ) {
+ if (HPMHooks.count.HP_clif_quest_show_event_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct block_list *bl, short state, short color);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_quest_show_event_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_quest_show_event_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_quest_show_event_post[hIndex].func;
postHookFunc(sd, bl, state, color);
}
@@ -16006,14 +18941,14 @@ void HP_clif_quest_show_event(struct map_session_data *sd, struct block_list *bl
}
void HP_clif_mail_window(int fd, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_mail_window_pre ) {
+ if (HPMHooks.count.HP_clif_mail_window_pre > 0) {
void (*preHookFunc) (int *fd, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_window_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_window_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_mail_window_pre[hIndex].func;
preHookFunc(&fd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16021,9 +18956,9 @@ void HP_clif_mail_window(int fd, int flag) {
{
HPMHooks.source.clif.mail_window(fd, flag);
}
- if( HPMHooks.count.HP_clif_mail_window_post ) {
+ if (HPMHooks.count.HP_clif_mail_window_post > 0) {
void (*postHookFunc) (int fd, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_window_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_window_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_mail_window_post[hIndex].func;
postHookFunc(fd, flag);
}
@@ -16032,14 +18967,14 @@ void HP_clif_mail_window(int fd, int flag) {
}
void HP_clif_mail_read(struct map_session_data *sd, int mail_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_mail_read_pre ) {
+ if (HPMHooks.count.HP_clif_mail_read_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *mail_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_read_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_read_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_mail_read_pre[hIndex].func;
preHookFunc(&sd, &mail_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16047,9 +18982,9 @@ void HP_clif_mail_read(struct map_session_data *sd, int mail_id) {
{
HPMHooks.source.clif.mail_read(sd, mail_id);
}
- if( HPMHooks.count.HP_clif_mail_read_post ) {
+ if (HPMHooks.count.HP_clif_mail_read_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int mail_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_read_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_read_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_mail_read_post[hIndex].func;
postHookFunc(sd, mail_id);
}
@@ -16058,14 +18993,14 @@ void HP_clif_mail_read(struct map_session_data *sd, int mail_id) {
}
void HP_clif_mail_delete(int fd, int mail_id, short fail) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_mail_delete_pre ) {
+ if (HPMHooks.count.HP_clif_mail_delete_pre > 0) {
void (*preHookFunc) (int *fd, int *mail_id, short *fail);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_mail_delete_pre[hIndex].func;
preHookFunc(&fd, &mail_id, &fail);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16073,9 +19008,9 @@ void HP_clif_mail_delete(int fd, int mail_id, short fail) {
{
HPMHooks.source.clif.mail_delete(fd, mail_id, fail);
}
- if( HPMHooks.count.HP_clif_mail_delete_post ) {
+ if (HPMHooks.count.HP_clif_mail_delete_post > 0) {
void (*postHookFunc) (int fd, int mail_id, short fail);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_mail_delete_post[hIndex].func;
postHookFunc(fd, mail_id, fail);
}
@@ -16084,14 +19019,14 @@ void HP_clif_mail_delete(int fd, int mail_id, short fail) {
}
void HP_clif_mail_return(int fd, int mail_id, short fail) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_mail_return_pre ) {
+ if (HPMHooks.count.HP_clif_mail_return_pre > 0) {
void (*preHookFunc) (int *fd, int *mail_id, short *fail);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_return_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_return_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_mail_return_pre[hIndex].func;
preHookFunc(&fd, &mail_id, &fail);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16099,9 +19034,9 @@ void HP_clif_mail_return(int fd, int mail_id, short fail) {
{
HPMHooks.source.clif.mail_return(fd, mail_id, fail);
}
- if( HPMHooks.count.HP_clif_mail_return_post ) {
+ if (HPMHooks.count.HP_clif_mail_return_post > 0) {
void (*postHookFunc) (int fd, int mail_id, short fail);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_return_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_return_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_mail_return_post[hIndex].func;
postHookFunc(fd, mail_id, fail);
}
@@ -16110,14 +19045,14 @@ void HP_clif_mail_return(int fd, int mail_id, short fail) {
}
void HP_clif_mail_send(int fd, bool fail) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_mail_send_pre ) {
+ if (HPMHooks.count.HP_clif_mail_send_pre > 0) {
void (*preHookFunc) (int *fd, bool *fail);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_send_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_send_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_mail_send_pre[hIndex].func;
preHookFunc(&fd, &fail);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16125,9 +19060,9 @@ void HP_clif_mail_send(int fd, bool fail) {
{
HPMHooks.source.clif.mail_send(fd, fail);
}
- if( HPMHooks.count.HP_clif_mail_send_post ) {
+ if (HPMHooks.count.HP_clif_mail_send_post > 0) {
void (*postHookFunc) (int fd, bool fail);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_send_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_send_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_mail_send_post[hIndex].func;
postHookFunc(fd, fail);
}
@@ -16136,14 +19071,14 @@ void HP_clif_mail_send(int fd, bool fail) {
}
void HP_clif_mail_new(int fd, int mail_id, const char *sender, const char *title) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_mail_new_pre ) {
+ if (HPMHooks.count.HP_clif_mail_new_pre > 0) {
void (*preHookFunc) (int *fd, int *mail_id, const char **sender, const char **title);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_new_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_new_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_mail_new_pre[hIndex].func;
preHookFunc(&fd, &mail_id, &sender, &title);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16151,9 +19086,9 @@ void HP_clif_mail_new(int fd, int mail_id, const char *sender, const char *title
{
HPMHooks.source.clif.mail_new(fd, mail_id, sender, title);
}
- if( HPMHooks.count.HP_clif_mail_new_post ) {
+ if (HPMHooks.count.HP_clif_mail_new_post > 0) {
void (*postHookFunc) (int fd, int mail_id, const char *sender, const char *title);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_new_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_new_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_mail_new_post[hIndex].func;
postHookFunc(fd, mail_id, sender, title);
}
@@ -16162,14 +19097,14 @@ void HP_clif_mail_new(int fd, int mail_id, const char *sender, const char *title
}
void HP_clif_mail_refreshinbox(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_mail_refreshinbox_pre ) {
+ if (HPMHooks.count.HP_clif_mail_refreshinbox_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_refreshinbox_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_refreshinbox_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_mail_refreshinbox_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16177,9 +19112,9 @@ void HP_clif_mail_refreshinbox(struct map_session_data *sd) {
{
HPMHooks.source.clif.mail_refreshinbox(sd);
}
- if( HPMHooks.count.HP_clif_mail_refreshinbox_post ) {
+ if (HPMHooks.count.HP_clif_mail_refreshinbox_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_refreshinbox_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_refreshinbox_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_mail_refreshinbox_post[hIndex].func;
postHookFunc(sd);
}
@@ -16188,14 +19123,14 @@ void HP_clif_mail_refreshinbox(struct map_session_data *sd) {
}
void HP_clif_mail_getattachment(int fd, uint8 flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_mail_getattachment_pre ) {
+ if (HPMHooks.count.HP_clif_mail_getattachment_pre > 0) {
void (*preHookFunc) (int *fd, uint8 *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_getattachment_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_getattachment_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_mail_getattachment_pre[hIndex].func;
preHookFunc(&fd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16203,9 +19138,9 @@ void HP_clif_mail_getattachment(int fd, uint8 flag) {
{
HPMHooks.source.clif.mail_getattachment(fd, flag);
}
- if( HPMHooks.count.HP_clif_mail_getattachment_post ) {
+ if (HPMHooks.count.HP_clif_mail_getattachment_post > 0) {
void (*postHookFunc) (int fd, uint8 flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_getattachment_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_getattachment_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_mail_getattachment_post[hIndex].func;
postHookFunc(fd, flag);
}
@@ -16214,14 +19149,14 @@ void HP_clif_mail_getattachment(int fd, uint8 flag) {
}
void HP_clif_mail_setattachment(int fd, int index, uint8 flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_mail_setattachment_pre ) {
+ if (HPMHooks.count.HP_clif_mail_setattachment_pre > 0) {
void (*preHookFunc) (int *fd, int *index, uint8 *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_setattachment_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_setattachment_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_mail_setattachment_pre[hIndex].func;
preHookFunc(&fd, &index, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16229,9 +19164,9 @@ void HP_clif_mail_setattachment(int fd, int index, uint8 flag) {
{
HPMHooks.source.clif.mail_setattachment(fd, index, flag);
}
- if( HPMHooks.count.HP_clif_mail_setattachment_post ) {
+ if (HPMHooks.count.HP_clif_mail_setattachment_post > 0) {
void (*postHookFunc) (int fd, int index, uint8 flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_setattachment_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mail_setattachment_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_mail_setattachment_post[hIndex].func;
postHookFunc(fd, index, flag);
}
@@ -16240,14 +19175,14 @@ void HP_clif_mail_setattachment(int fd, int index, uint8 flag) {
}
void HP_clif_auction_openwindow(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_auction_openwindow_pre ) {
+ if (HPMHooks.count.HP_clif_auction_openwindow_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_auction_openwindow_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_auction_openwindow_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_auction_openwindow_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16255,9 +19190,9 @@ void HP_clif_auction_openwindow(struct map_session_data *sd) {
{
HPMHooks.source.clif.auction_openwindow(sd);
}
- if( HPMHooks.count.HP_clif_auction_openwindow_post ) {
+ if (HPMHooks.count.HP_clif_auction_openwindow_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_auction_openwindow_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_auction_openwindow_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_auction_openwindow_post[hIndex].func;
postHookFunc(sd);
}
@@ -16266,14 +19201,14 @@ void HP_clif_auction_openwindow(struct map_session_data *sd) {
}
void HP_clif_auction_results(struct map_session_data *sd, short count, short pages, const uint8 *buf) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_auction_results_pre ) {
+ if (HPMHooks.count.HP_clif_auction_results_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, short *count, short *pages, const uint8 **buf);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_auction_results_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_auction_results_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_auction_results_pre[hIndex].func;
preHookFunc(&sd, &count, &pages, &buf);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16281,9 +19216,9 @@ void HP_clif_auction_results(struct map_session_data *sd, short count, short pag
{
HPMHooks.source.clif.auction_results(sd, count, pages, buf);
}
- if( HPMHooks.count.HP_clif_auction_results_post ) {
+ if (HPMHooks.count.HP_clif_auction_results_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, short count, short pages, const uint8 *buf);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_auction_results_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_auction_results_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_auction_results_post[hIndex].func;
postHookFunc(sd, count, pages, buf);
}
@@ -16292,14 +19227,14 @@ void HP_clif_auction_results(struct map_session_data *sd, short count, short pag
}
void HP_clif_auction_message(int fd, unsigned char flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_auction_message_pre ) {
+ if (HPMHooks.count.HP_clif_auction_message_pre > 0) {
void (*preHookFunc) (int *fd, unsigned char *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_auction_message_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_auction_message_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_auction_message_pre[hIndex].func;
preHookFunc(&fd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16307,9 +19242,9 @@ void HP_clif_auction_message(int fd, unsigned char flag) {
{
HPMHooks.source.clif.auction_message(fd, flag);
}
- if( HPMHooks.count.HP_clif_auction_message_post ) {
+ if (HPMHooks.count.HP_clif_auction_message_post > 0) {
void (*postHookFunc) (int fd, unsigned char flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_auction_message_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_auction_message_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_auction_message_post[hIndex].func;
postHookFunc(fd, flag);
}
@@ -16318,14 +19253,14 @@ void HP_clif_auction_message(int fd, unsigned char flag) {
}
void HP_clif_auction_close(int fd, unsigned char flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_auction_close_pre ) {
+ if (HPMHooks.count.HP_clif_auction_close_pre > 0) {
void (*preHookFunc) (int *fd, unsigned char *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_auction_close_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_auction_close_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_auction_close_pre[hIndex].func;
preHookFunc(&fd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16333,9 +19268,9 @@ void HP_clif_auction_close(int fd, unsigned char flag) {
{
HPMHooks.source.clif.auction_close(fd, flag);
}
- if( HPMHooks.count.HP_clif_auction_close_post ) {
+ if (HPMHooks.count.HP_clif_auction_close_post > 0) {
void (*postHookFunc) (int fd, unsigned char flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_auction_close_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_auction_close_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_auction_close_post[hIndex].func;
postHookFunc(fd, flag);
}
@@ -16344,14 +19279,14 @@ void HP_clif_auction_close(int fd, unsigned char flag) {
}
void HP_clif_auction_setitem(int fd, int index, bool fail) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_auction_setitem_pre ) {
+ if (HPMHooks.count.HP_clif_auction_setitem_pre > 0) {
void (*preHookFunc) (int *fd, int *index, bool *fail);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_auction_setitem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_auction_setitem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_auction_setitem_pre[hIndex].func;
preHookFunc(&fd, &index, &fail);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16359,9 +19294,9 @@ void HP_clif_auction_setitem(int fd, int index, bool fail) {
{
HPMHooks.source.clif.auction_setitem(fd, index, fail);
}
- if( HPMHooks.count.HP_clif_auction_setitem_post ) {
+ if (HPMHooks.count.HP_clif_auction_setitem_post > 0) {
void (*postHookFunc) (int fd, int index, bool fail);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_auction_setitem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_auction_setitem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_auction_setitem_post[hIndex].func;
postHookFunc(fd, index, fail);
}
@@ -16370,14 +19305,14 @@ void HP_clif_auction_setitem(int fd, int index, bool fail) {
}
void HP_clif_mercenary_info(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_mercenary_info_pre ) {
+ if (HPMHooks.count.HP_clif_mercenary_info_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mercenary_info_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mercenary_info_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_mercenary_info_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16385,9 +19320,9 @@ void HP_clif_mercenary_info(struct map_session_data *sd) {
{
HPMHooks.source.clif.mercenary_info(sd);
}
- if( HPMHooks.count.HP_clif_mercenary_info_post ) {
+ if (HPMHooks.count.HP_clif_mercenary_info_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mercenary_info_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mercenary_info_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_mercenary_info_post[hIndex].func;
postHookFunc(sd);
}
@@ -16396,14 +19331,14 @@ void HP_clif_mercenary_info(struct map_session_data *sd) {
}
void HP_clif_mercenary_skillblock(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_mercenary_skillblock_pre ) {
+ if (HPMHooks.count.HP_clif_mercenary_skillblock_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mercenary_skillblock_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mercenary_skillblock_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_mercenary_skillblock_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16411,9 +19346,9 @@ void HP_clif_mercenary_skillblock(struct map_session_data *sd) {
{
HPMHooks.source.clif.mercenary_skillblock(sd);
}
- if( HPMHooks.count.HP_clif_mercenary_skillblock_post ) {
+ if (HPMHooks.count.HP_clif_mercenary_skillblock_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mercenary_skillblock_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mercenary_skillblock_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_mercenary_skillblock_post[hIndex].func;
postHookFunc(sd);
}
@@ -16422,14 +19357,14 @@ void HP_clif_mercenary_skillblock(struct map_session_data *sd) {
}
void HP_clif_mercenary_message(struct map_session_data *sd, int message) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_mercenary_message_pre ) {
+ if (HPMHooks.count.HP_clif_mercenary_message_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *message);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mercenary_message_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mercenary_message_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_mercenary_message_pre[hIndex].func;
preHookFunc(&sd, &message);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16437,9 +19372,9 @@ void HP_clif_mercenary_message(struct map_session_data *sd, int message) {
{
HPMHooks.source.clif.mercenary_message(sd, message);
}
- if( HPMHooks.count.HP_clif_mercenary_message_post ) {
+ if (HPMHooks.count.HP_clif_mercenary_message_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int message);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mercenary_message_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mercenary_message_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_mercenary_message_post[hIndex].func;
postHookFunc(sd, message);
}
@@ -16448,14 +19383,14 @@ void HP_clif_mercenary_message(struct map_session_data *sd, int message) {
}
void HP_clif_mercenary_updatestatus(struct map_session_data *sd, int type) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_mercenary_updatestatus_pre ) {
+ if (HPMHooks.count.HP_clif_mercenary_updatestatus_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mercenary_updatestatus_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mercenary_updatestatus_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_mercenary_updatestatus_pre[hIndex].func;
preHookFunc(&sd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16463,9 +19398,9 @@ void HP_clif_mercenary_updatestatus(struct map_session_data *sd, int type) {
{
HPMHooks.source.clif.mercenary_updatestatus(sd, type);
}
- if( HPMHooks.count.HP_clif_mercenary_updatestatus_post ) {
+ if (HPMHooks.count.HP_clif_mercenary_updatestatus_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_mercenary_updatestatus_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_mercenary_updatestatus_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_mercenary_updatestatus_post[hIndex].func;
postHookFunc(sd, type);
}
@@ -16474,14 +19409,14 @@ void HP_clif_mercenary_updatestatus(struct map_session_data *sd, int type) {
}
void HP_clif_rental_time(int fd, int nameid, int seconds) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_rental_time_pre ) {
+ if (HPMHooks.count.HP_clif_rental_time_pre > 0) {
void (*preHookFunc) (int *fd, int *nameid, int *seconds);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_rental_time_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rental_time_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_rental_time_pre[hIndex].func;
preHookFunc(&fd, &nameid, &seconds);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16489,9 +19424,9 @@ void HP_clif_rental_time(int fd, int nameid, int seconds) {
{
HPMHooks.source.clif.rental_time(fd, nameid, seconds);
}
- if( HPMHooks.count.HP_clif_rental_time_post ) {
+ if (HPMHooks.count.HP_clif_rental_time_post > 0) {
void (*postHookFunc) (int fd, int nameid, int seconds);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_rental_time_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rental_time_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_rental_time_post[hIndex].func;
postHookFunc(fd, nameid, seconds);
}
@@ -16500,14 +19435,14 @@ void HP_clif_rental_time(int fd, int nameid, int seconds) {
}
void HP_clif_rental_expired(int fd, int index, int nameid) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_rental_expired_pre ) {
+ if (HPMHooks.count.HP_clif_rental_expired_pre > 0) {
void (*preHookFunc) (int *fd, int *index, int *nameid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_rental_expired_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rental_expired_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_rental_expired_pre[hIndex].func;
preHookFunc(&fd, &index, &nameid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16515,9 +19450,9 @@ void HP_clif_rental_expired(int fd, int index, int nameid) {
{
HPMHooks.source.clif.rental_expired(fd, index, nameid);
}
- if( HPMHooks.count.HP_clif_rental_expired_post ) {
+ if (HPMHooks.count.HP_clif_rental_expired_post > 0) {
void (*postHookFunc) (int fd, int index, int nameid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_rental_expired_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rental_expired_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_rental_expired_post[hIndex].func;
postHookFunc(fd, index, nameid);
}
@@ -16526,14 +19461,14 @@ void HP_clif_rental_expired(int fd, int index, int nameid) {
}
void HP_clif_PartyBookingRegisterAck(struct map_session_data *sd, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_PartyBookingRegisterAck_pre ) {
+ if (HPMHooks.count.HP_clif_PartyBookingRegisterAck_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingRegisterAck_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingRegisterAck_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_PartyBookingRegisterAck_pre[hIndex].func;
preHookFunc(&sd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16541,9 +19476,9 @@ void HP_clif_PartyBookingRegisterAck(struct map_session_data *sd, int flag) {
{
HPMHooks.source.clif.PartyBookingRegisterAck(sd, flag);
}
- if( HPMHooks.count.HP_clif_PartyBookingRegisterAck_post ) {
+ if (HPMHooks.count.HP_clif_PartyBookingRegisterAck_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingRegisterAck_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingRegisterAck_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_PartyBookingRegisterAck_post[hIndex].func;
postHookFunc(sd, flag);
}
@@ -16552,14 +19487,14 @@ void HP_clif_PartyBookingRegisterAck(struct map_session_data *sd, int flag) {
}
void HP_clif_PartyBookingDeleteAck(struct map_session_data *sd, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_PartyBookingDeleteAck_pre ) {
+ if (HPMHooks.count.HP_clif_PartyBookingDeleteAck_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingDeleteAck_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingDeleteAck_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_PartyBookingDeleteAck_pre[hIndex].func;
preHookFunc(&sd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16567,9 +19502,9 @@ void HP_clif_PartyBookingDeleteAck(struct map_session_data *sd, int flag) {
{
HPMHooks.source.clif.PartyBookingDeleteAck(sd, flag);
}
- if( HPMHooks.count.HP_clif_PartyBookingDeleteAck_post ) {
+ if (HPMHooks.count.HP_clif_PartyBookingDeleteAck_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingDeleteAck_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingDeleteAck_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_PartyBookingDeleteAck_post[hIndex].func;
postHookFunc(sd, flag);
}
@@ -16578,14 +19513,14 @@ void HP_clif_PartyBookingDeleteAck(struct map_session_data *sd, int flag) {
}
void HP_clif_PartyBookingSearchAck(int fd, struct party_booking_ad_info **results, int count, bool more_result) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_PartyBookingSearchAck_pre ) {
+ if (HPMHooks.count.HP_clif_PartyBookingSearchAck_pre > 0) {
void (*preHookFunc) (int *fd, struct party_booking_ad_info ***results, int *count, bool *more_result);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingSearchAck_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingSearchAck_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_PartyBookingSearchAck_pre[hIndex].func;
preHookFunc(&fd, &results, &count, &more_result);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16593,9 +19528,9 @@ void HP_clif_PartyBookingSearchAck(int fd, struct party_booking_ad_info **result
{
HPMHooks.source.clif.PartyBookingSearchAck(fd, results, count, more_result);
}
- if( HPMHooks.count.HP_clif_PartyBookingSearchAck_post ) {
+ if (HPMHooks.count.HP_clif_PartyBookingSearchAck_post > 0) {
void (*postHookFunc) (int fd, struct party_booking_ad_info **results, int count, bool more_result);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingSearchAck_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingSearchAck_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_PartyBookingSearchAck_post[hIndex].func;
postHookFunc(fd, results, count, more_result);
}
@@ -16604,14 +19539,14 @@ void HP_clif_PartyBookingSearchAck(int fd, struct party_booking_ad_info **result
}
void HP_clif_PartyBookingUpdateNotify(struct map_session_data *sd, struct party_booking_ad_info *pb_ad) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_PartyBookingUpdateNotify_pre ) {
+ if (HPMHooks.count.HP_clif_PartyBookingUpdateNotify_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct party_booking_ad_info **pb_ad);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingUpdateNotify_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingUpdateNotify_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_PartyBookingUpdateNotify_pre[hIndex].func;
preHookFunc(&sd, &pb_ad);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16619,9 +19554,9 @@ void HP_clif_PartyBookingUpdateNotify(struct map_session_data *sd, struct party_
{
HPMHooks.source.clif.PartyBookingUpdateNotify(sd, pb_ad);
}
- if( HPMHooks.count.HP_clif_PartyBookingUpdateNotify_post ) {
+ if (HPMHooks.count.HP_clif_PartyBookingUpdateNotify_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct party_booking_ad_info *pb_ad);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingUpdateNotify_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingUpdateNotify_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_PartyBookingUpdateNotify_post[hIndex].func;
postHookFunc(sd, pb_ad);
}
@@ -16630,14 +19565,14 @@ void HP_clif_PartyBookingUpdateNotify(struct map_session_data *sd, struct party_
}
void HP_clif_PartyBookingDeleteNotify(struct map_session_data *sd, int index) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_PartyBookingDeleteNotify_pre ) {
+ if (HPMHooks.count.HP_clif_PartyBookingDeleteNotify_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *index);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingDeleteNotify_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingDeleteNotify_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_PartyBookingDeleteNotify_pre[hIndex].func;
preHookFunc(&sd, &index);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16645,9 +19580,9 @@ void HP_clif_PartyBookingDeleteNotify(struct map_session_data *sd, int index) {
{
HPMHooks.source.clif.PartyBookingDeleteNotify(sd, index);
}
- if( HPMHooks.count.HP_clif_PartyBookingDeleteNotify_post ) {
+ if (HPMHooks.count.HP_clif_PartyBookingDeleteNotify_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int index);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingDeleteNotify_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingDeleteNotify_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_PartyBookingDeleteNotify_post[hIndex].func;
postHookFunc(sd, index);
}
@@ -16656,14 +19591,14 @@ void HP_clif_PartyBookingDeleteNotify(struct map_session_data *sd, int index) {
}
void HP_clif_PartyBookingInsertNotify(struct map_session_data *sd, struct party_booking_ad_info *pb_ad) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_PartyBookingInsertNotify_pre ) {
+ if (HPMHooks.count.HP_clif_PartyBookingInsertNotify_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct party_booking_ad_info **pb_ad);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingInsertNotify_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingInsertNotify_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_PartyBookingInsertNotify_pre[hIndex].func;
preHookFunc(&sd, &pb_ad);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16671,9 +19606,9 @@ void HP_clif_PartyBookingInsertNotify(struct map_session_data *sd, struct party_
{
HPMHooks.source.clif.PartyBookingInsertNotify(sd, pb_ad);
}
- if( HPMHooks.count.HP_clif_PartyBookingInsertNotify_post ) {
+ if (HPMHooks.count.HP_clif_PartyBookingInsertNotify_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct party_booking_ad_info *pb_ad);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingInsertNotify_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingInsertNotify_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_PartyBookingInsertNotify_post[hIndex].func;
postHookFunc(sd, pb_ad);
}
@@ -16682,14 +19617,14 @@ void HP_clif_PartyBookingInsertNotify(struct map_session_data *sd, struct party_
}
void HP_clif_PartyRecruitRegisterAck(struct map_session_data *sd, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_PartyRecruitRegisterAck_pre ) {
+ if (HPMHooks.count.HP_clif_PartyRecruitRegisterAck_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyRecruitRegisterAck_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyRecruitRegisterAck_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_PartyRecruitRegisterAck_pre[hIndex].func;
preHookFunc(&sd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16697,9 +19632,9 @@ void HP_clif_PartyRecruitRegisterAck(struct map_session_data *sd, int flag) {
{
HPMHooks.source.clif.PartyRecruitRegisterAck(sd, flag);
}
- if( HPMHooks.count.HP_clif_PartyRecruitRegisterAck_post ) {
+ if (HPMHooks.count.HP_clif_PartyRecruitRegisterAck_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyRecruitRegisterAck_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyRecruitRegisterAck_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_PartyRecruitRegisterAck_post[hIndex].func;
postHookFunc(sd, flag);
}
@@ -16708,14 +19643,14 @@ void HP_clif_PartyRecruitRegisterAck(struct map_session_data *sd, int flag) {
}
void HP_clif_PartyRecruitDeleteAck(struct map_session_data *sd, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_PartyRecruitDeleteAck_pre ) {
+ if (HPMHooks.count.HP_clif_PartyRecruitDeleteAck_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyRecruitDeleteAck_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyRecruitDeleteAck_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_PartyRecruitDeleteAck_pre[hIndex].func;
preHookFunc(&sd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16723,9 +19658,9 @@ void HP_clif_PartyRecruitDeleteAck(struct map_session_data *sd, int flag) {
{
HPMHooks.source.clif.PartyRecruitDeleteAck(sd, flag);
}
- if( HPMHooks.count.HP_clif_PartyRecruitDeleteAck_post ) {
+ if (HPMHooks.count.HP_clif_PartyRecruitDeleteAck_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyRecruitDeleteAck_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyRecruitDeleteAck_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_PartyRecruitDeleteAck_post[hIndex].func;
postHookFunc(sd, flag);
}
@@ -16734,14 +19669,14 @@ void HP_clif_PartyRecruitDeleteAck(struct map_session_data *sd, int flag) {
}
void HP_clif_PartyRecruitSearchAck(int fd, struct party_booking_ad_info **results, int count, bool more_result) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_PartyRecruitSearchAck_pre ) {
+ if (HPMHooks.count.HP_clif_PartyRecruitSearchAck_pre > 0) {
void (*preHookFunc) (int *fd, struct party_booking_ad_info ***results, int *count, bool *more_result);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyRecruitSearchAck_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyRecruitSearchAck_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_PartyRecruitSearchAck_pre[hIndex].func;
preHookFunc(&fd, &results, &count, &more_result);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16749,9 +19684,9 @@ void HP_clif_PartyRecruitSearchAck(int fd, struct party_booking_ad_info **result
{
HPMHooks.source.clif.PartyRecruitSearchAck(fd, results, count, more_result);
}
- if( HPMHooks.count.HP_clif_PartyRecruitSearchAck_post ) {
+ if (HPMHooks.count.HP_clif_PartyRecruitSearchAck_post > 0) {
void (*postHookFunc) (int fd, struct party_booking_ad_info **results, int count, bool more_result);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyRecruitSearchAck_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyRecruitSearchAck_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_PartyRecruitSearchAck_post[hIndex].func;
postHookFunc(fd, results, count, more_result);
}
@@ -16760,14 +19695,14 @@ void HP_clif_PartyRecruitSearchAck(int fd, struct party_booking_ad_info **result
}
void HP_clif_PartyRecruitUpdateNotify(struct map_session_data *sd, struct party_booking_ad_info *pb_ad) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_PartyRecruitUpdateNotify_pre ) {
+ if (HPMHooks.count.HP_clif_PartyRecruitUpdateNotify_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct party_booking_ad_info **pb_ad);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyRecruitUpdateNotify_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyRecruitUpdateNotify_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_PartyRecruitUpdateNotify_pre[hIndex].func;
preHookFunc(&sd, &pb_ad);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16775,9 +19710,9 @@ void HP_clif_PartyRecruitUpdateNotify(struct map_session_data *sd, struct party_
{
HPMHooks.source.clif.PartyRecruitUpdateNotify(sd, pb_ad);
}
- if( HPMHooks.count.HP_clif_PartyRecruitUpdateNotify_post ) {
+ if (HPMHooks.count.HP_clif_PartyRecruitUpdateNotify_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct party_booking_ad_info *pb_ad);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyRecruitUpdateNotify_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyRecruitUpdateNotify_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_PartyRecruitUpdateNotify_post[hIndex].func;
postHookFunc(sd, pb_ad);
}
@@ -16786,14 +19721,14 @@ void HP_clif_PartyRecruitUpdateNotify(struct map_session_data *sd, struct party_
}
void HP_clif_PartyRecruitDeleteNotify(struct map_session_data *sd, int index) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_PartyRecruitDeleteNotify_pre ) {
+ if (HPMHooks.count.HP_clif_PartyRecruitDeleteNotify_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *index);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyRecruitDeleteNotify_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyRecruitDeleteNotify_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_PartyRecruitDeleteNotify_pre[hIndex].func;
preHookFunc(&sd, &index);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16801,9 +19736,9 @@ void HP_clif_PartyRecruitDeleteNotify(struct map_session_data *sd, int index) {
{
HPMHooks.source.clif.PartyRecruitDeleteNotify(sd, index);
}
- if( HPMHooks.count.HP_clif_PartyRecruitDeleteNotify_post ) {
+ if (HPMHooks.count.HP_clif_PartyRecruitDeleteNotify_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int index);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyRecruitDeleteNotify_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyRecruitDeleteNotify_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_PartyRecruitDeleteNotify_post[hIndex].func;
postHookFunc(sd, index);
}
@@ -16812,14 +19747,14 @@ void HP_clif_PartyRecruitDeleteNotify(struct map_session_data *sd, int index) {
}
void HP_clif_PartyRecruitInsertNotify(struct map_session_data *sd, struct party_booking_ad_info *pb_ad) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_PartyRecruitInsertNotify_pre ) {
+ if (HPMHooks.count.HP_clif_PartyRecruitInsertNotify_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct party_booking_ad_info **pb_ad);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyRecruitInsertNotify_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyRecruitInsertNotify_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_PartyRecruitInsertNotify_pre[hIndex].func;
preHookFunc(&sd, &pb_ad);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16827,9 +19762,9 @@ void HP_clif_PartyRecruitInsertNotify(struct map_session_data *sd, struct party_
{
HPMHooks.source.clif.PartyRecruitInsertNotify(sd, pb_ad);
}
- if( HPMHooks.count.HP_clif_PartyRecruitInsertNotify_post ) {
+ if (HPMHooks.count.HP_clif_PartyRecruitInsertNotify_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct party_booking_ad_info *pb_ad);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyRecruitInsertNotify_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyRecruitInsertNotify_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_PartyRecruitInsertNotify_post[hIndex].func;
postHookFunc(sd, pb_ad);
}
@@ -16838,14 +19773,14 @@ void HP_clif_PartyRecruitInsertNotify(struct map_session_data *sd, struct party_
}
void HP_clif_PartyBookingVolunteerInfo(int index, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_PartyBookingVolunteerInfo_pre ) {
+ if (HPMHooks.count.HP_clif_PartyBookingVolunteerInfo_pre > 0) {
void (*preHookFunc) (int *index, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingVolunteerInfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingVolunteerInfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_PartyBookingVolunteerInfo_pre[hIndex].func;
preHookFunc(&index, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16853,9 +19788,9 @@ void HP_clif_PartyBookingVolunteerInfo(int index, struct map_session_data *sd) {
{
HPMHooks.source.clif.PartyBookingVolunteerInfo(index, sd);
}
- if( HPMHooks.count.HP_clif_PartyBookingVolunteerInfo_post ) {
+ if (HPMHooks.count.HP_clif_PartyBookingVolunteerInfo_post > 0) {
void (*postHookFunc) (int index, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingVolunteerInfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingVolunteerInfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_PartyBookingVolunteerInfo_post[hIndex].func;
postHookFunc(index, sd);
}
@@ -16864,14 +19799,14 @@ void HP_clif_PartyBookingVolunteerInfo(int index, struct map_session_data *sd) {
}
void HP_clif_PartyBookingRefuseVolunteer(unsigned int aid, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_PartyBookingRefuseVolunteer_pre ) {
+ if (HPMHooks.count.HP_clif_PartyBookingRefuseVolunteer_pre > 0) {
void (*preHookFunc) (unsigned int *aid, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingRefuseVolunteer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingRefuseVolunteer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_PartyBookingRefuseVolunteer_pre[hIndex].func;
preHookFunc(&aid, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16879,9 +19814,9 @@ void HP_clif_PartyBookingRefuseVolunteer(unsigned int aid, struct map_session_da
{
HPMHooks.source.clif.PartyBookingRefuseVolunteer(aid, sd);
}
- if( HPMHooks.count.HP_clif_PartyBookingRefuseVolunteer_post ) {
+ if (HPMHooks.count.HP_clif_PartyBookingRefuseVolunteer_post > 0) {
void (*postHookFunc) (unsigned int aid, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingRefuseVolunteer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingRefuseVolunteer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_PartyBookingRefuseVolunteer_post[hIndex].func;
postHookFunc(aid, sd);
}
@@ -16890,14 +19825,14 @@ void HP_clif_PartyBookingRefuseVolunteer(unsigned int aid, struct map_session_da
}
void HP_clif_PartyBookingCancelVolunteer(int index, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_PartyBookingCancelVolunteer_pre ) {
+ if (HPMHooks.count.HP_clif_PartyBookingCancelVolunteer_pre > 0) {
void (*preHookFunc) (int *index, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingCancelVolunteer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingCancelVolunteer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_PartyBookingCancelVolunteer_pre[hIndex].func;
preHookFunc(&index, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16905,9 +19840,9 @@ void HP_clif_PartyBookingCancelVolunteer(int index, struct map_session_data *sd)
{
HPMHooks.source.clif.PartyBookingCancelVolunteer(index, sd);
}
- if( HPMHooks.count.HP_clif_PartyBookingCancelVolunteer_post ) {
+ if (HPMHooks.count.HP_clif_PartyBookingCancelVolunteer_post > 0) {
void (*postHookFunc) (int index, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingCancelVolunteer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingCancelVolunteer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_PartyBookingCancelVolunteer_post[hIndex].func;
postHookFunc(index, sd);
}
@@ -16916,14 +19851,14 @@ void HP_clif_PartyBookingCancelVolunteer(int index, struct map_session_data *sd)
}
void HP_clif_PartyBookingAddFilteringList(int index, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_PartyBookingAddFilteringList_pre ) {
+ if (HPMHooks.count.HP_clif_PartyBookingAddFilteringList_pre > 0) {
void (*preHookFunc) (int *index, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingAddFilteringList_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingAddFilteringList_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_PartyBookingAddFilteringList_pre[hIndex].func;
preHookFunc(&index, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16931,9 +19866,9 @@ void HP_clif_PartyBookingAddFilteringList(int index, struct map_session_data *sd
{
HPMHooks.source.clif.PartyBookingAddFilteringList(index, sd);
}
- if( HPMHooks.count.HP_clif_PartyBookingAddFilteringList_post ) {
+ if (HPMHooks.count.HP_clif_PartyBookingAddFilteringList_post > 0) {
void (*postHookFunc) (int index, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingAddFilteringList_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingAddFilteringList_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_PartyBookingAddFilteringList_post[hIndex].func;
postHookFunc(index, sd);
}
@@ -16942,14 +19877,14 @@ void HP_clif_PartyBookingAddFilteringList(int index, struct map_session_data *sd
}
void HP_clif_PartyBookingSubFilteringList(int gid, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_PartyBookingSubFilteringList_pre ) {
+ if (HPMHooks.count.HP_clif_PartyBookingSubFilteringList_pre > 0) {
void (*preHookFunc) (int *gid, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingSubFilteringList_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingSubFilteringList_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_PartyBookingSubFilteringList_pre[hIndex].func;
preHookFunc(&gid, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16957,9 +19892,9 @@ void HP_clif_PartyBookingSubFilteringList(int gid, struct map_session_data *sd)
{
HPMHooks.source.clif.PartyBookingSubFilteringList(gid, sd);
}
- if( HPMHooks.count.HP_clif_PartyBookingSubFilteringList_post ) {
+ if (HPMHooks.count.HP_clif_PartyBookingSubFilteringList_post > 0) {
void (*postHookFunc) (int gid, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingSubFilteringList_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PartyBookingSubFilteringList_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_PartyBookingSubFilteringList_post[hIndex].func;
postHookFunc(gid, sd);
}
@@ -16968,14 +19903,14 @@ void HP_clif_PartyBookingSubFilteringList(int gid, struct map_session_data *sd)
}
void HP_clif_buyingstore_open(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_buyingstore_open_pre ) {
+ if (HPMHooks.count.HP_clif_buyingstore_open_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_open_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_open_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_buyingstore_open_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -16983,9 +19918,9 @@ void HP_clif_buyingstore_open(struct map_session_data *sd) {
{
HPMHooks.source.clif.buyingstore_open(sd);
}
- if( HPMHooks.count.HP_clif_buyingstore_open_post ) {
+ if (HPMHooks.count.HP_clif_buyingstore_open_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_open_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_open_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_buyingstore_open_post[hIndex].func;
postHookFunc(sd);
}
@@ -16994,14 +19929,14 @@ void HP_clif_buyingstore_open(struct map_session_data *sd) {
}
void HP_clif_buyingstore_open_failed(struct map_session_data *sd, unsigned short result, unsigned int weight) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_buyingstore_open_failed_pre ) {
+ if (HPMHooks.count.HP_clif_buyingstore_open_failed_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, unsigned short *result, unsigned int *weight);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_open_failed_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_open_failed_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_buyingstore_open_failed_pre[hIndex].func;
preHookFunc(&sd, &result, &weight);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17009,9 +19944,9 @@ void HP_clif_buyingstore_open_failed(struct map_session_data *sd, unsigned short
{
HPMHooks.source.clif.buyingstore_open_failed(sd, result, weight);
}
- if( HPMHooks.count.HP_clif_buyingstore_open_failed_post ) {
+ if (HPMHooks.count.HP_clif_buyingstore_open_failed_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, unsigned short result, unsigned int weight);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_open_failed_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_open_failed_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_buyingstore_open_failed_post[hIndex].func;
postHookFunc(sd, result, weight);
}
@@ -17020,14 +19955,14 @@ void HP_clif_buyingstore_open_failed(struct map_session_data *sd, unsigned short
}
void HP_clif_buyingstore_myitemlist(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_buyingstore_myitemlist_pre ) {
+ if (HPMHooks.count.HP_clif_buyingstore_myitemlist_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_myitemlist_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_myitemlist_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_buyingstore_myitemlist_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17035,9 +19970,9 @@ void HP_clif_buyingstore_myitemlist(struct map_session_data *sd) {
{
HPMHooks.source.clif.buyingstore_myitemlist(sd);
}
- if( HPMHooks.count.HP_clif_buyingstore_myitemlist_post ) {
+ if (HPMHooks.count.HP_clif_buyingstore_myitemlist_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_myitemlist_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_myitemlist_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_buyingstore_myitemlist_post[hIndex].func;
postHookFunc(sd);
}
@@ -17046,14 +19981,14 @@ void HP_clif_buyingstore_myitemlist(struct map_session_data *sd) {
}
void HP_clif_buyingstore_entry(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_buyingstore_entry_pre ) {
+ if (HPMHooks.count.HP_clif_buyingstore_entry_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_entry_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_entry_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_buyingstore_entry_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17061,9 +19996,9 @@ void HP_clif_buyingstore_entry(struct map_session_data *sd) {
{
HPMHooks.source.clif.buyingstore_entry(sd);
}
- if( HPMHooks.count.HP_clif_buyingstore_entry_post ) {
+ if (HPMHooks.count.HP_clif_buyingstore_entry_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_entry_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_entry_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_buyingstore_entry_post[hIndex].func;
postHookFunc(sd);
}
@@ -17072,14 +20007,14 @@ void HP_clif_buyingstore_entry(struct map_session_data *sd) {
}
void HP_clif_buyingstore_entry_single(struct map_session_data *sd, struct map_session_data *pl_sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_buyingstore_entry_single_pre ) {
+ if (HPMHooks.count.HP_clif_buyingstore_entry_single_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct map_session_data **pl_sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_entry_single_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_entry_single_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_buyingstore_entry_single_pre[hIndex].func;
preHookFunc(&sd, &pl_sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17087,9 +20022,9 @@ void HP_clif_buyingstore_entry_single(struct map_session_data *sd, struct map_se
{
HPMHooks.source.clif.buyingstore_entry_single(sd, pl_sd);
}
- if( HPMHooks.count.HP_clif_buyingstore_entry_single_post ) {
+ if (HPMHooks.count.HP_clif_buyingstore_entry_single_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct map_session_data *pl_sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_entry_single_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_entry_single_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_buyingstore_entry_single_post[hIndex].func;
postHookFunc(sd, pl_sd);
}
@@ -17098,14 +20033,14 @@ void HP_clif_buyingstore_entry_single(struct map_session_data *sd, struct map_se
}
void HP_clif_buyingstore_disappear_entry(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_buyingstore_disappear_entry_pre ) {
+ if (HPMHooks.count.HP_clif_buyingstore_disappear_entry_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_disappear_entry_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_disappear_entry_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_buyingstore_disappear_entry_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17113,9 +20048,9 @@ void HP_clif_buyingstore_disappear_entry(struct map_session_data *sd) {
{
HPMHooks.source.clif.buyingstore_disappear_entry(sd);
}
- if( HPMHooks.count.HP_clif_buyingstore_disappear_entry_post ) {
+ if (HPMHooks.count.HP_clif_buyingstore_disappear_entry_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_disappear_entry_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_disappear_entry_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_buyingstore_disappear_entry_post[hIndex].func;
postHookFunc(sd);
}
@@ -17124,14 +20059,14 @@ void HP_clif_buyingstore_disappear_entry(struct map_session_data *sd) {
}
void HP_clif_buyingstore_disappear_entry_single(struct map_session_data *sd, struct map_session_data *pl_sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_buyingstore_disappear_entry_single_pre ) {
+ if (HPMHooks.count.HP_clif_buyingstore_disappear_entry_single_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct map_session_data **pl_sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_disappear_entry_single_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_disappear_entry_single_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_buyingstore_disappear_entry_single_pre[hIndex].func;
preHookFunc(&sd, &pl_sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17139,9 +20074,9 @@ void HP_clif_buyingstore_disappear_entry_single(struct map_session_data *sd, str
{
HPMHooks.source.clif.buyingstore_disappear_entry_single(sd, pl_sd);
}
- if( HPMHooks.count.HP_clif_buyingstore_disappear_entry_single_post ) {
+ if (HPMHooks.count.HP_clif_buyingstore_disappear_entry_single_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct map_session_data *pl_sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_disappear_entry_single_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_disappear_entry_single_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_buyingstore_disappear_entry_single_post[hIndex].func;
postHookFunc(sd, pl_sd);
}
@@ -17150,14 +20085,14 @@ void HP_clif_buyingstore_disappear_entry_single(struct map_session_data *sd, str
}
void HP_clif_buyingstore_itemlist(struct map_session_data *sd, struct map_session_data *pl_sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_buyingstore_itemlist_pre ) {
+ if (HPMHooks.count.HP_clif_buyingstore_itemlist_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct map_session_data **pl_sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_itemlist_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_itemlist_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_buyingstore_itemlist_pre[hIndex].func;
preHookFunc(&sd, &pl_sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17165,9 +20100,9 @@ void HP_clif_buyingstore_itemlist(struct map_session_data *sd, struct map_sessio
{
HPMHooks.source.clif.buyingstore_itemlist(sd, pl_sd);
}
- if( HPMHooks.count.HP_clif_buyingstore_itemlist_post ) {
+ if (HPMHooks.count.HP_clif_buyingstore_itemlist_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct map_session_data *pl_sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_itemlist_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_itemlist_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_buyingstore_itemlist_post[hIndex].func;
postHookFunc(sd, pl_sd);
}
@@ -17176,14 +20111,14 @@ void HP_clif_buyingstore_itemlist(struct map_session_data *sd, struct map_sessio
}
void HP_clif_buyingstore_trade_failed_buyer(struct map_session_data *sd, short result) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_buyingstore_trade_failed_buyer_pre ) {
+ if (HPMHooks.count.HP_clif_buyingstore_trade_failed_buyer_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, short *result);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_trade_failed_buyer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_trade_failed_buyer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_buyingstore_trade_failed_buyer_pre[hIndex].func;
preHookFunc(&sd, &result);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17191,25 +20126,25 @@ void HP_clif_buyingstore_trade_failed_buyer(struct map_session_data *sd, short r
{
HPMHooks.source.clif.buyingstore_trade_failed_buyer(sd, result);
}
- if( HPMHooks.count.HP_clif_buyingstore_trade_failed_buyer_post ) {
+ if (HPMHooks.count.HP_clif_buyingstore_trade_failed_buyer_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, short result);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_trade_failed_buyer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_trade_failed_buyer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_buyingstore_trade_failed_buyer_post[hIndex].func;
postHookFunc(sd, result);
}
}
return;
}
-void HP_clif_buyingstore_update_item(struct map_session_data *sd, unsigned short nameid, unsigned short amount, uint32 char_id, int zeny) {
+void HP_clif_buyingstore_update_item(struct map_session_data *sd, int nameid, unsigned short amount, uint32 char_id, int zeny) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_buyingstore_update_item_pre ) {
- void (*preHookFunc) (struct map_session_data **sd, unsigned short *nameid, unsigned short *amount, uint32 *char_id, int *zeny);
+ if (HPMHooks.count.HP_clif_buyingstore_update_item_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int *nameid, unsigned short *amount, uint32 *char_id, int *zeny);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_update_item_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_update_item_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_buyingstore_update_item_pre[hIndex].func;
preHookFunc(&sd, &nameid, &amount, &char_id, &zeny);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17217,9 +20152,9 @@ void HP_clif_buyingstore_update_item(struct map_session_data *sd, unsigned short
{
HPMHooks.source.clif.buyingstore_update_item(sd, nameid, amount, char_id, zeny);
}
- if( HPMHooks.count.HP_clif_buyingstore_update_item_post ) {
- void (*postHookFunc) (struct map_session_data *sd, unsigned short nameid, unsigned short amount, uint32 char_id, int zeny);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_update_item_post; hIndex++ ) {
+ if (HPMHooks.count.HP_clif_buyingstore_update_item_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int nameid, unsigned short amount, uint32 char_id, int zeny);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_update_item_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_buyingstore_update_item_post[hIndex].func;
postHookFunc(sd, nameid, amount, char_id, zeny);
}
@@ -17228,14 +20163,14 @@ void HP_clif_buyingstore_update_item(struct map_session_data *sd, unsigned short
}
void HP_clif_buyingstore_delete_item(struct map_session_data *sd, short index, unsigned short amount, int price) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_buyingstore_delete_item_pre ) {
+ if (HPMHooks.count.HP_clif_buyingstore_delete_item_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, short *index, unsigned short *amount, int *price);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_delete_item_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_delete_item_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_buyingstore_delete_item_pre[hIndex].func;
preHookFunc(&sd, &index, &amount, &price);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17243,25 +20178,25 @@ void HP_clif_buyingstore_delete_item(struct map_session_data *sd, short index, u
{
HPMHooks.source.clif.buyingstore_delete_item(sd, index, amount, price);
}
- if( HPMHooks.count.HP_clif_buyingstore_delete_item_post ) {
+ if (HPMHooks.count.HP_clif_buyingstore_delete_item_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, short index, unsigned short amount, int price);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_delete_item_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_delete_item_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_buyingstore_delete_item_post[hIndex].func;
postHookFunc(sd, index, amount, price);
}
}
return;
}
-void HP_clif_buyingstore_trade_failed_seller(struct map_session_data *sd, short result, unsigned short nameid) {
+void HP_clif_buyingstore_trade_failed_seller(struct map_session_data *sd, short result, int nameid) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_buyingstore_trade_failed_seller_pre ) {
- void (*preHookFunc) (struct map_session_data **sd, short *result, unsigned short *nameid);
+ if (HPMHooks.count.HP_clif_buyingstore_trade_failed_seller_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, short *result, int *nameid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_trade_failed_seller_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_trade_failed_seller_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_buyingstore_trade_failed_seller_pre[hIndex].func;
preHookFunc(&sd, &result, &nameid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17269,9 +20204,9 @@ void HP_clif_buyingstore_trade_failed_seller(struct map_session_data *sd, short
{
HPMHooks.source.clif.buyingstore_trade_failed_seller(sd, result, nameid);
}
- if( HPMHooks.count.HP_clif_buyingstore_trade_failed_seller_post ) {
- void (*postHookFunc) (struct map_session_data *sd, short result, unsigned short nameid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_trade_failed_seller_post; hIndex++ ) {
+ if (HPMHooks.count.HP_clif_buyingstore_trade_failed_seller_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, short result, int nameid);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_trade_failed_seller_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_buyingstore_trade_failed_seller_post[hIndex].func;
postHookFunc(sd, result, nameid);
}
@@ -17280,14 +20215,14 @@ void HP_clif_buyingstore_trade_failed_seller(struct map_session_data *sd, short
}
void HP_clif_search_store_info_ack(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_search_store_info_ack_pre ) {
+ if (HPMHooks.count.HP_clif_search_store_info_ack_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_search_store_info_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_search_store_info_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_search_store_info_ack_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17295,9 +20230,9 @@ void HP_clif_search_store_info_ack(struct map_session_data *sd) {
{
HPMHooks.source.clif.search_store_info_ack(sd);
}
- if( HPMHooks.count.HP_clif_search_store_info_ack_post ) {
+ if (HPMHooks.count.HP_clif_search_store_info_ack_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_search_store_info_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_search_store_info_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_search_store_info_ack_post[hIndex].func;
postHookFunc(sd);
}
@@ -17306,14 +20241,14 @@ void HP_clif_search_store_info_ack(struct map_session_data *sd) {
}
void HP_clif_search_store_info_failed(struct map_session_data *sd, unsigned char reason) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_search_store_info_failed_pre ) {
+ if (HPMHooks.count.HP_clif_search_store_info_failed_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, unsigned char *reason);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_search_store_info_failed_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_search_store_info_failed_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_search_store_info_failed_pre[hIndex].func;
preHookFunc(&sd, &reason);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17321,9 +20256,9 @@ void HP_clif_search_store_info_failed(struct map_session_data *sd, unsigned char
{
HPMHooks.source.clif.search_store_info_failed(sd, reason);
}
- if( HPMHooks.count.HP_clif_search_store_info_failed_post ) {
+ if (HPMHooks.count.HP_clif_search_store_info_failed_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, unsigned char reason);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_search_store_info_failed_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_search_store_info_failed_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_search_store_info_failed_post[hIndex].func;
postHookFunc(sd, reason);
}
@@ -17332,14 +20267,14 @@ void HP_clif_search_store_info_failed(struct map_session_data *sd, unsigned char
}
void HP_clif_open_search_store_info(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_open_search_store_info_pre ) {
+ if (HPMHooks.count.HP_clif_open_search_store_info_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_open_search_store_info_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_open_search_store_info_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_open_search_store_info_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17347,9 +20282,9 @@ void HP_clif_open_search_store_info(struct map_session_data *sd) {
{
HPMHooks.source.clif.open_search_store_info(sd);
}
- if( HPMHooks.count.HP_clif_open_search_store_info_post ) {
+ if (HPMHooks.count.HP_clif_open_search_store_info_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_open_search_store_info_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_open_search_store_info_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_open_search_store_info_post[hIndex].func;
postHookFunc(sd);
}
@@ -17358,14 +20293,14 @@ void HP_clif_open_search_store_info(struct map_session_data *sd) {
}
void HP_clif_search_store_info_click_ack(struct map_session_data *sd, short x, short y) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_search_store_info_click_ack_pre ) {
+ if (HPMHooks.count.HP_clif_search_store_info_click_ack_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, short *x, short *y);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_search_store_info_click_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_search_store_info_click_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_search_store_info_click_ack_pre[hIndex].func;
preHookFunc(&sd, &x, &y);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17373,9 +20308,9 @@ void HP_clif_search_store_info_click_ack(struct map_session_data *sd, short x, s
{
HPMHooks.source.clif.search_store_info_click_ack(sd, x, y);
}
- if( HPMHooks.count.HP_clif_search_store_info_click_ack_post ) {
+ if (HPMHooks.count.HP_clif_search_store_info_click_ack_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, short x, short y);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_search_store_info_click_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_search_store_info_click_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_search_store_info_click_ack_post[hIndex].func;
postHookFunc(sd, x, y);
}
@@ -17384,14 +20319,14 @@ void HP_clif_search_store_info_click_ack(struct map_session_data *sd, short x, s
}
void HP_clif_elemental_info(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_elemental_info_pre ) {
+ if (HPMHooks.count.HP_clif_elemental_info_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_elemental_info_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_elemental_info_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_elemental_info_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17399,9 +20334,9 @@ void HP_clif_elemental_info(struct map_session_data *sd) {
{
HPMHooks.source.clif.elemental_info(sd);
}
- if( HPMHooks.count.HP_clif_elemental_info_post ) {
+ if (HPMHooks.count.HP_clif_elemental_info_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_elemental_info_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_elemental_info_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_elemental_info_post[hIndex].func;
postHookFunc(sd);
}
@@ -17410,14 +20345,14 @@ void HP_clif_elemental_info(struct map_session_data *sd) {
}
void HP_clif_elemental_updatestatus(struct map_session_data *sd, int type) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_elemental_updatestatus_pre ) {
+ if (HPMHooks.count.HP_clif_elemental_updatestatus_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_elemental_updatestatus_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_elemental_updatestatus_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_elemental_updatestatus_pre[hIndex].func;
preHookFunc(&sd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17425,9 +20360,9 @@ void HP_clif_elemental_updatestatus(struct map_session_data *sd, int type) {
{
HPMHooks.source.clif.elemental_updatestatus(sd, type);
}
- if( HPMHooks.count.HP_clif_elemental_updatestatus_post ) {
+ if (HPMHooks.count.HP_clif_elemental_updatestatus_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_elemental_updatestatus_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_elemental_updatestatus_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_elemental_updatestatus_post[hIndex].func;
postHookFunc(sd, type);
}
@@ -17436,14 +20371,14 @@ void HP_clif_elemental_updatestatus(struct map_session_data *sd, int type) {
}
void HP_clif_bgqueue_ack(struct map_session_data *sd, enum BATTLEGROUNDS_QUEUE_ACK response, unsigned char arena_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_bgqueue_ack_pre ) {
+ if (HPMHooks.count.HP_clif_bgqueue_ack_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, enum BATTLEGROUNDS_QUEUE_ACK *response, unsigned char *arena_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bgqueue_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bgqueue_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_bgqueue_ack_pre[hIndex].func;
preHookFunc(&sd, &response, &arena_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17451,9 +20386,9 @@ void HP_clif_bgqueue_ack(struct map_session_data *sd, enum BATTLEGROUNDS_QUEUE_A
{
HPMHooks.source.clif.bgqueue_ack(sd, response, arena_id);
}
- if( HPMHooks.count.HP_clif_bgqueue_ack_post ) {
+ if (HPMHooks.count.HP_clif_bgqueue_ack_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, enum BATTLEGROUNDS_QUEUE_ACK response, unsigned char arena_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bgqueue_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bgqueue_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_bgqueue_ack_post[hIndex].func;
postHookFunc(sd, response, arena_id);
}
@@ -17462,14 +20397,14 @@ void HP_clif_bgqueue_ack(struct map_session_data *sd, enum BATTLEGROUNDS_QUEUE_A
}
void HP_clif_bgqueue_notice_delete(struct map_session_data *sd, enum BATTLEGROUNDS_QUEUE_NOTICE_DELETED response, const char *name) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_bgqueue_notice_delete_pre ) {
+ if (HPMHooks.count.HP_clif_bgqueue_notice_delete_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, enum BATTLEGROUNDS_QUEUE_NOTICE_DELETED *response, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bgqueue_notice_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bgqueue_notice_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_bgqueue_notice_delete_pre[hIndex].func;
preHookFunc(&sd, &response, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17477,9 +20412,9 @@ void HP_clif_bgqueue_notice_delete(struct map_session_data *sd, enum BATTLEGROUN
{
HPMHooks.source.clif.bgqueue_notice_delete(sd, response, name);
}
- if( HPMHooks.count.HP_clif_bgqueue_notice_delete_post ) {
+ if (HPMHooks.count.HP_clif_bgqueue_notice_delete_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, enum BATTLEGROUNDS_QUEUE_NOTICE_DELETED response, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bgqueue_notice_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bgqueue_notice_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_bgqueue_notice_delete_post[hIndex].func;
postHookFunc(sd, response, name);
}
@@ -17488,14 +20423,14 @@ void HP_clif_bgqueue_notice_delete(struct map_session_data *sd, enum BATTLEGROUN
}
void HP_clif_bgqueue_update_info(struct map_session_data *sd, unsigned char arena_id, int position) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_bgqueue_update_info_pre ) {
+ if (HPMHooks.count.HP_clif_bgqueue_update_info_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, unsigned char *arena_id, int *position);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bgqueue_update_info_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bgqueue_update_info_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_bgqueue_update_info_pre[hIndex].func;
preHookFunc(&sd, &arena_id, &position);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17503,9 +20438,9 @@ void HP_clif_bgqueue_update_info(struct map_session_data *sd, unsigned char aren
{
HPMHooks.source.clif.bgqueue_update_info(sd, arena_id, position);
}
- if( HPMHooks.count.HP_clif_bgqueue_update_info_post ) {
+ if (HPMHooks.count.HP_clif_bgqueue_update_info_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, unsigned char arena_id, int position);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bgqueue_update_info_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bgqueue_update_info_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_bgqueue_update_info_post[hIndex].func;
postHookFunc(sd, arena_id, position);
}
@@ -17514,14 +20449,14 @@ void HP_clif_bgqueue_update_info(struct map_session_data *sd, unsigned char aren
}
void HP_clif_bgqueue_joined(struct map_session_data *sd, int pos) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_bgqueue_joined_pre ) {
+ if (HPMHooks.count.HP_clif_bgqueue_joined_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *pos);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bgqueue_joined_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bgqueue_joined_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_bgqueue_joined_pre[hIndex].func;
preHookFunc(&sd, &pos);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17529,9 +20464,9 @@ void HP_clif_bgqueue_joined(struct map_session_data *sd, int pos) {
{
HPMHooks.source.clif.bgqueue_joined(sd, pos);
}
- if( HPMHooks.count.HP_clif_bgqueue_joined_post ) {
+ if (HPMHooks.count.HP_clif_bgqueue_joined_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int pos);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bgqueue_joined_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bgqueue_joined_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_bgqueue_joined_post[hIndex].func;
postHookFunc(sd, pos);
}
@@ -17540,14 +20475,14 @@ void HP_clif_bgqueue_joined(struct map_session_data *sd, int pos) {
}
void HP_clif_bgqueue_pcleft(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_bgqueue_pcleft_pre ) {
+ if (HPMHooks.count.HP_clif_bgqueue_pcleft_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bgqueue_pcleft_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bgqueue_pcleft_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_bgqueue_pcleft_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17555,9 +20490,9 @@ void HP_clif_bgqueue_pcleft(struct map_session_data *sd) {
{
HPMHooks.source.clif.bgqueue_pcleft(sd);
}
- if( HPMHooks.count.HP_clif_bgqueue_pcleft_post ) {
+ if (HPMHooks.count.HP_clif_bgqueue_pcleft_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bgqueue_pcleft_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bgqueue_pcleft_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_bgqueue_pcleft_post[hIndex].func;
postHookFunc(sd);
}
@@ -17566,14 +20501,14 @@ void HP_clif_bgqueue_pcleft(struct map_session_data *sd) {
}
void HP_clif_bgqueue_battlebegins(struct map_session_data *sd, unsigned char arena_id, enum send_target target) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_bgqueue_battlebegins_pre ) {
+ if (HPMHooks.count.HP_clif_bgqueue_battlebegins_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, unsigned char *arena_id, enum send_target *target);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bgqueue_battlebegins_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bgqueue_battlebegins_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_bgqueue_battlebegins_pre[hIndex].func;
preHookFunc(&sd, &arena_id, &target);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17581,9 +20516,9 @@ void HP_clif_bgqueue_battlebegins(struct map_session_data *sd, unsigned char are
{
HPMHooks.source.clif.bgqueue_battlebegins(sd, arena_id, target);
}
- if( HPMHooks.count.HP_clif_bgqueue_battlebegins_post ) {
+ if (HPMHooks.count.HP_clif_bgqueue_battlebegins_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, unsigned char arena_id, enum send_target target);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bgqueue_battlebegins_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bgqueue_battlebegins_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_bgqueue_battlebegins_post[hIndex].func;
postHookFunc(sd, arena_id, target);
}
@@ -17592,14 +20527,14 @@ void HP_clif_bgqueue_battlebegins(struct map_session_data *sd, unsigned char are
}
void HP_clif_adopt_reply(struct map_session_data *sd, int type) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_adopt_reply_pre ) {
+ if (HPMHooks.count.HP_clif_adopt_reply_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_adopt_reply_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_adopt_reply_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_adopt_reply_pre[hIndex].func;
preHookFunc(&sd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17607,9 +20542,9 @@ void HP_clif_adopt_reply(struct map_session_data *sd, int type) {
{
HPMHooks.source.clif.adopt_reply(sd, type);
}
- if( HPMHooks.count.HP_clif_adopt_reply_post ) {
+ if (HPMHooks.count.HP_clif_adopt_reply_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_adopt_reply_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_adopt_reply_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_adopt_reply_post[hIndex].func;
postHookFunc(sd, type);
}
@@ -17618,14 +20553,14 @@ void HP_clif_adopt_reply(struct map_session_data *sd, int type) {
}
void HP_clif_adopt_request(struct map_session_data *sd, struct map_session_data *src, int p_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_adopt_request_pre ) {
+ if (HPMHooks.count.HP_clif_adopt_request_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct map_session_data **src, int *p_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_adopt_request_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_adopt_request_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_adopt_request_pre[hIndex].func;
preHookFunc(&sd, &src, &p_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17633,9 +20568,9 @@ void HP_clif_adopt_request(struct map_session_data *sd, struct map_session_data
{
HPMHooks.source.clif.adopt_request(sd, src, p_id);
}
- if( HPMHooks.count.HP_clif_adopt_request_post ) {
+ if (HPMHooks.count.HP_clif_adopt_request_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct map_session_data *src, int p_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_adopt_request_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_adopt_request_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_adopt_request_post[hIndex].func;
postHookFunc(sd, src, p_id);
}
@@ -17644,14 +20579,14 @@ void HP_clif_adopt_request(struct map_session_data *sd, struct map_session_data
}
void HP_clif_readbook(int fd, int book_id, int page) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_readbook_pre ) {
+ if (HPMHooks.count.HP_clif_readbook_pre > 0) {
void (*preHookFunc) (int *fd, int *book_id, int *page);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_readbook_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_readbook_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_readbook_pre[hIndex].func;
preHookFunc(&fd, &book_id, &page);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17659,9 +20594,9 @@ void HP_clif_readbook(int fd, int book_id, int page) {
{
HPMHooks.source.clif.readbook(fd, book_id, page);
}
- if( HPMHooks.count.HP_clif_readbook_post ) {
+ if (HPMHooks.count.HP_clif_readbook_post > 0) {
void (*postHookFunc) (int fd, int book_id, int page);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_readbook_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_readbook_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_readbook_post[hIndex].func;
postHookFunc(fd, book_id, page);
}
@@ -17670,14 +20605,14 @@ void HP_clif_readbook(int fd, int book_id, int page) {
}
void HP_clif_notify_time(struct map_session_data *sd, int64 time) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_notify_time_pre ) {
+ if (HPMHooks.count.HP_clif_notify_time_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int64 *time);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_notify_time_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_notify_time_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_notify_time_pre[hIndex].func;
preHookFunc(&sd, &time);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17685,9 +20620,9 @@ void HP_clif_notify_time(struct map_session_data *sd, int64 time) {
{
HPMHooks.source.clif.notify_time(sd, time);
}
- if( HPMHooks.count.HP_clif_notify_time_post ) {
+ if (HPMHooks.count.HP_clif_notify_time_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int64 time);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_notify_time_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_notify_time_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_notify_time_post[hIndex].func;
postHookFunc(sd, time);
}
@@ -17696,14 +20631,14 @@ void HP_clif_notify_time(struct map_session_data *sd, int64 time) {
}
void HP_clif_user_count(struct map_session_data *sd, int count) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_user_count_pre ) {
+ if (HPMHooks.count.HP_clif_user_count_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *count);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_user_count_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_user_count_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_user_count_pre[hIndex].func;
preHookFunc(&sd, &count);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17711,9 +20646,9 @@ void HP_clif_user_count(struct map_session_data *sd, int count) {
{
HPMHooks.source.clif.user_count(sd, count);
}
- if( HPMHooks.count.HP_clif_user_count_post ) {
+ if (HPMHooks.count.HP_clif_user_count_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int count);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_user_count_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_user_count_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_user_count_post[hIndex].func;
postHookFunc(sd, count);
}
@@ -17722,14 +20657,14 @@ void HP_clif_user_count(struct map_session_data *sd, int count) {
}
void HP_clif_noask_sub(struct map_session_data *src, struct map_session_data *target, int type) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_noask_sub_pre ) {
+ if (HPMHooks.count.HP_clif_noask_sub_pre > 0) {
void (*preHookFunc) (struct map_session_data **src, struct map_session_data **target, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_noask_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_noask_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_noask_sub_pre[hIndex].func;
preHookFunc(&src, &target, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17737,9 +20672,9 @@ void HP_clif_noask_sub(struct map_session_data *src, struct map_session_data *ta
{
HPMHooks.source.clif.noask_sub(src, target, type);
}
- if( HPMHooks.count.HP_clif_noask_sub_post ) {
+ if (HPMHooks.count.HP_clif_noask_sub_post > 0) {
void (*postHookFunc) (struct map_session_data *src, struct map_session_data *target, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_noask_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_noask_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_noask_sub_post[hIndex].func;
postHookFunc(src, target, type);
}
@@ -17748,14 +20683,14 @@ void HP_clif_noask_sub(struct map_session_data *src, struct map_session_data *ta
}
void HP_clif_bc_ready(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_bc_ready_pre ) {
+ if (HPMHooks.count.HP_clif_bc_ready_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bc_ready_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bc_ready_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_bc_ready_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17763,9 +20698,9 @@ void HP_clif_bc_ready(void) {
{
HPMHooks.source.clif.bc_ready();
}
- if( HPMHooks.count.HP_clif_bc_ready_post ) {
+ if (HPMHooks.count.HP_clif_bc_ready_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bc_ready_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bc_ready_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_bc_ready_post[hIndex].func;
postHookFunc();
}
@@ -17774,14 +20709,14 @@ void HP_clif_bc_ready(void) {
}
void HP_clif_channel_msg(struct channel_data *chan, struct map_session_data *sd, char *msg) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_channel_msg_pre ) {
+ if (HPMHooks.count.HP_clif_channel_msg_pre > 0) {
void (*preHookFunc) (struct channel_data **chan, struct map_session_data **sd, char **msg);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_channel_msg_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_channel_msg_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_channel_msg_pre[hIndex].func;
preHookFunc(&chan, &sd, &msg);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17789,9 +20724,9 @@ void HP_clif_channel_msg(struct channel_data *chan, struct map_session_data *sd,
{
HPMHooks.source.clif.channel_msg(chan, sd, msg);
}
- if( HPMHooks.count.HP_clif_channel_msg_post ) {
+ if (HPMHooks.count.HP_clif_channel_msg_post > 0) {
void (*postHookFunc) (struct channel_data *chan, struct map_session_data *sd, char *msg);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_channel_msg_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_channel_msg_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_channel_msg_post[hIndex].func;
postHookFunc(chan, sd, msg);
}
@@ -17800,14 +20735,14 @@ void HP_clif_channel_msg(struct channel_data *chan, struct map_session_data *sd,
}
void HP_clif_channel_msg2(struct channel_data *chan, char *msg) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_channel_msg2_pre ) {
+ if (HPMHooks.count.HP_clif_channel_msg2_pre > 0) {
void (*preHookFunc) (struct channel_data **chan, char **msg);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_channel_msg2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_channel_msg2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_channel_msg2_pre[hIndex].func;
preHookFunc(&chan, &msg);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17815,9 +20750,9 @@ void HP_clif_channel_msg2(struct channel_data *chan, char *msg) {
{
HPMHooks.source.clif.channel_msg2(chan, msg);
}
- if( HPMHooks.count.HP_clif_channel_msg2_post ) {
+ if (HPMHooks.count.HP_clif_channel_msg2_post > 0) {
void (*postHookFunc) (struct channel_data *chan, char *msg);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_channel_msg2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_channel_msg2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_channel_msg2_post[hIndex].func;
postHookFunc(chan, msg);
}
@@ -17827,14 +20762,14 @@ void HP_clif_channel_msg2(struct channel_data *chan, char *msg) {
int HP_clif_undisguise_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_clif_undisguise_timer_pre ) {
+ if (HPMHooks.count.HP_clif_undisguise_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_undisguise_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_undisguise_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_undisguise_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -17842,9 +20777,9 @@ int HP_clif_undisguise_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.clif.undisguise_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_clif_undisguise_timer_post ) {
+ if (HPMHooks.count.HP_clif_undisguise_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_undisguise_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_undisguise_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_undisguise_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -17853,14 +20788,14 @@ int HP_clif_undisguise_timer(int tid, int64 tick, int id, intptr_t data) {
}
void HP_clif_bank_deposit(struct map_session_data *sd, enum e_BANKING_DEPOSIT_ACK reason) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_bank_deposit_pre ) {
+ if (HPMHooks.count.HP_clif_bank_deposit_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, enum e_BANKING_DEPOSIT_ACK *reason);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bank_deposit_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bank_deposit_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_bank_deposit_pre[hIndex].func;
preHookFunc(&sd, &reason);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17868,9 +20803,9 @@ void HP_clif_bank_deposit(struct map_session_data *sd, enum e_BANKING_DEPOSIT_AC
{
HPMHooks.source.clif.bank_deposit(sd, reason);
}
- if( HPMHooks.count.HP_clif_bank_deposit_post ) {
+ if (HPMHooks.count.HP_clif_bank_deposit_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, enum e_BANKING_DEPOSIT_ACK reason);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bank_deposit_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bank_deposit_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_bank_deposit_post[hIndex].func;
postHookFunc(sd, reason);
}
@@ -17879,14 +20814,14 @@ void HP_clif_bank_deposit(struct map_session_data *sd, enum e_BANKING_DEPOSIT_AC
}
void HP_clif_bank_withdraw(struct map_session_data *sd, enum e_BANKING_WITHDRAW_ACK reason) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_bank_withdraw_pre ) {
+ if (HPMHooks.count.HP_clif_bank_withdraw_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, enum e_BANKING_WITHDRAW_ACK *reason);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bank_withdraw_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bank_withdraw_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_bank_withdraw_pre[hIndex].func;
preHookFunc(&sd, &reason);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17894,9 +20829,9 @@ void HP_clif_bank_withdraw(struct map_session_data *sd, enum e_BANKING_WITHDRAW_
{
HPMHooks.source.clif.bank_withdraw(sd, reason);
}
- if( HPMHooks.count.HP_clif_bank_withdraw_post ) {
+ if (HPMHooks.count.HP_clif_bank_withdraw_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, enum e_BANKING_WITHDRAW_ACK reason);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bank_withdraw_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bank_withdraw_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_bank_withdraw_post[hIndex].func;
postHookFunc(sd, reason);
}
@@ -17905,14 +20840,14 @@ void HP_clif_bank_withdraw(struct map_session_data *sd, enum e_BANKING_WITHDRAW_
}
void HP_clif_show_modifiers(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_show_modifiers_pre ) {
+ if (HPMHooks.count.HP_clif_show_modifiers_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_show_modifiers_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_show_modifiers_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_show_modifiers_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17920,9 +20855,9 @@ void HP_clif_show_modifiers(struct map_session_data *sd) {
{
HPMHooks.source.clif.show_modifiers(sd);
}
- if( HPMHooks.count.HP_clif_show_modifiers_post ) {
+ if (HPMHooks.count.HP_clif_show_modifiers_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_show_modifiers_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_show_modifiers_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_show_modifiers_post[hIndex].func;
postHookFunc(sd);
}
@@ -17931,14 +20866,14 @@ void HP_clif_show_modifiers(struct map_session_data *sd) {
}
void HP_clif_notify_bounditem(struct map_session_data *sd, unsigned short index) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_notify_bounditem_pre ) {
+ if (HPMHooks.count.HP_clif_notify_bounditem_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, unsigned short *index);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_notify_bounditem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_notify_bounditem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_notify_bounditem_pre[hIndex].func;
preHookFunc(&sd, &index);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -17946,9 +20881,9 @@ void HP_clif_notify_bounditem(struct map_session_data *sd, unsigned short index)
{
HPMHooks.source.clif.notify_bounditem(sd, index);
}
- if( HPMHooks.count.HP_clif_notify_bounditem_post ) {
+ if (HPMHooks.count.HP_clif_notify_bounditem_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, unsigned short index);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_notify_bounditem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_notify_bounditem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_notify_bounditem_post[hIndex].func;
postHookFunc(sd, index);
}
@@ -17958,14 +20893,14 @@ void HP_clif_notify_bounditem(struct map_session_data *sd, unsigned short index)
int HP_clif_delay_damage(int64 tick, struct block_list *src, struct block_list *dst, int sdelay, int ddelay, int64 in_damage, short div, unsigned char type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_clif_delay_damage_pre ) {
+ if (HPMHooks.count.HP_clif_delay_damage_pre > 0) {
int (*preHookFunc) (int64 *tick, struct block_list **src, struct block_list **dst, int *sdelay, int *ddelay, int64 *in_damage, short *div, unsigned char *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_delay_damage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_delay_damage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_delay_damage_pre[hIndex].func;
retVal___ = preHookFunc(&tick, &src, &dst, &sdelay, &ddelay, &in_damage, &div, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -17973,9 +20908,9 @@ int HP_clif_delay_damage(int64 tick, struct block_list *src, struct block_list *
{
retVal___ = HPMHooks.source.clif.delay_damage(tick, src, dst, sdelay, ddelay, in_damage, div, type);
}
- if( HPMHooks.count.HP_clif_delay_damage_post ) {
+ if (HPMHooks.count.HP_clif_delay_damage_post > 0) {
int (*postHookFunc) (int retVal___, int64 tick, struct block_list *src, struct block_list *dst, int sdelay, int ddelay, int64 in_damage, short div, unsigned char type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_delay_damage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_delay_damage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_delay_damage_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tick, src, dst, sdelay, ddelay, in_damage, div, type);
}
@@ -17985,14 +20920,14 @@ int HP_clif_delay_damage(int64 tick, struct block_list *src, struct block_list *
int HP_clif_delay_damage_sub(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_clif_delay_damage_sub_pre ) {
+ if (HPMHooks.count.HP_clif_delay_damage_sub_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_delay_damage_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_delay_damage_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_delay_damage_sub_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18000,9 +20935,9 @@ int HP_clif_delay_damage_sub(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.clif.delay_damage_sub(tid, tick, id, data);
}
- if( HPMHooks.count.HP_clif_delay_damage_sub_post ) {
+ if (HPMHooks.count.HP_clif_delay_damage_sub_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_delay_damage_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_delay_damage_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_delay_damage_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -18011,14 +20946,14 @@ int HP_clif_delay_damage_sub(int tid, int64 tick, int id, intptr_t data) {
}
void HP_clif_npc_market_open(struct map_session_data *sd, struct npc_data *nd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_npc_market_open_pre ) {
+ if (HPMHooks.count.HP_clif_npc_market_open_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct npc_data **nd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_npc_market_open_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_npc_market_open_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_npc_market_open_pre[hIndex].func;
preHookFunc(&sd, &nd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18026,9 +20961,9 @@ void HP_clif_npc_market_open(struct map_session_data *sd, struct npc_data *nd) {
{
HPMHooks.source.clif.npc_market_open(sd, nd);
}
- if( HPMHooks.count.HP_clif_npc_market_open_post ) {
+ if (HPMHooks.count.HP_clif_npc_market_open_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct npc_data *nd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_npc_market_open_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_npc_market_open_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_npc_market_open_post[hIndex].func;
postHookFunc(sd, nd);
}
@@ -18037,14 +20972,14 @@ void HP_clif_npc_market_open(struct map_session_data *sd, struct npc_data *nd) {
}
void HP_clif_npc_market_purchase_ack(struct map_session_data *sd, const struct itemlist *item_list, unsigned char response) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_npc_market_purchase_ack_pre ) {
+ if (HPMHooks.count.HP_clif_npc_market_purchase_ack_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, const struct itemlist **item_list, unsigned char *response);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_npc_market_purchase_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_npc_market_purchase_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_npc_market_purchase_ack_pre[hIndex].func;
preHookFunc(&sd, &item_list, &response);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18052,9 +20987,9 @@ void HP_clif_npc_market_purchase_ack(struct map_session_data *sd, const struct i
{
HPMHooks.source.clif.npc_market_purchase_ack(sd, item_list, response);
}
- if( HPMHooks.count.HP_clif_npc_market_purchase_ack_post ) {
+ if (HPMHooks.count.HP_clif_npc_market_purchase_ack_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, const struct itemlist *item_list, unsigned char response);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_npc_market_purchase_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_npc_market_purchase_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_npc_market_purchase_ack_post[hIndex].func;
postHookFunc(sd, item_list, response);
}
@@ -18064,14 +20999,14 @@ void HP_clif_npc_market_purchase_ack(struct map_session_data *sd, const struct i
bool HP_clif_parse_roulette_db(void) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_clif_parse_roulette_db_pre ) {
+ if (HPMHooks.count.HP_clif_parse_roulette_db_pre > 0) {
bool (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_parse_roulette_db_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_parse_roulette_db_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_parse_roulette_db_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18079,25 +21014,25 @@ bool HP_clif_parse_roulette_db(void) {
{
retVal___ = HPMHooks.source.clif.parse_roulette_db();
}
- if( HPMHooks.count.HP_clif_parse_roulette_db_post ) {
+ if (HPMHooks.count.HP_clif_parse_roulette_db_post > 0) {
bool (*postHookFunc) (bool retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_parse_roulette_db_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_parse_roulette_db_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_parse_roulette_db_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
}
return retVal___;
}
-void HP_clif_roulette_generate_ack(struct map_session_data *sd, unsigned char result, short stage, short prizeIdx, short bonusItemID) {
+void HP_clif_roulette_generate_ack(struct map_session_data *sd, enum GENERATE_ROULETTE_ACK result, short stage, short prizeIdx, int bonusItemID) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_roulette_generate_ack_pre ) {
- void (*preHookFunc) (struct map_session_data **sd, unsigned char *result, short *stage, short *prizeIdx, short *bonusItemID);
+ if (HPMHooks.count.HP_clif_roulette_generate_ack_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, enum GENERATE_ROULETTE_ACK *result, short *stage, short *prizeIdx, int *bonusItemID);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_roulette_generate_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_roulette_generate_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_roulette_generate_ack_pre[hIndex].func;
preHookFunc(&sd, &result, &stage, &prizeIdx, &bonusItemID);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18105,9 +21040,9 @@ void HP_clif_roulette_generate_ack(struct map_session_data *sd, unsigned char re
{
HPMHooks.source.clif.roulette_generate_ack(sd, result, stage, prizeIdx, bonusItemID);
}
- if( HPMHooks.count.HP_clif_roulette_generate_ack_post ) {
- void (*postHookFunc) (struct map_session_data *sd, unsigned char result, short stage, short prizeIdx, short bonusItemID);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_roulette_generate_ack_post; hIndex++ ) {
+ if (HPMHooks.count.HP_clif_roulette_generate_ack_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, enum GENERATE_ROULETTE_ACK result, short stage, short prizeIdx, int bonusItemID);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_roulette_generate_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_roulette_generate_ack_post[hIndex].func;
postHookFunc(sd, result, stage, prizeIdx, bonusItemID);
}
@@ -18116,14 +21051,14 @@ void HP_clif_roulette_generate_ack(struct map_session_data *sd, unsigned char re
}
void HP_clif_openmergeitem(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_openmergeitem_pre ) {
+ if (HPMHooks.count.HP_clif_openmergeitem_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_openmergeitem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_openmergeitem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_openmergeitem_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18131,9 +21066,9 @@ void HP_clif_openmergeitem(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.openmergeitem(fd, sd);
}
- if( HPMHooks.count.HP_clif_openmergeitem_post ) {
+ if (HPMHooks.count.HP_clif_openmergeitem_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_openmergeitem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_openmergeitem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_openmergeitem_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -18142,14 +21077,14 @@ void HP_clif_openmergeitem(int fd, struct map_session_data *sd) {
}
void HP_clif_cancelmergeitem(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_cancelmergeitem_pre ) {
+ if (HPMHooks.count.HP_clif_cancelmergeitem_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_cancelmergeitem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_cancelmergeitem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_cancelmergeitem_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18157,9 +21092,9 @@ void HP_clif_cancelmergeitem(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.cancelmergeitem(fd, sd);
}
- if( HPMHooks.count.HP_clif_cancelmergeitem_post ) {
+ if (HPMHooks.count.HP_clif_cancelmergeitem_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_cancelmergeitem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_cancelmergeitem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_cancelmergeitem_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -18169,14 +21104,14 @@ void HP_clif_cancelmergeitem(int fd, struct map_session_data *sd) {
int HP_clif_comparemergeitem(const void *a, const void *b) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_clif_comparemergeitem_pre ) {
+ if (HPMHooks.count.HP_clif_comparemergeitem_pre > 0) {
int (*preHookFunc) (const void **a, const void **b);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_comparemergeitem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_comparemergeitem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_comparemergeitem_pre[hIndex].func;
retVal___ = preHookFunc(&a, &b);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18184,9 +21119,9 @@ int HP_clif_comparemergeitem(const void *a, const void *b) {
{
retVal___ = HPMHooks.source.clif.comparemergeitem(a, b);
}
- if( HPMHooks.count.HP_clif_comparemergeitem_post ) {
+ if (HPMHooks.count.HP_clif_comparemergeitem_post > 0) {
int (*postHookFunc) (int retVal___, const void *a, const void *b);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_comparemergeitem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_comparemergeitem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_comparemergeitem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, a, b);
}
@@ -18195,14 +21130,14 @@ int HP_clif_comparemergeitem(const void *a, const void *b) {
}
void HP_clif_ackmergeitems(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_ackmergeitems_pre ) {
+ if (HPMHooks.count.HP_clif_ackmergeitems_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_ackmergeitems_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_ackmergeitems_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_ackmergeitems_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18210,9 +21145,9 @@ void HP_clif_ackmergeitems(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.ackmergeitems(fd, sd);
}
- if( HPMHooks.count.HP_clif_ackmergeitems_post ) {
+ if (HPMHooks.count.HP_clif_ackmergeitems_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_ackmergeitems_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_ackmergeitems_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_ackmergeitems_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -18222,14 +21157,14 @@ void HP_clif_ackmergeitems(int fd, struct map_session_data *sd) {
bool HP_clif_isdisguised(struct block_list *bl) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_clif_isdisguised_pre ) {
+ if (HPMHooks.count.HP_clif_isdisguised_pre > 0) {
bool (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_isdisguised_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_isdisguised_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_isdisguised_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18237,9 +21172,9 @@ bool HP_clif_isdisguised(struct block_list *bl) {
{
retVal___ = HPMHooks.source.clif.isdisguised(bl);
}
- if( HPMHooks.count.HP_clif_isdisguised_post ) {
+ if (HPMHooks.count.HP_clif_isdisguised_post > 0) {
bool (*postHookFunc) (bool retVal___, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_isdisguised_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_isdisguised_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_isdisguised_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -18248,14 +21183,14 @@ bool HP_clif_isdisguised(struct block_list *bl) {
}
void HP_clif_navigate_to(struct map_session_data *sd, const char *mapname, uint16 x, uint16 y, uint8 flag, bool hideWindow, uint16 mob_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_navigate_to_pre ) {
+ if (HPMHooks.count.HP_clif_navigate_to_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, const char **mapname, uint16 *x, uint16 *y, uint8 *flag, bool *hideWindow, uint16 *mob_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_navigate_to_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_navigate_to_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_navigate_to_pre[hIndex].func;
preHookFunc(&sd, &mapname, &x, &y, &flag, &hideWindow, &mob_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18263,9 +21198,9 @@ void HP_clif_navigate_to(struct map_session_data *sd, const char *mapname, uint1
{
HPMHooks.source.clif.navigate_to(sd, mapname, x, y, flag, hideWindow, mob_id);
}
- if( HPMHooks.count.HP_clif_navigate_to_post ) {
+ if (HPMHooks.count.HP_clif_navigate_to_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, const char *mapname, uint16 x, uint16 y, uint8 flag, bool hideWindow, uint16 mob_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_navigate_to_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_navigate_to_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_navigate_to_post[hIndex].func;
postHookFunc(sd, mapname, x, y, flag, hideWindow, mob_id);
}
@@ -18275,14 +21210,14 @@ void HP_clif_navigate_to(struct map_session_data *sd, const char *mapname, uint1
unsigned char HP_clif_bl_type(struct block_list *bl) {
int hIndex = 0;
unsigned char retVal___ = 0;
- if( HPMHooks.count.HP_clif_bl_type_pre ) {
+ if (HPMHooks.count.HP_clif_bl_type_pre > 0) {
unsigned char (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bl_type_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bl_type_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_bl_type_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -18290,25 +21225,181 @@ unsigned char HP_clif_bl_type(struct block_list *bl) {
{
retVal___ = HPMHooks.source.clif.bl_type(bl);
}
- if( HPMHooks.count.HP_clif_bl_type_post ) {
+ if (HPMHooks.count.HP_clif_bl_type_post > 0) {
unsigned char (*postHookFunc) (unsigned char retVal___, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_bl_type_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_bl_type_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_bl_type_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
}
return retVal___;
}
+void HP_clif_achievement_send_list(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_achievement_send_list_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_achievement_send_list_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_achievement_send_list_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.achievement_send_list(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_achievement_send_list_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_achievement_send_list_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_achievement_send_list_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_achievement_send_update(int fd, struct map_session_data *sd, const struct achievement_data *ad) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_achievement_send_update_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd, const struct achievement_data **ad);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_achievement_send_update_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_achievement_send_update_pre[hIndex].func;
+ preHookFunc(&fd, &sd, &ad);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.achievement_send_update(fd, sd, ad);
+ }
+ if (HPMHooks.count.HP_clif_achievement_send_update_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd, const struct achievement_data *ad);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_achievement_send_update_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_achievement_send_update_post[hIndex].func;
+ postHookFunc(fd, sd, ad);
+ }
+ }
+ return;
+}
+void HP_clif_pAchievementGetReward(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pAchievementGetReward_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAchievementGetReward_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pAchievementGetReward_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pAchievementGetReward(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pAchievementGetReward_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAchievementGetReward_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pAchievementGetReward_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_achievement_reward_ack(int fd, struct map_session_data *sd, const struct achievement_data *ad) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_achievement_reward_ack_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd, const struct achievement_data **ad);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_achievement_reward_ack_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_achievement_reward_ack_pre[hIndex].func;
+ preHookFunc(&fd, &sd, &ad);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.achievement_reward_ack(fd, sd, ad);
+ }
+ if (HPMHooks.count.HP_clif_achievement_reward_ack_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd, const struct achievement_data *ad);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_achievement_reward_ack_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_achievement_reward_ack_post[hIndex].func;
+ postHookFunc(fd, sd, ad);
+ }
+ }
+ return;
+}
+void HP_clif_change_title_ack(int fd, struct map_session_data *sd, int title_id) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_change_title_ack_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd, int *title_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_change_title_ack_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_change_title_ack_pre[hIndex].func;
+ preHookFunc(&fd, &sd, &title_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.change_title_ack(fd, sd, title_id);
+ }
+ if (HPMHooks.count.HP_clif_change_title_ack_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd, int title_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_change_title_ack_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_change_title_ack_post[hIndex].func;
+ postHookFunc(fd, sd, title_id);
+ }
+ }
+ return;
+}
+void HP_clif_pChangeTitle(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pChangeTitle_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChangeTitle_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pChangeTitle_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pChangeTitle(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pChangeTitle_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChangeTitle_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pChangeTitle_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
void HP_clif_pWantToConnection(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pWantToConnection_pre ) {
+ if (HPMHooks.count.HP_clif_pWantToConnection_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pWantToConnection_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pWantToConnection_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pWantToConnection_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18316,9 +21407,9 @@ void HP_clif_pWantToConnection(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pWantToConnection(fd, sd);
}
- if( HPMHooks.count.HP_clif_pWantToConnection_post ) {
+ if (HPMHooks.count.HP_clif_pWantToConnection_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pWantToConnection_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pWantToConnection_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pWantToConnection_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -18327,14 +21418,14 @@ void HP_clif_pWantToConnection(int fd, struct map_session_data *sd) {
}
void HP_clif_pLoadEndAck(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pLoadEndAck_pre ) {
+ if (HPMHooks.count.HP_clif_pLoadEndAck_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pLoadEndAck_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pLoadEndAck_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pLoadEndAck_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18342,9 +21433,9 @@ void HP_clif_pLoadEndAck(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pLoadEndAck(fd, sd);
}
- if( HPMHooks.count.HP_clif_pLoadEndAck_post ) {
+ if (HPMHooks.count.HP_clif_pLoadEndAck_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pLoadEndAck_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pLoadEndAck_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pLoadEndAck_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -18353,14 +21444,14 @@ void HP_clif_pLoadEndAck(int fd, struct map_session_data *sd) {
}
void HP_clif_pTickSend(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pTickSend_pre ) {
+ if (HPMHooks.count.HP_clif_pTickSend_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTickSend_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTickSend_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pTickSend_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18368,9 +21459,9 @@ void HP_clif_pTickSend(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pTickSend(fd, sd);
}
- if( HPMHooks.count.HP_clif_pTickSend_post ) {
+ if (HPMHooks.count.HP_clif_pTickSend_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTickSend_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTickSend_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pTickSend_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -18379,14 +21470,14 @@ void HP_clif_pTickSend(int fd, struct map_session_data *sd) {
}
void HP_clif_pHotkey(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pHotkey_pre ) {
+ if (HPMHooks.count.HP_clif_pHotkey_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pHotkey_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pHotkey_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pHotkey_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18394,9 +21485,9 @@ void HP_clif_pHotkey(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pHotkey(fd, sd);
}
- if( HPMHooks.count.HP_clif_pHotkey_post ) {
+ if (HPMHooks.count.HP_clif_pHotkey_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pHotkey_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pHotkey_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pHotkey_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -18405,14 +21496,14 @@ void HP_clif_pHotkey(int fd, struct map_session_data *sd) {
}
void HP_clif_pProgressbar(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pProgressbar_pre ) {
+ if (HPMHooks.count.HP_clif_pProgressbar_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pProgressbar_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pProgressbar_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pProgressbar_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18420,9 +21511,9 @@ void HP_clif_pProgressbar(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pProgressbar(fd, sd);
}
- if( HPMHooks.count.HP_clif_pProgressbar_post ) {
+ if (HPMHooks.count.HP_clif_pProgressbar_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pProgressbar_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pProgressbar_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pProgressbar_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -18431,14 +21522,14 @@ void HP_clif_pProgressbar(int fd, struct map_session_data *sd) {
}
void HP_clif_pWalkToXY(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pWalkToXY_pre ) {
+ if (HPMHooks.count.HP_clif_pWalkToXY_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pWalkToXY_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pWalkToXY_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pWalkToXY_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18446,9 +21537,9 @@ void HP_clif_pWalkToXY(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pWalkToXY(fd, sd);
}
- if( HPMHooks.count.HP_clif_pWalkToXY_post ) {
+ if (HPMHooks.count.HP_clif_pWalkToXY_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pWalkToXY_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pWalkToXY_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pWalkToXY_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -18457,14 +21548,14 @@ void HP_clif_pWalkToXY(int fd, struct map_session_data *sd) {
}
void HP_clif_pQuitGame(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pQuitGame_pre ) {
+ if (HPMHooks.count.HP_clif_pQuitGame_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pQuitGame_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pQuitGame_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pQuitGame_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18472,9 +21563,9 @@ void HP_clif_pQuitGame(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pQuitGame(fd, sd);
}
- if( HPMHooks.count.HP_clif_pQuitGame_post ) {
+ if (HPMHooks.count.HP_clif_pQuitGame_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pQuitGame_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pQuitGame_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pQuitGame_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -18483,14 +21574,14 @@ void HP_clif_pQuitGame(int fd, struct map_session_data *sd) {
}
void HP_clif_pGetCharNameRequest(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGetCharNameRequest_pre ) {
+ if (HPMHooks.count.HP_clif_pGetCharNameRequest_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGetCharNameRequest_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGetCharNameRequest_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGetCharNameRequest_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18498,9 +21589,9 @@ void HP_clif_pGetCharNameRequest(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGetCharNameRequest(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGetCharNameRequest_post ) {
+ if (HPMHooks.count.HP_clif_pGetCharNameRequest_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGetCharNameRequest_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGetCharNameRequest_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGetCharNameRequest_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -18509,14 +21600,14 @@ void HP_clif_pGetCharNameRequest(int fd, struct map_session_data *sd) {
}
void HP_clif_pGlobalMessage(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGlobalMessage_pre ) {
+ if (HPMHooks.count.HP_clif_pGlobalMessage_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGlobalMessage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGlobalMessage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGlobalMessage_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18524,9 +21615,9 @@ void HP_clif_pGlobalMessage(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGlobalMessage(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGlobalMessage_post ) {
+ if (HPMHooks.count.HP_clif_pGlobalMessage_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGlobalMessage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGlobalMessage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGlobalMessage_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -18535,14 +21626,14 @@ void HP_clif_pGlobalMessage(int fd, struct map_session_data *sd) {
}
void HP_clif_pMapMove(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pMapMove_pre ) {
+ if (HPMHooks.count.HP_clif_pMapMove_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMapMove_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMapMove_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pMapMove_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18550,9 +21641,9 @@ void HP_clif_pMapMove(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pMapMove(fd, sd);
}
- if( HPMHooks.count.HP_clif_pMapMove_post ) {
+ if (HPMHooks.count.HP_clif_pMapMove_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMapMove_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMapMove_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pMapMove_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -18561,14 +21652,14 @@ void HP_clif_pMapMove(int fd, struct map_session_data *sd) {
}
void HP_clif_pChangeDir(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pChangeDir_pre ) {
+ if (HPMHooks.count.HP_clif_pChangeDir_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChangeDir_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChangeDir_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pChangeDir_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18576,9 +21667,9 @@ void HP_clif_pChangeDir(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pChangeDir(fd, sd);
}
- if( HPMHooks.count.HP_clif_pChangeDir_post ) {
+ if (HPMHooks.count.HP_clif_pChangeDir_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChangeDir_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChangeDir_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pChangeDir_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -18587,14 +21678,14 @@ void HP_clif_pChangeDir(int fd, struct map_session_data *sd) {
}
void HP_clif_pEmotion(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pEmotion_pre ) {
+ if (HPMHooks.count.HP_clif_pEmotion_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pEmotion_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pEmotion_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pEmotion_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18602,9 +21693,9 @@ void HP_clif_pEmotion(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pEmotion(fd, sd);
}
- if( HPMHooks.count.HP_clif_pEmotion_post ) {
+ if (HPMHooks.count.HP_clif_pEmotion_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pEmotion_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pEmotion_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pEmotion_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -18613,14 +21704,14 @@ void HP_clif_pEmotion(int fd, struct map_session_data *sd) {
}
void HP_clif_pHowManyConnections(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pHowManyConnections_pre ) {
+ if (HPMHooks.count.HP_clif_pHowManyConnections_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pHowManyConnections_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pHowManyConnections_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pHowManyConnections_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18628,9 +21719,9 @@ void HP_clif_pHowManyConnections(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pHowManyConnections(fd, sd);
}
- if( HPMHooks.count.HP_clif_pHowManyConnections_post ) {
+ if (HPMHooks.count.HP_clif_pHowManyConnections_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pHowManyConnections_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pHowManyConnections_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pHowManyConnections_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -18639,14 +21730,14 @@ void HP_clif_pHowManyConnections(int fd, struct map_session_data *sd) {
}
void HP_clif_pActionRequest(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pActionRequest_pre ) {
+ if (HPMHooks.count.HP_clif_pActionRequest_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pActionRequest_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pActionRequest_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pActionRequest_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18654,9 +21745,9 @@ void HP_clif_pActionRequest(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pActionRequest(fd, sd);
}
- if( HPMHooks.count.HP_clif_pActionRequest_post ) {
+ if (HPMHooks.count.HP_clif_pActionRequest_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pActionRequest_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pActionRequest_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pActionRequest_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -18665,14 +21756,14 @@ void HP_clif_pActionRequest(int fd, struct map_session_data *sd) {
}
void HP_clif_pActionRequest_sub(struct map_session_data *sd, int action_type, int target_id, int64 tick) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pActionRequest_sub_pre ) {
+ if (HPMHooks.count.HP_clif_pActionRequest_sub_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *action_type, int *target_id, int64 *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pActionRequest_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pActionRequest_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pActionRequest_sub_pre[hIndex].func;
preHookFunc(&sd, &action_type, &target_id, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18680,9 +21771,9 @@ void HP_clif_pActionRequest_sub(struct map_session_data *sd, int action_type, in
{
HPMHooks.source.clif.pActionRequest_sub(sd, action_type, target_id, tick);
}
- if( HPMHooks.count.HP_clif_pActionRequest_sub_post ) {
+ if (HPMHooks.count.HP_clif_pActionRequest_sub_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int action_type, int target_id, int64 tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pActionRequest_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pActionRequest_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pActionRequest_sub_post[hIndex].func;
postHookFunc(sd, action_type, target_id, tick);
}
@@ -18691,14 +21782,14 @@ void HP_clif_pActionRequest_sub(struct map_session_data *sd, int action_type, in
}
void HP_clif_pRestart(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pRestart_pre ) {
+ if (HPMHooks.count.HP_clif_pRestart_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRestart_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRestart_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pRestart_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18706,9 +21797,9 @@ void HP_clif_pRestart(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pRestart(fd, sd);
}
- if( HPMHooks.count.HP_clif_pRestart_post ) {
+ if (HPMHooks.count.HP_clif_pRestart_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRestart_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRestart_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pRestart_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -18717,14 +21808,14 @@ void HP_clif_pRestart(int fd, struct map_session_data *sd) {
}
void HP_clif_pWisMessage(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pWisMessage_pre ) {
+ if (HPMHooks.count.HP_clif_pWisMessage_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pWisMessage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pWisMessage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pWisMessage_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18732,9 +21823,9 @@ void HP_clif_pWisMessage(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pWisMessage(fd, sd);
}
- if( HPMHooks.count.HP_clif_pWisMessage_post ) {
+ if (HPMHooks.count.HP_clif_pWisMessage_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pWisMessage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pWisMessage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pWisMessage_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -18743,14 +21834,14 @@ void HP_clif_pWisMessage(int fd, struct map_session_data *sd) {
}
void HP_clif_pBroadcast(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pBroadcast_pre ) {
+ if (HPMHooks.count.HP_clif_pBroadcast_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBroadcast_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBroadcast_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pBroadcast_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18758,9 +21849,9 @@ void HP_clif_pBroadcast(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pBroadcast(fd, sd);
}
- if( HPMHooks.count.HP_clif_pBroadcast_post ) {
+ if (HPMHooks.count.HP_clif_pBroadcast_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBroadcast_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBroadcast_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pBroadcast_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -18769,14 +21860,14 @@ void HP_clif_pBroadcast(int fd, struct map_session_data *sd) {
}
void HP_clif_pTakeItem(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pTakeItem_pre ) {
+ if (HPMHooks.count.HP_clif_pTakeItem_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTakeItem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTakeItem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pTakeItem_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18784,9 +21875,9 @@ void HP_clif_pTakeItem(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pTakeItem(fd, sd);
}
- if( HPMHooks.count.HP_clif_pTakeItem_post ) {
+ if (HPMHooks.count.HP_clif_pTakeItem_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTakeItem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTakeItem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pTakeItem_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -18795,14 +21886,14 @@ void HP_clif_pTakeItem(int fd, struct map_session_data *sd) {
}
void HP_clif_pDropItem(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pDropItem_pre ) {
+ if (HPMHooks.count.HP_clif_pDropItem_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pDropItem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pDropItem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pDropItem_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18810,9 +21901,9 @@ void HP_clif_pDropItem(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pDropItem(fd, sd);
}
- if( HPMHooks.count.HP_clif_pDropItem_post ) {
+ if (HPMHooks.count.HP_clif_pDropItem_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pDropItem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pDropItem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pDropItem_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -18821,14 +21912,14 @@ void HP_clif_pDropItem(int fd, struct map_session_data *sd) {
}
void HP_clif_pUseItem(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pUseItem_pre ) {
+ if (HPMHooks.count.HP_clif_pUseItem_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseItem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseItem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pUseItem_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18836,9 +21927,9 @@ void HP_clif_pUseItem(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pUseItem(fd, sd);
}
- if( HPMHooks.count.HP_clif_pUseItem_post ) {
+ if (HPMHooks.count.HP_clif_pUseItem_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseItem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseItem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pUseItem_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -18847,14 +21938,14 @@ void HP_clif_pUseItem(int fd, struct map_session_data *sd) {
}
void HP_clif_pEquipItem(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pEquipItem_pre ) {
+ if (HPMHooks.count.HP_clif_pEquipItem_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pEquipItem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pEquipItem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pEquipItem_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18862,9 +21953,9 @@ void HP_clif_pEquipItem(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pEquipItem(fd, sd);
}
- if( HPMHooks.count.HP_clif_pEquipItem_post ) {
+ if (HPMHooks.count.HP_clif_pEquipItem_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pEquipItem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pEquipItem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pEquipItem_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -18873,14 +21964,14 @@ void HP_clif_pEquipItem(int fd, struct map_session_data *sd) {
}
void HP_clif_pUnequipItem(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pUnequipItem_pre ) {
+ if (HPMHooks.count.HP_clif_pUnequipItem_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUnequipItem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUnequipItem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pUnequipItem_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18888,9 +21979,9 @@ void HP_clif_pUnequipItem(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pUnequipItem(fd, sd);
}
- if( HPMHooks.count.HP_clif_pUnequipItem_post ) {
+ if (HPMHooks.count.HP_clif_pUnequipItem_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUnequipItem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUnequipItem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pUnequipItem_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -18899,14 +21990,14 @@ void HP_clif_pUnequipItem(int fd, struct map_session_data *sd) {
}
void HP_clif_pNpcClicked(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pNpcClicked_pre ) {
+ if (HPMHooks.count.HP_clif_pNpcClicked_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcClicked_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcClicked_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pNpcClicked_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18914,9 +22005,9 @@ void HP_clif_pNpcClicked(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pNpcClicked(fd, sd);
}
- if( HPMHooks.count.HP_clif_pNpcClicked_post ) {
+ if (HPMHooks.count.HP_clif_pNpcClicked_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcClicked_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcClicked_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pNpcClicked_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -18925,14 +22016,14 @@ void HP_clif_pNpcClicked(int fd, struct map_session_data *sd) {
}
void HP_clif_pNpcBuySellSelected(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pNpcBuySellSelected_pre ) {
+ if (HPMHooks.count.HP_clif_pNpcBuySellSelected_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcBuySellSelected_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcBuySellSelected_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pNpcBuySellSelected_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18940,9 +22031,9 @@ void HP_clif_pNpcBuySellSelected(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pNpcBuySellSelected(fd, sd);
}
- if( HPMHooks.count.HP_clif_pNpcBuySellSelected_post ) {
+ if (HPMHooks.count.HP_clif_pNpcBuySellSelected_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcBuySellSelected_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcBuySellSelected_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pNpcBuySellSelected_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -18951,14 +22042,14 @@ void HP_clif_pNpcBuySellSelected(int fd, struct map_session_data *sd) {
}
void HP_clif_pNpcBuyListSend(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pNpcBuyListSend_pre ) {
+ if (HPMHooks.count.HP_clif_pNpcBuyListSend_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcBuyListSend_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcBuyListSend_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pNpcBuyListSend_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18966,9 +22057,9 @@ void HP_clif_pNpcBuyListSend(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pNpcBuyListSend(fd, sd);
}
- if( HPMHooks.count.HP_clif_pNpcBuyListSend_post ) {
+ if (HPMHooks.count.HP_clif_pNpcBuyListSend_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcBuyListSend_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcBuyListSend_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pNpcBuyListSend_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -18977,14 +22068,14 @@ void HP_clif_pNpcBuyListSend(int fd, struct map_session_data *sd) {
}
void HP_clif_pNpcSellListSend(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pNpcSellListSend_pre ) {
+ if (HPMHooks.count.HP_clif_pNpcSellListSend_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcSellListSend_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcSellListSend_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pNpcSellListSend_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -18992,9 +22083,9 @@ void HP_clif_pNpcSellListSend(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pNpcSellListSend(fd, sd);
}
- if( HPMHooks.count.HP_clif_pNpcSellListSend_post ) {
+ if (HPMHooks.count.HP_clif_pNpcSellListSend_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcSellListSend_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcSellListSend_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pNpcSellListSend_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -19003,14 +22094,14 @@ void HP_clif_pNpcSellListSend(int fd, struct map_session_data *sd) {
}
void HP_clif_pCreateChatRoom(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pCreateChatRoom_pre ) {
+ if (HPMHooks.count.HP_clif_pCreateChatRoom_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCreateChatRoom_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCreateChatRoom_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pCreateChatRoom_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19018,9 +22109,9 @@ void HP_clif_pCreateChatRoom(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pCreateChatRoom(fd, sd);
}
- if( HPMHooks.count.HP_clif_pCreateChatRoom_post ) {
+ if (HPMHooks.count.HP_clif_pCreateChatRoom_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCreateChatRoom_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCreateChatRoom_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pCreateChatRoom_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -19029,14 +22120,14 @@ void HP_clif_pCreateChatRoom(int fd, struct map_session_data *sd) {
}
void HP_clif_pChatAddMember(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pChatAddMember_pre ) {
+ if (HPMHooks.count.HP_clif_pChatAddMember_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChatAddMember_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChatAddMember_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pChatAddMember_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19044,9 +22135,9 @@ void HP_clif_pChatAddMember(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pChatAddMember(fd, sd);
}
- if( HPMHooks.count.HP_clif_pChatAddMember_post ) {
+ if (HPMHooks.count.HP_clif_pChatAddMember_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChatAddMember_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChatAddMember_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pChatAddMember_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -19055,14 +22146,14 @@ void HP_clif_pChatAddMember(int fd, struct map_session_data *sd) {
}
void HP_clif_pChatRoomStatusChange(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pChatRoomStatusChange_pre ) {
+ if (HPMHooks.count.HP_clif_pChatRoomStatusChange_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChatRoomStatusChange_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChatRoomStatusChange_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pChatRoomStatusChange_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19070,9 +22161,9 @@ void HP_clif_pChatRoomStatusChange(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pChatRoomStatusChange(fd, sd);
}
- if( HPMHooks.count.HP_clif_pChatRoomStatusChange_post ) {
+ if (HPMHooks.count.HP_clif_pChatRoomStatusChange_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChatRoomStatusChange_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChatRoomStatusChange_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pChatRoomStatusChange_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -19081,14 +22172,14 @@ void HP_clif_pChatRoomStatusChange(int fd, struct map_session_data *sd) {
}
void HP_clif_pChangeChatOwner(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pChangeChatOwner_pre ) {
+ if (HPMHooks.count.HP_clif_pChangeChatOwner_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChangeChatOwner_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChangeChatOwner_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pChangeChatOwner_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19096,9 +22187,9 @@ void HP_clif_pChangeChatOwner(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pChangeChatOwner(fd, sd);
}
- if( HPMHooks.count.HP_clif_pChangeChatOwner_post ) {
+ if (HPMHooks.count.HP_clif_pChangeChatOwner_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChangeChatOwner_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChangeChatOwner_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pChangeChatOwner_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -19107,14 +22198,14 @@ void HP_clif_pChangeChatOwner(int fd, struct map_session_data *sd) {
}
void HP_clif_pKickFromChat(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pKickFromChat_pre ) {
+ if (HPMHooks.count.HP_clif_pKickFromChat_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pKickFromChat_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pKickFromChat_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pKickFromChat_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19122,9 +22213,9 @@ void HP_clif_pKickFromChat(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pKickFromChat(fd, sd);
}
- if( HPMHooks.count.HP_clif_pKickFromChat_post ) {
+ if (HPMHooks.count.HP_clif_pKickFromChat_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pKickFromChat_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pKickFromChat_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pKickFromChat_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -19133,14 +22224,14 @@ void HP_clif_pKickFromChat(int fd, struct map_session_data *sd) {
}
void HP_clif_pChatLeave(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pChatLeave_pre ) {
+ if (HPMHooks.count.HP_clif_pChatLeave_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChatLeave_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChatLeave_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pChatLeave_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19148,9 +22239,9 @@ void HP_clif_pChatLeave(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pChatLeave(fd, sd);
}
- if( HPMHooks.count.HP_clif_pChatLeave_post ) {
+ if (HPMHooks.count.HP_clif_pChatLeave_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChatLeave_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChatLeave_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pChatLeave_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -19159,14 +22250,14 @@ void HP_clif_pChatLeave(int fd, struct map_session_data *sd) {
}
void HP_clif_pTradeRequest(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pTradeRequest_pre ) {
+ if (HPMHooks.count.HP_clif_pTradeRequest_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTradeRequest_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTradeRequest_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pTradeRequest_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19174,9 +22265,9 @@ void HP_clif_pTradeRequest(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pTradeRequest(fd, sd);
}
- if( HPMHooks.count.HP_clif_pTradeRequest_post ) {
+ if (HPMHooks.count.HP_clif_pTradeRequest_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTradeRequest_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTradeRequest_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pTradeRequest_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -19185,14 +22276,14 @@ void HP_clif_pTradeRequest(int fd, struct map_session_data *sd) {
}
void HP_clif_pTradeAck(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pTradeAck_pre ) {
+ if (HPMHooks.count.HP_clif_pTradeAck_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTradeAck_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTradeAck_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pTradeAck_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19200,9 +22291,9 @@ void HP_clif_pTradeAck(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pTradeAck(fd, sd);
}
- if( HPMHooks.count.HP_clif_pTradeAck_post ) {
+ if (HPMHooks.count.HP_clif_pTradeAck_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTradeAck_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTradeAck_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pTradeAck_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -19211,14 +22302,14 @@ void HP_clif_pTradeAck(int fd, struct map_session_data *sd) {
}
void HP_clif_pTradeAddItem(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pTradeAddItem_pre ) {
+ if (HPMHooks.count.HP_clif_pTradeAddItem_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTradeAddItem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTradeAddItem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pTradeAddItem_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19226,9 +22317,9 @@ void HP_clif_pTradeAddItem(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pTradeAddItem(fd, sd);
}
- if( HPMHooks.count.HP_clif_pTradeAddItem_post ) {
+ if (HPMHooks.count.HP_clif_pTradeAddItem_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTradeAddItem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTradeAddItem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pTradeAddItem_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -19237,14 +22328,14 @@ void HP_clif_pTradeAddItem(int fd, struct map_session_data *sd) {
}
void HP_clif_pTradeOk(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pTradeOk_pre ) {
+ if (HPMHooks.count.HP_clif_pTradeOk_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTradeOk_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTradeOk_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pTradeOk_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19252,9 +22343,9 @@ void HP_clif_pTradeOk(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pTradeOk(fd, sd);
}
- if( HPMHooks.count.HP_clif_pTradeOk_post ) {
+ if (HPMHooks.count.HP_clif_pTradeOk_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTradeOk_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTradeOk_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pTradeOk_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -19263,14 +22354,14 @@ void HP_clif_pTradeOk(int fd, struct map_session_data *sd) {
}
void HP_clif_pTradeCancel(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pTradeCancel_pre ) {
+ if (HPMHooks.count.HP_clif_pTradeCancel_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTradeCancel_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTradeCancel_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pTradeCancel_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19278,9 +22369,9 @@ void HP_clif_pTradeCancel(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pTradeCancel(fd, sd);
}
- if( HPMHooks.count.HP_clif_pTradeCancel_post ) {
+ if (HPMHooks.count.HP_clif_pTradeCancel_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTradeCancel_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTradeCancel_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pTradeCancel_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -19289,14 +22380,14 @@ void HP_clif_pTradeCancel(int fd, struct map_session_data *sd) {
}
void HP_clif_pTradeCommit(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pTradeCommit_pre ) {
+ if (HPMHooks.count.HP_clif_pTradeCommit_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTradeCommit_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTradeCommit_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pTradeCommit_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19304,9 +22395,9 @@ void HP_clif_pTradeCommit(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pTradeCommit(fd, sd);
}
- if( HPMHooks.count.HP_clif_pTradeCommit_post ) {
+ if (HPMHooks.count.HP_clif_pTradeCommit_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTradeCommit_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTradeCommit_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pTradeCommit_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -19315,14 +22406,14 @@ void HP_clif_pTradeCommit(int fd, struct map_session_data *sd) {
}
void HP_clif_pStopAttack(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pStopAttack_pre ) {
+ if (HPMHooks.count.HP_clif_pStopAttack_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pStopAttack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pStopAttack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pStopAttack_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19330,9 +22421,9 @@ void HP_clif_pStopAttack(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pStopAttack(fd, sd);
}
- if( HPMHooks.count.HP_clif_pStopAttack_post ) {
+ if (HPMHooks.count.HP_clif_pStopAttack_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pStopAttack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pStopAttack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pStopAttack_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -19341,14 +22432,14 @@ void HP_clif_pStopAttack(int fd, struct map_session_data *sd) {
}
void HP_clif_pPutItemToCart(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pPutItemToCart_pre ) {
+ if (HPMHooks.count.HP_clif_pPutItemToCart_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPutItemToCart_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPutItemToCart_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pPutItemToCart_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19356,9 +22447,9 @@ void HP_clif_pPutItemToCart(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pPutItemToCart(fd, sd);
}
- if( HPMHooks.count.HP_clif_pPutItemToCart_post ) {
+ if (HPMHooks.count.HP_clif_pPutItemToCart_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPutItemToCart_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPutItemToCart_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pPutItemToCart_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -19367,14 +22458,14 @@ void HP_clif_pPutItemToCart(int fd, struct map_session_data *sd) {
}
void HP_clif_pGetItemFromCart(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGetItemFromCart_pre ) {
+ if (HPMHooks.count.HP_clif_pGetItemFromCart_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGetItemFromCart_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGetItemFromCart_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGetItemFromCart_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19382,9 +22473,9 @@ void HP_clif_pGetItemFromCart(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGetItemFromCart(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGetItemFromCart_post ) {
+ if (HPMHooks.count.HP_clif_pGetItemFromCart_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGetItemFromCart_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGetItemFromCart_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGetItemFromCart_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -19393,14 +22484,14 @@ void HP_clif_pGetItemFromCart(int fd, struct map_session_data *sd) {
}
void HP_clif_pRemoveOption(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pRemoveOption_pre ) {
+ if (HPMHooks.count.HP_clif_pRemoveOption_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRemoveOption_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRemoveOption_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pRemoveOption_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19408,9 +22499,9 @@ void HP_clif_pRemoveOption(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pRemoveOption(fd, sd);
}
- if( HPMHooks.count.HP_clif_pRemoveOption_post ) {
+ if (HPMHooks.count.HP_clif_pRemoveOption_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRemoveOption_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRemoveOption_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pRemoveOption_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -19419,14 +22510,14 @@ void HP_clif_pRemoveOption(int fd, struct map_session_data *sd) {
}
void HP_clif_pChangeCart(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pChangeCart_pre ) {
+ if (HPMHooks.count.HP_clif_pChangeCart_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChangeCart_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChangeCart_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pChangeCart_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19434,9 +22525,9 @@ void HP_clif_pChangeCart(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pChangeCart(fd, sd);
}
- if( HPMHooks.count.HP_clif_pChangeCart_post ) {
+ if (HPMHooks.count.HP_clif_pChangeCart_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChangeCart_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChangeCart_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pChangeCart_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -19445,14 +22536,14 @@ void HP_clif_pChangeCart(int fd, struct map_session_data *sd) {
}
void HP_clif_pStatusUp(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pStatusUp_pre ) {
+ if (HPMHooks.count.HP_clif_pStatusUp_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pStatusUp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pStatusUp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pStatusUp_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19460,9 +22551,9 @@ void HP_clif_pStatusUp(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pStatusUp(fd, sd);
}
- if( HPMHooks.count.HP_clif_pStatusUp_post ) {
+ if (HPMHooks.count.HP_clif_pStatusUp_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pStatusUp_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pStatusUp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pStatusUp_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -19471,14 +22562,14 @@ void HP_clif_pStatusUp(int fd, struct map_session_data *sd) {
}
void HP_clif_pSkillUp(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pSkillUp_pre ) {
+ if (HPMHooks.count.HP_clif_pSkillUp_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSkillUp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSkillUp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pSkillUp_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19486,25 +22577,51 @@ void HP_clif_pSkillUp(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pSkillUp(fd, sd);
}
- if( HPMHooks.count.HP_clif_pSkillUp_post ) {
+ if (HPMHooks.count.HP_clif_pSkillUp_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSkillUp_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSkillUp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pSkillUp_post[hIndex].func;
postHookFunc(fd, sd);
}
}
return;
}
+void HP_clif_useSkillToIdReal(int fd, struct map_session_data *sd, int skill_id, int skill_lv, int target_id) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_useSkillToIdReal_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd, int *skill_id, int *skill_lv, int *target_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_useSkillToIdReal_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_useSkillToIdReal_pre[hIndex].func;
+ preHookFunc(&fd, &sd, &skill_id, &skill_lv, &target_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.useSkillToIdReal(fd, sd, skill_id, skill_lv, target_id);
+ }
+ if (HPMHooks.count.HP_clif_useSkillToIdReal_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd, int skill_id, int skill_lv, int target_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_useSkillToIdReal_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_useSkillToIdReal_post[hIndex].func;
+ postHookFunc(fd, sd, skill_id, skill_lv, target_id);
+ }
+ }
+ return;
+}
void HP_clif_pUseSkillToId(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pUseSkillToId_pre ) {
+ if (HPMHooks.count.HP_clif_pUseSkillToId_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillToId_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillToId_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pUseSkillToId_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19512,25 +22629,77 @@ void HP_clif_pUseSkillToId(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pUseSkillToId(fd, sd);
}
- if( HPMHooks.count.HP_clif_pUseSkillToId_post ) {
+ if (HPMHooks.count.HP_clif_pUseSkillToId_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillToId_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillToId_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pUseSkillToId_post[hIndex].func;
postHookFunc(fd, sd);
}
}
return;
}
+void HP_clif_pStartUseSkillToId(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pStartUseSkillToId_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pStartUseSkillToId_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pStartUseSkillToId_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pStartUseSkillToId(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pStartUseSkillToId_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pStartUseSkillToId_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pStartUseSkillToId_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_pStopUseSkillToId(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pStopUseSkillToId_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pStopUseSkillToId_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pStopUseSkillToId_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pStopUseSkillToId(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pStopUseSkillToId_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pStopUseSkillToId_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pStopUseSkillToId_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
void HP_clif_pUseSkillToId_homun(struct homun_data *hd, struct map_session_data *sd, int64 tick, uint16 skill_id, uint16 skill_lv, int target_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pUseSkillToId_homun_pre ) {
+ if (HPMHooks.count.HP_clif_pUseSkillToId_homun_pre > 0) {
void (*preHookFunc) (struct homun_data **hd, struct map_session_data **sd, int64 *tick, uint16 *skill_id, uint16 *skill_lv, int *target_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillToId_homun_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillToId_homun_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pUseSkillToId_homun_pre[hIndex].func;
preHookFunc(&hd, &sd, &tick, &skill_id, &skill_lv, &target_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19538,9 +22707,9 @@ void HP_clif_pUseSkillToId_homun(struct homun_data *hd, struct map_session_data
{
HPMHooks.source.clif.pUseSkillToId_homun(hd, sd, tick, skill_id, skill_lv, target_id);
}
- if( HPMHooks.count.HP_clif_pUseSkillToId_homun_post ) {
+ if (HPMHooks.count.HP_clif_pUseSkillToId_homun_post > 0) {
void (*postHookFunc) (struct homun_data *hd, struct map_session_data *sd, int64 tick, uint16 skill_id, uint16 skill_lv, int target_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillToId_homun_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillToId_homun_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pUseSkillToId_homun_post[hIndex].func;
postHookFunc(hd, sd, tick, skill_id, skill_lv, target_id);
}
@@ -19549,14 +22718,14 @@ void HP_clif_pUseSkillToId_homun(struct homun_data *hd, struct map_session_data
}
void HP_clif_pUseSkillToId_mercenary(struct mercenary_data *md, struct map_session_data *sd, int64 tick, uint16 skill_id, uint16 skill_lv, int target_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pUseSkillToId_mercenary_pre ) {
+ if (HPMHooks.count.HP_clif_pUseSkillToId_mercenary_pre > 0) {
void (*preHookFunc) (struct mercenary_data **md, struct map_session_data **sd, int64 *tick, uint16 *skill_id, uint16 *skill_lv, int *target_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillToId_mercenary_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillToId_mercenary_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pUseSkillToId_mercenary_pre[hIndex].func;
preHookFunc(&md, &sd, &tick, &skill_id, &skill_lv, &target_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19564,9 +22733,9 @@ void HP_clif_pUseSkillToId_mercenary(struct mercenary_data *md, struct map_sessi
{
HPMHooks.source.clif.pUseSkillToId_mercenary(md, sd, tick, skill_id, skill_lv, target_id);
}
- if( HPMHooks.count.HP_clif_pUseSkillToId_mercenary_post ) {
+ if (HPMHooks.count.HP_clif_pUseSkillToId_mercenary_post > 0) {
void (*postHookFunc) (struct mercenary_data *md, struct map_session_data *sd, int64 tick, uint16 skill_id, uint16 skill_lv, int target_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillToId_mercenary_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillToId_mercenary_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pUseSkillToId_mercenary_post[hIndex].func;
postHookFunc(md, sd, tick, skill_id, skill_lv, target_id);
}
@@ -19575,14 +22744,14 @@ void HP_clif_pUseSkillToId_mercenary(struct mercenary_data *md, struct map_sessi
}
void HP_clif_pUseSkillToPos(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pUseSkillToPos_pre ) {
+ if (HPMHooks.count.HP_clif_pUseSkillToPos_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillToPos_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillToPos_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pUseSkillToPos_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19590,9 +22759,9 @@ void HP_clif_pUseSkillToPos(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pUseSkillToPos(fd, sd);
}
- if( HPMHooks.count.HP_clif_pUseSkillToPos_post ) {
+ if (HPMHooks.count.HP_clif_pUseSkillToPos_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillToPos_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillToPos_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pUseSkillToPos_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -19601,14 +22770,14 @@ void HP_clif_pUseSkillToPos(int fd, struct map_session_data *sd) {
}
void HP_clif_pUseSkillToPosSub(int fd, struct map_session_data *sd, uint16 skill_lv, uint16 skill_id, short x, short y, int skillmoreinfo) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pUseSkillToPosSub_pre ) {
+ if (HPMHooks.count.HP_clif_pUseSkillToPosSub_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd, uint16 *skill_lv, uint16 *skill_id, short *x, short *y, int *skillmoreinfo);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillToPosSub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillToPosSub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pUseSkillToPosSub_pre[hIndex].func;
preHookFunc(&fd, &sd, &skill_lv, &skill_id, &x, &y, &skillmoreinfo);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19616,9 +22785,9 @@ void HP_clif_pUseSkillToPosSub(int fd, struct map_session_data *sd, uint16 skill
{
HPMHooks.source.clif.pUseSkillToPosSub(fd, sd, skill_lv, skill_id, x, y, skillmoreinfo);
}
- if( HPMHooks.count.HP_clif_pUseSkillToPosSub_post ) {
+ if (HPMHooks.count.HP_clif_pUseSkillToPosSub_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd, uint16 skill_lv, uint16 skill_id, short x, short y, int skillmoreinfo);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillToPosSub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillToPosSub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pUseSkillToPosSub_post[hIndex].func;
postHookFunc(fd, sd, skill_lv, skill_id, x, y, skillmoreinfo);
}
@@ -19627,14 +22796,14 @@ void HP_clif_pUseSkillToPosSub(int fd, struct map_session_data *sd, uint16 skill
}
void HP_clif_pUseSkillToPos_homun(struct homun_data *hd, struct map_session_data *sd, int64 tick, uint16 skill_id, uint16 skill_lv, short x, short y, int skillmoreinfo) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pUseSkillToPos_homun_pre ) {
+ if (HPMHooks.count.HP_clif_pUseSkillToPos_homun_pre > 0) {
void (*preHookFunc) (struct homun_data **hd, struct map_session_data **sd, int64 *tick, uint16 *skill_id, uint16 *skill_lv, short *x, short *y, int *skillmoreinfo);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillToPos_homun_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillToPos_homun_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pUseSkillToPos_homun_pre[hIndex].func;
preHookFunc(&hd, &sd, &tick, &skill_id, &skill_lv, &x, &y, &skillmoreinfo);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19642,9 +22811,9 @@ void HP_clif_pUseSkillToPos_homun(struct homun_data *hd, struct map_session_data
{
HPMHooks.source.clif.pUseSkillToPos_homun(hd, sd, tick, skill_id, skill_lv, x, y, skillmoreinfo);
}
- if( HPMHooks.count.HP_clif_pUseSkillToPos_homun_post ) {
+ if (HPMHooks.count.HP_clif_pUseSkillToPos_homun_post > 0) {
void (*postHookFunc) (struct homun_data *hd, struct map_session_data *sd, int64 tick, uint16 skill_id, uint16 skill_lv, short x, short y, int skillmoreinfo);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillToPos_homun_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillToPos_homun_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pUseSkillToPos_homun_post[hIndex].func;
postHookFunc(hd, sd, tick, skill_id, skill_lv, x, y, skillmoreinfo);
}
@@ -19653,14 +22822,14 @@ void HP_clif_pUseSkillToPos_homun(struct homun_data *hd, struct map_session_data
}
void HP_clif_pUseSkillToPos_mercenary(struct mercenary_data *md, struct map_session_data *sd, int64 tick, uint16 skill_id, uint16 skill_lv, short x, short y, int skillmoreinfo) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pUseSkillToPos_mercenary_pre ) {
+ if (HPMHooks.count.HP_clif_pUseSkillToPos_mercenary_pre > 0) {
void (*preHookFunc) (struct mercenary_data **md, struct map_session_data **sd, int64 *tick, uint16 *skill_id, uint16 *skill_lv, short *x, short *y, int *skillmoreinfo);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillToPos_mercenary_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillToPos_mercenary_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pUseSkillToPos_mercenary_pre[hIndex].func;
preHookFunc(&md, &sd, &tick, &skill_id, &skill_lv, &x, &y, &skillmoreinfo);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19668,9 +22837,9 @@ void HP_clif_pUseSkillToPos_mercenary(struct mercenary_data *md, struct map_sess
{
HPMHooks.source.clif.pUseSkillToPos_mercenary(md, sd, tick, skill_id, skill_lv, x, y, skillmoreinfo);
}
- if( HPMHooks.count.HP_clif_pUseSkillToPos_mercenary_post ) {
+ if (HPMHooks.count.HP_clif_pUseSkillToPos_mercenary_post > 0) {
void (*postHookFunc) (struct mercenary_data *md, struct map_session_data *sd, int64 tick, uint16 skill_id, uint16 skill_lv, short x, short y, int skillmoreinfo);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillToPos_mercenary_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillToPos_mercenary_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pUseSkillToPos_mercenary_post[hIndex].func;
postHookFunc(md, sd, tick, skill_id, skill_lv, x, y, skillmoreinfo);
}
@@ -19679,14 +22848,14 @@ void HP_clif_pUseSkillToPos_mercenary(struct mercenary_data *md, struct map_sess
}
void HP_clif_pUseSkillToPosMoreInfo(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pUseSkillToPosMoreInfo_pre ) {
+ if (HPMHooks.count.HP_clif_pUseSkillToPosMoreInfo_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillToPosMoreInfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillToPosMoreInfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pUseSkillToPosMoreInfo_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19694,9 +22863,9 @@ void HP_clif_pUseSkillToPosMoreInfo(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pUseSkillToPosMoreInfo(fd, sd);
}
- if( HPMHooks.count.HP_clif_pUseSkillToPosMoreInfo_post ) {
+ if (HPMHooks.count.HP_clif_pUseSkillToPosMoreInfo_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillToPosMoreInfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillToPosMoreInfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pUseSkillToPosMoreInfo_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -19705,14 +22874,14 @@ void HP_clif_pUseSkillToPosMoreInfo(int fd, struct map_session_data *sd) {
}
void HP_clif_pUseSkillMap(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pUseSkillMap_pre ) {
+ if (HPMHooks.count.HP_clif_pUseSkillMap_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillMap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillMap_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pUseSkillMap_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19720,9 +22889,9 @@ void HP_clif_pUseSkillMap(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pUseSkillMap(fd, sd);
}
- if( HPMHooks.count.HP_clif_pUseSkillMap_post ) {
+ if (HPMHooks.count.HP_clif_pUseSkillMap_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillMap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseSkillMap_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pUseSkillMap_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -19731,14 +22900,14 @@ void HP_clif_pUseSkillMap(int fd, struct map_session_data *sd) {
}
void HP_clif_pRequestMemo(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pRequestMemo_pre ) {
+ if (HPMHooks.count.HP_clif_pRequestMemo_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRequestMemo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRequestMemo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pRequestMemo_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19746,9 +22915,9 @@ void HP_clif_pRequestMemo(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pRequestMemo(fd, sd);
}
- if( HPMHooks.count.HP_clif_pRequestMemo_post ) {
+ if (HPMHooks.count.HP_clif_pRequestMemo_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRequestMemo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRequestMemo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pRequestMemo_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -19757,14 +22926,14 @@ void HP_clif_pRequestMemo(int fd, struct map_session_data *sd) {
}
void HP_clif_pProduceMix(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pProduceMix_pre ) {
+ if (HPMHooks.count.HP_clif_pProduceMix_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pProduceMix_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pProduceMix_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pProduceMix_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19772,9 +22941,9 @@ void HP_clif_pProduceMix(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pProduceMix(fd, sd);
}
- if( HPMHooks.count.HP_clif_pProduceMix_post ) {
+ if (HPMHooks.count.HP_clif_pProduceMix_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pProduceMix_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pProduceMix_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pProduceMix_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -19783,14 +22952,14 @@ void HP_clif_pProduceMix(int fd, struct map_session_data *sd) {
}
void HP_clif_pCooking(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pCooking_pre ) {
+ if (HPMHooks.count.HP_clif_pCooking_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCooking_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCooking_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pCooking_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19798,9 +22967,9 @@ void HP_clif_pCooking(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pCooking(fd, sd);
}
- if( HPMHooks.count.HP_clif_pCooking_post ) {
+ if (HPMHooks.count.HP_clif_pCooking_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCooking_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCooking_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pCooking_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -19809,14 +22978,14 @@ void HP_clif_pCooking(int fd, struct map_session_data *sd) {
}
void HP_clif_pRepairItem(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pRepairItem_pre ) {
+ if (HPMHooks.count.HP_clif_pRepairItem_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRepairItem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRepairItem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pRepairItem_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19824,9 +22993,9 @@ void HP_clif_pRepairItem(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pRepairItem(fd, sd);
}
- if( HPMHooks.count.HP_clif_pRepairItem_post ) {
+ if (HPMHooks.count.HP_clif_pRepairItem_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRepairItem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRepairItem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pRepairItem_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -19835,14 +23004,14 @@ void HP_clif_pRepairItem(int fd, struct map_session_data *sd) {
}
void HP_clif_pWeaponRefine(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pWeaponRefine_pre ) {
+ if (HPMHooks.count.HP_clif_pWeaponRefine_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pWeaponRefine_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pWeaponRefine_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pWeaponRefine_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19850,9 +23019,9 @@ void HP_clif_pWeaponRefine(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pWeaponRefine(fd, sd);
}
- if( HPMHooks.count.HP_clif_pWeaponRefine_post ) {
+ if (HPMHooks.count.HP_clif_pWeaponRefine_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pWeaponRefine_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pWeaponRefine_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pWeaponRefine_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -19861,14 +23030,14 @@ void HP_clif_pWeaponRefine(int fd, struct map_session_data *sd) {
}
void HP_clif_pNpcSelectMenu(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pNpcSelectMenu_pre ) {
+ if (HPMHooks.count.HP_clif_pNpcSelectMenu_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcSelectMenu_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcSelectMenu_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pNpcSelectMenu_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19876,9 +23045,9 @@ void HP_clif_pNpcSelectMenu(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pNpcSelectMenu(fd, sd);
}
- if( HPMHooks.count.HP_clif_pNpcSelectMenu_post ) {
+ if (HPMHooks.count.HP_clif_pNpcSelectMenu_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcSelectMenu_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcSelectMenu_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pNpcSelectMenu_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -19887,14 +23056,14 @@ void HP_clif_pNpcSelectMenu(int fd, struct map_session_data *sd) {
}
void HP_clif_pNpcNextClicked(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pNpcNextClicked_pre ) {
+ if (HPMHooks.count.HP_clif_pNpcNextClicked_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcNextClicked_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcNextClicked_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pNpcNextClicked_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19902,9 +23071,9 @@ void HP_clif_pNpcNextClicked(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pNpcNextClicked(fd, sd);
}
- if( HPMHooks.count.HP_clif_pNpcNextClicked_post ) {
+ if (HPMHooks.count.HP_clif_pNpcNextClicked_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcNextClicked_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcNextClicked_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pNpcNextClicked_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -19913,14 +23082,14 @@ void HP_clif_pNpcNextClicked(int fd, struct map_session_data *sd) {
}
void HP_clif_pNpcAmountInput(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pNpcAmountInput_pre ) {
+ if (HPMHooks.count.HP_clif_pNpcAmountInput_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcAmountInput_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcAmountInput_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pNpcAmountInput_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19928,9 +23097,9 @@ void HP_clif_pNpcAmountInput(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pNpcAmountInput(fd, sd);
}
- if( HPMHooks.count.HP_clif_pNpcAmountInput_post ) {
+ if (HPMHooks.count.HP_clif_pNpcAmountInput_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcAmountInput_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcAmountInput_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pNpcAmountInput_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -19939,14 +23108,14 @@ void HP_clif_pNpcAmountInput(int fd, struct map_session_data *sd) {
}
void HP_clif_pNpcStringInput(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pNpcStringInput_pre ) {
+ if (HPMHooks.count.HP_clif_pNpcStringInput_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcStringInput_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcStringInput_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pNpcStringInput_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19954,9 +23123,9 @@ void HP_clif_pNpcStringInput(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pNpcStringInput(fd, sd);
}
- if( HPMHooks.count.HP_clif_pNpcStringInput_post ) {
+ if (HPMHooks.count.HP_clif_pNpcStringInput_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcStringInput_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcStringInput_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pNpcStringInput_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -19965,14 +23134,14 @@ void HP_clif_pNpcStringInput(int fd, struct map_session_data *sd) {
}
void HP_clif_pNpcCloseClicked(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pNpcCloseClicked_pre ) {
+ if (HPMHooks.count.HP_clif_pNpcCloseClicked_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcCloseClicked_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcCloseClicked_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pNpcCloseClicked_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -19980,9 +23149,9 @@ void HP_clif_pNpcCloseClicked(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pNpcCloseClicked(fd, sd);
}
- if( HPMHooks.count.HP_clif_pNpcCloseClicked_post ) {
+ if (HPMHooks.count.HP_clif_pNpcCloseClicked_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcCloseClicked_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNpcCloseClicked_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pNpcCloseClicked_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -19991,14 +23160,14 @@ void HP_clif_pNpcCloseClicked(int fd, struct map_session_data *sd) {
}
void HP_clif_pItemIdentify(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pItemIdentify_pre ) {
+ if (HPMHooks.count.HP_clif_pItemIdentify_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pItemIdentify_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pItemIdentify_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pItemIdentify_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20006,9 +23175,9 @@ void HP_clif_pItemIdentify(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pItemIdentify(fd, sd);
}
- if( HPMHooks.count.HP_clif_pItemIdentify_post ) {
+ if (HPMHooks.count.HP_clif_pItemIdentify_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pItemIdentify_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pItemIdentify_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pItemIdentify_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20017,14 +23186,14 @@ void HP_clif_pItemIdentify(int fd, struct map_session_data *sd) {
}
void HP_clif_pSelectArrow(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pSelectArrow_pre ) {
+ if (HPMHooks.count.HP_clif_pSelectArrow_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSelectArrow_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSelectArrow_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pSelectArrow_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20032,9 +23201,9 @@ void HP_clif_pSelectArrow(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pSelectArrow(fd, sd);
}
- if( HPMHooks.count.HP_clif_pSelectArrow_post ) {
+ if (HPMHooks.count.HP_clif_pSelectArrow_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSelectArrow_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSelectArrow_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pSelectArrow_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20043,14 +23212,14 @@ void HP_clif_pSelectArrow(int fd, struct map_session_data *sd) {
}
void HP_clif_pAutoSpell(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pAutoSpell_pre ) {
+ if (HPMHooks.count.HP_clif_pAutoSpell_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAutoSpell_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAutoSpell_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pAutoSpell_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20058,9 +23227,9 @@ void HP_clif_pAutoSpell(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pAutoSpell(fd, sd);
}
- if( HPMHooks.count.HP_clif_pAutoSpell_post ) {
+ if (HPMHooks.count.HP_clif_pAutoSpell_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAutoSpell_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAutoSpell_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pAutoSpell_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20069,14 +23238,14 @@ void HP_clif_pAutoSpell(int fd, struct map_session_data *sd) {
}
void HP_clif_pUseCard(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pUseCard_pre ) {
+ if (HPMHooks.count.HP_clif_pUseCard_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseCard_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseCard_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pUseCard_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20084,9 +23253,9 @@ void HP_clif_pUseCard(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pUseCard(fd, sd);
}
- if( HPMHooks.count.HP_clif_pUseCard_post ) {
+ if (HPMHooks.count.HP_clif_pUseCard_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseCard_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUseCard_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pUseCard_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20095,14 +23264,14 @@ void HP_clif_pUseCard(int fd, struct map_session_data *sd) {
}
void HP_clif_pInsertCard(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pInsertCard_pre ) {
+ if (HPMHooks.count.HP_clif_pInsertCard_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pInsertCard_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pInsertCard_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pInsertCard_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20110,9 +23279,9 @@ void HP_clif_pInsertCard(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pInsertCard(fd, sd);
}
- if( HPMHooks.count.HP_clif_pInsertCard_post ) {
+ if (HPMHooks.count.HP_clif_pInsertCard_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pInsertCard_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pInsertCard_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pInsertCard_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20121,14 +23290,14 @@ void HP_clif_pInsertCard(int fd, struct map_session_data *sd) {
}
void HP_clif_pSolveCharName(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pSolveCharName_pre ) {
+ if (HPMHooks.count.HP_clif_pSolveCharName_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSolveCharName_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSolveCharName_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pSolveCharName_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20136,9 +23305,9 @@ void HP_clif_pSolveCharName(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pSolveCharName(fd, sd);
}
- if( HPMHooks.count.HP_clif_pSolveCharName_post ) {
+ if (HPMHooks.count.HP_clif_pSolveCharName_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSolveCharName_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSolveCharName_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pSolveCharName_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20147,14 +23316,14 @@ void HP_clif_pSolveCharName(int fd, struct map_session_data *sd) {
}
void HP_clif_pResetChar(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pResetChar_pre ) {
+ if (HPMHooks.count.HP_clif_pResetChar_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pResetChar_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pResetChar_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pResetChar_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20162,9 +23331,9 @@ void HP_clif_pResetChar(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pResetChar(fd, sd);
}
- if( HPMHooks.count.HP_clif_pResetChar_post ) {
+ if (HPMHooks.count.HP_clif_pResetChar_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pResetChar_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pResetChar_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pResetChar_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20173,14 +23342,14 @@ void HP_clif_pResetChar(int fd, struct map_session_data *sd) {
}
void HP_clif_pLocalBroadcast(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pLocalBroadcast_pre ) {
+ if (HPMHooks.count.HP_clif_pLocalBroadcast_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pLocalBroadcast_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pLocalBroadcast_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pLocalBroadcast_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20188,9 +23357,9 @@ void HP_clif_pLocalBroadcast(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pLocalBroadcast(fd, sd);
}
- if( HPMHooks.count.HP_clif_pLocalBroadcast_post ) {
+ if (HPMHooks.count.HP_clif_pLocalBroadcast_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pLocalBroadcast_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pLocalBroadcast_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pLocalBroadcast_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20199,14 +23368,14 @@ void HP_clif_pLocalBroadcast(int fd, struct map_session_data *sd) {
}
void HP_clif_pMoveToKafra(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pMoveToKafra_pre ) {
+ if (HPMHooks.count.HP_clif_pMoveToKafra_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMoveToKafra_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMoveToKafra_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pMoveToKafra_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20214,9 +23383,9 @@ void HP_clif_pMoveToKafra(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pMoveToKafra(fd, sd);
}
- if( HPMHooks.count.HP_clif_pMoveToKafra_post ) {
+ if (HPMHooks.count.HP_clif_pMoveToKafra_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMoveToKafra_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMoveToKafra_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pMoveToKafra_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20225,14 +23394,14 @@ void HP_clif_pMoveToKafra(int fd, struct map_session_data *sd) {
}
void HP_clif_pMoveFromKafra(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pMoveFromKafra_pre ) {
+ if (HPMHooks.count.HP_clif_pMoveFromKafra_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMoveFromKafra_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMoveFromKafra_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pMoveFromKafra_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20240,9 +23409,9 @@ void HP_clif_pMoveFromKafra(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pMoveFromKafra(fd, sd);
}
- if( HPMHooks.count.HP_clif_pMoveFromKafra_post ) {
+ if (HPMHooks.count.HP_clif_pMoveFromKafra_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMoveFromKafra_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMoveFromKafra_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pMoveFromKafra_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20251,14 +23420,14 @@ void HP_clif_pMoveFromKafra(int fd, struct map_session_data *sd) {
}
void HP_clif_pMoveToKafraFromCart(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pMoveToKafraFromCart_pre ) {
+ if (HPMHooks.count.HP_clif_pMoveToKafraFromCart_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMoveToKafraFromCart_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMoveToKafraFromCart_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pMoveToKafraFromCart_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20266,9 +23435,9 @@ void HP_clif_pMoveToKafraFromCart(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pMoveToKafraFromCart(fd, sd);
}
- if( HPMHooks.count.HP_clif_pMoveToKafraFromCart_post ) {
+ if (HPMHooks.count.HP_clif_pMoveToKafraFromCart_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMoveToKafraFromCart_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMoveToKafraFromCart_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pMoveToKafraFromCart_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20277,14 +23446,14 @@ void HP_clif_pMoveToKafraFromCart(int fd, struct map_session_data *sd) {
}
void HP_clif_pMoveFromKafraToCart(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pMoveFromKafraToCart_pre ) {
+ if (HPMHooks.count.HP_clif_pMoveFromKafraToCart_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMoveFromKafraToCart_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMoveFromKafraToCart_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pMoveFromKafraToCart_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20292,9 +23461,9 @@ void HP_clif_pMoveFromKafraToCart(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pMoveFromKafraToCart(fd, sd);
}
- if( HPMHooks.count.HP_clif_pMoveFromKafraToCart_post ) {
+ if (HPMHooks.count.HP_clif_pMoveFromKafraToCart_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMoveFromKafraToCart_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMoveFromKafraToCart_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pMoveFromKafraToCart_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20303,14 +23472,14 @@ void HP_clif_pMoveFromKafraToCart(int fd, struct map_session_data *sd) {
}
void HP_clif_pCloseKafra(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pCloseKafra_pre ) {
+ if (HPMHooks.count.HP_clif_pCloseKafra_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCloseKafra_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCloseKafra_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pCloseKafra_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20318,9 +23487,9 @@ void HP_clif_pCloseKafra(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pCloseKafra(fd, sd);
}
- if( HPMHooks.count.HP_clif_pCloseKafra_post ) {
+ if (HPMHooks.count.HP_clif_pCloseKafra_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCloseKafra_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCloseKafra_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pCloseKafra_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20329,14 +23498,14 @@ void HP_clif_pCloseKafra(int fd, struct map_session_data *sd) {
}
void HP_clif_pStoragePassword(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pStoragePassword_pre ) {
+ if (HPMHooks.count.HP_clif_pStoragePassword_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pStoragePassword_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pStoragePassword_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pStoragePassword_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20344,9 +23513,9 @@ void HP_clif_pStoragePassword(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pStoragePassword(fd, sd);
}
- if( HPMHooks.count.HP_clif_pStoragePassword_post ) {
+ if (HPMHooks.count.HP_clif_pStoragePassword_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pStoragePassword_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pStoragePassword_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pStoragePassword_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20355,14 +23524,14 @@ void HP_clif_pStoragePassword(int fd, struct map_session_data *sd) {
}
void HP_clif_pCreateParty(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pCreateParty_pre ) {
+ if (HPMHooks.count.HP_clif_pCreateParty_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCreateParty_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCreateParty_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pCreateParty_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20370,9 +23539,9 @@ void HP_clif_pCreateParty(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pCreateParty(fd, sd);
}
- if( HPMHooks.count.HP_clif_pCreateParty_post ) {
+ if (HPMHooks.count.HP_clif_pCreateParty_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCreateParty_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCreateParty_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pCreateParty_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20381,14 +23550,14 @@ void HP_clif_pCreateParty(int fd, struct map_session_data *sd) {
}
void HP_clif_pCreateParty2(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pCreateParty2_pre ) {
+ if (HPMHooks.count.HP_clif_pCreateParty2_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCreateParty2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCreateParty2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pCreateParty2_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20396,9 +23565,9 @@ void HP_clif_pCreateParty2(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pCreateParty2(fd, sd);
}
- if( HPMHooks.count.HP_clif_pCreateParty2_post ) {
+ if (HPMHooks.count.HP_clif_pCreateParty2_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCreateParty2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCreateParty2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pCreateParty2_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20407,14 +23576,14 @@ void HP_clif_pCreateParty2(int fd, struct map_session_data *sd) {
}
void HP_clif_pPartyInvite(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pPartyInvite_pre ) {
+ if (HPMHooks.count.HP_clif_pPartyInvite_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyInvite_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyInvite_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pPartyInvite_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20422,9 +23591,9 @@ void HP_clif_pPartyInvite(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pPartyInvite(fd, sd);
}
- if( HPMHooks.count.HP_clif_pPartyInvite_post ) {
+ if (HPMHooks.count.HP_clif_pPartyInvite_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyInvite_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyInvite_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pPartyInvite_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20433,14 +23602,14 @@ void HP_clif_pPartyInvite(int fd, struct map_session_data *sd) {
}
void HP_clif_pPartyInvite2(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pPartyInvite2_pre ) {
+ if (HPMHooks.count.HP_clif_pPartyInvite2_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyInvite2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyInvite2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pPartyInvite2_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20448,9 +23617,9 @@ void HP_clif_pPartyInvite2(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pPartyInvite2(fd, sd);
}
- if( HPMHooks.count.HP_clif_pPartyInvite2_post ) {
+ if (HPMHooks.count.HP_clif_pPartyInvite2_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyInvite2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyInvite2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pPartyInvite2_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20459,14 +23628,14 @@ void HP_clif_pPartyInvite2(int fd, struct map_session_data *sd) {
}
void HP_clif_pReplyPartyInvite(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pReplyPartyInvite_pre ) {
+ if (HPMHooks.count.HP_clif_pReplyPartyInvite_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReplyPartyInvite_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReplyPartyInvite_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pReplyPartyInvite_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20474,9 +23643,9 @@ void HP_clif_pReplyPartyInvite(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pReplyPartyInvite(fd, sd);
}
- if( HPMHooks.count.HP_clif_pReplyPartyInvite_post ) {
+ if (HPMHooks.count.HP_clif_pReplyPartyInvite_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReplyPartyInvite_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReplyPartyInvite_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pReplyPartyInvite_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20485,14 +23654,14 @@ void HP_clif_pReplyPartyInvite(int fd, struct map_session_data *sd) {
}
void HP_clif_pReplyPartyInvite2(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pReplyPartyInvite2_pre ) {
+ if (HPMHooks.count.HP_clif_pReplyPartyInvite2_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReplyPartyInvite2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReplyPartyInvite2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pReplyPartyInvite2_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20500,9 +23669,9 @@ void HP_clif_pReplyPartyInvite2(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pReplyPartyInvite2(fd, sd);
}
- if( HPMHooks.count.HP_clif_pReplyPartyInvite2_post ) {
+ if (HPMHooks.count.HP_clif_pReplyPartyInvite2_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReplyPartyInvite2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReplyPartyInvite2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pReplyPartyInvite2_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20511,14 +23680,14 @@ void HP_clif_pReplyPartyInvite2(int fd, struct map_session_data *sd) {
}
void HP_clif_pLeaveParty(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pLeaveParty_pre ) {
+ if (HPMHooks.count.HP_clif_pLeaveParty_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pLeaveParty_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pLeaveParty_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pLeaveParty_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20526,9 +23695,9 @@ void HP_clif_pLeaveParty(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pLeaveParty(fd, sd);
}
- if( HPMHooks.count.HP_clif_pLeaveParty_post ) {
+ if (HPMHooks.count.HP_clif_pLeaveParty_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pLeaveParty_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pLeaveParty_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pLeaveParty_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20537,14 +23706,14 @@ void HP_clif_pLeaveParty(int fd, struct map_session_data *sd) {
}
void HP_clif_pRemovePartyMember(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pRemovePartyMember_pre ) {
+ if (HPMHooks.count.HP_clif_pRemovePartyMember_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRemovePartyMember_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRemovePartyMember_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pRemovePartyMember_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20552,9 +23721,9 @@ void HP_clif_pRemovePartyMember(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pRemovePartyMember(fd, sd);
}
- if( HPMHooks.count.HP_clif_pRemovePartyMember_post ) {
+ if (HPMHooks.count.HP_clif_pRemovePartyMember_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRemovePartyMember_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRemovePartyMember_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pRemovePartyMember_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20563,14 +23732,14 @@ void HP_clif_pRemovePartyMember(int fd, struct map_session_data *sd) {
}
void HP_clif_pPartyChangeOption(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pPartyChangeOption_pre ) {
+ if (HPMHooks.count.HP_clif_pPartyChangeOption_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyChangeOption_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyChangeOption_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pPartyChangeOption_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20578,9 +23747,9 @@ void HP_clif_pPartyChangeOption(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pPartyChangeOption(fd, sd);
}
- if( HPMHooks.count.HP_clif_pPartyChangeOption_post ) {
+ if (HPMHooks.count.HP_clif_pPartyChangeOption_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyChangeOption_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyChangeOption_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pPartyChangeOption_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20589,14 +23758,14 @@ void HP_clif_pPartyChangeOption(int fd, struct map_session_data *sd) {
}
void HP_clif_pPartyMessage(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pPartyMessage_pre ) {
+ if (HPMHooks.count.HP_clif_pPartyMessage_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyMessage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyMessage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pPartyMessage_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20604,9 +23773,9 @@ void HP_clif_pPartyMessage(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pPartyMessage(fd, sd);
}
- if( HPMHooks.count.HP_clif_pPartyMessage_post ) {
+ if (HPMHooks.count.HP_clif_pPartyMessage_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyMessage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyMessage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pPartyMessage_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20615,14 +23784,14 @@ void HP_clif_pPartyMessage(int fd, struct map_session_data *sd) {
}
void HP_clif_pPartyChangeLeader(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pPartyChangeLeader_pre ) {
+ if (HPMHooks.count.HP_clif_pPartyChangeLeader_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyChangeLeader_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyChangeLeader_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pPartyChangeLeader_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20630,9 +23799,9 @@ void HP_clif_pPartyChangeLeader(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pPartyChangeLeader(fd, sd);
}
- if( HPMHooks.count.HP_clif_pPartyChangeLeader_post ) {
+ if (HPMHooks.count.HP_clif_pPartyChangeLeader_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyChangeLeader_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyChangeLeader_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pPartyChangeLeader_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20641,14 +23810,14 @@ void HP_clif_pPartyChangeLeader(int fd, struct map_session_data *sd) {
}
void HP_clif_pPartyBookingRegisterReq(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pPartyBookingRegisterReq_pre ) {
+ if (HPMHooks.count.HP_clif_pPartyBookingRegisterReq_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingRegisterReq_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingRegisterReq_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pPartyBookingRegisterReq_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20656,9 +23825,9 @@ void HP_clif_pPartyBookingRegisterReq(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pPartyBookingRegisterReq(fd, sd);
}
- if( HPMHooks.count.HP_clif_pPartyBookingRegisterReq_post ) {
+ if (HPMHooks.count.HP_clif_pPartyBookingRegisterReq_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingRegisterReq_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingRegisterReq_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pPartyBookingRegisterReq_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20667,14 +23836,14 @@ void HP_clif_pPartyBookingRegisterReq(int fd, struct map_session_data *sd) {
}
void HP_clif_pPartyBookingSearchReq(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pPartyBookingSearchReq_pre ) {
+ if (HPMHooks.count.HP_clif_pPartyBookingSearchReq_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingSearchReq_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingSearchReq_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pPartyBookingSearchReq_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20682,9 +23851,9 @@ void HP_clif_pPartyBookingSearchReq(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pPartyBookingSearchReq(fd, sd);
}
- if( HPMHooks.count.HP_clif_pPartyBookingSearchReq_post ) {
+ if (HPMHooks.count.HP_clif_pPartyBookingSearchReq_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingSearchReq_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingSearchReq_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pPartyBookingSearchReq_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20693,14 +23862,14 @@ void HP_clif_pPartyBookingSearchReq(int fd, struct map_session_data *sd) {
}
void HP_clif_pPartyBookingDeleteReq(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pPartyBookingDeleteReq_pre ) {
+ if (HPMHooks.count.HP_clif_pPartyBookingDeleteReq_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingDeleteReq_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingDeleteReq_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pPartyBookingDeleteReq_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20708,9 +23877,9 @@ void HP_clif_pPartyBookingDeleteReq(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pPartyBookingDeleteReq(fd, sd);
}
- if( HPMHooks.count.HP_clif_pPartyBookingDeleteReq_post ) {
+ if (HPMHooks.count.HP_clif_pPartyBookingDeleteReq_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingDeleteReq_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingDeleteReq_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pPartyBookingDeleteReq_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20719,14 +23888,14 @@ void HP_clif_pPartyBookingDeleteReq(int fd, struct map_session_data *sd) {
}
void HP_clif_pPartyBookingUpdateReq(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pPartyBookingUpdateReq_pre ) {
+ if (HPMHooks.count.HP_clif_pPartyBookingUpdateReq_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingUpdateReq_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingUpdateReq_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pPartyBookingUpdateReq_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20734,9 +23903,9 @@ void HP_clif_pPartyBookingUpdateReq(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pPartyBookingUpdateReq(fd, sd);
}
- if( HPMHooks.count.HP_clif_pPartyBookingUpdateReq_post ) {
+ if (HPMHooks.count.HP_clif_pPartyBookingUpdateReq_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingUpdateReq_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingUpdateReq_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pPartyBookingUpdateReq_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20745,14 +23914,14 @@ void HP_clif_pPartyBookingUpdateReq(int fd, struct map_session_data *sd) {
}
void HP_clif_pPartyRecruitRegisterReq(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pPartyRecruitRegisterReq_pre ) {
+ if (HPMHooks.count.HP_clif_pPartyRecruitRegisterReq_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyRecruitRegisterReq_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyRecruitRegisterReq_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pPartyRecruitRegisterReq_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20760,9 +23929,9 @@ void HP_clif_pPartyRecruitRegisterReq(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pPartyRecruitRegisterReq(fd, sd);
}
- if( HPMHooks.count.HP_clif_pPartyRecruitRegisterReq_post ) {
+ if (HPMHooks.count.HP_clif_pPartyRecruitRegisterReq_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyRecruitRegisterReq_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyRecruitRegisterReq_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pPartyRecruitRegisterReq_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20771,14 +23940,14 @@ void HP_clif_pPartyRecruitRegisterReq(int fd, struct map_session_data *sd) {
}
void HP_clif_pPartyRecruitSearchReq(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pPartyRecruitSearchReq_pre ) {
+ if (HPMHooks.count.HP_clif_pPartyRecruitSearchReq_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyRecruitSearchReq_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyRecruitSearchReq_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pPartyRecruitSearchReq_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20786,9 +23955,9 @@ void HP_clif_pPartyRecruitSearchReq(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pPartyRecruitSearchReq(fd, sd);
}
- if( HPMHooks.count.HP_clif_pPartyRecruitSearchReq_post ) {
+ if (HPMHooks.count.HP_clif_pPartyRecruitSearchReq_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyRecruitSearchReq_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyRecruitSearchReq_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pPartyRecruitSearchReq_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20797,14 +23966,14 @@ void HP_clif_pPartyRecruitSearchReq(int fd, struct map_session_data *sd) {
}
void HP_clif_pPartyRecruitDeleteReq(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pPartyRecruitDeleteReq_pre ) {
+ if (HPMHooks.count.HP_clif_pPartyRecruitDeleteReq_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyRecruitDeleteReq_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyRecruitDeleteReq_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pPartyRecruitDeleteReq_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20812,9 +23981,9 @@ void HP_clif_pPartyRecruitDeleteReq(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pPartyRecruitDeleteReq(fd, sd);
}
- if( HPMHooks.count.HP_clif_pPartyRecruitDeleteReq_post ) {
+ if (HPMHooks.count.HP_clif_pPartyRecruitDeleteReq_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyRecruitDeleteReq_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyRecruitDeleteReq_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pPartyRecruitDeleteReq_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20823,14 +23992,14 @@ void HP_clif_pPartyRecruitDeleteReq(int fd, struct map_session_data *sd) {
}
void HP_clif_pPartyRecruitUpdateReq(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pPartyRecruitUpdateReq_pre ) {
+ if (HPMHooks.count.HP_clif_pPartyRecruitUpdateReq_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyRecruitUpdateReq_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyRecruitUpdateReq_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pPartyRecruitUpdateReq_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20838,9 +24007,9 @@ void HP_clif_pPartyRecruitUpdateReq(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pPartyRecruitUpdateReq(fd, sd);
}
- if( HPMHooks.count.HP_clif_pPartyRecruitUpdateReq_post ) {
+ if (HPMHooks.count.HP_clif_pPartyRecruitUpdateReq_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyRecruitUpdateReq_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyRecruitUpdateReq_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pPartyRecruitUpdateReq_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20849,14 +24018,14 @@ void HP_clif_pPartyRecruitUpdateReq(int fd, struct map_session_data *sd) {
}
void HP_clif_pCloseVending(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pCloseVending_pre ) {
+ if (HPMHooks.count.HP_clif_pCloseVending_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCloseVending_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCloseVending_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pCloseVending_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20864,9 +24033,9 @@ void HP_clif_pCloseVending(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pCloseVending(fd, sd);
}
- if( HPMHooks.count.HP_clif_pCloseVending_post ) {
+ if (HPMHooks.count.HP_clif_pCloseVending_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCloseVending_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCloseVending_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pCloseVending_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20875,14 +24044,14 @@ void HP_clif_pCloseVending(int fd, struct map_session_data *sd) {
}
void HP_clif_pVendingListReq(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pVendingListReq_pre ) {
+ if (HPMHooks.count.HP_clif_pVendingListReq_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pVendingListReq_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pVendingListReq_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pVendingListReq_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20890,9 +24059,9 @@ void HP_clif_pVendingListReq(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pVendingListReq(fd, sd);
}
- if( HPMHooks.count.HP_clif_pVendingListReq_post ) {
+ if (HPMHooks.count.HP_clif_pVendingListReq_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pVendingListReq_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pVendingListReq_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pVendingListReq_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20901,14 +24070,14 @@ void HP_clif_pVendingListReq(int fd, struct map_session_data *sd) {
}
void HP_clif_pPurchaseReq(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pPurchaseReq_pre ) {
+ if (HPMHooks.count.HP_clif_pPurchaseReq_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPurchaseReq_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPurchaseReq_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pPurchaseReq_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20916,9 +24085,9 @@ void HP_clif_pPurchaseReq(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pPurchaseReq(fd, sd);
}
- if( HPMHooks.count.HP_clif_pPurchaseReq_post ) {
+ if (HPMHooks.count.HP_clif_pPurchaseReq_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPurchaseReq_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPurchaseReq_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pPurchaseReq_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20927,14 +24096,14 @@ void HP_clif_pPurchaseReq(int fd, struct map_session_data *sd) {
}
void HP_clif_pPurchaseReq2(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pPurchaseReq2_pre ) {
+ if (HPMHooks.count.HP_clif_pPurchaseReq2_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPurchaseReq2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPurchaseReq2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pPurchaseReq2_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20942,9 +24111,9 @@ void HP_clif_pPurchaseReq2(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pPurchaseReq2(fd, sd);
}
- if( HPMHooks.count.HP_clif_pPurchaseReq2_post ) {
+ if (HPMHooks.count.HP_clif_pPurchaseReq2_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPurchaseReq2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPurchaseReq2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pPurchaseReq2_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20953,14 +24122,14 @@ void HP_clif_pPurchaseReq2(int fd, struct map_session_data *sd) {
}
void HP_clif_pOpenVending(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pOpenVending_pre ) {
+ if (HPMHooks.count.HP_clif_pOpenVending_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pOpenVending_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pOpenVending_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pOpenVending_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20968,9 +24137,9 @@ void HP_clif_pOpenVending(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pOpenVending(fd, sd);
}
- if( HPMHooks.count.HP_clif_pOpenVending_post ) {
+ if (HPMHooks.count.HP_clif_pOpenVending_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pOpenVending_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pOpenVending_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pOpenVending_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -20979,14 +24148,14 @@ void HP_clif_pOpenVending(int fd, struct map_session_data *sd) {
}
void HP_clif_pCreateGuild(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pCreateGuild_pre ) {
+ if (HPMHooks.count.HP_clif_pCreateGuild_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCreateGuild_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCreateGuild_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pCreateGuild_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -20994,9 +24163,9 @@ void HP_clif_pCreateGuild(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pCreateGuild(fd, sd);
}
- if( HPMHooks.count.HP_clif_pCreateGuild_post ) {
+ if (HPMHooks.count.HP_clif_pCreateGuild_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCreateGuild_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCreateGuild_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pCreateGuild_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21005,14 +24174,14 @@ void HP_clif_pCreateGuild(int fd, struct map_session_data *sd) {
}
void HP_clif_pGuildCheckMaster(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGuildCheckMaster_pre ) {
+ if (HPMHooks.count.HP_clif_pGuildCheckMaster_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildCheckMaster_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildCheckMaster_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGuildCheckMaster_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21020,9 +24189,9 @@ void HP_clif_pGuildCheckMaster(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGuildCheckMaster(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGuildCheckMaster_post ) {
+ if (HPMHooks.count.HP_clif_pGuildCheckMaster_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildCheckMaster_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildCheckMaster_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGuildCheckMaster_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21031,14 +24200,14 @@ void HP_clif_pGuildCheckMaster(int fd, struct map_session_data *sd) {
}
void HP_clif_pGuildRequestInfo(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGuildRequestInfo_pre ) {
+ if (HPMHooks.count.HP_clif_pGuildRequestInfo_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildRequestInfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildRequestInfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGuildRequestInfo_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21046,9 +24215,9 @@ void HP_clif_pGuildRequestInfo(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGuildRequestInfo(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGuildRequestInfo_post ) {
+ if (HPMHooks.count.HP_clif_pGuildRequestInfo_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildRequestInfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildRequestInfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGuildRequestInfo_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21057,14 +24226,14 @@ void HP_clif_pGuildRequestInfo(int fd, struct map_session_data *sd) {
}
void HP_clif_pGuildChangePositionInfo(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGuildChangePositionInfo_pre ) {
+ if (HPMHooks.count.HP_clif_pGuildChangePositionInfo_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildChangePositionInfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildChangePositionInfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGuildChangePositionInfo_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21072,9 +24241,9 @@ void HP_clif_pGuildChangePositionInfo(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGuildChangePositionInfo(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGuildChangePositionInfo_post ) {
+ if (HPMHooks.count.HP_clif_pGuildChangePositionInfo_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildChangePositionInfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildChangePositionInfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGuildChangePositionInfo_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21083,14 +24252,14 @@ void HP_clif_pGuildChangePositionInfo(int fd, struct map_session_data *sd) {
}
void HP_clif_pGuildChangeMemberPosition(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGuildChangeMemberPosition_pre ) {
+ if (HPMHooks.count.HP_clif_pGuildChangeMemberPosition_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildChangeMemberPosition_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildChangeMemberPosition_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGuildChangeMemberPosition_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21098,9 +24267,9 @@ void HP_clif_pGuildChangeMemberPosition(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGuildChangeMemberPosition(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGuildChangeMemberPosition_post ) {
+ if (HPMHooks.count.HP_clif_pGuildChangeMemberPosition_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildChangeMemberPosition_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildChangeMemberPosition_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGuildChangeMemberPosition_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21109,14 +24278,14 @@ void HP_clif_pGuildChangeMemberPosition(int fd, struct map_session_data *sd) {
}
void HP_clif_pGuildRequestEmblem(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGuildRequestEmblem_pre ) {
+ if (HPMHooks.count.HP_clif_pGuildRequestEmblem_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildRequestEmblem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildRequestEmblem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGuildRequestEmblem_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21124,9 +24293,9 @@ void HP_clif_pGuildRequestEmblem(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGuildRequestEmblem(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGuildRequestEmblem_post ) {
+ if (HPMHooks.count.HP_clif_pGuildRequestEmblem_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildRequestEmblem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildRequestEmblem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGuildRequestEmblem_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21135,14 +24304,14 @@ void HP_clif_pGuildRequestEmblem(int fd, struct map_session_data *sd) {
}
void HP_clif_pGuildChangeEmblem(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGuildChangeEmblem_pre ) {
+ if (HPMHooks.count.HP_clif_pGuildChangeEmblem_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildChangeEmblem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildChangeEmblem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGuildChangeEmblem_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21150,9 +24319,9 @@ void HP_clif_pGuildChangeEmblem(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGuildChangeEmblem(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGuildChangeEmblem_post ) {
+ if (HPMHooks.count.HP_clif_pGuildChangeEmblem_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildChangeEmblem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildChangeEmblem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGuildChangeEmblem_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21161,14 +24330,14 @@ void HP_clif_pGuildChangeEmblem(int fd, struct map_session_data *sd) {
}
void HP_clif_pGuildChangeNotice(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGuildChangeNotice_pre ) {
+ if (HPMHooks.count.HP_clif_pGuildChangeNotice_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildChangeNotice_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildChangeNotice_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGuildChangeNotice_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21176,9 +24345,9 @@ void HP_clif_pGuildChangeNotice(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGuildChangeNotice(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGuildChangeNotice_post ) {
+ if (HPMHooks.count.HP_clif_pGuildChangeNotice_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildChangeNotice_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildChangeNotice_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGuildChangeNotice_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21187,14 +24356,14 @@ void HP_clif_pGuildChangeNotice(int fd, struct map_session_data *sd) {
}
void HP_clif_pGuildInvite(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGuildInvite_pre ) {
+ if (HPMHooks.count.HP_clif_pGuildInvite_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildInvite_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildInvite_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGuildInvite_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21202,9 +24371,9 @@ void HP_clif_pGuildInvite(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGuildInvite(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGuildInvite_post ) {
+ if (HPMHooks.count.HP_clif_pGuildInvite_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildInvite_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildInvite_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGuildInvite_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21213,14 +24382,14 @@ void HP_clif_pGuildInvite(int fd, struct map_session_data *sd) {
}
void HP_clif_pGuildReplyInvite(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGuildReplyInvite_pre ) {
+ if (HPMHooks.count.HP_clif_pGuildReplyInvite_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildReplyInvite_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildReplyInvite_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGuildReplyInvite_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21228,9 +24397,9 @@ void HP_clif_pGuildReplyInvite(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGuildReplyInvite(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGuildReplyInvite_post ) {
+ if (HPMHooks.count.HP_clif_pGuildReplyInvite_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildReplyInvite_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildReplyInvite_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGuildReplyInvite_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21239,14 +24408,14 @@ void HP_clif_pGuildReplyInvite(int fd, struct map_session_data *sd) {
}
void HP_clif_pGuildLeave(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGuildLeave_pre ) {
+ if (HPMHooks.count.HP_clif_pGuildLeave_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildLeave_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildLeave_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGuildLeave_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21254,9 +24423,9 @@ void HP_clif_pGuildLeave(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGuildLeave(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGuildLeave_post ) {
+ if (HPMHooks.count.HP_clif_pGuildLeave_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildLeave_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildLeave_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGuildLeave_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21265,14 +24434,14 @@ void HP_clif_pGuildLeave(int fd, struct map_session_data *sd) {
}
void HP_clif_pGuildExpulsion(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGuildExpulsion_pre ) {
+ if (HPMHooks.count.HP_clif_pGuildExpulsion_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildExpulsion_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildExpulsion_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGuildExpulsion_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21280,9 +24449,9 @@ void HP_clif_pGuildExpulsion(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGuildExpulsion(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGuildExpulsion_post ) {
+ if (HPMHooks.count.HP_clif_pGuildExpulsion_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildExpulsion_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildExpulsion_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGuildExpulsion_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21291,14 +24460,14 @@ void HP_clif_pGuildExpulsion(int fd, struct map_session_data *sd) {
}
void HP_clif_pGuildMessage(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGuildMessage_pre ) {
+ if (HPMHooks.count.HP_clif_pGuildMessage_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildMessage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildMessage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGuildMessage_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21306,9 +24475,9 @@ void HP_clif_pGuildMessage(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGuildMessage(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGuildMessage_post ) {
+ if (HPMHooks.count.HP_clif_pGuildMessage_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildMessage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildMessage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGuildMessage_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21317,14 +24486,14 @@ void HP_clif_pGuildMessage(int fd, struct map_session_data *sd) {
}
void HP_clif_pGuildRequestAlliance(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGuildRequestAlliance_pre ) {
+ if (HPMHooks.count.HP_clif_pGuildRequestAlliance_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildRequestAlliance_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildRequestAlliance_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGuildRequestAlliance_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21332,9 +24501,9 @@ void HP_clif_pGuildRequestAlliance(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGuildRequestAlliance(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGuildRequestAlliance_post ) {
+ if (HPMHooks.count.HP_clif_pGuildRequestAlliance_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildRequestAlliance_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildRequestAlliance_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGuildRequestAlliance_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21343,14 +24512,14 @@ void HP_clif_pGuildRequestAlliance(int fd, struct map_session_data *sd) {
}
void HP_clif_pGuildReplyAlliance(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGuildReplyAlliance_pre ) {
+ if (HPMHooks.count.HP_clif_pGuildReplyAlliance_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildReplyAlliance_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildReplyAlliance_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGuildReplyAlliance_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21358,9 +24527,9 @@ void HP_clif_pGuildReplyAlliance(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGuildReplyAlliance(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGuildReplyAlliance_post ) {
+ if (HPMHooks.count.HP_clif_pGuildReplyAlliance_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildReplyAlliance_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildReplyAlliance_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGuildReplyAlliance_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21369,14 +24538,14 @@ void HP_clif_pGuildReplyAlliance(int fd, struct map_session_data *sd) {
}
void HP_clif_pGuildDelAlliance(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGuildDelAlliance_pre ) {
+ if (HPMHooks.count.HP_clif_pGuildDelAlliance_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildDelAlliance_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildDelAlliance_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGuildDelAlliance_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21384,9 +24553,9 @@ void HP_clif_pGuildDelAlliance(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGuildDelAlliance(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGuildDelAlliance_post ) {
+ if (HPMHooks.count.HP_clif_pGuildDelAlliance_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildDelAlliance_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildDelAlliance_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGuildDelAlliance_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21395,14 +24564,14 @@ void HP_clif_pGuildDelAlliance(int fd, struct map_session_data *sd) {
}
void HP_clif_pGuildOpposition(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGuildOpposition_pre ) {
+ if (HPMHooks.count.HP_clif_pGuildOpposition_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildOpposition_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildOpposition_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGuildOpposition_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21410,9 +24579,9 @@ void HP_clif_pGuildOpposition(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGuildOpposition(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGuildOpposition_post ) {
+ if (HPMHooks.count.HP_clif_pGuildOpposition_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildOpposition_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildOpposition_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGuildOpposition_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21421,14 +24590,14 @@ void HP_clif_pGuildOpposition(int fd, struct map_session_data *sd) {
}
void HP_clif_pGuildBreak(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGuildBreak_pre ) {
+ if (HPMHooks.count.HP_clif_pGuildBreak_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildBreak_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildBreak_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGuildBreak_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21436,9 +24605,9 @@ void HP_clif_pGuildBreak(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGuildBreak(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGuildBreak_post ) {
+ if (HPMHooks.count.HP_clif_pGuildBreak_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildBreak_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildBreak_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGuildBreak_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21447,14 +24616,14 @@ void HP_clif_pGuildBreak(int fd, struct map_session_data *sd) {
}
void HP_clif_pPetMenu(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pPetMenu_pre ) {
+ if (HPMHooks.count.HP_clif_pPetMenu_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPetMenu_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPetMenu_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pPetMenu_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21462,9 +24631,9 @@ void HP_clif_pPetMenu(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pPetMenu(fd, sd);
}
- if( HPMHooks.count.HP_clif_pPetMenu_post ) {
+ if (HPMHooks.count.HP_clif_pPetMenu_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPetMenu_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPetMenu_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pPetMenu_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21473,14 +24642,14 @@ void HP_clif_pPetMenu(int fd, struct map_session_data *sd) {
}
void HP_clif_pCatchPet(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pCatchPet_pre ) {
+ if (HPMHooks.count.HP_clif_pCatchPet_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCatchPet_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCatchPet_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pCatchPet_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21488,9 +24657,9 @@ void HP_clif_pCatchPet(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pCatchPet(fd, sd);
}
- if( HPMHooks.count.HP_clif_pCatchPet_post ) {
+ if (HPMHooks.count.HP_clif_pCatchPet_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCatchPet_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCatchPet_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pCatchPet_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21499,14 +24668,14 @@ void HP_clif_pCatchPet(int fd, struct map_session_data *sd) {
}
void HP_clif_pSelectEgg(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pSelectEgg_pre ) {
+ if (HPMHooks.count.HP_clif_pSelectEgg_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSelectEgg_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSelectEgg_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pSelectEgg_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21514,9 +24683,9 @@ void HP_clif_pSelectEgg(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pSelectEgg(fd, sd);
}
- if( HPMHooks.count.HP_clif_pSelectEgg_post ) {
+ if (HPMHooks.count.HP_clif_pSelectEgg_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSelectEgg_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSelectEgg_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pSelectEgg_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21525,14 +24694,14 @@ void HP_clif_pSelectEgg(int fd, struct map_session_data *sd) {
}
void HP_clif_pSendEmotion(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pSendEmotion_pre ) {
+ if (HPMHooks.count.HP_clif_pSendEmotion_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSendEmotion_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSendEmotion_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pSendEmotion_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21540,9 +24709,9 @@ void HP_clif_pSendEmotion(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pSendEmotion(fd, sd);
}
- if( HPMHooks.count.HP_clif_pSendEmotion_post ) {
+ if (HPMHooks.count.HP_clif_pSendEmotion_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSendEmotion_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSendEmotion_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pSendEmotion_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21551,14 +24720,14 @@ void HP_clif_pSendEmotion(int fd, struct map_session_data *sd) {
}
void HP_clif_pChangePetName(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pChangePetName_pre ) {
+ if (HPMHooks.count.HP_clif_pChangePetName_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChangePetName_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChangePetName_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pChangePetName_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21566,9 +24735,9 @@ void HP_clif_pChangePetName(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pChangePetName(fd, sd);
}
- if( HPMHooks.count.HP_clif_pChangePetName_post ) {
+ if (HPMHooks.count.HP_clif_pChangePetName_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChangePetName_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChangePetName_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pChangePetName_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21577,14 +24746,14 @@ void HP_clif_pChangePetName(int fd, struct map_session_data *sd) {
}
void HP_clif_pGMKick(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGMKick_pre ) {
+ if (HPMHooks.count.HP_clif_pGMKick_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMKick_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMKick_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGMKick_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21592,9 +24761,9 @@ void HP_clif_pGMKick(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGMKick(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGMKick_post ) {
+ if (HPMHooks.count.HP_clif_pGMKick_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMKick_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMKick_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGMKick_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21603,14 +24772,14 @@ void HP_clif_pGMKick(int fd, struct map_session_data *sd) {
}
void HP_clif_pGMKickAll(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGMKickAll_pre ) {
+ if (HPMHooks.count.HP_clif_pGMKickAll_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMKickAll_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMKickAll_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGMKickAll_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21618,9 +24787,9 @@ void HP_clif_pGMKickAll(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGMKickAll(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGMKickAll_post ) {
+ if (HPMHooks.count.HP_clif_pGMKickAll_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMKickAll_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMKickAll_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGMKickAll_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21629,14 +24798,14 @@ void HP_clif_pGMKickAll(int fd, struct map_session_data *sd) {
}
void HP_clif_pGMShift(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGMShift_pre ) {
+ if (HPMHooks.count.HP_clif_pGMShift_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMShift_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMShift_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGMShift_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21644,9 +24813,9 @@ void HP_clif_pGMShift(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGMShift(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGMShift_post ) {
+ if (HPMHooks.count.HP_clif_pGMShift_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMShift_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMShift_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGMShift_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21655,14 +24824,14 @@ void HP_clif_pGMShift(int fd, struct map_session_data *sd) {
}
void HP_clif_pGMRemove2(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGMRemove2_pre ) {
+ if (HPMHooks.count.HP_clif_pGMRemove2_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMRemove2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMRemove2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGMRemove2_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21670,9 +24839,9 @@ void HP_clif_pGMRemove2(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGMRemove2(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGMRemove2_post ) {
+ if (HPMHooks.count.HP_clif_pGMRemove2_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMRemove2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMRemove2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGMRemove2_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21681,14 +24850,14 @@ void HP_clif_pGMRemove2(int fd, struct map_session_data *sd) {
}
void HP_clif_pGMRecall(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGMRecall_pre ) {
+ if (HPMHooks.count.HP_clif_pGMRecall_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMRecall_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMRecall_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGMRecall_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21696,9 +24865,9 @@ void HP_clif_pGMRecall(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGMRecall(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGMRecall_post ) {
+ if (HPMHooks.count.HP_clif_pGMRecall_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMRecall_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMRecall_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGMRecall_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21707,14 +24876,14 @@ void HP_clif_pGMRecall(int fd, struct map_session_data *sd) {
}
void HP_clif_pGMRecall2(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGMRecall2_pre ) {
+ if (HPMHooks.count.HP_clif_pGMRecall2_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMRecall2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMRecall2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGMRecall2_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21722,9 +24891,9 @@ void HP_clif_pGMRecall2(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGMRecall2(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGMRecall2_post ) {
+ if (HPMHooks.count.HP_clif_pGMRecall2_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMRecall2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMRecall2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGMRecall2_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21733,14 +24902,14 @@ void HP_clif_pGMRecall2(int fd, struct map_session_data *sd) {
}
void HP_clif_pGM_Monster_Item(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGM_Monster_Item_pre ) {
+ if (HPMHooks.count.HP_clif_pGM_Monster_Item_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGM_Monster_Item_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGM_Monster_Item_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGM_Monster_Item_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21748,9 +24917,9 @@ void HP_clif_pGM_Monster_Item(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGM_Monster_Item(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGM_Monster_Item_post ) {
+ if (HPMHooks.count.HP_clif_pGM_Monster_Item_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGM_Monster_Item_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGM_Monster_Item_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGM_Monster_Item_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21759,14 +24928,14 @@ void HP_clif_pGM_Monster_Item(int fd, struct map_session_data *sd) {
}
void HP_clif_pGMHide(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGMHide_pre ) {
+ if (HPMHooks.count.HP_clif_pGMHide_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMHide_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMHide_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGMHide_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21774,9 +24943,9 @@ void HP_clif_pGMHide(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGMHide(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGMHide_post ) {
+ if (HPMHooks.count.HP_clif_pGMHide_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMHide_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMHide_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGMHide_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21785,14 +24954,14 @@ void HP_clif_pGMHide(int fd, struct map_session_data *sd) {
}
void HP_clif_pGMReqNoChat(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGMReqNoChat_pre ) {
+ if (HPMHooks.count.HP_clif_pGMReqNoChat_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMReqNoChat_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMReqNoChat_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGMReqNoChat_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21800,9 +24969,9 @@ void HP_clif_pGMReqNoChat(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGMReqNoChat(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGMReqNoChat_post ) {
+ if (HPMHooks.count.HP_clif_pGMReqNoChat_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMReqNoChat_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMReqNoChat_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGMReqNoChat_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21811,14 +24980,14 @@ void HP_clif_pGMReqNoChat(int fd, struct map_session_data *sd) {
}
void HP_clif_pGMRc(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGMRc_pre ) {
+ if (HPMHooks.count.HP_clif_pGMRc_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMRc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMRc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGMRc_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21826,9 +24995,9 @@ void HP_clif_pGMRc(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGMRc(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGMRc_post ) {
+ if (HPMHooks.count.HP_clif_pGMRc_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMRc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMRc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGMRc_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21837,14 +25006,14 @@ void HP_clif_pGMRc(int fd, struct map_session_data *sd) {
}
void HP_clif_pGMReqAccountName(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGMReqAccountName_pre ) {
+ if (HPMHooks.count.HP_clif_pGMReqAccountName_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMReqAccountName_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMReqAccountName_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGMReqAccountName_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21852,9 +25021,9 @@ void HP_clif_pGMReqAccountName(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGMReqAccountName(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGMReqAccountName_post ) {
+ if (HPMHooks.count.HP_clif_pGMReqAccountName_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMReqAccountName_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMReqAccountName_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGMReqAccountName_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21863,14 +25032,14 @@ void HP_clif_pGMReqAccountName(int fd, struct map_session_data *sd) {
}
void HP_clif_pGMChangeMapType(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGMChangeMapType_pre ) {
+ if (HPMHooks.count.HP_clif_pGMChangeMapType_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMChangeMapType_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMChangeMapType_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGMChangeMapType_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21878,9 +25047,9 @@ void HP_clif_pGMChangeMapType(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGMChangeMapType(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGMChangeMapType_post ) {
+ if (HPMHooks.count.HP_clif_pGMChangeMapType_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMChangeMapType_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMChangeMapType_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGMChangeMapType_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21889,14 +25058,14 @@ void HP_clif_pGMChangeMapType(int fd, struct map_session_data *sd) {
}
void HP_clif_pGMFullStrip(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGMFullStrip_pre ) {
+ if (HPMHooks.count.HP_clif_pGMFullStrip_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMFullStrip_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMFullStrip_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGMFullStrip_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21904,9 +25073,9 @@ void HP_clif_pGMFullStrip(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGMFullStrip(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGMFullStrip_post ) {
+ if (HPMHooks.count.HP_clif_pGMFullStrip_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMFullStrip_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGMFullStrip_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGMFullStrip_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21915,14 +25084,14 @@ void HP_clif_pGMFullStrip(int fd, struct map_session_data *sd) {
}
void HP_clif_pPMIgnore(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pPMIgnore_pre ) {
+ if (HPMHooks.count.HP_clif_pPMIgnore_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPMIgnore_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPMIgnore_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pPMIgnore_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21930,9 +25099,9 @@ void HP_clif_pPMIgnore(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pPMIgnore(fd, sd);
}
- if( HPMHooks.count.HP_clif_pPMIgnore_post ) {
+ if (HPMHooks.count.HP_clif_pPMIgnore_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPMIgnore_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPMIgnore_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pPMIgnore_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21941,14 +25110,14 @@ void HP_clif_pPMIgnore(int fd, struct map_session_data *sd) {
}
void HP_clif_pPMIgnoreAll(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pPMIgnoreAll_pre ) {
+ if (HPMHooks.count.HP_clif_pPMIgnoreAll_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPMIgnoreAll_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPMIgnoreAll_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pPMIgnoreAll_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21956,9 +25125,9 @@ void HP_clif_pPMIgnoreAll(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pPMIgnoreAll(fd, sd);
}
- if( HPMHooks.count.HP_clif_pPMIgnoreAll_post ) {
+ if (HPMHooks.count.HP_clif_pPMIgnoreAll_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPMIgnoreAll_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPMIgnoreAll_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pPMIgnoreAll_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21967,14 +25136,14 @@ void HP_clif_pPMIgnoreAll(int fd, struct map_session_data *sd) {
}
void HP_clif_pPMIgnoreList(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pPMIgnoreList_pre ) {
+ if (HPMHooks.count.HP_clif_pPMIgnoreList_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPMIgnoreList_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPMIgnoreList_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pPMIgnoreList_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -21982,9 +25151,9 @@ void HP_clif_pPMIgnoreList(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pPMIgnoreList(fd, sd);
}
- if( HPMHooks.count.HP_clif_pPMIgnoreList_post ) {
+ if (HPMHooks.count.HP_clif_pPMIgnoreList_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPMIgnoreList_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPMIgnoreList_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pPMIgnoreList_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -21993,14 +25162,14 @@ void HP_clif_pPMIgnoreList(int fd, struct map_session_data *sd) {
}
void HP_clif_pNoviceDoriDori(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pNoviceDoriDori_pre ) {
+ if (HPMHooks.count.HP_clif_pNoviceDoriDori_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNoviceDoriDori_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNoviceDoriDori_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pNoviceDoriDori_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22008,9 +25177,9 @@ void HP_clif_pNoviceDoriDori(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pNoviceDoriDori(fd, sd);
}
- if( HPMHooks.count.HP_clif_pNoviceDoriDori_post ) {
+ if (HPMHooks.count.HP_clif_pNoviceDoriDori_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNoviceDoriDori_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNoviceDoriDori_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pNoviceDoriDori_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22019,14 +25188,14 @@ void HP_clif_pNoviceDoriDori(int fd, struct map_session_data *sd) {
}
void HP_clif_pNoviceExplosionSpirits(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pNoviceExplosionSpirits_pre ) {
+ if (HPMHooks.count.HP_clif_pNoviceExplosionSpirits_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNoviceExplosionSpirits_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNoviceExplosionSpirits_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pNoviceExplosionSpirits_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22034,9 +25203,9 @@ void HP_clif_pNoviceExplosionSpirits(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pNoviceExplosionSpirits(fd, sd);
}
- if( HPMHooks.count.HP_clif_pNoviceExplosionSpirits_post ) {
+ if (HPMHooks.count.HP_clif_pNoviceExplosionSpirits_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNoviceExplosionSpirits_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNoviceExplosionSpirits_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pNoviceExplosionSpirits_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22045,14 +25214,14 @@ void HP_clif_pNoviceExplosionSpirits(int fd, struct map_session_data *sd) {
}
void HP_clif_pFriendsListAdd(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pFriendsListAdd_pre ) {
+ if (HPMHooks.count.HP_clif_pFriendsListAdd_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pFriendsListAdd_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pFriendsListAdd_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pFriendsListAdd_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22060,9 +25229,9 @@ void HP_clif_pFriendsListAdd(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pFriendsListAdd(fd, sd);
}
- if( HPMHooks.count.HP_clif_pFriendsListAdd_post ) {
+ if (HPMHooks.count.HP_clif_pFriendsListAdd_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pFriendsListAdd_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pFriendsListAdd_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pFriendsListAdd_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22071,14 +25240,14 @@ void HP_clif_pFriendsListAdd(int fd, struct map_session_data *sd) {
}
void HP_clif_pFriendsListReply(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pFriendsListReply_pre ) {
+ if (HPMHooks.count.HP_clif_pFriendsListReply_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pFriendsListReply_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pFriendsListReply_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pFriendsListReply_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22086,9 +25255,9 @@ void HP_clif_pFriendsListReply(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pFriendsListReply(fd, sd);
}
- if( HPMHooks.count.HP_clif_pFriendsListReply_post ) {
+ if (HPMHooks.count.HP_clif_pFriendsListReply_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pFriendsListReply_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pFriendsListReply_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pFriendsListReply_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22097,14 +25266,14 @@ void HP_clif_pFriendsListReply(int fd, struct map_session_data *sd) {
}
void HP_clif_pFriendsListRemove(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pFriendsListRemove_pre ) {
+ if (HPMHooks.count.HP_clif_pFriendsListRemove_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pFriendsListRemove_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pFriendsListRemove_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pFriendsListRemove_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22112,9 +25281,9 @@ void HP_clif_pFriendsListRemove(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pFriendsListRemove(fd, sd);
}
- if( HPMHooks.count.HP_clif_pFriendsListRemove_post ) {
+ if (HPMHooks.count.HP_clif_pFriendsListRemove_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pFriendsListRemove_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pFriendsListRemove_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pFriendsListRemove_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22123,14 +25292,14 @@ void HP_clif_pFriendsListRemove(int fd, struct map_session_data *sd) {
}
void HP_clif_pPVPInfo(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pPVPInfo_pre ) {
+ if (HPMHooks.count.HP_clif_pPVPInfo_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPVPInfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPVPInfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pPVPInfo_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22138,9 +25307,9 @@ void HP_clif_pPVPInfo(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pPVPInfo(fd, sd);
}
- if( HPMHooks.count.HP_clif_pPVPInfo_post ) {
+ if (HPMHooks.count.HP_clif_pPVPInfo_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPVPInfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPVPInfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pPVPInfo_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22149,14 +25318,14 @@ void HP_clif_pPVPInfo(int fd, struct map_session_data *sd) {
}
void HP_clif_pBlacksmith(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pBlacksmith_pre ) {
+ if (HPMHooks.count.HP_clif_pBlacksmith_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBlacksmith_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBlacksmith_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pBlacksmith_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22164,9 +25333,9 @@ void HP_clif_pBlacksmith(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pBlacksmith(fd, sd);
}
- if( HPMHooks.count.HP_clif_pBlacksmith_post ) {
+ if (HPMHooks.count.HP_clif_pBlacksmith_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBlacksmith_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBlacksmith_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pBlacksmith_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22175,14 +25344,14 @@ void HP_clif_pBlacksmith(int fd, struct map_session_data *sd) {
}
void HP_clif_pAlchemist(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pAlchemist_pre ) {
+ if (HPMHooks.count.HP_clif_pAlchemist_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAlchemist_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAlchemist_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pAlchemist_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22190,9 +25359,9 @@ void HP_clif_pAlchemist(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pAlchemist(fd, sd);
}
- if( HPMHooks.count.HP_clif_pAlchemist_post ) {
+ if (HPMHooks.count.HP_clif_pAlchemist_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAlchemist_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAlchemist_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pAlchemist_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22201,14 +25370,14 @@ void HP_clif_pAlchemist(int fd, struct map_session_data *sd) {
}
void HP_clif_pTaekwon(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pTaekwon_pre ) {
+ if (HPMHooks.count.HP_clif_pTaekwon_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTaekwon_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTaekwon_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pTaekwon_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22216,9 +25385,9 @@ void HP_clif_pTaekwon(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pTaekwon(fd, sd);
}
- if( HPMHooks.count.HP_clif_pTaekwon_post ) {
+ if (HPMHooks.count.HP_clif_pTaekwon_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTaekwon_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pTaekwon_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pTaekwon_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22227,14 +25396,14 @@ void HP_clif_pTaekwon(int fd, struct map_session_data *sd) {
}
void HP_clif_pRankingPk(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pRankingPk_pre ) {
+ if (HPMHooks.count.HP_clif_pRankingPk_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRankingPk_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRankingPk_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pRankingPk_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22242,9 +25411,9 @@ void HP_clif_pRankingPk(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pRankingPk(fd, sd);
}
- if( HPMHooks.count.HP_clif_pRankingPk_post ) {
+ if (HPMHooks.count.HP_clif_pRankingPk_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRankingPk_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRankingPk_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pRankingPk_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22253,14 +25422,14 @@ void HP_clif_pRankingPk(int fd, struct map_session_data *sd) {
}
void HP_clif_pFeelSaveOk(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pFeelSaveOk_pre ) {
+ if (HPMHooks.count.HP_clif_pFeelSaveOk_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pFeelSaveOk_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pFeelSaveOk_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pFeelSaveOk_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22268,9 +25437,9 @@ void HP_clif_pFeelSaveOk(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pFeelSaveOk(fd, sd);
}
- if( HPMHooks.count.HP_clif_pFeelSaveOk_post ) {
+ if (HPMHooks.count.HP_clif_pFeelSaveOk_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pFeelSaveOk_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pFeelSaveOk_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pFeelSaveOk_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22279,14 +25448,14 @@ void HP_clif_pFeelSaveOk(int fd, struct map_session_data *sd) {
}
void HP_clif_pChangeHomunculusName(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pChangeHomunculusName_pre ) {
+ if (HPMHooks.count.HP_clif_pChangeHomunculusName_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChangeHomunculusName_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChangeHomunculusName_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pChangeHomunculusName_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22294,9 +25463,9 @@ void HP_clif_pChangeHomunculusName(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pChangeHomunculusName(fd, sd);
}
- if( HPMHooks.count.HP_clif_pChangeHomunculusName_post ) {
+ if (HPMHooks.count.HP_clif_pChangeHomunculusName_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChangeHomunculusName_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChangeHomunculusName_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pChangeHomunculusName_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22305,14 +25474,14 @@ void HP_clif_pChangeHomunculusName(int fd, struct map_session_data *sd) {
}
void HP_clif_pHomMoveToMaster(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pHomMoveToMaster_pre ) {
+ if (HPMHooks.count.HP_clif_pHomMoveToMaster_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pHomMoveToMaster_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pHomMoveToMaster_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pHomMoveToMaster_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22320,9 +25489,9 @@ void HP_clif_pHomMoveToMaster(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pHomMoveToMaster(fd, sd);
}
- if( HPMHooks.count.HP_clif_pHomMoveToMaster_post ) {
+ if (HPMHooks.count.HP_clif_pHomMoveToMaster_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pHomMoveToMaster_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pHomMoveToMaster_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pHomMoveToMaster_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22331,14 +25500,14 @@ void HP_clif_pHomMoveToMaster(int fd, struct map_session_data *sd) {
}
void HP_clif_pHomMoveTo(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pHomMoveTo_pre ) {
+ if (HPMHooks.count.HP_clif_pHomMoveTo_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pHomMoveTo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pHomMoveTo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pHomMoveTo_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22346,9 +25515,9 @@ void HP_clif_pHomMoveTo(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pHomMoveTo(fd, sd);
}
- if( HPMHooks.count.HP_clif_pHomMoveTo_post ) {
+ if (HPMHooks.count.HP_clif_pHomMoveTo_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pHomMoveTo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pHomMoveTo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pHomMoveTo_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22357,14 +25526,14 @@ void HP_clif_pHomMoveTo(int fd, struct map_session_data *sd) {
}
void HP_clif_pHomAttack(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pHomAttack_pre ) {
+ if (HPMHooks.count.HP_clif_pHomAttack_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pHomAttack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pHomAttack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pHomAttack_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22372,9 +25541,9 @@ void HP_clif_pHomAttack(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pHomAttack(fd, sd);
}
- if( HPMHooks.count.HP_clif_pHomAttack_post ) {
+ if (HPMHooks.count.HP_clif_pHomAttack_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pHomAttack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pHomAttack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pHomAttack_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22383,14 +25552,14 @@ void HP_clif_pHomAttack(int fd, struct map_session_data *sd) {
}
void HP_clif_pHomMenu(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pHomMenu_pre ) {
+ if (HPMHooks.count.HP_clif_pHomMenu_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pHomMenu_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pHomMenu_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pHomMenu_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22398,9 +25567,9 @@ void HP_clif_pHomMenu(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pHomMenu(fd, sd);
}
- if( HPMHooks.count.HP_clif_pHomMenu_post ) {
+ if (HPMHooks.count.HP_clif_pHomMenu_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pHomMenu_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pHomMenu_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pHomMenu_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22409,14 +25578,14 @@ void HP_clif_pHomMenu(int fd, struct map_session_data *sd) {
}
void HP_clif_pAutoRevive(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pAutoRevive_pre ) {
+ if (HPMHooks.count.HP_clif_pAutoRevive_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAutoRevive_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAutoRevive_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pAutoRevive_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22424,9 +25593,9 @@ void HP_clif_pAutoRevive(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pAutoRevive(fd, sd);
}
- if( HPMHooks.count.HP_clif_pAutoRevive_post ) {
+ if (HPMHooks.count.HP_clif_pAutoRevive_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAutoRevive_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAutoRevive_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pAutoRevive_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22435,14 +25604,14 @@ void HP_clif_pAutoRevive(int fd, struct map_session_data *sd) {
}
void HP_clif_pCheck(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pCheck_pre ) {
+ if (HPMHooks.count.HP_clif_pCheck_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCheck_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCheck_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pCheck_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22450,9 +25619,9 @@ void HP_clif_pCheck(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pCheck(fd, sd);
}
- if( HPMHooks.count.HP_clif_pCheck_post ) {
+ if (HPMHooks.count.HP_clif_pCheck_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCheck_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCheck_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pCheck_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22461,14 +25630,14 @@ void HP_clif_pCheck(int fd, struct map_session_data *sd) {
}
void HP_clif_pMail_refreshinbox(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pMail_refreshinbox_pre ) {
+ if (HPMHooks.count.HP_clif_pMail_refreshinbox_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMail_refreshinbox_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMail_refreshinbox_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pMail_refreshinbox_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22476,9 +25645,9 @@ void HP_clif_pMail_refreshinbox(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pMail_refreshinbox(fd, sd);
}
- if( HPMHooks.count.HP_clif_pMail_refreshinbox_post ) {
+ if (HPMHooks.count.HP_clif_pMail_refreshinbox_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMail_refreshinbox_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMail_refreshinbox_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pMail_refreshinbox_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22487,14 +25656,14 @@ void HP_clif_pMail_refreshinbox(int fd, struct map_session_data *sd) {
}
void HP_clif_pMail_read(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pMail_read_pre ) {
+ if (HPMHooks.count.HP_clif_pMail_read_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMail_read_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMail_read_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pMail_read_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22502,9 +25671,9 @@ void HP_clif_pMail_read(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pMail_read(fd, sd);
}
- if( HPMHooks.count.HP_clif_pMail_read_post ) {
+ if (HPMHooks.count.HP_clif_pMail_read_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMail_read_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMail_read_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pMail_read_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22513,14 +25682,14 @@ void HP_clif_pMail_read(int fd, struct map_session_data *sd) {
}
void HP_clif_pMail_getattach(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pMail_getattach_pre ) {
+ if (HPMHooks.count.HP_clif_pMail_getattach_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMail_getattach_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMail_getattach_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pMail_getattach_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22528,9 +25697,9 @@ void HP_clif_pMail_getattach(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pMail_getattach(fd, sd);
}
- if( HPMHooks.count.HP_clif_pMail_getattach_post ) {
+ if (HPMHooks.count.HP_clif_pMail_getattach_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMail_getattach_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMail_getattach_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pMail_getattach_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22539,14 +25708,14 @@ void HP_clif_pMail_getattach(int fd, struct map_session_data *sd) {
}
void HP_clif_pMail_delete(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pMail_delete_pre ) {
+ if (HPMHooks.count.HP_clif_pMail_delete_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMail_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMail_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pMail_delete_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22554,9 +25723,9 @@ void HP_clif_pMail_delete(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pMail_delete(fd, sd);
}
- if( HPMHooks.count.HP_clif_pMail_delete_post ) {
+ if (HPMHooks.count.HP_clif_pMail_delete_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMail_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMail_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pMail_delete_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22565,14 +25734,14 @@ void HP_clif_pMail_delete(int fd, struct map_session_data *sd) {
}
void HP_clif_pMail_return(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pMail_return_pre ) {
+ if (HPMHooks.count.HP_clif_pMail_return_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMail_return_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMail_return_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pMail_return_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22580,9 +25749,9 @@ void HP_clif_pMail_return(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pMail_return(fd, sd);
}
- if( HPMHooks.count.HP_clif_pMail_return_post ) {
+ if (HPMHooks.count.HP_clif_pMail_return_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMail_return_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMail_return_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pMail_return_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22591,14 +25760,14 @@ void HP_clif_pMail_return(int fd, struct map_session_data *sd) {
}
void HP_clif_pMail_setattach(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pMail_setattach_pre ) {
+ if (HPMHooks.count.HP_clif_pMail_setattach_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMail_setattach_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMail_setattach_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pMail_setattach_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22606,9 +25775,9 @@ void HP_clif_pMail_setattach(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pMail_setattach(fd, sd);
}
- if( HPMHooks.count.HP_clif_pMail_setattach_post ) {
+ if (HPMHooks.count.HP_clif_pMail_setattach_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMail_setattach_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMail_setattach_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pMail_setattach_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22617,14 +25786,14 @@ void HP_clif_pMail_setattach(int fd, struct map_session_data *sd) {
}
void HP_clif_pMail_winopen(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pMail_winopen_pre ) {
+ if (HPMHooks.count.HP_clif_pMail_winopen_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMail_winopen_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMail_winopen_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pMail_winopen_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22632,9 +25801,9 @@ void HP_clif_pMail_winopen(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pMail_winopen(fd, sd);
}
- if( HPMHooks.count.HP_clif_pMail_winopen_post ) {
+ if (HPMHooks.count.HP_clif_pMail_winopen_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMail_winopen_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMail_winopen_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pMail_winopen_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22643,14 +25812,14 @@ void HP_clif_pMail_winopen(int fd, struct map_session_data *sd) {
}
void HP_clif_pMail_send(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pMail_send_pre ) {
+ if (HPMHooks.count.HP_clif_pMail_send_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMail_send_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMail_send_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pMail_send_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22658,9 +25827,9 @@ void HP_clif_pMail_send(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pMail_send(fd, sd);
}
- if( HPMHooks.count.HP_clif_pMail_send_post ) {
+ if (HPMHooks.count.HP_clif_pMail_send_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMail_send_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMail_send_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pMail_send_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22669,14 +25838,14 @@ void HP_clif_pMail_send(int fd, struct map_session_data *sd) {
}
void HP_clif_pAuction_cancelreg(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pAuction_cancelreg_pre ) {
+ if (HPMHooks.count.HP_clif_pAuction_cancelreg_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAuction_cancelreg_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAuction_cancelreg_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pAuction_cancelreg_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22684,9 +25853,9 @@ void HP_clif_pAuction_cancelreg(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pAuction_cancelreg(fd, sd);
}
- if( HPMHooks.count.HP_clif_pAuction_cancelreg_post ) {
+ if (HPMHooks.count.HP_clif_pAuction_cancelreg_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAuction_cancelreg_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAuction_cancelreg_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pAuction_cancelreg_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22695,14 +25864,14 @@ void HP_clif_pAuction_cancelreg(int fd, struct map_session_data *sd) {
}
void HP_clif_pAuction_setitem(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pAuction_setitem_pre ) {
+ if (HPMHooks.count.HP_clif_pAuction_setitem_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAuction_setitem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAuction_setitem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pAuction_setitem_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22710,9 +25879,9 @@ void HP_clif_pAuction_setitem(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pAuction_setitem(fd, sd);
}
- if( HPMHooks.count.HP_clif_pAuction_setitem_post ) {
+ if (HPMHooks.count.HP_clif_pAuction_setitem_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAuction_setitem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAuction_setitem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pAuction_setitem_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22721,14 +25890,14 @@ void HP_clif_pAuction_setitem(int fd, struct map_session_data *sd) {
}
void HP_clif_pAuction_register(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pAuction_register_pre ) {
+ if (HPMHooks.count.HP_clif_pAuction_register_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAuction_register_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAuction_register_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pAuction_register_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22736,9 +25905,9 @@ void HP_clif_pAuction_register(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pAuction_register(fd, sd);
}
- if( HPMHooks.count.HP_clif_pAuction_register_post ) {
+ if (HPMHooks.count.HP_clif_pAuction_register_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAuction_register_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAuction_register_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pAuction_register_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22747,14 +25916,14 @@ void HP_clif_pAuction_register(int fd, struct map_session_data *sd) {
}
void HP_clif_pAuction_cancel(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pAuction_cancel_pre ) {
+ if (HPMHooks.count.HP_clif_pAuction_cancel_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAuction_cancel_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAuction_cancel_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pAuction_cancel_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22762,9 +25931,9 @@ void HP_clif_pAuction_cancel(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pAuction_cancel(fd, sd);
}
- if( HPMHooks.count.HP_clif_pAuction_cancel_post ) {
+ if (HPMHooks.count.HP_clif_pAuction_cancel_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAuction_cancel_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAuction_cancel_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pAuction_cancel_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22773,14 +25942,14 @@ void HP_clif_pAuction_cancel(int fd, struct map_session_data *sd) {
}
void HP_clif_pAuction_close(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pAuction_close_pre ) {
+ if (HPMHooks.count.HP_clif_pAuction_close_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAuction_close_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAuction_close_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pAuction_close_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22788,9 +25957,9 @@ void HP_clif_pAuction_close(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pAuction_close(fd, sd);
}
- if( HPMHooks.count.HP_clif_pAuction_close_post ) {
+ if (HPMHooks.count.HP_clif_pAuction_close_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAuction_close_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAuction_close_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pAuction_close_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22799,14 +25968,14 @@ void HP_clif_pAuction_close(int fd, struct map_session_data *sd) {
}
void HP_clif_pAuction_bid(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pAuction_bid_pre ) {
+ if (HPMHooks.count.HP_clif_pAuction_bid_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAuction_bid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAuction_bid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pAuction_bid_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22814,9 +25983,9 @@ void HP_clif_pAuction_bid(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pAuction_bid(fd, sd);
}
- if( HPMHooks.count.HP_clif_pAuction_bid_post ) {
+ if (HPMHooks.count.HP_clif_pAuction_bid_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAuction_bid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAuction_bid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pAuction_bid_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22825,14 +25994,14 @@ void HP_clif_pAuction_bid(int fd, struct map_session_data *sd) {
}
void HP_clif_pAuction_search(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pAuction_search_pre ) {
+ if (HPMHooks.count.HP_clif_pAuction_search_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAuction_search_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAuction_search_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pAuction_search_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22840,9 +26009,9 @@ void HP_clif_pAuction_search(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pAuction_search(fd, sd);
}
- if( HPMHooks.count.HP_clif_pAuction_search_post ) {
+ if (HPMHooks.count.HP_clif_pAuction_search_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAuction_search_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAuction_search_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pAuction_search_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22851,14 +26020,14 @@ void HP_clif_pAuction_search(int fd, struct map_session_data *sd) {
}
void HP_clif_pAuction_buysell(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pAuction_buysell_pre ) {
+ if (HPMHooks.count.HP_clif_pAuction_buysell_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAuction_buysell_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAuction_buysell_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pAuction_buysell_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22866,9 +26035,9 @@ void HP_clif_pAuction_buysell(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pAuction_buysell(fd, sd);
}
- if( HPMHooks.count.HP_clif_pAuction_buysell_post ) {
+ if (HPMHooks.count.HP_clif_pAuction_buysell_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAuction_buysell_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAuction_buysell_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pAuction_buysell_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22877,14 +26046,14 @@ void HP_clif_pAuction_buysell(int fd, struct map_session_data *sd) {
}
void HP_clif_pcashshop_buy(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pcashshop_buy_pre ) {
+ if (HPMHooks.count.HP_clif_pcashshop_buy_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pcashshop_buy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pcashshop_buy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pcashshop_buy_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22892,9 +26061,9 @@ void HP_clif_pcashshop_buy(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pcashshop_buy(fd, sd);
}
- if( HPMHooks.count.HP_clif_pcashshop_buy_post ) {
+ if (HPMHooks.count.HP_clif_pcashshop_buy_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pcashshop_buy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pcashshop_buy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pcashshop_buy_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22903,14 +26072,14 @@ void HP_clif_pcashshop_buy(int fd, struct map_session_data *sd) {
}
void HP_clif_pAdopt_request(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pAdopt_request_pre ) {
+ if (HPMHooks.count.HP_clif_pAdopt_request_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAdopt_request_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAdopt_request_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pAdopt_request_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22918,9 +26087,9 @@ void HP_clif_pAdopt_request(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pAdopt_request(fd, sd);
}
- if( HPMHooks.count.HP_clif_pAdopt_request_post ) {
+ if (HPMHooks.count.HP_clif_pAdopt_request_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAdopt_request_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAdopt_request_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pAdopt_request_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22929,14 +26098,14 @@ void HP_clif_pAdopt_request(int fd, struct map_session_data *sd) {
}
void HP_clif_pAdopt_reply(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pAdopt_reply_pre ) {
+ if (HPMHooks.count.HP_clif_pAdopt_reply_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAdopt_reply_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAdopt_reply_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pAdopt_reply_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22944,9 +26113,9 @@ void HP_clif_pAdopt_reply(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pAdopt_reply(fd, sd);
}
- if( HPMHooks.count.HP_clif_pAdopt_reply_post ) {
+ if (HPMHooks.count.HP_clif_pAdopt_reply_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAdopt_reply_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAdopt_reply_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pAdopt_reply_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -22955,14 +26124,14 @@ void HP_clif_pAdopt_reply(int fd, struct map_session_data *sd) {
}
void HP_clif_pViewPlayerEquip(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pViewPlayerEquip_pre ) {
+ if (HPMHooks.count.HP_clif_pViewPlayerEquip_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pViewPlayerEquip_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pViewPlayerEquip_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pViewPlayerEquip_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -22970,36 +26139,36 @@ void HP_clif_pViewPlayerEquip(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pViewPlayerEquip(fd, sd);
}
- if( HPMHooks.count.HP_clif_pViewPlayerEquip_post ) {
+ if (HPMHooks.count.HP_clif_pViewPlayerEquip_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pViewPlayerEquip_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pViewPlayerEquip_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pViewPlayerEquip_post[hIndex].func;
postHookFunc(fd, sd);
}
}
return;
}
-void HP_clif_pEquipTick(int fd, struct map_session_data *sd) {
+void HP_clif_p_cz_config(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pEquipTick_pre ) {
+ if (HPMHooks.count.HP_clif_p_cz_config_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pEquipTick_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_clif_pEquipTick_pre[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_p_cz_config_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_p_cz_config_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
}
{
- HPMHooks.source.clif.pEquipTick(fd, sd);
+ HPMHooks.source.clif.p_cz_config(fd, sd);
}
- if( HPMHooks.count.HP_clif_pEquipTick_post ) {
+ if (HPMHooks.count.HP_clif_p_cz_config_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pEquipTick_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_clif_pEquipTick_post[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_p_cz_config_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_p_cz_config_post[hIndex].func;
postHookFunc(fd, sd);
}
}
@@ -23007,14 +26176,14 @@ void HP_clif_pEquipTick(int fd, struct map_session_data *sd) {
}
void HP_clif_pquestStateAck(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pquestStateAck_pre ) {
+ if (HPMHooks.count.HP_clif_pquestStateAck_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pquestStateAck_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pquestStateAck_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pquestStateAck_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23022,9 +26191,9 @@ void HP_clif_pquestStateAck(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pquestStateAck(fd, sd);
}
- if( HPMHooks.count.HP_clif_pquestStateAck_post ) {
+ if (HPMHooks.count.HP_clif_pquestStateAck_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pquestStateAck_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pquestStateAck_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pquestStateAck_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23033,14 +26202,14 @@ void HP_clif_pquestStateAck(int fd, struct map_session_data *sd) {
}
void HP_clif_pmercenary_action(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pmercenary_action_pre ) {
+ if (HPMHooks.count.HP_clif_pmercenary_action_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pmercenary_action_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pmercenary_action_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pmercenary_action_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23048,9 +26217,9 @@ void HP_clif_pmercenary_action(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pmercenary_action(fd, sd);
}
- if( HPMHooks.count.HP_clif_pmercenary_action_post ) {
+ if (HPMHooks.count.HP_clif_pmercenary_action_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pmercenary_action_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pmercenary_action_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pmercenary_action_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23059,14 +26228,14 @@ void HP_clif_pmercenary_action(int fd, struct map_session_data *sd) {
}
void HP_clif_pBattleChat(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pBattleChat_pre ) {
+ if (HPMHooks.count.HP_clif_pBattleChat_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBattleChat_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBattleChat_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pBattleChat_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23074,9 +26243,9 @@ void HP_clif_pBattleChat(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pBattleChat(fd, sd);
}
- if( HPMHooks.count.HP_clif_pBattleChat_post ) {
+ if (HPMHooks.count.HP_clif_pBattleChat_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBattleChat_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBattleChat_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pBattleChat_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23085,14 +26254,14 @@ void HP_clif_pBattleChat(int fd, struct map_session_data *sd) {
}
void HP_clif_pLessEffect(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pLessEffect_pre ) {
+ if (HPMHooks.count.HP_clif_pLessEffect_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pLessEffect_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pLessEffect_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pLessEffect_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23100,9 +26269,9 @@ void HP_clif_pLessEffect(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pLessEffect(fd, sd);
}
- if( HPMHooks.count.HP_clif_pLessEffect_post ) {
+ if (HPMHooks.count.HP_clif_pLessEffect_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pLessEffect_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pLessEffect_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pLessEffect_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23111,14 +26280,14 @@ void HP_clif_pLessEffect(int fd, struct map_session_data *sd) {
}
void HP_clif_pItemListWindowSelected(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pItemListWindowSelected_pre ) {
+ if (HPMHooks.count.HP_clif_pItemListWindowSelected_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pItemListWindowSelected_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pItemListWindowSelected_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pItemListWindowSelected_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23126,9 +26295,9 @@ void HP_clif_pItemListWindowSelected(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pItemListWindowSelected(fd, sd);
}
- if( HPMHooks.count.HP_clif_pItemListWindowSelected_post ) {
+ if (HPMHooks.count.HP_clif_pItemListWindowSelected_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pItemListWindowSelected_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pItemListWindowSelected_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pItemListWindowSelected_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23137,14 +26306,14 @@ void HP_clif_pItemListWindowSelected(int fd, struct map_session_data *sd) {
}
void HP_clif_pReqOpenBuyingStore(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pReqOpenBuyingStore_pre ) {
+ if (HPMHooks.count.HP_clif_pReqOpenBuyingStore_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReqOpenBuyingStore_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReqOpenBuyingStore_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pReqOpenBuyingStore_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23152,9 +26321,9 @@ void HP_clif_pReqOpenBuyingStore(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pReqOpenBuyingStore(fd, sd);
}
- if( HPMHooks.count.HP_clif_pReqOpenBuyingStore_post ) {
+ if (HPMHooks.count.HP_clif_pReqOpenBuyingStore_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReqOpenBuyingStore_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReqOpenBuyingStore_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pReqOpenBuyingStore_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23163,14 +26332,14 @@ void HP_clif_pReqOpenBuyingStore(int fd, struct map_session_data *sd) {
}
void HP_clif_pReqCloseBuyingStore(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pReqCloseBuyingStore_pre ) {
+ if (HPMHooks.count.HP_clif_pReqCloseBuyingStore_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReqCloseBuyingStore_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReqCloseBuyingStore_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pReqCloseBuyingStore_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23178,9 +26347,9 @@ void HP_clif_pReqCloseBuyingStore(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pReqCloseBuyingStore(fd, sd);
}
- if( HPMHooks.count.HP_clif_pReqCloseBuyingStore_post ) {
+ if (HPMHooks.count.HP_clif_pReqCloseBuyingStore_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReqCloseBuyingStore_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReqCloseBuyingStore_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pReqCloseBuyingStore_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23189,14 +26358,14 @@ void HP_clif_pReqCloseBuyingStore(int fd, struct map_session_data *sd) {
}
void HP_clif_pReqClickBuyingStore(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pReqClickBuyingStore_pre ) {
+ if (HPMHooks.count.HP_clif_pReqClickBuyingStore_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReqClickBuyingStore_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReqClickBuyingStore_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pReqClickBuyingStore_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23204,9 +26373,9 @@ void HP_clif_pReqClickBuyingStore(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pReqClickBuyingStore(fd, sd);
}
- if( HPMHooks.count.HP_clif_pReqClickBuyingStore_post ) {
+ if (HPMHooks.count.HP_clif_pReqClickBuyingStore_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReqClickBuyingStore_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReqClickBuyingStore_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pReqClickBuyingStore_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23215,14 +26384,14 @@ void HP_clif_pReqClickBuyingStore(int fd, struct map_session_data *sd) {
}
void HP_clif_pReqTradeBuyingStore(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pReqTradeBuyingStore_pre ) {
+ if (HPMHooks.count.HP_clif_pReqTradeBuyingStore_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReqTradeBuyingStore_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReqTradeBuyingStore_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pReqTradeBuyingStore_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23230,9 +26399,9 @@ void HP_clif_pReqTradeBuyingStore(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pReqTradeBuyingStore(fd, sd);
}
- if( HPMHooks.count.HP_clif_pReqTradeBuyingStore_post ) {
+ if (HPMHooks.count.HP_clif_pReqTradeBuyingStore_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReqTradeBuyingStore_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReqTradeBuyingStore_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pReqTradeBuyingStore_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23241,14 +26410,14 @@ void HP_clif_pReqTradeBuyingStore(int fd, struct map_session_data *sd) {
}
void HP_clif_pSearchStoreInfo(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pSearchStoreInfo_pre ) {
+ if (HPMHooks.count.HP_clif_pSearchStoreInfo_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSearchStoreInfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSearchStoreInfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pSearchStoreInfo_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23256,9 +26425,9 @@ void HP_clif_pSearchStoreInfo(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pSearchStoreInfo(fd, sd);
}
- if( HPMHooks.count.HP_clif_pSearchStoreInfo_post ) {
+ if (HPMHooks.count.HP_clif_pSearchStoreInfo_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSearchStoreInfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSearchStoreInfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pSearchStoreInfo_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23267,14 +26436,14 @@ void HP_clif_pSearchStoreInfo(int fd, struct map_session_data *sd) {
}
void HP_clif_pSearchStoreInfoNextPage(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pSearchStoreInfoNextPage_pre ) {
+ if (HPMHooks.count.HP_clif_pSearchStoreInfoNextPage_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSearchStoreInfoNextPage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSearchStoreInfoNextPage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pSearchStoreInfoNextPage_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23282,9 +26451,9 @@ void HP_clif_pSearchStoreInfoNextPage(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pSearchStoreInfoNextPage(fd, sd);
}
- if( HPMHooks.count.HP_clif_pSearchStoreInfoNextPage_post ) {
+ if (HPMHooks.count.HP_clif_pSearchStoreInfoNextPage_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSearchStoreInfoNextPage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSearchStoreInfoNextPage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pSearchStoreInfoNextPage_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23293,14 +26462,14 @@ void HP_clif_pSearchStoreInfoNextPage(int fd, struct map_session_data *sd) {
}
void HP_clif_pCloseSearchStoreInfo(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pCloseSearchStoreInfo_pre ) {
+ if (HPMHooks.count.HP_clif_pCloseSearchStoreInfo_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCloseSearchStoreInfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCloseSearchStoreInfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pCloseSearchStoreInfo_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23308,9 +26477,9 @@ void HP_clif_pCloseSearchStoreInfo(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pCloseSearchStoreInfo(fd, sd);
}
- if( HPMHooks.count.HP_clif_pCloseSearchStoreInfo_post ) {
+ if (HPMHooks.count.HP_clif_pCloseSearchStoreInfo_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCloseSearchStoreInfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCloseSearchStoreInfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pCloseSearchStoreInfo_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23319,14 +26488,14 @@ void HP_clif_pCloseSearchStoreInfo(int fd, struct map_session_data *sd) {
}
void HP_clif_pSearchStoreInfoListItemClick(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pSearchStoreInfoListItemClick_pre ) {
+ if (HPMHooks.count.HP_clif_pSearchStoreInfoListItemClick_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSearchStoreInfoListItemClick_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSearchStoreInfoListItemClick_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pSearchStoreInfoListItemClick_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23334,9 +26503,9 @@ void HP_clif_pSearchStoreInfoListItemClick(int fd, struct map_session_data *sd)
{
HPMHooks.source.clif.pSearchStoreInfoListItemClick(fd, sd);
}
- if( HPMHooks.count.HP_clif_pSearchStoreInfoListItemClick_post ) {
+ if (HPMHooks.count.HP_clif_pSearchStoreInfoListItemClick_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSearchStoreInfoListItemClick_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSearchStoreInfoListItemClick_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pSearchStoreInfoListItemClick_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23345,14 +26514,14 @@ void HP_clif_pSearchStoreInfoListItemClick(int fd, struct map_session_data *sd)
}
void HP_clif_pDebug(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pDebug_pre ) {
+ if (HPMHooks.count.HP_clif_pDebug_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pDebug_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pDebug_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pDebug_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23360,9 +26529,9 @@ void HP_clif_pDebug(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pDebug(fd, sd);
}
- if( HPMHooks.count.HP_clif_pDebug_post ) {
+ if (HPMHooks.count.HP_clif_pDebug_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pDebug_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pDebug_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pDebug_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23371,14 +26540,14 @@ void HP_clif_pDebug(int fd, struct map_session_data *sd) {
}
void HP_clif_pSkillSelectMenu(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pSkillSelectMenu_pre ) {
+ if (HPMHooks.count.HP_clif_pSkillSelectMenu_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSkillSelectMenu_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSkillSelectMenu_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pSkillSelectMenu_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23386,9 +26555,9 @@ void HP_clif_pSkillSelectMenu(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pSkillSelectMenu(fd, sd);
}
- if( HPMHooks.count.HP_clif_pSkillSelectMenu_post ) {
+ if (HPMHooks.count.HP_clif_pSkillSelectMenu_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSkillSelectMenu_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSkillSelectMenu_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pSkillSelectMenu_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23397,14 +26566,14 @@ void HP_clif_pSkillSelectMenu(int fd, struct map_session_data *sd) {
}
void HP_clif_pMoveItem(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pMoveItem_pre ) {
+ if (HPMHooks.count.HP_clif_pMoveItem_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMoveItem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMoveItem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pMoveItem_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23412,9 +26581,9 @@ void HP_clif_pMoveItem(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pMoveItem(fd, sd);
}
- if( HPMHooks.count.HP_clif_pMoveItem_post ) {
+ if (HPMHooks.count.HP_clif_pMoveItem_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMoveItem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMoveItem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pMoveItem_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23423,14 +26592,14 @@ void HP_clif_pMoveItem(int fd, struct map_session_data *sd) {
}
void HP_clif_pDull(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pDull_pre ) {
+ if (HPMHooks.count.HP_clif_pDull_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pDull_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pDull_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pDull_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23438,25 +26607,51 @@ void HP_clif_pDull(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pDull(fd, sd);
}
- if( HPMHooks.count.HP_clif_pDull_post ) {
+ if (HPMHooks.count.HP_clif_pDull_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pDull_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pDull_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pDull_post[hIndex].func;
postHookFunc(fd, sd);
}
}
return;
}
+void HP_clif_p_cz_blocking_play_cancel(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_p_cz_blocking_play_cancel_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_p_cz_blocking_play_cancel_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_p_cz_blocking_play_cancel_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.p_cz_blocking_play_cancel(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_p_cz_blocking_play_cancel_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_p_cz_blocking_play_cancel_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_p_cz_blocking_play_cancel_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
void HP_clif_pBGQueueRegister(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pBGQueueRegister_pre ) {
+ if (HPMHooks.count.HP_clif_pBGQueueRegister_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBGQueueRegister_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBGQueueRegister_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pBGQueueRegister_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23464,9 +26659,9 @@ void HP_clif_pBGQueueRegister(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pBGQueueRegister(fd, sd);
}
- if( HPMHooks.count.HP_clif_pBGQueueRegister_post ) {
+ if (HPMHooks.count.HP_clif_pBGQueueRegister_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBGQueueRegister_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBGQueueRegister_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pBGQueueRegister_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23475,14 +26670,14 @@ void HP_clif_pBGQueueRegister(int fd, struct map_session_data *sd) {
}
void HP_clif_pBGQueueCheckState(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pBGQueueCheckState_pre ) {
+ if (HPMHooks.count.HP_clif_pBGQueueCheckState_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBGQueueCheckState_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBGQueueCheckState_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pBGQueueCheckState_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23490,9 +26685,9 @@ void HP_clif_pBGQueueCheckState(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pBGQueueCheckState(fd, sd);
}
- if( HPMHooks.count.HP_clif_pBGQueueCheckState_post ) {
+ if (HPMHooks.count.HP_clif_pBGQueueCheckState_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBGQueueCheckState_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBGQueueCheckState_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pBGQueueCheckState_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23501,14 +26696,14 @@ void HP_clif_pBGQueueCheckState(int fd, struct map_session_data *sd) {
}
void HP_clif_pBGQueueRevokeReq(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pBGQueueRevokeReq_pre ) {
+ if (HPMHooks.count.HP_clif_pBGQueueRevokeReq_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBGQueueRevokeReq_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBGQueueRevokeReq_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pBGQueueRevokeReq_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23516,9 +26711,9 @@ void HP_clif_pBGQueueRevokeReq(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pBGQueueRevokeReq(fd, sd);
}
- if( HPMHooks.count.HP_clif_pBGQueueRevokeReq_post ) {
+ if (HPMHooks.count.HP_clif_pBGQueueRevokeReq_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBGQueueRevokeReq_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBGQueueRevokeReq_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pBGQueueRevokeReq_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23527,14 +26722,14 @@ void HP_clif_pBGQueueRevokeReq(int fd, struct map_session_data *sd) {
}
void HP_clif_pBGQueueBattleBeginAck(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pBGQueueBattleBeginAck_pre ) {
+ if (HPMHooks.count.HP_clif_pBGQueueBattleBeginAck_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBGQueueBattleBeginAck_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBGQueueBattleBeginAck_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pBGQueueBattleBeginAck_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23542,9 +26737,9 @@ void HP_clif_pBGQueueBattleBeginAck(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pBGQueueBattleBeginAck(fd, sd);
}
- if( HPMHooks.count.HP_clif_pBGQueueBattleBeginAck_post ) {
+ if (HPMHooks.count.HP_clif_pBGQueueBattleBeginAck_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBGQueueBattleBeginAck_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBGQueueBattleBeginAck_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pBGQueueBattleBeginAck_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23553,14 +26748,14 @@ void HP_clif_pBGQueueBattleBeginAck(int fd, struct map_session_data *sd) {
}
void HP_clif_pCashShopOpen(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pCashShopOpen_pre ) {
+ if (HPMHooks.count.HP_clif_pCashShopOpen_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCashShopOpen_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCashShopOpen_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pCashShopOpen_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23568,9 +26763,9 @@ void HP_clif_pCashShopOpen(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pCashShopOpen(fd, sd);
}
- if( HPMHooks.count.HP_clif_pCashShopOpen_post ) {
+ if (HPMHooks.count.HP_clif_pCashShopOpen_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCashShopOpen_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCashShopOpen_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pCashShopOpen_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23579,14 +26774,14 @@ void HP_clif_pCashShopOpen(int fd, struct map_session_data *sd) {
}
void HP_clif_pCashShopClose(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pCashShopClose_pre ) {
+ if (HPMHooks.count.HP_clif_pCashShopClose_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCashShopClose_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCashShopClose_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pCashShopClose_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23594,9 +26789,9 @@ void HP_clif_pCashShopClose(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pCashShopClose(fd, sd);
}
- if( HPMHooks.count.HP_clif_pCashShopClose_post ) {
+ if (HPMHooks.count.HP_clif_pCashShopClose_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCashShopClose_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCashShopClose_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pCashShopClose_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23605,14 +26800,14 @@ void HP_clif_pCashShopClose(int fd, struct map_session_data *sd) {
}
void HP_clif_pCashShopReqTab(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pCashShopReqTab_pre ) {
+ if (HPMHooks.count.HP_clif_pCashShopReqTab_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCashShopReqTab_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCashShopReqTab_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pCashShopReqTab_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23620,9 +26815,9 @@ void HP_clif_pCashShopReqTab(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pCashShopReqTab(fd, sd);
}
- if( HPMHooks.count.HP_clif_pCashShopReqTab_post ) {
+ if (HPMHooks.count.HP_clif_pCashShopReqTab_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCashShopReqTab_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCashShopReqTab_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pCashShopReqTab_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23631,14 +26826,14 @@ void HP_clif_pCashShopReqTab(int fd, struct map_session_data *sd) {
}
void HP_clif_pCashShopSchedule(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pCashShopSchedule_pre ) {
+ if (HPMHooks.count.HP_clif_pCashShopSchedule_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCashShopSchedule_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCashShopSchedule_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pCashShopSchedule_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23646,9 +26841,9 @@ void HP_clif_pCashShopSchedule(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pCashShopSchedule(fd, sd);
}
- if( HPMHooks.count.HP_clif_pCashShopSchedule_post ) {
+ if (HPMHooks.count.HP_clif_pCashShopSchedule_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCashShopSchedule_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCashShopSchedule_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pCashShopSchedule_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23657,14 +26852,14 @@ void HP_clif_pCashShopSchedule(int fd, struct map_session_data *sd) {
}
void HP_clif_pCashShopBuy(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pCashShopBuy_pre ) {
+ if (HPMHooks.count.HP_clif_pCashShopBuy_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCashShopBuy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCashShopBuy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pCashShopBuy_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23672,9 +26867,9 @@ void HP_clif_pCashShopBuy(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pCashShopBuy(fd, sd);
}
- if( HPMHooks.count.HP_clif_pCashShopBuy_post ) {
+ if (HPMHooks.count.HP_clif_pCashShopBuy_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCashShopBuy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCashShopBuy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pCashShopBuy_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23683,14 +26878,14 @@ void HP_clif_pCashShopBuy(int fd, struct map_session_data *sd) {
}
void HP_clif_pPartyTick(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pPartyTick_pre ) {
+ if (HPMHooks.count.HP_clif_pPartyTick_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyTick_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyTick_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pPartyTick_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23698,9 +26893,9 @@ void HP_clif_pPartyTick(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pPartyTick(fd, sd);
}
- if( HPMHooks.count.HP_clif_pPartyTick_post ) {
+ if (HPMHooks.count.HP_clif_pPartyTick_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyTick_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyTick_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pPartyTick_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23709,14 +26904,14 @@ void HP_clif_pPartyTick(int fd, struct map_session_data *sd) {
}
void HP_clif_pGuildInvite2(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pGuildInvite2_pre ) {
+ if (HPMHooks.count.HP_clif_pGuildInvite2_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildInvite2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildInvite2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pGuildInvite2_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23724,9 +26919,9 @@ void HP_clif_pGuildInvite2(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pGuildInvite2(fd, sd);
}
- if( HPMHooks.count.HP_clif_pGuildInvite2_post ) {
+ if (HPMHooks.count.HP_clif_pGuildInvite2_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildInvite2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pGuildInvite2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pGuildInvite2_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23735,14 +26930,14 @@ void HP_clif_pGuildInvite2(int fd, struct map_session_data *sd) {
}
void HP_clif_pPartyBookingAddFilter(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pPartyBookingAddFilter_pre ) {
+ if (HPMHooks.count.HP_clif_pPartyBookingAddFilter_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingAddFilter_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingAddFilter_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pPartyBookingAddFilter_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23750,9 +26945,9 @@ void HP_clif_pPartyBookingAddFilter(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pPartyBookingAddFilter(fd, sd);
}
- if( HPMHooks.count.HP_clif_pPartyBookingAddFilter_post ) {
+ if (HPMHooks.count.HP_clif_pPartyBookingAddFilter_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingAddFilter_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingAddFilter_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pPartyBookingAddFilter_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23761,14 +26956,14 @@ void HP_clif_pPartyBookingAddFilter(int fd, struct map_session_data *sd) {
}
void HP_clif_pPartyBookingSubFilter(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pPartyBookingSubFilter_pre ) {
+ if (HPMHooks.count.HP_clif_pPartyBookingSubFilter_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingSubFilter_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingSubFilter_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pPartyBookingSubFilter_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23776,9 +26971,9 @@ void HP_clif_pPartyBookingSubFilter(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pPartyBookingSubFilter(fd, sd);
}
- if( HPMHooks.count.HP_clif_pPartyBookingSubFilter_post ) {
+ if (HPMHooks.count.HP_clif_pPartyBookingSubFilter_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingSubFilter_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingSubFilter_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pPartyBookingSubFilter_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23787,14 +26982,14 @@ void HP_clif_pPartyBookingSubFilter(int fd, struct map_session_data *sd) {
}
void HP_clif_pPartyBookingReqVolunteer(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pPartyBookingReqVolunteer_pre ) {
+ if (HPMHooks.count.HP_clif_pPartyBookingReqVolunteer_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingReqVolunteer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingReqVolunteer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pPartyBookingReqVolunteer_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23802,9 +26997,9 @@ void HP_clif_pPartyBookingReqVolunteer(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pPartyBookingReqVolunteer(fd, sd);
}
- if( HPMHooks.count.HP_clif_pPartyBookingReqVolunteer_post ) {
+ if (HPMHooks.count.HP_clif_pPartyBookingReqVolunteer_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingReqVolunteer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingReqVolunteer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pPartyBookingReqVolunteer_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23813,14 +27008,14 @@ void HP_clif_pPartyBookingReqVolunteer(int fd, struct map_session_data *sd) {
}
void HP_clif_pPartyBookingRefuseVolunteer(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pPartyBookingRefuseVolunteer_pre ) {
+ if (HPMHooks.count.HP_clif_pPartyBookingRefuseVolunteer_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingRefuseVolunteer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingRefuseVolunteer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pPartyBookingRefuseVolunteer_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23828,9 +27023,9 @@ void HP_clif_pPartyBookingRefuseVolunteer(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pPartyBookingRefuseVolunteer(fd, sd);
}
- if( HPMHooks.count.HP_clif_pPartyBookingRefuseVolunteer_post ) {
+ if (HPMHooks.count.HP_clif_pPartyBookingRefuseVolunteer_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingRefuseVolunteer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingRefuseVolunteer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pPartyBookingRefuseVolunteer_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23839,14 +27034,14 @@ void HP_clif_pPartyBookingRefuseVolunteer(int fd, struct map_session_data *sd) {
}
void HP_clif_pPartyBookingCancelVolunteer(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pPartyBookingCancelVolunteer_pre ) {
+ if (HPMHooks.count.HP_clif_pPartyBookingCancelVolunteer_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingCancelVolunteer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingCancelVolunteer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pPartyBookingCancelVolunteer_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23854,9 +27049,9 @@ void HP_clif_pPartyBookingCancelVolunteer(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pPartyBookingCancelVolunteer(fd, sd);
}
- if( HPMHooks.count.HP_clif_pPartyBookingCancelVolunteer_post ) {
+ if (HPMHooks.count.HP_clif_pPartyBookingCancelVolunteer_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingCancelVolunteer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPartyBookingCancelVolunteer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pPartyBookingCancelVolunteer_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23865,14 +27060,14 @@ void HP_clif_pPartyBookingCancelVolunteer(int fd, struct map_session_data *sd) {
}
void HP_clif_pBankDeposit(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pBankDeposit_pre ) {
+ if (HPMHooks.count.HP_clif_pBankDeposit_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBankDeposit_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBankDeposit_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pBankDeposit_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23880,9 +27075,9 @@ void HP_clif_pBankDeposit(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pBankDeposit(fd, sd);
}
- if( HPMHooks.count.HP_clif_pBankDeposit_post ) {
+ if (HPMHooks.count.HP_clif_pBankDeposit_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBankDeposit_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBankDeposit_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pBankDeposit_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23891,14 +27086,14 @@ void HP_clif_pBankDeposit(int fd, struct map_session_data *sd) {
}
void HP_clif_pBankWithdraw(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pBankWithdraw_pre ) {
+ if (HPMHooks.count.HP_clif_pBankWithdraw_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBankWithdraw_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBankWithdraw_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pBankWithdraw_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23906,9 +27101,9 @@ void HP_clif_pBankWithdraw(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pBankWithdraw(fd, sd);
}
- if( HPMHooks.count.HP_clif_pBankWithdraw_post ) {
+ if (HPMHooks.count.HP_clif_pBankWithdraw_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBankWithdraw_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBankWithdraw_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pBankWithdraw_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23917,14 +27112,14 @@ void HP_clif_pBankWithdraw(int fd, struct map_session_data *sd) {
}
void HP_clif_pBankCheck(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pBankCheck_pre ) {
+ if (HPMHooks.count.HP_clif_pBankCheck_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBankCheck_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBankCheck_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pBankCheck_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23932,9 +27127,9 @@ void HP_clif_pBankCheck(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pBankCheck(fd, sd);
}
- if( HPMHooks.count.HP_clif_pBankCheck_post ) {
+ if (HPMHooks.count.HP_clif_pBankCheck_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBankCheck_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBankCheck_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pBankCheck_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23943,14 +27138,14 @@ void HP_clif_pBankCheck(int fd, struct map_session_data *sd) {
}
void HP_clif_pBankOpen(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pBankOpen_pre ) {
+ if (HPMHooks.count.HP_clif_pBankOpen_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBankOpen_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBankOpen_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pBankOpen_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23958,9 +27153,9 @@ void HP_clif_pBankOpen(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pBankOpen(fd, sd);
}
- if( HPMHooks.count.HP_clif_pBankOpen_post ) {
+ if (HPMHooks.count.HP_clif_pBankOpen_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBankOpen_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBankOpen_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pBankOpen_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23969,14 +27164,14 @@ void HP_clif_pBankOpen(int fd, struct map_session_data *sd) {
}
void HP_clif_pBankClose(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pBankClose_pre ) {
+ if (HPMHooks.count.HP_clif_pBankClose_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBankClose_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBankClose_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pBankClose_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -23984,9 +27179,9 @@ void HP_clif_pBankClose(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pBankClose(fd, sd);
}
- if( HPMHooks.count.HP_clif_pBankClose_post ) {
+ if (HPMHooks.count.HP_clif_pBankClose_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBankClose_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pBankClose_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pBankClose_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -23995,14 +27190,14 @@ void HP_clif_pBankClose(int fd, struct map_session_data *sd) {
}
void HP_clif_pRouletteOpen(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pRouletteOpen_pre ) {
+ if (HPMHooks.count.HP_clif_pRouletteOpen_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRouletteOpen_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRouletteOpen_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pRouletteOpen_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -24010,9 +27205,9 @@ void HP_clif_pRouletteOpen(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pRouletteOpen(fd, sd);
}
- if( HPMHooks.count.HP_clif_pRouletteOpen_post ) {
+ if (HPMHooks.count.HP_clif_pRouletteOpen_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRouletteOpen_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRouletteOpen_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pRouletteOpen_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -24021,14 +27216,14 @@ void HP_clif_pRouletteOpen(int fd, struct map_session_data *sd) {
}
void HP_clif_pRouletteInfo(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pRouletteInfo_pre ) {
+ if (HPMHooks.count.HP_clif_pRouletteInfo_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRouletteInfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRouletteInfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pRouletteInfo_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -24036,9 +27231,9 @@ void HP_clif_pRouletteInfo(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pRouletteInfo(fd, sd);
}
- if( HPMHooks.count.HP_clif_pRouletteInfo_post ) {
+ if (HPMHooks.count.HP_clif_pRouletteInfo_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRouletteInfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRouletteInfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pRouletteInfo_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -24047,14 +27242,14 @@ void HP_clif_pRouletteInfo(int fd, struct map_session_data *sd) {
}
void HP_clif_pRouletteClose(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pRouletteClose_pre ) {
+ if (HPMHooks.count.HP_clif_pRouletteClose_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRouletteClose_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRouletteClose_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pRouletteClose_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -24062,9 +27257,9 @@ void HP_clif_pRouletteClose(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pRouletteClose(fd, sd);
}
- if( HPMHooks.count.HP_clif_pRouletteClose_post ) {
+ if (HPMHooks.count.HP_clif_pRouletteClose_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRouletteClose_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRouletteClose_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pRouletteClose_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -24073,14 +27268,14 @@ void HP_clif_pRouletteClose(int fd, struct map_session_data *sd) {
}
void HP_clif_pRouletteGenerate(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pRouletteGenerate_pre ) {
+ if (HPMHooks.count.HP_clif_pRouletteGenerate_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRouletteGenerate_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRouletteGenerate_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pRouletteGenerate_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -24088,9 +27283,9 @@ void HP_clif_pRouletteGenerate(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pRouletteGenerate(fd, sd);
}
- if( HPMHooks.count.HP_clif_pRouletteGenerate_post ) {
+ if (HPMHooks.count.HP_clif_pRouletteGenerate_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRouletteGenerate_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRouletteGenerate_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pRouletteGenerate_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -24099,14 +27294,14 @@ void HP_clif_pRouletteGenerate(int fd, struct map_session_data *sd) {
}
void HP_clif_pRouletteRecvItem(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pRouletteRecvItem_pre ) {
+ if (HPMHooks.count.HP_clif_pRouletteRecvItem_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRouletteRecvItem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRouletteRecvItem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pRouletteRecvItem_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -24114,9 +27309,9 @@ void HP_clif_pRouletteRecvItem(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pRouletteRecvItem(fd, sd);
}
- if( HPMHooks.count.HP_clif_pRouletteRecvItem_post ) {
+ if (HPMHooks.count.HP_clif_pRouletteRecvItem_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRouletteRecvItem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRouletteRecvItem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pRouletteRecvItem_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -24125,14 +27320,14 @@ void HP_clif_pRouletteRecvItem(int fd, struct map_session_data *sd) {
}
void HP_clif_pNPCShopClosed(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pNPCShopClosed_pre ) {
+ if (HPMHooks.count.HP_clif_pNPCShopClosed_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNPCShopClosed_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNPCShopClosed_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pNPCShopClosed_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -24140,9 +27335,9 @@ void HP_clif_pNPCShopClosed(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pNPCShopClosed(fd, sd);
}
- if( HPMHooks.count.HP_clif_pNPCShopClosed_post ) {
+ if (HPMHooks.count.HP_clif_pNPCShopClosed_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNPCShopClosed_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNPCShopClosed_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pNPCShopClosed_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -24151,14 +27346,14 @@ void HP_clif_pNPCShopClosed(int fd, struct map_session_data *sd) {
}
void HP_clif_pNPCMarketClosed(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pNPCMarketClosed_pre ) {
+ if (HPMHooks.count.HP_clif_pNPCMarketClosed_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNPCMarketClosed_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNPCMarketClosed_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pNPCMarketClosed_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -24166,9 +27361,9 @@ void HP_clif_pNPCMarketClosed(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pNPCMarketClosed(fd, sd);
}
- if( HPMHooks.count.HP_clif_pNPCMarketClosed_post ) {
+ if (HPMHooks.count.HP_clif_pNPCMarketClosed_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNPCMarketClosed_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNPCMarketClosed_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pNPCMarketClosed_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -24177,14 +27372,14 @@ void HP_clif_pNPCMarketClosed(int fd, struct map_session_data *sd) {
}
void HP_clif_pNPCMarketPurchase(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pNPCMarketPurchase_pre ) {
+ if (HPMHooks.count.HP_clif_pNPCMarketPurchase_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNPCMarketPurchase_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNPCMarketPurchase_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pNPCMarketPurchase_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -24192,51 +27387,52 @@ void HP_clif_pNPCMarketPurchase(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pNPCMarketPurchase(fd, sd);
}
- if( HPMHooks.count.HP_clif_pNPCMarketPurchase_post ) {
+ if (HPMHooks.count.HP_clif_pNPCMarketPurchase_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNPCMarketPurchase_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNPCMarketPurchase_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pNPCMarketPurchase_post[hIndex].func;
postHookFunc(fd, sd);
}
}
return;
}
-void HP_clif_add_random_options(unsigned char *buf, struct item *item) {
+int HP_clif_add_item_options(struct ItemOptions *buf, const struct item *it) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_add_random_options_pre ) {
- void (*preHookFunc) (unsigned char **buf, struct item **item);
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_clif_add_item_options_pre > 0) {
+ int (*preHookFunc) (struct ItemOptions **buf, const struct item **it);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_add_random_options_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_clif_add_random_options_pre[hIndex].func;
- preHookFunc(&buf, &item);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_add_item_options_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_add_item_options_pre[hIndex].func;
+ retVal___ = preHookFunc(&buf, &it);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
- return;
+ return retVal___;
}
}
{
- HPMHooks.source.clif.add_random_options(buf, item);
+ retVal___ = HPMHooks.source.clif.add_item_options(buf, it);
}
- if( HPMHooks.count.HP_clif_add_random_options_post ) {
- void (*postHookFunc) (unsigned char *buf, struct item *item);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_add_random_options_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_clif_add_random_options_post[hIndex].func;
- postHookFunc(buf, item);
+ if (HPMHooks.count.HP_clif_add_item_options_post > 0) {
+ int (*postHookFunc) (int retVal___, struct ItemOptions *buf, const struct item *it);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_add_item_options_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_add_item_options_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, buf, it);
}
}
- return;
+ return retVal___;
}
void HP_clif_pHotkeyRowShift(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pHotkeyRowShift_pre ) {
+ if (HPMHooks.count.HP_clif_pHotkeyRowShift_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pHotkeyRowShift_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pHotkeyRowShift_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pHotkeyRowShift_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -24244,9 +27440,9 @@ void HP_clif_pHotkeyRowShift(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pHotkeyRowShift(fd, sd);
}
- if( HPMHooks.count.HP_clif_pHotkeyRowShift_post ) {
+ if (HPMHooks.count.HP_clif_pHotkeyRowShift_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pHotkeyRowShift_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pHotkeyRowShift_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pHotkeyRowShift_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -24255,14 +27451,14 @@ void HP_clif_pHotkeyRowShift(int fd, struct map_session_data *sd) {
}
void HP_clif_dressroom_open(struct map_session_data *sd, int view) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_dressroom_open_pre ) {
+ if (HPMHooks.count.HP_clif_dressroom_open_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *view);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_dressroom_open_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_dressroom_open_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_dressroom_open_pre[hIndex].func;
preHookFunc(&sd, &view);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -24270,9 +27466,9 @@ void HP_clif_dressroom_open(struct map_session_data *sd, int view) {
{
HPMHooks.source.clif.dressroom_open(sd, view);
}
- if( HPMHooks.count.HP_clif_dressroom_open_post ) {
+ if (HPMHooks.count.HP_clif_dressroom_open_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int view);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_dressroom_open_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_dressroom_open_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_dressroom_open_post[hIndex].func;
postHookFunc(sd, view);
}
@@ -24281,14 +27477,14 @@ void HP_clif_dressroom_open(struct map_session_data *sd, int view) {
}
void HP_clif_pOneClick_ItemIdentify(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pOneClick_ItemIdentify_pre ) {
+ if (HPMHooks.count.HP_clif_pOneClick_ItemIdentify_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pOneClick_ItemIdentify_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pOneClick_ItemIdentify_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pOneClick_ItemIdentify_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -24296,9 +27492,9 @@ void HP_clif_pOneClick_ItemIdentify(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pOneClick_ItemIdentify(fd, sd);
}
- if( HPMHooks.count.HP_clif_pOneClick_ItemIdentify_post ) {
+ if (HPMHooks.count.HP_clif_pOneClick_ItemIdentify_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pOneClick_ItemIdentify_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pOneClick_ItemIdentify_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pOneClick_ItemIdentify_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -24307,14 +27503,14 @@ void HP_clif_pOneClick_ItemIdentify(int fd, struct map_session_data *sd) {
}
void HP_clif_selectcart(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_selectcart_pre ) {
+ if (HPMHooks.count.HP_clif_selectcart_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_selectcart_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_selectcart_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_selectcart_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -24322,9 +27518,9 @@ void HP_clif_selectcart(struct map_session_data *sd) {
{
HPMHooks.source.clif.selectcart(sd);
}
- if( HPMHooks.count.HP_clif_selectcart_post ) {
+ if (HPMHooks.count.HP_clif_selectcart_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_selectcart_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_selectcart_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_selectcart_post[hIndex].func;
postHookFunc(sd);
}
@@ -24333,14 +27529,14 @@ void HP_clif_selectcart(struct map_session_data *sd) {
}
void HP_clif_pSelectCart(int fd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_clif_pSelectCart_pre ) {
+ if (HPMHooks.count.HP_clif_pSelectCart_pre > 0) {
void (*preHookFunc) (int *fd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSelectCart_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSelectCart_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_pSelectCart_pre[hIndex].func;
preHookFunc(&fd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -24348,9 +27544,9 @@ void HP_clif_pSelectCart(int fd, struct map_session_data *sd) {
{
HPMHooks.source.clif.pSelectCart(fd, sd);
}
- if( HPMHooks.count.HP_clif_pSelectCart_post ) {
+ if (HPMHooks.count.HP_clif_pSelectCart_post > 0) {
void (*postHookFunc) (int fd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSelectCart_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pSelectCart_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_pSelectCart_post[hIndex].func;
postHookFunc(fd, sd);
}
@@ -24360,14 +27556,14 @@ void HP_clif_pSelectCart(int fd, struct map_session_data *sd) {
const char* HP_clif_get_bl_name(const struct block_list *bl) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_clif_get_bl_name_pre ) {
+ if (HPMHooks.count.HP_clif_get_bl_name_pre > 0) {
const char* (*preHookFunc) (const struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_get_bl_name_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_get_bl_name_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_get_bl_name_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -24375,26 +27571,1854 @@ const char* HP_clif_get_bl_name(const struct block_list *bl) {
{
retVal___ = HPMHooks.source.clif.get_bl_name(bl);
}
- if( HPMHooks.count.HP_clif_get_bl_name_post ) {
+ if (HPMHooks.count.HP_clif_get_bl_name_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_get_bl_name_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_get_bl_name_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_get_bl_name_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
}
return retVal___;
}
+void HP_clif_pRodexOpenWriteMail(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pRodexOpenWriteMail_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexOpenWriteMail_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pRodexOpenWriteMail_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pRodexOpenWriteMail(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pRodexOpenWriteMail_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexOpenWriteMail_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pRodexOpenWriteMail_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_rodex_open_write_mail(int fd, const char *receiver_name, int8 result) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_rodex_open_write_mail_pre > 0) {
+ void (*preHookFunc) (int *fd, const char **receiver_name, int8 *result);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_open_write_mail_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_rodex_open_write_mail_pre[hIndex].func;
+ preHookFunc(&fd, &receiver_name, &result);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.rodex_open_write_mail(fd, receiver_name, result);
+ }
+ if (HPMHooks.count.HP_clif_rodex_open_write_mail_post > 0) {
+ void (*postHookFunc) (int fd, const char *receiver_name, int8 result);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_open_write_mail_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_rodex_open_write_mail_post[hIndex].func;
+ postHookFunc(fd, receiver_name, result);
+ }
+ }
+ return;
+}
+void HP_clif_pRodexAddItem(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pRodexAddItem_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexAddItem_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pRodexAddItem_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pRodexAddItem(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pRodexAddItem_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexAddItem_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pRodexAddItem_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_rodex_add_item_result(struct map_session_data *sd, int16 idx, int16 amount, enum rodex_add_item result) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_rodex_add_item_result_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int16 *idx, int16 *amount, enum rodex_add_item *result);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_add_item_result_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_rodex_add_item_result_pre[hIndex].func;
+ preHookFunc(&sd, &idx, &amount, &result);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.rodex_add_item_result(sd, idx, amount, result);
+ }
+ if (HPMHooks.count.HP_clif_rodex_add_item_result_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int16 idx, int16 amount, enum rodex_add_item result);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_add_item_result_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_rodex_add_item_result_post[hIndex].func;
+ postHookFunc(sd, idx, amount, result);
+ }
+ }
+ return;
+}
+void HP_clif_pRodexRemoveItem(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pRodexRemoveItem_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexRemoveItem_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pRodexRemoveItem_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pRodexRemoveItem(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pRodexRemoveItem_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexRemoveItem_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pRodexRemoveItem_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_rodex_remove_item_result(struct map_session_data *sd, int16 idx, int16 amount) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_rodex_remove_item_result_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int16 *idx, int16 *amount);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_remove_item_result_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_rodex_remove_item_result_pre[hIndex].func;
+ preHookFunc(&sd, &idx, &amount);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.rodex_remove_item_result(sd, idx, amount);
+ }
+ if (HPMHooks.count.HP_clif_rodex_remove_item_result_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int16 idx, int16 amount);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_remove_item_result_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_rodex_remove_item_result_post[hIndex].func;
+ postHookFunc(sd, idx, amount);
+ }
+ }
+ return;
+}
+void HP_clif_pRodexSendMail(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pRodexSendMail_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexSendMail_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pRodexSendMail_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pRodexSendMail(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pRodexSendMail_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexSendMail_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pRodexSendMail_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_rodex_send_mail_result(int fd, struct map_session_data *sd, int8 result) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_rodex_send_mail_result_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd, int8 *result);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_send_mail_result_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_rodex_send_mail_result_pre[hIndex].func;
+ preHookFunc(&fd, &sd, &result);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.rodex_send_mail_result(fd, sd, result);
+ }
+ if (HPMHooks.count.HP_clif_rodex_send_mail_result_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd, int8 result);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_send_mail_result_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_rodex_send_mail_result_post[hIndex].func;
+ postHookFunc(fd, sd, result);
+ }
+ }
+ return;
+}
+void HP_clif_rodex_send_maillist(int fd, struct map_session_data *sd, int8 open_type, int64 page_start) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_rodex_send_maillist_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd, int8 *open_type, int64 *page_start);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_send_maillist_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_rodex_send_maillist_pre[hIndex].func;
+ preHookFunc(&fd, &sd, &open_type, &page_start);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.rodex_send_maillist(fd, sd, open_type, page_start);
+ }
+ if (HPMHooks.count.HP_clif_rodex_send_maillist_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd, int8 open_type, int64 page_start);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_send_maillist_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_rodex_send_maillist_post[hIndex].func;
+ postHookFunc(fd, sd, open_type, page_start);
+ }
+ }
+ return;
+}
+void HP_clif_rodex_send_refresh(int fd, struct map_session_data *sd, int8 open_type, int count) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_rodex_send_refresh_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd, int8 *open_type, int *count);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_send_refresh_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_rodex_send_refresh_pre[hIndex].func;
+ preHookFunc(&fd, &sd, &open_type, &count);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.rodex_send_refresh(fd, sd, open_type, count);
+ }
+ if (HPMHooks.count.HP_clif_rodex_send_refresh_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd, int8 open_type, int count);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_send_refresh_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_rodex_send_refresh_post[hIndex].func;
+ postHookFunc(fd, sd, open_type, count);
+ }
+ }
+ return;
+}
+void HP_clif_rodex_send_mails_all(int fd, struct map_session_data *sd, int64 mail_id) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_rodex_send_mails_all_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd, int64 *mail_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_send_mails_all_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_rodex_send_mails_all_pre[hIndex].func;
+ preHookFunc(&fd, &sd, &mail_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.rodex_send_mails_all(fd, sd, mail_id);
+ }
+ if (HPMHooks.count.HP_clif_rodex_send_mails_all_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd, int64 mail_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_send_mails_all_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_rodex_send_mails_all_post[hIndex].func;
+ postHookFunc(fd, sd, mail_id);
+ }
+ }
+ return;
+}
+void HP_clif_pRodexReadMail(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pRodexReadMail_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexReadMail_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pRodexReadMail_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pRodexReadMail(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pRodexReadMail_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexReadMail_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pRodexReadMail_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_rodex_read_mail(struct map_session_data *sd, int8 opentype, struct rodex_message *msg) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_rodex_read_mail_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int8 *opentype, struct rodex_message **msg);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_read_mail_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_rodex_read_mail_pre[hIndex].func;
+ preHookFunc(&sd, &opentype, &msg);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.rodex_read_mail(sd, opentype, msg);
+ }
+ if (HPMHooks.count.HP_clif_rodex_read_mail_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int8 opentype, struct rodex_message *msg);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_read_mail_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_rodex_read_mail_post[hIndex].func;
+ postHookFunc(sd, opentype, msg);
+ }
+ }
+ return;
+}
+void HP_clif_pRodexNextMaillist(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pRodexNextMaillist_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexNextMaillist_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pRodexNextMaillist_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pRodexNextMaillist(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pRodexNextMaillist_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexNextMaillist_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pRodexNextMaillist_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_pRodexCloseMailbox(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pRodexCloseMailbox_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexCloseMailbox_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pRodexCloseMailbox_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pRodexCloseMailbox(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pRodexCloseMailbox_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexCloseMailbox_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pRodexCloseMailbox_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_pRodexCancelWriteMail(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pRodexCancelWriteMail_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexCancelWriteMail_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pRodexCancelWriteMail_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pRodexCancelWriteMail(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pRodexCancelWriteMail_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexCancelWriteMail_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pRodexCancelWriteMail_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_pRodexOpenMailbox(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pRodexOpenMailbox_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexOpenMailbox_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pRodexOpenMailbox_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pRodexOpenMailbox(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pRodexOpenMailbox_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexOpenMailbox_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pRodexOpenMailbox_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_pRodexCheckName(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pRodexCheckName_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexCheckName_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pRodexCheckName_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pRodexCheckName(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pRodexCheckName_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexCheckName_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pRodexCheckName_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_rodex_checkname_result(struct map_session_data *sd, int char_id, short class_, int base_level, const char *name) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_rodex_checkname_result_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int *char_id, short *class_, int *base_level, const char **name);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_checkname_result_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_rodex_checkname_result_pre[hIndex].func;
+ preHookFunc(&sd, &char_id, &class_, &base_level, &name);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.rodex_checkname_result(sd, char_id, class_, base_level, name);
+ }
+ if (HPMHooks.count.HP_clif_rodex_checkname_result_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int char_id, short class_, int base_level, const char *name);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_checkname_result_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_rodex_checkname_result_post[hIndex].func;
+ postHookFunc(sd, char_id, class_, base_level, name);
+ }
+ }
+ return;
+}
+void HP_clif_pRodexDeleteMail(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pRodexDeleteMail_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexDeleteMail_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pRodexDeleteMail_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pRodexDeleteMail(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pRodexDeleteMail_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexDeleteMail_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pRodexDeleteMail_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_rodex_delete_mail(struct map_session_data *sd, int8 opentype, int64 mail_id) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_rodex_delete_mail_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int8 *opentype, int64 *mail_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_delete_mail_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_rodex_delete_mail_pre[hIndex].func;
+ preHookFunc(&sd, &opentype, &mail_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.rodex_delete_mail(sd, opentype, mail_id);
+ }
+ if (HPMHooks.count.HP_clif_rodex_delete_mail_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int8 opentype, int64 mail_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_delete_mail_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_rodex_delete_mail_post[hIndex].func;
+ postHookFunc(sd, opentype, mail_id);
+ }
+ }
+ return;
+}
+void HP_clif_pRodexRefreshMaillist(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pRodexRefreshMaillist_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexRefreshMaillist_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pRodexRefreshMaillist_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pRodexRefreshMaillist(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pRodexRefreshMaillist_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexRefreshMaillist_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pRodexRefreshMaillist_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_pRodexRequestZeny(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pRodexRequestZeny_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexRequestZeny_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pRodexRequestZeny_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pRodexRequestZeny(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pRodexRequestZeny_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexRequestZeny_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pRodexRequestZeny_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_rodex_request_zeny(struct map_session_data *sd, int8 opentype, int64 mail_id, enum rodex_get_zeny result) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_rodex_request_zeny_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int8 *opentype, int64 *mail_id, enum rodex_get_zeny *result);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_request_zeny_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_rodex_request_zeny_pre[hIndex].func;
+ preHookFunc(&sd, &opentype, &mail_id, &result);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.rodex_request_zeny(sd, opentype, mail_id, result);
+ }
+ if (HPMHooks.count.HP_clif_rodex_request_zeny_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int8 opentype, int64 mail_id, enum rodex_get_zeny result);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_request_zeny_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_rodex_request_zeny_post[hIndex].func;
+ postHookFunc(sd, opentype, mail_id, result);
+ }
+ }
+ return;
+}
+void HP_clif_pRodexRequestItems(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pRodexRequestItems_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexRequestItems_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pRodexRequestItems_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pRodexRequestItems(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pRodexRequestItems_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexRequestItems_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pRodexRequestItems_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_rodex_request_items(struct map_session_data *sd, int8 opentype, int64 mail_id, enum rodex_get_items result) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_rodex_request_items_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int8 *opentype, int64 *mail_id, enum rodex_get_items *result);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_request_items_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_rodex_request_items_pre[hIndex].func;
+ preHookFunc(&sd, &opentype, &mail_id, &result);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.rodex_request_items(sd, opentype, mail_id, result);
+ }
+ if (HPMHooks.count.HP_clif_rodex_request_items_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int8 opentype, int64 mail_id, enum rodex_get_items result);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_request_items_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_rodex_request_items_post[hIndex].func;
+ postHookFunc(sd, opentype, mail_id, result);
+ }
+ }
+ return;
+}
+void HP_clif_rodex_icon(int fd, bool show) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_rodex_icon_pre > 0) {
+ void (*preHookFunc) (int *fd, bool *show);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_icon_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_rodex_icon_pre[hIndex].func;
+ preHookFunc(&fd, &show);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.rodex_icon(fd, show);
+ }
+ if (HPMHooks.count.HP_clif_rodex_icon_post > 0) {
+ void (*postHookFunc) (int fd, bool show);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_icon_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_rodex_icon_post[hIndex].func;
+ postHookFunc(fd, show);
+ }
+ }
+ return;
+}
+void HP_clif_skill_scale(struct block_list *bl, int src_id, int x, int y, uint16 skill_id, uint16 skill_lv, int casttime) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_skill_scale_pre > 0) {
+ void (*preHookFunc) (struct block_list **bl, int *src_id, int *x, int *y, uint16 *skill_id, uint16 *skill_lv, int *casttime);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_scale_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_skill_scale_pre[hIndex].func;
+ preHookFunc(&bl, &src_id, &x, &y, &skill_id, &skill_lv, &casttime);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.skill_scale(bl, src_id, x, y, skill_id, skill_lv, casttime);
+ }
+ if (HPMHooks.count.HP_clif_skill_scale_post > 0) {
+ void (*postHookFunc) (struct block_list *bl, int src_id, int x, int y, uint16 skill_id, uint16 skill_lv, int casttime);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_scale_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_skill_scale_post[hIndex].func;
+ postHookFunc(bl, src_id, x, y, skill_id, skill_lv, casttime);
+ }
+ }
+ return;
+}
+void HP_clif_clan_basicinfo(struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_clan_basicinfo_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_clan_basicinfo_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_clan_basicinfo_pre[hIndex].func;
+ preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.clan_basicinfo(sd);
+ }
+ if (HPMHooks.count.HP_clif_clan_basicinfo_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_clan_basicinfo_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_clan_basicinfo_post[hIndex].func;
+ postHookFunc(sd);
+ }
+ }
+ return;
+}
+void HP_clif_clan_onlinecount(struct clan *c) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_clan_onlinecount_pre > 0) {
+ void (*preHookFunc) (struct clan **c);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_clan_onlinecount_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_clan_onlinecount_pre[hIndex].func;
+ preHookFunc(&c);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.clan_onlinecount(c);
+ }
+ if (HPMHooks.count.HP_clif_clan_onlinecount_post > 0) {
+ void (*postHookFunc) (struct clan *c);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_clan_onlinecount_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_clan_onlinecount_post[hIndex].func;
+ postHookFunc(c);
+ }
+ }
+ return;
+}
+void HP_clif_clan_leave(struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_clan_leave_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_clan_leave_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_clan_leave_pre[hIndex].func;
+ preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.clan_leave(sd);
+ }
+ if (HPMHooks.count.HP_clif_clan_leave_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_clan_leave_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_clan_leave_post[hIndex].func;
+ postHookFunc(sd);
+ }
+ }
+ return;
+}
+void HP_clif_clan_message(struct clan *c, const char *mes, int len) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_clan_message_pre > 0) {
+ void (*preHookFunc) (struct clan **c, const char **mes, int *len);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_clan_message_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_clan_message_pre[hIndex].func;
+ preHookFunc(&c, &mes, &len);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.clan_message(c, mes, len);
+ }
+ if (HPMHooks.count.HP_clif_clan_message_post > 0) {
+ void (*postHookFunc) (struct clan *c, const char *mes, int len);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_clan_message_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_clan_message_post[hIndex].func;
+ postHookFunc(c, mes, len);
+ }
+ }
+ return;
+}
+void HP_clif_pClanMessage(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pClanMessage_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pClanMessage_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pClanMessage_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pClanMessage(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pClanMessage_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pClanMessage_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pClanMessage_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_hat_effect(struct block_list *bl, struct block_list *tbl, enum send_target target) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_hat_effect_pre > 0) {
+ void (*preHookFunc) (struct block_list **bl, struct block_list **tbl, enum send_target *target);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_hat_effect_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_hat_effect_pre[hIndex].func;
+ preHookFunc(&bl, &tbl, &target);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.hat_effect(bl, tbl, target);
+ }
+ if (HPMHooks.count.HP_clif_hat_effect_post > 0) {
+ void (*postHookFunc) (struct block_list *bl, struct block_list *tbl, enum send_target target);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_hat_effect_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_hat_effect_post[hIndex].func;
+ postHookFunc(bl, tbl, target);
+ }
+ }
+ return;
+}
+void HP_clif_hat_effect_single(struct block_list *bl, uint16 effectId, bool enable) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_hat_effect_single_pre > 0) {
+ void (*preHookFunc) (struct block_list **bl, uint16 *effectId, bool *enable);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_hat_effect_single_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_hat_effect_single_pre[hIndex].func;
+ preHookFunc(&bl, &effectId, &enable);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.hat_effect_single(bl, effectId, enable);
+ }
+ if (HPMHooks.count.HP_clif_hat_effect_single_post > 0) {
+ void (*postHookFunc) (struct block_list *bl, uint16 effectId, bool enable);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_hat_effect_single_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_hat_effect_single_post[hIndex].func;
+ postHookFunc(bl, effectId, enable);
+ }
+ }
+ return;
+}
+void HP_clif_overweight_percent(struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_overweight_percent_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_overweight_percent_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_overweight_percent_pre[hIndex].func;
+ preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.overweight_percent(sd);
+ }
+ if (HPMHooks.count.HP_clif_overweight_percent_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_overweight_percent_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_overweight_percent_post[hIndex].func;
+ postHookFunc(sd);
+ }
+ }
+ return;
+}
+void HP_clif_pChangeDress(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pChangeDress_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChangeDress_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pChangeDress_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pChangeDress(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pChangeDress_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pChangeDress_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pChangeDress_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+bool HP_clif_pAttendanceDB(void) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_clif_pAttendanceDB_pre > 0) {
+ bool (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAttendanceDB_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pAttendanceDB_pre[hIndex].func;
+ retVal___ = preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.clif.pAttendanceDB();
+ }
+ if (HPMHooks.count.HP_clif_pAttendanceDB_post > 0) {
+ bool (*postHookFunc) (bool retVal___);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAttendanceDB_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pAttendanceDB_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___);
+ }
+ }
+ return retVal___;
+}
+bool HP_clif_attendancedb_libconfig_sub(struct config_setting_t *it, int n, const char *source) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_clif_attendancedb_libconfig_sub_pre > 0) {
+ bool (*preHookFunc) (struct config_setting_t **it, int *n, const char **source);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_attendancedb_libconfig_sub_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_attendancedb_libconfig_sub_pre[hIndex].func;
+ retVal___ = preHookFunc(&it, &n, &source);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.clif.attendancedb_libconfig_sub(it, n, source);
+ }
+ if (HPMHooks.count.HP_clif_attendancedb_libconfig_sub_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct config_setting_t *it, int n, const char *source);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_attendancedb_libconfig_sub_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_attendancedb_libconfig_sub_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, it, n, source);
+ }
+ }
+ return retVal___;
+}
+bool HP_clif_attendance_timediff(struct map_session_data *sd) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_clif_attendance_timediff_pre > 0) {
+ bool (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_attendance_timediff_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_attendance_timediff_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.clif.attendance_timediff(sd);
+ }
+ if (HPMHooks.count.HP_clif_attendance_timediff_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_attendance_timediff_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_attendance_timediff_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd);
+ }
+ }
+ return retVal___;
+}
+time_t HP_clif_attendance_getendtime(void) {
+ int hIndex = 0;
+ time_t retVal___ = 0;
+ if (HPMHooks.count.HP_clif_attendance_getendtime_pre > 0) {
+ time_t (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_attendance_getendtime_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_attendance_getendtime_pre[hIndex].func;
+ retVal___ = preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.clif.attendance_getendtime();
+ }
+ if (HPMHooks.count.HP_clif_attendance_getendtime_post > 0) {
+ time_t (*postHookFunc) (time_t retVal___);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_attendance_getendtime_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_attendance_getendtime_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___);
+ }
+ }
+ return retVal___;
+}
+void HP_clif_pOpenUIRequest(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pOpenUIRequest_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pOpenUIRequest_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pOpenUIRequest_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pOpenUIRequest(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pOpenUIRequest_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pOpenUIRequest_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pOpenUIRequest_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_open_ui(struct map_session_data *sd, enum cz_ui_types uiType) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_open_ui_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, enum cz_ui_types *uiType);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_open_ui_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_open_ui_pre[hIndex].func;
+ preHookFunc(&sd, &uiType);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.open_ui(sd, uiType);
+ }
+ if (HPMHooks.count.HP_clif_open_ui_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, enum cz_ui_types uiType);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_open_ui_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_open_ui_post[hIndex].func;
+ postHookFunc(sd, uiType);
+ }
+ }
+ return;
+}
+void HP_clif_pAttendanceRewardRequest(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pAttendanceRewardRequest_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAttendanceRewardRequest_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pAttendanceRewardRequest_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pAttendanceRewardRequest(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pAttendanceRewardRequest_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pAttendanceRewardRequest_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pAttendanceRewardRequest_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_ui_action(struct map_session_data *sd, int32 UIType, int32 data) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_ui_action_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int32 *UIType, int32 *data);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_ui_action_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_ui_action_pre[hIndex].func;
+ preHookFunc(&sd, &UIType, &data);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.ui_action(sd, UIType, data);
+ }
+ if (HPMHooks.count.HP_clif_ui_action_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int32 UIType, int32 data);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_ui_action_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_ui_action_post[hIndex].func;
+ postHookFunc(sd, UIType, data);
+ }
+ }
+ return;
+}
+void HP_clif_pPrivateAirshipRequest(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pPrivateAirshipRequest_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPrivateAirshipRequest_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pPrivateAirshipRequest_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pPrivateAirshipRequest(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pPrivateAirshipRequest_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPrivateAirshipRequest_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pPrivateAirshipRequest_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_PrivateAirshipResponse(struct map_session_data *sd, uint32 flag) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_PrivateAirshipResponse_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, uint32 *flag);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PrivateAirshipResponse_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_PrivateAirshipResponse_pre[hIndex].func;
+ preHookFunc(&sd, &flag);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.PrivateAirshipResponse(sd, flag);
+ }
+ if (HPMHooks.count.HP_clif_PrivateAirshipResponse_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, uint32 flag);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_PrivateAirshipResponse_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_PrivateAirshipResponse_post[hIndex].func;
+ postHookFunc(sd, flag);
+ }
+ }
+ return;
+}
+void HP_clif_stylist_vector_init(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_stylist_vector_init_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_stylist_vector_init_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_stylist_vector_init_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.stylist_vector_init();
+ }
+ if (HPMHooks.count.HP_clif_stylist_vector_init_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_stylist_vector_init_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_stylist_vector_init_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+void HP_clif_stylist_vector_clear(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_stylist_vector_clear_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_stylist_vector_clear_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_stylist_vector_clear_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.stylist_vector_clear();
+ }
+ if (HPMHooks.count.HP_clif_stylist_vector_clear_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_stylist_vector_clear_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_stylist_vector_clear_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+bool HP_clif_stylist_read_db_libconfig(void) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_clif_stylist_read_db_libconfig_pre > 0) {
+ bool (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_stylist_read_db_libconfig_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_stylist_read_db_libconfig_pre[hIndex].func;
+ retVal___ = preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.clif.stylist_read_db_libconfig();
+ }
+ if (HPMHooks.count.HP_clif_stylist_read_db_libconfig_post > 0) {
+ bool (*postHookFunc) (bool retVal___);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_stylist_read_db_libconfig_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_stylist_read_db_libconfig_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___);
+ }
+ }
+ return retVal___;
+}
+bool HP_clif_stylist_read_db_libconfig_sub(struct config_setting_t *it, int idx, const char *source) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_clif_stylist_read_db_libconfig_sub_pre > 0) {
+ bool (*preHookFunc) (struct config_setting_t **it, int *idx, const char **source);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_stylist_read_db_libconfig_sub_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_stylist_read_db_libconfig_sub_pre[hIndex].func;
+ retVal___ = preHookFunc(&it, &idx, &source);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.clif.stylist_read_db_libconfig_sub(it, idx, source);
+ }
+ if (HPMHooks.count.HP_clif_stylist_read_db_libconfig_sub_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct config_setting_t *it, int idx, const char *source);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_stylist_read_db_libconfig_sub_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_stylist_read_db_libconfig_sub_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, it, idx, source);
+ }
+ }
+ return retVal___;
+}
+bool HP_clif_style_change_validate_requirements(struct map_session_data *sd, int type, int16 idx) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_clif_style_change_validate_requirements_pre > 0) {
+ bool (*preHookFunc) (struct map_session_data **sd, int *type, int16 *idx);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_style_change_validate_requirements_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_style_change_validate_requirements_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &type, &idx);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.clif.style_change_validate_requirements(sd, type, idx);
+ }
+ if (HPMHooks.count.HP_clif_style_change_validate_requirements_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, int type, int16 idx);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_style_change_validate_requirements_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_style_change_validate_requirements_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, type, idx);
+ }
+ }
+ return retVal___;
+}
+void HP_clif_stylist_send_rodexitem(struct map_session_data *sd, int itemid) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_stylist_send_rodexitem_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int *itemid);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_stylist_send_rodexitem_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_stylist_send_rodexitem_pre[hIndex].func;
+ preHookFunc(&sd, &itemid);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.stylist_send_rodexitem(sd, itemid);
+ }
+ if (HPMHooks.count.HP_clif_stylist_send_rodexitem_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int itemid);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_stylist_send_rodexitem_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_stylist_send_rodexitem_post[hIndex].func;
+ postHookFunc(sd, itemid);
+ }
+ }
+ return;
+}
+void HP_clif_pReqStyleChange(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pReqStyleChange_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReqStyleChange_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pReqStyleChange_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pReqStyleChange(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pReqStyleChange_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReqStyleChange_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pReqStyleChange_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_pReqStyleChange2(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pReqStyleChange2_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReqStyleChange2_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pReqStyleChange2_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pReqStyleChange2(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pReqStyleChange2_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReqStyleChange2_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pReqStyleChange2_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_cz_req_style_change_sub(struct map_session_data *sd, int type, int16 idx, bool isitem) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_cz_req_style_change_sub_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int *type, int16 *idx, bool *isitem);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_cz_req_style_change_sub_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_cz_req_style_change_sub_pre[hIndex].func;
+ preHookFunc(&sd, &type, &idx, &isitem);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.cz_req_style_change_sub(sd, type, idx, isitem);
+ }
+ if (HPMHooks.count.HP_clif_cz_req_style_change_sub_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int type, int16 idx, bool isitem);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_cz_req_style_change_sub_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_cz_req_style_change_sub_post[hIndex].func;
+ postHookFunc(sd, type, idx, isitem);
+ }
+ }
+ return;
+}
+void HP_clif_style_change_response(struct map_session_data *sd, enum stylist_shop flag) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_style_change_response_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, enum stylist_shop *flag);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_style_change_response_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_style_change_response_pre[hIndex].func;
+ preHookFunc(&sd, &flag);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.style_change_response(sd, flag);
+ }
+ if (HPMHooks.count.HP_clif_style_change_response_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, enum stylist_shop flag);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_style_change_response_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_style_change_response_post[hIndex].func;
+ postHookFunc(sd, flag);
+ }
+ }
+ return;
+}
+void HP_clif_pPetEvolution(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pPetEvolution_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPetEvolution_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pPetEvolution_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pPetEvolution(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pPetEvolution_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pPetEvolution_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pPetEvolution_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_petEvolutionResult(int fd, enum pet_evolution_result result) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_petEvolutionResult_pre > 0) {
+ void (*preHookFunc) (int *fd, enum pet_evolution_result *result);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_petEvolutionResult_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_petEvolutionResult_pre[hIndex].func;
+ preHookFunc(&fd, &result);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.petEvolutionResult(fd, result);
+ }
+ if (HPMHooks.count.HP_clif_petEvolutionResult_post > 0) {
+ void (*postHookFunc) (int fd, enum pet_evolution_result result);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_petEvolutionResult_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_petEvolutionResult_post[hIndex].func;
+ postHookFunc(fd, result);
+ }
+ }
+ return;
+}
+void HP_clif_party_dead_notification(struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_party_dead_notification_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_dead_notification_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_party_dead_notification_pre[hIndex].func;
+ preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.party_dead_notification(sd);
+ }
+ if (HPMHooks.count.HP_clif_party_dead_notification_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_party_dead_notification_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_party_dead_notification_post[hIndex].func;
+ postHookFunc(sd);
+ }
+ }
+ return;
+}
+void HP_clif_pMemorialDungeonCommand(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pMemorialDungeonCommand_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMemorialDungeonCommand_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pMemorialDungeonCommand_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pMemorialDungeonCommand(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pMemorialDungeonCommand_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pMemorialDungeonCommand_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pMemorialDungeonCommand_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_camera_showWindow(struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_camera_showWindow_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_camera_showWindow_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_camera_showWindow_pre[hIndex].func;
+ preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.camera_showWindow(sd);
+ }
+ if (HPMHooks.count.HP_clif_camera_showWindow_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_camera_showWindow_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_camera_showWindow_post[hIndex].func;
+ postHookFunc(sd);
+ }
+ }
+ return;
+}
+void HP_clif_camera_change(struct map_session_data *sd, float range, float rotation, float latitude, enum send_target target) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_camera_change_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, float *range, float *rotation, float *latitude, enum send_target *target);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_camera_change_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_camera_change_pre[hIndex].func;
+ preHookFunc(&sd, &range, &rotation, &latitude, &target);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.camera_change(sd, range, rotation, latitude, target);
+ }
+ if (HPMHooks.count.HP_clif_camera_change_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, float range, float rotation, float latitude, enum send_target target);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_camera_change_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_camera_change_post[hIndex].func;
+ postHookFunc(sd, range, rotation, latitude, target);
+ }
+ }
+ return;
+}
+void HP_clif_pCameraInfo(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pCameraInfo_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCameraInfo_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pCameraInfo_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pCameraInfo(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pCameraInfo_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pCameraInfo_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pCameraInfo_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_item_preview(struct map_session_data *sd, int n) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_item_preview_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int *n);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_preview_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_item_preview_pre[hIndex].func;
+ preHookFunc(&sd, &n);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.item_preview(sd, n);
+ }
+ if (HPMHooks.count.HP_clif_item_preview_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int n);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_preview_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_item_preview_post[hIndex].func;
+ postHookFunc(sd, n);
+ }
+ }
+ return;
+}
+bool HP_clif_enchant_equipment(struct map_session_data *sd, enum equip_pos pos, int cardSlot, int cardId) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_clif_enchant_equipment_pre > 0) {
+ bool (*preHookFunc) (struct map_session_data **sd, enum equip_pos *pos, int *cardSlot, int *cardId);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_enchant_equipment_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_enchant_equipment_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &pos, &cardSlot, &cardId);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.clif.enchant_equipment(sd, pos, cardSlot, cardId);
+ }
+ if (HPMHooks.count.HP_clif_enchant_equipment_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, enum equip_pos pos, int cardSlot, int cardId);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_enchant_equipment_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_enchant_equipment_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, pos, cardSlot, cardId);
+ }
+ }
+ return retVal___;
+}
+void HP_clif_pReqRemainTime(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pReqRemainTime_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReqRemainTime_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pReqRemainTime_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pReqRemainTime(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pReqRemainTime_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReqRemainTime_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pReqRemainTime_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_npc_barter_open(struct map_session_data *sd, struct npc_data *nd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_npc_barter_open_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, struct npc_data **nd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_npc_barter_open_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_npc_barter_open_pre[hIndex].func;
+ preHookFunc(&sd, &nd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.npc_barter_open(sd, nd);
+ }
+ if (HPMHooks.count.HP_clif_npc_barter_open_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, struct npc_data *nd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_npc_barter_open_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_npc_barter_open_post[hIndex].func;
+ postHookFunc(sd, nd);
+ }
+ }
+ return;
+}
+void HP_clif_pNPCBarterClosed(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pNPCBarterClosed_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNPCBarterClosed_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pNPCBarterClosed_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pNPCBarterClosed(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pNPCBarterClosed_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNPCBarterClosed_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pNPCBarterClosed_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_pNPCBarterPurchase(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pNPCBarterPurchase_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNPCBarterPurchase_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pNPCBarterPurchase_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pNPCBarterPurchase(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pNPCBarterPurchase_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNPCBarterPurchase_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pNPCBarterPurchase_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
/* cmdline_interface */
void HP_cmdline_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_cmdline_init_pre ) {
+ if (HPMHooks.count.HP_cmdline_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_cmdline_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -24402,9 +29426,9 @@ void HP_cmdline_init(void) {
{
HPMHooks.source.cmdline.init();
}
- if( HPMHooks.count.HP_cmdline_init_post ) {
+ if (HPMHooks.count.HP_cmdline_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_cmdline_init_post[hIndex].func;
postHookFunc();
}
@@ -24413,14 +29437,14 @@ void HP_cmdline_init(void) {
}
void HP_cmdline_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_cmdline_final_pre ) {
+ if (HPMHooks.count.HP_cmdline_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_cmdline_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -24428,9 +29452,9 @@ void HP_cmdline_final(void) {
{
HPMHooks.source.cmdline.final();
}
- if( HPMHooks.count.HP_cmdline_final_post ) {
+ if (HPMHooks.count.HP_cmdline_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_cmdline_final_post[hIndex].func;
postHookFunc();
}
@@ -24440,14 +29464,14 @@ void HP_cmdline_final(void) {
bool HP_cmdline_arg_add(unsigned int pluginID, const char *name, char shortname, CmdlineExecFunc func, const char *help, unsigned int options) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_cmdline_arg_add_pre ) {
+ if (HPMHooks.count.HP_cmdline_arg_add_pre > 0) {
bool (*preHookFunc) (unsigned int *pluginID, const char **name, char *shortname, CmdlineExecFunc *func, const char **help, unsigned int *options);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_add_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_add_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_cmdline_arg_add_pre[hIndex].func;
retVal___ = preHookFunc(&pluginID, &name, &shortname, &func, &help, &options);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -24455,9 +29479,9 @@ bool HP_cmdline_arg_add(unsigned int pluginID, const char *name, char shortname,
{
retVal___ = HPMHooks.source.cmdline.arg_add(pluginID, name, shortname, func, help, options);
}
- if( HPMHooks.count.HP_cmdline_arg_add_post ) {
+ if (HPMHooks.count.HP_cmdline_arg_add_post > 0) {
bool (*postHookFunc) (bool retVal___, unsigned int pluginID, const char *name, char shortname, CmdlineExecFunc func, const char *help, unsigned int options);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_add_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_add_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_cmdline_arg_add_post[hIndex].func;
retVal___ = postHookFunc(retVal___, pluginID, name, shortname, func, help, options);
}
@@ -24467,14 +29491,14 @@ bool HP_cmdline_arg_add(unsigned int pluginID, const char *name, char shortname,
int HP_cmdline_exec(int argc, char **argv, unsigned int options) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_cmdline_exec_pre ) {
+ if (HPMHooks.count.HP_cmdline_exec_pre > 0) {
int (*preHookFunc) (int *argc, char ***argv, unsigned int *options);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_exec_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_exec_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_cmdline_exec_pre[hIndex].func;
retVal___ = preHookFunc(&argc, &argv, &options);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -24482,9 +29506,9 @@ int HP_cmdline_exec(int argc, char **argv, unsigned int options) {
{
retVal___ = HPMHooks.source.cmdline.exec(argc, argv, options);
}
- if( HPMHooks.count.HP_cmdline_exec_post ) {
+ if (HPMHooks.count.HP_cmdline_exec_post > 0) {
int (*postHookFunc) (int retVal___, int argc, char **argv, unsigned int options);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_exec_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_exec_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_cmdline_exec_post[hIndex].func;
retVal___ = postHookFunc(retVal___, argc, argv, options);
}
@@ -24494,14 +29518,14 @@ int HP_cmdline_exec(int argc, char **argv, unsigned int options) {
bool HP_cmdline_arg_next_value(const char *name, int current_arg, int argc) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_cmdline_arg_next_value_pre ) {
+ if (HPMHooks.count.HP_cmdline_arg_next_value_pre > 0) {
bool (*preHookFunc) (const char **name, int *current_arg, int *argc);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_next_value_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_next_value_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_cmdline_arg_next_value_pre[hIndex].func;
retVal___ = preHookFunc(&name, &current_arg, &argc);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -24509,9 +29533,9 @@ bool HP_cmdline_arg_next_value(const char *name, int current_arg, int argc) {
{
retVal___ = HPMHooks.source.cmdline.arg_next_value(name, current_arg, argc);
}
- if( HPMHooks.count.HP_cmdline_arg_next_value_post ) {
+ if (HPMHooks.count.HP_cmdline_arg_next_value_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *name, int current_arg, int argc);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_next_value_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_next_value_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_cmdline_arg_next_value_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name, current_arg, argc);
}
@@ -24521,14 +29545,14 @@ bool HP_cmdline_arg_next_value(const char *name, int current_arg, int argc) {
const char* HP_cmdline_arg_source(struct CmdlineArgData *arg) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_cmdline_arg_source_pre ) {
+ if (HPMHooks.count.HP_cmdline_arg_source_pre > 0) {
const char* (*preHookFunc) (struct CmdlineArgData **arg);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_source_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_source_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_cmdline_arg_source_pre[hIndex].func;
retVal___ = preHookFunc(&arg);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -24536,9 +29560,9 @@ const char* HP_cmdline_arg_source(struct CmdlineArgData *arg) {
{
retVal___ = HPMHooks.source.cmdline.arg_source(arg);
}
- if( HPMHooks.count.HP_cmdline_arg_source_post ) {
+ if (HPMHooks.count.HP_cmdline_arg_source_post > 0) {
const char* (*postHookFunc) (const char* retVal___, struct CmdlineArgData *arg);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_source_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_cmdline_arg_source_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_cmdline_arg_source_post[hIndex].func;
retVal___ = postHookFunc(retVal___, arg);
}
@@ -24548,14 +29572,14 @@ const char* HP_cmdline_arg_source(struct CmdlineArgData *arg) {
/* console_interface */
void HP_console_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_console_init_pre ) {
+ if (HPMHooks.count.HP_console_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_console_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_console_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_console_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -24563,9 +29587,9 @@ void HP_console_init(void) {
{
HPMHooks.source.console.init();
}
- if( HPMHooks.count.HP_console_init_post ) {
+ if (HPMHooks.count.HP_console_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_console_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_console_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_console_init_post[hIndex].func;
postHookFunc();
}
@@ -24574,14 +29598,14 @@ void HP_console_init(void) {
}
void HP_console_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_console_final_pre ) {
+ if (HPMHooks.count.HP_console_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_console_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_console_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_console_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -24589,9 +29613,9 @@ void HP_console_final(void) {
{
HPMHooks.source.console.final();
}
- if( HPMHooks.count.HP_console_final_post ) {
+ if (HPMHooks.count.HP_console_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_console_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_console_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_console_final_post[hIndex].func;
postHookFunc();
}
@@ -24600,14 +29624,14 @@ void HP_console_final(void) {
}
void HP_console_display_title(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_console_display_title_pre ) {
+ if (HPMHooks.count.HP_console_display_title_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_console_display_title_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_console_display_title_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_console_display_title_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -24615,9 +29639,9 @@ void HP_console_display_title(void) {
{
HPMHooks.source.console.display_title();
}
- if( HPMHooks.count.HP_console_display_title_post ) {
+ if (HPMHooks.count.HP_console_display_title_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_console_display_title_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_console_display_title_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_console_display_title_post[hIndex].func;
postHookFunc();
}
@@ -24626,14 +29650,14 @@ void HP_console_display_title(void) {
}
void HP_console_display_gplnotice(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_console_display_gplnotice_pre ) {
+ if (HPMHooks.count.HP_console_display_gplnotice_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_console_display_gplnotice_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_console_display_gplnotice_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_console_display_gplnotice_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -24641,9 +29665,9 @@ void HP_console_display_gplnotice(void) {
{
HPMHooks.source.console.display_gplnotice();
}
- if( HPMHooks.count.HP_console_display_gplnotice_post ) {
+ if (HPMHooks.count.HP_console_display_gplnotice_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_console_display_gplnotice_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_console_display_gplnotice_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_console_display_gplnotice_post[hIndex].func;
postHookFunc();
}
@@ -24653,14 +29677,14 @@ void HP_console_display_gplnotice(void) {
/* core_interface */
void HP_core_shutdown_callback(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_core_shutdown_callback_pre ) {
+ if (HPMHooks.count.HP_core_shutdown_callback_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_core_shutdown_callback_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_core_shutdown_callback_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_core_shutdown_callback_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -24668,9 +29692,9 @@ void HP_core_shutdown_callback(void) {
{
HPMHooks.source.core.shutdown_callback();
}
- if( HPMHooks.count.HP_core_shutdown_callback_post ) {
+ if (HPMHooks.count.HP_core_shutdown_callback_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_core_shutdown_callback_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_core_shutdown_callback_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_core_shutdown_callback_post[hIndex].func;
postHookFunc();
}
@@ -24681,14 +29705,14 @@ void HP_core_shutdown_callback(void) {
enum DBOptions HP_DB_fix_options(enum DBType type, enum DBOptions options) {
int hIndex = 0;
enum DBOptions retVal___ = DB_OPT_BASE;
- if( HPMHooks.count.HP_DB_fix_options_pre ) {
+ if (HPMHooks.count.HP_DB_fix_options_pre > 0) {
enum DBOptions (*preHookFunc) (enum DBType *type, enum DBOptions *options);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_fix_options_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_fix_options_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_fix_options_pre[hIndex].func;
retVal___ = preHookFunc(&type, &options);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -24696,9 +29720,9 @@ enum DBOptions HP_DB_fix_options(enum DBType type, enum DBOptions options) {
{
retVal___ = HPMHooks.source.DB.fix_options(type, options);
}
- if( HPMHooks.count.HP_DB_fix_options_post ) {
+ if (HPMHooks.count.HP_DB_fix_options_post > 0) {
enum DBOptions (*postHookFunc) (enum DBOptions retVal___, enum DBType type, enum DBOptions options);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_fix_options_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_fix_options_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_fix_options_post[hIndex].func;
retVal___ = postHookFunc(retVal___, type, options);
}
@@ -24708,14 +29732,14 @@ enum DBOptions HP_DB_fix_options(enum DBType type, enum DBOptions options) {
DBComparator HP_DB_default_cmp(enum DBType type) {
int hIndex = 0;
DBComparator retVal___ = NULL;
- if( HPMHooks.count.HP_DB_default_cmp_pre ) {
+ if (HPMHooks.count.HP_DB_default_cmp_pre > 0) {
DBComparator (*preHookFunc) (enum DBType *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_cmp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_cmp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_default_cmp_pre[hIndex].func;
retVal___ = preHookFunc(&type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -24723,9 +29747,9 @@ DBComparator HP_DB_default_cmp(enum DBType type) {
{
retVal___ = HPMHooks.source.DB.default_cmp(type);
}
- if( HPMHooks.count.HP_DB_default_cmp_post ) {
+ if (HPMHooks.count.HP_DB_default_cmp_post > 0) {
DBComparator (*postHookFunc) (DBComparator retVal___, enum DBType type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_cmp_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_cmp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_default_cmp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, type);
}
@@ -24735,14 +29759,14 @@ DBComparator HP_DB_default_cmp(enum DBType type) {
DBHasher HP_DB_default_hash(enum DBType type) {
int hIndex = 0;
DBHasher retVal___ = NULL;
- if( HPMHooks.count.HP_DB_default_hash_pre ) {
+ if (HPMHooks.count.HP_DB_default_hash_pre > 0) {
DBHasher (*preHookFunc) (enum DBType *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_hash_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_hash_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_default_hash_pre[hIndex].func;
retVal___ = preHookFunc(&type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -24750,9 +29774,9 @@ DBHasher HP_DB_default_hash(enum DBType type) {
{
retVal___ = HPMHooks.source.DB.default_hash(type);
}
- if( HPMHooks.count.HP_DB_default_hash_post ) {
+ if (HPMHooks.count.HP_DB_default_hash_post > 0) {
DBHasher (*postHookFunc) (DBHasher retVal___, enum DBType type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_hash_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_hash_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_default_hash_post[hIndex].func;
retVal___ = postHookFunc(retVal___, type);
}
@@ -24762,14 +29786,14 @@ DBHasher HP_DB_default_hash(enum DBType type) {
DBReleaser HP_DB_default_release(enum DBType type, enum DBOptions options) {
int hIndex = 0;
DBReleaser retVal___ = NULL;
- if( HPMHooks.count.HP_DB_default_release_pre ) {
+ if (HPMHooks.count.HP_DB_default_release_pre > 0) {
DBReleaser (*preHookFunc) (enum DBType *type, enum DBOptions *options);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_release_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_release_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_default_release_pre[hIndex].func;
retVal___ = preHookFunc(&type, &options);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -24777,9 +29801,9 @@ DBReleaser HP_DB_default_release(enum DBType type, enum DBOptions options) {
{
retVal___ = HPMHooks.source.DB.default_release(type, options);
}
- if( HPMHooks.count.HP_DB_default_release_post ) {
+ if (HPMHooks.count.HP_DB_default_release_post > 0) {
DBReleaser (*postHookFunc) (DBReleaser retVal___, enum DBType type, enum DBOptions options);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_release_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_default_release_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_default_release_post[hIndex].func;
retVal___ = postHookFunc(retVal___, type, options);
}
@@ -24789,14 +29813,14 @@ DBReleaser HP_DB_default_release(enum DBType type, enum DBOptions options) {
DBReleaser HP_DB_custom_release(enum DBReleaseOption which) {
int hIndex = 0;
DBReleaser retVal___ = NULL;
- if( HPMHooks.count.HP_DB_custom_release_pre ) {
+ if (HPMHooks.count.HP_DB_custom_release_pre > 0) {
DBReleaser (*preHookFunc) (enum DBReleaseOption *which);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_custom_release_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_custom_release_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_custom_release_pre[hIndex].func;
retVal___ = preHookFunc(&which);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -24804,9 +29828,9 @@ DBReleaser HP_DB_custom_release(enum DBReleaseOption which) {
{
retVal___ = HPMHooks.source.DB.custom_release(which);
}
- if( HPMHooks.count.HP_DB_custom_release_post ) {
+ if (HPMHooks.count.HP_DB_custom_release_post > 0) {
DBReleaser (*postHookFunc) (DBReleaser retVal___, enum DBReleaseOption which);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_custom_release_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_custom_release_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_custom_release_post[hIndex].func;
retVal___ = postHookFunc(retVal___, which);
}
@@ -24816,14 +29840,14 @@ DBReleaser HP_DB_custom_release(enum DBReleaseOption which) {
struct DBMap* HP_DB_alloc(const char *file, const char *func, int line, enum DBType type, enum DBOptions options, unsigned short maxlen) {
int hIndex = 0;
struct DBMap* retVal___ = NULL;
- if( HPMHooks.count.HP_DB_alloc_pre ) {
+ if (HPMHooks.count.HP_DB_alloc_pre > 0) {
struct DBMap* (*preHookFunc) (const char **file, const char **func, int *line, enum DBType *type, enum DBOptions *options, unsigned short *maxlen);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_alloc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_alloc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_alloc_pre[hIndex].func;
retVal___ = preHookFunc(&file, &func, &line, &type, &options, &maxlen);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -24831,9 +29855,9 @@ struct DBMap* HP_DB_alloc(const char *file, const char *func, int line, enum DBT
{
retVal___ = HPMHooks.source.DB.alloc(file, func, line, type, options, maxlen);
}
- if( HPMHooks.count.HP_DB_alloc_post ) {
+ if (HPMHooks.count.HP_DB_alloc_post > 0) {
struct DBMap* (*postHookFunc) (struct DBMap* retVal___, const char *file, const char *func, int line, enum DBType type, enum DBOptions options, unsigned short maxlen);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_alloc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_alloc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_alloc_post[hIndex].func;
retVal___ = postHookFunc(retVal___, file, func, line, type, options, maxlen);
}
@@ -24843,14 +29867,14 @@ struct DBMap* HP_DB_alloc(const char *file, const char *func, int line, enum DBT
union DBKey HP_DB_i2key(int key) {
int hIndex = 0;
union DBKey retVal___ = { 0 };
- if( HPMHooks.count.HP_DB_i2key_pre ) {
+ if (HPMHooks.count.HP_DB_i2key_pre > 0) {
union DBKey (*preHookFunc) (int *key);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_i2key_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_i2key_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_i2key_pre[hIndex].func;
retVal___ = preHookFunc(&key);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -24858,9 +29882,9 @@ union DBKey HP_DB_i2key(int key) {
{
retVal___ = HPMHooks.source.DB.i2key(key);
}
- if( HPMHooks.count.HP_DB_i2key_post ) {
+ if (HPMHooks.count.HP_DB_i2key_post > 0) {
union DBKey (*postHookFunc) (union DBKey retVal___, int key);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_i2key_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_i2key_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_i2key_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key);
}
@@ -24870,14 +29894,14 @@ union DBKey HP_DB_i2key(int key) {
union DBKey HP_DB_ui2key(unsigned int key) {
int hIndex = 0;
union DBKey retVal___ = { 0 };
- if( HPMHooks.count.HP_DB_ui2key_pre ) {
+ if (HPMHooks.count.HP_DB_ui2key_pre > 0) {
union DBKey (*preHookFunc) (unsigned int *key);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui2key_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui2key_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_ui2key_pre[hIndex].func;
retVal___ = preHookFunc(&key);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -24885,9 +29909,9 @@ union DBKey HP_DB_ui2key(unsigned int key) {
{
retVal___ = HPMHooks.source.DB.ui2key(key);
}
- if( HPMHooks.count.HP_DB_ui2key_post ) {
+ if (HPMHooks.count.HP_DB_ui2key_post > 0) {
union DBKey (*postHookFunc) (union DBKey retVal___, unsigned int key);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui2key_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui2key_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_ui2key_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key);
}
@@ -24897,14 +29921,14 @@ union DBKey HP_DB_ui2key(unsigned int key) {
union DBKey HP_DB_str2key(const char *key) {
int hIndex = 0;
union DBKey retVal___ = { 0 };
- if( HPMHooks.count.HP_DB_str2key_pre ) {
+ if (HPMHooks.count.HP_DB_str2key_pre > 0) {
union DBKey (*preHookFunc) (const char **key);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_str2key_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_str2key_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_str2key_pre[hIndex].func;
retVal___ = preHookFunc(&key);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -24912,9 +29936,9 @@ union DBKey HP_DB_str2key(const char *key) {
{
retVal___ = HPMHooks.source.DB.str2key(key);
}
- if( HPMHooks.count.HP_DB_str2key_post ) {
+ if (HPMHooks.count.HP_DB_str2key_post > 0) {
union DBKey (*postHookFunc) (union DBKey retVal___, const char *key);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_str2key_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_str2key_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_str2key_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key);
}
@@ -24924,14 +29948,14 @@ union DBKey HP_DB_str2key(const char *key) {
union DBKey HP_DB_i642key(int64 key) {
int hIndex = 0;
union DBKey retVal___ = { 0 };
- if( HPMHooks.count.HP_DB_i642key_pre ) {
+ if (HPMHooks.count.HP_DB_i642key_pre > 0) {
union DBKey (*preHookFunc) (int64 *key);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_i642key_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_i642key_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_i642key_pre[hIndex].func;
retVal___ = preHookFunc(&key);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -24939,9 +29963,9 @@ union DBKey HP_DB_i642key(int64 key) {
{
retVal___ = HPMHooks.source.DB.i642key(key);
}
- if( HPMHooks.count.HP_DB_i642key_post ) {
+ if (HPMHooks.count.HP_DB_i642key_post > 0) {
union DBKey (*postHookFunc) (union DBKey retVal___, int64 key);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_i642key_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_i642key_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_i642key_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key);
}
@@ -24951,14 +29975,14 @@ union DBKey HP_DB_i642key(int64 key) {
union DBKey HP_DB_ui642key(uint64 key) {
int hIndex = 0;
union DBKey retVal___ = { 0 };
- if( HPMHooks.count.HP_DB_ui642key_pre ) {
+ if (HPMHooks.count.HP_DB_ui642key_pre > 0) {
union DBKey (*preHookFunc) (uint64 *key);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui642key_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui642key_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_ui642key_pre[hIndex].func;
retVal___ = preHookFunc(&key);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -24966,9 +29990,9 @@ union DBKey HP_DB_ui642key(uint64 key) {
{
retVal___ = HPMHooks.source.DB.ui642key(key);
}
- if( HPMHooks.count.HP_DB_ui642key_post ) {
+ if (HPMHooks.count.HP_DB_ui642key_post > 0) {
union DBKey (*postHookFunc) (union DBKey retVal___, uint64 key);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui642key_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui642key_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_ui642key_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key);
}
@@ -24978,14 +30002,14 @@ union DBKey HP_DB_ui642key(uint64 key) {
struct DBData HP_DB_i2data(int data) {
int hIndex = 0;
struct DBData retVal___ = { 0 };
- if( HPMHooks.count.HP_DB_i2data_pre ) {
+ if (HPMHooks.count.HP_DB_i2data_pre > 0) {
struct DBData (*preHookFunc) (int *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_i2data_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_i2data_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_i2data_pre[hIndex].func;
retVal___ = preHookFunc(&data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -24993,9 +30017,9 @@ struct DBData HP_DB_i2data(int data) {
{
retVal___ = HPMHooks.source.DB.i2data(data);
}
- if( HPMHooks.count.HP_DB_i2data_post ) {
+ if (HPMHooks.count.HP_DB_i2data_post > 0) {
struct DBData (*postHookFunc) (struct DBData retVal___, int data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_i2data_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_i2data_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_i2data_post[hIndex].func;
retVal___ = postHookFunc(retVal___, data);
}
@@ -25005,14 +30029,14 @@ struct DBData HP_DB_i2data(int data) {
struct DBData HP_DB_ui2data(unsigned int data) {
int hIndex = 0;
struct DBData retVal___ = { 0 };
- if( HPMHooks.count.HP_DB_ui2data_pre ) {
+ if (HPMHooks.count.HP_DB_ui2data_pre > 0) {
struct DBData (*preHookFunc) (unsigned int *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui2data_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui2data_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_ui2data_pre[hIndex].func;
retVal___ = preHookFunc(&data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -25020,9 +30044,9 @@ struct DBData HP_DB_ui2data(unsigned int data) {
{
retVal___ = HPMHooks.source.DB.ui2data(data);
}
- if( HPMHooks.count.HP_DB_ui2data_post ) {
+ if (HPMHooks.count.HP_DB_ui2data_post > 0) {
struct DBData (*postHookFunc) (struct DBData retVal___, unsigned int data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui2data_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_ui2data_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_ui2data_post[hIndex].func;
retVal___ = postHookFunc(retVal___, data);
}
@@ -25032,14 +30056,14 @@ struct DBData HP_DB_ui2data(unsigned int data) {
struct DBData HP_DB_ptr2data(void *data) {
int hIndex = 0;
struct DBData retVal___ = { 0 };
- if( HPMHooks.count.HP_DB_ptr2data_pre ) {
+ if (HPMHooks.count.HP_DB_ptr2data_pre > 0) {
struct DBData (*preHookFunc) (void **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_ptr2data_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_ptr2data_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_ptr2data_pre[hIndex].func;
retVal___ = preHookFunc(&data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -25047,9 +30071,9 @@ struct DBData HP_DB_ptr2data(void *data) {
{
retVal___ = HPMHooks.source.DB.ptr2data(data);
}
- if( HPMHooks.count.HP_DB_ptr2data_post ) {
+ if (HPMHooks.count.HP_DB_ptr2data_post > 0) {
struct DBData (*postHookFunc) (struct DBData retVal___, void *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_ptr2data_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_ptr2data_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_ptr2data_post[hIndex].func;
retVal___ = postHookFunc(retVal___, data);
}
@@ -25059,14 +30083,14 @@ struct DBData HP_DB_ptr2data(void *data) {
int HP_DB_data2i(struct DBData *data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_DB_data2i_pre ) {
+ if (HPMHooks.count.HP_DB_data2i_pre > 0) {
int (*preHookFunc) (struct DBData **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2i_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2i_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_data2i_pre[hIndex].func;
retVal___ = preHookFunc(&data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -25074,9 +30098,9 @@ int HP_DB_data2i(struct DBData *data) {
{
retVal___ = HPMHooks.source.DB.data2i(data);
}
- if( HPMHooks.count.HP_DB_data2i_post ) {
+ if (HPMHooks.count.HP_DB_data2i_post > 0) {
int (*postHookFunc) (int retVal___, struct DBData *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2i_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2i_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_data2i_post[hIndex].func;
retVal___ = postHookFunc(retVal___, data);
}
@@ -25086,14 +30110,14 @@ int HP_DB_data2i(struct DBData *data) {
unsigned int HP_DB_data2ui(struct DBData *data) {
int hIndex = 0;
unsigned int retVal___ = 0;
- if( HPMHooks.count.HP_DB_data2ui_pre ) {
+ if (HPMHooks.count.HP_DB_data2ui_pre > 0) {
unsigned int (*preHookFunc) (struct DBData **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2ui_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2ui_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_data2ui_pre[hIndex].func;
retVal___ = preHookFunc(&data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -25101,9 +30125,9 @@ unsigned int HP_DB_data2ui(struct DBData *data) {
{
retVal___ = HPMHooks.source.DB.data2ui(data);
}
- if( HPMHooks.count.HP_DB_data2ui_post ) {
+ if (HPMHooks.count.HP_DB_data2ui_post > 0) {
unsigned int (*postHookFunc) (unsigned int retVal___, struct DBData *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2ui_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2ui_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_data2ui_post[hIndex].func;
retVal___ = postHookFunc(retVal___, data);
}
@@ -25113,14 +30137,14 @@ unsigned int HP_DB_data2ui(struct DBData *data) {
void* HP_DB_data2ptr(struct DBData *data) {
int hIndex = 0;
void* retVal___ = NULL;
- if( HPMHooks.count.HP_DB_data2ptr_pre ) {
+ if (HPMHooks.count.HP_DB_data2ptr_pre > 0) {
void* (*preHookFunc) (struct DBData **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2ptr_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2ptr_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_data2ptr_pre[hIndex].func;
retVal___ = preHookFunc(&data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -25128,9 +30152,9 @@ void* HP_DB_data2ptr(struct DBData *data) {
{
retVal___ = HPMHooks.source.DB.data2ptr(data);
}
- if( HPMHooks.count.HP_DB_data2ptr_post ) {
+ if (HPMHooks.count.HP_DB_data2ptr_post > 0) {
void* (*postHookFunc) (void* retVal___, struct DBData *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2ptr_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_data2ptr_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_data2ptr_post[hIndex].func;
retVal___ = postHookFunc(retVal___, data);
}
@@ -25139,14 +30163,14 @@ void* HP_DB_data2ptr(struct DBData *data) {
}
void HP_DB_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_DB_init_pre ) {
+ if (HPMHooks.count.HP_DB_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -25154,9 +30178,9 @@ void HP_DB_init(void) {
{
HPMHooks.source.DB.init();
}
- if( HPMHooks.count.HP_DB_init_post ) {
+ if (HPMHooks.count.HP_DB_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_init_post[hIndex].func;
postHookFunc();
}
@@ -25165,14 +30189,14 @@ void HP_DB_init(void) {
}
void HP_DB_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_DB_final_pre ) {
+ if (HPMHooks.count.HP_DB_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_DB_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -25180,9 +30204,9 @@ void HP_DB_final(void) {
{
HPMHooks.source.DB.final();
}
- if( HPMHooks.count.HP_DB_final_post ) {
+ if (HPMHooks.count.HP_DB_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_DB_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_DB_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_DB_final_post[hIndex].func;
postHookFunc();
}
@@ -25192,14 +30216,14 @@ void HP_DB_final(void) {
/* des_interface */
void HP_des_decrypt_block(struct des_bit64 *block) {
int hIndex = 0;
- if( HPMHooks.count.HP_des_decrypt_block_pre ) {
+ if (HPMHooks.count.HP_des_decrypt_block_pre > 0) {
void (*preHookFunc) (struct des_bit64 **block);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_des_decrypt_block_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_des_decrypt_block_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_des_decrypt_block_pre[hIndex].func;
preHookFunc(&block);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -25207,9 +30231,9 @@ void HP_des_decrypt_block(struct des_bit64 *block) {
{
HPMHooks.source.des.decrypt_block(block);
}
- if( HPMHooks.count.HP_des_decrypt_block_post ) {
+ if (HPMHooks.count.HP_des_decrypt_block_post > 0) {
void (*postHookFunc) (struct des_bit64 *block);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_des_decrypt_block_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_des_decrypt_block_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_des_decrypt_block_post[hIndex].func;
postHookFunc(block);
}
@@ -25218,14 +30242,14 @@ void HP_des_decrypt_block(struct des_bit64 *block) {
}
void HP_des_decrypt(unsigned char *data, size_t size) {
int hIndex = 0;
- if( HPMHooks.count.HP_des_decrypt_pre ) {
+ if (HPMHooks.count.HP_des_decrypt_pre > 0) {
void (*preHookFunc) (unsigned char **data, size_t *size);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_des_decrypt_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_des_decrypt_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_des_decrypt_pre[hIndex].func;
preHookFunc(&data, &size);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -25233,9 +30257,9 @@ void HP_des_decrypt(unsigned char *data, size_t size) {
{
HPMHooks.source.des.decrypt(data, size);
}
- if( HPMHooks.count.HP_des_decrypt_post ) {
+ if (HPMHooks.count.HP_des_decrypt_post > 0) {
void (*postHookFunc) (unsigned char *data, size_t size);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_des_decrypt_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_des_decrypt_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_des_decrypt_post[hIndex].func;
postHookFunc(data, size);
}
@@ -25246,14 +30270,14 @@ void HP_des_decrypt(unsigned char *data, size_t size) {
int HP_duel_create(struct map_session_data *sd, const unsigned int maxpl) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_duel_create_pre ) {
+ if (HPMHooks.count.HP_duel_create_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, const unsigned int *maxpl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_duel_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_duel_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_duel_create_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &maxpl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -25261,9 +30285,9 @@ int HP_duel_create(struct map_session_data *sd, const unsigned int maxpl) {
{
retVal___ = HPMHooks.source.duel.create(sd, maxpl);
}
- if( HPMHooks.count.HP_duel_create_post ) {
+ if (HPMHooks.count.HP_duel_create_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, const unsigned int maxpl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_duel_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_duel_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_duel_create_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, maxpl);
}
@@ -25272,14 +30296,14 @@ int HP_duel_create(struct map_session_data *sd, const unsigned int maxpl) {
}
void HP_duel_invite(const unsigned int did, struct map_session_data *sd, struct map_session_data *target_sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_duel_invite_pre ) {
+ if (HPMHooks.count.HP_duel_invite_pre > 0) {
void (*preHookFunc) (const unsigned int *did, struct map_session_data **sd, struct map_session_data **target_sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_duel_invite_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_duel_invite_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_duel_invite_pre[hIndex].func;
preHookFunc(&did, &sd, &target_sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -25287,9 +30311,9 @@ void HP_duel_invite(const unsigned int did, struct map_session_data *sd, struct
{
HPMHooks.source.duel.invite(did, sd, target_sd);
}
- if( HPMHooks.count.HP_duel_invite_post ) {
+ if (HPMHooks.count.HP_duel_invite_post > 0) {
void (*postHookFunc) (const unsigned int did, struct map_session_data *sd, struct map_session_data *target_sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_duel_invite_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_duel_invite_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_duel_invite_post[hIndex].func;
postHookFunc(did, sd, target_sd);
}
@@ -25298,14 +30322,14 @@ void HP_duel_invite(const unsigned int did, struct map_session_data *sd, struct
}
void HP_duel_accept(const unsigned int did, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_duel_accept_pre ) {
+ if (HPMHooks.count.HP_duel_accept_pre > 0) {
void (*preHookFunc) (const unsigned int *did, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_duel_accept_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_duel_accept_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_duel_accept_pre[hIndex].func;
preHookFunc(&did, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -25313,9 +30337,9 @@ void HP_duel_accept(const unsigned int did, struct map_session_data *sd) {
{
HPMHooks.source.duel.accept(did, sd);
}
- if( HPMHooks.count.HP_duel_accept_post ) {
+ if (HPMHooks.count.HP_duel_accept_post > 0) {
void (*postHookFunc) (const unsigned int did, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_duel_accept_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_duel_accept_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_duel_accept_post[hIndex].func;
postHookFunc(did, sd);
}
@@ -25324,14 +30348,14 @@ void HP_duel_accept(const unsigned int did, struct map_session_data *sd) {
}
void HP_duel_reject(const unsigned int did, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_duel_reject_pre ) {
+ if (HPMHooks.count.HP_duel_reject_pre > 0) {
void (*preHookFunc) (const unsigned int *did, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_duel_reject_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_duel_reject_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_duel_reject_pre[hIndex].func;
preHookFunc(&did, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -25339,9 +30363,9 @@ void HP_duel_reject(const unsigned int did, struct map_session_data *sd) {
{
HPMHooks.source.duel.reject(did, sd);
}
- if( HPMHooks.count.HP_duel_reject_post ) {
+ if (HPMHooks.count.HP_duel_reject_post > 0) {
void (*postHookFunc) (const unsigned int did, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_duel_reject_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_duel_reject_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_duel_reject_post[hIndex].func;
postHookFunc(did, sd);
}
@@ -25350,14 +30374,14 @@ void HP_duel_reject(const unsigned int did, struct map_session_data *sd) {
}
void HP_duel_leave(const unsigned int did, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_duel_leave_pre ) {
+ if (HPMHooks.count.HP_duel_leave_pre > 0) {
void (*preHookFunc) (const unsigned int *did, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_duel_leave_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_duel_leave_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_duel_leave_pre[hIndex].func;
preHookFunc(&did, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -25365,9 +30389,9 @@ void HP_duel_leave(const unsigned int did, struct map_session_data *sd) {
{
HPMHooks.source.duel.leave(did, sd);
}
- if( HPMHooks.count.HP_duel_leave_post ) {
+ if (HPMHooks.count.HP_duel_leave_post > 0) {
void (*postHookFunc) (const unsigned int did, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_duel_leave_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_duel_leave_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_duel_leave_post[hIndex].func;
postHookFunc(did, sd);
}
@@ -25376,14 +30400,14 @@ void HP_duel_leave(const unsigned int did, struct map_session_data *sd) {
}
void HP_duel_showinfo(const unsigned int did, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_duel_showinfo_pre ) {
+ if (HPMHooks.count.HP_duel_showinfo_pre > 0) {
void (*preHookFunc) (const unsigned int *did, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_duel_showinfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_duel_showinfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_duel_showinfo_pre[hIndex].func;
preHookFunc(&did, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -25391,9 +30415,9 @@ void HP_duel_showinfo(const unsigned int did, struct map_session_data *sd) {
{
HPMHooks.source.duel.showinfo(did, sd);
}
- if( HPMHooks.count.HP_duel_showinfo_post ) {
+ if (HPMHooks.count.HP_duel_showinfo_post > 0) {
void (*postHookFunc) (const unsigned int did, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_duel_showinfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_duel_showinfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_duel_showinfo_post[hIndex].func;
postHookFunc(did, sd);
}
@@ -25403,14 +30427,14 @@ void HP_duel_showinfo(const unsigned int did, struct map_session_data *sd) {
int HP_duel_checktime(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_duel_checktime_pre ) {
+ if (HPMHooks.count.HP_duel_checktime_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_duel_checktime_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_duel_checktime_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_duel_checktime_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -25418,9 +30442,9 @@ int HP_duel_checktime(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.duel.checktime(sd);
}
- if( HPMHooks.count.HP_duel_checktime_post ) {
+ if (HPMHooks.count.HP_duel_checktime_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_duel_checktime_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_duel_checktime_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_duel_checktime_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -25429,14 +30453,14 @@ int HP_duel_checktime(struct map_session_data *sd) {
}
void HP_duel_init(bool minimal) {
int hIndex = 0;
- if( HPMHooks.count.HP_duel_init_pre ) {
+ if (HPMHooks.count.HP_duel_init_pre > 0) {
void (*preHookFunc) (bool *minimal);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_duel_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_duel_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_duel_init_pre[hIndex].func;
preHookFunc(&minimal);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -25444,9 +30468,9 @@ void HP_duel_init(bool minimal) {
{
HPMHooks.source.duel.init(minimal);
}
- if( HPMHooks.count.HP_duel_init_post ) {
+ if (HPMHooks.count.HP_duel_init_post > 0) {
void (*postHookFunc) (bool minimal);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_duel_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_duel_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_duel_init_post[hIndex].func;
postHookFunc(minimal);
}
@@ -25455,14 +30479,14 @@ void HP_duel_init(bool minimal) {
}
void HP_duel_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_duel_final_pre ) {
+ if (HPMHooks.count.HP_duel_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_duel_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_duel_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_duel_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -25470,9 +30494,9 @@ void HP_duel_final(void) {
{
HPMHooks.source.duel.final();
}
- if( HPMHooks.count.HP_duel_final_post ) {
+ if (HPMHooks.count.HP_duel_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_duel_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_duel_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_duel_final_post[hIndex].func;
postHookFunc();
}
@@ -25483,14 +30507,14 @@ void HP_duel_final(void) {
int HP_elemental_init(bool minimal) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_elemental_init_pre ) {
+ if (HPMHooks.count.HP_elemental_init_pre > 0) {
int (*preHookFunc) (bool *minimal);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_elemental_init_pre[hIndex].func;
retVal___ = preHookFunc(&minimal);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -25498,9 +30522,9 @@ int HP_elemental_init(bool minimal) {
{
retVal___ = HPMHooks.source.elemental.init(minimal);
}
- if( HPMHooks.count.HP_elemental_init_post ) {
+ if (HPMHooks.count.HP_elemental_init_post > 0) {
int (*postHookFunc) (int retVal___, bool minimal);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_elemental_init_post[hIndex].func;
retVal___ = postHookFunc(retVal___, minimal);
}
@@ -25509,14 +30533,14 @@ int HP_elemental_init(bool minimal) {
}
void HP_elemental_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_elemental_final_pre ) {
+ if (HPMHooks.count.HP_elemental_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_elemental_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -25524,9 +30548,9 @@ void HP_elemental_final(void) {
{
HPMHooks.source.elemental.final();
}
- if( HPMHooks.count.HP_elemental_final_post ) {
+ if (HPMHooks.count.HP_elemental_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_elemental_final_post[hIndex].func;
postHookFunc();
}
@@ -25536,14 +30560,14 @@ void HP_elemental_final(void) {
bool HP_elemental_class(int class_) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_elemental_class_pre ) {
+ if (HPMHooks.count.HP_elemental_class_pre > 0) {
bool (*preHookFunc) (int *class_);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_class_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_class_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_elemental_class_pre[hIndex].func;
retVal___ = preHookFunc(&class_);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -25551,9 +30575,9 @@ bool HP_elemental_class(int class_) {
{
retVal___ = HPMHooks.source.elemental.class(class_);
}
- if( HPMHooks.count.HP_elemental_class_post ) {
+ if (HPMHooks.count.HP_elemental_class_post > 0) {
bool (*postHookFunc) (bool retVal___, int class_);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_class_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_class_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_elemental_class_post[hIndex].func;
retVal___ = postHookFunc(retVal___, class_);
}
@@ -25563,14 +30587,14 @@ bool HP_elemental_class(int class_) {
struct view_data* HP_elemental_get_viewdata(int class_) {
int hIndex = 0;
struct view_data* retVal___ = NULL;
- if( HPMHooks.count.HP_elemental_get_viewdata_pre ) {
+ if (HPMHooks.count.HP_elemental_get_viewdata_pre > 0) {
struct view_data* (*preHookFunc) (int *class_);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_get_viewdata_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_get_viewdata_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_elemental_get_viewdata_pre[hIndex].func;
retVal___ = preHookFunc(&class_);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -25578,9 +30602,9 @@ struct view_data* HP_elemental_get_viewdata(int class_) {
{
retVal___ = HPMHooks.source.elemental.get_viewdata(class_);
}
- if( HPMHooks.count.HP_elemental_get_viewdata_post ) {
+ if (HPMHooks.count.HP_elemental_get_viewdata_post > 0) {
struct view_data* (*postHookFunc) (struct view_data* retVal___, int class_);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_get_viewdata_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_get_viewdata_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_elemental_get_viewdata_post[hIndex].func;
retVal___ = postHookFunc(retVal___, class_);
}
@@ -25590,14 +30614,14 @@ struct view_data* HP_elemental_get_viewdata(int class_) {
int HP_elemental_create(struct map_session_data *sd, int class_, unsigned int lifetime) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_elemental_create_pre ) {
+ if (HPMHooks.count.HP_elemental_create_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *class_, unsigned int *lifetime);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_elemental_create_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &class_, &lifetime);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -25605,9 +30629,9 @@ int HP_elemental_create(struct map_session_data *sd, int class_, unsigned int li
{
retVal___ = HPMHooks.source.elemental.create(sd, class_, lifetime);
}
- if( HPMHooks.count.HP_elemental_create_post ) {
+ if (HPMHooks.count.HP_elemental_create_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int class_, unsigned int lifetime);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_elemental_create_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, class_, lifetime);
}
@@ -25617,14 +30641,14 @@ int HP_elemental_create(struct map_session_data *sd, int class_, unsigned int li
int HP_elemental_data_received(const struct s_elemental *ele, bool flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_elemental_data_received_pre ) {
+ if (HPMHooks.count.HP_elemental_data_received_pre > 0) {
int (*preHookFunc) (const struct s_elemental **ele, bool *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_data_received_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_data_received_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_elemental_data_received_pre[hIndex].func;
retVal___ = preHookFunc(&ele, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -25632,9 +30656,9 @@ int HP_elemental_data_received(const struct s_elemental *ele, bool flag) {
{
retVal___ = HPMHooks.source.elemental.data_received(ele, flag);
}
- if( HPMHooks.count.HP_elemental_data_received_post ) {
+ if (HPMHooks.count.HP_elemental_data_received_post > 0) {
int (*postHookFunc) (int retVal___, const struct s_elemental *ele, bool flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_data_received_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_data_received_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_elemental_data_received_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ele, flag);
}
@@ -25644,14 +30668,14 @@ int HP_elemental_data_received(const struct s_elemental *ele, bool flag) {
int HP_elemental_save(struct elemental_data *ed) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_elemental_save_pre ) {
+ if (HPMHooks.count.HP_elemental_save_pre > 0) {
int (*preHookFunc) (struct elemental_data **ed);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_save_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_save_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_elemental_save_pre[hIndex].func;
retVal___ = preHookFunc(&ed);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -25659,9 +30683,9 @@ int HP_elemental_save(struct elemental_data *ed) {
{
retVal___ = HPMHooks.source.elemental.save(ed);
}
- if( HPMHooks.count.HP_elemental_save_post ) {
+ if (HPMHooks.count.HP_elemental_save_post > 0) {
int (*postHookFunc) (int retVal___, struct elemental_data *ed);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_save_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_save_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_elemental_save_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ed);
}
@@ -25671,14 +30695,14 @@ int HP_elemental_save(struct elemental_data *ed) {
int HP_elemental_change_mode_ack(struct elemental_data *ed, int mode) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_elemental_change_mode_ack_pre ) {
+ if (HPMHooks.count.HP_elemental_change_mode_ack_pre > 0) {
int (*preHookFunc) (struct elemental_data **ed, int *mode);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_change_mode_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_change_mode_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_elemental_change_mode_ack_pre[hIndex].func;
retVal___ = preHookFunc(&ed, &mode);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -25686,9 +30710,9 @@ int HP_elemental_change_mode_ack(struct elemental_data *ed, int mode) {
{
retVal___ = HPMHooks.source.elemental.change_mode_ack(ed, mode);
}
- if( HPMHooks.count.HP_elemental_change_mode_ack_post ) {
+ if (HPMHooks.count.HP_elemental_change_mode_ack_post > 0) {
int (*postHookFunc) (int retVal___, struct elemental_data *ed, int mode);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_change_mode_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_change_mode_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_elemental_change_mode_ack_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ed, mode);
}
@@ -25698,14 +30722,14 @@ int HP_elemental_change_mode_ack(struct elemental_data *ed, int mode) {
int HP_elemental_change_mode(struct elemental_data *ed, uint32 mode) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_elemental_change_mode_pre ) {
+ if (HPMHooks.count.HP_elemental_change_mode_pre > 0) {
int (*preHookFunc) (struct elemental_data **ed, uint32 *mode);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_change_mode_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_change_mode_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_elemental_change_mode_pre[hIndex].func;
retVal___ = preHookFunc(&ed, &mode);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -25713,9 +30737,9 @@ int HP_elemental_change_mode(struct elemental_data *ed, uint32 mode) {
{
retVal___ = HPMHooks.source.elemental.change_mode(ed, mode);
}
- if( HPMHooks.count.HP_elemental_change_mode_post ) {
+ if (HPMHooks.count.HP_elemental_change_mode_post > 0) {
int (*postHookFunc) (int retVal___, struct elemental_data *ed, uint32 mode);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_change_mode_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_change_mode_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_elemental_change_mode_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ed, mode);
}
@@ -25724,14 +30748,14 @@ int HP_elemental_change_mode(struct elemental_data *ed, uint32 mode) {
}
void HP_elemental_heal(struct elemental_data *ed, int hp, int sp) {
int hIndex = 0;
- if( HPMHooks.count.HP_elemental_heal_pre ) {
+ if (HPMHooks.count.HP_elemental_heal_pre > 0) {
void (*preHookFunc) (struct elemental_data **ed, int *hp, int *sp);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_heal_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_heal_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_elemental_heal_pre[hIndex].func;
preHookFunc(&ed, &hp, &sp);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -25739,9 +30763,9 @@ void HP_elemental_heal(struct elemental_data *ed, int hp, int sp) {
{
HPMHooks.source.elemental.heal(ed, hp, sp);
}
- if( HPMHooks.count.HP_elemental_heal_post ) {
+ if (HPMHooks.count.HP_elemental_heal_post > 0) {
void (*postHookFunc) (struct elemental_data *ed, int hp, int sp);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_heal_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_heal_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_elemental_heal_post[hIndex].func;
postHookFunc(ed, hp, sp);
}
@@ -25751,14 +30775,14 @@ void HP_elemental_heal(struct elemental_data *ed, int hp, int sp) {
int HP_elemental_dead(struct elemental_data *ed) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_elemental_dead_pre ) {
+ if (HPMHooks.count.HP_elemental_dead_pre > 0) {
int (*preHookFunc) (struct elemental_data **ed);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_dead_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_dead_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_elemental_dead_pre[hIndex].func;
retVal___ = preHookFunc(&ed);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -25766,9 +30790,9 @@ int HP_elemental_dead(struct elemental_data *ed) {
{
retVal___ = HPMHooks.source.elemental.dead(ed);
}
- if( HPMHooks.count.HP_elemental_dead_post ) {
+ if (HPMHooks.count.HP_elemental_dead_post > 0) {
int (*postHookFunc) (int retVal___, struct elemental_data *ed);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_dead_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_dead_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_elemental_dead_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ed);
}
@@ -25778,14 +30802,14 @@ int HP_elemental_dead(struct elemental_data *ed) {
int HP_elemental_delete(struct elemental_data *ed, int reply) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_elemental_delete_pre ) {
+ if (HPMHooks.count.HP_elemental_delete_pre > 0) {
int (*preHookFunc) (struct elemental_data **ed, int *reply);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_elemental_delete_pre[hIndex].func;
retVal___ = preHookFunc(&ed, &reply);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -25793,9 +30817,9 @@ int HP_elemental_delete(struct elemental_data *ed, int reply) {
{
retVal___ = HPMHooks.source.elemental.delete(ed, reply);
}
- if( HPMHooks.count.HP_elemental_delete_post ) {
+ if (HPMHooks.count.HP_elemental_delete_post > 0) {
int (*postHookFunc) (int retVal___, struct elemental_data *ed, int reply);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_elemental_delete_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ed, reply);
}
@@ -25804,14 +30828,14 @@ int HP_elemental_delete(struct elemental_data *ed, int reply) {
}
void HP_elemental_summon_stop(struct elemental_data *ed) {
int hIndex = 0;
- if( HPMHooks.count.HP_elemental_summon_stop_pre ) {
+ if (HPMHooks.count.HP_elemental_summon_stop_pre > 0) {
void (*preHookFunc) (struct elemental_data **ed);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_summon_stop_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_summon_stop_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_elemental_summon_stop_pre[hIndex].func;
preHookFunc(&ed);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -25819,9 +30843,9 @@ void HP_elemental_summon_stop(struct elemental_data *ed) {
{
HPMHooks.source.elemental.summon_stop(ed);
}
- if( HPMHooks.count.HP_elemental_summon_stop_post ) {
+ if (HPMHooks.count.HP_elemental_summon_stop_post > 0) {
void (*postHookFunc) (struct elemental_data *ed);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_summon_stop_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_summon_stop_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_elemental_summon_stop_post[hIndex].func;
postHookFunc(ed);
}
@@ -25831,14 +30855,14 @@ void HP_elemental_summon_stop(struct elemental_data *ed) {
int HP_elemental_get_lifetime(struct elemental_data *ed) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_elemental_get_lifetime_pre ) {
+ if (HPMHooks.count.HP_elemental_get_lifetime_pre > 0) {
int (*preHookFunc) (struct elemental_data **ed);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_get_lifetime_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_get_lifetime_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_elemental_get_lifetime_pre[hIndex].func;
retVal___ = preHookFunc(&ed);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -25846,9 +30870,9 @@ int HP_elemental_get_lifetime(struct elemental_data *ed) {
{
retVal___ = HPMHooks.source.elemental.get_lifetime(ed);
}
- if( HPMHooks.count.HP_elemental_get_lifetime_post ) {
+ if (HPMHooks.count.HP_elemental_get_lifetime_post > 0) {
int (*postHookFunc) (int retVal___, struct elemental_data *ed);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_get_lifetime_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_get_lifetime_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_elemental_get_lifetime_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ed);
}
@@ -25858,14 +30882,14 @@ int HP_elemental_get_lifetime(struct elemental_data *ed) {
int HP_elemental_unlocktarget(struct elemental_data *ed) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_elemental_unlocktarget_pre ) {
+ if (HPMHooks.count.HP_elemental_unlocktarget_pre > 0) {
int (*preHookFunc) (struct elemental_data **ed);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_unlocktarget_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_unlocktarget_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_elemental_unlocktarget_pre[hIndex].func;
retVal___ = preHookFunc(&ed);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -25873,9 +30897,9 @@ int HP_elemental_unlocktarget(struct elemental_data *ed) {
{
retVal___ = HPMHooks.source.elemental.unlocktarget(ed);
}
- if( HPMHooks.count.HP_elemental_unlocktarget_post ) {
+ if (HPMHooks.count.HP_elemental_unlocktarget_post > 0) {
int (*postHookFunc) (int retVal___, struct elemental_data *ed);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_unlocktarget_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_unlocktarget_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_elemental_unlocktarget_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ed);
}
@@ -25885,14 +30909,14 @@ int HP_elemental_unlocktarget(struct elemental_data *ed) {
int HP_elemental_skillnotok(uint16 skill_id, struct elemental_data *ed) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_elemental_skillnotok_pre ) {
+ if (HPMHooks.count.HP_elemental_skillnotok_pre > 0) {
int (*preHookFunc) (uint16 *skill_id, struct elemental_data **ed);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_skillnotok_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_skillnotok_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_elemental_skillnotok_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &ed);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -25900,9 +30924,9 @@ int HP_elemental_skillnotok(uint16 skill_id, struct elemental_data *ed) {
{
retVal___ = HPMHooks.source.elemental.skillnotok(skill_id, ed);
}
- if( HPMHooks.count.HP_elemental_skillnotok_post ) {
+ if (HPMHooks.count.HP_elemental_skillnotok_post > 0) {
int (*postHookFunc) (int retVal___, uint16 skill_id, struct elemental_data *ed);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_skillnotok_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_skillnotok_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_elemental_skillnotok_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, ed);
}
@@ -25912,14 +30936,14 @@ int HP_elemental_skillnotok(uint16 skill_id, struct elemental_data *ed) {
int HP_elemental_set_target(struct map_session_data *sd, struct block_list *bl) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_elemental_set_target_pre ) {
+ if (HPMHooks.count.HP_elemental_set_target_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_set_target_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_set_target_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_elemental_set_target_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -25927,9 +30951,9 @@ int HP_elemental_set_target(struct map_session_data *sd, struct block_list *bl)
{
retVal___ = HPMHooks.source.elemental.set_target(sd, bl);
}
- if( HPMHooks.count.HP_elemental_set_target_post ) {
+ if (HPMHooks.count.HP_elemental_set_target_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_set_target_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_set_target_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_elemental_set_target_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, bl);
}
@@ -25939,14 +30963,14 @@ int HP_elemental_set_target(struct map_session_data *sd, struct block_list *bl)
int HP_elemental_clean_single_effect(struct elemental_data *ed, uint16 skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_elemental_clean_single_effect_pre ) {
+ if (HPMHooks.count.HP_elemental_clean_single_effect_pre > 0) {
int (*preHookFunc) (struct elemental_data **ed, uint16 *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_clean_single_effect_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_clean_single_effect_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_elemental_clean_single_effect_pre[hIndex].func;
retVal___ = preHookFunc(&ed, &skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -25954,9 +30978,9 @@ int HP_elemental_clean_single_effect(struct elemental_data *ed, uint16 skill_id)
{
retVal___ = HPMHooks.source.elemental.clean_single_effect(ed, skill_id);
}
- if( HPMHooks.count.HP_elemental_clean_single_effect_post ) {
+ if (HPMHooks.count.HP_elemental_clean_single_effect_post > 0) {
int (*postHookFunc) (int retVal___, struct elemental_data *ed, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_clean_single_effect_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_clean_single_effect_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_elemental_clean_single_effect_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ed, skill_id);
}
@@ -25966,14 +30990,14 @@ int HP_elemental_clean_single_effect(struct elemental_data *ed, uint16 skill_id)
int HP_elemental_clean_effect(struct elemental_data *ed) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_elemental_clean_effect_pre ) {
+ if (HPMHooks.count.HP_elemental_clean_effect_pre > 0) {
int (*preHookFunc) (struct elemental_data **ed);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_clean_effect_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_clean_effect_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_elemental_clean_effect_pre[hIndex].func;
retVal___ = preHookFunc(&ed);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -25981,9 +31005,9 @@ int HP_elemental_clean_effect(struct elemental_data *ed) {
{
retVal___ = HPMHooks.source.elemental.clean_effect(ed);
}
- if( HPMHooks.count.HP_elemental_clean_effect_post ) {
+ if (HPMHooks.count.HP_elemental_clean_effect_post > 0) {
int (*postHookFunc) (int retVal___, struct elemental_data *ed);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_clean_effect_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_clean_effect_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_elemental_clean_effect_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ed);
}
@@ -25993,14 +31017,14 @@ int HP_elemental_clean_effect(struct elemental_data *ed) {
int HP_elemental_action(struct elemental_data *ed, struct block_list *bl, int64 tick) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_elemental_action_pre ) {
+ if (HPMHooks.count.HP_elemental_action_pre > 0) {
int (*preHookFunc) (struct elemental_data **ed, struct block_list **bl, int64 *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_action_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_action_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_elemental_action_pre[hIndex].func;
retVal___ = preHookFunc(&ed, &bl, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -26008,9 +31032,9 @@ int HP_elemental_action(struct elemental_data *ed, struct block_list *bl, int64
{
retVal___ = HPMHooks.source.elemental.action(ed, bl, tick);
}
- if( HPMHooks.count.HP_elemental_action_post ) {
+ if (HPMHooks.count.HP_elemental_action_post > 0) {
int (*postHookFunc) (int retVal___, struct elemental_data *ed, struct block_list *bl, int64 tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_action_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_action_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_elemental_action_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ed, bl, tick);
}
@@ -26020,14 +31044,14 @@ int HP_elemental_action(struct elemental_data *ed, struct block_list *bl, int64
struct skill_condition HP_elemental_skill_get_requirements(uint16 skill_id, uint16 skill_lv) {
int hIndex = 0;
struct skill_condition retVal___ = { 0 };
- if( HPMHooks.count.HP_elemental_skill_get_requirements_pre ) {
+ if (HPMHooks.count.HP_elemental_skill_get_requirements_pre > 0) {
struct skill_condition (*preHookFunc) (uint16 *skill_id, uint16 *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_skill_get_requirements_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_skill_get_requirements_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_elemental_skill_get_requirements_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -26035,9 +31059,9 @@ struct skill_condition HP_elemental_skill_get_requirements(uint16 skill_id, uint
{
retVal___ = HPMHooks.source.elemental.skill_get_requirements(skill_id, skill_lv);
}
- if( HPMHooks.count.HP_elemental_skill_get_requirements_post ) {
+ if (HPMHooks.count.HP_elemental_skill_get_requirements_post > 0) {
struct skill_condition (*postHookFunc) (struct skill_condition retVal___, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_skill_get_requirements_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_skill_get_requirements_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_elemental_skill_get_requirements_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
@@ -26047,14 +31071,14 @@ struct skill_condition HP_elemental_skill_get_requirements(uint16 skill_id, uint
int HP_elemental_read_skilldb(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_elemental_read_skilldb_pre ) {
+ if (HPMHooks.count.HP_elemental_read_skilldb_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_read_skilldb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_read_skilldb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_elemental_read_skilldb_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -26062,9 +31086,9 @@ int HP_elemental_read_skilldb(void) {
{
retVal___ = HPMHooks.source.elemental.read_skilldb();
}
- if( HPMHooks.count.HP_elemental_read_skilldb_post ) {
+ if (HPMHooks.count.HP_elemental_read_skilldb_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_read_skilldb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_read_skilldb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_elemental_read_skilldb_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -26073,14 +31097,14 @@ int HP_elemental_read_skilldb(void) {
}
void HP_elemental_reload_db(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_elemental_reload_db_pre ) {
+ if (HPMHooks.count.HP_elemental_reload_db_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_reload_db_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_reload_db_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_elemental_reload_db_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -26088,9 +31112,9 @@ void HP_elemental_reload_db(void) {
{
HPMHooks.source.elemental.reload_db();
}
- if( HPMHooks.count.HP_elemental_reload_db_post ) {
+ if (HPMHooks.count.HP_elemental_reload_db_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_reload_db_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_reload_db_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_elemental_reload_db_post[hIndex].func;
postHookFunc();
}
@@ -26099,14 +31123,14 @@ void HP_elemental_reload_db(void) {
}
void HP_elemental_reload_skilldb(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_elemental_reload_skilldb_pre ) {
+ if (HPMHooks.count.HP_elemental_reload_skilldb_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_reload_skilldb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_reload_skilldb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_elemental_reload_skilldb_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -26114,9 +31138,9 @@ void HP_elemental_reload_skilldb(void) {
{
HPMHooks.source.elemental.reload_skilldb();
}
- if( HPMHooks.count.HP_elemental_reload_skilldb_post ) {
+ if (HPMHooks.count.HP_elemental_reload_skilldb_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_reload_skilldb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_reload_skilldb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_elemental_reload_skilldb_post[hIndex].func;
postHookFunc();
}
@@ -26126,14 +31150,14 @@ void HP_elemental_reload_skilldb(void) {
int HP_elemental_search_index(int class_) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_elemental_search_index_pre ) {
+ if (HPMHooks.count.HP_elemental_search_index_pre > 0) {
int (*preHookFunc) (int *class_);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_search_index_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_search_index_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_elemental_search_index_pre[hIndex].func;
retVal___ = preHookFunc(&class_);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -26141,9 +31165,9 @@ int HP_elemental_search_index(int class_) {
{
retVal___ = HPMHooks.source.elemental.search_index(class_);
}
- if( HPMHooks.count.HP_elemental_search_index_post ) {
+ if (HPMHooks.count.HP_elemental_search_index_post > 0) {
int (*postHookFunc) (int retVal___, int class_);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_search_index_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_search_index_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_elemental_search_index_post[hIndex].func;
retVal___ = postHookFunc(retVal___, class_);
}
@@ -26152,14 +31176,14 @@ int HP_elemental_search_index(int class_) {
}
void HP_elemental_summon_init(struct elemental_data *ed) {
int hIndex = 0;
- if( HPMHooks.count.HP_elemental_summon_init_pre ) {
+ if (HPMHooks.count.HP_elemental_summon_init_pre > 0) {
void (*preHookFunc) (struct elemental_data **ed);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_summon_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_summon_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_elemental_summon_init_pre[hIndex].func;
preHookFunc(&ed);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -26167,9 +31191,9 @@ void HP_elemental_summon_init(struct elemental_data *ed) {
{
HPMHooks.source.elemental.summon_init(ed);
}
- if( HPMHooks.count.HP_elemental_summon_init_post ) {
+ if (HPMHooks.count.HP_elemental_summon_init_post > 0) {
void (*postHookFunc) (struct elemental_data *ed);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_summon_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_summon_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_elemental_summon_init_post[hIndex].func;
postHookFunc(ed);
}
@@ -26179,14 +31203,14 @@ void HP_elemental_summon_init(struct elemental_data *ed) {
int HP_elemental_summon_end_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_elemental_summon_end_timer_pre ) {
+ if (HPMHooks.count.HP_elemental_summon_end_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_summon_end_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_summon_end_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_elemental_summon_end_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -26194,9 +31218,9 @@ int HP_elemental_summon_end_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.elemental.summon_end_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_elemental_summon_end_timer_post ) {
+ if (HPMHooks.count.HP_elemental_summon_end_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_summon_end_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_summon_end_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_elemental_summon_end_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -26206,16 +31230,16 @@ int HP_elemental_summon_end_timer(int tid, int64 tick, int id, intptr_t data) {
int HP_elemental_ai_sub_timer_activesearch(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_elemental_ai_sub_timer_activesearch_pre ) {
+ if (HPMHooks.count.HP_elemental_ai_sub_timer_activesearch_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_ai_sub_timer_activesearch_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_ai_sub_timer_activesearch_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_elemental_ai_sub_timer_activesearch_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -26225,9 +31249,9 @@ int HP_elemental_ai_sub_timer_activesearch(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.elemental.ai_sub_timer_activesearch(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_elemental_ai_sub_timer_activesearch_post ) {
+ if (HPMHooks.count.HP_elemental_ai_sub_timer_activesearch_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_ai_sub_timer_activesearch_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_ai_sub_timer_activesearch_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_elemental_ai_sub_timer_activesearch_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -26239,14 +31263,14 @@ int HP_elemental_ai_sub_timer_activesearch(struct block_list *bl, va_list ap) {
int HP_elemental_ai_sub_timer(struct elemental_data *ed, struct map_session_data *sd, int64 tick) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_elemental_ai_sub_timer_pre ) {
+ if (HPMHooks.count.HP_elemental_ai_sub_timer_pre > 0) {
int (*preHookFunc) (struct elemental_data **ed, struct map_session_data **sd, int64 *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_ai_sub_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_ai_sub_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_elemental_ai_sub_timer_pre[hIndex].func;
retVal___ = preHookFunc(&ed, &sd, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -26254,9 +31278,9 @@ int HP_elemental_ai_sub_timer(struct elemental_data *ed, struct map_session_data
{
retVal___ = HPMHooks.source.elemental.ai_sub_timer(ed, sd, tick);
}
- if( HPMHooks.count.HP_elemental_ai_sub_timer_post ) {
+ if (HPMHooks.count.HP_elemental_ai_sub_timer_post > 0) {
int (*postHookFunc) (int retVal___, struct elemental_data *ed, struct map_session_data *sd, int64 tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_ai_sub_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_ai_sub_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_elemental_ai_sub_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ed, sd, tick);
}
@@ -26266,16 +31290,16 @@ int HP_elemental_ai_sub_timer(struct elemental_data *ed, struct map_session_data
int HP_elemental_ai_sub_foreachclient(struct map_session_data *sd, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_elemental_ai_sub_foreachclient_pre ) {
+ if (HPMHooks.count.HP_elemental_ai_sub_foreachclient_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_ai_sub_foreachclient_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_ai_sub_foreachclient_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_elemental_ai_sub_foreachclient_pre[hIndex].func;
retVal___ = preHookFunc(&sd, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -26285,9 +31309,9 @@ int HP_elemental_ai_sub_foreachclient(struct map_session_data *sd, va_list ap) {
retVal___ = HPMHooks.source.elemental.ai_sub_foreachclient(sd, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_elemental_ai_sub_foreachclient_post ) {
+ if (HPMHooks.count.HP_elemental_ai_sub_foreachclient_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_ai_sub_foreachclient_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_ai_sub_foreachclient_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_elemental_ai_sub_foreachclient_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, ap___copy);
@@ -26299,14 +31323,14 @@ int HP_elemental_ai_sub_foreachclient(struct map_session_data *sd, va_list ap) {
int HP_elemental_ai_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_elemental_ai_timer_pre ) {
+ if (HPMHooks.count.HP_elemental_ai_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_ai_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_ai_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_elemental_ai_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -26314,9 +31338,9 @@ int HP_elemental_ai_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.elemental.ai_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_elemental_ai_timer_post ) {
+ if (HPMHooks.count.HP_elemental_ai_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_ai_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_ai_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_elemental_ai_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -26326,14 +31350,14 @@ int HP_elemental_ai_timer(int tid, int64 tick, int id, intptr_t data) {
int HP_elemental_read_db(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_elemental_read_db_pre ) {
+ if (HPMHooks.count.HP_elemental_read_db_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_read_db_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_read_db_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_elemental_read_db_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -26341,9 +31365,9 @@ int HP_elemental_read_db(void) {
{
retVal___ = HPMHooks.source.elemental.read_db();
}
- if( HPMHooks.count.HP_elemental_read_db_post ) {
+ if (HPMHooks.count.HP_elemental_read_db_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_elemental_read_db_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_elemental_read_db_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_elemental_read_db_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -26353,14 +31377,14 @@ int HP_elemental_read_db(void) {
/* grfio_interface */
void HP_grfio_init(const char *fname) {
int hIndex = 0;
- if( HPMHooks.count.HP_grfio_init_pre ) {
+ if (HPMHooks.count.HP_grfio_init_pre > 0) {
void (*preHookFunc) (const char **fname);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_grfio_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_grfio_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_grfio_init_pre[hIndex].func;
preHookFunc(&fname);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -26368,9 +31392,9 @@ void HP_grfio_init(const char *fname) {
{
HPMHooks.source.grfio.init(fname);
}
- if( HPMHooks.count.HP_grfio_init_post ) {
+ if (HPMHooks.count.HP_grfio_init_post > 0) {
void (*postHookFunc) (const char *fname);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_grfio_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_grfio_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_grfio_init_post[hIndex].func;
postHookFunc(fname);
}
@@ -26379,14 +31403,14 @@ void HP_grfio_init(const char *fname) {
}
void HP_grfio_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_grfio_final_pre ) {
+ if (HPMHooks.count.HP_grfio_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_grfio_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_grfio_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_grfio_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -26394,9 +31418,9 @@ void HP_grfio_final(void) {
{
HPMHooks.source.grfio.final();
}
- if( HPMHooks.count.HP_grfio_final_post ) {
+ if (HPMHooks.count.HP_grfio_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_grfio_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_grfio_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_grfio_final_post[hIndex].func;
postHookFunc();
}
@@ -26406,14 +31430,14 @@ void HP_grfio_final(void) {
void* HP_grfio_reads(const char *fname, int *size) {
int hIndex = 0;
void* retVal___ = NULL;
- if( HPMHooks.count.HP_grfio_reads_pre ) {
+ if (HPMHooks.count.HP_grfio_reads_pre > 0) {
void* (*preHookFunc) (const char **fname, int **size);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_grfio_reads_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_grfio_reads_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_grfio_reads_pre[hIndex].func;
retVal___ = preHookFunc(&fname, &size);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -26421,9 +31445,9 @@ void* HP_grfio_reads(const char *fname, int *size) {
{
retVal___ = HPMHooks.source.grfio.reads(fname, size);
}
- if( HPMHooks.count.HP_grfio_reads_post ) {
+ if (HPMHooks.count.HP_grfio_reads_post > 0) {
void* (*postHookFunc) (void* retVal___, const char *fname, int *size);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_grfio_reads_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_grfio_reads_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_grfio_reads_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fname, size);
}
@@ -26433,14 +31457,14 @@ void* HP_grfio_reads(const char *fname, int *size) {
const char* HP_grfio_find_file(const char *fname) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_grfio_find_file_pre ) {
+ if (HPMHooks.count.HP_grfio_find_file_pre > 0) {
const char* (*preHookFunc) (const char **fname);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_grfio_find_file_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_grfio_find_file_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_grfio_find_file_pre[hIndex].func;
retVal___ = preHookFunc(&fname);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -26448,9 +31472,9 @@ const char* HP_grfio_find_file(const char *fname) {
{
retVal___ = HPMHooks.source.grfio.find_file(fname);
}
- if( HPMHooks.count.HP_grfio_find_file_post ) {
+ if (HPMHooks.count.HP_grfio_find_file_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *fname);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_grfio_find_file_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_grfio_find_file_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_grfio_find_file_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fname);
}
@@ -26460,14 +31484,14 @@ const char* HP_grfio_find_file(const char *fname) {
unsigned long HP_grfio_crc32(const unsigned char *buf, unsigned int len) {
int hIndex = 0;
unsigned long retVal___ = 0;
- if( HPMHooks.count.HP_grfio_crc32_pre ) {
+ if (HPMHooks.count.HP_grfio_crc32_pre > 0) {
unsigned long (*preHookFunc) (const unsigned char **buf, unsigned int *len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_grfio_crc32_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_grfio_crc32_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_grfio_crc32_pre[hIndex].func;
retVal___ = preHookFunc(&buf, &len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -26475,9 +31499,9 @@ unsigned long HP_grfio_crc32(const unsigned char *buf, unsigned int len) {
{
retVal___ = HPMHooks.source.grfio.crc32(buf, len);
}
- if( HPMHooks.count.HP_grfio_crc32_post ) {
+ if (HPMHooks.count.HP_grfio_crc32_post > 0) {
unsigned long (*postHookFunc) (unsigned long retVal___, const unsigned char *buf, unsigned int len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_grfio_crc32_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_grfio_crc32_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_grfio_crc32_post[hIndex].func;
retVal___ = postHookFunc(retVal___, buf, len);
}
@@ -26487,14 +31511,14 @@ unsigned long HP_grfio_crc32(const unsigned char *buf, unsigned int len) {
int HP_grfio_decode_zip(void *dest, unsigned long *dest_len, const void *source, unsigned long source_len) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_grfio_decode_zip_pre ) {
+ if (HPMHooks.count.HP_grfio_decode_zip_pre > 0) {
int (*preHookFunc) (void **dest, unsigned long **dest_len, const void **source, unsigned long *source_len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_grfio_decode_zip_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_grfio_decode_zip_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_grfio_decode_zip_pre[hIndex].func;
retVal___ = preHookFunc(&dest, &dest_len, &source, &source_len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -26502,9 +31526,9 @@ int HP_grfio_decode_zip(void *dest, unsigned long *dest_len, const void *source,
{
retVal___ = HPMHooks.source.grfio.decode_zip(dest, dest_len, source, source_len);
}
- if( HPMHooks.count.HP_grfio_decode_zip_post ) {
+ if (HPMHooks.count.HP_grfio_decode_zip_post > 0) {
int (*postHookFunc) (int retVal___, void *dest, unsigned long *dest_len, const void *source, unsigned long source_len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_grfio_decode_zip_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_grfio_decode_zip_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_grfio_decode_zip_post[hIndex].func;
retVal___ = postHookFunc(retVal___, dest, dest_len, source, source_len);
}
@@ -26514,14 +31538,14 @@ int HP_grfio_decode_zip(void *dest, unsigned long *dest_len, const void *source,
int HP_grfio_encode_zip(void *dest, unsigned long *dest_len, const void *source, unsigned long source_len) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_grfio_encode_zip_pre ) {
+ if (HPMHooks.count.HP_grfio_encode_zip_pre > 0) {
int (*preHookFunc) (void **dest, unsigned long **dest_len, const void **source, unsigned long *source_len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_grfio_encode_zip_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_grfio_encode_zip_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_grfio_encode_zip_pre[hIndex].func;
retVal___ = preHookFunc(&dest, &dest_len, &source, &source_len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -26529,9 +31553,9 @@ int HP_grfio_encode_zip(void *dest, unsigned long *dest_len, const void *source,
{
retVal___ = HPMHooks.source.grfio.encode_zip(dest, dest_len, source, source_len);
}
- if( HPMHooks.count.HP_grfio_encode_zip_post ) {
+ if (HPMHooks.count.HP_grfio_encode_zip_post > 0) {
int (*postHookFunc) (int retVal___, void *dest, unsigned long *dest_len, const void *source, unsigned long source_len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_grfio_encode_zip_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_grfio_encode_zip_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_grfio_encode_zip_post[hIndex].func;
retVal___ = postHookFunc(retVal___, dest, dest_len, source, source_len);
}
@@ -26541,14 +31565,14 @@ int HP_grfio_encode_zip(void *dest, unsigned long *dest_len, const void *source,
/* guild_interface */
void HP_guild_init(bool minimal) {
int hIndex = 0;
- if( HPMHooks.count.HP_guild_init_pre ) {
+ if (HPMHooks.count.HP_guild_init_pre > 0) {
void (*preHookFunc) (bool *minimal);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_init_pre[hIndex].func;
preHookFunc(&minimal);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -26556,9 +31580,9 @@ void HP_guild_init(bool minimal) {
{
HPMHooks.source.guild.init(minimal);
}
- if( HPMHooks.count.HP_guild_init_post ) {
+ if (HPMHooks.count.HP_guild_init_post > 0) {
void (*postHookFunc) (bool minimal);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_init_post[hIndex].func;
postHookFunc(minimal);
}
@@ -26567,14 +31591,14 @@ void HP_guild_init(bool minimal) {
}
void HP_guild_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_guild_final_pre ) {
+ if (HPMHooks.count.HP_guild_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -26582,9 +31606,9 @@ void HP_guild_final(void) {
{
HPMHooks.source.guild.final();
}
- if( HPMHooks.count.HP_guild_final_post ) {
+ if (HPMHooks.count.HP_guild_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_final_post[hIndex].func;
postHookFunc();
}
@@ -26594,14 +31618,14 @@ void HP_guild_final(void) {
int HP_guild_skill_get_max(int id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_skill_get_max_pre ) {
+ if (HPMHooks.count.HP_guild_skill_get_max_pre > 0) {
int (*preHookFunc) (int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_skill_get_max_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_skill_get_max_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_skill_get_max_pre[hIndex].func;
retVal___ = preHookFunc(&id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -26609,9 +31633,9 @@ int HP_guild_skill_get_max(int id) {
{
retVal___ = HPMHooks.source.guild.skill_get_max(id);
}
- if( HPMHooks.count.HP_guild_skill_get_max_post ) {
+ if (HPMHooks.count.HP_guild_skill_get_max_post > 0) {
int (*postHookFunc) (int retVal___, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_skill_get_max_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_skill_get_max_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_skill_get_max_post[hIndex].func;
retVal___ = postHookFunc(retVal___, id);
}
@@ -26621,14 +31645,14 @@ int HP_guild_skill_get_max(int id) {
int HP_guild_checkskill(struct guild *g, int id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_checkskill_pre ) {
+ if (HPMHooks.count.HP_guild_checkskill_pre > 0) {
int (*preHookFunc) (struct guild **g, int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_checkskill_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_checkskill_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_checkskill_pre[hIndex].func;
retVal___ = preHookFunc(&g, &id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -26636,9 +31660,9 @@ int HP_guild_checkskill(struct guild *g, int id) {
{
retVal___ = HPMHooks.source.guild.checkskill(g, id);
}
- if( HPMHooks.count.HP_guild_checkskill_post ) {
+ if (HPMHooks.count.HP_guild_checkskill_post > 0) {
int (*postHookFunc) (int retVal___, struct guild *g, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_checkskill_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_checkskill_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_checkskill_post[hIndex].func;
retVal___ = postHookFunc(retVal___, g, id);
}
@@ -26648,14 +31672,14 @@ int HP_guild_checkskill(struct guild *g, int id) {
int HP_guild_check_skill_require(struct guild *g, int id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_check_skill_require_pre ) {
+ if (HPMHooks.count.HP_guild_check_skill_require_pre > 0) {
int (*preHookFunc) (struct guild **g, int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_check_skill_require_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_check_skill_require_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_check_skill_require_pre[hIndex].func;
retVal___ = preHookFunc(&g, &id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -26663,9 +31687,9 @@ int HP_guild_check_skill_require(struct guild *g, int id) {
{
retVal___ = HPMHooks.source.guild.check_skill_require(g, id);
}
- if( HPMHooks.count.HP_guild_check_skill_require_post ) {
+ if (HPMHooks.count.HP_guild_check_skill_require_post > 0) {
int (*postHookFunc) (int retVal___, struct guild *g, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_check_skill_require_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_check_skill_require_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_check_skill_require_post[hIndex].func;
retVal___ = postHookFunc(retVal___, g, id);
}
@@ -26675,14 +31699,14 @@ int HP_guild_check_skill_require(struct guild *g, int id) {
int HP_guild_checkcastles(struct guild *g) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_checkcastles_pre ) {
+ if (HPMHooks.count.HP_guild_checkcastles_pre > 0) {
int (*preHookFunc) (struct guild **g);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_checkcastles_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_checkcastles_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_checkcastles_pre[hIndex].func;
retVal___ = preHookFunc(&g);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -26690,9 +31714,9 @@ int HP_guild_checkcastles(struct guild *g) {
{
retVal___ = HPMHooks.source.guild.checkcastles(g);
}
- if( HPMHooks.count.HP_guild_checkcastles_post ) {
+ if (HPMHooks.count.HP_guild_checkcastles_post > 0) {
int (*postHookFunc) (int retVal___, struct guild *g);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_checkcastles_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_checkcastles_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_checkcastles_post[hIndex].func;
retVal___ = postHookFunc(retVal___, g);
}
@@ -26702,14 +31726,14 @@ int HP_guild_checkcastles(struct guild *g) {
bool HP_guild_isallied(int guild_id, int guild_id2) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_guild_isallied_pre ) {
+ if (HPMHooks.count.HP_guild_isallied_pre > 0) {
bool (*preHookFunc) (int *guild_id, int *guild_id2);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_isallied_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_isallied_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_isallied_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &guild_id2);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -26717,9 +31741,9 @@ bool HP_guild_isallied(int guild_id, int guild_id2) {
{
retVal___ = HPMHooks.source.guild.isallied(guild_id, guild_id2);
}
- if( HPMHooks.count.HP_guild_isallied_post ) {
+ if (HPMHooks.count.HP_guild_isallied_post > 0) {
bool (*postHookFunc) (bool retVal___, int guild_id, int guild_id2);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_isallied_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_isallied_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_isallied_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, guild_id2);
}
@@ -26729,14 +31753,14 @@ bool HP_guild_isallied(int guild_id, int guild_id2) {
struct guild* HP_guild_search(int guild_id) {
int hIndex = 0;
struct guild* retVal___ = NULL;
- if( HPMHooks.count.HP_guild_search_pre ) {
+ if (HPMHooks.count.HP_guild_search_pre > 0) {
struct guild* (*preHookFunc) (int *guild_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_search_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_search_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_search_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -26744,9 +31768,9 @@ struct guild* HP_guild_search(int guild_id) {
{
retVal___ = HPMHooks.source.guild.search(guild_id);
}
- if( HPMHooks.count.HP_guild_search_post ) {
+ if (HPMHooks.count.HP_guild_search_post > 0) {
struct guild* (*postHookFunc) (struct guild* retVal___, int guild_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_search_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_search_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_search_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id);
}
@@ -26756,14 +31780,14 @@ struct guild* HP_guild_search(int guild_id) {
struct guild* HP_guild_searchname(char *str) {
int hIndex = 0;
struct guild* retVal___ = NULL;
- if( HPMHooks.count.HP_guild_searchname_pre ) {
+ if (HPMHooks.count.HP_guild_searchname_pre > 0) {
struct guild* (*preHookFunc) (char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_searchname_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_searchname_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_searchname_pre[hIndex].func;
retVal___ = preHookFunc(&str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -26771,9 +31795,9 @@ struct guild* HP_guild_searchname(char *str) {
{
retVal___ = HPMHooks.source.guild.searchname(str);
}
- if( HPMHooks.count.HP_guild_searchname_post ) {
+ if (HPMHooks.count.HP_guild_searchname_post > 0) {
struct guild* (*postHookFunc) (struct guild* retVal___, char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_searchname_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_searchname_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_searchname_post[hIndex].func;
retVal___ = postHookFunc(retVal___, str);
}
@@ -26783,14 +31807,14 @@ struct guild* HP_guild_searchname(char *str) {
struct guild_castle* HP_guild_castle_search(int gcid) {
int hIndex = 0;
struct guild_castle* retVal___ = NULL;
- if( HPMHooks.count.HP_guild_castle_search_pre ) {
+ if (HPMHooks.count.HP_guild_castle_search_pre > 0) {
struct guild_castle* (*preHookFunc) (int *gcid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_castle_search_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_castle_search_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_castle_search_pre[hIndex].func;
retVal___ = preHookFunc(&gcid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -26798,9 +31822,9 @@ struct guild_castle* HP_guild_castle_search(int gcid) {
{
retVal___ = HPMHooks.source.guild.castle_search(gcid);
}
- if( HPMHooks.count.HP_guild_castle_search_post ) {
+ if (HPMHooks.count.HP_guild_castle_search_post > 0) {
struct guild_castle* (*postHookFunc) (struct guild_castle* retVal___, int gcid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_castle_search_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_castle_search_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_castle_search_post[hIndex].func;
retVal___ = postHookFunc(retVal___, gcid);
}
@@ -26810,14 +31834,14 @@ struct guild_castle* HP_guild_castle_search(int gcid) {
struct guild_castle* HP_guild_mapname2gc(const char *mapname) {
int hIndex = 0;
struct guild_castle* retVal___ = NULL;
- if( HPMHooks.count.HP_guild_mapname2gc_pre ) {
+ if (HPMHooks.count.HP_guild_mapname2gc_pre > 0) {
struct guild_castle* (*preHookFunc) (const char **mapname);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_mapname2gc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_mapname2gc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_mapname2gc_pre[hIndex].func;
retVal___ = preHookFunc(&mapname);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -26825,9 +31849,9 @@ struct guild_castle* HP_guild_mapname2gc(const char *mapname) {
{
retVal___ = HPMHooks.source.guild.mapname2gc(mapname);
}
- if( HPMHooks.count.HP_guild_mapname2gc_post ) {
+ if (HPMHooks.count.HP_guild_mapname2gc_post > 0) {
struct guild_castle* (*postHookFunc) (struct guild_castle* retVal___, const char *mapname);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_mapname2gc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_mapname2gc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_mapname2gc_post[hIndex].func;
retVal___ = postHookFunc(retVal___, mapname);
}
@@ -26837,14 +31861,14 @@ struct guild_castle* HP_guild_mapname2gc(const char *mapname) {
struct guild_castle* HP_guild_mapindex2gc(short map_index) {
int hIndex = 0;
struct guild_castle* retVal___ = NULL;
- if( HPMHooks.count.HP_guild_mapindex2gc_pre ) {
+ if (HPMHooks.count.HP_guild_mapindex2gc_pre > 0) {
struct guild_castle* (*preHookFunc) (short *map_index);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_mapindex2gc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_mapindex2gc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_mapindex2gc_pre[hIndex].func;
retVal___ = preHookFunc(&map_index);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -26852,9 +31876,9 @@ struct guild_castle* HP_guild_mapindex2gc(short map_index) {
{
retVal___ = HPMHooks.source.guild.mapindex2gc(map_index);
}
- if( HPMHooks.count.HP_guild_mapindex2gc_post ) {
+ if (HPMHooks.count.HP_guild_mapindex2gc_post > 0) {
struct guild_castle* (*postHookFunc) (struct guild_castle* retVal___, short map_index);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_mapindex2gc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_mapindex2gc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_mapindex2gc_post[hIndex].func;
retVal___ = postHookFunc(retVal___, map_index);
}
@@ -26864,14 +31888,14 @@ struct guild_castle* HP_guild_mapindex2gc(short map_index) {
struct map_session_data* HP_guild_getavailablesd(struct guild *g) {
int hIndex = 0;
struct map_session_data* retVal___ = NULL;
- if( HPMHooks.count.HP_guild_getavailablesd_pre ) {
+ if (HPMHooks.count.HP_guild_getavailablesd_pre > 0) {
struct map_session_data* (*preHookFunc) (struct guild **g);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_getavailablesd_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_getavailablesd_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_getavailablesd_pre[hIndex].func;
retVal___ = preHookFunc(&g);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -26879,9 +31903,9 @@ struct map_session_data* HP_guild_getavailablesd(struct guild *g) {
{
retVal___ = HPMHooks.source.guild.getavailablesd(g);
}
- if( HPMHooks.count.HP_guild_getavailablesd_post ) {
+ if (HPMHooks.count.HP_guild_getavailablesd_post > 0) {
struct map_session_data* (*postHookFunc) (struct map_session_data* retVal___, struct guild *g);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_getavailablesd_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_getavailablesd_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_getavailablesd_post[hIndex].func;
retVal___ = postHookFunc(retVal___, g);
}
@@ -26891,14 +31915,14 @@ struct map_session_data* HP_guild_getavailablesd(struct guild *g) {
int HP_guild_getindex(const struct guild *g, int account_id, int char_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_getindex_pre ) {
+ if (HPMHooks.count.HP_guild_getindex_pre > 0) {
int (*preHookFunc) (const struct guild **g, int *account_id, int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_getindex_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_getindex_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_getindex_pre[hIndex].func;
retVal___ = preHookFunc(&g, &account_id, &char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -26906,9 +31930,9 @@ int HP_guild_getindex(const struct guild *g, int account_id, int char_id) {
{
retVal___ = HPMHooks.source.guild.getindex(g, account_id, char_id);
}
- if( HPMHooks.count.HP_guild_getindex_post ) {
+ if (HPMHooks.count.HP_guild_getindex_post > 0) {
int (*postHookFunc) (int retVal___, const struct guild *g, int account_id, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_getindex_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_getindex_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_getindex_post[hIndex].func;
retVal___ = postHookFunc(retVal___, g, account_id, char_id);
}
@@ -26918,14 +31942,14 @@ int HP_guild_getindex(const struct guild *g, int account_id, int char_id) {
int HP_guild_getposition(struct guild *g, struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_getposition_pre ) {
+ if (HPMHooks.count.HP_guild_getposition_pre > 0) {
int (*preHookFunc) (struct guild **g, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_getposition_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_getposition_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_getposition_pre[hIndex].func;
retVal___ = preHookFunc(&g, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -26933,26 +31957,26 @@ int HP_guild_getposition(struct guild *g, struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.guild.getposition(g, sd);
}
- if( HPMHooks.count.HP_guild_getposition_post ) {
+ if (HPMHooks.count.HP_guild_getposition_post > 0) {
int (*postHookFunc) (int retVal___, struct guild *g, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_getposition_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_getposition_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_getposition_post[hIndex].func;
retVal___ = postHookFunc(retVal___, g, sd);
}
}
return retVal___;
}
-unsigned int HP_guild_payexp(struct map_session_data *sd, unsigned int exp) {
+uint64 HP_guild_payexp(struct map_session_data *sd, uint64 exp) {
int hIndex = 0;
- unsigned int retVal___ = 0;
- if( HPMHooks.count.HP_guild_payexp_pre ) {
- unsigned int (*preHookFunc) (struct map_session_data **sd, unsigned int *exp);
+ uint64 retVal___ = 0;
+ if (HPMHooks.count.HP_guild_payexp_pre > 0) {
+ uint64 (*preHookFunc) (struct map_session_data **sd, uint64 *exp);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_payexp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_payexp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_payexp_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &exp);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -26960,9 +31984,9 @@ unsigned int HP_guild_payexp(struct map_session_data *sd, unsigned int exp) {
{
retVal___ = HPMHooks.source.guild.payexp(sd, exp);
}
- if( HPMHooks.count.HP_guild_payexp_post ) {
- unsigned int (*postHookFunc) (unsigned int retVal___, struct map_session_data *sd, unsigned int exp);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_payexp_post; hIndex++ ) {
+ if (HPMHooks.count.HP_guild_payexp_post > 0) {
+ uint64 (*postHookFunc) (uint64 retVal___, struct map_session_data *sd, uint64 exp);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_payexp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_payexp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, exp);
}
@@ -26972,14 +31996,14 @@ unsigned int HP_guild_payexp(struct map_session_data *sd, unsigned int exp) {
int HP_guild_getexp(struct map_session_data *sd, int exp) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_getexp_pre ) {
+ if (HPMHooks.count.HP_guild_getexp_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *exp);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_getexp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_getexp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_getexp_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &exp);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -26987,9 +32011,9 @@ int HP_guild_getexp(struct map_session_data *sd, int exp) {
{
retVal___ = HPMHooks.source.guild.getexp(sd, exp);
}
- if( HPMHooks.count.HP_guild_getexp_post ) {
+ if (HPMHooks.count.HP_guild_getexp_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int exp);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_getexp_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_getexp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_getexp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, exp);
}
@@ -26999,14 +32023,14 @@ int HP_guild_getexp(struct map_session_data *sd, int exp) {
int HP_guild_create(struct map_session_data *sd, const char *name) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_create_pre ) {
+ if (HPMHooks.count.HP_guild_create_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_create_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27014,9 +32038,9 @@ int HP_guild_create(struct map_session_data *sd, const char *name) {
{
retVal___ = HPMHooks.source.guild.create(sd, name);
}
- if( HPMHooks.count.HP_guild_create_post ) {
+ if (HPMHooks.count.HP_guild_create_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_create_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, name);
}
@@ -27026,14 +32050,14 @@ int HP_guild_create(struct map_session_data *sd, const char *name) {
int HP_guild_created(int account_id, int guild_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_created_pre ) {
+ if (HPMHooks.count.HP_guild_created_pre > 0) {
int (*preHookFunc) (int *account_id, int *guild_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_created_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_created_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_created_pre[hIndex].func;
retVal___ = preHookFunc(&account_id, &guild_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27041,9 +32065,9 @@ int HP_guild_created(int account_id, int guild_id) {
{
retVal___ = HPMHooks.source.guild.created(account_id, guild_id);
}
- if( HPMHooks.count.HP_guild_created_post ) {
+ if (HPMHooks.count.HP_guild_created_post > 0) {
int (*postHookFunc) (int retVal___, int account_id, int guild_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_created_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_created_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_created_post[hIndex].func;
retVal___ = postHookFunc(retVal___, account_id, guild_id);
}
@@ -27053,14 +32077,14 @@ int HP_guild_created(int account_id, int guild_id) {
int HP_guild_request_info(int guild_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_request_info_pre ) {
+ if (HPMHooks.count.HP_guild_request_info_pre > 0) {
int (*preHookFunc) (int *guild_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_request_info_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_request_info_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_request_info_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27068,9 +32092,9 @@ int HP_guild_request_info(int guild_id) {
{
retVal___ = HPMHooks.source.guild.request_info(guild_id);
}
- if( HPMHooks.count.HP_guild_request_info_post ) {
+ if (HPMHooks.count.HP_guild_request_info_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_request_info_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_request_info_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_request_info_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id);
}
@@ -27080,14 +32104,14 @@ int HP_guild_request_info(int guild_id) {
int HP_guild_recv_noinfo(int guild_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_recv_noinfo_pre ) {
+ if (HPMHooks.count.HP_guild_recv_noinfo_pre > 0) {
int (*preHookFunc) (int *guild_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_recv_noinfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_recv_noinfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_recv_noinfo_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27095,9 +32119,9 @@ int HP_guild_recv_noinfo(int guild_id) {
{
retVal___ = HPMHooks.source.guild.recv_noinfo(guild_id);
}
- if( HPMHooks.count.HP_guild_recv_noinfo_post ) {
+ if (HPMHooks.count.HP_guild_recv_noinfo_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_recv_noinfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_recv_noinfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_recv_noinfo_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id);
}
@@ -27107,14 +32131,14 @@ int HP_guild_recv_noinfo(int guild_id) {
int HP_guild_recv_info(const struct guild *sg) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_recv_info_pre ) {
+ if (HPMHooks.count.HP_guild_recv_info_pre > 0) {
int (*preHookFunc) (const struct guild **sg);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_recv_info_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_recv_info_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_recv_info_pre[hIndex].func;
retVal___ = preHookFunc(&sg);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27122,9 +32146,9 @@ int HP_guild_recv_info(const struct guild *sg) {
{
retVal___ = HPMHooks.source.guild.recv_info(sg);
}
- if( HPMHooks.count.HP_guild_recv_info_post ) {
+ if (HPMHooks.count.HP_guild_recv_info_post > 0) {
int (*postHookFunc) (int retVal___, const struct guild *sg);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_recv_info_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_recv_info_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_recv_info_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sg);
}
@@ -27134,14 +32158,14 @@ int HP_guild_recv_info(const struct guild *sg) {
int HP_guild_npc_request_info(int guild_id, const char *ev) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_npc_request_info_pre ) {
+ if (HPMHooks.count.HP_guild_npc_request_info_pre > 0) {
int (*preHookFunc) (int *guild_id, const char **ev);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_npc_request_info_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_npc_request_info_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_npc_request_info_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &ev);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27149,9 +32173,9 @@ int HP_guild_npc_request_info(int guild_id, const char *ev) {
{
retVal___ = HPMHooks.source.guild.npc_request_info(guild_id, ev);
}
- if( HPMHooks.count.HP_guild_npc_request_info_post ) {
+ if (HPMHooks.count.HP_guild_npc_request_info_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id, const char *ev);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_npc_request_info_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_npc_request_info_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_npc_request_info_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, ev);
}
@@ -27161,14 +32185,14 @@ int HP_guild_npc_request_info(int guild_id, const char *ev) {
int HP_guild_invite(struct map_session_data *sd, struct map_session_data *tsd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_invite_pre ) {
+ if (HPMHooks.count.HP_guild_invite_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct map_session_data **tsd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_invite_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_invite_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_invite_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &tsd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27176,9 +32200,9 @@ int HP_guild_invite(struct map_session_data *sd, struct map_session_data *tsd) {
{
retVal___ = HPMHooks.source.guild.invite(sd, tsd);
}
- if( HPMHooks.count.HP_guild_invite_post ) {
+ if (HPMHooks.count.HP_guild_invite_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct map_session_data *tsd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_invite_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_invite_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_invite_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, tsd);
}
@@ -27188,14 +32212,14 @@ int HP_guild_invite(struct map_session_data *sd, struct map_session_data *tsd) {
int HP_guild_reply_invite(struct map_session_data *sd, int guild_id, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_reply_invite_pre ) {
+ if (HPMHooks.count.HP_guild_reply_invite_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *guild_id, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_reply_invite_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_reply_invite_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_reply_invite_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &guild_id, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27203,9 +32227,9 @@ int HP_guild_reply_invite(struct map_session_data *sd, int guild_id, int flag) {
{
retVal___ = HPMHooks.source.guild.reply_invite(sd, guild_id, flag);
}
- if( HPMHooks.count.HP_guild_reply_invite_post ) {
+ if (HPMHooks.count.HP_guild_reply_invite_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int guild_id, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_reply_invite_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_reply_invite_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_reply_invite_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, guild_id, flag);
}
@@ -27214,14 +32238,14 @@ int HP_guild_reply_invite(struct map_session_data *sd, int guild_id, int flag) {
}
void HP_guild_member_joined(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_guild_member_joined_pre ) {
+ if (HPMHooks.count.HP_guild_member_joined_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_member_joined_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_member_joined_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_member_joined_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -27229,9 +32253,9 @@ void HP_guild_member_joined(struct map_session_data *sd) {
{
HPMHooks.source.guild.member_joined(sd);
}
- if( HPMHooks.count.HP_guild_member_joined_post ) {
+ if (HPMHooks.count.HP_guild_member_joined_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_member_joined_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_member_joined_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_member_joined_post[hIndex].func;
postHookFunc(sd);
}
@@ -27241,14 +32265,14 @@ void HP_guild_member_joined(struct map_session_data *sd) {
int HP_guild_member_added(int guild_id, int account_id, int char_id, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_member_added_pre ) {
+ if (HPMHooks.count.HP_guild_member_added_pre > 0) {
int (*preHookFunc) (int *guild_id, int *account_id, int *char_id, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_member_added_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_member_added_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_member_added_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &account_id, &char_id, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27256,9 +32280,9 @@ int HP_guild_member_added(int guild_id, int account_id, int char_id, int flag) {
{
retVal___ = HPMHooks.source.guild.member_added(guild_id, account_id, char_id, flag);
}
- if( HPMHooks.count.HP_guild_member_added_post ) {
+ if (HPMHooks.count.HP_guild_member_added_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id, int account_id, int char_id, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_member_added_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_member_added_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_member_added_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, account_id, char_id, flag);
}
@@ -27268,14 +32292,14 @@ int HP_guild_member_added(int guild_id, int account_id, int char_id, int flag) {
int HP_guild_leave(struct map_session_data *sd, int guild_id, int account_id, int char_id, const char *mes) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_leave_pre ) {
+ if (HPMHooks.count.HP_guild_leave_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *guild_id, int *account_id, int *char_id, const char **mes);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_leave_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_leave_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_leave_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &guild_id, &account_id, &char_id, &mes);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27283,9 +32307,9 @@ int HP_guild_leave(struct map_session_data *sd, int guild_id, int account_id, in
{
retVal___ = HPMHooks.source.guild.leave(sd, guild_id, account_id, char_id, mes);
}
- if( HPMHooks.count.HP_guild_leave_post ) {
+ if (HPMHooks.count.HP_guild_leave_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int guild_id, int account_id, int char_id, const char *mes);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_leave_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_leave_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_leave_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, guild_id, account_id, char_id, mes);
}
@@ -27295,14 +32319,14 @@ int HP_guild_leave(struct map_session_data *sd, int guild_id, int account_id, in
int HP_guild_member_withdraw(int guild_id, int account_id, int char_id, int flag, const char *name, const char *mes) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_member_withdraw_pre ) {
+ if (HPMHooks.count.HP_guild_member_withdraw_pre > 0) {
int (*preHookFunc) (int *guild_id, int *account_id, int *char_id, int *flag, const char **name, const char **mes);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_member_withdraw_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_member_withdraw_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_member_withdraw_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &account_id, &char_id, &flag, &name, &mes);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27310,9 +32334,9 @@ int HP_guild_member_withdraw(int guild_id, int account_id, int char_id, int flag
{
retVal___ = HPMHooks.source.guild.member_withdraw(guild_id, account_id, char_id, flag, name, mes);
}
- if( HPMHooks.count.HP_guild_member_withdraw_post ) {
+ if (HPMHooks.count.HP_guild_member_withdraw_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id, int account_id, int char_id, int flag, const char *name, const char *mes);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_member_withdraw_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_member_withdraw_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_member_withdraw_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, account_id, char_id, flag, name, mes);
}
@@ -27322,14 +32346,14 @@ int HP_guild_member_withdraw(int guild_id, int account_id, int char_id, int flag
int HP_guild_expulsion(struct map_session_data *sd, int guild_id, int account_id, int char_id, const char *mes) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_expulsion_pre ) {
+ if (HPMHooks.count.HP_guild_expulsion_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *guild_id, int *account_id, int *char_id, const char **mes);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_expulsion_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_expulsion_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_expulsion_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &guild_id, &account_id, &char_id, &mes);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27337,9 +32361,9 @@ int HP_guild_expulsion(struct map_session_data *sd, int guild_id, int account_id
{
retVal___ = HPMHooks.source.guild.expulsion(sd, guild_id, account_id, char_id, mes);
}
- if( HPMHooks.count.HP_guild_expulsion_post ) {
+ if (HPMHooks.count.HP_guild_expulsion_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int guild_id, int account_id, int char_id, const char *mes);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_expulsion_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_expulsion_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_expulsion_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, guild_id, account_id, char_id, mes);
}
@@ -27349,14 +32373,14 @@ int HP_guild_expulsion(struct map_session_data *sd, int guild_id, int account_id
int HP_guild_skillup(struct map_session_data *sd, uint16 skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_skillup_pre ) {
+ if (HPMHooks.count.HP_guild_skillup_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, uint16 *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_skillup_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_skillup_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_skillup_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27364,9 +32388,9 @@ int HP_guild_skillup(struct map_session_data *sd, uint16 skill_id) {
{
retVal___ = HPMHooks.source.guild.skillup(sd, skill_id);
}
- if( HPMHooks.count.HP_guild_skillup_post ) {
+ if (HPMHooks.count.HP_guild_skillup_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_skillup_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_skillup_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_skillup_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, skill_id);
}
@@ -27375,14 +32399,14 @@ int HP_guild_skillup(struct map_session_data *sd, uint16 skill_id) {
}
void HP_guild_block_skill(struct map_session_data *sd, int time) {
int hIndex = 0;
- if( HPMHooks.count.HP_guild_block_skill_pre ) {
+ if (HPMHooks.count.HP_guild_block_skill_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *time);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_block_skill_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_block_skill_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_block_skill_pre[hIndex].func;
preHookFunc(&sd, &time);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -27390,9 +32414,9 @@ void HP_guild_block_skill(struct map_session_data *sd, int time) {
{
HPMHooks.source.guild.block_skill(sd, time);
}
- if( HPMHooks.count.HP_guild_block_skill_post ) {
+ if (HPMHooks.count.HP_guild_block_skill_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int time);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_block_skill_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_block_skill_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_block_skill_post[hIndex].func;
postHookFunc(sd, time);
}
@@ -27402,14 +32426,14 @@ void HP_guild_block_skill(struct map_session_data *sd, int time) {
int HP_guild_reqalliance(struct map_session_data *sd, struct map_session_data *tsd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_reqalliance_pre ) {
+ if (HPMHooks.count.HP_guild_reqalliance_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct map_session_data **tsd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_reqalliance_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_reqalliance_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_reqalliance_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &tsd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27417,9 +32441,9 @@ int HP_guild_reqalliance(struct map_session_data *sd, struct map_session_data *t
{
retVal___ = HPMHooks.source.guild.reqalliance(sd, tsd);
}
- if( HPMHooks.count.HP_guild_reqalliance_post ) {
+ if (HPMHooks.count.HP_guild_reqalliance_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct map_session_data *tsd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_reqalliance_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_reqalliance_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_reqalliance_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, tsd);
}
@@ -27429,14 +32453,14 @@ int HP_guild_reqalliance(struct map_session_data *sd, struct map_session_data *t
int HP_guild_reply_reqalliance(struct map_session_data *sd, int account_id, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_reply_reqalliance_pre ) {
+ if (HPMHooks.count.HP_guild_reply_reqalliance_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *account_id, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_reply_reqalliance_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_reply_reqalliance_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_reply_reqalliance_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &account_id, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27444,9 +32468,9 @@ int HP_guild_reply_reqalliance(struct map_session_data *sd, int account_id, int
{
retVal___ = HPMHooks.source.guild.reply_reqalliance(sd, account_id, flag);
}
- if( HPMHooks.count.HP_guild_reply_reqalliance_post ) {
+ if (HPMHooks.count.HP_guild_reply_reqalliance_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int account_id, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_reply_reqalliance_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_reply_reqalliance_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_reply_reqalliance_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, account_id, flag);
}
@@ -27456,14 +32480,14 @@ int HP_guild_reply_reqalliance(struct map_session_data *sd, int account_id, int
int HP_guild_allianceack(int guild_id1, int guild_id2, int account_id1, int account_id2, int flag, const char *name1, const char *name2) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_allianceack_pre ) {
+ if (HPMHooks.count.HP_guild_allianceack_pre > 0) {
int (*preHookFunc) (int *guild_id1, int *guild_id2, int *account_id1, int *account_id2, int *flag, const char **name1, const char **name2);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_allianceack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_allianceack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_allianceack_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id1, &guild_id2, &account_id1, &account_id2, &flag, &name1, &name2);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27471,9 +32495,9 @@ int HP_guild_allianceack(int guild_id1, int guild_id2, int account_id1, int acco
{
retVal___ = HPMHooks.source.guild.allianceack(guild_id1, guild_id2, account_id1, account_id2, flag, name1, name2);
}
- if( HPMHooks.count.HP_guild_allianceack_post ) {
+ if (HPMHooks.count.HP_guild_allianceack_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id1, int guild_id2, int account_id1, int account_id2, int flag, const char *name1, const char *name2);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_allianceack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_allianceack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_allianceack_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id1, guild_id2, account_id1, account_id2, flag, name1, name2);
}
@@ -27483,14 +32507,14 @@ int HP_guild_allianceack(int guild_id1, int guild_id2, int account_id1, int acco
int HP_guild_delalliance(struct map_session_data *sd, int guild_id, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_delalliance_pre ) {
+ if (HPMHooks.count.HP_guild_delalliance_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *guild_id, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_delalliance_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_delalliance_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_delalliance_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &guild_id, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27498,9 +32522,9 @@ int HP_guild_delalliance(struct map_session_data *sd, int guild_id, int flag) {
{
retVal___ = HPMHooks.source.guild.delalliance(sd, guild_id, flag);
}
- if( HPMHooks.count.HP_guild_delalliance_post ) {
+ if (HPMHooks.count.HP_guild_delalliance_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int guild_id, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_delalliance_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_delalliance_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_delalliance_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, guild_id, flag);
}
@@ -27510,14 +32534,14 @@ int HP_guild_delalliance(struct map_session_data *sd, int guild_id, int flag) {
int HP_guild_opposition(struct map_session_data *sd, struct map_session_data *tsd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_opposition_pre ) {
+ if (HPMHooks.count.HP_guild_opposition_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct map_session_data **tsd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_opposition_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_opposition_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_opposition_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &tsd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27525,9 +32549,9 @@ int HP_guild_opposition(struct map_session_data *sd, struct map_session_data *ts
{
retVal___ = HPMHooks.source.guild.opposition(sd, tsd);
}
- if( HPMHooks.count.HP_guild_opposition_post ) {
+ if (HPMHooks.count.HP_guild_opposition_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct map_session_data *tsd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_opposition_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_opposition_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_opposition_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, tsd);
}
@@ -27537,14 +32561,14 @@ int HP_guild_opposition(struct map_session_data *sd, struct map_session_data *ts
int HP_guild_check_alliance(int guild_id1, int guild_id2, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_check_alliance_pre ) {
+ if (HPMHooks.count.HP_guild_check_alliance_pre > 0) {
int (*preHookFunc) (int *guild_id1, int *guild_id2, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_check_alliance_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_check_alliance_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_check_alliance_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id1, &guild_id2, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27552,9 +32576,9 @@ int HP_guild_check_alliance(int guild_id1, int guild_id2, int flag) {
{
retVal___ = HPMHooks.source.guild.check_alliance(guild_id1, guild_id2, flag);
}
- if( HPMHooks.count.HP_guild_check_alliance_post ) {
+ if (HPMHooks.count.HP_guild_check_alliance_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id1, int guild_id2, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_check_alliance_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_check_alliance_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_check_alliance_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id1, guild_id2, flag);
}
@@ -27564,14 +32588,14 @@ int HP_guild_check_alliance(int guild_id1, int guild_id2, int flag) {
int HP_guild_send_memberinfoshort(struct map_session_data *sd, int online) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_send_memberinfoshort_pre ) {
+ if (HPMHooks.count.HP_guild_send_memberinfoshort_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *online);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_send_memberinfoshort_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_send_memberinfoshort_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_send_memberinfoshort_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &online);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27579,38 +32603,38 @@ int HP_guild_send_memberinfoshort(struct map_session_data *sd, int online) {
{
retVal___ = HPMHooks.source.guild.send_memberinfoshort(sd, online);
}
- if( HPMHooks.count.HP_guild_send_memberinfoshort_post ) {
+ if (HPMHooks.count.HP_guild_send_memberinfoshort_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int online);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_send_memberinfoshort_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_send_memberinfoshort_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_send_memberinfoshort_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, online);
}
}
return retVal___;
}
-int HP_guild_recv_memberinfoshort(int guild_id, int account_id, int char_id, int online, int lv, int16 class) {
+int HP_guild_recv_memberinfoshort(int guild_id, int account_id, int char_id, int online, int lv, int16 class, uint32 last_login) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_recv_memberinfoshort_pre ) {
- int (*preHookFunc) (int *guild_id, int *account_id, int *char_id, int *online, int *lv, int16 *class);
+ if (HPMHooks.count.HP_guild_recv_memberinfoshort_pre > 0) {
+ int (*preHookFunc) (int *guild_id, int *account_id, int *char_id, int *online, int *lv, int16 *class, uint32 *last_login);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_recv_memberinfoshort_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_recv_memberinfoshort_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_recv_memberinfoshort_pre[hIndex].func;
- retVal___ = preHookFunc(&guild_id, &account_id, &char_id, &online, &lv, &class);
+ retVal___ = preHookFunc(&guild_id, &account_id, &char_id, &online, &lv, &class, &last_login);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
}
{
- retVal___ = HPMHooks.source.guild.recv_memberinfoshort(guild_id, account_id, char_id, online, lv, class);
+ retVal___ = HPMHooks.source.guild.recv_memberinfoshort(guild_id, account_id, char_id, online, lv, class, last_login);
}
- if( HPMHooks.count.HP_guild_recv_memberinfoshort_post ) {
- int (*postHookFunc) (int retVal___, int guild_id, int account_id, int char_id, int online, int lv, int16 class);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_recv_memberinfoshort_post; hIndex++ ) {
+ if (HPMHooks.count.HP_guild_recv_memberinfoshort_post > 0) {
+ int (*postHookFunc) (int retVal___, int guild_id, int account_id, int char_id, int online, int lv, int16 class, uint32 last_login);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_recv_memberinfoshort_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_recv_memberinfoshort_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, guild_id, account_id, char_id, online, lv, class);
+ retVal___ = postHookFunc(retVal___, guild_id, account_id, char_id, online, lv, class, last_login);
}
}
return retVal___;
@@ -27618,14 +32642,14 @@ int HP_guild_recv_memberinfoshort(int guild_id, int account_id, int char_id, int
int HP_guild_change_memberposition(int guild_id, int account_id, int char_id, short idx) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_change_memberposition_pre ) {
+ if (HPMHooks.count.HP_guild_change_memberposition_pre > 0) {
int (*preHookFunc) (int *guild_id, int *account_id, int *char_id, short *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_change_memberposition_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_change_memberposition_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_change_memberposition_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &account_id, &char_id, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27633,9 +32657,9 @@ int HP_guild_change_memberposition(int guild_id, int account_id, int char_id, sh
{
retVal___ = HPMHooks.source.guild.change_memberposition(guild_id, account_id, char_id, idx);
}
- if( HPMHooks.count.HP_guild_change_memberposition_post ) {
+ if (HPMHooks.count.HP_guild_change_memberposition_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id, int account_id, int char_id, short idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_change_memberposition_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_change_memberposition_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_change_memberposition_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, account_id, char_id, idx);
}
@@ -27645,14 +32669,14 @@ int HP_guild_change_memberposition(int guild_id, int account_id, int char_id, sh
int HP_guild_memberposition_changed(struct guild *g, int idx, int pos) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_memberposition_changed_pre ) {
+ if (HPMHooks.count.HP_guild_memberposition_changed_pre > 0) {
int (*preHookFunc) (struct guild **g, int *idx, int *pos);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_memberposition_changed_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_memberposition_changed_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_memberposition_changed_pre[hIndex].func;
retVal___ = preHookFunc(&g, &idx, &pos);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27660,9 +32684,9 @@ int HP_guild_memberposition_changed(struct guild *g, int idx, int pos) {
{
retVal___ = HPMHooks.source.guild.memberposition_changed(g, idx, pos);
}
- if( HPMHooks.count.HP_guild_memberposition_changed_post ) {
+ if (HPMHooks.count.HP_guild_memberposition_changed_post > 0) {
int (*postHookFunc) (int retVal___, struct guild *g, int idx, int pos);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_memberposition_changed_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_memberposition_changed_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_memberposition_changed_post[hIndex].func;
retVal___ = postHookFunc(retVal___, g, idx, pos);
}
@@ -27672,14 +32696,14 @@ int HP_guild_memberposition_changed(struct guild *g, int idx, int pos) {
int HP_guild_change_position(int guild_id, int idx, int mode, int exp_mode, const char *name) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_change_position_pre ) {
+ if (HPMHooks.count.HP_guild_change_position_pre > 0) {
int (*preHookFunc) (int *guild_id, int *idx, int *mode, int *exp_mode, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_change_position_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_change_position_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_change_position_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &idx, &mode, &exp_mode, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27687,9 +32711,9 @@ int HP_guild_change_position(int guild_id, int idx, int mode, int exp_mode, cons
{
retVal___ = HPMHooks.source.guild.change_position(guild_id, idx, mode, exp_mode, name);
}
- if( HPMHooks.count.HP_guild_change_position_post ) {
+ if (HPMHooks.count.HP_guild_change_position_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id, int idx, int mode, int exp_mode, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_change_position_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_change_position_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_change_position_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, idx, mode, exp_mode, name);
}
@@ -27699,14 +32723,14 @@ int HP_guild_change_position(int guild_id, int idx, int mode, int exp_mode, cons
int HP_guild_position_changed(int guild_id, int idx, const struct guild_position *p) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_position_changed_pre ) {
+ if (HPMHooks.count.HP_guild_position_changed_pre > 0) {
int (*preHookFunc) (int *guild_id, int *idx, const struct guild_position **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_position_changed_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_position_changed_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_position_changed_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &idx, &p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27714,9 +32738,9 @@ int HP_guild_position_changed(int guild_id, int idx, const struct guild_position
{
retVal___ = HPMHooks.source.guild.position_changed(guild_id, idx, p);
}
- if( HPMHooks.count.HP_guild_position_changed_post ) {
+ if (HPMHooks.count.HP_guild_position_changed_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id, int idx, const struct guild_position *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_position_changed_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_position_changed_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_position_changed_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, idx, p);
}
@@ -27726,14 +32750,14 @@ int HP_guild_position_changed(int guild_id, int idx, const struct guild_position
int HP_guild_change_notice(struct map_session_data *sd, int guild_id, const char *mes1, const char *mes2) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_change_notice_pre ) {
+ if (HPMHooks.count.HP_guild_change_notice_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *guild_id, const char **mes1, const char **mes2);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_change_notice_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_change_notice_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_change_notice_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &guild_id, &mes1, &mes2);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27741,9 +32765,9 @@ int HP_guild_change_notice(struct map_session_data *sd, int guild_id, const char
{
retVal___ = HPMHooks.source.guild.change_notice(sd, guild_id, mes1, mes2);
}
- if( HPMHooks.count.HP_guild_change_notice_post ) {
+ if (HPMHooks.count.HP_guild_change_notice_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int guild_id, const char *mes1, const char *mes2);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_change_notice_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_change_notice_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_change_notice_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, guild_id, mes1, mes2);
}
@@ -27753,14 +32777,14 @@ int HP_guild_change_notice(struct map_session_data *sd, int guild_id, const char
int HP_guild_notice_changed(int guild_id, const char *mes1, const char *mes2) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_notice_changed_pre ) {
+ if (HPMHooks.count.HP_guild_notice_changed_pre > 0) {
int (*preHookFunc) (int *guild_id, const char **mes1, const char **mes2);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_notice_changed_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_notice_changed_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_notice_changed_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &mes1, &mes2);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27768,9 +32792,9 @@ int HP_guild_notice_changed(int guild_id, const char *mes1, const char *mes2) {
{
retVal___ = HPMHooks.source.guild.notice_changed(guild_id, mes1, mes2);
}
- if( HPMHooks.count.HP_guild_notice_changed_post ) {
+ if (HPMHooks.count.HP_guild_notice_changed_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id, const char *mes1, const char *mes2);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_notice_changed_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_notice_changed_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_notice_changed_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, mes1, mes2);
}
@@ -27780,14 +32804,14 @@ int HP_guild_notice_changed(int guild_id, const char *mes1, const char *mes2) {
int HP_guild_change_emblem(struct map_session_data *sd, int len, const char *data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_change_emblem_pre ) {
+ if (HPMHooks.count.HP_guild_change_emblem_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *len, const char **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_change_emblem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_change_emblem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_change_emblem_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &len, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27795,9 +32819,9 @@ int HP_guild_change_emblem(struct map_session_data *sd, int len, const char *dat
{
retVal___ = HPMHooks.source.guild.change_emblem(sd, len, data);
}
- if( HPMHooks.count.HP_guild_change_emblem_post ) {
+ if (HPMHooks.count.HP_guild_change_emblem_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int len, const char *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_change_emblem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_change_emblem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_change_emblem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, len, data);
}
@@ -27807,14 +32831,14 @@ int HP_guild_change_emblem(struct map_session_data *sd, int len, const char *dat
int HP_guild_emblem_changed(int len, int guild_id, int emblem_id, const char *data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_emblem_changed_pre ) {
+ if (HPMHooks.count.HP_guild_emblem_changed_pre > 0) {
int (*preHookFunc) (int *len, int *guild_id, int *emblem_id, const char **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_emblem_changed_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_emblem_changed_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_emblem_changed_pre[hIndex].func;
retVal___ = preHookFunc(&len, &guild_id, &emblem_id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27822,9 +32846,9 @@ int HP_guild_emblem_changed(int len, int guild_id, int emblem_id, const char *da
{
retVal___ = HPMHooks.source.guild.emblem_changed(len, guild_id, emblem_id, data);
}
- if( HPMHooks.count.HP_guild_emblem_changed_post ) {
+ if (HPMHooks.count.HP_guild_emblem_changed_post > 0) {
int (*postHookFunc) (int retVal___, int len, int guild_id, int emblem_id, const char *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_emblem_changed_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_emblem_changed_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_emblem_changed_post[hIndex].func;
retVal___ = postHookFunc(retVal___, len, guild_id, emblem_id, data);
}
@@ -27834,14 +32858,14 @@ int HP_guild_emblem_changed(int len, int guild_id, int emblem_id, const char *da
int HP_guild_send_message(struct map_session_data *sd, const char *mes) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_send_message_pre ) {
+ if (HPMHooks.count.HP_guild_send_message_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, const char **mes);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_send_message_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_send_message_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_send_message_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &mes);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27849,9 +32873,9 @@ int HP_guild_send_message(struct map_session_data *sd, const char *mes) {
{
retVal___ = HPMHooks.source.guild.send_message(sd, mes);
}
- if( HPMHooks.count.HP_guild_send_message_post ) {
+ if (HPMHooks.count.HP_guild_send_message_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, const char *mes);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_send_message_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_send_message_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_send_message_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, mes);
}
@@ -27861,14 +32885,14 @@ int HP_guild_send_message(struct map_session_data *sd, const char *mes) {
int HP_guild_recv_message(int guild_id, int account_id, const char *mes, int len) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_recv_message_pre ) {
+ if (HPMHooks.count.HP_guild_recv_message_pre > 0) {
int (*preHookFunc) (int *guild_id, int *account_id, const char **mes, int *len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_recv_message_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_recv_message_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_recv_message_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &account_id, &mes, &len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27876,9 +32900,9 @@ int HP_guild_recv_message(int guild_id, int account_id, const char *mes, int len
{
retVal___ = HPMHooks.source.guild.recv_message(guild_id, account_id, mes, len);
}
- if( HPMHooks.count.HP_guild_recv_message_post ) {
+ if (HPMHooks.count.HP_guild_recv_message_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id, int account_id, const char *mes, int len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_recv_message_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_recv_message_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_recv_message_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, account_id, mes, len);
}
@@ -27888,14 +32912,14 @@ int HP_guild_recv_message(int guild_id, int account_id, const char *mes, int len
int HP_guild_send_dot_remove(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_send_dot_remove_pre ) {
+ if (HPMHooks.count.HP_guild_send_dot_remove_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_send_dot_remove_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_send_dot_remove_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_send_dot_remove_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27903,9 +32927,9 @@ int HP_guild_send_dot_remove(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.guild.send_dot_remove(sd);
}
- if( HPMHooks.count.HP_guild_send_dot_remove_post ) {
+ if (HPMHooks.count.HP_guild_send_dot_remove_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_send_dot_remove_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_send_dot_remove_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_send_dot_remove_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -27915,14 +32939,14 @@ int HP_guild_send_dot_remove(struct map_session_data *sd) {
int HP_guild_skillupack(int guild_id, uint16 skill_id, int account_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_skillupack_pre ) {
+ if (HPMHooks.count.HP_guild_skillupack_pre > 0) {
int (*preHookFunc) (int *guild_id, uint16 *skill_id, int *account_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_skillupack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_skillupack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_skillupack_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &skill_id, &account_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27930,9 +32954,9 @@ int HP_guild_skillupack(int guild_id, uint16 skill_id, int account_id) {
{
retVal___ = HPMHooks.source.guild.skillupack(guild_id, skill_id, account_id);
}
- if( HPMHooks.count.HP_guild_skillupack_post ) {
+ if (HPMHooks.count.HP_guild_skillupack_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id, uint16 skill_id, int account_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_skillupack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_skillupack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_skillupack_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, skill_id, account_id);
}
@@ -27942,14 +32966,14 @@ int HP_guild_skillupack(int guild_id, uint16 skill_id, int account_id) {
int HP_guild_dobreak(struct map_session_data *sd, const char *name) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_dobreak_pre ) {
+ if (HPMHooks.count.HP_guild_dobreak_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_dobreak_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_dobreak_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_dobreak_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27957,9 +32981,9 @@ int HP_guild_dobreak(struct map_session_data *sd, const char *name) {
{
retVal___ = HPMHooks.source.guild.dobreak(sd, name);
}
- if( HPMHooks.count.HP_guild_dobreak_post ) {
+ if (HPMHooks.count.HP_guild_dobreak_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_dobreak_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_dobreak_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_dobreak_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, name);
}
@@ -27969,14 +32993,14 @@ int HP_guild_dobreak(struct map_session_data *sd, const char *name) {
int HP_guild_broken(int guild_id, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_broken_pre ) {
+ if (HPMHooks.count.HP_guild_broken_pre > 0) {
int (*preHookFunc) (int *guild_id, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_broken_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_broken_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_broken_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -27984,38 +33008,38 @@ int HP_guild_broken(int guild_id, int flag) {
{
retVal___ = HPMHooks.source.guild.broken(guild_id, flag);
}
- if( HPMHooks.count.HP_guild_broken_post ) {
+ if (HPMHooks.count.HP_guild_broken_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_broken_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_broken_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_broken_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, flag);
}
}
return retVal___;
}
-int HP_guild_gm_change(int guild_id, struct map_session_data *sd) {
+int HP_guild_gm_change(int guild_id, int char_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_gm_change_pre ) {
- int (*preHookFunc) (int *guild_id, struct map_session_data **sd);
+ if (HPMHooks.count.HP_guild_gm_change_pre > 0) {
+ int (*preHookFunc) (int *guild_id, int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_gm_change_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_gm_change_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_gm_change_pre[hIndex].func;
- retVal___ = preHookFunc(&guild_id, &sd);
+ retVal___ = preHookFunc(&guild_id, &char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
}
{
- retVal___ = HPMHooks.source.guild.gm_change(guild_id, sd);
+ retVal___ = HPMHooks.source.guild.gm_change(guild_id, char_id);
}
- if( HPMHooks.count.HP_guild_gm_change_post ) {
- int (*postHookFunc) (int retVal___, int guild_id, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_gm_change_post; hIndex++ ) {
+ if (HPMHooks.count.HP_guild_gm_change_post > 0) {
+ int (*postHookFunc) (int retVal___, int guild_id, int char_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_gm_change_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_gm_change_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, guild_id, sd);
+ retVal___ = postHookFunc(retVal___, guild_id, char_id);
}
}
return retVal___;
@@ -28023,14 +33047,14 @@ int HP_guild_gm_change(int guild_id, struct map_session_data *sd) {
int HP_guild_gm_changed(int guild_id, int account_id, int char_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_gm_changed_pre ) {
+ if (HPMHooks.count.HP_guild_gm_changed_pre > 0) {
int (*preHookFunc) (int *guild_id, int *account_id, int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_gm_changed_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_gm_changed_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_gm_changed_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &account_id, &char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -28038,9 +33062,9 @@ int HP_guild_gm_changed(int guild_id, int account_id, int char_id) {
{
retVal___ = HPMHooks.source.guild.gm_changed(guild_id, account_id, char_id);
}
- if( HPMHooks.count.HP_guild_gm_changed_post ) {
+ if (HPMHooks.count.HP_guild_gm_changed_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id, int account_id, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_gm_changed_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_gm_changed_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_gm_changed_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, account_id, char_id);
}
@@ -28049,14 +33073,14 @@ int HP_guild_gm_changed(int guild_id, int account_id, int char_id) {
}
void HP_guild_castle_map_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_guild_castle_map_init_pre ) {
+ if (HPMHooks.count.HP_guild_castle_map_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_castle_map_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_castle_map_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_castle_map_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -28064,9 +33088,9 @@ void HP_guild_castle_map_init(void) {
{
HPMHooks.source.guild.castle_map_init();
}
- if( HPMHooks.count.HP_guild_castle_map_init_post ) {
+ if (HPMHooks.count.HP_guild_castle_map_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_castle_map_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_castle_map_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_castle_map_init_post[hIndex].func;
postHookFunc();
}
@@ -28076,14 +33100,14 @@ void HP_guild_castle_map_init(void) {
int HP_guild_castledatasave(int castle_id, int index, int value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_castledatasave_pre ) {
+ if (HPMHooks.count.HP_guild_castledatasave_pre > 0) {
int (*preHookFunc) (int *castle_id, int *index, int *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_castledatasave_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_castledatasave_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_castledatasave_pre[hIndex].func;
retVal___ = preHookFunc(&castle_id, &index, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -28091,9 +33115,9 @@ int HP_guild_castledatasave(int castle_id, int index, int value) {
{
retVal___ = HPMHooks.source.guild.castledatasave(castle_id, index, value);
}
- if( HPMHooks.count.HP_guild_castledatasave_post ) {
+ if (HPMHooks.count.HP_guild_castledatasave_post > 0) {
int (*postHookFunc) (int retVal___, int castle_id, int index, int value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_castledatasave_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_castledatasave_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_castledatasave_post[hIndex].func;
retVal___ = postHookFunc(retVal___, castle_id, index, value);
}
@@ -28103,14 +33127,14 @@ int HP_guild_castledatasave(int castle_id, int index, int value) {
int HP_guild_castledataloadack(int len, const struct guild_castle *gc) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_castledataloadack_pre ) {
+ if (HPMHooks.count.HP_guild_castledataloadack_pre > 0) {
int (*preHookFunc) (int *len, const struct guild_castle **gc);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_castledataloadack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_castledataloadack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_castledataloadack_pre[hIndex].func;
retVal___ = preHookFunc(&len, &gc);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -28118,9 +33142,9 @@ int HP_guild_castledataloadack(int len, const struct guild_castle *gc) {
{
retVal___ = HPMHooks.source.guild.castledataloadack(len, gc);
}
- if( HPMHooks.count.HP_guild_castledataloadack_post ) {
+ if (HPMHooks.count.HP_guild_castledataloadack_post > 0) {
int (*postHookFunc) (int retVal___, int len, const struct guild_castle *gc);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_castledataloadack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_castledataloadack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_castledataloadack_post[hIndex].func;
retVal___ = postHookFunc(retVal___, len, gc);
}
@@ -28129,14 +33153,14 @@ int HP_guild_castledataloadack(int len, const struct guild_castle *gc) {
}
void HP_guild_castle_reconnect(int castle_id, int index, int value) {
int hIndex = 0;
- if( HPMHooks.count.HP_guild_castle_reconnect_pre ) {
+ if (HPMHooks.count.HP_guild_castle_reconnect_pre > 0) {
void (*preHookFunc) (int *castle_id, int *index, int *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_castle_reconnect_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_castle_reconnect_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_castle_reconnect_pre[hIndex].func;
preHookFunc(&castle_id, &index, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -28144,9 +33168,9 @@ void HP_guild_castle_reconnect(int castle_id, int index, int value) {
{
HPMHooks.source.guild.castle_reconnect(castle_id, index, value);
}
- if( HPMHooks.count.HP_guild_castle_reconnect_post ) {
+ if (HPMHooks.count.HP_guild_castle_reconnect_post > 0) {
void (*postHookFunc) (int castle_id, int index, int value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_castle_reconnect_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_castle_reconnect_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_castle_reconnect_post[hIndex].func;
postHookFunc(castle_id, index, value);
}
@@ -28155,14 +33179,14 @@ void HP_guild_castle_reconnect(int castle_id, int index, int value) {
}
void HP_guild_agit_start(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_guild_agit_start_pre ) {
+ if (HPMHooks.count.HP_guild_agit_start_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_agit_start_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_agit_start_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_agit_start_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -28170,9 +33194,9 @@ void HP_guild_agit_start(void) {
{
HPMHooks.source.guild.agit_start();
}
- if( HPMHooks.count.HP_guild_agit_start_post ) {
+ if (HPMHooks.count.HP_guild_agit_start_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_agit_start_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_agit_start_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_agit_start_post[hIndex].func;
postHookFunc();
}
@@ -28181,14 +33205,14 @@ void HP_guild_agit_start(void) {
}
void HP_guild_agit_end(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_guild_agit_end_pre ) {
+ if (HPMHooks.count.HP_guild_agit_end_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_agit_end_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_agit_end_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_agit_end_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -28196,9 +33220,9 @@ void HP_guild_agit_end(void) {
{
HPMHooks.source.guild.agit_end();
}
- if( HPMHooks.count.HP_guild_agit_end_post ) {
+ if (HPMHooks.count.HP_guild_agit_end_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_agit_end_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_agit_end_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_agit_end_post[hIndex].func;
postHookFunc();
}
@@ -28207,14 +33231,14 @@ void HP_guild_agit_end(void) {
}
void HP_guild_agit2_start(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_guild_agit2_start_pre ) {
+ if (HPMHooks.count.HP_guild_agit2_start_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_agit2_start_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_agit2_start_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_agit2_start_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -28222,9 +33246,9 @@ void HP_guild_agit2_start(void) {
{
HPMHooks.source.guild.agit2_start();
}
- if( HPMHooks.count.HP_guild_agit2_start_post ) {
+ if (HPMHooks.count.HP_guild_agit2_start_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_agit2_start_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_agit2_start_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_agit2_start_post[hIndex].func;
postHookFunc();
}
@@ -28233,14 +33257,14 @@ void HP_guild_agit2_start(void) {
}
void HP_guild_agit2_end(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_guild_agit2_end_pre ) {
+ if (HPMHooks.count.HP_guild_agit2_end_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_agit2_end_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_agit2_end_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_agit2_end_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -28248,9 +33272,9 @@ void HP_guild_agit2_end(void) {
{
HPMHooks.source.guild.agit2_end();
}
- if( HPMHooks.count.HP_guild_agit2_end_post ) {
+ if (HPMHooks.count.HP_guild_agit2_end_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_agit2_end_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_agit2_end_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_agit2_end_post[hIndex].func;
postHookFunc();
}
@@ -28259,14 +33283,14 @@ void HP_guild_agit2_end(void) {
}
void HP_guild_flag_add(struct npc_data *nd) {
int hIndex = 0;
- if( HPMHooks.count.HP_guild_flag_add_pre ) {
+ if (HPMHooks.count.HP_guild_flag_add_pre > 0) {
void (*preHookFunc) (struct npc_data **nd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_flag_add_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_flag_add_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_flag_add_pre[hIndex].func;
preHookFunc(&nd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -28274,9 +33298,9 @@ void HP_guild_flag_add(struct npc_data *nd) {
{
HPMHooks.source.guild.flag_add(nd);
}
- if( HPMHooks.count.HP_guild_flag_add_post ) {
+ if (HPMHooks.count.HP_guild_flag_add_post > 0) {
void (*postHookFunc) (struct npc_data *nd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_flag_add_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_flag_add_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_flag_add_post[hIndex].func;
postHookFunc(nd);
}
@@ -28285,14 +33309,14 @@ void HP_guild_flag_add(struct npc_data *nd) {
}
void HP_guild_flag_remove(struct npc_data *nd) {
int hIndex = 0;
- if( HPMHooks.count.HP_guild_flag_remove_pre ) {
+ if (HPMHooks.count.HP_guild_flag_remove_pre > 0) {
void (*preHookFunc) (struct npc_data **nd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_flag_remove_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_flag_remove_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_flag_remove_pre[hIndex].func;
preHookFunc(&nd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -28300,9 +33324,9 @@ void HP_guild_flag_remove(struct npc_data *nd) {
{
HPMHooks.source.guild.flag_remove(nd);
}
- if( HPMHooks.count.HP_guild_flag_remove_post ) {
+ if (HPMHooks.count.HP_guild_flag_remove_post > 0) {
void (*postHookFunc) (struct npc_data *nd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_flag_remove_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_flag_remove_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_flag_remove_post[hIndex].func;
postHookFunc(nd);
}
@@ -28311,14 +33335,14 @@ void HP_guild_flag_remove(struct npc_data *nd) {
}
void HP_guild_flags_clear(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_guild_flags_clear_pre ) {
+ if (HPMHooks.count.HP_guild_flags_clear_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_flags_clear_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_flags_clear_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_flags_clear_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -28326,9 +33350,9 @@ void HP_guild_flags_clear(void) {
{
HPMHooks.source.guild.flags_clear();
}
- if( HPMHooks.count.HP_guild_flags_clear_post ) {
+ if (HPMHooks.count.HP_guild_flags_clear_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_flags_clear_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_flags_clear_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_flags_clear_post[hIndex].func;
postHookFunc();
}
@@ -28337,14 +33361,14 @@ void HP_guild_flags_clear(void) {
}
void HP_guild_aura_refresh(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv) {
int hIndex = 0;
- if( HPMHooks.count.HP_guild_aura_refresh_pre ) {
+ if (HPMHooks.count.HP_guild_aura_refresh_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, uint16 *skill_id, uint16 *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_aura_refresh_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_aura_refresh_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_aura_refresh_pre[hIndex].func;
preHookFunc(&sd, &skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -28352,9 +33376,9 @@ void HP_guild_aura_refresh(struct map_session_data *sd, uint16 skill_id, uint16
{
HPMHooks.source.guild.aura_refresh(sd, skill_id, skill_lv);
}
- if( HPMHooks.count.HP_guild_aura_refresh_post ) {
+ if (HPMHooks.count.HP_guild_aura_refresh_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_aura_refresh_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_aura_refresh_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_aura_refresh_post[hIndex].func;
postHookFunc(sd, skill_id, skill_lv);
}
@@ -28363,14 +33387,14 @@ void HP_guild_aura_refresh(struct map_session_data *sd, uint16 skill_id, uint16
}
void HP_guild_retrieveitembound(int char_id, int aid, int guild_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_guild_retrieveitembound_pre ) {
+ if (HPMHooks.count.HP_guild_retrieveitembound_pre > 0) {
void (*preHookFunc) (int *char_id, int *aid, int *guild_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_retrieveitembound_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_retrieveitembound_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_retrieveitembound_pre[hIndex].func;
preHookFunc(&char_id, &aid, &guild_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -28378,9 +33402,9 @@ void HP_guild_retrieveitembound(int char_id, int aid, int guild_id) {
{
HPMHooks.source.guild.retrieveitembound(char_id, aid, guild_id);
}
- if( HPMHooks.count.HP_guild_retrieveitembound_post ) {
+ if (HPMHooks.count.HP_guild_retrieveitembound_post > 0) {
void (*postHookFunc) (int char_id, int aid, int guild_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_retrieveitembound_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_retrieveitembound_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_retrieveitembound_post[hIndex].func;
postHookFunc(char_id, aid, guild_id);
}
@@ -28390,14 +33414,14 @@ void HP_guild_retrieveitembound(int char_id, int aid, int guild_id) {
int HP_guild_payexp_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_payexp_timer_pre ) {
+ if (HPMHooks.count.HP_guild_payexp_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_payexp_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_payexp_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_payexp_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -28405,9 +33429,9 @@ int HP_guild_payexp_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.guild.payexp_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_guild_payexp_timer_post ) {
+ if (HPMHooks.count.HP_guild_payexp_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_payexp_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_payexp_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_payexp_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -28417,14 +33441,14 @@ int HP_guild_payexp_timer(int tid, int64 tick, int id, intptr_t data) {
struct map_session_data* HP_guild_sd_check(int guild_id, int account_id, int char_id) {
int hIndex = 0;
struct map_session_data* retVal___ = NULL;
- if( HPMHooks.count.HP_guild_sd_check_pre ) {
+ if (HPMHooks.count.HP_guild_sd_check_pre > 0) {
struct map_session_data* (*preHookFunc) (int *guild_id, int *account_id, int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_sd_check_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_sd_check_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_sd_check_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &account_id, &char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -28432,9 +33456,9 @@ struct map_session_data* HP_guild_sd_check(int guild_id, int account_id, int cha
{
retVal___ = HPMHooks.source.guild.sd_check(guild_id, account_id, char_id);
}
- if( HPMHooks.count.HP_guild_sd_check_post ) {
+ if (HPMHooks.count.HP_guild_sd_check_post > 0) {
struct map_session_data* (*postHookFunc) (struct map_session_data* retVal___, int guild_id, int account_id, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_sd_check_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_sd_check_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_sd_check_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, account_id, char_id);
}
@@ -28444,14 +33468,14 @@ struct map_session_data* HP_guild_sd_check(int guild_id, int account_id, int cha
bool HP_guild_read_guildskill_tree_db(char *split[], int columns, int current) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_guild_read_guildskill_tree_db_pre ) {
+ if (HPMHooks.count.HP_guild_read_guildskill_tree_db_pre > 0) {
bool (*preHookFunc) (char **split[], int *columns, int *current);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_read_guildskill_tree_db_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_read_guildskill_tree_db_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_read_guildskill_tree_db_pre[hIndex].func;
retVal___ = preHookFunc(&split, &columns, &current);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -28459,9 +33483,9 @@ bool HP_guild_read_guildskill_tree_db(char *split[], int columns, int current) {
{
retVal___ = HPMHooks.source.guild.read_guildskill_tree_db(split, columns, current);
}
- if( HPMHooks.count.HP_guild_read_guildskill_tree_db_post ) {
+ if (HPMHooks.count.HP_guild_read_guildskill_tree_db_post > 0) {
bool (*postHookFunc) (bool retVal___, char *split[], int columns, int current);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_read_guildskill_tree_db_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_read_guildskill_tree_db_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_read_guildskill_tree_db_post[hIndex].func;
retVal___ = postHookFunc(retVal___, split, columns, current);
}
@@ -28471,14 +33495,14 @@ bool HP_guild_read_guildskill_tree_db(char *split[], int columns, int current) {
bool HP_guild_read_castledb(char *str[], int columns, int current) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_guild_read_castledb_pre ) {
+ if (HPMHooks.count.HP_guild_read_castledb_pre > 0) {
bool (*preHookFunc) (char **str[], int *columns, int *current);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_read_castledb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_read_castledb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_read_castledb_pre[hIndex].func;
retVal___ = preHookFunc(&str, &columns, &current);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -28486,9 +33510,9 @@ bool HP_guild_read_castledb(char *str[], int columns, int current) {
{
retVal___ = HPMHooks.source.guild.read_castledb(str, columns, current);
}
- if( HPMHooks.count.HP_guild_read_castledb_post ) {
+ if (HPMHooks.count.HP_guild_read_castledb_post > 0) {
bool (*postHookFunc) (bool retVal___, char *str[], int columns, int current);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_read_castledb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_read_castledb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_read_castledb_post[hIndex].func;
retVal___ = postHookFunc(retVal___, str, columns, current);
}
@@ -28498,16 +33522,16 @@ bool HP_guild_read_castledb(char *str[], int columns, int current) {
int HP_guild_payexp_timer_sub(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_payexp_timer_sub_pre ) {
+ if (HPMHooks.count.HP_guild_payexp_timer_sub_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_payexp_timer_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_payexp_timer_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_guild_payexp_timer_sub_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -28517,9 +33541,9 @@ int HP_guild_payexp_timer_sub(union DBKey key, struct DBData *data, va_list ap)
retVal___ = HPMHooks.source.guild.payexp_timer_sub(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_guild_payexp_timer_sub_post ) {
+ if (HPMHooks.count.HP_guild_payexp_timer_sub_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_payexp_timer_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_payexp_timer_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_guild_payexp_timer_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -28531,16 +33555,16 @@ int HP_guild_payexp_timer_sub(union DBKey key, struct DBData *data, va_list ap)
int HP_guild_send_xy_timer_sub(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_send_xy_timer_sub_pre ) {
+ if (HPMHooks.count.HP_guild_send_xy_timer_sub_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_send_xy_timer_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_send_xy_timer_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_guild_send_xy_timer_sub_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -28550,9 +33574,9 @@ int HP_guild_send_xy_timer_sub(union DBKey key, struct DBData *data, va_list ap)
retVal___ = HPMHooks.source.guild.send_xy_timer_sub(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_guild_send_xy_timer_sub_post ) {
+ if (HPMHooks.count.HP_guild_send_xy_timer_sub_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_send_xy_timer_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_send_xy_timer_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_guild_send_xy_timer_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -28564,14 +33588,14 @@ int HP_guild_send_xy_timer_sub(union DBKey key, struct DBData *data, va_list ap)
int HP_guild_send_xy_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_send_xy_timer_pre ) {
+ if (HPMHooks.count.HP_guild_send_xy_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_send_xy_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_send_xy_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_send_xy_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -28579,9 +33603,9 @@ int HP_guild_send_xy_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.guild.send_xy_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_guild_send_xy_timer_post ) {
+ if (HPMHooks.count.HP_guild_send_xy_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_send_xy_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_send_xy_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_send_xy_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -28591,16 +33615,16 @@ int HP_guild_send_xy_timer(int tid, int64 tick, int id, intptr_t data) {
struct DBData HP_guild_create_expcache(union DBKey key, va_list args) {
int hIndex = 0;
struct DBData retVal___ = { 0 };
- if( HPMHooks.count.HP_guild_create_expcache_pre ) {
+ if (HPMHooks.count.HP_guild_create_expcache_pre > 0) {
struct DBData (*preHookFunc) (union DBKey *key, va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_create_expcache_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_create_expcache_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_guild_create_expcache_pre[hIndex].func;
retVal___ = preHookFunc(&key, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -28610,9 +33634,9 @@ struct DBData HP_guild_create_expcache(union DBKey key, va_list args) {
retVal___ = HPMHooks.source.guild.create_expcache(key, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_guild_create_expcache_post ) {
+ if (HPMHooks.count.HP_guild_create_expcache_post > 0) {
struct DBData (*postHookFunc) (struct DBData retVal___, union DBKey key, va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_create_expcache_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_create_expcache_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_guild_create_expcache_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, args___copy);
@@ -28624,16 +33648,16 @@ struct DBData HP_guild_create_expcache(union DBKey key, va_list args) {
int HP_guild_eventlist_db_final(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_eventlist_db_final_pre ) {
+ if (HPMHooks.count.HP_guild_eventlist_db_final_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_eventlist_db_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_eventlist_db_final_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_guild_eventlist_db_final_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -28643,9 +33667,9 @@ int HP_guild_eventlist_db_final(union DBKey key, struct DBData *data, va_list ap
retVal___ = HPMHooks.source.guild.eventlist_db_final(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_guild_eventlist_db_final_post ) {
+ if (HPMHooks.count.HP_guild_eventlist_db_final_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_eventlist_db_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_eventlist_db_final_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_guild_eventlist_db_final_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -28657,16 +33681,16 @@ int HP_guild_eventlist_db_final(union DBKey key, struct DBData *data, va_list ap
int HP_guild_expcache_db_final(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_expcache_db_final_pre ) {
+ if (HPMHooks.count.HP_guild_expcache_db_final_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_expcache_db_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_expcache_db_final_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_guild_expcache_db_final_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -28676,9 +33700,9 @@ int HP_guild_expcache_db_final(union DBKey key, struct DBData *data, va_list ap)
retVal___ = HPMHooks.source.guild.expcache_db_final(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_guild_expcache_db_final_post ) {
+ if (HPMHooks.count.HP_guild_expcache_db_final_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_expcache_db_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_expcache_db_final_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_guild_expcache_db_final_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -28690,16 +33714,16 @@ int HP_guild_expcache_db_final(union DBKey key, struct DBData *data, va_list ap)
int HP_guild_castle_db_final(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_castle_db_final_pre ) {
+ if (HPMHooks.count.HP_guild_castle_db_final_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_castle_db_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_castle_db_final_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_guild_castle_db_final_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -28709,9 +33733,9 @@ int HP_guild_castle_db_final(union DBKey key, struct DBData *data, va_list ap) {
retVal___ = HPMHooks.source.guild.castle_db_final(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_guild_castle_db_final_post ) {
+ if (HPMHooks.count.HP_guild_castle_db_final_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_castle_db_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_castle_db_final_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_guild_castle_db_final_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -28723,16 +33747,16 @@ int HP_guild_castle_db_final(union DBKey key, struct DBData *data, va_list ap) {
int HP_guild_broken_sub(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_broken_sub_pre ) {
+ if (HPMHooks.count.HP_guild_broken_sub_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_broken_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_broken_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_guild_broken_sub_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -28742,9 +33766,9 @@ int HP_guild_broken_sub(union DBKey key, struct DBData *data, va_list ap) {
retVal___ = HPMHooks.source.guild.broken_sub(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_guild_broken_sub_post ) {
+ if (HPMHooks.count.HP_guild_broken_sub_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_broken_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_broken_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_guild_broken_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -28756,16 +33780,16 @@ int HP_guild_broken_sub(union DBKey key, struct DBData *data, va_list ap) {
int HP_guild_castle_broken_sub(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_castle_broken_sub_pre ) {
+ if (HPMHooks.count.HP_guild_castle_broken_sub_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_castle_broken_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_castle_broken_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_guild_castle_broken_sub_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -28775,9 +33799,9 @@ int HP_guild_castle_broken_sub(union DBKey key, struct DBData *data, va_list ap)
retVal___ = HPMHooks.source.guild.castle_broken_sub(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_guild_castle_broken_sub_post ) {
+ if (HPMHooks.count.HP_guild_castle_broken_sub_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_castle_broken_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_castle_broken_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_guild_castle_broken_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -28788,14 +33812,14 @@ int HP_guild_castle_broken_sub(union DBKey key, struct DBData *data, va_list ap)
}
void HP_guild_makemember(struct guild_member *m, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_guild_makemember_pre ) {
+ if (HPMHooks.count.HP_guild_makemember_pre > 0) {
void (*preHookFunc) (struct guild_member **m, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_makemember_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_makemember_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_makemember_pre[hIndex].func;
preHookFunc(&m, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -28803,9 +33827,9 @@ void HP_guild_makemember(struct guild_member *m, struct map_session_data *sd) {
{
HPMHooks.source.guild.makemember(m, sd);
}
- if( HPMHooks.count.HP_guild_makemember_post ) {
+ if (HPMHooks.count.HP_guild_makemember_post > 0) {
void (*postHookFunc) (struct guild_member *m, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_makemember_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_makemember_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_makemember_post[hIndex].func;
postHookFunc(m, sd);
}
@@ -28815,14 +33839,14 @@ void HP_guild_makemember(struct guild_member *m, struct map_session_data *sd) {
int HP_guild_check_member(const struct guild *g) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_check_member_pre ) {
+ if (HPMHooks.count.HP_guild_check_member_pre > 0) {
int (*preHookFunc) (const struct guild **g);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_check_member_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_check_member_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_check_member_pre[hIndex].func;
retVal___ = preHookFunc(&g);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -28830,9 +33854,9 @@ int HP_guild_check_member(const struct guild *g) {
{
retVal___ = HPMHooks.source.guild.check_member(g);
}
- if( HPMHooks.count.HP_guild_check_member_post ) {
+ if (HPMHooks.count.HP_guild_check_member_post > 0) {
int (*postHookFunc) (int retVal___, const struct guild *g);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_check_member_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_check_member_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_check_member_post[hIndex].func;
retVal___ = postHookFunc(retVal___, g);
}
@@ -28842,14 +33866,14 @@ int HP_guild_check_member(const struct guild *g) {
int HP_guild_get_alliance_count(struct guild *g, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_guild_get_alliance_count_pre ) {
+ if (HPMHooks.count.HP_guild_get_alliance_count_pre > 0) {
int (*preHookFunc) (struct guild **g, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_get_alliance_count_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_get_alliance_count_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_get_alliance_count_pre[hIndex].func;
retVal___ = preHookFunc(&g, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -28857,9 +33881,9 @@ int HP_guild_get_alliance_count(struct guild *g, int flag) {
{
retVal___ = HPMHooks.source.guild.get_alliance_count(g, flag);
}
- if( HPMHooks.count.HP_guild_get_alliance_count_post ) {
+ if (HPMHooks.count.HP_guild_get_alliance_count_post > 0) {
int (*postHookFunc) (int retVal___, struct guild *g, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_get_alliance_count_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_get_alliance_count_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_get_alliance_count_post[hIndex].func;
retVal___ = postHookFunc(retVal___, g, flag);
}
@@ -28868,16 +33892,16 @@ int HP_guild_get_alliance_count(struct guild *g, int flag) {
}
void HP_guild_castle_reconnect_sub(void *key, void *data, va_list ap) {
int hIndex = 0;
- if( HPMHooks.count.HP_guild_castle_reconnect_sub_pre ) {
+ if (HPMHooks.count.HP_guild_castle_reconnect_sub_pre > 0) {
void (*preHookFunc) (void **key, void **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_castle_reconnect_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_castle_reconnect_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_guild_castle_reconnect_sub_pre[hIndex].func;
preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -28887,9 +33911,9 @@ void HP_guild_castle_reconnect_sub(void *key, void *data, va_list ap) {
HPMHooks.source.guild.castle_reconnect_sub(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_guild_castle_reconnect_sub_post ) {
+ if (HPMHooks.count.HP_guild_castle_reconnect_sub_post > 0) {
void (*postHookFunc) (void *key, void *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_castle_reconnect_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_castle_reconnect_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_guild_castle_reconnect_sub_post[hIndex].func;
postHookFunc(key, data, ap___copy);
@@ -28902,14 +33926,14 @@ void HP_guild_castle_reconnect_sub(void *key, void *data, va_list ap) {
struct guild_storage* HP_gstorage_ensure(int guild_id) {
int hIndex = 0;
struct guild_storage* retVal___ = NULL;
- if( HPMHooks.count.HP_gstorage_ensure_pre ) {
+ if (HPMHooks.count.HP_gstorage_ensure_pre > 0) {
struct guild_storage* (*preHookFunc) (int *guild_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_ensure_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_ensure_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_gstorage_ensure_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -28917,9 +33941,9 @@ struct guild_storage* HP_gstorage_ensure(int guild_id) {
{
retVal___ = HPMHooks.source.gstorage.ensure(guild_id);
}
- if( HPMHooks.count.HP_gstorage_ensure_post ) {
+ if (HPMHooks.count.HP_gstorage_ensure_post > 0) {
struct guild_storage* (*postHookFunc) (struct guild_storage* retVal___, int guild_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_ensure_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_ensure_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_gstorage_ensure_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id);
}
@@ -28928,14 +33952,14 @@ struct guild_storage* HP_gstorage_ensure(int guild_id) {
}
void HP_gstorage_init(bool minimal) {
int hIndex = 0;
- if( HPMHooks.count.HP_gstorage_init_pre ) {
+ if (HPMHooks.count.HP_gstorage_init_pre > 0) {
void (*preHookFunc) (bool *minimal);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_gstorage_init_pre[hIndex].func;
preHookFunc(&minimal);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -28943,9 +33967,9 @@ void HP_gstorage_init(bool minimal) {
{
HPMHooks.source.gstorage.init(minimal);
}
- if( HPMHooks.count.HP_gstorage_init_post ) {
+ if (HPMHooks.count.HP_gstorage_init_post > 0) {
void (*postHookFunc) (bool minimal);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_gstorage_init_post[hIndex].func;
postHookFunc(minimal);
}
@@ -28954,14 +33978,14 @@ void HP_gstorage_init(bool minimal) {
}
void HP_gstorage_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_gstorage_final_pre ) {
+ if (HPMHooks.count.HP_gstorage_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_gstorage_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -28969,9 +33993,9 @@ void HP_gstorage_final(void) {
{
HPMHooks.source.gstorage.final();
}
- if( HPMHooks.count.HP_gstorage_final_post ) {
+ if (HPMHooks.count.HP_gstorage_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_gstorage_final_post[hIndex].func;
postHookFunc();
}
@@ -28981,14 +34005,14 @@ void HP_gstorage_final(void) {
int HP_gstorage_delete(int guild_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_gstorage_delete_pre ) {
+ if (HPMHooks.count.HP_gstorage_delete_pre > 0) {
int (*preHookFunc) (int *guild_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_gstorage_delete_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -28996,9 +34020,9 @@ int HP_gstorage_delete(int guild_id) {
{
retVal___ = HPMHooks.source.gstorage.delete(guild_id);
}
- if( HPMHooks.count.HP_gstorage_delete_post ) {
+ if (HPMHooks.count.HP_gstorage_delete_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_gstorage_delete_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id);
}
@@ -29008,14 +34032,14 @@ int HP_gstorage_delete(int guild_id) {
int HP_gstorage_open(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_gstorage_open_pre ) {
+ if (HPMHooks.count.HP_gstorage_open_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_open_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_open_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_gstorage_open_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -29023,9 +34047,9 @@ int HP_gstorage_open(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.gstorage.open(sd);
}
- if( HPMHooks.count.HP_gstorage_open_post ) {
+ if (HPMHooks.count.HP_gstorage_open_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_open_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_open_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_gstorage_open_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -29035,14 +34059,14 @@ int HP_gstorage_open(struct map_session_data *sd) {
int HP_gstorage_additem(struct map_session_data *sd, struct guild_storage *stor, struct item *item_data, int amount) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_gstorage_additem_pre ) {
+ if (HPMHooks.count.HP_gstorage_additem_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct guild_storage **stor, struct item **item_data, int *amount);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_additem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_additem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_gstorage_additem_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &stor, &item_data, &amount);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -29050,9 +34074,9 @@ int HP_gstorage_additem(struct map_session_data *sd, struct guild_storage *stor,
{
retVal___ = HPMHooks.source.gstorage.additem(sd, stor, item_data, amount);
}
- if( HPMHooks.count.HP_gstorage_additem_post ) {
+ if (HPMHooks.count.HP_gstorage_additem_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct guild_storage *stor, struct item *item_data, int amount);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_additem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_additem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_gstorage_additem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, stor, item_data, amount);
}
@@ -29062,14 +34086,14 @@ int HP_gstorage_additem(struct map_session_data *sd, struct guild_storage *stor,
int HP_gstorage_delitem(struct map_session_data *sd, struct guild_storage *stor, int n, int amount) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_gstorage_delitem_pre ) {
+ if (HPMHooks.count.HP_gstorage_delitem_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct guild_storage **stor, int *n, int *amount);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_delitem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_delitem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_gstorage_delitem_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &stor, &n, &amount);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -29077,9 +34101,9 @@ int HP_gstorage_delitem(struct map_session_data *sd, struct guild_storage *stor,
{
retVal___ = HPMHooks.source.gstorage.delitem(sd, stor, n, amount);
}
- if( HPMHooks.count.HP_gstorage_delitem_post ) {
+ if (HPMHooks.count.HP_gstorage_delitem_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct guild_storage *stor, int n, int amount);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_delitem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_delitem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_gstorage_delitem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, stor, n, amount);
}
@@ -29089,14 +34113,14 @@ int HP_gstorage_delitem(struct map_session_data *sd, struct guild_storage *stor,
int HP_gstorage_add(struct map_session_data *sd, int index, int amount) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_gstorage_add_pre ) {
+ if (HPMHooks.count.HP_gstorage_add_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *index, int *amount);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_add_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_add_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_gstorage_add_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &index, &amount);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -29104,9 +34128,9 @@ int HP_gstorage_add(struct map_session_data *sd, int index, int amount) {
{
retVal___ = HPMHooks.source.gstorage.add(sd, index, amount);
}
- if( HPMHooks.count.HP_gstorage_add_post ) {
+ if (HPMHooks.count.HP_gstorage_add_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int index, int amount);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_add_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_add_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_gstorage_add_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, index, amount);
}
@@ -29116,14 +34140,14 @@ int HP_gstorage_add(struct map_session_data *sd, int index, int amount) {
int HP_gstorage_get(struct map_session_data *sd, int index, int amount) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_gstorage_get_pre ) {
+ if (HPMHooks.count.HP_gstorage_get_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *index, int *amount);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_get_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_get_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_gstorage_get_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &index, &amount);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -29131,9 +34155,9 @@ int HP_gstorage_get(struct map_session_data *sd, int index, int amount) {
{
retVal___ = HPMHooks.source.gstorage.get(sd, index, amount);
}
- if( HPMHooks.count.HP_gstorage_get_post ) {
+ if (HPMHooks.count.HP_gstorage_get_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int index, int amount);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_get_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_get_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_gstorage_get_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, index, amount);
}
@@ -29143,14 +34167,14 @@ int HP_gstorage_get(struct map_session_data *sd, int index, int amount) {
int HP_gstorage_addfromcart(struct map_session_data *sd, int index, int amount) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_gstorage_addfromcart_pre ) {
+ if (HPMHooks.count.HP_gstorage_addfromcart_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *index, int *amount);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_addfromcart_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_addfromcart_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_gstorage_addfromcart_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &index, &amount);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -29158,9 +34182,9 @@ int HP_gstorage_addfromcart(struct map_session_data *sd, int index, int amount)
{
retVal___ = HPMHooks.source.gstorage.addfromcart(sd, index, amount);
}
- if( HPMHooks.count.HP_gstorage_addfromcart_post ) {
+ if (HPMHooks.count.HP_gstorage_addfromcart_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int index, int amount);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_addfromcart_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_addfromcart_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_gstorage_addfromcart_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, index, amount);
}
@@ -29170,14 +34194,14 @@ int HP_gstorage_addfromcart(struct map_session_data *sd, int index, int amount)
int HP_gstorage_gettocart(struct map_session_data *sd, int index, int amount) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_gstorage_gettocart_pre ) {
+ if (HPMHooks.count.HP_gstorage_gettocart_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *index, int *amount);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_gettocart_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_gettocart_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_gstorage_gettocart_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &index, &amount);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -29185,9 +34209,9 @@ int HP_gstorage_gettocart(struct map_session_data *sd, int index, int amount) {
{
retVal___ = HPMHooks.source.gstorage.gettocart(sd, index, amount);
}
- if( HPMHooks.count.HP_gstorage_gettocart_post ) {
+ if (HPMHooks.count.HP_gstorage_gettocart_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int index, int amount);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_gettocart_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_gettocart_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_gstorage_gettocart_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, index, amount);
}
@@ -29197,14 +34221,14 @@ int HP_gstorage_gettocart(struct map_session_data *sd, int index, int amount) {
int HP_gstorage_close(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_gstorage_close_pre ) {
+ if (HPMHooks.count.HP_gstorage_close_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_close_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_close_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_gstorage_close_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -29212,9 +34236,9 @@ int HP_gstorage_close(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.gstorage.close(sd);
}
- if( HPMHooks.count.HP_gstorage_close_post ) {
+ if (HPMHooks.count.HP_gstorage_close_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_close_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_close_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_gstorage_close_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -29224,14 +34248,14 @@ int HP_gstorage_close(struct map_session_data *sd) {
int HP_gstorage_pc_quit(struct map_session_data *sd, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_gstorage_pc_quit_pre ) {
+ if (HPMHooks.count.HP_gstorage_pc_quit_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_pc_quit_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_pc_quit_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_gstorage_pc_quit_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -29239,9 +34263,9 @@ int HP_gstorage_pc_quit(struct map_session_data *sd, int flag) {
{
retVal___ = HPMHooks.source.gstorage.pc_quit(sd, flag);
}
- if( HPMHooks.count.HP_gstorage_pc_quit_post ) {
+ if (HPMHooks.count.HP_gstorage_pc_quit_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_pc_quit_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_pc_quit_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_gstorage_pc_quit_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, flag);
}
@@ -29251,14 +34275,14 @@ int HP_gstorage_pc_quit(struct map_session_data *sd, int flag) {
int HP_gstorage_save(int account_id, int guild_id, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_gstorage_save_pre ) {
+ if (HPMHooks.count.HP_gstorage_save_pre > 0) {
int (*preHookFunc) (int *account_id, int *guild_id, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_save_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_save_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_gstorage_save_pre[hIndex].func;
retVal___ = preHookFunc(&account_id, &guild_id, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -29266,9 +34290,9 @@ int HP_gstorage_save(int account_id, int guild_id, int flag) {
{
retVal___ = HPMHooks.source.gstorage.save(account_id, guild_id, flag);
}
- if( HPMHooks.count.HP_gstorage_save_post ) {
+ if (HPMHooks.count.HP_gstorage_save_post > 0) {
int (*postHookFunc) (int retVal___, int account_id, int guild_id, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_save_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_save_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_gstorage_save_post[hIndex].func;
retVal___ = postHookFunc(retVal___, account_id, guild_id, flag);
}
@@ -29278,14 +34302,14 @@ int HP_gstorage_save(int account_id, int guild_id, int flag) {
int HP_gstorage_saved(int guild_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_gstorage_saved_pre ) {
+ if (HPMHooks.count.HP_gstorage_saved_pre > 0) {
int (*preHookFunc) (int *guild_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_saved_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_saved_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_gstorage_saved_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -29293,9 +34317,9 @@ int HP_gstorage_saved(int guild_id) {
{
retVal___ = HPMHooks.source.gstorage.saved(guild_id);
}
- if( HPMHooks.count.HP_gstorage_saved_post ) {
+ if (HPMHooks.count.HP_gstorage_saved_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_saved_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_saved_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_gstorage_saved_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id);
}
@@ -29305,16 +34329,16 @@ int HP_gstorage_saved(int guild_id) {
struct DBData HP_gstorage_create(union DBKey key, va_list args) {
int hIndex = 0;
struct DBData retVal___ = { 0 };
- if( HPMHooks.count.HP_gstorage_create_pre ) {
+ if (HPMHooks.count.HP_gstorage_create_pre > 0) {
struct DBData (*preHookFunc) (union DBKey *key, va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_create_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_gstorage_create_pre[hIndex].func;
retVal___ = preHookFunc(&key, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -29324,9 +34348,9 @@ struct DBData HP_gstorage_create(union DBKey key, va_list args) {
retVal___ = HPMHooks.source.gstorage.create(key, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_gstorage_create_post ) {
+ if (HPMHooks.count.HP_gstorage_create_post > 0) {
struct DBData (*postHookFunc) (struct DBData retVal___, union DBKey key, va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_gstorage_create_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_gstorage_create_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, args___copy);
@@ -29338,14 +34362,14 @@ struct DBData HP_gstorage_create(union DBKey key, va_list args) {
/* homunculus_interface */
void HP_homun_init(bool minimal) {
int hIndex = 0;
- if( HPMHooks.count.HP_homun_init_pre ) {
+ if (HPMHooks.count.HP_homun_init_pre > 0) {
void (*preHookFunc) (bool *minimal);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_init_pre[hIndex].func;
preHookFunc(&minimal);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -29353,9 +34377,9 @@ void HP_homun_init(bool minimal) {
{
HPMHooks.source.homun.init(minimal);
}
- if( HPMHooks.count.HP_homun_init_post ) {
+ if (HPMHooks.count.HP_homun_init_post > 0) {
void (*postHookFunc) (bool minimal);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_init_post[hIndex].func;
postHookFunc(minimal);
}
@@ -29364,14 +34388,14 @@ void HP_homun_init(bool minimal) {
}
void HP_homun_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_homun_final_pre ) {
+ if (HPMHooks.count.HP_homun_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -29379,9 +34403,9 @@ void HP_homun_final(void) {
{
HPMHooks.source.homun.final();
}
- if( HPMHooks.count.HP_homun_final_post ) {
+ if (HPMHooks.count.HP_homun_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_final_post[hIndex].func;
postHookFunc();
}
@@ -29390,14 +34414,14 @@ void HP_homun_final(void) {
}
void HP_homun_reload(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_homun_reload_pre ) {
+ if (HPMHooks.count.HP_homun_reload_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_reload_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_reload_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_reload_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -29405,9 +34429,9 @@ void HP_homun_reload(void) {
{
HPMHooks.source.homun.reload();
}
- if( HPMHooks.count.HP_homun_reload_post ) {
+ if (HPMHooks.count.HP_homun_reload_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_reload_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_reload_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_reload_post[hIndex].func;
postHookFunc();
}
@@ -29416,14 +34440,14 @@ void HP_homun_reload(void) {
}
void HP_homun_reload_skill(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_homun_reload_skill_pre ) {
+ if (HPMHooks.count.HP_homun_reload_skill_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_reload_skill_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_reload_skill_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_reload_skill_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -29431,9 +34455,9 @@ void HP_homun_reload_skill(void) {
{
HPMHooks.source.homun.reload_skill();
}
- if( HPMHooks.count.HP_homun_reload_skill_post ) {
+ if (HPMHooks.count.HP_homun_reload_skill_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_reload_skill_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_reload_skill_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_reload_skill_post[hIndex].func;
postHookFunc();
}
@@ -29443,14 +34467,14 @@ void HP_homun_reload_skill(void) {
struct view_data* HP_homun_get_viewdata(int class_) {
int hIndex = 0;
struct view_data* retVal___ = NULL;
- if( HPMHooks.count.HP_homun_get_viewdata_pre ) {
+ if (HPMHooks.count.HP_homun_get_viewdata_pre > 0) {
struct view_data* (*preHookFunc) (int *class_);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_get_viewdata_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_get_viewdata_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_get_viewdata_pre[hIndex].func;
retVal___ = preHookFunc(&class_);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -29458,9 +34482,9 @@ struct view_data* HP_homun_get_viewdata(int class_) {
{
retVal___ = HPMHooks.source.homun.get_viewdata(class_);
}
- if( HPMHooks.count.HP_homun_get_viewdata_post ) {
+ if (HPMHooks.count.HP_homun_get_viewdata_post > 0) {
struct view_data* (*postHookFunc) (struct view_data* retVal___, int class_);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_get_viewdata_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_get_viewdata_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_get_viewdata_post[hIndex].func;
retVal___ = postHookFunc(retVal___, class_);
}
@@ -29470,14 +34494,14 @@ struct view_data* HP_homun_get_viewdata(int class_) {
enum homun_type HP_homun_class2type(int class_) {
int hIndex = 0;
enum homun_type retVal___ = HT_INVALID;
- if( HPMHooks.count.HP_homun_class2type_pre ) {
+ if (HPMHooks.count.HP_homun_class2type_pre > 0) {
enum homun_type (*preHookFunc) (int *class_);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_class2type_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_class2type_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_class2type_pre[hIndex].func;
retVal___ = preHookFunc(&class_);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -29485,9 +34509,9 @@ enum homun_type HP_homun_class2type(int class_) {
{
retVal___ = HPMHooks.source.homun.class2type(class_);
}
- if( HPMHooks.count.HP_homun_class2type_post ) {
+ if (HPMHooks.count.HP_homun_class2type_post > 0) {
enum homun_type (*postHookFunc) (enum homun_type retVal___, int class_);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_class2type_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_class2type_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_class2type_post[hIndex].func;
retVal___ = postHookFunc(retVal___, class_);
}
@@ -29496,14 +34520,14 @@ enum homun_type HP_homun_class2type(int class_) {
}
void HP_homun_damaged(struct homun_data *hd) {
int hIndex = 0;
- if( HPMHooks.count.HP_homun_damaged_pre ) {
+ if (HPMHooks.count.HP_homun_damaged_pre > 0) {
void (*preHookFunc) (struct homun_data **hd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_damaged_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_damaged_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_damaged_pre[hIndex].func;
preHookFunc(&hd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -29511,9 +34535,9 @@ void HP_homun_damaged(struct homun_data *hd) {
{
HPMHooks.source.homun.damaged(hd);
}
- if( HPMHooks.count.HP_homun_damaged_post ) {
+ if (HPMHooks.count.HP_homun_damaged_post > 0) {
void (*postHookFunc) (struct homun_data *hd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_damaged_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_damaged_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_damaged_post[hIndex].func;
postHookFunc(hd);
}
@@ -29523,14 +34547,14 @@ void HP_homun_damaged(struct homun_data *hd) {
int HP_homun_dead(struct homun_data *hd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_homun_dead_pre ) {
+ if (HPMHooks.count.HP_homun_dead_pre > 0) {
int (*preHookFunc) (struct homun_data **hd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_dead_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_dead_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_dead_pre[hIndex].func;
retVal___ = preHookFunc(&hd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -29538,9 +34562,9 @@ int HP_homun_dead(struct homun_data *hd) {
{
retVal___ = HPMHooks.source.homun.dead(hd);
}
- if( HPMHooks.count.HP_homun_dead_post ) {
+ if (HPMHooks.count.HP_homun_dead_post > 0) {
int (*postHookFunc) (int retVal___, struct homun_data *hd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_dead_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_dead_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_dead_post[hIndex].func;
retVal___ = postHookFunc(retVal___, hd);
}
@@ -29550,14 +34574,14 @@ int HP_homun_dead(struct homun_data *hd) {
int HP_homun_vaporize(struct map_session_data *sd, enum homun_state flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_homun_vaporize_pre ) {
+ if (HPMHooks.count.HP_homun_vaporize_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, enum homun_state *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_vaporize_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_vaporize_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_vaporize_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -29565,9 +34589,9 @@ int HP_homun_vaporize(struct map_session_data *sd, enum homun_state flag) {
{
retVal___ = HPMHooks.source.homun.vaporize(sd, flag);
}
- if( HPMHooks.count.HP_homun_vaporize_post ) {
+ if (HPMHooks.count.HP_homun_vaporize_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, enum homun_state flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_vaporize_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_vaporize_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_vaporize_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, flag);
}
@@ -29577,14 +34601,14 @@ int HP_homun_vaporize(struct map_session_data *sd, enum homun_state flag) {
int HP_homun_delete(struct homun_data *hd, int emote) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_homun_delete_pre ) {
+ if (HPMHooks.count.HP_homun_delete_pre > 0) {
int (*preHookFunc) (struct homun_data **hd, int *emote);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_delete_pre[hIndex].func;
retVal___ = preHookFunc(&hd, &emote);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -29592,9 +34616,9 @@ int HP_homun_delete(struct homun_data *hd, int emote) {
{
retVal___ = HPMHooks.source.homun.delete(hd, emote);
}
- if( HPMHooks.count.HP_homun_delete_post ) {
+ if (HPMHooks.count.HP_homun_delete_post > 0) {
int (*postHookFunc) (int retVal___, struct homun_data *hd, int emote);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_delete_post[hIndex].func;
retVal___ = postHookFunc(retVal___, hd, emote);
}
@@ -29604,14 +34628,14 @@ int HP_homun_delete(struct homun_data *hd, int emote) {
int HP_homun_checkskill(struct homun_data *hd, uint16 skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_homun_checkskill_pre ) {
+ if (HPMHooks.count.HP_homun_checkskill_pre > 0) {
int (*preHookFunc) (struct homun_data **hd, uint16 *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_checkskill_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_checkskill_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_checkskill_pre[hIndex].func;
retVal___ = preHookFunc(&hd, &skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -29619,9 +34643,9 @@ int HP_homun_checkskill(struct homun_data *hd, uint16 skill_id) {
{
retVal___ = HPMHooks.source.homun.checkskill(hd, skill_id);
}
- if( HPMHooks.count.HP_homun_checkskill_post ) {
+ if (HPMHooks.count.HP_homun_checkskill_post > 0) {
int (*postHookFunc) (int retVal___, struct homun_data *hd, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_checkskill_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_checkskill_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_checkskill_post[hIndex].func;
retVal___ = postHookFunc(retVal___, hd, skill_id);
}
@@ -29631,14 +34655,14 @@ int HP_homun_checkskill(struct homun_data *hd, uint16 skill_id) {
int HP_homun_calc_skilltree(struct homun_data *hd, int flag_evolve) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_homun_calc_skilltree_pre ) {
+ if (HPMHooks.count.HP_homun_calc_skilltree_pre > 0) {
int (*preHookFunc) (struct homun_data **hd, int *flag_evolve);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_calc_skilltree_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_calc_skilltree_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_calc_skilltree_pre[hIndex].func;
retVal___ = preHookFunc(&hd, &flag_evolve);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -29646,9 +34670,9 @@ int HP_homun_calc_skilltree(struct homun_data *hd, int flag_evolve) {
{
retVal___ = HPMHooks.source.homun.calc_skilltree(hd, flag_evolve);
}
- if( HPMHooks.count.HP_homun_calc_skilltree_post ) {
+ if (HPMHooks.count.HP_homun_calc_skilltree_post > 0) {
int (*postHookFunc) (int retVal___, struct homun_data *hd, int flag_evolve);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_calc_skilltree_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_calc_skilltree_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_calc_skilltree_post[hIndex].func;
retVal___ = postHookFunc(retVal___, hd, flag_evolve);
}
@@ -29658,14 +34682,14 @@ int HP_homun_calc_skilltree(struct homun_data *hd, int flag_evolve) {
int HP_homun_skill_tree_get_max(int id, int b_class) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_homun_skill_tree_get_max_pre ) {
+ if (HPMHooks.count.HP_homun_skill_tree_get_max_pre > 0) {
int (*preHookFunc) (int *id, int *b_class);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_skill_tree_get_max_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_skill_tree_get_max_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_skill_tree_get_max_pre[hIndex].func;
retVal___ = preHookFunc(&id, &b_class);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -29673,9 +34697,9 @@ int HP_homun_skill_tree_get_max(int id, int b_class) {
{
retVal___ = HPMHooks.source.homun.skill_tree_get_max(id, b_class);
}
- if( HPMHooks.count.HP_homun_skill_tree_get_max_post ) {
+ if (HPMHooks.count.HP_homun_skill_tree_get_max_post > 0) {
int (*postHookFunc) (int retVal___, int id, int b_class);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_skill_tree_get_max_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_skill_tree_get_max_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_skill_tree_get_max_post[hIndex].func;
retVal___ = postHookFunc(retVal___, id, b_class);
}
@@ -29684,14 +34708,14 @@ int HP_homun_skill_tree_get_max(int id, int b_class) {
}
void HP_homun_skillup(struct homun_data *hd, uint16 skill_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_homun_skillup_pre ) {
+ if (HPMHooks.count.HP_homun_skillup_pre > 0) {
void (*preHookFunc) (struct homun_data **hd, uint16 *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_skillup_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_skillup_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_skillup_pre[hIndex].func;
preHookFunc(&hd, &skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -29699,9 +34723,9 @@ void HP_homun_skillup(struct homun_data *hd, uint16 skill_id) {
{
HPMHooks.source.homun.skillup(hd, skill_id);
}
- if( HPMHooks.count.HP_homun_skillup_post ) {
+ if (HPMHooks.count.HP_homun_skillup_post > 0) {
void (*postHookFunc) (struct homun_data *hd, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_skillup_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_skillup_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_skillup_post[hIndex].func;
postHookFunc(hd, skill_id);
}
@@ -29711,14 +34735,14 @@ void HP_homun_skillup(struct homun_data *hd, uint16 skill_id) {
bool HP_homun_levelup(struct homun_data *hd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_homun_levelup_pre ) {
+ if (HPMHooks.count.HP_homun_levelup_pre > 0) {
bool (*preHookFunc) (struct homun_data **hd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_levelup_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_levelup_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_levelup_pre[hIndex].func;
retVal___ = preHookFunc(&hd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -29726,9 +34750,9 @@ bool HP_homun_levelup(struct homun_data *hd) {
{
retVal___ = HPMHooks.source.homun.levelup(hd);
}
- if( HPMHooks.count.HP_homun_levelup_post ) {
+ if (HPMHooks.count.HP_homun_levelup_post > 0) {
bool (*postHookFunc) (bool retVal___, struct homun_data *hd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_levelup_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_levelup_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_levelup_post[hIndex].func;
retVal___ = postHookFunc(retVal___, hd);
}
@@ -29738,14 +34762,14 @@ bool HP_homun_levelup(struct homun_data *hd) {
int HP_homun_change_class(struct homun_data *hd, short class_) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_homun_change_class_pre ) {
+ if (HPMHooks.count.HP_homun_change_class_pre > 0) {
int (*preHookFunc) (struct homun_data **hd, short *class_);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_change_class_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_change_class_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_change_class_pre[hIndex].func;
retVal___ = preHookFunc(&hd, &class_);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -29753,9 +34777,9 @@ int HP_homun_change_class(struct homun_data *hd, short class_) {
{
retVal___ = HPMHooks.source.homun.change_class(hd, class_);
}
- if( HPMHooks.count.HP_homun_change_class_post ) {
+ if (HPMHooks.count.HP_homun_change_class_post > 0) {
int (*postHookFunc) (int retVal___, struct homun_data *hd, short class_);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_change_class_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_change_class_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_change_class_post[hIndex].func;
retVal___ = postHookFunc(retVal___, hd, class_);
}
@@ -29765,14 +34789,14 @@ int HP_homun_change_class(struct homun_data *hd, short class_) {
bool HP_homun_evolve(struct homun_data *hd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_homun_evolve_pre ) {
+ if (HPMHooks.count.HP_homun_evolve_pre > 0) {
bool (*preHookFunc) (struct homun_data **hd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_evolve_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_evolve_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_evolve_pre[hIndex].func;
retVal___ = preHookFunc(&hd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -29780,9 +34804,9 @@ bool HP_homun_evolve(struct homun_data *hd) {
{
retVal___ = HPMHooks.source.homun.evolve(hd);
}
- if( HPMHooks.count.HP_homun_evolve_post ) {
+ if (HPMHooks.count.HP_homun_evolve_post > 0) {
bool (*postHookFunc) (bool retVal___, struct homun_data *hd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_evolve_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_evolve_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_evolve_post[hIndex].func;
retVal___ = postHookFunc(retVal___, hd);
}
@@ -29792,14 +34816,14 @@ bool HP_homun_evolve(struct homun_data *hd) {
bool HP_homun_mutate(struct homun_data *hd, int homun_id) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_homun_mutate_pre ) {
+ if (HPMHooks.count.HP_homun_mutate_pre > 0) {
bool (*preHookFunc) (struct homun_data **hd, int *homun_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_mutate_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_mutate_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_mutate_pre[hIndex].func;
retVal___ = preHookFunc(&hd, &homun_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -29807,9 +34831,9 @@ bool HP_homun_mutate(struct homun_data *hd, int homun_id) {
{
retVal___ = HPMHooks.source.homun.mutate(hd, homun_id);
}
- if( HPMHooks.count.HP_homun_mutate_post ) {
+ if (HPMHooks.count.HP_homun_mutate_post > 0) {
bool (*postHookFunc) (bool retVal___, struct homun_data *hd, int homun_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_mutate_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_mutate_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_mutate_post[hIndex].func;
retVal___ = postHookFunc(retVal___, hd, homun_id);
}
@@ -29819,14 +34843,14 @@ bool HP_homun_mutate(struct homun_data *hd, int homun_id) {
int HP_homun_gainexp(struct homun_data *hd, unsigned int exp) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_homun_gainexp_pre ) {
+ if (HPMHooks.count.HP_homun_gainexp_pre > 0) {
int (*preHookFunc) (struct homun_data **hd, unsigned int *exp);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_gainexp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_gainexp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_gainexp_pre[hIndex].func;
retVal___ = preHookFunc(&hd, &exp);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -29834,9 +34858,9 @@ int HP_homun_gainexp(struct homun_data *hd, unsigned int exp) {
{
retVal___ = HPMHooks.source.homun.gainexp(hd, exp);
}
- if( HPMHooks.count.HP_homun_gainexp_post ) {
+ if (HPMHooks.count.HP_homun_gainexp_post > 0) {
int (*postHookFunc) (int retVal___, struct homun_data *hd, unsigned int exp);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_gainexp_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_gainexp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_gainexp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, hd, exp);
}
@@ -29846,14 +34870,14 @@ int HP_homun_gainexp(struct homun_data *hd, unsigned int exp) {
unsigned int HP_homun_add_intimacy(struct homun_data *hd, unsigned int value) {
int hIndex = 0;
unsigned int retVal___ = 0;
- if( HPMHooks.count.HP_homun_add_intimacy_pre ) {
+ if (HPMHooks.count.HP_homun_add_intimacy_pre > 0) {
unsigned int (*preHookFunc) (struct homun_data **hd, unsigned int *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_add_intimacy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_add_intimacy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_add_intimacy_pre[hIndex].func;
retVal___ = preHookFunc(&hd, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -29861,9 +34885,9 @@ unsigned int HP_homun_add_intimacy(struct homun_data *hd, unsigned int value) {
{
retVal___ = HPMHooks.source.homun.add_intimacy(hd, value);
}
- if( HPMHooks.count.HP_homun_add_intimacy_post ) {
+ if (HPMHooks.count.HP_homun_add_intimacy_post > 0) {
unsigned int (*postHookFunc) (unsigned int retVal___, struct homun_data *hd, unsigned int value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_add_intimacy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_add_intimacy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_add_intimacy_post[hIndex].func;
retVal___ = postHookFunc(retVal___, hd, value);
}
@@ -29873,14 +34897,14 @@ unsigned int HP_homun_add_intimacy(struct homun_data *hd, unsigned int value) {
unsigned int HP_homun_consume_intimacy(struct homun_data *hd, unsigned int value) {
int hIndex = 0;
unsigned int retVal___ = 0;
- if( HPMHooks.count.HP_homun_consume_intimacy_pre ) {
+ if (HPMHooks.count.HP_homun_consume_intimacy_pre > 0) {
unsigned int (*preHookFunc) (struct homun_data **hd, unsigned int *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_consume_intimacy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_consume_intimacy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_consume_intimacy_pre[hIndex].func;
retVal___ = preHookFunc(&hd, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -29888,9 +34912,9 @@ unsigned int HP_homun_consume_intimacy(struct homun_data *hd, unsigned int value
{
retVal___ = HPMHooks.source.homun.consume_intimacy(hd, value);
}
- if( HPMHooks.count.HP_homun_consume_intimacy_post ) {
+ if (HPMHooks.count.HP_homun_consume_intimacy_post > 0) {
unsigned int (*postHookFunc) (unsigned int retVal___, struct homun_data *hd, unsigned int value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_consume_intimacy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_consume_intimacy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_consume_intimacy_post[hIndex].func;
retVal___ = postHookFunc(retVal___, hd, value);
}
@@ -29899,14 +34923,14 @@ unsigned int HP_homun_consume_intimacy(struct homun_data *hd, unsigned int value
}
void HP_homun_healed(struct homun_data *hd) {
int hIndex = 0;
- if( HPMHooks.count.HP_homun_healed_pre ) {
+ if (HPMHooks.count.HP_homun_healed_pre > 0) {
void (*preHookFunc) (struct homun_data **hd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_healed_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_healed_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_healed_pre[hIndex].func;
preHookFunc(&hd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -29914,9 +34938,9 @@ void HP_homun_healed(struct homun_data *hd) {
{
HPMHooks.source.homun.healed(hd);
}
- if( HPMHooks.count.HP_homun_healed_post ) {
+ if (HPMHooks.count.HP_homun_healed_post > 0) {
void (*postHookFunc) (struct homun_data *hd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_healed_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_healed_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_healed_post[hIndex].func;
postHookFunc(hd);
}
@@ -29925,14 +34949,14 @@ void HP_homun_healed(struct homun_data *hd) {
}
void HP_homun_save(struct homun_data *hd) {
int hIndex = 0;
- if( HPMHooks.count.HP_homun_save_pre ) {
+ if (HPMHooks.count.HP_homun_save_pre > 0) {
void (*preHookFunc) (struct homun_data **hd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_save_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_save_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_save_pre[hIndex].func;
preHookFunc(&hd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -29940,9 +34964,9 @@ void HP_homun_save(struct homun_data *hd) {
{
HPMHooks.source.homun.save(hd);
}
- if( HPMHooks.count.HP_homun_save_post ) {
+ if (HPMHooks.count.HP_homun_save_post > 0) {
void (*postHookFunc) (struct homun_data *hd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_save_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_save_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_save_post[hIndex].func;
postHookFunc(hd);
}
@@ -29952,14 +34976,14 @@ void HP_homun_save(struct homun_data *hd) {
unsigned char HP_homun_menu(struct map_session_data *sd, unsigned char menu_num) {
int hIndex = 0;
unsigned char retVal___ = 0;
- if( HPMHooks.count.HP_homun_menu_pre ) {
+ if (HPMHooks.count.HP_homun_menu_pre > 0) {
unsigned char (*preHookFunc) (struct map_session_data **sd, unsigned char *menu_num);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_menu_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_menu_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_menu_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &menu_num);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -29967,9 +34991,9 @@ unsigned char HP_homun_menu(struct map_session_data *sd, unsigned char menu_num)
{
retVal___ = HPMHooks.source.homun.menu(sd, menu_num);
}
- if( HPMHooks.count.HP_homun_menu_post ) {
+ if (HPMHooks.count.HP_homun_menu_post > 0) {
unsigned char (*postHookFunc) (unsigned char retVal___, struct map_session_data *sd, unsigned char menu_num);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_menu_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_menu_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_menu_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, menu_num);
}
@@ -29979,14 +35003,14 @@ unsigned char HP_homun_menu(struct map_session_data *sd, unsigned char menu_num)
bool HP_homun_feed(struct map_session_data *sd, struct homun_data *hd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_homun_feed_pre ) {
+ if (HPMHooks.count.HP_homun_feed_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, struct homun_data **hd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_feed_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_feed_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_feed_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &hd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -29994,9 +35018,9 @@ bool HP_homun_feed(struct map_session_data *sd, struct homun_data *hd) {
{
retVal___ = HPMHooks.source.homun.feed(sd, hd);
}
- if( HPMHooks.count.HP_homun_feed_post ) {
+ if (HPMHooks.count.HP_homun_feed_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, struct homun_data *hd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_feed_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_feed_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_feed_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, hd);
}
@@ -30006,14 +35030,14 @@ bool HP_homun_feed(struct map_session_data *sd, struct homun_data *hd) {
int HP_homun_hunger_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_homun_hunger_timer_pre ) {
+ if (HPMHooks.count.HP_homun_hunger_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_hunger_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_hunger_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_hunger_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -30021,9 +35045,9 @@ int HP_homun_hunger_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.homun.hunger_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_homun_hunger_timer_post ) {
+ if (HPMHooks.count.HP_homun_hunger_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_hunger_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_hunger_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_hunger_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -30032,14 +35056,14 @@ int HP_homun_hunger_timer(int tid, int64 tick, int id, intptr_t data) {
}
void HP_homun_hunger_timer_delete(struct homun_data *hd) {
int hIndex = 0;
- if( HPMHooks.count.HP_homun_hunger_timer_delete_pre ) {
+ if (HPMHooks.count.HP_homun_hunger_timer_delete_pre > 0) {
void (*preHookFunc) (struct homun_data **hd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_hunger_timer_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_hunger_timer_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_hunger_timer_delete_pre[hIndex].func;
preHookFunc(&hd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -30047,9 +35071,9 @@ void HP_homun_hunger_timer_delete(struct homun_data *hd) {
{
HPMHooks.source.homun.hunger_timer_delete(hd);
}
- if( HPMHooks.count.HP_homun_hunger_timer_delete_post ) {
+ if (HPMHooks.count.HP_homun_hunger_timer_delete_post > 0) {
void (*postHookFunc) (struct homun_data *hd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_hunger_timer_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_hunger_timer_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_hunger_timer_delete_post[hIndex].func;
postHookFunc(hd);
}
@@ -30059,14 +35083,14 @@ void HP_homun_hunger_timer_delete(struct homun_data *hd) {
int HP_homun_change_name(struct map_session_data *sd, const char *name) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_homun_change_name_pre ) {
+ if (HPMHooks.count.HP_homun_change_name_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_change_name_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_change_name_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_change_name_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -30074,9 +35098,9 @@ int HP_homun_change_name(struct map_session_data *sd, const char *name) {
{
retVal___ = HPMHooks.source.homun.change_name(sd, name);
}
- if( HPMHooks.count.HP_homun_change_name_post ) {
+ if (HPMHooks.count.HP_homun_change_name_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_change_name_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_change_name_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_change_name_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, name);
}
@@ -30086,14 +35110,14 @@ int HP_homun_change_name(struct map_session_data *sd, const char *name) {
bool HP_homun_change_name_ack(struct map_session_data *sd, const char *name, int flag) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_homun_change_name_ack_pre ) {
+ if (HPMHooks.count.HP_homun_change_name_ack_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, const char **name, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_change_name_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_change_name_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_change_name_ack_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &name, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -30101,9 +35125,9 @@ bool HP_homun_change_name_ack(struct map_session_data *sd, const char *name, int
{
retVal___ = HPMHooks.source.homun.change_name_ack(sd, name, flag);
}
- if( HPMHooks.count.HP_homun_change_name_ack_post ) {
+ if (HPMHooks.count.HP_homun_change_name_ack_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, const char *name, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_change_name_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_change_name_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_change_name_ack_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, name, flag);
}
@@ -30113,14 +35137,14 @@ bool HP_homun_change_name_ack(struct map_session_data *sd, const char *name, int
int HP_homun_db_search(int key, int type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_homun_db_search_pre ) {
+ if (HPMHooks.count.HP_homun_db_search_pre > 0) {
int (*preHookFunc) (int *key, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_db_search_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_db_search_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_db_search_pre[hIndex].func;
retVal___ = preHookFunc(&key, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -30128,9 +35152,9 @@ int HP_homun_db_search(int key, int type) {
{
retVal___ = HPMHooks.source.homun.db_search(key, type);
}
- if( HPMHooks.count.HP_homun_db_search_post ) {
+ if (HPMHooks.count.HP_homun_db_search_post > 0) {
int (*postHookFunc) (int retVal___, int key, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_db_search_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_db_search_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_db_search_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, type);
}
@@ -30140,14 +35164,14 @@ int HP_homun_db_search(int key, int type) {
bool HP_homun_create(struct map_session_data *sd, const struct s_homunculus *hom) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_homun_create_pre ) {
+ if (HPMHooks.count.HP_homun_create_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, const struct s_homunculus **hom);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_create_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &hom);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -30155,9 +35179,9 @@ bool HP_homun_create(struct map_session_data *sd, const struct s_homunculus *hom
{
retVal___ = HPMHooks.source.homun.create(sd, hom);
}
- if( HPMHooks.count.HP_homun_create_post ) {
+ if (HPMHooks.count.HP_homun_create_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, const struct s_homunculus *hom);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_create_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, hom);
}
@@ -30166,14 +35190,14 @@ bool HP_homun_create(struct map_session_data *sd, const struct s_homunculus *hom
}
void HP_homun_init_timers(struct homun_data *hd) {
int hIndex = 0;
- if( HPMHooks.count.HP_homun_init_timers_pre ) {
+ if (HPMHooks.count.HP_homun_init_timers_pre > 0) {
void (*preHookFunc) (struct homun_data **hd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_init_timers_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_init_timers_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_init_timers_pre[hIndex].func;
preHookFunc(&hd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -30181,9 +35205,9 @@ void HP_homun_init_timers(struct homun_data *hd) {
{
HPMHooks.source.homun.init_timers(hd);
}
- if( HPMHooks.count.HP_homun_init_timers_post ) {
+ if (HPMHooks.count.HP_homun_init_timers_post > 0) {
void (*postHookFunc) (struct homun_data *hd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_init_timers_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_init_timers_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_init_timers_post[hIndex].func;
postHookFunc(hd);
}
@@ -30193,14 +35217,14 @@ void HP_homun_init_timers(struct homun_data *hd) {
bool HP_homun_call(struct map_session_data *sd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_homun_call_pre ) {
+ if (HPMHooks.count.HP_homun_call_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_call_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_call_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_call_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -30208,9 +35232,9 @@ bool HP_homun_call(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.homun.call(sd);
}
- if( HPMHooks.count.HP_homun_call_post ) {
+ if (HPMHooks.count.HP_homun_call_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_call_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_call_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_call_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -30220,14 +35244,14 @@ bool HP_homun_call(struct map_session_data *sd) {
bool HP_homun_recv_data(int account_id, const struct s_homunculus *sh, int flag) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_homun_recv_data_pre ) {
+ if (HPMHooks.count.HP_homun_recv_data_pre > 0) {
bool (*preHookFunc) (int *account_id, const struct s_homunculus **sh, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_recv_data_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_recv_data_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_recv_data_pre[hIndex].func;
retVal___ = preHookFunc(&account_id, &sh, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -30235,9 +35259,9 @@ bool HP_homun_recv_data(int account_id, const struct s_homunculus *sh, int flag)
{
retVal___ = HPMHooks.source.homun.recv_data(account_id, sh, flag);
}
- if( HPMHooks.count.HP_homun_recv_data_post ) {
+ if (HPMHooks.count.HP_homun_recv_data_post > 0) {
bool (*postHookFunc) (bool retVal___, int account_id, const struct s_homunculus *sh, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_recv_data_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_recv_data_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_recv_data_post[hIndex].func;
retVal___ = postHookFunc(retVal___, account_id, sh, flag);
}
@@ -30247,14 +35271,14 @@ bool HP_homun_recv_data(int account_id, const struct s_homunculus *sh, int flag)
bool HP_homun_creation_request(struct map_session_data *sd, int class_) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_homun_creation_request_pre ) {
+ if (HPMHooks.count.HP_homun_creation_request_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, int *class_);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_creation_request_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_creation_request_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_creation_request_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &class_);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -30262,9 +35286,9 @@ bool HP_homun_creation_request(struct map_session_data *sd, int class_) {
{
retVal___ = HPMHooks.source.homun.creation_request(sd, class_);
}
- if( HPMHooks.count.HP_homun_creation_request_post ) {
+ if (HPMHooks.count.HP_homun_creation_request_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, int class_);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_creation_request_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_creation_request_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_creation_request_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, class_);
}
@@ -30274,14 +35298,14 @@ bool HP_homun_creation_request(struct map_session_data *sd, int class_) {
bool HP_homun_ressurect(struct map_session_data *sd, unsigned char per, short x, short y) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_homun_ressurect_pre ) {
+ if (HPMHooks.count.HP_homun_ressurect_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, unsigned char *per, short *x, short *y);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_ressurect_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_ressurect_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_ressurect_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &per, &x, &y);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -30289,9 +35313,9 @@ bool HP_homun_ressurect(struct map_session_data *sd, unsigned char per, short x,
{
retVal___ = HPMHooks.source.homun.ressurect(sd, per, x, y);
}
- if( HPMHooks.count.HP_homun_ressurect_post ) {
+ if (HPMHooks.count.HP_homun_ressurect_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, unsigned char per, short x, short y);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_ressurect_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_ressurect_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_ressurect_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, per, x, y);
}
@@ -30300,14 +35324,14 @@ bool HP_homun_ressurect(struct map_session_data *sd, unsigned char per, short x,
}
void HP_homun_revive(struct homun_data *hd, unsigned int hp, unsigned int sp) {
int hIndex = 0;
- if( HPMHooks.count.HP_homun_revive_pre ) {
+ if (HPMHooks.count.HP_homun_revive_pre > 0) {
void (*preHookFunc) (struct homun_data **hd, unsigned int *hp, unsigned int *sp);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_revive_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_revive_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_revive_pre[hIndex].func;
preHookFunc(&hd, &hp, &sp);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -30315,9 +35339,9 @@ void HP_homun_revive(struct homun_data *hd, unsigned int hp, unsigned int sp) {
{
HPMHooks.source.homun.revive(hd, hp, sp);
}
- if( HPMHooks.count.HP_homun_revive_post ) {
+ if (HPMHooks.count.HP_homun_revive_post > 0) {
void (*postHookFunc) (struct homun_data *hd, unsigned int hp, unsigned int sp);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_revive_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_revive_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_revive_post[hIndex].func;
postHookFunc(hd, hp, sp);
}
@@ -30326,14 +35350,14 @@ void HP_homun_revive(struct homun_data *hd, unsigned int hp, unsigned int sp) {
}
void HP_homun_stat_reset(struct homun_data *hd) {
int hIndex = 0;
- if( HPMHooks.count.HP_homun_stat_reset_pre ) {
+ if (HPMHooks.count.HP_homun_stat_reset_pre > 0) {
void (*preHookFunc) (struct homun_data **hd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_stat_reset_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_stat_reset_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_stat_reset_pre[hIndex].func;
preHookFunc(&hd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -30341,9 +35365,9 @@ void HP_homun_stat_reset(struct homun_data *hd) {
{
HPMHooks.source.homun.stat_reset(hd);
}
- if( HPMHooks.count.HP_homun_stat_reset_post ) {
+ if (HPMHooks.count.HP_homun_stat_reset_post > 0) {
void (*postHookFunc) (struct homun_data *hd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_stat_reset_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_stat_reset_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_stat_reset_post[hIndex].func;
postHookFunc(hd);
}
@@ -30353,14 +35377,14 @@ void HP_homun_stat_reset(struct homun_data *hd) {
bool HP_homun_shuffle(struct homun_data *hd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_homun_shuffle_pre ) {
+ if (HPMHooks.count.HP_homun_shuffle_pre > 0) {
bool (*preHookFunc) (struct homun_data **hd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_shuffle_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_shuffle_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_shuffle_pre[hIndex].func;
retVal___ = preHookFunc(&hd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -30368,9 +35392,9 @@ bool HP_homun_shuffle(struct homun_data *hd) {
{
retVal___ = HPMHooks.source.homun.shuffle(hd);
}
- if( HPMHooks.count.HP_homun_shuffle_post ) {
+ if (HPMHooks.count.HP_homun_shuffle_post > 0) {
bool (*postHookFunc) (bool retVal___, struct homun_data *hd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_shuffle_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_shuffle_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_shuffle_post[hIndex].func;
retVal___ = postHookFunc(retVal___, hd);
}
@@ -30380,14 +35404,14 @@ bool HP_homun_shuffle(struct homun_data *hd) {
bool HP_homun_read_db_sub(char *str[], int columns, int current) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_homun_read_db_sub_pre ) {
+ if (HPMHooks.count.HP_homun_read_db_sub_pre > 0) {
bool (*preHookFunc) (char **str[], int *columns, int *current);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_read_db_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_read_db_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_read_db_sub_pre[hIndex].func;
retVal___ = preHookFunc(&str, &columns, &current);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -30395,9 +35419,9 @@ bool HP_homun_read_db_sub(char *str[], int columns, int current) {
{
retVal___ = HPMHooks.source.homun.read_db_sub(str, columns, current);
}
- if( HPMHooks.count.HP_homun_read_db_sub_post ) {
+ if (HPMHooks.count.HP_homun_read_db_sub_post > 0) {
bool (*postHookFunc) (bool retVal___, char *str[], int columns, int current);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_read_db_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_read_db_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_read_db_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, str, columns, current);
}
@@ -30406,14 +35430,14 @@ bool HP_homun_read_db_sub(char *str[], int columns, int current) {
}
void HP_homun_read_db(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_homun_read_db_pre ) {
+ if (HPMHooks.count.HP_homun_read_db_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_read_db_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_read_db_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_read_db_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -30421,9 +35445,9 @@ void HP_homun_read_db(void) {
{
HPMHooks.source.homun.read_db();
}
- if( HPMHooks.count.HP_homun_read_db_post ) {
+ if (HPMHooks.count.HP_homun_read_db_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_read_db_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_read_db_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_read_db_post[hIndex].func;
postHookFunc();
}
@@ -30433,14 +35457,14 @@ void HP_homun_read_db(void) {
bool HP_homun_read_skill_db_sub(char *split[], int columns, int current) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_homun_read_skill_db_sub_pre ) {
+ if (HPMHooks.count.HP_homun_read_skill_db_sub_pre > 0) {
bool (*preHookFunc) (char **split[], int *columns, int *current);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_read_skill_db_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_read_skill_db_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_read_skill_db_sub_pre[hIndex].func;
retVal___ = preHookFunc(&split, &columns, &current);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -30448,9 +35472,9 @@ bool HP_homun_read_skill_db_sub(char *split[], int columns, int current) {
{
retVal___ = HPMHooks.source.homun.read_skill_db_sub(split, columns, current);
}
- if( HPMHooks.count.HP_homun_read_skill_db_sub_post ) {
+ if (HPMHooks.count.HP_homun_read_skill_db_sub_post > 0) {
bool (*postHookFunc) (bool retVal___, char *split[], int columns, int current);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_read_skill_db_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_read_skill_db_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_read_skill_db_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, split, columns, current);
}
@@ -30459,14 +35483,14 @@ bool HP_homun_read_skill_db_sub(char *split[], int columns, int current) {
}
void HP_homun_skill_db_read(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_homun_skill_db_read_pre ) {
+ if (HPMHooks.count.HP_homun_skill_db_read_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_skill_db_read_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_skill_db_read_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_skill_db_read_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -30474,9 +35498,9 @@ void HP_homun_skill_db_read(void) {
{
HPMHooks.source.homun.skill_db_read();
}
- if( HPMHooks.count.HP_homun_skill_db_read_post ) {
+ if (HPMHooks.count.HP_homun_skill_db_read_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_skill_db_read_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_skill_db_read_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_skill_db_read_post[hIndex].func;
postHookFunc();
}
@@ -30485,14 +35509,14 @@ void HP_homun_skill_db_read(void) {
}
void HP_homun_exp_db_read(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_homun_exp_db_read_pre ) {
+ if (HPMHooks.count.HP_homun_exp_db_read_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_exp_db_read_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_exp_db_read_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_exp_db_read_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -30500,9 +35524,9 @@ void HP_homun_exp_db_read(void) {
{
HPMHooks.source.homun.exp_db_read();
}
- if( HPMHooks.count.HP_homun_exp_db_read_post ) {
+ if (HPMHooks.count.HP_homun_exp_db_read_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_exp_db_read_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_exp_db_read_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_exp_db_read_post[hIndex].func;
postHookFunc();
}
@@ -30511,14 +35535,14 @@ void HP_homun_exp_db_read(void) {
}
void HP_homun_addspiritball(struct homun_data *hd, int max) {
int hIndex = 0;
- if( HPMHooks.count.HP_homun_addspiritball_pre ) {
+ if (HPMHooks.count.HP_homun_addspiritball_pre > 0) {
void (*preHookFunc) (struct homun_data **hd, int *max);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_addspiritball_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_addspiritball_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_addspiritball_pre[hIndex].func;
preHookFunc(&hd, &max);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -30526,9 +35550,9 @@ void HP_homun_addspiritball(struct homun_data *hd, int max) {
{
HPMHooks.source.homun.addspiritball(hd, max);
}
- if( HPMHooks.count.HP_homun_addspiritball_post ) {
+ if (HPMHooks.count.HP_homun_addspiritball_post > 0) {
void (*postHookFunc) (struct homun_data *hd, int max);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_addspiritball_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_addspiritball_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_addspiritball_post[hIndex].func;
postHookFunc(hd, max);
}
@@ -30537,14 +35561,14 @@ void HP_homun_addspiritball(struct homun_data *hd, int max) {
}
void HP_homun_delspiritball(struct homun_data *hd, int count, int type) {
int hIndex = 0;
- if( HPMHooks.count.HP_homun_delspiritball_pre ) {
+ if (HPMHooks.count.HP_homun_delspiritball_pre > 0) {
void (*preHookFunc) (struct homun_data **hd, int *count, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_delspiritball_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_delspiritball_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_delspiritball_pre[hIndex].func;
preHookFunc(&hd, &count, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -30552,9 +35576,9 @@ void HP_homun_delspiritball(struct homun_data *hd, int count, int type) {
{
HPMHooks.source.homun.delspiritball(hd, count, type);
}
- if( HPMHooks.count.HP_homun_delspiritball_post ) {
+ if (HPMHooks.count.HP_homun_delspiritball_post > 0) {
void (*postHookFunc) (struct homun_data *hd, int count, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_delspiritball_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_delspiritball_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_delspiritball_post[hIndex].func;
postHookFunc(hd, count, type);
}
@@ -30564,14 +35588,14 @@ void HP_homun_delspiritball(struct homun_data *hd, int count, int type) {
int8 HP_homun_get_intimacy_grade(struct homun_data *hd) {
int hIndex = 0;
int8 retVal___ = 0;
- if( HPMHooks.count.HP_homun_get_intimacy_grade_pre ) {
+ if (HPMHooks.count.HP_homun_get_intimacy_grade_pre > 0) {
int8 (*preHookFunc) (struct homun_data **hd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_get_intimacy_grade_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_get_intimacy_grade_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_get_intimacy_grade_pre[hIndex].func;
retVal___ = preHookFunc(&hd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -30579,9 +35603,9 @@ int8 HP_homun_get_intimacy_grade(struct homun_data *hd) {
{
retVal___ = HPMHooks.source.homun.get_intimacy_grade(hd);
}
- if( HPMHooks.count.HP_homun_get_intimacy_grade_post ) {
+ if (HPMHooks.count.HP_homun_get_intimacy_grade_post > 0) {
int8 (*postHookFunc) (int8 retVal___, struct homun_data *hd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_homun_get_intimacy_grade_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_get_intimacy_grade_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_get_intimacy_grade_post[hIndex].func;
retVal___ = postHookFunc(retVal___, hd);
}
@@ -30591,14 +35615,14 @@ int8 HP_homun_get_intimacy_grade(struct homun_data *hd) {
/* instance_interface */
void HP_instance_init(bool minimal) {
int hIndex = 0;
- if( HPMHooks.count.HP_instance_init_pre ) {
+ if (HPMHooks.count.HP_instance_init_pre > 0) {
void (*preHookFunc) (bool *minimal);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_instance_init_pre[hIndex].func;
preHookFunc(&minimal);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -30606,9 +35630,9 @@ void HP_instance_init(bool minimal) {
{
HPMHooks.source.instance.init(minimal);
}
- if( HPMHooks.count.HP_instance_init_post ) {
+ if (HPMHooks.count.HP_instance_init_post > 0) {
void (*postHookFunc) (bool minimal);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_instance_init_post[hIndex].func;
postHookFunc(minimal);
}
@@ -30617,14 +35641,14 @@ void HP_instance_init(bool minimal) {
}
void HP_instance_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_instance_final_pre ) {
+ if (HPMHooks.count.HP_instance_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_instance_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -30632,9 +35656,9 @@ void HP_instance_final(void) {
{
HPMHooks.source.instance.final();
}
- if( HPMHooks.count.HP_instance_final_post ) {
+ if (HPMHooks.count.HP_instance_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_instance_final_post[hIndex].func;
postHookFunc();
}
@@ -30643,14 +35667,14 @@ void HP_instance_final(void) {
}
void HP_instance_reload(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_instance_reload_pre ) {
+ if (HPMHooks.count.HP_instance_reload_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_reload_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_reload_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_instance_reload_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -30658,9 +35682,9 @@ void HP_instance_reload(void) {
{
HPMHooks.source.instance.reload();
}
- if( HPMHooks.count.HP_instance_reload_post ) {
+ if (HPMHooks.count.HP_instance_reload_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_reload_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_reload_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_instance_reload_post[hIndex].func;
postHookFunc();
}
@@ -30670,14 +35694,14 @@ void HP_instance_reload(void) {
int HP_instance_create(int party_id, const char *name, enum instance_owner_type type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_instance_create_pre ) {
+ if (HPMHooks.count.HP_instance_create_pre > 0) {
int (*preHookFunc) (int *party_id, const char **name, enum instance_owner_type *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_instance_create_pre[hIndex].func;
retVal___ = preHookFunc(&party_id, &name, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -30685,9 +35709,9 @@ int HP_instance_create(int party_id, const char *name, enum instance_owner_type
{
retVal___ = HPMHooks.source.instance.create(party_id, name, type);
}
- if( HPMHooks.count.HP_instance_create_post ) {
+ if (HPMHooks.count.HP_instance_create_post > 0) {
int (*postHookFunc) (int retVal___, int party_id, const char *name, enum instance_owner_type type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_instance_create_post[hIndex].func;
retVal___ = postHookFunc(retVal___, party_id, name, type);
}
@@ -30697,14 +35721,14 @@ int HP_instance_create(int party_id, const char *name, enum instance_owner_type
int HP_instance_add_map(const char *name, int instance_id, bool usebasename, const char *map_name) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_instance_add_map_pre ) {
+ if (HPMHooks.count.HP_instance_add_map_pre > 0) {
int (*preHookFunc) (const char **name, int *instance_id, bool *usebasename, const char **map_name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_add_map_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_add_map_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_instance_add_map_pre[hIndex].func;
retVal___ = preHookFunc(&name, &instance_id, &usebasename, &map_name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -30712,9 +35736,9 @@ int HP_instance_add_map(const char *name, int instance_id, bool usebasename, con
{
retVal___ = HPMHooks.source.instance.add_map(name, instance_id, usebasename, map_name);
}
- if( HPMHooks.count.HP_instance_add_map_post ) {
+ if (HPMHooks.count.HP_instance_add_map_post > 0) {
int (*postHookFunc) (int retVal___, const char *name, int instance_id, bool usebasename, const char *map_name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_add_map_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_add_map_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_instance_add_map_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name, instance_id, usebasename, map_name);
}
@@ -30723,14 +35747,14 @@ int HP_instance_add_map(const char *name, int instance_id, bool usebasename, con
}
void HP_instance_del_map(int16 m) {
int hIndex = 0;
- if( HPMHooks.count.HP_instance_del_map_pre ) {
+ if (HPMHooks.count.HP_instance_del_map_pre > 0) {
void (*preHookFunc) (int16 *m);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_del_map_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_del_map_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_instance_del_map_pre[hIndex].func;
preHookFunc(&m);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -30738,9 +35762,9 @@ void HP_instance_del_map(int16 m) {
{
HPMHooks.source.instance.del_map(m);
}
- if( HPMHooks.count.HP_instance_del_map_post ) {
+ if (HPMHooks.count.HP_instance_del_map_post > 0) {
void (*postHookFunc) (int16 m);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_del_map_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_del_map_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_instance_del_map_post[hIndex].func;
postHookFunc(m);
}
@@ -30750,14 +35774,14 @@ void HP_instance_del_map(int16 m) {
int HP_instance_map2imap(int16 m, int instance_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_instance_map2imap_pre ) {
+ if (HPMHooks.count.HP_instance_map2imap_pre > 0) {
int (*preHookFunc) (int16 *m, int *instance_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_map2imap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_map2imap_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_instance_map2imap_pre[hIndex].func;
retVal___ = preHookFunc(&m, &instance_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -30765,9 +35789,9 @@ int HP_instance_map2imap(int16 m, int instance_id) {
{
retVal___ = HPMHooks.source.instance.map2imap(m, instance_id);
}
- if( HPMHooks.count.HP_instance_map2imap_post ) {
+ if (HPMHooks.count.HP_instance_map2imap_post > 0) {
int (*postHookFunc) (int retVal___, int16 m, int instance_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_map2imap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_map2imap_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_instance_map2imap_post[hIndex].func;
retVal___ = postHookFunc(retVal___, m, instance_id);
}
@@ -30777,14 +35801,14 @@ int HP_instance_map2imap(int16 m, int instance_id) {
int HP_instance_mapid2imapid(int16 m, int instance_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_instance_mapid2imapid_pre ) {
+ if (HPMHooks.count.HP_instance_mapid2imapid_pre > 0) {
int (*preHookFunc) (int16 *m, int *instance_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_mapid2imapid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_mapid2imapid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_instance_mapid2imapid_pre[hIndex].func;
retVal___ = preHookFunc(&m, &instance_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -30792,9 +35816,9 @@ int HP_instance_mapid2imapid(int16 m, int instance_id) {
{
retVal___ = HPMHooks.source.instance.mapid2imapid(m, instance_id);
}
- if( HPMHooks.count.HP_instance_mapid2imapid_post ) {
+ if (HPMHooks.count.HP_instance_mapid2imapid_post > 0) {
int (*postHookFunc) (int retVal___, int16 m, int instance_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_mapid2imapid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_mapid2imapid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_instance_mapid2imapid_post[hIndex].func;
retVal___ = postHookFunc(retVal___, m, instance_id);
}
@@ -30804,14 +35828,14 @@ int HP_instance_mapid2imapid(int16 m, int instance_id) {
int HP_instance_mapname2imap(const char *map_name, int instance_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_instance_mapname2imap_pre ) {
+ if (HPMHooks.count.HP_instance_mapname2imap_pre > 0) {
int (*preHookFunc) (const char **map_name, int *instance_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_mapname2imap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_mapname2imap_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_instance_mapname2imap_pre[hIndex].func;
retVal___ = preHookFunc(&map_name, &instance_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -30819,9 +35843,9 @@ int HP_instance_mapname2imap(const char *map_name, int instance_id) {
{
retVal___ = HPMHooks.source.instance.mapname2imap(map_name, instance_id);
}
- if( HPMHooks.count.HP_instance_mapname2imap_post ) {
+ if (HPMHooks.count.HP_instance_mapname2imap_post > 0) {
int (*postHookFunc) (int retVal___, const char *map_name, int instance_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_mapname2imap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_mapname2imap_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_instance_mapname2imap_post[hIndex].func;
retVal___ = postHookFunc(retVal___, map_name, instance_id);
}
@@ -30831,16 +35855,16 @@ int HP_instance_mapname2imap(const char *map_name, int instance_id) {
int HP_instance_map_npcsub(struct block_list *bl, va_list args) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_instance_map_npcsub_pre ) {
+ if (HPMHooks.count.HP_instance_map_npcsub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_map_npcsub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_map_npcsub_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_instance_map_npcsub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -30850,9 +35874,9 @@ int HP_instance_map_npcsub(struct block_list *bl, va_list args) {
retVal___ = HPMHooks.source.instance.map_npcsub(bl, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_instance_map_npcsub_post ) {
+ if (HPMHooks.count.HP_instance_map_npcsub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_map_npcsub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_map_npcsub_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_instance_map_npcsub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, args___copy);
@@ -30864,16 +35888,16 @@ int HP_instance_map_npcsub(struct block_list *bl, va_list args) {
int HP_instance_init_npc(struct block_list *bl, va_list args) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_instance_init_npc_pre ) {
+ if (HPMHooks.count.HP_instance_init_npc_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_init_npc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_init_npc_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_instance_init_npc_pre[hIndex].func;
retVal___ = preHookFunc(&bl, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -30883,9 +35907,9 @@ int HP_instance_init_npc(struct block_list *bl, va_list args) {
retVal___ = HPMHooks.source.instance.init_npc(bl, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_instance_init_npc_post ) {
+ if (HPMHooks.count.HP_instance_init_npc_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_init_npc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_init_npc_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_instance_init_npc_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, args___copy);
@@ -30896,14 +35920,14 @@ int HP_instance_init_npc(struct block_list *bl, va_list args) {
}
void HP_instance_destroy(int instance_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_instance_destroy_pre ) {
+ if (HPMHooks.count.HP_instance_destroy_pre > 0) {
void (*preHookFunc) (int *instance_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_destroy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_destroy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_instance_destroy_pre[hIndex].func;
preHookFunc(&instance_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -30911,9 +35935,9 @@ void HP_instance_destroy(int instance_id) {
{
HPMHooks.source.instance.destroy(instance_id);
}
- if( HPMHooks.count.HP_instance_destroy_post ) {
+ if (HPMHooks.count.HP_instance_destroy_post > 0) {
void (*postHookFunc) (int instance_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_destroy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_destroy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_instance_destroy_post[hIndex].func;
postHookFunc(instance_id);
}
@@ -30922,14 +35946,14 @@ void HP_instance_destroy(int instance_id) {
}
void HP_instance_start(int instance_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_instance_start_pre ) {
+ if (HPMHooks.count.HP_instance_start_pre > 0) {
void (*preHookFunc) (int *instance_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_start_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_start_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_instance_start_pre[hIndex].func;
preHookFunc(&instance_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -30937,9 +35961,9 @@ void HP_instance_start(int instance_id) {
{
HPMHooks.source.instance.start(instance_id);
}
- if( HPMHooks.count.HP_instance_start_post ) {
+ if (HPMHooks.count.HP_instance_start_post > 0) {
void (*postHookFunc) (int instance_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_start_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_start_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_instance_start_post[hIndex].func;
postHookFunc(instance_id);
}
@@ -30948,14 +35972,14 @@ void HP_instance_start(int instance_id) {
}
void HP_instance_check_idle(int instance_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_instance_check_idle_pre ) {
+ if (HPMHooks.count.HP_instance_check_idle_pre > 0) {
void (*preHookFunc) (int *instance_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_check_idle_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_check_idle_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_instance_check_idle_pre[hIndex].func;
preHookFunc(&instance_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -30963,9 +35987,9 @@ void HP_instance_check_idle(int instance_id) {
{
HPMHooks.source.instance.check_idle(instance_id);
}
- if( HPMHooks.count.HP_instance_check_idle_post ) {
+ if (HPMHooks.count.HP_instance_check_idle_post > 0) {
void (*postHookFunc) (int instance_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_check_idle_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_check_idle_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_instance_check_idle_post[hIndex].func;
postHookFunc(instance_id);
}
@@ -30974,14 +35998,14 @@ void HP_instance_check_idle(int instance_id) {
}
void HP_instance_check_kick(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_instance_check_kick_pre ) {
+ if (HPMHooks.count.HP_instance_check_kick_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_check_kick_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_check_kick_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_instance_check_kick_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -30989,9 +36013,9 @@ void HP_instance_check_kick(struct map_session_data *sd) {
{
HPMHooks.source.instance.check_kick(sd);
}
- if( HPMHooks.count.HP_instance_check_kick_post ) {
+ if (HPMHooks.count.HP_instance_check_kick_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_check_kick_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_check_kick_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_instance_check_kick_post[hIndex].func;
postHookFunc(sd);
}
@@ -31000,14 +36024,14 @@ void HP_instance_check_kick(struct map_session_data *sd) {
}
void HP_instance_set_timeout(int instance_id, unsigned int progress_timeout, unsigned int idle_timeout) {
int hIndex = 0;
- if( HPMHooks.count.HP_instance_set_timeout_pre ) {
+ if (HPMHooks.count.HP_instance_set_timeout_pre > 0) {
void (*preHookFunc) (int *instance_id, unsigned int *progress_timeout, unsigned int *idle_timeout);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_set_timeout_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_set_timeout_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_instance_set_timeout_pre[hIndex].func;
preHookFunc(&instance_id, &progress_timeout, &idle_timeout);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -31015,9 +36039,9 @@ void HP_instance_set_timeout(int instance_id, unsigned int progress_timeout, uns
{
HPMHooks.source.instance.set_timeout(instance_id, progress_timeout, idle_timeout);
}
- if( HPMHooks.count.HP_instance_set_timeout_post ) {
+ if (HPMHooks.count.HP_instance_set_timeout_post > 0) {
void (*postHookFunc) (int instance_id, unsigned int progress_timeout, unsigned int idle_timeout);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_set_timeout_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_set_timeout_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_instance_set_timeout_post[hIndex].func;
postHookFunc(instance_id, progress_timeout, idle_timeout);
}
@@ -31027,14 +36051,14 @@ void HP_instance_set_timeout(int instance_id, unsigned int progress_timeout, uns
bool HP_instance_valid(int instance_id) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_instance_valid_pre ) {
+ if (HPMHooks.count.HP_instance_valid_pre > 0) {
bool (*preHookFunc) (int *instance_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_valid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_valid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_instance_valid_pre[hIndex].func;
retVal___ = preHookFunc(&instance_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31042,9 +36066,9 @@ bool HP_instance_valid(int instance_id) {
{
retVal___ = HPMHooks.source.instance.valid(instance_id);
}
- if( HPMHooks.count.HP_instance_valid_post ) {
+ if (HPMHooks.count.HP_instance_valid_post > 0) {
bool (*postHookFunc) (bool retVal___, int instance_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_valid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_valid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_instance_valid_post[hIndex].func;
retVal___ = postHookFunc(retVal___, instance_id);
}
@@ -31054,14 +36078,14 @@ bool HP_instance_valid(int instance_id) {
int HP_instance_destroy_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_instance_destroy_timer_pre ) {
+ if (HPMHooks.count.HP_instance_destroy_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_destroy_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_destroy_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_instance_destroy_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31069,27 +36093,53 @@ int HP_instance_destroy_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.instance.destroy_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_instance_destroy_timer_post ) {
+ if (HPMHooks.count.HP_instance_destroy_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_instance_destroy_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_destroy_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_instance_destroy_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
}
return retVal___;
}
+void HP_instance_force_destroy(struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_instance_force_destroy_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_force_destroy_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_instance_force_destroy_pre[hIndex].func;
+ preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.instance.force_destroy(sd);
+ }
+ if (HPMHooks.count.HP_instance_force_destroy_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_instance_force_destroy_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_instance_force_destroy_post[hIndex].func;
+ postHookFunc(sd);
+ }
+ }
+ return;
+}
/* intif_interface */
int HP_intif_parse(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_parse_pre ) {
+ if (HPMHooks.count.HP_intif_parse_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_parse_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_parse_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_parse_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31097,26 +36147,26 @@ int HP_intif_parse(int fd) {
{
retVal___ = HPMHooks.source.intif.parse(fd);
}
- if( HPMHooks.count.HP_intif_parse_post ) {
+ if (HPMHooks.count.HP_intif_parse_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_parse_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_parse_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_parse_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
}
return retVal___;
}
-int HP_intif_create_pet(int account_id, int char_id, short pet_type, short pet_lv, short pet_egg_id, short pet_equip, short intimate, short hungry, char rename_flag, char incubate, char *pet_name) {
+int HP_intif_create_pet(int account_id, int char_id, short pet_type, short pet_lv, int pet_egg_id, int pet_equip, short intimate, short hungry, char rename_flag, char incubate, char *pet_name) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_create_pet_pre ) {
- int (*preHookFunc) (int *account_id, int *char_id, short *pet_type, short *pet_lv, short *pet_egg_id, short *pet_equip, short *intimate, short *hungry, char *rename_flag, char *incubate, char **pet_name);
+ if (HPMHooks.count.HP_intif_create_pet_pre > 0) {
+ int (*preHookFunc) (int *account_id, int *char_id, short *pet_type, short *pet_lv, int *pet_egg_id, int *pet_equip, short *intimate, short *hungry, char *rename_flag, char *incubate, char **pet_name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_create_pet_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_create_pet_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_create_pet_pre[hIndex].func;
retVal___ = preHookFunc(&account_id, &char_id, &pet_type, &pet_lv, &pet_egg_id, &pet_equip, &intimate, &hungry, &rename_flag, &incubate, &pet_name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31124,9 +36174,9 @@ int HP_intif_create_pet(int account_id, int char_id, short pet_type, short pet_l
{
retVal___ = HPMHooks.source.intif.create_pet(account_id, char_id, pet_type, pet_lv, pet_egg_id, pet_equip, intimate, hungry, rename_flag, incubate, pet_name);
}
- if( HPMHooks.count.HP_intif_create_pet_post ) {
- int (*postHookFunc) (int retVal___, int account_id, int char_id, short pet_type, short pet_lv, short pet_egg_id, short pet_equip, short intimate, short hungry, char rename_flag, char incubate, char *pet_name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_create_pet_post; hIndex++ ) {
+ if (HPMHooks.count.HP_intif_create_pet_post > 0) {
+ int (*postHookFunc) (int retVal___, int account_id, int char_id, short pet_type, short pet_lv, int pet_egg_id, int pet_equip, short intimate, short hungry, char rename_flag, char incubate, char *pet_name);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_create_pet_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_create_pet_post[hIndex].func;
retVal___ = postHookFunc(retVal___, account_id, char_id, pet_type, pet_lv, pet_egg_id, pet_equip, intimate, hungry, rename_flag, incubate, pet_name);
}
@@ -31136,14 +36186,14 @@ int HP_intif_create_pet(int account_id, int char_id, short pet_type, short pet_l
int HP_intif_broadcast(const char *mes, int len, int type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_broadcast_pre ) {
+ if (HPMHooks.count.HP_intif_broadcast_pre > 0) {
int (*preHookFunc) (const char **mes, int *len, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_broadcast_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_broadcast_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_broadcast_pre[hIndex].func;
retVal___ = preHookFunc(&mes, &len, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31151,9 +36201,9 @@ int HP_intif_broadcast(const char *mes, int len, int type) {
{
retVal___ = HPMHooks.source.intif.broadcast(mes, len, type);
}
- if( HPMHooks.count.HP_intif_broadcast_post ) {
+ if (HPMHooks.count.HP_intif_broadcast_post > 0) {
int (*postHookFunc) (int retVal___, const char *mes, int len, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_broadcast_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_broadcast_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_broadcast_post[hIndex].func;
retVal___ = postHookFunc(retVal___, mes, len, type);
}
@@ -31163,14 +36213,14 @@ int HP_intif_broadcast(const char *mes, int len, int type) {
int HP_intif_broadcast2(const char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_broadcast2_pre ) {
+ if (HPMHooks.count.HP_intif_broadcast2_pre > 0) {
int (*preHookFunc) (const char **mes, int *len, unsigned int *fontColor, short *fontType, short *fontSize, short *fontAlign, short *fontY);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_broadcast2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_broadcast2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_broadcast2_pre[hIndex].func;
retVal___ = preHookFunc(&mes, &len, &fontColor, &fontType, &fontSize, &fontAlign, &fontY);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31178,9 +36228,9 @@ int HP_intif_broadcast2(const char *mes, int len, unsigned int fontColor, short
{
retVal___ = HPMHooks.source.intif.broadcast2(mes, len, fontColor, fontType, fontSize, fontAlign, fontY);
}
- if( HPMHooks.count.HP_intif_broadcast2_post ) {
+ if (HPMHooks.count.HP_intif_broadcast2_post > 0) {
int (*postHookFunc) (int retVal___, const char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_broadcast2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_broadcast2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_broadcast2_post[hIndex].func;
retVal___ = postHookFunc(retVal___, mes, len, fontColor, fontType, fontSize, fontAlign, fontY);
}
@@ -31190,14 +36240,14 @@ int HP_intif_broadcast2(const char *mes, int len, unsigned int fontColor, short
int HP_intif_main_message(struct map_session_data *sd, const char *message) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_main_message_pre ) {
+ if (HPMHooks.count.HP_intif_main_message_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, const char **message);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_main_message_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_main_message_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_main_message_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &message);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31205,9 +36255,9 @@ int HP_intif_main_message(struct map_session_data *sd, const char *message) {
{
retVal___ = HPMHooks.source.intif.main_message(sd, message);
}
- if( HPMHooks.count.HP_intif_main_message_post ) {
+ if (HPMHooks.count.HP_intif_main_message_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, const char *message);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_main_message_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_main_message_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_main_message_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, message);
}
@@ -31217,14 +36267,14 @@ int HP_intif_main_message(struct map_session_data *sd, const char *message) {
int HP_intif_wis_message(struct map_session_data *sd, const char *nick, const char *mes, int mes_len) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_wis_message_pre ) {
+ if (HPMHooks.count.HP_intif_wis_message_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, const char **nick, const char **mes, int *mes_len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_wis_message_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_wis_message_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_wis_message_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &nick, &mes, &mes_len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31232,9 +36282,9 @@ int HP_intif_wis_message(struct map_session_data *sd, const char *nick, const ch
{
retVal___ = HPMHooks.source.intif.wis_message(sd, nick, mes, mes_len);
}
- if( HPMHooks.count.HP_intif_wis_message_post ) {
+ if (HPMHooks.count.HP_intif_wis_message_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, const char *nick, const char *mes, int mes_len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_wis_message_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_wis_message_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_wis_message_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, nick, mes, mes_len);
}
@@ -31244,14 +36294,14 @@ int HP_intif_wis_message(struct map_session_data *sd, const char *nick, const ch
int HP_intif_wis_message_to_gm(char *Wisp_name, int permission, char *mes) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_wis_message_to_gm_pre ) {
+ if (HPMHooks.count.HP_intif_wis_message_to_gm_pre > 0) {
int (*preHookFunc) (char **Wisp_name, int *permission, char **mes);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_wis_message_to_gm_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_wis_message_to_gm_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_wis_message_to_gm_pre[hIndex].func;
retVal___ = preHookFunc(&Wisp_name, &permission, &mes);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31259,9 +36309,9 @@ int HP_intif_wis_message_to_gm(char *Wisp_name, int permission, char *mes) {
{
retVal___ = HPMHooks.source.intif.wis_message_to_gm(Wisp_name, permission, mes);
}
- if( HPMHooks.count.HP_intif_wis_message_to_gm_post ) {
+ if (HPMHooks.count.HP_intif_wis_message_to_gm_post > 0) {
int (*postHookFunc) (int retVal___, char *Wisp_name, int permission, char *mes);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_wis_message_to_gm_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_wis_message_to_gm_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_wis_message_to_gm_post[hIndex].func;
retVal___ = postHookFunc(retVal___, Wisp_name, permission, mes);
}
@@ -31271,14 +36321,14 @@ int HP_intif_wis_message_to_gm(char *Wisp_name, int permission, char *mes) {
int HP_intif_saveregistry(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_saveregistry_pre ) {
+ if (HPMHooks.count.HP_intif_saveregistry_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_saveregistry_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_saveregistry_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_saveregistry_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31286,9 +36336,9 @@ int HP_intif_saveregistry(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.intif.saveregistry(sd);
}
- if( HPMHooks.count.HP_intif_saveregistry_post ) {
+ if (HPMHooks.count.HP_intif_saveregistry_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_saveregistry_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_saveregistry_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_saveregistry_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -31298,14 +36348,14 @@ int HP_intif_saveregistry(struct map_session_data *sd) {
int HP_intif_request_registry(struct map_session_data *sd, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_request_registry_pre ) {
+ if (HPMHooks.count.HP_intif_request_registry_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_request_registry_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_request_registry_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_request_registry_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31313,26 +36363,78 @@ int HP_intif_request_registry(struct map_session_data *sd, int flag) {
{
retVal___ = HPMHooks.source.intif.request_registry(sd, flag);
}
- if( HPMHooks.count.HP_intif_request_registry_post ) {
+ if (HPMHooks.count.HP_intif_request_registry_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_request_registry_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_request_registry_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_request_registry_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, flag);
}
}
return retVal___;
}
+void HP_intif_request_account_storage(const struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_intif_request_account_storage_pre > 0) {
+ void (*preHookFunc) (const struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_request_account_storage_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_intif_request_account_storage_pre[hIndex].func;
+ preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.intif.request_account_storage(sd);
+ }
+ if (HPMHooks.count.HP_intif_request_account_storage_post > 0) {
+ void (*postHookFunc) (const struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_request_account_storage_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_intif_request_account_storage_post[hIndex].func;
+ postHookFunc(sd);
+ }
+ }
+ return;
+}
+void HP_intif_send_account_storage(struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_intif_send_account_storage_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_send_account_storage_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_intif_send_account_storage_pre[hIndex].func;
+ preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.intif.send_account_storage(sd);
+ }
+ if (HPMHooks.count.HP_intif_send_account_storage_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_send_account_storage_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_intif_send_account_storage_post[hIndex].func;
+ postHookFunc(sd);
+ }
+ }
+ return;
+}
int HP_intif_request_guild_storage(int account_id, int guild_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_request_guild_storage_pre ) {
+ if (HPMHooks.count.HP_intif_request_guild_storage_pre > 0) {
int (*preHookFunc) (int *account_id, int *guild_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_request_guild_storage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_request_guild_storage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_request_guild_storage_pre[hIndex].func;
retVal___ = preHookFunc(&account_id, &guild_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31340,9 +36442,9 @@ int HP_intif_request_guild_storage(int account_id, int guild_id) {
{
retVal___ = HPMHooks.source.intif.request_guild_storage(account_id, guild_id);
}
- if( HPMHooks.count.HP_intif_request_guild_storage_post ) {
+ if (HPMHooks.count.HP_intif_request_guild_storage_post > 0) {
int (*postHookFunc) (int retVal___, int account_id, int guild_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_request_guild_storage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_request_guild_storage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_request_guild_storage_post[hIndex].func;
retVal___ = postHookFunc(retVal___, account_id, guild_id);
}
@@ -31352,14 +36454,14 @@ int HP_intif_request_guild_storage(int account_id, int guild_id) {
int HP_intif_send_guild_storage(int account_id, struct guild_storage *gstor) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_send_guild_storage_pre ) {
+ if (HPMHooks.count.HP_intif_send_guild_storage_pre > 0) {
int (*preHookFunc) (int *account_id, struct guild_storage **gstor);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_send_guild_storage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_send_guild_storage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_send_guild_storage_pre[hIndex].func;
retVal___ = preHookFunc(&account_id, &gstor);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31367,9 +36469,9 @@ int HP_intif_send_guild_storage(int account_id, struct guild_storage *gstor) {
{
retVal___ = HPMHooks.source.intif.send_guild_storage(account_id, gstor);
}
- if( HPMHooks.count.HP_intif_send_guild_storage_post ) {
+ if (HPMHooks.count.HP_intif_send_guild_storage_post > 0) {
int (*postHookFunc) (int retVal___, int account_id, struct guild_storage *gstor);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_send_guild_storage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_send_guild_storage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_send_guild_storage_post[hIndex].func;
retVal___ = postHookFunc(retVal___, account_id, gstor);
}
@@ -31379,14 +36481,14 @@ int HP_intif_send_guild_storage(int account_id, struct guild_storage *gstor) {
int HP_intif_create_party(struct party_member *member, const char *name, int item, int item2) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_create_party_pre ) {
+ if (HPMHooks.count.HP_intif_create_party_pre > 0) {
int (*preHookFunc) (struct party_member **member, const char **name, int *item, int *item2);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_create_party_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_create_party_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_create_party_pre[hIndex].func;
retVal___ = preHookFunc(&member, &name, &item, &item2);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31394,9 +36496,9 @@ int HP_intif_create_party(struct party_member *member, const char *name, int ite
{
retVal___ = HPMHooks.source.intif.create_party(member, name, item, item2);
}
- if( HPMHooks.count.HP_intif_create_party_post ) {
+ if (HPMHooks.count.HP_intif_create_party_post > 0) {
int (*postHookFunc) (int retVal___, struct party_member *member, const char *name, int item, int item2);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_create_party_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_create_party_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_create_party_post[hIndex].func;
retVal___ = postHookFunc(retVal___, member, name, item, item2);
}
@@ -31406,14 +36508,14 @@ int HP_intif_create_party(struct party_member *member, const char *name, int ite
int HP_intif_request_partyinfo(int party_id, int char_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_request_partyinfo_pre ) {
+ if (HPMHooks.count.HP_intif_request_partyinfo_pre > 0) {
int (*preHookFunc) (int *party_id, int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_request_partyinfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_request_partyinfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_request_partyinfo_pre[hIndex].func;
retVal___ = preHookFunc(&party_id, &char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31421,9 +36523,9 @@ int HP_intif_request_partyinfo(int party_id, int char_id) {
{
retVal___ = HPMHooks.source.intif.request_partyinfo(party_id, char_id);
}
- if( HPMHooks.count.HP_intif_request_partyinfo_post ) {
+ if (HPMHooks.count.HP_intif_request_partyinfo_post > 0) {
int (*postHookFunc) (int retVal___, int party_id, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_request_partyinfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_request_partyinfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_request_partyinfo_post[hIndex].func;
retVal___ = postHookFunc(retVal___, party_id, char_id);
}
@@ -31433,14 +36535,14 @@ int HP_intif_request_partyinfo(int party_id, int char_id) {
int HP_intif_party_addmember(int party_id, struct party_member *member) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_party_addmember_pre ) {
+ if (HPMHooks.count.HP_intif_party_addmember_pre > 0) {
int (*preHookFunc) (int *party_id, struct party_member **member);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_party_addmember_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_party_addmember_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_party_addmember_pre[hIndex].func;
retVal___ = preHookFunc(&party_id, &member);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31448,9 +36550,9 @@ int HP_intif_party_addmember(int party_id, struct party_member *member) {
{
retVal___ = HPMHooks.source.intif.party_addmember(party_id, member);
}
- if( HPMHooks.count.HP_intif_party_addmember_post ) {
+ if (HPMHooks.count.HP_intif_party_addmember_post > 0) {
int (*postHookFunc) (int retVal___, int party_id, struct party_member *member);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_party_addmember_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_party_addmember_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_party_addmember_post[hIndex].func;
retVal___ = postHookFunc(retVal___, party_id, member);
}
@@ -31460,14 +36562,14 @@ int HP_intif_party_addmember(int party_id, struct party_member *member) {
int HP_intif_party_changeoption(int party_id, int account_id, int exp, int item) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_party_changeoption_pre ) {
+ if (HPMHooks.count.HP_intif_party_changeoption_pre > 0) {
int (*preHookFunc) (int *party_id, int *account_id, int *exp, int *item);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_party_changeoption_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_party_changeoption_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_party_changeoption_pre[hIndex].func;
retVal___ = preHookFunc(&party_id, &account_id, &exp, &item);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31475,9 +36577,9 @@ int HP_intif_party_changeoption(int party_id, int account_id, int exp, int item)
{
retVal___ = HPMHooks.source.intif.party_changeoption(party_id, account_id, exp, item);
}
- if( HPMHooks.count.HP_intif_party_changeoption_post ) {
+ if (HPMHooks.count.HP_intif_party_changeoption_post > 0) {
int (*postHookFunc) (int retVal___, int party_id, int account_id, int exp, int item);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_party_changeoption_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_party_changeoption_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_party_changeoption_post[hIndex].func;
retVal___ = postHookFunc(retVal___, party_id, account_id, exp, item);
}
@@ -31487,14 +36589,14 @@ int HP_intif_party_changeoption(int party_id, int account_id, int exp, int item)
int HP_intif_party_leave(int party_id, int account_id, int char_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_party_leave_pre ) {
+ if (HPMHooks.count.HP_intif_party_leave_pre > 0) {
int (*preHookFunc) (int *party_id, int *account_id, int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_party_leave_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_party_leave_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_party_leave_pre[hIndex].func;
retVal___ = preHookFunc(&party_id, &account_id, &char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31502,9 +36604,9 @@ int HP_intif_party_leave(int party_id, int account_id, int char_id) {
{
retVal___ = HPMHooks.source.intif.party_leave(party_id, account_id, char_id);
}
- if( HPMHooks.count.HP_intif_party_leave_post ) {
+ if (HPMHooks.count.HP_intif_party_leave_post > 0) {
int (*postHookFunc) (int retVal___, int party_id, int account_id, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_party_leave_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_party_leave_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_party_leave_post[hIndex].func;
retVal___ = postHookFunc(retVal___, party_id, account_id, char_id);
}
@@ -31514,14 +36616,14 @@ int HP_intif_party_leave(int party_id, int account_id, int char_id) {
int HP_intif_party_changemap(struct map_session_data *sd, int online) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_party_changemap_pre ) {
+ if (HPMHooks.count.HP_intif_party_changemap_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *online);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_party_changemap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_party_changemap_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_party_changemap_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &online);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31529,9 +36631,9 @@ int HP_intif_party_changemap(struct map_session_data *sd, int online) {
{
retVal___ = HPMHooks.source.intif.party_changemap(sd, online);
}
- if( HPMHooks.count.HP_intif_party_changemap_post ) {
+ if (HPMHooks.count.HP_intif_party_changemap_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int online);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_party_changemap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_party_changemap_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_party_changemap_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, online);
}
@@ -31541,14 +36643,14 @@ int HP_intif_party_changemap(struct map_session_data *sd, int online) {
int HP_intif_break_party(int party_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_break_party_pre ) {
+ if (HPMHooks.count.HP_intif_break_party_pre > 0) {
int (*preHookFunc) (int *party_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_break_party_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_break_party_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_break_party_pre[hIndex].func;
retVal___ = preHookFunc(&party_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31556,9 +36658,9 @@ int HP_intif_break_party(int party_id) {
{
retVal___ = HPMHooks.source.intif.break_party(party_id);
}
- if( HPMHooks.count.HP_intif_break_party_post ) {
+ if (HPMHooks.count.HP_intif_break_party_post > 0) {
int (*postHookFunc) (int retVal___, int party_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_break_party_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_break_party_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_break_party_post[hIndex].func;
retVal___ = postHookFunc(retVal___, party_id);
}
@@ -31568,14 +36670,14 @@ int HP_intif_break_party(int party_id) {
int HP_intif_party_message(int party_id, int account_id, const char *mes, int len) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_party_message_pre ) {
+ if (HPMHooks.count.HP_intif_party_message_pre > 0) {
int (*preHookFunc) (int *party_id, int *account_id, const char **mes, int *len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_party_message_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_party_message_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_party_message_pre[hIndex].func;
retVal___ = preHookFunc(&party_id, &account_id, &mes, &len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31583,9 +36685,9 @@ int HP_intif_party_message(int party_id, int account_id, const char *mes, int le
{
retVal___ = HPMHooks.source.intif.party_message(party_id, account_id, mes, len);
}
- if( HPMHooks.count.HP_intif_party_message_post ) {
+ if (HPMHooks.count.HP_intif_party_message_post > 0) {
int (*postHookFunc) (int retVal___, int party_id, int account_id, const char *mes, int len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_party_message_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_party_message_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_party_message_post[hIndex].func;
retVal___ = postHookFunc(retVal___, party_id, account_id, mes, len);
}
@@ -31595,14 +36697,14 @@ int HP_intif_party_message(int party_id, int account_id, const char *mes, int le
int HP_intif_party_leaderchange(int party_id, int account_id, int char_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_party_leaderchange_pre ) {
+ if (HPMHooks.count.HP_intif_party_leaderchange_pre > 0) {
int (*preHookFunc) (int *party_id, int *account_id, int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_party_leaderchange_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_party_leaderchange_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_party_leaderchange_pre[hIndex].func;
retVal___ = preHookFunc(&party_id, &account_id, &char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31610,9 +36712,9 @@ int HP_intif_party_leaderchange(int party_id, int account_id, int char_id) {
{
retVal___ = HPMHooks.source.intif.party_leaderchange(party_id, account_id, char_id);
}
- if( HPMHooks.count.HP_intif_party_leaderchange_post ) {
+ if (HPMHooks.count.HP_intif_party_leaderchange_post > 0) {
int (*postHookFunc) (int retVal___, int party_id, int account_id, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_party_leaderchange_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_party_leaderchange_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_party_leaderchange_post[hIndex].func;
retVal___ = postHookFunc(retVal___, party_id, account_id, char_id);
}
@@ -31622,14 +36724,14 @@ int HP_intif_party_leaderchange(int party_id, int account_id, int char_id) {
int HP_intif_guild_create(const char *name, const struct guild_member *master) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_guild_create_pre ) {
+ if (HPMHooks.count.HP_intif_guild_create_pre > 0) {
int (*preHookFunc) (const char **name, const struct guild_member **master);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_guild_create_pre[hIndex].func;
retVal___ = preHookFunc(&name, &master);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31637,9 +36739,9 @@ int HP_intif_guild_create(const char *name, const struct guild_member *master) {
{
retVal___ = HPMHooks.source.intif.guild_create(name, master);
}
- if( HPMHooks.count.HP_intif_guild_create_post ) {
+ if (HPMHooks.count.HP_intif_guild_create_post > 0) {
int (*postHookFunc) (int retVal___, const char *name, const struct guild_member *master);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_guild_create_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name, master);
}
@@ -31649,14 +36751,14 @@ int HP_intif_guild_create(const char *name, const struct guild_member *master) {
int HP_intif_guild_request_info(int guild_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_guild_request_info_pre ) {
+ if (HPMHooks.count.HP_intif_guild_request_info_pre > 0) {
int (*preHookFunc) (int *guild_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_request_info_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_request_info_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_guild_request_info_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31664,9 +36766,9 @@ int HP_intif_guild_request_info(int guild_id) {
{
retVal___ = HPMHooks.source.intif.guild_request_info(guild_id);
}
- if( HPMHooks.count.HP_intif_guild_request_info_post ) {
+ if (HPMHooks.count.HP_intif_guild_request_info_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_request_info_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_request_info_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_guild_request_info_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id);
}
@@ -31676,14 +36778,14 @@ int HP_intif_guild_request_info(int guild_id) {
int HP_intif_guild_addmember(int guild_id, struct guild_member *m) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_guild_addmember_pre ) {
+ if (HPMHooks.count.HP_intif_guild_addmember_pre > 0) {
int (*preHookFunc) (int *guild_id, struct guild_member **m);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_addmember_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_addmember_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_guild_addmember_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &m);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31691,9 +36793,9 @@ int HP_intif_guild_addmember(int guild_id, struct guild_member *m) {
{
retVal___ = HPMHooks.source.intif.guild_addmember(guild_id, m);
}
- if( HPMHooks.count.HP_intif_guild_addmember_post ) {
+ if (HPMHooks.count.HP_intif_guild_addmember_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id, struct guild_member *m);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_addmember_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_addmember_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_guild_addmember_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, m);
}
@@ -31703,14 +36805,14 @@ int HP_intif_guild_addmember(int guild_id, struct guild_member *m) {
int HP_intif_guild_leave(int guild_id, int account_id, int char_id, int flag, const char *mes) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_guild_leave_pre ) {
+ if (HPMHooks.count.HP_intif_guild_leave_pre > 0) {
int (*preHookFunc) (int *guild_id, int *account_id, int *char_id, int *flag, const char **mes);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_leave_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_leave_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_guild_leave_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &account_id, &char_id, &flag, &mes);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31718,9 +36820,9 @@ int HP_intif_guild_leave(int guild_id, int account_id, int char_id, int flag, co
{
retVal___ = HPMHooks.source.intif.guild_leave(guild_id, account_id, char_id, flag, mes);
}
- if( HPMHooks.count.HP_intif_guild_leave_post ) {
+ if (HPMHooks.count.HP_intif_guild_leave_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id, int account_id, int char_id, int flag, const char *mes);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_leave_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_leave_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_guild_leave_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, account_id, char_id, flag, mes);
}
@@ -31730,14 +36832,14 @@ int HP_intif_guild_leave(int guild_id, int account_id, int char_id, int flag, co
int HP_intif_guild_memberinfoshort(int guild_id, int account_id, int char_id, int online, int lv, int16 class) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_guild_memberinfoshort_pre ) {
+ if (HPMHooks.count.HP_intif_guild_memberinfoshort_pre > 0) {
int (*preHookFunc) (int *guild_id, int *account_id, int *char_id, int *online, int *lv, int16 *class);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_memberinfoshort_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_memberinfoshort_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_guild_memberinfoshort_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &account_id, &char_id, &online, &lv, &class);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31745,9 +36847,9 @@ int HP_intif_guild_memberinfoshort(int guild_id, int account_id, int char_id, in
{
retVal___ = HPMHooks.source.intif.guild_memberinfoshort(guild_id, account_id, char_id, online, lv, class);
}
- if( HPMHooks.count.HP_intif_guild_memberinfoshort_post ) {
+ if (HPMHooks.count.HP_intif_guild_memberinfoshort_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id, int account_id, int char_id, int online, int lv, int16 class);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_memberinfoshort_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_memberinfoshort_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_guild_memberinfoshort_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, account_id, char_id, online, lv, class);
}
@@ -31757,14 +36859,14 @@ int HP_intif_guild_memberinfoshort(int guild_id, int account_id, int char_id, in
int HP_intif_guild_break(int guild_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_guild_break_pre ) {
+ if (HPMHooks.count.HP_intif_guild_break_pre > 0) {
int (*preHookFunc) (int *guild_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_break_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_break_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_guild_break_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31772,9 +36874,9 @@ int HP_intif_guild_break(int guild_id) {
{
retVal___ = HPMHooks.source.intif.guild_break(guild_id);
}
- if( HPMHooks.count.HP_intif_guild_break_post ) {
+ if (HPMHooks.count.HP_intif_guild_break_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_break_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_break_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_guild_break_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id);
}
@@ -31784,14 +36886,14 @@ int HP_intif_guild_break(int guild_id) {
int HP_intif_guild_message(int guild_id, int account_id, const char *mes, int len) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_guild_message_pre ) {
+ if (HPMHooks.count.HP_intif_guild_message_pre > 0) {
int (*preHookFunc) (int *guild_id, int *account_id, const char **mes, int *len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_message_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_message_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_guild_message_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &account_id, &mes, &len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31799,9 +36901,9 @@ int HP_intif_guild_message(int guild_id, int account_id, const char *mes, int le
{
retVal___ = HPMHooks.source.intif.guild_message(guild_id, account_id, mes, len);
}
- if( HPMHooks.count.HP_intif_guild_message_post ) {
+ if (HPMHooks.count.HP_intif_guild_message_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id, int account_id, const char *mes, int len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_message_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_message_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_guild_message_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, account_id, mes, len);
}
@@ -31811,14 +36913,14 @@ int HP_intif_guild_message(int guild_id, int account_id, const char *mes, int le
int HP_intif_guild_change_gm(int guild_id, const char *name, int len) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_guild_change_gm_pre ) {
+ if (HPMHooks.count.HP_intif_guild_change_gm_pre > 0) {
int (*preHookFunc) (int *guild_id, const char **name, int *len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_change_gm_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_change_gm_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_guild_change_gm_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &name, &len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31826,9 +36928,9 @@ int HP_intif_guild_change_gm(int guild_id, const char *name, int len) {
{
retVal___ = HPMHooks.source.intif.guild_change_gm(guild_id, name, len);
}
- if( HPMHooks.count.HP_intif_guild_change_gm_post ) {
+ if (HPMHooks.count.HP_intif_guild_change_gm_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id, const char *name, int len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_change_gm_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_change_gm_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_guild_change_gm_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, name, len);
}
@@ -31838,14 +36940,14 @@ int HP_intif_guild_change_gm(int guild_id, const char *name, int len) {
int HP_intif_guild_change_basicinfo(int guild_id, int type, const void *data, int len) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_guild_change_basicinfo_pre ) {
+ if (HPMHooks.count.HP_intif_guild_change_basicinfo_pre > 0) {
int (*preHookFunc) (int *guild_id, int *type, const void **data, int *len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_change_basicinfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_change_basicinfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_guild_change_basicinfo_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &type, &data, &len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31853,9 +36955,9 @@ int HP_intif_guild_change_basicinfo(int guild_id, int type, const void *data, in
{
retVal___ = HPMHooks.source.intif.guild_change_basicinfo(guild_id, type, data, len);
}
- if( HPMHooks.count.HP_intif_guild_change_basicinfo_post ) {
+ if (HPMHooks.count.HP_intif_guild_change_basicinfo_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id, int type, const void *data, int len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_change_basicinfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_change_basicinfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_guild_change_basicinfo_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, type, data, len);
}
@@ -31865,14 +36967,14 @@ int HP_intif_guild_change_basicinfo(int guild_id, int type, const void *data, in
int HP_intif_guild_change_memberinfo(int guild_id, int account_id, int char_id, int type, const void *data, int len) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_guild_change_memberinfo_pre ) {
+ if (HPMHooks.count.HP_intif_guild_change_memberinfo_pre > 0) {
int (*preHookFunc) (int *guild_id, int *account_id, int *char_id, int *type, const void **data, int *len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_change_memberinfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_change_memberinfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_guild_change_memberinfo_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &account_id, &char_id, &type, &data, &len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31880,9 +36982,9 @@ int HP_intif_guild_change_memberinfo(int guild_id, int account_id, int char_id,
{
retVal___ = HPMHooks.source.intif.guild_change_memberinfo(guild_id, account_id, char_id, type, data, len);
}
- if( HPMHooks.count.HP_intif_guild_change_memberinfo_post ) {
+ if (HPMHooks.count.HP_intif_guild_change_memberinfo_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id, int account_id, int char_id, int type, const void *data, int len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_change_memberinfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_change_memberinfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_guild_change_memberinfo_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, account_id, char_id, type, data, len);
}
@@ -31892,14 +36994,14 @@ int HP_intif_guild_change_memberinfo(int guild_id, int account_id, int char_id,
int HP_intif_guild_position(int guild_id, int idx, struct guild_position *p) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_guild_position_pre ) {
+ if (HPMHooks.count.HP_intif_guild_position_pre > 0) {
int (*preHookFunc) (int *guild_id, int *idx, struct guild_position **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_position_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_position_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_guild_position_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &idx, &p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31907,9 +37009,9 @@ int HP_intif_guild_position(int guild_id, int idx, struct guild_position *p) {
{
retVal___ = HPMHooks.source.intif.guild_position(guild_id, idx, p);
}
- if( HPMHooks.count.HP_intif_guild_position_post ) {
+ if (HPMHooks.count.HP_intif_guild_position_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id, int idx, struct guild_position *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_position_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_position_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_guild_position_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, idx, p);
}
@@ -31919,14 +37021,14 @@ int HP_intif_guild_position(int guild_id, int idx, struct guild_position *p) {
int HP_intif_guild_skillup(int guild_id, uint16 skill_id, int account_id, int max) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_guild_skillup_pre ) {
+ if (HPMHooks.count.HP_intif_guild_skillup_pre > 0) {
int (*preHookFunc) (int *guild_id, uint16 *skill_id, int *account_id, int *max);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_skillup_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_skillup_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_guild_skillup_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &skill_id, &account_id, &max);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31934,9 +37036,9 @@ int HP_intif_guild_skillup(int guild_id, uint16 skill_id, int account_id, int ma
{
retVal___ = HPMHooks.source.intif.guild_skillup(guild_id, skill_id, account_id, max);
}
- if( HPMHooks.count.HP_intif_guild_skillup_post ) {
+ if (HPMHooks.count.HP_intif_guild_skillup_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id, uint16 skill_id, int account_id, int max);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_skillup_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_skillup_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_guild_skillup_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, skill_id, account_id, max);
}
@@ -31946,14 +37048,14 @@ int HP_intif_guild_skillup(int guild_id, uint16 skill_id, int account_id, int ma
int HP_intif_guild_alliance(int guild_id1, int guild_id2, int account_id1, int account_id2, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_guild_alliance_pre ) {
+ if (HPMHooks.count.HP_intif_guild_alliance_pre > 0) {
int (*preHookFunc) (int *guild_id1, int *guild_id2, int *account_id1, int *account_id2, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_alliance_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_alliance_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_guild_alliance_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id1, &guild_id2, &account_id1, &account_id2, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31961,9 +37063,9 @@ int HP_intif_guild_alliance(int guild_id1, int guild_id2, int account_id1, int a
{
retVal___ = HPMHooks.source.intif.guild_alliance(guild_id1, guild_id2, account_id1, account_id2, flag);
}
- if( HPMHooks.count.HP_intif_guild_alliance_post ) {
+ if (HPMHooks.count.HP_intif_guild_alliance_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id1, int guild_id2, int account_id1, int account_id2, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_alliance_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_alliance_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_guild_alliance_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id1, guild_id2, account_id1, account_id2, flag);
}
@@ -31973,14 +37075,14 @@ int HP_intif_guild_alliance(int guild_id1, int guild_id2, int account_id1, int a
int HP_intif_guild_notice(int guild_id, const char *mes1, const char *mes2) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_guild_notice_pre ) {
+ if (HPMHooks.count.HP_intif_guild_notice_pre > 0) {
int (*preHookFunc) (int *guild_id, const char **mes1, const char **mes2);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_notice_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_notice_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_guild_notice_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &mes1, &mes2);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -31988,9 +37090,9 @@ int HP_intif_guild_notice(int guild_id, const char *mes1, const char *mes2) {
{
retVal___ = HPMHooks.source.intif.guild_notice(guild_id, mes1, mes2);
}
- if( HPMHooks.count.HP_intif_guild_notice_post ) {
+ if (HPMHooks.count.HP_intif_guild_notice_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id, const char *mes1, const char *mes2);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_notice_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_notice_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_guild_notice_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, mes1, mes2);
}
@@ -32000,14 +37102,14 @@ int HP_intif_guild_notice(int guild_id, const char *mes1, const char *mes2) {
int HP_intif_guild_emblem(int guild_id, int len, const char *data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_guild_emblem_pre ) {
+ if (HPMHooks.count.HP_intif_guild_emblem_pre > 0) {
int (*preHookFunc) (int *guild_id, int *len, const char **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_emblem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_emblem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_guild_emblem_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id, &len, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -32015,9 +37117,9 @@ int HP_intif_guild_emblem(int guild_id, int len, const char *data) {
{
retVal___ = HPMHooks.source.intif.guild_emblem(guild_id, len, data);
}
- if( HPMHooks.count.HP_intif_guild_emblem_post ) {
+ if (HPMHooks.count.HP_intif_guild_emblem_post > 0) {
int (*postHookFunc) (int retVal___, int guild_id, int len, const char *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_emblem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_emblem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_guild_emblem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, len, data);
}
@@ -32027,14 +37129,14 @@ int HP_intif_guild_emblem(int guild_id, int len, const char *data) {
int HP_intif_guild_castle_dataload(int num, int *castle_ids) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_guild_castle_dataload_pre ) {
+ if (HPMHooks.count.HP_intif_guild_castle_dataload_pre > 0) {
int (*preHookFunc) (int *num, int **castle_ids);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_castle_dataload_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_castle_dataload_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_guild_castle_dataload_pre[hIndex].func;
retVal___ = preHookFunc(&num, &castle_ids);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -32042,9 +37144,9 @@ int HP_intif_guild_castle_dataload(int num, int *castle_ids) {
{
retVal___ = HPMHooks.source.intif.guild_castle_dataload(num, castle_ids);
}
- if( HPMHooks.count.HP_intif_guild_castle_dataload_post ) {
+ if (HPMHooks.count.HP_intif_guild_castle_dataload_post > 0) {
int (*postHookFunc) (int retVal___, int num, int *castle_ids);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_castle_dataload_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_castle_dataload_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_guild_castle_dataload_post[hIndex].func;
retVal___ = postHookFunc(retVal___, num, castle_ids);
}
@@ -32054,14 +37156,14 @@ int HP_intif_guild_castle_dataload(int num, int *castle_ids) {
int HP_intif_guild_castle_datasave(int castle_id, int index, int value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_guild_castle_datasave_pre ) {
+ if (HPMHooks.count.HP_intif_guild_castle_datasave_pre > 0) {
int (*preHookFunc) (int *castle_id, int *index, int *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_castle_datasave_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_castle_datasave_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_guild_castle_datasave_pre[hIndex].func;
retVal___ = preHookFunc(&castle_id, &index, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -32069,9 +37171,9 @@ int HP_intif_guild_castle_datasave(int castle_id, int index, int value) {
{
retVal___ = HPMHooks.source.intif.guild_castle_datasave(castle_id, index, value);
}
- if( HPMHooks.count.HP_intif_guild_castle_datasave_post ) {
+ if (HPMHooks.count.HP_intif_guild_castle_datasave_post > 0) {
int (*postHookFunc) (int retVal___, int castle_id, int index, int value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_castle_datasave_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_castle_datasave_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_guild_castle_datasave_post[hIndex].func;
retVal___ = postHookFunc(retVal___, castle_id, index, value);
}
@@ -32080,14 +37182,14 @@ int HP_intif_guild_castle_datasave(int castle_id, int index, int value) {
}
void HP_intif_itembound_req(int char_id, int aid, int guild_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_itembound_req_pre ) {
+ if (HPMHooks.count.HP_intif_itembound_req_pre > 0) {
void (*preHookFunc) (int *char_id, int *aid, int *guild_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_itembound_req_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_itembound_req_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_itembound_req_pre[hIndex].func;
preHookFunc(&char_id, &aid, &guild_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -32095,9 +37197,9 @@ void HP_intif_itembound_req(int char_id, int aid, int guild_id) {
{
HPMHooks.source.intif.itembound_req(char_id, aid, guild_id);
}
- if( HPMHooks.count.HP_intif_itembound_req_post ) {
+ if (HPMHooks.count.HP_intif_itembound_req_post > 0) {
void (*postHookFunc) (int char_id, int aid, int guild_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_itembound_req_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_itembound_req_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_itembound_req_post[hIndex].func;
postHookFunc(char_id, aid, guild_id);
}
@@ -32107,14 +37209,14 @@ void HP_intif_itembound_req(int char_id, int aid, int guild_id) {
int HP_intif_request_petdata(int account_id, int char_id, int pet_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_request_petdata_pre ) {
+ if (HPMHooks.count.HP_intif_request_petdata_pre > 0) {
int (*preHookFunc) (int *account_id, int *char_id, int *pet_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_request_petdata_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_request_petdata_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_request_petdata_pre[hIndex].func;
retVal___ = preHookFunc(&account_id, &char_id, &pet_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -32122,9 +37224,9 @@ int HP_intif_request_petdata(int account_id, int char_id, int pet_id) {
{
retVal___ = HPMHooks.source.intif.request_petdata(account_id, char_id, pet_id);
}
- if( HPMHooks.count.HP_intif_request_petdata_post ) {
+ if (HPMHooks.count.HP_intif_request_petdata_post > 0) {
int (*postHookFunc) (int retVal___, int account_id, int char_id, int pet_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_request_petdata_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_request_petdata_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_request_petdata_post[hIndex].func;
retVal___ = postHookFunc(retVal___, account_id, char_id, pet_id);
}
@@ -32134,14 +37236,14 @@ int HP_intif_request_petdata(int account_id, int char_id, int pet_id) {
int HP_intif_save_petdata(int account_id, struct s_pet *p) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_save_petdata_pre ) {
+ if (HPMHooks.count.HP_intif_save_petdata_pre > 0) {
int (*preHookFunc) (int *account_id, struct s_pet **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_save_petdata_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_save_petdata_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_save_petdata_pre[hIndex].func;
retVal___ = preHookFunc(&account_id, &p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -32149,9 +37251,9 @@ int HP_intif_save_petdata(int account_id, struct s_pet *p) {
{
retVal___ = HPMHooks.source.intif.save_petdata(account_id, p);
}
- if( HPMHooks.count.HP_intif_save_petdata_post ) {
+ if (HPMHooks.count.HP_intif_save_petdata_post > 0) {
int (*postHookFunc) (int retVal___, int account_id, struct s_pet *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_save_petdata_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_save_petdata_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_save_petdata_post[hIndex].func;
retVal___ = postHookFunc(retVal___, account_id, p);
}
@@ -32161,14 +37263,14 @@ int HP_intif_save_petdata(int account_id, struct s_pet *p) {
int HP_intif_delete_petdata(int pet_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_delete_petdata_pre ) {
+ if (HPMHooks.count.HP_intif_delete_petdata_pre > 0) {
int (*preHookFunc) (int *pet_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_delete_petdata_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_delete_petdata_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_delete_petdata_pre[hIndex].func;
retVal___ = preHookFunc(&pet_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -32176,9 +37278,9 @@ int HP_intif_delete_petdata(int pet_id) {
{
retVal___ = HPMHooks.source.intif.delete_petdata(pet_id);
}
- if( HPMHooks.count.HP_intif_delete_petdata_post ) {
+ if (HPMHooks.count.HP_intif_delete_petdata_post > 0) {
int (*postHookFunc) (int retVal___, int pet_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_delete_petdata_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_delete_petdata_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_delete_petdata_post[hIndex].func;
retVal___ = postHookFunc(retVal___, pet_id);
}
@@ -32188,14 +37290,14 @@ int HP_intif_delete_petdata(int pet_id) {
int HP_intif_rename(struct map_session_data *sd, int type, const char *name) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_rename_pre ) {
+ if (HPMHooks.count.HP_intif_rename_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *type, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_rename_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_rename_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_rename_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &type, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -32203,9 +37305,9 @@ int HP_intif_rename(struct map_session_data *sd, int type, const char *name) {
{
retVal___ = HPMHooks.source.intif.rename(sd, type, name);
}
- if( HPMHooks.count.HP_intif_rename_post ) {
+ if (HPMHooks.count.HP_intif_rename_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int type, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_rename_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_rename_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_rename_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, type, name);
}
@@ -32215,14 +37317,14 @@ int HP_intif_rename(struct map_session_data *sd, int type, const char *name) {
int HP_intif_homunculus_create(int account_id, struct s_homunculus *sh) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_homunculus_create_pre ) {
+ if (HPMHooks.count.HP_intif_homunculus_create_pre > 0) {
int (*preHookFunc) (int *account_id, struct s_homunculus **sh);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_homunculus_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_homunculus_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_homunculus_create_pre[hIndex].func;
retVal___ = preHookFunc(&account_id, &sh);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -32230,9 +37332,9 @@ int HP_intif_homunculus_create(int account_id, struct s_homunculus *sh) {
{
retVal___ = HPMHooks.source.intif.homunculus_create(account_id, sh);
}
- if( HPMHooks.count.HP_intif_homunculus_create_post ) {
+ if (HPMHooks.count.HP_intif_homunculus_create_post > 0) {
int (*postHookFunc) (int retVal___, int account_id, struct s_homunculus *sh);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_homunculus_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_homunculus_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_homunculus_create_post[hIndex].func;
retVal___ = postHookFunc(retVal___, account_id, sh);
}
@@ -32242,14 +37344,14 @@ int HP_intif_homunculus_create(int account_id, struct s_homunculus *sh) {
bool HP_intif_homunculus_requestload(int account_id, int homun_id) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_intif_homunculus_requestload_pre ) {
+ if (HPMHooks.count.HP_intif_homunculus_requestload_pre > 0) {
bool (*preHookFunc) (int *account_id, int *homun_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_homunculus_requestload_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_homunculus_requestload_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_homunculus_requestload_pre[hIndex].func;
retVal___ = preHookFunc(&account_id, &homun_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -32257,9 +37359,9 @@ bool HP_intif_homunculus_requestload(int account_id, int homun_id) {
{
retVal___ = HPMHooks.source.intif.homunculus_requestload(account_id, homun_id);
}
- if( HPMHooks.count.HP_intif_homunculus_requestload_post ) {
+ if (HPMHooks.count.HP_intif_homunculus_requestload_post > 0) {
bool (*postHookFunc) (bool retVal___, int account_id, int homun_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_homunculus_requestload_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_homunculus_requestload_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_homunculus_requestload_post[hIndex].func;
retVal___ = postHookFunc(retVal___, account_id, homun_id);
}
@@ -32269,14 +37371,14 @@ bool HP_intif_homunculus_requestload(int account_id, int homun_id) {
int HP_intif_homunculus_requestsave(int account_id, struct s_homunculus *sh) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_homunculus_requestsave_pre ) {
+ if (HPMHooks.count.HP_intif_homunculus_requestsave_pre > 0) {
int (*preHookFunc) (int *account_id, struct s_homunculus **sh);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_homunculus_requestsave_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_homunculus_requestsave_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_homunculus_requestsave_pre[hIndex].func;
retVal___ = preHookFunc(&account_id, &sh);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -32284,9 +37386,9 @@ int HP_intif_homunculus_requestsave(int account_id, struct s_homunculus *sh) {
{
retVal___ = HPMHooks.source.intif.homunculus_requestsave(account_id, sh);
}
- if( HPMHooks.count.HP_intif_homunculus_requestsave_post ) {
+ if (HPMHooks.count.HP_intif_homunculus_requestsave_post > 0) {
int (*postHookFunc) (int retVal___, int account_id, struct s_homunculus *sh);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_homunculus_requestsave_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_homunculus_requestsave_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_homunculus_requestsave_post[hIndex].func;
retVal___ = postHookFunc(retVal___, account_id, sh);
}
@@ -32296,14 +37398,14 @@ int HP_intif_homunculus_requestsave(int account_id, struct s_homunculus *sh) {
int HP_intif_homunculus_requestdelete(int homun_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_homunculus_requestdelete_pre ) {
+ if (HPMHooks.count.HP_intif_homunculus_requestdelete_pre > 0) {
int (*preHookFunc) (int *homun_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_homunculus_requestdelete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_homunculus_requestdelete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_homunculus_requestdelete_pre[hIndex].func;
retVal___ = preHookFunc(&homun_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -32311,9 +37413,9 @@ int HP_intif_homunculus_requestdelete(int homun_id) {
{
retVal___ = HPMHooks.source.intif.homunculus_requestdelete(homun_id);
}
- if( HPMHooks.count.HP_intif_homunculus_requestdelete_post ) {
+ if (HPMHooks.count.HP_intif_homunculus_requestdelete_post > 0) {
int (*postHookFunc) (int retVal___, int homun_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_homunculus_requestdelete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_homunculus_requestdelete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_homunculus_requestdelete_post[hIndex].func;
retVal___ = postHookFunc(retVal___, homun_id);
}
@@ -32322,14 +37424,14 @@ int HP_intif_homunculus_requestdelete(int homun_id) {
}
void HP_intif_request_questlog(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_request_questlog_pre ) {
+ if (HPMHooks.count.HP_intif_request_questlog_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_request_questlog_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_request_questlog_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_request_questlog_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -32337,9 +37439,9 @@ void HP_intif_request_questlog(struct map_session_data *sd) {
{
HPMHooks.source.intif.request_questlog(sd);
}
- if( HPMHooks.count.HP_intif_request_questlog_post ) {
+ if (HPMHooks.count.HP_intif_request_questlog_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_request_questlog_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_request_questlog_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_request_questlog_post[hIndex].func;
postHookFunc(sd);
}
@@ -32349,14 +37451,14 @@ void HP_intif_request_questlog(struct map_session_data *sd) {
int HP_intif_quest_save(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_quest_save_pre ) {
+ if (HPMHooks.count.HP_intif_quest_save_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_quest_save_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_quest_save_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_quest_save_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -32364,9 +37466,9 @@ int HP_intif_quest_save(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.intif.quest_save(sd);
}
- if( HPMHooks.count.HP_intif_quest_save_post ) {
+ if (HPMHooks.count.HP_intif_quest_save_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_quest_save_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_quest_save_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_quest_save_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -32376,14 +37478,14 @@ int HP_intif_quest_save(struct map_session_data *sd) {
int HP_intif_mercenary_create(struct s_mercenary *merc) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_mercenary_create_pre ) {
+ if (HPMHooks.count.HP_intif_mercenary_create_pre > 0) {
int (*preHookFunc) (struct s_mercenary **merc);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_mercenary_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_mercenary_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_mercenary_create_pre[hIndex].func;
retVal___ = preHookFunc(&merc);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -32391,9 +37493,9 @@ int HP_intif_mercenary_create(struct s_mercenary *merc) {
{
retVal___ = HPMHooks.source.intif.mercenary_create(merc);
}
- if( HPMHooks.count.HP_intif_mercenary_create_post ) {
+ if (HPMHooks.count.HP_intif_mercenary_create_post > 0) {
int (*postHookFunc) (int retVal___, struct s_mercenary *merc);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_mercenary_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_mercenary_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_mercenary_create_post[hIndex].func;
retVal___ = postHookFunc(retVal___, merc);
}
@@ -32403,14 +37505,14 @@ int HP_intif_mercenary_create(struct s_mercenary *merc) {
int HP_intif_mercenary_request(int merc_id, int char_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_mercenary_request_pre ) {
+ if (HPMHooks.count.HP_intif_mercenary_request_pre > 0) {
int (*preHookFunc) (int *merc_id, int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_mercenary_request_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_mercenary_request_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_mercenary_request_pre[hIndex].func;
retVal___ = preHookFunc(&merc_id, &char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -32418,9 +37520,9 @@ int HP_intif_mercenary_request(int merc_id, int char_id) {
{
retVal___ = HPMHooks.source.intif.mercenary_request(merc_id, char_id);
}
- if( HPMHooks.count.HP_intif_mercenary_request_post ) {
+ if (HPMHooks.count.HP_intif_mercenary_request_post > 0) {
int (*postHookFunc) (int retVal___, int merc_id, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_mercenary_request_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_mercenary_request_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_mercenary_request_post[hIndex].func;
retVal___ = postHookFunc(retVal___, merc_id, char_id);
}
@@ -32430,14 +37532,14 @@ int HP_intif_mercenary_request(int merc_id, int char_id) {
int HP_intif_mercenary_delete(int merc_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_mercenary_delete_pre ) {
+ if (HPMHooks.count.HP_intif_mercenary_delete_pre > 0) {
int (*preHookFunc) (int *merc_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_mercenary_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_mercenary_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_mercenary_delete_pre[hIndex].func;
retVal___ = preHookFunc(&merc_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -32445,9 +37547,9 @@ int HP_intif_mercenary_delete(int merc_id) {
{
retVal___ = HPMHooks.source.intif.mercenary_delete(merc_id);
}
- if( HPMHooks.count.HP_intif_mercenary_delete_post ) {
+ if (HPMHooks.count.HP_intif_mercenary_delete_post > 0) {
int (*postHookFunc) (int retVal___, int merc_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_mercenary_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_mercenary_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_mercenary_delete_post[hIndex].func;
retVal___ = postHookFunc(retVal___, merc_id);
}
@@ -32457,14 +37559,14 @@ int HP_intif_mercenary_delete(int merc_id) {
int HP_intif_mercenary_save(struct s_mercenary *merc) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_mercenary_save_pre ) {
+ if (HPMHooks.count.HP_intif_mercenary_save_pre > 0) {
int (*preHookFunc) (struct s_mercenary **merc);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_mercenary_save_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_mercenary_save_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_mercenary_save_pre[hIndex].func;
retVal___ = preHookFunc(&merc);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -32472,9 +37574,9 @@ int HP_intif_mercenary_save(struct s_mercenary *merc) {
{
retVal___ = HPMHooks.source.intif.mercenary_save(merc);
}
- if( HPMHooks.count.HP_intif_mercenary_save_post ) {
+ if (HPMHooks.count.HP_intif_mercenary_save_post > 0) {
int (*postHookFunc) (int retVal___, struct s_mercenary *merc);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_mercenary_save_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_mercenary_save_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_mercenary_save_post[hIndex].func;
retVal___ = postHookFunc(retVal___, merc);
}
@@ -32484,14 +37586,14 @@ int HP_intif_mercenary_save(struct s_mercenary *merc) {
int HP_intif_Mail_requestinbox(int char_id, unsigned char flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_Mail_requestinbox_pre ) {
+ if (HPMHooks.count.HP_intif_Mail_requestinbox_pre > 0) {
int (*preHookFunc) (int *char_id, unsigned char *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_Mail_requestinbox_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_Mail_requestinbox_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_Mail_requestinbox_pre[hIndex].func;
retVal___ = preHookFunc(&char_id, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -32499,9 +37601,9 @@ int HP_intif_Mail_requestinbox(int char_id, unsigned char flag) {
{
retVal___ = HPMHooks.source.intif.Mail_requestinbox(char_id, flag);
}
- if( HPMHooks.count.HP_intif_Mail_requestinbox_post ) {
+ if (HPMHooks.count.HP_intif_Mail_requestinbox_post > 0) {
int (*postHookFunc) (int retVal___, int char_id, unsigned char flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_Mail_requestinbox_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_Mail_requestinbox_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_Mail_requestinbox_post[hIndex].func;
retVal___ = postHookFunc(retVal___, char_id, flag);
}
@@ -32511,14 +37613,14 @@ int HP_intif_Mail_requestinbox(int char_id, unsigned char flag) {
int HP_intif_Mail_read(int mail_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_Mail_read_pre ) {
+ if (HPMHooks.count.HP_intif_Mail_read_pre > 0) {
int (*preHookFunc) (int *mail_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_Mail_read_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_Mail_read_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_Mail_read_pre[hIndex].func;
retVal___ = preHookFunc(&mail_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -32526,9 +37628,9 @@ int HP_intif_Mail_read(int mail_id) {
{
retVal___ = HPMHooks.source.intif.Mail_read(mail_id);
}
- if( HPMHooks.count.HP_intif_Mail_read_post ) {
+ if (HPMHooks.count.HP_intif_Mail_read_post > 0) {
int (*postHookFunc) (int retVal___, int mail_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_Mail_read_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_Mail_read_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_Mail_read_post[hIndex].func;
retVal___ = postHookFunc(retVal___, mail_id);
}
@@ -32538,14 +37640,14 @@ int HP_intif_Mail_read(int mail_id) {
int HP_intif_Mail_getattach(int char_id, int mail_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_Mail_getattach_pre ) {
+ if (HPMHooks.count.HP_intif_Mail_getattach_pre > 0) {
int (*preHookFunc) (int *char_id, int *mail_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_Mail_getattach_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_Mail_getattach_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_Mail_getattach_pre[hIndex].func;
retVal___ = preHookFunc(&char_id, &mail_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -32553,9 +37655,9 @@ int HP_intif_Mail_getattach(int char_id, int mail_id) {
{
retVal___ = HPMHooks.source.intif.Mail_getattach(char_id, mail_id);
}
- if( HPMHooks.count.HP_intif_Mail_getattach_post ) {
+ if (HPMHooks.count.HP_intif_Mail_getattach_post > 0) {
int (*postHookFunc) (int retVal___, int char_id, int mail_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_Mail_getattach_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_Mail_getattach_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_Mail_getattach_post[hIndex].func;
retVal___ = postHookFunc(retVal___, char_id, mail_id);
}
@@ -32565,14 +37667,14 @@ int HP_intif_Mail_getattach(int char_id, int mail_id) {
int HP_intif_Mail_delete(int char_id, int mail_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_Mail_delete_pre ) {
+ if (HPMHooks.count.HP_intif_Mail_delete_pre > 0) {
int (*preHookFunc) (int *char_id, int *mail_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_Mail_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_Mail_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_Mail_delete_pre[hIndex].func;
retVal___ = preHookFunc(&char_id, &mail_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -32580,9 +37682,9 @@ int HP_intif_Mail_delete(int char_id, int mail_id) {
{
retVal___ = HPMHooks.source.intif.Mail_delete(char_id, mail_id);
}
- if( HPMHooks.count.HP_intif_Mail_delete_post ) {
+ if (HPMHooks.count.HP_intif_Mail_delete_post > 0) {
int (*postHookFunc) (int retVal___, int char_id, int mail_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_Mail_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_Mail_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_Mail_delete_post[hIndex].func;
retVal___ = postHookFunc(retVal___, char_id, mail_id);
}
@@ -32592,14 +37694,14 @@ int HP_intif_Mail_delete(int char_id, int mail_id) {
int HP_intif_Mail_return(int char_id, int mail_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_Mail_return_pre ) {
+ if (HPMHooks.count.HP_intif_Mail_return_pre > 0) {
int (*preHookFunc) (int *char_id, int *mail_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_Mail_return_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_Mail_return_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_Mail_return_pre[hIndex].func;
retVal___ = preHookFunc(&char_id, &mail_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -32607,9 +37709,9 @@ int HP_intif_Mail_return(int char_id, int mail_id) {
{
retVal___ = HPMHooks.source.intif.Mail_return(char_id, mail_id);
}
- if( HPMHooks.count.HP_intif_Mail_return_post ) {
+ if (HPMHooks.count.HP_intif_Mail_return_post > 0) {
int (*postHookFunc) (int retVal___, int char_id, int mail_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_Mail_return_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_Mail_return_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_Mail_return_post[hIndex].func;
retVal___ = postHookFunc(retVal___, char_id, mail_id);
}
@@ -32619,14 +37721,14 @@ int HP_intif_Mail_return(int char_id, int mail_id) {
int HP_intif_Mail_send(int account_id, struct mail_message *msg) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_Mail_send_pre ) {
+ if (HPMHooks.count.HP_intif_Mail_send_pre > 0) {
int (*preHookFunc) (int *account_id, struct mail_message **msg);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_Mail_send_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_Mail_send_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_Mail_send_pre[hIndex].func;
retVal___ = preHookFunc(&account_id, &msg);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -32634,9 +37736,9 @@ int HP_intif_Mail_send(int account_id, struct mail_message *msg) {
{
retVal___ = HPMHooks.source.intif.Mail_send(account_id, msg);
}
- if( HPMHooks.count.HP_intif_Mail_send_post ) {
+ if (HPMHooks.count.HP_intif_Mail_send_post > 0) {
int (*postHookFunc) (int retVal___, int account_id, struct mail_message *msg);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_Mail_send_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_Mail_send_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_Mail_send_post[hIndex].func;
retVal___ = postHookFunc(retVal___, account_id, msg);
}
@@ -32646,14 +37748,14 @@ int HP_intif_Mail_send(int account_id, struct mail_message *msg) {
int HP_intif_Auction_requestlist(int char_id, short type, int price, const char *searchtext, short page) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_Auction_requestlist_pre ) {
+ if (HPMHooks.count.HP_intif_Auction_requestlist_pre > 0) {
int (*preHookFunc) (int *char_id, short *type, int *price, const char **searchtext, short *page);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_Auction_requestlist_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_Auction_requestlist_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_Auction_requestlist_pre[hIndex].func;
retVal___ = preHookFunc(&char_id, &type, &price, &searchtext, &page);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -32661,9 +37763,9 @@ int HP_intif_Auction_requestlist(int char_id, short type, int price, const char
{
retVal___ = HPMHooks.source.intif.Auction_requestlist(char_id, type, price, searchtext, page);
}
- if( HPMHooks.count.HP_intif_Auction_requestlist_post ) {
+ if (HPMHooks.count.HP_intif_Auction_requestlist_post > 0) {
int (*postHookFunc) (int retVal___, int char_id, short type, int price, const char *searchtext, short page);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_Auction_requestlist_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_Auction_requestlist_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_Auction_requestlist_post[hIndex].func;
retVal___ = postHookFunc(retVal___, char_id, type, price, searchtext, page);
}
@@ -32673,14 +37775,14 @@ int HP_intif_Auction_requestlist(int char_id, short type, int price, const char
int HP_intif_Auction_register(struct auction_data *auction) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_Auction_register_pre ) {
+ if (HPMHooks.count.HP_intif_Auction_register_pre > 0) {
int (*preHookFunc) (struct auction_data **auction);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_Auction_register_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_Auction_register_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_Auction_register_pre[hIndex].func;
retVal___ = preHookFunc(&auction);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -32688,9 +37790,9 @@ int HP_intif_Auction_register(struct auction_data *auction) {
{
retVal___ = HPMHooks.source.intif.Auction_register(auction);
}
- if( HPMHooks.count.HP_intif_Auction_register_post ) {
+ if (HPMHooks.count.HP_intif_Auction_register_post > 0) {
int (*postHookFunc) (int retVal___, struct auction_data *auction);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_Auction_register_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_Auction_register_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_Auction_register_post[hIndex].func;
retVal___ = postHookFunc(retVal___, auction);
}
@@ -32700,14 +37802,14 @@ int HP_intif_Auction_register(struct auction_data *auction) {
int HP_intif_Auction_cancel(int char_id, unsigned int auction_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_Auction_cancel_pre ) {
+ if (HPMHooks.count.HP_intif_Auction_cancel_pre > 0) {
int (*preHookFunc) (int *char_id, unsigned int *auction_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_Auction_cancel_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_Auction_cancel_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_Auction_cancel_pre[hIndex].func;
retVal___ = preHookFunc(&char_id, &auction_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -32715,9 +37817,9 @@ int HP_intif_Auction_cancel(int char_id, unsigned int auction_id) {
{
retVal___ = HPMHooks.source.intif.Auction_cancel(char_id, auction_id);
}
- if( HPMHooks.count.HP_intif_Auction_cancel_post ) {
+ if (HPMHooks.count.HP_intif_Auction_cancel_post > 0) {
int (*postHookFunc) (int retVal___, int char_id, unsigned int auction_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_Auction_cancel_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_Auction_cancel_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_Auction_cancel_post[hIndex].func;
retVal___ = postHookFunc(retVal___, char_id, auction_id);
}
@@ -32727,14 +37829,14 @@ int HP_intif_Auction_cancel(int char_id, unsigned int auction_id) {
int HP_intif_Auction_close(int char_id, unsigned int auction_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_Auction_close_pre ) {
+ if (HPMHooks.count.HP_intif_Auction_close_pre > 0) {
int (*preHookFunc) (int *char_id, unsigned int *auction_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_Auction_close_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_Auction_close_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_Auction_close_pre[hIndex].func;
retVal___ = preHookFunc(&char_id, &auction_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -32742,9 +37844,9 @@ int HP_intif_Auction_close(int char_id, unsigned int auction_id) {
{
retVal___ = HPMHooks.source.intif.Auction_close(char_id, auction_id);
}
- if( HPMHooks.count.HP_intif_Auction_close_post ) {
+ if (HPMHooks.count.HP_intif_Auction_close_post > 0) {
int (*postHookFunc) (int retVal___, int char_id, unsigned int auction_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_Auction_close_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_Auction_close_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_Auction_close_post[hIndex].func;
retVal___ = postHookFunc(retVal___, char_id, auction_id);
}
@@ -32754,14 +37856,14 @@ int HP_intif_Auction_close(int char_id, unsigned int auction_id) {
int HP_intif_Auction_bid(int char_id, const char *name, unsigned int auction_id, int bid) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_Auction_bid_pre ) {
+ if (HPMHooks.count.HP_intif_Auction_bid_pre > 0) {
int (*preHookFunc) (int *char_id, const char **name, unsigned int *auction_id, int *bid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_Auction_bid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_Auction_bid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_Auction_bid_pre[hIndex].func;
retVal___ = preHookFunc(&char_id, &name, &auction_id, &bid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -32769,9 +37871,9 @@ int HP_intif_Auction_bid(int char_id, const char *name, unsigned int auction_id,
{
retVal___ = HPMHooks.source.intif.Auction_bid(char_id, name, auction_id, bid);
}
- if( HPMHooks.count.HP_intif_Auction_bid_post ) {
+ if (HPMHooks.count.HP_intif_Auction_bid_post > 0) {
int (*postHookFunc) (int retVal___, int char_id, const char *name, unsigned int auction_id, int bid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_Auction_bid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_Auction_bid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_Auction_bid_post[hIndex].func;
retVal___ = postHookFunc(retVal___, char_id, name, auction_id, bid);
}
@@ -32781,14 +37883,14 @@ int HP_intif_Auction_bid(int char_id, const char *name, unsigned int auction_id,
int HP_intif_elemental_create(struct s_elemental *ele) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_elemental_create_pre ) {
+ if (HPMHooks.count.HP_intif_elemental_create_pre > 0) {
int (*preHookFunc) (struct s_elemental **ele);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_elemental_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_elemental_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_elemental_create_pre[hIndex].func;
retVal___ = preHookFunc(&ele);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -32796,9 +37898,9 @@ int HP_intif_elemental_create(struct s_elemental *ele) {
{
retVal___ = HPMHooks.source.intif.elemental_create(ele);
}
- if( HPMHooks.count.HP_intif_elemental_create_post ) {
+ if (HPMHooks.count.HP_intif_elemental_create_post > 0) {
int (*postHookFunc) (int retVal___, struct s_elemental *ele);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_elemental_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_elemental_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_elemental_create_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ele);
}
@@ -32808,14 +37910,14 @@ int HP_intif_elemental_create(struct s_elemental *ele) {
int HP_intif_elemental_request(int ele_id, int char_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_elemental_request_pre ) {
+ if (HPMHooks.count.HP_intif_elemental_request_pre > 0) {
int (*preHookFunc) (int *ele_id, int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_elemental_request_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_elemental_request_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_elemental_request_pre[hIndex].func;
retVal___ = preHookFunc(&ele_id, &char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -32823,9 +37925,9 @@ int HP_intif_elemental_request(int ele_id, int char_id) {
{
retVal___ = HPMHooks.source.intif.elemental_request(ele_id, char_id);
}
- if( HPMHooks.count.HP_intif_elemental_request_post ) {
+ if (HPMHooks.count.HP_intif_elemental_request_post > 0) {
int (*postHookFunc) (int retVal___, int ele_id, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_elemental_request_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_elemental_request_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_elemental_request_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ele_id, char_id);
}
@@ -32835,14 +37937,14 @@ int HP_intif_elemental_request(int ele_id, int char_id) {
int HP_intif_elemental_delete(int ele_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_elemental_delete_pre ) {
+ if (HPMHooks.count.HP_intif_elemental_delete_pre > 0) {
int (*preHookFunc) (int *ele_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_elemental_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_elemental_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_elemental_delete_pre[hIndex].func;
retVal___ = preHookFunc(&ele_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -32850,9 +37952,9 @@ int HP_intif_elemental_delete(int ele_id) {
{
retVal___ = HPMHooks.source.intif.elemental_delete(ele_id);
}
- if( HPMHooks.count.HP_intif_elemental_delete_post ) {
+ if (HPMHooks.count.HP_intif_elemental_delete_post > 0) {
int (*postHookFunc) (int retVal___, int ele_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_elemental_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_elemental_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_elemental_delete_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ele_id);
}
@@ -32862,14 +37964,14 @@ int HP_intif_elemental_delete(int ele_id) {
int HP_intif_elemental_save(struct s_elemental *ele) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_elemental_save_pre ) {
+ if (HPMHooks.count.HP_intif_elemental_save_pre > 0) {
int (*preHookFunc) (struct s_elemental **ele);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_elemental_save_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_elemental_save_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_elemental_save_pre[hIndex].func;
retVal___ = preHookFunc(&ele);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -32877,25 +37979,214 @@ int HP_intif_elemental_save(struct s_elemental *ele) {
{
retVal___ = HPMHooks.source.intif.elemental_save(ele);
}
- if( HPMHooks.count.HP_intif_elemental_save_post ) {
+ if (HPMHooks.count.HP_intif_elemental_save_post > 0) {
int (*postHookFunc) (int retVal___, struct s_elemental *ele);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_elemental_save_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_elemental_save_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_elemental_save_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ele);
}
}
return retVal___;
}
+int HP_intif_rodex_requestinbox(int char_id, int account_id, int8 flag, int8 opentype, int64 mail_id) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_intif_rodex_requestinbox_pre > 0) {
+ int (*preHookFunc) (int *char_id, int *account_id, int8 *flag, int8 *opentype, int64 *mail_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_rodex_requestinbox_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_intif_rodex_requestinbox_pre[hIndex].func;
+ retVal___ = preHookFunc(&char_id, &account_id, &flag, &opentype, &mail_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.intif.rodex_requestinbox(char_id, account_id, flag, opentype, mail_id);
+ }
+ if (HPMHooks.count.HP_intif_rodex_requestinbox_post > 0) {
+ int (*postHookFunc) (int retVal___, int char_id, int account_id, int8 flag, int8 opentype, int64 mail_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_rodex_requestinbox_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_intif_rodex_requestinbox_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, char_id, account_id, flag, opentype, mail_id);
+ }
+ }
+ return retVal___;
+}
+int HP_intif_rodex_checkhasnew(struct map_session_data *sd) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_intif_rodex_checkhasnew_pre > 0) {
+ int (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_rodex_checkhasnew_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_intif_rodex_checkhasnew_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.intif.rodex_checkhasnew(sd);
+ }
+ if (HPMHooks.count.HP_intif_rodex_checkhasnew_post > 0) {
+ int (*postHookFunc) (int retVal___, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_rodex_checkhasnew_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_intif_rodex_checkhasnew_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd);
+ }
+ }
+ return retVal___;
+}
+int HP_intif_rodex_updatemail(int64 mail_id, int8 flag) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_intif_rodex_updatemail_pre > 0) {
+ int (*preHookFunc) (int64 *mail_id, int8 *flag);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_rodex_updatemail_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_intif_rodex_updatemail_pre[hIndex].func;
+ retVal___ = preHookFunc(&mail_id, &flag);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.intif.rodex_updatemail(mail_id, flag);
+ }
+ if (HPMHooks.count.HP_intif_rodex_updatemail_post > 0) {
+ int (*postHookFunc) (int retVal___, int64 mail_id, int8 flag);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_rodex_updatemail_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_intif_rodex_updatemail_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, mail_id, flag);
+ }
+ }
+ return retVal___;
+}
+int HP_intif_rodex_sendmail(struct rodex_message *msg) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_intif_rodex_sendmail_pre > 0) {
+ int (*preHookFunc) (struct rodex_message **msg);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_rodex_sendmail_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_intif_rodex_sendmail_pre[hIndex].func;
+ retVal___ = preHookFunc(&msg);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.intif.rodex_sendmail(msg);
+ }
+ if (HPMHooks.count.HP_intif_rodex_sendmail_post > 0) {
+ int (*postHookFunc) (int retVal___, struct rodex_message *msg);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_rodex_sendmail_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_intif_rodex_sendmail_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, msg);
+ }
+ }
+ return retVal___;
+}
+int HP_intif_rodex_checkname(struct map_session_data *sd, const char *name) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_intif_rodex_checkname_pre > 0) {
+ int (*preHookFunc) (struct map_session_data **sd, const char **name);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_rodex_checkname_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_intif_rodex_checkname_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &name);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.intif.rodex_checkname(sd, name);
+ }
+ if (HPMHooks.count.HP_intif_rodex_checkname_post > 0) {
+ int (*postHookFunc) (int retVal___, struct map_session_data *sd, const char *name);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_rodex_checkname_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_intif_rodex_checkname_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, name);
+ }
+ }
+ return retVal___;
+}
+int HP_intif_clan_kickoffline(int clan_id, int kick_interval) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_intif_clan_kickoffline_pre > 0) {
+ int (*preHookFunc) (int *clan_id, int *kick_interval);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_clan_kickoffline_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_intif_clan_kickoffline_pre[hIndex].func;
+ retVal___ = preHookFunc(&clan_id, &kick_interval);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.intif.clan_kickoffline(clan_id, kick_interval);
+ }
+ if (HPMHooks.count.HP_intif_clan_kickoffline_post > 0) {
+ int (*postHookFunc) (int retVal___, int clan_id, int kick_interval);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_clan_kickoffline_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_intif_clan_kickoffline_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, clan_id, kick_interval);
+ }
+ }
+ return retVal___;
+}
+int HP_intif_clan_membercount(int clan_id, int kick_interval) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_intif_clan_membercount_pre > 0) {
+ int (*preHookFunc) (int *clan_id, int *kick_interval);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_clan_membercount_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_intif_clan_membercount_pre[hIndex].func;
+ retVal___ = preHookFunc(&clan_id, &kick_interval);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.intif.clan_membercount(clan_id, kick_interval);
+ }
+ if (HPMHooks.count.HP_intif_clan_membercount_post > 0) {
+ int (*postHookFunc) (int retVal___, int clan_id, int kick_interval);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_clan_membercount_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_intif_clan_membercount_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, clan_id, kick_interval);
+ }
+ }
+ return retVal___;
+}
void HP_intif_request_accinfo(int u_fd, int aid, int group_lv, char *query) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_request_accinfo_pre ) {
+ if (HPMHooks.count.HP_intif_request_accinfo_pre > 0) {
void (*preHookFunc) (int *u_fd, int *aid, int *group_lv, char **query);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_request_accinfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_request_accinfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_request_accinfo_pre[hIndex].func;
preHookFunc(&u_fd, &aid, &group_lv, &query);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -32903,9 +38194,9 @@ void HP_intif_request_accinfo(int u_fd, int aid, int group_lv, char *query) {
{
HPMHooks.source.intif.request_accinfo(u_fd, aid, group_lv, query);
}
- if( HPMHooks.count.HP_intif_request_accinfo_post ) {
+ if (HPMHooks.count.HP_intif_request_accinfo_post > 0) {
void (*postHookFunc) (int u_fd, int aid, int group_lv, char *query);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_request_accinfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_request_accinfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_request_accinfo_post[hIndex].func;
postHookFunc(u_fd, aid, group_lv, query);
}
@@ -32915,14 +38206,14 @@ void HP_intif_request_accinfo(int u_fd, int aid, int group_lv, char *query) {
int HP_intif_CheckForCharServer(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_CheckForCharServer_pre ) {
+ if (HPMHooks.count.HP_intif_CheckForCharServer_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_CheckForCharServer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_CheckForCharServer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_CheckForCharServer_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -32930,25 +38221,77 @@ int HP_intif_CheckForCharServer(void) {
{
retVal___ = HPMHooks.source.intif.CheckForCharServer();
}
- if( HPMHooks.count.HP_intif_CheckForCharServer_post ) {
+ if (HPMHooks.count.HP_intif_CheckForCharServer_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_CheckForCharServer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_CheckForCharServer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_CheckForCharServer_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
}
return retVal___;
}
+void HP_intif_achievements_request(struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_intif_achievements_request_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_achievements_request_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_intif_achievements_request_pre[hIndex].func;
+ preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.intif.achievements_request(sd);
+ }
+ if (HPMHooks.count.HP_intif_achievements_request_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_achievements_request_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_intif_achievements_request_post[hIndex].func;
+ postHookFunc(sd);
+ }
+ }
+ return;
+}
+void HP_intif_achievements_save(struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_intif_achievements_save_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_achievements_save_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_intif_achievements_save_pre[hIndex].func;
+ preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.intif.achievements_save(sd);
+ }
+ if (HPMHooks.count.HP_intif_achievements_save_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_achievements_save_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_intif_achievements_save_post[hIndex].func;
+ postHookFunc(sd);
+ }
+ }
+ return;
+}
void HP_intif_pWisMessage(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pWisMessage_pre ) {
+ if (HPMHooks.count.HP_intif_pWisMessage_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pWisMessage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pWisMessage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pWisMessage_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -32956,9 +38299,9 @@ void HP_intif_pWisMessage(int fd) {
{
HPMHooks.source.intif.pWisMessage(fd);
}
- if( HPMHooks.count.HP_intif_pWisMessage_post ) {
+ if (HPMHooks.count.HP_intif_pWisMessage_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pWisMessage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pWisMessage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pWisMessage_post[hIndex].func;
postHookFunc(fd);
}
@@ -32967,14 +38310,14 @@ void HP_intif_pWisMessage(int fd) {
}
void HP_intif_pWisEnd(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pWisEnd_pre ) {
+ if (HPMHooks.count.HP_intif_pWisEnd_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pWisEnd_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pWisEnd_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pWisEnd_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -32982,9 +38325,9 @@ void HP_intif_pWisEnd(int fd) {
{
HPMHooks.source.intif.pWisEnd(fd);
}
- if( HPMHooks.count.HP_intif_pWisEnd_post ) {
+ if (HPMHooks.count.HP_intif_pWisEnd_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pWisEnd_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pWisEnd_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pWisEnd_post[hIndex].func;
postHookFunc(fd);
}
@@ -32994,16 +38337,16 @@ void HP_intif_pWisEnd(int fd) {
int HP_intif_pWisToGM_sub(struct map_session_data *sd, va_list va) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_intif_pWisToGM_sub_pre ) {
+ if (HPMHooks.count.HP_intif_pWisToGM_sub_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, va_list va);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pWisToGM_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pWisToGM_sub_pre; hIndex++) {
va_list va___copy; va_copy(va___copy, va);
preHookFunc = HPMHooks.list.HP_intif_pWisToGM_sub_pre[hIndex].func;
retVal___ = preHookFunc(&sd, va___copy);
va_end(va___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -33013,9 +38356,9 @@ int HP_intif_pWisToGM_sub(struct map_session_data *sd, va_list va) {
retVal___ = HPMHooks.source.intif.pWisToGM_sub(sd, va___copy);
va_end(va___copy);
}
- if( HPMHooks.count.HP_intif_pWisToGM_sub_post ) {
+ if (HPMHooks.count.HP_intif_pWisToGM_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, va_list va);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pWisToGM_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pWisToGM_sub_post; hIndex++) {
va_list va___copy; va_copy(va___copy, va);
postHookFunc = HPMHooks.list.HP_intif_pWisToGM_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, va___copy);
@@ -33026,14 +38369,14 @@ int HP_intif_pWisToGM_sub(struct map_session_data *sd, va_list va) {
}
void HP_intif_pWisToGM(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pWisToGM_pre ) {
+ if (HPMHooks.count.HP_intif_pWisToGM_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pWisToGM_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pWisToGM_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pWisToGM_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33041,9 +38384,9 @@ void HP_intif_pWisToGM(int fd) {
{
HPMHooks.source.intif.pWisToGM(fd);
}
- if( HPMHooks.count.HP_intif_pWisToGM_post ) {
+ if (HPMHooks.count.HP_intif_pWisToGM_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pWisToGM_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pWisToGM_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pWisToGM_post[hIndex].func;
postHookFunc(fd);
}
@@ -33052,14 +38395,14 @@ void HP_intif_pWisToGM(int fd) {
}
void HP_intif_pRegisters(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pRegisters_pre ) {
+ if (HPMHooks.count.HP_intif_pRegisters_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pRegisters_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pRegisters_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pRegisters_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33067,25 +38410,51 @@ void HP_intif_pRegisters(int fd) {
{
HPMHooks.source.intif.pRegisters(fd);
}
- if( HPMHooks.count.HP_intif_pRegisters_post ) {
+ if (HPMHooks.count.HP_intif_pRegisters_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pRegisters_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pRegisters_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pRegisters_post[hIndex].func;
postHookFunc(fd);
}
}
return;
}
+void HP_intif_pAccountStorage(int fd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_intif_pAccountStorage_pre > 0) {
+ void (*preHookFunc) (int *fd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pAccountStorage_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_intif_pAccountStorage_pre[hIndex].func;
+ preHookFunc(&fd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.intif.pAccountStorage(fd);
+ }
+ if (HPMHooks.count.HP_intif_pAccountStorage_post > 0) {
+ void (*postHookFunc) (int fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pAccountStorage_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_intif_pAccountStorage_post[hIndex].func;
+ postHookFunc(fd);
+ }
+ }
+ return;
+}
void HP_intif_pChangeNameOk(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pChangeNameOk_pre ) {
+ if (HPMHooks.count.HP_intif_pChangeNameOk_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pChangeNameOk_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pChangeNameOk_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pChangeNameOk_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33093,9 +38462,9 @@ void HP_intif_pChangeNameOk(int fd) {
{
HPMHooks.source.intif.pChangeNameOk(fd);
}
- if( HPMHooks.count.HP_intif_pChangeNameOk_post ) {
+ if (HPMHooks.count.HP_intif_pChangeNameOk_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pChangeNameOk_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pChangeNameOk_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pChangeNameOk_post[hIndex].func;
postHookFunc(fd);
}
@@ -33104,14 +38473,14 @@ void HP_intif_pChangeNameOk(int fd) {
}
void HP_intif_pMessageToFD(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pMessageToFD_pre ) {
+ if (HPMHooks.count.HP_intif_pMessageToFD_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMessageToFD_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMessageToFD_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pMessageToFD_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33119,25 +38488,51 @@ void HP_intif_pMessageToFD(int fd) {
{
HPMHooks.source.intif.pMessageToFD(fd);
}
- if( HPMHooks.count.HP_intif_pMessageToFD_post ) {
+ if (HPMHooks.count.HP_intif_pMessageToFD_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMessageToFD_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMessageToFD_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pMessageToFD_post[hIndex].func;
postHookFunc(fd);
}
}
return;
}
+void HP_intif_pAccountStorageSaveAck(int fd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_intif_pAccountStorageSaveAck_pre > 0) {
+ void (*preHookFunc) (int *fd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pAccountStorageSaveAck_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_intif_pAccountStorageSaveAck_pre[hIndex].func;
+ preHookFunc(&fd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.intif.pAccountStorageSaveAck(fd);
+ }
+ if (HPMHooks.count.HP_intif_pAccountStorageSaveAck_post > 0) {
+ void (*postHookFunc) (int fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pAccountStorageSaveAck_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_intif_pAccountStorageSaveAck_post[hIndex].func;
+ postHookFunc(fd);
+ }
+ }
+ return;
+}
void HP_intif_pLoadGuildStorage(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pLoadGuildStorage_pre ) {
+ if (HPMHooks.count.HP_intif_pLoadGuildStorage_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pLoadGuildStorage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pLoadGuildStorage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pLoadGuildStorage_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33145,9 +38540,9 @@ void HP_intif_pLoadGuildStorage(int fd) {
{
HPMHooks.source.intif.pLoadGuildStorage(fd);
}
- if( HPMHooks.count.HP_intif_pLoadGuildStorage_post ) {
+ if (HPMHooks.count.HP_intif_pLoadGuildStorage_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pLoadGuildStorage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pLoadGuildStorage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pLoadGuildStorage_post[hIndex].func;
postHookFunc(fd);
}
@@ -33156,14 +38551,14 @@ void HP_intif_pLoadGuildStorage(int fd) {
}
void HP_intif_pSaveGuildStorage(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pSaveGuildStorage_pre ) {
+ if (HPMHooks.count.HP_intif_pSaveGuildStorage_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pSaveGuildStorage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pSaveGuildStorage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pSaveGuildStorage_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33171,9 +38566,9 @@ void HP_intif_pSaveGuildStorage(int fd) {
{
HPMHooks.source.intif.pSaveGuildStorage(fd);
}
- if( HPMHooks.count.HP_intif_pSaveGuildStorage_post ) {
+ if (HPMHooks.count.HP_intif_pSaveGuildStorage_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pSaveGuildStorage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pSaveGuildStorage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pSaveGuildStorage_post[hIndex].func;
postHookFunc(fd);
}
@@ -33182,14 +38577,14 @@ void HP_intif_pSaveGuildStorage(int fd) {
}
void HP_intif_pPartyCreated(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pPartyCreated_pre ) {
+ if (HPMHooks.count.HP_intif_pPartyCreated_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyCreated_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyCreated_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pPartyCreated_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33197,9 +38592,9 @@ void HP_intif_pPartyCreated(int fd) {
{
HPMHooks.source.intif.pPartyCreated(fd);
}
- if( HPMHooks.count.HP_intif_pPartyCreated_post ) {
+ if (HPMHooks.count.HP_intif_pPartyCreated_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyCreated_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyCreated_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pPartyCreated_post[hIndex].func;
postHookFunc(fd);
}
@@ -33208,14 +38603,14 @@ void HP_intif_pPartyCreated(int fd) {
}
void HP_intif_pPartyInfo(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pPartyInfo_pre ) {
+ if (HPMHooks.count.HP_intif_pPartyInfo_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyInfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyInfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pPartyInfo_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33223,9 +38618,9 @@ void HP_intif_pPartyInfo(int fd) {
{
HPMHooks.source.intif.pPartyInfo(fd);
}
- if( HPMHooks.count.HP_intif_pPartyInfo_post ) {
+ if (HPMHooks.count.HP_intif_pPartyInfo_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyInfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyInfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pPartyInfo_post[hIndex].func;
postHookFunc(fd);
}
@@ -33234,14 +38629,14 @@ void HP_intif_pPartyInfo(int fd) {
}
void HP_intif_pPartyMemberAdded(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pPartyMemberAdded_pre ) {
+ if (HPMHooks.count.HP_intif_pPartyMemberAdded_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyMemberAdded_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyMemberAdded_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pPartyMemberAdded_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33249,9 +38644,9 @@ void HP_intif_pPartyMemberAdded(int fd) {
{
HPMHooks.source.intif.pPartyMemberAdded(fd);
}
- if( HPMHooks.count.HP_intif_pPartyMemberAdded_post ) {
+ if (HPMHooks.count.HP_intif_pPartyMemberAdded_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyMemberAdded_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyMemberAdded_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pPartyMemberAdded_post[hIndex].func;
postHookFunc(fd);
}
@@ -33260,14 +38655,14 @@ void HP_intif_pPartyMemberAdded(int fd) {
}
void HP_intif_pPartyOptionChanged(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pPartyOptionChanged_pre ) {
+ if (HPMHooks.count.HP_intif_pPartyOptionChanged_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyOptionChanged_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyOptionChanged_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pPartyOptionChanged_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33275,9 +38670,9 @@ void HP_intif_pPartyOptionChanged(int fd) {
{
HPMHooks.source.intif.pPartyOptionChanged(fd);
}
- if( HPMHooks.count.HP_intif_pPartyOptionChanged_post ) {
+ if (HPMHooks.count.HP_intif_pPartyOptionChanged_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyOptionChanged_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyOptionChanged_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pPartyOptionChanged_post[hIndex].func;
postHookFunc(fd);
}
@@ -33286,14 +38681,14 @@ void HP_intif_pPartyOptionChanged(int fd) {
}
void HP_intif_pPartyMemberWithdraw(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pPartyMemberWithdraw_pre ) {
+ if (HPMHooks.count.HP_intif_pPartyMemberWithdraw_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyMemberWithdraw_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyMemberWithdraw_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pPartyMemberWithdraw_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33301,9 +38696,9 @@ void HP_intif_pPartyMemberWithdraw(int fd) {
{
HPMHooks.source.intif.pPartyMemberWithdraw(fd);
}
- if( HPMHooks.count.HP_intif_pPartyMemberWithdraw_post ) {
+ if (HPMHooks.count.HP_intif_pPartyMemberWithdraw_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyMemberWithdraw_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyMemberWithdraw_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pPartyMemberWithdraw_post[hIndex].func;
postHookFunc(fd);
}
@@ -33312,14 +38707,14 @@ void HP_intif_pPartyMemberWithdraw(int fd) {
}
void HP_intif_pPartyMove(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pPartyMove_pre ) {
+ if (HPMHooks.count.HP_intif_pPartyMove_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyMove_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyMove_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pPartyMove_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33327,9 +38722,9 @@ void HP_intif_pPartyMove(int fd) {
{
HPMHooks.source.intif.pPartyMove(fd);
}
- if( HPMHooks.count.HP_intif_pPartyMove_post ) {
+ if (HPMHooks.count.HP_intif_pPartyMove_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyMove_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyMove_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pPartyMove_post[hIndex].func;
postHookFunc(fd);
}
@@ -33338,14 +38733,14 @@ void HP_intif_pPartyMove(int fd) {
}
void HP_intif_pPartyBroken(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pPartyBroken_pre ) {
+ if (HPMHooks.count.HP_intif_pPartyBroken_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyBroken_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyBroken_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pPartyBroken_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33353,9 +38748,9 @@ void HP_intif_pPartyBroken(int fd) {
{
HPMHooks.source.intif.pPartyBroken(fd);
}
- if( HPMHooks.count.HP_intif_pPartyBroken_post ) {
+ if (HPMHooks.count.HP_intif_pPartyBroken_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyBroken_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyBroken_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pPartyBroken_post[hIndex].func;
postHookFunc(fd);
}
@@ -33364,14 +38759,14 @@ void HP_intif_pPartyBroken(int fd) {
}
void HP_intif_pPartyMessage(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pPartyMessage_pre ) {
+ if (HPMHooks.count.HP_intif_pPartyMessage_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyMessage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyMessage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pPartyMessage_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33379,9 +38774,9 @@ void HP_intif_pPartyMessage(int fd) {
{
HPMHooks.source.intif.pPartyMessage(fd);
}
- if( HPMHooks.count.HP_intif_pPartyMessage_post ) {
+ if (HPMHooks.count.HP_intif_pPartyMessage_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyMessage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyMessage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pPartyMessage_post[hIndex].func;
postHookFunc(fd);
}
@@ -33390,14 +38785,14 @@ void HP_intif_pPartyMessage(int fd) {
}
void HP_intif_pGuildCreated(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pGuildCreated_pre ) {
+ if (HPMHooks.count.HP_intif_pGuildCreated_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildCreated_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildCreated_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pGuildCreated_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33405,9 +38800,9 @@ void HP_intif_pGuildCreated(int fd) {
{
HPMHooks.source.intif.pGuildCreated(fd);
}
- if( HPMHooks.count.HP_intif_pGuildCreated_post ) {
+ if (HPMHooks.count.HP_intif_pGuildCreated_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildCreated_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildCreated_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pGuildCreated_post[hIndex].func;
postHookFunc(fd);
}
@@ -33416,14 +38811,14 @@ void HP_intif_pGuildCreated(int fd) {
}
void HP_intif_pGuildInfo(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pGuildInfo_pre ) {
+ if (HPMHooks.count.HP_intif_pGuildInfo_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildInfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildInfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pGuildInfo_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33431,9 +38826,9 @@ void HP_intif_pGuildInfo(int fd) {
{
HPMHooks.source.intif.pGuildInfo(fd);
}
- if( HPMHooks.count.HP_intif_pGuildInfo_post ) {
+ if (HPMHooks.count.HP_intif_pGuildInfo_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildInfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildInfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pGuildInfo_post[hIndex].func;
postHookFunc(fd);
}
@@ -33442,14 +38837,14 @@ void HP_intif_pGuildInfo(int fd) {
}
void HP_intif_pGuildMemberAdded(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pGuildMemberAdded_pre ) {
+ if (HPMHooks.count.HP_intif_pGuildMemberAdded_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildMemberAdded_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildMemberAdded_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pGuildMemberAdded_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33457,9 +38852,9 @@ void HP_intif_pGuildMemberAdded(int fd) {
{
HPMHooks.source.intif.pGuildMemberAdded(fd);
}
- if( HPMHooks.count.HP_intif_pGuildMemberAdded_post ) {
+ if (HPMHooks.count.HP_intif_pGuildMemberAdded_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildMemberAdded_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildMemberAdded_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pGuildMemberAdded_post[hIndex].func;
postHookFunc(fd);
}
@@ -33468,14 +38863,14 @@ void HP_intif_pGuildMemberAdded(int fd) {
}
void HP_intif_pGuildMemberWithdraw(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pGuildMemberWithdraw_pre ) {
+ if (HPMHooks.count.HP_intif_pGuildMemberWithdraw_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildMemberWithdraw_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildMemberWithdraw_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pGuildMemberWithdraw_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33483,9 +38878,9 @@ void HP_intif_pGuildMemberWithdraw(int fd) {
{
HPMHooks.source.intif.pGuildMemberWithdraw(fd);
}
- if( HPMHooks.count.HP_intif_pGuildMemberWithdraw_post ) {
+ if (HPMHooks.count.HP_intif_pGuildMemberWithdraw_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildMemberWithdraw_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildMemberWithdraw_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pGuildMemberWithdraw_post[hIndex].func;
postHookFunc(fd);
}
@@ -33494,14 +38889,14 @@ void HP_intif_pGuildMemberWithdraw(int fd) {
}
void HP_intif_pGuildMemberInfoShort(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pGuildMemberInfoShort_pre ) {
+ if (HPMHooks.count.HP_intif_pGuildMemberInfoShort_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildMemberInfoShort_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildMemberInfoShort_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pGuildMemberInfoShort_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33509,9 +38904,9 @@ void HP_intif_pGuildMemberInfoShort(int fd) {
{
HPMHooks.source.intif.pGuildMemberInfoShort(fd);
}
- if( HPMHooks.count.HP_intif_pGuildMemberInfoShort_post ) {
+ if (HPMHooks.count.HP_intif_pGuildMemberInfoShort_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildMemberInfoShort_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildMemberInfoShort_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pGuildMemberInfoShort_post[hIndex].func;
postHookFunc(fd);
}
@@ -33520,14 +38915,14 @@ void HP_intif_pGuildMemberInfoShort(int fd) {
}
void HP_intif_pGuildBroken(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pGuildBroken_pre ) {
+ if (HPMHooks.count.HP_intif_pGuildBroken_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildBroken_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildBroken_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pGuildBroken_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33535,9 +38930,9 @@ void HP_intif_pGuildBroken(int fd) {
{
HPMHooks.source.intif.pGuildBroken(fd);
}
- if( HPMHooks.count.HP_intif_pGuildBroken_post ) {
+ if (HPMHooks.count.HP_intif_pGuildBroken_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildBroken_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildBroken_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pGuildBroken_post[hIndex].func;
postHookFunc(fd);
}
@@ -33546,14 +38941,14 @@ void HP_intif_pGuildBroken(int fd) {
}
void HP_intif_pGuildMessage(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pGuildMessage_pre ) {
+ if (HPMHooks.count.HP_intif_pGuildMessage_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildMessage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildMessage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pGuildMessage_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33561,9 +38956,9 @@ void HP_intif_pGuildMessage(int fd) {
{
HPMHooks.source.intif.pGuildMessage(fd);
}
- if( HPMHooks.count.HP_intif_pGuildMessage_post ) {
+ if (HPMHooks.count.HP_intif_pGuildMessage_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildMessage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildMessage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pGuildMessage_post[hIndex].func;
postHookFunc(fd);
}
@@ -33572,14 +38967,14 @@ void HP_intif_pGuildMessage(int fd) {
}
void HP_intif_pGuildBasicInfoChanged(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pGuildBasicInfoChanged_pre ) {
+ if (HPMHooks.count.HP_intif_pGuildBasicInfoChanged_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildBasicInfoChanged_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildBasicInfoChanged_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pGuildBasicInfoChanged_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33587,9 +38982,9 @@ void HP_intif_pGuildBasicInfoChanged(int fd) {
{
HPMHooks.source.intif.pGuildBasicInfoChanged(fd);
}
- if( HPMHooks.count.HP_intif_pGuildBasicInfoChanged_post ) {
+ if (HPMHooks.count.HP_intif_pGuildBasicInfoChanged_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildBasicInfoChanged_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildBasicInfoChanged_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pGuildBasicInfoChanged_post[hIndex].func;
postHookFunc(fd);
}
@@ -33598,14 +38993,14 @@ void HP_intif_pGuildBasicInfoChanged(int fd) {
}
void HP_intif_pGuildMemberInfoChanged(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pGuildMemberInfoChanged_pre ) {
+ if (HPMHooks.count.HP_intif_pGuildMemberInfoChanged_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildMemberInfoChanged_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildMemberInfoChanged_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pGuildMemberInfoChanged_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33613,9 +39008,9 @@ void HP_intif_pGuildMemberInfoChanged(int fd) {
{
HPMHooks.source.intif.pGuildMemberInfoChanged(fd);
}
- if( HPMHooks.count.HP_intif_pGuildMemberInfoChanged_post ) {
+ if (HPMHooks.count.HP_intif_pGuildMemberInfoChanged_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildMemberInfoChanged_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildMemberInfoChanged_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pGuildMemberInfoChanged_post[hIndex].func;
postHookFunc(fd);
}
@@ -33624,14 +39019,14 @@ void HP_intif_pGuildMemberInfoChanged(int fd) {
}
void HP_intif_pGuildPosition(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pGuildPosition_pre ) {
+ if (HPMHooks.count.HP_intif_pGuildPosition_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildPosition_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildPosition_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pGuildPosition_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33639,9 +39034,9 @@ void HP_intif_pGuildPosition(int fd) {
{
HPMHooks.source.intif.pGuildPosition(fd);
}
- if( HPMHooks.count.HP_intif_pGuildPosition_post ) {
+ if (HPMHooks.count.HP_intif_pGuildPosition_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildPosition_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildPosition_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pGuildPosition_post[hIndex].func;
postHookFunc(fd);
}
@@ -33650,14 +39045,14 @@ void HP_intif_pGuildPosition(int fd) {
}
void HP_intif_pGuildSkillUp(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pGuildSkillUp_pre ) {
+ if (HPMHooks.count.HP_intif_pGuildSkillUp_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildSkillUp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildSkillUp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pGuildSkillUp_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33665,9 +39060,9 @@ void HP_intif_pGuildSkillUp(int fd) {
{
HPMHooks.source.intif.pGuildSkillUp(fd);
}
- if( HPMHooks.count.HP_intif_pGuildSkillUp_post ) {
+ if (HPMHooks.count.HP_intif_pGuildSkillUp_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildSkillUp_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildSkillUp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pGuildSkillUp_post[hIndex].func;
postHookFunc(fd);
}
@@ -33676,14 +39071,14 @@ void HP_intif_pGuildSkillUp(int fd) {
}
void HP_intif_pGuildAlliance(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pGuildAlliance_pre ) {
+ if (HPMHooks.count.HP_intif_pGuildAlliance_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildAlliance_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildAlliance_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pGuildAlliance_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33691,9 +39086,9 @@ void HP_intif_pGuildAlliance(int fd) {
{
HPMHooks.source.intif.pGuildAlliance(fd);
}
- if( HPMHooks.count.HP_intif_pGuildAlliance_post ) {
+ if (HPMHooks.count.HP_intif_pGuildAlliance_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildAlliance_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildAlliance_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pGuildAlliance_post[hIndex].func;
postHookFunc(fd);
}
@@ -33702,14 +39097,14 @@ void HP_intif_pGuildAlliance(int fd) {
}
void HP_intif_pGuildNotice(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pGuildNotice_pre ) {
+ if (HPMHooks.count.HP_intif_pGuildNotice_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildNotice_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildNotice_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pGuildNotice_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33717,9 +39112,9 @@ void HP_intif_pGuildNotice(int fd) {
{
HPMHooks.source.intif.pGuildNotice(fd);
}
- if( HPMHooks.count.HP_intif_pGuildNotice_post ) {
+ if (HPMHooks.count.HP_intif_pGuildNotice_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildNotice_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildNotice_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pGuildNotice_post[hIndex].func;
postHookFunc(fd);
}
@@ -33728,14 +39123,14 @@ void HP_intif_pGuildNotice(int fd) {
}
void HP_intif_pGuildEmblem(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pGuildEmblem_pre ) {
+ if (HPMHooks.count.HP_intif_pGuildEmblem_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildEmblem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildEmblem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pGuildEmblem_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33743,9 +39138,9 @@ void HP_intif_pGuildEmblem(int fd) {
{
HPMHooks.source.intif.pGuildEmblem(fd);
}
- if( HPMHooks.count.HP_intif_pGuildEmblem_post ) {
+ if (HPMHooks.count.HP_intif_pGuildEmblem_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildEmblem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildEmblem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pGuildEmblem_post[hIndex].func;
postHookFunc(fd);
}
@@ -33754,14 +39149,14 @@ void HP_intif_pGuildEmblem(int fd) {
}
void HP_intif_pGuildCastleDataLoad(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pGuildCastleDataLoad_pre ) {
+ if (HPMHooks.count.HP_intif_pGuildCastleDataLoad_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildCastleDataLoad_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildCastleDataLoad_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pGuildCastleDataLoad_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33769,9 +39164,9 @@ void HP_intif_pGuildCastleDataLoad(int fd) {
{
HPMHooks.source.intif.pGuildCastleDataLoad(fd);
}
- if( HPMHooks.count.HP_intif_pGuildCastleDataLoad_post ) {
+ if (HPMHooks.count.HP_intif_pGuildCastleDataLoad_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildCastleDataLoad_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildCastleDataLoad_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pGuildCastleDataLoad_post[hIndex].func;
postHookFunc(fd);
}
@@ -33780,14 +39175,14 @@ void HP_intif_pGuildCastleDataLoad(int fd) {
}
void HP_intif_pGuildMasterChanged(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pGuildMasterChanged_pre ) {
+ if (HPMHooks.count.HP_intif_pGuildMasterChanged_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildMasterChanged_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildMasterChanged_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pGuildMasterChanged_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33795,9 +39190,9 @@ void HP_intif_pGuildMasterChanged(int fd) {
{
HPMHooks.source.intif.pGuildMasterChanged(fd);
}
- if( HPMHooks.count.HP_intif_pGuildMasterChanged_post ) {
+ if (HPMHooks.count.HP_intif_pGuildMasterChanged_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildMasterChanged_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildMasterChanged_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pGuildMasterChanged_post[hIndex].func;
postHookFunc(fd);
}
@@ -33806,14 +39201,14 @@ void HP_intif_pGuildMasterChanged(int fd) {
}
void HP_intif_pQuestLog(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pQuestLog_pre ) {
+ if (HPMHooks.count.HP_intif_pQuestLog_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pQuestLog_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pQuestLog_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pQuestLog_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33821,9 +39216,9 @@ void HP_intif_pQuestLog(int fd) {
{
HPMHooks.source.intif.pQuestLog(fd);
}
- if( HPMHooks.count.HP_intif_pQuestLog_post ) {
+ if (HPMHooks.count.HP_intif_pQuestLog_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pQuestLog_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pQuestLog_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pQuestLog_post[hIndex].func;
postHookFunc(fd);
}
@@ -33832,14 +39227,14 @@ void HP_intif_pQuestLog(int fd) {
}
void HP_intif_pQuestSave(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pQuestSave_pre ) {
+ if (HPMHooks.count.HP_intif_pQuestSave_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pQuestSave_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pQuestSave_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pQuestSave_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33847,9 +39242,9 @@ void HP_intif_pQuestSave(int fd) {
{
HPMHooks.source.intif.pQuestSave(fd);
}
- if( HPMHooks.count.HP_intif_pQuestSave_post ) {
+ if (HPMHooks.count.HP_intif_pQuestSave_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pQuestSave_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pQuestSave_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pQuestSave_post[hIndex].func;
postHookFunc(fd);
}
@@ -33858,14 +39253,14 @@ void HP_intif_pQuestSave(int fd) {
}
void HP_intif_pMailInboxReceived(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pMailInboxReceived_pre ) {
+ if (HPMHooks.count.HP_intif_pMailInboxReceived_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMailInboxReceived_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMailInboxReceived_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pMailInboxReceived_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33873,9 +39268,9 @@ void HP_intif_pMailInboxReceived(int fd) {
{
HPMHooks.source.intif.pMailInboxReceived(fd);
}
- if( HPMHooks.count.HP_intif_pMailInboxReceived_post ) {
+ if (HPMHooks.count.HP_intif_pMailInboxReceived_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMailInboxReceived_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMailInboxReceived_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pMailInboxReceived_post[hIndex].func;
postHookFunc(fd);
}
@@ -33884,14 +39279,14 @@ void HP_intif_pMailInboxReceived(int fd) {
}
void HP_intif_pMailNew(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pMailNew_pre ) {
+ if (HPMHooks.count.HP_intif_pMailNew_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMailNew_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMailNew_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pMailNew_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33899,9 +39294,9 @@ void HP_intif_pMailNew(int fd) {
{
HPMHooks.source.intif.pMailNew(fd);
}
- if( HPMHooks.count.HP_intif_pMailNew_post ) {
+ if (HPMHooks.count.HP_intif_pMailNew_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMailNew_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMailNew_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pMailNew_post[hIndex].func;
postHookFunc(fd);
}
@@ -33910,14 +39305,14 @@ void HP_intif_pMailNew(int fd) {
}
void HP_intif_pMailGetAttach(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pMailGetAttach_pre ) {
+ if (HPMHooks.count.HP_intif_pMailGetAttach_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMailGetAttach_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMailGetAttach_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pMailGetAttach_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33925,9 +39320,9 @@ void HP_intif_pMailGetAttach(int fd) {
{
HPMHooks.source.intif.pMailGetAttach(fd);
}
- if( HPMHooks.count.HP_intif_pMailGetAttach_post ) {
+ if (HPMHooks.count.HP_intif_pMailGetAttach_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMailGetAttach_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMailGetAttach_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pMailGetAttach_post[hIndex].func;
postHookFunc(fd);
}
@@ -33936,14 +39331,14 @@ void HP_intif_pMailGetAttach(int fd) {
}
void HP_intif_pMailDelete(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pMailDelete_pre ) {
+ if (HPMHooks.count.HP_intif_pMailDelete_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMailDelete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMailDelete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pMailDelete_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33951,9 +39346,9 @@ void HP_intif_pMailDelete(int fd) {
{
HPMHooks.source.intif.pMailDelete(fd);
}
- if( HPMHooks.count.HP_intif_pMailDelete_post ) {
+ if (HPMHooks.count.HP_intif_pMailDelete_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMailDelete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMailDelete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pMailDelete_post[hIndex].func;
postHookFunc(fd);
}
@@ -33962,14 +39357,14 @@ void HP_intif_pMailDelete(int fd) {
}
void HP_intif_pMailReturn(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pMailReturn_pre ) {
+ if (HPMHooks.count.HP_intif_pMailReturn_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMailReturn_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMailReturn_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pMailReturn_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -33977,9 +39372,9 @@ void HP_intif_pMailReturn(int fd) {
{
HPMHooks.source.intif.pMailReturn(fd);
}
- if( HPMHooks.count.HP_intif_pMailReturn_post ) {
+ if (HPMHooks.count.HP_intif_pMailReturn_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMailReturn_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMailReturn_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pMailReturn_post[hIndex].func;
postHookFunc(fd);
}
@@ -33988,14 +39383,14 @@ void HP_intif_pMailReturn(int fd) {
}
void HP_intif_pMailSend(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pMailSend_pre ) {
+ if (HPMHooks.count.HP_intif_pMailSend_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMailSend_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMailSend_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pMailSend_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34003,9 +39398,9 @@ void HP_intif_pMailSend(int fd) {
{
HPMHooks.source.intif.pMailSend(fd);
}
- if( HPMHooks.count.HP_intif_pMailSend_post ) {
+ if (HPMHooks.count.HP_intif_pMailSend_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMailSend_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMailSend_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pMailSend_post[hIndex].func;
postHookFunc(fd);
}
@@ -34014,14 +39409,14 @@ void HP_intif_pMailSend(int fd) {
}
void HP_intif_pAuctionResults(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pAuctionResults_pre ) {
+ if (HPMHooks.count.HP_intif_pAuctionResults_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pAuctionResults_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pAuctionResults_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pAuctionResults_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34029,9 +39424,9 @@ void HP_intif_pAuctionResults(int fd) {
{
HPMHooks.source.intif.pAuctionResults(fd);
}
- if( HPMHooks.count.HP_intif_pAuctionResults_post ) {
+ if (HPMHooks.count.HP_intif_pAuctionResults_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pAuctionResults_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pAuctionResults_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pAuctionResults_post[hIndex].func;
postHookFunc(fd);
}
@@ -34040,14 +39435,14 @@ void HP_intif_pAuctionResults(int fd) {
}
void HP_intif_pAuctionRegister(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pAuctionRegister_pre ) {
+ if (HPMHooks.count.HP_intif_pAuctionRegister_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pAuctionRegister_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pAuctionRegister_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pAuctionRegister_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34055,9 +39450,9 @@ void HP_intif_pAuctionRegister(int fd) {
{
HPMHooks.source.intif.pAuctionRegister(fd);
}
- if( HPMHooks.count.HP_intif_pAuctionRegister_post ) {
+ if (HPMHooks.count.HP_intif_pAuctionRegister_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pAuctionRegister_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pAuctionRegister_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pAuctionRegister_post[hIndex].func;
postHookFunc(fd);
}
@@ -34066,14 +39461,14 @@ void HP_intif_pAuctionRegister(int fd) {
}
void HP_intif_pAuctionCancel(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pAuctionCancel_pre ) {
+ if (HPMHooks.count.HP_intif_pAuctionCancel_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pAuctionCancel_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pAuctionCancel_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pAuctionCancel_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34081,9 +39476,9 @@ void HP_intif_pAuctionCancel(int fd) {
{
HPMHooks.source.intif.pAuctionCancel(fd);
}
- if( HPMHooks.count.HP_intif_pAuctionCancel_post ) {
+ if (HPMHooks.count.HP_intif_pAuctionCancel_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pAuctionCancel_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pAuctionCancel_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pAuctionCancel_post[hIndex].func;
postHookFunc(fd);
}
@@ -34092,14 +39487,14 @@ void HP_intif_pAuctionCancel(int fd) {
}
void HP_intif_pAuctionClose(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pAuctionClose_pre ) {
+ if (HPMHooks.count.HP_intif_pAuctionClose_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pAuctionClose_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pAuctionClose_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pAuctionClose_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34107,9 +39502,9 @@ void HP_intif_pAuctionClose(int fd) {
{
HPMHooks.source.intif.pAuctionClose(fd);
}
- if( HPMHooks.count.HP_intif_pAuctionClose_post ) {
+ if (HPMHooks.count.HP_intif_pAuctionClose_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pAuctionClose_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pAuctionClose_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pAuctionClose_post[hIndex].func;
postHookFunc(fd);
}
@@ -34118,14 +39513,14 @@ void HP_intif_pAuctionClose(int fd) {
}
void HP_intif_pAuctionMessage(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pAuctionMessage_pre ) {
+ if (HPMHooks.count.HP_intif_pAuctionMessage_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pAuctionMessage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pAuctionMessage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pAuctionMessage_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34133,9 +39528,9 @@ void HP_intif_pAuctionMessage(int fd) {
{
HPMHooks.source.intif.pAuctionMessage(fd);
}
- if( HPMHooks.count.HP_intif_pAuctionMessage_post ) {
+ if (HPMHooks.count.HP_intif_pAuctionMessage_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pAuctionMessage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pAuctionMessage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pAuctionMessage_post[hIndex].func;
postHookFunc(fd);
}
@@ -34144,14 +39539,14 @@ void HP_intif_pAuctionMessage(int fd) {
}
void HP_intif_pAuctionBid(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pAuctionBid_pre ) {
+ if (HPMHooks.count.HP_intif_pAuctionBid_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pAuctionBid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pAuctionBid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pAuctionBid_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34159,9 +39554,9 @@ void HP_intif_pAuctionBid(int fd) {
{
HPMHooks.source.intif.pAuctionBid(fd);
}
- if( HPMHooks.count.HP_intif_pAuctionBid_post ) {
+ if (HPMHooks.count.HP_intif_pAuctionBid_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pAuctionBid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pAuctionBid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pAuctionBid_post[hIndex].func;
postHookFunc(fd);
}
@@ -34170,14 +39565,14 @@ void HP_intif_pAuctionBid(int fd) {
}
void HP_intif_pItembound_ack(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pItembound_ack_pre ) {
+ if (HPMHooks.count.HP_intif_pItembound_ack_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pItembound_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pItembound_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pItembound_ack_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34185,9 +39580,9 @@ void HP_intif_pItembound_ack(int fd) {
{
HPMHooks.source.intif.pItembound_ack(fd);
}
- if( HPMHooks.count.HP_intif_pItembound_ack_post ) {
+ if (HPMHooks.count.HP_intif_pItembound_ack_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pItembound_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pItembound_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pItembound_ack_post[hIndex].func;
postHookFunc(fd);
}
@@ -34196,14 +39591,14 @@ void HP_intif_pItembound_ack(int fd) {
}
void HP_intif_pMercenaryReceived(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pMercenaryReceived_pre ) {
+ if (HPMHooks.count.HP_intif_pMercenaryReceived_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMercenaryReceived_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMercenaryReceived_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pMercenaryReceived_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34211,9 +39606,9 @@ void HP_intif_pMercenaryReceived(int fd) {
{
HPMHooks.source.intif.pMercenaryReceived(fd);
}
- if( HPMHooks.count.HP_intif_pMercenaryReceived_post ) {
+ if (HPMHooks.count.HP_intif_pMercenaryReceived_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMercenaryReceived_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMercenaryReceived_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pMercenaryReceived_post[hIndex].func;
postHookFunc(fd);
}
@@ -34222,14 +39617,14 @@ void HP_intif_pMercenaryReceived(int fd) {
}
void HP_intif_pMercenaryDeleted(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pMercenaryDeleted_pre ) {
+ if (HPMHooks.count.HP_intif_pMercenaryDeleted_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMercenaryDeleted_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMercenaryDeleted_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pMercenaryDeleted_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34237,9 +39632,9 @@ void HP_intif_pMercenaryDeleted(int fd) {
{
HPMHooks.source.intif.pMercenaryDeleted(fd);
}
- if( HPMHooks.count.HP_intif_pMercenaryDeleted_post ) {
+ if (HPMHooks.count.HP_intif_pMercenaryDeleted_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMercenaryDeleted_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMercenaryDeleted_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pMercenaryDeleted_post[hIndex].func;
postHookFunc(fd);
}
@@ -34248,14 +39643,14 @@ void HP_intif_pMercenaryDeleted(int fd) {
}
void HP_intif_pMercenarySaved(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pMercenarySaved_pre ) {
+ if (HPMHooks.count.HP_intif_pMercenarySaved_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMercenarySaved_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMercenarySaved_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pMercenarySaved_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34263,9 +39658,9 @@ void HP_intif_pMercenarySaved(int fd) {
{
HPMHooks.source.intif.pMercenarySaved(fd);
}
- if( HPMHooks.count.HP_intif_pMercenarySaved_post ) {
+ if (HPMHooks.count.HP_intif_pMercenarySaved_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMercenarySaved_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pMercenarySaved_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pMercenarySaved_post[hIndex].func;
postHookFunc(fd);
}
@@ -34274,14 +39669,14 @@ void HP_intif_pMercenarySaved(int fd) {
}
void HP_intif_pElementalReceived(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pElementalReceived_pre ) {
+ if (HPMHooks.count.HP_intif_pElementalReceived_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pElementalReceived_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pElementalReceived_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pElementalReceived_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34289,9 +39684,9 @@ void HP_intif_pElementalReceived(int fd) {
{
HPMHooks.source.intif.pElementalReceived(fd);
}
- if( HPMHooks.count.HP_intif_pElementalReceived_post ) {
+ if (HPMHooks.count.HP_intif_pElementalReceived_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pElementalReceived_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pElementalReceived_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pElementalReceived_post[hIndex].func;
postHookFunc(fd);
}
@@ -34300,14 +39695,14 @@ void HP_intif_pElementalReceived(int fd) {
}
void HP_intif_pElementalDeleted(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pElementalDeleted_pre ) {
+ if (HPMHooks.count.HP_intif_pElementalDeleted_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pElementalDeleted_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pElementalDeleted_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pElementalDeleted_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34315,9 +39710,9 @@ void HP_intif_pElementalDeleted(int fd) {
{
HPMHooks.source.intif.pElementalDeleted(fd);
}
- if( HPMHooks.count.HP_intif_pElementalDeleted_post ) {
+ if (HPMHooks.count.HP_intif_pElementalDeleted_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pElementalDeleted_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pElementalDeleted_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pElementalDeleted_post[hIndex].func;
postHookFunc(fd);
}
@@ -34326,14 +39721,14 @@ void HP_intif_pElementalDeleted(int fd) {
}
void HP_intif_pElementalSaved(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pElementalSaved_pre ) {
+ if (HPMHooks.count.HP_intif_pElementalSaved_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pElementalSaved_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pElementalSaved_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pElementalSaved_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34341,9 +39736,9 @@ void HP_intif_pElementalSaved(int fd) {
{
HPMHooks.source.intif.pElementalSaved(fd);
}
- if( HPMHooks.count.HP_intif_pElementalSaved_post ) {
+ if (HPMHooks.count.HP_intif_pElementalSaved_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pElementalSaved_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pElementalSaved_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pElementalSaved_post[hIndex].func;
postHookFunc(fd);
}
@@ -34352,14 +39747,14 @@ void HP_intif_pElementalSaved(int fd) {
}
void HP_intif_pCreatePet(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pCreatePet_pre ) {
+ if (HPMHooks.count.HP_intif_pCreatePet_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pCreatePet_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pCreatePet_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pCreatePet_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34367,9 +39762,9 @@ void HP_intif_pCreatePet(int fd) {
{
HPMHooks.source.intif.pCreatePet(fd);
}
- if( HPMHooks.count.HP_intif_pCreatePet_post ) {
+ if (HPMHooks.count.HP_intif_pCreatePet_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pCreatePet_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pCreatePet_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pCreatePet_post[hIndex].func;
postHookFunc(fd);
}
@@ -34378,14 +39773,14 @@ void HP_intif_pCreatePet(int fd) {
}
void HP_intif_pRecvPetData(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pRecvPetData_pre ) {
+ if (HPMHooks.count.HP_intif_pRecvPetData_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pRecvPetData_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pRecvPetData_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pRecvPetData_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34393,9 +39788,9 @@ void HP_intif_pRecvPetData(int fd) {
{
HPMHooks.source.intif.pRecvPetData(fd);
}
- if( HPMHooks.count.HP_intif_pRecvPetData_post ) {
+ if (HPMHooks.count.HP_intif_pRecvPetData_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pRecvPetData_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pRecvPetData_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pRecvPetData_post[hIndex].func;
postHookFunc(fd);
}
@@ -34404,14 +39799,14 @@ void HP_intif_pRecvPetData(int fd) {
}
void HP_intif_pSavePetOk(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pSavePetOk_pre ) {
+ if (HPMHooks.count.HP_intif_pSavePetOk_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pSavePetOk_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pSavePetOk_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pSavePetOk_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34419,9 +39814,9 @@ void HP_intif_pSavePetOk(int fd) {
{
HPMHooks.source.intif.pSavePetOk(fd);
}
- if( HPMHooks.count.HP_intif_pSavePetOk_post ) {
+ if (HPMHooks.count.HP_intif_pSavePetOk_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pSavePetOk_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pSavePetOk_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pSavePetOk_post[hIndex].func;
postHookFunc(fd);
}
@@ -34430,14 +39825,14 @@ void HP_intif_pSavePetOk(int fd) {
}
void HP_intif_pDeletePetOk(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pDeletePetOk_pre ) {
+ if (HPMHooks.count.HP_intif_pDeletePetOk_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pDeletePetOk_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pDeletePetOk_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pDeletePetOk_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34445,9 +39840,9 @@ void HP_intif_pDeletePetOk(int fd) {
{
HPMHooks.source.intif.pDeletePetOk(fd);
}
- if( HPMHooks.count.HP_intif_pDeletePetOk_post ) {
+ if (HPMHooks.count.HP_intif_pDeletePetOk_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pDeletePetOk_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pDeletePetOk_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pDeletePetOk_post[hIndex].func;
postHookFunc(fd);
}
@@ -34456,14 +39851,14 @@ void HP_intif_pDeletePetOk(int fd) {
}
void HP_intif_pCreateHomunculus(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pCreateHomunculus_pre ) {
+ if (HPMHooks.count.HP_intif_pCreateHomunculus_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pCreateHomunculus_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pCreateHomunculus_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pCreateHomunculus_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34471,9 +39866,9 @@ void HP_intif_pCreateHomunculus(int fd) {
{
HPMHooks.source.intif.pCreateHomunculus(fd);
}
- if( HPMHooks.count.HP_intif_pCreateHomunculus_post ) {
+ if (HPMHooks.count.HP_intif_pCreateHomunculus_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pCreateHomunculus_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pCreateHomunculus_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pCreateHomunculus_post[hIndex].func;
postHookFunc(fd);
}
@@ -34482,14 +39877,14 @@ void HP_intif_pCreateHomunculus(int fd) {
}
void HP_intif_pRecvHomunculusData(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pRecvHomunculusData_pre ) {
+ if (HPMHooks.count.HP_intif_pRecvHomunculusData_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pRecvHomunculusData_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pRecvHomunculusData_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pRecvHomunculusData_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34497,9 +39892,9 @@ void HP_intif_pRecvHomunculusData(int fd) {
{
HPMHooks.source.intif.pRecvHomunculusData(fd);
}
- if( HPMHooks.count.HP_intif_pRecvHomunculusData_post ) {
+ if (HPMHooks.count.HP_intif_pRecvHomunculusData_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pRecvHomunculusData_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pRecvHomunculusData_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pRecvHomunculusData_post[hIndex].func;
postHookFunc(fd);
}
@@ -34508,14 +39903,14 @@ void HP_intif_pRecvHomunculusData(int fd) {
}
void HP_intif_pSaveHomunculusOk(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pSaveHomunculusOk_pre ) {
+ if (HPMHooks.count.HP_intif_pSaveHomunculusOk_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pSaveHomunculusOk_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pSaveHomunculusOk_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pSaveHomunculusOk_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34523,9 +39918,9 @@ void HP_intif_pSaveHomunculusOk(int fd) {
{
HPMHooks.source.intif.pSaveHomunculusOk(fd);
}
- if( HPMHooks.count.HP_intif_pSaveHomunculusOk_post ) {
+ if (HPMHooks.count.HP_intif_pSaveHomunculusOk_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pSaveHomunculusOk_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pSaveHomunculusOk_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pSaveHomunculusOk_post[hIndex].func;
postHookFunc(fd);
}
@@ -34534,14 +39929,14 @@ void HP_intif_pSaveHomunculusOk(int fd) {
}
void HP_intif_pDeleteHomunculusOk(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_intif_pDeleteHomunculusOk_pre ) {
+ if (HPMHooks.count.HP_intif_pDeleteHomunculusOk_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pDeleteHomunculusOk_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pDeleteHomunculusOk_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_pDeleteHomunculusOk_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34549,26 +39944,182 @@ void HP_intif_pDeleteHomunculusOk(int fd) {
{
HPMHooks.source.intif.pDeleteHomunculusOk(fd);
}
- if( HPMHooks.count.HP_intif_pDeleteHomunculusOk_post ) {
+ if (HPMHooks.count.HP_intif_pDeleteHomunculusOk_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_intif_pDeleteHomunculusOk_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pDeleteHomunculusOk_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_pDeleteHomunculusOk_post[hIndex].func;
postHookFunc(fd);
}
}
return;
}
+void HP_intif_pRequestRodexOpenInbox(int fd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_intif_pRequestRodexOpenInbox_pre > 0) {
+ void (*preHookFunc) (int *fd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pRequestRodexOpenInbox_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_intif_pRequestRodexOpenInbox_pre[hIndex].func;
+ preHookFunc(&fd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.intif.pRequestRodexOpenInbox(fd);
+ }
+ if (HPMHooks.count.HP_intif_pRequestRodexOpenInbox_post > 0) {
+ void (*postHookFunc) (int fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pRequestRodexOpenInbox_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_intif_pRequestRodexOpenInbox_post[hIndex].func;
+ postHookFunc(fd);
+ }
+ }
+ return;
+}
+void HP_intif_pRodexHasNew(int fd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_intif_pRodexHasNew_pre > 0) {
+ void (*preHookFunc) (int *fd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pRodexHasNew_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_intif_pRodexHasNew_pre[hIndex].func;
+ preHookFunc(&fd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.intif.pRodexHasNew(fd);
+ }
+ if (HPMHooks.count.HP_intif_pRodexHasNew_post > 0) {
+ void (*postHookFunc) (int fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pRodexHasNew_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_intif_pRodexHasNew_post[hIndex].func;
+ postHookFunc(fd);
+ }
+ }
+ return;
+}
+void HP_intif_pRodexSendMail(int fd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_intif_pRodexSendMail_pre > 0) {
+ void (*preHookFunc) (int *fd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pRodexSendMail_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_intif_pRodexSendMail_pre[hIndex].func;
+ preHookFunc(&fd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.intif.pRodexSendMail(fd);
+ }
+ if (HPMHooks.count.HP_intif_pRodexSendMail_post > 0) {
+ void (*postHookFunc) (int fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pRodexSendMail_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_intif_pRodexSendMail_post[hIndex].func;
+ postHookFunc(fd);
+ }
+ }
+ return;
+}
+void HP_intif_pRodexCheckName(int fd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_intif_pRodexCheckName_pre > 0) {
+ void (*preHookFunc) (int *fd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pRodexCheckName_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_intif_pRodexCheckName_pre[hIndex].func;
+ preHookFunc(&fd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.intif.pRodexCheckName(fd);
+ }
+ if (HPMHooks.count.HP_intif_pRodexCheckName_post > 0) {
+ void (*postHookFunc) (int fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pRodexCheckName_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_intif_pRodexCheckName_post[hIndex].func;
+ postHookFunc(fd);
+ }
+ }
+ return;
+}
+void HP_intif_pRecvClanMemberAction(int fd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_intif_pRecvClanMemberAction_pre > 0) {
+ void (*preHookFunc) (int *fd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pRecvClanMemberAction_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_intif_pRecvClanMemberAction_pre[hIndex].func;
+ preHookFunc(&fd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.intif.pRecvClanMemberAction(fd);
+ }
+ if (HPMHooks.count.HP_intif_pRecvClanMemberAction_post > 0) {
+ void (*postHookFunc) (int fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pRecvClanMemberAction_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_intif_pRecvClanMemberAction_post[hIndex].func;
+ postHookFunc(fd);
+ }
+ }
+ return;
+}
+void HP_intif_pAchievementsLoad(int fd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_intif_pAchievementsLoad_pre > 0) {
+ void (*preHookFunc) (int *fd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pAchievementsLoad_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_intif_pAchievementsLoad_pre[hIndex].func;
+ preHookFunc(&fd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.intif.pAchievementsLoad(fd);
+ }
+ if (HPMHooks.count.HP_intif_pAchievementsLoad_post > 0) {
+ void (*postHookFunc) (int fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pAchievementsLoad_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_intif_pAchievementsLoad_post[hIndex].func;
+ postHookFunc(fd);
+ }
+ }
+ return;
+}
/* irc_bot_interface */
void HP_ircbot_init(bool minimal) {
int hIndex = 0;
- if( HPMHooks.count.HP_ircbot_init_pre ) {
+ if (HPMHooks.count.HP_ircbot_init_pre > 0) {
void (*preHookFunc) (bool *minimal);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_ircbot_init_pre[hIndex].func;
preHookFunc(&minimal);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34576,9 +40127,9 @@ void HP_ircbot_init(bool minimal) {
{
HPMHooks.source.ircbot.init(minimal);
}
- if( HPMHooks.count.HP_ircbot_init_post ) {
+ if (HPMHooks.count.HP_ircbot_init_post > 0) {
void (*postHookFunc) (bool minimal);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_ircbot_init_post[hIndex].func;
postHookFunc(minimal);
}
@@ -34587,14 +40138,14 @@ void HP_ircbot_init(bool minimal) {
}
void HP_ircbot_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_ircbot_final_pre ) {
+ if (HPMHooks.count.HP_ircbot_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_ircbot_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34602,9 +40153,9 @@ void HP_ircbot_final(void) {
{
HPMHooks.source.ircbot.final();
}
- if( HPMHooks.count.HP_ircbot_final_post ) {
+ if (HPMHooks.count.HP_ircbot_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_ircbot_final_post[hIndex].func;
postHookFunc();
}
@@ -34614,14 +40165,14 @@ void HP_ircbot_final(void) {
int HP_ircbot_parse(int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_ircbot_parse_pre ) {
+ if (HPMHooks.count.HP_ircbot_parse_pre > 0) {
int (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_parse_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_parse_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_ircbot_parse_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -34629,9 +40180,9 @@ int HP_ircbot_parse(int fd) {
{
retVal___ = HPMHooks.source.ircbot.parse(fd);
}
- if( HPMHooks.count.HP_ircbot_parse_post ) {
+ if (HPMHooks.count.HP_ircbot_parse_post > 0) {
int (*postHookFunc) (int retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_parse_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_parse_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_ircbot_parse_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -34640,14 +40191,14 @@ int HP_ircbot_parse(int fd) {
}
void HP_ircbot_parse_sub(int fd, char *str) {
int hIndex = 0;
- if( HPMHooks.count.HP_ircbot_parse_sub_pre ) {
+ if (HPMHooks.count.HP_ircbot_parse_sub_pre > 0) {
void (*preHookFunc) (int *fd, char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_parse_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_parse_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_ircbot_parse_sub_pre[hIndex].func;
preHookFunc(&fd, &str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34655,9 +40206,9 @@ void HP_ircbot_parse_sub(int fd, char *str) {
{
HPMHooks.source.ircbot.parse_sub(fd, str);
}
- if( HPMHooks.count.HP_ircbot_parse_sub_post ) {
+ if (HPMHooks.count.HP_ircbot_parse_sub_post > 0) {
void (*postHookFunc) (int fd, char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_parse_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_parse_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_ircbot_parse_sub_post[hIndex].func;
postHookFunc(fd, str);
}
@@ -34666,14 +40217,14 @@ void HP_ircbot_parse_sub(int fd, char *str) {
}
void HP_ircbot_parse_source(char *source, char *nick, char *ident, char *host) {
int hIndex = 0;
- if( HPMHooks.count.HP_ircbot_parse_source_pre ) {
+ if (HPMHooks.count.HP_ircbot_parse_source_pre > 0) {
void (*preHookFunc) (char **source, char **nick, char **ident, char **host);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_parse_source_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_parse_source_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_ircbot_parse_source_pre[hIndex].func;
preHookFunc(&source, &nick, &ident, &host);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34681,9 +40232,9 @@ void HP_ircbot_parse_source(char *source, char *nick, char *ident, char *host) {
{
HPMHooks.source.ircbot.parse_source(source, nick, ident, host);
}
- if( HPMHooks.count.HP_ircbot_parse_source_post ) {
+ if (HPMHooks.count.HP_ircbot_parse_source_post > 0) {
void (*postHookFunc) (char *source, char *nick, char *ident, char *host);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_parse_source_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_parse_source_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_ircbot_parse_source_post[hIndex].func;
postHookFunc(source, nick, ident, host);
}
@@ -34693,14 +40244,14 @@ void HP_ircbot_parse_source(char *source, char *nick, char *ident, char *host) {
struct irc_func* HP_ircbot_func_search(char *function_name) {
int hIndex = 0;
struct irc_func* retVal___ = NULL;
- if( HPMHooks.count.HP_ircbot_func_search_pre ) {
+ if (HPMHooks.count.HP_ircbot_func_search_pre > 0) {
struct irc_func* (*preHookFunc) (char **function_name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_func_search_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_func_search_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_ircbot_func_search_pre[hIndex].func;
retVal___ = preHookFunc(&function_name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -34708,9 +40259,9 @@ struct irc_func* HP_ircbot_func_search(char *function_name) {
{
retVal___ = HPMHooks.source.ircbot.func_search(function_name);
}
- if( HPMHooks.count.HP_ircbot_func_search_post ) {
+ if (HPMHooks.count.HP_ircbot_func_search_post > 0) {
struct irc_func* (*postHookFunc) (struct irc_func* retVal___, char *function_name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_func_search_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_func_search_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_ircbot_func_search_post[hIndex].func;
retVal___ = postHookFunc(retVal___, function_name);
}
@@ -34720,14 +40271,14 @@ struct irc_func* HP_ircbot_func_search(char *function_name) {
int HP_ircbot_connect_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_ircbot_connect_timer_pre ) {
+ if (HPMHooks.count.HP_ircbot_connect_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_connect_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_connect_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_ircbot_connect_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -34735,9 +40286,9 @@ int HP_ircbot_connect_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.ircbot.connect_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_ircbot_connect_timer_post ) {
+ if (HPMHooks.count.HP_ircbot_connect_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_connect_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_connect_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_ircbot_connect_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -34747,14 +40298,14 @@ int HP_ircbot_connect_timer(int tid, int64 tick, int id, intptr_t data) {
int HP_ircbot_identify_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_ircbot_identify_timer_pre ) {
+ if (HPMHooks.count.HP_ircbot_identify_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_identify_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_identify_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_ircbot_identify_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -34762,9 +40313,9 @@ int HP_ircbot_identify_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.ircbot.identify_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_ircbot_identify_timer_post ) {
+ if (HPMHooks.count.HP_ircbot_identify_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_identify_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_identify_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_ircbot_identify_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -34774,14 +40325,14 @@ int HP_ircbot_identify_timer(int tid, int64 tick, int id, intptr_t data) {
int HP_ircbot_join_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_ircbot_join_timer_pre ) {
+ if (HPMHooks.count.HP_ircbot_join_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_join_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_join_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_ircbot_join_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -34789,9 +40340,9 @@ int HP_ircbot_join_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.ircbot.join_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_ircbot_join_timer_post ) {
+ if (HPMHooks.count.HP_ircbot_join_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_join_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_join_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_ircbot_join_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -34801,14 +40352,14 @@ int HP_ircbot_join_timer(int tid, int64 tick, int id, intptr_t data) {
int HP_ircbot_queue_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_ircbot_queue_timer_pre ) {
+ if (HPMHooks.count.HP_ircbot_queue_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_queue_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_queue_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_ircbot_queue_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -34816,9 +40367,9 @@ int HP_ircbot_queue_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.ircbot.queue_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_ircbot_queue_timer_post ) {
+ if (HPMHooks.count.HP_ircbot_queue_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_queue_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_queue_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_ircbot_queue_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -34827,14 +40378,14 @@ int HP_ircbot_queue_timer(int tid, int64 tick, int id, intptr_t data) {
}
void HP_ircbot_queue(char *str) {
int hIndex = 0;
- if( HPMHooks.count.HP_ircbot_queue_pre ) {
+ if (HPMHooks.count.HP_ircbot_queue_pre > 0) {
void (*preHookFunc) (char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_queue_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_queue_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_ircbot_queue_pre[hIndex].func;
preHookFunc(&str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34842,9 +40393,9 @@ void HP_ircbot_queue(char *str) {
{
HPMHooks.source.ircbot.queue(str);
}
- if( HPMHooks.count.HP_ircbot_queue_post ) {
+ if (HPMHooks.count.HP_ircbot_queue_post > 0) {
void (*postHookFunc) (char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_queue_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_queue_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_ircbot_queue_post[hIndex].func;
postHookFunc(str);
}
@@ -34853,14 +40404,14 @@ void HP_ircbot_queue(char *str) {
}
void HP_ircbot_send(char *str, bool force) {
int hIndex = 0;
- if( HPMHooks.count.HP_ircbot_send_pre ) {
+ if (HPMHooks.count.HP_ircbot_send_pre > 0) {
void (*preHookFunc) (char **str, bool *force);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_send_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_send_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_ircbot_send_pre[hIndex].func;
preHookFunc(&str, &force);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34868,9 +40419,9 @@ void HP_ircbot_send(char *str, bool force) {
{
HPMHooks.source.ircbot.send(str, force);
}
- if( HPMHooks.count.HP_ircbot_send_post ) {
+ if (HPMHooks.count.HP_ircbot_send_post > 0) {
void (*postHookFunc) (char *str, bool force);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_send_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_send_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_ircbot_send_post[hIndex].func;
postHookFunc(str, force);
}
@@ -34879,14 +40430,14 @@ void HP_ircbot_send(char *str, bool force) {
}
void HP_ircbot_relay(const char *name, const char *msg) {
int hIndex = 0;
- if( HPMHooks.count.HP_ircbot_relay_pre ) {
+ if (HPMHooks.count.HP_ircbot_relay_pre > 0) {
void (*preHookFunc) (const char **name, const char **msg);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_relay_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_relay_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_ircbot_relay_pre[hIndex].func;
preHookFunc(&name, &msg);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34894,9 +40445,9 @@ void HP_ircbot_relay(const char *name, const char *msg) {
{
HPMHooks.source.ircbot.relay(name, msg);
}
- if( HPMHooks.count.HP_ircbot_relay_post ) {
+ if (HPMHooks.count.HP_ircbot_relay_post > 0) {
void (*postHookFunc) (const char *name, const char *msg);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_relay_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_relay_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_ircbot_relay_post[hIndex].func;
postHookFunc(name, msg);
}
@@ -34905,14 +40456,14 @@ void HP_ircbot_relay(const char *name, const char *msg) {
}
void HP_ircbot_pong(int fd, char *cmd, char *source, char *target, char *msg) {
int hIndex = 0;
- if( HPMHooks.count.HP_ircbot_pong_pre ) {
+ if (HPMHooks.count.HP_ircbot_pong_pre > 0) {
void (*preHookFunc) (int *fd, char **cmd, char **source, char **target, char **msg);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_pong_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_pong_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_ircbot_pong_pre[hIndex].func;
preHookFunc(&fd, &cmd, &source, &target, &msg);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34920,9 +40471,9 @@ void HP_ircbot_pong(int fd, char *cmd, char *source, char *target, char *msg) {
{
HPMHooks.source.ircbot.pong(fd, cmd, source, target, msg);
}
- if( HPMHooks.count.HP_ircbot_pong_post ) {
+ if (HPMHooks.count.HP_ircbot_pong_post > 0) {
void (*postHookFunc) (int fd, char *cmd, char *source, char *target, char *msg);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_pong_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_pong_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_ircbot_pong_post[hIndex].func;
postHookFunc(fd, cmd, source, target, msg);
}
@@ -34931,14 +40482,14 @@ void HP_ircbot_pong(int fd, char *cmd, char *source, char *target, char *msg) {
}
void HP_ircbot_privmsg(int fd, char *cmd, char *source, char *target, char *msg) {
int hIndex = 0;
- if( HPMHooks.count.HP_ircbot_privmsg_pre ) {
+ if (HPMHooks.count.HP_ircbot_privmsg_pre > 0) {
void (*preHookFunc) (int *fd, char **cmd, char **source, char **target, char **msg);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_privmsg_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_privmsg_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_ircbot_privmsg_pre[hIndex].func;
preHookFunc(&fd, &cmd, &source, &target, &msg);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34946,9 +40497,9 @@ void HP_ircbot_privmsg(int fd, char *cmd, char *source, char *target, char *msg)
{
HPMHooks.source.ircbot.privmsg(fd, cmd, source, target, msg);
}
- if( HPMHooks.count.HP_ircbot_privmsg_post ) {
+ if (HPMHooks.count.HP_ircbot_privmsg_post > 0) {
void (*postHookFunc) (int fd, char *cmd, char *source, char *target, char *msg);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_privmsg_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_privmsg_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_ircbot_privmsg_post[hIndex].func;
postHookFunc(fd, cmd, source, target, msg);
}
@@ -34957,14 +40508,14 @@ void HP_ircbot_privmsg(int fd, char *cmd, char *source, char *target, char *msg)
}
void HP_ircbot_privmsg_ctcp(int fd, char *cmd, char *source, char *target, char *msg) {
int hIndex = 0;
- if( HPMHooks.count.HP_ircbot_privmsg_ctcp_pre ) {
+ if (HPMHooks.count.HP_ircbot_privmsg_ctcp_pre > 0) {
void (*preHookFunc) (int *fd, char **cmd, char **source, char **target, char **msg);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_privmsg_ctcp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_privmsg_ctcp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_ircbot_privmsg_ctcp_pre[hIndex].func;
preHookFunc(&fd, &cmd, &source, &target, &msg);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34972,9 +40523,9 @@ void HP_ircbot_privmsg_ctcp(int fd, char *cmd, char *source, char *target, char
{
HPMHooks.source.ircbot.privmsg_ctcp(fd, cmd, source, target, msg);
}
- if( HPMHooks.count.HP_ircbot_privmsg_ctcp_post ) {
+ if (HPMHooks.count.HP_ircbot_privmsg_ctcp_post > 0) {
void (*postHookFunc) (int fd, char *cmd, char *source, char *target, char *msg);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_privmsg_ctcp_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_privmsg_ctcp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_ircbot_privmsg_ctcp_post[hIndex].func;
postHookFunc(fd, cmd, source, target, msg);
}
@@ -34983,14 +40534,14 @@ void HP_ircbot_privmsg_ctcp(int fd, char *cmd, char *source, char *target, char
}
void HP_ircbot_userjoin(int fd, char *cmd, char *source, char *target, char *msg) {
int hIndex = 0;
- if( HPMHooks.count.HP_ircbot_userjoin_pre ) {
+ if (HPMHooks.count.HP_ircbot_userjoin_pre > 0) {
void (*preHookFunc) (int *fd, char **cmd, char **source, char **target, char **msg);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_userjoin_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_userjoin_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_ircbot_userjoin_pre[hIndex].func;
preHookFunc(&fd, &cmd, &source, &target, &msg);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -34998,9 +40549,9 @@ void HP_ircbot_userjoin(int fd, char *cmd, char *source, char *target, char *msg
{
HPMHooks.source.ircbot.userjoin(fd, cmd, source, target, msg);
}
- if( HPMHooks.count.HP_ircbot_userjoin_post ) {
+ if (HPMHooks.count.HP_ircbot_userjoin_post > 0) {
void (*postHookFunc) (int fd, char *cmd, char *source, char *target, char *msg);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_userjoin_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_userjoin_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_ircbot_userjoin_post[hIndex].func;
postHookFunc(fd, cmd, source, target, msg);
}
@@ -35009,14 +40560,14 @@ void HP_ircbot_userjoin(int fd, char *cmd, char *source, char *target, char *msg
}
void HP_ircbot_userleave(int fd, char *cmd, char *source, char *target, char *msg) {
int hIndex = 0;
- if( HPMHooks.count.HP_ircbot_userleave_pre ) {
+ if (HPMHooks.count.HP_ircbot_userleave_pre > 0) {
void (*preHookFunc) (int *fd, char **cmd, char **source, char **target, char **msg);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_userleave_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_userleave_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_ircbot_userleave_pre[hIndex].func;
preHookFunc(&fd, &cmd, &source, &target, &msg);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -35024,9 +40575,9 @@ void HP_ircbot_userleave(int fd, char *cmd, char *source, char *target, char *ms
{
HPMHooks.source.ircbot.userleave(fd, cmd, source, target, msg);
}
- if( HPMHooks.count.HP_ircbot_userleave_post ) {
+ if (HPMHooks.count.HP_ircbot_userleave_post > 0) {
void (*postHookFunc) (int fd, char *cmd, char *source, char *target, char *msg);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_userleave_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_userleave_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_ircbot_userleave_post[hIndex].func;
postHookFunc(fd, cmd, source, target, msg);
}
@@ -35035,14 +40586,14 @@ void HP_ircbot_userleave(int fd, char *cmd, char *source, char *target, char *ms
}
void HP_ircbot_usernick(int fd, char *cmd, char *source, char *target, char *msg) {
int hIndex = 0;
- if( HPMHooks.count.HP_ircbot_usernick_pre ) {
+ if (HPMHooks.count.HP_ircbot_usernick_pre > 0) {
void (*preHookFunc) (int *fd, char **cmd, char **source, char **target, char **msg);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_usernick_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_usernick_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_ircbot_usernick_pre[hIndex].func;
preHookFunc(&fd, &cmd, &source, &target, &msg);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -35050,9 +40601,9 @@ void HP_ircbot_usernick(int fd, char *cmd, char *source, char *target, char *msg
{
HPMHooks.source.ircbot.usernick(fd, cmd, source, target, msg);
}
- if( HPMHooks.count.HP_ircbot_usernick_post ) {
+ if (HPMHooks.count.HP_ircbot_usernick_post > 0) {
void (*postHookFunc) (int fd, char *cmd, char *source, char *target, char *msg);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_usernick_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_ircbot_usernick_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_ircbot_usernick_post[hIndex].func;
postHookFunc(fd, cmd, source, target, msg);
}
@@ -35062,14 +40613,14 @@ void HP_ircbot_usernick(int fd, char *cmd, char *source, char *target, char *msg
/* itemdb_interface */
void HP_itemdb_init(bool minimal) {
int hIndex = 0;
- if( HPMHooks.count.HP_itemdb_init_pre ) {
+ if (HPMHooks.count.HP_itemdb_init_pre > 0) {
void (*preHookFunc) (bool *minimal);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_init_pre[hIndex].func;
preHookFunc(&minimal);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -35077,9 +40628,9 @@ void HP_itemdb_init(bool minimal) {
{
HPMHooks.source.itemdb.init(minimal);
}
- if( HPMHooks.count.HP_itemdb_init_post ) {
+ if (HPMHooks.count.HP_itemdb_init_post > 0) {
void (*postHookFunc) (bool minimal);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_init_post[hIndex].func;
postHookFunc(minimal);
}
@@ -35088,14 +40639,14 @@ void HP_itemdb_init(bool minimal) {
}
void HP_itemdb_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_itemdb_final_pre ) {
+ if (HPMHooks.count.HP_itemdb_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -35103,9 +40654,9 @@ void HP_itemdb_final(void) {
{
HPMHooks.source.itemdb.final();
}
- if( HPMHooks.count.HP_itemdb_final_post ) {
+ if (HPMHooks.count.HP_itemdb_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_final_post[hIndex].func;
postHookFunc();
}
@@ -35114,14 +40665,14 @@ void HP_itemdb_final(void) {
}
void HP_itemdb_reload(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_itemdb_reload_pre ) {
+ if (HPMHooks.count.HP_itemdb_reload_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_reload_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_reload_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_reload_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -35129,9 +40680,9 @@ void HP_itemdb_reload(void) {
{
HPMHooks.source.itemdb.reload();
}
- if( HPMHooks.count.HP_itemdb_reload_post ) {
+ if (HPMHooks.count.HP_itemdb_reload_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_reload_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_reload_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_reload_post[hIndex].func;
postHookFunc();
}
@@ -35140,14 +40691,14 @@ void HP_itemdb_reload(void) {
}
void HP_itemdb_name_constants(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_itemdb_name_constants_pre ) {
+ if (HPMHooks.count.HP_itemdb_name_constants_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_name_constants_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_name_constants_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_name_constants_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -35155,9 +40706,9 @@ void HP_itemdb_name_constants(void) {
{
HPMHooks.source.itemdb.name_constants();
}
- if( HPMHooks.count.HP_itemdb_name_constants_post ) {
+ if (HPMHooks.count.HP_itemdb_name_constants_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_name_constants_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_name_constants_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_name_constants_post[hIndex].func;
postHookFunc();
}
@@ -35166,14 +40717,14 @@ void HP_itemdb_name_constants(void) {
}
void HP_itemdb_read_groups(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_itemdb_read_groups_pre ) {
+ if (HPMHooks.count.HP_itemdb_read_groups_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_read_groups_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_read_groups_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_read_groups_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -35181,9 +40732,9 @@ void HP_itemdb_read_groups(void) {
{
HPMHooks.source.itemdb.read_groups();
}
- if( HPMHooks.count.HP_itemdb_read_groups_post ) {
+ if (HPMHooks.count.HP_itemdb_read_groups_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_read_groups_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_read_groups_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_read_groups_post[hIndex].func;
postHookFunc();
}
@@ -35192,14 +40743,14 @@ void HP_itemdb_read_groups(void) {
}
void HP_itemdb_read_chains(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_itemdb_read_chains_pre ) {
+ if (HPMHooks.count.HP_itemdb_read_chains_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_read_chains_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_read_chains_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_read_chains_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -35207,9 +40758,9 @@ void HP_itemdb_read_chains(void) {
{
HPMHooks.source.itemdb.read_chains();
}
- if( HPMHooks.count.HP_itemdb_read_chains_post ) {
+ if (HPMHooks.count.HP_itemdb_read_chains_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_read_chains_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_read_chains_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_read_chains_post[hIndex].func;
postHookFunc();
}
@@ -35218,14 +40769,14 @@ void HP_itemdb_read_chains(void) {
}
void HP_itemdb_read_packages(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_itemdb_read_packages_pre ) {
+ if (HPMHooks.count.HP_itemdb_read_packages_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_read_packages_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_read_packages_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_read_packages_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -35233,25 +40784,51 @@ void HP_itemdb_read_packages(void) {
{
HPMHooks.source.itemdb.read_packages();
}
- if( HPMHooks.count.HP_itemdb_read_packages_post ) {
+ if (HPMHooks.count.HP_itemdb_read_packages_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_read_packages_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_read_packages_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_read_packages_post[hIndex].func;
postHookFunc();
}
}
return;
}
+void HP_itemdb_read_options(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_itemdb_read_options_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_read_options_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_itemdb_read_options_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.itemdb.read_options();
+ }
+ if (HPMHooks.count.HP_itemdb_read_options_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_read_options_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_itemdb_read_options_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
void HP_itemdb_write_cached_packages(const char *config_filename) {
int hIndex = 0;
- if( HPMHooks.count.HP_itemdb_write_cached_packages_pre ) {
+ if (HPMHooks.count.HP_itemdb_write_cached_packages_pre > 0) {
void (*preHookFunc) (const char **config_filename);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_write_cached_packages_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_write_cached_packages_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_write_cached_packages_pre[hIndex].func;
preHookFunc(&config_filename);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -35259,9 +40836,9 @@ void HP_itemdb_write_cached_packages(const char *config_filename) {
{
HPMHooks.source.itemdb.write_cached_packages(config_filename);
}
- if( HPMHooks.count.HP_itemdb_write_cached_packages_post ) {
+ if (HPMHooks.count.HP_itemdb_write_cached_packages_post > 0) {
void (*postHookFunc) (const char *config_filename);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_write_cached_packages_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_write_cached_packages_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_write_cached_packages_post[hIndex].func;
postHookFunc(config_filename);
}
@@ -35271,14 +40848,14 @@ void HP_itemdb_write_cached_packages(const char *config_filename) {
bool HP_itemdb_read_cached_packages(const char *config_filename) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_itemdb_read_cached_packages_pre ) {
+ if (HPMHooks.count.HP_itemdb_read_cached_packages_pre > 0) {
bool (*preHookFunc) (const char **config_filename);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_read_cached_packages_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_read_cached_packages_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_read_cached_packages_pre[hIndex].func;
retVal___ = preHookFunc(&config_filename);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -35286,9 +40863,9 @@ bool HP_itemdb_read_cached_packages(const char *config_filename) {
{
retVal___ = HPMHooks.source.itemdb.read_cached_packages(config_filename);
}
- if( HPMHooks.count.HP_itemdb_read_cached_packages_post ) {
+ if (HPMHooks.count.HP_itemdb_read_cached_packages_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *config_filename);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_read_cached_packages_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_read_cached_packages_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_read_cached_packages_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config_filename);
}
@@ -35298,14 +40875,14 @@ bool HP_itemdb_read_cached_packages(const char *config_filename) {
struct item_data* HP_itemdb_name2id(const char *str) {
int hIndex = 0;
struct item_data* retVal___ = NULL;
- if( HPMHooks.count.HP_itemdb_name2id_pre ) {
+ if (HPMHooks.count.HP_itemdb_name2id_pre > 0) {
struct item_data* (*preHookFunc) (const char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_name2id_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_name2id_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_name2id_pre[hIndex].func;
retVal___ = preHookFunc(&str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -35313,9 +40890,9 @@ struct item_data* HP_itemdb_name2id(const char *str) {
{
retVal___ = HPMHooks.source.itemdb.name2id(str);
}
- if( HPMHooks.count.HP_itemdb_name2id_post ) {
+ if (HPMHooks.count.HP_itemdb_name2id_post > 0) {
struct item_data* (*postHookFunc) (struct item_data* retVal___, const char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_name2id_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_name2id_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_name2id_post[hIndex].func;
retVal___ = postHookFunc(retVal___, str);
}
@@ -35325,14 +40902,14 @@ struct item_data* HP_itemdb_name2id(const char *str) {
struct item_data* HP_itemdb_search_name(const char *name) {
int hIndex = 0;
struct item_data* retVal___ = NULL;
- if( HPMHooks.count.HP_itemdb_search_name_pre ) {
+ if (HPMHooks.count.HP_itemdb_search_name_pre > 0) {
struct item_data* (*preHookFunc) (const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_search_name_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_search_name_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_search_name_pre[hIndex].func;
retVal___ = preHookFunc(&name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -35340,9 +40917,9 @@ struct item_data* HP_itemdb_search_name(const char *name) {
{
retVal___ = HPMHooks.source.itemdb.search_name(name);
}
- if( HPMHooks.count.HP_itemdb_search_name_post ) {
+ if (HPMHooks.count.HP_itemdb_search_name_post > 0) {
struct item_data* (*postHookFunc) (struct item_data* retVal___, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_search_name_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_search_name_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_search_name_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name);
}
@@ -35352,14 +40929,14 @@ struct item_data* HP_itemdb_search_name(const char *name) {
int HP_itemdb_search_name_array(struct item_data **data, int size, const char *str, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_itemdb_search_name_array_pre ) {
+ if (HPMHooks.count.HP_itemdb_search_name_array_pre > 0) {
int (*preHookFunc) (struct item_data ***data, int *size, const char **str, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_search_name_array_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_search_name_array_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_search_name_array_pre[hIndex].func;
retVal___ = preHookFunc(&data, &size, &str, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -35367,9 +40944,9 @@ int HP_itemdb_search_name_array(struct item_data **data, int size, const char *s
{
retVal___ = HPMHooks.source.itemdb.search_name_array(data, size, str, flag);
}
- if( HPMHooks.count.HP_itemdb_search_name_array_post ) {
+ if (HPMHooks.count.HP_itemdb_search_name_array_post > 0) {
int (*postHookFunc) (int retVal___, struct item_data **data, int size, const char *str, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_search_name_array_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_search_name_array_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_search_name_array_post[hIndex].func;
retVal___ = postHookFunc(retVal___, data, size, str, flag);
}
@@ -35379,14 +40956,14 @@ int HP_itemdb_search_name_array(struct item_data **data, int size, const char *s
struct item_data* HP_itemdb_load(int nameid) {
int hIndex = 0;
struct item_data* retVal___ = NULL;
- if( HPMHooks.count.HP_itemdb_load_pre ) {
+ if (HPMHooks.count.HP_itemdb_load_pre > 0) {
struct item_data* (*preHookFunc) (int *nameid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_load_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_load_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_load_pre[hIndex].func;
retVal___ = preHookFunc(&nameid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -35394,9 +40971,9 @@ struct item_data* HP_itemdb_load(int nameid) {
{
retVal___ = HPMHooks.source.itemdb.load(nameid);
}
- if( HPMHooks.count.HP_itemdb_load_post ) {
+ if (HPMHooks.count.HP_itemdb_load_post > 0) {
struct item_data* (*postHookFunc) (struct item_data* retVal___, int nameid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_load_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_load_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_load_post[hIndex].func;
retVal___ = postHookFunc(retVal___, nameid);
}
@@ -35406,14 +40983,14 @@ struct item_data* HP_itemdb_load(int nameid) {
struct item_data* HP_itemdb_search(int nameid) {
int hIndex = 0;
struct item_data* retVal___ = NULL;
- if( HPMHooks.count.HP_itemdb_search_pre ) {
+ if (HPMHooks.count.HP_itemdb_search_pre > 0) {
struct item_data* (*preHookFunc) (int *nameid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_search_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_search_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_search_pre[hIndex].func;
retVal___ = preHookFunc(&nameid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -35421,9 +40998,9 @@ struct item_data* HP_itemdb_search(int nameid) {
{
retVal___ = HPMHooks.source.itemdb.search(nameid);
}
- if( HPMHooks.count.HP_itemdb_search_post ) {
+ if (HPMHooks.count.HP_itemdb_search_post > 0) {
struct item_data* (*postHookFunc) (struct item_data* retVal___, int nameid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_search_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_search_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_search_post[hIndex].func;
retVal___ = postHookFunc(retVal___, nameid);
}
@@ -35433,14 +41010,14 @@ struct item_data* HP_itemdb_search(int nameid) {
struct item_data* HP_itemdb_exists(int nameid) {
int hIndex = 0;
struct item_data* retVal___ = NULL;
- if( HPMHooks.count.HP_itemdb_exists_pre ) {
+ if (HPMHooks.count.HP_itemdb_exists_pre > 0) {
struct item_data* (*preHookFunc) (int *nameid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_exists_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_exists_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_exists_pre[hIndex].func;
retVal___ = preHookFunc(&nameid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -35448,26 +41025,53 @@ struct item_data* HP_itemdb_exists(int nameid) {
{
retVal___ = HPMHooks.source.itemdb.exists(nameid);
}
- if( HPMHooks.count.HP_itemdb_exists_post ) {
+ if (HPMHooks.count.HP_itemdb_exists_post > 0) {
struct item_data* (*postHookFunc) (struct item_data* retVal___, int nameid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_exists_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_exists_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_exists_post[hIndex].func;
retVal___ = postHookFunc(retVal___, nameid);
}
}
return retVal___;
}
+struct itemdb_option* HP_itemdb_option_exists(int idx) {
+ int hIndex = 0;
+ struct itemdb_option* retVal___ = NULL;
+ if (HPMHooks.count.HP_itemdb_option_exists_pre > 0) {
+ struct itemdb_option* (*preHookFunc) (int *idx);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_option_exists_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_itemdb_option_exists_pre[hIndex].func;
+ retVal___ = preHookFunc(&idx);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.itemdb.option_exists(idx);
+ }
+ if (HPMHooks.count.HP_itemdb_option_exists_post > 0) {
+ struct itemdb_option* (*postHookFunc) (struct itemdb_option* retVal___, int idx);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_option_exists_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_itemdb_option_exists_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, idx);
+ }
+ }
+ return retVal___;
+}
bool HP_itemdb_in_group(struct item_group *group, int nameid) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_itemdb_in_group_pre ) {
+ if (HPMHooks.count.HP_itemdb_in_group_pre > 0) {
bool (*preHookFunc) (struct item_group **group, int *nameid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_in_group_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_in_group_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_in_group_pre[hIndex].func;
retVal___ = preHookFunc(&group, &nameid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -35475,9 +41079,9 @@ bool HP_itemdb_in_group(struct item_group *group, int nameid) {
{
retVal___ = HPMHooks.source.itemdb.in_group(group, nameid);
}
- if( HPMHooks.count.HP_itemdb_in_group_post ) {
+ if (HPMHooks.count.HP_itemdb_in_group_post > 0) {
bool (*postHookFunc) (bool retVal___, struct item_group *group, int nameid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_in_group_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_in_group_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_in_group_post[hIndex].func;
retVal___ = postHookFunc(retVal___, group, nameid);
}
@@ -35487,14 +41091,14 @@ bool HP_itemdb_in_group(struct item_group *group, int nameid) {
int HP_itemdb_group_item(struct item_group *group) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_itemdb_group_item_pre ) {
+ if (HPMHooks.count.HP_itemdb_group_item_pre > 0) {
int (*preHookFunc) (struct item_group **group);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_group_item_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_group_item_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_group_item_pre[hIndex].func;
retVal___ = preHookFunc(&group);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -35502,9 +41106,9 @@ int HP_itemdb_group_item(struct item_group *group) {
{
retVal___ = HPMHooks.source.itemdb.group_item(group);
}
- if( HPMHooks.count.HP_itemdb_group_item_post ) {
+ if (HPMHooks.count.HP_itemdb_group_item_post > 0) {
int (*postHookFunc) (int retVal___, struct item_group *group);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_group_item_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_group_item_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_group_item_post[hIndex].func;
retVal___ = postHookFunc(retVal___, group);
}
@@ -35514,14 +41118,14 @@ int HP_itemdb_group_item(struct item_group *group) {
int HP_itemdb_chain_item(unsigned short chain_id, int *rate) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_itemdb_chain_item_pre ) {
+ if (HPMHooks.count.HP_itemdb_chain_item_pre > 0) {
int (*preHookFunc) (unsigned short *chain_id, int **rate);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_chain_item_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_chain_item_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_chain_item_pre[hIndex].func;
retVal___ = preHookFunc(&chain_id, &rate);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -35529,9 +41133,9 @@ int HP_itemdb_chain_item(unsigned short chain_id, int *rate) {
{
retVal___ = HPMHooks.source.itemdb.chain_item(chain_id, rate);
}
- if( HPMHooks.count.HP_itemdb_chain_item_post ) {
+ if (HPMHooks.count.HP_itemdb_chain_item_post > 0) {
int (*postHookFunc) (int retVal___, unsigned short chain_id, int *rate);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_chain_item_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_chain_item_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_chain_item_post[hIndex].func;
retVal___ = postHookFunc(retVal___, chain_id, rate);
}
@@ -35540,14 +41144,14 @@ int HP_itemdb_chain_item(unsigned short chain_id, int *rate) {
}
void HP_itemdb_package_item(struct map_session_data *sd, struct item_package *package) {
int hIndex = 0;
- if( HPMHooks.count.HP_itemdb_package_item_pre ) {
+ if (HPMHooks.count.HP_itemdb_package_item_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct item_package **package);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_package_item_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_package_item_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_package_item_pre[hIndex].func;
preHookFunc(&sd, &package);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -35555,9 +41159,9 @@ void HP_itemdb_package_item(struct map_session_data *sd, struct item_package *pa
{
HPMHooks.source.itemdb.package_item(sd, package);
}
- if( HPMHooks.count.HP_itemdb_package_item_post ) {
+ if (HPMHooks.count.HP_itemdb_package_item_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct item_package *package);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_package_item_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_package_item_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_package_item_post[hIndex].func;
postHookFunc(sd, package);
}
@@ -35567,16 +41171,16 @@ void HP_itemdb_package_item(struct map_session_data *sd, struct item_package *pa
int HP_itemdb_searchname_sub(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_itemdb_searchname_sub_pre ) {
+ if (HPMHooks.count.HP_itemdb_searchname_sub_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_searchname_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_searchname_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_itemdb_searchname_sub_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -35586,9 +41190,9 @@ int HP_itemdb_searchname_sub(union DBKey key, struct DBData *data, va_list ap) {
retVal___ = HPMHooks.source.itemdb.searchname_sub(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_itemdb_searchname_sub_post ) {
+ if (HPMHooks.count.HP_itemdb_searchname_sub_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_searchname_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_searchname_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_itemdb_searchname_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -35600,16 +41204,16 @@ int HP_itemdb_searchname_sub(union DBKey key, struct DBData *data, va_list ap) {
int HP_itemdb_searchname_array_sub(union DBKey key, struct DBData data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_itemdb_searchname_array_sub_pre ) {
+ if (HPMHooks.count.HP_itemdb_searchname_array_sub_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData *data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_searchname_array_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_searchname_array_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_itemdb_searchname_array_sub_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -35619,9 +41223,9 @@ int HP_itemdb_searchname_array_sub(union DBKey key, struct DBData data, va_list
retVal___ = HPMHooks.source.itemdb.searchname_array_sub(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_itemdb_searchname_array_sub_post ) {
+ if (HPMHooks.count.HP_itemdb_searchname_array_sub_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_searchname_array_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_searchname_array_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_itemdb_searchname_array_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -35633,14 +41237,14 @@ int HP_itemdb_searchname_array_sub(union DBKey key, struct DBData data, va_list
int HP_itemdb_searchrandomid(struct item_group *group) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_itemdb_searchrandomid_pre ) {
+ if (HPMHooks.count.HP_itemdb_searchrandomid_pre > 0) {
int (*preHookFunc) (struct item_group **group);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_searchrandomid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_searchrandomid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_searchrandomid_pre[hIndex].func;
retVal___ = preHookFunc(&group);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -35648,9 +41252,9 @@ int HP_itemdb_searchrandomid(struct item_group *group) {
{
retVal___ = HPMHooks.source.itemdb.searchrandomid(group);
}
- if( HPMHooks.count.HP_itemdb_searchrandomid_post ) {
+ if (HPMHooks.count.HP_itemdb_searchrandomid_post > 0) {
int (*postHookFunc) (int retVal___, struct item_group *group);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_searchrandomid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_searchrandomid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_searchrandomid_post[hIndex].func;
retVal___ = postHookFunc(retVal___, group);
}
@@ -35660,14 +41264,14 @@ int HP_itemdb_searchrandomid(struct item_group *group) {
const char* HP_itemdb_typename(int type) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_itemdb_typename_pre ) {
+ if (HPMHooks.count.HP_itemdb_typename_pre > 0) {
const char* (*preHookFunc) (int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_typename_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_typename_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_typename_pre[hIndex].func;
retVal___ = preHookFunc(&type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -35675,9 +41279,9 @@ const char* HP_itemdb_typename(int type) {
{
retVal___ = HPMHooks.source.itemdb.typename(type);
}
- if( HPMHooks.count.HP_itemdb_typename_post ) {
+ if (HPMHooks.count.HP_itemdb_typename_post > 0) {
const char* (*postHookFunc) (const char* retVal___, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_typename_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_typename_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_typename_post[hIndex].func;
retVal___ = postHookFunc(retVal___, type);
}
@@ -35686,14 +41290,14 @@ const char* HP_itemdb_typename(int type) {
}
void HP_itemdb_jobmask2mapid(uint64 *bclass, uint64 jobmask) {
int hIndex = 0;
- if( HPMHooks.count.HP_itemdb_jobmask2mapid_pre ) {
+ if (HPMHooks.count.HP_itemdb_jobmask2mapid_pre > 0) {
void (*preHookFunc) (uint64 **bclass, uint64 *jobmask);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_jobmask2mapid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_jobmask2mapid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_jobmask2mapid_pre[hIndex].func;
preHookFunc(&bclass, &jobmask);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -35701,9 +41305,9 @@ void HP_itemdb_jobmask2mapid(uint64 *bclass, uint64 jobmask) {
{
HPMHooks.source.itemdb.jobmask2mapid(bclass, jobmask);
}
- if( HPMHooks.count.HP_itemdb_jobmask2mapid_post ) {
+ if (HPMHooks.count.HP_itemdb_jobmask2mapid_post > 0) {
void (*postHookFunc) (uint64 *bclass, uint64 jobmask);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_jobmask2mapid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_jobmask2mapid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_jobmask2mapid_post[hIndex].func;
postHookFunc(bclass, jobmask);
}
@@ -35712,14 +41316,14 @@ void HP_itemdb_jobmask2mapid(uint64 *bclass, uint64 jobmask) {
}
void HP_itemdb_jobid2mapid(uint64 *bclass, int job_class, bool enable) {
int hIndex = 0;
- if( HPMHooks.count.HP_itemdb_jobid2mapid_pre ) {
+ if (HPMHooks.count.HP_itemdb_jobid2mapid_pre > 0) {
void (*preHookFunc) (uint64 **bclass, int *job_class, bool *enable);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_jobid2mapid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_jobid2mapid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_jobid2mapid_pre[hIndex].func;
preHookFunc(&bclass, &job_class, &enable);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -35727,9 +41331,9 @@ void HP_itemdb_jobid2mapid(uint64 *bclass, int job_class, bool enable) {
{
HPMHooks.source.itemdb.jobid2mapid(bclass, job_class, enable);
}
- if( HPMHooks.count.HP_itemdb_jobid2mapid_post ) {
+ if (HPMHooks.count.HP_itemdb_jobid2mapid_post > 0) {
void (*postHookFunc) (uint64 *bclass, int job_class, bool enable);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_jobid2mapid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_jobid2mapid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_jobid2mapid_post[hIndex].func;
postHookFunc(bclass, job_class, enable);
}
@@ -35738,14 +41342,14 @@ void HP_itemdb_jobid2mapid(uint64 *bclass, int job_class, bool enable) {
}
void HP_itemdb_create_dummy_data(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_itemdb_create_dummy_data_pre ) {
+ if (HPMHooks.count.HP_itemdb_create_dummy_data_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_create_dummy_data_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_create_dummy_data_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_create_dummy_data_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -35753,9 +41357,9 @@ void HP_itemdb_create_dummy_data(void) {
{
HPMHooks.source.itemdb.create_dummy_data();
}
- if( HPMHooks.count.HP_itemdb_create_dummy_data_post ) {
+ if (HPMHooks.count.HP_itemdb_create_dummy_data_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_create_dummy_data_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_create_dummy_data_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_create_dummy_data_post[hIndex].func;
postHookFunc();
}
@@ -35765,14 +41369,14 @@ void HP_itemdb_create_dummy_data(void) {
struct item_data* HP_itemdb_create_item_data(int nameid) {
int hIndex = 0;
struct item_data* retVal___ = NULL;
- if( HPMHooks.count.HP_itemdb_create_item_data_pre ) {
+ if (HPMHooks.count.HP_itemdb_create_item_data_pre > 0) {
struct item_data* (*preHookFunc) (int *nameid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_create_item_data_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_create_item_data_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_create_item_data_pre[hIndex].func;
retVal___ = preHookFunc(&nameid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -35780,9 +41384,9 @@ struct item_data* HP_itemdb_create_item_data(int nameid) {
{
retVal___ = HPMHooks.source.itemdb.create_item_data(nameid);
}
- if( HPMHooks.count.HP_itemdb_create_item_data_post ) {
+ if (HPMHooks.count.HP_itemdb_create_item_data_post > 0) {
struct item_data* (*postHookFunc) (struct item_data* retVal___, int nameid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_create_item_data_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_create_item_data_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_create_item_data_post[hIndex].func;
retVal___ = postHookFunc(retVal___, nameid);
}
@@ -35792,14 +41396,14 @@ struct item_data* HP_itemdb_create_item_data(int nameid) {
int HP_itemdb_isequip(int nameid) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_itemdb_isequip_pre ) {
+ if (HPMHooks.count.HP_itemdb_isequip_pre > 0) {
int (*preHookFunc) (int *nameid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_isequip_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_isequip_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_isequip_pre[hIndex].func;
retVal___ = preHookFunc(&nameid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -35807,9 +41411,9 @@ int HP_itemdb_isequip(int nameid) {
{
retVal___ = HPMHooks.source.itemdb.isequip(nameid);
}
- if( HPMHooks.count.HP_itemdb_isequip_post ) {
+ if (HPMHooks.count.HP_itemdb_isequip_post > 0) {
int (*postHookFunc) (int retVal___, int nameid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_isequip_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_isequip_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_isequip_post[hIndex].func;
retVal___ = postHookFunc(retVal___, nameid);
}
@@ -35819,14 +41423,14 @@ int HP_itemdb_isequip(int nameid) {
int HP_itemdb_isequip2(struct item_data *data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_itemdb_isequip2_pre ) {
+ if (HPMHooks.count.HP_itemdb_isequip2_pre > 0) {
int (*preHookFunc) (struct item_data **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_isequip2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_isequip2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_isequip2_pre[hIndex].func;
retVal___ = preHookFunc(&data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -35834,9 +41438,9 @@ int HP_itemdb_isequip2(struct item_data *data) {
{
retVal___ = HPMHooks.source.itemdb.isequip2(data);
}
- if( HPMHooks.count.HP_itemdb_isequip2_post ) {
+ if (HPMHooks.count.HP_itemdb_isequip2_post > 0) {
int (*postHookFunc) (int retVal___, struct item_data *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_isequip2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_isequip2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_isequip2_post[hIndex].func;
retVal___ = postHookFunc(retVal___, data);
}
@@ -35846,14 +41450,14 @@ int HP_itemdb_isequip2(struct item_data *data) {
int HP_itemdb_isstackable(int nameid) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_itemdb_isstackable_pre ) {
+ if (HPMHooks.count.HP_itemdb_isstackable_pre > 0) {
int (*preHookFunc) (int *nameid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_isstackable_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_isstackable_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_isstackable_pre[hIndex].func;
retVal___ = preHookFunc(&nameid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -35861,9 +41465,9 @@ int HP_itemdb_isstackable(int nameid) {
{
retVal___ = HPMHooks.source.itemdb.isstackable(nameid);
}
- if( HPMHooks.count.HP_itemdb_isstackable_post ) {
+ if (HPMHooks.count.HP_itemdb_isstackable_post > 0) {
int (*postHookFunc) (int retVal___, int nameid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_isstackable_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_isstackable_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_isstackable_post[hIndex].func;
retVal___ = postHookFunc(retVal___, nameid);
}
@@ -35873,14 +41477,14 @@ int HP_itemdb_isstackable(int nameid) {
int HP_itemdb_isstackable2(struct item_data *data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_itemdb_isstackable2_pre ) {
+ if (HPMHooks.count.HP_itemdb_isstackable2_pre > 0) {
int (*preHookFunc) (struct item_data **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_isstackable2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_isstackable2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_isstackable2_pre[hIndex].func;
retVal___ = preHookFunc(&data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -35888,9 +41492,9 @@ int HP_itemdb_isstackable2(struct item_data *data) {
{
retVal___ = HPMHooks.source.itemdb.isstackable2(data);
}
- if( HPMHooks.count.HP_itemdb_isstackable2_post ) {
+ if (HPMHooks.count.HP_itemdb_isstackable2_post > 0) {
int (*postHookFunc) (int retVal___, struct item_data *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_isstackable2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_isstackable2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_isstackable2_post[hIndex].func;
retVal___ = postHookFunc(retVal___, data);
}
@@ -35900,14 +41504,14 @@ int HP_itemdb_isstackable2(struct item_data *data) {
int HP_itemdb_isdropable_sub(struct item_data *item, int gmlv, int unused) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_itemdb_isdropable_sub_pre ) {
+ if (HPMHooks.count.HP_itemdb_isdropable_sub_pre > 0) {
int (*preHookFunc) (struct item_data **item, int *gmlv, int *unused);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_isdropable_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_isdropable_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_isdropable_sub_pre[hIndex].func;
retVal___ = preHookFunc(&item, &gmlv, &unused);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -35915,9 +41519,9 @@ int HP_itemdb_isdropable_sub(struct item_data *item, int gmlv, int unused) {
{
retVal___ = HPMHooks.source.itemdb.isdropable_sub(item, gmlv, unused);
}
- if( HPMHooks.count.HP_itemdb_isdropable_sub_post ) {
+ if (HPMHooks.count.HP_itemdb_isdropable_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct item_data *item, int gmlv, int unused);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_isdropable_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_isdropable_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_isdropable_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, item, gmlv, unused);
}
@@ -35927,14 +41531,14 @@ int HP_itemdb_isdropable_sub(struct item_data *item, int gmlv, int unused) {
int HP_itemdb_cantrade_sub(struct item_data *item, int gmlv, int gmlv2) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_itemdb_cantrade_sub_pre ) {
+ if (HPMHooks.count.HP_itemdb_cantrade_sub_pre > 0) {
int (*preHookFunc) (struct item_data **item, int *gmlv, int *gmlv2);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_cantrade_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_cantrade_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_cantrade_sub_pre[hIndex].func;
retVal___ = preHookFunc(&item, &gmlv, &gmlv2);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -35942,9 +41546,9 @@ int HP_itemdb_cantrade_sub(struct item_data *item, int gmlv, int gmlv2) {
{
retVal___ = HPMHooks.source.itemdb.cantrade_sub(item, gmlv, gmlv2);
}
- if( HPMHooks.count.HP_itemdb_cantrade_sub_post ) {
+ if (HPMHooks.count.HP_itemdb_cantrade_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct item_data *item, int gmlv, int gmlv2);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_cantrade_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_cantrade_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_cantrade_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, item, gmlv, gmlv2);
}
@@ -35954,14 +41558,14 @@ int HP_itemdb_cantrade_sub(struct item_data *item, int gmlv, int gmlv2) {
int HP_itemdb_canpartnertrade_sub(struct item_data *item, int gmlv, int gmlv2) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_itemdb_canpartnertrade_sub_pre ) {
+ if (HPMHooks.count.HP_itemdb_canpartnertrade_sub_pre > 0) {
int (*preHookFunc) (struct item_data **item, int *gmlv, int *gmlv2);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_canpartnertrade_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_canpartnertrade_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_canpartnertrade_sub_pre[hIndex].func;
retVal___ = preHookFunc(&item, &gmlv, &gmlv2);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -35969,9 +41573,9 @@ int HP_itemdb_canpartnertrade_sub(struct item_data *item, int gmlv, int gmlv2) {
{
retVal___ = HPMHooks.source.itemdb.canpartnertrade_sub(item, gmlv, gmlv2);
}
- if( HPMHooks.count.HP_itemdb_canpartnertrade_sub_post ) {
+ if (HPMHooks.count.HP_itemdb_canpartnertrade_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct item_data *item, int gmlv, int gmlv2);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_canpartnertrade_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_canpartnertrade_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_canpartnertrade_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, item, gmlv, gmlv2);
}
@@ -35981,14 +41585,14 @@ int HP_itemdb_canpartnertrade_sub(struct item_data *item, int gmlv, int gmlv2) {
int HP_itemdb_cansell_sub(struct item_data *item, int gmlv, int unused) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_itemdb_cansell_sub_pre ) {
+ if (HPMHooks.count.HP_itemdb_cansell_sub_pre > 0) {
int (*preHookFunc) (struct item_data **item, int *gmlv, int *unused);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_cansell_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_cansell_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_cansell_sub_pre[hIndex].func;
retVal___ = preHookFunc(&item, &gmlv, &unused);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -35996,9 +41600,9 @@ int HP_itemdb_cansell_sub(struct item_data *item, int gmlv, int unused) {
{
retVal___ = HPMHooks.source.itemdb.cansell_sub(item, gmlv, unused);
}
- if( HPMHooks.count.HP_itemdb_cansell_sub_post ) {
+ if (HPMHooks.count.HP_itemdb_cansell_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct item_data *item, int gmlv, int unused);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_cansell_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_cansell_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_cansell_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, item, gmlv, unused);
}
@@ -36008,14 +41612,14 @@ int HP_itemdb_cansell_sub(struct item_data *item, int gmlv, int unused) {
int HP_itemdb_cancartstore_sub(struct item_data *item, int gmlv, int unused) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_itemdb_cancartstore_sub_pre ) {
+ if (HPMHooks.count.HP_itemdb_cancartstore_sub_pre > 0) {
int (*preHookFunc) (struct item_data **item, int *gmlv, int *unused);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_cancartstore_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_cancartstore_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_cancartstore_sub_pre[hIndex].func;
retVal___ = preHookFunc(&item, &gmlv, &unused);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -36023,9 +41627,9 @@ int HP_itemdb_cancartstore_sub(struct item_data *item, int gmlv, int unused) {
{
retVal___ = HPMHooks.source.itemdb.cancartstore_sub(item, gmlv, unused);
}
- if( HPMHooks.count.HP_itemdb_cancartstore_sub_post ) {
+ if (HPMHooks.count.HP_itemdb_cancartstore_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct item_data *item, int gmlv, int unused);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_cancartstore_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_cancartstore_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_cancartstore_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, item, gmlv, unused);
}
@@ -36035,14 +41639,14 @@ int HP_itemdb_cancartstore_sub(struct item_data *item, int gmlv, int unused) {
int HP_itemdb_canstore_sub(struct item_data *item, int gmlv, int unused) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_itemdb_canstore_sub_pre ) {
+ if (HPMHooks.count.HP_itemdb_canstore_sub_pre > 0) {
int (*preHookFunc) (struct item_data **item, int *gmlv, int *unused);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_canstore_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_canstore_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_canstore_sub_pre[hIndex].func;
retVal___ = preHookFunc(&item, &gmlv, &unused);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -36050,9 +41654,9 @@ int HP_itemdb_canstore_sub(struct item_data *item, int gmlv, int unused) {
{
retVal___ = HPMHooks.source.itemdb.canstore_sub(item, gmlv, unused);
}
- if( HPMHooks.count.HP_itemdb_canstore_sub_post ) {
+ if (HPMHooks.count.HP_itemdb_canstore_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct item_data *item, int gmlv, int unused);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_canstore_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_canstore_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_canstore_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, item, gmlv, unused);
}
@@ -36062,14 +41666,14 @@ int HP_itemdb_canstore_sub(struct item_data *item, int gmlv, int unused) {
int HP_itemdb_canguildstore_sub(struct item_data *item, int gmlv, int unused) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_itemdb_canguildstore_sub_pre ) {
+ if (HPMHooks.count.HP_itemdb_canguildstore_sub_pre > 0) {
int (*preHookFunc) (struct item_data **item, int *gmlv, int *unused);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_canguildstore_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_canguildstore_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_canguildstore_sub_pre[hIndex].func;
retVal___ = preHookFunc(&item, &gmlv, &unused);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -36077,9 +41681,9 @@ int HP_itemdb_canguildstore_sub(struct item_data *item, int gmlv, int unused) {
{
retVal___ = HPMHooks.source.itemdb.canguildstore_sub(item, gmlv, unused);
}
- if( HPMHooks.count.HP_itemdb_canguildstore_sub_post ) {
+ if (HPMHooks.count.HP_itemdb_canguildstore_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct item_data *item, int gmlv, int unused);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_canguildstore_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_canguildstore_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_canguildstore_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, item, gmlv, unused);
}
@@ -36089,14 +41693,14 @@ int HP_itemdb_canguildstore_sub(struct item_data *item, int gmlv, int unused) {
int HP_itemdb_canmail_sub(struct item_data *item, int gmlv, int unused) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_itemdb_canmail_sub_pre ) {
+ if (HPMHooks.count.HP_itemdb_canmail_sub_pre > 0) {
int (*preHookFunc) (struct item_data **item, int *gmlv, int *unused);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_canmail_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_canmail_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_canmail_sub_pre[hIndex].func;
retVal___ = preHookFunc(&item, &gmlv, &unused);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -36104,9 +41708,9 @@ int HP_itemdb_canmail_sub(struct item_data *item, int gmlv, int unused) {
{
retVal___ = HPMHooks.source.itemdb.canmail_sub(item, gmlv, unused);
}
- if( HPMHooks.count.HP_itemdb_canmail_sub_post ) {
+ if (HPMHooks.count.HP_itemdb_canmail_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct item_data *item, int gmlv, int unused);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_canmail_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_canmail_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_canmail_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, item, gmlv, unused);
}
@@ -36116,14 +41720,14 @@ int HP_itemdb_canmail_sub(struct item_data *item, int gmlv, int unused) {
int HP_itemdb_canauction_sub(struct item_data *item, int gmlv, int unused) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_itemdb_canauction_sub_pre ) {
+ if (HPMHooks.count.HP_itemdb_canauction_sub_pre > 0) {
int (*preHookFunc) (struct item_data **item, int *gmlv, int *unused);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_canauction_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_canauction_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_canauction_sub_pre[hIndex].func;
retVal___ = preHookFunc(&item, &gmlv, &unused);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -36131,9 +41735,9 @@ int HP_itemdb_canauction_sub(struct item_data *item, int gmlv, int unused) {
{
retVal___ = HPMHooks.source.itemdb.canauction_sub(item, gmlv, unused);
}
- if( HPMHooks.count.HP_itemdb_canauction_sub_post ) {
+ if (HPMHooks.count.HP_itemdb_canauction_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct item_data *item, int gmlv, int unused);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_canauction_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_canauction_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_canauction_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, item, gmlv, unused);
}
@@ -36143,14 +41747,14 @@ int HP_itemdb_canauction_sub(struct item_data *item, int gmlv, int unused) {
int HP_itemdb_isrestricted(struct item *item, int gmlv, int gmlv2, int ( *func ) (struct item_data *, int, int)) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_itemdb_isrestricted_pre ) {
+ if (HPMHooks.count.HP_itemdb_isrestricted_pre > 0) {
int (*preHookFunc) (struct item **item, int *gmlv, int *gmlv2, int ( **func ) (struct item_data *, int, int));
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_isrestricted_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_isrestricted_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_isrestricted_pre[hIndex].func;
retVal___ = preHookFunc(&item, &gmlv, &gmlv2, &func);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -36158,9 +41762,9 @@ int HP_itemdb_isrestricted(struct item *item, int gmlv, int gmlv2, int ( *func )
{
retVal___ = HPMHooks.source.itemdb.isrestricted(item, gmlv, gmlv2, func);
}
- if( HPMHooks.count.HP_itemdb_isrestricted_post ) {
+ if (HPMHooks.count.HP_itemdb_isrestricted_post > 0) {
int (*postHookFunc) (int retVal___, struct item *item, int gmlv, int gmlv2, int ( *func ) (struct item_data *, int, int));
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_isrestricted_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_isrestricted_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_isrestricted_post[hIndex].func;
retVal___ = postHookFunc(retVal___, item, gmlv, gmlv2, func);
}
@@ -36170,14 +41774,14 @@ int HP_itemdb_isrestricted(struct item *item, int gmlv, int gmlv2, int ( *func )
int HP_itemdb_isidentified(int nameid) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_itemdb_isidentified_pre ) {
+ if (HPMHooks.count.HP_itemdb_isidentified_pre > 0) {
int (*preHookFunc) (int *nameid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_isidentified_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_isidentified_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_isidentified_pre[hIndex].func;
retVal___ = preHookFunc(&nameid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -36185,9 +41789,9 @@ int HP_itemdb_isidentified(int nameid) {
{
retVal___ = HPMHooks.source.itemdb.isidentified(nameid);
}
- if( HPMHooks.count.HP_itemdb_isidentified_post ) {
+ if (HPMHooks.count.HP_itemdb_isidentified_post > 0) {
int (*postHookFunc) (int retVal___, int nameid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_isidentified_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_isidentified_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_isidentified_post[hIndex].func;
retVal___ = postHookFunc(retVal___, nameid);
}
@@ -36197,14 +41801,14 @@ int HP_itemdb_isidentified(int nameid) {
int HP_itemdb_isidentified2(struct item_data *data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_itemdb_isidentified2_pre ) {
+ if (HPMHooks.count.HP_itemdb_isidentified2_pre > 0) {
int (*preHookFunc) (struct item_data **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_isidentified2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_isidentified2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_isidentified2_pre[hIndex].func;
retVal___ = preHookFunc(&data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -36212,9 +41816,9 @@ int HP_itemdb_isidentified2(struct item_data *data) {
{
retVal___ = HPMHooks.source.itemdb.isidentified2(data);
}
- if( HPMHooks.count.HP_itemdb_isidentified2_post ) {
+ if (HPMHooks.count.HP_itemdb_isidentified2_post > 0) {
int (*postHookFunc) (int retVal___, struct item_data *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_isidentified2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_isidentified2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_isidentified2_post[hIndex].func;
retVal___ = postHookFunc(retVal___, data);
}
@@ -36224,14 +41828,14 @@ int HP_itemdb_isidentified2(struct item_data *data) {
int HP_itemdb_combo_split_atoi(char *str, int *val) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_itemdb_combo_split_atoi_pre ) {
+ if (HPMHooks.count.HP_itemdb_combo_split_atoi_pre > 0) {
int (*preHookFunc) (char **str, int **val);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_combo_split_atoi_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_combo_split_atoi_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_combo_split_atoi_pre[hIndex].func;
retVal___ = preHookFunc(&str, &val);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -36239,9 +41843,9 @@ int HP_itemdb_combo_split_atoi(char *str, int *val) {
{
retVal___ = HPMHooks.source.itemdb.combo_split_atoi(str, val);
}
- if( HPMHooks.count.HP_itemdb_combo_split_atoi_post ) {
+ if (HPMHooks.count.HP_itemdb_combo_split_atoi_post > 0) {
int (*postHookFunc) (int retVal___, char *str, int *val);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_combo_split_atoi_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_combo_split_atoi_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_combo_split_atoi_post[hIndex].func;
retVal___ = postHookFunc(retVal___, str, val);
}
@@ -36250,14 +41854,14 @@ int HP_itemdb_combo_split_atoi(char *str, int *val) {
}
void HP_itemdb_read_combos(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_itemdb_read_combos_pre ) {
+ if (HPMHooks.count.HP_itemdb_read_combos_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_read_combos_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_read_combos_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_read_combos_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -36265,9 +41869,9 @@ void HP_itemdb_read_combos(void) {
{
HPMHooks.source.itemdb.read_combos();
}
- if( HPMHooks.count.HP_itemdb_read_combos_post ) {
+ if (HPMHooks.count.HP_itemdb_read_combos_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_read_combos_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_read_combos_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_read_combos_post[hIndex].func;
postHookFunc();
}
@@ -36277,14 +41881,14 @@ void HP_itemdb_read_combos(void) {
int HP_itemdb_gendercheck(struct item_data *id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_itemdb_gendercheck_pre ) {
+ if (HPMHooks.count.HP_itemdb_gendercheck_pre > 0) {
int (*preHookFunc) (struct item_data **id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_gendercheck_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_gendercheck_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_gendercheck_pre[hIndex].func;
retVal___ = preHookFunc(&id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -36292,9 +41896,9 @@ int HP_itemdb_gendercheck(struct item_data *id) {
{
retVal___ = HPMHooks.source.itemdb.gendercheck(id);
}
- if( HPMHooks.count.HP_itemdb_gendercheck_post ) {
+ if (HPMHooks.count.HP_itemdb_gendercheck_post > 0) {
int (*postHookFunc) (int retVal___, struct item_data *id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_gendercheck_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_gendercheck_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_gendercheck_post[hIndex].func;
retVal___ = postHookFunc(retVal___, id);
}
@@ -36304,14 +41908,14 @@ int HP_itemdb_gendercheck(struct item_data *id) {
int HP_itemdb_validate_entry(struct item_data *entry, int n, const char *source) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_itemdb_validate_entry_pre ) {
+ if (HPMHooks.count.HP_itemdb_validate_entry_pre > 0) {
int (*preHookFunc) (struct item_data **entry, int *n, const char **source);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_validate_entry_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_validate_entry_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_validate_entry_pre[hIndex].func;
retVal___ = preHookFunc(&entry, &n, &source);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -36319,25 +41923,51 @@ int HP_itemdb_validate_entry(struct item_data *entry, int n, const char *source)
{
retVal___ = HPMHooks.source.itemdb.validate_entry(entry, n, source);
}
- if( HPMHooks.count.HP_itemdb_validate_entry_post ) {
+ if (HPMHooks.count.HP_itemdb_validate_entry_post > 0) {
int (*postHookFunc) (int retVal___, struct item_data *entry, int n, const char *source);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_validate_entry_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_validate_entry_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_validate_entry_post[hIndex].func;
retVal___ = postHookFunc(retVal___, entry, n, source);
}
}
return retVal___;
}
+void HP_itemdb_readdb_options_additional_fields(struct itemdb_option *ito, struct config_setting_t *t, const char *source) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_itemdb_readdb_options_additional_fields_pre > 0) {
+ void (*preHookFunc) (struct itemdb_option **ito, struct config_setting_t **t, const char **source);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_readdb_options_additional_fields_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_itemdb_readdb_options_additional_fields_pre[hIndex].func;
+ preHookFunc(&ito, &t, &source);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.itemdb.readdb_options_additional_fields(ito, t, source);
+ }
+ if (HPMHooks.count.HP_itemdb_readdb_options_additional_fields_post > 0) {
+ void (*postHookFunc) (struct itemdb_option *ito, struct config_setting_t *t, const char *source);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_readdb_options_additional_fields_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_itemdb_readdb_options_additional_fields_post[hIndex].func;
+ postHookFunc(ito, t, source);
+ }
+ }
+ return;
+}
void HP_itemdb_readdb_additional_fields(int itemid, struct config_setting_t *it, int n, const char *source) {
int hIndex = 0;
- if( HPMHooks.count.HP_itemdb_readdb_additional_fields_pre ) {
+ if (HPMHooks.count.HP_itemdb_readdb_additional_fields_pre > 0) {
void (*preHookFunc) (int *itemid, struct config_setting_t **it, int *n, const char **source);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_readdb_additional_fields_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_readdb_additional_fields_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_readdb_additional_fields_pre[hIndex].func;
preHookFunc(&itemid, &it, &n, &source);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -36345,9 +41975,9 @@ void HP_itemdb_readdb_additional_fields(int itemid, struct config_setting_t *it,
{
HPMHooks.source.itemdb.readdb_additional_fields(itemid, it, n, source);
}
- if( HPMHooks.count.HP_itemdb_readdb_additional_fields_post ) {
+ if (HPMHooks.count.HP_itemdb_readdb_additional_fields_post > 0) {
void (*postHookFunc) (int itemid, struct config_setting_t *it, int n, const char *source);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_readdb_additional_fields_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_readdb_additional_fields_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_readdb_additional_fields_post[hIndex].func;
postHookFunc(itemid, it, n, source);
}
@@ -36356,14 +41986,14 @@ void HP_itemdb_readdb_additional_fields(int itemid, struct config_setting_t *it,
}
void HP_itemdb_readdb_job_sub(struct item_data *id, struct config_setting_t *t) {
int hIndex = 0;
- if( HPMHooks.count.HP_itemdb_readdb_job_sub_pre ) {
+ if (HPMHooks.count.HP_itemdb_readdb_job_sub_pre > 0) {
void (*preHookFunc) (struct item_data **id, struct config_setting_t **t);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_readdb_job_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_readdb_job_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_readdb_job_sub_pre[hIndex].func;
preHookFunc(&id, &t);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -36371,9 +42001,9 @@ void HP_itemdb_readdb_job_sub(struct item_data *id, struct config_setting_t *t)
{
HPMHooks.source.itemdb.readdb_job_sub(id, t);
}
- if( HPMHooks.count.HP_itemdb_readdb_job_sub_post ) {
+ if (HPMHooks.count.HP_itemdb_readdb_job_sub_post > 0) {
void (*postHookFunc) (struct item_data *id, struct config_setting_t *t);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_readdb_job_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_readdb_job_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_readdb_job_sub_post[hIndex].func;
postHookFunc(id, t);
}
@@ -36383,14 +42013,14 @@ void HP_itemdb_readdb_job_sub(struct item_data *id, struct config_setting_t *t)
int HP_itemdb_readdb_libconfig_sub(struct config_setting_t *it, int n, const char *source) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_itemdb_readdb_libconfig_sub_pre ) {
+ if (HPMHooks.count.HP_itemdb_readdb_libconfig_sub_pre > 0) {
int (*preHookFunc) (struct config_setting_t **it, int *n, const char **source);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_readdb_libconfig_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_readdb_libconfig_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_readdb_libconfig_sub_pre[hIndex].func;
retVal___ = preHookFunc(&it, &n, &source);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -36398,9 +42028,9 @@ int HP_itemdb_readdb_libconfig_sub(struct config_setting_t *it, int n, const cha
{
retVal___ = HPMHooks.source.itemdb.readdb_libconfig_sub(it, n, source);
}
- if( HPMHooks.count.HP_itemdb_readdb_libconfig_sub_post ) {
+ if (HPMHooks.count.HP_itemdb_readdb_libconfig_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *it, int n, const char *source);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_readdb_libconfig_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_readdb_libconfig_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_readdb_libconfig_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, it, n, source);
}
@@ -36410,14 +42040,14 @@ int HP_itemdb_readdb_libconfig_sub(struct config_setting_t *it, int n, const cha
int HP_itemdb_readdb_libconfig(const char *filename) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_itemdb_readdb_libconfig_pre ) {
+ if (HPMHooks.count.HP_itemdb_readdb_libconfig_pre > 0) {
int (*preHookFunc) (const char **filename);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_readdb_libconfig_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_readdb_libconfig_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_readdb_libconfig_pre[hIndex].func;
retVal___ = preHookFunc(&filename);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -36425,9 +42055,9 @@ int HP_itemdb_readdb_libconfig(const char *filename) {
{
retVal___ = HPMHooks.source.itemdb.readdb_libconfig(filename);
}
- if( HPMHooks.count.HP_itemdb_readdb_libconfig_post ) {
+ if (HPMHooks.count.HP_itemdb_readdb_libconfig_post > 0) {
int (*postHookFunc) (int retVal___, const char *filename);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_readdb_libconfig_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_readdb_libconfig_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_readdb_libconfig_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename);
}
@@ -36437,14 +42067,14 @@ int HP_itemdb_readdb_libconfig(const char *filename) {
uint64 HP_itemdb_unique_id(struct map_session_data *sd) {
int hIndex = 0;
uint64 retVal___ = 0;
- if( HPMHooks.count.HP_itemdb_unique_id_pre ) {
+ if (HPMHooks.count.HP_itemdb_unique_id_pre > 0) {
uint64 (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_unique_id_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_unique_id_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_unique_id_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -36452,9 +42082,9 @@ uint64 HP_itemdb_unique_id(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.itemdb.unique_id(sd);
}
- if( HPMHooks.count.HP_itemdb_unique_id_post ) {
+ if (HPMHooks.count.HP_itemdb_unique_id_post > 0) {
uint64 (*postHookFunc) (uint64 retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_unique_id_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_unique_id_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_unique_id_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -36463,14 +42093,14 @@ uint64 HP_itemdb_unique_id(struct map_session_data *sd) {
}
void HP_itemdb_read(bool minimal) {
int hIndex = 0;
- if( HPMHooks.count.HP_itemdb_read_pre ) {
+ if (HPMHooks.count.HP_itemdb_read_pre > 0) {
void (*preHookFunc) (bool *minimal);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_read_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_read_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_read_pre[hIndex].func;
preHookFunc(&minimal);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -36478,9 +42108,9 @@ void HP_itemdb_read(bool minimal) {
{
HPMHooks.source.itemdb.read(minimal);
}
- if( HPMHooks.count.HP_itemdb_read_post ) {
+ if (HPMHooks.count.HP_itemdb_read_post > 0) {
void (*postHookFunc) (bool minimal);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_read_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_read_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_read_post[hIndex].func;
postHookFunc(minimal);
}
@@ -36489,14 +42119,14 @@ void HP_itemdb_read(bool minimal) {
}
void HP_itemdb_destroy_item_data(struct item_data *self, int free_self) {
int hIndex = 0;
- if( HPMHooks.count.HP_itemdb_destroy_item_data_pre ) {
+ if (HPMHooks.count.HP_itemdb_destroy_item_data_pre > 0) {
void (*preHookFunc) (struct item_data **self, int *free_self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_destroy_item_data_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_destroy_item_data_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_destroy_item_data_pre[hIndex].func;
preHookFunc(&self, &free_self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -36504,9 +42134,9 @@ void HP_itemdb_destroy_item_data(struct item_data *self, int free_self) {
{
HPMHooks.source.itemdb.destroy_item_data(self, free_self);
}
- if( HPMHooks.count.HP_itemdb_destroy_item_data_post ) {
+ if (HPMHooks.count.HP_itemdb_destroy_item_data_post > 0) {
void (*postHookFunc) (struct item_data *self, int free_self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_destroy_item_data_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_destroy_item_data_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_destroy_item_data_post[hIndex].func;
postHookFunc(self, free_self);
}
@@ -36516,16 +42146,16 @@ void HP_itemdb_destroy_item_data(struct item_data *self, int free_self) {
int HP_itemdb_final_sub(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_itemdb_final_sub_pre ) {
+ if (HPMHooks.count.HP_itemdb_final_sub_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_final_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_final_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_itemdb_final_sub_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -36535,9 +42165,9 @@ int HP_itemdb_final_sub(union DBKey key, struct DBData *data, va_list ap) {
retVal___ = HPMHooks.source.itemdb.final_sub(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_itemdb_final_sub_post ) {
+ if (HPMHooks.count.HP_itemdb_final_sub_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_final_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_final_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_itemdb_final_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -36546,16 +42176,49 @@ int HP_itemdb_final_sub(union DBKey key, struct DBData *data, va_list ap) {
}
return retVal___;
}
+int HP_itemdb_options_final_sub(union DBKey key, struct DBData *data, va_list ap) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_itemdb_options_final_sub_pre > 0) {
+ int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_options_final_sub_pre; hIndex++) {
+ va_list ap___copy; va_copy(ap___copy, ap);
+ preHookFunc = HPMHooks.list.HP_itemdb_options_final_sub_pre[hIndex].func;
+ retVal___ = preHookFunc(&key, &data, ap___copy);
+ va_end(ap___copy);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ va_list ap___copy; va_copy(ap___copy, ap);
+ retVal___ = HPMHooks.source.itemdb.options_final_sub(key, data, ap___copy);
+ va_end(ap___copy);
+ }
+ if (HPMHooks.count.HP_itemdb_options_final_sub_post > 0) {
+ int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_options_final_sub_post; hIndex++) {
+ va_list ap___copy; va_copy(ap___copy, ap);
+ postHookFunc = HPMHooks.list.HP_itemdb_options_final_sub_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, key, data, ap___copy);
+ va_end(ap___copy);
+ }
+ }
+ return retVal___;
+}
void HP_itemdb_clear(bool total) {
int hIndex = 0;
- if( HPMHooks.count.HP_itemdb_clear_pre ) {
+ if (HPMHooks.count.HP_itemdb_clear_pre > 0) {
void (*preHookFunc) (bool *total);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_clear_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_clear_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_clear_pre[hIndex].func;
preHookFunc(&total);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -36563,26 +42226,26 @@ void HP_itemdb_clear(bool total) {
{
HPMHooks.source.itemdb.clear(total);
}
- if( HPMHooks.count.HP_itemdb_clear_post ) {
+ if (HPMHooks.count.HP_itemdb_clear_post > 0) {
void (*postHookFunc) (bool total);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_clear_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_clear_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_clear_post[hIndex].func;
postHookFunc(total);
}
}
return;
}
-struct item_combo* HP_itemdb_id2combo(unsigned short id) {
+struct item_combo* HP_itemdb_id2combo(int id) {
int hIndex = 0;
struct item_combo* retVal___ = NULL;
- if( HPMHooks.count.HP_itemdb_id2combo_pre ) {
- struct item_combo* (*preHookFunc) (unsigned short *id);
+ if (HPMHooks.count.HP_itemdb_id2combo_pre > 0) {
+ struct item_combo* (*preHookFunc) (int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_id2combo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_id2combo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_id2combo_pre[hIndex].func;
retVal___ = preHookFunc(&id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -36590,9 +42253,9 @@ struct item_combo* HP_itemdb_id2combo(unsigned short id) {
{
retVal___ = HPMHooks.source.itemdb.id2combo(id);
}
- if( HPMHooks.count.HP_itemdb_id2combo_post ) {
- struct item_combo* (*postHookFunc) (struct item_combo* retVal___, unsigned short id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_id2combo_post; hIndex++ ) {
+ if (HPMHooks.count.HP_itemdb_id2combo_post > 0) {
+ struct item_combo* (*postHookFunc) (struct item_combo* retVal___, int id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_id2combo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_id2combo_post[hIndex].func;
retVal___ = postHookFunc(retVal___, id);
}
@@ -36602,14 +42265,14 @@ struct item_combo* HP_itemdb_id2combo(unsigned short id) {
bool HP_itemdb_is_item_usable(struct item_data *item) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_itemdb_is_item_usable_pre ) {
+ if (HPMHooks.count.HP_itemdb_is_item_usable_pre > 0) {
bool (*preHookFunc) (struct item_data **item);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_is_item_usable_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_is_item_usable_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_is_item_usable_pre[hIndex].func;
retVal___ = preHookFunc(&item);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -36617,9 +42280,9 @@ bool HP_itemdb_is_item_usable(struct item_data *item) {
{
retVal___ = HPMHooks.source.itemdb.is_item_usable(item);
}
- if( HPMHooks.count.HP_itemdb_is_item_usable_post ) {
+ if (HPMHooks.count.HP_itemdb_is_item_usable_post > 0) {
bool (*postHookFunc) (bool retVal___, struct item_data *item);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_is_item_usable_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_is_item_usable_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_is_item_usable_post[hIndex].func;
retVal___ = postHookFunc(retVal___, item);
}
@@ -36629,14 +42292,14 @@ bool HP_itemdb_is_item_usable(struct item_data *item) {
bool HP_itemdb_lookup_const(const struct config_setting_t *it, const char *name, int *value) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_itemdb_lookup_const_pre ) {
+ if (HPMHooks.count.HP_itemdb_lookup_const_pre > 0) {
bool (*preHookFunc) (const struct config_setting_t **it, const char **name, int **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_lookup_const_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_lookup_const_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_lookup_const_pre[hIndex].func;
retVal___ = preHookFunc(&it, &name, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -36644,27 +42307,87 @@ bool HP_itemdb_lookup_const(const struct config_setting_t *it, const char *name,
{
retVal___ = HPMHooks.source.itemdb.lookup_const(it, name, value);
}
- if( HPMHooks.count.HP_itemdb_lookup_const_post ) {
+ if (HPMHooks.count.HP_itemdb_lookup_const_post > 0) {
bool (*postHookFunc) (bool retVal___, const struct config_setting_t *it, const char *name, int *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_lookup_const_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_lookup_const_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_lookup_const_post[hIndex].func;
retVal___ = postHookFunc(retVal___, it, name, value);
}
}
return retVal___;
}
+bool HP_itemdb_lookup_const_mask(const struct config_setting_t *it, const char *name, int *value) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_itemdb_lookup_const_mask_pre > 0) {
+ bool (*preHookFunc) (const struct config_setting_t **it, const char **name, int **value);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_lookup_const_mask_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_itemdb_lookup_const_mask_pre[hIndex].func;
+ retVal___ = preHookFunc(&it, &name, &value);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.itemdb.lookup_const_mask(it, name, value);
+ }
+ if (HPMHooks.count.HP_itemdb_lookup_const_mask_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const struct config_setting_t *it, const char *name, int *value);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_lookup_const_mask_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_itemdb_lookup_const_mask_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, it, name, value);
+ }
+ }
+ return retVal___;
+}
+int HP_itemdb_addname_sub(union DBKey key, struct DBData *data, va_list ap) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_itemdb_addname_sub_pre > 0) {
+ int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_addname_sub_pre; hIndex++) {
+ va_list ap___copy; va_copy(ap___copy, ap);
+ preHookFunc = HPMHooks.list.HP_itemdb_addname_sub_pre[hIndex].func;
+ retVal___ = preHookFunc(&key, &data, ap___copy);
+ va_end(ap___copy);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ va_list ap___copy; va_copy(ap___copy, ap);
+ retVal___ = HPMHooks.source.itemdb.addname_sub(key, data, ap___copy);
+ va_end(ap___copy);
+ }
+ if (HPMHooks.count.HP_itemdb_addname_sub_post > 0) {
+ int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_addname_sub_post; hIndex++) {
+ va_list ap___copy; va_copy(ap___copy, ap);
+ postHookFunc = HPMHooks.list.HP_itemdb_addname_sub_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, key, data, ap___copy);
+ va_end(ap___copy);
+ }
+ }
+ return retVal___;
+}
/* libconfig_interface */
int HP_libconfig_read(struct config_t *config, FILE *stream) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_read_pre ) {
+ if (HPMHooks.count.HP_libconfig_read_pre > 0) {
int (*preHookFunc) (struct config_t **config, FILE **stream);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_read_pre[hIndex].func;
retVal___ = preHookFunc(&config, &stream);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -36672,9 +42395,9 @@ int HP_libconfig_read(struct config_t *config, FILE *stream) {
{
retVal___ = HPMHooks.source.libconfig.read(config, stream);
}
- if( HPMHooks.count.HP_libconfig_read_post ) {
+ if (HPMHooks.count.HP_libconfig_read_post > 0) {
int (*postHookFunc) (int retVal___, struct config_t *config, FILE *stream);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_read_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, stream);
}
@@ -36683,14 +42406,14 @@ int HP_libconfig_read(struct config_t *config, FILE *stream) {
}
void HP_libconfig_write(const struct config_t *config, FILE *stream) {
int hIndex = 0;
- if( HPMHooks.count.HP_libconfig_write_pre ) {
+ if (HPMHooks.count.HP_libconfig_write_pre > 0) {
void (*preHookFunc) (const struct config_t **config, FILE **stream);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_write_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_write_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_write_pre[hIndex].func;
preHookFunc(&config, &stream);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -36698,9 +42421,9 @@ void HP_libconfig_write(const struct config_t *config, FILE *stream) {
{
HPMHooks.source.libconfig.write(config, stream);
}
- if( HPMHooks.count.HP_libconfig_write_post ) {
+ if (HPMHooks.count.HP_libconfig_write_post > 0) {
void (*postHookFunc) (const struct config_t *config, FILE *stream);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_write_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_write_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_write_post[hIndex].func;
postHookFunc(config, stream);
}
@@ -36709,14 +42432,14 @@ void HP_libconfig_write(const struct config_t *config, FILE *stream) {
}
void HP_libconfig_set_options(struct config_t *config, int options) {
int hIndex = 0;
- if( HPMHooks.count.HP_libconfig_set_options_pre ) {
+ if (HPMHooks.count.HP_libconfig_set_options_pre > 0) {
void (*preHookFunc) (struct config_t **config, int *options);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_options_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_options_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_set_options_pre[hIndex].func;
preHookFunc(&config, &options);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -36724,9 +42447,9 @@ void HP_libconfig_set_options(struct config_t *config, int options) {
{
HPMHooks.source.libconfig.set_options(config, options);
}
- if( HPMHooks.count.HP_libconfig_set_options_post ) {
+ if (HPMHooks.count.HP_libconfig_set_options_post > 0) {
void (*postHookFunc) (struct config_t *config, int options);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_options_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_options_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_set_options_post[hIndex].func;
postHookFunc(config, options);
}
@@ -36736,14 +42459,14 @@ void HP_libconfig_set_options(struct config_t *config, int options) {
int HP_libconfig_get_options(const struct config_t *config) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_get_options_pre ) {
+ if (HPMHooks.count.HP_libconfig_get_options_pre > 0) {
int (*preHookFunc) (const struct config_t **config);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_get_options_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_get_options_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_get_options_pre[hIndex].func;
retVal___ = preHookFunc(&config);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -36751,9 +42474,9 @@ int HP_libconfig_get_options(const struct config_t *config) {
{
retVal___ = HPMHooks.source.libconfig.get_options(config);
}
- if( HPMHooks.count.HP_libconfig_get_options_post ) {
+ if (HPMHooks.count.HP_libconfig_get_options_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_t *config);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_get_options_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_get_options_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_get_options_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config);
}
@@ -36763,14 +42486,14 @@ int HP_libconfig_get_options(const struct config_t *config) {
int HP_libconfig_read_string(struct config_t *config, const char *str) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_read_string_pre ) {
+ if (HPMHooks.count.HP_libconfig_read_string_pre > 0) {
int (*preHookFunc) (struct config_t **config, const char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_string_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_string_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_read_string_pre[hIndex].func;
retVal___ = preHookFunc(&config, &str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -36778,9 +42501,9 @@ int HP_libconfig_read_string(struct config_t *config, const char *str) {
{
retVal___ = HPMHooks.source.libconfig.read_string(config, str);
}
- if( HPMHooks.count.HP_libconfig_read_string_post ) {
+ if (HPMHooks.count.HP_libconfig_read_string_post > 0) {
int (*postHookFunc) (int retVal___, struct config_t *config, const char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_string_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_string_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_read_string_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, str);
}
@@ -36790,14 +42513,14 @@ int HP_libconfig_read_string(struct config_t *config, const char *str) {
int HP_libconfig_read_file_src(struct config_t *config, const char *filename) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_read_file_src_pre ) {
+ if (HPMHooks.count.HP_libconfig_read_file_src_pre > 0) {
int (*preHookFunc) (struct config_t **config, const char **filename);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_file_src_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_file_src_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_read_file_src_pre[hIndex].func;
retVal___ = preHookFunc(&config, &filename);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -36805,9 +42528,9 @@ int HP_libconfig_read_file_src(struct config_t *config, const char *filename) {
{
retVal___ = HPMHooks.source.libconfig.read_file_src(config, filename);
}
- if( HPMHooks.count.HP_libconfig_read_file_src_post ) {
+ if (HPMHooks.count.HP_libconfig_read_file_src_post > 0) {
int (*postHookFunc) (int retVal___, struct config_t *config, const char *filename);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_file_src_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_read_file_src_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_read_file_src_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, filename);
}
@@ -36817,14 +42540,14 @@ int HP_libconfig_read_file_src(struct config_t *config, const char *filename) {
int HP_libconfig_write_file(struct config_t *config, const char *filename) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_write_file_pre ) {
+ if (HPMHooks.count.HP_libconfig_write_file_pre > 0) {
int (*preHookFunc) (struct config_t **config, const char **filename);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_write_file_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_write_file_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_write_file_pre[hIndex].func;
retVal___ = preHookFunc(&config, &filename);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -36832,9 +42555,9 @@ int HP_libconfig_write_file(struct config_t *config, const char *filename) {
{
retVal___ = HPMHooks.source.libconfig.write_file(config, filename);
}
- if( HPMHooks.count.HP_libconfig_write_file_post ) {
+ if (HPMHooks.count.HP_libconfig_write_file_post > 0) {
int (*postHookFunc) (int retVal___, struct config_t *config, const char *filename);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_write_file_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_write_file_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_write_file_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, filename);
}
@@ -36843,14 +42566,14 @@ int HP_libconfig_write_file(struct config_t *config, const char *filename) {
}
void HP_libconfig_set_destructor(struct config_t *config, void ( *destructor ) (void *)) {
int hIndex = 0;
- if( HPMHooks.count.HP_libconfig_set_destructor_pre ) {
+ if (HPMHooks.count.HP_libconfig_set_destructor_pre > 0) {
void (*preHookFunc) (struct config_t **config, void ( **destructor ) (void *));
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_destructor_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_destructor_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_set_destructor_pre[hIndex].func;
preHookFunc(&config, &destructor);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -36858,9 +42581,9 @@ void HP_libconfig_set_destructor(struct config_t *config, void ( *destructor ) (
{
HPMHooks.source.libconfig.set_destructor(config, destructor);
}
- if( HPMHooks.count.HP_libconfig_set_destructor_post ) {
+ if (HPMHooks.count.HP_libconfig_set_destructor_post > 0) {
void (*postHookFunc) (struct config_t *config, void ( *destructor ) (void *));
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_destructor_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_destructor_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_set_destructor_post[hIndex].func;
postHookFunc(config, destructor);
}
@@ -36869,14 +42592,14 @@ void HP_libconfig_set_destructor(struct config_t *config, void ( *destructor ) (
}
void HP_libconfig_set_include_dir(struct config_t *config, const char *include_dir) {
int hIndex = 0;
- if( HPMHooks.count.HP_libconfig_set_include_dir_pre ) {
+ if (HPMHooks.count.HP_libconfig_set_include_dir_pre > 0) {
void (*preHookFunc) (struct config_t **config, const char **include_dir);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_include_dir_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_include_dir_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_set_include_dir_pre[hIndex].func;
preHookFunc(&config, &include_dir);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -36884,9 +42607,9 @@ void HP_libconfig_set_include_dir(struct config_t *config, const char *include_d
{
HPMHooks.source.libconfig.set_include_dir(config, include_dir);
}
- if( HPMHooks.count.HP_libconfig_set_include_dir_post ) {
+ if (HPMHooks.count.HP_libconfig_set_include_dir_post > 0) {
void (*postHookFunc) (struct config_t *config, const char *include_dir);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_include_dir_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_set_include_dir_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_set_include_dir_post[hIndex].func;
postHookFunc(config, include_dir);
}
@@ -36895,14 +42618,14 @@ void HP_libconfig_set_include_dir(struct config_t *config, const char *include_d
}
void HP_libconfig_init(struct config_t *config) {
int hIndex = 0;
- if( HPMHooks.count.HP_libconfig_init_pre ) {
+ if (HPMHooks.count.HP_libconfig_init_pre > 0) {
void (*preHookFunc) (struct config_t **config);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_init_pre[hIndex].func;
preHookFunc(&config);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -36910,9 +42633,9 @@ void HP_libconfig_init(struct config_t *config) {
{
HPMHooks.source.libconfig.init(config);
}
- if( HPMHooks.count.HP_libconfig_init_post ) {
+ if (HPMHooks.count.HP_libconfig_init_post > 0) {
void (*postHookFunc) (struct config_t *config);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_init_post[hIndex].func;
postHookFunc(config);
}
@@ -36921,14 +42644,14 @@ void HP_libconfig_init(struct config_t *config) {
}
void HP_libconfig_destroy(struct config_t *config) {
int hIndex = 0;
- if( HPMHooks.count.HP_libconfig_destroy_pre ) {
+ if (HPMHooks.count.HP_libconfig_destroy_pre > 0) {
void (*preHookFunc) (struct config_t **config);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_destroy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_destroy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_destroy_pre[hIndex].func;
preHookFunc(&config);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -36936,9 +42659,9 @@ void HP_libconfig_destroy(struct config_t *config) {
{
HPMHooks.source.libconfig.destroy(config);
}
- if( HPMHooks.count.HP_libconfig_destroy_post ) {
+ if (HPMHooks.count.HP_libconfig_destroy_post > 0) {
void (*postHookFunc) (struct config_t *config);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_destroy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_destroy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_destroy_post[hIndex].func;
postHookFunc(config);
}
@@ -36948,14 +42671,14 @@ void HP_libconfig_destroy(struct config_t *config) {
int HP_libconfig_setting_get_int(const struct config_setting_t *setting) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_get_int_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_int_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_int_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -36963,9 +42686,9 @@ int HP_libconfig_setting_get_int(const struct config_setting_t *setting) {
{
retVal___ = HPMHooks.source.libconfig.setting_get_int(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_get_int_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_int_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_int_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -36975,14 +42698,14 @@ int HP_libconfig_setting_get_int(const struct config_setting_t *setting) {
int64 HP_libconfig_setting_get_int64(const struct config_setting_t *setting) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_get_int64_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_int64_pre > 0) {
int64 (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int64_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int64_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_int64_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -36990,9 +42713,9 @@ int64 HP_libconfig_setting_get_int64(const struct config_setting_t *setting) {
{
retVal___ = HPMHooks.source.libconfig.setting_get_int64(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_get_int64_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_int64_post > 0) {
int64 (*postHookFunc) (int64 retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int64_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int64_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_int64_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -37002,14 +42725,14 @@ int64 HP_libconfig_setting_get_int64(const struct config_setting_t *setting) {
double HP_libconfig_setting_get_float(const struct config_setting_t *setting) {
int hIndex = 0;
double retVal___ = 0.;
- if( HPMHooks.count.HP_libconfig_setting_get_float_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_float_pre > 0) {
double (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_float_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_float_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_float_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37017,9 +42740,9 @@ double HP_libconfig_setting_get_float(const struct config_setting_t *setting) {
{
retVal___ = HPMHooks.source.libconfig.setting_get_float(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_get_float_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_float_post > 0) {
double (*postHookFunc) (double retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_float_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_float_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_float_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -37029,14 +42752,14 @@ double HP_libconfig_setting_get_float(const struct config_setting_t *setting) {
int HP_libconfig_setting_get_bool(const struct config_setting_t *setting) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_get_bool_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_bool_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_bool_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37044,9 +42767,9 @@ int HP_libconfig_setting_get_bool(const struct config_setting_t *setting) {
{
retVal___ = HPMHooks.source.libconfig.setting_get_bool(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_get_bool_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_bool_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_bool_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -37056,14 +42779,14 @@ int HP_libconfig_setting_get_bool(const struct config_setting_t *setting) {
const char* HP_libconfig_setting_get_string(const struct config_setting_t *setting) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_get_string_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_string_pre > 0) {
const char* (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_string_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_string_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_string_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37071,9 +42794,9 @@ const char* HP_libconfig_setting_get_string(const struct config_setting_t *setti
{
retVal___ = HPMHooks.source.libconfig.setting_get_string(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_get_string_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_string_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_string_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_string_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_string_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -37083,14 +42806,14 @@ const char* HP_libconfig_setting_get_string(const struct config_setting_t *setti
struct config_setting_t* HP_libconfig_setting_lookup(struct config_setting_t *setting, const char *name) {
int hIndex = 0;
struct config_setting_t* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_lookup_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_pre > 0) {
struct config_setting_t* (*preHookFunc) (struct config_setting_t **setting, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37098,9 +42821,9 @@ struct config_setting_t* HP_libconfig_setting_lookup(struct config_setting_t *se
{
retVal___ = HPMHooks.source.libconfig.setting_lookup(setting, name);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_post > 0) {
struct config_setting_t* (*postHookFunc) (struct config_setting_t* retVal___, struct config_setting_t *setting, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name);
}
@@ -37110,14 +42833,14 @@ struct config_setting_t* HP_libconfig_setting_lookup(struct config_setting_t *se
int HP_libconfig_setting_lookup_int(const struct config_setting_t *setting, const char *name, int *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_lookup_int_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_int_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, const char **name, int **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_int_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37125,9 +42848,9 @@ int HP_libconfig_setting_lookup_int(const struct config_setting_t *setting, cons
{
retVal___ = HPMHooks.source.libconfig.setting_lookup_int(setting, name, value);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_int_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_int_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, const char *name, int *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_int_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name, value);
}
@@ -37137,14 +42860,14 @@ int HP_libconfig_setting_lookup_int(const struct config_setting_t *setting, cons
int HP_libconfig_setting_lookup_int64(const struct config_setting_t *setting, const char *name, int64 *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_lookup_int64_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_int64_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, const char **name, int64 **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int64_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int64_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_int64_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37152,9 +42875,9 @@ int HP_libconfig_setting_lookup_int64(const struct config_setting_t *setting, co
{
retVal___ = HPMHooks.source.libconfig.setting_lookup_int64(setting, name, value);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_int64_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_int64_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, const char *name, int64 *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int64_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int64_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_int64_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name, value);
}
@@ -37164,14 +42887,14 @@ int HP_libconfig_setting_lookup_int64(const struct config_setting_t *setting, co
int HP_libconfig_setting_lookup_float(const struct config_setting_t *setting, const char *name, double *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_lookup_float_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_float_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, const char **name, double **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_float_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_float_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_float_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37179,9 +42902,9 @@ int HP_libconfig_setting_lookup_float(const struct config_setting_t *setting, co
{
retVal___ = HPMHooks.source.libconfig.setting_lookup_float(setting, name, value);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_float_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_float_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, const char *name, double *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_float_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_float_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_float_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name, value);
}
@@ -37191,14 +42914,14 @@ int HP_libconfig_setting_lookup_float(const struct config_setting_t *setting, co
int HP_libconfig_setting_lookup_bool(const struct config_setting_t *setting, const char *name, int *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_lookup_bool_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_bool_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, const char **name, int **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_bool_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_bool_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_bool_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37206,9 +42929,9 @@ int HP_libconfig_setting_lookup_bool(const struct config_setting_t *setting, con
{
retVal___ = HPMHooks.source.libconfig.setting_lookup_bool(setting, name, value);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_bool_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_bool_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, const char *name, int *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_bool_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_bool_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_bool_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name, value);
}
@@ -37218,14 +42941,14 @@ int HP_libconfig_setting_lookup_bool(const struct config_setting_t *setting, con
int HP_libconfig_setting_lookup_string(const struct config_setting_t *setting, const char *name, const char **value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_lookup_string_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_string_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, const char **name, const char ***value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_string_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_string_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_string_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37233,9 +42956,9 @@ int HP_libconfig_setting_lookup_string(const struct config_setting_t *setting, c
{
retVal___ = HPMHooks.source.libconfig.setting_lookup_string(setting, name, value);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_string_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_string_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, const char *name, const char **value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_string_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_string_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_string_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name, value);
}
@@ -37245,14 +42968,14 @@ int HP_libconfig_setting_lookup_string(const struct config_setting_t *setting, c
int HP_libconfig_setting_set_int(struct config_setting_t *setting, int value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_set_int_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_int_pre > 0) {
int (*preHookFunc) (struct config_setting_t **setting, int *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_int_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37260,9 +42983,9 @@ int HP_libconfig_setting_set_int(struct config_setting_t *setting, int value) {
{
retVal___ = HPMHooks.source.libconfig.setting_set_int(setting, value);
}
- if( HPMHooks.count.HP_libconfig_setting_set_int_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_int_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *setting, int value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_int_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, value);
}
@@ -37272,14 +42995,14 @@ int HP_libconfig_setting_set_int(struct config_setting_t *setting, int value) {
int HP_libconfig_setting_set_int64(struct config_setting_t *setting, int64 value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_set_int64_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_int64_pre > 0) {
int (*preHookFunc) (struct config_setting_t **setting, int64 *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int64_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int64_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_int64_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37287,9 +43010,9 @@ int HP_libconfig_setting_set_int64(struct config_setting_t *setting, int64 value
{
retVal___ = HPMHooks.source.libconfig.setting_set_int64(setting, value);
}
- if( HPMHooks.count.HP_libconfig_setting_set_int64_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_int64_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *setting, int64 value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int64_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int64_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_int64_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, value);
}
@@ -37299,14 +43022,14 @@ int HP_libconfig_setting_set_int64(struct config_setting_t *setting, int64 value
int HP_libconfig_setting_set_float(struct config_setting_t *setting, double value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_set_float_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_float_pre > 0) {
int (*preHookFunc) (struct config_setting_t **setting, double *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_float_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_float_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_float_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37314,9 +43037,9 @@ int HP_libconfig_setting_set_float(struct config_setting_t *setting, double valu
{
retVal___ = HPMHooks.source.libconfig.setting_set_float(setting, value);
}
- if( HPMHooks.count.HP_libconfig_setting_set_float_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_float_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *setting, double value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_float_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_float_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_float_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, value);
}
@@ -37326,14 +43049,14 @@ int HP_libconfig_setting_set_float(struct config_setting_t *setting, double valu
int HP_libconfig_setting_set_bool(struct config_setting_t *setting, int value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_set_bool_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_bool_pre > 0) {
int (*preHookFunc) (struct config_setting_t **setting, int *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_bool_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_bool_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_bool_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37341,9 +43064,9 @@ int HP_libconfig_setting_set_bool(struct config_setting_t *setting, int value) {
{
retVal___ = HPMHooks.source.libconfig.setting_set_bool(setting, value);
}
- if( HPMHooks.count.HP_libconfig_setting_set_bool_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_bool_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *setting, int value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_bool_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_bool_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_bool_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, value);
}
@@ -37353,14 +43076,14 @@ int HP_libconfig_setting_set_bool(struct config_setting_t *setting, int value) {
int HP_libconfig_setting_set_string(struct config_setting_t *setting, const char *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_set_string_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_string_pre > 0) {
int (*preHookFunc) (struct config_setting_t **setting, const char **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_string_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_string_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_string_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37368,9 +43091,9 @@ int HP_libconfig_setting_set_string(struct config_setting_t *setting, const char
{
retVal___ = HPMHooks.source.libconfig.setting_set_string(setting, value);
}
- if( HPMHooks.count.HP_libconfig_setting_set_string_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_string_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *setting, const char *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_string_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_string_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_string_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, value);
}
@@ -37380,14 +43103,14 @@ int HP_libconfig_setting_set_string(struct config_setting_t *setting, const char
int HP_libconfig_setting_set_format(struct config_setting_t *setting, short format) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_set_format_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_format_pre > 0) {
int (*preHookFunc) (struct config_setting_t **setting, short *format);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_format_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_format_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_format_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &format);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37395,9 +43118,9 @@ int HP_libconfig_setting_set_format(struct config_setting_t *setting, short form
{
retVal___ = HPMHooks.source.libconfig.setting_set_format(setting, format);
}
- if( HPMHooks.count.HP_libconfig_setting_set_format_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_format_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *setting, short format);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_format_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_format_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_format_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, format);
}
@@ -37407,14 +43130,14 @@ int HP_libconfig_setting_set_format(struct config_setting_t *setting, short form
short HP_libconfig_setting_get_format(const struct config_setting_t *setting) {
int hIndex = 0;
short retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_get_format_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_format_pre > 0) {
short (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_format_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_format_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_format_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37422,9 +43145,9 @@ short HP_libconfig_setting_get_format(const struct config_setting_t *setting) {
{
retVal___ = HPMHooks.source.libconfig.setting_get_format(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_get_format_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_format_post > 0) {
short (*postHookFunc) (short retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_format_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_format_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_format_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -37434,14 +43157,14 @@ short HP_libconfig_setting_get_format(const struct config_setting_t *setting) {
int HP_libconfig_setting_get_int_elem(const struct config_setting_t *setting, int idx) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_get_int_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_int_elem_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_int_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37449,9 +43172,9 @@ int HP_libconfig_setting_get_int_elem(const struct config_setting_t *setting, in
{
retVal___ = HPMHooks.source.libconfig.setting_get_int_elem(setting, idx);
}
- if( HPMHooks.count.HP_libconfig_setting_get_int_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_int_elem_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_int_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx);
}
@@ -37461,14 +43184,14 @@ int HP_libconfig_setting_get_int_elem(const struct config_setting_t *setting, in
int64 HP_libconfig_setting_get_int64_elem(const struct config_setting_t *setting, int idx) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_get_int64_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_int64_elem_pre > 0) {
int64 (*preHookFunc) (const struct config_setting_t **setting, int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int64_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int64_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_int64_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37476,9 +43199,9 @@ int64 HP_libconfig_setting_get_int64_elem(const struct config_setting_t *setting
{
retVal___ = HPMHooks.source.libconfig.setting_get_int64_elem(setting, idx);
}
- if( HPMHooks.count.HP_libconfig_setting_get_int64_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_int64_elem_post > 0) {
int64 (*postHookFunc) (int64 retVal___, const struct config_setting_t *setting, int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int64_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int64_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_int64_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx);
}
@@ -37488,14 +43211,14 @@ int64 HP_libconfig_setting_get_int64_elem(const struct config_setting_t *setting
double HP_libconfig_setting_get_float_elem(const struct config_setting_t *setting, int idx) {
int hIndex = 0;
double retVal___ = 0.;
- if( HPMHooks.count.HP_libconfig_setting_get_float_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_float_elem_pre > 0) {
double (*preHookFunc) (const struct config_setting_t **setting, int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_float_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_float_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_float_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37503,9 +43226,9 @@ double HP_libconfig_setting_get_float_elem(const struct config_setting_t *settin
{
retVal___ = HPMHooks.source.libconfig.setting_get_float_elem(setting, idx);
}
- if( HPMHooks.count.HP_libconfig_setting_get_float_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_float_elem_post > 0) {
double (*postHookFunc) (double retVal___, const struct config_setting_t *setting, int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_float_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_float_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_float_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx);
}
@@ -37515,14 +43238,14 @@ double HP_libconfig_setting_get_float_elem(const struct config_setting_t *settin
int HP_libconfig_setting_get_bool_elem(const struct config_setting_t *setting, int idx) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_get_bool_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_bool_elem_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_bool_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37530,9 +43253,9 @@ int HP_libconfig_setting_get_bool_elem(const struct config_setting_t *setting, i
{
retVal___ = HPMHooks.source.libconfig.setting_get_bool_elem(setting, idx);
}
- if( HPMHooks.count.HP_libconfig_setting_get_bool_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_bool_elem_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_bool_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx);
}
@@ -37542,14 +43265,14 @@ int HP_libconfig_setting_get_bool_elem(const struct config_setting_t *setting, i
const char* HP_libconfig_setting_get_string_elem(const struct config_setting_t *setting, int idx) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_get_string_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_string_elem_pre > 0) {
const char* (*preHookFunc) (const struct config_setting_t **setting, int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_string_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_string_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_string_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37557,9 +43280,9 @@ const char* HP_libconfig_setting_get_string_elem(const struct config_setting_t *
{
retVal___ = HPMHooks.source.libconfig.setting_get_string_elem(setting, idx);
}
- if( HPMHooks.count.HP_libconfig_setting_get_string_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_string_elem_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const struct config_setting_t *setting, int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_string_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_string_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_string_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx);
}
@@ -37569,14 +43292,14 @@ const char* HP_libconfig_setting_get_string_elem(const struct config_setting_t *
struct config_setting_t* HP_libconfig_setting_set_int_elem(struct config_setting_t *setting, int idx, int value) {
int hIndex = 0;
struct config_setting_t* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_set_int_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_int_elem_pre > 0) {
struct config_setting_t* (*preHookFunc) (struct config_setting_t **setting, int *idx, int *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_int_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37584,9 +43307,9 @@ struct config_setting_t* HP_libconfig_setting_set_int_elem(struct config_setting
{
retVal___ = HPMHooks.source.libconfig.setting_set_int_elem(setting, idx, value);
}
- if( HPMHooks.count.HP_libconfig_setting_set_int_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_int_elem_post > 0) {
struct config_setting_t* (*postHookFunc) (struct config_setting_t* retVal___, struct config_setting_t *setting, int idx, int value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_int_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx, value);
}
@@ -37596,14 +43319,14 @@ struct config_setting_t* HP_libconfig_setting_set_int_elem(struct config_setting
struct config_setting_t* HP_libconfig_setting_set_int64_elem(struct config_setting_t *setting, int idx, int64 value) {
int hIndex = 0;
struct config_setting_t* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_set_int64_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_int64_elem_pre > 0) {
struct config_setting_t* (*preHookFunc) (struct config_setting_t **setting, int *idx, int64 *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int64_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int64_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_int64_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37611,9 +43334,9 @@ struct config_setting_t* HP_libconfig_setting_set_int64_elem(struct config_setti
{
retVal___ = HPMHooks.source.libconfig.setting_set_int64_elem(setting, idx, value);
}
- if( HPMHooks.count.HP_libconfig_setting_set_int64_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_int64_elem_post > 0) {
struct config_setting_t* (*postHookFunc) (struct config_setting_t* retVal___, struct config_setting_t *setting, int idx, int64 value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int64_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_int64_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_int64_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx, value);
}
@@ -37623,14 +43346,14 @@ struct config_setting_t* HP_libconfig_setting_set_int64_elem(struct config_setti
struct config_setting_t* HP_libconfig_setting_set_float_elem(struct config_setting_t *setting, int idx, double value) {
int hIndex = 0;
struct config_setting_t* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_set_float_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_float_elem_pre > 0) {
struct config_setting_t* (*preHookFunc) (struct config_setting_t **setting, int *idx, double *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_float_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_float_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_float_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37638,9 +43361,9 @@ struct config_setting_t* HP_libconfig_setting_set_float_elem(struct config_setti
{
retVal___ = HPMHooks.source.libconfig.setting_set_float_elem(setting, idx, value);
}
- if( HPMHooks.count.HP_libconfig_setting_set_float_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_float_elem_post > 0) {
struct config_setting_t* (*postHookFunc) (struct config_setting_t* retVal___, struct config_setting_t *setting, int idx, double value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_float_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_float_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_float_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx, value);
}
@@ -37650,14 +43373,14 @@ struct config_setting_t* HP_libconfig_setting_set_float_elem(struct config_setti
struct config_setting_t* HP_libconfig_setting_set_bool_elem(struct config_setting_t *setting, int idx, int value) {
int hIndex = 0;
struct config_setting_t* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_set_bool_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_bool_elem_pre > 0) {
struct config_setting_t* (*preHookFunc) (struct config_setting_t **setting, int *idx, int *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_bool_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_bool_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_bool_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37665,9 +43388,9 @@ struct config_setting_t* HP_libconfig_setting_set_bool_elem(struct config_settin
{
retVal___ = HPMHooks.source.libconfig.setting_set_bool_elem(setting, idx, value);
}
- if( HPMHooks.count.HP_libconfig_setting_set_bool_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_bool_elem_post > 0) {
struct config_setting_t* (*postHookFunc) (struct config_setting_t* retVal___, struct config_setting_t *setting, int idx, int value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_bool_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_bool_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_bool_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx, value);
}
@@ -37677,14 +43400,14 @@ struct config_setting_t* HP_libconfig_setting_set_bool_elem(struct config_settin
struct config_setting_t* HP_libconfig_setting_set_string_elem(struct config_setting_t *setting, int idx, const char *value) {
int hIndex = 0;
struct config_setting_t* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_set_string_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_string_elem_pre > 0) {
struct config_setting_t* (*preHookFunc) (struct config_setting_t **setting, int *idx, const char **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_string_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_string_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_string_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37692,9 +43415,9 @@ struct config_setting_t* HP_libconfig_setting_set_string_elem(struct config_sett
{
retVal___ = HPMHooks.source.libconfig.setting_set_string_elem(setting, idx, value);
}
- if( HPMHooks.count.HP_libconfig_setting_set_string_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_string_elem_post > 0) {
struct config_setting_t* (*postHookFunc) (struct config_setting_t* retVal___, struct config_setting_t *setting, int idx, const char *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_string_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_string_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_string_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx, value);
}
@@ -37704,14 +43427,14 @@ struct config_setting_t* HP_libconfig_setting_set_string_elem(struct config_sett
int HP_libconfig_setting_index(const struct config_setting_t *setting) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_index_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_index_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_index_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_index_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_index_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37719,9 +43442,9 @@ int HP_libconfig_setting_index(const struct config_setting_t *setting) {
{
retVal___ = HPMHooks.source.libconfig.setting_index(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_index_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_index_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_index_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_index_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_index_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -37731,14 +43454,14 @@ int HP_libconfig_setting_index(const struct config_setting_t *setting) {
int HP_libconfig_setting_length(const struct config_setting_t *setting) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_length_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_length_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_length_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_length_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_length_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37746,9 +43469,9 @@ int HP_libconfig_setting_length(const struct config_setting_t *setting) {
{
retVal___ = HPMHooks.source.libconfig.setting_length(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_length_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_length_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_length_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_length_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_length_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -37758,14 +43481,14 @@ int HP_libconfig_setting_length(const struct config_setting_t *setting) {
struct config_setting_t* HP_libconfig_setting_get_elem(const struct config_setting_t *setting, unsigned int idx) {
int hIndex = 0;
struct config_setting_t* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_get_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_elem_pre > 0) {
struct config_setting_t* (*preHookFunc) (const struct config_setting_t **setting, unsigned int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_elem_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37773,9 +43496,9 @@ struct config_setting_t* HP_libconfig_setting_get_elem(const struct config_setti
{
retVal___ = HPMHooks.source.libconfig.setting_get_elem(setting, idx);
}
- if( HPMHooks.count.HP_libconfig_setting_get_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_elem_post > 0) {
struct config_setting_t* (*postHookFunc) (struct config_setting_t* retVal___, const struct config_setting_t *setting, unsigned int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, idx);
}
@@ -37785,14 +43508,14 @@ struct config_setting_t* HP_libconfig_setting_get_elem(const struct config_setti
struct config_setting_t* HP_libconfig_setting_get_member(const struct config_setting_t *setting, const char *name) {
int hIndex = 0;
struct config_setting_t* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_get_member_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_member_pre > 0) {
struct config_setting_t* (*preHookFunc) (const struct config_setting_t **setting, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_member_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_member_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_member_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37800,9 +43523,9 @@ struct config_setting_t* HP_libconfig_setting_get_member(const struct config_set
{
retVal___ = HPMHooks.source.libconfig.setting_get_member(setting, name);
}
- if( HPMHooks.count.HP_libconfig_setting_get_member_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_member_post > 0) {
struct config_setting_t* (*postHookFunc) (struct config_setting_t* retVal___, const struct config_setting_t *setting, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_member_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_member_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_member_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name);
}
@@ -37812,14 +43535,14 @@ struct config_setting_t* HP_libconfig_setting_get_member(const struct config_set
struct config_setting_t* HP_libconfig_setting_add(struct config_setting_t *parent, const char *name, int type) {
int hIndex = 0;
struct config_setting_t* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_setting_add_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_add_pre > 0) {
struct config_setting_t* (*preHookFunc) (struct config_setting_t **parent, const char **name, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_add_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_add_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_add_pre[hIndex].func;
retVal___ = preHookFunc(&parent, &name, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37827,9 +43550,9 @@ struct config_setting_t* HP_libconfig_setting_add(struct config_setting_t *paren
{
retVal___ = HPMHooks.source.libconfig.setting_add(parent, name, type);
}
- if( HPMHooks.count.HP_libconfig_setting_add_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_add_post > 0) {
struct config_setting_t* (*postHookFunc) (struct config_setting_t* retVal___, struct config_setting_t *parent, const char *name, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_add_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_add_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_add_post[hIndex].func;
retVal___ = postHookFunc(retVal___, parent, name, type);
}
@@ -37839,14 +43562,14 @@ struct config_setting_t* HP_libconfig_setting_add(struct config_setting_t *paren
int HP_libconfig_setting_remove(struct config_setting_t *parent, const char *name) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_remove_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_remove_pre > 0) {
int (*preHookFunc) (struct config_setting_t **parent, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_remove_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_remove_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_remove_pre[hIndex].func;
retVal___ = preHookFunc(&parent, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37854,9 +43577,9 @@ int HP_libconfig_setting_remove(struct config_setting_t *parent, const char *nam
{
retVal___ = HPMHooks.source.libconfig.setting_remove(parent, name);
}
- if( HPMHooks.count.HP_libconfig_setting_remove_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_remove_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *parent, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_remove_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_remove_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_remove_post[hIndex].func;
retVal___ = postHookFunc(retVal___, parent, name);
}
@@ -37866,14 +43589,14 @@ int HP_libconfig_setting_remove(struct config_setting_t *parent, const char *nam
int HP_libconfig_setting_remove_elem(struct config_setting_t *parent, unsigned int idx) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_remove_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_remove_elem_pre > 0) {
int (*preHookFunc) (struct config_setting_t **parent, unsigned int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_remove_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_remove_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_remove_elem_pre[hIndex].func;
retVal___ = preHookFunc(&parent, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37881,9 +43604,9 @@ int HP_libconfig_setting_remove_elem(struct config_setting_t *parent, unsigned i
{
retVal___ = HPMHooks.source.libconfig.setting_remove_elem(parent, idx);
}
- if( HPMHooks.count.HP_libconfig_setting_remove_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_remove_elem_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *parent, unsigned int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_remove_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_remove_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_remove_elem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, parent, idx);
}
@@ -37892,14 +43615,14 @@ int HP_libconfig_setting_remove_elem(struct config_setting_t *parent, unsigned i
}
void HP_libconfig_setting_set_hook(struct config_setting_t *setting, void *hook) {
int hIndex = 0;
- if( HPMHooks.count.HP_libconfig_setting_set_hook_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_hook_pre > 0) {
void (*preHookFunc) (struct config_setting_t **setting, void **hook);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_hook_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_hook_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_set_hook_pre[hIndex].func;
preHookFunc(&setting, &hook);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -37907,9 +43630,9 @@ void HP_libconfig_setting_set_hook(struct config_setting_t *setting, void *hook)
{
HPMHooks.source.libconfig.setting_set_hook(setting, hook);
}
- if( HPMHooks.count.HP_libconfig_setting_set_hook_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_set_hook_post > 0) {
void (*postHookFunc) (struct config_setting_t *setting, void *hook);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_hook_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_set_hook_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_set_hook_post[hIndex].func;
postHookFunc(setting, hook);
}
@@ -37919,14 +43642,14 @@ void HP_libconfig_setting_set_hook(struct config_setting_t *setting, void *hook)
struct config_setting_t* HP_libconfig_lookup(const struct config_t *config, const char *filepath) {
int hIndex = 0;
struct config_setting_t* retVal___ = NULL;
- if( HPMHooks.count.HP_libconfig_lookup_pre ) {
+ if (HPMHooks.count.HP_libconfig_lookup_pre > 0) {
struct config_setting_t* (*preHookFunc) (const struct config_t **config, const char **filepath);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_lookup_pre[hIndex].func;
retVal___ = preHookFunc(&config, &filepath);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37934,9 +43657,9 @@ struct config_setting_t* HP_libconfig_lookup(const struct config_t *config, cons
{
retVal___ = HPMHooks.source.libconfig.lookup(config, filepath);
}
- if( HPMHooks.count.HP_libconfig_lookup_post ) {
+ if (HPMHooks.count.HP_libconfig_lookup_post > 0) {
struct config_setting_t* (*postHookFunc) (struct config_setting_t* retVal___, const struct config_t *config, const char *filepath);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_lookup_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, filepath);
}
@@ -37946,14 +43669,14 @@ struct config_setting_t* HP_libconfig_lookup(const struct config_t *config, cons
int HP_libconfig_lookup_int(const struct config_t *config, const char *filepath, int *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_lookup_int_pre ) {
+ if (HPMHooks.count.HP_libconfig_lookup_int_pre > 0) {
int (*preHookFunc) (const struct config_t **config, const char **filepath, int **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_int_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_int_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_lookup_int_pre[hIndex].func;
retVal___ = preHookFunc(&config, &filepath, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37961,9 +43684,9 @@ int HP_libconfig_lookup_int(const struct config_t *config, const char *filepath,
{
retVal___ = HPMHooks.source.libconfig.lookup_int(config, filepath, value);
}
- if( HPMHooks.count.HP_libconfig_lookup_int_post ) {
+ if (HPMHooks.count.HP_libconfig_lookup_int_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_t *config, const char *filepath, int *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_int_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_int_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_lookup_int_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, filepath, value);
}
@@ -37973,14 +43696,14 @@ int HP_libconfig_lookup_int(const struct config_t *config, const char *filepath,
int HP_libconfig_lookup_int64(const struct config_t *config, const char *filepath, int64 *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_lookup_int64_pre ) {
+ if (HPMHooks.count.HP_libconfig_lookup_int64_pre > 0) {
int (*preHookFunc) (const struct config_t **config, const char **filepath, int64 **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_int64_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_int64_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_lookup_int64_pre[hIndex].func;
retVal___ = preHookFunc(&config, &filepath, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -37988,9 +43711,9 @@ int HP_libconfig_lookup_int64(const struct config_t *config, const char *filepat
{
retVal___ = HPMHooks.source.libconfig.lookup_int64(config, filepath, value);
}
- if( HPMHooks.count.HP_libconfig_lookup_int64_post ) {
+ if (HPMHooks.count.HP_libconfig_lookup_int64_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_t *config, const char *filepath, int64 *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_int64_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_int64_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_lookup_int64_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, filepath, value);
}
@@ -38000,14 +43723,14 @@ int HP_libconfig_lookup_int64(const struct config_t *config, const char *filepat
int HP_libconfig_lookup_float(const struct config_t *config, const char *filepath, double *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_lookup_float_pre ) {
+ if (HPMHooks.count.HP_libconfig_lookup_float_pre > 0) {
int (*preHookFunc) (const struct config_t **config, const char **filepath, double **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_float_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_float_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_lookup_float_pre[hIndex].func;
retVal___ = preHookFunc(&config, &filepath, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -38015,9 +43738,9 @@ int HP_libconfig_lookup_float(const struct config_t *config, const char *filepat
{
retVal___ = HPMHooks.source.libconfig.lookup_float(config, filepath, value);
}
- if( HPMHooks.count.HP_libconfig_lookup_float_post ) {
+ if (HPMHooks.count.HP_libconfig_lookup_float_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_t *config, const char *filepath, double *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_float_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_float_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_lookup_float_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, filepath, value);
}
@@ -38027,14 +43750,14 @@ int HP_libconfig_lookup_float(const struct config_t *config, const char *filepat
int HP_libconfig_lookup_bool(const struct config_t *config, const char *filepath, int *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_lookup_bool_pre ) {
+ if (HPMHooks.count.HP_libconfig_lookup_bool_pre > 0) {
int (*preHookFunc) (const struct config_t **config, const char **filepath, int **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_bool_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_bool_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_lookup_bool_pre[hIndex].func;
retVal___ = preHookFunc(&config, &filepath, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -38042,9 +43765,9 @@ int HP_libconfig_lookup_bool(const struct config_t *config, const char *filepath
{
retVal___ = HPMHooks.source.libconfig.lookup_bool(config, filepath, value);
}
- if( HPMHooks.count.HP_libconfig_lookup_bool_post ) {
+ if (HPMHooks.count.HP_libconfig_lookup_bool_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_t *config, const char *filepath, int *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_bool_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_bool_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_lookup_bool_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, filepath, value);
}
@@ -38054,14 +43777,14 @@ int HP_libconfig_lookup_bool(const struct config_t *config, const char *filepath
int HP_libconfig_lookup_string(const struct config_t *config, const char *filepath, const char **value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_lookup_string_pre ) {
+ if (HPMHooks.count.HP_libconfig_lookup_string_pre > 0) {
int (*preHookFunc) (const struct config_t **config, const char **filepath, const char ***value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_string_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_string_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_lookup_string_pre[hIndex].func;
retVal___ = preHookFunc(&config, &filepath, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -38069,9 +43792,9 @@ int HP_libconfig_lookup_string(const struct config_t *config, const char *filepa
{
retVal___ = HPMHooks.source.libconfig.lookup_string(config, filepath, value);
}
- if( HPMHooks.count.HP_libconfig_lookup_string_post ) {
+ if (HPMHooks.count.HP_libconfig_lookup_string_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_t *config, const char *filepath, const char **value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_string_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_string_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_lookup_string_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, filepath, value);
}
@@ -38081,14 +43804,14 @@ int HP_libconfig_lookup_string(const struct config_t *config, const char *filepa
int HP_libconfig_load_file(struct config_t *config, const char *config_filename) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_load_file_pre ) {
+ if (HPMHooks.count.HP_libconfig_load_file_pre > 0) {
int (*preHookFunc) (struct config_t **config, const char **config_filename);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_load_file_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_load_file_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_load_file_pre[hIndex].func;
retVal___ = preHookFunc(&config, &config_filename);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -38096,9 +43819,9 @@ int HP_libconfig_load_file(struct config_t *config, const char *config_filename)
{
retVal___ = HPMHooks.source.libconfig.load_file(config, config_filename);
}
- if( HPMHooks.count.HP_libconfig_load_file_post ) {
+ if (HPMHooks.count.HP_libconfig_load_file_post > 0) {
int (*postHookFunc) (int retVal___, struct config_t *config, const char *config_filename);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_load_file_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_load_file_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_load_file_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, config_filename);
}
@@ -38107,14 +43830,14 @@ int HP_libconfig_load_file(struct config_t *config, const char *config_filename)
}
void HP_libconfig_setting_copy_simple(struct config_setting_t *parent, const struct config_setting_t *src) {
int hIndex = 0;
- if( HPMHooks.count.HP_libconfig_setting_copy_simple_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_copy_simple_pre > 0) {
void (*preHookFunc) (struct config_setting_t **parent, const struct config_setting_t **src);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_simple_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_simple_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_copy_simple_pre[hIndex].func;
preHookFunc(&parent, &src);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -38122,9 +43845,9 @@ void HP_libconfig_setting_copy_simple(struct config_setting_t *parent, const str
{
HPMHooks.source.libconfig.setting_copy_simple(parent, src);
}
- if( HPMHooks.count.HP_libconfig_setting_copy_simple_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_copy_simple_post > 0) {
void (*postHookFunc) (struct config_setting_t *parent, const struct config_setting_t *src);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_simple_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_simple_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_copy_simple_post[hIndex].func;
postHookFunc(parent, src);
}
@@ -38133,14 +43856,14 @@ void HP_libconfig_setting_copy_simple(struct config_setting_t *parent, const str
}
void HP_libconfig_setting_copy_elem(struct config_setting_t *parent, const struct config_setting_t *src) {
int hIndex = 0;
- if( HPMHooks.count.HP_libconfig_setting_copy_elem_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_copy_elem_pre > 0) {
void (*preHookFunc) (struct config_setting_t **parent, const struct config_setting_t **src);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_elem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_elem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_copy_elem_pre[hIndex].func;
preHookFunc(&parent, &src);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -38148,9 +43871,9 @@ void HP_libconfig_setting_copy_elem(struct config_setting_t *parent, const struc
{
HPMHooks.source.libconfig.setting_copy_elem(parent, src);
}
- if( HPMHooks.count.HP_libconfig_setting_copy_elem_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_copy_elem_post > 0) {
void (*postHookFunc) (struct config_setting_t *parent, const struct config_setting_t *src);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_elem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_elem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_copy_elem_post[hIndex].func;
postHookFunc(parent, src);
}
@@ -38159,14 +43882,14 @@ void HP_libconfig_setting_copy_elem(struct config_setting_t *parent, const struc
}
void HP_libconfig_setting_copy_aggregate(struct config_setting_t *parent, const struct config_setting_t *src) {
int hIndex = 0;
- if( HPMHooks.count.HP_libconfig_setting_copy_aggregate_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_copy_aggregate_pre > 0) {
void (*preHookFunc) (struct config_setting_t **parent, const struct config_setting_t **src);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_aggregate_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_aggregate_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_copy_aggregate_pre[hIndex].func;
preHookFunc(&parent, &src);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -38174,9 +43897,9 @@ void HP_libconfig_setting_copy_aggregate(struct config_setting_t *parent, const
{
HPMHooks.source.libconfig.setting_copy_aggregate(parent, src);
}
- if( HPMHooks.count.HP_libconfig_setting_copy_aggregate_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_copy_aggregate_post > 0) {
void (*postHookFunc) (struct config_setting_t *parent, const struct config_setting_t *src);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_aggregate_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_aggregate_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_copy_aggregate_post[hIndex].func;
postHookFunc(parent, src);
}
@@ -38186,14 +43909,14 @@ void HP_libconfig_setting_copy_aggregate(struct config_setting_t *parent, const
int HP_libconfig_setting_copy(struct config_setting_t *parent, const struct config_setting_t *src) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_copy_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_copy_pre > 0) {
int (*preHookFunc) (struct config_setting_t **parent, const struct config_setting_t **src);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_copy_pre[hIndex].func;
retVal___ = preHookFunc(&parent, &src);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -38201,9 +43924,9 @@ int HP_libconfig_setting_copy(struct config_setting_t *parent, const struct conf
{
retVal___ = HPMHooks.source.libconfig.setting_copy(parent, src);
}
- if( HPMHooks.count.HP_libconfig_setting_copy_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_copy_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *parent, const struct config_setting_t *src);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_copy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_copy_post[hIndex].func;
retVal___ = postHookFunc(retVal___, parent, src);
}
@@ -38213,14 +43936,14 @@ int HP_libconfig_setting_copy(struct config_setting_t *parent, const struct conf
bool HP_libconfig_setting_get_bool_real(const struct config_setting_t *setting) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_libconfig_setting_get_bool_real_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_bool_real_pre > 0) {
bool (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_real_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_real_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_bool_real_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -38228,9 +43951,9 @@ bool HP_libconfig_setting_get_bool_real(const struct config_setting_t *setting)
{
retVal___ = HPMHooks.source.libconfig.setting_get_bool_real(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_get_bool_real_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_bool_real_post > 0) {
bool (*postHookFunc) (bool retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_real_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_bool_real_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_bool_real_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -38240,14 +43963,14 @@ bool HP_libconfig_setting_get_bool_real(const struct config_setting_t *setting)
uint32 HP_libconfig_setting_get_uint32(const struct config_setting_t *setting) {
int hIndex = 0;
uint32 retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_get_uint32_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_uint32_pre > 0) {
uint32 (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_uint32_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_uint32_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_uint32_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -38255,9 +43978,9 @@ uint32 HP_libconfig_setting_get_uint32(const struct config_setting_t *setting) {
{
retVal___ = HPMHooks.source.libconfig.setting_get_uint32(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_get_uint32_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_uint32_post > 0) {
uint32 (*postHookFunc) (uint32 retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_uint32_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_uint32_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_uint32_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -38267,14 +43990,14 @@ uint32 HP_libconfig_setting_get_uint32(const struct config_setting_t *setting) {
uint16 HP_libconfig_setting_get_uint16(const struct config_setting_t *setting) {
int hIndex = 0;
uint16 retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_get_uint16_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_uint16_pre > 0) {
uint16 (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_uint16_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_uint16_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_uint16_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -38282,9 +44005,9 @@ uint16 HP_libconfig_setting_get_uint16(const struct config_setting_t *setting) {
{
retVal___ = HPMHooks.source.libconfig.setting_get_uint16(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_get_uint16_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_uint16_post > 0) {
uint16 (*postHookFunc) (uint16 retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_uint16_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_uint16_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_uint16_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -38294,14 +44017,14 @@ uint16 HP_libconfig_setting_get_uint16(const struct config_setting_t *setting) {
int16 HP_libconfig_setting_get_int16(const struct config_setting_t *setting) {
int hIndex = 0;
int16 retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_get_int16_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_int16_pre > 0) {
int16 (*preHookFunc) (const struct config_setting_t **setting);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int16_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int16_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_get_int16_pre[hIndex].func;
retVal___ = preHookFunc(&setting);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -38309,9 +44032,9 @@ int16 HP_libconfig_setting_get_int16(const struct config_setting_t *setting) {
{
retVal___ = HPMHooks.source.libconfig.setting_get_int16(setting);
}
- if( HPMHooks.count.HP_libconfig_setting_get_int16_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_get_int16_post > 0) {
int16 (*postHookFunc) (int16 retVal___, const struct config_setting_t *setting);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int16_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_get_int16_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_get_int16_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting);
}
@@ -38321,14 +44044,14 @@ int16 HP_libconfig_setting_get_int16(const struct config_setting_t *setting) {
int HP_libconfig_setting_lookup_bool_real(const struct config_setting_t *setting, const char *name, bool *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_lookup_bool_real_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_bool_real_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, const char **name, bool **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_bool_real_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_bool_real_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_bool_real_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -38336,9 +44059,9 @@ int HP_libconfig_setting_lookup_bool_real(const struct config_setting_t *setting
{
retVal___ = HPMHooks.source.libconfig.setting_lookup_bool_real(setting, name, value);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_bool_real_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_bool_real_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, const char *name, bool *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_bool_real_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_bool_real_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_bool_real_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name, value);
}
@@ -38348,14 +44071,14 @@ int HP_libconfig_setting_lookup_bool_real(const struct config_setting_t *setting
int HP_libconfig_setting_lookup_uint32(const struct config_setting_t *setting, const char *name, uint32 *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_lookup_uint32_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_uint32_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, const char **name, uint32 **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_uint32_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_uint32_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_uint32_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -38363,9 +44086,9 @@ int HP_libconfig_setting_lookup_uint32(const struct config_setting_t *setting, c
{
retVal___ = HPMHooks.source.libconfig.setting_lookup_uint32(setting, name, value);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_uint32_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_uint32_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, const char *name, uint32 *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_uint32_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_uint32_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_uint32_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name, value);
}
@@ -38375,14 +44098,14 @@ int HP_libconfig_setting_lookup_uint32(const struct config_setting_t *setting, c
int HP_libconfig_setting_lookup_uint16(const struct config_setting_t *setting, const char *name, uint16 *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_lookup_uint16_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_uint16_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, const char **name, uint16 **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_uint16_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_uint16_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_uint16_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -38390,9 +44113,9 @@ int HP_libconfig_setting_lookup_uint16(const struct config_setting_t *setting, c
{
retVal___ = HPMHooks.source.libconfig.setting_lookup_uint16(setting, name, value);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_uint16_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_uint16_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, const char *name, uint16 *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_uint16_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_uint16_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_uint16_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name, value);
}
@@ -38402,14 +44125,14 @@ int HP_libconfig_setting_lookup_uint16(const struct config_setting_t *setting, c
int HP_libconfig_setting_lookup_int16(const struct config_setting_t *setting, const char *name, int16 *value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_lookup_int16_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_int16_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, const char **name, int16 **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int16_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int16_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_int16_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -38417,9 +44140,9 @@ int HP_libconfig_setting_lookup_int16(const struct config_setting_t *setting, co
{
retVal___ = HPMHooks.source.libconfig.setting_lookup_int16(setting, name, value);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_int16_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_int16_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, const char *name, int16 *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int16_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_int16_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_int16_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name, value);
}
@@ -38429,14 +44152,14 @@ int HP_libconfig_setting_lookup_int16(const struct config_setting_t *setting, co
int HP_libconfig_setting_lookup_mutable_string(const struct config_setting_t *setting, const char *name, char *out, size_t out_size) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_setting_lookup_mutable_string_pre ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_mutable_string_pre > 0) {
int (*preHookFunc) (const struct config_setting_t **setting, const char **name, char **out, size_t *out_size);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_mutable_string_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_mutable_string_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_mutable_string_pre[hIndex].func;
retVal___ = preHookFunc(&setting, &name, &out, &out_size);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -38444,9 +44167,9 @@ int HP_libconfig_setting_lookup_mutable_string(const struct config_setting_t *se
{
retVal___ = HPMHooks.source.libconfig.setting_lookup_mutable_string(setting, name, out, out_size);
}
- if( HPMHooks.count.HP_libconfig_setting_lookup_mutable_string_post ) {
+ if (HPMHooks.count.HP_libconfig_setting_lookup_mutable_string_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_setting_t *setting, const char *name, char *out, size_t out_size);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_mutable_string_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_setting_lookup_mutable_string_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_setting_lookup_mutable_string_post[hIndex].func;
retVal___ = postHookFunc(retVal___, setting, name, out, out_size);
}
@@ -38456,14 +44179,14 @@ int HP_libconfig_setting_lookup_mutable_string(const struct config_setting_t *se
int HP_libconfig_lookup_mutable_string(const struct config_t *config, const char *name, char *out, size_t out_size) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libconfig_lookup_mutable_string_pre ) {
+ if (HPMHooks.count.HP_libconfig_lookup_mutable_string_pre > 0) {
int (*preHookFunc) (const struct config_t **config, const char **name, char **out, size_t *out_size);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_mutable_string_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_mutable_string_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libconfig_lookup_mutable_string_pre[hIndex].func;
retVal___ = preHookFunc(&config, &name, &out, &out_size);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -38471,9 +44194,9 @@ int HP_libconfig_lookup_mutable_string(const struct config_t *config, const char
{
retVal___ = HPMHooks.source.libconfig.lookup_mutable_string(config, name, out, out_size);
}
- if( HPMHooks.count.HP_libconfig_lookup_mutable_string_post ) {
+ if (HPMHooks.count.HP_libconfig_lookup_mutable_string_post > 0) {
int (*postHookFunc) (int retVal___, const struct config_t *config, const char *name, char *out, size_t out_size);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_mutable_string_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libconfig_lookup_mutable_string_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libconfig_lookup_mutable_string_post[hIndex].func;
retVal___ = postHookFunc(retVal___, config, name, out, out_size);
}
@@ -38483,14 +44206,14 @@ int HP_libconfig_lookup_mutable_string(const struct config_t *config, const char
/* log_interface */
void HP_logs_pick_pc(struct map_session_data *sd, e_log_pick_type type, int amount, struct item *itm, struct item_data *data) {
int hIndex = 0;
- if( HPMHooks.count.HP_logs_pick_pc_pre ) {
+ if (HPMHooks.count.HP_logs_pick_pc_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, e_log_pick_type *type, int *amount, struct item **itm, struct item_data **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_pick_pc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_pick_pc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_logs_pick_pc_pre[hIndex].func;
preHookFunc(&sd, &type, &amount, &itm, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -38498,9 +44221,9 @@ void HP_logs_pick_pc(struct map_session_data *sd, e_log_pick_type type, int amou
{
HPMHooks.source.logs.pick_pc(sd, type, amount, itm, data);
}
- if( HPMHooks.count.HP_logs_pick_pc_post ) {
+ if (HPMHooks.count.HP_logs_pick_pc_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, e_log_pick_type type, int amount, struct item *itm, struct item_data *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_pick_pc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_pick_pc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_logs_pick_pc_post[hIndex].func;
postHookFunc(sd, type, amount, itm, data);
}
@@ -38509,14 +44232,14 @@ void HP_logs_pick_pc(struct map_session_data *sd, e_log_pick_type type, int amou
}
void HP_logs_pick_mob(struct mob_data *md, e_log_pick_type type, int amount, struct item *itm, struct item_data *data) {
int hIndex = 0;
- if( HPMHooks.count.HP_logs_pick_mob_pre ) {
+ if (HPMHooks.count.HP_logs_pick_mob_pre > 0) {
void (*preHookFunc) (struct mob_data **md, e_log_pick_type *type, int *amount, struct item **itm, struct item_data **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_pick_mob_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_pick_mob_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_logs_pick_mob_pre[hIndex].func;
preHookFunc(&md, &type, &amount, &itm, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -38524,9 +44247,9 @@ void HP_logs_pick_mob(struct mob_data *md, e_log_pick_type type, int amount, str
{
HPMHooks.source.logs.pick_mob(md, type, amount, itm, data);
}
- if( HPMHooks.count.HP_logs_pick_mob_post ) {
+ if (HPMHooks.count.HP_logs_pick_mob_post > 0) {
void (*postHookFunc) (struct mob_data *md, e_log_pick_type type, int amount, struct item *itm, struct item_data *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_pick_mob_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_pick_mob_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_logs_pick_mob_post[hIndex].func;
postHookFunc(md, type, amount, itm, data);
}
@@ -38535,14 +44258,14 @@ void HP_logs_pick_mob(struct mob_data *md, e_log_pick_type type, int amount, str
}
void HP_logs_zeny(struct map_session_data *sd, e_log_pick_type type, struct map_session_data *src_sd, int amount) {
int hIndex = 0;
- if( HPMHooks.count.HP_logs_zeny_pre ) {
+ if (HPMHooks.count.HP_logs_zeny_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, e_log_pick_type *type, struct map_session_data **src_sd, int *amount);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_zeny_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_zeny_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_logs_zeny_pre[hIndex].func;
preHookFunc(&sd, &type, &src_sd, &amount);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -38550,9 +44273,9 @@ void HP_logs_zeny(struct map_session_data *sd, e_log_pick_type type, struct map_
{
HPMHooks.source.logs.zeny(sd, type, src_sd, amount);
}
- if( HPMHooks.count.HP_logs_zeny_post ) {
+ if (HPMHooks.count.HP_logs_zeny_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, e_log_pick_type type, struct map_session_data *src_sd, int amount);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_zeny_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_zeny_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_logs_zeny_post[hIndex].func;
postHookFunc(sd, type, src_sd, amount);
}
@@ -38561,14 +44284,14 @@ void HP_logs_zeny(struct map_session_data *sd, e_log_pick_type type, struct map_
}
void HP_logs_npc(struct map_session_data *sd, const char *message) {
int hIndex = 0;
- if( HPMHooks.count.HP_logs_npc_pre ) {
+ if (HPMHooks.count.HP_logs_npc_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, const char **message);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_npc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_npc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_logs_npc_pre[hIndex].func;
preHookFunc(&sd, &message);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -38576,9 +44299,9 @@ void HP_logs_npc(struct map_session_data *sd, const char *message) {
{
HPMHooks.source.logs.npc(sd, message);
}
- if( HPMHooks.count.HP_logs_npc_post ) {
+ if (HPMHooks.count.HP_logs_npc_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, const char *message);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_npc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_npc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_logs_npc_post[hIndex].func;
postHookFunc(sd, message);
}
@@ -38587,14 +44310,14 @@ void HP_logs_npc(struct map_session_data *sd, const char *message) {
}
void HP_logs_chat(e_log_chat_type type, int type_id, int src_charid, int src_accid, const char *mapname, int x, int y, const char *dst_charname, const char *message) {
int hIndex = 0;
- if( HPMHooks.count.HP_logs_chat_pre ) {
+ if (HPMHooks.count.HP_logs_chat_pre > 0) {
void (*preHookFunc) (e_log_chat_type *type, int *type_id, int *src_charid, int *src_accid, const char **mapname, int *x, int *y, const char **dst_charname, const char **message);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_chat_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_chat_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_logs_chat_pre[hIndex].func;
preHookFunc(&type, &type_id, &src_charid, &src_accid, &mapname, &x, &y, &dst_charname, &message);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -38602,9 +44325,9 @@ void HP_logs_chat(e_log_chat_type type, int type_id, int src_charid, int src_acc
{
HPMHooks.source.logs.chat(type, type_id, src_charid, src_accid, mapname, x, y, dst_charname, message);
}
- if( HPMHooks.count.HP_logs_chat_post ) {
+ if (HPMHooks.count.HP_logs_chat_post > 0) {
void (*postHookFunc) (e_log_chat_type type, int type_id, int src_charid, int src_accid, const char *mapname, int x, int y, const char *dst_charname, const char *message);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_chat_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_chat_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_logs_chat_post[hIndex].func;
postHookFunc(type, type_id, src_charid, src_accid, mapname, x, y, dst_charname, message);
}
@@ -38613,14 +44336,14 @@ void HP_logs_chat(e_log_chat_type type, int type_id, int src_charid, int src_acc
}
void HP_logs_atcommand(struct map_session_data *sd, const char *message) {
int hIndex = 0;
- if( HPMHooks.count.HP_logs_atcommand_pre ) {
+ if (HPMHooks.count.HP_logs_atcommand_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, const char **message);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_atcommand_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_atcommand_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_logs_atcommand_pre[hIndex].func;
preHookFunc(&sd, &message);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -38628,9 +44351,9 @@ void HP_logs_atcommand(struct map_session_data *sd, const char *message) {
{
HPMHooks.source.logs.atcommand(sd, message);
}
- if( HPMHooks.count.HP_logs_atcommand_post ) {
+ if (HPMHooks.count.HP_logs_atcommand_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, const char *message);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_atcommand_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_atcommand_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_logs_atcommand_post[hIndex].func;
postHookFunc(sd, message);
}
@@ -38639,14 +44362,14 @@ void HP_logs_atcommand(struct map_session_data *sd, const char *message) {
}
void HP_logs_branch(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_logs_branch_pre ) {
+ if (HPMHooks.count.HP_logs_branch_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_branch_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_branch_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_logs_branch_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -38654,9 +44377,9 @@ void HP_logs_branch(struct map_session_data *sd) {
{
HPMHooks.source.logs.branch(sd);
}
- if( HPMHooks.count.HP_logs_branch_post ) {
+ if (HPMHooks.count.HP_logs_branch_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_branch_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_branch_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_logs_branch_post[hIndex].func;
postHookFunc(sd);
}
@@ -38665,14 +44388,14 @@ void HP_logs_branch(struct map_session_data *sd) {
}
void HP_logs_mvpdrop(struct map_session_data *sd, int monster_id, int *log_mvp) {
int hIndex = 0;
- if( HPMHooks.count.HP_logs_mvpdrop_pre ) {
+ if (HPMHooks.count.HP_logs_mvpdrop_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *monster_id, int **log_mvp);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_mvpdrop_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_mvpdrop_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_logs_mvpdrop_pre[hIndex].func;
preHookFunc(&sd, &monster_id, &log_mvp);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -38680,9 +44403,9 @@ void HP_logs_mvpdrop(struct map_session_data *sd, int monster_id, int *log_mvp)
{
HPMHooks.source.logs.mvpdrop(sd, monster_id, log_mvp);
}
- if( HPMHooks.count.HP_logs_mvpdrop_post ) {
+ if (HPMHooks.count.HP_logs_mvpdrop_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int monster_id, int *log_mvp);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_mvpdrop_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_mvpdrop_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_logs_mvpdrop_post[hIndex].func;
postHookFunc(sd, monster_id, log_mvp);
}
@@ -38691,14 +44414,14 @@ void HP_logs_mvpdrop(struct map_session_data *sd, int monster_id, int *log_mvp)
}
void HP_logs_pick_sub(int id, int16 m, e_log_pick_type type, int amount, struct item *itm, struct item_data *data) {
int hIndex = 0;
- if( HPMHooks.count.HP_logs_pick_sub_pre ) {
+ if (HPMHooks.count.HP_logs_pick_sub_pre > 0) {
void (*preHookFunc) (int *id, int16 *m, e_log_pick_type *type, int *amount, struct item **itm, struct item_data **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_pick_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_pick_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_logs_pick_sub_pre[hIndex].func;
preHookFunc(&id, &m, &type, &amount, &itm, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -38706,9 +44429,9 @@ void HP_logs_pick_sub(int id, int16 m, e_log_pick_type type, int amount, struct
{
HPMHooks.source.logs.pick_sub(id, m, type, amount, itm, data);
}
- if( HPMHooks.count.HP_logs_pick_sub_post ) {
+ if (HPMHooks.count.HP_logs_pick_sub_post > 0) {
void (*postHookFunc) (int id, int16 m, e_log_pick_type type, int amount, struct item *itm, struct item_data *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_pick_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_pick_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_logs_pick_sub_post[hIndex].func;
postHookFunc(id, m, type, amount, itm, data);
}
@@ -38717,14 +44440,14 @@ void HP_logs_pick_sub(int id, int16 m, e_log_pick_type type, int amount, struct
}
void HP_logs_zeny_sub(struct map_session_data *sd, e_log_pick_type type, struct map_session_data *src_sd, int amount) {
int hIndex = 0;
- if( HPMHooks.count.HP_logs_zeny_sub_pre ) {
+ if (HPMHooks.count.HP_logs_zeny_sub_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, e_log_pick_type *type, struct map_session_data **src_sd, int *amount);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_zeny_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_zeny_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_logs_zeny_sub_pre[hIndex].func;
preHookFunc(&sd, &type, &src_sd, &amount);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -38732,9 +44455,9 @@ void HP_logs_zeny_sub(struct map_session_data *sd, e_log_pick_type type, struct
{
HPMHooks.source.logs.zeny_sub(sd, type, src_sd, amount);
}
- if( HPMHooks.count.HP_logs_zeny_sub_post ) {
+ if (HPMHooks.count.HP_logs_zeny_sub_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, e_log_pick_type type, struct map_session_data *src_sd, int amount);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_zeny_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_zeny_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_logs_zeny_sub_post[hIndex].func;
postHookFunc(sd, type, src_sd, amount);
}
@@ -38743,14 +44466,14 @@ void HP_logs_zeny_sub(struct map_session_data *sd, e_log_pick_type type, struct
}
void HP_logs_npc_sub(struct map_session_data *sd, const char *message) {
int hIndex = 0;
- if( HPMHooks.count.HP_logs_npc_sub_pre ) {
+ if (HPMHooks.count.HP_logs_npc_sub_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, const char **message);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_npc_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_npc_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_logs_npc_sub_pre[hIndex].func;
preHookFunc(&sd, &message);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -38758,9 +44481,9 @@ void HP_logs_npc_sub(struct map_session_data *sd, const char *message) {
{
HPMHooks.source.logs.npc_sub(sd, message);
}
- if( HPMHooks.count.HP_logs_npc_sub_post ) {
+ if (HPMHooks.count.HP_logs_npc_sub_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, const char *message);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_npc_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_npc_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_logs_npc_sub_post[hIndex].func;
postHookFunc(sd, message);
}
@@ -38769,14 +44492,14 @@ void HP_logs_npc_sub(struct map_session_data *sd, const char *message) {
}
void HP_logs_chat_sub(e_log_chat_type type, int type_id, int src_charid, int src_accid, const char *mapname, int x, int y, const char *dst_charname, const char *message) {
int hIndex = 0;
- if( HPMHooks.count.HP_logs_chat_sub_pre ) {
+ if (HPMHooks.count.HP_logs_chat_sub_pre > 0) {
void (*preHookFunc) (e_log_chat_type *type, int *type_id, int *src_charid, int *src_accid, const char **mapname, int *x, int *y, const char **dst_charname, const char **message);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_chat_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_chat_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_logs_chat_sub_pre[hIndex].func;
preHookFunc(&type, &type_id, &src_charid, &src_accid, &mapname, &x, &y, &dst_charname, &message);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -38784,9 +44507,9 @@ void HP_logs_chat_sub(e_log_chat_type type, int type_id, int src_charid, int src
{
HPMHooks.source.logs.chat_sub(type, type_id, src_charid, src_accid, mapname, x, y, dst_charname, message);
}
- if( HPMHooks.count.HP_logs_chat_sub_post ) {
+ if (HPMHooks.count.HP_logs_chat_sub_post > 0) {
void (*postHookFunc) (e_log_chat_type type, int type_id, int src_charid, int src_accid, const char *mapname, int x, int y, const char *dst_charname, const char *message);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_chat_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_chat_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_logs_chat_sub_post[hIndex].func;
postHookFunc(type, type_id, src_charid, src_accid, mapname, x, y, dst_charname, message);
}
@@ -38795,14 +44518,14 @@ void HP_logs_chat_sub(e_log_chat_type type, int type_id, int src_charid, int src
}
void HP_logs_atcommand_sub(struct map_session_data *sd, const char *message) {
int hIndex = 0;
- if( HPMHooks.count.HP_logs_atcommand_sub_pre ) {
+ if (HPMHooks.count.HP_logs_atcommand_sub_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, const char **message);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_atcommand_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_atcommand_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_logs_atcommand_sub_pre[hIndex].func;
preHookFunc(&sd, &message);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -38810,9 +44533,9 @@ void HP_logs_atcommand_sub(struct map_session_data *sd, const char *message) {
{
HPMHooks.source.logs.atcommand_sub(sd, message);
}
- if( HPMHooks.count.HP_logs_atcommand_sub_post ) {
+ if (HPMHooks.count.HP_logs_atcommand_sub_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, const char *message);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_atcommand_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_atcommand_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_logs_atcommand_sub_post[hIndex].func;
postHookFunc(sd, message);
}
@@ -38821,14 +44544,14 @@ void HP_logs_atcommand_sub(struct map_session_data *sd, const char *message) {
}
void HP_logs_branch_sub(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_logs_branch_sub_pre ) {
+ if (HPMHooks.count.HP_logs_branch_sub_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_branch_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_branch_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_logs_branch_sub_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -38836,9 +44559,9 @@ void HP_logs_branch_sub(struct map_session_data *sd) {
{
HPMHooks.source.logs.branch_sub(sd);
}
- if( HPMHooks.count.HP_logs_branch_sub_post ) {
+ if (HPMHooks.count.HP_logs_branch_sub_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_branch_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_branch_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_logs_branch_sub_post[hIndex].func;
postHookFunc(sd);
}
@@ -38847,14 +44570,14 @@ void HP_logs_branch_sub(struct map_session_data *sd) {
}
void HP_logs_mvpdrop_sub(struct map_session_data *sd, int monster_id, int *log_mvp) {
int hIndex = 0;
- if( HPMHooks.count.HP_logs_mvpdrop_sub_pre ) {
+ if (HPMHooks.count.HP_logs_mvpdrop_sub_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *monster_id, int **log_mvp);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_mvpdrop_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_mvpdrop_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_logs_mvpdrop_sub_pre[hIndex].func;
preHookFunc(&sd, &monster_id, &log_mvp);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -38862,9 +44585,9 @@ void HP_logs_mvpdrop_sub(struct map_session_data *sd, int monster_id, int *log_m
{
HPMHooks.source.logs.mvpdrop_sub(sd, monster_id, log_mvp);
}
- if( HPMHooks.count.HP_logs_mvpdrop_sub_post ) {
+ if (HPMHooks.count.HP_logs_mvpdrop_sub_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int monster_id, int *log_mvp);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_mvpdrop_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_mvpdrop_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_logs_mvpdrop_sub_post[hIndex].func;
postHookFunc(sd, monster_id, log_mvp);
}
@@ -38874,14 +44597,14 @@ void HP_logs_mvpdrop_sub(struct map_session_data *sd, int monster_id, int *log_m
bool HP_logs_config_read(const char *filename, bool imported) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_logs_config_read_pre ) {
+ if (HPMHooks.count.HP_logs_config_read_pre > 0) {
bool (*preHookFunc) (const char **filename, bool *imported);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_config_read_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_config_read_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_logs_config_read_pre[hIndex].func;
retVal___ = preHookFunc(&filename, &imported);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -38889,9 +44612,9 @@ bool HP_logs_config_read(const char *filename, bool imported) {
{
retVal___ = HPMHooks.source.logs.config_read(filename, imported);
}
- if( HPMHooks.count.HP_logs_config_read_post ) {
+ if (HPMHooks.count.HP_logs_config_read_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *filename, bool imported);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_config_read_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_config_read_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_logs_config_read_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename, imported);
}
@@ -38900,14 +44623,14 @@ bool HP_logs_config_read(const char *filename, bool imported) {
}
void HP_logs_config_done(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_logs_config_done_pre ) {
+ if (HPMHooks.count.HP_logs_config_done_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_config_done_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_config_done_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_logs_config_done_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -38915,9 +44638,9 @@ void HP_logs_config_done(void) {
{
HPMHooks.source.logs.config_done();
}
- if( HPMHooks.count.HP_logs_config_done_post ) {
+ if (HPMHooks.count.HP_logs_config_done_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_config_done_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_config_done_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_logs_config_done_post[hIndex].func;
postHookFunc();
}
@@ -38926,14 +44649,14 @@ void HP_logs_config_done(void) {
}
void HP_logs_sql_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_logs_sql_init_pre ) {
+ if (HPMHooks.count.HP_logs_sql_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_sql_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_sql_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_logs_sql_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -38941,9 +44664,9 @@ void HP_logs_sql_init(void) {
{
HPMHooks.source.logs.sql_init();
}
- if( HPMHooks.count.HP_logs_sql_init_post ) {
+ if (HPMHooks.count.HP_logs_sql_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_sql_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_sql_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_logs_sql_init_post[hIndex].func;
postHookFunc();
}
@@ -38952,14 +44675,14 @@ void HP_logs_sql_init(void) {
}
void HP_logs_sql_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_logs_sql_final_pre ) {
+ if (HPMHooks.count.HP_logs_sql_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_sql_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_sql_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_logs_sql_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -38967,9 +44690,9 @@ void HP_logs_sql_final(void) {
{
HPMHooks.source.logs.sql_final();
}
- if( HPMHooks.count.HP_logs_sql_final_post ) {
+ if (HPMHooks.count.HP_logs_sql_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_sql_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_sql_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_logs_sql_final_post[hIndex].func;
postHookFunc();
}
@@ -38979,14 +44702,14 @@ void HP_logs_sql_final(void) {
char HP_logs_picktype2char(e_log_pick_type type) {
int hIndex = 0;
char retVal___ = 0;
- if( HPMHooks.count.HP_logs_picktype2char_pre ) {
+ if (HPMHooks.count.HP_logs_picktype2char_pre > 0) {
char (*preHookFunc) (e_log_pick_type *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_picktype2char_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_picktype2char_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_logs_picktype2char_pre[hIndex].func;
retVal___ = preHookFunc(&type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -38994,9 +44717,9 @@ char HP_logs_picktype2char(e_log_pick_type type) {
{
retVal___ = HPMHooks.source.logs.picktype2char(type);
}
- if( HPMHooks.count.HP_logs_picktype2char_post ) {
+ if (HPMHooks.count.HP_logs_picktype2char_post > 0) {
char (*postHookFunc) (char retVal___, e_log_pick_type type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_picktype2char_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_picktype2char_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_logs_picktype2char_post[hIndex].func;
retVal___ = postHookFunc(retVal___, type);
}
@@ -39006,14 +44729,14 @@ char HP_logs_picktype2char(e_log_pick_type type) {
char HP_logs_chattype2char(e_log_chat_type type) {
int hIndex = 0;
char retVal___ = 0;
- if( HPMHooks.count.HP_logs_chattype2char_pre ) {
+ if (HPMHooks.count.HP_logs_chattype2char_pre > 0) {
char (*preHookFunc) (e_log_chat_type *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_chattype2char_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_chattype2char_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_logs_chattype2char_pre[hIndex].func;
retVal___ = preHookFunc(&type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -39021,9 +44744,9 @@ char HP_logs_chattype2char(e_log_chat_type type) {
{
retVal___ = HPMHooks.source.logs.chattype2char(type);
}
- if( HPMHooks.count.HP_logs_chattype2char_post ) {
+ if (HPMHooks.count.HP_logs_chattype2char_post > 0) {
char (*postHookFunc) (char retVal___, e_log_chat_type type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_chattype2char_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_chattype2char_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_logs_chattype2char_post[hIndex].func;
retVal___ = postHookFunc(retVal___, type);
}
@@ -39033,14 +44756,14 @@ char HP_logs_chattype2char(e_log_chat_type type) {
bool HP_logs_should_log_item(int nameid, int amount, int refine, struct item_data *id) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_logs_should_log_item_pre ) {
+ if (HPMHooks.count.HP_logs_should_log_item_pre > 0) {
bool (*preHookFunc) (int *nameid, int *amount, int *refine, struct item_data **id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_should_log_item_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_should_log_item_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_logs_should_log_item_pre[hIndex].func;
retVal___ = preHookFunc(&nameid, &amount, &refine, &id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -39048,9 +44771,9 @@ bool HP_logs_should_log_item(int nameid, int amount, int refine, struct item_dat
{
retVal___ = HPMHooks.source.logs.should_log_item(nameid, amount, refine, id);
}
- if( HPMHooks.count.HP_logs_should_log_item_post ) {
+ if (HPMHooks.count.HP_logs_should_log_item_post > 0) {
bool (*postHookFunc) (bool retVal___, int nameid, int amount, int refine, struct item_data *id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_logs_should_log_item_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_logs_should_log_item_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_logs_should_log_item_post[hIndex].func;
retVal___ = postHookFunc(retVal___, nameid, amount, refine, id);
}
@@ -39060,14 +44783,14 @@ bool HP_logs_should_log_item(int nameid, int amount, int refine, struct item_dat
/* mail_interface */
void HP_mail_clear(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_mail_clear_pre ) {
+ if (HPMHooks.count.HP_mail_clear_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mail_clear_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mail_clear_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mail_clear_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -39075,9 +44798,9 @@ void HP_mail_clear(struct map_session_data *sd) {
{
HPMHooks.source.mail.clear(sd);
}
- if( HPMHooks.count.HP_mail_clear_post ) {
+ if (HPMHooks.count.HP_mail_clear_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mail_clear_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mail_clear_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mail_clear_post[hIndex].func;
postHookFunc(sd);
}
@@ -39087,14 +44810,14 @@ void HP_mail_clear(struct map_session_data *sd) {
int HP_mail_removeitem(struct map_session_data *sd, short flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mail_removeitem_pre ) {
+ if (HPMHooks.count.HP_mail_removeitem_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, short *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mail_removeitem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mail_removeitem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mail_removeitem_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -39102,9 +44825,9 @@ int HP_mail_removeitem(struct map_session_data *sd, short flag) {
{
retVal___ = HPMHooks.source.mail.removeitem(sd, flag);
}
- if( HPMHooks.count.HP_mail_removeitem_post ) {
+ if (HPMHooks.count.HP_mail_removeitem_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, short flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mail_removeitem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mail_removeitem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mail_removeitem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, flag);
}
@@ -39114,14 +44837,14 @@ int HP_mail_removeitem(struct map_session_data *sd, short flag) {
int HP_mail_removezeny(struct map_session_data *sd, short flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mail_removezeny_pre ) {
+ if (HPMHooks.count.HP_mail_removezeny_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, short *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mail_removezeny_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mail_removezeny_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mail_removezeny_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -39129,9 +44852,9 @@ int HP_mail_removezeny(struct map_session_data *sd, short flag) {
{
retVal___ = HPMHooks.source.mail.removezeny(sd, flag);
}
- if( HPMHooks.count.HP_mail_removezeny_post ) {
+ if (HPMHooks.count.HP_mail_removezeny_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, short flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mail_removezeny_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mail_removezeny_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mail_removezeny_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, flag);
}
@@ -39141,14 +44864,14 @@ int HP_mail_removezeny(struct map_session_data *sd, short flag) {
unsigned char HP_mail_setitem(struct map_session_data *sd, int idx, int amount) {
int hIndex = 0;
unsigned char retVal___ = 0;
- if( HPMHooks.count.HP_mail_setitem_pre ) {
+ if (HPMHooks.count.HP_mail_setitem_pre > 0) {
unsigned char (*preHookFunc) (struct map_session_data **sd, int *idx, int *amount);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mail_setitem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mail_setitem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mail_setitem_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &idx, &amount);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -39156,9 +44879,9 @@ unsigned char HP_mail_setitem(struct map_session_data *sd, int idx, int amount)
{
retVal___ = HPMHooks.source.mail.setitem(sd, idx, amount);
}
- if( HPMHooks.count.HP_mail_setitem_post ) {
+ if (HPMHooks.count.HP_mail_setitem_post > 0) {
unsigned char (*postHookFunc) (unsigned char retVal___, struct map_session_data *sd, int idx, int amount);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mail_setitem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mail_setitem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mail_setitem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, idx, amount);
}
@@ -39168,14 +44891,14 @@ unsigned char HP_mail_setitem(struct map_session_data *sd, int idx, int amount)
bool HP_mail_setattachment(struct map_session_data *sd, struct mail_message *msg) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_mail_setattachment_pre ) {
+ if (HPMHooks.count.HP_mail_setattachment_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, struct mail_message **msg);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mail_setattachment_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mail_setattachment_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mail_setattachment_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &msg);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -39183,9 +44906,9 @@ bool HP_mail_setattachment(struct map_session_data *sd, struct mail_message *msg
{
retVal___ = HPMHooks.source.mail.setattachment(sd, msg);
}
- if( HPMHooks.count.HP_mail_setattachment_post ) {
+ if (HPMHooks.count.HP_mail_setattachment_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, struct mail_message *msg);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mail_setattachment_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mail_setattachment_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mail_setattachment_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, msg);
}
@@ -39194,14 +44917,14 @@ bool HP_mail_setattachment(struct map_session_data *sd, struct mail_message *msg
}
void HP_mail_getattachment(struct map_session_data *sd, int zeny, struct item *item) {
int hIndex = 0;
- if( HPMHooks.count.HP_mail_getattachment_pre ) {
+ if (HPMHooks.count.HP_mail_getattachment_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *zeny, struct item **item);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mail_getattachment_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mail_getattachment_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mail_getattachment_pre[hIndex].func;
preHookFunc(&sd, &zeny, &item);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -39209,9 +44932,9 @@ void HP_mail_getattachment(struct map_session_data *sd, int zeny, struct item *i
{
HPMHooks.source.mail.getattachment(sd, zeny, item);
}
- if( HPMHooks.count.HP_mail_getattachment_post ) {
+ if (HPMHooks.count.HP_mail_getattachment_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int zeny, struct item *item);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mail_getattachment_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mail_getattachment_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mail_getattachment_post[hIndex].func;
postHookFunc(sd, zeny, item);
}
@@ -39221,14 +44944,14 @@ void HP_mail_getattachment(struct map_session_data *sd, int zeny, struct item *i
int HP_mail_openmail(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mail_openmail_pre ) {
+ if (HPMHooks.count.HP_mail_openmail_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mail_openmail_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mail_openmail_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mail_openmail_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -39236,9 +44959,9 @@ int HP_mail_openmail(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.mail.openmail(sd);
}
- if( HPMHooks.count.HP_mail_openmail_post ) {
+ if (HPMHooks.count.HP_mail_openmail_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mail_openmail_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mail_openmail_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mail_openmail_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -39247,14 +44970,14 @@ int HP_mail_openmail(struct map_session_data *sd) {
}
void HP_mail_deliveryfail(struct map_session_data *sd, struct mail_message *msg) {
int hIndex = 0;
- if( HPMHooks.count.HP_mail_deliveryfail_pre ) {
+ if (HPMHooks.count.HP_mail_deliveryfail_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct mail_message **msg);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mail_deliveryfail_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mail_deliveryfail_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mail_deliveryfail_pre[hIndex].func;
preHookFunc(&sd, &msg);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -39262,9 +44985,9 @@ void HP_mail_deliveryfail(struct map_session_data *sd, struct mail_message *msg)
{
HPMHooks.source.mail.deliveryfail(sd, msg);
}
- if( HPMHooks.count.HP_mail_deliveryfail_post ) {
+ if (HPMHooks.count.HP_mail_deliveryfail_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct mail_message *msg);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mail_deliveryfail_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mail_deliveryfail_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mail_deliveryfail_post[hIndex].func;
postHookFunc(sd, msg);
}
@@ -39274,14 +44997,14 @@ void HP_mail_deliveryfail(struct map_session_data *sd, struct mail_message *msg)
bool HP_mail_invalid_operation(struct map_session_data *sd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_mail_invalid_operation_pre ) {
+ if (HPMHooks.count.HP_mail_invalid_operation_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mail_invalid_operation_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mail_invalid_operation_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mail_invalid_operation_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -39289,9 +45012,9 @@ bool HP_mail_invalid_operation(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.mail.invalid_operation(sd);
}
- if( HPMHooks.count.HP_mail_invalid_operation_post ) {
+ if (HPMHooks.count.HP_mail_invalid_operation_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mail_invalid_operation_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mail_invalid_operation_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mail_invalid_operation_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -39301,14 +45024,14 @@ bool HP_mail_invalid_operation(struct map_session_data *sd) {
/* map_interface */
void HP_map_zone_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_zone_init_pre ) {
+ if (HPMHooks.count.HP_map_zone_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_zone_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -39316,9 +45039,9 @@ void HP_map_zone_init(void) {
{
HPMHooks.source.map.zone_init();
}
- if( HPMHooks.count.HP_map_zone_init_post ) {
+ if (HPMHooks.count.HP_map_zone_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_zone_init_post[hIndex].func;
postHookFunc();
}
@@ -39327,14 +45050,14 @@ void HP_map_zone_init(void) {
}
void HP_map_zone_remove(int m) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_zone_remove_pre ) {
+ if (HPMHooks.count.HP_map_zone_remove_pre > 0) {
void (*preHookFunc) (int *m);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_remove_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_remove_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_zone_remove_pre[hIndex].func;
preHookFunc(&m);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -39342,25 +45065,51 @@ void HP_map_zone_remove(int m) {
{
HPMHooks.source.map.zone_remove(m);
}
- if( HPMHooks.count.HP_map_zone_remove_post ) {
+ if (HPMHooks.count.HP_map_zone_remove_post > 0) {
void (*postHookFunc) (int m);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_remove_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_remove_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_zone_remove_post[hIndex].func;
postHookFunc(m);
}
}
return;
}
+void HP_map_zone_remove_all(int m) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_map_zone_remove_all_pre > 0) {
+ void (*preHookFunc) (int *m);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_remove_all_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_map_zone_remove_all_pre[hIndex].func;
+ preHookFunc(&m);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.map.zone_remove_all(m);
+ }
+ if (HPMHooks.count.HP_map_zone_remove_all_post > 0) {
+ void (*postHookFunc) (int m);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_remove_all_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_map_zone_remove_all_post[hIndex].func;
+ postHookFunc(m);
+ }
+ }
+ return;
+}
void HP_map_zone_apply(int m, struct map_zone_data *zone, const char *start, const char *buffer, const char *filepath) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_zone_apply_pre ) {
+ if (HPMHooks.count.HP_map_zone_apply_pre > 0) {
void (*preHookFunc) (int *m, struct map_zone_data **zone, const char **start, const char **buffer, const char **filepath);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_apply_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_apply_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_zone_apply_pre[hIndex].func;
preHookFunc(&m, &zone, &start, &buffer, &filepath);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -39368,9 +45117,9 @@ void HP_map_zone_apply(int m, struct map_zone_data *zone, const char *start, con
{
HPMHooks.source.map.zone_apply(m, zone, start, buffer, filepath);
}
- if( HPMHooks.count.HP_map_zone_apply_post ) {
+ if (HPMHooks.count.HP_map_zone_apply_post > 0) {
void (*postHookFunc) (int m, struct map_zone_data *zone, const char *start, const char *buffer, const char *filepath);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_apply_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_apply_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_zone_apply_post[hIndex].func;
postHookFunc(m, zone, start, buffer, filepath);
}
@@ -39379,14 +45128,14 @@ void HP_map_zone_apply(int m, struct map_zone_data *zone, const char *start, con
}
void HP_map_zone_change(int m, struct map_zone_data *zone, const char *start, const char *buffer, const char *filepath) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_zone_change_pre ) {
+ if (HPMHooks.count.HP_map_zone_change_pre > 0) {
void (*preHookFunc) (int *m, struct map_zone_data **zone, const char **start, const char **buffer, const char **filepath);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_change_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_change_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_zone_change_pre[hIndex].func;
preHookFunc(&m, &zone, &start, &buffer, &filepath);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -39394,9 +45143,9 @@ void HP_map_zone_change(int m, struct map_zone_data *zone, const char *start, co
{
HPMHooks.source.map.zone_change(m, zone, start, buffer, filepath);
}
- if( HPMHooks.count.HP_map_zone_change_post ) {
+ if (HPMHooks.count.HP_map_zone_change_post > 0) {
void (*postHookFunc) (int m, struct map_zone_data *zone, const char *start, const char *buffer, const char *filepath);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_change_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_change_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_zone_change_post[hIndex].func;
postHookFunc(m, zone, start, buffer, filepath);
}
@@ -39405,14 +45154,14 @@ void HP_map_zone_change(int m, struct map_zone_data *zone, const char *start, co
}
void HP_map_zone_change2(int m, struct map_zone_data *zone) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_zone_change2_pre ) {
+ if (HPMHooks.count.HP_map_zone_change2_pre > 0) {
void (*preHookFunc) (int *m, struct map_zone_data **zone);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_change2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_change2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_zone_change2_pre[hIndex].func;
preHookFunc(&m, &zone);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -39420,26 +45169,52 @@ void HP_map_zone_change2(int m, struct map_zone_data *zone) {
{
HPMHooks.source.map.zone_change2(m, zone);
}
- if( HPMHooks.count.HP_map_zone_change2_post ) {
+ if (HPMHooks.count.HP_map_zone_change2_post > 0) {
void (*postHookFunc) (int m, struct map_zone_data *zone);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_change2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_change2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_zone_change2_post[hIndex].func;
postHookFunc(m, zone);
}
}
return;
}
+void HP_map_zone_reload(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_map_zone_reload_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_reload_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_map_zone_reload_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.map.zone_reload();
+ }
+ if (HPMHooks.count.HP_map_zone_reload_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_reload_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_map_zone_reload_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
int HP_map_getcell(int16 m, const struct block_list *bl, int16 x, int16 y, cell_chk cellchk) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_getcell_pre ) {
+ if (HPMHooks.count.HP_map_getcell_pre > 0) {
int (*preHookFunc) (int16 *m, const struct block_list **bl, int16 *x, int16 *y, cell_chk *cellchk);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_getcell_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_getcell_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_getcell_pre[hIndex].func;
retVal___ = preHookFunc(&m, &bl, &x, &y, &cellchk);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -39447,9 +45222,9 @@ int HP_map_getcell(int16 m, const struct block_list *bl, int16 x, int16 y, cell_
{
retVal___ = HPMHooks.source.map.getcell(m, bl, x, y, cellchk);
}
- if( HPMHooks.count.HP_map_getcell_post ) {
+ if (HPMHooks.count.HP_map_getcell_post > 0) {
int (*postHookFunc) (int retVal___, int16 m, const struct block_list *bl, int16 x, int16 y, cell_chk cellchk);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_getcell_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_getcell_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_getcell_post[hIndex].func;
retVal___ = postHookFunc(retVal___, m, bl, x, y, cellchk);
}
@@ -39458,14 +45233,14 @@ int HP_map_getcell(int16 m, const struct block_list *bl, int16 x, int16 y, cell_
}
void HP_map_setgatcell(int16 m, int16 x, int16 y, int gat) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_setgatcell_pre ) {
+ if (HPMHooks.count.HP_map_setgatcell_pre > 0) {
void (*preHookFunc) (int16 *m, int16 *x, int16 *y, int *gat);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_setgatcell_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_setgatcell_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_setgatcell_pre[hIndex].func;
preHookFunc(&m, &x, &y, &gat);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -39473,9 +45248,9 @@ void HP_map_setgatcell(int16 m, int16 x, int16 y, int gat) {
{
HPMHooks.source.map.setgatcell(m, x, y, gat);
}
- if( HPMHooks.count.HP_map_setgatcell_post ) {
+ if (HPMHooks.count.HP_map_setgatcell_post > 0) {
void (*postHookFunc) (int16 m, int16 x, int16 y, int gat);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_setgatcell_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_setgatcell_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_setgatcell_post[hIndex].func;
postHookFunc(m, x, y, gat);
}
@@ -39484,14 +45259,14 @@ void HP_map_setgatcell(int16 m, int16 x, int16 y, int gat) {
}
void HP_map_cellfromcache(struct map_data *m) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_cellfromcache_pre ) {
+ if (HPMHooks.count.HP_map_cellfromcache_pre > 0) {
void (*preHookFunc) (struct map_data **m);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_cellfromcache_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_cellfromcache_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_cellfromcache_pre[hIndex].func;
preHookFunc(&m);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -39499,9 +45274,9 @@ void HP_map_cellfromcache(struct map_data *m) {
{
HPMHooks.source.map.cellfromcache(m);
}
- if( HPMHooks.count.HP_map_cellfromcache_post ) {
+ if (HPMHooks.count.HP_map_cellfromcache_post > 0) {
void (*postHookFunc) (struct map_data *m);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_cellfromcache_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_cellfromcache_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_cellfromcache_post[hIndex].func;
postHookFunc(m);
}
@@ -39510,14 +45285,14 @@ void HP_map_cellfromcache(struct map_data *m) {
}
void HP_map_setusers(int p1) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_setusers_pre ) {
+ if (HPMHooks.count.HP_map_setusers_pre > 0) {
void (*preHookFunc) (int *p1);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_setusers_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_setusers_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_setusers_pre[hIndex].func;
preHookFunc(&p1);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -39525,9 +45300,9 @@ void HP_map_setusers(int p1) {
{
HPMHooks.source.map.setusers(p1);
}
- if( HPMHooks.count.HP_map_setusers_post ) {
+ if (HPMHooks.count.HP_map_setusers_post > 0) {
void (*postHookFunc) (int p1);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_setusers_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_setusers_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_setusers_post[hIndex].func;
postHookFunc(p1);
}
@@ -39537,14 +45312,14 @@ void HP_map_setusers(int p1) {
int HP_map_getusers(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_getusers_pre ) {
+ if (HPMHooks.count.HP_map_getusers_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_getusers_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_getusers_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_getusers_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -39552,9 +45327,9 @@ int HP_map_getusers(void) {
{
retVal___ = HPMHooks.source.map.getusers();
}
- if( HPMHooks.count.HP_map_getusers_post ) {
+ if (HPMHooks.count.HP_map_getusers_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_getusers_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_getusers_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_getusers_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -39564,14 +45339,14 @@ int HP_map_getusers(void) {
int HP_map_usercount(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_usercount_pre ) {
+ if (HPMHooks.count.HP_map_usercount_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_usercount_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_usercount_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_usercount_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -39579,9 +45354,9 @@ int HP_map_usercount(void) {
{
retVal___ = HPMHooks.source.map.usercount();
}
- if( HPMHooks.count.HP_map_usercount_post ) {
+ if (HPMHooks.count.HP_map_usercount_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_usercount_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_usercount_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_usercount_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -39591,14 +45366,14 @@ int HP_map_usercount(void) {
int HP_map_freeblock(struct block_list *bl) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_freeblock_pre ) {
+ if (HPMHooks.count.HP_map_freeblock_pre > 0) {
int (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_freeblock_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_freeblock_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_freeblock_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -39606,9 +45381,9 @@ int HP_map_freeblock(struct block_list *bl) {
{
retVal___ = HPMHooks.source.map.freeblock(bl);
}
- if( HPMHooks.count.HP_map_freeblock_post ) {
+ if (HPMHooks.count.HP_map_freeblock_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_freeblock_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_freeblock_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_freeblock_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -39618,14 +45393,14 @@ int HP_map_freeblock(struct block_list *bl) {
int HP_map_freeblock_lock(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_freeblock_lock_pre ) {
+ if (HPMHooks.count.HP_map_freeblock_lock_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_freeblock_lock_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_freeblock_lock_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_freeblock_lock_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -39633,9 +45408,9 @@ int HP_map_freeblock_lock(void) {
{
retVal___ = HPMHooks.source.map.freeblock_lock();
}
- if( HPMHooks.count.HP_map_freeblock_lock_post ) {
+ if (HPMHooks.count.HP_map_freeblock_lock_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_freeblock_lock_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_freeblock_lock_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_freeblock_lock_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -39645,14 +45420,14 @@ int HP_map_freeblock_lock(void) {
int HP_map_freeblock_unlock(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_freeblock_unlock_pre ) {
+ if (HPMHooks.count.HP_map_freeblock_unlock_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_freeblock_unlock_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_freeblock_unlock_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_freeblock_unlock_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -39660,9 +45435,9 @@ int HP_map_freeblock_unlock(void) {
{
retVal___ = HPMHooks.source.map.freeblock_unlock();
}
- if( HPMHooks.count.HP_map_freeblock_unlock_post ) {
+ if (HPMHooks.count.HP_map_freeblock_unlock_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_freeblock_unlock_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_freeblock_unlock_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_freeblock_unlock_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -39672,14 +45447,14 @@ int HP_map_freeblock_unlock(void) {
int HP_map_addblock(struct block_list *bl) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_addblock_pre ) {
+ if (HPMHooks.count.HP_map_addblock_pre > 0) {
int (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_addblock_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_addblock_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_addblock_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -39687,9 +45462,9 @@ int HP_map_addblock(struct block_list *bl) {
{
retVal___ = HPMHooks.source.map.addblock(bl);
}
- if( HPMHooks.count.HP_map_addblock_post ) {
+ if (HPMHooks.count.HP_map_addblock_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_addblock_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_addblock_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_addblock_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -39699,14 +45474,14 @@ int HP_map_addblock(struct block_list *bl) {
int HP_map_delblock(struct block_list *bl) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_delblock_pre ) {
+ if (HPMHooks.count.HP_map_delblock_pre > 0) {
int (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_delblock_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_delblock_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_delblock_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -39714,9 +45489,9 @@ int HP_map_delblock(struct block_list *bl) {
{
retVal___ = HPMHooks.source.map.delblock(bl);
}
- if( HPMHooks.count.HP_map_delblock_post ) {
+ if (HPMHooks.count.HP_map_delblock_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_delblock_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_delblock_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_delblock_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -39726,14 +45501,14 @@ int HP_map_delblock(struct block_list *bl) {
int HP_map_moveblock(struct block_list *bl, int x1, int y1, int64 tick) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_moveblock_pre ) {
+ if (HPMHooks.count.HP_map_moveblock_pre > 0) {
int (*preHookFunc) (struct block_list **bl, int *x1, int *y1, int64 *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_moveblock_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_moveblock_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_moveblock_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &x1, &y1, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -39741,9 +45516,9 @@ int HP_map_moveblock(struct block_list *bl, int x1, int y1, int64 tick) {
{
retVal___ = HPMHooks.source.map.moveblock(bl, x1, y1, tick);
}
- if( HPMHooks.count.HP_map_moveblock_post ) {
+ if (HPMHooks.count.HP_map_moveblock_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, int x1, int y1, int64 tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_moveblock_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_moveblock_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_moveblock_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, x1, y1, tick);
}
@@ -39753,14 +45528,14 @@ int HP_map_moveblock(struct block_list *bl, int x1, int y1, int64 tick) {
int HP_map_count_oncell(int16 m, int16 x, int16 y, int type, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_count_oncell_pre ) {
+ if (HPMHooks.count.HP_map_count_oncell_pre > 0) {
int (*preHookFunc) (int16 *m, int16 *x, int16 *y, int *type, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_count_oncell_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_count_oncell_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_count_oncell_pre[hIndex].func;
retVal___ = preHookFunc(&m, &x, &y, &type, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -39768,9 +45543,9 @@ int HP_map_count_oncell(int16 m, int16 x, int16 y, int type, int flag) {
{
retVal___ = HPMHooks.source.map.count_oncell(m, x, y, type, flag);
}
- if( HPMHooks.count.HP_map_count_oncell_post ) {
+ if (HPMHooks.count.HP_map_count_oncell_post > 0) {
int (*postHookFunc) (int retVal___, int16 m, int16 x, int16 y, int type, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_count_oncell_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_count_oncell_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_count_oncell_post[hIndex].func;
retVal___ = postHookFunc(retVal___, m, x, y, type, flag);
}
@@ -39780,14 +45555,14 @@ int HP_map_count_oncell(int16 m, int16 x, int16 y, int type, int flag) {
struct skill_unit* HP_map_find_skill_unit_oncell(struct block_list *target, int16 x, int16 y, uint16 skill_id, struct skill_unit *out_unit, int flag) {
int hIndex = 0;
struct skill_unit* retVal___ = NULL;
- if( HPMHooks.count.HP_map_find_skill_unit_oncell_pre ) {
+ if (HPMHooks.count.HP_map_find_skill_unit_oncell_pre > 0) {
struct skill_unit* (*preHookFunc) (struct block_list **target, int16 *x, int16 *y, uint16 *skill_id, struct skill_unit **out_unit, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_find_skill_unit_oncell_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_find_skill_unit_oncell_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_find_skill_unit_oncell_pre[hIndex].func;
retVal___ = preHookFunc(&target, &x, &y, &skill_id, &out_unit, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -39795,9 +45570,9 @@ struct skill_unit* HP_map_find_skill_unit_oncell(struct block_list *target, int1
{
retVal___ = HPMHooks.source.map.find_skill_unit_oncell(target, x, y, skill_id, out_unit, flag);
}
- if( HPMHooks.count.HP_map_find_skill_unit_oncell_post ) {
+ if (HPMHooks.count.HP_map_find_skill_unit_oncell_post > 0) {
struct skill_unit* (*postHookFunc) (struct skill_unit* retVal___, struct block_list *target, int16 x, int16 y, uint16 skill_id, struct skill_unit *out_unit, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_find_skill_unit_oncell_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_find_skill_unit_oncell_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_find_skill_unit_oncell_post[hIndex].func;
retVal___ = postHookFunc(retVal___, target, x, y, skill_id, out_unit, flag);
}
@@ -39807,14 +45582,14 @@ struct skill_unit* HP_map_find_skill_unit_oncell(struct block_list *target, int1
int HP_map_get_new_object_id(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_get_new_object_id_pre ) {
+ if (HPMHooks.count.HP_map_get_new_object_id_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_get_new_object_id_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_get_new_object_id_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_get_new_object_id_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -39822,9 +45597,9 @@ int HP_map_get_new_object_id(void) {
{
retVal___ = HPMHooks.source.map.get_new_object_id();
}
- if( HPMHooks.count.HP_map_get_new_object_id_post ) {
+ if (HPMHooks.count.HP_map_get_new_object_id_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_get_new_object_id_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_get_new_object_id_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_get_new_object_id_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -39834,14 +45609,14 @@ int HP_map_get_new_object_id(void) {
int HP_map_search_freecell(struct block_list *src, int16 m, int16 *x, int16 *y, int16 rx, int16 ry, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_search_freecell_pre ) {
+ if (HPMHooks.count.HP_map_search_freecell_pre > 0) {
int (*preHookFunc) (struct block_list **src, int16 *m, int16 **x, int16 **y, int16 *rx, int16 *ry, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_search_freecell_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_search_freecell_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_search_freecell_pre[hIndex].func;
retVal___ = preHookFunc(&src, &m, &x, &y, &rx, &ry, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -39849,9 +45624,9 @@ int HP_map_search_freecell(struct block_list *src, int16 m, int16 *x, int16 *y,
{
retVal___ = HPMHooks.source.map.search_freecell(src, m, x, y, rx, ry, flag);
}
- if( HPMHooks.count.HP_map_search_freecell_post ) {
+ if (HPMHooks.count.HP_map_search_freecell_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src, int16 m, int16 *x, int16 *y, int16 rx, int16 ry, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_search_freecell_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_search_freecell_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_search_freecell_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, m, x, y, rx, ry, flag);
}
@@ -39861,14 +45636,14 @@ int HP_map_search_freecell(struct block_list *src, int16 m, int16 *x, int16 *y,
bool HP_map_closest_freecell(int16 m, const struct block_list *bl, int16 *x, int16 *y, int type, int flag) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_map_closest_freecell_pre ) {
+ if (HPMHooks.count.HP_map_closest_freecell_pre > 0) {
bool (*preHookFunc) (int16 *m, const struct block_list **bl, int16 **x, int16 **y, int *type, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_closest_freecell_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_closest_freecell_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_closest_freecell_pre[hIndex].func;
retVal___ = preHookFunc(&m, &bl, &x, &y, &type, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -39876,9 +45651,9 @@ bool HP_map_closest_freecell(int16 m, const struct block_list *bl, int16 *x, int
{
retVal___ = HPMHooks.source.map.closest_freecell(m, bl, x, y, type, flag);
}
- if( HPMHooks.count.HP_map_closest_freecell_post ) {
+ if (HPMHooks.count.HP_map_closest_freecell_post > 0) {
bool (*postHookFunc) (bool retVal___, int16 m, const struct block_list *bl, int16 *x, int16 *y, int type, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_closest_freecell_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_closest_freecell_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_closest_freecell_post[hIndex].func;
retVal___ = postHookFunc(retVal___, m, bl, x, y, type, flag);
}
@@ -39888,14 +45663,14 @@ bool HP_map_closest_freecell(int16 m, const struct block_list *bl, int16 *x, int
int HP_map_quit(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_quit_pre ) {
+ if (HPMHooks.count.HP_map_quit_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_quit_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_quit_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_quit_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -39903,9 +45678,9 @@ int HP_map_quit(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.map.quit(sd);
}
- if( HPMHooks.count.HP_map_quit_post ) {
+ if (HPMHooks.count.HP_map_quit_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_quit_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_quit_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_quit_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -39915,14 +45690,14 @@ int HP_map_quit(struct map_session_data *sd) {
bool HP_map_addnpc(int16 m, struct npc_data *nd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_map_addnpc_pre ) {
+ if (HPMHooks.count.HP_map_addnpc_pre > 0) {
bool (*preHookFunc) (int16 *m, struct npc_data **nd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_addnpc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_addnpc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_addnpc_pre[hIndex].func;
retVal___ = preHookFunc(&m, &nd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -39930,9 +45705,9 @@ bool HP_map_addnpc(int16 m, struct npc_data *nd) {
{
retVal___ = HPMHooks.source.map.addnpc(m, nd);
}
- if( HPMHooks.count.HP_map_addnpc_post ) {
+ if (HPMHooks.count.HP_map_addnpc_post > 0) {
bool (*postHookFunc) (bool retVal___, int16 m, struct npc_data *nd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_addnpc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_addnpc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_addnpc_post[hIndex].func;
retVal___ = postHookFunc(retVal___, m, nd);
}
@@ -39942,14 +45717,14 @@ bool HP_map_addnpc(int16 m, struct npc_data *nd) {
int HP_map_clearflooritem_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_clearflooritem_timer_pre ) {
+ if (HPMHooks.count.HP_map_clearflooritem_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_clearflooritem_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_clearflooritem_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_clearflooritem_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -39957,9 +45732,9 @@ int HP_map_clearflooritem_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.map.clearflooritem_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_map_clearflooritem_timer_post ) {
+ if (HPMHooks.count.HP_map_clearflooritem_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_clearflooritem_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_clearflooritem_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_clearflooritem_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -39969,14 +45744,14 @@ int HP_map_clearflooritem_timer(int tid, int64 tick, int id, intptr_t data) {
int HP_map_removemobs_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_removemobs_timer_pre ) {
+ if (HPMHooks.count.HP_map_removemobs_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_removemobs_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_removemobs_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_removemobs_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -39984,9 +45759,9 @@ int HP_map_removemobs_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.map.removemobs_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_map_removemobs_timer_post ) {
+ if (HPMHooks.count.HP_map_removemobs_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_removemobs_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_removemobs_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_removemobs_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -39995,14 +45770,14 @@ int HP_map_removemobs_timer(int tid, int64 tick, int id, intptr_t data) {
}
void HP_map_clearflooritem(struct block_list *bl) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_clearflooritem_pre ) {
+ if (HPMHooks.count.HP_map_clearflooritem_pre > 0) {
void (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_clearflooritem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_clearflooritem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_clearflooritem_pre[hIndex].func;
preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -40010,52 +45785,52 @@ void HP_map_clearflooritem(struct block_list *bl) {
{
HPMHooks.source.map.clearflooritem(bl);
}
- if( HPMHooks.count.HP_map_clearflooritem_post ) {
+ if (HPMHooks.count.HP_map_clearflooritem_post > 0) {
void (*postHookFunc) (struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_clearflooritem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_clearflooritem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_clearflooritem_post[hIndex].func;
postHookFunc(bl);
}
}
return;
}
-int HP_map_addflooritem(const struct block_list *bl, struct item *item_data, int amount, int16 m, int16 x, int16 y, int first_charid, int second_charid, int third_charid, int flags) {
+int HP_map_addflooritem(const struct block_list *bl, struct item *item_data, int amount, int16 m, int16 x, int16 y, int first_charid, int second_charid, int third_charid, int flags, bool showdropeffect) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_addflooritem_pre ) {
- int (*preHookFunc) (const struct block_list **bl, struct item **item_data, int *amount, int16 *m, int16 *x, int16 *y, int *first_charid, int *second_charid, int *third_charid, int *flags);
+ if (HPMHooks.count.HP_map_addflooritem_pre > 0) {
+ int (*preHookFunc) (const struct block_list **bl, struct item **item_data, int *amount, int16 *m, int16 *x, int16 *y, int *first_charid, int *second_charid, int *third_charid, int *flags, bool *showdropeffect);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_addflooritem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_addflooritem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_addflooritem_pre[hIndex].func;
- retVal___ = preHookFunc(&bl, &item_data, &amount, &m, &x, &y, &first_charid, &second_charid, &third_charid, &flags);
+ retVal___ = preHookFunc(&bl, &item_data, &amount, &m, &x, &y, &first_charid, &second_charid, &third_charid, &flags, &showdropeffect);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
}
{
- retVal___ = HPMHooks.source.map.addflooritem(bl, item_data, amount, m, x, y, first_charid, second_charid, third_charid, flags);
+ retVal___ = HPMHooks.source.map.addflooritem(bl, item_data, amount, m, x, y, first_charid, second_charid, third_charid, flags, showdropeffect);
}
- if( HPMHooks.count.HP_map_addflooritem_post ) {
- int (*postHookFunc) (int retVal___, const struct block_list *bl, struct item *item_data, int amount, int16 m, int16 x, int16 y, int first_charid, int second_charid, int third_charid, int flags);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_addflooritem_post; hIndex++ ) {
+ if (HPMHooks.count.HP_map_addflooritem_post > 0) {
+ int (*postHookFunc) (int retVal___, const struct block_list *bl, struct item *item_data, int amount, int16 m, int16 x, int16 y, int first_charid, int second_charid, int third_charid, int flags, bool showdropeffect);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_addflooritem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_addflooritem_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, bl, item_data, amount, m, x, y, first_charid, second_charid, third_charid, flags);
+ retVal___ = postHookFunc(retVal___, bl, item_data, amount, m, x, y, first_charid, second_charid, third_charid, flags, showdropeffect);
}
}
return retVal___;
}
void HP_map_addnickdb(int charid, const char *nick) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_addnickdb_pre ) {
+ if (HPMHooks.count.HP_map_addnickdb_pre > 0) {
void (*preHookFunc) (int *charid, const char **nick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_addnickdb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_addnickdb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_addnickdb_pre[hIndex].func;
preHookFunc(&charid, &nick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -40063,9 +45838,9 @@ void HP_map_addnickdb(int charid, const char *nick) {
{
HPMHooks.source.map.addnickdb(charid, nick);
}
- if( HPMHooks.count.HP_map_addnickdb_post ) {
+ if (HPMHooks.count.HP_map_addnickdb_post > 0) {
void (*postHookFunc) (int charid, const char *nick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_addnickdb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_addnickdb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_addnickdb_post[hIndex].func;
postHookFunc(charid, nick);
}
@@ -40074,14 +45849,14 @@ void HP_map_addnickdb(int charid, const char *nick) {
}
void HP_map_delnickdb(int charid, const char *nick) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_delnickdb_pre ) {
+ if (HPMHooks.count.HP_map_delnickdb_pre > 0) {
void (*preHookFunc) (int *charid, const char **nick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_delnickdb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_delnickdb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_delnickdb_pre[hIndex].func;
preHookFunc(&charid, &nick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -40089,9 +45864,9 @@ void HP_map_delnickdb(int charid, const char *nick) {
{
HPMHooks.source.map.delnickdb(charid, nick);
}
- if( HPMHooks.count.HP_map_delnickdb_post ) {
+ if (HPMHooks.count.HP_map_delnickdb_post > 0) {
void (*postHookFunc) (int charid, const char *nick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_delnickdb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_delnickdb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_delnickdb_post[hIndex].func;
postHookFunc(charid, nick);
}
@@ -40100,14 +45875,14 @@ void HP_map_delnickdb(int charid, const char *nick) {
}
void HP_map_reqnickdb(struct map_session_data *sd, int charid) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_reqnickdb_pre ) {
+ if (HPMHooks.count.HP_map_reqnickdb_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *charid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_reqnickdb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_reqnickdb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_reqnickdb_pre[hIndex].func;
preHookFunc(&sd, &charid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -40115,9 +45890,9 @@ void HP_map_reqnickdb(struct map_session_data *sd, int charid) {
{
HPMHooks.source.map.reqnickdb(sd, charid);
}
- if( HPMHooks.count.HP_map_reqnickdb_post ) {
+ if (HPMHooks.count.HP_map_reqnickdb_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int charid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_reqnickdb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_reqnickdb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_reqnickdb_post[hIndex].func;
postHookFunc(sd, charid);
}
@@ -40127,14 +45902,14 @@ void HP_map_reqnickdb(struct map_session_data *sd, int charid) {
const char* HP_map_charid2nick(int charid) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_map_charid2nick_pre ) {
+ if (HPMHooks.count.HP_map_charid2nick_pre > 0) {
const char* (*preHookFunc) (int *charid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_charid2nick_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_charid2nick_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_charid2nick_pre[hIndex].func;
retVal___ = preHookFunc(&charid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -40142,9 +45917,9 @@ const char* HP_map_charid2nick(int charid) {
{
retVal___ = HPMHooks.source.map.charid2nick(charid);
}
- if( HPMHooks.count.HP_map_charid2nick_post ) {
+ if (HPMHooks.count.HP_map_charid2nick_post > 0) {
const char* (*postHookFunc) (const char* retVal___, int charid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_charid2nick_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_charid2nick_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_charid2nick_post[hIndex].func;
retVal___ = postHookFunc(retVal___, charid);
}
@@ -40154,14 +45929,14 @@ const char* HP_map_charid2nick(int charid) {
struct map_session_data* HP_map_charid2sd(int charid) {
int hIndex = 0;
struct map_session_data* retVal___ = NULL;
- if( HPMHooks.count.HP_map_charid2sd_pre ) {
+ if (HPMHooks.count.HP_map_charid2sd_pre > 0) {
struct map_session_data* (*preHookFunc) (int *charid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_charid2sd_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_charid2sd_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_charid2sd_pre[hIndex].func;
retVal___ = preHookFunc(&charid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -40169,9 +45944,9 @@ struct map_session_data* HP_map_charid2sd(int charid) {
{
retVal___ = HPMHooks.source.map.charid2sd(charid);
}
- if( HPMHooks.count.HP_map_charid2sd_post ) {
+ if (HPMHooks.count.HP_map_charid2sd_post > 0) {
struct map_session_data* (*postHookFunc) (struct map_session_data* retVal___, int charid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_charid2sd_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_charid2sd_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_charid2sd_post[hIndex].func;
retVal___ = postHookFunc(retVal___, charid);
}
@@ -40180,16 +45955,16 @@ struct map_session_data* HP_map_charid2sd(int charid) {
}
void HP_map_vforeachpc(int ( *func ) (struct map_session_data *sd, va_list args), va_list args) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_vforeachpc_pre ) {
+ if (HPMHooks.count.HP_map_vforeachpc_pre > 0) {
void (*preHookFunc) (int ( **func ) (struct map_session_data *sd, va_list args), va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachpc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachpc_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_map_vforeachpc_pre[hIndex].func;
preHookFunc(&func, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -40199,9 +45974,9 @@ void HP_map_vforeachpc(int ( *func ) (struct map_session_data *sd, va_list args)
HPMHooks.source.map.vforeachpc(func, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_map_vforeachpc_post ) {
+ if (HPMHooks.count.HP_map_vforeachpc_post > 0) {
void (*postHookFunc) (int ( *func ) (struct map_session_data *sd, va_list args), va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachpc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachpc_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_map_vforeachpc_post[hIndex].func;
postHookFunc(func, args___copy);
@@ -40212,16 +45987,16 @@ void HP_map_vforeachpc(int ( *func ) (struct map_session_data *sd, va_list args)
}
void HP_map_vforeachmob(int ( *func ) (struct mob_data *md, va_list args), va_list args) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_vforeachmob_pre ) {
+ if (HPMHooks.count.HP_map_vforeachmob_pre > 0) {
void (*preHookFunc) (int ( **func ) (struct mob_data *md, va_list args), va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachmob_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachmob_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_map_vforeachmob_pre[hIndex].func;
preHookFunc(&func, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -40231,9 +46006,9 @@ void HP_map_vforeachmob(int ( *func ) (struct mob_data *md, va_list args), va_li
HPMHooks.source.map.vforeachmob(func, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_map_vforeachmob_post ) {
+ if (HPMHooks.count.HP_map_vforeachmob_post > 0) {
void (*postHookFunc) (int ( *func ) (struct mob_data *md, va_list args), va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachmob_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachmob_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_map_vforeachmob_post[hIndex].func;
postHookFunc(func, args___copy);
@@ -40244,16 +46019,16 @@ void HP_map_vforeachmob(int ( *func ) (struct mob_data *md, va_list args), va_li
}
void HP_map_vforeachnpc(int ( *func ) (struct npc_data *nd, va_list args), va_list args) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_vforeachnpc_pre ) {
+ if (HPMHooks.count.HP_map_vforeachnpc_pre > 0) {
void (*preHookFunc) (int ( **func ) (struct npc_data *nd, va_list args), va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachnpc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachnpc_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_map_vforeachnpc_pre[hIndex].func;
preHookFunc(&func, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -40263,9 +46038,9 @@ void HP_map_vforeachnpc(int ( *func ) (struct npc_data *nd, va_list args), va_li
HPMHooks.source.map.vforeachnpc(func, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_map_vforeachnpc_post ) {
+ if (HPMHooks.count.HP_map_vforeachnpc_post > 0) {
void (*postHookFunc) (int ( *func ) (struct npc_data *nd, va_list args), va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachnpc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachnpc_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_map_vforeachnpc_post[hIndex].func;
postHookFunc(func, args___copy);
@@ -40276,16 +46051,16 @@ void HP_map_vforeachnpc(int ( *func ) (struct npc_data *nd, va_list args), va_li
}
void HP_map_vforeachregen(int ( *func ) (struct block_list *bl, va_list args), va_list args) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_vforeachregen_pre ) {
+ if (HPMHooks.count.HP_map_vforeachregen_pre > 0) {
void (*preHookFunc) (int ( **func ) (struct block_list *bl, va_list args), va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachregen_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachregen_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_map_vforeachregen_pre[hIndex].func;
preHookFunc(&func, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -40295,9 +46070,9 @@ void HP_map_vforeachregen(int ( *func ) (struct block_list *bl, va_list args), v
HPMHooks.source.map.vforeachregen(func, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_map_vforeachregen_post ) {
+ if (HPMHooks.count.HP_map_vforeachregen_post > 0) {
void (*postHookFunc) (int ( *func ) (struct block_list *bl, va_list args), va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachregen_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachregen_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_map_vforeachregen_post[hIndex].func;
postHookFunc(func, args___copy);
@@ -40308,16 +46083,16 @@ void HP_map_vforeachregen(int ( *func ) (struct block_list *bl, va_list args), v
}
void HP_map_vforeachiddb(int ( *func ) (struct block_list *bl, va_list args), va_list args) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_vforeachiddb_pre ) {
+ if (HPMHooks.count.HP_map_vforeachiddb_pre > 0) {
void (*preHookFunc) (int ( **func ) (struct block_list *bl, va_list args), va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachiddb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachiddb_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_map_vforeachiddb_pre[hIndex].func;
preHookFunc(&func, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -40327,9 +46102,9 @@ void HP_map_vforeachiddb(int ( *func ) (struct block_list *bl, va_list args), va
HPMHooks.source.map.vforeachiddb(func, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_map_vforeachiddb_post ) {
+ if (HPMHooks.count.HP_map_vforeachiddb_post > 0) {
void (*postHookFunc) (int ( *func ) (struct block_list *bl, va_list args), va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachiddb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachiddb_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_map_vforeachiddb_post[hIndex].func;
postHookFunc(func, args___copy);
@@ -40341,16 +46116,16 @@ void HP_map_vforeachiddb(int ( *func ) (struct block_list *bl, va_list args), va
int HP_map_vforeachinrange(int ( *func ) (struct block_list *, va_list), struct block_list *center, int16 range, int type, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_vforeachinrange_pre ) {
+ if (HPMHooks.count.HP_map_vforeachinrange_pre > 0) {
int (*preHookFunc) (int ( **func ) (struct block_list *, va_list), struct block_list **center, int16 *range, int *type, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachinrange_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachinrange_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_map_vforeachinrange_pre[hIndex].func;
retVal___ = preHookFunc(&func, &center, &range, &type, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -40360,9 +46135,9 @@ int HP_map_vforeachinrange(int ( *func ) (struct block_list *, va_list), struct
retVal___ = HPMHooks.source.map.vforeachinrange(func, center, range, type, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_map_vforeachinrange_post ) {
+ if (HPMHooks.count.HP_map_vforeachinrange_post > 0) {
int (*postHookFunc) (int retVal___, int ( *func ) (struct block_list *, va_list), struct block_list *center, int16 range, int type, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachinrange_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachinrange_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_map_vforeachinrange_post[hIndex].func;
retVal___ = postHookFunc(retVal___, func, center, range, type, ap___copy);
@@ -40374,16 +46149,16 @@ int HP_map_vforeachinrange(int ( *func ) (struct block_list *, va_list), struct
int HP_map_vforeachinshootrange(int ( *func ) (struct block_list *, va_list), struct block_list *center, int16 range, int type, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_vforeachinshootrange_pre ) {
+ if (HPMHooks.count.HP_map_vforeachinshootrange_pre > 0) {
int (*preHookFunc) (int ( **func ) (struct block_list *, va_list), struct block_list **center, int16 *range, int *type, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachinshootrange_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachinshootrange_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_map_vforeachinshootrange_pre[hIndex].func;
retVal___ = preHookFunc(&func, &center, &range, &type, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -40393,9 +46168,9 @@ int HP_map_vforeachinshootrange(int ( *func ) (struct block_list *, va_list), st
retVal___ = HPMHooks.source.map.vforeachinshootrange(func, center, range, type, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_map_vforeachinshootrange_post ) {
+ if (HPMHooks.count.HP_map_vforeachinshootrange_post > 0) {
int (*postHookFunc) (int retVal___, int ( *func ) (struct block_list *, va_list), struct block_list *center, int16 range, int type, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachinshootrange_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachinshootrange_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_map_vforeachinshootrange_post[hIndex].func;
retVal___ = postHookFunc(retVal___, func, center, range, type, ap___copy);
@@ -40407,16 +46182,16 @@ int HP_map_vforeachinshootrange(int ( *func ) (struct block_list *, va_list), st
int HP_map_vforeachinarea(int ( *func ) (struct block_list *, va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int type, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_vforeachinarea_pre ) {
+ if (HPMHooks.count.HP_map_vforeachinarea_pre > 0) {
int (*preHookFunc) (int ( **func ) (struct block_list *, va_list), int16 *m, int16 *x0, int16 *y0, int16 *x1, int16 *y1, int *type, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachinarea_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachinarea_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_map_vforeachinarea_pre[hIndex].func;
retVal___ = preHookFunc(&func, &m, &x0, &y0, &x1, &y1, &type, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -40426,9 +46201,9 @@ int HP_map_vforeachinarea(int ( *func ) (struct block_list *, va_list), int16 m,
retVal___ = HPMHooks.source.map.vforeachinarea(func, m, x0, y0, x1, y1, type, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_map_vforeachinarea_post ) {
+ if (HPMHooks.count.HP_map_vforeachinarea_post > 0) {
int (*postHookFunc) (int retVal___, int ( *func ) (struct block_list *, va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int type, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachinarea_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachinarea_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_map_vforeachinarea_post[hIndex].func;
retVal___ = postHookFunc(retVal___, func, m, x0, y0, x1, y1, type, ap___copy);
@@ -40440,16 +46215,16 @@ int HP_map_vforeachinarea(int ( *func ) (struct block_list *, va_list), int16 m,
int HP_map_vforcountinrange(int ( *func ) (struct block_list *, va_list), struct block_list *center, int16 range, int count, int type, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_vforcountinrange_pre ) {
+ if (HPMHooks.count.HP_map_vforcountinrange_pre > 0) {
int (*preHookFunc) (int ( **func ) (struct block_list *, va_list), struct block_list **center, int16 *range, int *count, int *type, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_vforcountinrange_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_vforcountinrange_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_map_vforcountinrange_pre[hIndex].func;
retVal___ = preHookFunc(&func, &center, &range, &count, &type, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -40459,9 +46234,9 @@ int HP_map_vforcountinrange(int ( *func ) (struct block_list *, va_list), struct
retVal___ = HPMHooks.source.map.vforcountinrange(func, center, range, count, type, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_map_vforcountinrange_post ) {
+ if (HPMHooks.count.HP_map_vforcountinrange_post > 0) {
int (*postHookFunc) (int retVal___, int ( *func ) (struct block_list *, va_list), struct block_list *center, int16 range, int count, int type, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_vforcountinrange_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_vforcountinrange_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_map_vforcountinrange_post[hIndex].func;
retVal___ = postHookFunc(retVal___, func, center, range, count, type, ap___copy);
@@ -40473,16 +46248,16 @@ int HP_map_vforcountinrange(int ( *func ) (struct block_list *, va_list), struct
int HP_map_vforcountinarea(int ( *func ) (struct block_list *, va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int count, int type, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_vforcountinarea_pre ) {
+ if (HPMHooks.count.HP_map_vforcountinarea_pre > 0) {
int (*preHookFunc) (int ( **func ) (struct block_list *, va_list), int16 *m, int16 *x0, int16 *y0, int16 *x1, int16 *y1, int *count, int *type, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_vforcountinarea_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_vforcountinarea_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_map_vforcountinarea_pre[hIndex].func;
retVal___ = preHookFunc(&func, &m, &x0, &y0, &x1, &y1, &count, &type, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -40492,9 +46267,9 @@ int HP_map_vforcountinarea(int ( *func ) (struct block_list *, va_list), int16 m
retVal___ = HPMHooks.source.map.vforcountinarea(func, m, x0, y0, x1, y1, count, type, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_map_vforcountinarea_post ) {
+ if (HPMHooks.count.HP_map_vforcountinarea_post > 0) {
int (*postHookFunc) (int retVal___, int ( *func ) (struct block_list *, va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int count, int type, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_vforcountinarea_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_vforcountinarea_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_map_vforcountinarea_post[hIndex].func;
retVal___ = postHookFunc(retVal___, func, m, x0, y0, x1, y1, count, type, ap___copy);
@@ -40506,16 +46281,16 @@ int HP_map_vforcountinarea(int ( *func ) (struct block_list *, va_list), int16 m
int HP_map_vforeachinmovearea(int ( *func ) (struct block_list *, va_list), struct block_list *center, int16 range, int16 dx, int16 dy, int type, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_vforeachinmovearea_pre ) {
+ if (HPMHooks.count.HP_map_vforeachinmovearea_pre > 0) {
int (*preHookFunc) (int ( **func ) (struct block_list *, va_list), struct block_list **center, int16 *range, int16 *dx, int16 *dy, int *type, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachinmovearea_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachinmovearea_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_map_vforeachinmovearea_pre[hIndex].func;
retVal___ = preHookFunc(&func, &center, &range, &dx, &dy, &type, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -40525,9 +46300,9 @@ int HP_map_vforeachinmovearea(int ( *func ) (struct block_list *, va_list), stru
retVal___ = HPMHooks.source.map.vforeachinmovearea(func, center, range, dx, dy, type, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_map_vforeachinmovearea_post ) {
+ if (HPMHooks.count.HP_map_vforeachinmovearea_post > 0) {
int (*postHookFunc) (int retVal___, int ( *func ) (struct block_list *, va_list), struct block_list *center, int16 range, int16 dx, int16 dy, int type, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachinmovearea_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachinmovearea_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_map_vforeachinmovearea_post[hIndex].func;
retVal___ = postHookFunc(retVal___, func, center, range, dx, dy, type, ap___copy);
@@ -40539,16 +46314,16 @@ int HP_map_vforeachinmovearea(int ( *func ) (struct block_list *, va_list), stru
int HP_map_vforeachincell(int ( *func ) (struct block_list *, va_list), int16 m, int16 x, int16 y, int type, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_vforeachincell_pre ) {
+ if (HPMHooks.count.HP_map_vforeachincell_pre > 0) {
int (*preHookFunc) (int ( **func ) (struct block_list *, va_list), int16 *m, int16 *x, int16 *y, int *type, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachincell_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachincell_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_map_vforeachincell_pre[hIndex].func;
retVal___ = preHookFunc(&func, &m, &x, &y, &type, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -40558,9 +46333,9 @@ int HP_map_vforeachincell(int ( *func ) (struct block_list *, va_list), int16 m,
retVal___ = HPMHooks.source.map.vforeachincell(func, m, x, y, type, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_map_vforeachincell_post ) {
+ if (HPMHooks.count.HP_map_vforeachincell_post > 0) {
int (*postHookFunc) (int retVal___, int ( *func ) (struct block_list *, va_list), int16 m, int16 x, int16 y, int type, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachincell_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachincell_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_map_vforeachincell_post[hIndex].func;
retVal___ = postHookFunc(retVal___, func, m, x, y, type, ap___copy);
@@ -40572,16 +46347,16 @@ int HP_map_vforeachincell(int ( *func ) (struct block_list *, va_list), int16 m,
int HP_map_vforeachinpath(int ( *func ) (struct block_list *, va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int16 range, int length, int type, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_vforeachinpath_pre ) {
+ if (HPMHooks.count.HP_map_vforeachinpath_pre > 0) {
int (*preHookFunc) (int ( **func ) (struct block_list *, va_list), int16 *m, int16 *x0, int16 *y0, int16 *x1, int16 *y1, int16 *range, int *length, int *type, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachinpath_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachinpath_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_map_vforeachinpath_pre[hIndex].func;
retVal___ = preHookFunc(&func, &m, &x0, &y0, &x1, &y1, &range, &length, &type, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -40591,9 +46366,9 @@ int HP_map_vforeachinpath(int ( *func ) (struct block_list *, va_list), int16 m,
retVal___ = HPMHooks.source.map.vforeachinpath(func, m, x0, y0, x1, y1, range, length, type, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_map_vforeachinpath_post ) {
+ if (HPMHooks.count.HP_map_vforeachinpath_post > 0) {
int (*postHookFunc) (int retVal___, int ( *func ) (struct block_list *, va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int16 range, int length, int type, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachinpath_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachinpath_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_map_vforeachinpath_post[hIndex].func;
retVal___ = postHookFunc(retVal___, func, m, x0, y0, x1, y1, range, length, type, ap___copy);
@@ -40605,16 +46380,16 @@ int HP_map_vforeachinpath(int ( *func ) (struct block_list *, va_list), int16 m,
int HP_map_vforeachinmap(int ( *func ) (struct block_list *, va_list), int16 m, int type, va_list args) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_vforeachinmap_pre ) {
+ if (HPMHooks.count.HP_map_vforeachinmap_pre > 0) {
int (*preHookFunc) (int ( **func ) (struct block_list *, va_list), int16 *m, int *type, va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachinmap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachinmap_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_map_vforeachinmap_pre[hIndex].func;
retVal___ = preHookFunc(&func, &m, &type, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -40624,9 +46399,9 @@ int HP_map_vforeachinmap(int ( *func ) (struct block_list *, va_list), int16 m,
retVal___ = HPMHooks.source.map.vforeachinmap(func, m, type, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_map_vforeachinmap_post ) {
+ if (HPMHooks.count.HP_map_vforeachinmap_post > 0) {
int (*postHookFunc) (int retVal___, int ( *func ) (struct block_list *, va_list), int16 m, int type, va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachinmap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachinmap_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_map_vforeachinmap_post[hIndex].func;
retVal___ = postHookFunc(retVal___, func, m, type, args___copy);
@@ -40638,16 +46413,16 @@ int HP_map_vforeachinmap(int ( *func ) (struct block_list *, va_list), int16 m,
int HP_map_vforeachininstance(int ( *func ) (struct block_list *, va_list), int16 instance_id, int type, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_vforeachininstance_pre ) {
+ if (HPMHooks.count.HP_map_vforeachininstance_pre > 0) {
int (*preHookFunc) (int ( **func ) (struct block_list *, va_list), int16 *instance_id, int *type, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachininstance_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachininstance_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_map_vforeachininstance_pre[hIndex].func;
retVal___ = preHookFunc(&func, &instance_id, &type, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -40657,9 +46432,9 @@ int HP_map_vforeachininstance(int ( *func ) (struct block_list *, va_list), int1
retVal___ = HPMHooks.source.map.vforeachininstance(func, instance_id, type, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_map_vforeachininstance_post ) {
+ if (HPMHooks.count.HP_map_vforeachininstance_post > 0) {
int (*postHookFunc) (int retVal___, int ( *func ) (struct block_list *, va_list), int16 instance_id, int type, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachininstance_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_vforeachininstance_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_map_vforeachininstance_post[hIndex].func;
retVal___ = postHookFunc(retVal___, func, instance_id, type, ap___copy);
@@ -40671,14 +46446,14 @@ int HP_map_vforeachininstance(int ( *func ) (struct block_list *, va_list), int1
struct map_session_data* HP_map_id2sd(int id) {
int hIndex = 0;
struct map_session_data* retVal___ = NULL;
- if( HPMHooks.count.HP_map_id2sd_pre ) {
+ if (HPMHooks.count.HP_map_id2sd_pre > 0) {
struct map_session_data* (*preHookFunc) (int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2sd_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_id2sd_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_id2sd_pre[hIndex].func;
retVal___ = preHookFunc(&id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -40686,9 +46461,9 @@ struct map_session_data* HP_map_id2sd(int id) {
{
retVal___ = HPMHooks.source.map.id2sd(id);
}
- if( HPMHooks.count.HP_map_id2sd_post ) {
+ if (HPMHooks.count.HP_map_id2sd_post > 0) {
struct map_session_data* (*postHookFunc) (struct map_session_data* retVal___, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2sd_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_id2sd_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_id2sd_post[hIndex].func;
retVal___ = postHookFunc(retVal___, id);
}
@@ -40698,14 +46473,14 @@ struct map_session_data* HP_map_id2sd(int id) {
struct npc_data* HP_map_id2nd(int id) {
int hIndex = 0;
struct npc_data* retVal___ = NULL;
- if( HPMHooks.count.HP_map_id2nd_pre ) {
+ if (HPMHooks.count.HP_map_id2nd_pre > 0) {
struct npc_data* (*preHookFunc) (int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2nd_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_id2nd_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_id2nd_pre[hIndex].func;
retVal___ = preHookFunc(&id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -40713,9 +46488,9 @@ struct npc_data* HP_map_id2nd(int id) {
{
retVal___ = HPMHooks.source.map.id2nd(id);
}
- if( HPMHooks.count.HP_map_id2nd_post ) {
+ if (HPMHooks.count.HP_map_id2nd_post > 0) {
struct npc_data* (*postHookFunc) (struct npc_data* retVal___, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2nd_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_id2nd_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_id2nd_post[hIndex].func;
retVal___ = postHookFunc(retVal___, id);
}
@@ -40725,14 +46500,14 @@ struct npc_data* HP_map_id2nd(int id) {
struct mob_data* HP_map_id2md(int id) {
int hIndex = 0;
struct mob_data* retVal___ = NULL;
- if( HPMHooks.count.HP_map_id2md_pre ) {
+ if (HPMHooks.count.HP_map_id2md_pre > 0) {
struct mob_data* (*preHookFunc) (int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2md_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_id2md_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_id2md_pre[hIndex].func;
retVal___ = preHookFunc(&id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -40740,9 +46515,9 @@ struct mob_data* HP_map_id2md(int id) {
{
retVal___ = HPMHooks.source.map.id2md(id);
}
- if( HPMHooks.count.HP_map_id2md_post ) {
+ if (HPMHooks.count.HP_map_id2md_post > 0) {
struct mob_data* (*postHookFunc) (struct mob_data* retVal___, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2md_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_id2md_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_id2md_post[hIndex].func;
retVal___ = postHookFunc(retVal___, id);
}
@@ -40752,14 +46527,14 @@ struct mob_data* HP_map_id2md(int id) {
struct flooritem_data* HP_map_id2fi(int id) {
int hIndex = 0;
struct flooritem_data* retVal___ = NULL;
- if( HPMHooks.count.HP_map_id2fi_pre ) {
+ if (HPMHooks.count.HP_map_id2fi_pre > 0) {
struct flooritem_data* (*preHookFunc) (int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2fi_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_id2fi_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_id2fi_pre[hIndex].func;
retVal___ = preHookFunc(&id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -40767,9 +46542,9 @@ struct flooritem_data* HP_map_id2fi(int id) {
{
retVal___ = HPMHooks.source.map.id2fi(id);
}
- if( HPMHooks.count.HP_map_id2fi_post ) {
+ if (HPMHooks.count.HP_map_id2fi_post > 0) {
struct flooritem_data* (*postHookFunc) (struct flooritem_data* retVal___, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2fi_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_id2fi_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_id2fi_post[hIndex].func;
retVal___ = postHookFunc(retVal___, id);
}
@@ -40779,14 +46554,14 @@ struct flooritem_data* HP_map_id2fi(int id) {
struct chat_data* HP_map_id2cd(int id) {
int hIndex = 0;
struct chat_data* retVal___ = NULL;
- if( HPMHooks.count.HP_map_id2cd_pre ) {
+ if (HPMHooks.count.HP_map_id2cd_pre > 0) {
struct chat_data* (*preHookFunc) (int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2cd_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_id2cd_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_id2cd_pre[hIndex].func;
retVal___ = preHookFunc(&id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -40794,9 +46569,9 @@ struct chat_data* HP_map_id2cd(int id) {
{
retVal___ = HPMHooks.source.map.id2cd(id);
}
- if( HPMHooks.count.HP_map_id2cd_post ) {
+ if (HPMHooks.count.HP_map_id2cd_post > 0) {
struct chat_data* (*postHookFunc) (struct chat_data* retVal___, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2cd_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_id2cd_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_id2cd_post[hIndex].func;
retVal___ = postHookFunc(retVal___, id);
}
@@ -40806,14 +46581,14 @@ struct chat_data* HP_map_id2cd(int id) {
struct skill_unit* HP_map_id2su(int id) {
int hIndex = 0;
struct skill_unit* retVal___ = NULL;
- if( HPMHooks.count.HP_map_id2su_pre ) {
+ if (HPMHooks.count.HP_map_id2su_pre > 0) {
struct skill_unit* (*preHookFunc) (int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2su_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_id2su_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_id2su_pre[hIndex].func;
retVal___ = preHookFunc(&id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -40821,9 +46596,9 @@ struct skill_unit* HP_map_id2su(int id) {
{
retVal___ = HPMHooks.source.map.id2su(id);
}
- if( HPMHooks.count.HP_map_id2su_post ) {
+ if (HPMHooks.count.HP_map_id2su_post > 0) {
struct skill_unit* (*postHookFunc) (struct skill_unit* retVal___, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2su_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_id2su_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_id2su_post[hIndex].func;
retVal___ = postHookFunc(retVal___, id);
}
@@ -40833,14 +46608,14 @@ struct skill_unit* HP_map_id2su(int id) {
struct pet_data* HP_map_id2pd(int id) {
int hIndex = 0;
struct pet_data* retVal___ = NULL;
- if( HPMHooks.count.HP_map_id2pd_pre ) {
+ if (HPMHooks.count.HP_map_id2pd_pre > 0) {
struct pet_data* (*preHookFunc) (int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2pd_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_id2pd_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_id2pd_pre[hIndex].func;
retVal___ = preHookFunc(&id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -40848,9 +46623,9 @@ struct pet_data* HP_map_id2pd(int id) {
{
retVal___ = HPMHooks.source.map.id2pd(id);
}
- if( HPMHooks.count.HP_map_id2pd_post ) {
+ if (HPMHooks.count.HP_map_id2pd_post > 0) {
struct pet_data* (*postHookFunc) (struct pet_data* retVal___, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2pd_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_id2pd_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_id2pd_post[hIndex].func;
retVal___ = postHookFunc(retVal___, id);
}
@@ -40860,14 +46635,14 @@ struct pet_data* HP_map_id2pd(int id) {
struct homun_data* HP_map_id2hd(int id) {
int hIndex = 0;
struct homun_data* retVal___ = NULL;
- if( HPMHooks.count.HP_map_id2hd_pre ) {
+ if (HPMHooks.count.HP_map_id2hd_pre > 0) {
struct homun_data* (*preHookFunc) (int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2hd_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_id2hd_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_id2hd_pre[hIndex].func;
retVal___ = preHookFunc(&id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -40875,9 +46650,9 @@ struct homun_data* HP_map_id2hd(int id) {
{
retVal___ = HPMHooks.source.map.id2hd(id);
}
- if( HPMHooks.count.HP_map_id2hd_post ) {
+ if (HPMHooks.count.HP_map_id2hd_post > 0) {
struct homun_data* (*postHookFunc) (struct homun_data* retVal___, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2hd_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_id2hd_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_id2hd_post[hIndex].func;
retVal___ = postHookFunc(retVal___, id);
}
@@ -40887,14 +46662,14 @@ struct homun_data* HP_map_id2hd(int id) {
struct mercenary_data* HP_map_id2mc(int id) {
int hIndex = 0;
struct mercenary_data* retVal___ = NULL;
- if( HPMHooks.count.HP_map_id2mc_pre ) {
+ if (HPMHooks.count.HP_map_id2mc_pre > 0) {
struct mercenary_data* (*preHookFunc) (int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2mc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_id2mc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_id2mc_pre[hIndex].func;
retVal___ = preHookFunc(&id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -40902,9 +46677,9 @@ struct mercenary_data* HP_map_id2mc(int id) {
{
retVal___ = HPMHooks.source.map.id2mc(id);
}
- if( HPMHooks.count.HP_map_id2mc_post ) {
+ if (HPMHooks.count.HP_map_id2mc_post > 0) {
struct mercenary_data* (*postHookFunc) (struct mercenary_data* retVal___, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2mc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_id2mc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_id2mc_post[hIndex].func;
retVal___ = postHookFunc(retVal___, id);
}
@@ -40914,14 +46689,14 @@ struct mercenary_data* HP_map_id2mc(int id) {
struct elemental_data* HP_map_id2ed(int id) {
int hIndex = 0;
struct elemental_data* retVal___ = NULL;
- if( HPMHooks.count.HP_map_id2ed_pre ) {
+ if (HPMHooks.count.HP_map_id2ed_pre > 0) {
struct elemental_data* (*preHookFunc) (int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2ed_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_id2ed_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_id2ed_pre[hIndex].func;
retVal___ = preHookFunc(&id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -40929,9 +46704,9 @@ struct elemental_data* HP_map_id2ed(int id) {
{
retVal___ = HPMHooks.source.map.id2ed(id);
}
- if( HPMHooks.count.HP_map_id2ed_post ) {
+ if (HPMHooks.count.HP_map_id2ed_post > 0) {
struct elemental_data* (*postHookFunc) (struct elemental_data* retVal___, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2ed_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_id2ed_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_id2ed_post[hIndex].func;
retVal___ = postHookFunc(retVal___, id);
}
@@ -40941,14 +46716,14 @@ struct elemental_data* HP_map_id2ed(int id) {
struct block_list* HP_map_id2bl(int id) {
int hIndex = 0;
struct block_list* retVal___ = NULL;
- if( HPMHooks.count.HP_map_id2bl_pre ) {
+ if (HPMHooks.count.HP_map_id2bl_pre > 0) {
struct block_list* (*preHookFunc) (int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2bl_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_id2bl_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_id2bl_pre[hIndex].func;
retVal___ = preHookFunc(&id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -40956,9 +46731,9 @@ struct block_list* HP_map_id2bl(int id) {
{
retVal___ = HPMHooks.source.map.id2bl(id);
}
- if( HPMHooks.count.HP_map_id2bl_post ) {
+ if (HPMHooks.count.HP_map_id2bl_post > 0) {
struct block_list* (*postHookFunc) (struct block_list* retVal___, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2bl_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_id2bl_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_id2bl_post[hIndex].func;
retVal___ = postHookFunc(retVal___, id);
}
@@ -40968,14 +46743,14 @@ struct block_list* HP_map_id2bl(int id) {
bool HP_map_blid_exists(int id) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_map_blid_exists_pre ) {
+ if (HPMHooks.count.HP_map_blid_exists_pre > 0) {
bool (*preHookFunc) (int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_blid_exists_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_blid_exists_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_blid_exists_pre[hIndex].func;
retVal___ = preHookFunc(&id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -40983,9 +46758,9 @@ bool HP_map_blid_exists(int id) {
{
retVal___ = HPMHooks.source.map.blid_exists(id);
}
- if( HPMHooks.count.HP_map_blid_exists_post ) {
+ if (HPMHooks.count.HP_map_blid_exists_post > 0) {
bool (*postHookFunc) (bool retVal___, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_blid_exists_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_blid_exists_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_blid_exists_post[hIndex].func;
retVal___ = postHookFunc(retVal___, id);
}
@@ -40995,14 +46770,14 @@ bool HP_map_blid_exists(int id) {
int16 HP_map_mapindex2mapid(unsigned short map_index) {
int hIndex = 0;
int16 retVal___ = 0;
- if( HPMHooks.count.HP_map_mapindex2mapid_pre ) {
+ if (HPMHooks.count.HP_map_mapindex2mapid_pre > 0) {
int16 (*preHookFunc) (unsigned short *map_index);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_mapindex2mapid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_mapindex2mapid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_mapindex2mapid_pre[hIndex].func;
retVal___ = preHookFunc(&map_index);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -41010,9 +46785,9 @@ int16 HP_map_mapindex2mapid(unsigned short map_index) {
{
retVal___ = HPMHooks.source.map.mapindex2mapid(map_index);
}
- if( HPMHooks.count.HP_map_mapindex2mapid_post ) {
+ if (HPMHooks.count.HP_map_mapindex2mapid_post > 0) {
int16 (*postHookFunc) (int16 retVal___, unsigned short map_index);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_mapindex2mapid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_mapindex2mapid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_mapindex2mapid_post[hIndex].func;
retVal___ = postHookFunc(retVal___, map_index);
}
@@ -41022,14 +46797,14 @@ int16 HP_map_mapindex2mapid(unsigned short map_index) {
int16 HP_map_mapname2mapid(const char *name) {
int hIndex = 0;
int16 retVal___ = 0;
- if( HPMHooks.count.HP_map_mapname2mapid_pre ) {
+ if (HPMHooks.count.HP_map_mapname2mapid_pre > 0) {
int16 (*preHookFunc) (const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_mapname2mapid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_mapname2mapid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_mapname2mapid_pre[hIndex].func;
retVal___ = preHookFunc(&name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -41037,9 +46812,9 @@ int16 HP_map_mapname2mapid(const char *name) {
{
retVal___ = HPMHooks.source.map.mapname2mapid(name);
}
- if( HPMHooks.count.HP_map_mapname2mapid_post ) {
+ if (HPMHooks.count.HP_map_mapname2mapid_post > 0) {
int16 (*postHookFunc) (int16 retVal___, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_mapname2mapid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_mapname2mapid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_mapname2mapid_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name);
}
@@ -41049,14 +46824,14 @@ int16 HP_map_mapname2mapid(const char *name) {
int HP_map_mapname2ipport(unsigned short name, uint32 *ip, uint16 *port) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_mapname2ipport_pre ) {
+ if (HPMHooks.count.HP_map_mapname2ipport_pre > 0) {
int (*preHookFunc) (unsigned short *name, uint32 **ip, uint16 **port);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_mapname2ipport_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_mapname2ipport_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_mapname2ipport_pre[hIndex].func;
retVal___ = preHookFunc(&name, &ip, &port);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -41064,9 +46839,9 @@ int HP_map_mapname2ipport(unsigned short name, uint32 *ip, uint16 *port) {
{
retVal___ = HPMHooks.source.map.mapname2ipport(name, ip, port);
}
- if( HPMHooks.count.HP_map_mapname2ipport_post ) {
+ if (HPMHooks.count.HP_map_mapname2ipport_post > 0) {
int (*postHookFunc) (int retVal___, unsigned short name, uint32 *ip, uint16 *port);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_mapname2ipport_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_mapname2ipport_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_mapname2ipport_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name, ip, port);
}
@@ -41076,14 +46851,14 @@ int HP_map_mapname2ipport(unsigned short name, uint32 *ip, uint16 *port) {
int HP_map_setipport(unsigned short map_index, uint32 ip, uint16 port) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_setipport_pre ) {
+ if (HPMHooks.count.HP_map_setipport_pre > 0) {
int (*preHookFunc) (unsigned short *map_index, uint32 *ip, uint16 *port);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_setipport_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_setipport_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_setipport_pre[hIndex].func;
retVal___ = preHookFunc(&map_index, &ip, &port);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -41091,9 +46866,9 @@ int HP_map_setipport(unsigned short map_index, uint32 ip, uint16 port) {
{
retVal___ = HPMHooks.source.map.setipport(map_index, ip, port);
}
- if( HPMHooks.count.HP_map_setipport_post ) {
+ if (HPMHooks.count.HP_map_setipport_post > 0) {
int (*postHookFunc) (int retVal___, unsigned short map_index, uint32 ip, uint16 port);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_setipport_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_setipport_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_setipport_post[hIndex].func;
retVal___ = postHookFunc(retVal___, map_index, ip, port);
}
@@ -41103,14 +46878,14 @@ int HP_map_setipport(unsigned short map_index, uint32 ip, uint16 port) {
int HP_map_eraseipport(unsigned short map_index, uint32 ip, uint16 port) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_eraseipport_pre ) {
+ if (HPMHooks.count.HP_map_eraseipport_pre > 0) {
int (*preHookFunc) (unsigned short *map_index, uint32 *ip, uint16 *port);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_eraseipport_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_eraseipport_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_eraseipport_pre[hIndex].func;
retVal___ = preHookFunc(&map_index, &ip, &port);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -41118,9 +46893,9 @@ int HP_map_eraseipport(unsigned short map_index, uint32 ip, uint16 port) {
{
retVal___ = HPMHooks.source.map.eraseipport(map_index, ip, port);
}
- if( HPMHooks.count.HP_map_eraseipport_post ) {
+ if (HPMHooks.count.HP_map_eraseipport_post > 0) {
int (*postHookFunc) (int retVal___, unsigned short map_index, uint32 ip, uint16 port);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_eraseipport_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_eraseipport_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_eraseipport_post[hIndex].func;
retVal___ = postHookFunc(retVal___, map_index, ip, port);
}
@@ -41130,14 +46905,14 @@ int HP_map_eraseipport(unsigned short map_index, uint32 ip, uint16 port) {
int HP_map_eraseallipport(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_eraseallipport_pre ) {
+ if (HPMHooks.count.HP_map_eraseallipport_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_eraseallipport_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_eraseallipport_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_eraseallipport_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -41145,9 +46920,9 @@ int HP_map_eraseallipport(void) {
{
retVal___ = HPMHooks.source.map.eraseallipport();
}
- if( HPMHooks.count.HP_map_eraseallipport_post ) {
+ if (HPMHooks.count.HP_map_eraseallipport_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_eraseallipport_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_eraseallipport_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_eraseallipport_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -41156,14 +46931,14 @@ int HP_map_eraseallipport(void) {
}
void HP_map_addiddb(struct block_list *bl) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_addiddb_pre ) {
+ if (HPMHooks.count.HP_map_addiddb_pre > 0) {
void (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_addiddb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_addiddb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_addiddb_pre[hIndex].func;
preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -41171,9 +46946,9 @@ void HP_map_addiddb(struct block_list *bl) {
{
HPMHooks.source.map.addiddb(bl);
}
- if( HPMHooks.count.HP_map_addiddb_post ) {
+ if (HPMHooks.count.HP_map_addiddb_post > 0) {
void (*postHookFunc) (struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_addiddb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_addiddb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_addiddb_post[hIndex].func;
postHookFunc(bl);
}
@@ -41182,14 +46957,14 @@ void HP_map_addiddb(struct block_list *bl) {
}
void HP_map_deliddb(struct block_list *bl) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_deliddb_pre ) {
+ if (HPMHooks.count.HP_map_deliddb_pre > 0) {
void (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_deliddb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_deliddb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_deliddb_pre[hIndex].func;
preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -41197,9 +46972,9 @@ void HP_map_deliddb(struct block_list *bl) {
{
HPMHooks.source.map.deliddb(bl);
}
- if( HPMHooks.count.HP_map_deliddb_post ) {
+ if (HPMHooks.count.HP_map_deliddb_post > 0) {
void (*postHookFunc) (struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_deliddb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_deliddb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_deliddb_post[hIndex].func;
postHookFunc(bl);
}
@@ -41209,14 +46984,14 @@ void HP_map_deliddb(struct block_list *bl) {
struct map_session_data* HP_map_nick2sd(const char *nick) {
int hIndex = 0;
struct map_session_data* retVal___ = NULL;
- if( HPMHooks.count.HP_map_nick2sd_pre ) {
+ if (HPMHooks.count.HP_map_nick2sd_pre > 0) {
struct map_session_data* (*preHookFunc) (const char **nick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_nick2sd_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_nick2sd_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_nick2sd_pre[hIndex].func;
retVal___ = preHookFunc(&nick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -41224,9 +46999,9 @@ struct map_session_data* HP_map_nick2sd(const char *nick) {
{
retVal___ = HPMHooks.source.map.nick2sd(nick);
}
- if( HPMHooks.count.HP_map_nick2sd_post ) {
+ if (HPMHooks.count.HP_map_nick2sd_post > 0) {
struct map_session_data* (*postHookFunc) (struct map_session_data* retVal___, const char *nick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_nick2sd_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_nick2sd_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_nick2sd_post[hIndex].func;
retVal___ = postHookFunc(retVal___, nick);
}
@@ -41236,14 +47011,14 @@ struct map_session_data* HP_map_nick2sd(const char *nick) {
struct mob_data* HP_map_getmob_boss(int16 m) {
int hIndex = 0;
struct mob_data* retVal___ = NULL;
- if( HPMHooks.count.HP_map_getmob_boss_pre ) {
+ if (HPMHooks.count.HP_map_getmob_boss_pre > 0) {
struct mob_data* (*preHookFunc) (int16 *m);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_getmob_boss_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_getmob_boss_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_getmob_boss_pre[hIndex].func;
retVal___ = preHookFunc(&m);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -41251,9 +47026,9 @@ struct mob_data* HP_map_getmob_boss(int16 m) {
{
retVal___ = HPMHooks.source.map.getmob_boss(m);
}
- if( HPMHooks.count.HP_map_getmob_boss_post ) {
+ if (HPMHooks.count.HP_map_getmob_boss_post > 0) {
struct mob_data* (*postHookFunc) (struct mob_data* retVal___, int16 m);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_getmob_boss_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_getmob_boss_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_getmob_boss_post[hIndex].func;
retVal___ = postHookFunc(retVal___, m);
}
@@ -41263,14 +47038,14 @@ struct mob_data* HP_map_getmob_boss(int16 m) {
struct mob_data* HP_map_id2boss(int id) {
int hIndex = 0;
struct mob_data* retVal___ = NULL;
- if( HPMHooks.count.HP_map_id2boss_pre ) {
+ if (HPMHooks.count.HP_map_id2boss_pre > 0) {
struct mob_data* (*preHookFunc) (int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2boss_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_id2boss_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_id2boss_pre[hIndex].func;
retVal___ = preHookFunc(&id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -41278,9 +47053,9 @@ struct mob_data* HP_map_id2boss(int id) {
{
retVal___ = HPMHooks.source.map.id2boss(id);
}
- if( HPMHooks.count.HP_map_id2boss_post ) {
+ if (HPMHooks.count.HP_map_id2boss_post > 0) {
struct mob_data* (*postHookFunc) (struct mob_data* retVal___, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2boss_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_id2boss_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_id2boss_post[hIndex].func;
retVal___ = postHookFunc(retVal___, id);
}
@@ -41290,14 +47065,14 @@ struct mob_data* HP_map_id2boss(int id) {
uint32 HP_map_race_id2mask(int race) {
int hIndex = 0;
uint32 retVal___ = 0;
- if( HPMHooks.count.HP_map_race_id2mask_pre ) {
+ if (HPMHooks.count.HP_map_race_id2mask_pre > 0) {
uint32 (*preHookFunc) (int *race);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_race_id2mask_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_race_id2mask_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_race_id2mask_pre[hIndex].func;
retVal___ = preHookFunc(&race);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -41305,9 +47080,9 @@ uint32 HP_map_race_id2mask(int race) {
{
retVal___ = HPMHooks.source.map.race_id2mask(race);
}
- if( HPMHooks.count.HP_map_race_id2mask_post ) {
+ if (HPMHooks.count.HP_map_race_id2mask_post > 0) {
uint32 (*postHookFunc) (uint32 retVal___, int race);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_race_id2mask_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_race_id2mask_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_race_id2mask_post[hIndex].func;
retVal___ = postHookFunc(retVal___, race);
}
@@ -41316,14 +47091,14 @@ uint32 HP_map_race_id2mask(int race) {
}
void HP_map_reloadnpc(bool clear) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_reloadnpc_pre ) {
+ if (HPMHooks.count.HP_map_reloadnpc_pre > 0) {
void (*preHookFunc) (bool *clear);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_reloadnpc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_reloadnpc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_reloadnpc_pre[hIndex].func;
preHookFunc(&clear);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -41331,9 +47106,9 @@ void HP_map_reloadnpc(bool clear) {
{
HPMHooks.source.map.reloadnpc(clear);
}
- if( HPMHooks.count.HP_map_reloadnpc_post ) {
+ if (HPMHooks.count.HP_map_reloadnpc_post > 0) {
void (*postHookFunc) (bool clear);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_reloadnpc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_reloadnpc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_reloadnpc_post[hIndex].func;
postHookFunc(clear);
}
@@ -41343,14 +47118,14 @@ void HP_map_reloadnpc(bool clear) {
int HP_map_check_dir(int s_dir, int t_dir) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_check_dir_pre ) {
+ if (HPMHooks.count.HP_map_check_dir_pre > 0) {
int (*preHookFunc) (int *s_dir, int *t_dir);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_check_dir_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_check_dir_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_check_dir_pre[hIndex].func;
retVal___ = preHookFunc(&s_dir, &t_dir);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -41358,9 +47133,9 @@ int HP_map_check_dir(int s_dir, int t_dir) {
{
retVal___ = HPMHooks.source.map.check_dir(s_dir, t_dir);
}
- if( HPMHooks.count.HP_map_check_dir_post ) {
+ if (HPMHooks.count.HP_map_check_dir_post > 0) {
int (*postHookFunc) (int retVal___, int s_dir, int t_dir);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_check_dir_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_check_dir_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_check_dir_post[hIndex].func;
retVal___ = postHookFunc(retVal___, s_dir, t_dir);
}
@@ -41370,14 +47145,14 @@ int HP_map_check_dir(int s_dir, int t_dir) {
uint8 HP_map_calc_dir(struct block_list *src, int16 x, int16 y) {
int hIndex = 0;
uint8 retVal___ = 0;
- if( HPMHooks.count.HP_map_calc_dir_pre ) {
+ if (HPMHooks.count.HP_map_calc_dir_pre > 0) {
uint8 (*preHookFunc) (struct block_list **src, int16 *x, int16 *y);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_calc_dir_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_calc_dir_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_calc_dir_pre[hIndex].func;
retVal___ = preHookFunc(&src, &x, &y);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -41385,9 +47160,9 @@ uint8 HP_map_calc_dir(struct block_list *src, int16 x, int16 y) {
{
retVal___ = HPMHooks.source.map.calc_dir(src, x, y);
}
- if( HPMHooks.count.HP_map_calc_dir_post ) {
+ if (HPMHooks.count.HP_map_calc_dir_post > 0) {
uint8 (*postHookFunc) (uint8 retVal___, struct block_list *src, int16 x, int16 y);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_calc_dir_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_calc_dir_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_calc_dir_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, x, y);
}
@@ -41397,14 +47172,14 @@ uint8 HP_map_calc_dir(struct block_list *src, int16 x, int16 y) {
int HP_map_random_dir(struct block_list *bl, short *x, short *y) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_random_dir_pre ) {
+ if (HPMHooks.count.HP_map_random_dir_pre > 0) {
int (*preHookFunc) (struct block_list **bl, short **x, short **y);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_random_dir_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_random_dir_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_random_dir_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &x, &y);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -41412,9 +47187,9 @@ int HP_map_random_dir(struct block_list *bl, short *x, short *y) {
{
retVal___ = HPMHooks.source.map.random_dir(bl, x, y);
}
- if( HPMHooks.count.HP_map_random_dir_post ) {
+ if (HPMHooks.count.HP_map_random_dir_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, short *x, short *y);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_random_dir_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_random_dir_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_random_dir_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, x, y);
}
@@ -41424,16 +47199,16 @@ int HP_map_random_dir(struct block_list *bl, short *x, short *y) {
int HP_map_cleanup_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_cleanup_sub_pre ) {
+ if (HPMHooks.count.HP_map_cleanup_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_cleanup_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_cleanup_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_map_cleanup_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -41443,9 +47218,9 @@ int HP_map_cleanup_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.map.cleanup_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_map_cleanup_sub_post ) {
+ if (HPMHooks.count.HP_map_cleanup_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_cleanup_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_cleanup_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_map_cleanup_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -41457,14 +47232,14 @@ int HP_map_cleanup_sub(struct block_list *bl, va_list ap) {
int HP_map_delmap(const char *mapname) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_delmap_pre ) {
+ if (HPMHooks.count.HP_map_delmap_pre > 0) {
int (*preHookFunc) (const char **mapname);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_delmap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_delmap_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_delmap_pre[hIndex].func;
retVal___ = preHookFunc(&mapname);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -41472,9 +47247,9 @@ int HP_map_delmap(const char *mapname) {
{
retVal___ = HPMHooks.source.map.delmap(mapname);
}
- if( HPMHooks.count.HP_map_delmap_post ) {
+ if (HPMHooks.count.HP_map_delmap_post > 0) {
int (*postHookFunc) (int retVal___, const char *mapname);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_delmap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_delmap_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_delmap_post[hIndex].func;
retVal___ = postHookFunc(retVal___, mapname);
}
@@ -41483,14 +47258,14 @@ int HP_map_delmap(const char *mapname) {
}
void HP_map_flags_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_flags_init_pre ) {
+ if (HPMHooks.count.HP_map_flags_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_flags_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_flags_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_flags_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -41498,9 +47273,9 @@ void HP_map_flags_init(void) {
{
HPMHooks.source.map.flags_init();
}
- if( HPMHooks.count.HP_map_flags_init_post ) {
+ if (HPMHooks.count.HP_map_flags_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_flags_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_flags_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_flags_init_post[hIndex].func;
postHookFunc();
}
@@ -41510,14 +47285,14 @@ void HP_map_flags_init(void) {
bool HP_map_iwall_set(int16 m, int16 x, int16 y, int size, int8 dir, bool shootable, const char *wall_name) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_map_iwall_set_pre ) {
+ if (HPMHooks.count.HP_map_iwall_set_pre > 0) {
bool (*preHookFunc) (int16 *m, int16 *x, int16 *y, int *size, int8 *dir, bool *shootable, const char **wall_name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_iwall_set_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_iwall_set_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_iwall_set_pre[hIndex].func;
retVal___ = preHookFunc(&m, &x, &y, &size, &dir, &shootable, &wall_name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -41525,9 +47300,9 @@ bool HP_map_iwall_set(int16 m, int16 x, int16 y, int size, int8 dir, bool shoota
{
retVal___ = HPMHooks.source.map.iwall_set(m, x, y, size, dir, shootable, wall_name);
}
- if( HPMHooks.count.HP_map_iwall_set_post ) {
+ if (HPMHooks.count.HP_map_iwall_set_post > 0) {
bool (*postHookFunc) (bool retVal___, int16 m, int16 x, int16 y, int size, int8 dir, bool shootable, const char *wall_name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_iwall_set_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_iwall_set_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_iwall_set_post[hIndex].func;
retVal___ = postHookFunc(retVal___, m, x, y, size, dir, shootable, wall_name);
}
@@ -41536,14 +47311,14 @@ bool HP_map_iwall_set(int16 m, int16 x, int16 y, int size, int8 dir, bool shoota
}
void HP_map_iwall_get(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_iwall_get_pre ) {
+ if (HPMHooks.count.HP_map_iwall_get_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_iwall_get_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_iwall_get_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_iwall_get_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -41551,52 +47326,53 @@ void HP_map_iwall_get(struct map_session_data *sd) {
{
HPMHooks.source.map.iwall_get(sd);
}
- if( HPMHooks.count.HP_map_iwall_get_post ) {
+ if (HPMHooks.count.HP_map_iwall_get_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_iwall_get_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_iwall_get_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_iwall_get_post[hIndex].func;
postHookFunc(sd);
}
}
return;
}
-void HP_map_iwall_remove(const char *wall_name) {
+bool HP_map_iwall_remove(const char *wall_name) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_iwall_remove_pre ) {
- void (*preHookFunc) (const char **wall_name);
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_map_iwall_remove_pre > 0) {
+ bool (*preHookFunc) (const char **wall_name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_iwall_remove_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_iwall_remove_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_iwall_remove_pre[hIndex].func;
- preHookFunc(&wall_name);
+ retVal___ = preHookFunc(&wall_name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
- return;
+ return retVal___;
}
}
{
- HPMHooks.source.map.iwall_remove(wall_name);
+ retVal___ = HPMHooks.source.map.iwall_remove(wall_name);
}
- if( HPMHooks.count.HP_map_iwall_remove_post ) {
- void (*postHookFunc) (const char *wall_name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_iwall_remove_post; hIndex++ ) {
+ if (HPMHooks.count.HP_map_iwall_remove_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *wall_name);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_iwall_remove_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_iwall_remove_post[hIndex].func;
- postHookFunc(wall_name);
+ retVal___ = postHookFunc(retVal___, wall_name);
}
}
- return;
+ return retVal___;
}
int HP_map_addmobtolist(unsigned short m, struct spawn_data *spawn) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_addmobtolist_pre ) {
+ if (HPMHooks.count.HP_map_addmobtolist_pre > 0) {
int (*preHookFunc) (unsigned short *m, struct spawn_data **spawn);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_addmobtolist_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_addmobtolist_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_addmobtolist_pre[hIndex].func;
retVal___ = preHookFunc(&m, &spawn);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -41604,9 +47380,9 @@ int HP_map_addmobtolist(unsigned short m, struct spawn_data *spawn) {
{
retVal___ = HPMHooks.source.map.addmobtolist(m, spawn);
}
- if( HPMHooks.count.HP_map_addmobtolist_post ) {
+ if (HPMHooks.count.HP_map_addmobtolist_post > 0) {
int (*postHookFunc) (int retVal___, unsigned short m, struct spawn_data *spawn);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_addmobtolist_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_addmobtolist_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_addmobtolist_post[hIndex].func;
retVal___ = postHookFunc(retVal___, m, spawn);
}
@@ -41615,14 +47391,14 @@ int HP_map_addmobtolist(unsigned short m, struct spawn_data *spawn) {
}
void HP_map_spawnmobs(int16 m) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_spawnmobs_pre ) {
+ if (HPMHooks.count.HP_map_spawnmobs_pre > 0) {
void (*preHookFunc) (int16 *m);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_spawnmobs_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_spawnmobs_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_spawnmobs_pre[hIndex].func;
preHookFunc(&m);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -41630,9 +47406,9 @@ void HP_map_spawnmobs(int16 m) {
{
HPMHooks.source.map.spawnmobs(m);
}
- if( HPMHooks.count.HP_map_spawnmobs_post ) {
+ if (HPMHooks.count.HP_map_spawnmobs_post > 0) {
void (*postHookFunc) (int16 m);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_spawnmobs_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_spawnmobs_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_spawnmobs_post[hIndex].func;
postHookFunc(m);
}
@@ -41641,14 +47417,14 @@ void HP_map_spawnmobs(int16 m) {
}
void HP_map_removemobs(int16 m) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_removemobs_pre ) {
+ if (HPMHooks.count.HP_map_removemobs_pre > 0) {
void (*preHookFunc) (int16 *m);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_removemobs_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_removemobs_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_removemobs_pre[hIndex].func;
preHookFunc(&m);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -41656,9 +47432,9 @@ void HP_map_removemobs(int16 m) {
{
HPMHooks.source.map.removemobs(m);
}
- if( HPMHooks.count.HP_map_removemobs_post ) {
+ if (HPMHooks.count.HP_map_removemobs_post > 0) {
void (*postHookFunc) (int16 m);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_removemobs_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_removemobs_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_removemobs_post[hIndex].func;
postHookFunc(m);
}
@@ -41667,14 +47443,14 @@ void HP_map_removemobs(int16 m) {
}
void HP_map_addmap2db(struct map_data *m) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_addmap2db_pre ) {
+ if (HPMHooks.count.HP_map_addmap2db_pre > 0) {
void (*preHookFunc) (struct map_data **m);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_addmap2db_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_addmap2db_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_addmap2db_pre[hIndex].func;
preHookFunc(&m);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -41682,9 +47458,9 @@ void HP_map_addmap2db(struct map_data *m) {
{
HPMHooks.source.map.addmap2db(m);
}
- if( HPMHooks.count.HP_map_addmap2db_post ) {
+ if (HPMHooks.count.HP_map_addmap2db_post > 0) {
void (*postHookFunc) (struct map_data *m);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_addmap2db_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_addmap2db_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_addmap2db_post[hIndex].func;
postHookFunc(m);
}
@@ -41693,14 +47469,14 @@ void HP_map_addmap2db(struct map_data *m) {
}
void HP_map_removemapdb(struct map_data *m) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_removemapdb_pre ) {
+ if (HPMHooks.count.HP_map_removemapdb_pre > 0) {
void (*preHookFunc) (struct map_data **m);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_removemapdb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_removemapdb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_removemapdb_pre[hIndex].func;
preHookFunc(&m);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -41708,9 +47484,9 @@ void HP_map_removemapdb(struct map_data *m) {
{
HPMHooks.source.map.removemapdb(m);
}
- if( HPMHooks.count.HP_map_removemapdb_post ) {
+ if (HPMHooks.count.HP_map_removemapdb_post > 0) {
void (*postHookFunc) (struct map_data *m);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_removemapdb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_removemapdb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_removemapdb_post[hIndex].func;
postHookFunc(m);
}
@@ -41719,14 +47495,14 @@ void HP_map_removemapdb(struct map_data *m) {
}
void HP_map_clean(int i) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_clean_pre ) {
+ if (HPMHooks.count.HP_map_clean_pre > 0) {
void (*preHookFunc) (int *i);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_clean_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_clean_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_clean_pre[hIndex].func;
preHookFunc(&i);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -41734,9 +47510,9 @@ void HP_map_clean(int i) {
{
HPMHooks.source.map.clean(i);
}
- if( HPMHooks.count.HP_map_clean_post ) {
+ if (HPMHooks.count.HP_map_clean_post > 0) {
void (*postHookFunc) (int i);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_clean_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_clean_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_clean_post[hIndex].func;
postHookFunc(i);
}
@@ -41745,14 +47521,14 @@ void HP_map_clean(int i) {
}
void HP_map_do_shutdown(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_do_shutdown_pre ) {
+ if (HPMHooks.count.HP_map_do_shutdown_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_do_shutdown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_do_shutdown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_do_shutdown_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -41760,9 +47536,9 @@ void HP_map_do_shutdown(void) {
{
HPMHooks.source.map.do_shutdown();
}
- if( HPMHooks.count.HP_map_do_shutdown_post ) {
+ if (HPMHooks.count.HP_map_do_shutdown_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_do_shutdown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_do_shutdown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_do_shutdown_post[hIndex].func;
postHookFunc();
}
@@ -41772,14 +47548,14 @@ void HP_map_do_shutdown(void) {
int HP_map_freeblock_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_freeblock_timer_pre ) {
+ if (HPMHooks.count.HP_map_freeblock_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_freeblock_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_freeblock_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_freeblock_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -41787,9 +47563,9 @@ int HP_map_freeblock_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.map.freeblock_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_map_freeblock_timer_post ) {
+ if (HPMHooks.count.HP_map_freeblock_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_freeblock_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_freeblock_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_freeblock_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -41799,14 +47575,14 @@ int HP_map_freeblock_timer(int tid, int64 tick, int id, intptr_t data) {
int HP_map_searchrandfreecell(int16 m, const struct block_list *bl, int16 *x, int16 *y, int stack) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_searchrandfreecell_pre ) {
+ if (HPMHooks.count.HP_map_searchrandfreecell_pre > 0) {
int (*preHookFunc) (int16 *m, const struct block_list **bl, int16 **x, int16 **y, int *stack);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_searchrandfreecell_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_searchrandfreecell_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_searchrandfreecell_pre[hIndex].func;
retVal___ = preHookFunc(&m, &bl, &x, &y, &stack);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -41814,9 +47590,9 @@ int HP_map_searchrandfreecell(int16 m, const struct block_list *bl, int16 *x, in
{
retVal___ = HPMHooks.source.map.searchrandfreecell(m, bl, x, y, stack);
}
- if( HPMHooks.count.HP_map_searchrandfreecell_post ) {
+ if (HPMHooks.count.HP_map_searchrandfreecell_post > 0) {
int (*postHookFunc) (int retVal___, int16 m, const struct block_list *bl, int16 *x, int16 *y, int stack);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_searchrandfreecell_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_searchrandfreecell_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_searchrandfreecell_post[hIndex].func;
retVal___ = postHookFunc(retVal___, m, bl, x, y, stack);
}
@@ -41826,16 +47602,16 @@ int HP_map_searchrandfreecell(int16 m, const struct block_list *bl, int16 *x, in
int HP_map_count_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_count_sub_pre ) {
+ if (HPMHooks.count.HP_map_count_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_count_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_count_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_map_count_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -41845,9 +47621,9 @@ int HP_map_count_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.map.count_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_map_count_sub_post ) {
+ if (HPMHooks.count.HP_map_count_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_count_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_count_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_map_count_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -41859,16 +47635,16 @@ int HP_map_count_sub(struct block_list *bl, va_list ap) {
struct DBData HP_map_create_charid2nick(union DBKey key, va_list args) {
int hIndex = 0;
struct DBData retVal___ = { 0 };
- if( HPMHooks.count.HP_map_create_charid2nick_pre ) {
+ if (HPMHooks.count.HP_map_create_charid2nick_pre > 0) {
struct DBData (*preHookFunc) (union DBKey *key, va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_create_charid2nick_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_create_charid2nick_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_map_create_charid2nick_pre[hIndex].func;
retVal___ = preHookFunc(&key, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -41878,9 +47654,9 @@ struct DBData HP_map_create_charid2nick(union DBKey key, va_list args) {
retVal___ = HPMHooks.source.map.create_charid2nick(key, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_map_create_charid2nick_post ) {
+ if (HPMHooks.count.HP_map_create_charid2nick_post > 0) {
struct DBData (*postHookFunc) (struct DBData retVal___, union DBKey key, va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_create_charid2nick_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_create_charid2nick_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_map_create_charid2nick_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, args___copy);
@@ -41892,16 +47668,16 @@ struct DBData HP_map_create_charid2nick(union DBKey key, va_list args) {
int HP_map_removemobs_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_removemobs_sub_pre ) {
+ if (HPMHooks.count.HP_map_removemobs_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_removemobs_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_removemobs_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_map_removemobs_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -41911,9 +47687,9 @@ int HP_map_removemobs_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.map.removemobs_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_map_removemobs_sub_post ) {
+ if (HPMHooks.count.HP_map_removemobs_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_removemobs_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_removemobs_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_map_removemobs_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -41925,14 +47701,14 @@ int HP_map_removemobs_sub(struct block_list *bl, va_list ap) {
struct mapcell HP_map_gat2cell(int gat) {
int hIndex = 0;
struct mapcell retVal___ = { 0 };
- if( HPMHooks.count.HP_map_gat2cell_pre ) {
+ if (HPMHooks.count.HP_map_gat2cell_pre > 0) {
struct mapcell (*preHookFunc) (int *gat);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_gat2cell_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_gat2cell_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_gat2cell_pre[hIndex].func;
retVal___ = preHookFunc(&gat);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -41940,9 +47716,9 @@ struct mapcell HP_map_gat2cell(int gat) {
{
retVal___ = HPMHooks.source.map.gat2cell(gat);
}
- if( HPMHooks.count.HP_map_gat2cell_post ) {
+ if (HPMHooks.count.HP_map_gat2cell_post > 0) {
struct mapcell (*postHookFunc) (struct mapcell retVal___, int gat);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_gat2cell_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_gat2cell_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_gat2cell_post[hIndex].func;
retVal___ = postHookFunc(retVal___, gat);
}
@@ -41952,14 +47728,14 @@ struct mapcell HP_map_gat2cell(int gat) {
int HP_map_cell2gat(struct mapcell cell) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_cell2gat_pre ) {
+ if (HPMHooks.count.HP_map_cell2gat_pre > 0) {
int (*preHookFunc) (struct mapcell *cell);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_cell2gat_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_cell2gat_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_cell2gat_pre[hIndex].func;
retVal___ = preHookFunc(&cell);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -41967,9 +47743,9 @@ int HP_map_cell2gat(struct mapcell cell) {
{
retVal___ = HPMHooks.source.map.cell2gat(cell);
}
- if( HPMHooks.count.HP_map_cell2gat_post ) {
+ if (HPMHooks.count.HP_map_cell2gat_post > 0) {
int (*postHookFunc) (int retVal___, struct mapcell cell);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_cell2gat_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_cell2gat_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_cell2gat_post[hIndex].func;
retVal___ = postHookFunc(retVal___, cell);
}
@@ -41979,14 +47755,14 @@ int HP_map_cell2gat(struct mapcell cell) {
int HP_map_getcellp(struct map_data *m, const struct block_list *bl, int16 x, int16 y, cell_chk cellchk) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_getcellp_pre ) {
+ if (HPMHooks.count.HP_map_getcellp_pre > 0) {
int (*preHookFunc) (struct map_data **m, const struct block_list **bl, int16 *x, int16 *y, cell_chk *cellchk);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_getcellp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_getcellp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_getcellp_pre[hIndex].func;
retVal___ = preHookFunc(&m, &bl, &x, &y, &cellchk);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -41994,9 +47770,9 @@ int HP_map_getcellp(struct map_data *m, const struct block_list *bl, int16 x, in
{
retVal___ = HPMHooks.source.map.getcellp(m, bl, x, y, cellchk);
}
- if( HPMHooks.count.HP_map_getcellp_post ) {
+ if (HPMHooks.count.HP_map_getcellp_post > 0) {
int (*postHookFunc) (int retVal___, struct map_data *m, const struct block_list *bl, int16 x, int16 y, cell_chk cellchk);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_getcellp_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_getcellp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_getcellp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, m, bl, x, y, cellchk);
}
@@ -42005,14 +47781,14 @@ int HP_map_getcellp(struct map_data *m, const struct block_list *bl, int16 x, in
}
void HP_map_setcell(int16 m, int16 x, int16 y, cell_t cell, bool flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_setcell_pre ) {
+ if (HPMHooks.count.HP_map_setcell_pre > 0) {
void (*preHookFunc) (int16 *m, int16 *x, int16 *y, cell_t *cell, bool *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_setcell_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_setcell_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_setcell_pre[hIndex].func;
preHookFunc(&m, &x, &y, &cell, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -42020,9 +47796,9 @@ void HP_map_setcell(int16 m, int16 x, int16 y, cell_t cell, bool flag) {
{
HPMHooks.source.map.setcell(m, x, y, cell, flag);
}
- if( HPMHooks.count.HP_map_setcell_post ) {
+ if (HPMHooks.count.HP_map_setcell_post > 0) {
void (*postHookFunc) (int16 m, int16 x, int16 y, cell_t cell, bool flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_setcell_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_setcell_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_setcell_post[hIndex].func;
postHookFunc(m, x, y, cell, flag);
}
@@ -42032,14 +47808,14 @@ void HP_map_setcell(int16 m, int16 x, int16 y, cell_t cell, bool flag) {
int HP_map_sub_getcellp(struct map_data *m, const struct block_list *bl, int16 x, int16 y, cell_chk cellchk) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_sub_getcellp_pre ) {
+ if (HPMHooks.count.HP_map_sub_getcellp_pre > 0) {
int (*preHookFunc) (struct map_data **m, const struct block_list **bl, int16 *x, int16 *y, cell_chk *cellchk);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_sub_getcellp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_sub_getcellp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_sub_getcellp_pre[hIndex].func;
retVal___ = preHookFunc(&m, &bl, &x, &y, &cellchk);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -42047,9 +47823,9 @@ int HP_map_sub_getcellp(struct map_data *m, const struct block_list *bl, int16 x
{
retVal___ = HPMHooks.source.map.sub_getcellp(m, bl, x, y, cellchk);
}
- if( HPMHooks.count.HP_map_sub_getcellp_post ) {
+ if (HPMHooks.count.HP_map_sub_getcellp_post > 0) {
int (*postHookFunc) (int retVal___, struct map_data *m, const struct block_list *bl, int16 x, int16 y, cell_chk cellchk);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_sub_getcellp_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_sub_getcellp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_sub_getcellp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, m, bl, x, y, cellchk);
}
@@ -42058,14 +47834,14 @@ int HP_map_sub_getcellp(struct map_data *m, const struct block_list *bl, int16 x
}
void HP_map_sub_setcell(int16 m, int16 x, int16 y, cell_t cell, bool flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_sub_setcell_pre ) {
+ if (HPMHooks.count.HP_map_sub_setcell_pre > 0) {
void (*preHookFunc) (int16 *m, int16 *x, int16 *y, cell_t *cell, bool *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_sub_setcell_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_sub_setcell_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_sub_setcell_pre[hIndex].func;
preHookFunc(&m, &x, &y, &cell, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -42073,9 +47849,9 @@ void HP_map_sub_setcell(int16 m, int16 x, int16 y, cell_t cell, bool flag) {
{
HPMHooks.source.map.sub_setcell(m, x, y, cell, flag);
}
- if( HPMHooks.count.HP_map_sub_setcell_post ) {
+ if (HPMHooks.count.HP_map_sub_setcell_post > 0) {
void (*postHookFunc) (int16 m, int16 x, int16 y, cell_t cell, bool flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_sub_setcell_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_sub_setcell_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_sub_setcell_post[hIndex].func;
postHookFunc(m, x, y, cell, flag);
}
@@ -42084,14 +47860,14 @@ void HP_map_sub_setcell(int16 m, int16 x, int16 y, cell_t cell, bool flag) {
}
void HP_map_iwall_nextxy(int16 x, int16 y, int8 dir, int pos, int16 *x1, int16 *y1) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_iwall_nextxy_pre ) {
+ if (HPMHooks.count.HP_map_iwall_nextxy_pre > 0) {
void (*preHookFunc) (int16 *x, int16 *y, int8 *dir, int *pos, int16 **x1, int16 **y1);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_iwall_nextxy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_iwall_nextxy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_iwall_nextxy_pre[hIndex].func;
preHookFunc(&x, &y, &dir, &pos, &x1, &y1);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -42099,9 +47875,9 @@ void HP_map_iwall_nextxy(int16 x, int16 y, int8 dir, int pos, int16 *x1, int16 *
{
HPMHooks.source.map.iwall_nextxy(x, y, dir, pos, x1, y1);
}
- if( HPMHooks.count.HP_map_iwall_nextxy_post ) {
+ if (HPMHooks.count.HP_map_iwall_nextxy_post > 0) {
void (*postHookFunc) (int16 x, int16 y, int8 dir, int pos, int16 *x1, int16 *y1);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_iwall_nextxy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_iwall_nextxy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_iwall_nextxy_post[hIndex].func;
postHookFunc(x, y, dir, pos, x1, y1);
}
@@ -42111,16 +47887,16 @@ void HP_map_iwall_nextxy(int16 x, int16 y, int8 dir, int pos, int16 *x1, int16 *
struct DBData HP_map_create_map_data_other_server(union DBKey key, va_list args) {
int hIndex = 0;
struct DBData retVal___ = { 0 };
- if( HPMHooks.count.HP_map_create_map_data_other_server_pre ) {
+ if (HPMHooks.count.HP_map_create_map_data_other_server_pre > 0) {
struct DBData (*preHookFunc) (union DBKey *key, va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_create_map_data_other_server_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_create_map_data_other_server_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_map_create_map_data_other_server_pre[hIndex].func;
retVal___ = preHookFunc(&key, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -42130,9 +47906,9 @@ struct DBData HP_map_create_map_data_other_server(union DBKey key, va_list args)
retVal___ = HPMHooks.source.map.create_map_data_other_server(key, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_map_create_map_data_other_server_post ) {
+ if (HPMHooks.count.HP_map_create_map_data_other_server_post > 0) {
struct DBData (*postHookFunc) (struct DBData retVal___, union DBKey key, va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_create_map_data_other_server_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_create_map_data_other_server_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_map_create_map_data_other_server_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, args___copy);
@@ -42144,16 +47920,16 @@ struct DBData HP_map_create_map_data_other_server(union DBKey key, va_list args)
int HP_map_eraseallipport_sub(union DBKey key, struct DBData *data, va_list va) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_eraseallipport_sub_pre ) {
+ if (HPMHooks.count.HP_map_eraseallipport_sub_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list va);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_eraseallipport_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_eraseallipport_sub_pre; hIndex++) {
va_list va___copy; va_copy(va___copy, va);
preHookFunc = HPMHooks.list.HP_map_eraseallipport_sub_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, va___copy);
va_end(va___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -42163,9 +47939,9 @@ int HP_map_eraseallipport_sub(union DBKey key, struct DBData *data, va_list va)
retVal___ = HPMHooks.source.map.eraseallipport_sub(key, data, va___copy);
va_end(va___copy);
}
- if( HPMHooks.count.HP_map_eraseallipport_sub_post ) {
+ if (HPMHooks.count.HP_map_eraseallipport_sub_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list va);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_eraseallipport_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_eraseallipport_sub_post; hIndex++) {
va_list va___copy; va_copy(va___copy, va);
postHookFunc = HPMHooks.list.HP_map_eraseallipport_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, va___copy);
@@ -42174,56 +47950,56 @@ int HP_map_eraseallipport_sub(union DBKey key, struct DBData *data, va_list va)
}
return retVal___;
}
-char* HP_map_init_mapcache(FILE *fp) {
+bool HP_map_readfromcache(struct map_data *m) {
int hIndex = 0;
- char* retVal___ = NULL;
- if( HPMHooks.count.HP_map_init_mapcache_pre ) {
- char* (*preHookFunc) (FILE **fp);
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_map_readfromcache_pre > 0) {
+ bool (*preHookFunc) (struct map_data **m);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_init_mapcache_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_map_init_mapcache_pre[hIndex].func;
- retVal___ = preHookFunc(&fp);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_readfromcache_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_map_readfromcache_pre[hIndex].func;
+ retVal___ = preHookFunc(&m);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
}
{
- retVal___ = HPMHooks.source.map.init_mapcache(fp);
+ retVal___ = HPMHooks.source.map.readfromcache(m);
}
- if( HPMHooks.count.HP_map_init_mapcache_post ) {
- char* (*postHookFunc) (char* retVal___, FILE *fp);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_init_mapcache_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_map_init_mapcache_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, fp);
+ if (HPMHooks.count.HP_map_readfromcache_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct map_data *m);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_readfromcache_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_map_readfromcache_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, m);
}
}
return retVal___;
}
-int HP_map_readfromcache(struct map_data *m, char *buffer) {
+bool HP_map_readfromcache_v1(FILE *fp, struct map_data *m, unsigned int file_size) {
int hIndex = 0;
- int retVal___ = 0;
- if( HPMHooks.count.HP_map_readfromcache_pre ) {
- int (*preHookFunc) (struct map_data **m, char **buffer);
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_map_readfromcache_v1_pre > 0) {
+ bool (*preHookFunc) (FILE **fp, struct map_data **m, unsigned int *file_size);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_readfromcache_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_map_readfromcache_pre[hIndex].func;
- retVal___ = preHookFunc(&m, &buffer);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_readfromcache_v1_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_map_readfromcache_v1_pre[hIndex].func;
+ retVal___ = preHookFunc(&fp, &m, &file_size);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
}
{
- retVal___ = HPMHooks.source.map.readfromcache(m, buffer);
+ retVal___ = HPMHooks.source.map.readfromcache_v1(fp, m, file_size);
}
- if( HPMHooks.count.HP_map_readfromcache_post ) {
- int (*postHookFunc) (int retVal___, struct map_data *m, char *buffer);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_readfromcache_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_map_readfromcache_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, m, buffer);
+ if (HPMHooks.count.HP_map_readfromcache_v1_post > 0) {
+ bool (*postHookFunc) (bool retVal___, FILE *fp, struct map_data *m, unsigned int file_size);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_readfromcache_v1_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_map_readfromcache_v1_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, fp, m, file_size);
}
}
return retVal___;
@@ -42231,14 +48007,14 @@ int HP_map_readfromcache(struct map_data *m, char *buffer) {
int HP_map_addmap(const char *mapname) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_addmap_pre ) {
+ if (HPMHooks.count.HP_map_addmap_pre > 0) {
int (*preHookFunc) (const char **mapname);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_addmap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_addmap_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_addmap_pre[hIndex].func;
retVal___ = preHookFunc(&mapname);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -42246,9 +48022,9 @@ int HP_map_addmap(const char *mapname) {
{
retVal___ = HPMHooks.source.map.addmap(mapname);
}
- if( HPMHooks.count.HP_map_addmap_post ) {
+ if (HPMHooks.count.HP_map_addmap_post > 0) {
int (*postHookFunc) (int retVal___, const char *mapname);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_addmap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_addmap_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_addmap_post[hIndex].func;
retVal___ = postHookFunc(retVal___, mapname);
}
@@ -42257,14 +48033,14 @@ int HP_map_addmap(const char *mapname) {
}
void HP_map_delmapid(int id) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_delmapid_pre ) {
+ if (HPMHooks.count.HP_map_delmapid_pre > 0) {
void (*preHookFunc) (int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_delmapid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_delmapid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_delmapid_pre[hIndex].func;
preHookFunc(&id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -42272,9 +48048,9 @@ void HP_map_delmapid(int id) {
{
HPMHooks.source.map.delmapid(id);
}
- if( HPMHooks.count.HP_map_delmapid_post ) {
+ if (HPMHooks.count.HP_map_delmapid_post > 0) {
void (*postHookFunc) (int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_delmapid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_delmapid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_delmapid_post[hIndex].func;
postHookFunc(id);
}
@@ -42283,14 +48059,14 @@ void HP_map_delmapid(int id) {
}
void HP_map_zone_db_clear(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_zone_db_clear_pre ) {
+ if (HPMHooks.count.HP_map_zone_db_clear_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_db_clear_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_db_clear_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_zone_db_clear_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -42298,9 +48074,9 @@ void HP_map_zone_db_clear(void) {
{
HPMHooks.source.map.zone_db_clear();
}
- if( HPMHooks.count.HP_map_zone_db_clear_post ) {
+ if (HPMHooks.count.HP_map_zone_db_clear_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_db_clear_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_db_clear_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_zone_db_clear_post[hIndex].func;
postHookFunc();
}
@@ -42309,14 +48085,14 @@ void HP_map_zone_db_clear(void) {
}
void HP_map_list_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_list_final_pre ) {
+ if (HPMHooks.count.HP_map_list_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_list_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_list_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_list_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -42324,9 +48100,9 @@ void HP_map_list_final(void) {
{
HPMHooks.source.map.list_final();
}
- if( HPMHooks.count.HP_map_list_final_post ) {
+ if (HPMHooks.count.HP_map_list_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_list_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_list_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_list_final_post[hIndex].func;
postHookFunc();
}
@@ -42336,14 +48112,14 @@ void HP_map_list_final(void) {
int HP_map_waterheight(char *mapname) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_waterheight_pre ) {
+ if (HPMHooks.count.HP_map_waterheight_pre > 0) {
int (*preHookFunc) (char **mapname);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_waterheight_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_waterheight_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_waterheight_pre[hIndex].func;
retVal___ = preHookFunc(&mapname);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -42351,9 +48127,9 @@ int HP_map_waterheight(char *mapname) {
{
retVal___ = HPMHooks.source.map.waterheight(mapname);
}
- if( HPMHooks.count.HP_map_waterheight_post ) {
+ if (HPMHooks.count.HP_map_waterheight_post > 0) {
int (*postHookFunc) (int retVal___, char *mapname);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_waterheight_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_waterheight_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_waterheight_post[hIndex].func;
retVal___ = postHookFunc(retVal___, mapname);
}
@@ -42363,14 +48139,14 @@ int HP_map_waterheight(char *mapname) {
int HP_map_readgat(struct map_data *m) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_readgat_pre ) {
+ if (HPMHooks.count.HP_map_readgat_pre > 0) {
int (*preHookFunc) (struct map_data **m);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_readgat_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_readgat_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_readgat_pre[hIndex].func;
retVal___ = preHookFunc(&m);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -42378,9 +48154,9 @@ int HP_map_readgat(struct map_data *m) {
{
retVal___ = HPMHooks.source.map.readgat(m);
}
- if( HPMHooks.count.HP_map_readgat_post ) {
+ if (HPMHooks.count.HP_map_readgat_post > 0) {
int (*postHookFunc) (int retVal___, struct map_data *m);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_readgat_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_readgat_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_readgat_post[hIndex].func;
retVal___ = postHookFunc(retVal___, m);
}
@@ -42390,14 +48166,14 @@ int HP_map_readgat(struct map_data *m) {
int HP_map_readallmaps(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_readallmaps_pre ) {
+ if (HPMHooks.count.HP_map_readallmaps_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_readallmaps_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_readallmaps_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_readallmaps_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -42405,9 +48181,9 @@ int HP_map_readallmaps(void) {
{
retVal___ = HPMHooks.source.map.readallmaps();
}
- if( HPMHooks.count.HP_map_readallmaps_post ) {
+ if (HPMHooks.count.HP_map_readallmaps_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_readallmaps_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_readallmaps_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_readallmaps_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -42417,14 +48193,14 @@ int HP_map_readallmaps(void) {
bool HP_map_config_read(const char *filename, bool imported) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_map_config_read_pre ) {
+ if (HPMHooks.count.HP_map_config_read_pre > 0) {
bool (*preHookFunc) (const char **filename, bool *imported);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_config_read_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_config_read_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_config_read_pre[hIndex].func;
retVal___ = preHookFunc(&filename, &imported);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -42432,9 +48208,9 @@ bool HP_map_config_read(const char *filename, bool imported) {
{
retVal___ = HPMHooks.source.map.config_read(filename, imported);
}
- if( HPMHooks.count.HP_map_config_read_post ) {
+ if (HPMHooks.count.HP_map_config_read_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *filename, bool imported);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_config_read_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_config_read_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_config_read_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename, imported);
}
@@ -42444,14 +48220,14 @@ bool HP_map_config_read(const char *filename, bool imported) {
bool HP_map_read_npclist(const char *filename, bool imported) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_map_read_npclist_pre ) {
+ if (HPMHooks.count.HP_map_read_npclist_pre > 0) {
bool (*preHookFunc) (const char **filename, bool *imported);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_read_npclist_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_read_npclist_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_read_npclist_pre[hIndex].func;
retVal___ = preHookFunc(&filename, &imported);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -42459,9 +48235,9 @@ bool HP_map_read_npclist(const char *filename, bool imported) {
{
retVal___ = HPMHooks.source.map.read_npclist(filename, imported);
}
- if( HPMHooks.count.HP_map_read_npclist_post ) {
+ if (HPMHooks.count.HP_map_read_npclist_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *filename, bool imported);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_read_npclist_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_read_npclist_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_read_npclist_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename, imported);
}
@@ -42471,14 +48247,14 @@ bool HP_map_read_npclist(const char *filename, bool imported) {
bool HP_map_inter_config_read(const char *filename, bool imported) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_map_inter_config_read_pre ) {
+ if (HPMHooks.count.HP_map_inter_config_read_pre > 0) {
bool (*preHookFunc) (const char **filename, bool *imported);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_inter_config_read_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_inter_config_read_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_inter_config_read_pre[hIndex].func;
retVal___ = preHookFunc(&filename, &imported);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -42486,9 +48262,9 @@ bool HP_map_inter_config_read(const char *filename, bool imported) {
{
retVal___ = HPMHooks.source.map.inter_config_read(filename, imported);
}
- if( HPMHooks.count.HP_map_inter_config_read_post ) {
+ if (HPMHooks.count.HP_map_inter_config_read_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *filename, bool imported);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_inter_config_read_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_inter_config_read_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_inter_config_read_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename, imported);
}
@@ -42498,14 +48274,14 @@ bool HP_map_inter_config_read(const char *filename, bool imported) {
bool HP_map_inter_config_read_database_names(const char *filename, const struct config_t *config, bool imported) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_map_inter_config_read_database_names_pre ) {
+ if (HPMHooks.count.HP_map_inter_config_read_database_names_pre > 0) {
bool (*preHookFunc) (const char **filename, const struct config_t **config, bool *imported);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_inter_config_read_database_names_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_inter_config_read_database_names_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_inter_config_read_database_names_pre[hIndex].func;
retVal___ = preHookFunc(&filename, &config, &imported);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -42513,9 +48289,9 @@ bool HP_map_inter_config_read_database_names(const char *filename, const struct
{
retVal___ = HPMHooks.source.map.inter_config_read_database_names(filename, config, imported);
}
- if( HPMHooks.count.HP_map_inter_config_read_database_names_post ) {
+ if (HPMHooks.count.HP_map_inter_config_read_database_names_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *filename, const struct config_t *config, bool imported);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_inter_config_read_database_names_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_inter_config_read_database_names_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_inter_config_read_database_names_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename, config, imported);
}
@@ -42525,14 +48301,14 @@ bool HP_map_inter_config_read_database_names(const char *filename, const struct
bool HP_map_inter_config_read_connection(const char *filename, const struct config_t *config, bool imported) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_map_inter_config_read_connection_pre ) {
+ if (HPMHooks.count.HP_map_inter_config_read_connection_pre > 0) {
bool (*preHookFunc) (const char **filename, const struct config_t **config, bool *imported);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_inter_config_read_connection_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_inter_config_read_connection_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_inter_config_read_connection_pre[hIndex].func;
retVal___ = preHookFunc(&filename, &config, &imported);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -42540,9 +48316,9 @@ bool HP_map_inter_config_read_connection(const char *filename, const struct conf
{
retVal___ = HPMHooks.source.map.inter_config_read_connection(filename, config, imported);
}
- if( HPMHooks.count.HP_map_inter_config_read_connection_post ) {
+ if (HPMHooks.count.HP_map_inter_config_read_connection_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *filename, const struct config_t *config, bool imported);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_inter_config_read_connection_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_inter_config_read_connection_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_inter_config_read_connection_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename, config, imported);
}
@@ -42552,14 +48328,14 @@ bool HP_map_inter_config_read_connection(const char *filename, const struct conf
int HP_map_sql_init(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_sql_init_pre ) {
+ if (HPMHooks.count.HP_map_sql_init_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_sql_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_sql_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_sql_init_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -42567,9 +48343,9 @@ int HP_map_sql_init(void) {
{
retVal___ = HPMHooks.source.map.sql_init();
}
- if( HPMHooks.count.HP_map_sql_init_post ) {
+ if (HPMHooks.count.HP_map_sql_init_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_sql_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_sql_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_sql_init_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -42579,14 +48355,14 @@ int HP_map_sql_init(void) {
int HP_map_sql_close(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_sql_close_pre ) {
+ if (HPMHooks.count.HP_map_sql_close_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_sql_close_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_sql_close_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_sql_close_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -42594,9 +48370,9 @@ int HP_map_sql_close(void) {
{
retVal___ = HPMHooks.source.map.sql_close();
}
- if( HPMHooks.count.HP_map_sql_close_post ) {
+ if (HPMHooks.count.HP_map_sql_close_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_sql_close_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_sql_close_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_sql_close_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -42606,14 +48382,14 @@ int HP_map_sql_close(void) {
bool HP_map_zone_mf_cache(int m, char *flag, char *params) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_map_zone_mf_cache_pre ) {
+ if (HPMHooks.count.HP_map_zone_mf_cache_pre > 0) {
bool (*preHookFunc) (int *m, char **flag, char **params);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_mf_cache_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_mf_cache_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_zone_mf_cache_pre[hIndex].func;
retVal___ = preHookFunc(&m, &flag, &params);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -42621,26 +48397,26 @@ bool HP_map_zone_mf_cache(int m, char *flag, char *params) {
{
retVal___ = HPMHooks.source.map.zone_mf_cache(m, flag, params);
}
- if( HPMHooks.count.HP_map_zone_mf_cache_post ) {
+ if (HPMHooks.count.HP_map_zone_mf_cache_post > 0) {
bool (*postHookFunc) (bool retVal___, int m, char *flag, char *params);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_mf_cache_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_mf_cache_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_zone_mf_cache_post[hIndex].func;
retVal___ = postHookFunc(retVal___, m, flag, params);
}
}
return retVal___;
}
-unsigned short HP_map_zone_str2itemid(const char *name) {
+int HP_map_zone_str2itemid(const char *name) {
int hIndex = 0;
- unsigned short retVal___ = 0;
- if( HPMHooks.count.HP_map_zone_str2itemid_pre ) {
- unsigned short (*preHookFunc) (const char **name);
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_map_zone_str2itemid_pre > 0) {
+ int (*preHookFunc) (const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_str2itemid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_str2itemid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_zone_str2itemid_pre[hIndex].func;
retVal___ = preHookFunc(&name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -42648,9 +48424,9 @@ unsigned short HP_map_zone_str2itemid(const char *name) {
{
retVal___ = HPMHooks.source.map.zone_str2itemid(name);
}
- if( HPMHooks.count.HP_map_zone_str2itemid_post ) {
- unsigned short (*postHookFunc) (unsigned short retVal___, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_str2itemid_post; hIndex++ ) {
+ if (HPMHooks.count.HP_map_zone_str2itemid_post > 0) {
+ int (*postHookFunc) (int retVal___, const char *name);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_str2itemid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_zone_str2itemid_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name);
}
@@ -42660,14 +48436,14 @@ unsigned short HP_map_zone_str2itemid(const char *name) {
unsigned short HP_map_zone_str2skillid(const char *name) {
int hIndex = 0;
unsigned short retVal___ = 0;
- if( HPMHooks.count.HP_map_zone_str2skillid_pre ) {
+ if (HPMHooks.count.HP_map_zone_str2skillid_pre > 0) {
unsigned short (*preHookFunc) (const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_str2skillid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_str2skillid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_zone_str2skillid_pre[hIndex].func;
retVal___ = preHookFunc(&name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -42675,9 +48451,9 @@ unsigned short HP_map_zone_str2skillid(const char *name) {
{
retVal___ = HPMHooks.source.map.zone_str2skillid(name);
}
- if( HPMHooks.count.HP_map_zone_str2skillid_post ) {
+ if (HPMHooks.count.HP_map_zone_str2skillid_post > 0) {
unsigned short (*postHookFunc) (unsigned short retVal___, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_str2skillid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_str2skillid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_zone_str2skillid_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name);
}
@@ -42687,14 +48463,14 @@ unsigned short HP_map_zone_str2skillid(const char *name) {
enum bl_type HP_map_zone_bl_type(const char *entry, enum map_zone_skill_subtype *subtype) {
int hIndex = 0;
enum bl_type retVal___ = BL_NUL;
- if( HPMHooks.count.HP_map_zone_bl_type_pre ) {
+ if (HPMHooks.count.HP_map_zone_bl_type_pre > 0) {
enum bl_type (*preHookFunc) (const char **entry, enum map_zone_skill_subtype **subtype);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_bl_type_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_bl_type_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_zone_bl_type_pre[hIndex].func;
retVal___ = preHookFunc(&entry, &subtype);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -42702,9 +48478,9 @@ enum bl_type HP_map_zone_bl_type(const char *entry, enum map_zone_skill_subtype
{
retVal___ = HPMHooks.source.map.zone_bl_type(entry, subtype);
}
- if( HPMHooks.count.HP_map_zone_bl_type_post ) {
+ if (HPMHooks.count.HP_map_zone_bl_type_post > 0) {
enum bl_type (*postHookFunc) (enum bl_type retVal___, const char *entry, enum map_zone_skill_subtype *subtype);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_bl_type_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_bl_type_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_zone_bl_type_post[hIndex].func;
retVal___ = postHookFunc(retVal___, entry, subtype);
}
@@ -42713,14 +48489,14 @@ enum bl_type HP_map_zone_bl_type(const char *entry, enum map_zone_skill_subtype
}
void HP_map_read_zone_db(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_read_zone_db_pre ) {
+ if (HPMHooks.count.HP_map_read_zone_db_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_read_zone_db_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_read_zone_db_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_read_zone_db_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -42728,9 +48504,9 @@ void HP_map_read_zone_db(void) {
{
HPMHooks.source.map.read_zone_db();
}
- if( HPMHooks.count.HP_map_read_zone_db_post ) {
+ if (HPMHooks.count.HP_map_read_zone_db_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_read_zone_db_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_read_zone_db_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_read_zone_db_post[hIndex].func;
postHookFunc();
}
@@ -42740,16 +48516,16 @@ void HP_map_read_zone_db(void) {
int HP_map_db_final(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_db_final_pre ) {
+ if (HPMHooks.count.HP_map_db_final_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_db_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_db_final_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_map_db_final_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -42759,9 +48535,9 @@ int HP_map_db_final(union DBKey key, struct DBData *data, va_list ap) {
retVal___ = HPMHooks.source.map.db_final(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_map_db_final_post ) {
+ if (HPMHooks.count.HP_map_db_final_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_db_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_db_final_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_map_db_final_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -42773,16 +48549,16 @@ int HP_map_db_final(union DBKey key, struct DBData *data, va_list ap) {
int HP_map_nick_db_final(union DBKey key, struct DBData *data, va_list args) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_nick_db_final_pre ) {
+ if (HPMHooks.count.HP_map_nick_db_final_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_nick_db_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_nick_db_final_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_map_nick_db_final_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -42792,9 +48568,9 @@ int HP_map_nick_db_final(union DBKey key, struct DBData *data, va_list args) {
retVal___ = HPMHooks.source.map.nick_db_final(key, data, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_map_nick_db_final_post ) {
+ if (HPMHooks.count.HP_map_nick_db_final_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_nick_db_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_nick_db_final_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_map_nick_db_final_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, args___copy);
@@ -42806,16 +48582,16 @@ int HP_map_nick_db_final(union DBKey key, struct DBData *data, va_list args) {
int HP_map_cleanup_db_sub(union DBKey key, struct DBData *data, va_list va) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_cleanup_db_sub_pre ) {
+ if (HPMHooks.count.HP_map_cleanup_db_sub_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list va);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_cleanup_db_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_cleanup_db_sub_pre; hIndex++) {
va_list va___copy; va_copy(va___copy, va);
preHookFunc = HPMHooks.list.HP_map_cleanup_db_sub_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, va___copy);
va_end(va___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -42825,9 +48601,9 @@ int HP_map_cleanup_db_sub(union DBKey key, struct DBData *data, va_list va) {
retVal___ = HPMHooks.source.map.cleanup_db_sub(key, data, va___copy);
va_end(va___copy);
}
- if( HPMHooks.count.HP_map_cleanup_db_sub_post ) {
+ if (HPMHooks.count.HP_map_cleanup_db_sub_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list va);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_cleanup_db_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_cleanup_db_sub_post; hIndex++) {
va_list va___copy; va_copy(va___copy, va);
postHookFunc = HPMHooks.list.HP_map_cleanup_db_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, va___copy);
@@ -42839,16 +48615,16 @@ int HP_map_cleanup_db_sub(union DBKey key, struct DBData *data, va_list va) {
int HP_map_abort_sub(struct map_session_data *sd, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_abort_sub_pre ) {
+ if (HPMHooks.count.HP_map_abort_sub_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_abort_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_abort_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_map_abort_sub_pre[hIndex].func;
retVal___ = preHookFunc(&sd, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -42858,9 +48634,9 @@ int HP_map_abort_sub(struct map_session_data *sd, va_list ap) {
retVal___ = HPMHooks.source.map.abort_sub(sd, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_map_abort_sub_post ) {
+ if (HPMHooks.count.HP_map_abort_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_abort_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_abort_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_map_abort_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, ap___copy);
@@ -42871,14 +48647,14 @@ int HP_map_abort_sub(struct map_session_data *sd, va_list ap) {
}
void HP_map_update_cell_bl(struct block_list *bl, bool increase) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_update_cell_bl_pre ) {
+ if (HPMHooks.count.HP_map_update_cell_bl_pre > 0) {
void (*preHookFunc) (struct block_list **bl, bool *increase);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_update_cell_bl_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_update_cell_bl_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_update_cell_bl_pre[hIndex].func;
preHookFunc(&bl, &increase);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -42886,9 +48662,9 @@ void HP_map_update_cell_bl(struct block_list *bl, bool increase) {
{
HPMHooks.source.map.update_cell_bl(bl, increase);
}
- if( HPMHooks.count.HP_map_update_cell_bl_post ) {
+ if (HPMHooks.count.HP_map_update_cell_bl_post > 0) {
void (*postHookFunc) (struct block_list *bl, bool increase);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_update_cell_bl_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_update_cell_bl_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_update_cell_bl_post[hIndex].func;
postHookFunc(bl, increase);
}
@@ -42898,14 +48674,14 @@ void HP_map_update_cell_bl(struct block_list *bl, bool increase) {
int HP_map_get_new_bonus_id(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_map_get_new_bonus_id_pre ) {
+ if (HPMHooks.count.HP_map_get_new_bonus_id_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_get_new_bonus_id_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_get_new_bonus_id_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_get_new_bonus_id_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -42913,9 +48689,9 @@ int HP_map_get_new_bonus_id(void) {
{
retVal___ = HPMHooks.source.map.get_new_bonus_id();
}
- if( HPMHooks.count.HP_map_get_new_bonus_id_post ) {
+ if (HPMHooks.count.HP_map_get_new_bonus_id_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_get_new_bonus_id_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_get_new_bonus_id_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_get_new_bonus_id_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -42924,14 +48700,14 @@ int HP_map_get_new_bonus_id(void) {
}
void HP_map_add_questinfo(int m, struct questinfo *qi) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_add_questinfo_pre ) {
+ if (HPMHooks.count.HP_map_add_questinfo_pre > 0) {
void (*preHookFunc) (int *m, struct questinfo **qi);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_add_questinfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_add_questinfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_add_questinfo_pre[hIndex].func;
preHookFunc(&m, &qi);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -42939,9 +48715,9 @@ void HP_map_add_questinfo(int m, struct questinfo *qi) {
{
HPMHooks.source.map.add_questinfo(m, qi);
}
- if( HPMHooks.count.HP_map_add_questinfo_post ) {
+ if (HPMHooks.count.HP_map_add_questinfo_post > 0) {
void (*postHookFunc) (int m, struct questinfo *qi);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_add_questinfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_add_questinfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_add_questinfo_post[hIndex].func;
postHookFunc(m, qi);
}
@@ -42951,14 +48727,14 @@ void HP_map_add_questinfo(int m, struct questinfo *qi) {
bool HP_map_remove_questinfo(int m, struct npc_data *nd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_map_remove_questinfo_pre ) {
+ if (HPMHooks.count.HP_map_remove_questinfo_pre > 0) {
bool (*preHookFunc) (int *m, struct npc_data **nd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_remove_questinfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_remove_questinfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_remove_questinfo_pre[hIndex].func;
retVal___ = preHookFunc(&m, &nd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -42966,9 +48742,9 @@ bool HP_map_remove_questinfo(int m, struct npc_data *nd) {
{
retVal___ = HPMHooks.source.map.remove_questinfo(m, nd);
}
- if( HPMHooks.count.HP_map_remove_questinfo_post ) {
+ if (HPMHooks.count.HP_map_remove_questinfo_post > 0) {
bool (*postHookFunc) (bool retVal___, int m, struct npc_data *nd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_remove_questinfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_remove_questinfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_remove_questinfo_post[hIndex].func;
retVal___ = postHookFunc(retVal___, m, nd);
}
@@ -42978,14 +48754,14 @@ bool HP_map_remove_questinfo(int m, struct npc_data *nd) {
struct map_zone_data* HP_map_merge_zone(struct map_zone_data *main, struct map_zone_data *other) {
int hIndex = 0;
struct map_zone_data* retVal___ = NULL;
- if( HPMHooks.count.HP_map_merge_zone_pre ) {
+ if (HPMHooks.count.HP_map_merge_zone_pre > 0) {
struct map_zone_data* (*preHookFunc) (struct map_zone_data **main, struct map_zone_data **other);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_merge_zone_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_merge_zone_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_merge_zone_pre[hIndex].func;
retVal___ = preHookFunc(&main, &other);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -42993,9 +48769,9 @@ struct map_zone_data* HP_map_merge_zone(struct map_zone_data *main, struct map_z
{
retVal___ = HPMHooks.source.map.merge_zone(main, other);
}
- if( HPMHooks.count.HP_map_merge_zone_post ) {
+ if (HPMHooks.count.HP_map_merge_zone_post > 0) {
struct map_zone_data* (*postHookFunc) (struct map_zone_data* retVal___, struct map_zone_data *main, struct map_zone_data *other);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_merge_zone_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_merge_zone_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_merge_zone_post[hIndex].func;
retVal___ = postHookFunc(retVal___, main, other);
}
@@ -43004,14 +48780,14 @@ struct map_zone_data* HP_map_merge_zone(struct map_zone_data *main, struct map_z
}
void HP_map_zone_clear_single(struct map_zone_data *zone) {
int hIndex = 0;
- if( HPMHooks.count.HP_map_zone_clear_single_pre ) {
+ if (HPMHooks.count.HP_map_zone_clear_single_pre > 0) {
void (*preHookFunc) (struct map_zone_data **zone);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_clear_single_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_clear_single_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_zone_clear_single_pre[hIndex].func;
preHookFunc(&zone);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -43019,9 +48795,9 @@ void HP_map_zone_clear_single(struct map_zone_data *zone) {
{
HPMHooks.source.map.zone_clear_single(zone);
}
- if( HPMHooks.count.HP_map_zone_clear_single_post ) {
+ if (HPMHooks.count.HP_map_zone_clear_single_post > 0) {
void (*postHookFunc) (struct map_zone_data *zone);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_clear_single_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_clear_single_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_zone_clear_single_post[hIndex].func;
postHookFunc(zone);
}
@@ -43032,14 +48808,14 @@ void HP_map_zone_clear_single(struct map_zone_data *zone) {
int HP_mapindex_init(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapindex_init_pre ) {
+ if (HPMHooks.count.HP_mapindex_init_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapindex_init_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -43047,9 +48823,9 @@ int HP_mapindex_init(void) {
{
retVal___ = HPMHooks.source.mapindex.init();
}
- if( HPMHooks.count.HP_mapindex_init_post ) {
+ if (HPMHooks.count.HP_mapindex_init_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapindex_init_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -43058,14 +48834,14 @@ int HP_mapindex_init(void) {
}
void HP_mapindex_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapindex_final_pre ) {
+ if (HPMHooks.count.HP_mapindex_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapindex_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -43073,9 +48849,9 @@ void HP_mapindex_final(void) {
{
HPMHooks.source.mapindex.final();
}
- if( HPMHooks.count.HP_mapindex_final_post ) {
+ if (HPMHooks.count.HP_mapindex_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapindex_final_post[hIndex].func;
postHookFunc();
}
@@ -43085,14 +48861,14 @@ void HP_mapindex_final(void) {
int HP_mapindex_addmap(int index, const char *name) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapindex_addmap_pre ) {
+ if (HPMHooks.count.HP_mapindex_addmap_pre > 0) {
int (*preHookFunc) (int *index, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_addmap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_addmap_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapindex_addmap_pre[hIndex].func;
retVal___ = preHookFunc(&index, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -43100,9 +48876,9 @@ int HP_mapindex_addmap(int index, const char *name) {
{
retVal___ = HPMHooks.source.mapindex.addmap(index, name);
}
- if( HPMHooks.count.HP_mapindex_addmap_post ) {
+ if (HPMHooks.count.HP_mapindex_addmap_post > 0) {
int (*postHookFunc) (int retVal___, int index, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_addmap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_addmap_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapindex_addmap_post[hIndex].func;
retVal___ = postHookFunc(retVal___, index, name);
}
@@ -43111,14 +48887,14 @@ int HP_mapindex_addmap(int index, const char *name) {
}
void HP_mapindex_removemap(int index) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapindex_removemap_pre ) {
+ if (HPMHooks.count.HP_mapindex_removemap_pre > 0) {
void (*preHookFunc) (int *index);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_removemap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_removemap_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapindex_removemap_pre[hIndex].func;
preHookFunc(&index);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -43126,9 +48902,9 @@ void HP_mapindex_removemap(int index) {
{
HPMHooks.source.mapindex.removemap(index);
}
- if( HPMHooks.count.HP_mapindex_removemap_post ) {
+ if (HPMHooks.count.HP_mapindex_removemap_post > 0) {
void (*postHookFunc) (int index);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_removemap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_removemap_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapindex_removemap_post[hIndex].func;
postHookFunc(index);
}
@@ -43138,14 +48914,14 @@ void HP_mapindex_removemap(int index) {
const char* HP_mapindex_getmapname(const char *string, char *output) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_mapindex_getmapname_pre ) {
+ if (HPMHooks.count.HP_mapindex_getmapname_pre > 0) {
const char* (*preHookFunc) (const char **string, char **output);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_getmapname_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_getmapname_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapindex_getmapname_pre[hIndex].func;
retVal___ = preHookFunc(&string, &output);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -43153,9 +48929,9 @@ const char* HP_mapindex_getmapname(const char *string, char *output) {
{
retVal___ = HPMHooks.source.mapindex.getmapname(string, output);
}
- if( HPMHooks.count.HP_mapindex_getmapname_post ) {
+ if (HPMHooks.count.HP_mapindex_getmapname_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *string, char *output);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_getmapname_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_getmapname_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapindex_getmapname_post[hIndex].func;
retVal___ = postHookFunc(retVal___, string, output);
}
@@ -43165,14 +48941,14 @@ const char* HP_mapindex_getmapname(const char *string, char *output) {
const char* HP_mapindex_getmapname_ext(const char *string, char *output) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_mapindex_getmapname_ext_pre ) {
+ if (HPMHooks.count.HP_mapindex_getmapname_ext_pre > 0) {
const char* (*preHookFunc) (const char **string, char **output);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_getmapname_ext_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_getmapname_ext_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapindex_getmapname_ext_pre[hIndex].func;
retVal___ = preHookFunc(&string, &output);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -43180,9 +48956,9 @@ const char* HP_mapindex_getmapname_ext(const char *string, char *output) {
{
retVal___ = HPMHooks.source.mapindex.getmapname_ext(string, output);
}
- if( HPMHooks.count.HP_mapindex_getmapname_ext_post ) {
+ if (HPMHooks.count.HP_mapindex_getmapname_ext_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *string, char *output);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_getmapname_ext_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_getmapname_ext_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapindex_getmapname_ext_post[hIndex].func;
retVal___ = postHookFunc(retVal___, string, output);
}
@@ -43192,14 +48968,14 @@ const char* HP_mapindex_getmapname_ext(const char *string, char *output) {
unsigned short HP_mapindex_name2id(const char *p1) {
int hIndex = 0;
unsigned short retVal___ = 0;
- if( HPMHooks.count.HP_mapindex_name2id_pre ) {
+ if (HPMHooks.count.HP_mapindex_name2id_pre > 0) {
unsigned short (*preHookFunc) (const char **p1);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_name2id_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_name2id_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapindex_name2id_pre[hIndex].func;
retVal___ = preHookFunc(&p1);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -43207,9 +48983,9 @@ unsigned short HP_mapindex_name2id(const char *p1) {
{
retVal___ = HPMHooks.source.mapindex.name2id(p1);
}
- if( HPMHooks.count.HP_mapindex_name2id_post ) {
+ if (HPMHooks.count.HP_mapindex_name2id_post > 0) {
unsigned short (*postHookFunc) (unsigned short retVal___, const char *p1);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_name2id_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_name2id_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapindex_name2id_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p1);
}
@@ -43219,14 +48995,14 @@ unsigned short HP_mapindex_name2id(const char *p1) {
const char* HP_mapindex_id2name(uint16 id, const char *file, int line, const char *func) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_mapindex_id2name_pre ) {
+ if (HPMHooks.count.HP_mapindex_id2name_pre > 0) {
const char* (*preHookFunc) (uint16 *id, const char **file, int *line, const char **func);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_id2name_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_id2name_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapindex_id2name_pre[hIndex].func;
retVal___ = preHookFunc(&id, &file, &line, &func);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -43234,9 +49010,9 @@ const char* HP_mapindex_id2name(uint16 id, const char *file, int line, const cha
{
retVal___ = HPMHooks.source.mapindex.id2name(id, file, line, func);
}
- if( HPMHooks.count.HP_mapindex_id2name_post ) {
+ if (HPMHooks.count.HP_mapindex_id2name_post > 0) {
const char* (*postHookFunc) (const char* retVal___, uint16 id, const char *file, int line, const char *func);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_id2name_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_id2name_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapindex_id2name_post[hIndex].func;
retVal___ = postHookFunc(retVal___, id, file, line, func);
}
@@ -43246,14 +49022,14 @@ const char* HP_mapindex_id2name(uint16 id, const char *file, int line, const cha
bool HP_mapindex_check_default(void) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_mapindex_check_default_pre ) {
+ if (HPMHooks.count.HP_mapindex_check_default_pre > 0) {
bool (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_check_default_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_check_default_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapindex_check_default_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -43261,9 +49037,9 @@ bool HP_mapindex_check_default(void) {
{
retVal___ = HPMHooks.source.mapindex.check_default();
}
- if( HPMHooks.count.HP_mapindex_check_default_post ) {
+ if (HPMHooks.count.HP_mapindex_check_default_post > 0) {
bool (*postHookFunc) (bool retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_check_default_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapindex_check_default_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapindex_check_default_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -43274,14 +49050,14 @@ bool HP_mapindex_check_default(void) {
struct s_mapiterator* HP_mapit_alloc(enum e_mapitflags flags, enum bl_type types) {
int hIndex = 0;
struct s_mapiterator* retVal___ = NULL;
- if( HPMHooks.count.HP_mapit_alloc_pre ) {
+ if (HPMHooks.count.HP_mapit_alloc_pre > 0) {
struct s_mapiterator* (*preHookFunc) (enum e_mapitflags *flags, enum bl_type *types);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapit_alloc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapit_alloc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapit_alloc_pre[hIndex].func;
retVal___ = preHookFunc(&flags, &types);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -43289,9 +49065,9 @@ struct s_mapiterator* HP_mapit_alloc(enum e_mapitflags flags, enum bl_type types
{
retVal___ = HPMHooks.source.mapit.alloc(flags, types);
}
- if( HPMHooks.count.HP_mapit_alloc_post ) {
+ if (HPMHooks.count.HP_mapit_alloc_post > 0) {
struct s_mapiterator* (*postHookFunc) (struct s_mapiterator* retVal___, enum e_mapitflags flags, enum bl_type types);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapit_alloc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapit_alloc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapit_alloc_post[hIndex].func;
retVal___ = postHookFunc(retVal___, flags, types);
}
@@ -43300,14 +49076,14 @@ struct s_mapiterator* HP_mapit_alloc(enum e_mapitflags flags, enum bl_type types
}
void HP_mapit_free(struct s_mapiterator *iter) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapit_free_pre ) {
+ if (HPMHooks.count.HP_mapit_free_pre > 0) {
void (*preHookFunc) (struct s_mapiterator **iter);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapit_free_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapit_free_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapit_free_pre[hIndex].func;
preHookFunc(&iter);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -43315,9 +49091,9 @@ void HP_mapit_free(struct s_mapiterator *iter) {
{
HPMHooks.source.mapit.free(iter);
}
- if( HPMHooks.count.HP_mapit_free_post ) {
+ if (HPMHooks.count.HP_mapit_free_post > 0) {
void (*postHookFunc) (struct s_mapiterator *iter);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapit_free_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapit_free_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapit_free_post[hIndex].func;
postHookFunc(iter);
}
@@ -43327,14 +49103,14 @@ void HP_mapit_free(struct s_mapiterator *iter) {
struct block_list* HP_mapit_first(struct s_mapiterator *iter) {
int hIndex = 0;
struct block_list* retVal___ = NULL;
- if( HPMHooks.count.HP_mapit_first_pre ) {
+ if (HPMHooks.count.HP_mapit_first_pre > 0) {
struct block_list* (*preHookFunc) (struct s_mapiterator **iter);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapit_first_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapit_first_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapit_first_pre[hIndex].func;
retVal___ = preHookFunc(&iter);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -43342,9 +49118,9 @@ struct block_list* HP_mapit_first(struct s_mapiterator *iter) {
{
retVal___ = HPMHooks.source.mapit.first(iter);
}
- if( HPMHooks.count.HP_mapit_first_post ) {
+ if (HPMHooks.count.HP_mapit_first_post > 0) {
struct block_list* (*postHookFunc) (struct block_list* retVal___, struct s_mapiterator *iter);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapit_first_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapit_first_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapit_first_post[hIndex].func;
retVal___ = postHookFunc(retVal___, iter);
}
@@ -43354,14 +49130,14 @@ struct block_list* HP_mapit_first(struct s_mapiterator *iter) {
struct block_list* HP_mapit_last(struct s_mapiterator *iter) {
int hIndex = 0;
struct block_list* retVal___ = NULL;
- if( HPMHooks.count.HP_mapit_last_pre ) {
+ if (HPMHooks.count.HP_mapit_last_pre > 0) {
struct block_list* (*preHookFunc) (struct s_mapiterator **iter);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapit_last_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapit_last_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapit_last_pre[hIndex].func;
retVal___ = preHookFunc(&iter);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -43369,9 +49145,9 @@ struct block_list* HP_mapit_last(struct s_mapiterator *iter) {
{
retVal___ = HPMHooks.source.mapit.last(iter);
}
- if( HPMHooks.count.HP_mapit_last_post ) {
+ if (HPMHooks.count.HP_mapit_last_post > 0) {
struct block_list* (*postHookFunc) (struct block_list* retVal___, struct s_mapiterator *iter);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapit_last_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapit_last_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapit_last_post[hIndex].func;
retVal___ = postHookFunc(retVal___, iter);
}
@@ -43381,14 +49157,14 @@ struct block_list* HP_mapit_last(struct s_mapiterator *iter) {
struct block_list* HP_mapit_next(struct s_mapiterator *iter) {
int hIndex = 0;
struct block_list* retVal___ = NULL;
- if( HPMHooks.count.HP_mapit_next_pre ) {
+ if (HPMHooks.count.HP_mapit_next_pre > 0) {
struct block_list* (*preHookFunc) (struct s_mapiterator **iter);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapit_next_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapit_next_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapit_next_pre[hIndex].func;
retVal___ = preHookFunc(&iter);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -43396,9 +49172,9 @@ struct block_list* HP_mapit_next(struct s_mapiterator *iter) {
{
retVal___ = HPMHooks.source.mapit.next(iter);
}
- if( HPMHooks.count.HP_mapit_next_post ) {
+ if (HPMHooks.count.HP_mapit_next_post > 0) {
struct block_list* (*postHookFunc) (struct block_list* retVal___, struct s_mapiterator *iter);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapit_next_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapit_next_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapit_next_post[hIndex].func;
retVal___ = postHookFunc(retVal___, iter);
}
@@ -43408,14 +49184,14 @@ struct block_list* HP_mapit_next(struct s_mapiterator *iter) {
struct block_list* HP_mapit_prev(struct s_mapiterator *iter) {
int hIndex = 0;
struct block_list* retVal___ = NULL;
- if( HPMHooks.count.HP_mapit_prev_pre ) {
+ if (HPMHooks.count.HP_mapit_prev_pre > 0) {
struct block_list* (*preHookFunc) (struct s_mapiterator **iter);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapit_prev_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapit_prev_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapit_prev_pre[hIndex].func;
retVal___ = preHookFunc(&iter);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -43423,9 +49199,9 @@ struct block_list* HP_mapit_prev(struct s_mapiterator *iter) {
{
retVal___ = HPMHooks.source.mapit.prev(iter);
}
- if( HPMHooks.count.HP_mapit_prev_post ) {
+ if (HPMHooks.count.HP_mapit_prev_post > 0) {
struct block_list* (*postHookFunc) (struct block_list* retVal___, struct s_mapiterator *iter);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapit_prev_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapit_prev_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapit_prev_post[hIndex].func;
retVal___ = postHookFunc(retVal___, iter);
}
@@ -43435,14 +49211,14 @@ struct block_list* HP_mapit_prev(struct s_mapiterator *iter) {
bool HP_mapit_exists(struct s_mapiterator *iter) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_mapit_exists_pre ) {
+ if (HPMHooks.count.HP_mapit_exists_pre > 0) {
bool (*preHookFunc) (struct s_mapiterator **iter);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapit_exists_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapit_exists_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapit_exists_pre[hIndex].func;
retVal___ = preHookFunc(&iter);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -43450,9 +49226,9 @@ bool HP_mapit_exists(struct s_mapiterator *iter) {
{
retVal___ = HPMHooks.source.mapit.exists(iter);
}
- if( HPMHooks.count.HP_mapit_exists_post ) {
+ if (HPMHooks.count.HP_mapit_exists_post > 0) {
bool (*postHookFunc) (bool retVal___, struct s_mapiterator *iter);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapit_exists_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapit_exists_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapit_exists_post[hIndex].func;
retVal___ = postHookFunc(retVal___, iter);
}
@@ -43462,14 +49238,14 @@ bool HP_mapit_exists(struct s_mapiterator *iter) {
/* mapreg_interface */
void HP_mapreg_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapreg_init_pre ) {
+ if (HPMHooks.count.HP_mapreg_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapreg_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -43477,9 +49253,9 @@ void HP_mapreg_init(void) {
{
HPMHooks.source.mapreg.init();
}
- if( HPMHooks.count.HP_mapreg_init_post ) {
+ if (HPMHooks.count.HP_mapreg_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapreg_init_post[hIndex].func;
postHookFunc();
}
@@ -43488,14 +49264,14 @@ void HP_mapreg_init(void) {
}
void HP_mapreg_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapreg_final_pre ) {
+ if (HPMHooks.count.HP_mapreg_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapreg_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -43503,9 +49279,9 @@ void HP_mapreg_final(void) {
{
HPMHooks.source.mapreg.final();
}
- if( HPMHooks.count.HP_mapreg_final_post ) {
+ if (HPMHooks.count.HP_mapreg_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapreg_final_post[hIndex].func;
postHookFunc();
}
@@ -43515,14 +49291,14 @@ void HP_mapreg_final(void) {
int HP_mapreg_readreg(int64 uid) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapreg_readreg_pre ) {
+ if (HPMHooks.count.HP_mapreg_readreg_pre > 0) {
int (*preHookFunc) (int64 *uid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_readreg_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_readreg_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapreg_readreg_pre[hIndex].func;
retVal___ = preHookFunc(&uid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -43530,9 +49306,9 @@ int HP_mapreg_readreg(int64 uid) {
{
retVal___ = HPMHooks.source.mapreg.readreg(uid);
}
- if( HPMHooks.count.HP_mapreg_readreg_post ) {
+ if (HPMHooks.count.HP_mapreg_readreg_post > 0) {
int (*postHookFunc) (int retVal___, int64 uid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_readreg_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_readreg_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapreg_readreg_post[hIndex].func;
retVal___ = postHookFunc(retVal___, uid);
}
@@ -43542,14 +49318,14 @@ int HP_mapreg_readreg(int64 uid) {
char* HP_mapreg_readregstr(int64 uid) {
int hIndex = 0;
char* retVal___ = NULL;
- if( HPMHooks.count.HP_mapreg_readregstr_pre ) {
+ if (HPMHooks.count.HP_mapreg_readregstr_pre > 0) {
char* (*preHookFunc) (int64 *uid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_readregstr_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_readregstr_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapreg_readregstr_pre[hIndex].func;
retVal___ = preHookFunc(&uid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -43557,9 +49333,9 @@ char* HP_mapreg_readregstr(int64 uid) {
{
retVal___ = HPMHooks.source.mapreg.readregstr(uid);
}
- if( HPMHooks.count.HP_mapreg_readregstr_post ) {
+ if (HPMHooks.count.HP_mapreg_readregstr_post > 0) {
char* (*postHookFunc) (char* retVal___, int64 uid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_readregstr_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_readregstr_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapreg_readregstr_post[hIndex].func;
retVal___ = postHookFunc(retVal___, uid);
}
@@ -43569,14 +49345,14 @@ char* HP_mapreg_readregstr(int64 uid) {
bool HP_mapreg_setreg(int64 uid, int val) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_mapreg_setreg_pre ) {
+ if (HPMHooks.count.HP_mapreg_setreg_pre > 0) {
bool (*preHookFunc) (int64 *uid, int *val);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_setreg_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_setreg_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapreg_setreg_pre[hIndex].func;
retVal___ = preHookFunc(&uid, &val);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -43584,9 +49360,9 @@ bool HP_mapreg_setreg(int64 uid, int val) {
{
retVal___ = HPMHooks.source.mapreg.setreg(uid, val);
}
- if( HPMHooks.count.HP_mapreg_setreg_post ) {
+ if (HPMHooks.count.HP_mapreg_setreg_post > 0) {
bool (*postHookFunc) (bool retVal___, int64 uid, int val);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_setreg_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_setreg_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapreg_setreg_post[hIndex].func;
retVal___ = postHookFunc(retVal___, uid, val);
}
@@ -43596,14 +49372,14 @@ bool HP_mapreg_setreg(int64 uid, int val) {
bool HP_mapreg_setregstr(int64 uid, const char *str) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_mapreg_setregstr_pre ) {
+ if (HPMHooks.count.HP_mapreg_setregstr_pre > 0) {
bool (*preHookFunc) (int64 *uid, const char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_setregstr_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_setregstr_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapreg_setregstr_pre[hIndex].func;
retVal___ = preHookFunc(&uid, &str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -43611,9 +49387,9 @@ bool HP_mapreg_setregstr(int64 uid, const char *str) {
{
retVal___ = HPMHooks.source.mapreg.setregstr(uid, str);
}
- if( HPMHooks.count.HP_mapreg_setregstr_post ) {
+ if (HPMHooks.count.HP_mapreg_setregstr_post > 0) {
bool (*postHookFunc) (bool retVal___, int64 uid, const char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_setregstr_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_setregstr_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapreg_setregstr_post[hIndex].func;
retVal___ = postHookFunc(retVal___, uid, str);
}
@@ -43622,14 +49398,14 @@ bool HP_mapreg_setregstr(int64 uid, const char *str) {
}
void HP_mapreg_load(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapreg_load_pre ) {
+ if (HPMHooks.count.HP_mapreg_load_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_load_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_load_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapreg_load_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -43637,9 +49413,9 @@ void HP_mapreg_load(void) {
{
HPMHooks.source.mapreg.load();
}
- if( HPMHooks.count.HP_mapreg_load_post ) {
+ if (HPMHooks.count.HP_mapreg_load_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_load_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_load_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapreg_load_post[hIndex].func;
postHookFunc();
}
@@ -43648,14 +49424,14 @@ void HP_mapreg_load(void) {
}
void HP_mapreg_save(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapreg_save_pre ) {
+ if (HPMHooks.count.HP_mapreg_save_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_save_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_save_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapreg_save_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -43663,9 +49439,9 @@ void HP_mapreg_save(void) {
{
HPMHooks.source.mapreg.save();
}
- if( HPMHooks.count.HP_mapreg_save_post ) {
+ if (HPMHooks.count.HP_mapreg_save_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_save_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_save_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapreg_save_post[hIndex].func;
postHookFunc();
}
@@ -43675,14 +49451,14 @@ void HP_mapreg_save(void) {
int HP_mapreg_save_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapreg_save_timer_pre ) {
+ if (HPMHooks.count.HP_mapreg_save_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_save_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_save_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapreg_save_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -43690,9 +49466,9 @@ int HP_mapreg_save_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.mapreg.save_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_mapreg_save_timer_post ) {
+ if (HPMHooks.count.HP_mapreg_save_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_save_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_save_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapreg_save_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -43702,16 +49478,16 @@ int HP_mapreg_save_timer(int tid, int64 tick, int id, intptr_t data) {
int HP_mapreg_destroyreg(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mapreg_destroyreg_pre ) {
+ if (HPMHooks.count.HP_mapreg_destroyreg_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_destroyreg_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_destroyreg_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_mapreg_destroyreg_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -43721,9 +49497,9 @@ int HP_mapreg_destroyreg(union DBKey key, struct DBData *data, va_list ap) {
retVal___ = HPMHooks.source.mapreg.destroyreg(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_mapreg_destroyreg_post ) {
+ if (HPMHooks.count.HP_mapreg_destroyreg_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_destroyreg_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_destroyreg_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_mapreg_destroyreg_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -43734,14 +49510,14 @@ int HP_mapreg_destroyreg(union DBKey key, struct DBData *data, va_list ap) {
}
void HP_mapreg_reload(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_mapreg_reload_pre ) {
+ if (HPMHooks.count.HP_mapreg_reload_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_reload_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_reload_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapreg_reload_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -43749,9 +49525,9 @@ void HP_mapreg_reload(void) {
{
HPMHooks.source.mapreg.reload();
}
- if( HPMHooks.count.HP_mapreg_reload_post ) {
+ if (HPMHooks.count.HP_mapreg_reload_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_reload_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_reload_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapreg_reload_post[hIndex].func;
postHookFunc();
}
@@ -43761,14 +49537,14 @@ void HP_mapreg_reload(void) {
bool HP_mapreg_config_read(const char *filename, const struct config_setting_t *config, bool imported) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_mapreg_config_read_pre ) {
+ if (HPMHooks.count.HP_mapreg_config_read_pre > 0) {
bool (*preHookFunc) (const char **filename, const struct config_setting_t **config, bool *imported);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_config_read_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_config_read_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapreg_config_read_pre[hIndex].func;
retVal___ = preHookFunc(&filename, &config, &imported);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -43776,9 +49552,9 @@ bool HP_mapreg_config_read(const char *filename, const struct config_setting_t *
{
retVal___ = HPMHooks.source.mapreg.config_read(filename, config, imported);
}
- if( HPMHooks.count.HP_mapreg_config_read_post ) {
+ if (HPMHooks.count.HP_mapreg_config_read_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *filename, const struct config_setting_t *config, bool imported);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_config_read_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_config_read_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapreg_config_read_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename, config, imported);
}
@@ -43788,14 +49564,14 @@ bool HP_mapreg_config_read(const char *filename, const struct config_setting_t *
/* md5_interface */
void HP_md5_string(const char *string, char *output) {
int hIndex = 0;
- if( HPMHooks.count.HP_md5_string_pre ) {
+ if (HPMHooks.count.HP_md5_string_pre > 0) {
void (*preHookFunc) (const char **string, char **output);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_md5_string_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_md5_string_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_md5_string_pre[hIndex].func;
preHookFunc(&string, &output);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -43803,9 +49579,9 @@ void HP_md5_string(const char *string, char *output) {
{
HPMHooks.source.md5.string(string, output);
}
- if( HPMHooks.count.HP_md5_string_post ) {
+ if (HPMHooks.count.HP_md5_string_post > 0) {
void (*postHookFunc) (const char *string, char *output);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_md5_string_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_md5_string_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_md5_string_post[hIndex].func;
postHookFunc(string, output);
}
@@ -43814,14 +49590,14 @@ void HP_md5_string(const char *string, char *output) {
}
void HP_md5_binary(const uint8 *buf, const int buf_size, uint8 *output) {
int hIndex = 0;
- if( HPMHooks.count.HP_md5_binary_pre ) {
+ if (HPMHooks.count.HP_md5_binary_pre > 0) {
void (*preHookFunc) (const uint8 **buf, const int *buf_size, uint8 **output);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_md5_binary_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_md5_binary_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_md5_binary_pre[hIndex].func;
preHookFunc(&buf, &buf_size, &output);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -43829,9 +49605,9 @@ void HP_md5_binary(const uint8 *buf, const int buf_size, uint8 *output) {
{
HPMHooks.source.md5.binary(buf, buf_size, output);
}
- if( HPMHooks.count.HP_md5_binary_post ) {
+ if (HPMHooks.count.HP_md5_binary_post > 0) {
void (*postHookFunc) (const uint8 *buf, const int buf_size, uint8 *output);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_md5_binary_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_md5_binary_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_md5_binary_post[hIndex].func;
postHookFunc(buf, buf_size, output);
}
@@ -43840,14 +49616,14 @@ void HP_md5_binary(const uint8 *buf, const int buf_size, uint8 *output) {
}
void HP_md5_salt(int len, char *output) {
int hIndex = 0;
- if( HPMHooks.count.HP_md5_salt_pre ) {
+ if (HPMHooks.count.HP_md5_salt_pre > 0) {
void (*preHookFunc) (int *len, char **output);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_md5_salt_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_md5_salt_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_md5_salt_pre[hIndex].func;
preHookFunc(&len, &output);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -43855,9 +49631,9 @@ void HP_md5_salt(int len, char *output) {
{
HPMHooks.source.md5.salt(len, output);
}
- if( HPMHooks.count.HP_md5_salt_post ) {
+ if (HPMHooks.count.HP_md5_salt_post > 0) {
void (*postHookFunc) (int len, char *output);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_md5_salt_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_md5_salt_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_md5_salt_post[hIndex].func;
postHookFunc(len, output);
}
@@ -43867,14 +49643,14 @@ void HP_md5_salt(int len, char *output) {
/* mercenary_interface */
void HP_mercenary_init(bool minimal) {
int hIndex = 0;
- if( HPMHooks.count.HP_mercenary_init_pre ) {
+ if (HPMHooks.count.HP_mercenary_init_pre > 0) {
void (*preHookFunc) (bool *minimal);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mercenary_init_pre[hIndex].func;
preHookFunc(&minimal);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -43882,9 +49658,9 @@ void HP_mercenary_init(bool minimal) {
{
HPMHooks.source.mercenary.init(minimal);
}
- if( HPMHooks.count.HP_mercenary_init_post ) {
+ if (HPMHooks.count.HP_mercenary_init_post > 0) {
void (*postHookFunc) (bool minimal);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mercenary_init_post[hIndex].func;
postHookFunc(minimal);
}
@@ -43894,14 +49670,14 @@ void HP_mercenary_init(bool minimal) {
bool HP_mercenary_class(int class_) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_mercenary_class_pre ) {
+ if (HPMHooks.count.HP_mercenary_class_pre > 0) {
bool (*preHookFunc) (int *class_);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_class_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_class_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mercenary_class_pre[hIndex].func;
retVal___ = preHookFunc(&class_);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -43909,9 +49685,9 @@ bool HP_mercenary_class(int class_) {
{
retVal___ = HPMHooks.source.mercenary.class(class_);
}
- if( HPMHooks.count.HP_mercenary_class_post ) {
+ if (HPMHooks.count.HP_mercenary_class_post > 0) {
bool (*postHookFunc) (bool retVal___, int class_);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_class_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_class_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mercenary_class_post[hIndex].func;
retVal___ = postHookFunc(retVal___, class_);
}
@@ -43921,14 +49697,14 @@ bool HP_mercenary_class(int class_) {
struct view_data* HP_mercenary_get_viewdata(int class_) {
int hIndex = 0;
struct view_data* retVal___ = NULL;
- if( HPMHooks.count.HP_mercenary_get_viewdata_pre ) {
+ if (HPMHooks.count.HP_mercenary_get_viewdata_pre > 0) {
struct view_data* (*preHookFunc) (int *class_);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_get_viewdata_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_get_viewdata_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mercenary_get_viewdata_pre[hIndex].func;
retVal___ = preHookFunc(&class_);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -43936,9 +49712,9 @@ struct view_data* HP_mercenary_get_viewdata(int class_) {
{
retVal___ = HPMHooks.source.mercenary.get_viewdata(class_);
}
- if( HPMHooks.count.HP_mercenary_get_viewdata_post ) {
+ if (HPMHooks.count.HP_mercenary_get_viewdata_post > 0) {
struct view_data* (*postHookFunc) (struct view_data* retVal___, int class_);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_get_viewdata_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_get_viewdata_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mercenary_get_viewdata_post[hIndex].func;
retVal___ = postHookFunc(retVal___, class_);
}
@@ -43948,14 +49724,14 @@ struct view_data* HP_mercenary_get_viewdata(int class_) {
int HP_mercenary_create(struct map_session_data *sd, int class_, unsigned int lifetime) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mercenary_create_pre ) {
+ if (HPMHooks.count.HP_mercenary_create_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *class_, unsigned int *lifetime);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mercenary_create_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &class_, &lifetime);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -43963,9 +49739,9 @@ int HP_mercenary_create(struct map_session_data *sd, int class_, unsigned int li
{
retVal___ = HPMHooks.source.mercenary.create(sd, class_, lifetime);
}
- if( HPMHooks.count.HP_mercenary_create_post ) {
+ if (HPMHooks.count.HP_mercenary_create_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int class_, unsigned int lifetime);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mercenary_create_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, class_, lifetime);
}
@@ -43975,14 +49751,14 @@ int HP_mercenary_create(struct map_session_data *sd, int class_, unsigned int li
int HP_mercenary_data_received(const struct s_mercenary *merc, bool flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mercenary_data_received_pre ) {
+ if (HPMHooks.count.HP_mercenary_data_received_pre > 0) {
int (*preHookFunc) (const struct s_mercenary **merc, bool *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_data_received_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_data_received_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mercenary_data_received_pre[hIndex].func;
retVal___ = preHookFunc(&merc, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -43990,9 +49766,9 @@ int HP_mercenary_data_received(const struct s_mercenary *merc, bool flag) {
{
retVal___ = HPMHooks.source.mercenary.data_received(merc, flag);
}
- if( HPMHooks.count.HP_mercenary_data_received_post ) {
+ if (HPMHooks.count.HP_mercenary_data_received_post > 0) {
int (*postHookFunc) (int retVal___, const struct s_mercenary *merc, bool flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_data_received_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_data_received_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mercenary_data_received_post[hIndex].func;
retVal___ = postHookFunc(retVal___, merc, flag);
}
@@ -44002,14 +49778,14 @@ int HP_mercenary_data_received(const struct s_mercenary *merc, bool flag) {
int HP_mercenary_save(struct mercenary_data *md) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mercenary_save_pre ) {
+ if (HPMHooks.count.HP_mercenary_save_pre > 0) {
int (*preHookFunc) (struct mercenary_data **md);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_save_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_save_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mercenary_save_pre[hIndex].func;
retVal___ = preHookFunc(&md);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -44017,9 +49793,9 @@ int HP_mercenary_save(struct mercenary_data *md) {
{
retVal___ = HPMHooks.source.mercenary.save(md);
}
- if( HPMHooks.count.HP_mercenary_save_post ) {
+ if (HPMHooks.count.HP_mercenary_save_post > 0) {
int (*postHookFunc) (int retVal___, struct mercenary_data *md);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_save_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_save_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mercenary_save_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md);
}
@@ -44028,14 +49804,14 @@ int HP_mercenary_save(struct mercenary_data *md) {
}
void HP_mercenary_heal(struct mercenary_data *md, int hp, int sp) {
int hIndex = 0;
- if( HPMHooks.count.HP_mercenary_heal_pre ) {
+ if (HPMHooks.count.HP_mercenary_heal_pre > 0) {
void (*preHookFunc) (struct mercenary_data **md, int *hp, int *sp);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_heal_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_heal_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mercenary_heal_pre[hIndex].func;
preHookFunc(&md, &hp, &sp);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -44043,9 +49819,9 @@ void HP_mercenary_heal(struct mercenary_data *md, int hp, int sp) {
{
HPMHooks.source.mercenary.heal(md, hp, sp);
}
- if( HPMHooks.count.HP_mercenary_heal_post ) {
+ if (HPMHooks.count.HP_mercenary_heal_post > 0) {
void (*postHookFunc) (struct mercenary_data *md, int hp, int sp);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_heal_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_heal_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mercenary_heal_post[hIndex].func;
postHookFunc(md, hp, sp);
}
@@ -44055,14 +49831,14 @@ void HP_mercenary_heal(struct mercenary_data *md, int hp, int sp) {
int HP_mercenary_dead(struct mercenary_data *md) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mercenary_dead_pre ) {
+ if (HPMHooks.count.HP_mercenary_dead_pre > 0) {
int (*preHookFunc) (struct mercenary_data **md);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_dead_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_dead_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mercenary_dead_pre[hIndex].func;
retVal___ = preHookFunc(&md);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -44070,9 +49846,9 @@ int HP_mercenary_dead(struct mercenary_data *md) {
{
retVal___ = HPMHooks.source.mercenary.dead(md);
}
- if( HPMHooks.count.HP_mercenary_dead_post ) {
+ if (HPMHooks.count.HP_mercenary_dead_post > 0) {
int (*postHookFunc) (int retVal___, struct mercenary_data *md);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_dead_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_dead_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mercenary_dead_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md);
}
@@ -44082,14 +49858,14 @@ int HP_mercenary_dead(struct mercenary_data *md) {
int HP_mercenary_delete(struct mercenary_data *md, int reply) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mercenary_delete_pre ) {
+ if (HPMHooks.count.HP_mercenary_delete_pre > 0) {
int (*preHookFunc) (struct mercenary_data **md, int *reply);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mercenary_delete_pre[hIndex].func;
retVal___ = preHookFunc(&md, &reply);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -44097,9 +49873,9 @@ int HP_mercenary_delete(struct mercenary_data *md, int reply) {
{
retVal___ = HPMHooks.source.mercenary.delete(md, reply);
}
- if( HPMHooks.count.HP_mercenary_delete_post ) {
+ if (HPMHooks.count.HP_mercenary_delete_post > 0) {
int (*postHookFunc) (int retVal___, struct mercenary_data *md, int reply);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mercenary_delete_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md, reply);
}
@@ -44108,14 +49884,14 @@ int HP_mercenary_delete(struct mercenary_data *md, int reply) {
}
void HP_mercenary_contract_stop(struct mercenary_data *md) {
int hIndex = 0;
- if( HPMHooks.count.HP_mercenary_contract_stop_pre ) {
+ if (HPMHooks.count.HP_mercenary_contract_stop_pre > 0) {
void (*preHookFunc) (struct mercenary_data **md);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_contract_stop_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_contract_stop_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mercenary_contract_stop_pre[hIndex].func;
preHookFunc(&md);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -44123,9 +49899,9 @@ void HP_mercenary_contract_stop(struct mercenary_data *md) {
{
HPMHooks.source.mercenary.contract_stop(md);
}
- if( HPMHooks.count.HP_mercenary_contract_stop_post ) {
+ if (HPMHooks.count.HP_mercenary_contract_stop_post > 0) {
void (*postHookFunc) (struct mercenary_data *md);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_contract_stop_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_contract_stop_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mercenary_contract_stop_post[hIndex].func;
postHookFunc(md);
}
@@ -44135,14 +49911,14 @@ void HP_mercenary_contract_stop(struct mercenary_data *md) {
int HP_mercenary_get_lifetime(struct mercenary_data *md) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mercenary_get_lifetime_pre ) {
+ if (HPMHooks.count.HP_mercenary_get_lifetime_pre > 0) {
int (*preHookFunc) (struct mercenary_data **md);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_get_lifetime_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_get_lifetime_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mercenary_get_lifetime_pre[hIndex].func;
retVal___ = preHookFunc(&md);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -44150,9 +49926,9 @@ int HP_mercenary_get_lifetime(struct mercenary_data *md) {
{
retVal___ = HPMHooks.source.mercenary.get_lifetime(md);
}
- if( HPMHooks.count.HP_mercenary_get_lifetime_post ) {
+ if (HPMHooks.count.HP_mercenary_get_lifetime_post > 0) {
int (*postHookFunc) (int retVal___, struct mercenary_data *md);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_get_lifetime_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_get_lifetime_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mercenary_get_lifetime_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md);
}
@@ -44162,14 +49938,14 @@ int HP_mercenary_get_lifetime(struct mercenary_data *md) {
int HP_mercenary_get_guild(struct mercenary_data *md) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mercenary_get_guild_pre ) {
+ if (HPMHooks.count.HP_mercenary_get_guild_pre > 0) {
int (*preHookFunc) (struct mercenary_data **md);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_get_guild_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_get_guild_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mercenary_get_guild_pre[hIndex].func;
retVal___ = preHookFunc(&md);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -44177,9 +49953,9 @@ int HP_mercenary_get_guild(struct mercenary_data *md) {
{
retVal___ = HPMHooks.source.mercenary.get_guild(md);
}
- if( HPMHooks.count.HP_mercenary_get_guild_post ) {
+ if (HPMHooks.count.HP_mercenary_get_guild_post > 0) {
int (*postHookFunc) (int retVal___, struct mercenary_data *md);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_get_guild_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_get_guild_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mercenary_get_guild_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md);
}
@@ -44189,14 +49965,14 @@ int HP_mercenary_get_guild(struct mercenary_data *md) {
int HP_mercenary_get_faith(struct mercenary_data *md) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mercenary_get_faith_pre ) {
+ if (HPMHooks.count.HP_mercenary_get_faith_pre > 0) {
int (*preHookFunc) (struct mercenary_data **md);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_get_faith_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_get_faith_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mercenary_get_faith_pre[hIndex].func;
retVal___ = preHookFunc(&md);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -44204,9 +49980,9 @@ int HP_mercenary_get_faith(struct mercenary_data *md) {
{
retVal___ = HPMHooks.source.mercenary.get_faith(md);
}
- if( HPMHooks.count.HP_mercenary_get_faith_post ) {
+ if (HPMHooks.count.HP_mercenary_get_faith_post > 0) {
int (*postHookFunc) (int retVal___, struct mercenary_data *md);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_get_faith_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_get_faith_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mercenary_get_faith_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md);
}
@@ -44216,14 +49992,14 @@ int HP_mercenary_get_faith(struct mercenary_data *md) {
int HP_mercenary_set_faith(struct mercenary_data *md, int value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mercenary_set_faith_pre ) {
+ if (HPMHooks.count.HP_mercenary_set_faith_pre > 0) {
int (*preHookFunc) (struct mercenary_data **md, int *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_set_faith_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_set_faith_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mercenary_set_faith_pre[hIndex].func;
retVal___ = preHookFunc(&md, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -44231,9 +50007,9 @@ int HP_mercenary_set_faith(struct mercenary_data *md, int value) {
{
retVal___ = HPMHooks.source.mercenary.set_faith(md, value);
}
- if( HPMHooks.count.HP_mercenary_set_faith_post ) {
+ if (HPMHooks.count.HP_mercenary_set_faith_post > 0) {
int (*postHookFunc) (int retVal___, struct mercenary_data *md, int value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_set_faith_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_set_faith_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mercenary_set_faith_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md, value);
}
@@ -44243,14 +50019,14 @@ int HP_mercenary_set_faith(struct mercenary_data *md, int value) {
int HP_mercenary_get_calls(struct mercenary_data *md) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mercenary_get_calls_pre ) {
+ if (HPMHooks.count.HP_mercenary_get_calls_pre > 0) {
int (*preHookFunc) (struct mercenary_data **md);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_get_calls_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_get_calls_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mercenary_get_calls_pre[hIndex].func;
retVal___ = preHookFunc(&md);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -44258,9 +50034,9 @@ int HP_mercenary_get_calls(struct mercenary_data *md) {
{
retVal___ = HPMHooks.source.mercenary.get_calls(md);
}
- if( HPMHooks.count.HP_mercenary_get_calls_post ) {
+ if (HPMHooks.count.HP_mercenary_get_calls_post > 0) {
int (*postHookFunc) (int retVal___, struct mercenary_data *md);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_get_calls_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_get_calls_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mercenary_get_calls_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md);
}
@@ -44270,14 +50046,14 @@ int HP_mercenary_get_calls(struct mercenary_data *md) {
int HP_mercenary_set_calls(struct mercenary_data *md, int value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mercenary_set_calls_pre ) {
+ if (HPMHooks.count.HP_mercenary_set_calls_pre > 0) {
int (*preHookFunc) (struct mercenary_data **md, int *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_set_calls_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_set_calls_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mercenary_set_calls_pre[hIndex].func;
retVal___ = preHookFunc(&md, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -44285,9 +50061,9 @@ int HP_mercenary_set_calls(struct mercenary_data *md, int value) {
{
retVal___ = HPMHooks.source.mercenary.set_calls(md, value);
}
- if( HPMHooks.count.HP_mercenary_set_calls_post ) {
+ if (HPMHooks.count.HP_mercenary_set_calls_post > 0) {
int (*postHookFunc) (int retVal___, struct mercenary_data *md, int value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_set_calls_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_set_calls_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mercenary_set_calls_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md, value);
}
@@ -44297,14 +50073,14 @@ int HP_mercenary_set_calls(struct mercenary_data *md, int value) {
int HP_mercenary_kills(struct mercenary_data *md) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mercenary_kills_pre ) {
+ if (HPMHooks.count.HP_mercenary_kills_pre > 0) {
int (*preHookFunc) (struct mercenary_data **md);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_kills_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_kills_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mercenary_kills_pre[hIndex].func;
retVal___ = preHookFunc(&md);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -44312,9 +50088,9 @@ int HP_mercenary_kills(struct mercenary_data *md) {
{
retVal___ = HPMHooks.source.mercenary.kills(md);
}
- if( HPMHooks.count.HP_mercenary_kills_post ) {
+ if (HPMHooks.count.HP_mercenary_kills_post > 0) {
int (*postHookFunc) (int retVal___, struct mercenary_data *md);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_kills_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_kills_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mercenary_kills_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md);
}
@@ -44324,14 +50100,14 @@ int HP_mercenary_kills(struct mercenary_data *md) {
int HP_mercenary_checkskill(struct mercenary_data *md, uint16 skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mercenary_checkskill_pre ) {
+ if (HPMHooks.count.HP_mercenary_checkskill_pre > 0) {
int (*preHookFunc) (struct mercenary_data **md, uint16 *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_checkskill_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_checkskill_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mercenary_checkskill_pre[hIndex].func;
retVal___ = preHookFunc(&md, &skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -44339,9 +50115,9 @@ int HP_mercenary_checkskill(struct mercenary_data *md, uint16 skill_id) {
{
retVal___ = HPMHooks.source.mercenary.checkskill(md, skill_id);
}
- if( HPMHooks.count.HP_mercenary_checkskill_post ) {
+ if (HPMHooks.count.HP_mercenary_checkskill_post > 0) {
int (*postHookFunc) (int retVal___, struct mercenary_data *md, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_checkskill_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_checkskill_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mercenary_checkskill_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md, skill_id);
}
@@ -44351,14 +50127,14 @@ int HP_mercenary_checkskill(struct mercenary_data *md, uint16 skill_id) {
int HP_mercenary_read_db(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mercenary_read_db_pre ) {
+ if (HPMHooks.count.HP_mercenary_read_db_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_read_db_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_read_db_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mercenary_read_db_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -44366,9 +50142,9 @@ int HP_mercenary_read_db(void) {
{
retVal___ = HPMHooks.source.mercenary.read_db();
}
- if( HPMHooks.count.HP_mercenary_read_db_post ) {
+ if (HPMHooks.count.HP_mercenary_read_db_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_read_db_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_read_db_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mercenary_read_db_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -44378,14 +50154,14 @@ int HP_mercenary_read_db(void) {
int HP_mercenary_read_skilldb(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mercenary_read_skilldb_pre ) {
+ if (HPMHooks.count.HP_mercenary_read_skilldb_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_read_skilldb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_read_skilldb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mercenary_read_skilldb_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -44393,9 +50169,9 @@ int HP_mercenary_read_skilldb(void) {
{
retVal___ = HPMHooks.source.mercenary.read_skilldb();
}
- if( HPMHooks.count.HP_mercenary_read_skilldb_post ) {
+ if (HPMHooks.count.HP_mercenary_read_skilldb_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_read_skilldb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_read_skilldb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mercenary_read_skilldb_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -44405,14 +50181,14 @@ int HP_mercenary_read_skilldb(void) {
int HP_mercenary_killbonus(struct mercenary_data *md) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mercenary_killbonus_pre ) {
+ if (HPMHooks.count.HP_mercenary_killbonus_pre > 0) {
int (*preHookFunc) (struct mercenary_data **md);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_killbonus_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_killbonus_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mercenary_killbonus_pre[hIndex].func;
retVal___ = preHookFunc(&md);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -44420,9 +50196,9 @@ int HP_mercenary_killbonus(struct mercenary_data *md) {
{
retVal___ = HPMHooks.source.mercenary.killbonus(md);
}
- if( HPMHooks.count.HP_mercenary_killbonus_post ) {
+ if (HPMHooks.count.HP_mercenary_killbonus_post > 0) {
int (*postHookFunc) (int retVal___, struct mercenary_data *md);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_killbonus_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_killbonus_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mercenary_killbonus_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md);
}
@@ -44432,14 +50208,14 @@ int HP_mercenary_killbonus(struct mercenary_data *md) {
int HP_mercenary_search_index(int class_) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mercenary_search_index_pre ) {
+ if (HPMHooks.count.HP_mercenary_search_index_pre > 0) {
int (*preHookFunc) (int *class_);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_search_index_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_search_index_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mercenary_search_index_pre[hIndex].func;
retVal___ = preHookFunc(&class_);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -44447,9 +50223,9 @@ int HP_mercenary_search_index(int class_) {
{
retVal___ = HPMHooks.source.mercenary.search_index(class_);
}
- if( HPMHooks.count.HP_mercenary_search_index_post ) {
+ if (HPMHooks.count.HP_mercenary_search_index_post > 0) {
int (*postHookFunc) (int retVal___, int class_);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_search_index_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_search_index_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mercenary_search_index_post[hIndex].func;
retVal___ = postHookFunc(retVal___, class_);
}
@@ -44459,14 +50235,14 @@ int HP_mercenary_search_index(int class_) {
int HP_mercenary_contract_end_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mercenary_contract_end_timer_pre ) {
+ if (HPMHooks.count.HP_mercenary_contract_end_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_contract_end_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_contract_end_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mercenary_contract_end_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -44474,9 +50250,9 @@ int HP_mercenary_contract_end_timer(int tid, int64 tick, int id, intptr_t data)
{
retVal___ = HPMHooks.source.mercenary.contract_end_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_mercenary_contract_end_timer_post ) {
+ if (HPMHooks.count.HP_mercenary_contract_end_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_contract_end_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_contract_end_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mercenary_contract_end_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -44486,14 +50262,14 @@ int HP_mercenary_contract_end_timer(int tid, int64 tick, int id, intptr_t data)
bool HP_mercenary_read_db_sub(char *str[], int columns, int current) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_mercenary_read_db_sub_pre ) {
+ if (HPMHooks.count.HP_mercenary_read_db_sub_pre > 0) {
bool (*preHookFunc) (char **str[], int *columns, int *current);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_read_db_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_read_db_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mercenary_read_db_sub_pre[hIndex].func;
retVal___ = preHookFunc(&str, &columns, &current);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -44501,9 +50277,9 @@ bool HP_mercenary_read_db_sub(char *str[], int columns, int current) {
{
retVal___ = HPMHooks.source.mercenary.read_db_sub(str, columns, current);
}
- if( HPMHooks.count.HP_mercenary_read_db_sub_post ) {
+ if (HPMHooks.count.HP_mercenary_read_db_sub_post > 0) {
bool (*postHookFunc) (bool retVal___, char *str[], int columns, int current);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_read_db_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_read_db_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mercenary_read_db_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, str, columns, current);
}
@@ -44513,14 +50289,14 @@ bool HP_mercenary_read_db_sub(char *str[], int columns, int current) {
bool HP_mercenary_read_skill_db_sub(char *str[], int columns, int current) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_mercenary_read_skill_db_sub_pre ) {
+ if (HPMHooks.count.HP_mercenary_read_skill_db_sub_pre > 0) {
bool (*preHookFunc) (char **str[], int *columns, int *current);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_read_skill_db_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_read_skill_db_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mercenary_read_skill_db_sub_pre[hIndex].func;
retVal___ = preHookFunc(&str, &columns, &current);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -44528,9 +50304,9 @@ bool HP_mercenary_read_skill_db_sub(char *str[], int columns, int current) {
{
retVal___ = HPMHooks.source.mercenary.read_skill_db_sub(str, columns, current);
}
- if( HPMHooks.count.HP_mercenary_read_skill_db_sub_post ) {
+ if (HPMHooks.count.HP_mercenary_read_skill_db_sub_post > 0) {
bool (*postHookFunc) (bool retVal___, char *str[], int columns, int current);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_read_skill_db_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mercenary_read_skill_db_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mercenary_read_skill_db_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, str, columns, current);
}
@@ -44541,14 +50317,14 @@ bool HP_mercenary_read_skill_db_sub(char *str[], int columns, int current) {
int HP_mob_init(bool mimimal) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_init_pre ) {
+ if (HPMHooks.count.HP_mob_init_pre > 0) {
int (*preHookFunc) (bool *mimimal);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_init_pre[hIndex].func;
retVal___ = preHookFunc(&mimimal);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -44556,9 +50332,9 @@ int HP_mob_init(bool mimimal) {
{
retVal___ = HPMHooks.source.mob.init(mimimal);
}
- if( HPMHooks.count.HP_mob_init_post ) {
+ if (HPMHooks.count.HP_mob_init_post > 0) {
int (*postHookFunc) (int retVal___, bool mimimal);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_init_post[hIndex].func;
retVal___ = postHookFunc(retVal___, mimimal);
}
@@ -44568,14 +50344,14 @@ int HP_mob_init(bool mimimal) {
int HP_mob_final(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_final_pre ) {
+ if (HPMHooks.count.HP_mob_final_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_final_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -44583,9 +50359,9 @@ int HP_mob_final(void) {
{
retVal___ = HPMHooks.source.mob.final();
}
- if( HPMHooks.count.HP_mob_final_post ) {
+ if (HPMHooks.count.HP_mob_final_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_final_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -44594,14 +50370,14 @@ int HP_mob_final(void) {
}
void HP_mob_reload(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_mob_reload_pre ) {
+ if (HPMHooks.count.HP_mob_reload_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_reload_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_reload_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_reload_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -44609,9 +50385,9 @@ void HP_mob_reload(void) {
{
HPMHooks.source.mob.reload();
}
- if( HPMHooks.count.HP_mob_reload_post ) {
+ if (HPMHooks.count.HP_mob_reload_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_reload_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_reload_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_reload_post[hIndex].func;
postHookFunc();
}
@@ -44621,14 +50397,14 @@ void HP_mob_reload(void) {
struct mob_db* HP_mob_db(int index) {
int hIndex = 0;
struct mob_db* retVal___ = NULL;
- if( HPMHooks.count.HP_mob_db_pre ) {
+ if (HPMHooks.count.HP_mob_db_pre > 0) {
struct mob_db* (*preHookFunc) (int *index);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_db_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_db_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_db_pre[hIndex].func;
retVal___ = preHookFunc(&index);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -44636,9 +50412,9 @@ struct mob_db* HP_mob_db(int index) {
{
retVal___ = HPMHooks.source.mob.db(index);
}
- if( HPMHooks.count.HP_mob_db_post ) {
+ if (HPMHooks.count.HP_mob_db_post > 0) {
struct mob_db* (*postHookFunc) (struct mob_db* retVal___, int index);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_db_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_db_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_db_post[hIndex].func;
retVal___ = postHookFunc(retVal___, index);
}
@@ -44648,14 +50424,14 @@ struct mob_db* HP_mob_db(int index) {
struct mob_chat* HP_mob_chat(short id) {
int hIndex = 0;
struct mob_chat* retVal___ = NULL;
- if( HPMHooks.count.HP_mob_chat_pre ) {
+ if (HPMHooks.count.HP_mob_chat_pre > 0) {
struct mob_chat* (*preHookFunc) (short *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_chat_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_chat_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_chat_pre[hIndex].func;
retVal___ = preHookFunc(&id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -44663,9 +50439,9 @@ struct mob_chat* HP_mob_chat(short id) {
{
retVal___ = HPMHooks.source.mob.chat(id);
}
- if( HPMHooks.count.HP_mob_chat_post ) {
+ if (HPMHooks.count.HP_mob_chat_post > 0) {
struct mob_chat* (*postHookFunc) (struct mob_chat* retVal___, short id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_chat_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_chat_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_chat_post[hIndex].func;
retVal___ = postHookFunc(retVal___, id);
}
@@ -44675,14 +50451,14 @@ struct mob_chat* HP_mob_chat(short id) {
int HP_mob_makedummymobdb(int p1) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_makedummymobdb_pre ) {
+ if (HPMHooks.count.HP_mob_makedummymobdb_pre > 0) {
int (*preHookFunc) (int *p1);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_makedummymobdb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_makedummymobdb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_makedummymobdb_pre[hIndex].func;
retVal___ = preHookFunc(&p1);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -44690,9 +50466,9 @@ int HP_mob_makedummymobdb(int p1) {
{
retVal___ = HPMHooks.source.mob.makedummymobdb(p1);
}
- if( HPMHooks.count.HP_mob_makedummymobdb_post ) {
+ if (HPMHooks.count.HP_mob_makedummymobdb_post > 0) {
int (*postHookFunc) (int retVal___, int p1);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_makedummymobdb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_makedummymobdb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_makedummymobdb_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p1);
}
@@ -44702,14 +50478,14 @@ int HP_mob_makedummymobdb(int p1) {
int HP_mob_spawn_guardian_sub(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_spawn_guardian_sub_pre ) {
+ if (HPMHooks.count.HP_mob_spawn_guardian_sub_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_spawn_guardian_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_spawn_guardian_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_spawn_guardian_sub_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -44717,9 +50493,9 @@ int HP_mob_spawn_guardian_sub(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.mob.spawn_guardian_sub(tid, tick, id, data);
}
- if( HPMHooks.count.HP_mob_spawn_guardian_sub_post ) {
+ if (HPMHooks.count.HP_mob_spawn_guardian_sub_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_spawn_guardian_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_spawn_guardian_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_spawn_guardian_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -44729,14 +50505,14 @@ int HP_mob_spawn_guardian_sub(int tid, int64 tick, int id, intptr_t data) {
int HP_mob_skill_id2skill_idx(int class_, uint16 skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_skill_id2skill_idx_pre ) {
+ if (HPMHooks.count.HP_mob_skill_id2skill_idx_pre > 0) {
int (*preHookFunc) (int *class_, uint16 *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_skill_id2skill_idx_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_skill_id2skill_idx_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_skill_id2skill_idx_pre[hIndex].func;
retVal___ = preHookFunc(&class_, &skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -44744,9 +50520,9 @@ int HP_mob_skill_id2skill_idx(int class_, uint16 skill_id) {
{
retVal___ = HPMHooks.source.mob.skill_id2skill_idx(class_, skill_id);
}
- if( HPMHooks.count.HP_mob_skill_id2skill_idx_post ) {
+ if (HPMHooks.count.HP_mob_skill_id2skill_idx_post > 0) {
int (*postHookFunc) (int retVal___, int class_, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_skill_id2skill_idx_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_skill_id2skill_idx_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_skill_id2skill_idx_post[hIndex].func;
retVal___ = postHookFunc(retVal___, class_, skill_id);
}
@@ -44756,14 +50532,14 @@ int HP_mob_skill_id2skill_idx(int class_, uint16 skill_id) {
int HP_mob_db_searchname(const char *str) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_db_searchname_pre ) {
+ if (HPMHooks.count.HP_mob_db_searchname_pre > 0) {
int (*preHookFunc) (const char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_db_searchname_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_db_searchname_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_db_searchname_pre[hIndex].func;
retVal___ = preHookFunc(&str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -44771,9 +50547,9 @@ int HP_mob_db_searchname(const char *str) {
{
retVal___ = HPMHooks.source.mob.db_searchname(str);
}
- if( HPMHooks.count.HP_mob_db_searchname_post ) {
+ if (HPMHooks.count.HP_mob_db_searchname_post > 0) {
int (*postHookFunc) (int retVal___, const char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_db_searchname_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_db_searchname_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_db_searchname_post[hIndex].func;
retVal___ = postHookFunc(retVal___, str);
}
@@ -44783,14 +50559,14 @@ int HP_mob_db_searchname(const char *str) {
int HP_mob_db_searchname_array_sub(struct mob_db *monster, const char *str, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_db_searchname_array_sub_pre ) {
+ if (HPMHooks.count.HP_mob_db_searchname_array_sub_pre > 0) {
int (*preHookFunc) (struct mob_db **monster, const char **str, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_db_searchname_array_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_db_searchname_array_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_db_searchname_array_sub_pre[hIndex].func;
retVal___ = preHookFunc(&monster, &str, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -44798,25 +50574,78 @@ int HP_mob_db_searchname_array_sub(struct mob_db *monster, const char *str, int
{
retVal___ = HPMHooks.source.mob.db_searchname_array_sub(monster, str, flag);
}
- if( HPMHooks.count.HP_mob_db_searchname_array_sub_post ) {
+ if (HPMHooks.count.HP_mob_db_searchname_array_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct mob_db *monster, const char *str, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_db_searchname_array_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_db_searchname_array_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_db_searchname_array_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, monster, str, flag);
}
}
return retVal___;
}
+void HP_mob_mvptomb_spawn_delayed(struct npc_data *nd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_mob_mvptomb_spawn_delayed_pre > 0) {
+ void (*preHookFunc) (struct npc_data **nd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_mvptomb_spawn_delayed_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mob_mvptomb_spawn_delayed_pre[hIndex].func;
+ preHookFunc(&nd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.mob.mvptomb_spawn_delayed(nd);
+ }
+ if (HPMHooks.count.HP_mob_mvptomb_spawn_delayed_post > 0) {
+ void (*postHookFunc) (struct npc_data *nd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_mvptomb_spawn_delayed_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mob_mvptomb_spawn_delayed_post[hIndex].func;
+ postHookFunc(nd);
+ }
+ }
+ return;
+}
+int HP_mob_mvptomb_delayspawn(int tid, int64 tick, int id, intptr_t data) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_mob_mvptomb_delayspawn_pre > 0) {
+ int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_mvptomb_delayspawn_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mob_mvptomb_delayspawn_pre[hIndex].func;
+ retVal___ = preHookFunc(&tid, &tick, &id, &data);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.mob.mvptomb_delayspawn(tid, tick, id, data);
+ }
+ if (HPMHooks.count.HP_mob_mvptomb_delayspawn_post > 0) {
+ int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_mvptomb_delayspawn_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mob_mvptomb_delayspawn_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, tid, tick, id, data);
+ }
+ }
+ return retVal___;
+}
void HP_mob_mvptomb_create(struct mob_data *md, char *killer, time_t time) {
int hIndex = 0;
- if( HPMHooks.count.HP_mob_mvptomb_create_pre ) {
+ if (HPMHooks.count.HP_mob_mvptomb_create_pre > 0) {
void (*preHookFunc) (struct mob_data **md, char **killer, time_t *time);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_mvptomb_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_mvptomb_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_mvptomb_create_pre[hIndex].func;
preHookFunc(&md, &killer, &time);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -44824,9 +50653,9 @@ void HP_mob_mvptomb_create(struct mob_data *md, char *killer, time_t time) {
{
HPMHooks.source.mob.mvptomb_create(md, killer, time);
}
- if( HPMHooks.count.HP_mob_mvptomb_create_post ) {
+ if (HPMHooks.count.HP_mob_mvptomb_create_post > 0) {
void (*postHookFunc) (struct mob_data *md, char *killer, time_t time);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_mvptomb_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_mvptomb_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_mvptomb_create_post[hIndex].func;
postHookFunc(md, killer, time);
}
@@ -44835,14 +50664,14 @@ void HP_mob_mvptomb_create(struct mob_data *md, char *killer, time_t time) {
}
void HP_mob_mvptomb_destroy(struct mob_data *md) {
int hIndex = 0;
- if( HPMHooks.count.HP_mob_mvptomb_destroy_pre ) {
+ if (HPMHooks.count.HP_mob_mvptomb_destroy_pre > 0) {
void (*preHookFunc) (struct mob_data **md);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_mvptomb_destroy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_mvptomb_destroy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_mvptomb_destroy_pre[hIndex].func;
preHookFunc(&md);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -44850,9 +50679,9 @@ void HP_mob_mvptomb_destroy(struct mob_data *md) {
{
HPMHooks.source.mob.mvptomb_destroy(md);
}
- if( HPMHooks.count.HP_mob_mvptomb_destroy_post ) {
+ if (HPMHooks.count.HP_mob_mvptomb_destroy_post > 0) {
void (*postHookFunc) (struct mob_data *md);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_mvptomb_destroy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_mvptomb_destroy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_mvptomb_destroy_post[hIndex].func;
postHookFunc(md);
}
@@ -44862,14 +50691,14 @@ void HP_mob_mvptomb_destroy(struct mob_data *md) {
int HP_mob_db_searchname_array(struct mob_db **data, int size, const char *str, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_db_searchname_array_pre ) {
+ if (HPMHooks.count.HP_mob_db_searchname_array_pre > 0) {
int (*preHookFunc) (struct mob_db ***data, int *size, const char **str, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_db_searchname_array_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_db_searchname_array_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_db_searchname_array_pre[hIndex].func;
retVal___ = preHookFunc(&data, &size, &str, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -44877,9 +50706,9 @@ int HP_mob_db_searchname_array(struct mob_db **data, int size, const char *str,
{
retVal___ = HPMHooks.source.mob.db_searchname_array(data, size, str, flag);
}
- if( HPMHooks.count.HP_mob_db_searchname_array_post ) {
+ if (HPMHooks.count.HP_mob_db_searchname_array_post > 0) {
int (*postHookFunc) (int retVal___, struct mob_db **data, int size, const char *str, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_db_searchname_array_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_db_searchname_array_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_db_searchname_array_post[hIndex].func;
retVal___ = postHookFunc(retVal___, data, size, str, flag);
}
@@ -44889,14 +50718,14 @@ int HP_mob_db_searchname_array(struct mob_db **data, int size, const char *str,
int HP_mob_db_checkid(const int id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_db_checkid_pre ) {
+ if (HPMHooks.count.HP_mob_db_checkid_pre > 0) {
int (*preHookFunc) (const int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_db_checkid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_db_checkid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_db_checkid_pre[hIndex].func;
retVal___ = preHookFunc(&id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -44904,9 +50733,9 @@ int HP_mob_db_checkid(const int id) {
{
retVal___ = HPMHooks.source.mob.db_checkid(id);
}
- if( HPMHooks.count.HP_mob_db_checkid_post ) {
+ if (HPMHooks.count.HP_mob_db_checkid_post > 0) {
int (*postHookFunc) (int retVal___, const int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_db_checkid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_db_checkid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_db_checkid_post[hIndex].func;
retVal___ = postHookFunc(retVal___, id);
}
@@ -44916,14 +50745,14 @@ int HP_mob_db_checkid(const int id) {
struct view_data* HP_mob_get_viewdata(int class_) {
int hIndex = 0;
struct view_data* retVal___ = NULL;
- if( HPMHooks.count.HP_mob_get_viewdata_pre ) {
+ if (HPMHooks.count.HP_mob_get_viewdata_pre > 0) {
struct view_data* (*preHookFunc) (int *class_);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_get_viewdata_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_get_viewdata_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_get_viewdata_pre[hIndex].func;
retVal___ = preHookFunc(&class_);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -44931,9 +50760,9 @@ struct view_data* HP_mob_get_viewdata(int class_) {
{
retVal___ = HPMHooks.source.mob.get_viewdata(class_);
}
- if( HPMHooks.count.HP_mob_get_viewdata_post ) {
+ if (HPMHooks.count.HP_mob_get_viewdata_post > 0) {
struct view_data* (*postHookFunc) (struct view_data* retVal___, int class_);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_get_viewdata_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_get_viewdata_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_get_viewdata_post[hIndex].func;
retVal___ = postHookFunc(retVal___, class_);
}
@@ -44943,14 +50772,14 @@ struct view_data* HP_mob_get_viewdata(int class_) {
int HP_mob_parse_dataset(struct spawn_data *data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_parse_dataset_pre ) {
+ if (HPMHooks.count.HP_mob_parse_dataset_pre > 0) {
int (*preHookFunc) (struct spawn_data **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_parse_dataset_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_parse_dataset_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_parse_dataset_pre[hIndex].func;
retVal___ = preHookFunc(&data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -44958,9 +50787,9 @@ int HP_mob_parse_dataset(struct spawn_data *data) {
{
retVal___ = HPMHooks.source.mob.parse_dataset(data);
}
- if( HPMHooks.count.HP_mob_parse_dataset_post ) {
+ if (HPMHooks.count.HP_mob_parse_dataset_post > 0) {
int (*postHookFunc) (int retVal___, struct spawn_data *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_parse_dataset_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_parse_dataset_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_parse_dataset_post[hIndex].func;
retVal___ = postHookFunc(retVal___, data);
}
@@ -44970,14 +50799,14 @@ int HP_mob_parse_dataset(struct spawn_data *data) {
struct mob_data* HP_mob_spawn_dataset(struct spawn_data *data) {
int hIndex = 0;
struct mob_data* retVal___ = NULL;
- if( HPMHooks.count.HP_mob_spawn_dataset_pre ) {
+ if (HPMHooks.count.HP_mob_spawn_dataset_pre > 0) {
struct mob_data* (*preHookFunc) (struct spawn_data **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_spawn_dataset_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_spawn_dataset_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_spawn_dataset_pre[hIndex].func;
retVal___ = preHookFunc(&data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -44985,9 +50814,9 @@ struct mob_data* HP_mob_spawn_dataset(struct spawn_data *data) {
{
retVal___ = HPMHooks.source.mob.spawn_dataset(data);
}
- if( HPMHooks.count.HP_mob_spawn_dataset_post ) {
+ if (HPMHooks.count.HP_mob_spawn_dataset_post > 0) {
struct mob_data* (*postHookFunc) (struct mob_data* retVal___, struct spawn_data *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_spawn_dataset_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_spawn_dataset_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_spawn_dataset_post[hIndex].func;
retVal___ = postHookFunc(retVal___, data);
}
@@ -44997,14 +50826,14 @@ struct mob_data* HP_mob_spawn_dataset(struct spawn_data *data) {
int HP_mob_get_random_id(int type, int flag, int lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_get_random_id_pre ) {
+ if (HPMHooks.count.HP_mob_get_random_id_pre > 0) {
int (*preHookFunc) (int *type, int *flag, int *lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_get_random_id_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_get_random_id_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_get_random_id_pre[hIndex].func;
retVal___ = preHookFunc(&type, &flag, &lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45012,9 +50841,9 @@ int HP_mob_get_random_id(int type, int flag, int lv) {
{
retVal___ = HPMHooks.source.mob.get_random_id(type, flag, lv);
}
- if( HPMHooks.count.HP_mob_get_random_id_post ) {
+ if (HPMHooks.count.HP_mob_get_random_id_post > 0) {
int (*postHookFunc) (int retVal___, int type, int flag, int lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_get_random_id_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_get_random_id_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_get_random_id_post[hIndex].func;
retVal___ = postHookFunc(retVal___, type, flag, lv);
}
@@ -45024,14 +50853,14 @@ int HP_mob_get_random_id(int type, int flag, int lv) {
bool HP_mob_ksprotected(struct block_list *src, struct block_list *target) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_mob_ksprotected_pre ) {
+ if (HPMHooks.count.HP_mob_ksprotected_pre > 0) {
bool (*preHookFunc) (struct block_list **src, struct block_list **target);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_ksprotected_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_ksprotected_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_ksprotected_pre[hIndex].func;
retVal___ = preHookFunc(&src, &target);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45039,9 +50868,9 @@ bool HP_mob_ksprotected(struct block_list *src, struct block_list *target) {
{
retVal___ = HPMHooks.source.mob.ksprotected(src, target);
}
- if( HPMHooks.count.HP_mob_ksprotected_post ) {
+ if (HPMHooks.count.HP_mob_ksprotected_post > 0) {
bool (*postHookFunc) (bool retVal___, struct block_list *src, struct block_list *target);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_ksprotected_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_ksprotected_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_ksprotected_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, target);
}
@@ -45051,14 +50880,14 @@ bool HP_mob_ksprotected(struct block_list *src, struct block_list *target) {
struct mob_data* HP_mob_once_spawn_sub(struct block_list *bl, int16 m, int16 x, int16 y, const char *mobname, int class_, const char *event, unsigned int size, unsigned int ai) {
int hIndex = 0;
struct mob_data* retVal___ = NULL;
- if( HPMHooks.count.HP_mob_once_spawn_sub_pre ) {
+ if (HPMHooks.count.HP_mob_once_spawn_sub_pre > 0) {
struct mob_data* (*preHookFunc) (struct block_list **bl, int16 *m, int16 *x, int16 *y, const char **mobname, int *class_, const char **event, unsigned int *size, unsigned int *ai);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_once_spawn_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_once_spawn_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_once_spawn_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &m, &x, &y, &mobname, &class_, &event, &size, &ai);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45066,9 +50895,9 @@ struct mob_data* HP_mob_once_spawn_sub(struct block_list *bl, int16 m, int16 x,
{
retVal___ = HPMHooks.source.mob.once_spawn_sub(bl, m, x, y, mobname, class_, event, size, ai);
}
- if( HPMHooks.count.HP_mob_once_spawn_sub_post ) {
+ if (HPMHooks.count.HP_mob_once_spawn_sub_post > 0) {
struct mob_data* (*postHookFunc) (struct mob_data* retVal___, struct block_list *bl, int16 m, int16 x, int16 y, const char *mobname, int class_, const char *event, unsigned int size, unsigned int ai);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_once_spawn_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_once_spawn_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_once_spawn_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, m, x, y, mobname, class_, event, size, ai);
}
@@ -45078,14 +50907,14 @@ struct mob_data* HP_mob_once_spawn_sub(struct block_list *bl, int16 m, int16 x,
int HP_mob_once_spawn(struct map_session_data *sd, int16 m, int16 x, int16 y, const char *mobname, int class_, int amount, const char *event, unsigned int size, unsigned int ai) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_once_spawn_pre ) {
+ if (HPMHooks.count.HP_mob_once_spawn_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int16 *m, int16 *x, int16 *y, const char **mobname, int *class_, int *amount, const char **event, unsigned int *size, unsigned int *ai);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_once_spawn_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_once_spawn_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_once_spawn_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &m, &x, &y, &mobname, &class_, &amount, &event, &size, &ai);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45093,9 +50922,9 @@ int HP_mob_once_spawn(struct map_session_data *sd, int16 m, int16 x, int16 y, co
{
retVal___ = HPMHooks.source.mob.once_spawn(sd, m, x, y, mobname, class_, amount, event, size, ai);
}
- if( HPMHooks.count.HP_mob_once_spawn_post ) {
+ if (HPMHooks.count.HP_mob_once_spawn_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int16 m, int16 x, int16 y, const char *mobname, int class_, int amount, const char *event, unsigned int size, unsigned int ai);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_once_spawn_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_once_spawn_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_once_spawn_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, m, x, y, mobname, class_, amount, event, size, ai);
}
@@ -45105,14 +50934,14 @@ int HP_mob_once_spawn(struct map_session_data *sd, int16 m, int16 x, int16 y, co
int HP_mob_once_spawn_area(struct map_session_data *sd, int16 m, int16 x0, int16 y0, int16 x1, int16 y1, const char *mobname, int class_, int amount, const char *event, unsigned int size, unsigned int ai) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_once_spawn_area_pre ) {
+ if (HPMHooks.count.HP_mob_once_spawn_area_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int16 *m, int16 *x0, int16 *y0, int16 *x1, int16 *y1, const char **mobname, int *class_, int *amount, const char **event, unsigned int *size, unsigned int *ai);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_once_spawn_area_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_once_spawn_area_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_once_spawn_area_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &m, &x0, &y0, &x1, &y1, &mobname, &class_, &amount, &event, &size, &ai);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45120,9 +50949,9 @@ int HP_mob_once_spawn_area(struct map_session_data *sd, int16 m, int16 x0, int16
{
retVal___ = HPMHooks.source.mob.once_spawn_area(sd, m, x0, y0, x1, y1, mobname, class_, amount, event, size, ai);
}
- if( HPMHooks.count.HP_mob_once_spawn_area_post ) {
+ if (HPMHooks.count.HP_mob_once_spawn_area_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int16 m, int16 x0, int16 y0, int16 x1, int16 y1, const char *mobname, int class_, int amount, const char *event, unsigned int size, unsigned int ai);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_once_spawn_area_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_once_spawn_area_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_once_spawn_area_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, m, x0, y0, x1, y1, mobname, class_, amount, event, size, ai);
}
@@ -45132,14 +50961,14 @@ int HP_mob_once_spawn_area(struct map_session_data *sd, int16 m, int16 x0, int16
int HP_mob_spawn_guardian(const char *mapname, short x, short y, const char *mobname, int class_, const char *event, int guardian, bool has_index) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_spawn_guardian_pre ) {
+ if (HPMHooks.count.HP_mob_spawn_guardian_pre > 0) {
int (*preHookFunc) (const char **mapname, short *x, short *y, const char **mobname, int *class_, const char **event, int *guardian, bool *has_index);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_spawn_guardian_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_spawn_guardian_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_spawn_guardian_pre[hIndex].func;
retVal___ = preHookFunc(&mapname, &x, &y, &mobname, &class_, &event, &guardian, &has_index);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45147,9 +50976,9 @@ int HP_mob_spawn_guardian(const char *mapname, short x, short y, const char *mob
{
retVal___ = HPMHooks.source.mob.spawn_guardian(mapname, x, y, mobname, class_, event, guardian, has_index);
}
- if( HPMHooks.count.HP_mob_spawn_guardian_post ) {
+ if (HPMHooks.count.HP_mob_spawn_guardian_post > 0) {
int (*postHookFunc) (int retVal___, const char *mapname, short x, short y, const char *mobname, int class_, const char *event, int guardian, bool has_index);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_spawn_guardian_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_spawn_guardian_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_spawn_guardian_post[hIndex].func;
retVal___ = postHookFunc(retVal___, mapname, x, y, mobname, class_, event, guardian, has_index);
}
@@ -45159,14 +50988,14 @@ int HP_mob_spawn_guardian(const char *mapname, short x, short y, const char *mob
int HP_mob_spawn_bg(const char *mapname, short x, short y, const char *mobname, int class_, const char *event, unsigned int bg_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_spawn_bg_pre ) {
+ if (HPMHooks.count.HP_mob_spawn_bg_pre > 0) {
int (*preHookFunc) (const char **mapname, short *x, short *y, const char **mobname, int *class_, const char **event, unsigned int *bg_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_spawn_bg_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_spawn_bg_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_spawn_bg_pre[hIndex].func;
retVal___ = preHookFunc(&mapname, &x, &y, &mobname, &class_, &event, &bg_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45174,9 +51003,9 @@ int HP_mob_spawn_bg(const char *mapname, short x, short y, const char *mobname,
{
retVal___ = HPMHooks.source.mob.spawn_bg(mapname, x, y, mobname, class_, event, bg_id);
}
- if( HPMHooks.count.HP_mob_spawn_bg_post ) {
+ if (HPMHooks.count.HP_mob_spawn_bg_post > 0) {
int (*postHookFunc) (int retVal___, const char *mapname, short x, short y, const char *mobname, int class_, const char *event, unsigned int bg_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_spawn_bg_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_spawn_bg_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_spawn_bg_post[hIndex].func;
retVal___ = postHookFunc(retVal___, mapname, x, y, mobname, class_, event, bg_id);
}
@@ -45186,14 +51015,14 @@ int HP_mob_spawn_bg(const char *mapname, short x, short y, const char *mobname,
int HP_mob_can_reach(struct mob_data *md, struct block_list *bl, int range, int state) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_can_reach_pre ) {
+ if (HPMHooks.count.HP_mob_can_reach_pre > 0) {
int (*preHookFunc) (struct mob_data **md, struct block_list **bl, int *range, int *state);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_can_reach_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_can_reach_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_can_reach_pre[hIndex].func;
retVal___ = preHookFunc(&md, &bl, &range, &state);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45201,9 +51030,9 @@ int HP_mob_can_reach(struct mob_data *md, struct block_list *bl, int range, int
{
retVal___ = HPMHooks.source.mob.can_reach(md, bl, range, state);
}
- if( HPMHooks.count.HP_mob_can_reach_post ) {
+ if (HPMHooks.count.HP_mob_can_reach_post > 0) {
int (*postHookFunc) (int retVal___, struct mob_data *md, struct block_list *bl, int range, int state);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_can_reach_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_can_reach_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_can_reach_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md, bl, range, state);
}
@@ -45213,16 +51042,16 @@ int HP_mob_can_reach(struct mob_data *md, struct block_list *bl, int range, int
int HP_mob_linksearch(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_linksearch_pre ) {
+ if (HPMHooks.count.HP_mob_linksearch_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_linksearch_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_linksearch_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_mob_linksearch_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45232,9 +51061,9 @@ int HP_mob_linksearch(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.mob.linksearch(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_mob_linksearch_post ) {
+ if (HPMHooks.count.HP_mob_linksearch_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_linksearch_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_linksearch_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_mob_linksearch_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -45246,14 +51075,14 @@ int HP_mob_linksearch(struct block_list *bl, va_list ap) {
int HP_mob_delayspawn(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_delayspawn_pre ) {
+ if (HPMHooks.count.HP_mob_delayspawn_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_delayspawn_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_delayspawn_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_delayspawn_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45261,9 +51090,9 @@ int HP_mob_delayspawn(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.mob.delayspawn(tid, tick, id, data);
}
- if( HPMHooks.count.HP_mob_delayspawn_post ) {
+ if (HPMHooks.count.HP_mob_delayspawn_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_delayspawn_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_delayspawn_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_delayspawn_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -45273,14 +51102,14 @@ int HP_mob_delayspawn(int tid, int64 tick, int id, intptr_t data) {
int HP_mob_setdelayspawn(struct mob_data *md) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_setdelayspawn_pre ) {
+ if (HPMHooks.count.HP_mob_setdelayspawn_pre > 0) {
int (*preHookFunc) (struct mob_data **md);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_setdelayspawn_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_setdelayspawn_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_setdelayspawn_pre[hIndex].func;
retVal___ = preHookFunc(&md);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45288,9 +51117,9 @@ int HP_mob_setdelayspawn(struct mob_data *md) {
{
retVal___ = HPMHooks.source.mob.setdelayspawn(md);
}
- if( HPMHooks.count.HP_mob_setdelayspawn_post ) {
+ if (HPMHooks.count.HP_mob_setdelayspawn_post > 0) {
int (*postHookFunc) (int retVal___, struct mob_data *md);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_setdelayspawn_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_setdelayspawn_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_setdelayspawn_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md);
}
@@ -45300,16 +51129,16 @@ int HP_mob_setdelayspawn(struct mob_data *md) {
int HP_mob_count_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_count_sub_pre ) {
+ if (HPMHooks.count.HP_mob_count_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_count_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_count_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_mob_count_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45319,9 +51148,9 @@ int HP_mob_count_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.mob.count_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_mob_count_sub_post ) {
+ if (HPMHooks.count.HP_mob_count_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_count_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_count_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_mob_count_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -45333,14 +51162,14 @@ int HP_mob_count_sub(struct block_list *bl, va_list ap) {
int HP_mob_spawn(struct mob_data *md) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_spawn_pre ) {
+ if (HPMHooks.count.HP_mob_spawn_pre > 0) {
int (*preHookFunc) (struct mob_data **md);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_spawn_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_spawn_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_spawn_pre[hIndex].func;
retVal___ = preHookFunc(&md);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45348,9 +51177,9 @@ int HP_mob_spawn(struct mob_data *md) {
{
retVal___ = HPMHooks.source.mob.spawn(md);
}
- if( HPMHooks.count.HP_mob_spawn_post ) {
+ if (HPMHooks.count.HP_mob_spawn_post > 0) {
int (*postHookFunc) (int retVal___, struct mob_data *md);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_spawn_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_spawn_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_spawn_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md);
}
@@ -45360,14 +51189,14 @@ int HP_mob_spawn(struct mob_data *md) {
int HP_mob_can_changetarget(const struct mob_data *md, const struct block_list *target, uint32 mode) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_can_changetarget_pre ) {
+ if (HPMHooks.count.HP_mob_can_changetarget_pre > 0) {
int (*preHookFunc) (const struct mob_data **md, const struct block_list **target, uint32 *mode);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_can_changetarget_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_can_changetarget_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_can_changetarget_pre[hIndex].func;
retVal___ = preHookFunc(&md, &target, &mode);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45375,9 +51204,9 @@ int HP_mob_can_changetarget(const struct mob_data *md, const struct block_list *
{
retVal___ = HPMHooks.source.mob.can_changetarget(md, target, mode);
}
- if( HPMHooks.count.HP_mob_can_changetarget_post ) {
+ if (HPMHooks.count.HP_mob_can_changetarget_post > 0) {
int (*postHookFunc) (int retVal___, const struct mob_data *md, const struct block_list *target, uint32 mode);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_can_changetarget_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_can_changetarget_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_can_changetarget_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md, target, mode);
}
@@ -45387,14 +51216,14 @@ int HP_mob_can_changetarget(const struct mob_data *md, const struct block_list *
int HP_mob_target(struct mob_data *md, struct block_list *bl, int dist) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_target_pre ) {
+ if (HPMHooks.count.HP_mob_target_pre > 0) {
int (*preHookFunc) (struct mob_data **md, struct block_list **bl, int *dist);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_target_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_target_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_target_pre[hIndex].func;
retVal___ = preHookFunc(&md, &bl, &dist);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45402,9 +51231,9 @@ int HP_mob_target(struct mob_data *md, struct block_list *bl, int dist) {
{
retVal___ = HPMHooks.source.mob.target(md, bl, dist);
}
- if( HPMHooks.count.HP_mob_target_post ) {
+ if (HPMHooks.count.HP_mob_target_post > 0) {
int (*postHookFunc) (int retVal___, struct mob_data *md, struct block_list *bl, int dist);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_target_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_target_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_target_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md, bl, dist);
}
@@ -45414,16 +51243,16 @@ int HP_mob_target(struct mob_data *md, struct block_list *bl, int dist) {
int HP_mob_ai_sub_hard_activesearch(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_ai_sub_hard_activesearch_pre ) {
+ if (HPMHooks.count.HP_mob_ai_sub_hard_activesearch_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_hard_activesearch_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_hard_activesearch_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_mob_ai_sub_hard_activesearch_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45433,9 +51262,9 @@ int HP_mob_ai_sub_hard_activesearch(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.mob.ai_sub_hard_activesearch(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_mob_ai_sub_hard_activesearch_post ) {
+ if (HPMHooks.count.HP_mob_ai_sub_hard_activesearch_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_hard_activesearch_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_hard_activesearch_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_mob_ai_sub_hard_activesearch_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -45447,16 +51276,16 @@ int HP_mob_ai_sub_hard_activesearch(struct block_list *bl, va_list ap) {
int HP_mob_ai_sub_hard_changechase(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_ai_sub_hard_changechase_pre ) {
+ if (HPMHooks.count.HP_mob_ai_sub_hard_changechase_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_hard_changechase_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_hard_changechase_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_mob_ai_sub_hard_changechase_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45466,9 +51295,9 @@ int HP_mob_ai_sub_hard_changechase(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.mob.ai_sub_hard_changechase(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_mob_ai_sub_hard_changechase_post ) {
+ if (HPMHooks.count.HP_mob_ai_sub_hard_changechase_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_hard_changechase_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_hard_changechase_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_mob_ai_sub_hard_changechase_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -45480,16 +51309,16 @@ int HP_mob_ai_sub_hard_changechase(struct block_list *bl, va_list ap) {
int HP_mob_ai_sub_hard_bg_ally(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_ai_sub_hard_bg_ally_pre ) {
+ if (HPMHooks.count.HP_mob_ai_sub_hard_bg_ally_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_hard_bg_ally_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_hard_bg_ally_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_mob_ai_sub_hard_bg_ally_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45499,9 +51328,9 @@ int HP_mob_ai_sub_hard_bg_ally(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.mob.ai_sub_hard_bg_ally(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_mob_ai_sub_hard_bg_ally_post ) {
+ if (HPMHooks.count.HP_mob_ai_sub_hard_bg_ally_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_hard_bg_ally_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_hard_bg_ally_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_mob_ai_sub_hard_bg_ally_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -45513,16 +51342,16 @@ int HP_mob_ai_sub_hard_bg_ally(struct block_list *bl, va_list ap) {
int HP_mob_ai_sub_hard_lootsearch(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_ai_sub_hard_lootsearch_pre ) {
+ if (HPMHooks.count.HP_mob_ai_sub_hard_lootsearch_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_hard_lootsearch_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_hard_lootsearch_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_mob_ai_sub_hard_lootsearch_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45532,9 +51361,9 @@ int HP_mob_ai_sub_hard_lootsearch(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.mob.ai_sub_hard_lootsearch(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_mob_ai_sub_hard_lootsearch_post ) {
+ if (HPMHooks.count.HP_mob_ai_sub_hard_lootsearch_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_hard_lootsearch_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_hard_lootsearch_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_mob_ai_sub_hard_lootsearch_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -45546,16 +51375,16 @@ int HP_mob_ai_sub_hard_lootsearch(struct block_list *bl, va_list ap) {
int HP_mob_warpchase_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_warpchase_sub_pre ) {
+ if (HPMHooks.count.HP_mob_warpchase_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_warpchase_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_warpchase_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_mob_warpchase_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45565,9 +51394,9 @@ int HP_mob_warpchase_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.mob.warpchase_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_mob_warpchase_sub_post ) {
+ if (HPMHooks.count.HP_mob_warpchase_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_warpchase_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_warpchase_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_mob_warpchase_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -45579,14 +51408,14 @@ int HP_mob_warpchase_sub(struct block_list *bl, va_list ap) {
int HP_mob_ai_sub_hard_slavemob(struct mob_data *md, int64 tick) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_ai_sub_hard_slavemob_pre ) {
+ if (HPMHooks.count.HP_mob_ai_sub_hard_slavemob_pre > 0) {
int (*preHookFunc) (struct mob_data **md, int64 *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_hard_slavemob_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_hard_slavemob_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_ai_sub_hard_slavemob_pre[hIndex].func;
retVal___ = preHookFunc(&md, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45594,9 +51423,9 @@ int HP_mob_ai_sub_hard_slavemob(struct mob_data *md, int64 tick) {
{
retVal___ = HPMHooks.source.mob.ai_sub_hard_slavemob(md, tick);
}
- if( HPMHooks.count.HP_mob_ai_sub_hard_slavemob_post ) {
+ if (HPMHooks.count.HP_mob_ai_sub_hard_slavemob_post > 0) {
int (*postHookFunc) (int retVal___, struct mob_data *md, int64 tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_hard_slavemob_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_hard_slavemob_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_ai_sub_hard_slavemob_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md, tick);
}
@@ -45606,14 +51435,14 @@ int HP_mob_ai_sub_hard_slavemob(struct mob_data *md, int64 tick) {
int HP_mob_unlocktarget(struct mob_data *md, int64 tick) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_unlocktarget_pre ) {
+ if (HPMHooks.count.HP_mob_unlocktarget_pre > 0) {
int (*preHookFunc) (struct mob_data **md, int64 *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_unlocktarget_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_unlocktarget_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_unlocktarget_pre[hIndex].func;
retVal___ = preHookFunc(&md, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45621,9 +51450,9 @@ int HP_mob_unlocktarget(struct mob_data *md, int64 tick) {
{
retVal___ = HPMHooks.source.mob.unlocktarget(md, tick);
}
- if( HPMHooks.count.HP_mob_unlocktarget_post ) {
+ if (HPMHooks.count.HP_mob_unlocktarget_post > 0) {
int (*postHookFunc) (int retVal___, struct mob_data *md, int64 tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_unlocktarget_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_unlocktarget_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_unlocktarget_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md, tick);
}
@@ -45633,14 +51462,14 @@ int HP_mob_unlocktarget(struct mob_data *md, int64 tick) {
int HP_mob_randomwalk(struct mob_data *md, int64 tick) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_randomwalk_pre ) {
+ if (HPMHooks.count.HP_mob_randomwalk_pre > 0) {
int (*preHookFunc) (struct mob_data **md, int64 *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_randomwalk_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_randomwalk_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_randomwalk_pre[hIndex].func;
retVal___ = preHookFunc(&md, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45648,9 +51477,9 @@ int HP_mob_randomwalk(struct mob_data *md, int64 tick) {
{
retVal___ = HPMHooks.source.mob.randomwalk(md, tick);
}
- if( HPMHooks.count.HP_mob_randomwalk_post ) {
+ if (HPMHooks.count.HP_mob_randomwalk_post > 0) {
int (*postHookFunc) (int retVal___, struct mob_data *md, int64 tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_randomwalk_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_randomwalk_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_randomwalk_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md, tick);
}
@@ -45660,14 +51489,14 @@ int HP_mob_randomwalk(struct mob_data *md, int64 tick) {
int HP_mob_warpchase(struct mob_data *md, struct block_list *target) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_warpchase_pre ) {
+ if (HPMHooks.count.HP_mob_warpchase_pre > 0) {
int (*preHookFunc) (struct mob_data **md, struct block_list **target);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_warpchase_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_warpchase_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_warpchase_pre[hIndex].func;
retVal___ = preHookFunc(&md, &target);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45675,9 +51504,9 @@ int HP_mob_warpchase(struct mob_data *md, struct block_list *target) {
{
retVal___ = HPMHooks.source.mob.warpchase(md, target);
}
- if( HPMHooks.count.HP_mob_warpchase_post ) {
+ if (HPMHooks.count.HP_mob_warpchase_post > 0) {
int (*postHookFunc) (int retVal___, struct mob_data *md, struct block_list *target);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_warpchase_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_warpchase_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_warpchase_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md, target);
}
@@ -45687,14 +51516,14 @@ int HP_mob_warpchase(struct mob_data *md, struct block_list *target) {
bool HP_mob_ai_sub_hard(struct mob_data *md, int64 tick) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_mob_ai_sub_hard_pre ) {
+ if (HPMHooks.count.HP_mob_ai_sub_hard_pre > 0) {
bool (*preHookFunc) (struct mob_data **md, int64 *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_hard_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_hard_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_ai_sub_hard_pre[hIndex].func;
retVal___ = preHookFunc(&md, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45702,9 +51531,9 @@ bool HP_mob_ai_sub_hard(struct mob_data *md, int64 tick) {
{
retVal___ = HPMHooks.source.mob.ai_sub_hard(md, tick);
}
- if( HPMHooks.count.HP_mob_ai_sub_hard_post ) {
+ if (HPMHooks.count.HP_mob_ai_sub_hard_post > 0) {
bool (*postHookFunc) (bool retVal___, struct mob_data *md, int64 tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_hard_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_hard_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_ai_sub_hard_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md, tick);
}
@@ -45714,16 +51543,16 @@ bool HP_mob_ai_sub_hard(struct mob_data *md, int64 tick) {
int HP_mob_ai_sub_hard_timer(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_ai_sub_hard_timer_pre ) {
+ if (HPMHooks.count.HP_mob_ai_sub_hard_timer_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_hard_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_hard_timer_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_mob_ai_sub_hard_timer_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45733,9 +51562,9 @@ int HP_mob_ai_sub_hard_timer(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.mob.ai_sub_hard_timer(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_mob_ai_sub_hard_timer_post ) {
+ if (HPMHooks.count.HP_mob_ai_sub_hard_timer_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_hard_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_hard_timer_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_mob_ai_sub_hard_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -45747,16 +51576,16 @@ int HP_mob_ai_sub_hard_timer(struct block_list *bl, va_list ap) {
int HP_mob_ai_sub_foreachclient(struct map_session_data *sd, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_ai_sub_foreachclient_pre ) {
+ if (HPMHooks.count.HP_mob_ai_sub_foreachclient_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_foreachclient_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_foreachclient_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_mob_ai_sub_foreachclient_pre[hIndex].func;
retVal___ = preHookFunc(&sd, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45766,9 +51595,9 @@ int HP_mob_ai_sub_foreachclient(struct map_session_data *sd, va_list ap) {
retVal___ = HPMHooks.source.mob.ai_sub_foreachclient(sd, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_mob_ai_sub_foreachclient_post ) {
+ if (HPMHooks.count.HP_mob_ai_sub_foreachclient_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_foreachclient_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_foreachclient_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_mob_ai_sub_foreachclient_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, ap___copy);
@@ -45780,16 +51609,16 @@ int HP_mob_ai_sub_foreachclient(struct map_session_data *sd, va_list ap) {
int HP_mob_ai_sub_lazy(struct mob_data *md, va_list args) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_ai_sub_lazy_pre ) {
+ if (HPMHooks.count.HP_mob_ai_sub_lazy_pre > 0) {
int (*preHookFunc) (struct mob_data **md, va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_lazy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_lazy_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_mob_ai_sub_lazy_pre[hIndex].func;
retVal___ = preHookFunc(&md, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45799,9 +51628,9 @@ int HP_mob_ai_sub_lazy(struct mob_data *md, va_list args) {
retVal___ = HPMHooks.source.mob.ai_sub_lazy(md, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_mob_ai_sub_lazy_post ) {
+ if (HPMHooks.count.HP_mob_ai_sub_lazy_post > 0) {
int (*postHookFunc) (int retVal___, struct mob_data *md, va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_lazy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_sub_lazy_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_mob_ai_sub_lazy_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md, args___copy);
@@ -45813,14 +51642,14 @@ int HP_mob_ai_sub_lazy(struct mob_data *md, va_list args) {
int HP_mob_ai_lazy(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_ai_lazy_pre ) {
+ if (HPMHooks.count.HP_mob_ai_lazy_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_lazy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_lazy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_ai_lazy_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45828,9 +51657,9 @@ int HP_mob_ai_lazy(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.mob.ai_lazy(tid, tick, id, data);
}
- if( HPMHooks.count.HP_mob_ai_lazy_post ) {
+ if (HPMHooks.count.HP_mob_ai_lazy_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_lazy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_lazy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_ai_lazy_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -45840,14 +51669,14 @@ int HP_mob_ai_lazy(int tid, int64 tick, int id, intptr_t data) {
int HP_mob_ai_hard(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_ai_hard_pre ) {
+ if (HPMHooks.count.HP_mob_ai_hard_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_hard_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_hard_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_ai_hard_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45855,9 +51684,9 @@ int HP_mob_ai_hard(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.mob.ai_hard(tid, tick, id, data);
}
- if( HPMHooks.count.HP_mob_ai_hard_post ) {
+ if (HPMHooks.count.HP_mob_ai_hard_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_hard_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_ai_hard_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_ai_hard_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -45867,14 +51696,14 @@ int HP_mob_ai_hard(int tid, int64 tick, int id, intptr_t data) {
struct item_drop* HP_mob_setdropitem(int nameid, int qty, struct item_data *data) {
int hIndex = 0;
struct item_drop* retVal___ = NULL;
- if( HPMHooks.count.HP_mob_setdropitem_pre ) {
+ if (HPMHooks.count.HP_mob_setdropitem_pre > 0) {
struct item_drop* (*preHookFunc) (int *nameid, int *qty, struct item_data **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_setdropitem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_setdropitem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_setdropitem_pre[hIndex].func;
retVal___ = preHookFunc(&nameid, &qty, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45882,9 +51711,9 @@ struct item_drop* HP_mob_setdropitem(int nameid, int qty, struct item_data *data
{
retVal___ = HPMHooks.source.mob.setdropitem(nameid, qty, data);
}
- if( HPMHooks.count.HP_mob_setdropitem_post ) {
+ if (HPMHooks.count.HP_mob_setdropitem_post > 0) {
struct item_drop* (*postHookFunc) (struct item_drop* retVal___, int nameid, int qty, struct item_data *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_setdropitem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_setdropitem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_setdropitem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, nameid, qty, data);
}
@@ -45894,14 +51723,14 @@ struct item_drop* HP_mob_setdropitem(int nameid, int qty, struct item_data *data
struct item_drop* HP_mob_setlootitem(struct item *item) {
int hIndex = 0;
struct item_drop* retVal___ = NULL;
- if( HPMHooks.count.HP_mob_setlootitem_pre ) {
+ if (HPMHooks.count.HP_mob_setlootitem_pre > 0) {
struct item_drop* (*preHookFunc) (struct item **item);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_setlootitem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_setlootitem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_setlootitem_pre[hIndex].func;
retVal___ = preHookFunc(&item);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45909,9 +51738,9 @@ struct item_drop* HP_mob_setlootitem(struct item *item) {
{
retVal___ = HPMHooks.source.mob.setlootitem(item);
}
- if( HPMHooks.count.HP_mob_setlootitem_post ) {
+ if (HPMHooks.count.HP_mob_setlootitem_post > 0) {
struct item_drop* (*postHookFunc) (struct item_drop* retVal___, struct item *item);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_setlootitem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_setlootitem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_setlootitem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, item);
}
@@ -45921,14 +51750,14 @@ struct item_drop* HP_mob_setlootitem(struct item *item) {
int HP_mob_delay_item_drop(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_delay_item_drop_pre ) {
+ if (HPMHooks.count.HP_mob_delay_item_drop_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_delay_item_drop_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_delay_item_drop_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_delay_item_drop_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45936,9 +51765,9 @@ int HP_mob_delay_item_drop(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.mob.delay_item_drop(tid, tick, id, data);
}
- if( HPMHooks.count.HP_mob_delay_item_drop_post ) {
+ if (HPMHooks.count.HP_mob_delay_item_drop_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_delay_item_drop_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_delay_item_drop_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_delay_item_drop_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -45947,14 +51776,14 @@ int HP_mob_delay_item_drop(int tid, int64 tick, int id, intptr_t data) {
}
void HP_mob_item_drop(struct mob_data *md, struct item_drop_list *dlist, struct item_drop *ditem, int loot, int drop_rate, unsigned short flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_mob_item_drop_pre ) {
+ if (HPMHooks.count.HP_mob_item_drop_pre > 0) {
void (*preHookFunc) (struct mob_data **md, struct item_drop_list **dlist, struct item_drop **ditem, int *loot, int *drop_rate, unsigned short *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_item_drop_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_item_drop_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_item_drop_pre[hIndex].func;
preHookFunc(&md, &dlist, &ditem, &loot, &drop_rate, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -45962,9 +51791,9 @@ void HP_mob_item_drop(struct mob_data *md, struct item_drop_list *dlist, struct
{
HPMHooks.source.mob.item_drop(md, dlist, ditem, loot, drop_rate, flag);
}
- if( HPMHooks.count.HP_mob_item_drop_post ) {
+ if (HPMHooks.count.HP_mob_item_drop_post > 0) {
void (*postHookFunc) (struct mob_data *md, struct item_drop_list *dlist, struct item_drop *ditem, int loot, int drop_rate, unsigned short flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_item_drop_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_item_drop_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_item_drop_post[hIndex].func;
postHookFunc(md, dlist, ditem, loot, drop_rate, flag);
}
@@ -45974,14 +51803,14 @@ void HP_mob_item_drop(struct mob_data *md, struct item_drop_list *dlist, struct
int HP_mob_timer_delete(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_timer_delete_pre ) {
+ if (HPMHooks.count.HP_mob_timer_delete_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_timer_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_timer_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_timer_delete_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -45989,9 +51818,9 @@ int HP_mob_timer_delete(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.mob.timer_delete(tid, tick, id, data);
}
- if( HPMHooks.count.HP_mob_timer_delete_post ) {
+ if (HPMHooks.count.HP_mob_timer_delete_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_timer_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_timer_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_timer_delete_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -46001,16 +51830,16 @@ int HP_mob_timer_delete(int tid, int64 tick, int id, intptr_t data) {
int HP_mob_deleteslave_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_deleteslave_sub_pre ) {
+ if (HPMHooks.count.HP_mob_deleteslave_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_deleteslave_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_deleteslave_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_mob_deleteslave_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -46020,9 +51849,9 @@ int HP_mob_deleteslave_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.mob.deleteslave_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_mob_deleteslave_sub_post ) {
+ if (HPMHooks.count.HP_mob_deleteslave_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_deleteslave_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_deleteslave_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_mob_deleteslave_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -46034,14 +51863,14 @@ int HP_mob_deleteslave_sub(struct block_list *bl, va_list ap) {
int HP_mob_deleteslave(struct mob_data *md) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_deleteslave_pre ) {
+ if (HPMHooks.count.HP_mob_deleteslave_pre > 0) {
int (*preHookFunc) (struct mob_data **md);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_deleteslave_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_deleteslave_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_deleteslave_pre[hIndex].func;
retVal___ = preHookFunc(&md);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -46049,9 +51878,9 @@ int HP_mob_deleteslave(struct mob_data *md) {
{
retVal___ = HPMHooks.source.mob.deleteslave(md);
}
- if( HPMHooks.count.HP_mob_deleteslave_post ) {
+ if (HPMHooks.count.HP_mob_deleteslave_post > 0) {
int (*postHookFunc) (int retVal___, struct mob_data *md);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_deleteslave_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_deleteslave_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_deleteslave_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md);
}
@@ -46061,14 +51890,14 @@ int HP_mob_deleteslave(struct mob_data *md) {
int HP_mob_respawn(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_respawn_pre ) {
+ if (HPMHooks.count.HP_mob_respawn_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_respawn_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_respawn_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_respawn_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -46076,9 +51905,9 @@ int HP_mob_respawn(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.mob.respawn(tid, tick, id, data);
}
- if( HPMHooks.count.HP_mob_respawn_post ) {
+ if (HPMHooks.count.HP_mob_respawn_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_respawn_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_respawn_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_respawn_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -46087,14 +51916,14 @@ int HP_mob_respawn(int tid, int64 tick, int id, intptr_t data) {
}
void HP_mob_log_damage(struct mob_data *md, struct block_list *src, int damage) {
int hIndex = 0;
- if( HPMHooks.count.HP_mob_log_damage_pre ) {
+ if (HPMHooks.count.HP_mob_log_damage_pre > 0) {
void (*preHookFunc) (struct mob_data **md, struct block_list **src, int *damage);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_log_damage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_log_damage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_log_damage_pre[hIndex].func;
preHookFunc(&md, &src, &damage);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -46102,9 +51931,9 @@ void HP_mob_log_damage(struct mob_data *md, struct block_list *src, int damage)
{
HPMHooks.source.mob.log_damage(md, src, damage);
}
- if( HPMHooks.count.HP_mob_log_damage_post ) {
+ if (HPMHooks.count.HP_mob_log_damage_post > 0) {
void (*postHookFunc) (struct mob_data *md, struct block_list *src, int damage);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_log_damage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_log_damage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_log_damage_post[hIndex].func;
postHookFunc(md, src, damage);
}
@@ -46113,14 +51942,14 @@ void HP_mob_log_damage(struct mob_data *md, struct block_list *src, int damage)
}
void HP_mob_damage(struct mob_data *md, struct block_list *src, int damage) {
int hIndex = 0;
- if( HPMHooks.count.HP_mob_damage_pre ) {
+ if (HPMHooks.count.HP_mob_damage_pre > 0) {
void (*preHookFunc) (struct mob_data **md, struct block_list **src, int *damage);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_damage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_damage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_damage_pre[hIndex].func;
preHookFunc(&md, &src, &damage);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -46128,9 +51957,9 @@ void HP_mob_damage(struct mob_data *md, struct block_list *src, int damage) {
{
HPMHooks.source.mob.damage(md, src, damage);
}
- if( HPMHooks.count.HP_mob_damage_post ) {
+ if (HPMHooks.count.HP_mob_damage_post > 0) {
void (*postHookFunc) (struct mob_data *md, struct block_list *src, int damage);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_damage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_damage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_damage_post[hIndex].func;
postHookFunc(md, src, damage);
}
@@ -46140,14 +51969,14 @@ void HP_mob_damage(struct mob_data *md, struct block_list *src, int damage) {
int HP_mob_dead(struct mob_data *md, struct block_list *src, int type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_dead_pre ) {
+ if (HPMHooks.count.HP_mob_dead_pre > 0) {
int (*preHookFunc) (struct mob_data **md, struct block_list **src, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_dead_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_dead_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_dead_pre[hIndex].func;
retVal___ = preHookFunc(&md, &src, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -46155,9 +51984,9 @@ int HP_mob_dead(struct mob_data *md, struct block_list *src, int type) {
{
retVal___ = HPMHooks.source.mob.dead(md, src, type);
}
- if( HPMHooks.count.HP_mob_dead_post ) {
+ if (HPMHooks.count.HP_mob_dead_post > 0) {
int (*postHookFunc) (int retVal___, struct mob_data *md, struct block_list *src, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_dead_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_dead_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_dead_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md, src, type);
}
@@ -46166,14 +51995,14 @@ int HP_mob_dead(struct mob_data *md, struct block_list *src, int type) {
}
void HP_mob_revive(struct mob_data *md, unsigned int hp) {
int hIndex = 0;
- if( HPMHooks.count.HP_mob_revive_pre ) {
+ if (HPMHooks.count.HP_mob_revive_pre > 0) {
void (*preHookFunc) (struct mob_data **md, unsigned int *hp);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_revive_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_revive_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_revive_pre[hIndex].func;
preHookFunc(&md, &hp);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -46181,9 +52010,9 @@ void HP_mob_revive(struct mob_data *md, unsigned int hp) {
{
HPMHooks.source.mob.revive(md, hp);
}
- if( HPMHooks.count.HP_mob_revive_post ) {
+ if (HPMHooks.count.HP_mob_revive_post > 0) {
void (*postHookFunc) (struct mob_data *md, unsigned int hp);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_revive_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_revive_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_revive_post[hIndex].func;
postHookFunc(md, hp);
}
@@ -46193,14 +52022,14 @@ void HP_mob_revive(struct mob_data *md, unsigned int hp) {
int HP_mob_guardian_guildchange(struct mob_data *md) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_guardian_guildchange_pre ) {
+ if (HPMHooks.count.HP_mob_guardian_guildchange_pre > 0) {
int (*preHookFunc) (struct mob_data **md);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_guardian_guildchange_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_guardian_guildchange_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_guardian_guildchange_pre[hIndex].func;
retVal___ = preHookFunc(&md);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -46208,9 +52037,9 @@ int HP_mob_guardian_guildchange(struct mob_data *md) {
{
retVal___ = HPMHooks.source.mob.guardian_guildchange(md);
}
- if( HPMHooks.count.HP_mob_guardian_guildchange_post ) {
+ if (HPMHooks.count.HP_mob_guardian_guildchange_post > 0) {
int (*postHookFunc) (int retVal___, struct mob_data *md);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_guardian_guildchange_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_guardian_guildchange_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_guardian_guildchange_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md);
}
@@ -46220,14 +52049,14 @@ int HP_mob_guardian_guildchange(struct mob_data *md) {
int HP_mob_random_class(int *value, size_t count) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_random_class_pre ) {
+ if (HPMHooks.count.HP_mob_random_class_pre > 0) {
int (*preHookFunc) (int **value, size_t *count);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_random_class_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_random_class_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_random_class_pre[hIndex].func;
retVal___ = preHookFunc(&value, &count);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -46235,9 +52064,9 @@ int HP_mob_random_class(int *value, size_t count) {
{
retVal___ = HPMHooks.source.mob.random_class(value, count);
}
- if( HPMHooks.count.HP_mob_random_class_post ) {
+ if (HPMHooks.count.HP_mob_random_class_post > 0) {
int (*postHookFunc) (int retVal___, int *value, size_t count);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_random_class_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_random_class_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_random_class_post[hIndex].func;
retVal___ = postHookFunc(retVal___, value, count);
}
@@ -46247,14 +52076,14 @@ int HP_mob_random_class(int *value, size_t count) {
int HP_mob_class_change(struct mob_data *md, int class_) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_class_change_pre ) {
+ if (HPMHooks.count.HP_mob_class_change_pre > 0) {
int (*preHookFunc) (struct mob_data **md, int *class_);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_class_change_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_class_change_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_class_change_pre[hIndex].func;
retVal___ = preHookFunc(&md, &class_);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -46262,9 +52091,9 @@ int HP_mob_class_change(struct mob_data *md, int class_) {
{
retVal___ = HPMHooks.source.mob.class_change(md, class_);
}
- if( HPMHooks.count.HP_mob_class_change_post ) {
+ if (HPMHooks.count.HP_mob_class_change_post > 0) {
int (*postHookFunc) (int retVal___, struct mob_data *md, int class_);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_class_change_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_class_change_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_class_change_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md, class_);
}
@@ -46273,14 +52102,14 @@ int HP_mob_class_change(struct mob_data *md, int class_) {
}
void HP_mob_heal(struct mob_data *md, unsigned int heal) {
int hIndex = 0;
- if( HPMHooks.count.HP_mob_heal_pre ) {
+ if (HPMHooks.count.HP_mob_heal_pre > 0) {
void (*preHookFunc) (struct mob_data **md, unsigned int *heal);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_heal_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_heal_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_heal_pre[hIndex].func;
preHookFunc(&md, &heal);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -46288,9 +52117,9 @@ void HP_mob_heal(struct mob_data *md, unsigned int heal) {
{
HPMHooks.source.mob.heal(md, heal);
}
- if( HPMHooks.count.HP_mob_heal_post ) {
+ if (HPMHooks.count.HP_mob_heal_post > 0) {
void (*postHookFunc) (struct mob_data *md, unsigned int heal);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_heal_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_heal_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_heal_post[hIndex].func;
postHookFunc(md, heal);
}
@@ -46300,16 +52129,16 @@ void HP_mob_heal(struct mob_data *md, unsigned int heal) {
int HP_mob_warpslave_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_warpslave_sub_pre ) {
+ if (HPMHooks.count.HP_mob_warpslave_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_warpslave_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_warpslave_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_mob_warpslave_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -46319,9 +52148,9 @@ int HP_mob_warpslave_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.mob.warpslave_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_mob_warpslave_sub_post ) {
+ if (HPMHooks.count.HP_mob_warpslave_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_warpslave_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_warpslave_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_mob_warpslave_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -46333,14 +52162,14 @@ int HP_mob_warpslave_sub(struct block_list *bl, va_list ap) {
int HP_mob_warpslave(struct block_list *bl, int range) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_warpslave_pre ) {
+ if (HPMHooks.count.HP_mob_warpslave_pre > 0) {
int (*preHookFunc) (struct block_list **bl, int *range);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_warpslave_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_warpslave_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_warpslave_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &range);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -46348,9 +52177,9 @@ int HP_mob_warpslave(struct block_list *bl, int range) {
{
retVal___ = HPMHooks.source.mob.warpslave(bl, range);
}
- if( HPMHooks.count.HP_mob_warpslave_post ) {
+ if (HPMHooks.count.HP_mob_warpslave_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, int range);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_warpslave_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_warpslave_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_warpslave_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, range);
}
@@ -46360,16 +52189,16 @@ int HP_mob_warpslave(struct block_list *bl, int range) {
int HP_mob_countslave_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_countslave_sub_pre ) {
+ if (HPMHooks.count.HP_mob_countslave_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_countslave_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_countslave_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_mob_countslave_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -46379,9 +52208,9 @@ int HP_mob_countslave_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.mob.countslave_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_mob_countslave_sub_post ) {
+ if (HPMHooks.count.HP_mob_countslave_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_countslave_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_countslave_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_mob_countslave_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -46393,14 +52222,14 @@ int HP_mob_countslave_sub(struct block_list *bl, va_list ap) {
int HP_mob_countslave(struct block_list *bl) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_countslave_pre ) {
+ if (HPMHooks.count.HP_mob_countslave_pre > 0) {
int (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_countslave_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_countslave_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_countslave_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -46408,9 +52237,9 @@ int HP_mob_countslave(struct block_list *bl) {
{
retVal___ = HPMHooks.source.mob.countslave(bl);
}
- if( HPMHooks.count.HP_mob_countslave_post ) {
+ if (HPMHooks.count.HP_mob_countslave_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_countslave_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_countslave_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_countslave_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -46420,14 +52249,14 @@ int HP_mob_countslave(struct block_list *bl) {
int HP_mob_summonslave(struct mob_data *md2, int *value, int amount, uint16 skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_summonslave_pre ) {
+ if (HPMHooks.count.HP_mob_summonslave_pre > 0) {
int (*preHookFunc) (struct mob_data **md2, int **value, int *amount, uint16 *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_summonslave_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_summonslave_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_summonslave_pre[hIndex].func;
retVal___ = preHookFunc(&md2, &value, &amount, &skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -46435,9 +52264,9 @@ int HP_mob_summonslave(struct mob_data *md2, int *value, int amount, uint16 skil
{
retVal___ = HPMHooks.source.mob.summonslave(md2, value, amount, skill_id);
}
- if( HPMHooks.count.HP_mob_summonslave_post ) {
+ if (HPMHooks.count.HP_mob_summonslave_post > 0) {
int (*postHookFunc) (int retVal___, struct mob_data *md2, int *value, int amount, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_summonslave_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_summonslave_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_summonslave_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md2, value, amount, skill_id);
}
@@ -46447,16 +52276,16 @@ int HP_mob_summonslave(struct mob_data *md2, int *value, int amount, uint16 skil
int HP_mob_getfriendhprate_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_getfriendhprate_sub_pre ) {
+ if (HPMHooks.count.HP_mob_getfriendhprate_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_getfriendhprate_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_getfriendhprate_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_mob_getfriendhprate_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -46466,9 +52295,9 @@ int HP_mob_getfriendhprate_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.mob.getfriendhprate_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_mob_getfriendhprate_sub_post ) {
+ if (HPMHooks.count.HP_mob_getfriendhprate_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_getfriendhprate_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_getfriendhprate_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_mob_getfriendhprate_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -46480,14 +52309,14 @@ int HP_mob_getfriendhprate_sub(struct block_list *bl, va_list ap) {
struct block_list* HP_mob_getfriendhprate(struct mob_data *md, int min_rate, int max_rate) {
int hIndex = 0;
struct block_list* retVal___ = NULL;
- if( HPMHooks.count.HP_mob_getfriendhprate_pre ) {
+ if (HPMHooks.count.HP_mob_getfriendhprate_pre > 0) {
struct block_list* (*preHookFunc) (struct mob_data **md, int *min_rate, int *max_rate);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_getfriendhprate_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_getfriendhprate_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_getfriendhprate_pre[hIndex].func;
retVal___ = preHookFunc(&md, &min_rate, &max_rate);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -46495,9 +52324,9 @@ struct block_list* HP_mob_getfriendhprate(struct mob_data *md, int min_rate, int
{
retVal___ = HPMHooks.source.mob.getfriendhprate(md, min_rate, max_rate);
}
- if( HPMHooks.count.HP_mob_getfriendhprate_post ) {
+ if (HPMHooks.count.HP_mob_getfriendhprate_post > 0) {
struct block_list* (*postHookFunc) (struct block_list* retVal___, struct mob_data *md, int min_rate, int max_rate);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_getfriendhprate_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_getfriendhprate_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_getfriendhprate_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md, min_rate, max_rate);
}
@@ -46507,14 +52336,14 @@ struct block_list* HP_mob_getfriendhprate(struct mob_data *md, int min_rate, int
struct block_list* HP_mob_getmasterhpltmaxrate(struct mob_data *md, int rate) {
int hIndex = 0;
struct block_list* retVal___ = NULL;
- if( HPMHooks.count.HP_mob_getmasterhpltmaxrate_pre ) {
+ if (HPMHooks.count.HP_mob_getmasterhpltmaxrate_pre > 0) {
struct block_list* (*preHookFunc) (struct mob_data **md, int *rate);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_getmasterhpltmaxrate_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_getmasterhpltmaxrate_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_getmasterhpltmaxrate_pre[hIndex].func;
retVal___ = preHookFunc(&md, &rate);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -46522,9 +52351,9 @@ struct block_list* HP_mob_getmasterhpltmaxrate(struct mob_data *md, int rate) {
{
retVal___ = HPMHooks.source.mob.getmasterhpltmaxrate(md, rate);
}
- if( HPMHooks.count.HP_mob_getmasterhpltmaxrate_post ) {
+ if (HPMHooks.count.HP_mob_getmasterhpltmaxrate_post > 0) {
struct block_list* (*postHookFunc) (struct block_list* retVal___, struct mob_data *md, int rate);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_getmasterhpltmaxrate_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_getmasterhpltmaxrate_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_getmasterhpltmaxrate_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md, rate);
}
@@ -46534,16 +52363,16 @@ struct block_list* HP_mob_getmasterhpltmaxrate(struct mob_data *md, int rate) {
int HP_mob_getfriendstatus_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_getfriendstatus_sub_pre ) {
+ if (HPMHooks.count.HP_mob_getfriendstatus_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_getfriendstatus_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_getfriendstatus_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_mob_getfriendstatus_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -46553,9 +52382,9 @@ int HP_mob_getfriendstatus_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.mob.getfriendstatus_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_mob_getfriendstatus_sub_post ) {
+ if (HPMHooks.count.HP_mob_getfriendstatus_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_getfriendstatus_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_getfriendstatus_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_mob_getfriendstatus_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -46567,14 +52396,14 @@ int HP_mob_getfriendstatus_sub(struct block_list *bl, va_list ap) {
struct mob_data* HP_mob_getfriendstatus(struct mob_data *md, int cond1, int cond2) {
int hIndex = 0;
struct mob_data* retVal___ = NULL;
- if( HPMHooks.count.HP_mob_getfriendstatus_pre ) {
+ if (HPMHooks.count.HP_mob_getfriendstatus_pre > 0) {
struct mob_data* (*preHookFunc) (struct mob_data **md, int *cond1, int *cond2);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_getfriendstatus_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_getfriendstatus_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_getfriendstatus_pre[hIndex].func;
retVal___ = preHookFunc(&md, &cond1, &cond2);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -46582,9 +52411,9 @@ struct mob_data* HP_mob_getfriendstatus(struct mob_data *md, int cond1, int cond
{
retVal___ = HPMHooks.source.mob.getfriendstatus(md, cond1, cond2);
}
- if( HPMHooks.count.HP_mob_getfriendstatus_post ) {
+ if (HPMHooks.count.HP_mob_getfriendstatus_post > 0) {
struct mob_data* (*postHookFunc) (struct mob_data* retVal___, struct mob_data *md, int cond1, int cond2);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_getfriendstatus_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_getfriendstatus_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_getfriendstatus_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md, cond1, cond2);
}
@@ -46594,14 +52423,14 @@ struct mob_data* HP_mob_getfriendstatus(struct mob_data *md, int cond1, int cond
int HP_mob_skill_use(struct mob_data *md, int64 tick, int event) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_skill_use_pre ) {
+ if (HPMHooks.count.HP_mob_skill_use_pre > 0) {
int (*preHookFunc) (struct mob_data **md, int64 *tick, int *event);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_skill_use_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_skill_use_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_skill_use_pre[hIndex].func;
retVal___ = preHookFunc(&md, &tick, &event);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -46609,9 +52438,9 @@ int HP_mob_skill_use(struct mob_data *md, int64 tick, int event) {
{
retVal___ = HPMHooks.source.mob.skill_use(md, tick, event);
}
- if( HPMHooks.count.HP_mob_skill_use_post ) {
+ if (HPMHooks.count.HP_mob_skill_use_post > 0) {
int (*postHookFunc) (int retVal___, struct mob_data *md, int64 tick, int event);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_skill_use_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_skill_use_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_skill_use_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md, tick, event);
}
@@ -46621,14 +52450,14 @@ int HP_mob_skill_use(struct mob_data *md, int64 tick, int event) {
int HP_mob_skill_event(struct mob_data *md, struct block_list *src, int64 tick, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_skill_event_pre ) {
+ if (HPMHooks.count.HP_mob_skill_event_pre > 0) {
int (*preHookFunc) (struct mob_data **md, struct block_list **src, int64 *tick, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_skill_event_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_skill_event_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_skill_event_pre[hIndex].func;
retVal___ = preHookFunc(&md, &src, &tick, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -46636,9 +52465,9 @@ int HP_mob_skill_event(struct mob_data *md, struct block_list *src, int64 tick,
{
retVal___ = HPMHooks.source.mob.skill_event(md, src, tick, flag);
}
- if( HPMHooks.count.HP_mob_skill_event_post ) {
+ if (HPMHooks.count.HP_mob_skill_event_post > 0) {
int (*postHookFunc) (int retVal___, struct mob_data *md, struct block_list *src, int64 tick, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_skill_event_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_skill_event_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_skill_event_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md, src, tick, flag);
}
@@ -46648,14 +52477,14 @@ int HP_mob_skill_event(struct mob_data *md, struct block_list *src, int64 tick,
int HP_mob_is_clone(int class_) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_is_clone_pre ) {
+ if (HPMHooks.count.HP_mob_is_clone_pre > 0) {
int (*preHookFunc) (int *class_);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_is_clone_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_is_clone_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_is_clone_pre[hIndex].func;
retVal___ = preHookFunc(&class_);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -46663,9 +52492,9 @@ int HP_mob_is_clone(int class_) {
{
retVal___ = HPMHooks.source.mob.is_clone(class_);
}
- if( HPMHooks.count.HP_mob_is_clone_post ) {
+ if (HPMHooks.count.HP_mob_is_clone_post > 0) {
int (*postHookFunc) (int retVal___, int class_);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_is_clone_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_is_clone_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_is_clone_post[hIndex].func;
retVal___ = postHookFunc(retVal___, class_);
}
@@ -46675,14 +52504,14 @@ int HP_mob_is_clone(int class_) {
int HP_mob_clone_spawn(struct map_session_data *sd, int16 m, int16 x, int16 y, const char *event, int master_id, uint32 mode, int flag, unsigned int duration) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_clone_spawn_pre ) {
+ if (HPMHooks.count.HP_mob_clone_spawn_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int16 *m, int16 *x, int16 *y, const char **event, int *master_id, uint32 *mode, int *flag, unsigned int *duration);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_clone_spawn_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_clone_spawn_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_clone_spawn_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &m, &x, &y, &event, &master_id, &mode, &flag, &duration);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -46690,9 +52519,9 @@ int HP_mob_clone_spawn(struct map_session_data *sd, int16 m, int16 x, int16 y, c
{
retVal___ = HPMHooks.source.mob.clone_spawn(sd, m, x, y, event, master_id, mode, flag, duration);
}
- if( HPMHooks.count.HP_mob_clone_spawn_post ) {
+ if (HPMHooks.count.HP_mob_clone_spawn_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int16 m, int16 x, int16 y, const char *event, int master_id, uint32 mode, int flag, unsigned int duration);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_clone_spawn_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_clone_spawn_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_clone_spawn_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, m, x, y, event, master_id, mode, flag, duration);
}
@@ -46702,14 +52531,14 @@ int HP_mob_clone_spawn(struct map_session_data *sd, int16 m, int16 x, int16 y, c
int HP_mob_clone_delete(struct mob_data *md) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_clone_delete_pre ) {
+ if (HPMHooks.count.HP_mob_clone_delete_pre > 0) {
int (*preHookFunc) (struct mob_data **md);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_clone_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_clone_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_clone_delete_pre[hIndex].func;
retVal___ = preHookFunc(&md);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -46717,9 +52546,9 @@ int HP_mob_clone_delete(struct mob_data *md) {
{
retVal___ = HPMHooks.source.mob.clone_delete(md);
}
- if( HPMHooks.count.HP_mob_clone_delete_post ) {
+ if (HPMHooks.count.HP_mob_clone_delete_post > 0) {
int (*postHookFunc) (int retVal___, struct mob_data *md);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_clone_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_clone_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_clone_delete_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md);
}
@@ -46729,14 +52558,14 @@ int HP_mob_clone_delete(struct mob_data *md) {
unsigned int HP_mob_drop_adjust(int baserate, int rate_adjust, unsigned short rate_min, unsigned short rate_max) {
int hIndex = 0;
unsigned int retVal___ = 0;
- if( HPMHooks.count.HP_mob_drop_adjust_pre ) {
+ if (HPMHooks.count.HP_mob_drop_adjust_pre > 0) {
unsigned int (*preHookFunc) (int *baserate, int *rate_adjust, unsigned short *rate_min, unsigned short *rate_max);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_drop_adjust_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_drop_adjust_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_drop_adjust_pre[hIndex].func;
retVal___ = preHookFunc(&baserate, &rate_adjust, &rate_min, &rate_max);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -46744,9 +52573,9 @@ unsigned int HP_mob_drop_adjust(int baserate, int rate_adjust, unsigned short ra
{
retVal___ = HPMHooks.source.mob.drop_adjust(baserate, rate_adjust, rate_min, rate_max);
}
- if( HPMHooks.count.HP_mob_drop_adjust_post ) {
+ if (HPMHooks.count.HP_mob_drop_adjust_post > 0) {
unsigned int (*postHookFunc) (unsigned int retVal___, int baserate, int rate_adjust, unsigned short rate_min, unsigned short rate_max);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_drop_adjust_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_drop_adjust_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_drop_adjust_post[hIndex].func;
retVal___ = postHookFunc(retVal___, baserate, rate_adjust, rate_min, rate_max);
}
@@ -46755,14 +52584,14 @@ unsigned int HP_mob_drop_adjust(int baserate, int rate_adjust, unsigned short ra
}
void HP_mob_item_dropratio_adjust(int nameid, int mob_id, int *rate_adjust) {
int hIndex = 0;
- if( HPMHooks.count.HP_mob_item_dropratio_adjust_pre ) {
+ if (HPMHooks.count.HP_mob_item_dropratio_adjust_pre > 0) {
void (*preHookFunc) (int *nameid, int *mob_id, int **rate_adjust);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_item_dropratio_adjust_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_item_dropratio_adjust_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_item_dropratio_adjust_pre[hIndex].func;
preHookFunc(&nameid, &mob_id, &rate_adjust);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -46770,9 +52599,9 @@ void HP_mob_item_dropratio_adjust(int nameid, int mob_id, int *rate_adjust) {
{
HPMHooks.source.mob.item_dropratio_adjust(nameid, mob_id, rate_adjust);
}
- if( HPMHooks.count.HP_mob_item_dropratio_adjust_post ) {
+ if (HPMHooks.count.HP_mob_item_dropratio_adjust_post > 0) {
void (*postHookFunc) (int nameid, int mob_id, int *rate_adjust);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_item_dropratio_adjust_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_item_dropratio_adjust_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_item_dropratio_adjust_post[hIndex].func;
postHookFunc(nameid, mob_id, rate_adjust);
}
@@ -46781,14 +52610,14 @@ void HP_mob_item_dropratio_adjust(int nameid, int mob_id, int *rate_adjust) {
}
void HP_mob_readdb(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_mob_readdb_pre ) {
+ if (HPMHooks.count.HP_mob_readdb_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_readdb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_readdb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_readdb_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -46796,9 +52625,9 @@ void HP_mob_readdb(void) {
{
HPMHooks.source.mob.readdb();
}
- if( HPMHooks.count.HP_mob_readdb_post ) {
+ if (HPMHooks.count.HP_mob_readdb_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_readdb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_readdb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_readdb_post[hIndex].func;
postHookFunc();
}
@@ -46808,14 +52637,14 @@ void HP_mob_readdb(void) {
bool HP_mob_lookup_const(const struct config_setting_t *it, const char *name, int *value) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_mob_lookup_const_pre ) {
+ if (HPMHooks.count.HP_mob_lookup_const_pre > 0) {
bool (*preHookFunc) (const struct config_setting_t **it, const char **name, int **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_lookup_const_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_lookup_const_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_lookup_const_pre[hIndex].func;
retVal___ = preHookFunc(&it, &name, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -46823,9 +52652,9 @@ bool HP_mob_lookup_const(const struct config_setting_t *it, const char *name, in
{
retVal___ = HPMHooks.source.mob.lookup_const(it, name, value);
}
- if( HPMHooks.count.HP_mob_lookup_const_post ) {
+ if (HPMHooks.count.HP_mob_lookup_const_post > 0) {
bool (*postHookFunc) (bool retVal___, const struct config_setting_t *it, const char *name, int *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_lookup_const_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_lookup_const_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_lookup_const_post[hIndex].func;
retVal___ = postHookFunc(retVal___, it, name, value);
}
@@ -46835,14 +52664,14 @@ bool HP_mob_lookup_const(const struct config_setting_t *it, const char *name, in
bool HP_mob_get_const(const struct config_setting_t *it, int *value) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_mob_get_const_pre ) {
+ if (HPMHooks.count.HP_mob_get_const_pre > 0) {
bool (*preHookFunc) (const struct config_setting_t **it, int **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_get_const_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_get_const_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_get_const_pre[hIndex].func;
retVal___ = preHookFunc(&it, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -46850,9 +52679,9 @@ bool HP_mob_get_const(const struct config_setting_t *it, int *value) {
{
retVal___ = HPMHooks.source.mob.get_const(it, value);
}
- if( HPMHooks.count.HP_mob_get_const_post ) {
+ if (HPMHooks.count.HP_mob_get_const_post > 0) {
bool (*postHookFunc) (bool retVal___, const struct config_setting_t *it, int *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_get_const_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_get_const_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_get_const_post[hIndex].func;
retVal___ = postHookFunc(retVal___, it, value);
}
@@ -46862,14 +52691,14 @@ bool HP_mob_get_const(const struct config_setting_t *it, int *value) {
int HP_mob_db_validate_entry(struct mob_db *entry, int n, const char *source) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_db_validate_entry_pre ) {
+ if (HPMHooks.count.HP_mob_db_validate_entry_pre > 0) {
int (*preHookFunc) (struct mob_db **entry, int *n, const char **source);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_db_validate_entry_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_db_validate_entry_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_db_validate_entry_pre[hIndex].func;
retVal___ = preHookFunc(&entry, &n, &source);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -46877,9 +52706,9 @@ int HP_mob_db_validate_entry(struct mob_db *entry, int n, const char *source) {
{
retVal___ = HPMHooks.source.mob.db_validate_entry(entry, n, source);
}
- if( HPMHooks.count.HP_mob_db_validate_entry_post ) {
+ if (HPMHooks.count.HP_mob_db_validate_entry_post > 0) {
int (*postHookFunc) (int retVal___, struct mob_db *entry, int n, const char *source);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_db_validate_entry_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_db_validate_entry_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_db_validate_entry_post[hIndex].func;
retVal___ = postHookFunc(retVal___, entry, n, source);
}
@@ -46889,14 +52718,14 @@ int HP_mob_db_validate_entry(struct mob_db *entry, int n, const char *source) {
int HP_mob_read_libconfig(const char *filename, bool ignore_missing) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_read_libconfig_pre ) {
+ if (HPMHooks.count.HP_mob_read_libconfig_pre > 0) {
int (*preHookFunc) (const char **filename, bool *ignore_missing);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_read_libconfig_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_read_libconfig_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_read_libconfig_pre[hIndex].func;
retVal___ = preHookFunc(&filename, &ignore_missing);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -46904,9 +52733,9 @@ int HP_mob_read_libconfig(const char *filename, bool ignore_missing) {
{
retVal___ = HPMHooks.source.mob.read_libconfig(filename, ignore_missing);
}
- if( HPMHooks.count.HP_mob_read_libconfig_post ) {
+ if (HPMHooks.count.HP_mob_read_libconfig_post > 0) {
int (*postHookFunc) (int retVal___, const char *filename, bool ignore_missing);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_read_libconfig_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_read_libconfig_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_read_libconfig_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename, ignore_missing);
}
@@ -46915,14 +52744,14 @@ int HP_mob_read_libconfig(const char *filename, bool ignore_missing) {
}
void HP_mob_read_db_additional_fields(struct mob_db *entry, struct config_setting_t *it, int n, const char *source) {
int hIndex = 0;
- if( HPMHooks.count.HP_mob_read_db_additional_fields_pre ) {
+ if (HPMHooks.count.HP_mob_read_db_additional_fields_pre > 0) {
void (*preHookFunc) (struct mob_db **entry, struct config_setting_t **it, int *n, const char **source);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_read_db_additional_fields_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_read_db_additional_fields_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_read_db_additional_fields_pre[hIndex].func;
preHookFunc(&entry, &it, &n, &source);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -46930,9 +52759,9 @@ void HP_mob_read_db_additional_fields(struct mob_db *entry, struct config_settin
{
HPMHooks.source.mob.read_db_additional_fields(entry, it, n, source);
}
- if( HPMHooks.count.HP_mob_read_db_additional_fields_post ) {
+ if (HPMHooks.count.HP_mob_read_db_additional_fields_post > 0) {
void (*postHookFunc) (struct mob_db *entry, struct config_setting_t *it, int n, const char *source);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_read_db_additional_fields_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_read_db_additional_fields_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_read_db_additional_fields_post[hIndex].func;
postHookFunc(entry, it, n, source);
}
@@ -46942,14 +52771,14 @@ void HP_mob_read_db_additional_fields(struct mob_db *entry, struct config_settin
int HP_mob_read_db_sub(struct config_setting_t *mobt, int id, const char *source) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_read_db_sub_pre ) {
+ if (HPMHooks.count.HP_mob_read_db_sub_pre > 0) {
int (*preHookFunc) (struct config_setting_t **mobt, int *id, const char **source);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_read_db_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_read_db_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_read_db_sub_pre[hIndex].func;
retVal___ = preHookFunc(&mobt, &id, &source);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -46957,9 +52786,9 @@ int HP_mob_read_db_sub(struct config_setting_t *mobt, int id, const char *source
{
retVal___ = HPMHooks.source.mob.read_db_sub(mobt, id, source);
}
- if( HPMHooks.count.HP_mob_read_db_sub_post ) {
+ if (HPMHooks.count.HP_mob_read_db_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *mobt, int id, const char *source);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_read_db_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_read_db_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_read_db_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, mobt, id, source);
}
@@ -46968,14 +52797,14 @@ int HP_mob_read_db_sub(struct config_setting_t *mobt, int id, const char *source
}
void HP_mob_read_db_drops_sub(struct mob_db *entry, struct config_setting_t *t) {
int hIndex = 0;
- if( HPMHooks.count.HP_mob_read_db_drops_sub_pre ) {
+ if (HPMHooks.count.HP_mob_read_db_drops_sub_pre > 0) {
void (*preHookFunc) (struct mob_db **entry, struct config_setting_t **t);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_read_db_drops_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_read_db_drops_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_read_db_drops_sub_pre[hIndex].func;
preHookFunc(&entry, &t);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -46983,9 +52812,9 @@ void HP_mob_read_db_drops_sub(struct mob_db *entry, struct config_setting_t *t)
{
HPMHooks.source.mob.read_db_drops_sub(entry, t);
}
- if( HPMHooks.count.HP_mob_read_db_drops_sub_post ) {
+ if (HPMHooks.count.HP_mob_read_db_drops_sub_post > 0) {
void (*postHookFunc) (struct mob_db *entry, struct config_setting_t *t);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_read_db_drops_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_read_db_drops_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_read_db_drops_sub_post[hIndex].func;
postHookFunc(entry, t);
}
@@ -46994,14 +52823,14 @@ void HP_mob_read_db_drops_sub(struct mob_db *entry, struct config_setting_t *t)
}
void HP_mob_read_db_mvpdrops_sub(struct mob_db *entry, struct config_setting_t *t) {
int hIndex = 0;
- if( HPMHooks.count.HP_mob_read_db_mvpdrops_sub_pre ) {
+ if (HPMHooks.count.HP_mob_read_db_mvpdrops_sub_pre > 0) {
void (*preHookFunc) (struct mob_db **entry, struct config_setting_t **t);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_read_db_mvpdrops_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_read_db_mvpdrops_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_read_db_mvpdrops_sub_pre[hIndex].func;
preHookFunc(&entry, &t);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -47009,9 +52838,9 @@ void HP_mob_read_db_mvpdrops_sub(struct mob_db *entry, struct config_setting_t *
{
HPMHooks.source.mob.read_db_mvpdrops_sub(entry, t);
}
- if( HPMHooks.count.HP_mob_read_db_mvpdrops_sub_post ) {
+ if (HPMHooks.count.HP_mob_read_db_mvpdrops_sub_post > 0) {
void (*postHookFunc) (struct mob_db *entry, struct config_setting_t *t);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_read_db_mvpdrops_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_read_db_mvpdrops_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_read_db_mvpdrops_sub_post[hIndex].func;
postHookFunc(entry, t);
}
@@ -47021,14 +52850,14 @@ void HP_mob_read_db_mvpdrops_sub(struct mob_db *entry, struct config_setting_t *
uint32 HP_mob_read_db_mode_sub(struct mob_db *entry, struct config_setting_t *t) {
int hIndex = 0;
uint32 retVal___ = 0;
- if( HPMHooks.count.HP_mob_read_db_mode_sub_pre ) {
+ if (HPMHooks.count.HP_mob_read_db_mode_sub_pre > 0) {
uint32 (*preHookFunc) (struct mob_db **entry, struct config_setting_t **t);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_read_db_mode_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_read_db_mode_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_read_db_mode_sub_pre[hIndex].func;
retVal___ = preHookFunc(&entry, &t);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -47036,9 +52865,9 @@ uint32 HP_mob_read_db_mode_sub(struct mob_db *entry, struct config_setting_t *t)
{
retVal___ = HPMHooks.source.mob.read_db_mode_sub(entry, t);
}
- if( HPMHooks.count.HP_mob_read_db_mode_sub_post ) {
+ if (HPMHooks.count.HP_mob_read_db_mode_sub_post > 0) {
uint32 (*postHookFunc) (uint32 retVal___, struct mob_db *entry, struct config_setting_t *t);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_read_db_mode_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_read_db_mode_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_read_db_mode_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, entry, t);
}
@@ -47047,14 +52876,14 @@ uint32 HP_mob_read_db_mode_sub(struct mob_db *entry, struct config_setting_t *t)
}
void HP_mob_read_db_stats_sub(struct mob_db *entry, struct config_setting_t *t) {
int hIndex = 0;
- if( HPMHooks.count.HP_mob_read_db_stats_sub_pre ) {
+ if (HPMHooks.count.HP_mob_read_db_stats_sub_pre > 0) {
void (*preHookFunc) (struct mob_db **entry, struct config_setting_t **t);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_read_db_stats_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_read_db_stats_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_read_db_stats_sub_pre[hIndex].func;
preHookFunc(&entry, &t);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -47062,9 +52891,9 @@ void HP_mob_read_db_stats_sub(struct mob_db *entry, struct config_setting_t *t)
{
HPMHooks.source.mob.read_db_stats_sub(entry, t);
}
- if( HPMHooks.count.HP_mob_read_db_stats_sub_post ) {
+ if (HPMHooks.count.HP_mob_read_db_stats_sub_post > 0) {
void (*postHookFunc) (struct mob_db *entry, struct config_setting_t *t);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_read_db_stats_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_read_db_stats_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_read_db_stats_sub_post[hIndex].func;
postHookFunc(entry, t);
}
@@ -47073,14 +52902,14 @@ void HP_mob_read_db_stats_sub(struct mob_db *entry, struct config_setting_t *t)
}
void HP_mob_name_constants(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_mob_name_constants_pre ) {
+ if (HPMHooks.count.HP_mob_name_constants_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_name_constants_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_name_constants_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_name_constants_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -47088,9 +52917,9 @@ void HP_mob_name_constants(void) {
{
HPMHooks.source.mob.name_constants();
}
- if( HPMHooks.count.HP_mob_name_constants_post ) {
+ if (HPMHooks.count.HP_mob_name_constants_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_name_constants_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_name_constants_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_name_constants_post[hIndex].func;
postHookFunc();
}
@@ -47100,14 +52929,14 @@ void HP_mob_name_constants(void) {
bool HP_mob_readdb_mobavail(char *str[], int columns, int current) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_mob_readdb_mobavail_pre ) {
+ if (HPMHooks.count.HP_mob_readdb_mobavail_pre > 0) {
bool (*preHookFunc) (char **str[], int *columns, int *current);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_readdb_mobavail_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_readdb_mobavail_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_readdb_mobavail_pre[hIndex].func;
retVal___ = preHookFunc(&str, &columns, &current);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -47115,9 +52944,9 @@ bool HP_mob_readdb_mobavail(char *str[], int columns, int current) {
{
retVal___ = HPMHooks.source.mob.readdb_mobavail(str, columns, current);
}
- if( HPMHooks.count.HP_mob_readdb_mobavail_post ) {
+ if (HPMHooks.count.HP_mob_readdb_mobavail_post > 0) {
bool (*postHookFunc) (bool retVal___, char *str[], int columns, int current);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_readdb_mobavail_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_readdb_mobavail_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_readdb_mobavail_post[hIndex].func;
retVal___ = postHookFunc(retVal___, str, columns, current);
}
@@ -47127,14 +52956,14 @@ bool HP_mob_readdb_mobavail(char *str[], int columns, int current) {
int HP_mob_read_randommonster(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_mob_read_randommonster_pre ) {
+ if (HPMHooks.count.HP_mob_read_randommonster_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_read_randommonster_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_read_randommonster_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_read_randommonster_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -47142,9 +52971,9 @@ int HP_mob_read_randommonster(void) {
{
retVal___ = HPMHooks.source.mob.read_randommonster();
}
- if( HPMHooks.count.HP_mob_read_randommonster_post ) {
+ if (HPMHooks.count.HP_mob_read_randommonster_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_read_randommonster_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_read_randommonster_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_read_randommonster_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -47154,14 +52983,14 @@ int HP_mob_read_randommonster(void) {
bool HP_mob_parse_row_chatdb(char **str, const char *source, int line, int *last_msg_id) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_mob_parse_row_chatdb_pre ) {
+ if (HPMHooks.count.HP_mob_parse_row_chatdb_pre > 0) {
bool (*preHookFunc) (char ***str, const char **source, int *line, int **last_msg_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_parse_row_chatdb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_parse_row_chatdb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_parse_row_chatdb_pre[hIndex].func;
retVal___ = preHookFunc(&str, &source, &line, &last_msg_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -47169,9 +52998,9 @@ bool HP_mob_parse_row_chatdb(char **str, const char *source, int line, int *last
{
retVal___ = HPMHooks.source.mob.parse_row_chatdb(str, source, line, last_msg_id);
}
- if( HPMHooks.count.HP_mob_parse_row_chatdb_post ) {
+ if (HPMHooks.count.HP_mob_parse_row_chatdb_post > 0) {
bool (*postHookFunc) (bool retVal___, char **str, const char *source, int line, int *last_msg_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_parse_row_chatdb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_parse_row_chatdb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_parse_row_chatdb_post[hIndex].func;
retVal___ = postHookFunc(retVal___, str, source, line, last_msg_id);
}
@@ -47180,14 +53009,14 @@ bool HP_mob_parse_row_chatdb(char **str, const char *source, int line, int *last
}
void HP_mob_readchatdb(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_mob_readchatdb_pre ) {
+ if (HPMHooks.count.HP_mob_readchatdb_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_readchatdb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_readchatdb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_readchatdb_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -47195,52 +53024,25 @@ void HP_mob_readchatdb(void) {
{
HPMHooks.source.mob.readchatdb();
}
- if( HPMHooks.count.HP_mob_readchatdb_post ) {
+ if (HPMHooks.count.HP_mob_readchatdb_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_readchatdb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_readchatdb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_readchatdb_post[hIndex].func;
postHookFunc();
}
}
return;
}
-bool HP_mob_parse_row_mobskilldb(char **str, int columns, int current) {
- int hIndex = 0;
- bool retVal___ = false;
- if( HPMHooks.count.HP_mob_parse_row_mobskilldb_pre ) {
- bool (*preHookFunc) (char ***str, int *columns, int *current);
- *HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_parse_row_mobskilldb_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_mob_parse_row_mobskilldb_pre[hIndex].func;
- retVal___ = preHookFunc(&str, &columns, &current);
- }
- if( *HPMforce_return ) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mob.parse_row_mobskilldb(str, columns, current);
- }
- if( HPMHooks.count.HP_mob_parse_row_mobskilldb_post ) {
- bool (*postHookFunc) (bool retVal___, char **str, int columns, int current);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_parse_row_mobskilldb_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_mob_parse_row_mobskilldb_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, str, columns, current);
- }
- }
- return retVal___;
-}
void HP_mob_readskilldb(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_mob_readskilldb_pre ) {
+ if (HPMHooks.count.HP_mob_readskilldb_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_readskilldb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_readskilldb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_readskilldb_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -47248,9 +53050,9 @@ void HP_mob_readskilldb(void) {
{
HPMHooks.source.mob.readskilldb();
}
- if( HPMHooks.count.HP_mob_readskilldb_post ) {
+ if (HPMHooks.count.HP_mob_readskilldb_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_readskilldb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_readskilldb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_readskilldb_post[hIndex].func;
postHookFunc();
}
@@ -47260,14 +53062,14 @@ void HP_mob_readskilldb(void) {
bool HP_mob_readdb_race2(char *fields[], int columns, int current) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_mob_readdb_race2_pre ) {
+ if (HPMHooks.count.HP_mob_readdb_race2_pre > 0) {
bool (*preHookFunc) (char **fields[], int *columns, int *current);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_readdb_race2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_readdb_race2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_readdb_race2_pre[hIndex].func;
retVal___ = preHookFunc(&fields, &columns, &current);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -47275,9 +53077,9 @@ bool HP_mob_readdb_race2(char *fields[], int columns, int current) {
{
retVal___ = HPMHooks.source.mob.readdb_race2(fields, columns, current);
}
- if( HPMHooks.count.HP_mob_readdb_race2_post ) {
+ if (HPMHooks.count.HP_mob_readdb_race2_post > 0) {
bool (*postHookFunc) (bool retVal___, char *fields[], int columns, int current);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_readdb_race2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_readdb_race2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_readdb_race2_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fields, columns, current);
}
@@ -47287,14 +53089,14 @@ bool HP_mob_readdb_race2(char *fields[], int columns, int current) {
bool HP_mob_readdb_itemratio(char *str[], int columns, int current) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_mob_readdb_itemratio_pre ) {
+ if (HPMHooks.count.HP_mob_readdb_itemratio_pre > 0) {
bool (*preHookFunc) (char **str[], int *columns, int *current);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_readdb_itemratio_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_readdb_itemratio_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_readdb_itemratio_pre[hIndex].func;
retVal___ = preHookFunc(&str, &columns, &current);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -47302,9 +53104,9 @@ bool HP_mob_readdb_itemratio(char *str[], int columns, int current) {
{
retVal___ = HPMHooks.source.mob.readdb_itemratio(str, columns, current);
}
- if( HPMHooks.count.HP_mob_readdb_itemratio_post ) {
+ if (HPMHooks.count.HP_mob_readdb_itemratio_post > 0) {
bool (*postHookFunc) (bool retVal___, char *str[], int columns, int current);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_readdb_itemratio_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_readdb_itemratio_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_readdb_itemratio_post[hIndex].func;
retVal___ = postHookFunc(retVal___, str, columns, current);
}
@@ -47313,14 +53115,14 @@ bool HP_mob_readdb_itemratio(char *str[], int columns, int current) {
}
void HP_mob_load(bool minimal) {
int hIndex = 0;
- if( HPMHooks.count.HP_mob_load_pre ) {
+ if (HPMHooks.count.HP_mob_load_pre > 0) {
void (*preHookFunc) (bool *minimal);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_load_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_load_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_load_pre[hIndex].func;
preHookFunc(&minimal);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -47328,9 +53130,9 @@ void HP_mob_load(bool minimal) {
{
HPMHooks.source.mob.load(minimal);
}
- if( HPMHooks.count.HP_mob_load_post ) {
+ if (HPMHooks.count.HP_mob_load_post > 0) {
void (*postHookFunc) (bool minimal);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_load_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_load_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_load_post[hIndex].func;
postHookFunc(minimal);
}
@@ -47339,14 +53141,14 @@ void HP_mob_load(bool minimal) {
}
void HP_mob_clear_spawninfo(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_mob_clear_spawninfo_pre ) {
+ if (HPMHooks.count.HP_mob_clear_spawninfo_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_clear_spawninfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_clear_spawninfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_clear_spawninfo_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -47354,25 +53156,111 @@ void HP_mob_clear_spawninfo(void) {
{
HPMHooks.source.mob.clear_spawninfo();
}
- if( HPMHooks.count.HP_mob_clear_spawninfo_post ) {
+ if (HPMHooks.count.HP_mob_clear_spawninfo_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_clear_spawninfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_clear_spawninfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_clear_spawninfo_post[hIndex].func;
postHookFunc();
}
}
return;
}
+struct item_drop_ratio* HP_mob_get_item_drop_ratio(int nameid) {
+ int hIndex = 0;
+ struct item_drop_ratio* retVal___ = NULL;
+ if (HPMHooks.count.HP_mob_get_item_drop_ratio_pre > 0) {
+ struct item_drop_ratio* (*preHookFunc) (int *nameid);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_get_item_drop_ratio_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mob_get_item_drop_ratio_pre[hIndex].func;
+ retVal___ = preHookFunc(&nameid);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.mob.get_item_drop_ratio(nameid);
+ }
+ if (HPMHooks.count.HP_mob_get_item_drop_ratio_post > 0) {
+ struct item_drop_ratio* (*postHookFunc) (struct item_drop_ratio* retVal___, int nameid);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_get_item_drop_ratio_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mob_get_item_drop_ratio_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, nameid);
+ }
+ }
+ return retVal___;
+}
+void HP_mob_set_item_drop_ratio(int nameid, struct item_drop_ratio *ratio) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_mob_set_item_drop_ratio_pre > 0) {
+ void (*preHookFunc) (int *nameid, struct item_drop_ratio **ratio);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_set_item_drop_ratio_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mob_set_item_drop_ratio_pre[hIndex].func;
+ preHookFunc(&nameid, &ratio);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.mob.set_item_drop_ratio(nameid, ratio);
+ }
+ if (HPMHooks.count.HP_mob_set_item_drop_ratio_post > 0) {
+ void (*postHookFunc) (int nameid, struct item_drop_ratio *ratio);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_set_item_drop_ratio_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mob_set_item_drop_ratio_post[hIndex].func;
+ postHookFunc(nameid, ratio);
+ }
+ }
+ return;
+}
+int HP_mob_final_ratio_sub(union DBKey key, struct DBData *data, va_list ap) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_mob_final_ratio_sub_pre > 0) {
+ int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_final_ratio_sub_pre; hIndex++) {
+ va_list ap___copy; va_copy(ap___copy, ap);
+ preHookFunc = HPMHooks.list.HP_mob_final_ratio_sub_pre[hIndex].func;
+ retVal___ = preHookFunc(&key, &data, ap___copy);
+ va_end(ap___copy);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ va_list ap___copy; va_copy(ap___copy, ap);
+ retVal___ = HPMHooks.source.mob.final_ratio_sub(key, data, ap___copy);
+ va_end(ap___copy);
+ }
+ if (HPMHooks.count.HP_mob_final_ratio_sub_post > 0) {
+ int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_final_ratio_sub_post; hIndex++) {
+ va_list ap___copy; va_copy(ap___copy, ap);
+ postHookFunc = HPMHooks.list.HP_mob_final_ratio_sub_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, key, data, ap___copy);
+ va_end(ap___copy);
+ }
+ }
+ return retVal___;
+}
void HP_mob_destroy_mob_db(int index) {
int hIndex = 0;
- if( HPMHooks.count.HP_mob_destroy_mob_db_pre ) {
+ if (HPMHooks.count.HP_mob_destroy_mob_db_pre > 0) {
void (*preHookFunc) (int *index);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_destroy_mob_db_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_destroy_mob_db_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_destroy_mob_db_pre[hIndex].func;
preHookFunc(&index);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -47380,27 +53268,108 @@ void HP_mob_destroy_mob_db(int index) {
{
HPMHooks.source.mob.destroy_mob_db(index);
}
- if( HPMHooks.count.HP_mob_destroy_mob_db_post ) {
+ if (HPMHooks.count.HP_mob_destroy_mob_db_post > 0) {
void (*postHookFunc) (int index);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mob_destroy_mob_db_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_destroy_mob_db_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_destroy_mob_db_post[hIndex].func;
postHookFunc(index);
}
}
return;
}
+bool HP_mob_skill_db_libconfig(const char *filename, bool ignore_missing) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_mob_skill_db_libconfig_pre > 0) {
+ bool (*preHookFunc) (const char **filename, bool *ignore_missing);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_skill_db_libconfig_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mob_skill_db_libconfig_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &ignore_missing);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.mob.skill_db_libconfig(filename, ignore_missing);
+ }
+ if (HPMHooks.count.HP_mob_skill_db_libconfig_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *filename, bool ignore_missing);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_skill_db_libconfig_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mob_skill_db_libconfig_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, ignore_missing);
+ }
+ }
+ return retVal___;
+}
+bool HP_mob_skill_db_libconfig_sub(struct config_setting_t *it, int n) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_mob_skill_db_libconfig_sub_pre > 0) {
+ bool (*preHookFunc) (struct config_setting_t **it, int *n);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_skill_db_libconfig_sub_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mob_skill_db_libconfig_sub_pre[hIndex].func;
+ retVal___ = preHookFunc(&it, &n);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.mob.skill_db_libconfig_sub(it, n);
+ }
+ if (HPMHooks.count.HP_mob_skill_db_libconfig_sub_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct config_setting_t *it, int n);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_skill_db_libconfig_sub_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mob_skill_db_libconfig_sub_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, it, n);
+ }
+ }
+ return retVal___;
+}
+bool HP_mob_skill_db_libconfig_sub_skill(struct config_setting_t *it, int n, int mob_id) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_mob_skill_db_libconfig_sub_skill_pre > 0) {
+ bool (*preHookFunc) (struct config_setting_t **it, int *n, int *mob_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_skill_db_libconfig_sub_skill_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mob_skill_db_libconfig_sub_skill_pre[hIndex].func;
+ retVal___ = preHookFunc(&it, &n, &mob_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.mob.skill_db_libconfig_sub_skill(it, n, mob_id);
+ }
+ if (HPMHooks.count.HP_mob_skill_db_libconfig_sub_skill_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct config_setting_t *it, int n, int mob_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_skill_db_libconfig_sub_skill_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mob_skill_db_libconfig_sub_skill_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, it, n, mob_id);
+ }
+ }
+ return retVal___;
+}
/* mutex_interface */
struct mutex_data* HP_mutex_create(void) {
int hIndex = 0;
struct mutex_data* retVal___ = NULL;
- if( HPMHooks.count.HP_mutex_create_pre ) {
+ if (HPMHooks.count.HP_mutex_create_pre > 0) {
struct mutex_data* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mutex_create_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -47408,9 +53377,9 @@ struct mutex_data* HP_mutex_create(void) {
{
retVal___ = HPMHooks.source.mutex.create();
}
- if( HPMHooks.count.HP_mutex_create_post ) {
+ if (HPMHooks.count.HP_mutex_create_post > 0) {
struct mutex_data* (*postHookFunc) (struct mutex_data* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mutex_create_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -47419,14 +53388,14 @@ struct mutex_data* HP_mutex_create(void) {
}
void HP_mutex_destroy(struct mutex_data *m) {
int hIndex = 0;
- if( HPMHooks.count.HP_mutex_destroy_pre ) {
+ if (HPMHooks.count.HP_mutex_destroy_pre > 0) {
void (*preHookFunc) (struct mutex_data **m);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_destroy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_destroy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mutex_destroy_pre[hIndex].func;
preHookFunc(&m);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -47434,9 +53403,9 @@ void HP_mutex_destroy(struct mutex_data *m) {
{
HPMHooks.source.mutex.destroy(m);
}
- if( HPMHooks.count.HP_mutex_destroy_post ) {
+ if (HPMHooks.count.HP_mutex_destroy_post > 0) {
void (*postHookFunc) (struct mutex_data *m);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_destroy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_destroy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mutex_destroy_post[hIndex].func;
postHookFunc(m);
}
@@ -47445,14 +53414,14 @@ void HP_mutex_destroy(struct mutex_data *m) {
}
void HP_mutex_lock(struct mutex_data *m) {
int hIndex = 0;
- if( HPMHooks.count.HP_mutex_lock_pre ) {
+ if (HPMHooks.count.HP_mutex_lock_pre > 0) {
void (*preHookFunc) (struct mutex_data **m);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_lock_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_lock_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mutex_lock_pre[hIndex].func;
preHookFunc(&m);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -47460,9 +53429,9 @@ void HP_mutex_lock(struct mutex_data *m) {
{
HPMHooks.source.mutex.lock(m);
}
- if( HPMHooks.count.HP_mutex_lock_post ) {
+ if (HPMHooks.count.HP_mutex_lock_post > 0) {
void (*postHookFunc) (struct mutex_data *m);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_lock_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_lock_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mutex_lock_post[hIndex].func;
postHookFunc(m);
}
@@ -47472,14 +53441,14 @@ void HP_mutex_lock(struct mutex_data *m) {
bool HP_mutex_trylock(struct mutex_data *m) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_mutex_trylock_pre ) {
+ if (HPMHooks.count.HP_mutex_trylock_pre > 0) {
bool (*preHookFunc) (struct mutex_data **m);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_trylock_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_trylock_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mutex_trylock_pre[hIndex].func;
retVal___ = preHookFunc(&m);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -47487,9 +53456,9 @@ bool HP_mutex_trylock(struct mutex_data *m) {
{
retVal___ = HPMHooks.source.mutex.trylock(m);
}
- if( HPMHooks.count.HP_mutex_trylock_post ) {
+ if (HPMHooks.count.HP_mutex_trylock_post > 0) {
bool (*postHookFunc) (bool retVal___, struct mutex_data *m);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_trylock_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_trylock_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mutex_trylock_post[hIndex].func;
retVal___ = postHookFunc(retVal___, m);
}
@@ -47498,14 +53467,14 @@ bool HP_mutex_trylock(struct mutex_data *m) {
}
void HP_mutex_unlock(struct mutex_data *m) {
int hIndex = 0;
- if( HPMHooks.count.HP_mutex_unlock_pre ) {
+ if (HPMHooks.count.HP_mutex_unlock_pre > 0) {
void (*preHookFunc) (struct mutex_data **m);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_unlock_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_unlock_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mutex_unlock_pre[hIndex].func;
preHookFunc(&m);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -47513,9 +53482,9 @@ void HP_mutex_unlock(struct mutex_data *m) {
{
HPMHooks.source.mutex.unlock(m);
}
- if( HPMHooks.count.HP_mutex_unlock_post ) {
+ if (HPMHooks.count.HP_mutex_unlock_post > 0) {
void (*postHookFunc) (struct mutex_data *m);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_unlock_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_unlock_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mutex_unlock_post[hIndex].func;
postHookFunc(m);
}
@@ -47525,14 +53494,14 @@ void HP_mutex_unlock(struct mutex_data *m) {
struct cond_data* HP_mutex_cond_create(void) {
int hIndex = 0;
struct cond_data* retVal___ = NULL;
- if( HPMHooks.count.HP_mutex_cond_create_pre ) {
+ if (HPMHooks.count.HP_mutex_cond_create_pre > 0) {
struct cond_data* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mutex_cond_create_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -47540,9 +53509,9 @@ struct cond_data* HP_mutex_cond_create(void) {
{
retVal___ = HPMHooks.source.mutex.cond_create();
}
- if( HPMHooks.count.HP_mutex_cond_create_post ) {
+ if (HPMHooks.count.HP_mutex_cond_create_post > 0) {
struct cond_data* (*postHookFunc) (struct cond_data* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mutex_cond_create_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -47551,14 +53520,14 @@ struct cond_data* HP_mutex_cond_create(void) {
}
void HP_mutex_cond_destroy(struct cond_data *c) {
int hIndex = 0;
- if( HPMHooks.count.HP_mutex_cond_destroy_pre ) {
+ if (HPMHooks.count.HP_mutex_cond_destroy_pre > 0) {
void (*preHookFunc) (struct cond_data **c);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_destroy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_destroy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mutex_cond_destroy_pre[hIndex].func;
preHookFunc(&c);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -47566,9 +53535,9 @@ void HP_mutex_cond_destroy(struct cond_data *c) {
{
HPMHooks.source.mutex.cond_destroy(c);
}
- if( HPMHooks.count.HP_mutex_cond_destroy_post ) {
+ if (HPMHooks.count.HP_mutex_cond_destroy_post > 0) {
void (*postHookFunc) (struct cond_data *c);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_destroy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_destroy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mutex_cond_destroy_post[hIndex].func;
postHookFunc(c);
}
@@ -47577,14 +53546,14 @@ void HP_mutex_cond_destroy(struct cond_data *c) {
}
void HP_mutex_cond_wait(struct cond_data *c, struct mutex_data *m, sysint timeout_ticks) {
int hIndex = 0;
- if( HPMHooks.count.HP_mutex_cond_wait_pre ) {
+ if (HPMHooks.count.HP_mutex_cond_wait_pre > 0) {
void (*preHookFunc) (struct cond_data **c, struct mutex_data **m, sysint *timeout_ticks);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_wait_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_wait_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mutex_cond_wait_pre[hIndex].func;
preHookFunc(&c, &m, &timeout_ticks);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -47592,9 +53561,9 @@ void HP_mutex_cond_wait(struct cond_data *c, struct mutex_data *m, sysint timeou
{
HPMHooks.source.mutex.cond_wait(c, m, timeout_ticks);
}
- if( HPMHooks.count.HP_mutex_cond_wait_post ) {
+ if (HPMHooks.count.HP_mutex_cond_wait_post > 0) {
void (*postHookFunc) (struct cond_data *c, struct mutex_data *m, sysint timeout_ticks);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_wait_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_wait_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mutex_cond_wait_post[hIndex].func;
postHookFunc(c, m, timeout_ticks);
}
@@ -47603,14 +53572,14 @@ void HP_mutex_cond_wait(struct cond_data *c, struct mutex_data *m, sysint timeou
}
void HP_mutex_cond_signal(struct cond_data *c) {
int hIndex = 0;
- if( HPMHooks.count.HP_mutex_cond_signal_pre ) {
+ if (HPMHooks.count.HP_mutex_cond_signal_pre > 0) {
void (*preHookFunc) (struct cond_data **c);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_signal_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_signal_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mutex_cond_signal_pre[hIndex].func;
preHookFunc(&c);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -47618,9 +53587,9 @@ void HP_mutex_cond_signal(struct cond_data *c) {
{
HPMHooks.source.mutex.cond_signal(c);
}
- if( HPMHooks.count.HP_mutex_cond_signal_post ) {
+ if (HPMHooks.count.HP_mutex_cond_signal_post > 0) {
void (*postHookFunc) (struct cond_data *c);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_signal_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_signal_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mutex_cond_signal_post[hIndex].func;
postHookFunc(c);
}
@@ -47629,14 +53598,14 @@ void HP_mutex_cond_signal(struct cond_data *c) {
}
void HP_mutex_cond_broadcast(struct cond_data *c) {
int hIndex = 0;
- if( HPMHooks.count.HP_mutex_cond_broadcast_pre ) {
+ if (HPMHooks.count.HP_mutex_cond_broadcast_pre > 0) {
void (*preHookFunc) (struct cond_data **c);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_broadcast_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_broadcast_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mutex_cond_broadcast_pre[hIndex].func;
preHookFunc(&c);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -47644,9 +53613,9 @@ void HP_mutex_cond_broadcast(struct cond_data *c) {
{
HPMHooks.source.mutex.cond_broadcast(c);
}
- if( HPMHooks.count.HP_mutex_cond_broadcast_post ) {
+ if (HPMHooks.count.HP_mutex_cond_broadcast_post > 0) {
void (*postHookFunc) (struct cond_data *c);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_broadcast_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mutex_cond_broadcast_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mutex_cond_broadcast_post[hIndex].func;
postHookFunc(c);
}
@@ -47657,16 +53626,16 @@ void HP_mutex_cond_broadcast(struct cond_data *c) {
int HP_npc_chat_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_chat_sub_pre ) {
+ if (HPMHooks.count.HP_npc_chat_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_npc_chat_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -47676,9 +53645,9 @@ int HP_npc_chat_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.npc_chat.sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_npc_chat_sub_post ) {
+ if (HPMHooks.count.HP_npc_chat_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_npc_chat_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -47689,14 +53658,14 @@ int HP_npc_chat_sub(struct block_list *bl, va_list ap) {
}
void HP_npc_chat_finalize(struct npc_data *nd) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_chat_finalize_pre ) {
+ if (HPMHooks.count.HP_npc_chat_finalize_pre > 0) {
void (*preHookFunc) (struct npc_data **nd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_finalize_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_finalize_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_chat_finalize_pre[hIndex].func;
preHookFunc(&nd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -47704,9 +53673,9 @@ void HP_npc_chat_finalize(struct npc_data *nd) {
{
HPMHooks.source.npc_chat.finalize(nd);
}
- if( HPMHooks.count.HP_npc_chat_finalize_post ) {
+ if (HPMHooks.count.HP_npc_chat_finalize_post > 0) {
void (*postHookFunc) (struct npc_data *nd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_finalize_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_finalize_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_chat_finalize_post[hIndex].func;
postHookFunc(nd);
}
@@ -47715,14 +53684,14 @@ void HP_npc_chat_finalize(struct npc_data *nd) {
}
void HP_npc_chat_def_pattern(struct npc_data *nd, int setid, const char *pattern, const char *label) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_chat_def_pattern_pre ) {
+ if (HPMHooks.count.HP_npc_chat_def_pattern_pre > 0) {
void (*preHookFunc) (struct npc_data **nd, int *setid, const char **pattern, const char **label);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_def_pattern_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_def_pattern_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_chat_def_pattern_pre[hIndex].func;
preHookFunc(&nd, &setid, &pattern, &label);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -47730,9 +53699,9 @@ void HP_npc_chat_def_pattern(struct npc_data *nd, int setid, const char *pattern
{
HPMHooks.source.npc_chat.def_pattern(nd, setid, pattern, label);
}
- if( HPMHooks.count.HP_npc_chat_def_pattern_post ) {
+ if (HPMHooks.count.HP_npc_chat_def_pattern_post > 0) {
void (*postHookFunc) (struct npc_data *nd, int setid, const char *pattern, const char *label);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_def_pattern_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_def_pattern_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_chat_def_pattern_post[hIndex].func;
postHookFunc(nd, setid, pattern, label);
}
@@ -47742,14 +53711,14 @@ void HP_npc_chat_def_pattern(struct npc_data *nd, int setid, const char *pattern
struct pcrematch_entry* HP_npc_chat_create_pcrematch_entry(struct pcrematch_set *set) {
int hIndex = 0;
struct pcrematch_entry* retVal___ = NULL;
- if( HPMHooks.count.HP_npc_chat_create_pcrematch_entry_pre ) {
+ if (HPMHooks.count.HP_npc_chat_create_pcrematch_entry_pre > 0) {
struct pcrematch_entry* (*preHookFunc) (struct pcrematch_set **set);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_create_pcrematch_entry_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_create_pcrematch_entry_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_chat_create_pcrematch_entry_pre[hIndex].func;
retVal___ = preHookFunc(&set);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -47757,9 +53726,9 @@ struct pcrematch_entry* HP_npc_chat_create_pcrematch_entry(struct pcrematch_set
{
retVal___ = HPMHooks.source.npc_chat.create_pcrematch_entry(set);
}
- if( HPMHooks.count.HP_npc_chat_create_pcrematch_entry_post ) {
+ if (HPMHooks.count.HP_npc_chat_create_pcrematch_entry_post > 0) {
struct pcrematch_entry* (*postHookFunc) (struct pcrematch_entry* retVal___, struct pcrematch_set *set);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_create_pcrematch_entry_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_create_pcrematch_entry_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_chat_create_pcrematch_entry_post[hIndex].func;
retVal___ = postHookFunc(retVal___, set);
}
@@ -47768,14 +53737,14 @@ struct pcrematch_entry* HP_npc_chat_create_pcrematch_entry(struct pcrematch_set
}
void HP_npc_chat_delete_pcreset(struct npc_data *nd, int setid) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_chat_delete_pcreset_pre ) {
+ if (HPMHooks.count.HP_npc_chat_delete_pcreset_pre > 0) {
void (*preHookFunc) (struct npc_data **nd, int *setid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_delete_pcreset_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_delete_pcreset_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_chat_delete_pcreset_pre[hIndex].func;
preHookFunc(&nd, &setid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -47783,9 +53752,9 @@ void HP_npc_chat_delete_pcreset(struct npc_data *nd, int setid) {
{
HPMHooks.source.npc_chat.delete_pcreset(nd, setid);
}
- if( HPMHooks.count.HP_npc_chat_delete_pcreset_post ) {
+ if (HPMHooks.count.HP_npc_chat_delete_pcreset_post > 0) {
void (*postHookFunc) (struct npc_data *nd, int setid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_delete_pcreset_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_delete_pcreset_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_chat_delete_pcreset_post[hIndex].func;
postHookFunc(nd, setid);
}
@@ -47794,14 +53763,14 @@ void HP_npc_chat_delete_pcreset(struct npc_data *nd, int setid) {
}
void HP_npc_chat_deactivate_pcreset(struct npc_data *nd, int setid) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_chat_deactivate_pcreset_pre ) {
+ if (HPMHooks.count.HP_npc_chat_deactivate_pcreset_pre > 0) {
void (*preHookFunc) (struct npc_data **nd, int *setid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_deactivate_pcreset_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_deactivate_pcreset_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_chat_deactivate_pcreset_pre[hIndex].func;
preHookFunc(&nd, &setid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -47809,9 +53778,9 @@ void HP_npc_chat_deactivate_pcreset(struct npc_data *nd, int setid) {
{
HPMHooks.source.npc_chat.deactivate_pcreset(nd, setid);
}
- if( HPMHooks.count.HP_npc_chat_deactivate_pcreset_post ) {
+ if (HPMHooks.count.HP_npc_chat_deactivate_pcreset_post > 0) {
void (*postHookFunc) (struct npc_data *nd, int setid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_deactivate_pcreset_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_deactivate_pcreset_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_chat_deactivate_pcreset_post[hIndex].func;
postHookFunc(nd, setid);
}
@@ -47820,14 +53789,14 @@ void HP_npc_chat_deactivate_pcreset(struct npc_data *nd, int setid) {
}
void HP_npc_chat_activate_pcreset(struct npc_data *nd, int setid) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_chat_activate_pcreset_pre ) {
+ if (HPMHooks.count.HP_npc_chat_activate_pcreset_pre > 0) {
void (*preHookFunc) (struct npc_data **nd, int *setid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_activate_pcreset_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_activate_pcreset_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_chat_activate_pcreset_pre[hIndex].func;
preHookFunc(&nd, &setid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -47835,9 +53804,9 @@ void HP_npc_chat_activate_pcreset(struct npc_data *nd, int setid) {
{
HPMHooks.source.npc_chat.activate_pcreset(nd, setid);
}
- if( HPMHooks.count.HP_npc_chat_activate_pcreset_post ) {
+ if (HPMHooks.count.HP_npc_chat_activate_pcreset_post > 0) {
void (*postHookFunc) (struct npc_data *nd, int setid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_activate_pcreset_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_activate_pcreset_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_chat_activate_pcreset_post[hIndex].func;
postHookFunc(nd, setid);
}
@@ -47847,14 +53816,14 @@ void HP_npc_chat_activate_pcreset(struct npc_data *nd, int setid) {
struct pcrematch_set* HP_npc_chat_lookup_pcreset(struct npc_data *nd, int setid) {
int hIndex = 0;
struct pcrematch_set* retVal___ = NULL;
- if( HPMHooks.count.HP_npc_chat_lookup_pcreset_pre ) {
+ if (HPMHooks.count.HP_npc_chat_lookup_pcreset_pre > 0) {
struct pcrematch_set* (*preHookFunc) (struct npc_data **nd, int *setid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_lookup_pcreset_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_lookup_pcreset_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_chat_lookup_pcreset_pre[hIndex].func;
retVal___ = preHookFunc(&nd, &setid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -47862,9 +53831,9 @@ struct pcrematch_set* HP_npc_chat_lookup_pcreset(struct npc_data *nd, int setid)
{
retVal___ = HPMHooks.source.npc_chat.lookup_pcreset(nd, setid);
}
- if( HPMHooks.count.HP_npc_chat_lookup_pcreset_post ) {
+ if (HPMHooks.count.HP_npc_chat_lookup_pcreset_post > 0) {
struct pcrematch_set* (*postHookFunc) (struct pcrematch_set* retVal___, struct npc_data *nd, int setid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_lookup_pcreset_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_lookup_pcreset_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_chat_lookup_pcreset_post[hIndex].func;
retVal___ = postHookFunc(retVal___, nd, setid);
}
@@ -47873,14 +53842,14 @@ struct pcrematch_set* HP_npc_chat_lookup_pcreset(struct npc_data *nd, int setid)
}
void HP_npc_chat_finalize_pcrematch_entry(struct pcrematch_entry *e) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_chat_finalize_pcrematch_entry_pre ) {
+ if (HPMHooks.count.HP_npc_chat_finalize_pcrematch_entry_pre > 0) {
void (*preHookFunc) (struct pcrematch_entry **e);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_finalize_pcrematch_entry_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_finalize_pcrematch_entry_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_chat_finalize_pcrematch_entry_pre[hIndex].func;
preHookFunc(&e);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -47888,9 +53857,9 @@ void HP_npc_chat_finalize_pcrematch_entry(struct pcrematch_entry *e) {
{
HPMHooks.source.npc_chat.finalize_pcrematch_entry(e);
}
- if( HPMHooks.count.HP_npc_chat_finalize_pcrematch_entry_post ) {
+ if (HPMHooks.count.HP_npc_chat_finalize_pcrematch_entry_post > 0) {
void (*postHookFunc) (struct pcrematch_entry *e);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_finalize_pcrematch_entry_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_chat_finalize_pcrematch_entry_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_chat_finalize_pcrematch_entry_post[hIndex].func;
postHookFunc(e);
}
@@ -47901,14 +53870,14 @@ void HP_npc_chat_finalize_pcrematch_entry(struct pcrematch_entry *e) {
int HP_npc_init(bool minimal) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_init_pre ) {
+ if (HPMHooks.count.HP_npc_init_pre > 0) {
int (*preHookFunc) (bool *minimal);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_init_pre[hIndex].func;
retVal___ = preHookFunc(&minimal);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -47916,9 +53885,9 @@ int HP_npc_init(bool minimal) {
{
retVal___ = HPMHooks.source.npc.init(minimal);
}
- if( HPMHooks.count.HP_npc_init_post ) {
+ if (HPMHooks.count.HP_npc_init_post > 0) {
int (*postHookFunc) (int retVal___, bool minimal);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_init_post[hIndex].func;
retVal___ = postHookFunc(retVal___, minimal);
}
@@ -47928,14 +53897,14 @@ int HP_npc_init(bool minimal) {
int HP_npc_final(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_final_pre ) {
+ if (HPMHooks.count.HP_npc_final_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_final_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -47943,9 +53912,9 @@ int HP_npc_final(void) {
{
retVal___ = HPMHooks.source.npc.final();
}
- if( HPMHooks.count.HP_npc_final_post ) {
+ if (HPMHooks.count.HP_npc_final_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_final_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -47955,14 +53924,14 @@ int HP_npc_final(void) {
int HP_npc_get_new_npc_id(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_get_new_npc_id_pre ) {
+ if (HPMHooks.count.HP_npc_get_new_npc_id_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_get_new_npc_id_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_get_new_npc_id_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_get_new_npc_id_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -47970,9 +53939,9 @@ int HP_npc_get_new_npc_id(void) {
{
retVal___ = HPMHooks.source.npc.get_new_npc_id();
}
- if( HPMHooks.count.HP_npc_get_new_npc_id_post ) {
+ if (HPMHooks.count.HP_npc_get_new_npc_id_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_get_new_npc_id_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_get_new_npc_id_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_get_new_npc_id_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -47982,14 +53951,14 @@ int HP_npc_get_new_npc_id(void) {
struct view_data* HP_npc_get_viewdata(int class_) {
int hIndex = 0;
struct view_data* retVal___ = NULL;
- if( HPMHooks.count.HP_npc_get_viewdata_pre ) {
+ if (HPMHooks.count.HP_npc_get_viewdata_pre > 0) {
struct view_data* (*preHookFunc) (int *class_);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_get_viewdata_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_get_viewdata_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_get_viewdata_pre[hIndex].func;
retVal___ = preHookFunc(&class_);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -47997,9 +53966,9 @@ struct view_data* HP_npc_get_viewdata(int class_) {
{
retVal___ = HPMHooks.source.npc.get_viewdata(class_);
}
- if( HPMHooks.count.HP_npc_get_viewdata_post ) {
+ if (HPMHooks.count.HP_npc_get_viewdata_post > 0) {
struct view_data* (*postHookFunc) (struct view_data* retVal___, int class_);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_get_viewdata_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_get_viewdata_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_get_viewdata_post[hIndex].func;
retVal___ = postHookFunc(retVal___, class_);
}
@@ -48009,16 +53978,16 @@ struct view_data* HP_npc_get_viewdata(int class_) {
int HP_npc_isnear_sub(struct block_list *bl, va_list args) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_isnear_sub_pre ) {
+ if (HPMHooks.count.HP_npc_isnear_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_isnear_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_isnear_sub_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_npc_isnear_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -48028,9 +53997,9 @@ int HP_npc_isnear_sub(struct block_list *bl, va_list args) {
retVal___ = HPMHooks.source.npc.isnear_sub(bl, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_npc_isnear_sub_post ) {
+ if (HPMHooks.count.HP_npc_isnear_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_isnear_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_isnear_sub_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_npc_isnear_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, args___copy);
@@ -48042,14 +54011,14 @@ int HP_npc_isnear_sub(struct block_list *bl, va_list args) {
bool HP_npc_isnear(struct block_list *bl) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_npc_isnear_pre ) {
+ if (HPMHooks.count.HP_npc_isnear_pre > 0) {
bool (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_isnear_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_isnear_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_isnear_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -48057,9 +54026,9 @@ bool HP_npc_isnear(struct block_list *bl) {
{
retVal___ = HPMHooks.source.npc.isnear(bl);
}
- if( HPMHooks.count.HP_npc_isnear_post ) {
+ if (HPMHooks.count.HP_npc_isnear_post > 0) {
bool (*postHookFunc) (bool retVal___, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_isnear_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_isnear_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_isnear_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -48069,14 +54038,14 @@ bool HP_npc_isnear(struct block_list *bl) {
int HP_npc_ontouch_event(struct map_session_data *sd, struct npc_data *nd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_ontouch_event_pre ) {
+ if (HPMHooks.count.HP_npc_ontouch_event_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct npc_data **nd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_ontouch_event_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_ontouch_event_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_ontouch_event_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &nd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -48084,9 +54053,9 @@ int HP_npc_ontouch_event(struct map_session_data *sd, struct npc_data *nd) {
{
retVal___ = HPMHooks.source.npc.ontouch_event(sd, nd);
}
- if( HPMHooks.count.HP_npc_ontouch_event_post ) {
+ if (HPMHooks.count.HP_npc_ontouch_event_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct npc_data *nd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_ontouch_event_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_ontouch_event_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_ontouch_event_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, nd);
}
@@ -48096,14 +54065,14 @@ int HP_npc_ontouch_event(struct map_session_data *sd, struct npc_data *nd) {
int HP_npc_ontouch2_event(struct map_session_data *sd, struct npc_data *nd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_ontouch2_event_pre ) {
+ if (HPMHooks.count.HP_npc_ontouch2_event_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct npc_data **nd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_ontouch2_event_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_ontouch2_event_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_ontouch2_event_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &nd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -48111,9 +54080,9 @@ int HP_npc_ontouch2_event(struct map_session_data *sd, struct npc_data *nd) {
{
retVal___ = HPMHooks.source.npc.ontouch2_event(sd, nd);
}
- if( HPMHooks.count.HP_npc_ontouch2_event_post ) {
+ if (HPMHooks.count.HP_npc_ontouch2_event_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct npc_data *nd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_ontouch2_event_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_ontouch2_event_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_ontouch2_event_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, nd);
}
@@ -48123,14 +54092,14 @@ int HP_npc_ontouch2_event(struct map_session_data *sd, struct npc_data *nd) {
int HP_npc_onuntouch_event(struct map_session_data *sd, struct npc_data *nd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_onuntouch_event_pre ) {
+ if (HPMHooks.count.HP_npc_onuntouch_event_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct npc_data **nd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_onuntouch_event_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_onuntouch_event_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_onuntouch_event_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &nd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -48138,9 +54107,9 @@ int HP_npc_onuntouch_event(struct map_session_data *sd, struct npc_data *nd) {
{
retVal___ = HPMHooks.source.npc.onuntouch_event(sd, nd);
}
- if( HPMHooks.count.HP_npc_onuntouch_event_post ) {
+ if (HPMHooks.count.HP_npc_onuntouch_event_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct npc_data *nd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_onuntouch_event_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_onuntouch_event_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_onuntouch_event_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, nd);
}
@@ -48150,16 +54119,16 @@ int HP_npc_onuntouch_event(struct map_session_data *sd, struct npc_data *nd) {
int HP_npc_enable_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_enable_sub_pre ) {
+ if (HPMHooks.count.HP_npc_enable_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_enable_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_enable_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_npc_enable_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -48169,9 +54138,9 @@ int HP_npc_enable_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.npc.enable_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_npc_enable_sub_post ) {
+ if (HPMHooks.count.HP_npc_enable_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_enable_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_enable_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_npc_enable_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -48183,14 +54152,14 @@ int HP_npc_enable_sub(struct block_list *bl, va_list ap) {
int HP_npc_enable(const char *name, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_enable_pre ) {
+ if (HPMHooks.count.HP_npc_enable_pre > 0) {
int (*preHookFunc) (const char **name, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_enable_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_enable_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_enable_pre[hIndex].func;
retVal___ = preHookFunc(&name, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -48198,9 +54167,9 @@ int HP_npc_enable(const char *name, int flag) {
{
retVal___ = HPMHooks.source.npc.enable(name, flag);
}
- if( HPMHooks.count.HP_npc_enable_post ) {
+ if (HPMHooks.count.HP_npc_enable_post > 0) {
int (*postHookFunc) (int retVal___, const char *name, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_enable_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_enable_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_enable_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name, flag);
}
@@ -48210,14 +54179,14 @@ int HP_npc_enable(const char *name, int flag) {
struct npc_data* HP_npc_name2id(const char *name) {
int hIndex = 0;
struct npc_data* retVal___ = NULL;
- if( HPMHooks.count.HP_npc_name2id_pre ) {
+ if (HPMHooks.count.HP_npc_name2id_pre > 0) {
struct npc_data* (*preHookFunc) (const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_name2id_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_name2id_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_name2id_pre[hIndex].func;
retVal___ = preHookFunc(&name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -48225,9 +54194,9 @@ struct npc_data* HP_npc_name2id(const char *name) {
{
retVal___ = HPMHooks.source.npc.name2id(name);
}
- if( HPMHooks.count.HP_npc_name2id_post ) {
+ if (HPMHooks.count.HP_npc_name2id_post > 0) {
struct npc_data* (*postHookFunc) (struct npc_data* retVal___, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_name2id_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_name2id_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_name2id_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name);
}
@@ -48237,14 +54206,14 @@ struct npc_data* HP_npc_name2id(const char *name) {
int HP_npc_event_dequeue(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_event_dequeue_pre ) {
+ if (HPMHooks.count.HP_npc_event_dequeue_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_dequeue_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_dequeue_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_event_dequeue_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -48252,9 +54221,9 @@ int HP_npc_event_dequeue(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.npc.event_dequeue(sd);
}
- if( HPMHooks.count.HP_npc_event_dequeue_post ) {
+ if (HPMHooks.count.HP_npc_event_dequeue_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_dequeue_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_dequeue_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_event_dequeue_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -48264,16 +54233,16 @@ int HP_npc_event_dequeue(struct map_session_data *sd) {
struct DBData HP_npc_event_export_create(union DBKey key, va_list args) {
int hIndex = 0;
struct DBData retVal___ = { 0 };
- if( HPMHooks.count.HP_npc_event_export_create_pre ) {
+ if (HPMHooks.count.HP_npc_event_export_create_pre > 0) {
struct DBData (*preHookFunc) (union DBKey *key, va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_export_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_export_create_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_npc_event_export_create_pre[hIndex].func;
retVal___ = preHookFunc(&key, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -48283,9 +54252,9 @@ struct DBData HP_npc_event_export_create(union DBKey key, va_list args) {
retVal___ = HPMHooks.source.npc.event_export_create(key, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_npc_event_export_create_post ) {
+ if (HPMHooks.count.HP_npc_event_export_create_post > 0) {
struct DBData (*postHookFunc) (struct DBData retVal___, union DBKey key, va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_export_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_export_create_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_npc_event_export_create_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, args___copy);
@@ -48297,14 +54266,14 @@ struct DBData HP_npc_event_export_create(union DBKey key, va_list args) {
int HP_npc_event_export(struct npc_data *nd, int i) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_event_export_pre ) {
+ if (HPMHooks.count.HP_npc_event_export_pre > 0) {
int (*preHookFunc) (struct npc_data **nd, int *i);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_export_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_export_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_event_export_pre[hIndex].func;
retVal___ = preHookFunc(&nd, &i);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -48312,9 +54281,9 @@ int HP_npc_event_export(struct npc_data *nd, int i) {
{
retVal___ = HPMHooks.source.npc.event_export(nd, i);
}
- if( HPMHooks.count.HP_npc_event_export_post ) {
+ if (HPMHooks.count.HP_npc_event_export_post > 0) {
int (*postHookFunc) (int retVal___, struct npc_data *nd, int i);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_export_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_export_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_event_export_post[hIndex].func;
retVal___ = postHookFunc(retVal___, nd, i);
}
@@ -48324,14 +54293,14 @@ int HP_npc_event_export(struct npc_data *nd, int i) {
int HP_npc_event_sub(struct map_session_data *sd, struct event_data *ev, const char *eventname) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_event_sub_pre ) {
+ if (HPMHooks.count.HP_npc_event_sub_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct event_data **ev, const char **eventname);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_event_sub_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &ev, &eventname);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -48339,9 +54308,9 @@ int HP_npc_event_sub(struct map_session_data *sd, struct event_data *ev, const c
{
retVal___ = HPMHooks.source.npc.event_sub(sd, ev, eventname);
}
- if( HPMHooks.count.HP_npc_event_sub_post ) {
+ if (HPMHooks.count.HP_npc_event_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct event_data *ev, const char *eventname);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_event_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, ev, eventname);
}
@@ -48350,16 +54319,16 @@ int HP_npc_event_sub(struct map_session_data *sd, struct event_data *ev, const c
}
void HP_npc_event_doall_sub(void *key, void *data, va_list ap) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_event_doall_sub_pre ) {
+ if (HPMHooks.count.HP_npc_event_doall_sub_pre > 0) {
void (*preHookFunc) (void **key, void **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_doall_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_doall_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_npc_event_doall_sub_pre[hIndex].func;
preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -48369,9 +54338,9 @@ void HP_npc_event_doall_sub(void *key, void *data, va_list ap) {
HPMHooks.source.npc.event_doall_sub(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_npc_event_doall_sub_post ) {
+ if (HPMHooks.count.HP_npc_event_doall_sub_post > 0) {
void (*postHookFunc) (void *key, void *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_doall_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_doall_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_npc_event_doall_sub_post[hIndex].func;
postHookFunc(key, data, ap___copy);
@@ -48383,14 +54352,14 @@ void HP_npc_event_doall_sub(void *key, void *data, va_list ap) {
int HP_npc_event_do(const char *name) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_event_do_pre ) {
+ if (HPMHooks.count.HP_npc_event_do_pre > 0) {
int (*preHookFunc) (const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_do_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_do_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_event_do_pre[hIndex].func;
retVal___ = preHookFunc(&name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -48398,9 +54367,9 @@ int HP_npc_event_do(const char *name) {
{
retVal___ = HPMHooks.source.npc.event_do(name);
}
- if( HPMHooks.count.HP_npc_event_do_post ) {
+ if (HPMHooks.count.HP_npc_event_do_post > 0) {
int (*postHookFunc) (int retVal___, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_do_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_do_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_event_do_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name);
}
@@ -48410,14 +54379,14 @@ int HP_npc_event_do(const char *name) {
int HP_npc_event_doall_id(const char *name, int rid) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_event_doall_id_pre ) {
+ if (HPMHooks.count.HP_npc_event_doall_id_pre > 0) {
int (*preHookFunc) (const char **name, int *rid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_doall_id_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_doall_id_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_event_doall_id_pre[hIndex].func;
retVal___ = preHookFunc(&name, &rid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -48425,9 +54394,9 @@ int HP_npc_event_doall_id(const char *name, int rid) {
{
retVal___ = HPMHooks.source.npc.event_doall_id(name, rid);
}
- if( HPMHooks.count.HP_npc_event_doall_id_post ) {
+ if (HPMHooks.count.HP_npc_event_doall_id_post > 0) {
int (*postHookFunc) (int retVal___, const char *name, int rid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_doall_id_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_doall_id_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_event_doall_id_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name, rid);
}
@@ -48437,14 +54406,14 @@ int HP_npc_event_doall_id(const char *name, int rid) {
int HP_npc_event_doall(const char *name) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_event_doall_pre ) {
+ if (HPMHooks.count.HP_npc_event_doall_pre > 0) {
int (*preHookFunc) (const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_doall_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_doall_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_event_doall_pre[hIndex].func;
retVal___ = preHookFunc(&name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -48452,9 +54421,9 @@ int HP_npc_event_doall(const char *name) {
{
retVal___ = HPMHooks.source.npc.event_doall(name);
}
- if( HPMHooks.count.HP_npc_event_doall_post ) {
+ if (HPMHooks.count.HP_npc_event_doall_post > 0) {
int (*postHookFunc) (int retVal___, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_doall_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_doall_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_event_doall_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name);
}
@@ -48464,14 +54433,14 @@ int HP_npc_event_doall(const char *name) {
int HP_npc_event_do_clock(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_event_do_clock_pre ) {
+ if (HPMHooks.count.HP_npc_event_do_clock_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_do_clock_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_do_clock_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_event_do_clock_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -48479,9 +54448,9 @@ int HP_npc_event_do_clock(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.npc.event_do_clock(tid, tick, id, data);
}
- if( HPMHooks.count.HP_npc_event_do_clock_post ) {
+ if (HPMHooks.count.HP_npc_event_do_clock_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_do_clock_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_do_clock_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_event_do_clock_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -48490,14 +54459,14 @@ int HP_npc_event_do_clock(int tid, int64 tick, int id, intptr_t data) {
}
void HP_npc_event_do_oninit(bool reload) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_event_do_oninit_pre ) {
+ if (HPMHooks.count.HP_npc_event_do_oninit_pre > 0) {
void (*preHookFunc) (bool *reload);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_do_oninit_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_do_oninit_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_event_do_oninit_pre[hIndex].func;
preHookFunc(&reload);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -48505,9 +54474,9 @@ void HP_npc_event_do_oninit(bool reload) {
{
HPMHooks.source.npc.event_do_oninit(reload);
}
- if( HPMHooks.count.HP_npc_event_do_oninit_post ) {
+ if (HPMHooks.count.HP_npc_event_do_oninit_post > 0) {
void (*postHookFunc) (bool reload);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_do_oninit_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_do_oninit_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_event_do_oninit_post[hIndex].func;
postHookFunc(reload);
}
@@ -48517,14 +54486,14 @@ void HP_npc_event_do_oninit(bool reload) {
int HP_npc_timerevent_export(struct npc_data *nd, int i) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_timerevent_export_pre ) {
+ if (HPMHooks.count.HP_npc_timerevent_export_pre > 0) {
int (*preHookFunc) (struct npc_data **nd, int *i);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_timerevent_export_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_timerevent_export_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_timerevent_export_pre[hIndex].func;
retVal___ = preHookFunc(&nd, &i);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -48532,9 +54501,9 @@ int HP_npc_timerevent_export(struct npc_data *nd, int i) {
{
retVal___ = HPMHooks.source.npc.timerevent_export(nd, i);
}
- if( HPMHooks.count.HP_npc_timerevent_export_post ) {
+ if (HPMHooks.count.HP_npc_timerevent_export_post > 0) {
int (*postHookFunc) (int retVal___, struct npc_data *nd, int i);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_timerevent_export_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_timerevent_export_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_timerevent_export_post[hIndex].func;
retVal___ = postHookFunc(retVal___, nd, i);
}
@@ -48544,14 +54513,14 @@ int HP_npc_timerevent_export(struct npc_data *nd, int i) {
int HP_npc_timerevent(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_timerevent_pre ) {
+ if (HPMHooks.count.HP_npc_timerevent_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_timerevent_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_timerevent_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_timerevent_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -48559,9 +54528,9 @@ int HP_npc_timerevent(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.npc.timerevent(tid, tick, id, data);
}
- if( HPMHooks.count.HP_npc_timerevent_post ) {
+ if (HPMHooks.count.HP_npc_timerevent_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_timerevent_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_timerevent_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_timerevent_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -48571,14 +54540,14 @@ int HP_npc_timerevent(int tid, int64 tick, int id, intptr_t data) {
int HP_npc_timerevent_start(struct npc_data *nd, int rid) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_timerevent_start_pre ) {
+ if (HPMHooks.count.HP_npc_timerevent_start_pre > 0) {
int (*preHookFunc) (struct npc_data **nd, int *rid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_timerevent_start_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_timerevent_start_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_timerevent_start_pre[hIndex].func;
retVal___ = preHookFunc(&nd, &rid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -48586,9 +54555,9 @@ int HP_npc_timerevent_start(struct npc_data *nd, int rid) {
{
retVal___ = HPMHooks.source.npc.timerevent_start(nd, rid);
}
- if( HPMHooks.count.HP_npc_timerevent_start_post ) {
+ if (HPMHooks.count.HP_npc_timerevent_start_post > 0) {
int (*postHookFunc) (int retVal___, struct npc_data *nd, int rid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_timerevent_start_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_timerevent_start_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_timerevent_start_post[hIndex].func;
retVal___ = postHookFunc(retVal___, nd, rid);
}
@@ -48598,14 +54567,14 @@ int HP_npc_timerevent_start(struct npc_data *nd, int rid) {
int HP_npc_timerevent_stop(struct npc_data *nd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_timerevent_stop_pre ) {
+ if (HPMHooks.count.HP_npc_timerevent_stop_pre > 0) {
int (*preHookFunc) (struct npc_data **nd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_timerevent_stop_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_timerevent_stop_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_timerevent_stop_pre[hIndex].func;
retVal___ = preHookFunc(&nd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -48613,9 +54582,9 @@ int HP_npc_timerevent_stop(struct npc_data *nd) {
{
retVal___ = HPMHooks.source.npc.timerevent_stop(nd);
}
- if( HPMHooks.count.HP_npc_timerevent_stop_post ) {
+ if (HPMHooks.count.HP_npc_timerevent_stop_post > 0) {
int (*postHookFunc) (int retVal___, struct npc_data *nd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_timerevent_stop_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_timerevent_stop_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_timerevent_stop_post[hIndex].func;
retVal___ = postHookFunc(retVal___, nd);
}
@@ -48624,14 +54593,14 @@ int HP_npc_timerevent_stop(struct npc_data *nd) {
}
void HP_npc_timerevent_quit(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_timerevent_quit_pre ) {
+ if (HPMHooks.count.HP_npc_timerevent_quit_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_timerevent_quit_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_timerevent_quit_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_timerevent_quit_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -48639,9 +54608,9 @@ void HP_npc_timerevent_quit(struct map_session_data *sd) {
{
HPMHooks.source.npc.timerevent_quit(sd);
}
- if( HPMHooks.count.HP_npc_timerevent_quit_post ) {
+ if (HPMHooks.count.HP_npc_timerevent_quit_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_timerevent_quit_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_timerevent_quit_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_timerevent_quit_post[hIndex].func;
postHookFunc(sd);
}
@@ -48651,14 +54620,14 @@ void HP_npc_timerevent_quit(struct map_session_data *sd) {
int64 HP_npc_gettimerevent_tick(struct npc_data *nd) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_npc_gettimerevent_tick_pre ) {
+ if (HPMHooks.count.HP_npc_gettimerevent_tick_pre > 0) {
int64 (*preHookFunc) (struct npc_data **nd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_gettimerevent_tick_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_gettimerevent_tick_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_gettimerevent_tick_pre[hIndex].func;
retVal___ = preHookFunc(&nd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -48666,9 +54635,9 @@ int64 HP_npc_gettimerevent_tick(struct npc_data *nd) {
{
retVal___ = HPMHooks.source.npc.gettimerevent_tick(nd);
}
- if( HPMHooks.count.HP_npc_gettimerevent_tick_post ) {
+ if (HPMHooks.count.HP_npc_gettimerevent_tick_post > 0) {
int64 (*postHookFunc) (int64 retVal___, struct npc_data *nd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_gettimerevent_tick_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_gettimerevent_tick_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_gettimerevent_tick_post[hIndex].func;
retVal___ = postHookFunc(retVal___, nd);
}
@@ -48678,14 +54647,14 @@ int64 HP_npc_gettimerevent_tick(struct npc_data *nd) {
int HP_npc_settimerevent_tick(struct npc_data *nd, int newtimer) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_settimerevent_tick_pre ) {
+ if (HPMHooks.count.HP_npc_settimerevent_tick_pre > 0) {
int (*preHookFunc) (struct npc_data **nd, int *newtimer);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_settimerevent_tick_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_settimerevent_tick_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_settimerevent_tick_pre[hIndex].func;
retVal___ = preHookFunc(&nd, &newtimer);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -48693,9 +54662,9 @@ int HP_npc_settimerevent_tick(struct npc_data *nd, int newtimer) {
{
retVal___ = HPMHooks.source.npc.settimerevent_tick(nd, newtimer);
}
- if( HPMHooks.count.HP_npc_settimerevent_tick_post ) {
+ if (HPMHooks.count.HP_npc_settimerevent_tick_post > 0) {
int (*postHookFunc) (int retVal___, struct npc_data *nd, int newtimer);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_settimerevent_tick_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_settimerevent_tick_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_settimerevent_tick_post[hIndex].func;
retVal___ = postHookFunc(retVal___, nd, newtimer);
}
@@ -48705,14 +54674,14 @@ int HP_npc_settimerevent_tick(struct npc_data *nd, int newtimer) {
int HP_npc_event(struct map_session_data *sd, const char *eventname, int ontouch) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_event_pre ) {
+ if (HPMHooks.count.HP_npc_event_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, const char **eventname, int *ontouch);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_event_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &eventname, &ontouch);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -48720,9 +54689,9 @@ int HP_npc_event(struct map_session_data *sd, const char *eventname, int ontouch
{
retVal___ = HPMHooks.source.npc.event(sd, eventname, ontouch);
}
- if( HPMHooks.count.HP_npc_event_post ) {
+ if (HPMHooks.count.HP_npc_event_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, const char *eventname, int ontouch);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_event_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_event_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, eventname, ontouch);
}
@@ -48732,16 +54701,16 @@ int HP_npc_event(struct map_session_data *sd, const char *eventname, int ontouch
int HP_npc_touch_areanpc_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_touch_areanpc_sub_pre ) {
+ if (HPMHooks.count.HP_npc_touch_areanpc_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_touch_areanpc_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_touch_areanpc_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_npc_touch_areanpc_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -48751,9 +54720,9 @@ int HP_npc_touch_areanpc_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.npc.touch_areanpc_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_npc_touch_areanpc_sub_post ) {
+ if (HPMHooks.count.HP_npc_touch_areanpc_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_touch_areanpc_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_touch_areanpc_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_npc_touch_areanpc_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -48765,14 +54734,14 @@ int HP_npc_touch_areanpc_sub(struct block_list *bl, va_list ap) {
int HP_npc_touchnext_areanpc(struct map_session_data *sd, bool leavemap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_touchnext_areanpc_pre ) {
+ if (HPMHooks.count.HP_npc_touchnext_areanpc_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, bool *leavemap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_touchnext_areanpc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_touchnext_areanpc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_touchnext_areanpc_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &leavemap);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -48780,9 +54749,9 @@ int HP_npc_touchnext_areanpc(struct map_session_data *sd, bool leavemap) {
{
retVal___ = HPMHooks.source.npc.touchnext_areanpc(sd, leavemap);
}
- if( HPMHooks.count.HP_npc_touchnext_areanpc_post ) {
+ if (HPMHooks.count.HP_npc_touchnext_areanpc_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, bool leavemap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_touchnext_areanpc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_touchnext_areanpc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_touchnext_areanpc_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, leavemap);
}
@@ -48792,14 +54761,14 @@ int HP_npc_touchnext_areanpc(struct map_session_data *sd, bool leavemap) {
int HP_npc_touch_areanpc(struct map_session_data *sd, int16 m, int16 x, int16 y) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_touch_areanpc_pre ) {
+ if (HPMHooks.count.HP_npc_touch_areanpc_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int16 *m, int16 *x, int16 *y);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_touch_areanpc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_touch_areanpc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_touch_areanpc_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &m, &x, &y);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -48807,9 +54776,9 @@ int HP_npc_touch_areanpc(struct map_session_data *sd, int16 m, int16 x, int16 y)
{
retVal___ = HPMHooks.source.npc.touch_areanpc(sd, m, x, y);
}
- if( HPMHooks.count.HP_npc_touch_areanpc_post ) {
+ if (HPMHooks.count.HP_npc_touch_areanpc_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int16 m, int16 x, int16 y);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_touch_areanpc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_touch_areanpc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_touch_areanpc_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, m, x, y);
}
@@ -48819,14 +54788,14 @@ int HP_npc_touch_areanpc(struct map_session_data *sd, int16 m, int16 x, int16 y)
int HP_npc_untouch_areanpc(struct map_session_data *sd, int16 m, int16 x, int16 y) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_untouch_areanpc_pre ) {
+ if (HPMHooks.count.HP_npc_untouch_areanpc_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int16 *m, int16 *x, int16 *y);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_untouch_areanpc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_untouch_areanpc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_untouch_areanpc_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &m, &x, &y);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -48834,9 +54803,9 @@ int HP_npc_untouch_areanpc(struct map_session_data *sd, int16 m, int16 x, int16
{
retVal___ = HPMHooks.source.npc.untouch_areanpc(sd, m, x, y);
}
- if( HPMHooks.count.HP_npc_untouch_areanpc_post ) {
+ if (HPMHooks.count.HP_npc_untouch_areanpc_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int16 m, int16 x, int16 y);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_untouch_areanpc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_untouch_areanpc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_untouch_areanpc_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, m, x, y);
}
@@ -48846,14 +54815,14 @@ int HP_npc_untouch_areanpc(struct map_session_data *sd, int16 m, int16 x, int16
int HP_npc_touch_areanpc2(struct mob_data *md) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_touch_areanpc2_pre ) {
+ if (HPMHooks.count.HP_npc_touch_areanpc2_pre > 0) {
int (*preHookFunc) (struct mob_data **md);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_touch_areanpc2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_touch_areanpc2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_touch_areanpc2_pre[hIndex].func;
retVal___ = preHookFunc(&md);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -48861,9 +54830,9 @@ int HP_npc_touch_areanpc2(struct mob_data *md) {
{
retVal___ = HPMHooks.source.npc.touch_areanpc2(md);
}
- if( HPMHooks.count.HP_npc_touch_areanpc2_post ) {
+ if (HPMHooks.count.HP_npc_touch_areanpc2_post > 0) {
int (*postHookFunc) (int retVal___, struct mob_data *md);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_touch_areanpc2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_touch_areanpc2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_touch_areanpc2_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md);
}
@@ -48873,14 +54842,14 @@ int HP_npc_touch_areanpc2(struct mob_data *md) {
int HP_npc_check_areanpc(int flag, int16 m, int16 x, int16 y, int16 range) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_check_areanpc_pre ) {
+ if (HPMHooks.count.HP_npc_check_areanpc_pre > 0) {
int (*preHookFunc) (int *flag, int16 *m, int16 *x, int16 *y, int16 *range);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_check_areanpc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_check_areanpc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_check_areanpc_pre[hIndex].func;
retVal___ = preHookFunc(&flag, &m, &x, &y, &range);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -48888,9 +54857,9 @@ int HP_npc_check_areanpc(int flag, int16 m, int16 x, int16 y, int16 range) {
{
retVal___ = HPMHooks.source.npc.check_areanpc(flag, m, x, y, range);
}
- if( HPMHooks.count.HP_npc_check_areanpc_post ) {
+ if (HPMHooks.count.HP_npc_check_areanpc_post > 0) {
int (*postHookFunc) (int retVal___, int flag, int16 m, int16 x, int16 y, int16 range);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_check_areanpc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_check_areanpc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_check_areanpc_post[hIndex].func;
retVal___ = postHookFunc(retVal___, flag, m, x, y, range);
}
@@ -48900,14 +54869,14 @@ int HP_npc_check_areanpc(int flag, int16 m, int16 x, int16 y, int16 range) {
struct npc_data* HP_npc_checknear(struct map_session_data *sd, struct block_list *bl) {
int hIndex = 0;
struct npc_data* retVal___ = NULL;
- if( HPMHooks.count.HP_npc_checknear_pre ) {
+ if (HPMHooks.count.HP_npc_checknear_pre > 0) {
struct npc_data* (*preHookFunc) (struct map_session_data **sd, struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_checknear_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_checknear_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_checknear_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -48915,9 +54884,9 @@ struct npc_data* HP_npc_checknear(struct map_session_data *sd, struct block_list
{
retVal___ = HPMHooks.source.npc.checknear(sd, bl);
}
- if( HPMHooks.count.HP_npc_checknear_post ) {
+ if (HPMHooks.count.HP_npc_checknear_post > 0) {
struct npc_data* (*postHookFunc) (struct npc_data* retVal___, struct map_session_data *sd, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_checknear_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_checknear_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_checknear_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, bl);
}
@@ -48927,14 +54896,14 @@ struct npc_data* HP_npc_checknear(struct map_session_data *sd, struct block_list
int HP_npc_globalmessage(const char *name, const char *mes) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_globalmessage_pre ) {
+ if (HPMHooks.count.HP_npc_globalmessage_pre > 0) {
int (*preHookFunc) (const char **name, const char **mes);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_globalmessage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_globalmessage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_globalmessage_pre[hIndex].func;
retVal___ = preHookFunc(&name, &mes);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -48942,9 +54911,9 @@ int HP_npc_globalmessage(const char *name, const char *mes) {
{
retVal___ = HPMHooks.source.npc.globalmessage(name, mes);
}
- if( HPMHooks.count.HP_npc_globalmessage_post ) {
+ if (HPMHooks.count.HP_npc_globalmessage_post > 0) {
int (*postHookFunc) (int retVal___, const char *name, const char *mes);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_globalmessage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_globalmessage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_globalmessage_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name, mes);
}
@@ -48953,14 +54922,14 @@ int HP_npc_globalmessage(const char *name, const char *mes) {
}
void HP_npc_run_tomb(struct map_session_data *sd, struct npc_data *nd) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_run_tomb_pre ) {
+ if (HPMHooks.count.HP_npc_run_tomb_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct npc_data **nd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_run_tomb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_run_tomb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_run_tomb_pre[hIndex].func;
preHookFunc(&sd, &nd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -48968,9 +54937,9 @@ void HP_npc_run_tomb(struct map_session_data *sd, struct npc_data *nd) {
{
HPMHooks.source.npc.run_tomb(sd, nd);
}
- if( HPMHooks.count.HP_npc_run_tomb_post ) {
+ if (HPMHooks.count.HP_npc_run_tomb_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct npc_data *nd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_run_tomb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_run_tomb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_run_tomb_post[hIndex].func;
postHookFunc(sd, nd);
}
@@ -48980,14 +54949,14 @@ void HP_npc_run_tomb(struct map_session_data *sd, struct npc_data *nd) {
int HP_npc_click(struct map_session_data *sd, struct npc_data *nd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_click_pre ) {
+ if (HPMHooks.count.HP_npc_click_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct npc_data **nd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_click_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_click_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_click_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &nd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -48995,9 +54964,9 @@ int HP_npc_click(struct map_session_data *sd, struct npc_data *nd) {
{
retVal___ = HPMHooks.source.npc.click(sd, nd);
}
- if( HPMHooks.count.HP_npc_click_post ) {
+ if (HPMHooks.count.HP_npc_click_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct npc_data *nd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_click_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_click_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_click_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, nd);
}
@@ -49007,14 +54976,14 @@ int HP_npc_click(struct map_session_data *sd, struct npc_data *nd) {
int HP_npc_scriptcont(struct map_session_data *sd, int id, bool closing) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_scriptcont_pre ) {
+ if (HPMHooks.count.HP_npc_scriptcont_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *id, bool *closing);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_scriptcont_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_scriptcont_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_scriptcont_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &id, &closing);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -49022,9 +54991,9 @@ int HP_npc_scriptcont(struct map_session_data *sd, int id, bool closing) {
{
retVal___ = HPMHooks.source.npc.scriptcont(sd, id, closing);
}
- if( HPMHooks.count.HP_npc_scriptcont_post ) {
+ if (HPMHooks.count.HP_npc_scriptcont_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int id, bool closing);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_scriptcont_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_scriptcont_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_scriptcont_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, id, closing);
}
@@ -49034,14 +55003,14 @@ int HP_npc_scriptcont(struct map_session_data *sd, int id, bool closing) {
int HP_npc_buysellsel(struct map_session_data *sd, int id, int type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_buysellsel_pre ) {
+ if (HPMHooks.count.HP_npc_buysellsel_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *id, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_buysellsel_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_buysellsel_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_buysellsel_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &id, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -49049,9 +55018,9 @@ int HP_npc_buysellsel(struct map_session_data *sd, int id, int type) {
{
retVal___ = HPMHooks.source.npc.buysellsel(sd, id, type);
}
- if( HPMHooks.count.HP_npc_buysellsel_post ) {
+ if (HPMHooks.count.HP_npc_buysellsel_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int id, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_buysellsel_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_buysellsel_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_buysellsel_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, id, type);
}
@@ -49061,14 +55030,14 @@ int HP_npc_buysellsel(struct map_session_data *sd, int id, int type) {
int HP_npc_cashshop_buylist(struct map_session_data *sd, int points, struct itemlist *item_list) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_cashshop_buylist_pre ) {
+ if (HPMHooks.count.HP_npc_cashshop_buylist_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *points, struct itemlist **item_list);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_cashshop_buylist_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_cashshop_buylist_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_cashshop_buylist_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &points, &item_list);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -49076,9 +55045,9 @@ int HP_npc_cashshop_buylist(struct map_session_data *sd, int points, struct item
{
retVal___ = HPMHooks.source.npc.cashshop_buylist(sd, points, item_list);
}
- if( HPMHooks.count.HP_npc_cashshop_buylist_post ) {
+ if (HPMHooks.count.HP_npc_cashshop_buylist_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int points, struct itemlist *item_list);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_cashshop_buylist_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_cashshop_buylist_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_cashshop_buylist_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, points, item_list);
}
@@ -49088,14 +55057,14 @@ int HP_npc_cashshop_buylist(struct map_session_data *sd, int points, struct item
int HP_npc_buylist_sub(struct map_session_data *sd, struct itemlist *item_list, struct npc_data *nd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_buylist_sub_pre ) {
+ if (HPMHooks.count.HP_npc_buylist_sub_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct itemlist **item_list, struct npc_data **nd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_buylist_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_buylist_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_buylist_sub_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &item_list, &nd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -49103,9 +55072,9 @@ int HP_npc_buylist_sub(struct map_session_data *sd, struct itemlist *item_list,
{
retVal___ = HPMHooks.source.npc.buylist_sub(sd, item_list, nd);
}
- if( HPMHooks.count.HP_npc_buylist_sub_post ) {
+ if (HPMHooks.count.HP_npc_buylist_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct itemlist *item_list, struct npc_data *nd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_buylist_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_buylist_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_buylist_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, item_list, nd);
}
@@ -49115,14 +55084,14 @@ int HP_npc_buylist_sub(struct map_session_data *sd, struct itemlist *item_list,
int HP_npc_cashshop_buy(struct map_session_data *sd, int nameid, int amount, int points) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_cashshop_buy_pre ) {
+ if (HPMHooks.count.HP_npc_cashshop_buy_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *nameid, int *amount, int *points);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_cashshop_buy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_cashshop_buy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_cashshop_buy_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &nameid, &amount, &points);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -49130,9 +55099,9 @@ int HP_npc_cashshop_buy(struct map_session_data *sd, int nameid, int amount, int
{
retVal___ = HPMHooks.source.npc.cashshop_buy(sd, nameid, amount, points);
}
- if( HPMHooks.count.HP_npc_cashshop_buy_post ) {
+ if (HPMHooks.count.HP_npc_cashshop_buy_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int nameid, int amount, int points);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_cashshop_buy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_cashshop_buy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_cashshop_buy_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, nameid, amount, points);
}
@@ -49142,14 +55111,14 @@ int HP_npc_cashshop_buy(struct map_session_data *sd, int nameid, int amount, int
int HP_npc_buylist(struct map_session_data *sd, struct itemlist *item_list) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_buylist_pre ) {
+ if (HPMHooks.count.HP_npc_buylist_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct itemlist **item_list);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_buylist_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_buylist_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_buylist_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &item_list);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -49157,9 +55126,9 @@ int HP_npc_buylist(struct map_session_data *sd, struct itemlist *item_list) {
{
retVal___ = HPMHooks.source.npc.buylist(sd, item_list);
}
- if( HPMHooks.count.HP_npc_buylist_post ) {
+ if (HPMHooks.count.HP_npc_buylist_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct itemlist *item_list);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_buylist_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_buylist_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_buylist_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, item_list);
}
@@ -49169,14 +55138,14 @@ int HP_npc_buylist(struct map_session_data *sd, struct itemlist *item_list) {
int HP_npc_selllist_sub(struct map_session_data *sd, struct itemlist *item_list, struct npc_data *nd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_selllist_sub_pre ) {
+ if (HPMHooks.count.HP_npc_selllist_sub_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct itemlist **item_list, struct npc_data **nd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_selllist_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_selllist_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_selllist_sub_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &item_list, &nd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -49184,9 +55153,9 @@ int HP_npc_selllist_sub(struct map_session_data *sd, struct itemlist *item_list,
{
retVal___ = HPMHooks.source.npc.selllist_sub(sd, item_list, nd);
}
- if( HPMHooks.count.HP_npc_selllist_sub_post ) {
+ if (HPMHooks.count.HP_npc_selllist_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct itemlist *item_list, struct npc_data *nd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_selllist_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_selllist_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_selllist_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, item_list, nd);
}
@@ -49196,14 +55165,14 @@ int HP_npc_selllist_sub(struct map_session_data *sd, struct itemlist *item_list,
int HP_npc_selllist(struct map_session_data *sd, struct itemlist *item_list) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_selllist_pre ) {
+ if (HPMHooks.count.HP_npc_selllist_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct itemlist **item_list);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_selllist_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_selllist_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_selllist_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &item_list);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -49211,9 +55180,9 @@ int HP_npc_selllist(struct map_session_data *sd, struct itemlist *item_list) {
{
retVal___ = HPMHooks.source.npc.selllist(sd, item_list);
}
- if( HPMHooks.count.HP_npc_selllist_post ) {
+ if (HPMHooks.count.HP_npc_selllist_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct itemlist *item_list);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_selllist_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_selllist_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_selllist_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, item_list);
}
@@ -49223,14 +55192,14 @@ int HP_npc_selllist(struct map_session_data *sd, struct itemlist *item_list) {
int HP_npc_remove_map(struct npc_data *nd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_remove_map_pre ) {
+ if (HPMHooks.count.HP_npc_remove_map_pre > 0) {
int (*preHookFunc) (struct npc_data **nd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_remove_map_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_remove_map_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_remove_map_pre[hIndex].func;
retVal___ = preHookFunc(&nd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -49238,9 +55207,9 @@ int HP_npc_remove_map(struct npc_data *nd) {
{
retVal___ = HPMHooks.source.npc.remove_map(nd);
}
- if( HPMHooks.count.HP_npc_remove_map_post ) {
+ if (HPMHooks.count.HP_npc_remove_map_post > 0) {
int (*postHookFunc) (int retVal___, struct npc_data *nd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_remove_map_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_remove_map_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_remove_map_post[hIndex].func;
retVal___ = postHookFunc(retVal___, nd);
}
@@ -49250,16 +55219,16 @@ int HP_npc_remove_map(struct npc_data *nd) {
int HP_npc_unload_ev(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_unload_ev_pre ) {
+ if (HPMHooks.count.HP_npc_unload_ev_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_unload_ev_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_unload_ev_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_npc_unload_ev_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -49269,9 +55238,9 @@ int HP_npc_unload_ev(union DBKey key, struct DBData *data, va_list ap) {
retVal___ = HPMHooks.source.npc.unload_ev(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_npc_unload_ev_post ) {
+ if (HPMHooks.count.HP_npc_unload_ev_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_unload_ev_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_unload_ev_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_npc_unload_ev_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -49283,16 +55252,16 @@ int HP_npc_unload_ev(union DBKey key, struct DBData *data, va_list ap) {
int HP_npc_unload_ev_label(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_unload_ev_label_pre ) {
+ if (HPMHooks.count.HP_npc_unload_ev_label_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_unload_ev_label_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_unload_ev_label_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_npc_unload_ev_label_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -49302,9 +55271,9 @@ int HP_npc_unload_ev_label(union DBKey key, struct DBData *data, va_list ap) {
retVal___ = HPMHooks.source.npc.unload_ev_label(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_npc_unload_ev_label_post ) {
+ if (HPMHooks.count.HP_npc_unload_ev_label_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_unload_ev_label_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_unload_ev_label_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_npc_unload_ev_label_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -49316,16 +55285,16 @@ int HP_npc_unload_ev_label(union DBKey key, struct DBData *data, va_list ap) {
int HP_npc_unload_dup_sub(struct npc_data *nd, va_list args) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_unload_dup_sub_pre ) {
+ if (HPMHooks.count.HP_npc_unload_dup_sub_pre > 0) {
int (*preHookFunc) (struct npc_data **nd, va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_unload_dup_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_unload_dup_sub_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_npc_unload_dup_sub_pre[hIndex].func;
retVal___ = preHookFunc(&nd, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -49335,9 +55304,9 @@ int HP_npc_unload_dup_sub(struct npc_data *nd, va_list args) {
retVal___ = HPMHooks.source.npc.unload_dup_sub(nd, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_npc_unload_dup_sub_post ) {
+ if (HPMHooks.count.HP_npc_unload_dup_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct npc_data *nd, va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_unload_dup_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_unload_dup_sub_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_npc_unload_dup_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, nd, args___copy);
@@ -49348,14 +55317,14 @@ int HP_npc_unload_dup_sub(struct npc_data *nd, va_list args) {
}
void HP_npc_unload_duplicates(struct npc_data *nd) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_unload_duplicates_pre ) {
+ if (HPMHooks.count.HP_npc_unload_duplicates_pre > 0) {
void (*preHookFunc) (struct npc_data **nd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_unload_duplicates_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_unload_duplicates_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_unload_duplicates_pre[hIndex].func;
preHookFunc(&nd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -49363,9 +55332,9 @@ void HP_npc_unload_duplicates(struct npc_data *nd) {
{
HPMHooks.source.npc.unload_duplicates(nd);
}
- if( HPMHooks.count.HP_npc_unload_duplicates_post ) {
+ if (HPMHooks.count.HP_npc_unload_duplicates_post > 0) {
void (*postHookFunc) (struct npc_data *nd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_unload_duplicates_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_unload_duplicates_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_unload_duplicates_post[hIndex].func;
postHookFunc(nd);
}
@@ -49375,14 +55344,14 @@ void HP_npc_unload_duplicates(struct npc_data *nd) {
int HP_npc_unload(struct npc_data *nd, bool single) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_unload_pre ) {
+ if (HPMHooks.count.HP_npc_unload_pre > 0) {
int (*preHookFunc) (struct npc_data **nd, bool *single);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_unload_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_unload_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_unload_pre[hIndex].func;
retVal___ = preHookFunc(&nd, &single);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -49390,9 +55359,9 @@ int HP_npc_unload(struct npc_data *nd, bool single) {
{
retVal___ = HPMHooks.source.npc.unload(nd, single);
}
- if( HPMHooks.count.HP_npc_unload_post ) {
+ if (HPMHooks.count.HP_npc_unload_post > 0) {
int (*postHookFunc) (int retVal___, struct npc_data *nd, bool single);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_unload_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_unload_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_unload_post[hIndex].func;
retVal___ = postHookFunc(retVal___, nd, single);
}
@@ -49401,14 +55370,14 @@ int HP_npc_unload(struct npc_data *nd, bool single) {
}
void HP_npc_clearsrcfile(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_clearsrcfile_pre ) {
+ if (HPMHooks.count.HP_npc_clearsrcfile_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_clearsrcfile_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_clearsrcfile_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_clearsrcfile_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -49416,9 +55385,9 @@ void HP_npc_clearsrcfile(void) {
{
HPMHooks.source.npc.clearsrcfile();
}
- if( HPMHooks.count.HP_npc_clearsrcfile_post ) {
+ if (HPMHooks.count.HP_npc_clearsrcfile_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_clearsrcfile_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_clearsrcfile_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_clearsrcfile_post[hIndex].func;
postHookFunc();
}
@@ -49427,14 +55396,14 @@ void HP_npc_clearsrcfile(void) {
}
void HP_npc_addsrcfile(const char *name) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_addsrcfile_pre ) {
+ if (HPMHooks.count.HP_npc_addsrcfile_pre > 0) {
void (*preHookFunc) (const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_addsrcfile_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_addsrcfile_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_addsrcfile_pre[hIndex].func;
preHookFunc(&name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -49442,9 +55411,9 @@ void HP_npc_addsrcfile(const char *name) {
{
HPMHooks.source.npc.addsrcfile(name);
}
- if( HPMHooks.count.HP_npc_addsrcfile_post ) {
+ if (HPMHooks.count.HP_npc_addsrcfile_post > 0) {
void (*postHookFunc) (const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_addsrcfile_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_addsrcfile_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_addsrcfile_post[hIndex].func;
postHookFunc(name);
}
@@ -49453,14 +55422,14 @@ void HP_npc_addsrcfile(const char *name) {
}
void HP_npc_delsrcfile(const char *name) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_delsrcfile_pre ) {
+ if (HPMHooks.count.HP_npc_delsrcfile_pre > 0) {
void (*preHookFunc) (const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_delsrcfile_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_delsrcfile_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_delsrcfile_pre[hIndex].func;
preHookFunc(&name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -49468,9 +55437,9 @@ void HP_npc_delsrcfile(const char *name) {
{
HPMHooks.source.npc.delsrcfile(name);
}
- if( HPMHooks.count.HP_npc_delsrcfile_post ) {
+ if (HPMHooks.count.HP_npc_delsrcfile_post > 0) {
void (*postHookFunc) (const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_delsrcfile_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_delsrcfile_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_delsrcfile_post[hIndex].func;
postHookFunc(name);
}
@@ -49480,14 +55449,14 @@ void HP_npc_delsrcfile(const char *name) {
const char* HP_npc_retainpathreference(const char *filepath) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_npc_retainpathreference_pre ) {
+ if (HPMHooks.count.HP_npc_retainpathreference_pre > 0) {
const char* (*preHookFunc) (const char **filepath);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_retainpathreference_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_retainpathreference_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_retainpathreference_pre[hIndex].func;
retVal___ = preHookFunc(&filepath);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -49495,9 +55464,9 @@ const char* HP_npc_retainpathreference(const char *filepath) {
{
retVal___ = HPMHooks.source.npc.retainpathreference(filepath);
}
- if( HPMHooks.count.HP_npc_retainpathreference_post ) {
+ if (HPMHooks.count.HP_npc_retainpathreference_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *filepath);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_retainpathreference_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_retainpathreference_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_retainpathreference_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filepath);
}
@@ -49506,14 +55475,14 @@ const char* HP_npc_retainpathreference(const char *filepath) {
}
void HP_npc_releasepathreference(const char *filepath) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_releasepathreference_pre ) {
+ if (HPMHooks.count.HP_npc_releasepathreference_pre > 0) {
void (*preHookFunc) (const char **filepath);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_releasepathreference_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_releasepathreference_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_releasepathreference_pre[hIndex].func;
preHookFunc(&filepath);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -49521,9 +55490,9 @@ void HP_npc_releasepathreference(const char *filepath) {
{
HPMHooks.source.npc.releasepathreference(filepath);
}
- if( HPMHooks.count.HP_npc_releasepathreference_post ) {
+ if (HPMHooks.count.HP_npc_releasepathreference_post > 0) {
void (*postHookFunc) (const char *filepath);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_releasepathreference_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_releasepathreference_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_releasepathreference_post[hIndex].func;
postHookFunc(filepath);
}
@@ -49532,14 +55501,14 @@ void HP_npc_releasepathreference(const char *filepath) {
}
void HP_npc_parsename(struct npc_data *nd, const char *name, const char *start, const char *buffer, const char *filepath) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_parsename_pre ) {
+ if (HPMHooks.count.HP_npc_parsename_pre > 0) {
void (*preHookFunc) (struct npc_data **nd, const char **name, const char **start, const char **buffer, const char **filepath);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_parsename_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_parsename_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_parsename_pre[hIndex].func;
preHookFunc(&nd, &name, &start, &buffer, &filepath);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -49547,9 +55516,9 @@ void HP_npc_parsename(struct npc_data *nd, const char *name, const char *start,
{
HPMHooks.source.npc.parsename(nd, name, start, buffer, filepath);
}
- if( HPMHooks.count.HP_npc_parsename_post ) {
+ if (HPMHooks.count.HP_npc_parsename_post > 0) {
void (*postHookFunc) (struct npc_data *nd, const char *name, const char *start, const char *buffer, const char *filepath);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_parsename_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_parsename_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_parsename_post[hIndex].func;
postHookFunc(nd, name, start, buffer, filepath);
}
@@ -49559,14 +55528,14 @@ void HP_npc_parsename(struct npc_data *nd, const char *name, const char *start,
int HP_npc_parseview(const char *w4, const char *start, const char *buffer, const char *filepath) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_parseview_pre ) {
+ if (HPMHooks.count.HP_npc_parseview_pre > 0) {
int (*preHookFunc) (const char **w4, const char **start, const char **buffer, const char **filepath);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_parseview_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_parseview_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_parseview_pre[hIndex].func;
retVal___ = preHookFunc(&w4, &start, &buffer, &filepath);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -49574,9 +55543,9 @@ int HP_npc_parseview(const char *w4, const char *start, const char *buffer, cons
{
retVal___ = HPMHooks.source.npc.parseview(w4, start, buffer, filepath);
}
- if( HPMHooks.count.HP_npc_parseview_post ) {
+ if (HPMHooks.count.HP_npc_parseview_post > 0) {
int (*postHookFunc) (int retVal___, const char *w4, const char *start, const char *buffer, const char *filepath);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_parseview_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_parseview_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_parseview_post[hIndex].func;
retVal___ = postHookFunc(retVal___, w4, start, buffer, filepath);
}
@@ -49586,14 +55555,14 @@ int HP_npc_parseview(const char *w4, const char *start, const char *buffer, cons
bool HP_npc_viewisid(const char *viewid) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_npc_viewisid_pre ) {
+ if (HPMHooks.count.HP_npc_viewisid_pre > 0) {
bool (*preHookFunc) (const char **viewid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_viewisid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_viewisid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_viewisid_pre[hIndex].func;
retVal___ = preHookFunc(&viewid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -49601,9 +55570,9 @@ bool HP_npc_viewisid(const char *viewid) {
{
retVal___ = HPMHooks.source.npc.viewisid(viewid);
}
- if( HPMHooks.count.HP_npc_viewisid_post ) {
+ if (HPMHooks.count.HP_npc_viewisid_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *viewid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_viewisid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_viewisid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_viewisid_post[hIndex].func;
retVal___ = postHookFunc(retVal___, viewid);
}
@@ -49613,14 +55582,14 @@ bool HP_npc_viewisid(const char *viewid) {
struct npc_data* HP_npc_create_npc(enum npc_subtype subtype, int m, int x, int y, uint8 dir, int16 class_) {
int hIndex = 0;
struct npc_data* retVal___ = NULL;
- if( HPMHooks.count.HP_npc_create_npc_pre ) {
+ if (HPMHooks.count.HP_npc_create_npc_pre > 0) {
struct npc_data* (*preHookFunc) (enum npc_subtype *subtype, int *m, int *x, int *y, uint8 *dir, int16 *class_);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_create_npc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_create_npc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_create_npc_pre[hIndex].func;
retVal___ = preHookFunc(&subtype, &m, &x, &y, &dir, &class_);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -49628,9 +55597,9 @@ struct npc_data* HP_npc_create_npc(enum npc_subtype subtype, int m, int x, int y
{
retVal___ = HPMHooks.source.npc.create_npc(subtype, m, x, y, dir, class_);
}
- if( HPMHooks.count.HP_npc_create_npc_post ) {
+ if (HPMHooks.count.HP_npc_create_npc_post > 0) {
struct npc_data* (*postHookFunc) (struct npc_data* retVal___, enum npc_subtype subtype, int m, int x, int y, uint8 dir, int16 class_);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_create_npc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_create_npc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_create_npc_post[hIndex].func;
retVal___ = postHookFunc(retVal___, subtype, m, x, y, dir, class_);
}
@@ -49640,14 +55609,14 @@ struct npc_data* HP_npc_create_npc(enum npc_subtype subtype, int m, int x, int y
struct npc_data* HP_npc_add_warp(char *name, short from_mapid, short from_x, short from_y, short xs, short ys, unsigned short to_mapindex, short to_x, short to_y) {
int hIndex = 0;
struct npc_data* retVal___ = NULL;
- if( HPMHooks.count.HP_npc_add_warp_pre ) {
+ if (HPMHooks.count.HP_npc_add_warp_pre > 0) {
struct npc_data* (*preHookFunc) (char **name, short *from_mapid, short *from_x, short *from_y, short *xs, short *ys, unsigned short *to_mapindex, short *to_x, short *to_y);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_add_warp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_add_warp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_add_warp_pre[hIndex].func;
retVal___ = preHookFunc(&name, &from_mapid, &from_x, &from_y, &xs, &ys, &to_mapindex, &to_x, &to_y);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -49655,9 +55624,9 @@ struct npc_data* HP_npc_add_warp(char *name, short from_mapid, short from_x, sho
{
retVal___ = HPMHooks.source.npc.add_warp(name, from_mapid, from_x, from_y, xs, ys, to_mapindex, to_x, to_y);
}
- if( HPMHooks.count.HP_npc_add_warp_post ) {
+ if (HPMHooks.count.HP_npc_add_warp_post > 0) {
struct npc_data* (*postHookFunc) (struct npc_data* retVal___, char *name, short from_mapid, short from_x, short from_y, short xs, short ys, unsigned short to_mapindex, short to_x, short to_y);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_add_warp_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_add_warp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_add_warp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name, from_mapid, from_x, from_y, xs, ys, to_mapindex, to_x, to_y);
}
@@ -49667,14 +55636,14 @@ struct npc_data* HP_npc_add_warp(char *name, short from_mapid, short from_x, sho
const char* HP_npc_parse_warp(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_npc_parse_warp_pre ) {
+ if (HPMHooks.count.HP_npc_parse_warp_pre > 0) {
const char* (*preHookFunc) (const char **w1, const char **w2, const char **w3, const char **w4, const char **start, const char **buffer, const char **filepath, int **retval);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_warp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_warp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_parse_warp_pre[hIndex].func;
retVal___ = preHookFunc(&w1, &w2, &w3, &w4, &start, &buffer, &filepath, &retval);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -49682,9 +55651,9 @@ const char* HP_npc_parse_warp(const char *w1, const char *w2, const char *w3, co
{
retVal___ = HPMHooks.source.npc.parse_warp(w1, w2, w3, w4, start, buffer, filepath, retval);
}
- if( HPMHooks.count.HP_npc_parse_warp_post ) {
+ if (HPMHooks.count.HP_npc_parse_warp_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_warp_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_warp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_parse_warp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, w1, w2, w3, w4, start, buffer, filepath, retval);
}
@@ -49694,14 +55663,14 @@ const char* HP_npc_parse_warp(const char *w1, const char *w2, const char *w3, co
const char* HP_npc_parse_shop(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_npc_parse_shop_pre ) {
+ if (HPMHooks.count.HP_npc_parse_shop_pre > 0) {
const char* (*preHookFunc) (const char **w1, const char **w2, const char **w3, const char **w4, const char **start, const char **buffer, const char **filepath, int **retval);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_shop_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_shop_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_parse_shop_pre[hIndex].func;
retVal___ = preHookFunc(&w1, &w2, &w3, &w4, &start, &buffer, &filepath, &retval);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -49709,9 +55678,9 @@ const char* HP_npc_parse_shop(const char *w1, const char *w2, const char *w3, co
{
retVal___ = HPMHooks.source.npc.parse_shop(w1, w2, w3, w4, start, buffer, filepath, retval);
}
- if( HPMHooks.count.HP_npc_parse_shop_post ) {
+ if (HPMHooks.count.HP_npc_parse_shop_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_shop_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_shop_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_parse_shop_post[hIndex].func;
retVal___ = postHookFunc(retVal___, w1, w2, w3, w4, start, buffer, filepath, retval);
}
@@ -49721,14 +55690,14 @@ const char* HP_npc_parse_shop(const char *w1, const char *w2, const char *w3, co
const char* HP_npc_parse_unknown_object(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_npc_parse_unknown_object_pre ) {
+ if (HPMHooks.count.HP_npc_parse_unknown_object_pre > 0) {
const char* (*preHookFunc) (const char **w1, const char **w2, const char **w3, const char **w4, const char **start, const char **buffer, const char **filepath, int **retval);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_unknown_object_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_unknown_object_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_parse_unknown_object_pre[hIndex].func;
retVal___ = preHookFunc(&w1, &w2, &w3, &w4, &start, &buffer, &filepath, &retval);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -49736,9 +55705,9 @@ const char* HP_npc_parse_unknown_object(const char *w1, const char *w2, const ch
{
retVal___ = HPMHooks.source.npc.parse_unknown_object(w1, w2, w3, w4, start, buffer, filepath, retval);
}
- if( HPMHooks.count.HP_npc_parse_unknown_object_post ) {
+ if (HPMHooks.count.HP_npc_parse_unknown_object_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_unknown_object_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_unknown_object_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_parse_unknown_object_post[hIndex].func;
retVal___ = postHookFunc(retVal___, w1, w2, w3, w4, start, buffer, filepath, retval);
}
@@ -49747,14 +55716,14 @@ const char* HP_npc_parse_unknown_object(const char *w1, const char *w2, const ch
}
void HP_npc_convertlabel_db(struct npc_label_list *label_list, const char *filepath) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_convertlabel_db_pre ) {
+ if (HPMHooks.count.HP_npc_convertlabel_db_pre > 0) {
void (*preHookFunc) (struct npc_label_list **label_list, const char **filepath);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_convertlabel_db_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_convertlabel_db_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_convertlabel_db_pre[hIndex].func;
preHookFunc(&label_list, &filepath);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -49762,9 +55731,9 @@ void HP_npc_convertlabel_db(struct npc_label_list *label_list, const char *filep
{
HPMHooks.source.npc.convertlabel_db(label_list, filepath);
}
- if( HPMHooks.count.HP_npc_convertlabel_db_post ) {
+ if (HPMHooks.count.HP_npc_convertlabel_db_post > 0) {
void (*postHookFunc) (struct npc_label_list *label_list, const char *filepath);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_convertlabel_db_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_convertlabel_db_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_convertlabel_db_post[hIndex].func;
postHookFunc(label_list, filepath);
}
@@ -49774,14 +55743,14 @@ void HP_npc_convertlabel_db(struct npc_label_list *label_list, const char *filep
const char* HP_npc_skip_script(const char *start, const char *buffer, const char *filepath, int *retval) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_npc_skip_script_pre ) {
+ if (HPMHooks.count.HP_npc_skip_script_pre > 0) {
const char* (*preHookFunc) (const char **start, const char **buffer, const char **filepath, int **retval);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_skip_script_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_skip_script_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_skip_script_pre[hIndex].func;
retVal___ = preHookFunc(&start, &buffer, &filepath, &retval);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -49789,9 +55758,9 @@ const char* HP_npc_skip_script(const char *start, const char *buffer, const char
{
retVal___ = HPMHooks.source.npc.skip_script(start, buffer, filepath, retval);
}
- if( HPMHooks.count.HP_npc_skip_script_post ) {
+ if (HPMHooks.count.HP_npc_skip_script_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *start, const char *buffer, const char *filepath, int *retval);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_skip_script_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_skip_script_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_skip_script_post[hIndex].func;
retVal___ = postHookFunc(retVal___, start, buffer, filepath, retval);
}
@@ -49801,14 +55770,14 @@ const char* HP_npc_skip_script(const char *start, const char *buffer, const char
const char* HP_npc_parse_script(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int options, int *retval) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_npc_parse_script_pre ) {
+ if (HPMHooks.count.HP_npc_parse_script_pre > 0) {
const char* (*preHookFunc) (const char **w1, const char **w2, const char **w3, const char **w4, const char **start, const char **buffer, const char **filepath, int *options, int **retval);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_script_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_script_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_parse_script_pre[hIndex].func;
retVal___ = preHookFunc(&w1, &w2, &w3, &w4, &start, &buffer, &filepath, &options, &retval);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -49816,9 +55785,9 @@ const char* HP_npc_parse_script(const char *w1, const char *w2, const char *w3,
{
retVal___ = HPMHooks.source.npc.parse_script(w1, w2, w3, w4, start, buffer, filepath, options, retval);
}
- if( HPMHooks.count.HP_npc_parse_script_post ) {
+ if (HPMHooks.count.HP_npc_parse_script_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int options, int *retval);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_script_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_script_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_parse_script_post[hIndex].func;
retVal___ = postHookFunc(retVal___, w1, w2, w3, w4, start, buffer, filepath, options, retval);
}
@@ -49827,14 +55796,14 @@ const char* HP_npc_parse_script(const char *w1, const char *w2, const char *w3,
}
void HP_npc_add_to_location(struct npc_data *nd) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_add_to_location_pre ) {
+ if (HPMHooks.count.HP_npc_add_to_location_pre > 0) {
void (*preHookFunc) (struct npc_data **nd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_add_to_location_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_add_to_location_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_add_to_location_pre[hIndex].func;
preHookFunc(&nd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -49842,9 +55811,9 @@ void HP_npc_add_to_location(struct npc_data *nd) {
{
HPMHooks.source.npc.add_to_location(nd);
}
- if( HPMHooks.count.HP_npc_add_to_location_post ) {
+ if (HPMHooks.count.HP_npc_add_to_location_post > 0) {
void (*postHookFunc) (struct npc_data *nd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_add_to_location_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_add_to_location_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_add_to_location_post[hIndex].func;
postHookFunc(nd);
}
@@ -49854,14 +55823,14 @@ void HP_npc_add_to_location(struct npc_data *nd) {
bool HP_npc_duplicate_script_sub(struct npc_data *nd, const struct npc_data *snd, int xs, int ys, int options) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_npc_duplicate_script_sub_pre ) {
+ if (HPMHooks.count.HP_npc_duplicate_script_sub_pre > 0) {
bool (*preHookFunc) (struct npc_data **nd, const struct npc_data **snd, int *xs, int *ys, int *options);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_duplicate_script_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_duplicate_script_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_duplicate_script_sub_pre[hIndex].func;
retVal___ = preHookFunc(&nd, &snd, &xs, &ys, &options);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -49869,9 +55838,9 @@ bool HP_npc_duplicate_script_sub(struct npc_data *nd, const struct npc_data *snd
{
retVal___ = HPMHooks.source.npc.duplicate_script_sub(nd, snd, xs, ys, options);
}
- if( HPMHooks.count.HP_npc_duplicate_script_sub_post ) {
+ if (HPMHooks.count.HP_npc_duplicate_script_sub_post > 0) {
bool (*postHookFunc) (bool retVal___, struct npc_data *nd, const struct npc_data *snd, int xs, int ys, int options);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_duplicate_script_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_duplicate_script_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_duplicate_script_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, nd, snd, xs, ys, options);
}
@@ -49881,14 +55850,14 @@ bool HP_npc_duplicate_script_sub(struct npc_data *nd, const struct npc_data *snd
bool HP_npc_duplicate_shop_sub(struct npc_data *nd, const struct npc_data *snd, int xs, int ys, int options) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_npc_duplicate_shop_sub_pre ) {
+ if (HPMHooks.count.HP_npc_duplicate_shop_sub_pre > 0) {
bool (*preHookFunc) (struct npc_data **nd, const struct npc_data **snd, int *xs, int *ys, int *options);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_duplicate_shop_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_duplicate_shop_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_duplicate_shop_sub_pre[hIndex].func;
retVal___ = preHookFunc(&nd, &snd, &xs, &ys, &options);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -49896,9 +55865,9 @@ bool HP_npc_duplicate_shop_sub(struct npc_data *nd, const struct npc_data *snd,
{
retVal___ = HPMHooks.source.npc.duplicate_shop_sub(nd, snd, xs, ys, options);
}
- if( HPMHooks.count.HP_npc_duplicate_shop_sub_post ) {
+ if (HPMHooks.count.HP_npc_duplicate_shop_sub_post > 0) {
bool (*postHookFunc) (bool retVal___, struct npc_data *nd, const struct npc_data *snd, int xs, int ys, int options);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_duplicate_shop_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_duplicate_shop_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_duplicate_shop_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, nd, snd, xs, ys, options);
}
@@ -49908,14 +55877,14 @@ bool HP_npc_duplicate_shop_sub(struct npc_data *nd, const struct npc_data *snd,
bool HP_npc_duplicate_warp_sub(struct npc_data *nd, const struct npc_data *snd, int xs, int ys, int options) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_npc_duplicate_warp_sub_pre ) {
+ if (HPMHooks.count.HP_npc_duplicate_warp_sub_pre > 0) {
bool (*preHookFunc) (struct npc_data **nd, const struct npc_data **snd, int *xs, int *ys, int *options);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_duplicate_warp_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_duplicate_warp_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_duplicate_warp_sub_pre[hIndex].func;
retVal___ = preHookFunc(&nd, &snd, &xs, &ys, &options);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -49923,9 +55892,9 @@ bool HP_npc_duplicate_warp_sub(struct npc_data *nd, const struct npc_data *snd,
{
retVal___ = HPMHooks.source.npc.duplicate_warp_sub(nd, snd, xs, ys, options);
}
- if( HPMHooks.count.HP_npc_duplicate_warp_sub_post ) {
+ if (HPMHooks.count.HP_npc_duplicate_warp_sub_post > 0) {
bool (*postHookFunc) (bool retVal___, struct npc_data *nd, const struct npc_data *snd, int xs, int ys, int options);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_duplicate_warp_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_duplicate_warp_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_duplicate_warp_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, nd, snd, xs, ys, options);
}
@@ -49935,14 +55904,14 @@ bool HP_npc_duplicate_warp_sub(struct npc_data *nd, const struct npc_data *snd,
bool HP_npc_duplicate_sub(struct npc_data *nd, const struct npc_data *snd, int xs, int ys, int options) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_npc_duplicate_sub_pre ) {
+ if (HPMHooks.count.HP_npc_duplicate_sub_pre > 0) {
bool (*preHookFunc) (struct npc_data **nd, const struct npc_data **snd, int *xs, int *ys, int *options);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_duplicate_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_duplicate_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_duplicate_sub_pre[hIndex].func;
retVal___ = preHookFunc(&nd, &snd, &xs, &ys, &options);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -49950,9 +55919,9 @@ bool HP_npc_duplicate_sub(struct npc_data *nd, const struct npc_data *snd, int x
{
retVal___ = HPMHooks.source.npc.duplicate_sub(nd, snd, xs, ys, options);
}
- if( HPMHooks.count.HP_npc_duplicate_sub_post ) {
+ if (HPMHooks.count.HP_npc_duplicate_sub_post > 0) {
bool (*postHookFunc) (bool retVal___, struct npc_data *nd, const struct npc_data *snd, int xs, int ys, int options);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_duplicate_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_duplicate_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_duplicate_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, nd, snd, xs, ys, options);
}
@@ -49962,14 +55931,14 @@ bool HP_npc_duplicate_sub(struct npc_data *nd, const struct npc_data *snd, int x
const char* HP_npc_parse_duplicate(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int options, int *retval) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_npc_parse_duplicate_pre ) {
+ if (HPMHooks.count.HP_npc_parse_duplicate_pre > 0) {
const char* (*preHookFunc) (const char **w1, const char **w2, const char **w3, const char **w4, const char **start, const char **buffer, const char **filepath, int *options, int **retval);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_duplicate_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_duplicate_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_parse_duplicate_pre[hIndex].func;
retVal___ = preHookFunc(&w1, &w2, &w3, &w4, &start, &buffer, &filepath, &options, &retval);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -49977,9 +55946,9 @@ const char* HP_npc_parse_duplicate(const char *w1, const char *w2, const char *w
{
retVal___ = HPMHooks.source.npc.parse_duplicate(w1, w2, w3, w4, start, buffer, filepath, options, retval);
}
- if( HPMHooks.count.HP_npc_parse_duplicate_post ) {
+ if (HPMHooks.count.HP_npc_parse_duplicate_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int options, int *retval);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_duplicate_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_duplicate_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_parse_duplicate_post[hIndex].func;
retVal___ = postHookFunc(retVal___, w1, w2, w3, w4, start, buffer, filepath, options, retval);
}
@@ -49989,14 +55958,14 @@ const char* HP_npc_parse_duplicate(const char *w1, const char *w2, const char *w
int HP_npc_duplicate4instance(struct npc_data *snd, int16 m) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_duplicate4instance_pre ) {
+ if (HPMHooks.count.HP_npc_duplicate4instance_pre > 0) {
int (*preHookFunc) (struct npc_data **snd, int16 *m);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_duplicate4instance_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_duplicate4instance_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_duplicate4instance_pre[hIndex].func;
retVal___ = preHookFunc(&snd, &m);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -50004,9 +55973,9 @@ int HP_npc_duplicate4instance(struct npc_data *snd, int16 m) {
{
retVal___ = HPMHooks.source.npc.duplicate4instance(snd, m);
}
- if( HPMHooks.count.HP_npc_duplicate4instance_post ) {
+ if (HPMHooks.count.HP_npc_duplicate4instance_post > 0) {
int (*postHookFunc) (int retVal___, struct npc_data *snd, int16 m);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_duplicate4instance_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_duplicate4instance_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_duplicate4instance_post[hIndex].func;
retVal___ = postHookFunc(retVal___, snd, m);
}
@@ -50015,14 +55984,14 @@ int HP_npc_duplicate4instance(struct npc_data *snd, int16 m) {
}
void HP_npc_setcells(struct npc_data *nd) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_setcells_pre ) {
+ if (HPMHooks.count.HP_npc_setcells_pre > 0) {
void (*preHookFunc) (struct npc_data **nd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_setcells_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_setcells_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_setcells_pre[hIndex].func;
preHookFunc(&nd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -50030,9 +55999,9 @@ void HP_npc_setcells(struct npc_data *nd) {
{
HPMHooks.source.npc.setcells(nd);
}
- if( HPMHooks.count.HP_npc_setcells_post ) {
+ if (HPMHooks.count.HP_npc_setcells_post > 0) {
void (*postHookFunc) (struct npc_data *nd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_setcells_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_setcells_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_setcells_post[hIndex].func;
postHookFunc(nd);
}
@@ -50042,16 +56011,16 @@ void HP_npc_setcells(struct npc_data *nd) {
int HP_npc_unsetcells_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_unsetcells_sub_pre ) {
+ if (HPMHooks.count.HP_npc_unsetcells_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_unsetcells_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_unsetcells_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_npc_unsetcells_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -50061,9 +56030,9 @@ int HP_npc_unsetcells_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.npc.unsetcells_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_npc_unsetcells_sub_post ) {
+ if (HPMHooks.count.HP_npc_unsetcells_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_unsetcells_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_unsetcells_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_npc_unsetcells_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -50074,14 +56043,14 @@ int HP_npc_unsetcells_sub(struct block_list *bl, va_list ap) {
}
void HP_npc_unsetcells(struct npc_data *nd) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_unsetcells_pre ) {
+ if (HPMHooks.count.HP_npc_unsetcells_pre > 0) {
void (*preHookFunc) (struct npc_data **nd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_unsetcells_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_unsetcells_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_unsetcells_pre[hIndex].func;
preHookFunc(&nd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -50089,9 +56058,9 @@ void HP_npc_unsetcells(struct npc_data *nd) {
{
HPMHooks.source.npc.unsetcells(nd);
}
- if( HPMHooks.count.HP_npc_unsetcells_post ) {
+ if (HPMHooks.count.HP_npc_unsetcells_post > 0) {
void (*postHookFunc) (struct npc_data *nd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_unsetcells_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_unsetcells_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_unsetcells_post[hIndex].func;
postHookFunc(nd);
}
@@ -50100,14 +56069,14 @@ void HP_npc_unsetcells(struct npc_data *nd) {
}
void HP_npc_movenpc(struct npc_data *nd, int16 x, int16 y) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_movenpc_pre ) {
+ if (HPMHooks.count.HP_npc_movenpc_pre > 0) {
void (*preHookFunc) (struct npc_data **nd, int16 *x, int16 *y);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_movenpc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_movenpc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_movenpc_pre[hIndex].func;
preHookFunc(&nd, &x, &y);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -50115,9 +56084,9 @@ void HP_npc_movenpc(struct npc_data *nd, int16 x, int16 y) {
{
HPMHooks.source.npc.movenpc(nd, x, y);
}
- if( HPMHooks.count.HP_npc_movenpc_post ) {
+ if (HPMHooks.count.HP_npc_movenpc_post > 0) {
void (*postHookFunc) (struct npc_data *nd, int16 x, int16 y);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_movenpc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_movenpc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_movenpc_post[hIndex].func;
postHookFunc(nd, x, y);
}
@@ -50126,14 +56095,14 @@ void HP_npc_movenpc(struct npc_data *nd, int16 x, int16 y) {
}
void HP_npc_setdisplayname(struct npc_data *nd, const char *newname) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_setdisplayname_pre ) {
+ if (HPMHooks.count.HP_npc_setdisplayname_pre > 0) {
void (*preHookFunc) (struct npc_data **nd, const char **newname);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_setdisplayname_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_setdisplayname_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_setdisplayname_pre[hIndex].func;
preHookFunc(&nd, &newname);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -50141,9 +56110,9 @@ void HP_npc_setdisplayname(struct npc_data *nd, const char *newname) {
{
HPMHooks.source.npc.setdisplayname(nd, newname);
}
- if( HPMHooks.count.HP_npc_setdisplayname_post ) {
+ if (HPMHooks.count.HP_npc_setdisplayname_post > 0) {
void (*postHookFunc) (struct npc_data *nd, const char *newname);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_setdisplayname_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_setdisplayname_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_setdisplayname_post[hIndex].func;
postHookFunc(nd, newname);
}
@@ -50152,14 +56121,14 @@ void HP_npc_setdisplayname(struct npc_data *nd, const char *newname) {
}
void HP_npc_setclass(struct npc_data *nd, short class_) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_setclass_pre ) {
+ if (HPMHooks.count.HP_npc_setclass_pre > 0) {
void (*preHookFunc) (struct npc_data **nd, short *class_);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_setclass_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_setclass_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_setclass_pre[hIndex].func;
preHookFunc(&nd, &class_);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -50167,9 +56136,9 @@ void HP_npc_setclass(struct npc_data *nd, short class_) {
{
HPMHooks.source.npc.setclass(nd, class_);
}
- if( HPMHooks.count.HP_npc_setclass_post ) {
+ if (HPMHooks.count.HP_npc_setclass_post > 0) {
void (*postHookFunc) (struct npc_data *nd, short class_);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_setclass_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_setclass_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_setclass_post[hIndex].func;
postHookFunc(nd, class_);
}
@@ -50179,14 +56148,14 @@ void HP_npc_setclass(struct npc_data *nd, short class_) {
int HP_npc_do_atcmd_event(struct map_session_data *sd, const char *command, const char *message, const char *eventname) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_do_atcmd_event_pre ) {
+ if (HPMHooks.count.HP_npc_do_atcmd_event_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, const char **command, const char **message, const char **eventname);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_do_atcmd_event_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_do_atcmd_event_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_do_atcmd_event_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &command, &message, &eventname);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -50194,9 +56163,9 @@ int HP_npc_do_atcmd_event(struct map_session_data *sd, const char *command, cons
{
retVal___ = HPMHooks.source.npc.do_atcmd_event(sd, command, message, eventname);
}
- if( HPMHooks.count.HP_npc_do_atcmd_event_post ) {
+ if (HPMHooks.count.HP_npc_do_atcmd_event_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, const char *command, const char *message, const char *eventname);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_do_atcmd_event_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_do_atcmd_event_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_do_atcmd_event_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, command, message, eventname);
}
@@ -50206,14 +56175,14 @@ int HP_npc_do_atcmd_event(struct map_session_data *sd, const char *command, cons
const char* HP_npc_parse_function(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_npc_parse_function_pre ) {
+ if (HPMHooks.count.HP_npc_parse_function_pre > 0) {
const char* (*preHookFunc) (const char **w1, const char **w2, const char **w3, const char **w4, const char **start, const char **buffer, const char **filepath, int **retval);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_function_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_function_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_parse_function_pre[hIndex].func;
retVal___ = preHookFunc(&w1, &w2, &w3, &w4, &start, &buffer, &filepath, &retval);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -50221,9 +56190,9 @@ const char* HP_npc_parse_function(const char *w1, const char *w2, const char *w3
{
retVal___ = HPMHooks.source.npc.parse_function(w1, w2, w3, w4, start, buffer, filepath, retval);
}
- if( HPMHooks.count.HP_npc_parse_function_post ) {
+ if (HPMHooks.count.HP_npc_parse_function_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_function_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_function_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_parse_function_post[hIndex].func;
retVal___ = postHookFunc(retVal___, w1, w2, w3, w4, start, buffer, filepath, retval);
}
@@ -50232,14 +56201,14 @@ const char* HP_npc_parse_function(const char *w1, const char *w2, const char *w3
}
void HP_npc_parse_mob2(struct spawn_data *mobspawn) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_parse_mob2_pre ) {
+ if (HPMHooks.count.HP_npc_parse_mob2_pre > 0) {
void (*preHookFunc) (struct spawn_data **mobspawn);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_mob2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_mob2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_parse_mob2_pre[hIndex].func;
preHookFunc(&mobspawn);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -50247,9 +56216,9 @@ void HP_npc_parse_mob2(struct spawn_data *mobspawn) {
{
HPMHooks.source.npc.parse_mob2(mobspawn);
}
- if( HPMHooks.count.HP_npc_parse_mob2_post ) {
+ if (HPMHooks.count.HP_npc_parse_mob2_post > 0) {
void (*postHookFunc) (struct spawn_data *mobspawn);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_mob2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_mob2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_parse_mob2_post[hIndex].func;
postHookFunc(mobspawn);
}
@@ -50259,14 +56228,14 @@ void HP_npc_parse_mob2(struct spawn_data *mobspawn) {
const char* HP_npc_parse_mob(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_npc_parse_mob_pre ) {
+ if (HPMHooks.count.HP_npc_parse_mob_pre > 0) {
const char* (*preHookFunc) (const char **w1, const char **w2, const char **w3, const char **w4, const char **start, const char **buffer, const char **filepath, int **retval);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_mob_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_mob_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_parse_mob_pre[hIndex].func;
retVal___ = preHookFunc(&w1, &w2, &w3, &w4, &start, &buffer, &filepath, &retval);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -50274,9 +56243,9 @@ const char* HP_npc_parse_mob(const char *w1, const char *w2, const char *w3, con
{
retVal___ = HPMHooks.source.npc.parse_mob(w1, w2, w3, w4, start, buffer, filepath, retval);
}
- if( HPMHooks.count.HP_npc_parse_mob_post ) {
+ if (HPMHooks.count.HP_npc_parse_mob_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_mob_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_mob_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_parse_mob_post[hIndex].func;
retVal___ = postHookFunc(retVal___, w1, w2, w3, w4, start, buffer, filepath, retval);
}
@@ -50286,14 +56255,14 @@ const char* HP_npc_parse_mob(const char *w1, const char *w2, const char *w3, con
const char* HP_npc_parse_mapflag(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_npc_parse_mapflag_pre ) {
+ if (HPMHooks.count.HP_npc_parse_mapflag_pre > 0) {
const char* (*preHookFunc) (const char **w1, const char **w2, const char **w3, const char **w4, const char **start, const char **buffer, const char **filepath, int **retval);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_mapflag_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_mapflag_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_parse_mapflag_pre[hIndex].func;
retVal___ = preHookFunc(&w1, &w2, &w3, &w4, &start, &buffer, &filepath, &retval);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -50301,9 +56270,9 @@ const char* HP_npc_parse_mapflag(const char *w1, const char *w2, const char *w3,
{
retVal___ = HPMHooks.source.npc.parse_mapflag(w1, w2, w3, w4, start, buffer, filepath, retval);
}
- if( HPMHooks.count.HP_npc_parse_mapflag_post ) {
+ if (HPMHooks.count.HP_npc_parse_mapflag_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_mapflag_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_mapflag_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_parse_mapflag_post[hIndex].func;
retVal___ = postHookFunc(retVal___, w1, w2, w3, w4, start, buffer, filepath, retval);
}
@@ -50312,14 +56281,14 @@ const char* HP_npc_parse_mapflag(const char *w1, const char *w2, const char *w3,
}
void HP_npc_parse_unknown_mapflag(const char *name, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_parse_unknown_mapflag_pre ) {
+ if (HPMHooks.count.HP_npc_parse_unknown_mapflag_pre > 0) {
void (*preHookFunc) (const char **name, const char **w3, const char **w4, const char **start, const char **buffer, const char **filepath, int **retval);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_unknown_mapflag_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_unknown_mapflag_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_parse_unknown_mapflag_pre[hIndex].func;
preHookFunc(&name, &w3, &w4, &start, &buffer, &filepath, &retval);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -50327,9 +56296,9 @@ void HP_npc_parse_unknown_mapflag(const char *name, const char *w3, const char *
{
HPMHooks.source.npc.parse_unknown_mapflag(name, w3, w4, start, buffer, filepath, retval);
}
- if( HPMHooks.count.HP_npc_parse_unknown_mapflag_post ) {
+ if (HPMHooks.count.HP_npc_parse_unknown_mapflag_post > 0) {
void (*postHookFunc) (const char *name, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_unknown_mapflag_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_parse_unknown_mapflag_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_parse_unknown_mapflag_post[hIndex].func;
postHookFunc(name, w3, w4, start, buffer, filepath, retval);
}
@@ -50339,14 +56308,14 @@ void HP_npc_parse_unknown_mapflag(const char *name, const char *w3, const char *
int HP_npc_parsesrcfile(const char *filepath, bool runOnInit) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_parsesrcfile_pre ) {
+ if (HPMHooks.count.HP_npc_parsesrcfile_pre > 0) {
int (*preHookFunc) (const char **filepath, bool *runOnInit);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_parsesrcfile_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_parsesrcfile_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_parsesrcfile_pre[hIndex].func;
retVal___ = preHookFunc(&filepath, &runOnInit);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -50354,9 +56323,9 @@ int HP_npc_parsesrcfile(const char *filepath, bool runOnInit) {
{
retVal___ = HPMHooks.source.npc.parsesrcfile(filepath, runOnInit);
}
- if( HPMHooks.count.HP_npc_parsesrcfile_post ) {
+ if (HPMHooks.count.HP_npc_parsesrcfile_post > 0) {
int (*postHookFunc) (int retVal___, const char *filepath, bool runOnInit);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_parsesrcfile_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_parsesrcfile_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_parsesrcfile_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filepath, runOnInit);
}
@@ -50366,14 +56335,14 @@ int HP_npc_parsesrcfile(const char *filepath, bool runOnInit) {
int HP_npc_script_event(struct map_session_data *sd, enum npce_event type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_script_event_pre ) {
+ if (HPMHooks.count.HP_npc_script_event_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, enum npce_event *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_script_event_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_script_event_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_script_event_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -50381,9 +56350,9 @@ int HP_npc_script_event(struct map_session_data *sd, enum npce_event type) {
{
retVal___ = HPMHooks.source.npc.script_event(sd, type);
}
- if( HPMHooks.count.HP_npc_script_event_post ) {
+ if (HPMHooks.count.HP_npc_script_event_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, enum npce_event type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_script_event_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_script_event_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_script_event_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, type);
}
@@ -50392,14 +56361,14 @@ int HP_npc_script_event(struct map_session_data *sd, enum npce_event type) {
}
void HP_npc_read_event_script(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_read_event_script_pre ) {
+ if (HPMHooks.count.HP_npc_read_event_script_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_read_event_script_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_read_event_script_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_read_event_script_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -50407,9 +56376,9 @@ void HP_npc_read_event_script(void) {
{
HPMHooks.source.npc.read_event_script();
}
- if( HPMHooks.count.HP_npc_read_event_script_post ) {
+ if (HPMHooks.count.HP_npc_read_event_script_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_read_event_script_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_read_event_script_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_read_event_script_post[hIndex].func;
postHookFunc();
}
@@ -50419,16 +56388,16 @@ void HP_npc_read_event_script(void) {
int HP_npc_path_db_clear_sub(union DBKey key, struct DBData *data, va_list args) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_path_db_clear_sub_pre ) {
+ if (HPMHooks.count.HP_npc_path_db_clear_sub_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_path_db_clear_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_path_db_clear_sub_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_npc_path_db_clear_sub_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -50438,9 +56407,9 @@ int HP_npc_path_db_clear_sub(union DBKey key, struct DBData *data, va_list args)
retVal___ = HPMHooks.source.npc.path_db_clear_sub(key, data, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_npc_path_db_clear_sub_post ) {
+ if (HPMHooks.count.HP_npc_path_db_clear_sub_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_path_db_clear_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_path_db_clear_sub_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_npc_path_db_clear_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, args___copy);
@@ -50452,16 +56421,16 @@ int HP_npc_path_db_clear_sub(union DBKey key, struct DBData *data, va_list args)
int HP_npc_ev_label_db_clear_sub(union DBKey key, struct DBData *data, va_list args) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_ev_label_db_clear_sub_pre ) {
+ if (HPMHooks.count.HP_npc_ev_label_db_clear_sub_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_ev_label_db_clear_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_ev_label_db_clear_sub_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_npc_ev_label_db_clear_sub_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -50471,9 +56440,9 @@ int HP_npc_ev_label_db_clear_sub(union DBKey key, struct DBData *data, va_list a
retVal___ = HPMHooks.source.npc.ev_label_db_clear_sub(key, data, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_npc_ev_label_db_clear_sub_post ) {
+ if (HPMHooks.count.HP_npc_ev_label_db_clear_sub_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_ev_label_db_clear_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_ev_label_db_clear_sub_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_npc_ev_label_db_clear_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, args___copy);
@@ -50485,14 +56454,14 @@ int HP_npc_ev_label_db_clear_sub(union DBKey key, struct DBData *data, va_list a
int HP_npc_reload(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_reload_pre ) {
+ if (HPMHooks.count.HP_npc_reload_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_reload_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_reload_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_reload_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -50500,9 +56469,9 @@ int HP_npc_reload(void) {
{
retVal___ = HPMHooks.source.npc.reload();
}
- if( HPMHooks.count.HP_npc_reload_post ) {
+ if (HPMHooks.count.HP_npc_reload_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_reload_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_reload_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_reload_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -50512,14 +56481,14 @@ int HP_npc_reload(void) {
bool HP_npc_unloadfile(const char *filepath) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_npc_unloadfile_pre ) {
+ if (HPMHooks.count.HP_npc_unloadfile_pre > 0) {
bool (*preHookFunc) (const char **filepath);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_unloadfile_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_unloadfile_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_unloadfile_pre[hIndex].func;
retVal___ = preHookFunc(&filepath);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -50527,9 +56496,9 @@ bool HP_npc_unloadfile(const char *filepath) {
{
retVal___ = HPMHooks.source.npc.unloadfile(filepath);
}
- if( HPMHooks.count.HP_npc_unloadfile_post ) {
+ if (HPMHooks.count.HP_npc_unloadfile_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *filepath);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_unloadfile_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_unloadfile_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_unloadfile_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filepath);
}
@@ -50538,14 +56507,14 @@ bool HP_npc_unloadfile(const char *filepath) {
}
void HP_npc_do_clear_npc(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_do_clear_npc_pre ) {
+ if (HPMHooks.count.HP_npc_do_clear_npc_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_do_clear_npc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_do_clear_npc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_do_clear_npc_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -50553,9 +56522,9 @@ void HP_npc_do_clear_npc(void) {
{
HPMHooks.source.npc.do_clear_npc();
}
- if( HPMHooks.count.HP_npc_do_clear_npc_post ) {
+ if (HPMHooks.count.HP_npc_do_clear_npc_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_do_clear_npc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_do_clear_npc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_do_clear_npc_post[hIndex].func;
postHookFunc();
}
@@ -50564,14 +56533,14 @@ void HP_npc_do_clear_npc(void) {
}
void HP_npc_debug_warps_sub(struct npc_data *nd) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_debug_warps_sub_pre ) {
+ if (HPMHooks.count.HP_npc_debug_warps_sub_pre > 0) {
void (*preHookFunc) (struct npc_data **nd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_debug_warps_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_debug_warps_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_debug_warps_sub_pre[hIndex].func;
preHookFunc(&nd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -50579,9 +56548,9 @@ void HP_npc_debug_warps_sub(struct npc_data *nd) {
{
HPMHooks.source.npc.debug_warps_sub(nd);
}
- if( HPMHooks.count.HP_npc_debug_warps_sub_post ) {
+ if (HPMHooks.count.HP_npc_debug_warps_sub_post > 0) {
void (*postHookFunc) (struct npc_data *nd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_debug_warps_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_debug_warps_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_debug_warps_sub_post[hIndex].func;
postHookFunc(nd);
}
@@ -50590,14 +56559,14 @@ void HP_npc_debug_warps_sub(struct npc_data *nd) {
}
void HP_npc_debug_warps(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_debug_warps_pre ) {
+ if (HPMHooks.count.HP_npc_debug_warps_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_debug_warps_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_debug_warps_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_debug_warps_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -50605,9 +56574,9 @@ void HP_npc_debug_warps(void) {
{
HPMHooks.source.npc.debug_warps();
}
- if( HPMHooks.count.HP_npc_debug_warps_post ) {
+ if (HPMHooks.count.HP_npc_debug_warps_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_debug_warps_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_debug_warps_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_debug_warps_post[hIndex].func;
postHookFunc();
}
@@ -50616,14 +56585,14 @@ void HP_npc_debug_warps(void) {
}
void HP_npc_trader_count_funds(struct npc_data *nd, struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_trader_count_funds_pre ) {
+ if (HPMHooks.count.HP_npc_trader_count_funds_pre > 0) {
void (*preHookFunc) (struct npc_data **nd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_trader_count_funds_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_trader_count_funds_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_trader_count_funds_pre[hIndex].func;
preHookFunc(&nd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -50631,9 +56600,9 @@ void HP_npc_trader_count_funds(struct npc_data *nd, struct map_session_data *sd)
{
HPMHooks.source.npc.trader_count_funds(nd, sd);
}
- if( HPMHooks.count.HP_npc_trader_count_funds_post ) {
+ if (HPMHooks.count.HP_npc_trader_count_funds_post > 0) {
void (*postHookFunc) (struct npc_data *nd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_trader_count_funds_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_trader_count_funds_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_trader_count_funds_post[hIndex].func;
postHookFunc(nd, sd);
}
@@ -50643,14 +56612,14 @@ void HP_npc_trader_count_funds(struct npc_data *nd, struct map_session_data *sd)
bool HP_npc_trader_pay(struct npc_data *nd, struct map_session_data *sd, int price, int points) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_npc_trader_pay_pre ) {
+ if (HPMHooks.count.HP_npc_trader_pay_pre > 0) {
bool (*preHookFunc) (struct npc_data **nd, struct map_session_data **sd, int *price, int *points);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_trader_pay_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_trader_pay_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_trader_pay_pre[hIndex].func;
retVal___ = preHookFunc(&nd, &sd, &price, &points);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -50658,9 +56627,9 @@ bool HP_npc_trader_pay(struct npc_data *nd, struct map_session_data *sd, int pri
{
retVal___ = HPMHooks.source.npc.trader_pay(nd, sd, price, points);
}
- if( HPMHooks.count.HP_npc_trader_pay_post ) {
+ if (HPMHooks.count.HP_npc_trader_pay_post > 0) {
bool (*postHookFunc) (bool retVal___, struct npc_data *nd, struct map_session_data *sd, int price, int points);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_trader_pay_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_trader_pay_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_trader_pay_post[hIndex].func;
retVal___ = postHookFunc(retVal___, nd, sd, price, points);
}
@@ -50669,14 +56638,14 @@ bool HP_npc_trader_pay(struct npc_data *nd, struct map_session_data *sd, int pri
}
void HP_npc_trader_update(int master) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_trader_update_pre ) {
+ if (HPMHooks.count.HP_npc_trader_update_pre > 0) {
void (*preHookFunc) (int *master);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_trader_update_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_trader_update_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_trader_update_pre[hIndex].func;
preHookFunc(&master);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -50684,9 +56653,9 @@ void HP_npc_trader_update(int master) {
{
HPMHooks.source.npc.trader_update(master);
}
- if( HPMHooks.count.HP_npc_trader_update_post ) {
+ if (HPMHooks.count.HP_npc_trader_update_post > 0) {
void (*postHookFunc) (int master);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_trader_update_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_trader_update_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_trader_update_post[hIndex].func;
postHookFunc(master);
}
@@ -50696,14 +56665,14 @@ void HP_npc_trader_update(int master) {
int HP_npc_market_buylist(struct map_session_data *sd, struct itemlist *item_list) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_market_buylist_pre ) {
+ if (HPMHooks.count.HP_npc_market_buylist_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct itemlist **item_list);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_market_buylist_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_market_buylist_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_market_buylist_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &item_list);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -50711,26 +56680,53 @@ int HP_npc_market_buylist(struct map_session_data *sd, struct itemlist *item_lis
{
retVal___ = HPMHooks.source.npc.market_buylist(sd, item_list);
}
- if( HPMHooks.count.HP_npc_market_buylist_post ) {
+ if (HPMHooks.count.HP_npc_market_buylist_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct itemlist *item_list);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_market_buylist_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_market_buylist_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_market_buylist_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, item_list);
}
}
return retVal___;
}
+int HP_npc_barter_buylist(struct map_session_data *sd, struct barteritemlist *item_list) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_npc_barter_buylist_pre > 0) {
+ int (*preHookFunc) (struct map_session_data **sd, struct barteritemlist **item_list);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_barter_buylist_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_npc_barter_buylist_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &item_list);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.npc.barter_buylist(sd, item_list);
+ }
+ if (HPMHooks.count.HP_npc_barter_buylist_post > 0) {
+ int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct barteritemlist *item_list);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_barter_buylist_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_npc_barter_buylist_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, item_list);
+ }
+ }
+ return retVal___;
+}
bool HP_npc_trader_open(struct map_session_data *sd, struct npc_data *nd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_npc_trader_open_pre ) {
+ if (HPMHooks.count.HP_npc_trader_open_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, struct npc_data **nd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_trader_open_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_trader_open_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_trader_open_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &nd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -50738,9 +56734,9 @@ bool HP_npc_trader_open(struct map_session_data *sd, struct npc_data *nd) {
{
retVal___ = HPMHooks.source.npc.trader_open(sd, nd);
}
- if( HPMHooks.count.HP_npc_trader_open_post ) {
+ if (HPMHooks.count.HP_npc_trader_open_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, struct npc_data *nd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_trader_open_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_trader_open_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_trader_open_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, nd);
}
@@ -50749,14 +56745,14 @@ bool HP_npc_trader_open(struct map_session_data *sd, struct npc_data *nd) {
}
void HP_npc_market_fromsql(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_market_fromsql_pre ) {
+ if (HPMHooks.count.HP_npc_market_fromsql_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_market_fromsql_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_market_fromsql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_market_fromsql_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -50764,25 +56760,25 @@ void HP_npc_market_fromsql(void) {
{
HPMHooks.source.npc.market_fromsql();
}
- if( HPMHooks.count.HP_npc_market_fromsql_post ) {
+ if (HPMHooks.count.HP_npc_market_fromsql_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_market_fromsql_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_market_fromsql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_market_fromsql_post[hIndex].func;
postHookFunc();
}
}
return;
}
-void HP_npc_market_tosql(struct npc_data *nd, unsigned short index) {
+void HP_npc_market_tosql(struct npc_data *nd, int index) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_market_tosql_pre ) {
- void (*preHookFunc) (struct npc_data **nd, unsigned short *index);
+ if (HPMHooks.count.HP_npc_market_tosql_pre > 0) {
+ void (*preHookFunc) (struct npc_data **nd, int *index);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_market_tosql_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_market_tosql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_market_tosql_pre[hIndex].func;
preHookFunc(&nd, &index);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -50790,25 +56786,25 @@ void HP_npc_market_tosql(struct npc_data *nd, unsigned short index) {
{
HPMHooks.source.npc.market_tosql(nd, index);
}
- if( HPMHooks.count.HP_npc_market_tosql_post ) {
- void (*postHookFunc) (struct npc_data *nd, unsigned short index);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_market_tosql_post; hIndex++ ) {
+ if (HPMHooks.count.HP_npc_market_tosql_post > 0) {
+ void (*postHookFunc) (struct npc_data *nd, int index);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_market_tosql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_market_tosql_post[hIndex].func;
postHookFunc(nd, index);
}
}
return;
}
-void HP_npc_market_delfromsql(struct npc_data *nd, unsigned short index) {
+void HP_npc_market_delfromsql(struct npc_data *nd, int index) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_market_delfromsql_pre ) {
- void (*preHookFunc) (struct npc_data **nd, unsigned short *index);
+ if (HPMHooks.count.HP_npc_market_delfromsql_pre > 0) {
+ void (*preHookFunc) (struct npc_data **nd, int *index);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_market_delfromsql_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_market_delfromsql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_market_delfromsql_pre[hIndex].func;
preHookFunc(&nd, &index);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -50816,25 +56812,25 @@ void HP_npc_market_delfromsql(struct npc_data *nd, unsigned short index) {
{
HPMHooks.source.npc.market_delfromsql(nd, index);
}
- if( HPMHooks.count.HP_npc_market_delfromsql_post ) {
- void (*postHookFunc) (struct npc_data *nd, unsigned short index);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_market_delfromsql_post; hIndex++ ) {
+ if (HPMHooks.count.HP_npc_market_delfromsql_post > 0) {
+ void (*postHookFunc) (struct npc_data *nd, int index);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_market_delfromsql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_market_delfromsql_post[hIndex].func;
postHookFunc(nd, index);
}
}
return;
}
-void HP_npc_market_delfromsql_sub(const char *npcname, unsigned short index) {
+void HP_npc_market_delfromsql_sub(const char *npcname, int index) {
int hIndex = 0;
- if( HPMHooks.count.HP_npc_market_delfromsql_sub_pre ) {
- void (*preHookFunc) (const char **npcname, unsigned short *index);
+ if (HPMHooks.count.HP_npc_market_delfromsql_sub_pre > 0) {
+ void (*preHookFunc) (const char **npcname, int *index);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_market_delfromsql_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_market_delfromsql_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_market_delfromsql_sub_pre[hIndex].func;
preHookFunc(&npcname, &index);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -50842,26 +56838,130 @@ void HP_npc_market_delfromsql_sub(const char *npcname, unsigned short index) {
{
HPMHooks.source.npc.market_delfromsql_sub(npcname, index);
}
- if( HPMHooks.count.HP_npc_market_delfromsql_sub_post ) {
- void (*postHookFunc) (const char *npcname, unsigned short index);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_market_delfromsql_sub_post; hIndex++ ) {
+ if (HPMHooks.count.HP_npc_market_delfromsql_sub_post > 0) {
+ void (*postHookFunc) (const char *npcname, int index);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_market_delfromsql_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_market_delfromsql_sub_post[hIndex].func;
postHookFunc(npcname, index);
}
}
return;
}
+void HP_npc_barter_fromsql(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_npc_barter_fromsql_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_barter_fromsql_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_npc_barter_fromsql_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.npc.barter_fromsql();
+ }
+ if (HPMHooks.count.HP_npc_barter_fromsql_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_barter_fromsql_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_npc_barter_fromsql_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+void HP_npc_barter_tosql(struct npc_data *nd, int index) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_npc_barter_tosql_pre > 0) {
+ void (*preHookFunc) (struct npc_data **nd, int *index);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_barter_tosql_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_npc_barter_tosql_pre[hIndex].func;
+ preHookFunc(&nd, &index);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.npc.barter_tosql(nd, index);
+ }
+ if (HPMHooks.count.HP_npc_barter_tosql_post > 0) {
+ void (*postHookFunc) (struct npc_data *nd, int index);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_barter_tosql_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_npc_barter_tosql_post[hIndex].func;
+ postHookFunc(nd, index);
+ }
+ }
+ return;
+}
+void HP_npc_barter_delfromsql(struct npc_data *nd, int index) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_npc_barter_delfromsql_pre > 0) {
+ void (*preHookFunc) (struct npc_data **nd, int *index);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_barter_delfromsql_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_npc_barter_delfromsql_pre[hIndex].func;
+ preHookFunc(&nd, &index);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.npc.barter_delfromsql(nd, index);
+ }
+ if (HPMHooks.count.HP_npc_barter_delfromsql_post > 0) {
+ void (*postHookFunc) (struct npc_data *nd, int index);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_barter_delfromsql_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_npc_barter_delfromsql_post[hIndex].func;
+ postHookFunc(nd, index);
+ }
+ }
+ return;
+}
+void HP_npc_barter_delfromsql_sub(const char *npcname, int itemId, int itemId2, int amount2) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_npc_barter_delfromsql_sub_pre > 0) {
+ void (*preHookFunc) (const char **npcname, int *itemId, int *itemId2, int *amount2);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_barter_delfromsql_sub_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_npc_barter_delfromsql_sub_pre[hIndex].func;
+ preHookFunc(&npcname, &itemId, &itemId2, &amount2);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.npc.barter_delfromsql_sub(npcname, itemId, itemId2, amount2);
+ }
+ if (HPMHooks.count.HP_npc_barter_delfromsql_sub_post > 0) {
+ void (*postHookFunc) (const char *npcname, int itemId, int itemId2, int amount2);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_barter_delfromsql_sub_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_npc_barter_delfromsql_sub_post[hIndex].func;
+ postHookFunc(npcname, itemId, itemId2, amount2);
+ }
+ }
+ return;
+}
bool HP_npc_db_checkid(const int id) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_npc_db_checkid_pre ) {
+ if (HPMHooks.count.HP_npc_db_checkid_pre > 0) {
bool (*preHookFunc) (const int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_db_checkid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_db_checkid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_db_checkid_pre[hIndex].func;
retVal___ = preHookFunc(&id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -50869,26 +56969,52 @@ bool HP_npc_db_checkid(const int id) {
{
retVal___ = HPMHooks.source.npc.db_checkid(id);
}
- if( HPMHooks.count.HP_npc_db_checkid_post ) {
+ if (HPMHooks.count.HP_npc_db_checkid_post > 0) {
bool (*postHookFunc) (bool retVal___, const int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_db_checkid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_db_checkid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_db_checkid_post[hIndex].func;
retVal___ = postHookFunc(retVal___, id);
}
}
return retVal___;
}
+void HP_npc_refresh(struct npc_data *nd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_npc_refresh_pre > 0) {
+ void (*preHookFunc) (struct npc_data **nd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_refresh_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_npc_refresh_pre[hIndex].func;
+ preHookFunc(&nd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.npc.refresh(nd);
+ }
+ if (HPMHooks.count.HP_npc_refresh_post > 0) {
+ void (*postHookFunc) (struct npc_data *nd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_refresh_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_npc_refresh_post[hIndex].func;
+ postHookFunc(nd);
+ }
+ }
+ return;
+}
int HP_npc_secure_timeout_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_npc_secure_timeout_timer_pre ) {
+ if (HPMHooks.count.HP_npc_secure_timeout_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_secure_timeout_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_secure_timeout_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_secure_timeout_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -50896,9 +57022,9 @@ int HP_npc_secure_timeout_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.npc.secure_timeout_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_npc_secure_timeout_timer_post ) {
+ if (HPMHooks.count.HP_npc_secure_timeout_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_npc_secure_timeout_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_secure_timeout_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_secure_timeout_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -50908,14 +57034,14 @@ int HP_npc_secure_timeout_timer(int tid, int64 tick, int id, intptr_t data) {
/* nullpo_interface */
void HP_nullpo_assert_report(const char *file, int line, const char *func, const char *targetname, const char *title) {
int hIndex = 0;
- if( HPMHooks.count.HP_nullpo_assert_report_pre ) {
+ if (HPMHooks.count.HP_nullpo_assert_report_pre > 0) {
void (*preHookFunc) (const char **file, int *line, const char **func, const char **targetname, const char **title);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_nullpo_assert_report_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_nullpo_assert_report_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_nullpo_assert_report_pre[hIndex].func;
preHookFunc(&file, &line, &func, &targetname, &title);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -50923,26 +57049,131 @@ void HP_nullpo_assert_report(const char *file, int line, const char *func, const
{
HPMHooks.source.nullpo.assert_report(file, line, func, targetname, title);
}
- if( HPMHooks.count.HP_nullpo_assert_report_post ) {
+ if (HPMHooks.count.HP_nullpo_assert_report_post > 0) {
void (*postHookFunc) (const char *file, int line, const char *func, const char *targetname, const char *title);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_nullpo_assert_report_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_nullpo_assert_report_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_nullpo_assert_report_post[hIndex].func;
postHookFunc(file, line, func, targetname, title);
}
}
return;
}
+/* packets_interface */
+void HP_packets_init(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_packets_init_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_packets_init_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_packets_init_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.packets.init();
+ }
+ if (HPMHooks.count.HP_packets_init_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_packets_init_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_packets_init_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+void HP_packets_final(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_packets_final_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_packets_final_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_packets_final_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.packets.final();
+ }
+ if (HPMHooks.count.HP_packets_final_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_packets_final_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_packets_final_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+void HP_packets_addLens(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_packets_addLens_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_packets_addLens_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_packets_addLens_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.packets.addLens();
+ }
+ if (HPMHooks.count.HP_packets_addLens_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_packets_addLens_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_packets_addLens_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+void HP_packets_addLen(int id, int len) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_packets_addLen_pre > 0) {
+ void (*preHookFunc) (int *id, int *len);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_packets_addLen_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_packets_addLen_pre[hIndex].func;
+ preHookFunc(&id, &len);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.packets.addLen(id, len);
+ }
+ if (HPMHooks.count.HP_packets_addLen_post > 0) {
+ void (*postHookFunc) (int id, int len);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_packets_addLen_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_packets_addLen_post[hIndex].func;
+ postHookFunc(id, len);
+ }
+ }
+ return;
+}
/* party_interface */
void HP_party_init(bool minimal) {
int hIndex = 0;
- if( HPMHooks.count.HP_party_init_pre ) {
+ if (HPMHooks.count.HP_party_init_pre > 0) {
void (*preHookFunc) (bool *minimal);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_init_pre[hIndex].func;
preHookFunc(&minimal);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -50950,9 +57181,9 @@ void HP_party_init(bool minimal) {
{
HPMHooks.source.party.init(minimal);
}
- if( HPMHooks.count.HP_party_init_post ) {
+ if (HPMHooks.count.HP_party_init_post > 0) {
void (*postHookFunc) (bool minimal);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_init_post[hIndex].func;
postHookFunc(minimal);
}
@@ -50961,14 +57192,14 @@ void HP_party_init(bool minimal) {
}
void HP_party_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_party_final_pre ) {
+ if (HPMHooks.count.HP_party_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -50976,9 +57207,9 @@ void HP_party_final(void) {
{
HPMHooks.source.party.final();
}
- if( HPMHooks.count.HP_party_final_post ) {
+ if (HPMHooks.count.HP_party_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_final_post[hIndex].func;
postHookFunc();
}
@@ -50988,14 +57219,14 @@ void HP_party_final(void) {
struct party_data* HP_party_search(int party_id) {
int hIndex = 0;
struct party_data* retVal___ = NULL;
- if( HPMHooks.count.HP_party_search_pre ) {
+ if (HPMHooks.count.HP_party_search_pre > 0) {
struct party_data* (*preHookFunc) (int *party_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_search_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_search_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_search_pre[hIndex].func;
retVal___ = preHookFunc(&party_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -51003,9 +57234,9 @@ struct party_data* HP_party_search(int party_id) {
{
retVal___ = HPMHooks.source.party.search(party_id);
}
- if( HPMHooks.count.HP_party_search_post ) {
+ if (HPMHooks.count.HP_party_search_post > 0) {
struct party_data* (*postHookFunc) (struct party_data* retVal___, int party_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_search_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_search_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_search_post[hIndex].func;
retVal___ = postHookFunc(retVal___, party_id);
}
@@ -51015,14 +57246,14 @@ struct party_data* HP_party_search(int party_id) {
struct party_data* HP_party_searchname(const char *str) {
int hIndex = 0;
struct party_data* retVal___ = NULL;
- if( HPMHooks.count.HP_party_searchname_pre ) {
+ if (HPMHooks.count.HP_party_searchname_pre > 0) {
struct party_data* (*preHookFunc) (const char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_searchname_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_searchname_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_searchname_pre[hIndex].func;
retVal___ = preHookFunc(&str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -51030,9 +57261,9 @@ struct party_data* HP_party_searchname(const char *str) {
{
retVal___ = HPMHooks.source.party.searchname(str);
}
- if( HPMHooks.count.HP_party_searchname_post ) {
+ if (HPMHooks.count.HP_party_searchname_post > 0) {
struct party_data* (*postHookFunc) (struct party_data* retVal___, const char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_searchname_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_searchname_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_searchname_post[hIndex].func;
retVal___ = postHookFunc(retVal___, str);
}
@@ -51042,14 +57273,14 @@ struct party_data* HP_party_searchname(const char *str) {
int HP_party_getmemberid(struct party_data *p, struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_party_getmemberid_pre ) {
+ if (HPMHooks.count.HP_party_getmemberid_pre > 0) {
int (*preHookFunc) (struct party_data **p, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_getmemberid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_getmemberid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_getmemberid_pre[hIndex].func;
retVal___ = preHookFunc(&p, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -51057,9 +57288,9 @@ int HP_party_getmemberid(struct party_data *p, struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.party.getmemberid(p, sd);
}
- if( HPMHooks.count.HP_party_getmemberid_post ) {
+ if (HPMHooks.count.HP_party_getmemberid_post > 0) {
int (*postHookFunc) (int retVal___, struct party_data *p, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_getmemberid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_getmemberid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_getmemberid_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p, sd);
}
@@ -51069,14 +57300,14 @@ int HP_party_getmemberid(struct party_data *p, struct map_session_data *sd) {
struct map_session_data* HP_party_getavailablesd(struct party_data *p) {
int hIndex = 0;
struct map_session_data* retVal___ = NULL;
- if( HPMHooks.count.HP_party_getavailablesd_pre ) {
+ if (HPMHooks.count.HP_party_getavailablesd_pre > 0) {
struct map_session_data* (*preHookFunc) (struct party_data **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_getavailablesd_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_getavailablesd_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_getavailablesd_pre[hIndex].func;
retVal___ = preHookFunc(&p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -51084,9 +57315,9 @@ struct map_session_data* HP_party_getavailablesd(struct party_data *p) {
{
retVal___ = HPMHooks.source.party.getavailablesd(p);
}
- if( HPMHooks.count.HP_party_getavailablesd_post ) {
+ if (HPMHooks.count.HP_party_getavailablesd_post > 0) {
struct map_session_data* (*postHookFunc) (struct map_session_data* retVal___, struct party_data *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_getavailablesd_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_getavailablesd_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_getavailablesd_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p);
}
@@ -51096,14 +57327,14 @@ struct map_session_data* HP_party_getavailablesd(struct party_data *p) {
int HP_party_create(struct map_session_data *sd, const char *name, int item, int item2) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_party_create_pre ) {
+ if (HPMHooks.count.HP_party_create_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, const char **name, int *item, int *item2);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_create_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &name, &item, &item2);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -51111,9 +57342,9 @@ int HP_party_create(struct map_session_data *sd, const char *name, int item, int
{
retVal___ = HPMHooks.source.party.create(sd, name, item, item2);
}
- if( HPMHooks.count.HP_party_create_post ) {
+ if (HPMHooks.count.HP_party_create_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, const char *name, int item, int item2);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_create_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, name, item, item2);
}
@@ -51122,14 +57353,14 @@ int HP_party_create(struct map_session_data *sd, const char *name, int item, int
}
void HP_party_created(int account_id, int char_id, int fail, int party_id, const char *name) {
int hIndex = 0;
- if( HPMHooks.count.HP_party_created_pre ) {
+ if (HPMHooks.count.HP_party_created_pre > 0) {
void (*preHookFunc) (int *account_id, int *char_id, int *fail, int *party_id, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_created_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_created_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_created_pre[hIndex].func;
preHookFunc(&account_id, &char_id, &fail, &party_id, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -51137,9 +57368,9 @@ void HP_party_created(int account_id, int char_id, int fail, int party_id, const
{
HPMHooks.source.party.created(account_id, char_id, fail, party_id, name);
}
- if( HPMHooks.count.HP_party_created_post ) {
+ if (HPMHooks.count.HP_party_created_post > 0) {
void (*postHookFunc) (int account_id, int char_id, int fail, int party_id, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_created_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_created_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_created_post[hIndex].func;
postHookFunc(account_id, char_id, fail, party_id, name);
}
@@ -51149,14 +57380,14 @@ void HP_party_created(int account_id, int char_id, int fail, int party_id, const
int HP_party_request_info(int party_id, int char_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_party_request_info_pre ) {
+ if (HPMHooks.count.HP_party_request_info_pre > 0) {
int (*preHookFunc) (int *party_id, int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_request_info_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_request_info_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_request_info_pre[hIndex].func;
retVal___ = preHookFunc(&party_id, &char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -51164,9 +57395,9 @@ int HP_party_request_info(int party_id, int char_id) {
{
retVal___ = HPMHooks.source.party.request_info(party_id, char_id);
}
- if( HPMHooks.count.HP_party_request_info_post ) {
+ if (HPMHooks.count.HP_party_request_info_post > 0) {
int (*postHookFunc) (int retVal___, int party_id, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_request_info_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_request_info_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_request_info_post[hIndex].func;
retVal___ = postHookFunc(retVal___, party_id, char_id);
}
@@ -51176,14 +57407,14 @@ int HP_party_request_info(int party_id, int char_id) {
int HP_party_invite(struct map_session_data *sd, struct map_session_data *tsd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_party_invite_pre ) {
+ if (HPMHooks.count.HP_party_invite_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct map_session_data **tsd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_invite_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_invite_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_invite_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &tsd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -51191,9 +57422,9 @@ int HP_party_invite(struct map_session_data *sd, struct map_session_data *tsd) {
{
retVal___ = HPMHooks.source.party.invite(sd, tsd);
}
- if( HPMHooks.count.HP_party_invite_post ) {
+ if (HPMHooks.count.HP_party_invite_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct map_session_data *tsd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_invite_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_invite_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_invite_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, tsd);
}
@@ -51202,14 +57433,14 @@ int HP_party_invite(struct map_session_data *sd, struct map_session_data *tsd) {
}
void HP_party_member_joined(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_party_member_joined_pre ) {
+ if (HPMHooks.count.HP_party_member_joined_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_member_joined_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_member_joined_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_member_joined_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -51217,9 +57448,9 @@ void HP_party_member_joined(struct map_session_data *sd) {
{
HPMHooks.source.party.member_joined(sd);
}
- if( HPMHooks.count.HP_party_member_joined_post ) {
+ if (HPMHooks.count.HP_party_member_joined_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_member_joined_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_member_joined_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_member_joined_post[hIndex].func;
postHookFunc(sd);
}
@@ -51229,14 +57460,14 @@ void HP_party_member_joined(struct map_session_data *sd) {
int HP_party_member_added(int party_id, int account_id, int char_id, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_party_member_added_pre ) {
+ if (HPMHooks.count.HP_party_member_added_pre > 0) {
int (*preHookFunc) (int *party_id, int *account_id, int *char_id, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_member_added_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_member_added_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_member_added_pre[hIndex].func;
retVal___ = preHookFunc(&party_id, &account_id, &char_id, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -51244,9 +57475,9 @@ int HP_party_member_added(int party_id, int account_id, int char_id, int flag) {
{
retVal___ = HPMHooks.source.party.member_added(party_id, account_id, char_id, flag);
}
- if( HPMHooks.count.HP_party_member_added_post ) {
+ if (HPMHooks.count.HP_party_member_added_post > 0) {
int (*postHookFunc) (int retVal___, int party_id, int account_id, int char_id, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_member_added_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_member_added_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_member_added_post[hIndex].func;
retVal___ = postHookFunc(retVal___, party_id, account_id, char_id, flag);
}
@@ -51256,14 +57487,14 @@ int HP_party_member_added(int party_id, int account_id, int char_id, int flag) {
int HP_party_leave(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_party_leave_pre ) {
+ if (HPMHooks.count.HP_party_leave_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_leave_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_leave_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_leave_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -51271,9 +57502,9 @@ int HP_party_leave(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.party.leave(sd);
}
- if( HPMHooks.count.HP_party_leave_post ) {
+ if (HPMHooks.count.HP_party_leave_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_leave_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_leave_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_leave_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -51283,14 +57514,14 @@ int HP_party_leave(struct map_session_data *sd) {
int HP_party_removemember(struct map_session_data *sd, int account_id, const char *name) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_party_removemember_pre ) {
+ if (HPMHooks.count.HP_party_removemember_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *account_id, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_removemember_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_removemember_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_removemember_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &account_id, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -51298,9 +57529,9 @@ int HP_party_removemember(struct map_session_data *sd, int account_id, const cha
{
retVal___ = HPMHooks.source.party.removemember(sd, account_id, name);
}
- if( HPMHooks.count.HP_party_removemember_post ) {
+ if (HPMHooks.count.HP_party_removemember_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int account_id, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_removemember_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_removemember_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_removemember_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, account_id, name);
}
@@ -51310,14 +57541,14 @@ int HP_party_removemember(struct map_session_data *sd, int account_id, const cha
int HP_party_member_withdraw(int party_id, int account_id, int char_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_party_member_withdraw_pre ) {
+ if (HPMHooks.count.HP_party_member_withdraw_pre > 0) {
int (*preHookFunc) (int *party_id, int *account_id, int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_member_withdraw_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_member_withdraw_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_member_withdraw_pre[hIndex].func;
retVal___ = preHookFunc(&party_id, &account_id, &char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -51325,9 +57556,9 @@ int HP_party_member_withdraw(int party_id, int account_id, int char_id) {
{
retVal___ = HPMHooks.source.party.member_withdraw(party_id, account_id, char_id);
}
- if( HPMHooks.count.HP_party_member_withdraw_post ) {
+ if (HPMHooks.count.HP_party_member_withdraw_post > 0) {
int (*postHookFunc) (int retVal___, int party_id, int account_id, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_member_withdraw_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_member_withdraw_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_member_withdraw_post[hIndex].func;
retVal___ = postHookFunc(retVal___, party_id, account_id, char_id);
}
@@ -51336,14 +57567,14 @@ int HP_party_member_withdraw(int party_id, int account_id, int char_id) {
}
void HP_party_reply_invite(struct map_session_data *sd, int party_id, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_party_reply_invite_pre ) {
+ if (HPMHooks.count.HP_party_reply_invite_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *party_id, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_reply_invite_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_reply_invite_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_reply_invite_pre[hIndex].func;
preHookFunc(&sd, &party_id, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -51351,9 +57582,9 @@ void HP_party_reply_invite(struct map_session_data *sd, int party_id, int flag)
{
HPMHooks.source.party.reply_invite(sd, party_id, flag);
}
- if( HPMHooks.count.HP_party_reply_invite_post ) {
+ if (HPMHooks.count.HP_party_reply_invite_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int party_id, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_reply_invite_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_reply_invite_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_reply_invite_post[hIndex].func;
postHookFunc(sd, party_id, flag);
}
@@ -51363,14 +57594,14 @@ void HP_party_reply_invite(struct map_session_data *sd, int party_id, int flag)
int HP_party_recv_noinfo(int party_id, int char_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_party_recv_noinfo_pre ) {
+ if (HPMHooks.count.HP_party_recv_noinfo_pre > 0) {
int (*preHookFunc) (int *party_id, int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_recv_noinfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_recv_noinfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_recv_noinfo_pre[hIndex].func;
retVal___ = preHookFunc(&party_id, &char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -51378,9 +57609,9 @@ int HP_party_recv_noinfo(int party_id, int char_id) {
{
retVal___ = HPMHooks.source.party.recv_noinfo(party_id, char_id);
}
- if( HPMHooks.count.HP_party_recv_noinfo_post ) {
+ if (HPMHooks.count.HP_party_recv_noinfo_post > 0) {
int (*postHookFunc) (int retVal___, int party_id, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_recv_noinfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_recv_noinfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_recv_noinfo_post[hIndex].func;
retVal___ = postHookFunc(retVal___, party_id, char_id);
}
@@ -51390,14 +57621,14 @@ int HP_party_recv_noinfo(int party_id, int char_id) {
int HP_party_recv_info(const struct party *sp, int char_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_party_recv_info_pre ) {
+ if (HPMHooks.count.HP_party_recv_info_pre > 0) {
int (*preHookFunc) (const struct party **sp, int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_recv_info_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_recv_info_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_recv_info_pre[hIndex].func;
retVal___ = preHookFunc(&sp, &char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -51405,9 +57636,9 @@ int HP_party_recv_info(const struct party *sp, int char_id) {
{
retVal___ = HPMHooks.source.party.recv_info(sp, char_id);
}
- if( HPMHooks.count.HP_party_recv_info_post ) {
+ if (HPMHooks.count.HP_party_recv_info_post > 0) {
int (*postHookFunc) (int retVal___, const struct party *sp, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_recv_info_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_recv_info_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_recv_info_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sp, char_id);
}
@@ -51417,14 +57648,14 @@ int HP_party_recv_info(const struct party *sp, int char_id) {
int HP_party_recv_movemap(int party_id, int account_id, int char_id, unsigned short mapid, int online, int lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_party_recv_movemap_pre ) {
+ if (HPMHooks.count.HP_party_recv_movemap_pre > 0) {
int (*preHookFunc) (int *party_id, int *account_id, int *char_id, unsigned short *mapid, int *online, int *lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_recv_movemap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_recv_movemap_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_recv_movemap_pre[hIndex].func;
retVal___ = preHookFunc(&party_id, &account_id, &char_id, &mapid, &online, &lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -51432,9 +57663,9 @@ int HP_party_recv_movemap(int party_id, int account_id, int char_id, unsigned sh
{
retVal___ = HPMHooks.source.party.recv_movemap(party_id, account_id, char_id, mapid, online, lv);
}
- if( HPMHooks.count.HP_party_recv_movemap_post ) {
+ if (HPMHooks.count.HP_party_recv_movemap_post > 0) {
int (*postHookFunc) (int retVal___, int party_id, int account_id, int char_id, unsigned short mapid, int online, int lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_recv_movemap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_recv_movemap_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_recv_movemap_post[hIndex].func;
retVal___ = postHookFunc(retVal___, party_id, account_id, char_id, mapid, online, lv);
}
@@ -51444,14 +57675,14 @@ int HP_party_recv_movemap(int party_id, int account_id, int char_id, unsigned sh
int HP_party_broken(int party_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_party_broken_pre ) {
+ if (HPMHooks.count.HP_party_broken_pre > 0) {
int (*preHookFunc) (int *party_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_broken_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_broken_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_broken_pre[hIndex].func;
retVal___ = preHookFunc(&party_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -51459,9 +57690,9 @@ int HP_party_broken(int party_id) {
{
retVal___ = HPMHooks.source.party.broken(party_id);
}
- if( HPMHooks.count.HP_party_broken_post ) {
+ if (HPMHooks.count.HP_party_broken_post > 0) {
int (*postHookFunc) (int retVal___, int party_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_broken_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_broken_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_broken_post[hIndex].func;
retVal___ = postHookFunc(retVal___, party_id);
}
@@ -51471,14 +57702,14 @@ int HP_party_broken(int party_id) {
int HP_party_optionchanged(int party_id, int account_id, int exp, int item, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_party_optionchanged_pre ) {
+ if (HPMHooks.count.HP_party_optionchanged_pre > 0) {
int (*preHookFunc) (int *party_id, int *account_id, int *exp, int *item, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_optionchanged_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_optionchanged_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_optionchanged_pre[hIndex].func;
retVal___ = preHookFunc(&party_id, &account_id, &exp, &item, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -51486,9 +57717,9 @@ int HP_party_optionchanged(int party_id, int account_id, int exp, int item, int
{
retVal___ = HPMHooks.source.party.optionchanged(party_id, account_id, exp, item, flag);
}
- if( HPMHooks.count.HP_party_optionchanged_post ) {
+ if (HPMHooks.count.HP_party_optionchanged_post > 0) {
int (*postHookFunc) (int retVal___, int party_id, int account_id, int exp, int item, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_optionchanged_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_optionchanged_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_optionchanged_post[hIndex].func;
retVal___ = postHookFunc(retVal___, party_id, account_id, exp, item, flag);
}
@@ -51498,14 +57729,14 @@ int HP_party_optionchanged(int party_id, int account_id, int exp, int item, int
int HP_party_changeoption(struct map_session_data *sd, int exp, int item) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_party_changeoption_pre ) {
+ if (HPMHooks.count.HP_party_changeoption_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *exp, int *item);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_changeoption_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_changeoption_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_changeoption_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &exp, &item);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -51513,9 +57744,9 @@ int HP_party_changeoption(struct map_session_data *sd, int exp, int item) {
{
retVal___ = HPMHooks.source.party.changeoption(sd, exp, item);
}
- if( HPMHooks.count.HP_party_changeoption_post ) {
+ if (HPMHooks.count.HP_party_changeoption_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int exp, int item);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_changeoption_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_changeoption_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_changeoption_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, exp, item);
}
@@ -51525,14 +57756,14 @@ int HP_party_changeoption(struct map_session_data *sd, int exp, int item) {
bool HP_party_changeleader(struct map_session_data *sd, struct map_session_data *t_sd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_party_changeleader_pre ) {
+ if (HPMHooks.count.HP_party_changeleader_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, struct map_session_data **t_sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_changeleader_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_changeleader_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_changeleader_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &t_sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -51540,9 +57771,9 @@ bool HP_party_changeleader(struct map_session_data *sd, struct map_session_data
{
retVal___ = HPMHooks.source.party.changeleader(sd, t_sd);
}
- if( HPMHooks.count.HP_party_changeleader_post ) {
+ if (HPMHooks.count.HP_party_changeleader_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, struct map_session_data *t_sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_changeleader_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_changeleader_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_changeleader_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, t_sd);
}
@@ -51551,14 +57782,14 @@ bool HP_party_changeleader(struct map_session_data *sd, struct map_session_data
}
void HP_party_send_movemap(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_party_send_movemap_pre ) {
+ if (HPMHooks.count.HP_party_send_movemap_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_send_movemap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_send_movemap_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_send_movemap_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -51566,9 +57797,9 @@ void HP_party_send_movemap(struct map_session_data *sd) {
{
HPMHooks.source.party.send_movemap(sd);
}
- if( HPMHooks.count.HP_party_send_movemap_post ) {
+ if (HPMHooks.count.HP_party_send_movemap_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_send_movemap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_send_movemap_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_send_movemap_post[hIndex].func;
postHookFunc(sd);
}
@@ -51577,14 +57808,14 @@ void HP_party_send_movemap(struct map_session_data *sd) {
}
void HP_party_send_levelup(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_party_send_levelup_pre ) {
+ if (HPMHooks.count.HP_party_send_levelup_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_send_levelup_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_send_levelup_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_send_levelup_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -51592,9 +57823,9 @@ void HP_party_send_levelup(struct map_session_data *sd) {
{
HPMHooks.source.party.send_levelup(sd);
}
- if( HPMHooks.count.HP_party_send_levelup_post ) {
+ if (HPMHooks.count.HP_party_send_levelup_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_send_levelup_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_send_levelup_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_send_levelup_post[hIndex].func;
postHookFunc(sd);
}
@@ -51604,14 +57835,14 @@ void HP_party_send_levelup(struct map_session_data *sd) {
int HP_party_send_logout(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_party_send_logout_pre ) {
+ if (HPMHooks.count.HP_party_send_logout_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_send_logout_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_send_logout_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_send_logout_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -51619,9 +57850,9 @@ int HP_party_send_logout(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.party.send_logout(sd);
}
- if( HPMHooks.count.HP_party_send_logout_post ) {
+ if (HPMHooks.count.HP_party_send_logout_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_send_logout_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_send_logout_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_send_logout_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -51631,14 +57862,14 @@ int HP_party_send_logout(struct map_session_data *sd) {
int HP_party_send_message(struct map_session_data *sd, const char *mes) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_party_send_message_pre ) {
+ if (HPMHooks.count.HP_party_send_message_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, const char **mes);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_send_message_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_send_message_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_send_message_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &mes);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -51646,9 +57877,9 @@ int HP_party_send_message(struct map_session_data *sd, const char *mes) {
{
retVal___ = HPMHooks.source.party.send_message(sd, mes);
}
- if( HPMHooks.count.HP_party_send_message_post ) {
+ if (HPMHooks.count.HP_party_send_message_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, const char *mes);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_send_message_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_send_message_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_send_message_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, mes);
}
@@ -51658,14 +57889,14 @@ int HP_party_send_message(struct map_session_data *sd, const char *mes) {
int HP_party_recv_message(int party_id, int account_id, const char *mes, int len) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_party_recv_message_pre ) {
+ if (HPMHooks.count.HP_party_recv_message_pre > 0) {
int (*preHookFunc) (int *party_id, int *account_id, const char **mes, int *len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_recv_message_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_recv_message_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_recv_message_pre[hIndex].func;
retVal___ = preHookFunc(&party_id, &account_id, &mes, &len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -51673,9 +57904,9 @@ int HP_party_recv_message(int party_id, int account_id, const char *mes, int len
{
retVal___ = HPMHooks.source.party.recv_message(party_id, account_id, mes, len);
}
- if( HPMHooks.count.HP_party_recv_message_post ) {
+ if (HPMHooks.count.HP_party_recv_message_post > 0) {
int (*postHookFunc) (int retVal___, int party_id, int account_id, const char *mes, int len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_recv_message_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_recv_message_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_recv_message_post[hIndex].func;
retVal___ = postHookFunc(retVal___, party_id, account_id, mes, len);
}
@@ -51685,14 +57916,14 @@ int HP_party_recv_message(int party_id, int account_id, const char *mes, int len
int HP_party_skill_check(struct map_session_data *sd, int party_id, uint16 skill_id, uint16 skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_party_skill_check_pre ) {
+ if (HPMHooks.count.HP_party_skill_check_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *party_id, uint16 *skill_id, uint16 *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_skill_check_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_skill_check_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_skill_check_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &party_id, &skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -51700,9 +57931,9 @@ int HP_party_skill_check(struct map_session_data *sd, int party_id, uint16 skill
{
retVal___ = HPMHooks.source.party.skill_check(sd, party_id, skill_id, skill_lv);
}
- if( HPMHooks.count.HP_party_skill_check_post ) {
+ if (HPMHooks.count.HP_party_skill_check_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int party_id, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_skill_check_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_skill_check_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_skill_check_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, party_id, skill_id, skill_lv);
}
@@ -51712,14 +57943,14 @@ int HP_party_skill_check(struct map_session_data *sd, int party_id, uint16 skill
int HP_party_send_xy_clear(struct party_data *p) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_party_send_xy_clear_pre ) {
+ if (HPMHooks.count.HP_party_send_xy_clear_pre > 0) {
int (*preHookFunc) (struct party_data **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_send_xy_clear_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_send_xy_clear_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_send_xy_clear_pre[hIndex].func;
retVal___ = preHookFunc(&p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -51727,9 +57958,9 @@ int HP_party_send_xy_clear(struct party_data *p) {
{
retVal___ = HPMHooks.source.party.send_xy_clear(p);
}
- if( HPMHooks.count.HP_party_send_xy_clear_post ) {
+ if (HPMHooks.count.HP_party_send_xy_clear_post > 0) {
int (*postHookFunc) (int retVal___, struct party_data *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_send_xy_clear_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_send_xy_clear_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_send_xy_clear_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p);
}
@@ -51739,14 +57970,14 @@ int HP_party_send_xy_clear(struct party_data *p) {
int HP_party_exp_share(struct party_data *p, struct block_list *src, unsigned int base_exp, unsigned int job_exp, int zeny) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_party_exp_share_pre ) {
+ if (HPMHooks.count.HP_party_exp_share_pre > 0) {
int (*preHookFunc) (struct party_data **p, struct block_list **src, unsigned int *base_exp, unsigned int *job_exp, int *zeny);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_exp_share_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_exp_share_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_exp_share_pre[hIndex].func;
retVal___ = preHookFunc(&p, &src, &base_exp, &job_exp, &zeny);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -51754,9 +57985,9 @@ int HP_party_exp_share(struct party_data *p, struct block_list *src, unsigned in
{
retVal___ = HPMHooks.source.party.exp_share(p, src, base_exp, job_exp, zeny);
}
- if( HPMHooks.count.HP_party_exp_share_post ) {
+ if (HPMHooks.count.HP_party_exp_share_post > 0) {
int (*postHookFunc) (int retVal___, struct party_data *p, struct block_list *src, unsigned int base_exp, unsigned int job_exp, int zeny);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_exp_share_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_exp_share_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_exp_share_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p, src, base_exp, job_exp, zeny);
}
@@ -51766,14 +57997,14 @@ int HP_party_exp_share(struct party_data *p, struct block_list *src, unsigned in
int HP_party_share_loot(struct party_data *p, struct map_session_data *sd, struct item *item_data, int first_charid) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_party_share_loot_pre ) {
+ if (HPMHooks.count.HP_party_share_loot_pre > 0) {
int (*preHookFunc) (struct party_data **p, struct map_session_data **sd, struct item **item_data, int *first_charid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_share_loot_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_share_loot_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_share_loot_pre[hIndex].func;
retVal___ = preHookFunc(&p, &sd, &item_data, &first_charid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -51781,9 +58012,9 @@ int HP_party_share_loot(struct party_data *p, struct map_session_data *sd, struc
{
retVal___ = HPMHooks.source.party.share_loot(p, sd, item_data, first_charid);
}
- if( HPMHooks.count.HP_party_share_loot_post ) {
+ if (HPMHooks.count.HP_party_share_loot_post > 0) {
int (*postHookFunc) (int retVal___, struct party_data *p, struct map_session_data *sd, struct item *item_data, int first_charid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_share_loot_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_share_loot_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_share_loot_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p, sd, item_data, first_charid);
}
@@ -51793,14 +58024,14 @@ int HP_party_share_loot(struct party_data *p, struct map_session_data *sd, struc
int HP_party_send_dot_remove(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_party_send_dot_remove_pre ) {
+ if (HPMHooks.count.HP_party_send_dot_remove_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_send_dot_remove_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_send_dot_remove_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_send_dot_remove_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -51808,9 +58039,9 @@ int HP_party_send_dot_remove(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.party.send_dot_remove(sd);
}
- if( HPMHooks.count.HP_party_send_dot_remove_post ) {
+ if (HPMHooks.count.HP_party_send_dot_remove_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_send_dot_remove_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_send_dot_remove_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_send_dot_remove_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -51820,16 +58051,16 @@ int HP_party_send_dot_remove(struct map_session_data *sd) {
int HP_party_sub_count(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_party_sub_count_pre ) {
+ if (HPMHooks.count.HP_party_sub_count_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_sub_count_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_sub_count_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_party_sub_count_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -51839,9 +58070,9 @@ int HP_party_sub_count(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.party.sub_count(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_party_sub_count_post ) {
+ if (HPMHooks.count.HP_party_sub_count_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_sub_count_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_sub_count_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_party_sub_count_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -51853,16 +58084,16 @@ int HP_party_sub_count(struct block_list *bl, va_list ap) {
int HP_party_sub_count_chorus(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_party_sub_count_chorus_pre ) {
+ if (HPMHooks.count.HP_party_sub_count_chorus_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_sub_count_chorus_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_sub_count_chorus_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_party_sub_count_chorus_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -51872,9 +58103,9 @@ int HP_party_sub_count_chorus(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.party.sub_count_chorus(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_party_sub_count_chorus_post ) {
+ if (HPMHooks.count.HP_party_sub_count_chorus_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_sub_count_chorus_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_sub_count_chorus_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_party_sub_count_chorus_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -51885,14 +58116,14 @@ int HP_party_sub_count_chorus(struct block_list *bl, va_list ap) {
}
void HP_party_booking_register(struct map_session_data *sd, short level, short mapid, short *job) {
int hIndex = 0;
- if( HPMHooks.count.HP_party_booking_register_pre ) {
+ if (HPMHooks.count.HP_party_booking_register_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, short *level, short *mapid, short **job);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_booking_register_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_booking_register_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_booking_register_pre[hIndex].func;
preHookFunc(&sd, &level, &mapid, &job);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -51900,9 +58131,9 @@ void HP_party_booking_register(struct map_session_data *sd, short level, short m
{
HPMHooks.source.party.booking_register(sd, level, mapid, job);
}
- if( HPMHooks.count.HP_party_booking_register_post ) {
+ if (HPMHooks.count.HP_party_booking_register_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, short level, short mapid, short *job);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_booking_register_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_booking_register_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_booking_register_post[hIndex].func;
postHookFunc(sd, level, mapid, job);
}
@@ -51911,14 +58142,14 @@ void HP_party_booking_register(struct map_session_data *sd, short level, short m
}
void HP_party_booking_update(struct map_session_data *sd, short *job) {
int hIndex = 0;
- if( HPMHooks.count.HP_party_booking_update_pre ) {
+ if (HPMHooks.count.HP_party_booking_update_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, short **job);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_booking_update_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_booking_update_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_booking_update_pre[hIndex].func;
preHookFunc(&sd, &job);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -51926,9 +58157,9 @@ void HP_party_booking_update(struct map_session_data *sd, short *job) {
{
HPMHooks.source.party.booking_update(sd, job);
}
- if( HPMHooks.count.HP_party_booking_update_post ) {
+ if (HPMHooks.count.HP_party_booking_update_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, short *job);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_booking_update_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_booking_update_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_booking_update_post[hIndex].func;
postHookFunc(sd, job);
}
@@ -51937,14 +58168,14 @@ void HP_party_booking_update(struct map_session_data *sd, short *job) {
}
void HP_party_booking_search(struct map_session_data *sd, short level, short mapid, short job, unsigned long lastindex, short resultcount) {
int hIndex = 0;
- if( HPMHooks.count.HP_party_booking_search_pre ) {
+ if (HPMHooks.count.HP_party_booking_search_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, short *level, short *mapid, short *job, unsigned long *lastindex, short *resultcount);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_booking_search_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_booking_search_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_booking_search_pre[hIndex].func;
preHookFunc(&sd, &level, &mapid, &job, &lastindex, &resultcount);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -51952,9 +58183,9 @@ void HP_party_booking_search(struct map_session_data *sd, short level, short map
{
HPMHooks.source.party.booking_search(sd, level, mapid, job, lastindex, resultcount);
}
- if( HPMHooks.count.HP_party_booking_search_post ) {
+ if (HPMHooks.count.HP_party_booking_search_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, short level, short mapid, short job, unsigned long lastindex, short resultcount);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_booking_search_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_booking_search_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_booking_search_post[hIndex].func;
postHookFunc(sd, level, mapid, job, lastindex, resultcount);
}
@@ -51963,14 +58194,14 @@ void HP_party_booking_search(struct map_session_data *sd, short level, short map
}
void HP_party_recruit_register(struct map_session_data *sd, short level, const char *notice) {
int hIndex = 0;
- if( HPMHooks.count.HP_party_recruit_register_pre ) {
+ if (HPMHooks.count.HP_party_recruit_register_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, short *level, const char **notice);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_recruit_register_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_recruit_register_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_recruit_register_pre[hIndex].func;
preHookFunc(&sd, &level, &notice);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -51978,9 +58209,9 @@ void HP_party_recruit_register(struct map_session_data *sd, short level, const c
{
HPMHooks.source.party.recruit_register(sd, level, notice);
}
- if( HPMHooks.count.HP_party_recruit_register_post ) {
+ if (HPMHooks.count.HP_party_recruit_register_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, short level, const char *notice);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_recruit_register_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_recruit_register_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_recruit_register_post[hIndex].func;
postHookFunc(sd, level, notice);
}
@@ -51989,14 +58220,14 @@ void HP_party_recruit_register(struct map_session_data *sd, short level, const c
}
void HP_party_recruit_update(struct map_session_data *sd, const char *notice) {
int hIndex = 0;
- if( HPMHooks.count.HP_party_recruit_update_pre ) {
+ if (HPMHooks.count.HP_party_recruit_update_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, const char **notice);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_recruit_update_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_recruit_update_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_recruit_update_pre[hIndex].func;
preHookFunc(&sd, &notice);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -52004,9 +58235,9 @@ void HP_party_recruit_update(struct map_session_data *sd, const char *notice) {
{
HPMHooks.source.party.recruit_update(sd, notice);
}
- if( HPMHooks.count.HP_party_recruit_update_post ) {
+ if (HPMHooks.count.HP_party_recruit_update_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, const char *notice);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_recruit_update_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_recruit_update_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_recruit_update_post[hIndex].func;
postHookFunc(sd, notice);
}
@@ -52015,14 +58246,14 @@ void HP_party_recruit_update(struct map_session_data *sd, const char *notice) {
}
void HP_party_recruit_search(struct map_session_data *sd, short level, short mapid, unsigned long lastindex, short resultcount) {
int hIndex = 0;
- if( HPMHooks.count.HP_party_recruit_search_pre ) {
+ if (HPMHooks.count.HP_party_recruit_search_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, short *level, short *mapid, unsigned long *lastindex, short *resultcount);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_recruit_search_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_recruit_search_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_recruit_search_pre[hIndex].func;
preHookFunc(&sd, &level, &mapid, &lastindex, &resultcount);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -52030,9 +58261,9 @@ void HP_party_recruit_search(struct map_session_data *sd, short level, short map
{
HPMHooks.source.party.recruit_search(sd, level, mapid, lastindex, resultcount);
}
- if( HPMHooks.count.HP_party_recruit_search_post ) {
+ if (HPMHooks.count.HP_party_recruit_search_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, short level, short mapid, unsigned long lastindex, short resultcount);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_recruit_search_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_recruit_search_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_recruit_search_post[hIndex].func;
postHookFunc(sd, level, mapid, lastindex, resultcount);
}
@@ -52042,14 +58273,14 @@ void HP_party_recruit_search(struct map_session_data *sd, short level, short map
bool HP_party_booking_delete(struct map_session_data *sd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_party_booking_delete_pre ) {
+ if (HPMHooks.count.HP_party_booking_delete_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_booking_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_booking_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_booking_delete_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -52057,9 +58288,9 @@ bool HP_party_booking_delete(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.party.booking_delete(sd);
}
- if( HPMHooks.count.HP_party_booking_delete_post ) {
+ if (HPMHooks.count.HP_party_booking_delete_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_booking_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_booking_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_booking_delete_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -52069,16 +58300,16 @@ bool HP_party_booking_delete(struct map_session_data *sd) {
int HP_party_vforeachsamemap(int ( *func ) (struct block_list *, va_list), struct map_session_data *sd, int range, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_party_vforeachsamemap_pre ) {
+ if (HPMHooks.count.HP_party_vforeachsamemap_pre > 0) {
int (*preHookFunc) (int ( **func ) (struct block_list *, va_list), struct map_session_data **sd, int *range, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_vforeachsamemap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_vforeachsamemap_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_party_vforeachsamemap_pre[hIndex].func;
retVal___ = preHookFunc(&func, &sd, &range, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -52088,9 +58319,9 @@ int HP_party_vforeachsamemap(int ( *func ) (struct block_list *, va_list), struc
retVal___ = HPMHooks.source.party.vforeachsamemap(func, sd, range, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_party_vforeachsamemap_post ) {
+ if (HPMHooks.count.HP_party_vforeachsamemap_post > 0) {
int (*postHookFunc) (int retVal___, int ( *func ) (struct block_list *, va_list), struct map_session_data *sd, int range, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_vforeachsamemap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_vforeachsamemap_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_party_vforeachsamemap_post[hIndex].func;
retVal___ = postHookFunc(retVal___, func, sd, range, ap___copy);
@@ -52102,14 +58333,14 @@ int HP_party_vforeachsamemap(int ( *func ) (struct block_list *, va_list), struc
int HP_party_send_xy_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_party_send_xy_timer_pre ) {
+ if (HPMHooks.count.HP_party_send_xy_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_send_xy_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_send_xy_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_send_xy_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -52117,9 +58348,9 @@ int HP_party_send_xy_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.party.send_xy_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_party_send_xy_timer_post ) {
+ if (HPMHooks.count.HP_party_send_xy_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_send_xy_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_send_xy_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_send_xy_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -52128,14 +58359,14 @@ int HP_party_send_xy_timer(int tid, int64 tick, int id, intptr_t data) {
}
void HP_party_fill_member(struct party_member *member, struct map_session_data *sd, unsigned int leader) {
int hIndex = 0;
- if( HPMHooks.count.HP_party_fill_member_pre ) {
+ if (HPMHooks.count.HP_party_fill_member_pre > 0) {
void (*preHookFunc) (struct party_member **member, struct map_session_data **sd, unsigned int *leader);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_fill_member_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_fill_member_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_fill_member_pre[hIndex].func;
preHookFunc(&member, &sd, &leader);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -52143,9 +58374,9 @@ void HP_party_fill_member(struct party_member *member, struct map_session_data *
{
HPMHooks.source.party.fill_member(member, sd, leader);
}
- if( HPMHooks.count.HP_party_fill_member_post ) {
+ if (HPMHooks.count.HP_party_fill_member_post > 0) {
void (*postHookFunc) (struct party_member *member, struct map_session_data *sd, unsigned int leader);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_fill_member_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_fill_member_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_fill_member_post[hIndex].func;
postHookFunc(member, sd, leader);
}
@@ -52155,14 +58386,14 @@ void HP_party_fill_member(struct party_member *member, struct map_session_data *
struct map_session_data* HP_party_sd_check(int party_id, int account_id, int char_id) {
int hIndex = 0;
struct map_session_data* retVal___ = NULL;
- if( HPMHooks.count.HP_party_sd_check_pre ) {
+ if (HPMHooks.count.HP_party_sd_check_pre > 0) {
struct map_session_data* (*preHookFunc) (int *party_id, int *account_id, int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_sd_check_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_sd_check_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_sd_check_pre[hIndex].func;
retVal___ = preHookFunc(&party_id, &account_id, &char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -52170,9 +58401,9 @@ struct map_session_data* HP_party_sd_check(int party_id, int account_id, int cha
{
retVal___ = HPMHooks.source.party.sd_check(party_id, account_id, char_id);
}
- if( HPMHooks.count.HP_party_sd_check_post ) {
+ if (HPMHooks.count.HP_party_sd_check_post > 0) {
struct map_session_data* (*postHookFunc) (struct map_session_data* retVal___, int party_id, int account_id, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_sd_check_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_sd_check_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_sd_check_post[hIndex].func;
retVal___ = postHookFunc(retVal___, party_id, account_id, char_id);
}
@@ -52181,14 +58412,14 @@ struct map_session_data* HP_party_sd_check(int party_id, int account_id, int cha
}
void HP_party_check_state(struct party_data *p) {
int hIndex = 0;
- if( HPMHooks.count.HP_party_check_state_pre ) {
+ if (HPMHooks.count.HP_party_check_state_pre > 0) {
void (*preHookFunc) (struct party_data **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_check_state_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_check_state_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_check_state_pre[hIndex].func;
preHookFunc(&p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -52196,9 +58427,9 @@ void HP_party_check_state(struct party_data *p) {
{
HPMHooks.source.party.check_state(p);
}
- if( HPMHooks.count.HP_party_check_state_post ) {
+ if (HPMHooks.count.HP_party_check_state_post > 0) {
void (*postHookFunc) (struct party_data *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_check_state_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_check_state_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_check_state_post[hIndex].func;
postHookFunc(p);
}
@@ -52208,14 +58439,14 @@ void HP_party_check_state(struct party_data *p) {
struct party_booking_ad_info* HP_party_create_booking_data(void) {
int hIndex = 0;
struct party_booking_ad_info* retVal___ = NULL;
- if( HPMHooks.count.HP_party_create_booking_data_pre ) {
+ if (HPMHooks.count.HP_party_create_booking_data_pre > 0) {
struct party_booking_ad_info* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_create_booking_data_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_create_booking_data_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_party_create_booking_data_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -52223,9 +58454,9 @@ struct party_booking_ad_info* HP_party_create_booking_data(void) {
{
retVal___ = HPMHooks.source.party.create_booking_data();
}
- if( HPMHooks.count.HP_party_create_booking_data_post ) {
+ if (HPMHooks.count.HP_party_create_booking_data_post > 0) {
struct party_booking_ad_info* (*postHookFunc) (struct party_booking_ad_info* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_create_booking_data_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_create_booking_data_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_party_create_booking_data_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -52235,16 +58466,16 @@ struct party_booking_ad_info* HP_party_create_booking_data(void) {
int HP_party_db_final(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_party_db_final_pre ) {
+ if (HPMHooks.count.HP_party_db_final_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_db_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_db_final_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_party_db_final_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -52254,9 +58485,9 @@ int HP_party_db_final(union DBKey key, struct DBData *data, va_list ap) {
retVal___ = HPMHooks.source.party.db_final(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_party_db_final_post ) {
+ if (HPMHooks.count.HP_party_db_final_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_party_db_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_party_db_final_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_party_db_final_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -52269,14 +58500,14 @@ int HP_party_db_final(union DBKey key, struct DBData *data, va_list ap) {
int HP_path_blownpos(struct block_list *bl, int16 m, int16 x0, int16 y0, int16 dx, int16 dy, int count) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_path_blownpos_pre ) {
+ if (HPMHooks.count.HP_path_blownpos_pre > 0) {
int (*preHookFunc) (struct block_list **bl, int16 *m, int16 *x0, int16 *y0, int16 *dx, int16 *dy, int *count);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_path_blownpos_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_path_blownpos_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_path_blownpos_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &m, &x0, &y0, &dx, &dy, &count);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -52284,9 +58515,9 @@ int HP_path_blownpos(struct block_list *bl, int16 m, int16 x0, int16 y0, int16 d
{
retVal___ = HPMHooks.source.path.blownpos(bl, m, x0, y0, dx, dy, count);
}
- if( HPMHooks.count.HP_path_blownpos_post ) {
+ if (HPMHooks.count.HP_path_blownpos_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, int16 m, int16 x0, int16 y0, int16 dx, int16 dy, int count);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_path_blownpos_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_path_blownpos_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_path_blownpos_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, m, x0, y0, dx, dy, count);
}
@@ -52296,14 +58527,14 @@ int HP_path_blownpos(struct block_list *bl, int16 m, int16 x0, int16 y0, int16 d
bool HP_path_search(struct walkpath_data *wpd, struct block_list *bl, int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int flag, cell_chk cell) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_path_search_pre ) {
+ if (HPMHooks.count.HP_path_search_pre > 0) {
bool (*preHookFunc) (struct walkpath_data **wpd, struct block_list **bl, int16 *m, int16 *x0, int16 *y0, int16 *x1, int16 *y1, int *flag, cell_chk *cell);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_path_search_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_path_search_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_path_search_pre[hIndex].func;
retVal___ = preHookFunc(&wpd, &bl, &m, &x0, &y0, &x1, &y1, &flag, &cell);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -52311,9 +58542,9 @@ bool HP_path_search(struct walkpath_data *wpd, struct block_list *bl, int16 m, i
{
retVal___ = HPMHooks.source.path.search(wpd, bl, m, x0, y0, x1, y1, flag, cell);
}
- if( HPMHooks.count.HP_path_search_post ) {
+ if (HPMHooks.count.HP_path_search_post > 0) {
bool (*postHookFunc) (bool retVal___, struct walkpath_data *wpd, struct block_list *bl, int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int flag, cell_chk cell);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_path_search_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_path_search_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_path_search_post[hIndex].func;
retVal___ = postHookFunc(retVal___, wpd, bl, m, x0, y0, x1, y1, flag, cell);
}
@@ -52323,14 +58554,14 @@ bool HP_path_search(struct walkpath_data *wpd, struct block_list *bl, int16 m, i
bool HP_path_search_long(struct shootpath_data *spd, struct block_list *bl, int16 m, int16 x0, int16 y0, int16 x1, int16 y1, cell_chk cell) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_path_search_long_pre ) {
+ if (HPMHooks.count.HP_path_search_long_pre > 0) {
bool (*preHookFunc) (struct shootpath_data **spd, struct block_list **bl, int16 *m, int16 *x0, int16 *y0, int16 *x1, int16 *y1, cell_chk *cell);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_path_search_long_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_path_search_long_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_path_search_long_pre[hIndex].func;
retVal___ = preHookFunc(&spd, &bl, &m, &x0, &y0, &x1, &y1, &cell);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -52338,9 +58569,9 @@ bool HP_path_search_long(struct shootpath_data *spd, struct block_list *bl, int1
{
retVal___ = HPMHooks.source.path.search_long(spd, bl, m, x0, y0, x1, y1, cell);
}
- if( HPMHooks.count.HP_path_search_long_post ) {
+ if (HPMHooks.count.HP_path_search_long_post > 0) {
bool (*postHookFunc) (bool retVal___, struct shootpath_data *spd, struct block_list *bl, int16 m, int16 x0, int16 y0, int16 x1, int16 y1, cell_chk cell);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_path_search_long_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_path_search_long_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_path_search_long_post[hIndex].func;
retVal___ = postHookFunc(retVal___, spd, bl, m, x0, y0, x1, y1, cell);
}
@@ -52350,14 +58581,14 @@ bool HP_path_search_long(struct shootpath_data *spd, struct block_list *bl, int1
bool HP_path_check_distance(int dx, int dy, int distance) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_path_check_distance_pre ) {
+ if (HPMHooks.count.HP_path_check_distance_pre > 0) {
bool (*preHookFunc) (int *dx, int *dy, int *distance);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_path_check_distance_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_path_check_distance_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_path_check_distance_pre[hIndex].func;
retVal___ = preHookFunc(&dx, &dy, &distance);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -52365,9 +58596,9 @@ bool HP_path_check_distance(int dx, int dy, int distance) {
{
retVal___ = HPMHooks.source.path.check_distance(dx, dy, distance);
}
- if( HPMHooks.count.HP_path_check_distance_post ) {
+ if (HPMHooks.count.HP_path_check_distance_post > 0) {
bool (*postHookFunc) (bool retVal___, int dx, int dy, int distance);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_path_check_distance_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_path_check_distance_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_path_check_distance_post[hIndex].func;
retVal___ = postHookFunc(retVal___, dx, dy, distance);
}
@@ -52377,14 +58608,14 @@ bool HP_path_check_distance(int dx, int dy, int distance) {
unsigned int HP_path_distance(int dx, int dy) {
int hIndex = 0;
unsigned int retVal___ = 0;
- if( HPMHooks.count.HP_path_distance_pre ) {
+ if (HPMHooks.count.HP_path_distance_pre > 0) {
unsigned int (*preHookFunc) (int *dx, int *dy);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_path_distance_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_path_distance_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_path_distance_pre[hIndex].func;
retVal___ = preHookFunc(&dx, &dy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -52392,9 +58623,9 @@ unsigned int HP_path_distance(int dx, int dy) {
{
retVal___ = HPMHooks.source.path.distance(dx, dy);
}
- if( HPMHooks.count.HP_path_distance_post ) {
+ if (HPMHooks.count.HP_path_distance_post > 0) {
unsigned int (*postHookFunc) (unsigned int retVal___, int dx, int dy);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_path_distance_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_path_distance_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_path_distance_post[hIndex].func;
retVal___ = postHookFunc(retVal___, dx, dy);
}
@@ -52404,14 +58635,14 @@ unsigned int HP_path_distance(int dx, int dy) {
bool HP_path_check_distance_client(int dx, int dy, int distance) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_path_check_distance_client_pre ) {
+ if (HPMHooks.count.HP_path_check_distance_client_pre > 0) {
bool (*preHookFunc) (int *dx, int *dy, int *distance);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_path_check_distance_client_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_path_check_distance_client_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_path_check_distance_client_pre[hIndex].func;
retVal___ = preHookFunc(&dx, &dy, &distance);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -52419,9 +58650,9 @@ bool HP_path_check_distance_client(int dx, int dy, int distance) {
{
retVal___ = HPMHooks.source.path.check_distance_client(dx, dy, distance);
}
- if( HPMHooks.count.HP_path_check_distance_client_post ) {
+ if (HPMHooks.count.HP_path_check_distance_client_post > 0) {
bool (*postHookFunc) (bool retVal___, int dx, int dy, int distance);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_path_check_distance_client_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_path_check_distance_client_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_path_check_distance_client_post[hIndex].func;
retVal___ = postHookFunc(retVal___, dx, dy, distance);
}
@@ -52431,14 +58662,14 @@ bool HP_path_check_distance_client(int dx, int dy, int distance) {
int HP_path_distance_client(int dx, int dy) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_path_distance_client_pre ) {
+ if (HPMHooks.count.HP_path_distance_client_pre > 0) {
int (*preHookFunc) (int *dx, int *dy);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_path_distance_client_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_path_distance_client_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_path_distance_client_pre[hIndex].func;
retVal___ = preHookFunc(&dx, &dy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -52446,9 +58677,9 @@ int HP_path_distance_client(int dx, int dy) {
{
retVal___ = HPMHooks.source.path.distance_client(dx, dy);
}
- if( HPMHooks.count.HP_path_distance_client_post ) {
+ if (HPMHooks.count.HP_path_distance_client_post > 0) {
int (*postHookFunc) (int retVal___, int dx, int dy);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_path_distance_client_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_path_distance_client_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_path_distance_client_post[hIndex].func;
retVal___ = postHookFunc(retVal___, dx, dy);
}
@@ -52458,14 +58689,14 @@ int HP_path_distance_client(int dx, int dy) {
/* pc_groups_interface */
void HP_pcg_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_pcg_init_pre ) {
+ if (HPMHooks.count.HP_pcg_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pcg_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pcg_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pcg_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -52473,9 +58704,9 @@ void HP_pcg_init(void) {
{
HPMHooks.source.pcg.init();
}
- if( HPMHooks.count.HP_pcg_init_post ) {
+ if (HPMHooks.count.HP_pcg_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pcg_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pcg_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pcg_init_post[hIndex].func;
postHookFunc();
}
@@ -52484,14 +58715,14 @@ void HP_pcg_init(void) {
}
void HP_pcg_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_pcg_final_pre ) {
+ if (HPMHooks.count.HP_pcg_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pcg_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pcg_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pcg_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -52499,9 +58730,9 @@ void HP_pcg_final(void) {
{
HPMHooks.source.pcg.final();
}
- if( HPMHooks.count.HP_pcg_final_post ) {
+ if (HPMHooks.count.HP_pcg_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pcg_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pcg_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pcg_final_post[hIndex].func;
postHookFunc();
}
@@ -52510,14 +58741,14 @@ void HP_pcg_final(void) {
}
void HP_pcg_reload(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_pcg_reload_pre ) {
+ if (HPMHooks.count.HP_pcg_reload_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pcg_reload_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pcg_reload_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pcg_reload_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -52525,9 +58756,9 @@ void HP_pcg_reload(void) {
{
HPMHooks.source.pcg.reload();
}
- if( HPMHooks.count.HP_pcg_reload_post ) {
+ if (HPMHooks.count.HP_pcg_reload_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pcg_reload_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pcg_reload_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pcg_reload_post[hIndex].func;
postHookFunc();
}
@@ -52537,14 +58768,14 @@ void HP_pcg_reload(void) {
GroupSettings* HP_pcg_get_dummy_group(void) {
int hIndex = 0;
GroupSettings* retVal___ = NULL;
- if( HPMHooks.count.HP_pcg_get_dummy_group_pre ) {
+ if (HPMHooks.count.HP_pcg_get_dummy_group_pre > 0) {
GroupSettings* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pcg_get_dummy_group_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pcg_get_dummy_group_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pcg_get_dummy_group_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -52552,9 +58783,9 @@ GroupSettings* HP_pcg_get_dummy_group(void) {
{
retVal___ = HPMHooks.source.pcg.get_dummy_group();
}
- if( HPMHooks.count.HP_pcg_get_dummy_group_post ) {
+ if (HPMHooks.count.HP_pcg_get_dummy_group_post > 0) {
GroupSettings* (*postHookFunc) (GroupSettings* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pcg_get_dummy_group_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pcg_get_dummy_group_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pcg_get_dummy_group_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -52564,14 +58795,14 @@ GroupSettings* HP_pcg_get_dummy_group(void) {
bool HP_pcg_exists(int group_id) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_pcg_exists_pre ) {
+ if (HPMHooks.count.HP_pcg_exists_pre > 0) {
bool (*preHookFunc) (int *group_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pcg_exists_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pcg_exists_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pcg_exists_pre[hIndex].func;
retVal___ = preHookFunc(&group_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -52579,9 +58810,9 @@ bool HP_pcg_exists(int group_id) {
{
retVal___ = HPMHooks.source.pcg.exists(group_id);
}
- if( HPMHooks.count.HP_pcg_exists_post ) {
+ if (HPMHooks.count.HP_pcg_exists_post > 0) {
bool (*postHookFunc) (bool retVal___, int group_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pcg_exists_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pcg_exists_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pcg_exists_post[hIndex].func;
retVal___ = postHookFunc(retVal___, group_id);
}
@@ -52591,14 +58822,14 @@ bool HP_pcg_exists(int group_id) {
GroupSettings* HP_pcg_id2group(int group_id) {
int hIndex = 0;
GroupSettings* retVal___ = NULL;
- if( HPMHooks.count.HP_pcg_id2group_pre ) {
+ if (HPMHooks.count.HP_pcg_id2group_pre > 0) {
GroupSettings* (*preHookFunc) (int *group_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pcg_id2group_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pcg_id2group_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pcg_id2group_pre[hIndex].func;
retVal___ = preHookFunc(&group_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -52606,9 +58837,9 @@ GroupSettings* HP_pcg_id2group(int group_id) {
{
retVal___ = HPMHooks.source.pcg.id2group(group_id);
}
- if( HPMHooks.count.HP_pcg_id2group_post ) {
+ if (HPMHooks.count.HP_pcg_id2group_post > 0) {
GroupSettings* (*postHookFunc) (GroupSettings* retVal___, int group_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pcg_id2group_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pcg_id2group_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pcg_id2group_post[hIndex].func;
retVal___ = postHookFunc(retVal___, group_id);
}
@@ -52618,14 +58849,14 @@ GroupSettings* HP_pcg_id2group(int group_id) {
bool HP_pcg_has_permission(GroupSettings *group, unsigned int permission) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_pcg_has_permission_pre ) {
+ if (HPMHooks.count.HP_pcg_has_permission_pre > 0) {
bool (*preHookFunc) (GroupSettings **group, unsigned int *permission);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pcg_has_permission_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pcg_has_permission_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pcg_has_permission_pre[hIndex].func;
retVal___ = preHookFunc(&group, &permission);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -52633,9 +58864,9 @@ bool HP_pcg_has_permission(GroupSettings *group, unsigned int permission) {
{
retVal___ = HPMHooks.source.pcg.has_permission(group, permission);
}
- if( HPMHooks.count.HP_pcg_has_permission_post ) {
+ if (HPMHooks.count.HP_pcg_has_permission_post > 0) {
bool (*postHookFunc) (bool retVal___, GroupSettings *group, unsigned int permission);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pcg_has_permission_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pcg_has_permission_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pcg_has_permission_post[hIndex].func;
retVal___ = postHookFunc(retVal___, group, permission);
}
@@ -52645,14 +58876,14 @@ bool HP_pcg_has_permission(GroupSettings *group, unsigned int permission) {
bool HP_pcg_should_log_commands(GroupSettings *group) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_pcg_should_log_commands_pre ) {
+ if (HPMHooks.count.HP_pcg_should_log_commands_pre > 0) {
bool (*preHookFunc) (GroupSettings **group);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pcg_should_log_commands_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pcg_should_log_commands_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pcg_should_log_commands_pre[hIndex].func;
retVal___ = preHookFunc(&group);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -52660,9 +58891,9 @@ bool HP_pcg_should_log_commands(GroupSettings *group) {
{
retVal___ = HPMHooks.source.pcg.should_log_commands(group);
}
- if( HPMHooks.count.HP_pcg_should_log_commands_post ) {
+ if (HPMHooks.count.HP_pcg_should_log_commands_post > 0) {
bool (*postHookFunc) (bool retVal___, GroupSettings *group);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pcg_should_log_commands_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pcg_should_log_commands_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pcg_should_log_commands_post[hIndex].func;
retVal___ = postHookFunc(retVal___, group);
}
@@ -52672,14 +58903,14 @@ bool HP_pcg_should_log_commands(GroupSettings *group) {
const char* HP_pcg_get_name(GroupSettings *group) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_pcg_get_name_pre ) {
+ if (HPMHooks.count.HP_pcg_get_name_pre > 0) {
const char* (*preHookFunc) (GroupSettings **group);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pcg_get_name_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pcg_get_name_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pcg_get_name_pre[hIndex].func;
retVal___ = preHookFunc(&group);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -52687,9 +58918,9 @@ const char* HP_pcg_get_name(GroupSettings *group) {
{
retVal___ = HPMHooks.source.pcg.get_name(group);
}
- if( HPMHooks.count.HP_pcg_get_name_post ) {
+ if (HPMHooks.count.HP_pcg_get_name_post > 0) {
const char* (*postHookFunc) (const char* retVal___, GroupSettings *group);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pcg_get_name_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pcg_get_name_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pcg_get_name_post[hIndex].func;
retVal___ = postHookFunc(retVal___, group);
}
@@ -52699,14 +58930,14 @@ const char* HP_pcg_get_name(GroupSettings *group) {
int HP_pcg_get_level(GroupSettings *group) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pcg_get_level_pre ) {
+ if (HPMHooks.count.HP_pcg_get_level_pre > 0) {
int (*preHookFunc) (GroupSettings **group);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pcg_get_level_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pcg_get_level_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pcg_get_level_pre[hIndex].func;
retVal___ = preHookFunc(&group);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -52714,9 +58945,9 @@ int HP_pcg_get_level(GroupSettings *group) {
{
retVal___ = HPMHooks.source.pcg.get_level(group);
}
- if( HPMHooks.count.HP_pcg_get_level_post ) {
+ if (HPMHooks.count.HP_pcg_get_level_post > 0) {
int (*postHookFunc) (int retVal___, GroupSettings *group);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pcg_get_level_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pcg_get_level_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pcg_get_level_post[hIndex].func;
retVal___ = postHookFunc(retVal___, group);
}
@@ -52726,14 +58957,14 @@ int HP_pcg_get_level(GroupSettings *group) {
int HP_pcg_get_idx(GroupSettings *group) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pcg_get_idx_pre ) {
+ if (HPMHooks.count.HP_pcg_get_idx_pre > 0) {
int (*preHookFunc) (GroupSettings **group);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pcg_get_idx_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pcg_get_idx_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pcg_get_idx_pre[hIndex].func;
retVal___ = preHookFunc(&group);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -52741,9 +58972,9 @@ int HP_pcg_get_idx(GroupSettings *group) {
{
retVal___ = HPMHooks.source.pcg.get_idx(group);
}
- if( HPMHooks.count.HP_pcg_get_idx_post ) {
+ if (HPMHooks.count.HP_pcg_get_idx_post > 0) {
int (*postHookFunc) (int retVal___, GroupSettings *group);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pcg_get_idx_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pcg_get_idx_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pcg_get_idx_post[hIndex].func;
retVal___ = postHookFunc(retVal___, group);
}
@@ -52753,14 +58984,14 @@ int HP_pcg_get_idx(GroupSettings *group) {
/* pc_interface */
void HP_pc_init(bool minimal) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_init_pre ) {
+ if (HPMHooks.count.HP_pc_init_pre > 0) {
void (*preHookFunc) (bool *minimal);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_init_pre[hIndex].func;
preHookFunc(&minimal);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -52768,9 +58999,9 @@ void HP_pc_init(bool minimal) {
{
HPMHooks.source.pc.init(minimal);
}
- if( HPMHooks.count.HP_pc_init_post ) {
+ if (HPMHooks.count.HP_pc_init_post > 0) {
void (*postHookFunc) (bool minimal);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_init_post[hIndex].func;
postHookFunc(minimal);
}
@@ -52779,14 +59010,14 @@ void HP_pc_init(bool minimal) {
}
void HP_pc_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_final_pre ) {
+ if (HPMHooks.count.HP_pc_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -52794,9 +59025,9 @@ void HP_pc_final(void) {
{
HPMHooks.source.pc.final();
}
- if( HPMHooks.count.HP_pc_final_post ) {
+ if (HPMHooks.count.HP_pc_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_final_post[hIndex].func;
postHookFunc();
}
@@ -52806,14 +59037,14 @@ void HP_pc_final(void) {
struct map_session_data* HP_pc_get_dummy_sd(void) {
int hIndex = 0;
struct map_session_data* retVal___ = NULL;
- if( HPMHooks.count.HP_pc_get_dummy_sd_pre ) {
+ if (HPMHooks.count.HP_pc_get_dummy_sd_pre > 0) {
struct map_session_data* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_get_dummy_sd_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_get_dummy_sd_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_get_dummy_sd_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -52821,9 +59052,9 @@ struct map_session_data* HP_pc_get_dummy_sd(void) {
{
retVal___ = HPMHooks.source.pc.get_dummy_sd();
}
- if( HPMHooks.count.HP_pc_get_dummy_sd_post ) {
+ if (HPMHooks.count.HP_pc_get_dummy_sd_post > 0) {
struct map_session_data* (*postHookFunc) (struct map_session_data* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_get_dummy_sd_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_get_dummy_sd_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_get_dummy_sd_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -52833,14 +59064,14 @@ struct map_session_data* HP_pc_get_dummy_sd(void) {
int HP_pc_class2idx(int class) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_class2idx_pre ) {
+ if (HPMHooks.count.HP_pc_class2idx_pre > 0) {
int (*preHookFunc) (int *class);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_class2idx_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_class2idx_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_class2idx_pre[hIndex].func;
retVal___ = preHookFunc(&class);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -52848,9 +59079,9 @@ int HP_pc_class2idx(int class) {
{
retVal___ = HPMHooks.source.pc.class2idx(class);
}
- if( HPMHooks.count.HP_pc_class2idx_post ) {
+ if (HPMHooks.count.HP_pc_class2idx_post > 0) {
int (*postHookFunc) (int retVal___, int class);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_class2idx_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_class2idx_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_class2idx_post[hIndex].func;
retVal___ = postHookFunc(retVal___, class);
}
@@ -52860,14 +59091,14 @@ int HP_pc_class2idx(int class) {
bool HP_pc_can_talk(struct map_session_data *sd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_pc_can_talk_pre ) {
+ if (HPMHooks.count.HP_pc_can_talk_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_can_talk_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_can_talk_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_can_talk_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -52875,9 +59106,9 @@ bool HP_pc_can_talk(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.can_talk(sd);
}
- if( HPMHooks.count.HP_pc_can_talk_post ) {
+ if (HPMHooks.count.HP_pc_can_talk_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_can_talk_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_can_talk_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_can_talk_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -52887,14 +59118,14 @@ bool HP_pc_can_talk(struct map_session_data *sd) {
bool HP_pc_can_attack(struct map_session_data *sd, int target_id) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_pc_can_attack_pre ) {
+ if (HPMHooks.count.HP_pc_can_attack_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, int *target_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_can_attack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_can_attack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_can_attack_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &target_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -52902,9 +59133,9 @@ bool HP_pc_can_attack(struct map_session_data *sd, int target_id) {
{
retVal___ = HPMHooks.source.pc.can_attack(sd, target_id);
}
- if( HPMHooks.count.HP_pc_can_attack_post ) {
+ if (HPMHooks.count.HP_pc_can_attack_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, int target_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_can_attack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_can_attack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_can_attack_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, target_id);
}
@@ -52914,14 +59145,14 @@ bool HP_pc_can_attack(struct map_session_data *sd, int target_id) {
bool HP_pc_can_use_command(struct map_session_data *sd, const char *command) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_pc_can_use_command_pre ) {
+ if (HPMHooks.count.HP_pc_can_use_command_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, const char **command);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_can_use_command_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_can_use_command_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_can_use_command_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &command);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -52929,9 +59160,9 @@ bool HP_pc_can_use_command(struct map_session_data *sd, const char *command) {
{
retVal___ = HPMHooks.source.pc.can_use_command(sd, command);
}
- if( HPMHooks.count.HP_pc_can_use_command_post ) {
+ if (HPMHooks.count.HP_pc_can_use_command_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, const char *command);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_can_use_command_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_can_use_command_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_can_use_command_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, command);
}
@@ -52941,14 +59172,14 @@ bool HP_pc_can_use_command(struct map_session_data *sd, const char *command) {
int HP_pc_set_group(struct map_session_data *sd, int group_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_set_group_pre ) {
+ if (HPMHooks.count.HP_pc_set_group_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *group_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_set_group_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_set_group_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_set_group_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &group_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -52956,9 +59187,9 @@ int HP_pc_set_group(struct map_session_data *sd, int group_id) {
{
retVal___ = HPMHooks.source.pc.set_group(sd, group_id);
}
- if( HPMHooks.count.HP_pc_set_group_post ) {
+ if (HPMHooks.count.HP_pc_set_group_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int group_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_set_group_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_set_group_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_set_group_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, group_id);
}
@@ -52968,14 +59199,14 @@ int HP_pc_set_group(struct map_session_data *sd, int group_id) {
bool HP_pc_should_log_commands(struct map_session_data *sd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_pc_should_log_commands_pre ) {
+ if (HPMHooks.count.HP_pc_should_log_commands_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_should_log_commands_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_should_log_commands_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_should_log_commands_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -52983,9 +59214,9 @@ bool HP_pc_should_log_commands(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.should_log_commands(sd);
}
- if( HPMHooks.count.HP_pc_should_log_commands_post ) {
+ if (HPMHooks.count.HP_pc_should_log_commands_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_should_log_commands_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_should_log_commands_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_should_log_commands_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -52995,14 +59226,14 @@ bool HP_pc_should_log_commands(struct map_session_data *sd) {
int HP_pc_setrestartvalue(struct map_session_data *sd, int type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_setrestartvalue_pre ) {
+ if (HPMHooks.count.HP_pc_setrestartvalue_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setrestartvalue_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setrestartvalue_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_setrestartvalue_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53010,9 +59241,9 @@ int HP_pc_setrestartvalue(struct map_session_data *sd, int type) {
{
retVal___ = HPMHooks.source.pc.setrestartvalue(sd, type);
}
- if( HPMHooks.count.HP_pc_setrestartvalue_post ) {
+ if (HPMHooks.count.HP_pc_setrestartvalue_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setrestartvalue_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setrestartvalue_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_setrestartvalue_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, type);
}
@@ -53022,14 +59253,14 @@ int HP_pc_setrestartvalue(struct map_session_data *sd, int type) {
int HP_pc_makesavestatus(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_makesavestatus_pre ) {
+ if (HPMHooks.count.HP_pc_makesavestatus_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_makesavestatus_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_makesavestatus_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_makesavestatus_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53037,25 +59268,25 @@ int HP_pc_makesavestatus(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.makesavestatus(sd);
}
- if( HPMHooks.count.HP_pc_makesavestatus_post ) {
+ if (HPMHooks.count.HP_pc_makesavestatus_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_makesavestatus_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_makesavestatus_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_makesavestatus_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
}
return retVal___;
}
-void HP_pc_respawn(struct map_session_data *sd, clr_type clrtype) {
+void HP_pc_respawn(struct map_session_data *sd, enum clr_type clrtype) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_respawn_pre ) {
- void (*preHookFunc) (struct map_session_data **sd, clr_type *clrtype);
+ if (HPMHooks.count.HP_pc_respawn_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, enum clr_type *clrtype);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_respawn_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_respawn_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_respawn_pre[hIndex].func;
preHookFunc(&sd, &clrtype);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -53063,9 +59294,9 @@ void HP_pc_respawn(struct map_session_data *sd, clr_type clrtype) {
{
HPMHooks.source.pc.respawn(sd, clrtype);
}
- if( HPMHooks.count.HP_pc_respawn_post ) {
- void (*postHookFunc) (struct map_session_data *sd, clr_type clrtype);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_respawn_post; hIndex++ ) {
+ if (HPMHooks.count.HP_pc_respawn_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, enum clr_type clrtype);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_respawn_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_respawn_post[hIndex].func;
postHookFunc(sd, clrtype);
}
@@ -53075,14 +59306,14 @@ void HP_pc_respawn(struct map_session_data *sd, clr_type clrtype) {
int HP_pc_setnewpc(struct map_session_data *sd, int account_id, int char_id, int login_id1, unsigned int client_tick, int sex, int fd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_setnewpc_pre ) {
+ if (HPMHooks.count.HP_pc_setnewpc_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *account_id, int *char_id, int *login_id1, unsigned int *client_tick, int *sex, int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setnewpc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setnewpc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_setnewpc_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &account_id, &char_id, &login_id1, &client_tick, &sex, &fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53090,9 +59321,9 @@ int HP_pc_setnewpc(struct map_session_data *sd, int account_id, int char_id, int
{
retVal___ = HPMHooks.source.pc.setnewpc(sd, account_id, char_id, login_id1, client_tick, sex, fd);
}
- if( HPMHooks.count.HP_pc_setnewpc_post ) {
+ if (HPMHooks.count.HP_pc_setnewpc_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int account_id, int char_id, int login_id1, unsigned int client_tick, int sex, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setnewpc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setnewpc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_setnewpc_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, account_id, char_id, login_id1, client_tick, sex, fd);
}
@@ -53102,14 +59333,14 @@ int HP_pc_setnewpc(struct map_session_data *sd, int account_id, int char_id, int
bool HP_pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_time, int group_id, const struct mmo_charstatus *st, bool changing_mapservers) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_pc_authok_pre ) {
+ if (HPMHooks.count.HP_pc_authok_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, int *login_id2, time_t *expiration_time, int *group_id, const struct mmo_charstatus **st, bool *changing_mapservers);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_authok_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_authok_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_authok_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &login_id2, &expiration_time, &group_id, &st, &changing_mapservers);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53117,9 +59348,9 @@ bool HP_pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_
{
retVal___ = HPMHooks.source.pc.authok(sd, login_id2, expiration_time, group_id, st, changing_mapservers);
}
- if( HPMHooks.count.HP_pc_authok_post ) {
+ if (HPMHooks.count.HP_pc_authok_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, int login_id2, time_t expiration_time, int group_id, const struct mmo_charstatus *st, bool changing_mapservers);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_authok_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_authok_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_authok_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, login_id2, expiration_time, group_id, st, changing_mapservers);
}
@@ -53128,14 +59359,14 @@ bool HP_pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_
}
void HP_pc_authfail(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_authfail_pre ) {
+ if (HPMHooks.count.HP_pc_authfail_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_authfail_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_authfail_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_authfail_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -53143,9 +59374,9 @@ void HP_pc_authfail(struct map_session_data *sd) {
{
HPMHooks.source.pc.authfail(sd);
}
- if( HPMHooks.count.HP_pc_authfail_post ) {
+ if (HPMHooks.count.HP_pc_authfail_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_authfail_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_authfail_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_authfail_post[hIndex].func;
postHookFunc(sd);
}
@@ -53155,14 +59386,14 @@ void HP_pc_authfail(struct map_session_data *sd) {
int HP_pc_reg_received(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_reg_received_pre ) {
+ if (HPMHooks.count.HP_pc_reg_received_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_reg_received_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_reg_received_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_reg_received_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53170,9 +59401,9 @@ int HP_pc_reg_received(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.reg_received(sd);
}
- if( HPMHooks.count.HP_pc_reg_received_post ) {
+ if (HPMHooks.count.HP_pc_reg_received_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_reg_received_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_reg_received_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_reg_received_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -53182,14 +59413,14 @@ int HP_pc_reg_received(struct map_session_data *sd) {
int HP_pc_isequip(struct map_session_data *sd, int n) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_isequip_pre ) {
+ if (HPMHooks.count.HP_pc_isequip_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *n);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_isequip_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_isequip_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_isequip_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &n);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53197,9 +59428,9 @@ int HP_pc_isequip(struct map_session_data *sd, int n) {
{
retVal___ = HPMHooks.source.pc.isequip(sd, n);
}
- if( HPMHooks.count.HP_pc_isequip_post ) {
+ if (HPMHooks.count.HP_pc_isequip_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int n);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_isequip_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_isequip_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_isequip_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, n);
}
@@ -53209,14 +59440,14 @@ int HP_pc_isequip(struct map_session_data *sd, int n) {
int HP_pc_equippoint(struct map_session_data *sd, int n) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_equippoint_pre ) {
+ if (HPMHooks.count.HP_pc_equippoint_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *n);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_equippoint_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_equippoint_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_equippoint_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &n);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53224,26 +59455,53 @@ int HP_pc_equippoint(struct map_session_data *sd, int n) {
{
retVal___ = HPMHooks.source.pc.equippoint(sd, n);
}
- if( HPMHooks.count.HP_pc_equippoint_post ) {
+ if (HPMHooks.count.HP_pc_equippoint_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int n);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_equippoint_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_equippoint_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_equippoint_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, n);
}
}
return retVal___;
}
+int HP_pc_item_equippoint(struct map_session_data *sd, struct item_data *id) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_pc_item_equippoint_pre > 0) {
+ int (*preHookFunc) (struct map_session_data **sd, struct item_data **id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_item_equippoint_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pc_item_equippoint_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.pc.item_equippoint(sd, id);
+ }
+ if (HPMHooks.count.HP_pc_item_equippoint_post > 0) {
+ int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct item_data *id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_item_equippoint_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pc_item_equippoint_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, id);
+ }
+ }
+ return retVal___;
+}
int HP_pc_setinventorydata(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_setinventorydata_pre ) {
+ if (HPMHooks.count.HP_pc_setinventorydata_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setinventorydata_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setinventorydata_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_setinventorydata_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53251,9 +59509,9 @@ int HP_pc_setinventorydata(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.setinventorydata(sd);
}
- if( HPMHooks.count.HP_pc_setinventorydata_post ) {
+ if (HPMHooks.count.HP_pc_setinventorydata_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setinventorydata_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setinventorydata_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_setinventorydata_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -53263,14 +59521,14 @@ int HP_pc_setinventorydata(struct map_session_data *sd) {
int HP_pc_checkskill(struct map_session_data *sd, uint16 skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_checkskill_pre ) {
+ if (HPMHooks.count.HP_pc_checkskill_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, uint16 *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkskill_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkskill_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_checkskill_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53278,9 +59536,9 @@ int HP_pc_checkskill(struct map_session_data *sd, uint16 skill_id) {
{
retVal___ = HPMHooks.source.pc.checkskill(sd, skill_id);
}
- if( HPMHooks.count.HP_pc_checkskill_post ) {
+ if (HPMHooks.count.HP_pc_checkskill_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkskill_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkskill_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_checkskill_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, skill_id);
}
@@ -53290,14 +59548,14 @@ int HP_pc_checkskill(struct map_session_data *sd, uint16 skill_id) {
int HP_pc_checkskill2(struct map_session_data *sd, uint16 index) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_checkskill2_pre ) {
+ if (HPMHooks.count.HP_pc_checkskill2_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, uint16 *index);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkskill2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkskill2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_checkskill2_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &index);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53305,9 +59563,9 @@ int HP_pc_checkskill2(struct map_session_data *sd, uint16 index) {
{
retVal___ = HPMHooks.source.pc.checkskill2(sd, index);
}
- if( HPMHooks.count.HP_pc_checkskill2_post ) {
+ if (HPMHooks.count.HP_pc_checkskill2_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, uint16 index);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkskill2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkskill2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_checkskill2_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, index);
}
@@ -53317,14 +59575,14 @@ int HP_pc_checkskill2(struct map_session_data *sd, uint16 index) {
int HP_pc_checkallowskill(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_checkallowskill_pre ) {
+ if (HPMHooks.count.HP_pc_checkallowskill_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkallowskill_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkallowskill_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_checkallowskill_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53332,9 +59590,9 @@ int HP_pc_checkallowskill(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.checkallowskill(sd);
}
- if( HPMHooks.count.HP_pc_checkallowskill_post ) {
+ if (HPMHooks.count.HP_pc_checkallowskill_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkallowskill_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkallowskill_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_checkallowskill_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -53344,14 +59602,14 @@ int HP_pc_checkallowskill(struct map_session_data *sd) {
int HP_pc_checkequip(struct map_session_data *sd, int pos) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_checkequip_pre ) {
+ if (HPMHooks.count.HP_pc_checkequip_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *pos);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkequip_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkequip_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_checkequip_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &pos);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53359,9 +59617,9 @@ int HP_pc_checkequip(struct map_session_data *sd, int pos) {
{
retVal___ = HPMHooks.source.pc.checkequip(sd, pos);
}
- if( HPMHooks.count.HP_pc_checkequip_post ) {
+ if (HPMHooks.count.HP_pc_checkequip_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int pos);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkequip_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkequip_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_checkequip_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, pos);
}
@@ -53371,14 +59629,14 @@ int HP_pc_checkequip(struct map_session_data *sd, int pos) {
int HP_pc_calc_skilltree(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_calc_skilltree_pre ) {
+ if (HPMHooks.count.HP_pc_calc_skilltree_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_calc_skilltree_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_calc_skilltree_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_calc_skilltree_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53386,26 +59644,78 @@ int HP_pc_calc_skilltree(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.calc_skilltree(sd);
}
- if( HPMHooks.count.HP_pc_calc_skilltree_post ) {
+ if (HPMHooks.count.HP_pc_calc_skilltree_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_calc_skilltree_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_calc_skilltree_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_calc_skilltree_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
}
return retVal___;
}
+void HP_pc_calc_skilltree_clear(struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_pc_calc_skilltree_clear_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_calc_skilltree_clear_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pc_calc_skilltree_clear_pre[hIndex].func;
+ preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.pc.calc_skilltree_clear(sd);
+ }
+ if (HPMHooks.count.HP_pc_calc_skilltree_clear_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_calc_skilltree_clear_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pc_calc_skilltree_clear_post[hIndex].func;
+ postHookFunc(sd);
+ }
+ }
+ return;
+}
+void HP_pc_calc_skilltree_bonus(struct map_session_data *sd, int classidx) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_pc_calc_skilltree_bonus_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int *classidx);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_calc_skilltree_bonus_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pc_calc_skilltree_bonus_pre[hIndex].func;
+ preHookFunc(&sd, &classidx);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.pc.calc_skilltree_bonus(sd, classidx);
+ }
+ if (HPMHooks.count.HP_pc_calc_skilltree_bonus_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int classidx);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_calc_skilltree_bonus_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pc_calc_skilltree_bonus_post[hIndex].func;
+ postHookFunc(sd, classidx);
+ }
+ }
+ return;
+}
int HP_pc_calc_skilltree_normalize_job(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_calc_skilltree_normalize_job_pre ) {
+ if (HPMHooks.count.HP_pc_calc_skilltree_normalize_job_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_calc_skilltree_normalize_job_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_calc_skilltree_normalize_job_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_calc_skilltree_normalize_job_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53413,9 +59723,9 @@ int HP_pc_calc_skilltree_normalize_job(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.calc_skilltree_normalize_job(sd);
}
- if( HPMHooks.count.HP_pc_calc_skilltree_normalize_job_post ) {
+ if (HPMHooks.count.HP_pc_calc_skilltree_normalize_job_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_calc_skilltree_normalize_job_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_calc_skilltree_normalize_job_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_calc_skilltree_normalize_job_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -53425,14 +59735,14 @@ int HP_pc_calc_skilltree_normalize_job(struct map_session_data *sd) {
int HP_pc_clean_skilltree(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_clean_skilltree_pre ) {
+ if (HPMHooks.count.HP_pc_clean_skilltree_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_clean_skilltree_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_clean_skilltree_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_clean_skilltree_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53440,26 +59750,26 @@ int HP_pc_clean_skilltree(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.clean_skilltree(sd);
}
- if( HPMHooks.count.HP_pc_clean_skilltree_post ) {
+ if (HPMHooks.count.HP_pc_clean_skilltree_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_clean_skilltree_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_clean_skilltree_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_clean_skilltree_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
}
return retVal___;
}
-int HP_pc_setpos(struct map_session_data *sd, unsigned short map_index, int x, int y, clr_type clrtype) {
+int HP_pc_setpos(struct map_session_data *sd, unsigned short map_index, int x, int y, enum clr_type clrtype) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_setpos_pre ) {
- int (*preHookFunc) (struct map_session_data **sd, unsigned short *map_index, int *x, int *y, clr_type *clrtype);
+ if (HPMHooks.count.HP_pc_setpos_pre > 0) {
+ int (*preHookFunc) (struct map_session_data **sd, unsigned short *map_index, int *x, int *y, enum clr_type *clrtype);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setpos_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setpos_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_setpos_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &map_index, &x, &y, &clrtype);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53467,9 +59777,9 @@ int HP_pc_setpos(struct map_session_data *sd, unsigned short map_index, int x, i
{
retVal___ = HPMHooks.source.pc.setpos(sd, map_index, x, y, clrtype);
}
- if( HPMHooks.count.HP_pc_setpos_post ) {
- int (*postHookFunc) (int retVal___, struct map_session_data *sd, unsigned short map_index, int x, int y, clr_type clrtype);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setpos_post; hIndex++ ) {
+ if (HPMHooks.count.HP_pc_setpos_post > 0) {
+ int (*postHookFunc) (int retVal___, struct map_session_data *sd, unsigned short map_index, int x, int y, enum clr_type clrtype);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setpos_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_setpos_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, map_index, x, y, clrtype);
}
@@ -53479,14 +59789,14 @@ int HP_pc_setpos(struct map_session_data *sd, unsigned short map_index, int x, i
int HP_pc_setsavepoint(struct map_session_data *sd, short map_index, int x, int y) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_setsavepoint_pre ) {
+ if (HPMHooks.count.HP_pc_setsavepoint_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, short *map_index, int *x, int *y);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setsavepoint_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setsavepoint_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_setsavepoint_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &map_index, &x, &y);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53494,26 +59804,26 @@ int HP_pc_setsavepoint(struct map_session_data *sd, short map_index, int x, int
{
retVal___ = HPMHooks.source.pc.setsavepoint(sd, map_index, x, y);
}
- if( HPMHooks.count.HP_pc_setsavepoint_post ) {
+ if (HPMHooks.count.HP_pc_setsavepoint_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, short map_index, int x, int y);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setsavepoint_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setsavepoint_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_setsavepoint_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, map_index, x, y);
}
}
return retVal___;
}
-int HP_pc_randomwarp(struct map_session_data *sd, clr_type type) {
+int HP_pc_randomwarp(struct map_session_data *sd, enum clr_type type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_randomwarp_pre ) {
- int (*preHookFunc) (struct map_session_data **sd, clr_type *type);
+ if (HPMHooks.count.HP_pc_randomwarp_pre > 0) {
+ int (*preHookFunc) (struct map_session_data **sd, enum clr_type *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_randomwarp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_randomwarp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_randomwarp_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53521,9 +59831,9 @@ int HP_pc_randomwarp(struct map_session_data *sd, clr_type type) {
{
retVal___ = HPMHooks.source.pc.randomwarp(sd, type);
}
- if( HPMHooks.count.HP_pc_randomwarp_post ) {
- int (*postHookFunc) (int retVal___, struct map_session_data *sd, clr_type type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_randomwarp_post; hIndex++ ) {
+ if (HPMHooks.count.HP_pc_randomwarp_post > 0) {
+ int (*postHookFunc) (int retVal___, struct map_session_data *sd, enum clr_type type);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_randomwarp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_randomwarp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, type);
}
@@ -53533,14 +59843,14 @@ int HP_pc_randomwarp(struct map_session_data *sd, clr_type type) {
int HP_pc_memo(struct map_session_data *sd, int pos) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_memo_pre ) {
+ if (HPMHooks.count.HP_pc_memo_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *pos);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_memo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_memo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_memo_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &pos);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53548,9 +59858,9 @@ int HP_pc_memo(struct map_session_data *sd, int pos) {
{
retVal___ = HPMHooks.source.pc.memo(sd, pos);
}
- if( HPMHooks.count.HP_pc_memo_post ) {
+ if (HPMHooks.count.HP_pc_memo_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int pos);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_memo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_memo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_memo_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, pos);
}
@@ -53560,14 +59870,14 @@ int HP_pc_memo(struct map_session_data *sd, int pos) {
int HP_pc_checkadditem(struct map_session_data *sd, int nameid, int amount) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_checkadditem_pre ) {
+ if (HPMHooks.count.HP_pc_checkadditem_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *nameid, int *amount);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkadditem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkadditem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_checkadditem_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &nameid, &amount);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53575,9 +59885,9 @@ int HP_pc_checkadditem(struct map_session_data *sd, int nameid, int amount) {
{
retVal___ = HPMHooks.source.pc.checkadditem(sd, nameid, amount);
}
- if( HPMHooks.count.HP_pc_checkadditem_post ) {
+ if (HPMHooks.count.HP_pc_checkadditem_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int nameid, int amount);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkadditem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkadditem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_checkadditem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, nameid, amount);
}
@@ -53587,14 +59897,14 @@ int HP_pc_checkadditem(struct map_session_data *sd, int nameid, int amount) {
int HP_pc_inventoryblank(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_inventoryblank_pre ) {
+ if (HPMHooks.count.HP_pc_inventoryblank_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_inventoryblank_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_inventoryblank_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_inventoryblank_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53602,9 +59912,9 @@ int HP_pc_inventoryblank(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.inventoryblank(sd);
}
- if( HPMHooks.count.HP_pc_inventoryblank_post ) {
+ if (HPMHooks.count.HP_pc_inventoryblank_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_inventoryblank_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_inventoryblank_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_inventoryblank_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -53614,14 +59924,14 @@ int HP_pc_inventoryblank(struct map_session_data *sd) {
int HP_pc_search_inventory(struct map_session_data *sd, int item_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_search_inventory_pre ) {
+ if (HPMHooks.count.HP_pc_search_inventory_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *item_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_search_inventory_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_search_inventory_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_search_inventory_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &item_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53629,9 +59939,9 @@ int HP_pc_search_inventory(struct map_session_data *sd, int item_id) {
{
retVal___ = HPMHooks.source.pc.search_inventory(sd, item_id);
}
- if( HPMHooks.count.HP_pc_search_inventory_post ) {
+ if (HPMHooks.count.HP_pc_search_inventory_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int item_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_search_inventory_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_search_inventory_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_search_inventory_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, item_id);
}
@@ -53641,14 +59951,14 @@ int HP_pc_search_inventory(struct map_session_data *sd, int item_id) {
int HP_pc_payzeny(struct map_session_data *sd, int zeny, enum e_log_pick_type type, struct map_session_data *tsd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_payzeny_pre ) {
+ if (HPMHooks.count.HP_pc_payzeny_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *zeny, enum e_log_pick_type *type, struct map_session_data **tsd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_payzeny_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_payzeny_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_payzeny_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &zeny, &type, &tsd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53656,26 +59966,26 @@ int HP_pc_payzeny(struct map_session_data *sd, int zeny, enum e_log_pick_type ty
{
retVal___ = HPMHooks.source.pc.payzeny(sd, zeny, type, tsd);
}
- if( HPMHooks.count.HP_pc_payzeny_post ) {
+ if (HPMHooks.count.HP_pc_payzeny_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int zeny, enum e_log_pick_type type, struct map_session_data *tsd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_payzeny_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_payzeny_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_payzeny_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, zeny, type, tsd);
}
}
return retVal___;
}
-int HP_pc_additem(struct map_session_data *sd, struct item *item_data, int amount, e_log_pick_type log_type) {
+int HP_pc_additem(struct map_session_data *sd, const struct item *item_data, int amount, e_log_pick_type log_type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_additem_pre ) {
- int (*preHookFunc) (struct map_session_data **sd, struct item **item_data, int *amount, e_log_pick_type *log_type);
+ if (HPMHooks.count.HP_pc_additem_pre > 0) {
+ int (*preHookFunc) (struct map_session_data **sd, const struct item **item_data, int *amount, e_log_pick_type *log_type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_additem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_additem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_additem_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &item_data, &amount, &log_type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53683,9 +59993,9 @@ int HP_pc_additem(struct map_session_data *sd, struct item *item_data, int amoun
{
retVal___ = HPMHooks.source.pc.additem(sd, item_data, amount, log_type);
}
- if( HPMHooks.count.HP_pc_additem_post ) {
- int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct item *item_data, int amount, e_log_pick_type log_type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_additem_post; hIndex++ ) {
+ if (HPMHooks.count.HP_pc_additem_post > 0) {
+ int (*postHookFunc) (int retVal___, struct map_session_data *sd, const struct item *item_data, int amount, e_log_pick_type log_type);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_additem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_additem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, item_data, amount, log_type);
}
@@ -53695,14 +60005,14 @@ int HP_pc_additem(struct map_session_data *sd, struct item *item_data, int amoun
int HP_pc_getzeny(struct map_session_data *sd, int zeny, enum e_log_pick_type type, struct map_session_data *tsd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_getzeny_pre ) {
+ if (HPMHooks.count.HP_pc_getzeny_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *zeny, enum e_log_pick_type *type, struct map_session_data **tsd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_getzeny_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_getzeny_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_getzeny_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &zeny, &type, &tsd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53710,9 +60020,9 @@ int HP_pc_getzeny(struct map_session_data *sd, int zeny, enum e_log_pick_type ty
{
retVal___ = HPMHooks.source.pc.getzeny(sd, zeny, type, tsd);
}
- if( HPMHooks.count.HP_pc_getzeny_post ) {
+ if (HPMHooks.count.HP_pc_getzeny_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int zeny, enum e_log_pick_type type, struct map_session_data *tsd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_getzeny_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_getzeny_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_getzeny_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, zeny, type, tsd);
}
@@ -53722,14 +60032,14 @@ int HP_pc_getzeny(struct map_session_data *sd, int zeny, enum e_log_pick_type ty
int HP_pc_delitem(struct map_session_data *sd, int n, int amount, int type, short reason, e_log_pick_type log_type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_delitem_pre ) {
+ if (HPMHooks.count.HP_pc_delitem_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *n, int *amount, int *type, short *reason, e_log_pick_type *log_type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_delitem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_delitem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_delitem_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &n, &amount, &type, &reason, &log_type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53737,9 +60047,9 @@ int HP_pc_delitem(struct map_session_data *sd, int n, int amount, int type, shor
{
retVal___ = HPMHooks.source.pc.delitem(sd, n, amount, type, reason, log_type);
}
- if( HPMHooks.count.HP_pc_delitem_post ) {
+ if (HPMHooks.count.HP_pc_delitem_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int n, int amount, int type, short reason, e_log_pick_type log_type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_delitem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_delitem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_delitem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, n, amount, type, reason, log_type);
}
@@ -53749,14 +60059,14 @@ int HP_pc_delitem(struct map_session_data *sd, int n, int amount, int type, shor
int HP_pc_paycash(struct map_session_data *sd, int price, int points) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_paycash_pre ) {
+ if (HPMHooks.count.HP_pc_paycash_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *price, int *points);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_paycash_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_paycash_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_paycash_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &price, &points);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53764,9 +60074,9 @@ int HP_pc_paycash(struct map_session_data *sd, int price, int points) {
{
retVal___ = HPMHooks.source.pc.paycash(sd, price, points);
}
- if( HPMHooks.count.HP_pc_paycash_post ) {
+ if (HPMHooks.count.HP_pc_paycash_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int price, int points);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_paycash_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_paycash_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_paycash_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, price, points);
}
@@ -53776,14 +60086,14 @@ int HP_pc_paycash(struct map_session_data *sd, int price, int points) {
int HP_pc_getcash(struct map_session_data *sd, int cash, int points) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_getcash_pre ) {
+ if (HPMHooks.count.HP_pc_getcash_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *cash, int *points);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_getcash_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_getcash_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_getcash_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &cash, &points);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53791,9 +60101,9 @@ int HP_pc_getcash(struct map_session_data *sd, int cash, int points) {
{
retVal___ = HPMHooks.source.pc.getcash(sd, cash, points);
}
- if( HPMHooks.count.HP_pc_getcash_post ) {
+ if (HPMHooks.count.HP_pc_getcash_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int cash, int points);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_getcash_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_getcash_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_getcash_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, cash, points);
}
@@ -53803,14 +60113,14 @@ int HP_pc_getcash(struct map_session_data *sd, int cash, int points) {
int HP_pc_cart_additem(struct map_session_data *sd, struct item *item_data, int amount, e_log_pick_type log_type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_cart_additem_pre ) {
+ if (HPMHooks.count.HP_pc_cart_additem_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct item **item_data, int *amount, e_log_pick_type *log_type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_cart_additem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_cart_additem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_cart_additem_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &item_data, &amount, &log_type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53818,9 +60128,9 @@ int HP_pc_cart_additem(struct map_session_data *sd, struct item *item_data, int
{
retVal___ = HPMHooks.source.pc.cart_additem(sd, item_data, amount, log_type);
}
- if( HPMHooks.count.HP_pc_cart_additem_post ) {
+ if (HPMHooks.count.HP_pc_cart_additem_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct item *item_data, int amount, e_log_pick_type log_type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_cart_additem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_cart_additem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_cart_additem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, item_data, amount, log_type);
}
@@ -53830,14 +60140,14 @@ int HP_pc_cart_additem(struct map_session_data *sd, struct item *item_data, int
int HP_pc_cart_delitem(struct map_session_data *sd, int n, int amount, int type, e_log_pick_type log_type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_cart_delitem_pre ) {
+ if (HPMHooks.count.HP_pc_cart_delitem_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *n, int *amount, int *type, e_log_pick_type *log_type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_cart_delitem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_cart_delitem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_cart_delitem_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &n, &amount, &type, &log_type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53845,9 +60155,9 @@ int HP_pc_cart_delitem(struct map_session_data *sd, int n, int amount, int type,
{
retVal___ = HPMHooks.source.pc.cart_delitem(sd, n, amount, type, log_type);
}
- if( HPMHooks.count.HP_pc_cart_delitem_post ) {
+ if (HPMHooks.count.HP_pc_cart_delitem_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int n, int amount, int type, e_log_pick_type log_type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_cart_delitem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_cart_delitem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_cart_delitem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, n, amount, type, log_type);
}
@@ -53857,14 +60167,14 @@ int HP_pc_cart_delitem(struct map_session_data *sd, int n, int amount, int type,
int HP_pc_putitemtocart(struct map_session_data *sd, int idx, int amount) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_putitemtocart_pre ) {
+ if (HPMHooks.count.HP_pc_putitemtocart_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *idx, int *amount);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_putitemtocart_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_putitemtocart_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_putitemtocart_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &idx, &amount);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53872,9 +60182,9 @@ int HP_pc_putitemtocart(struct map_session_data *sd, int idx, int amount) {
{
retVal___ = HPMHooks.source.pc.putitemtocart(sd, idx, amount);
}
- if( HPMHooks.count.HP_pc_putitemtocart_post ) {
+ if (HPMHooks.count.HP_pc_putitemtocart_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int idx, int amount);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_putitemtocart_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_putitemtocart_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_putitemtocart_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, idx, amount);
}
@@ -53884,14 +60194,14 @@ int HP_pc_putitemtocart(struct map_session_data *sd, int idx, int amount) {
int HP_pc_getitemfromcart(struct map_session_data *sd, int idx, int amount) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_getitemfromcart_pre ) {
+ if (HPMHooks.count.HP_pc_getitemfromcart_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *idx, int *amount);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_getitemfromcart_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_getitemfromcart_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_getitemfromcart_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &idx, &amount);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53899,9 +60209,9 @@ int HP_pc_getitemfromcart(struct map_session_data *sd, int idx, int amount) {
{
retVal___ = HPMHooks.source.pc.getitemfromcart(sd, idx, amount);
}
- if( HPMHooks.count.HP_pc_getitemfromcart_post ) {
+ if (HPMHooks.count.HP_pc_getitemfromcart_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int idx, int amount);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_getitemfromcart_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_getitemfromcart_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_getitemfromcart_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, idx, amount);
}
@@ -53911,14 +60221,14 @@ int HP_pc_getitemfromcart(struct map_session_data *sd, int idx, int amount) {
int HP_pc_cartitem_amount(struct map_session_data *sd, int idx, int amount) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_cartitem_amount_pre ) {
+ if (HPMHooks.count.HP_pc_cartitem_amount_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *idx, int *amount);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_cartitem_amount_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_cartitem_amount_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_cartitem_amount_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &idx, &amount);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53926,9 +60236,9 @@ int HP_pc_cartitem_amount(struct map_session_data *sd, int idx, int amount) {
{
retVal___ = HPMHooks.source.pc.cartitem_amount(sd, idx, amount);
}
- if( HPMHooks.count.HP_pc_cartitem_amount_post ) {
+ if (HPMHooks.count.HP_pc_cartitem_amount_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int idx, int amount);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_cartitem_amount_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_cartitem_amount_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_cartitem_amount_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, idx, amount);
}
@@ -53938,14 +60248,14 @@ int HP_pc_cartitem_amount(struct map_session_data *sd, int idx, int amount) {
int HP_pc_takeitem(struct map_session_data *sd, struct flooritem_data *fitem) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_takeitem_pre ) {
+ if (HPMHooks.count.HP_pc_takeitem_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct flooritem_data **fitem);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_takeitem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_takeitem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_takeitem_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &fitem);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53953,9 +60263,9 @@ int HP_pc_takeitem(struct map_session_data *sd, struct flooritem_data *fitem) {
{
retVal___ = HPMHooks.source.pc.takeitem(sd, fitem);
}
- if( HPMHooks.count.HP_pc_takeitem_post ) {
+ if (HPMHooks.count.HP_pc_takeitem_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct flooritem_data *fitem);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_takeitem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_takeitem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_takeitem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, fitem);
}
@@ -53965,14 +60275,14 @@ int HP_pc_takeitem(struct map_session_data *sd, struct flooritem_data *fitem) {
int HP_pc_dropitem(struct map_session_data *sd, int n, int amount) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_dropitem_pre ) {
+ if (HPMHooks.count.HP_pc_dropitem_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *n, int *amount);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_dropitem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_dropitem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_dropitem_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &n, &amount);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -53980,9 +60290,9 @@ int HP_pc_dropitem(struct map_session_data *sd, int n, int amount) {
{
retVal___ = HPMHooks.source.pc.dropitem(sd, n, amount);
}
- if( HPMHooks.count.HP_pc_dropitem_post ) {
+ if (HPMHooks.count.HP_pc_dropitem_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int n, int amount);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_dropitem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_dropitem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_dropitem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, n, amount);
}
@@ -53992,14 +60302,14 @@ int HP_pc_dropitem(struct map_session_data *sd, int n, int amount) {
bool HP_pc_isequipped(struct map_session_data *sd, int nameid) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_pc_isequipped_pre ) {
+ if (HPMHooks.count.HP_pc_isequipped_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, int *nameid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_isequipped_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_isequipped_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_isequipped_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &nameid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54007,9 +60317,9 @@ bool HP_pc_isequipped(struct map_session_data *sd, int nameid) {
{
retVal___ = HPMHooks.source.pc.isequipped(sd, nameid);
}
- if( HPMHooks.count.HP_pc_isequipped_post ) {
+ if (HPMHooks.count.HP_pc_isequipped_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, int nameid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_isequipped_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_isequipped_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_isequipped_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, nameid);
}
@@ -54019,14 +60329,14 @@ bool HP_pc_isequipped(struct map_session_data *sd, int nameid) {
bool HP_pc_can_Adopt(struct map_session_data *p1_sd, struct map_session_data *p2_sd, struct map_session_data *b_sd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_pc_can_Adopt_pre ) {
+ if (HPMHooks.count.HP_pc_can_Adopt_pre > 0) {
bool (*preHookFunc) (struct map_session_data **p1_sd, struct map_session_data **p2_sd, struct map_session_data **b_sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_can_Adopt_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_can_Adopt_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_can_Adopt_pre[hIndex].func;
retVal___ = preHookFunc(&p1_sd, &p2_sd, &b_sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54034,9 +60344,9 @@ bool HP_pc_can_Adopt(struct map_session_data *p1_sd, struct map_session_data *p2
{
retVal___ = HPMHooks.source.pc.can_Adopt(p1_sd, p2_sd, b_sd);
}
- if( HPMHooks.count.HP_pc_can_Adopt_post ) {
+ if (HPMHooks.count.HP_pc_can_Adopt_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *p1_sd, struct map_session_data *p2_sd, struct map_session_data *b_sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_can_Adopt_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_can_Adopt_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_can_Adopt_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p1_sd, p2_sd, b_sd);
}
@@ -54046,14 +60356,14 @@ bool HP_pc_can_Adopt(struct map_session_data *p1_sd, struct map_session_data *p2
bool HP_pc_adoption(struct map_session_data *p1_sd, struct map_session_data *p2_sd, struct map_session_data *b_sd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_pc_adoption_pre ) {
+ if (HPMHooks.count.HP_pc_adoption_pre > 0) {
bool (*preHookFunc) (struct map_session_data **p1_sd, struct map_session_data **p2_sd, struct map_session_data **b_sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_adoption_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_adoption_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_adoption_pre[hIndex].func;
retVal___ = preHookFunc(&p1_sd, &p2_sd, &b_sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54061,9 +60371,9 @@ bool HP_pc_adoption(struct map_session_data *p1_sd, struct map_session_data *p2_
{
retVal___ = HPMHooks.source.pc.adoption(p1_sd, p2_sd, b_sd);
}
- if( HPMHooks.count.HP_pc_adoption_post ) {
+ if (HPMHooks.count.HP_pc_adoption_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *p1_sd, struct map_session_data *p2_sd, struct map_session_data *b_sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_adoption_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_adoption_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_adoption_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p1_sd, p2_sd, b_sd);
}
@@ -54073,14 +60383,14 @@ bool HP_pc_adoption(struct map_session_data *p1_sd, struct map_session_data *p2_
int HP_pc_updateweightstatus(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_updateweightstatus_pre ) {
+ if (HPMHooks.count.HP_pc_updateweightstatus_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_updateweightstatus_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_updateweightstatus_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_updateweightstatus_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54088,9 +60398,9 @@ int HP_pc_updateweightstatus(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.updateweightstatus(sd);
}
- if( HPMHooks.count.HP_pc_updateweightstatus_post ) {
+ if (HPMHooks.count.HP_pc_updateweightstatus_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_updateweightstatus_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_updateweightstatus_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_updateweightstatus_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -54100,14 +60410,14 @@ int HP_pc_updateweightstatus(struct map_session_data *sd) {
int HP_pc_addautobonus(struct s_autobonus *bonus, char max, const char *bonus_script, short rate, unsigned int dur, short atk_type, const char *o_script, unsigned short pos, bool onskill) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_addautobonus_pre ) {
+ if (HPMHooks.count.HP_pc_addautobonus_pre > 0) {
int (*preHookFunc) (struct s_autobonus **bonus, char *max, const char **bonus_script, short *rate, unsigned int *dur, short *atk_type, const char **o_script, unsigned short *pos, bool *onskill);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_addautobonus_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_addautobonus_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_addautobonus_pre[hIndex].func;
retVal___ = preHookFunc(&bonus, &max, &bonus_script, &rate, &dur, &atk_type, &o_script, &pos, &onskill);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54115,9 +60425,9 @@ int HP_pc_addautobonus(struct s_autobonus *bonus, char max, const char *bonus_sc
{
retVal___ = HPMHooks.source.pc.addautobonus(bonus, max, bonus_script, rate, dur, atk_type, o_script, pos, onskill);
}
- if( HPMHooks.count.HP_pc_addautobonus_post ) {
+ if (HPMHooks.count.HP_pc_addautobonus_post > 0) {
int (*postHookFunc) (int retVal___, struct s_autobonus *bonus, char max, const char *bonus_script, short rate, unsigned int dur, short atk_type, const char *o_script, unsigned short pos, bool onskill);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_addautobonus_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_addautobonus_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_addautobonus_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bonus, max, bonus_script, rate, dur, atk_type, o_script, pos, onskill);
}
@@ -54127,14 +60437,14 @@ int HP_pc_addautobonus(struct s_autobonus *bonus, char max, const char *bonus_sc
int HP_pc_exeautobonus(struct map_session_data *sd, struct s_autobonus *bonus) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_exeautobonus_pre ) {
+ if (HPMHooks.count.HP_pc_exeautobonus_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct s_autobonus **bonus);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_exeautobonus_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_exeautobonus_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_exeautobonus_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &bonus);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54142,9 +60452,9 @@ int HP_pc_exeautobonus(struct map_session_data *sd, struct s_autobonus *bonus) {
{
retVal___ = HPMHooks.source.pc.exeautobonus(sd, bonus);
}
- if( HPMHooks.count.HP_pc_exeautobonus_post ) {
+ if (HPMHooks.count.HP_pc_exeautobonus_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct s_autobonus *bonus);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_exeautobonus_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_exeautobonus_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_exeautobonus_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, bonus);
}
@@ -54154,14 +60464,14 @@ int HP_pc_exeautobonus(struct map_session_data *sd, struct s_autobonus *bonus) {
int HP_pc_endautobonus(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_endautobonus_pre ) {
+ if (HPMHooks.count.HP_pc_endautobonus_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_endautobonus_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_endautobonus_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_endautobonus_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54169,9 +60479,9 @@ int HP_pc_endautobonus(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.pc.endautobonus(tid, tick, id, data);
}
- if( HPMHooks.count.HP_pc_endautobonus_post ) {
+ if (HPMHooks.count.HP_pc_endautobonus_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_endautobonus_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_endautobonus_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_endautobonus_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -54181,14 +60491,14 @@ int HP_pc_endautobonus(int tid, int64 tick, int id, intptr_t data) {
int HP_pc_delautobonus(struct map_session_data *sd, struct s_autobonus *bonus, char max, bool restore) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_delautobonus_pre ) {
+ if (HPMHooks.count.HP_pc_delautobonus_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct s_autobonus **bonus, char *max, bool *restore);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_delautobonus_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_delautobonus_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_delautobonus_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &bonus, &max, &restore);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54196,9 +60506,9 @@ int HP_pc_delautobonus(struct map_session_data *sd, struct s_autobonus *bonus, c
{
retVal___ = HPMHooks.source.pc.delautobonus(sd, bonus, max, restore);
}
- if( HPMHooks.count.HP_pc_delautobonus_post ) {
+ if (HPMHooks.count.HP_pc_delautobonus_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct s_autobonus *bonus, char max, bool restore);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_delautobonus_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_delautobonus_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_delautobonus_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, bonus, max, restore);
}
@@ -54208,14 +60518,14 @@ int HP_pc_delautobonus(struct map_session_data *sd, struct s_autobonus *bonus, c
int HP_pc_bonus(struct map_session_data *sd, int type, int val) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_bonus_pre ) {
+ if (HPMHooks.count.HP_pc_bonus_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *type, int *val);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_bonus_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &type, &val);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54223,9 +60533,9 @@ int HP_pc_bonus(struct map_session_data *sd, int type, int val) {
{
retVal___ = HPMHooks.source.pc.bonus(sd, type, val);
}
- if( HPMHooks.count.HP_pc_bonus_post ) {
+ if (HPMHooks.count.HP_pc_bonus_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int type, int val);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_bonus_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, type, val);
}
@@ -54235,14 +60545,14 @@ int HP_pc_bonus(struct map_session_data *sd, int type, int val) {
int HP_pc_bonus2(struct map_session_data *sd, int type, int type2, int val) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_bonus2_pre ) {
+ if (HPMHooks.count.HP_pc_bonus2_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *type, int *type2, int *val);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_bonus2_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &type, &type2, &val);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54250,9 +60560,9 @@ int HP_pc_bonus2(struct map_session_data *sd, int type, int type2, int val) {
{
retVal___ = HPMHooks.source.pc.bonus2(sd, type, type2, val);
}
- if( HPMHooks.count.HP_pc_bonus2_post ) {
+ if (HPMHooks.count.HP_pc_bonus2_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int type, int type2, int val);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_bonus2_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, type, type2, val);
}
@@ -54262,14 +60572,14 @@ int HP_pc_bonus2(struct map_session_data *sd, int type, int type2, int val) {
int HP_pc_bonus3(struct map_session_data *sd, int type, int type2, int type3, int val) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_bonus3_pre ) {
+ if (HPMHooks.count.HP_pc_bonus3_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *type, int *type2, int *type3, int *val);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus3_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus3_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_bonus3_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &type, &type2, &type3, &val);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54277,9 +60587,9 @@ int HP_pc_bonus3(struct map_session_data *sd, int type, int type2, int type3, in
{
retVal___ = HPMHooks.source.pc.bonus3(sd, type, type2, type3, val);
}
- if( HPMHooks.count.HP_pc_bonus3_post ) {
+ if (HPMHooks.count.HP_pc_bonus3_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int type, int type2, int type3, int val);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus3_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus3_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_bonus3_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, type, type2, type3, val);
}
@@ -54289,14 +60599,14 @@ int HP_pc_bonus3(struct map_session_data *sd, int type, int type2, int type3, in
int HP_pc_bonus4(struct map_session_data *sd, int type, int type2, int type3, int type4, int val) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_bonus4_pre ) {
+ if (HPMHooks.count.HP_pc_bonus4_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *type, int *type2, int *type3, int *type4, int *val);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus4_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus4_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_bonus4_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &type, &type2, &type3, &type4, &val);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54304,9 +60614,9 @@ int HP_pc_bonus4(struct map_session_data *sd, int type, int type2, int type3, in
{
retVal___ = HPMHooks.source.pc.bonus4(sd, type, type2, type3, type4, val);
}
- if( HPMHooks.count.HP_pc_bonus4_post ) {
+ if (HPMHooks.count.HP_pc_bonus4_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int type, int type2, int type3, int type4, int val);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus4_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus4_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_bonus4_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, type, type2, type3, type4, val);
}
@@ -54316,14 +60626,14 @@ int HP_pc_bonus4(struct map_session_data *sd, int type, int type2, int type3, in
int HP_pc_bonus5(struct map_session_data *sd, int type, int type2, int type3, int type4, int type5, int val) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_bonus5_pre ) {
+ if (HPMHooks.count.HP_pc_bonus5_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *type, int *type2, int *type3, int *type4, int *type5, int *val);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus5_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus5_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_bonus5_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &type, &type2, &type3, &type4, &type5, &val);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54331,9 +60641,9 @@ int HP_pc_bonus5(struct map_session_data *sd, int type, int type2, int type3, in
{
retVal___ = HPMHooks.source.pc.bonus5(sd, type, type2, type3, type4, type5, val);
}
- if( HPMHooks.count.HP_pc_bonus5_post ) {
+ if (HPMHooks.count.HP_pc_bonus5_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int type, int type2, int type3, int type4, int type5, int val);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus5_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus5_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_bonus5_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, type, type2, type3, type4, type5, val);
}
@@ -54343,14 +60653,14 @@ int HP_pc_bonus5(struct map_session_data *sd, int type, int type2, int type3, in
int HP_pc_skill(struct map_session_data *sd, int id, int level, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_skill_pre ) {
+ if (HPMHooks.count.HP_pc_skill_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *id, int *level, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_skill_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_skill_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_skill_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &id, &level, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54358,9 +60668,9 @@ int HP_pc_skill(struct map_session_data *sd, int id, int level, int flag) {
{
retVal___ = HPMHooks.source.pc.skill(sd, id, level, flag);
}
- if( HPMHooks.count.HP_pc_skill_post ) {
+ if (HPMHooks.count.HP_pc_skill_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int id, int level, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_skill_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_skill_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_skill_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, id, level, flag);
}
@@ -54370,14 +60680,14 @@ int HP_pc_skill(struct map_session_data *sd, int id, int level, int flag) {
int HP_pc_insert_card(struct map_session_data *sd, int idx_card, int idx_equip) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_insert_card_pre ) {
+ if (HPMHooks.count.HP_pc_insert_card_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *idx_card, int *idx_equip);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_insert_card_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_insert_card_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_insert_card_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &idx_card, &idx_equip);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54385,9 +60695,9 @@ int HP_pc_insert_card(struct map_session_data *sd, int idx_card, int idx_equip)
{
retVal___ = HPMHooks.source.pc.insert_card(sd, idx_card, idx_equip);
}
- if( HPMHooks.count.HP_pc_insert_card_post ) {
+ if (HPMHooks.count.HP_pc_insert_card_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int idx_card, int idx_equip);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_insert_card_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_insert_card_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_insert_card_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, idx_card, idx_equip);
}
@@ -54397,14 +60707,14 @@ int HP_pc_insert_card(struct map_session_data *sd, int idx_card, int idx_equip)
bool HP_pc_can_insert_card(struct map_session_data *sd, int idx_card) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_pc_can_insert_card_pre ) {
+ if (HPMHooks.count.HP_pc_can_insert_card_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, int *idx_card);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_can_insert_card_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_can_insert_card_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_can_insert_card_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &idx_card);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54412,9 +60722,9 @@ bool HP_pc_can_insert_card(struct map_session_data *sd, int idx_card) {
{
retVal___ = HPMHooks.source.pc.can_insert_card(sd, idx_card);
}
- if( HPMHooks.count.HP_pc_can_insert_card_post ) {
+ if (HPMHooks.count.HP_pc_can_insert_card_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, int idx_card);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_can_insert_card_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_can_insert_card_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_can_insert_card_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, idx_card);
}
@@ -54424,14 +60734,14 @@ bool HP_pc_can_insert_card(struct map_session_data *sd, int idx_card) {
bool HP_pc_can_insert_card_into(struct map_session_data *sd, int idx_card, int idx_equip) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_pc_can_insert_card_into_pre ) {
+ if (HPMHooks.count.HP_pc_can_insert_card_into_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, int *idx_card, int *idx_equip);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_can_insert_card_into_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_can_insert_card_into_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_can_insert_card_into_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &idx_card, &idx_equip);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54439,9 +60749,9 @@ bool HP_pc_can_insert_card_into(struct map_session_data *sd, int idx_card, int i
{
retVal___ = HPMHooks.source.pc.can_insert_card_into(sd, idx_card, idx_equip);
}
- if( HPMHooks.count.HP_pc_can_insert_card_into_post ) {
+ if (HPMHooks.count.HP_pc_can_insert_card_into_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, int idx_card, int idx_equip);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_can_insert_card_into_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_can_insert_card_into_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_can_insert_card_into_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, idx_card, idx_equip);
}
@@ -54451,14 +60761,14 @@ bool HP_pc_can_insert_card_into(struct map_session_data *sd, int idx_card, int i
int HP_pc_steal_item(struct map_session_data *sd, struct block_list *bl, uint16 skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_steal_item_pre ) {
+ if (HPMHooks.count.HP_pc_steal_item_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct block_list **bl, uint16 *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_steal_item_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_steal_item_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_steal_item_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &bl, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54466,9 +60776,9 @@ int HP_pc_steal_item(struct map_session_data *sd, struct block_list *bl, uint16
{
retVal___ = HPMHooks.source.pc.steal_item(sd, bl, skill_lv);
}
- if( HPMHooks.count.HP_pc_steal_item_post ) {
+ if (HPMHooks.count.HP_pc_steal_item_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct block_list *bl, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_steal_item_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_steal_item_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_steal_item_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, bl, skill_lv);
}
@@ -54478,14 +60788,14 @@ int HP_pc_steal_item(struct map_session_data *sd, struct block_list *bl, uint16
int HP_pc_steal_coin(struct map_session_data *sd, struct block_list *bl, uint16 skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_steal_coin_pre ) {
+ if (HPMHooks.count.HP_pc_steal_coin_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct block_list **bl, uint16 *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_steal_coin_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_steal_coin_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_steal_coin_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &bl, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54493,9 +60803,9 @@ int HP_pc_steal_coin(struct map_session_data *sd, struct block_list *bl, uint16
{
retVal___ = HPMHooks.source.pc.steal_coin(sd, bl, skill_lv);
}
- if( HPMHooks.count.HP_pc_steal_coin_post ) {
+ if (HPMHooks.count.HP_pc_steal_coin_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct block_list *bl, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_steal_coin_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_steal_coin_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_steal_coin_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, bl, skill_lv);
}
@@ -54505,14 +60815,14 @@ int HP_pc_steal_coin(struct map_session_data *sd, struct block_list *bl, uint16
int HP_pc_modifybuyvalue(struct map_session_data *sd, int orig_value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_modifybuyvalue_pre ) {
+ if (HPMHooks.count.HP_pc_modifybuyvalue_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *orig_value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_modifybuyvalue_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_modifybuyvalue_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_modifybuyvalue_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &orig_value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54520,9 +60830,9 @@ int HP_pc_modifybuyvalue(struct map_session_data *sd, int orig_value) {
{
retVal___ = HPMHooks.source.pc.modifybuyvalue(sd, orig_value);
}
- if( HPMHooks.count.HP_pc_modifybuyvalue_post ) {
+ if (HPMHooks.count.HP_pc_modifybuyvalue_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int orig_value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_modifybuyvalue_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_modifybuyvalue_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_modifybuyvalue_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, orig_value);
}
@@ -54532,14 +60842,14 @@ int HP_pc_modifybuyvalue(struct map_session_data *sd, int orig_value) {
int HP_pc_modifysellvalue(struct map_session_data *sd, int orig_value) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_modifysellvalue_pre ) {
+ if (HPMHooks.count.HP_pc_modifysellvalue_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *orig_value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_modifysellvalue_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_modifysellvalue_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_modifysellvalue_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &orig_value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54547,9 +60857,9 @@ int HP_pc_modifysellvalue(struct map_session_data *sd, int orig_value) {
{
retVal___ = HPMHooks.source.pc.modifysellvalue(sd, orig_value);
}
- if( HPMHooks.count.HP_pc_modifysellvalue_post ) {
+ if (HPMHooks.count.HP_pc_modifysellvalue_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int orig_value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_modifysellvalue_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_modifysellvalue_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_modifysellvalue_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, orig_value);
}
@@ -54559,14 +60869,14 @@ int HP_pc_modifysellvalue(struct map_session_data *sd, int orig_value) {
int HP_pc_follow(struct map_session_data *sd, int target_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_follow_pre ) {
+ if (HPMHooks.count.HP_pc_follow_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *target_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_follow_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_follow_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_follow_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &target_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54574,9 +60884,9 @@ int HP_pc_follow(struct map_session_data *sd, int target_id) {
{
retVal___ = HPMHooks.source.pc.follow(sd, target_id);
}
- if( HPMHooks.count.HP_pc_follow_post ) {
+ if (HPMHooks.count.HP_pc_follow_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int target_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_follow_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_follow_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_follow_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, target_id);
}
@@ -54586,14 +60896,14 @@ int HP_pc_follow(struct map_session_data *sd, int target_id) {
int HP_pc_stop_following(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_stop_following_pre ) {
+ if (HPMHooks.count.HP_pc_stop_following_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_stop_following_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_stop_following_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_stop_following_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54601,9 +60911,9 @@ int HP_pc_stop_following(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.stop_following(sd);
}
- if( HPMHooks.count.HP_pc_stop_following_post ) {
+ if (HPMHooks.count.HP_pc_stop_following_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_stop_following_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_stop_following_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_stop_following_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -54613,14 +60923,14 @@ int HP_pc_stop_following(struct map_session_data *sd) {
int HP_pc_maxbaselv(const struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_maxbaselv_pre ) {
+ if (HPMHooks.count.HP_pc_maxbaselv_pre > 0) {
int (*preHookFunc) (const struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_maxbaselv_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_maxbaselv_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_maxbaselv_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54628,9 +60938,9 @@ int HP_pc_maxbaselv(const struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.maxbaselv(sd);
}
- if( HPMHooks.count.HP_pc_maxbaselv_post ) {
+ if (HPMHooks.count.HP_pc_maxbaselv_post > 0) {
int (*postHookFunc) (int retVal___, const struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_maxbaselv_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_maxbaselv_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_maxbaselv_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -54640,14 +60950,14 @@ int HP_pc_maxbaselv(const struct map_session_data *sd) {
int HP_pc_maxjoblv(const struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_maxjoblv_pre ) {
+ if (HPMHooks.count.HP_pc_maxjoblv_pre > 0) {
int (*preHookFunc) (const struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_maxjoblv_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_maxjoblv_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_maxjoblv_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54655,9 +60965,9 @@ int HP_pc_maxjoblv(const struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.maxjoblv(sd);
}
- if( HPMHooks.count.HP_pc_maxjoblv_post ) {
+ if (HPMHooks.count.HP_pc_maxjoblv_post > 0) {
int (*postHookFunc) (int retVal___, const struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_maxjoblv_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_maxjoblv_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_maxjoblv_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -54667,14 +60977,14 @@ int HP_pc_maxjoblv(const struct map_session_data *sd) {
int HP_pc_checkbaselevelup(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_checkbaselevelup_pre ) {
+ if (HPMHooks.count.HP_pc_checkbaselevelup_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkbaselevelup_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkbaselevelup_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_checkbaselevelup_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54682,26 +60992,52 @@ int HP_pc_checkbaselevelup(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.checkbaselevelup(sd);
}
- if( HPMHooks.count.HP_pc_checkbaselevelup_post ) {
+ if (HPMHooks.count.HP_pc_checkbaselevelup_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkbaselevelup_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkbaselevelup_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_checkbaselevelup_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
}
return retVal___;
}
+void HP_pc_checkbaselevelup_sc(struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_pc_checkbaselevelup_sc_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkbaselevelup_sc_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pc_checkbaselevelup_sc_pre[hIndex].func;
+ preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.pc.checkbaselevelup_sc(sd);
+ }
+ if (HPMHooks.count.HP_pc_checkbaselevelup_sc_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkbaselevelup_sc_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pc_checkbaselevelup_sc_post[hIndex].func;
+ postHookFunc(sd);
+ }
+ }
+ return;
+}
int HP_pc_checkjoblevelup(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_checkjoblevelup_pre ) {
+ if (HPMHooks.count.HP_pc_checkjoblevelup_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkjoblevelup_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkjoblevelup_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_checkjoblevelup_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54709,26 +61045,26 @@ int HP_pc_checkjoblevelup(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.checkjoblevelup(sd);
}
- if( HPMHooks.count.HP_pc_checkjoblevelup_post ) {
+ if (HPMHooks.count.HP_pc_checkjoblevelup_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkjoblevelup_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkjoblevelup_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_checkjoblevelup_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
}
return retVal___;
}
-bool HP_pc_gainexp(struct map_session_data *sd, struct block_list *src, unsigned int base_exp, unsigned int job_exp, bool is_quest) {
+bool HP_pc_gainexp(struct map_session_data *sd, struct block_list *src, uint64 base_exp, uint64 job_exp, bool is_quest) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_pc_gainexp_pre ) {
- bool (*preHookFunc) (struct map_session_data **sd, struct block_list **src, unsigned int *base_exp, unsigned int *job_exp, bool *is_quest);
+ if (HPMHooks.count.HP_pc_gainexp_pre > 0) {
+ bool (*preHookFunc) (struct map_session_data **sd, struct block_list **src, uint64 *base_exp, uint64 *job_exp, bool *is_quest);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_gainexp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_gainexp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_gainexp_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &src, &base_exp, &job_exp, &is_quest);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54736,26 +61072,26 @@ bool HP_pc_gainexp(struct map_session_data *sd, struct block_list *src, unsigned
{
retVal___ = HPMHooks.source.pc.gainexp(sd, src, base_exp, job_exp, is_quest);
}
- if( HPMHooks.count.HP_pc_gainexp_post ) {
- bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, struct block_list *src, unsigned int base_exp, unsigned int job_exp, bool is_quest);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_gainexp_post; hIndex++ ) {
+ if (HPMHooks.count.HP_pc_gainexp_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, struct block_list *src, uint64 base_exp, uint64 job_exp, bool is_quest);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_gainexp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_gainexp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, src, base_exp, job_exp, is_quest);
}
}
return retVal___;
}
-unsigned int HP_pc_nextbaseexp(const struct map_session_data *sd) {
+uint64 HP_pc_nextbaseexp(const struct map_session_data *sd) {
int hIndex = 0;
- unsigned int retVal___ = 0;
- if( HPMHooks.count.HP_pc_nextbaseexp_pre ) {
- unsigned int (*preHookFunc) (const struct map_session_data **sd);
+ uint64 retVal___ = 0;
+ if (HPMHooks.count.HP_pc_nextbaseexp_pre > 0) {
+ uint64 (*preHookFunc) (const struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_nextbaseexp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_nextbaseexp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_nextbaseexp_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54763,26 +61099,26 @@ unsigned int HP_pc_nextbaseexp(const struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.nextbaseexp(sd);
}
- if( HPMHooks.count.HP_pc_nextbaseexp_post ) {
- unsigned int (*postHookFunc) (unsigned int retVal___, const struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_nextbaseexp_post; hIndex++ ) {
+ if (HPMHooks.count.HP_pc_nextbaseexp_post > 0) {
+ uint64 (*postHookFunc) (uint64 retVal___, const struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_nextbaseexp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_nextbaseexp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
}
return retVal___;
}
-unsigned int HP_pc_thisbaseexp(const struct map_session_data *sd) {
+uint64 HP_pc_thisbaseexp(const struct map_session_data *sd) {
int hIndex = 0;
- unsigned int retVal___ = 0;
- if( HPMHooks.count.HP_pc_thisbaseexp_pre ) {
- unsigned int (*preHookFunc) (const struct map_session_data **sd);
+ uint64 retVal___ = 0;
+ if (HPMHooks.count.HP_pc_thisbaseexp_pre > 0) {
+ uint64 (*preHookFunc) (const struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_thisbaseexp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_thisbaseexp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_thisbaseexp_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54790,26 +61126,26 @@ unsigned int HP_pc_thisbaseexp(const struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.thisbaseexp(sd);
}
- if( HPMHooks.count.HP_pc_thisbaseexp_post ) {
- unsigned int (*postHookFunc) (unsigned int retVal___, const struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_thisbaseexp_post; hIndex++ ) {
+ if (HPMHooks.count.HP_pc_thisbaseexp_post > 0) {
+ uint64 (*postHookFunc) (uint64 retVal___, const struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_thisbaseexp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_thisbaseexp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
}
return retVal___;
}
-unsigned int HP_pc_nextjobexp(const struct map_session_data *sd) {
+uint64 HP_pc_nextjobexp(const struct map_session_data *sd) {
int hIndex = 0;
- unsigned int retVal___ = 0;
- if( HPMHooks.count.HP_pc_nextjobexp_pre ) {
- unsigned int (*preHookFunc) (const struct map_session_data **sd);
+ uint64 retVal___ = 0;
+ if (HPMHooks.count.HP_pc_nextjobexp_pre > 0) {
+ uint64 (*preHookFunc) (const struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_nextjobexp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_nextjobexp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_nextjobexp_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54817,26 +61153,26 @@ unsigned int HP_pc_nextjobexp(const struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.nextjobexp(sd);
}
- if( HPMHooks.count.HP_pc_nextjobexp_post ) {
- unsigned int (*postHookFunc) (unsigned int retVal___, const struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_nextjobexp_post; hIndex++ ) {
+ if (HPMHooks.count.HP_pc_nextjobexp_post > 0) {
+ uint64 (*postHookFunc) (uint64 retVal___, const struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_nextjobexp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_nextjobexp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
}
return retVal___;
}
-unsigned int HP_pc_thisjobexp(const struct map_session_data *sd) {
+uint64 HP_pc_thisjobexp(const struct map_session_data *sd) {
int hIndex = 0;
- unsigned int retVal___ = 0;
- if( HPMHooks.count.HP_pc_thisjobexp_pre ) {
- unsigned int (*preHookFunc) (const struct map_session_data **sd);
+ uint64 retVal___ = 0;
+ if (HPMHooks.count.HP_pc_thisjobexp_pre > 0) {
+ uint64 (*preHookFunc) (const struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_thisjobexp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_thisjobexp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_thisjobexp_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54844,9 +61180,9 @@ unsigned int HP_pc_thisjobexp(const struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.thisjobexp(sd);
}
- if( HPMHooks.count.HP_pc_thisjobexp_post ) {
- unsigned int (*postHookFunc) (unsigned int retVal___, const struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_thisjobexp_post; hIndex++ ) {
+ if (HPMHooks.count.HP_pc_thisjobexp_post > 0) {
+ uint64 (*postHookFunc) (uint64 retVal___, const struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_thisjobexp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_thisjobexp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -54856,14 +61192,14 @@ unsigned int HP_pc_thisjobexp(const struct map_session_data *sd) {
int HP_pc_gets_status_point(int level) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_gets_status_point_pre ) {
+ if (HPMHooks.count.HP_pc_gets_status_point_pre > 0) {
int (*preHookFunc) (int *level);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_gets_status_point_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_gets_status_point_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_gets_status_point_pre[hIndex].func;
retVal___ = preHookFunc(&level);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54871,9 +61207,9 @@ int HP_pc_gets_status_point(int level) {
{
retVal___ = HPMHooks.source.pc.gets_status_point(level);
}
- if( HPMHooks.count.HP_pc_gets_status_point_post ) {
+ if (HPMHooks.count.HP_pc_gets_status_point_post > 0) {
int (*postHookFunc) (int retVal___, int level);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_gets_status_point_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_gets_status_point_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_gets_status_point_post[hIndex].func;
retVal___ = postHookFunc(retVal___, level);
}
@@ -54883,14 +61219,14 @@ int HP_pc_gets_status_point(int level) {
int HP_pc_need_status_point(struct map_session_data *sd, int type, int val) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_need_status_point_pre ) {
+ if (HPMHooks.count.HP_pc_need_status_point_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *type, int *val);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_need_status_point_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_need_status_point_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_need_status_point_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &type, &val);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54898,9 +61234,9 @@ int HP_pc_need_status_point(struct map_session_data *sd, int type, int val) {
{
retVal___ = HPMHooks.source.pc.need_status_point(sd, type, val);
}
- if( HPMHooks.count.HP_pc_need_status_point_post ) {
+ if (HPMHooks.count.HP_pc_need_status_point_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int type, int val);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_need_status_point_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_need_status_point_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_need_status_point_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, type, val);
}
@@ -54910,14 +61246,14 @@ int HP_pc_need_status_point(struct map_session_data *sd, int type, int val) {
int HP_pc_maxparameterincrease(struct map_session_data *sd, int type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_maxparameterincrease_pre ) {
+ if (HPMHooks.count.HP_pc_maxparameterincrease_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_maxparameterincrease_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_maxparameterincrease_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_maxparameterincrease_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54925,9 +61261,9 @@ int HP_pc_maxparameterincrease(struct map_session_data *sd, int type) {
{
retVal___ = HPMHooks.source.pc.maxparameterincrease(sd, type);
}
- if( HPMHooks.count.HP_pc_maxparameterincrease_post ) {
+ if (HPMHooks.count.HP_pc_maxparameterincrease_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_maxparameterincrease_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_maxparameterincrease_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_maxparameterincrease_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, type);
}
@@ -54937,14 +61273,14 @@ int HP_pc_maxparameterincrease(struct map_session_data *sd, int type) {
bool HP_pc_statusup(struct map_session_data *sd, int type, int increase) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_pc_statusup_pre ) {
+ if (HPMHooks.count.HP_pc_statusup_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, int *type, int *increase);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_statusup_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_statusup_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_statusup_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &type, &increase);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54952,9 +61288,9 @@ bool HP_pc_statusup(struct map_session_data *sd, int type, int increase) {
{
retVal___ = HPMHooks.source.pc.statusup(sd, type, increase);
}
- if( HPMHooks.count.HP_pc_statusup_post ) {
+ if (HPMHooks.count.HP_pc_statusup_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, int type, int increase);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_statusup_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_statusup_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_statusup_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, type, increase);
}
@@ -54964,14 +61300,14 @@ bool HP_pc_statusup(struct map_session_data *sd, int type, int increase) {
int HP_pc_statusup2(struct map_session_data *sd, int type, int val) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_statusup2_pre ) {
+ if (HPMHooks.count.HP_pc_statusup2_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *type, int *val);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_statusup2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_statusup2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_statusup2_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &type, &val);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -54979,9 +61315,9 @@ int HP_pc_statusup2(struct map_session_data *sd, int type, int val) {
{
retVal___ = HPMHooks.source.pc.statusup2(sd, type, val);
}
- if( HPMHooks.count.HP_pc_statusup2_post ) {
+ if (HPMHooks.count.HP_pc_statusup2_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int type, int val);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_statusup2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_statusup2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_statusup2_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, type, val);
}
@@ -54991,14 +61327,14 @@ int HP_pc_statusup2(struct map_session_data *sd, int type, int val) {
int HP_pc_skillup(struct map_session_data *sd, uint16 skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_skillup_pre ) {
+ if (HPMHooks.count.HP_pc_skillup_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, uint16 *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_skillup_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_skillup_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_skillup_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -55006,9 +61342,9 @@ int HP_pc_skillup(struct map_session_data *sd, uint16 skill_id) {
{
retVal___ = HPMHooks.source.pc.skillup(sd, skill_id);
}
- if( HPMHooks.count.HP_pc_skillup_post ) {
+ if (HPMHooks.count.HP_pc_skillup_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_skillup_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_skillup_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_skillup_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, skill_id);
}
@@ -55018,14 +61354,14 @@ int HP_pc_skillup(struct map_session_data *sd, uint16 skill_id) {
int HP_pc_allskillup(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_allskillup_pre ) {
+ if (HPMHooks.count.HP_pc_allskillup_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_allskillup_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_allskillup_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_allskillup_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -55033,9 +61369,9 @@ int HP_pc_allskillup(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.allskillup(sd);
}
- if( HPMHooks.count.HP_pc_allskillup_post ) {
+ if (HPMHooks.count.HP_pc_allskillup_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_allskillup_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_allskillup_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_allskillup_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -55045,14 +61381,14 @@ int HP_pc_allskillup(struct map_session_data *sd) {
int HP_pc_resetlvl(struct map_session_data *sd, int type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_resetlvl_pre ) {
+ if (HPMHooks.count.HP_pc_resetlvl_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_resetlvl_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_resetlvl_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_resetlvl_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -55060,9 +61396,9 @@ int HP_pc_resetlvl(struct map_session_data *sd, int type) {
{
retVal___ = HPMHooks.source.pc.resetlvl(sd, type);
}
- if( HPMHooks.count.HP_pc_resetlvl_post ) {
+ if (HPMHooks.count.HP_pc_resetlvl_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_resetlvl_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_resetlvl_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_resetlvl_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, type);
}
@@ -55072,14 +61408,14 @@ int HP_pc_resetlvl(struct map_session_data *sd, int type) {
int HP_pc_resetstate(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_resetstate_pre ) {
+ if (HPMHooks.count.HP_pc_resetstate_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_resetstate_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_resetstate_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_resetstate_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -55087,9 +61423,9 @@ int HP_pc_resetstate(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.resetstate(sd);
}
- if( HPMHooks.count.HP_pc_resetstate_post ) {
+ if (HPMHooks.count.HP_pc_resetstate_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_resetstate_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_resetstate_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_resetstate_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -55099,14 +61435,14 @@ int HP_pc_resetstate(struct map_session_data *sd) {
int HP_pc_resetskill(struct map_session_data *sd, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_resetskill_pre ) {
+ if (HPMHooks.count.HP_pc_resetskill_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_resetskill_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_resetskill_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_resetskill_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -55114,26 +61450,53 @@ int HP_pc_resetskill(struct map_session_data *sd, int flag) {
{
retVal___ = HPMHooks.source.pc.resetskill(sd, flag);
}
- if( HPMHooks.count.HP_pc_resetskill_post ) {
+ if (HPMHooks.count.HP_pc_resetskill_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_resetskill_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_resetskill_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_resetskill_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, flag);
}
}
return retVal___;
}
+bool HP_pc_resetskill_job(struct map_session_data *sd, int index) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_pc_resetskill_job_pre > 0) {
+ bool (*preHookFunc) (struct map_session_data **sd, int *index);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_resetskill_job_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pc_resetskill_job_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &index);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.pc.resetskill_job(sd, index);
+ }
+ if (HPMHooks.count.HP_pc_resetskill_job_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, int index);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_resetskill_job_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pc_resetskill_job_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, index);
+ }
+ }
+ return retVal___;
+}
int HP_pc_resetfeel(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_resetfeel_pre ) {
+ if (HPMHooks.count.HP_pc_resetfeel_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_resetfeel_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_resetfeel_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_resetfeel_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -55141,9 +61504,9 @@ int HP_pc_resetfeel(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.resetfeel(sd);
}
- if( HPMHooks.count.HP_pc_resetfeel_post ) {
+ if (HPMHooks.count.HP_pc_resetfeel_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_resetfeel_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_resetfeel_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_resetfeel_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -55153,14 +61516,14 @@ int HP_pc_resetfeel(struct map_session_data *sd) {
int HP_pc_resethate(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_resethate_pre ) {
+ if (HPMHooks.count.HP_pc_resethate_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_resethate_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_resethate_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_resethate_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -55168,9 +61531,9 @@ int HP_pc_resethate(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.resethate(sd);
}
- if( HPMHooks.count.HP_pc_resethate_post ) {
+ if (HPMHooks.count.HP_pc_resethate_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_resethate_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_resethate_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_resethate_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -55180,14 +61543,14 @@ int HP_pc_resethate(struct map_session_data *sd) {
int HP_pc_equipitem(struct map_session_data *sd, int n, int req_pos) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_equipitem_pre ) {
+ if (HPMHooks.count.HP_pc_equipitem_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *n, int *req_pos);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_equipitem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_equipitem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_equipitem_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &n, &req_pos);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -55195,9 +61558,9 @@ int HP_pc_equipitem(struct map_session_data *sd, int n, int req_pos) {
{
retVal___ = HPMHooks.source.pc.equipitem(sd, n, req_pos);
}
- if( HPMHooks.count.HP_pc_equipitem_post ) {
+ if (HPMHooks.count.HP_pc_equipitem_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int n, int req_pos);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_equipitem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_equipitem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_equipitem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, n, req_pos);
}
@@ -55206,14 +61569,14 @@ int HP_pc_equipitem(struct map_session_data *sd, int n, int req_pos) {
}
void HP_pc_equipitem_pos(struct map_session_data *sd, struct item_data *id, int n, int pos) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_equipitem_pos_pre ) {
+ if (HPMHooks.count.HP_pc_equipitem_pos_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct item_data **id, int *n, int *pos);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_equipitem_pos_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_equipitem_pos_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_equipitem_pos_pre[hIndex].func;
preHookFunc(&sd, &id, &n, &pos);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -55221,9 +61584,9 @@ void HP_pc_equipitem_pos(struct map_session_data *sd, struct item_data *id, int
{
HPMHooks.source.pc.equipitem_pos(sd, id, n, pos);
}
- if( HPMHooks.count.HP_pc_equipitem_pos_post ) {
+ if (HPMHooks.count.HP_pc_equipitem_pos_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct item_data *id, int n, int pos);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_equipitem_pos_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_equipitem_pos_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_equipitem_pos_post[hIndex].func;
postHookFunc(sd, id, n, pos);
}
@@ -55233,14 +61596,14 @@ void HP_pc_equipitem_pos(struct map_session_data *sd, struct item_data *id, int
int HP_pc_unequipitem(struct map_session_data *sd, int n, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_unequipitem_pre ) {
+ if (HPMHooks.count.HP_pc_unequipitem_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *n, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_unequipitem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_unequipitem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_unequipitem_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &n, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -55248,9 +61611,9 @@ int HP_pc_unequipitem(struct map_session_data *sd, int n, int flag) {
{
retVal___ = HPMHooks.source.pc.unequipitem(sd, n, flag);
}
- if( HPMHooks.count.HP_pc_unequipitem_post ) {
+ if (HPMHooks.count.HP_pc_unequipitem_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int n, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_unequipitem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_unequipitem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_unequipitem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, n, flag);
}
@@ -55259,14 +61622,14 @@ int HP_pc_unequipitem(struct map_session_data *sd, int n, int flag) {
}
void HP_pc_unequipitem_pos(struct map_session_data *sd, int n, int pos) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_unequipitem_pos_pre ) {
+ if (HPMHooks.count.HP_pc_unequipitem_pos_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *n, int *pos);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_unequipitem_pos_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_unequipitem_pos_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_unequipitem_pos_pre[hIndex].func;
preHookFunc(&sd, &n, &pos);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -55274,9 +61637,9 @@ void HP_pc_unequipitem_pos(struct map_session_data *sd, int n, int pos) {
{
HPMHooks.source.pc.unequipitem_pos(sd, n, pos);
}
- if( HPMHooks.count.HP_pc_unequipitem_pos_post ) {
+ if (HPMHooks.count.HP_pc_unequipitem_pos_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int n, int pos);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_unequipitem_pos_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_unequipitem_pos_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_unequipitem_pos_post[hIndex].func;
postHookFunc(sd, n, pos);
}
@@ -55286,14 +61649,14 @@ void HP_pc_unequipitem_pos(struct map_session_data *sd, int n, int pos) {
int HP_pc_checkitem(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_checkitem_pre ) {
+ if (HPMHooks.count.HP_pc_checkitem_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkitem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkitem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_checkitem_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -55301,9 +61664,9 @@ int HP_pc_checkitem(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.checkitem(sd);
}
- if( HPMHooks.count.HP_pc_checkitem_post ) {
+ if (HPMHooks.count.HP_pc_checkitem_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkitem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkitem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_checkitem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -55313,14 +61676,14 @@ int HP_pc_checkitem(struct map_session_data *sd) {
int HP_pc_useitem(struct map_session_data *sd, int n) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_useitem_pre ) {
+ if (HPMHooks.count.HP_pc_useitem_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *n);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_useitem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_useitem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_useitem_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &n);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -55328,9 +61691,9 @@ int HP_pc_useitem(struct map_session_data *sd, int n) {
{
retVal___ = HPMHooks.source.pc.useitem(sd, n);
}
- if( HPMHooks.count.HP_pc_useitem_post ) {
+ if (HPMHooks.count.HP_pc_useitem_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int n);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_useitem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_useitem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_useitem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, n);
}
@@ -55340,14 +61703,14 @@ int HP_pc_useitem(struct map_session_data *sd, int n) {
int HP_pc_skillatk_bonus(struct map_session_data *sd, uint16 skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_skillatk_bonus_pre ) {
+ if (HPMHooks.count.HP_pc_skillatk_bonus_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, uint16 *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_skillatk_bonus_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_skillatk_bonus_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_skillatk_bonus_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -55355,9 +61718,9 @@ int HP_pc_skillatk_bonus(struct map_session_data *sd, uint16 skill_id) {
{
retVal___ = HPMHooks.source.pc.skillatk_bonus(sd, skill_id);
}
- if( HPMHooks.count.HP_pc_skillatk_bonus_post ) {
+ if (HPMHooks.count.HP_pc_skillatk_bonus_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_skillatk_bonus_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_skillatk_bonus_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_skillatk_bonus_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, skill_id);
}
@@ -55367,14 +61730,14 @@ int HP_pc_skillatk_bonus(struct map_session_data *sd, uint16 skill_id) {
int HP_pc_skillheal_bonus(struct map_session_data *sd, uint16 skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_skillheal_bonus_pre ) {
+ if (HPMHooks.count.HP_pc_skillheal_bonus_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, uint16 *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_skillheal_bonus_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_skillheal_bonus_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_skillheal_bonus_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -55382,9 +61745,9 @@ int HP_pc_skillheal_bonus(struct map_session_data *sd, uint16 skill_id) {
{
retVal___ = HPMHooks.source.pc.skillheal_bonus(sd, skill_id);
}
- if( HPMHooks.count.HP_pc_skillheal_bonus_post ) {
+ if (HPMHooks.count.HP_pc_skillheal_bonus_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_skillheal_bonus_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_skillheal_bonus_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_skillheal_bonus_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, skill_id);
}
@@ -55394,14 +61757,14 @@ int HP_pc_skillheal_bonus(struct map_session_data *sd, uint16 skill_id) {
int HP_pc_skillheal2_bonus(struct map_session_data *sd, uint16 skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_skillheal2_bonus_pre ) {
+ if (HPMHooks.count.HP_pc_skillheal2_bonus_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, uint16 *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_skillheal2_bonus_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_skillheal2_bonus_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_skillheal2_bonus_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -55409,9 +61772,9 @@ int HP_pc_skillheal2_bonus(struct map_session_data *sd, uint16 skill_id) {
{
retVal___ = HPMHooks.source.pc.skillheal2_bonus(sd, skill_id);
}
- if( HPMHooks.count.HP_pc_skillheal2_bonus_post ) {
+ if (HPMHooks.count.HP_pc_skillheal2_bonus_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_skillheal2_bonus_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_skillheal2_bonus_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_skillheal2_bonus_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, skill_id);
}
@@ -55420,14 +61783,14 @@ int HP_pc_skillheal2_bonus(struct map_session_data *sd, uint16 skill_id) {
}
void HP_pc_damage(struct map_session_data *sd, struct block_list *src, unsigned int hp, unsigned int sp) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_damage_pre ) {
+ if (HPMHooks.count.HP_pc_damage_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct block_list **src, unsigned int *hp, unsigned int *sp);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_damage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_damage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_damage_pre[hIndex].func;
preHookFunc(&sd, &src, &hp, &sp);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -55435,9 +61798,9 @@ void HP_pc_damage(struct map_session_data *sd, struct block_list *src, unsigned
{
HPMHooks.source.pc.damage(sd, src, hp, sp);
}
- if( HPMHooks.count.HP_pc_damage_post ) {
+ if (HPMHooks.count.HP_pc_damage_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct block_list *src, unsigned int hp, unsigned int sp);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_damage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_damage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_damage_post[hIndex].func;
postHookFunc(sd, src, hp, sp);
}
@@ -55447,14 +61810,14 @@ void HP_pc_damage(struct map_session_data *sd, struct block_list *src, unsigned
int HP_pc_dead(struct map_session_data *sd, struct block_list *src) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_dead_pre ) {
+ if (HPMHooks.count.HP_pc_dead_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct block_list **src);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_dead_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_dead_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_dead_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &src);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -55462,9 +61825,9 @@ int HP_pc_dead(struct map_session_data *sd, struct block_list *src) {
{
retVal___ = HPMHooks.source.pc.dead(sd, src);
}
- if( HPMHooks.count.HP_pc_dead_post ) {
+ if (HPMHooks.count.HP_pc_dead_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct block_list *src);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_dead_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_dead_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_dead_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, src);
}
@@ -55473,14 +61836,14 @@ int HP_pc_dead(struct map_session_data *sd, struct block_list *src) {
}
void HP_pc_revive(struct map_session_data *sd, unsigned int hp, unsigned int sp) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_revive_pre ) {
+ if (HPMHooks.count.HP_pc_revive_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, unsigned int *hp, unsigned int *sp);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_revive_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_revive_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_revive_pre[hIndex].func;
preHookFunc(&sd, &hp, &sp);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -55488,9 +61851,9 @@ void HP_pc_revive(struct map_session_data *sd, unsigned int hp, unsigned int sp)
{
HPMHooks.source.pc.revive(sd, hp, sp);
}
- if( HPMHooks.count.HP_pc_revive_post ) {
+ if (HPMHooks.count.HP_pc_revive_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, unsigned int hp, unsigned int sp);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_revive_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_revive_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_revive_post[hIndex].func;
postHookFunc(sd, hp, sp);
}
@@ -55499,14 +61862,14 @@ void HP_pc_revive(struct map_session_data *sd, unsigned int hp, unsigned int sp)
}
void HP_pc_heal(struct map_session_data *sd, unsigned int hp, unsigned int sp, int type) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_heal_pre ) {
+ if (HPMHooks.count.HP_pc_heal_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, unsigned int *hp, unsigned int *sp, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_heal_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_heal_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_heal_pre[hIndex].func;
preHookFunc(&sd, &hp, &sp, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -55514,9 +61877,9 @@ void HP_pc_heal(struct map_session_data *sd, unsigned int hp, unsigned int sp, i
{
HPMHooks.source.pc.heal(sd, hp, sp, type);
}
- if( HPMHooks.count.HP_pc_heal_post ) {
+ if (HPMHooks.count.HP_pc_heal_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, unsigned int hp, unsigned int sp, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_heal_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_heal_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_heal_post[hIndex].func;
postHookFunc(sd, hp, sp, type);
}
@@ -55526,14 +61889,14 @@ void HP_pc_heal(struct map_session_data *sd, unsigned int hp, unsigned int sp, i
int HP_pc_itemheal(struct map_session_data *sd, int itemid, int hp, int sp) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_itemheal_pre ) {
+ if (HPMHooks.count.HP_pc_itemheal_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *itemid, int *hp, int *sp);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_itemheal_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_itemheal_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_itemheal_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &itemid, &hp, &sp);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -55541,9 +61904,9 @@ int HP_pc_itemheal(struct map_session_data *sd, int itemid, int hp, int sp) {
{
retVal___ = HPMHooks.source.pc.itemheal(sd, itemid, hp, sp);
}
- if( HPMHooks.count.HP_pc_itemheal_post ) {
+ if (HPMHooks.count.HP_pc_itemheal_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int itemid, int hp, int sp);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_itemheal_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_itemheal_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_itemheal_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, itemid, hp, sp);
}
@@ -55553,14 +61916,14 @@ int HP_pc_itemheal(struct map_session_data *sd, int itemid, int hp, int sp) {
int HP_pc_percentheal(struct map_session_data *sd, int hp, int sp) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_percentheal_pre ) {
+ if (HPMHooks.count.HP_pc_percentheal_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *hp, int *sp);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_percentheal_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_percentheal_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_percentheal_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &hp, &sp);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -55568,9 +61931,9 @@ int HP_pc_percentheal(struct map_session_data *sd, int hp, int sp) {
{
retVal___ = HPMHooks.source.pc.percentheal(sd, hp, sp);
}
- if( HPMHooks.count.HP_pc_percentheal_post ) {
+ if (HPMHooks.count.HP_pc_percentheal_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int hp, int sp);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_percentheal_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_percentheal_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_percentheal_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, hp, sp);
}
@@ -55580,14 +61943,14 @@ int HP_pc_percentheal(struct map_session_data *sd, int hp, int sp) {
int HP_pc_jobchange(struct map_session_data *sd, int class, int upper) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_jobchange_pre ) {
+ if (HPMHooks.count.HP_pc_jobchange_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *class, int *upper);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_jobchange_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_jobchange_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_jobchange_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &class, &upper);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -55595,9 +61958,9 @@ int HP_pc_jobchange(struct map_session_data *sd, int class, int upper) {
{
retVal___ = HPMHooks.source.pc.jobchange(sd, class, upper);
}
- if( HPMHooks.count.HP_pc_jobchange_post ) {
+ if (HPMHooks.count.HP_pc_jobchange_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int class, int upper);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_jobchange_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_jobchange_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_jobchange_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, class, upper);
}
@@ -55607,14 +61970,14 @@ int HP_pc_jobchange(struct map_session_data *sd, int class, int upper) {
int HP_pc_setoption(struct map_session_data *sd, int type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_setoption_pre ) {
+ if (HPMHooks.count.HP_pc_setoption_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setoption_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setoption_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_setoption_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -55622,9 +61985,9 @@ int HP_pc_setoption(struct map_session_data *sd, int type) {
{
retVal___ = HPMHooks.source.pc.setoption(sd, type);
}
- if( HPMHooks.count.HP_pc_setoption_post ) {
+ if (HPMHooks.count.HP_pc_setoption_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setoption_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setoption_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_setoption_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, type);
}
@@ -55634,14 +61997,14 @@ int HP_pc_setoption(struct map_session_data *sd, int type) {
int HP_pc_setcart(struct map_session_data *sd, int type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_setcart_pre ) {
+ if (HPMHooks.count.HP_pc_setcart_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setcart_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setcart_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_setcart_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -55649,9 +62012,9 @@ int HP_pc_setcart(struct map_session_data *sd, int type) {
{
retVal___ = HPMHooks.source.pc.setcart(sd, type);
}
- if( HPMHooks.count.HP_pc_setcart_post ) {
+ if (HPMHooks.count.HP_pc_setcart_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setcart_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setcart_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_setcart_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, type);
}
@@ -55660,14 +62023,14 @@ int HP_pc_setcart(struct map_session_data *sd, int type) {
}
void HP_pc_setfalcon(struct map_session_data *sd, bool flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_setfalcon_pre ) {
+ if (HPMHooks.count.HP_pc_setfalcon_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, bool *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setfalcon_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setfalcon_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_setfalcon_pre[hIndex].func;
preHookFunc(&sd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -55675,9 +62038,9 @@ void HP_pc_setfalcon(struct map_session_data *sd, bool flag) {
{
HPMHooks.source.pc.setfalcon(sd, flag);
}
- if( HPMHooks.count.HP_pc_setfalcon_post ) {
+ if (HPMHooks.count.HP_pc_setfalcon_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, bool flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setfalcon_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setfalcon_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_setfalcon_post[hIndex].func;
postHookFunc(sd, flag);
}
@@ -55686,14 +62049,14 @@ void HP_pc_setfalcon(struct map_session_data *sd, bool flag) {
}
void HP_pc_setridingpeco(struct map_session_data *sd, bool flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_setridingpeco_pre ) {
+ if (HPMHooks.count.HP_pc_setridingpeco_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, bool *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setridingpeco_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setridingpeco_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_setridingpeco_pre[hIndex].func;
preHookFunc(&sd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -55701,9 +62064,9 @@ void HP_pc_setridingpeco(struct map_session_data *sd, bool flag) {
{
HPMHooks.source.pc.setridingpeco(sd, flag);
}
- if( HPMHooks.count.HP_pc_setridingpeco_post ) {
+ if (HPMHooks.count.HP_pc_setridingpeco_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, bool flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setridingpeco_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setridingpeco_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_setridingpeco_post[hIndex].func;
postHookFunc(sd, flag);
}
@@ -55712,14 +62075,14 @@ void HP_pc_setridingpeco(struct map_session_data *sd, bool flag) {
}
void HP_pc_setmadogear(struct map_session_data *sd, bool flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_setmadogear_pre ) {
+ if (HPMHooks.count.HP_pc_setmadogear_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, bool *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setmadogear_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setmadogear_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_setmadogear_pre[hIndex].func;
preHookFunc(&sd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -55727,9 +62090,9 @@ void HP_pc_setmadogear(struct map_session_data *sd, bool flag) {
{
HPMHooks.source.pc.setmadogear(sd, flag);
}
- if( HPMHooks.count.HP_pc_setmadogear_post ) {
+ if (HPMHooks.count.HP_pc_setmadogear_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, bool flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setmadogear_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setmadogear_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_setmadogear_post[hIndex].func;
postHookFunc(sd, flag);
}
@@ -55738,14 +62101,14 @@ void HP_pc_setmadogear(struct map_session_data *sd, bool flag) {
}
void HP_pc_setridingdragon(struct map_session_data *sd, unsigned int type) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_setridingdragon_pre ) {
+ if (HPMHooks.count.HP_pc_setridingdragon_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, unsigned int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setridingdragon_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setridingdragon_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_setridingdragon_pre[hIndex].func;
preHookFunc(&sd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -55753,9 +62116,9 @@ void HP_pc_setridingdragon(struct map_session_data *sd, unsigned int type) {
{
HPMHooks.source.pc.setridingdragon(sd, type);
}
- if( HPMHooks.count.HP_pc_setridingdragon_post ) {
+ if (HPMHooks.count.HP_pc_setridingdragon_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, unsigned int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setridingdragon_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setridingdragon_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_setridingdragon_post[hIndex].func;
postHookFunc(sd, type);
}
@@ -55764,14 +62127,14 @@ void HP_pc_setridingdragon(struct map_session_data *sd, unsigned int type) {
}
void HP_pc_setridingwug(struct map_session_data *sd, bool flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_setridingwug_pre ) {
+ if (HPMHooks.count.HP_pc_setridingwug_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, bool *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setridingwug_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setridingwug_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_setridingwug_pre[hIndex].func;
preHookFunc(&sd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -55779,9 +62142,9 @@ void HP_pc_setridingwug(struct map_session_data *sd, bool flag) {
{
HPMHooks.source.pc.setridingwug(sd, flag);
}
- if( HPMHooks.count.HP_pc_setridingwug_post ) {
+ if (HPMHooks.count.HP_pc_setridingwug_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, bool flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setridingwug_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setridingwug_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_setridingwug_post[hIndex].func;
postHookFunc(sd, flag);
}
@@ -55791,14 +62154,14 @@ void HP_pc_setridingwug(struct map_session_data *sd, bool flag) {
int HP_pc_changelook(struct map_session_data *sd, int type, int val) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_changelook_pre ) {
+ if (HPMHooks.count.HP_pc_changelook_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *type, int *val);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_changelook_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_changelook_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_changelook_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &type, &val);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -55806,9 +62169,9 @@ int HP_pc_changelook(struct map_session_data *sd, int type, int val) {
{
retVal___ = HPMHooks.source.pc.changelook(sd, type, val);
}
- if( HPMHooks.count.HP_pc_changelook_post ) {
+ if (HPMHooks.count.HP_pc_changelook_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int type, int val);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_changelook_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_changelook_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_changelook_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, type, val);
}
@@ -55818,14 +62181,14 @@ int HP_pc_changelook(struct map_session_data *sd, int type, int val) {
int HP_pc_equiplookall(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_equiplookall_pre ) {
+ if (HPMHooks.count.HP_pc_equiplookall_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_equiplookall_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_equiplookall_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_equiplookall_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -55833,26 +62196,26 @@ int HP_pc_equiplookall(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.equiplookall(sd);
}
- if( HPMHooks.count.HP_pc_equiplookall_post ) {
+ if (HPMHooks.count.HP_pc_equiplookall_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_equiplookall_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_equiplookall_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_equiplookall_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
}
return retVal___;
}
-int HP_pc_readparam(const struct map_session_data *sd, int type) {
+int64 HP_pc_readparam(const struct map_session_data *sd, int type) {
int hIndex = 0;
- int retVal___ = 0;
- if( HPMHooks.count.HP_pc_readparam_pre ) {
- int (*preHookFunc) (const struct map_session_data **sd, int *type);
+ int64 retVal___ = 0;
+ if (HPMHooks.count.HP_pc_readparam_pre > 0) {
+ int64 (*preHookFunc) (const struct map_session_data **sd, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_readparam_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_readparam_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_readparam_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -55860,26 +62223,26 @@ int HP_pc_readparam(const struct map_session_data *sd, int type) {
{
retVal___ = HPMHooks.source.pc.readparam(sd, type);
}
- if( HPMHooks.count.HP_pc_readparam_post ) {
- int (*postHookFunc) (int retVal___, const struct map_session_data *sd, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_readparam_post; hIndex++ ) {
+ if (HPMHooks.count.HP_pc_readparam_post > 0) {
+ int64 (*postHookFunc) (int64 retVal___, const struct map_session_data *sd, int type);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_readparam_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_readparam_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, type);
}
}
return retVal___;
}
-int HP_pc_setparam(struct map_session_data *sd, int type, int val) {
+int HP_pc_setparam(struct map_session_data *sd, int type, int64 val) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_setparam_pre ) {
- int (*preHookFunc) (struct map_session_data **sd, int *type, int *val);
+ if (HPMHooks.count.HP_pc_setparam_pre > 0) {
+ int (*preHookFunc) (struct map_session_data **sd, int *type, int64 *val);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setparam_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setparam_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_setparam_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &type, &val);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -55887,9 +62250,9 @@ int HP_pc_setparam(struct map_session_data *sd, int type, int val) {
{
retVal___ = HPMHooks.source.pc.setparam(sd, type, val);
}
- if( HPMHooks.count.HP_pc_setparam_post ) {
- int (*postHookFunc) (int retVal___, struct map_session_data *sd, int type, int val);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setparam_post; hIndex++ ) {
+ if (HPMHooks.count.HP_pc_setparam_post > 0) {
+ int (*postHookFunc) (int retVal___, struct map_session_data *sd, int type, int64 val);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setparam_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_setparam_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, type, val);
}
@@ -55899,14 +62262,14 @@ int HP_pc_setparam(struct map_session_data *sd, int type, int val) {
int HP_pc_readreg(struct map_session_data *sd, int64 reg) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_readreg_pre ) {
+ if (HPMHooks.count.HP_pc_readreg_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int64 *reg);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_readreg_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_readreg_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_readreg_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &reg);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -55914,9 +62277,9 @@ int HP_pc_readreg(struct map_session_data *sd, int64 reg) {
{
retVal___ = HPMHooks.source.pc.readreg(sd, reg);
}
- if( HPMHooks.count.HP_pc_readreg_post ) {
+ if (HPMHooks.count.HP_pc_readreg_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int64 reg);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_readreg_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_readreg_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_readreg_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, reg);
}
@@ -55925,14 +62288,14 @@ int HP_pc_readreg(struct map_session_data *sd, int64 reg) {
}
void HP_pc_setreg(struct map_session_data *sd, int64 reg, int val) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_setreg_pre ) {
+ if (HPMHooks.count.HP_pc_setreg_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int64 *reg, int *val);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setreg_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setreg_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_setreg_pre[hIndex].func;
preHookFunc(&sd, &reg, &val);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -55940,9 +62303,9 @@ void HP_pc_setreg(struct map_session_data *sd, int64 reg, int val) {
{
HPMHooks.source.pc.setreg(sd, reg, val);
}
- if( HPMHooks.count.HP_pc_setreg_post ) {
+ if (HPMHooks.count.HP_pc_setreg_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int64 reg, int val);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setreg_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setreg_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_setreg_post[hIndex].func;
postHookFunc(sd, reg, val);
}
@@ -55952,14 +62315,14 @@ void HP_pc_setreg(struct map_session_data *sd, int64 reg, int val) {
char* HP_pc_readregstr(struct map_session_data *sd, int64 reg) {
int hIndex = 0;
char* retVal___ = NULL;
- if( HPMHooks.count.HP_pc_readregstr_pre ) {
+ if (HPMHooks.count.HP_pc_readregstr_pre > 0) {
char* (*preHookFunc) (struct map_session_data **sd, int64 *reg);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_readregstr_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_readregstr_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_readregstr_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &reg);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -55967,9 +62330,9 @@ char* HP_pc_readregstr(struct map_session_data *sd, int64 reg) {
{
retVal___ = HPMHooks.source.pc.readregstr(sd, reg);
}
- if( HPMHooks.count.HP_pc_readregstr_post ) {
+ if (HPMHooks.count.HP_pc_readregstr_post > 0) {
char* (*postHookFunc) (char* retVal___, struct map_session_data *sd, int64 reg);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_readregstr_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_readregstr_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_readregstr_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, reg);
}
@@ -55978,14 +62341,14 @@ char* HP_pc_readregstr(struct map_session_data *sd, int64 reg) {
}
void HP_pc_setregstr(struct map_session_data *sd, int64 reg, const char *str) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_setregstr_pre ) {
+ if (HPMHooks.count.HP_pc_setregstr_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int64 *reg, const char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setregstr_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setregstr_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_setregstr_pre[hIndex].func;
preHookFunc(&sd, &reg, &str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -55993,9 +62356,9 @@ void HP_pc_setregstr(struct map_session_data *sd, int64 reg, const char *str) {
{
HPMHooks.source.pc.setregstr(sd, reg, str);
}
- if( HPMHooks.count.HP_pc_setregstr_post ) {
+ if (HPMHooks.count.HP_pc_setregstr_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int64 reg, const char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setregstr_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setregstr_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_setregstr_post[hIndex].func;
postHookFunc(sd, reg, str);
}
@@ -56005,14 +62368,14 @@ void HP_pc_setregstr(struct map_session_data *sd, int64 reg, const char *str) {
int HP_pc_readregistry(struct map_session_data *sd, int64 reg) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_readregistry_pre ) {
+ if (HPMHooks.count.HP_pc_readregistry_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int64 *reg);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_readregistry_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_readregistry_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_readregistry_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &reg);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -56020,9 +62383,9 @@ int HP_pc_readregistry(struct map_session_data *sd, int64 reg) {
{
retVal___ = HPMHooks.source.pc.readregistry(sd, reg);
}
- if( HPMHooks.count.HP_pc_readregistry_post ) {
+ if (HPMHooks.count.HP_pc_readregistry_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int64 reg);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_readregistry_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_readregistry_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_readregistry_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, reg);
}
@@ -56032,14 +62395,14 @@ int HP_pc_readregistry(struct map_session_data *sd, int64 reg) {
int HP_pc_setregistry(struct map_session_data *sd, int64 reg, int val) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_setregistry_pre ) {
+ if (HPMHooks.count.HP_pc_setregistry_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int64 *reg, int *val);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setregistry_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setregistry_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_setregistry_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &reg, &val);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -56047,9 +62410,9 @@ int HP_pc_setregistry(struct map_session_data *sd, int64 reg, int val) {
{
retVal___ = HPMHooks.source.pc.setregistry(sd, reg, val);
}
- if( HPMHooks.count.HP_pc_setregistry_post ) {
+ if (HPMHooks.count.HP_pc_setregistry_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int64 reg, int val);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setregistry_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setregistry_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_setregistry_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, reg, val);
}
@@ -56059,14 +62422,14 @@ int HP_pc_setregistry(struct map_session_data *sd, int64 reg, int val) {
char* HP_pc_readregistry_str(struct map_session_data *sd, int64 reg) {
int hIndex = 0;
char* retVal___ = NULL;
- if( HPMHooks.count.HP_pc_readregistry_str_pre ) {
+ if (HPMHooks.count.HP_pc_readregistry_str_pre > 0) {
char* (*preHookFunc) (struct map_session_data **sd, int64 *reg);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_readregistry_str_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_readregistry_str_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_readregistry_str_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &reg);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -56074,9 +62437,9 @@ char* HP_pc_readregistry_str(struct map_session_data *sd, int64 reg) {
{
retVal___ = HPMHooks.source.pc.readregistry_str(sd, reg);
}
- if( HPMHooks.count.HP_pc_readregistry_str_post ) {
+ if (HPMHooks.count.HP_pc_readregistry_str_post > 0) {
char* (*postHookFunc) (char* retVal___, struct map_session_data *sd, int64 reg);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_readregistry_str_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_readregistry_str_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_readregistry_str_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, reg);
}
@@ -56086,14 +62449,14 @@ char* HP_pc_readregistry_str(struct map_session_data *sd, int64 reg) {
int HP_pc_setregistry_str(struct map_session_data *sd, int64 reg, const char *val) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_setregistry_str_pre ) {
+ if (HPMHooks.count.HP_pc_setregistry_str_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int64 *reg, const char **val);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setregistry_str_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setregistry_str_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_setregistry_str_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &reg, &val);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -56101,9 +62464,9 @@ int HP_pc_setregistry_str(struct map_session_data *sd, int64 reg, const char *va
{
retVal___ = HPMHooks.source.pc.setregistry_str(sd, reg, val);
}
- if( HPMHooks.count.HP_pc_setregistry_str_post ) {
+ if (HPMHooks.count.HP_pc_setregistry_str_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int64 reg, const char *val);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setregistry_str_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setregistry_str_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_setregistry_str_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, reg, val);
}
@@ -56113,14 +62476,14 @@ int HP_pc_setregistry_str(struct map_session_data *sd, int64 reg, const char *va
int HP_pc_addeventtimer(struct map_session_data *sd, int tick, const char *name) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_addeventtimer_pre ) {
+ if (HPMHooks.count.HP_pc_addeventtimer_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *tick, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_addeventtimer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_addeventtimer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_addeventtimer_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &tick, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -56128,9 +62491,9 @@ int HP_pc_addeventtimer(struct map_session_data *sd, int tick, const char *name)
{
retVal___ = HPMHooks.source.pc.addeventtimer(sd, tick, name);
}
- if( HPMHooks.count.HP_pc_addeventtimer_post ) {
+ if (HPMHooks.count.HP_pc_addeventtimer_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int tick, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_addeventtimer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_addeventtimer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_addeventtimer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, tick, name);
}
@@ -56140,14 +62503,14 @@ int HP_pc_addeventtimer(struct map_session_data *sd, int tick, const char *name)
int HP_pc_deleventtimer(struct map_session_data *sd, const char *name) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_deleventtimer_pre ) {
+ if (HPMHooks.count.HP_pc_deleventtimer_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_deleventtimer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_deleventtimer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_deleventtimer_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -56155,9 +62518,9 @@ int HP_pc_deleventtimer(struct map_session_data *sd, const char *name) {
{
retVal___ = HPMHooks.source.pc.deleventtimer(sd, name);
}
- if( HPMHooks.count.HP_pc_deleventtimer_post ) {
+ if (HPMHooks.count.HP_pc_deleventtimer_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_deleventtimer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_deleventtimer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_deleventtimer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, name);
}
@@ -56167,14 +62530,14 @@ int HP_pc_deleventtimer(struct map_session_data *sd, const char *name) {
int HP_pc_cleareventtimer(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_cleareventtimer_pre ) {
+ if (HPMHooks.count.HP_pc_cleareventtimer_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_cleareventtimer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_cleareventtimer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_cleareventtimer_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -56182,9 +62545,9 @@ int HP_pc_cleareventtimer(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.cleareventtimer(sd);
}
- if( HPMHooks.count.HP_pc_cleareventtimer_post ) {
+ if (HPMHooks.count.HP_pc_cleareventtimer_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_cleareventtimer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_cleareventtimer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_cleareventtimer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -56194,14 +62557,14 @@ int HP_pc_cleareventtimer(struct map_session_data *sd) {
int HP_pc_addeventtimercount(struct map_session_data *sd, const char *name, int tick) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_addeventtimercount_pre ) {
+ if (HPMHooks.count.HP_pc_addeventtimercount_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, const char **name, int *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_addeventtimercount_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_addeventtimercount_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_addeventtimercount_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &name, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -56209,9 +62572,9 @@ int HP_pc_addeventtimercount(struct map_session_data *sd, const char *name, int
{
retVal___ = HPMHooks.source.pc.addeventtimercount(sd, name, tick);
}
- if( HPMHooks.count.HP_pc_addeventtimercount_post ) {
+ if (HPMHooks.count.HP_pc_addeventtimercount_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, const char *name, int tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_addeventtimercount_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_addeventtimercount_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_addeventtimercount_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, name, tick);
}
@@ -56221,14 +62584,14 @@ int HP_pc_addeventtimercount(struct map_session_data *sd, const char *name, int
int HP_pc_calc_pvprank(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_calc_pvprank_pre ) {
+ if (HPMHooks.count.HP_pc_calc_pvprank_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_calc_pvprank_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_calc_pvprank_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_calc_pvprank_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -56236,9 +62599,9 @@ int HP_pc_calc_pvprank(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.calc_pvprank(sd);
}
- if( HPMHooks.count.HP_pc_calc_pvprank_post ) {
+ if (HPMHooks.count.HP_pc_calc_pvprank_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_calc_pvprank_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_calc_pvprank_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_calc_pvprank_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -56248,14 +62611,14 @@ int HP_pc_calc_pvprank(struct map_session_data *sd) {
int HP_pc_calc_pvprank_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_calc_pvprank_timer_pre ) {
+ if (HPMHooks.count.HP_pc_calc_pvprank_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_calc_pvprank_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_calc_pvprank_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_calc_pvprank_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -56263,9 +62626,9 @@ int HP_pc_calc_pvprank_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.pc.calc_pvprank_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_pc_calc_pvprank_timer_post ) {
+ if (HPMHooks.count.HP_pc_calc_pvprank_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_calc_pvprank_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_calc_pvprank_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_calc_pvprank_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -56275,14 +62638,14 @@ int HP_pc_calc_pvprank_timer(int tid, int64 tick, int id, intptr_t data) {
int HP_pc_ismarried(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_ismarried_pre ) {
+ if (HPMHooks.count.HP_pc_ismarried_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_ismarried_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_ismarried_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_ismarried_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -56290,9 +62653,9 @@ int HP_pc_ismarried(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.ismarried(sd);
}
- if( HPMHooks.count.HP_pc_ismarried_post ) {
+ if (HPMHooks.count.HP_pc_ismarried_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_ismarried_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_ismarried_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_ismarried_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -56302,14 +62665,14 @@ int HP_pc_ismarried(struct map_session_data *sd) {
int HP_pc_marriage(struct map_session_data *sd, struct map_session_data *dstsd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_marriage_pre ) {
+ if (HPMHooks.count.HP_pc_marriage_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct map_session_data **dstsd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_marriage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_marriage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_marriage_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &dstsd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -56317,9 +62680,9 @@ int HP_pc_marriage(struct map_session_data *sd, struct map_session_data *dstsd)
{
retVal___ = HPMHooks.source.pc.marriage(sd, dstsd);
}
- if( HPMHooks.count.HP_pc_marriage_post ) {
+ if (HPMHooks.count.HP_pc_marriage_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct map_session_data *dstsd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_marriage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_marriage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_marriage_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, dstsd);
}
@@ -56329,14 +62692,14 @@ int HP_pc_marriage(struct map_session_data *sd, struct map_session_data *dstsd)
int HP_pc_divorce(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_divorce_pre ) {
+ if (HPMHooks.count.HP_pc_divorce_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_divorce_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_divorce_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_divorce_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -56344,9 +62707,9 @@ int HP_pc_divorce(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.divorce(sd);
}
- if( HPMHooks.count.HP_pc_divorce_post ) {
+ if (HPMHooks.count.HP_pc_divorce_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_divorce_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_divorce_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_divorce_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -56356,14 +62719,14 @@ int HP_pc_divorce(struct map_session_data *sd) {
struct map_session_data* HP_pc_get_partner(struct map_session_data *sd) {
int hIndex = 0;
struct map_session_data* retVal___ = NULL;
- if( HPMHooks.count.HP_pc_get_partner_pre ) {
+ if (HPMHooks.count.HP_pc_get_partner_pre > 0) {
struct map_session_data* (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_get_partner_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_get_partner_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_get_partner_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -56371,9 +62734,9 @@ struct map_session_data* HP_pc_get_partner(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.get_partner(sd);
}
- if( HPMHooks.count.HP_pc_get_partner_post ) {
+ if (HPMHooks.count.HP_pc_get_partner_post > 0) {
struct map_session_data* (*postHookFunc) (struct map_session_data* retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_get_partner_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_get_partner_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_get_partner_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -56383,14 +62746,14 @@ struct map_session_data* HP_pc_get_partner(struct map_session_data *sd) {
struct map_session_data* HP_pc_get_father(struct map_session_data *sd) {
int hIndex = 0;
struct map_session_data* retVal___ = NULL;
- if( HPMHooks.count.HP_pc_get_father_pre ) {
+ if (HPMHooks.count.HP_pc_get_father_pre > 0) {
struct map_session_data* (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_get_father_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_get_father_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_get_father_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -56398,9 +62761,9 @@ struct map_session_data* HP_pc_get_father(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.get_father(sd);
}
- if( HPMHooks.count.HP_pc_get_father_post ) {
+ if (HPMHooks.count.HP_pc_get_father_post > 0) {
struct map_session_data* (*postHookFunc) (struct map_session_data* retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_get_father_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_get_father_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_get_father_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -56410,14 +62773,14 @@ struct map_session_data* HP_pc_get_father(struct map_session_data *sd) {
struct map_session_data* HP_pc_get_mother(struct map_session_data *sd) {
int hIndex = 0;
struct map_session_data* retVal___ = NULL;
- if( HPMHooks.count.HP_pc_get_mother_pre ) {
+ if (HPMHooks.count.HP_pc_get_mother_pre > 0) {
struct map_session_data* (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_get_mother_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_get_mother_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_get_mother_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -56425,9 +62788,9 @@ struct map_session_data* HP_pc_get_mother(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.get_mother(sd);
}
- if( HPMHooks.count.HP_pc_get_mother_post ) {
+ if (HPMHooks.count.HP_pc_get_mother_post > 0) {
struct map_session_data* (*postHookFunc) (struct map_session_data* retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_get_mother_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_get_mother_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_get_mother_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -56437,14 +62800,14 @@ struct map_session_data* HP_pc_get_mother(struct map_session_data *sd) {
struct map_session_data* HP_pc_get_child(struct map_session_data *sd) {
int hIndex = 0;
struct map_session_data* retVal___ = NULL;
- if( HPMHooks.count.HP_pc_get_child_pre ) {
+ if (HPMHooks.count.HP_pc_get_child_pre > 0) {
struct map_session_data* (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_get_child_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_get_child_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_get_child_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -56452,9 +62815,9 @@ struct map_session_data* HP_pc_get_child(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.get_child(sd);
}
- if( HPMHooks.count.HP_pc_get_child_post ) {
+ if (HPMHooks.count.HP_pc_get_child_post > 0) {
struct map_session_data* (*postHookFunc) (struct map_session_data* retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_get_child_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_get_child_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_get_child_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -56463,14 +62826,14 @@ struct map_session_data* HP_pc_get_child(struct map_session_data *sd) {
}
void HP_pc_bleeding(struct map_session_data *sd, unsigned int diff_tick) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_bleeding_pre ) {
+ if (HPMHooks.count.HP_pc_bleeding_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, unsigned int *diff_tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_bleeding_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_bleeding_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_bleeding_pre[hIndex].func;
preHookFunc(&sd, &diff_tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -56478,9 +62841,9 @@ void HP_pc_bleeding(struct map_session_data *sd, unsigned int diff_tick) {
{
HPMHooks.source.pc.bleeding(sd, diff_tick);
}
- if( HPMHooks.count.HP_pc_bleeding_post ) {
+ if (HPMHooks.count.HP_pc_bleeding_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, unsigned int diff_tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_bleeding_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_bleeding_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_bleeding_post[hIndex].func;
postHookFunc(sd, diff_tick);
}
@@ -56489,14 +62852,14 @@ void HP_pc_bleeding(struct map_session_data *sd, unsigned int diff_tick) {
}
void HP_pc_regen(struct map_session_data *sd, unsigned int diff_tick) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_regen_pre ) {
+ if (HPMHooks.count.HP_pc_regen_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, unsigned int *diff_tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_regen_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_regen_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_regen_pre[hIndex].func;
preHookFunc(&sd, &diff_tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -56504,9 +62867,9 @@ void HP_pc_regen(struct map_session_data *sd, unsigned int diff_tick) {
{
HPMHooks.source.pc.regen(sd, diff_tick);
}
- if( HPMHooks.count.HP_pc_regen_post ) {
+ if (HPMHooks.count.HP_pc_regen_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, unsigned int diff_tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_regen_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_regen_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_regen_post[hIndex].func;
postHookFunc(sd, diff_tick);
}
@@ -56515,14 +62878,14 @@ void HP_pc_regen(struct map_session_data *sd, unsigned int diff_tick) {
}
void HP_pc_setstand(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_setstand_pre ) {
+ if (HPMHooks.count.HP_pc_setstand_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setstand_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setstand_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_setstand_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -56530,9 +62893,9 @@ void HP_pc_setstand(struct map_session_data *sd) {
{
HPMHooks.source.pc.setstand(sd);
}
- if( HPMHooks.count.HP_pc_setstand_post ) {
+ if (HPMHooks.count.HP_pc_setstand_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setstand_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setstand_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_setstand_post[hIndex].func;
postHookFunc(sd);
}
@@ -56542,14 +62905,14 @@ void HP_pc_setstand(struct map_session_data *sd) {
int HP_pc_candrop(struct map_session_data *sd, struct item *item) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_candrop_pre ) {
+ if (HPMHooks.count.HP_pc_candrop_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct item **item);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_candrop_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_candrop_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_candrop_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &item);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -56557,9 +62920,9 @@ int HP_pc_candrop(struct map_session_data *sd, struct item *item) {
{
retVal___ = HPMHooks.source.pc.candrop(sd, item);
}
- if( HPMHooks.count.HP_pc_candrop_post ) {
+ if (HPMHooks.count.HP_pc_candrop_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct item *item);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_candrop_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_candrop_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_candrop_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, item);
}
@@ -56569,14 +62932,14 @@ int HP_pc_candrop(struct map_session_data *sd, struct item *item) {
int HP_pc_jobid2mapid(int16 class) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_jobid2mapid_pre ) {
+ if (HPMHooks.count.HP_pc_jobid2mapid_pre > 0) {
int (*preHookFunc) (int16 *class);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_jobid2mapid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_jobid2mapid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_jobid2mapid_pre[hIndex].func;
retVal___ = preHookFunc(&class);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -56584,9 +62947,9 @@ int HP_pc_jobid2mapid(int16 class) {
{
retVal___ = HPMHooks.source.pc.jobid2mapid(class);
}
- if( HPMHooks.count.HP_pc_jobid2mapid_post ) {
+ if (HPMHooks.count.HP_pc_jobid2mapid_post > 0) {
int (*postHookFunc) (int retVal___, int16 class);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_jobid2mapid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_jobid2mapid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_jobid2mapid_post[hIndex].func;
retVal___ = postHookFunc(retVal___, class);
}
@@ -56596,14 +62959,14 @@ int HP_pc_jobid2mapid(int16 class) {
int HP_pc_mapid2jobid(unsigned short class_, int sex) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_mapid2jobid_pre ) {
+ if (HPMHooks.count.HP_pc_mapid2jobid_pre > 0) {
int (*preHookFunc) (unsigned short *class_, int *sex);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_mapid2jobid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_mapid2jobid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_mapid2jobid_pre[hIndex].func;
retVal___ = preHookFunc(&class_, &sex);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -56611,9 +62974,9 @@ int HP_pc_mapid2jobid(unsigned short class_, int sex) {
{
retVal___ = HPMHooks.source.pc.mapid2jobid(class_, sex);
}
- if( HPMHooks.count.HP_pc_mapid2jobid_post ) {
+ if (HPMHooks.count.HP_pc_mapid2jobid_post > 0) {
int (*postHookFunc) (int retVal___, unsigned short class_, int sex);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_mapid2jobid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_mapid2jobid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_mapid2jobid_post[hIndex].func;
retVal___ = postHookFunc(retVal___, class_, sex);
}
@@ -56623,14 +62986,14 @@ int HP_pc_mapid2jobid(unsigned short class_, int sex) {
const char* HP_pc_job_name(int class) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_pc_job_name_pre ) {
+ if (HPMHooks.count.HP_pc_job_name_pre > 0) {
const char* (*preHookFunc) (int *class);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_job_name_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_job_name_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_job_name_pre[hIndex].func;
retVal___ = preHookFunc(&class);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -56638,9 +63001,9 @@ const char* HP_pc_job_name(int class) {
{
retVal___ = HPMHooks.source.pc.job_name(class);
}
- if( HPMHooks.count.HP_pc_job_name_post ) {
+ if (HPMHooks.count.HP_pc_job_name_post > 0) {
const char* (*postHookFunc) (const char* retVal___, int class);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_job_name_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_job_name_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_job_name_post[hIndex].func;
retVal___ = postHookFunc(retVal___, class);
}
@@ -56649,14 +63012,14 @@ const char* HP_pc_job_name(int class) {
}
void HP_pc_setinvincibletimer(struct map_session_data *sd, int val) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_setinvincibletimer_pre ) {
+ if (HPMHooks.count.HP_pc_setinvincibletimer_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *val);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setinvincibletimer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setinvincibletimer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_setinvincibletimer_pre[hIndex].func;
preHookFunc(&sd, &val);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -56664,9 +63027,9 @@ void HP_pc_setinvincibletimer(struct map_session_data *sd, int val) {
{
HPMHooks.source.pc.setinvincibletimer(sd, val);
}
- if( HPMHooks.count.HP_pc_setinvincibletimer_post ) {
+ if (HPMHooks.count.HP_pc_setinvincibletimer_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int val);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setinvincibletimer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setinvincibletimer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_setinvincibletimer_post[hIndex].func;
postHookFunc(sd, val);
}
@@ -56675,14 +63038,14 @@ void HP_pc_setinvincibletimer(struct map_session_data *sd, int val) {
}
void HP_pc_delinvincibletimer(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_delinvincibletimer_pre ) {
+ if (HPMHooks.count.HP_pc_delinvincibletimer_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_delinvincibletimer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_delinvincibletimer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_delinvincibletimer_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -56690,9 +63053,9 @@ void HP_pc_delinvincibletimer(struct map_session_data *sd) {
{
HPMHooks.source.pc.delinvincibletimer(sd);
}
- if( HPMHooks.count.HP_pc_delinvincibletimer_post ) {
+ if (HPMHooks.count.HP_pc_delinvincibletimer_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_delinvincibletimer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_delinvincibletimer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_delinvincibletimer_post[hIndex].func;
postHookFunc(sd);
}
@@ -56702,14 +63065,14 @@ void HP_pc_delinvincibletimer(struct map_session_data *sd) {
int HP_pc_addspiritball(struct map_session_data *sd, int interval, int max) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_addspiritball_pre ) {
+ if (HPMHooks.count.HP_pc_addspiritball_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *interval, int *max);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_addspiritball_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_addspiritball_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_addspiritball_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &interval, &max);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -56717,26 +63080,53 @@ int HP_pc_addspiritball(struct map_session_data *sd, int interval, int max) {
{
retVal___ = HPMHooks.source.pc.addspiritball(sd, interval, max);
}
- if( HPMHooks.count.HP_pc_addspiritball_post ) {
+ if (HPMHooks.count.HP_pc_addspiritball_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int interval, int max);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_addspiritball_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_addspiritball_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_addspiritball_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, interval, max);
}
}
return retVal___;
}
+int HP_pc_addspiritball_sub(struct map_session_data *sd) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_pc_addspiritball_sub_pre > 0) {
+ int (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_addspiritball_sub_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pc_addspiritball_sub_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.pc.addspiritball_sub(sd);
+ }
+ if (HPMHooks.count.HP_pc_addspiritball_sub_post > 0) {
+ int (*postHookFunc) (int retVal___, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_addspiritball_sub_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pc_addspiritball_sub_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd);
+ }
+ }
+ return retVal___;
+}
int HP_pc_delspiritball(struct map_session_data *sd, int count, int type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_delspiritball_pre ) {
+ if (HPMHooks.count.HP_pc_delspiritball_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *count, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_delspiritball_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_delspiritball_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_delspiritball_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &count, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -56744,26 +63134,53 @@ int HP_pc_delspiritball(struct map_session_data *sd, int count, int type) {
{
retVal___ = HPMHooks.source.pc.delspiritball(sd, count, type);
}
- if( HPMHooks.count.HP_pc_delspiritball_post ) {
+ if (HPMHooks.count.HP_pc_delspiritball_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int count, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_delspiritball_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_delspiritball_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_delspiritball_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, count, type);
}
}
return retVal___;
}
+int HP_pc_delspiritball_sub(struct map_session_data *sd) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_pc_delspiritball_sub_pre > 0) {
+ int (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_delspiritball_sub_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pc_delspiritball_sub_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.pc.delspiritball_sub(sd);
+ }
+ if (HPMHooks.count.HP_pc_delspiritball_sub_post > 0) {
+ int (*postHookFunc) (int retVal___, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_delspiritball_sub_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pc_delspiritball_sub_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd);
+ }
+ }
+ return retVal___;
+}
int HP_pc_getmaxspiritball(struct map_session_data *sd, int min) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_getmaxspiritball_pre ) {
+ if (HPMHooks.count.HP_pc_getmaxspiritball_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *min);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_getmaxspiritball_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_getmaxspiritball_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_getmaxspiritball_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &min);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -56771,9 +63188,9 @@ int HP_pc_getmaxspiritball(struct map_session_data *sd, int min) {
{
retVal___ = HPMHooks.source.pc.getmaxspiritball(sd, min);
}
- if( HPMHooks.count.HP_pc_getmaxspiritball_post ) {
+ if (HPMHooks.count.HP_pc_getmaxspiritball_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int min);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_getmaxspiritball_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_getmaxspiritball_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_getmaxspiritball_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, min);
}
@@ -56782,14 +63199,14 @@ int HP_pc_getmaxspiritball(struct map_session_data *sd, int min) {
}
void HP_pc_addfame(struct map_session_data *sd, int ranktype, int count) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_addfame_pre ) {
+ if (HPMHooks.count.HP_pc_addfame_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *ranktype, int *count);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_addfame_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_addfame_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_addfame_pre[hIndex].func;
preHookFunc(&sd, &ranktype, &count);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -56797,9 +63214,9 @@ void HP_pc_addfame(struct map_session_data *sd, int ranktype, int count) {
{
HPMHooks.source.pc.addfame(sd, ranktype, count);
}
- if( HPMHooks.count.HP_pc_addfame_post ) {
+ if (HPMHooks.count.HP_pc_addfame_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int ranktype, int count);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_addfame_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_addfame_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_addfame_post[hIndex].func;
postHookFunc(sd, ranktype, count);
}
@@ -56809,14 +63226,14 @@ void HP_pc_addfame(struct map_session_data *sd, int ranktype, int count) {
int HP_pc_fame_rank(int char_id, int ranktype) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_fame_rank_pre ) {
+ if (HPMHooks.count.HP_pc_fame_rank_pre > 0) {
int (*preHookFunc) (int *char_id, int *ranktype);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_fame_rank_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_fame_rank_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_fame_rank_pre[hIndex].func;
retVal___ = preHookFunc(&char_id, &ranktype);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -56824,9 +63241,9 @@ int HP_pc_fame_rank(int char_id, int ranktype) {
{
retVal___ = HPMHooks.source.pc.fame_rank(char_id, ranktype);
}
- if( HPMHooks.count.HP_pc_fame_rank_post ) {
+ if (HPMHooks.count.HP_pc_fame_rank_post > 0) {
int (*postHookFunc) (int retVal___, int char_id, int ranktype);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_fame_rank_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_fame_rank_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_fame_rank_post[hIndex].func;
retVal___ = postHookFunc(retVal___, char_id, ranktype);
}
@@ -56836,14 +63253,14 @@ int HP_pc_fame_rank(int char_id, int ranktype) {
int HP_pc_famelist_type(uint16 job_mapid) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_famelist_type_pre ) {
+ if (HPMHooks.count.HP_pc_famelist_type_pre > 0) {
int (*preHookFunc) (uint16 *job_mapid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_famelist_type_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_famelist_type_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_famelist_type_pre[hIndex].func;
retVal___ = preHookFunc(&job_mapid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -56851,9 +63268,9 @@ int HP_pc_famelist_type(uint16 job_mapid) {
{
retVal___ = HPMHooks.source.pc.famelist_type(job_mapid);
}
- if( HPMHooks.count.HP_pc_famelist_type_post ) {
+ if (HPMHooks.count.HP_pc_famelist_type_post > 0) {
int (*postHookFunc) (int retVal___, uint16 job_mapid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_famelist_type_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_famelist_type_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_famelist_type_post[hIndex].func;
retVal___ = postHookFunc(retVal___, job_mapid);
}
@@ -56863,14 +63280,14 @@ int HP_pc_famelist_type(uint16 job_mapid) {
int HP_pc_set_hate_mob(struct map_session_data *sd, int pos, struct block_list *bl) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_set_hate_mob_pre ) {
+ if (HPMHooks.count.HP_pc_set_hate_mob_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *pos, struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_set_hate_mob_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_set_hate_mob_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_set_hate_mob_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &pos, &bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -56878,9 +63295,9 @@ int HP_pc_set_hate_mob(struct map_session_data *sd, int pos, struct block_list *
{
retVal___ = HPMHooks.source.pc.set_hate_mob(sd, pos, bl);
}
- if( HPMHooks.count.HP_pc_set_hate_mob_post ) {
+ if (HPMHooks.count.HP_pc_set_hate_mob_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int pos, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_set_hate_mob_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_set_hate_mob_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_set_hate_mob_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, pos, bl);
}
@@ -56890,14 +63307,14 @@ int HP_pc_set_hate_mob(struct map_session_data *sd, int pos, struct block_list *
int HP_pc_readdb(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_readdb_pre ) {
+ if (HPMHooks.count.HP_pc_readdb_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_readdb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_readdb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_readdb_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -56905,26 +63322,107 @@ int HP_pc_readdb(void) {
{
retVal___ = HPMHooks.source.pc.readdb();
}
- if( HPMHooks.count.HP_pc_readdb_post ) {
+ if (HPMHooks.count.HP_pc_readdb_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_readdb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_readdb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_readdb_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
}
return retVal___;
}
+bool HP_pc_read_exp_db(void) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_pc_read_exp_db_pre > 0) {
+ bool (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_read_exp_db_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pc_read_exp_db_pre[hIndex].func;
+ retVal___ = preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.pc.read_exp_db();
+ }
+ if (HPMHooks.count.HP_pc_read_exp_db_post > 0) {
+ bool (*postHookFunc) (bool retVal___);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_read_exp_db_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pc_read_exp_db_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___);
+ }
+ }
+ return retVal___;
+}
+int HP_pc_read_exp_db_sub(struct config_setting_t *conf, bool base) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_pc_read_exp_db_sub_pre > 0) {
+ int (*preHookFunc) (struct config_setting_t **conf, bool *base);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_read_exp_db_sub_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pc_read_exp_db_sub_pre[hIndex].func;
+ retVal___ = preHookFunc(&conf, &base);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.pc.read_exp_db_sub(conf, base);
+ }
+ if (HPMHooks.count.HP_pc_read_exp_db_sub_post > 0) {
+ int (*postHookFunc) (int retVal___, struct config_setting_t *conf, bool base);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_read_exp_db_sub_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pc_read_exp_db_sub_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, conf, base);
+ }
+ }
+ return retVal___;
+}
+bool HP_pc_read_exp_db_sub_class(struct config_setting_t *t, bool base) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_pc_read_exp_db_sub_class_pre > 0) {
+ bool (*preHookFunc) (struct config_setting_t **t, bool *base);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_read_exp_db_sub_class_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pc_read_exp_db_sub_class_pre[hIndex].func;
+ retVal___ = preHookFunc(&t, &base);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.pc.read_exp_db_sub_class(t, base);
+ }
+ if (HPMHooks.count.HP_pc_read_exp_db_sub_class_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct config_setting_t *t, bool base);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_read_exp_db_sub_class_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pc_read_exp_db_sub_class_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, t, base);
+ }
+ }
+ return retVal___;
+}
int HP_pc_map_day_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_map_day_timer_pre ) {
+ if (HPMHooks.count.HP_pc_map_day_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_map_day_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_map_day_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_map_day_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -56932,9 +63430,9 @@ int HP_pc_map_day_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.pc.map_day_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_pc_map_day_timer_post ) {
+ if (HPMHooks.count.HP_pc_map_day_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_map_day_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_map_day_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_map_day_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -56944,14 +63442,14 @@ int HP_pc_map_day_timer(int tid, int64 tick, int id, intptr_t data) {
int HP_pc_map_night_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_map_night_timer_pre ) {
+ if (HPMHooks.count.HP_pc_map_night_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_map_night_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_map_night_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_map_night_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -56959,9 +63457,9 @@ int HP_pc_map_night_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.pc.map_night_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_pc_map_night_timer_post ) {
+ if (HPMHooks.count.HP_pc_map_night_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_map_night_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_map_night_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_map_night_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -56970,14 +63468,14 @@ int HP_pc_map_night_timer(int tid, int64 tick, int id, intptr_t data) {
}
void HP_pc_inventory_rentals(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_inventory_rentals_pre ) {
+ if (HPMHooks.count.HP_pc_inventory_rentals_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_inventory_rentals_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_inventory_rentals_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_inventory_rentals_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -56985,9 +63483,9 @@ void HP_pc_inventory_rentals(struct map_session_data *sd) {
{
HPMHooks.source.pc.inventory_rentals(sd);
}
- if( HPMHooks.count.HP_pc_inventory_rentals_post ) {
+ if (HPMHooks.count.HP_pc_inventory_rentals_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_inventory_rentals_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_inventory_rentals_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_inventory_rentals_post[hIndex].func;
postHookFunc(sd);
}
@@ -56997,14 +63495,14 @@ void HP_pc_inventory_rentals(struct map_session_data *sd) {
int HP_pc_inventory_rental_clear(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_inventory_rental_clear_pre ) {
+ if (HPMHooks.count.HP_pc_inventory_rental_clear_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_inventory_rental_clear_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_inventory_rental_clear_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_inventory_rental_clear_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -57012,9 +63510,9 @@ int HP_pc_inventory_rental_clear(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.inventory_rental_clear(sd);
}
- if( HPMHooks.count.HP_pc_inventory_rental_clear_post ) {
+ if (HPMHooks.count.HP_pc_inventory_rental_clear_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_inventory_rental_clear_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_inventory_rental_clear_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_inventory_rental_clear_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -57023,14 +63521,14 @@ int HP_pc_inventory_rental_clear(struct map_session_data *sd) {
}
void HP_pc_inventory_rental_add(struct map_session_data *sd, int seconds) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_inventory_rental_add_pre ) {
+ if (HPMHooks.count.HP_pc_inventory_rental_add_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *seconds);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_inventory_rental_add_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_inventory_rental_add_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_inventory_rental_add_pre[hIndex].func;
preHookFunc(&sd, &seconds);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -57038,9 +63536,9 @@ void HP_pc_inventory_rental_add(struct map_session_data *sd, int seconds) {
{
HPMHooks.source.pc.inventory_rental_add(sd, seconds);
}
- if( HPMHooks.count.HP_pc_inventory_rental_add_post ) {
+ if (HPMHooks.count.HP_pc_inventory_rental_add_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int seconds);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_inventory_rental_add_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_inventory_rental_add_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_inventory_rental_add_post[hIndex].func;
postHookFunc(sd, seconds);
}
@@ -57050,14 +63548,14 @@ void HP_pc_inventory_rental_add(struct map_session_data *sd, int seconds) {
int HP_pc_disguise(struct map_session_data *sd, int class) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_disguise_pre ) {
+ if (HPMHooks.count.HP_pc_disguise_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *class);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_disguise_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_disguise_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_disguise_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &class);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -57065,9 +63563,9 @@ int HP_pc_disguise(struct map_session_data *sd, int class) {
{
retVal___ = HPMHooks.source.pc.disguise(sd, class);
}
- if( HPMHooks.count.HP_pc_disguise_post ) {
+ if (HPMHooks.count.HP_pc_disguise_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int class);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_disguise_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_disguise_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_disguise_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, class);
}
@@ -57077,14 +63575,14 @@ int HP_pc_disguise(struct map_session_data *sd, int class) {
bool HP_pc_isautolooting(struct map_session_data *sd, int nameid) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_pc_isautolooting_pre ) {
+ if (HPMHooks.count.HP_pc_isautolooting_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, int *nameid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_isautolooting_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_isautolooting_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_isautolooting_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &nameid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -57092,9 +63590,9 @@ bool HP_pc_isautolooting(struct map_session_data *sd, int nameid) {
{
retVal___ = HPMHooks.source.pc.isautolooting(sd, nameid);
}
- if( HPMHooks.count.HP_pc_isautolooting_post ) {
+ if (HPMHooks.count.HP_pc_isautolooting_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, int nameid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_isautolooting_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_isautolooting_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_isautolooting_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, nameid);
}
@@ -57103,14 +63601,14 @@ bool HP_pc_isautolooting(struct map_session_data *sd, int nameid) {
}
void HP_pc_overheat(struct map_session_data *sd, int val) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_overheat_pre ) {
+ if (HPMHooks.count.HP_pc_overheat_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *val);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_overheat_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_overheat_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_overheat_pre[hIndex].func;
preHookFunc(&sd, &val);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -57118,9 +63616,9 @@ void HP_pc_overheat(struct map_session_data *sd, int val) {
{
HPMHooks.source.pc.overheat(sd, val);
}
- if( HPMHooks.count.HP_pc_overheat_post ) {
+ if (HPMHooks.count.HP_pc_overheat_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int val);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_overheat_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_overheat_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_overheat_post[hIndex].func;
postHookFunc(sd, val);
}
@@ -57130,14 +63628,14 @@ void HP_pc_overheat(struct map_session_data *sd, int val) {
int HP_pc_banding(struct map_session_data *sd, uint16 skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_banding_pre ) {
+ if (HPMHooks.count.HP_pc_banding_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, uint16 *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_banding_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_banding_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_banding_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -57145,9 +63643,9 @@ int HP_pc_banding(struct map_session_data *sd, uint16 skill_lv) {
{
retVal___ = HPMHooks.source.pc.banding(sd, skill_lv);
}
- if( HPMHooks.count.HP_pc_banding_post ) {
+ if (HPMHooks.count.HP_pc_banding_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_banding_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_banding_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_banding_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, skill_lv);
}
@@ -57156,14 +63654,14 @@ int HP_pc_banding(struct map_session_data *sd, uint16 skill_lv) {
}
void HP_pc_itemcd_do(struct map_session_data *sd, bool load) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_itemcd_do_pre ) {
+ if (HPMHooks.count.HP_pc_itemcd_do_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, bool *load);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_itemcd_do_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_itemcd_do_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_itemcd_do_pre[hIndex].func;
preHookFunc(&sd, &load);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -57171,9 +63669,9 @@ void HP_pc_itemcd_do(struct map_session_data *sd, bool load) {
{
HPMHooks.source.pc.itemcd_do(sd, load);
}
- if( HPMHooks.count.HP_pc_itemcd_do_post ) {
+ if (HPMHooks.count.HP_pc_itemcd_do_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, bool load);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_itemcd_do_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_itemcd_do_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_itemcd_do_post[hIndex].func;
postHookFunc(sd, load);
}
@@ -57183,14 +63681,14 @@ void HP_pc_itemcd_do(struct map_session_data *sd, bool load) {
int HP_pc_load_combo(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_load_combo_pre ) {
+ if (HPMHooks.count.HP_pc_load_combo_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_load_combo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_load_combo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_load_combo_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -57198,9 +63696,9 @@ int HP_pc_load_combo(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.load_combo(sd);
}
- if( HPMHooks.count.HP_pc_load_combo_post ) {
+ if (HPMHooks.count.HP_pc_load_combo_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_load_combo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_load_combo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_load_combo_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -57209,14 +63707,14 @@ int HP_pc_load_combo(struct map_session_data *sd) {
}
void HP_pc_add_charm(struct map_session_data *sd, int interval, int max, int type) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_add_charm_pre ) {
+ if (HPMHooks.count.HP_pc_add_charm_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *interval, int *max, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_add_charm_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_add_charm_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_add_charm_pre[hIndex].func;
preHookFunc(&sd, &interval, &max, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -57224,9 +63722,9 @@ void HP_pc_add_charm(struct map_session_data *sd, int interval, int max, int typ
{
HPMHooks.source.pc.add_charm(sd, interval, max, type);
}
- if( HPMHooks.count.HP_pc_add_charm_post ) {
+ if (HPMHooks.count.HP_pc_add_charm_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int interval, int max, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_add_charm_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_add_charm_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_add_charm_post[hIndex].func;
postHookFunc(sd, interval, max, type);
}
@@ -57235,14 +63733,14 @@ void HP_pc_add_charm(struct map_session_data *sd, int interval, int max, int typ
}
void HP_pc_del_charm(struct map_session_data *sd, int count, int type) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_del_charm_pre ) {
+ if (HPMHooks.count.HP_pc_del_charm_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *count, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_del_charm_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_del_charm_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_del_charm_pre[hIndex].func;
preHookFunc(&sd, &count, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -57250,9 +63748,9 @@ void HP_pc_del_charm(struct map_session_data *sd, int count, int type) {
{
HPMHooks.source.pc.del_charm(sd, count, type);
}
- if( HPMHooks.count.HP_pc_del_charm_post ) {
+ if (HPMHooks.count.HP_pc_del_charm_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int count, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_del_charm_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_del_charm_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_del_charm_post[hIndex].func;
postHookFunc(sd, count, type);
}
@@ -57261,14 +63759,14 @@ void HP_pc_del_charm(struct map_session_data *sd, int count, int type) {
}
void HP_pc_baselevelchanged(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_baselevelchanged_pre ) {
+ if (HPMHooks.count.HP_pc_baselevelchanged_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_baselevelchanged_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_baselevelchanged_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_baselevelchanged_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -57276,9 +63774,9 @@ void HP_pc_baselevelchanged(struct map_session_data *sd) {
{
HPMHooks.source.pc.baselevelchanged(sd);
}
- if( HPMHooks.count.HP_pc_baselevelchanged_post ) {
+ if (HPMHooks.count.HP_pc_baselevelchanged_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_baselevelchanged_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_baselevelchanged_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_baselevelchanged_post[hIndex].func;
postHookFunc(sd);
}
@@ -57288,14 +63786,14 @@ void HP_pc_baselevelchanged(struct map_session_data *sd) {
int HP_pc_level_penalty_mod(int diff, unsigned char race, uint32 mode, int type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_level_penalty_mod_pre ) {
+ if (HPMHooks.count.HP_pc_level_penalty_mod_pre > 0) {
int (*preHookFunc) (int *diff, unsigned char *race, uint32 *mode, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_level_penalty_mod_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_level_penalty_mod_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_level_penalty_mod_pre[hIndex].func;
retVal___ = preHookFunc(&diff, &race, &mode, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -57303,9 +63801,9 @@ int HP_pc_level_penalty_mod(int diff, unsigned char race, uint32 mode, int type)
{
retVal___ = HPMHooks.source.pc.level_penalty_mod(diff, race, mode, type);
}
- if( HPMHooks.count.HP_pc_level_penalty_mod_post ) {
+ if (HPMHooks.count.HP_pc_level_penalty_mod_post > 0) {
int (*postHookFunc) (int retVal___, int diff, unsigned char race, uint32 mode, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_level_penalty_mod_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_level_penalty_mod_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_level_penalty_mod_post[hIndex].func;
retVal___ = postHookFunc(retVal___, diff, race, mode, type);
}
@@ -57315,14 +63813,14 @@ int HP_pc_level_penalty_mod(int diff, unsigned char race, uint32 mode, int type)
int HP_pc_calc_skillpoint(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_calc_skillpoint_pre ) {
+ if (HPMHooks.count.HP_pc_calc_skillpoint_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_calc_skillpoint_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_calc_skillpoint_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_calc_skillpoint_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -57330,9 +63828,9 @@ int HP_pc_calc_skillpoint(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.calc_skillpoint(sd);
}
- if( HPMHooks.count.HP_pc_calc_skillpoint_post ) {
+ if (HPMHooks.count.HP_pc_calc_skillpoint_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_calc_skillpoint_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_calc_skillpoint_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_calc_skillpoint_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -57342,14 +63840,14 @@ int HP_pc_calc_skillpoint(struct map_session_data *sd) {
int HP_pc_invincible_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_invincible_timer_pre ) {
+ if (HPMHooks.count.HP_pc_invincible_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_invincible_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_invincible_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_invincible_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -57357,9 +63855,9 @@ int HP_pc_invincible_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.pc.invincible_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_pc_invincible_timer_post ) {
+ if (HPMHooks.count.HP_pc_invincible_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_invincible_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_invincible_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_invincible_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -57369,14 +63867,14 @@ int HP_pc_invincible_timer(int tid, int64 tick, int id, intptr_t data) {
int HP_pc_spiritball_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_spiritball_timer_pre ) {
+ if (HPMHooks.count.HP_pc_spiritball_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_spiritball_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_spiritball_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_spiritball_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -57384,9 +63882,9 @@ int HP_pc_spiritball_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.pc.spiritball_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_pc_spiritball_timer_post ) {
+ if (HPMHooks.count.HP_pc_spiritball_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_spiritball_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_spiritball_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_spiritball_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -57396,16 +63894,16 @@ int HP_pc_spiritball_timer(int tid, int64 tick, int id, intptr_t data) {
int HP_pc_check_banding(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_check_banding_pre ) {
+ if (HPMHooks.count.HP_pc_check_banding_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_check_banding_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_check_banding_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_pc_check_banding_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -57415,9 +63913,9 @@ int HP_pc_check_banding(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.pc.check_banding(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_pc_check_banding_post ) {
+ if (HPMHooks.count.HP_pc_check_banding_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_check_banding_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_check_banding_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_pc_check_banding_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -57429,14 +63927,14 @@ int HP_pc_check_banding(struct block_list *bl, va_list ap) {
int HP_pc_inventory_rental_end(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_inventory_rental_end_pre ) {
+ if (HPMHooks.count.HP_pc_inventory_rental_end_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_inventory_rental_end_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_inventory_rental_end_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_inventory_rental_end_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -57444,9 +63942,9 @@ int HP_pc_inventory_rental_end(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.pc.inventory_rental_end(tid, tick, id, data);
}
- if( HPMHooks.count.HP_pc_inventory_rental_end_post ) {
+ if (HPMHooks.count.HP_pc_inventory_rental_end_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_inventory_rental_end_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_inventory_rental_end_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_inventory_rental_end_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -57455,14 +63953,14 @@ int HP_pc_inventory_rental_end(int tid, int64 tick, int id, intptr_t data) {
}
void HP_pc_check_skilltree(struct map_session_data *sd, int skill_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_check_skilltree_pre ) {
+ if (HPMHooks.count.HP_pc_check_skilltree_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_check_skilltree_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_check_skilltree_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_check_skilltree_pre[hIndex].func;
preHookFunc(&sd, &skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -57470,26 +63968,26 @@ void HP_pc_check_skilltree(struct map_session_data *sd, int skill_id) {
{
HPMHooks.source.pc.check_skilltree(sd, skill_id);
}
- if( HPMHooks.count.HP_pc_check_skilltree_post ) {
+ if (HPMHooks.count.HP_pc_check_skilltree_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_check_skilltree_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_check_skilltree_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_check_skilltree_post[hIndex].func;
postHookFunc(sd, skill_id);
}
}
return;
}
-int HP_pc_bonus_autospell(struct s_autospell *spell, int max, short id, short lv, short rate, short flag, short card_id) {
+int HP_pc_bonus_autospell(struct s_autospell *spell, int max, short id, short lv, short rate, short flag, int card_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_bonus_autospell_pre ) {
- int (*preHookFunc) (struct s_autospell **spell, int *max, short *id, short *lv, short *rate, short *flag, short *card_id);
+ if (HPMHooks.count.HP_pc_bonus_autospell_pre > 0) {
+ int (*preHookFunc) (struct s_autospell **spell, int *max, short *id, short *lv, short *rate, short *flag, int *card_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus_autospell_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus_autospell_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_bonus_autospell_pre[hIndex].func;
retVal___ = preHookFunc(&spell, &max, &id, &lv, &rate, &flag, &card_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -57497,26 +63995,26 @@ int HP_pc_bonus_autospell(struct s_autospell *spell, int max, short id, short lv
{
retVal___ = HPMHooks.source.pc.bonus_autospell(spell, max, id, lv, rate, flag, card_id);
}
- if( HPMHooks.count.HP_pc_bonus_autospell_post ) {
- int (*postHookFunc) (int retVal___, struct s_autospell *spell, int max, short id, short lv, short rate, short flag, short card_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus_autospell_post; hIndex++ ) {
+ if (HPMHooks.count.HP_pc_bonus_autospell_post > 0) {
+ int (*postHookFunc) (int retVal___, struct s_autospell *spell, int max, short id, short lv, short rate, short flag, int card_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus_autospell_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_bonus_autospell_post[hIndex].func;
retVal___ = postHookFunc(retVal___, spell, max, id, lv, rate, flag, card_id);
}
}
return retVal___;
}
-int HP_pc_bonus_autospell_onskill(struct s_autospell *spell, int max, short src_skill, short id, short lv, short rate, short card_id) {
+int HP_pc_bonus_autospell_onskill(struct s_autospell *spell, int max, short src_skill, short id, short lv, short rate, int card_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_bonus_autospell_onskill_pre ) {
- int (*preHookFunc) (struct s_autospell **spell, int *max, short *src_skill, short *id, short *lv, short *rate, short *card_id);
+ if (HPMHooks.count.HP_pc_bonus_autospell_onskill_pre > 0) {
+ int (*preHookFunc) (struct s_autospell **spell, int *max, short *src_skill, short *id, short *lv, short *rate, int *card_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus_autospell_onskill_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus_autospell_onskill_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_bonus_autospell_onskill_pre[hIndex].func;
retVal___ = preHookFunc(&spell, &max, &src_skill, &id, &lv, &rate, &card_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -57524,9 +64022,9 @@ int HP_pc_bonus_autospell_onskill(struct s_autospell *spell, int max, short src_
{
retVal___ = HPMHooks.source.pc.bonus_autospell_onskill(spell, max, src_skill, id, lv, rate, card_id);
}
- if( HPMHooks.count.HP_pc_bonus_autospell_onskill_post ) {
- int (*postHookFunc) (int retVal___, struct s_autospell *spell, int max, short src_skill, short id, short lv, short rate, short card_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus_autospell_onskill_post; hIndex++ ) {
+ if (HPMHooks.count.HP_pc_bonus_autospell_onskill_post > 0) {
+ int (*postHookFunc) (int retVal___, struct s_autospell *spell, int max, short src_skill, short id, short lv, short rate, int card_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus_autospell_onskill_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_bonus_autospell_onskill_post[hIndex].func;
retVal___ = postHookFunc(retVal___, spell, max, src_skill, id, lv, rate, card_id);
}
@@ -57536,14 +64034,14 @@ int HP_pc_bonus_autospell_onskill(struct s_autospell *spell, int max, short src_
int HP_pc_bonus_addeff(struct s_addeffect *effect, int max, enum sc_type id, int16 rate, int16 arrow_rate, uint8 flag, uint16 duration) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_bonus_addeff_pre ) {
+ if (HPMHooks.count.HP_pc_bonus_addeff_pre > 0) {
int (*preHookFunc) (struct s_addeffect **effect, int *max, enum sc_type *id, int16 *rate, int16 *arrow_rate, uint8 *flag, uint16 *duration);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus_addeff_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus_addeff_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_bonus_addeff_pre[hIndex].func;
retVal___ = preHookFunc(&effect, &max, &id, &rate, &arrow_rate, &flag, &duration);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -57551,9 +64049,9 @@ int HP_pc_bonus_addeff(struct s_addeffect *effect, int max, enum sc_type id, int
{
retVal___ = HPMHooks.source.pc.bonus_addeff(effect, max, id, rate, arrow_rate, flag, duration);
}
- if( HPMHooks.count.HP_pc_bonus_addeff_post ) {
+ if (HPMHooks.count.HP_pc_bonus_addeff_post > 0) {
int (*postHookFunc) (int retVal___, struct s_addeffect *effect, int max, enum sc_type id, int16 rate, int16 arrow_rate, uint8 flag, uint16 duration);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus_addeff_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus_addeff_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_bonus_addeff_post[hIndex].func;
retVal___ = postHookFunc(retVal___, effect, max, id, rate, arrow_rate, flag, duration);
}
@@ -57563,14 +64061,14 @@ int HP_pc_bonus_addeff(struct s_addeffect *effect, int max, enum sc_type id, int
int HP_pc_bonus_addeff_onskill(struct s_addeffectonskill *effect, int max, enum sc_type id, short rate, short skill_id, unsigned char target) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_bonus_addeff_onskill_pre ) {
+ if (HPMHooks.count.HP_pc_bonus_addeff_onskill_pre > 0) {
int (*preHookFunc) (struct s_addeffectonskill **effect, int *max, enum sc_type *id, short *rate, short *skill_id, unsigned char *target);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus_addeff_onskill_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus_addeff_onskill_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_bonus_addeff_onskill_pre[hIndex].func;
retVal___ = preHookFunc(&effect, &max, &id, &rate, &skill_id, &target);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -57578,52 +64076,52 @@ int HP_pc_bonus_addeff_onskill(struct s_addeffectonskill *effect, int max, enum
{
retVal___ = HPMHooks.source.pc.bonus_addeff_onskill(effect, max, id, rate, skill_id, target);
}
- if( HPMHooks.count.HP_pc_bonus_addeff_onskill_post ) {
+ if (HPMHooks.count.HP_pc_bonus_addeff_onskill_post > 0) {
int (*postHookFunc) (int retVal___, struct s_addeffectonskill *effect, int max, enum sc_type id, short rate, short skill_id, unsigned char target);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus_addeff_onskill_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus_addeff_onskill_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_bonus_addeff_onskill_post[hIndex].func;
retVal___ = postHookFunc(retVal___, effect, max, id, rate, skill_id, target);
}
}
return retVal___;
}
-int HP_pc_bonus_item_drop(struct s_add_drop *drop, const short max, short id, short group, int race, int rate) {
+int HP_pc_bonus_item_drop(struct s_add_drop *drop, const short max, int id, bool is_group, int race, int rate) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_bonus_item_drop_pre ) {
- int (*preHookFunc) (struct s_add_drop **drop, const short *max, short *id, short *group, int *race, int *rate);
+ if (HPMHooks.count.HP_pc_bonus_item_drop_pre > 0) {
+ int (*preHookFunc) (struct s_add_drop **drop, const short *max, int *id, bool *is_group, int *race, int *rate);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus_item_drop_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus_item_drop_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_bonus_item_drop_pre[hIndex].func;
- retVal___ = preHookFunc(&drop, &max, &id, &group, &race, &rate);
+ retVal___ = preHookFunc(&drop, &max, &id, &is_group, &race, &rate);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
}
{
- retVal___ = HPMHooks.source.pc.bonus_item_drop(drop, max, id, group, race, rate);
+ retVal___ = HPMHooks.source.pc.bonus_item_drop(drop, max, id, is_group, race, rate);
}
- if( HPMHooks.count.HP_pc_bonus_item_drop_post ) {
- int (*postHookFunc) (int retVal___, struct s_add_drop *drop, const short max, short id, short group, int race, int rate);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus_item_drop_post; hIndex++ ) {
+ if (HPMHooks.count.HP_pc_bonus_item_drop_post > 0) {
+ int (*postHookFunc) (int retVal___, struct s_add_drop *drop, const short max, int id, bool is_group, int race, int rate);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus_item_drop_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_bonus_item_drop_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, drop, max, id, group, race, rate);
+ retVal___ = postHookFunc(retVal___, drop, max, id, is_group, race, rate);
}
}
return retVal___;
}
-void HP_pc_calcexp(struct map_session_data *sd, unsigned int *base_exp, unsigned int *job_exp, struct block_list *src) {
+void HP_pc_calcexp(struct map_session_data *sd, uint64 *base_exp, uint64 *job_exp, struct block_list *src) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_calcexp_pre ) {
- void (*preHookFunc) (struct map_session_data **sd, unsigned int **base_exp, unsigned int **job_exp, struct block_list **src);
+ if (HPMHooks.count.HP_pc_calcexp_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, uint64 **base_exp, uint64 **job_exp, struct block_list **src);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_calcexp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_calcexp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_calcexp_pre[hIndex].func;
preHookFunc(&sd, &base_exp, &job_exp, &src);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -57631,9 +64129,9 @@ void HP_pc_calcexp(struct map_session_data *sd, unsigned int *base_exp, unsigned
{
HPMHooks.source.pc.calcexp(sd, base_exp, job_exp, src);
}
- if( HPMHooks.count.HP_pc_calcexp_post ) {
- void (*postHookFunc) (struct map_session_data *sd, unsigned int *base_exp, unsigned int *job_exp, struct block_list *src);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_calcexp_post; hIndex++ ) {
+ if (HPMHooks.count.HP_pc_calcexp_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, uint64 *base_exp, uint64 *job_exp, struct block_list *src);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_calcexp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_calcexp_post[hIndex].func;
postHookFunc(sd, base_exp, job_exp, src);
}
@@ -57643,14 +64141,14 @@ void HP_pc_calcexp(struct map_session_data *sd, unsigned int *base_exp, unsigned
int HP_pc_respawn_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_respawn_timer_pre ) {
+ if (HPMHooks.count.HP_pc_respawn_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_respawn_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_respawn_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_respawn_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -57658,9 +64156,9 @@ int HP_pc_respawn_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.pc.respawn_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_pc_respawn_timer_post ) {
+ if (HPMHooks.count.HP_pc_respawn_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_respawn_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_respawn_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_respawn_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -57670,16 +64168,16 @@ int HP_pc_respawn_timer(int tid, int64 tick, int id, intptr_t data) {
int HP_pc_jobchange_killclone(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_jobchange_killclone_pre ) {
+ if (HPMHooks.count.HP_pc_jobchange_killclone_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_jobchange_killclone_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_jobchange_killclone_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_pc_jobchange_killclone_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -57689,9 +64187,9 @@ int HP_pc_jobchange_killclone(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.pc.jobchange_killclone(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_pc_jobchange_killclone_post ) {
+ if (HPMHooks.count.HP_pc_jobchange_killclone_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_jobchange_killclone_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_jobchange_killclone_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_pc_jobchange_killclone_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -57703,14 +64201,14 @@ int HP_pc_jobchange_killclone(struct block_list *bl, va_list ap) {
int HP_pc_getstat(struct map_session_data *sd, int type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_getstat_pre ) {
+ if (HPMHooks.count.HP_pc_getstat_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_getstat_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_getstat_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_getstat_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -57718,9 +64216,9 @@ int HP_pc_getstat(struct map_session_data *sd, int type) {
{
retVal___ = HPMHooks.source.pc.getstat(sd, type);
}
- if( HPMHooks.count.HP_pc_getstat_post ) {
+ if (HPMHooks.count.HP_pc_getstat_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_getstat_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_getstat_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_getstat_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, type);
}
@@ -57730,14 +64228,14 @@ int HP_pc_getstat(struct map_session_data *sd, int type) {
int HP_pc_setstat(struct map_session_data *sd, int type, int val) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_setstat_pre ) {
+ if (HPMHooks.count.HP_pc_setstat_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *type, int *val);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setstat_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setstat_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_setstat_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &type, &val);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -57745,9 +64243,9 @@ int HP_pc_setstat(struct map_session_data *sd, int type, int val) {
{
retVal___ = HPMHooks.source.pc.setstat(sd, type, val);
}
- if( HPMHooks.count.HP_pc_setstat_post ) {
+ if (HPMHooks.count.HP_pc_setstat_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int type, int val);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_setstat_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_setstat_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_setstat_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, type, val);
}
@@ -57757,14 +64255,14 @@ int HP_pc_setstat(struct map_session_data *sd, int type, int val) {
int HP_pc_eventtimer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_eventtimer_pre ) {
+ if (HPMHooks.count.HP_pc_eventtimer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_eventtimer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_eventtimer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_eventtimer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -57772,9 +64270,9 @@ int HP_pc_eventtimer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.pc.eventtimer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_pc_eventtimer_post ) {
+ if (HPMHooks.count.HP_pc_eventtimer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_eventtimer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_eventtimer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_eventtimer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -57784,16 +64282,16 @@ int HP_pc_eventtimer(int tid, int64 tick, int id, intptr_t data) {
int HP_pc_daynight_timer_sub(struct map_session_data *sd, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_daynight_timer_sub_pre ) {
+ if (HPMHooks.count.HP_pc_daynight_timer_sub_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_daynight_timer_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_daynight_timer_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_pc_daynight_timer_sub_pre[hIndex].func;
retVal___ = preHookFunc(&sd, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -57803,9 +64301,9 @@ int HP_pc_daynight_timer_sub(struct map_session_data *sd, va_list ap) {
retVal___ = HPMHooks.source.pc.daynight_timer_sub(sd, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_pc_daynight_timer_sub_post ) {
+ if (HPMHooks.count.HP_pc_daynight_timer_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_daynight_timer_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_daynight_timer_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_pc_daynight_timer_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, ap___copy);
@@ -57817,14 +64315,14 @@ int HP_pc_daynight_timer_sub(struct map_session_data *sd, va_list ap) {
int HP_pc_charm_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_charm_timer_pre ) {
+ if (HPMHooks.count.HP_pc_charm_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_charm_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_charm_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_charm_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -57832,9 +64330,9 @@ int HP_pc_charm_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.pc.charm_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_pc_charm_timer_post ) {
+ if (HPMHooks.count.HP_pc_charm_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_charm_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_charm_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_charm_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -57844,14 +64342,14 @@ int HP_pc_charm_timer(int tid, int64 tick, int id, intptr_t data) {
bool HP_pc_readdb_levelpenalty(char *fields[], int columns, int current) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_pc_readdb_levelpenalty_pre ) {
+ if (HPMHooks.count.HP_pc_readdb_levelpenalty_pre > 0) {
bool (*preHookFunc) (char **fields[], int *columns, int *current);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_readdb_levelpenalty_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_readdb_levelpenalty_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_readdb_levelpenalty_pre[hIndex].func;
retVal___ = preHookFunc(&fields, &columns, &current);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -57859,9 +64357,9 @@ bool HP_pc_readdb_levelpenalty(char *fields[], int columns, int current) {
{
retVal___ = HPMHooks.source.pc.readdb_levelpenalty(fields, columns, current);
}
- if( HPMHooks.count.HP_pc_readdb_levelpenalty_post ) {
+ if (HPMHooks.count.HP_pc_readdb_levelpenalty_post > 0) {
bool (*postHookFunc) (bool retVal___, char *fields[], int columns, int current);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_readdb_levelpenalty_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_readdb_levelpenalty_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_readdb_levelpenalty_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fields, columns, current);
}
@@ -57871,14 +64369,14 @@ bool HP_pc_readdb_levelpenalty(char *fields[], int columns, int current) {
int HP_pc_autosave(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_autosave_pre ) {
+ if (HPMHooks.count.HP_pc_autosave_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_autosave_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_autosave_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_autosave_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -57886,9 +64384,9 @@ int HP_pc_autosave(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.pc.autosave(tid, tick, id, data);
}
- if( HPMHooks.count.HP_pc_autosave_post ) {
+ if (HPMHooks.count.HP_pc_autosave_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_autosave_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_autosave_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_autosave_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -57898,14 +64396,14 @@ int HP_pc_autosave(int tid, int64 tick, int id, intptr_t data) {
int HP_pc_follow_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_follow_timer_pre ) {
+ if (HPMHooks.count.HP_pc_follow_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_follow_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_follow_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_follow_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -57913,9 +64411,9 @@ int HP_pc_follow_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.pc.follow_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_pc_follow_timer_post ) {
+ if (HPMHooks.count.HP_pc_follow_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_follow_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_follow_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_follow_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -57924,14 +64422,14 @@ int HP_pc_follow_timer(int tid, int64 tick, int id, intptr_t data) {
}
void HP_pc_read_skill_tree(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_read_skill_tree_pre ) {
+ if (HPMHooks.count.HP_pc_read_skill_tree_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_read_skill_tree_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_read_skill_tree_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_read_skill_tree_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -57939,25 +64437,52 @@ void HP_pc_read_skill_tree(void) {
{
HPMHooks.source.pc.read_skill_tree();
}
- if( HPMHooks.count.HP_pc_read_skill_tree_post ) {
+ if (HPMHooks.count.HP_pc_read_skill_tree_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_read_skill_tree_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_read_skill_tree_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_read_skill_tree_post[hIndex].func;
postHookFunc();
}
}
return;
}
+bool HP_pc_read_skill_job_skip(short skill_id, int job_id) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_pc_read_skill_job_skip_pre > 0) {
+ bool (*preHookFunc) (short *skill_id, int *job_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_read_skill_job_skip_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pc_read_skill_job_skip_pre[hIndex].func;
+ retVal___ = preHookFunc(&skill_id, &job_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.pc.read_skill_job_skip(skill_id, job_id);
+ }
+ if (HPMHooks.count.HP_pc_read_skill_job_skip_post > 0) {
+ bool (*postHookFunc) (bool retVal___, short skill_id, int job_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_read_skill_job_skip_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pc_read_skill_job_skip_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, skill_id, job_id);
+ }
+ }
+ return retVal___;
+}
void HP_pc_clear_skill_tree(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_clear_skill_tree_pre ) {
+ if (HPMHooks.count.HP_pc_clear_skill_tree_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_clear_skill_tree_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_clear_skill_tree_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_clear_skill_tree_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -57965,9 +64490,9 @@ void HP_pc_clear_skill_tree(void) {
{
HPMHooks.source.pc.clear_skill_tree();
}
- if( HPMHooks.count.HP_pc_clear_skill_tree_post ) {
+ if (HPMHooks.count.HP_pc_clear_skill_tree_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_clear_skill_tree_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_clear_skill_tree_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_clear_skill_tree_post[hIndex].func;
postHookFunc();
}
@@ -57977,14 +64502,14 @@ void HP_pc_clear_skill_tree(void) {
int HP_pc_isUseitem(struct map_session_data *sd, int n) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_isUseitem_pre ) {
+ if (HPMHooks.count.HP_pc_isUseitem_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *n);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_isUseitem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_isUseitem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_isUseitem_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &n);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -57992,9 +64517,9 @@ int HP_pc_isUseitem(struct map_session_data *sd, int n) {
{
retVal___ = HPMHooks.source.pc.isUseitem(sd, n);
}
- if( HPMHooks.count.HP_pc_isUseitem_post ) {
+ if (HPMHooks.count.HP_pc_isUseitem_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int n);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_isUseitem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_isUseitem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_isUseitem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, n);
}
@@ -58004,16 +64529,16 @@ int HP_pc_isUseitem(struct map_session_data *sd, int n) {
int HP_pc_show_steal(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_show_steal_pre ) {
+ if (HPMHooks.count.HP_pc_show_steal_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_show_steal_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_show_steal_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_pc_show_steal_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -58023,9 +64548,9 @@ int HP_pc_show_steal(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.pc.show_steal(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_pc_show_steal_post ) {
+ if (HPMHooks.count.HP_pc_show_steal_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_show_steal_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_show_steal_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_pc_show_steal_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -58037,14 +64562,14 @@ int HP_pc_show_steal(struct block_list *bl, va_list ap) {
int HP_pc_checkcombo(struct map_session_data *sd, struct item_data *data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_checkcombo_pre ) {
+ if (HPMHooks.count.HP_pc_checkcombo_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct item_data **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkcombo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkcombo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_checkcombo_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -58052,9 +64577,9 @@ int HP_pc_checkcombo(struct map_session_data *sd, struct item_data *data) {
{
retVal___ = HPMHooks.source.pc.checkcombo(sd, data);
}
- if( HPMHooks.count.HP_pc_checkcombo_post ) {
+ if (HPMHooks.count.HP_pc_checkcombo_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct item_data *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkcombo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_checkcombo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_checkcombo_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, data);
}
@@ -58064,14 +64589,14 @@ int HP_pc_checkcombo(struct map_session_data *sd, struct item_data *data) {
int HP_pc_calcweapontype(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_calcweapontype_pre ) {
+ if (HPMHooks.count.HP_pc_calcweapontype_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_calcweapontype_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_calcweapontype_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_calcweapontype_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -58079,9 +64604,9 @@ int HP_pc_calcweapontype(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.calcweapontype(sd);
}
- if( HPMHooks.count.HP_pc_calcweapontype_post ) {
+ if (HPMHooks.count.HP_pc_calcweapontype_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_calcweapontype_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_calcweapontype_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_calcweapontype_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -58091,14 +64616,14 @@ int HP_pc_calcweapontype(struct map_session_data *sd) {
int HP_pc_removecombo(struct map_session_data *sd, struct item_data *data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_removecombo_pre ) {
+ if (HPMHooks.count.HP_pc_removecombo_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct item_data **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_removecombo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_removecombo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_removecombo_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -58106,9 +64631,9 @@ int HP_pc_removecombo(struct map_session_data *sd, struct item_data *data) {
{
retVal___ = HPMHooks.source.pc.removecombo(sd, data);
}
- if( HPMHooks.count.HP_pc_removecombo_post ) {
+ if (HPMHooks.count.HP_pc_removecombo_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct item_data *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_removecombo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_removecombo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_removecombo_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, data);
}
@@ -58117,14 +64642,14 @@ int HP_pc_removecombo(struct map_session_data *sd, struct item_data *data) {
}
void HP_pc_bank_deposit(struct map_session_data *sd, int money) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_bank_deposit_pre ) {
+ if (HPMHooks.count.HP_pc_bank_deposit_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *money);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_bank_deposit_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_bank_deposit_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_bank_deposit_pre[hIndex].func;
preHookFunc(&sd, &money);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -58132,9 +64657,9 @@ void HP_pc_bank_deposit(struct map_session_data *sd, int money) {
{
HPMHooks.source.pc.bank_deposit(sd, money);
}
- if( HPMHooks.count.HP_pc_bank_deposit_post ) {
+ if (HPMHooks.count.HP_pc_bank_deposit_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int money);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_bank_deposit_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_bank_deposit_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_bank_deposit_post[hIndex].func;
postHookFunc(sd, money);
}
@@ -58143,14 +64668,14 @@ void HP_pc_bank_deposit(struct map_session_data *sd, int money) {
}
void HP_pc_bank_withdraw(struct map_session_data *sd, int money) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_bank_withdraw_pre ) {
+ if (HPMHooks.count.HP_pc_bank_withdraw_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *money);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_bank_withdraw_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_bank_withdraw_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_bank_withdraw_pre[hIndex].func;
preHookFunc(&sd, &money);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -58158,9 +64683,9 @@ void HP_pc_bank_withdraw(struct map_session_data *sd, int money) {
{
HPMHooks.source.pc.bank_withdraw(sd, money);
}
- if( HPMHooks.count.HP_pc_bank_withdraw_post ) {
+ if (HPMHooks.count.HP_pc_bank_withdraw_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int money);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_bank_withdraw_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_bank_withdraw_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_bank_withdraw_post[hIndex].func;
postHookFunc(sd, money);
}
@@ -58169,14 +64694,14 @@ void HP_pc_bank_withdraw(struct map_session_data *sd, int money) {
}
void HP_pc_rental_expire(struct map_session_data *sd, int i) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_rental_expire_pre ) {
+ if (HPMHooks.count.HP_pc_rental_expire_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *i);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_rental_expire_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_rental_expire_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_rental_expire_pre[hIndex].func;
preHookFunc(&sd, &i);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -58184,9 +64709,9 @@ void HP_pc_rental_expire(struct map_session_data *sd, int i) {
{
HPMHooks.source.pc.rental_expire(sd, i);
}
- if( HPMHooks.count.HP_pc_rental_expire_post ) {
+ if (HPMHooks.count.HP_pc_rental_expire_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int i);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_rental_expire_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_rental_expire_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_rental_expire_post[hIndex].func;
postHookFunc(sd, i);
}
@@ -58195,14 +64720,14 @@ void HP_pc_rental_expire(struct map_session_data *sd, int i) {
}
void HP_pc_scdata_received(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_scdata_received_pre ) {
+ if (HPMHooks.count.HP_pc_scdata_received_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_scdata_received_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_scdata_received_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_scdata_received_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -58210,9 +64735,9 @@ void HP_pc_scdata_received(struct map_session_data *sd) {
{
HPMHooks.source.pc.scdata_received(sd);
}
- if( HPMHooks.count.HP_pc_scdata_received_post ) {
+ if (HPMHooks.count.HP_pc_scdata_received_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_scdata_received_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_scdata_received_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_scdata_received_post[hIndex].func;
postHookFunc(sd);
}
@@ -58221,14 +64746,14 @@ void HP_pc_scdata_received(struct map_session_data *sd) {
}
void HP_pc_bound_clear(struct map_session_data *sd, enum e_item_bound_type type) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_bound_clear_pre ) {
+ if (HPMHooks.count.HP_pc_bound_clear_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, enum e_item_bound_type *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_bound_clear_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_bound_clear_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_bound_clear_pre[hIndex].func;
preHookFunc(&sd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -58236,9 +64761,9 @@ void HP_pc_bound_clear(struct map_session_data *sd, enum e_item_bound_type type)
{
HPMHooks.source.pc.bound_clear(sd, type);
}
- if( HPMHooks.count.HP_pc_bound_clear_post ) {
+ if (HPMHooks.count.HP_pc_bound_clear_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, enum e_item_bound_type type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_bound_clear_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_bound_clear_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_bound_clear_post[hIndex].func;
postHookFunc(sd, type);
}
@@ -58248,14 +64773,14 @@ void HP_pc_bound_clear(struct map_session_data *sd, enum e_item_bound_type type)
int HP_pc_expiration_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_expiration_timer_pre ) {
+ if (HPMHooks.count.HP_pc_expiration_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_expiration_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_expiration_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_expiration_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -58263,9 +64788,9 @@ int HP_pc_expiration_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.pc.expiration_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_pc_expiration_timer_post ) {
+ if (HPMHooks.count.HP_pc_expiration_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_expiration_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_expiration_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_expiration_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -58275,14 +64800,14 @@ int HP_pc_expiration_timer(int tid, int64 tick, int id, intptr_t data) {
int HP_pc_global_expiration_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_global_expiration_timer_pre ) {
+ if (HPMHooks.count.HP_pc_global_expiration_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_global_expiration_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_global_expiration_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_global_expiration_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -58290,9 +64815,9 @@ int HP_pc_global_expiration_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.pc.global_expiration_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_pc_global_expiration_timer_post ) {
+ if (HPMHooks.count.HP_pc_global_expiration_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_global_expiration_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_global_expiration_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_global_expiration_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -58301,14 +64826,14 @@ int HP_pc_global_expiration_timer(int tid, int64 tick, int id, intptr_t data) {
}
void HP_pc_expire_check(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_expire_check_pre ) {
+ if (HPMHooks.count.HP_pc_expire_check_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_expire_check_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_expire_check_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_expire_check_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -58316,9 +64841,9 @@ void HP_pc_expire_check(struct map_session_data *sd) {
{
HPMHooks.source.pc.expire_check(sd);
}
- if( HPMHooks.count.HP_pc_expire_check_post ) {
+ if (HPMHooks.count.HP_pc_expire_check_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_expire_check_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_expire_check_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_expire_check_post[hIndex].func;
postHookFunc(sd);
}
@@ -58328,14 +64853,14 @@ void HP_pc_expire_check(struct map_session_data *sd) {
bool HP_pc_db_checkid(int class) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_pc_db_checkid_pre ) {
+ if (HPMHooks.count.HP_pc_db_checkid_pre > 0) {
bool (*preHookFunc) (int *class);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_db_checkid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_db_checkid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_db_checkid_pre[hIndex].func;
retVal___ = preHookFunc(&class);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -58343,9 +64868,9 @@ bool HP_pc_db_checkid(int class) {
{
retVal___ = HPMHooks.source.pc.db_checkid(class);
}
- if( HPMHooks.count.HP_pc_db_checkid_post ) {
+ if (HPMHooks.count.HP_pc_db_checkid_post > 0) {
bool (*postHookFunc) (bool retVal___, int class);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_db_checkid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_db_checkid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_db_checkid_post[hIndex].func;
retVal___ = postHookFunc(retVal___, class);
}
@@ -58354,14 +64879,14 @@ bool HP_pc_db_checkid(int class) {
}
void HP_pc_validate_levels(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_validate_levels_pre ) {
+ if (HPMHooks.count.HP_pc_validate_levels_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_validate_levels_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_validate_levels_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_validate_levels_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -58369,25 +64894,130 @@ void HP_pc_validate_levels(void) {
{
HPMHooks.source.pc.validate_levels();
}
- if( HPMHooks.count.HP_pc_validate_levels_post ) {
+ if (HPMHooks.count.HP_pc_validate_levels_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_validate_levels_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_validate_levels_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_validate_levels_post[hIndex].func;
postHookFunc();
}
}
return;
}
+void HP_pc_update_job_and_level(struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_pc_update_job_and_level_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_update_job_and_level_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pc_update_job_and_level_pre[hIndex].func;
+ preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.pc.update_job_and_level(sd);
+ }
+ if (HPMHooks.count.HP_pc_update_job_and_level_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_update_job_and_level_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pc_update_job_and_level_post[hIndex].func;
+ postHookFunc(sd);
+ }
+ }
+ return;
+}
+void HP_pc_clear_exp_groups(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_pc_clear_exp_groups_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_clear_exp_groups_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pc_clear_exp_groups_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.pc.clear_exp_groups();
+ }
+ if (HPMHooks.count.HP_pc_clear_exp_groups_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_clear_exp_groups_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pc_clear_exp_groups_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+void HP_pc_init_exp_groups(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_pc_init_exp_groups_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_init_exp_groups_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pc_init_exp_groups_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.pc.init_exp_groups();
+ }
+ if (HPMHooks.count.HP_pc_init_exp_groups_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_init_exp_groups_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pc_init_exp_groups_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+bool HP_pc_job_is_dummy(int job) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_pc_job_is_dummy_pre > 0) {
+ bool (*preHookFunc) (int *job);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_job_is_dummy_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pc_job_is_dummy_pre[hIndex].func;
+ retVal___ = preHookFunc(&job);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.pc.job_is_dummy(job);
+ }
+ if (HPMHooks.count.HP_pc_job_is_dummy_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int job);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_job_is_dummy_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pc_job_is_dummy_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, job);
+ }
+ }
+ return retVal___;
+}
void HP_pc_autotrade_load(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_autotrade_load_pre ) {
+ if (HPMHooks.count.HP_pc_autotrade_load_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_autotrade_load_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_autotrade_load_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_autotrade_load_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -58395,9 +65025,9 @@ void HP_pc_autotrade_load(void) {
{
HPMHooks.source.pc.autotrade_load();
}
- if( HPMHooks.count.HP_pc_autotrade_load_post ) {
+ if (HPMHooks.count.HP_pc_autotrade_load_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_autotrade_load_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_autotrade_load_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_autotrade_load_post[hIndex].func;
postHookFunc();
}
@@ -58406,14 +65036,14 @@ void HP_pc_autotrade_load(void) {
}
void HP_pc_autotrade_update(struct map_session_data *sd, enum e_pc_autotrade_update_action action) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_autotrade_update_pre ) {
+ if (HPMHooks.count.HP_pc_autotrade_update_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, enum e_pc_autotrade_update_action *action);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_autotrade_update_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_autotrade_update_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_autotrade_update_pre[hIndex].func;
preHookFunc(&sd, &action);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -58421,9 +65051,9 @@ void HP_pc_autotrade_update(struct map_session_data *sd, enum e_pc_autotrade_upd
{
HPMHooks.source.pc.autotrade_update(sd, action);
}
- if( HPMHooks.count.HP_pc_autotrade_update_post ) {
+ if (HPMHooks.count.HP_pc_autotrade_update_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, enum e_pc_autotrade_update_action action);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_autotrade_update_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_autotrade_update_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_autotrade_update_post[hIndex].func;
postHookFunc(sd, action);
}
@@ -58432,14 +65062,14 @@ void HP_pc_autotrade_update(struct map_session_data *sd, enum e_pc_autotrade_upd
}
void HP_pc_autotrade_start(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_autotrade_start_pre ) {
+ if (HPMHooks.count.HP_pc_autotrade_start_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_autotrade_start_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_autotrade_start_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_autotrade_start_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -58447,9 +65077,9 @@ void HP_pc_autotrade_start(struct map_session_data *sd) {
{
HPMHooks.source.pc.autotrade_start(sd);
}
- if( HPMHooks.count.HP_pc_autotrade_start_post ) {
+ if (HPMHooks.count.HP_pc_autotrade_start_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_autotrade_start_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_autotrade_start_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_autotrade_start_post[hIndex].func;
postHookFunc(sd);
}
@@ -58458,14 +65088,14 @@ void HP_pc_autotrade_start(struct map_session_data *sd) {
}
void HP_pc_autotrade_prepare(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_autotrade_prepare_pre ) {
+ if (HPMHooks.count.HP_pc_autotrade_prepare_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_autotrade_prepare_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_autotrade_prepare_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_autotrade_prepare_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -58473,9 +65103,9 @@ void HP_pc_autotrade_prepare(struct map_session_data *sd) {
{
HPMHooks.source.pc.autotrade_prepare(sd);
}
- if( HPMHooks.count.HP_pc_autotrade_prepare_post ) {
+ if (HPMHooks.count.HP_pc_autotrade_prepare_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_autotrade_prepare_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_autotrade_prepare_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_autotrade_prepare_post[hIndex].func;
postHookFunc(sd);
}
@@ -58484,14 +65114,14 @@ void HP_pc_autotrade_prepare(struct map_session_data *sd) {
}
void HP_pc_autotrade_populate(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_autotrade_populate_pre ) {
+ if (HPMHooks.count.HP_pc_autotrade_populate_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_autotrade_populate_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_autotrade_populate_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_autotrade_populate_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -58499,9 +65129,9 @@ void HP_pc_autotrade_populate(struct map_session_data *sd) {
{
HPMHooks.source.pc.autotrade_populate(sd);
}
- if( HPMHooks.count.HP_pc_autotrade_populate_post ) {
+ if (HPMHooks.count.HP_pc_autotrade_populate_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_autotrade_populate_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_autotrade_populate_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_autotrade_populate_post[hIndex].func;
postHookFunc(sd);
}
@@ -58511,16 +65141,16 @@ void HP_pc_autotrade_populate(struct map_session_data *sd) {
int HP_pc_autotrade_final(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_autotrade_final_pre ) {
+ if (HPMHooks.count.HP_pc_autotrade_final_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_autotrade_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_autotrade_final_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_pc_autotrade_final_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -58530,9 +65160,9 @@ int HP_pc_autotrade_final(union DBKey key, struct DBData *data, va_list ap) {
retVal___ = HPMHooks.source.pc.autotrade_final(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_pc_autotrade_final_post ) {
+ if (HPMHooks.count.HP_pc_autotrade_final_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_autotrade_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_autotrade_final_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_pc_autotrade_final_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -58544,14 +65174,14 @@ int HP_pc_autotrade_final(union DBKey key, struct DBData *data, va_list ap) {
int HP_pc_check_job_name(const char *name) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_check_job_name_pre ) {
+ if (HPMHooks.count.HP_pc_check_job_name_pre > 0) {
int (*preHookFunc) (const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_check_job_name_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_check_job_name_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_check_job_name_pre[hIndex].func;
retVal___ = preHookFunc(&name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -58559,9 +65189,9 @@ int HP_pc_check_job_name(const char *name) {
{
retVal___ = HPMHooks.source.pc.check_job_name(name);
}
- if( HPMHooks.count.HP_pc_check_job_name_post ) {
+ if (HPMHooks.count.HP_pc_check_job_name_post > 0) {
int (*postHookFunc) (int retVal___, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_check_job_name_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_check_job_name_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_check_job_name_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name);
}
@@ -58570,14 +65200,14 @@ int HP_pc_check_job_name(const char *name) {
}
void HP_pc_update_idle_time(struct map_session_data *sd, enum e_battle_config_idletime type) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_update_idle_time_pre ) {
+ if (HPMHooks.count.HP_pc_update_idle_time_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, enum e_battle_config_idletime *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_update_idle_time_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_update_idle_time_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_update_idle_time_pre[hIndex].func;
preHookFunc(&sd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -58585,9 +65215,9 @@ void HP_pc_update_idle_time(struct map_session_data *sd, enum e_battle_config_id
{
HPMHooks.source.pc.update_idle_time(sd, type);
}
- if( HPMHooks.count.HP_pc_update_idle_time_post ) {
+ if (HPMHooks.count.HP_pc_update_idle_time_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, enum e_battle_config_idletime type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_update_idle_time_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_update_idle_time_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_update_idle_time_post[hIndex].func;
postHookFunc(sd, type);
}
@@ -58597,14 +65227,14 @@ void HP_pc_update_idle_time(struct map_session_data *sd, enum e_battle_config_id
int HP_pc_have_magnifier(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pc_have_magnifier_pre ) {
+ if (HPMHooks.count.HP_pc_have_magnifier_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_have_magnifier_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_have_magnifier_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_have_magnifier_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -58612,9 +65242,9 @@ int HP_pc_have_magnifier(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pc.have_magnifier(sd);
}
- if( HPMHooks.count.HP_pc_have_magnifier_post ) {
+ if (HPMHooks.count.HP_pc_have_magnifier_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_have_magnifier_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_have_magnifier_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_have_magnifier_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -58624,14 +65254,14 @@ int HP_pc_have_magnifier(struct map_session_data *sd) {
bool HP_pc_process_chat_message(struct map_session_data *sd, const char *message) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_pc_process_chat_message_pre ) {
+ if (HPMHooks.count.HP_pc_process_chat_message_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, const char **message);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_process_chat_message_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_process_chat_message_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_process_chat_message_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &message);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -58639,9 +65269,9 @@ bool HP_pc_process_chat_message(struct map_session_data *sd, const char *message
{
retVal___ = HPMHooks.source.pc.process_chat_message(sd, message);
}
- if( HPMHooks.count.HP_pc_process_chat_message_post ) {
+ if (HPMHooks.count.HP_pc_process_chat_message_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, const char *message);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_process_chat_message_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_process_chat_message_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_process_chat_message_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, message);
}
@@ -58650,14 +65280,14 @@ bool HP_pc_process_chat_message(struct map_session_data *sd, const char *message
}
void HP_pc_check_supernovice_call(struct map_session_data *sd, const char *message) {
int hIndex = 0;
- if( HPMHooks.count.HP_pc_check_supernovice_call_pre ) {
+ if (HPMHooks.count.HP_pc_check_supernovice_call_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, const char **message);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_check_supernovice_call_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_check_supernovice_call_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_check_supernovice_call_pre[hIndex].func;
preHookFunc(&sd, &message);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -58665,9 +65295,9 @@ void HP_pc_check_supernovice_call(struct map_session_data *sd, const char *messa
{
HPMHooks.source.pc.check_supernovice_call(sd, message);
}
- if( HPMHooks.count.HP_pc_check_supernovice_call_post ) {
+ if (HPMHooks.count.HP_pc_check_supernovice_call_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, const char *message);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_check_supernovice_call_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_check_supernovice_call_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_check_supernovice_call_post[hIndex].func;
postHookFunc(sd, message);
}
@@ -58677,14 +65307,14 @@ void HP_pc_check_supernovice_call(struct map_session_data *sd, const char *messa
bool HP_pc_check_basicskill(struct map_session_data *sd, int level) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_pc_check_basicskill_pre ) {
+ if (HPMHooks.count.HP_pc_check_basicskill_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, int *level);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_check_basicskill_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_check_basicskill_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_check_basicskill_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &level);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -58692,27 +65322,108 @@ bool HP_pc_check_basicskill(struct map_session_data *sd, int level) {
{
retVal___ = HPMHooks.source.pc.check_basicskill(sd, level);
}
- if( HPMHooks.count.HP_pc_check_basicskill_post ) {
+ if (HPMHooks.count.HP_pc_check_basicskill_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, int level);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_check_basicskill_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_check_basicskill_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_check_basicskill_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, level);
}
}
return retVal___;
}
+bool HP_pc_isDeathPenaltyJob(uint16 job) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_pc_isDeathPenaltyJob_pre > 0) {
+ bool (*preHookFunc) (uint16 *job);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_isDeathPenaltyJob_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pc_isDeathPenaltyJob_pre[hIndex].func;
+ retVal___ = preHookFunc(&job);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.pc.isDeathPenaltyJob(job);
+ }
+ if (HPMHooks.count.HP_pc_isDeathPenaltyJob_post > 0) {
+ bool (*postHookFunc) (bool retVal___, uint16 job);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_isDeathPenaltyJob_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pc_isDeathPenaltyJob_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, job);
+ }
+ }
+ return retVal___;
+}
+bool HP_pc_has_second_costume(struct map_session_data *sd) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_pc_has_second_costume_pre > 0) {
+ bool (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_has_second_costume_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pc_has_second_costume_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.pc.has_second_costume(sd);
+ }
+ if (HPMHooks.count.HP_pc_has_second_costume_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_has_second_costume_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pc_has_second_costume_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd);
+ }
+ }
+ return retVal___;
+}
+bool HP_pc_expandInventory(struct map_session_data *sd, int adjustSize) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_pc_expandInventory_pre > 0) {
+ bool (*preHookFunc) (struct map_session_data **sd, int *adjustSize);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_expandInventory_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pc_expandInventory_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &adjustSize);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.pc.expandInventory(sd, adjustSize);
+ }
+ if (HPMHooks.count.HP_pc_expandInventory_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, int adjustSize);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_expandInventory_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pc_expandInventory_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, adjustSize);
+ }
+ }
+ return retVal___;
+}
/* pcre_interface */
pcre* HP_libpcre_compile(const char *pattern, int options, const char **errptr, int *erroffset, const unsigned char *tableptr) {
int hIndex = 0;
pcre* retVal___ = NULL;
- if( HPMHooks.count.HP_libpcre_compile_pre ) {
+ if (HPMHooks.count.HP_libpcre_compile_pre > 0) {
pcre* (*preHookFunc) (const char **pattern, int *options, const char ***errptr, int **erroffset, const unsigned char **tableptr);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libpcre_compile_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libpcre_compile_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libpcre_compile_pre[hIndex].func;
retVal___ = preHookFunc(&pattern, &options, &errptr, &erroffset, &tableptr);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -58720,9 +65431,9 @@ pcre* HP_libpcre_compile(const char *pattern, int options, const char **errptr,
{
retVal___ = HPMHooks.source.libpcre.compile(pattern, options, errptr, erroffset, tableptr);
}
- if( HPMHooks.count.HP_libpcre_compile_post ) {
+ if (HPMHooks.count.HP_libpcre_compile_post > 0) {
pcre* (*postHookFunc) (pcre* retVal___, const char *pattern, int options, const char **errptr, int *erroffset, const unsigned char *tableptr);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libpcre_compile_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libpcre_compile_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libpcre_compile_post[hIndex].func;
retVal___ = postHookFunc(retVal___, pattern, options, errptr, erroffset, tableptr);
}
@@ -58732,14 +65443,14 @@ pcre* HP_libpcre_compile(const char *pattern, int options, const char **errptr,
pcre_extra* HP_libpcre_study(const pcre *code, int options, const char **errptr) {
int hIndex = 0;
pcre_extra* retVal___ = NULL;
- if( HPMHooks.count.HP_libpcre_study_pre ) {
+ if (HPMHooks.count.HP_libpcre_study_pre > 0) {
pcre_extra* (*preHookFunc) (const pcre **code, int *options, const char ***errptr);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libpcre_study_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libpcre_study_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libpcre_study_pre[hIndex].func;
retVal___ = preHookFunc(&code, &options, &errptr);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -58747,9 +65458,9 @@ pcre_extra* HP_libpcre_study(const pcre *code, int options, const char **errptr)
{
retVal___ = HPMHooks.source.libpcre.study(code, options, errptr);
}
- if( HPMHooks.count.HP_libpcre_study_post ) {
+ if (HPMHooks.count.HP_libpcre_study_post > 0) {
pcre_extra* (*postHookFunc) (pcre_extra* retVal___, const pcre *code, int options, const char **errptr);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libpcre_study_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libpcre_study_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libpcre_study_post[hIndex].func;
retVal___ = postHookFunc(retVal___, code, options, errptr);
}
@@ -58759,14 +65470,14 @@ pcre_extra* HP_libpcre_study(const pcre *code, int options, const char **errptr)
int HP_libpcre_exec(const pcre *code, const pcre_extra *extra, PCRE_SPTR subject, int length, int startoffset, int options, int *ovector, int ovecsize) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libpcre_exec_pre ) {
+ if (HPMHooks.count.HP_libpcre_exec_pre > 0) {
int (*preHookFunc) (const pcre **code, const pcre_extra **extra, PCRE_SPTR *subject, int *length, int *startoffset, int *options, int **ovector, int *ovecsize);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libpcre_exec_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libpcre_exec_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libpcre_exec_pre[hIndex].func;
retVal___ = preHookFunc(&code, &extra, &subject, &length, &startoffset, &options, &ovector, &ovecsize);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -58774,9 +65485,9 @@ int HP_libpcre_exec(const pcre *code, const pcre_extra *extra, PCRE_SPTR subject
{
retVal___ = HPMHooks.source.libpcre.exec(code, extra, subject, length, startoffset, options, ovector, ovecsize);
}
- if( HPMHooks.count.HP_libpcre_exec_post ) {
+ if (HPMHooks.count.HP_libpcre_exec_post > 0) {
int (*postHookFunc) (int retVal___, const pcre *code, const pcre_extra *extra, PCRE_SPTR subject, int length, int startoffset, int options, int *ovector, int ovecsize);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libpcre_exec_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libpcre_exec_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libpcre_exec_post[hIndex].func;
retVal___ = postHookFunc(retVal___, code, extra, subject, length, startoffset, options, ovector, ovecsize);
}
@@ -58785,14 +65496,14 @@ int HP_libpcre_exec(const pcre *code, const pcre_extra *extra, PCRE_SPTR subject
}
void HP_libpcre_free(void *ptr) {
int hIndex = 0;
- if( HPMHooks.count.HP_libpcre_free_pre ) {
+ if (HPMHooks.count.HP_libpcre_free_pre > 0) {
void (*preHookFunc) (void **ptr);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libpcre_free_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libpcre_free_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libpcre_free_pre[hIndex].func;
preHookFunc(&ptr);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -58800,9 +65511,9 @@ void HP_libpcre_free(void *ptr) {
{
HPMHooks.source.libpcre.free(ptr);
}
- if( HPMHooks.count.HP_libpcre_free_post ) {
+ if (HPMHooks.count.HP_libpcre_free_post > 0) {
void (*postHookFunc) (void *ptr);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libpcre_free_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libpcre_free_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libpcre_free_post[hIndex].func;
postHookFunc(ptr);
}
@@ -58812,14 +65523,14 @@ void HP_libpcre_free(void *ptr) {
int HP_libpcre_copy_substring(const char *subject, int *ovector, int stringcount, int stringnumber, char *buffer, int buffersize) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libpcre_copy_substring_pre ) {
+ if (HPMHooks.count.HP_libpcre_copy_substring_pre > 0) {
int (*preHookFunc) (const char **subject, int **ovector, int *stringcount, int *stringnumber, char **buffer, int *buffersize);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libpcre_copy_substring_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libpcre_copy_substring_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libpcre_copy_substring_pre[hIndex].func;
retVal___ = preHookFunc(&subject, &ovector, &stringcount, &stringnumber, &buffer, &buffersize);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -58827,9 +65538,9 @@ int HP_libpcre_copy_substring(const char *subject, int *ovector, int stringcount
{
retVal___ = HPMHooks.source.libpcre.copy_substring(subject, ovector, stringcount, stringnumber, buffer, buffersize);
}
- if( HPMHooks.count.HP_libpcre_copy_substring_post ) {
+ if (HPMHooks.count.HP_libpcre_copy_substring_post > 0) {
int (*postHookFunc) (int retVal___, const char *subject, int *ovector, int stringcount, int stringnumber, char *buffer, int buffersize);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libpcre_copy_substring_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libpcre_copy_substring_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libpcre_copy_substring_post[hIndex].func;
retVal___ = postHookFunc(retVal___, subject, ovector, stringcount, stringnumber, buffer, buffersize);
}
@@ -58838,14 +65549,14 @@ int HP_libpcre_copy_substring(const char *subject, int *ovector, int stringcount
}
void HP_libpcre_free_substring(const char *stringptr) {
int hIndex = 0;
- if( HPMHooks.count.HP_libpcre_free_substring_pre ) {
+ if (HPMHooks.count.HP_libpcre_free_substring_pre > 0) {
void (*preHookFunc) (const char **stringptr);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libpcre_free_substring_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libpcre_free_substring_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libpcre_free_substring_pre[hIndex].func;
preHookFunc(&stringptr);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -58853,9 +65564,9 @@ void HP_libpcre_free_substring(const char *stringptr) {
{
HPMHooks.source.libpcre.free_substring(stringptr);
}
- if( HPMHooks.count.HP_libpcre_free_substring_post ) {
+ if (HPMHooks.count.HP_libpcre_free_substring_post > 0) {
void (*postHookFunc) (const char *stringptr);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libpcre_free_substring_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libpcre_free_substring_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libpcre_free_substring_post[hIndex].func;
postHookFunc(stringptr);
}
@@ -58865,14 +65576,14 @@ void HP_libpcre_free_substring(const char *stringptr) {
int HP_libpcre_copy_named_substring(const pcre *code, const char *subject, int *ovector, int stringcount, const char *stringname, char *buffer, int buffersize) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libpcre_copy_named_substring_pre ) {
+ if (HPMHooks.count.HP_libpcre_copy_named_substring_pre > 0) {
int (*preHookFunc) (const pcre **code, const char **subject, int **ovector, int *stringcount, const char **stringname, char **buffer, int *buffersize);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libpcre_copy_named_substring_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libpcre_copy_named_substring_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libpcre_copy_named_substring_pre[hIndex].func;
retVal___ = preHookFunc(&code, &subject, &ovector, &stringcount, &stringname, &buffer, &buffersize);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -58880,9 +65591,9 @@ int HP_libpcre_copy_named_substring(const pcre *code, const char *subject, int *
{
retVal___ = HPMHooks.source.libpcre.copy_named_substring(code, subject, ovector, stringcount, stringname, buffer, buffersize);
}
- if( HPMHooks.count.HP_libpcre_copy_named_substring_post ) {
+ if (HPMHooks.count.HP_libpcre_copy_named_substring_post > 0) {
int (*postHookFunc) (int retVal___, const pcre *code, const char *subject, int *ovector, int stringcount, const char *stringname, char *buffer, int buffersize);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libpcre_copy_named_substring_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libpcre_copy_named_substring_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libpcre_copy_named_substring_post[hIndex].func;
retVal___ = postHookFunc(retVal___, code, subject, ovector, stringcount, stringname, buffer, buffersize);
}
@@ -58892,14 +65603,14 @@ int HP_libpcre_copy_named_substring(const pcre *code, const char *subject, int *
int HP_libpcre_get_substring(const char *subject, int *ovector, int stringcount, int stringnumber, const char **stringptr) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_libpcre_get_substring_pre ) {
+ if (HPMHooks.count.HP_libpcre_get_substring_pre > 0) {
int (*preHookFunc) (const char **subject, int **ovector, int *stringcount, int *stringnumber, const char ***stringptr);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libpcre_get_substring_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libpcre_get_substring_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_libpcre_get_substring_pre[hIndex].func;
retVal___ = preHookFunc(&subject, &ovector, &stringcount, &stringnumber, &stringptr);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -58907,9 +65618,9 @@ int HP_libpcre_get_substring(const char *subject, int *ovector, int stringcount,
{
retVal___ = HPMHooks.source.libpcre.get_substring(subject, ovector, stringcount, stringnumber, stringptr);
}
- if( HPMHooks.count.HP_libpcre_get_substring_post ) {
+ if (HPMHooks.count.HP_libpcre_get_substring_post > 0) {
int (*postHookFunc) (int retVal___, const char *subject, int *ovector, int stringcount, int stringnumber, const char **stringptr);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_libpcre_get_substring_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_libpcre_get_substring_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_libpcre_get_substring_post[hIndex].func;
retVal___ = postHookFunc(retVal___, subject, ovector, stringcount, stringnumber, stringptr);
}
@@ -58920,14 +65631,14 @@ int HP_libpcre_get_substring(const char *subject, int *ovector, int stringcount,
int HP_pet_init(bool minimal) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_init_pre ) {
+ if (HPMHooks.count.HP_pet_init_pre > 0) {
int (*preHookFunc) (bool *minimal);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_init_pre[hIndex].func;
retVal___ = preHookFunc(&minimal);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -58935,9 +65646,9 @@ int HP_pet_init(bool minimal) {
{
retVal___ = HPMHooks.source.pet.init(minimal);
}
- if( HPMHooks.count.HP_pet_init_post ) {
+ if (HPMHooks.count.HP_pet_init_post > 0) {
int (*postHookFunc) (int retVal___, bool minimal);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_init_post[hIndex].func;
retVal___ = postHookFunc(retVal___, minimal);
}
@@ -58947,14 +65658,14 @@ int HP_pet_init(bool minimal) {
int HP_pet_final(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_final_pre ) {
+ if (HPMHooks.count.HP_pet_final_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_final_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -58962,9 +65673,9 @@ int HP_pet_final(void) {
{
retVal___ = HPMHooks.source.pet.final();
}
- if( HPMHooks.count.HP_pet_final_post ) {
+ if (HPMHooks.count.HP_pet_final_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_final_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -58974,14 +65685,14 @@ int HP_pet_final(void) {
int HP_pet_hungry_val(struct pet_data *pd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_hungry_val_pre ) {
+ if (HPMHooks.count.HP_pet_hungry_val_pre > 0) {
int (*preHookFunc) (struct pet_data **pd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_hungry_val_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_hungry_val_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_hungry_val_pre[hIndex].func;
retVal___ = preHookFunc(&pd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -58989,9 +65700,9 @@ int HP_pet_hungry_val(struct pet_data *pd) {
{
retVal___ = HPMHooks.source.pet.hungry_val(pd);
}
- if( HPMHooks.count.HP_pet_hungry_val_post ) {
+ if (HPMHooks.count.HP_pet_hungry_val_post > 0) {
int (*postHookFunc) (int retVal___, struct pet_data *pd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_hungry_val_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_hungry_val_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_hungry_val_post[hIndex].func;
retVal___ = postHookFunc(retVal___, pd);
}
@@ -59000,14 +65711,14 @@ int HP_pet_hungry_val(struct pet_data *pd) {
}
void HP_pet_set_intimate(struct pet_data *pd, int value) {
int hIndex = 0;
- if( HPMHooks.count.HP_pet_set_intimate_pre ) {
+ if (HPMHooks.count.HP_pet_set_intimate_pre > 0) {
void (*preHookFunc) (struct pet_data **pd, int *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_set_intimate_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_set_intimate_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_set_intimate_pre[hIndex].func;
preHookFunc(&pd, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -59015,9 +65726,9 @@ void HP_pet_set_intimate(struct pet_data *pd, int value) {
{
HPMHooks.source.pet.set_intimate(pd, value);
}
- if( HPMHooks.count.HP_pet_set_intimate_post ) {
+ if (HPMHooks.count.HP_pet_set_intimate_post > 0) {
void (*postHookFunc) (struct pet_data *pd, int value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_set_intimate_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_set_intimate_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_set_intimate_post[hIndex].func;
postHookFunc(pd, value);
}
@@ -59027,14 +65738,14 @@ void HP_pet_set_intimate(struct pet_data *pd, int value) {
int HP_pet_create_egg(struct map_session_data *sd, int item_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_create_egg_pre ) {
+ if (HPMHooks.count.HP_pet_create_egg_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *item_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_create_egg_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_create_egg_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_create_egg_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &item_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59042,9 +65753,9 @@ int HP_pet_create_egg(struct map_session_data *sd, int item_id) {
{
retVal___ = HPMHooks.source.pet.create_egg(sd, item_id);
}
- if( HPMHooks.count.HP_pet_create_egg_post ) {
+ if (HPMHooks.count.HP_pet_create_egg_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int item_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_create_egg_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_create_egg_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_create_egg_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, item_id);
}
@@ -59054,14 +65765,14 @@ int HP_pet_create_egg(struct map_session_data *sd, int item_id) {
int HP_pet_unlocktarget(struct pet_data *pd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_unlocktarget_pre ) {
+ if (HPMHooks.count.HP_pet_unlocktarget_pre > 0) {
int (*preHookFunc) (struct pet_data **pd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_unlocktarget_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_unlocktarget_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_unlocktarget_pre[hIndex].func;
retVal___ = preHookFunc(&pd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59069,9 +65780,9 @@ int HP_pet_unlocktarget(struct pet_data *pd) {
{
retVal___ = HPMHooks.source.pet.unlocktarget(pd);
}
- if( HPMHooks.count.HP_pet_unlocktarget_post ) {
+ if (HPMHooks.count.HP_pet_unlocktarget_post > 0) {
int (*postHookFunc) (int retVal___, struct pet_data *pd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_unlocktarget_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_unlocktarget_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_unlocktarget_post[hIndex].func;
retVal___ = postHookFunc(retVal___, pd);
}
@@ -59081,14 +65792,14 @@ int HP_pet_unlocktarget(struct pet_data *pd) {
int HP_pet_attackskill(struct pet_data *pd, int target_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_attackskill_pre ) {
+ if (HPMHooks.count.HP_pet_attackskill_pre > 0) {
int (*preHookFunc) (struct pet_data **pd, int *target_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_attackskill_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_attackskill_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_attackskill_pre[hIndex].func;
retVal___ = preHookFunc(&pd, &target_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59096,9 +65807,9 @@ int HP_pet_attackskill(struct pet_data *pd, int target_id) {
{
retVal___ = HPMHooks.source.pet.attackskill(pd, target_id);
}
- if( HPMHooks.count.HP_pet_attackskill_post ) {
+ if (HPMHooks.count.HP_pet_attackskill_post > 0) {
int (*postHookFunc) (int retVal___, struct pet_data *pd, int target_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_attackskill_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_attackskill_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_attackskill_post[hIndex].func;
retVal___ = postHookFunc(retVal___, pd, target_id);
}
@@ -59108,14 +65819,14 @@ int HP_pet_attackskill(struct pet_data *pd, int target_id) {
int HP_pet_target_check(struct map_session_data *sd, struct block_list *bl, int type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_target_check_pre ) {
+ if (HPMHooks.count.HP_pet_target_check_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct block_list **bl, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_target_check_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_target_check_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_target_check_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &bl, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59123,9 +65834,9 @@ int HP_pet_target_check(struct map_session_data *sd, struct block_list *bl, int
{
retVal___ = HPMHooks.source.pet.target_check(sd, bl, type);
}
- if( HPMHooks.count.HP_pet_target_check_post ) {
+ if (HPMHooks.count.HP_pet_target_check_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct block_list *bl, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_target_check_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_target_check_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_target_check_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, bl, type);
}
@@ -59135,14 +65846,14 @@ int HP_pet_target_check(struct map_session_data *sd, struct block_list *bl, int
int HP_pet_sc_check(struct map_session_data *sd, int type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_sc_check_pre ) {
+ if (HPMHooks.count.HP_pet_sc_check_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_sc_check_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_sc_check_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_sc_check_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59150,9 +65861,9 @@ int HP_pet_sc_check(struct map_session_data *sd, int type) {
{
retVal___ = HPMHooks.source.pet.sc_check(sd, type);
}
- if( HPMHooks.count.HP_pet_sc_check_post ) {
+ if (HPMHooks.count.HP_pet_sc_check_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_sc_check_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_sc_check_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_sc_check_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, type);
}
@@ -59162,14 +65873,14 @@ int HP_pet_sc_check(struct map_session_data *sd, int type) {
int HP_pet_hungry(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_hungry_pre ) {
+ if (HPMHooks.count.HP_pet_hungry_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_hungry_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_hungry_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_hungry_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59177,9 +65888,9 @@ int HP_pet_hungry(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.pet.hungry(tid, tick, id, data);
}
- if( HPMHooks.count.HP_pet_hungry_post ) {
+ if (HPMHooks.count.HP_pet_hungry_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_hungry_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_hungry_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_hungry_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -59189,14 +65900,14 @@ int HP_pet_hungry(int tid, int64 tick, int id, intptr_t data) {
int HP_pet_search_petDB_index(int key, int type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_search_petDB_index_pre ) {
+ if (HPMHooks.count.HP_pet_search_petDB_index_pre > 0) {
int (*preHookFunc) (int *key, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_search_petDB_index_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_search_petDB_index_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_search_petDB_index_pre[hIndex].func;
retVal___ = preHookFunc(&key, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59204,9 +65915,9 @@ int HP_pet_search_petDB_index(int key, int type) {
{
retVal___ = HPMHooks.source.pet.search_petDB_index(key, type);
}
- if( HPMHooks.count.HP_pet_search_petDB_index_post ) {
+ if (HPMHooks.count.HP_pet_search_petDB_index_post > 0) {
int (*postHookFunc) (int retVal___, int key, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_search_petDB_index_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_search_petDB_index_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_search_petDB_index_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, type);
}
@@ -59216,14 +65927,14 @@ int HP_pet_search_petDB_index(int key, int type) {
int HP_pet_hungry_timer_delete(struct pet_data *pd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_hungry_timer_delete_pre ) {
+ if (HPMHooks.count.HP_pet_hungry_timer_delete_pre > 0) {
int (*preHookFunc) (struct pet_data **pd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_hungry_timer_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_hungry_timer_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_hungry_timer_delete_pre[hIndex].func;
retVal___ = preHookFunc(&pd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59231,9 +65942,9 @@ int HP_pet_hungry_timer_delete(struct pet_data *pd) {
{
retVal___ = HPMHooks.source.pet.hungry_timer_delete(pd);
}
- if( HPMHooks.count.HP_pet_hungry_timer_delete_post ) {
+ if (HPMHooks.count.HP_pet_hungry_timer_delete_post > 0) {
int (*postHookFunc) (int retVal___, struct pet_data *pd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_hungry_timer_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_hungry_timer_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_hungry_timer_delete_post[hIndex].func;
retVal___ = postHookFunc(retVal___, pd);
}
@@ -59243,14 +65954,14 @@ int HP_pet_hungry_timer_delete(struct pet_data *pd) {
int HP_pet_performance(struct map_session_data *sd, struct pet_data *pd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_performance_pre ) {
+ if (HPMHooks.count.HP_pet_performance_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct pet_data **pd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_performance_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_performance_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_performance_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &pd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59258,9 +65969,9 @@ int HP_pet_performance(struct map_session_data *sd, struct pet_data *pd) {
{
retVal___ = HPMHooks.source.pet.performance(sd, pd);
}
- if( HPMHooks.count.HP_pet_performance_post ) {
+ if (HPMHooks.count.HP_pet_performance_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct pet_data *pd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_performance_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_performance_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_performance_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, pd);
}
@@ -59270,14 +65981,14 @@ int HP_pet_performance(struct map_session_data *sd, struct pet_data *pd) {
int HP_pet_return_egg(struct map_session_data *sd, struct pet_data *pd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_return_egg_pre ) {
+ if (HPMHooks.count.HP_pet_return_egg_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct pet_data **pd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_return_egg_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_return_egg_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_return_egg_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &pd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59285,9 +65996,9 @@ int HP_pet_return_egg(struct map_session_data *sd, struct pet_data *pd) {
{
retVal___ = HPMHooks.source.pet.return_egg(sd, pd);
}
- if( HPMHooks.count.HP_pet_return_egg_post ) {
+ if (HPMHooks.count.HP_pet_return_egg_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct pet_data *pd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_return_egg_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_return_egg_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_return_egg_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, pd);
}
@@ -59297,14 +66008,14 @@ int HP_pet_return_egg(struct map_session_data *sd, struct pet_data *pd) {
int HP_pet_data_init(struct map_session_data *sd, struct s_pet *petinfo) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_data_init_pre ) {
+ if (HPMHooks.count.HP_pet_data_init_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct s_pet **petinfo);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_data_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_data_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_data_init_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &petinfo);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59312,9 +66023,9 @@ int HP_pet_data_init(struct map_session_data *sd, struct s_pet *petinfo) {
{
retVal___ = HPMHooks.source.pet.data_init(sd, petinfo);
}
- if( HPMHooks.count.HP_pet_data_init_post ) {
+ if (HPMHooks.count.HP_pet_data_init_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct s_pet *petinfo);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_data_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_data_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_data_init_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, petinfo);
}
@@ -59324,14 +66035,14 @@ int HP_pet_data_init(struct map_session_data *sd, struct s_pet *petinfo) {
int HP_pet_birth_process(struct map_session_data *sd, struct s_pet *petinfo) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_birth_process_pre ) {
+ if (HPMHooks.count.HP_pet_birth_process_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct s_pet **petinfo);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_birth_process_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_birth_process_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_birth_process_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &petinfo);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59339,9 +66050,9 @@ int HP_pet_birth_process(struct map_session_data *sd, struct s_pet *petinfo) {
{
retVal___ = HPMHooks.source.pet.birth_process(sd, petinfo);
}
- if( HPMHooks.count.HP_pet_birth_process_post ) {
+ if (HPMHooks.count.HP_pet_birth_process_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct s_pet *petinfo);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_birth_process_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_birth_process_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_birth_process_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, petinfo);
}
@@ -59351,14 +66062,14 @@ int HP_pet_birth_process(struct map_session_data *sd, struct s_pet *petinfo) {
int HP_pet_recv_petdata(int account_id, struct s_pet *p, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_recv_petdata_pre ) {
+ if (HPMHooks.count.HP_pet_recv_petdata_pre > 0) {
int (*preHookFunc) (int *account_id, struct s_pet **p, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_recv_petdata_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_recv_petdata_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_recv_petdata_pre[hIndex].func;
retVal___ = preHookFunc(&account_id, &p, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59366,26 +66077,26 @@ int HP_pet_recv_petdata(int account_id, struct s_pet *p, int flag) {
{
retVal___ = HPMHooks.source.pet.recv_petdata(account_id, p, flag);
}
- if( HPMHooks.count.HP_pet_recv_petdata_post ) {
+ if (HPMHooks.count.HP_pet_recv_petdata_post > 0) {
int (*postHookFunc) (int retVal___, int account_id, struct s_pet *p, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_recv_petdata_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_recv_petdata_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_recv_petdata_post[hIndex].func;
retVal___ = postHookFunc(retVal___, account_id, p, flag);
}
}
return retVal___;
}
-int HP_pet_select_egg(struct map_session_data *sd, short egg_index) {
+int HP_pet_select_egg(struct map_session_data *sd, int egg_index) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_select_egg_pre ) {
- int (*preHookFunc) (struct map_session_data **sd, short *egg_index);
+ if (HPMHooks.count.HP_pet_select_egg_pre > 0) {
+ int (*preHookFunc) (struct map_session_data **sd, int *egg_index);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_select_egg_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_select_egg_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_select_egg_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &egg_index);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59393,9 +66104,9 @@ int HP_pet_select_egg(struct map_session_data *sd, short egg_index) {
{
retVal___ = HPMHooks.source.pet.select_egg(sd, egg_index);
}
- if( HPMHooks.count.HP_pet_select_egg_post ) {
- int (*postHookFunc) (int retVal___, struct map_session_data *sd, short egg_index);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_select_egg_post; hIndex++ ) {
+ if (HPMHooks.count.HP_pet_select_egg_post > 0) {
+ int (*postHookFunc) (int retVal___, struct map_session_data *sd, int egg_index);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_select_egg_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_select_egg_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, egg_index);
}
@@ -59405,14 +66116,14 @@ int HP_pet_select_egg(struct map_session_data *sd, short egg_index) {
int HP_pet_catch_process1(struct map_session_data *sd, int target_class) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_catch_process1_pre ) {
+ if (HPMHooks.count.HP_pet_catch_process1_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *target_class);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_catch_process1_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_catch_process1_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_catch_process1_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &target_class);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59420,9 +66131,9 @@ int HP_pet_catch_process1(struct map_session_data *sd, int target_class) {
{
retVal___ = HPMHooks.source.pet.catch_process1(sd, target_class);
}
- if( HPMHooks.count.HP_pet_catch_process1_post ) {
+ if (HPMHooks.count.HP_pet_catch_process1_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int target_class);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_catch_process1_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_catch_process1_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_catch_process1_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, target_class);
}
@@ -59432,14 +66143,14 @@ int HP_pet_catch_process1(struct map_session_data *sd, int target_class) {
int HP_pet_catch_process2(struct map_session_data *sd, int target_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_catch_process2_pre ) {
+ if (HPMHooks.count.HP_pet_catch_process2_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *target_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_catch_process2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_catch_process2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_catch_process2_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &target_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59447,9 +66158,9 @@ int HP_pet_catch_process2(struct map_session_data *sd, int target_id) {
{
retVal___ = HPMHooks.source.pet.catch_process2(sd, target_id);
}
- if( HPMHooks.count.HP_pet_catch_process2_post ) {
+ if (HPMHooks.count.HP_pet_catch_process2_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int target_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_catch_process2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_catch_process2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_catch_process2_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, target_id);
}
@@ -59459,14 +66170,14 @@ int HP_pet_catch_process2(struct map_session_data *sd, int target_id) {
bool HP_pet_get_egg(int account_id, short pet_class, int pet_id) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_pet_get_egg_pre ) {
+ if (HPMHooks.count.HP_pet_get_egg_pre > 0) {
bool (*preHookFunc) (int *account_id, short *pet_class, int *pet_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_get_egg_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_get_egg_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_get_egg_pre[hIndex].func;
retVal___ = preHookFunc(&account_id, &pet_class, &pet_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59474,9 +66185,9 @@ bool HP_pet_get_egg(int account_id, short pet_class, int pet_id) {
{
retVal___ = HPMHooks.source.pet.get_egg(account_id, pet_class, pet_id);
}
- if( HPMHooks.count.HP_pet_get_egg_post ) {
+ if (HPMHooks.count.HP_pet_get_egg_post > 0) {
bool (*postHookFunc) (bool retVal___, int account_id, short pet_class, int pet_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_get_egg_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_get_egg_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_get_egg_post[hIndex].func;
retVal___ = postHookFunc(retVal___, account_id, pet_class, pet_id);
}
@@ -59486,14 +66197,14 @@ bool HP_pet_get_egg(int account_id, short pet_class, int pet_id) {
int HP_pet_unequipitem(struct map_session_data *sd, struct pet_data *pd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_unequipitem_pre ) {
+ if (HPMHooks.count.HP_pet_unequipitem_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct pet_data **pd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_unequipitem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_unequipitem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_unequipitem_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &pd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59501,9 +66212,9 @@ int HP_pet_unequipitem(struct map_session_data *sd, struct pet_data *pd) {
{
retVal___ = HPMHooks.source.pet.unequipitem(sd, pd);
}
- if( HPMHooks.count.HP_pet_unequipitem_post ) {
+ if (HPMHooks.count.HP_pet_unequipitem_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct pet_data *pd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_unequipitem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_unequipitem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_unequipitem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, pd);
}
@@ -59513,14 +66224,14 @@ int HP_pet_unequipitem(struct map_session_data *sd, struct pet_data *pd) {
int HP_pet_food(struct map_session_data *sd, struct pet_data *pd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_food_pre ) {
+ if (HPMHooks.count.HP_pet_food_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct pet_data **pd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_food_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_food_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_food_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &pd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59528,9 +66239,9 @@ int HP_pet_food(struct map_session_data *sd, struct pet_data *pd) {
{
retVal___ = HPMHooks.source.pet.food(sd, pd);
}
- if( HPMHooks.count.HP_pet_food_post ) {
+ if (HPMHooks.count.HP_pet_food_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct pet_data *pd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_food_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_food_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_food_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, pd);
}
@@ -59540,16 +66251,16 @@ int HP_pet_food(struct map_session_data *sd, struct pet_data *pd) {
int HP_pet_ai_sub_hard_lootsearch(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_ai_sub_hard_lootsearch_pre ) {
+ if (HPMHooks.count.HP_pet_ai_sub_hard_lootsearch_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_ai_sub_hard_lootsearch_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_ai_sub_hard_lootsearch_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_pet_ai_sub_hard_lootsearch_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59559,9 +66270,9 @@ int HP_pet_ai_sub_hard_lootsearch(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.pet.ai_sub_hard_lootsearch(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_pet_ai_sub_hard_lootsearch_post ) {
+ if (HPMHooks.count.HP_pet_ai_sub_hard_lootsearch_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_ai_sub_hard_lootsearch_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_ai_sub_hard_lootsearch_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_pet_ai_sub_hard_lootsearch_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -59573,14 +66284,14 @@ int HP_pet_ai_sub_hard_lootsearch(struct block_list *bl, va_list ap) {
int HP_pet_menu(struct map_session_data *sd, int menunum) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_menu_pre ) {
+ if (HPMHooks.count.HP_pet_menu_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *menunum);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_menu_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_menu_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_menu_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &menunum);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59588,9 +66299,9 @@ int HP_pet_menu(struct map_session_data *sd, int menunum) {
{
retVal___ = HPMHooks.source.pet.menu(sd, menunum);
}
- if( HPMHooks.count.HP_pet_menu_post ) {
+ if (HPMHooks.count.HP_pet_menu_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int menunum);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_menu_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_menu_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_menu_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, menunum);
}
@@ -59600,14 +66311,14 @@ int HP_pet_menu(struct map_session_data *sd, int menunum) {
int HP_pet_change_name(struct map_session_data *sd, const char *name) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_change_name_pre ) {
+ if (HPMHooks.count.HP_pet_change_name_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_change_name_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_change_name_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_change_name_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59615,9 +66326,9 @@ int HP_pet_change_name(struct map_session_data *sd, const char *name) {
{
retVal___ = HPMHooks.source.pet.change_name(sd, name);
}
- if( HPMHooks.count.HP_pet_change_name_post ) {
+ if (HPMHooks.count.HP_pet_change_name_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_change_name_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_change_name_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_change_name_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, name);
}
@@ -59627,14 +66338,14 @@ int HP_pet_change_name(struct map_session_data *sd, const char *name) {
int HP_pet_change_name_ack(struct map_session_data *sd, const char *name, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_change_name_ack_pre ) {
+ if (HPMHooks.count.HP_pet_change_name_ack_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, const char **name, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_change_name_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_change_name_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_change_name_ack_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &name, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59642,9 +66353,9 @@ int HP_pet_change_name_ack(struct map_session_data *sd, const char *name, int fl
{
retVal___ = HPMHooks.source.pet.change_name_ack(sd, name, flag);
}
- if( HPMHooks.count.HP_pet_change_name_ack_post ) {
+ if (HPMHooks.count.HP_pet_change_name_ack_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, const char *name, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_change_name_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_change_name_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_change_name_ack_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, name, flag);
}
@@ -59654,14 +66365,14 @@ int HP_pet_change_name_ack(struct map_session_data *sd, const char *name, int fl
int HP_pet_equipitem(struct map_session_data *sd, int index) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_equipitem_pre ) {
+ if (HPMHooks.count.HP_pet_equipitem_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *index);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_equipitem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_equipitem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_equipitem_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &index);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59669,9 +66380,9 @@ int HP_pet_equipitem(struct map_session_data *sd, int index) {
{
retVal___ = HPMHooks.source.pet.equipitem(sd, index);
}
- if( HPMHooks.count.HP_pet_equipitem_post ) {
+ if (HPMHooks.count.HP_pet_equipitem_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int index);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_equipitem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_equipitem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_equipitem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, index);
}
@@ -59681,14 +66392,14 @@ int HP_pet_equipitem(struct map_session_data *sd, int index) {
int HP_pet_randomwalk(struct pet_data *pd, int64 tick) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_randomwalk_pre ) {
+ if (HPMHooks.count.HP_pet_randomwalk_pre > 0) {
int (*preHookFunc) (struct pet_data **pd, int64 *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_randomwalk_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_randomwalk_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_randomwalk_pre[hIndex].func;
retVal___ = preHookFunc(&pd, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59696,9 +66407,9 @@ int HP_pet_randomwalk(struct pet_data *pd, int64 tick) {
{
retVal___ = HPMHooks.source.pet.randomwalk(pd, tick);
}
- if( HPMHooks.count.HP_pet_randomwalk_post ) {
+ if (HPMHooks.count.HP_pet_randomwalk_post > 0) {
int (*postHookFunc) (int retVal___, struct pet_data *pd, int64 tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_randomwalk_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_randomwalk_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_randomwalk_post[hIndex].func;
retVal___ = postHookFunc(retVal___, pd, tick);
}
@@ -59708,14 +66419,14 @@ int HP_pet_randomwalk(struct pet_data *pd, int64 tick) {
int HP_pet_ai_sub_hard(struct pet_data *pd, struct map_session_data *sd, int64 tick) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_ai_sub_hard_pre ) {
+ if (HPMHooks.count.HP_pet_ai_sub_hard_pre > 0) {
int (*preHookFunc) (struct pet_data **pd, struct map_session_data **sd, int64 *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_ai_sub_hard_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_ai_sub_hard_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_ai_sub_hard_pre[hIndex].func;
retVal___ = preHookFunc(&pd, &sd, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59723,9 +66434,9 @@ int HP_pet_ai_sub_hard(struct pet_data *pd, struct map_session_data *sd, int64 t
{
retVal___ = HPMHooks.source.pet.ai_sub_hard(pd, sd, tick);
}
- if( HPMHooks.count.HP_pet_ai_sub_hard_post ) {
+ if (HPMHooks.count.HP_pet_ai_sub_hard_post > 0) {
int (*postHookFunc) (int retVal___, struct pet_data *pd, struct map_session_data *sd, int64 tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_ai_sub_hard_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_ai_sub_hard_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_ai_sub_hard_post[hIndex].func;
retVal___ = postHookFunc(retVal___, pd, sd, tick);
}
@@ -59735,16 +66446,16 @@ int HP_pet_ai_sub_hard(struct pet_data *pd, struct map_session_data *sd, int64 t
int HP_pet_ai_sub_foreachclient(struct map_session_data *sd, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_ai_sub_foreachclient_pre ) {
+ if (HPMHooks.count.HP_pet_ai_sub_foreachclient_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_ai_sub_foreachclient_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_ai_sub_foreachclient_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_pet_ai_sub_foreachclient_pre[hIndex].func;
retVal___ = preHookFunc(&sd, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59754,9 +66465,9 @@ int HP_pet_ai_sub_foreachclient(struct map_session_data *sd, va_list ap) {
retVal___ = HPMHooks.source.pet.ai_sub_foreachclient(sd, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_pet_ai_sub_foreachclient_post ) {
+ if (HPMHooks.count.HP_pet_ai_sub_foreachclient_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_ai_sub_foreachclient_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_ai_sub_foreachclient_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_pet_ai_sub_foreachclient_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, ap___copy);
@@ -59768,14 +66479,14 @@ int HP_pet_ai_sub_foreachclient(struct map_session_data *sd, va_list ap) {
int HP_pet_ai_hard(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_ai_hard_pre ) {
+ if (HPMHooks.count.HP_pet_ai_hard_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_ai_hard_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_ai_hard_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_ai_hard_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59783,9 +66494,9 @@ int HP_pet_ai_hard(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.pet.ai_hard(tid, tick, id, data);
}
- if( HPMHooks.count.HP_pet_ai_hard_post ) {
+ if (HPMHooks.count.HP_pet_ai_hard_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_ai_hard_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_ai_hard_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_ai_hard_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -59795,14 +66506,14 @@ int HP_pet_ai_hard(int tid, int64 tick, int id, intptr_t data) {
int HP_pet_delay_item_drop(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_delay_item_drop_pre ) {
+ if (HPMHooks.count.HP_pet_delay_item_drop_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_delay_item_drop_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_delay_item_drop_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_delay_item_drop_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59810,9 +66521,9 @@ int HP_pet_delay_item_drop(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.pet.delay_item_drop(tid, tick, id, data);
}
- if( HPMHooks.count.HP_pet_delay_item_drop_post ) {
+ if (HPMHooks.count.HP_pet_delay_item_drop_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_delay_item_drop_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_delay_item_drop_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_delay_item_drop_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -59822,14 +66533,14 @@ int HP_pet_delay_item_drop(int tid, int64 tick, int id, intptr_t data) {
int HP_pet_lootitem_drop(struct pet_data *pd, struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_lootitem_drop_pre ) {
+ if (HPMHooks.count.HP_pet_lootitem_drop_pre > 0) {
int (*preHookFunc) (struct pet_data **pd, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_lootitem_drop_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_lootitem_drop_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_lootitem_drop_pre[hIndex].func;
retVal___ = preHookFunc(&pd, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59837,9 +66548,9 @@ int HP_pet_lootitem_drop(struct pet_data *pd, struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.pet.lootitem_drop(pd, sd);
}
- if( HPMHooks.count.HP_pet_lootitem_drop_post ) {
+ if (HPMHooks.count.HP_pet_lootitem_drop_post > 0) {
int (*postHookFunc) (int retVal___, struct pet_data *pd, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_lootitem_drop_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_lootitem_drop_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_lootitem_drop_post[hIndex].func;
retVal___ = postHookFunc(retVal___, pd, sd);
}
@@ -59849,14 +66560,14 @@ int HP_pet_lootitem_drop(struct pet_data *pd, struct map_session_data *sd) {
int HP_pet_skill_bonus_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_skill_bonus_timer_pre ) {
+ if (HPMHooks.count.HP_pet_skill_bonus_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_skill_bonus_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_skill_bonus_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_skill_bonus_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59864,9 +66575,9 @@ int HP_pet_skill_bonus_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.pet.skill_bonus_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_pet_skill_bonus_timer_post ) {
+ if (HPMHooks.count.HP_pet_skill_bonus_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_skill_bonus_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_skill_bonus_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_skill_bonus_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -59876,14 +66587,14 @@ int HP_pet_skill_bonus_timer(int tid, int64 tick, int id, intptr_t data) {
int HP_pet_recovery_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_recovery_timer_pre ) {
+ if (HPMHooks.count.HP_pet_recovery_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_recovery_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_recovery_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_recovery_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59891,9 +66602,9 @@ int HP_pet_recovery_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.pet.recovery_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_pet_recovery_timer_post ) {
+ if (HPMHooks.count.HP_pet_recovery_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_recovery_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_recovery_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_recovery_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -59903,14 +66614,14 @@ int HP_pet_recovery_timer(int tid, int64 tick, int id, intptr_t data) {
int HP_pet_skill_support_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_pet_skill_support_timer_pre ) {
+ if (HPMHooks.count.HP_pet_skill_support_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_skill_support_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_skill_support_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_skill_support_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -59918,53 +66629,185 @@ int HP_pet_skill_support_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.pet.skill_support_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_pet_skill_support_timer_post ) {
+ if (HPMHooks.count.HP_pet_skill_support_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_skill_support_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_skill_support_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_skill_support_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
}
return retVal___;
}
-int HP_pet_read_db(void) {
+void HP_pet_read_db(void) {
int hIndex = 0;
- int retVal___ = 0;
- if( HPMHooks.count.HP_pet_read_db_pre ) {
- int (*preHookFunc) (void);
+ if (HPMHooks.count.HP_pet_read_db_pre > 0) {
+ void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_read_db_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_read_db_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_read_db_pre[hIndex].func;
- retVal___ = preHookFunc();
+ preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
- return retVal___;
+ return;
}
}
{
- retVal___ = HPMHooks.source.pet.read_db();
+ HPMHooks.source.pet.read_db();
}
- if( HPMHooks.count.HP_pet_read_db_post ) {
- int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_pet_read_db_post; hIndex++ ) {
+ if (HPMHooks.count.HP_pet_read_db_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_read_db_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_read_db_post[hIndex].func;
- retVal___ = postHookFunc(retVal___);
+ postHookFunc();
+ }
+ }
+ return;
+}
+int HP_pet_read_db_libconfig(const char *filename, bool ignore_missing) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_pet_read_db_libconfig_pre > 0) {
+ int (*preHookFunc) (const char **filename, bool *ignore_missing);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_read_db_libconfig_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pet_read_db_libconfig_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &ignore_missing);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.pet.read_db_libconfig(filename, ignore_missing);
+ }
+ if (HPMHooks.count.HP_pet_read_db_libconfig_post > 0) {
+ int (*postHookFunc) (int retVal___, const char *filename, bool ignore_missing);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_read_db_libconfig_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pet_read_db_libconfig_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, ignore_missing);
+ }
+ }
+ return retVal___;
+}
+int HP_pet_read_db_sub(struct config_setting_t *it, int n, const char *source) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_pet_read_db_sub_pre > 0) {
+ int (*preHookFunc) (struct config_setting_t **it, int *n, const char **source);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_read_db_sub_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pet_read_db_sub_pre[hIndex].func;
+ retVal___ = preHookFunc(&it, &n, &source);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.pet.read_db_sub(it, n, source);
+ }
+ if (HPMHooks.count.HP_pet_read_db_sub_post > 0) {
+ int (*postHookFunc) (int retVal___, struct config_setting_t *it, int n, const char *source);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_read_db_sub_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pet_read_db_sub_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, it, n, source);
}
}
return retVal___;
}
+bool HP_pet_read_db_sub_intimacy(int idx, struct config_setting_t *t) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_pet_read_db_sub_intimacy_pre > 0) {
+ bool (*preHookFunc) (int *idx, struct config_setting_t **t);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_read_db_sub_intimacy_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pet_read_db_sub_intimacy_pre[hIndex].func;
+ retVal___ = preHookFunc(&idx, &t);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.pet.read_db_sub_intimacy(idx, t);
+ }
+ if (HPMHooks.count.HP_pet_read_db_sub_intimacy_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int idx, struct config_setting_t *t);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_read_db_sub_intimacy_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pet_read_db_sub_intimacy_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, idx, t);
+ }
+ }
+ return retVal___;
+}
+void HP_pet_read_db_clear(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_pet_read_db_clear_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_read_db_clear_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pet_read_db_clear_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.pet.read_db_clear();
+ }
+ if (HPMHooks.count.HP_pet_read_db_clear_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_read_db_clear_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pet_read_db_clear_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+void HP_pet_read_db_sub_evolution(struct config_setting_t *t, int n) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_pet_read_db_sub_evolution_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **t, int *n);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_read_db_sub_evolution_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pet_read_db_sub_evolution_pre[hIndex].func;
+ preHookFunc(&t, &n);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.pet.read_db_sub_evolution(t, n);
+ }
+ if (HPMHooks.count.HP_pet_read_db_sub_evolution_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *t, int n);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_read_db_sub_evolution_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pet_read_db_sub_evolution_post[hIndex].func;
+ postHookFunc(t, n);
+ }
+ }
+ return;
+}
/* quest_interface */
void HP_quest_init(bool minimal) {
int hIndex = 0;
- if( HPMHooks.count.HP_quest_init_pre ) {
+ if (HPMHooks.count.HP_quest_init_pre > 0) {
void (*preHookFunc) (bool *minimal);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_quest_init_pre[hIndex].func;
preHookFunc(&minimal);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -59972,9 +66815,9 @@ void HP_quest_init(bool minimal) {
{
HPMHooks.source.quest.init(minimal);
}
- if( HPMHooks.count.HP_quest_init_post ) {
+ if (HPMHooks.count.HP_quest_init_post > 0) {
void (*postHookFunc) (bool minimal);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_quest_init_post[hIndex].func;
postHookFunc(minimal);
}
@@ -59983,14 +66826,14 @@ void HP_quest_init(bool minimal) {
}
void HP_quest_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_quest_final_pre ) {
+ if (HPMHooks.count.HP_quest_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_quest_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -59998,9 +66841,9 @@ void HP_quest_final(void) {
{
HPMHooks.source.quest.final();
}
- if( HPMHooks.count.HP_quest_final_post ) {
+ if (HPMHooks.count.HP_quest_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_quest_final_post[hIndex].func;
postHookFunc();
}
@@ -60009,14 +66852,14 @@ void HP_quest_final(void) {
}
void HP_quest_reload(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_quest_reload_pre ) {
+ if (HPMHooks.count.HP_quest_reload_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_reload_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_reload_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_quest_reload_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -60024,9 +66867,9 @@ void HP_quest_reload(void) {
{
HPMHooks.source.quest.reload();
}
- if( HPMHooks.count.HP_quest_reload_post ) {
+ if (HPMHooks.count.HP_quest_reload_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_reload_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_reload_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_quest_reload_post[hIndex].func;
postHookFunc();
}
@@ -60036,14 +66879,14 @@ void HP_quest_reload(void) {
struct quest_db* HP_quest_db(int quest_id) {
int hIndex = 0;
struct quest_db* retVal___ = NULL;
- if( HPMHooks.count.HP_quest_db_pre ) {
+ if (HPMHooks.count.HP_quest_db_pre > 0) {
struct quest_db* (*preHookFunc) (int *quest_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_db_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_db_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_quest_db_pre[hIndex].func;
retVal___ = preHookFunc(&quest_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -60051,9 +66894,9 @@ struct quest_db* HP_quest_db(int quest_id) {
{
retVal___ = HPMHooks.source.quest.db(quest_id);
}
- if( HPMHooks.count.HP_quest_db_post ) {
+ if (HPMHooks.count.HP_quest_db_post > 0) {
struct quest_db* (*postHookFunc) (struct quest_db* retVal___, int quest_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_db_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_db_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_quest_db_post[hIndex].func;
retVal___ = postHookFunc(retVal___, quest_id);
}
@@ -60063,14 +66906,14 @@ struct quest_db* HP_quest_db(int quest_id) {
int HP_quest_pc_login(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_quest_pc_login_pre ) {
+ if (HPMHooks.count.HP_quest_pc_login_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_pc_login_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_pc_login_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_quest_pc_login_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -60078,38 +66921,38 @@ int HP_quest_pc_login(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.quest.pc_login(sd);
}
- if( HPMHooks.count.HP_quest_pc_login_post ) {
+ if (HPMHooks.count.HP_quest_pc_login_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_pc_login_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_pc_login_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_quest_pc_login_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
}
return retVal___;
}
-int HP_quest_add(struct map_session_data *sd, int quest_id) {
+int HP_quest_add(struct map_session_data *sd, int quest_id, unsigned int time_limit) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_quest_add_pre ) {
- int (*preHookFunc) (struct map_session_data **sd, int *quest_id);
+ if (HPMHooks.count.HP_quest_add_pre > 0) {
+ int (*preHookFunc) (struct map_session_data **sd, int *quest_id, unsigned int *time_limit);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_add_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_add_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_quest_add_pre[hIndex].func;
- retVal___ = preHookFunc(&sd, &quest_id);
+ retVal___ = preHookFunc(&sd, &quest_id, &time_limit);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
}
{
- retVal___ = HPMHooks.source.quest.add(sd, quest_id);
+ retVal___ = HPMHooks.source.quest.add(sd, quest_id, time_limit);
}
- if( HPMHooks.count.HP_quest_add_post ) {
- int (*postHookFunc) (int retVal___, struct map_session_data *sd, int quest_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_add_post; hIndex++ ) {
+ if (HPMHooks.count.HP_quest_add_post > 0) {
+ int (*postHookFunc) (int retVal___, struct map_session_data *sd, int quest_id, unsigned int time_limit);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_add_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_quest_add_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, sd, quest_id);
+ retVal___ = postHookFunc(retVal___, sd, quest_id, time_limit);
}
}
return retVal___;
@@ -60117,14 +66960,14 @@ int HP_quest_add(struct map_session_data *sd, int quest_id) {
int HP_quest_change(struct map_session_data *sd, int qid1, int qid2) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_quest_change_pre ) {
+ if (HPMHooks.count.HP_quest_change_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *qid1, int *qid2);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_change_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_change_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_quest_change_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &qid1, &qid2);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -60132,9 +66975,9 @@ int HP_quest_change(struct map_session_data *sd, int qid1, int qid2) {
{
retVal___ = HPMHooks.source.quest.change(sd, qid1, qid2);
}
- if( HPMHooks.count.HP_quest_change_post ) {
+ if (HPMHooks.count.HP_quest_change_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int qid1, int qid2);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_change_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_change_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_quest_change_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, qid1, qid2);
}
@@ -60144,14 +66987,14 @@ int HP_quest_change(struct map_session_data *sd, int qid1, int qid2) {
int HP_quest_delete(struct map_session_data *sd, int quest_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_quest_delete_pre ) {
+ if (HPMHooks.count.HP_quest_delete_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *quest_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_quest_delete_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &quest_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -60159,9 +67002,9 @@ int HP_quest_delete(struct map_session_data *sd, int quest_id) {
{
retVal___ = HPMHooks.source.quest.delete(sd, quest_id);
}
- if( HPMHooks.count.HP_quest_delete_post ) {
+ if (HPMHooks.count.HP_quest_delete_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int quest_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_quest_delete_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, quest_id);
}
@@ -60171,16 +67014,16 @@ int HP_quest_delete(struct map_session_data *sd, int quest_id) {
int HP_quest_update_objective_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_quest_update_objective_sub_pre ) {
+ if (HPMHooks.count.HP_quest_update_objective_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_update_objective_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_update_objective_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_quest_update_objective_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -60190,9 +67033,9 @@ int HP_quest_update_objective_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.quest.update_objective_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_quest_update_objective_sub_post ) {
+ if (HPMHooks.count.HP_quest_update_objective_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_update_objective_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_update_objective_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_quest_update_objective_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -60203,14 +67046,14 @@ int HP_quest_update_objective_sub(struct block_list *bl, va_list ap) {
}
void HP_quest_update_objective(struct map_session_data *sd, int mob_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_quest_update_objective_pre ) {
+ if (HPMHooks.count.HP_quest_update_objective_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *mob_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_update_objective_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_update_objective_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_quest_update_objective_pre[hIndex].func;
preHookFunc(&sd, &mob_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -60218,9 +67061,9 @@ void HP_quest_update_objective(struct map_session_data *sd, int mob_id) {
{
HPMHooks.source.quest.update_objective(sd, mob_id);
}
- if( HPMHooks.count.HP_quest_update_objective_post ) {
+ if (HPMHooks.count.HP_quest_update_objective_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int mob_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_update_objective_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_update_objective_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_quest_update_objective_post[hIndex].func;
postHookFunc(sd, mob_id);
}
@@ -60230,14 +67073,14 @@ void HP_quest_update_objective(struct map_session_data *sd, int mob_id) {
int HP_quest_update_status(struct map_session_data *sd, int quest_id, enum quest_state qs) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_quest_update_status_pre ) {
+ if (HPMHooks.count.HP_quest_update_status_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *quest_id, enum quest_state *qs);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_update_status_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_update_status_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_quest_update_status_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &quest_id, &qs);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -60245,9 +67088,9 @@ int HP_quest_update_status(struct map_session_data *sd, int quest_id, enum quest
{
retVal___ = HPMHooks.source.quest.update_status(sd, quest_id, qs);
}
- if( HPMHooks.count.HP_quest_update_status_post ) {
+ if (HPMHooks.count.HP_quest_update_status_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int quest_id, enum quest_state qs);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_update_status_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_update_status_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_quest_update_status_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, quest_id, qs);
}
@@ -60257,14 +67100,14 @@ int HP_quest_update_status(struct map_session_data *sd, int quest_id, enum quest
int HP_quest_check(struct map_session_data *sd, int quest_id, enum quest_check_type type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_quest_check_pre ) {
+ if (HPMHooks.count.HP_quest_check_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *quest_id, enum quest_check_type *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_check_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_check_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_quest_check_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &quest_id, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -60272,9 +67115,9 @@ int HP_quest_check(struct map_session_data *sd, int quest_id, enum quest_check_t
{
retVal___ = HPMHooks.source.quest.check(sd, quest_id, type);
}
- if( HPMHooks.count.HP_quest_check_post ) {
+ if (HPMHooks.count.HP_quest_check_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int quest_id, enum quest_check_type type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_check_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_check_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_quest_check_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, quest_id, type);
}
@@ -60283,14 +67126,14 @@ int HP_quest_check(struct map_session_data *sd, int quest_id, enum quest_check_t
}
void HP_quest_clear(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_quest_clear_pre ) {
+ if (HPMHooks.count.HP_quest_clear_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_clear_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_clear_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_quest_clear_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -60298,9 +67141,9 @@ void HP_quest_clear(void) {
{
HPMHooks.source.quest.clear();
}
- if( HPMHooks.count.HP_quest_clear_post ) {
+ if (HPMHooks.count.HP_quest_clear_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_clear_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_clear_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_quest_clear_post[hIndex].func;
postHookFunc();
}
@@ -60310,14 +67153,14 @@ void HP_quest_clear(void) {
int HP_quest_read_db(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_quest_read_db_pre ) {
+ if (HPMHooks.count.HP_quest_read_db_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_read_db_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_read_db_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_quest_read_db_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -60325,9 +67168,9 @@ int HP_quest_read_db(void) {
{
retVal___ = HPMHooks.source.quest.read_db();
}
- if( HPMHooks.count.HP_quest_read_db_post ) {
+ if (HPMHooks.count.HP_quest_read_db_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_read_db_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_read_db_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_quest_read_db_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -60337,14 +67180,14 @@ int HP_quest_read_db(void) {
struct quest_db* HP_quest_read_db_sub(struct config_setting_t *cs, int n, const char *source) {
int hIndex = 0;
struct quest_db* retVal___ = NULL;
- if( HPMHooks.count.HP_quest_read_db_sub_pre ) {
+ if (HPMHooks.count.HP_quest_read_db_sub_pre > 0) {
struct quest_db* (*preHookFunc) (struct config_setting_t **cs, int *n, const char **source);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_read_db_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_read_db_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_quest_read_db_sub_pre[hIndex].func;
retVal___ = preHookFunc(&cs, &n, &source);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -60352,26 +67195,375 @@ struct quest_db* HP_quest_read_db_sub(struct config_setting_t *cs, int n, const
{
retVal___ = HPMHooks.source.quest.read_db_sub(cs, n, source);
}
- if( HPMHooks.count.HP_quest_read_db_sub_post ) {
+ if (HPMHooks.count.HP_quest_read_db_sub_post > 0) {
struct quest_db* (*postHookFunc) (struct quest_db* retVal___, struct config_setting_t *cs, int n, const char *source);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_read_db_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_read_db_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_quest_read_db_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, cs, n, source);
}
}
return retVal___;
}
+int HP_quest_questinfo_validate_icon(int icon) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_quest_questinfo_validate_icon_pre > 0) {
+ int (*preHookFunc) (int *icon);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_questinfo_validate_icon_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_quest_questinfo_validate_icon_pre[hIndex].func;
+ retVal___ = preHookFunc(&icon);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.quest.questinfo_validate_icon(icon);
+ }
+ if (HPMHooks.count.HP_quest_questinfo_validate_icon_post > 0) {
+ int (*postHookFunc) (int retVal___, int icon);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_questinfo_validate_icon_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_quest_questinfo_validate_icon_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, icon);
+ }
+ }
+ return retVal___;
+}
+void HP_quest_questinfo_refresh(struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_quest_questinfo_refresh_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_questinfo_refresh_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_quest_questinfo_refresh_pre[hIndex].func;
+ preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.quest.questinfo_refresh(sd);
+ }
+ if (HPMHooks.count.HP_quest_questinfo_refresh_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_questinfo_refresh_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_quest_questinfo_refresh_post[hIndex].func;
+ postHookFunc(sd);
+ }
+ }
+ return;
+}
+bool HP_quest_questinfo_validate(struct map_session_data *sd, struct questinfo *qi) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_quest_questinfo_validate_pre > 0) {
+ bool (*preHookFunc) (struct map_session_data **sd, struct questinfo **qi);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_questinfo_validate_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_quest_questinfo_validate_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &qi);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.quest.questinfo_validate(sd, qi);
+ }
+ if (HPMHooks.count.HP_quest_questinfo_validate_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, struct questinfo *qi);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_questinfo_validate_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_quest_questinfo_validate_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, qi);
+ }
+ }
+ return retVal___;
+}
+bool HP_quest_questinfo_validate_job(struct map_session_data *sd, struct questinfo *qi) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_quest_questinfo_validate_job_pre > 0) {
+ bool (*preHookFunc) (struct map_session_data **sd, struct questinfo **qi);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_questinfo_validate_job_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_quest_questinfo_validate_job_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &qi);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.quest.questinfo_validate_job(sd, qi);
+ }
+ if (HPMHooks.count.HP_quest_questinfo_validate_job_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, struct questinfo *qi);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_questinfo_validate_job_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_quest_questinfo_validate_job_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, qi);
+ }
+ }
+ return retVal___;
+}
+bool HP_quest_questinfo_validate_sex(struct map_session_data *sd, struct questinfo *qi) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_quest_questinfo_validate_sex_pre > 0) {
+ bool (*preHookFunc) (struct map_session_data **sd, struct questinfo **qi);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_questinfo_validate_sex_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_quest_questinfo_validate_sex_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &qi);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.quest.questinfo_validate_sex(sd, qi);
+ }
+ if (HPMHooks.count.HP_quest_questinfo_validate_sex_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, struct questinfo *qi);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_questinfo_validate_sex_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_quest_questinfo_validate_sex_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, qi);
+ }
+ }
+ return retVal___;
+}
+bool HP_quest_questinfo_validate_baselevel(struct map_session_data *sd, struct questinfo *qi) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_quest_questinfo_validate_baselevel_pre > 0) {
+ bool (*preHookFunc) (struct map_session_data **sd, struct questinfo **qi);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_questinfo_validate_baselevel_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_quest_questinfo_validate_baselevel_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &qi);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.quest.questinfo_validate_baselevel(sd, qi);
+ }
+ if (HPMHooks.count.HP_quest_questinfo_validate_baselevel_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, struct questinfo *qi);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_questinfo_validate_baselevel_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_quest_questinfo_validate_baselevel_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, qi);
+ }
+ }
+ return retVal___;
+}
+bool HP_quest_questinfo_validate_joblevel(struct map_session_data *sd, struct questinfo *qi) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_quest_questinfo_validate_joblevel_pre > 0) {
+ bool (*preHookFunc) (struct map_session_data **sd, struct questinfo **qi);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_questinfo_validate_joblevel_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_quest_questinfo_validate_joblevel_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &qi);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.quest.questinfo_validate_joblevel(sd, qi);
+ }
+ if (HPMHooks.count.HP_quest_questinfo_validate_joblevel_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, struct questinfo *qi);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_questinfo_validate_joblevel_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_quest_questinfo_validate_joblevel_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, qi);
+ }
+ }
+ return retVal___;
+}
+bool HP_quest_questinfo_validate_items(struct map_session_data *sd, struct questinfo *qi) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_quest_questinfo_validate_items_pre > 0) {
+ bool (*preHookFunc) (struct map_session_data **sd, struct questinfo **qi);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_questinfo_validate_items_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_quest_questinfo_validate_items_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &qi);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.quest.questinfo_validate_items(sd, qi);
+ }
+ if (HPMHooks.count.HP_quest_questinfo_validate_items_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, struct questinfo *qi);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_questinfo_validate_items_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_quest_questinfo_validate_items_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, qi);
+ }
+ }
+ return retVal___;
+}
+bool HP_quest_questinfo_validate_homunculus_level(struct map_session_data *sd, struct questinfo *qi) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_quest_questinfo_validate_homunculus_level_pre > 0) {
+ bool (*preHookFunc) (struct map_session_data **sd, struct questinfo **qi);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_questinfo_validate_homunculus_level_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_quest_questinfo_validate_homunculus_level_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &qi);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.quest.questinfo_validate_homunculus_level(sd, qi);
+ }
+ if (HPMHooks.count.HP_quest_questinfo_validate_homunculus_level_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, struct questinfo *qi);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_questinfo_validate_homunculus_level_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_quest_questinfo_validate_homunculus_level_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, qi);
+ }
+ }
+ return retVal___;
+}
+bool HP_quest_questinfo_validate_homunculus_type(struct map_session_data *sd, struct questinfo *qi) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_quest_questinfo_validate_homunculus_type_pre > 0) {
+ bool (*preHookFunc) (struct map_session_data **sd, struct questinfo **qi);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_questinfo_validate_homunculus_type_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_quest_questinfo_validate_homunculus_type_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &qi);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.quest.questinfo_validate_homunculus_type(sd, qi);
+ }
+ if (HPMHooks.count.HP_quest_questinfo_validate_homunculus_type_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, struct questinfo *qi);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_questinfo_validate_homunculus_type_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_quest_questinfo_validate_homunculus_type_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, qi);
+ }
+ }
+ return retVal___;
+}
+bool HP_quest_questinfo_validate_quests(struct map_session_data *sd, struct questinfo *qi) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_quest_questinfo_validate_quests_pre > 0) {
+ bool (*preHookFunc) (struct map_session_data **sd, struct questinfo **qi);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_questinfo_validate_quests_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_quest_questinfo_validate_quests_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &qi);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.quest.questinfo_validate_quests(sd, qi);
+ }
+ if (HPMHooks.count.HP_quest_questinfo_validate_quests_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, struct questinfo *qi);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_questinfo_validate_quests_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_quest_questinfo_validate_quests_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, qi);
+ }
+ }
+ return retVal___;
+}
+bool HP_quest_questinfo_validate_mercenary_class(struct map_session_data *sd, struct questinfo *qi) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_quest_questinfo_validate_mercenary_class_pre > 0) {
+ bool (*preHookFunc) (struct map_session_data **sd, struct questinfo **qi);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_questinfo_validate_mercenary_class_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_quest_questinfo_validate_mercenary_class_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &qi);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.quest.questinfo_validate_mercenary_class(sd, qi);
+ }
+ if (HPMHooks.count.HP_quest_questinfo_validate_mercenary_class_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, struct questinfo *qi);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_questinfo_validate_mercenary_class_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_quest_questinfo_validate_mercenary_class_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, qi);
+ }
+ }
+ return retVal___;
+}
+void HP_quest_questinfo_vector_clear(int m) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_quest_questinfo_vector_clear_pre > 0) {
+ void (*preHookFunc) (int *m);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_questinfo_vector_clear_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_quest_questinfo_vector_clear_pre[hIndex].func;
+ preHookFunc(&m);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.quest.questinfo_vector_clear(m);
+ }
+ if (HPMHooks.count.HP_quest_questinfo_vector_clear_post > 0) {
+ void (*postHookFunc) (int m);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_quest_questinfo_vector_clear_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_quest_questinfo_vector_clear_post[hIndex].func;
+ postHookFunc(m);
+ }
+ }
+ return;
+}
/* rnd_interface */
void HP_rnd_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_rnd_init_pre ) {
+ if (HPMHooks.count.HP_rnd_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_rnd_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -60379,9 +67571,9 @@ void HP_rnd_init(void) {
{
HPMHooks.source.rnd.init();
}
- if( HPMHooks.count.HP_rnd_init_post ) {
+ if (HPMHooks.count.HP_rnd_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_rnd_init_post[hIndex].func;
postHookFunc();
}
@@ -60390,14 +67582,14 @@ void HP_rnd_init(void) {
}
void HP_rnd_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_rnd_final_pre ) {
+ if (HPMHooks.count.HP_rnd_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_rnd_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -60405,9 +67597,9 @@ void HP_rnd_final(void) {
{
HPMHooks.source.rnd.final();
}
- if( HPMHooks.count.HP_rnd_final_post ) {
+ if (HPMHooks.count.HP_rnd_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_rnd_final_post[hIndex].func;
postHookFunc();
}
@@ -60416,14 +67608,14 @@ void HP_rnd_final(void) {
}
void HP_rnd_seed(uint32 seed) {
int hIndex = 0;
- if( HPMHooks.count.HP_rnd_seed_pre ) {
+ if (HPMHooks.count.HP_rnd_seed_pre > 0) {
void (*preHookFunc) (uint32 *seed);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_seed_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_seed_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_rnd_seed_pre[hIndex].func;
preHookFunc(&seed);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -60431,9 +67623,9 @@ void HP_rnd_seed(uint32 seed) {
{
HPMHooks.source.rnd.seed(seed);
}
- if( HPMHooks.count.HP_rnd_seed_post ) {
+ if (HPMHooks.count.HP_rnd_seed_post > 0) {
void (*postHookFunc) (uint32 seed);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_seed_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_seed_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_rnd_seed_post[hIndex].func;
postHookFunc(seed);
}
@@ -60443,14 +67635,14 @@ void HP_rnd_seed(uint32 seed) {
int32 HP_rnd_random(void) {
int hIndex = 0;
int32 retVal___ = 0;
- if( HPMHooks.count.HP_rnd_random_pre ) {
+ if (HPMHooks.count.HP_rnd_random_pre > 0) {
int32 (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_random_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_random_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_rnd_random_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -60458,9 +67650,9 @@ int32 HP_rnd_random(void) {
{
retVal___ = HPMHooks.source.rnd.random();
}
- if( HPMHooks.count.HP_rnd_random_post ) {
+ if (HPMHooks.count.HP_rnd_random_post > 0) {
int32 (*postHookFunc) (int32 retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_random_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_random_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_rnd_random_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -60470,14 +67662,14 @@ int32 HP_rnd_random(void) {
uint32 HP_rnd_roll(uint32 dice_faces) {
int hIndex = 0;
uint32 retVal___ = 0;
- if( HPMHooks.count.HP_rnd_roll_pre ) {
+ if (HPMHooks.count.HP_rnd_roll_pre > 0) {
uint32 (*preHookFunc) (uint32 *dice_faces);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_roll_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_roll_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_rnd_roll_pre[hIndex].func;
retVal___ = preHookFunc(&dice_faces);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -60485,9 +67677,9 @@ uint32 HP_rnd_roll(uint32 dice_faces) {
{
retVal___ = HPMHooks.source.rnd.roll(dice_faces);
}
- if( HPMHooks.count.HP_rnd_roll_post ) {
+ if (HPMHooks.count.HP_rnd_roll_post > 0) {
uint32 (*postHookFunc) (uint32 retVal___, uint32 dice_faces);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_roll_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_roll_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_rnd_roll_post[hIndex].func;
retVal___ = postHookFunc(retVal___, dice_faces);
}
@@ -60497,14 +67689,14 @@ uint32 HP_rnd_roll(uint32 dice_faces) {
int32 HP_rnd_value(int32 min, int32 max) {
int hIndex = 0;
int32 retVal___ = 0;
- if( HPMHooks.count.HP_rnd_value_pre ) {
+ if (HPMHooks.count.HP_rnd_value_pre > 0) {
int32 (*preHookFunc) (int32 *min, int32 *max);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_value_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_value_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_rnd_value_pre[hIndex].func;
retVal___ = preHookFunc(&min, &max);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -60512,9 +67704,9 @@ int32 HP_rnd_value(int32 min, int32 max) {
{
retVal___ = HPMHooks.source.rnd.value(min, max);
}
- if( HPMHooks.count.HP_rnd_value_post ) {
+ if (HPMHooks.count.HP_rnd_value_post > 0) {
int32 (*postHookFunc) (int32 retVal___, int32 min, int32 max);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_value_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_value_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_rnd_value_post[hIndex].func;
retVal___ = postHookFunc(retVal___, min, max);
}
@@ -60524,14 +67716,14 @@ int32 HP_rnd_value(int32 min, int32 max) {
double HP_rnd_uniform(void) {
int hIndex = 0;
double retVal___ = 0.;
- if( HPMHooks.count.HP_rnd_uniform_pre ) {
+ if (HPMHooks.count.HP_rnd_uniform_pre > 0) {
double (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_uniform_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_uniform_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_rnd_uniform_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -60539,9 +67731,9 @@ double HP_rnd_uniform(void) {
{
retVal___ = HPMHooks.source.rnd.uniform();
}
- if( HPMHooks.count.HP_rnd_uniform_post ) {
+ if (HPMHooks.count.HP_rnd_uniform_post > 0) {
double (*postHookFunc) (double retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_uniform_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_uniform_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_rnd_uniform_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -60551,14 +67743,14 @@ double HP_rnd_uniform(void) {
double HP_rnd_uniform53(void) {
int hIndex = 0;
double retVal___ = 0.;
- if( HPMHooks.count.HP_rnd_uniform53_pre ) {
+ if (HPMHooks.count.HP_rnd_uniform53_pre > 0) {
double (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_uniform53_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_uniform53_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_rnd_uniform53_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -60566,26 +67758,472 @@ double HP_rnd_uniform53(void) {
{
retVal___ = HPMHooks.source.rnd.uniform53();
}
- if( HPMHooks.count.HP_rnd_uniform53_post ) {
+ if (HPMHooks.count.HP_rnd_uniform53_post > 0) {
double (*postHookFunc) (double retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_rnd_uniform53_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rnd_uniform53_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_rnd_uniform53_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
}
return retVal___;
}
+/* rodex_interface */
+void HP_rodex_init(bool minimal) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_rodex_init_pre > 0) {
+ void (*preHookFunc) (bool *minimal);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_init_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_rodex_init_pre[hIndex].func;
+ preHookFunc(&minimal);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.rodex.init(minimal);
+ }
+ if (HPMHooks.count.HP_rodex_init_post > 0) {
+ void (*postHookFunc) (bool minimal);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_init_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_rodex_init_post[hIndex].func;
+ postHookFunc(minimal);
+ }
+ }
+ return;
+}
+void HP_rodex_final(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_rodex_final_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_final_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_rodex_final_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.rodex.final();
+ }
+ if (HPMHooks.count.HP_rodex_final_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_final_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_rodex_final_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+bool HP_rodex_isenabled(void) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_rodex_isenabled_pre > 0) {
+ bool (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_isenabled_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_rodex_isenabled_pre[hIndex].func;
+ retVal___ = preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.rodex.isenabled();
+ }
+ if (HPMHooks.count.HP_rodex_isenabled_post > 0) {
+ bool (*postHookFunc) (bool retVal___);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_isenabled_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_rodex_isenabled_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___);
+ }
+ }
+ return retVal___;
+}
+void HP_rodex_open(struct map_session_data *sd, int8 open_type, int64 first_mail_id) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_rodex_open_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int8 *open_type, int64 *first_mail_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_open_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_rodex_open_pre[hIndex].func;
+ preHookFunc(&sd, &open_type, &first_mail_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.rodex.open(sd, open_type, first_mail_id);
+ }
+ if (HPMHooks.count.HP_rodex_open_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int8 open_type, int64 first_mail_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_open_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_rodex_open_post[hIndex].func;
+ postHookFunc(sd, open_type, first_mail_id);
+ }
+ }
+ return;
+}
+void HP_rodex_next_page(struct map_session_data *sd, int8 open_type, int64 last_mail_id) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_rodex_next_page_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int8 *open_type, int64 *last_mail_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_next_page_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_rodex_next_page_pre[hIndex].func;
+ preHookFunc(&sd, &open_type, &last_mail_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.rodex.next_page(sd, open_type, last_mail_id);
+ }
+ if (HPMHooks.count.HP_rodex_next_page_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int8 open_type, int64 last_mail_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_next_page_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_rodex_next_page_post[hIndex].func;
+ postHookFunc(sd, open_type, last_mail_id);
+ }
+ }
+ return;
+}
+void HP_rodex_refresh(struct map_session_data *sd, int8 open_type, int64 first_mail_id) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_rodex_refresh_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int8 *open_type, int64 *first_mail_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_refresh_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_rodex_refresh_pre[hIndex].func;
+ preHookFunc(&sd, &open_type, &first_mail_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.rodex.refresh(sd, open_type, first_mail_id);
+ }
+ if (HPMHooks.count.HP_rodex_refresh_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int8 open_type, int64 first_mail_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_refresh_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_rodex_refresh_post[hIndex].func;
+ postHookFunc(sd, open_type, first_mail_id);
+ }
+ }
+ return;
+}
+void HP_rodex_add_item(struct map_session_data *sd, int16 idx, int16 amount) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_rodex_add_item_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int16 *idx, int16 *amount);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_add_item_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_rodex_add_item_pre[hIndex].func;
+ preHookFunc(&sd, &idx, &amount);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.rodex.add_item(sd, idx, amount);
+ }
+ if (HPMHooks.count.HP_rodex_add_item_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int16 idx, int16 amount);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_add_item_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_rodex_add_item_post[hIndex].func;
+ postHookFunc(sd, idx, amount);
+ }
+ }
+ return;
+}
+void HP_rodex_remove_item(struct map_session_data *sd, int16 idx, int16 amount) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_rodex_remove_item_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int16 *idx, int16 *amount);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_remove_item_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_rodex_remove_item_pre[hIndex].func;
+ preHookFunc(&sd, &idx, &amount);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.rodex.remove_item(sd, idx, amount);
+ }
+ if (HPMHooks.count.HP_rodex_remove_item_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int16 idx, int16 amount);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_remove_item_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_rodex_remove_item_post[hIndex].func;
+ postHookFunc(sd, idx, amount);
+ }
+ }
+ return;
+}
+void HP_rodex_check_player(struct map_session_data *sd, const char *name, int *base_level, int *char_id, short *class) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_rodex_check_player_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, const char **name, int **base_level, int **char_id, short **class);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_check_player_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_rodex_check_player_pre[hIndex].func;
+ preHookFunc(&sd, &name, &base_level, &char_id, &class);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.rodex.check_player(sd, name, base_level, char_id, class);
+ }
+ if (HPMHooks.count.HP_rodex_check_player_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, const char *name, int *base_level, int *char_id, short *class);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_check_player_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_rodex_check_player_post[hIndex].func;
+ postHookFunc(sd, name, base_level, char_id, class);
+ }
+ }
+ return;
+}
+int HP_rodex_send_mail(struct map_session_data *sd, const char *receiver_name, const char *body, const char *title, int64 zeny) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_rodex_send_mail_pre > 0) {
+ int (*preHookFunc) (struct map_session_data **sd, const char **receiver_name, const char **body, const char **title, int64 *zeny);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_send_mail_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_rodex_send_mail_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &receiver_name, &body, &title, &zeny);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.rodex.send_mail(sd, receiver_name, body, title, zeny);
+ }
+ if (HPMHooks.count.HP_rodex_send_mail_post > 0) {
+ int (*postHookFunc) (int retVal___, struct map_session_data *sd, const char *receiver_name, const char *body, const char *title, int64 zeny);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_send_mail_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_rodex_send_mail_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, receiver_name, body, title, zeny);
+ }
+ }
+ return retVal___;
+}
+void HP_rodex_send_mail_result(struct map_session_data *ssd, struct map_session_data *rsd, bool result) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_rodex_send_mail_result_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **ssd, struct map_session_data **rsd, bool *result);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_send_mail_result_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_rodex_send_mail_result_pre[hIndex].func;
+ preHookFunc(&ssd, &rsd, &result);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.rodex.send_mail_result(ssd, rsd, result);
+ }
+ if (HPMHooks.count.HP_rodex_send_mail_result_post > 0) {
+ void (*postHookFunc) (struct map_session_data *ssd, struct map_session_data *rsd, bool result);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_send_mail_result_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_rodex_send_mail_result_post[hIndex].func;
+ postHookFunc(ssd, rsd, result);
+ }
+ }
+ return;
+}
+struct rodex_message* HP_rodex_get_mail(struct map_session_data *sd, int64 mail_id) {
+ int hIndex = 0;
+ struct rodex_message* retVal___ = NULL;
+ if (HPMHooks.count.HP_rodex_get_mail_pre > 0) {
+ struct rodex_message* (*preHookFunc) (struct map_session_data **sd, int64 *mail_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_get_mail_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_rodex_get_mail_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &mail_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.rodex.get_mail(sd, mail_id);
+ }
+ if (HPMHooks.count.HP_rodex_get_mail_post > 0) {
+ struct rodex_message* (*postHookFunc) (struct rodex_message* retVal___, struct map_session_data *sd, int64 mail_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_get_mail_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_rodex_get_mail_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, mail_id);
+ }
+ }
+ return retVal___;
+}
+void HP_rodex_read_mail(struct map_session_data *sd, int64 mail_id) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_rodex_read_mail_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int64 *mail_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_read_mail_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_rodex_read_mail_pre[hIndex].func;
+ preHookFunc(&sd, &mail_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.rodex.read_mail(sd, mail_id);
+ }
+ if (HPMHooks.count.HP_rodex_read_mail_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int64 mail_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_read_mail_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_rodex_read_mail_post[hIndex].func;
+ postHookFunc(sd, mail_id);
+ }
+ }
+ return;
+}
+void HP_rodex_get_zeny(struct map_session_data *sd, int8 opentype, int64 mail_id) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_rodex_get_zeny_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int8 *opentype, int64 *mail_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_get_zeny_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_rodex_get_zeny_pre[hIndex].func;
+ preHookFunc(&sd, &opentype, &mail_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.rodex.get_zeny(sd, opentype, mail_id);
+ }
+ if (HPMHooks.count.HP_rodex_get_zeny_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int8 opentype, int64 mail_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_get_zeny_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_rodex_get_zeny_post[hIndex].func;
+ postHookFunc(sd, opentype, mail_id);
+ }
+ }
+ return;
+}
+void HP_rodex_get_items(struct map_session_data *sd, int8 opentype, int64 mail_id) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_rodex_get_items_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int8 *opentype, int64 *mail_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_get_items_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_rodex_get_items_pre[hIndex].func;
+ preHookFunc(&sd, &opentype, &mail_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.rodex.get_items(sd, opentype, mail_id);
+ }
+ if (HPMHooks.count.HP_rodex_get_items_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int8 opentype, int64 mail_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_get_items_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_rodex_get_items_post[hIndex].func;
+ postHookFunc(sd, opentype, mail_id);
+ }
+ }
+ return;
+}
+void HP_rodex_delete_mail(struct map_session_data *sd, int64 mail_id) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_rodex_delete_mail_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int64 *mail_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_delete_mail_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_rodex_delete_mail_pre[hIndex].func;
+ preHookFunc(&sd, &mail_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.rodex.delete_mail(sd, mail_id);
+ }
+ if (HPMHooks.count.HP_rodex_delete_mail_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int64 mail_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_delete_mail_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_rodex_delete_mail_post[hIndex].func;
+ postHookFunc(sd, mail_id);
+ }
+ }
+ return;
+}
+void HP_rodex_clean(struct map_session_data *sd, int8 flag) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_rodex_clean_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int8 *flag);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_clean_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_rodex_clean_pre[hIndex].func;
+ preHookFunc(&sd, &flag);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.rodex.clean(sd, flag);
+ }
+ if (HPMHooks.count.HP_rodex_clean_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int8 flag);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_clean_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_rodex_clean_post[hIndex].func;
+ postHookFunc(sd, flag);
+ }
+ }
+ return;
+}
/* script_interface */
void HP_script_init(bool minimal) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_init_pre ) {
+ if (HPMHooks.count.HP_script_init_pre > 0) {
void (*preHookFunc) (bool *minimal);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_init_pre[hIndex].func;
preHookFunc(&minimal);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -60593,9 +68231,9 @@ void HP_script_init(bool minimal) {
{
HPMHooks.source.script.init(minimal);
}
- if( HPMHooks.count.HP_script_init_post ) {
+ if (HPMHooks.count.HP_script_init_post > 0) {
void (*postHookFunc) (bool minimal);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_init_post[hIndex].func;
postHookFunc(minimal);
}
@@ -60604,14 +68242,14 @@ void HP_script_init(bool minimal) {
}
void HP_script_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_final_pre ) {
+ if (HPMHooks.count.HP_script_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -60619,9 +68257,9 @@ void HP_script_final(void) {
{
HPMHooks.source.script.final();
}
- if( HPMHooks.count.HP_script_final_post ) {
+ if (HPMHooks.count.HP_script_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_final_post[hIndex].func;
postHookFunc();
}
@@ -60631,14 +68269,14 @@ void HP_script_final(void) {
int HP_script_reload(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_reload_pre ) {
+ if (HPMHooks.count.HP_script_reload_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_reload_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_reload_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_reload_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -60646,9 +68284,9 @@ int HP_script_reload(void) {
{
retVal___ = HPMHooks.source.script.reload();
}
- if( HPMHooks.count.HP_script_reload_post ) {
+ if (HPMHooks.count.HP_script_reload_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_reload_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_reload_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_reload_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -60658,14 +68296,14 @@ int HP_script_reload(void) {
struct script_code* HP_script_parse(const char *src, const char *file, int line, int options, int *retval) {
int hIndex = 0;
struct script_code* retVal___ = NULL;
- if( HPMHooks.count.HP_script_parse_pre ) {
+ if (HPMHooks.count.HP_script_parse_pre > 0) {
struct script_code* (*preHookFunc) (const char **src, const char **file, int *line, int *options, int **retval);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_parse_pre[hIndex].func;
retVal___ = preHookFunc(&src, &file, &line, &options, &retval);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -60673,9 +68311,9 @@ struct script_code* HP_script_parse(const char *src, const char *file, int line,
{
retVal___ = HPMHooks.source.script.parse(src, file, line, options, retval);
}
- if( HPMHooks.count.HP_script_parse_post ) {
+ if (HPMHooks.count.HP_script_parse_post > 0) {
struct script_code* (*postHookFunc) (struct script_code* retVal___, const char *src, const char *file, int line, int options, int *retval);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_parse_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, file, line, options, retval);
}
@@ -60685,14 +68323,14 @@ struct script_code* HP_script_parse(const char *src, const char *file, int line,
bool HP_script_add_builtin(const struct script_function *buildin, bool override) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_script_add_builtin_pre ) {
+ if (HPMHooks.count.HP_script_add_builtin_pre > 0) {
bool (*preHookFunc) (const struct script_function **buildin, bool *override);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_add_builtin_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_add_builtin_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_add_builtin_pre[hIndex].func;
retVal___ = preHookFunc(&buildin, &override);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -60700,9 +68338,9 @@ bool HP_script_add_builtin(const struct script_function *buildin, bool override)
{
retVal___ = HPMHooks.source.script.add_builtin(buildin, override);
}
- if( HPMHooks.count.HP_script_add_builtin_post ) {
+ if (HPMHooks.count.HP_script_add_builtin_post > 0) {
bool (*postHookFunc) (bool retVal___, const struct script_function *buildin, bool override);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_add_builtin_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_add_builtin_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_add_builtin_post[hIndex].func;
retVal___ = postHookFunc(retVal___, buildin, override);
}
@@ -60711,14 +68349,14 @@ bool HP_script_add_builtin(const struct script_function *buildin, bool override)
}
void HP_script_parse_builtin(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_parse_builtin_pre ) {
+ if (HPMHooks.count.HP_script_parse_builtin_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_builtin_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_builtin_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_parse_builtin_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -60726,9 +68364,9 @@ void HP_script_parse_builtin(void) {
{
HPMHooks.source.script.parse_builtin();
}
- if( HPMHooks.count.HP_script_parse_builtin_post ) {
+ if (HPMHooks.count.HP_script_parse_builtin_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_builtin_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_builtin_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_parse_builtin_post[hIndex].func;
postHookFunc();
}
@@ -60738,14 +68376,14 @@ void HP_script_parse_builtin(void) {
const char* HP_script_parse_subexpr(const char *p, int limit) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_script_parse_subexpr_pre ) {
+ if (HPMHooks.count.HP_script_parse_subexpr_pre > 0) {
const char* (*preHookFunc) (const char **p, int *limit);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_subexpr_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_subexpr_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_parse_subexpr_pre[hIndex].func;
retVal___ = preHookFunc(&p, &limit);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -60753,9 +68391,9 @@ const char* HP_script_parse_subexpr(const char *p, int limit) {
{
retVal___ = HPMHooks.source.script.parse_subexpr(p, limit);
}
- if( HPMHooks.count.HP_script_parse_subexpr_post ) {
+ if (HPMHooks.count.HP_script_parse_subexpr_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *p, int limit);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_subexpr_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_subexpr_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_parse_subexpr_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p, limit);
}
@@ -60765,14 +68403,14 @@ const char* HP_script_parse_subexpr(const char *p, int limit) {
const char* HP_script_skip_space(const char *p) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_script_skip_space_pre ) {
+ if (HPMHooks.count.HP_script_skip_space_pre > 0) {
const char* (*preHookFunc) (const char **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_skip_space_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_skip_space_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_skip_space_pre[hIndex].func;
retVal___ = preHookFunc(&p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -60780,9 +68418,9 @@ const char* HP_script_skip_space(const char *p) {
{
retVal___ = HPMHooks.source.script.skip_space(p);
}
- if( HPMHooks.count.HP_script_skip_space_post ) {
+ if (HPMHooks.count.HP_script_skip_space_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_skip_space_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_skip_space_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_skip_space_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p);
}
@@ -60791,14 +68429,14 @@ const char* HP_script_skip_space(const char *p) {
}
void HP_script_error(const char *src, const char *file, int start_line, const char *error_msg, const char *error_pos) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_error_pre ) {
+ if (HPMHooks.count.HP_script_error_pre > 0) {
void (*preHookFunc) (const char **src, const char **file, int *start_line, const char **error_msg, const char **error_pos);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_error_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_error_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_error_pre[hIndex].func;
preHookFunc(&src, &file, &start_line, &error_msg, &error_pos);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -60806,9 +68444,9 @@ void HP_script_error(const char *src, const char *file, int start_line, const ch
{
HPMHooks.source.script.error(src, file, start_line, error_msg, error_pos);
}
- if( HPMHooks.count.HP_script_error_post ) {
+ if (HPMHooks.count.HP_script_error_post > 0) {
void (*postHookFunc) (const char *src, const char *file, int start_line, const char *error_msg, const char *error_pos);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_error_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_error_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_error_post[hIndex].func;
postHookFunc(src, file, start_line, error_msg, error_pos);
}
@@ -60817,14 +68455,14 @@ void HP_script_error(const char *src, const char *file, int start_line, const ch
}
void HP_script_warning(const char *src, const char *file, int start_line, const char *error_msg, const char *error_pos) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_warning_pre ) {
+ if (HPMHooks.count.HP_script_warning_pre > 0) {
void (*preHookFunc) (const char **src, const char **file, int *start_line, const char **error_msg, const char **error_pos);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_warning_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_warning_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_warning_pre[hIndex].func;
preHookFunc(&src, &file, &start_line, &error_msg, &error_pos);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -60832,9 +68470,9 @@ void HP_script_warning(const char *src, const char *file, int start_line, const
{
HPMHooks.source.script.warning(src, file, start_line, error_msg, error_pos);
}
- if( HPMHooks.count.HP_script_warning_post ) {
+ if (HPMHooks.count.HP_script_warning_post > 0) {
void (*postHookFunc) (const char *src, const char *file, int start_line, const char *error_msg, const char *error_pos);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_warning_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_warning_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_warning_post[hIndex].func;
postHookFunc(src, file, start_line, error_msg, error_pos);
}
@@ -60844,14 +68482,14 @@ void HP_script_warning(const char *src, const char *file, int start_line, const
bool HP_script_addScript(char *name, char *args, bool ( *func ) (struct script_state *st), bool isDeprecated) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_script_addScript_pre ) {
+ if (HPMHooks.count.HP_script_addScript_pre > 0) {
bool (*preHookFunc) (char **name, char **args, bool ( **func ) (struct script_state *st), bool *isDeprecated);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_addScript_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_addScript_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_addScript_pre[hIndex].func;
retVal___ = preHookFunc(&name, &args, &func, &isDeprecated);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -60859,9 +68497,9 @@ bool HP_script_addScript(char *name, char *args, bool ( *func ) (struct script_s
{
retVal___ = HPMHooks.source.script.addScript(name, args, func, isDeprecated);
}
- if( HPMHooks.count.HP_script_addScript_post ) {
+ if (HPMHooks.count.HP_script_addScript_post > 0) {
bool (*postHookFunc) (bool retVal___, char *name, char *args, bool ( *func ) (struct script_state *st), bool isDeprecated);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_addScript_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_addScript_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_addScript_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name, args, func, isDeprecated);
}
@@ -60871,14 +68509,14 @@ bool HP_script_addScript(char *name, char *args, bool ( *func ) (struct script_s
int HP_script_conv_num(struct script_state *st, struct script_data *data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_conv_num_pre ) {
+ if (HPMHooks.count.HP_script_conv_num_pre > 0) {
int (*preHookFunc) (struct script_state **st, struct script_data **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_conv_num_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_conv_num_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_conv_num_pre[hIndex].func;
retVal___ = preHookFunc(&st, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -60886,9 +68524,9 @@ int HP_script_conv_num(struct script_state *st, struct script_data *data) {
{
retVal___ = HPMHooks.source.script.conv_num(st, data);
}
- if( HPMHooks.count.HP_script_conv_num_post ) {
+ if (HPMHooks.count.HP_script_conv_num_post > 0) {
int (*postHookFunc) (int retVal___, struct script_state *st, struct script_data *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_conv_num_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_conv_num_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_conv_num_post[hIndex].func;
retVal___ = postHookFunc(retVal___, st, data);
}
@@ -60898,14 +68536,14 @@ int HP_script_conv_num(struct script_state *st, struct script_data *data) {
const char* HP_script_conv_str(struct script_state *st, struct script_data *data) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_script_conv_str_pre ) {
+ if (HPMHooks.count.HP_script_conv_str_pre > 0) {
const char* (*preHookFunc) (struct script_state **st, struct script_data **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_conv_str_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_conv_str_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_conv_str_pre[hIndex].func;
retVal___ = preHookFunc(&st, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -60913,9 +68551,9 @@ const char* HP_script_conv_str(struct script_state *st, struct script_data *data
{
retVal___ = HPMHooks.source.script.conv_str(st, data);
}
- if( HPMHooks.count.HP_script_conv_str_post ) {
+ if (HPMHooks.count.HP_script_conv_str_post > 0) {
const char* (*postHookFunc) (const char* retVal___, struct script_state *st, struct script_data *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_conv_str_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_conv_str_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_conv_str_post[hIndex].func;
retVal___ = postHookFunc(retVal___, st, data);
}
@@ -60925,14 +68563,14 @@ const char* HP_script_conv_str(struct script_state *st, struct script_data *data
struct map_session_data* HP_script_rid2sd(struct script_state *st) {
int hIndex = 0;
struct map_session_data* retVal___ = NULL;
- if( HPMHooks.count.HP_script_rid2sd_pre ) {
+ if (HPMHooks.count.HP_script_rid2sd_pre > 0) {
struct map_session_data* (*preHookFunc) (struct script_state **st);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_rid2sd_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_rid2sd_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_rid2sd_pre[hIndex].func;
retVal___ = preHookFunc(&st);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -60940,9 +68578,9 @@ struct map_session_data* HP_script_rid2sd(struct script_state *st) {
{
retVal___ = HPMHooks.source.script.rid2sd(st);
}
- if( HPMHooks.count.HP_script_rid2sd_post ) {
+ if (HPMHooks.count.HP_script_rid2sd_post > 0) {
struct map_session_data* (*postHookFunc) (struct map_session_data* retVal___, struct script_state *st);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_rid2sd_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_rid2sd_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_rid2sd_post[hIndex].func;
retVal___ = postHookFunc(retVal___, st);
}
@@ -60952,14 +68590,14 @@ struct map_session_data* HP_script_rid2sd(struct script_state *st) {
struct map_session_data* HP_script_id2sd(struct script_state *st, int account_id) {
int hIndex = 0;
struct map_session_data* retVal___ = NULL;
- if( HPMHooks.count.HP_script_id2sd_pre ) {
+ if (HPMHooks.count.HP_script_id2sd_pre > 0) {
struct map_session_data* (*preHookFunc) (struct script_state **st, int *account_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_id2sd_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_id2sd_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_id2sd_pre[hIndex].func;
retVal___ = preHookFunc(&st, &account_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -60967,9 +68605,9 @@ struct map_session_data* HP_script_id2sd(struct script_state *st, int account_id
{
retVal___ = HPMHooks.source.script.id2sd(st, account_id);
}
- if( HPMHooks.count.HP_script_id2sd_post ) {
+ if (HPMHooks.count.HP_script_id2sd_post > 0) {
struct map_session_data* (*postHookFunc) (struct map_session_data* retVal___, struct script_state *st, int account_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_id2sd_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_id2sd_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_id2sd_post[hIndex].func;
retVal___ = postHookFunc(retVal___, st, account_id);
}
@@ -60979,14 +68617,14 @@ struct map_session_data* HP_script_id2sd(struct script_state *st, int account_id
struct map_session_data* HP_script_charid2sd(struct script_state *st, int char_id) {
int hIndex = 0;
struct map_session_data* retVal___ = NULL;
- if( HPMHooks.count.HP_script_charid2sd_pre ) {
+ if (HPMHooks.count.HP_script_charid2sd_pre > 0) {
struct map_session_data* (*preHookFunc) (struct script_state **st, int *char_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_charid2sd_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_charid2sd_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_charid2sd_pre[hIndex].func;
retVal___ = preHookFunc(&st, &char_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -60994,9 +68632,9 @@ struct map_session_data* HP_script_charid2sd(struct script_state *st, int char_i
{
retVal___ = HPMHooks.source.script.charid2sd(st, char_id);
}
- if( HPMHooks.count.HP_script_charid2sd_post ) {
+ if (HPMHooks.count.HP_script_charid2sd_post > 0) {
struct map_session_data* (*postHookFunc) (struct map_session_data* retVal___, struct script_state *st, int char_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_charid2sd_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_charid2sd_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_charid2sd_post[hIndex].func;
retVal___ = postHookFunc(retVal___, st, char_id);
}
@@ -61006,14 +68644,14 @@ struct map_session_data* HP_script_charid2sd(struct script_state *st, int char_i
struct map_session_data* HP_script_nick2sd(struct script_state *st, const char *name) {
int hIndex = 0;
struct map_session_data* retVal___ = NULL;
- if( HPMHooks.count.HP_script_nick2sd_pre ) {
+ if (HPMHooks.count.HP_script_nick2sd_pre > 0) {
struct map_session_data* (*preHookFunc) (struct script_state **st, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_nick2sd_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_nick2sd_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_nick2sd_pre[hIndex].func;
retVal___ = preHookFunc(&st, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -61021,9 +68659,9 @@ struct map_session_data* HP_script_nick2sd(struct script_state *st, const char *
{
retVal___ = HPMHooks.source.script.nick2sd(st, name);
}
- if( HPMHooks.count.HP_script_nick2sd_post ) {
+ if (HPMHooks.count.HP_script_nick2sd_post > 0) {
struct map_session_data* (*postHookFunc) (struct map_session_data* retVal___, struct script_state *st, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_nick2sd_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_nick2sd_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_nick2sd_post[hIndex].func;
retVal___ = postHookFunc(retVal___, st, name);
}
@@ -61032,14 +68670,14 @@ struct map_session_data* HP_script_nick2sd(struct script_state *st, const char *
}
void HP_script_detach_rid(struct script_state *st) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_detach_rid_pre ) {
+ if (HPMHooks.count.HP_script_detach_rid_pre > 0) {
void (*preHookFunc) (struct script_state **st);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_detach_rid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_detach_rid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_detach_rid_pre[hIndex].func;
preHookFunc(&st);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -61047,9 +68685,9 @@ void HP_script_detach_rid(struct script_state *st) {
{
HPMHooks.source.script.detach_rid(st);
}
- if( HPMHooks.count.HP_script_detach_rid_post ) {
+ if (HPMHooks.count.HP_script_detach_rid_post > 0) {
void (*postHookFunc) (struct script_state *st);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_detach_rid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_detach_rid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_detach_rid_post[hIndex].func;
postHookFunc(st);
}
@@ -61059,14 +68697,14 @@ void HP_script_detach_rid(struct script_state *st) {
struct script_data* HP_script_push_val(struct script_stack *stack, enum c_op type, int64 val, struct reg_db *ref) {
int hIndex = 0;
struct script_data* retVal___ = NULL;
- if( HPMHooks.count.HP_script_push_val_pre ) {
+ if (HPMHooks.count.HP_script_push_val_pre > 0) {
struct script_data* (*preHookFunc) (struct script_stack **stack, enum c_op *type, int64 *val, struct reg_db **ref);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_push_val_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_push_val_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_push_val_pre[hIndex].func;
retVal___ = preHookFunc(&stack, &type, &val, &ref);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -61074,9 +68712,9 @@ struct script_data* HP_script_push_val(struct script_stack *stack, enum c_op typ
{
retVal___ = HPMHooks.source.script.push_val(stack, type, val, ref);
}
- if( HPMHooks.count.HP_script_push_val_post ) {
+ if (HPMHooks.count.HP_script_push_val_post > 0) {
struct script_data* (*postHookFunc) (struct script_data* retVal___, struct script_stack *stack, enum c_op type, int64 val, struct reg_db *ref);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_push_val_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_push_val_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_push_val_post[hIndex].func;
retVal___ = postHookFunc(retVal___, stack, type, val, ref);
}
@@ -61086,14 +68724,14 @@ struct script_data* HP_script_push_val(struct script_stack *stack, enum c_op typ
struct script_data* HP_script_get_val(struct script_state *st, struct script_data *data) {
int hIndex = 0;
struct script_data* retVal___ = NULL;
- if( HPMHooks.count.HP_script_get_val_pre ) {
+ if (HPMHooks.count.HP_script_get_val_pre > 0) {
struct script_data* (*preHookFunc) (struct script_state **st, struct script_data **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_get_val_pre[hIndex].func;
retVal___ = preHookFunc(&st, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -61101,9 +68739,9 @@ struct script_data* HP_script_get_val(struct script_state *st, struct script_dat
{
retVal___ = HPMHooks.source.script.get_val(st, data);
}
- if( HPMHooks.count.HP_script_get_val_post ) {
+ if (HPMHooks.count.HP_script_get_val_post > 0) {
struct script_data* (*postHookFunc) (struct script_data* retVal___, struct script_state *st, struct script_data *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_get_val_post[hIndex].func;
retVal___ = postHookFunc(retVal___, st, data);
}
@@ -61113,14 +68751,14 @@ struct script_data* HP_script_get_val(struct script_state *st, struct script_dat
char* HP_script_get_val_ref_str(struct script_state *st, struct reg_db *n, struct script_data *data) {
int hIndex = 0;
char* retVal___ = NULL;
- if( HPMHooks.count.HP_script_get_val_ref_str_pre ) {
+ if (HPMHooks.count.HP_script_get_val_ref_str_pre > 0) {
char* (*preHookFunc) (struct script_state **st, struct reg_db **n, struct script_data **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_ref_str_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_ref_str_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_get_val_ref_str_pre[hIndex].func;
retVal___ = preHookFunc(&st, &n, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -61128,26 +68766,53 @@ char* HP_script_get_val_ref_str(struct script_state *st, struct reg_db *n, struc
{
retVal___ = HPMHooks.source.script.get_val_ref_str(st, n, data);
}
- if( HPMHooks.count.HP_script_get_val_ref_str_post ) {
+ if (HPMHooks.count.HP_script_get_val_ref_str_post > 0) {
char* (*postHookFunc) (char* retVal___, struct script_state *st, struct reg_db *n, struct script_data *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_ref_str_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_ref_str_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_get_val_ref_str_post[hIndex].func;
retVal___ = postHookFunc(retVal___, st, n, data);
}
}
return retVal___;
}
+char* HP_script_get_val_pc_ref_str(struct script_state *st, struct reg_db *n, struct script_data *data) {
+ int hIndex = 0;
+ char* retVal___ = NULL;
+ if (HPMHooks.count.HP_script_get_val_pc_ref_str_pre > 0) {
+ char* (*preHookFunc) (struct script_state **st, struct reg_db **n, struct script_data **data);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_pc_ref_str_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_script_get_val_pc_ref_str_pre[hIndex].func;
+ retVal___ = preHookFunc(&st, &n, &data);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.script.get_val_pc_ref_str(st, n, data);
+ }
+ if (HPMHooks.count.HP_script_get_val_pc_ref_str_post > 0) {
+ char* (*postHookFunc) (char* retVal___, struct script_state *st, struct reg_db *n, struct script_data *data);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_pc_ref_str_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_script_get_val_pc_ref_str_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, st, n, data);
+ }
+ }
+ return retVal___;
+}
char* HP_script_get_val_scope_str(struct script_state *st, struct reg_db *n, struct script_data *data) {
int hIndex = 0;
char* retVal___ = NULL;
- if( HPMHooks.count.HP_script_get_val_scope_str_pre ) {
+ if (HPMHooks.count.HP_script_get_val_scope_str_pre > 0) {
char* (*preHookFunc) (struct script_state **st, struct reg_db **n, struct script_data **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_scope_str_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_scope_str_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_get_val_scope_str_pre[hIndex].func;
retVal___ = preHookFunc(&st, &n, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -61155,9 +68820,9 @@ char* HP_script_get_val_scope_str(struct script_state *st, struct reg_db *n, str
{
retVal___ = HPMHooks.source.script.get_val_scope_str(st, n, data);
}
- if( HPMHooks.count.HP_script_get_val_scope_str_post ) {
+ if (HPMHooks.count.HP_script_get_val_scope_str_post > 0) {
char* (*postHookFunc) (char* retVal___, struct script_state *st, struct reg_db *n, struct script_data *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_scope_str_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_scope_str_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_get_val_scope_str_post[hIndex].func;
retVal___ = postHookFunc(retVal___, st, n, data);
}
@@ -61167,14 +68832,14 @@ char* HP_script_get_val_scope_str(struct script_state *st, struct reg_db *n, str
char* HP_script_get_val_npc_str(struct script_state *st, struct reg_db *n, struct script_data *data) {
int hIndex = 0;
char* retVal___ = NULL;
- if( HPMHooks.count.HP_script_get_val_npc_str_pre ) {
+ if (HPMHooks.count.HP_script_get_val_npc_str_pre > 0) {
char* (*preHookFunc) (struct script_state **st, struct reg_db **n, struct script_data **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_npc_str_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_npc_str_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_get_val_npc_str_pre[hIndex].func;
retVal___ = preHookFunc(&st, &n, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -61182,9 +68847,9 @@ char* HP_script_get_val_npc_str(struct script_state *st, struct reg_db *n, struc
{
retVal___ = HPMHooks.source.script.get_val_npc_str(st, n, data);
}
- if( HPMHooks.count.HP_script_get_val_npc_str_post ) {
+ if (HPMHooks.count.HP_script_get_val_npc_str_post > 0) {
char* (*postHookFunc) (char* retVal___, struct script_state *st, struct reg_db *n, struct script_data *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_npc_str_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_npc_str_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_get_val_npc_str_post[hIndex].func;
retVal___ = postHookFunc(retVal___, st, n, data);
}
@@ -61194,14 +68859,14 @@ char* HP_script_get_val_npc_str(struct script_state *st, struct reg_db *n, struc
char* HP_script_get_val_instance_str(struct script_state *st, const char *name, struct script_data *data) {
int hIndex = 0;
char* retVal___ = NULL;
- if( HPMHooks.count.HP_script_get_val_instance_str_pre ) {
+ if (HPMHooks.count.HP_script_get_val_instance_str_pre > 0) {
char* (*preHookFunc) (struct script_state **st, const char **name, struct script_data **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_instance_str_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_instance_str_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_get_val_instance_str_pre[hIndex].func;
retVal___ = preHookFunc(&st, &name, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -61209,9 +68874,9 @@ char* HP_script_get_val_instance_str(struct script_state *st, const char *name,
{
retVal___ = HPMHooks.source.script.get_val_instance_str(st, name, data);
}
- if( HPMHooks.count.HP_script_get_val_instance_str_post ) {
+ if (HPMHooks.count.HP_script_get_val_instance_str_post > 0) {
char* (*postHookFunc) (char* retVal___, struct script_state *st, const char *name, struct script_data *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_instance_str_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_instance_str_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_get_val_instance_str_post[hIndex].func;
retVal___ = postHookFunc(retVal___, st, name, data);
}
@@ -61221,14 +68886,14 @@ char* HP_script_get_val_instance_str(struct script_state *st, const char *name,
int HP_script_get_val_ref_num(struct script_state *st, struct reg_db *n, struct script_data *data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_get_val_ref_num_pre ) {
+ if (HPMHooks.count.HP_script_get_val_ref_num_pre > 0) {
int (*preHookFunc) (struct script_state **st, struct reg_db **n, struct script_data **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_ref_num_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_ref_num_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_get_val_ref_num_pre[hIndex].func;
retVal___ = preHookFunc(&st, &n, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -61236,26 +68901,53 @@ int HP_script_get_val_ref_num(struct script_state *st, struct reg_db *n, struct
{
retVal___ = HPMHooks.source.script.get_val_ref_num(st, n, data);
}
- if( HPMHooks.count.HP_script_get_val_ref_num_post ) {
+ if (HPMHooks.count.HP_script_get_val_ref_num_post > 0) {
int (*postHookFunc) (int retVal___, struct script_state *st, struct reg_db *n, struct script_data *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_ref_num_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_ref_num_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_get_val_ref_num_post[hIndex].func;
retVal___ = postHookFunc(retVal___, st, n, data);
}
}
return retVal___;
}
+int HP_script_get_val_pc_ref_num(struct script_state *st, struct reg_db *n, struct script_data *data) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_script_get_val_pc_ref_num_pre > 0) {
+ int (*preHookFunc) (struct script_state **st, struct reg_db **n, struct script_data **data);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_pc_ref_num_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_script_get_val_pc_ref_num_pre[hIndex].func;
+ retVal___ = preHookFunc(&st, &n, &data);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.script.get_val_pc_ref_num(st, n, data);
+ }
+ if (HPMHooks.count.HP_script_get_val_pc_ref_num_post > 0) {
+ int (*postHookFunc) (int retVal___, struct script_state *st, struct reg_db *n, struct script_data *data);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_pc_ref_num_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_script_get_val_pc_ref_num_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, st, n, data);
+ }
+ }
+ return retVal___;
+}
int HP_script_get_val_scope_num(struct script_state *st, struct reg_db *n, struct script_data *data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_get_val_scope_num_pre ) {
+ if (HPMHooks.count.HP_script_get_val_scope_num_pre > 0) {
int (*preHookFunc) (struct script_state **st, struct reg_db **n, struct script_data **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_scope_num_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_scope_num_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_get_val_scope_num_pre[hIndex].func;
retVal___ = preHookFunc(&st, &n, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -61263,9 +68955,9 @@ int HP_script_get_val_scope_num(struct script_state *st, struct reg_db *n, struc
{
retVal___ = HPMHooks.source.script.get_val_scope_num(st, n, data);
}
- if( HPMHooks.count.HP_script_get_val_scope_num_post ) {
+ if (HPMHooks.count.HP_script_get_val_scope_num_post > 0) {
int (*postHookFunc) (int retVal___, struct script_state *st, struct reg_db *n, struct script_data *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_scope_num_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_scope_num_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_get_val_scope_num_post[hIndex].func;
retVal___ = postHookFunc(retVal___, st, n, data);
}
@@ -61275,14 +68967,14 @@ int HP_script_get_val_scope_num(struct script_state *st, struct reg_db *n, struc
int HP_script_get_val_npc_num(struct script_state *st, struct reg_db *n, struct script_data *data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_get_val_npc_num_pre ) {
+ if (HPMHooks.count.HP_script_get_val_npc_num_pre > 0) {
int (*preHookFunc) (struct script_state **st, struct reg_db **n, struct script_data **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_npc_num_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_npc_num_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_get_val_npc_num_pre[hIndex].func;
retVal___ = preHookFunc(&st, &n, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -61290,9 +68982,9 @@ int HP_script_get_val_npc_num(struct script_state *st, struct reg_db *n, struct
{
retVal___ = HPMHooks.source.script.get_val_npc_num(st, n, data);
}
- if( HPMHooks.count.HP_script_get_val_npc_num_post ) {
+ if (HPMHooks.count.HP_script_get_val_npc_num_post > 0) {
int (*postHookFunc) (int retVal___, struct script_state *st, struct reg_db *n, struct script_data *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_npc_num_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_npc_num_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_get_val_npc_num_post[hIndex].func;
retVal___ = postHookFunc(retVal___, st, n, data);
}
@@ -61302,14 +68994,14 @@ int HP_script_get_val_npc_num(struct script_state *st, struct reg_db *n, struct
int HP_script_get_val_instance_num(struct script_state *st, const char *name, struct script_data *data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_get_val_instance_num_pre ) {
+ if (HPMHooks.count.HP_script_get_val_instance_num_pre > 0) {
int (*preHookFunc) (struct script_state **st, const char **name, struct script_data **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_instance_num_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_instance_num_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_get_val_instance_num_pre[hIndex].func;
retVal___ = preHookFunc(&st, &name, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -61317,9 +69009,9 @@ int HP_script_get_val_instance_num(struct script_state *st, const char *name, st
{
retVal___ = HPMHooks.source.script.get_val_instance_num(st, name, data);
}
- if( HPMHooks.count.HP_script_get_val_instance_num_post ) {
+ if (HPMHooks.count.HP_script_get_val_instance_num_post > 0) {
int (*postHookFunc) (int retVal___, struct script_state *st, const char *name, struct script_data *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_instance_num_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val_instance_num_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_get_val_instance_num_post[hIndex].func;
retVal___ = postHookFunc(retVal___, st, name, data);
}
@@ -61329,14 +69021,14 @@ int HP_script_get_val_instance_num(struct script_state *st, const char *name, st
const void* HP_script_get_val2(struct script_state *st, int64 uid, struct reg_db *ref) {
int hIndex = 0;
const void* retVal___ = NULL;
- if( HPMHooks.count.HP_script_get_val2_pre ) {
+ if (HPMHooks.count.HP_script_get_val2_pre > 0) {
const void* (*preHookFunc) (struct script_state **st, int64 *uid, struct reg_db **ref);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_get_val2_pre[hIndex].func;
retVal___ = preHookFunc(&st, &uid, &ref);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -61344,9 +69036,9 @@ const void* HP_script_get_val2(struct script_state *st, int64 uid, struct reg_db
{
retVal___ = HPMHooks.source.script.get_val2(st, uid, ref);
}
- if( HPMHooks.count.HP_script_get_val2_post ) {
+ if (HPMHooks.count.HP_script_get_val2_post > 0) {
const void* (*postHookFunc) (const void* retVal___, struct script_state *st, int64 uid, struct reg_db *ref);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_val2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_get_val2_post[hIndex].func;
retVal___ = postHookFunc(retVal___, st, uid, ref);
}
@@ -61356,14 +69048,14 @@ const void* HP_script_get_val2(struct script_state *st, int64 uid, struct reg_db
struct script_data* HP_script_push_str(struct script_stack *stack, char *str) {
int hIndex = 0;
struct script_data* retVal___ = NULL;
- if( HPMHooks.count.HP_script_push_str_pre ) {
+ if (HPMHooks.count.HP_script_push_str_pre > 0) {
struct script_data* (*preHookFunc) (struct script_stack **stack, char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_push_str_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_push_str_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_push_str_pre[hIndex].func;
retVal___ = preHookFunc(&stack, &str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -61371,9 +69063,9 @@ struct script_data* HP_script_push_str(struct script_stack *stack, char *str) {
{
retVal___ = HPMHooks.source.script.push_str(stack, str);
}
- if( HPMHooks.count.HP_script_push_str_post ) {
+ if (HPMHooks.count.HP_script_push_str_post > 0) {
struct script_data* (*postHookFunc) (struct script_data* retVal___, struct script_stack *stack, char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_push_str_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_push_str_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_push_str_post[hIndex].func;
retVal___ = postHookFunc(retVal___, stack, str);
}
@@ -61383,14 +69075,14 @@ struct script_data* HP_script_push_str(struct script_stack *stack, char *str) {
struct script_data* HP_script_push_conststr(struct script_stack *stack, const char *str) {
int hIndex = 0;
struct script_data* retVal___ = NULL;
- if( HPMHooks.count.HP_script_push_conststr_pre ) {
+ if (HPMHooks.count.HP_script_push_conststr_pre > 0) {
struct script_data* (*preHookFunc) (struct script_stack **stack, const char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_push_conststr_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_push_conststr_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_push_conststr_pre[hIndex].func;
retVal___ = preHookFunc(&stack, &str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -61398,9 +69090,9 @@ struct script_data* HP_script_push_conststr(struct script_stack *stack, const ch
{
retVal___ = HPMHooks.source.script.push_conststr(stack, str);
}
- if( HPMHooks.count.HP_script_push_conststr_post ) {
+ if (HPMHooks.count.HP_script_push_conststr_post > 0) {
struct script_data* (*postHookFunc) (struct script_data* retVal___, struct script_stack *stack, const char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_push_conststr_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_push_conststr_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_push_conststr_post[hIndex].func;
retVal___ = postHookFunc(retVal___, stack, str);
}
@@ -61410,14 +69102,14 @@ struct script_data* HP_script_push_conststr(struct script_stack *stack, const ch
struct script_data* HP_script_push_copy(struct script_stack *stack, int pos) {
int hIndex = 0;
struct script_data* retVal___ = NULL;
- if( HPMHooks.count.HP_script_push_copy_pre ) {
+ if (HPMHooks.count.HP_script_push_copy_pre > 0) {
struct script_data* (*preHookFunc) (struct script_stack **stack, int *pos);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_push_copy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_push_copy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_push_copy_pre[hIndex].func;
retVal___ = preHookFunc(&stack, &pos);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -61425,9 +69117,9 @@ struct script_data* HP_script_push_copy(struct script_stack *stack, int pos) {
{
retVal___ = HPMHooks.source.script.push_copy(stack, pos);
}
- if( HPMHooks.count.HP_script_push_copy_post ) {
+ if (HPMHooks.count.HP_script_push_copy_post > 0) {
struct script_data* (*postHookFunc) (struct script_data* retVal___, struct script_stack *stack, int pos);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_push_copy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_push_copy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_push_copy_post[hIndex].func;
retVal___ = postHookFunc(retVal___, stack, pos);
}
@@ -61436,14 +69128,14 @@ struct script_data* HP_script_push_copy(struct script_stack *stack, int pos) {
}
void HP_script_pop_stack(struct script_state *st, int start, int end) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_pop_stack_pre ) {
+ if (HPMHooks.count.HP_script_pop_stack_pre > 0) {
void (*preHookFunc) (struct script_state **st, int *start, int *end);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_pop_stack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_pop_stack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_pop_stack_pre[hIndex].func;
preHookFunc(&st, &start, &end);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -61451,9 +69143,9 @@ void HP_script_pop_stack(struct script_state *st, int start, int end) {
{
HPMHooks.source.script.pop_stack(st, start, end);
}
- if( HPMHooks.count.HP_script_pop_stack_post ) {
+ if (HPMHooks.count.HP_script_pop_stack_post > 0) {
void (*postHookFunc) (struct script_state *st, int start, int end);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_pop_stack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_pop_stack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_pop_stack_post[hIndex].func;
postHookFunc(st, start, end);
}
@@ -61462,14 +69154,14 @@ void HP_script_pop_stack(struct script_state *st, int start, int end) {
}
void HP_script_set_constant(const char *name, int value, bool is_parameter, bool is_deprecated) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_set_constant_pre ) {
+ if (HPMHooks.count.HP_script_set_constant_pre > 0) {
void (*preHookFunc) (const char **name, int *value, bool *is_parameter, bool *is_deprecated);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_set_constant_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_set_constant_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_set_constant_pre[hIndex].func;
preHookFunc(&name, &value, &is_parameter, &is_deprecated);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -61477,9 +69169,9 @@ void HP_script_set_constant(const char *name, int value, bool is_parameter, bool
{
HPMHooks.source.script.set_constant(name, value, is_parameter, is_deprecated);
}
- if( HPMHooks.count.HP_script_set_constant_post ) {
+ if (HPMHooks.count.HP_script_set_constant_post > 0) {
void (*postHookFunc) (const char *name, int value, bool is_parameter, bool is_deprecated);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_set_constant_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_set_constant_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_set_constant_post[hIndex].func;
postHookFunc(name, value, is_parameter, is_deprecated);
}
@@ -61488,14 +69180,14 @@ void HP_script_set_constant(const char *name, int value, bool is_parameter, bool
}
void HP_script_set_constant2(const char *name, int value, bool is_parameter, bool is_deprecated) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_set_constant2_pre ) {
+ if (HPMHooks.count.HP_script_set_constant2_pre > 0) {
void (*preHookFunc) (const char **name, int *value, bool *is_parameter, bool *is_deprecated);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_set_constant2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_set_constant2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_set_constant2_pre[hIndex].func;
preHookFunc(&name, &value, &is_parameter, &is_deprecated);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -61503,9 +69195,9 @@ void HP_script_set_constant2(const char *name, int value, bool is_parameter, boo
{
HPMHooks.source.script.set_constant2(name, value, is_parameter, is_deprecated);
}
- if( HPMHooks.count.HP_script_set_constant2_post ) {
+ if (HPMHooks.count.HP_script_set_constant2_post > 0) {
void (*postHookFunc) (const char *name, int value, bool is_parameter, bool is_deprecated);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_set_constant2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_set_constant2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_set_constant2_post[hIndex].func;
postHookFunc(name, value, is_parameter, is_deprecated);
}
@@ -61515,14 +69207,14 @@ void HP_script_set_constant2(const char *name, int value, bool is_parameter, boo
bool HP_script_get_constant(const char *name, int *value) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_script_get_constant_pre ) {
+ if (HPMHooks.count.HP_script_get_constant_pre > 0) {
bool (*preHookFunc) (const char **name, int **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_get_constant_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_constant_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_get_constant_pre[hIndex].func;
retVal___ = preHookFunc(&name, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -61530,9 +69222,9 @@ bool HP_script_get_constant(const char *name, int *value) {
{
retVal___ = HPMHooks.source.script.get_constant(name, value);
}
- if( HPMHooks.count.HP_script_get_constant_post ) {
+ if (HPMHooks.count.HP_script_get_constant_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *name, int *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_get_constant_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_constant_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_get_constant_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name, value);
}
@@ -61541,14 +69233,14 @@ bool HP_script_get_constant(const char *name, int *value) {
}
void HP_script_label_add(int key, int pos) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_label_add_pre ) {
+ if (HPMHooks.count.HP_script_label_add_pre > 0) {
void (*preHookFunc) (int *key, int *pos);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_label_add_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_label_add_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_label_add_pre[hIndex].func;
preHookFunc(&key, &pos);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -61556,9 +69248,9 @@ void HP_script_label_add(int key, int pos) {
{
HPMHooks.source.script.label_add(key, pos);
}
- if( HPMHooks.count.HP_script_label_add_post ) {
+ if (HPMHooks.count.HP_script_label_add_post > 0) {
void (*postHookFunc) (int key, int pos);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_label_add_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_label_add_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_label_add_post[hIndex].func;
postHookFunc(key, pos);
}
@@ -61567,14 +69259,14 @@ void HP_script_label_add(int key, int pos) {
}
void HP_script_run(struct script_code *rootscript, int pos, int rid, int oid) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_run_pre ) {
+ if (HPMHooks.count.HP_script_run_pre > 0) {
void (*preHookFunc) (struct script_code **rootscript, int *pos, int *rid, int *oid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_run_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_run_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_run_pre[hIndex].func;
preHookFunc(&rootscript, &pos, &rid, &oid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -61582,9 +69274,9 @@ void HP_script_run(struct script_code *rootscript, int pos, int rid, int oid) {
{
HPMHooks.source.script.run(rootscript, pos, rid, oid);
}
- if( HPMHooks.count.HP_script_run_post ) {
+ if (HPMHooks.count.HP_script_run_post > 0) {
void (*postHookFunc) (struct script_code *rootscript, int pos, int rid, int oid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_run_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_run_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_run_post[hIndex].func;
postHookFunc(rootscript, pos, rid, oid);
}
@@ -61593,14 +69285,14 @@ void HP_script_run(struct script_code *rootscript, int pos, int rid, int oid) {
}
void HP_script_run_npc(struct script_code *rootscript, int pos, int rid, int oid) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_run_npc_pre ) {
+ if (HPMHooks.count.HP_script_run_npc_pre > 0) {
void (*preHookFunc) (struct script_code **rootscript, int *pos, int *rid, int *oid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_run_npc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_run_npc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_run_npc_pre[hIndex].func;
preHookFunc(&rootscript, &pos, &rid, &oid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -61608,9 +69300,9 @@ void HP_script_run_npc(struct script_code *rootscript, int pos, int rid, int oid
{
HPMHooks.source.script.run_npc(rootscript, pos, rid, oid);
}
- if( HPMHooks.count.HP_script_run_npc_post ) {
+ if (HPMHooks.count.HP_script_run_npc_post > 0) {
void (*postHookFunc) (struct script_code *rootscript, int pos, int rid, int oid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_run_npc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_run_npc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_run_npc_post[hIndex].func;
postHookFunc(rootscript, pos, rid, oid);
}
@@ -61619,14 +69311,14 @@ void HP_script_run_npc(struct script_code *rootscript, int pos, int rid, int oid
}
void HP_script_run_pet(struct script_code *rootscript, int pos, int rid, int oid) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_run_pet_pre ) {
+ if (HPMHooks.count.HP_script_run_pet_pre > 0) {
void (*preHookFunc) (struct script_code **rootscript, int *pos, int *rid, int *oid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_run_pet_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_run_pet_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_run_pet_pre[hIndex].func;
preHookFunc(&rootscript, &pos, &rid, &oid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -61634,9 +69326,9 @@ void HP_script_run_pet(struct script_code *rootscript, int pos, int rid, int oid
{
HPMHooks.source.script.run_pet(rootscript, pos, rid, oid);
}
- if( HPMHooks.count.HP_script_run_pet_post ) {
+ if (HPMHooks.count.HP_script_run_pet_post > 0) {
void (*postHookFunc) (struct script_code *rootscript, int pos, int rid, int oid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_run_pet_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_run_pet_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_run_pet_post[hIndex].func;
postHookFunc(rootscript, pos, rid, oid);
}
@@ -61645,14 +69337,14 @@ void HP_script_run_pet(struct script_code *rootscript, int pos, int rid, int oid
}
void HP_script_run_main(struct script_state *st) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_run_main_pre ) {
+ if (HPMHooks.count.HP_script_run_main_pre > 0) {
void (*preHookFunc) (struct script_state **st);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_run_main_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_run_main_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_run_main_pre[hIndex].func;
preHookFunc(&st);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -61660,9 +69352,9 @@ void HP_script_run_main(struct script_state *st) {
{
HPMHooks.source.script.run_main(st);
}
- if( HPMHooks.count.HP_script_run_main_post ) {
+ if (HPMHooks.count.HP_script_run_main_post > 0) {
void (*postHookFunc) (struct script_state *st);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_run_main_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_run_main_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_run_main_post[hIndex].func;
postHookFunc(st);
}
@@ -61672,14 +69364,14 @@ void HP_script_run_main(struct script_state *st) {
int HP_script_run_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_run_timer_pre ) {
+ if (HPMHooks.count.HP_script_run_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_run_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_run_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_run_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -61687,9 +69379,9 @@ int HP_script_run_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.script.run_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_script_run_timer_post ) {
+ if (HPMHooks.count.HP_script_run_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_run_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_run_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_run_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -61699,14 +69391,14 @@ int HP_script_run_timer(int tid, int64 tick, int id, intptr_t data) {
int HP_script_set_var(struct map_session_data *sd, char *name, void *val) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_set_var_pre ) {
+ if (HPMHooks.count.HP_script_set_var_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, char **name, void **val);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_set_var_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_set_var_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_set_var_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &name, &val);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -61714,9 +69406,9 @@ int HP_script_set_var(struct map_session_data *sd, char *name, void *val) {
{
retVal___ = HPMHooks.source.script.set_var(sd, name, val);
}
- if( HPMHooks.count.HP_script_set_var_post ) {
+ if (HPMHooks.count.HP_script_set_var_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, char *name, void *val);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_set_var_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_set_var_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_set_var_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, name, val);
}
@@ -61725,14 +69417,14 @@ int HP_script_set_var(struct map_session_data *sd, char *name, void *val) {
}
void HP_script_stop_instances(struct script_code *code) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_stop_instances_pre ) {
+ if (HPMHooks.count.HP_script_stop_instances_pre > 0) {
void (*preHookFunc) (struct script_code **code);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_stop_instances_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_stop_instances_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_stop_instances_pre[hIndex].func;
preHookFunc(&code);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -61740,9 +69432,9 @@ void HP_script_stop_instances(struct script_code *code) {
{
HPMHooks.source.script.stop_instances(code);
}
- if( HPMHooks.count.HP_script_stop_instances_post ) {
+ if (HPMHooks.count.HP_script_stop_instances_post > 0) {
void (*postHookFunc) (struct script_code *code);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_stop_instances_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_stop_instances_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_stop_instances_post[hIndex].func;
postHookFunc(code);
}
@@ -61751,14 +69443,14 @@ void HP_script_stop_instances(struct script_code *code) {
}
void HP_script_free_code(struct script_code *code) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_free_code_pre ) {
+ if (HPMHooks.count.HP_script_free_code_pre > 0) {
void (*preHookFunc) (struct script_code **code);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_free_code_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_free_code_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_free_code_pre[hIndex].func;
preHookFunc(&code);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -61766,9 +69458,9 @@ void HP_script_free_code(struct script_code *code) {
{
HPMHooks.source.script.free_code(code);
}
- if( HPMHooks.count.HP_script_free_code_post ) {
+ if (HPMHooks.count.HP_script_free_code_post > 0) {
void (*postHookFunc) (struct script_code *code);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_free_code_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_free_code_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_free_code_post[hIndex].func;
postHookFunc(code);
}
@@ -61777,14 +69469,14 @@ void HP_script_free_code(struct script_code *code) {
}
void HP_script_free_vars(struct DBMap *var_storage) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_free_vars_pre ) {
+ if (HPMHooks.count.HP_script_free_vars_pre > 0) {
void (*preHookFunc) (struct DBMap **var_storage);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_free_vars_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_free_vars_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_free_vars_pre[hIndex].func;
preHookFunc(&var_storage);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -61792,9 +69484,9 @@ void HP_script_free_vars(struct DBMap *var_storage) {
{
HPMHooks.source.script.free_vars(var_storage);
}
- if( HPMHooks.count.HP_script_free_vars_post ) {
+ if (HPMHooks.count.HP_script_free_vars_post > 0) {
void (*postHookFunc) (struct DBMap *var_storage);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_free_vars_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_free_vars_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_free_vars_post[hIndex].func;
postHookFunc(var_storage);
}
@@ -61804,14 +69496,14 @@ void HP_script_free_vars(struct DBMap *var_storage) {
struct script_state* HP_script_alloc_state(struct script_code *rootscript, int pos, int rid, int oid) {
int hIndex = 0;
struct script_state* retVal___ = NULL;
- if( HPMHooks.count.HP_script_alloc_state_pre ) {
+ if (HPMHooks.count.HP_script_alloc_state_pre > 0) {
struct script_state* (*preHookFunc) (struct script_code **rootscript, int *pos, int *rid, int *oid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_alloc_state_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_alloc_state_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_alloc_state_pre[hIndex].func;
retVal___ = preHookFunc(&rootscript, &pos, &rid, &oid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -61819,9 +69511,9 @@ struct script_state* HP_script_alloc_state(struct script_code *rootscript, int p
{
retVal___ = HPMHooks.source.script.alloc_state(rootscript, pos, rid, oid);
}
- if( HPMHooks.count.HP_script_alloc_state_post ) {
+ if (HPMHooks.count.HP_script_alloc_state_post > 0) {
struct script_state* (*postHookFunc) (struct script_state* retVal___, struct script_code *rootscript, int pos, int rid, int oid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_alloc_state_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_alloc_state_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_alloc_state_post[hIndex].func;
retVal___ = postHookFunc(retVal___, rootscript, pos, rid, oid);
}
@@ -61830,14 +69522,14 @@ struct script_state* HP_script_alloc_state(struct script_code *rootscript, int p
}
void HP_script_free_state(struct script_state *st) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_free_state_pre ) {
+ if (HPMHooks.count.HP_script_free_state_pre > 0) {
void (*preHookFunc) (struct script_state **st);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_free_state_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_free_state_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_free_state_pre[hIndex].func;
preHookFunc(&st);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -61845,9 +69537,9 @@ void HP_script_free_state(struct script_state *st) {
{
HPMHooks.source.script.free_state(st);
}
- if( HPMHooks.count.HP_script_free_state_post ) {
+ if (HPMHooks.count.HP_script_free_state_post > 0) {
void (*postHookFunc) (struct script_state *st);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_free_state_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_free_state_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_free_state_post[hIndex].func;
postHookFunc(st);
}
@@ -61856,14 +69548,14 @@ void HP_script_free_state(struct script_state *st) {
}
void HP_script_add_pending_ref(struct script_state *st, struct reg_db *ref) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_add_pending_ref_pre ) {
+ if (HPMHooks.count.HP_script_add_pending_ref_pre > 0) {
void (*preHookFunc) (struct script_state **st, struct reg_db **ref);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_add_pending_ref_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_add_pending_ref_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_add_pending_ref_pre[hIndex].func;
preHookFunc(&st, &ref);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -61871,9 +69563,9 @@ void HP_script_add_pending_ref(struct script_state *st, struct reg_db *ref) {
{
HPMHooks.source.script.add_pending_ref(st, ref);
}
- if( HPMHooks.count.HP_script_add_pending_ref_post ) {
+ if (HPMHooks.count.HP_script_add_pending_ref_post > 0) {
void (*postHookFunc) (struct script_state *st, struct reg_db *ref);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_add_pending_ref_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_add_pending_ref_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_add_pending_ref_post[hIndex].func;
postHookFunc(st, ref);
}
@@ -61882,14 +69574,14 @@ void HP_script_add_pending_ref(struct script_state *st, struct reg_db *ref) {
}
void HP_script_run_autobonus(const char *autobonus, int id, int pos) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_run_autobonus_pre ) {
+ if (HPMHooks.count.HP_script_run_autobonus_pre > 0) {
void (*preHookFunc) (const char **autobonus, int *id, int *pos);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_run_autobonus_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_run_autobonus_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_run_autobonus_pre[hIndex].func;
preHookFunc(&autobonus, &id, &pos);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -61897,9 +69589,9 @@ void HP_script_run_autobonus(const char *autobonus, int id, int pos) {
{
HPMHooks.source.script.run_autobonus(autobonus, id, pos);
}
- if( HPMHooks.count.HP_script_run_autobonus_post ) {
+ if (HPMHooks.count.HP_script_run_autobonus_post > 0) {
void (*postHookFunc) (const char *autobonus, int id, int pos);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_run_autobonus_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_run_autobonus_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_run_autobonus_post[hIndex].func;
postHookFunc(autobonus, id, pos);
}
@@ -61908,14 +69600,14 @@ void HP_script_run_autobonus(const char *autobonus, int id, int pos) {
}
void HP_script_cleararray_pc(struct map_session_data *sd, const char *varname, void *value) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_cleararray_pc_pre ) {
+ if (HPMHooks.count.HP_script_cleararray_pc_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, const char **varname, void **value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_cleararray_pc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_cleararray_pc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_cleararray_pc_pre[hIndex].func;
preHookFunc(&sd, &varname, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -61923,9 +69615,9 @@ void HP_script_cleararray_pc(struct map_session_data *sd, const char *varname, v
{
HPMHooks.source.script.cleararray_pc(sd, varname, value);
}
- if( HPMHooks.count.HP_script_cleararray_pc_post ) {
+ if (HPMHooks.count.HP_script_cleararray_pc_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, const char *varname, void *value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_cleararray_pc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_cleararray_pc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_cleararray_pc_post[hIndex].func;
postHookFunc(sd, varname, value);
}
@@ -61934,14 +69626,14 @@ void HP_script_cleararray_pc(struct map_session_data *sd, const char *varname, v
}
void HP_script_setarray_pc(struct map_session_data *sd, const char *varname, uint32 idx, void *value, int *refcache) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_setarray_pc_pre ) {
+ if (HPMHooks.count.HP_script_setarray_pc_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, const char **varname, uint32 *idx, void **value, int **refcache);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_setarray_pc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_setarray_pc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_setarray_pc_pre[hIndex].func;
preHookFunc(&sd, &varname, &idx, &value, &refcache);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -61949,9 +69641,9 @@ void HP_script_setarray_pc(struct map_session_data *sd, const char *varname, uin
{
HPMHooks.source.script.setarray_pc(sd, varname, idx, value, refcache);
}
- if( HPMHooks.count.HP_script_setarray_pc_post ) {
+ if (HPMHooks.count.HP_script_setarray_pc_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, const char *varname, uint32 idx, void *value, int *refcache);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_setarray_pc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_setarray_pc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_setarray_pc_post[hIndex].func;
postHookFunc(sd, varname, idx, value, refcache);
}
@@ -61961,14 +69653,14 @@ void HP_script_setarray_pc(struct map_session_data *sd, const char *varname, uin
bool HP_script_config_read(const char *filename, bool imported) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_script_config_read_pre ) {
+ if (HPMHooks.count.HP_script_config_read_pre > 0) {
bool (*preHookFunc) (const char **filename, bool *imported);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_config_read_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_config_read_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_config_read_pre[hIndex].func;
retVal___ = preHookFunc(&filename, &imported);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -61976,9 +69668,9 @@ bool HP_script_config_read(const char *filename, bool imported) {
{
retVal___ = HPMHooks.source.script.config_read(filename, imported);
}
- if( HPMHooks.count.HP_script_config_read_post ) {
+ if (HPMHooks.count.HP_script_config_read_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *filename, bool imported);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_config_read_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_config_read_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_config_read_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename, imported);
}
@@ -61988,14 +69680,14 @@ bool HP_script_config_read(const char *filename, bool imported) {
int HP_script_add_str(const char *p) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_add_str_pre ) {
+ if (HPMHooks.count.HP_script_add_str_pre > 0) {
int (*preHookFunc) (const char **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_add_str_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_add_str_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_add_str_pre[hIndex].func;
retVal___ = preHookFunc(&p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -62003,26 +69695,53 @@ int HP_script_add_str(const char *p) {
{
retVal___ = HPMHooks.source.script.add_str(p);
}
- if( HPMHooks.count.HP_script_add_str_post ) {
+ if (HPMHooks.count.HP_script_add_str_post > 0) {
int (*postHookFunc) (int retVal___, const char *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_add_str_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_add_str_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_add_str_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p);
}
}
return retVal___;
}
+int HP_script_add_variable(const char *varname) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_script_add_variable_pre > 0) {
+ int (*preHookFunc) (const char **varname);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_add_variable_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_script_add_variable_pre[hIndex].func;
+ retVal___ = preHookFunc(&varname);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.script.add_variable(varname);
+ }
+ if (HPMHooks.count.HP_script_add_variable_post > 0) {
+ int (*postHookFunc) (int retVal___, const char *varname);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_add_variable_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_script_add_variable_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, varname);
+ }
+ }
+ return retVal___;
+}
const char* HP_script_get_str(int id) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_script_get_str_pre ) {
+ if (HPMHooks.count.HP_script_get_str_pre > 0) {
const char* (*preHookFunc) (int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_get_str_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_str_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_get_str_pre[hIndex].func;
retVal___ = preHookFunc(&id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -62030,9 +69749,9 @@ const char* HP_script_get_str(int id) {
{
retVal___ = HPMHooks.source.script.get_str(id);
}
- if( HPMHooks.count.HP_script_get_str_post ) {
+ if (HPMHooks.count.HP_script_get_str_post > 0) {
const char* (*postHookFunc) (const char* retVal___, int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_get_str_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_str_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_get_str_post[hIndex].func;
retVal___ = postHookFunc(retVal___, id);
}
@@ -62042,14 +69761,14 @@ const char* HP_script_get_str(int id) {
int HP_script_search_str(const char *p) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_search_str_pre ) {
+ if (HPMHooks.count.HP_script_search_str_pre > 0) {
int (*preHookFunc) (const char **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_search_str_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_search_str_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_search_str_pre[hIndex].func;
retVal___ = preHookFunc(&p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -62057,9 +69776,9 @@ int HP_script_search_str(const char *p) {
{
retVal___ = HPMHooks.source.script.search_str(p);
}
- if( HPMHooks.count.HP_script_search_str_post ) {
+ if (HPMHooks.count.HP_script_search_str_post > 0) {
int (*postHookFunc) (int retVal___, const char *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_search_str_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_search_str_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_search_str_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p);
}
@@ -62068,14 +69787,14 @@ int HP_script_search_str(const char *p) {
}
void HP_script_setd_sub(struct script_state *st, struct map_session_data *sd, const char *varname, int elem, const void *value, struct reg_db *ref) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_setd_sub_pre ) {
+ if (HPMHooks.count.HP_script_setd_sub_pre > 0) {
void (*preHookFunc) (struct script_state **st, struct map_session_data **sd, const char **varname, int *elem, const void **value, struct reg_db **ref);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_setd_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_setd_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_setd_sub_pre[hIndex].func;
preHookFunc(&st, &sd, &varname, &elem, &value, &ref);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -62083,9 +69802,9 @@ void HP_script_setd_sub(struct script_state *st, struct map_session_data *sd, co
{
HPMHooks.source.script.setd_sub(st, sd, varname, elem, value, ref);
}
- if( HPMHooks.count.HP_script_setd_sub_post ) {
+ if (HPMHooks.count.HP_script_setd_sub_post > 0) {
void (*postHookFunc) (struct script_state *st, struct map_session_data *sd, const char *varname, int elem, const void *value, struct reg_db *ref);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_setd_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_setd_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_setd_sub_post[hIndex].func;
postHookFunc(st, sd, varname, elem, value, ref);
}
@@ -62094,14 +69813,14 @@ void HP_script_setd_sub(struct script_state *st, struct map_session_data *sd, co
}
void HP_script_attach_state(struct script_state *st) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_attach_state_pre ) {
+ if (HPMHooks.count.HP_script_attach_state_pre > 0) {
void (*preHookFunc) (struct script_state **st);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_attach_state_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_attach_state_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_attach_state_pre[hIndex].func;
preHookFunc(&st);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -62109,9 +69828,9 @@ void HP_script_attach_state(struct script_state *st) {
{
HPMHooks.source.script.attach_state(st);
}
- if( HPMHooks.count.HP_script_attach_state_post ) {
+ if (HPMHooks.count.HP_script_attach_state_post > 0) {
void (*postHookFunc) (struct script_state *st);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_attach_state_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_attach_state_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_attach_state_post[hIndex].func;
postHookFunc(st);
}
@@ -62121,14 +69840,14 @@ void HP_script_attach_state(struct script_state *st) {
struct script_queue* HP_script_queue(int idx) {
int hIndex = 0;
struct script_queue* retVal___ = NULL;
- if( HPMHooks.count.HP_script_queue_pre ) {
+ if (HPMHooks.count.HP_script_queue_pre > 0) {
struct script_queue* (*preHookFunc) (int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_queue_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_queue_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_queue_pre[hIndex].func;
retVal___ = preHookFunc(&idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -62136,9 +69855,9 @@ struct script_queue* HP_script_queue(int idx) {
{
retVal___ = HPMHooks.source.script.queue(idx);
}
- if( HPMHooks.count.HP_script_queue_post ) {
+ if (HPMHooks.count.HP_script_queue_post > 0) {
struct script_queue* (*postHookFunc) (struct script_queue* retVal___, int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_queue_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_queue_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_queue_post[hIndex].func;
retVal___ = postHookFunc(retVal___, idx);
}
@@ -62148,14 +69867,14 @@ struct script_queue* HP_script_queue(int idx) {
bool HP_script_queue_add(int idx, int var) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_script_queue_add_pre ) {
+ if (HPMHooks.count.HP_script_queue_add_pre > 0) {
bool (*preHookFunc) (int *idx, int *var);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_queue_add_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_queue_add_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_queue_add_pre[hIndex].func;
retVal___ = preHookFunc(&idx, &var);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -62163,9 +69882,9 @@ bool HP_script_queue_add(int idx, int var) {
{
retVal___ = HPMHooks.source.script.queue_add(idx, var);
}
- if( HPMHooks.count.HP_script_queue_add_post ) {
+ if (HPMHooks.count.HP_script_queue_add_post > 0) {
bool (*postHookFunc) (bool retVal___, int idx, int var);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_queue_add_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_queue_add_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_queue_add_post[hIndex].func;
retVal___ = postHookFunc(retVal___, idx, var);
}
@@ -62175,14 +69894,14 @@ bool HP_script_queue_add(int idx, int var) {
bool HP_script_queue_del(int idx) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_script_queue_del_pre ) {
+ if (HPMHooks.count.HP_script_queue_del_pre > 0) {
bool (*preHookFunc) (int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_queue_del_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_queue_del_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_queue_del_pre[hIndex].func;
retVal___ = preHookFunc(&idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -62190,9 +69909,9 @@ bool HP_script_queue_del(int idx) {
{
retVal___ = HPMHooks.source.script.queue_del(idx);
}
- if( HPMHooks.count.HP_script_queue_del_post ) {
+ if (HPMHooks.count.HP_script_queue_del_post > 0) {
bool (*postHookFunc) (bool retVal___, int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_queue_del_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_queue_del_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_queue_del_post[hIndex].func;
retVal___ = postHookFunc(retVal___, idx);
}
@@ -62202,14 +69921,14 @@ bool HP_script_queue_del(int idx) {
bool HP_script_queue_remove(int idx, int var) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_script_queue_remove_pre ) {
+ if (HPMHooks.count.HP_script_queue_remove_pre > 0) {
bool (*preHookFunc) (int *idx, int *var);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_queue_remove_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_queue_remove_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_queue_remove_pre[hIndex].func;
retVal___ = preHookFunc(&idx, &var);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -62217,9 +69936,9 @@ bool HP_script_queue_remove(int idx, int var) {
{
retVal___ = HPMHooks.source.script.queue_remove(idx, var);
}
- if( HPMHooks.count.HP_script_queue_remove_post ) {
+ if (HPMHooks.count.HP_script_queue_remove_post > 0) {
bool (*postHookFunc) (bool retVal___, int idx, int var);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_queue_remove_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_queue_remove_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_queue_remove_post[hIndex].func;
retVal___ = postHookFunc(retVal___, idx, var);
}
@@ -62229,14 +69948,14 @@ bool HP_script_queue_remove(int idx, int var) {
int HP_script_queue_create(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_queue_create_pre ) {
+ if (HPMHooks.count.HP_script_queue_create_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_queue_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_queue_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_queue_create_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -62244,9 +69963,9 @@ int HP_script_queue_create(void) {
{
retVal___ = HPMHooks.source.script.queue_create();
}
- if( HPMHooks.count.HP_script_queue_create_post ) {
+ if (HPMHooks.count.HP_script_queue_create_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_queue_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_queue_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_queue_create_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -62256,14 +69975,14 @@ int HP_script_queue_create(void) {
bool HP_script_queue_clear(int idx) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_script_queue_clear_pre ) {
+ if (HPMHooks.count.HP_script_queue_clear_pre > 0) {
bool (*preHookFunc) (int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_queue_clear_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_queue_clear_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_queue_clear_pre[hIndex].func;
retVal___ = preHookFunc(&idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -62271,9 +69990,9 @@ bool HP_script_queue_clear(int idx) {
{
retVal___ = HPMHooks.source.script.queue_clear(idx);
}
- if( HPMHooks.count.HP_script_queue_clear_post ) {
+ if (HPMHooks.count.HP_script_queue_clear_post > 0) {
bool (*postHookFunc) (bool retVal___, int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_queue_clear_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_queue_clear_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_queue_clear_post[hIndex].func;
retVal___ = postHookFunc(retVal___, idx);
}
@@ -62283,14 +70002,14 @@ bool HP_script_queue_clear(int idx) {
const char* HP_script_parse_curly_close(const char *p) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_script_parse_curly_close_pre ) {
+ if (HPMHooks.count.HP_script_parse_curly_close_pre > 0) {
const char* (*preHookFunc) (const char **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_curly_close_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_curly_close_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_parse_curly_close_pre[hIndex].func;
retVal___ = preHookFunc(&p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -62298,9 +70017,9 @@ const char* HP_script_parse_curly_close(const char *p) {
{
retVal___ = HPMHooks.source.script.parse_curly_close(p);
}
- if( HPMHooks.count.HP_script_parse_curly_close_post ) {
+ if (HPMHooks.count.HP_script_parse_curly_close_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_curly_close_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_curly_close_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_parse_curly_close_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p);
}
@@ -62310,14 +70029,14 @@ const char* HP_script_parse_curly_close(const char *p) {
const char* HP_script_parse_syntax_close(const char *p) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_script_parse_syntax_close_pre ) {
+ if (HPMHooks.count.HP_script_parse_syntax_close_pre > 0) {
const char* (*preHookFunc) (const char **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_syntax_close_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_syntax_close_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_parse_syntax_close_pre[hIndex].func;
retVal___ = preHookFunc(&p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -62325,9 +70044,9 @@ const char* HP_script_parse_syntax_close(const char *p) {
{
retVal___ = HPMHooks.source.script.parse_syntax_close(p);
}
- if( HPMHooks.count.HP_script_parse_syntax_close_post ) {
+ if (HPMHooks.count.HP_script_parse_syntax_close_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_syntax_close_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_syntax_close_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_parse_syntax_close_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p);
}
@@ -62337,14 +70056,14 @@ const char* HP_script_parse_syntax_close(const char *p) {
const char* HP_script_parse_syntax_close_sub(const char *p, int *flag) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_script_parse_syntax_close_sub_pre ) {
+ if (HPMHooks.count.HP_script_parse_syntax_close_sub_pre > 0) {
const char* (*preHookFunc) (const char **p, int **flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_syntax_close_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_syntax_close_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_parse_syntax_close_sub_pre[hIndex].func;
retVal___ = preHookFunc(&p, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -62352,9 +70071,9 @@ const char* HP_script_parse_syntax_close_sub(const char *p, int *flag) {
{
retVal___ = HPMHooks.source.script.parse_syntax_close_sub(p, flag);
}
- if( HPMHooks.count.HP_script_parse_syntax_close_sub_post ) {
+ if (HPMHooks.count.HP_script_parse_syntax_close_sub_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *p, int *flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_syntax_close_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_syntax_close_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_parse_syntax_close_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p, flag);
}
@@ -62364,14 +70083,14 @@ const char* HP_script_parse_syntax_close_sub(const char *p, int *flag) {
const char* HP_script_parse_syntax(const char *p) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_script_parse_syntax_pre ) {
+ if (HPMHooks.count.HP_script_parse_syntax_pre > 0) {
const char* (*preHookFunc) (const char **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_syntax_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_syntax_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_parse_syntax_pre[hIndex].func;
retVal___ = preHookFunc(&p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -62379,9 +70098,9 @@ const char* HP_script_parse_syntax(const char *p) {
{
retVal___ = HPMHooks.source.script.parse_syntax(p);
}
- if( HPMHooks.count.HP_script_parse_syntax_post ) {
+ if (HPMHooks.count.HP_script_parse_syntax_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_syntax_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_syntax_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_parse_syntax_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p);
}
@@ -62391,14 +70110,14 @@ const char* HP_script_parse_syntax(const char *p) {
c_op HP_script_get_com(const struct script_buf *scriptbuf, int *pos) {
int hIndex = 0;
c_op retVal___ = C_NOP;
- if( HPMHooks.count.HP_script_get_com_pre ) {
+ if (HPMHooks.count.HP_script_get_com_pre > 0) {
c_op (*preHookFunc) (const struct script_buf **scriptbuf, int **pos);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_get_com_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_com_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_get_com_pre[hIndex].func;
retVal___ = preHookFunc(&scriptbuf, &pos);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -62406,9 +70125,9 @@ c_op HP_script_get_com(const struct script_buf *scriptbuf, int *pos) {
{
retVal___ = HPMHooks.source.script.get_com(scriptbuf, pos);
}
- if( HPMHooks.count.HP_script_get_com_post ) {
+ if (HPMHooks.count.HP_script_get_com_post > 0) {
c_op (*postHookFunc) (c_op retVal___, const struct script_buf *scriptbuf, int *pos);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_get_com_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_com_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_get_com_post[hIndex].func;
retVal___ = postHookFunc(retVal___, scriptbuf, pos);
}
@@ -62418,14 +70137,14 @@ c_op HP_script_get_com(const struct script_buf *scriptbuf, int *pos) {
int HP_script_get_num(const struct script_buf *scriptbuf, int *pos) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_get_num_pre ) {
+ if (HPMHooks.count.HP_script_get_num_pre > 0) {
int (*preHookFunc) (const struct script_buf **scriptbuf, int **pos);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_get_num_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_num_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_get_num_pre[hIndex].func;
retVal___ = preHookFunc(&scriptbuf, &pos);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -62433,9 +70152,9 @@ int HP_script_get_num(const struct script_buf *scriptbuf, int *pos) {
{
retVal___ = HPMHooks.source.script.get_num(scriptbuf, pos);
}
- if( HPMHooks.count.HP_script_get_num_post ) {
+ if (HPMHooks.count.HP_script_get_num_post > 0) {
int (*postHookFunc) (int retVal___, const struct script_buf *scriptbuf, int *pos);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_get_num_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_num_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_get_num_post[hIndex].func;
retVal___ = postHookFunc(retVal___, scriptbuf, pos);
}
@@ -62445,14 +70164,14 @@ int HP_script_get_num(const struct script_buf *scriptbuf, int *pos) {
const char* HP_script_op2name(int op) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_script_op2name_pre ) {
+ if (HPMHooks.count.HP_script_op2name_pre > 0) {
const char* (*preHookFunc) (int *op);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_op2name_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_op2name_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_op2name_pre[hIndex].func;
retVal___ = preHookFunc(&op);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -62460,9 +70179,9 @@ const char* HP_script_op2name(int op) {
{
retVal___ = HPMHooks.source.script.op2name(op);
}
- if( HPMHooks.count.HP_script_op2name_post ) {
+ if (HPMHooks.count.HP_script_op2name_post > 0) {
const char* (*postHookFunc) (const char* retVal___, int op);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_op2name_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_op2name_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_op2name_post[hIndex].func;
retVal___ = postHookFunc(retVal___, op);
}
@@ -62471,14 +70190,14 @@ const char* HP_script_op2name(int op) {
}
void HP_script_reportsrc(struct script_state *st) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_reportsrc_pre ) {
+ if (HPMHooks.count.HP_script_reportsrc_pre > 0) {
void (*preHookFunc) (struct script_state **st);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_reportsrc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_reportsrc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_reportsrc_pre[hIndex].func;
preHookFunc(&st);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -62486,9 +70205,9 @@ void HP_script_reportsrc(struct script_state *st) {
{
HPMHooks.source.script.reportsrc(st);
}
- if( HPMHooks.count.HP_script_reportsrc_post ) {
+ if (HPMHooks.count.HP_script_reportsrc_post > 0) {
void (*postHookFunc) (struct script_state *st);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_reportsrc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_reportsrc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_reportsrc_post[hIndex].func;
postHookFunc(st);
}
@@ -62497,14 +70216,14 @@ void HP_script_reportsrc(struct script_state *st) {
}
void HP_script_reportdata(struct script_data *data) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_reportdata_pre ) {
+ if (HPMHooks.count.HP_script_reportdata_pre > 0) {
void (*preHookFunc) (struct script_data **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_reportdata_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_reportdata_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_reportdata_pre[hIndex].func;
preHookFunc(&data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -62512,9 +70231,9 @@ void HP_script_reportdata(struct script_data *data) {
{
HPMHooks.source.script.reportdata(data);
}
- if( HPMHooks.count.HP_script_reportdata_post ) {
+ if (HPMHooks.count.HP_script_reportdata_post > 0) {
void (*postHookFunc) (struct script_data *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_reportdata_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_reportdata_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_reportdata_post[hIndex].func;
postHookFunc(data);
}
@@ -62523,14 +70242,14 @@ void HP_script_reportdata(struct script_data *data) {
}
void HP_script_reportfunc(struct script_state *st) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_reportfunc_pre ) {
+ if (HPMHooks.count.HP_script_reportfunc_pre > 0) {
void (*preHookFunc) (struct script_state **st);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_reportfunc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_reportfunc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_reportfunc_pre[hIndex].func;
preHookFunc(&st);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -62538,9 +70257,9 @@ void HP_script_reportfunc(struct script_state *st) {
{
HPMHooks.source.script.reportfunc(st);
}
- if( HPMHooks.count.HP_script_reportfunc_post ) {
+ if (HPMHooks.count.HP_script_reportfunc_post > 0) {
void (*postHookFunc) (struct script_state *st);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_reportfunc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_reportfunc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_reportfunc_post[hIndex].func;
postHookFunc(st);
}
@@ -62549,14 +70268,14 @@ void HP_script_reportfunc(struct script_state *st) {
}
void HP_script_disp_warning_message(const char *mes, const char *pos) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_disp_warning_message_pre ) {
+ if (HPMHooks.count.HP_script_disp_warning_message_pre > 0) {
void (*preHookFunc) (const char **mes, const char **pos);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_disp_warning_message_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_disp_warning_message_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_disp_warning_message_pre[hIndex].func;
preHookFunc(&mes, &pos);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -62564,9 +70283,9 @@ void HP_script_disp_warning_message(const char *mes, const char *pos) {
{
HPMHooks.source.script.disp_warning_message(mes, pos);
}
- if( HPMHooks.count.HP_script_disp_warning_message_post ) {
+ if (HPMHooks.count.HP_script_disp_warning_message_post > 0) {
void (*postHookFunc) (const char *mes, const char *pos);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_disp_warning_message_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_disp_warning_message_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_disp_warning_message_post[hIndex].func;
postHookFunc(mes, pos);
}
@@ -62575,14 +70294,14 @@ void HP_script_disp_warning_message(const char *mes, const char *pos) {
}
void HP_script_check_event(struct script_state *st, const char *evt) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_check_event_pre ) {
+ if (HPMHooks.count.HP_script_check_event_pre > 0) {
void (*preHookFunc) (struct script_state **st, const char **evt);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_check_event_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_check_event_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_check_event_pre[hIndex].func;
preHookFunc(&st, &evt);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -62590,9 +70309,9 @@ void HP_script_check_event(struct script_state *st, const char *evt) {
{
HPMHooks.source.script.check_event(st, evt);
}
- if( HPMHooks.count.HP_script_check_event_post ) {
+ if (HPMHooks.count.HP_script_check_event_post > 0) {
void (*postHookFunc) (struct script_state *st, const char *evt);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_check_event_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_check_event_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_check_event_post[hIndex].func;
postHookFunc(st, evt);
}
@@ -62602,14 +70321,14 @@ void HP_script_check_event(struct script_state *st, const char *evt) {
unsigned int HP_script_calc_hash(const char *p) {
int hIndex = 0;
unsigned int retVal___ = 0;
- if( HPMHooks.count.HP_script_calc_hash_pre ) {
+ if (HPMHooks.count.HP_script_calc_hash_pre > 0) {
unsigned int (*preHookFunc) (const char **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_calc_hash_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_calc_hash_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_calc_hash_pre[hIndex].func;
retVal___ = preHookFunc(&p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -62617,9 +70336,9 @@ unsigned int HP_script_calc_hash(const char *p) {
{
retVal___ = HPMHooks.source.script.calc_hash(p);
}
- if( HPMHooks.count.HP_script_calc_hash_post ) {
+ if (HPMHooks.count.HP_script_calc_hash_post > 0) {
unsigned int (*postHookFunc) (unsigned int retVal___, const char *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_calc_hash_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_calc_hash_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_calc_hash_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p);
}
@@ -62628,14 +70347,14 @@ unsigned int HP_script_calc_hash(const char *p) {
}
void HP_script_addb(int a) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_addb_pre ) {
+ if (HPMHooks.count.HP_script_addb_pre > 0) {
void (*preHookFunc) (int *a);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_addb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_addb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_addb_pre[hIndex].func;
preHookFunc(&a);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -62643,9 +70362,9 @@ void HP_script_addb(int a) {
{
HPMHooks.source.script.addb(a);
}
- if( HPMHooks.count.HP_script_addb_post ) {
+ if (HPMHooks.count.HP_script_addb_post > 0) {
void (*postHookFunc) (int a);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_addb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_addb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_addb_post[hIndex].func;
postHookFunc(a);
}
@@ -62654,14 +70373,14 @@ void HP_script_addb(int a) {
}
void HP_script_addc(int a) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_addc_pre ) {
+ if (HPMHooks.count.HP_script_addc_pre > 0) {
void (*preHookFunc) (int *a);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_addc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_addc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_addc_pre[hIndex].func;
preHookFunc(&a);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -62669,9 +70388,9 @@ void HP_script_addc(int a) {
{
HPMHooks.source.script.addc(a);
}
- if( HPMHooks.count.HP_script_addc_post ) {
+ if (HPMHooks.count.HP_script_addc_post > 0) {
void (*postHookFunc) (int a);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_addc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_addc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_addc_post[hIndex].func;
postHookFunc(a);
}
@@ -62680,14 +70399,14 @@ void HP_script_addc(int a) {
}
void HP_script_addi(int a) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_addi_pre ) {
+ if (HPMHooks.count.HP_script_addi_pre > 0) {
void (*preHookFunc) (int *a);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_addi_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_addi_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_addi_pre[hIndex].func;
preHookFunc(&a);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -62695,9 +70414,9 @@ void HP_script_addi(int a) {
{
HPMHooks.source.script.addi(a);
}
- if( HPMHooks.count.HP_script_addi_post ) {
+ if (HPMHooks.count.HP_script_addi_post > 0) {
void (*postHookFunc) (int a);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_addi_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_addi_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_addi_post[hIndex].func;
postHookFunc(a);
}
@@ -62706,14 +70425,14 @@ void HP_script_addi(int a) {
}
void HP_script_addl(int l) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_addl_pre ) {
+ if (HPMHooks.count.HP_script_addl_pre > 0) {
void (*preHookFunc) (int *l);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_addl_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_addl_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_addl_pre[hIndex].func;
preHookFunc(&l);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -62721,9 +70440,9 @@ void HP_script_addl(int l) {
{
HPMHooks.source.script.addl(l);
}
- if( HPMHooks.count.HP_script_addl_post ) {
+ if (HPMHooks.count.HP_script_addl_post > 0) {
void (*postHookFunc) (int l);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_addl_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_addl_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_addl_post[hIndex].func;
postHookFunc(l);
}
@@ -62732,14 +70451,14 @@ void HP_script_addl(int l) {
}
void HP_script_set_label(int l, int pos, const char *script_pos) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_set_label_pre ) {
+ if (HPMHooks.count.HP_script_set_label_pre > 0) {
void (*preHookFunc) (int *l, int *pos, const char **script_pos);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_set_label_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_set_label_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_set_label_pre[hIndex].func;
preHookFunc(&l, &pos, &script_pos);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -62747,9 +70466,9 @@ void HP_script_set_label(int l, int pos, const char *script_pos) {
{
HPMHooks.source.script.set_label(l, pos, script_pos);
}
- if( HPMHooks.count.HP_script_set_label_post ) {
+ if (HPMHooks.count.HP_script_set_label_post > 0) {
void (*postHookFunc) (int l, int pos, const char *script_pos);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_set_label_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_set_label_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_set_label_post[hIndex].func;
postHookFunc(l, pos, script_pos);
}
@@ -62759,14 +70478,14 @@ void HP_script_set_label(int l, int pos, const char *script_pos) {
const char* HP_script_skip_word(const char *p) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_script_skip_word_pre ) {
+ if (HPMHooks.count.HP_script_skip_word_pre > 0) {
const char* (*preHookFunc) (const char **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_skip_word_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_skip_word_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_skip_word_pre[hIndex].func;
retVal___ = preHookFunc(&p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -62774,9 +70493,9 @@ const char* HP_script_skip_word(const char *p) {
{
retVal___ = HPMHooks.source.script.skip_word(p);
}
- if( HPMHooks.count.HP_script_skip_word_post ) {
+ if (HPMHooks.count.HP_script_skip_word_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_skip_word_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_skip_word_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_skip_word_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p);
}
@@ -62786,14 +70505,14 @@ const char* HP_script_skip_word(const char *p) {
int HP_script_add_word(const char *p) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_add_word_pre ) {
+ if (HPMHooks.count.HP_script_add_word_pre > 0) {
int (*preHookFunc) (const char **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_add_word_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_add_word_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_add_word_pre[hIndex].func;
retVal___ = preHookFunc(&p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -62801,9 +70520,9 @@ int HP_script_add_word(const char *p) {
{
retVal___ = HPMHooks.source.script.add_word(p);
}
- if( HPMHooks.count.HP_script_add_word_post ) {
+ if (HPMHooks.count.HP_script_add_word_post > 0) {
int (*postHookFunc) (int retVal___, const char *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_add_word_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_add_word_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_add_word_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p);
}
@@ -62813,14 +70532,14 @@ int HP_script_add_word(const char *p) {
const char* HP_script_parse_callfunc(const char *p, int require_paren, int is_custom) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_script_parse_callfunc_pre ) {
+ if (HPMHooks.count.HP_script_parse_callfunc_pre > 0) {
const char* (*preHookFunc) (const char **p, int *require_paren, int *is_custom);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_callfunc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_callfunc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_parse_callfunc_pre[hIndex].func;
retVal___ = preHookFunc(&p, &require_paren, &is_custom);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -62828,9 +70547,9 @@ const char* HP_script_parse_callfunc(const char *p, int require_paren, int is_cu
{
retVal___ = HPMHooks.source.script.parse_callfunc(p, require_paren, is_custom);
}
- if( HPMHooks.count.HP_script_parse_callfunc_post ) {
+ if (HPMHooks.count.HP_script_parse_callfunc_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *p, int require_paren, int is_custom);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_callfunc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_callfunc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_parse_callfunc_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p, require_paren, is_custom);
}
@@ -62839,14 +70558,14 @@ const char* HP_script_parse_callfunc(const char *p, int require_paren, int is_cu
}
void HP_script_parse_nextline(bool first, const char *p) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_parse_nextline_pre ) {
+ if (HPMHooks.count.HP_script_parse_nextline_pre > 0) {
void (*preHookFunc) (bool *first, const char **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_nextline_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_nextline_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_parse_nextline_pre[hIndex].func;
preHookFunc(&first, &p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -62854,9 +70573,9 @@ void HP_script_parse_nextline(bool first, const char *p) {
{
HPMHooks.source.script.parse_nextline(first, p);
}
- if( HPMHooks.count.HP_script_parse_nextline_post ) {
+ if (HPMHooks.count.HP_script_parse_nextline_post > 0) {
void (*postHookFunc) (bool first, const char *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_nextline_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_nextline_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_parse_nextline_post[hIndex].func;
postHookFunc(first, p);
}
@@ -62866,14 +70585,14 @@ void HP_script_parse_nextline(bool first, const char *p) {
const char* HP_script_parse_variable(const char *p) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_script_parse_variable_pre ) {
+ if (HPMHooks.count.HP_script_parse_variable_pre > 0) {
const char* (*preHookFunc) (const char **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_variable_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_variable_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_parse_variable_pre[hIndex].func;
retVal___ = preHookFunc(&p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -62881,9 +70600,9 @@ const char* HP_script_parse_variable(const char *p) {
{
retVal___ = HPMHooks.source.script.parse_variable(p);
}
- if( HPMHooks.count.HP_script_parse_variable_post ) {
+ if (HPMHooks.count.HP_script_parse_variable_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_variable_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_variable_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_parse_variable_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p);
}
@@ -62893,14 +70612,14 @@ const char* HP_script_parse_variable(const char *p) {
const char* HP_script_parse_simpleexpr(const char *p) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_script_parse_simpleexpr_pre ) {
+ if (HPMHooks.count.HP_script_parse_simpleexpr_pre > 0) {
const char* (*preHookFunc) (const char **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_simpleexpr_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_simpleexpr_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_parse_simpleexpr_pre[hIndex].func;
retVal___ = preHookFunc(&p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -62908,9 +70627,9 @@ const char* HP_script_parse_simpleexpr(const char *p) {
{
retVal___ = HPMHooks.source.script.parse_simpleexpr(p);
}
- if( HPMHooks.count.HP_script_parse_simpleexpr_post ) {
+ if (HPMHooks.count.HP_script_parse_simpleexpr_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_simpleexpr_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_simpleexpr_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_parse_simpleexpr_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p);
}
@@ -62920,14 +70639,14 @@ const char* HP_script_parse_simpleexpr(const char *p) {
const char* HP_script_parse_simpleexpr_paren(const char *p) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_script_parse_simpleexpr_paren_pre ) {
+ if (HPMHooks.count.HP_script_parse_simpleexpr_paren_pre > 0) {
const char* (*preHookFunc) (const char **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_simpleexpr_paren_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_simpleexpr_paren_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_parse_simpleexpr_paren_pre[hIndex].func;
retVal___ = preHookFunc(&p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -62935,9 +70654,9 @@ const char* HP_script_parse_simpleexpr_paren(const char *p) {
{
retVal___ = HPMHooks.source.script.parse_simpleexpr_paren(p);
}
- if( HPMHooks.count.HP_script_parse_simpleexpr_paren_post ) {
+ if (HPMHooks.count.HP_script_parse_simpleexpr_paren_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_simpleexpr_paren_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_simpleexpr_paren_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_parse_simpleexpr_paren_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p);
}
@@ -62947,14 +70666,14 @@ const char* HP_script_parse_simpleexpr_paren(const char *p) {
const char* HP_script_parse_simpleexpr_number(const char *p) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_script_parse_simpleexpr_number_pre ) {
+ if (HPMHooks.count.HP_script_parse_simpleexpr_number_pre > 0) {
const char* (*preHookFunc) (const char **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_simpleexpr_number_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_simpleexpr_number_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_parse_simpleexpr_number_pre[hIndex].func;
retVal___ = preHookFunc(&p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -62962,9 +70681,9 @@ const char* HP_script_parse_simpleexpr_number(const char *p) {
{
retVal___ = HPMHooks.source.script.parse_simpleexpr_number(p);
}
- if( HPMHooks.count.HP_script_parse_simpleexpr_number_post ) {
+ if (HPMHooks.count.HP_script_parse_simpleexpr_number_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_simpleexpr_number_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_simpleexpr_number_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_parse_simpleexpr_number_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p);
}
@@ -62974,14 +70693,14 @@ const char* HP_script_parse_simpleexpr_number(const char *p) {
const char* HP_script_parse_simpleexpr_string(const char *p) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_script_parse_simpleexpr_string_pre ) {
+ if (HPMHooks.count.HP_script_parse_simpleexpr_string_pre > 0) {
const char* (*preHookFunc) (const char **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_simpleexpr_string_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_simpleexpr_string_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_parse_simpleexpr_string_pre[hIndex].func;
retVal___ = preHookFunc(&p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -62989,9 +70708,9 @@ const char* HP_script_parse_simpleexpr_string(const char *p) {
{
retVal___ = HPMHooks.source.script.parse_simpleexpr_string(p);
}
- if( HPMHooks.count.HP_script_parse_simpleexpr_string_post ) {
+ if (HPMHooks.count.HP_script_parse_simpleexpr_string_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_simpleexpr_string_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_simpleexpr_string_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_parse_simpleexpr_string_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p);
}
@@ -63001,14 +70720,14 @@ const char* HP_script_parse_simpleexpr_string(const char *p) {
const char* HP_script_parse_simpleexpr_name(const char *p) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_script_parse_simpleexpr_name_pre ) {
+ if (HPMHooks.count.HP_script_parse_simpleexpr_name_pre > 0) {
const char* (*preHookFunc) (const char **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_simpleexpr_name_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_simpleexpr_name_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_parse_simpleexpr_name_pre[hIndex].func;
retVal___ = preHookFunc(&p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -63016,9 +70735,9 @@ const char* HP_script_parse_simpleexpr_name(const char *p) {
{
retVal___ = HPMHooks.source.script.parse_simpleexpr_name(p);
}
- if( HPMHooks.count.HP_script_parse_simpleexpr_name_post ) {
+ if (HPMHooks.count.HP_script_parse_simpleexpr_name_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_simpleexpr_name_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_simpleexpr_name_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_parse_simpleexpr_name_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p);
}
@@ -63027,14 +70746,14 @@ const char* HP_script_parse_simpleexpr_name(const char *p) {
}
void HP_script_add_translatable_string(const struct script_string_buf *string, const char *start_point) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_add_translatable_string_pre ) {
+ if (HPMHooks.count.HP_script_add_translatable_string_pre > 0) {
void (*preHookFunc) (const struct script_string_buf **string, const char **start_point);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_add_translatable_string_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_add_translatable_string_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_add_translatable_string_pre[hIndex].func;
preHookFunc(&string, &start_point);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -63042,9 +70761,9 @@ void HP_script_add_translatable_string(const struct script_string_buf *string, c
{
HPMHooks.source.script.add_translatable_string(string, start_point);
}
- if( HPMHooks.count.HP_script_add_translatable_string_post ) {
+ if (HPMHooks.count.HP_script_add_translatable_string_post > 0) {
void (*postHookFunc) (const struct script_string_buf *string, const char *start_point);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_add_translatable_string_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_add_translatable_string_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_add_translatable_string_post[hIndex].func;
postHookFunc(string, start_point);
}
@@ -63054,14 +70773,14 @@ void HP_script_add_translatable_string(const struct script_string_buf *string, c
const char* HP_script_parse_expr(const char *p) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_script_parse_expr_pre ) {
+ if (HPMHooks.count.HP_script_parse_expr_pre > 0) {
const char* (*preHookFunc) (const char **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_expr_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_expr_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_parse_expr_pre[hIndex].func;
retVal___ = preHookFunc(&p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -63069,9 +70788,9 @@ const char* HP_script_parse_expr(const char *p) {
{
retVal___ = HPMHooks.source.script.parse_expr(p);
}
- if( HPMHooks.count.HP_script_parse_expr_post ) {
+ if (HPMHooks.count.HP_script_parse_expr_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_expr_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_expr_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_parse_expr_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p);
}
@@ -63081,14 +70800,14 @@ const char* HP_script_parse_expr(const char *p) {
const char* HP_script_parse_line(const char *p) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_script_parse_line_pre ) {
+ if (HPMHooks.count.HP_script_parse_line_pre > 0) {
const char* (*preHookFunc) (const char **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_line_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_line_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_parse_line_pre[hIndex].func;
retVal___ = preHookFunc(&p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -63096,51 +70815,51 @@ const char* HP_script_parse_line(const char *p) {
{
retVal___ = HPMHooks.source.script.parse_line(p);
}
- if( HPMHooks.count.HP_script_parse_line_post ) {
+ if (HPMHooks.count.HP_script_parse_line_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_line_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_line_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_parse_line_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p);
}
}
return retVal___;
}
-void HP_script_read_constdb(void) {
+void HP_script_read_constdb(bool reload) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_read_constdb_pre ) {
- void (*preHookFunc) (void);
+ if (HPMHooks.count.HP_script_read_constdb_pre > 0) {
+ void (*preHookFunc) (bool *reload);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_read_constdb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_read_constdb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_read_constdb_pre[hIndex].func;
- preHookFunc();
+ preHookFunc(&reload);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
}
{
- HPMHooks.source.script.read_constdb();
+ HPMHooks.source.script.read_constdb(reload);
}
- if( HPMHooks.count.HP_script_read_constdb_post ) {
- void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_read_constdb_post; hIndex++ ) {
+ if (HPMHooks.count.HP_script_read_constdb_post > 0) {
+ void (*postHookFunc) (bool reload);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_read_constdb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_read_constdb_post[hIndex].func;
- postHookFunc();
+ postHookFunc(reload);
}
}
return;
}
void HP_script_constdb_comment(const char *comment) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_constdb_comment_pre ) {
+ if (HPMHooks.count.HP_script_constdb_comment_pre > 0) {
void (*preHookFunc) (const char **comment);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_constdb_comment_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_constdb_comment_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_constdb_comment_pre[hIndex].func;
preHookFunc(&comment);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -63148,9 +70867,9 @@ void HP_script_constdb_comment(const char *comment) {
{
HPMHooks.source.script.constdb_comment(comment);
}
- if( HPMHooks.count.HP_script_constdb_comment_post ) {
+ if (HPMHooks.count.HP_script_constdb_comment_post > 0) {
void (*postHookFunc) (const char *comment);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_constdb_comment_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_constdb_comment_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_constdb_comment_post[hIndex].func;
postHookFunc(comment);
}
@@ -63159,14 +70878,14 @@ void HP_script_constdb_comment(const char *comment) {
}
void HP_script_load_parameters(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_load_parameters_pre ) {
+ if (HPMHooks.count.HP_script_load_parameters_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_load_parameters_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_load_parameters_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_load_parameters_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -63174,9 +70893,9 @@ void HP_script_load_parameters(void) {
{
HPMHooks.source.script.load_parameters();
}
- if( HPMHooks.count.HP_script_load_parameters_post ) {
+ if (HPMHooks.count.HP_script_load_parameters_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_load_parameters_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_load_parameters_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_load_parameters_post[hIndex].func;
postHookFunc();
}
@@ -63186,14 +70905,14 @@ void HP_script_load_parameters(void) {
const char* HP_script_print_line(StringBuf *buf, const char *p, const char *mark, int line) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_script_print_line_pre ) {
+ if (HPMHooks.count.HP_script_print_line_pre > 0) {
const char* (*preHookFunc) (StringBuf **buf, const char **p, const char **mark, int *line);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_print_line_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_print_line_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_print_line_pre[hIndex].func;
retVal___ = preHookFunc(&buf, &p, &mark, &line);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -63201,9 +70920,9 @@ const char* HP_script_print_line(StringBuf *buf, const char *p, const char *mark
{
retVal___ = HPMHooks.source.script.print_line(buf, p, mark, line);
}
- if( HPMHooks.count.HP_script_print_line_post ) {
+ if (HPMHooks.count.HP_script_print_line_post > 0) {
const char* (*postHookFunc) (const char* retVal___, StringBuf *buf, const char *p, const char *mark, int line);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_print_line_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_print_line_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_print_line_post[hIndex].func;
retVal___ = postHookFunc(retVal___, buf, p, mark, line);
}
@@ -63212,14 +70931,14 @@ const char* HP_script_print_line(StringBuf *buf, const char *p, const char *mark
}
void HP_script_errorwarning_sub(StringBuf *buf, const char *src, const char *file, int start_line, const char *error_msg, const char *error_pos) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_errorwarning_sub_pre ) {
+ if (HPMHooks.count.HP_script_errorwarning_sub_pre > 0) {
void (*preHookFunc) (StringBuf **buf, const char **src, const char **file, int *start_line, const char **error_msg, const char **error_pos);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_errorwarning_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_errorwarning_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_errorwarning_sub_pre[hIndex].func;
preHookFunc(&buf, &src, &file, &start_line, &error_msg, &error_pos);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -63227,9 +70946,9 @@ void HP_script_errorwarning_sub(StringBuf *buf, const char *src, const char *fil
{
HPMHooks.source.script.errorwarning_sub(buf, src, file, start_line, error_msg, error_pos);
}
- if( HPMHooks.count.HP_script_errorwarning_sub_post ) {
+ if (HPMHooks.count.HP_script_errorwarning_sub_post > 0) {
void (*postHookFunc) (StringBuf *buf, const char *src, const char *file, int start_line, const char *error_msg, const char *error_pos);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_errorwarning_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_errorwarning_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_errorwarning_sub_post[hIndex].func;
postHookFunc(buf, src, file, start_line, error_msg, error_pos);
}
@@ -63239,14 +70958,14 @@ void HP_script_errorwarning_sub(StringBuf *buf, const char *src, const char *fil
int HP_script_set_reg(struct script_state *st, struct map_session_data *sd, int64 num, const char *name, const void *value, struct reg_db *ref) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_set_reg_pre ) {
+ if (HPMHooks.count.HP_script_set_reg_pre > 0) {
int (*preHookFunc) (struct script_state **st, struct map_session_data **sd, int64 *num, const char **name, const void **value, struct reg_db **ref);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_set_reg_pre[hIndex].func;
retVal___ = preHookFunc(&st, &sd, &num, &name, &value, &ref);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -63254,9 +70973,9 @@ int HP_script_set_reg(struct script_state *st, struct map_session_data *sd, int6
{
retVal___ = HPMHooks.source.script.set_reg(st, sd, num, name, value, ref);
}
- if( HPMHooks.count.HP_script_set_reg_post ) {
+ if (HPMHooks.count.HP_script_set_reg_post > 0) {
int (*postHookFunc) (int retVal___, struct script_state *st, struct map_session_data *sd, int64 num, const char *name, const void *value, struct reg_db *ref);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_set_reg_post[hIndex].func;
retVal___ = postHookFunc(retVal___, st, sd, num, name, value, ref);
}
@@ -63265,14 +70984,14 @@ int HP_script_set_reg(struct script_state *st, struct map_session_data *sd, int6
}
void HP_script_set_reg_ref_str(struct script_state *st, struct reg_db *n, int64 num, const char *name, const char *str) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_set_reg_ref_str_pre ) {
+ if (HPMHooks.count.HP_script_set_reg_ref_str_pre > 0) {
void (*preHookFunc) (struct script_state **st, struct reg_db **n, int64 *num, const char **name, const char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_ref_str_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_ref_str_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_set_reg_ref_str_pre[hIndex].func;
preHookFunc(&st, &n, &num, &name, &str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -63280,25 +70999,51 @@ void HP_script_set_reg_ref_str(struct script_state *st, struct reg_db *n, int64
{
HPMHooks.source.script.set_reg_ref_str(st, n, num, name, str);
}
- if( HPMHooks.count.HP_script_set_reg_ref_str_post ) {
+ if (HPMHooks.count.HP_script_set_reg_ref_str_post > 0) {
void (*postHookFunc) (struct script_state *st, struct reg_db *n, int64 num, const char *name, const char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_ref_str_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_ref_str_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_set_reg_ref_str_post[hIndex].func;
postHookFunc(st, n, num, name, str);
}
}
return;
}
+void HP_script_set_reg_pc_ref_str(struct script_state *st, struct reg_db *n, int64 num, const char *name, const char *str) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_script_set_reg_pc_ref_str_pre > 0) {
+ void (*preHookFunc) (struct script_state **st, struct reg_db **n, int64 *num, const char **name, const char **str);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_pc_ref_str_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_script_set_reg_pc_ref_str_pre[hIndex].func;
+ preHookFunc(&st, &n, &num, &name, &str);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.script.set_reg_pc_ref_str(st, n, num, name, str);
+ }
+ if (HPMHooks.count.HP_script_set_reg_pc_ref_str_post > 0) {
+ void (*postHookFunc) (struct script_state *st, struct reg_db *n, int64 num, const char *name, const char *str);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_pc_ref_str_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_script_set_reg_pc_ref_str_post[hIndex].func;
+ postHookFunc(st, n, num, name, str);
+ }
+ }
+ return;
+}
void HP_script_set_reg_scope_str(struct script_state *st, struct reg_db *n, int64 num, const char *name, const char *str) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_set_reg_scope_str_pre ) {
+ if (HPMHooks.count.HP_script_set_reg_scope_str_pre > 0) {
void (*preHookFunc) (struct script_state **st, struct reg_db **n, int64 *num, const char **name, const char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_scope_str_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_scope_str_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_set_reg_scope_str_pre[hIndex].func;
preHookFunc(&st, &n, &num, &name, &str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -63306,9 +71051,9 @@ void HP_script_set_reg_scope_str(struct script_state *st, struct reg_db *n, int6
{
HPMHooks.source.script.set_reg_scope_str(st, n, num, name, str);
}
- if( HPMHooks.count.HP_script_set_reg_scope_str_post ) {
+ if (HPMHooks.count.HP_script_set_reg_scope_str_post > 0) {
void (*postHookFunc) (struct script_state *st, struct reg_db *n, int64 num, const char *name, const char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_scope_str_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_scope_str_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_set_reg_scope_str_post[hIndex].func;
postHookFunc(st, n, num, name, str);
}
@@ -63317,14 +71062,14 @@ void HP_script_set_reg_scope_str(struct script_state *st, struct reg_db *n, int6
}
void HP_script_set_reg_npc_str(struct script_state *st, struct reg_db *n, int64 num, const char *name, const char *str) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_set_reg_npc_str_pre ) {
+ if (HPMHooks.count.HP_script_set_reg_npc_str_pre > 0) {
void (*preHookFunc) (struct script_state **st, struct reg_db **n, int64 *num, const char **name, const char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_npc_str_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_npc_str_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_set_reg_npc_str_pre[hIndex].func;
preHookFunc(&st, &n, &num, &name, &str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -63332,9 +71077,9 @@ void HP_script_set_reg_npc_str(struct script_state *st, struct reg_db *n, int64
{
HPMHooks.source.script.set_reg_npc_str(st, n, num, name, str);
}
- if( HPMHooks.count.HP_script_set_reg_npc_str_post ) {
+ if (HPMHooks.count.HP_script_set_reg_npc_str_post > 0) {
void (*postHookFunc) (struct script_state *st, struct reg_db *n, int64 num, const char *name, const char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_npc_str_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_npc_str_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_set_reg_npc_str_post[hIndex].func;
postHookFunc(st, n, num, name, str);
}
@@ -63343,14 +71088,14 @@ void HP_script_set_reg_npc_str(struct script_state *st, struct reg_db *n, int64
}
void HP_script_set_reg_instance_str(struct script_state *st, int64 num, const char *name, const char *str) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_set_reg_instance_str_pre ) {
+ if (HPMHooks.count.HP_script_set_reg_instance_str_pre > 0) {
void (*preHookFunc) (struct script_state **st, int64 *num, const char **name, const char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_instance_str_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_instance_str_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_set_reg_instance_str_pre[hIndex].func;
preHookFunc(&st, &num, &name, &str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -63358,9 +71103,9 @@ void HP_script_set_reg_instance_str(struct script_state *st, int64 num, const ch
{
HPMHooks.source.script.set_reg_instance_str(st, num, name, str);
}
- if( HPMHooks.count.HP_script_set_reg_instance_str_post ) {
+ if (HPMHooks.count.HP_script_set_reg_instance_str_post > 0) {
void (*postHookFunc) (struct script_state *st, int64 num, const char *name, const char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_instance_str_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_instance_str_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_set_reg_instance_str_post[hIndex].func;
postHookFunc(st, num, name, str);
}
@@ -63369,14 +71114,14 @@ void HP_script_set_reg_instance_str(struct script_state *st, int64 num, const ch
}
void HP_script_set_reg_ref_num(struct script_state *st, struct reg_db *n, int64 num, const char *name, int val) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_set_reg_ref_num_pre ) {
+ if (HPMHooks.count.HP_script_set_reg_ref_num_pre > 0) {
void (*preHookFunc) (struct script_state **st, struct reg_db **n, int64 *num, const char **name, int *val);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_ref_num_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_ref_num_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_set_reg_ref_num_pre[hIndex].func;
preHookFunc(&st, &n, &num, &name, &val);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -63384,25 +71129,51 @@ void HP_script_set_reg_ref_num(struct script_state *st, struct reg_db *n, int64
{
HPMHooks.source.script.set_reg_ref_num(st, n, num, name, val);
}
- if( HPMHooks.count.HP_script_set_reg_ref_num_post ) {
+ if (HPMHooks.count.HP_script_set_reg_ref_num_post > 0) {
void (*postHookFunc) (struct script_state *st, struct reg_db *n, int64 num, const char *name, int val);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_ref_num_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_ref_num_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_set_reg_ref_num_post[hIndex].func;
postHookFunc(st, n, num, name, val);
}
}
return;
}
+void HP_script_set_reg_pc_ref_num(struct script_state *st, struct reg_db *n, int64 num, const char *name, int val) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_script_set_reg_pc_ref_num_pre > 0) {
+ void (*preHookFunc) (struct script_state **st, struct reg_db **n, int64 *num, const char **name, int *val);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_pc_ref_num_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_script_set_reg_pc_ref_num_pre[hIndex].func;
+ preHookFunc(&st, &n, &num, &name, &val);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.script.set_reg_pc_ref_num(st, n, num, name, val);
+ }
+ if (HPMHooks.count.HP_script_set_reg_pc_ref_num_post > 0) {
+ void (*postHookFunc) (struct script_state *st, struct reg_db *n, int64 num, const char *name, int val);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_pc_ref_num_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_script_set_reg_pc_ref_num_post[hIndex].func;
+ postHookFunc(st, n, num, name, val);
+ }
+ }
+ return;
+}
void HP_script_set_reg_scope_num(struct script_state *st, struct reg_db *n, int64 num, const char *name, int val) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_set_reg_scope_num_pre ) {
+ if (HPMHooks.count.HP_script_set_reg_scope_num_pre > 0) {
void (*preHookFunc) (struct script_state **st, struct reg_db **n, int64 *num, const char **name, int *val);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_scope_num_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_scope_num_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_set_reg_scope_num_pre[hIndex].func;
preHookFunc(&st, &n, &num, &name, &val);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -63410,9 +71181,9 @@ void HP_script_set_reg_scope_num(struct script_state *st, struct reg_db *n, int6
{
HPMHooks.source.script.set_reg_scope_num(st, n, num, name, val);
}
- if( HPMHooks.count.HP_script_set_reg_scope_num_post ) {
+ if (HPMHooks.count.HP_script_set_reg_scope_num_post > 0) {
void (*postHookFunc) (struct script_state *st, struct reg_db *n, int64 num, const char *name, int val);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_scope_num_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_scope_num_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_set_reg_scope_num_post[hIndex].func;
postHookFunc(st, n, num, name, val);
}
@@ -63421,14 +71192,14 @@ void HP_script_set_reg_scope_num(struct script_state *st, struct reg_db *n, int6
}
void HP_script_set_reg_npc_num(struct script_state *st, struct reg_db *n, int64 num, const char *name, int val) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_set_reg_npc_num_pre ) {
+ if (HPMHooks.count.HP_script_set_reg_npc_num_pre > 0) {
void (*preHookFunc) (struct script_state **st, struct reg_db **n, int64 *num, const char **name, int *val);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_npc_num_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_npc_num_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_set_reg_npc_num_pre[hIndex].func;
preHookFunc(&st, &n, &num, &name, &val);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -63436,9 +71207,9 @@ void HP_script_set_reg_npc_num(struct script_state *st, struct reg_db *n, int64
{
HPMHooks.source.script.set_reg_npc_num(st, n, num, name, val);
}
- if( HPMHooks.count.HP_script_set_reg_npc_num_post ) {
+ if (HPMHooks.count.HP_script_set_reg_npc_num_post > 0) {
void (*postHookFunc) (struct script_state *st, struct reg_db *n, int64 num, const char *name, int val);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_npc_num_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_npc_num_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_set_reg_npc_num_post[hIndex].func;
postHookFunc(st, n, num, name, val);
}
@@ -63447,14 +71218,14 @@ void HP_script_set_reg_npc_num(struct script_state *st, struct reg_db *n, int64
}
void HP_script_set_reg_instance_num(struct script_state *st, int64 num, const char *name, int val) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_set_reg_instance_num_pre ) {
+ if (HPMHooks.count.HP_script_set_reg_instance_num_pre > 0) {
void (*preHookFunc) (struct script_state **st, int64 *num, const char **name, int *val);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_instance_num_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_instance_num_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_set_reg_instance_num_pre[hIndex].func;
preHookFunc(&st, &num, &name, &val);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -63462,9 +71233,9 @@ void HP_script_set_reg_instance_num(struct script_state *st, int64 num, const ch
{
HPMHooks.source.script.set_reg_instance_num(st, num, name, val);
}
- if( HPMHooks.count.HP_script_set_reg_instance_num_post ) {
+ if (HPMHooks.count.HP_script_set_reg_instance_num_post > 0) {
void (*postHookFunc) (struct script_state *st, int64 num, const char *name, int val);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_instance_num_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_instance_num_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_set_reg_instance_num_post[hIndex].func;
postHookFunc(st, num, name, val);
}
@@ -63473,14 +71244,14 @@ void HP_script_set_reg_instance_num(struct script_state *st, int64 num, const ch
}
void HP_script_stack_expand(struct script_stack *stack) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_stack_expand_pre ) {
+ if (HPMHooks.count.HP_script_stack_expand_pre > 0) {
void (*preHookFunc) (struct script_stack **stack);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_stack_expand_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_stack_expand_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_stack_expand_pre[hIndex].func;
preHookFunc(&stack);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -63488,9 +71259,9 @@ void HP_script_stack_expand(struct script_stack *stack) {
{
HPMHooks.source.script.stack_expand(stack);
}
- if( HPMHooks.count.HP_script_stack_expand_post ) {
+ if (HPMHooks.count.HP_script_stack_expand_post > 0) {
void (*postHookFunc) (struct script_stack *stack);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_stack_expand_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_stack_expand_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_stack_expand_post[hIndex].func;
postHookFunc(stack);
}
@@ -63500,14 +71271,14 @@ void HP_script_stack_expand(struct script_stack *stack) {
struct script_data* HP_script_push_retinfo(struct script_stack *stack, struct script_retinfo *ri, struct reg_db *ref) {
int hIndex = 0;
struct script_data* retVal___ = NULL;
- if( HPMHooks.count.HP_script_push_retinfo_pre ) {
+ if (HPMHooks.count.HP_script_push_retinfo_pre > 0) {
struct script_data* (*preHookFunc) (struct script_stack **stack, struct script_retinfo **ri, struct reg_db **ref);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_push_retinfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_push_retinfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_push_retinfo_pre[hIndex].func;
retVal___ = preHookFunc(&stack, &ri, &ref);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -63515,9 +71286,9 @@ struct script_data* HP_script_push_retinfo(struct script_stack *stack, struct sc
{
retVal___ = HPMHooks.source.script.push_retinfo(stack, ri, ref);
}
- if( HPMHooks.count.HP_script_push_retinfo_post ) {
+ if (HPMHooks.count.HP_script_push_retinfo_post > 0) {
struct script_data* (*postHookFunc) (struct script_data* retVal___, struct script_stack *stack, struct script_retinfo *ri, struct reg_db *ref);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_push_retinfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_push_retinfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_push_retinfo_post[hIndex].func;
retVal___ = postHookFunc(retVal___, stack, ri, ref);
}
@@ -63526,14 +71297,14 @@ struct script_data* HP_script_push_retinfo(struct script_stack *stack, struct sc
}
void HP_script_op_3(struct script_state *st, int op) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_op_3_pre ) {
+ if (HPMHooks.count.HP_script_op_3_pre > 0) {
void (*preHookFunc) (struct script_state **st, int *op);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_op_3_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_op_3_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_op_3_pre[hIndex].func;
preHookFunc(&st, &op);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -63541,9 +71312,9 @@ void HP_script_op_3(struct script_state *st, int op) {
{
HPMHooks.source.script.op_3(st, op);
}
- if( HPMHooks.count.HP_script_op_3_post ) {
+ if (HPMHooks.count.HP_script_op_3_post > 0) {
void (*postHookFunc) (struct script_state *st, int op);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_op_3_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_op_3_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_op_3_post[hIndex].func;
postHookFunc(st, op);
}
@@ -63552,14 +71323,14 @@ void HP_script_op_3(struct script_state *st, int op) {
}
void HP_script_op_2str(struct script_state *st, int op, const char *s1, const char *s2) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_op_2str_pre ) {
+ if (HPMHooks.count.HP_script_op_2str_pre > 0) {
void (*preHookFunc) (struct script_state **st, int *op, const char **s1, const char **s2);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_op_2str_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_op_2str_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_op_2str_pre[hIndex].func;
preHookFunc(&st, &op, &s1, &s2);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -63567,9 +71338,9 @@ void HP_script_op_2str(struct script_state *st, int op, const char *s1, const ch
{
HPMHooks.source.script.op_2str(st, op, s1, s2);
}
- if( HPMHooks.count.HP_script_op_2str_post ) {
+ if (HPMHooks.count.HP_script_op_2str_post > 0) {
void (*postHookFunc) (struct script_state *st, int op, const char *s1, const char *s2);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_op_2str_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_op_2str_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_op_2str_post[hIndex].func;
postHookFunc(st, op, s1, s2);
}
@@ -63578,14 +71349,14 @@ void HP_script_op_2str(struct script_state *st, int op, const char *s1, const ch
}
void HP_script_op_2num(struct script_state *st, int op, int i1, int i2) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_op_2num_pre ) {
+ if (HPMHooks.count.HP_script_op_2num_pre > 0) {
void (*preHookFunc) (struct script_state **st, int *op, int *i1, int *i2);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_op_2num_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_op_2num_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_op_2num_pre[hIndex].func;
preHookFunc(&st, &op, &i1, &i2);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -63593,9 +71364,9 @@ void HP_script_op_2num(struct script_state *st, int op, int i1, int i2) {
{
HPMHooks.source.script.op_2num(st, op, i1, i2);
}
- if( HPMHooks.count.HP_script_op_2num_post ) {
+ if (HPMHooks.count.HP_script_op_2num_post > 0) {
void (*postHookFunc) (struct script_state *st, int op, int i1, int i2);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_op_2num_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_op_2num_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_op_2num_post[hIndex].func;
postHookFunc(st, op, i1, i2);
}
@@ -63604,14 +71375,14 @@ void HP_script_op_2num(struct script_state *st, int op, int i1, int i2) {
}
void HP_script_op_2(struct script_state *st, int op) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_op_2_pre ) {
+ if (HPMHooks.count.HP_script_op_2_pre > 0) {
void (*preHookFunc) (struct script_state **st, int *op);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_op_2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_op_2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_op_2_pre[hIndex].func;
preHookFunc(&st, &op);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -63619,9 +71390,9 @@ void HP_script_op_2(struct script_state *st, int op) {
{
HPMHooks.source.script.op_2(st, op);
}
- if( HPMHooks.count.HP_script_op_2_post ) {
+ if (HPMHooks.count.HP_script_op_2_post > 0) {
void (*postHookFunc) (struct script_state *st, int op);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_op_2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_op_2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_op_2_post[hIndex].func;
postHookFunc(st, op);
}
@@ -63630,14 +71401,14 @@ void HP_script_op_2(struct script_state *st, int op) {
}
void HP_script_op_1(struct script_state *st, int op) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_op_1_pre ) {
+ if (HPMHooks.count.HP_script_op_1_pre > 0) {
void (*preHookFunc) (struct script_state **st, int *op);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_op_1_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_op_1_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_op_1_pre[hIndex].func;
preHookFunc(&st, &op);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -63645,9 +71416,9 @@ void HP_script_op_1(struct script_state *st, int op) {
{
HPMHooks.source.script.op_1(st, op);
}
- if( HPMHooks.count.HP_script_op_1_post ) {
+ if (HPMHooks.count.HP_script_op_1_post > 0) {
void (*postHookFunc) (struct script_state *st, int op);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_op_1_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_op_1_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_op_1_post[hIndex].func;
postHookFunc(st, op);
}
@@ -63657,14 +71428,14 @@ void HP_script_op_1(struct script_state *st, int op) {
bool HP_script_check_buildin_argtype(struct script_state *st, int func) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_script_check_buildin_argtype_pre ) {
+ if (HPMHooks.count.HP_script_check_buildin_argtype_pre > 0) {
bool (*preHookFunc) (struct script_state **st, int *func);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_check_buildin_argtype_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_check_buildin_argtype_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_check_buildin_argtype_pre[hIndex].func;
retVal___ = preHookFunc(&st, &func);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -63672,9 +71443,9 @@ bool HP_script_check_buildin_argtype(struct script_state *st, int func) {
{
retVal___ = HPMHooks.source.script.check_buildin_argtype(st, func);
}
- if( HPMHooks.count.HP_script_check_buildin_argtype_post ) {
+ if (HPMHooks.count.HP_script_check_buildin_argtype_post > 0) {
bool (*postHookFunc) (bool retVal___, struct script_state *st, int func);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_check_buildin_argtype_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_check_buildin_argtype_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_check_buildin_argtype_post[hIndex].func;
retVal___ = postHookFunc(retVal___, st, func);
}
@@ -63683,14 +71454,14 @@ bool HP_script_check_buildin_argtype(struct script_state *st, int func) {
}
void HP_script_detach_state(struct script_state *st, bool dequeue_event) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_detach_state_pre ) {
+ if (HPMHooks.count.HP_script_detach_state_pre > 0) {
void (*preHookFunc) (struct script_state **st, bool *dequeue_event);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_detach_state_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_detach_state_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_detach_state_pre[hIndex].func;
preHookFunc(&st, &dequeue_event);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -63698,9 +71469,9 @@ void HP_script_detach_state(struct script_state *st, bool dequeue_event) {
{
HPMHooks.source.script.detach_state(st, dequeue_event);
}
- if( HPMHooks.count.HP_script_detach_state_post ) {
+ if (HPMHooks.count.HP_script_detach_state_post > 0) {
void (*postHookFunc) (struct script_state *st, bool dequeue_event);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_detach_state_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_detach_state_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_detach_state_post[hIndex].func;
postHookFunc(st, dequeue_event);
}
@@ -63710,16 +71481,16 @@ void HP_script_detach_state(struct script_state *st, bool dequeue_event) {
int HP_script_db_free_code_sub(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_db_free_code_sub_pre ) {
+ if (HPMHooks.count.HP_script_db_free_code_sub_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_db_free_code_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_db_free_code_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_script_db_free_code_sub_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -63729,9 +71500,9 @@ int HP_script_db_free_code_sub(union DBKey key, struct DBData *data, va_list ap)
retVal___ = HPMHooks.source.script.db_free_code_sub(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_script_db_free_code_sub_post ) {
+ if (HPMHooks.count.HP_script_db_free_code_sub_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_db_free_code_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_db_free_code_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_script_db_free_code_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -63742,14 +71513,14 @@ int HP_script_db_free_code_sub(union DBKey key, struct DBData *data, va_list ap)
}
void HP_script_add_autobonus(const char *autobonus) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_add_autobonus_pre ) {
+ if (HPMHooks.count.HP_script_add_autobonus_pre > 0) {
void (*preHookFunc) (const char **autobonus);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_add_autobonus_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_add_autobonus_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_add_autobonus_pre[hIndex].func;
preHookFunc(&autobonus);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -63757,9 +71528,9 @@ void HP_script_add_autobonus(const char *autobonus) {
{
HPMHooks.source.script.add_autobonus(autobonus);
}
- if( HPMHooks.count.HP_script_add_autobonus_post ) {
+ if (HPMHooks.count.HP_script_add_autobonus_post > 0) {
void (*postHookFunc) (const char *autobonus);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_add_autobonus_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_add_autobonus_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_add_autobonus_post[hIndex].func;
postHookFunc(autobonus);
}
@@ -63769,14 +71540,14 @@ void HP_script_add_autobonus(const char *autobonus) {
int HP_script_menu_countoptions(const char *str, int max_count, int *total) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_menu_countoptions_pre ) {
+ if (HPMHooks.count.HP_script_menu_countoptions_pre > 0) {
int (*preHookFunc) (const char **str, int *max_count, int **total);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_menu_countoptions_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_menu_countoptions_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_menu_countoptions_pre[hIndex].func;
retVal___ = preHookFunc(&str, &max_count, &total);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -63784,28 +71555,121 @@ int HP_script_menu_countoptions(const char *str, int max_count, int *total) {
{
retVal___ = HPMHooks.source.script.menu_countoptions(str, max_count, total);
}
- if( HPMHooks.count.HP_script_menu_countoptions_post ) {
+ if (HPMHooks.count.HP_script_menu_countoptions_post > 0) {
int (*postHookFunc) (int retVal___, const char *str, int max_count, int *total);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_menu_countoptions_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_menu_countoptions_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_menu_countoptions_post[hIndex].func;
retVal___ = postHookFunc(retVal___, str, max_count, total);
}
}
return retVal___;
}
+int HP_script_buildin_recovery_sub(struct map_session_data *sd) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_script_buildin_recovery_sub_pre > 0) {
+ int (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_recovery_sub_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_script_buildin_recovery_sub_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.script.buildin_recovery_sub(sd);
+ }
+ if (HPMHooks.count.HP_script_buildin_recovery_sub_post > 0) {
+ int (*postHookFunc) (int retVal___, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_recovery_sub_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_script_buildin_recovery_sub_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd);
+ }
+ }
+ return retVal___;
+}
+int HP_script_buildin_recovery_pc_sub(struct map_session_data *sd, va_list ap) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_script_buildin_recovery_pc_sub_pre > 0) {
+ int (*preHookFunc) (struct map_session_data **sd, va_list ap);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_recovery_pc_sub_pre; hIndex++) {
+ va_list ap___copy; va_copy(ap___copy, ap);
+ preHookFunc = HPMHooks.list.HP_script_buildin_recovery_pc_sub_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, ap___copy);
+ va_end(ap___copy);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ va_list ap___copy; va_copy(ap___copy, ap);
+ retVal___ = HPMHooks.source.script.buildin_recovery_pc_sub(sd, ap___copy);
+ va_end(ap___copy);
+ }
+ if (HPMHooks.count.HP_script_buildin_recovery_pc_sub_post > 0) {
+ int (*postHookFunc) (int retVal___, struct map_session_data *sd, va_list ap);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_recovery_pc_sub_post; hIndex++) {
+ va_list ap___copy; va_copy(ap___copy, ap);
+ postHookFunc = HPMHooks.list.HP_script_buildin_recovery_pc_sub_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, ap___copy);
+ va_end(ap___copy);
+ }
+ }
+ return retVal___;
+}
+int HP_script_buildin_recovery_bl_sub(struct block_list *bl, va_list ap) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_script_buildin_recovery_bl_sub_pre > 0) {
+ int (*preHookFunc) (struct block_list **bl, va_list ap);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_recovery_bl_sub_pre; hIndex++) {
+ va_list ap___copy; va_copy(ap___copy, ap);
+ preHookFunc = HPMHooks.list.HP_script_buildin_recovery_bl_sub_pre[hIndex].func;
+ retVal___ = preHookFunc(&bl, ap___copy);
+ va_end(ap___copy);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ va_list ap___copy; va_copy(ap___copy, ap);
+ retVal___ = HPMHooks.source.script.buildin_recovery_bl_sub(bl, ap___copy);
+ va_end(ap___copy);
+ }
+ if (HPMHooks.count.HP_script_buildin_recovery_bl_sub_post > 0) {
+ int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_recovery_bl_sub_post; hIndex++) {
+ va_list ap___copy; va_copy(ap___copy, ap);
+ postHookFunc = HPMHooks.list.HP_script_buildin_recovery_bl_sub_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, bl, ap___copy);
+ va_end(ap___copy);
+ }
+ }
+ return retVal___;
+}
int HP_script_buildin_areawarp_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_buildin_areawarp_sub_pre ) {
+ if (HPMHooks.count.HP_script_buildin_areawarp_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_areawarp_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_areawarp_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_script_buildin_areawarp_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -63815,9 +71679,9 @@ int HP_script_buildin_areawarp_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.script.buildin_areawarp_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_script_buildin_areawarp_sub_post ) {
+ if (HPMHooks.count.HP_script_buildin_areawarp_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_areawarp_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_areawarp_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_script_buildin_areawarp_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -63829,16 +71693,16 @@ int HP_script_buildin_areawarp_sub(struct block_list *bl, va_list ap) {
int HP_script_buildin_areapercentheal_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_buildin_areapercentheal_sub_pre ) {
+ if (HPMHooks.count.HP_script_buildin_areapercentheal_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_areapercentheal_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_areapercentheal_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_script_buildin_areapercentheal_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -63848,9 +71712,9 @@ int HP_script_buildin_areapercentheal_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.script.buildin_areapercentheal_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_script_buildin_areapercentheal_sub_post ) {
+ if (HPMHooks.count.HP_script_buildin_areapercentheal_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_areapercentheal_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_areapercentheal_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_script_buildin_areapercentheal_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -63861,14 +71725,14 @@ int HP_script_buildin_areapercentheal_sub(struct block_list *bl, va_list ap) {
}
void HP_script_buildin_delitem_delete(struct map_session_data *sd, int idx, int *amount, bool delete_items) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_buildin_delitem_delete_pre ) {
+ if (HPMHooks.count.HP_script_buildin_delitem_delete_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *idx, int **amount, bool *delete_items);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_delitem_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_delitem_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_buildin_delitem_delete_pre[hIndex].func;
preHookFunc(&sd, &idx, &amount, &delete_items);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -63876,9 +71740,9 @@ void HP_script_buildin_delitem_delete(struct map_session_data *sd, int idx, int
{
HPMHooks.source.script.buildin_delitem_delete(sd, idx, amount, delete_items);
}
- if( HPMHooks.count.HP_script_buildin_delitem_delete_post ) {
+ if (HPMHooks.count.HP_script_buildin_delitem_delete_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int idx, int *amount, bool delete_items);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_delitem_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_delitem_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_buildin_delitem_delete_post[hIndex].func;
postHookFunc(sd, idx, amount, delete_items);
}
@@ -63888,14 +71752,14 @@ void HP_script_buildin_delitem_delete(struct map_session_data *sd, int idx, int
bool HP_script_buildin_delitem_search(struct map_session_data *sd, struct item *it, bool exact_match) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_script_buildin_delitem_search_pre ) {
+ if (HPMHooks.count.HP_script_buildin_delitem_search_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, struct item **it, bool *exact_match);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_delitem_search_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_delitem_search_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_buildin_delitem_search_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &it, &exact_match);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -63903,9 +71767,9 @@ bool HP_script_buildin_delitem_search(struct map_session_data *sd, struct item *
{
retVal___ = HPMHooks.source.script.buildin_delitem_search(sd, it, exact_match);
}
- if( HPMHooks.count.HP_script_buildin_delitem_search_post ) {
+ if (HPMHooks.count.HP_script_buildin_delitem_search_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, struct item *it, bool exact_match);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_delitem_search_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_delitem_search_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_buildin_delitem_search_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, it, exact_match);
}
@@ -63915,16 +71779,16 @@ bool HP_script_buildin_delitem_search(struct map_session_data *sd, struct item *
int HP_script_buildin_killmonster_sub_strip(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_buildin_killmonster_sub_strip_pre ) {
+ if (HPMHooks.count.HP_script_buildin_killmonster_sub_strip_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_killmonster_sub_strip_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_killmonster_sub_strip_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_script_buildin_killmonster_sub_strip_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -63934,9 +71798,9 @@ int HP_script_buildin_killmonster_sub_strip(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.script.buildin_killmonster_sub_strip(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_script_buildin_killmonster_sub_strip_post ) {
+ if (HPMHooks.count.HP_script_buildin_killmonster_sub_strip_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_killmonster_sub_strip_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_killmonster_sub_strip_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_script_buildin_killmonster_sub_strip_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -63948,16 +71812,16 @@ int HP_script_buildin_killmonster_sub_strip(struct block_list *bl, va_list ap) {
int HP_script_buildin_killmonster_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_buildin_killmonster_sub_pre ) {
+ if (HPMHooks.count.HP_script_buildin_killmonster_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_killmonster_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_killmonster_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_script_buildin_killmonster_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -63967,9 +71831,9 @@ int HP_script_buildin_killmonster_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.script.buildin_killmonster_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_script_buildin_killmonster_sub_post ) {
+ if (HPMHooks.count.HP_script_buildin_killmonster_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_killmonster_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_killmonster_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_script_buildin_killmonster_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -63981,16 +71845,16 @@ int HP_script_buildin_killmonster_sub(struct block_list *bl, va_list ap) {
int HP_script_buildin_killmonsterall_sub_strip(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_buildin_killmonsterall_sub_strip_pre ) {
+ if (HPMHooks.count.HP_script_buildin_killmonsterall_sub_strip_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_killmonsterall_sub_strip_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_killmonsterall_sub_strip_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_script_buildin_killmonsterall_sub_strip_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -64000,9 +71864,9 @@ int HP_script_buildin_killmonsterall_sub_strip(struct block_list *bl, va_list ap
retVal___ = HPMHooks.source.script.buildin_killmonsterall_sub_strip(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_script_buildin_killmonsterall_sub_strip_post ) {
+ if (HPMHooks.count.HP_script_buildin_killmonsterall_sub_strip_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_killmonsterall_sub_strip_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_killmonsterall_sub_strip_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_script_buildin_killmonsterall_sub_strip_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -64014,16 +71878,16 @@ int HP_script_buildin_killmonsterall_sub_strip(struct block_list *bl, va_list ap
int HP_script_buildin_killmonsterall_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_buildin_killmonsterall_sub_pre ) {
+ if (HPMHooks.count.HP_script_buildin_killmonsterall_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_killmonsterall_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_killmonsterall_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_script_buildin_killmonsterall_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -64033,9 +71897,9 @@ int HP_script_buildin_killmonsterall_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.script.buildin_killmonsterall_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_script_buildin_killmonsterall_sub_post ) {
+ if (HPMHooks.count.HP_script_buildin_killmonsterall_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_killmonsterall_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_killmonsterall_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_script_buildin_killmonsterall_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -64047,16 +71911,16 @@ int HP_script_buildin_killmonsterall_sub(struct block_list *bl, va_list ap) {
int HP_script_buildin_announce_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_buildin_announce_sub_pre ) {
+ if (HPMHooks.count.HP_script_buildin_announce_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_announce_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_announce_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_script_buildin_announce_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -64066,9 +71930,9 @@ int HP_script_buildin_announce_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.script.buildin_announce_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_script_buildin_announce_sub_post ) {
+ if (HPMHooks.count.HP_script_buildin_announce_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_announce_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_announce_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_script_buildin_announce_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -64080,16 +71944,16 @@ int HP_script_buildin_announce_sub(struct block_list *bl, va_list ap) {
int HP_script_buildin_getareausers_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_buildin_getareausers_sub_pre ) {
+ if (HPMHooks.count.HP_script_buildin_getareausers_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_getareausers_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_getareausers_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_script_buildin_getareausers_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -64099,9 +71963,9 @@ int HP_script_buildin_getareausers_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.script.buildin_getareausers_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_script_buildin_getareausers_sub_post ) {
+ if (HPMHooks.count.HP_script_buildin_getareausers_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_getareausers_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_getareausers_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_script_buildin_getareausers_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -64113,16 +71977,16 @@ int HP_script_buildin_getareausers_sub(struct block_list *bl, va_list ap) {
int HP_script_buildin_getareadropitem_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_buildin_getareadropitem_sub_pre ) {
+ if (HPMHooks.count.HP_script_buildin_getareadropitem_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_getareadropitem_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_getareadropitem_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_script_buildin_getareadropitem_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -64132,9 +71996,9 @@ int HP_script_buildin_getareadropitem_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.script.buildin_getareadropitem_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_script_buildin_getareadropitem_sub_post ) {
+ if (HPMHooks.count.HP_script_buildin_getareadropitem_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_getareadropitem_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_getareadropitem_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_script_buildin_getareadropitem_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -64146,16 +72010,16 @@ int HP_script_buildin_getareadropitem_sub(struct block_list *bl, va_list ap) {
int HP_script_mapflag_pvp_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_mapflag_pvp_sub_pre ) {
+ if (HPMHooks.count.HP_script_mapflag_pvp_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_mapflag_pvp_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_mapflag_pvp_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_script_mapflag_pvp_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -64165,9 +72029,9 @@ int HP_script_mapflag_pvp_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.script.mapflag_pvp_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_script_mapflag_pvp_sub_post ) {
+ if (HPMHooks.count.HP_script_mapflag_pvp_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_mapflag_pvp_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_mapflag_pvp_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_script_mapflag_pvp_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -64179,16 +72043,16 @@ int HP_script_mapflag_pvp_sub(struct block_list *bl, va_list ap) {
int HP_script_buildin_pvpoff_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_buildin_pvpoff_sub_pre ) {
+ if (HPMHooks.count.HP_script_buildin_pvpoff_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_pvpoff_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_pvpoff_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_script_buildin_pvpoff_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -64198,9 +72062,9 @@ int HP_script_buildin_pvpoff_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.script.buildin_pvpoff_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_script_buildin_pvpoff_sub_post ) {
+ if (HPMHooks.count.HP_script_buildin_pvpoff_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_pvpoff_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_pvpoff_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_script_buildin_pvpoff_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -64212,16 +72076,16 @@ int HP_script_buildin_pvpoff_sub(struct block_list *bl, va_list ap) {
int HP_script_buildin_maprespawnguildid_sub_pc(struct map_session_data *sd, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_buildin_maprespawnguildid_sub_pc_pre ) {
+ if (HPMHooks.count.HP_script_buildin_maprespawnguildid_sub_pc_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_maprespawnguildid_sub_pc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_maprespawnguildid_sub_pc_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_script_buildin_maprespawnguildid_sub_pc_pre[hIndex].func;
retVal___ = preHookFunc(&sd, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -64231,9 +72095,9 @@ int HP_script_buildin_maprespawnguildid_sub_pc(struct map_session_data *sd, va_l
retVal___ = HPMHooks.source.script.buildin_maprespawnguildid_sub_pc(sd, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_script_buildin_maprespawnguildid_sub_pc_post ) {
+ if (HPMHooks.count.HP_script_buildin_maprespawnguildid_sub_pc_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_maprespawnguildid_sub_pc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_maprespawnguildid_sub_pc_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_script_buildin_maprespawnguildid_sub_pc_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, ap___copy);
@@ -64245,16 +72109,16 @@ int HP_script_buildin_maprespawnguildid_sub_pc(struct map_session_data *sd, va_l
int HP_script_buildin_maprespawnguildid_sub_mob(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_buildin_maprespawnguildid_sub_mob_pre ) {
+ if (HPMHooks.count.HP_script_buildin_maprespawnguildid_sub_mob_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_maprespawnguildid_sub_mob_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_maprespawnguildid_sub_mob_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_script_buildin_maprespawnguildid_sub_mob_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -64264,9 +72128,9 @@ int HP_script_buildin_maprespawnguildid_sub_mob(struct block_list *bl, va_list a
retVal___ = HPMHooks.source.script.buildin_maprespawnguildid_sub_mob(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_script_buildin_maprespawnguildid_sub_mob_post ) {
+ if (HPMHooks.count.HP_script_buildin_maprespawnguildid_sub_mob_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_maprespawnguildid_sub_mob_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_maprespawnguildid_sub_mob_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_script_buildin_maprespawnguildid_sub_mob_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -64278,16 +72142,16 @@ int HP_script_buildin_maprespawnguildid_sub_mob(struct block_list *bl, va_list a
int HP_script_buildin_mobcount_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_buildin_mobcount_sub_pre ) {
+ if (HPMHooks.count.HP_script_buildin_mobcount_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_mobcount_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_mobcount_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_script_buildin_mobcount_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -64297,9 +72161,9 @@ int HP_script_buildin_mobcount_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.script.buildin_mobcount_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_script_buildin_mobcount_sub_post ) {
+ if (HPMHooks.count.HP_script_buildin_mobcount_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_mobcount_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_mobcount_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_script_buildin_mobcount_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -64311,16 +72175,16 @@ int HP_script_buildin_mobcount_sub(struct block_list *bl, va_list ap) {
int HP_script_playbgm_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_playbgm_sub_pre ) {
+ if (HPMHooks.count.HP_script_playbgm_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_playbgm_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_playbgm_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_script_playbgm_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -64330,9 +72194,9 @@ int HP_script_playbgm_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.script.playbgm_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_script_playbgm_sub_post ) {
+ if (HPMHooks.count.HP_script_playbgm_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_playbgm_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_playbgm_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_script_playbgm_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -64344,16 +72208,16 @@ int HP_script_playbgm_sub(struct block_list *bl, va_list ap) {
int HP_script_playbgm_foreachpc_sub(struct map_session_data *sd, va_list args) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_playbgm_foreachpc_sub_pre ) {
+ if (HPMHooks.count.HP_script_playbgm_foreachpc_sub_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_playbgm_foreachpc_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_playbgm_foreachpc_sub_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_script_playbgm_foreachpc_sub_pre[hIndex].func;
retVal___ = preHookFunc(&sd, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -64363,9 +72227,9 @@ int HP_script_playbgm_foreachpc_sub(struct map_session_data *sd, va_list args) {
retVal___ = HPMHooks.source.script.playbgm_foreachpc_sub(sd, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_script_playbgm_foreachpc_sub_post ) {
+ if (HPMHooks.count.HP_script_playbgm_foreachpc_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_playbgm_foreachpc_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_playbgm_foreachpc_sub_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_script_playbgm_foreachpc_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, args___copy);
@@ -64377,16 +72241,16 @@ int HP_script_playbgm_foreachpc_sub(struct map_session_data *sd, va_list args) {
int HP_script_soundeffect_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_soundeffect_sub_pre ) {
+ if (HPMHooks.count.HP_script_soundeffect_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_soundeffect_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_soundeffect_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_script_soundeffect_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -64396,9 +72260,9 @@ int HP_script_soundeffect_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.script.soundeffect_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_script_soundeffect_sub_post ) {
+ if (HPMHooks.count.HP_script_soundeffect_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_soundeffect_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_soundeffect_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_script_soundeffect_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -64410,14 +72274,14 @@ int HP_script_soundeffect_sub(struct block_list *bl, va_list ap) {
int HP_script_buildin_query_sql_sub(struct script_state *st, struct Sql *handle) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_buildin_query_sql_sub_pre ) {
+ if (HPMHooks.count.HP_script_buildin_query_sql_sub_pre > 0) {
int (*preHookFunc) (struct script_state **st, struct Sql **handle);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_query_sql_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_query_sql_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_buildin_query_sql_sub_pre[hIndex].func;
retVal___ = preHookFunc(&st, &handle);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -64425,9 +72289,9 @@ int HP_script_buildin_query_sql_sub(struct script_state *st, struct Sql *handle)
{
retVal___ = HPMHooks.source.script.buildin_query_sql_sub(st, handle);
}
- if( HPMHooks.count.HP_script_buildin_query_sql_sub_post ) {
+ if (HPMHooks.count.HP_script_buildin_query_sql_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct script_state *st, struct Sql *handle);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_query_sql_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_query_sql_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_buildin_query_sql_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, st, handle);
}
@@ -64437,16 +72301,16 @@ int HP_script_buildin_query_sql_sub(struct script_state *st, struct Sql *handle)
int HP_script_buildin_instance_warpall_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_buildin_instance_warpall_sub_pre ) {
+ if (HPMHooks.count.HP_script_buildin_instance_warpall_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_instance_warpall_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_instance_warpall_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_script_buildin_instance_warpall_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -64456,9 +72320,9 @@ int HP_script_buildin_instance_warpall_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.script.buildin_instance_warpall_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_script_buildin_instance_warpall_sub_post ) {
+ if (HPMHooks.count.HP_script_buildin_instance_warpall_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_instance_warpall_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_instance_warpall_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_script_buildin_instance_warpall_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -64470,16 +72334,16 @@ int HP_script_buildin_instance_warpall_sub(struct block_list *bl, va_list ap) {
int HP_script_buildin_mobuseskill_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_buildin_mobuseskill_sub_pre ) {
+ if (HPMHooks.count.HP_script_buildin_mobuseskill_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_mobuseskill_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_mobuseskill_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_script_buildin_mobuseskill_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -64489,9 +72353,9 @@ int HP_script_buildin_mobuseskill_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.script.buildin_mobuseskill_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_script_buildin_mobuseskill_sub_post ) {
+ if (HPMHooks.count.HP_script_buildin_mobuseskill_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_mobuseskill_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_buildin_mobuseskill_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_script_buildin_mobuseskill_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -64503,16 +72367,16 @@ int HP_script_buildin_mobuseskill_sub(struct block_list *bl, va_list ap) {
int HP_script_cleanfloor_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_cleanfloor_sub_pre ) {
+ if (HPMHooks.count.HP_script_cleanfloor_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_cleanfloor_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_cleanfloor_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_script_cleanfloor_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -64522,9 +72386,9 @@ int HP_script_cleanfloor_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.script.cleanfloor_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_script_cleanfloor_sub_post ) {
+ if (HPMHooks.count.HP_script_cleanfloor_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_cleanfloor_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_cleanfloor_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_script_cleanfloor_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -64536,14 +72400,14 @@ int HP_script_cleanfloor_sub(struct block_list *bl, va_list ap) {
int HP_script_run_func(struct script_state *st) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_run_func_pre ) {
+ if (HPMHooks.count.HP_script_run_func_pre > 0) {
int (*preHookFunc) (struct script_state **st);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_run_func_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_run_func_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_run_func_pre[hIndex].func;
retVal___ = preHookFunc(&st);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -64551,26 +72415,53 @@ int HP_script_run_func(struct script_state *st) {
{
retVal___ = HPMHooks.source.script.run_func(st);
}
- if( HPMHooks.count.HP_script_run_func_post ) {
+ if (HPMHooks.count.HP_script_run_func_post > 0) {
int (*postHookFunc) (int retVal___, struct script_state *st);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_run_func_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_run_func_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_run_func_post[hIndex].func;
retVal___ = postHookFunc(retVal___, st);
}
}
return retVal___;
}
+bool HP_script_sprintf_helper(struct script_state *st, int start, struct StringBuf *out) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_script_sprintf_helper_pre > 0) {
+ bool (*preHookFunc) (struct script_state **st, int *start, struct StringBuf **out);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_sprintf_helper_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_script_sprintf_helper_pre[hIndex].func;
+ retVal___ = preHookFunc(&st, &start, &out);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.script.sprintf_helper(st, start, out);
+ }
+ if (HPMHooks.count.HP_script_sprintf_helper_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct script_state *st, int start, struct StringBuf *out);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_sprintf_helper_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_script_sprintf_helper_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, st, start, out);
+ }
+ }
+ return retVal___;
+}
const char* HP_script_getfuncname(struct script_state *st) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_script_getfuncname_pre ) {
+ if (HPMHooks.count.HP_script_getfuncname_pre > 0) {
const char* (*preHookFunc) (struct script_state **st);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_getfuncname_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_getfuncname_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_getfuncname_pre[hIndex].func;
retVal___ = preHookFunc(&st);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -64578,9 +72469,9 @@ const char* HP_script_getfuncname(struct script_state *st) {
{
retVal___ = HPMHooks.source.script.getfuncname(st);
}
- if( HPMHooks.count.HP_script_getfuncname_post ) {
+ if (HPMHooks.count.HP_script_getfuncname_post > 0) {
const char* (*postHookFunc) (const char* retVal___, struct script_state *st);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_getfuncname_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_getfuncname_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_getfuncname_post[hIndex].func;
retVal___ = postHookFunc(retVal___, st);
}
@@ -64590,14 +72481,14 @@ const char* HP_script_getfuncname(struct script_state *st) {
unsigned int HP_script_calc_hash_ci(const char *p) {
int hIndex = 0;
unsigned int retVal___ = 0;
- if( HPMHooks.count.HP_script_calc_hash_ci_pre ) {
+ if (HPMHooks.count.HP_script_calc_hash_ci_pre > 0) {
unsigned int (*preHookFunc) (const char **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_calc_hash_ci_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_calc_hash_ci_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_calc_hash_ci_pre[hIndex].func;
retVal___ = preHookFunc(&p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -64605,9 +72496,9 @@ unsigned int HP_script_calc_hash_ci(const char *p) {
{
retVal___ = HPMHooks.source.script.calc_hash_ci(p);
}
- if( HPMHooks.count.HP_script_calc_hash_ci_post ) {
+ if (HPMHooks.count.HP_script_calc_hash_ci_post > 0) {
unsigned int (*postHookFunc) (unsigned int retVal___, const char *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_calc_hash_ci_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_calc_hash_ci_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_calc_hash_ci_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p);
}
@@ -64617,14 +72508,14 @@ unsigned int HP_script_calc_hash_ci(const char *p) {
struct reg_db* HP_script_array_src(struct script_state *st, struct map_session_data *sd, const char *name, struct reg_db *ref) {
int hIndex = 0;
struct reg_db* retVal___ = NULL;
- if( HPMHooks.count.HP_script_array_src_pre ) {
+ if (HPMHooks.count.HP_script_array_src_pre > 0) {
struct reg_db* (*preHookFunc) (struct script_state **st, struct map_session_data **sd, const char **name, struct reg_db **ref);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_array_src_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_array_src_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_array_src_pre[hIndex].func;
retVal___ = preHookFunc(&st, &sd, &name, &ref);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -64632,9 +72523,9 @@ struct reg_db* HP_script_array_src(struct script_state *st, struct map_session_d
{
retVal___ = HPMHooks.source.script.array_src(st, sd, name, ref);
}
- if( HPMHooks.count.HP_script_array_src_post ) {
+ if (HPMHooks.count.HP_script_array_src_post > 0) {
struct reg_db* (*postHookFunc) (struct reg_db* retVal___, struct script_state *st, struct map_session_data *sd, const char *name, struct reg_db *ref);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_array_src_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_array_src_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_array_src_post[hIndex].func;
retVal___ = postHookFunc(retVal___, st, sd, name, ref);
}
@@ -64643,14 +72534,14 @@ struct reg_db* HP_script_array_src(struct script_state *st, struct map_session_d
}
void HP_script_array_update(struct reg_db *src, int64 num, bool empty) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_array_update_pre ) {
+ if (HPMHooks.count.HP_script_array_update_pre > 0) {
void (*preHookFunc) (struct reg_db **src, int64 *num, bool *empty);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_array_update_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_array_update_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_array_update_pre[hIndex].func;
preHookFunc(&src, &num, &empty);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -64658,9 +72549,9 @@ void HP_script_array_update(struct reg_db *src, int64 num, bool empty) {
{
HPMHooks.source.script.array_update(src, num, empty);
}
- if( HPMHooks.count.HP_script_array_update_post ) {
+ if (HPMHooks.count.HP_script_array_update_post > 0) {
void (*postHookFunc) (struct reg_db *src, int64 num, bool empty);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_array_update_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_array_update_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_array_update_post[hIndex].func;
postHookFunc(src, num, empty);
}
@@ -64669,14 +72560,14 @@ void HP_script_array_update(struct reg_db *src, int64 num, bool empty) {
}
void HP_script_array_delete(struct reg_db *src, struct script_array *sa) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_array_delete_pre ) {
+ if (HPMHooks.count.HP_script_array_delete_pre > 0) {
void (*preHookFunc) (struct reg_db **src, struct script_array **sa);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_array_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_array_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_array_delete_pre[hIndex].func;
preHookFunc(&src, &sa);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -64684,9 +72575,9 @@ void HP_script_array_delete(struct reg_db *src, struct script_array *sa) {
{
HPMHooks.source.script.array_delete(src, sa);
}
- if( HPMHooks.count.HP_script_array_delete_post ) {
+ if (HPMHooks.count.HP_script_array_delete_post > 0) {
void (*postHookFunc) (struct reg_db *src, struct script_array *sa);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_array_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_array_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_array_delete_post[hIndex].func;
postHookFunc(src, sa);
}
@@ -64695,14 +72586,14 @@ void HP_script_array_delete(struct reg_db *src, struct script_array *sa) {
}
void HP_script_array_remove_member(struct reg_db *src, struct script_array *sa, unsigned int idx) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_array_remove_member_pre ) {
+ if (HPMHooks.count.HP_script_array_remove_member_pre > 0) {
void (*preHookFunc) (struct reg_db **src, struct script_array **sa, unsigned int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_array_remove_member_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_array_remove_member_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_array_remove_member_pre[hIndex].func;
preHookFunc(&src, &sa, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -64710,9 +72601,9 @@ void HP_script_array_remove_member(struct reg_db *src, struct script_array *sa,
{
HPMHooks.source.script.array_remove_member(src, sa, idx);
}
- if( HPMHooks.count.HP_script_array_remove_member_post ) {
+ if (HPMHooks.count.HP_script_array_remove_member_post > 0) {
void (*postHookFunc) (struct reg_db *src, struct script_array *sa, unsigned int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_array_remove_member_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_array_remove_member_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_array_remove_member_post[hIndex].func;
postHookFunc(src, sa, idx);
}
@@ -64721,14 +72612,14 @@ void HP_script_array_remove_member(struct reg_db *src, struct script_array *sa,
}
void HP_script_array_add_member(struct script_array *sa, unsigned int idx) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_array_add_member_pre ) {
+ if (HPMHooks.count.HP_script_array_add_member_pre > 0) {
void (*preHookFunc) (struct script_array **sa, unsigned int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_array_add_member_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_array_add_member_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_array_add_member_pre[hIndex].func;
preHookFunc(&sa, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -64736,9 +72627,9 @@ void HP_script_array_add_member(struct script_array *sa, unsigned int idx) {
{
HPMHooks.source.script.array_add_member(sa, idx);
}
- if( HPMHooks.count.HP_script_array_add_member_post ) {
+ if (HPMHooks.count.HP_script_array_add_member_post > 0) {
void (*postHookFunc) (struct script_array *sa, unsigned int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_array_add_member_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_array_add_member_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_array_add_member_post[hIndex].func;
postHookFunc(sa, idx);
}
@@ -64748,14 +72639,14 @@ void HP_script_array_add_member(struct script_array *sa, unsigned int idx) {
unsigned int HP_script_array_size(struct script_state *st, struct map_session_data *sd, const char *name, struct reg_db *ref) {
int hIndex = 0;
unsigned int retVal___ = 0;
- if( HPMHooks.count.HP_script_array_size_pre ) {
+ if (HPMHooks.count.HP_script_array_size_pre > 0) {
unsigned int (*preHookFunc) (struct script_state **st, struct map_session_data **sd, const char **name, struct reg_db **ref);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_array_size_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_array_size_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_array_size_pre[hIndex].func;
retVal___ = preHookFunc(&st, &sd, &name, &ref);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -64763,9 +72654,9 @@ unsigned int HP_script_array_size(struct script_state *st, struct map_session_da
{
retVal___ = HPMHooks.source.script.array_size(st, sd, name, ref);
}
- if( HPMHooks.count.HP_script_array_size_post ) {
+ if (HPMHooks.count.HP_script_array_size_post > 0) {
unsigned int (*postHookFunc) (unsigned int retVal___, struct script_state *st, struct map_session_data *sd, const char *name, struct reg_db *ref);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_array_size_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_array_size_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_array_size_post[hIndex].func;
retVal___ = postHookFunc(retVal___, st, sd, name, ref);
}
@@ -64775,14 +72666,14 @@ unsigned int HP_script_array_size(struct script_state *st, struct map_session_da
unsigned int HP_script_array_highest_key(struct script_state *st, struct map_session_data *sd, const char *name, struct reg_db *ref) {
int hIndex = 0;
unsigned int retVal___ = 0;
- if( HPMHooks.count.HP_script_array_highest_key_pre ) {
+ if (HPMHooks.count.HP_script_array_highest_key_pre > 0) {
unsigned int (*preHookFunc) (struct script_state **st, struct map_session_data **sd, const char **name, struct reg_db **ref);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_array_highest_key_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_array_highest_key_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_array_highest_key_pre[hIndex].func;
retVal___ = preHookFunc(&st, &sd, &name, &ref);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -64790,9 +72681,9 @@ unsigned int HP_script_array_highest_key(struct script_state *st, struct map_ses
{
retVal___ = HPMHooks.source.script.array_highest_key(st, sd, name, ref);
}
- if( HPMHooks.count.HP_script_array_highest_key_post ) {
+ if (HPMHooks.count.HP_script_array_highest_key_post > 0) {
unsigned int (*postHookFunc) (unsigned int retVal___, struct script_state *st, struct map_session_data *sd, const char *name, struct reg_db *ref);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_array_highest_key_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_array_highest_key_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_array_highest_key_post[hIndex].func;
retVal___ = postHookFunc(retVal___, st, sd, name, ref);
}
@@ -64802,16 +72693,16 @@ unsigned int HP_script_array_highest_key(struct script_state *st, struct map_ses
int HP_script_array_free_db(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_array_free_db_pre ) {
+ if (HPMHooks.count.HP_script_array_free_db_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_array_free_db_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_array_free_db_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_script_array_free_db_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -64821,9 +72712,9 @@ int HP_script_array_free_db(union DBKey key, struct DBData *data, va_list ap) {
retVal___ = HPMHooks.source.script.array_free_db(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_script_array_free_db_post ) {
+ if (HPMHooks.count.HP_script_array_free_db_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_array_free_db_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_array_free_db_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_script_array_free_db_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -64834,14 +72725,14 @@ int HP_script_array_free_db(union DBKey key, struct DBData *data, va_list ap) {
}
void HP_script_array_ensure_zero(struct script_state *st, struct map_session_data *sd, int64 uid, struct reg_db *ref) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_array_ensure_zero_pre ) {
+ if (HPMHooks.count.HP_script_array_ensure_zero_pre > 0) {
void (*preHookFunc) (struct script_state **st, struct map_session_data **sd, int64 *uid, struct reg_db **ref);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_array_ensure_zero_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_array_ensure_zero_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_array_ensure_zero_pre[hIndex].func;
preHookFunc(&st, &sd, &uid, &ref);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -64849,9 +72740,9 @@ void HP_script_array_ensure_zero(struct script_state *st, struct map_session_dat
{
HPMHooks.source.script.array_ensure_zero(st, sd, uid, ref);
}
- if( HPMHooks.count.HP_script_array_ensure_zero_post ) {
+ if (HPMHooks.count.HP_script_array_ensure_zero_post > 0) {
void (*postHookFunc) (struct script_state *st, struct map_session_data *sd, int64 uid, struct reg_db *ref);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_array_ensure_zero_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_array_ensure_zero_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_array_ensure_zero_post[hIndex].func;
postHookFunc(st, sd, uid, ref);
}
@@ -64860,14 +72751,14 @@ void HP_script_array_ensure_zero(struct script_state *st, struct map_session_dat
}
void HP_script_reg_destroy_single(struct map_session_data *sd, int64 reg, struct script_reg_state *data) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_reg_destroy_single_pre ) {
+ if (HPMHooks.count.HP_script_reg_destroy_single_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int64 *reg, struct script_reg_state **data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_reg_destroy_single_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_reg_destroy_single_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_reg_destroy_single_pre[hIndex].func;
preHookFunc(&sd, &reg, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -64875,9 +72766,9 @@ void HP_script_reg_destroy_single(struct map_session_data *sd, int64 reg, struct
{
HPMHooks.source.script.reg_destroy_single(sd, reg, data);
}
- if( HPMHooks.count.HP_script_reg_destroy_single_post ) {
+ if (HPMHooks.count.HP_script_reg_destroy_single_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int64 reg, struct script_reg_state *data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_reg_destroy_single_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_reg_destroy_single_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_reg_destroy_single_post[hIndex].func;
postHookFunc(sd, reg, data);
}
@@ -64887,16 +72778,16 @@ void HP_script_reg_destroy_single(struct map_session_data *sd, int64 reg, struct
int HP_script_reg_destroy(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_reg_destroy_pre ) {
+ if (HPMHooks.count.HP_script_reg_destroy_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_reg_destroy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_reg_destroy_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_script_reg_destroy_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -64906,9 +72797,9 @@ int HP_script_reg_destroy(union DBKey key, struct DBData *data, va_list ap) {
retVal___ = HPMHooks.source.script.reg_destroy(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_script_reg_destroy_post ) {
+ if (HPMHooks.count.HP_script_reg_destroy_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_reg_destroy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_reg_destroy_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_script_reg_destroy_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -64919,14 +72810,14 @@ int HP_script_reg_destroy(union DBKey key, struct DBData *data, va_list ap) {
}
void HP_script_generic_ui_array_expand(unsigned int plus) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_generic_ui_array_expand_pre ) {
+ if (HPMHooks.count.HP_script_generic_ui_array_expand_pre > 0) {
void (*preHookFunc) (unsigned int *plus);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_generic_ui_array_expand_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_generic_ui_array_expand_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_generic_ui_array_expand_pre[hIndex].func;
preHookFunc(&plus);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -64934,9 +72825,9 @@ void HP_script_generic_ui_array_expand(unsigned int plus) {
{
HPMHooks.source.script.generic_ui_array_expand(plus);
}
- if( HPMHooks.count.HP_script_generic_ui_array_expand_post ) {
+ if (HPMHooks.count.HP_script_generic_ui_array_expand_post > 0) {
void (*postHookFunc) (unsigned int plus);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_generic_ui_array_expand_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_generic_ui_array_expand_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_generic_ui_array_expand_post[hIndex].func;
postHookFunc(plus);
}
@@ -64946,14 +72837,14 @@ void HP_script_generic_ui_array_expand(unsigned int plus) {
unsigned int* HP_script_array_cpy_list(struct script_array *sa) {
int hIndex = 0;
unsigned int* retVal___ = NULL;
- if( HPMHooks.count.HP_script_array_cpy_list_pre ) {
+ if (HPMHooks.count.HP_script_array_cpy_list_pre > 0) {
unsigned int* (*preHookFunc) (struct script_array **sa);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_array_cpy_list_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_array_cpy_list_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_array_cpy_list_pre[hIndex].func;
retVal___ = preHookFunc(&sa);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -64961,9 +72852,9 @@ unsigned int* HP_script_array_cpy_list(struct script_array *sa) {
{
retVal___ = HPMHooks.source.script.array_cpy_list(sa);
}
- if( HPMHooks.count.HP_script_array_cpy_list_post ) {
+ if (HPMHooks.count.HP_script_array_cpy_list_post > 0) {
unsigned int* (*postHookFunc) (unsigned int* retVal___, struct script_array *sa);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_array_cpy_list_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_array_cpy_list_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_array_cpy_list_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sa);
}
@@ -64972,14 +72863,14 @@ unsigned int* HP_script_array_cpy_list(struct script_array *sa) {
}
void HP_script_hardcoded_constants(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_hardcoded_constants_pre ) {
+ if (HPMHooks.count.HP_script_hardcoded_constants_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_hardcoded_constants_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_hardcoded_constants_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_hardcoded_constants_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -64987,9 +72878,9 @@ void HP_script_hardcoded_constants(void) {
{
HPMHooks.source.script.hardcoded_constants();
}
- if( HPMHooks.count.HP_script_hardcoded_constants_post ) {
+ if (HPMHooks.count.HP_script_hardcoded_constants_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_hardcoded_constants_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_hardcoded_constants_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_hardcoded_constants_post[hIndex].func;
postHookFunc();
}
@@ -64999,14 +72890,14 @@ void HP_script_hardcoded_constants(void) {
unsigned short HP_script_mapindexname2id(struct script_state *st, const char *name) {
int hIndex = 0;
unsigned short retVal___ = 0;
- if( HPMHooks.count.HP_script_mapindexname2id_pre ) {
+ if (HPMHooks.count.HP_script_mapindexname2id_pre > 0) {
unsigned short (*preHookFunc) (struct script_state **st, const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_mapindexname2id_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_mapindexname2id_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_mapindexname2id_pre[hIndex].func;
retVal___ = preHookFunc(&st, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -65014,9 +72905,9 @@ unsigned short HP_script_mapindexname2id(struct script_state *st, const char *na
{
retVal___ = HPMHooks.source.script.mapindexname2id(st, name);
}
- if( HPMHooks.count.HP_script_mapindexname2id_post ) {
+ if (HPMHooks.count.HP_script_mapindexname2id_post > 0) {
unsigned short (*postHookFunc) (unsigned short retVal___, struct script_state *st, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_mapindexname2id_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_mapindexname2id_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_mapindexname2id_post[hIndex].func;
retVal___ = postHookFunc(retVal___, st, name);
}
@@ -65026,14 +72917,14 @@ unsigned short HP_script_mapindexname2id(struct script_state *st, const char *na
int HP_script_string_dup(char *str) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_string_dup_pre ) {
+ if (HPMHooks.count.HP_script_string_dup_pre > 0) {
int (*preHookFunc) (char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_string_dup_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_string_dup_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_string_dup_pre[hIndex].func;
retVal___ = preHookFunc(&str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -65041,9 +72932,9 @@ int HP_script_string_dup(char *str) {
{
retVal___ = HPMHooks.source.script.string_dup(str);
}
- if( HPMHooks.count.HP_script_string_dup_post ) {
+ if (HPMHooks.count.HP_script_string_dup_post > 0) {
int (*postHookFunc) (int retVal___, char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_string_dup_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_string_dup_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_string_dup_post[hIndex].func;
retVal___ = postHookFunc(retVal___, str);
}
@@ -65052,14 +72943,14 @@ int HP_script_string_dup(char *str) {
}
void HP_script_load_translations(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_load_translations_pre ) {
+ if (HPMHooks.count.HP_script_load_translations_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_load_translations_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_load_translations_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_load_translations_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -65067,9 +72958,9 @@ void HP_script_load_translations(void) {
{
HPMHooks.source.script.load_translations();
}
- if( HPMHooks.count.HP_script_load_translations_post ) {
+ if (HPMHooks.count.HP_script_load_translations_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_load_translations_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_load_translations_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_load_translations_post[hIndex].func;
postHookFunc();
}
@@ -65079,14 +72970,14 @@ void HP_script_load_translations(void) {
bool HP_script_load_translation_addstring(const char *file, uint8 lang_id, const char *msgctxt, const struct script_string_buf *msgid, const struct script_string_buf *msgstr) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_script_load_translation_addstring_pre ) {
+ if (HPMHooks.count.HP_script_load_translation_addstring_pre > 0) {
bool (*preHookFunc) (const char **file, uint8 *lang_id, const char **msgctxt, const struct script_string_buf **msgid, const struct script_string_buf **msgstr);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_load_translation_addstring_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_load_translation_addstring_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_load_translation_addstring_pre[hIndex].func;
retVal___ = preHookFunc(&file, &lang_id, &msgctxt, &msgid, &msgstr);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -65094,9 +72985,9 @@ bool HP_script_load_translation_addstring(const char *file, uint8 lang_id, const
{
retVal___ = HPMHooks.source.script.load_translation_addstring(file, lang_id, msgctxt, msgid, msgstr);
}
- if( HPMHooks.count.HP_script_load_translation_addstring_post ) {
+ if (HPMHooks.count.HP_script_load_translation_addstring_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *file, uint8 lang_id, const char *msgctxt, const struct script_string_buf *msgid, const struct script_string_buf *msgstr);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_load_translation_addstring_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_load_translation_addstring_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_load_translation_addstring_post[hIndex].func;
retVal___ = postHookFunc(retVal___, file, lang_id, msgctxt, msgid, msgstr);
}
@@ -65106,14 +72997,14 @@ bool HP_script_load_translation_addstring(const char *file, uint8 lang_id, const
int HP_script_load_translation(const char *file, uint8 lang_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_load_translation_pre ) {
+ if (HPMHooks.count.HP_script_load_translation_pre > 0) {
int (*preHookFunc) (const char **file, uint8 *lang_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_load_translation_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_load_translation_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_load_translation_pre[hIndex].func;
retVal___ = preHookFunc(&file, &lang_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -65121,9 +73012,9 @@ int HP_script_load_translation(const char *file, uint8 lang_id) {
{
retVal___ = HPMHooks.source.script.load_translation(file, lang_id);
}
- if( HPMHooks.count.HP_script_load_translation_post ) {
+ if (HPMHooks.count.HP_script_load_translation_post > 0) {
int (*postHookFunc) (int retVal___, const char *file, uint8 lang_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_load_translation_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_load_translation_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_load_translation_post[hIndex].func;
retVal___ = postHookFunc(retVal___, file, lang_id);
}
@@ -65133,16 +73024,16 @@ int HP_script_load_translation(const char *file, uint8 lang_id) {
int HP_script_translation_db_destroyer(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_translation_db_destroyer_pre ) {
+ if (HPMHooks.count.HP_script_translation_db_destroyer_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_translation_db_destroyer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_translation_db_destroyer_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_script_translation_db_destroyer_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -65152,9 +73043,9 @@ int HP_script_translation_db_destroyer(union DBKey key, struct DBData *data, va_
retVal___ = HPMHooks.source.script.translation_db_destroyer(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_script_translation_db_destroyer_post ) {
+ if (HPMHooks.count.HP_script_translation_db_destroyer_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_translation_db_destroyer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_translation_db_destroyer_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_script_translation_db_destroyer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -65165,14 +73056,14 @@ int HP_script_translation_db_destroyer(union DBKey key, struct DBData *data, va_
}
void HP_script_clear_translations(bool reload) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_clear_translations_pre ) {
+ if (HPMHooks.count.HP_script_clear_translations_pre > 0) {
void (*preHookFunc) (bool *reload);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_clear_translations_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_clear_translations_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_clear_translations_pre[hIndex].func;
preHookFunc(&reload);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -65180,9 +73071,9 @@ void HP_script_clear_translations(bool reload) {
{
HPMHooks.source.script.clear_translations(reload);
}
- if( HPMHooks.count.HP_script_clear_translations_post ) {
+ if (HPMHooks.count.HP_script_clear_translations_post > 0) {
void (*postHookFunc) (bool reload);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_clear_translations_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_clear_translations_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_clear_translations_post[hIndex].func;
postHookFunc(reload);
}
@@ -65192,14 +73083,14 @@ void HP_script_clear_translations(bool reload) {
int HP_script_parse_cleanup_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_script_parse_cleanup_timer_pre ) {
+ if (HPMHooks.count.HP_script_parse_cleanup_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_cleanup_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_cleanup_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_parse_cleanup_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -65207,9 +73098,9 @@ int HP_script_parse_cleanup_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.script.parse_cleanup_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_script_parse_cleanup_timer_post ) {
+ if (HPMHooks.count.HP_script_parse_cleanup_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_cleanup_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_cleanup_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_parse_cleanup_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -65219,14 +73110,14 @@ int HP_script_parse_cleanup_timer(int tid, int64 tick, int id, intptr_t data) {
uint8 HP_script_add_language(const char *name) {
int hIndex = 0;
uint8 retVal___ = 0;
- if( HPMHooks.count.HP_script_add_language_pre ) {
+ if (HPMHooks.count.HP_script_add_language_pre > 0) {
uint8 (*preHookFunc) (const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_add_language_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_add_language_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_add_language_pre[hIndex].func;
retVal___ = preHookFunc(&name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -65234,9 +73125,9 @@ uint8 HP_script_add_language(const char *name) {
{
retVal___ = HPMHooks.source.script.add_language(name);
}
- if( HPMHooks.count.HP_script_add_language_post ) {
+ if (HPMHooks.count.HP_script_add_language_post > 0) {
uint8 (*postHookFunc) (uint8 retVal___, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_add_language_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_add_language_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_add_language_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name);
}
@@ -65246,14 +73137,14 @@ uint8 HP_script_add_language(const char *name) {
const char* HP_script_get_translation_file_name(const char *file) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_script_get_translation_file_name_pre ) {
+ if (HPMHooks.count.HP_script_get_translation_file_name_pre > 0) {
const char* (*preHookFunc) (const char **file);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_get_translation_file_name_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_translation_file_name_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_get_translation_file_name_pre[hIndex].func;
retVal___ = preHookFunc(&file);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -65261,9 +73152,9 @@ const char* HP_script_get_translation_file_name(const char *file) {
{
retVal___ = HPMHooks.source.script.get_translation_file_name(file);
}
- if( HPMHooks.count.HP_script_get_translation_file_name_post ) {
+ if (HPMHooks.count.HP_script_get_translation_file_name_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *file);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_get_translation_file_name_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_get_translation_file_name_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_get_translation_file_name_post[hIndex].func;
retVal___ = postHookFunc(retVal___, file);
}
@@ -65272,14 +73163,14 @@ const char* HP_script_get_translation_file_name(const char *file) {
}
void HP_script_parser_clean_leftovers(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_parser_clean_leftovers_pre ) {
+ if (HPMHooks.count.HP_script_parser_clean_leftovers_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parser_clean_leftovers_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parser_clean_leftovers_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_parser_clean_leftovers_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -65287,9 +73178,9 @@ void HP_script_parser_clean_leftovers(void) {
{
HPMHooks.source.script.parser_clean_leftovers();
}
- if( HPMHooks.count.HP_script_parser_clean_leftovers_post ) {
+ if (HPMHooks.count.HP_script_parser_clean_leftovers_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parser_clean_leftovers_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parser_clean_leftovers_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_parser_clean_leftovers_post[hIndex].func;
postHookFunc();
}
@@ -65298,14 +73189,14 @@ void HP_script_parser_clean_leftovers(void) {
}
void HP_script_run_use_script(struct map_session_data *sd, struct item_data *data, int oid) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_run_use_script_pre ) {
+ if (HPMHooks.count.HP_script_run_use_script_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct item_data **data, int *oid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_run_use_script_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_run_use_script_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_run_use_script_pre[hIndex].func;
preHookFunc(&sd, &data, &oid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -65313,9 +73204,9 @@ void HP_script_run_use_script(struct map_session_data *sd, struct item_data *dat
{
HPMHooks.source.script.run_use_script(sd, data, oid);
}
- if( HPMHooks.count.HP_script_run_use_script_post ) {
+ if (HPMHooks.count.HP_script_run_use_script_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct item_data *data, int oid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_run_use_script_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_run_use_script_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_run_use_script_post[hIndex].func;
postHookFunc(sd, data, oid);
}
@@ -65324,14 +73215,14 @@ void HP_script_run_use_script(struct map_session_data *sd, struct item_data *dat
}
void HP_script_run_item_equip_script(struct map_session_data *sd, struct item_data *data, int oid) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_run_item_equip_script_pre ) {
+ if (HPMHooks.count.HP_script_run_item_equip_script_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct item_data **data, int *oid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_run_item_equip_script_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_run_item_equip_script_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_run_item_equip_script_pre[hIndex].func;
preHookFunc(&sd, &data, &oid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -65339,9 +73230,9 @@ void HP_script_run_item_equip_script(struct map_session_data *sd, struct item_da
{
HPMHooks.source.script.run_item_equip_script(sd, data, oid);
}
- if( HPMHooks.count.HP_script_run_item_equip_script_post ) {
+ if (HPMHooks.count.HP_script_run_item_equip_script_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct item_data *data, int oid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_run_item_equip_script_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_run_item_equip_script_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_run_item_equip_script_post[hIndex].func;
postHookFunc(sd, data, oid);
}
@@ -65350,14 +73241,14 @@ void HP_script_run_item_equip_script(struct map_session_data *sd, struct item_da
}
void HP_script_run_item_unequip_script(struct map_session_data *sd, struct item_data *data, int oid) {
int hIndex = 0;
- if( HPMHooks.count.HP_script_run_item_unequip_script_pre ) {
+ if (HPMHooks.count.HP_script_run_item_unequip_script_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct item_data **data, int *oid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_run_item_unequip_script_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_run_item_unequip_script_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_run_item_unequip_script_pre[hIndex].func;
preHookFunc(&sd, &data, &oid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -65365,9 +73256,9 @@ void HP_script_run_item_unequip_script(struct map_session_data *sd, struct item_
{
HPMHooks.source.script.run_item_unequip_script(sd, data, oid);
}
- if( HPMHooks.count.HP_script_run_item_unequip_script_post ) {
+ if (HPMHooks.count.HP_script_run_item_unequip_script_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct item_data *data, int oid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_script_run_item_unequip_script_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_run_item_unequip_script_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_run_item_unequip_script_post[hIndex].func;
postHookFunc(sd, data, oid);
}
@@ -65378,14 +73269,14 @@ void HP_script_run_item_unequip_script(struct map_session_data *sd, struct item_
bool HP_searchstore_open(struct map_session_data *sd, unsigned int uses, unsigned short effect) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_searchstore_open_pre ) {
+ if (HPMHooks.count.HP_searchstore_open_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, unsigned int *uses, unsigned short *effect);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_open_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_open_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_searchstore_open_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &uses, &effect);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -65393,25 +73284,25 @@ bool HP_searchstore_open(struct map_session_data *sd, unsigned int uses, unsigne
{
retVal___ = HPMHooks.source.searchstore.open(sd, uses, effect);
}
- if( HPMHooks.count.HP_searchstore_open_post ) {
+ if (HPMHooks.count.HP_searchstore_open_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, unsigned int uses, unsigned short effect);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_open_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_open_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_searchstore_open_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, uses, effect);
}
}
return retVal___;
}
-void HP_searchstore_query(struct map_session_data *sd, unsigned char type, unsigned int min_price, unsigned int max_price, const unsigned short *itemlist, unsigned int item_count, const unsigned short *cardlist, unsigned int card_count) {
+void HP_searchstore_query(struct map_session_data *sd, unsigned char type, unsigned int min_price, unsigned int max_price, const uint32 *itemlist, unsigned int item_count, const uint32 *cardlist, unsigned int card_count) {
int hIndex = 0;
- if( HPMHooks.count.HP_searchstore_query_pre ) {
- void (*preHookFunc) (struct map_session_data **sd, unsigned char *type, unsigned int *min_price, unsigned int *max_price, const unsigned short **itemlist, unsigned int *item_count, const unsigned short **cardlist, unsigned int *card_count);
+ if (HPMHooks.count.HP_searchstore_query_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, unsigned char *type, unsigned int *min_price, unsigned int *max_price, const uint32 **itemlist, unsigned int *item_count, const uint32 **cardlist, unsigned int *card_count);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_query_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_query_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_searchstore_query_pre[hIndex].func;
preHookFunc(&sd, &type, &min_price, &max_price, &itemlist, &item_count, &cardlist, &card_count);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -65419,9 +73310,9 @@ void HP_searchstore_query(struct map_session_data *sd, unsigned char type, unsig
{
HPMHooks.source.searchstore.query(sd, type, min_price, max_price, itemlist, item_count, cardlist, card_count);
}
- if( HPMHooks.count.HP_searchstore_query_post ) {
- void (*postHookFunc) (struct map_session_data *sd, unsigned char type, unsigned int min_price, unsigned int max_price, const unsigned short *itemlist, unsigned int item_count, const unsigned short *cardlist, unsigned int card_count);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_query_post; hIndex++ ) {
+ if (HPMHooks.count.HP_searchstore_query_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, unsigned char type, unsigned int min_price, unsigned int max_price, const uint32 *itemlist, unsigned int item_count, const uint32 *cardlist, unsigned int card_count);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_query_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_searchstore_query_post[hIndex].func;
postHookFunc(sd, type, min_price, max_price, itemlist, item_count, cardlist, card_count);
}
@@ -65431,14 +73322,14 @@ void HP_searchstore_query(struct map_session_data *sd, unsigned char type, unsig
bool HP_searchstore_querynext(struct map_session_data *sd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_searchstore_querynext_pre ) {
+ if (HPMHooks.count.HP_searchstore_querynext_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_querynext_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_querynext_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_searchstore_querynext_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -65446,9 +73337,9 @@ bool HP_searchstore_querynext(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.searchstore.querynext(sd);
}
- if( HPMHooks.count.HP_searchstore_querynext_post ) {
+ if (HPMHooks.count.HP_searchstore_querynext_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_querynext_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_querynext_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_searchstore_querynext_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -65457,14 +73348,14 @@ bool HP_searchstore_querynext(struct map_session_data *sd) {
}
void HP_searchstore_next(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_searchstore_next_pre ) {
+ if (HPMHooks.count.HP_searchstore_next_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_next_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_next_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_searchstore_next_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -65472,9 +73363,9 @@ void HP_searchstore_next(struct map_session_data *sd) {
{
HPMHooks.source.searchstore.next(sd);
}
- if( HPMHooks.count.HP_searchstore_next_post ) {
+ if (HPMHooks.count.HP_searchstore_next_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_next_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_next_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_searchstore_next_post[hIndex].func;
postHookFunc(sd);
}
@@ -65483,14 +73374,14 @@ void HP_searchstore_next(struct map_session_data *sd) {
}
void HP_searchstore_clear(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_searchstore_clear_pre ) {
+ if (HPMHooks.count.HP_searchstore_clear_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_clear_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_clear_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_searchstore_clear_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -65498,9 +73389,9 @@ void HP_searchstore_clear(struct map_session_data *sd) {
{
HPMHooks.source.searchstore.clear(sd);
}
- if( HPMHooks.count.HP_searchstore_clear_post ) {
+ if (HPMHooks.count.HP_searchstore_clear_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_clear_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_clear_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_searchstore_clear_post[hIndex].func;
postHookFunc(sd);
}
@@ -65509,14 +73400,14 @@ void HP_searchstore_clear(struct map_session_data *sd) {
}
void HP_searchstore_close(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_searchstore_close_pre ) {
+ if (HPMHooks.count.HP_searchstore_close_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_close_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_close_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_searchstore_close_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -65524,25 +73415,25 @@ void HP_searchstore_close(struct map_session_data *sd) {
{
HPMHooks.source.searchstore.close(sd);
}
- if( HPMHooks.count.HP_searchstore_close_post ) {
+ if (HPMHooks.count.HP_searchstore_close_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_close_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_close_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_searchstore_close_post[hIndex].func;
postHookFunc(sd);
}
}
return;
}
-void HP_searchstore_click(struct map_session_data *sd, int account_id, int store_id, unsigned short nameid) {
+void HP_searchstore_click(struct map_session_data *sd, int account_id, int store_id, int nameid) {
int hIndex = 0;
- if( HPMHooks.count.HP_searchstore_click_pre ) {
- void (*preHookFunc) (struct map_session_data **sd, int *account_id, int *store_id, unsigned short *nameid);
+ if (HPMHooks.count.HP_searchstore_click_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int *account_id, int *store_id, int *nameid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_click_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_click_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_searchstore_click_pre[hIndex].func;
preHookFunc(&sd, &account_id, &store_id, &nameid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -65550,9 +73441,9 @@ void HP_searchstore_click(struct map_session_data *sd, int account_id, int store
{
HPMHooks.source.searchstore.click(sd, account_id, store_id, nameid);
}
- if( HPMHooks.count.HP_searchstore_click_post ) {
- void (*postHookFunc) (struct map_session_data *sd, int account_id, int store_id, unsigned short nameid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_click_post; hIndex++ ) {
+ if (HPMHooks.count.HP_searchstore_click_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int account_id, int store_id, int nameid);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_click_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_searchstore_click_post[hIndex].func;
postHookFunc(sd, account_id, store_id, nameid);
}
@@ -65562,14 +73453,14 @@ void HP_searchstore_click(struct map_session_data *sd, int account_id, int store
bool HP_searchstore_queryremote(struct map_session_data *sd, int account_id) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_searchstore_queryremote_pre ) {
+ if (HPMHooks.count.HP_searchstore_queryremote_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, int *account_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_queryremote_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_queryremote_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_searchstore_queryremote_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &account_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -65577,9 +73468,9 @@ bool HP_searchstore_queryremote(struct map_session_data *sd, int account_id) {
{
retVal___ = HPMHooks.source.searchstore.queryremote(sd, account_id);
}
- if( HPMHooks.count.HP_searchstore_queryremote_post ) {
+ if (HPMHooks.count.HP_searchstore_queryremote_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, int account_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_queryremote_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_queryremote_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_searchstore_queryremote_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, account_id);
}
@@ -65588,14 +73479,14 @@ bool HP_searchstore_queryremote(struct map_session_data *sd, int account_id) {
}
void HP_searchstore_clearremote(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_searchstore_clearremote_pre ) {
+ if (HPMHooks.count.HP_searchstore_clearremote_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_clearremote_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_clearremote_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_searchstore_clearremote_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -65603,38 +73494,38 @@ void HP_searchstore_clearremote(struct map_session_data *sd) {
{
HPMHooks.source.searchstore.clearremote(sd);
}
- if( HPMHooks.count.HP_searchstore_clearremote_post ) {
+ if (HPMHooks.count.HP_searchstore_clearremote_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_clearremote_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_clearremote_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_searchstore_clearremote_post[hIndex].func;
postHookFunc(sd);
}
}
return;
}
-bool HP_searchstore_result(struct map_session_data *sd, unsigned int store_id, int account_id, const char *store_name, unsigned short nameid, unsigned short amount, unsigned int price, const short *card, unsigned char refine) {
+bool HP_searchstore_result(struct map_session_data *sd, unsigned int store_id, int account_id, const char *store_name, int nameid, unsigned short amount, unsigned int price, const int *card, unsigned char refine, const struct item_option *option) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_searchstore_result_pre ) {
- bool (*preHookFunc) (struct map_session_data **sd, unsigned int *store_id, int *account_id, const char **store_name, unsigned short *nameid, unsigned short *amount, unsigned int *price, const short **card, unsigned char *refine);
+ if (HPMHooks.count.HP_searchstore_result_pre > 0) {
+ bool (*preHookFunc) (struct map_session_data **sd, unsigned int *store_id, int *account_id, const char **store_name, int *nameid, unsigned short *amount, unsigned int *price, const int **card, unsigned char *refine, const struct item_option **option);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_result_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_result_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_searchstore_result_pre[hIndex].func;
- retVal___ = preHookFunc(&sd, &store_id, &account_id, &store_name, &nameid, &amount, &price, &card, &refine);
+ retVal___ = preHookFunc(&sd, &store_id, &account_id, &store_name, &nameid, &amount, &price, &card, &refine, &option);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
}
{
- retVal___ = HPMHooks.source.searchstore.result(sd, store_id, account_id, store_name, nameid, amount, price, card, refine);
+ retVal___ = HPMHooks.source.searchstore.result(sd, store_id, account_id, store_name, nameid, amount, price, card, refine, option);
}
- if( HPMHooks.count.HP_searchstore_result_post ) {
- bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, unsigned int store_id, int account_id, const char *store_name, unsigned short nameid, unsigned short amount, unsigned int price, const short *card, unsigned char refine);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_result_post; hIndex++ ) {
+ if (HPMHooks.count.HP_searchstore_result_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, unsigned int store_id, int account_id, const char *store_name, int nameid, unsigned short amount, unsigned int price, const int *card, unsigned char refine, const struct item_option *option);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_result_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_searchstore_result_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, sd, store_id, account_id, store_name, nameid, amount, price, card, refine);
+ retVal___ = postHookFunc(retVal___, sd, store_id, account_id, store_name, nameid, amount, price, card, refine, option);
}
}
return retVal___;
@@ -65642,14 +73533,14 @@ bool HP_searchstore_result(struct map_session_data *sd, unsigned int store_id, i
/* showmsg_interface */
void HP_showmsg_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_showmsg_init_pre ) {
+ if (HPMHooks.count.HP_showmsg_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_showmsg_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -65657,9 +73548,9 @@ void HP_showmsg_init(void) {
{
HPMHooks.source.showmsg.init();
}
- if( HPMHooks.count.HP_showmsg_init_post ) {
+ if (HPMHooks.count.HP_showmsg_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_showmsg_init_post[hIndex].func;
postHookFunc();
}
@@ -65668,14 +73559,14 @@ void HP_showmsg_init(void) {
}
void HP_showmsg_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_showmsg_final_pre ) {
+ if (HPMHooks.count.HP_showmsg_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_showmsg_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -65683,9 +73574,9 @@ void HP_showmsg_final(void) {
{
HPMHooks.source.showmsg.final();
}
- if( HPMHooks.count.HP_showmsg_final_post ) {
+ if (HPMHooks.count.HP_showmsg_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_showmsg_final_post[hIndex].func;
postHookFunc();
}
@@ -65694,14 +73585,14 @@ void HP_showmsg_final(void) {
}
void HP_showmsg_clearScreen(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_showmsg_clearScreen_pre ) {
+ if (HPMHooks.count.HP_showmsg_clearScreen_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_clearScreen_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_clearScreen_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_showmsg_clearScreen_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -65709,9 +73600,9 @@ void HP_showmsg_clearScreen(void) {
{
HPMHooks.source.showmsg.clearScreen();
}
- if( HPMHooks.count.HP_showmsg_clearScreen_post ) {
+ if (HPMHooks.count.HP_showmsg_clearScreen_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_clearScreen_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_clearScreen_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_showmsg_clearScreen_post[hIndex].func;
postHookFunc();
}
@@ -65721,16 +73612,16 @@ void HP_showmsg_clearScreen(void) {
int HP_showmsg_showMessageV(const char *string, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_showmsg_showMessageV_pre ) {
+ if (HPMHooks.count.HP_showmsg_showMessageV_pre > 0) {
int (*preHookFunc) (const char **string, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_showMessageV_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_showMessageV_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_showmsg_showMessageV_pre[hIndex].func;
retVal___ = preHookFunc(&string, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -65740,9 +73631,9 @@ int HP_showmsg_showMessageV(const char *string, va_list ap) {
retVal___ = HPMHooks.source.showmsg.showMessageV(string, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_showmsg_showMessageV_post ) {
+ if (HPMHooks.count.HP_showmsg_showMessageV_post > 0) {
int (*postHookFunc) (int retVal___, const char *string, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_showMessageV_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_showmsg_showMessageV_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_showmsg_showMessageV_post[hIndex].func;
retVal___ = postHookFunc(retVal___, string, ap___copy);
@@ -65755,14 +73646,14 @@ int HP_showmsg_showMessageV(const char *string, va_list ap) {
int HP_skill_init(bool minimal) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_init_pre ) {
+ if (HPMHooks.count.HP_skill_init_pre > 0) {
int (*preHookFunc) (bool *minimal);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_init_pre[hIndex].func;
retVal___ = preHookFunc(&minimal);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -65770,9 +73661,9 @@ int HP_skill_init(bool minimal) {
{
retVal___ = HPMHooks.source.skill.init(minimal);
}
- if( HPMHooks.count.HP_skill_init_post ) {
+ if (HPMHooks.count.HP_skill_init_post > 0) {
int (*postHookFunc) (int retVal___, bool minimal);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_init_post[hIndex].func;
retVal___ = postHookFunc(retVal___, minimal);
}
@@ -65782,14 +73673,14 @@ int HP_skill_init(bool minimal) {
int HP_skill_final(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_final_pre ) {
+ if (HPMHooks.count.HP_skill_final_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_final_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -65797,9 +73688,9 @@ int HP_skill_final(void) {
{
retVal___ = HPMHooks.source.skill.final();
}
- if( HPMHooks.count.HP_skill_final_post ) {
+ if (HPMHooks.count.HP_skill_final_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_final_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -65808,14 +73699,14 @@ int HP_skill_final(void) {
}
void HP_skill_reload(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_reload_pre ) {
+ if (HPMHooks.count.HP_skill_reload_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_reload_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_reload_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_reload_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -65823,9 +73714,9 @@ void HP_skill_reload(void) {
{
HPMHooks.source.skill.reload();
}
- if( HPMHooks.count.HP_skill_reload_post ) {
+ if (HPMHooks.count.HP_skill_reload_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_reload_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_reload_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_reload_post[hIndex].func;
postHookFunc();
}
@@ -65834,14 +73725,14 @@ void HP_skill_reload(void) {
}
void HP_skill_read_db(bool minimal) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_read_db_pre ) {
+ if (HPMHooks.count.HP_skill_read_db_pre > 0) {
void (*preHookFunc) (bool *minimal);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_read_db_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_read_db_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_read_db_pre[hIndex].func;
preHookFunc(&minimal);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -65849,26 +73740,26 @@ void HP_skill_read_db(bool minimal) {
{
HPMHooks.source.skill.read_db(minimal);
}
- if( HPMHooks.count.HP_skill_read_db_post ) {
+ if (HPMHooks.count.HP_skill_read_db_post > 0) {
void (*postHookFunc) (bool minimal);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_read_db_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_read_db_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_read_db_post[hIndex].func;
postHookFunc(minimal);
}
}
return;
}
-int HP_skill_get_index(uint16 skill_id) {
+int HP_skill_get_index(int skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_index_pre ) {
- int (*preHookFunc) (uint16 *skill_id);
+ if (HPMHooks.count.HP_skill_get_index_pre > 0) {
+ int (*preHookFunc) (int *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_index_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_index_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_index_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -65876,26 +73767,26 @@ int HP_skill_get_index(uint16 skill_id) {
{
retVal___ = HPMHooks.source.skill.get_index(skill_id);
}
- if( HPMHooks.count.HP_skill_get_index_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_index_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_index_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_index_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_index_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id);
}
}
return retVal___;
}
-int HP_skill_get_type(uint16 skill_id) {
+int HP_skill_get_type(int skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_type_pre ) {
- int (*preHookFunc) (uint16 *skill_id);
+ if (HPMHooks.count.HP_skill_get_type_pre > 0) {
+ int (*preHookFunc) (int *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_type_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_type_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_type_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -65903,26 +73794,26 @@ int HP_skill_get_type(uint16 skill_id) {
{
retVal___ = HPMHooks.source.skill.get_type(skill_id);
}
- if( HPMHooks.count.HP_skill_get_type_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_type_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_type_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_type_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_type_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id);
}
}
return retVal___;
}
-int HP_skill_get_hit(uint16 skill_id) {
+int HP_skill_get_hit(int skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_hit_pre ) {
- int (*preHookFunc) (uint16 *skill_id);
+ if (HPMHooks.count.HP_skill_get_hit_pre > 0) {
+ int (*preHookFunc) (int *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_hit_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_hit_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_hit_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -65930,26 +73821,26 @@ int HP_skill_get_hit(uint16 skill_id) {
{
retVal___ = HPMHooks.source.skill.get_hit(skill_id);
}
- if( HPMHooks.count.HP_skill_get_hit_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_hit_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_hit_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_hit_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_hit_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id);
}
}
return retVal___;
}
-int HP_skill_get_inf(uint16 skill_id) {
+int HP_skill_get_inf(int skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_inf_pre ) {
- int (*preHookFunc) (uint16 *skill_id);
+ if (HPMHooks.count.HP_skill_get_inf_pre > 0) {
+ int (*preHookFunc) (int *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_inf_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_inf_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_inf_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -65957,26 +73848,26 @@ int HP_skill_get_inf(uint16 skill_id) {
{
retVal___ = HPMHooks.source.skill.get_inf(skill_id);
}
- if( HPMHooks.count.HP_skill_get_inf_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_inf_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_inf_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_inf_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_inf_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id);
}
}
return retVal___;
}
-int HP_skill_get_ele(uint16 skill_id, uint16 skill_lv) {
+int HP_skill_get_ele(int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_ele_pre ) {
- int (*preHookFunc) (uint16 *skill_id, uint16 *skill_lv);
+ if (HPMHooks.count.HP_skill_get_ele_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_ele_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_ele_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_ele_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -65984,26 +73875,26 @@ int HP_skill_get_ele(uint16 skill_id, uint16 skill_lv) {
{
retVal___ = HPMHooks.source.skill.get_ele(skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_get_ele_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_ele_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_ele_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_ele_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_ele_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
}
return retVal___;
}
-int HP_skill_get_nk(uint16 skill_id) {
+int HP_skill_get_nk(int skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_nk_pre ) {
- int (*preHookFunc) (uint16 *skill_id);
+ if (HPMHooks.count.HP_skill_get_nk_pre > 0) {
+ int (*preHookFunc) (int *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_nk_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_nk_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_nk_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66011,26 +73902,26 @@ int HP_skill_get_nk(uint16 skill_id) {
{
retVal___ = HPMHooks.source.skill.get_nk(skill_id);
}
- if( HPMHooks.count.HP_skill_get_nk_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_nk_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_nk_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_nk_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_nk_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id);
}
}
return retVal___;
}
-int HP_skill_get_max(uint16 skill_id) {
+int HP_skill_get_max(int skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_max_pre ) {
- int (*preHookFunc) (uint16 *skill_id);
+ if (HPMHooks.count.HP_skill_get_max_pre > 0) {
+ int (*preHookFunc) (int *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_max_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_max_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_max_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66038,26 +73929,26 @@ int HP_skill_get_max(uint16 skill_id) {
{
retVal___ = HPMHooks.source.skill.get_max(skill_id);
}
- if( HPMHooks.count.HP_skill_get_max_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_max_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_max_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_max_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_max_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id);
}
}
return retVal___;
}
-int HP_skill_get_range(uint16 skill_id, uint16 skill_lv) {
+int HP_skill_get_range(int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_range_pre ) {
- int (*preHookFunc) (uint16 *skill_id, uint16 *skill_lv);
+ if (HPMHooks.count.HP_skill_get_range_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_range_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_range_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_range_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66065,26 +73956,26 @@ int HP_skill_get_range(uint16 skill_id, uint16 skill_lv) {
{
retVal___ = HPMHooks.source.skill.get_range(skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_get_range_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_range_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_range_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_range_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_range_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
}
return retVal___;
}
-int HP_skill_get_range2(struct block_list *bl, uint16 skill_id, uint16 skill_lv) {
+int HP_skill_get_range2(struct block_list *bl, int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_range2_pre ) {
- int (*preHookFunc) (struct block_list **bl, uint16 *skill_id, uint16 *skill_lv);
+ if (HPMHooks.count.HP_skill_get_range2_pre > 0) {
+ int (*preHookFunc) (struct block_list **bl, int *skill_id, int *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_range2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_range2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_range2_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66092,26 +73983,26 @@ int HP_skill_get_range2(struct block_list *bl, uint16 skill_id, uint16 skill_lv)
{
retVal___ = HPMHooks.source.skill.get_range2(bl, skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_get_range2_post ) {
- int (*postHookFunc) (int retVal___, struct block_list *bl, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_range2_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_range2_post > 0) {
+ int (*postHookFunc) (int retVal___, struct block_list *bl, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_range2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_range2_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, skill_id, skill_lv);
}
}
return retVal___;
}
-int HP_skill_get_splash(uint16 skill_id, uint16 skill_lv) {
+int HP_skill_get_splash(int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_splash_pre ) {
- int (*preHookFunc) (uint16 *skill_id, uint16 *skill_lv);
+ if (HPMHooks.count.HP_skill_get_splash_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_splash_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_splash_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_splash_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66119,26 +74010,26 @@ int HP_skill_get_splash(uint16 skill_id, uint16 skill_lv) {
{
retVal___ = HPMHooks.source.skill.get_splash(skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_get_splash_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_splash_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_splash_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_splash_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_splash_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
}
return retVal___;
}
-int HP_skill_get_hp(uint16 skill_id, uint16 skill_lv) {
+int HP_skill_get_hp(int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_hp_pre ) {
- int (*preHookFunc) (uint16 *skill_id, uint16 *skill_lv);
+ if (HPMHooks.count.HP_skill_get_hp_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_hp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_hp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_hp_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66146,26 +74037,26 @@ int HP_skill_get_hp(uint16 skill_id, uint16 skill_lv) {
{
retVal___ = HPMHooks.source.skill.get_hp(skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_get_hp_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_hp_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_hp_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_hp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_hp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
}
return retVal___;
}
-int HP_skill_get_mhp(uint16 skill_id, uint16 skill_lv) {
+int HP_skill_get_mhp(int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_mhp_pre ) {
- int (*preHookFunc) (uint16 *skill_id, uint16 *skill_lv);
+ if (HPMHooks.count.HP_skill_get_mhp_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_mhp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_mhp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_mhp_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66173,26 +74064,26 @@ int HP_skill_get_mhp(uint16 skill_id, uint16 skill_lv) {
{
retVal___ = HPMHooks.source.skill.get_mhp(skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_get_mhp_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_mhp_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_mhp_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_mhp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_mhp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
}
return retVal___;
}
-int HP_skill_get_sp(uint16 skill_id, uint16 skill_lv) {
+int HP_skill_get_sp(int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_sp_pre ) {
- int (*preHookFunc) (uint16 *skill_id, uint16 *skill_lv);
+ if (HPMHooks.count.HP_skill_get_sp_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_sp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_sp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_sp_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66200,26 +74091,80 @@ int HP_skill_get_sp(uint16 skill_id, uint16 skill_lv) {
{
retVal___ = HPMHooks.source.skill.get_sp(skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_get_sp_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_sp_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_sp_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_sp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_sp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
}
return retVal___;
}
-int HP_skill_get_state(uint16 skill_id) {
+int HP_skill_get_hp_rate(int skill_id, int skill_lv) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_skill_get_hp_rate_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_hp_rate_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_get_hp_rate_pre[hIndex].func;
+ retVal___ = preHookFunc(&skill_id, &skill_lv);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.skill.get_hp_rate(skill_id, skill_lv);
+ }
+ if (HPMHooks.count.HP_skill_get_hp_rate_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_hp_rate_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_get_hp_rate_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
+ }
+ }
+ return retVal___;
+}
+int HP_skill_get_sp_rate(int skill_id, int skill_lv) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_skill_get_sp_rate_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_sp_rate_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_get_sp_rate_pre[hIndex].func;
+ retVal___ = preHookFunc(&skill_id, &skill_lv);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.skill.get_sp_rate(skill_id, skill_lv);
+ }
+ if (HPMHooks.count.HP_skill_get_sp_rate_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_sp_rate_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_get_sp_rate_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
+ }
+ }
+ return retVal___;
+}
+int HP_skill_get_state(int skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_state_pre ) {
- int (*preHookFunc) (uint16 *skill_id);
+ if (HPMHooks.count.HP_skill_get_state_pre > 0) {
+ int (*preHookFunc) (int *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_state_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_state_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_state_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66227,26 +74172,26 @@ int HP_skill_get_state(uint16 skill_id) {
{
retVal___ = HPMHooks.source.skill.get_state(skill_id);
}
- if( HPMHooks.count.HP_skill_get_state_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_state_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_state_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_state_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_state_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id);
}
}
return retVal___;
}
-int HP_skill_get_spiritball(uint16 skill_id, uint16 skill_lv) {
+int HP_skill_get_spiritball(int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_spiritball_pre ) {
- int (*preHookFunc) (uint16 *skill_id, uint16 *skill_lv);
+ if (HPMHooks.count.HP_skill_get_spiritball_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_spiritball_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_spiritball_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_spiritball_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66254,26 +74199,80 @@ int HP_skill_get_spiritball(uint16 skill_id, uint16 skill_lv) {
{
retVal___ = HPMHooks.source.skill.get_spiritball(skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_get_spiritball_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_spiritball_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_spiritball_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_spiritball_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_spiritball_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
}
return retVal___;
}
-int HP_skill_get_zeny(uint16 skill_id, uint16 skill_lv) {
+int HP_skill_get_itemid(int skill_id, int item_idx) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_zeny_pre ) {
- int (*preHookFunc) (uint16 *skill_id, uint16 *skill_lv);
+ if (HPMHooks.count.HP_skill_get_itemid_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *item_idx);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_itemid_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_get_itemid_pre[hIndex].func;
+ retVal___ = preHookFunc(&skill_id, &item_idx);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.skill.get_itemid(skill_id, item_idx);
+ }
+ if (HPMHooks.count.HP_skill_get_itemid_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int item_idx);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_itemid_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_get_itemid_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, skill_id, item_idx);
+ }
+ }
+ return retVal___;
+}
+int HP_skill_get_itemqty(int skill_id, int item_idx) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_skill_get_itemqty_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *item_idx);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_itemqty_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_get_itemqty_pre[hIndex].func;
+ retVal___ = preHookFunc(&skill_id, &item_idx);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.skill.get_itemqty(skill_id, item_idx);
+ }
+ if (HPMHooks.count.HP_skill_get_itemqty_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int item_idx);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_itemqty_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_get_itemqty_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, skill_id, item_idx);
+ }
+ }
+ return retVal___;
+}
+int HP_skill_get_zeny(int skill_id, int skill_lv) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_skill_get_zeny_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_zeny_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_zeny_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_zeny_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66281,26 +74280,26 @@ int HP_skill_get_zeny(uint16 skill_id, uint16 skill_lv) {
{
retVal___ = HPMHooks.source.skill.get_zeny(skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_get_zeny_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_zeny_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_zeny_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_zeny_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_zeny_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
}
return retVal___;
}
-int HP_skill_get_num(uint16 skill_id, uint16 skill_lv) {
+int HP_skill_get_num(int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_num_pre ) {
- int (*preHookFunc) (uint16 *skill_id, uint16 *skill_lv);
+ if (HPMHooks.count.HP_skill_get_num_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_num_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_num_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_num_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66308,26 +74307,26 @@ int HP_skill_get_num(uint16 skill_id, uint16 skill_lv) {
{
retVal___ = HPMHooks.source.skill.get_num(skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_get_num_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_num_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_num_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_num_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_num_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
}
return retVal___;
}
-int HP_skill_get_cast(uint16 skill_id, uint16 skill_lv) {
+int HP_skill_get_cast(int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_cast_pre ) {
- int (*preHookFunc) (uint16 *skill_id, uint16 *skill_lv);
+ if (HPMHooks.count.HP_skill_get_cast_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_cast_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_cast_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_cast_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66335,26 +74334,26 @@ int HP_skill_get_cast(uint16 skill_id, uint16 skill_lv) {
{
retVal___ = HPMHooks.source.skill.get_cast(skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_get_cast_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_cast_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_cast_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_cast_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_cast_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
}
return retVal___;
}
-int HP_skill_get_delay(uint16 skill_id, uint16 skill_lv) {
+int HP_skill_get_delay(int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_delay_pre ) {
- int (*preHookFunc) (uint16 *skill_id, uint16 *skill_lv);
+ if (HPMHooks.count.HP_skill_get_delay_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_delay_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_delay_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_delay_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66362,26 +74361,26 @@ int HP_skill_get_delay(uint16 skill_id, uint16 skill_lv) {
{
retVal___ = HPMHooks.source.skill.get_delay(skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_get_delay_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_delay_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_delay_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_delay_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_delay_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
}
return retVal___;
}
-int HP_skill_get_walkdelay(uint16 skill_id, uint16 skill_lv) {
+int HP_skill_get_walkdelay(int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_walkdelay_pre ) {
- int (*preHookFunc) (uint16 *skill_id, uint16 *skill_lv);
+ if (HPMHooks.count.HP_skill_get_walkdelay_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_walkdelay_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_walkdelay_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_walkdelay_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66389,26 +74388,26 @@ int HP_skill_get_walkdelay(uint16 skill_id, uint16 skill_lv) {
{
retVal___ = HPMHooks.source.skill.get_walkdelay(skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_get_walkdelay_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_walkdelay_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_walkdelay_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_walkdelay_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_walkdelay_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
}
return retVal___;
}
-int HP_skill_get_time(uint16 skill_id, uint16 skill_lv) {
+int HP_skill_get_time(int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_time_pre ) {
- int (*preHookFunc) (uint16 *skill_id, uint16 *skill_lv);
+ if (HPMHooks.count.HP_skill_get_time_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_time_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_time_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_time_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66416,26 +74415,26 @@ int HP_skill_get_time(uint16 skill_id, uint16 skill_lv) {
{
retVal___ = HPMHooks.source.skill.get_time(skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_get_time_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_time_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_time_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_time_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_time_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
}
return retVal___;
}
-int HP_skill_get_time2(uint16 skill_id, uint16 skill_lv) {
+int HP_skill_get_time2(int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_time2_pre ) {
- int (*preHookFunc) (uint16 *skill_id, uint16 *skill_lv);
+ if (HPMHooks.count.HP_skill_get_time2_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_time2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_time2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_time2_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66443,26 +74442,26 @@ int HP_skill_get_time2(uint16 skill_id, uint16 skill_lv) {
{
retVal___ = HPMHooks.source.skill.get_time2(skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_get_time2_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_time2_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_time2_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_time2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_time2_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
}
return retVal___;
}
-int HP_skill_get_castnodex(uint16 skill_id, uint16 skill_lv) {
+int HP_skill_get_castnodex(int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_castnodex_pre ) {
- int (*preHookFunc) (uint16 *skill_id, uint16 *skill_lv);
+ if (HPMHooks.count.HP_skill_get_castnodex_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_castnodex_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_castnodex_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_castnodex_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66470,26 +74469,26 @@ int HP_skill_get_castnodex(uint16 skill_id, uint16 skill_lv) {
{
retVal___ = HPMHooks.source.skill.get_castnodex(skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_get_castnodex_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_castnodex_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_castnodex_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_castnodex_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_castnodex_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
}
return retVal___;
}
-int HP_skill_get_delaynodex(uint16 skill_id, uint16 skill_lv) {
+int HP_skill_get_delaynodex(int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_delaynodex_pre ) {
- int (*preHookFunc) (uint16 *skill_id, uint16 *skill_lv);
+ if (HPMHooks.count.HP_skill_get_delaynodex_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_delaynodex_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_delaynodex_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_delaynodex_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66497,26 +74496,26 @@ int HP_skill_get_delaynodex(uint16 skill_id, uint16 skill_lv) {
{
retVal___ = HPMHooks.source.skill.get_delaynodex(skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_get_delaynodex_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_delaynodex_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_delaynodex_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_delaynodex_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_delaynodex_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
}
return retVal___;
}
-int HP_skill_get_castdef(uint16 skill_id) {
+int HP_skill_get_castdef(int skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_castdef_pre ) {
- int (*preHookFunc) (uint16 *skill_id);
+ if (HPMHooks.count.HP_skill_get_castdef_pre > 0) {
+ int (*preHookFunc) (int *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_castdef_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_castdef_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_castdef_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66524,26 +74523,26 @@ int HP_skill_get_castdef(uint16 skill_id) {
{
retVal___ = HPMHooks.source.skill.get_castdef(skill_id);
}
- if( HPMHooks.count.HP_skill_get_castdef_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_castdef_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_castdef_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_castdef_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_castdef_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id);
}
}
return retVal___;
}
-int HP_skill_get_weapontype(uint16 skill_id) {
+int HP_skill_get_weapontype(int skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_weapontype_pre ) {
- int (*preHookFunc) (uint16 *skill_id);
+ if (HPMHooks.count.HP_skill_get_weapontype_pre > 0) {
+ int (*preHookFunc) (int *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_weapontype_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_weapontype_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_weapontype_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66551,26 +74550,26 @@ int HP_skill_get_weapontype(uint16 skill_id) {
{
retVal___ = HPMHooks.source.skill.get_weapontype(skill_id);
}
- if( HPMHooks.count.HP_skill_get_weapontype_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_weapontype_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_weapontype_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_weapontype_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_weapontype_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id);
}
}
return retVal___;
}
-int HP_skill_get_ammotype(uint16 skill_id) {
+int HP_skill_get_ammotype(int skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_ammotype_pre ) {
- int (*preHookFunc) (uint16 *skill_id);
+ if (HPMHooks.count.HP_skill_get_ammotype_pre > 0) {
+ int (*preHookFunc) (int *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_ammotype_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_ammotype_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_ammotype_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66578,26 +74577,26 @@ int HP_skill_get_ammotype(uint16 skill_id) {
{
retVal___ = HPMHooks.source.skill.get_ammotype(skill_id);
}
- if( HPMHooks.count.HP_skill_get_ammotype_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_ammotype_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_ammotype_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_ammotype_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_ammotype_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id);
}
}
return retVal___;
}
-int HP_skill_get_ammo_qty(uint16 skill_id, uint16 skill_lv) {
+int HP_skill_get_ammo_qty(int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_ammo_qty_pre ) {
- int (*preHookFunc) (uint16 *skill_id, uint16 *skill_lv);
+ if (HPMHooks.count.HP_skill_get_ammo_qty_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_ammo_qty_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_ammo_qty_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_ammo_qty_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66605,26 +74604,26 @@ int HP_skill_get_ammo_qty(uint16 skill_id, uint16 skill_lv) {
{
retVal___ = HPMHooks.source.skill.get_ammo_qty(skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_get_ammo_qty_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_ammo_qty_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_ammo_qty_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_ammo_qty_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_ammo_qty_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
}
return retVal___;
}
-int HP_skill_get_unit_id(uint16 skill_id, int flag) {
+int HP_skill_get_unit_id(int skill_id, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_unit_id_pre ) {
- int (*preHookFunc) (uint16 *skill_id, int *flag);
+ if (HPMHooks.count.HP_skill_get_unit_id_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_id_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_id_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_unit_id_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66632,26 +74631,26 @@ int HP_skill_get_unit_id(uint16 skill_id, int flag) {
{
retVal___ = HPMHooks.source.skill.get_unit_id(skill_id, flag);
}
- if( HPMHooks.count.HP_skill_get_unit_id_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_id_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_unit_id_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int flag);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_id_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_unit_id_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, flag);
}
}
return retVal___;
}
-int HP_skill_get_inf2(uint16 skill_id) {
+int HP_skill_get_inf2(int skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_inf2_pre ) {
- int (*preHookFunc) (uint16 *skill_id);
+ if (HPMHooks.count.HP_skill_get_inf2_pre > 0) {
+ int (*preHookFunc) (int *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_inf2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_inf2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_inf2_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66659,26 +74658,26 @@ int HP_skill_get_inf2(uint16 skill_id) {
{
retVal___ = HPMHooks.source.skill.get_inf2(skill_id);
}
- if( HPMHooks.count.HP_skill_get_inf2_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_inf2_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_inf2_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_inf2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_inf2_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id);
}
}
return retVal___;
}
-int HP_skill_get_castcancel(uint16 skill_id) {
+int HP_skill_get_castcancel(int skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_castcancel_pre ) {
- int (*preHookFunc) (uint16 *skill_id);
+ if (HPMHooks.count.HP_skill_get_castcancel_pre > 0) {
+ int (*preHookFunc) (int *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_castcancel_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_castcancel_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_castcancel_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66686,26 +74685,26 @@ int HP_skill_get_castcancel(uint16 skill_id) {
{
retVal___ = HPMHooks.source.skill.get_castcancel(skill_id);
}
- if( HPMHooks.count.HP_skill_get_castcancel_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_castcancel_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_castcancel_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_castcancel_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_castcancel_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id);
}
}
return retVal___;
}
-int HP_skill_get_maxcount(uint16 skill_id, uint16 skill_lv) {
+int HP_skill_get_maxcount(int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_maxcount_pre ) {
- int (*preHookFunc) (uint16 *skill_id, uint16 *skill_lv);
+ if (HPMHooks.count.HP_skill_get_maxcount_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_maxcount_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_maxcount_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_maxcount_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66713,26 +74712,26 @@ int HP_skill_get_maxcount(uint16 skill_id, uint16 skill_lv) {
{
retVal___ = HPMHooks.source.skill.get_maxcount(skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_get_maxcount_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_maxcount_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_maxcount_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_maxcount_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_maxcount_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
}
return retVal___;
}
-int HP_skill_get_blewcount(uint16 skill_id, uint16 skill_lv) {
+int HP_skill_get_blewcount(int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_blewcount_pre ) {
- int (*preHookFunc) (uint16 *skill_id, uint16 *skill_lv);
+ if (HPMHooks.count.HP_skill_get_blewcount_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_blewcount_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_blewcount_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_blewcount_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66740,26 +74739,26 @@ int HP_skill_get_blewcount(uint16 skill_id, uint16 skill_lv) {
{
retVal___ = HPMHooks.source.skill.get_blewcount(skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_get_blewcount_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_blewcount_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_blewcount_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_blewcount_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_blewcount_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
}
return retVal___;
}
-int HP_skill_get_unit_flag(uint16 skill_id) {
+int HP_skill_get_unit_flag(int skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_unit_flag_pre ) {
- int (*preHookFunc) (uint16 *skill_id);
+ if (HPMHooks.count.HP_skill_get_unit_flag_pre > 0) {
+ int (*preHookFunc) (int *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_flag_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_flag_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_unit_flag_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66767,26 +74766,26 @@ int HP_skill_get_unit_flag(uint16 skill_id) {
{
retVal___ = HPMHooks.source.skill.get_unit_flag(skill_id);
}
- if( HPMHooks.count.HP_skill_get_unit_flag_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_flag_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_unit_flag_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_flag_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_unit_flag_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id);
}
}
return retVal___;
}
-int HP_skill_get_unit_target(uint16 skill_id) {
+int HP_skill_get_unit_target(int skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_unit_target_pre ) {
- int (*preHookFunc) (uint16 *skill_id);
+ if (HPMHooks.count.HP_skill_get_unit_target_pre > 0) {
+ int (*preHookFunc) (int *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_target_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_target_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_unit_target_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66794,26 +74793,26 @@ int HP_skill_get_unit_target(uint16 skill_id) {
{
retVal___ = HPMHooks.source.skill.get_unit_target(skill_id);
}
- if( HPMHooks.count.HP_skill_get_unit_target_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_target_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_unit_target_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_target_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_unit_target_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id);
}
}
return retVal___;
}
-int HP_skill_get_unit_interval(uint16 skill_id) {
+int HP_skill_get_unit_interval(int skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_unit_interval_pre ) {
- int (*preHookFunc) (uint16 *skill_id);
+ if (HPMHooks.count.HP_skill_get_unit_interval_pre > 0) {
+ int (*preHookFunc) (int *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_interval_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_interval_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_unit_interval_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66821,26 +74820,26 @@ int HP_skill_get_unit_interval(uint16 skill_id) {
{
retVal___ = HPMHooks.source.skill.get_unit_interval(skill_id);
}
- if( HPMHooks.count.HP_skill_get_unit_interval_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_interval_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_unit_interval_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_interval_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_unit_interval_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id);
}
}
return retVal___;
}
-int HP_skill_get_unit_bl_target(uint16 skill_id) {
+int HP_skill_get_unit_bl_target(int skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_unit_bl_target_pre ) {
- int (*preHookFunc) (uint16 *skill_id);
+ if (HPMHooks.count.HP_skill_get_unit_bl_target_pre > 0) {
+ int (*preHookFunc) (int *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_bl_target_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_bl_target_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_unit_bl_target_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66848,26 +74847,26 @@ int HP_skill_get_unit_bl_target(uint16 skill_id) {
{
retVal___ = HPMHooks.source.skill.get_unit_bl_target(skill_id);
}
- if( HPMHooks.count.HP_skill_get_unit_bl_target_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_bl_target_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_unit_bl_target_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_bl_target_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_unit_bl_target_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id);
}
}
return retVal___;
}
-int HP_skill_get_unit_layout_type(uint16 skill_id, uint16 skill_lv) {
+int HP_skill_get_unit_layout_type(int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_unit_layout_type_pre ) {
- int (*preHookFunc) (uint16 *skill_id, uint16 *skill_lv);
+ if (HPMHooks.count.HP_skill_get_unit_layout_type_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_layout_type_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_layout_type_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_unit_layout_type_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66875,26 +74874,26 @@ int HP_skill_get_unit_layout_type(uint16 skill_id, uint16 skill_lv) {
{
retVal___ = HPMHooks.source.skill.get_unit_layout_type(skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_get_unit_layout_type_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_layout_type_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_unit_layout_type_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_layout_type_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_unit_layout_type_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
}
return retVal___;
}
-int HP_skill_get_unit_range(uint16 skill_id, uint16 skill_lv) {
+int HP_skill_get_unit_range(int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_unit_range_pre ) {
- int (*preHookFunc) (uint16 *skill_id, uint16 *skill_lv);
+ if (HPMHooks.count.HP_skill_get_unit_range_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_range_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_range_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_unit_range_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66902,26 +74901,26 @@ int HP_skill_get_unit_range(uint16 skill_id, uint16 skill_lv) {
{
retVal___ = HPMHooks.source.skill.get_unit_range(skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_get_unit_range_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_range_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_unit_range_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_range_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_unit_range_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
}
return retVal___;
}
-int HP_skill_get_cooldown(uint16 skill_id, uint16 skill_lv) {
+int HP_skill_get_cooldown(int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_cooldown_pre ) {
- int (*preHookFunc) (uint16 *skill_id, uint16 *skill_lv);
+ if (HPMHooks.count.HP_skill_get_cooldown_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_cooldown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_cooldown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_cooldown_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66929,26 +74928,26 @@ int HP_skill_get_cooldown(uint16 skill_id, uint16 skill_lv) {
{
retVal___ = HPMHooks.source.skill.get_cooldown(skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_get_cooldown_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_cooldown_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_cooldown_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_cooldown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_cooldown_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
}
return retVal___;
}
-int HP_skill_tree_get_max(uint16 skill_id, int class) {
+int HP_skill_tree_get_max(int skill_id, int class) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_tree_get_max_pre ) {
- int (*preHookFunc) (uint16 *skill_id, int *class);
+ if (HPMHooks.count.HP_skill_tree_get_max_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *class);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_tree_get_max_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_tree_get_max_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_tree_get_max_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &class);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66956,26 +74955,26 @@ int HP_skill_tree_get_max(uint16 skill_id, int class) {
{
retVal___ = HPMHooks.source.skill.tree_get_max(skill_id, class);
}
- if( HPMHooks.count.HP_skill_tree_get_max_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id, int class);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_tree_get_max_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_tree_get_max_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int class);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_tree_get_max_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_tree_get_max_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, class);
}
}
return retVal___;
}
-const char* HP_skill_get_name(uint16 skill_id) {
+const char* HP_skill_get_name(int skill_id) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_skill_get_name_pre ) {
- const char* (*preHookFunc) (uint16 *skill_id);
+ if (HPMHooks.count.HP_skill_get_name_pre > 0) {
+ const char* (*preHookFunc) (int *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_name_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_name_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_name_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -66983,26 +74982,26 @@ const char* HP_skill_get_name(uint16 skill_id) {
{
retVal___ = HPMHooks.source.skill.get_name(skill_id);
}
- if( HPMHooks.count.HP_skill_get_name_post ) {
- const char* (*postHookFunc) (const char* retVal___, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_name_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_name_post > 0) {
+ const char* (*postHookFunc) (const char* retVal___, int skill_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_name_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_name_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id);
}
}
return retVal___;
}
-const char* HP_skill_get_desc(uint16 skill_id) {
+const char* HP_skill_get_desc(int skill_id) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_skill_get_desc_pre ) {
- const char* (*preHookFunc) (uint16 *skill_id);
+ if (HPMHooks.count.HP_skill_get_desc_pre > 0) {
+ const char* (*preHookFunc) (int *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_desc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_desc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_desc_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67010,52 +75009,26 @@ const char* HP_skill_get_desc(uint16 skill_id) {
{
retVal___ = HPMHooks.source.skill.get_desc(skill_id);
}
- if( HPMHooks.count.HP_skill_get_desc_post ) {
- const char* (*postHookFunc) (const char* retVal___, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_desc_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_desc_post > 0) {
+ const char* (*postHookFunc) (const char* retVal___, int skill_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_desc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_desc_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id);
}
}
return retVal___;
}
-void HP_skill_chk(uint16 *skill_id) {
- int hIndex = 0;
- if( HPMHooks.count.HP_skill_chk_pre ) {
- void (*preHookFunc) (uint16 **skill_id);
- *HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_chk_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_skill_chk_pre[hIndex].func;
- preHookFunc(&skill_id);
- }
- if( *HPMforce_return ) {
- *HPMforce_return = false;
- return;
- }
- }
- {
- HPMHooks.source.skill.chk(skill_id);
- }
- if( HPMHooks.count.HP_skill_chk_post ) {
- void (*postHookFunc) (uint16 *skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_chk_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_skill_chk_post[hIndex].func;
- postHookFunc(skill_id);
- }
- }
- return;
-}
-int HP_skill_get_casttype(uint16 skill_id) {
+int HP_skill_get_casttype(int skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_casttype_pre ) {
- int (*preHookFunc) (uint16 *skill_id);
+ if (HPMHooks.count.HP_skill_get_casttype_pre > 0) {
+ int (*preHookFunc) (int *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_casttype_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_casttype_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_casttype_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67063,26 +75036,26 @@ int HP_skill_get_casttype(uint16 skill_id) {
{
retVal___ = HPMHooks.source.skill.get_casttype(skill_id);
}
- if( HPMHooks.count.HP_skill_get_casttype_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_casttype_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_casttype_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_casttype_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_casttype_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id);
}
}
return retVal___;
}
-int HP_skill_get_casttype2(uint16 index) {
+int HP_skill_get_casttype2(int index) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_casttype2_pre ) {
- int (*preHookFunc) (uint16 *index);
+ if (HPMHooks.count.HP_skill_get_casttype2_pre > 0) {
+ int (*preHookFunc) (int *index);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_casttype2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_casttype2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_casttype2_pre[hIndex].func;
retVal___ = preHookFunc(&index);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67090,9 +75063,9 @@ int HP_skill_get_casttype2(uint16 index) {
{
retVal___ = HPMHooks.source.skill.get_casttype2(index);
}
- if( HPMHooks.count.HP_skill_get_casttype2_post ) {
- int (*postHookFunc) (int retVal___, uint16 index);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_casttype2_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_casttype2_post > 0) {
+ int (*postHookFunc) (int retVal___, int index);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_casttype2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_casttype2_post[hIndex].func;
retVal___ = postHookFunc(retVal___, index);
}
@@ -67102,14 +75075,14 @@ int HP_skill_get_casttype2(uint16 index) {
bool HP_skill_is_combo(int skill_id) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_skill_is_combo_pre ) {
+ if (HPMHooks.count.HP_skill_is_combo_pre > 0) {
bool (*preHookFunc) (int *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_is_combo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_is_combo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_is_combo_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67117,9 +75090,9 @@ bool HP_skill_is_combo(int skill_id) {
{
retVal___ = HPMHooks.source.skill.is_combo(skill_id);
}
- if( HPMHooks.count.HP_skill_is_combo_post ) {
+ if (HPMHooks.count.HP_skill_is_combo_post > 0) {
bool (*postHookFunc) (bool retVal___, int skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_is_combo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_is_combo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_is_combo_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id);
}
@@ -67129,14 +75102,14 @@ bool HP_skill_is_combo(int skill_id) {
int HP_skill_name2id(const char *name) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_name2id_pre ) {
+ if (HPMHooks.count.HP_skill_name2id_pre > 0) {
int (*preHookFunc) (const char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_name2id_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_name2id_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_name2id_pre[hIndex].func;
retVal___ = preHookFunc(&name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67144,9 +75117,9 @@ int HP_skill_name2id(const char *name) {
{
retVal___ = HPMHooks.source.skill.name2id(name);
}
- if( HPMHooks.count.HP_skill_name2id_post ) {
+ if (HPMHooks.count.HP_skill_name2id_post > 0) {
int (*postHookFunc) (int retVal___, const char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_name2id_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_name2id_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_name2id_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name);
}
@@ -67156,14 +75129,14 @@ int HP_skill_name2id(const char *name) {
int HP_skill_isammotype(struct map_session_data *sd, int skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_isammotype_pre ) {
+ if (HPMHooks.count.HP_skill_isammotype_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_isammotype_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_isammotype_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_isammotype_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67171,9 +75144,9 @@ int HP_skill_isammotype(struct map_session_data *sd, int skill_id) {
{
retVal___ = HPMHooks.source.skill.isammotype(sd, skill_id);
}
- if( HPMHooks.count.HP_skill_isammotype_post ) {
+ if (HPMHooks.count.HP_skill_isammotype_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_isammotype_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_isammotype_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_isammotype_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, skill_id);
}
@@ -67183,14 +75156,14 @@ int HP_skill_isammotype(struct map_session_data *sd, int skill_id) {
int HP_skill_castend_id(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_castend_id_pre ) {
+ if (HPMHooks.count.HP_skill_castend_id_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_id_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_id_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_castend_id_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67198,9 +75171,9 @@ int HP_skill_castend_id(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.skill.castend_id(tid, tick, id, data);
}
- if( HPMHooks.count.HP_skill_castend_id_post ) {
+ if (HPMHooks.count.HP_skill_castend_id_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_id_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_id_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_castend_id_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -67210,14 +75183,14 @@ int HP_skill_castend_id(int tid, int64 tick, int id, intptr_t data) {
int HP_skill_castend_pos(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_castend_pos_pre ) {
+ if (HPMHooks.count.HP_skill_castend_pos_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_pos_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_pos_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_castend_pos_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67225,9 +75198,9 @@ int HP_skill_castend_pos(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.skill.castend_pos(tid, tick, id, data);
}
- if( HPMHooks.count.HP_skill_castend_pos_post ) {
+ if (HPMHooks.count.HP_skill_castend_pos_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_pos_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_pos_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_castend_pos_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -67237,14 +75210,14 @@ int HP_skill_castend_pos(int tid, int64 tick, int id, intptr_t data) {
int HP_skill_castend_map(struct map_session_data *sd, uint16 skill_id, const char *mapname) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_castend_map_pre ) {
+ if (HPMHooks.count.HP_skill_castend_map_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, uint16 *skill_id, const char **mapname);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_map_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_map_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_castend_map_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &skill_id, &mapname);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67252,9 +75225,9 @@ int HP_skill_castend_map(struct map_session_data *sd, uint16 skill_id, const cha
{
retVal___ = HPMHooks.source.skill.castend_map(sd, skill_id, mapname);
}
- if( HPMHooks.count.HP_skill_castend_map_post ) {
+ if (HPMHooks.count.HP_skill_castend_map_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, uint16 skill_id, const char *mapname);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_map_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_map_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_castend_map_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, skill_id, mapname);
}
@@ -67264,14 +75237,14 @@ int HP_skill_castend_map(struct map_session_data *sd, uint16 skill_id, const cha
int HP_skill_cleartimerskill(struct block_list *src) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_cleartimerskill_pre ) {
+ if (HPMHooks.count.HP_skill_cleartimerskill_pre > 0) {
int (*preHookFunc) (struct block_list **src);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_cleartimerskill_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_cleartimerskill_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_cleartimerskill_pre[hIndex].func;
retVal___ = preHookFunc(&src);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67279,9 +75252,9 @@ int HP_skill_cleartimerskill(struct block_list *src) {
{
retVal___ = HPMHooks.source.skill.cleartimerskill(src);
}
- if( HPMHooks.count.HP_skill_cleartimerskill_post ) {
+ if (HPMHooks.count.HP_skill_cleartimerskill_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_cleartimerskill_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_cleartimerskill_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_cleartimerskill_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src);
}
@@ -67291,14 +75264,14 @@ int HP_skill_cleartimerskill(struct block_list *src) {
int HP_skill_addtimerskill(struct block_list *src, int64 tick, int target, int x, int y, uint16 skill_id, uint16 skill_lv, int type, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_addtimerskill_pre ) {
+ if (HPMHooks.count.HP_skill_addtimerskill_pre > 0) {
int (*preHookFunc) (struct block_list **src, int64 *tick, int *target, int *x, int *y, uint16 *skill_id, uint16 *skill_lv, int *type, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_addtimerskill_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_addtimerskill_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_addtimerskill_pre[hIndex].func;
retVal___ = preHookFunc(&src, &tick, &target, &x, &y, &skill_id, &skill_lv, &type, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67306,9 +75279,9 @@ int HP_skill_addtimerskill(struct block_list *src, int64 tick, int target, int x
{
retVal___ = HPMHooks.source.skill.addtimerskill(src, tick, target, x, y, skill_id, skill_lv, type, flag);
}
- if( HPMHooks.count.HP_skill_addtimerskill_post ) {
+ if (HPMHooks.count.HP_skill_addtimerskill_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src, int64 tick, int target, int x, int y, uint16 skill_id, uint16 skill_lv, int type, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_addtimerskill_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_addtimerskill_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_addtimerskill_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, tick, target, x, y, skill_id, skill_lv, type, flag);
}
@@ -67318,14 +75291,14 @@ int HP_skill_addtimerskill(struct block_list *src, int64 tick, int target, int x
int HP_skill_additional_effect(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int attack_type, int dmg_lv, int64 tick) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_additional_effect_pre ) {
+ if (HPMHooks.count.HP_skill_additional_effect_pre > 0) {
int (*preHookFunc) (struct block_list **src, struct block_list **bl, uint16 *skill_id, uint16 *skill_lv, int *attack_type, int *dmg_lv, int64 *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_additional_effect_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_additional_effect_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_additional_effect_pre[hIndex].func;
retVal___ = preHookFunc(&src, &bl, &skill_id, &skill_lv, &attack_type, &dmg_lv, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67333,9 +75306,9 @@ int HP_skill_additional_effect(struct block_list *src, struct block_list *bl, ui
{
retVal___ = HPMHooks.source.skill.additional_effect(src, bl, skill_id, skill_lv, attack_type, dmg_lv, tick);
}
- if( HPMHooks.count.HP_skill_additional_effect_post ) {
+ if (HPMHooks.count.HP_skill_additional_effect_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int attack_type, int dmg_lv, int64 tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_additional_effect_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_additional_effect_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_additional_effect_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, bl, skill_id, skill_lv, attack_type, dmg_lv, tick);
}
@@ -67345,14 +75318,14 @@ int HP_skill_additional_effect(struct block_list *src, struct block_list *bl, ui
int HP_skill_counter_additional_effect(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int attack_type, int64 tick) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_counter_additional_effect_pre ) {
+ if (HPMHooks.count.HP_skill_counter_additional_effect_pre > 0) {
int (*preHookFunc) (struct block_list **src, struct block_list **bl, uint16 *skill_id, uint16 *skill_lv, int *attack_type, int64 *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_counter_additional_effect_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_counter_additional_effect_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_counter_additional_effect_pre[hIndex].func;
retVal___ = preHookFunc(&src, &bl, &skill_id, &skill_lv, &attack_type, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67360,9 +75333,9 @@ int HP_skill_counter_additional_effect(struct block_list *src, struct block_list
{
retVal___ = HPMHooks.source.skill.counter_additional_effect(src, bl, skill_id, skill_lv, attack_type, tick);
}
- if( HPMHooks.count.HP_skill_counter_additional_effect_post ) {
+ if (HPMHooks.count.HP_skill_counter_additional_effect_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int attack_type, int64 tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_counter_additional_effect_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_counter_additional_effect_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_counter_additional_effect_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, bl, skill_id, skill_lv, attack_type, tick);
}
@@ -67372,14 +75345,14 @@ int HP_skill_counter_additional_effect(struct block_list *src, struct block_list
int HP_skill_blown(struct block_list *src, struct block_list *target, int count, int8 dir, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_blown_pre ) {
+ if (HPMHooks.count.HP_skill_blown_pre > 0) {
int (*preHookFunc) (struct block_list **src, struct block_list **target, int *count, int8 *dir, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_blown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_blown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_blown_pre[hIndex].func;
retVal___ = preHookFunc(&src, &target, &count, &dir, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67387,9 +75360,9 @@ int HP_skill_blown(struct block_list *src, struct block_list *target, int count,
{
retVal___ = HPMHooks.source.skill.blown(src, target, count, dir, flag);
}
- if( HPMHooks.count.HP_skill_blown_post ) {
+ if (HPMHooks.count.HP_skill_blown_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src, struct block_list *target, int count, int8 dir, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_blown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_blown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_blown_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, target, count, dir, flag);
}
@@ -67399,14 +75372,14 @@ int HP_skill_blown(struct block_list *src, struct block_list *target, int count,
int HP_skill_break_equip(struct block_list *bl, unsigned short where, int rate, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_break_equip_pre ) {
+ if (HPMHooks.count.HP_skill_break_equip_pre > 0) {
int (*preHookFunc) (struct block_list **bl, unsigned short *where, int *rate, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_break_equip_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_break_equip_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_break_equip_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &where, &rate, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67414,9 +75387,9 @@ int HP_skill_break_equip(struct block_list *bl, unsigned short where, int rate,
{
retVal___ = HPMHooks.source.skill.break_equip(bl, where, rate, flag);
}
- if( HPMHooks.count.HP_skill_break_equip_post ) {
+ if (HPMHooks.count.HP_skill_break_equip_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, unsigned short where, int rate, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_break_equip_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_break_equip_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_break_equip_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, where, rate, flag);
}
@@ -67426,14 +75399,14 @@ int HP_skill_break_equip(struct block_list *bl, unsigned short where, int rate,
int HP_skill_strip_equip(struct block_list *bl, unsigned short where, int rate, int lv, int time) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_strip_equip_pre ) {
+ if (HPMHooks.count.HP_skill_strip_equip_pre > 0) {
int (*preHookFunc) (struct block_list **bl, unsigned short *where, int *rate, int *lv, int *time);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_strip_equip_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_strip_equip_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_strip_equip_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &where, &rate, &lv, &time);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67441,9 +75414,9 @@ int HP_skill_strip_equip(struct block_list *bl, unsigned short where, int rate,
{
retVal___ = HPMHooks.source.skill.strip_equip(bl, where, rate, lv, time);
}
- if( HPMHooks.count.HP_skill_strip_equip_post ) {
+ if (HPMHooks.count.HP_skill_strip_equip_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, unsigned short where, int rate, int lv, int time);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_strip_equip_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_strip_equip_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_strip_equip_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, where, rate, lv, time);
}
@@ -67453,14 +75426,14 @@ int HP_skill_strip_equip(struct block_list *bl, unsigned short where, int rate,
struct skill_unit_group* HP_skill_id2group(int group_id) {
int hIndex = 0;
struct skill_unit_group* retVal___ = NULL;
- if( HPMHooks.count.HP_skill_id2group_pre ) {
+ if (HPMHooks.count.HP_skill_id2group_pre > 0) {
struct skill_unit_group* (*preHookFunc) (int *group_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_id2group_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_id2group_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_id2group_pre[hIndex].func;
retVal___ = preHookFunc(&group_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67468,9 +75441,9 @@ struct skill_unit_group* HP_skill_id2group(int group_id) {
{
retVal___ = HPMHooks.source.skill.id2group(group_id);
}
- if( HPMHooks.count.HP_skill_id2group_post ) {
+ if (HPMHooks.count.HP_skill_id2group_post > 0) {
struct skill_unit_group* (*postHookFunc) (struct skill_unit_group* retVal___, int group_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_id2group_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_id2group_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_id2group_post[hIndex].func;
retVal___ = postHookFunc(retVal___, group_id);
}
@@ -67480,14 +75453,14 @@ struct skill_unit_group* HP_skill_id2group(int group_id) {
struct skill_unit_group* HP_skill_unitsetting(struct block_list *src, uint16 skill_id, uint16 skill_lv, short x, short y, int flag) {
int hIndex = 0;
struct skill_unit_group* retVal___ = NULL;
- if( HPMHooks.count.HP_skill_unitsetting_pre ) {
+ if (HPMHooks.count.HP_skill_unitsetting_pre > 0) {
struct skill_unit_group* (*preHookFunc) (struct block_list **src, uint16 *skill_id, uint16 *skill_lv, short *x, short *y, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unitsetting_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unitsetting_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_unitsetting_pre[hIndex].func;
retVal___ = preHookFunc(&src, &skill_id, &skill_lv, &x, &y, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67495,9 +75468,9 @@ struct skill_unit_group* HP_skill_unitsetting(struct block_list *src, uint16 ski
{
retVal___ = HPMHooks.source.skill.unitsetting(src, skill_id, skill_lv, x, y, flag);
}
- if( HPMHooks.count.HP_skill_unitsetting_post ) {
+ if (HPMHooks.count.HP_skill_unitsetting_post > 0) {
struct skill_unit_group* (*postHookFunc) (struct skill_unit_group* retVal___, struct block_list *src, uint16 skill_id, uint16 skill_lv, short x, short y, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unitsetting_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unitsetting_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_unitsetting_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, skill_id, skill_lv, x, y, flag);
}
@@ -67507,14 +75480,14 @@ struct skill_unit_group* HP_skill_unitsetting(struct block_list *src, uint16 ski
struct skill_unit* HP_skill_initunit(struct skill_unit_group *group, int idx, int x, int y, int val1, int val2) {
int hIndex = 0;
struct skill_unit* retVal___ = NULL;
- if( HPMHooks.count.HP_skill_initunit_pre ) {
+ if (HPMHooks.count.HP_skill_initunit_pre > 0) {
struct skill_unit* (*preHookFunc) (struct skill_unit_group **group, int *idx, int *x, int *y, int *val1, int *val2);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_initunit_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_initunit_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_initunit_pre[hIndex].func;
retVal___ = preHookFunc(&group, &idx, &x, &y, &val1, &val2);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67522,9 +75495,9 @@ struct skill_unit* HP_skill_initunit(struct skill_unit_group *group, int idx, in
{
retVal___ = HPMHooks.source.skill.initunit(group, idx, x, y, val1, val2);
}
- if( HPMHooks.count.HP_skill_initunit_post ) {
+ if (HPMHooks.count.HP_skill_initunit_post > 0) {
struct skill_unit* (*postHookFunc) (struct skill_unit* retVal___, struct skill_unit_group *group, int idx, int x, int y, int val1, int val2);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_initunit_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_initunit_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_initunit_post[hIndex].func;
retVal___ = postHookFunc(retVal___, group, idx, x, y, val1, val2);
}
@@ -67534,14 +75507,14 @@ struct skill_unit* HP_skill_initunit(struct skill_unit_group *group, int idx, in
int HP_skill_delunit(struct skill_unit *su) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_delunit_pre ) {
+ if (HPMHooks.count.HP_skill_delunit_pre > 0) {
int (*preHookFunc) (struct skill_unit **su);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_delunit_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_delunit_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_delunit_pre[hIndex].func;
retVal___ = preHookFunc(&su);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67549,9 +75522,9 @@ int HP_skill_delunit(struct skill_unit *su) {
{
retVal___ = HPMHooks.source.skill.delunit(su);
}
- if( HPMHooks.count.HP_skill_delunit_post ) {
+ if (HPMHooks.count.HP_skill_delunit_post > 0) {
int (*postHookFunc) (int retVal___, struct skill_unit *su);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_delunit_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_delunit_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_delunit_post[hIndex].func;
retVal___ = postHookFunc(retVal___, su);
}
@@ -67561,14 +75534,14 @@ int HP_skill_delunit(struct skill_unit *su) {
struct skill_unit_group* HP_skill_init_unitgroup(struct block_list *src, int count, uint16 skill_id, uint16 skill_lv, int unit_id, int limit, int interval) {
int hIndex = 0;
struct skill_unit_group* retVal___ = NULL;
- if( HPMHooks.count.HP_skill_init_unitgroup_pre ) {
+ if (HPMHooks.count.HP_skill_init_unitgroup_pre > 0) {
struct skill_unit_group* (*preHookFunc) (struct block_list **src, int *count, uint16 *skill_id, uint16 *skill_lv, int *unit_id, int *limit, int *interval);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_init_unitgroup_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_init_unitgroup_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_init_unitgroup_pre[hIndex].func;
retVal___ = preHookFunc(&src, &count, &skill_id, &skill_lv, &unit_id, &limit, &interval);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67576,9 +75549,9 @@ struct skill_unit_group* HP_skill_init_unitgroup(struct block_list *src, int cou
{
retVal___ = HPMHooks.source.skill.init_unitgroup(src, count, skill_id, skill_lv, unit_id, limit, interval);
}
- if( HPMHooks.count.HP_skill_init_unitgroup_post ) {
+ if (HPMHooks.count.HP_skill_init_unitgroup_post > 0) {
struct skill_unit_group* (*postHookFunc) (struct skill_unit_group* retVal___, struct block_list *src, int count, uint16 skill_id, uint16 skill_lv, int unit_id, int limit, int interval);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_init_unitgroup_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_init_unitgroup_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_init_unitgroup_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, count, skill_id, skill_lv, unit_id, limit, interval);
}
@@ -67588,14 +75561,14 @@ struct skill_unit_group* HP_skill_init_unitgroup(struct block_list *src, int cou
int HP_skill_del_unitgroup(struct skill_unit_group *group, const char *file, int line, const char *func) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_del_unitgroup_pre ) {
+ if (HPMHooks.count.HP_skill_del_unitgroup_pre > 0) {
int (*preHookFunc) (struct skill_unit_group **group, const char **file, int *line, const char **func);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_del_unitgroup_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_del_unitgroup_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_del_unitgroup_pre[hIndex].func;
retVal___ = preHookFunc(&group, &file, &line, &func);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67603,9 +75576,9 @@ int HP_skill_del_unitgroup(struct skill_unit_group *group, const char *file, int
{
retVal___ = HPMHooks.source.skill.del_unitgroup(group, file, line, func);
}
- if( HPMHooks.count.HP_skill_del_unitgroup_post ) {
+ if (HPMHooks.count.HP_skill_del_unitgroup_post > 0) {
int (*postHookFunc) (int retVal___, struct skill_unit_group *group, const char *file, int line, const char *func);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_del_unitgroup_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_del_unitgroup_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_del_unitgroup_post[hIndex].func;
retVal___ = postHookFunc(retVal___, group, file, line, func);
}
@@ -67615,14 +75588,14 @@ int HP_skill_del_unitgroup(struct skill_unit_group *group, const char *file, int
int HP_skill_clear_unitgroup(struct block_list *src) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_clear_unitgroup_pre ) {
+ if (HPMHooks.count.HP_skill_clear_unitgroup_pre > 0) {
int (*preHookFunc) (struct block_list **src);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_clear_unitgroup_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_clear_unitgroup_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_clear_unitgroup_pre[hIndex].func;
retVal___ = preHookFunc(&src);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67630,9 +75603,9 @@ int HP_skill_clear_unitgroup(struct block_list *src) {
{
retVal___ = HPMHooks.source.skill.clear_unitgroup(src);
}
- if( HPMHooks.count.HP_skill_clear_unitgroup_post ) {
+ if (HPMHooks.count.HP_skill_clear_unitgroup_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_clear_unitgroup_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_clear_unitgroup_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_clear_unitgroup_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src);
}
@@ -67642,14 +75615,14 @@ int HP_skill_clear_unitgroup(struct block_list *src) {
int HP_skill_clear_group(struct block_list *bl, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_clear_group_pre ) {
+ if (HPMHooks.count.HP_skill_clear_group_pre > 0) {
int (*preHookFunc) (struct block_list **bl, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_clear_group_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_clear_group_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_clear_group_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67657,9 +75630,9 @@ int HP_skill_clear_group(struct block_list *bl, int flag) {
{
retVal___ = HPMHooks.source.skill.clear_group(bl, flag);
}
- if( HPMHooks.count.HP_skill_clear_group_post ) {
+ if (HPMHooks.count.HP_skill_clear_group_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_clear_group_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_clear_group_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_clear_group_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, flag);
}
@@ -67669,14 +75642,14 @@ int HP_skill_clear_group(struct block_list *bl, int flag) {
int HP_skill_unit_onplace(struct skill_unit *src, struct block_list *bl, int64 tick) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_unit_onplace_pre ) {
+ if (HPMHooks.count.HP_skill_unit_onplace_pre > 0) {
int (*preHookFunc) (struct skill_unit **src, struct block_list **bl, int64 *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_onplace_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_onplace_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_unit_onplace_pre[hIndex].func;
retVal___ = preHookFunc(&src, &bl, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67684,9 +75657,9 @@ int HP_skill_unit_onplace(struct skill_unit *src, struct block_list *bl, int64 t
{
retVal___ = HPMHooks.source.skill.unit_onplace(src, bl, tick);
}
- if( HPMHooks.count.HP_skill_unit_onplace_post ) {
+ if (HPMHooks.count.HP_skill_unit_onplace_post > 0) {
int (*postHookFunc) (int retVal___, struct skill_unit *src, struct block_list *bl, int64 tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_onplace_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_onplace_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_unit_onplace_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, bl, tick);
}
@@ -67696,14 +75669,14 @@ int HP_skill_unit_onplace(struct skill_unit *src, struct block_list *bl, int64 t
int HP_skill_unit_ondamaged(struct skill_unit *src, struct block_list *bl, int64 damage, int64 tick) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_unit_ondamaged_pre ) {
+ if (HPMHooks.count.HP_skill_unit_ondamaged_pre > 0) {
int (*preHookFunc) (struct skill_unit **src, struct block_list **bl, int64 *damage, int64 *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_ondamaged_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_ondamaged_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_unit_ondamaged_pre[hIndex].func;
retVal___ = preHookFunc(&src, &bl, &damage, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67711,9 +75684,9 @@ int HP_skill_unit_ondamaged(struct skill_unit *src, struct block_list *bl, int64
{
retVal___ = HPMHooks.source.skill.unit_ondamaged(src, bl, damage, tick);
}
- if( HPMHooks.count.HP_skill_unit_ondamaged_post ) {
+ if (HPMHooks.count.HP_skill_unit_ondamaged_post > 0) {
int (*postHookFunc) (int retVal___, struct skill_unit *src, struct block_list *bl, int64 damage, int64 tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_ondamaged_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_ondamaged_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_unit_ondamaged_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, bl, damage, tick);
}
@@ -67723,14 +75696,14 @@ int HP_skill_unit_ondamaged(struct skill_unit *src, struct block_list *bl, int64
int HP_skill_cast_fix(struct block_list *bl, uint16 skill_id, uint16 skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_cast_fix_pre ) {
+ if (HPMHooks.count.HP_skill_cast_fix_pre > 0) {
int (*preHookFunc) (struct block_list **bl, uint16 *skill_id, uint16 *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_cast_fix_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_cast_fix_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_cast_fix_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67738,9 +75711,9 @@ int HP_skill_cast_fix(struct block_list *bl, uint16 skill_id, uint16 skill_lv) {
{
retVal___ = HPMHooks.source.skill.cast_fix(bl, skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_cast_fix_post ) {
+ if (HPMHooks.count.HP_skill_cast_fix_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_cast_fix_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_cast_fix_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_cast_fix_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, skill_id, skill_lv);
}
@@ -67750,14 +75723,14 @@ int HP_skill_cast_fix(struct block_list *bl, uint16 skill_id, uint16 skill_lv) {
int HP_skill_cast_fix_sc(struct block_list *bl, int time) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_cast_fix_sc_pre ) {
+ if (HPMHooks.count.HP_skill_cast_fix_sc_pre > 0) {
int (*preHookFunc) (struct block_list **bl, int *time);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_cast_fix_sc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_cast_fix_sc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_cast_fix_sc_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &time);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67765,9 +75738,9 @@ int HP_skill_cast_fix_sc(struct block_list *bl, int time) {
{
retVal___ = HPMHooks.source.skill.cast_fix_sc(bl, time);
}
- if( HPMHooks.count.HP_skill_cast_fix_sc_post ) {
+ if (HPMHooks.count.HP_skill_cast_fix_sc_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, int time);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_cast_fix_sc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_cast_fix_sc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_cast_fix_sc_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, time);
}
@@ -67777,14 +75750,14 @@ int HP_skill_cast_fix_sc(struct block_list *bl, int time) {
int HP_skill_vf_cast_fix(struct block_list *bl, double time, uint16 skill_id, uint16 skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_vf_cast_fix_pre ) {
+ if (HPMHooks.count.HP_skill_vf_cast_fix_pre > 0) {
int (*preHookFunc) (struct block_list **bl, double *time, uint16 *skill_id, uint16 *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_vf_cast_fix_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_vf_cast_fix_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_vf_cast_fix_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &time, &skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67792,9 +75765,9 @@ int HP_skill_vf_cast_fix(struct block_list *bl, double time, uint16 skill_id, ui
{
retVal___ = HPMHooks.source.skill.vf_cast_fix(bl, time, skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_vf_cast_fix_post ) {
+ if (HPMHooks.count.HP_skill_vf_cast_fix_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, double time, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_vf_cast_fix_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_vf_cast_fix_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_vf_cast_fix_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, time, skill_id, skill_lv);
}
@@ -67804,14 +75777,14 @@ int HP_skill_vf_cast_fix(struct block_list *bl, double time, uint16 skill_id, ui
int HP_skill_delay_fix(struct block_list *bl, uint16 skill_id, uint16 skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_delay_fix_pre ) {
+ if (HPMHooks.count.HP_skill_delay_fix_pre > 0) {
int (*preHookFunc) (struct block_list **bl, uint16 *skill_id, uint16 *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_delay_fix_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_delay_fix_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_delay_fix_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67819,9 +75792,9 @@ int HP_skill_delay_fix(struct block_list *bl, uint16 skill_id, uint16 skill_lv)
{
retVal___ = HPMHooks.source.skill.delay_fix(bl, skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_delay_fix_post ) {
+ if (HPMHooks.count.HP_skill_delay_fix_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_delay_fix_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_delay_fix_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_delay_fix_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, skill_id, skill_lv);
}
@@ -67831,14 +75804,14 @@ int HP_skill_delay_fix(struct block_list *bl, uint16 skill_id, uint16 skill_lv)
int HP_skill_check_condition_castbegin(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_check_condition_castbegin_pre ) {
+ if (HPMHooks.count.HP_skill_check_condition_castbegin_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, uint16 *skill_id, uint16 *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_castbegin_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_castbegin_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_check_condition_castbegin_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67846,9 +75819,9 @@ int HP_skill_check_condition_castbegin(struct map_session_data *sd, uint16 skill
{
retVal___ = HPMHooks.source.skill.check_condition_castbegin(sd, skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_check_condition_castbegin_post ) {
+ if (HPMHooks.count.HP_skill_check_condition_castbegin_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_castbegin_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_castbegin_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_check_condition_castbegin_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, skill_id, skill_lv);
}
@@ -67858,14 +75831,14 @@ int HP_skill_check_condition_castbegin(struct map_session_data *sd, uint16 skill
int HP_skill_check_condition_castend(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_check_condition_castend_pre ) {
+ if (HPMHooks.count.HP_skill_check_condition_castend_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, uint16 *skill_id, uint16 *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_castend_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_castend_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_check_condition_castend_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67873,9 +75846,9 @@ int HP_skill_check_condition_castend(struct map_session_data *sd, uint16 skill_i
{
retVal___ = HPMHooks.source.skill.check_condition_castend(sd, skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_check_condition_castend_post ) {
+ if (HPMHooks.count.HP_skill_check_condition_castend_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_castend_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_castend_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_check_condition_castend_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, skill_id, skill_lv);
}
@@ -67885,14 +75858,14 @@ int HP_skill_check_condition_castend(struct map_session_data *sd, uint16 skill_i
int HP_skill_consume_requirement(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv, short type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_consume_requirement_pre ) {
+ if (HPMHooks.count.HP_skill_consume_requirement_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, uint16 *skill_id, uint16 *skill_lv, short *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_consume_requirement_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_consume_requirement_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_consume_requirement_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &skill_id, &skill_lv, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67900,9 +75873,9 @@ int HP_skill_consume_requirement(struct map_session_data *sd, uint16 skill_id, u
{
retVal___ = HPMHooks.source.skill.consume_requirement(sd, skill_id, skill_lv, type);
}
- if( HPMHooks.count.HP_skill_consume_requirement_post ) {
+ if (HPMHooks.count.HP_skill_consume_requirement_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, uint16 skill_id, uint16 skill_lv, short type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_consume_requirement_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_consume_requirement_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_consume_requirement_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, skill_id, skill_lv, type);
}
@@ -67912,14 +75885,14 @@ int HP_skill_consume_requirement(struct map_session_data *sd, uint16 skill_id, u
struct skill_condition HP_skill_get_requirement(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv) {
int hIndex = 0;
struct skill_condition retVal___ = { 0 };
- if( HPMHooks.count.HP_skill_get_requirement_pre ) {
+ if (HPMHooks.count.HP_skill_get_requirement_pre > 0) {
struct skill_condition (*preHookFunc) (struct map_session_data **sd, uint16 *skill_id, uint16 *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_requirement_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_requirement_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_requirement_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67927,9 +75900,9 @@ struct skill_condition HP_skill_get_requirement(struct map_session_data *sd, uin
{
retVal___ = HPMHooks.source.skill.get_requirement(sd, skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_get_requirement_post ) {
+ if (HPMHooks.count.HP_skill_get_requirement_post > 0) {
struct skill_condition (*postHookFunc) (struct skill_condition retVal___, struct map_session_data *sd, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_requirement_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_requirement_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_requirement_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, skill_id, skill_lv);
}
@@ -67939,14 +75912,14 @@ struct skill_condition HP_skill_get_requirement(struct map_session_data *sd, uin
int HP_skill_check_pc_partner(struct map_session_data *sd, uint16 skill_id, uint16 *skill_lv, int range, int cast_flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_check_pc_partner_pre ) {
+ if (HPMHooks.count.HP_skill_check_pc_partner_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, uint16 *skill_id, uint16 **skill_lv, int *range, int *cast_flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_pc_partner_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_pc_partner_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_check_pc_partner_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &skill_id, &skill_lv, &range, &cast_flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67954,9 +75927,9 @@ int HP_skill_check_pc_partner(struct map_session_data *sd, uint16 skill_id, uint
{
retVal___ = HPMHooks.source.skill.check_pc_partner(sd, skill_id, skill_lv, range, cast_flag);
}
- if( HPMHooks.count.HP_skill_check_pc_partner_post ) {
+ if (HPMHooks.count.HP_skill_check_pc_partner_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, uint16 skill_id, uint16 *skill_lv, int range, int cast_flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_pc_partner_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_pc_partner_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_check_pc_partner_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, skill_id, skill_lv, range, cast_flag);
}
@@ -67966,14 +75939,14 @@ int HP_skill_check_pc_partner(struct map_session_data *sd, uint16 skill_id, uint
int HP_skill_unit_move(struct block_list *bl, int64 tick, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_unit_move_pre ) {
+ if (HPMHooks.count.HP_skill_unit_move_pre > 0) {
int (*preHookFunc) (struct block_list **bl, int64 *tick, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_move_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_move_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_unit_move_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &tick, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -67981,9 +75954,9 @@ int HP_skill_unit_move(struct block_list *bl, int64 tick, int flag) {
{
retVal___ = HPMHooks.source.skill.unit_move(bl, tick, flag);
}
- if( HPMHooks.count.HP_skill_unit_move_post ) {
+ if (HPMHooks.count.HP_skill_unit_move_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, int64 tick, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_move_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_move_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_unit_move_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, tick, flag);
}
@@ -67993,14 +75966,14 @@ int HP_skill_unit_move(struct block_list *bl, int64 tick, int flag) {
int HP_skill_unit_onleft(uint16 skill_id, struct block_list *bl, int64 tick) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_unit_onleft_pre ) {
+ if (HPMHooks.count.HP_skill_unit_onleft_pre > 0) {
int (*preHookFunc) (uint16 *skill_id, struct block_list **bl, int64 *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_onleft_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_onleft_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_unit_onleft_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &bl, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -68008,9 +75981,9 @@ int HP_skill_unit_onleft(uint16 skill_id, struct block_list *bl, int64 tick) {
{
retVal___ = HPMHooks.source.skill.unit_onleft(skill_id, bl, tick);
}
- if( HPMHooks.count.HP_skill_unit_onleft_post ) {
+ if (HPMHooks.count.HP_skill_unit_onleft_post > 0) {
int (*postHookFunc) (int retVal___, uint16 skill_id, struct block_list *bl, int64 tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_onleft_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_onleft_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_unit_onleft_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, bl, tick);
}
@@ -68020,14 +75993,14 @@ int HP_skill_unit_onleft(uint16 skill_id, struct block_list *bl, int64 tick) {
int HP_skill_unit_onout(struct skill_unit *src, struct block_list *bl, int64 tick) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_unit_onout_pre ) {
+ if (HPMHooks.count.HP_skill_unit_onout_pre > 0) {
int (*preHookFunc) (struct skill_unit **src, struct block_list **bl, int64 *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_onout_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_onout_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_unit_onout_pre[hIndex].func;
retVal___ = preHookFunc(&src, &bl, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -68035,9 +76008,9 @@ int HP_skill_unit_onout(struct skill_unit *src, struct block_list *bl, int64 tic
{
retVal___ = HPMHooks.source.skill.unit_onout(src, bl, tick);
}
- if( HPMHooks.count.HP_skill_unit_onout_post ) {
+ if (HPMHooks.count.HP_skill_unit_onout_post > 0) {
int (*postHookFunc) (int retVal___, struct skill_unit *src, struct block_list *bl, int64 tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_onout_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_onout_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_unit_onout_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, bl, tick);
}
@@ -68047,14 +76020,14 @@ int HP_skill_unit_onout(struct skill_unit *src, struct block_list *bl, int64 tic
int HP_skill_unit_move_unit_group(struct skill_unit_group *group, int16 m, int16 dx, int16 dy) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_unit_move_unit_group_pre ) {
+ if (HPMHooks.count.HP_skill_unit_move_unit_group_pre > 0) {
int (*preHookFunc) (struct skill_unit_group **group, int16 *m, int16 *dx, int16 *dy);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_move_unit_group_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_move_unit_group_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_unit_move_unit_group_pre[hIndex].func;
retVal___ = preHookFunc(&group, &m, &dx, &dy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -68062,9 +76035,9 @@ int HP_skill_unit_move_unit_group(struct skill_unit_group *group, int16 m, int16
{
retVal___ = HPMHooks.source.skill.unit_move_unit_group(group, m, dx, dy);
}
- if( HPMHooks.count.HP_skill_unit_move_unit_group_post ) {
+ if (HPMHooks.count.HP_skill_unit_move_unit_group_post > 0) {
int (*postHookFunc) (int retVal___, struct skill_unit_group *group, int16 m, int16 dx, int16 dy);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_move_unit_group_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_move_unit_group_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_unit_move_unit_group_post[hIndex].func;
retVal___ = postHookFunc(retVal___, group, m, dx, dy);
}
@@ -68074,14 +76047,14 @@ int HP_skill_unit_move_unit_group(struct skill_unit_group *group, int16 m, int16
int HP_skill_sit(struct map_session_data *sd, int type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_sit_pre ) {
+ if (HPMHooks.count.HP_skill_sit_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_sit_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_sit_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_sit_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -68089,9 +76062,9 @@ int HP_skill_sit(struct map_session_data *sd, int type) {
{
retVal___ = HPMHooks.source.skill.sit(sd, type);
}
- if( HPMHooks.count.HP_skill_sit_post ) {
+ if (HPMHooks.count.HP_skill_sit_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_sit_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_sit_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_sit_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, type);
}
@@ -68100,14 +76073,14 @@ int HP_skill_sit(struct map_session_data *sd, int type) {
}
void HP_skill_brandishspear(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_brandishspear_pre ) {
+ if (HPMHooks.count.HP_skill_brandishspear_pre > 0) {
void (*preHookFunc) (struct block_list **src, struct block_list **bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_brandishspear_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_brandishspear_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_brandishspear_pre[hIndex].func;
preHookFunc(&src, &bl, &skill_id, &skill_lv, &tick, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -68115,9 +76088,9 @@ void HP_skill_brandishspear(struct block_list *src, struct block_list *bl, uint1
{
HPMHooks.source.skill.brandishspear(src, bl, skill_id, skill_lv, tick, flag);
}
- if( HPMHooks.count.HP_skill_brandishspear_post ) {
+ if (HPMHooks.count.HP_skill_brandishspear_post > 0) {
void (*postHookFunc) (struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_brandishspear_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_brandishspear_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_brandishspear_post[hIndex].func;
postHookFunc(src, bl, skill_id, skill_lv, tick, flag);
}
@@ -68126,14 +76099,14 @@ void HP_skill_brandishspear(struct block_list *src, struct block_list *bl, uint1
}
void HP_skill_repairweapon(struct map_session_data *sd, int idx) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_repairweapon_pre ) {
+ if (HPMHooks.count.HP_skill_repairweapon_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_repairweapon_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_repairweapon_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_repairweapon_pre[hIndex].func;
preHookFunc(&sd, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -68141,9 +76114,9 @@ void HP_skill_repairweapon(struct map_session_data *sd, int idx) {
{
HPMHooks.source.skill.repairweapon(sd, idx);
}
- if( HPMHooks.count.HP_skill_repairweapon_post ) {
+ if (HPMHooks.count.HP_skill_repairweapon_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_repairweapon_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_repairweapon_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_repairweapon_post[hIndex].func;
postHookFunc(sd, idx);
}
@@ -68152,14 +76125,14 @@ void HP_skill_repairweapon(struct map_session_data *sd, int idx) {
}
void HP_skill_identify(struct map_session_data *sd, int idx) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_identify_pre ) {
+ if (HPMHooks.count.HP_skill_identify_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_identify_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_identify_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_identify_pre[hIndex].func;
preHookFunc(&sd, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -68167,9 +76140,9 @@ void HP_skill_identify(struct map_session_data *sd, int idx) {
{
HPMHooks.source.skill.identify(sd, idx);
}
- if( HPMHooks.count.HP_skill_identify_post ) {
+ if (HPMHooks.count.HP_skill_identify_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_identify_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_identify_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_identify_post[hIndex].func;
postHookFunc(sd, idx);
}
@@ -68178,14 +76151,14 @@ void HP_skill_identify(struct map_session_data *sd, int idx) {
}
void HP_skill_weaponrefine(struct map_session_data *sd, int idx) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_weaponrefine_pre ) {
+ if (HPMHooks.count.HP_skill_weaponrefine_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_weaponrefine_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_weaponrefine_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_weaponrefine_pre[hIndex].func;
preHookFunc(&sd, &idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -68193,9 +76166,9 @@ void HP_skill_weaponrefine(struct map_session_data *sd, int idx) {
{
HPMHooks.source.skill.weaponrefine(sd, idx);
}
- if( HPMHooks.count.HP_skill_weaponrefine_post ) {
+ if (HPMHooks.count.HP_skill_weaponrefine_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_weaponrefine_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_weaponrefine_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_weaponrefine_post[hIndex].func;
postHookFunc(sd, idx);
}
@@ -68205,14 +76178,14 @@ void HP_skill_weaponrefine(struct map_session_data *sd, int idx) {
int HP_skill_autospell(struct map_session_data *md, uint16 skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_autospell_pre ) {
+ if (HPMHooks.count.HP_skill_autospell_pre > 0) {
int (*preHookFunc) (struct map_session_data **md, uint16 *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_autospell_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_autospell_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_autospell_pre[hIndex].func;
retVal___ = preHookFunc(&md, &skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -68220,9 +76193,9 @@ int HP_skill_autospell(struct map_session_data *md, uint16 skill_id) {
{
retVal___ = HPMHooks.source.skill.autospell(md, skill_id);
}
- if( HPMHooks.count.HP_skill_autospell_post ) {
+ if (HPMHooks.count.HP_skill_autospell_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *md, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_autospell_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_autospell_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_autospell_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md, skill_id);
}
@@ -68232,14 +76205,14 @@ int HP_skill_autospell(struct map_session_data *md, uint16 skill_id) {
int HP_skill_calc_heal(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, bool heal) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_calc_heal_pre ) {
+ if (HPMHooks.count.HP_skill_calc_heal_pre > 0) {
int (*preHookFunc) (struct block_list **src, struct block_list **target, uint16 *skill_id, uint16 *skill_lv, bool *heal);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_calc_heal_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_calc_heal_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_calc_heal_pre[hIndex].func;
retVal___ = preHookFunc(&src, &target, &skill_id, &skill_lv, &heal);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -68247,9 +76220,9 @@ int HP_skill_calc_heal(struct block_list *src, struct block_list *target, uint16
{
retVal___ = HPMHooks.source.skill.calc_heal(src, target, skill_id, skill_lv, heal);
}
- if( HPMHooks.count.HP_skill_calc_heal_post ) {
+ if (HPMHooks.count.HP_skill_calc_heal_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, bool heal);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_calc_heal_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_calc_heal_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_calc_heal_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, target, skill_id, skill_lv, heal);
}
@@ -68259,14 +76232,14 @@ int HP_skill_calc_heal(struct block_list *src, struct block_list *target, uint16
bool HP_skill_check_cloaking(struct block_list *bl, struct status_change_entry *sce) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_skill_check_cloaking_pre ) {
+ if (HPMHooks.count.HP_skill_check_cloaking_pre > 0) {
bool (*preHookFunc) (struct block_list **bl, struct status_change_entry **sce);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_cloaking_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_cloaking_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_check_cloaking_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sce);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -68274,9 +76247,9 @@ bool HP_skill_check_cloaking(struct block_list *bl, struct status_change_entry *
{
retVal___ = HPMHooks.source.skill.check_cloaking(bl, sce);
}
- if( HPMHooks.count.HP_skill_check_cloaking_post ) {
+ if (HPMHooks.count.HP_skill_check_cloaking_post > 0) {
bool (*postHookFunc) (bool retVal___, struct block_list *bl, struct status_change_entry *sce);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_cloaking_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_cloaking_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_check_cloaking_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sce);
}
@@ -68286,16 +76259,16 @@ bool HP_skill_check_cloaking(struct block_list *bl, struct status_change_entry *
int HP_skill_check_cloaking_end(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_check_cloaking_end_pre ) {
+ if (HPMHooks.count.HP_skill_check_cloaking_end_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_cloaking_end_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_cloaking_end_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_skill_check_cloaking_end_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -68305,9 +76278,9 @@ int HP_skill_check_cloaking_end(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.skill.check_cloaking_end(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_skill_check_cloaking_end_post ) {
+ if (HPMHooks.count.HP_skill_check_cloaking_end_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_cloaking_end_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_cloaking_end_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_skill_check_cloaking_end_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -68319,14 +76292,14 @@ int HP_skill_check_cloaking_end(struct block_list *bl, va_list ap) {
bool HP_skill_can_cloak(struct map_session_data *sd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_skill_can_cloak_pre ) {
+ if (HPMHooks.count.HP_skill_can_cloak_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_can_cloak_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_can_cloak_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_can_cloak_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -68334,9 +76307,9 @@ bool HP_skill_can_cloak(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.skill.can_cloak(sd);
}
- if( HPMHooks.count.HP_skill_can_cloak_post ) {
+ if (HPMHooks.count.HP_skill_can_cloak_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_can_cloak_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_can_cloak_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_can_cloak_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -68346,14 +76319,14 @@ bool HP_skill_can_cloak(struct map_session_data *sd) {
int HP_skill_enchant_elemental_end(struct block_list *bl, int type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_enchant_elemental_end_pre ) {
+ if (HPMHooks.count.HP_skill_enchant_elemental_end_pre > 0) {
int (*preHookFunc) (struct block_list **bl, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_enchant_elemental_end_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_enchant_elemental_end_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_enchant_elemental_end_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -68361,9 +76334,9 @@ int HP_skill_enchant_elemental_end(struct block_list *bl, int type) {
{
retVal___ = HPMHooks.source.skill.enchant_elemental_end(bl, type);
}
- if( HPMHooks.count.HP_skill_enchant_elemental_end_post ) {
+ if (HPMHooks.count.HP_skill_enchant_elemental_end_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_enchant_elemental_end_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_enchant_elemental_end_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_enchant_elemental_end_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, type);
}
@@ -68373,14 +76346,14 @@ int HP_skill_enchant_elemental_end(struct block_list *bl, int type) {
int HP_skill_not_ok(uint16 skill_id, struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_not_ok_pre ) {
+ if (HPMHooks.count.HP_skill_not_ok_pre > 0) {
int (*preHookFunc) (uint16 *skill_id, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_not_ok_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_not_ok_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_not_ok_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -68388,9 +76361,9 @@ int HP_skill_not_ok(uint16 skill_id, struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.skill.not_ok(skill_id, sd);
}
- if( HPMHooks.count.HP_skill_not_ok_post ) {
+ if (HPMHooks.count.HP_skill_not_ok_post > 0) {
int (*postHookFunc) (int retVal___, uint16 skill_id, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_not_ok_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_not_ok_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_not_ok_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, sd);
}
@@ -68400,14 +76373,14 @@ int HP_skill_not_ok(uint16 skill_id, struct map_session_data *sd) {
int HP_skill_not_ok_unknown(uint16 skill_id, struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_not_ok_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_not_ok_unknown_pre > 0) {
int (*preHookFunc) (uint16 *skill_id, struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_not_ok_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_not_ok_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_not_ok_unknown_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -68415,9 +76388,9 @@ int HP_skill_not_ok_unknown(uint16 skill_id, struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.skill.not_ok_unknown(skill_id, sd);
}
- if( HPMHooks.count.HP_skill_not_ok_unknown_post ) {
+ if (HPMHooks.count.HP_skill_not_ok_unknown_post > 0) {
int (*postHookFunc) (int retVal___, uint16 skill_id, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_not_ok_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_not_ok_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_not_ok_unknown_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, sd);
}
@@ -68427,14 +76400,14 @@ int HP_skill_not_ok_unknown(uint16 skill_id, struct map_session_data *sd) {
int HP_skill_not_ok_hom(uint16 skill_id, struct homun_data *hd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_not_ok_hom_pre ) {
+ if (HPMHooks.count.HP_skill_not_ok_hom_pre > 0) {
int (*preHookFunc) (uint16 *skill_id, struct homun_data **hd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_not_ok_hom_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_not_ok_hom_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_not_ok_hom_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &hd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -68442,9 +76415,9 @@ int HP_skill_not_ok_hom(uint16 skill_id, struct homun_data *hd) {
{
retVal___ = HPMHooks.source.skill.not_ok_hom(skill_id, hd);
}
- if( HPMHooks.count.HP_skill_not_ok_hom_post ) {
+ if (HPMHooks.count.HP_skill_not_ok_hom_post > 0) {
int (*postHookFunc) (int retVal___, uint16 skill_id, struct homun_data *hd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_not_ok_hom_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_not_ok_hom_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_not_ok_hom_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, hd);
}
@@ -68454,14 +76427,14 @@ int HP_skill_not_ok_hom(uint16 skill_id, struct homun_data *hd) {
int HP_skill_not_ok_hom_unknown(uint16 skill_id, struct homun_data *hd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_not_ok_hom_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_not_ok_hom_unknown_pre > 0) {
int (*preHookFunc) (uint16 *skill_id, struct homun_data **hd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_not_ok_hom_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_not_ok_hom_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_not_ok_hom_unknown_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &hd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -68469,9 +76442,9 @@ int HP_skill_not_ok_hom_unknown(uint16 skill_id, struct homun_data *hd) {
{
retVal___ = HPMHooks.source.skill.not_ok_hom_unknown(skill_id, hd);
}
- if( HPMHooks.count.HP_skill_not_ok_hom_unknown_post ) {
+ if (HPMHooks.count.HP_skill_not_ok_hom_unknown_post > 0) {
int (*postHookFunc) (int retVal___, uint16 skill_id, struct homun_data *hd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_not_ok_hom_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_not_ok_hom_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_not_ok_hom_unknown_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, hd);
}
@@ -68481,14 +76454,14 @@ int HP_skill_not_ok_hom_unknown(uint16 skill_id, struct homun_data *hd) {
int HP_skill_not_ok_mercenary(uint16 skill_id, struct mercenary_data *md) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_not_ok_mercenary_pre ) {
+ if (HPMHooks.count.HP_skill_not_ok_mercenary_pre > 0) {
int (*preHookFunc) (uint16 *skill_id, struct mercenary_data **md);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_not_ok_mercenary_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_not_ok_mercenary_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_not_ok_mercenary_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &md);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -68496,9 +76469,9 @@ int HP_skill_not_ok_mercenary(uint16 skill_id, struct mercenary_data *md) {
{
retVal___ = HPMHooks.source.skill.not_ok_mercenary(skill_id, md);
}
- if( HPMHooks.count.HP_skill_not_ok_mercenary_post ) {
+ if (HPMHooks.count.HP_skill_not_ok_mercenary_post > 0) {
int (*postHookFunc) (int retVal___, uint16 skill_id, struct mercenary_data *md);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_not_ok_mercenary_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_not_ok_mercenary_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_not_ok_mercenary_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, md);
}
@@ -68508,16 +76481,16 @@ int HP_skill_not_ok_mercenary(uint16 skill_id, struct mercenary_data *md) {
int HP_skill_chastle_mob_changetarget(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_chastle_mob_changetarget_pre ) {
+ if (HPMHooks.count.HP_skill_chastle_mob_changetarget_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_chastle_mob_changetarget_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_chastle_mob_changetarget_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_skill_chastle_mob_changetarget_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -68527,9 +76500,9 @@ int HP_skill_chastle_mob_changetarget(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.skill.chastle_mob_changetarget(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_skill_chastle_mob_changetarget_post ) {
+ if (HPMHooks.count.HP_skill_chastle_mob_changetarget_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_chastle_mob_changetarget_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_chastle_mob_changetarget_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_skill_chastle_mob_changetarget_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -68541,14 +76514,14 @@ int HP_skill_chastle_mob_changetarget(struct block_list *bl, va_list ap) {
int HP_skill_can_produce_mix(struct map_session_data *sd, int nameid, int trigger, int qty) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_can_produce_mix_pre ) {
+ if (HPMHooks.count.HP_skill_can_produce_mix_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *nameid, int *trigger, int *qty);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_can_produce_mix_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_can_produce_mix_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_can_produce_mix_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &nameid, &trigger, &qty);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -68556,9 +76529,9 @@ int HP_skill_can_produce_mix(struct map_session_data *sd, int nameid, int trigge
{
retVal___ = HPMHooks.source.skill.can_produce_mix(sd, nameid, trigger, qty);
}
- if( HPMHooks.count.HP_skill_can_produce_mix_post ) {
+ if (HPMHooks.count.HP_skill_can_produce_mix_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int nameid, int trigger, int qty);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_can_produce_mix_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_can_produce_mix_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_can_produce_mix_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, nameid, trigger, qty);
}
@@ -68568,14 +76541,14 @@ int HP_skill_can_produce_mix(struct map_session_data *sd, int nameid, int trigge
int HP_skill_produce_mix(struct map_session_data *sd, uint16 skill_id, int nameid, int slot1, int slot2, int slot3, int qty) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_produce_mix_pre ) {
+ if (HPMHooks.count.HP_skill_produce_mix_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, uint16 *skill_id, int *nameid, int *slot1, int *slot2, int *slot3, int *qty);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_produce_mix_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_produce_mix_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_produce_mix_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &skill_id, &nameid, &slot1, &slot2, &slot3, &qty);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -68583,9 +76556,9 @@ int HP_skill_produce_mix(struct map_session_data *sd, uint16 skill_id, int namei
{
retVal___ = HPMHooks.source.skill.produce_mix(sd, skill_id, nameid, slot1, slot2, slot3, qty);
}
- if( HPMHooks.count.HP_skill_produce_mix_post ) {
+ if (HPMHooks.count.HP_skill_produce_mix_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, uint16 skill_id, int nameid, int slot1, int slot2, int slot3, int qty);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_produce_mix_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_produce_mix_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_produce_mix_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, skill_id, nameid, slot1, slot2, slot3, qty);
}
@@ -68595,14 +76568,14 @@ int HP_skill_produce_mix(struct map_session_data *sd, uint16 skill_id, int namei
int HP_skill_arrow_create(struct map_session_data *sd, int nameid) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_arrow_create_pre ) {
+ if (HPMHooks.count.HP_skill_arrow_create_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *nameid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_arrow_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_arrow_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_arrow_create_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &nameid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -68610,9 +76583,9 @@ int HP_skill_arrow_create(struct map_session_data *sd, int nameid) {
{
retVal___ = HPMHooks.source.skill.arrow_create(sd, nameid);
}
- if( HPMHooks.count.HP_skill_arrow_create_post ) {
+ if (HPMHooks.count.HP_skill_arrow_create_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int nameid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_arrow_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_arrow_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_arrow_create_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, nameid);
}
@@ -68621,14 +76594,14 @@ int HP_skill_arrow_create(struct map_session_data *sd, int nameid) {
}
void HP_skill_castend_type(int type, struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_castend_type_pre ) {
+ if (HPMHooks.count.HP_skill_castend_type_pre > 0) {
void (*preHookFunc) (int *type, struct block_list **src, struct block_list **bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_type_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_type_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_castend_type_pre[hIndex].func;
preHookFunc(&type, &src, &bl, &skill_id, &skill_lv, &tick, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -68636,9 +76609,9 @@ void HP_skill_castend_type(int type, struct block_list *src, struct block_list *
{
HPMHooks.source.skill.castend_type(type, src, bl, skill_id, skill_lv, tick, flag);
}
- if( HPMHooks.count.HP_skill_castend_type_post ) {
+ if (HPMHooks.count.HP_skill_castend_type_post > 0) {
void (*postHookFunc) (int type, struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_type_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_type_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_castend_type_post[hIndex].func;
postHookFunc(type, src, bl, skill_id, skill_lv, tick, flag);
}
@@ -68648,14 +76621,14 @@ void HP_skill_castend_type(int type, struct block_list *src, struct block_list *
int HP_skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_castend_nodamage_id_pre ) {
+ if (HPMHooks.count.HP_skill_castend_nodamage_id_pre > 0) {
int (*preHookFunc) (struct block_list **src, struct block_list **bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_nodamage_id_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_nodamage_id_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_castend_nodamage_id_pre[hIndex].func;
retVal___ = preHookFunc(&src, &bl, &skill_id, &skill_lv, &tick, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -68663,9 +76636,9 @@ int HP_skill_castend_nodamage_id(struct block_list *src, struct block_list *bl,
{
retVal___ = HPMHooks.source.skill.castend_nodamage_id(src, bl, skill_id, skill_lv, tick, flag);
}
- if( HPMHooks.count.HP_skill_castend_nodamage_id_post ) {
+ if (HPMHooks.count.HP_skill_castend_nodamage_id_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_nodamage_id_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_nodamage_id_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_castend_nodamage_id_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, bl, skill_id, skill_lv, tick, flag);
}
@@ -68675,14 +76648,14 @@ int HP_skill_castend_nodamage_id(struct block_list *src, struct block_list *bl,
int HP_skill_castend_damage_id(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_castend_damage_id_pre ) {
+ if (HPMHooks.count.HP_skill_castend_damage_id_pre > 0) {
int (*preHookFunc) (struct block_list **src, struct block_list **bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_damage_id_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_damage_id_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_castend_damage_id_pre[hIndex].func;
retVal___ = preHookFunc(&src, &bl, &skill_id, &skill_lv, &tick, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -68690,9 +76663,9 @@ int HP_skill_castend_damage_id(struct block_list *src, struct block_list *bl, ui
{
retVal___ = HPMHooks.source.skill.castend_damage_id(src, bl, skill_id, skill_lv, tick, flag);
}
- if( HPMHooks.count.HP_skill_castend_damage_id_post ) {
+ if (HPMHooks.count.HP_skill_castend_damage_id_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_damage_id_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_damage_id_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_castend_damage_id_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, bl, skill_id, skill_lv, tick, flag);
}
@@ -68702,14 +76675,14 @@ int HP_skill_castend_damage_id(struct block_list *src, struct block_list *bl, ui
int HP_skill_castend_pos2(struct block_list *src, int x, int y, uint16 skill_id, uint16 skill_lv, int64 tick, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_castend_pos2_pre ) {
+ if (HPMHooks.count.HP_skill_castend_pos2_pre > 0) {
int (*preHookFunc) (struct block_list **src, int *x, int *y, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_pos2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_pos2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_castend_pos2_pre[hIndex].func;
retVal___ = preHookFunc(&src, &x, &y, &skill_id, &skill_lv, &tick, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -68717,9 +76690,9 @@ int HP_skill_castend_pos2(struct block_list *src, int x, int y, uint16 skill_id,
{
retVal___ = HPMHooks.source.skill.castend_pos2(src, x, y, skill_id, skill_lv, tick, flag);
}
- if( HPMHooks.count.HP_skill_castend_pos2_post ) {
+ if (HPMHooks.count.HP_skill_castend_pos2_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src, int x, int y, uint16 skill_id, uint16 skill_lv, int64 tick, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_pos2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_pos2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_castend_pos2_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, x, y, skill_id, skill_lv, tick, flag);
}
@@ -68729,14 +76702,14 @@ int HP_skill_castend_pos2(struct block_list *src, int x, int y, uint16 skill_id,
int HP_skill_blockpc_start(struct map_session_data *sd, uint16 skill_id, int tick) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_blockpc_start_pre ) {
+ if (HPMHooks.count.HP_skill_blockpc_start_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, uint16 *skill_id, int *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_blockpc_start_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_blockpc_start_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_blockpc_start_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &skill_id, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -68744,9 +76717,9 @@ int HP_skill_blockpc_start(struct map_session_data *sd, uint16 skill_id, int tic
{
retVal___ = HPMHooks.source.skill.blockpc_start(sd, skill_id, tick);
}
- if( HPMHooks.count.HP_skill_blockpc_start_post ) {
+ if (HPMHooks.count.HP_skill_blockpc_start_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, uint16 skill_id, int tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_blockpc_start_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_blockpc_start_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_blockpc_start_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, skill_id, tick);
}
@@ -68756,14 +76729,14 @@ int HP_skill_blockpc_start(struct map_session_data *sd, uint16 skill_id, int tic
int HP_skill_blockhomun_start(struct homun_data *hd, uint16 skill_id, int tick) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_blockhomun_start_pre ) {
+ if (HPMHooks.count.HP_skill_blockhomun_start_pre > 0) {
int (*preHookFunc) (struct homun_data **hd, uint16 *skill_id, int *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_blockhomun_start_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_blockhomun_start_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_blockhomun_start_pre[hIndex].func;
retVal___ = preHookFunc(&hd, &skill_id, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -68771,9 +76744,9 @@ int HP_skill_blockhomun_start(struct homun_data *hd, uint16 skill_id, int tick)
{
retVal___ = HPMHooks.source.skill.blockhomun_start(hd, skill_id, tick);
}
- if( HPMHooks.count.HP_skill_blockhomun_start_post ) {
+ if (HPMHooks.count.HP_skill_blockhomun_start_post > 0) {
int (*postHookFunc) (int retVal___, struct homun_data *hd, uint16 skill_id, int tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_blockhomun_start_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_blockhomun_start_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_blockhomun_start_post[hIndex].func;
retVal___ = postHookFunc(retVal___, hd, skill_id, tick);
}
@@ -68783,14 +76756,14 @@ int HP_skill_blockhomun_start(struct homun_data *hd, uint16 skill_id, int tick)
int HP_skill_blockmerc_start(struct mercenary_data *md, uint16 skill_id, int tick) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_blockmerc_start_pre ) {
+ if (HPMHooks.count.HP_skill_blockmerc_start_pre > 0) {
int (*preHookFunc) (struct mercenary_data **md, uint16 *skill_id, int *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_blockmerc_start_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_blockmerc_start_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_blockmerc_start_pre[hIndex].func;
retVal___ = preHookFunc(&md, &skill_id, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -68798,9 +76771,9 @@ int HP_skill_blockmerc_start(struct mercenary_data *md, uint16 skill_id, int tic
{
retVal___ = HPMHooks.source.skill.blockmerc_start(md, skill_id, tick);
}
- if( HPMHooks.count.HP_skill_blockmerc_start_post ) {
+ if (HPMHooks.count.HP_skill_blockmerc_start_post > 0) {
int (*postHookFunc) (int retVal___, struct mercenary_data *md, uint16 skill_id, int tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_blockmerc_start_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_blockmerc_start_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_blockmerc_start_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md, skill_id, tick);
}
@@ -68810,14 +76783,14 @@ int HP_skill_blockmerc_start(struct mercenary_data *md, uint16 skill_id, int tic
int HP_skill_attack(int attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_attack_pre ) {
+ if (HPMHooks.count.HP_skill_attack_pre > 0) {
int (*preHookFunc) (int *attack_type, struct block_list **src, struct block_list **dsrc, struct block_list **bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_attack_pre[hIndex].func;
retVal___ = preHookFunc(&attack_type, &src, &dsrc, &bl, &skill_id, &skill_lv, &tick, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -68825,9 +76798,9 @@ int HP_skill_attack(int attack_type, struct block_list *src, struct block_list *
{
retVal___ = HPMHooks.source.skill.attack(attack_type, src, dsrc, bl, skill_id, skill_lv, tick, flag);
}
- if( HPMHooks.count.HP_skill_attack_post ) {
+ if (HPMHooks.count.HP_skill_attack_post > 0) {
int (*postHookFunc) (int retVal___, int attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_attack_post[hIndex].func;
retVal___ = postHookFunc(retVal___, attack_type, src, dsrc, bl, skill_id, skill_lv, tick, flag);
}
@@ -68837,16 +76810,16 @@ int HP_skill_attack(int attack_type, struct block_list *src, struct block_list *
int HP_skill_attack_area(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_attack_area_pre ) {
+ if (HPMHooks.count.HP_skill_attack_area_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_area_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_area_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_skill_attack_area_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -68856,9 +76829,9 @@ int HP_skill_attack_area(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.skill.attack_area(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_skill_attack_area_post ) {
+ if (HPMHooks.count.HP_skill_attack_area_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_area_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_area_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_skill_attack_area_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -68870,16 +76843,16 @@ int HP_skill_attack_area(struct block_list *bl, va_list ap) {
int HP_skill_area_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_area_sub_pre ) {
+ if (HPMHooks.count.HP_skill_area_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_area_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_area_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_skill_area_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -68889,9 +76862,9 @@ int HP_skill_area_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.skill.area_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_skill_area_sub_post ) {
+ if (HPMHooks.count.HP_skill_area_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_area_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_area_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_skill_area_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -68903,14 +76876,14 @@ int HP_skill_area_sub(struct block_list *bl, va_list ap) {
int HP_skill_area_sub_count(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int64 tick, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_area_sub_count_pre ) {
+ if (HPMHooks.count.HP_skill_area_sub_count_pre > 0) {
int (*preHookFunc) (struct block_list **src, struct block_list **target, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_area_sub_count_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_area_sub_count_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_area_sub_count_pre[hIndex].func;
retVal___ = preHookFunc(&src, &target, &skill_id, &skill_lv, &tick, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -68918,9 +76891,9 @@ int HP_skill_area_sub_count(struct block_list *src, struct block_list *target, u
{
retVal___ = HPMHooks.source.skill.area_sub_count(src, target, skill_id, skill_lv, tick, flag);
}
- if( HPMHooks.count.HP_skill_area_sub_count_post ) {
+ if (HPMHooks.count.HP_skill_area_sub_count_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int64 tick, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_area_sub_count_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_area_sub_count_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_area_sub_count_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, target, skill_id, skill_lv, tick, flag);
}
@@ -68930,14 +76903,14 @@ int HP_skill_area_sub_count(struct block_list *src, struct block_list *target, u
int HP_skill_check_unit_range(struct block_list *bl, int x, int y, uint16 skill_id, uint16 skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_check_unit_range_pre ) {
+ if (HPMHooks.count.HP_skill_check_unit_range_pre > 0) {
int (*preHookFunc) (struct block_list **bl, int *x, int *y, uint16 *skill_id, uint16 *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_unit_range_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_unit_range_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_check_unit_range_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &x, &y, &skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -68945,9 +76918,9 @@ int HP_skill_check_unit_range(struct block_list *bl, int x, int y, uint16 skill_
{
retVal___ = HPMHooks.source.skill.check_unit_range(bl, x, y, skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_check_unit_range_post ) {
+ if (HPMHooks.count.HP_skill_check_unit_range_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, int x, int y, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_unit_range_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_unit_range_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_check_unit_range_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, x, y, skill_id, skill_lv);
}
@@ -68957,16 +76930,16 @@ int HP_skill_check_unit_range(struct block_list *bl, int x, int y, uint16 skill_
int HP_skill_check_unit_range_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_check_unit_range_sub_pre ) {
+ if (HPMHooks.count.HP_skill_check_unit_range_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_unit_range_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_unit_range_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_skill_check_unit_range_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -68976,9 +76949,9 @@ int HP_skill_check_unit_range_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.skill.check_unit_range_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_skill_check_unit_range_sub_post ) {
+ if (HPMHooks.count.HP_skill_check_unit_range_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_unit_range_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_unit_range_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_skill_check_unit_range_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -68990,14 +76963,14 @@ int HP_skill_check_unit_range_sub(struct block_list *bl, va_list ap) {
int HP_skill_check_unit_range2(struct block_list *bl, int x, int y, uint16 skill_id, uint16 skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_check_unit_range2_pre ) {
+ if (HPMHooks.count.HP_skill_check_unit_range2_pre > 0) {
int (*preHookFunc) (struct block_list **bl, int *x, int *y, uint16 *skill_id, uint16 *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_unit_range2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_unit_range2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_check_unit_range2_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &x, &y, &skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -69005,9 +76978,9 @@ int HP_skill_check_unit_range2(struct block_list *bl, int x, int y, uint16 skill
{
retVal___ = HPMHooks.source.skill.check_unit_range2(bl, x, y, skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_check_unit_range2_post ) {
+ if (HPMHooks.count.HP_skill_check_unit_range2_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, int x, int y, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_unit_range2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_unit_range2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_check_unit_range2_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, x, y, skill_id, skill_lv);
}
@@ -69017,16 +76990,16 @@ int HP_skill_check_unit_range2(struct block_list *bl, int x, int y, uint16 skill
int HP_skill_check_unit_range2_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_check_unit_range2_sub_pre ) {
+ if (HPMHooks.count.HP_skill_check_unit_range2_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_unit_range2_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_unit_range2_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_skill_check_unit_range2_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -69036,9 +77009,9 @@ int HP_skill_check_unit_range2_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.skill.check_unit_range2_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_skill_check_unit_range2_sub_post ) {
+ if (HPMHooks.count.HP_skill_check_unit_range2_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_unit_range2_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_unit_range2_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_skill_check_unit_range2_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -69049,14 +77022,14 @@ int HP_skill_check_unit_range2_sub(struct block_list *bl, va_list ap) {
}
void HP_skill_toggle_magicpower(struct block_list *bl, uint16 skill_id) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_toggle_magicpower_pre ) {
+ if (HPMHooks.count.HP_skill_toggle_magicpower_pre > 0) {
void (*preHookFunc) (struct block_list **bl, uint16 *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_toggle_magicpower_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_toggle_magicpower_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_toggle_magicpower_pre[hIndex].func;
preHookFunc(&bl, &skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -69064,9 +77037,9 @@ void HP_skill_toggle_magicpower(struct block_list *bl, uint16 skill_id) {
{
HPMHooks.source.skill.toggle_magicpower(bl, skill_id);
}
- if( HPMHooks.count.HP_skill_toggle_magicpower_post ) {
+ if (HPMHooks.count.HP_skill_toggle_magicpower_post > 0) {
void (*postHookFunc) (struct block_list *bl, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_toggle_magicpower_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_toggle_magicpower_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_toggle_magicpower_post[hIndex].func;
postHookFunc(bl, skill_id);
}
@@ -69076,14 +77049,14 @@ void HP_skill_toggle_magicpower(struct block_list *bl, uint16 skill_id) {
int HP_skill_magic_reflect(struct block_list *src, struct block_list *bl, int type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_magic_reflect_pre ) {
+ if (HPMHooks.count.HP_skill_magic_reflect_pre > 0) {
int (*preHookFunc) (struct block_list **src, struct block_list **bl, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_magic_reflect_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_magic_reflect_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_magic_reflect_pre[hIndex].func;
retVal___ = preHookFunc(&src, &bl, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -69091,9 +77064,9 @@ int HP_skill_magic_reflect(struct block_list *src, struct block_list *bl, int ty
{
retVal___ = HPMHooks.source.skill.magic_reflect(src, bl, type);
}
- if( HPMHooks.count.HP_skill_magic_reflect_post ) {
+ if (HPMHooks.count.HP_skill_magic_reflect_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src, struct block_list *bl, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_magic_reflect_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_magic_reflect_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_magic_reflect_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, bl, type);
}
@@ -69103,14 +77076,14 @@ int HP_skill_magic_reflect(struct block_list *src, struct block_list *bl, int ty
int HP_skill_onskillusage(struct map_session_data *sd, struct block_list *bl, uint16 skill_id, int64 tick) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_onskillusage_pre ) {
+ if (HPMHooks.count.HP_skill_onskillusage_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct block_list **bl, uint16 *skill_id, int64 *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_onskillusage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_onskillusage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_onskillusage_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &bl, &skill_id, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -69118,9 +77091,9 @@ int HP_skill_onskillusage(struct map_session_data *sd, struct block_list *bl, ui
{
retVal___ = HPMHooks.source.skill.onskillusage(sd, bl, skill_id, tick);
}
- if( HPMHooks.count.HP_skill_onskillusage_post ) {
+ if (HPMHooks.count.HP_skill_onskillusage_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct block_list *bl, uint16 skill_id, int64 tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_onskillusage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_onskillusage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_onskillusage_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, bl, skill_id, tick);
}
@@ -69130,16 +77103,16 @@ int HP_skill_onskillusage(struct map_session_data *sd, struct block_list *bl, ui
int HP_skill_cell_overlap(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_cell_overlap_pre ) {
+ if (HPMHooks.count.HP_skill_cell_overlap_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_cell_overlap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_cell_overlap_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_skill_cell_overlap_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -69149,9 +77122,9 @@ int HP_skill_cell_overlap(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.skill.cell_overlap(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_skill_cell_overlap_post ) {
+ if (HPMHooks.count.HP_skill_cell_overlap_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_cell_overlap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_cell_overlap_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_skill_cell_overlap_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -69163,14 +77136,14 @@ int HP_skill_cell_overlap(struct block_list *bl, va_list ap) {
int HP_skill_timerskill(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_timerskill_pre ) {
+ if (HPMHooks.count.HP_skill_timerskill_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_timerskill_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_timerskill_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_timerskill_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -69178,28 +77151,54 @@ int HP_skill_timerskill(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.skill.timerskill(tid, tick, id, data);
}
- if( HPMHooks.count.HP_skill_timerskill_post ) {
+ if (HPMHooks.count.HP_skill_timerskill_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_timerskill_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_timerskill_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_timerskill_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
}
return retVal___;
}
+void HP_skill_trap_do_splash(struct block_list *bl, uint16 skill_id, uint16 skill_lv, int bl_flag, int64 tick) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_trap_do_splash_pre > 0) {
+ void (*preHookFunc) (struct block_list **bl, uint16 *skill_id, uint16 *skill_lv, int *bl_flag, int64 *tick);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_trap_do_splash_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_trap_do_splash_pre[hIndex].func;
+ preHookFunc(&bl, &skill_id, &skill_lv, &bl_flag, &tick);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.trap_do_splash(bl, skill_id, skill_lv, bl_flag, tick);
+ }
+ if (HPMHooks.count.HP_skill_trap_do_splash_post > 0) {
+ void (*postHookFunc) (struct block_list *bl, uint16 skill_id, uint16 skill_lv, int bl_flag, int64 tick);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_trap_do_splash_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_trap_do_splash_post[hIndex].func;
+ postHookFunc(bl, skill_id, skill_lv, bl_flag, tick);
+ }
+ }
+ return;
+}
int HP_skill_trap_splash(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_trap_splash_pre ) {
+ if (HPMHooks.count.HP_skill_trap_splash_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_trap_splash_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_trap_splash_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_skill_trap_splash_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -69209,9 +77208,9 @@ int HP_skill_trap_splash(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.skill.trap_splash(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_skill_trap_splash_post ) {
+ if (HPMHooks.count.HP_skill_trap_splash_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_trap_splash_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_trap_splash_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_skill_trap_splash_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -69223,14 +77222,14 @@ int HP_skill_trap_splash(struct block_list *bl, va_list ap) {
int HP_skill_check_condition_mercenary(struct block_list *bl, int skill_id, int lv, int type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_check_condition_mercenary_pre ) {
+ if (HPMHooks.count.HP_skill_check_condition_mercenary_pre > 0) {
int (*preHookFunc) (struct block_list **bl, int *skill_id, int *lv, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_mercenary_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_mercenary_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_check_condition_mercenary_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &skill_id, &lv, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -69238,9 +77237,9 @@ int HP_skill_check_condition_mercenary(struct block_list *bl, int skill_id, int
{
retVal___ = HPMHooks.source.skill.check_condition_mercenary(bl, skill_id, lv, type);
}
- if( HPMHooks.count.HP_skill_check_condition_mercenary_post ) {
+ if (HPMHooks.count.HP_skill_check_condition_mercenary_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, int skill_id, int lv, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_mercenary_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_mercenary_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_check_condition_mercenary_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, skill_id, lv, type);
}
@@ -69250,14 +77249,14 @@ int HP_skill_check_condition_mercenary(struct block_list *bl, int skill_id, int
struct skill_unit_group* HP_skill_locate_element_field(struct block_list *bl) {
int hIndex = 0;
struct skill_unit_group* retVal___ = NULL;
- if( HPMHooks.count.HP_skill_locate_element_field_pre ) {
+ if (HPMHooks.count.HP_skill_locate_element_field_pre > 0) {
struct skill_unit_group* (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_locate_element_field_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_locate_element_field_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_locate_element_field_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -69265,9 +77264,9 @@ struct skill_unit_group* HP_skill_locate_element_field(struct block_list *bl) {
{
retVal___ = HPMHooks.source.skill.locate_element_field(bl);
}
- if( HPMHooks.count.HP_skill_locate_element_field_post ) {
+ if (HPMHooks.count.HP_skill_locate_element_field_post > 0) {
struct skill_unit_group* (*postHookFunc) (struct skill_unit_group* retVal___, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_locate_element_field_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_locate_element_field_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_locate_element_field_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -69277,16 +77276,16 @@ struct skill_unit_group* HP_skill_locate_element_field(struct block_list *bl) {
int HP_skill_graffitiremover(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_graffitiremover_pre ) {
+ if (HPMHooks.count.HP_skill_graffitiremover_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_graffitiremover_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_graffitiremover_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_skill_graffitiremover_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -69296,9 +77295,9 @@ int HP_skill_graffitiremover(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.skill.graffitiremover(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_skill_graffitiremover_post ) {
+ if (HPMHooks.count.HP_skill_graffitiremover_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_graffitiremover_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_graffitiremover_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_skill_graffitiremover_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -69310,16 +77309,16 @@ int HP_skill_graffitiremover(struct block_list *bl, va_list ap) {
int HP_skill_activate_reverberation(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_activate_reverberation_pre ) {
+ if (HPMHooks.count.HP_skill_activate_reverberation_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_activate_reverberation_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_activate_reverberation_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_skill_activate_reverberation_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -69329,9 +77328,9 @@ int HP_skill_activate_reverberation(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.skill.activate_reverberation(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_skill_activate_reverberation_post ) {
+ if (HPMHooks.count.HP_skill_activate_reverberation_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_activate_reverberation_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_activate_reverberation_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_skill_activate_reverberation_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -69343,16 +77342,16 @@ int HP_skill_activate_reverberation(struct block_list *bl, va_list ap) {
int HP_skill_dance_overlap_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_dance_overlap_sub_pre ) {
+ if (HPMHooks.count.HP_skill_dance_overlap_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_dance_overlap_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_dance_overlap_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_skill_dance_overlap_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -69362,9 +77361,9 @@ int HP_skill_dance_overlap_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.skill.dance_overlap_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_skill_dance_overlap_sub_post ) {
+ if (HPMHooks.count.HP_skill_dance_overlap_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_dance_overlap_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_dance_overlap_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_skill_dance_overlap_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -69376,14 +77375,14 @@ int HP_skill_dance_overlap_sub(struct block_list *bl, va_list ap) {
int HP_skill_dance_overlap(struct skill_unit *su, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_dance_overlap_pre ) {
+ if (HPMHooks.count.HP_skill_dance_overlap_pre > 0) {
int (*preHookFunc) (struct skill_unit **su, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_dance_overlap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_dance_overlap_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_dance_overlap_pre[hIndex].func;
retVal___ = preHookFunc(&su, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -69391,9 +77390,9 @@ int HP_skill_dance_overlap(struct skill_unit *su, int flag) {
{
retVal___ = HPMHooks.source.skill.dance_overlap(su, flag);
}
- if( HPMHooks.count.HP_skill_dance_overlap_post ) {
+ if (HPMHooks.count.HP_skill_dance_overlap_post > 0) {
int (*postHookFunc) (int retVal___, struct skill_unit *su, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_dance_overlap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_dance_overlap_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_dance_overlap_post[hIndex].func;
retVal___ = postHookFunc(retVal___, su, flag);
}
@@ -69403,14 +77402,14 @@ int HP_skill_dance_overlap(struct skill_unit *su, int flag) {
struct s_skill_unit_layout* HP_skill_get_unit_layout(uint16 skill_id, uint16 skill_lv, struct block_list *src, int x, int y) {
int hIndex = 0;
struct s_skill_unit_layout* retVal___ = NULL;
- if( HPMHooks.count.HP_skill_get_unit_layout_pre ) {
+ if (HPMHooks.count.HP_skill_get_unit_layout_pre > 0) {
struct s_skill_unit_layout* (*preHookFunc) (uint16 *skill_id, uint16 *skill_lv, struct block_list **src, int *x, int *y);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_layout_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_layout_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_unit_layout_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &skill_lv, &src, &x, &y);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -69418,9 +77417,9 @@ struct s_skill_unit_layout* HP_skill_get_unit_layout(uint16 skill_id, uint16 ski
{
retVal___ = HPMHooks.source.skill.get_unit_layout(skill_id, skill_lv, src, x, y);
}
- if( HPMHooks.count.HP_skill_get_unit_layout_post ) {
+ if (HPMHooks.count.HP_skill_get_unit_layout_post > 0) {
struct s_skill_unit_layout* (*postHookFunc) (struct s_skill_unit_layout* retVal___, uint16 skill_id, uint16 skill_lv, struct block_list *src, int x, int y);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_layout_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_layout_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_unit_layout_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, skill_lv, src, x, y);
}
@@ -69430,16 +77429,16 @@ struct s_skill_unit_layout* HP_skill_get_unit_layout(uint16 skill_id, uint16 ski
int HP_skill_frostjoke_scream(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_frostjoke_scream_pre ) {
+ if (HPMHooks.count.HP_skill_frostjoke_scream_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_frostjoke_scream_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_frostjoke_scream_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_skill_frostjoke_scream_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -69449,9 +77448,9 @@ int HP_skill_frostjoke_scream(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.skill.frostjoke_scream(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_skill_frostjoke_scream_post ) {
+ if (HPMHooks.count.HP_skill_frostjoke_scream_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_frostjoke_scream_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_frostjoke_scream_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_skill_frostjoke_scream_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -69463,16 +77462,16 @@ int HP_skill_frostjoke_scream(struct block_list *bl, va_list ap) {
int HP_skill_greed(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_greed_pre ) {
+ if (HPMHooks.count.HP_skill_greed_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_greed_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_greed_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_skill_greed_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -69482,9 +77481,9 @@ int HP_skill_greed(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.skill.greed(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_skill_greed_post ) {
+ if (HPMHooks.count.HP_skill_greed_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_greed_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_greed_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_skill_greed_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -69496,16 +77495,16 @@ int HP_skill_greed(struct block_list *bl, va_list ap) {
int HP_skill_destroy_trap(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_destroy_trap_pre ) {
+ if (HPMHooks.count.HP_skill_destroy_trap_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_destroy_trap_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_destroy_trap_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_skill_destroy_trap_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -69515,9 +77514,9 @@ int HP_skill_destroy_trap(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.skill.destroy_trap(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_skill_destroy_trap_post ) {
+ if (HPMHooks.count.HP_skill_destroy_trap_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_destroy_trap_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_destroy_trap_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_skill_destroy_trap_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -69529,14 +77528,14 @@ int HP_skill_destroy_trap(struct block_list *bl, va_list ap) {
struct skill_unit_group_tickset* HP_skill_unitgrouptickset_search(struct block_list *bl, struct skill_unit_group *group, int64 tick) {
int hIndex = 0;
struct skill_unit_group_tickset* retVal___ = NULL;
- if( HPMHooks.count.HP_skill_unitgrouptickset_search_pre ) {
+ if (HPMHooks.count.HP_skill_unitgrouptickset_search_pre > 0) {
struct skill_unit_group_tickset* (*preHookFunc) (struct block_list **bl, struct skill_unit_group **group, int64 *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unitgrouptickset_search_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unitgrouptickset_search_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_unitgrouptickset_search_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &group, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -69544,9 +77543,9 @@ struct skill_unit_group_tickset* HP_skill_unitgrouptickset_search(struct block_l
{
retVal___ = HPMHooks.source.skill.unitgrouptickset_search(bl, group, tick);
}
- if( HPMHooks.count.HP_skill_unitgrouptickset_search_post ) {
+ if (HPMHooks.count.HP_skill_unitgrouptickset_search_post > 0) {
struct skill_unit_group_tickset* (*postHookFunc) (struct skill_unit_group_tickset* retVal___, struct block_list *bl, struct skill_unit_group *group, int64 tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unitgrouptickset_search_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unitgrouptickset_search_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_unitgrouptickset_search_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, group, tick);
}
@@ -69556,14 +77555,14 @@ struct skill_unit_group_tickset* HP_skill_unitgrouptickset_search(struct block_l
bool HP_skill_dance_switch(struct skill_unit *su, int flag) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_skill_dance_switch_pre ) {
+ if (HPMHooks.count.HP_skill_dance_switch_pre > 0) {
bool (*preHookFunc) (struct skill_unit **su, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_dance_switch_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_dance_switch_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_dance_switch_pre[hIndex].func;
retVal___ = preHookFunc(&su, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -69571,9 +77570,9 @@ bool HP_skill_dance_switch(struct skill_unit *su, int flag) {
{
retVal___ = HPMHooks.source.skill.dance_switch(su, flag);
}
- if( HPMHooks.count.HP_skill_dance_switch_post ) {
+ if (HPMHooks.count.HP_skill_dance_switch_post > 0) {
bool (*postHookFunc) (bool retVal___, struct skill_unit *su, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_dance_switch_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_dance_switch_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_dance_switch_post[hIndex].func;
retVal___ = postHookFunc(retVal___, su, flag);
}
@@ -69583,16 +77582,16 @@ bool HP_skill_dance_switch(struct skill_unit *su, int flag) {
int HP_skill_check_condition_char_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_check_condition_char_sub_pre ) {
+ if (HPMHooks.count.HP_skill_check_condition_char_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_char_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_char_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_skill_check_condition_char_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -69602,9 +77601,9 @@ int HP_skill_check_condition_char_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.skill.check_condition_char_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_skill_check_condition_char_sub_post ) {
+ if (HPMHooks.count.HP_skill_check_condition_char_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_char_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_char_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_skill_check_condition_char_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -69616,16 +77615,16 @@ int HP_skill_check_condition_char_sub(struct block_list *bl, va_list ap) {
int HP_skill_check_condition_mob_master_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_check_condition_mob_master_sub_pre ) {
+ if (HPMHooks.count.HP_skill_check_condition_mob_master_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_mob_master_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_mob_master_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_skill_check_condition_mob_master_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -69635,9 +77634,9 @@ int HP_skill_check_condition_mob_master_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.skill.check_condition_mob_master_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_skill_check_condition_mob_master_sub_post ) {
+ if (HPMHooks.count.HP_skill_check_condition_mob_master_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_mob_master_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_mob_master_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_skill_check_condition_mob_master_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -69648,14 +77647,14 @@ int HP_skill_check_condition_mob_master_sub(struct block_list *bl, va_list ap) {
}
void HP_skill_brandishspear_first(struct square *tc, uint8 dir, int16 x, int16 y) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_brandishspear_first_pre ) {
+ if (HPMHooks.count.HP_skill_brandishspear_first_pre > 0) {
void (*preHookFunc) (struct square **tc, uint8 *dir, int16 *x, int16 *y);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_brandishspear_first_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_brandishspear_first_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_brandishspear_first_pre[hIndex].func;
preHookFunc(&tc, &dir, &x, &y);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -69663,9 +77662,9 @@ void HP_skill_brandishspear_first(struct square *tc, uint8 dir, int16 x, int16 y
{
HPMHooks.source.skill.brandishspear_first(tc, dir, x, y);
}
- if( HPMHooks.count.HP_skill_brandishspear_first_post ) {
+ if (HPMHooks.count.HP_skill_brandishspear_first_post > 0) {
void (*postHookFunc) (struct square *tc, uint8 dir, int16 x, int16 y);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_brandishspear_first_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_brandishspear_first_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_brandishspear_first_post[hIndex].func;
postHookFunc(tc, dir, x, y);
}
@@ -69674,14 +77673,14 @@ void HP_skill_brandishspear_first(struct square *tc, uint8 dir, int16 x, int16 y
}
void HP_skill_brandishspear_dir(struct square *tc, uint8 dir, int are) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_brandishspear_dir_pre ) {
+ if (HPMHooks.count.HP_skill_brandishspear_dir_pre > 0) {
void (*preHookFunc) (struct square **tc, uint8 *dir, int *are);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_brandishspear_dir_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_brandishspear_dir_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_brandishspear_dir_pre[hIndex].func;
preHookFunc(&tc, &dir, &are);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -69689,26 +77688,26 @@ void HP_skill_brandishspear_dir(struct square *tc, uint8 dir, int are) {
{
HPMHooks.source.skill.brandishspear_dir(tc, dir, are);
}
- if( HPMHooks.count.HP_skill_brandishspear_dir_post ) {
+ if (HPMHooks.count.HP_skill_brandishspear_dir_post > 0) {
void (*postHookFunc) (struct square *tc, uint8 dir, int are);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_brandishspear_dir_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_brandishspear_dir_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_brandishspear_dir_post[hIndex].func;
postHookFunc(tc, dir, are);
}
}
return;
}
-int HP_skill_get_fixed_cast(uint16 skill_id, uint16 skill_lv) {
+int HP_skill_get_fixed_cast(int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_fixed_cast_pre ) {
- int (*preHookFunc) (uint16 *skill_id, uint16 *skill_lv);
+ if (HPMHooks.count.HP_skill_get_fixed_cast_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_fixed_cast_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_fixed_cast_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_fixed_cast_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -69716,9 +77715,9 @@ int HP_skill_get_fixed_cast(uint16 skill_id, uint16 skill_lv) {
{
retVal___ = HPMHooks.source.skill.get_fixed_cast(skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_get_fixed_cast_post ) {
- int (*postHookFunc) (int retVal___, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_fixed_cast_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_get_fixed_cast_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_fixed_cast_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_fixed_cast_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
@@ -69728,16 +77727,16 @@ int HP_skill_get_fixed_cast(uint16 skill_id, uint16 skill_lv) {
int HP_skill_sit_count(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_sit_count_pre ) {
+ if (HPMHooks.count.HP_skill_sit_count_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_sit_count_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_sit_count_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_skill_sit_count_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -69747,9 +77746,9 @@ int HP_skill_sit_count(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.skill.sit_count(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_skill_sit_count_post ) {
+ if (HPMHooks.count.HP_skill_sit_count_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_sit_count_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_sit_count_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_skill_sit_count_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -69761,16 +77760,16 @@ int HP_skill_sit_count(struct block_list *bl, va_list ap) {
int HP_skill_sit_in(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_sit_in_pre ) {
+ if (HPMHooks.count.HP_skill_sit_in_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_sit_in_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_sit_in_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_skill_sit_in_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -69780,9 +77779,9 @@ int HP_skill_sit_in(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.skill.sit_in(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_skill_sit_in_post ) {
+ if (HPMHooks.count.HP_skill_sit_in_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_sit_in_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_sit_in_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_skill_sit_in_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -69794,16 +77793,16 @@ int HP_skill_sit_in(struct block_list *bl, va_list ap) {
int HP_skill_sit_out(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_sit_out_pre ) {
+ if (HPMHooks.count.HP_skill_sit_out_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_sit_out_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_sit_out_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_skill_sit_out_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -69813,9 +77812,9 @@ int HP_skill_sit_out(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.skill.sit_out(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_skill_sit_out_post ) {
+ if (HPMHooks.count.HP_skill_sit_out_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_sit_out_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_sit_out_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_skill_sit_out_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -69826,14 +77825,14 @@ int HP_skill_sit_out(struct block_list *bl, va_list ap) {
}
void HP_skill_unitsetmapcell(struct skill_unit *src, uint16 skill_id, uint16 skill_lv, cell_t cell, bool flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_unitsetmapcell_pre ) {
+ if (HPMHooks.count.HP_skill_unitsetmapcell_pre > 0) {
void (*preHookFunc) (struct skill_unit **src, uint16 *skill_id, uint16 *skill_lv, cell_t *cell, bool *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unitsetmapcell_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unitsetmapcell_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_unitsetmapcell_pre[hIndex].func;
preHookFunc(&src, &skill_id, &skill_lv, &cell, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -69841,9 +77840,9 @@ void HP_skill_unitsetmapcell(struct skill_unit *src, uint16 skill_id, uint16 ski
{
HPMHooks.source.skill.unitsetmapcell(src, skill_id, skill_lv, cell, flag);
}
- if( HPMHooks.count.HP_skill_unitsetmapcell_post ) {
+ if (HPMHooks.count.HP_skill_unitsetmapcell_post > 0) {
void (*postHookFunc) (struct skill_unit *src, uint16 skill_id, uint16 skill_lv, cell_t cell, bool flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unitsetmapcell_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unitsetmapcell_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_unitsetmapcell_post[hIndex].func;
postHookFunc(src, skill_id, skill_lv, cell, flag);
}
@@ -69853,14 +77852,14 @@ void HP_skill_unitsetmapcell(struct skill_unit *src, uint16 skill_id, uint16 ski
int HP_skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, int64 tick) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_unit_onplace_timer_pre ) {
+ if (HPMHooks.count.HP_skill_unit_onplace_timer_pre > 0) {
int (*preHookFunc) (struct skill_unit **src, struct block_list **bl, int64 *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_onplace_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_onplace_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_unit_onplace_timer_pre[hIndex].func;
retVal___ = preHookFunc(&src, &bl, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -69868,9 +77867,9 @@ int HP_skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, i
{
retVal___ = HPMHooks.source.skill.unit_onplace_timer(src, bl, tick);
}
- if( HPMHooks.count.HP_skill_unit_onplace_timer_post ) {
+ if (HPMHooks.count.HP_skill_unit_onplace_timer_post > 0) {
int (*postHookFunc) (int retVal___, struct skill_unit *src, struct block_list *bl, int64 tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_onplace_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_onplace_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_unit_onplace_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, bl, tick);
}
@@ -69879,14 +77878,14 @@ int HP_skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, i
}
void HP_skill_unit_onplace_timer_unknown(struct skill_unit *src, struct block_list *bl, int64 *tick) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_unit_onplace_timer_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_unit_onplace_timer_unknown_pre > 0) {
void (*preHookFunc) (struct skill_unit **src, struct block_list **bl, int64 **tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_onplace_timer_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_onplace_timer_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_unit_onplace_timer_unknown_pre[hIndex].func;
preHookFunc(&src, &bl, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -69894,9 +77893,9 @@ void HP_skill_unit_onplace_timer_unknown(struct skill_unit *src, struct block_li
{
HPMHooks.source.skill.unit_onplace_timer_unknown(src, bl, tick);
}
- if( HPMHooks.count.HP_skill_unit_onplace_timer_unknown_post ) {
+ if (HPMHooks.count.HP_skill_unit_onplace_timer_unknown_post > 0) {
void (*postHookFunc) (struct skill_unit *src, struct block_list *bl, int64 *tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_onplace_timer_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_onplace_timer_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_unit_onplace_timer_unknown_post[hIndex].func;
postHookFunc(src, bl, tick);
}
@@ -69906,16 +77905,16 @@ void HP_skill_unit_onplace_timer_unknown(struct skill_unit *src, struct block_li
int HP_skill_unit_effect(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_unit_effect_pre ) {
+ if (HPMHooks.count.HP_skill_unit_effect_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_effect_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_effect_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_skill_unit_effect_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -69925,9 +77924,9 @@ int HP_skill_unit_effect(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.skill.unit_effect(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_skill_unit_effect_post ) {
+ if (HPMHooks.count.HP_skill_unit_effect_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_effect_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_effect_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_skill_unit_effect_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -69939,16 +77938,16 @@ int HP_skill_unit_effect(struct block_list *bl, va_list ap) {
int HP_skill_unit_timer_sub_onplace(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_unit_timer_sub_onplace_pre ) {
+ if (HPMHooks.count.HP_skill_unit_timer_sub_onplace_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_timer_sub_onplace_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_timer_sub_onplace_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_skill_unit_timer_sub_onplace_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -69958,9 +77957,9 @@ int HP_skill_unit_timer_sub_onplace(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.skill.unit_timer_sub_onplace(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_skill_unit_timer_sub_onplace_post ) {
+ if (HPMHooks.count.HP_skill_unit_timer_sub_onplace_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_timer_sub_onplace_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_timer_sub_onplace_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_skill_unit_timer_sub_onplace_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -69972,16 +77971,16 @@ int HP_skill_unit_timer_sub_onplace(struct block_list *bl, va_list ap) {
int HP_skill_unit_move_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_unit_move_sub_pre ) {
+ if (HPMHooks.count.HP_skill_unit_move_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_move_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_move_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_skill_unit_move_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -69991,9 +77990,9 @@ int HP_skill_unit_move_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.skill.unit_move_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_skill_unit_move_sub_post ) {
+ if (HPMHooks.count.HP_skill_unit_move_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_move_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_move_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_skill_unit_move_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -70005,14 +78004,14 @@ int HP_skill_unit_move_sub(struct block_list *bl, va_list ap) {
int HP_skill_blockpc_end(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_blockpc_end_pre ) {
+ if (HPMHooks.count.HP_skill_blockpc_end_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_blockpc_end_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_blockpc_end_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_blockpc_end_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -70020,9 +78019,9 @@ int HP_skill_blockpc_end(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.skill.blockpc_end(tid, tick, id, data);
}
- if( HPMHooks.count.HP_skill_blockpc_end_post ) {
+ if (HPMHooks.count.HP_skill_blockpc_end_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_blockpc_end_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_blockpc_end_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_blockpc_end_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -70032,14 +78031,14 @@ int HP_skill_blockpc_end(int tid, int64 tick, int id, intptr_t data) {
int HP_skill_blockhomun_end(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_blockhomun_end_pre ) {
+ if (HPMHooks.count.HP_skill_blockhomun_end_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_blockhomun_end_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_blockhomun_end_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_blockhomun_end_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -70047,9 +78046,9 @@ int HP_skill_blockhomun_end(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.skill.blockhomun_end(tid, tick, id, data);
}
- if( HPMHooks.count.HP_skill_blockhomun_end_post ) {
+ if (HPMHooks.count.HP_skill_blockhomun_end_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_blockhomun_end_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_blockhomun_end_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_blockhomun_end_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -70059,14 +78058,14 @@ int HP_skill_blockhomun_end(int tid, int64 tick, int id, intptr_t data) {
int HP_skill_blockmerc_end(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_blockmerc_end_pre ) {
+ if (HPMHooks.count.HP_skill_blockmerc_end_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_blockmerc_end_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_blockmerc_end_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_blockmerc_end_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -70074,9 +78073,9 @@ int HP_skill_blockmerc_end(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.skill.blockmerc_end(tid, tick, id, data);
}
- if( HPMHooks.count.HP_skill_blockmerc_end_post ) {
+ if (HPMHooks.count.HP_skill_blockmerc_end_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_blockmerc_end_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_blockmerc_end_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_blockmerc_end_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -70086,14 +78085,14 @@ int HP_skill_blockmerc_end(int tid, int64 tick, int id, intptr_t data) {
int HP_skill_split_atoi(char *str, int *val) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_split_atoi_pre ) {
+ if (HPMHooks.count.HP_skill_split_atoi_pre > 0) {
int (*preHookFunc) (char **str, int **val);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_split_atoi_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_split_atoi_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_split_atoi_pre[hIndex].func;
retVal___ = preHookFunc(&str, &val);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -70101,9 +78100,9 @@ int HP_skill_split_atoi(char *str, int *val) {
{
retVal___ = HPMHooks.source.skill.split_atoi(str, val);
}
- if( HPMHooks.count.HP_skill_split_atoi_post ) {
+ if (HPMHooks.count.HP_skill_split_atoi_post > 0) {
int (*postHookFunc) (int retVal___, char *str, int *val);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_split_atoi_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_split_atoi_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_split_atoi_post[hIndex].func;
retVal___ = postHookFunc(retVal___, str, val);
}
@@ -70113,14 +78112,14 @@ int HP_skill_split_atoi(char *str, int *val) {
int HP_skill_unit_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_unit_timer_pre ) {
+ if (HPMHooks.count.HP_skill_unit_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_unit_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -70128,9 +78127,9 @@ int HP_skill_unit_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.skill.unit_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_skill_unit_timer_post ) {
+ if (HPMHooks.count.HP_skill_unit_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_unit_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -70140,16 +78139,16 @@ int HP_skill_unit_timer(int tid, int64 tick, int id, intptr_t data) {
int HP_skill_unit_timer_sub(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_unit_timer_sub_pre ) {
+ if (HPMHooks.count.HP_skill_unit_timer_sub_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_timer_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_timer_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_skill_unit_timer_sub_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -70159,9 +78158,9 @@ int HP_skill_unit_timer_sub(union DBKey key, struct DBData *data, va_list ap) {
retVal___ = HPMHooks.source.skill.unit_timer_sub(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_skill_unit_timer_sub_post ) {
+ if (HPMHooks.count.HP_skill_unit_timer_sub_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_timer_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_timer_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_skill_unit_timer_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -70172,14 +78171,14 @@ int HP_skill_unit_timer_sub(union DBKey key, struct DBData *data, va_list ap) {
}
void HP_skill_init_unit_layout(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_init_unit_layout_pre ) {
+ if (HPMHooks.count.HP_skill_init_unit_layout_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_init_unit_layout_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_init_unit_layout_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_init_unit_layout_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -70187,51 +78186,51 @@ void HP_skill_init_unit_layout(void) {
{
HPMHooks.source.skill.init_unit_layout();
}
- if( HPMHooks.count.HP_skill_init_unit_layout_post ) {
+ if (HPMHooks.count.HP_skill_init_unit_layout_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_init_unit_layout_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_init_unit_layout_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_init_unit_layout_post[hIndex].func;
postHookFunc();
}
}
return;
}
-void HP_skill_init_unit_layout_unknown(int skill_idx) {
+void HP_skill_init_unit_layout_unknown(int skill_idx, int pos) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_init_unit_layout_unknown_pre ) {
- void (*preHookFunc) (int *skill_idx);
+ if (HPMHooks.count.HP_skill_init_unit_layout_unknown_pre > 0) {
+ void (*preHookFunc) (int *skill_idx, int *pos);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_init_unit_layout_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_init_unit_layout_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_init_unit_layout_unknown_pre[hIndex].func;
- preHookFunc(&skill_idx);
+ preHookFunc(&skill_idx, &pos);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
}
{
- HPMHooks.source.skill.init_unit_layout_unknown(skill_idx);
+ HPMHooks.source.skill.init_unit_layout_unknown(skill_idx, pos);
}
- if( HPMHooks.count.HP_skill_init_unit_layout_unknown_post ) {
- void (*postHookFunc) (int skill_idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_init_unit_layout_unknown_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_init_unit_layout_unknown_post > 0) {
+ void (*postHookFunc) (int skill_idx, int pos);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_init_unit_layout_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_init_unit_layout_unknown_post[hIndex].func;
- postHookFunc(skill_idx);
+ postHookFunc(skill_idx, pos);
}
}
return;
}
void HP_skill_validate_hittype(struct config_setting_t *conf, struct s_skill_db *sk) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_validate_hittype_pre ) {
+ if (HPMHooks.count.HP_skill_validate_hittype_pre > 0) {
void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_hittype_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_hittype_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_validate_hittype_pre[hIndex].func;
preHookFunc(&conf, &sk);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -70239,9 +78238,9 @@ void HP_skill_validate_hittype(struct config_setting_t *conf, struct s_skill_db
{
HPMHooks.source.skill.validate_hittype(conf, sk);
}
- if( HPMHooks.count.HP_skill_validate_hittype_post ) {
+ if (HPMHooks.count.HP_skill_validate_hittype_post > 0) {
void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_hittype_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_hittype_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_validate_hittype_post[hIndex].func;
postHookFunc(conf, sk);
}
@@ -70250,14 +78249,14 @@ void HP_skill_validate_hittype(struct config_setting_t *conf, struct s_skill_db
}
void HP_skill_validate_skilltype(struct config_setting_t *conf, struct s_skill_db *sk) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_validate_skilltype_pre ) {
+ if (HPMHooks.count.HP_skill_validate_skilltype_pre > 0) {
void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_skilltype_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_skilltype_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_validate_skilltype_pre[hIndex].func;
preHookFunc(&conf, &sk);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -70265,9 +78264,9 @@ void HP_skill_validate_skilltype(struct config_setting_t *conf, struct s_skill_d
{
HPMHooks.source.skill.validate_skilltype(conf, sk);
}
- if( HPMHooks.count.HP_skill_validate_skilltype_post ) {
+ if (HPMHooks.count.HP_skill_validate_skilltype_post > 0) {
void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_skilltype_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_skilltype_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_validate_skilltype_post[hIndex].func;
postHookFunc(conf, sk);
}
@@ -70276,14 +78275,14 @@ void HP_skill_validate_skilltype(struct config_setting_t *conf, struct s_skill_d
}
void HP_skill_validate_attacktype(struct config_setting_t *conf, struct s_skill_db *sk) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_validate_attacktype_pre ) {
+ if (HPMHooks.count.HP_skill_validate_attacktype_pre > 0) {
void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_attacktype_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_attacktype_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_validate_attacktype_pre[hIndex].func;
preHookFunc(&conf, &sk);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -70291,9 +78290,9 @@ void HP_skill_validate_attacktype(struct config_setting_t *conf, struct s_skill_
{
HPMHooks.source.skill.validate_attacktype(conf, sk);
}
- if( HPMHooks.count.HP_skill_validate_attacktype_post ) {
+ if (HPMHooks.count.HP_skill_validate_attacktype_post > 0) {
void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_attacktype_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_attacktype_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_validate_attacktype_post[hIndex].func;
postHookFunc(conf, sk);
}
@@ -70302,14 +78301,14 @@ void HP_skill_validate_attacktype(struct config_setting_t *conf, struct s_skill_
}
void HP_skill_validate_element(struct config_setting_t *conf, struct s_skill_db *sk) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_validate_element_pre ) {
+ if (HPMHooks.count.HP_skill_validate_element_pre > 0) {
void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_element_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_element_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_validate_element_pre[hIndex].func;
preHookFunc(&conf, &sk);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -70317,9 +78316,9 @@ void HP_skill_validate_element(struct config_setting_t *conf, struct s_skill_db
{
HPMHooks.source.skill.validate_element(conf, sk);
}
- if( HPMHooks.count.HP_skill_validate_element_post ) {
+ if (HPMHooks.count.HP_skill_validate_element_post > 0) {
void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_element_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_element_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_validate_element_post[hIndex].func;
postHookFunc(conf, sk);
}
@@ -70328,14 +78327,14 @@ void HP_skill_validate_element(struct config_setting_t *conf, struct s_skill_db
}
void HP_skill_validate_skillinfo(struct config_setting_t *conf, struct s_skill_db *sk) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_validate_skillinfo_pre ) {
+ if (HPMHooks.count.HP_skill_validate_skillinfo_pre > 0) {
void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_skillinfo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_skillinfo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_validate_skillinfo_pre[hIndex].func;
preHookFunc(&conf, &sk);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -70343,9 +78342,9 @@ void HP_skill_validate_skillinfo(struct config_setting_t *conf, struct s_skill_d
{
HPMHooks.source.skill.validate_skillinfo(conf, sk);
}
- if( HPMHooks.count.HP_skill_validate_skillinfo_post ) {
+ if (HPMHooks.count.HP_skill_validate_skillinfo_post > 0) {
void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_skillinfo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_skillinfo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_validate_skillinfo_post[hIndex].func;
postHookFunc(conf, sk);
}
@@ -70354,14 +78353,14 @@ void HP_skill_validate_skillinfo(struct config_setting_t *conf, struct s_skill_d
}
void HP_skill_validate_damagetype(struct config_setting_t *conf, struct s_skill_db *sk) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_validate_damagetype_pre ) {
+ if (HPMHooks.count.HP_skill_validate_damagetype_pre > 0) {
void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_damagetype_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_damagetype_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_validate_damagetype_pre[hIndex].func;
preHookFunc(&conf, &sk);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -70369,9 +78368,9 @@ void HP_skill_validate_damagetype(struct config_setting_t *conf, struct s_skill_
{
HPMHooks.source.skill.validate_damagetype(conf, sk);
}
- if( HPMHooks.count.HP_skill_validate_damagetype_post ) {
+ if (HPMHooks.count.HP_skill_validate_damagetype_post > 0) {
void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_damagetype_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_damagetype_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_validate_damagetype_post[hIndex].func;
postHookFunc(conf, sk);
}
@@ -70380,14 +78379,14 @@ void HP_skill_validate_damagetype(struct config_setting_t *conf, struct s_skill_
}
void HP_skill_validate_castnodex(struct config_setting_t *conf, struct s_skill_db *sk, bool delay) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_validate_castnodex_pre ) {
+ if (HPMHooks.count.HP_skill_validate_castnodex_pre > 0) {
void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk, bool *delay);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_castnodex_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_castnodex_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_validate_castnodex_pre[hIndex].func;
preHookFunc(&conf, &sk, &delay);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -70395,9 +78394,9 @@ void HP_skill_validate_castnodex(struct config_setting_t *conf, struct s_skill_d
{
HPMHooks.source.skill.validate_castnodex(conf, sk, delay);
}
- if( HPMHooks.count.HP_skill_validate_castnodex_post ) {
+ if (HPMHooks.count.HP_skill_validate_castnodex_post > 0) {
void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk, bool delay);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_castnodex_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_castnodex_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_validate_castnodex_post[hIndex].func;
postHookFunc(conf, sk, delay);
}
@@ -70406,14 +78405,14 @@ void HP_skill_validate_castnodex(struct config_setting_t *conf, struct s_skill_d
}
void HP_skill_validate_weapontype(struct config_setting_t *conf, struct s_skill_db *sk) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_validate_weapontype_pre ) {
+ if (HPMHooks.count.HP_skill_validate_weapontype_pre > 0) {
void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_weapontype_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_weapontype_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_validate_weapontype_pre[hIndex].func;
preHookFunc(&conf, &sk);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -70421,9 +78420,9 @@ void HP_skill_validate_weapontype(struct config_setting_t *conf, struct s_skill_
{
HPMHooks.source.skill.validate_weapontype(conf, sk);
}
- if( HPMHooks.count.HP_skill_validate_weapontype_post ) {
+ if (HPMHooks.count.HP_skill_validate_weapontype_post > 0) {
void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_weapontype_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_weapontype_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_validate_weapontype_post[hIndex].func;
postHookFunc(conf, sk);
}
@@ -70432,14 +78431,14 @@ void HP_skill_validate_weapontype(struct config_setting_t *conf, struct s_skill_
}
void HP_skill_validate_ammotype(struct config_setting_t *conf, struct s_skill_db *sk) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_validate_ammotype_pre ) {
+ if (HPMHooks.count.HP_skill_validate_ammotype_pre > 0) {
void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_ammotype_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_ammotype_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_validate_ammotype_pre[hIndex].func;
preHookFunc(&conf, &sk);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -70447,9 +78446,9 @@ void HP_skill_validate_ammotype(struct config_setting_t *conf, struct s_skill_db
{
HPMHooks.source.skill.validate_ammotype(conf, sk);
}
- if( HPMHooks.count.HP_skill_validate_ammotype_post ) {
+ if (HPMHooks.count.HP_skill_validate_ammotype_post > 0) {
void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_ammotype_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_ammotype_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_validate_ammotype_post[hIndex].func;
postHookFunc(conf, sk);
}
@@ -70458,14 +78457,14 @@ void HP_skill_validate_ammotype(struct config_setting_t *conf, struct s_skill_db
}
void HP_skill_validate_state(struct config_setting_t *conf, struct s_skill_db *sk) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_validate_state_pre ) {
+ if (HPMHooks.count.HP_skill_validate_state_pre > 0) {
void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_state_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_state_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_validate_state_pre[hIndex].func;
preHookFunc(&conf, &sk);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -70473,9 +78472,9 @@ void HP_skill_validate_state(struct config_setting_t *conf, struct s_skill_db *s
{
HPMHooks.source.skill.validate_state(conf, sk);
}
- if( HPMHooks.count.HP_skill_validate_state_post ) {
+ if (HPMHooks.count.HP_skill_validate_state_post > 0) {
void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_state_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_state_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_validate_state_post[hIndex].func;
postHookFunc(conf, sk);
}
@@ -70484,14 +78483,14 @@ void HP_skill_validate_state(struct config_setting_t *conf, struct s_skill_db *s
}
void HP_skill_validate_item_requirements(struct config_setting_t *conf, struct s_skill_db *sk) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_validate_item_requirements_pre ) {
+ if (HPMHooks.count.HP_skill_validate_item_requirements_pre > 0) {
void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_item_requirements_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_item_requirements_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_validate_item_requirements_pre[hIndex].func;
preHookFunc(&conf, &sk);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -70499,9 +78498,9 @@ void HP_skill_validate_item_requirements(struct config_setting_t *conf, struct s
{
HPMHooks.source.skill.validate_item_requirements(conf, sk);
}
- if( HPMHooks.count.HP_skill_validate_item_requirements_post ) {
+ if (HPMHooks.count.HP_skill_validate_item_requirements_post > 0) {
void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_item_requirements_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_item_requirements_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_validate_item_requirements_post[hIndex].func;
postHookFunc(conf, sk);
}
@@ -70510,14 +78509,14 @@ void HP_skill_validate_item_requirements(struct config_setting_t *conf, struct s
}
void HP_skill_validate_unit_target(struct config_setting_t *conf, struct s_skill_db *sk) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_validate_unit_target_pre ) {
+ if (HPMHooks.count.HP_skill_validate_unit_target_pre > 0) {
void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_target_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_target_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_validate_unit_target_pre[hIndex].func;
preHookFunc(&conf, &sk);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -70525,9 +78524,9 @@ void HP_skill_validate_unit_target(struct config_setting_t *conf, struct s_skill
{
HPMHooks.source.skill.validate_unit_target(conf, sk);
}
- if( HPMHooks.count.HP_skill_validate_unit_target_post ) {
+ if (HPMHooks.count.HP_skill_validate_unit_target_post > 0) {
void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_target_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_target_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_validate_unit_target_post[hIndex].func;
postHookFunc(conf, sk);
}
@@ -70536,14 +78535,14 @@ void HP_skill_validate_unit_target(struct config_setting_t *conf, struct s_skill
}
void HP_skill_validate_unit_flag(struct config_setting_t *conf, struct s_skill_db *sk) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_validate_unit_flag_pre ) {
+ if (HPMHooks.count.HP_skill_validate_unit_flag_pre > 0) {
void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_flag_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_flag_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_validate_unit_flag_pre[hIndex].func;
preHookFunc(&conf, &sk);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -70551,9 +78550,9 @@ void HP_skill_validate_unit_flag(struct config_setting_t *conf, struct s_skill_d
{
HPMHooks.source.skill.validate_unit_flag(conf, sk);
}
- if( HPMHooks.count.HP_skill_validate_unit_flag_post ) {
+ if (HPMHooks.count.HP_skill_validate_unit_flag_post > 0) {
void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_flag_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_flag_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_validate_unit_flag_post[hIndex].func;
postHookFunc(conf, sk);
}
@@ -70562,14 +78561,14 @@ void HP_skill_validate_unit_flag(struct config_setting_t *conf, struct s_skill_d
}
void HP_skill_validate_additional_fields(struct config_setting_t *conf, struct s_skill_db *sk) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_validate_additional_fields_pre ) {
+ if (HPMHooks.count.HP_skill_validate_additional_fields_pre > 0) {
void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_additional_fields_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_additional_fields_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_validate_additional_fields_pre[hIndex].func;
preHookFunc(&conf, &sk);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -70577,9 +78576,9 @@ void HP_skill_validate_additional_fields(struct config_setting_t *conf, struct s
{
HPMHooks.source.skill.validate_additional_fields(conf, sk);
}
- if( HPMHooks.count.HP_skill_validate_additional_fields_post ) {
+ if (HPMHooks.count.HP_skill_validate_additional_fields_post > 0) {
void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_additional_fields_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_additional_fields_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_validate_additional_fields_post[hIndex].func;
postHookFunc(conf, sk);
}
@@ -70589,14 +78588,14 @@ void HP_skill_validate_additional_fields(struct config_setting_t *conf, struct s
bool HP_skill_validate_skilldb(struct s_skill_db *skt, const char *source) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_skill_validate_skilldb_pre ) {
+ if (HPMHooks.count.HP_skill_validate_skilldb_pre > 0) {
bool (*preHookFunc) (struct s_skill_db **skt, const char **source);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_skilldb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_skilldb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_validate_skilldb_pre[hIndex].func;
retVal___ = preHookFunc(&skt, &source);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -70604,9 +78603,9 @@ bool HP_skill_validate_skilldb(struct s_skill_db *skt, const char *source) {
{
retVal___ = HPMHooks.source.skill.validate_skilldb(skt, source);
}
- if( HPMHooks.count.HP_skill_validate_skilldb_post ) {
+ if (HPMHooks.count.HP_skill_validate_skilldb_post > 0) {
bool (*postHookFunc) (bool retVal___, struct s_skill_db *skt, const char *source);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_skilldb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_skilldb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_validate_skilldb_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skt, source);
}
@@ -70616,14 +78615,14 @@ bool HP_skill_validate_skilldb(struct s_skill_db *skt, const char *source) {
int HP_skill_validate_weapontype_sub(const char *type, bool on, struct s_skill_db *sk) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_validate_weapontype_sub_pre ) {
+ if (HPMHooks.count.HP_skill_validate_weapontype_sub_pre > 0) {
int (*preHookFunc) (const char **type, bool *on, struct s_skill_db **sk);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_weapontype_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_weapontype_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_validate_weapontype_sub_pre[hIndex].func;
retVal___ = preHookFunc(&type, &on, &sk);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -70631,9 +78630,9 @@ int HP_skill_validate_weapontype_sub(const char *type, bool on, struct s_skill_d
{
retVal___ = HPMHooks.source.skill.validate_weapontype_sub(type, on, sk);
}
- if( HPMHooks.count.HP_skill_validate_weapontype_sub_post ) {
+ if (HPMHooks.count.HP_skill_validate_weapontype_sub_post > 0) {
int (*postHookFunc) (int retVal___, const char *type, bool on, struct s_skill_db *sk);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_weapontype_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_weapontype_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_validate_weapontype_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, type, on, sk);
}
@@ -70643,14 +78642,14 @@ int HP_skill_validate_weapontype_sub(const char *type, bool on, struct s_skill_d
int HP_skill_validate_ammotype_sub(const char *type, bool on, struct s_skill_db *sk) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_validate_ammotype_sub_pre ) {
+ if (HPMHooks.count.HP_skill_validate_ammotype_sub_pre > 0) {
int (*preHookFunc) (const char **type, bool *on, struct s_skill_db **sk);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_ammotype_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_ammotype_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_validate_ammotype_sub_pre[hIndex].func;
retVal___ = preHookFunc(&type, &on, &sk);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -70658,9 +78657,9 @@ int HP_skill_validate_ammotype_sub(const char *type, bool on, struct s_skill_db
{
retVal___ = HPMHooks.source.skill.validate_ammotype_sub(type, on, sk);
}
- if( HPMHooks.count.HP_skill_validate_ammotype_sub_post ) {
+ if (HPMHooks.count.HP_skill_validate_ammotype_sub_post > 0) {
int (*postHookFunc) (int retVal___, const char *type, bool on, struct s_skill_db *sk);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_ammotype_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_ammotype_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_validate_ammotype_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, type, on, sk);
}
@@ -70670,14 +78669,14 @@ int HP_skill_validate_ammotype_sub(const char *type, bool on, struct s_skill_db
int HP_skill_validate_unit_flag_sub(const char *type, bool on, struct s_skill_db *sk) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_validate_unit_flag_sub_pre ) {
+ if (HPMHooks.count.HP_skill_validate_unit_flag_sub_pre > 0) {
int (*preHookFunc) (const char **type, bool *on, struct s_skill_db **sk);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_flag_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_flag_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_validate_unit_flag_sub_pre[hIndex].func;
retVal___ = preHookFunc(&type, &on, &sk);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -70685,9 +78684,9 @@ int HP_skill_validate_unit_flag_sub(const char *type, bool on, struct s_skill_db
{
retVal___ = HPMHooks.source.skill.validate_unit_flag_sub(type, on, sk);
}
- if( HPMHooks.count.HP_skill_validate_unit_flag_sub_post ) {
+ if (HPMHooks.count.HP_skill_validate_unit_flag_sub_post > 0) {
int (*postHookFunc) (int retVal___, const char *type, bool on, struct s_skill_db *sk);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_flag_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_flag_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_validate_unit_flag_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, type, on, sk);
}
@@ -70697,14 +78696,14 @@ int HP_skill_validate_unit_flag_sub(const char *type, bool on, struct s_skill_db
bool HP_skill_read_skilldb(const char *filename) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_skill_read_skilldb_pre ) {
+ if (HPMHooks.count.HP_skill_read_skilldb_pre > 0) {
bool (*preHookFunc) (const char **filename);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_read_skilldb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_read_skilldb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_read_skilldb_pre[hIndex].func;
retVal___ = preHookFunc(&filename);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -70712,9 +78711,9 @@ bool HP_skill_read_skilldb(const char *filename) {
{
retVal___ = HPMHooks.source.skill.read_skilldb(filename);
}
- if( HPMHooks.count.HP_skill_read_skilldb_post ) {
+ if (HPMHooks.count.HP_skill_read_skilldb_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *filename);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_read_skilldb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_read_skilldb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_read_skilldb_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename);
}
@@ -70723,14 +78722,14 @@ bool HP_skill_read_skilldb(const char *filename) {
}
void HP_skill_config_set_level(struct config_setting_t *conf, int *arr) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_config_set_level_pre ) {
+ if (HPMHooks.count.HP_skill_config_set_level_pre > 0) {
void (*preHookFunc) (struct config_setting_t **conf, int **arr);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_config_set_level_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_config_set_level_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_config_set_level_pre[hIndex].func;
preHookFunc(&conf, &arr);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -70738,9 +78737,9 @@ void HP_skill_config_set_level(struct config_setting_t *conf, int *arr) {
{
HPMHooks.source.skill.config_set_level(conf, arr);
}
- if( HPMHooks.count.HP_skill_config_set_level_post ) {
+ if (HPMHooks.count.HP_skill_config_set_level_post > 0) {
void (*postHookFunc) (struct config_setting_t *conf, int *arr);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_config_set_level_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_config_set_level_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_config_set_level_post[hIndex].func;
postHookFunc(conf, arr);
}
@@ -70749,14 +78748,14 @@ void HP_skill_config_set_level(struct config_setting_t *conf, int *arr) {
}
void HP_skill_level_set_value(int *arr, int value) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_level_set_value_pre ) {
+ if (HPMHooks.count.HP_skill_level_set_value_pre > 0) {
void (*preHookFunc) (int **arr, int *value);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_level_set_value_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_level_set_value_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_level_set_value_pre[hIndex].func;
preHookFunc(&arr, &value);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -70764,9 +78763,9 @@ void HP_skill_level_set_value(int *arr, int value) {
{
HPMHooks.source.skill.level_set_value(arr, value);
}
- if( HPMHooks.count.HP_skill_level_set_value_post ) {
+ if (HPMHooks.count.HP_skill_level_set_value_post > 0) {
void (*postHookFunc) (int *arr, int value);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_level_set_value_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_level_set_value_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_level_set_value_post[hIndex].func;
postHookFunc(arr, value);
}
@@ -70776,14 +78775,14 @@ void HP_skill_level_set_value(int *arr, int value) {
bool HP_skill_parse_row_producedb(char *split[], int columns, int current) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_skill_parse_row_producedb_pre ) {
+ if (HPMHooks.count.HP_skill_parse_row_producedb_pre > 0) {
bool (*preHookFunc) (char **split[], int *columns, int *current);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_parse_row_producedb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_parse_row_producedb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_parse_row_producedb_pre[hIndex].func;
retVal___ = preHookFunc(&split, &columns, &current);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -70791,9 +78790,9 @@ bool HP_skill_parse_row_producedb(char *split[], int columns, int current) {
{
retVal___ = HPMHooks.source.skill.parse_row_producedb(split, columns, current);
}
- if( HPMHooks.count.HP_skill_parse_row_producedb_post ) {
+ if (HPMHooks.count.HP_skill_parse_row_producedb_post > 0) {
bool (*postHookFunc) (bool retVal___, char *split[], int columns, int current);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_parse_row_producedb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_parse_row_producedb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_parse_row_producedb_post[hIndex].func;
retVal___ = postHookFunc(retVal___, split, columns, current);
}
@@ -70803,14 +78802,14 @@ bool HP_skill_parse_row_producedb(char *split[], int columns, int current) {
bool HP_skill_parse_row_createarrowdb(char *split[], int columns, int current) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_skill_parse_row_createarrowdb_pre ) {
+ if (HPMHooks.count.HP_skill_parse_row_createarrowdb_pre > 0) {
bool (*preHookFunc) (char **split[], int *columns, int *current);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_parse_row_createarrowdb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_parse_row_createarrowdb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_parse_row_createarrowdb_pre[hIndex].func;
retVal___ = preHookFunc(&split, &columns, &current);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -70818,9 +78817,9 @@ bool HP_skill_parse_row_createarrowdb(char *split[], int columns, int current) {
{
retVal___ = HPMHooks.source.skill.parse_row_createarrowdb(split, columns, current);
}
- if( HPMHooks.count.HP_skill_parse_row_createarrowdb_post ) {
+ if (HPMHooks.count.HP_skill_parse_row_createarrowdb_post > 0) {
bool (*postHookFunc) (bool retVal___, char *split[], int columns, int current);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_parse_row_createarrowdb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_parse_row_createarrowdb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_parse_row_createarrowdb_post[hIndex].func;
retVal___ = postHookFunc(retVal___, split, columns, current);
}
@@ -70830,14 +78829,14 @@ bool HP_skill_parse_row_createarrowdb(char *split[], int columns, int current) {
bool HP_skill_parse_row_abradb(char *split[], int columns, int current) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_skill_parse_row_abradb_pre ) {
+ if (HPMHooks.count.HP_skill_parse_row_abradb_pre > 0) {
bool (*preHookFunc) (char **split[], int *columns, int *current);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_parse_row_abradb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_parse_row_abradb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_parse_row_abradb_pre[hIndex].func;
retVal___ = preHookFunc(&split, &columns, &current);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -70845,9 +78844,9 @@ bool HP_skill_parse_row_abradb(char *split[], int columns, int current) {
{
retVal___ = HPMHooks.source.skill.parse_row_abradb(split, columns, current);
}
- if( HPMHooks.count.HP_skill_parse_row_abradb_post ) {
+ if (HPMHooks.count.HP_skill_parse_row_abradb_post > 0) {
bool (*postHookFunc) (bool retVal___, char *split[], int columns, int current);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_parse_row_abradb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_parse_row_abradb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_parse_row_abradb_post[hIndex].func;
retVal___ = postHookFunc(retVal___, split, columns, current);
}
@@ -70857,14 +78856,14 @@ bool HP_skill_parse_row_abradb(char *split[], int columns, int current) {
bool HP_skill_parse_row_spellbookdb(char *split[], int columns, int current) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_skill_parse_row_spellbookdb_pre ) {
+ if (HPMHooks.count.HP_skill_parse_row_spellbookdb_pre > 0) {
bool (*preHookFunc) (char **split[], int *columns, int *current);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_parse_row_spellbookdb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_parse_row_spellbookdb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_parse_row_spellbookdb_pre[hIndex].func;
retVal___ = preHookFunc(&split, &columns, &current);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -70872,9 +78871,9 @@ bool HP_skill_parse_row_spellbookdb(char *split[], int columns, int current) {
{
retVal___ = HPMHooks.source.skill.parse_row_spellbookdb(split, columns, current);
}
- if( HPMHooks.count.HP_skill_parse_row_spellbookdb_post ) {
+ if (HPMHooks.count.HP_skill_parse_row_spellbookdb_post > 0) {
bool (*postHookFunc) (bool retVal___, char *split[], int columns, int current);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_parse_row_spellbookdb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_parse_row_spellbookdb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_parse_row_spellbookdb_post[hIndex].func;
retVal___ = postHookFunc(retVal___, split, columns, current);
}
@@ -70884,14 +78883,14 @@ bool HP_skill_parse_row_spellbookdb(char *split[], int columns, int current) {
bool HP_skill_parse_row_magicmushroomdb(char *split[], int column, int current) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_skill_parse_row_magicmushroomdb_pre ) {
+ if (HPMHooks.count.HP_skill_parse_row_magicmushroomdb_pre > 0) {
bool (*preHookFunc) (char **split[], int *column, int *current);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_parse_row_magicmushroomdb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_parse_row_magicmushroomdb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_parse_row_magicmushroomdb_pre[hIndex].func;
retVal___ = preHookFunc(&split, &column, &current);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -70899,53 +78898,26 @@ bool HP_skill_parse_row_magicmushroomdb(char *split[], int column, int current)
{
retVal___ = HPMHooks.source.skill.parse_row_magicmushroomdb(split, column, current);
}
- if( HPMHooks.count.HP_skill_parse_row_magicmushroomdb_post ) {
+ if (HPMHooks.count.HP_skill_parse_row_magicmushroomdb_post > 0) {
bool (*postHookFunc) (bool retVal___, char *split[], int column, int current);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_parse_row_magicmushroomdb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_parse_row_magicmushroomdb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_parse_row_magicmushroomdb_post[hIndex].func;
retVal___ = postHookFunc(retVal___, split, column, current);
}
}
return retVal___;
}
-bool HP_skill_parse_row_reproducedb(char *split[], int column, int current) {
- int hIndex = 0;
- bool retVal___ = false;
- if( HPMHooks.count.HP_skill_parse_row_reproducedb_pre ) {
- bool (*preHookFunc) (char **split[], int *column, int *current);
- *HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_parse_row_reproducedb_pre; hIndex++ ) {
- preHookFunc = HPMHooks.list.HP_skill_parse_row_reproducedb_pre[hIndex].func;
- retVal___ = preHookFunc(&split, &column, &current);
- }
- if( *HPMforce_return ) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.skill.parse_row_reproducedb(split, column, current);
- }
- if( HPMHooks.count.HP_skill_parse_row_reproducedb_post ) {
- bool (*postHookFunc) (bool retVal___, char *split[], int column, int current);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_parse_row_reproducedb_post; hIndex++ ) {
- postHookFunc = HPMHooks.list.HP_skill_parse_row_reproducedb_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, split, column, current);
- }
- }
- return retVal___;
-}
bool HP_skill_parse_row_improvisedb(char *split[], int columns, int current) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_skill_parse_row_improvisedb_pre ) {
+ if (HPMHooks.count.HP_skill_parse_row_improvisedb_pre > 0) {
bool (*preHookFunc) (char **split[], int *columns, int *current);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_parse_row_improvisedb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_parse_row_improvisedb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_parse_row_improvisedb_pre[hIndex].func;
retVal___ = preHookFunc(&split, &columns, &current);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -70953,9 +78925,9 @@ bool HP_skill_parse_row_improvisedb(char *split[], int columns, int current) {
{
retVal___ = HPMHooks.source.skill.parse_row_improvisedb(split, columns, current);
}
- if( HPMHooks.count.HP_skill_parse_row_improvisedb_post ) {
+ if (HPMHooks.count.HP_skill_parse_row_improvisedb_post > 0) {
bool (*postHookFunc) (bool retVal___, char *split[], int columns, int current);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_parse_row_improvisedb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_parse_row_improvisedb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_parse_row_improvisedb_post[hIndex].func;
retVal___ = postHookFunc(retVal___, split, columns, current);
}
@@ -70965,14 +78937,14 @@ bool HP_skill_parse_row_improvisedb(char *split[], int columns, int current) {
bool HP_skill_parse_row_changematerialdb(char *split[], int columns, int current) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_skill_parse_row_changematerialdb_pre ) {
+ if (HPMHooks.count.HP_skill_parse_row_changematerialdb_pre > 0) {
bool (*preHookFunc) (char **split[], int *columns, int *current);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_parse_row_changematerialdb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_parse_row_changematerialdb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_parse_row_changematerialdb_pre[hIndex].func;
retVal___ = preHookFunc(&split, &columns, &current);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -70980,9 +78952,9 @@ bool HP_skill_parse_row_changematerialdb(char *split[], int columns, int current
{
retVal___ = HPMHooks.source.skill.parse_row_changematerialdb(split, columns, current);
}
- if( HPMHooks.count.HP_skill_parse_row_changematerialdb_post ) {
+ if (HPMHooks.count.HP_skill_parse_row_changematerialdb_post > 0) {
bool (*postHookFunc) (bool retVal___, char *split[], int columns, int current);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_parse_row_changematerialdb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_parse_row_changematerialdb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_parse_row_changematerialdb_post[hIndex].func;
retVal___ = postHookFunc(retVal___, split, columns, current);
}
@@ -70991,14 +78963,14 @@ bool HP_skill_parse_row_changematerialdb(char *split[], int columns, int current
}
void HP_skill_usave_add(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_usave_add_pre ) {
+ if (HPMHooks.count.HP_skill_usave_add_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, uint16 *skill_id, uint16 *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_usave_add_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_usave_add_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_usave_add_pre[hIndex].func;
preHookFunc(&sd, &skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -71006,9 +78978,9 @@ void HP_skill_usave_add(struct map_session_data *sd, uint16 skill_id, uint16 ski
{
HPMHooks.source.skill.usave_add(sd, skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_usave_add_post ) {
+ if (HPMHooks.count.HP_skill_usave_add_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_usave_add_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_usave_add_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_usave_add_post[hIndex].func;
postHookFunc(sd, skill_id, skill_lv);
}
@@ -71017,14 +78989,14 @@ void HP_skill_usave_add(struct map_session_data *sd, uint16 skill_id, uint16 ski
}
void HP_skill_usave_trigger(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_usave_trigger_pre ) {
+ if (HPMHooks.count.HP_skill_usave_trigger_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_usave_trigger_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_usave_trigger_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_usave_trigger_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -71032,9 +79004,9 @@ void HP_skill_usave_trigger(struct map_session_data *sd) {
{
HPMHooks.source.skill.usave_trigger(sd);
}
- if( HPMHooks.count.HP_skill_usave_trigger_post ) {
+ if (HPMHooks.count.HP_skill_usave_trigger_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_usave_trigger_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_usave_trigger_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_usave_trigger_post[hIndex].func;
postHookFunc(sd);
}
@@ -71043,14 +79015,14 @@ void HP_skill_usave_trigger(struct map_session_data *sd) {
}
void HP_skill_cooldown_load(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_cooldown_load_pre ) {
+ if (HPMHooks.count.HP_skill_cooldown_load_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_cooldown_load_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_cooldown_load_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_cooldown_load_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -71058,9 +79030,9 @@ void HP_skill_cooldown_load(struct map_session_data *sd) {
{
HPMHooks.source.skill.cooldown_load(sd);
}
- if( HPMHooks.count.HP_skill_cooldown_load_post ) {
+ if (HPMHooks.count.HP_skill_cooldown_load_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_cooldown_load_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_cooldown_load_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_cooldown_load_post[hIndex].func;
postHookFunc(sd);
}
@@ -71070,14 +79042,14 @@ void HP_skill_cooldown_load(struct map_session_data *sd) {
int HP_skill_spellbook(struct map_session_data *sd, int nameid) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_spellbook_pre ) {
+ if (HPMHooks.count.HP_skill_spellbook_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *nameid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_spellbook_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_spellbook_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_spellbook_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &nameid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -71085,9 +79057,9 @@ int HP_skill_spellbook(struct map_session_data *sd, int nameid) {
{
retVal___ = HPMHooks.source.skill.spellbook(sd, nameid);
}
- if( HPMHooks.count.HP_skill_spellbook_post ) {
+ if (HPMHooks.count.HP_skill_spellbook_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int nameid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_spellbook_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_spellbook_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_spellbook_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, nameid);
}
@@ -71097,14 +79069,14 @@ int HP_skill_spellbook(struct map_session_data *sd, int nameid) {
int HP_skill_block_check(struct block_list *bl, enum sc_type type, uint16 skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_block_check_pre ) {
+ if (HPMHooks.count.HP_skill_block_check_pre > 0) {
int (*preHookFunc) (struct block_list **bl, enum sc_type *type, uint16 *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_block_check_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_block_check_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_block_check_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &type, &skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -71112,9 +79084,9 @@ int HP_skill_block_check(struct block_list *bl, enum sc_type type, uint16 skill_
{
retVal___ = HPMHooks.source.skill.block_check(bl, type, skill_id);
}
- if( HPMHooks.count.HP_skill_block_check_post ) {
+ if (HPMHooks.count.HP_skill_block_check_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, enum sc_type type, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_block_check_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_block_check_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_block_check_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, type, skill_id);
}
@@ -71124,16 +79096,16 @@ int HP_skill_block_check(struct block_list *bl, enum sc_type type, uint16 skill_
int HP_skill_detonator(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_detonator_pre ) {
+ if (HPMHooks.count.HP_skill_detonator_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_detonator_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_detonator_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_skill_detonator_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -71143,9 +79115,9 @@ int HP_skill_detonator(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.skill.detonator(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_skill_detonator_post ) {
+ if (HPMHooks.count.HP_skill_detonator_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_detonator_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_detonator_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_skill_detonator_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -71157,14 +79129,14 @@ int HP_skill_detonator(struct block_list *bl, va_list ap) {
bool HP_skill_check_camouflage(struct block_list *bl, struct status_change_entry *sce) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_skill_check_camouflage_pre ) {
+ if (HPMHooks.count.HP_skill_check_camouflage_pre > 0) {
bool (*preHookFunc) (struct block_list **bl, struct status_change_entry **sce);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_camouflage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_camouflage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_check_camouflage_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sce);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -71172,9 +79144,9 @@ bool HP_skill_check_camouflage(struct block_list *bl, struct status_change_entry
{
retVal___ = HPMHooks.source.skill.check_camouflage(bl, sce);
}
- if( HPMHooks.count.HP_skill_check_camouflage_post ) {
+ if (HPMHooks.count.HP_skill_check_camouflage_post > 0) {
bool (*postHookFunc) (bool retVal___, struct block_list *bl, struct status_change_entry *sce);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_camouflage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_camouflage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_check_camouflage_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sce);
}
@@ -71184,14 +79156,14 @@ bool HP_skill_check_camouflage(struct block_list *bl, struct status_change_entry
int HP_skill_magicdecoy(struct map_session_data *sd, int nameid) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_magicdecoy_pre ) {
+ if (HPMHooks.count.HP_skill_magicdecoy_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *nameid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_magicdecoy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_magicdecoy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_magicdecoy_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &nameid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -71199,9 +79171,9 @@ int HP_skill_magicdecoy(struct map_session_data *sd, int nameid) {
{
retVal___ = HPMHooks.source.skill.magicdecoy(sd, nameid);
}
- if( HPMHooks.count.HP_skill_magicdecoy_post ) {
+ if (HPMHooks.count.HP_skill_magicdecoy_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int nameid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_magicdecoy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_magicdecoy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_magicdecoy_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, nameid);
}
@@ -71211,14 +79183,14 @@ int HP_skill_magicdecoy(struct map_session_data *sd, int nameid) {
int HP_skill_poisoningweapon(struct map_session_data *sd, int nameid) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_poisoningweapon_pre ) {
+ if (HPMHooks.count.HP_skill_poisoningweapon_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *nameid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_poisoningweapon_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_poisoningweapon_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_poisoningweapon_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &nameid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -71226,9 +79198,9 @@ int HP_skill_poisoningweapon(struct map_session_data *sd, int nameid) {
{
retVal___ = HPMHooks.source.skill.poisoningweapon(sd, nameid);
}
- if( HPMHooks.count.HP_skill_poisoningweapon_post ) {
+ if (HPMHooks.count.HP_skill_poisoningweapon_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int nameid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_poisoningweapon_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_poisoningweapon_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_poisoningweapon_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, nameid);
}
@@ -71238,14 +79210,14 @@ int HP_skill_poisoningweapon(struct map_session_data *sd, int nameid) {
int HP_skill_select_menu(struct map_session_data *sd, uint16 skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_select_menu_pre ) {
+ if (HPMHooks.count.HP_skill_select_menu_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, uint16 *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_select_menu_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_select_menu_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_select_menu_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -71253,9 +79225,9 @@ int HP_skill_select_menu(struct map_session_data *sd, uint16 skill_id) {
{
retVal___ = HPMHooks.source.skill.select_menu(sd, skill_id);
}
- if( HPMHooks.count.HP_skill_select_menu_post ) {
+ if (HPMHooks.count.HP_skill_select_menu_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, uint16 skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_select_menu_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_select_menu_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_select_menu_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, skill_id);
}
@@ -71265,14 +79237,14 @@ int HP_skill_select_menu(struct map_session_data *sd, uint16 skill_id) {
int HP_skill_elementalanalysis(struct map_session_data *sd, uint16 skill_lv, const struct itemlist *item_list) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_elementalanalysis_pre ) {
+ if (HPMHooks.count.HP_skill_elementalanalysis_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, uint16 *skill_lv, const struct itemlist **item_list);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_elementalanalysis_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_elementalanalysis_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_elementalanalysis_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &skill_lv, &item_list);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -71280,9 +79252,9 @@ int HP_skill_elementalanalysis(struct map_session_data *sd, uint16 skill_lv, con
{
retVal___ = HPMHooks.source.skill.elementalanalysis(sd, skill_lv, item_list);
}
- if( HPMHooks.count.HP_skill_elementalanalysis_post ) {
+ if (HPMHooks.count.HP_skill_elementalanalysis_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, uint16 skill_lv, const struct itemlist *item_list);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_elementalanalysis_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_elementalanalysis_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_elementalanalysis_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, skill_lv, item_list);
}
@@ -71292,14 +79264,14 @@ int HP_skill_elementalanalysis(struct map_session_data *sd, uint16 skill_lv, con
int HP_skill_changematerial(struct map_session_data *sd, const struct itemlist *item_list) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_changematerial_pre ) {
+ if (HPMHooks.count.HP_skill_changematerial_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, const struct itemlist **item_list);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_changematerial_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_changematerial_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_changematerial_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &item_list);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -71307,9 +79279,9 @@ int HP_skill_changematerial(struct map_session_data *sd, const struct itemlist *
{
retVal___ = HPMHooks.source.skill.changematerial(sd, item_list);
}
- if( HPMHooks.count.HP_skill_changematerial_post ) {
+ if (HPMHooks.count.HP_skill_changematerial_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, const struct itemlist *item_list);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_changematerial_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_changematerial_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_changematerial_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, item_list);
}
@@ -71319,14 +79291,14 @@ int HP_skill_changematerial(struct map_session_data *sd, const struct itemlist *
int HP_skill_get_elemental_type(uint16 skill_id, uint16 skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_elemental_type_pre ) {
+ if (HPMHooks.count.HP_skill_get_elemental_type_pre > 0) {
int (*preHookFunc) (uint16 *skill_id, uint16 *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_elemental_type_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_elemental_type_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_elemental_type_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -71334,9 +79306,9 @@ int HP_skill_get_elemental_type(uint16 skill_id, uint16 skill_lv) {
{
retVal___ = HPMHooks.source.skill.get_elemental_type(skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_get_elemental_type_post ) {
+ if (HPMHooks.count.HP_skill_get_elemental_type_post > 0) {
int (*postHookFunc) (int retVal___, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_elemental_type_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_elemental_type_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_elemental_type_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
@@ -71345,14 +79317,14 @@ int HP_skill_get_elemental_type(uint16 skill_id, uint16 skill_lv) {
}
void HP_skill_cooldown_save(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_cooldown_save_pre ) {
+ if (HPMHooks.count.HP_skill_cooldown_save_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_cooldown_save_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_cooldown_save_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_cooldown_save_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -71360,9 +79332,9 @@ void HP_skill_cooldown_save(struct map_session_data *sd) {
{
HPMHooks.source.skill.cooldown_save(sd);
}
- if( HPMHooks.count.HP_skill_cooldown_save_post ) {
+ if (HPMHooks.count.HP_skill_cooldown_save_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_cooldown_save_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_cooldown_save_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_cooldown_save_post[hIndex].func;
postHookFunc(sd);
}
@@ -71372,14 +79344,14 @@ void HP_skill_cooldown_save(struct map_session_data *sd) {
int HP_skill_get_new_group_id(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_get_new_group_id_pre ) {
+ if (HPMHooks.count.HP_skill_get_new_group_id_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_new_group_id_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_new_group_id_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_new_group_id_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -71387,9 +79359,9 @@ int HP_skill_get_new_group_id(void) {
{
retVal___ = HPMHooks.source.skill.get_new_group_id();
}
- if( HPMHooks.count.HP_skill_get_new_group_id_post ) {
+ if (HPMHooks.count.HP_skill_get_new_group_id_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_new_group_id_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_new_group_id_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_new_group_id_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -71399,14 +79371,14 @@ int HP_skill_get_new_group_id(void) {
bool HP_skill_check_shadowform(struct block_list *bl, int64 damage, int hit) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_skill_check_shadowform_pre ) {
+ if (HPMHooks.count.HP_skill_check_shadowform_pre > 0) {
bool (*preHookFunc) (struct block_list **bl, int64 *damage, int *hit);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_shadowform_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_shadowform_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_check_shadowform_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &damage, &hit);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -71414,9 +79386,9 @@ bool HP_skill_check_shadowform(struct block_list *bl, int64 damage, int hit) {
{
retVal___ = HPMHooks.source.skill.check_shadowform(bl, damage, hit);
}
- if( HPMHooks.count.HP_skill_check_shadowform_post ) {
+ if (HPMHooks.count.HP_skill_check_shadowform_post > 0) {
bool (*postHookFunc) (bool retVal___, struct block_list *bl, int64 damage, int hit);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_shadowform_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_shadowform_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_check_shadowform_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, damage, hit);
}
@@ -71426,14 +79398,14 @@ bool HP_skill_check_shadowform(struct block_list *bl, int64 damage, int hit) {
bool HP_skill_castend_damage_id_unknown(struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, struct status_data *tstatus, struct status_change *sc) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_skill_castend_damage_id_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_castend_damage_id_unknown_pre > 0) {
bool (*preHookFunc) (struct block_list **src, struct block_list **bl, uint16 **skill_id, uint16 **skill_lv, int64 **tick, int **flag, struct status_data **tstatus, struct status_change **sc);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_damage_id_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_damage_id_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_castend_damage_id_unknown_pre[hIndex].func;
retVal___ = preHookFunc(&src, &bl, &skill_id, &skill_lv, &tick, &flag, &tstatus, &sc);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -71441,9 +79413,9 @@ bool HP_skill_castend_damage_id_unknown(struct block_list *src, struct block_lis
{
retVal___ = HPMHooks.source.skill.castend_damage_id_unknown(src, bl, skill_id, skill_lv, tick, flag, tstatus, sc);
}
- if( HPMHooks.count.HP_skill_castend_damage_id_unknown_post ) {
+ if (HPMHooks.count.HP_skill_castend_damage_id_unknown_post > 0) {
bool (*postHookFunc) (bool retVal___, struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, struct status_data *tstatus, struct status_change *sc);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_damage_id_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_damage_id_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_castend_damage_id_unknown_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, bl, skill_id, skill_lv, tick, flag, tstatus, sc);
}
@@ -71452,14 +79424,14 @@ bool HP_skill_castend_damage_id_unknown(struct block_list *src, struct block_lis
}
void HP_skill_additional_effect_unknown(struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int *attack_type, int *dmg_lv, int64 *tick) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_additional_effect_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_additional_effect_unknown_pre > 0) {
void (*preHookFunc) (struct block_list **src, struct block_list **bl, uint16 **skill_id, uint16 **skill_lv, int **attack_type, int **dmg_lv, int64 **tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_additional_effect_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_additional_effect_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_additional_effect_unknown_pre[hIndex].func;
preHookFunc(&src, &bl, &skill_id, &skill_lv, &attack_type, &dmg_lv, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -71467,9 +79439,9 @@ void HP_skill_additional_effect_unknown(struct block_list *src, struct block_lis
{
HPMHooks.source.skill.additional_effect_unknown(src, bl, skill_id, skill_lv, attack_type, dmg_lv, tick);
}
- if( HPMHooks.count.HP_skill_additional_effect_unknown_post ) {
+ if (HPMHooks.count.HP_skill_additional_effect_unknown_post > 0) {
void (*postHookFunc) (struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int *attack_type, int *dmg_lv, int64 *tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_additional_effect_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_additional_effect_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_additional_effect_unknown_post[hIndex].func;
postHookFunc(src, bl, skill_id, skill_lv, attack_type, dmg_lv, tick);
}
@@ -71478,14 +79450,14 @@ void HP_skill_additional_effect_unknown(struct block_list *src, struct block_lis
}
void HP_skill_counter_additional_effect_unknown(struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int *attack_type, int64 *tick) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_counter_additional_effect_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_counter_additional_effect_unknown_pre > 0) {
void (*preHookFunc) (struct block_list **src, struct block_list **bl, uint16 **skill_id, uint16 **skill_lv, int **attack_type, int64 **tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_counter_additional_effect_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_counter_additional_effect_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_counter_additional_effect_unknown_pre[hIndex].func;
preHookFunc(&src, &bl, &skill_id, &skill_lv, &attack_type, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -71493,9 +79465,9 @@ void HP_skill_counter_additional_effect_unknown(struct block_list *src, struct b
{
HPMHooks.source.skill.counter_additional_effect_unknown(src, bl, skill_id, skill_lv, attack_type, tick);
}
- if( HPMHooks.count.HP_skill_counter_additional_effect_unknown_post ) {
+ if (HPMHooks.count.HP_skill_counter_additional_effect_unknown_post > 0) {
void (*postHookFunc) (struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int *attack_type, int64 *tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_counter_additional_effect_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_counter_additional_effect_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_counter_additional_effect_unknown_post[hIndex].func;
postHookFunc(src, bl, skill_id, skill_lv, attack_type, tick);
}
@@ -71504,14 +79476,14 @@ void HP_skill_counter_additional_effect_unknown(struct block_list *src, struct b
}
void HP_skill_attack_combo1_unknown(int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, struct status_change_entry *sce, int *combo) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_attack_combo1_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_attack_combo1_unknown_pre > 0) {
void (*preHookFunc) (int **attack_type, struct block_list **src, struct block_list **dsrc, struct block_list **bl, uint16 **skill_id, uint16 **skill_lv, int64 **tick, int **flag, struct status_change_entry **sce, int **combo);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_combo1_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_combo1_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_attack_combo1_unknown_pre[hIndex].func;
preHookFunc(&attack_type, &src, &dsrc, &bl, &skill_id, &skill_lv, &tick, &flag, &sce, &combo);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -71519,9 +79491,9 @@ void HP_skill_attack_combo1_unknown(int *attack_type, struct block_list *src, st
{
HPMHooks.source.skill.attack_combo1_unknown(attack_type, src, dsrc, bl, skill_id, skill_lv, tick, flag, sce, combo);
}
- if( HPMHooks.count.HP_skill_attack_combo1_unknown_post ) {
+ if (HPMHooks.count.HP_skill_attack_combo1_unknown_post > 0) {
void (*postHookFunc) (int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, struct status_change_entry *sce, int *combo);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_combo1_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_combo1_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_attack_combo1_unknown_post[hIndex].func;
postHookFunc(attack_type, src, dsrc, bl, skill_id, skill_lv, tick, flag, sce, combo);
}
@@ -71530,14 +79502,14 @@ void HP_skill_attack_combo1_unknown(int *attack_type, struct block_list *src, st
}
void HP_skill_attack_combo2_unknown(int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *combo) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_attack_combo2_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_attack_combo2_unknown_pre > 0) {
void (*preHookFunc) (int **attack_type, struct block_list **src, struct block_list **dsrc, struct block_list **bl, uint16 **skill_id, uint16 **skill_lv, int64 **tick, int **flag, int **combo);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_combo2_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_combo2_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_attack_combo2_unknown_pre[hIndex].func;
preHookFunc(&attack_type, &src, &dsrc, &bl, &skill_id, &skill_lv, &tick, &flag, &combo);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -71545,9 +79517,9 @@ void HP_skill_attack_combo2_unknown(int *attack_type, struct block_list *src, st
{
HPMHooks.source.skill.attack_combo2_unknown(attack_type, src, dsrc, bl, skill_id, skill_lv, tick, flag, combo);
}
- if( HPMHooks.count.HP_skill_attack_combo2_unknown_post ) {
+ if (HPMHooks.count.HP_skill_attack_combo2_unknown_post > 0) {
void (*postHookFunc) (int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *combo);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_combo2_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_combo2_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_attack_combo2_unknown_post[hIndex].func;
postHookFunc(attack_type, src, dsrc, bl, skill_id, skill_lv, tick, flag, combo);
}
@@ -71556,14 +79528,14 @@ void HP_skill_attack_combo2_unknown(int *attack_type, struct block_list *src, st
}
void HP_skill_attack_display_unknown(int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *type, struct Damage *dmg, int64 *damage) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_attack_display_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_attack_display_unknown_pre > 0) {
void (*preHookFunc) (int **attack_type, struct block_list **src, struct block_list **dsrc, struct block_list **bl, uint16 **skill_id, uint16 **skill_lv, int64 **tick, int **flag, int **type, struct Damage **dmg, int64 **damage);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_display_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_display_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_attack_display_unknown_pre[hIndex].func;
preHookFunc(&attack_type, &src, &dsrc, &bl, &skill_id, &skill_lv, &tick, &flag, &type, &dmg, &damage);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -71571,9 +79543,9 @@ void HP_skill_attack_display_unknown(int *attack_type, struct block_list *src, s
{
HPMHooks.source.skill.attack_display_unknown(attack_type, src, dsrc, bl, skill_id, skill_lv, tick, flag, type, dmg, damage);
}
- if( HPMHooks.count.HP_skill_attack_display_unknown_post ) {
+ if (HPMHooks.count.HP_skill_attack_display_unknown_post > 0) {
void (*postHookFunc) (int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *type, struct Damage *dmg, int64 *damage);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_display_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_display_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_attack_display_unknown_post[hIndex].func;
postHookFunc(attack_type, src, dsrc, bl, skill_id, skill_lv, tick, flag, type, dmg, damage);
}
@@ -71583,14 +79555,14 @@ void HP_skill_attack_display_unknown(int *attack_type, struct block_list *src, s
int HP_skill_attack_copy_unknown(int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_attack_copy_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_attack_copy_unknown_pre > 0) {
int (*preHookFunc) (int **attack_type, struct block_list **src, struct block_list **dsrc, struct block_list **bl, uint16 **skill_id, uint16 **skill_lv, int64 **tick, int **flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_copy_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_copy_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_attack_copy_unknown_pre[hIndex].func;
retVal___ = preHookFunc(&attack_type, &src, &dsrc, &bl, &skill_id, &skill_lv, &tick, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -71598,9 +79570,9 @@ int HP_skill_attack_copy_unknown(int *attack_type, struct block_list *src, struc
{
retVal___ = HPMHooks.source.skill.attack_copy_unknown(attack_type, src, dsrc, bl, skill_id, skill_lv, tick, flag);
}
- if( HPMHooks.count.HP_skill_attack_copy_unknown_post ) {
+ if (HPMHooks.count.HP_skill_attack_copy_unknown_post > 0) {
int (*postHookFunc) (int retVal___, int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_copy_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_copy_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_attack_copy_unknown_post[hIndex].func;
retVal___ = postHookFunc(retVal___, attack_type, src, dsrc, bl, skill_id, skill_lv, tick, flag);
}
@@ -71610,14 +79582,14 @@ int HP_skill_attack_copy_unknown(int *attack_type, struct block_list *src, struc
int HP_skill_attack_dir_unknown(int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_attack_dir_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_attack_dir_unknown_pre > 0) {
int (*preHookFunc) (int **attack_type, struct block_list **src, struct block_list **dsrc, struct block_list **bl, uint16 **skill_id, uint16 **skill_lv, int64 **tick, int **flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_dir_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_dir_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_attack_dir_unknown_pre[hIndex].func;
retVal___ = preHookFunc(&attack_type, &src, &dsrc, &bl, &skill_id, &skill_lv, &tick, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -71625,9 +79597,9 @@ int HP_skill_attack_dir_unknown(int *attack_type, struct block_list *src, struct
{
retVal___ = HPMHooks.source.skill.attack_dir_unknown(attack_type, src, dsrc, bl, skill_id, skill_lv, tick, flag);
}
- if( HPMHooks.count.HP_skill_attack_dir_unknown_post ) {
+ if (HPMHooks.count.HP_skill_attack_dir_unknown_post > 0) {
int (*postHookFunc) (int retVal___, int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_dir_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_dir_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_attack_dir_unknown_post[hIndex].func;
retVal___ = postHookFunc(retVal___, attack_type, src, dsrc, bl, skill_id, skill_lv, tick, flag);
}
@@ -71636,14 +79608,14 @@ int HP_skill_attack_dir_unknown(int *attack_type, struct block_list *src, struct
}
void HP_skill_attack_blow_unknown(int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *type, struct Damage *dmg, int64 *damage, int8 *dir) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_attack_blow_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_attack_blow_unknown_pre > 0) {
void (*preHookFunc) (int **attack_type, struct block_list **src, struct block_list **dsrc, struct block_list **bl, uint16 **skill_id, uint16 **skill_lv, int64 **tick, int **flag, int **type, struct Damage **dmg, int64 **damage, int8 **dir);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_blow_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_blow_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_attack_blow_unknown_pre[hIndex].func;
preHookFunc(&attack_type, &src, &dsrc, &bl, &skill_id, &skill_lv, &tick, &flag, &type, &dmg, &damage, &dir);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -71651,9 +79623,9 @@ void HP_skill_attack_blow_unknown(int *attack_type, struct block_list *src, stru
{
HPMHooks.source.skill.attack_blow_unknown(attack_type, src, dsrc, bl, skill_id, skill_lv, tick, flag, type, dmg, damage, dir);
}
- if( HPMHooks.count.HP_skill_attack_blow_unknown_post ) {
+ if (HPMHooks.count.HP_skill_attack_blow_unknown_post > 0) {
void (*postHookFunc) (int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *type, struct Damage *dmg, int64 *damage, int8 *dir);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_blow_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_blow_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_attack_blow_unknown_post[hIndex].func;
postHookFunc(attack_type, src, dsrc, bl, skill_id, skill_lv, tick, flag, type, dmg, damage, dir);
}
@@ -71662,14 +79634,14 @@ void HP_skill_attack_blow_unknown(int *attack_type, struct block_list *src, stru
}
void HP_skill_attack_post_unknown(int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_attack_post_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_attack_post_unknown_pre > 0) {
void (*preHookFunc) (int **attack_type, struct block_list **src, struct block_list **dsrc, struct block_list **bl, uint16 **skill_id, uint16 **skill_lv, int64 **tick, int **flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_post_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_post_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_attack_post_unknown_pre[hIndex].func;
preHookFunc(&attack_type, &src, &dsrc, &bl, &skill_id, &skill_lv, &tick, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -71677,9 +79649,9 @@ void HP_skill_attack_post_unknown(int *attack_type, struct block_list *src, stru
{
HPMHooks.source.skill.attack_post_unknown(attack_type, src, dsrc, bl, skill_id, skill_lv, tick, flag);
}
- if( HPMHooks.count.HP_skill_attack_post_unknown_post ) {
+ if (HPMHooks.count.HP_skill_attack_post_unknown_post > 0) {
void (*postHookFunc) (int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_post_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_post_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_attack_post_unknown_post[hIndex].func;
postHookFunc(attack_type, src, dsrc, bl, skill_id, skill_lv, tick, flag);
}
@@ -71689,14 +79661,14 @@ void HP_skill_attack_post_unknown(int *attack_type, struct block_list *src, stru
bool HP_skill_timerskill_dead_unknown(struct block_list *src, struct unit_data *ud, struct skill_timerskill *skl) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_skill_timerskill_dead_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_timerskill_dead_unknown_pre > 0) {
bool (*preHookFunc) (struct block_list **src, struct unit_data **ud, struct skill_timerskill **skl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_timerskill_dead_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_timerskill_dead_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_timerskill_dead_unknown_pre[hIndex].func;
retVal___ = preHookFunc(&src, &ud, &skl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -71704,9 +79676,9 @@ bool HP_skill_timerskill_dead_unknown(struct block_list *src, struct unit_data *
{
retVal___ = HPMHooks.source.skill.timerskill_dead_unknown(src, ud, skl);
}
- if( HPMHooks.count.HP_skill_timerskill_dead_unknown_post ) {
+ if (HPMHooks.count.HP_skill_timerskill_dead_unknown_post > 0) {
bool (*postHookFunc) (bool retVal___, struct block_list *src, struct unit_data *ud, struct skill_timerskill *skl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_timerskill_dead_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_timerskill_dead_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_timerskill_dead_unknown_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, ud, skl);
}
@@ -71715,14 +79687,14 @@ bool HP_skill_timerskill_dead_unknown(struct block_list *src, struct unit_data *
}
void HP_skill_timerskill_target_unknown(int tid, int64 tick, struct block_list *src, struct block_list *target, struct unit_data *ud, struct skill_timerskill *skl) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_timerskill_target_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_timerskill_target_unknown_pre > 0) {
void (*preHookFunc) (int *tid, int64 *tick, struct block_list **src, struct block_list **target, struct unit_data **ud, struct skill_timerskill **skl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_timerskill_target_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_timerskill_target_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_timerskill_target_unknown_pre[hIndex].func;
preHookFunc(&tid, &tick, &src, &target, &ud, &skl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -71730,9 +79702,9 @@ void HP_skill_timerskill_target_unknown(int tid, int64 tick, struct block_list *
{
HPMHooks.source.skill.timerskill_target_unknown(tid, tick, src, target, ud, skl);
}
- if( HPMHooks.count.HP_skill_timerskill_target_unknown_post ) {
+ if (HPMHooks.count.HP_skill_timerskill_target_unknown_post > 0) {
void (*postHookFunc) (int tid, int64 tick, struct block_list *src, struct block_list *target, struct unit_data *ud, struct skill_timerskill *skl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_timerskill_target_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_timerskill_target_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_timerskill_target_unknown_post[hIndex].func;
postHookFunc(tid, tick, src, target, ud, skl);
}
@@ -71741,14 +79713,14 @@ void HP_skill_timerskill_target_unknown(int tid, int64 tick, struct block_list *
}
void HP_skill_timerskill_notarget_unknown(int tid, int64 tick, struct block_list *src, struct unit_data *ud, struct skill_timerskill *skl) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_timerskill_notarget_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_timerskill_notarget_unknown_pre > 0) {
void (*preHookFunc) (int *tid, int64 *tick, struct block_list **src, struct unit_data **ud, struct skill_timerskill **skl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_timerskill_notarget_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_timerskill_notarget_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_timerskill_notarget_unknown_pre[hIndex].func;
preHookFunc(&tid, &tick, &src, &ud, &skl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -71756,9 +79728,9 @@ void HP_skill_timerskill_notarget_unknown(int tid, int64 tick, struct block_list
{
HPMHooks.source.skill.timerskill_notarget_unknown(tid, tick, src, ud, skl);
}
- if( HPMHooks.count.HP_skill_timerskill_notarget_unknown_post ) {
+ if (HPMHooks.count.HP_skill_timerskill_notarget_unknown_post > 0) {
void (*postHookFunc) (int tid, int64 tick, struct block_list *src, struct unit_data *ud, struct skill_timerskill *skl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_timerskill_notarget_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_timerskill_notarget_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_timerskill_notarget_unknown_post[hIndex].func;
postHookFunc(tid, tick, src, ud, skl);
}
@@ -71768,14 +79740,14 @@ void HP_skill_timerskill_notarget_unknown(int tid, int64 tick, struct block_list
bool HP_skill_cleartimerskill_exception(int skill_id) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_skill_cleartimerskill_exception_pre ) {
+ if (HPMHooks.count.HP_skill_cleartimerskill_exception_pre > 0) {
bool (*preHookFunc) (int *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_cleartimerskill_exception_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_cleartimerskill_exception_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_cleartimerskill_exception_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -71783,9 +79755,9 @@ bool HP_skill_cleartimerskill_exception(int skill_id) {
{
retVal___ = HPMHooks.source.skill.cleartimerskill_exception(skill_id);
}
- if( HPMHooks.count.HP_skill_cleartimerskill_exception_post ) {
+ if (HPMHooks.count.HP_skill_cleartimerskill_exception_post > 0) {
bool (*postHookFunc) (bool retVal___, int skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_cleartimerskill_exception_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_cleartimerskill_exception_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_cleartimerskill_exception_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id);
}
@@ -71795,14 +79767,14 @@ bool HP_skill_cleartimerskill_exception(int skill_id) {
bool HP_skill_castend_id_unknown(struct unit_data *ud, struct block_list *src, struct block_list *target) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_skill_castend_id_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_castend_id_unknown_pre > 0) {
bool (*preHookFunc) (struct unit_data **ud, struct block_list **src, struct block_list **target);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_id_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_id_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_castend_id_unknown_pre[hIndex].func;
retVal___ = preHookFunc(&ud, &src, &target);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -71810,9 +79782,9 @@ bool HP_skill_castend_id_unknown(struct unit_data *ud, struct block_list *src, s
{
retVal___ = HPMHooks.source.skill.castend_id_unknown(ud, src, target);
}
- if( HPMHooks.count.HP_skill_castend_id_unknown_post ) {
+ if (HPMHooks.count.HP_skill_castend_id_unknown_post > 0) {
bool (*postHookFunc) (bool retVal___, struct unit_data *ud, struct block_list *src, struct block_list *target);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_id_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_id_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_castend_id_unknown_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ud, src, target);
}
@@ -71822,14 +79794,14 @@ bool HP_skill_castend_id_unknown(struct unit_data *ud, struct block_list *src, s
bool HP_skill_castend_nodamage_id_dead_unknown(struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_skill_castend_nodamage_id_dead_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_castend_nodamage_id_dead_unknown_pre > 0) {
bool (*preHookFunc) (struct block_list **src, struct block_list **bl, uint16 **skill_id, uint16 **skill_lv, int64 **tick, int **flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_nodamage_id_dead_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_nodamage_id_dead_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_castend_nodamage_id_dead_unknown_pre[hIndex].func;
retVal___ = preHookFunc(&src, &bl, &skill_id, &skill_lv, &tick, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -71837,9 +79809,9 @@ bool HP_skill_castend_nodamage_id_dead_unknown(struct block_list *src, struct bl
{
retVal___ = HPMHooks.source.skill.castend_nodamage_id_dead_unknown(src, bl, skill_id, skill_lv, tick, flag);
}
- if( HPMHooks.count.HP_skill_castend_nodamage_id_dead_unknown_post ) {
+ if (HPMHooks.count.HP_skill_castend_nodamage_id_dead_unknown_post > 0) {
bool (*postHookFunc) (bool retVal___, struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_nodamage_id_dead_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_nodamage_id_dead_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_castend_nodamage_id_dead_unknown_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, bl, skill_id, skill_lv, tick, flag);
}
@@ -71849,14 +79821,14 @@ bool HP_skill_castend_nodamage_id_dead_unknown(struct block_list *src, struct bl
bool HP_skill_castend_nodamage_id_undead_unknown(struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_skill_castend_nodamage_id_undead_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_castend_nodamage_id_undead_unknown_pre > 0) {
bool (*preHookFunc) (struct block_list **src, struct block_list **bl, uint16 **skill_id, uint16 **skill_lv, int64 **tick, int **flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_nodamage_id_undead_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_nodamage_id_undead_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_castend_nodamage_id_undead_unknown_pre[hIndex].func;
retVal___ = preHookFunc(&src, &bl, &skill_id, &skill_lv, &tick, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -71864,9 +79836,9 @@ bool HP_skill_castend_nodamage_id_undead_unknown(struct block_list *src, struct
{
retVal___ = HPMHooks.source.skill.castend_nodamage_id_undead_unknown(src, bl, skill_id, skill_lv, tick, flag);
}
- if( HPMHooks.count.HP_skill_castend_nodamage_id_undead_unknown_post ) {
+ if (HPMHooks.count.HP_skill_castend_nodamage_id_undead_unknown_post > 0) {
bool (*postHookFunc) (bool retVal___, struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_nodamage_id_undead_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_nodamage_id_undead_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_castend_nodamage_id_undead_unknown_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, bl, skill_id, skill_lv, tick, flag);
}
@@ -71876,14 +79848,14 @@ bool HP_skill_castend_nodamage_id_undead_unknown(struct block_list *src, struct
bool HP_skill_castend_nodamage_id_mado_unknown(struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_skill_castend_nodamage_id_mado_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_castend_nodamage_id_mado_unknown_pre > 0) {
bool (*preHookFunc) (struct block_list **src, struct block_list **bl, uint16 **skill_id, uint16 **skill_lv, int64 **tick, int **flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_nodamage_id_mado_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_nodamage_id_mado_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_castend_nodamage_id_mado_unknown_pre[hIndex].func;
retVal___ = preHookFunc(&src, &bl, &skill_id, &skill_lv, &tick, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -71891,9 +79863,9 @@ bool HP_skill_castend_nodamage_id_mado_unknown(struct block_list *src, struct bl
{
retVal___ = HPMHooks.source.skill.castend_nodamage_id_mado_unknown(src, bl, skill_id, skill_lv, tick, flag);
}
- if( HPMHooks.count.HP_skill_castend_nodamage_id_mado_unknown_post ) {
+ if (HPMHooks.count.HP_skill_castend_nodamage_id_mado_unknown_post > 0) {
bool (*postHookFunc) (bool retVal___, struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_nodamage_id_mado_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_nodamage_id_mado_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_castend_nodamage_id_mado_unknown_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, bl, skill_id, skill_lv, tick, flag);
}
@@ -71903,14 +79875,14 @@ bool HP_skill_castend_nodamage_id_mado_unknown(struct block_list *src, struct bl
bool HP_skill_castend_nodamage_id_unknown(struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_skill_castend_nodamage_id_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_castend_nodamage_id_unknown_pre > 0) {
bool (*preHookFunc) (struct block_list **src, struct block_list **bl, uint16 **skill_id, uint16 **skill_lv, int64 **tick, int **flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_nodamage_id_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_nodamage_id_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_castend_nodamage_id_unknown_pre[hIndex].func;
retVal___ = preHookFunc(&src, &bl, &skill_id, &skill_lv, &tick, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -71918,9 +79890,9 @@ bool HP_skill_castend_nodamage_id_unknown(struct block_list *src, struct block_l
{
retVal___ = HPMHooks.source.skill.castend_nodamage_id_unknown(src, bl, skill_id, skill_lv, tick, flag);
}
- if( HPMHooks.count.HP_skill_castend_nodamage_id_unknown_post ) {
+ if (HPMHooks.count.HP_skill_castend_nodamage_id_unknown_post > 0) {
bool (*postHookFunc) (bool retVal___, struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_nodamage_id_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_nodamage_id_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_castend_nodamage_id_unknown_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, bl, skill_id, skill_lv, tick, flag);
}
@@ -71929,14 +79901,14 @@ bool HP_skill_castend_nodamage_id_unknown(struct block_list *src, struct block_l
}
void HP_skill_castend_pos2_effect_unknown(struct block_list *src, int *x, int *y, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_castend_pos2_effect_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_castend_pos2_effect_unknown_pre > 0) {
void (*preHookFunc) (struct block_list **src, int **x, int **y, uint16 **skill_id, uint16 **skill_lv, int64 **tick, int **flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_pos2_effect_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_pos2_effect_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_castend_pos2_effect_unknown_pre[hIndex].func;
preHookFunc(&src, &x, &y, &skill_id, &skill_lv, &tick, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -71944,9 +79916,9 @@ void HP_skill_castend_pos2_effect_unknown(struct block_list *src, int *x, int *y
{
HPMHooks.source.skill.castend_pos2_effect_unknown(src, x, y, skill_id, skill_lv, tick, flag);
}
- if( HPMHooks.count.HP_skill_castend_pos2_effect_unknown_post ) {
+ if (HPMHooks.count.HP_skill_castend_pos2_effect_unknown_post > 0) {
void (*postHookFunc) (struct block_list *src, int *x, int *y, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_pos2_effect_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_pos2_effect_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_castend_pos2_effect_unknown_post[hIndex].func;
postHookFunc(src, x, y, skill_id, skill_lv, tick, flag);
}
@@ -71956,14 +79928,14 @@ void HP_skill_castend_pos2_effect_unknown(struct block_list *src, int *x, int *y
bool HP_skill_castend_pos2_unknown(struct block_list *src, int *x, int *y, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_skill_castend_pos2_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_castend_pos2_unknown_pre > 0) {
bool (*preHookFunc) (struct block_list **src, int **x, int **y, uint16 **skill_id, uint16 **skill_lv, int64 **tick, int **flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_pos2_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_pos2_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_castend_pos2_unknown_pre[hIndex].func;
retVal___ = preHookFunc(&src, &x, &y, &skill_id, &skill_lv, &tick, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -71971,9 +79943,9 @@ bool HP_skill_castend_pos2_unknown(struct block_list *src, int *x, int *y, uint1
{
retVal___ = HPMHooks.source.skill.castend_pos2_unknown(src, x, y, skill_id, skill_lv, tick, flag);
}
- if( HPMHooks.count.HP_skill_castend_pos2_unknown_post ) {
+ if (HPMHooks.count.HP_skill_castend_pos2_unknown_post > 0) {
bool (*postHookFunc) (bool retVal___, struct block_list *src, int *x, int *y, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_pos2_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_castend_pos2_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_castend_pos2_unknown_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, x, y, skill_id, skill_lv, tick, flag);
}
@@ -71982,14 +79954,14 @@ bool HP_skill_castend_pos2_unknown(struct block_list *src, int *x, int *y, uint1
}
void HP_skill_unitsetting1_unknown(struct block_list *src, uint16 *skill_id, uint16 *skill_lv, int16 *x, int16 *y, int *flag, int *val1, int *val2, int *val3) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_unitsetting1_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_unitsetting1_unknown_pre > 0) {
void (*preHookFunc) (struct block_list **src, uint16 **skill_id, uint16 **skill_lv, int16 **x, int16 **y, int **flag, int **val1, int **val2, int **val3);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unitsetting1_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unitsetting1_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_unitsetting1_unknown_pre[hIndex].func;
preHookFunc(&src, &skill_id, &skill_lv, &x, &y, &flag, &val1, &val2, &val3);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -71997,9 +79969,9 @@ void HP_skill_unitsetting1_unknown(struct block_list *src, uint16 *skill_id, uin
{
HPMHooks.source.skill.unitsetting1_unknown(src, skill_id, skill_lv, x, y, flag, val1, val2, val3);
}
- if( HPMHooks.count.HP_skill_unitsetting1_unknown_post ) {
+ if (HPMHooks.count.HP_skill_unitsetting1_unknown_post > 0) {
void (*postHookFunc) (struct block_list *src, uint16 *skill_id, uint16 *skill_lv, int16 *x, int16 *y, int *flag, int *val1, int *val2, int *val3);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unitsetting1_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unitsetting1_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_unitsetting1_unknown_post[hIndex].func;
postHookFunc(src, skill_id, skill_lv, x, y, flag, val1, val2, val3);
}
@@ -72008,14 +79980,14 @@ void HP_skill_unitsetting1_unknown(struct block_list *src, uint16 *skill_id, uin
}
void HP_skill_unitsetting2_unknown(struct block_list *src, uint16 *skill_id, uint16 *skill_lv, int16 *x, int16 *y, int *flag, int *unit_flag, int *val1, int *val2, int *val3, struct skill_unit_group *group) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_unitsetting2_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_unitsetting2_unknown_pre > 0) {
void (*preHookFunc) (struct block_list **src, uint16 **skill_id, uint16 **skill_lv, int16 **x, int16 **y, int **flag, int **unit_flag, int **val1, int **val2, int **val3, struct skill_unit_group **group);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unitsetting2_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unitsetting2_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_unitsetting2_unknown_pre[hIndex].func;
preHookFunc(&src, &skill_id, &skill_lv, &x, &y, &flag, &unit_flag, &val1, &val2, &val3, &group);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -72023,9 +79995,9 @@ void HP_skill_unitsetting2_unknown(struct block_list *src, uint16 *skill_id, uin
{
HPMHooks.source.skill.unitsetting2_unknown(src, skill_id, skill_lv, x, y, flag, unit_flag, val1, val2, val3, group);
}
- if( HPMHooks.count.HP_skill_unitsetting2_unknown_post ) {
+ if (HPMHooks.count.HP_skill_unitsetting2_unknown_post > 0) {
void (*postHookFunc) (struct block_list *src, uint16 *skill_id, uint16 *skill_lv, int16 *x, int16 *y, int *flag, int *unit_flag, int *val1, int *val2, int *val3, struct skill_unit_group *group);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unitsetting2_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unitsetting2_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_unitsetting2_unknown_post[hIndex].func;
postHookFunc(src, skill_id, skill_lv, x, y, flag, unit_flag, val1, val2, val3, group);
}
@@ -72034,14 +80006,14 @@ void HP_skill_unitsetting2_unknown(struct block_list *src, uint16 *skill_id, uin
}
void HP_skill_unit_onplace_unknown(struct skill_unit *src, struct block_list *bl, int64 *tick) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_unit_onplace_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_unit_onplace_unknown_pre > 0) {
void (*preHookFunc) (struct skill_unit **src, struct block_list **bl, int64 **tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_onplace_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_onplace_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_unit_onplace_unknown_pre[hIndex].func;
preHookFunc(&src, &bl, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -72049,9 +80021,9 @@ void HP_skill_unit_onplace_unknown(struct skill_unit *src, struct block_list *bl
{
HPMHooks.source.skill.unit_onplace_unknown(src, bl, tick);
}
- if( HPMHooks.count.HP_skill_unit_onplace_unknown_post ) {
+ if (HPMHooks.count.HP_skill_unit_onplace_unknown_post > 0) {
void (*postHookFunc) (struct skill_unit *src, struct block_list *bl, int64 *tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_onplace_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_unit_onplace_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_unit_onplace_unknown_post[hIndex].func;
postHookFunc(src, bl, tick);
}
@@ -72061,14 +80033,14 @@ void HP_skill_unit_onplace_unknown(struct skill_unit *src, struct block_list *bl
int HP_skill_check_condition_castbegin_off_unknown(struct status_change *sc, uint16 *skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_check_condition_castbegin_off_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_check_condition_castbegin_off_unknown_pre > 0) {
int (*preHookFunc) (struct status_change **sc, uint16 **skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_castbegin_off_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_castbegin_off_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_check_condition_castbegin_off_unknown_pre[hIndex].func;
retVal___ = preHookFunc(&sc, &skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -72076,9 +80048,9 @@ int HP_skill_check_condition_castbegin_off_unknown(struct status_change *sc, uin
{
retVal___ = HPMHooks.source.skill.check_condition_castbegin_off_unknown(sc, skill_id);
}
- if( HPMHooks.count.HP_skill_check_condition_castbegin_off_unknown_post ) {
+ if (HPMHooks.count.HP_skill_check_condition_castbegin_off_unknown_post > 0) {
int (*postHookFunc) (int retVal___, struct status_change *sc, uint16 *skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_castbegin_off_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_castbegin_off_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_check_condition_castbegin_off_unknown_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sc, skill_id);
}
@@ -72088,14 +80060,14 @@ int HP_skill_check_condition_castbegin_off_unknown(struct status_change *sc, uin
int HP_skill_check_condition_castbegin_mount_unknown(struct status_change *sc, uint16 *skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_check_condition_castbegin_mount_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_check_condition_castbegin_mount_unknown_pre > 0) {
int (*preHookFunc) (struct status_change **sc, uint16 **skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_castbegin_mount_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_castbegin_mount_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_check_condition_castbegin_mount_unknown_pre[hIndex].func;
retVal___ = preHookFunc(&sc, &skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -72103,9 +80075,9 @@ int HP_skill_check_condition_castbegin_mount_unknown(struct status_change *sc, u
{
retVal___ = HPMHooks.source.skill.check_condition_castbegin_mount_unknown(sc, skill_id);
}
- if( HPMHooks.count.HP_skill_check_condition_castbegin_mount_unknown_post ) {
+ if (HPMHooks.count.HP_skill_check_condition_castbegin_mount_unknown_post > 0) {
int (*postHookFunc) (int retVal___, struct status_change *sc, uint16 *skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_castbegin_mount_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_castbegin_mount_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_check_condition_castbegin_mount_unknown_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sc, skill_id);
}
@@ -72115,14 +80087,14 @@ int HP_skill_check_condition_castbegin_mount_unknown(struct status_change *sc, u
int HP_skill_check_condition_castbegin_madogear_unknown(struct status_change *sc, uint16 *skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_check_condition_castbegin_madogear_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_check_condition_castbegin_madogear_unknown_pre > 0) {
int (*preHookFunc) (struct status_change **sc, uint16 **skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_castbegin_madogear_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_castbegin_madogear_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_check_condition_castbegin_madogear_unknown_pre[hIndex].func;
retVal___ = preHookFunc(&sc, &skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -72130,9 +80102,9 @@ int HP_skill_check_condition_castbegin_madogear_unknown(struct status_change *sc
{
retVal___ = HPMHooks.source.skill.check_condition_castbegin_madogear_unknown(sc, skill_id);
}
- if( HPMHooks.count.HP_skill_check_condition_castbegin_madogear_unknown_post ) {
+ if (HPMHooks.count.HP_skill_check_condition_castbegin_madogear_unknown_post > 0) {
int (*postHookFunc) (int retVal___, struct status_change *sc, uint16 *skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_castbegin_madogear_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_castbegin_madogear_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_check_condition_castbegin_madogear_unknown_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sc, skill_id);
}
@@ -72142,14 +80114,14 @@ int HP_skill_check_condition_castbegin_madogear_unknown(struct status_change *sc
int HP_skill_check_condition_castbegin_unknown(struct status_change *sc, uint16 *skill_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_check_condition_castbegin_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_check_condition_castbegin_unknown_pre > 0) {
int (*preHookFunc) (struct status_change **sc, uint16 **skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_castbegin_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_castbegin_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_check_condition_castbegin_unknown_pre[hIndex].func;
retVal___ = preHookFunc(&sc, &skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -72157,52 +80129,53 @@ int HP_skill_check_condition_castbegin_unknown(struct status_change *sc, uint16
{
retVal___ = HPMHooks.source.skill.check_condition_castbegin_unknown(sc, skill_id);
}
- if( HPMHooks.count.HP_skill_check_condition_castbegin_unknown_post ) {
+ if (HPMHooks.count.HP_skill_check_condition_castbegin_unknown_post > 0) {
int (*postHookFunc) (int retVal___, struct status_change *sc, uint16 *skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_castbegin_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_castbegin_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_check_condition_castbegin_unknown_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sc, skill_id);
}
}
return retVal___;
}
-void HP_skill_check_condition_castend_unknown(struct map_session_data *sd, uint16 *skill_id, uint16 *skill_lv) {
+bool HP_skill_check_condition_castend_unknown(struct map_session_data *sd, uint16 *skill_id, uint16 *skill_lv) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_check_condition_castend_unknown_pre ) {
- void (*preHookFunc) (struct map_session_data **sd, uint16 **skill_id, uint16 **skill_lv);
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_skill_check_condition_castend_unknown_pre > 0) {
+ bool (*preHookFunc) (struct map_session_data **sd, uint16 **skill_id, uint16 **skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_castend_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_castend_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_check_condition_castend_unknown_pre[hIndex].func;
- preHookFunc(&sd, &skill_id, &skill_lv);
+ retVal___ = preHookFunc(&sd, &skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
- return;
+ return retVal___;
}
}
{
- HPMHooks.source.skill.check_condition_castend_unknown(sd, skill_id, skill_lv);
+ retVal___ = HPMHooks.source.skill.check_condition_castend_unknown(sd, skill_id, skill_lv);
}
- if( HPMHooks.count.HP_skill_check_condition_castend_unknown_post ) {
- void (*postHookFunc) (struct map_session_data *sd, uint16 *skill_id, uint16 *skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_castend_unknown_post; hIndex++ ) {
+ if (HPMHooks.count.HP_skill_check_condition_castend_unknown_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, uint16 *skill_id, uint16 *skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_castend_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_check_condition_castend_unknown_post[hIndex].func;
- postHookFunc(sd, skill_id, skill_lv);
+ retVal___ = postHookFunc(retVal___, sd, skill_id, skill_lv);
}
}
- return;
+ return retVal___;
}
bool HP_skill_get_requirement_off_unknown(struct status_change *sc, uint16 *skill_id) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_skill_get_requirement_off_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_get_requirement_off_unknown_pre > 0) {
bool (*preHookFunc) (struct status_change **sc, uint16 **skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_requirement_off_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_requirement_off_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_requirement_off_unknown_pre[hIndex].func;
retVal___ = preHookFunc(&sc, &skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -72210,9 +80183,9 @@ bool HP_skill_get_requirement_off_unknown(struct status_change *sc, uint16 *skil
{
retVal___ = HPMHooks.source.skill.get_requirement_off_unknown(sc, skill_id);
}
- if( HPMHooks.count.HP_skill_get_requirement_off_unknown_post ) {
+ if (HPMHooks.count.HP_skill_get_requirement_off_unknown_post > 0) {
bool (*postHookFunc) (bool retVal___, struct status_change *sc, uint16 *skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_requirement_off_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_requirement_off_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_requirement_off_unknown_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sc, skill_id);
}
@@ -72222,14 +80195,14 @@ bool HP_skill_get_requirement_off_unknown(struct status_change *sc, uint16 *skil
bool HP_skill_get_requirement_item_unknown(struct status_change *sc, struct map_session_data *sd, uint16 *skill_id, uint16 *skill_lv, uint16 *idx, int *i) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_skill_get_requirement_item_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_get_requirement_item_unknown_pre > 0) {
bool (*preHookFunc) (struct status_change **sc, struct map_session_data **sd, uint16 **skill_id, uint16 **skill_lv, uint16 **idx, int **i);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_requirement_item_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_requirement_item_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_requirement_item_unknown_pre[hIndex].func;
retVal___ = preHookFunc(&sc, &sd, &skill_id, &skill_lv, &idx, &i);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -72237,9 +80210,9 @@ bool HP_skill_get_requirement_item_unknown(struct status_change *sc, struct map_
{
retVal___ = HPMHooks.source.skill.get_requirement_item_unknown(sc, sd, skill_id, skill_lv, idx, i);
}
- if( HPMHooks.count.HP_skill_get_requirement_item_unknown_post ) {
+ if (HPMHooks.count.HP_skill_get_requirement_item_unknown_post > 0) {
bool (*postHookFunc) (bool retVal___, struct status_change *sc, struct map_session_data *sd, uint16 *skill_id, uint16 *skill_lv, uint16 *idx, int *i);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_requirement_item_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_requirement_item_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_requirement_item_unknown_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sc, sd, skill_id, skill_lv, idx, i);
}
@@ -72248,14 +80221,14 @@ bool HP_skill_get_requirement_item_unknown(struct status_change *sc, struct map_
}
void HP_skill_get_requirement_unknown(struct status_change *sc, struct map_session_data *sd, uint16 *skill_id, uint16 *skill_lv, struct skill_condition *req) {
int hIndex = 0;
- if( HPMHooks.count.HP_skill_get_requirement_unknown_pre ) {
+ if (HPMHooks.count.HP_skill_get_requirement_unknown_pre > 0) {
void (*preHookFunc) (struct status_change **sc, struct map_session_data **sd, uint16 **skill_id, uint16 **skill_lv, struct skill_condition **req);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_requirement_unknown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_requirement_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_requirement_unknown_pre[hIndex].func;
preHookFunc(&sc, &sd, &skill_id, &skill_lv, &req);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -72263,9 +80236,9 @@ void HP_skill_get_requirement_unknown(struct status_change *sc, struct map_sessi
{
HPMHooks.source.skill.get_requirement_unknown(sc, sd, skill_id, skill_lv, req);
}
- if( HPMHooks.count.HP_skill_get_requirement_unknown_post ) {
+ if (HPMHooks.count.HP_skill_get_requirement_unknown_post > 0) {
void (*postHookFunc) (struct status_change *sc, struct map_session_data *sd, uint16 *skill_id, uint16 *skill_lv, struct skill_condition *req);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_requirement_unknown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_requirement_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_requirement_unknown_post[hIndex].func;
postHookFunc(sc, sd, skill_id, skill_lv, req);
}
@@ -72275,14 +80248,14 @@ void HP_skill_get_requirement_unknown(struct status_change *sc, struct map_sessi
int HP_skill_splash_target(struct block_list *bl) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_splash_target_pre ) {
+ if (HPMHooks.count.HP_skill_splash_target_pre > 0) {
int (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_splash_target_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_splash_target_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_splash_target_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -72290,9 +80263,9 @@ int HP_skill_splash_target(struct block_list *bl) {
{
retVal___ = HPMHooks.source.skill.splash_target(bl);
}
- if( HPMHooks.count.HP_skill_splash_target_post ) {
+ if (HPMHooks.count.HP_skill_splash_target_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_splash_target_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_splash_target_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_splash_target_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -72302,16 +80275,16 @@ int HP_skill_splash_target(struct block_list *bl) {
int HP_skill_check_npc_chaospanic(struct block_list *bl, va_list args) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_check_npc_chaospanic_pre ) {
+ if (HPMHooks.count.HP_skill_check_npc_chaospanic_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_npc_chaospanic_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_npc_chaospanic_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_skill_check_npc_chaospanic_pre[hIndex].func;
retVal___ = preHookFunc(&bl, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -72321,9 +80294,9 @@ int HP_skill_check_npc_chaospanic(struct block_list *bl, va_list args) {
retVal___ = HPMHooks.source.skill.check_npc_chaospanic(bl, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_skill_check_npc_chaospanic_post ) {
+ if (HPMHooks.count.HP_skill_check_npc_chaospanic_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_npc_chaospanic_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_npc_chaospanic_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_skill_check_npc_chaospanic_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, args___copy);
@@ -72335,16 +80308,16 @@ int HP_skill_check_npc_chaospanic(struct block_list *bl, va_list args) {
int HP_skill_count_wos(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_skill_count_wos_pre ) {
+ if (HPMHooks.count.HP_skill_count_wos_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_count_wos_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_count_wos_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_skill_count_wos_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -72354,9 +80327,9 @@ int HP_skill_count_wos(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.skill.count_wos(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_skill_count_wos_post ) {
+ if (HPMHooks.count.HP_skill_count_wos_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_skill_count_wos_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_count_wos_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_skill_count_wos_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -72368,14 +80341,14 @@ int HP_skill_count_wos(struct block_list *bl, va_list ap) {
/* socket_interface */
void HP_sockt_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_sockt_init_pre ) {
+ if (HPMHooks.count.HP_sockt_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -72383,9 +80356,9 @@ void HP_sockt_init(void) {
{
HPMHooks.source.sockt.init();
}
- if( HPMHooks.count.HP_sockt_init_post ) {
+ if (HPMHooks.count.HP_sockt_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_init_post[hIndex].func;
postHookFunc();
}
@@ -72394,14 +80367,14 @@ void HP_sockt_init(void) {
}
void HP_sockt_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_sockt_final_pre ) {
+ if (HPMHooks.count.HP_sockt_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -72409,9 +80382,9 @@ void HP_sockt_final(void) {
{
HPMHooks.source.sockt.final();
}
- if( HPMHooks.count.HP_sockt_final_post ) {
+ if (HPMHooks.count.HP_sockt_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_final_post[hIndex].func;
postHookFunc();
}
@@ -72421,14 +80394,14 @@ void HP_sockt_final(void) {
int HP_sockt_perform(int next) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sockt_perform_pre ) {
+ if (HPMHooks.count.HP_sockt_perform_pre > 0) {
int (*preHookFunc) (int *next);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_perform_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_perform_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_perform_pre[hIndex].func;
retVal___ = preHookFunc(&next);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -72436,9 +80409,9 @@ int HP_sockt_perform(int next) {
{
retVal___ = HPMHooks.source.sockt.perform(next);
}
- if( HPMHooks.count.HP_sockt_perform_post ) {
+ if (HPMHooks.count.HP_sockt_perform_post > 0) {
int (*postHookFunc) (int retVal___, int next);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_perform_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_perform_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_perform_post[hIndex].func;
retVal___ = postHookFunc(retVal___, next);
}
@@ -72447,14 +80420,14 @@ int HP_sockt_perform(int next) {
}
void HP_sockt_datasync(int fd, bool send) {
int hIndex = 0;
- if( HPMHooks.count.HP_sockt_datasync_pre ) {
+ if (HPMHooks.count.HP_sockt_datasync_pre > 0) {
void (*preHookFunc) (int *fd, bool *send);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_datasync_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_datasync_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_datasync_pre[hIndex].func;
preHookFunc(&fd, &send);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -72462,9 +80435,9 @@ void HP_sockt_datasync(int fd, bool send) {
{
HPMHooks.source.sockt.datasync(fd, send);
}
- if( HPMHooks.count.HP_sockt_datasync_post ) {
+ if (HPMHooks.count.HP_sockt_datasync_post > 0) {
void (*postHookFunc) (int fd, bool send);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_datasync_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_datasync_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_datasync_post[hIndex].func;
postHookFunc(fd, send);
}
@@ -72474,14 +80447,14 @@ void HP_sockt_datasync(int fd, bool send) {
int HP_sockt_make_listen_bind(uint32 ip, uint16 port) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sockt_make_listen_bind_pre ) {
+ if (HPMHooks.count.HP_sockt_make_listen_bind_pre > 0) {
int (*preHookFunc) (uint32 *ip, uint16 *port);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_make_listen_bind_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_make_listen_bind_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_make_listen_bind_pre[hIndex].func;
retVal___ = preHookFunc(&ip, &port);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -72489,9 +80462,9 @@ int HP_sockt_make_listen_bind(uint32 ip, uint16 port) {
{
retVal___ = HPMHooks.source.sockt.make_listen_bind(ip, port);
}
- if( HPMHooks.count.HP_sockt_make_listen_bind_post ) {
+ if (HPMHooks.count.HP_sockt_make_listen_bind_post > 0) {
int (*postHookFunc) (int retVal___, uint32 ip, uint16 port);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_make_listen_bind_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_make_listen_bind_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_make_listen_bind_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ip, port);
}
@@ -72501,14 +80474,14 @@ int HP_sockt_make_listen_bind(uint32 ip, uint16 port) {
int HP_sockt_make_connection(uint32 ip, uint16 port, struct hSockOpt *opt) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sockt_make_connection_pre ) {
+ if (HPMHooks.count.HP_sockt_make_connection_pre > 0) {
int (*preHookFunc) (uint32 *ip, uint16 *port, struct hSockOpt **opt);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_make_connection_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_make_connection_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_make_connection_pre[hIndex].func;
retVal___ = preHookFunc(&ip, &port, &opt);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -72516,9 +80489,9 @@ int HP_sockt_make_connection(uint32 ip, uint16 port, struct hSockOpt *opt) {
{
retVal___ = HPMHooks.source.sockt.make_connection(ip, port, opt);
}
- if( HPMHooks.count.HP_sockt_make_connection_post ) {
+ if (HPMHooks.count.HP_sockt_make_connection_post > 0) {
int (*postHookFunc) (int retVal___, uint32 ip, uint16 port, struct hSockOpt *opt);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_make_connection_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_make_connection_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_make_connection_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ip, port, opt);
}
@@ -72528,14 +80501,14 @@ int HP_sockt_make_connection(uint32 ip, uint16 port, struct hSockOpt *opt) {
int HP_sockt_realloc_fifo(int fd, unsigned int rfifo_size, unsigned int wfifo_size) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sockt_realloc_fifo_pre ) {
+ if (HPMHooks.count.HP_sockt_realloc_fifo_pre > 0) {
int (*preHookFunc) (int *fd, unsigned int *rfifo_size, unsigned int *wfifo_size);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_realloc_fifo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_realloc_fifo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_realloc_fifo_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &rfifo_size, &wfifo_size);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -72543,9 +80516,9 @@ int HP_sockt_realloc_fifo(int fd, unsigned int rfifo_size, unsigned int wfifo_si
{
retVal___ = HPMHooks.source.sockt.realloc_fifo(fd, rfifo_size, wfifo_size);
}
- if( HPMHooks.count.HP_sockt_realloc_fifo_post ) {
+ if (HPMHooks.count.HP_sockt_realloc_fifo_post > 0) {
int (*postHookFunc) (int retVal___, int fd, unsigned int rfifo_size, unsigned int wfifo_size);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_realloc_fifo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_realloc_fifo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_realloc_fifo_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, rfifo_size, wfifo_size);
}
@@ -72555,14 +80528,14 @@ int HP_sockt_realloc_fifo(int fd, unsigned int rfifo_size, unsigned int wfifo_si
int HP_sockt_realloc_writefifo(int fd, size_t addition) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sockt_realloc_writefifo_pre ) {
+ if (HPMHooks.count.HP_sockt_realloc_writefifo_pre > 0) {
int (*preHookFunc) (int *fd, size_t *addition);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_realloc_writefifo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_realloc_writefifo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_realloc_writefifo_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &addition);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -72570,53 +80543,79 @@ int HP_sockt_realloc_writefifo(int fd, size_t addition) {
{
retVal___ = HPMHooks.source.sockt.realloc_writefifo(fd, addition);
}
- if( HPMHooks.count.HP_sockt_realloc_writefifo_post ) {
+ if (HPMHooks.count.HP_sockt_realloc_writefifo_post > 0) {
int (*postHookFunc) (int retVal___, int fd, size_t addition);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_realloc_writefifo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_realloc_writefifo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_realloc_writefifo_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, addition);
}
}
return retVal___;
}
-int HP_sockt_wfifoset(int fd, size_t len) {
+int HP_sockt_wfifoset(int fd, size_t len, bool validate) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sockt_wfifoset_pre ) {
- int (*preHookFunc) (int *fd, size_t *len);
+ if (HPMHooks.count.HP_sockt_wfifoset_pre > 0) {
+ int (*preHookFunc) (int *fd, size_t *len, bool *validate);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_wfifoset_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_wfifoset_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_wfifoset_pre[hIndex].func;
- retVal___ = preHookFunc(&fd, &len);
+ retVal___ = preHookFunc(&fd, &len, &validate);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
}
{
- retVal___ = HPMHooks.source.sockt.wfifoset(fd, len);
+ retVal___ = HPMHooks.source.sockt.wfifoset(fd, len, validate);
}
- if( HPMHooks.count.HP_sockt_wfifoset_post ) {
- int (*postHookFunc) (int retVal___, int fd, size_t len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_wfifoset_post; hIndex++ ) {
+ if (HPMHooks.count.HP_sockt_wfifoset_post > 0) {
+ int (*postHookFunc) (int retVal___, int fd, size_t len, bool validate);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_wfifoset_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_wfifoset_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, fd, len);
+ retVal___ = postHookFunc(retVal___, fd, len, validate);
}
}
return retVal___;
}
+void HP_sockt_wfifohead(int fd, size_t len) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_sockt_wfifohead_pre > 0) {
+ void (*preHookFunc) (int *fd, size_t *len);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_wfifohead_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_sockt_wfifohead_pre[hIndex].func;
+ preHookFunc(&fd, &len);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.sockt.wfifohead(fd, len);
+ }
+ if (HPMHooks.count.HP_sockt_wfifohead_post > 0) {
+ void (*postHookFunc) (int fd, size_t len);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_wfifohead_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_sockt_wfifohead_post[hIndex].func;
+ postHookFunc(fd, len);
+ }
+ }
+ return;
+}
int HP_sockt_rfifoskip(int fd, size_t len) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sockt_rfifoskip_pre ) {
+ if (HPMHooks.count.HP_sockt_rfifoskip_pre > 0) {
int (*preHookFunc) (int *fd, size_t *len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_rfifoskip_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_rfifoskip_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_rfifoskip_pre[hIndex].func;
retVal___ = preHookFunc(&fd, &len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -72624,9 +80623,9 @@ int HP_sockt_rfifoskip(int fd, size_t len) {
{
retVal___ = HPMHooks.source.sockt.rfifoskip(fd, len);
}
- if( HPMHooks.count.HP_sockt_rfifoskip_post ) {
+ if (HPMHooks.count.HP_sockt_rfifoskip_post > 0) {
int (*postHookFunc) (int retVal___, int fd, size_t len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_rfifoskip_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_rfifoskip_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_rfifoskip_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, len);
}
@@ -72635,14 +80634,14 @@ int HP_sockt_rfifoskip(int fd, size_t len) {
}
void HP_sockt_close(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_sockt_close_pre ) {
+ if (HPMHooks.count.HP_sockt_close_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_close_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_close_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_close_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -72650,26 +80649,52 @@ void HP_sockt_close(int fd) {
{
HPMHooks.source.sockt.close(fd);
}
- if( HPMHooks.count.HP_sockt_close_post ) {
+ if (HPMHooks.count.HP_sockt_close_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_close_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_close_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_close_post[hIndex].func;
postHookFunc(fd);
}
}
return;
}
+void HP_sockt_validateWfifo(int fd, size_t len) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_sockt_validateWfifo_pre > 0) {
+ void (*preHookFunc) (int *fd, size_t *len);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_validateWfifo_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_sockt_validateWfifo_pre[hIndex].func;
+ preHookFunc(&fd, &len);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.sockt.validateWfifo(fd, len);
+ }
+ if (HPMHooks.count.HP_sockt_validateWfifo_post > 0) {
+ void (*postHookFunc) (int fd, size_t len);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_validateWfifo_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_sockt_validateWfifo_post[hIndex].func;
+ postHookFunc(fd, len);
+ }
+ }
+ return;
+}
bool HP_sockt_session_is_valid(int fd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_sockt_session_is_valid_pre ) {
+ if (HPMHooks.count.HP_sockt_session_is_valid_pre > 0) {
bool (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_session_is_valid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_session_is_valid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_session_is_valid_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -72677,9 +80702,9 @@ bool HP_sockt_session_is_valid(int fd) {
{
retVal___ = HPMHooks.source.sockt.session_is_valid(fd);
}
- if( HPMHooks.count.HP_sockt_session_is_valid_post ) {
+ if (HPMHooks.count.HP_sockt_session_is_valid_post > 0) {
bool (*postHookFunc) (bool retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_session_is_valid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_session_is_valid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_session_is_valid_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -72689,14 +80714,14 @@ bool HP_sockt_session_is_valid(int fd) {
bool HP_sockt_session_is_active(int fd) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_sockt_session_is_active_pre ) {
+ if (HPMHooks.count.HP_sockt_session_is_active_pre > 0) {
bool (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_session_is_active_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_session_is_active_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_session_is_active_pre[hIndex].func;
retVal___ = preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -72704,9 +80729,9 @@ bool HP_sockt_session_is_active(int fd) {
{
retVal___ = HPMHooks.source.sockt.session_is_active(fd);
}
- if( HPMHooks.count.HP_sockt_session_is_active_post ) {
+ if (HPMHooks.count.HP_sockt_session_is_active_post > 0) {
bool (*postHookFunc) (bool retVal___, int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_session_is_active_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_session_is_active_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_session_is_active_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd);
}
@@ -72715,14 +80740,14 @@ bool HP_sockt_session_is_active(int fd) {
}
void HP_sockt_flush(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_sockt_flush_pre ) {
+ if (HPMHooks.count.HP_sockt_flush_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_flush_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_flush_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_flush_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -72730,9 +80755,9 @@ void HP_sockt_flush(int fd) {
{
HPMHooks.source.sockt.flush(fd);
}
- if( HPMHooks.count.HP_sockt_flush_post ) {
+ if (HPMHooks.count.HP_sockt_flush_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_flush_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_flush_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_flush_post[hIndex].func;
postHookFunc(fd);
}
@@ -72741,14 +80766,14 @@ void HP_sockt_flush(int fd) {
}
void HP_sockt_flush_fifos(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_sockt_flush_fifos_pre ) {
+ if (HPMHooks.count.HP_sockt_flush_fifos_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_flush_fifos_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_flush_fifos_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_flush_fifos_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -72756,9 +80781,9 @@ void HP_sockt_flush_fifos(void) {
{
HPMHooks.source.sockt.flush_fifos();
}
- if( HPMHooks.count.HP_sockt_flush_fifos_post ) {
+ if (HPMHooks.count.HP_sockt_flush_fifos_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_flush_fifos_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_flush_fifos_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_flush_fifos_post[hIndex].func;
postHookFunc();
}
@@ -72767,14 +80792,14 @@ void HP_sockt_flush_fifos(void) {
}
void HP_sockt_set_nonblocking(int fd, unsigned long yes) {
int hIndex = 0;
- if( HPMHooks.count.HP_sockt_set_nonblocking_pre ) {
+ if (HPMHooks.count.HP_sockt_set_nonblocking_pre > 0) {
void (*preHookFunc) (int *fd, unsigned long *yes);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_set_nonblocking_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_set_nonblocking_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_set_nonblocking_pre[hIndex].func;
preHookFunc(&fd, &yes);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -72782,9 +80807,9 @@ void HP_sockt_set_nonblocking(int fd, unsigned long yes) {
{
HPMHooks.source.sockt.set_nonblocking(fd, yes);
}
- if( HPMHooks.count.HP_sockt_set_nonblocking_post ) {
+ if (HPMHooks.count.HP_sockt_set_nonblocking_post > 0) {
void (*postHookFunc) (int fd, unsigned long yes);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_set_nonblocking_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_set_nonblocking_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_set_nonblocking_post[hIndex].func;
postHookFunc(fd, yes);
}
@@ -72793,14 +80818,14 @@ void HP_sockt_set_nonblocking(int fd, unsigned long yes) {
}
void HP_sockt_set_defaultparse(ParseFunc defaultparse) {
int hIndex = 0;
- if( HPMHooks.count.HP_sockt_set_defaultparse_pre ) {
+ if (HPMHooks.count.HP_sockt_set_defaultparse_pre > 0) {
void (*preHookFunc) (ParseFunc *defaultparse);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_set_defaultparse_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_set_defaultparse_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_set_defaultparse_pre[hIndex].func;
preHookFunc(&defaultparse);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -72808,9 +80833,9 @@ void HP_sockt_set_defaultparse(ParseFunc defaultparse) {
{
HPMHooks.source.sockt.set_defaultparse(defaultparse);
}
- if( HPMHooks.count.HP_sockt_set_defaultparse_post ) {
+ if (HPMHooks.count.HP_sockt_set_defaultparse_post > 0) {
void (*postHookFunc) (ParseFunc defaultparse);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_set_defaultparse_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_set_defaultparse_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_set_defaultparse_post[hIndex].func;
postHookFunc(defaultparse);
}
@@ -72820,14 +80845,14 @@ void HP_sockt_set_defaultparse(ParseFunc defaultparse) {
uint32 HP_sockt_host2ip(const char *hostname) {
int hIndex = 0;
uint32 retVal___ = 0;
- if( HPMHooks.count.HP_sockt_host2ip_pre ) {
+ if (HPMHooks.count.HP_sockt_host2ip_pre > 0) {
uint32 (*preHookFunc) (const char **hostname);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_host2ip_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_host2ip_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_host2ip_pre[hIndex].func;
retVal___ = preHookFunc(&hostname);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -72835,9 +80860,9 @@ uint32 HP_sockt_host2ip(const char *hostname) {
{
retVal___ = HPMHooks.source.sockt.host2ip(hostname);
}
- if( HPMHooks.count.HP_sockt_host2ip_post ) {
+ if (HPMHooks.count.HP_sockt_host2ip_post > 0) {
uint32 (*postHookFunc) (uint32 retVal___, const char *hostname);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_host2ip_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_host2ip_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_host2ip_post[hIndex].func;
retVal___ = postHookFunc(retVal___, hostname);
}
@@ -72847,14 +80872,14 @@ uint32 HP_sockt_host2ip(const char *hostname) {
const char* HP_sockt_ip2str(uint32 ip, char *ip_str) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sockt_ip2str_pre ) {
+ if (HPMHooks.count.HP_sockt_ip2str_pre > 0) {
const char* (*preHookFunc) (uint32 *ip, char **ip_str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_ip2str_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_ip2str_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_ip2str_pre[hIndex].func;
retVal___ = preHookFunc(&ip, &ip_str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -72862,9 +80887,9 @@ const char* HP_sockt_ip2str(uint32 ip, char *ip_str) {
{
retVal___ = HPMHooks.source.sockt.ip2str(ip, ip_str);
}
- if( HPMHooks.count.HP_sockt_ip2str_post ) {
+ if (HPMHooks.count.HP_sockt_ip2str_post > 0) {
const char* (*postHookFunc) (const char* retVal___, uint32 ip, char *ip_str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_ip2str_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_ip2str_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_ip2str_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ip, ip_str);
}
@@ -72874,14 +80899,14 @@ const char* HP_sockt_ip2str(uint32 ip, char *ip_str) {
uint32 HP_sockt_str2ip(const char *ip_str) {
int hIndex = 0;
uint32 retVal___ = 0;
- if( HPMHooks.count.HP_sockt_str2ip_pre ) {
+ if (HPMHooks.count.HP_sockt_str2ip_pre > 0) {
uint32 (*preHookFunc) (const char **ip_str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_str2ip_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_str2ip_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_str2ip_pre[hIndex].func;
retVal___ = preHookFunc(&ip_str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -72889,9 +80914,9 @@ uint32 HP_sockt_str2ip(const char *ip_str) {
{
retVal___ = HPMHooks.source.sockt.str2ip(ip_str);
}
- if( HPMHooks.count.HP_sockt_str2ip_post ) {
+ if (HPMHooks.count.HP_sockt_str2ip_post > 0) {
uint32 (*postHookFunc) (uint32 retVal___, const char *ip_str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_str2ip_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_str2ip_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_str2ip_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ip_str);
}
@@ -72901,14 +80926,14 @@ uint32 HP_sockt_str2ip(const char *ip_str) {
uint16 HP_sockt_ntows(uint16 netshort) {
int hIndex = 0;
uint16 retVal___ = 0;
- if( HPMHooks.count.HP_sockt_ntows_pre ) {
+ if (HPMHooks.count.HP_sockt_ntows_pre > 0) {
uint16 (*preHookFunc) (uint16 *netshort);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_ntows_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_ntows_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_ntows_pre[hIndex].func;
retVal___ = preHookFunc(&netshort);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -72916,9 +80941,9 @@ uint16 HP_sockt_ntows(uint16 netshort) {
{
retVal___ = HPMHooks.source.sockt.ntows(netshort);
}
- if( HPMHooks.count.HP_sockt_ntows_post ) {
+ if (HPMHooks.count.HP_sockt_ntows_post > 0) {
uint16 (*postHookFunc) (uint16 retVal___, uint16 netshort);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_ntows_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_ntows_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_ntows_post[hIndex].func;
retVal___ = postHookFunc(retVal___, netshort);
}
@@ -72928,14 +80953,14 @@ uint16 HP_sockt_ntows(uint16 netshort) {
int HP_sockt_getips(uint32 *ips, int max) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sockt_getips_pre ) {
+ if (HPMHooks.count.HP_sockt_getips_pre > 0) {
int (*preHookFunc) (uint32 **ips, int *max);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_getips_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_getips_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_getips_pre[hIndex].func;
retVal___ = preHookFunc(&ips, &max);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -72943,9 +80968,9 @@ int HP_sockt_getips(uint32 *ips, int max) {
{
retVal___ = HPMHooks.source.sockt.getips(ips, max);
}
- if( HPMHooks.count.HP_sockt_getips_post ) {
+ if (HPMHooks.count.HP_sockt_getips_post > 0) {
int (*postHookFunc) (int retVal___, uint32 *ips, int max);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_getips_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_getips_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_getips_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ips, max);
}
@@ -72954,14 +80979,14 @@ int HP_sockt_getips(uint32 *ips, int max) {
}
void HP_sockt_eof(int fd) {
int hIndex = 0;
- if( HPMHooks.count.HP_sockt_eof_pre ) {
+ if (HPMHooks.count.HP_sockt_eof_pre > 0) {
void (*preHookFunc) (int *fd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_eof_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_eof_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_eof_pre[hIndex].func;
preHookFunc(&fd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -72969,9 +80994,9 @@ void HP_sockt_eof(int fd) {
{
HPMHooks.source.sockt.eof(fd);
}
- if( HPMHooks.count.HP_sockt_eof_post ) {
+ if (HPMHooks.count.HP_sockt_eof_post > 0) {
void (*postHookFunc) (int fd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_eof_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_eof_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_eof_post[hIndex].func;
postHookFunc(fd);
}
@@ -72981,14 +81006,14 @@ void HP_sockt_eof(int fd) {
uint32 HP_sockt_lan_subnet_check(uint32 ip, struct s_subnet *info) {
int hIndex = 0;
uint32 retVal___ = 0;
- if( HPMHooks.count.HP_sockt_lan_subnet_check_pre ) {
+ if (HPMHooks.count.HP_sockt_lan_subnet_check_pre > 0) {
uint32 (*preHookFunc) (uint32 *ip, struct s_subnet **info);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_lan_subnet_check_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_lan_subnet_check_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_lan_subnet_check_pre[hIndex].func;
retVal___ = preHookFunc(&ip, &info);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -72996,9 +81021,9 @@ uint32 HP_sockt_lan_subnet_check(uint32 ip, struct s_subnet *info) {
{
retVal___ = HPMHooks.source.sockt.lan_subnet_check(ip, info);
}
- if( HPMHooks.count.HP_sockt_lan_subnet_check_post ) {
+ if (HPMHooks.count.HP_sockt_lan_subnet_check_post > 0) {
uint32 (*postHookFunc) (uint32 retVal___, uint32 ip, struct s_subnet *info);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_lan_subnet_check_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_lan_subnet_check_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_lan_subnet_check_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ip, info);
}
@@ -73008,14 +81033,14 @@ uint32 HP_sockt_lan_subnet_check(uint32 ip, struct s_subnet *info) {
bool HP_sockt_allowed_ip_check(uint32 ip) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_sockt_allowed_ip_check_pre ) {
+ if (HPMHooks.count.HP_sockt_allowed_ip_check_pre > 0) {
bool (*preHookFunc) (uint32 *ip);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_allowed_ip_check_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_allowed_ip_check_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_allowed_ip_check_pre[hIndex].func;
retVal___ = preHookFunc(&ip);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -73023,9 +81048,9 @@ bool HP_sockt_allowed_ip_check(uint32 ip) {
{
retVal___ = HPMHooks.source.sockt.allowed_ip_check(ip);
}
- if( HPMHooks.count.HP_sockt_allowed_ip_check_post ) {
+ if (HPMHooks.count.HP_sockt_allowed_ip_check_post > 0) {
bool (*postHookFunc) (bool retVal___, uint32 ip);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_allowed_ip_check_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_allowed_ip_check_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_allowed_ip_check_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ip);
}
@@ -73035,14 +81060,14 @@ bool HP_sockt_allowed_ip_check(uint32 ip) {
bool HP_sockt_trusted_ip_check(uint32 ip) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_sockt_trusted_ip_check_pre ) {
+ if (HPMHooks.count.HP_sockt_trusted_ip_check_pre > 0) {
bool (*preHookFunc) (uint32 *ip);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_trusted_ip_check_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_trusted_ip_check_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_trusted_ip_check_pre[hIndex].func;
retVal___ = preHookFunc(&ip);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -73050,9 +81075,9 @@ bool HP_sockt_trusted_ip_check(uint32 ip) {
{
retVal___ = HPMHooks.source.sockt.trusted_ip_check(ip);
}
- if( HPMHooks.count.HP_sockt_trusted_ip_check_post ) {
+ if (HPMHooks.count.HP_sockt_trusted_ip_check_post > 0) {
bool (*postHookFunc) (bool retVal___, uint32 ip);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_trusted_ip_check_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_trusted_ip_check_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_trusted_ip_check_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ip);
}
@@ -73062,14 +81087,14 @@ bool HP_sockt_trusted_ip_check(uint32 ip) {
int HP_sockt_net_config_read_sub(struct config_setting_t *t, struct s_subnet_vector *list, const char *filename, const char *groupname) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sockt_net_config_read_sub_pre ) {
+ if (HPMHooks.count.HP_sockt_net_config_read_sub_pre > 0) {
int (*preHookFunc) (struct config_setting_t **t, struct s_subnet_vector **list, const char **filename, const char **groupname);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_net_config_read_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_net_config_read_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_net_config_read_sub_pre[hIndex].func;
retVal___ = preHookFunc(&t, &list, &filename, &groupname);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -73077,9 +81102,9 @@ int HP_sockt_net_config_read_sub(struct config_setting_t *t, struct s_subnet_vec
{
retVal___ = HPMHooks.source.sockt.net_config_read_sub(t, list, filename, groupname);
}
- if( HPMHooks.count.HP_sockt_net_config_read_sub_post ) {
+ if (HPMHooks.count.HP_sockt_net_config_read_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *t, struct s_subnet_vector *list, const char *filename, const char *groupname);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_net_config_read_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_net_config_read_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_net_config_read_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, t, list, filename, groupname);
}
@@ -73088,14 +81113,14 @@ int HP_sockt_net_config_read_sub(struct config_setting_t *t, struct s_subnet_vec
}
void HP_sockt_net_config_read(const char *filename) {
int hIndex = 0;
- if( HPMHooks.count.HP_sockt_net_config_read_pre ) {
+ if (HPMHooks.count.HP_sockt_net_config_read_pre > 0) {
void (*preHookFunc) (const char **filename);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_net_config_read_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_net_config_read_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sockt_net_config_read_pre[hIndex].func;
preHookFunc(&filename);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -73103,9 +81128,9 @@ void HP_sockt_net_config_read(const char *filename) {
{
HPMHooks.source.sockt.net_config_read(filename);
}
- if( HPMHooks.count.HP_sockt_net_config_read_post ) {
+ if (HPMHooks.count.HP_sockt_net_config_read_post > 0) {
void (*postHookFunc) (const char *filename);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sockt_net_config_read_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sockt_net_config_read_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sockt_net_config_read_post[hIndex].func;
postHookFunc(filename);
}
@@ -73116,14 +81141,14 @@ void HP_sockt_net_config_read(const char *filename) {
int HP_SQL_Connect(struct Sql *self, const char *user, const char *passwd, const char *host, uint16 port, const char *db) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_Connect_pre ) {
+ if (HPMHooks.count.HP_SQL_Connect_pre > 0) {
int (*preHookFunc) (struct Sql **self, const char **user, const char **passwd, const char **host, uint16 *port, const char **db);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Connect_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Connect_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_Connect_pre[hIndex].func;
retVal___ = preHookFunc(&self, &user, &passwd, &host, &port, &db);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -73131,9 +81156,9 @@ int HP_SQL_Connect(struct Sql *self, const char *user, const char *passwd, const
{
retVal___ = HPMHooks.source.SQL.Connect(self, user, passwd, host, port, db);
}
- if( HPMHooks.count.HP_SQL_Connect_post ) {
+ if (HPMHooks.count.HP_SQL_Connect_post > 0) {
int (*postHookFunc) (int retVal___, struct Sql *self, const char *user, const char *passwd, const char *host, uint16 port, const char *db);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Connect_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Connect_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_Connect_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, user, passwd, host, port, db);
}
@@ -73143,14 +81168,14 @@ int HP_SQL_Connect(struct Sql *self, const char *user, const char *passwd, const
int HP_SQL_GetTimeout(struct Sql *self, uint32 *out_timeout) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_GetTimeout_pre ) {
+ if (HPMHooks.count.HP_SQL_GetTimeout_pre > 0) {
int (*preHookFunc) (struct Sql **self, uint32 **out_timeout);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetTimeout_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetTimeout_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_GetTimeout_pre[hIndex].func;
retVal___ = preHookFunc(&self, &out_timeout);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -73158,9 +81183,9 @@ int HP_SQL_GetTimeout(struct Sql *self, uint32 *out_timeout) {
{
retVal___ = HPMHooks.source.SQL.GetTimeout(self, out_timeout);
}
- if( HPMHooks.count.HP_SQL_GetTimeout_post ) {
+ if (HPMHooks.count.HP_SQL_GetTimeout_post > 0) {
int (*postHookFunc) (int retVal___, struct Sql *self, uint32 *out_timeout);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetTimeout_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetTimeout_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_GetTimeout_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, out_timeout);
}
@@ -73170,14 +81195,14 @@ int HP_SQL_GetTimeout(struct Sql *self, uint32 *out_timeout) {
int HP_SQL_GetColumnNames(struct Sql *self, const char *table, char *out_buf, size_t buf_len, char sep) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_GetColumnNames_pre ) {
+ if (HPMHooks.count.HP_SQL_GetColumnNames_pre > 0) {
int (*preHookFunc) (struct Sql **self, const char **table, char **out_buf, size_t *buf_len, char *sep);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetColumnNames_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetColumnNames_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_GetColumnNames_pre[hIndex].func;
retVal___ = preHookFunc(&self, &table, &out_buf, &buf_len, &sep);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -73185,9 +81210,9 @@ int HP_SQL_GetColumnNames(struct Sql *self, const char *table, char *out_buf, si
{
retVal___ = HPMHooks.source.SQL.GetColumnNames(self, table, out_buf, buf_len, sep);
}
- if( HPMHooks.count.HP_SQL_GetColumnNames_post ) {
+ if (HPMHooks.count.HP_SQL_GetColumnNames_post > 0) {
int (*postHookFunc) (int retVal___, struct Sql *self, const char *table, char *out_buf, size_t buf_len, char sep);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetColumnNames_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetColumnNames_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_GetColumnNames_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, table, out_buf, buf_len, sep);
}
@@ -73197,14 +81222,14 @@ int HP_SQL_GetColumnNames(struct Sql *self, const char *table, char *out_buf, si
int HP_SQL_SetEncoding(struct Sql *self, const char *encoding) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_SetEncoding_pre ) {
+ if (HPMHooks.count.HP_SQL_SetEncoding_pre > 0) {
int (*preHookFunc) (struct Sql **self, const char **encoding);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_SetEncoding_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_SetEncoding_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_SetEncoding_pre[hIndex].func;
retVal___ = preHookFunc(&self, &encoding);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -73212,9 +81237,9 @@ int HP_SQL_SetEncoding(struct Sql *self, const char *encoding) {
{
retVal___ = HPMHooks.source.SQL.SetEncoding(self, encoding);
}
- if( HPMHooks.count.HP_SQL_SetEncoding_post ) {
+ if (HPMHooks.count.HP_SQL_SetEncoding_post > 0) {
int (*postHookFunc) (int retVal___, struct Sql *self, const char *encoding);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_SetEncoding_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_SetEncoding_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_SetEncoding_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, encoding);
}
@@ -73224,14 +81249,14 @@ int HP_SQL_SetEncoding(struct Sql *self, const char *encoding) {
int HP_SQL_Ping(struct Sql *self) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_Ping_pre ) {
+ if (HPMHooks.count.HP_SQL_Ping_pre > 0) {
int (*preHookFunc) (struct Sql **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Ping_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Ping_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_Ping_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -73239,9 +81264,9 @@ int HP_SQL_Ping(struct Sql *self) {
{
retVal___ = HPMHooks.source.SQL.Ping(self);
}
- if( HPMHooks.count.HP_SQL_Ping_post ) {
+ if (HPMHooks.count.HP_SQL_Ping_post > 0) {
int (*postHookFunc) (int retVal___, struct Sql *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Ping_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Ping_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_Ping_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -73251,14 +81276,14 @@ int HP_SQL_Ping(struct Sql *self) {
size_t HP_SQL_EscapeString(struct Sql *self, char *out_to, const char *from) {
int hIndex = 0;
size_t retVal___ = 0;
- if( HPMHooks.count.HP_SQL_EscapeString_pre ) {
+ if (HPMHooks.count.HP_SQL_EscapeString_pre > 0) {
size_t (*preHookFunc) (struct Sql **self, char **out_to, const char **from);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_EscapeString_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_EscapeString_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_EscapeString_pre[hIndex].func;
retVal___ = preHookFunc(&self, &out_to, &from);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -73266,9 +81291,9 @@ size_t HP_SQL_EscapeString(struct Sql *self, char *out_to, const char *from) {
{
retVal___ = HPMHooks.source.SQL.EscapeString(self, out_to, from);
}
- if( HPMHooks.count.HP_SQL_EscapeString_post ) {
+ if (HPMHooks.count.HP_SQL_EscapeString_post > 0) {
size_t (*postHookFunc) (size_t retVal___, struct Sql *self, char *out_to, const char *from);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_EscapeString_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_EscapeString_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_EscapeString_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, out_to, from);
}
@@ -73278,14 +81303,14 @@ size_t HP_SQL_EscapeString(struct Sql *self, char *out_to, const char *from) {
size_t HP_SQL_EscapeStringLen(struct Sql *self, char *out_to, const char *from, size_t from_len) {
int hIndex = 0;
size_t retVal___ = 0;
- if( HPMHooks.count.HP_SQL_EscapeStringLen_pre ) {
+ if (HPMHooks.count.HP_SQL_EscapeStringLen_pre > 0) {
size_t (*preHookFunc) (struct Sql **self, char **out_to, const char **from, size_t *from_len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_EscapeStringLen_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_EscapeStringLen_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_EscapeStringLen_pre[hIndex].func;
retVal___ = preHookFunc(&self, &out_to, &from, &from_len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -73293,9 +81318,9 @@ size_t HP_SQL_EscapeStringLen(struct Sql *self, char *out_to, const char *from,
{
retVal___ = HPMHooks.source.SQL.EscapeStringLen(self, out_to, from, from_len);
}
- if( HPMHooks.count.HP_SQL_EscapeStringLen_post ) {
+ if (HPMHooks.count.HP_SQL_EscapeStringLen_post > 0) {
size_t (*postHookFunc) (size_t retVal___, struct Sql *self, char *out_to, const char *from, size_t from_len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_EscapeStringLen_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_EscapeStringLen_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_EscapeStringLen_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, out_to, from, from_len);
}
@@ -73305,16 +81330,16 @@ size_t HP_SQL_EscapeStringLen(struct Sql *self, char *out_to, const char *from,
int HP_SQL_QueryV(struct Sql *self, const char *query, va_list args) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_QueryV_pre ) {
+ if (HPMHooks.count.HP_SQL_QueryV_pre > 0) {
int (*preHookFunc) (struct Sql **self, const char **query, va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_QueryV_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_QueryV_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_SQL_QueryV_pre[hIndex].func;
retVal___ = preHookFunc(&self, &query, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -73324,9 +81349,9 @@ int HP_SQL_QueryV(struct Sql *self, const char *query, va_list args) {
retVal___ = HPMHooks.source.SQL.QueryV(self, query, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_SQL_QueryV_post ) {
+ if (HPMHooks.count.HP_SQL_QueryV_post > 0) {
int (*postHookFunc) (int retVal___, struct Sql *self, const char *query, va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_QueryV_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_QueryV_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_SQL_QueryV_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, query, args___copy);
@@ -73338,14 +81363,14 @@ int HP_SQL_QueryV(struct Sql *self, const char *query, va_list args) {
int HP_SQL_QueryStr(struct Sql *self, const char *query) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_QueryStr_pre ) {
+ if (HPMHooks.count.HP_SQL_QueryStr_pre > 0) {
int (*preHookFunc) (struct Sql **self, const char **query);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_QueryStr_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_QueryStr_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_QueryStr_pre[hIndex].func;
retVal___ = preHookFunc(&self, &query);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -73353,9 +81378,9 @@ int HP_SQL_QueryStr(struct Sql *self, const char *query) {
{
retVal___ = HPMHooks.source.SQL.QueryStr(self, query);
}
- if( HPMHooks.count.HP_SQL_QueryStr_post ) {
+ if (HPMHooks.count.HP_SQL_QueryStr_post > 0) {
int (*postHookFunc) (int retVal___, struct Sql *self, const char *query);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_QueryStr_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_QueryStr_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_QueryStr_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, query);
}
@@ -73365,14 +81390,14 @@ int HP_SQL_QueryStr(struct Sql *self, const char *query) {
uint64 HP_SQL_LastInsertId(struct Sql *self) {
int hIndex = 0;
uint64 retVal___ = 0;
- if( HPMHooks.count.HP_SQL_LastInsertId_pre ) {
+ if (HPMHooks.count.HP_SQL_LastInsertId_pre > 0) {
uint64 (*preHookFunc) (struct Sql **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_LastInsertId_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_LastInsertId_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_LastInsertId_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -73380,9 +81405,9 @@ uint64 HP_SQL_LastInsertId(struct Sql *self) {
{
retVal___ = HPMHooks.source.SQL.LastInsertId(self);
}
- if( HPMHooks.count.HP_SQL_LastInsertId_post ) {
+ if (HPMHooks.count.HP_SQL_LastInsertId_post > 0) {
uint64 (*postHookFunc) (uint64 retVal___, struct Sql *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_LastInsertId_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_LastInsertId_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_LastInsertId_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -73392,14 +81417,14 @@ uint64 HP_SQL_LastInsertId(struct Sql *self) {
uint32 HP_SQL_NumColumns(struct Sql *self) {
int hIndex = 0;
uint32 retVal___ = 0;
- if( HPMHooks.count.HP_SQL_NumColumns_pre ) {
+ if (HPMHooks.count.HP_SQL_NumColumns_pre > 0) {
uint32 (*preHookFunc) (struct Sql **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NumColumns_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NumColumns_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_NumColumns_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -73407,9 +81432,9 @@ uint32 HP_SQL_NumColumns(struct Sql *self) {
{
retVal___ = HPMHooks.source.SQL.NumColumns(self);
}
- if( HPMHooks.count.HP_SQL_NumColumns_post ) {
+ if (HPMHooks.count.HP_SQL_NumColumns_post > 0) {
uint32 (*postHookFunc) (uint32 retVal___, struct Sql *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NumColumns_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NumColumns_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_NumColumns_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -73419,14 +81444,14 @@ uint32 HP_SQL_NumColumns(struct Sql *self) {
uint64 HP_SQL_NumRows(struct Sql *self) {
int hIndex = 0;
uint64 retVal___ = 0;
- if( HPMHooks.count.HP_SQL_NumRows_pre ) {
+ if (HPMHooks.count.HP_SQL_NumRows_pre > 0) {
uint64 (*preHookFunc) (struct Sql **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NumRows_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NumRows_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_NumRows_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -73434,9 +81459,9 @@ uint64 HP_SQL_NumRows(struct Sql *self) {
{
retVal___ = HPMHooks.source.SQL.NumRows(self);
}
- if( HPMHooks.count.HP_SQL_NumRows_post ) {
+ if (HPMHooks.count.HP_SQL_NumRows_post > 0) {
uint64 (*postHookFunc) (uint64 retVal___, struct Sql *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NumRows_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NumRows_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_NumRows_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -73446,14 +81471,14 @@ uint64 HP_SQL_NumRows(struct Sql *self) {
int HP_SQL_NextRow(struct Sql *self) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_NextRow_pre ) {
+ if (HPMHooks.count.HP_SQL_NextRow_pre > 0) {
int (*preHookFunc) (struct Sql **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NextRow_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NextRow_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_NextRow_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -73461,9 +81486,9 @@ int HP_SQL_NextRow(struct Sql *self) {
{
retVal___ = HPMHooks.source.SQL.NextRow(self);
}
- if( HPMHooks.count.HP_SQL_NextRow_post ) {
+ if (HPMHooks.count.HP_SQL_NextRow_post > 0) {
int (*postHookFunc) (int retVal___, struct Sql *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NextRow_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_NextRow_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_NextRow_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -73473,14 +81498,14 @@ int HP_SQL_NextRow(struct Sql *self) {
int HP_SQL_GetData(struct Sql *self, size_t col, char **out_buf, size_t *out_len) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_GetData_pre ) {
+ if (HPMHooks.count.HP_SQL_GetData_pre > 0) {
int (*preHookFunc) (struct Sql **self, size_t *col, char ***out_buf, size_t **out_len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetData_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetData_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_GetData_pre[hIndex].func;
retVal___ = preHookFunc(&self, &col, &out_buf, &out_len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -73488,9 +81513,9 @@ int HP_SQL_GetData(struct Sql *self, size_t col, char **out_buf, size_t *out_len
{
retVal___ = HPMHooks.source.SQL.GetData(self, col, out_buf, out_len);
}
- if( HPMHooks.count.HP_SQL_GetData_post ) {
+ if (HPMHooks.count.HP_SQL_GetData_post > 0) {
int (*postHookFunc) (int retVal___, struct Sql *self, size_t col, char **out_buf, size_t *out_len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetData_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_GetData_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_GetData_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, col, out_buf, out_len);
}
@@ -73499,14 +81524,14 @@ int HP_SQL_GetData(struct Sql *self, size_t col, char **out_buf, size_t *out_len
}
void HP_SQL_FreeResult(struct Sql *self) {
int hIndex = 0;
- if( HPMHooks.count.HP_SQL_FreeResult_pre ) {
+ if (HPMHooks.count.HP_SQL_FreeResult_pre > 0) {
void (*preHookFunc) (struct Sql **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_FreeResult_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_FreeResult_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_FreeResult_pre[hIndex].func;
preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -73514,9 +81539,9 @@ void HP_SQL_FreeResult(struct Sql *self) {
{
HPMHooks.source.SQL.FreeResult(self);
}
- if( HPMHooks.count.HP_SQL_FreeResult_post ) {
+ if (HPMHooks.count.HP_SQL_FreeResult_post > 0) {
void (*postHookFunc) (struct Sql *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_FreeResult_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_FreeResult_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_FreeResult_post[hIndex].func;
postHookFunc(self);
}
@@ -73525,14 +81550,14 @@ void HP_SQL_FreeResult(struct Sql *self) {
}
void HP_SQL_ShowDebug_(struct Sql *self, const char *debug_file, const unsigned long debug_line) {
int hIndex = 0;
- if( HPMHooks.count.HP_SQL_ShowDebug__pre ) {
+ if (HPMHooks.count.HP_SQL_ShowDebug__pre > 0) {
void (*preHookFunc) (struct Sql **self, const char **debug_file, const unsigned long *debug_line);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_ShowDebug__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_ShowDebug__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_ShowDebug__pre[hIndex].func;
preHookFunc(&self, &debug_file, &debug_line);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -73540,9 +81565,9 @@ void HP_SQL_ShowDebug_(struct Sql *self, const char *debug_file, const unsigned
{
HPMHooks.source.SQL.ShowDebug_(self, debug_file, debug_line);
}
- if( HPMHooks.count.HP_SQL_ShowDebug__post ) {
+ if (HPMHooks.count.HP_SQL_ShowDebug__post > 0) {
void (*postHookFunc) (struct Sql *self, const char *debug_file, const unsigned long debug_line);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_ShowDebug__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_ShowDebug__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_ShowDebug__post[hIndex].func;
postHookFunc(self, debug_file, debug_line);
}
@@ -73551,14 +81576,14 @@ void HP_SQL_ShowDebug_(struct Sql *self, const char *debug_file, const unsigned
}
void HP_SQL_Free(struct Sql *self) {
int hIndex = 0;
- if( HPMHooks.count.HP_SQL_Free_pre ) {
+ if (HPMHooks.count.HP_SQL_Free_pre > 0) {
void (*preHookFunc) (struct Sql **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Free_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Free_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_Free_pre[hIndex].func;
preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -73566,9 +81591,9 @@ void HP_SQL_Free(struct Sql *self) {
{
HPMHooks.source.SQL.Free(self);
}
- if( HPMHooks.count.HP_SQL_Free_post ) {
+ if (HPMHooks.count.HP_SQL_Free_post > 0) {
void (*postHookFunc) (struct Sql *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Free_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Free_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_Free_post[hIndex].func;
postHookFunc(self);
}
@@ -73578,14 +81603,14 @@ void HP_SQL_Free(struct Sql *self) {
struct Sql* HP_SQL_Malloc(void) {
int hIndex = 0;
struct Sql* retVal___ = NULL;
- if( HPMHooks.count.HP_SQL_Malloc_pre ) {
+ if (HPMHooks.count.HP_SQL_Malloc_pre > 0) {
struct Sql* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Malloc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Malloc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_Malloc_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -73593,9 +81618,9 @@ struct Sql* HP_SQL_Malloc(void) {
{
retVal___ = HPMHooks.source.SQL.Malloc();
}
- if( HPMHooks.count.HP_SQL_Malloc_post ) {
+ if (HPMHooks.count.HP_SQL_Malloc_post > 0) {
struct Sql* (*postHookFunc) (struct Sql* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Malloc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_Malloc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_Malloc_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -73605,14 +81630,14 @@ struct Sql* HP_SQL_Malloc(void) {
struct SqlStmt* HP_SQL_StmtMalloc(struct Sql *sql) {
int hIndex = 0;
struct SqlStmt* retVal___ = NULL;
- if( HPMHooks.count.HP_SQL_StmtMalloc_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtMalloc_pre > 0) {
struct SqlStmt* (*preHookFunc) (struct Sql **sql);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtMalloc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtMalloc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtMalloc_pre[hIndex].func;
retVal___ = preHookFunc(&sql);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -73620,9 +81645,9 @@ struct SqlStmt* HP_SQL_StmtMalloc(struct Sql *sql) {
{
retVal___ = HPMHooks.source.SQL.StmtMalloc(sql);
}
- if( HPMHooks.count.HP_SQL_StmtMalloc_post ) {
+ if (HPMHooks.count.HP_SQL_StmtMalloc_post > 0) {
struct SqlStmt* (*postHookFunc) (struct SqlStmt* retVal___, struct Sql *sql);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtMalloc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtMalloc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtMalloc_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sql);
}
@@ -73632,16 +81657,16 @@ struct SqlStmt* HP_SQL_StmtMalloc(struct Sql *sql) {
int HP_SQL_StmtPrepareV(struct SqlStmt *self, const char *query, va_list args) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_StmtPrepareV_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtPrepareV_pre > 0) {
int (*preHookFunc) (struct SqlStmt **self, const char **query, va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtPrepareV_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtPrepareV_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_SQL_StmtPrepareV_pre[hIndex].func;
retVal___ = preHookFunc(&self, &query, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -73651,9 +81676,9 @@ int HP_SQL_StmtPrepareV(struct SqlStmt *self, const char *query, va_list args) {
retVal___ = HPMHooks.source.SQL.StmtPrepareV(self, query, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_SQL_StmtPrepareV_post ) {
+ if (HPMHooks.count.HP_SQL_StmtPrepareV_post > 0) {
int (*postHookFunc) (int retVal___, struct SqlStmt *self, const char *query, va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtPrepareV_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtPrepareV_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_SQL_StmtPrepareV_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, query, args___copy);
@@ -73665,14 +81690,14 @@ int HP_SQL_StmtPrepareV(struct SqlStmt *self, const char *query, va_list args) {
int HP_SQL_StmtPrepareStr(struct SqlStmt *self, const char *query) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_StmtPrepareStr_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtPrepareStr_pre > 0) {
int (*preHookFunc) (struct SqlStmt **self, const char **query);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtPrepareStr_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtPrepareStr_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtPrepareStr_pre[hIndex].func;
retVal___ = preHookFunc(&self, &query);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -73680,9 +81705,9 @@ int HP_SQL_StmtPrepareStr(struct SqlStmt *self, const char *query) {
{
retVal___ = HPMHooks.source.SQL.StmtPrepareStr(self, query);
}
- if( HPMHooks.count.HP_SQL_StmtPrepareStr_post ) {
+ if (HPMHooks.count.HP_SQL_StmtPrepareStr_post > 0) {
int (*postHookFunc) (int retVal___, struct SqlStmt *self, const char *query);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtPrepareStr_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtPrepareStr_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtPrepareStr_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, query);
}
@@ -73692,14 +81717,14 @@ int HP_SQL_StmtPrepareStr(struct SqlStmt *self, const char *query) {
size_t HP_SQL_StmtNumParams(struct SqlStmt *self) {
int hIndex = 0;
size_t retVal___ = 0;
- if( HPMHooks.count.HP_SQL_StmtNumParams_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtNumParams_pre > 0) {
size_t (*preHookFunc) (struct SqlStmt **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumParams_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumParams_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtNumParams_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -73707,9 +81732,9 @@ size_t HP_SQL_StmtNumParams(struct SqlStmt *self) {
{
retVal___ = HPMHooks.source.SQL.StmtNumParams(self);
}
- if( HPMHooks.count.HP_SQL_StmtNumParams_post ) {
+ if (HPMHooks.count.HP_SQL_StmtNumParams_post > 0) {
size_t (*postHookFunc) (size_t retVal___, struct SqlStmt *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumParams_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumParams_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtNumParams_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -73719,14 +81744,14 @@ size_t HP_SQL_StmtNumParams(struct SqlStmt *self) {
int HP_SQL_StmtBindParam(struct SqlStmt *self, size_t idx, enum SqlDataType buffer_type, const void *buffer, size_t buffer_len) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_StmtBindParam_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtBindParam_pre > 0) {
int (*preHookFunc) (struct SqlStmt **self, size_t *idx, enum SqlDataType *buffer_type, const void **buffer, size_t *buffer_len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtBindParam_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtBindParam_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtBindParam_pre[hIndex].func;
retVal___ = preHookFunc(&self, &idx, &buffer_type, &buffer, &buffer_len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -73734,9 +81759,9 @@ int HP_SQL_StmtBindParam(struct SqlStmt *self, size_t idx, enum SqlDataType buff
{
retVal___ = HPMHooks.source.SQL.StmtBindParam(self, idx, buffer_type, buffer, buffer_len);
}
- if( HPMHooks.count.HP_SQL_StmtBindParam_post ) {
+ if (HPMHooks.count.HP_SQL_StmtBindParam_post > 0) {
int (*postHookFunc) (int retVal___, struct SqlStmt *self, size_t idx, enum SqlDataType buffer_type, const void *buffer, size_t buffer_len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtBindParam_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtBindParam_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtBindParam_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, idx, buffer_type, buffer, buffer_len);
}
@@ -73746,14 +81771,14 @@ int HP_SQL_StmtBindParam(struct SqlStmt *self, size_t idx, enum SqlDataType buff
int HP_SQL_StmtExecute(struct SqlStmt *self) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_StmtExecute_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtExecute_pre > 0) {
int (*preHookFunc) (struct SqlStmt **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtExecute_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtExecute_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtExecute_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -73761,9 +81786,9 @@ int HP_SQL_StmtExecute(struct SqlStmt *self) {
{
retVal___ = HPMHooks.source.SQL.StmtExecute(self);
}
- if( HPMHooks.count.HP_SQL_StmtExecute_post ) {
+ if (HPMHooks.count.HP_SQL_StmtExecute_post > 0) {
int (*postHookFunc) (int retVal___, struct SqlStmt *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtExecute_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtExecute_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtExecute_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -73773,14 +81798,14 @@ int HP_SQL_StmtExecute(struct SqlStmt *self) {
uint64 HP_SQL_StmtLastInsertId(struct SqlStmt *self) {
int hIndex = 0;
uint64 retVal___ = 0;
- if( HPMHooks.count.HP_SQL_StmtLastInsertId_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtLastInsertId_pre > 0) {
uint64 (*preHookFunc) (struct SqlStmt **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtLastInsertId_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtLastInsertId_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtLastInsertId_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -73788,9 +81813,9 @@ uint64 HP_SQL_StmtLastInsertId(struct SqlStmt *self) {
{
retVal___ = HPMHooks.source.SQL.StmtLastInsertId(self);
}
- if( HPMHooks.count.HP_SQL_StmtLastInsertId_post ) {
+ if (HPMHooks.count.HP_SQL_StmtLastInsertId_post > 0) {
uint64 (*postHookFunc) (uint64 retVal___, struct SqlStmt *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtLastInsertId_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtLastInsertId_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtLastInsertId_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -73800,14 +81825,14 @@ uint64 HP_SQL_StmtLastInsertId(struct SqlStmt *self) {
size_t HP_SQL_StmtNumColumns(struct SqlStmt *self) {
int hIndex = 0;
size_t retVal___ = 0;
- if( HPMHooks.count.HP_SQL_StmtNumColumns_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtNumColumns_pre > 0) {
size_t (*preHookFunc) (struct SqlStmt **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumColumns_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumColumns_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtNumColumns_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -73815,9 +81840,9 @@ size_t HP_SQL_StmtNumColumns(struct SqlStmt *self) {
{
retVal___ = HPMHooks.source.SQL.StmtNumColumns(self);
}
- if( HPMHooks.count.HP_SQL_StmtNumColumns_post ) {
+ if (HPMHooks.count.HP_SQL_StmtNumColumns_post > 0) {
size_t (*postHookFunc) (size_t retVal___, struct SqlStmt *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumColumns_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumColumns_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtNumColumns_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -73827,14 +81852,14 @@ size_t HP_SQL_StmtNumColumns(struct SqlStmt *self) {
int HP_SQL_StmtBindColumn(struct SqlStmt *self, size_t idx, enum SqlDataType buffer_type, void *buffer, size_t buffer_len, uint32 *out_length, int8 *out_is_null) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_StmtBindColumn_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtBindColumn_pre > 0) {
int (*preHookFunc) (struct SqlStmt **self, size_t *idx, enum SqlDataType *buffer_type, void **buffer, size_t *buffer_len, uint32 **out_length, int8 **out_is_null);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtBindColumn_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtBindColumn_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtBindColumn_pre[hIndex].func;
retVal___ = preHookFunc(&self, &idx, &buffer_type, &buffer, &buffer_len, &out_length, &out_is_null);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -73842,9 +81867,9 @@ int HP_SQL_StmtBindColumn(struct SqlStmt *self, size_t idx, enum SqlDataType buf
{
retVal___ = HPMHooks.source.SQL.StmtBindColumn(self, idx, buffer_type, buffer, buffer_len, out_length, out_is_null);
}
- if( HPMHooks.count.HP_SQL_StmtBindColumn_post ) {
+ if (HPMHooks.count.HP_SQL_StmtBindColumn_post > 0) {
int (*postHookFunc) (int retVal___, struct SqlStmt *self, size_t idx, enum SqlDataType buffer_type, void *buffer, size_t buffer_len, uint32 *out_length, int8 *out_is_null);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtBindColumn_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtBindColumn_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtBindColumn_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, idx, buffer_type, buffer, buffer_len, out_length, out_is_null);
}
@@ -73854,14 +81879,14 @@ int HP_SQL_StmtBindColumn(struct SqlStmt *self, size_t idx, enum SqlDataType buf
uint64 HP_SQL_StmtNumRows(struct SqlStmt *self) {
int hIndex = 0;
uint64 retVal___ = 0;
- if( HPMHooks.count.HP_SQL_StmtNumRows_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtNumRows_pre > 0) {
uint64 (*preHookFunc) (struct SqlStmt **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumRows_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumRows_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtNumRows_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -73869,9 +81894,9 @@ uint64 HP_SQL_StmtNumRows(struct SqlStmt *self) {
{
retVal___ = HPMHooks.source.SQL.StmtNumRows(self);
}
- if( HPMHooks.count.HP_SQL_StmtNumRows_post ) {
+ if (HPMHooks.count.HP_SQL_StmtNumRows_post > 0) {
uint64 (*postHookFunc) (uint64 retVal___, struct SqlStmt *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumRows_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNumRows_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtNumRows_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -73881,14 +81906,14 @@ uint64 HP_SQL_StmtNumRows(struct SqlStmt *self) {
int HP_SQL_StmtNextRow(struct SqlStmt *self) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_SQL_StmtNextRow_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtNextRow_pre > 0) {
int (*preHookFunc) (struct SqlStmt **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNextRow_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNextRow_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtNextRow_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -73896,9 +81921,9 @@ int HP_SQL_StmtNextRow(struct SqlStmt *self) {
{
retVal___ = HPMHooks.source.SQL.StmtNextRow(self);
}
- if( HPMHooks.count.HP_SQL_StmtNextRow_post ) {
+ if (HPMHooks.count.HP_SQL_StmtNextRow_post > 0) {
int (*postHookFunc) (int retVal___, struct SqlStmt *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNextRow_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtNextRow_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtNextRow_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -73907,14 +81932,14 @@ int HP_SQL_StmtNextRow(struct SqlStmt *self) {
}
void HP_SQL_StmtFreeResult(struct SqlStmt *self) {
int hIndex = 0;
- if( HPMHooks.count.HP_SQL_StmtFreeResult_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtFreeResult_pre > 0) {
void (*preHookFunc) (struct SqlStmt **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtFreeResult_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtFreeResult_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtFreeResult_pre[hIndex].func;
preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -73922,9 +81947,9 @@ void HP_SQL_StmtFreeResult(struct SqlStmt *self) {
{
HPMHooks.source.SQL.StmtFreeResult(self);
}
- if( HPMHooks.count.HP_SQL_StmtFreeResult_post ) {
+ if (HPMHooks.count.HP_SQL_StmtFreeResult_post > 0) {
void (*postHookFunc) (struct SqlStmt *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtFreeResult_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtFreeResult_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtFreeResult_post[hIndex].func;
postHookFunc(self);
}
@@ -73933,14 +81958,14 @@ void HP_SQL_StmtFreeResult(struct SqlStmt *self) {
}
void HP_SQL_StmtFree(struct SqlStmt *self) {
int hIndex = 0;
- if( HPMHooks.count.HP_SQL_StmtFree_pre ) {
+ if (HPMHooks.count.HP_SQL_StmtFree_pre > 0) {
void (*preHookFunc) (struct SqlStmt **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtFree_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtFree_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtFree_pre[hIndex].func;
preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -73948,9 +81973,9 @@ void HP_SQL_StmtFree(struct SqlStmt *self) {
{
HPMHooks.source.SQL.StmtFree(self);
}
- if( HPMHooks.count.HP_SQL_StmtFree_post ) {
+ if (HPMHooks.count.HP_SQL_StmtFree_post > 0) {
void (*postHookFunc) (struct SqlStmt *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtFree_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtFree_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtFree_post[hIndex].func;
postHookFunc(self);
}
@@ -73959,14 +81984,14 @@ void HP_SQL_StmtFree(struct SqlStmt *self) {
}
void HP_SQL_StmtShowDebug_(struct SqlStmt *self, const char *debug_file, const unsigned long debug_line) {
int hIndex = 0;
- if( HPMHooks.count.HP_SQL_StmtShowDebug__pre ) {
+ if (HPMHooks.count.HP_SQL_StmtShowDebug__pre > 0) {
void (*preHookFunc) (struct SqlStmt **self, const char **debug_file, const unsigned long *debug_line);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtShowDebug__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtShowDebug__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_SQL_StmtShowDebug__pre[hIndex].func;
preHookFunc(&self, &debug_file, &debug_line);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -73974,9 +81999,9 @@ void HP_SQL_StmtShowDebug_(struct SqlStmt *self, const char *debug_file, const u
{
HPMHooks.source.SQL.StmtShowDebug_(self, debug_file, debug_line);
}
- if( HPMHooks.count.HP_SQL_StmtShowDebug__post ) {
+ if (HPMHooks.count.HP_SQL_StmtShowDebug__post > 0) {
void (*postHookFunc) (struct SqlStmt *self, const char *debug_file, const unsigned long debug_line);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtShowDebug__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_SQL_StmtShowDebug__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_SQL_StmtShowDebug__post[hIndex].func;
postHookFunc(self, debug_file, debug_line);
}
@@ -73987,14 +82012,14 @@ void HP_SQL_StmtShowDebug_(struct SqlStmt *self, const char *debug_file, const u
int HP_status_init(bool minimal) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_init_pre ) {
+ if (HPMHooks.count.HP_status_init_pre > 0) {
int (*preHookFunc) (bool *minimal);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_init_pre[hIndex].func;
retVal___ = preHookFunc(&minimal);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74002,9 +82027,9 @@ int HP_status_init(bool minimal) {
{
retVal___ = HPMHooks.source.status.init(minimal);
}
- if( HPMHooks.count.HP_status_init_post ) {
+ if (HPMHooks.count.HP_status_init_post > 0) {
int (*postHookFunc) (int retVal___, bool minimal);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_init_post[hIndex].func;
retVal___ = postHookFunc(retVal___, minimal);
}
@@ -74013,14 +82038,14 @@ int HP_status_init(bool minimal) {
}
void HP_status_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_status_final_pre ) {
+ if (HPMHooks.count.HP_status_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -74028,38 +82053,38 @@ void HP_status_final(void) {
{
HPMHooks.source.status.final();
}
- if( HPMHooks.count.HP_status_final_post ) {
+ if (HPMHooks.count.HP_status_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_final_post[hIndex].func;
postHookFunc();
}
}
return;
}
-int HP_status_get_refine_chance(enum refine_type wlv, int refine) {
+int HP_status_get_refine_chance(enum refine_type wlv, int refine, enum refine_chance_type type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_get_refine_chance_pre ) {
- int (*preHookFunc) (enum refine_type *wlv, int *refine);
+ if (HPMHooks.count.HP_status_get_refine_chance_pre > 0) {
+ int (*preHookFunc) (enum refine_type *wlv, int *refine, enum refine_chance_type *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_refine_chance_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_refine_chance_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_get_refine_chance_pre[hIndex].func;
- retVal___ = preHookFunc(&wlv, &refine);
+ retVal___ = preHookFunc(&wlv, &refine, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
}
{
- retVal___ = HPMHooks.source.status.get_refine_chance(wlv, refine);
+ retVal___ = HPMHooks.source.status.get_refine_chance(wlv, refine, type);
}
- if( HPMHooks.count.HP_status_get_refine_chance_post ) {
- int (*postHookFunc) (int retVal___, enum refine_type wlv, int refine);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_refine_chance_post; hIndex++ ) {
+ if (HPMHooks.count.HP_status_get_refine_chance_post > 0) {
+ int (*postHookFunc) (int retVal___, enum refine_type wlv, int refine, enum refine_chance_type type);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_refine_chance_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_get_refine_chance_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, wlv, refine);
+ retVal___ = postHookFunc(retVal___, wlv, refine, type);
}
}
return retVal___;
@@ -74067,14 +82092,14 @@ int HP_status_get_refine_chance(enum refine_type wlv, int refine) {
sc_type HP_status_skill2sc(int skill_id) {
int hIndex = 0;
sc_type retVal___ = SC_NONE;
- if( HPMHooks.count.HP_status_skill2sc_pre ) {
+ if (HPMHooks.count.HP_status_skill2sc_pre > 0) {
sc_type (*preHookFunc) (int *skill_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_skill2sc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_skill2sc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_skill2sc_pre[hIndex].func;
retVal___ = preHookFunc(&skill_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74082,9 +82107,9 @@ sc_type HP_status_skill2sc(int skill_id) {
{
retVal___ = HPMHooks.source.status.skill2sc(skill_id);
}
- if( HPMHooks.count.HP_status_skill2sc_post ) {
+ if (HPMHooks.count.HP_status_skill2sc_post > 0) {
sc_type (*postHookFunc) (sc_type retVal___, int skill_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_skill2sc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_skill2sc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_skill2sc_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id);
}
@@ -74094,14 +82119,14 @@ sc_type HP_status_skill2sc(int skill_id) {
int HP_status_sc2skill(sc_type sc) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_sc2skill_pre ) {
+ if (HPMHooks.count.HP_status_sc2skill_pre > 0) {
int (*preHookFunc) (sc_type *sc);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_sc2skill_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_sc2skill_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_sc2skill_pre[hIndex].func;
retVal___ = preHookFunc(&sc);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74109,9 +82134,9 @@ int HP_status_sc2skill(sc_type sc) {
{
retVal___ = HPMHooks.source.status.sc2skill(sc);
}
- if( HPMHooks.count.HP_status_sc2skill_post ) {
+ if (HPMHooks.count.HP_status_sc2skill_post > 0) {
int (*postHookFunc) (int retVal___, sc_type sc);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_sc2skill_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_sc2skill_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_sc2skill_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sc);
}
@@ -74121,14 +82146,14 @@ int HP_status_sc2skill(sc_type sc) {
unsigned int HP_status_sc2scb_flag(sc_type sc) {
int hIndex = 0;
unsigned int retVal___ = 0;
- if( HPMHooks.count.HP_status_sc2scb_flag_pre ) {
+ if (HPMHooks.count.HP_status_sc2scb_flag_pre > 0) {
unsigned int (*preHookFunc) (sc_type *sc);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_sc2scb_flag_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_sc2scb_flag_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_sc2scb_flag_pre[hIndex].func;
retVal___ = preHookFunc(&sc);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74136,9 +82161,9 @@ unsigned int HP_status_sc2scb_flag(sc_type sc) {
{
retVal___ = HPMHooks.source.status.sc2scb_flag(sc);
}
- if( HPMHooks.count.HP_status_sc2scb_flag_post ) {
+ if (HPMHooks.count.HP_status_sc2scb_flag_post > 0) {
unsigned int (*postHookFunc) (unsigned int retVal___, sc_type sc);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_sc2scb_flag_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_sc2scb_flag_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_sc2scb_flag_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sc);
}
@@ -74148,14 +82173,14 @@ unsigned int HP_status_sc2scb_flag(sc_type sc) {
int HP_status_type2relevant_bl_types(int type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_type2relevant_bl_types_pre ) {
+ if (HPMHooks.count.HP_status_type2relevant_bl_types_pre > 0) {
int (*preHookFunc) (int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_type2relevant_bl_types_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_type2relevant_bl_types_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_type2relevant_bl_types_pre[hIndex].func;
retVal___ = preHookFunc(&type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74163,9 +82188,9 @@ int HP_status_type2relevant_bl_types(int type) {
{
retVal___ = HPMHooks.source.status.type2relevant_bl_types(type);
}
- if( HPMHooks.count.HP_status_type2relevant_bl_types_post ) {
+ if (HPMHooks.count.HP_status_type2relevant_bl_types_post > 0) {
int (*postHookFunc) (int retVal___, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_type2relevant_bl_types_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_type2relevant_bl_types_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_type2relevant_bl_types_post[hIndex].func;
retVal___ = postHookFunc(retVal___, type);
}
@@ -74175,14 +82200,14 @@ int HP_status_type2relevant_bl_types(int type) {
int HP_status_get_sc_type(sc_type idx) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_get_sc_type_pre ) {
+ if (HPMHooks.count.HP_status_get_sc_type_pre > 0) {
int (*preHookFunc) (sc_type *idx);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_sc_type_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_sc_type_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_get_sc_type_pre[hIndex].func;
retVal___ = preHookFunc(&idx);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74190,9 +82215,9 @@ int HP_status_get_sc_type(sc_type idx) {
{
retVal___ = HPMHooks.source.status.get_sc_type(idx);
}
- if( HPMHooks.count.HP_status_get_sc_type_post ) {
+ if (HPMHooks.count.HP_status_get_sc_type_post > 0) {
int (*postHookFunc) (int retVal___, sc_type idx);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_sc_type_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_sc_type_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_get_sc_type_post[hIndex].func;
retVal___ = postHookFunc(retVal___, idx);
}
@@ -74202,14 +82227,14 @@ int HP_status_get_sc_type(sc_type idx) {
int HP_status_damage(struct block_list *src, struct block_list *target, int64 hp, int64 sp, int walkdelay, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_damage_pre ) {
+ if (HPMHooks.count.HP_status_damage_pre > 0) {
int (*preHookFunc) (struct block_list **src, struct block_list **target, int64 *hp, int64 *sp, int *walkdelay, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_damage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_damage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_damage_pre[hIndex].func;
retVal___ = preHookFunc(&src, &target, &hp, &sp, &walkdelay, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74217,9 +82242,9 @@ int HP_status_damage(struct block_list *src, struct block_list *target, int64 hp
{
retVal___ = HPMHooks.source.status.damage(src, target, hp, sp, walkdelay, flag);
}
- if( HPMHooks.count.HP_status_damage_post ) {
+ if (HPMHooks.count.HP_status_damage_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src, struct block_list *target, int64 hp, int64 sp, int walkdelay, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_damage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_damage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_damage_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, target, hp, sp, walkdelay, flag);
}
@@ -74229,14 +82254,14 @@ int HP_status_damage(struct block_list *src, struct block_list *target, int64 hp
int HP_status_charge(struct block_list *bl, int64 hp, int64 sp) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_charge_pre ) {
+ if (HPMHooks.count.HP_status_charge_pre > 0) {
int (*preHookFunc) (struct block_list **bl, int64 *hp, int64 *sp);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_charge_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_charge_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_charge_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &hp, &sp);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74244,9 +82269,9 @@ int HP_status_charge(struct block_list *bl, int64 hp, int64 sp) {
{
retVal___ = HPMHooks.source.status.charge(bl, hp, sp);
}
- if( HPMHooks.count.HP_status_charge_post ) {
+ if (HPMHooks.count.HP_status_charge_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, int64 hp, int64 sp);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_charge_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_charge_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_charge_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, hp, sp);
}
@@ -74256,14 +82281,14 @@ int HP_status_charge(struct block_list *bl, int64 hp, int64 sp) {
int HP_status_percent_change(struct block_list *src, struct block_list *target, signed char hp_rate, signed char sp_rate, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_percent_change_pre ) {
+ if (HPMHooks.count.HP_status_percent_change_pre > 0) {
int (*preHookFunc) (struct block_list **src, struct block_list **target, signed char *hp_rate, signed char *sp_rate, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_percent_change_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_percent_change_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_percent_change_pre[hIndex].func;
retVal___ = preHookFunc(&src, &target, &hp_rate, &sp_rate, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74271,26 +82296,26 @@ int HP_status_percent_change(struct block_list *src, struct block_list *target,
{
retVal___ = HPMHooks.source.status.percent_change(src, target, hp_rate, sp_rate, flag);
}
- if( HPMHooks.count.HP_status_percent_change_post ) {
+ if (HPMHooks.count.HP_status_percent_change_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src, struct block_list *target, signed char hp_rate, signed char sp_rate, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_percent_change_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_percent_change_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_percent_change_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, target, hp_rate, sp_rate, flag);
}
}
return retVal___;
}
-int HP_status_set_hp(struct block_list *bl, unsigned int hp, int flag) {
+int HP_status_set_hp(struct block_list *bl, unsigned int hp, enum status_heal_flag flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_set_hp_pre ) {
- int (*preHookFunc) (struct block_list **bl, unsigned int *hp, int *flag);
+ if (HPMHooks.count.HP_status_set_hp_pre > 0) {
+ int (*preHookFunc) (struct block_list **bl, unsigned int *hp, enum status_heal_flag *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_set_hp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_set_hp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_set_hp_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &hp, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74298,26 +82323,26 @@ int HP_status_set_hp(struct block_list *bl, unsigned int hp, int flag) {
{
retVal___ = HPMHooks.source.status.set_hp(bl, hp, flag);
}
- if( HPMHooks.count.HP_status_set_hp_post ) {
- int (*postHookFunc) (int retVal___, struct block_list *bl, unsigned int hp, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_set_hp_post; hIndex++ ) {
+ if (HPMHooks.count.HP_status_set_hp_post > 0) {
+ int (*postHookFunc) (int retVal___, struct block_list *bl, unsigned int hp, enum status_heal_flag flag);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_set_hp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_set_hp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, hp, flag);
}
}
return retVal___;
}
-int HP_status_set_sp(struct block_list *bl, unsigned int sp, int flag) {
+int HP_status_set_sp(struct block_list *bl, unsigned int sp, enum status_heal_flag flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_set_sp_pre ) {
- int (*preHookFunc) (struct block_list **bl, unsigned int *sp, int *flag);
+ if (HPMHooks.count.HP_status_set_sp_pre > 0) {
+ int (*preHookFunc) (struct block_list **bl, unsigned int *sp, enum status_heal_flag *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_set_sp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_set_sp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_set_sp_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sp, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74325,26 +82350,26 @@ int HP_status_set_sp(struct block_list *bl, unsigned int sp, int flag) {
{
retVal___ = HPMHooks.source.status.set_sp(bl, sp, flag);
}
- if( HPMHooks.count.HP_status_set_sp_post ) {
- int (*postHookFunc) (int retVal___, struct block_list *bl, unsigned int sp, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_set_sp_post; hIndex++ ) {
+ if (HPMHooks.count.HP_status_set_sp_post > 0) {
+ int (*postHookFunc) (int retVal___, struct block_list *bl, unsigned int sp, enum status_heal_flag flag);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_set_sp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_set_sp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sp, flag);
}
}
return retVal___;
}
-int HP_status_heal(struct block_list *bl, int64 hp, int64 sp, int flag) {
+int HP_status_heal(struct block_list *bl, int64 hp, int64 sp, enum status_heal_flag flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_heal_pre ) {
- int (*preHookFunc) (struct block_list **bl, int64 *hp, int64 *sp, int *flag);
+ if (HPMHooks.count.HP_status_heal_pre > 0) {
+ int (*preHookFunc) (struct block_list **bl, int64 *hp, int64 *sp, enum status_heal_flag *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_heal_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_heal_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_heal_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &hp, &sp, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74352,9 +82377,9 @@ int HP_status_heal(struct block_list *bl, int64 hp, int64 sp, int flag) {
{
retVal___ = HPMHooks.source.status.heal(bl, hp, sp, flag);
}
- if( HPMHooks.count.HP_status_heal_post ) {
- int (*postHookFunc) (int retVal___, struct block_list *bl, int64 hp, int64 sp, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_heal_post; hIndex++ ) {
+ if (HPMHooks.count.HP_status_heal_post > 0) {
+ int (*postHookFunc) (int retVal___, struct block_list *bl, int64 hp, int64 sp, enum status_heal_flag flag);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_heal_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_heal_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, hp, sp, flag);
}
@@ -74364,14 +82389,14 @@ int HP_status_heal(struct block_list *bl, int64 hp, int64 sp, int flag) {
int HP_status_revive(struct block_list *bl, unsigned char per_hp, unsigned char per_sp) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_revive_pre ) {
+ if (HPMHooks.count.HP_status_revive_pre > 0) {
int (*preHookFunc) (struct block_list **bl, unsigned char *per_hp, unsigned char *per_sp);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_revive_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_revive_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_revive_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &per_hp, &per_sp);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74379,9 +82404,9 @@ int HP_status_revive(struct block_list *bl, unsigned char per_hp, unsigned char
{
retVal___ = HPMHooks.source.status.revive(bl, per_hp, per_sp);
}
- if( HPMHooks.count.HP_status_revive_post ) {
+ if (HPMHooks.count.HP_status_revive_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, unsigned char per_hp, unsigned char per_sp);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_revive_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_revive_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_revive_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, per_hp, per_sp);
}
@@ -74391,14 +82416,14 @@ int HP_status_revive(struct block_list *bl, unsigned char per_hp, unsigned char
int HP_status_fixed_revive(struct block_list *bl, unsigned int per_hp, unsigned int per_sp) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_fixed_revive_pre ) {
+ if (HPMHooks.count.HP_status_fixed_revive_pre > 0) {
int (*preHookFunc) (struct block_list **bl, unsigned int *per_hp, unsigned int *per_sp);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_fixed_revive_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_fixed_revive_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_fixed_revive_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &per_hp, &per_sp);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74406,9 +82431,9 @@ int HP_status_fixed_revive(struct block_list *bl, unsigned int per_hp, unsigned
{
retVal___ = HPMHooks.source.status.fixed_revive(bl, per_hp, per_sp);
}
- if( HPMHooks.count.HP_status_fixed_revive_post ) {
+ if (HPMHooks.count.HP_status_fixed_revive_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, unsigned int per_hp, unsigned int per_sp);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_fixed_revive_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_fixed_revive_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_fixed_revive_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, per_hp, per_sp);
}
@@ -74418,14 +82443,14 @@ int HP_status_fixed_revive(struct block_list *bl, unsigned int per_hp, unsigned
struct regen_data* HP_status_get_regen_data(struct block_list *bl) {
int hIndex = 0;
struct regen_data* retVal___ = NULL;
- if( HPMHooks.count.HP_status_get_regen_data_pre ) {
+ if (HPMHooks.count.HP_status_get_regen_data_pre > 0) {
struct regen_data* (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_regen_data_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_regen_data_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_get_regen_data_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74433,9 +82458,9 @@ struct regen_data* HP_status_get_regen_data(struct block_list *bl) {
{
retVal___ = HPMHooks.source.status.get_regen_data(bl);
}
- if( HPMHooks.count.HP_status_get_regen_data_post ) {
+ if (HPMHooks.count.HP_status_get_regen_data_post > 0) {
struct regen_data* (*postHookFunc) (struct regen_data* retVal___, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_regen_data_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_regen_data_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_get_regen_data_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -74445,14 +82470,14 @@ struct regen_data* HP_status_get_regen_data(struct block_list *bl) {
struct status_data* HP_status_get_status_data(struct block_list *bl) {
int hIndex = 0;
struct status_data* retVal___ = NULL;
- if( HPMHooks.count.HP_status_get_status_data_pre ) {
+ if (HPMHooks.count.HP_status_get_status_data_pre > 0) {
struct status_data* (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_status_data_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_status_data_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_get_status_data_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74460,9 +82485,9 @@ struct status_data* HP_status_get_status_data(struct block_list *bl) {
{
retVal___ = HPMHooks.source.status.get_status_data(bl);
}
- if( HPMHooks.count.HP_status_get_status_data_post ) {
+ if (HPMHooks.count.HP_status_get_status_data_post > 0) {
struct status_data* (*postHookFunc) (struct status_data* retVal___, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_status_data_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_status_data_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_get_status_data_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -74472,14 +82497,14 @@ struct status_data* HP_status_get_status_data(struct block_list *bl) {
struct status_data* HP_status_get_base_status(struct block_list *bl) {
int hIndex = 0;
struct status_data* retVal___ = NULL;
- if( HPMHooks.count.HP_status_get_base_status_pre ) {
+ if (HPMHooks.count.HP_status_get_base_status_pre > 0) {
struct status_data* (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_base_status_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_base_status_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_get_base_status_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74487,9 +82512,9 @@ struct status_data* HP_status_get_base_status(struct block_list *bl) {
{
retVal___ = HPMHooks.source.status.get_base_status(bl);
}
- if( HPMHooks.count.HP_status_get_base_status_post ) {
+ if (HPMHooks.count.HP_status_get_base_status_post > 0) {
struct status_data* (*postHookFunc) (struct status_data* retVal___, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_base_status_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_base_status_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_get_base_status_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -74499,14 +82524,14 @@ struct status_data* HP_status_get_base_status(struct block_list *bl) {
const char* HP_status_get_name(const struct block_list *bl) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_status_get_name_pre ) {
+ if (HPMHooks.count.HP_status_get_name_pre > 0) {
const char* (*preHookFunc) (const struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_name_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_name_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_get_name_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74514,9 +82539,9 @@ const char* HP_status_get_name(const struct block_list *bl) {
{
retVal___ = HPMHooks.source.status.get_name(bl);
}
- if( HPMHooks.count.HP_status_get_name_post ) {
+ if (HPMHooks.count.HP_status_get_name_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_name_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_name_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_get_name_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -74526,14 +82551,14 @@ const char* HP_status_get_name(const struct block_list *bl) {
int HP_status_get_class(const struct block_list *bl) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_get_class_pre ) {
+ if (HPMHooks.count.HP_status_get_class_pre > 0) {
int (*preHookFunc) (const struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_class_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_class_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_get_class_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74541,9 +82566,9 @@ int HP_status_get_class(const struct block_list *bl) {
{
retVal___ = HPMHooks.source.status.get_class(bl);
}
- if( HPMHooks.count.HP_status_get_class_post ) {
+ if (HPMHooks.count.HP_status_get_class_post > 0) {
int (*postHookFunc) (int retVal___, const struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_class_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_class_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_get_class_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -74553,14 +82578,14 @@ int HP_status_get_class(const struct block_list *bl) {
int HP_status_get_lv(const struct block_list *bl) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_get_lv_pre ) {
+ if (HPMHooks.count.HP_status_get_lv_pre > 0) {
int (*preHookFunc) (const struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_lv_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_lv_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_get_lv_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74568,9 +82593,9 @@ int HP_status_get_lv(const struct block_list *bl) {
{
retVal___ = HPMHooks.source.status.get_lv(bl);
}
- if( HPMHooks.count.HP_status_get_lv_post ) {
+ if (HPMHooks.count.HP_status_get_lv_post > 0) {
int (*postHookFunc) (int retVal___, const struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_lv_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_lv_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_get_lv_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -74580,14 +82605,14 @@ int HP_status_get_lv(const struct block_list *bl) {
defType HP_status_get_def(struct block_list *bl) {
int hIndex = 0;
defType retVal___ = 0;
- if( HPMHooks.count.HP_status_get_def_pre ) {
+ if (HPMHooks.count.HP_status_get_def_pre > 0) {
defType (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_def_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_def_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_get_def_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74595,9 +82620,9 @@ defType HP_status_get_def(struct block_list *bl) {
{
retVal___ = HPMHooks.source.status.get_def(bl);
}
- if( HPMHooks.count.HP_status_get_def_post ) {
+ if (HPMHooks.count.HP_status_get_def_post > 0) {
defType (*postHookFunc) (defType retVal___, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_def_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_def_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_get_def_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -74607,14 +82632,14 @@ defType HP_status_get_def(struct block_list *bl) {
unsigned short HP_status_get_speed(struct block_list *bl) {
int hIndex = 0;
unsigned short retVal___ = 0;
- if( HPMHooks.count.HP_status_get_speed_pre ) {
+ if (HPMHooks.count.HP_status_get_speed_pre > 0) {
unsigned short (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_speed_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_speed_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_get_speed_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74622,9 +82647,9 @@ unsigned short HP_status_get_speed(struct block_list *bl) {
{
retVal___ = HPMHooks.source.status.get_speed(bl);
}
- if( HPMHooks.count.HP_status_get_speed_post ) {
+ if (HPMHooks.count.HP_status_get_speed_post > 0) {
unsigned short (*postHookFunc) (unsigned short retVal___, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_speed_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_speed_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_get_speed_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -74634,14 +82659,14 @@ unsigned short HP_status_get_speed(struct block_list *bl) {
unsigned char HP_status_calc_attack_element(struct block_list *bl, struct status_change *sc, int element) {
int hIndex = 0;
unsigned char retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_attack_element_pre ) {
+ if (HPMHooks.count.HP_status_calc_attack_element_pre > 0) {
unsigned char (*preHookFunc) (struct block_list **bl, struct status_change **sc, int *element);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_attack_element_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_attack_element_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_attack_element_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sc, &element);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74649,9 +82674,9 @@ unsigned char HP_status_calc_attack_element(struct block_list *bl, struct status
{
retVal___ = HPMHooks.source.status.calc_attack_element(bl, sc, element);
}
- if( HPMHooks.count.HP_status_calc_attack_element_post ) {
+ if (HPMHooks.count.HP_status_calc_attack_element_post > 0) {
unsigned char (*postHookFunc) (unsigned char retVal___, struct block_list *bl, struct status_change *sc, int element);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_attack_element_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_attack_element_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_attack_element_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sc, element);
}
@@ -74661,14 +82686,14 @@ unsigned char HP_status_calc_attack_element(struct block_list *bl, struct status
int HP_status_get_party_id(const struct block_list *bl) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_get_party_id_pre ) {
+ if (HPMHooks.count.HP_status_get_party_id_pre > 0) {
int (*preHookFunc) (const struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_party_id_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_party_id_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_get_party_id_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74676,9 +82701,9 @@ int HP_status_get_party_id(const struct block_list *bl) {
{
retVal___ = HPMHooks.source.status.get_party_id(bl);
}
- if( HPMHooks.count.HP_status_get_party_id_post ) {
+ if (HPMHooks.count.HP_status_get_party_id_post > 0) {
int (*postHookFunc) (int retVal___, const struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_party_id_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_party_id_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_get_party_id_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -74688,14 +82713,14 @@ int HP_status_get_party_id(const struct block_list *bl) {
int HP_status_get_guild_id(const struct block_list *bl) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_get_guild_id_pre ) {
+ if (HPMHooks.count.HP_status_get_guild_id_pre > 0) {
int (*preHookFunc) (const struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_guild_id_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_guild_id_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_get_guild_id_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74703,9 +82728,9 @@ int HP_status_get_guild_id(const struct block_list *bl) {
{
retVal___ = HPMHooks.source.status.get_guild_id(bl);
}
- if( HPMHooks.count.HP_status_get_guild_id_post ) {
+ if (HPMHooks.count.HP_status_get_guild_id_post > 0) {
int (*postHookFunc) (int retVal___, const struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_guild_id_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_guild_id_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_get_guild_id_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -74715,14 +82740,14 @@ int HP_status_get_guild_id(const struct block_list *bl) {
int HP_status_get_emblem_id(const struct block_list *bl) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_get_emblem_id_pre ) {
+ if (HPMHooks.count.HP_status_get_emblem_id_pre > 0) {
int (*preHookFunc) (const struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_emblem_id_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_emblem_id_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_get_emblem_id_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74730,9 +82755,9 @@ int HP_status_get_emblem_id(const struct block_list *bl) {
{
retVal___ = HPMHooks.source.status.get_emblem_id(bl);
}
- if( HPMHooks.count.HP_status_get_emblem_id_post ) {
+ if (HPMHooks.count.HP_status_get_emblem_id_post > 0) {
int (*postHookFunc) (int retVal___, const struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_emblem_id_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_emblem_id_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_get_emblem_id_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -74742,14 +82767,14 @@ int HP_status_get_emblem_id(const struct block_list *bl) {
int HP_status_get_mexp(const struct block_list *bl) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_get_mexp_pre ) {
+ if (HPMHooks.count.HP_status_get_mexp_pre > 0) {
int (*preHookFunc) (const struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_mexp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_mexp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_get_mexp_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74757,9 +82782,9 @@ int HP_status_get_mexp(const struct block_list *bl) {
{
retVal___ = HPMHooks.source.status.get_mexp(bl);
}
- if( HPMHooks.count.HP_status_get_mexp_post ) {
+ if (HPMHooks.count.HP_status_get_mexp_post > 0) {
int (*postHookFunc) (int retVal___, const struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_mexp_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_mexp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_get_mexp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -74769,14 +82794,14 @@ int HP_status_get_mexp(const struct block_list *bl) {
int HP_status_get_race2(const struct block_list *bl) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_get_race2_pre ) {
+ if (HPMHooks.count.HP_status_get_race2_pre > 0) {
int (*preHookFunc) (const struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_race2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_race2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_get_race2_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74784,9 +82809,9 @@ int HP_status_get_race2(const struct block_list *bl) {
{
retVal___ = HPMHooks.source.status.get_race2(bl);
}
- if( HPMHooks.count.HP_status_get_race2_post ) {
+ if (HPMHooks.count.HP_status_get_race2_post > 0) {
int (*postHookFunc) (int retVal___, const struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_race2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_race2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_get_race2_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -74796,14 +82821,14 @@ int HP_status_get_race2(const struct block_list *bl) {
struct view_data* HP_status_get_viewdata(struct block_list *bl) {
int hIndex = 0;
struct view_data* retVal___ = NULL;
- if( HPMHooks.count.HP_status_get_viewdata_pre ) {
+ if (HPMHooks.count.HP_status_get_viewdata_pre > 0) {
struct view_data* (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_viewdata_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_viewdata_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_get_viewdata_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74811,9 +82836,9 @@ struct view_data* HP_status_get_viewdata(struct block_list *bl) {
{
retVal___ = HPMHooks.source.status.get_viewdata(bl);
}
- if( HPMHooks.count.HP_status_get_viewdata_post ) {
+ if (HPMHooks.count.HP_status_get_viewdata_post > 0) {
struct view_data* (*postHookFunc) (struct view_data* retVal___, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_viewdata_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_viewdata_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_get_viewdata_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -74822,14 +82847,14 @@ struct view_data* HP_status_get_viewdata(struct block_list *bl) {
}
void HP_status_set_viewdata(struct block_list *bl, int class_) {
int hIndex = 0;
- if( HPMHooks.count.HP_status_set_viewdata_pre ) {
+ if (HPMHooks.count.HP_status_set_viewdata_pre > 0) {
void (*preHookFunc) (struct block_list **bl, int *class_);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_set_viewdata_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_set_viewdata_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_set_viewdata_pre[hIndex].func;
preHookFunc(&bl, &class_);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -74837,9 +82862,9 @@ void HP_status_set_viewdata(struct block_list *bl, int class_) {
{
HPMHooks.source.status.set_viewdata(bl, class_);
}
- if( HPMHooks.count.HP_status_set_viewdata_post ) {
+ if (HPMHooks.count.HP_status_set_viewdata_post > 0) {
void (*postHookFunc) (struct block_list *bl, int class_);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_set_viewdata_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_set_viewdata_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_set_viewdata_post[hIndex].func;
postHookFunc(bl, class_);
}
@@ -74848,14 +82873,14 @@ void HP_status_set_viewdata(struct block_list *bl, int class_) {
}
void HP_status_change_init(struct block_list *bl) {
int hIndex = 0;
- if( HPMHooks.count.HP_status_change_init_pre ) {
+ if (HPMHooks.count.HP_status_change_init_pre > 0) {
void (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_change_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_change_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_change_init_pre[hIndex].func;
preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -74863,9 +82888,9 @@ void HP_status_change_init(struct block_list *bl) {
{
HPMHooks.source.status.change_init(bl);
}
- if( HPMHooks.count.HP_status_change_init_post ) {
+ if (HPMHooks.count.HP_status_change_init_post > 0) {
void (*postHookFunc) (struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_change_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_change_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_change_init_post[hIndex].func;
postHookFunc(bl);
}
@@ -74875,14 +82900,14 @@ void HP_status_change_init(struct block_list *bl) {
struct status_change* HP_status_get_sc(struct block_list *bl) {
int hIndex = 0;
struct status_change* retVal___ = NULL;
- if( HPMHooks.count.HP_status_get_sc_pre ) {
+ if (HPMHooks.count.HP_status_get_sc_pre > 0) {
struct status_change* (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_sc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_sc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_get_sc_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74890,9 +82915,9 @@ struct status_change* HP_status_get_sc(struct block_list *bl) {
{
retVal___ = HPMHooks.source.status.get_sc(bl);
}
- if( HPMHooks.count.HP_status_get_sc_post ) {
+ if (HPMHooks.count.HP_status_get_sc_post > 0) {
struct status_change* (*postHookFunc) (struct status_change* retVal___, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_sc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_sc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_get_sc_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -74902,14 +82927,14 @@ struct status_change* HP_status_get_sc(struct block_list *bl) {
int HP_status_isdead(struct block_list *bl) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_isdead_pre ) {
+ if (HPMHooks.count.HP_status_isdead_pre > 0) {
int (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_isdead_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_isdead_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_isdead_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74917,9 +82942,9 @@ int HP_status_isdead(struct block_list *bl) {
{
retVal___ = HPMHooks.source.status.isdead(bl);
}
- if( HPMHooks.count.HP_status_isdead_post ) {
+ if (HPMHooks.count.HP_status_isdead_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_isdead_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_isdead_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_isdead_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -74929,14 +82954,14 @@ int HP_status_isdead(struct block_list *bl) {
int HP_status_isimmune(struct block_list *bl) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_isimmune_pre ) {
+ if (HPMHooks.count.HP_status_isimmune_pre > 0) {
int (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_isimmune_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_isimmune_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_isimmune_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74944,9 +82969,9 @@ int HP_status_isimmune(struct block_list *bl) {
{
retVal___ = HPMHooks.source.status.isimmune(bl);
}
- if( HPMHooks.count.HP_status_isimmune_post ) {
+ if (HPMHooks.count.HP_status_isimmune_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_isimmune_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_isimmune_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_isimmune_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -74956,14 +82981,14 @@ int HP_status_isimmune(struct block_list *bl) {
int HP_status_get_sc_def(struct block_list *src, struct block_list *bl, enum sc_type type, int rate, int tick, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_get_sc_def_pre ) {
+ if (HPMHooks.count.HP_status_get_sc_def_pre > 0) {
int (*preHookFunc) (struct block_list **src, struct block_list **bl, enum sc_type *type, int *rate, int *tick, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_sc_def_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_sc_def_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_get_sc_def_pre[hIndex].func;
retVal___ = preHookFunc(&src, &bl, &type, &rate, &tick, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74971,9 +82996,9 @@ int HP_status_get_sc_def(struct block_list *src, struct block_list *bl, enum sc_
{
retVal___ = HPMHooks.source.status.get_sc_def(src, bl, type, rate, tick, flag);
}
- if( HPMHooks.count.HP_status_get_sc_def_post ) {
+ if (HPMHooks.count.HP_status_get_sc_def_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src, struct block_list *bl, enum sc_type type, int rate, int tick, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_sc_def_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_sc_def_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_get_sc_def_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, bl, type, rate, tick, flag);
}
@@ -74983,14 +83008,14 @@ int HP_status_get_sc_def(struct block_list *src, struct block_list *bl, enum sc_
int HP_status_change_start(struct block_list *src, struct block_list *bl, enum sc_type type, int rate, int val1, int val2, int val3, int val4, int tick, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_change_start_pre ) {
+ if (HPMHooks.count.HP_status_change_start_pre > 0) {
int (*preHookFunc) (struct block_list **src, struct block_list **bl, enum sc_type *type, int *rate, int *val1, int *val2, int *val3, int *val4, int *tick, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_change_start_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_change_start_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_change_start_pre[hIndex].func;
retVal___ = preHookFunc(&src, &bl, &type, &rate, &val1, &val2, &val3, &val4, &tick, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -74998,9 +83023,9 @@ int HP_status_change_start(struct block_list *src, struct block_list *bl, enum s
{
retVal___ = HPMHooks.source.status.change_start(src, bl, type, rate, val1, val2, val3, val4, tick, flag);
}
- if( HPMHooks.count.HP_status_change_start_post ) {
+ if (HPMHooks.count.HP_status_change_start_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src, struct block_list *bl, enum sc_type type, int rate, int val1, int val2, int val3, int val4, int tick, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_change_start_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_change_start_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_change_start_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, bl, type, rate, val1, val2, val3, val4, tick, flag);
}
@@ -75010,14 +83035,14 @@ int HP_status_change_start(struct block_list *src, struct block_list *bl, enum s
int HP_status_change_end_(struct block_list *bl, enum sc_type type, int tid, const char *file, int line) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_change_end__pre ) {
+ if (HPMHooks.count.HP_status_change_end__pre > 0) {
int (*preHookFunc) (struct block_list **bl, enum sc_type *type, int *tid, const char **file, int *line);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_change_end__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_change_end__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_change_end__pre[hIndex].func;
retVal___ = preHookFunc(&bl, &type, &tid, &file, &line);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -75025,26 +83050,240 @@ int HP_status_change_end_(struct block_list *bl, enum sc_type type, int tid, con
{
retVal___ = HPMHooks.source.status.change_end_(bl, type, tid, file, line);
}
- if( HPMHooks.count.HP_status_change_end__post ) {
+ if (HPMHooks.count.HP_status_change_end__post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, enum sc_type type, int tid, const char *file, int line);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_change_end__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_change_end__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_change_end__post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, type, tid, file, line);
}
}
return retVal___;
}
+bool HP_status_is_immune_to_status(struct status_change *sc, enum sc_type type) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_status_is_immune_to_status_pre > 0) {
+ bool (*preHookFunc) (struct status_change **sc, enum sc_type *type);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_is_immune_to_status_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_status_is_immune_to_status_pre[hIndex].func;
+ retVal___ = preHookFunc(&sc, &type);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.status.is_immune_to_status(sc, type);
+ }
+ if (HPMHooks.count.HP_status_is_immune_to_status_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct status_change *sc, enum sc_type type);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_is_immune_to_status_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_status_is_immune_to_status_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sc, type);
+ }
+ }
+ return retVal___;
+}
+bool HP_status_is_boss_resist_sc(enum sc_type type) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_status_is_boss_resist_sc_pre > 0) {
+ bool (*preHookFunc) (enum sc_type *type);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_is_boss_resist_sc_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_status_is_boss_resist_sc_pre[hIndex].func;
+ retVal___ = preHookFunc(&type);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.status.is_boss_resist_sc(type);
+ }
+ if (HPMHooks.count.HP_status_is_boss_resist_sc_post > 0) {
+ bool (*postHookFunc) (bool retVal___, enum sc_type type);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_is_boss_resist_sc_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_status_is_boss_resist_sc_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, type);
+ }
+ }
+ return retVal___;
+}
+bool HP_status_end_sc_before_start(struct block_list *bl, struct status_data *st, struct status_change *sc, enum sc_type type, int undead_flag, int val1, int val2, int val3, int val4) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_status_end_sc_before_start_pre > 0) {
+ bool (*preHookFunc) (struct block_list **bl, struct status_data **st, struct status_change **sc, enum sc_type *type, int *undead_flag, int *val1, int *val2, int *val3, int *val4);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_end_sc_before_start_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_status_end_sc_before_start_pre[hIndex].func;
+ retVal___ = preHookFunc(&bl, &st, &sc, &type, &undead_flag, &val1, &val2, &val3, &val4);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.status.end_sc_before_start(bl, st, sc, type, undead_flag, val1, val2, val3, val4);
+ }
+ if (HPMHooks.count.HP_status_end_sc_before_start_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct block_list *bl, struct status_data *st, struct status_change *sc, enum sc_type type, int undead_flag, int val1, int val2, int val3, int val4);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_end_sc_before_start_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_status_end_sc_before_start_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, bl, st, sc, type, undead_flag, val1, val2, val3, val4);
+ }
+ }
+ return retVal___;
+}
+void HP_status_change_start_stop_action(struct block_list *bl, enum sc_type type) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_status_change_start_stop_action_pre > 0) {
+ void (*preHookFunc) (struct block_list **bl, enum sc_type *type);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_change_start_stop_action_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_status_change_start_stop_action_pre[hIndex].func;
+ preHookFunc(&bl, &type);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.status.change_start_stop_action(bl, type);
+ }
+ if (HPMHooks.count.HP_status_change_start_stop_action_post > 0) {
+ void (*postHookFunc) (struct block_list *bl, enum sc_type type);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_change_start_stop_action_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_status_change_start_stop_action_post[hIndex].func;
+ postHookFunc(bl, type);
+ }
+ }
+ return;
+}
+int HP_status_change_start_set_option(struct block_list *bl, struct status_change *sc, enum sc_type type, int val1, int val2, int val3, int val4) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_status_change_start_set_option_pre > 0) {
+ int (*preHookFunc) (struct block_list **bl, struct status_change **sc, enum sc_type *type, int *val1, int *val2, int *val3, int *val4);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_change_start_set_option_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_status_change_start_set_option_pre[hIndex].func;
+ retVal___ = preHookFunc(&bl, &sc, &type, &val1, &val2, &val3, &val4);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.status.change_start_set_option(bl, sc, type, val1, val2, val3, val4);
+ }
+ if (HPMHooks.count.HP_status_change_start_set_option_post > 0) {
+ int (*postHookFunc) (int retVal___, struct block_list *bl, struct status_change *sc, enum sc_type type, int val1, int val2, int val3, int val4);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_change_start_set_option_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_status_change_start_set_option_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, bl, sc, type, val1, val2, val3, val4);
+ }
+ }
+ return retVal___;
+}
+int HP_status_get_val_flag(enum sc_type type) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_status_get_val_flag_pre > 0) {
+ int (*preHookFunc) (enum sc_type *type);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_val_flag_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_status_get_val_flag_pre[hIndex].func;
+ retVal___ = preHookFunc(&type);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.status.get_val_flag(type);
+ }
+ if (HPMHooks.count.HP_status_get_val_flag_post > 0) {
+ int (*postHookFunc) (int retVal___, enum sc_type type);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_val_flag_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_status_get_val_flag_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, type);
+ }
+ }
+ return retVal___;
+}
+void HP_status_change_start_display(struct map_session_data *sd, enum sc_type type, int val1, int val2, int val3, int val4) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_status_change_start_display_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, enum sc_type *type, int *val1, int *val2, int *val3, int *val4);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_change_start_display_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_status_change_start_display_pre[hIndex].func;
+ preHookFunc(&sd, &type, &val1, &val2, &val3, &val4);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.status.change_start_display(sd, type, val1, val2, val3, val4);
+ }
+ if (HPMHooks.count.HP_status_change_start_display_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, enum sc_type type, int val1, int val2, int val3, int val4);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_change_start_display_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_status_change_start_display_post[hIndex].func;
+ postHookFunc(sd, type, val1, val2, val3, val4);
+ }
+ }
+ return;
+}
+bool HP_status_change_start_unknown_sc(struct block_list *src, struct block_list *bl, enum sc_type type, int calc_flag, int rate, int val1, int val2, int val3, int val4, int tick, int flag) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_status_change_start_unknown_sc_pre > 0) {
+ bool (*preHookFunc) (struct block_list **src, struct block_list **bl, enum sc_type *type, int *calc_flag, int *rate, int *val1, int *val2, int *val3, int *val4, int *tick, int *flag);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_change_start_unknown_sc_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_status_change_start_unknown_sc_pre[hIndex].func;
+ retVal___ = preHookFunc(&src, &bl, &type, &calc_flag, &rate, &val1, &val2, &val3, &val4, &tick, &flag);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.status.change_start_unknown_sc(src, bl, type, calc_flag, rate, val1, val2, val3, val4, tick, flag);
+ }
+ if (HPMHooks.count.HP_status_change_start_unknown_sc_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct block_list *src, struct block_list *bl, enum sc_type type, int calc_flag, int rate, int val1, int val2, int val3, int val4, int tick, int flag);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_change_start_unknown_sc_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_status_change_start_unknown_sc_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, src, bl, type, calc_flag, rate, val1, val2, val3, val4, tick, flag);
+ }
+ }
+ return retVal___;
+}
int HP_status_kaahi_heal_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_kaahi_heal_timer_pre ) {
+ if (HPMHooks.count.HP_status_kaahi_heal_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_kaahi_heal_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_kaahi_heal_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_kaahi_heal_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -75052,9 +83291,9 @@ int HP_status_kaahi_heal_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.status.kaahi_heal_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_status_kaahi_heal_timer_post ) {
+ if (HPMHooks.count.HP_status_kaahi_heal_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_kaahi_heal_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_kaahi_heal_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_kaahi_heal_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -75064,14 +83303,14 @@ int HP_status_kaahi_heal_timer(int tid, int64 tick, int id, intptr_t data) {
int HP_status_change_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_change_timer_pre ) {
+ if (HPMHooks.count.HP_status_change_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_change_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_change_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_change_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -75079,9 +83318,9 @@ int HP_status_change_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.status.change_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_status_change_timer_post ) {
+ if (HPMHooks.count.HP_status_change_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_change_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_change_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_change_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -75091,16 +83330,16 @@ int HP_status_change_timer(int tid, int64 tick, int id, intptr_t data) {
int HP_status_change_timer_sub(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_change_timer_sub_pre ) {
+ if (HPMHooks.count.HP_status_change_timer_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_change_timer_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_change_timer_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_status_change_timer_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -75110,9 +83349,9 @@ int HP_status_change_timer_sub(struct block_list *bl, va_list ap) {
retVal___ = HPMHooks.source.status.change_timer_sub(bl, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_status_change_timer_sub_post ) {
+ if (HPMHooks.count.HP_status_change_timer_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_change_timer_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_change_timer_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_status_change_timer_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, ap___copy);
@@ -75124,14 +83363,14 @@ int HP_status_change_timer_sub(struct block_list *bl, va_list ap) {
int HP_status_change_clear(struct block_list *bl, int type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_change_clear_pre ) {
+ if (HPMHooks.count.HP_status_change_clear_pre > 0) {
int (*preHookFunc) (struct block_list **bl, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_change_clear_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_change_clear_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_change_clear_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -75139,9 +83378,9 @@ int HP_status_change_clear(struct block_list *bl, int type) {
{
retVal___ = HPMHooks.source.status.change_clear(bl, type);
}
- if( HPMHooks.count.HP_status_change_clear_post ) {
+ if (HPMHooks.count.HP_status_change_clear_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_change_clear_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_change_clear_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_change_clear_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, type);
}
@@ -75151,14 +83390,14 @@ int HP_status_change_clear(struct block_list *bl, int type) {
int HP_status_change_clear_buffs(struct block_list *bl, int type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_change_clear_buffs_pre ) {
+ if (HPMHooks.count.HP_status_change_clear_buffs_pre > 0) {
int (*preHookFunc) (struct block_list **bl, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_change_clear_buffs_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_change_clear_buffs_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_change_clear_buffs_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -75166,9 +83405,9 @@ int HP_status_change_clear_buffs(struct block_list *bl, int type) {
{
retVal___ = HPMHooks.source.status.change_clear_buffs(bl, type);
}
- if( HPMHooks.count.HP_status_change_clear_buffs_post ) {
+ if (HPMHooks.count.HP_status_change_clear_buffs_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_change_clear_buffs_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_change_clear_buffs_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_change_clear_buffs_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, type);
}
@@ -75177,14 +83416,14 @@ int HP_status_change_clear_buffs(struct block_list *bl, int type) {
}
void HP_status_calc_bl_(struct block_list *bl, enum scb_flag flag, enum e_status_calc_opt opt) {
int hIndex = 0;
- if( HPMHooks.count.HP_status_calc_bl__pre ) {
+ if (HPMHooks.count.HP_status_calc_bl__pre > 0) {
void (*preHookFunc) (struct block_list **bl, enum scb_flag *flag, enum e_status_calc_opt *opt);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_bl__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_bl__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_bl__pre[hIndex].func;
preHookFunc(&bl, &flag, &opt);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -75192,9 +83431,9 @@ void HP_status_calc_bl_(struct block_list *bl, enum scb_flag flag, enum e_status
{
HPMHooks.source.status.calc_bl_(bl, flag, opt);
}
- if( HPMHooks.count.HP_status_calc_bl__post ) {
+ if (HPMHooks.count.HP_status_calc_bl__post > 0) {
void (*postHookFunc) (struct block_list *bl, enum scb_flag flag, enum e_status_calc_opt opt);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_bl__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_bl__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_bl__post[hIndex].func;
postHookFunc(bl, flag, opt);
}
@@ -75204,14 +83443,14 @@ void HP_status_calc_bl_(struct block_list *bl, enum scb_flag flag, enum e_status
int HP_status_calc_mob_(struct mob_data *md, enum e_status_calc_opt opt) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_mob__pre ) {
+ if (HPMHooks.count.HP_status_calc_mob__pre > 0) {
int (*preHookFunc) (struct mob_data **md, enum e_status_calc_opt *opt);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_mob__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_mob__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_mob__pre[hIndex].func;
retVal___ = preHookFunc(&md, &opt);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -75219,9 +83458,9 @@ int HP_status_calc_mob_(struct mob_data *md, enum e_status_calc_opt opt) {
{
retVal___ = HPMHooks.source.status.calc_mob_(md, opt);
}
- if( HPMHooks.count.HP_status_calc_mob__post ) {
+ if (HPMHooks.count.HP_status_calc_mob__post > 0) {
int (*postHookFunc) (int retVal___, struct mob_data *md, enum e_status_calc_opt opt);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_mob__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_mob__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_mob__post[hIndex].func;
retVal___ = postHookFunc(retVal___, md, opt);
}
@@ -75231,14 +83470,14 @@ int HP_status_calc_mob_(struct mob_data *md, enum e_status_calc_opt opt) {
int HP_status_calc_pet_(struct pet_data *pd, enum e_status_calc_opt opt) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_pet__pre ) {
+ if (HPMHooks.count.HP_status_calc_pet__pre > 0) {
int (*preHookFunc) (struct pet_data **pd, enum e_status_calc_opt *opt);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_pet__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_pet__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_pet__pre[hIndex].func;
retVal___ = preHookFunc(&pd, &opt);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -75246,9 +83485,9 @@ int HP_status_calc_pet_(struct pet_data *pd, enum e_status_calc_opt opt) {
{
retVal___ = HPMHooks.source.status.calc_pet_(pd, opt);
}
- if( HPMHooks.count.HP_status_calc_pet__post ) {
+ if (HPMHooks.count.HP_status_calc_pet__post > 0) {
int (*postHookFunc) (int retVal___, struct pet_data *pd, enum e_status_calc_opt opt);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_pet__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_pet__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_pet__post[hIndex].func;
retVal___ = postHookFunc(retVal___, pd, opt);
}
@@ -75258,14 +83497,14 @@ int HP_status_calc_pet_(struct pet_data *pd, enum e_status_calc_opt opt) {
int HP_status_calc_pc_(struct map_session_data *sd, enum e_status_calc_opt opt) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_pc__pre ) {
+ if (HPMHooks.count.HP_status_calc_pc__pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, enum e_status_calc_opt *opt);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_pc__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_pc__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_pc__pre[hIndex].func;
retVal___ = preHookFunc(&sd, &opt);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -75273,9 +83512,9 @@ int HP_status_calc_pc_(struct map_session_data *sd, enum e_status_calc_opt opt)
{
retVal___ = HPMHooks.source.status.calc_pc_(sd, opt);
}
- if( HPMHooks.count.HP_status_calc_pc__post ) {
+ if (HPMHooks.count.HP_status_calc_pc__post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, enum e_status_calc_opt opt);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_pc__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_pc__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_pc__post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, opt);
}
@@ -75284,14 +83523,14 @@ int HP_status_calc_pc_(struct map_session_data *sd, enum e_status_calc_opt opt)
}
void HP_status_calc_pc_additional(struct map_session_data *sd, enum e_status_calc_opt opt) {
int hIndex = 0;
- if( HPMHooks.count.HP_status_calc_pc_additional_pre ) {
+ if (HPMHooks.count.HP_status_calc_pc_additional_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, enum e_status_calc_opt *opt);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_pc_additional_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_pc_additional_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_pc_additional_pre[hIndex].func;
preHookFunc(&sd, &opt);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -75299,26 +83538,52 @@ void HP_status_calc_pc_additional(struct map_session_data *sd, enum e_status_cal
{
HPMHooks.source.status.calc_pc_additional(sd, opt);
}
- if( HPMHooks.count.HP_status_calc_pc_additional_post ) {
+ if (HPMHooks.count.HP_status_calc_pc_additional_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, enum e_status_calc_opt opt);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_pc_additional_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_pc_additional_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_pc_additional_post[hIndex].func;
postHookFunc(sd, opt);
}
}
return;
}
+void HP_status_calc_pc_recover_hp(struct map_session_data *sd, struct status_data *bstatus) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_status_calc_pc_recover_hp_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, struct status_data **bstatus);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_pc_recover_hp_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_status_calc_pc_recover_hp_pre[hIndex].func;
+ preHookFunc(&sd, &bstatus);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.status.calc_pc_recover_hp(sd, bstatus);
+ }
+ if (HPMHooks.count.HP_status_calc_pc_recover_hp_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, struct status_data *bstatus);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_pc_recover_hp_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_status_calc_pc_recover_hp_post[hIndex].func;
+ postHookFunc(sd, bstatus);
+ }
+ }
+ return;
+}
int HP_status_calc_homunculus_(struct homun_data *hd, enum e_status_calc_opt opt) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_homunculus__pre ) {
+ if (HPMHooks.count.HP_status_calc_homunculus__pre > 0) {
int (*preHookFunc) (struct homun_data **hd, enum e_status_calc_opt *opt);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_homunculus__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_homunculus__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_homunculus__pre[hIndex].func;
retVal___ = preHookFunc(&hd, &opt);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -75326,9 +83591,9 @@ int HP_status_calc_homunculus_(struct homun_data *hd, enum e_status_calc_opt opt
{
retVal___ = HPMHooks.source.status.calc_homunculus_(hd, opt);
}
- if( HPMHooks.count.HP_status_calc_homunculus__post ) {
+ if (HPMHooks.count.HP_status_calc_homunculus__post > 0) {
int (*postHookFunc) (int retVal___, struct homun_data *hd, enum e_status_calc_opt opt);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_homunculus__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_homunculus__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_homunculus__post[hIndex].func;
retVal___ = postHookFunc(retVal___, hd, opt);
}
@@ -75338,14 +83603,14 @@ int HP_status_calc_homunculus_(struct homun_data *hd, enum e_status_calc_opt opt
int HP_status_calc_mercenary_(struct mercenary_data *md, enum e_status_calc_opt opt) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_mercenary__pre ) {
+ if (HPMHooks.count.HP_status_calc_mercenary__pre > 0) {
int (*preHookFunc) (struct mercenary_data **md, enum e_status_calc_opt *opt);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_mercenary__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_mercenary__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_mercenary__pre[hIndex].func;
retVal___ = preHookFunc(&md, &opt);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -75353,9 +83618,9 @@ int HP_status_calc_mercenary_(struct mercenary_data *md, enum e_status_calc_opt
{
retVal___ = HPMHooks.source.status.calc_mercenary_(md, opt);
}
- if( HPMHooks.count.HP_status_calc_mercenary__post ) {
+ if (HPMHooks.count.HP_status_calc_mercenary__post > 0) {
int (*postHookFunc) (int retVal___, struct mercenary_data *md, enum e_status_calc_opt opt);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_mercenary__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_mercenary__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_mercenary__post[hIndex].func;
retVal___ = postHookFunc(retVal___, md, opt);
}
@@ -75365,14 +83630,14 @@ int HP_status_calc_mercenary_(struct mercenary_data *md, enum e_status_calc_opt
int HP_status_calc_elemental_(struct elemental_data *ed, enum e_status_calc_opt opt) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_elemental__pre ) {
+ if (HPMHooks.count.HP_status_calc_elemental__pre > 0) {
int (*preHookFunc) (struct elemental_data **ed, enum e_status_calc_opt *opt);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_elemental__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_elemental__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_elemental__pre[hIndex].func;
retVal___ = preHookFunc(&ed, &opt);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -75380,9 +83645,9 @@ int HP_status_calc_elemental_(struct elemental_data *ed, enum e_status_calc_opt
{
retVal___ = HPMHooks.source.status.calc_elemental_(ed, opt);
}
- if( HPMHooks.count.HP_status_calc_elemental__post ) {
+ if (HPMHooks.count.HP_status_calc_elemental__post > 0) {
int (*postHookFunc) (int retVal___, struct elemental_data *ed, enum e_status_calc_opt opt);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_elemental__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_elemental__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_elemental__post[hIndex].func;
retVal___ = postHookFunc(retVal___, ed, opt);
}
@@ -75391,14 +83656,14 @@ int HP_status_calc_elemental_(struct elemental_data *ed, enum e_status_calc_opt
}
void HP_status_calc_misc(struct block_list *bl, struct status_data *st, int level) {
int hIndex = 0;
- if( HPMHooks.count.HP_status_calc_misc_pre ) {
+ if (HPMHooks.count.HP_status_calc_misc_pre > 0) {
void (*preHookFunc) (struct block_list **bl, struct status_data **st, int *level);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_misc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_misc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_misc_pre[hIndex].func;
preHookFunc(&bl, &st, &level);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -75406,9 +83671,9 @@ void HP_status_calc_misc(struct block_list *bl, struct status_data *st, int leve
{
HPMHooks.source.status.calc_misc(bl, st, level);
}
- if( HPMHooks.count.HP_status_calc_misc_post ) {
+ if (HPMHooks.count.HP_status_calc_misc_post > 0) {
void (*postHookFunc) (struct block_list *bl, struct status_data *st, int level);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_misc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_misc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_misc_post[hIndex].func;
postHookFunc(bl, st, level);
}
@@ -75417,14 +83682,14 @@ void HP_status_calc_misc(struct block_list *bl, struct status_data *st, int leve
}
void HP_status_calc_regen(struct block_list *bl, struct status_data *st, struct regen_data *regen) {
int hIndex = 0;
- if( HPMHooks.count.HP_status_calc_regen_pre ) {
+ if (HPMHooks.count.HP_status_calc_regen_pre > 0) {
void (*preHookFunc) (struct block_list **bl, struct status_data **st, struct regen_data **regen);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_regen_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_regen_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_regen_pre[hIndex].func;
preHookFunc(&bl, &st, &regen);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -75432,9 +83697,9 @@ void HP_status_calc_regen(struct block_list *bl, struct status_data *st, struct
{
HPMHooks.source.status.calc_regen(bl, st, regen);
}
- if( HPMHooks.count.HP_status_calc_regen_post ) {
+ if (HPMHooks.count.HP_status_calc_regen_post > 0) {
void (*postHookFunc) (struct block_list *bl, struct status_data *st, struct regen_data *regen);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_regen_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_regen_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_regen_post[hIndex].func;
postHookFunc(bl, st, regen);
}
@@ -75443,14 +83708,14 @@ void HP_status_calc_regen(struct block_list *bl, struct status_data *st, struct
}
void HP_status_calc_regen_rate(struct block_list *bl, struct regen_data *regen, struct status_change *sc) {
int hIndex = 0;
- if( HPMHooks.count.HP_status_calc_regen_rate_pre ) {
+ if (HPMHooks.count.HP_status_calc_regen_rate_pre > 0) {
void (*preHookFunc) (struct block_list **bl, struct regen_data **regen, struct status_change **sc);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_regen_rate_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_regen_rate_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_regen_rate_pre[hIndex].func;
preHookFunc(&bl, &regen, &sc);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -75458,9 +83723,9 @@ void HP_status_calc_regen_rate(struct block_list *bl, struct regen_data *regen,
{
HPMHooks.source.status.calc_regen_rate(bl, regen, sc);
}
- if( HPMHooks.count.HP_status_calc_regen_rate_post ) {
+ if (HPMHooks.count.HP_status_calc_regen_rate_post > 0) {
void (*postHookFunc) (struct block_list *bl, struct regen_data *regen, struct status_change *sc);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_regen_rate_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_regen_rate_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_regen_rate_post[hIndex].func;
postHookFunc(bl, regen, sc);
}
@@ -75470,14 +83735,14 @@ void HP_status_calc_regen_rate(struct block_list *bl, struct regen_data *regen,
int HP_status_check_skilluse(struct block_list *src, struct block_list *target, uint16 skill_id, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_check_skilluse_pre ) {
+ if (HPMHooks.count.HP_status_check_skilluse_pre > 0) {
int (*preHookFunc) (struct block_list **src, struct block_list **target, uint16 *skill_id, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_check_skilluse_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_check_skilluse_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_check_skilluse_pre[hIndex].func;
retVal___ = preHookFunc(&src, &target, &skill_id, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -75485,9 +83750,9 @@ int HP_status_check_skilluse(struct block_list *src, struct block_list *target,
{
retVal___ = HPMHooks.source.status.check_skilluse(src, target, skill_id, flag);
}
- if( HPMHooks.count.HP_status_check_skilluse_post ) {
+ if (HPMHooks.count.HP_status_check_skilluse_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src, struct block_list *target, uint16 skill_id, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_check_skilluse_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_check_skilluse_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_check_skilluse_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, target, skill_id, flag);
}
@@ -75497,14 +83762,14 @@ int HP_status_check_skilluse(struct block_list *src, struct block_list *target,
int HP_status_check_visibility(struct block_list *src, struct block_list *target) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_check_visibility_pre ) {
+ if (HPMHooks.count.HP_status_check_visibility_pre > 0) {
int (*preHookFunc) (struct block_list **src, struct block_list **target);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_check_visibility_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_check_visibility_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_check_visibility_pre[hIndex].func;
retVal___ = preHookFunc(&src, &target);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -75512,9 +83777,9 @@ int HP_status_check_visibility(struct block_list *src, struct block_list *target
{
retVal___ = HPMHooks.source.status.check_visibility(src, target);
}
- if( HPMHooks.count.HP_status_check_visibility_post ) {
+ if (HPMHooks.count.HP_status_check_visibility_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src, struct block_list *target);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_check_visibility_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_check_visibility_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_check_visibility_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, target);
}
@@ -75524,14 +83789,14 @@ int HP_status_check_visibility(struct block_list *src, struct block_list *target
int HP_status_change_spread(struct block_list *src, struct block_list *bl) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_change_spread_pre ) {
+ if (HPMHooks.count.HP_status_change_spread_pre > 0) {
int (*preHookFunc) (struct block_list **src, struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_change_spread_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_change_spread_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_change_spread_pre[hIndex].func;
retVal___ = preHookFunc(&src, &bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -75539,9 +83804,9 @@ int HP_status_change_spread(struct block_list *src, struct block_list *bl) {
{
retVal___ = HPMHooks.source.status.change_spread(src, bl);
}
- if( HPMHooks.count.HP_status_change_spread_post ) {
+ if (HPMHooks.count.HP_status_change_spread_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_change_spread_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_change_spread_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_change_spread_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, bl);
}
@@ -75551,14 +83816,14 @@ int HP_status_change_spread(struct block_list *src, struct block_list *bl) {
defType HP_status_calc_def(struct block_list *bl, struct status_change *sc, int def, bool viewable) {
int hIndex = 0;
defType retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_def_pre ) {
+ if (HPMHooks.count.HP_status_calc_def_pre > 0) {
defType (*preHookFunc) (struct block_list **bl, struct status_change **sc, int *def, bool *viewable);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_def_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_def_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_def_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sc, &def, &viewable);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -75566,9 +83831,9 @@ defType HP_status_calc_def(struct block_list *bl, struct status_change *sc, int
{
retVal___ = HPMHooks.source.status.calc_def(bl, sc, def, viewable);
}
- if( HPMHooks.count.HP_status_calc_def_post ) {
+ if (HPMHooks.count.HP_status_calc_def_post > 0) {
defType (*postHookFunc) (defType retVal___, struct block_list *bl, struct status_change *sc, int def, bool viewable);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_def_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_def_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_def_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sc, def, viewable);
}
@@ -75578,14 +83843,14 @@ defType HP_status_calc_def(struct block_list *bl, struct status_change *sc, int
short HP_status_calc_def2(struct block_list *bl, struct status_change *sc, int def2, bool viewable) {
int hIndex = 0;
short retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_def2_pre ) {
+ if (HPMHooks.count.HP_status_calc_def2_pre > 0) {
short (*preHookFunc) (struct block_list **bl, struct status_change **sc, int *def2, bool *viewable);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_def2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_def2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_def2_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sc, &def2, &viewable);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -75593,9 +83858,9 @@ short HP_status_calc_def2(struct block_list *bl, struct status_change *sc, int d
{
retVal___ = HPMHooks.source.status.calc_def2(bl, sc, def2, viewable);
}
- if( HPMHooks.count.HP_status_calc_def2_post ) {
+ if (HPMHooks.count.HP_status_calc_def2_post > 0) {
short (*postHookFunc) (short retVal___, struct block_list *bl, struct status_change *sc, int def2, bool viewable);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_def2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_def2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_def2_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sc, def2, viewable);
}
@@ -75605,14 +83870,14 @@ short HP_status_calc_def2(struct block_list *bl, struct status_change *sc, int d
defType HP_status_calc_mdef(struct block_list *bl, struct status_change *sc, int mdef, bool viewable) {
int hIndex = 0;
defType retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_mdef_pre ) {
+ if (HPMHooks.count.HP_status_calc_mdef_pre > 0) {
defType (*preHookFunc) (struct block_list **bl, struct status_change **sc, int *mdef, bool *viewable);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_mdef_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_mdef_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_mdef_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sc, &mdef, &viewable);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -75620,9 +83885,9 @@ defType HP_status_calc_mdef(struct block_list *bl, struct status_change *sc, int
{
retVal___ = HPMHooks.source.status.calc_mdef(bl, sc, mdef, viewable);
}
- if( HPMHooks.count.HP_status_calc_mdef_post ) {
+ if (HPMHooks.count.HP_status_calc_mdef_post > 0) {
defType (*postHookFunc) (defType retVal___, struct block_list *bl, struct status_change *sc, int mdef, bool viewable);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_mdef_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_mdef_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_mdef_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sc, mdef, viewable);
}
@@ -75632,14 +83897,14 @@ defType HP_status_calc_mdef(struct block_list *bl, struct status_change *sc, int
short HP_status_calc_mdef2(struct block_list *bl, struct status_change *sc, int mdef2, bool viewable) {
int hIndex = 0;
short retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_mdef2_pre ) {
+ if (HPMHooks.count.HP_status_calc_mdef2_pre > 0) {
short (*preHookFunc) (struct block_list **bl, struct status_change **sc, int *mdef2, bool *viewable);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_mdef2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_mdef2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_mdef2_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sc, &mdef2, &viewable);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -75647,9 +83912,9 @@ short HP_status_calc_mdef2(struct block_list *bl, struct status_change *sc, int
{
retVal___ = HPMHooks.source.status.calc_mdef2(bl, sc, mdef2, viewable);
}
- if( HPMHooks.count.HP_status_calc_mdef2_post ) {
+ if (HPMHooks.count.HP_status_calc_mdef2_post > 0) {
short (*postHookFunc) (short retVal___, struct block_list *bl, struct status_change *sc, int mdef2, bool viewable);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_mdef2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_mdef2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_mdef2_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sc, mdef2, viewable);
}
@@ -75659,14 +83924,14 @@ short HP_status_calc_mdef2(struct block_list *bl, struct status_change *sc, int
unsigned short HP_status_calc_batk(struct block_list *bl, struct status_change *sc, int batk, bool viewable) {
int hIndex = 0;
unsigned short retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_batk_pre ) {
+ if (HPMHooks.count.HP_status_calc_batk_pre > 0) {
unsigned short (*preHookFunc) (struct block_list **bl, struct status_change **sc, int *batk, bool *viewable);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_batk_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_batk_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_batk_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sc, &batk, &viewable);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -75674,9 +83939,9 @@ unsigned short HP_status_calc_batk(struct block_list *bl, struct status_change *
{
retVal___ = HPMHooks.source.status.calc_batk(bl, sc, batk, viewable);
}
- if( HPMHooks.count.HP_status_calc_batk_post ) {
+ if (HPMHooks.count.HP_status_calc_batk_post > 0) {
unsigned short (*postHookFunc) (unsigned short retVal___, struct block_list *bl, struct status_change *sc, int batk, bool viewable);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_batk_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_batk_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_batk_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sc, batk, viewable);
}
@@ -75686,14 +83951,14 @@ unsigned short HP_status_calc_batk(struct block_list *bl, struct status_change *
unsigned short HP_status_base_matk(struct block_list *bl, const struct status_data *st, int level) {
int hIndex = 0;
unsigned short retVal___ = 0;
- if( HPMHooks.count.HP_status_base_matk_pre ) {
+ if (HPMHooks.count.HP_status_base_matk_pre > 0) {
unsigned short (*preHookFunc) (struct block_list **bl, const struct status_data **st, int *level);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_base_matk_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_base_matk_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_base_matk_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &st, &level);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -75701,9 +83966,9 @@ unsigned short HP_status_base_matk(struct block_list *bl, const struct status_da
{
retVal___ = HPMHooks.source.status.base_matk(bl, st, level);
}
- if( HPMHooks.count.HP_status_base_matk_post ) {
+ if (HPMHooks.count.HP_status_base_matk_post > 0) {
unsigned short (*postHookFunc) (unsigned short retVal___, struct block_list *bl, const struct status_data *st, int level);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_base_matk_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_base_matk_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_base_matk_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, st, level);
}
@@ -75713,14 +83978,14 @@ unsigned short HP_status_base_matk(struct block_list *bl, const struct status_da
int HP_status_get_weapon_atk(struct block_list *src, struct weapon_atk *watk, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_get_weapon_atk_pre ) {
+ if (HPMHooks.count.HP_status_get_weapon_atk_pre > 0) {
int (*preHookFunc) (struct block_list **src, struct weapon_atk **watk, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_weapon_atk_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_weapon_atk_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_get_weapon_atk_pre[hIndex].func;
retVal___ = preHookFunc(&src, &watk, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -75728,9 +83993,9 @@ int HP_status_get_weapon_atk(struct block_list *src, struct weapon_atk *watk, in
{
retVal___ = HPMHooks.source.status.get_weapon_atk(src, watk, flag);
}
- if( HPMHooks.count.HP_status_get_weapon_atk_post ) {
+ if (HPMHooks.count.HP_status_get_weapon_atk_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src, struct weapon_atk *watk, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_weapon_atk_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_weapon_atk_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_get_weapon_atk_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, watk, flag);
}
@@ -75740,14 +84005,14 @@ int HP_status_get_weapon_atk(struct block_list *src, struct weapon_atk *watk, in
int HP_status_get_total_mdef(struct block_list *src) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_get_total_mdef_pre ) {
+ if (HPMHooks.count.HP_status_get_total_mdef_pre > 0) {
int (*preHookFunc) (struct block_list **src);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_total_mdef_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_total_mdef_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_get_total_mdef_pre[hIndex].func;
retVal___ = preHookFunc(&src);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -75755,9 +84020,9 @@ int HP_status_get_total_mdef(struct block_list *src) {
{
retVal___ = HPMHooks.source.status.get_total_mdef(src);
}
- if( HPMHooks.count.HP_status_get_total_mdef_post ) {
+ if (HPMHooks.count.HP_status_get_total_mdef_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_total_mdef_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_total_mdef_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_get_total_mdef_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src);
}
@@ -75767,14 +84032,14 @@ int HP_status_get_total_mdef(struct block_list *src) {
int HP_status_get_total_def(struct block_list *src) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_get_total_def_pre ) {
+ if (HPMHooks.count.HP_status_get_total_def_pre > 0) {
int (*preHookFunc) (struct block_list **src);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_total_def_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_total_def_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_get_total_def_pre[hIndex].func;
retVal___ = preHookFunc(&src);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -75782,9 +84047,9 @@ int HP_status_get_total_def(struct block_list *src) {
{
retVal___ = HPMHooks.source.status.get_total_def(src);
}
- if( HPMHooks.count.HP_status_get_total_def_post ) {
+ if (HPMHooks.count.HP_status_get_total_def_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_total_def_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_total_def_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_get_total_def_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src);
}
@@ -75794,14 +84059,14 @@ int HP_status_get_total_def(struct block_list *src) {
int HP_status_get_matk(struct block_list *src, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_get_matk_pre ) {
+ if (HPMHooks.count.HP_status_get_matk_pre > 0) {
int (*preHookFunc) (struct block_list **src, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_matk_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_matk_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_get_matk_pre[hIndex].func;
retVal___ = preHookFunc(&src, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -75809,9 +84074,9 @@ int HP_status_get_matk(struct block_list *src, int flag) {
{
retVal___ = HPMHooks.source.status.get_matk(src, flag);
}
- if( HPMHooks.count.HP_status_get_matk_post ) {
+ if (HPMHooks.count.HP_status_get_matk_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_matk_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_matk_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_get_matk_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, flag);
}
@@ -75820,14 +84085,14 @@ int HP_status_get_matk(struct block_list *src, int flag) {
}
void HP_status_update_matk(struct block_list *bl) {
int hIndex = 0;
- if( HPMHooks.count.HP_status_update_matk_pre ) {
+ if (HPMHooks.count.HP_status_update_matk_pre > 0) {
void (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_update_matk_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_update_matk_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_update_matk_pre[hIndex].func;
preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -75835,9 +84100,9 @@ void HP_status_update_matk(struct block_list *bl) {
{
HPMHooks.source.status.update_matk(bl);
}
- if( HPMHooks.count.HP_status_update_matk_post ) {
+ if (HPMHooks.count.HP_status_update_matk_post > 0) {
void (*postHookFunc) (struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_update_matk_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_update_matk_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_update_matk_post[hIndex].func;
postHookFunc(bl);
}
@@ -75847,14 +84112,14 @@ void HP_status_update_matk(struct block_list *bl) {
int HP_status_readdb(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_readdb_pre ) {
+ if (HPMHooks.count.HP_status_readdb_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_readdb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_readdb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_readdb_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -75862,9 +84127,9 @@ int HP_status_readdb(void) {
{
retVal___ = HPMHooks.source.status.readdb();
}
- if( HPMHooks.count.HP_status_readdb_post ) {
+ if (HPMHooks.count.HP_status_readdb_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_readdb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_readdb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_readdb_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -75873,14 +84138,14 @@ int HP_status_readdb(void) {
}
void HP_status_initChangeTables(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_status_initChangeTables_pre ) {
+ if (HPMHooks.count.HP_status_initChangeTables_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_initChangeTables_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_initChangeTables_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_initChangeTables_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -75888,9 +84153,9 @@ void HP_status_initChangeTables(void) {
{
HPMHooks.source.status.initChangeTables();
}
- if( HPMHooks.count.HP_status_initChangeTables_post ) {
+ if (HPMHooks.count.HP_status_initChangeTables_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_initChangeTables_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_initChangeTables_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_initChangeTables_post[hIndex].func;
postHookFunc();
}
@@ -75899,14 +84164,14 @@ void HP_status_initChangeTables(void) {
}
void HP_status_initDummyData(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_status_initDummyData_pre ) {
+ if (HPMHooks.count.HP_status_initDummyData_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_initDummyData_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_initDummyData_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_initDummyData_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -75914,9 +84179,9 @@ void HP_status_initDummyData(void) {
{
HPMHooks.source.status.initDummyData();
}
- if( HPMHooks.count.HP_status_initDummyData_post ) {
+ if (HPMHooks.count.HP_status_initDummyData_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_initDummyData_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_initDummyData_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_initDummyData_post[hIndex].func;
postHookFunc();
}
@@ -75926,14 +84191,14 @@ void HP_status_initDummyData(void) {
int HP_status_base_amotion_pc(struct map_session_data *sd, struct status_data *st) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_base_amotion_pc_pre ) {
+ if (HPMHooks.count.HP_status_base_amotion_pc_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct status_data **st);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_base_amotion_pc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_base_amotion_pc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_base_amotion_pc_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &st);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -75941,9 +84206,9 @@ int HP_status_base_amotion_pc(struct map_session_data *sd, struct status_data *s
{
retVal___ = HPMHooks.source.status.base_amotion_pc(sd, st);
}
- if( HPMHooks.count.HP_status_base_amotion_pc_post ) {
+ if (HPMHooks.count.HP_status_base_amotion_pc_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct status_data *st);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_base_amotion_pc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_base_amotion_pc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_base_amotion_pc_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, st);
}
@@ -75953,14 +84218,14 @@ int HP_status_base_amotion_pc(struct map_session_data *sd, struct status_data *s
unsigned short HP_status_base_atk(const struct block_list *bl, const struct status_data *st) {
int hIndex = 0;
unsigned short retVal___ = 0;
- if( HPMHooks.count.HP_status_base_atk_pre ) {
+ if (HPMHooks.count.HP_status_base_atk_pre > 0) {
unsigned short (*preHookFunc) (const struct block_list **bl, const struct status_data **st);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_base_atk_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_base_atk_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_base_atk_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &st);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -75968,9 +84233,9 @@ unsigned short HP_status_base_atk(const struct block_list *bl, const struct stat
{
retVal___ = HPMHooks.source.status.base_atk(bl, st);
}
- if( HPMHooks.count.HP_status_base_atk_post ) {
+ if (HPMHooks.count.HP_status_base_atk_post > 0) {
unsigned short (*postHookFunc) (unsigned short retVal___, const struct block_list *bl, const struct status_data *st);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_base_atk_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_base_atk_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_base_atk_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, st);
}
@@ -75980,14 +84245,14 @@ unsigned short HP_status_base_atk(const struct block_list *bl, const struct stat
unsigned int HP_status_get_base_maxhp(const struct map_session_data *sd, const struct status_data *st) {
int hIndex = 0;
unsigned int retVal___ = 0;
- if( HPMHooks.count.HP_status_get_base_maxhp_pre ) {
+ if (HPMHooks.count.HP_status_get_base_maxhp_pre > 0) {
unsigned int (*preHookFunc) (const struct map_session_data **sd, const struct status_data **st);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_base_maxhp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_base_maxhp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_get_base_maxhp_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &st);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -75995,9 +84260,9 @@ unsigned int HP_status_get_base_maxhp(const struct map_session_data *sd, const s
{
retVal___ = HPMHooks.source.status.get_base_maxhp(sd, st);
}
- if( HPMHooks.count.HP_status_get_base_maxhp_post ) {
+ if (HPMHooks.count.HP_status_get_base_maxhp_post > 0) {
unsigned int (*postHookFunc) (unsigned int retVal___, const struct map_session_data *sd, const struct status_data *st);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_base_maxhp_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_base_maxhp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_get_base_maxhp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, st);
}
@@ -76007,14 +84272,14 @@ unsigned int HP_status_get_base_maxhp(const struct map_session_data *sd, const s
unsigned int HP_status_get_base_maxsp(const struct map_session_data *sd, const struct status_data *st) {
int hIndex = 0;
unsigned int retVal___ = 0;
- if( HPMHooks.count.HP_status_get_base_maxsp_pre ) {
+ if (HPMHooks.count.HP_status_get_base_maxsp_pre > 0) {
unsigned int (*preHookFunc) (const struct map_session_data **sd, const struct status_data **st);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_base_maxsp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_base_maxsp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_get_base_maxsp_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &st);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -76022,26 +84287,80 @@ unsigned int HP_status_get_base_maxsp(const struct map_session_data *sd, const s
{
retVal___ = HPMHooks.source.status.get_base_maxsp(sd, st);
}
- if( HPMHooks.count.HP_status_get_base_maxsp_post ) {
+ if (HPMHooks.count.HP_status_get_base_maxsp_post > 0) {
unsigned int (*postHookFunc) (unsigned int retVal___, const struct map_session_data *sd, const struct status_data *st);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_get_base_maxsp_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_base_maxsp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_get_base_maxsp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, st);
}
}
return retVal___;
}
+unsigned int HP_status_get_restart_hp(const struct map_session_data *sd, const struct status_data *st) {
+ int hIndex = 0;
+ unsigned int retVal___ = 0;
+ if (HPMHooks.count.HP_status_get_restart_hp_pre > 0) {
+ unsigned int (*preHookFunc) (const struct map_session_data **sd, const struct status_data **st);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_restart_hp_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_status_get_restart_hp_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &st);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.status.get_restart_hp(sd, st);
+ }
+ if (HPMHooks.count.HP_status_get_restart_hp_post > 0) {
+ unsigned int (*postHookFunc) (unsigned int retVal___, const struct map_session_data *sd, const struct status_data *st);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_restart_hp_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_status_get_restart_hp_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, st);
+ }
+ }
+ return retVal___;
+}
+unsigned int HP_status_get_restart_sp(const struct map_session_data *sd, const struct status_data *st) {
+ int hIndex = 0;
+ unsigned int retVal___ = 0;
+ if (HPMHooks.count.HP_status_get_restart_sp_pre > 0) {
+ unsigned int (*preHookFunc) (const struct map_session_data **sd, const struct status_data **st);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_restart_sp_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_status_get_restart_sp_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &st);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.status.get_restart_sp(sd, st);
+ }
+ if (HPMHooks.count.HP_status_get_restart_sp_post > 0) {
+ unsigned int (*postHookFunc) (unsigned int retVal___, const struct map_session_data *sd, const struct status_data *st);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_get_restart_sp_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_status_get_restart_sp_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, st);
+ }
+ }
+ return retVal___;
+}
int HP_status_calc_npc_(struct npc_data *nd, enum e_status_calc_opt opt) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_npc__pre ) {
+ if (HPMHooks.count.HP_status_calc_npc__pre > 0) {
int (*preHookFunc) (struct npc_data **nd, enum e_status_calc_opt *opt);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_npc__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_npc__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_npc__pre[hIndex].func;
retVal___ = preHookFunc(&nd, &opt);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -76049,9 +84368,9 @@ int HP_status_calc_npc_(struct npc_data *nd, enum e_status_calc_opt opt) {
{
retVal___ = HPMHooks.source.status.calc_npc_(nd, opt);
}
- if( HPMHooks.count.HP_status_calc_npc__post ) {
+ if (HPMHooks.count.HP_status_calc_npc__post > 0) {
int (*postHookFunc) (int retVal___, struct npc_data *nd, enum e_status_calc_opt opt);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_npc__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_npc__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_npc__post[hIndex].func;
retVal___ = postHookFunc(retVal___, nd, opt);
}
@@ -76061,14 +84380,14 @@ int HP_status_calc_npc_(struct npc_data *nd, enum e_status_calc_opt opt) {
unsigned short HP_status_calc_str(struct block_list *bl, struct status_change *sc, int str) {
int hIndex = 0;
unsigned short retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_str_pre ) {
+ if (HPMHooks.count.HP_status_calc_str_pre > 0) {
unsigned short (*preHookFunc) (struct block_list **bl, struct status_change **sc, int *str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_str_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_str_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_str_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sc, &str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -76076,9 +84395,9 @@ unsigned short HP_status_calc_str(struct block_list *bl, struct status_change *s
{
retVal___ = HPMHooks.source.status.calc_str(bl, sc, str);
}
- if( HPMHooks.count.HP_status_calc_str_post ) {
+ if (HPMHooks.count.HP_status_calc_str_post > 0) {
unsigned short (*postHookFunc) (unsigned short retVal___, struct block_list *bl, struct status_change *sc, int str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_str_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_str_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_str_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sc, str);
}
@@ -76088,14 +84407,14 @@ unsigned short HP_status_calc_str(struct block_list *bl, struct status_change *s
unsigned short HP_status_calc_agi(struct block_list *bl, struct status_change *sc, int agi) {
int hIndex = 0;
unsigned short retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_agi_pre ) {
+ if (HPMHooks.count.HP_status_calc_agi_pre > 0) {
unsigned short (*preHookFunc) (struct block_list **bl, struct status_change **sc, int *agi);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_agi_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_agi_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_agi_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sc, &agi);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -76103,9 +84422,9 @@ unsigned short HP_status_calc_agi(struct block_list *bl, struct status_change *s
{
retVal___ = HPMHooks.source.status.calc_agi(bl, sc, agi);
}
- if( HPMHooks.count.HP_status_calc_agi_post ) {
+ if (HPMHooks.count.HP_status_calc_agi_post > 0) {
unsigned short (*postHookFunc) (unsigned short retVal___, struct block_list *bl, struct status_change *sc, int agi);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_agi_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_agi_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_agi_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sc, agi);
}
@@ -76115,14 +84434,14 @@ unsigned short HP_status_calc_agi(struct block_list *bl, struct status_change *s
unsigned short HP_status_calc_vit(struct block_list *bl, struct status_change *sc, int vit) {
int hIndex = 0;
unsigned short retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_vit_pre ) {
+ if (HPMHooks.count.HP_status_calc_vit_pre > 0) {
unsigned short (*preHookFunc) (struct block_list **bl, struct status_change **sc, int *vit);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_vit_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_vit_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_vit_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sc, &vit);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -76130,9 +84449,9 @@ unsigned short HP_status_calc_vit(struct block_list *bl, struct status_change *s
{
retVal___ = HPMHooks.source.status.calc_vit(bl, sc, vit);
}
- if( HPMHooks.count.HP_status_calc_vit_post ) {
+ if (HPMHooks.count.HP_status_calc_vit_post > 0) {
unsigned short (*postHookFunc) (unsigned short retVal___, struct block_list *bl, struct status_change *sc, int vit);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_vit_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_vit_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_vit_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sc, vit);
}
@@ -76142,14 +84461,14 @@ unsigned short HP_status_calc_vit(struct block_list *bl, struct status_change *s
unsigned short HP_status_calc_int(struct block_list *bl, struct status_change *sc, int int_) {
int hIndex = 0;
unsigned short retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_int_pre ) {
+ if (HPMHooks.count.HP_status_calc_int_pre > 0) {
unsigned short (*preHookFunc) (struct block_list **bl, struct status_change **sc, int *int_);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_int_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_int_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_int_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sc, &int_);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -76157,9 +84476,9 @@ unsigned short HP_status_calc_int(struct block_list *bl, struct status_change *s
{
retVal___ = HPMHooks.source.status.calc_int(bl, sc, int_);
}
- if( HPMHooks.count.HP_status_calc_int_post ) {
+ if (HPMHooks.count.HP_status_calc_int_post > 0) {
unsigned short (*postHookFunc) (unsigned short retVal___, struct block_list *bl, struct status_change *sc, int int_);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_int_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_int_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_int_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sc, int_);
}
@@ -76169,14 +84488,14 @@ unsigned short HP_status_calc_int(struct block_list *bl, struct status_change *s
unsigned short HP_status_calc_dex(struct block_list *bl, struct status_change *sc, int dex) {
int hIndex = 0;
unsigned short retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_dex_pre ) {
+ if (HPMHooks.count.HP_status_calc_dex_pre > 0) {
unsigned short (*preHookFunc) (struct block_list **bl, struct status_change **sc, int *dex);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_dex_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_dex_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_dex_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sc, &dex);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -76184,9 +84503,9 @@ unsigned short HP_status_calc_dex(struct block_list *bl, struct status_change *s
{
retVal___ = HPMHooks.source.status.calc_dex(bl, sc, dex);
}
- if( HPMHooks.count.HP_status_calc_dex_post ) {
+ if (HPMHooks.count.HP_status_calc_dex_post > 0) {
unsigned short (*postHookFunc) (unsigned short retVal___, struct block_list *bl, struct status_change *sc, int dex);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_dex_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_dex_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_dex_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sc, dex);
}
@@ -76196,14 +84515,14 @@ unsigned short HP_status_calc_dex(struct block_list *bl, struct status_change *s
unsigned short HP_status_calc_luk(struct block_list *bl, struct status_change *sc, int luk) {
int hIndex = 0;
unsigned short retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_luk_pre ) {
+ if (HPMHooks.count.HP_status_calc_luk_pre > 0) {
unsigned short (*preHookFunc) (struct block_list **bl, struct status_change **sc, int *luk);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_luk_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_luk_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_luk_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sc, &luk);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -76211,9 +84530,9 @@ unsigned short HP_status_calc_luk(struct block_list *bl, struct status_change *s
{
retVal___ = HPMHooks.source.status.calc_luk(bl, sc, luk);
}
- if( HPMHooks.count.HP_status_calc_luk_post ) {
+ if (HPMHooks.count.HP_status_calc_luk_post > 0) {
unsigned short (*postHookFunc) (unsigned short retVal___, struct block_list *bl, struct status_change *sc, int luk);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_luk_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_luk_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_luk_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sc, luk);
}
@@ -76223,14 +84542,14 @@ unsigned short HP_status_calc_luk(struct block_list *bl, struct status_change *s
unsigned short HP_status_calc_watk(struct block_list *bl, struct status_change *sc, int watk, bool viewable) {
int hIndex = 0;
unsigned short retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_watk_pre ) {
+ if (HPMHooks.count.HP_status_calc_watk_pre > 0) {
unsigned short (*preHookFunc) (struct block_list **bl, struct status_change **sc, int *watk, bool *viewable);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_watk_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_watk_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_watk_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sc, &watk, &viewable);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -76238,9 +84557,9 @@ unsigned short HP_status_calc_watk(struct block_list *bl, struct status_change *
{
retVal___ = HPMHooks.source.status.calc_watk(bl, sc, watk, viewable);
}
- if( HPMHooks.count.HP_status_calc_watk_post ) {
+ if (HPMHooks.count.HP_status_calc_watk_post > 0) {
unsigned short (*postHookFunc) (unsigned short retVal___, struct block_list *bl, struct status_change *sc, int watk, bool viewable);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_watk_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_watk_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_watk_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sc, watk, viewable);
}
@@ -76250,14 +84569,14 @@ unsigned short HP_status_calc_watk(struct block_list *bl, struct status_change *
unsigned short HP_status_calc_matk(struct block_list *bl, struct status_change *sc, int matk, bool viewable) {
int hIndex = 0;
unsigned short retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_matk_pre ) {
+ if (HPMHooks.count.HP_status_calc_matk_pre > 0) {
unsigned short (*preHookFunc) (struct block_list **bl, struct status_change **sc, int *matk, bool *viewable);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_matk_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_matk_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_matk_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sc, &matk, &viewable);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -76265,9 +84584,9 @@ unsigned short HP_status_calc_matk(struct block_list *bl, struct status_change *
{
retVal___ = HPMHooks.source.status.calc_matk(bl, sc, matk, viewable);
}
- if( HPMHooks.count.HP_status_calc_matk_post ) {
+ if (HPMHooks.count.HP_status_calc_matk_post > 0) {
unsigned short (*postHookFunc) (unsigned short retVal___, struct block_list *bl, struct status_change *sc, int matk, bool viewable);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_matk_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_matk_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_matk_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sc, matk, viewable);
}
@@ -76277,14 +84596,14 @@ unsigned short HP_status_calc_matk(struct block_list *bl, struct status_change *
signed short HP_status_calc_hit(struct block_list *bl, struct status_change *sc, int hit, bool viewable) {
int hIndex = 0;
signed short retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_hit_pre ) {
+ if (HPMHooks.count.HP_status_calc_hit_pre > 0) {
signed short (*preHookFunc) (struct block_list **bl, struct status_change **sc, int *hit, bool *viewable);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_hit_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_hit_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_hit_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sc, &hit, &viewable);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -76292,9 +84611,9 @@ signed short HP_status_calc_hit(struct block_list *bl, struct status_change *sc,
{
retVal___ = HPMHooks.source.status.calc_hit(bl, sc, hit, viewable);
}
- if( HPMHooks.count.HP_status_calc_hit_post ) {
+ if (HPMHooks.count.HP_status_calc_hit_post > 0) {
signed short (*postHookFunc) (signed short retVal___, struct block_list *bl, struct status_change *sc, int hit, bool viewable);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_hit_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_hit_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_hit_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sc, hit, viewable);
}
@@ -76304,14 +84623,14 @@ signed short HP_status_calc_hit(struct block_list *bl, struct status_change *sc,
signed short HP_status_calc_critical(struct block_list *bl, struct status_change *sc, int critical, bool viewable) {
int hIndex = 0;
signed short retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_critical_pre ) {
+ if (HPMHooks.count.HP_status_calc_critical_pre > 0) {
signed short (*preHookFunc) (struct block_list **bl, struct status_change **sc, int *critical, bool *viewable);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_critical_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_critical_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_critical_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sc, &critical, &viewable);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -76319,9 +84638,9 @@ signed short HP_status_calc_critical(struct block_list *bl, struct status_change
{
retVal___ = HPMHooks.source.status.calc_critical(bl, sc, critical, viewable);
}
- if( HPMHooks.count.HP_status_calc_critical_post ) {
+ if (HPMHooks.count.HP_status_calc_critical_post > 0) {
signed short (*postHookFunc) (signed short retVal___, struct block_list *bl, struct status_change *sc, int critical, bool viewable);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_critical_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_critical_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_critical_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sc, critical, viewable);
}
@@ -76331,14 +84650,14 @@ signed short HP_status_calc_critical(struct block_list *bl, struct status_change
signed short HP_status_calc_flee(struct block_list *bl, struct status_change *sc, int flee, bool viewable) {
int hIndex = 0;
signed short retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_flee_pre ) {
+ if (HPMHooks.count.HP_status_calc_flee_pre > 0) {
signed short (*preHookFunc) (struct block_list **bl, struct status_change **sc, int *flee, bool *viewable);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_flee_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_flee_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_flee_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sc, &flee, &viewable);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -76346,9 +84665,9 @@ signed short HP_status_calc_flee(struct block_list *bl, struct status_change *sc
{
retVal___ = HPMHooks.source.status.calc_flee(bl, sc, flee, viewable);
}
- if( HPMHooks.count.HP_status_calc_flee_post ) {
+ if (HPMHooks.count.HP_status_calc_flee_post > 0) {
signed short (*postHookFunc) (signed short retVal___, struct block_list *bl, struct status_change *sc, int flee, bool viewable);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_flee_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_flee_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_flee_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sc, flee, viewable);
}
@@ -76358,14 +84677,14 @@ signed short HP_status_calc_flee(struct block_list *bl, struct status_change *sc
signed short HP_status_calc_flee2(struct block_list *bl, struct status_change *sc, int flee2, bool viewable) {
int hIndex = 0;
signed short retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_flee2_pre ) {
+ if (HPMHooks.count.HP_status_calc_flee2_pre > 0) {
signed short (*preHookFunc) (struct block_list **bl, struct status_change **sc, int *flee2, bool *viewable);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_flee2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_flee2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_flee2_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sc, &flee2, &viewable);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -76373,9 +84692,9 @@ signed short HP_status_calc_flee2(struct block_list *bl, struct status_change *s
{
retVal___ = HPMHooks.source.status.calc_flee2(bl, sc, flee2, viewable);
}
- if( HPMHooks.count.HP_status_calc_flee2_post ) {
+ if (HPMHooks.count.HP_status_calc_flee2_post > 0) {
signed short (*postHookFunc) (signed short retVal___, struct block_list *bl, struct status_change *sc, int flee2, bool viewable);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_flee2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_flee2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_flee2_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sc, flee2, viewable);
}
@@ -76385,14 +84704,14 @@ signed short HP_status_calc_flee2(struct block_list *bl, struct status_change *s
unsigned short HP_status_calc_speed(struct block_list *bl, struct status_change *sc, int speed) {
int hIndex = 0;
unsigned short retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_speed_pre ) {
+ if (HPMHooks.count.HP_status_calc_speed_pre > 0) {
unsigned short (*preHookFunc) (struct block_list **bl, struct status_change **sc, int *speed);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_speed_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_speed_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_speed_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sc, &speed);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -76400,9 +84719,9 @@ unsigned short HP_status_calc_speed(struct block_list *bl, struct status_change
{
retVal___ = HPMHooks.source.status.calc_speed(bl, sc, speed);
}
- if( HPMHooks.count.HP_status_calc_speed_post ) {
+ if (HPMHooks.count.HP_status_calc_speed_post > 0) {
unsigned short (*postHookFunc) (unsigned short retVal___, struct block_list *bl, struct status_change *sc, int speed);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_speed_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_speed_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_speed_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sc, speed);
}
@@ -76412,14 +84731,14 @@ unsigned short HP_status_calc_speed(struct block_list *bl, struct status_change
short HP_status_calc_aspd_rate(struct block_list *bl, struct status_change *sc, int aspd_rate) {
int hIndex = 0;
short retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_aspd_rate_pre ) {
+ if (HPMHooks.count.HP_status_calc_aspd_rate_pre > 0) {
short (*preHookFunc) (struct block_list **bl, struct status_change **sc, int *aspd_rate);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_aspd_rate_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_aspd_rate_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_aspd_rate_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sc, &aspd_rate);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -76427,9 +84746,9 @@ short HP_status_calc_aspd_rate(struct block_list *bl, struct status_change *sc,
{
retVal___ = HPMHooks.source.status.calc_aspd_rate(bl, sc, aspd_rate);
}
- if( HPMHooks.count.HP_status_calc_aspd_rate_post ) {
+ if (HPMHooks.count.HP_status_calc_aspd_rate_post > 0) {
short (*postHookFunc) (short retVal___, struct block_list *bl, struct status_change *sc, int aspd_rate);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_aspd_rate_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_aspd_rate_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_aspd_rate_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sc, aspd_rate);
}
@@ -76439,14 +84758,14 @@ short HP_status_calc_aspd_rate(struct block_list *bl, struct status_change *sc,
unsigned short HP_status_calc_dmotion(struct block_list *bl, struct status_change *sc, int dmotion) {
int hIndex = 0;
unsigned short retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_dmotion_pre ) {
+ if (HPMHooks.count.HP_status_calc_dmotion_pre > 0) {
unsigned short (*preHookFunc) (struct block_list **bl, struct status_change **sc, int *dmotion);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_dmotion_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_dmotion_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_dmotion_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sc, &dmotion);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -76454,9 +84773,9 @@ unsigned short HP_status_calc_dmotion(struct block_list *bl, struct status_chang
{
retVal___ = HPMHooks.source.status.calc_dmotion(bl, sc, dmotion);
}
- if( HPMHooks.count.HP_status_calc_dmotion_post ) {
+ if (HPMHooks.count.HP_status_calc_dmotion_post > 0) {
unsigned short (*postHookFunc) (unsigned short retVal___, struct block_list *bl, struct status_change *sc, int dmotion);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_dmotion_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_dmotion_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_dmotion_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sc, dmotion);
}
@@ -76466,14 +84785,14 @@ unsigned short HP_status_calc_dmotion(struct block_list *bl, struct status_chang
short HP_status_calc_aspd(struct block_list *bl, struct status_change *sc, short flag) {
int hIndex = 0;
short retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_aspd_pre ) {
+ if (HPMHooks.count.HP_status_calc_aspd_pre > 0) {
short (*preHookFunc) (struct block_list **bl, struct status_change **sc, short *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_aspd_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_aspd_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_aspd_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sc, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -76481,9 +84800,9 @@ short HP_status_calc_aspd(struct block_list *bl, struct status_change *sc, short
{
retVal___ = HPMHooks.source.status.calc_aspd(bl, sc, flag);
}
- if( HPMHooks.count.HP_status_calc_aspd_post ) {
+ if (HPMHooks.count.HP_status_calc_aspd_post > 0) {
short (*postHookFunc) (short retVal___, struct block_list *bl, struct status_change *sc, short flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_aspd_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_aspd_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_aspd_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sc, flag);
}
@@ -76493,14 +84812,14 @@ short HP_status_calc_aspd(struct block_list *bl, struct status_change *sc, short
short HP_status_calc_fix_aspd(struct block_list *bl, struct status_change *sc, int aspd) {
int hIndex = 0;
short retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_fix_aspd_pre ) {
+ if (HPMHooks.count.HP_status_calc_fix_aspd_pre > 0) {
short (*preHookFunc) (struct block_list **bl, struct status_change **sc, int *aspd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_fix_aspd_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_fix_aspd_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_fix_aspd_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sc, &aspd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -76508,9 +84827,9 @@ short HP_status_calc_fix_aspd(struct block_list *bl, struct status_change *sc, i
{
retVal___ = HPMHooks.source.status.calc_fix_aspd(bl, sc, aspd);
}
- if( HPMHooks.count.HP_status_calc_fix_aspd_post ) {
+ if (HPMHooks.count.HP_status_calc_fix_aspd_post > 0) {
short (*postHookFunc) (short retVal___, struct block_list *bl, struct status_change *sc, int aspd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_fix_aspd_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_fix_aspd_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_fix_aspd_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sc, aspd);
}
@@ -76520,14 +84839,14 @@ short HP_status_calc_fix_aspd(struct block_list *bl, struct status_change *sc, i
unsigned int HP_status_calc_maxhp(struct block_list *bl, struct status_change *sc, uint64 maxhp) {
int hIndex = 0;
unsigned int retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_maxhp_pre ) {
+ if (HPMHooks.count.HP_status_calc_maxhp_pre > 0) {
unsigned int (*preHookFunc) (struct block_list **bl, struct status_change **sc, uint64 *maxhp);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_maxhp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_maxhp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_maxhp_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sc, &maxhp);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -76535,9 +84854,9 @@ unsigned int HP_status_calc_maxhp(struct block_list *bl, struct status_change *s
{
retVal___ = HPMHooks.source.status.calc_maxhp(bl, sc, maxhp);
}
- if( HPMHooks.count.HP_status_calc_maxhp_post ) {
+ if (HPMHooks.count.HP_status_calc_maxhp_post > 0) {
unsigned int (*postHookFunc) (unsigned int retVal___, struct block_list *bl, struct status_change *sc, uint64 maxhp);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_maxhp_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_maxhp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_maxhp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sc, maxhp);
}
@@ -76547,14 +84866,14 @@ unsigned int HP_status_calc_maxhp(struct block_list *bl, struct status_change *s
unsigned int HP_status_calc_maxsp(struct block_list *bl, struct status_change *sc, unsigned int maxsp) {
int hIndex = 0;
unsigned int retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_maxsp_pre ) {
+ if (HPMHooks.count.HP_status_calc_maxsp_pre > 0) {
unsigned int (*preHookFunc) (struct block_list **bl, struct status_change **sc, unsigned int *maxsp);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_maxsp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_maxsp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_maxsp_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sc, &maxsp);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -76562,9 +84881,9 @@ unsigned int HP_status_calc_maxsp(struct block_list *bl, struct status_change *s
{
retVal___ = HPMHooks.source.status.calc_maxsp(bl, sc, maxsp);
}
- if( HPMHooks.count.HP_status_calc_maxsp_post ) {
+ if (HPMHooks.count.HP_status_calc_maxsp_post > 0) {
unsigned int (*postHookFunc) (unsigned int retVal___, struct block_list *bl, struct status_change *sc, unsigned int maxsp);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_maxsp_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_maxsp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_maxsp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sc, maxsp);
}
@@ -76574,14 +84893,14 @@ unsigned int HP_status_calc_maxsp(struct block_list *bl, struct status_change *s
unsigned char HP_status_calc_element(struct block_list *bl, struct status_change *sc, int element) {
int hIndex = 0;
unsigned char retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_element_pre ) {
+ if (HPMHooks.count.HP_status_calc_element_pre > 0) {
unsigned char (*preHookFunc) (struct block_list **bl, struct status_change **sc, int *element);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_element_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_element_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_element_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sc, &element);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -76589,9 +84908,9 @@ unsigned char HP_status_calc_element(struct block_list *bl, struct status_change
{
retVal___ = HPMHooks.source.status.calc_element(bl, sc, element);
}
- if( HPMHooks.count.HP_status_calc_element_post ) {
+ if (HPMHooks.count.HP_status_calc_element_post > 0) {
unsigned char (*postHookFunc) (unsigned char retVal___, struct block_list *bl, struct status_change *sc, int element);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_element_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_element_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_element_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sc, element);
}
@@ -76601,14 +84920,14 @@ unsigned char HP_status_calc_element(struct block_list *bl, struct status_change
unsigned char HP_status_calc_element_lv(struct block_list *bl, struct status_change *sc, int lv) {
int hIndex = 0;
unsigned char retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_element_lv_pre ) {
+ if (HPMHooks.count.HP_status_calc_element_lv_pre > 0) {
unsigned char (*preHookFunc) (struct block_list **bl, struct status_change **sc, int *lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_element_lv_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_element_lv_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_element_lv_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sc, &lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -76616,9 +84935,9 @@ unsigned char HP_status_calc_element_lv(struct block_list *bl, struct status_cha
{
retVal___ = HPMHooks.source.status.calc_element_lv(bl, sc, lv);
}
- if( HPMHooks.count.HP_status_calc_element_lv_post ) {
+ if (HPMHooks.count.HP_status_calc_element_lv_post > 0) {
unsigned char (*postHookFunc) (unsigned char retVal___, struct block_list *bl, struct status_change *sc, int lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_element_lv_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_element_lv_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_element_lv_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sc, lv);
}
@@ -76628,14 +84947,14 @@ unsigned char HP_status_calc_element_lv(struct block_list *bl, struct status_cha
uint32 HP_status_calc_mode(const struct block_list *bl, const struct status_change *sc, uint32 mode) {
int hIndex = 0;
uint32 retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_mode_pre ) {
+ if (HPMHooks.count.HP_status_calc_mode_pre > 0) {
uint32 (*preHookFunc) (const struct block_list **bl, const struct status_change **sc, uint32 *mode);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_mode_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_mode_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_mode_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sc, &mode);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -76643,9 +84962,9 @@ uint32 HP_status_calc_mode(const struct block_list *bl, const struct status_chan
{
retVal___ = HPMHooks.source.status.calc_mode(bl, sc, mode);
}
- if( HPMHooks.count.HP_status_calc_mode_post ) {
+ if (HPMHooks.count.HP_status_calc_mode_post > 0) {
uint32 (*postHookFunc) (uint32 retVal___, const struct block_list *bl, const struct status_change *sc, uint32 mode);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_mode_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_mode_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_mode_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sc, mode);
}
@@ -76655,14 +84974,14 @@ uint32 HP_status_calc_mode(const struct block_list *bl, const struct status_chan
unsigned short HP_status_calc_ematk(struct block_list *bl, struct status_change *sc, int matk) {
int hIndex = 0;
unsigned short retVal___ = 0;
- if( HPMHooks.count.HP_status_calc_ematk_pre ) {
+ if (HPMHooks.count.HP_status_calc_ematk_pre > 0) {
unsigned short (*preHookFunc) (struct block_list **bl, struct status_change **sc, int *matk);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_ematk_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_ematk_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_ematk_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sc, &matk);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -76670,9 +84989,9 @@ unsigned short HP_status_calc_ematk(struct block_list *bl, struct status_change
{
retVal___ = HPMHooks.source.status.calc_ematk(bl, sc, matk);
}
- if( HPMHooks.count.HP_status_calc_ematk_post ) {
+ if (HPMHooks.count.HP_status_calc_ematk_post > 0) {
unsigned short (*postHookFunc) (unsigned short retVal___, struct block_list *bl, struct status_change *sc, int matk);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_ematk_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_ematk_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_ematk_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sc, matk);
}
@@ -76681,14 +85000,14 @@ unsigned short HP_status_calc_ematk(struct block_list *bl, struct status_change
}
void HP_status_calc_bl_main(struct block_list *bl, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_status_calc_bl_main_pre ) {
+ if (HPMHooks.count.HP_status_calc_bl_main_pre > 0) {
void (*preHookFunc) (struct block_list **bl, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_bl_main_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_bl_main_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_calc_bl_main_pre[hIndex].func;
preHookFunc(&bl, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -76696,9 +85015,9 @@ void HP_status_calc_bl_main(struct block_list *bl, int flag) {
{
HPMHooks.source.status.calc_bl_main(bl, flag);
}
- if( HPMHooks.count.HP_status_calc_bl_main_post ) {
+ if (HPMHooks.count.HP_status_calc_bl_main_post > 0) {
void (*postHookFunc) (struct block_list *bl, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_bl_main_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_calc_bl_main_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_calc_bl_main_post[hIndex].func;
postHookFunc(bl, flag);
}
@@ -76707,14 +85026,14 @@ void HP_status_calc_bl_main(struct block_list *bl, int flag) {
}
void HP_status_display_add(struct map_session_data *sd, enum sc_type type, int dval1, int dval2, int dval3) {
int hIndex = 0;
- if( HPMHooks.count.HP_status_display_add_pre ) {
+ if (HPMHooks.count.HP_status_display_add_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, enum sc_type *type, int *dval1, int *dval2, int *dval3);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_display_add_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_display_add_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_display_add_pre[hIndex].func;
preHookFunc(&sd, &type, &dval1, &dval2, &dval3);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -76722,9 +85041,9 @@ void HP_status_display_add(struct map_session_data *sd, enum sc_type type, int d
{
HPMHooks.source.status.display_add(sd, type, dval1, dval2, dval3);
}
- if( HPMHooks.count.HP_status_display_add_post ) {
+ if (HPMHooks.count.HP_status_display_add_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, enum sc_type type, int dval1, int dval2, int dval3);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_display_add_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_display_add_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_display_add_post[hIndex].func;
postHookFunc(sd, type, dval1, dval2, dval3);
}
@@ -76733,14 +85052,14 @@ void HP_status_display_add(struct map_session_data *sd, enum sc_type type, int d
}
void HP_status_display_remove(struct map_session_data *sd, enum sc_type type) {
int hIndex = 0;
- if( HPMHooks.count.HP_status_display_remove_pre ) {
+ if (HPMHooks.count.HP_status_display_remove_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, enum sc_type *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_display_remove_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_display_remove_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_display_remove_pre[hIndex].func;
preHookFunc(&sd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -76748,9 +85067,9 @@ void HP_status_display_remove(struct map_session_data *sd, enum sc_type type) {
{
HPMHooks.source.status.display_remove(sd, type);
}
- if( HPMHooks.count.HP_status_display_remove_post ) {
+ if (HPMHooks.count.HP_status_display_remove_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, enum sc_type type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_display_remove_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_display_remove_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_display_remove_post[hIndex].func;
postHookFunc(sd, type);
}
@@ -76760,16 +85079,16 @@ void HP_status_display_remove(struct map_session_data *sd, enum sc_type type) {
int HP_status_natural_heal(struct block_list *bl, va_list args) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_natural_heal_pre ) {
+ if (HPMHooks.count.HP_status_natural_heal_pre > 0) {
int (*preHookFunc) (struct block_list **bl, va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_natural_heal_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_natural_heal_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_status_natural_heal_pre[hIndex].func;
retVal___ = preHookFunc(&bl, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -76779,9 +85098,9 @@ int HP_status_natural_heal(struct block_list *bl, va_list args) {
retVal___ = HPMHooks.source.status.natural_heal(bl, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_status_natural_heal_post ) {
+ if (HPMHooks.count.HP_status_natural_heal_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_natural_heal_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_natural_heal_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_status_natural_heal_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, args___copy);
@@ -76793,14 +85112,14 @@ int HP_status_natural_heal(struct block_list *bl, va_list args) {
int HP_status_natural_heal_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_natural_heal_timer_pre ) {
+ if (HPMHooks.count.HP_status_natural_heal_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_natural_heal_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_natural_heal_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_natural_heal_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -76808,9 +85127,9 @@ int HP_status_natural_heal_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.status.natural_heal_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_status_natural_heal_timer_post ) {
+ if (HPMHooks.count.HP_status_natural_heal_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_natural_heal_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_natural_heal_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_natural_heal_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -76820,14 +85139,14 @@ int HP_status_natural_heal_timer(int tid, int64 tick, int id, intptr_t data) {
bool HP_status_readdb_job2(char *fields[], int columns, int current) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_status_readdb_job2_pre ) {
+ if (HPMHooks.count.HP_status_readdb_job2_pre > 0) {
bool (*preHookFunc) (char **fields[], int *columns, int *current);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_readdb_job2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_readdb_job2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_readdb_job2_pre[hIndex].func;
retVal___ = preHookFunc(&fields, &columns, &current);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -76835,9 +85154,9 @@ bool HP_status_readdb_job2(char *fields[], int columns, int current) {
{
retVal___ = HPMHooks.source.status.readdb_job2(fields, columns, current);
}
- if( HPMHooks.count.HP_status_readdb_job2_post ) {
+ if (HPMHooks.count.HP_status_readdb_job2_post > 0) {
bool (*postHookFunc) (bool retVal___, char *fields[], int columns, int current);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_readdb_job2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_readdb_job2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_readdb_job2_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fields, columns, current);
}
@@ -76847,14 +85166,14 @@ bool HP_status_readdb_job2(char *fields[], int columns, int current) {
bool HP_status_readdb_sizefix(char *fields[], int columns, int current) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_status_readdb_sizefix_pre ) {
+ if (HPMHooks.count.HP_status_readdb_sizefix_pre > 0) {
bool (*preHookFunc) (char **fields[], int *columns, int *current);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_readdb_sizefix_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_readdb_sizefix_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_readdb_sizefix_pre[hIndex].func;
retVal___ = preHookFunc(&fields, &columns, &current);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -76862,9 +85181,9 @@ bool HP_status_readdb_sizefix(char *fields[], int columns, int current) {
{
retVal___ = HPMHooks.source.status.readdb_sizefix(fields, columns, current);
}
- if( HPMHooks.count.HP_status_readdb_sizefix_post ) {
+ if (HPMHooks.count.HP_status_readdb_sizefix_post > 0) {
bool (*postHookFunc) (bool retVal___, char *fields[], int columns, int current);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_readdb_sizefix_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_readdb_sizefix_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_readdb_sizefix_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fields, columns, current);
}
@@ -76874,14 +85193,14 @@ bool HP_status_readdb_sizefix(char *fields[], int columns, int current) {
int HP_status_readdb_refine_libconfig(const char *filename) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_readdb_refine_libconfig_pre ) {
+ if (HPMHooks.count.HP_status_readdb_refine_libconfig_pre > 0) {
int (*preHookFunc) (const char **filename);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_readdb_refine_libconfig_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_readdb_refine_libconfig_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_readdb_refine_libconfig_pre[hIndex].func;
retVal___ = preHookFunc(&filename);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -76889,9 +85208,9 @@ int HP_status_readdb_refine_libconfig(const char *filename) {
{
retVal___ = HPMHooks.source.status.readdb_refine_libconfig(filename);
}
- if( HPMHooks.count.HP_status_readdb_refine_libconfig_post ) {
+ if (HPMHooks.count.HP_status_readdb_refine_libconfig_post > 0) {
int (*postHookFunc) (int retVal___, const char *filename);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_readdb_refine_libconfig_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_readdb_refine_libconfig_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_readdb_refine_libconfig_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename);
}
@@ -76901,14 +85220,14 @@ int HP_status_readdb_refine_libconfig(const char *filename) {
int HP_status_readdb_refine_libconfig_sub(struct config_setting_t *r, const char *name, const char *source) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_status_readdb_refine_libconfig_sub_pre ) {
+ if (HPMHooks.count.HP_status_readdb_refine_libconfig_sub_pre > 0) {
int (*preHookFunc) (struct config_setting_t **r, const char **name, const char **source);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_readdb_refine_libconfig_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_readdb_refine_libconfig_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_readdb_refine_libconfig_sub_pre[hIndex].func;
retVal___ = preHookFunc(&r, &name, &source);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -76916,9 +85235,9 @@ int HP_status_readdb_refine_libconfig_sub(struct config_setting_t *r, const char
{
retVal___ = HPMHooks.source.status.readdb_refine_libconfig_sub(r, name, source);
}
- if( HPMHooks.count.HP_status_readdb_refine_libconfig_sub_post ) {
+ if (HPMHooks.count.HP_status_readdb_refine_libconfig_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct config_setting_t *r, const char *name, const char *source);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_readdb_refine_libconfig_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_readdb_refine_libconfig_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_readdb_refine_libconfig_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, r, name, source);
}
@@ -76928,14 +85247,14 @@ int HP_status_readdb_refine_libconfig_sub(struct config_setting_t *r, const char
bool HP_status_readdb_scconfig(char *fields[], int columns, int current) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_status_readdb_scconfig_pre ) {
+ if (HPMHooks.count.HP_status_readdb_scconfig_pre > 0) {
bool (*preHookFunc) (char **fields[], int *columns, int *current);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_readdb_scconfig_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_readdb_scconfig_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_readdb_scconfig_pre[hIndex].func;
retVal___ = preHookFunc(&fields, &columns, &current);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -76943,9 +85262,9 @@ bool HP_status_readdb_scconfig(char *fields[], int columns, int current) {
{
retVal___ = HPMHooks.source.status.readdb_scconfig(fields, columns, current);
}
- if( HPMHooks.count.HP_status_readdb_scconfig_post ) {
+ if (HPMHooks.count.HP_status_readdb_scconfig_post > 0) {
bool (*postHookFunc) (bool retVal___, char *fields[], int columns, int current);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_readdb_scconfig_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_readdb_scconfig_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_readdb_scconfig_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fields, columns, current);
}
@@ -76954,14 +85273,14 @@ bool HP_status_readdb_scconfig(char *fields[], int columns, int current) {
}
void HP_status_read_job_db(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_status_read_job_db_pre ) {
+ if (HPMHooks.count.HP_status_read_job_db_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_read_job_db_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_read_job_db_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_read_job_db_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -76969,9 +85288,9 @@ void HP_status_read_job_db(void) {
{
HPMHooks.source.status.read_job_db();
}
- if( HPMHooks.count.HP_status_read_job_db_post ) {
+ if (HPMHooks.count.HP_status_read_job_db_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_read_job_db_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_read_job_db_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_read_job_db_post[hIndex].func;
postHookFunc();
}
@@ -76980,14 +85299,14 @@ void HP_status_read_job_db(void) {
}
void HP_status_read_job_db_sub(int idx, const char *name, struct config_setting_t *jdb) {
int hIndex = 0;
- if( HPMHooks.count.HP_status_read_job_db_sub_pre ) {
+ if (HPMHooks.count.HP_status_read_job_db_sub_pre > 0) {
void (*preHookFunc) (int *idx, const char **name, struct config_setting_t **jdb);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_read_job_db_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_read_job_db_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_read_job_db_sub_pre[hIndex].func;
preHookFunc(&idx, &name, &jdb);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -76995,9 +85314,9 @@ void HP_status_read_job_db_sub(int idx, const char *name, struct config_setting_
{
HPMHooks.source.status.read_job_db_sub(idx, name, jdb);
}
- if( HPMHooks.count.HP_status_read_job_db_sub_post ) {
+ if (HPMHooks.count.HP_status_read_job_db_sub_post > 0) {
void (*postHookFunc) (int idx, const char *name, struct config_setting_t *jdb);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_read_job_db_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_read_job_db_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_read_job_db_sub_post[hIndex].func;
postHookFunc(idx, name, jdb);
}
@@ -77006,14 +85325,14 @@ void HP_status_read_job_db_sub(int idx, const char *name, struct config_setting_
}
void HP_status_set_sc(uint16 skill_id, sc_type sc, int icon, unsigned int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_status_set_sc_pre ) {
+ if (HPMHooks.count.HP_status_set_sc_pre > 0) {
void (*preHookFunc) (uint16 *skill_id, sc_type *sc, int *icon, unsigned int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_set_sc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_set_sc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_set_sc_pre[hIndex].func;
preHookFunc(&skill_id, &sc, &icon, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -77021,9 +85340,9 @@ void HP_status_set_sc(uint16 skill_id, sc_type sc, int icon, unsigned int flag)
{
HPMHooks.source.status.set_sc(skill_id, sc, icon, flag);
}
- if( HPMHooks.count.HP_status_set_sc_post ) {
+ if (HPMHooks.count.HP_status_set_sc_post > 0) {
void (*postHookFunc) (uint16 skill_id, sc_type sc, int icon, unsigned int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_set_sc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_set_sc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_set_sc_post[hIndex].func;
postHookFunc(skill_id, sc, icon, flag);
}
@@ -77032,14 +85351,14 @@ void HP_status_set_sc(uint16 skill_id, sc_type sc, int icon, unsigned int flag)
}
void HP_status_copy(struct status_data *a, const struct status_data *b) {
int hIndex = 0;
- if( HPMHooks.count.HP_status_copy_pre ) {
+ if (HPMHooks.count.HP_status_copy_pre > 0) {
void (*preHookFunc) (struct status_data **a, const struct status_data **b);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_copy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_copy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_copy_pre[hIndex].func;
preHookFunc(&a, &b);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -77047,9 +85366,9 @@ void HP_status_copy(struct status_data *a, const struct status_data *b) {
{
HPMHooks.source.status.copy(a, b);
}
- if( HPMHooks.count.HP_status_copy_post ) {
+ if (HPMHooks.count.HP_status_copy_post > 0) {
void (*postHookFunc) (struct status_data *a, const struct status_data *b);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_copy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_copy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_copy_post[hIndex].func;
postHookFunc(a, b);
}
@@ -77059,14 +85378,14 @@ void HP_status_copy(struct status_data *a, const struct status_data *b) {
unsigned short HP_status_base_matk_min(const struct status_data *st) {
int hIndex = 0;
unsigned short retVal___ = 0;
- if( HPMHooks.count.HP_status_base_matk_min_pre ) {
+ if (HPMHooks.count.HP_status_base_matk_min_pre > 0) {
unsigned short (*preHookFunc) (const struct status_data **st);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_base_matk_min_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_base_matk_min_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_base_matk_min_pre[hIndex].func;
retVal___ = preHookFunc(&st);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -77074,9 +85393,9 @@ unsigned short HP_status_base_matk_min(const struct status_data *st) {
{
retVal___ = HPMHooks.source.status.base_matk_min(st);
}
- if( HPMHooks.count.HP_status_base_matk_min_post ) {
+ if (HPMHooks.count.HP_status_base_matk_min_post > 0) {
unsigned short (*postHookFunc) (unsigned short retVal___, const struct status_data *st);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_base_matk_min_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_base_matk_min_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_base_matk_min_post[hIndex].func;
retVal___ = postHookFunc(retVal___, st);
}
@@ -77086,14 +85405,14 @@ unsigned short HP_status_base_matk_min(const struct status_data *st) {
unsigned short HP_status_base_matk_max(const struct status_data *st) {
int hIndex = 0;
unsigned short retVal___ = 0;
- if( HPMHooks.count.HP_status_base_matk_max_pre ) {
+ if (HPMHooks.count.HP_status_base_matk_max_pre > 0) {
unsigned short (*preHookFunc) (const struct status_data **st);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_base_matk_max_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_base_matk_max_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_base_matk_max_pre[hIndex].func;
retVal___ = preHookFunc(&st);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -77101,9 +85420,9 @@ unsigned short HP_status_base_matk_max(const struct status_data *st) {
{
retVal___ = HPMHooks.source.status.base_matk_max(st);
}
- if( HPMHooks.count.HP_status_base_matk_max_post ) {
+ if (HPMHooks.count.HP_status_base_matk_max_post > 0) {
unsigned short (*postHookFunc) (unsigned short retVal___, const struct status_data *st);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_status_base_matk_max_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_base_matk_max_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_base_matk_max_post[hIndex].func;
retVal___ = postHookFunc(retVal___, st);
}
@@ -77113,14 +85432,14 @@ unsigned short HP_status_base_matk_max(const struct status_data *st) {
/* storage_interface */
void HP_storage_reconnect(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_storage_reconnect_pre ) {
+ if (HPMHooks.count.HP_storage_reconnect_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_storage_reconnect_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_storage_reconnect_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_storage_reconnect_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -77128,9 +85447,9 @@ void HP_storage_reconnect(void) {
{
HPMHooks.source.storage.reconnect();
}
- if( HPMHooks.count.HP_storage_reconnect_post ) {
+ if (HPMHooks.count.HP_storage_reconnect_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_storage_reconnect_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_storage_reconnect_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_storage_reconnect_post[hIndex].func;
postHookFunc();
}
@@ -77140,14 +85459,14 @@ void HP_storage_reconnect(void) {
int HP_storage_delitem(struct map_session_data *sd, int n, int amount) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_storage_delitem_pre ) {
+ if (HPMHooks.count.HP_storage_delitem_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *n, int *amount);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_storage_delitem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_storage_delitem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_storage_delitem_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &n, &amount);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -77155,9 +85474,9 @@ int HP_storage_delitem(struct map_session_data *sd, int n, int amount) {
{
retVal___ = HPMHooks.source.storage.delitem(sd, n, amount);
}
- if( HPMHooks.count.HP_storage_delitem_post ) {
+ if (HPMHooks.count.HP_storage_delitem_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int n, int amount);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_storage_delitem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_storage_delitem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_storage_delitem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, n, amount);
}
@@ -77167,14 +85486,14 @@ int HP_storage_delitem(struct map_session_data *sd, int n, int amount) {
int HP_storage_open(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_storage_open_pre ) {
+ if (HPMHooks.count.HP_storage_open_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_storage_open_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_storage_open_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_storage_open_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -77182,9 +85501,9 @@ int HP_storage_open(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.storage.open(sd);
}
- if( HPMHooks.count.HP_storage_open_post ) {
+ if (HPMHooks.count.HP_storage_open_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_storage_open_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_storage_open_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_storage_open_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -77194,14 +85513,14 @@ int HP_storage_open(struct map_session_data *sd) {
int HP_storage_add(struct map_session_data *sd, int index, int amount) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_storage_add_pre ) {
+ if (HPMHooks.count.HP_storage_add_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *index, int *amount);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_storage_add_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_storage_add_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_storage_add_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &index, &amount);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -77209,9 +85528,9 @@ int HP_storage_add(struct map_session_data *sd, int index, int amount) {
{
retVal___ = HPMHooks.source.storage.add(sd, index, amount);
}
- if( HPMHooks.count.HP_storage_add_post ) {
+ if (HPMHooks.count.HP_storage_add_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int index, int amount);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_storage_add_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_storage_add_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_storage_add_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, index, amount);
}
@@ -77221,14 +85540,14 @@ int HP_storage_add(struct map_session_data *sd, int index, int amount) {
int HP_storage_get(struct map_session_data *sd, int index, int amount) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_storage_get_pre ) {
+ if (HPMHooks.count.HP_storage_get_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *index, int *amount);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_storage_get_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_storage_get_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_storage_get_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &index, &amount);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -77236,9 +85555,9 @@ int HP_storage_get(struct map_session_data *sd, int index, int amount) {
{
retVal___ = HPMHooks.source.storage.get(sd, index, amount);
}
- if( HPMHooks.count.HP_storage_get_post ) {
+ if (HPMHooks.count.HP_storage_get_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int index, int amount);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_storage_get_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_storage_get_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_storage_get_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, index, amount);
}
@@ -77248,14 +85567,14 @@ int HP_storage_get(struct map_session_data *sd, int index, int amount) {
int HP_storage_additem(struct map_session_data *sd, struct item *item_data, int amount) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_storage_additem_pre ) {
+ if (HPMHooks.count.HP_storage_additem_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct item **item_data, int *amount);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_storage_additem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_storage_additem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_storage_additem_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &item_data, &amount);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -77263,9 +85582,9 @@ int HP_storage_additem(struct map_session_data *sd, struct item *item_data, int
{
retVal___ = HPMHooks.source.storage.additem(sd, item_data, amount);
}
- if( HPMHooks.count.HP_storage_additem_post ) {
+ if (HPMHooks.count.HP_storage_additem_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct item *item_data, int amount);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_storage_additem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_storage_additem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_storage_additem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, item_data, amount);
}
@@ -77275,14 +85594,14 @@ int HP_storage_additem(struct map_session_data *sd, struct item *item_data, int
int HP_storage_addfromcart(struct map_session_data *sd, int index, int amount) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_storage_addfromcart_pre ) {
+ if (HPMHooks.count.HP_storage_addfromcart_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *index, int *amount);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_storage_addfromcart_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_storage_addfromcart_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_storage_addfromcart_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &index, &amount);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -77290,9 +85609,9 @@ int HP_storage_addfromcart(struct map_session_data *sd, int index, int amount) {
{
retVal___ = HPMHooks.source.storage.addfromcart(sd, index, amount);
}
- if( HPMHooks.count.HP_storage_addfromcart_post ) {
+ if (HPMHooks.count.HP_storage_addfromcart_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int index, int amount);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_storage_addfromcart_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_storage_addfromcart_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_storage_addfromcart_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, index, amount);
}
@@ -77302,14 +85621,14 @@ int HP_storage_addfromcart(struct map_session_data *sd, int index, int amount) {
int HP_storage_gettocart(struct map_session_data *sd, int index, int amount) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_storage_gettocart_pre ) {
+ if (HPMHooks.count.HP_storage_gettocart_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, int *index, int *amount);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_storage_gettocart_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_storage_gettocart_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_storage_gettocart_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &index, &amount);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -77317,9 +85636,9 @@ int HP_storage_gettocart(struct map_session_data *sd, int index, int amount) {
{
retVal___ = HPMHooks.source.storage.gettocart(sd, index, amount);
}
- if( HPMHooks.count.HP_storage_gettocart_post ) {
+ if (HPMHooks.count.HP_storage_gettocart_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, int index, int amount);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_storage_gettocart_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_storage_gettocart_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_storage_gettocart_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, index, amount);
}
@@ -77328,14 +85647,14 @@ int HP_storage_gettocart(struct map_session_data *sd, int index, int amount) {
}
void HP_storage_close(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_storage_close_pre ) {
+ if (HPMHooks.count.HP_storage_close_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_storage_close_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_storage_close_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_storage_close_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -77343,9 +85662,9 @@ void HP_storage_close(struct map_session_data *sd) {
{
HPMHooks.source.storage.close(sd);
}
- if( HPMHooks.count.HP_storage_close_post ) {
+ if (HPMHooks.count.HP_storage_close_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_storage_close_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_storage_close_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_storage_close_post[hIndex].func;
postHookFunc(sd);
}
@@ -77354,14 +85673,14 @@ void HP_storage_close(struct map_session_data *sd) {
}
void HP_storage_pc_quit(struct map_session_data *sd, int flag) {
int hIndex = 0;
- if( HPMHooks.count.HP_storage_pc_quit_pre ) {
+ if (HPMHooks.count.HP_storage_pc_quit_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_storage_pc_quit_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_storage_pc_quit_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_storage_pc_quit_pre[hIndex].func;
preHookFunc(&sd, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -77369,9 +85688,9 @@ void HP_storage_pc_quit(struct map_session_data *sd, int flag) {
{
HPMHooks.source.storage.pc_quit(sd, flag);
}
- if( HPMHooks.count.HP_storage_pc_quit_post ) {
+ if (HPMHooks.count.HP_storage_pc_quit_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_storage_pc_quit_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_storage_pc_quit_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_storage_pc_quit_post[hIndex].func;
postHookFunc(sd, flag);
}
@@ -77381,14 +85700,14 @@ void HP_storage_pc_quit(struct map_session_data *sd, int flag) {
int HP_storage_comp_item(const void *i1_, const void *i2_) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_storage_comp_item_pre ) {
+ if (HPMHooks.count.HP_storage_comp_item_pre > 0) {
int (*preHookFunc) (const void **i1_, const void **i2_);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_storage_comp_item_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_storage_comp_item_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_storage_comp_item_pre[hIndex].func;
retVal___ = preHookFunc(&i1_, &i2_);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -77396,9 +85715,9 @@ int HP_storage_comp_item(const void *i1_, const void *i2_) {
{
retVal___ = HPMHooks.source.storage.comp_item(i1_, i2_);
}
- if( HPMHooks.count.HP_storage_comp_item_post ) {
+ if (HPMHooks.count.HP_storage_comp_item_post > 0) {
int (*postHookFunc) (int retVal___, const void *i1_, const void *i2_);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_storage_comp_item_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_storage_comp_item_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_storage_comp_item_post[hIndex].func;
retVal___ = postHookFunc(retVal___, i1_, i2_);
}
@@ -77407,14 +85726,14 @@ int HP_storage_comp_item(const void *i1_, const void *i2_) {
}
void HP_storage_sortitem(struct item *items, unsigned int size) {
int hIndex = 0;
- if( HPMHooks.count.HP_storage_sortitem_pre ) {
+ if (HPMHooks.count.HP_storage_sortitem_pre > 0) {
void (*preHookFunc) (struct item **items, unsigned int *size);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_storage_sortitem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_storage_sortitem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_storage_sortitem_pre[hIndex].func;
preHookFunc(&items, &size);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -77422,9 +85741,9 @@ void HP_storage_sortitem(struct item *items, unsigned int size) {
{
HPMHooks.source.storage.sortitem(items, size);
}
- if( HPMHooks.count.HP_storage_sortitem_post ) {
+ if (HPMHooks.count.HP_storage_sortitem_post > 0) {
void (*postHookFunc) (struct item *items, unsigned int size);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_storage_sortitem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_storage_sortitem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_storage_sortitem_post[hIndex].func;
postHookFunc(items, size);
}
@@ -77434,16 +85753,16 @@ void HP_storage_sortitem(struct item *items, unsigned int size) {
int HP_storage_reconnect_sub(union DBKey key, struct DBData *data, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_storage_reconnect_sub_pre ) {
+ if (HPMHooks.count.HP_storage_reconnect_sub_pre > 0) {
int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_storage_reconnect_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_storage_reconnect_sub_pre; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
preHookFunc = HPMHooks.list.HP_storage_reconnect_sub_pre[hIndex].func;
retVal___ = preHookFunc(&key, &data, ap___copy);
va_end(ap___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -77453,9 +85772,9 @@ int HP_storage_reconnect_sub(union DBKey key, struct DBData *data, va_list ap) {
retVal___ = HPMHooks.source.storage.reconnect_sub(key, data, ap___copy);
va_end(ap___copy);
}
- if( HPMHooks.count.HP_storage_reconnect_sub_post ) {
+ if (HPMHooks.count.HP_storage_reconnect_sub_post > 0) {
int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_storage_reconnect_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_storage_reconnect_sub_post; hIndex++) {
va_list ap___copy; va_copy(ap___copy, ap);
postHookFunc = HPMHooks.list.HP_storage_reconnect_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, key, data, ap___copy);
@@ -77468,14 +85787,14 @@ int HP_storage_reconnect_sub(union DBKey key, struct DBData *data, va_list ap) {
StringBuf* HP_StrBuf_Malloc(void) {
int hIndex = 0;
StringBuf* retVal___ = NULL;
- if( HPMHooks.count.HP_StrBuf_Malloc_pre ) {
+ if (HPMHooks.count.HP_StrBuf_Malloc_pre > 0) {
StringBuf* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Malloc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Malloc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_StrBuf_Malloc_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -77483,9 +85802,9 @@ StringBuf* HP_StrBuf_Malloc(void) {
{
retVal___ = HPMHooks.source.StrBuf.Malloc();
}
- if( HPMHooks.count.HP_StrBuf_Malloc_post ) {
+ if (HPMHooks.count.HP_StrBuf_Malloc_post > 0) {
StringBuf* (*postHookFunc) (StringBuf* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Malloc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Malloc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_StrBuf_Malloc_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -77494,14 +85813,14 @@ StringBuf* HP_StrBuf_Malloc(void) {
}
void HP_StrBuf_Init(StringBuf *self) {
int hIndex = 0;
- if( HPMHooks.count.HP_StrBuf_Init_pre ) {
+ if (HPMHooks.count.HP_StrBuf_Init_pre > 0) {
void (*preHookFunc) (StringBuf **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_StrBuf_Init_pre[hIndex].func;
preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -77509,9 +85828,9 @@ void HP_StrBuf_Init(StringBuf *self) {
{
HPMHooks.source.StrBuf.Init(self);
}
- if( HPMHooks.count.HP_StrBuf_Init_post ) {
+ if (HPMHooks.count.HP_StrBuf_Init_post > 0) {
void (*postHookFunc) (StringBuf *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_StrBuf_Init_post[hIndex].func;
postHookFunc(self);
}
@@ -77521,16 +85840,16 @@ void HP_StrBuf_Init(StringBuf *self) {
int HP_StrBuf_Vprintf(StringBuf *self, const char *fmt, va_list args) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_StrBuf_Vprintf_pre ) {
+ if (HPMHooks.count.HP_StrBuf_Vprintf_pre > 0) {
int (*preHookFunc) (StringBuf **self, const char **fmt, va_list args);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Vprintf_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Vprintf_pre; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
preHookFunc = HPMHooks.list.HP_StrBuf_Vprintf_pre[hIndex].func;
retVal___ = preHookFunc(&self, &fmt, args___copy);
va_end(args___copy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -77540,9 +85859,9 @@ int HP_StrBuf_Vprintf(StringBuf *self, const char *fmt, va_list args) {
retVal___ = HPMHooks.source.StrBuf.Vprintf(self, fmt, args___copy);
va_end(args___copy);
}
- if( HPMHooks.count.HP_StrBuf_Vprintf_post ) {
+ if (HPMHooks.count.HP_StrBuf_Vprintf_post > 0) {
int (*postHookFunc) (int retVal___, StringBuf *self, const char *fmt, va_list args);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Vprintf_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Vprintf_post; hIndex++) {
va_list args___copy; va_copy(args___copy, args);
postHookFunc = HPMHooks.list.HP_StrBuf_Vprintf_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, fmt, args___copy);
@@ -77554,14 +85873,14 @@ int HP_StrBuf_Vprintf(StringBuf *self, const char *fmt, va_list args) {
int HP_StrBuf_Append(StringBuf *self, const StringBuf *sbuf) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_StrBuf_Append_pre ) {
+ if (HPMHooks.count.HP_StrBuf_Append_pre > 0) {
int (*preHookFunc) (StringBuf **self, const StringBuf **sbuf);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Append_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Append_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_StrBuf_Append_pre[hIndex].func;
retVal___ = preHookFunc(&self, &sbuf);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -77569,9 +85888,9 @@ int HP_StrBuf_Append(StringBuf *self, const StringBuf *sbuf) {
{
retVal___ = HPMHooks.source.StrBuf.Append(self, sbuf);
}
- if( HPMHooks.count.HP_StrBuf_Append_post ) {
+ if (HPMHooks.count.HP_StrBuf_Append_post > 0) {
int (*postHookFunc) (int retVal___, StringBuf *self, const StringBuf *sbuf);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Append_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Append_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_StrBuf_Append_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, sbuf);
}
@@ -77581,14 +85900,14 @@ int HP_StrBuf_Append(StringBuf *self, const StringBuf *sbuf) {
int HP_StrBuf_AppendStr(StringBuf *self, const char *str) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_StrBuf_AppendStr_pre ) {
+ if (HPMHooks.count.HP_StrBuf_AppendStr_pre > 0) {
int (*preHookFunc) (StringBuf **self, const char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_AppendStr_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_AppendStr_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_StrBuf_AppendStr_pre[hIndex].func;
retVal___ = preHookFunc(&self, &str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -77596,9 +85915,9 @@ int HP_StrBuf_AppendStr(StringBuf *self, const char *str) {
{
retVal___ = HPMHooks.source.StrBuf.AppendStr(self, str);
}
- if( HPMHooks.count.HP_StrBuf_AppendStr_post ) {
+ if (HPMHooks.count.HP_StrBuf_AppendStr_post > 0) {
int (*postHookFunc) (int retVal___, StringBuf *self, const char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_AppendStr_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_AppendStr_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_StrBuf_AppendStr_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self, str);
}
@@ -77608,14 +85927,14 @@ int HP_StrBuf_AppendStr(StringBuf *self, const char *str) {
int HP_StrBuf_Length(StringBuf *self) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_StrBuf_Length_pre ) {
+ if (HPMHooks.count.HP_StrBuf_Length_pre > 0) {
int (*preHookFunc) (StringBuf **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Length_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Length_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_StrBuf_Length_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -77623,9 +85942,9 @@ int HP_StrBuf_Length(StringBuf *self) {
{
retVal___ = HPMHooks.source.StrBuf.Length(self);
}
- if( HPMHooks.count.HP_StrBuf_Length_post ) {
+ if (HPMHooks.count.HP_StrBuf_Length_post > 0) {
int (*postHookFunc) (int retVal___, StringBuf *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Length_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Length_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_StrBuf_Length_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -77635,14 +85954,14 @@ int HP_StrBuf_Length(StringBuf *self) {
char* HP_StrBuf_Value(StringBuf *self) {
int hIndex = 0;
char* retVal___ = NULL;
- if( HPMHooks.count.HP_StrBuf_Value_pre ) {
+ if (HPMHooks.count.HP_StrBuf_Value_pre > 0) {
char* (*preHookFunc) (StringBuf **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Value_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Value_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_StrBuf_Value_pre[hIndex].func;
retVal___ = preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -77650,9 +85969,9 @@ char* HP_StrBuf_Value(StringBuf *self) {
{
retVal___ = HPMHooks.source.StrBuf.Value(self);
}
- if( HPMHooks.count.HP_StrBuf_Value_post ) {
+ if (HPMHooks.count.HP_StrBuf_Value_post > 0) {
char* (*postHookFunc) (char* retVal___, StringBuf *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Value_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Value_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_StrBuf_Value_post[hIndex].func;
retVal___ = postHookFunc(retVal___, self);
}
@@ -77661,14 +85980,14 @@ char* HP_StrBuf_Value(StringBuf *self) {
}
void HP_StrBuf_Clear(StringBuf *self) {
int hIndex = 0;
- if( HPMHooks.count.HP_StrBuf_Clear_pre ) {
+ if (HPMHooks.count.HP_StrBuf_Clear_pre > 0) {
void (*preHookFunc) (StringBuf **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Clear_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Clear_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_StrBuf_Clear_pre[hIndex].func;
preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -77676,9 +85995,9 @@ void HP_StrBuf_Clear(StringBuf *self) {
{
HPMHooks.source.StrBuf.Clear(self);
}
- if( HPMHooks.count.HP_StrBuf_Clear_post ) {
+ if (HPMHooks.count.HP_StrBuf_Clear_post > 0) {
void (*postHookFunc) (StringBuf *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Clear_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Clear_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_StrBuf_Clear_post[hIndex].func;
postHookFunc(self);
}
@@ -77687,14 +86006,14 @@ void HP_StrBuf_Clear(StringBuf *self) {
}
void HP_StrBuf_Destroy(StringBuf *self) {
int hIndex = 0;
- if( HPMHooks.count.HP_StrBuf_Destroy_pre ) {
+ if (HPMHooks.count.HP_StrBuf_Destroy_pre > 0) {
void (*preHookFunc) (StringBuf **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Destroy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Destroy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_StrBuf_Destroy_pre[hIndex].func;
preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -77702,9 +86021,9 @@ void HP_StrBuf_Destroy(StringBuf *self) {
{
HPMHooks.source.StrBuf.Destroy(self);
}
- if( HPMHooks.count.HP_StrBuf_Destroy_post ) {
+ if (HPMHooks.count.HP_StrBuf_Destroy_post > 0) {
void (*postHookFunc) (StringBuf *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Destroy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Destroy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_StrBuf_Destroy_post[hIndex].func;
postHookFunc(self);
}
@@ -77713,14 +86032,14 @@ void HP_StrBuf_Destroy(StringBuf *self) {
}
void HP_StrBuf_Free(StringBuf *self) {
int hIndex = 0;
- if( HPMHooks.count.HP_StrBuf_Free_pre ) {
+ if (HPMHooks.count.HP_StrBuf_Free_pre > 0) {
void (*preHookFunc) (StringBuf **self);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Free_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Free_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_StrBuf_Free_pre[hIndex].func;
preHookFunc(&self);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -77728,9 +86047,9 @@ void HP_StrBuf_Free(StringBuf *self) {
{
HPMHooks.source.StrBuf.Free(self);
}
- if( HPMHooks.count.HP_StrBuf_Free_post ) {
+ if (HPMHooks.count.HP_StrBuf_Free_post > 0) {
void (*postHookFunc) (StringBuf *self);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Free_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_StrBuf_Free_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_StrBuf_Free_post[hIndex].func;
postHookFunc(self);
}
@@ -77741,14 +86060,14 @@ void HP_StrBuf_Free(StringBuf *self) {
char* HP_strlib_jstrescape(char *pt) {
int hIndex = 0;
char* retVal___ = NULL;
- if( HPMHooks.count.HP_strlib_jstrescape_pre ) {
+ if (HPMHooks.count.HP_strlib_jstrescape_pre > 0) {
char* (*preHookFunc) (char **pt);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jstrescape_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jstrescape_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_jstrescape_pre[hIndex].func;
retVal___ = preHookFunc(&pt);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -77756,9 +86075,9 @@ char* HP_strlib_jstrescape(char *pt) {
{
retVal___ = HPMHooks.source.strlib.jstrescape(pt);
}
- if( HPMHooks.count.HP_strlib_jstrescape_post ) {
+ if (HPMHooks.count.HP_strlib_jstrescape_post > 0) {
char* (*postHookFunc) (char* retVal___, char *pt);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jstrescape_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jstrescape_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_jstrescape_post[hIndex].func;
retVal___ = postHookFunc(retVal___, pt);
}
@@ -77768,14 +86087,14 @@ char* HP_strlib_jstrescape(char *pt) {
char* HP_strlib_jstrescapecpy(char *pt, const char *spt) {
int hIndex = 0;
char* retVal___ = NULL;
- if( HPMHooks.count.HP_strlib_jstrescapecpy_pre ) {
+ if (HPMHooks.count.HP_strlib_jstrescapecpy_pre > 0) {
char* (*preHookFunc) (char **pt, const char **spt);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jstrescapecpy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jstrescapecpy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_jstrescapecpy_pre[hIndex].func;
retVal___ = preHookFunc(&pt, &spt);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -77783,9 +86102,9 @@ char* HP_strlib_jstrescapecpy(char *pt, const char *spt) {
{
retVal___ = HPMHooks.source.strlib.jstrescapecpy(pt, spt);
}
- if( HPMHooks.count.HP_strlib_jstrescapecpy_post ) {
+ if (HPMHooks.count.HP_strlib_jstrescapecpy_post > 0) {
char* (*postHookFunc) (char* retVal___, char *pt, const char *spt);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jstrescapecpy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jstrescapecpy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_jstrescapecpy_post[hIndex].func;
retVal___ = postHookFunc(retVal___, pt, spt);
}
@@ -77795,14 +86114,14 @@ char* HP_strlib_jstrescapecpy(char *pt, const char *spt) {
int HP_strlib_jmemescapecpy(char *pt, const char *spt, int size) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_strlib_jmemescapecpy_pre ) {
+ if (HPMHooks.count.HP_strlib_jmemescapecpy_pre > 0) {
int (*preHookFunc) (char **pt, const char **spt, int *size);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jmemescapecpy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jmemescapecpy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_jmemescapecpy_pre[hIndex].func;
retVal___ = preHookFunc(&pt, &spt, &size);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -77810,9 +86129,9 @@ int HP_strlib_jmemescapecpy(char *pt, const char *spt, int size) {
{
retVal___ = HPMHooks.source.strlib.jmemescapecpy(pt, spt, size);
}
- if( HPMHooks.count.HP_strlib_jmemescapecpy_post ) {
+ if (HPMHooks.count.HP_strlib_jmemescapecpy_post > 0) {
int (*postHookFunc) (int retVal___, char *pt, const char *spt, int size);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jmemescapecpy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_jmemescapecpy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_jmemescapecpy_post[hIndex].func;
retVal___ = postHookFunc(retVal___, pt, spt, size);
}
@@ -77822,14 +86141,14 @@ int HP_strlib_jmemescapecpy(char *pt, const char *spt, int size) {
int HP_strlib_remove_control_chars_(char *str) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_strlib_remove_control_chars__pre ) {
+ if (HPMHooks.count.HP_strlib_remove_control_chars__pre > 0) {
int (*preHookFunc) (char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_remove_control_chars__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_remove_control_chars__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_remove_control_chars__pre[hIndex].func;
retVal___ = preHookFunc(&str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -77837,9 +86156,9 @@ int HP_strlib_remove_control_chars_(char *str) {
{
retVal___ = HPMHooks.source.strlib.remove_control_chars_(str);
}
- if( HPMHooks.count.HP_strlib_remove_control_chars__post ) {
+ if (HPMHooks.count.HP_strlib_remove_control_chars__post > 0) {
int (*postHookFunc) (int retVal___, char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_remove_control_chars__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_remove_control_chars__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_remove_control_chars__post[hIndex].func;
retVal___ = postHookFunc(retVal___, str);
}
@@ -77849,14 +86168,14 @@ int HP_strlib_remove_control_chars_(char *str) {
char* HP_strlib_trim_(char *str) {
int hIndex = 0;
char* retVal___ = NULL;
- if( HPMHooks.count.HP_strlib_trim__pre ) {
+ if (HPMHooks.count.HP_strlib_trim__pre > 0) {
char* (*preHookFunc) (char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_trim__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_trim__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_trim__pre[hIndex].func;
retVal___ = preHookFunc(&str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -77864,9 +86183,9 @@ char* HP_strlib_trim_(char *str) {
{
retVal___ = HPMHooks.source.strlib.trim_(str);
}
- if( HPMHooks.count.HP_strlib_trim__post ) {
+ if (HPMHooks.count.HP_strlib_trim__post > 0) {
char* (*postHookFunc) (char* retVal___, char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_trim__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_trim__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_trim__post[hIndex].func;
retVal___ = postHookFunc(retVal___, str);
}
@@ -77876,14 +86195,14 @@ char* HP_strlib_trim_(char *str) {
char* HP_strlib_normalize_name_(char *str, const char *delims) {
int hIndex = 0;
char* retVal___ = NULL;
- if( HPMHooks.count.HP_strlib_normalize_name__pre ) {
+ if (HPMHooks.count.HP_strlib_normalize_name__pre > 0) {
char* (*preHookFunc) (char **str, const char **delims);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_normalize_name__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_normalize_name__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_normalize_name__pre[hIndex].func;
retVal___ = preHookFunc(&str, &delims);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -77891,9 +86210,9 @@ char* HP_strlib_normalize_name_(char *str, const char *delims) {
{
retVal___ = HPMHooks.source.strlib.normalize_name_(str, delims);
}
- if( HPMHooks.count.HP_strlib_normalize_name__post ) {
+ if (HPMHooks.count.HP_strlib_normalize_name__post > 0) {
char* (*postHookFunc) (char* retVal___, char *str, const char *delims);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_normalize_name__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_normalize_name__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_normalize_name__post[hIndex].func;
retVal___ = postHookFunc(retVal___, str, delims);
}
@@ -77903,14 +86222,14 @@ char* HP_strlib_normalize_name_(char *str, const char *delims) {
const char* HP_strlib_stristr_(const char *haystack, const char *needle) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_strlib_stristr__pre ) {
+ if (HPMHooks.count.HP_strlib_stristr__pre > 0) {
const char* (*preHookFunc) (const char **haystack, const char **needle);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_stristr__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_stristr__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_stristr__pre[hIndex].func;
retVal___ = preHookFunc(&haystack, &needle);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -77918,9 +86237,9 @@ const char* HP_strlib_stristr_(const char *haystack, const char *needle) {
{
retVal___ = HPMHooks.source.strlib.stristr_(haystack, needle);
}
- if( HPMHooks.count.HP_strlib_stristr__post ) {
+ if (HPMHooks.count.HP_strlib_stristr__post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *haystack, const char *needle);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_stristr__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_stristr__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_stristr__post[hIndex].func;
retVal___ = postHookFunc(retVal___, haystack, needle);
}
@@ -77930,14 +86249,14 @@ const char* HP_strlib_stristr_(const char *haystack, const char *needle) {
size_t HP_strlib_strnlen_(const char *string, size_t maxlen) {
int hIndex = 0;
size_t retVal___ = 0;
- if( HPMHooks.count.HP_strlib_strnlen__pre ) {
+ if (HPMHooks.count.HP_strlib_strnlen__pre > 0) {
size_t (*preHookFunc) (const char **string, size_t *maxlen);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strnlen__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strnlen__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_strnlen__pre[hIndex].func;
retVal___ = preHookFunc(&string, &maxlen);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -77945,9 +86264,9 @@ size_t HP_strlib_strnlen_(const char *string, size_t maxlen) {
{
retVal___ = HPMHooks.source.strlib.strnlen_(string, maxlen);
}
- if( HPMHooks.count.HP_strlib_strnlen__post ) {
+ if (HPMHooks.count.HP_strlib_strnlen__post > 0) {
size_t (*postHookFunc) (size_t retVal___, const char *string, size_t maxlen);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strnlen__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strnlen__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_strnlen__post[hIndex].func;
retVal___ = postHookFunc(retVal___, string, maxlen);
}
@@ -77957,14 +86276,14 @@ size_t HP_strlib_strnlen_(const char *string, size_t maxlen) {
char* HP_strlib_strtok_r_(char *s1, const char *s2, char **lasts) {
int hIndex = 0;
char* retVal___ = NULL;
- if( HPMHooks.count.HP_strlib_strtok_r__pre ) {
+ if (HPMHooks.count.HP_strlib_strtok_r__pre > 0) {
char* (*preHookFunc) (char **s1, const char **s2, char ***lasts);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strtok_r__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strtok_r__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_strtok_r__pre[hIndex].func;
retVal___ = preHookFunc(&s1, &s2, &lasts);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -77972,9 +86291,9 @@ char* HP_strlib_strtok_r_(char *s1, const char *s2, char **lasts) {
{
retVal___ = HPMHooks.source.strlib.strtok_r_(s1, s2, lasts);
}
- if( HPMHooks.count.HP_strlib_strtok_r__post ) {
+ if (HPMHooks.count.HP_strlib_strtok_r__post > 0) {
char* (*postHookFunc) (char* retVal___, char *s1, const char *s2, char **lasts);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strtok_r__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strtok_r__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_strtok_r__post[hIndex].func;
retVal___ = postHookFunc(retVal___, s1, s2, lasts);
}
@@ -77984,14 +86303,14 @@ char* HP_strlib_strtok_r_(char *s1, const char *s2, char **lasts) {
int HP_strlib_e_mail_check_(char *email) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_strlib_e_mail_check__pre ) {
+ if (HPMHooks.count.HP_strlib_e_mail_check__pre > 0) {
int (*preHookFunc) (char **email);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_e_mail_check__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_e_mail_check__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_e_mail_check__pre[hIndex].func;
retVal___ = preHookFunc(&email);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -77999,9 +86318,9 @@ int HP_strlib_e_mail_check_(char *email) {
{
retVal___ = HPMHooks.source.strlib.e_mail_check_(email);
}
- if( HPMHooks.count.HP_strlib_e_mail_check__post ) {
+ if (HPMHooks.count.HP_strlib_e_mail_check__post > 0) {
int (*postHookFunc) (int retVal___, char *email);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_e_mail_check__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_e_mail_check__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_e_mail_check__post[hIndex].func;
retVal___ = postHookFunc(retVal___, email);
}
@@ -78011,14 +86330,14 @@ int HP_strlib_e_mail_check_(char *email) {
int HP_strlib_config_switch_(const char *str) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_strlib_config_switch__pre ) {
+ if (HPMHooks.count.HP_strlib_config_switch__pre > 0) {
int (*preHookFunc) (const char **str);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_config_switch__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_config_switch__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_config_switch__pre[hIndex].func;
retVal___ = preHookFunc(&str);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -78026,9 +86345,9 @@ int HP_strlib_config_switch_(const char *str) {
{
retVal___ = HPMHooks.source.strlib.config_switch_(str);
}
- if( HPMHooks.count.HP_strlib_config_switch__post ) {
+ if (HPMHooks.count.HP_strlib_config_switch__post > 0) {
int (*postHookFunc) (int retVal___, const char *str);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_config_switch__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_config_switch__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_config_switch__post[hIndex].func;
retVal___ = postHookFunc(retVal___, str);
}
@@ -78038,14 +86357,14 @@ int HP_strlib_config_switch_(const char *str) {
char* HP_strlib_safestrncpy_(char *dst, const char *src, size_t n) {
int hIndex = 0;
char* retVal___ = NULL;
- if( HPMHooks.count.HP_strlib_safestrncpy__pre ) {
+ if (HPMHooks.count.HP_strlib_safestrncpy__pre > 0) {
char* (*preHookFunc) (char **dst, const char **src, size_t *n);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_safestrncpy__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_safestrncpy__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_safestrncpy__pre[hIndex].func;
retVal___ = preHookFunc(&dst, &src, &n);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -78053,9 +86372,9 @@ char* HP_strlib_safestrncpy_(char *dst, const char *src, size_t n) {
{
retVal___ = HPMHooks.source.strlib.safestrncpy_(dst, src, n);
}
- if( HPMHooks.count.HP_strlib_safestrncpy__post ) {
+ if (HPMHooks.count.HP_strlib_safestrncpy__post > 0) {
char* (*postHookFunc) (char* retVal___, char *dst, const char *src, size_t n);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_safestrncpy__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_safestrncpy__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_safestrncpy__post[hIndex].func;
retVal___ = postHookFunc(retVal___, dst, src, n);
}
@@ -78065,14 +86384,14 @@ char* HP_strlib_safestrncpy_(char *dst, const char *src, size_t n) {
size_t HP_strlib_safestrnlen_(const char *string, size_t maxlen) {
int hIndex = 0;
size_t retVal___ = 0;
- if( HPMHooks.count.HP_strlib_safestrnlen__pre ) {
+ if (HPMHooks.count.HP_strlib_safestrnlen__pre > 0) {
size_t (*preHookFunc) (const char **string, size_t *maxlen);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_safestrnlen__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_safestrnlen__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_safestrnlen__pre[hIndex].func;
retVal___ = preHookFunc(&string, &maxlen);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -78080,9 +86399,9 @@ size_t HP_strlib_safestrnlen_(const char *string, size_t maxlen) {
{
retVal___ = HPMHooks.source.strlib.safestrnlen_(string, maxlen);
}
- if( HPMHooks.count.HP_strlib_safestrnlen__post ) {
+ if (HPMHooks.count.HP_strlib_safestrnlen__post > 0) {
size_t (*postHookFunc) (size_t retVal___, const char *string, size_t maxlen);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_safestrnlen__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_safestrnlen__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_safestrnlen__post[hIndex].func;
retVal___ = postHookFunc(retVal___, string, maxlen);
}
@@ -78092,14 +86411,14 @@ size_t HP_strlib_safestrnlen_(const char *string, size_t maxlen) {
int HP_strlib_strline_(const char *str, size_t pos) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_strlib_strline__pre ) {
+ if (HPMHooks.count.HP_strlib_strline__pre > 0) {
int (*preHookFunc) (const char **str, size_t *pos);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strline__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strline__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_strline__pre[hIndex].func;
retVal___ = preHookFunc(&str, &pos);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -78107,9 +86426,9 @@ int HP_strlib_strline_(const char *str, size_t pos) {
{
retVal___ = HPMHooks.source.strlib.strline_(str, pos);
}
- if( HPMHooks.count.HP_strlib_strline__post ) {
+ if (HPMHooks.count.HP_strlib_strline__post > 0) {
int (*postHookFunc) (int retVal___, const char *str, size_t pos);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strline__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_strline__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_strline__post[hIndex].func;
retVal___ = postHookFunc(retVal___, str, pos);
}
@@ -78119,14 +86438,14 @@ int HP_strlib_strline_(const char *str, size_t pos) {
bool HP_strlib_bin2hex_(char *output, const unsigned char *input, size_t count) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_strlib_bin2hex__pre ) {
+ if (HPMHooks.count.HP_strlib_bin2hex__pre > 0) {
bool (*preHookFunc) (char **output, const unsigned char **input, size_t *count);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_bin2hex__pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_bin2hex__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_strlib_bin2hex__pre[hIndex].func;
retVal___ = preHookFunc(&output, &input, &count);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -78134,9 +86453,9 @@ bool HP_strlib_bin2hex_(char *output, const unsigned char *input, size_t count)
{
retVal___ = HPMHooks.source.strlib.bin2hex_(output, input, count);
}
- if( HPMHooks.count.HP_strlib_bin2hex__post ) {
+ if (HPMHooks.count.HP_strlib_bin2hex__post > 0) {
bool (*postHookFunc) (bool retVal___, char *output, const unsigned char *input, size_t count);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_strlib_bin2hex__post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_strlib_bin2hex__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_strlib_bin2hex__post[hIndex].func;
retVal___ = postHookFunc(retVal___, output, input, count);
}
@@ -78147,14 +86466,14 @@ bool HP_strlib_bin2hex_(char *output, const unsigned char *input, size_t count)
int HP_sv_parse_next(struct s_svstate *svstate) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sv_parse_next_pre ) {
+ if (HPMHooks.count.HP_sv_parse_next_pre > 0) {
int (*preHookFunc) (struct s_svstate **svstate);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_parse_next_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_parse_next_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sv_parse_next_pre[hIndex].func;
retVal___ = preHookFunc(&svstate);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -78162,9 +86481,9 @@ int HP_sv_parse_next(struct s_svstate *svstate) {
{
retVal___ = HPMHooks.source.sv.parse_next(svstate);
}
- if( HPMHooks.count.HP_sv_parse_next_post ) {
+ if (HPMHooks.count.HP_sv_parse_next_post > 0) {
int (*postHookFunc) (int retVal___, struct s_svstate *svstate);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_parse_next_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_parse_next_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sv_parse_next_post[hIndex].func;
retVal___ = postHookFunc(retVal___, svstate);
}
@@ -78174,14 +86493,14 @@ int HP_sv_parse_next(struct s_svstate *svstate) {
int HP_sv_parse(const char *str, int len, int startoff, char delim, int *out_pos, int npos, enum e_svopt opt) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sv_parse_pre ) {
+ if (HPMHooks.count.HP_sv_parse_pre > 0) {
int (*preHookFunc) (const char **str, int *len, int *startoff, char *delim, int **out_pos, int *npos, enum e_svopt *opt);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_parse_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_parse_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sv_parse_pre[hIndex].func;
retVal___ = preHookFunc(&str, &len, &startoff, &delim, &out_pos, &npos, &opt);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -78189,9 +86508,9 @@ int HP_sv_parse(const char *str, int len, int startoff, char delim, int *out_pos
{
retVal___ = HPMHooks.source.sv.parse(str, len, startoff, delim, out_pos, npos, opt);
}
- if( HPMHooks.count.HP_sv_parse_post ) {
+ if (HPMHooks.count.HP_sv_parse_post > 0) {
int (*postHookFunc) (int retVal___, const char *str, int len, int startoff, char delim, int *out_pos, int npos, enum e_svopt opt);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_parse_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_parse_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sv_parse_post[hIndex].func;
retVal___ = postHookFunc(retVal___, str, len, startoff, delim, out_pos, npos, opt);
}
@@ -78201,14 +86520,14 @@ int HP_sv_parse(const char *str, int len, int startoff, char delim, int *out_pos
int HP_sv_split(char *str, int len, int startoff, char delim, char **out_fields, int nfields, enum e_svopt opt) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sv_split_pre ) {
+ if (HPMHooks.count.HP_sv_split_pre > 0) {
int (*preHookFunc) (char **str, int *len, int *startoff, char *delim, char ***out_fields, int *nfields, enum e_svopt *opt);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_split_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_split_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sv_split_pre[hIndex].func;
retVal___ = preHookFunc(&str, &len, &startoff, &delim, &out_fields, &nfields, &opt);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -78216,9 +86535,9 @@ int HP_sv_split(char *str, int len, int startoff, char delim, char **out_fields,
{
retVal___ = HPMHooks.source.sv.split(str, len, startoff, delim, out_fields, nfields, opt);
}
- if( HPMHooks.count.HP_sv_split_post ) {
+ if (HPMHooks.count.HP_sv_split_post > 0) {
int (*postHookFunc) (int retVal___, char *str, int len, int startoff, char delim, char **out_fields, int nfields, enum e_svopt opt);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_split_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_split_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sv_split_post[hIndex].func;
retVal___ = postHookFunc(retVal___, str, len, startoff, delim, out_fields, nfields, opt);
}
@@ -78228,14 +86547,14 @@ int HP_sv_split(char *str, int len, int startoff, char delim, char **out_fields,
size_t HP_sv_escape_c(char *out_dest, const char *src, size_t len, const char *escapes) {
int hIndex = 0;
size_t retVal___ = 0;
- if( HPMHooks.count.HP_sv_escape_c_pre ) {
+ if (HPMHooks.count.HP_sv_escape_c_pre > 0) {
size_t (*preHookFunc) (char **out_dest, const char **src, size_t *len, const char **escapes);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_escape_c_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_escape_c_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sv_escape_c_pre[hIndex].func;
retVal___ = preHookFunc(&out_dest, &src, &len, &escapes);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -78243,9 +86562,9 @@ size_t HP_sv_escape_c(char *out_dest, const char *src, size_t len, const char *e
{
retVal___ = HPMHooks.source.sv.escape_c(out_dest, src, len, escapes);
}
- if( HPMHooks.count.HP_sv_escape_c_post ) {
+ if (HPMHooks.count.HP_sv_escape_c_post > 0) {
size_t (*postHookFunc) (size_t retVal___, char *out_dest, const char *src, size_t len, const char *escapes);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_escape_c_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_escape_c_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sv_escape_c_post[hIndex].func;
retVal___ = postHookFunc(retVal___, out_dest, src, len, escapes);
}
@@ -78255,14 +86574,14 @@ size_t HP_sv_escape_c(char *out_dest, const char *src, size_t len, const char *e
size_t HP_sv_unescape_c(char *out_dest, const char *src, size_t len) {
int hIndex = 0;
size_t retVal___ = 0;
- if( HPMHooks.count.HP_sv_unescape_c_pre ) {
+ if (HPMHooks.count.HP_sv_unescape_c_pre > 0) {
size_t (*preHookFunc) (char **out_dest, const char **src, size_t *len);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_unescape_c_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_unescape_c_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sv_unescape_c_pre[hIndex].func;
retVal___ = preHookFunc(&out_dest, &src, &len);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -78270,9 +86589,9 @@ size_t HP_sv_unescape_c(char *out_dest, const char *src, size_t len) {
{
retVal___ = HPMHooks.source.sv.unescape_c(out_dest, src, len);
}
- if( HPMHooks.count.HP_sv_unescape_c_post ) {
+ if (HPMHooks.count.HP_sv_unescape_c_post > 0) {
size_t (*postHookFunc) (size_t retVal___, char *out_dest, const char *src, size_t len);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_unescape_c_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_unescape_c_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sv_unescape_c_post[hIndex].func;
retVal___ = postHookFunc(retVal___, out_dest, src, len);
}
@@ -78282,14 +86601,14 @@ size_t HP_sv_unescape_c(char *out_dest, const char *src, size_t len) {
const char* HP_sv_skip_escaped_c(const char *p) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sv_skip_escaped_c_pre ) {
+ if (HPMHooks.count.HP_sv_skip_escaped_c_pre > 0) {
const char* (*preHookFunc) (const char **p);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_skip_escaped_c_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_skip_escaped_c_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sv_skip_escaped_c_pre[hIndex].func;
retVal___ = preHookFunc(&p);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -78297,9 +86616,9 @@ const char* HP_sv_skip_escaped_c(const char *p) {
{
retVal___ = HPMHooks.source.sv.skip_escaped_c(p);
}
- if( HPMHooks.count.HP_sv_skip_escaped_c_post ) {
+ if (HPMHooks.count.HP_sv_skip_escaped_c_post > 0) {
const char* (*postHookFunc) (const char* retVal___, const char *p);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_skip_escaped_c_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_skip_escaped_c_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sv_skip_escaped_c_post[hIndex].func;
retVal___ = postHookFunc(retVal___, p);
}
@@ -78309,14 +86628,14 @@ const char* HP_sv_skip_escaped_c(const char *p) {
bool HP_sv_readdb(const char *directory, const char *filename, char delim, int mincols, int maxcols, int maxrows, bool ( *parseproc ) (char *fields[], int columns, int current)) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_sv_readdb_pre ) {
+ if (HPMHooks.count.HP_sv_readdb_pre > 0) {
bool (*preHookFunc) (const char **directory, const char **filename, char *delim, int *mincols, int *maxcols, int *maxrows, bool ( **parseproc ) (char *fields[], int columns, int current));
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_readdb_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_readdb_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sv_readdb_pre[hIndex].func;
retVal___ = preHookFunc(&directory, &filename, &delim, &mincols, &maxcols, &maxrows, &parseproc);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -78324,9 +86643,9 @@ bool HP_sv_readdb(const char *directory, const char *filename, char delim, int m
{
retVal___ = HPMHooks.source.sv.readdb(directory, filename, delim, mincols, maxcols, maxrows, parseproc);
}
- if( HPMHooks.count.HP_sv_readdb_post ) {
+ if (HPMHooks.count.HP_sv_readdb_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *directory, const char *filename, char delim, int mincols, int maxcols, int maxrows, bool ( *parseproc ) (char *fields[], int columns, int current));
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sv_readdb_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sv_readdb_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sv_readdb_post[hIndex].func;
retVal___ = postHookFunc(retVal___, directory, filename, delim, mincols, maxcols, maxrows, parseproc);
}
@@ -78337,14 +86656,14 @@ bool HP_sv_readdb(const char *directory, const char *filename, char delim, int m
int HP_sysinfo_getpagesize(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sysinfo_getpagesize_pre ) {
+ if (HPMHooks.count.HP_sysinfo_getpagesize_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_getpagesize_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_getpagesize_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_getpagesize_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -78352,9 +86671,9 @@ int HP_sysinfo_getpagesize(void) {
{
retVal___ = HPMHooks.source.sysinfo.getpagesize();
}
- if( HPMHooks.count.HP_sysinfo_getpagesize_post ) {
+ if (HPMHooks.count.HP_sysinfo_getpagesize_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_getpagesize_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_getpagesize_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_getpagesize_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -78364,14 +86683,14 @@ int HP_sysinfo_getpagesize(void) {
const char* HP_sysinfo_platform(void) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sysinfo_platform_pre ) {
+ if (HPMHooks.count.HP_sysinfo_platform_pre > 0) {
const char* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_platform_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_platform_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_platform_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -78379,9 +86698,9 @@ const char* HP_sysinfo_platform(void) {
{
retVal___ = HPMHooks.source.sysinfo.platform();
}
- if( HPMHooks.count.HP_sysinfo_platform_post ) {
+ if (HPMHooks.count.HP_sysinfo_platform_post > 0) {
const char* (*postHookFunc) (const char* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_platform_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_platform_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_platform_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -78391,14 +86710,14 @@ const char* HP_sysinfo_platform(void) {
const char* HP_sysinfo_osversion(void) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sysinfo_osversion_pre ) {
+ if (HPMHooks.count.HP_sysinfo_osversion_pre > 0) {
const char* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_osversion_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_osversion_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_osversion_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -78406,9 +86725,9 @@ const char* HP_sysinfo_osversion(void) {
{
retVal___ = HPMHooks.source.sysinfo.osversion();
}
- if( HPMHooks.count.HP_sysinfo_osversion_post ) {
+ if (HPMHooks.count.HP_sysinfo_osversion_post > 0) {
const char* (*postHookFunc) (const char* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_osversion_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_osversion_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_osversion_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -78418,14 +86737,14 @@ const char* HP_sysinfo_osversion(void) {
const char* HP_sysinfo_cpu(void) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sysinfo_cpu_pre ) {
+ if (HPMHooks.count.HP_sysinfo_cpu_pre > 0) {
const char* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cpu_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cpu_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_cpu_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -78433,9 +86752,9 @@ const char* HP_sysinfo_cpu(void) {
{
retVal___ = HPMHooks.source.sysinfo.cpu();
}
- if( HPMHooks.count.HP_sysinfo_cpu_post ) {
+ if (HPMHooks.count.HP_sysinfo_cpu_post > 0) {
const char* (*postHookFunc) (const char* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cpu_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cpu_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_cpu_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -78445,14 +86764,14 @@ const char* HP_sysinfo_cpu(void) {
int HP_sysinfo_cpucores(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sysinfo_cpucores_pre ) {
+ if (HPMHooks.count.HP_sysinfo_cpucores_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cpucores_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cpucores_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_cpucores_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -78460,9 +86779,9 @@ int HP_sysinfo_cpucores(void) {
{
retVal___ = HPMHooks.source.sysinfo.cpucores();
}
- if( HPMHooks.count.HP_sysinfo_cpucores_post ) {
+ if (HPMHooks.count.HP_sysinfo_cpucores_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cpucores_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cpucores_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_cpucores_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -78472,14 +86791,14 @@ int HP_sysinfo_cpucores(void) {
const char* HP_sysinfo_arch(void) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sysinfo_arch_pre ) {
+ if (HPMHooks.count.HP_sysinfo_arch_pre > 0) {
const char* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_arch_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_arch_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_arch_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -78487,9 +86806,9 @@ const char* HP_sysinfo_arch(void) {
{
retVal___ = HPMHooks.source.sysinfo.arch();
}
- if( HPMHooks.count.HP_sysinfo_arch_post ) {
+ if (HPMHooks.count.HP_sysinfo_arch_post > 0) {
const char* (*postHookFunc) (const char* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_arch_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_arch_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_arch_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -78499,14 +86818,14 @@ const char* HP_sysinfo_arch(void) {
bool HP_sysinfo_is64bit(void) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_sysinfo_is64bit_pre ) {
+ if (HPMHooks.count.HP_sysinfo_is64bit_pre > 0) {
bool (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_is64bit_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_is64bit_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_is64bit_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -78514,9 +86833,9 @@ bool HP_sysinfo_is64bit(void) {
{
retVal___ = HPMHooks.source.sysinfo.is64bit();
}
- if( HPMHooks.count.HP_sysinfo_is64bit_post ) {
+ if (HPMHooks.count.HP_sysinfo_is64bit_post > 0) {
bool (*postHookFunc) (bool retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_is64bit_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_is64bit_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_is64bit_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -78526,14 +86845,14 @@ bool HP_sysinfo_is64bit(void) {
const char* HP_sysinfo_compiler(void) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sysinfo_compiler_pre ) {
+ if (HPMHooks.count.HP_sysinfo_compiler_pre > 0) {
const char* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_compiler_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_compiler_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_compiler_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -78541,9 +86860,9 @@ const char* HP_sysinfo_compiler(void) {
{
retVal___ = HPMHooks.source.sysinfo.compiler();
}
- if( HPMHooks.count.HP_sysinfo_compiler_post ) {
+ if (HPMHooks.count.HP_sysinfo_compiler_post > 0) {
const char* (*postHookFunc) (const char* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_compiler_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_compiler_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_compiler_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -78553,14 +86872,14 @@ const char* HP_sysinfo_compiler(void) {
const char* HP_sysinfo_cflags(void) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sysinfo_cflags_pre ) {
+ if (HPMHooks.count.HP_sysinfo_cflags_pre > 0) {
const char* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cflags_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cflags_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_cflags_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -78568,9 +86887,9 @@ const char* HP_sysinfo_cflags(void) {
{
retVal___ = HPMHooks.source.sysinfo.cflags();
}
- if( HPMHooks.count.HP_sysinfo_cflags_post ) {
+ if (HPMHooks.count.HP_sysinfo_cflags_post > 0) {
const char* (*postHookFunc) (const char* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cflags_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_cflags_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_cflags_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -78580,14 +86899,14 @@ const char* HP_sysinfo_cflags(void) {
const char* HP_sysinfo_time(void) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sysinfo_time_pre ) {
+ if (HPMHooks.count.HP_sysinfo_time_pre > 0) {
const char* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_time_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_time_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_time_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -78595,9 +86914,9 @@ const char* HP_sysinfo_time(void) {
{
retVal___ = HPMHooks.source.sysinfo.time();
}
- if( HPMHooks.count.HP_sysinfo_time_post ) {
+ if (HPMHooks.count.HP_sysinfo_time_post > 0) {
const char* (*postHookFunc) (const char* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_time_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_time_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_time_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -78607,14 +86926,14 @@ const char* HP_sysinfo_time(void) {
const char* HP_sysinfo_vcstype(void) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sysinfo_vcstype_pre ) {
+ if (HPMHooks.count.HP_sysinfo_vcstype_pre > 0) {
const char* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcstype_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcstype_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_vcstype_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -78622,9 +86941,9 @@ const char* HP_sysinfo_vcstype(void) {
{
retVal___ = HPMHooks.source.sysinfo.vcstype();
}
- if( HPMHooks.count.HP_sysinfo_vcstype_post ) {
+ if (HPMHooks.count.HP_sysinfo_vcstype_post > 0) {
const char* (*postHookFunc) (const char* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcstype_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcstype_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_vcstype_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -78634,14 +86953,14 @@ const char* HP_sysinfo_vcstype(void) {
int HP_sysinfo_vcstypeid(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_sysinfo_vcstypeid_pre ) {
+ if (HPMHooks.count.HP_sysinfo_vcstypeid_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcstypeid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcstypeid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_vcstypeid_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -78649,9 +86968,9 @@ int HP_sysinfo_vcstypeid(void) {
{
retVal___ = HPMHooks.source.sysinfo.vcstypeid();
}
- if( HPMHooks.count.HP_sysinfo_vcstypeid_post ) {
+ if (HPMHooks.count.HP_sysinfo_vcstypeid_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcstypeid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcstypeid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_vcstypeid_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -78661,14 +86980,14 @@ int HP_sysinfo_vcstypeid(void) {
const char* HP_sysinfo_vcsrevision_src(void) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sysinfo_vcsrevision_src_pre ) {
+ if (HPMHooks.count.HP_sysinfo_vcsrevision_src_pre > 0) {
const char* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_src_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_src_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_vcsrevision_src_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -78676,9 +86995,9 @@ const char* HP_sysinfo_vcsrevision_src(void) {
{
retVal___ = HPMHooks.source.sysinfo.vcsrevision_src();
}
- if( HPMHooks.count.HP_sysinfo_vcsrevision_src_post ) {
+ if (HPMHooks.count.HP_sysinfo_vcsrevision_src_post > 0) {
const char* (*postHookFunc) (const char* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_src_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_src_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_vcsrevision_src_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -78688,14 +87007,14 @@ const char* HP_sysinfo_vcsrevision_src(void) {
const char* HP_sysinfo_vcsrevision_scripts(void) {
int hIndex = 0;
const char* retVal___ = NULL;
- if( HPMHooks.count.HP_sysinfo_vcsrevision_scripts_pre ) {
+ if (HPMHooks.count.HP_sysinfo_vcsrevision_scripts_pre > 0) {
const char* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_scripts_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_scripts_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_vcsrevision_scripts_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -78703,9 +87022,9 @@ const char* HP_sysinfo_vcsrevision_scripts(void) {
{
retVal___ = HPMHooks.source.sysinfo.vcsrevision_scripts();
}
- if( HPMHooks.count.HP_sysinfo_vcsrevision_scripts_post ) {
+ if (HPMHooks.count.HP_sysinfo_vcsrevision_scripts_post > 0) {
const char* (*postHookFunc) (const char* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_scripts_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_scripts_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_vcsrevision_scripts_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -78714,14 +87033,14 @@ const char* HP_sysinfo_vcsrevision_scripts(void) {
}
void HP_sysinfo_vcsrevision_reload(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_sysinfo_vcsrevision_reload_pre ) {
+ if (HPMHooks.count.HP_sysinfo_vcsrevision_reload_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_reload_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_reload_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_vcsrevision_reload_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -78729,9 +87048,9 @@ void HP_sysinfo_vcsrevision_reload(void) {
{
HPMHooks.source.sysinfo.vcsrevision_reload();
}
- if( HPMHooks.count.HP_sysinfo_vcsrevision_reload_post ) {
+ if (HPMHooks.count.HP_sysinfo_vcsrevision_reload_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_reload_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_vcsrevision_reload_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_vcsrevision_reload_post[hIndex].func;
postHookFunc();
}
@@ -78741,14 +87060,14 @@ void HP_sysinfo_vcsrevision_reload(void) {
bool HP_sysinfo_is_superuser(void) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_sysinfo_is_superuser_pre ) {
+ if (HPMHooks.count.HP_sysinfo_is_superuser_pre > 0) {
bool (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_is_superuser_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_is_superuser_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_is_superuser_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -78756,9 +87075,9 @@ bool HP_sysinfo_is_superuser(void) {
{
retVal___ = HPMHooks.source.sysinfo.is_superuser();
}
- if( HPMHooks.count.HP_sysinfo_is_superuser_post ) {
+ if (HPMHooks.count.HP_sysinfo_is_superuser_post > 0) {
bool (*postHookFunc) (bool retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_is_superuser_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_is_superuser_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_is_superuser_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -78767,14 +87086,14 @@ bool HP_sysinfo_is_superuser(void) {
}
void HP_sysinfo_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_sysinfo_init_pre ) {
+ if (HPMHooks.count.HP_sysinfo_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -78782,9 +87101,9 @@ void HP_sysinfo_init(void) {
{
HPMHooks.source.sysinfo.init();
}
- if( HPMHooks.count.HP_sysinfo_init_post ) {
+ if (HPMHooks.count.HP_sysinfo_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_init_post[hIndex].func;
postHookFunc();
}
@@ -78793,14 +87112,14 @@ void HP_sysinfo_init(void) {
}
void HP_sysinfo_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_sysinfo_final_pre ) {
+ if (HPMHooks.count.HP_sysinfo_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_sysinfo_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -78808,9 +87127,9 @@ void HP_sysinfo_final(void) {
{
HPMHooks.source.sysinfo.final();
}
- if( HPMHooks.count.HP_sysinfo_final_post ) {
+ if (HPMHooks.count.HP_sysinfo_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_sysinfo_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_sysinfo_final_post[hIndex].func;
postHookFunc();
}
@@ -78820,14 +87139,14 @@ void HP_sysinfo_final(void) {
/* thread_interface */
void HP_thread_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_thread_init_pre ) {
+ if (HPMHooks.count.HP_thread_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -78835,9 +87154,9 @@ void HP_thread_init(void) {
{
HPMHooks.source.thread.init();
}
- if( HPMHooks.count.HP_thread_init_post ) {
+ if (HPMHooks.count.HP_thread_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_init_post[hIndex].func;
postHookFunc();
}
@@ -78846,14 +87165,14 @@ void HP_thread_init(void) {
}
void HP_thread_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_thread_final_pre ) {
+ if (HPMHooks.count.HP_thread_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -78861,9 +87180,9 @@ void HP_thread_final(void) {
{
HPMHooks.source.thread.final();
}
- if( HPMHooks.count.HP_thread_final_post ) {
+ if (HPMHooks.count.HP_thread_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_final_post[hIndex].func;
postHookFunc();
}
@@ -78873,14 +87192,14 @@ void HP_thread_final(void) {
struct thread_handle* HP_thread_create(threadFunc entry_point, void *param) {
int hIndex = 0;
struct thread_handle* retVal___ = NULL;
- if( HPMHooks.count.HP_thread_create_pre ) {
+ if (HPMHooks.count.HP_thread_create_pre > 0) {
struct thread_handle* (*preHookFunc) (threadFunc *entry_point, void **param);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_create_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_create_pre[hIndex].func;
retVal___ = preHookFunc(&entry_point, &param);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -78888,9 +87207,9 @@ struct thread_handle* HP_thread_create(threadFunc entry_point, void *param) {
{
retVal___ = HPMHooks.source.thread.create(entry_point, param);
}
- if( HPMHooks.count.HP_thread_create_post ) {
+ if (HPMHooks.count.HP_thread_create_post > 0) {
struct thread_handle* (*postHookFunc) (struct thread_handle* retVal___, threadFunc entry_point, void *param);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_create_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_create_post[hIndex].func;
retVal___ = postHookFunc(retVal___, entry_point, param);
}
@@ -78900,14 +87219,14 @@ struct thread_handle* HP_thread_create(threadFunc entry_point, void *param) {
struct thread_handle* HP_thread_create_opt(threadFunc entry_point, void *param, size_t stack_size, enum thread_priority prio) {
int hIndex = 0;
struct thread_handle* retVal___ = NULL;
- if( HPMHooks.count.HP_thread_create_opt_pre ) {
+ if (HPMHooks.count.HP_thread_create_opt_pre > 0) {
struct thread_handle* (*preHookFunc) (threadFunc *entry_point, void **param, size_t *stack_size, enum thread_priority *prio);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_create_opt_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_create_opt_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_create_opt_pre[hIndex].func;
retVal___ = preHookFunc(&entry_point, &param, &stack_size, &prio);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -78915,9 +87234,9 @@ struct thread_handle* HP_thread_create_opt(threadFunc entry_point, void *param,
{
retVal___ = HPMHooks.source.thread.create_opt(entry_point, param, stack_size, prio);
}
- if( HPMHooks.count.HP_thread_create_opt_post ) {
+ if (HPMHooks.count.HP_thread_create_opt_post > 0) {
struct thread_handle* (*postHookFunc) (struct thread_handle* retVal___, threadFunc entry_point, void *param, size_t stack_size, enum thread_priority prio);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_create_opt_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_create_opt_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_create_opt_post[hIndex].func;
retVal___ = postHookFunc(retVal___, entry_point, param, stack_size, prio);
}
@@ -78926,14 +87245,14 @@ struct thread_handle* HP_thread_create_opt(threadFunc entry_point, void *param,
}
void HP_thread_destroy(struct thread_handle *handle) {
int hIndex = 0;
- if( HPMHooks.count.HP_thread_destroy_pre ) {
+ if (HPMHooks.count.HP_thread_destroy_pre > 0) {
void (*preHookFunc) (struct thread_handle **handle);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_destroy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_destroy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_destroy_pre[hIndex].func;
preHookFunc(&handle);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -78941,9 +87260,9 @@ void HP_thread_destroy(struct thread_handle *handle) {
{
HPMHooks.source.thread.destroy(handle);
}
- if( HPMHooks.count.HP_thread_destroy_post ) {
+ if (HPMHooks.count.HP_thread_destroy_post > 0) {
void (*postHookFunc) (struct thread_handle *handle);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_destroy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_destroy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_destroy_post[hIndex].func;
postHookFunc(handle);
}
@@ -78953,14 +87272,14 @@ void HP_thread_destroy(struct thread_handle *handle) {
struct thread_handle* HP_thread_self(void) {
int hIndex = 0;
struct thread_handle* retVal___ = NULL;
- if( HPMHooks.count.HP_thread_self_pre ) {
+ if (HPMHooks.count.HP_thread_self_pre > 0) {
struct thread_handle* (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_self_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_self_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_self_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -78968,9 +87287,9 @@ struct thread_handle* HP_thread_self(void) {
{
retVal___ = HPMHooks.source.thread.self();
}
- if( HPMHooks.count.HP_thread_self_post ) {
+ if (HPMHooks.count.HP_thread_self_post > 0) {
struct thread_handle* (*postHookFunc) (struct thread_handle* retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_self_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_self_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_self_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -78980,14 +87299,14 @@ struct thread_handle* HP_thread_self(void) {
int HP_thread_get_tid(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_thread_get_tid_pre ) {
+ if (HPMHooks.count.HP_thread_get_tid_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_get_tid_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_get_tid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_get_tid_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -78995,9 +87314,9 @@ int HP_thread_get_tid(void) {
{
retVal___ = HPMHooks.source.thread.get_tid();
}
- if( HPMHooks.count.HP_thread_get_tid_post ) {
+ if (HPMHooks.count.HP_thread_get_tid_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_get_tid_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_get_tid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_get_tid_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -79007,14 +87326,14 @@ int HP_thread_get_tid(void) {
bool HP_thread_wait(struct thread_handle *handle, void **out_exit_code) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_thread_wait_pre ) {
+ if (HPMHooks.count.HP_thread_wait_pre > 0) {
bool (*preHookFunc) (struct thread_handle **handle, void ***out_exit_code);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_wait_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_wait_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_wait_pre[hIndex].func;
retVal___ = preHookFunc(&handle, &out_exit_code);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -79022,9 +87341,9 @@ bool HP_thread_wait(struct thread_handle *handle, void **out_exit_code) {
{
retVal___ = HPMHooks.source.thread.wait(handle, out_exit_code);
}
- if( HPMHooks.count.HP_thread_wait_post ) {
+ if (HPMHooks.count.HP_thread_wait_post > 0) {
bool (*postHookFunc) (bool retVal___, struct thread_handle *handle, void **out_exit_code);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_wait_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_wait_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_wait_post[hIndex].func;
retVal___ = postHookFunc(retVal___, handle, out_exit_code);
}
@@ -79033,14 +87352,14 @@ bool HP_thread_wait(struct thread_handle *handle, void **out_exit_code) {
}
void HP_thread_prio_set(struct thread_handle *handle, enum thread_priority prio) {
int hIndex = 0;
- if( HPMHooks.count.HP_thread_prio_set_pre ) {
+ if (HPMHooks.count.HP_thread_prio_set_pre > 0) {
void (*preHookFunc) (struct thread_handle **handle, enum thread_priority *prio);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_prio_set_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_prio_set_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_prio_set_pre[hIndex].func;
preHookFunc(&handle, &prio);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -79048,9 +87367,9 @@ void HP_thread_prio_set(struct thread_handle *handle, enum thread_priority prio)
{
HPMHooks.source.thread.prio_set(handle, prio);
}
- if( HPMHooks.count.HP_thread_prio_set_post ) {
+ if (HPMHooks.count.HP_thread_prio_set_post > 0) {
void (*postHookFunc) (struct thread_handle *handle, enum thread_priority prio);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_prio_set_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_prio_set_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_prio_set_post[hIndex].func;
postHookFunc(handle, prio);
}
@@ -79060,14 +87379,14 @@ void HP_thread_prio_set(struct thread_handle *handle, enum thread_priority prio)
enum thread_priority HP_thread_prio_get(struct thread_handle *handle) {
int hIndex = 0;
enum thread_priority retVal___ = THREADPRIO_NORMAL;
- if( HPMHooks.count.HP_thread_prio_get_pre ) {
+ if (HPMHooks.count.HP_thread_prio_get_pre > 0) {
enum thread_priority (*preHookFunc) (struct thread_handle **handle);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_prio_get_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_prio_get_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_prio_get_pre[hIndex].func;
retVal___ = preHookFunc(&handle);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -79075,9 +87394,9 @@ enum thread_priority HP_thread_prio_get(struct thread_handle *handle) {
{
retVal___ = HPMHooks.source.thread.prio_get(handle);
}
- if( HPMHooks.count.HP_thread_prio_get_post ) {
+ if (HPMHooks.count.HP_thread_prio_get_post > 0) {
enum thread_priority (*postHookFunc) (enum thread_priority retVal___, struct thread_handle *handle);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_prio_get_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_prio_get_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_prio_get_post[hIndex].func;
retVal___ = postHookFunc(retVal___, handle);
}
@@ -79086,14 +87405,14 @@ enum thread_priority HP_thread_prio_get(struct thread_handle *handle) {
}
void HP_thread_yield(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_thread_yield_pre ) {
+ if (HPMHooks.count.HP_thread_yield_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_yield_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_yield_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_thread_yield_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -79101,9 +87420,9 @@ void HP_thread_yield(void) {
{
HPMHooks.source.thread.yield();
}
- if( HPMHooks.count.HP_thread_yield_post ) {
+ if (HPMHooks.count.HP_thread_yield_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_thread_yield_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_thread_yield_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_thread_yield_post[hIndex].func;
postHookFunc();
}
@@ -79114,14 +87433,14 @@ void HP_thread_yield(void) {
int64 HP_timer_gettick(void) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_timer_gettick_pre ) {
+ if (HPMHooks.count.HP_timer_gettick_pre > 0) {
int64 (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_gettick_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_gettick_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_gettick_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -79129,9 +87448,9 @@ int64 HP_timer_gettick(void) {
{
retVal___ = HPMHooks.source.timer.gettick();
}
- if( HPMHooks.count.HP_timer_gettick_post ) {
+ if (HPMHooks.count.HP_timer_gettick_post > 0) {
int64 (*postHookFunc) (int64 retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_gettick_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_gettick_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_gettick_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -79141,14 +87460,14 @@ int64 HP_timer_gettick(void) {
int64 HP_timer_gettick_nocache(void) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_timer_gettick_nocache_pre ) {
+ if (HPMHooks.count.HP_timer_gettick_nocache_pre > 0) {
int64 (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_gettick_nocache_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_gettick_nocache_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_gettick_nocache_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -79156,9 +87475,9 @@ int64 HP_timer_gettick_nocache(void) {
{
retVal___ = HPMHooks.source.timer.gettick_nocache();
}
- if( HPMHooks.count.HP_timer_gettick_nocache_post ) {
+ if (HPMHooks.count.HP_timer_gettick_nocache_post > 0) {
int64 (*postHookFunc) (int64 retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_gettick_nocache_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_gettick_nocache_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_gettick_nocache_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -79168,14 +87487,14 @@ int64 HP_timer_gettick_nocache(void) {
int HP_timer_add(int64 tick, TimerFunc func, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_timer_add_pre ) {
+ if (HPMHooks.count.HP_timer_add_pre > 0) {
int (*preHookFunc) (int64 *tick, TimerFunc *func, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_add_pre[hIndex].func;
retVal___ = preHookFunc(&tick, &func, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -79183,9 +87502,9 @@ int HP_timer_add(int64 tick, TimerFunc func, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.timer.add(tick, func, id, data);
}
- if( HPMHooks.count.HP_timer_add_post ) {
+ if (HPMHooks.count.HP_timer_add_post > 0) {
int (*postHookFunc) (int retVal___, int64 tick, TimerFunc func, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_add_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tick, func, id, data);
}
@@ -79195,14 +87514,14 @@ int HP_timer_add(int64 tick, TimerFunc func, int id, intptr_t data) {
int HP_timer_add_interval(int64 tick, TimerFunc func, int id, intptr_t data, int interval) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_timer_add_interval_pre ) {
+ if (HPMHooks.count.HP_timer_add_interval_pre > 0) {
int (*preHookFunc) (int64 *tick, TimerFunc *func, int *id, intptr_t *data, int *interval);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_interval_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_interval_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_add_interval_pre[hIndex].func;
retVal___ = preHookFunc(&tick, &func, &id, &data, &interval);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -79210,9 +87529,9 @@ int HP_timer_add_interval(int64 tick, TimerFunc func, int id, intptr_t data, int
{
retVal___ = HPMHooks.source.timer.add_interval(tick, func, id, data, interval);
}
- if( HPMHooks.count.HP_timer_add_interval_post ) {
+ if (HPMHooks.count.HP_timer_add_interval_post > 0) {
int (*postHookFunc) (int retVal___, int64 tick, TimerFunc func, int id, intptr_t data, int interval);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_interval_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_interval_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_add_interval_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tick, func, id, data, interval);
}
@@ -79222,14 +87541,14 @@ int HP_timer_add_interval(int64 tick, TimerFunc func, int id, intptr_t data, int
const struct TimerData* HP_timer_get(int tid) {
int hIndex = 0;
const struct TimerData* retVal___ = NULL;
- if( HPMHooks.count.HP_timer_get_pre ) {
+ if (HPMHooks.count.HP_timer_get_pre > 0) {
const struct TimerData* (*preHookFunc) (int *tid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_get_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_get_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_get_pre[hIndex].func;
retVal___ = preHookFunc(&tid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -79237,9 +87556,9 @@ const struct TimerData* HP_timer_get(int tid) {
{
retVal___ = HPMHooks.source.timer.get(tid);
}
- if( HPMHooks.count.HP_timer_get_post ) {
+ if (HPMHooks.count.HP_timer_get_post > 0) {
const struct TimerData* (*postHookFunc) (const struct TimerData* retVal___, int tid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_get_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_get_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_get_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid);
}
@@ -79249,14 +87568,14 @@ const struct TimerData* HP_timer_get(int tid) {
int HP_timer_delete(int tid, TimerFunc func) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_timer_delete_pre ) {
+ if (HPMHooks.count.HP_timer_delete_pre > 0) {
int (*preHookFunc) (int *tid, TimerFunc *func);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_delete_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_delete_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_delete_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &func);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -79264,9 +87583,9 @@ int HP_timer_delete(int tid, TimerFunc func) {
{
retVal___ = HPMHooks.source.timer.delete(tid, func);
}
- if( HPMHooks.count.HP_timer_delete_post ) {
+ if (HPMHooks.count.HP_timer_delete_post > 0) {
int (*postHookFunc) (int retVal___, int tid, TimerFunc func);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_delete_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_delete_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_delete_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, func);
}
@@ -79276,14 +87595,14 @@ int HP_timer_delete(int tid, TimerFunc func) {
int64 HP_timer_addtick(int tid, int64 tick) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_timer_addtick_pre ) {
+ if (HPMHooks.count.HP_timer_addtick_pre > 0) {
int64 (*preHookFunc) (int *tid, int64 *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_addtick_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_addtick_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_addtick_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -79291,9 +87610,9 @@ int64 HP_timer_addtick(int tid, int64 tick) {
{
retVal___ = HPMHooks.source.timer.addtick(tid, tick);
}
- if( HPMHooks.count.HP_timer_addtick_post ) {
+ if (HPMHooks.count.HP_timer_addtick_post > 0) {
int64 (*postHookFunc) (int64 retVal___, int tid, int64 tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_addtick_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_addtick_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_addtick_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick);
}
@@ -79303,14 +87622,14 @@ int64 HP_timer_addtick(int tid, int64 tick) {
int64 HP_timer_settick(int tid, int64 tick) {
int hIndex = 0;
int64 retVal___ = 0;
- if( HPMHooks.count.HP_timer_settick_pre ) {
+ if (HPMHooks.count.HP_timer_settick_pre > 0) {
int64 (*preHookFunc) (int *tid, int64 *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_settick_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_settick_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_settick_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -79318,9 +87637,9 @@ int64 HP_timer_settick(int tid, int64 tick) {
{
retVal___ = HPMHooks.source.timer.settick(tid, tick);
}
- if( HPMHooks.count.HP_timer_settick_post ) {
+ if (HPMHooks.count.HP_timer_settick_post > 0) {
int64 (*postHookFunc) (int64 retVal___, int tid, int64 tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_settick_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_settick_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_settick_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick);
}
@@ -79330,14 +87649,14 @@ int64 HP_timer_settick(int tid, int64 tick) {
int HP_timer_add_func_list(TimerFunc func, char *name) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_timer_add_func_list_pre ) {
+ if (HPMHooks.count.HP_timer_add_func_list_pre > 0) {
int (*preHookFunc) (TimerFunc *func, char **name);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_func_list_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_func_list_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_add_func_list_pre[hIndex].func;
retVal___ = preHookFunc(&func, &name);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -79345,9 +87664,9 @@ int HP_timer_add_func_list(TimerFunc func, char *name) {
{
retVal___ = HPMHooks.source.timer.add_func_list(func, name);
}
- if( HPMHooks.count.HP_timer_add_func_list_post ) {
+ if (HPMHooks.count.HP_timer_add_func_list_post > 0) {
int (*postHookFunc) (int retVal___, TimerFunc func, char *name);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_func_list_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_add_func_list_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_add_func_list_post[hIndex].func;
retVal___ = postHookFunc(retVal___, func, name);
}
@@ -79357,14 +87676,14 @@ int HP_timer_add_func_list(TimerFunc func, char *name) {
unsigned long HP_timer_get_uptime(void) {
int hIndex = 0;
unsigned long retVal___ = 0;
- if( HPMHooks.count.HP_timer_get_uptime_pre ) {
+ if (HPMHooks.count.HP_timer_get_uptime_pre > 0) {
unsigned long (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_get_uptime_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_get_uptime_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_get_uptime_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -79372,9 +87691,9 @@ unsigned long HP_timer_get_uptime(void) {
{
retVal___ = HPMHooks.source.timer.get_uptime();
}
- if( HPMHooks.count.HP_timer_get_uptime_post ) {
+ if (HPMHooks.count.HP_timer_get_uptime_post > 0) {
unsigned long (*postHookFunc) (unsigned long retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_get_uptime_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_get_uptime_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_get_uptime_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -79384,14 +87703,14 @@ unsigned long HP_timer_get_uptime(void) {
int HP_timer_perform(int64 tick) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_timer_perform_pre ) {
+ if (HPMHooks.count.HP_timer_perform_pre > 0) {
int (*preHookFunc) (int64 *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_perform_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_perform_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_perform_pre[hIndex].func;
retVal___ = preHookFunc(&tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -79399,9 +87718,9 @@ int HP_timer_perform(int64 tick) {
{
retVal___ = HPMHooks.source.timer.perform(tick);
}
- if( HPMHooks.count.HP_timer_perform_post ) {
+ if (HPMHooks.count.HP_timer_perform_post > 0) {
int (*postHookFunc) (int retVal___, int64 tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_perform_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_perform_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_perform_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tick);
}
@@ -79410,14 +87729,14 @@ int HP_timer_perform(int64 tick) {
}
void HP_timer_init(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_timer_init_pre ) {
+ if (HPMHooks.count.HP_timer_init_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_init_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -79425,9 +87744,9 @@ void HP_timer_init(void) {
{
HPMHooks.source.timer.init();
}
- if( HPMHooks.count.HP_timer_init_post ) {
+ if (HPMHooks.count.HP_timer_init_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_init_post[hIndex].func;
postHookFunc();
}
@@ -79436,14 +87755,14 @@ void HP_timer_init(void) {
}
void HP_timer_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_timer_final_pre ) {
+ if (HPMHooks.count.HP_timer_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_timer_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -79451,9 +87770,9 @@ void HP_timer_final(void) {
{
HPMHooks.source.timer.final();
}
- if( HPMHooks.count.HP_timer_final_post ) {
+ if (HPMHooks.count.HP_timer_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_timer_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_timer_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_timer_final_post[hIndex].func;
postHookFunc();
}
@@ -79463,14 +87782,14 @@ void HP_timer_final(void) {
/* trade_interface */
void HP_trade_request(struct map_session_data *sd, struct map_session_data *target_sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_trade_request_pre ) {
+ if (HPMHooks.count.HP_trade_request_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, struct map_session_data **target_sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_trade_request_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_trade_request_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_trade_request_pre[hIndex].func;
preHookFunc(&sd, &target_sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -79478,9 +87797,9 @@ void HP_trade_request(struct map_session_data *sd, struct map_session_data *targ
{
HPMHooks.source.trade.request(sd, target_sd);
}
- if( HPMHooks.count.HP_trade_request_post ) {
+ if (HPMHooks.count.HP_trade_request_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, struct map_session_data *target_sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_trade_request_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_trade_request_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_trade_request_post[hIndex].func;
postHookFunc(sd, target_sd);
}
@@ -79489,14 +87808,14 @@ void HP_trade_request(struct map_session_data *sd, struct map_session_data *targ
}
void HP_trade_ack(struct map_session_data *sd, int type) {
int hIndex = 0;
- if( HPMHooks.count.HP_trade_ack_pre ) {
+ if (HPMHooks.count.HP_trade_ack_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_trade_ack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_trade_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_trade_ack_pre[hIndex].func;
preHookFunc(&sd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -79504,9 +87823,9 @@ void HP_trade_ack(struct map_session_data *sd, int type) {
{
HPMHooks.source.trade.ack(sd, type);
}
- if( HPMHooks.count.HP_trade_ack_post ) {
+ if (HPMHooks.count.HP_trade_ack_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_trade_ack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_trade_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_trade_ack_post[hIndex].func;
postHookFunc(sd, type);
}
@@ -79516,14 +87835,14 @@ void HP_trade_ack(struct map_session_data *sd, int type) {
int HP_trade_check_impossible(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_trade_check_impossible_pre ) {
+ if (HPMHooks.count.HP_trade_check_impossible_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_trade_check_impossible_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_trade_check_impossible_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_trade_check_impossible_pre[hIndex].func;
retVal___ = preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -79531,9 +87850,9 @@ int HP_trade_check_impossible(struct map_session_data *sd) {
{
retVal___ = HPMHooks.source.trade.check_impossible(sd);
}
- if( HPMHooks.count.HP_trade_check_impossible_post ) {
+ if (HPMHooks.count.HP_trade_check_impossible_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_trade_check_impossible_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_trade_check_impossible_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_trade_check_impossible_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd);
}
@@ -79543,14 +87862,14 @@ int HP_trade_check_impossible(struct map_session_data *sd) {
int HP_trade_check(struct map_session_data *sd, struct map_session_data *tsd) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_trade_check_pre ) {
+ if (HPMHooks.count.HP_trade_check_pre > 0) {
int (*preHookFunc) (struct map_session_data **sd, struct map_session_data **tsd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_trade_check_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_trade_check_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_trade_check_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &tsd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -79558,9 +87877,9 @@ int HP_trade_check(struct map_session_data *sd, struct map_session_data *tsd) {
{
retVal___ = HPMHooks.source.trade.check(sd, tsd);
}
- if( HPMHooks.count.HP_trade_check_post ) {
+ if (HPMHooks.count.HP_trade_check_post > 0) {
int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct map_session_data *tsd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_trade_check_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_trade_check_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_trade_check_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, tsd);
}
@@ -79569,14 +87888,14 @@ int HP_trade_check(struct map_session_data *sd, struct map_session_data *tsd) {
}
void HP_trade_additem(struct map_session_data *sd, short index, short amount) {
int hIndex = 0;
- if( HPMHooks.count.HP_trade_additem_pre ) {
+ if (HPMHooks.count.HP_trade_additem_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, short *index, short *amount);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_trade_additem_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_trade_additem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_trade_additem_pre[hIndex].func;
preHookFunc(&sd, &index, &amount);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -79584,9 +87903,9 @@ void HP_trade_additem(struct map_session_data *sd, short index, short amount) {
{
HPMHooks.source.trade.additem(sd, index, amount);
}
- if( HPMHooks.count.HP_trade_additem_post ) {
+ if (HPMHooks.count.HP_trade_additem_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, short index, short amount);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_trade_additem_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_trade_additem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_trade_additem_post[hIndex].func;
postHookFunc(sd, index, amount);
}
@@ -79595,14 +87914,14 @@ void HP_trade_additem(struct map_session_data *sd, short index, short amount) {
}
void HP_trade_addzeny(struct map_session_data *sd, int amount) {
int hIndex = 0;
- if( HPMHooks.count.HP_trade_addzeny_pre ) {
+ if (HPMHooks.count.HP_trade_addzeny_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *amount);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_trade_addzeny_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_trade_addzeny_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_trade_addzeny_pre[hIndex].func;
preHookFunc(&sd, &amount);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -79610,9 +87929,9 @@ void HP_trade_addzeny(struct map_session_data *sd, int amount) {
{
HPMHooks.source.trade.addzeny(sd, amount);
}
- if( HPMHooks.count.HP_trade_addzeny_post ) {
+ if (HPMHooks.count.HP_trade_addzeny_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int amount);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_trade_addzeny_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_trade_addzeny_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_trade_addzeny_post[hIndex].func;
postHookFunc(sd, amount);
}
@@ -79621,14 +87940,14 @@ void HP_trade_addzeny(struct map_session_data *sd, int amount) {
}
void HP_trade_ok(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_trade_ok_pre ) {
+ if (HPMHooks.count.HP_trade_ok_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_trade_ok_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_trade_ok_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_trade_ok_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -79636,9 +87955,9 @@ void HP_trade_ok(struct map_session_data *sd) {
{
HPMHooks.source.trade.ok(sd);
}
- if( HPMHooks.count.HP_trade_ok_post ) {
+ if (HPMHooks.count.HP_trade_ok_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_trade_ok_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_trade_ok_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_trade_ok_post[hIndex].func;
postHookFunc(sd);
}
@@ -79647,14 +87966,14 @@ void HP_trade_ok(struct map_session_data *sd) {
}
void HP_trade_cancel(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_trade_cancel_pre ) {
+ if (HPMHooks.count.HP_trade_cancel_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_trade_cancel_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_trade_cancel_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_trade_cancel_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -79662,9 +87981,9 @@ void HP_trade_cancel(struct map_session_data *sd) {
{
HPMHooks.source.trade.cancel(sd);
}
- if( HPMHooks.count.HP_trade_cancel_post ) {
+ if (HPMHooks.count.HP_trade_cancel_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_trade_cancel_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_trade_cancel_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_trade_cancel_post[hIndex].func;
postHookFunc(sd);
}
@@ -79673,14 +87992,14 @@ void HP_trade_cancel(struct map_session_data *sd) {
}
void HP_trade_commit(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_trade_commit_pre ) {
+ if (HPMHooks.count.HP_trade_commit_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_trade_commit_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_trade_commit_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_trade_commit_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -79688,9 +88007,9 @@ void HP_trade_commit(struct map_session_data *sd) {
{
HPMHooks.source.trade.commit(sd);
}
- if( HPMHooks.count.HP_trade_commit_post ) {
+ if (HPMHooks.count.HP_trade_commit_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_trade_commit_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_trade_commit_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_trade_commit_post[hIndex].func;
postHookFunc(sd);
}
@@ -79701,14 +88020,14 @@ void HP_trade_commit(struct map_session_data *sd) {
int HP_unit_init(bool minimal) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_init_pre ) {
+ if (HPMHooks.count.HP_unit_init_pre > 0) {
int (*preHookFunc) (bool *minimal);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_init_pre[hIndex].func;
retVal___ = preHookFunc(&minimal);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -79716,9 +88035,9 @@ int HP_unit_init(bool minimal) {
{
retVal___ = HPMHooks.source.unit.init(minimal);
}
- if( HPMHooks.count.HP_unit_init_post ) {
+ if (HPMHooks.count.HP_unit_init_post > 0) {
int (*postHookFunc) (int retVal___, bool minimal);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_init_post[hIndex].func;
retVal___ = postHookFunc(retVal___, minimal);
}
@@ -79728,14 +88047,14 @@ int HP_unit_init(bool minimal) {
int HP_unit_final(void) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_final_pre ) {
+ if (HPMHooks.count.HP_unit_final_pre > 0) {
int (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_final_pre[hIndex].func;
retVal___ = preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -79743,9 +88062,9 @@ int HP_unit_final(void) {
{
retVal___ = HPMHooks.source.unit.final();
}
- if( HPMHooks.count.HP_unit_final_post ) {
+ if (HPMHooks.count.HP_unit_final_post > 0) {
int (*postHookFunc) (int retVal___);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_final_post[hIndex].func;
retVal___ = postHookFunc(retVal___);
}
@@ -79755,14 +88074,14 @@ int HP_unit_final(void) {
struct unit_data* HP_unit_bl2ud(struct block_list *bl) {
int hIndex = 0;
struct unit_data* retVal___ = NULL;
- if( HPMHooks.count.HP_unit_bl2ud_pre ) {
+ if (HPMHooks.count.HP_unit_bl2ud_pre > 0) {
struct unit_data* (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_bl2ud_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_bl2ud_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_bl2ud_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -79770,9 +88089,9 @@ struct unit_data* HP_unit_bl2ud(struct block_list *bl) {
{
retVal___ = HPMHooks.source.unit.bl2ud(bl);
}
- if( HPMHooks.count.HP_unit_bl2ud_post ) {
+ if (HPMHooks.count.HP_unit_bl2ud_post > 0) {
struct unit_data* (*postHookFunc) (struct unit_data* retVal___, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_bl2ud_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_bl2ud_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_bl2ud_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -79782,14 +88101,14 @@ struct unit_data* HP_unit_bl2ud(struct block_list *bl) {
struct unit_data* HP_unit_bl2ud2(struct block_list *bl) {
int hIndex = 0;
struct unit_data* retVal___ = NULL;
- if( HPMHooks.count.HP_unit_bl2ud2_pre ) {
+ if (HPMHooks.count.HP_unit_bl2ud2_pre > 0) {
struct unit_data* (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_bl2ud2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_bl2ud2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_bl2ud2_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -79797,9 +88116,9 @@ struct unit_data* HP_unit_bl2ud2(struct block_list *bl) {
{
retVal___ = HPMHooks.source.unit.bl2ud2(bl);
}
- if( HPMHooks.count.HP_unit_bl2ud2_post ) {
+ if (HPMHooks.count.HP_unit_bl2ud2_post > 0) {
struct unit_data* (*postHookFunc) (struct unit_data* retVal___, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_bl2ud2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_bl2ud2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_bl2ud2_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -79808,14 +88127,14 @@ struct unit_data* HP_unit_bl2ud2(struct block_list *bl) {
}
void HP_unit_init_ud(struct unit_data *ud) {
int hIndex = 0;
- if( HPMHooks.count.HP_unit_init_ud_pre ) {
+ if (HPMHooks.count.HP_unit_init_ud_pre > 0) {
void (*preHookFunc) (struct unit_data **ud);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_init_ud_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_init_ud_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_init_ud_pre[hIndex].func;
preHookFunc(&ud);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -79823,9 +88142,9 @@ void HP_unit_init_ud(struct unit_data *ud) {
{
HPMHooks.source.unit.init_ud(ud);
}
- if( HPMHooks.count.HP_unit_init_ud_post ) {
+ if (HPMHooks.count.HP_unit_init_ud_post > 0) {
void (*postHookFunc) (struct unit_data *ud);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_init_ud_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_init_ud_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_init_ud_post[hIndex].func;
postHookFunc(ud);
}
@@ -79835,14 +88154,14 @@ void HP_unit_init_ud(struct unit_data *ud) {
int HP_unit_attack_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_attack_timer_pre ) {
+ if (HPMHooks.count.HP_unit_attack_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_attack_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_attack_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_attack_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -79850,9 +88169,9 @@ int HP_unit_attack_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.unit.attack_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_unit_attack_timer_post ) {
+ if (HPMHooks.count.HP_unit_attack_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_attack_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_attack_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_attack_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -79862,14 +88181,14 @@ int HP_unit_attack_timer(int tid, int64 tick, int id, intptr_t data) {
int HP_unit_walktoxy_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_walktoxy_timer_pre ) {
+ if (HPMHooks.count.HP_unit_walktoxy_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_walktoxy_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_walktoxy_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_walktoxy_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -79877,9 +88196,9 @@ int HP_unit_walktoxy_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.unit.walktoxy_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_unit_walktoxy_timer_post ) {
+ if (HPMHooks.count.HP_unit_walktoxy_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_walktoxy_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_walktoxy_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_walktoxy_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -79889,14 +88208,14 @@ int HP_unit_walktoxy_timer(int tid, int64 tick, int id, intptr_t data) {
int HP_unit_walktoxy_sub(struct block_list *bl) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_walktoxy_sub_pre ) {
+ if (HPMHooks.count.HP_unit_walktoxy_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_walktoxy_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_walktoxy_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_walktoxy_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -79904,9 +88223,9 @@ int HP_unit_walktoxy_sub(struct block_list *bl) {
{
retVal___ = HPMHooks.source.unit.walktoxy_sub(bl);
}
- if( HPMHooks.count.HP_unit_walktoxy_sub_post ) {
+ if (HPMHooks.count.HP_unit_walktoxy_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_walktoxy_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_walktoxy_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_walktoxy_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -79916,14 +88235,14 @@ int HP_unit_walktoxy_sub(struct block_list *bl) {
int HP_unit_delay_walktoxy_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_delay_walktoxy_timer_pre ) {
+ if (HPMHooks.count.HP_unit_delay_walktoxy_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_delay_walktoxy_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_delay_walktoxy_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_delay_walktoxy_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -79931,9 +88250,9 @@ int HP_unit_delay_walktoxy_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.unit.delay_walktoxy_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_unit_delay_walktoxy_timer_post ) {
+ if (HPMHooks.count.HP_unit_delay_walktoxy_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_delay_walktoxy_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_delay_walktoxy_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_delay_walktoxy_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -79943,14 +88262,14 @@ int HP_unit_delay_walktoxy_timer(int tid, int64 tick, int id, intptr_t data) {
int HP_unit_walktoxy(struct block_list *bl, short x, short y, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_walktoxy_pre ) {
+ if (HPMHooks.count.HP_unit_walktoxy_pre > 0) {
int (*preHookFunc) (struct block_list **bl, short *x, short *y, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_walktoxy_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_walktoxy_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_walktoxy_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &x, &y, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -79958,9 +88277,9 @@ int HP_unit_walktoxy(struct block_list *bl, short x, short y, int flag) {
{
retVal___ = HPMHooks.source.unit.walktoxy(bl, x, y, flag);
}
- if( HPMHooks.count.HP_unit_walktoxy_post ) {
+ if (HPMHooks.count.HP_unit_walktoxy_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, short x, short y, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_walktoxy_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_walktoxy_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_walktoxy_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, x, y, flag);
}
@@ -79970,14 +88289,14 @@ int HP_unit_walktoxy(struct block_list *bl, short x, short y, int flag) {
int HP_unit_walktobl_sub(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_walktobl_sub_pre ) {
+ if (HPMHooks.count.HP_unit_walktobl_sub_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_walktobl_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_walktobl_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_walktobl_sub_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -79985,9 +88304,9 @@ int HP_unit_walktobl_sub(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.unit.walktobl_sub(tid, tick, id, data);
}
- if( HPMHooks.count.HP_unit_walktobl_sub_post ) {
+ if (HPMHooks.count.HP_unit_walktobl_sub_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_walktobl_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_walktobl_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_walktobl_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -79997,14 +88316,14 @@ int HP_unit_walktobl_sub(int tid, int64 tick, int id, intptr_t data) {
int HP_unit_walktobl(struct block_list *bl, struct block_list *tbl, int range, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_walktobl_pre ) {
+ if (HPMHooks.count.HP_unit_walktobl_pre > 0) {
int (*preHookFunc) (struct block_list **bl, struct block_list **tbl, int *range, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_walktobl_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_walktobl_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_walktobl_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &tbl, &range, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -80012,9 +88331,9 @@ int HP_unit_walktobl(struct block_list *bl, struct block_list *tbl, int range, i
{
retVal___ = HPMHooks.source.unit.walktobl(bl, tbl, range, flag);
}
- if( HPMHooks.count.HP_unit_walktobl_post ) {
+ if (HPMHooks.count.HP_unit_walktobl_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, struct block_list *tbl, int range, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_walktobl_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_walktobl_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_walktobl_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, tbl, range, flag);
}
@@ -80024,14 +88343,14 @@ int HP_unit_walktobl(struct block_list *bl, struct block_list *tbl, int range, i
bool HP_unit_run(struct block_list *bl, struct map_session_data *sd, enum sc_type type) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_unit_run_pre ) {
+ if (HPMHooks.count.HP_unit_run_pre > 0) {
bool (*preHookFunc) (struct block_list **bl, struct map_session_data **sd, enum sc_type *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_run_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_run_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_run_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &sd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -80039,9 +88358,9 @@ bool HP_unit_run(struct block_list *bl, struct map_session_data *sd, enum sc_typ
{
retVal___ = HPMHooks.source.unit.run(bl, sd, type);
}
- if( HPMHooks.count.HP_unit_run_post ) {
+ if (HPMHooks.count.HP_unit_run_post > 0) {
bool (*postHookFunc) (bool retVal___, struct block_list *bl, struct map_session_data *sd, enum sc_type type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_run_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_run_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_run_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, sd, type);
}
@@ -80050,14 +88369,14 @@ bool HP_unit_run(struct block_list *bl, struct map_session_data *sd, enum sc_typ
}
void HP_unit_run_hit(struct block_list *bl, struct status_change *sc, struct map_session_data *sd, enum sc_type type) {
int hIndex = 0;
- if( HPMHooks.count.HP_unit_run_hit_pre ) {
+ if (HPMHooks.count.HP_unit_run_hit_pre > 0) {
void (*preHookFunc) (struct block_list **bl, struct status_change **sc, struct map_session_data **sd, enum sc_type *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_run_hit_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_run_hit_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_run_hit_pre[hIndex].func;
preHookFunc(&bl, &sc, &sd, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -80065,9 +88384,9 @@ void HP_unit_run_hit(struct block_list *bl, struct status_change *sc, struct map
{
HPMHooks.source.unit.run_hit(bl, sc, sd, type);
}
- if( HPMHooks.count.HP_unit_run_hit_post ) {
+ if (HPMHooks.count.HP_unit_run_hit_post > 0) {
void (*postHookFunc) (struct block_list *bl, struct status_change *sc, struct map_session_data *sd, enum sc_type type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_run_hit_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_run_hit_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_run_hit_post[hIndex].func;
postHookFunc(bl, sc, sd, type);
}
@@ -80077,14 +88396,14 @@ void HP_unit_run_hit(struct block_list *bl, struct status_change *sc, struct map
int HP_unit_escape(struct block_list *bl, struct block_list *target, short dist) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_escape_pre ) {
+ if (HPMHooks.count.HP_unit_escape_pre > 0) {
int (*preHookFunc) (struct block_list **bl, struct block_list **target, short *dist);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_escape_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_escape_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_escape_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &target, &dist);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -80092,9 +88411,9 @@ int HP_unit_escape(struct block_list *bl, struct block_list *target, short dist)
{
retVal___ = HPMHooks.source.unit.escape(bl, target, dist);
}
- if( HPMHooks.count.HP_unit_escape_post ) {
+ if (HPMHooks.count.HP_unit_escape_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, struct block_list *target, short dist);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_escape_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_escape_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_escape_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, target, dist);
}
@@ -80104,14 +88423,14 @@ int HP_unit_escape(struct block_list *bl, struct block_list *target, short dist)
int HP_unit_movepos(struct block_list *bl, short dst_x, short dst_y, int easy, bool checkpath) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_movepos_pre ) {
+ if (HPMHooks.count.HP_unit_movepos_pre > 0) {
int (*preHookFunc) (struct block_list **bl, short *dst_x, short *dst_y, int *easy, bool *checkpath);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_movepos_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_movepos_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_movepos_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &dst_x, &dst_y, &easy, &checkpath);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -80119,9 +88438,9 @@ int HP_unit_movepos(struct block_list *bl, short dst_x, short dst_y, int easy, b
{
retVal___ = HPMHooks.source.unit.movepos(bl, dst_x, dst_y, easy, checkpath);
}
- if( HPMHooks.count.HP_unit_movepos_post ) {
+ if (HPMHooks.count.HP_unit_movepos_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, short dst_x, short dst_y, int easy, bool checkpath);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_movepos_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_movepos_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_movepos_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, dst_x, dst_y, easy, checkpath);
}
@@ -80131,14 +88450,14 @@ int HP_unit_movepos(struct block_list *bl, short dst_x, short dst_y, int easy, b
int HP_unit_setdir(struct block_list *bl, unsigned char dir) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_setdir_pre ) {
+ if (HPMHooks.count.HP_unit_setdir_pre > 0) {
int (*preHookFunc) (struct block_list **bl, unsigned char *dir);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_setdir_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_setdir_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_setdir_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &dir);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -80146,9 +88465,9 @@ int HP_unit_setdir(struct block_list *bl, unsigned char dir) {
{
retVal___ = HPMHooks.source.unit.setdir(bl, dir);
}
- if( HPMHooks.count.HP_unit_setdir_post ) {
+ if (HPMHooks.count.HP_unit_setdir_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, unsigned char dir);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_setdir_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_setdir_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_setdir_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, dir);
}
@@ -80158,14 +88477,14 @@ int HP_unit_setdir(struct block_list *bl, unsigned char dir) {
uint8 HP_unit_getdir(struct block_list *bl) {
int hIndex = 0;
uint8 retVal___ = 0;
- if( HPMHooks.count.HP_unit_getdir_pre ) {
+ if (HPMHooks.count.HP_unit_getdir_pre > 0) {
uint8 (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_getdir_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_getdir_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_getdir_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -80173,9 +88492,9 @@ uint8 HP_unit_getdir(struct block_list *bl) {
{
retVal___ = HPMHooks.source.unit.getdir(bl);
}
- if( HPMHooks.count.HP_unit_getdir_post ) {
+ if (HPMHooks.count.HP_unit_getdir_post > 0) {
uint8 (*postHookFunc) (uint8 retVal___, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_getdir_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_getdir_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_getdir_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -80185,14 +88504,14 @@ uint8 HP_unit_getdir(struct block_list *bl) {
int HP_unit_blown(struct block_list *bl, int dx, int dy, int count, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_blown_pre ) {
+ if (HPMHooks.count.HP_unit_blown_pre > 0) {
int (*preHookFunc) (struct block_list **bl, int *dx, int *dy, int *count, int *flag);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_blown_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_blown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_blown_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &dx, &dy, &count, &flag);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -80200,26 +88519,26 @@ int HP_unit_blown(struct block_list *bl, int dx, int dy, int count, int flag) {
{
retVal___ = HPMHooks.source.unit.blown(bl, dx, dy, count, flag);
}
- if( HPMHooks.count.HP_unit_blown_post ) {
+ if (HPMHooks.count.HP_unit_blown_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, int dx, int dy, int count, int flag);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_blown_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_blown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_blown_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, dx, dy, count, flag);
}
}
return retVal___;
}
-int HP_unit_warp(struct block_list *bl, short m, short x, short y, clr_type type) {
+int HP_unit_warp(struct block_list *bl, short m, short x, short y, enum clr_type type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_warp_pre ) {
- int (*preHookFunc) (struct block_list **bl, short *m, short *x, short *y, clr_type *type);
+ if (HPMHooks.count.HP_unit_warp_pre > 0) {
+ int (*preHookFunc) (struct block_list **bl, short *m, short *x, short *y, enum clr_type *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_warp_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_warp_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_warp_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &m, &x, &y, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -80227,9 +88546,9 @@ int HP_unit_warp(struct block_list *bl, short m, short x, short y, clr_type type
{
retVal___ = HPMHooks.source.unit.warp(bl, m, x, y, type);
}
- if( HPMHooks.count.HP_unit_warp_post ) {
- int (*postHookFunc) (int retVal___, struct block_list *bl, short m, short x, short y, clr_type type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_warp_post; hIndex++ ) {
+ if (HPMHooks.count.HP_unit_warp_post > 0) {
+ int (*postHookFunc) (int retVal___, struct block_list *bl, short m, short x, short y, enum clr_type type);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_warp_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_warp_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, m, x, y, type);
}
@@ -80239,14 +88558,14 @@ int HP_unit_warp(struct block_list *bl, short m, short x, short y, clr_type type
int HP_unit_stop_walking(struct block_list *bl, int type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_stop_walking_pre ) {
+ if (HPMHooks.count.HP_unit_stop_walking_pre > 0) {
int (*preHookFunc) (struct block_list **bl, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_stop_walking_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_stop_walking_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_stop_walking_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -80254,9 +88573,9 @@ int HP_unit_stop_walking(struct block_list *bl, int type) {
{
retVal___ = HPMHooks.source.unit.stop_walking(bl, type);
}
- if( HPMHooks.count.HP_unit_stop_walking_post ) {
+ if (HPMHooks.count.HP_unit_stop_walking_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_stop_walking_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_stop_walking_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_stop_walking_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, type);
}
@@ -80266,14 +88585,14 @@ int HP_unit_stop_walking(struct block_list *bl, int type) {
int HP_unit_skilluse_id(struct block_list *src, int target_id, uint16 skill_id, uint16 skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_skilluse_id_pre ) {
+ if (HPMHooks.count.HP_unit_skilluse_id_pre > 0) {
int (*preHookFunc) (struct block_list **src, int *target_id, uint16 *skill_id, uint16 *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_skilluse_id_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_skilluse_id_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_skilluse_id_pre[hIndex].func;
retVal___ = preHookFunc(&src, &target_id, &skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -80281,9 +88600,9 @@ int HP_unit_skilluse_id(struct block_list *src, int target_id, uint16 skill_id,
{
retVal___ = HPMHooks.source.unit.skilluse_id(src, target_id, skill_id, skill_lv);
}
- if( HPMHooks.count.HP_unit_skilluse_id_post ) {
+ if (HPMHooks.count.HP_unit_skilluse_id_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src, int target_id, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_skilluse_id_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_skilluse_id_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_skilluse_id_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, target_id, skill_id, skill_lv);
}
@@ -80293,14 +88612,14 @@ int HP_unit_skilluse_id(struct block_list *src, int target_id, uint16 skill_id,
int HP_unit_step_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_step_timer_pre ) {
+ if (HPMHooks.count.HP_unit_step_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_step_timer_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_step_timer_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_step_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -80308,9 +88627,9 @@ int HP_unit_step_timer(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.unit.step_timer(tid, tick, id, data);
}
- if( HPMHooks.count.HP_unit_step_timer_post ) {
+ if (HPMHooks.count.HP_unit_step_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_step_timer_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_step_timer_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_step_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -80319,14 +88638,14 @@ int HP_unit_step_timer(int tid, int64 tick, int id, intptr_t data) {
}
void HP_unit_stop_stepaction(struct block_list *bl) {
int hIndex = 0;
- if( HPMHooks.count.HP_unit_stop_stepaction_pre ) {
+ if (HPMHooks.count.HP_unit_stop_stepaction_pre > 0) {
void (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_stop_stepaction_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_stop_stepaction_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_stop_stepaction_pre[hIndex].func;
preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -80334,9 +88653,9 @@ void HP_unit_stop_stepaction(struct block_list *bl) {
{
HPMHooks.source.unit.stop_stepaction(bl);
}
- if( HPMHooks.count.HP_unit_stop_stepaction_post ) {
+ if (HPMHooks.count.HP_unit_stop_stepaction_post > 0) {
void (*postHookFunc) (struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_stop_stepaction_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_stop_stepaction_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_stop_stepaction_post[hIndex].func;
postHookFunc(bl);
}
@@ -80346,14 +88665,14 @@ void HP_unit_stop_stepaction(struct block_list *bl) {
int HP_unit_is_walking(struct block_list *bl) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_is_walking_pre ) {
+ if (HPMHooks.count.HP_unit_is_walking_pre > 0) {
int (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_is_walking_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_is_walking_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_is_walking_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -80361,9 +88680,9 @@ int HP_unit_is_walking(struct block_list *bl) {
{
retVal___ = HPMHooks.source.unit.is_walking(bl);
}
- if( HPMHooks.count.HP_unit_is_walking_post ) {
+ if (HPMHooks.count.HP_unit_is_walking_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_is_walking_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_is_walking_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_is_walking_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -80373,14 +88692,14 @@ int HP_unit_is_walking(struct block_list *bl) {
int HP_unit_can_move(struct block_list *bl) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_can_move_pre ) {
+ if (HPMHooks.count.HP_unit_can_move_pre > 0) {
int (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_can_move_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_can_move_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_can_move_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -80388,9 +88707,9 @@ int HP_unit_can_move(struct block_list *bl) {
{
retVal___ = HPMHooks.source.unit.can_move(bl);
}
- if( HPMHooks.count.HP_unit_can_move_post ) {
+ if (HPMHooks.count.HP_unit_can_move_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_can_move_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_can_move_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_can_move_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -80400,14 +88719,14 @@ int HP_unit_can_move(struct block_list *bl) {
int HP_unit_resume_running(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_resume_running_pre ) {
+ if (HPMHooks.count.HP_unit_resume_running_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_resume_running_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_resume_running_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_resume_running_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -80415,9 +88734,9 @@ int HP_unit_resume_running(int tid, int64 tick, int id, intptr_t data) {
{
retVal___ = HPMHooks.source.unit.resume_running(tid, tick, id, data);
}
- if( HPMHooks.count.HP_unit_resume_running_post ) {
+ if (HPMHooks.count.HP_unit_resume_running_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_resume_running_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_resume_running_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_resume_running_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
@@ -80427,14 +88746,14 @@ int HP_unit_resume_running(int tid, int64 tick, int id, intptr_t data) {
int HP_unit_set_walkdelay(struct block_list *bl, int64 tick, int delay, int type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_set_walkdelay_pre ) {
+ if (HPMHooks.count.HP_unit_set_walkdelay_pre > 0) {
int (*preHookFunc) (struct block_list **bl, int64 *tick, int *delay, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_set_walkdelay_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_set_walkdelay_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_set_walkdelay_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &tick, &delay, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -80442,9 +88761,9 @@ int HP_unit_set_walkdelay(struct block_list *bl, int64 tick, int delay, int type
{
retVal___ = HPMHooks.source.unit.set_walkdelay(bl, tick, delay, type);
}
- if( HPMHooks.count.HP_unit_set_walkdelay_post ) {
+ if (HPMHooks.count.HP_unit_set_walkdelay_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, int64 tick, int delay, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_set_walkdelay_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_set_walkdelay_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_set_walkdelay_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, tick, delay, type);
}
@@ -80454,14 +88773,14 @@ int HP_unit_set_walkdelay(struct block_list *bl, int64 tick, int delay, int type
int HP_unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, uint16 skill_lv, int casttime, int castcancel) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_skilluse_id2_pre ) {
+ if (HPMHooks.count.HP_unit_skilluse_id2_pre > 0) {
int (*preHookFunc) (struct block_list **src, int *target_id, uint16 *skill_id, uint16 *skill_lv, int *casttime, int *castcancel);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_skilluse_id2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_skilluse_id2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_skilluse_id2_pre[hIndex].func;
retVal___ = preHookFunc(&src, &target_id, &skill_id, &skill_lv, &casttime, &castcancel);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -80469,9 +88788,9 @@ int HP_unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id,
{
retVal___ = HPMHooks.source.unit.skilluse_id2(src, target_id, skill_id, skill_lv, casttime, castcancel);
}
- if( HPMHooks.count.HP_unit_skilluse_id2_post ) {
+ if (HPMHooks.count.HP_unit_skilluse_id2_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src, int target_id, uint16 skill_id, uint16 skill_lv, int casttime, int castcancel);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_skilluse_id2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_skilluse_id2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_skilluse_id2_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, target_id, skill_id, skill_lv, casttime, castcancel);
}
@@ -80481,14 +88800,14 @@ int HP_unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id,
int HP_unit_skilluse_pos(struct block_list *src, short skill_x, short skill_y, uint16 skill_id, uint16 skill_lv) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_skilluse_pos_pre ) {
+ if (HPMHooks.count.HP_unit_skilluse_pos_pre > 0) {
int (*preHookFunc) (struct block_list **src, short *skill_x, short *skill_y, uint16 *skill_id, uint16 *skill_lv);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_skilluse_pos_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_skilluse_pos_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_skilluse_pos_pre[hIndex].func;
retVal___ = preHookFunc(&src, &skill_x, &skill_y, &skill_id, &skill_lv);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -80496,9 +88815,9 @@ int HP_unit_skilluse_pos(struct block_list *src, short skill_x, short skill_y, u
{
retVal___ = HPMHooks.source.unit.skilluse_pos(src, skill_x, skill_y, skill_id, skill_lv);
}
- if( HPMHooks.count.HP_unit_skilluse_pos_post ) {
+ if (HPMHooks.count.HP_unit_skilluse_pos_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src, short skill_x, short skill_y, uint16 skill_id, uint16 skill_lv);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_skilluse_pos_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_skilluse_pos_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_skilluse_pos_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, skill_x, skill_y, skill_id, skill_lv);
}
@@ -80508,14 +88827,14 @@ int HP_unit_skilluse_pos(struct block_list *src, short skill_x, short skill_y, u
int HP_unit_skilluse_pos2(struct block_list *src, short skill_x, short skill_y, uint16 skill_id, uint16 skill_lv, int casttime, int castcancel) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_skilluse_pos2_pre ) {
+ if (HPMHooks.count.HP_unit_skilluse_pos2_pre > 0) {
int (*preHookFunc) (struct block_list **src, short *skill_x, short *skill_y, uint16 *skill_id, uint16 *skill_lv, int *casttime, int *castcancel);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_skilluse_pos2_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_skilluse_pos2_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_skilluse_pos2_pre[hIndex].func;
retVal___ = preHookFunc(&src, &skill_x, &skill_y, &skill_id, &skill_lv, &casttime, &castcancel);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -80523,9 +88842,9 @@ int HP_unit_skilluse_pos2(struct block_list *src, short skill_x, short skill_y,
{
retVal___ = HPMHooks.source.unit.skilluse_pos2(src, skill_x, skill_y, skill_id, skill_lv, casttime, castcancel);
}
- if( HPMHooks.count.HP_unit_skilluse_pos2_post ) {
+ if (HPMHooks.count.HP_unit_skilluse_pos2_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src, short skill_x, short skill_y, uint16 skill_id, uint16 skill_lv, int casttime, int castcancel);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_skilluse_pos2_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_skilluse_pos2_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_skilluse_pos2_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, skill_x, skill_y, skill_id, skill_lv, casttime, castcancel);
}
@@ -80535,14 +88854,14 @@ int HP_unit_skilluse_pos2(struct block_list *src, short skill_x, short skill_y,
int HP_unit_set_target(struct unit_data *ud, int target_id) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_set_target_pre ) {
+ if (HPMHooks.count.HP_unit_set_target_pre > 0) {
int (*preHookFunc) (struct unit_data **ud, int *target_id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_set_target_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_set_target_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_set_target_pre[hIndex].func;
retVal___ = preHookFunc(&ud, &target_id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -80550,9 +88869,9 @@ int HP_unit_set_target(struct unit_data *ud, int target_id) {
{
retVal___ = HPMHooks.source.unit.set_target(ud, target_id);
}
- if( HPMHooks.count.HP_unit_set_target_post ) {
+ if (HPMHooks.count.HP_unit_set_target_post > 0) {
int (*postHookFunc) (int retVal___, struct unit_data *ud, int target_id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_set_target_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_set_target_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_set_target_post[hIndex].func;
retVal___ = postHookFunc(retVal___, ud, target_id);
}
@@ -80561,14 +88880,14 @@ int HP_unit_set_target(struct unit_data *ud, int target_id) {
}
void HP_unit_stop_attack(struct block_list *bl) {
int hIndex = 0;
- if( HPMHooks.count.HP_unit_stop_attack_pre ) {
+ if (HPMHooks.count.HP_unit_stop_attack_pre > 0) {
void (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_stop_attack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_stop_attack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_stop_attack_pre[hIndex].func;
preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -80576,9 +88895,9 @@ void HP_unit_stop_attack(struct block_list *bl) {
{
HPMHooks.source.unit.stop_attack(bl);
}
- if( HPMHooks.count.HP_unit_stop_attack_post ) {
+ if (HPMHooks.count.HP_unit_stop_attack_post > 0) {
void (*postHookFunc) (struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_stop_attack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_stop_attack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_stop_attack_post[hIndex].func;
postHookFunc(bl);
}
@@ -80588,14 +88907,14 @@ void HP_unit_stop_attack(struct block_list *bl) {
int HP_unit_unattackable(struct block_list *bl) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_unattackable_pre ) {
+ if (HPMHooks.count.HP_unit_unattackable_pre > 0) {
int (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_unattackable_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_unattackable_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_unattackable_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -80603,9 +88922,9 @@ int HP_unit_unattackable(struct block_list *bl) {
{
retVal___ = HPMHooks.source.unit.unattackable(bl);
}
- if( HPMHooks.count.HP_unit_unattackable_post ) {
+ if (HPMHooks.count.HP_unit_unattackable_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_unattackable_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_unattackable_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_unattackable_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -80615,14 +88934,14 @@ int HP_unit_unattackable(struct block_list *bl) {
int HP_unit_attack(struct block_list *src, int target_id, int continuous) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_attack_pre ) {
+ if (HPMHooks.count.HP_unit_attack_pre > 0) {
int (*preHookFunc) (struct block_list **src, int *target_id, int *continuous);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_attack_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_attack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_attack_pre[hIndex].func;
retVal___ = preHookFunc(&src, &target_id, &continuous);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -80630,9 +88949,9 @@ int HP_unit_attack(struct block_list *src, int target_id, int continuous) {
{
retVal___ = HPMHooks.source.unit.attack(src, target_id, continuous);
}
- if( HPMHooks.count.HP_unit_attack_post ) {
+ if (HPMHooks.count.HP_unit_attack_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src, int target_id, int continuous);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_attack_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_attack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_attack_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, target_id, continuous);
}
@@ -80642,14 +88961,14 @@ int HP_unit_attack(struct block_list *src, int target_id, int continuous) {
int HP_unit_cancel_combo(struct block_list *bl) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_cancel_combo_pre ) {
+ if (HPMHooks.count.HP_unit_cancel_combo_pre > 0) {
int (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_cancel_combo_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_cancel_combo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_cancel_combo_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -80657,9 +88976,9 @@ int HP_unit_cancel_combo(struct block_list *bl) {
{
retVal___ = HPMHooks.source.unit.cancel_combo(bl);
}
- if( HPMHooks.count.HP_unit_cancel_combo_post ) {
+ if (HPMHooks.count.HP_unit_cancel_combo_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_cancel_combo_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_cancel_combo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_cancel_combo_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -80669,14 +88988,14 @@ int HP_unit_cancel_combo(struct block_list *bl) {
bool HP_unit_can_reach_pos(struct block_list *bl, int x, int y, int easy) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_unit_can_reach_pos_pre ) {
+ if (HPMHooks.count.HP_unit_can_reach_pos_pre > 0) {
bool (*preHookFunc) (struct block_list **bl, int *x, int *y, int *easy);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_can_reach_pos_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_can_reach_pos_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_can_reach_pos_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &x, &y, &easy);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -80684,9 +89003,9 @@ bool HP_unit_can_reach_pos(struct block_list *bl, int x, int y, int easy) {
{
retVal___ = HPMHooks.source.unit.can_reach_pos(bl, x, y, easy);
}
- if( HPMHooks.count.HP_unit_can_reach_pos_post ) {
+ if (HPMHooks.count.HP_unit_can_reach_pos_post > 0) {
bool (*postHookFunc) (bool retVal___, struct block_list *bl, int x, int y, int easy);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_can_reach_pos_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_can_reach_pos_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_can_reach_pos_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, x, y, easy);
}
@@ -80696,14 +89015,14 @@ bool HP_unit_can_reach_pos(struct block_list *bl, int x, int y, int easy) {
bool HP_unit_can_reach_bl(struct block_list *bl, struct block_list *tbl, int range, int easy, short *x, short *y) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_unit_can_reach_bl_pre ) {
+ if (HPMHooks.count.HP_unit_can_reach_bl_pre > 0) {
bool (*preHookFunc) (struct block_list **bl, struct block_list **tbl, int *range, int *easy, short **x, short **y);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_can_reach_bl_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_can_reach_bl_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_can_reach_bl_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &tbl, &range, &easy, &x, &y);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -80711,9 +89030,9 @@ bool HP_unit_can_reach_bl(struct block_list *bl, struct block_list *tbl, int ran
{
retVal___ = HPMHooks.source.unit.can_reach_bl(bl, tbl, range, easy, x, y);
}
- if( HPMHooks.count.HP_unit_can_reach_bl_post ) {
+ if (HPMHooks.count.HP_unit_can_reach_bl_post > 0) {
bool (*postHookFunc) (bool retVal___, struct block_list *bl, struct block_list *tbl, int range, int easy, short *x, short *y);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_can_reach_bl_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_can_reach_bl_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_can_reach_bl_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, tbl, range, easy, x, y);
}
@@ -80723,14 +89042,14 @@ bool HP_unit_can_reach_bl(struct block_list *bl, struct block_list *tbl, int ran
int HP_unit_calc_pos(struct block_list *bl, int tx, int ty, uint8 dir) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_calc_pos_pre ) {
+ if (HPMHooks.count.HP_unit_calc_pos_pre > 0) {
int (*preHookFunc) (struct block_list **bl, int *tx, int *ty, uint8 *dir);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_calc_pos_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_calc_pos_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_calc_pos_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &tx, &ty, &dir);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -80738,9 +89057,9 @@ int HP_unit_calc_pos(struct block_list *bl, int tx, int ty, uint8 dir) {
{
retVal___ = HPMHooks.source.unit.calc_pos(bl, tx, ty, dir);
}
- if( HPMHooks.count.HP_unit_calc_pos_post ) {
+ if (HPMHooks.count.HP_unit_calc_pos_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, int tx, int ty, uint8 dir);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_calc_pos_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_calc_pos_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_calc_pos_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, tx, ty, dir);
}
@@ -80750,14 +89069,14 @@ int HP_unit_calc_pos(struct block_list *bl, int tx, int ty, uint8 dir) {
int HP_unit_attack_timer_sub(struct block_list *src, int tid, int64 tick) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_attack_timer_sub_pre ) {
+ if (HPMHooks.count.HP_unit_attack_timer_sub_pre > 0) {
int (*preHookFunc) (struct block_list **src, int *tid, int64 *tick);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_attack_timer_sub_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_attack_timer_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_attack_timer_sub_pre[hIndex].func;
retVal___ = preHookFunc(&src, &tid, &tick);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -80765,9 +89084,9 @@ int HP_unit_attack_timer_sub(struct block_list *src, int tid, int64 tick) {
{
retVal___ = HPMHooks.source.unit.attack_timer_sub(src, tid, tick);
}
- if( HPMHooks.count.HP_unit_attack_timer_sub_post ) {
+ if (HPMHooks.count.HP_unit_attack_timer_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src, int tid, int64 tick);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_attack_timer_sub_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_attack_timer_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_attack_timer_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, tid, tick);
}
@@ -80777,14 +89096,14 @@ int HP_unit_attack_timer_sub(struct block_list *src, int tid, int64 tick) {
int HP_unit_skillcastcancel(struct block_list *bl, int type) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_skillcastcancel_pre ) {
+ if (HPMHooks.count.HP_unit_skillcastcancel_pre > 0) {
int (*preHookFunc) (struct block_list **bl, int *type);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_skillcastcancel_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_skillcastcancel_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_skillcastcancel_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &type);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -80792,9 +89111,9 @@ int HP_unit_skillcastcancel(struct block_list *bl, int type) {
{
retVal___ = HPMHooks.source.unit.skillcastcancel(bl, type);
}
- if( HPMHooks.count.HP_unit_skillcastcancel_post ) {
+ if (HPMHooks.count.HP_unit_skillcastcancel_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, int type);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_skillcastcancel_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_skillcastcancel_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_skillcastcancel_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, type);
}
@@ -80803,14 +89122,14 @@ int HP_unit_skillcastcancel(struct block_list *bl, int type) {
}
void HP_unit_dataset(struct block_list *bl) {
int hIndex = 0;
- if( HPMHooks.count.HP_unit_dataset_pre ) {
+ if (HPMHooks.count.HP_unit_dataset_pre > 0) {
void (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_dataset_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_dataset_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_dataset_pre[hIndex].func;
preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -80818,9 +89137,9 @@ void HP_unit_dataset(struct block_list *bl) {
{
HPMHooks.source.unit.dataset(bl);
}
- if( HPMHooks.count.HP_unit_dataset_post ) {
+ if (HPMHooks.count.HP_unit_dataset_post > 0) {
void (*postHookFunc) (struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_dataset_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_dataset_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_dataset_post[hIndex].func;
postHookFunc(bl);
}
@@ -80830,14 +89149,14 @@ void HP_unit_dataset(struct block_list *bl) {
int HP_unit_counttargeted(struct block_list *bl) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_counttargeted_pre ) {
+ if (HPMHooks.count.HP_unit_counttargeted_pre > 0) {
int (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_counttargeted_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_counttargeted_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_counttargeted_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -80845,9 +89164,9 @@ int HP_unit_counttargeted(struct block_list *bl) {
{
retVal___ = HPMHooks.source.unit.counttargeted(bl);
}
- if( HPMHooks.count.HP_unit_counttargeted_post ) {
+ if (HPMHooks.count.HP_unit_counttargeted_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_counttargeted_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_counttargeted_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_counttargeted_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
@@ -80857,14 +89176,14 @@ int HP_unit_counttargeted(struct block_list *bl) {
int HP_unit_fixdamage(struct block_list *src, struct block_list *target, int sdelay, int ddelay, int64 damage, short div, unsigned char type, int64 damage2) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_fixdamage_pre ) {
+ if (HPMHooks.count.HP_unit_fixdamage_pre > 0) {
int (*preHookFunc) (struct block_list **src, struct block_list **target, int *sdelay, int *ddelay, int64 *damage, short *div, unsigned char *type, int64 *damage2);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_fixdamage_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_fixdamage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_fixdamage_pre[hIndex].func;
retVal___ = preHookFunc(&src, &target, &sdelay, &ddelay, &damage, &div, &type, &damage2);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -80872,9 +89191,9 @@ int HP_unit_fixdamage(struct block_list *src, struct block_list *target, int sde
{
retVal___ = HPMHooks.source.unit.fixdamage(src, target, sdelay, ddelay, damage, div, type, damage2);
}
- if( HPMHooks.count.HP_unit_fixdamage_post ) {
+ if (HPMHooks.count.HP_unit_fixdamage_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *src, struct block_list *target, int sdelay, int ddelay, int64 damage, short div, unsigned char type, int64 damage2);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_fixdamage_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_fixdamage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_fixdamage_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, target, sdelay, ddelay, damage, div, type, damage2);
}
@@ -80884,14 +89203,14 @@ int HP_unit_fixdamage(struct block_list *src, struct block_list *target, int sde
int HP_unit_changeviewsize(struct block_list *bl, short size) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_changeviewsize_pre ) {
+ if (HPMHooks.count.HP_unit_changeviewsize_pre > 0) {
int (*preHookFunc) (struct block_list **bl, short *size);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_changeviewsize_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_changeviewsize_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_changeviewsize_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &size);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -80899,26 +89218,26 @@ int HP_unit_changeviewsize(struct block_list *bl, short size) {
{
retVal___ = HPMHooks.source.unit.changeviewsize(bl, size);
}
- if( HPMHooks.count.HP_unit_changeviewsize_post ) {
+ if (HPMHooks.count.HP_unit_changeviewsize_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, short size);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_changeviewsize_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_changeviewsize_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_changeviewsize_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, size);
}
}
return retVal___;
}
-int HP_unit_remove_map(struct block_list *bl, clr_type clrtype, const char *file, int line, const char *func) {
+int HP_unit_remove_map(struct block_list *bl, enum clr_type clrtype, const char *file, int line, const char *func) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_remove_map_pre ) {
- int (*preHookFunc) (struct block_list **bl, clr_type *clrtype, const char **file, int *line, const char **func);
+ if (HPMHooks.count.HP_unit_remove_map_pre > 0) {
+ int (*preHookFunc) (struct block_list **bl, enum clr_type *clrtype, const char **file, int *line, const char **func);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_remove_map_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_remove_map_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_remove_map_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &clrtype, &file, &line, &func);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -80926,25 +89245,25 @@ int HP_unit_remove_map(struct block_list *bl, clr_type clrtype, const char *file
{
retVal___ = HPMHooks.source.unit.remove_map(bl, clrtype, file, line, func);
}
- if( HPMHooks.count.HP_unit_remove_map_post ) {
- int (*postHookFunc) (int retVal___, struct block_list *bl, clr_type clrtype, const char *file, int line, const char *func);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_remove_map_post; hIndex++ ) {
+ if (HPMHooks.count.HP_unit_remove_map_post > 0) {
+ int (*postHookFunc) (int retVal___, struct block_list *bl, enum clr_type clrtype, const char *file, int line, const char *func);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_remove_map_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_remove_map_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, clrtype, file, line, func);
}
}
return retVal___;
}
-void HP_unit_remove_map_pc(struct map_session_data *sd, clr_type clrtype) {
+void HP_unit_remove_map_pc(struct map_session_data *sd, enum clr_type clrtype) {
int hIndex = 0;
- if( HPMHooks.count.HP_unit_remove_map_pc_pre ) {
- void (*preHookFunc) (struct map_session_data **sd, clr_type *clrtype);
+ if (HPMHooks.count.HP_unit_remove_map_pc_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, enum clr_type *clrtype);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_remove_map_pc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_remove_map_pc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_remove_map_pc_pre[hIndex].func;
preHookFunc(&sd, &clrtype);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -80952,9 +89271,9 @@ void HP_unit_remove_map_pc(struct map_session_data *sd, clr_type clrtype) {
{
HPMHooks.source.unit.remove_map_pc(sd, clrtype);
}
- if( HPMHooks.count.HP_unit_remove_map_pc_post ) {
- void (*postHookFunc) (struct map_session_data *sd, clr_type clrtype);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_remove_map_pc_post; hIndex++ ) {
+ if (HPMHooks.count.HP_unit_remove_map_pc_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, enum clr_type clrtype);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_remove_map_pc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_remove_map_pc_post[hIndex].func;
postHookFunc(sd, clrtype);
}
@@ -80963,14 +89282,14 @@ void HP_unit_remove_map_pc(struct map_session_data *sd, clr_type clrtype) {
}
void HP_unit_free_pc(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_unit_free_pc_pre ) {
+ if (HPMHooks.count.HP_unit_free_pc_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_free_pc_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_free_pc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_free_pc_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -80978,26 +89297,26 @@ void HP_unit_free_pc(struct map_session_data *sd) {
{
HPMHooks.source.unit.free_pc(sd);
}
- if( HPMHooks.count.HP_unit_free_pc_post ) {
+ if (HPMHooks.count.HP_unit_free_pc_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_free_pc_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_free_pc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_free_pc_post[hIndex].func;
postHookFunc(sd);
}
}
return;
}
-int HP_unit_free(struct block_list *bl, clr_type clrtype) {
+int HP_unit_free(struct block_list *bl, enum clr_type clrtype) {
int hIndex = 0;
int retVal___ = 0;
- if( HPMHooks.count.HP_unit_free_pre ) {
- int (*preHookFunc) (struct block_list **bl, clr_type *clrtype);
+ if (HPMHooks.count.HP_unit_free_pre > 0) {
+ int (*preHookFunc) (struct block_list **bl, enum clr_type *clrtype);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_free_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_free_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_free_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &clrtype);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -81005,9 +89324,9 @@ int HP_unit_free(struct block_list *bl, clr_type clrtype) {
{
retVal___ = HPMHooks.source.unit.free(bl, clrtype);
}
- if( HPMHooks.count.HP_unit_free_post ) {
- int (*postHookFunc) (int retVal___, struct block_list *bl, clr_type clrtype);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_unit_free_post; hIndex++ ) {
+ if (HPMHooks.count.HP_unit_free_post > 0) {
+ int (*postHookFunc) (int retVal___, struct block_list *bl, enum clr_type clrtype);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_free_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_free_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, clrtype);
}
@@ -81017,14 +89336,14 @@ int HP_unit_free(struct block_list *bl, clr_type clrtype) {
/* vending_interface */
void HP_vending_init(bool minimal) {
int hIndex = 0;
- if( HPMHooks.count.HP_vending_init_pre ) {
+ if (HPMHooks.count.HP_vending_init_pre > 0) {
void (*preHookFunc) (bool *minimal);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_vending_init_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_vending_init_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_vending_init_pre[hIndex].func;
preHookFunc(&minimal);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -81032,9 +89351,9 @@ void HP_vending_init(bool minimal) {
{
HPMHooks.source.vending.init(minimal);
}
- if( HPMHooks.count.HP_vending_init_post ) {
+ if (HPMHooks.count.HP_vending_init_post > 0) {
void (*postHookFunc) (bool minimal);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_vending_init_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_vending_init_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_vending_init_post[hIndex].func;
postHookFunc(minimal);
}
@@ -81043,14 +89362,14 @@ void HP_vending_init(bool minimal) {
}
void HP_vending_final(void) {
int hIndex = 0;
- if( HPMHooks.count.HP_vending_final_pre ) {
+ if (HPMHooks.count.HP_vending_final_pre > 0) {
void (*preHookFunc) (void);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_vending_final_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_vending_final_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_vending_final_pre[hIndex].func;
preHookFunc();
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -81058,9 +89377,9 @@ void HP_vending_final(void) {
{
HPMHooks.source.vending.final();
}
- if( HPMHooks.count.HP_vending_final_post ) {
+ if (HPMHooks.count.HP_vending_final_post > 0) {
void (*postHookFunc) (void);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_vending_final_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_vending_final_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_vending_final_post[hIndex].func;
postHookFunc();
}
@@ -81069,14 +89388,14 @@ void HP_vending_final(void) {
}
void HP_vending_close(struct map_session_data *sd) {
int hIndex = 0;
- if( HPMHooks.count.HP_vending_close_pre ) {
+ if (HPMHooks.count.HP_vending_close_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_vending_close_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_vending_close_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_vending_close_pre[hIndex].func;
preHookFunc(&sd);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -81084,9 +89403,9 @@ void HP_vending_close(struct map_session_data *sd) {
{
HPMHooks.source.vending.close(sd);
}
- if( HPMHooks.count.HP_vending_close_post ) {
+ if (HPMHooks.count.HP_vending_close_post > 0) {
void (*postHookFunc) (struct map_session_data *sd);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_vending_close_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_vending_close_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_vending_close_post[hIndex].func;
postHookFunc(sd);
}
@@ -81095,14 +89414,14 @@ void HP_vending_close(struct map_session_data *sd) {
}
void HP_vending_open(struct map_session_data *sd, const char *message, const uint8 *data, int count) {
int hIndex = 0;
- if( HPMHooks.count.HP_vending_open_pre ) {
+ if (HPMHooks.count.HP_vending_open_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, const char **message, const uint8 **data, int *count);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_vending_open_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_vending_open_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_vending_open_pre[hIndex].func;
preHookFunc(&sd, &message, &data, &count);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -81110,9 +89429,9 @@ void HP_vending_open(struct map_session_data *sd, const char *message, const uin
{
HPMHooks.source.vending.open(sd, message, data, count);
}
- if( HPMHooks.count.HP_vending_open_post ) {
+ if (HPMHooks.count.HP_vending_open_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, const char *message, const uint8 *data, int count);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_vending_open_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_vending_open_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_vending_open_post[hIndex].func;
postHookFunc(sd, message, data, count);
}
@@ -81121,14 +89440,14 @@ void HP_vending_open(struct map_session_data *sd, const char *message, const uin
}
void HP_vending_list(struct map_session_data *sd, unsigned int id) {
int hIndex = 0;
- if( HPMHooks.count.HP_vending_list_pre ) {
+ if (HPMHooks.count.HP_vending_list_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, unsigned int *id);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_vending_list_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_vending_list_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_vending_list_pre[hIndex].func;
preHookFunc(&sd, &id);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -81136,9 +89455,9 @@ void HP_vending_list(struct map_session_data *sd, unsigned int id) {
{
HPMHooks.source.vending.list(sd, id);
}
- if( HPMHooks.count.HP_vending_list_post ) {
+ if (HPMHooks.count.HP_vending_list_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, unsigned int id);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_vending_list_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_vending_list_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_vending_list_post[hIndex].func;
postHookFunc(sd, id);
}
@@ -81147,14 +89466,14 @@ void HP_vending_list(struct map_session_data *sd, unsigned int id) {
}
void HP_vending_purchase(struct map_session_data *sd, int aid, unsigned int uid, const uint8 *data, int count) {
int hIndex = 0;
- if( HPMHooks.count.HP_vending_purchase_pre ) {
+ if (HPMHooks.count.HP_vending_purchase_pre > 0) {
void (*preHookFunc) (struct map_session_data **sd, int *aid, unsigned int *uid, const uint8 **data, int *count);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_vending_purchase_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_vending_purchase_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_vending_purchase_pre[hIndex].func;
preHookFunc(&sd, &aid, &uid, &data, &count);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return;
}
@@ -81162,26 +89481,26 @@ void HP_vending_purchase(struct map_session_data *sd, int aid, unsigned int uid,
{
HPMHooks.source.vending.purchase(sd, aid, uid, data, count);
}
- if( HPMHooks.count.HP_vending_purchase_post ) {
+ if (HPMHooks.count.HP_vending_purchase_post > 0) {
void (*postHookFunc) (struct map_session_data *sd, int aid, unsigned int uid, const uint8 *data, int count);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_vending_purchase_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_vending_purchase_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_vending_purchase_post[hIndex].func;
postHookFunc(sd, aid, uid, data, count);
}
}
return;
}
-bool HP_vending_search(struct map_session_data *sd, unsigned short nameid) {
+bool HP_vending_search(struct map_session_data *sd, int nameid) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_vending_search_pre ) {
- bool (*preHookFunc) (struct map_session_data **sd, unsigned short *nameid);
+ if (HPMHooks.count.HP_vending_search_pre > 0) {
+ bool (*preHookFunc) (struct map_session_data **sd, int *nameid);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_vending_search_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_vending_search_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_vending_search_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &nameid);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -81189,9 +89508,9 @@ bool HP_vending_search(struct map_session_data *sd, unsigned short nameid) {
{
retVal___ = HPMHooks.source.vending.search(sd, nameid);
}
- if( HPMHooks.count.HP_vending_search_post ) {
- bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, unsigned short nameid);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_vending_search_post; hIndex++ ) {
+ if (HPMHooks.count.HP_vending_search_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, int nameid);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_vending_search_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_vending_search_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, nameid);
}
@@ -81201,14 +89520,14 @@ bool HP_vending_search(struct map_session_data *sd, unsigned short nameid) {
bool HP_vending_searchall(struct map_session_data *sd, const struct s_search_store_search *s) {
int hIndex = 0;
bool retVal___ = false;
- if( HPMHooks.count.HP_vending_searchall_pre ) {
+ if (HPMHooks.count.HP_vending_searchall_pre > 0) {
bool (*preHookFunc) (struct map_session_data **sd, const struct s_search_store_search **s);
*HPMforce_return = false;
- for(hIndex = 0; hIndex < HPMHooks.count.HP_vending_searchall_pre; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_vending_searchall_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_vending_searchall_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &s);
}
- if( *HPMforce_return ) {
+ if (*HPMforce_return) {
*HPMforce_return = false;
return retVal___;
}
@@ -81216,9 +89535,9 @@ bool HP_vending_searchall(struct map_session_data *sd, const struct s_search_sto
{
retVal___ = HPMHooks.source.vending.searchall(sd, s);
}
- if( HPMHooks.count.HP_vending_searchall_post ) {
+ if (HPMHooks.count.HP_vending_searchall_post > 0) {
bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, const struct s_search_store_search *s);
- for(hIndex = 0; hIndex < HPMHooks.count.HP_vending_searchall_post; hIndex++ ) {
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_vending_searchall_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_vending_searchall_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, s);
}
diff --git a/src/plugins/HPMHooking/HPMHooking_map.sources.inc b/src/plugins/HPMHooking/HPMHooking_map.sources.inc
index 4cd69d005..7a3c5b9a7 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.sources.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.sources.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2017 Hercules Dev Team
+ * Copyright (C) 2013-2019 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -25,66 +25,70 @@
/* GENERATED FILE DO NOT EDIT */
-memcpy(&HPMHooks.source.HCache, HCache, sizeof(struct HCache_interface));
-memcpy(&HPMHooks.source.atcommand, atcommand, sizeof(struct atcommand_interface));
-memcpy(&HPMHooks.source.battle, battle, sizeof(struct battle_interface));
-memcpy(&HPMHooks.source.bg, bg, sizeof(struct battleground_interface));
-memcpy(&HPMHooks.source.buyingstore, buyingstore, sizeof(struct buyingstore_interface));
-memcpy(&HPMHooks.source.channel, channel, sizeof(struct channel_interface));
-memcpy(&HPMHooks.source.chat, chat, sizeof(struct chat_interface));
-memcpy(&HPMHooks.source.chrif, chrif, sizeof(struct chrif_interface));
-memcpy(&HPMHooks.source.clif, clif, sizeof(struct clif_interface));
-memcpy(&HPMHooks.source.cmdline, cmdline, sizeof(struct cmdline_interface));
-memcpy(&HPMHooks.source.console, console, sizeof(struct console_interface));
-memcpy(&HPMHooks.source.core, core, sizeof(struct core_interface));
-memcpy(&HPMHooks.source.DB, DB, sizeof(struct db_interface));
-memcpy(&HPMHooks.source.des, des, sizeof(struct des_interface));
-memcpy(&HPMHooks.source.duel, duel, sizeof(struct duel_interface));
-memcpy(&HPMHooks.source.elemental, elemental, sizeof(struct elemental_interface));
-memcpy(&HPMHooks.source.grfio, grfio, sizeof(struct grfio_interface));
-memcpy(&HPMHooks.source.guild, guild, sizeof(struct guild_interface));
-memcpy(&HPMHooks.source.gstorage, gstorage, sizeof(struct guild_storage_interface));
-memcpy(&HPMHooks.source.homun, homun, sizeof(struct homunculus_interface));
-memcpy(&HPMHooks.source.instance, instance, sizeof(struct instance_interface));
-memcpy(&HPMHooks.source.intif, intif, sizeof(struct intif_interface));
-memcpy(&HPMHooks.source.ircbot, ircbot, sizeof(struct irc_bot_interface));
-memcpy(&HPMHooks.source.itemdb, itemdb, sizeof(struct itemdb_interface));
-memcpy(&HPMHooks.source.libconfig, libconfig, sizeof(struct libconfig_interface));
-memcpy(&HPMHooks.source.logs, logs, sizeof(struct log_interface));
-memcpy(&HPMHooks.source.mail, mail, sizeof(struct mail_interface));
-memcpy(&HPMHooks.source.map, map, sizeof(struct map_interface));
-memcpy(&HPMHooks.source.mapindex, mapindex, sizeof(struct mapindex_interface));
-memcpy(&HPMHooks.source.mapit, mapit, sizeof(struct mapit_interface));
-memcpy(&HPMHooks.source.mapreg, mapreg, sizeof(struct mapreg_interface));
-memcpy(&HPMHooks.source.md5, md5, sizeof(struct md5_interface));
-memcpy(&HPMHooks.source.mercenary, mercenary, sizeof(struct mercenary_interface));
-memcpy(&HPMHooks.source.mob, mob, sizeof(struct mob_interface));
-memcpy(&HPMHooks.source.mutex, mutex, sizeof(struct mutex_interface));
-memcpy(&HPMHooks.source.npc_chat, npc_chat, sizeof(struct npc_chat_interface));
-memcpy(&HPMHooks.source.npc, npc, sizeof(struct npc_interface));
-memcpy(&HPMHooks.source.nullpo, nullpo, sizeof(struct nullpo_interface));
-memcpy(&HPMHooks.source.party, party, sizeof(struct party_interface));
-memcpy(&HPMHooks.source.path, path, sizeof(struct path_interface));
-memcpy(&HPMHooks.source.pcg, pcg, sizeof(struct pc_groups_interface));
-memcpy(&HPMHooks.source.pc, pc, sizeof(struct pc_interface));
-memcpy(&HPMHooks.source.libpcre, libpcre, sizeof(struct pcre_interface));
-memcpy(&HPMHooks.source.pet, pet, sizeof(struct pet_interface));
-memcpy(&HPMHooks.source.quest, quest, sizeof(struct quest_interface));
-memcpy(&HPMHooks.source.rnd, rnd, sizeof(struct rnd_interface));
-memcpy(&HPMHooks.source.script, script, sizeof(struct script_interface));
-memcpy(&HPMHooks.source.searchstore, searchstore, sizeof(struct searchstore_interface));
-memcpy(&HPMHooks.source.showmsg, showmsg, sizeof(struct showmsg_interface));
-memcpy(&HPMHooks.source.skill, skill, sizeof(struct skill_interface));
-memcpy(&HPMHooks.source.sockt, sockt, sizeof(struct socket_interface));
-memcpy(&HPMHooks.source.SQL, SQL, sizeof(struct sql_interface));
-memcpy(&HPMHooks.source.status, status, sizeof(struct status_interface));
-memcpy(&HPMHooks.source.storage, storage, sizeof(struct storage_interface));
-memcpy(&HPMHooks.source.StrBuf, StrBuf, sizeof(struct stringbuf_interface));
-memcpy(&HPMHooks.source.strlib, strlib, sizeof(struct strlib_interface));
-memcpy(&HPMHooks.source.sv, sv, sizeof(struct sv_interface));
-memcpy(&HPMHooks.source.sysinfo, sysinfo, sizeof(struct sysinfo_interface));
-memcpy(&HPMHooks.source.thread, thread, sizeof(struct thread_interface));
-memcpy(&HPMHooks.source.timer, timer, sizeof(struct timer_interface));
-memcpy(&HPMHooks.source.trade, trade, sizeof(struct trade_interface));
-memcpy(&HPMHooks.source.unit, unit, sizeof(struct unit_interface));
-memcpy(&HPMHooks.source.vending, vending, sizeof(struct vending_interface));
+HPMHooks.source.HCache = *HCache;
+HPMHooks.source.achievement = *achievement;
+HPMHooks.source.atcommand = *atcommand;
+HPMHooks.source.battle = *battle;
+HPMHooks.source.bg = *bg;
+HPMHooks.source.buyingstore = *buyingstore;
+HPMHooks.source.channel = *channel;
+HPMHooks.source.chat = *chat;
+HPMHooks.source.chrif = *chrif;
+HPMHooks.source.clan = *clan;
+HPMHooks.source.clif = *clif;
+HPMHooks.source.cmdline = *cmdline;
+HPMHooks.source.console = *console;
+HPMHooks.source.core = *core;
+HPMHooks.source.DB = *DB;
+HPMHooks.source.des = *des;
+HPMHooks.source.duel = *duel;
+HPMHooks.source.elemental = *elemental;
+HPMHooks.source.grfio = *grfio;
+HPMHooks.source.guild = *guild;
+HPMHooks.source.gstorage = *gstorage;
+HPMHooks.source.homun = *homun;
+HPMHooks.source.instance = *instance;
+HPMHooks.source.intif = *intif;
+HPMHooks.source.ircbot = *ircbot;
+HPMHooks.source.itemdb = *itemdb;
+HPMHooks.source.libconfig = *libconfig;
+HPMHooks.source.logs = *logs;
+HPMHooks.source.mail = *mail;
+HPMHooks.source.map = *map;
+HPMHooks.source.mapindex = *mapindex;
+HPMHooks.source.mapit = *mapit;
+HPMHooks.source.mapreg = *mapreg;
+HPMHooks.source.md5 = *md5;
+HPMHooks.source.mercenary = *mercenary;
+HPMHooks.source.mob = *mob;
+HPMHooks.source.mutex = *mutex;
+HPMHooks.source.npc_chat = *npc_chat;
+HPMHooks.source.npc = *npc;
+HPMHooks.source.nullpo = *nullpo;
+HPMHooks.source.packets = *packets;
+HPMHooks.source.party = *party;
+HPMHooks.source.path = *path;
+HPMHooks.source.pcg = *pcg;
+HPMHooks.source.pc = *pc;
+HPMHooks.source.libpcre = *libpcre;
+HPMHooks.source.pet = *pet;
+HPMHooks.source.quest = *quest;
+HPMHooks.source.rnd = *rnd;
+HPMHooks.source.rodex = *rodex;
+HPMHooks.source.script = *script;
+HPMHooks.source.searchstore = *searchstore;
+HPMHooks.source.showmsg = *showmsg;
+HPMHooks.source.skill = *skill;
+HPMHooks.source.sockt = *sockt;
+HPMHooks.source.SQL = *SQL;
+HPMHooks.source.status = *status;
+HPMHooks.source.storage = *storage;
+HPMHooks.source.StrBuf = *StrBuf;
+HPMHooks.source.strlib = *strlib;
+HPMHooks.source.sv = *sv;
+HPMHooks.source.sysinfo = *sysinfo;
+HPMHooks.source.thread = *thread;
+HPMHooks.source.timer = *timer;
+HPMHooks.source.trade = *trade;
+HPMHooks.source.unit = *unit;
+HPMHooks.source.vending = *vending;
diff --git a/src/plugins/Makefile.in b/src/plugins/Makefile.in
index 42d6d821c..e90a04f8b 100644
--- a/src/plugins/Makefile.in
+++ b/src/plugins/Makefile.in
@@ -1,7 +1,7 @@
# This file is part of Hercules.
# http://herc.ws - http://github.com/HerculesWS/Hercules
#
-# Copyright (C) 2013-2016 Hercules Dev Team
+# Copyright (C) 2013-2018 Hercules Dev Team
#
# Hercules is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -33,7 +33,7 @@
# #
# Note: DO NOT include the .c extension!!! #
-MYPLUGINS =
+MYPLUGINS := $(MYPLUGINS)
# #
######### DO NOT EDIT ANYTHING BELOW THIS LINE!!! ##################
diff --git a/src/plugins/constdb2doc.c b/src/plugins/constdb2doc.c
index d211c46e2..3f681ea1a 100644
--- a/src/plugins/constdb2doc.c
+++ b/src/plugins/constdb2doc.c
@@ -86,7 +86,7 @@ void constdb2doc_constdb(void)
/* Run */
fprintf(out_fp, "## Constants (db/constants.conf)\n\n");
- script->read_constdb();
+ script->read_constdb(false);
fprintf(out_fp, "\n");
fprintf(out_fp, "## Hardcoded Constants (source)\n\n");
diff --git a/src/plugins/db2sql.c b/src/plugins/db2sql.c
index f801e4147..2ece501b2 100644
--- a/src/plugins/db2sql.c
+++ b/src/plugins/db2sql.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2015 Hercules Dev Team
+ * Copyright (C) 2013-2018 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -70,6 +70,10 @@ bool mobdb2sql_torun = false;
int (*itemdb_readdb_libconfig_sub) (struct config_setting_t *it, int n, const char *source);
/// Backup of the original mob_db parser function pointer.
int (*mob_read_db_sub) (struct config_setting_t *it, int n, const char *source);
+bool (*mob_skill_db_libconfig_sub_skill) (struct config_setting_t *it, int n, int mob_id);
+
+//
+void do_mobskilldb2sql(void);
/**
* Normalizes and appends a string to the output buffer.
@@ -242,7 +246,7 @@ int itemdb2sql_sub(struct config_setting_t *entry, int n, const char *source)
StrBuf->Init(&buf);
// id
- StrBuf->Printf(&buf, "'%u',", it->nameid);
+ StrBuf->Printf(&buf, "'%u',", (uint32)it->nameid);
// name_english
SQL->EscapeString(NULL, e_name, it->name);
@@ -255,6 +259,9 @@ int itemdb2sql_sub(struct config_setting_t *entry, int n, const char *source)
// type
StrBuf->Printf(&buf, "'%d',", it->flag.delay_consume ? IT_DELAYCONSUME : it->type);
+ // subtype
+ StrBuf->Printf(&buf, "'%d',", it->subtype);
+
// price_buy
StrBuf->Printf(&buf, "'%d',", it->value_buy);
@@ -294,10 +301,11 @@ int itemdb2sql_sub(struct config_setting_t *entry, int n, const char *source)
StrBuf->Printf(&buf, "'%"PRIu64"',", ui64);
// equip_upper
- if (libconfig->setting_lookup_int(entry, "Upper", &i32) && i32 >= 0)
+ if (itemdb->lookup_const_mask(entry, "Upper", &i32) && i32 >= 0)
ui32 = (uint32)i32;
else
ui32 = ITEMUPPER_ALL;
+
StrBuf->Printf(&buf, "'%u',", ui32);
// equip_genders
@@ -321,8 +329,11 @@ int itemdb2sql_sub(struct config_setting_t *entry, int n, const char *source)
// refineable
StrBuf->Printf(&buf, "'%d',", it->flag.no_refine?0:1);
- // view
- StrBuf->Printf(&buf, "'%d',", it->look);
+ // disable_options
+ StrBuf->Printf(&buf, "'%d',", it->flag.no_options?1:0);
+
+ // view_sprite
+ StrBuf->Printf(&buf, "'%d',", it->view_sprite);
// bindonequip
StrBuf->Printf(&buf, "'%d',", it->flag.bindonequip?1:0);
@@ -442,10 +453,11 @@ void itemdb2sql_tableheader(void)
"\n"
"DROP TABLE IF EXISTS `%s`;\n"
"CREATE TABLE `%s` (\n"
- " `id` smallint(5) UNSIGNED NOT NULL DEFAULT '0',\n"
+ " `id` int(11) UNSIGNED NOT NULL DEFAULT '0',\n"
" `name_english` varchar(50) NOT NULL DEFAULT '',\n"
" `name_japanese` varchar(50) NOT NULL DEFAULT '',\n"
" `type` tinyint(2) UNSIGNED NOT NULL DEFAULT '0',\n"
+ " `subtype` tinyint(2) UNSIGNED DEFAULT NULL,\n"
" `price_buy` mediumint(10) DEFAULT NULL,\n"
" `price_sell` mediumint(10) DEFAULT NULL,\n"
" `weight` smallint(5) UNSIGNED DEFAULT NULL,\n"
@@ -462,7 +474,8 @@ void itemdb2sql_tableheader(void)
" `equip_level_min` smallint(5) UNSIGNED DEFAULT NULL,\n"
" `equip_level_max` smallint(5) UNSIGNED DEFAULT NULL,\n"
" `refineable` tinyint(1) UNSIGNED DEFAULT NULL,\n"
- " `view` smallint(3) UNSIGNED DEFAULT NULL,\n"
+ " `disable_options` tinyint(1) UNSIGNED DEFAULT NULL,\n"
+ " `view_sprite` smallint(3) UNSIGNED DEFAULT NULL,\n"
" `bindonequip` tinyint(1) UNSIGNED DEFAULT NULL,\n"
" `forceserial` tinyint(1) UNSIGNED DEFAULT NULL,\n"
" `buyingstore` tinyint(1) UNSIGNED DEFAULT NULL,\n"
@@ -802,6 +815,330 @@ void do_mobdb2sql(void)
if (tosql.buf[i].p)
aFree(tosql.buf[i].p);
}
+
+ // Run mob_skill_db converter
+ do_mobskilldb2sql();
+}
+
+/**
+ * Converts Mob Skill State constant to string
+ */
+const char* mob_skill_state_tostring(enum MobSkillState mss)
+{
+ switch(mss) {
+ case MSS_ANY:
+ return "any";
+ case MSS_IDLE:
+ return "idle";
+ case MSS_WALK:
+ return "walk";
+ case MSS_LOOT:
+ return "loot";
+ case MSS_DEAD:
+ return "dead";
+ case MSS_BERSERK:
+ return "attack";
+ case MSS_ANGRY:
+ return "angry";
+ case MSS_RUSH:
+ return "chase";
+ case MSS_FOLLOW:
+ return "follow";
+ case MSS_ANYTARGET:
+ return "anytarget";
+ }
+
+ return "unknown";
+}
+
+/**
+ * Converts Mob Skill Target constant to string
+ */
+const char* mob_skill_target_tostring(int target)
+{
+ switch(target) {
+ case MST_TARGET:
+ return "target";
+ case MST_RANDOM:
+ return "randomtarget";
+ case MST_SELF:
+ return "self";
+ case MST_FRIEND:
+ return "friend";
+ case MST_MASTER:
+ return "master";
+ case MST_AROUND1:
+ return "around1";
+ case MST_AROUND2:
+ return "around2";
+ case MST_AROUND3:
+ return "around3";
+ //case MST_AROUND: // same value as MST_AROUND4
+ case MST_AROUND4:
+ return "around4";
+ case MST_AROUND5:
+ return "around5";
+ case MST_AROUND6:
+ return "around6";
+ case MST_AROUND7:
+ return "around7";
+ case MST_AROUND8:
+ return "around8";
+ }
+ return "unknown";
+}
+
+/**
+ * Converts Mob Skill Condition constant to string
+ */
+const char* mob_skill_condition_tostring(int condition)
+{
+ switch(condition) {
+ case MSC_ALWAYS:
+ return "always";
+ case MSC_MYHPLTMAXRATE:
+ return "myhpltmaxrate";
+ case MSC_MYHPINRATE:
+ return "myhpinrate";
+ case MSC_FRIENDHPLTMAXRATE:
+ return "friendhpltmaxrate";
+ case MSC_FRIENDHPINRATE:
+ return "friendhpinrate";
+ case MSC_MYSTATUSON:
+ return "mystatuson";
+ case MSC_MYSTATUSOFF:
+ return "mystatusoff";
+ case MSC_FRIENDSTATUSON:
+ return "friendstatuson";
+ case MSC_FRIENDSTATUSOFF:
+ return "friendstatusoff";
+ case MSC_ATTACKPCGT:
+ return "attackpcgt";
+ case MSC_ATTACKPCGE:
+ return "attackpcge";
+ case MSC_SLAVELT:
+ return "slavelt";
+ case MSC_SLAVELE:
+ return "slavele";
+ case MSC_CLOSEDATTACKED:
+ return "closedattacked";
+ case MSC_LONGRANGEATTACKED:
+ return "longrangeattacked";
+ case MSC_AFTERSKILL:
+ return "afterskill";
+ case MSC_SKILLUSED:
+ return "skillused";
+ case MSC_CASTTARGETED:
+ return "casttargeted";
+ case MSC_RUDEATTACKED:
+ return "rudeattacked";
+ case MSC_MASTERHPLTMAXRATE:
+ return "masterhpltmaxrate";
+ case MSC_MASTERATTACKED:
+ return "masterattacked";
+ case MSC_ALCHEMIST:
+ return "alchemist";
+ case MSC_SPAWN:
+ return "onspawn";
+ }
+ return "unknown";
+}
+
+/**
+ * Converts a Mob Skill DB entry to SQL.
+ *
+ * @see mob_skill_db_libconfig_sub_skill.
+ */
+bool mobskilldb2sql_sub(struct config_setting_t *it, int n, int mob_id)
+{
+ int i32 = 0, i;
+ StringBuf buf;
+ struct mob_db *md = mob->db(mob_id);
+ char valname[15];
+ const char *name = config_setting_name(it);
+
+ nullpo_retr(false, it);
+ Assert_retr(false, mob_id <= 0 || md != mob->dummy);
+
+ StrBuf->Init(&buf);
+
+ // MonsterID
+ StrBuf->Printf(&buf, "%d,", mob_id);
+
+ // Info
+ StrBuf->Printf(&buf, "'%s@%s',", md->name, name);
+
+ if (mob->lookup_const(it, "SkillState", &i32) && (i32 < MSS_ANY || i32 > MSS_ANYTARGET)) {
+ ShowWarning("mob_skill_db_libconfig_sub_skill: Invalid skill state %d for skill '%s' in monster %d, defaulting to MSS_ANY.\n", i32, name, mob_id);
+ i32 = MSS_ANY;
+ }
+ // State
+ StrBuf->Printf(&buf, "'%s',", mob_skill_state_tostring(i32));
+
+ // SkillID
+ if (!(i32 = skill->name2id(name))) {
+ ShowWarning("mob_skill_db_libconfig_sub_skill: Non existant skill id %d in monster %d, skipping.\n", i32, mob_id);
+ return false;
+ }
+ StrBuf->Printf(&buf, "%d,", i32);
+
+ // SkillLv
+ if (!libconfig->setting_lookup_int(it, "SkillLevel", &i32) || i32 <= 0)
+ i32 = 1;
+ StrBuf->Printf(&buf, "%d,", i32);
+
+ // Rate
+ i32 = 0;
+ libconfig->setting_lookup_int(it, "Rate", &i32);
+ StrBuf->Printf(&buf, "%d,", i32);
+
+ // CastTime
+ i32 = 0;
+ libconfig->setting_lookup_int(it, "CastTime", &i32);
+ StrBuf->Printf(&buf, "%d,", i32);
+
+ // Delay
+ i32 = 0;
+ libconfig->setting_lookup_int(it, "Delay", &i32);
+ StrBuf->Printf(&buf, "%d,", i32);
+
+ // Cancelable
+ if (libconfig->setting_lookup_bool(it, "Cancelable", &i32)) {
+ StrBuf->Printf(&buf, "'%s',", ((i32 == 0) ? "no" : "yes"));
+ } else {
+ StrBuf->Printf(&buf, "'no',");
+ }
+
+ // Target
+ if (mob->lookup_const(it, "SkillTarget", &i32) && (i32 < MST_TARGET || i32 > MST_AROUND)) {
+ i32 = MST_TARGET;
+ }
+ StrBuf->Printf(&buf, "'%s',", mob_skill_target_tostring(i32));
+
+ // Condition
+ if (mob->lookup_const(it, "CastCondition", &i32) && (i32 < MSC_ALWAYS || i32 > MSC_SPAWN)) {
+ i32 = MSC_ALWAYS;
+ }
+ StrBuf->Printf(&buf, "'%s',", mob_skill_condition_tostring(i32));
+
+ // ConditionValue
+ i32 = 0;
+ if (mob->lookup_const(it, "ConditionData", &i32)) {
+ StrBuf->Printf(&buf, "'%d',", i32);
+ } else {
+ StrBuf->Printf(&buf, "NULL,");
+ }
+
+ // Val1-Val5
+ for (i = 0; i < 5; i++) {
+ sprintf(valname, "val%1d", i);
+ if (libconfig->setting_lookup_int(it, valname, &i32)) {
+ StrBuf->Printf(&buf, "%d,", i32);
+ } else {
+ StrBuf->Printf(&buf, "NULL,");
+ }
+ }
+
+ // Emotion
+ if (libconfig->setting_lookup_int(it, "Emotion", &i32)) {
+ StrBuf->Printf(&buf, "'%d',", i32);
+ } else {
+ StrBuf->Printf(&buf, "NULL,");
+ }
+
+ if (libconfig->setting_lookup_int(it, "ChatMsgID", &i32) && i32 > 0 && i32 <= MAX_MOB_CHAT) {
+ StrBuf->Printf(&buf, "'%d'", i32);
+ } else {
+ StrBuf->Printf(&buf, "NULL");
+ }
+
+ fprintf(tosql.fp, "REPLACE INTO `%s` VALUES (%s);\n", tosql.db_name, StrBuf->Value(&buf));
+
+ StrBuf->Destroy(&buf);
+
+ return true;
+
+}
+
+
+/**
+ * Prints a SQL table header for the current mob_skill_db table.
+ */
+void mobskilldb2sql_tableheader(void)
+{
+ db2sql_fileheader();
+
+ fprintf(tosql.fp,
+ "--\n"
+ "-- Table structure for table `%s`\n"
+ "--\n"
+ "\n"
+ "DROP TABLE IF EXISTS `%s`;\n"
+ "CREATE TABLE `%s` (\n"
+ " `MOB_ID` SMALLINT(6) NOT NULL,\n"
+ " `INFO` TEXT NOT NULL,\n"
+ " `STATE` TEXT NOT NULL,\n"
+ " `SKILL_ID` SMALLINT(6) NOT NULL,\n"
+ " `SKILL_LV` TINYINT(4) NOT NULL,\n"
+ " `RATE` SMALLINT(4) NOT NULL,\n"
+ " `CASTTIME` MEDIUMINT(9) NOT NULL,\n"
+ " `DELAY` INT(9) NOT NULL,\n"
+ " `CANCELABLE` TEXT NOT NULL,\n"
+ " `TARGET` TEXT NOT NULL,\n"
+ " `CONDITION` TEXT NOT NULL,\n"
+ " `CONDITION_VALUE` TEXT,\n"
+ " `VAL1` INT(11) DEFAULT NULL,\n"
+ " `VAL2` INT(11) DEFAULT NULL,\n"
+ " `VAL3` INT(11) DEFAULT NULL,\n"
+ " `VAL4` INT(11) DEFAULT NULL,\n"
+ " `VAL5` INT(11) DEFAULT NULL,\n"
+ " `EMOTION` TEXT,\n"
+ " `CHAT` TEXT\n"
+ ") ENGINE=MyISAM;\n"
+ "\n", tosql.db_name, tosql.db_name, tosql.db_name);
+}
+
+/**
+ * Mob Skill DB Conversion
+ */
+void do_mobskilldb2sql(void)
+{
+ int i;
+ struct convert_db_files {
+ const char *name;
+ const char *source;
+ const char *destination;
+ } files[] = {
+ {"mob_skill_db", DBPATH"mob_skill_db.conf", "sql-files/mob_skill_db" DBSUFFIX ".sql"},
+ {"mob_skill_db2", "mob_skill_db2.conf", "sql-files/mob_skill_db2.sql"},
+ };
+
+ /* link */
+ mob_skill_db_libconfig_sub_skill = mob->skill_db_libconfig_sub_skill;
+ mob->skill_db_libconfig_sub_skill = mobskilldb2sql_sub;
+
+ memset(&tosql.buf, 0, sizeof(tosql.buf));
+ for (i = 0; i < ARRAYLENGTH(files); i++) {
+ if ((tosql.fp = fopen(files[i].destination, "wt+")) == NULL) {
+ ShowError("do_mobskilldb2sql: File not found \"%s\".\n", files[i].destination);
+ return;
+ }
+
+ tosql.db_name = files[i].name;
+ mobskilldb2sql_tableheader();
+
+ mob->skill_db_libconfig(files[i].source, false);
+
+ fclose(tosql.fp);
+ }
+
+ /* unlink */
+ mob->skill_db_libconfig_sub_skill = mob_skill_db_libconfig_sub_skill;
+
+ for (i = 0; i < ARRAYLENGTH(tosql.buf); i++) {
+ if (tosql.buf[i].p)
+ aFree(tosql.buf[i].p);
+ }
}
/**
diff --git a/src/plugins/dbghelpplug.c b/src/plugins/dbghelpplug.c
index 78517419f..b68bb1efc 100644
--- a/src/plugins/dbghelpplug.c
+++ b/src/plugins/dbghelpplug.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/plugins/mapcache.c b/src/plugins/mapcache.c
new file mode 100644
index 000000000..5e44492f6
--- /dev/null
+++ b/src/plugins/mapcache.c
@@ -0,0 +1,490 @@
+/**
+* This file is part of Hercules.
+* http://herc.ws - http://github.com/HerculesWS/Hercules
+*
+* Copyright (C) 2013-2015 Hercules Dev Team
+*
+* Hercules is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+/**
+ * Mapcache Plugin
+ * This Plugin is made to handle the creation and update the new format of mapcache
+ * it also handles the convertion from the old to the new mapcache format
+ **/
+
+#include "common/hercules.h" /* Should always be the first Hercules file included! (if you don't make it first, you won't be able to use interfaces) */
+
+#include "common/memmgr.h"
+#include "common/md5calc.h"
+#include "common/nullpo.h"
+#include "common/grfio.h"
+#include "common/utils.h"
+#include "map/map.h"
+
+#include "common/HPMDataCheck.h" /* should always be the last Hercules file included! (if you don't make it last, it'll intentionally break compile time) */
+
+#include <stdio.h>
+#include <string.h>
+
+HPExport struct hplugin_info pinfo = {
+ "Mapcache", ///< Plugin name
+ SERVER_TYPE_MAP, ///< Which server types this plugin works with?
+ "1.0.0", ///< Plugin version
+ HPM_VERSION, ///< HPM Version (don't change, macro is automatically updated)
+};
+
+/**
+ * Yes.. old mapcache was never packed, and we loaded and wrote a compiler paded structs
+ * DON'T BLAME IF SOMETHING EXPLODED [hemagx]
+ **/
+// This is the main header found at the very beginning of the map cache
+struct old_mapcache_main_header {
+ uint32 file_size;
+ uint16 map_count;
+};
+
+// This is the header appended before every compressed map cells info in the map cache
+struct old_mapcache_map_info {
+ char name[MAP_NAME_LENGTH];
+ int16 xs;
+ int16 ys;
+ int32 len;
+};
+
+/**
+ *
+ */
+
+#define NO_WATER 1000000
+
+VECTOR_DECL(char *) maplist;
+bool needs_grfio;
+
+
+/**
+ * code from utlis.c until it's interfaced
+ **/
+
+#ifdef WIN32
+# ifndef F_OK
+# define F_OK 0x0
+# endif /* F_OK */
+#else
+# include <unistd.h>
+#endif
+
+
+// Reads an uint32 in little-endian from the buffer
+uint32 GetULong(const unsigned char* buf)
+{
+ return (((uint32)(buf[0])))
+ | (((uint32)(buf[1])) << 0x08)
+ | (((uint32)(buf[2])) << 0x10)
+ | (((uint32)(buf[3])) << 0x18);
+}
+
+// Reads a float (32 bits) from the buffer
+float GetFloat(const unsigned char* buf)
+{
+ uint32 val = GetULong(buf);
+ return *((float*)(void*)&val);
+}
+
+bool write_mapcache(const uint8 *buf, int32 buf_len, bool is_compressed, const char *mapname, int16 xs, int16 ys)
+{
+ struct map_cache_header header = { 0 };
+ char file_path[255];
+ int mapname_len;
+ unsigned long compressed_buf_len;
+ uint8 *compressed_buf = NULL;
+ FILE *new_mapcache_fp;
+
+ nullpo_retr(false, buf);
+ nullpo_retr(false, mapname);
+
+ mapname_len = (int)strlen(mapname);
+
+ if (mapname_len > MAP_NAME_LENGTH || mapname_len < 1) {
+ ShowError("write_mapcache: A map with invalid name length has beed passed '%s' size (%d)\n", mapname, mapname_len);
+ return false;
+ }
+
+ if ((xs < 0 || ys < 0)) {
+ ShowError("write_mapcache: '%s' given with invalid coords xs = %d, ys = %d\n", mapname, xs, ys);
+ return false;
+ }
+
+ if (((int)xs * ys) > MAX_MAP_SIZE) {
+ ShowError("write_mapcache: map '%s' exceeded MAX_MAP_SIZE of %d\n", mapname, MAX_MAP_SIZE);
+ return false;
+ }
+
+
+
+ snprintf(file_path, sizeof(file_path), "%s%s%s.%s", "maps/", DBPATH, mapname, "mcache");
+ new_mapcache_fp = fopen(file_path, "wb");
+
+ if (new_mapcache_fp == NULL) {
+ ShowWarning("Could not open file '%s', map cache creating failed.\n", file_path);
+ return false;
+ }
+
+ header.version = 0x1;
+ header.xs = xs;
+ header.ys = ys;
+
+ if (is_compressed == false) {
+ compressed_buf_len = buf_len * 2; //Creating big enough buffer to ensure ability to hold compressed data
+ CREATE(compressed_buf, uint8, compressed_buf_len);
+ grfio->encode_zip(compressed_buf, &compressed_buf_len, buf, buf_len);
+
+ header.len = (int)compressed_buf_len;
+ md5->binary(compressed_buf, (int)compressed_buf_len, header.md5_checksum);
+ } else {
+ header.len = buf_len;
+ md5->binary(buf, buf_len, header.md5_checksum);
+ }
+
+
+ fwrite(&header, sizeof(header), 1, new_mapcache_fp);
+ if (is_compressed == false)
+ fwrite(compressed_buf, compressed_buf_len, 1, new_mapcache_fp);
+ else
+ fwrite(buf, buf_len, 1, new_mapcache_fp);
+
+ fclose(new_mapcache_fp);
+ if (compressed_buf != NULL)
+ aFree(compressed_buf);
+
+ return true;
+}
+
+bool convert_old_mapcache(void)
+{
+ const char *path = "db/"DBPATH"map_cache.dat";
+ FILE *mapcache_fp = fopen(path, "rb");
+ struct old_mapcache_main_header header = { 0 };
+ uint8 *p, *cursor;
+ uint32 file_size;
+ int i;
+
+ if (mapcache_fp == NULL) {
+ ShowError("Could not open mapcache file in the following path '%s' \n", path);
+ return false;
+ }
+
+ if (fread(&header, sizeof(header), 1, mapcache_fp) != 1) {
+ ShowError("Failed to read mapcache header \n");
+ fclose(mapcache_fp);
+ return false;
+ }
+
+ fseek(mapcache_fp, 0, SEEK_END);
+ file_size = (int)ftell(mapcache_fp);
+ fseek(mapcache_fp, 0, SEEK_SET);
+
+ if (file_size != header.file_size) {
+ ShowError("File size in mapcache header doesn't match actual mapcache file size \n");
+ fclose(mapcache_fp);
+ return false;
+ }
+
+ CREATE(p, uint8, header.file_size);
+ cursor = p + sizeof(header);
+
+ if (fread(p, header.file_size, 1, mapcache_fp) != 1) {
+ ShowError("Could not load mapcache file into memory, fread failed.\n");
+ aFree(p);
+ fclose(mapcache_fp);
+ return false;
+ }
+
+ for (i = 0; i < header.map_count; ++i) {
+ struct old_mapcache_map_info *info = (struct old_mapcache_map_info *)cursor;
+
+ ShowStatus("Creating mapcache: %s"CL_CLL"\n", info->name);
+
+ if (write_mapcache((uint8 *)info + sizeof(*info), info->len, true, info->name, info->xs, info->ys) == false) {
+ ShowError("failed To convert map '%s'\n", info->name);
+ }
+
+ cursor += sizeof(*info) + info->len;
+ }
+
+ aFree(p);
+ fclose(mapcache_fp);
+ return true;
+}
+
+bool mapcache_read_maplist(const char *filepath)
+{
+ char line[4096] = { 0 };
+ FILE *fp;
+
+ nullpo_retr(false, filepath);
+
+ fp = fopen(filepath, "r");
+
+ if (fp == NULL)
+ return false;
+
+ while (fgets(line, sizeof(line), fp)) {
+ char map_name[MAP_NAME_LENGTH];
+ if (line[0] == '/' && line[1] == '/')
+ continue;
+
+ if (sscanf(line, "%11s", map_name) == 1) {
+ VECTOR_ENSURE(maplist, 1, 1);
+ VECTOR_PUSH(maplist, aStrdup(map_name));
+ }
+ }
+
+ ShowStatus("%d map loaded from map_index.txt\n", VECTOR_LENGTH(maplist));
+ fclose(fp);
+ return true;
+}
+
+bool mapcache_cache_map(const char *mapname)
+{
+ char filepath[255] = { 0 };
+ uint8 *gat, *rsw, *gat_cursor;
+ uint8 *cells;
+ int water_height, map_size, xy;
+ int16 xs, ys;
+
+ nullpo_retr(false, mapname);
+
+ snprintf(filepath, sizeof(filepath), "data\\%s.gat", mapname);
+ gat = grfio_read(filepath);
+
+ if (gat == NULL) {
+ ShowError("mapcache_cache_map: Could not read %s, aborting caching map %s\n", filepath, mapname);
+ return false;
+ }
+
+ snprintf(filepath, sizeof(filepath), "data\\%s.rsw", mapname);
+
+ rsw = grfio_read(filepath);
+
+ if (rsw == NULL) {
+ water_height = NO_WATER;
+ } else {
+ water_height = (int)GetFloat(rsw + 166);
+ aFree(rsw);
+ }
+
+ xs = (int16)GetULong(gat + 6);
+ ys = (int16)GetULong(gat + 10);
+
+ if (xs <= 0 || ys <= 0) {
+ ShowError("mapcache_cache_map: map '%s' doesn't have valid size xs = %d, ys = %d\n", mapname, xs, ys);
+ aFree(gat);
+ return false;
+ }
+
+ map_size = xs * ys;
+ CREATE(cells, uint8, map_size);
+
+ gat_cursor = gat;
+ for (xy = 0; xy < map_size; ++xy) {
+ float height = GetFloat(gat_cursor + 14);
+ uint32 type = GetULong(gat_cursor + 30);
+ gat_cursor += 20;
+
+ if (type == 0 && water_height != NO_WATER && height > water_height)
+ type = 3;
+
+ cells[xy] = (uint8)type;
+ }
+
+ write_mapcache(cells, map_size, false, mapname, xs, ys);
+
+ aFree(gat);
+ aFree(cells);
+ return true;
+}
+
+bool mapcache_rebuild(void)
+{
+ int i;
+ char file_path[255];
+
+ if (mapcache_read_maplist("db/map_index.txt") == false) {
+ ShowError("mapcache_rebuild: Could not read maplist, aborting\n");
+ return false;
+ }
+
+ for (i = 0; i < VECTOR_LENGTH(maplist); ++i) {
+ snprintf(file_path, sizeof(file_path), "%s%s%s.%s", "maps/", DBPATH, VECTOR_INDEX(maplist, i), "mcache");
+ if (access(file_path, F_OK) == 0 && remove(file_path) != 0) {
+ ShowWarning("mapcache_rebuild: Could not remove file '%s' \n", file_path);
+ }
+ }
+
+ for (i = 0; i < VECTOR_LENGTH(maplist); ++i) {
+ ShowStatus("Creating mapcache: %s"CL_CLL"\r", VECTOR_INDEX(maplist, i));
+ mapcache_cache_map(VECTOR_INDEX(maplist, i));
+ }
+
+ return true;
+}
+
+bool fix_md5_truncation_sub(FILE *fp, const char *map_name)
+{
+ unsigned int file_size;
+ struct map_cache_header mheader = { 0 };
+ uint8 *buf = NULL;
+
+ nullpo_retr(false, fp);
+ nullpo_retr(false, map_name);
+
+ fseek(fp, 0, SEEK_END);
+ file_size = (unsigned int)ftell(fp);
+ fseek(fp, 0, SEEK_SET); // Rewind file pointer before passing it to the read function.
+
+ if (file_size <= sizeof(mheader) || fread(&mheader, sizeof(mheader), 1, fp) < 1) {
+ ShowError("fix_md5_truncation: Failed to read cache header for map '%s'.\n", map_name);
+ return false;
+ }
+
+ if (mheader.len <= 0) {
+ ShowError("fix_md5_truncation: A file with negative or zero compressed length passed '%d'.\n", mheader.len);
+ return false;
+ }
+
+ if (file_size < sizeof(mheader) + mheader.len) {
+ ShowError("fix_md5_truncation: An incomplete file passed for map '%s'.\n", map_name);
+ return false;
+ }
+
+ CREATE(buf, uint8, mheader.len);
+ if (fread(buf, mheader.len, 1, fp) < 1) {
+ ShowError("fix_md5_truncation: Could not load the compressed cell data for map '%s'.\n", map_name);
+ aFree(buf);
+ return false;
+ }
+
+ md5->binary(buf, mheader.len, mheader.md5_checksum);
+ aFree(buf);
+
+ fseek(fp, 0, SEEK_SET);
+ fwrite(&mheader, sizeof(mheader), 1, fp);
+ fclose(fp);
+
+ return true;
+}
+
+bool fix_md5_truncation(void)
+{
+ int i;
+ bool retval = true;
+
+ if (mapcache_read_maplist("db/map_index.txt") == false) {
+ ShowError("mapcache_rebuild: Could not read maplist, aborting\n");
+ return false;
+ }
+
+ for (i = 0; i < VECTOR_LENGTH(maplist); ++i) {
+ const char *map_name = VECTOR_INDEX(maplist, i);
+ char file_path[255];
+ FILE *fp = NULL;
+ int16 version;
+
+ snprintf(file_path, sizeof(file_path), "%s%s%s.%s", "maps/", DBPATH, map_name, "mcache");
+
+ fp = fopen(file_path, "r+b");
+
+ if (fp == NULL) {
+ ShowWarning("fix_md5_truncation: Could not open the mapcache file for map '%s' at path '%s'.\n", map_name, file_path);
+ retval = false;
+ continue;
+ }
+
+ if (fread(&version, sizeof(version), 1, fp) < 1) {
+ ShowError("fix_md5_truncation: Could not read file version for map '%s'.\n", map_name);
+ fclose(fp);
+ retval = false;
+ continue;
+ }
+
+ if (version != 1) {
+ ShowError("fix_md5_truncation: Mapcache for map '%s' has version %d. The update is only applied to version 1.\n", map_name, version);
+ fclose(fp);
+ continue;
+ }
+
+ ShowStatus("Updating mapcache: %s'\n", map_name);
+ if (!fix_md5_truncation_sub(fp, map_name))
+ retval = false;
+
+ fclose(fp);
+ }
+
+ return retval;
+}
+
+CMDLINEARG(convertmapcache)
+{
+ map->minimal = true;
+ return convert_old_mapcache();
+}
+
+CMDLINEARG(rebuild)
+{
+ needs_grfio = true;
+ grfio->init("conf/grf-files.txt");
+ map->minimal = true;
+ return mapcache_rebuild();
+}
+
+CMDLINEARG(cachemap)
+{
+ needs_grfio = true;
+ grfio->init("conf/grf-files.txt");
+ map->minimal = true;
+ return mapcache_cache_map(params);
+}
+
+CMDLINEARG(fixmd5)
+{
+ map->minimal = true;
+ return fix_md5_truncation();
+}
+
+HPExport void server_preinit(void)
+{
+ addArg("--convert-old-mapcache", false, convertmapcache,
+ "Converts an old db/"DBPATH"map_cache.dat file to the new format.");
+ addArg("--rebuild-mapcache", false, rebuild,
+ "Rebuilds the entire mapcache folder (maps/"DBPATH"), using db/map_index.txt as index.");
+ addArg("--map", true, cachemap,
+ "Rebuilds an individual map's cache into maps/"DBPATH" (usage: --map <map_name_without_extension>).");
+ addArg("--fix-md5", false, fixmd5,
+ "Updates the checksum for the files in maps/"DBPATH", using db/map_index.txt as index (see PR #1981).");
+
+ needs_grfio = false;
+ VECTOR_INIT(maplist);
+}
+
+HPExport void plugin_final(void)
+{
+ while (VECTOR_LENGTH(maplist) > 0) {
+ char *name = VECTOR_POP(maplist);
+ aFree(name);
+ }
+ VECTOR_CLEAR(maplist);
+ if (needs_grfio)
+ grfio->final();
+}
diff --git a/src/plugins/script_mapquit.c b/src/plugins/script_mapquit.c
index 767292f2d..b212ce1c6 100644
--- a/src/plugins/script_mapquit.c
+++ b/src/plugins/script_mapquit.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2014-2015 Hercules Dev Team
+ * Copyright (C) 2014-2018 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/test/Makefile.in b/src/test/Makefile.in
index 3e7549943..1bd86608f 100644
--- a/src/test/Makefile.in
+++ b/src/test/Makefile.in
@@ -1,7 +1,7 @@
# This file is part of Hercules.
# http://herc.ws - http://github.com/HerculesWS/Hercules
#
-# Copyright (C) 2012-2016 Hercules Dev Team
+# Copyright (C) 2012-2018 Hercules Dev Team
# Copyright (C) Athena Dev Teams
#
# Hercules is free software: you can redistribute it and/or modify
diff --git a/src/test/test_spinlock.c b/src/test/test_spinlock.c
index 1c0390d66..fc2eed5da 100644
--- a/src/test/test_spinlock.c
+++ b/src/test/test_spinlock.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2012-2016 Hercules Dev Team
+ * Copyright (C) 2012-2018 Hercules Dev Team
* Copyright (C) Athena Dev Teams
*
* Hercules is free software: you can redistribute it and/or modify
diff --git a/src/tool/Makefile.in b/src/tool/Makefile.in
deleted file mode 100644
index 6e8643c56..000000000
--- a/src/tool/Makefile.in
+++ /dev/null
@@ -1,101 +0,0 @@
-# This file is part of Hercules.
-# http://herc.ws - http://github.com/HerculesWS/Hercules
-#
-# Copyright (C) 2012-2016 Hercules Dev Team
-# Copyright (C) Athena Dev Teams
-#
-# Hercules is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-# @configure_input@
-
-CONFIG_D = ../config
-CONFIG_H = $(wildcard $(CONFIG_D)/*.h) $(wildcard $(CONFIG_D)/*/*.h)
-
-COMMON_D = ../common
-COMMON_H = $(filter-out %.p.h, $(wildcard $(COMMON_D)/*.h))
-SYSINFO_INC = $(COMMON_D)/sysinfo.inc
-COMMON_INCLUDE = -I..
-
-THIRDPARTY_D = ../../3rdparty
-THIRDPARTY_INCLUDE = -I$(THIRDPARTY_D)
-
-LIBCONFIG_D = $(THIRDPARTY_D)/libconfig
-LIBCONFIG_OBJ = $(addprefix $(LIBCONFIG_D)/, libconfig.o grammar.o scanctx.o \
- scanner.o strbuf.o)
-LIBCONFIG_H = $(addprefix $(LIBCONFIG_D)/, libconfig.h grammar.h parsectx.h \
- scanctx.h scanner.h strbuf.h wincompat.h)
-
-MAPCACHE_OBJ = obj_all/mapcache.o
-MAPCACHE_C = mapcache.c
-MAPCACHE_H =
-MAPCACHE_DEPENDS = $(MAPCACHE_OBJ) $(COMMON_D)/obj_all/common_mini.a $(LIBCONFIG_OBJ) $(SYSINFO_INC)
-
-@SET_MAKE@
-
-CC = @CC@
-export CC
-
-#####################################################################
-.PHONY: all mapcache clean buildclean help
-
-all: mapcache Makefile
-
-mapcache: ../../mapcache@EXEEXT@
-
-../../mapcache@EXEEXT@: $(MAPCACHE_DEPENDS) Makefile
- @echo " LD $(notdir $@)"
- @$(CC) @STATIC@ @LDFLAGS@ -o ../../mapcache@EXEEXT@ $(MAPCACHE_OBJ) $(COMMON_D)/obj_all/common_mini.a $(LIBCONFIG_OBJ) @LIBS@
-
-buildclean:
- @echo " CLEAN tool (build temp files)"
- @rm -rf obj_all/*.o
-
-clean: buildclean
- @echo " CLEAN tool"
- @rm -rf ../../mapcache@EXEEXT@
-
-help:
- @echo "possible targets are 'mapcache' 'all' 'clean' 'help'"
- @echo "'mapcache' - mapcache generator"
- @echo "'all' - builds all above targets"
- @echo "'clean' - cleans builds and objects"
- @echo "'buildclean' - cleans build temporary (object) files, without deleting the"
- @echo " executables"
- @echo "'help' - outputs this message"
-
-#####################################################################
-
-Makefile: Makefile.in
- @$(MAKE) -C ../.. src/tool/Makefile
-
-$(SYSINFO_INC): $(MAPCACHE_C) $(MAPCACHE_H) $(COMMON_H) $(CONFIG_H) $(LIBCONFIG_H)
- @echo " MAKE $@"
- @$(MAKE) -C ../.. sysinfo
-
-obj_all:
- @echo " MKDIR obj_all"
- @-mkdir obj_all
-
-obj_all/%.o: %.c $(MAPCACHE_H) $(COMMON_H) $(CONFIG_H) $(LIBCONFIG_H) | obj_all
- @echo " CC $<"
- @$(CC) @CFLAGS@ @DEFS@ $(COMMON_INCLUDE) $(THIRDPARTY_INCLUDE) @CPPFLAGS@ -c $(OUTPUT_OPTION) $<
-
-# missing common object files
-$(COMMON_D)/obj_all/common_mini.a:
- @echo " MAKE $@"
- @$(MAKE) -C $(COMMON_D) common_mini
-
-$(LIBCONFIG_OBJ):
- @echo " MAKE $@"
- @$(MAKE) -C $(LIBCONFIG_D)
diff --git a/src/tool/mapcache.c b/src/tool/mapcache.c
deleted file mode 100644
index 5eb0843aa..000000000
--- a/src/tool/mapcache.c
+++ /dev/null
@@ -1,377 +0,0 @@
-/**
- * This file is part of Hercules.
- * http://herc.ws - http://github.com/HerculesWS/Hercules
- *
- * Copyright (C) 2012-2016 Hercules Dev Team
- * Copyright (C) Athena Dev Teams
- *
- * Hercules is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#define HERCULES_CORE
-
-#include "common/cbasetypes.h"
-#include "common/core.h"
-#include "common/grfio.h"
-#include "common/memmgr.h"
-#include "common/mmo.h"
-#include "common/showmsg.h"
-#include "common/strlib.h"
-#include "common/utils.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#ifndef _WIN32
-#include <unistd.h>
-#endif
-
-#define NO_WATER 1000000
-
-char *grf_list_file;
-char *map_list_file;
-char *map_cache_file;
-int rebuild = 0;
-
-FILE *map_cache_fp;
-
-unsigned long file_size;
-
-// Used internally, this structure contains the physical map cells
-struct map_data {
- int16 xs;
- int16 ys;
- unsigned char *cells;
-};
-
-// This is the main header found at the very beginning of the file
-struct main_header {
- uint32 file_size;
- uint16 map_count;
-} header;
-
-// This is the header appended before every compressed map cells info
-struct map_info {
- char name[MAP_NAME_LENGTH];
- int16 xs;
- int16 ys;
- int32 len;
-};
-
-// Reads a map from GRF's GAT and RSW files
-int read_map(char *name, struct map_data *m)
-{
- char filename[256];
- unsigned char *gat, *rsw;
- int water_height;
- size_t xy, off, num_cells;
-
- // Open map GAT
- sprintf(filename,"data\\%s.gat", name);
- gat = grfio_read(filename);
- if (gat == NULL)
- return 0;
-
- // Open map RSW
- sprintf(filename,"data\\%s.rsw", name);
- rsw = grfio_read(filename);
-
- // Read water height
- if (rsw) {
- water_height = (int)GetFloat(rsw+166);
- aFree(rsw);
- } else
- water_height = NO_WATER;
-
- // Read map size and allocate needed memory
- m->xs = (int16)GetULong(gat+6);
- m->ys = (int16)GetULong(gat+10);
- if (m->xs <= 0 || m->ys <= 0) {
- aFree(gat);
- return 0;
- }
- num_cells = (size_t)m->xs*(size_t)m->ys;
- m->cells = (unsigned char *)aMalloc(num_cells);
-
- // Set cell properties
- off = 14;
- for (xy = 0; xy < num_cells; xy++) {
- // Height of the bottom-left corner
- float height = GetFloat(gat + off);
- // Type of cell
- uint32 type = GetULong(gat + off + 16);
- off += 20;
-
- if (type == 0 && water_height != NO_WATER && height > water_height)
- type = 3; // Cell is 0 (walkable) but under water level, set to 3 (walkable water)
-
- m->cells[xy] = (unsigned char)type;
- }
-
- aFree(gat);
-
- return 1;
-}
-
-/**
- * Adds a map to the cache.
- *
- * @param name The map name.
- * @param m Map data to cache.
- * @retval true if the map was successfully added to the cache.
- */
-bool cache_map(char *name, struct map_data *m)
-{
- struct map_info info;
- unsigned long len;
- unsigned char *write_buf;
-
- // Create an output buffer twice as big as the uncompressed map... this way we're sure it fits
- len = (unsigned long)m->xs*(unsigned long)m->ys*2;
- write_buf = (unsigned char *)aMalloc(len);
- // Compress the cells and get the compressed length
- grfio->encode_zip(write_buf, &len, m->cells, m->xs*m->ys);
-
- // Fill the map header
- safestrncpy(info.name, name, MAP_NAME_LENGTH);
- if (strlen(name) > MAP_NAME_LENGTH) // It does not hurt to warn that there are maps with name longer than allowed.
- ShowWarning("Map name '%s' (length %"PRIuS") is too long. Truncating to '%s' (length %d).\n",
- name, strlen(name), info.name, MAP_NAME_LENGTH);
- info.xs = MakeShortLE(m->xs);
- info.ys = MakeShortLE(m->ys);
- info.len = MakeLongLE((uint32)len);
-
- // Append map header then compressed cells at the end of the file
- if (fseek(map_cache_fp, header.file_size, SEEK_SET) != 0) {
- aFree(write_buf);
- aFree(m->cells);
- return false;
- }
- fwrite(&info, sizeof(struct map_info), 1, map_cache_fp);
- fwrite(write_buf, 1, len, map_cache_fp);
- header.file_size += sizeof(struct map_info) + len;
- header.map_count++;
-
- aFree(write_buf);
- aFree(m->cells);
-
- return true;
-}
-
-/**
- * Checks whether a map is already is the cache.
- *
- * @param name The map name.
- * @retval true if the map is already cached.
- */
-bool find_map(char *name)
-{
- int i;
- struct map_info info;
-
- if (fseek(map_cache_fp, sizeof(struct main_header), SEEK_SET) != 0)
- return false;
-
- for (i = 0; i < header.map_count; i++) {
- if (fread(&info, sizeof(info), 1, map_cache_fp) != 1)
- printf("An error as occured in fread while reading map_cache\n");
- if (strcmp(name, info.name) == 0) // Map found
- return true;
- // Map not found, jump to the beginning of the next map info header
- if (fseek(map_cache_fp, GetLong((unsigned char *)&(info.len)), SEEK_CUR) != 0)
- return false;
- }
-
- return false;
-}
-
-// Cuts the extension from a map name
-char *remove_extension(char *mapname)
-{
- char *ptr, *ptr2;
- ptr = strchr(mapname, '.');
- if (ptr) { //Check and remove extension.
- while (ptr[1] && (ptr2 = strchr(ptr+1, '.')) != NULL)
- ptr = ptr2; //Skip to the last dot.
- if (strcmp(ptr,".gat") == 0)
- *ptr = '\0'; //Remove extension.
- }
- return mapname;
-}
-
-/**
- * --grf-list handler
- *
- * Overrides the default grf list filename.
- * @see cmdline->exec
- */
-static CMDLINEARG(grflist)
-{
- aFree(grf_list_file);
- grf_list_file = aStrdup(params);
- return true;
-}
-
-/**
- * --map-list handler
- *
- * Overrides the default map list filename.
- * @see cmdline->exec
- */
-static CMDLINEARG(maplist)
-{
- aFree(map_list_file);
- map_list_file = aStrdup(params);
- return true;
-}
-
-/**
- * --map-cache handler
- *
- * Overrides the default map cache filename.
- * @see cmdline->exec
- */
-static CMDLINEARG(mapcache)
-{
- aFree(map_cache_file);
- map_cache_file = aStrdup(params);
- return true;
-}
-
-/**
- * --rebuild handler
- *
- * Forces a rebuild of the mapcache, rather than only adding missing maps.
- * @see cmdline->exec
- */
-static CMDLINEARG(rebuild)
-{
- rebuild = 1;
- return true;
-}
-
-/**
- * Defines the local command line arguments
- */
-void cmdline_args_init_local(void)
-{
- CMDLINEARG_DEF2(grf-list, grflist, "Alternative grf list file", CMDLINE_OPT_NORMAL|CMDLINE_OPT_PARAM);
- CMDLINEARG_DEF2(map-list, maplist, "Alternative map list file", CMDLINE_OPT_NORMAL|CMDLINE_OPT_PARAM);
- CMDLINEARG_DEF2(map-cache, mapcache, "Alternative map cache file", CMDLINE_OPT_NORMAL|CMDLINE_OPT_PARAM);
- CMDLINEARG_DEF2(rebuild, rebuild, "Forces a rebuild of the map cache, rather than only adding missing maps", CMDLINE_OPT_NORMAL);
-}
-
-int do_init(int argc, char** argv)
-{
- FILE *list;
- char line[1024];
- struct map_data map;
- char name[MAP_NAME_LENGTH_EXT];
-
- grf_list_file = aStrdup("conf/grf-files.txt");
- map_list_file = aStrdup("db/map_index.txt");
- /* setup pre-defined, #define-dependant */
- map_cache_file = aStrdup("db/"DBPATH"map_cache.dat");
-
- cmdline->exec(argc, argv, CMDLINE_OPT_PREINIT);
- cmdline->exec(argc, argv, CMDLINE_OPT_NORMAL);
-
- ShowStatus("Initializing grfio with %s\n", grf_list_file);
- grfio->init(grf_list_file);
-
- // Attempt to open the map cache file and force rebuild if not found
- ShowStatus("Opening map cache: %s\n", map_cache_file);
- if(!rebuild) {
- map_cache_fp = fopen(map_cache_file, "rb");
- if(map_cache_fp == NULL) {
- ShowNotice("Existing map cache not found, forcing rebuild mode\n");
- rebuild = 1;
- } else
- fclose(map_cache_fp);
- }
- if(rebuild)
- map_cache_fp = fopen(map_cache_file, "w+b");
- else
- map_cache_fp = fopen(map_cache_file, "r+b");
- if(map_cache_fp == NULL) {
- ShowError("Failure when opening map cache file %s\n", map_cache_file);
- exit(EXIT_FAILURE);
- }
-
- // Open the map list
- ShowStatus("Opening map list: %s\n", map_list_file);
- list = fopen(map_list_file, "r");
- if(list == NULL) {
- ShowError("Failure when opening maps list file %s\n", map_list_file);
- exit(EXIT_FAILURE);
- }
-
- // Initialize the main header
- if(rebuild) {
- header.file_size = sizeof(struct main_header);
- header.map_count = 0;
- } else {
- if(fread(&header, sizeof(struct main_header), 1, map_cache_fp) != 1){ printf("An error as occured while reading map_cache_fp \n"); }
- header.file_size = GetULong((unsigned char *)&(header.file_size));
- header.map_count = GetUShort((unsigned char *)&(header.map_count));
- }
-
- // Read and process the map list
- while(fgets(line, sizeof(line), list))
- {
- if(line[0] == '/' && line[1] == '/')
- continue;
-
- if(sscanf(line, "%15s", name) < 1)
- continue;
-
- if(strcmp("map:", name) == 0 && sscanf(line, "%*s %15s", name) < 1)
- continue;
-
- name[MAP_NAME_LENGTH_EXT-1] = '\0';
- remove_extension(name);
- if (find_map(name)) {
- ShowInfo("Map '"CL_WHITE"%s"CL_RESET"' already in cache.\n", name);
- } else if(!read_map(name, &map)) {
- ShowError("Map '"CL_WHITE"%s"CL_RESET"' not found!\n", name);
- } else if (!cache_map(name, &map)) {
- ShowError("Map '"CL_WHITE"%s"CL_RESET"' failed to cache (write error).\n", name);
- } else {
- ShowInfo("Map '"CL_WHITE"%s"CL_RESET"' successfully cached.\n", name);
- }
- }
-
- ShowStatus("Closing map list: %s\n", map_list_file);
- fclose(list);
-
- // Write the main header and close the map cache
- ShowStatus("Closing map cache: %s\n", map_cache_file);
- fseek(map_cache_fp, 0, SEEK_SET);
- fwrite(&header, sizeof(struct main_header), 1, map_cache_fp);
- fclose(map_cache_fp);
-
- ShowStatus("Finalizing grfio\n");
- grfio->final();
-
- ShowInfo("%d maps now in cache\n", header.map_count);
-
- aFree(grf_list_file);
- aFree(map_list_file);
- aFree(map_cache_file);
-
- return 0;
-}
-
-int do_final(void)
-{
- return EXIT_SUCCESS;
-}